herwig++-2.6.0.orig/0000755000175000017500000000000011756464211014762 5ustar sylvestresylvestreherwig++-2.6.0.orig/Tests/0000755000175000017500000000000011756464212016065 5ustar sylvestresylvestreherwig++-2.6.0.orig/Tests/Lepton/0000755000175000017500000000000011756464212017326 5ustar sylvestresylvestreherwig++-2.6.0.orig/Tests/Lepton/VHTest.h0000644000175000017500000001004111754474774020664 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_VHTest_H #define HERWIG_VHTest_H // // This is the declaration of the VHTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the VHTest class. * * @see \ref VHTestInterfaces "The interfaces" * defined for VHTest. */ class VHTest: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription initVHTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VHTest & operator=(const VHTest &); private: HistogramPtr _mH,_mZ,_thetaH,_thetaZ,_phiH,_phiZ,_thetal[2],_phil[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of VHTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of VHTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the VHTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::VHTest"; } /** * The name of a file containing the dynamic library where the class * VHTest is implemented. It may also include several, space-separated, * libraries if the class VHTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "LeptonTest.so"; } }; /** @endcond */ } #endif /* HERWIG_VHTest_H */ herwig++-2.6.0.orig/Tests/Lepton/TopDecay.h0000644000175000017500000001065211754474774021227 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_TopDecay_H #define HERWIG_TopDecay_H // // This is the declaration of the TopDecay class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the TopDecay class. * * @see \ref TopDecayInterfaces "The interfaces" * defined for TopDecay. */ class TopDecay: public AnalysisHandler { public: /** * The default constructor. */ TopDecay() : y3_(-4.,-1.,100) {} public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} 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. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initTopDecay; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TopDecay & operator=(const TopDecay &); private: Histogram y3_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of TopDecay. */ template <> struct BaseClassTrait { /** Typedef of the first base class of TopDecay. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the TopDecay class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::TopDecay"; } /** * The name of a file containing the dynamic library where the class * TopDecay is implemented. It may also include several, space-separated, * libraries if the class TopDecay depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "libfastjet.so LeptonJetTest.so"; } }; /** @endcond */ } #endif /* HERWIG_TopDecay_H */ herwig++-2.6.0.orig/Tests/Lepton/VVTest.h0000644000175000017500000001000111754474774020676 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_VVTest_H #define HERWIG_VVTest_H // // This is the declaration of the VVTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the VVTest class. * * @see \ref VVTestInterfaces "The interfaces" * defined for VVTest. */ class VVTest: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription initVVTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VVTest & operator=(const VVTest &); private: /** * Histograms */ HistogramPtr _cosWp,_cosWm,_cosZ; HistogramPtr _phiWp,_phiWm,_phiZ; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of VVTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of VVTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the VVTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::VVTest"; } /** * The name of a file containing the dynamic library where the class * VVTest is implemented. It may also include several, space-separated, * libraries if the class VVTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "LeptonTest.so"; } }; /** @endcond */ } #endif /* HERWIG_VVTest_H */ herwig++-2.6.0.orig/Tests/Lepton/VVTest.cc0000644000175000017500000000551411754474774021051 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the VVTest class. // #include "VVTest.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" using namespace Herwig; void VVTest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). tPVector particles = event->getFinalState(); tPVector::const_iterator iter = particles.begin(), end = particles.end(); double sign=1; if(event->incoming().first->id()!=ParticleID::eminus) sign=-1; for( ;iter!=end;++iter) { if((**iter).id()==ParticleID::Wplus) { _cosWp->addWeighted(sign*(**iter).momentum().cosTheta(),event->weight()); _phiWp->addWeighted((**iter).momentum().phi()+Constants::pi,event->weight()); } else if((**iter).id()==ParticleID::Wminus) { _cosWm->addWeighted(sign*(**iter).momentum().cosTheta(),event->weight()); _phiWm->addWeighted((**iter).momentum().phi()+Constants::pi,event->weight()); } else if((**iter).id()==ParticleID::Z0) { _cosZ->addWeighted(sign*(**iter).momentum().cosTheta(),event->weight()); _phiZ->addWeighted((**iter).momentum().phi()+Constants::pi,event->weight()); } } } IBPtr VVTest::clone() const { return new_ptr(*this); } IBPtr VVTest::fullclone() const { return new_ptr(*this); } NoPIOClassDescription VVTest::initVVTest; // Definition of the static class description member. void VVTest::Init() { static ClassDocumentation documentation ("There is no documentation for the VVTest class"); } void VVTest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; _cosWp->topdrawOutput(outfile,Frame,"BLACK","Cos of polar angle for W+"); _phiWp->topdrawOutput(outfile,Frame,"BLACK","Azimuthal angle for W+"); _cosWm->topdrawOutput(outfile,Frame,"BLACK","Cos of polar angle for W-"); _phiWm->topdrawOutput(outfile,Frame,"BLACK","Azimuthal angle for W-"); _cosZ ->topdrawOutput(outfile,Frame,"BLACK","Cos of polar angle for Z "); _phiZ ->topdrawOutput(outfile,Frame,"BLACK","Azimuthal angle for Z "); } void VVTest::doinitrun() { AnalysisHandler::doinitrun(); _cosWp = new_ptr(Histogram( -1.0, 1.0,200)); _phiWp = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _cosWm = new_ptr(Histogram( -1.0, 1.0,200)); _phiWm = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _cosZ = new_ptr(Histogram( -1.0, 1.0,200)); _phiZ = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); } herwig++-2.6.0.orig/Tests/Lepton/VBFTest.h0000755000175000017500000001025411754474774020775 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_VBFTest_H #define HERWIG_VBFTest_H // // This is the declaration of the VBFTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the VBFTest class. * * @see \ref VBFTestInterfaces "The interfaces" * defined for VBFTest. */ class VBFTest: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription initVBFTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VBFTest & operator=(const VBFTest &); private: HistogramPtr _mH ,_cosH ,_eH ,_phiH ; HistogramPtr _cosnu ,_enu ,_phinu ; HistogramPtr _cosnub,_enub,_phinub; HistogramPtr _cosem ,_eem ,_phiem ; HistogramPtr _cosep ,_eep ,_phiep ; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of VBFTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of VBFTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the VBFTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::VBFTest"; } /** * The name of a file containing the dynamic library where the class * VBFTest is implemented. It may also include several, space-separated, * libraries if the class VBFTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "LeptonTest.so"; } }; /** @endcond */ } #endif /* HERWIG_VBFTest_H */ herwig++-2.6.0.orig/Tests/Lepton/TopDecay.cc0000644000175000017500000000510511754474774021362 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the TopDecay class. // #include "TopDecay.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Event.h" #include "fastjet/PseudoJet.hh" #include "fastjet/ClusterSequence.hh" using namespace Herwig; void TopDecay::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). tPVector particles; event->selectFinalState(back_inserter(particles)); vector fastjet_particles; for (unsigned int j=0; jparents().empty()) parent = tPPtr(); else parent = parent->parents()[0]; } while (parent&&abs(parent->id())!=ParticleID::Wplus); if(parent&&abs(parent->id())==ParticleID::Wplus) continue; fastjet::PseudoJet p(particles[j]->momentum().x()/GeV, particles[j]->momentum().y()/GeV, particles[j]->momentum().z()/GeV, particles[j]->momentum().e()/GeV); p.set_user_index(j); fastjet_particles.push_back(p); } fastjet::RecombinationScheme recomb_scheme = fastjet::E_scheme; fastjet::Strategy strategy = fastjet::Best; fastjet::JetDefinition jet_def(fastjet::ee_kt_algorithm, recomb_scheme, strategy); fastjet::ClusterSequence cs(fastjet_particles, jet_def); // ynm distributions y3_ += log10(cs.exclusive_ymerge(3)); } IBPtr TopDecay::clone() const { return new_ptr(*this); } IBPtr TopDecay::fullclone() const { return new_ptr(*this); } void TopDecay::persistentOutput(PersistentOStream & os) const { } void TopDecay::persistentInput(PersistentIStream & is, int) { } ClassDescription TopDecay::initTopDecay; // Definition of the static class description member. void TopDecay::Init() { static ClassDocumentation documentation ("There is no documentation for the TopDecay class"); } void TopDecay::dofinish() { AnalysisHandler::dofinish(); using namespace HistogramOptions; string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); y3_.topdrawOutput(output,Frame, "RED", "y0231 ", " X X ", "1/NdN/dlog(y0231)", " X X ", "log(y0231)", " X X "); } herwig++-2.6.0.orig/Tests/Lepton/FermionTest.cc0000644000175000017500000000564511754474774022122 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the FermionTest class. // #include "FermionTest.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" using namespace Herwig; void FermionTest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); tPVector particles = event->getFinalState(); for(tPVector::const_iterator it=particles.begin();it!=particles.end();++it) { if(_cos.find((**it).id())!=_cos.end()) { *_cos[(**it).id()] += (**it).momentum().cosTheta(); *_phi[(**it).id()] += (**it).momentum().phi()+Constants::pi; *_y [(**it).id()] += (**it).momentum().rapidity(); *_pt [(**it).id()] += (**it).momentum().perp()/GeV; } else { HistogramPtr ncos = new_ptr(Histogram(-1.,1.,200)); HistogramPtr nphi = new_ptr(Histogram(0.,2.*Constants::pi,200)); HistogramPtr ny = new_ptr(Histogram(-10.0,10.0,200)); HistogramPtr npt = new_ptr(Histogram(0.,400.,200)); *ncos += (**it).momentum().cosTheta(); *nphi += (**it).momentum().phi()+Constants::pi; _cos.insert(make_pair((**it).id(),ncos)); _phi.insert(make_pair((**it).id(),nphi)); _y .insert(make_pair((**it).id(),ny )); _pt .insert(make_pair((**it).id(),npt )); } } } IBPtr FermionTest::clone() const { return new_ptr(*this); } IBPtr FermionTest::fullclone() const { return new_ptr(*this); } NoPIOClassDescription FermionTest::initFermionTest; // Definition of the static class description member. void FermionTest::Init() { static ClassDocumentation documentation ("There is no documentation for the FermionTest class"); } void FermionTest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; for(map::const_iterator it=_cos.begin();it!=_cos.end();++it) { string title = "cos of polar angle for " + getParticleData(it->first)->PDGName(); it->second->topdrawOutput(outfile,Frame,"BLACK",title); } for(map::const_iterator it=_y.begin();it!=_y.end();++it) { string title = "rapidity for " + getParticleData(it->first)->PDGName(); it->second->topdrawOutput(outfile,Frame,"BLACK",title); } for(map::const_iterator it=_pt.begin();it!=_pt.end();++it) { string title = "pT for " + getParticleData(it->first)->PDGName(); it->second->topdrawOutput(outfile,Frame,"BLACK",title); } for(map::const_iterator it=_phi.begin();it!=_phi.end();++it) { string title = "azimuthal angle for " + getParticleData(it->first)->PDGName(); it->second->topdrawOutput(outfile,Frame,"BLACK",title); } } herwig++-2.6.0.orig/Tests/Lepton/VHTest.cc0000644000175000017500000001014411754474774021026 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the VHTest class. // #include "VHTest.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" using namespace Herwig; void VHTest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). StepVector::const_iterator sit =event->primaryCollision()->steps().begin(); StepVector::const_iterator stest =event->primaryCollision()->steps().end(); StepVector::const_iterator send=sit; ++send; if(send==stest) --send; ++send; if(send==stest) --send; ++send; Lorentz5Momentum pz; for(;sit!=send;++sit) { ParticleSet part=(**sit).all(); ParticleSet::const_iterator iter = part.begin(), end = part.end(); for( ;iter!=end;++iter) { if((**iter).id()==ParticleID::h0) { if((**iter).momentum().m()>390.*GeV) cerr << (**iter) << "\n" << *event << "\n"; *_mH += (**iter).momentum().m()/GeV; *_phiH += (**iter).momentum().phi()+Constants::pi; *_thetaH += (**iter).momentum().cosTheta(); } else if((**iter).id()==ParticleID::Z0) { bool fermion=true; for(unsigned int ix=0;ix<(**iter).children().size();++ix) { if(abs((**iter).children()[ix]->id())>16) { fermion=false; break; } } if(fermion) { *_mZ += (**iter).momentum().m()/GeV; *_phiZ += (**iter).momentum().phi()+Constants::pi; *_thetaZ += (**iter).momentum().cosTheta(); for(unsigned int ix=0;ix<(**iter).children().size();++ix) { if((**iter).children()[ix]->id()==11) { *_phil[0] += (**iter).children()[ix]->momentum().phi()+Constants::pi; *_thetal[0] += (**iter).children()[ix]->momentum().cosTheta(); } else if((**iter).children()[ix]->id()==-11) { *_phil[1] += (**iter).children()[ix]->momentum().phi()+Constants::pi; *_thetal[1] += (**iter).children()[ix]->momentum().cosTheta(); } } } } } } } NoPIOClassDescription VHTest::initVHTest; // Definition of the static class description member. void VHTest::Init() { static ClassDocumentation documentation ("There is no documentation for the VHTest class"); } void VHTest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; string title,species; title = "mass of H"; _mH->topdrawOutput(outfile,Frame,"BLACK",title); title = "theta of H"; _thetaH->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of H"; _phiH->topdrawOutput(outfile,Frame,"BLACK",title); title = "mass of Z"; _mZ->topdrawOutput(outfile,Frame,"BLACK",title); title = "theta of Z"; _thetaZ->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of Z"; _phiZ->topdrawOutput(outfile,Frame,"BLACK",title); title = "theta of e-"; _thetal[0]->topdrawOutput(outfile,Frame,"BLACK",title); title = "phi of e-"; _phil[0]->topdrawOutput(outfile,Frame,"BLACK",title); title = "theta of e+"; _thetal[1]->topdrawOutput(outfile,Frame,"BLACK",title); title = "phi of e+"; _phil[1]->topdrawOutput(outfile,Frame,"BLACK",title); } void VHTest::doinitrun() { AnalysisHandler::doinitrun(); if(getParticleData(ParticleID::h0)->mass()>200.*GeV) _mH = new_ptr(Histogram(200., 400.,200)); else _mH = new_ptr(Histogram(114., 116.0,200)); _mZ = new_ptr(Histogram( 0.0, 200.0,400)); _thetaH = new_ptr(Histogram( -1.0, 1.0,200)); _thetaZ = new_ptr(Histogram( -1.0, 1.0,200)); _phiH = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _phiZ = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); for(unsigned int ix=0;ix<2;++ix) { _thetal[ix] = new_ptr(Histogram( -1.0, 1.0,200)); _phil[ix] = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); } } herwig++-2.6.0.orig/Tests/Lepton/VBFTest.cc0000755000175000017500000001162011754474774021131 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the VBFTest class. // #include "VBFTest.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" using namespace Herwig; void VBFTest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). StepVector::const_iterator sit =event->primaryCollision()->steps().begin(); StepVector::const_iterator stest =event->primaryCollision()->steps().end(); StepVector::const_iterator send=sit; ++send; if(send==stest) --send; ++send; if(send==stest) --send; ++send; Lorentz5Momentum pz; for(;sit!=send;++sit) { ParticleSet part; (**sit).selectFinalState(inserter(part)); ParticleSet::const_iterator iter = part.begin(), end = part.end(); for( ;iter!=end;++iter) { if((**iter).id()==ParticleID::h0) { *_mH += (**iter).momentum().m()/GeV; *_cosH += (**iter).momentum().cosTheta(); *_phiH += (**iter).momentum().phi()+Constants::pi; *_eH += (**iter).momentum().t()/GeV; } else if((**iter).id()==ParticleID::nu_e) { *_cosnu += (**iter).momentum().cosTheta(); *_phinu += (**iter).momentum().phi()+Constants::pi; *_enu += (**iter).momentum().t()/GeV; } else if((**iter).id()==ParticleID::nu_ebar) { *_cosnub += (**iter).momentum().cosTheta(); *_phinub += (**iter).momentum().phi()+Constants::pi; *_enub += (**iter).momentum().t()/GeV; } else if((**iter).id()==ParticleID::eminus) { *_cosem += (**iter).momentum().cosTheta(); *_phiem += (**iter).momentum().phi()+Constants::pi; *_eem += (**iter).momentum().t()/GeV; } else if((**iter).id()==ParticleID::eplus) { *_cosep += (**iter).momentum().cosTheta(); *_phiep += (**iter).momentum().phi()+Constants::pi; *_eep += (**iter).momentum().t()/GeV; } } } } NoPIOClassDescription VBFTest::initVBFTest; // Definition of the static class description member. void VBFTest::Init() { static ClassDocumentation documentation ("There is no documentation for the VBFTest class"); } void VBFTest::doinitrun() { AnalysisHandler::doinitrun(); if(getParticleData(ParticleID::h0)->mass()>200.*GeV) _mH = new_ptr(Histogram(200., 400.,200)); else _mH = new_ptr(Histogram(114., 116.0,200)); _cosH = new_ptr(Histogram( -1.0, 1.0,200)); _phiH = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _eH = new_ptr(Histogram( 0.0,1000.,1000)); _cosnu = new_ptr(Histogram( -1.0, 1.0,200)); _phinu = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _enu = new_ptr(Histogram( 0.0,1000.,1000)); _cosnub = new_ptr(Histogram( -1.0, 1.0,200)); _phinub = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _enub = new_ptr(Histogram( 0.0,1000.,1000)); _cosem = new_ptr(Histogram( -1.0, 1.0,200)); _phiem = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _eem = new_ptr(Histogram( 0.0,1000.,1000)); _cosep = new_ptr(Histogram( -1.0, 1.0,200)); _phiep = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _eep = new_ptr(Histogram( 0.0,1000.,1000)); } void VBFTest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; string title,species; title = "mass of H"; _mH->topdrawOutput(outfile,Frame,"BLACK",title); title = "theta of H"; _cosH->topdrawOutput(outfile,Frame,"BLACK",title); title = "Energy of H"; _eH->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of H"; _phiH->topdrawOutput(outfile,Frame,"BLACK",title); title = "theta of nu"; _cosnu->topdrawOutput(outfile,Frame,"BLACK",title); title = "Energy of nu"; _enu->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of nu"; _phinu->topdrawOutput(outfile,Frame,"BLACK",title); title = "theta of nub"; _cosnub->topdrawOutput(outfile,Frame,"BLACK",title); title = "Energy of nub"; _enub->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of nub"; _phinub->topdrawOutput(outfile,Frame,"BLACK",title); title = "theta of em"; _cosem->topdrawOutput(outfile,Frame,"BLACK",title); title = "Energy of em"; _eem->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of em"; _phiem->topdrawOutput(outfile,Frame,"BLACK",title); title = "theta of ep "; _cosep ->topdrawOutput(outfile,Frame,"BLACK",title); title = "Energy of ep "; _eep ->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of ep "; _phiep ->topdrawOutput(outfile,Frame,"BLACK",title); } herwig++-2.6.0.orig/Tests/Lepton/FermionTest.h0000644000175000017500000000771511754474774021764 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_FermionTest_H #define HERWIG_FermionTest_H // // This is the declaration of the FermionTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the FermionTest class. * * @see \ref FermionTestInterfaces "The interfaces" * defined for FermionTest. */ class FermionTest: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription initFermionTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FermionTest & operator=(const FermionTest &); private: /** * Histograms */ map _cos,_phi,_y,_pt; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FermionTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of FermionTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the FermionTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::FermionTest"; } /** * The name of a file containing the dynamic library where the class * FermionTest is implemented. It may also include several, space-separated, * libraries if the class FermionTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "LeptonTest.so"; } }; /** @endcond */ } #endif /* HERWIG_FermionTest_H */ herwig++-2.6.0.orig/Tests/Makefile.in0000644000175000017500000015233111756461701020137 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @WANT_LIBFASTJET_TRUE@am__append_1 = HadronJetTest.la LeptonJetTest.la subdir = Tests DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = DISTest_la_LIBADD = am_DISTest_la_OBJECTS = DISTest.lo DISTest_la_OBJECTS = $(am_DISTest_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent GammaTest_la_LIBADD = am_GammaTest_la_OBJECTS = GammaMETest.lo GammaPMETest.lo GammaTest_la_OBJECTS = $(am_GammaTest_la_OBJECTS) am__DEPENDENCIES_1 = @WANT_LIBFASTJET_TRUE@HadronJetTest_la_DEPENDENCIES = \ @WANT_LIBFASTJET_TRUE@ $(am__DEPENDENCIES_1) am__HadronJetTest_la_SOURCES_DIST = Hadron/VHTest.h Hadron/VHTest.cc \ Hadron/VTest.h Hadron/VTest.cc Hadron/HTest.h Hadron/HTest.cc @WANT_LIBFASTJET_TRUE@am_HadronJetTest_la_OBJECTS = \ @WANT_LIBFASTJET_TRUE@ HadronJetTest_la-VHTest.lo \ @WANT_LIBFASTJET_TRUE@ HadronJetTest_la-VTest.lo \ @WANT_LIBFASTJET_TRUE@ HadronJetTest_la-HTest.lo HadronJetTest_la_OBJECTS = $(am_HadronJetTest_la_OBJECTS) @WANT_LIBFASTJET_TRUE@am_HadronJetTest_la_rpath = HadronTest_la_LIBADD = am_HadronTest_la_OBJECTS = HadronVVTest.lo HadronVBFTest.lo WHTest.lo \ ZHTest.lo VGammaTest.lo ZJetTest.lo WJetTest.lo QQHTest.lo HadronTest_la_OBJECTS = $(am_HadronTest_la_OBJECTS) @WANT_LIBFASTJET_TRUE@LeptonJetTest_la_DEPENDENCIES = \ @WANT_LIBFASTJET_TRUE@ $(am__DEPENDENCIES_1) am__LeptonJetTest_la_SOURCES_DIST = Lepton/TopDecay.h \ Lepton/TopDecay.cc @WANT_LIBFASTJET_TRUE@am_LeptonJetTest_la_OBJECTS = \ @WANT_LIBFASTJET_TRUE@ LeptonJetTest_la-TopDecay.lo LeptonJetTest_la_OBJECTS = $(am_LeptonJetTest_la_OBJECTS) @WANT_LIBFASTJET_TRUE@am_LeptonJetTest_la_rpath = LeptonTest_la_LIBADD = am_LeptonTest_la_OBJECTS = VVTest.lo VBFTest.lo VHTest.lo \ FermionTest.lo LeptonTest_la_OBJECTS = $(am_LeptonTest_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(DISTest_la_SOURCES) $(GammaTest_la_SOURCES) \ $(HadronJetTest_la_SOURCES) $(HadronTest_la_SOURCES) \ $(LeptonJetTest_la_SOURCES) $(LeptonTest_la_SOURCES) DIST_SOURCES = $(DISTest_la_SOURCES) $(GammaTest_la_SOURCES) \ $(am__HadronJetTest_la_SOURCES_DIST) $(HadronTest_la_SOURCES) \ $(am__LeptonJetTest_la_SOURCES_DIST) $(LeptonTest_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ -module -avoid-version -rpath \ /dummy/path/not/used APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = -Wno-portability EXTRA_DIST = Inputs python Rivet EXTRA_LTLIBRARIES = LeptonTest.la GammaTest.la HadronTest.la \ DISTest.la $(am__append_1) @WANT_LIBFASTJET_TRUE@HadronJetTest_la_SOURCES = \ @WANT_LIBFASTJET_TRUE@Hadron/VHTest.h Hadron/VHTest.cc\ @WANT_LIBFASTJET_TRUE@Hadron/VTest.h Hadron/VTest.cc\ @WANT_LIBFASTJET_TRUE@Hadron/HTest.h Hadron/HTest.cc @WANT_LIBFASTJET_TRUE@HadronJetTest_la_CPPFLAGS = $(AM_CPPFLAGS) $(FASTJETINCLUDE) \ @WANT_LIBFASTJET_TRUE@-I$(FASTJETPATH) @WANT_LIBFASTJET_TRUE@HadronJetTest_la_LIBADD = $(FASTJETLIBS) @WANT_LIBFASTJET_TRUE@LeptonJetTest_la_SOURCES = \ @WANT_LIBFASTJET_TRUE@Lepton/TopDecay.h Lepton/TopDecay.cc @WANT_LIBFASTJET_TRUE@LeptonJetTest_la_CPPFLAGS = $(AM_CPPFLAGS) $(FASTJETINCLUDE) \ @WANT_LIBFASTJET_TRUE@-I$(FASTJETPATH) @WANT_LIBFASTJET_TRUE@LeptonJetTest_la_LIBADD = $(FASTJETLIBS) LeptonTest_la_SOURCES = \ Lepton/VVTest.h Lepton/VVTest.cc \ Lepton/VBFTest.h Lepton/VBFTest.cc \ Lepton/VHTest.h Lepton/VHTest.cc \ Lepton/FermionTest.h Lepton/FermionTest.cc GammaTest_la_SOURCES = \ Gamma/GammaMETest.h Gamma/GammaMETest.cc \ Gamma/GammaPMETest.h Gamma/GammaPMETest.cc DISTest_la_SOURCES = \ DIS/DISTest.h DIS/DISTest.cc HadronTest_la_SOURCES = \ Hadron/HadronVVTest.h Hadron/HadronVVTest.cc\ Hadron/HadronVBFTest.h Hadron/HadronVBFTest.cc\ Hadron/WHTest.h Hadron/WHTest.cc\ Hadron/ZHTest.h Hadron/ZHTest.cc\ Hadron/VGammaTest.h Hadron/VGammaTest.cc\ Hadron/ZJetTest.h Hadron/ZJetTest.cc\ Hadron/WJetTest.h Hadron/WJetTest.cc\ Hadron/QQHTest.h Hadron/QQHTest.cc REPO = $(top_builddir)/src/HerwigDefaults.rpo HERWIG = $(top_builddir)/src/Herwig++ HWREAD = $(HERWIG) read -r $(REPO) -L $(builddir)/.libs HWRUN = $(HERWIG) run all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Tests/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): DISTest.la: $(DISTest_la_OBJECTS) $(DISTest_la_DEPENDENCIES) $(EXTRA_DISTest_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(DISTest_la_OBJECTS) $(DISTest_la_LIBADD) $(LIBS) GammaTest.la: $(GammaTest_la_OBJECTS) $(GammaTest_la_DEPENDENCIES) $(EXTRA_GammaTest_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(GammaTest_la_OBJECTS) $(GammaTest_la_LIBADD) $(LIBS) HadronJetTest.la: $(HadronJetTest_la_OBJECTS) $(HadronJetTest_la_DEPENDENCIES) $(EXTRA_HadronJetTest_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(am_HadronJetTest_la_rpath) $(HadronJetTest_la_OBJECTS) $(HadronJetTest_la_LIBADD) $(LIBS) HadronTest.la: $(HadronTest_la_OBJECTS) $(HadronTest_la_DEPENDENCIES) $(EXTRA_HadronTest_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(HadronTest_la_OBJECTS) $(HadronTest_la_LIBADD) $(LIBS) LeptonJetTest.la: $(LeptonJetTest_la_OBJECTS) $(LeptonJetTest_la_DEPENDENCIES) $(EXTRA_LeptonJetTest_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(am_LeptonJetTest_la_rpath) $(LeptonJetTest_la_OBJECTS) $(LeptonJetTest_la_LIBADD) $(LIBS) LeptonTest.la: $(LeptonTest_la_OBJECTS) $(LeptonTest_la_DEPENDENCIES) $(EXTRA_LeptonTest_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(LeptonTest_la_OBJECTS) $(LeptonTest_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DISTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FermionTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GammaMETest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GammaPMETest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HadronJetTest_la-HTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HadronJetTest_la-VHTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HadronJetTest_la-VTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HadronVBFTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HadronVVTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LeptonJetTest_la-TopDecay.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QQHTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VBFTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VGammaTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VHTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VVTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/WHTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/WJetTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ZHTest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ZJetTest.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< DISTest.lo: DIS/DISTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DISTest.lo -MD -MP -MF $(DEPDIR)/DISTest.Tpo -c -o DISTest.lo `test -f 'DIS/DISTest.cc' || echo '$(srcdir)/'`DIS/DISTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/DISTest.Tpo $(DEPDIR)/DISTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='DIS/DISTest.cc' object='DISTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DISTest.lo `test -f 'DIS/DISTest.cc' || echo '$(srcdir)/'`DIS/DISTest.cc GammaMETest.lo: Gamma/GammaMETest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GammaMETest.lo -MD -MP -MF $(DEPDIR)/GammaMETest.Tpo -c -o GammaMETest.lo `test -f 'Gamma/GammaMETest.cc' || echo '$(srcdir)/'`Gamma/GammaMETest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/GammaMETest.Tpo $(DEPDIR)/GammaMETest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Gamma/GammaMETest.cc' object='GammaMETest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GammaMETest.lo `test -f 'Gamma/GammaMETest.cc' || echo '$(srcdir)/'`Gamma/GammaMETest.cc GammaPMETest.lo: Gamma/GammaPMETest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GammaPMETest.lo -MD -MP -MF $(DEPDIR)/GammaPMETest.Tpo -c -o GammaPMETest.lo `test -f 'Gamma/GammaPMETest.cc' || echo '$(srcdir)/'`Gamma/GammaPMETest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/GammaPMETest.Tpo $(DEPDIR)/GammaPMETest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Gamma/GammaPMETest.cc' object='GammaPMETest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GammaPMETest.lo `test -f 'Gamma/GammaPMETest.cc' || echo '$(srcdir)/'`Gamma/GammaPMETest.cc HadronJetTest_la-VHTest.lo: Hadron/VHTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HadronJetTest_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HadronJetTest_la-VHTest.lo -MD -MP -MF $(DEPDIR)/HadronJetTest_la-VHTest.Tpo -c -o HadronJetTest_la-VHTest.lo `test -f 'Hadron/VHTest.cc' || echo '$(srcdir)/'`Hadron/VHTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HadronJetTest_la-VHTest.Tpo $(DEPDIR)/HadronJetTest_la-VHTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Hadron/VHTest.cc' object='HadronJetTest_la-VHTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HadronJetTest_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HadronJetTest_la-VHTest.lo `test -f 'Hadron/VHTest.cc' || echo '$(srcdir)/'`Hadron/VHTest.cc HadronJetTest_la-VTest.lo: Hadron/VTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HadronJetTest_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HadronJetTest_la-VTest.lo -MD -MP -MF $(DEPDIR)/HadronJetTest_la-VTest.Tpo -c -o HadronJetTest_la-VTest.lo `test -f 'Hadron/VTest.cc' || echo '$(srcdir)/'`Hadron/VTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HadronJetTest_la-VTest.Tpo $(DEPDIR)/HadronJetTest_la-VTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Hadron/VTest.cc' object='HadronJetTest_la-VTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HadronJetTest_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HadronJetTest_la-VTest.lo `test -f 'Hadron/VTest.cc' || echo '$(srcdir)/'`Hadron/VTest.cc HadronJetTest_la-HTest.lo: Hadron/HTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HadronJetTest_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HadronJetTest_la-HTest.lo -MD -MP -MF $(DEPDIR)/HadronJetTest_la-HTest.Tpo -c -o HadronJetTest_la-HTest.lo `test -f 'Hadron/HTest.cc' || echo '$(srcdir)/'`Hadron/HTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HadronJetTest_la-HTest.Tpo $(DEPDIR)/HadronJetTest_la-HTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Hadron/HTest.cc' object='HadronJetTest_la-HTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HadronJetTest_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HadronJetTest_la-HTest.lo `test -f 'Hadron/HTest.cc' || echo '$(srcdir)/'`Hadron/HTest.cc HadronVVTest.lo: Hadron/HadronVVTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HadronVVTest.lo -MD -MP -MF $(DEPDIR)/HadronVVTest.Tpo -c -o HadronVVTest.lo `test -f 'Hadron/HadronVVTest.cc' || echo '$(srcdir)/'`Hadron/HadronVVTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HadronVVTest.Tpo $(DEPDIR)/HadronVVTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Hadron/HadronVVTest.cc' object='HadronVVTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HadronVVTest.lo `test -f 'Hadron/HadronVVTest.cc' || echo '$(srcdir)/'`Hadron/HadronVVTest.cc HadronVBFTest.lo: Hadron/HadronVBFTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HadronVBFTest.lo -MD -MP -MF $(DEPDIR)/HadronVBFTest.Tpo -c -o HadronVBFTest.lo `test -f 'Hadron/HadronVBFTest.cc' || echo '$(srcdir)/'`Hadron/HadronVBFTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HadronVBFTest.Tpo $(DEPDIR)/HadronVBFTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Hadron/HadronVBFTest.cc' object='HadronVBFTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HadronVBFTest.lo `test -f 'Hadron/HadronVBFTest.cc' || echo '$(srcdir)/'`Hadron/HadronVBFTest.cc WHTest.lo: Hadron/WHTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT WHTest.lo -MD -MP -MF $(DEPDIR)/WHTest.Tpo -c -o WHTest.lo `test -f 'Hadron/WHTest.cc' || echo '$(srcdir)/'`Hadron/WHTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/WHTest.Tpo $(DEPDIR)/WHTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Hadron/WHTest.cc' object='WHTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o WHTest.lo `test -f 'Hadron/WHTest.cc' || echo '$(srcdir)/'`Hadron/WHTest.cc ZHTest.lo: Hadron/ZHTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ZHTest.lo -MD -MP -MF $(DEPDIR)/ZHTest.Tpo -c -o ZHTest.lo `test -f 'Hadron/ZHTest.cc' || echo '$(srcdir)/'`Hadron/ZHTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ZHTest.Tpo $(DEPDIR)/ZHTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Hadron/ZHTest.cc' object='ZHTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ZHTest.lo `test -f 'Hadron/ZHTest.cc' || echo '$(srcdir)/'`Hadron/ZHTest.cc VGammaTest.lo: Hadron/VGammaTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VGammaTest.lo -MD -MP -MF $(DEPDIR)/VGammaTest.Tpo -c -o VGammaTest.lo `test -f 'Hadron/VGammaTest.cc' || echo '$(srcdir)/'`Hadron/VGammaTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/VGammaTest.Tpo $(DEPDIR)/VGammaTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Hadron/VGammaTest.cc' object='VGammaTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VGammaTest.lo `test -f 'Hadron/VGammaTest.cc' || echo '$(srcdir)/'`Hadron/VGammaTest.cc ZJetTest.lo: Hadron/ZJetTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ZJetTest.lo -MD -MP -MF $(DEPDIR)/ZJetTest.Tpo -c -o ZJetTest.lo `test -f 'Hadron/ZJetTest.cc' || echo '$(srcdir)/'`Hadron/ZJetTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ZJetTest.Tpo $(DEPDIR)/ZJetTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Hadron/ZJetTest.cc' object='ZJetTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ZJetTest.lo `test -f 'Hadron/ZJetTest.cc' || echo '$(srcdir)/'`Hadron/ZJetTest.cc WJetTest.lo: Hadron/WJetTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT WJetTest.lo -MD -MP -MF $(DEPDIR)/WJetTest.Tpo -c -o WJetTest.lo `test -f 'Hadron/WJetTest.cc' || echo '$(srcdir)/'`Hadron/WJetTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/WJetTest.Tpo $(DEPDIR)/WJetTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Hadron/WJetTest.cc' object='WJetTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o WJetTest.lo `test -f 'Hadron/WJetTest.cc' || echo '$(srcdir)/'`Hadron/WJetTest.cc QQHTest.lo: Hadron/QQHTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT QQHTest.lo -MD -MP -MF $(DEPDIR)/QQHTest.Tpo -c -o QQHTest.lo `test -f 'Hadron/QQHTest.cc' || echo '$(srcdir)/'`Hadron/QQHTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/QQHTest.Tpo $(DEPDIR)/QQHTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Hadron/QQHTest.cc' object='QQHTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o QQHTest.lo `test -f 'Hadron/QQHTest.cc' || echo '$(srcdir)/'`Hadron/QQHTest.cc LeptonJetTest_la-TopDecay.lo: Lepton/TopDecay.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(LeptonJetTest_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LeptonJetTest_la-TopDecay.lo -MD -MP -MF $(DEPDIR)/LeptonJetTest_la-TopDecay.Tpo -c -o LeptonJetTest_la-TopDecay.lo `test -f 'Lepton/TopDecay.cc' || echo '$(srcdir)/'`Lepton/TopDecay.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/LeptonJetTest_la-TopDecay.Tpo $(DEPDIR)/LeptonJetTest_la-TopDecay.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Lepton/TopDecay.cc' object='LeptonJetTest_la-TopDecay.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(LeptonJetTest_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LeptonJetTest_la-TopDecay.lo `test -f 'Lepton/TopDecay.cc' || echo '$(srcdir)/'`Lepton/TopDecay.cc VVTest.lo: Lepton/VVTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VVTest.lo -MD -MP -MF $(DEPDIR)/VVTest.Tpo -c -o VVTest.lo `test -f 'Lepton/VVTest.cc' || echo '$(srcdir)/'`Lepton/VVTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/VVTest.Tpo $(DEPDIR)/VVTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Lepton/VVTest.cc' object='VVTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VVTest.lo `test -f 'Lepton/VVTest.cc' || echo '$(srcdir)/'`Lepton/VVTest.cc VBFTest.lo: Lepton/VBFTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VBFTest.lo -MD -MP -MF $(DEPDIR)/VBFTest.Tpo -c -o VBFTest.lo `test -f 'Lepton/VBFTest.cc' || echo '$(srcdir)/'`Lepton/VBFTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/VBFTest.Tpo $(DEPDIR)/VBFTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Lepton/VBFTest.cc' object='VBFTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VBFTest.lo `test -f 'Lepton/VBFTest.cc' || echo '$(srcdir)/'`Lepton/VBFTest.cc VHTest.lo: Lepton/VHTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VHTest.lo -MD -MP -MF $(DEPDIR)/VHTest.Tpo -c -o VHTest.lo `test -f 'Lepton/VHTest.cc' || echo '$(srcdir)/'`Lepton/VHTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/VHTest.Tpo $(DEPDIR)/VHTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Lepton/VHTest.cc' object='VHTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VHTest.lo `test -f 'Lepton/VHTest.cc' || echo '$(srcdir)/'`Lepton/VHTest.cc FermionTest.lo: Lepton/FermionTest.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FermionTest.lo -MD -MP -MF $(DEPDIR)/FermionTest.Tpo -c -o FermionTest.lo `test -f 'Lepton/FermionTest.cc' || echo '$(srcdir)/'`Lepton/FermionTest.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/FermionTest.Tpo $(DEPDIR)/FermionTest.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Lepton/FermionTest.cc' object='FermionTest.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FermionTest.lo `test -f 'Lepton/FermionTest.cc' || echo '$(srcdir)/'`Lepton/FermionTest.cc mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-local cscopelist ctags dist-hook distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am dist-hook: rm -rf $(distdir)/Inputs/.svn rm -rf $(distdir)/python/.svn rm -rf $(distdir)/Rivet/.svn tests : tests-LEP tests-DIS tests-LHC tests-Gamma @WANT_LIBFASTJET_TRUE@tests-LEP : test-LEP-VV test-LEP-VH test-LEP-VBF test-LEP-BB test-LEP-Quarks test-LEP-Leptons \ @WANT_LIBFASTJET_TRUE@ test-LEP-default test-LEP-Powheg test-LEP-TopDecay @WANT_LIBFASTJET_FALSE@tests-LEP : test-LEP-VV test-LEP-VH test-LEP-VBF test-LEP-BB test-LEP-Quarks test-LEP-Leptons tests-DIS : test-DIS-Charged test-DIS-Neutral @WANT_LIBFASTJET_TRUE@tests-LHC : test-LHC-WW test-LHC-WZ test-LHC-ZZ test-LHC-ZGamma test-LHC-WGamma \ @WANT_LIBFASTJET_TRUE@ test-LHC-ZH test-LHC-WH test-LHC-ZJet test-LHC-WJet test-LHC-Z test-LHC-W test-LHC-ZZVBF test-LHC-VBF \ @WANT_LIBFASTJET_TRUE@ test-LHC-WWVBF test-LHC-bbH test-LHC-ttH test-LHC-GammaGamma test-LHC-GammaJet test-LHC-Higgs \ @WANT_LIBFASTJET_TRUE@ test-LHC-HiggsJet test-LHC-QCDFast test-LHC-QCD test-LHC-Top test-LHC-Bottom \ @WANT_LIBFASTJET_TRUE@ test-LHC-WHJet test-LHC-ZHJet test-LHC-HJet test-LHC-ZShower test-LHC-WShower\ @WANT_LIBFASTJET_TRUE@ test-LHC-WHJet-Powheg test-LHC-ZHJet-Powheg test-LHC-HJet-Powheg \ @WANT_LIBFASTJET_TRUE@ test-LHC-ZShower-Powheg test-LHC-WShower-Powheg @WANT_LIBFASTJET_FALSE@tests-LHC : test-LHC-WW test-LHC-WZ test-LHC-ZZ test-LHC-ZGamma test-LHC-WGamma \ @WANT_LIBFASTJET_FALSE@ test-LHC-ZH test-LHC-WH test-LHC-ZJet test-LHC-WJet test-LHC-Z test-LHC-W test-LHC-ZZVBF test-LHC-VBF \ @WANT_LIBFASTJET_FALSE@ test-LHC-WWVBF test-LHC-bbH test-LHC-ttH test-LHC-GammaGamma test-LHC-GammaJet test-LHC-Higgs \ @WANT_LIBFASTJET_FALSE@ test-LHC-HiggsJet test-LHC-QCDFast test-LHC-QCD test-LHC-Top tests-Gamma : test-Gamma-FF test-Gamma-WW test-Gamma-P @WANT_LIBFASTJET_TRUE@test-LEP-% : Inputs/LEP-%.in LeptonTest.la LeptonJetTest.la @WANT_LIBFASTJET_TRUE@ $(HWREAD) $< @WANT_LIBFASTJET_TRUE@ $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} @WANT_LIBFASTJET_FALSE@test-LEP-% : Inputs/LEP-%.in LeptonTest.la @WANT_LIBFASTJET_FALSE@ $(HWREAD) $< @WANT_LIBFASTJET_FALSE@ $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-LEP-% : Rivet/LEP-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-BFactory-% : Rivet/BFactory-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-TVT-% : Rivet/TVT-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-DIS-% : Rivet/DIS-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-LHC-% : Rivet/LHC-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-Star-% : Rivet/Star-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-SppS-% : Rivet/SppS-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-ISR-% : Rivet/ISR-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-LEP: Rivet-LEP-22 Rivet-LEP-35 Rivet-LEP-44 Rivet-LEP-91 \ Rivet-LEP-130 Rivet-LEP-133 Rivet-LEP-136 Rivet-LEP-161 \ Rivet-LEP-172 Rivet-LEP-177 Rivet-LEP-183 Rivet-LEP-189 \ Rivet-LEP-192 Rivet-LEP-196 Rivet-LEP-197 Rivet-LEP-200 \ Rivet-LEP-202 Rivet-LEP-206 Rivet-LEP-14 Rivet-LEP-10\ Rivet-LEP-Powheg-14 Rivet-LEP-Powheg-22 \ Rivet-LEP-Powheg-35 Rivet-LEP-Powheg-44 \ Rivet-LEP-Powheg-91 Rivet-LEP-Powheg-130 \ Rivet-LEP-Powheg-133 Rivet-LEP-Powheg-136 \ Rivet-LEP-Powheg-161 Rivet-LEP-Powheg-172 \ Rivet-LEP-Powheg-177 Rivet-LEP-Powheg-183 \ Rivet-LEP-Powheg-189 Rivet-LEP-Powheg-192 \ Rivet-LEP-Powheg-196 Rivet-LEP-Powheg-197 \ Rivet-LEP-Powheg-200 Rivet-LEP-Powheg-202 \ Rivet-LEP-Powheg-206 Rivet-LEP-Powheg-10 for i in LEP-*.aida; do rivet-rmgaps $$i; done; rm -rf Rivet-LEP python/merge-LEP LEP python/merge-LEP LEP-Powheg rivet-mkhtml -o Rivet-LEP LEP.aida:Hw++ LEP-Powheg.aida:Hw++-Powheg Rivet-BFactory: Rivet-BFactory-10.52 Rivet-BFactory-Powheg-10.52 \ Rivet-BFactory-10.52-sym Rivet-BFactory-Powheg-10.52-sym \ Rivet-BFactory-10.54 Rivet-BFactory-Powheg-10.54 \ Rivet-BFactory-10.45 Rivet-BFactory-Powheg-10.45 \ Rivet-BFactory-10.58 Rivet-BFactory-Powheg-10.58 \ Rivet-BFactory-Upsilon Rivet-BFactory-Upsilon2 Rivet-BFactory-Upsilon4 \ Rivet-BFactory-Tau for i in BFactory-*.aida; do rivet-rmgaps $$i; done; rm -rf Rivet-BFactory python/merge-BFactory BFactory python/merge-BFactory BFactory-Powheg rivet-mkhtml -o Rivet-BFactory BFactory.aida:Hw++ BFactory-Powheg.aida:Hw++-Powheg Rivet-DIS: Rivet-DIS-e--LowQ2 \ Rivet-DIS-e+-LowQ2 Rivet-DIS-e+-HighQ2\ Rivet-DIS-Powheg-e--LowQ2 \ Rivet-DIS-Powheg-e+-LowQ2 Rivet-DIS-Powheg-e+-HighQ2\ Rivet-DIS-NoME-e--LowQ2 \ Rivet-DIS-NoME-e+-LowQ2 Rivet-DIS-NoME-e+-HighQ2 rivet-rmgaps DIS-e+-LowQ2.aida rivet-rmgaps DIS-e--LowQ2.aida rivet-rmgaps DIS-e+-HighQ2.aida rivet-rmgaps DIS-Powheg-e+-LowQ2.aida rivet-rmgaps DIS-Powheg-e--LowQ2.aida rivet-rmgaps DIS-Powheg-e+-HighQ2.aida rivet-rmgaps DIS-NoME-e+-LowQ2.aida rivet-rmgaps DIS-NoME-e--LowQ2.aida rivet-rmgaps DIS-NoME-e+-HighQ2.aida python/merge-DIS DIS python/merge-DIS DIS-Powheg python/merge-DIS DIS-NoME rivet-mkhtml -o Rivet-DIS DIS.aida:Hw++ DIS-Powheg.aida:Hw++-Powheg DIS-NoME.aida:Hw++-NoME Rivet-TVT-WZ: Rivet-TVT-Run-I-Z Rivet-TVT-Powheg-Run-I-Z \ Rivet-TVT-Run-I-W Rivet-TVT-Powheg-Run-I-W \ Rivet-TVT-Run-I-WZ Rivet-TVT-Powheg-Run-I-WZ\ Rivet-TVT-Run-II-Z-e Rivet-TVT-Powheg-Run-II-Z-e \ Rivet-TVT-Run-II-Z-mu Rivet-TVT-Powheg-Run-II-Z-mu \ Rivet-TVT-Run-II-W Rivet-TVT-Powheg-Run-II-W rivet-rmgaps TVT-Run-II-Z-e.aida; rivet-rmgaps TVT-Powheg-Run-II-Z-e.aida; rm -rf Rivet-TVT-WZ python/merge-TVT-EW TVT-Run-II-W.aida TVT-Run-II-Z-{e,mu}.aida\ TVT-Run-I-{W,Z,WZ}.aida -o TVT-WZ.aida python/merge-TVT-EW TVT-Powheg-Run-II-W.aida TVT-Powheg-Run-II-Z-{e,mu}.aida\ TVT-Powheg-Run-I-{W,Z,WZ}.aida -o TVT-Powheg-WZ.aida rivet-mkhtml -o Rivet-TVT-WZ TVT-WZ.aida:Hw++ TVT-Powheg-WZ.aida:Hw++-Powheg Rivet-TVT-Photon: Rivet-TVT-Run-II-DiPhoton Rivet-TVT-Run-II-PromptPhoton # Rivet-TVT-Run-I-PromptPhoton rm -rf Rivet-TVT-Photon python/merge-aida TVT-Run-II-DiPhoton.aida TVT-Run-II-PromptPhoton.aida\ -o TVT-Photon.aida rivet-mkhtml -o Rivet-TVT-Photon TVT-Photon.aida:Hw++ Rivet-TVT-Jets: Rivet-TVT-Run-II-Jets-1 Rivet-TVT-Run-II-Jets-2 \ Rivet-TVT-Run-II-Jets-3 Rivet-TVT-Run-II-Jets-4 \ Rivet-TVT-Run-II-Jets-5 Rivet-TVT-Run-II-Jets-6 \ Rivet-TVT-Run-II-Jets-7 Rivet-TVT-Run-II-Jets-8 \ Rivet-TVT-Run-II-Jets-9 Rivet-TVT-Run-II-Jets-10\ Rivet-TVT-Run-II-Jets-11 Rivet-TVT-Run-II-UE \ Rivet-TVT-Run-I-Jets-1 Rivet-TVT-Run-I-Jets-2 \ Rivet-TVT-Run-I-Jets-3 Rivet-TVT-Run-I-Jets-4 \ Rivet-TVT-Run-I-Jets-5 Rivet-TVT-Run-I-Jets-6 \ Rivet-TVT-Run-I-Jets-7 Rivet-TVT-Run-I-Jets-8\ Rivet-TVT-Run-I-UE\ Rivet-TVT-630-UE Rivet-TVT-630-Jets-1 \ Rivet-TVT-630-Jets-2 Rivet-TVT-630-Jets-3 rivet-rmgaps TVT-Run-I-Jets-4.aida rm -rf Rivet-TVT-Jets python/merge-TVT-Jets TVT rivet-mkhtml -o Rivet-TVT-Jets TVT-Jets.aida:Hw++ Rivet-LHC-Jets: Rivet-LHC-7-Jets-0 Rivet-LHC-7-Jets-1 Rivet-LHC-7-Jets-2 \ Rivet-LHC-7-Jets-3 Rivet-LHC-7-Jets-4 \ Rivet-LHC-7-Jets-5 Rivet-LHC-7-Jets-6 \ Rivet-LHC-7-Jets-7 Rivet-LHC-7-Jets-8 \ Rivet-LHC-7-Jets-9 Rivet-LHC-7-Jets-10 \ Rivet-LHC-7-Jets-11 Rivet-LHC-7-Jets-12 \ Rivet-LHC-7-Jets-13 Rivet-LHC-7-UE \ Rivet-LHC-2360-UE Rivet-LHC-900-UE \ Rivet-LHC-7-Heavy-1 Rivet-LHC-7-Heavy-2 \ Rivet-LHC-7-Heavy-3 Rivet-LHC-7-Heavy-4 \ Rivet-LHC-7-Heavy-5 Rivet-LHC-7-Top \ Rivet-LHC-7-UE-Long Rivet-LHC-900-UE-Long \ Rivet-LHC-7-Jets-All-1 Rivet-LHC-7-Jets-All-2 rm -rf Rivet-LHC-Jets python/merge-LHC-Jets rivet-mkhtml -o Rivet-LHC-Jets LHC-Jets.aida:Hw++ Rivet-Star: Rivet-Star-UE Rivet-Star-Jets-1 \ Rivet-Star-Jets-2 Rivet-Star-Jets-3 \ Rivet-Star-Jets-4 rm -rf Rivet-Star rivet-rmgaps Star-UE.aida python/merge-Star Star rivet-mkhtml -o Rivet-Star Star.aida Rivet-SppS: Rivet-ISR-44-UE Rivet-ISR-63-UE \ Rivet-SppS-63-UE Rivet-ISR-30-UE \ Rivet-ISR-53-UE Rivet-SppS-200-UE \ Rivet-SppS-500-UE Rivet-SppS-900-UE \ Rivet-SppS-546-UE Rivet-SppS-53-UE rm -rf Rivet-SppS python/merge-aida ISR-44-UE.aida ISR-63-UE.aida SppS-63-UE.aida ISR-30-UE.aida \ ISR-53-UE.aida SppS-200-UE.aida SppS-500-UE.aida SppS-900-UE.aida \ SppS-546-UE.aida SppS-53-UE.aida -o SppS.aida rivet-mkhtml -o Rivet-SppS SppS.aida Rivet-LHC-EW: Rivet-LHC-W-e Rivet-LHC-Powheg-W-e \ Rivet-LHC-W-mu Rivet-LHC-Powheg-W-mu \ Rivet-LHC-Z-e Rivet-LHC-Powheg-Z-e \ Rivet-LHC-Z-mu Rivet-LHC-Powheg-Z-mu \ Rivet-LHC-WW Rivet-LHC-Powheg-WW\ Rivet-LHC-ZZ Rivet-LHC-Powheg-ZZ rm -rf Rivet-LHC-EW; python/merge-LHC-EW LHC-{W-e,W-mu,Z-e,Z-mu,WW,ZZ}.aida -o LHC-EW.aida; python/merge-LHC-EW LHC-Powheg-{W-e,W-mu,Z-e,Z-mu,WW,ZZ}.aida -o LHC-Powheg-EW.aida; rivet-mkhtml -o Rivet-LHC-EW LHC-EW.aida:Hw++ LHC-Powheg-EW.aida:Hw++-Powheg; Rivet-LHC-Photon: Rivet-LHC-7-PromptPhoton Rivet-LHC-7-DiPhoton rm -rf Rivet-LHC-Photon python/merge-aida LHC-7-PromptPhoton.aida LHC-7-DiPhoton.aida -o LHC-Photon.aida rivet-mkhtml -o Rivet-LHC-Photon LHC-Photon.aida:Hw++ test-Gamma-% : Inputs/Gamma-%.in GammaTest.la $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} test-DIS-% : Inputs/DIS-%.in DISTest.la $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} @WANT_LIBFASTJET_TRUE@test-LHC-% : Inputs/LHC-%.in HadronTest.la GammaTest.la HadronJetTest.la @WANT_LIBFASTJET_TRUE@ $(HWREAD) $< @WANT_LIBFASTJET_TRUE@ $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} @WANT_LIBFASTJET_FALSE@test-LHC-% : Inputs/LHC-%.in HadronTest.la GammaTest.la @WANT_LIBFASTJET_FALSE@ $(HWREAD) $< @WANT_LIBFASTJET_FALSE@ $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} clean-local: rm -f *.out *.log *.tex *.top *.run *.dump *.mult *.Bmult *.aida # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Tests/Gamma/0000755000175000017500000000000011756464211017106 5ustar sylvestresylvestreherwig++-2.6.0.orig/Tests/Gamma/GammaPMETest.h0000755000175000017500000001013711754474774021525 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_GammaPMETest_H #define HERWIG_GammaPMETest_H // // This is the declaration of the GammaPMETest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the GammaPMETest class. * * @see \ref GammaPMETestInterfaces "The interfaces" * defined for GammaPMETest. */ class GammaPMETest: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription initGammaPMETest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GammaPMETest & operator=(const GammaPMETest &); private: /** * Histograms */ HistogramPtr _rap,_phi,_pt,_mhat,_yhat; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of GammaPMETest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of GammaPMETest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the GammaPMETest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::GammaPMETest"; } /** * The name of a file containing the dynamic library where the class * GammaPMETest is implemented. It may also include several, space-separated, * libraries if the class GammaPMETest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "GammaTest.so"; } }; /** @endcond */ } #endif /* HERWIG_GammaPMETest_H */ herwig++-2.6.0.orig/Tests/Gamma/GammaMETest.h0000755000175000017500000000771411754474774021414 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_GammaMETest_H #define HERWIG_GammaMETest_H // // This is the declaration of the GammaMETest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the GammaMETest class. * * @see \ref GammaMETestInterfaces "The interfaces" * defined for GammaMETest. */ class GammaMETest: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription initGammaMETest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GammaMETest & operator=(const GammaMETest &); private: /** * Histograms */ map _cos,_phi,_y,_pt; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of GammaMETest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of GammaMETest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the GammaMETest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::GammaMETest"; } /** * The name of a file containing the dynamic library where the class * GammaMETest is implemented. It may also include several, space-separated, * libraries if the class GammaMETest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "GammaTest.so"; } }; /** @endcond */ } #endif /* HERWIG_GammaMETest_H */ herwig++-2.6.0.orig/Tests/Gamma/GammaMETest.cc0000755000175000017500000000564511754474774021553 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the GammaMETest class. // #include "GammaMETest.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" using namespace Herwig; void GammaMETest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); tPVector particles = event->getFinalState(); for(tPVector::const_iterator it=particles.begin();it!=particles.end();++it) { if(_cos.find((**it).id())!=_cos.end()) { *_cos[(**it).id()] += (**it).momentum().cosTheta(); *_phi[(**it).id()] += (**it).momentum().phi()+Constants::pi; *_y [(**it).id()] += (**it).momentum().rapidity(); *_pt [(**it).id()] += (**it).momentum().perp()/GeV; } else { HistogramPtr ncos = new_ptr(Histogram(-1.,1.,200)); HistogramPtr nphi = new_ptr(Histogram(0.,2.*Constants::pi,200)); HistogramPtr ny = new_ptr(Histogram(-10.0,10.0,200)); HistogramPtr npt = new_ptr(Histogram(0.,400.,200)); *ncos += (**it).momentum().cosTheta(); *nphi += (**it).momentum().phi()+Constants::pi; _cos.insert(make_pair((**it).id(),ncos)); _phi.insert(make_pair((**it).id(),nphi)); _y .insert(make_pair((**it).id(),ny )); _pt .insert(make_pair((**it).id(),npt )); } } } IBPtr GammaMETest::clone() const { return new_ptr(*this); } IBPtr GammaMETest::fullclone() const { return new_ptr(*this); } NoPIOClassDescription GammaMETest::initGammaMETest; // Definition of the static class description member. void GammaMETest::Init() { static ClassDocumentation documentation ("There is no documentation for the GammaMETest class"); } void GammaMETest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; for(map::const_iterator it=_cos.begin();it!=_cos.end();++it) { string title = "cos of polar angle for " + getParticleData(it->first)->PDGName(); it->second->topdrawOutput(outfile,Frame,"BLACK",title); } for(map::const_iterator it=_y.begin();it!=_y.end();++it) { string title = "rapidity for " + getParticleData(it->first)->PDGName(); it->second->topdrawOutput(outfile,Frame,"BLACK",title); } for(map::const_iterator it=_pt.begin();it!=_pt.end();++it) { string title = "pT for " + getParticleData(it->first)->PDGName(); it->second->topdrawOutput(outfile,Frame,"BLACK",title); } for(map::const_iterator it=_phi.begin();it!=_phi.end();++it) { string title = "azimuthal angle for " + getParticleData(it->first)->PDGName(); it->second->topdrawOutput(outfile,Frame,"BLACK",title); } } herwig++-2.6.0.orig/Tests/Gamma/GammaPMETest.cc0000755000175000017500000000442111754474774021662 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the GammaPMETest class. // #include "GammaPMETest.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace Herwig; void GammaPMETest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). tPVector particles = event->getFinalState(); Lorentz5Momentum ptotal; for(tPVector::const_iterator it=particles.begin();it!=particles.end();++it) { int id = abs((**it).id()); if(id<=5||id==ParticleID::g) { *_pt += (**it).momentum().perp()/GeV; *_rap += (**it).momentum().rapidity(); *_phi += (**it).momentum().phi()+Constants::pi; ptotal += (**it).momentum(); } } *_mhat += ptotal.m()/GeV; // cerr << "testing at analysis " << ptotal.m()/GeV << "\n"; *_yhat += ptotal.rapidity(); } IBPtr GammaPMETest::clone() const { return new_ptr(*this); } IBPtr GammaPMETest::fullclone() const { return new_ptr(*this); } NoPIOClassDescription GammaPMETest::initGammaPMETest; // Definition of the static class description member. void GammaPMETest::Init() { static ClassDocumentation documentation ("There is no documentation for the GammaPMETest class"); } void GammaPMETest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; _rap->topdrawOutput(outfile,Frame,"BLACK","Jet rapidity"); _pt ->topdrawOutput(outfile,Frame,"BLACK","Jet pt"); _phi->topdrawOutput(outfile,Frame,"BLACK","Jet azimuth"); _mhat->topdrawOutput(outfile,Frame,"BLACK","CMS Mass"); _yhat->topdrawOutput(outfile,Frame,"BLACK","CMS rapidity"); } void GammaPMETest::doinitrun() { AnalysisHandler::doinitrun(); _rap = new_ptr(Histogram(-10.,10.,200)); _pt = new_ptr(Histogram(0.,1000.,1000)); _phi = new_ptr(Histogram(0,Constants::twopi,200)); _mhat = new_ptr(Histogram(0.,1000.,1000)); _yhat = new_ptr(Histogram(-10.,10.,200)); } herwig++-2.6.0.orig/Tests/Rivet/0000755000175000017500000000000011756464212017156 5ustar sylvestresylvestreherwig++-2.6.0.orig/Tests/Rivet/BFactory-Upsilon4.in0000644000175000017500000000253611754474775022755 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in create ThePEG::LuminosityFunction BFactoryLuminosity set BFactoryLuminosity:BeamEMaxA 5.29*GeV set BFactoryLuminosity:BeamEMaxB 5.29*GeV set /Herwig/Cuts/EECuts:MHatMin 10.5799 set /Herwig/EventHandlers/LEPHandler:LuminosityFunction BFactoryLuminosity ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/MatrixElements create Herwig::MEee2VectorMeson MEUpsilon HwMELepton.so set MEUpsilon:VectorMeson /Herwig/Particles/Upsilon(4S) set MEUpsilon:Coupling 0.0004151809 set SimpleEE:MatrixElements 0 MEUpsilon insert /Herwig/NewPhysics/DecayHandler:Excluded 0 /Herwig/Particles/Upsilon(4S) cd /Herwig/Generators ################################################## # select the analyses ################################################## # BELLE charm hadron production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ARGUS_1993_S2653028 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ARGUS_1993_S2789213 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun BFactory-Upsilon4 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-All-1.in0000644000175000017500000000173311754474775022050 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set MEQCD2to2:MaximumFlavour 5 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 20. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082009 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-All-1 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-I-Jets-2.in0000644000175000017500000000266411754474775022202 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 40. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # run I CDF di jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2001_S4517016 # run I CDF inclusive jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2001_S4563131 # run I CDF UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2004_S5839831 # run I D0 dijet decorrelation insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_1996_S3324664 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-I-Jets-2 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/ISR-63-UE.in0000644000175000017500000000371711754474775020725 0ustar sylvestresylvestre################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 set LHCGenerator:EventHandler:StatLevel Full # override the beam energy cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 62.2 ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Analysis/RivetAnalysis:Debug No set /Herwig/Decays/DecayHandler:LifeTimeOption 0 set /Herwig/Decays/DecayHandler:MaxLifeTime 10*mm ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 SFM_1984_S1178091 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun ISR-63-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/ISR-30-UE.in0000644000175000017500000000371711754474775020717 0ustar sylvestresylvestre################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 set LHCGenerator:EventHandler:StatLevel Full # override the beam energy cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 30.4 ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Analysis/RivetAnalysis:Debug No set /Herwig/Decays/DecayHandler:LifeTimeOption 0 set /Herwig/Decays/DecayHandler:MaxLifeTime 10*mm ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 SFM_1984_S1178091 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun ISR-30-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-10.in0000644000175000017500000000174411754474775020367 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 10. set /Herwig/Cuts/EECuts:MHatMin 9.99 set /Herwig/MatrixElements/MEee2gZ2qq:MaximumFlavour 4 ################################################## # select the analyses ################################################## # PDG hadron multiplicities and ratios insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES_RATIOS ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-10 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-Jets-10.in0000644000175000017500000000257211754474775022370 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 30. set /Herwig/Cuts/QCDCuts:MHatMin 500.*GeV # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # D0 dijet invariant mass insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2010_S8566488 # D0 dijet angles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2009_S8320160 # CDF dijet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S8093652 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-Jets-10 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/SppS-900-UE.in0000644000175000017500000000432711754474775021233 0ustar sylvestresylvestre################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 set LHCGenerator:EventHandler:StatLevel Full # override the beam energy cd /Herwig/Generators set LHCGenerator:EventHandler:BeamB /Herwig/Particles/pbar- set LHCGenerator:EventHandler:LuminosityFunction:Energy 900.0 ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Analysis/RivetAnalysis:Debug No set /Herwig/Decays/DecayHandler:LifeTimeOption 0 set /Herwig/Decays/DecayHandler:MaxLifeTime 10*mm ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 UA5_1989_S1926373 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 UA5_1988_S1867512 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 UA1_1990_S2044935 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 UA5_1986_S1583476 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun SppS-900-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-136.in0000644000175000017500000000146411754474775021706 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 136. ################################################## # select the analyses ################################################## # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-136 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-900-UE.in0000644000175000017500000000543311754474775020753 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase.in # override the beam energy cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 900.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## # ATLAS UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8994773 # ATLAS UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8918562 # ATLAS UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8894728 # ATLAS charged particles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8591806 # ALICE charged particles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2010_S8706239 # ALICE charged particles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2010_S8625980 # ALICE charged particles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2010_S8624100 # ALICE particle spectra insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2011_S8945144 # ALICE strange particle production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2011_S8909580 # CMS particle spectra insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8978280 # CMS charged particle multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8884919 # CMS charged particle pT and rapidity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2010_S8547297 # CMS UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9120041 # LHCB k_s0 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 LHCB_2010_S8758301 # CMS forward energy flow insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9215166 # CMS charged particle rapidity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_QCD_10_024 # LHC K0s/Lambda insert /Herwig/Analysis/RivetAnalysis:Analyses 0 LHCB_2011_I917009 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun LHC-900-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-91.in0000644000175000017500000000765111754474775021632 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 91.2 ################################################## # select the analyses ################################################## # Validated ################################################## # ALEPH charged particle multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_1991_S2435284 # ALEPH main LEP I QCD summary paper insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_1996_S3486095 # ALEPH photon analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_1996_S3196992 # ALEPH D* insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_1999_S4193598 # OPAL photon analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1993_S2692198 # OPAL charged hadron analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1994_S2927284 # OPAL Delta++ analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1995_S3198391 # OPAL J/Psi analysis analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1996_S3257789 # ALEPH eta/omega analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2002_S4823664 # OPAL K*0 analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1997_S3608263 # OPAL flavour specific charged multiplicities etc insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1998_S3780481 # OPAL f_0,f_2 and phi production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1998_S3702294 # OPAL gamma,pi0,eta,eta',rho+/-,a0+/- insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1998_S3749908 # OPAL K0 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2000_S4418603 # SLD flavour specific charged multiplicities etc insert /Herwig/Analysis/RivetAnalysis:Analyses 0 SLD_1996_S3398250 # SLD flavour specific charged multiplicities etc insert /Herwig/Analysis/RivetAnalysis:Analyses 0 SLD_1999_S3743934 # SLD flavour specific charged multiplicities etc insert /Herwig/Analysis/RivetAnalysis:Analyses 0 SLD_2004_S5693039 # OPAL event shapes and multiplicities at different energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2004_S6132243 # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # DELPHI strange baryon production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_1995_S3137023 # DELPHI f_0, rho_0 and f_2 production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_1999_S3960137 # OPAL strange baryon production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1997_S3396100 # DELPHI tuning paper insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_1996_S3430090 # DELPHI b quark insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2002_069_CONF_603 # ALEPH b quark insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2001_S4656318 # SLD b quark insert /Herwig/Analysis/RivetAnalysis:Analyses 0 SLD_2002_S4869273 # PDG hadron multiplicities and ratios insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES_RATIOS ################################################## # unvalidated ################################################## # OPAL 4 jet angles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2001_S4553896 # DELPHI 4 jet angles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2003_WUD_03_11 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-91 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/TVTBase-Powheg.in0000644000175000017500000000342011754474775022221 0ustar sylvestresylvestre################################################## # Example generator based on Tevatron parameters # usage: Herwig++ read TVT.in # # Since most parameters are identical to LHC, # we use the default LHCGenerator and adapt only # for the differences ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 ################################################## # Tevatron physics parameters (override defaults) ################################################## set LHCGenerator:EventHandler:BeamB /Herwig/Particles/pbar- ################################################## # Need to use an NLO PDF ################################################## set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO ################################################## # and strong coupling ################################################## create Herwig::O2AlphaS O2AlphaS set /Herwig/Model:QCD/RunningAlphaS O2AlphaS ################################################## # Setup the POWHEG shower ################################################## cd /Herwig/Shower set Evolver:IntrinsicPtGaussian 1.9*GeV set Evolver:HardEmissionMode POWHEG ################################################## # Create the Herwig analysis ################################################## cd /Herwig/Generators create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-I-Jets-1.in0000644000175000017500000000264511754474775022200 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 20. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # run I CDF di jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2001_S4517016 # run I CDF inclusive jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2001_S4563131 # run I CDF UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2004_S5839831 # run I CDF UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2001_S4751469 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-I-Jets-1 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-7.in0000644000175000017500000000304511754474775021346 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 300. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8924791 # ATLAS di-jet decorrelation insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8971293 # ATLAS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8817804 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082936 # ATLAS dijet with veto insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9126244 # CMS jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9086218 # CMS 3/2 jet cross section ratio insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9088458 # ATLAS track jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I919017 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-7 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-3.in0000644000175000017500000000330111754474775021335 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 40. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8924791 # ATLAS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8817804 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082936 # CMS event shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8957746 # ATLAS dijet with veto insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9126244 # CMS dijet decorrelation insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8950903 # CMS jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9086218 # CMS 3/2 jet cross section ratio insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9088458 # ATLAS track jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I919017 # CMS UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9120041 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-3 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-200.in0000644000175000017500000000177711754474775020456 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 200. ################################################## # select the analyses ################################################## # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 # DELPHI b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2000_S4328825 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-200 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-6.in0000644000175000017500000000320211754474775021340 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 200. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8924791 # ATLAS di-jet decorrelation insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8971293 # ATLAS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8817804 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082936 # ATLAS dijet with veto insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9126244 # CMS dijet decorrelation insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8950903 # CMS jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9086218 # CMS 3/2 jet cross section ratio insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9088458 # ATLAS track jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I919017 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-6 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEPBase.in0000644000175000017500000000242711754474775020743 0ustar sylvestresylvestre################################################## # base parameters for LEP analyses ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LEPGenerator:NumberOfEvents 100000000 set LEPGenerator:RandomNumberGenerator:Seed 31122001 set LEPGenerator:PrintEvent 10 set LEPGenerator:MaxErrors 10000 # no MPI set LEPGenerator:EventHandler:CascadeHandler:MPIHandler NULL ################################################## # Switch off ISR ################################################## set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis ################################################## # Use the q qbar matrix element ################################################## # default e+e- > q qbar (5 flavours d,u,s,c,b) insert /Herwig/MatrixElements/SimpleEE:MatrixElements 0 /Herwig/MatrixElements/MEee2gZ2qqherwig++-2.6.0.orig/Tests/Rivet/DIS-e--LowQ2.in0000644000175000017500000000171411754474775021406 0ustar sylvestresylvestre################################################## # Rivet analyses at HERA ################################################## read DISBase.in ################################################## # DIS parameters ################################################## cd /Herwig/Generators set /Herwig/EventHandlers/DISHandler:BeamB /Herwig/Particles/p+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxB 820.*GeV set /Herwig/EventHandlers/DISHandler:BeamA /Herwig/Particles/e- set /Herwig/EventHandlers/DISLuminosity:BeamEMaxA 26.7*GeV set /Herwig/Cuts/NeutralCurrentCut:MinW2 1000. set /Herwig/Cuts/NeutralCurrentCut:MaxW2 1000000. set /Herwig/Cuts/NeutralCurrentCut:MaxQ2 60. set /Herwig/Cuts/NeutralCurrentCut:MinQ2 2.5 set /Herwig/Cuts/DISCuts:MHatMin 0. # H1 energy flow analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 H1_1994_S2919893 #insert /Herwig/Analysis/RivetAnalysis:Analyses 0 H1_1995_S3167097 cd /Herwig/Generators saverun DIS-e--LowQ2 DISGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-9.in0000644000175000017500000000215711754474775021353 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 20. set /Herwig/Cuts/QCDCuts:MHatMin 90.*GeV # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8817804 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082936 # CMS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8968497 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-9 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-2360-UE.in0000644000175000017500000000336211754474775021034 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase.in # override the beam energy cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 2360.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## # ATLAS UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8918562 # ALICE charged particles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2010_S8625980 # ALICE charged particles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2010_S8624100 # CMS charged particle multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8884919 # CMS charged particle pT and rapidity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2010_S8547297 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun LHC-2360-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-WW.in0000644000175000017500000000214111754474775020462 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEPP2VV set MEPP2VV:Process WW set /Herwig/Particles/W+:Synchronized 0 set /Herwig/Particles/W-:Synchronized 0 do /Herwig/Particles/W+:SelectDecayModes /Herwig/Particles/W+/W+->nu_e,e+; do /Herwig/Particles/W-:SelectDecayModes /Herwig/Particles/W-/W-->nu_mubar,mu-; # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # general analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 MC_WWJETS ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-WW LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-197.in0000644000175000017500000000152411754474775021712 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 197. ################################################## # select the analyses ################################################## # OPAL event shapes and multiplicities at different energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2004_S6132243 ################################################### # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-197 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/SppS-200-UE.in0000644000175000017500000000432711754474775021224 0ustar sylvestresylvestre################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 set LHCGenerator:EventHandler:StatLevel Full # override the beam energy cd /Herwig/Generators set LHCGenerator:EventHandler:BeamB /Herwig/Particles/pbar- set LHCGenerator:EventHandler:LuminosityFunction:Energy 200.0 ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Analysis/RivetAnalysis:Debug No set /Herwig/Decays/DecayHandler:LifeTimeOption 0 set /Herwig/Decays/DecayHandler:MaxLifeTime 10*mm ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 UA5_1989_S1926373 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 UA5_1988_S1867512 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 UA1_1990_S2044935 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 UA5_1986_S1583476 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun SppS-200-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHCBase.in0000644000175000017500000000152411754474775020726 0ustar sylvestresylvestre################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:LuminosityFunction:Energy 7000.0 ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Analysis/RivetAnalysis:Debug No set /Herwig/Decays/DecayHandler:LifeTimeOption 0 set /Herwig/Decays/DecayHandler:MaxLifeTime 10*mm herwig++-2.6.0.orig/Tests/Rivet/LEP-136.in0000644000175000017500000000144611754474775020457 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 136. ################################################## # select the analyses ################################################## # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-136 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/SppS-546-UE.in0000644000175000017500000000412111754474775021231 0ustar sylvestresylvestre################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 set LHCGenerator:EventHandler:StatLevel Full # override the beam energy cd /Herwig/Generators set LHCGenerator:EventHandler:BeamB /Herwig/Particles/pbar- set LHCGenerator:EventHandler:LuminosityFunction:Energy 546.0 ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Analysis/RivetAnalysis:Debug No set /Herwig/Decays/DecayHandler:LifeTimeOption 0 set /Herwig/Decays/DecayHandler:MaxLifeTime 10*mm ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 UA5_1988_S1867512 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 UA5_1987_S1640666 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun SppS-546-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-UEBase.in0000644000175000017500000000052711754474775021306 0ustar sylvestresylvestreread TVTBase.in cd /Herwig/Generators set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Decays/DecayHandler:LifeTimeOption 0 set /Herwig/Decays/DecayHandler:MaxLifeTime 10*mm herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-I-W.in0000644000175000017500000000254411754474775021341 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan W insert SimpleQCD:MatrixElements[0] MEqq2W2ff set MEqq2W2ff:Process Electron # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF Run I W pT corrections and normalization are CRAP #insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1991_S2313472 # D0 Run I W pT corrections and normalization are CRAP #insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_1998_S3711838 # D0 Run I W pT insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2000_S4480767 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-I-W LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-Jets-2.in0000644000175000017500000000335711754474775022313 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 40. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2005_S6217184 # not ready # insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2009_S8057893 # CDF inclusive jet kt insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2007_S7057202 # CDF inclusive jet cone insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2006_S6450792 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S7828950 # run II UE analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_LEADINGJETS insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2010_S8591881_QCD # inclusive jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S7662670 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-Jets-2 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-35.in0000644000175000017500000000233511754474775021622 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 35. ################################################## # select the analyses ################################################## # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_1998_S3612880 # tasso event shapes at various low energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 TASSO_1990_S2148048 # PDG hadron multiplicities and ratios insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES_RATIOS ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-35 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Powheg-Run-II-W.in0000644000175000017500000000236211754474775022677 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] PowhegMEqq2W2ff set PowhegMEqq2W2ff:Process Electron # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # D0 Run II charge asymmetry insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S7837160 # CDF Run II W+jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S7541902 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Powheg-Run-II-W LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Heavy-5.in0000644000175000017500000000212111754474775021505 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements cp MEHeavyQuark MEBottom set MEBottom:QuarkType Bottom cp MEHeavyQuark MECharm set MECharm:QuarkType Charm insert SimpleQCD:MatrixElements[0] MEBottom insert SimpleQCD:MatrixElements[0] MECharm set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 110. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CMS displaced vertex insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8973270 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Heavy-5 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-189.in0000644000175000017500000000217511754474775021716 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 189. ################################################## # select the analyses ################################################## # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 # DELPHI b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2000_S4328825 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-189 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-192.in0000644000175000017500000000161511754474775020457 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 192. ################################################## # select the analyses ################################################## # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 # DELPHI b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2000_S4328825 ################################################### # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-192 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-14.in0000644000175000017500000000153511754474775020371 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 14. set /Herwig/Cuts/EECuts:MHatMin 13.*GeV ################################################## # select the analyses ################################################## # tasso event shapes at various low energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 TASSO_1990_S2148048 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-14 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/DIS-Powheg-e+-HighQ2.in0000644000175000017500000000163411754474775022752 0ustar sylvestresylvestre################################################## # Rivet analyses at HERA ################################################## read DISBase-Powheg.in ################################################## # DIS parameters ################################################## cd /Herwig/Generators set /Herwig/EventHandlers/DISHandler:BeamB /Herwig/Particles/p+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxB 820.*GeV set /Herwig/EventHandlers/DISHandler:BeamA /Herwig/Particles/e+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxA 27.5*GeV set /Herwig/Cuts/NeutralCurrentCut:MinW2 1000. set /Herwig/Cuts/NeutralCurrentCut:MaxW2 1000000. set /Herwig/Cuts/NeutralCurrentCut:MaxQ2 1000000. set /Herwig/Cuts/NeutralCurrentCut:MinQ2 40. set /Herwig/Cuts/DISCuts:MHatMin 0. # H1 energy flow analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 H1_2000_S4129130 cd /Herwig/Generators saverun DIS-Powheg-e+-HighQ2 DISGenerator herwig++-2.6.0.orig/Tests/Rivet/BFactory-Upsilon.in0000644000175000017500000000252211754474775022664 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in create ThePEG::LuminosityFunction BFactoryLuminosity set BFactoryLuminosity:BeamEMaxA 4.73*GeV set BFactoryLuminosity:BeamEMaxB 4.73*GeV set /Herwig/Cuts/EECuts:MHatMin 9.45 set /Herwig/EventHandlers/LEPHandler:LuminosityFunction BFactoryLuminosity ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/MatrixElements create Herwig::MEee2VectorMeson MEUpsilon HwMELepton.so set MEUpsilon:VectorMeson /Herwig/Particles/Upsilon set MEUpsilon:Coupling 0.0004151809 set SimpleEE:MatrixElements 0 MEUpsilon insert /Herwig/NewPhysics/DecayHandler:Excluded 0 /Herwig/Particles/Upsilon cd /Herwig/Generators ################################################## # select the analyses ################################################## # BELLE charm hadron production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ARGUS_1993_S2789213 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ARGUS_1993_S2669951 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun BFactory-Upsilon LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/BFactory-Powheg-10.52-sym.in0000644000175000017500000000233711754474775023741 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in create ThePEG::LuminosityFunction BFactoryLuminosity set BFactoryLuminosity:BeamEMaxA 5.26*GeV set BFactoryLuminosity:BeamEMaxB 5.26*GeV set /Herwig/Cuts/EECuts:MHatMin 10.50 set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/EventHandlers/LEPHandler:LuminosityFunction BFactoryLuminosity ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set /Herwig/MatrixElements/PowhegMEee2gZ2qq:MinimumFlavour 1 set /Herwig/MatrixElements/PowhegMEee2gZ2qq:MaximumFlavour 4 ################################################## # select the analyses ################################################## # BELLE charm hadron production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CLEO_2004_S5809304 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun BFactory-Powheg-10.52-sym LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Heavy-3.in0000644000175000017500000000240711754474775021512 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements cp MEHeavyQuark MEBottom set MEBottom:QuarkType Bottom cp MEHeavyQuark MECharm set MECharm:QuarkType Charm insert SimpleQCD:MatrixElements[0] MEBottom insert SimpleQCD:MatrixElements[0] MECharm set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 50. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS inclusive lepton insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I926145 # CMS inclusive lepton insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8941262 # CMS displaced vertex insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8973270 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Heavy-3 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-22.in0000644000175000017500000000172111754474775021614 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 22. set /Herwig/Cuts/EECuts:MHatMin 21*GeV ################################################## # select the analyses ################################################## # JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_1998_S3612880 # tasso event shapes at various low energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 TASSO_1990_S2148048 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-22 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-133.in0000644000175000017500000000223011754474775021673 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 133. ################################################## # select the analyses ################################################## # OPAL event shapes and multiplicities at different energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2004_S6132243 # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-133 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-161.in0000644000175000017500000000202711754474775021700 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 161. ################################################## # select the analyses ################################################## # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-161 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-206.in0000644000175000017500000000201511754474775021675 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 206. ################################################## # select the analyses ################################################## # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 # DELPHI b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2000_S4328825 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-206 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-Jets-9.in0000644000175000017500000000257111754474775022317 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 30. set /Herwig/Cuts/QCDCuts:MHatMin 300.*GeV # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # D0 dijet invariant mass insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2010_S8566488 # D0 dijet angles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2009_S8320160 # CDF dijet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S8093652 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-Jets-9 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/ISR-44-UE.in0000644000175000017500000000371711754474775020724 0ustar sylvestresylvestre################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 set LHCGenerator:EventHandler:StatLevel Full # override the beam energy cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 44.4 ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Analysis/RivetAnalysis:Debug No set /Herwig/Decays/DecayHandler:LifeTimeOption 0 set /Herwig/Decays/DecayHandler:MaxLifeTime 10*mm ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 SFM_1984_S1178091 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun ISR-44-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-Z-e.in0000644000175000017500000000217511754474775020567 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEqq2gZ2ff set MEqq2gZ2ff:Process Electron # No QED radiation #erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # General analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 MC_ZJETS # ATLAS pT insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9131140 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-Z-e LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/DISBase-Powheg.in0000644000175000017500000000274211754474775022171 0ustar sylvestresylvestre################################################## # Example generator based on DIS parameters # usage: Herwig++ read DIS.in ################################################## set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF ################################################## # Need to use an NLO PDF ################################################## set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO ################################################## # Setup the POWHEG shower ################################################## cd /Herwig/Shower set Evolver:IntrinsicPtGaussian 1.9*GeV set Evolver:HardEmissionMode POWHEG ################################################## # and strong coupling ################################################## create Herwig::O2AlphaS O2AlphaS set /Herwig/Model:QCD/RunningAlphaS O2AlphaS cd /Herwig/MatrixElements/ # Neutral current DIS insert SimpleDIS:MatrixElements[0] /Herwig/MatrixElements/PowhegMEDISNC cd /Herwig/Generators set DISGenerator:NumberOfEvents 10000000 set DISGenerator:RandomNumberGenerator:Seed 31122001 set DISGenerator:DebugLevel 0 set DISGenerator:PrintEvent 10 set DISGenerator:MaxErrors 1000000 set /Herwig/Shower/ShowerHandler:MPIHandler NULL cd /Herwig/Generators create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert DISGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis herwig++-2.6.0.orig/Tests/Rivet/LHC-Powheg-Z-mu.in0000644000175000017500000000210611754474775022205 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] PowhegMEqq2gZ2ff set PowhegMEqq2gZ2ff:Process Muon # No QED radiation #erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS pT insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9131140 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-Powheg-Z-mu LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/BFactory-Tau.in0000644000175000017500000000246711754474775021774 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in erase /Herwig/EventHandlers/LEPHandler:PostSubProcessHandlers 0 create ThePEG::LuminosityFunction BFactoryLuminosity set BFactoryLuminosity:BeamEMaxA 3.5*GeV set BFactoryLuminosity:BeamEMaxB 8.*GeV set /Herwig/Cuts/EECuts:MHatMin 10.58299 set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/EventHandlers/LEPHandler:LuminosityFunction BFactoryLuminosity ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/MatrixElements set /Herwig/MatrixElements/SimpleEE:MatrixElements 0 /Herwig/MatrixElements/MEee2gZ2ll set /Herwig/MatrixElements/MEee2gZ2ll:Allowed Tau cd /Herwig/Generators ################################################## # select the analyses ################################################## # BELLE charm hadron production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 BABAR_2007_S7266081 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun BFactory-Tau LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHCBase-Powheg.in0000644000175000017500000000317211754474775022156 0ustar sylvestresylvestre################################################## # Example generator based on Tevatron parameters # usage: Herwig++ read TVT.in # # Since most parameters are identical to LHC, # we use the default LHCGenerator and adapt only # for the differences ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 set LHCGenerator:EventHandler:LuminosityFunction:Energy 7000.0 ################################################## # Need to use an NLO PDF ################################################## set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO ################################################## # and strong coupling ################################################## create Herwig::O2AlphaS O2AlphaS set /Herwig/Model:QCD/RunningAlphaS O2AlphaS ################################################## # Setup the POWHEG shower ################################################## cd /Herwig/Shower set Evolver:HardEmissionMode POWHEG set Evolver:IntrinsicPtGaussian 2.2*GeV ################################################## # Create the Herwig analysis ################################################## cd /Herwig/Generators create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis herwig++-2.6.0.orig/Tests/Rivet/BFactory-Powheg-10.54.in0000644000175000017500000000243711754474775023136 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in create ThePEG::LuminosityFunction BFactoryLuminosity set BFactoryLuminosity:BeamEMaxA 3.5*GeV set BFactoryLuminosity:BeamEMaxB 7.94*GeV set /Herwig/Cuts/EECuts:MHatMin 9.99 set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/EventHandlers/LEPHandler:LuminosityFunction BFactoryLuminosity ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set /Herwig/MatrixElements/PowhegMEee2gZ2qq:MinimumFlavour 1 set /Herwig/MatrixElements/PowhegMEee2gZ2qq:MaximumFlavour 4 ################################################## # select the analyses ################################################## # BELLE charm hadron production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 BABAR_2005_S6181155 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 BABAR_2007_S6895344 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun BFactory-Powheg-10.54 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-177.in0000644000175000017500000000203011754474775021701 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 177. ################################################## # select the analyses ################################################## # OPAL event shapes and multiplicities at different energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2004_S6132243 # PDG hadron multiplicities and ratios insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES_RATIOS ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-177 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-900-UE-Long.in0000644000175000017500000000272311754474775021647 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase.in # override the beam energy cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 900.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 # longer lifetime cut so K0s and Lambda unstable set /Herwig/Decays/DecayHandler:MaxLifeTime 100*mm ################################################## # select the analyses ################################################## # ATLAS K0s and Lambda insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I944826 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun LHC-900-UE-Long LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-196.in0000644000175000017500000000203511754474775021707 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 196. ################################################## # select the analyses ################################################## # OPAL event shapes and multiplicities at different energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 # DELPHI b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2000_S4328825 ################################################### # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-196 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Powheg-Run-I-WZ.in0000644000175000017500000000240311754474775022714 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan W insert SimpleQCD:MatrixElements[0] PowhegMEqq2W2ff set PowhegMEqq2W2ff:Process Electron # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] PowhegMEqq2gZ2ff set PowhegMEqq2gZ2ff:Process Electron # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # D0 Run I W/Z pT corrections insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2001_S4674421 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Powheg-Run-I-WZ LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-I-Jets-8.in0000644000175000017500000000245311754474775022204 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 30. set /Herwig/Cuts/QCDCuts:MHatMin 700.*GeV # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # run I CDF di jet angles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1996_S3418421 # run I CDF di jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2000_S4266730 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-I-Jets-8 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-Jets-4.in0000644000175000017500000000351111754474775022305 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 85. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2005_S6217184 # not ready # insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2009_S8057893 # CDF inclusive jet kt insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2007_S7057202 # CDF inclusive jet cone insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2006_S6450792 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S7828950 # run II UE analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_LEADINGJETS insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2010_S8591881_QCD # dijet decorrelations insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2004_S5992206 # inclusive jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S7662670 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-Jets-4 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/SppS-63-UE.in0000644000175000017500000000401411754474775021144 0ustar sylvestresylvestre################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 set LHCGenerator:EventHandler:StatLevel Full # override the beam energy cd /Herwig/Generators set LHCGenerator:EventHandler:BeamB /Herwig/Particles/pbar- set LHCGenerator:EventHandler:LuminosityFunction:Energy 63.0 ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Analysis/RivetAnalysis:Debug No set /Herwig/Decays/DecayHandler:LifeTimeOption 0 set /Herwig/Decays/DecayHandler:MaxLifeTime 10*mm ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 UA1_1990_S2044935 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun SppS-63-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-8.in0000644000175000017500000000271511754474775021352 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 500. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS di-jet decorrelation insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8971293 # ATLAS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8817804 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082936 # ATLAS dijet with veto insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9126244 # CMS jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9086218 # CMS 3/2 jet cross section ratio insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9088458 # ATLAS track jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I919017 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-8 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/SppS-53-UE.in0000644000175000017500000000401311754474775021142 0ustar sylvestresylvestre################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 set LHCGenerator:EventHandler:StatLevel Full # override the beam energy cd /Herwig/Generators set LHCGenerator:EventHandler:BeamB /Herwig/Particles/pbar- set LHCGenerator:EventHandler:LuminosityFunction:Energy 53.0 ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Analysis/RivetAnalysis:Debug No set /Herwig/Decays/DecayHandler:LifeTimeOption 0 set /Herwig/Decays/DecayHandler:MaxLifeTime 10*mm ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 UA5_1982_S875503 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun SppS-53-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/DIS-NoME-e+-HighQ2.in0000644000175000017500000000163011754474775022313 0ustar sylvestresylvestre################################################## # Rivet analyses at HERA ################################################## read DISBase-NoME.in ################################################## # DIS parameters ################################################## cd /Herwig/Generators set /Herwig/EventHandlers/DISHandler:BeamB /Herwig/Particles/p+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxB 820.*GeV set /Herwig/EventHandlers/DISHandler:BeamA /Herwig/Particles/e+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxA 27.5*GeV set /Herwig/Cuts/NeutralCurrentCut:MinW2 1000. set /Herwig/Cuts/NeutralCurrentCut:MaxW2 1000000. set /Herwig/Cuts/NeutralCurrentCut:MaxQ2 1000000. set /Herwig/Cuts/NeutralCurrentCut:MinQ2 40. set /Herwig/Cuts/DISCuts:MHatMin 0. # H1 energy flow analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 H1_2000_S4129130 cd /Herwig/Generators saverun DIS-NoME-e+-HighQ2 DISGenerator herwig++-2.6.0.orig/Tests/Rivet/DIS-e+-LowQ2.in0000644000175000017500000000161011754474775021377 0ustar sylvestresylvestre################################################## # Rivet analyses at HERA ################################################## read DISBase.in ################################################## # DIS parameters ################################################## cd /Herwig/Generators set /Herwig/EventHandlers/DISHandler:BeamB /Herwig/Particles/p+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxB 820.*GeV set /Herwig/EventHandlers/DISHandler:BeamA /Herwig/Particles/e+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxA 27.5*GeV set /Herwig/Cuts/NeutralCurrentCut:MinW2 1000. set /Herwig/Cuts/NeutralCurrentCut:MaxW2 1000000. set /Herwig/Cuts/NeutralCurrentCut:MaxQ2 60. set /Herwig/Cuts/NeutralCurrentCut:MinQ2 2.5 set /Herwig/Cuts/DISCuts:MHatMin 0. # H1 energy flow analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 H1_2000_S4129130 cd /Herwig/Generators saverun DIS-e+-LowQ2 DISGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-Powheg-W-e.in0000644000175000017500000000217011754474775022006 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase-Powheg.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] PowhegMEqq2W2ff set PowhegMEqq2W2ff:Process Electron # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # general analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 MC_WJETS insert /Herwig/Analysis/RivetAnalysis:Analyses 0 MC_WPOL # ATLAS W+jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8919674 # ATLAS W pT insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I925932 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-Powheg-W-e LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-W-e.in0000644000175000017500000000213511754474775020560 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEqq2W2ff set MEqq2W2ff:Process Electron # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # general analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 MC_WJETS insert /Herwig/Analysis/RivetAnalysis:Analyses 0 MC_WPOL # ATLAS W+jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8919674 # ATLAS W pT insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I925932 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-W-e LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/DISBase-NoME.in0000644000175000017500000000151411754474775021532 0ustar sylvestresylvestre################################################## # Example generator based on DIS parameters # usage: Herwig++ read DIS.in ################################################## set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF cd /Herwig/MatrixElements/ # Neutral current DIS insert SimpleDIS:MatrixElements[0] MEDISNC cd /Herwig/Generators set DISGenerator:NumberOfEvents 10000000 set DISGenerator:RandomNumberGenerator:Seed 31122001 set DISGenerator:DebugLevel 0 set DISGenerator:PrintEvent 10 set DISGenerator:MaxErrors 1000000 set /Herwig/Shower/ShowerHandler:MPIHandler NULL set /Herwig/Shower/Evolver:MECorrMode 0 cd /Herwig/Generators create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert DISGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis herwig++-2.6.0.orig/Tests/Rivet/TVTBase.in0000644000175000017500000000226311754474775020776 0ustar sylvestresylvestre################################################## # Example generator based on Tevatron parameters # usage: Herwig++ read TVT.in # # Since most parameters are identical to LHC, # we use the default LHCGenerator and adapt only # for the differences ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 set LHCGenerator:EventHandler:StatLevel Full ################################################## # Tevatron physics parameters (override defaults) ################################################## set LHCGenerator:EventHandler:BeamB /Herwig/Particles/pbar- ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Analysis/RivetAnalysis:Debug No herwig++-2.6.0.orig/Tests/Rivet/BFactory-Powheg-10.58.in0000644000175000017500000000322111754474775023132 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in create ThePEG::LuminosityFunction BFactoryLuminosity set BFactoryLuminosity:BeamEMaxA 3.5*GeV set BFactoryLuminosity:BeamEMaxB 8.*GeV set /Herwig/Cuts/EECuts:MHatMin 10.58299 #set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF #set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/EventHandlers/LEPHandler:LuminosityFunction BFactoryLuminosity ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/MatrixElements set /Herwig/MatrixElements/PowhegMEee2gZ2qq:MinimumFlavour 1 set /Herwig/MatrixElements/PowhegMEee2gZ2qq:MaximumFlavour 4 create Herwig::MEee2VectorMeson MEUpsilon HwMELepton.so set MEUpsilon:VectorMeson /Herwig/Particles/Upsilon(4S) set MEUpsilon:Coupling 0.0004151809 insert SimpleEE:MatrixElements 0 MEUpsilon insert /Herwig/NewPhysics/DecayHandler:Excluded 0 /Herwig/Particles/Upsilon(4S) cd /Herwig/Generators ################################################## # select the analyses ################################################## # BELLE charm hadron production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 BELLE_2006_S6265367 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 BABAR_2005_S6181155 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 BABAR_2007_S6895344 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun BFactory-Powheg-10.58 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-UE.in0000644000175000017500000000532111754474775020605 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## # ATLAS jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8924791 # ATLAS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8817804 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082936 # ATLAS UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8994773 # ATLAS UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8894728 # ATLAS fragmentation function insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_CONF_2010_049 # ATLAS UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8918562 # ALICE charged particles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2010_S8625980 # CMS particle spectra insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8978280 # CMS charged particle multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8884919 # CMS charged particle pT and rapidity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2010_S8656010 # CMS UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9120041 # ATLAS track jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I919017 # LHCB phi production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 LHCB_2011_I919315 # ATLAS rap gap insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1084540 # CMS forward energy flow insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9215166 # CMS charged particle rapidity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_QCD_10_024 # LHC K0s/Lambda insert /Herwig/Analysis/RivetAnalysis:Analyses 0 LHCB_2011_I917009 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun LHC-7-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-Powheg-W-mu.in0000644000175000017500000000223211754474775022202 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase-Powheg.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] PowhegMEqq2W2ff set PowhegMEqq2W2ff:Process Muon # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS W asymetry insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9002537 # ATLAS W+jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8919674 # ATLAS W pT insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I925932 # ATLAS W+jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1083318 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-Powheg-W-mu LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/Star-Jets-3.in0000644000175000017500000000142711754474775021503 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read StarBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/Cuts/JetKtCut:MinKT 20. ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 STAR_2006_S6870392 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun Star-Jets-3 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-189.in0000644000175000017500000000215711754474775020467 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 189. ################################################## # select the analyses ################################################## # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 # DELPHI b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2000_S4328825 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-189 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Powheg-Run-I-W.in0000644000175000017500000000257511754474775022574 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan W insert SimpleQCD:MatrixElements[0] PowhegMEqq2W2ff set PowhegMEqq2W2ff:Process Electron # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF Run I W pT corrections and normalization are CRAP #insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1991_S2313472 # D0 Run I W pT corrections and normalization are CRAP #insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_1998_S3711838 # D0 Run I W pT insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2000_S4480767 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Powheg-Run-I-W LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-I-Jets-7.in0000644000175000017500000000245311754474775022203 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 30. set /Herwig/Cuts/QCDCuts:MHatMin 400.*GeV # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # run I CDF di jet angles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1996_S3418421 # run I CDF di jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2000_S4266730 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-I-Jets-7 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-PromptPhoton.in0000644000175000017500000000253211754474775023712 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEGammaJet # photon cuts set /Herwig/Cuts/PhotonKtCut:MinKT 15. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF Run II prompt photon insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2009_S8436959 # DO Run II prompt photon insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2006_S6438750 # DO Run II prompt photon insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S7719523 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-PromptPhoton LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Powheg-Run-II-Z-e.in0000644000175000017500000000352711754474775023130 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] PowhegMEqq2gZ2ff set PowhegMEqq2gZ2ff:Process Electron # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF Run II Z+jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S7540469 # CDF Z+b jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S8095620 # CDF Run II Z cross section and rapidity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2009_S8383952 # D0 Run II Z cross section and rapidity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2007_S7075677 # D0 Run II jet ratios insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S6879055 # D0 Run II insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S7554427 # D0 Run II insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2009_S8202443 # D0 run II insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2010_S8821313 # D0 run II UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2010_S8591881_DY ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Powheg-Run-II-Z-e LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-10.in0000644000175000017500000000216111754474775021416 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 20. set /Herwig/Cuts/QCDCuts:MHatMin 200.*GeV # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8817804 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082936 # CMS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8968497 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-10 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-DiPhoton.in0000644000175000017500000000175211754474775022024 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # diphoton insert SimpleQCD:MatrixElements[0] MEGammaGamma # photon cuts set /Herwig/Cuts/PhotonKtCut:MinKT 5. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS diphoton insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9120807 # MC diphoton insert /Herwig/Analysis/RivetAnalysis:Analyses 0 MC_DIPHOTON ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-DiPhoton LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-I-WZ.in0000644000175000017500000000232211754474775021465 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan W insert SimpleQCD:MatrixElements[0] MEqq2W2ff set MEqq2W2ff:Process Electron # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEqq2gZ2ff set MEqq2gZ2ff:Process Electron # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # D0 Run I W/Z pT insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2001_S4674421 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-I-WZ LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/BFactory-Powheg-10.52.in0000644000175000017500000000233211754474775023126 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in create ThePEG::LuminosityFunction BFactoryLuminosity set BFactoryLuminosity:BeamEMaxA 3.5*GeV set BFactoryLuminosity:BeamEMaxB 7.91*GeV set /Herwig/Cuts/EECuts:MHatMin 9.99 set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/EventHandlers/LEPHandler:LuminosityFunction BFactoryLuminosity ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set /Herwig/MatrixElements/PowhegMEee2gZ2qq:MinimumFlavour 1 set /Herwig/MatrixElements/PowhegMEee2gZ2qq:MaximumFlavour 4 ################################################## # select the analyses ################################################## # BELLE charm hadron production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 BELLE_2006_S6265367 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun BFactory-Powheg-10.52 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-I-PromptPhoton.in0000644000175000017500000000224011754474775023575 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEGammaJet # photon cuts set /Herwig/Cuts/PhotonKtCut:MinKT 15. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF Run I prompt photon insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1993_S2742446 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-I-PromptPhoton LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-PromptPhoton.in0000644000175000017500000000216311754474775022746 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEGammaJet # photon cuts set /Herwig/Cuts/PhotonKtCut:MinKT 5. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS prompt photon insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8914702 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1093738 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 MC_PHOTONJETS insert /Herwig/Analysis/RivetAnalysis:Analyses 0 MC_PHOTONJETUE ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-PromptPhoton LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-12.in0000644000175000017500000000216211754474775021421 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 20. set /Herwig/Cuts/QCDCuts:MHatMin 1000.*GeV # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8817804 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082936 # CMS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8968497 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-12 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/ISR-53-UE.in0000644000175000017500000000402111754474775020711 0ustar sylvestresylvestre################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 set LHCGenerator:EventHandler:StatLevel Full # override the beam energy cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 53.0 ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Analysis/RivetAnalysis:Debug No set /Herwig/Decays/DecayHandler:LifeTimeOption 0 set /Herwig/Decays/DecayHandler:MaxLifeTime 10*mm ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 UA5_1982_S875503 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 SFM_1984_S1178091 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun ISR-53-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-Powheg-WW.in0000644000175000017500000000217311754474775021716 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase-Powheg.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] PowhegMEPP2VV set PowhegMEPP2VV:Process WW set /Herwig/Particles/W+:Synchronized 0 set /Herwig/Particles/W-:Synchronized 0 do /Herwig/Particles/W+:SelectDecayModes /Herwig/Particles/W+/W+->nu_e,e+; do /Herwig/Particles/W-:SelectDecayModes /Herwig/Particles/W-/W-->nu_mubar,mu-; # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # general analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 MC_WWJETS ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-Powheg-WW LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/Star-UE.in0000644000175000017500000000265711754474775020755 0ustar sylvestresylvestre# read the base file read StarBase.in ################################################## # Use the MinBias matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 STAR_2006_S6500200 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 STAR_2006_S6860818 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 STAR_2006_S6870392 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 STAR_2008_S7869363 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 STAR_2009_UE_HELEN # this one is d-Au, supposed to be pp like but omit #insert /Herwig/Analysis/RivetAnalysis:Analyses 0 STAR_2008_S7993412 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun Star-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Heavy-4.in0000644000175000017500000000212011754474775021503 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements cp MEHeavyQuark MEBottom set MEBottom:QuarkType Bottom cp MEHeavyQuark MECharm set MECharm:QuarkType Charm insert SimpleQCD:MatrixElements[0] MEBottom insert SimpleQCD:MatrixElements[0] MECharm set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 80. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CMS displaced vertex insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8973270 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Heavy-4 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-ZZ.in0000644000175000017500000000172211754474775020474 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # ZZ insert SimpleQCD:MatrixElements[0] MEPP2VV set MEPP2VV:Process ZZ do /Herwig/Particles/Z0:SelectDecayModes /Herwig/Particles/Z0/Z0->e-,e+; /Herwig/Particles/Z0/Z0->mu-,mu+; # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # general analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 MC_ZZJETS ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-ZZ LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-130.in0000644000175000017500000000144611754474775020451 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 130. ################################################## # select the analyses ################################################## # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-130 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-130.in0000644000175000017500000000223011754474775021670 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 130. ################################################## # select the analyses ################################################## # OPAL event shapes and multiplicities at different energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2004_S6132243 # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-130 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-UE-Long.in0000644000175000017500000000254111754474775021503 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 # longer lifetime cut so K0s and Lambda unstable set /Herwig/Decays/DecayHandler:MaxLifeTime 100*mm ################################################## # select the analyses ################################################## # ATLAS K0s and Lambda insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I944826 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun LHC-7-UE-Long LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-Z-e.in0000644000175000017500000000335011754474775021673 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEqq2gZ2ff set MEqq2gZ2ff:Process Electron # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF Run II Z+jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S7540469 # CDF Z+b jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S8095620 # CDF Run II Z cross section and rapidity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2009_S8383952 # D0 Run II Z cross section and rapidity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2007_S7075677 # D0 Run II jet ratios insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S6879055 # D0 Run II insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S7554427 # D0 Run II insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2009_S8202443 # D0 run II insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2010_S8821313 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-Z-e LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/BFactory-Powheg-10.45.in0000644000175000017500000000243211754474775023131 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in create ThePEG::LuminosityFunction BFactoryLuminosity set BFactoryLuminosity:BeamEMaxA 5.225 set BFactoryLuminosity:BeamEMaxB 5.225 set /Herwig/Cuts/EECuts:MHatMin 9.99 set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/EventHandlers/LEPHandler:LuminosityFunction BFactoryLuminosity ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set /Herwig/MatrixElements/PowhegMEee2gZ2qq:MinimumFlavour 1 set /Herwig/MatrixElements/PowhegMEee2gZ2qq:MaximumFlavour 4 ################################################## # select the analyses ################################################## # BELLE charm hadron production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ARGUS_1993_S2789213 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ARGUS_1993_S2669951 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun BFactory-Powheg-10.45 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/StarBase.in0000644000175000017500000000313111754474775021225 0ustar sylvestresylvestre################################################## # Example generator based on Tevatron parameters # usage: Herwig++ read TVT.in # # Since most parameters are identical to LHC, # we use the default LHCGenerator and adapt only # for the differences ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 set LHCGenerator:EventHandler:StatLevel Full ################################################## # Tevatron physics parameters (override defaults) ################################################## set LHCGenerator:EventHandler:BeamB /Herwig/Particles/p+ set LHCGenerator:EventHandler:LuminosityFunction:Energy 200.0 ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Analysis/RivetAnalysis:Debug No cd /Herwig/Generators set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Decays/DecayHandler:LifeTimeOption 0 set /Herwig/Decays/DecayHandler:MaxLifeTime 10*mm set /Herwig/Cuts/QCDCuts:X2Min 0.01 herwig++-2.6.0.orig/Tests/Rivet/LEP-22.in0000644000175000017500000000170211754474775020364 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 22. set /Herwig/Cuts/EECuts:MHatMin 21*GeV ################################################## # select the analyses ################################################## # JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_1998_S3612880 # tasso event shapes at various low energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 TASSO_1990_S2148048 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-22 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-Z-mu.in0000644000175000017500000000206511754474775020762 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEqq2gZ2ff set MEqq2gZ2ff:Process Muon # No QED radiation #erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # General analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9131140 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-Z-mu LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-All-2.in0000644000175000017500000000173311754474775022051 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set MEQCD2to2:MaximumFlavour 5 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 40. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082009 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-All-2 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-UE.in0000644000175000017500000000321211754474775021546 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVT-UEBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## # run II UE analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_LEADINGJETS insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2010_S8591881_QCD # run II charged multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2009_NOTE_9936 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2009_S8233977 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun TVT-Run-II-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-91.in0000644000175000017500000000763311754474775020403 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 91.2 ################################################## # select the analyses ################################################## # Validated ################################################## # ALEPH charged particle multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_1991_S2435284 # ALEPH main LEP I QCD summary paper insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_1996_S3486095 # ALEPH photon analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_1996_S3196992 # ALEPH D* insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_1999_S4193598 # OPAL photon analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1993_S2692198 # OPAL charged hadron analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1994_S2927284 # OPAL Delta++ analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1995_S3198391 # OPAL J/Psi analysis analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1996_S3257789 # ALEPH eta/omega analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2002_S4823664 # OPAL K*0 analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1997_S3608263 # OPAL flavour specific charged multiplicities etc insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1998_S3780481 # OPAL f_0,f_2 and phi production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1998_S3702294 # OPAL gamma,pi0,eta,eta',rho+/-,a0+/- insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1998_S3749908 # OPAL K0 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2000_S4418603 # SLD flavour specific charged multiplicities etc insert /Herwig/Analysis/RivetAnalysis:Analyses 0 SLD_1996_S3398250 # SLD flavour specific charged multiplicities etc insert /Herwig/Analysis/RivetAnalysis:Analyses 0 SLD_1999_S3743934 # SLD flavour specific charged multiplicities etc insert /Herwig/Analysis/RivetAnalysis:Analyses 0 SLD_2004_S5693039 # OPAL event shapes and multiplicities at different energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2004_S6132243 # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # DELPHI strange baryon production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_1995_S3137023 # DELPHI f_0, rho_0 and f_2 production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_1999_S3960137 # OPAL strange baryon production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_1997_S3396100 # DELPHI tuning paper insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_1996_S3430090 # DELPHI b quark insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2002_069_CONF_603 # ALEPH b quark insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2001_S4656318 # SLD b quark insert /Herwig/Analysis/RivetAnalysis:Analyses 0 SLD_2002_S4869273 # PDG hadron multiplicities and ratios insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES_RATIOS ################################################## # unvalidated ################################################## # OPAL 4 jet angles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2001_S4553896 # DELPHI 4 jet angles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2003_WUD_03_11 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-91 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/BFactory-10.58.in0000644000175000017500000000327411754474775021713 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in create ThePEG::LuminosityFunction BFactoryLuminosity set BFactoryLuminosity:BeamEMaxA 3.5*GeV set BFactoryLuminosity:BeamEMaxB 8.*GeV set /Herwig/Cuts/EECuts:MHatMin 10.58299 #set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF #set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/EventHandlers/LEPHandler:LuminosityFunction BFactoryLuminosity ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/MatrixElements set /Herwig/MatrixElements/MEee2gZ2qq:MinimumFlavour 1 set /Herwig/MatrixElements/MEee2gZ2qq:MaximumFlavour 4 create Herwig::MEee2VectorMeson MEUpsilon HwMELepton.so set MEUpsilon:VectorMeson /Herwig/Particles/Upsilon(4S) set MEUpsilon:Coupling 0.0004151809 insert SimpleEE:MatrixElements 0 MEUpsilon insert /Herwig/NewPhysics/DecayHandler:Excluded 0 /Herwig/Particles/Upsilon(4S) cd /Herwig/Generators ################################################## # select the analyses ################################################## # BELLE charm hadron production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 BELLE_2006_S6265367 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 BELLE_2001_S4598261 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 BABAR_2005_S6181155 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 BABAR_2007_S6895344 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun BFactory-10.58 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-197.in0000644000175000017500000000150611754474775020463 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 197. ################################################## # select the analyses ################################################## # OPAL event shapes and multiplicities at different energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2004_S6132243 ################################################### # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-197 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-Z-mu.in0000644000175000017500000000326211754474775022072 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEqq2gZ2ff set MEqq2gZ2ff:Process Muon # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # D0 run II Z pT insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2010_S8671338 # CDF Z+b jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S8095620 # CDF Z+b jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2006_S6653332 # CDF underlying event insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_NOTE_9351 # D0 Run II insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2009_S8349509 # D0 Run II insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S7863608 # D0 run II insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2010_S8821313 # D0 run II UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2010_S8591881_DY ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-Z-mu LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-630-Jets-3.in0000644000175000017500000000223611754474775021554 0ustar sylvestresylvestre#################################################### # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 630.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 75. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # run I CDF UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2004_S5839831 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-630-Jets-3 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-Jets-8.in0000644000175000017500000000257111754474775022316 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 30. set /Herwig/Cuts/QCDCuts:MHatMin 100.*GeV # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # D0 dijet invariant mass insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2010_S8566488 # D0 dijet angles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2009_S8320160 # CDF dijet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S8093652 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-Jets-8 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-W-mu.in0000644000175000017500000000220111754474775020747 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEqq2W2ff set MEqq2W2ff:Process Muon # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS W asymetry insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9002537 # ATLAS W+jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8919674 # ATLAS W pT insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I925932 # ATLAS W+jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1083318 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-W-mu LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-I-Jets-4.in0000644000175000017500000000314011754474775022172 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 90. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # run I CDF large total ET insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1998_S3618439 # run I CDF di jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2001_S4517016 # run I CDF inclusive jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2001_S4563131 # run I CDF UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2004_S5839831 # run I coherence insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1994_S2952106 # run I D0 3 and 4 jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_1996_S3214044 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-I-Jets-4 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-I-Jets-5.in0000644000175000017500000000326611754474775022204 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 160. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # run I CDF multijet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1996_S3108457 # run I CDF multijet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1996_S3349578 # run I CDF 6 jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1997_S3541940 # run I CDF large total ET insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1998_S3618439 # run I CDF di jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2001_S4517016 # run I CDF inclusive jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2001_S4563131 # run I CDF UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2004_S5839831 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-I-Jets-5 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/Star-Jets-4.in0000644000175000017500000000142711754474775021504 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read StarBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/Cuts/JetKtCut:MinKT 25. ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 STAR_2009_UE_HELEN ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun Star-Jets-4 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-Jets-6.in0000644000175000017500000000351211754474775022310 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 160. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2005_S6217184 # not ready # insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2009_S8057893 # CDF inclusive jet kt insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2007_S7057202 # CDF inclusive jet cone insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2006_S6450792 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S7828950 # run II UE analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_LEADINGJETS insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2010_S8591881_QCD # dijet decorrelations insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2004_S5992206 # inclusive jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S7662670 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-Jets-6 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/BFactory-10.52.in0000644000175000017500000000230011754474775021672 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in create ThePEG::LuminosityFunction BFactoryLuminosity set BFactoryLuminosity:BeamEMaxA 3.5*GeV set BFactoryLuminosity:BeamEMaxB 7.91*GeV set /Herwig/Cuts/EECuts:MHatMin 9.99 set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/EventHandlers/LEPHandler:LuminosityFunction BFactoryLuminosity ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set /Herwig/MatrixElements/MEee2gZ2qq:MinimumFlavour 1 set /Herwig/MatrixElements/MEee2gZ2qq:MaximumFlavour 4 ################################################## # select the analyses ################################################## # BELLE charm hadron production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 BELLE_2006_S6265367 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun BFactory-10.52 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/Star-Jets-1.in0000644000175000017500000000142611754474775021500 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read StarBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/Cuts/JetKtCut:MinKT 2. ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 STAR_2006_S6870392 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun Star-Jets-1 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/Star-Jets-2.in0000644000175000017500000000142611754474775021501 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read StarBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/Cuts/JetKtCut:MinKT 5. ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 STAR_2009_UE_HELEN ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun Star-Jets-2 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-Jets-1.in0000644000175000017500000000312011754474775022276 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 25. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2005_S6217184 # not ready # insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2009_S8057893 # CDF inclusive jet kt insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2007_S7057202 # run II UE analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_LEADINGJETS insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2010_S8591881_QCD # inclusive jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S7662670 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-Jets-1 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-172.in0000644000175000017500000000201111754474775020444 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 172. ################################################## # select the analyses ################################################## # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-172 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Powheg-Run-I-Z.in0000644000175000017500000000222011754474775022562 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] PowhegMEqq2gZ2ff set PowhegMEqq2gZ2ff:Process Electron # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF Run I Z pT insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2000_S4155203 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Powheg-Run-I-Z LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-5.in0000644000175000017500000000333011754474775021341 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 150. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8924791 # ATLAS di-jet decorrelation insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8971293 # ATLAS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8817804 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082936 # CMS event shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8957746 # ATLAS dijet with veto insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9126244 # CMS dijet decorrelation insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8950903 # CMS jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9086218 # CMS 3/2 jet cross section ratio insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9088458 # ATLAS track jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I919017 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-5 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-172.in0000644000175000017500000000202711754474775021702 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 172. ################################################## # select the analyses ################################################## # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-172 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-I-UE.in0000644000175000017500000000332611754474775021443 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVT-UEBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1988_S1865951 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1990_S2089246 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2001_S4751469 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2002_S4796047 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2004_S5839831 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 E735_1998_S3905616 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun TVT-Run-I-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-11.in0000644000175000017500000000216111754474775021417 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 20. set /Herwig/Cuts/QCDCuts:MHatMin 600.*GeV # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8817804 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082936 # CMS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8968497 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-11 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-200.in0000644000175000017500000000201511754474775021667 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 200. ################################################## # select the analyses ################################################## # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 # DELPHI b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2000_S4328825 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-200 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-Jets-7.in0000644000175000017500000000336011754474775022312 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 250. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2005_S6217184 # not ready # insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2009_S8057893 # CDF inclusive jet kt insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2007_S7057202 # CDF inclusive jet cone insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2006_S6450792 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S7828950 # run II UE analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_LEADINGJETS insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2010_S8591881_QCD # inclusive jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S7662670 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-Jets-7 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-Powheg-Z-e.in0000644000175000017500000000222611754474775022013 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] PowhegMEqq2gZ2ff set PowhegMEqq2gZ2ff:Process Electron # No QED radiation #erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # General analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 MC_ZJETS # ATLAS pT insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9131140 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-Powheg-Z-e LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-183.in0000644000175000017500000000215711754474775020461 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 183. ################################################## # select the analyses ################################################## # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 # DELPHI b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2000_S4328825 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-183 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-44.in0000644000175000017500000000203111754474775021613 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 44. ################################################## # select the analyses ################################################## # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_1998_S3612880 # tasso event shapes at various low energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 TASSO_1990_S2148048 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-44 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-0.in0000644000175000017500000000202011754474775021327 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 5. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CMS jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9086218 # ATLAS track jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I919017 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-0 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/DIS-NoME-e+-LowQ2.in0000644000175000017500000000162211754474775022176 0ustar sylvestresylvestre################################################## # Rivet analyses at HERA ################################################## read DISBase-NoME.in ################################################## # DIS parameters ################################################## cd /Herwig/Generators set /Herwig/EventHandlers/DISHandler:BeamB /Herwig/Particles/p+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxB 820.*GeV set /Herwig/EventHandlers/DISHandler:BeamA /Herwig/Particles/e+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxA 27.5*GeV set /Herwig/Cuts/NeutralCurrentCut:MinW2 1000. set /Herwig/Cuts/NeutralCurrentCut:MaxW2 1000000. set /Herwig/Cuts/NeutralCurrentCut:MaxQ2 60. set /Herwig/Cuts/NeutralCurrentCut:MinQ2 2.5 set /Herwig/Cuts/DISCuts:MHatMin 0. # H1 energy flow analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 H1_2000_S4129130 cd /Herwig/Generators saverun DIS-NoME-e+-LowQ2 DISGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-I-Z.in0000644000175000017500000000216611754474775021344 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEqq2gZ2ff set MEqq2gZ2ff:Process Electron # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF Run I Z pT insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2000_S4155203 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-I-Z LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-206.in0000644000175000017500000000177711754474775020464 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 206. ################################################## # select the analyses ################################################## # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 # DELPHI b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2000_S4328825 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-206 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-630-Jets-1.in0000644000175000017500000000223511754474775021551 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 630.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 20. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # run I CDF UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2004_S5839831 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-630-Jets-1 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-DiPhoton.in0000644000175000017500000000236311754474775022767 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEGammaGamma # photon cuts set /Herwig/Cuts/PhotonKtCut:MinKT 5. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF Run II diphotons insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2005_S6080774 # D0 Run II diphotons insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2010_S8570965 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-DiPhoton LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-161.in0000644000175000017500000000201111754474775020442 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 161. ################################################## # select the analyses ################################################## # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-161 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-44.in0000644000175000017500000000201211754474775020363 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 44. ################################################## # select the analyses ################################################## # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_1998_S3612880 # tasso event shapes at various low energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 TASSO_1990_S2148048 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-44 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Top.in0000644000175000017500000000202111754474775021030 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements set MEHeavyQuark:QuarkType Top insert SimpleQCD:MatrixElements[0] MEHeavyQuark do /Herwig/Particles/t:SelectDecayModes t->nu_e,e+,b; t->nu_mu,mu+,b; # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS top with jet veto insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1094568 # MC analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 MC_TTBAR ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Top LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-192.in0000644000175000017500000000163311754474775021706 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 192. ################################################## # select the analyses ################################################## # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 # DELPHI b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2000_S4328825 ################################################### # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-192 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Heavy-1.in0000644000175000017500000000225511754474775021511 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements cp MEHeavyQuark MEBottom set MEBottom:QuarkType Bottom cp MEHeavyQuark MECharm set MECharm:QuarkType Charm insert SimpleQCD:MatrixElements[0] MEBottom insert SimpleQCD:MatrixElements[0] MECharm set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 5. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS inclusive lepton insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I926145 # CMS inclusive lepton insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8941262 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Heavy-1 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-630-UE.in0000644000175000017500000000311311754474775021013 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVT-UEBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 630.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1988_S1865951 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1990_S2089246 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2002_S4796047 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2004_S5839831 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun TVT-630-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-Jets-3.in0000644000175000017500000000351111754474775022304 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 60. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2005_S6217184 # not ready # insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2009_S8057893 # CDF inclusive jet kt insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2007_S7057202 # CDF inclusive jet cone insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2006_S6450792 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S7828950 # run II UE analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_LEADINGJETS insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2010_S8591881_QCD # dijet decorrelations insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2004_S5992206 # inclusive jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S7662670 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-Jets-3 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-183.in0000644000175000017500000000217511754474775021710 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 183. ################################################## # select the analyses ################################################## # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 # DELPHI b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2000_S4328825 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-183 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-202.in0000644000175000017500000000144611754474775020451 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 202. ################################################## # select the analyses ################################################## # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-202 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/BFactory-Upsilon2.in0000644000175000017500000000243311754474775022747 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in create ThePEG::LuminosityFunction BFactoryLuminosity set BFactoryLuminosity:BeamEMaxA 5.0125*GeV set BFactoryLuminosity:BeamEMaxB 5.0125*GeV set /Herwig/Cuts/EECuts:MHatMin 10.02 set /Herwig/EventHandlers/LEPHandler:LuminosityFunction BFactoryLuminosity ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/MatrixElements create Herwig::MEee2VectorMeson MEUpsilon HwMELepton.so set MEUpsilon:VectorMeson /Herwig/Particles/Upsilon(2S) set MEUpsilon:Coupling 0.0004151809 set SimpleEE:MatrixElements 0 MEUpsilon insert /Herwig/NewPhysics/DecayHandler:Excluded 0 /Herwig/Particles/Upsilon(2S) cd /Herwig/Generators ################################################## # select the analyses ################################################## # BELLE charm hadron production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ARGUS_1993_S2669951 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun BFactory-Upsilon2 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-630-Jets-2.in0000644000175000017500000000223511754474775021552 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 630.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 40. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # run I CDF UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2004_S5839831 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-630-Jets-2 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/BFactory-10.45.in0000644000175000017500000000240011754474775021675 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in create ThePEG::LuminosityFunction BFactoryLuminosity set BFactoryLuminosity:BeamEMaxA 5.225 set BFactoryLuminosity:BeamEMaxB 5.225 set /Herwig/Cuts/EECuts:MHatMin 9.99 set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/EventHandlers/LEPHandler:LuminosityFunction BFactoryLuminosity ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set /Herwig/MatrixElements/MEee2gZ2qq:MinimumFlavour 1 set /Herwig/MatrixElements/MEee2gZ2qq:MaximumFlavour 4 ################################################## # select the analyses ################################################## # BELLE charm hadron production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ARGUS_1993_S2789213 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ARGUS_1993_S2669951 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun BFactory-10.45 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-196.in0000644000175000017500000000201711754474775020460 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 196. ################################################## # select the analyses ################################################## # OPAL event shapes and multiplicities at different energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 # DELPHI b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 DELPHI_2000_S4328825 ################################################### # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-196 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-2.in0000644000175000017500000000301511754474775021336 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 20. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8924791 # ATLAS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8817804 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082936 # ATLAS dijet with veto insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9126244 # CMS jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9086218 # CMS 3/2 jet cross section ratio insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9088458 # ATLAS track jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I919017 # CMS UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9120041 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-2 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/BFactory-10.52-sym.in0000644000175000017500000000230511754474775022505 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in create ThePEG::LuminosityFunction BFactoryLuminosity set BFactoryLuminosity:BeamEMaxA 5.26*GeV set BFactoryLuminosity:BeamEMaxB 5.26*GeV set /Herwig/Cuts/EECuts:MHatMin 10.50 set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/EventHandlers/LEPHandler:LuminosityFunction BFactoryLuminosity ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set /Herwig/MatrixElements/MEee2gZ2qq:MinimumFlavour 1 set /Herwig/MatrixElements/MEee2gZ2qq:MaximumFlavour 4 ################################################## # select the analyses ################################################## # BELLE charm hadron production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CLEO_2004_S5809304 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun BFactory-10.52-sym LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LEPBase-Powheg.in0000644000175000017500000000276611754474775022200 0ustar sylvestresylvestre################################################## # base parameters for LEP analyses ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LEPGenerator:NumberOfEvents 100000000 set LEPGenerator:RandomNumberGenerator:Seed 31122001 set LEPGenerator:DebugLevel 0 set LEPGenerator:PrintEvent 10 set LEPGenerator:MaxErrors 10000 # no MPI set LEPGenerator:EventHandler:CascadeHandler:MPIHandler NULL ################################################## # Switch off ISR ################################################## set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis ################################################## # Use the NLO q qbar matrix element ################################################## create Herwig::O2AlphaS /Herwig/O2AlphaS set /Herwig/Generators/LHCGenerator:StandardModelParameters:QCD/RunningAlphaS /Herwig/O2AlphaS set /Herwig/Shower/Evolver:HardEmissionMode POWHEG set /Herwig/Shower/AlphaQCD:AlphaMZ 0.118 insert /Herwig/MatrixElements/SimpleEE:MatrixElements 0 /Herwig/MatrixElements/PowhegMEee2gZ2qq herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-Jets-5.in0000644000175000017500000000351211754474775022307 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 110. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # CDF jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2005_S6217184 # not ready # insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2009_S8057893 # CDF inclusive jet kt insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2007_S7057202 # CDF inclusive jet cone insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2006_S6450792 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S7828950 # run II UE analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_LEADINGJETS insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2010_S8591881_QCD # dijet decorrelations insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2004_S5992206 # inclusive jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S7662670 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-Jets-5 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-14.in0000644000175000017500000000155311754474775021620 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 14. set /Herwig/Cuts/EECuts:MHatMin 13.*GeV ################################################## # select the analyses ################################################## # tasso event shapes at various low energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 TASSO_1990_S2148048 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-14 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/BFactory-10.54.in0000644000175000017500000000240511754474775021702 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in create ThePEG::LuminosityFunction BFactoryLuminosity set BFactoryLuminosity:BeamEMaxA 3.5*GeV set BFactoryLuminosity:BeamEMaxB 7.94*GeV set /Herwig/Cuts/EECuts:MHatMin 9.99 set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/EventHandlers/LEPHandler:LuminosityFunction BFactoryLuminosity ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set /Herwig/MatrixElements/MEee2gZ2qq:MinimumFlavour 1 set /Herwig/MatrixElements/MEee2gZ2qq:MaximumFlavour 4 ################################################## # select the analyses ################################################## # BELLE charm hadron production insert /Herwig/Analysis/RivetAnalysis:Analyses 0 BABAR_2005_S6181155 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 BABAR_2007_S6895344 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun BFactory-10.54 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/DIS-Powheg-e--LowQ2.in0000644000175000017500000000173211754474775022635 0ustar sylvestresylvestre################################################## # Rivet analyses at HERA ################################################## read DISBase-Powheg.in ################################################## # DIS parameters ################################################## cd /Herwig/Generators set /Herwig/EventHandlers/DISHandler:BeamB /Herwig/Particles/p+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxB 820.*GeV set /Herwig/EventHandlers/DISHandler:BeamA /Herwig/Particles/e- set /Herwig/EventHandlers/DISLuminosity:BeamEMaxA 26.7*GeV set /Herwig/Cuts/NeutralCurrentCut:MinW2 1000. set /Herwig/Cuts/NeutralCurrentCut:MaxW2 1000000. set /Herwig/Cuts/NeutralCurrentCut:MaxQ2 60. set /Herwig/Cuts/NeutralCurrentCut:MinQ2 2.5 set /Herwig/Cuts/DISCuts:MHatMin 0. # H1 energy flow analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 H1_1994_S2919893 #insert /Herwig/Analysis/RivetAnalysis:Analyses 0 H1_1995_S3167097 cd /Herwig/Generators saverun DIS-Powheg-e--LowQ2 DISGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-10.in0000644000175000017500000000176711754474775021623 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 10. set /Herwig/Cuts/EECuts:MHatMin 9.99 set /Herwig/MatrixElements/PowhegMEee2gZ2qq:MaximumFlavour 4 ################################################## # select the analyses ################################################## # PDG hadron multiplicities and ratios insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES_RATIOS ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-10 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/DIS-e+-HighQ2.in0000644000175000017500000000161611754474775021523 0ustar sylvestresylvestre################################################## # Rivet analyses at HERA ################################################## read DISBase.in ################################################## # DIS parameters ################################################## cd /Herwig/Generators set /Herwig/EventHandlers/DISHandler:BeamB /Herwig/Particles/p+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxB 820.*GeV set /Herwig/EventHandlers/DISHandler:BeamA /Herwig/Particles/e+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxA 27.5*GeV set /Herwig/Cuts/NeutralCurrentCut:MinW2 1000. set /Herwig/Cuts/NeutralCurrentCut:MaxW2 1000000. set /Herwig/Cuts/NeutralCurrentCut:MaxQ2 1000000. set /Herwig/Cuts/NeutralCurrentCut:MinQ2 40. set /Herwig/Cuts/DISCuts:MHatMin 0. # H1 energy flow analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 H1_2000_S4129130 cd /Herwig/Generators saverun DIS-e+-HighQ2 DISGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-35.in0000644000175000017500000000231711754474775020373 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 35. ################################################## # select the analyses ################################################## # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 # JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_1998_S3612880 # tasso event shapes at various low energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 TASSO_1990_S2148048 # PDG hadron multiplicities and ratios insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES_RATIOS ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-35 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-133.in0000644000175000017500000000205011754474775020444 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 133. ################################################## # select the analyses ################################################## # OPAL event shapes and multiplicities at different energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2004_S6132243 # ALEPH jet and event shapes at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALEPH_2004_S5765862 # OPAL/JADE jet rates at many energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 JADE_OPAL_2000_S4300807 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-133 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/DIS-Powheg-e+-LowQ2.in0000644000175000017500000000162611754474775022635 0ustar sylvestresylvestre################################################## # Rivet analyses at HERA ################################################## read DISBase-Powheg.in ################################################## # DIS parameters ################################################## cd /Herwig/Generators set /Herwig/EventHandlers/DISHandler:BeamB /Herwig/Particles/p+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxB 820.*GeV set /Herwig/EventHandlers/DISHandler:BeamA /Herwig/Particles/e+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxA 27.5*GeV set /Herwig/Cuts/NeutralCurrentCut:MinW2 1000. set /Herwig/Cuts/NeutralCurrentCut:MaxW2 1000000. set /Herwig/Cuts/NeutralCurrentCut:MaxQ2 60. set /Herwig/Cuts/NeutralCurrentCut:MinQ2 2.5 set /Herwig/Cuts/DISCuts:MHatMin 0. # H1 energy flow analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 H1_2000_S4129130 cd /Herwig/Generators saverun DIS-Powheg-e+-LowQ2 DISGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-I-Jets-6.in0000644000175000017500000000245311754474775022202 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 30. set /Herwig/Cuts/QCDCuts:MHatMin 100.*GeV # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # run I CDF di jet angles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_1996_S3418421 # run I CDF di jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2000_S4266730 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-I-Jets-6 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-Powheg-202.in0000644000175000017500000000146411754474775021700 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 202. ################################################## # select the analyses ################################################## # OPAL b/c/light multiplicity insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2002_S5361494 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-Powheg-202 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-Powheg-ZZ.in0000644000175000017500000000175411754474775021730 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LHCBase-Powheg.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # ZZ insert SimpleQCD:MatrixElements[0] PowhegMEPP2VV set PowhegMEPP2VV:Process ZZ do /Herwig/Particles/Z0:SelectDecayModes /Herwig/Particles/Z0/Z0->e-,e+; /Herwig/Particles/Z0/Z0->mu-,mu+; # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # general analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 MC_ZZJETS ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-Powheg-ZZ LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Powheg-Run-II-Z-mu.in0000644000175000017500000000331411754474775023317 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase-Powheg.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] PowhegMEqq2gZ2ff set PowhegMEqq2gZ2ff:Process Muon # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # D0 run II Z pT insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2010_S8671338 # CDF Z+b jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S8095620 # CDF Z+b jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2006_S6653332 # CDF underlying event insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_NOTE_9351 # D0 Run II insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2009_S8349509 # D0 Run II insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S7863608 # D0 run II insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2010_S8821313 # D0 run II UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2010_S8591881_DY ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Powheg-Run-II-Z-mu LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/DIS-NoME-e--LowQ2.in0000644000175000017500000000172611754474775022205 0ustar sylvestresylvestre################################################## # Rivet analyses at HERA ################################################## read DISBase-NoME.in ################################################## # DIS parameters ################################################## cd /Herwig/Generators set /Herwig/EventHandlers/DISHandler:BeamB /Herwig/Particles/p+ set /Herwig/EventHandlers/DISLuminosity:BeamEMaxB 820.*GeV set /Herwig/EventHandlers/DISHandler:BeamA /Herwig/Particles/e- set /Herwig/EventHandlers/DISLuminosity:BeamEMaxA 26.7*GeV set /Herwig/Cuts/NeutralCurrentCut:MinW2 1000. set /Herwig/Cuts/NeutralCurrentCut:MaxW2 1000000. set /Herwig/Cuts/NeutralCurrentCut:MaxQ2 60. set /Herwig/Cuts/NeutralCurrentCut:MinQ2 2.5 set /Herwig/Cuts/DISCuts:MHatMin 0. # H1 energy flow analysis insert /Herwig/Analysis/RivetAnalysis:Analyses 0 H1_1994_S2919893 #insert /Herwig/Analysis/RivetAnalysis:Analyses 0 H1_1995_S3167097 cd /Herwig/Generators saverun DIS-NoME-e--LowQ2 DISGenerator herwig++-2.6.0.orig/Tests/Rivet/SppS-500-UE.in0000644000175000017500000000401611754474775021222 0ustar sylvestresylvestre################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 set LHCGenerator:EventHandler:StatLevel Full # override the beam energy cd /Herwig/Generators set LHCGenerator:EventHandler:BeamB /Herwig/Particles/pbar- set LHCGenerator:EventHandler:LuminosityFunction:Energy 500.0 ################################################## # Create the Herwig analysis ################################################## create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis set /Herwig/Analysis/RivetAnalysis:Debug No set /Herwig/Decays/DecayHandler:LifeTimeOption 0 set /Herwig/Decays/DecayHandler:MaxLifeTime 10*mm ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # min bias insert SimpleQCD:MatrixElements[0] MEMinBias # same as ue process set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 # min ibas cuts set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/QCDCuts:X1Min 0.01 set /Herwig/Cuts/QCDCuts:X2Min 0.01 ################################################## # select the analyses ################################################## insert /Herwig/Analysis/RivetAnalysis:Analyses 0 UA1_1990_S2044935 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators # get the cross section right create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter saverun SppS-500-UE LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-W.in0000644000175000017500000000233011754474775021443 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEqq2W2ff set MEqq2W2ff:Process Electron # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # D0 Run II charge asymmetry insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2008_S7837160 # CDF Run II W+jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S7541902 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-W LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-II-Jets-11.in0000644000175000017500000000257211754474775022371 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 30. set /Herwig/Cuts/QCDCuts:MHatMin 900.*GeV # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # D0 dijet invariant mass insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2010_S8566488 # D0 dijet angles insert /Herwig/Analysis/RivetAnalysis:Analyses 0 D0_2009_S8320160 # CDF dijet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2008_S8093652 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-II-Jets-11 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Heavy-2.in0000644000175000017500000000225611754474775021513 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements cp MEHeavyQuark MEBottom set MEBottom:QuarkType Bottom cp MEHeavyQuark MECharm set MECharm:QuarkType Charm insert SimpleQCD:MatrixElements[0] MEBottom insert SimpleQCD:MatrixElements[0] MECharm set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 20. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS inclusive lepton insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I926145 # CMS inclusive lepton insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8941262 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Heavy-2 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/TVT-Run-I-Jets-3.in0000644000175000017500000000252211754474775022174 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read TVTBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 65. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # run I CDF di jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2001_S4517016 # run I CDF inclusive jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2001_S4563131 # run I CDF UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CDF_2004_S5839831 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun TVT-Run-I-Jets-3 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/DISBase.in0000644000175000017500000000144411754474775020740 0ustar sylvestresylvestre################################################## # Example generator based on DIS parameters # usage: Herwig++ read DIS.in ################################################## set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF cd /Herwig/MatrixElements/ # Neutral current DIS insert SimpleDIS:MatrixElements[0] MEDISNC cd /Herwig/Generators set DISGenerator:NumberOfEvents 10000000 set DISGenerator:RandomNumberGenerator:Seed 31122001 set DISGenerator:DebugLevel 0 set DISGenerator:PrintEvent 10 set DISGenerator:MaxErrors 1000000 set /Herwig/Shower/ShowerHandler:MPIHandler NULL cd /Herwig/Generators create ThePEG::RivetAnalysis /Herwig/Analysis/RivetAnalysis RivetAnalysis.so insert DISGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-1.in0000644000175000017500000000301611754474775021336 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 10. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8924791 # ATLAS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8817804 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082936 # ATLAS dijet with veto insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9126244 # CMS jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9086218 # CMS 3/2 jet cross section ratio insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9088458 # ATLAS track jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I919017 # CMS UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9120041 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-1 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LEP-177.in0000644000175000017500000000201211754474775020452 0ustar sylvestresylvestre################################################## # Rivet analyses at the Z pole ################################################## read LEPBase.in ################################################## # LEP physics parameters (override defaults) ################################################## cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 177. ################################################## # select the analyses ################################################## # OPAL event shapes and multiplicities at different energies insert /Herwig/Analysis/RivetAnalysis:Analyses 0 OPAL_2004_S6132243 # PDG hadron multiplicities and ratios insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES insert /Herwig/Analysis/RivetAnalysis:Analyses 0 PDG_HADRON_MULTIPLICITIES_RATIOS ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LEP-177 LEPGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-13.in0000644000175000017500000000216211754474775021422 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 20. set /Herwig/Cuts/QCDCuts:MHatMin 1800.*GeV # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8817804 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082936 # CMS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8968497 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-13 LHCGenerator herwig++-2.6.0.orig/Tests/Rivet/LHC-7-Jets-4.in0000644000175000017500000000357111754474775021347 0ustar sylvestresylvestre################################################### # Rivet analyses at the Z pole ################################################## read LHCBase.in ################################################## # Use the q qbar matrix element ################################################## cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEQCD2to2 set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 set /Herwig/Cuts/JetKtCut:MinKT 70. # No QED radiation erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 ################################################## # select the analyses ################################################## # ATLAS jet shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8924791 # ATLAS di-jet decorrelation insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8971293 # ATLAS jets insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8817804 insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1082936 # CMS event shapes insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8957746 # ATLAS multijet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9128077 # ATLAS dijet with veto insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S9126244 # CMS dijet decorrelation insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8950903 # CMS jet cross section insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9086218 # CMS 3/2 jet cross section ratio insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9088458 # ATLAS track jet insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I919017 # CMS UE insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S9120041 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## cd /Herwig/Generators saverun LHC-7-Jets-4 LHCGenerator herwig++-2.6.0.orig/Tests/python/0000755000175000017500000000000011756464212017406 5ustar sylvestresylvestreherwig++-2.6.0.orig/Tests/python/histogram.py0000644000175000017500000004306711754474774022003 0ustar sylvestresylvestreimport re import os class Histogram : '''storage of a histogram''' x = [] y = [] dx = [] data_y = [] data_dy = [] titleTop="" caseTop="" titleBottom="" caseBottom="" titleLeft="" caseLeft="" titleRight="" caseRight="" hasData = False def write(self,file,new,colour,top,bottom,scaleX,scaleY): if(new) : file.write("NEW FRAME\n") file.write("SET ORDER X Y DX DY\n") file.write("SET FONT DUPLEX\n") file.write("SET WINDOW X 2 12 Y 3.5 9.0\n") if(scaleX) : file.write("SET SCALE X LOG\n") else : file.write("SET SCALE Y LIN\n") if(scaleY) : file.write("SET SCALE Y LOG\n") else : file.write("SET SCALE Y LIN\n") if(top) : file.write(self.titleTop) file.write(self.caseTop) file.write(self.titleLeft) file.write(self.caseLeft) file.write(self.titleRight) file.write(self.caseRight) out = 'SET LIMITS X %s \t %s \t \n' % (self.x[0]-self.dx[0],self.x[len(self.x)-1]+self.dx[len(self.x)-1]) file.write(out) if bottom : file.write(self.titleBottom) file.write(self.caseBottom) file.write("SET AXIS BOTTOM ON\n") else : file.write("SET AXIS BOTTOM OFF\n") for i in range(0,len(self.x)) : out = '%s \t %s \t %s \n' % (self.x[i],self.y[i],self.dx[i]) file.write(out) file.write("HIST " + colour + "\n") def writeData(self,file): if( not self.hasData) : return for i in range(0,len(self.x)) : out = '%s \t %s \t %s \t %s \n' % (self.x[i],self.data_y[i],self.dx[i],self.data_dy[i]) file.write(out) file.write("PLOT\n") def writeDifference(self,other,file,new,colour) : if(new) : file.write("SET WINDOW X 2 12 Y 2.8 3.5\n") file.write("SET SCALE Y LIN\n") file.write(self.titleBottom) file.write(self.caseBottom) out = 'SET LIMITS X %s \t %s \t \n' % (self.x[0]-self.dx[0],self.x[len(self.x)-1]+self.dx[len(self.x)-1]) file.write(out) file.write("SET AXIS BOTTOM ON\n") ndegree = 0 chi = 0 for i in range(0,len(self.x)) : diff = 0. if (self.y[i]!=0. and other.y[i]!=0) : diff = (self.y[i]-other.y[i])/(self.y[i]+other.y[i]) ndegree += 1 chi += abs(diff) out = '%s \t %s \t %s \n' % (self.x[i],diff,self.dx[i]) file.write(out) file.write("JOIN LEVEL=1 " + colour + "\n") return [ndegree,chi] def __add__(self, other): newHist = Histogram() newHist.x = self.x newHist.dx = self.dx newHist.titleTop = self.titleTop newHist.caseTop = self.caseTop newHist.titleBottom= self.titleBottom newHist.caseBottom = self.caseBottom newHist.titleLeft = self.titleLeft newHist.caseLeft = self.caseLeft newHist.titleRight = self.titleRight newHist.caseRight = self.caseRight newHist.hasData = self.hasData newHist.data_y = self.data_y newHist.data_dy = self.data_dy newHist.y=[] for j in range(len(self.y)): newHist.y.append(self.y[j]+other.y[j]) return newHist def __subtract__(self, other): newHist = Histogram() newHist.x = self.x newHist.dx = self.dx newHist.titleTop = self.titleTop newHist.caseTop = self.caseTop newHist.titleBottom= self.titleBottom newHist.caseBottom = self.caseBottom newHist.titleLeft = self.titleLeft newHist.caseLeft = self.caseLeft newHist.titleRight = self.titleRight newHist.caseRight = self.caseRight newHist.hasData = self.hasData newHist.data_y = self.data_y newHist.data_dy = self.data_dy newHist.y=[] for j in range(len(self.y)): newHist.y.append(self.y[j]-other.y[j]) return newHist def __mul__(self, other): newHist = Histogram() newHist.x = self.x newHist.dx = self.dx newHist.titleTop = self.titleTop newHist.caseTop = self.caseTop newHist.titleBottom= self.titleBottom newHist.caseBottom = self.caseBottom newHist.titleLeft = self.titleLeft newHist.caseLeft = self.caseLeft newHist.titleRight = self.titleRight newHist.caseRight = self.caseRight newHist.hasData = self.hasData newHist.data_y = self.data_y newHist.data_dy = self.data_dy newHist.y=[] for j in range(len(self.y)): newHist.y.append(self.y[j]*other) return newHist def __div__(self, other): newHist = Histogram() newHist.x = self.x newHist.dx = self.dx newHist.titleTop = self.titleTop newHist.caseTop = self.caseTop newHist.titleBottom= self.titleBottom newHist.caseBottom = self.caseBottom newHist.titleLeft = self.titleLeft newHist.caseLeft = self.caseLeft newHist.titleRight = self.titleRight newHist.caseRight = self.caseRight newHist.hasData = self.hasData newHist.data_y = self.data_y newHist.data_dy = self.data_dy newHist.y=[] for j in range(len(self.y)): newHist.y.append(self.y[j]/other) return newHist def readHistogram(f1,data,nplot=1) : test = f1.readline() hist=[] ncount=0 for i in range(0,nplot) : hist.append(Histogram()) hist[i].x = [] hist[i].y = [] hist[i].dx = [] hist[i].data_y = [] hist[i].data_dy = [] hist[i].titleTop="" hist[i].caseTop="" hist[i].titleBottom="" hist[i].caseBottom="" hist[i].titleLeft="" hist[i].caseLeft="" hist[i].titleRight="" hist[i].caseRight="" hist[i].hasData = data while test : test = test.lstrip() if (test[0] == "N" or test[0:5] == "SET P" or test[0:6] == "SET AX" or test[0:5] == "SET W" or test[0:5] == "SET O" or test[0:5] == "SET F" or test[0:5] == "SET L" or test[0:5] == "SET S" ) : pass elif (test[0:7] == "TITLE B") : hist[0].titleBottom = test test = f1.readline() hist[0].caseBottom = test elif (test[0:7] == "TITLE T") : hist[0].titleTop = test test = f1.readline() hist[0].caseTop = test elif( test[0:7] == "TITLE L") : hist[0].titleLeft = test test = f1.readline() hist[0].caseLeft = test elif (test[0:7] == "TITLE R") : hist[0].titleRight = test test = f1.readline() hist[0].caseRight = test elif (test[0:4] == "HIST") : ncount += 1 if(ncount==nplot) : break else : temp = test.split() hist[ncount].x .append(float(temp[0])) hist[ncount].y .append(float(temp[1])) hist[ncount].dx.append(float(temp[2])) test = f1.readline() if(data) : test = f1.readline() while test : test = test.lstrip() if (test[0:4] == "PLOT") : break elif (test[0:7] == "TITLE B") : hist[0].titleBottom = test test = f1.readline() hist[0].caseBottom = test else : temp = test.split() hist[0].data_y .append(float(temp[1])) hist[0].data_dy.append(float(temp[3])) test = f1.readline() test = f1.readline() while test : if (test[0:4] == "JOIN") : break elif (test[0:7] == "TITLE B") : hist[0].titleBottom = test test = f1.readline() hist[0].caseBottom = test test = f1.readline() if(nplot==1) : return hist[0] else : for i in range(1,nplot) : hist[i].data_y = hist[0].data_y hist[i].data_dy = hist[0].data_dy hist[i].titleTop = hist[0].titleTop hist[i].caseTop = hist[0].caseTop hist[i].titleBottom = hist[0].titleBottom hist[i].caseBottom = hist[0].caseBottom hist[i].titleLeft = hist[0].titleLeft hist[i].caseLeft = hist[0].caseLeft hist[i].titleRight = hist[0].titleRight hist[i].caseRight = hist[0].caseRight hist[i].hasData = hist[0].hasData return hist def compareTopdrawFiles(fname1,fname2,fo,nplot,data=False) : f1 = open(fname1) f2 = open(fname2) totalDegree = 0 totalChi = 0. for i in range(0,nplot) : h1 = readHistogram(f1,data) h2 = readHistogram(f2,data) h1.write(fo,True,"BLACK",True,False,False,False) h2.write(fo,False,"RED",True,False,False,False) if(h1.hasData) : h1.writeData(fo) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] f1.close() f2.close() return [totalDegree,totalChi] class LinePlot : '''storage of a histogram''' x = [] y = [] data_y = [] data_dy = [] titleTop="" caseTop="" titleBottom="" caseBottom="" titleLeft="" caseLeft="" titleRight="" caseRight="" hasData = False def write(self,file,new,colour,top,bottom,scaleX,scaleY): if(new) : file.write("NEW FRAME\n") file.write("SET ORDER X Y DY\n") file.write("SET FONT DUPLEX\n") file.write("SET WINDOW X 2 12 Y 3.5 9.0\n") if(scaleX) : file.write("SET SCALE X LOG\n") else : file.write("SET SCALE X LIN\n") if(scaleY) : file.write("SET SCALE Y LOG\n") else : file.write("SET SCALE Y LIN\n") if(top) : file.write(self.titleTop) file.write(self.caseTop) file.write(self.titleLeft) file.write(self.caseLeft) file.write(self.titleRight) file.write(self.caseRight) out = 'SET LIMITS X %s \t %s \t \n' % (self.x[0],self.x[len(self.x)-1]) file.write(out) if bottom : file.write(self.titleBottom) file.write(self.caseBottom) file.write("SET AXIS BOTTOM ON\n") else : file.write("SET AXIS BOTTOM OFF\n") for i in range(0,len(self.x)) : out = '%s \t %s\n' % (self.x[i],self.y[i]) file.write(out) file.write("JOIN LEVEL=1 " + colour + "\n") def writeData(self,file): if( not self.hasData) : return for i in range(0,len(self.x)) : out = '%s \t %s \t %s \n' % (self.x[i],self.data_y[i],self.data_dy[i]) file.write(out) file.write("PLOT\n") def writeDifference(self,other,file,new,colour) : if(new) : file.write("SET WINDOW X 2 12 Y 2.6 3.5\n") file.write("SET SCALE Y LIN\n") file.write(self.titleBottom) file.write(self.caseBottom) out = 'SET LIMITS X %s \t %s\n' % (self.x[0],self.x[len(self.x)-1]) file.write(out) file.write("SET AXIS BOTTOM ON\n") ndegree = 0 chi = 0 for i in range(0,len(self.x)) : diff = 0. if (self.y[i]!=0. and other.y[i]!=0) : diff = (self.y[i]-other.y[i])/(self.y[i]+other.y[i]) ndegree += 1 chi += abs(diff) out = '%s \t %s \n' % (self.x[i],diff) file.write(out) file.write("JOIN LEVEL=1 " + colour + "\n") return [ndegree,chi] def __add__(self, other): newLine = LinePlot() newLine.x = self.x newLine.titleTop = self.titleTop newLine.caseTop = self.caseTop newLine.titleBottom= self.titleBottom newLine.caseBottom = self.caseBottom newLine.titleLeft = self.titleLeft newLine.caseLeft = self.caseLeft newLine.titleRight = self.titleRight newLine.caseRight = self.caseRight newLine.hasData = self.hasData newLine.data_y = self.data_y newLine.data_dy = self.data_dy newLine.y=[] for j in range(len(self.y)): newLine.y.append(self.y[j]+other.y[j]) return newLine def __subtract__(self, other): newLine = LinePlot() newLine.x = self.x newLine.titleTop = self.titleTop newLine.caseTop = self.caseTop newLine.titleBottom= self.titleBottom newLine.caseBottom = self.caseBottom newLine.titleLeft = self.titleLeft newLine.caseLeft = self.caseLeft newLine.titleRight = self.titleRight newLine.caseRight = self.caseRight newLine.hasData = self.hasData newLine.data_y = self.data_y newLine.data_dy = self.data_dy newLine.y=[] for j in range(len(self.y)): newLine.y.append(self.y[j]-other.y[j]) return newLine def __mul__(self, other): newLine = LinePlot() newLine.x = self.x newLine.titleTop = self.titleTop newLine.caseTop = self.caseTop newLine.titleBottom= self.titleBottom newLine.caseBottom = self.caseBottom newLine.titleLeft = self.titleLeft newLine.caseLeft = self.caseLeft newLine.titleRight = self.titleRight newLine.caseRight = self.caseRight newLine.hasData = self.hasData newLine.data_y = self.data_y newLine.data_dy = self.data_dy newLine.y=[] for j in range(len(self.y)): newLine.y.append(self.y[j]*other) return newLine def __div__(self, other): newLine = LinePlot() newLine.x = self.x newLine.titleTop = self.titleTop newLine.caseTop = self.caseTop newLine.titleBottom= self.titleBottom newLine.caseBottom = self.caseBottom newLine.titleLeft = self.titleLeft newLine.caseLeft = self.caseLeft newLine.titleRight = self.titleRight newLine.caseRight = self.caseRight newLine.hasData = self.hasData newLine.data_y = self.data_y newLine.data_dy = self.data_dy newLine.y=[] for j in range(len(self.y)): newLine.y.append(self.y[j]/other) return newLine def readLine(f1,data=False) : test = f1.readline() hist = LinePlot() hist.x = [] hist.y = [] hist.data_y = [] hist.data_dy = [] hist.titleTop="" hist.caseTop="" hist.titleBottom="" hist.caseBottom="" hist.titleLeft="" hist.caseLeft="" hist.titleRight="" hist.caseRight="" hist.hasData = data while test : test = test.lstrip() if (test[0] == "N" or test[0:5] == "SET P" or test[0:6] == "SET AX" or test[0:5] == "SET W" or test[0:5] == "SET O" or test[0:5] == "SET F" or test[0:5] == "SET L" or test[0:5] == "SET S" ) : pass elif (test[0:7] == "TITLE B") : hist.titleBottom = test test = f1.readline() hist.caseBottom = test elif (test[0:7] == "TITLE T") : hist.titleTop = test test = f1.readline() hist.caseTop = test elif( test[0:7] == "TITLE L") : hist.titleLeft = test test = f1.readline() hist.caseLeft = test elif (test[0:7] == "TITLE R") : hist.titleRight = test test = f1.readline() hist.caseRight = test elif (test[0:4] == "JOIN") : break else : temp = test.split() hist.x .append(float(temp[0])) hist.y .append(float(temp[1])) test = f1.readline() if(data) : test = f1.readline() while test : test = test.lstrip() if (test[0:4] == "PLOT") : break elif (test[0:7] == "TITLE B") : hist.titleBottom = test test = f1.readline() hist.caseBottom = test else : temp = test.split() hist.data_y .append(float(temp[1])) hist.data_dy.append(float(temp[2])) test = f1.readline() test = f1.readline() while test : if (test[0:4] == "JOIN") : break elif (test[0:7] == "TITLE B") : hist.titleBottom = test test = f1.readline() hist.caseBottom = test test = f1.readline() test = f1.readline() while test : if (test[0:4] == "JOIN") : break elif (test[0:7] == "TITLE B") : hist.titleBottom = test test = f1.readline() hist.caseBottom = test test = f1.readline() return hist herwig++-2.6.0.orig/Tests/python/merge-Star0000755000175000017500000001722511754474774021365 0ustar sylvestresylvestre#! /usr/bin/env python import lighthisto import logging import sys if sys.version_info[:3] < (2,4,0): print "rivet scripts require Python version >= 2.4.0... exiting" sys.exit(1) import os, copy, re from math import sqrt ## Try to load faster but non-standard cElementTree module try: import xml.etree.cElementTree as ET except ImportError: try: import cElementTree as ET except ImportError: try: import xml.etree.ElementTree as ET except: sys.stderr.write("Can't load the ElementTree XML parser: please install it!\n") sys.exit(1) # ############################################# def fillAbove(desthisto, sourcehistosbyptmin): for i,b in enumerate(desthisto.getBins()): ## Fill bins with pT-ordered histos (so that 'highest always wins') for ptmin, h in sorted(sourcehistosbyptmin.iteritems()): newb = h.getBin(i) if newb.xlow >= ptmin: b.val = newb.val b.errplus = newb.errplus b.errminus = newb.errminus b._focus= newb._focus def mergeByPt(hpath, sqrts): global inhistos global outhistos try: fillAbove(outhistos[hpath], inhistos[hpath][float(sqrts)]) except: pass def useOnePt(hpath, sqrts, ptmin): global inhistos global outhistos try: ## Find best pT_min match ptmins = inhistos[hpath][float(sqrts)].keys() closest_ptmin = None for ptm in ptmins: if closest_ptmin is None or \ abs(ptm-float(ptmin)) < abs(closest_ptmin-float(ptmin)): closest_ptmin = ptm if closest_ptmin != float(ptmin): logging.warning("Inexact match for requested pTmin=%s: " % ptmin + \ "using pTmin=%e instead" % closest_ptmin) outhistos[hpath] = inhistos[hpath][float(sqrts)][closest_ptmin] except: pass # ####################################### if __name__ == "__main__": import logging from optparse import OptionParser, OptionGroup parser = OptionParser(usage="%prog name") verbgroup = OptionGroup(parser, "Verbosity control") verbgroup.add_option("-v", "--verbose", action="store_const", const=logging.DEBUG, dest="LOGLEVEL", default=logging.INFO, help="print debug (very verbose) messages") verbgroup.add_option("-q", "--quiet", action="store_const", const=logging.WARNING, dest="LOGLEVEL", default=logging.INFO, help="be very quiet") parser.add_option_group(verbgroup) (opts, args) = parser.parse_args() logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s") ## Prefix used in dat file headers headerprefix = "# " ## Check args if len(args) < 1: logging.error("Must specify at least the name of the files") sys.exit(1) aidafiles=["-UE.aida","-Jets-1.aida","-Jets-2.aida","-Jets-3.aida","-Jets-4.aida"] ## Get histos inhistos = {} outhistos={} weights = {} for f in aidafiles: file=args[0]+f if(file.find("-UE")>0) : sqrts=200 ptmin=0. elif(file.find("-Jets-1")>0) : sqrts=200 ptmin=2. elif(file.find("-Jets-2")>0) : sqrts=200 ptmin=5. elif(file.find("-Jets-3")>0) : sqrts=200 ptmin=26. elif(file.find("-Jets-4")>0) : sqrts=200 ptmin=15. if not os.access(file, os.R_OK): logging.error("%s can not be read" % file) break try: tree = ET.parse(file) except: logging.error("%s can not be parsed as XML" % file) break tree = ET.parse(file) ## Get histos from this AIDA file for dps in tree.findall("dataPointSet"): h = lighthisto.Histo.fromDPS(dps) if(h.fullPath().find("6870392")>0 or h.fullPath().find("HELEN")>0) : if not inhistos.has_key(h.fullPath()): inhistos[h.fullPath()] = {} tmpE = inhistos[h.fullPath()] if not tmpE.has_key(sqrts): tmpE[sqrts] = {} tmpP = tmpE[sqrts] if not tmpP.has_key(ptmin): tmpP[ptmin] = h else: raise Exception("A set with ptmin = %s already exists" % ( ptmin)) else : outhistos[h.fullPath()] = h # aidafiles=["-Run-II-Jets-8.aida","-Run-II-Jets-9.aida","-Run-II-Jets-10.aida",\ # "-Run-I-Jets-6.aida","-Run-I-Jets-7.aida","-Run-I-Jets-8.aida"] # for f in aidafiles: # file=args[0]+f # if(file.find("Run-II-Jets-8")>0) : # sqrts=1960 # ptmin=0.150 # elif(file.find("Run-II-Jets-9")>0) : # sqrts=1960 # ptmin=0.600 # elif(file.find("Run-II-Jets-10")>0) : # sqrts=1960 # ptmin=1.000 # elif(file.find("Run-I-Jets-6")>0) : # sqrts=1800 # ptmin=0.150 # elif(file.find("Run-I-Jets-7")>0) : # sqrts=1800 # ptmin=0.5 # elif(file.find("Run-I-Jets-8")>0) : # sqrts=1800 # ptmin=0.8 # if not os.access(file, os.R_OK): # logging.error("%s can not be read" % file) # break # try: # tree = ET.parse(file) # except: # logging.error("%s can not be parsed as XML" % file) # break # tree = ET.parse(file) # ## Get histos from this AIDA file # for dps in tree.findall("dataPointSet"): # h = lighthisto.Histo.fromDPS(dps) # if(h.fullPath().find("8566488")>0 or h.fullPath().find("8320160")>0) : # if not inhistos.has_key(h.fullPath()): # inhistos[h.fullPath()] = {} # tmpE = inhistos[h.fullPath()] # if not tmpE.has_key(sqrts): # tmpE[sqrts] = {} # tmpP = tmpE[sqrts] # if not tmpP.has_key(ptmin): # tmpP[ptmin] = h # else: # raise Exception("A set with ptmin = %s already exists" % ( ptmin)) # elif(h.fullPath().find("8093652")>0 or h.fullPath().find("3418421")>0 or # h.fullPath().find("4266730")>0) : # if not inhistos.has_key(h.fullPath()): # inhistos[h.fullPath()] = {} # tmpE = inhistos[h.fullPath()] # if not tmpE.has_key(sqrts): # tmpE[sqrts] = {} # tmpP = tmpE[sqrts] # if not tmpP.has_key(1000.*ptmin): # tmpP[1000.*ptmin] = h # else: # raise Exception("A set with ptmin = %s already exists" % ( 1000.*ptmin)) ## Make empty output histos if needed for hpath,hsets in inhistos.iteritems(): if( (hpath.find("6870392")>0 and hpath.find("d02-x01-y01" )>0 ) or hpath.find("HELEN")>0 ) : workhisto = copy.deepcopy(hsets.values()[0].values()[0]) outhistos[hpath] = workhisto ## Empty the bin set for histos which we're going to merge for b in outhistos[hpath]: b.val = 0 b.errplus = 0 b.errminus = 0 b._focus= None useOnePt("/STAR_2006_S6870392/d01-x01-y01","200","2") mergeByPt("/STAR_2006_S6870392/d02-x01-y01","200") mergeByPt("/STAR_2009_UE_HELEN/d01-x01-y01","200") mergeByPt("/STAR_2009_UE_HELEN/d02-x01-y01","200") mergeByPt("/STAR_2009_UE_HELEN/d03-x01-y01","200") # Choose output file name = args[0]+".aida" out = open(name, "w") ## Write out merged histos out.write('\n') out.write('\n') out.write('\n') out.write(' \n') for hpath, h in sorted(outhistos.iteritems()): logging.debug("hpath = %s" % hpath) out.write(h.asAIDA() + "\n\n") out.write('\n') sys.exit(0) herwig++-2.6.0.orig/Tests/python/merge-TVT-Jets0000755000175000017500000005025211754474774022031 0ustar sylvestresylvestre#! /usr/bin/env python import lighthisto import logging import sys if sys.version_info[:3] < (2,4,0): print "rivet scripts require Python version >= 2.4.0... exiting" sys.exit(1) import os, copy, re from math import sqrt ## Try to load faster but non-standard cElementTree module try: import xml.etree.cElementTree as ET except ImportError: try: import cElementTree as ET except ImportError: try: import xml.etree.ElementTree as ET except: sys.stderr.write("Can't load the ElementTree XML parser: please install it!\n") sys.exit(1) # ############################################# def fillAbove(desthisto, sourcehistosbyptmin): for i,b in enumerate(desthisto.getBins()): ## Fill bins with pT-ordered histos (so that 'highest always wins') for ptmin, h in sorted(sourcehistosbyptmin.iteritems()): newb = h.getBin(i) if newb.xlow >= ptmin: b.val = newb.val b.errplus = newb.errplus b.errminus = newb.errminus b._focus= newb._focus def mergeByPt(hpath, sqrts): global inhistos global outhistos try: fillAbove(outhistos[hpath], inhistos[hpath][float(sqrts)]) except: pass def useOnePt(hpath, sqrts, ptmin): global inhistos global outhistos try: ## Find best pT_min match ptmins = inhistos[hpath][float(sqrts)].keys() closest_ptmin = None for ptm in ptmins: if closest_ptmin is None or \ abs(ptm-float(ptmin)) < abs(closest_ptmin-float(ptmin)): closest_ptmin = ptm if closest_ptmin != float(ptmin): logging.warning("Inexact match for requested pTmin=%s: " % ptmin + \ "using pTmin=%e instead" % closest_ptmin) outhistos[hpath] = inhistos[hpath][float(sqrts)][closest_ptmin] except: pass # ####################################### if __name__ == "__main__": import logging from optparse import OptionParser, OptionGroup parser = OptionParser(usage="%prog name") verbgroup = OptionGroup(parser, "Verbosity control") verbgroup.add_option("-v", "--verbose", action="store_const", const=logging.DEBUG, dest="LOGLEVEL", default=logging.INFO, help="print debug (very verbose) messages") verbgroup.add_option("-q", "--quiet", action="store_const", const=logging.WARNING, dest="LOGLEVEL", default=logging.INFO, help="be very quiet") parser.add_option_group(verbgroup) (opts, args) = parser.parse_args() logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s") ## Prefix used in dat file headers headerprefix = "# " ## Check args if len(args) < 1: logging.error("Must specify at least the name of the files") sys.exit(1) aidafiles=["-Run-II-UE.aida" ,"-Run-II-Jets-1.aida","-Run-II-Jets-2.aida",\ "-Run-II-Jets-3.aida","-Run-II-Jets-4.aida","-Run-II-Jets-5.aida",\ "-Run-II-Jets-6.aida","-Run-II-Jets-7.aida",\ "-Run-I-UE.aida" ,"-Run-I-Jets-1.aida","-Run-I-Jets-2.aida",\ "-Run-I-Jets-3.aida","-Run-I-Jets-4.aida","-Run-I-Jets-5.aida",\ "-630-UE.aida" ,"-630-Jets-1.aida" ,"-630-Jets-2.aida" ,\ "-630-Jets-3.aida"] ## Get histos inhistos = {} outhistos={} weights = {} for f in aidafiles: file=args[0]+f if(file.find("Run-II-UE")>0) : sqrts=1960 ptmin=0. elif(file.find("Run-II-Jets-1")>0) : sqrts=1960 ptmin=36. elif(file.find("Run-II-Jets-2")>0) : sqrts=1960 ptmin=55. elif(file.find("Run-II-Jets-3")>0) : sqrts=1960 ptmin=75. elif(file.find("Run-II-Jets-4")>0) : sqrts=1960 ptmin=100. elif(file.find("Run-II-Jets-5")>0) : sqrts=1960 ptmin=125. elif(file.find("Run-II-Jets-6")>0) : ptmin=175. sqrts=1960 elif(file.find("Run-II-Jets-7")>0) : sqrts=1960 ptmin=265. elif(file.find("630-UE")>0) : sqrts=630 ptmin=0. elif(file.find("630-Jets-1")>0) : sqrts=630 ptmin=30. elif(file.find("630-Jets-2")>0) : sqrts=630 ptmin=55. elif(file.find("630-Jets-3")>0) : sqrts=630 ptmin=90. elif(file.find("Run-I-UE")>0) : sqrts=1800 ptmin=0. elif(file.find("Run-I-Jets-1")>0) : sqrts=1800 ptmin=30. elif(file.find("Run-I-Jets-2")>0) : sqrts=1800 ptmin=55. elif(file.find("Run-I-Jets-3")>0) : sqrts=1800 ptmin=80. elif(file.find("Run-I-Jets-4")>0) : sqrts=1800 ptmin=105. elif(file.find("Run-I-Jets-5")>0) : sqrts=1800 ptmin=175. if not os.access(file, os.R_OK): logging.error("%s can not be read" % file) break try: tree = ET.parse(file) except: logging.error("%s can not be parsed as XML" % file) break tree = ET.parse(file) ## Get histos from this AIDA file for dps in tree.findall("dataPointSet"): h = lighthisto.Histo.fromDPS(dps) # di-jet decorrelations # jet shapes if(h.fullPath().find("5992206")>0 or h.fullPath().find("6217184")>0 or h.fullPath().find("LEADINGJETS")>0 or h.fullPath().find("7662670")>0 or h.fullPath().find("7057202")>0 or h.fullPath().find("6450792")>0 or h.fullPath().find("7828950")>0 or h.fullPath().find("4751469")>0 or h.fullPath().find("5839831")>0 or h.fullPath().find("4563131")>0 or h.fullPath().find("4517016")>0 or h.fullPath().find("3618439")>0 or h.fullPath().find("8591881")>0) : if not inhistos.has_key(h.fullPath()): inhistos[h.fullPath()] = {} tmpE = inhistos[h.fullPath()] if not tmpE.has_key(sqrts): tmpE[sqrts] = {} tmpP = tmpE[sqrts] if not tmpP.has_key(ptmin): tmpP[ptmin] = h else: raise Exception("A set with ptmin = %s already exists" % ( ptmin)) elif(h.fullPath().find("8233977")>0 or h.fullPath().find("NOTE_9936")>0 or h.fullPath().find("3905616")>0 or h.fullPath().find("3324664")>0 or h.fullPath().find("4796047")>0 or h.fullPath().find("1865951")>0 or h.fullPath().find("2089246")>0 or h.fullPath().find("3108457")>0 or h.fullPath().find("3349578")>0 or h.fullPath().find("3541940")>0 or h.fullPath().find("3214044")>0 or h.fullPath().find("2952106")>0 ) : outhistos[h.fullPath()] = h aidafiles=["-Run-II-Jets-8.aida","-Run-II-Jets-9.aida","-Run-II-Jets-10.aida","-Run-II-Jets-11.aida",\ "-Run-I-Jets-6.aida","-Run-I-Jets-7.aida","-Run-I-Jets-8.aida"] for f in aidafiles: file=args[0]+f if(file.find("Run-II-Jets-8")>0) : sqrts=1960 ptmin=0.150 elif(file.find("Run-II-Jets-9")>0) : sqrts=1960 ptmin=0.400 elif(file.find("Run-II-Jets-10")>0) : sqrts=1960 ptmin=0.600 elif(file.find("Run-II-Jets-11")>0) : sqrts=1960 ptmin=1.000 elif(file.find("Run-I-Jets-6")>0) : sqrts=1800 ptmin=0.150 elif(file.find("Run-I-Jets-7")>0) : sqrts=1800 ptmin=0.5 elif(file.find("Run-I-Jets-8")>0) : sqrts=1800 ptmin=0.8 if not os.access(file, os.R_OK): logging.error("%s can not be read" % file) break try: tree = ET.parse(file) except: logging.error("%s can not be parsed as XML" % file) break tree = ET.parse(file) ## Get histos from this AIDA file for dps in tree.findall("dataPointSet"): h = lighthisto.Histo.fromDPS(dps) if(h.fullPath().find("8566488")>0 or h.fullPath().find("8320160")>0) : if not inhistos.has_key(h.fullPath()): inhistos[h.fullPath()] = {} tmpE = inhistos[h.fullPath()] if not tmpE.has_key(sqrts): tmpE[sqrts] = {} tmpP = tmpE[sqrts] if not tmpP.has_key(ptmin): tmpP[ptmin] = h else: raise Exception("A set with ptmin = %s already exists" % ( ptmin)) elif(h.fullPath().find("8093652")>0 or h.fullPath().find("3418421")>0 or h.fullPath().find("4266730")>0) : if not inhistos.has_key(h.fullPath()): inhistos[h.fullPath()] = {} tmpE = inhistos[h.fullPath()] if not tmpE.has_key(sqrts): tmpE[sqrts] = {} tmpP = tmpE[sqrts] if not tmpP.has_key(1000.*ptmin): tmpP[1000.*ptmin] = h else: raise Exception("A set with ptmin = %s already exists" % ( 1000.*ptmin)) ## Make empty output histos if needed for hpath,hsets in inhistos.iteritems(): if( (hpath.find("6217184")>0 and hpath.find("d13-x01-y01")>0 ) or hpath.find("LEADINGJETS")>0 or hpath.find("7662670")>0 or hpath.find("7057202")>0 or hpath.find("6450792")>0 or hpath.find("7828950")>0 or hpath.find("8566488")>0 or hpath.find("8320160")>0 or hpath.find("8093652")>0 or hpath.find("4751469")>0 or hpath.find("5839831")>0 or hpath.find("4563131")>0 or hpath.find("4517016")>0 or hpath.find("3618439")>0 or hpath.find("4266730")>0 or hpath.find("3418421")>0 or hpath.find("8591881")>0) : workhisto = copy.deepcopy(hsets.values()[0].values()[0]) outhistos[hpath] = workhisto ## Empty the bin set for histos which we're going to merge for b in outhistos[hpath]: b.val = 0 b.errplus = 0 b.errminus = 0 b._focus= None ## Field analysis logging.info("Processing CDF_2001_S4751469") ## Angular distributions in different pT bins useOnePt("/CDF_2001_S4751469/d01-x01-y01", "1800", "0") useOnePt("/CDF_2001_S4751469/d01-x01-y02", "1800", "0") useOnePt("/CDF_2001_S4751469/d01-x01-y03", "1800", "30") useOnePt("/CDF_2001_S4751469/d02-x01-y01", "1800", "0") useOnePt("/CDF_2001_S4751469/d02-x01-y02", "1800", "0") useOnePt("/CDF_2001_S4751469/d02-x01-y03", "1800", "30") ## Number, profile in pT_lead (True?) useOnePt("/CDF_2001_S4751469/d03-x01-y01", "1800", "0") useOnePt("/CDF_2001_S4751469/d03-x01-y02", "1800", "0") useOnePt("/CDF_2001_S4751469/d03-x01-y03", "1800", "0") #mergeByPt("/CDF_2001_S4751469/d04-x01-y01", "1800") #mergeByPt("/CDF_2001_S4751469/d04-x01-y02", "1800") #mergeByPt("/CDF_2001_S4751469/d04-x01-y03", "1800") useOnePt("/CDF_2001_S4751469/d04-x01-y01", "1800", "30") useOnePt("/CDF_2001_S4751469/d04-x01-y02", "1800", "30") useOnePt("/CDF_2001_S4751469/d04-x01-y03", "1800", "30") ## pT sums, profile in pT_lead (True?) useOnePt("/CDF_2001_S4751469/d05-x01-y01", "1800", "0") useOnePt("/CDF_2001_S4751469/d05-x01-y02", "1800", "0") useOnePt("/CDF_2001_S4751469/d05-x01-y03", "1800", "0") # mergeByPt("/CDF_2001_S4751469/d06-x01-y01", "1800") # mergeByPt("/CDF_2001_S4751469/d06-x01-y02", "1800") # mergeByPt("/CDF_2001_S4751469/d06-x01-y03", "1800") useOnePt("/CDF_2001_S4751469/d06-x01-y01", "1800", "30") useOnePt("/CDF_2001_S4751469/d06-x01-y02", "1800", "30") useOnePt("/CDF_2001_S4751469/d06-x01-y03", "1800", "30") ## pT distributions (use a specific pT cut run?) useOnePt("/CDF_2001_S4751469/d07-x01-y01", "1800", "0") useOnePt("/CDF_2001_S4751469/d07-x01-y02", "1800", "0") useOnePt("/CDF_2001_S4751469/d07-x01-y03", "1800", "30") ## Acosta analysis logging.info("Processing CDF_2004_S5839831") ## Mean pT, profile in ET_lead mergeByPt("/CDF_2004_S5839831/d01-x01-y01", "1800") mergeByPt("/CDF_2004_S5839831/d01-x01-y02", "1800") ## pT_max,min, profiles in ET_lead mergeByPt("/CDF_2004_S5839831/d02-x01-y01", "1800") mergeByPt("/CDF_2004_S5839831/d02-x01-y02", "1800") mergeByPt("/CDF_2004_S5839831/d02-x01-y03", "1800") ## pT distributions (want to use a specific pT cut run) useOnePt("/CDF_2004_S5839831/d03-x01-y01", "1800", "30") useOnePt("/CDF_2004_S5839831/d03-x01-y02", "1800", "80") useOnePt("/CDF_2004_S5839831/d03-x01-y03", "1800", "105") useOnePt("/CDF_2004_S5839831/d03-x01-y04", "1800", "105") useOnePt("/CDF_2004_S5839831/d03-x01-y05", "1800", "175") ## N_max,min, profiles in ET_lead mergeByPt("/CDF_2004_S5839831/d04-x01-y01", "1800") mergeByPt("/CDF_2004_S5839831/d04-x01-y02", "1800") ## Min bias dbs (want to use min bias pT cut) useOnePt("/CDF_2004_S5839831/d05-x01-y01", "1800", "0") useOnePt("/CDF_2004_S5839831/d06-x01-y01", "1800", "0") ## Swiss Cheese, profile in ET_lead mergeByPt("/CDF_2004_S5839831/d07-x01-y01", "1800") mergeByPt("/CDF_2004_S5839831/d07-x01-y02", "1800") ## pT_max,min, profiles in ET_lead mergeByPt("/CDF_2004_S5839831/d08-x01-y01", "630") mergeByPt("/CDF_2004_S5839831/d08-x01-y02", "630") mergeByPt("/CDF_2004_S5839831/d08-x01-y03", "630") ## Swiss Cheese, profile in ET_lead mergeByPt("/CDF_2004_S5839831/d09-x01-y01", "630") mergeByPt("/CDF_2004_S5839831/d09-x01-y02", "630") ## Min bias dbs (want to use min bias pT cut) useOnePt("/CDF_2004_S5839831/d10-x01-y01", "630", "0") useOnePt("/CDF_2004_S5839831/d11-x01-y01", "630", "0") ## CDF jet shape analysis logging.info("Processing CDF_2005_S6217184") useOnePt("/CDF_2005_S6217184/d01-x01-y01", "1960", "36" ) useOnePt("/CDF_2005_S6217184/d01-x01-y02", "1960", "36" ) useOnePt("/CDF_2005_S6217184/d01-x01-y03", "1960", "55" ) useOnePt("/CDF_2005_S6217184/d02-x01-y01", "1960", "55" ) useOnePt("/CDF_2005_S6217184/d02-x01-y02", "1960", "55" ) useOnePt("/CDF_2005_S6217184/d02-x01-y03", "1960", "75" ) useOnePt("/CDF_2005_S6217184/d03-x01-y01", "1960", "75" ) useOnePt("/CDF_2005_S6217184/d03-x01-y02", "1960", "100") useOnePt("/CDF_2005_S6217184/d03-x01-y03", "1960", "100") useOnePt("/CDF_2005_S6217184/d04-x01-y01", "1960", "125") useOnePt("/CDF_2005_S6217184/d04-x01-y02", "1960", "125") useOnePt("/CDF_2005_S6217184/d04-x01-y03", "1960", "175") useOnePt("/CDF_2005_S6217184/d05-x01-y01", "1960", "175") useOnePt("/CDF_2005_S6217184/d05-x01-y02", "1960", "175") useOnePt("/CDF_2005_S6217184/d05-x01-y03", "1960", "175") useOnePt("/CDF_2005_S6217184/d06-x01-y01", "1960", "265") useOnePt("/CDF_2005_S6217184/d06-x01-y02", "1960", "265") useOnePt("/CDF_2005_S6217184/d06-x01-y03", "1960", "265") useOnePt("/CDF_2005_S6217184/d07-x01-y01", "1960", "36" ) useOnePt("/CDF_2005_S6217184/d07-x01-y02", "1960", "36" ) useOnePt("/CDF_2005_S6217184/d07-x01-y03", "1960", "55" ) useOnePt("/CDF_2005_S6217184/d08-x01-y01", "1960", "55" ) useOnePt("/CDF_2005_S6217184/d08-x01-y02", "1960", "55" ) useOnePt("/CDF_2005_S6217184/d08-x01-y03", "1960", "75" ) useOnePt("/CDF_2005_S6217184/d09-x01-y01", "1960", "75" ) useOnePt("/CDF_2005_S6217184/d09-x01-y02", "1960", "100") useOnePt("/CDF_2005_S6217184/d09-x01-y03", "1960", "100") useOnePt("/CDF_2005_S6217184/d10-x01-y01", "1960", "125") useOnePt("/CDF_2005_S6217184/d10-x01-y02", "1960", "125") useOnePt("/CDF_2005_S6217184/d10-x01-y03", "1960", "175") useOnePt("/CDF_2005_S6217184/d11-x01-y01", "1960", "175") useOnePt("/CDF_2005_S6217184/d11-x01-y02", "1960", "175") useOnePt("/CDF_2005_S6217184/d11-x01-y03", "1960", "175") useOnePt("/CDF_2005_S6217184/d12-x01-y01", "1960", "265") useOnePt("/CDF_2005_S6217184/d12-x01-y02", "1960", "265") useOnePt("/CDF_2005_S6217184/d12-x01-y03", "1960", "265") mergeByPt("/CDF_2005_S6217184/d13-x01-y01", "1960") # ## CDF dijet mass spectrum mergeByPt("/CDF_2008_S8093652/d01-x01-y01", "1960") ## Rick Field Run-II Leading Jets analysis logging.info("Processing CDF_2008_LEADINGJETS") ## charged particle density mergeByPt("/CDF_2008_LEADINGJETS/d01-x01-y01", "1960") mergeByPt("/CDF_2008_LEADINGJETS/d02-x01-y01", "1960") mergeByPt("/CDF_2008_LEADINGJETS/d03-x01-y01", "1960") mergeByPt("/CDF_2008_LEADINGJETS/d04-x01-y01", "1960") ## pT sum density mergeByPt("/CDF_2008_LEADINGJETS/d05-x01-y01", "1960") mergeByPt("/CDF_2008_LEADINGJETS/d06-x01-y01", "1960") mergeByPt("/CDF_2008_LEADINGJETS/d07-x01-y01", "1960") mergeByPt("/CDF_2008_LEADINGJETS/d08-x01-y01", "1960") ## mean pT mergeByPt("/CDF_2008_LEADINGJETS/d09-x01-y01", "1960") ## newer version logging.info("Processing CDF_2010_S8591881_QCD") mergeByPt("/CDF_2010_S8591881_QCD/d10-x01-y01", "1960") mergeByPt("/CDF_2010_S8591881_QCD/d10-x01-y02", "1960") mergeByPt("/CDF_2010_S8591881_QCD/d10-x01-y03", "1960") mergeByPt("/CDF_2010_S8591881_QCD/d11-x01-y01", "1960") mergeByPt("/CDF_2010_S8591881_QCD/d11-x01-y02", "1960") mergeByPt("/CDF_2010_S8591881_QCD/d11-x01-y03", "1960") mergeByPt("/CDF_2010_S8591881_QCD/d12-x01-y01", "1960") mergeByPt("/CDF_2010_S8591881_QCD/d12-x01-y02", "1960") mergeByPt("/CDF_2010_S8591881_QCD/d12-x01-y03", "1960") mergeByPt("/CDF_2010_S8591881_QCD/d13-x01-y01", "1960") mergeByPt("/CDF_2010_S8591881_QCD/d13-x01-y02", "1960") mergeByPt("/CDF_2010_S8591881_QCD/d13-x01-y03", "1960") mergeByPt("/CDF_2010_S8591881_QCD/d14-x01-y01", "1960") mergeByPt("/CDF_2010_S8591881_QCD/d15-x01-y01", "1960") ## D0 dijet correlation analysis logging.info("Processing D0_2004_S5992206") useOnePt("/D0_2004_S5992206/d01-x02-y01", "1960", "75") useOnePt("/D0_2004_S5992206/d02-x02-y01", "1960", "100") useOnePt("/D0_2004_S5992206/d03-x02-y01", "1960", "125") useOnePt("/D0_2004_S5992206/d04-x02-y01", "1960", "175") ## D0 incl jet cross-section analysis logging.info("Processing D0_2008_S7662670") mergeByPt("/D0_2008_S7662670/d01-x01-y01", "1960") mergeByPt("/D0_2008_S7662670/d02-x01-y01", "1960") mergeByPt("/D0_2008_S7662670/d03-x01-y01", "1960") mergeByPt("/D0_2008_S7662670/d04-x01-y01", "1960") mergeByPt("/D0_2008_S7662670/d05-x01-y01", "1960") mergeByPt("/D0_2008_S7662670/d06-x01-y01", "1960") mergeByPt("/D0_2010_S8566488/d01-x01-y01", "1960") mergeByPt("/D0_2010_S8566488/d02-x01-y01", "1960") mergeByPt("/D0_2010_S8566488/d03-x01-y01", "1960") mergeByPt("/D0_2010_S8566488/d04-x01-y01", "1960") mergeByPt("/D0_2010_S8566488/d05-x01-y01", "1960") mergeByPt("/D0_2010_S8566488/d06-x01-y01", "1960") # CDF jet cross section mergeByPt("/CDF_2001_S4563131/d01-x01-y01", "1800") mergeByPt("/CDF_2001_S4517016/d01-x01-y01", "1800") mergeByPt("/CDF_2001_S4517016/d02-x01-y01", "1800") mergeByPt("/CDF_2001_S4517016/d03-x01-y01", "1800") mergeByPt("/CDF_2001_S4517016/d04-x01-y01", "1800") useOnePt("/CDF_1998_S3618439/d01-x01-y01", "1800","105") useOnePt("/CDF_1998_S3618439/d01-x01-y02", "1800","105") mergeByPt("/CDF_2008_S7828950/d01-x01-y01", "1960") mergeByPt("/CDF_2008_S7828950/d02-x01-y01", "1960") mergeByPt("/CDF_2008_S7828950/d03-x01-y01", "1960") mergeByPt("/CDF_2008_S7828950/d04-x01-y01", "1960") mergeByPt("/CDF_2008_S7828950/d05-x01-y01", "1960") mergeByPt("/CDF_2007_S7057202/d01-x01-y01", "1960") mergeByPt("/CDF_2007_S7057202/d02-x01-y01", "1960") mergeByPt("/CDF_2007_S7057202/d03-x01-y01", "1960") mergeByPt("/CDF_2007_S7057202/d04-x01-y01", "1960") mergeByPt("/CDF_2007_S7057202/d05-x01-y01", "1960") mergeByPt("/CDF_2007_S7057202/d06-x01-y01", "1960") mergeByPt("/CDF_2007_S7057202/d07-x01-y01", "1960") mergeByPt("/CDF_2006_S6450792/d01-x01-y01", "1960") mergeByPt("/CDF_2000_S4266730/d01-x01-y01", "1800") useOnePt("/CDF_1996_S3418421/d01-x01-y01","1800","150") useOnePt("/CDF_1996_S3418421/d01-x01-y02","1800","150") useOnePt("/CDF_1996_S3418421/d01-x01-y03","1800","150") useOnePt("/CDF_1996_S3418421/d01-x01-y04","1800","500") useOnePt("/CDF_1996_S3418421/d01-x01-y05","1800","500") mergeByPt("/CDF_1996_S3418421/d02-x01-y01","1800") useOnePt("/D0_2009_S8320160/d01-x01-y01", "1960", "0.15" ) useOnePt("/D0_2009_S8320160/d02-x01-y01", "1960", "0.15" ) useOnePt("/D0_2009_S8320160/d03-x01-y01", "1960", "0.4" ) useOnePt("/D0_2009_S8320160/d04-x01-y01", "1960", "0.4" ) useOnePt("/D0_2009_S8320160/d05-x01-y01", "1960", "0.6" ) useOnePt("/D0_2009_S8320160/d06-x01-y01", "1960", "0.6" ) useOnePt("/D0_2009_S8320160/d07-x01-y01", "1960", "0.6" ) useOnePt("/D0_2009_S8320160/d08-x01-y01", "1960", "0.6" ) useOnePt("/D0_2009_S8320160/d09-x01-y01", "1960", "1.0" ) useOnePt("/D0_2009_S8320160/d10-x01-y01", "1960", "1.0" ) # Choose output file name = args[0]+"-Jets.aida" out = open(name, "w") ## Write out merged histos out.write('\n') out.write('\n') out.write('\n') out.write(' \n') for hpath, h in sorted(outhistos.iteritems()): logging.debug("hpath = %s" % hpath) out.write(h.asAIDA() + "\n\n") out.write('\n') sys.exit(0) herwig++-2.6.0.orig/Tests/python/main.py0000644000175000017500000001226111754474774020722 0ustar sylvestresylvestreimport compare # directories for the comparison directory1="trunk/" directory2="recon/" # location for the plots plotLocation="http://projects.hepforge.org/herwig/private/images/peter/comparison1" # file for the wiki wiki = open("wiki.info",'w') wiki.write("= Comparision of Heriwg++ results =\n") # lepton-lepton processes wiki.write("=== Lepton-Lepton ===\n") wiki.write("|| Process || Cross Section/nb || Error/nb || Cross Section/nb || Error/nb || Fractional Difference sigma || Average Fractional Difference Distribution || Topdraw || Postscript ||\n") # quarks compare.compareLEPQuarks(directory1,directory2,wiki,plotLocation) # leptons compare.compareLEPLeptons(directory1,directory2,wiki,plotLocation) # VH compare.compareLEPVH(directory1,directory2,wiki,plotLocation) # VV compare.compareLEPVV(directory1,directory2,wiki,plotLocation) # VBF compare.compareLEPVBF(directory1,directory2,wiki,plotLocation) # top decay compare.compareTopDecay(directory1,directory2,wiki,plotLocation) # charm event shapes compare.compareCharmShapes(directory1,directory2,wiki,plotLocation) # LEP event shapes compare.compareLEPShapes(directory1,directory2,wiki,plotLocation) # hadron-hadron processes at the LHC wiki.write("=== LHC ===\n") wiki.write("|| Process || Cross Section/nb || Error/nb || Cross Section/nb || Error/nb || Fractional Difference sigma || Average Fractional Difference Distribution || Topdraw || Postscript ||\n") # compare W production compare.compareW(directory1,directory2,wiki,plotLocation) # compare Z production compare.compareZ(directory1,directory2,wiki,plotLocation) # compare W+jet production compare.compareWJet(directory1,directory2,wiki,plotLocation) # compare Z+jet production compare.compareZJet(directory1,directory2,wiki,plotLocation) # compare Higgs production compare.compareHiggs(directory1,directory2,wiki,plotLocation) # compare Higgs +jet production compare.compareHiggsJet(directory1,directory2,wiki,plotLocation) # compare VBF WW compare.compareWWVBF(directory1,directory2,wiki,plotLocation) # compare VBF ZZ compare.compareZZVBF(directory1,directory2,wiki,plotLocation) # compare VBF all compare.compareVBF(directory1,directory2,wiki,plotLocation) # compare WW production compare.compareWW(directory1,directory2,wiki,plotLocation) # compare WZ production compare.compareWZ(directory1,directory2,wiki,plotLocation) # compare ZZ production compare.compareZZ(directory1,directory2,wiki,plotLocation) # compare WGamma production compare.compareWGamma(directory1,directory2,wiki,plotLocation) # compare ZGamma production compare.compareZGamma(directory1,directory2,wiki,plotLocation) # compare photon pair production compare.compareGammaGamma(directory1,directory2,wiki,plotLocation) # compare photon + jet production compare.compareGammaJet(directory1,directory2,wiki,plotLocation) # compare WH production compare.compareWH(directory1,directory2,wiki,plotLocation) # compare ZH production compare.compareZH(directory1,directory2,wiki,plotLocation) # compare QCD production compare.compareQCD(directory1,directory2,wiki,plotLocation) # compare QCDFast production compare.compareQCDFast(directory1,directory2,wiki,plotLocation) # compare top pair production compare.compareTop(directory1,directory2,wiki,plotLocation) # compare bottom pair +Higgs production compare.comparebbH(directory1,directory2,wiki,plotLocation) # compare top pair +Higgs production compare.comparettH(directory1,directory2,wiki,plotLocation) # compare shower in W compare.compareWShower(directory1,directory2,wiki,plotLocation) # compare shower in Z compare.compareZShower(directory1,directory2,wiki,plotLocation) # compare shower in W Powheg compare.compareWPowheg(directory1,directory2,wiki,plotLocation) # compare shower in Z Powheg compare.compareZPowheg(directory1,directory2,wiki,plotLocation) # compare shower in H compare.compareHJet(directory1,directory2,wiki,plotLocation) # compare shower in H Powheg compare.compareHPowheg(directory1,directory2,wiki,plotLocation) # compare shower in WH compare.compareWHJet(directory1,directory2,wiki,plotLocation) # compare shower in ZH compare.compareZHJet(directory1,directory2,wiki,plotLocation) # compare shower in WH compare.compareWHJetPowheg(directory1,directory2,wiki,plotLocation) # compare shower in ZH compare.compareZHJetPowheg(directory1,directory2,wiki,plotLocation) # DIS processes at HERA wiki.write("=== DIS ===\n") wiki.write("|| Process || Cross Section/nb || Error/nb || Cross Section/nb || Error/nb || Fractional Difference sigma || Average Fractional Difference Distribution || Topdraw || Postscript ||\n") # neutral current compare.compareNeutralCurrent(directory1,directory2,wiki,plotLocation) # charged current compare.compareChargedCurrent(directory1,directory2,wiki,plotLocation) # photon initiated wiki.write("=== Photon Initiated ===\n") wiki.write("|| Process || Cross Section/nb || Error/nb || Cross Section/nb || Error/nb || Fractional Difference sigma || Average Fractional Difference Distribution || Topdraw || Postscript ||\n") # fermion production compare.compareGammaFF(directory1,directory2,wiki,plotLocation) # W production compare.compareGammaWW(directory1,directory2,wiki,plotLocation) # gamma P compare.compareGammaP(directory1,directory2,wiki,plotLocation) # close the wiki file wiki.close() herwig++-2.6.0.orig/Tests/python/merge-aida0000755000175000017500000000620011754474774021341 0ustar sylvestresylvestre#! /usr/bin/env python import lighthisto import logging import sys import os, copy, re """%prog Script for merging aida files """ import sys if sys.version_info[:3] < (2,4,0): print "rivet scripts require Python version >= 2.4.0... exiting" sys.exit(1) ## Try to load faster but non-standard cElementTree module try: import xml.etree.cElementTree as ET except ImportError: try: import cElementTree as ET except ImportError: try: import xml.etree.ElementTree as ET except: sys.stderr.write("Can't load the ElementTree XML parser: please install it!\n") sys.exit(1) if __name__ == "__main__": import logging from optparse import OptionParser, OptionGroup parser = OptionParser(usage="%prog aidafile aidafile2 [...]") parser.add_option("-o", "--out", dest="OUTFILE", default="-") parser.add_option("--append", dest="APPEND_OUTPUT", action="store_true", default=False) verbgroup = OptionGroup(parser, "Verbosity control") verbgroup.add_option("-v", "--verbose", action="store_const", const=logging.DEBUG, dest="LOGLEVEL", default=logging.INFO, help="print debug (very verbose) messages") verbgroup.add_option("-q", "--quiet", action="store_const", const=logging.WARNING, dest="LOGLEVEL", default=logging.INFO, help="be very quiet") parser.add_option_group(verbgroup) (opts, args) = parser.parse_args() logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s") ## Prefix used in dat file headers headerprefix = "# " ## Check args if len(args) < 1: logging.error("Must specify at least one AIDA histogram file") sys.exit(1) ## Get histos outhistos={} for file in args: if not os.access(file, os.R_OK): logging.error("%s can not be read" % file) break try: tree = ET.parse(file) except: logging.error("%s can not be parsed as XML" % file) break tree = ET.parse(file) ## Get histos from this AIDA file for dps in tree.findall("dataPointSet"): h = lighthisto.Histo.fromDPS(dps) outhistos[h.fullPath()] = h ## Choose output file out = None if opts.OUTFILE == "-": out = sys.stdout else: if opts.APPEND_OUTPUT: out = open(opts.OUTFILE, "a") else: out = open(opts.OUTFILE, "w") # Choose output file out = None if opts.OUTFILE == "-": out = sys.stdout else: if opts.APPEND_OUTPUT: out = open(opts.OUTFILE, "a") else: out = open(opts.OUTFILE, "w") ## Write out merged histos out.write('\n') out.write('\n') out.write('\n') out.write(' \n') for hpath, h in sorted(outhistos.iteritems()): logging.debug("hpath = %s" % hpath) out.write(h.asAIDA() + "\n\n") out.write('\n') sys.exit(0) herwig++-2.6.0.orig/Tests/python/merge-LEP0000755000175000017500000012343011754474774021070 0ustar sylvestresylvestre#! /usr/bin/env python import lighthisto import logging import sys if sys.version_info[:3] < (2,4,0): print "rivet scripts require Python version >= 2.4.0... exiting" sys.exit(1) import os, copy, re from math import sqrt ## Try to load faster but non-standard cElementTree module try: import xml.etree.cElementTree as ET except ImportError: try: import cElementTree as ET except ImportError: try: import xml.etree.ElementTree as ET except: sys.stderr.write("Can't load the ElementTree XML parser: please install it!\n") sys.exit(1) # ############################################# def fillAbove(desthisto, sourcehistosbyptmin): for i,b in enumerate(desthisto.getBins()): ## Fill bins with pT-ordered histos (so that 'highest always wins') for ptmin, h in sorted(sourcehistosbyptmin.iteritems()): newb = h.getBin(i) if newb.xlow <= float(ptmin) and newb.xhigh >=float(ptmin): b.val = newb.val b.errplus = newb.errplus b.errminus = newb.errminus b._focus= newb._focus def merge(hpath): global inhistos global outhistos try: fillAbove(outhistos[hpath], inhistos[hpath]) except: pass def useOne(hpath, sqrts): global inhistos global outhistos try: outhistos[hpath] = inhistos[hpath][float(sqrts)] except: pass if __name__ == "__main__": import logging from optparse import OptionParser, OptionGroup parser = OptionParser(usage="%prog name") verbgroup = OptionGroup(parser, "Verbosity control") verbgroup.add_option("-v", "--verbose", action="store_const", const=logging.DEBUG, dest="LOGLEVEL", default=logging.INFO, help="print debug (very verbose) messages") verbgroup.add_option("-q", "--quiet", action="store_const", const=logging.WARNING, dest="LOGLEVEL", default=logging.INFO, help="be very quiet") parser.add_option_group(verbgroup) (opts, args) = parser.parse_args() logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s") ## Prefix used in dat file headers headerprefix = "# " ## Check args if len(args) < 1: logging.error("Must specify at least the name of the files") sys.exit(1) # ####################################### aidafiles=["-130.aida","-133.aida","-136.aida","-177.aida","-192.aida", "-196.aida","-202.aida","-206.aida","-91.aida" ,\ "-161.aida","-183.aida","-197.aida","-35.aida" ,"-172.aida",\ "-189.aida","-200.aida","-44.aida","-14.aida","-22.aida","-10.aida" ] ## Get histos inhistos = {} outhistos={} weights = {} for f in aidafiles: file = args[0]+f if(file.find("10")>0) : sqrts=10 elif(file.find("14")>0) : sqrts=14 elif(file.find("22")>0) : sqrts=22 elif(file.find("35")>0) : sqrts=35 elif(file.find("44")>0) : sqrts=44 elif(file.find("91")>0) : sqrts=91 elif(file.find("130")>0) : sqrts=130 elif(file.find("133")>0) : sqrts=133 elif(file.find("136")>0) : sqrts=136 elif(file.find("161")>0) : sqrts=161 elif(file.find("172")>0) : sqrts=172 elif(file.find("177")>0) : sqrts=177 elif(file.find("183")>0) : sqrts=183 elif(file.find("189")>0) : sqrts=189 elif(file.find("192")>0) : sqrts=192 elif(file.find("196")>0) : sqrts=196 elif(file.find("197")>0) : sqrts=197 elif(file.find("200")>0) : sqrts=200 elif(file.find("202")>0) : sqrts=202 elif(file.find("206")>0) : sqrts=206 if not os.access(file, os.R_OK): logging.error("%s can not be read" % file) break try: tree = ET.parse(file) except: logging.error("%s can not be parsed as XML" % file) break tree = ET.parse(file) ## Get histos from this AIDA file for dps in tree.findall("dataPointSet"): h = lighthisto.Histo.fromDPS(dps) # jet shapes if(h.fullPath().find("4300807")>0 or h.fullPath().find("6132243")>0 or h.fullPath().find("5765862")>0 or h.fullPath().find("3612880")>0 or h.fullPath().find("4328825")>0 or h.fullPath().find("5361494")>0 or h.fullPath().find("2148048")>0 or h.fullPath().find("MULTIPLICITIES")>0 ) : if not inhistos.has_key(h.fullPath()): inhistos[h.fullPath()] = {} if not inhistos[h.fullPath()].has_key(sqrts): inhistos[h.fullPath()][sqrts] = h else: raise Exception("A set with sqrts = %s already exists" % ( sqrts)) else : outhistos[h.fullPath()] = h ## Make empty output histos if needed for hpath,hsets in inhistos.iteritems(): if( hpath.find("4300807")>0 or hpath.find("6132243")>0 or hpath.find("5765862")>0 or hpath.find("4328825")>0 or hpath.find("5361494")>0) : workhisto = copy.deepcopy(hsets.values()[0]) outhistos[hpath] = workhisto ## Empty the bin set for histos which we're going to merge for b in outhistos[hpath]: b.val = 0 b.errplus = 0 b.errminus = 0 b._focus= None # tasso useOne("/TASSO_1990_S2148048/d06-x01-y01","14") useOne("/TASSO_1990_S2148048/d07-x01-y01","14") useOne("/TASSO_1990_S2148048/d08-x01-y01","14") useOne("/TASSO_1990_S2148048/d06-x01-y02","22") useOne("/TASSO_1990_S2148048/d07-x01-y02","22") useOne("/TASSO_1990_S2148048/d08-x01-y02","22") useOne("/TASSO_1990_S2148048/d06-x01-y03","35") useOne("/TASSO_1990_S2148048/d07-x01-y03","35") useOne("/TASSO_1990_S2148048/d08-x01-y03","35") useOne("/TASSO_1990_S2148048/d06-x01-y04","44") useOne("/TASSO_1990_S2148048/d07-x01-y04","44") useOne("/TASSO_1990_S2148048/d08-x01-y04","44") # jade useOne("/JADE_1998_S3612880/d02-x01-y01","44") useOne("/JADE_1998_S3612880/d03-x01-y01","44") useOne("/JADE_1998_S3612880/d04-x01-y01","44") useOne("/JADE_1998_S3612880/d05-x01-y01","44") useOne("/JADE_1998_S3612880/d06-x01-y01","35") useOne("/JADE_1998_S3612880/d07-x01-y01","35") useOne("/JADE_1998_S3612880/d08-x01-y01","35") useOne("/JADE_1998_S3612880/d09-x01-y01","35") useOne("/JADE_1998_S3612880/d10-x01-y01","44") useOne("/JADE_1998_S3612880/d11-x01-y01","35") useOne("/JADE_1998_S3612880/d12-x01-y01","22") # opal/jade useOne("/JADE_OPAL_2000_S4300807/d07-x01-y01","35") useOne("/JADE_OPAL_2000_S4300807/d07-x01-y02","35") useOne("/JADE_OPAL_2000_S4300807/d07-x01-y03","35") useOne("/JADE_OPAL_2000_S4300807/d07-x01-y04","35") useOne("/JADE_OPAL_2000_S4300807/d07-x01-y05","35") useOne("/JADE_OPAL_2000_S4300807/d08-x01-y01","44") useOne("/JADE_OPAL_2000_S4300807/d08-x01-y02","44") useOne("/JADE_OPAL_2000_S4300807/d08-x01-y03","44") useOne("/JADE_OPAL_2000_S4300807/d08-x01-y04","44") useOne("/JADE_OPAL_2000_S4300807/d08-x01-y05","44") useOne("/JADE_OPAL_2000_S4300807/d09-x01-y01","91") useOne("/JADE_OPAL_2000_S4300807/d09-x01-y02","91") useOne("/JADE_OPAL_2000_S4300807/d09-x01-y03","91") useOne("/JADE_OPAL_2000_S4300807/d09-x01-y04","91") useOne("/JADE_OPAL_2000_S4300807/d09-x01-y05","91") useOne("/JADE_OPAL_2000_S4300807/d10-x01-y01","133") useOne("/JADE_OPAL_2000_S4300807/d10-x01-y02","133") useOne("/JADE_OPAL_2000_S4300807/d10-x01-y03","133") useOne("/JADE_OPAL_2000_S4300807/d10-x01-y04","133") useOne("/JADE_OPAL_2000_S4300807/d10-x01-y05","133") useOne("/JADE_OPAL_2000_S4300807/d11-x01-y01","161") useOne("/JADE_OPAL_2000_S4300807/d11-x01-y02","161") useOne("/JADE_OPAL_2000_S4300807/d11-x01-y03","161") useOne("/JADE_OPAL_2000_S4300807/d11-x01-y04","161") useOne("/JADE_OPAL_2000_S4300807/d11-x01-y05","161") useOne("/JADE_OPAL_2000_S4300807/d12-x01-y01","172") useOne("/JADE_OPAL_2000_S4300807/d12-x01-y02","172") useOne("/JADE_OPAL_2000_S4300807/d12-x01-y03","172") useOne("/JADE_OPAL_2000_S4300807/d12-x01-y04","172") useOne("/JADE_OPAL_2000_S4300807/d12-x01-y05","172") useOne("/JADE_OPAL_2000_S4300807/d13-x01-y01","183") useOne("/JADE_OPAL_2000_S4300807/d13-x01-y02","183") useOne("/JADE_OPAL_2000_S4300807/d13-x01-y03","183") useOne("/JADE_OPAL_2000_S4300807/d13-x01-y04","183") useOne("/JADE_OPAL_2000_S4300807/d13-x01-y05","183") useOne("/JADE_OPAL_2000_S4300807/d14-x01-y01","189") useOne("/JADE_OPAL_2000_S4300807/d14-x01-y02","189") useOne("/JADE_OPAL_2000_S4300807/d14-x01-y03","189") useOne("/JADE_OPAL_2000_S4300807/d14-x01-y04","189") useOne("/JADE_OPAL_2000_S4300807/d14-x01-y05","189") useOne("/JADE_OPAL_2000_S4300807/d16-x01-y01","35") useOne("/JADE_OPAL_2000_S4300807/d16-x01-y02","35") useOne("/JADE_OPAL_2000_S4300807/d16-x01-y03","35") useOne("/JADE_OPAL_2000_S4300807/d16-x01-y04","35") useOne("/JADE_OPAL_2000_S4300807/d16-x01-y05","35") useOne("/JADE_OPAL_2000_S4300807/d17-x01-y01","44") useOne("/JADE_OPAL_2000_S4300807/d17-x01-y02","44") useOne("/JADE_OPAL_2000_S4300807/d17-x01-y03","44") useOne("/JADE_OPAL_2000_S4300807/d17-x01-y04","44") useOne("/JADE_OPAL_2000_S4300807/d17-x01-y05","44") useOne("/JADE_OPAL_2000_S4300807/d18-x01-y01","91") useOne("/JADE_OPAL_2000_S4300807/d18-x01-y02","91") useOne("/JADE_OPAL_2000_S4300807/d18-x01-y03","91") useOne("/JADE_OPAL_2000_S4300807/d18-x01-y04","91") useOne("/JADE_OPAL_2000_S4300807/d18-x01-y05","91") useOne("/JADE_OPAL_2000_S4300807/d19-x01-y01","133") useOne("/JADE_OPAL_2000_S4300807/d19-x01-y02","133") useOne("/JADE_OPAL_2000_S4300807/d19-x01-y03","133") useOne("/JADE_OPAL_2000_S4300807/d19-x01-y04","133") useOne("/JADE_OPAL_2000_S4300807/d19-x01-y05","133") useOne("/JADE_OPAL_2000_S4300807/d20-x01-y01","161") useOne("/JADE_OPAL_2000_S4300807/d20-x01-y02","161") useOne("/JADE_OPAL_2000_S4300807/d20-x01-y03","161") useOne("/JADE_OPAL_2000_S4300807/d20-x01-y04","161") useOne("/JADE_OPAL_2000_S4300807/d20-x01-y05","161") useOne("/JADE_OPAL_2000_S4300807/d21-x01-y01","172") useOne("/JADE_OPAL_2000_S4300807/d21-x01-y02","172") useOne("/JADE_OPAL_2000_S4300807/d21-x01-y03","172") useOne("/JADE_OPAL_2000_S4300807/d21-x01-y04","172") useOne("/JADE_OPAL_2000_S4300807/d21-x01-y05","172") useOne("/JADE_OPAL_2000_S4300807/d22-x01-y01","183") useOne("/JADE_OPAL_2000_S4300807/d22-x01-y02","183") useOne("/JADE_OPAL_2000_S4300807/d22-x01-y03","183") useOne("/JADE_OPAL_2000_S4300807/d22-x01-y04","183") useOne("/JADE_OPAL_2000_S4300807/d22-x01-y05","183") useOne("/JADE_OPAL_2000_S4300807/d23-x01-y01","189") useOne("/JADE_OPAL_2000_S4300807/d23-x01-y02","189") useOne("/JADE_OPAL_2000_S4300807/d23-x01-y03","189") useOne("/JADE_OPAL_2000_S4300807/d23-x01-y04","189") useOne("/JADE_OPAL_2000_S4300807/d23-x01-y05","189") useOne("/JADE_OPAL_2000_S4300807/d24-x01-y01","35") useOne("/JADE_OPAL_2000_S4300807/d24-x01-y02","35") useOne("/JADE_OPAL_2000_S4300807/d24-x01-y03","35") useOne("/JADE_OPAL_2000_S4300807/d24-x01-y04","35") useOne("/JADE_OPAL_2000_S4300807/d25-x01-y01","44") useOne("/JADE_OPAL_2000_S4300807/d25-x01-y02","44") useOne("/JADE_OPAL_2000_S4300807/d25-x01-y03","44") useOne("/JADE_OPAL_2000_S4300807/d25-x01-y04","44") useOne("/JADE_OPAL_2000_S4300807/d26-x01-y01","91") useOne("/JADE_OPAL_2000_S4300807/d26-x01-y02","91") useOne("/JADE_OPAL_2000_S4300807/d26-x01-y03","91") useOne("/JADE_OPAL_2000_S4300807/d26-x01-y04","91") useOne("/JADE_OPAL_2000_S4300807/d27-x01-y01","133") useOne("/JADE_OPAL_2000_S4300807/d27-x01-y02","133") useOne("/JADE_OPAL_2000_S4300807/d27-x01-y03","133") useOne("/JADE_OPAL_2000_S4300807/d27-x01-y04","133") useOne("/JADE_OPAL_2000_S4300807/d28-x01-y01","161") useOne("/JADE_OPAL_2000_S4300807/d28-x01-y02","161") useOne("/JADE_OPAL_2000_S4300807/d28-x01-y03","161") useOne("/JADE_OPAL_2000_S4300807/d28-x01-y04","161") useOne("/JADE_OPAL_2000_S4300807/d29-x01-y01","172") useOne("/JADE_OPAL_2000_S4300807/d29-x01-y02","172") useOne("/JADE_OPAL_2000_S4300807/d29-x01-y03","172") useOne("/JADE_OPAL_2000_S4300807/d29-x01-y04","172") useOne("/JADE_OPAL_2000_S4300807/d30-x01-y01","183") useOne("/JADE_OPAL_2000_S4300807/d30-x01-y02","183") useOne("/JADE_OPAL_2000_S4300807/d30-x01-y03","183") useOne("/JADE_OPAL_2000_S4300807/d30-x01-y04","183") useOne("/JADE_OPAL_2000_S4300807/d31-x01-y01","189") useOne("/JADE_OPAL_2000_S4300807/d31-x01-y02","189") useOne("/JADE_OPAL_2000_S4300807/d31-x01-y03","189") useOne("/JADE_OPAL_2000_S4300807/d31-x01-y04","189") useOne("/OPAL_2004_S6132243/d01-x01-y01","91") useOne("/OPAL_2004_S6132243/d01-x01-y02","133") useOne("/OPAL_2004_S6132243/d01-x01-y03","177") useOne("/OPAL_2004_S6132243/d01-x01-y04","197") useOne("/OPAL_2004_S6132243/d02-x01-y01","91") useOne("/OPAL_2004_S6132243/d02-x01-y02","133") useOne("/OPAL_2004_S6132243/d02-x01-y03","177") useOne("/OPAL_2004_S6132243/d02-x01-y04","197") useOne("/OPAL_2004_S6132243/d03-x01-y01","91") useOne("/OPAL_2004_S6132243/d03-x01-y02","133") useOne("/OPAL_2004_S6132243/d03-x01-y03","177") useOne("/OPAL_2004_S6132243/d03-x01-y04","197") useOne("/OPAL_2004_S6132243/d04-x01-y01","91") useOne("/OPAL_2004_S6132243/d04-x01-y02","133") useOne("/OPAL_2004_S6132243/d04-x01-y03","177") useOne("/OPAL_2004_S6132243/d04-x01-y04","197") useOne("/OPAL_2004_S6132243/d05-x01-y01","91") useOne("/OPAL_2004_S6132243/d05-x01-y02","133") useOne("/OPAL_2004_S6132243/d05-x01-y03","177") useOne("/OPAL_2004_S6132243/d05-x01-y04","197") useOne("/OPAL_2004_S6132243/d06-x01-y01","91") useOne("/OPAL_2004_S6132243/d06-x01-y02","133") useOne("/OPAL_2004_S6132243/d06-x01-y03","177") useOne("/OPAL_2004_S6132243/d06-x01-y04","197") useOne("/OPAL_2004_S6132243/d07-x01-y01","91") useOne("/OPAL_2004_S6132243/d07-x01-y02","133") useOne("/OPAL_2004_S6132243/d07-x01-y03","177") useOne("/OPAL_2004_S6132243/d07-x01-y04","197") useOne("/OPAL_2004_S6132243/d08-x01-y01","91") useOne("/OPAL_2004_S6132243/d08-x01-y02","133") useOne("/OPAL_2004_S6132243/d08-x01-y03","177") useOne("/OPAL_2004_S6132243/d08-x01-y04","197") useOne("/OPAL_2004_S6132243/d09-x01-y01","91") useOne("/OPAL_2004_S6132243/d09-x01-y02","133") useOne("/OPAL_2004_S6132243/d09-x01-y03","177") useOne("/OPAL_2004_S6132243/d09-x01-y04","197") useOne("/OPAL_2004_S6132243/d10-x01-y01","91") useOne("/OPAL_2004_S6132243/d10-x01-y02","133") useOne("/OPAL_2004_S6132243/d10-x01-y03","177") useOne("/OPAL_2004_S6132243/d10-x01-y04","197") useOne("/OPAL_2004_S6132243/d11-x01-y01","91") useOne("/OPAL_2004_S6132243/d11-x01-y02","133") useOne("/OPAL_2004_S6132243/d11-x01-y03","177") useOne("/OPAL_2004_S6132243/d11-x01-y04","197") useOne("/OPAL_2004_S6132243/d12-x01-y01","91") useOne("/OPAL_2004_S6132243/d12-x01-y02","133") useOne("/OPAL_2004_S6132243/d12-x01-y03","177") useOne("/OPAL_2004_S6132243/d12-x01-y04","197") useOne("/OPAL_2004_S6132243/d13-x01-y01","91") useOne("/OPAL_2004_S6132243/d13-x01-y02","133") useOne("/OPAL_2004_S6132243/d13-x01-y03","177") useOne("/OPAL_2004_S6132243/d13-x01-y04","197") useOne("/OPAL_2004_S6132243/d14-x01-y01","91") useOne("/OPAL_2004_S6132243/d14-x01-y02","133") useOne("/OPAL_2004_S6132243/d14-x01-y03","177") useOne("/OPAL_2004_S6132243/d14-x01-y04","197") useOne("/OPAL_2004_S6132243/d15-x01-y01","91") useOne("/OPAL_2004_S6132243/d15-x01-y02","133") useOne("/OPAL_2004_S6132243/d15-x01-y03","177") useOne("/OPAL_2004_S6132243/d15-x01-y04","197") useOne("/OPAL_2004_S6132243/d16-x01-y01","91") useOne("/OPAL_2004_S6132243/d16-x01-y02","133") useOne("/OPAL_2004_S6132243/d16-x01-y03","177") useOne("/OPAL_2004_S6132243/d16-x01-y04","197") useOne("/OPAL_2004_S6132243/d17-x01-y01","91") useOne("/OPAL_2004_S6132243/d17-x01-y02","133") useOne("/OPAL_2004_S6132243/d17-x01-y03","177") useOne("/OPAL_2004_S6132243/d17-x01-y04","197") useOne("/OPAL_2004_S6132243/d18-x01-y01","91") useOne("/OPAL_2004_S6132243/d18-x01-y02","133") useOne("/OPAL_2004_S6132243/d18-x01-y03","177") useOne("/OPAL_2004_S6132243/d18-x01-y04","197") useOne("/OPAL_2004_S6132243/d19-x01-y01","91") useOne("/OPAL_2004_S6132243/d19-x01-y02","133") useOne("/OPAL_2004_S6132243/d19-x01-y03","177") useOne("/OPAL_2004_S6132243/d19-x01-y04","197") useOne("/OPAL_2004_S6132243/d20-x01-y01","91") useOne("/OPAL_2004_S6132243/d20-x01-y02","133") useOne("/OPAL_2004_S6132243/d20-x01-y03","177") useOne("/OPAL_2004_S6132243/d20-x01-y04","197") useOne("/OPAL_2004_S6132243/d21-x01-y01","91") useOne("/OPAL_2004_S6132243/d21-x01-y02","133") useOne("/OPAL_2004_S6132243/d21-x01-y03","177") useOne("/OPAL_2004_S6132243/d21-x01-y04","197") useOne("/OPAL_2004_S6132243/d22-x01-y01","91") useOne("/OPAL_2004_S6132243/d22-x01-y02","133") useOne("/OPAL_2004_S6132243/d22-x01-y03","177") useOne("/OPAL_2004_S6132243/d22-x01-y04","197") useOne("/OPAL_2004_S6132243/d23-x01-y01","91") useOne("/OPAL_2004_S6132243/d23-x01-y02","133") useOne("/OPAL_2004_S6132243/d23-x01-y03","177") useOne("/OPAL_2004_S6132243/d23-x01-y04","197") useOne("/OPAL_2004_S6132243/d24-x01-y01","91") useOne("/OPAL_2004_S6132243/d24-x01-y02","133") useOne("/OPAL_2004_S6132243/d24-x01-y03","177") useOne("/OPAL_2004_S6132243/d24-x01-y04","197") useOne("/OPAL_2004_S6132243/d25-x01-y01","91") useOne("/OPAL_2004_S6132243/d25-x01-y02","133") useOne("/OPAL_2004_S6132243/d25-x01-y03","177") useOne("/OPAL_2004_S6132243/d25-x01-y04","197") useOne("/OPAL_2004_S6132243/d26-x01-y01","91") useOne("/OPAL_2004_S6132243/d26-x01-y02","133") useOne("/OPAL_2004_S6132243/d26-x01-y03","177") useOne("/OPAL_2004_S6132243/d26-x01-y04","197") merge( "/OPAL_2002_S5361494/d01-x01-y01") merge( "/OPAL_2002_S5361494/d01-x01-y02") merge( "/OPAL_2002_S5361494/d01-x01-y03") merge( "/OPAL_2002_S5361494/d01-x01-y04") merge("/DELPHI_2000_S4328825/d01-x01-y01") merge("/DELPHI_2000_S4328825/d01-x01-y02") merge("/DELPHI_2000_S4328825/d01-x01-y03") merge("/DELPHI_2000_S4328825/d01-x01-y04") merge("/ALEPH_2004_S5765862/d01-x01-y01") useOne("/ALEPH_2004_S5765862/d02-x01-y01","133") useOne("/ALEPH_2004_S5765862/d03-x01-y01","161") useOne("/ALEPH_2004_S5765862/d04-x01-y01","172") useOne("/ALEPH_2004_S5765862/d05-x01-y01","183") useOne("/ALEPH_2004_S5765862/d06-x01-y01","189") useOne("/ALEPH_2004_S5765862/d07-x01-y01","196") useOne("/ALEPH_2004_S5765862/d08-x01-y01","200") useOne("/ALEPH_2004_S5765862/d09-x01-y01","206") useOne("/ALEPH_2004_S5765862/d11-x01-y01","133") useOne("/ALEPH_2004_S5765862/d12-x01-y01","161") useOne("/ALEPH_2004_S5765862/d13-x01-y01","172") useOne("/ALEPH_2004_S5765862/d14-x01-y01","183") useOne("/ALEPH_2004_S5765862/d15-x01-y01","189") useOne("/ALEPH_2004_S5765862/d16-x01-y01","196") useOne("/ALEPH_2004_S5765862/d17-x01-y01","200") useOne("/ALEPH_2004_S5765862/d18-x01-y01","206") useOne("/ALEPH_2004_S5765862/d19-x01-y01","133") useOne("/ALEPH_2004_S5765862/d20-x01-y01","161") useOne("/ALEPH_2004_S5765862/d21-x01-y01","172") useOne("/ALEPH_2004_S5765862/d22-x01-y01","183") useOne("/ALEPH_2004_S5765862/d23-x01-y01","189") useOne("/ALEPH_2004_S5765862/d24-x01-y01","196") useOne("/ALEPH_2004_S5765862/d25-x01-y01","200") useOne("/ALEPH_2004_S5765862/d26-x01-y01","206") useOne("/ALEPH_2004_S5765862/d27-x01-y01","133") useOne("/ALEPH_2004_S5765862/d28-x01-y01","161") useOne("/ALEPH_2004_S5765862/d29-x01-y01","172") useOne("/ALEPH_2004_S5765862/d30-x01-y01","183") useOne("/ALEPH_2004_S5765862/d31-x01-y01","189") useOne("/ALEPH_2004_S5765862/d32-x01-y01","196") useOne("/ALEPH_2004_S5765862/d33-x01-y01","200") useOne("/ALEPH_2004_S5765862/d34-x01-y01","206") useOne("/ALEPH_2004_S5765862/d35-x01-y01","206") useOne("/ALEPH_2004_S5765862/d36-x01-y01","133") useOne("/ALEPH_2004_S5765862/d37-x01-y01","161") useOne("/ALEPH_2004_S5765862/d38-x01-y01","172") useOne("/ALEPH_2004_S5765862/d39-x01-y01","183") useOne("/ALEPH_2004_S5765862/d40-x01-y01","189") useOne("/ALEPH_2004_S5765862/d41-x01-y01","196") useOne("/ALEPH_2004_S5765862/d42-x01-y01","200") useOne("/ALEPH_2004_S5765862/d43-x01-y01","206") useOne("/ALEPH_2004_S5765862/d44-x01-y01","133") useOne("/ALEPH_2004_S5765862/d45-x01-y01","161") useOne("/ALEPH_2004_S5765862/d46-x01-y01","172") useOne("/ALEPH_2004_S5765862/d47-x01-y01","183") useOne("/ALEPH_2004_S5765862/d48-x01-y01","189") useOne("/ALEPH_2004_S5765862/d49-x01-y01","196") useOne("/ALEPH_2004_S5765862/d50-x01-y01","200") useOne("/ALEPH_2004_S5765862/d51-x01-y01","206") useOne("/ALEPH_2004_S5765862/d54-x01-y01","91") useOne("/ALEPH_2004_S5765862/d55-x01-y01","133") useOne("/ALEPH_2004_S5765862/d56-x01-y01","161") useOne("/ALEPH_2004_S5765862/d57-x01-y01","172") useOne("/ALEPH_2004_S5765862/d58-x01-y01","183") useOne("/ALEPH_2004_S5765862/d59-x01-y01","189") useOne("/ALEPH_2004_S5765862/d60-x01-y01","200") useOne("/ALEPH_2004_S5765862/d61-x01-y01","206") useOne("/ALEPH_2004_S5765862/d62-x01-y01","91") useOne("/ALEPH_2004_S5765862/d63-x01-y01","133") useOne("/ALEPH_2004_S5765862/d64-x01-y01","161") useOne("/ALEPH_2004_S5765862/d65-x01-y01","172") useOne("/ALEPH_2004_S5765862/d66-x01-y01","183") useOne("/ALEPH_2004_S5765862/d67-x01-y01","189") useOne("/ALEPH_2004_S5765862/d68-x01-y01","200") useOne("/ALEPH_2004_S5765862/d69-x01-y01","206") useOne("/ALEPH_2004_S5765862/d70-x01-y01","91") useOne("/ALEPH_2004_S5765862/d71-x01-y01","133") useOne("/ALEPH_2004_S5765862/d72-x01-y01","161") useOne("/ALEPH_2004_S5765862/d73-x01-y01","172") useOne("/ALEPH_2004_S5765862/d74-x01-y01","183") useOne("/ALEPH_2004_S5765862/d75-x01-y01","189") useOne("/ALEPH_2004_S5765862/d76-x01-y01","200") useOne("/ALEPH_2004_S5765862/d77-x01-y01","206") useOne("/ALEPH_2004_S5765862/d78-x01-y01","91") useOne("/ALEPH_2004_S5765862/d79-x01-y01","133") useOne("/ALEPH_2004_S5765862/d80-x01-y01","161") useOne("/ALEPH_2004_S5765862/d81-x01-y01","172") useOne("/ALEPH_2004_S5765862/d82-x01-y01","183") useOne("/ALEPH_2004_S5765862/d83-x01-y01","189") useOne("/ALEPH_2004_S5765862/d84-x01-y01","200") useOne("/ALEPH_2004_S5765862/d85-x01-y01","206") useOne("/ALEPH_2004_S5765862/d86-x01-y01","91") useOne("/ALEPH_2004_S5765862/d87-x01-y01","133") useOne("/ALEPH_2004_S5765862/d88-x01-y01","161") useOne("/ALEPH_2004_S5765862/d89-x01-y01","172") useOne("/ALEPH_2004_S5765862/d90-x01-y01","183") useOne("/ALEPH_2004_S5765862/d91-x01-y01","189") useOne("/ALEPH_2004_S5765862/d92-x01-y01","200") useOne("/ALEPH_2004_S5765862/d93-x01-y01","206") useOne("/ALEPH_2004_S5765862/d94-x01-y01","91") useOne("/ALEPH_2004_S5765862/d95-x01-y01","133") useOne("/ALEPH_2004_S5765862/d96-x01-y01","161") useOne("/ALEPH_2004_S5765862/d97-x01-y01","172") useOne("/ALEPH_2004_S5765862/d98-x01-y01","183") useOne("/ALEPH_2004_S5765862/d99-x01-y01","189") useOne("/ALEPH_2004_S5765862/d100-x01-y01","200") useOne("/ALEPH_2004_S5765862/d101-x01-y01","206") useOne("/ALEPH_2004_S5765862/d102-x01-y01","91") useOne("/ALEPH_2004_S5765862/d103-x01-y01","133") useOne("/ALEPH_2004_S5765862/d104-x01-y01","161") useOne("/ALEPH_2004_S5765862/d105-x01-y01","172") useOne("/ALEPH_2004_S5765862/d106-x01-y01","183") useOne("/ALEPH_2004_S5765862/d107-x01-y01","189") useOne("/ALEPH_2004_S5765862/d108-x01-y01","200") useOne("/ALEPH_2004_S5765862/d109-x01-y01","206") useOne("/ALEPH_2004_S5765862/d110-x01-y01","91") useOne("/ALEPH_2004_S5765862/d111-x01-y01","133") useOne("/ALEPH_2004_S5765862/d112-x01-y01","161") useOne("/ALEPH_2004_S5765862/d113-x01-y01","172") useOne("/ALEPH_2004_S5765862/d114-x01-y01","183") useOne("/ALEPH_2004_S5765862/d115-x01-y01","189") useOne("/ALEPH_2004_S5765862/d116-x01-y01","200") useOne("/ALEPH_2004_S5765862/d117-x01-y01","206") useOne("/ALEPH_2004_S5765862/d118-x01-y01","91") useOne("/ALEPH_2004_S5765862/d119-x01-y01","133") useOne("/ALEPH_2004_S5765862/d120-x01-y01","161") useOne("/ALEPH_2004_S5765862/d121-x01-y01","172") useOne("/ALEPH_2004_S5765862/d122-x01-y01","183") useOne("/ALEPH_2004_S5765862/d123-x01-y01","189") useOne("/ALEPH_2004_S5765862/d124-x01-y01","200") useOne("/ALEPH_2004_S5765862/d125-x01-y01","206") useOne("/ALEPH_2004_S5765862/d126-x01-y01","133") useOne("/ALEPH_2004_S5765862/d127-x01-y01","161") useOne("/ALEPH_2004_S5765862/d128-x01-y01","172") useOne("/ALEPH_2004_S5765862/d129-x01-y01","183") useOne("/ALEPH_2004_S5765862/d130-x01-y01","189") useOne("/ALEPH_2004_S5765862/d131-x01-y01","200") useOne("/ALEPH_2004_S5765862/d132-x01-y01","206") useOne("/ALEPH_2004_S5765862/d133-x01-y01","91") useOne("/ALEPH_2004_S5765862/d134-x01-y01","133") useOne("/ALEPH_2004_S5765862/d135-x01-y01","161") useOne("/ALEPH_2004_S5765862/d136-x01-y01","172") useOne("/ALEPH_2004_S5765862/d137-x01-y01","183") useOne("/ALEPH_2004_S5765862/d138-x01-y01","189") useOne("/ALEPH_2004_S5765862/d139-x01-y01","200") useOne("/ALEPH_2004_S5765862/d140-x01-y01","206") useOne("/ALEPH_2004_S5765862/d141-x01-y01","91") useOne("/ALEPH_2004_S5765862/d142-x01-y01","133") useOne("/ALEPH_2004_S5765862/d143-x01-y01","161") useOne("/ALEPH_2004_S5765862/d144-x01-y01","172") useOne("/ALEPH_2004_S5765862/d145-x01-y01","183") useOne("/ALEPH_2004_S5765862/d146-x01-y01","189") useOne("/ALEPH_2004_S5765862/d147-x01-y01","200") useOne("/ALEPH_2004_S5765862/d148-x01-y01","206") useOne("/ALEPH_2004_S5765862/d149-x01-y01","91") useOne("/ALEPH_2004_S5765862/d150-x01-y01","133") useOne("/ALEPH_2004_S5765862/d151-x01-y01","161") useOne("/ALEPH_2004_S5765862/d152-x01-y01","172") useOne("/ALEPH_2004_S5765862/d153-x01-y01","183") useOne("/ALEPH_2004_S5765862/d154-x01-y01","189") useOne("/ALEPH_2004_S5765862/d155-x01-y01","200") useOne("/ALEPH_2004_S5765862/d156-x01-y01","206") useOne("/ALEPH_2004_S5765862/d157-x01-y01","91") useOne("/ALEPH_2004_S5765862/d158-x01-y01","133") useOne("/ALEPH_2004_S5765862/d159-x01-y01","161") useOne("/ALEPH_2004_S5765862/d160-x01-y01","172") useOne("/ALEPH_2004_S5765862/d161-x01-y01","183") useOne("/ALEPH_2004_S5765862/d162-x01-y01","189") useOne("/ALEPH_2004_S5765862/d163-x01-y01","200") useOne("/ALEPH_2004_S5765862/d164-x01-y01","206") useOne("/ALEPH_2004_S5765862/d165-x01-y01","91") useOne("/ALEPH_2004_S5765862/d166-x01-y01","133") useOne("/ALEPH_2004_S5765862/d167-x01-y01","161") useOne("/ALEPH_2004_S5765862/d168-x01-y01","172") useOne("/ALEPH_2004_S5765862/d169-x01-y01","183") useOne("/ALEPH_2004_S5765862/d170-x01-y01","189") useOne("/ALEPH_2004_S5765862/d172-x01-y01","206") useOne("/ALEPH_2004_S5765862/d173-x01-y01","91") useOne("/ALEPH_2004_S5765862/d174-x01-y01","133") useOne("/ALEPH_2004_S5765862/d175-x01-y01","161") useOne("/ALEPH_2004_S5765862/d176-x01-y01","172") useOne("/ALEPH_2004_S5765862/d177-x01-y01","183") useOne("/ALEPH_2004_S5765862/d178-x01-y01","189") useOne("/ALEPH_2004_S5765862/d179-x01-y01","200") useOne("/ALEPH_2004_S5765862/d180-x01-y01","91") useOne("/ALEPH_2004_S5765862/d181-x01-y01","133") useOne("/ALEPH_2004_S5765862/d182-x01-y01","161") useOne("/ALEPH_2004_S5765862/d183-x01-y01","172") useOne("/ALEPH_2004_S5765862/d184-x01-y01","183") useOne("/ALEPH_2004_S5765862/d185-x01-y01","189") useOne("/ALEPH_2004_S5765862/d186-x01-y01","200") useOne("/ALEPH_2004_S5765862/d187-x01-y01","91") useOne("/ALEPH_2004_S5765862/d188-x01-y01","133") useOne("/ALEPH_2004_S5765862/d189-x01-y01","161") useOne("/ALEPH_2004_S5765862/d190-x01-y01","172") useOne("/ALEPH_2004_S5765862/d191-x01-y01","183") useOne("/ALEPH_2004_S5765862/d192-x01-y01","189") useOne("/ALEPH_2004_S5765862/d193-x01-y01","200") useOne("/ALEPH_2004_S5765862/d194-x01-y01","206") useOne("/ALEPH_2004_S5765862/d195-x01-y01","91") useOne("/ALEPH_2004_S5765862/d196-x01-y01","133") useOne("/ALEPH_2004_S5765862/d197-x01-y01","161") useOne("/ALEPH_2004_S5765862/d198-x01-y01","172") useOne("/ALEPH_2004_S5765862/d199-x01-y01","183") useOne("/ALEPH_2004_S5765862/d200-x01-y01","189") useOne("/ALEPH_2004_S5765862/d201-x01-y01","200") useOne("/ALEPH_2004_S5765862/d202-x01-y01","206") useOne("/ALEPH_2004_S5765862/d203-x01-y01","91") useOne("/ALEPH_2004_S5765862/d204-x01-y01","133") useOne("/ALEPH_2004_S5765862/d205-x01-y01","161") useOne("/ALEPH_2004_S5765862/d206-x01-y01","172") useOne("/ALEPH_2004_S5765862/d207-x01-y01","183") useOne("/ALEPH_2004_S5765862/d208-x01-y01","189") useOne("/ALEPH_2004_S5765862/d209-x01-y01","200") useOne("/ALEPH_2004_S5765862/d210-x01-y01","206") useOne("/ALEPH_2004_S5765862/d211-x01-y01","91") useOne("/ALEPH_2004_S5765862/d212-x01-y01","133") useOne("/ALEPH_2004_S5765862/d213-x01-y01","161") useOne("/ALEPH_2004_S5765862/d214-x01-y01","172") useOne("/ALEPH_2004_S5765862/d215-x01-y01","183") useOne("/ALEPH_2004_S5765862/d216-x01-y01","189") useOne("/ALEPH_2004_S5765862/d217-x01-y01","200") useOne("/ALEPH_2004_S5765862/d218-x01-y01","206") useOne("/ALEPH_2004_S5765862/d219-x01-y01","91") useOne("/ALEPH_2004_S5765862/d220-x01-y01","133") useOne("/ALEPH_2004_S5765862/d221-x01-y01","161") useOne("/ALEPH_2004_S5765862/d222-x01-y01","172") useOne("/ALEPH_2004_S5765862/d223-x01-y01","183") useOne("/ALEPH_2004_S5765862/d224-x01-y01","189") useOne("/ALEPH_2004_S5765862/d225-x01-y01","200") useOne("/ALEPH_2004_S5765862/d226-x01-y01","206") useOne("/ALEPH_2004_S5765862/d227-x01-y01","91") useOne("/ALEPH_2004_S5765862/d228-x01-y01","133") useOne("/ALEPH_2004_S5765862/d229-x01-y01","161") useOne("/ALEPH_2004_S5765862/d230-x01-y01","172") useOne("/ALEPH_2004_S5765862/d231-x01-y01","183") useOne("/ALEPH_2004_S5765862/d232-x01-y01","189") useOne("/ALEPH_2004_S5765862/d233-x01-y01","200") useOne("/ALEPH_2004_S5765862/d234-x01-y01","206") # hadron multiplicities useOne("/PDG_HADRON_MULTIPLICITIES/d01-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d02-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d03-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d04-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d05-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d06-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d07-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d08-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d09-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d13-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d15-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d17-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d18-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d19-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d20-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d21-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d22-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d23-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d25-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d31-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d38-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d39-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d40-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d44-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d45-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d46-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d47-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d48-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d49-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d50-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d51-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d53-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d54-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES/d01-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d02-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d03-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d04-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d05-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d06-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d07-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d08-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d09-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d13-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d15-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d18-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d19-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d20-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d21-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d22-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d31-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d33-x01-y01","35") useOne("/PDG_HADRON_MULTIPLICITIES/d34-x01-y01","35") useOne("/PDG_HADRON_MULTIPLICITIES/d38-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d39-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d44-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d46-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d47-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d48-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d50-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d51-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES/d01-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d02-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d03-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d04-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d05-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d06-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d07-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d08-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d09-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d10-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d11-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d12-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d13-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d14-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d15-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d16-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d17-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d18-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d19-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d20-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d21-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d23-x01-y02","91") useOne("/PDG_HADRON_MULTIPLICITIES/d24-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d25-x01-y02","91") useOne("/PDG_HADRON_MULTIPLICITIES/d26-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d27-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d28-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d29-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d30-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d31-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d32-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d34-x01-y02","91") useOne("/PDG_HADRON_MULTIPLICITIES/d35-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d36-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d37-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d38-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d39-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d40-x01-y02","91") useOne("/PDG_HADRON_MULTIPLICITIES/d41-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d42-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d43-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d44-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d45-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d46-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d47-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d48-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d49-x01-y02","91") useOne("/PDG_HADRON_MULTIPLICITIES/d50-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d51-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES/d52-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES/d54-x01-y02","91") useOne("/PDG_HADRON_MULTIPLICITIES/d01-x01-y04","177") useOne("/PDG_HADRON_MULTIPLICITIES/d03-x01-y04","177") useOne("/PDG_HADRON_MULTIPLICITIES/d04-x01-y04","177") useOne("/PDG_HADRON_MULTIPLICITIES/d38-x01-y04","177") useOne("/PDG_HADRON_MULTIPLICITIES/d39-x01-y04","177") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d02-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d03-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d04-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d05-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d06-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d07-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d08-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d09-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d13-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d15-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d17-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d18-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d19-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d20-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d21-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d22-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d23-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d25-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d31-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d38-x01-y01","10" ) useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d39-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d40-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d44-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d45-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d46-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d47-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d48-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d49-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d50-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d51-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d53-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d54-x01-y01","10") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d02-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d03-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d04-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d05-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d06-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d07-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d08-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d09-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d13-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d15-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d18-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d19-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d20-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d21-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d22-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d31-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d33-x01-y01","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d34-x01-y01","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d38-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d39-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d44-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d46-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d47-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d48-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d50-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d51-x01-y02","35") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d02-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d03-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d04-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d05-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d06-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d07-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d08-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d09-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d10-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d11-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d12-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d13-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d14-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d15-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d16-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d17-x01-y02","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d18-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d19-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d20-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d21-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d23-x01-y02","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d24-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d25-x01-y02","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d26-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d27-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d28-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d29-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d30-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d31-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d32-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d34-x01-y02","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d35-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d36-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d37-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d38-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d39-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d40-x01-y02","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d41-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d42-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d43-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d44-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d45-x01-y02","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d46-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d47-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d48-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d49-x01-y02","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d50-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d51-x01-y03","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d52-x01-y01","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d54-x01-y02","91") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d03-x01-y04","177") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d04-x01-y04","177") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d38-x01-y04","177") useOne("/PDG_HADRON_MULTIPLICITIES_RATIOS/d39-x01-y04","177") # Choose output file name = args[0]+".aida" out = open(name, "w") ## Write out merged histos out.write('\n') out.write('\n') out.write('\n') out.write(' \n') for hpath, h in sorted(outhistos.iteritems()): logging.debug("hpath = %s" % hpath) out.write(h.asAIDA() + "\n\n") out.write('\n') sys.exit(0) herwig++-2.6.0.orig/Tests/python/merge-LHC-EW0000755000175000017500000001032411754474774021364 0ustar sylvestresylvestre#! /usr/bin/env python import lighthisto import logging import sys import os, copy, re """%prog Script for merging aida files """ import sys if sys.version_info[:3] < (2,4,0): print "rivet scripts require Python version >= 2.4.0... exiting" sys.exit(1) ## Try to load faster but non-standard cElementTree module try: import xml.etree.cElementTree as ET except ImportError: try: import cElementTree as ET except ImportError: try: import xml.etree.ElementTree as ET except: sys.stderr.write("Can't load the ElementTree XML parser: please install it!\n") sys.exit(1) if __name__ == "__main__": import logging from optparse import OptionParser, OptionGroup parser = OptionParser(usage="%prog aidafile aidafile2 [...]") parser.add_option("-o", "--out", dest="OUTFILE", default="-") parser.add_option("--append", dest="APPEND_OUTPUT", action="store_true", default=False) verbgroup = OptionGroup(parser, "Verbosity control") verbgroup.add_option("-v", "--verbose", action="store_const", const=logging.DEBUG, dest="LOGLEVEL", default=logging.INFO, help="print debug (very verbose) messages") verbgroup.add_option("-q", "--quiet", action="store_const", const=logging.WARNING, dest="LOGLEVEL", default=logging.INFO, help="be very quiet") parser.add_option_group(verbgroup) (opts, args) = parser.parse_args() logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s") ## Prefix used in dat file headers headerprefix = "# " ## Check args if len(args) < 1: logging.error("Must specify at least one AIDA histogram file") sys.exit(1) ## Get histos outhistos={} for file in args: if not os.access(file, os.R_OK): logging.error("%s can not be read" % file) break try: tree = ET.parse(file) except: logging.error("%s can not be parsed as XML" % file) break tree = ET.parse(file) ## Get histos from this AIDA file for dps in tree.findall("dataPointSet"): h = lighthisto.Histo.fromDPS(dps) if(h.fullPath().find("ATLAS_2010_S8919674")>0) : if((h.fullPath().find("d01")>0 or h.fullPath().find("d05")>0 or h.fullPath().find("d07")>0) and file.find("-e")>0) : outhistos[h.fullPath()] = h elif((h.fullPath().find("d02")>0 or h.fullPath().find("d06")>0 or h.fullPath().find("d08")>0) and file.find("-mu")>0) : outhistos[h.fullPath()] = h elif (h.fullPath().find("ATLAS_2011_S9131140")>0) : if(h.fullPath().find("d01")>0 and file.find("-e")>0) : outhistos[h.fullPath()] = h elif(h.fullPath().find("d02")>0 and file.find("-mu")>0) : outhistos[h.fullPath()] = h elif (h.fullPath().find("ATLAS_2011_I925932")>0) : if(h.fullPath().find("d01")>0 and file.find("-e")>0) : outhistos[h.fullPath()] = h elif(h.fullPath().find("d02")>0 and file.find("-mu")>0) : outhistos[h.fullPath()] = h else : outhistos[h.fullPath()] = h ## Choose output file out = None if opts.OUTFILE == "-": out = sys.stdout else: if opts.APPEND_OUTPUT: out = open(opts.OUTFILE, "a") else: out = open(opts.OUTFILE, "w") # Choose output file out = None if opts.OUTFILE == "-": out = sys.stdout else: if opts.APPEND_OUTPUT: out = open(opts.OUTFILE, "a") else: out = open(opts.OUTFILE, "w") ## Write out merged histos out.write('\n') out.write('\n') out.write('\n') out.write(' \n') for hpath, h in sorted(outhistos.iteritems()): logging.debug("hpath = %s" % hpath) out.write(h.asAIDA() + "\n\n") out.write('\n') sys.exit(0) herwig++-2.6.0.orig/Tests/python/merge-LHC-Jets0000755000175000017500000014276011754474774021770 0ustar sylvestresylvestre#! /usr/bin/env python import lighthisto import logging import sys if sys.version_info[:3] < (2,4,0): print "rivet scripts require Python version >= 2.4.0... exiting" sys.exit(1) import os, copy, re from math import sqrt ## Try to load faster but non-standard cElementTree module try: import xml.etree.cElementTree as ET except ImportError: try: import cElementTree as ET except ImportError: try: import xml.etree.ElementTree as ET except: sys.stderr.write("Can't load the ElementTree XML parser: please install it!\n") sys.exit(1) # ############################################# def fillAbove(desthisto, sourcehistosbyptmin): for i,b in enumerate(desthisto.getBins()): ## Fill bins with pT-ordered histos (so that 'highest always wins') for ptmin, h in sorted(sourcehistosbyptmin.iteritems()): newb = h.getBin(i) if newb.xlow >= ptmin: b.val = newb.val b.errplus = newb.errplus b.errminus = newb.errminus b._focus= newb._focus def fillAboveTeV(desthisto, sourcehistosbyptmin): for i,b in enumerate(desthisto.getBins()): ## Fill bins with pT-ordered histos (so that 'highest always wins') for ptmin, h in sorted(sourcehistosbyptmin.iteritems()): newb = h.getBin(i) if newb.xlow*500. >= ptmin: b.val = newb.val b.errplus = newb.errplus b.errminus = newb.errminus b._focus= newb._focus def mergeByPt(hpath, sqrts): global inhistos_pt global outhistos try: fillAbove(outhistos[hpath], inhistos_pt[hpath][float(sqrts)]) except: pass def mergeByPtTeV(hpath, sqrts): global inhistos_pt global outhistos try: fillAboveTeV(outhistos[hpath], inhistos_pt[hpath][float(sqrts)]) except: pass def mergeByMass(hpath, sqrts): global inhistos_mass global outhistos try: fillAbove(outhistos[hpath], inhistos_mass[hpath][float(sqrts)]) except: pass def mergeByMassTeV(hpath, sqrts): global inhistos_mass global outhistos try: fillAboveTeV(outhistos[hpath], inhistos_mass[hpath][float(sqrts)]) except: pass def useOnePt(hpath, sqrts, ptmin): global inhistos_pt global outhistos try: ## Find best pT_min match ptmins = inhistos_pt[hpath][float(sqrts)].keys() closest_ptmin = None for ptm in ptmins: if closest_ptmin is None or \ abs(ptm-float(ptmin)) < abs(closest_ptmin-float(ptmin)): closest_ptmin = ptm if closest_ptmin != float(ptmin): logging.warning("Inexact match for requested pTmin=%s: " % ptmin + \ "using pTmin=%e instead" % closest_ptmin) outhistos[hpath] = inhistos_pt[hpath][float(sqrts)][closest_ptmin] except: pass def useOneMass(hpath, sqrts, ptmin): global inhistos_pt global outhistos try: ## Find best pT_min match ptmins = inhistos_mass[hpath][float(sqrts)].keys() closest_ptmin = None for ptm in ptmins: if closest_ptmin is None or \ abs(ptm-float(ptmin)) < abs(closest_ptmin-float(ptmin)): closest_ptmin = ptm if closest_ptmin != float(ptmin): logging.warning("Inexact match for requested pTmin=%s: " % ptmin + \ "using pTmin=%e instead" % closest_ptmin) outhistos[hpath] = inhistos_mass[hpath][float(sqrts)][closest_ptmin] except: pass # ####################################### if __name__ == "__main__": import logging from optparse import OptionParser, OptionGroup parser = OptionParser(usage="%prog name") verbgroup = OptionGroup(parser, "Verbosity control") verbgroup.add_option("-v", "--verbose", action="store_const", const=logging.DEBUG, dest="LOGLEVEL", default=logging.INFO, help="print debug (very verbose) messages") verbgroup.add_option("-q", "--quiet", action="store_const", const=logging.WARNING, dest="LOGLEVEL", default=logging.INFO, help="be very quiet") parser.add_option_group(verbgroup) (opts, args) = parser.parse_args() logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s") ## Prefix used in dat file headers headerprefix = "# " aidafiles=["-900-UE.aida" ,"-2360-UE.aida" , "-7-UE.aida" ,"-900-UE-Long.aida", "-7-UE-Long.aida","-7-Jets-0.aida", "-7-Jets-All-1.aida","-7-Jets-All-2.aida", "-7-Jets-1.aida","-7-Jets-2.aida", "-7-Jets-3.aida","-7-Jets-4.aida","-7-Jets-5.aida", "-7-Jets-6.aida","-7-Jets-7.aida","-7-Jets-8.aida", "-7-Heavy-1.aida","-7-Heavy-2.aida","-7-Heavy-3.aida", "-7-Heavy-4.aida","-7-Heavy-5.aida"] ## Get histos inhistos_pt = {} inhistos_mass = {} outhistos={} weights = {} for f in aidafiles: file="LHC"+f sqrts=7000 if(file.find("-900-UE")>0) : sqrts=900 ptmin=0. elif(file.find("-2360-UE")>0) : sqrts=2360 ptmin=0. elif(file.find("-7-UE")>0) : ptmin=0. elif(file.find("-7-Jets-0")>0) : ptmin=4. elif(file.find("-7-Jets-1")>0) : ptmin=30. elif(file.find("-7-Jets-2")>0) : ptmin=40. elif(file.find("-7-Jets-3")>0) : ptmin=80. elif(file.find("-7-Jets-4")>0) : ptmin=110. elif(file.find("-7-Jets-5")>0) : ptmin=210. elif(file.find("-7-Jets-6")>0) : ptmin=260. elif(file.find("-7-Jets-7")>0) : ptmin=400. elif(file.find("-7-Jets-8")>0) : ptmin=600. elif(file.find("-7-Heavy-1.aida")>0) : ptmin=0. elif(file.find("-7-Heavy-2.aida")>0) : ptmin=20. elif(file.find("-7-Heavy-3.aida")>0) : ptmin=50. elif(file.find("-7-Heavy-4.aida")>0) : ptmin=80. elif(file.find("-7-Heavy-5.aida")>0) : ptmin=110. elif(file.find("-7-Top.aida")>0) : ptmin=0. elif(file.find("-7-Jets-All-1")>0) : ptmin=25. elif(file.find("-7-Jets-All-2")>0) : ptmin=50. if not os.access(file, os.R_OK): logging.error("%s can not be read" % file) break try: tree = ET.parse(file) except: logging.error("%s can not be parsed as XML" % file) break tree = ET.parse(file) ## Get histos from this AIDA file for dps in tree.findall("dataPointSet"): h = lighthisto.Histo.fromDPS(dps) # di-jet decorrelations # jet shapes if(h.fullPath().find("S8924791")>0 or h.fullPath().find("S8971293")>0 or h.fullPath().find("S8817804")>0 or h.fullPath().find("I1082936")>0 or h.fullPath().find("S8994773")>0 or h.fullPath().find("S8918562")>0 or h.fullPath().find("S8624100")>0 or h.fullPath().find("S8625980")>0 or h.fullPath().find("S8894728")>0 or h.fullPath().find("S8957746")>0 or h.fullPath().find("S9126244")>0 or h.fullPath().find("S9120041")>0 or h.fullPath().find("S8950903")>0 or h.fullPath().find("S9086218")>0 or h.fullPath().find("S9088458")>0 or h.fullPath().find("I919017" )>0 or h.fullPath().find("I926145" )>0 or h.fullPath().find("S8941262")>0 or h.fullPath().find("S8973270")>0 or h.fullPath().find("I1082009")>0) : if not inhistos_pt.has_key(h.fullPath()): inhistos_pt[h.fullPath()] = {} tmpE = inhistos_pt[h.fullPath()] if not tmpE.has_key(sqrts): tmpE[sqrts] = {} tmpP = tmpE[sqrts] if not tmpP.has_key(ptmin): tmpP[ptmin] = h else: raise Exception("A set with ptmin = %s already exists" % ( ptmin)) else : outhistos[h.fullPath()] = h aidafiles=["-7-Jets-9.aida" ,"-7-Jets-10.aida", "-7-Jets-11.aida","-7-Jets-12.aida","-7-Jets-13.aida"] for f in aidafiles: file="LHC"+f if(file.find("-7-Jets-9.aida")>0) : sqrts=7000 mass=110 elif(file.find("-7-Jets-10.aida")>0) : sqrts=7000 mass=300 elif(file.find("-7-Jets-11.aida")>0) : sqrts=7000 mass=800 elif(file.find("-7-Jets-12.aida")>0) : sqrts=7000 mass=1200 elif(file.find("-7-Jets-13.aida")>0) : sqrts=7000 mass=2000 if not os.access(file, os.R_OK): logging.error("%s can not be read" % file) break try: tree = ET.parse(file) except: logging.error("%s can not be parsed as XML" % file) break tree = ET.parse(file) ## Get histos from this AIDA file for dps in tree.findall("dataPointSet"): h = lighthisto.Histo.fromDPS(dps) if(h.fullPath().find("8817804")>0 or h.fullPath().find("1082936")>0 or h.fullPath().find("8968497")>0) : if not inhistos_mass.has_key(h.fullPath()): inhistos_mass[h.fullPath()] = {} tmpE = inhistos_mass[h.fullPath()] if not tmpE.has_key(sqrts): tmpE[sqrts] = {} tmpP = tmpE[sqrts] if not tmpP.has_key(mass): tmpP[mass] = h else: raise Exception("A set with mass = %s already exists" % ( mass)) ## Make empty output histos if needed for hpath,hsets in inhistos_pt.iteritems(): if( hpath.find("8924791")>0 or h.fullPath().find("8971293")>0 or h.fullPath().find("8817804")>0 or h.fullPath().find("8968497")>0 or h.fullPath().find("9126244")>0 or h.fullPath().find("1082936")>0 ) : workhisto = copy.deepcopy(hsets.values()[0].values()[0]) outhistos[hpath] = workhisto ## Empty the bin set for histos which we're going to merge for b in outhistos[hpath]: b.val = 0 b.errplus = 0 b.errminus = 0 b._focus= None logging.info("Processing CMS_2011_S8957746") useOnePt("/CMS_2011_S8957746/d01-x01-y01", "7000", "80" ) useOnePt("/CMS_2011_S8957746/d02-x01-y01", "7000", "80" ) useOnePt("/CMS_2011_S8957746/d03-x01-y01", "7000", "110" ) useOnePt("/CMS_2011_S8957746/d04-x01-y01", "7000", "110" ) useOnePt("/CMS_2011_S8957746/d05-x01-y01", "7000", "210" ) useOnePt("/CMS_2011_S8957746/d06-x01-y01", "7000", "210" ) logging.info("Processing ATLAS_2010_S8894728") useOnePt("/ATLAS_2010_S8894728/d01-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d01-x01-y02", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d01-x01-y03", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d02-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d02-x01-y02", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d02-x01-y03", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d03-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d03-x01-y02", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d03-x01-y03", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d04-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d04-x01-y02", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d04-x01-y03", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d05-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d06-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d07-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d08-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d09-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d09-x01-y02", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d09-x01-y03", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d10-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d10-x01-y02", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d10-x01-y03", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d11-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d11-x01-y02", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d11-x01-y03", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d12-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d12-x01-y02", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d12-x01-y03", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d13-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d13-x01-y02", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d13-x01-y03", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d13-x01-y04", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d14-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d14-x01-y02", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d14-x01-y03", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d14-x01-y04", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d15-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d15-x01-y02", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d15-x01-y03", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d15-x01-y04", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d16-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d16-x01-y02", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d16-x01-y03", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d16-x01-y04", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d17-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d17-x01-y02", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d17-x01-y03", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d18-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d18-x01-y02", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d18-x01-y03", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d19-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d19-x01-y02", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d19-x01-y03", "900", "0" ) useOnePt("/ATLAS_2010_S8894728/d20-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d20-x01-y02", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d20-x01-y03", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d21-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8894728/d22-x01-y01", "7000", "0" ) logging.info("Processing ATLAS_2011_S8994773") useOnePt("/ATLAS_2011_S8994773/d01-x01-y01", "900", "0" ) useOnePt("/ATLAS_2011_S8994773/d02-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2011_S8994773/d03-x01-y01", "900", "0" ) useOnePt("/ATLAS_2011_S8994773/d04-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2011_S8994773/d13-x01-y01", "900", "0" ) useOnePt("/ATLAS_2011_S8994773/d13-x01-y02", "900", "0" ) useOnePt("/ATLAS_2011_S8994773/d13-x01-y03", "900", "0" ) useOnePt("/ATLAS_2011_S8994773/d14-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2011_S8994773/d14-x01-y02", "7000", "0" ) useOnePt("/ATLAS_2011_S8994773/d14-x01-y03", "7000", "0" ) logging.info("Processing ALICE_2010_S8624100") useOnePt("/ALICE_2010_S8624100/d11-x01-y01", "900", "0" ) useOnePt("/ALICE_2010_S8624100/d12-x01-y01", "900", "0" ) useOnePt("/ALICE_2010_S8624100/d13-x01-y01", "900", "0" ) useOnePt("/ALICE_2010_S8624100/d17-x01-y01","2360", "0" ) useOnePt("/ALICE_2010_S8624100/d18-x01-y01","2360", "0" ) useOnePt("/ALICE_2010_S8624100/d19-x01-y01","2360", "0" ) logging.info("Processing ALICE_2010_S8625980") useOnePt("/ALICE_2010_S8625980/d03-x01-y01", "7000", "0" ) useOnePt("/ALICE_2010_S8625980/d04-x01-y01", "900", "0" ) useOnePt("/ALICE_2010_S8625980/d05-x01-y01", "2360", "0" ) useOnePt("/ALICE_2010_S8625980/d06-x01-y01", "7000", "0" ) logging.info("Processing ATLAS_2010_S8918562") useOnePt("/ATLAS_2010_S8918562/d01-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d02-x01-y01", "2360", "0" ) useOnePt("/ATLAS_2010_S8918562/d03-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d04-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d05-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d06-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d07-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d08-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d09-x01-y01", "2360", "0" ) useOnePt("/ATLAS_2010_S8918562/d10-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d11-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d12-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d13-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d14-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d15-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d16-x01-y01", "2360", "0" ) useOnePt("/ATLAS_2010_S8918562/d17-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d18-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d19-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d20-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d21-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d22-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d23-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d24-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d25-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d26-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d27-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d28-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d29-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d30-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d31-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d32-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d33-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d34-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d35-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d36-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d37-x01-y01", "7000", "0" ) useOnePt("/ATLAS_2010_S8918562/d38-x01-y01", "900", "0" ) useOnePt("/ATLAS_2010_S8918562/d39-x01-y01", "7000", "0" ) logging.info("Processing ATLAS_2011_S8971293") useOnePt("/ATLAS_2011_S8971293/d01-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S8971293/d01-x01-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S8971293/d01-x01-y03", "7000", "210" ) useOnePt("/ATLAS_2011_S8971293/d01-x01-y04", "7000", "260" ) useOnePt("/ATLAS_2011_S8971293/d01-x01-y05", "7000", "260" ) useOnePt("/ATLAS_2011_S8971293/d01-x01-y06", "7000", "400" ) useOnePt("/ATLAS_2011_S8971293/d01-x01-y07", "7000", "400" ) useOnePt("/ATLAS_2011_S8971293/d01-x01-y08", "7000", "600" ) useOnePt("/ATLAS_2011_S8971293/d01-x01-y09", "7000", "600" ) logging.info("Processing ATLAS_2011_S8924791") useOnePt("/ATLAS_2011_S8924791/d01-x01-y01", "7000", "30" ) useOnePt("/ATLAS_2011_S8924791/d01-x01-y02", "7000", "30" ) useOnePt("/ATLAS_2011_S8924791/d01-x02-y01", "7000", "30" ) useOnePt("/ATLAS_2011_S8924791/d01-x02-y02", "7000", "30" ) useOnePt("/ATLAS_2011_S8924791/d01-x03-y01", "7000", "30" ) useOnePt("/ATLAS_2011_S8924791/d01-x03-y02", "7000", "30" ) useOnePt("/ATLAS_2011_S8924791/d01-x04-y01", "7000", "30" ) useOnePt("/ATLAS_2011_S8924791/d01-x04-y02", "7000", "30" ) useOnePt("/ATLAS_2011_S8924791/d01-x05-y01", "7000", "30" ) useOnePt("/ATLAS_2011_S8924791/d01-x05-y02", "7000", "30" ) useOnePt("/ATLAS_2011_S8924791/d01-x06-y01", "7000", "30" ) useOnePt("/ATLAS_2011_S8924791/d01-x06-y02", "7000", "30" ) useOnePt("/ATLAS_2011_S8924791/d02-x01-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d02-x01-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d02-x02-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d02-x02-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d02-x03-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d02-x03-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d02-x04-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d02-x04-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d02-x05-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d02-x05-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d02-x06-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d02-x06-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d03-x01-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d03-x01-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d03-x02-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d03-x02-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d03-x03-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d03-x03-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d03-x04-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d03-x04-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d03-x05-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d03-x05-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d03-x06-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d03-x06-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S8924791/d04-x01-y01", "7000", "80" ) useOnePt("/ATLAS_2011_S8924791/d04-x01-y02", "7000", "80" ) useOnePt("/ATLAS_2011_S8924791/d04-x02-y01", "7000", "80" ) useOnePt("/ATLAS_2011_S8924791/d04-x02-y02", "7000", "80" ) useOnePt("/ATLAS_2011_S8924791/d04-x03-y01", "7000", "80" ) useOnePt("/ATLAS_2011_S8924791/d04-x03-y02", "7000", "80" ) useOnePt("/ATLAS_2011_S8924791/d04-x04-y01", "7000", "80" ) useOnePt("/ATLAS_2011_S8924791/d04-x04-y02", "7000", "80" ) useOnePt("/ATLAS_2011_S8924791/d04-x05-y01", "7000", "80" ) useOnePt("/ATLAS_2011_S8924791/d04-x05-y02", "7000", "80" ) useOnePt("/ATLAS_2011_S8924791/d04-x06-y01", "7000", "80" ) useOnePt("/ATLAS_2011_S8924791/d04-x06-y02", "7000", "80" ) useOnePt("/ATLAS_2011_S8924791/d05-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d05-x01-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d05-x02-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d05-x02-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d05-x03-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d05-x03-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d05-x04-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d05-x04-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d05-x05-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d05-x05-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d05-x06-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d05-x06-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d06-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d06-x01-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d06-x02-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d06-x02-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d06-x03-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d06-x03-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d06-x04-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d06-x04-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d06-x05-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d06-x05-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d06-x06-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d06-x06-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S8924791/d07-x01-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S8924791/d07-x01-y02", "7000", "210" ) useOnePt("/ATLAS_2011_S8924791/d07-x02-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S8924791/d07-x02-y02", "7000", "210" ) useOnePt("/ATLAS_2011_S8924791/d07-x03-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S8924791/d07-x03-y02", "7000", "210" ) useOnePt("/ATLAS_2011_S8924791/d07-x04-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S8924791/d07-x04-y02", "7000", "210" ) useOnePt("/ATLAS_2011_S8924791/d07-x05-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S8924791/d07-x05-y02", "7000", "210" ) useOnePt("/ATLAS_2011_S8924791/d07-x06-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S8924791/d07-x06-y02", "7000", "210" ) useOnePt("/ATLAS_2011_S8924791/d08-x01-y01", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d08-x01-y02", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d08-x02-y01", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d08-x02-y02", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d08-x03-y01", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d08-x03-y02", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d08-x04-y01", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d08-x04-y02", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d08-x05-y01", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d08-x05-y02", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d08-x06-y01", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d08-x06-y02", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d09-x01-y01", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d09-x01-y02", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d09-x02-y01", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d09-x02-y02", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d09-x03-y01", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d09-x03-y02", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d09-x04-y01", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d09-x04-y02", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d09-x05-y01", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d09-x05-y02", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d09-x06-y01", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d09-x06-y02", "7000", "260" ) useOnePt("/ATLAS_2011_S8924791/d10-x01-y01", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d10-x01-y02", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d10-x02-y01", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d10-x02-y02", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d10-x03-y01", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d10-x03-y02", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d10-x04-y01", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d10-x04-y02", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d10-x05-y01", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d10-x05-y02", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d10-x06-y01", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d10-x06-y02", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d11-x01-y01", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d11-x01-y02", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d11-x02-y01", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d11-x02-y02", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d11-x03-y01", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d11-x03-y02", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d11-x04-y01", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d11-x04-y02", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d11-x05-y01", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d11-x05-y02", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d11-x06-y01", "7000", "400" ) useOnePt("/ATLAS_2011_S8924791/d11-x06-y02", "7000", "400" ) logging.info("Processing ATLAS_2010_S8817804") mergeByPt("/ATLAS_2010_S8817804/d01-x01-y01", "7000") mergeByPt("/ATLAS_2010_S8817804/d02-x01-y01", "7000") mergeByPt("/ATLAS_2010_S8817804/d03-x01-y01", "7000") mergeByPt("/ATLAS_2010_S8817804/d04-x01-y01", "7000") mergeByPt("/ATLAS_2010_S8817804/d05-x01-y01", "7000") mergeByPt("/ATLAS_2010_S8817804/d06-x01-y01", "7000") mergeByPt("/ATLAS_2010_S8817804/d07-x01-y01", "7000") mergeByPt("/ATLAS_2010_S8817804/d08-x01-y01", "7000") mergeByPt("/ATLAS_2010_S8817804/d09-x01-y01", "7000") mergeByPt("/ATLAS_2010_S8817804/d10-x01-y01", "7000") mergeByMass("/ATLAS_2010_S8817804/d11-x01-y01", "7000") mergeByMass("/ATLAS_2010_S8817804/d12-x01-y01", "7000") mergeByMass("/ATLAS_2010_S8817804/d13-x01-y01", "7000") mergeByMass("/ATLAS_2010_S8817804/d14-x01-y01", "7000") mergeByMass("/ATLAS_2010_S8817804/d15-x01-y01", "7000") mergeByMass("/ATLAS_2010_S8817804/d16-x01-y01", "7000") mergeByMass("/ATLAS_2010_S8817804/d17-x01-y01", "7000") mergeByMass("/ATLAS_2010_S8817804/d18-x01-y01", "7000") mergeByMass("/ATLAS_2010_S8817804/d19-x01-y01", "7000") mergeByMass("/ATLAS_2010_S8817804/d20-x01-y01", "7000") useOneMass("/ATLAS_2010_S8817804/d21-x01-y01", "7000", "300" ) useOneMass("/ATLAS_2010_S8817804/d22-x01-y01", "7000", "300" ) useOneMass("/ATLAS_2010_S8817804/d23-x01-y01", "7000", "800" ) useOneMass("/ATLAS_2010_S8817804/d24-x01-y01", "7000", "300" ) useOneMass("/ATLAS_2010_S8817804/d25-x01-y01", "7000", "300" ) useOneMass("/ATLAS_2010_S8817804/d26-x01-y01", "7000", "800" ) logging.info("Processing ATLAS_2012_I1082936") mergeByPt("/ATLAS_2012_I1082936/d01-x01-y01", "7000") mergeByPt("/ATLAS_2012_I1082936/d01-x01-y02", "7000") mergeByPt("/ATLAS_2012_I1082936/d01-x01-y03", "7000") mergeByPt("/ATLAS_2012_I1082936/d01-x01-y04", "7000") mergeByPt("/ATLAS_2012_I1082936/d01-x01-y05", "7000") mergeByPt("/ATLAS_2012_I1082936/d01-x01-y06", "7000") mergeByPt("/ATLAS_2012_I1082936/d01-x01-y07", "7000") mergeByPt("/ATLAS_2012_I1082936/d02-x01-y01", "7000") mergeByPt("/ATLAS_2012_I1082936/d02-x01-y02", "7000") mergeByPt("/ATLAS_2012_I1082936/d02-x01-y03", "7000") mergeByPt("/ATLAS_2012_I1082936/d02-x01-y04", "7000") mergeByPt("/ATLAS_2012_I1082936/d02-x01-y05", "7000") mergeByPt("/ATLAS_2012_I1082936/d02-x01-y06", "7000") mergeByPt("/ATLAS_2012_I1082936/d02-x01-y07", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d03-x01-y01", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d03-x01-y02", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d03-x01-y03", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d03-x01-y04", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d03-x01-y05", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d03-x01-y06", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d03-x01-y07", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d03-x01-y08", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d03-x01-y09", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d04-x01-y01", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d04-x01-y02", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d04-x01-y03", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d04-x01-y04", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d04-x01-y05", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d04-x01-y06", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d04-x01-y07", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d04-x01-y08", "7000") mergeByMassTeV("/ATLAS_2012_I1082936/d04-x01-y09", "7000") logging.info("Processing CMS_2011_S8968497") useOneMass("/CMS_2011_S8968497/d01-x01-y01", "7000", "2000" ) useOneMass("/CMS_2011_S8968497/d02-x01-y01", "7000", "1200" ) useOneMass("/CMS_2011_S8968497/d03-x01-y01", "7000", "1200" ) useOneMass("/CMS_2011_S8968497/d04-x01-y01", "7000", "800" ) useOneMass("/CMS_2011_S8968497/d05-x01-y01", "7000", "800" ) useOneMass("/CMS_2011_S8968497/d06-x01-y01", "7000", "300" ) useOneMass("/CMS_2011_S8968497/d07-x01-y01", "7000", "300" ) useOneMass("/CMS_2011_S8968497/d08-x01-y01", "7000", "300" ) useOneMass("/CMS_2011_S8968497/d09-x01-y01", "7000", "110" ) logging.info("Processing ATLAS_2011_S9126244") mergeByPt("/ATLAS_2011_S9126244/d01-x01-y01", "7000") mergeByPt("/ATLAS_2011_S9126244/d01-x01-y02", "7000") mergeByPt("/ATLAS_2011_S9126244/d02-x01-y01", "7000") mergeByPt("/ATLAS_2011_S9126244/d02-x01-y02", "7000") mergeByPt("/ATLAS_2011_S9126244/d03-x01-y01", "7000") mergeByPt("/ATLAS_2011_S9126244/d03-x01-y02", "7000") mergeByPt("/ATLAS_2011_S9126244/d04-x01-y01", "7000") mergeByPt("/ATLAS_2011_S9126244/d04-x01-y02", "7000") mergeByPt("/ATLAS_2011_S9126244/d05-x01-y01", "7000") mergeByPt("/ATLAS_2011_S9126244/d05-x01-y02", "7000") useOnePt("/ATLAS_2011_S9126244/d06-x01-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S9126244/d06-x01-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S9126244/d07-x01-y01", "7000", "80" ) useOnePt("/ATLAS_2011_S9126244/d07-x01-y02", "7000", "80" ) useOnePt("/ATLAS_2011_S9126244/d08-x01-y01", "7000", "80" ) useOnePt("/ATLAS_2011_S9126244/d08-x01-y02", "7000", "80" ) useOnePt("/ATLAS_2011_S9126244/d09-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d09-x01-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d10-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d10-x01-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d11-x01-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S9126244/d11-x01-y02", "7000", "210" ) useOnePt("/ATLAS_2011_S9126244/d12-x01-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S9126244/d12-x01-y02", "7000", "210" ) useOnePt("/ATLAS_2011_S9126244/d13-x01-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S9126244/d13-x01-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S9126244/d14-x01-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S9126244/d14-x01-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S9126244/d15-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d15-x01-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d16-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d16-x01-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d17-x01-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S9126244/d17-x01-y02", "7000", "210" ) useOnePt("/ATLAS_2011_S9126244/d18-x01-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S9126244/d18-x01-y02", "7000", "210" ) useOnePt("/ATLAS_2011_S9126244/d19-x01-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S9126244/d20-x01-y01", "7000", "80" ) useOnePt("/ATLAS_2011_S9126244/d21-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d22-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d23-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d24-x01-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S9126244/d25-x01-y01", "7000", "210" ) mergeByPt("/ATLAS_2011_S9126244/d26-x01-y01", "7000") mergeByPt("/ATLAS_2011_S9126244/d26-x01-y02", "7000") mergeByPt("/ATLAS_2011_S9126244/d27-x01-y01", "7000") mergeByPt("/ATLAS_2011_S9126244/d27-x01-y02", "7000") mergeByPt("/ATLAS_2011_S9126244/d28-x01-y01", "7000") mergeByPt("/ATLAS_2011_S9126244/d28-x01-y02", "7000") mergeByPt("/ATLAS_2011_S9126244/d29-x01-y01", "7000") mergeByPt("/ATLAS_2011_S9126244/d29-x01-y02", "7000") useOnePt("/ATLAS_2011_S9126244/d30-x01-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S9126244/d31-x01-y01", "7000", "80" ) useOnePt("/ATLAS_2011_S9126244/d32-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d33-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d34-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d35-x01-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S9126244/d36-x01-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S9126244/d37-x01-y01", "7000", "40" ) useOnePt("/ATLAS_2011_S9126244/d37-x01-y02", "7000", "40" ) useOnePt("/ATLAS_2011_S9126244/d38-x01-y01", "7000", "80" ) useOnePt("/ATLAS_2011_S9126244/d38-x01-y02", "7000", "80" ) useOnePt("/ATLAS_2011_S9126244/d39-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d39-x01-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d40-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d40-x01-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d41-x01-y01", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d41-x01-y02", "7000", "110" ) useOnePt("/ATLAS_2011_S9126244/d42-x01-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S9126244/d42-x01-y02", "7000", "210" ) useOnePt("/ATLAS_2011_S9126244/d43-x01-y01", "7000", "210" ) useOnePt("/ATLAS_2011_S9126244/d43-x01-y02", "7000", "210" ) # CMS_2011_S9120041 UE analysis logging.info("Processing CMS_2011_S9120041") useOnePt("/CMS_2011_S9120041/d01-x01-y01", "7000", "0" ) useOnePt("/CMS_2011_S9120041/d02-x01-y01", "7000", "0" ) useOnePt("/CMS_2011_S9120041/d03-x01-y01", "900", "0" ) useOnePt("/CMS_2011_S9120041/d04-x01-y01", "900", "0" ) useOnePt("/CMS_2011_S9120041/d05-x01-y01", "7000", "0" ) useOnePt("/CMS_2011_S9120041/d06-x01-y01", "7000", "0" ) useOnePt("/CMS_2011_S9120041/d07-x01-y01", "7000", "0" ) useOnePt("/CMS_2011_S9120041/d08-x01-y01", "7000", "0" ) useOnePt("/CMS_2011_S9120041/d09-x01-y01", "7000", "0" ) useOnePt("/CMS_2011_S9120041/d10-x01-y01", "7000", "0" ) useOnePt("/CMS_2011_S9120041/d11-x01-y01", "900", "0" ) useOnePt("/CMS_2011_S9120041/d12-x01-y01", "900", "0" ) useOnePt("/CMS_2011_S9120041/d13-x01-y01", "900", "0" ) # CMS dijet decorrelation logging.info("Processing CMS_2011_S8950903") useOnePt("/CMS_2011_S8950903/d01-x01-y01", "7000", "80" ) useOnePt("/CMS_2011_S8950903/d02-x01-y01", "7000", "110" ) useOnePt("/CMS_2011_S8950903/d03-x01-y01", "7000", "110" ) useOnePt("/CMS_2011_S8950903/d04-x01-y01", "7000", "210" ) useOnePt("/CMS_2011_S8950903/d05-x01-y01", "7000", "260" ) # CMS jet cross section logging.info("Processing CMS_2011_S9086218") mergeByPt("/CMS_2011_S9086218/d01-x01-y01", "7000") mergeByPt("/CMS_2011_S9086218/d02-x01-y01", "7000") mergeByPt("/CMS_2011_S9086218/d03-x01-y01", "7000") mergeByPt("/CMS_2011_S9086218/d04-x01-y01", "7000") mergeByPt("/CMS_2011_S9086218/d05-x01-y01", "7000") mergeByPt("/CMS_2011_S9086218/d06-x01-y01", "7000") # CMS 2/3 jet cross section ratio logging.info("Processing CMS_2011_S9086218") mergeByPtTeV("/CMS_2011_S9088458/d01-x01-y01", "7000") # ATLAS track jet logging.info("Processing ATLAS_2011_I919017") mergeByPt("/ATLAS_2011_I919017/d01-x01-y01", "7000") mergeByPt("/ATLAS_2011_I919017/d01-x01-y02", "7000") mergeByPt("/ATLAS_2011_I919017/d01-x01-y03", "7000") mergeByPt("/ATLAS_2011_I919017/d01-x01-y04", "7000") useOnePt("/ATLAS_2011_I919017/d01-x02-y01", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y02", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y03", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y04", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y05", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y06", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y07", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y08", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y09", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y10", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y11", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y12", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y13", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y14", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y15", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y16", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y17", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y18", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y19", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y20", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y21", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y22", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y23", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y24", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x02-y25", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y01", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y02", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y03", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y04", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y05", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y06", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y07", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y08", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y09", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y10", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y11", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y12", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y13", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y14", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y15", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y16", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y17", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y18", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y19", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y20", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y21", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y22", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y23", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y24", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x03-y25", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y01", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y02", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y03", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y04", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y05", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y06", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y07", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y08", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y09", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y10", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y11", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y12", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y13", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y14", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y15", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y16", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y17", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y18", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y19", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y20", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y21", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y22", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y23", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y24", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x04-y25", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y01", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y02", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y03", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y04", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y05", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y06", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y07", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y08", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y09", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y10", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y11", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y12", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y13", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y14", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y15", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y16", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y17", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y18", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y19", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y20", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y21", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y22", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y23", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y24", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d01-x05-y25", "7000", "30" ) mergeByPt("/ATLAS_2011_I919017/d02-x01-y01", "7000") mergeByPt("/ATLAS_2011_I919017/d02-x01-y02", "7000") mergeByPt("/ATLAS_2011_I919017/d02-x01-y03", "7000") mergeByPt("/ATLAS_2011_I919017/d02-x01-y04", "7000") useOnePt("/ATLAS_2011_I919017/d02-x02-y01", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y02", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y03", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y04", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y05", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y06", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y07", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y08", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y09", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y10", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y11", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y12", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y13", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y14", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y15", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y16", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y17", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y18", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y19", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y20", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y21", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y22", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y23", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y24", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x02-y25", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y01", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y02", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y03", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y04", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y05", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y06", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y07", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y08", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y09", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y10", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y11", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y12", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y13", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y14", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y15", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y16", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y17", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y18", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y19", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y20", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y21", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y22", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y23", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y24", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x03-y25", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y01", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y02", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y03", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y04", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y05", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y06", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y07", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y08", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y09", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y10", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y11", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y12", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y13", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y14", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y15", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y16", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y17", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y18", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y19", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y20", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y21", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y22", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y23", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y24", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x04-y25", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y01", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y02", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y03", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y04", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y05", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y06", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y07", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y08", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y09", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y10", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y11", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y12", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y13", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y14", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y15", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y16", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y17", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y18", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y19", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y20", "7000", "30" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y21", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y22", "7000", "0" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y23", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y24", "7000", "4" ) useOnePt("/ATLAS_2011_I919017/d02-x05-y25", "7000", "30" ) logging.info("Processing ATLAS_2011_I926145") mergeByPt("/ATLAS_2011_I926145/d01-x01-y01", "7000") mergeByPt("/ATLAS_2011_I926145/d02-x01-y01", "7000") mergeByPt("/ATLAS_2011_I926145/d03-x01-y01", "7000") logging.info("Processing CMS_2011_S8941262") useOnePt("/CMS_2011_S8941262/d01-x01-y01", "7000", "0" ) useOnePt("/CMS_2011_S8941262/d03-x01-y01", "7000", "0" ) mergeByPt("/CMS_2011_S8941262/d02-x01-y01", "7000") logging.info("Processing CMS_2011_S8973270") useOnePt("/CMS_2011_S8973270/d01-x01-y01", "7000", "50" ) useOnePt("/CMS_2011_S8973270/d02-x01-y01", "7000", "80" ) useOnePt("/CMS_2011_S8973270/d03-x01-y01", "7000", "110" ) useOnePt("/CMS_2011_S8973270/d04-x01-y01", "7000", "50" ) useOnePt("/CMS_2011_S8973270/d05-x01-y01", "7000", "80" ) useOnePt("/CMS_2011_S8973270/d06-x01-y01", "7000", "110" ) logging.info("Processing ATLAS_2012_I1082009") useOnePt("/ATLAS_2012_I1082009/d08-x01-y01", "7000", "25" ) useOnePt("/ATLAS_2012_I1082009/d09-x01-y01", "7000", "25" ) useOnePt("/ATLAS_2012_I1082009/d10-x01-y01", "7000", "25" ) useOnePt("/ATLAS_2012_I1082009/d11-x01-y01", "7000", "50" ) useOnePt("/ATLAS_2012_I1082009/d12-x01-y01", "7000", "50" ) useOnePt("/ATLAS_2012_I1082009/d13-x01-y01", "7000", "25" ) # Choose output file name = "LHC"+"-Jets.aida" out = open(name, "w") ## Write out merged histos out.write('\n') out.write('\n') out.write('\n') out.write(' \n') for hpath, h in sorted(outhistos.iteritems()): logging.debug("hpath = %s" % hpath) out.write(h.asAIDA() + "\n\n") out.write('\n') sys.exit(0) herwig++-2.6.0.orig/Tests/python/merge-DIS0000755000175000017500000001355411754474774021074 0ustar sylvestresylvestre#! /usr/bin/env python import lighthisto import logging import sys if sys.version_info[:3] < (2,4,0): print "rivet scripts require Python version >= 2.4.0... exiting" sys.exit(1) import os, copy, re from math import sqrt ## Try to load faster but non-standard cElementTree module try: import xml.etree.cElementTree as ET except ImportError: try: import cElementTree as ET except ImportError: try: import xml.etree.ElementTree as ET except: sys.stderr.write("Can't load the ElementTree XML parser: please install it!\n") sys.exit(1) # ############################################# def fillAbove(desthisto, sourcehistosbyptmin): for i,b in enumerate(desthisto.getBins()): ## Fill bins with pT-ordered histos (so that 'highest always wins') for ptmin, h in sorted(sourcehistosbyptmin.iteritems()): newb = h.getBin(i) if b.xlow >= float(ptmin) : b.val = newb.val b.errplus = newb.errplus b.errminus = newb.errminus b._focus= newb._focus def merge(hpath): global inhistos global outhistos try: fillAbove(outhistos[hpath], inhistos[hpath]) except: pass def useOne(hpath, sqrts): global inhistos global outhistos try: outhistos[hpath] = inhistos[hpath][float(sqrts)] except: pass if __name__ == "__main__": import logging from optparse import OptionParser, OptionGroup parser = OptionParser(usage="%prog name") verbgroup = OptionGroup(parser, "Verbosity control") verbgroup.add_option("-v", "--verbose", action="store_const", const=logging.DEBUG, dest="LOGLEVEL", default=logging.INFO, help="print debug (very verbose) messages") verbgroup.add_option("-q", "--quiet", action="store_const", const=logging.WARNING, dest="LOGLEVEL", default=logging.INFO, help="be very quiet") parser.add_option_group(verbgroup) (opts, args) = parser.parse_args() logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s") ## Prefix used in dat file headers headerprefix = "# " ## Check args if len(args) < 1: logging.error("Must specify at least the name of the files") sys.exit(1) # ####################################### aidafiles=["-e--LowQ2.aida","-e+-LowQ2.aida","-e+-HighQ2.aida"] ## Get histos inhistos = {} outhistos={} weights = {} for f in aidafiles: file = args[0]+f if(file.find("Low")> 0) : q2=0 elif(file.find("High")>0) : q2=50 if not os.access(file, os.R_OK): logging.error("%s can not be read" % file) break try: tree = ET.parse(file) except: logging.error("%s can not be parsed as XML" % file) break tree = ET.parse(file) ## Get histos from this AIDA file for dps in tree.findall("dataPointSet"): h = lighthisto.Histo.fromDPS(dps) # di-jet decorrelations # jet shapes if(h.fullPath().find("4129130")>0 ) : if not inhistos.has_key(h.fullPath()): inhistos[h.fullPath()] = {} tmpE = inhistos[h.fullPath()] if not tmpE.has_key(q2): tmpE[q2] = h else: raise Exception("A set with q2 = %s already exists" % ( q2 )) elif(h.fullPath().find("2919893")>0 ) : outhistos[h.fullPath()] = h else : print '!!!!! DIDNT FIND',h.fullPath() ## Make empty output histos if needed for hpath,hsets in inhistos.iteritems(): if( hpath.find("4129130")>0) : outhistos[hpath] = copy.deepcopy(hsets.values()[0]) ## Empty the bin set for histos which we're going to merge for i,b in enumerate(outhistos[hpath].getBins()): b.val = 0 b.errplus = 0 b.errminus = 0 b._focus= None # H1 transverse energy useOne("/H1_2000_S4129130/d01-x01-y01","0") useOne("/H1_2000_S4129130/d02-x01-y01","0") useOne("/H1_2000_S4129130/d03-x01-y01","0") useOne("/H1_2000_S4129130/d04-x01-y01","0") useOne("/H1_2000_S4129130/d05-x01-y01","0") useOne("/H1_2000_S4129130/d06-x01-y01","0") useOne("/H1_2000_S4129130/d07-x01-y01","0") useOne("/H1_2000_S4129130/d08-x01-y01","0") useOne("/H1_2000_S4129130/d09-x01-y01","0") useOne("/H1_2000_S4129130/d10-x01-y01","0") useOne("/H1_2000_S4129130/d11-x01-y01","0") useOne("/H1_2000_S4129130/d12-x01-y01","0") useOne("/H1_2000_S4129130/d13-x01-y01","0") useOne("/H1_2000_S4129130/d14-x01-y01","0") useOne("/H1_2000_S4129130/d15-x01-y01","0") useOne("/H1_2000_S4129130/d16-x01-y01","50") useOne("/H1_2000_S4129130/d17-x01-y01","50") useOne("/H1_2000_S4129130/d18-x01-y01","50") useOne("/H1_2000_S4129130/d19-x01-y01","50") useOne("/H1_2000_S4129130/d20-x01-y01","50") useOne("/H1_2000_S4129130/d21-x01-y01","50") useOne("/H1_2000_S4129130/d22-x01-y01","50") useOne("/H1_2000_S4129130/d23-x01-y01","50") useOne("/H1_2000_S4129130/d24-x01-y01","50") useOne("/H1_2000_S4129130/d25-x01-y01","0") useOne("/H1_2000_S4129130/d26-x01-y01","0") useOne("/H1_2000_S4129130/d27-x01-y01","0") useOne("/H1_2000_S4129130/d28-x01-y01","0") useOne("/H1_2000_S4129130/d29-x01-y01","50") useOne("/H1_2000_S4129130/d30-x01-y01","50") useOne("/H1_2000_S4129130/d31-x01-y01","50") useOne("/H1_2000_S4129130/d32-x01-y01","50") merge("/H1_2000_S4129130/d33-x01-y01") merge("/H1_2000_S4129130/d34-x01-y01") # Choose output file name = args[0]+".aida" out = open(name, "w") ## Write out merged histos out.write('\n') out.write('\n') out.write('\n') out.write(' \n') for hpath, h in sorted(outhistos.iteritems()): logging.debug("hpath = %s" % hpath) out.write(h.asAIDA() + "\n\n") out.write('\n') sys.exit(0) herwig++-2.6.0.orig/Tests/python/compare.py0000644000175000017500000016730711754474774021440 0ustar sylvestresylvestreimport re import os import histogram td_command = '/export/pc/bin/tdps' def compareCrossSections(fname1,fname2) : f1 = open(fname1) test = f1.readline() while test: test = f1.readline() loc = test.find("Total (from unweighted events)") if ( loc >= 0 ) : temp1 = test.rsplit(")") exponent = temp1[2] temp2 = temp1[1].rsplit("(") errors = temp2[1] temp1 = temp2[0].rsplit(" ",1) mantisa = temp1[1] p = re.compile( '[0-9]') error2 = p.sub( '0', mantisa) newerror = error2[0:error2.rindex("0")] + errors cross1 = float(mantisa + exponent) error1 = float(newerror + exponent) f1.close() f2 = open(fname2) test = f2.readline() while test: test = f2.readline() loc = test.find("Total (from unweighted events)") if ( loc >= 0 ) : temp1 = test.rsplit(")") exponent = temp1[2] temp2 = temp1[1].rsplit("(") errors = temp2[1] temp1 = temp2[0].rsplit(" ",1) mantisa = temp1[1] p = re.compile( '[0-9]') error2 = p.sub( '0', mantisa) newerror = error2[0:error2.rindex("0")] + errors cross2 = float(mantisa + exponent) error2 = float(newerror + exponent) ratio = (cross1-cross2)**2/(error1**2+error2**2) return [cross1,error1,cross2,error2,ratio] def compareLEPQuarks(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LEP-Quarks.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LEP-Quarks-QuarksTest.top" fname1=directory1 + fname fname2=directory2 + fname fo = open(fname,'w') diff = histogram.compareTopdrawFiles(fname1,fname2,fo,40) fo.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") diff[1] /= float(diff[0]) ws = "|| Quarks || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" \ % (output[0],output[1],output[2],output[3],output[4],diff[1],op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareLEPLeptons(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LEP-Leptons.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LEP-Leptons-LeptonsTest.top" fname1=directory1 + fname fname2=directory2 + fname fo = open(fname,'w') diff = histogram.compareTopdrawFiles(fname1,fname2,fo,28) fo.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") diff[1] /= float(diff[0]) ws = "|| Leptons || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],diff[1],op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareLEPVV(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LEP-VV.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LEP-VV-VVTest.top" fname1=directory1 + fname fname2=directory2 + fname fo = open(fname,'w') diff = histogram.compareTopdrawFiles(fname1,fname2,fo,6) fo.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") diff[1] /= float(diff[0]) ws = "|| VV || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],diff[1],op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareLEPVH(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LEP-VH.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LEP-VH-VHTest.top" fname1=directory1 + fname fname2=directory2 + fname fo = open(fname,'w') diff = histogram.compareTopdrawFiles(fname1,fname2,fo,10) fo.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") diff[1] /= float(diff[0]) ws = "|| VH || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],diff[1],op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareLEPVBF(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LEP-VBF.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LEP-VBF-TestVBF.top" fname1=directory1 + fname fname2=directory2 + fname fo = open(fname,'w') diff = histogram.compareTopdrawFiles(fname1,fname2,fo,16) fo.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") diff[1] /= float(diff[0]) ws = "|| VBF || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],diff[1],op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareCharmShapes(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LEP-BB.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LEP-BB-BELLECharm.top" fname1=directory1 + fname fname2=directory2 + fname oname="LEP-BB-Shapes.top" fo = open(oname,'w') diff1 = histogram.compareTopdrawFiles(fname1,fname2,fo,6,True) fname="LEP-BB-CLEOCharm.top" fname1=directory1 + fname fname2=directory2 + fname diff2 = histogram.compareTopdrawFiles(fname1,fname2,fo,4,True) fo.close() diff = [diff1[0]+diff2[0],diff1[1]+diff2[1]] op1 = plotLocation + "/" + oname op2 = op1.replace(".top",".ps") diff[1] /= float(diff[0]) ws = "|| Charm || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],diff[1],op1,op2) wiki.write(ws) tdstring = td_command + " " +oname os.system(tdstring) def compareLEPShapes(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LEP-default.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions oname="LEP-Shapes.top" fo = open(oname,'w') totalDegree = 0 totalChi = 0. # read the event shapes fname="LEP-default-LEPEvent.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) for i in range(0,16) : h1 = histogram.readHistogram(f1,True) h2 = histogram.readHistogram(f2,True) h1.write(fo,True,"BLACK",True,False,False,True) h2.write(fo,False,"RED",True,False,False,True) if(h1.hasData) : h1.writeData(fo) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] f1.close() f2.close() # read the identified particle spectra fname="LEP-default-LEPIdent.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) for i in range(0,54) : h1 = histogram.readHistogram(f1,True) h2 = histogram.readHistogram(f2,True) h1.write(fo,True,"BLACK",True,False,False,True) h2.write(fo,False,"RED",True,False,False,True) if(h1.hasData) : h1.writeData(fo) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] f1.close() f2.close() # single particle spectra fname="LEP-default-LEPSingle.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) for i in range(0,7) : h1 = histogram.readHistogram(f1,True) h2 = histogram.readHistogram(f2,True) h1.write(fo,True,"BLACK",True,False,False,True) h2.write(fo,False,"RED",True,False,False,True) if(h1.hasData) : h1.writeData(fo) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] f1.close() f2.close() # LEP jets fname="LEP-default-LEPJet.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) for i in range(0,4) : h1 = histogram.readHistogram(f1,True) h2 = histogram.readHistogram(f2,True) h1.write(fo,True,"BLACK",True,False,True,True) h2.write(fo,False,"RED",True,False,True,True) if(h1.hasData) : h1.writeData(fo) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] for i in range(4,13) : h1 = histogram.readLine(f1,True) h2 = histogram.readLine(f2,True) h1.write(fo,True,"BLACK",True,False,True,True) h2.write(fo,False,"RED",True,False,True,True) if(h1.hasData) : h1.writeData(fo) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] f1.close() f2.close() fname="LEP-default-LEPFourJet.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) for i in range(0,4) : h1 = histogram.readHistogram(f1,True) h2 = histogram.readHistogram(f2,True) h1.write(fo,True,"BLACK",True,False,False,False) h2.write(fo,False,"RED",True,False,False,False) if(h1.hasData) : h1.writeData(fo) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] f1.close() f2.close() fname="LEP-default-BFrag.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) for i in range(0,2) : h1 = histogram.readHistogram(f1,True) h2 = histogram.readHistogram(f2,True) h1.write(fo,True,"BLACK",True,False,False,False) h2.write(fo,False,"RED",True,False,False,False) if(h1.hasData) : h1.writeData(fo) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] f1.close() f2.close() fo.close() op1 = plotLocation + "/" + oname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| LEP || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +oname os.system(tdstring) def compareW(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-W.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-W-WTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(0,38) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) if(i>25 and i < 30) or (i>31 and i <36) : h1.write(fo,True,"BLACK",True,False,False,i%2==0) h2.write(fo,False,"RED",True,False,False,i%2==0) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| W || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareZ(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-Z.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-Z-ZTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,39) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) if(i>24 and i < 27) or (i>30 and i <33) : h1.write(fo,True,"BLACK",True,False,False,i%2==0) h2.write(fo,False,"RED",True,False,False,i%2==0) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| Z || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareWJet(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-WJet.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-WJet-WJetTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,25) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i==1 or i==5 or i==9 or i==13 or i==16 or i==19 or i==22 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| WJet || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareZJet(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-ZJet.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-ZJet-ZJetTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,11) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i==1 or i==5 or i==8 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| ZJet || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareHiggs(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-Higgs.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-Higgs-HiggsTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,9) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) if(i==5 or i==6) : logPlot = i==6 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| Higgs || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareHiggsJet(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-HiggsJet.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-HiggsJet-HiggsJetTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,9) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i%2==0 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| HiggsJet || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareWWVBF(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-WWVBF.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-WWVBF-WWVBF-Test.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,11) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i==3 or i==4 or i==7 or i==8 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| WWVBF || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareZZVBF(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-ZZVBF.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-ZZVBF-ZZVBF-Test.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,11) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i==3 or i==4 or i==7 or i==8 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| ZZVBF || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareVBF(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-VBF.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-VBF-VBF-Test.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,11) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i==3 or i==4 or i==7 or i==8 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| VBF || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareWW(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-WW.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-WW-WWTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,11) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) if(i<7 or i==10) : logPlot = i==1 or i==4 or i==10 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| WW || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareZZ(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-ZZ.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-ZZ-ZZTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,11) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) if(i>=7) : logPlot = i==1 or i==4 or i==7 or i==10 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| ZZ || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareWZ(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-WZ.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-WZ-WZTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,11) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i==1 or i==4 or i==7 or i==10 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| WZ || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareWGamma(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-WGamma.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-WGamma-WGammaTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,18) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) if(i<9 or i>=13) : logPlot = i==1 or i==5 or i==13 or i==17 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| WGamma || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareZGamma(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-ZGamma.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-ZGamma-ZGammaTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,18) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) if(i>=9) : logPlot = i==9 or i==13 or i==17 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| ZGamma || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareGammaGamma(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-GammaGamma.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-GammaGamma-GammaGammaTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,14) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) if(i != 3 and i !=10 and i !=11 and i !=12) : logPlot = True h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| Gamma Gamma || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareGammaJet(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-GammaJet.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-GammaJet-GammaJetTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,11) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i%2==0 and not i==10 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| Gamma Jet || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareWH(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-WH.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-WH-WHTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,29) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i==2 or i==6 or i==10 or i==14 or i==17 or i==20 or i==23 or i==26 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| WH || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareZH(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-ZH.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-ZH-ZHTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,15) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i==2 or i==6 or i==9 or i==12 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| ZH || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareQCD(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-QCD.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-QCD-QCDTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,6) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i==2 or i==4 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| QCD || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareQCDFast(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-QCDFast.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-QCDFast-QCDTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,6) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i==2 or i==4 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| QCDFast || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def comparebbH(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-bbH.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-bbH-bbHTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,24) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i==1 or i==4 or i==7 or i==10 or i==11 or i==13 or i==15 or i==17 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| bbH || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def comparettH(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-ttH.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-ttH-ttHTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,24) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i==1 or i==4 or i==7 or i==10 or i==11 or i==13 or i==15 or i==17 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| ttH || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareWShower(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-WShower.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-WShower-VTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,22) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i<=4 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| W || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareZShower(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-ZShower.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-ZShower-VTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,22) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i<=4 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| Z || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareWPowheg(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-WShower-Powheg.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-WShower-Powheg-VTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,22) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i<=4 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| W-Powheg || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareZPowheg(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-ZShower-Powheg.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-ZShower-Powheg-VTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,22) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i<=4 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| Z-Powheg || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareHJet(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-HJet.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-HJet-HTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,22) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i<=4 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| H || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareHPowheg(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-HJet-Powheg.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-HJet-Powheg-HTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,22) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i<=4 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| H-Powheg|| %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareWHJet(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-WHJet.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-WHJet-VHTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,38) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i<=8 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| WH || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareZHJet(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-ZHJet.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-ZHJet-VHTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,38) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i<=8 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| ZH || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareWHJetPowheg(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-WHJet-Powheg.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-WHJet-Powheg-VHTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,38) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i<=8 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| WH-Powheg || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareZHJetPowheg(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-ZHJet-Powheg.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-ZHJet-Powheg-VHTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,38) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i<=8 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| ZH-Powheg || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareNeutralCurrent(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="DIS-Neutral.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="DIS-Neutral-NeutralTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,7) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i!=6 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| Neutral || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareChargedCurrent(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="DIS-Charged.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="DIS-Charged-ChargedTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,7) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i!=6 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| Charged || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareGammaFF(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="Gamma-FF.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="Gamma-FF-TestFF.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,73) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = False h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| gamma gamma -> fermions || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareGammaWW(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="Gamma-WW.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="Gamma-WW-TestWW.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,9) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = False h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| gamma gamma -> WW || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareGammaP(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="Gamma-P.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="Gamma-P-TestP.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,6) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i==2 or i==4 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| gamma hadron -> jets || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareTopDecay(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LEP-TopDecay.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LEP-TopDecay-TopDecay.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,2) : h1 = histogram.readHistogram(f1,False) h2 = histogram.readHistogram(f2,False) logPlot = i==2 or i==4 h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| t tbar || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) def compareTop(directory1,directory2,wiki,plotLocation) : # first compare the section sections fname="LHC-Top.out" fname1=directory1 + fname fname2=directory2 + fname output = compareCrossSections(fname1,fname2) # now compare the distributions fname="LHC-Top-TopTest.top" fname1=directory1 + fname fname2=directory2 + fname f1 = open(fname1) f2 = open(fname2) fo = open(fname,'w') totalDegree = 0 totalChi = 0. for i in range(1,14) : nplot = 1 if(i==1 or i==3 or i==5 or i==7 or i==9) : nplot = 2 h1 = histogram.readHistogram(f1,False,nplot) h2 = histogram.readHistogram(f2,False,nplot) if ( i!=2 and i!=4 and i!=10) : logPlot = False if(nplot == 1 ) : h1.write(fo,True,"BLACK",True,False,False,logPlot) h2.write(fo,False,"RED",True,False,False,logPlot) out = h1.writeDifference(h2,fo,True,"RED") totalDegree += out[0] totalChi += out[1] else : h1[0].write(fo,True,"BLACK",True,False,False,logPlot) h2[0].write(fo,False,"RED",True,False,False,logPlot) h1[1].write(fo,False,"BLACK DASHES",True,False,False,logPlot) h2[1].write(fo,False,"RED DASHES",True,False,False,logPlot) out = h1[0].writeDifference(h2[0],fo,True,"RED") totalDegree += out[0] totalChi += out[1] out = h1[1].writeDifference(h2[1],fo,False,"RED DASHES") totalDegree += out[0] totalChi += out[1] fo.close() f1.close() f2.close() op1 = plotLocation + "/" + fname op2 = op1.replace(".top",".ps") totalChi /= float(totalDegree) ws = "|| ttbar || %s || %s || %s || %s || %s || %s || [%s top] || [%s ps] ||\n" % (output[0],output[1],output[2],output[3],output[4],totalChi,op1,op2) wiki.write(ws) tdstring = td_command + " " +fname os.system(tdstring) herwig++-2.6.0.orig/Tests/python/merge-TVT-EW0000755000175000017500000000670411754474774021442 0ustar sylvestresylvestre#! /usr/bin/env python import lighthisto import logging import sys import os, copy, re """%prog Script for merging aida files """ import sys if sys.version_info[:3] < (2,4,0): print "rivet scripts require Python version >= 2.4.0... exiting" sys.exit(1) ## Try to load faster but non-standard cElementTree module try: import xml.etree.cElementTree as ET except ImportError: try: import cElementTree as ET except ImportError: try: import xml.etree.ElementTree as ET except: sys.stderr.write("Can't load the ElementTree XML parser: please install it!\n") sys.exit(1) if __name__ == "__main__": import logging from optparse import OptionParser, OptionGroup parser = OptionParser(usage="%prog aidafile aidafile2 [...]") parser.add_option("-o", "--out", dest="OUTFILE", default="-") parser.add_option("--append", dest="APPEND_OUTPUT", action="store_true", default=False) verbgroup = OptionGroup(parser, "Verbosity control") verbgroup.add_option("-v", "--verbose", action="store_const", const=logging.DEBUG, dest="LOGLEVEL", default=logging.INFO, help="print debug (very verbose) messages") verbgroup.add_option("-q", "--quiet", action="store_const", const=logging.WARNING, dest="LOGLEVEL", default=logging.INFO, help="be very quiet") parser.add_option_group(verbgroup) (opts, args) = parser.parse_args() logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s") ## Prefix used in dat file headers headerprefix = "# " ## Check args if len(args) < 1: logging.error("Must specify at least one AIDA histogram file") sys.exit(1) ## Get histos outhistos={} for file in args: if not os.access(file, os.R_OK): logging.error("%s can not be read" % file) break try: tree = ET.parse(file) except: logging.error("%s can not be parsed as XML" % file) break tree = ET.parse(file) ## Get histos from this AIDA file for dps in tree.findall("dataPointSet"): h = lighthisto.Histo.fromDPS(dps) if(h.fullPath().find("D0_2010_S8821313")>0) : if(h.fullPath().find("d01")>0 and file.find("-e")>0) : outhistos[h.fullPath()] = h elif(h.fullPath().find("d02")>0 and file.find("-mu")>0) : outhistos[h.fullPath()] = h else : outhistos[h.fullPath()] = h ## Choose output file out = None if opts.OUTFILE == "-": out = sys.stdout else: if opts.APPEND_OUTPUT: out = open(opts.OUTFILE, "a") else: out = open(opts.OUTFILE, "w") # Choose output file out = None if opts.OUTFILE == "-": out = sys.stdout else: if opts.APPEND_OUTPUT: out = open(opts.OUTFILE, "a") else: out = open(opts.OUTFILE, "w") ## Write out merged histos out.write('\n') out.write('\n') out.write('\n') out.write(' \n') for hpath, h in sorted(outhistos.iteritems()): logging.debug("hpath = %s" % hpath) out.write(h.asAIDA() + "\n\n") out.write('\n') sys.exit(0) herwig++-2.6.0.orig/Tests/python/merge-BFactory0000755000175000017500000002214411754474774022161 0ustar sylvestresylvestre#! /usr/bin/env python import lighthisto import logging import sys if sys.version_info[:3] < (2,4,0): print "rivet scripts require Python version >= 2.4.0... exiting" sys.exit(1) import os, copy, re from math import sqrt ## Try to load faster but non-standard cElementTree module try: import xml.etree.cElementTree as ET except ImportError: try: import cElementTree as ET except ImportError: try: import xml.etree.ElementTree as ET except: sys.stderr.write("Can't load the ElementTree XML parser: please install it!\n") sys.exit(1) # ############################################# def fillAbove(desthisto, sourcehistosbyptmin): for i,b in enumerate(desthisto.getBins()): ## Fill bins with pT-ordered histos (so that 'highest always wins') for ptmin, h in sorted(sourcehistosbyptmin.iteritems()): newb = h.getBin(i) if newb.xlow <= float(ptmin) and newb.xhigh >=float(ptmin): b.val = newb.val b.errplus = newb.errplus b.errminus = newb.errminus b._focus= newb._focus def merge(hpath): global inhistos global outhistos try: fillAbove(outhistos[hpath], inhistos[hpath]) except: pass def useOne(hpath, sqrts): global inhistos global outhistos try: outhistos[hpath] = inhistos[hpath][float(sqrts)] except: pass if __name__ == "__main__": import logging from optparse import OptionParser, OptionGroup parser = OptionParser(usage="%prog name") verbgroup = OptionGroup(parser, "Verbosity control") verbgroup.add_option("-v", "--verbose", action="store_const", const=logging.DEBUG, dest="LOGLEVEL", default=logging.INFO, help="print debug (very verbose) messages") verbgroup.add_option("-q", "--quiet", action="store_const", const=logging.WARNING, dest="LOGLEVEL", default=logging.INFO, help="be very quiet") parser.add_option_group(verbgroup) (opts, args) = parser.parse_args() logging.basicConfig(level=opts.LOGLEVEL, format="%(message)s") ## Prefix used in dat file headers headerprefix = "# " ## Check args if len(args) < 1: logging.error("Must specify at least the name of the files") sys.exit(1) # ####################################### aidafiles=["-10.52.aida","-10.52-sym.aida","-10.54.aida","-10.58.aida","-Upsilon.aida", "-Upsilon2.aida","-Upsilon4.aida","-10.45.aida","-Tau.aida"] ## Get histos inhistos = {} outhistos={} weights = {} for f in aidafiles: file = args[0]+f if(file.find("10.45")>0) : sqrts=10.45 elif(file.find("10.52")>0) : sqrts=10.52 elif(file.find("10.54")>0) : sqrts=10.54 elif(file.find("10.58")>0) : sqrts=10.58 elif(file.find("Tau")>0) : sqrts=10.58 elif(file.find("Upsilon4")>0) : sqrts=10.58 elif(file.find("Upsilon2")>0) : sqrts=10.02 elif(file.find("Upsilon")>0) : sqrts=9.46 if not os.access(file, os.R_OK): if(file.find("Upsilon")>=0 or file.find("Tau")>=0) : continue logging.error("%s can not be read" % file) break try: tree = ET.parse(file) except: logging.error("%s can not be parsed as XML" % file) break tree = ET.parse(file) ## Get histos from this AIDA file for dps in tree.findall("dataPointSet"): h = lighthisto.Histo.fromDPS(dps) # jet shapes if(h.fullPath().find("6265367")>0 or h.fullPath().find("6895344")>0 or h.fullPath().find("6181155")>0 or h.fullPath().find("2789213")>0 or h.fullPath().find("2669951")>0) : if not inhistos.has_key(h.fullPath()): inhistos[h.fullPath()] = {} tmpE = inhistos[h.fullPath()] sqrttemp=sqrts if(h.fullPath().find("2669951")>0 and h.fullPath().find("d01")>0 and sqrts==10.45) : sqrts=9.9 if not tmpE.has_key(sqrts): tmpE[sqrts] = h else: raise Exception("A set with sqrts = %s already exists" % ( sqrts)) sqrts=sqrttemp else : outhistos[h.fullPath()] = h ## Make empty output histos if needed for hpath,hsets in inhistos.iteritems(): if( hpath.find("2669951")>0) : workhisto = copy.deepcopy(hsets.values()[0]) outhistos[hpath] = workhisto ## Empty the bin set for histos which we're going to merge for b in outhistos[hpath]: b.val = 0 b.errplus = 0 b.errminus = 0 b._focus= None # BELLE useOne("/BELLE_2006_S6265367/d01-x01-y01","10.52") useOne("/BELLE_2006_S6265367/d01-x01-y02","10.52") useOne("/BELLE_2006_S6265367/d01-x01-y03","10.52") useOne("/BELLE_2006_S6265367/d01-x01-y04","10.52") useOne("/BELLE_2006_S6265367/d01-x01-y05","10.52") useOne("/BELLE_2006_S6265367/d01-x01-y06","10.52") useOne("/BELLE_2006_S6265367/d01-x01-y07","10.52") useOne("/BELLE_2006_S6265367/d01-x01-y08","10.52") useOne("/BELLE_2006_S6265367/d02-x01-y01","10.52") useOne("/BELLE_2006_S6265367/d02-x01-y02","10.52") useOne("/BELLE_2006_S6265367/d03-x01-y01","10.52") useOne("/BELLE_2006_S6265367/d03-x01-y02","10.52") useOne("/BELLE_2006_S6265367/d04-x01-y01","10.52") useOne("/BELLE_2006_S6265367/d04-x01-y02","10.52") useOne("/BELLE_2006_S6265367/d05-x01-y01","10.52") useOne("/BELLE_2006_S6265367/d05-x01-y02","10.52") useOne("/BELLE_2006_S6265367/d06-x01-y01","10.52") useOne("/BELLE_2006_S6265367/d06-x01-y02","10.52") useOne("/BELLE_2006_S6265367/d07-x01-y01","10.52") useOne("/BELLE_2006_S6265367/d07-x01-y02","10.52") useOne("/BELLE_2006_S6265367/d08-x01-y01","10.52") useOne("/BELLE_2006_S6265367/d08-x01-y02","10.52") useOne("/BELLE_2006_S6265367/d09-x01-y01","10.58") useOne("/BELLE_2006_S6265367/d09-x01-y02","10.58") useOne("/BELLE_2006_S6265367/d10-x01-y01","10.58") useOne("/BELLE_2006_S6265367/d10-x01-y02","10.58") useOne("/BELLE_2006_S6265367/d11-x01-y01","10.58") useOne("/BELLE_2006_S6265367/d11-x01-y02","10.58") useOne("/BELLE_2006_S6265367/d12-x01-y01","10.58") useOne("/BELLE_2006_S6265367/d12-x01-y02","10.58") useOne("/BELLE_2006_S6265367/d13-x01-y01","10.58") useOne("/BELLE_2006_S6265367/d13-x01-y02","10.58") useOne("/BELLE_2006_S6265367/d14-x01-y01","10.58") useOne("/BELLE_2006_S6265367/d14-x01-y02","10.58") useOne("/BELLE_2006_S6265367/d15-x01-y01","10.58") useOne("/BELLE_2006_S6265367/d15-x01-y02","10.58") # BABAR useOne("/BABAR_2007_S6895344/d01-x01-y01","10.54") useOne("/BABAR_2007_S6895344/d02-x01-y01","10.54") useOne("/BABAR_2007_S6895344/d03-x01-y01","10.58") useOne("/BABAR_2007_S6895344/d04-x01-y01","10.58") # BABAR useOne("/BABAR_2005_S6181155/d01-x01-y01","10.58") useOne("/BABAR_2005_S6181155/d02-x01-y01","10.58") useOne("/BABAR_2005_S6181155/d02-x01-y02","10.54") useOne("/BABAR_2005_S6181155/d03-x01-y01","10.54") useOne("/BABAR_2005_S6181155/d04-x01-y01","10.58") useOne("/BABAR_2005_S6181155/d05-x01-y01","10.58") useOne("/BABAR_2005_S6181155/d05-x01-y02","10.54") # ARGUS useOne("/ARGUS_1993_S2789213/d01-x01-y01","10.45") useOne("/ARGUS_1993_S2789213/d01-x01-y02","10.45") useOne("/ARGUS_1993_S2789213/d01-x01-y03","10.45") useOne("/ARGUS_1993_S2789213/d01-x01-y04","10.45") useOne("/ARGUS_1993_S2789213/d01-x01-y05","10.45") useOne("/ARGUS_1993_S2789213/d02-x01-y01", "9.46") useOne("/ARGUS_1993_S2789213/d02-x01-y02", "9.46") useOne("/ARGUS_1993_S2789213/d02-x01-y03", "9.46") useOne("/ARGUS_1993_S2789213/d02-x01-y04", "9.46") useOne("/ARGUS_1993_S2789213/d02-x01-y05", "9.46") useOne("/ARGUS_1993_S2789213/d03-x01-y01","10.58") useOne("/ARGUS_1993_S2789213/d03-x01-y02","10.58") useOne("/ARGUS_1993_S2789213/d03-x01-y03","10.58") useOne("/ARGUS_1993_S2789213/d03-x01-y04","10.58") useOne("/ARGUS_1993_S2789213/d03-x01-y05","10.58") useOne("/ARGUS_1993_S2789213/d04-x01-y01","10.45") useOne("/ARGUS_1993_S2789213/d05-x01-y01", "9.46") useOne("/ARGUS_1993_S2789213/d06-x01-y01","10.58") useOne("/ARGUS_1993_S2789213/d07-x01-y01","10.45") useOne("/ARGUS_1993_S2789213/d08-x01-y01", "9.46") useOne("/ARGUS_1993_S2789213/d09-x01-y01","10.58") useOne("/ARGUS_1993_S2789213/d10-x01-y01","10.45") useOne("/ARGUS_1993_S2789213/d11-x01-y01", "9.46") useOne("/ARGUS_1993_S2789213/d12-x01-y01","10.58") useOne("/ARGUS_1993_S2789213/d13-x01-y01","10.45") useOne("/ARGUS_1993_S2789213/d14-x01-y01", "9.46") useOne("/ARGUS_1993_S2789213/d15-x01-y01","10.58") useOne("/ARGUS_1993_S2669951/d02-x01-y01","10.45") useOne("/ARGUS_1993_S2669951/d03-x01-y01","9.46") useOne("/ARGUS_1993_S2669951/d04-x01-y01","10.02") merge("/ARGUS_1993_S2669951/d01-x01-y01") merge("/ARGUS_1993_S2669951/d01-x01-y02") merge("/ARGUS_1993_S2669951/d05-x01-y01") # Choose output file name = args[0]+".aida" out = open(name, "w") ## Write out merged histos out.write('\n') out.write('\n') out.write('\n') out.write(' \n') for hpath, h in sorted(outhistos.iteritems()): logging.debug("hpath = %s" % hpath) out.write(h.asAIDA() + "\n\n") out.write('\n') sys.exit(0) herwig++-2.6.0.orig/Tests/Makefile.am0000644000175000017500000002735711754474775020154 0ustar sylvestresylvestreAUTOMAKE_OPTIONS = -Wno-portability AM_LDFLAGS += -module -avoid-version -rpath /dummy/path/not/used EXTRA_DIST = Inputs python Rivet dist-hook: rm -rf $(distdir)/Inputs/.svn rm -rf $(distdir)/python/.svn rm -rf $(distdir)/Rivet/.svn EXTRA_LTLIBRARIES = LeptonTest.la GammaTest.la HadronTest.la DISTest.la if WANT_LIBFASTJET EXTRA_LTLIBRARIES += HadronJetTest.la LeptonJetTest.la HadronJetTest_la_SOURCES = \ Hadron/VHTest.h Hadron/VHTest.cc\ Hadron/VTest.h Hadron/VTest.cc\ Hadron/HTest.h Hadron/HTest.cc HadronJetTest_la_CPPFLAGS = $(AM_CPPFLAGS) $(FASTJETINCLUDE) \ -I$(FASTJETPATH) HadronJetTest_la_LIBADD = $(FASTJETLIBS) LeptonJetTest_la_SOURCES = \ Lepton/TopDecay.h Lepton/TopDecay.cc LeptonJetTest_la_CPPFLAGS = $(AM_CPPFLAGS) $(FASTJETINCLUDE) \ -I$(FASTJETPATH) LeptonJetTest_la_LIBADD = $(FASTJETLIBS) endif LeptonTest_la_SOURCES = \ Lepton/VVTest.h Lepton/VVTest.cc \ Lepton/VBFTest.h Lepton/VBFTest.cc \ Lepton/VHTest.h Lepton/VHTest.cc \ Lepton/FermionTest.h Lepton/FermionTest.cc GammaTest_la_SOURCES = \ Gamma/GammaMETest.h Gamma/GammaMETest.cc \ Gamma/GammaPMETest.h Gamma/GammaPMETest.cc DISTest_la_SOURCES = \ DIS/DISTest.h DIS/DISTest.cc HadronTest_la_SOURCES = \ Hadron/HadronVVTest.h Hadron/HadronVVTest.cc\ Hadron/HadronVBFTest.h Hadron/HadronVBFTest.cc\ Hadron/WHTest.h Hadron/WHTest.cc\ Hadron/ZHTest.h Hadron/ZHTest.cc\ Hadron/VGammaTest.h Hadron/VGammaTest.cc\ Hadron/ZJetTest.h Hadron/ZJetTest.cc\ Hadron/WJetTest.h Hadron/WJetTest.cc\ Hadron/QQHTest.h Hadron/QQHTest.cc REPO = $(top_builddir)/src/HerwigDefaults.rpo HERWIG = $(top_builddir)/src/Herwig++ HWREAD = $(HERWIG) read -r $(REPO) -L $(builddir)/.libs HWRUN = $(HERWIG) run tests : tests-LEP tests-DIS tests-LHC tests-Gamma if WANT_LIBFASTJET tests-LEP : test-LEP-VV test-LEP-VH test-LEP-VBF test-LEP-BB test-LEP-Quarks test-LEP-Leptons \ test-LEP-default test-LEP-Powheg test-LEP-TopDecay else tests-LEP : test-LEP-VV test-LEP-VH test-LEP-VBF test-LEP-BB test-LEP-Quarks test-LEP-Leptons endif tests-DIS : test-DIS-Charged test-DIS-Neutral if WANT_LIBFASTJET tests-LHC : test-LHC-WW test-LHC-WZ test-LHC-ZZ test-LHC-ZGamma test-LHC-WGamma \ test-LHC-ZH test-LHC-WH test-LHC-ZJet test-LHC-WJet test-LHC-Z test-LHC-W test-LHC-ZZVBF test-LHC-VBF \ test-LHC-WWVBF test-LHC-bbH test-LHC-ttH test-LHC-GammaGamma test-LHC-GammaJet test-LHC-Higgs \ test-LHC-HiggsJet test-LHC-QCDFast test-LHC-QCD test-LHC-Top test-LHC-Bottom \ test-LHC-WHJet test-LHC-ZHJet test-LHC-HJet test-LHC-ZShower test-LHC-WShower\ test-LHC-WHJet-Powheg test-LHC-ZHJet-Powheg test-LHC-HJet-Powheg \ test-LHC-ZShower-Powheg test-LHC-WShower-Powheg else tests-LHC : test-LHC-WW test-LHC-WZ test-LHC-ZZ test-LHC-ZGamma test-LHC-WGamma \ test-LHC-ZH test-LHC-WH test-LHC-ZJet test-LHC-WJet test-LHC-Z test-LHC-W test-LHC-ZZVBF test-LHC-VBF \ test-LHC-WWVBF test-LHC-bbH test-LHC-ttH test-LHC-GammaGamma test-LHC-GammaJet test-LHC-Higgs \ test-LHC-HiggsJet test-LHC-QCDFast test-LHC-QCD test-LHC-Top endif tests-Gamma : test-Gamma-FF test-Gamma-WW test-Gamma-P if WANT_LIBFASTJET test-LEP-% : Inputs/LEP-%.in LeptonTest.la LeptonJetTest.la $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} else test-LEP-% : Inputs/LEP-%.in LeptonTest.la $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} endif Rivet-LEP-% : Rivet/LEP-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-BFactory-% : Rivet/BFactory-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-TVT-% : Rivet/TVT-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-DIS-% : Rivet/DIS-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-LHC-% : Rivet/LHC-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-Star-% : Rivet/Star-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-SppS-% : Rivet/SppS-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-ISR-% : Rivet/ISR-%.in $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} Rivet-LEP: Rivet-LEP-22 Rivet-LEP-35 Rivet-LEP-44 Rivet-LEP-91 \ Rivet-LEP-130 Rivet-LEP-133 Rivet-LEP-136 Rivet-LEP-161 \ Rivet-LEP-172 Rivet-LEP-177 Rivet-LEP-183 Rivet-LEP-189 \ Rivet-LEP-192 Rivet-LEP-196 Rivet-LEP-197 Rivet-LEP-200 \ Rivet-LEP-202 Rivet-LEP-206 Rivet-LEP-14 Rivet-LEP-10\ Rivet-LEP-Powheg-14 Rivet-LEP-Powheg-22 \ Rivet-LEP-Powheg-35 Rivet-LEP-Powheg-44 \ Rivet-LEP-Powheg-91 Rivet-LEP-Powheg-130 \ Rivet-LEP-Powheg-133 Rivet-LEP-Powheg-136 \ Rivet-LEP-Powheg-161 Rivet-LEP-Powheg-172 \ Rivet-LEP-Powheg-177 Rivet-LEP-Powheg-183 \ Rivet-LEP-Powheg-189 Rivet-LEP-Powheg-192 \ Rivet-LEP-Powheg-196 Rivet-LEP-Powheg-197 \ Rivet-LEP-Powheg-200 Rivet-LEP-Powheg-202 \ Rivet-LEP-Powheg-206 Rivet-LEP-Powheg-10 for i in LEP-*.aida; do rivet-rmgaps $$i; done; rm -rf Rivet-LEP python/merge-LEP LEP python/merge-LEP LEP-Powheg rivet-mkhtml -o Rivet-LEP LEP.aida:Hw++ LEP-Powheg.aida:Hw++-Powheg Rivet-BFactory: Rivet-BFactory-10.52 Rivet-BFactory-Powheg-10.52 \ Rivet-BFactory-10.52-sym Rivet-BFactory-Powheg-10.52-sym \ Rivet-BFactory-10.54 Rivet-BFactory-Powheg-10.54 \ Rivet-BFactory-10.45 Rivet-BFactory-Powheg-10.45 \ Rivet-BFactory-10.58 Rivet-BFactory-Powheg-10.58 \ Rivet-BFactory-Upsilon Rivet-BFactory-Upsilon2 Rivet-BFactory-Upsilon4 \ Rivet-BFactory-Tau for i in BFactory-*.aida; do rivet-rmgaps $$i; done; rm -rf Rivet-BFactory python/merge-BFactory BFactory python/merge-BFactory BFactory-Powheg rivet-mkhtml -o Rivet-BFactory BFactory.aida:Hw++ BFactory-Powheg.aida:Hw++-Powheg Rivet-DIS: Rivet-DIS-e--LowQ2 \ Rivet-DIS-e+-LowQ2 Rivet-DIS-e+-HighQ2\ Rivet-DIS-Powheg-e--LowQ2 \ Rivet-DIS-Powheg-e+-LowQ2 Rivet-DIS-Powheg-e+-HighQ2\ Rivet-DIS-NoME-e--LowQ2 \ Rivet-DIS-NoME-e+-LowQ2 Rivet-DIS-NoME-e+-HighQ2 rivet-rmgaps DIS-e+-LowQ2.aida rivet-rmgaps DIS-e--LowQ2.aida rivet-rmgaps DIS-e+-HighQ2.aida rivet-rmgaps DIS-Powheg-e+-LowQ2.aida rivet-rmgaps DIS-Powheg-e--LowQ2.aida rivet-rmgaps DIS-Powheg-e+-HighQ2.aida rivet-rmgaps DIS-NoME-e+-LowQ2.aida rivet-rmgaps DIS-NoME-e--LowQ2.aida rivet-rmgaps DIS-NoME-e+-HighQ2.aida python/merge-DIS DIS python/merge-DIS DIS-Powheg python/merge-DIS DIS-NoME rivet-mkhtml -o Rivet-DIS DIS.aida:Hw++ DIS-Powheg.aida:Hw++-Powheg DIS-NoME.aida:Hw++-NoME Rivet-TVT-WZ: Rivet-TVT-Run-I-Z Rivet-TVT-Powheg-Run-I-Z \ Rivet-TVT-Run-I-W Rivet-TVT-Powheg-Run-I-W \ Rivet-TVT-Run-I-WZ Rivet-TVT-Powheg-Run-I-WZ\ Rivet-TVT-Run-II-Z-e Rivet-TVT-Powheg-Run-II-Z-e \ Rivet-TVT-Run-II-Z-mu Rivet-TVT-Powheg-Run-II-Z-mu \ Rivet-TVT-Run-II-W Rivet-TVT-Powheg-Run-II-W rivet-rmgaps TVT-Run-II-Z-e.aida; rivet-rmgaps TVT-Powheg-Run-II-Z-e.aida; rm -rf Rivet-TVT-WZ python/merge-TVT-EW TVT-Run-II-W.aida TVT-Run-II-Z-{e,mu}.aida\ TVT-Run-I-{W,Z,WZ}.aida -o TVT-WZ.aida python/merge-TVT-EW TVT-Powheg-Run-II-W.aida TVT-Powheg-Run-II-Z-{e,mu}.aida\ TVT-Powheg-Run-I-{W,Z,WZ}.aida -o TVT-Powheg-WZ.aida rivet-mkhtml -o Rivet-TVT-WZ TVT-WZ.aida:Hw++ TVT-Powheg-WZ.aida:Hw++-Powheg Rivet-TVT-Photon: Rivet-TVT-Run-II-DiPhoton Rivet-TVT-Run-II-PromptPhoton # Rivet-TVT-Run-I-PromptPhoton rm -rf Rivet-TVT-Photon python/merge-aida TVT-Run-II-DiPhoton.aida TVT-Run-II-PromptPhoton.aida\ -o TVT-Photon.aida rivet-mkhtml -o Rivet-TVT-Photon TVT-Photon.aida:Hw++ Rivet-TVT-Jets: Rivet-TVT-Run-II-Jets-1 Rivet-TVT-Run-II-Jets-2 \ Rivet-TVT-Run-II-Jets-3 Rivet-TVT-Run-II-Jets-4 \ Rivet-TVT-Run-II-Jets-5 Rivet-TVT-Run-II-Jets-6 \ Rivet-TVT-Run-II-Jets-7 Rivet-TVT-Run-II-Jets-8 \ Rivet-TVT-Run-II-Jets-9 Rivet-TVT-Run-II-Jets-10\ Rivet-TVT-Run-II-Jets-11 Rivet-TVT-Run-II-UE \ Rivet-TVT-Run-I-Jets-1 Rivet-TVT-Run-I-Jets-2 \ Rivet-TVT-Run-I-Jets-3 Rivet-TVT-Run-I-Jets-4 \ Rivet-TVT-Run-I-Jets-5 Rivet-TVT-Run-I-Jets-6 \ Rivet-TVT-Run-I-Jets-7 Rivet-TVT-Run-I-Jets-8\ Rivet-TVT-Run-I-UE\ Rivet-TVT-630-UE Rivet-TVT-630-Jets-1 \ Rivet-TVT-630-Jets-2 Rivet-TVT-630-Jets-3 rivet-rmgaps TVT-Run-I-Jets-4.aida rm -rf Rivet-TVT-Jets python/merge-TVT-Jets TVT rivet-mkhtml -o Rivet-TVT-Jets TVT-Jets.aida:Hw++ Rivet-LHC-Jets: Rivet-LHC-7-Jets-0 Rivet-LHC-7-Jets-1 Rivet-LHC-7-Jets-2 \ Rivet-LHC-7-Jets-3 Rivet-LHC-7-Jets-4 \ Rivet-LHC-7-Jets-5 Rivet-LHC-7-Jets-6 \ Rivet-LHC-7-Jets-7 Rivet-LHC-7-Jets-8 \ Rivet-LHC-7-Jets-9 Rivet-LHC-7-Jets-10 \ Rivet-LHC-7-Jets-11 Rivet-LHC-7-Jets-12 \ Rivet-LHC-7-Jets-13 Rivet-LHC-7-UE \ Rivet-LHC-2360-UE Rivet-LHC-900-UE \ Rivet-LHC-7-Heavy-1 Rivet-LHC-7-Heavy-2 \ Rivet-LHC-7-Heavy-3 Rivet-LHC-7-Heavy-4 \ Rivet-LHC-7-Heavy-5 Rivet-LHC-7-Top \ Rivet-LHC-7-UE-Long Rivet-LHC-900-UE-Long \ Rivet-LHC-7-Jets-All-1 Rivet-LHC-7-Jets-All-2 rm -rf Rivet-LHC-Jets python/merge-LHC-Jets rivet-mkhtml -o Rivet-LHC-Jets LHC-Jets.aida:Hw++ Rivet-Star: Rivet-Star-UE Rivet-Star-Jets-1 \ Rivet-Star-Jets-2 Rivet-Star-Jets-3 \ Rivet-Star-Jets-4 rm -rf Rivet-Star rivet-rmgaps Star-UE.aida python/merge-Star Star rivet-mkhtml -o Rivet-Star Star.aida Rivet-SppS: Rivet-ISR-44-UE Rivet-ISR-63-UE \ Rivet-SppS-63-UE Rivet-ISR-30-UE \ Rivet-ISR-53-UE Rivet-SppS-200-UE \ Rivet-SppS-500-UE Rivet-SppS-900-UE \ Rivet-SppS-546-UE Rivet-SppS-53-UE rm -rf Rivet-SppS python/merge-aida ISR-44-UE.aida ISR-63-UE.aida SppS-63-UE.aida ISR-30-UE.aida \ ISR-53-UE.aida SppS-200-UE.aida SppS-500-UE.aida SppS-900-UE.aida \ SppS-546-UE.aida SppS-53-UE.aida -o SppS.aida rivet-mkhtml -o Rivet-SppS SppS.aida Rivet-LHC-EW: Rivet-LHC-W-e Rivet-LHC-Powheg-W-e \ Rivet-LHC-W-mu Rivet-LHC-Powheg-W-mu \ Rivet-LHC-Z-e Rivet-LHC-Powheg-Z-e \ Rivet-LHC-Z-mu Rivet-LHC-Powheg-Z-mu \ Rivet-LHC-WW Rivet-LHC-Powheg-WW\ Rivet-LHC-ZZ Rivet-LHC-Powheg-ZZ rm -rf Rivet-LHC-EW; python/merge-LHC-EW LHC-{W-e,W-mu,Z-e,Z-mu,WW,ZZ}.aida -o LHC-EW.aida; python/merge-LHC-EW LHC-Powheg-{W-e,W-mu,Z-e,Z-mu,WW,ZZ}.aida -o LHC-Powheg-EW.aida; rivet-mkhtml -o Rivet-LHC-EW LHC-EW.aida:Hw++ LHC-Powheg-EW.aida:Hw++-Powheg; Rivet-LHC-Photon: Rivet-LHC-7-PromptPhoton Rivet-LHC-7-DiPhoton rm -rf Rivet-LHC-Photon python/merge-aida LHC-7-PromptPhoton.aida LHC-7-DiPhoton.aida -o LHC-Photon.aida rivet-mkhtml -o Rivet-LHC-Photon LHC-Photon.aida:Hw++ test-Gamma-% : Inputs/Gamma-%.in GammaTest.la $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} test-DIS-% : Inputs/DIS-%.in DISTest.la $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} if WANT_LIBFASTJET test-LHC-% : Inputs/LHC-%.in HadronTest.la GammaTest.la HadronJetTest.la $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} else test-LHC-% : Inputs/LHC-%.in HadronTest.la GammaTest.la $(HWREAD) $< $(HWRUN) $(notdir $(subst .in,.run,$<)) -N $${NUMEVENTS:-10000} endif clean-local: rm -f *.out *.log *.tex *.top *.run *.dump *.mult *.Bmult *.aida herwig++-2.6.0.orig/Tests/DIS/0000755000175000017500000000000011756464211016503 5ustar sylvestresylvestreherwig++-2.6.0.orig/Tests/DIS/DISTest.h0000755000175000017500000000765511754474774020170 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_DISTest_H #define HERWIG_DISTest_H // // This is the declaration of the DISTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the DISTest class. * * @see \ref DISTestInterfaces "The interfaces" * defined for DISTest. */ class DISTest: public AnalysisHandler { public: /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initDISTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DISTest & operator=(const DISTest &); private: HistogramPtr _q2,_ecmf, _nu,_x,_y,_phi; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DISTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of DISTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the DISTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::DISTest"; } /** * The name of a file containing the dynamic library where the class * DISTest is implemented. It may also include several, space-separated, * libraries if the class DISTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "DISTest.so"; } }; /** @endcond */ } #endif /* HERWIG_DISTest_H */ herwig++-2.6.0.orig/Tests/DIS/DISTest.cc0000755000175000017500000000603211754474774020312 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the DISTest class. // #include "DISTest.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/PDT/StandardMatchers.h" using namespace Herwig; void DISTest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // momentum of the incoming hadron Lorentz5Momentum p = HadronMatcher::Check(*event->incoming().first->dataPtr()) ? event->incoming().first ->momentum() : event->incoming().second->momentum(); // momentum of the incoming lepton tSubProPtr primary = event->primarySubProcess(); tPPtr incomingl = (abs(primary->incoming().first->id())==ParticleID::eminus|| abs(primary->incoming().first->id())==ParticleID::nu_e) ? primary->incoming().first : primary->incoming().second; Lorentz5Momentum k = incomingl->momentum(); // momentum of the outgoing lepton tPPtr outgoingl; for(unsigned int ix=0;ixoutgoing().size();++ix) { if(abs(primary->outgoing()[ix]->id())==ParticleID::eminus|| abs(primary->outgoing()[ix]->id())==ParticleID::nu_e) outgoingl = primary->outgoing()[ix]; } assert(incomingl&&outgoingl); Lorentz5Momentum kp = outgoingl->momentum(); // momentum of t channel Lorentz5Momentum q = k-kp; // q^2 Energy2 Q2 = -q.m2(); *_q2 += Q2/GeV2; // nu Energy2 nu = p*q; *_nu += nu/GeV2; if(nu/GeV2>55000.) generator()->log() << "testing nu = " << nu/GeV2 << *event << "\n"; // x *_x += 0.5*Q2/nu; // y *_y += nu/(k*p); Lorentz5Momentum pin = primary->incoming().first ->momentum()+ primary->incoming().second->momentum(); *_ecmf += pin.m()/GeV; *_phi += kp.phi()+Constants::pi; } NoPIOClassDescription DISTest::initDISTest; // Definition of the static class description member. void DISTest::Init() { static ClassDocumentation documentation ("There is no documentation for the DISTest class"); } void DISTest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; _q2 ->topdrawOutput(outfile,Frame|Ylog,"BLACK","q2"); _ecmf->topdrawOutput(outfile,Frame|Ylog,"BLACK","ecmf"); _nu ->topdrawOutput(outfile,Frame|Ylog,"BLACK","nu"); _x ->topdrawOutput(outfile,Frame|Ylog,"BLACK","x"); _y ->topdrawOutput(outfile,Frame|Ylog,"BLACK","y"); _phi ->topdrawOutput(outfile,Frame,"BLACK","phi"); } void DISTest::doinitrun() { AnalysisHandler::doinitrun(); _q2 = new_ptr(Histogram( 0.,100000.,1000)); _ecmf = new_ptr(Histogram( 0.,400.,400)); _nu = new_ptr(Histogram( 0.,100000.,1000)); _x = new_ptr(Histogram(-0.5,1.5,200)); _y = new_ptr(Histogram(-0.5,1.5,200)); _phi = new_ptr(Histogram(0.,2.*Constants::pi,200)); } herwig++-2.6.0.orig/Tests/Inputs/0000755000175000017500000000000011756464212017347 5ustar sylvestresylvestreherwig++-2.6.0.orig/Tests/Inputs/LHC-Higgs.in0000644000175000017500000000115511754474775021363 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 100000 cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEHiggs cd /Herwig/Generators set /Herwig/Analysis/Basics:CheckQuark 0 create Herwig::HiggsJetAnalysis HiggsTest HwAnalysis.so insert LHCGenerator:AnalysisHandlers 0 HiggsTest saverun LHC-Higgs LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/DIS-Charged.in0000755000175000017500000000177211754474775021700 0ustar sylvestresylvestreread DIS.common cd /Herwig/Generators set DISGenerator:EventHandler:CascadeHandler NULL set DISGenerator:EventHandler:HadronizationHandler NULL set DISGenerator:EventHandler:DecayHandler NULL cd /Herwig create Herwig::O2AlphaS AlphaS2 set Model:QCD/RunningAlphaS AlphaS2 set Model:EW/CKM:theta_12 0.22274457 set Model:EW/CKM:theta_13 0. set Model:EW/CKM:theta_23 0. set Model:EW/CKM:delta 0. create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM set /Herwig/Analysis/Basics:CheckQuark 0 cd /Herwig/Partons # create Herwig::MRST MRST2 HwMRST.so # setup MRST2 /home/richardn/montecarlo/c++/Herwig++/trunk/Herwig++/PDF/mrst/1998/lo05a.dat # set MRST2:RemnantHandler HadronRemnants # set /Herwig/Particles/p+:PDF MRST2 # set /Herwig/Particles/pbar-:PDF MRST2 cd /Herwig/MatrixElements/ insert SimpleDIS:MatrixElements[0] MEDISCC set MEDISCC:MaxFlavour 4 cd /Herwig/Generators create Herwig::DISTest ChargedTest DISTest.so insert DISGenerator:AnalysisHandlers 0 ChargedTest saverun DIS-Charged DISGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-ZH.in0000644000175000017500000000403511754474775020643 0ustar sylvestresylvestre################################################## # Example generator based on LHC parameters # usage: Herwig++ read LHC.in ################################################## read LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 set /Herwig/Particles/tau-:Stable Stable set /Herwig/Particles/tau+:Stable Stable set /Herwig/Particles/h0:Stable Stable #cd /Herwig/Partons #create Herwig::MRST MRST2 HwMRST.so #setup MRST2 /home/richardn/montecarlo/c++/Herwig++/trunk/Herwig++/PDF/mrst/1998/lo05a.dat #set MRST2:RemnantHandler HadronRemnants #set /Herwig/Particles/p+:PDF MRST2 #set /Herwig/Particles/pbar-:PDF MRST2 cd /Herwig create Herwig::O2AlphaS AlphaS2 set Model:QCD/RunningAlphaS AlphaS2 set Model:EW/CKM:theta_12 0. set Model:EW/CKM:theta_13 0. set Model:EW/CKM:theta_23 0. set Model:EW/CKM:delta 0. set Model:EW/Sin2ThetaW 0.22254916 create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 cd /Herwig/MatrixElements create Herwig::MEPP2ZH MEPP2ZH insert SimpleQCD:MatrixElements[0] MEPP2ZH set /Herwig/Particles/h0:NominalMass 115. set /Herwig/Masses/HiggsMass:HiggsShape 0 set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Particles/Z0/Z0->d,dbar;:OnOff Off set /Herwig/Particles/Z0/Z0->s,sbar;:OnOff Off set /Herwig/Particles/Z0/Z0->b,bbar;:OnOff Off set /Herwig/Particles/Z0/Z0->u,ubar;:OnOff Off set /Herwig/Particles/Z0/Z0->c,cbar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_tau,nu_taubar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_mu,nu_mubar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_e,nu_ebar;:OnOff Off set /Herwig/Particles/Z0/Z0->mu-,mu+;:OnOff Off set /Herwig/Particles/Z0/Z0->e-,e+;:OnOff On set /Herwig/Particles/Z0/Z0->tau-,tau+;:OnOff Off set /Herwig/Decays/ZDecayer:Initialize 1 cd /Herwig/Generators set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL cd /Herwig/Generators create Herwig::ZHTest ZHTest HadronTest.so insert LHCGenerator:AnalysisHandlers 0 ZHTest saverun LHC-ZH LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-bbH.in0000644000175000017500000000220011754474775021005 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 set /Herwig/Particles/t:Stable Stable set /Herwig/Particles/tbar:Stable Stable set /Herwig/Particles/h0:Stable Stable cd /Herwig/Partons create ThePEG::LHAPDF LHAPDF ThePEGLHAPDF.so set LHAPDF:PType Nucleon set LHAPDF:PDFName cteq5l.LHgrid set LHAPDF:PDFNumber 19070 set LHAPDF:RemnantHandler HadronRemnants set /Herwig/Particles/p+:PDF LHAPDF set /Herwig/Particles/pbar-:PDF LHAPDF cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 100000 set /Herwig/Model:EW/Sin2ThetaW 0.22254916 cd /Herwig/MatrixElements/ set MEPP2bbbarH:ShapeScheme OnShell insert SimpleQCD:MatrixElements[0] MEPP2bbbarH set /Herwig/RunningMass:TopBottomCharmMass Pole cd /Herwig/Generators set /Herwig/Analysis/Basics:CheckQuark 0 create Herwig::QQHTest bbHTest HadronTest.so set bbHTest:QuarkFlavour Bottom insert LHCGenerator:AnalysisHandlers 0 bbHTest saverun LHC-bbH LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-QCDFast.in0000644000175000017500000000120411754474775021542 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 100000 cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] /Herwig/UnderlyingEvent/MEQCD2to2Fast cd /Herwig/Generators set /Herwig/Analysis/Basics:CheckQuark 0 create Herwig::GammaPMETest QCDTest GammaTest.so insert LHCGenerator:AnalysisHandlers 0 QCDTest saverun LHC-QCDFast LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-WW.in0000755000175000017500000000216711754474775020666 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Partons create ThePEG::LHAPDF LHAPDF ThePEGLHAPDF.so set LHAPDF:PType Nucleon set LHAPDF:PDFName cteq5l.LHgrid set LHAPDF:PDFNumber 19070 set LHAPDF:RemnantHandler HadronRemnants set /Herwig/Particles/p+:PDF LHAPDF set /Herwig/Particles/pbar-:PDF LHAPDF cd /Herwig create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 set Model:EW/Sin2ThetaW 0.22254916 set CKM:theta_12 0 set CKM:theta_13 0 set CKM:theta_23 0 set CKM:delta 0 cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set /Herwig/Particles/Z0:Stable 1 set /Herwig/Particles/W+:Stable 1 set /Herwig/Particles/W-:Stable 1 cd /Herwig/MatrixElements/ create Herwig::MEPP2VV MEPP2VV HwMEHadron.so insert SimpleQCD:MatrixElements[0] MEPP2VV set MEPP2VV:Process WW cd /Herwig/Generators/ create Herwig::HadronVVTest WWTest HadronTest.so insert LHCGenerator:AnalysisHandlers 0 WWTest saverun LHC-WW LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LEP-Leptons.in0000644000175000017500000000211011754474775021750 0ustar sylvestresylvestrecd /Herwig/MatrixElements insert SimpleEE:MatrixElements[0] MEee2gZ2ll set /Herwig/Particles/tau+:Stable 1 set /Herwig/Particles/tau-:Stable 1 read LEP.common cd /Herwig/Generators set LEPGenerator:EventHandler:CascadeHandler NULL set LEPGenerator:EventHandler:HadronizationHandler NULL set LEPGenerator:EventHandler:DecayHandler NULL set LEPGenerator:EventHandler:LuminosityFunction:Energy 500.0*GeV set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF create Herwig::FermionTest LeptonsTest LeptonTest.so insert LEPGenerator:AnalysisHandlers 0 LeptonsTest set /Herwig/Analysis/Basics:CheckQuark 0 # parameters to make the same as fortran cd /Herwig create Herwig::O2AlphaS AlphaS2 set Model:QCD/RunningAlphaS AlphaS2 set Model:EW/CKM:theta_12 0.22274457 set Model:EW/CKM:theta_13 0. set Model:EW/CKM:theta_23 0. set Model:EW/CKM:delta 0. set Model:EW/Sin2ThetaW 0.22254916 create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 set /Herwig/ACDCSampler:Ntry 100000 cd /Herwig/Generators saverun LEP-Leptons LEPGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-ZShower-Powheg.in0000644000175000017500000000224611754474775023154 0ustar sylvestresylvestrecd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set /Herwig/Analysis/Basics:CheckQuark 0 set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] PowhegMEqq2gZ2ff set PowhegMEqq2gZ2ff:Process Electron set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO create Herwig::O2AlphaS O2AlphaS set /Herwig/Generators/LHCGenerator:StandardModelParameters:QCD/RunningAlphaS O2AlphaS cd /Herwig/Shower # use the general recon for now set KinematicsReconstructor:ReconstructionOption General # switch treatment of hardest emission set Evolver:HardEmissionMode POWHEG cd /Herwig/Generators create Herwig::VTest VTest HadronJetTest.so insert LHCGenerator:AnalysisHandlers 0 VTest saverun LHC-ZShower-Powheg LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-ttH.in0000644000175000017500000000217511754474775021064 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 set /Herwig/Particles/t:Stable Stable set /Herwig/Particles/tbar:Stable Stable set /Herwig/Particles/h0:Stable Stable cd /Herwig/Partons create ThePEG::LHAPDF LHAPDF ThePEGLHAPDF.so set LHAPDF:PType Nucleon set LHAPDF:PDFName cteq5l.LHgrid set LHAPDF:PDFNumber 19070 set LHAPDF:RemnantHandler HadronRemnants set /Herwig/Particles/p+:PDF LHAPDF set /Herwig/Particles/pbar-:PDF LHAPDF cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 100000 set /Herwig/Model:EW/Sin2ThetaW 0.22254916 cd /Herwig/MatrixElements/ set MEPP2ttbarH:ShapeScheme OnShell insert SimpleQCD:MatrixElements[0] MEPP2ttbarH set /Herwig/RunningMass:TopBottomCharmMass Pole cd /Herwig/Generators set /Herwig/Analysis/Basics:CheckQuark 0 create Herwig::QQHTest ttHTest HadronTest.so set ttHTest:QuarkFlavour Top insert LHCGenerator:AnalysisHandlers 0 ttHTest saverun LHC-ttH LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-ZZVBF.in0000644000175000017500000000236311754474775021225 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig create Herwig::O2AlphaS AlphaS2 set Model:QCD/RunningAlphaS AlphaS2 set Model:EW/CKM:theta_12 0. set Model:EW/CKM:theta_13 0. set Model:EW/CKM:theta_23 0. set Model:EW/CKM:delta 0. set Model:EW/Sin2ThetaW .2319 create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 set /Herwig/Particles/h0:NominalMass 115 set /Herwig/Particles/Z0:NominalMass 91.188 set /Herwig/Particles/W+:NominalMass 80.42 set /Herwig/Particles/W-:NominalMass 80.42 set /Herwig/Masses/HiggsMass:HiggsShape 0 cd /Herwig/Generators set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 10000 set LHCGenerator:EventHandler:StatLevel Full set /Herwig/Particles/h0:Stable Stable cd /Herwig/MatrixElements/ set MEPP2HiggsVBF:MaxFlavour 5 set MEPP2HiggsVBF:ShapeScheme OnShell set MEPP2HiggsVBF:Process ZZ insert SimpleQCD:MatrixElements[0] MEPP2HiggsVBF set /Herwig/Cuts/JetKtCut:MinKT 0.*GeV cd /Herwig/Generators create Herwig::HadronVBFTest ZZVBF-Test HadronTest.so insert LHCGenerator:AnalysisHandlers 0 ZZVBF-Test saverun LHC-ZZVBF LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-HJet-Powheg.in0000644000175000017500000000224111754474775022400 0ustar sylvestresylvestrecd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set /Herwig/Analysis/Basics:CheckQuark 0 set /Herwig/Particles/h0:Stable Stable set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] PowhegMEHiggs set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO create Herwig::O2AlphaS O2AlphaS set /Herwig/Generators/LHCGenerator:StandardModelParameters:QCD/RunningAlphaS O2AlphaS cd /Herwig/Shower # use the general recon for now set KinematicsReconstructor:ReconstructionOption General # switch treatment of hardest emission set Evolver:HardEmissionMode POWHEG cd /Herwig/Generators create Herwig::HTest HTest HadronJetTest.so insert LHCGenerator:AnalysisHandlers 0 HTest saverun LHC-HJet-Powheg LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-ZJet.in0000644000175000017500000000215311754474775021175 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Generators set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL cd /Herwig create Herwig::O2AlphaS AlphaS2 set Model:QCD/RunningAlphaS AlphaS2 set Model:EW/CKM:theta_12 0.22274457 set Model:EW/CKM:theta_13 0. set Model:EW/CKM:theta_23 0. set Model:EW/CKM:delta 0. create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 cd /Herwig/MatrixElements/ set MEZJet:ZDecay 5 set MEZJet:GammaZ 2 insert SimpleQCD:MatrixElements[0] MEZJet set /Herwig/Cuts/ZBosonKtCut:MinKT 20.0*GeV set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV #cd /Herwig/Partons #create Herwig::MRST MRST2 HwMRST.so #setup MRST2 /home/richardn/montecarlo/c++/Herwig++/trunk/Herwig++/PDF/mrst/1998/lo05a.dat #set MRST2:RemnantHandler HadronRemnants #set /Herwig/Particles/p+:PDF MRST2 #set /Herwig/Particles/pbar-:PDF MRST2 cd /Herwig/Generators create Herwig::ZJetTest ZJetTest HadronTest.so insert LHCGenerator:AnalysisHandlers 0 ZJetTest saverun LHC-ZJet LHCGeneratorherwig++-2.6.0.orig/Tests/Inputs/Gamma-WW.in0000644000175000017500000000104211754474775021266 0ustar sylvestresylvestreread Gamma.common cd /Herwig/MatrixElements insert SimpleGammaGamma:MatrixElements 0 /Herwig/MatrixElements/MEgg2WW set MEgg2WW:MassOption OnMassShell cd /Herwig/Generators create Herwig::GammaMETest TestWW GammaTest.so insert GammaGammaGenerator:AnalysisHandlers 0 TestWW set GammaGammaGenerator:EventHandler:CascadeHandler NULL set GammaGammaGenerator:EventHandler:HadronizationHandler NULL set /Herwig/Particles/W-:Stable Stable set /Herwig/Particles/W+:Stable Stable set /Herwig/ACDCSampler:Ntry 100000 saverun Gamma-WW GammaGammaGenerator herwig++-2.6.0.orig/Tests/Inputs/LEP-Powheg.in0000644000175000017500000000166611754474775021574 0ustar sylvestresylvestrecd /Herwig/MatrixElements create Herwig::O2AlphaS O2AlphaS set /Herwig/Generators/LHCGenerator:StandardModelParameters:QCD/RunningAlphaS O2AlphaS set /Herwig/Shower/Evolver:HardEmissionMode POWHEG set /Herwig/Shower/AlphaQCD:AlphaMZ 0.118 insert SimpleEE:MatrixElements 0 PowhegMEee2gZ2qq read LEP.common cd /Herwig/Generators set LEPGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LEPGenerator:EventHandler:LuminosityFunction:Energy 91.2 insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/LEPMultiplicity insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/BMultiplicity insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/BFrag insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/Shapes insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/LEPIdent insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/LEPFourJet insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/LEPJet saverun LEP-Powheg LEPGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-GammaJet.in0000644000175000017500000000117111754474775022005 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 100000 cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEGammaJet cd /Herwig/Generators set /Herwig/Analysis/Basics:CheckQuark 0 create Herwig::GammaJetAnalysis GammaJetTest HwAnalysis.so insert LHCGenerator:AnalysisHandlers 0 GammaJetTest saverun LHC-GammaJet LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/Gamma.common0000644000175000017500000000510211754474775021616 0ustar sylvestresylvestre################################################## # Common stuff for gamma gamma collisions ################################################## # use Herwig alpha_em cd /Herwig create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 # Create GammaGammaHandler with photon beams cd /Herwig/EventHandlers create ThePEG::StandardEventHandler GammaGammaHandler create ThePEG::FixedCMSLuminosity FixedGammaGammaLuminosity FixedCMSLuminosity.so set GammaGammaHandler:LuminosityFunction FixedGammaGammaLuminosity set FixedGammaGammaLuminosity:Energy 1000. set GammaGammaHandler:BeamA /Herwig/Particles/gamma set GammaGammaHandler:BeamB /Herwig/Particles/gamma set GammaGammaHandler:Sampler /Herwig/ACDCSampler set GammaGammaHandler:CascadeHandler /Herwig/Shower/ShowerHandler set GammaGammaHandler:HadronizationHandler /Herwig/Hadronization/ClusterHadHandler set GammaGammaHandler:DecayHandler /Herwig/Decays/DecayHandler create ThePEG::SubProcessHandler /Herwig/MatrixElements/SimpleGammaGamma cp /Herwig/Partons/EEExtractor /Herwig/Partons/GammaGammaExtractor set /Herwig/MatrixElements/SimpleGammaGamma:PartonExtractor /Herwig/Partons/GammaGammaExtractor insert GammaGammaHandler:SubProcessHandlers[0] /Herwig/MatrixElements/SimpleGammaGamma # create the GammaGamma generator cd /Herwig/Generators create ThePEG::EventGenerator GammaGammaGenerator set GammaGammaGenerator:RandomNumberGenerator /Herwig/Random set GammaGammaGenerator:StandardModelParameters /Herwig/Model set GammaGammaGenerator:EventHandler /Herwig/EventHandlers/GammaGammaHandler set GammaGammaGenerator:Strategy DefaultStrategy # the cuts cd /Herwig/Cuts create ThePEG::Cuts GammaGammaCuts insert GammaGammaCuts:OneCuts[0] JetKtCut insert GammaGammaCuts:OneCuts[1] PhotonKtCut insert GammaGammaCuts:OneCuts[2] LeptonKtCut insert GammaGammaCuts:OneCuts[3] TopKtCut insert GammaGammaCuts:OneCuts[4] WBosonKtCut insert GammaGammaCuts:OneCuts[5] ZBosonKtCut set JetKtCut:MinKT 10. set LeptonKtCut:MinKT 0. set WBosonKtCut:MinKT 0. cd /Herwig/Generators set GammaGammaGenerator:EventHandler:Cuts /Herwig/Cuts/GammaGammaCuts ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set GammaGammaGenerator:NumberOfEvents 100000000 set GammaGammaGenerator:RandomNumberGenerator:Seed 31122001 set GammaGammaGenerator:DebugLevel 1 set GammaGammaGenerator:PrintEvent 0 set GammaGammaGenerator:MaxErrors 10000 set GammaGammaGenerator:EventHandler:StatLevel Full set GammaGammaGenerator:EventHandler:CascadeHandler:MPIHandler NULL cd /Herwig/Generators herwig++-2.6.0.orig/Tests/Inputs/LHC-WShower.in0000644000175000017500000000136011754474775021716 0ustar sylvestresylvestrecd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set /Herwig/Analysis/Basics:CheckQuark 0 set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEqq2W2ff set MEqq2W2ff:Process Electron cd /Herwig/Generators create Herwig::VTest VTest HadronJetTest.so insert LHCGenerator:AnalysisHandlers 0 VTest saverun LHC-WShower LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-W.in0000644000175000017500000000126611754474775020533 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Generators set /Herwig/Particles/tau-:Stable Stable set /Herwig/Particles/tau+:Stable Stable set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 100000 cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEqq2W2ff cd /Herwig/Generators set /Herwig/Analysis/Basics:CheckQuark 0 create Herwig::SimpleLHCAnalysis WTest HwAnalysis.so insert LHCGenerator:AnalysisHandlers 0 WTest saverun LHC-W LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC.common0000755000175000017500000000100411754474775021202 0ustar sylvestresylvestrecd /Herwig/Generators set LHCGenerator:NumberOfEvents 100000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:DebugLevel 1 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set /Herwig/Analysis/Basics:CheckQuark 0 set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 herwig++-2.6.0.orig/Tests/Inputs/LEP-Quarks.in0000644000175000017500000000210211754474775021573 0ustar sylvestresylvestrecd /Herwig/MatrixElements insert SimpleEE:MatrixElements[0] MEee2gZ2qq set /Herwig/Particles/t:Stable 1 set /Herwig/Particles/tbar:Stable 1 read LEP.common cd /Herwig/Generators set LEPGenerator:EventHandler:CascadeHandler NULL set LEPGenerator:EventHandler:HadronizationHandler NULL set LEPGenerator:EventHandler:DecayHandler NULL set LEPGenerator:EventHandler:LuminosityFunction:Energy 500.0*GeV set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF create Herwig::FermionTest QuarksTest LeptonTest.so insert LEPGenerator:AnalysisHandlers 0 QuarksTest set /Herwig/Analysis/Basics:CheckQuark 0 # parameters to make the same as fortran cd /Herwig create Herwig::O2AlphaS AlphaS2 set Model:QCD/RunningAlphaS AlphaS2 set Model:EW/CKM:theta_12 0.22274457 set Model:EW/CKM:theta_13 0. set Model:EW/CKM:theta_23 0. set Model:EW/CKM:delta 0. set Model:EW/Sin2ThetaW 0.22254916 create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 set /Herwig/ACDCSampler:Ntry 100000 cd /Herwig/Generators saverun LEP-Quarks LEPGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-WJet.in0000644000175000017500000000221111754474775021165 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Generators set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL cd /Herwig create Herwig::O2AlphaS AlphaS2 set Model:QCD/RunningAlphaS AlphaS2 set Model:EW/CKM:theta_12 0.22274457 set Model:EW/CKM:theta_13 0. set Model:EW/CKM:theta_23 0. set Model:EW/CKM:delta 0. create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 cd /Herwig/MatrixElements/ set MEWJet:WDecay 3 set MEWJet:Process 3 insert SimpleQCD:MatrixElements[0] MEWJet set /Herwig/Cuts/WBosonKtCut:MinKT 20.0*GeV set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV # cd /Herwig/Partons # create Herwig::MRST MRST2 HwMRST.so # setup MRST2 /home/richardn/montecarlo/c++/Herwig++/trunk/Herwig++/PDF/mrst/1998/lo05a.dat # set MRST2:RemnantHandler HadronRemnants # set /Herwig/Particles/p+:PDF MRST2 # set /Herwig/Particles/pbar-:PDF MRST2 cd /Herwig/Generators cd /Herwig/Generators create Herwig::WJetTest WJetTest HadronTest.so insert LHCGenerator:AnalysisHandlers 0 WJetTest saverun LHC-WJet LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-ZHJet.in0000644000175000017500000000424511754474775021311 0ustar sylvestresylvestrecd /Herwig/Generators set LHCGenerator:NumberOfEvents 100000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL erase LHCGenerator:EventHandler:PostSubProcessHandlers 0 set /Herwig/Analysis/Basics:CheckQuark 0 set /Herwig/Particles/h0:Stable Stable set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEPP2ZH set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV cd /Herwig/Generators create Herwig::VHTest /Herwig/Analysis/VHTest HadronJetTest.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/VHTest set /Herwig/Particles/W+/W+->bbar,c;:OnOff Off set /Herwig/Particles/W+/W+->c,dbar;:OnOff Off set /Herwig/Particles/W+/W+->c,sbar;:OnOff Off set /Herwig/Particles/W+/W+->nu_e,e+;:OnOff On set /Herwig/Particles/W+/W+->nu_mu,mu+;:OnOff Off set /Herwig/Particles/W+/W+->nu_tau,tau+;:OnOff Off set /Herwig/Particles/W+/W+->sbar,u;:OnOff Off set /Herwig/Particles/W+/W+->u,dbar;:OnOff Off set /Herwig/Particles/W-/W-->b,cbar;:OnOff Off set /Herwig/Particles/W-/W-->cbar,d;:OnOff Off set /Herwig/Particles/W-/W-->cbar,s;:OnOff Off set /Herwig/Particles/W-/W-->nu_ebar,e-;:OnOff On set /Herwig/Particles/W-/W-->nu_mubar,mu-;:OnOff Off set /Herwig/Particles/W-/W-->nu_taubar,tau-;:OnOff Off set /Herwig/Particles/W-/W-->s,ubar;:OnOff Off set /Herwig/Particles/W-/W-->ubar,d;:OnOff Off set /Herwig/Particles/Z0/Z0->b,bbar;:OnOff Off set /Herwig/Particles/Z0/Z0->c,cbar;:OnOff Off set /Herwig/Particles/Z0/Z0->d,dbar;:OnOff Off set /Herwig/Particles/Z0/Z0->e-,e+;:OnOff On set /Herwig/Particles/Z0/Z0->mu-,mu+;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_e,nu_ebar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_mu,nu_mubar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_tau,nu_taubar;:OnOff Off set /Herwig/Particles/Z0/Z0->s,sbar;:OnOff Off set /Herwig/Particles/Z0/Z0->tau-,tau+;:OnOff Off set /Herwig/Particles/Z0/Z0->u,ubar;:OnOff Off saverun LHC-ZHJet LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-WWVBF.in0000644000175000017500000000236311754474775021217 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig create Herwig::O2AlphaS AlphaS2 set Model:QCD/RunningAlphaS AlphaS2 set Model:EW/CKM:theta_12 0. set Model:EW/CKM:theta_13 0. set Model:EW/CKM:theta_23 0. set Model:EW/CKM:delta 0. set Model:EW/Sin2ThetaW .2319 create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 set /Herwig/Particles/h0:NominalMass 115 set /Herwig/Particles/Z0:NominalMass 91.188 set /Herwig/Particles/W+:NominalMass 80.42 set /Herwig/Particles/W-:NominalMass 80.42 set /Herwig/Masses/HiggsMass:HiggsShape 0 cd /Herwig/Generators set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 10000 set LHCGenerator:EventHandler:StatLevel Full set /Herwig/Particles/h0:Stable Stable cd /Herwig/MatrixElements/ set MEPP2HiggsVBF:MaxFlavour 5 set MEPP2HiggsVBF:ShapeScheme OnShell set MEPP2HiggsVBF:Process WW insert SimpleQCD:MatrixElements[0] MEPP2HiggsVBF set /Herwig/Cuts/JetKtCut:MinKT 0.*GeV cd /Herwig/Generators create Herwig::HadronVBFTest WWVBF-Test HadronTest.so insert LHCGenerator:AnalysisHandlers 0 WWVBF-Test saverun LHC-WWVBF LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-GammaGamma.in0000644000175000017500000000120311754474775022301 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 100000 cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEGammaGamma cd /Herwig/Generators set /Herwig/Analysis/Basics:CheckQuark 0 create Herwig::GammaGammaAnalysis GammaGammaTest HwAnalysis.so insert LHCGenerator:AnalysisHandlers 0 GammaGammaTest saverun LHC-GammaGamma LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-WShower-Powheg.in0000644000175000017500000000224411754474775023147 0ustar sylvestresylvestrecd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set /Herwig/Analysis/Basics:CheckQuark 0 set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] PowhegMEqq2W2ff set PowhegMEqq2W2ff:Process Electron set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO create Herwig::O2AlphaS O2AlphaS set /Herwig/Generators/LHCGenerator:StandardModelParameters:QCD/RunningAlphaS O2AlphaS cd /Herwig/Shower # use the general recon for now set KinematicsReconstructor:ReconstructionOption General # switch treatment of hardest emission set Evolver:HardEmissionMode POWHEG cd /Herwig/Generators create Herwig::VTest VTest HadronJetTest.so insert LHCGenerator:AnalysisHandlers 0 VTest saverun LHC-WShower-Powheg LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LEP-VH.in0000644000175000017500000000320211754474775020644 0ustar sylvestresylvestrecd /Herwig/MatrixElements insert SimpleEE:MatrixElements[0] MEee2ZH read LEP.common cd /Herwig/Generators set LEPGenerator:EventHandler:CascadeHandler NULL set LEPGenerator:EventHandler:HadronizationHandler NULL set LEPGenerator:EventHandler:DecayHandler NULL set LEPGenerator:EventHandler:LuminosityFunction:Energy 500.0*GeV set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF create Herwig::VHTest VHTest LeptonTest.so insert LEPGenerator:AnalysisHandlers 0 VHTest set /Herwig/Analysis/Basics:CheckQuark 0 # parameters to make the same as fortran cd /Herwig create Herwig::O2AlphaS AlphaS2 set Model:QCD/RunningAlphaS AlphaS2 set Model:EW/CKM:theta_12 0.22274457 set Model:EW/CKM:theta_13 0. set Model:EW/CKM:theta_23 0. set Model:EW/CKM:delta 0. set Model:EW/Sin2ThetaW 0.22254916 create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 set /Herwig/Masses/HiggsMass:HiggsShape 0 set /Herwig/Particles/h0:Stable Stable set /Herwig/Particles/Z0/Z0->d,dbar;:OnOff Off set /Herwig/Particles/Z0/Z0->s,sbar;:OnOff Off set /Herwig/Particles/Z0/Z0->b,bbar;:OnOff Off set /Herwig/Particles/Z0/Z0->u,ubar;:OnOff Off set /Herwig/Particles/Z0/Z0->c,cbar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_tau,nu_taubar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_mu,nu_mubar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_e,nu_ebar;:OnOff Off set /Herwig/Particles/Z0/Z0->mu-,mu+;:OnOff Off set /Herwig/Particles/Z0/Z0->e-,e+;:OnOff On set /Herwig/Particles/Z0/Z0->tau-,tau+;:OnOff Off set /Herwig/Particles/Z0:WidthCut 1000. set /Herwig/ACDCSampler:Ntry 100000 cd /Herwig/Generators saverun LEP-VH LEPGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-Z.in0000644000175000017500000000126711754474775020537 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Generators set /Herwig/Particles/tau-:Stable Stable set /Herwig/Particles/tau+:Stable Stable set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 100000 cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEqq2gZ2ff cd /Herwig/Generators set /Herwig/Analysis/Basics:CheckQuark 0 create Herwig::SimpleLHCAnalysis ZTest HwAnalysis.so insert LHCGenerator:AnalysisHandlers 0 ZTest saverun LHC-Z LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LEP-VBF.in0000644000175000017500000000325611754474775020755 0ustar sylvestresylvestrecd /Herwig/MatrixElements insert SimpleEE:MatrixElements[0] MEee2HiggsVBF set MEee2HiggsVBF:ShapeScheme OnShell read LEP.common cd /Herwig/Generators set LEPGenerator:EventHandler:CascadeHandler NULL set LEPGenerator:EventHandler:HadronizationHandler NULL set LEPGenerator:EventHandler:DecayHandler NULL set /Herwig/Analysis/Basics:CheckQuark 0 set LEPGenerator:EventHandler:LuminosityFunction:Energy 500.0*GeV set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF create Herwig::VBFTest TestVBF LeptonTest.so insert LEPGenerator:AnalysisHandlers 0 TestVBF # parameters to make the same as fortran cd /Herwig create Herwig::O2AlphaS AlphaS2 set Model:QCD/RunningAlphaS AlphaS2 set Model:EW/CKM:theta_12 0.22274457 set Model:EW/CKM:theta_13 0. set Model:EW/CKM:theta_23 0. set Model:EW/CKM:delta 0. set Model:EW/Sin2ThetaW 0.22254916 create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 set /Herwig/Masses/HiggsMass:HiggsShape 0 set /Herwig/Particles/Z0/Z0->d,dbar;:OnOff Off set /Herwig/Particles/Z0/Z0->s,sbar;:OnOff Off set /Herwig/Particles/Z0/Z0->b,bbar;:OnOff Off set /Herwig/Particles/Z0/Z0->u,ubar;:OnOff Off set /Herwig/Particles/Z0/Z0->c,cbar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_tau,nu_taubar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_mu,nu_mubar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_e,nu_ebar;:OnOff Off set /Herwig/Particles/Z0/Z0->mu-,mu+;:OnOff Off set /Herwig/Particles/Z0/Z0->e-,e+;:OnOff On set /Herwig/Particles/Z0/Z0->tau-,tau+;:OnOff Off set /Herwig/Particles/Z0:WidthCut 1000. set /Herwig/Particles/h0:Stable 1 set /Herwig/ACDCSampler:Ntry 1000000 cd /Herwig/Generators saverun LEP-VBF LEPGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-ZShower.in0000644000175000017500000000136211754474775021723 0ustar sylvestresylvestrecd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set /Herwig/Analysis/Basics:CheckQuark 0 set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEqq2gZ2ff set MEqq2gZ2ff:Process Electron cd /Herwig/Generators create Herwig::VTest VTest HadronJetTest.so insert LHCGenerator:AnalysisHandlers 0 VTest saverun LHC-ZShower LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LEP-VV.in0000644000175000017500000000147411754474775020673 0ustar sylvestresylvestrecd /Herwig/MatrixElements insert SimpleEE:MatrixElements[0] MEee2VV read LEP.common cd /Herwig/Generators set LEPGenerator:EventHandler:CascadeHandler NULL set LEPGenerator:EventHandler:DecayHandler NULL set LEPGenerator:EventHandler:LuminosityFunction:Energy 200.0*GeV set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF create Herwig::VVTest VVTest LeptonTest.so insert LEPGenerator:AnalysisHandlers 0 VVTest # parameters to make the same as fortran set /Herwig/Particles/W+:Stable 1 set /Herwig/Particles/W-:Stable 1 set /Herwig/Particles/Z0:Stable 1 set /Herwig/MatrixElements/MEee2VV:MassOption 1 create Herwig::AlphaEM /Herwig/AlphaEM2 set /Herwig/Model:EW/RunningAlphaEM /Herwig/AlphaEM2 set /Herwig/Model:EW/Sin2ThetaW 0.22254916 saverun LEP-VV LEPGenerator herwig++-2.6.0.orig/Tests/Inputs/Gamma-FF.in0000644000175000017500000000112311754474775021224 0ustar sylvestresylvestreread Gamma.common cd /Herwig/MatrixElements insert SimpleGammaGamma:MatrixElements 0 /Herwig/MatrixElements/MEgg2ff cd /Herwig/Generators create Herwig::GammaMETest TestFF GammaTest.so insert GammaGammaGenerator:AnalysisHandlers 0 TestFF set GammaGammaGenerator:EventHandler:CascadeHandler NULL set GammaGammaGenerator:EventHandler:HadronizationHandler NULL set /Herwig/Particles/tau-:Stable Stable set /Herwig/Particles/tau+:Stable Stable set /Herwig/Particles/t:Stable Stable set /Herwig/Particles/tbar:Stable Stable set /Herwig/ACDCSampler:Ntry 100000 saverun Gamma-FF GammaGammaGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-WHJet.in0000644000175000017500000000424511754474775021306 0ustar sylvestresylvestrecd /Herwig/Generators set LHCGenerator:NumberOfEvents 100000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL erase LHCGenerator:EventHandler:PostSubProcessHandlers 0 set /Herwig/Analysis/Basics:CheckQuark 0 set /Herwig/Particles/h0:Stable Stable set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEPP2WH set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV cd /Herwig/Generators create Herwig::VHTest /Herwig/Analysis/VHTest HadronJetTest.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/VHTest set /Herwig/Particles/W+/W+->bbar,c;:OnOff Off set /Herwig/Particles/W+/W+->c,dbar;:OnOff Off set /Herwig/Particles/W+/W+->c,sbar;:OnOff Off set /Herwig/Particles/W+/W+->nu_e,e+;:OnOff On set /Herwig/Particles/W+/W+->nu_mu,mu+;:OnOff Off set /Herwig/Particles/W+/W+->nu_tau,tau+;:OnOff Off set /Herwig/Particles/W+/W+->sbar,u;:OnOff Off set /Herwig/Particles/W+/W+->u,dbar;:OnOff Off set /Herwig/Particles/W-/W-->b,cbar;:OnOff Off set /Herwig/Particles/W-/W-->cbar,d;:OnOff Off set /Herwig/Particles/W-/W-->cbar,s;:OnOff Off set /Herwig/Particles/W-/W-->nu_ebar,e-;:OnOff On set /Herwig/Particles/W-/W-->nu_mubar,mu-;:OnOff Off set /Herwig/Particles/W-/W-->nu_taubar,tau-;:OnOff Off set /Herwig/Particles/W-/W-->s,ubar;:OnOff Off set /Herwig/Particles/W-/W-->ubar,d;:OnOff Off set /Herwig/Particles/Z0/Z0->b,bbar;:OnOff Off set /Herwig/Particles/Z0/Z0->c,cbar;:OnOff Off set /Herwig/Particles/Z0/Z0->d,dbar;:OnOff Off set /Herwig/Particles/Z0/Z0->e-,e+;:OnOff On set /Herwig/Particles/Z0/Z0->mu-,mu+;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_e,nu_ebar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_mu,nu_mubar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_tau,nu_taubar;:OnOff Off set /Herwig/Particles/Z0/Z0->s,sbar;:OnOff Off set /Herwig/Particles/Z0/Z0->tau-,tau+;:OnOff Off set /Herwig/Particles/Z0/Z0->u,ubar;:OnOff Off saverun LHC-WHJet LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LEP-TopDecay.in0000644000175000017500000000135011754474775022041 0ustar sylvestresylvestrecd /Herwig/Generators set LEPGenerator:NumberOfEvents 100000000 set LEPGenerator:RandomNumberGenerator:Seed 31122001 set LEPGenerator:PrintEvent 10 set LEPGenerator:MaxErrors 10000 set LEPGenerator:EventHandler:LuminosityFunction:Energy 360.0 set LEPGenerator:EventHandler:CascadeHandler:MPIHandler NULL set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF cd /Herwig/MatrixElements insert SimpleEE:MatrixElements 0 MEee2gZ2qq set MEee2gZ2qq:MinimumFlavour 6 set MEee2gZ2qq:MaximumFlavour 6 cd /Herwig/Generators create Herwig::TopDecay /Herwig/Analysis/TopDecay libfastjet.so LeptonJetTest.so insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/TopDecay saverun LEP-TopDecay LEPGenerator herwig++-2.6.0.orig/Tests/Inputs/LEP-BB.in0000644000175000017500000000101411754474775020611 0ustar sylvestresylvestrecd /Herwig/MatrixElements set MEee2gZ2qq:MinimumFlavour 4 set MEee2gZ2qq:MaximumFlavour 4 insert SimpleEE:MatrixElements 0 MEee2gZ2qq read LEP.common cd /Herwig/Generators set LEPGenerator:EventHandler:LuminosityFunction:Energy 10.53 set LEPGenerator:EventHandler:CascadeHandler:MPIHandler NULL cd /Herwig/Generators insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/BELLECharm insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/CLEOCharm set /Herwig/Cuts/EECuts:MHatMin 10.5299 saverun LEP-BB LEPGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-ZZ.in0000755000175000017500000000216711754474775020674 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Partons create ThePEG::LHAPDF LHAPDF ThePEGLHAPDF.so set LHAPDF:PType Nucleon set LHAPDF:PDFName cteq5l.LHgrid set LHAPDF:PDFNumber 19070 set LHAPDF:RemnantHandler HadronRemnants set /Herwig/Particles/p+:PDF LHAPDF set /Herwig/Particles/pbar-:PDF LHAPDF cd /Herwig create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 set Model:EW/Sin2ThetaW 0.22254916 set CKM:theta_12 0 set CKM:theta_13 0 set CKM:theta_23 0 set CKM:delta 0 cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set /Herwig/Particles/Z0:Stable 1 set /Herwig/Particles/W+:Stable 1 set /Herwig/Particles/W-:Stable 1 cd /Herwig/MatrixElements/ create Herwig::MEPP2VV MEPP2VV HwMEHadron.so insert SimpleQCD:MatrixElements[0] MEPP2VV set MEPP2VV:Process ZZ cd /Herwig/Generators/ create Herwig::HadronVVTest ZZTest HadronTest.so insert LHCGenerator:AnalysisHandlers 0 ZZTest saverun LHC-ZZ LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-HJet.in0000644000175000017500000000136311754474775021155 0ustar sylvestresylvestrecd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set /Herwig/Analysis/Basics:CheckQuark 0 set /Herwig/Particles/h0:Stable Stable set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEHiggs cd /Herwig/Generators create Herwig::HTest HTest HadronJetTest.so insert LHCGenerator:AnalysisHandlers 0 HTest saverun LHC-HJet LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-QCD.in0000644000175000017500000000114411754474775020727 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 100000 cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEQCD2to2 cd /Herwig/Generators set /Herwig/Analysis/Basics:CheckQuark 0 create Herwig::GammaPMETest QCDTest GammaTest.so insert LHCGenerator:AnalysisHandlers 0 QCDTest saverun LHC-QCD LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-VBF.in0000644000175000017500000000235711754474775020744 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig create Herwig::O2AlphaS AlphaS2 set Model:QCD/RunningAlphaS AlphaS2 set Model:EW/CKM:theta_12 0. set Model:EW/CKM:theta_13 0. set Model:EW/CKM:theta_23 0. set Model:EW/CKM:delta 0. set Model:EW/Sin2ThetaW .2319 create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 set /Herwig/Particles/h0:NominalMass 115 set /Herwig/Particles/Z0:NominalMass 91.188 set /Herwig/Particles/W+:NominalMass 80.42 set /Herwig/Particles/W-:NominalMass 80.42 set /Herwig/Masses/HiggsMass:HiggsShape 0 cd /Herwig/Generators set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 10000 set LHCGenerator:EventHandler:StatLevel Full set /Herwig/Particles/h0:Stable Stable cd /Herwig/MatrixElements/ set MEPP2HiggsVBF:MaxFlavour 5 set MEPP2HiggsVBF:ShapeScheme OnShell set MEPP2HiggsVBF:Process Both insert SimpleQCD:MatrixElements[0] MEPP2HiggsVBF set /Herwig/Cuts/JetKtCut:MinKT 0.*GeV cd /Herwig/Generators create Herwig::HadronVBFTest VBF-Test HadronTest.so insert LHCGenerator:AnalysisHandlers 0 VBF-Test saverun LHC-VBF LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-Top.in0000644000175000017500000000115111754474775021060 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 100000 cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEHeavyQuark cd /Herwig/Generators set /Herwig/Analysis/Basics:CheckQuark 0 create Herwig::TTbarAnalysis TopTest HwAnalysis.so insert LHCGenerator:AnalysisHandlers 0 TopTest saverun LHC-Top LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-Bottom.in0000644000175000017500000000122211754474775021561 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 100000 cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEHeavyQuark set MEHeavyQuark:QuarkType Bottom cd /Herwig/Generators set /Herwig/Analysis/Basics:CheckQuark 0 create Herwig::GammaPMETest BottomTest GammaTest.so insert LHCGenerator:AnalysisHandlers 0 BottomTest saverun LHC-Bottom LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-WHJet-Powheg.in0000644000175000017500000000512311754474775022531 0ustar sylvestresylvestrecd /Herwig/Generators set LHCGenerator:NumberOfEvents 100000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL erase LHCGenerator:EventHandler:PostSubProcessHandlers 0 set /Herwig/Analysis/Basics:CheckQuark 0 set /Herwig/Particles/h0:Stable Stable set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] PowhegMEPP2WH set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO create Herwig::O2AlphaS O2AlphaS set /Herwig/Generators/LHCGenerator:StandardModelParameters:QCD/RunningAlphaS O2AlphaS cd /Herwig/Shower # use the general recon for now set KinematicsReconstructor:ReconstructionOption General # switch treatment of hardest emission set Evolver:HardEmissionMode POWHEG cd /Herwig/Generators create Herwig::VHTest /Herwig/Analysis/VHTest HadronJetTest.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/VHTest set /Herwig/Particles/W+/W+->bbar,c;:OnOff Off set /Herwig/Particles/W+/W+->c,dbar;:OnOff Off set /Herwig/Particles/W+/W+->c,sbar;:OnOff Off set /Herwig/Particles/W+/W+->nu_e,e+;:OnOff On set /Herwig/Particles/W+/W+->nu_mu,mu+;:OnOff Off set /Herwig/Particles/W+/W+->nu_tau,tau+;:OnOff Off set /Herwig/Particles/W+/W+->sbar,u;:OnOff Off set /Herwig/Particles/W+/W+->u,dbar;:OnOff Off set /Herwig/Particles/W-/W-->b,cbar;:OnOff Off set /Herwig/Particles/W-/W-->cbar,d;:OnOff Off set /Herwig/Particles/W-/W-->cbar,s;:OnOff Off set /Herwig/Particles/W-/W-->nu_ebar,e-;:OnOff On set /Herwig/Particles/W-/W-->nu_mubar,mu-;:OnOff Off set /Herwig/Particles/W-/W-->nu_taubar,tau-;:OnOff Off set /Herwig/Particles/W-/W-->s,ubar;:OnOff Off set /Herwig/Particles/W-/W-->ubar,d;:OnOff Off set /Herwig/Particles/Z0/Z0->b,bbar;:OnOff Off set /Herwig/Particles/Z0/Z0->c,cbar;:OnOff Off set /Herwig/Particles/Z0/Z0->d,dbar;:OnOff Off set /Herwig/Particles/Z0/Z0->e-,e+;:OnOff On set /Herwig/Particles/Z0/Z0->mu-,mu+;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_e,nu_ebar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_mu,nu_mubar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_tau,nu_taubar;:OnOff Off set /Herwig/Particles/Z0/Z0->s,sbar;:OnOff Off set /Herwig/Particles/Z0/Z0->tau-,tau+;:OnOff Off set /Herwig/Particles/Z0/Z0->u,ubar;:OnOff Off saverun LHC-WHJet-Powheg LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-ZGamma.in0000644000175000017500000000250611754474775021477 0ustar sylvestresylvestre################################################## # Example generator based on LHC parameters # usage: Herwig++ read LHC.in ################################################## read LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Partons create ThePEG::LHAPDF LHAPDF ThePEGLHAPDF.so set LHAPDF:PType Nucleon set LHAPDF:PDFName cteq5l.LHgrid set LHAPDF:PDFNumber 19070 set LHAPDF:RemnantHandler HadronRemnants set /Herwig/Particles/p+:PDF LHAPDF set /Herwig/Particles/pbar-:PDF LHAPDF cd /Herwig create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 set Model:EW/Sin2ThetaW 0.22254916 set CKM:theta_12 0 set CKM:theta_13 0 set CKM:theta_23 0 set CKM:delta 0 cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEPP2VGamma set MEPP2VGamma:Process ZGamma set MEPP2VGamma:MassOption OnMassShell set /Herwig/Particles/Z0:Stable Stable set /Herwig/Cuts/PhotonKtCut:MinKT 20 cd /Herwig/Generators create Herwig::VGammaTest ZGammaTest HadronTest.so insert LHCGenerator:AnalysisHandlers 0 ZGammaTest set /Herwig/Analysis/Basics:CheckQuark 0 saverun LHC-ZGamma LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-HiggsJet.in0000644000175000017500000000117111754474775022024 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 100000 cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEHiggsJet cd /Herwig/Generators set /Herwig/Analysis/Basics:CheckQuark 0 create Herwig::HiggsJetAnalysis HiggsJetTest HwAnalysis.so insert LHCGenerator:AnalysisHandlers 0 HiggsJetTest saverun LHC-HiggsJet LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/GammaP.common0000755000175000017500000000533311754474775021747 0ustar sylvestresylvestre################################################## # Example generator based for gamma hadron collisions ################################################## cd /Herwig create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 create Herwig::O2AlphaS AlphaS2 set Model:QCD/RunningAlphaS AlphaS2 # Create GammaHadronHandler cd /Herwig/EventHandlers create ThePEG::StandardEventHandler GammaHadronHandler create ThePEG::FixedCMSLuminosity FixedGammaHadronLuminosity FixedCMSLuminosity.so set GammaHadronHandler:LuminosityFunction FixedGammaHadronLuminosity set FixedGammaHadronLuminosity:Energy 1000. set GammaHadronHandler:BeamA /Herwig/Particles/gamma set GammaHadronHandler:BeamB /Herwig/Particles/p+ set GammaHadronHandler:Sampler /Herwig/ACDCSampler set GammaHadronHandler:CascadeHandler /Herwig/Shower/ShowerHandler set GammaHadronHandler:HadronizationHandler /Herwig/Hadronization/ClusterHadHandler set GammaHadronHandler:DecayHandler /Herwig/Decays/DecayHandler create ThePEG::SubProcessHandler /Herwig/MatrixElements/SimpleGammaHadron cp /Herwig/Partons/EEExtractor /Herwig/Partons/GammaHadronExtractor set /Herwig/Partons/GammaHadronExtractor:FlatSHatY 1 set /Herwig/MatrixElements/SimpleGammaHadron:PartonExtractor /Herwig/Partons/GammaHadronExtractor insert GammaHadronHandler:SubProcessHandlers[0] /Herwig/MatrixElements/SimpleGammaHadron # create the GammaHadron generator cd /Herwig/Generators create ThePEG::EventGenerator GammaHadronGenerator set GammaHadronGenerator:RandomNumberGenerator /Herwig/Random set GammaHadronGenerator:StandardModelParameters /Herwig/Model set GammaHadronGenerator:EventHandler /Herwig/EventHandlers/GammaHadronHandler set GammaHadronGenerator:Strategy DefaultStrategy # the cuts cd /Herwig/Cuts create ThePEG::Cuts GammaHadronCuts set GammaHadronCuts:X1Min 1.0e-5 set GammaHadronCuts:X2Min 1.0e-5 set GammaHadronCuts:MHatMin 0.*GeV insert GammaHadronCuts:OneCuts[0] JetKtCut set JetKtCut:MinKT 20. cd /Herwig/Generators set GammaHadronGenerator:EventHandler:Cuts /Herwig/Cuts/GammaHadronCuts ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set GammaHadronGenerator:NumberOfEvents 100000000 set GammaHadronGenerator:RandomNumberGenerator:Seed 31122001 set GammaHadronGenerator:DebugLevel 1 set GammaHadronGenerator:PrintEvent 0 set GammaHadronGenerator:MaxErrors 10000 set GammaHadronGenerator:EventHandler:StatLevel Full set GammaHadronGenerator:EventHandler:CascadeHandler:MPIHandler NULL ################################################## # LEP physics parameters (override defaults) ################################################## set GammaHadronGenerator:EventHandler:LuminosityFunction:Energy 1000. herwig++-2.6.0.orig/Tests/Inputs/LHC-WH.in0000644000175000017500000000427311754474775020644 0ustar sylvestresylvestre################################################## # Example generator based on LHC parameters # usage: Herwig++ read LHC.in ################################################## read LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 set /Herwig/Particles/tau-:Stable Stable set /Herwig/Particles/tau+:Stable Stable set /Herwig/Particles/h0:Stable Stable #cd /Herwig/Partons #create Herwig::MRST MRST2 HwMRST.so #setup MRST2 /home/richardn/montecarlo/c++/Herwig++/trunk/Herwig++/PDF/mrst/1998/lo05a.dat #set MRST2:RemnantHandler HadronRemnants #set /Herwig/Particles/p+:PDF MRST2 #set /Herwig/Particles/pbar-:PDF MRST2 cd /Herwig create Herwig::O2AlphaS AlphaS2 set Model:QCD/RunningAlphaS AlphaS2 set Model:EW/CKM:theta_12 0. set Model:EW/CKM:theta_13 0. set Model:EW/CKM:theta_23 0. set Model:EW/CKM:delta 0. set Model:EW/Sin2ThetaW 0.22254916 create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 cd /Herwig/MatrixElements insert SimpleQCD:MatrixElements[0] MEPP2WH set /Herwig/Particles/h0:NominalMass 115. set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Masses/HiggsMass:HiggsShape 0 set /Herwig/Particles/W+/W+->u,dbar;:OnOff Off set /Herwig/Particles/W+/W+->c,sbar;:OnOff Off set /Herwig/Particles/W+/W+->nu_mu,mu+;:OnOff Off set /Herwig/Particles/W+/W+->nu_tau,tau+;:OnOff Off set /Herwig/Particles/W+/W+->sbar,u;:OnOff Off set /Herwig/Particles/W+/W+->c,dbar;:OnOff Off set /Herwig/Particles/W+/W+->bbar,c;:OnOff Off # set /Herwig/Particles/W-/W-->ubar,d;:OnOff Off set /Herwig/Particles/W-/W-->cbar,s;:OnOff Off set /Herwig/Particles/W-/W-->nu_mubar,mu-;:OnOff Off set /Herwig/Particles/W-/W-->nu_taubar,tau-;:OnOff Off set /Herwig/Particles/W-/W-->s,ubar;:OnOff Off set /Herwig/Particles/W-/W-->cbar,d;:OnOff Off set /Herwig/Particles/W-/W-->b,cbar;:OnOff Off set /Herwig/Decays/WDecayer:Initialize 1 cd /Herwig/Generators set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:Sampler:Ntry 100000 cd /Herwig/Generators create Herwig::WHTest WHTest HadronTest.so insert LHCGenerator:AnalysisHandlers 0 WHTest saverun LHC-WH LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/DIS.common0000755000175000017500000000200611754474775021216 0ustar sylvestresylvestre################################################## # Example generator based on DIS parameters # usage: Herwig++ read DIS.in ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set DISGenerator:NumberOfEvents 10000000 set DISGenerator:RandomNumberGenerator:Seed 31122001 set DISGenerator:DebugLevel 1 set DISGenerator:PrintEvent 1000 set DISGenerator:MaxErrors 10000 set /Herwig/Cuts/NeutralCurrentCut:MaxQ2 1000000. set /Herwig/Cuts/NeutralCurrentCut:MinW2 0. set /Herwig/Cuts/NeutralCurrentCut:MaxW2 1000000. set /Herwig/Cuts/ChargedCurrentCut:MaxQ2 1000000. set /Herwig/Cuts/ChargedCurrentCut:MinW2 0. set /Herwig/Cuts/ChargedCurrentCut:MaxW2 1000000. set /Herwig/Cuts/DISCuts:MHatMin 0.001 set /Herwig/Cuts/DISCuts:X1Min 1e-10 set /Herwig/Cuts/DISCuts:X2Min 1e-10 set /Herwig/Particles/e+:PDF /Herwig/Partons/NoPDF set /Herwig/Particles/e-:PDF /Herwig/Partons/NoPDF herwig++-2.6.0.orig/Tests/Inputs/LHC-WGamma.in0000644000175000017500000000255511754474775021500 0ustar sylvestresylvestre################################################## # Example generator based on LHC parameters # usage: Herwig++ read LHC.in ################################################## read LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Partons create ThePEG::LHAPDF LHAPDF ThePEGLHAPDF.so set LHAPDF:PType Nucleon set LHAPDF:PDFName cteq5l.LHgrid set LHAPDF:PDFNumber 19070 set LHAPDF:RemnantHandler HadronRemnants set /Herwig/Particles/p+:PDF LHAPDF set /Herwig/Particles/pbar-:PDF LHAPDF cd /Herwig create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 set Model:EW/Sin2ThetaW 0.22254916 set CKM:theta_12 0 set CKM:theta_13 0 set CKM:theta_23 0 set CKM:delta 0 cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEPP2VGamma set MEPP2VGamma:MassOption OnMassShell set MEPP2VGamma:Process WGamma set /Herwig/Particles/W+:Stable Stable set /Herwig/Particles/W-:Stable Stable set /Herwig/Cuts/PhotonKtCut:MinKT 20 cd /Herwig/Generators create Herwig::VGammaTest WGammaTest HadronTest.so insert LHCGenerator:AnalysisHandlers 0 WGammaTest set /Herwig/Analysis/Basics:CheckQuark 0 saverun LHC-WGamma LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-WZ.in0000755000175000017500000000216711754474775020671 0ustar sylvestresylvestreread LHC.common erase /Herwig/EventHandlers/LHCHandler:PostSubProcessHandlers 0 cd /Herwig/Partons create ThePEG::LHAPDF LHAPDF ThePEGLHAPDF.so set LHAPDF:PType Nucleon set LHAPDF:PDFName cteq5l.LHgrid set LHAPDF:PDFNumber 19070 set LHAPDF:RemnantHandler HadronRemnants set /Herwig/Particles/p+:PDF LHAPDF set /Herwig/Particles/pbar-:PDF LHAPDF cd /Herwig create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM2 set Model:EW/Sin2ThetaW 0.22254916 set CKM:theta_12 0 set CKM:theta_13 0 set CKM:theta_23 0 set CKM:delta 0 cd /Herwig/Generators set LHCGenerator:EventHandler:StatLevel Full set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set /Herwig/Particles/Z0:Stable 1 set /Herwig/Particles/W+:Stable 1 set /Herwig/Particles/W-:Stable 1 cd /Herwig/MatrixElements/ create Herwig::MEPP2VV MEPP2VV HwMEHadron.so insert SimpleQCD:MatrixElements[0] MEPP2VV set MEPP2VV:Process WZ cd /Herwig/Generators/ create Herwig::HadronVVTest WZTest HadronTest.so insert LHCGenerator:AnalysisHandlers 0 WZTest saverun LHC-WZ LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LEP.common0000644000175000017500000000031211754474775021212 0ustar sylvestresylvestrecd /Herwig/Generators set LEPGenerator:NumberOfEvents 100000000 set LEPGenerator:DebugLevel 1 set LEPGenerator:MaxErrors 1000 set LEPGenerator:PrintEvent 10 set LEPGenerator:EventHandler:StatLevel Full herwig++-2.6.0.orig/Tests/Inputs/Gamma-P.in0000644000175000017500000000101311754474775021126 0ustar sylvestresylvestreread GammaP.common cd /Herwig/MatrixElements create Herwig::MEGammaP2Jets MEgammaP2Jets HwMEGammaHadron.so insert SimpleGammaHadron:MatrixElements 0 /Herwig/MatrixElements/MEgammaP2Jets cd /Herwig/Generators set GammaHadronGenerator:EventHandler:CascadeHandler NULL set GammaHadronGenerator:EventHandler:HadronizationHandler NULL set GammaHadronGenerator:EventHandler:DecayHandler NULL create Herwig::GammaPMETest TestP GammaTest.so insert GammaHadronGenerator:AnalysisHandlers 0 TestP saverun Gamma-P GammaHadronGenerator herwig++-2.6.0.orig/Tests/Inputs/LHC-ZHJet-Powheg.in0000644000175000017500000000512311754474775022534 0ustar sylvestresylvestrecd /Herwig/Generators set LHCGenerator:NumberOfEvents 100000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL erase LHCGenerator:EventHandler:PostSubProcessHandlers 0 set /Herwig/Analysis/Basics:CheckQuark 0 set /Herwig/Particles/h0:Stable Stable set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] PowhegMEPP2ZH set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO create Herwig::O2AlphaS O2AlphaS set /Herwig/Generators/LHCGenerator:StandardModelParameters:QCD/RunningAlphaS O2AlphaS cd /Herwig/Shower # use the general recon for now set KinematicsReconstructor:ReconstructionOption General # switch treatment of hardest emission set Evolver:HardEmissionMode POWHEG cd /Herwig/Generators create Herwig::VHTest /Herwig/Analysis/VHTest HadronJetTest.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/VHTest set /Herwig/Particles/W+/W+->bbar,c;:OnOff Off set /Herwig/Particles/W+/W+->c,dbar;:OnOff Off set /Herwig/Particles/W+/W+->c,sbar;:OnOff Off set /Herwig/Particles/W+/W+->nu_e,e+;:OnOff On set /Herwig/Particles/W+/W+->nu_mu,mu+;:OnOff Off set /Herwig/Particles/W+/W+->nu_tau,tau+;:OnOff Off set /Herwig/Particles/W+/W+->sbar,u;:OnOff Off set /Herwig/Particles/W+/W+->u,dbar;:OnOff Off set /Herwig/Particles/W-/W-->b,cbar;:OnOff Off set /Herwig/Particles/W-/W-->cbar,d;:OnOff Off set /Herwig/Particles/W-/W-->cbar,s;:OnOff Off set /Herwig/Particles/W-/W-->nu_ebar,e-;:OnOff On set /Herwig/Particles/W-/W-->nu_mubar,mu-;:OnOff Off set /Herwig/Particles/W-/W-->nu_taubar,tau-;:OnOff Off set /Herwig/Particles/W-/W-->s,ubar;:OnOff Off set /Herwig/Particles/W-/W-->ubar,d;:OnOff Off set /Herwig/Particles/Z0/Z0->b,bbar;:OnOff Off set /Herwig/Particles/Z0/Z0->c,cbar;:OnOff Off set /Herwig/Particles/Z0/Z0->d,dbar;:OnOff Off set /Herwig/Particles/Z0/Z0->e-,e+;:OnOff On set /Herwig/Particles/Z0/Z0->mu-,mu+;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_e,nu_ebar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_mu,nu_mubar;:OnOff Off set /Herwig/Particles/Z0/Z0->nu_tau,nu_taubar;:OnOff Off set /Herwig/Particles/Z0/Z0->s,sbar;:OnOff Off set /Herwig/Particles/Z0/Z0->tau-,tau+;:OnOff Off set /Herwig/Particles/Z0/Z0->u,ubar;:OnOff Off saverun LHC-ZHJet-Powheg LHCGenerator herwig++-2.6.0.orig/Tests/Inputs/LEP-default.in0000644000175000017500000000133311754474775021756 0ustar sylvestresylvestrecd /Herwig/MatrixElements insert SimpleEE:MatrixElements 0 MEee2gZ2qq read LEP.common cd /Herwig/Generators set LEPGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LEPGenerator:EventHandler:LuminosityFunction:Energy 91.2 insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/LEPMultiplicity insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/BMultiplicity insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/BFrag insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/Shapes insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/LEPIdent insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/LEPFourJet insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/LEPJet saverun LEP-default LEPGenerator herwig++-2.6.0.orig/Tests/Inputs/DIS-Neutral.in0000755000175000017500000000174111754474775021751 0ustar sylvestresylvestreread DIS.common cd /Herwig/Generators set DISGenerator:EventHandler:CascadeHandler NULL set DISGenerator:EventHandler:HadronizationHandler NULL set DISGenerator:EventHandler:DecayHandler NULL cd /Herwig create Herwig::O2AlphaS AlphaS2 set Model:QCD/RunningAlphaS AlphaS2 set Model:EW/CKM:theta_12 0.22274457 set Model:EW/CKM:theta_13 0. set Model:EW/CKM:theta_23 0. set Model:EW/CKM:delta 0. create Herwig::AlphaEM AlphaEM2 set Model:EW/RunningAlphaEM AlphaEM set /Herwig/Analysis/Basics:CheckQuark 0 cd /Herwig/Partons # create Herwig::MRST MRST2 HwMRST.so # setup MRST2 /home/richardn/montecarlo/c++/Herwig++/trunk/Herwig++/PDF/mrst/1998/lo05a.dat # set MRST2:RemnantHandler HadronRemnants # set /Herwig/Particles/p+:PDF MRST2 # set /Herwig/Particles/pbar-:PDF MRST2 cd /Herwig/MatrixElements/ insert SimpleDIS:MatrixElements[0] MEDISNC cd /Herwig/Generators create Herwig::DISTest NeutralTest DISTest.so insert DISGenerator:AnalysisHandlers 0 NeutralTest saverun DIS-Neutral DISGenerator herwig++-2.6.0.orig/Tests/Hadron/0000755000175000017500000000000011756464212017300 5ustar sylvestresylvestreherwig++-2.6.0.orig/Tests/Hadron/HadronVBFTest.cc0000755000175000017500000000676311754474775022254 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the HadronVBFTest class. // #include "HadronVBFTest.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" using namespace Herwig; void HadronVBFTest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). tPVector part = event->getFinalState(); Lorentz5Momentum pjj; for(tPVector::const_iterator iter = part.begin(), end = part.end(); iter!=end;++iter) { if((**iter).id()==ParticleID::h0) { *_mH += (**iter).momentum().m()/GeV; *_yH += (**iter).momentum().rapidity(); *_phiH += (**iter).momentum().phi()+Constants::pi; *_pTH[0] += (**iter).momentum().perp()/GeV; *_pTH[1] += (**iter).momentum().perp()/GeV; } else if((**iter).id()!=82) { *_yjet += (**iter).momentum().rapidity(); *_phijet += (**iter).momentum().phi()+Constants::pi; *_pTjet[0] += (**iter).momentum().perp()/GeV; *_pTjet[1] += (**iter).momentum().perp()/GeV; pjj+=(**iter).momentum(); } } *_mjj += pjj.m()/GeV; } IBPtr HadronVBFTest::clone() const { return new_ptr(*this); } IBPtr HadronVBFTest::fullclone() const { return new_ptr(*this); } NoPIOClassDescription HadronVBFTest::initHadronVBFTest; // Definition of the static class description member. void HadronVBFTest::Init() { static ClassDocumentation documentation ("There is no documentation for the HadronVBFTest class"); } void HadronVBFTest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; string title,species; title = "mass of H"; _mH->topdrawOutput(outfile,Frame,"BLACK",title); title = "rapidity of H"; _yH->topdrawOutput(outfile,Frame,"BLACK",title); title = "pT of H"; _pTH[0]->topdrawOutput(outfile,Frame|Ylog,"BLACK",title); _pTH[1]->topdrawOutput(outfile,Frame|Ylog,"BLACK",title); title = "azimuth of H"; _phiH->topdrawOutput(outfile,Frame,"BLACK",title); title = "rapidity of jet"; _yjet->topdrawOutput(outfile,Frame,"BLACK",title); title = "pT of jet"; _pTjet[0]->topdrawOutput(outfile,Frame|Ylog,"BLACK",title); _pTjet[1]->topdrawOutput(outfile,Frame|Ylog,"BLACK",title); title = "azimuth of jet"; _phijet->topdrawOutput(outfile,Frame,"BLACK",title); title = "mjj"; _mjj->topdrawOutput(outfile,Frame,"BLACK",title); } void HadronVBFTest::doinitrun() { AnalysisHandler::doinitrun(); if(getParticleData(ParticleID::h0)->mass()>200.*GeV) _mH = new_ptr(Histogram(200., 400.,200)); else _mH = new_ptr(Histogram(114., 116.0,200)); _yH = new_ptr(Histogram( -10.0, 10.0,200)); _phiH = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _pTH[0] = new_ptr(Histogram( 0.0,1000.,1000)); _pTH[1] = new_ptr(Histogram( 0.0,1000.,100)); _yjet = new_ptr(Histogram( -10.0, 10.0,200)); _phijet = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _pTjet[0] = new_ptr(Histogram( 0.0,1000.,1000)); _pTjet[1] = new_ptr(Histogram( 0.0,1000.,100)); _mjj = new_ptr(Histogram(0.0,2000.,100)); } herwig++-2.6.0.orig/Tests/Hadron/VHTest.h0000644000175000017500000001103611754474775020644 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_VHTest_H #define HERWIG_VHTest_H // // This is the declaration of the VHTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the VHTest class. * * @see \ref VHTestInterfaces "The interfaces" * defined for VHTest. */ class VHTest: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} 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. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initVHTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VHTest & operator=(const VHTest &); private: HistogramPtr _higgspt,_jetpt,_vpt,_vhpt; HistogramPtr _yj[3]; HistogramPtr _yjyh[3],_yjyv[3],_yjyhv[3]; HistogramPtr _njet[3]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of VHTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of VHTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the VHTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::VHTest"; } /** * The name of a file containing the dynamic library where the class * VHTest is implemented. It may also include several, space-separated, * libraries if the class VHTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "libfastjet.so HadronJetTest.so"; } }; /** @endcond */ } #endif /* HERWIG_VHTest_H */ herwig++-2.6.0.orig/Tests/Hadron/QQHTest.h0000644000175000017500000001120511754474775020756 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_QQHTest_H #define HERWIG_QQHTest_H // // This is the declaration of the QQHTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the QQHTest class. * * @see \ref QQHTestInterfaces "The interfaces" * defined for QQHTest. */ class QQHTest: public AnalysisHandler { public: /** * The default constructor. */ QQHTest(); /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} 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. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initQQHTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ QQHTest & operator=(const QQHTest &); private: HistogramPtr Qrap_,QBrap_,Hrap_; HistogramPtr Qphi_,QBphi_,Hphi_; HistogramPtr QpT_,QBpT_,HpT_; HistogramPtr mass_; HistogramPtr y12_,y13_,y23_; int quarkFlavour_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of QQHTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of QQHTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the QQHTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::QQHTest"; } /** * The name of a file containing the dynamic library where the class * QQHTest is implemented. It may also include several, space-separated, * libraries if the class QQHTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HadronTest.so"; } }; /** @endcond */ } #endif /* HERWIG_QQHTest_H */ herwig++-2.6.0.orig/Tests/Hadron/HadronVVTest.h0000755000175000017500000001027011754474775022020 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_HadronVVTest_H #define HERWIG_HadronVVTest_H // // This is the declaration of the HadronVVTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the HadronVVTest class. * * @see \ref HadronVVTestInterfaces "The interfaces" * defined for HadronVVTest. */ class HadronVVTest: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription initHadronVVTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ HadronVVTest & operator=(const HadronVVTest &); private: /** * Histograms */ HistogramPtr _ptWp ,_ptWm ,_ptZ; HistogramPtr _rapWp,_rapWm,_rapZ; HistogramPtr _phiWp,_phiWm,_phiZ; HistogramPtr _mass; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of HadronVVTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of HadronVVTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the HadronVVTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::HadronVVTest"; } /** * The name of a file containing the dynamic library where the class * HadronVVTest is implemented. It may also include several, space-separated, * libraries if the class HadronVVTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HadronTest.so"; } }; /** @endcond */ } #endif /* HERWIG_HadronVVTest_H */ herwig++-2.6.0.orig/Tests/Hadron/HTest.h0000644000175000017500000001075311754474775020523 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_HTest_H #define HERWIG_HTest_H // // This is the declaration of the HTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the HTest class. * * @see \ref HTestInterfaces "The interfaces" * defined for HTest. */ class HTest: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} 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. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initHTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ HTest & operator=(const HTest &); private: HistogramPtr _higgspt,_jetpt; HistogramPtr _yj[3]; HistogramPtr _yjyh[3]; HistogramPtr _njet[3]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of HTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of HTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the HTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::HTest"; } /** * The name of a file containing the dynamic library where the class * HTest is implemented. It may also include several, space-separated, * libraries if the class HTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "libfastjet.so HadronJetTest.so"; } }; /** @endcond */ } #endif /* HERWIG_HTest_H */ herwig++-2.6.0.orig/Tests/Hadron/QQHTest.cc0000644000175000017500000001365311754474775021125 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the QQHTest class. // #include "QQHTest.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/EventGenerator.h" using namespace Herwig; QQHTest::QQHTest() : quarkFlavour_(6) {} void QQHTest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). StepVector::const_iterator sit =event->primaryCollision()->steps().begin(); StepVector::const_iterator stest =event->primaryCollision()->steps().end(); StepVector::const_iterator send=sit; ++send; if(send==stest) --send; ++send; if(send==stest) --send; ++send; Lorentz5Momentum ptotal; double y1(0),y2(0),y3(0); for(;sit!=send;++sit) { ParticleSet part; (**sit).selectFinalState(inserter(part)); ParticleSet::const_iterator iter = part.begin(), end = part.end(); for( ;iter!=end;++iter) { if((**iter).id()==quarkFlavour_) { ptotal+=(**iter).momentum(); QpT_ ->addWeighted((**iter).momentum().perp()/GeV,event->weight()); Qrap_->addWeighted((**iter).momentum().rapidity(),event->weight()); Qphi_->addWeighted((**iter).momentum().phi()+Constants::pi,event->weight()); y1 = (**iter).momentum().rapidity(); } else if((**iter).id()==-quarkFlavour_) { ptotal+=(**iter).momentum(); QBpT_ ->addWeighted((**iter).momentum().perp()/GeV,event->weight()); QBrap_->addWeighted((**iter).momentum().rapidity(),event->weight()); QBphi_->addWeighted((**iter).momentum().phi()+Constants::pi,event->weight()); y2 = (**iter).momentum().rapidity(); } else if((**iter).id()==ParticleID::h0) { HpT_ ->addWeighted((**iter).momentum().perp()/GeV,event->weight()); Hrap_->addWeighted((**iter).momentum().rapidity(),event->weight()); Hphi_->addWeighted((**iter).momentum().phi()+Constants::pi,event->weight()); y3 = (**iter).momentum().rapidity(); ptotal+=(**iter).momentum(); } } } mass_->addWeighted(ptotal.m()/GeV,event->weight()); y12_->addWeighted(y1-y2,event->weight()); y13_->addWeighted(y1-y3,event->weight()); y23_->addWeighted(y2-y3,event->weight()); } IBPtr QQHTest::clone() const { return new_ptr(*this); } IBPtr QQHTest::fullclone() const { return new_ptr(*this); } void QQHTest::persistentOutput(PersistentOStream & os) const { os << quarkFlavour_; } void QQHTest::persistentInput(PersistentIStream & is, int) { is >> quarkFlavour_; } ClassDescription QQHTest::initQQHTest; // Definition of the static class description member. void QQHTest::Init() { static ClassDocumentation documentation ("There is no documentation for the QQHTest class"); static Switch interfaceQuarkFlavour ("QuarkFlavour", "The flavour of the heavy quark", &QQHTest::quarkFlavour_, 6, false, false); static SwitchOption interfaceQuarkFlavourBottom (interfaceQuarkFlavour, "Bottom", "bottom quarks", 5); static SwitchOption interfaceQuarkFlavourTop (interfaceQuarkFlavour, "Top", "top quarks", 6); } void QQHTest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; QpT_->topdrawOutput(outfile,Frame,"BLACK","Pt of Q"); Qrap_->topdrawOutput(outfile,Frame,"BLACK","Rapidity of Q"); Qphi_->topdrawOutput(outfile,Frame,"BLACK","Azimuthal angle for Q"); QBpT_->topdrawOutput(outfile,Frame,"BLACK","Pt of Qbar"); QBrap_->topdrawOutput(outfile,Frame,"BLACK","Rapidity of Qbar"); QBphi_->topdrawOutput(outfile,Frame,"BLACK","Azimuthal angle for Qbar"); HpT_ ->topdrawOutput(outfile,Frame,"BLACK","Pt of H "); Hrap_ ->topdrawOutput(outfile,Frame,"BLACK","Rapidity of H "); Hphi_ ->topdrawOutput(outfile,Frame,"BLACK","Azimuthal angle for H "); mass_ ->topdrawOutput(outfile,Frame,"BLACK","system mass"); QpT_->normaliseToCrossSection(); QpT_->topdrawOutput(outfile,Frame,"BLACK","Pt of Q"); Qrap_->normaliseToCrossSection(); Qrap_->topdrawOutput(outfile,Frame,"BLACK","Rapidity of Q"); QBpT_->normaliseToCrossSection(); QBpT_->topdrawOutput(outfile,Frame,"BLACK","Pt of Qbar"); QBrap_->normaliseToCrossSection(); QBrap_->topdrawOutput(outfile,Frame,"BLACK","Rapidity of Qbar"); HpT_ ->normaliseToCrossSection(); HpT_ ->topdrawOutput(outfile,Frame,"BLACK","Pt of H "); Hrap_ ->normaliseToCrossSection(); Hrap_ ->topdrawOutput(outfile,Frame,"BLACK","Rapidity of H "); mass_ ->normaliseToCrossSection(); mass_ ->topdrawOutput(outfile,Frame,"BLACK","system mass"); y12_->topdrawOutput(outfile,Frame,"BLACK","yQQbar"); y13_->topdrawOutput(outfile,Frame,"BLACK","yQH"); y23_->topdrawOutput(outfile,Frame,"BLACK","yQbarH"); y12_->normaliseToCrossSection(); y13_->normaliseToCrossSection(); y23_->normaliseToCrossSection(); y12_->topdrawOutput(outfile,Frame,"BLACK","yQQbar"); y13_->topdrawOutput(outfile,Frame,"BLACK","yQH"); y23_->topdrawOutput(outfile,Frame,"BLACK","yQbarH"); } void QQHTest::doinitrun() { AnalysisHandler::doinitrun(); QpT_ = new_ptr(Histogram(0.,1500.,300)); Qrap_ = new_ptr(Histogram(-15,15,300)); Qphi_ = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); QBpT_ = new_ptr(Histogram(0.,1500.,300)); QBrap_ = new_ptr(Histogram(-15,15,300)); QBphi_ = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); HpT_ = new_ptr(Histogram(0.,1500.,300)); Hrap_ = new_ptr(Histogram(-15,15,300)); Hphi_ = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); mass_ = new_ptr(Histogram(0.,3000.,300)); y12_ = new_ptr(Histogram(-15,15,300)); y13_ = new_ptr(Histogram(-15,15,300)); y23_ = new_ptr(Histogram(-15,15,300)); } herwig++-2.6.0.orig/Tests/Hadron/HadronVBFTest.h0000755000175000017500000001023111754474775022077 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_HadronVBFTest_H #define HERWIG_HadronVBFTest_H // // This is the declaration of the HadronVBFTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the HadronVBFTest class. * * @see \ref HadronVBFTestInterfaces "The interfaces" * defined for HadronVBFTest. */ class HadronVBFTest: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription initHadronVBFTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ HadronVBFTest & operator=(const HadronVBFTest &); private: HistogramPtr _mH ,_yH ,_pTH[2] ,_phiH ; HistogramPtr _yjet,_pTjet[2],_phijet; HistogramPtr _mjj; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of HadronVBFTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of HadronVBFTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the HadronVBFTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::HadronVBFTest"; } /** * The name of a file containing the dynamic library where the class * HadronVBFTest is implemented. It may also include several, space-separated, * libraries if the class HadronVBFTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HadronTest.so"; } }; /** @endcond */ } #endif /* HERWIG_HadronVBFTest_H */ herwig++-2.6.0.orig/Tests/Hadron/WJetTest.h0000644000175000017500000000774211754474775021211 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_WJetTest_H #define HERWIG_WJetTest_H // // This is the declaration of the WJetTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the WJetTest class. * * @see \ref WJetTestInterfaces "The interfaces" * defined for WJetTest. */ class WJetTest: public AnalysisHandler { public: /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initWJetTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ WJetTest & operator=(const WJetTest &); private: HistogramPtr _ptW[3],_mW[3],_yW[3],_phiW[3],_ptl[4],_yl[4],_phil[4]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of WJetTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of WJetTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the WJetTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::WJetTest"; } /** * The name of a file containing the dynamic library where the class * WJetTest is implemented. It may also include several, space-separated, * libraries if the class WJetTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HadronTest.so"; } }; /** @endcond */ } #endif /* HERWIG_WJetTest_H */ herwig++-2.6.0.orig/Tests/Hadron/VTest.cc0000644000175000017500000001432311754474775020674 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the VTest class. // #include "VTest.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Event.h" #include "fastjet/PseudoJet.hh" #include "fastjet/ClusterSequence.hh" using namespace Herwig; void VTest::analyze(tEventPtr event, long, int , int) { // Rotate to CMS, extract final state particles and call analyze(particles). set particles; event->selectFinalState(inserter(particles)); tParticleVector leptons; tParticleVector part2; for(set::const_iterator it=particles.begin(); it!=particles.end();++it) { tPPtr parent=*it; do { if(abs(parent->id())==ParticleID::Wplus|| parent->id()==ParticleID::Z0||parent->id()==ParticleID::gamma) break; parent = parent->parents()[0]; } while(!parent->parents().empty()); if(!parent) { part2.push_back(*it); } else if(abs(parent->id())==ParticleID::Wplus|| parent->id()==ParticleID::Z0||parent->id()==ParticleID::gamma) { leptons.push_back(*it); } else { part2.push_back(*it); } } if(leptons.size()!=2) return; Lorentz5Momentum pv = leptons[0]->momentum()+leptons[1]->momentum(); *_vpt += pv.perp()/GeV; // callFastjet using R-parameter of 1 to get inclusive jets vector fastjet_particles; for (unsigned int j=0; jmomentum().x()/GeV, part2[j]->momentum().y()/GeV, part2[j]->momentum().z()/GeV, part2[j]->momentum().e()/GeV); p.set_user_index(j); fastjet_particles.push_back(p); } fastjet::RecombinationScheme recomb_scheme = fastjet::E_scheme; fastjet::Strategy strategy = fastjet::Best; fastjet::JetDefinition jet_def(fastjet::kt_algorithm, 1., recomb_scheme, strategy); fastjet::ClusterSequence cs(fastjet_particles, jet_def); vector jets = sorted_by_pt(cs.inclusive_jets()); double yv = pv.rapidity(); double yjet = jets[0].rapidity(); double ptj=jets[0].perp(); int njet[3]={0,0,0}; for(unsigned int ix=0;ix10.) ++njet[0]; if(jets[ix].perp()>40.) ++njet[1]; if(jets[ix].perp()>80.) ++njet[2]; } *_jetpt += ptj; if(ptj>10.) { *_yj[0] += yjet; *_yjyv[0] += yjet-yv; } if(ptj>40.) { *_yj[1] += yjet; *_yjyv[1] += yjet-yv; } if(ptj>80.) { *_yj[2] += yjet; *_yjyv[2] += yjet-yv; } for(unsigned int ix=0;ix<3;++ix) *_njet[ix] +=njet[ix]; } IBPtr VTest::clone() const { return new_ptr(*this); } IBPtr VTest::fullclone() const { return new_ptr(*this); } void VTest::persistentOutput(PersistentOStream & ) const { } void VTest::persistentInput(PersistentIStream & , int) { } ClassDescription VTest::initVTest; // Definition of the static class description member. void VTest::Init() { static ClassDocumentation documentation ("There is no documentation for the VTest class"); } void VTest::dofinish() { AnalysisHandler::dofinish(); ofstream file; string fname = generator()->filename() + string("-") + name() + string(".top"); file.open(fname.c_str()); using namespace HistogramOptions; _vpt->topdrawOutput(file,Frame|Ylog,"BLACK","V Pt","", "1/SdS/dp0T1/GeV2-13", " G G X X X X", "p0T1/GeV", " X X "); _vpt->normaliseToCrossSection(); _vpt->topdrawOutput(file,Frame|Ylog,"BLACK","V Pt","", "dS/dp0T1/nbGeV2-13", " G X X X X", "p0T1/GeV", " X X "); _jetpt->topdrawOutput(file,Frame|Ylog,"BLACK","Hardest Jet Pt","", "1/SdS/dp0T1/GeV2-13", " G G X X X X", "p0T1/GeV", " X X "); _jetpt->normaliseToCrossSection(); _jetpt->topdrawOutput(file,Frame|Ylog,"BLACK","Hardest Jet Pt","", "dS/dp0T1/nbGeV2-13", " G X X X X", "p0T1/GeV", " X X "); string title; for(unsigned int ix=0;ix<3;++ix) { if(ix==0) title ="Hardest jet rapidity p0T1>10 GeV"; else if(ix==1) title ="Hardest jet rapidity p0T1>40 GeV"; else if(ix==2) title ="Hardest jet rapidity p0T1>80 GeV"; _yj[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/dy0j1", " G G X X","y0j1"," X X"); _yj[ix]->normaliseToCrossSection(); _yj[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/dy0j1/nb", " G G X X ","y0j1"," X X"); } for(unsigned int ix=0;ix<3;++ix) { if(ix==0) title ="Hardest jet rapidity - V rapidity p0T1>10 GeV"; else if(ix==1) title ="Hardest jet rapidity - V rapidity p0T1>40 GeV"; else if(ix==2) title ="Hardest jet rapidity - V rapidity p0T1>80 GeV"; _yjyv[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/d(y0j1-y0h1)", " G G X X X X ","y0j1-y0h1"," X X X X"); _yjyv[ix]->normaliseToCrossSection(); _yjyv[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/d(y0j1-y0h1)/nb", " G G X X X X ","y0j1-y0h1"," X X X X"); } for(unsigned int ix=0;ix<3;++ix) { if(ix==0) title ="Number of jets p0T1>10 GeV"; else if(ix==1) title ="Number of jets p0T1>40 GeV"; else if(ix==2) title ="Number of jets p0T1>80 GeV"; _njet[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/dN0jet1", " G G X X","N0jet1"," X X"); _njet[ix]->normaliseToCrossSection(); _njet[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/dN0jet1/nb", " G G X X","N0jet1"," X X"); } } void VTest::doinitrun() { AnalysisHandler::doinitrun(); _vpt = new_ptr(Histogram(0.,1000.,1000)); _jetpt = new_ptr(Histogram(0.,1000.,1000)); for(unsigned int ix=0;ix<3;++ix) { _yj [ix] = new_ptr(Histogram(-10.,10.,200)); _yjyv[ix] = new_ptr(Histogram(-10.,10.,200)); _njet[ix] = new_ptr(Histogram(-0.5,10.5,11)); } } herwig++-2.6.0.orig/Tests/Hadron/ZJetTest.h0000644000175000017500000000772611754474775021216 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_ZJetTest_H #define HERWIG_ZJetTest_H // // This is the declaration of the ZJetTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the ZJetTest class. * * @see \ref ZJetTestInterfaces "The interfaces" * defined for ZJetTest. */ class ZJetTest: public AnalysisHandler { public: /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initZJetTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ZJetTest & operator=(const ZJetTest &); private: HistogramPtr _ptZ,_mZ,_yZ,_phiZ,_ptl[4],_yl[4],_phil[4]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ZJetTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of ZJetTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the ZJetTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::ZJetTest"; } /** * The name of a file containing the dynamic library where the class * ZJetTest is implemented. It may also include several, space-separated, * libraries if the class ZJetTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HadronTest.so"; } }; /** @endcond */ } #endif /* HERWIG_ZJetTest_H */ herwig++-2.6.0.orig/Tests/Hadron/ZHTest.h0000644000175000017500000001004111754474775020643 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_ZHTest_H #define HERWIG_ZHTest_H // // This is the declaration of the ZHTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the ZHTest class. * * @see \ref ZHTestInterfaces "The interfaces" * defined for ZHTest. */ class ZHTest: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription initZHTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ZHTest & operator=(const ZHTest &); private: HistogramPtr _mH,_mZ,_ptH,_ptZ,_yH,_yZ,_phiH,_phiZ,_ptl[2],_yl[2],_phil[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ZHTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of ZHTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the ZHTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::ZHTest"; } /** * The name of a file containing the dynamic library where the class * ZHTest is implemented. It may also include several, space-separated, * libraries if the class ZHTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HadronTest.so"; } }; /** @endcond */ } #endif /* HERWIG_ZHTest_H */ herwig++-2.6.0.orig/Tests/Hadron/VHTest.cc0000644000175000017500000002161311754474775021004 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the VHTest class. // #include "VHTest.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Event.h" #include "fastjet/PseudoJet.hh" #include "fastjet/ClusterSequence.hh" using namespace Herwig; void VHTest::analyze(tEventPtr event, long, int , int ) { // Rotate to CMS, extract final state particles and call analyze(particles). set particles; event->selectFinalState(inserter(particles)); tPPtr h0; tParticleVector part2; tParticleVector leptons; for(set::const_iterator it=particles.begin(); it!=particles.end();++it) { if((**it).id()==ParticleID::h0) h0=*it; else { tPPtr parent=*it; do { if(abs(parent->id())==ParticleID::Wplus|| parent->id()==ParticleID::Z0) break; parent = parent->parents()[0]; } while(!parent->parents().empty()); if(!parent) { part2.push_back(*it); continue; } else if(abs(parent->id())==ParticleID::Wplus|| parent->id()==ParticleID::Z0) { leptons.push_back(*it); } else { part2.push_back(*it); } } } if(!h0) return; if(leptons.size()!=2) return; Lorentz5Momentum pv = leptons[0]->momentum()+leptons[1]->momentum(); Lorentz5Momentum pvh = pv+h0->momentum(); *_higgspt += h0->momentum().perp()/GeV; *_vpt += pv.perp()/GeV; *_vhpt += pvh.perp()/GeV; // callFastjet using R-parameter of 1 to get inclusive jets vector fastjet_particles; for (unsigned int j=0; jmomentum().x()/GeV, part2[j]->momentum().y()/GeV, part2[j]->momentum().z()/GeV, part2[j]->momentum().e()/GeV); p.set_user_index(j); fastjet_particles.push_back(p); } fastjet::RecombinationScheme recomb_scheme = fastjet::E_scheme; fastjet::Strategy strategy = fastjet::Best; fastjet::JetDefinition jet_def(fastjet::kt_algorithm, 1., recomb_scheme, strategy); fastjet::ClusterSequence cs(fastjet_particles, jet_def); vector jets = sorted_by_pt(cs.inclusive_jets()); double yh = h0->momentum().rapidity(); double yv = pv.rapidity(); double yvh = pvh.rapidity(); double yjet = jets[0].rapidity(); double ptj=jets[0].perp(); int njet[3]={0,0,0}; for(unsigned int ix=0;ix10.) ++njet[0]; if(jets[ix].perp()>40.) ++njet[1]; if(jets[ix].perp()>80.) ++njet[2]; } *_jetpt += ptj; if(ptj>10.) { *_yj[0] += yjet; *_yjyh[0] += yjet-yh; *_yjyv[0] += yjet-yv; *_yjyhv[0] += yjet-yvh; } if(ptj>40.) { *_yj[1] += yjet; *_yjyh[1] += yjet-yh; *_yjyv[1] += yjet-yv; *_yjyhv[1] += yjet-yvh; } if(ptj>80.) { *_yj[2] += yjet; *_yjyh[2] += yjet-yh; *_yjyv[2] += yjet-yv; *_yjyhv[2] += yjet-yvh; } for(unsigned int ix=0;ix<3;++ix) *_njet[ix] +=njet[ix]; } IBPtr VHTest::clone() const { return new_ptr(*this); } IBPtr VHTest::fullclone() const { return new_ptr(*this); } void VHTest::persistentOutput(PersistentOStream & os) const { } void VHTest::persistentInput(PersistentIStream & is, int) { } ClassDescription VHTest::initVHTest; // Definition of the static class description member. void VHTest::Init() { static ClassDocumentation documentation ("There is no documentation for the VHTest class"); } void VHTest::dofinish() { AnalysisHandler::dofinish(); ofstream file; string fname = generator()->filename() + string("-") + name() + string(".top"); file.open(fname.c_str()); using namespace HistogramOptions; _higgspt->topdrawOutput(file,Frame|Ylog,"BLACK","Higgs Pt","", "1/SdS/dp0T1/GeV2-13", " G G X X X X", "p0T1/GeV", " X X "); _higgspt->normaliseToCrossSection(); _higgspt->topdrawOutput(file,Frame|Ylog,"BLACK","Higgs Pt","", "dS/dp0T1/nbGeV2-13", " G X X X X", "p0T1/GeV", " X X "); _vpt->topdrawOutput(file,Frame|Ylog,"BLACK","V Pt","", "1/SdS/dp0T1/GeV2-13", " G G X X X X", "p0T1/GeV", " X X "); _vpt->normaliseToCrossSection(); _vpt->topdrawOutput(file,Frame|Ylog,"BLACK","V Pt","", "dS/dp0T1/nbGeV2-13", " G X X X X", "p0T1/GeV", " X X "); _vhpt->topdrawOutput(file,Frame|Ylog,"BLACK","VH Pt","", "1/SdS/dp0T1/GeV2-13", " G G X X X X", "p0T1/GeV", " X X "); _vhpt->normaliseToCrossSection(); _vhpt->topdrawOutput(file,Frame|Ylog,"BLACK","VH Pt","", "dS/dp0T1/nbGeV2-13", " G X X X X", "p0T1/GeV", " X X "); _jetpt->topdrawOutput(file,Frame|Ylog,"BLACK","Hardest Jet Pt","", "1/SdS/dp0T1/GeV2-13", " G G X X X X", "p0T1/GeV", " X X "); _jetpt->normaliseToCrossSection(); _jetpt->topdrawOutput(file,Frame|Ylog,"BLACK","Hardest Jet Pt","", "dS/dp0T1/nbGeV2-13", " G X X X X", "p0T1/GeV", " X X "); string title; for(unsigned int ix=0;ix<3;++ix) { if(ix==0) title ="Hardest jet rapidity p0T1>10 GeV"; else if(ix==1) title ="Hardest jet rapidity p0T1>40 GeV"; else if(ix==2) title ="Hardest jet rapidity p0T1>80 GeV"; _yj[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/dy0j1", " G G X X","y0j1"," X X"); _yj[ix]->normaliseToCrossSection(); _yj[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/dy0j1/nb", " G G X X ","y0j1"," X X"); } for(unsigned int ix=0;ix<3;++ix) { if(ix==0) title ="Hardest jet rapidity - higgs rapidity p0T1>10 GeV"; else if(ix==1) title ="Hardest jet rapidity - higgs rapidity p0T1>40 GeV"; else if(ix==2) title ="Hardest jet rapidity - higgs rapidity p0T1>80 GeV"; _yjyh[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/d(y0j1-y0h1)", " G G X X X X ","y0j1-y0h1"," X X X X"); _yjyh[ix]->normaliseToCrossSection(); _yjyh[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/d(y0j1-y0h1)/nb", " G G X X X X ","y0j1-y0h1"," X X X X"); } for(unsigned int ix=0;ix<3;++ix) { if(ix==0) title ="Hardest jet rapidity - V rapidity p0T1>10 GeV"; else if(ix==1) title ="Hardest jet rapidity - V rapidity p0T1>40 GeV"; else if(ix==2) title ="Hardest jet rapidity - V rapidity p0T1>80 GeV"; _yjyv[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/d(y0j1-y0V1)", " G G X X X X ","y0j1-y0V1"," X X X X"); _yjyv[ix]->normaliseToCrossSection(); _yjyv[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/d(y0j1-y0V1)/nb", " G G X X X X ","y0j1-y0V1"," X X X X"); } for(unsigned int ix=0;ix<3;++ix) { if(ix==0) title ="Hardest jet rapidity - HV rapidity p0T1>10 GeV"; else if(ix==1) title ="Hardest jet rapidity - HV rapidity p0T1>40 GeV"; else if(ix==2) title ="Hardest jet rapidity - HV rapidity p0T1>80 GeV"; _yjyhv[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/d(y0j1-y0hV1)", " G G X X X X ","y0j1-y0hV1"," X X X X"); _yjyhv[ix]->normaliseToCrossSection(); _yjyhv[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/d(y0j1-y0hV1)/nb", " G G X X X X ","y0j1-y0hV1"," X X X X"); } for(unsigned int ix=0;ix<3;++ix) { if(ix==0) title ="Number of jets p0T1>10 GeV"; else if(ix==1) title ="Number of jets p0T1>40 GeV"; else if(ix==2) title ="Number of jets p0T1>80 GeV"; _njet[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/dN0jet1", " G G X X","N0jet1"," X X"); _njet[ix]->normaliseToCrossSection(); _njet[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/dN0jet1/nb", " G G X X","N0jet1"," X X"); } } void VHTest::doinitrun() { AnalysisHandler::doinitrun(); _higgspt = new_ptr(Histogram(0.,1000.,1000)); _jetpt = new_ptr(Histogram(0.,1000.,1000)); _vpt = new_ptr(Histogram(0.,1000.,1000)); _vhpt = new_ptr(Histogram(0.,1000.,1000)); for(unsigned int ix=0;ix<3;++ix) { _yj [ix] = new_ptr(Histogram(-10.,10.,200)); _yjyh[ix] = new_ptr(Histogram(-10.,10.,200)); _yjyv[ix] = new_ptr(Histogram(-10.,10.,200)); _yjyhv[ix] = new_ptr(Histogram(-10.,10.,200)); _njet[ix] = new_ptr(Histogram(-0.5,10.5,11)); } } herwig++-2.6.0.orig/Tests/Hadron/ZJetTest.cc0000644000175000017500000000743111754474775021345 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the ZJetTest class. // #include "ZJetTest.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" using namespace Herwig; void ZJetTest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). StepVector::const_iterator sit =event->primaryCollision()->steps().begin(); StepVector::const_iterator stest =event->primaryCollision()->steps().end(); StepVector::const_iterator send=sit; ++send; if(send==stest) --send; ++send; if(send==stest) --send; ++send; Lorentz5Momentum pz; for(;sit!=send;++sit) { ParticleSet part=(**sit).all(); ParticleSet::const_iterator iter = part.begin(), end = part.end(); for( ;iter!=end;++iter) { if (abs((**iter).id())==ParticleID::Z0) { pz=(*iter)->momentum(); double pt = pz.perp()/GeV; double y = pz.rapidity(); double m = pz.m()/GeV; *_ptZ += pt; *_mZ += m; *_yZ += y; *_phiZ+= pz.phi()+Constants::pi; } else if((**iter).id()==ParticleID::eminus) { *_ptl[0] += (*iter)->momentum().perp()/GeV; *_yl [0] += (*iter)->momentum().rapidity(); *_phil[0] += (*iter)->momentum().phi()+Constants::pi; } else if((**iter).id()==ParticleID::eplus) { *_ptl[1] += (*iter)->momentum().perp()/GeV; *_yl [1] += (*iter)->momentum().rapidity(); *_phil[1] += (*iter)->momentum().phi()+Constants::pi; } else if((**iter).id()==ParticleID::nu_e) { *_ptl[2] += (*iter)->momentum().perp()/GeV; *_yl [2] += (*iter)->momentum().rapidity(); *_phil[2] += (*iter)->momentum().phi()+Constants::pi; } else if((**iter).id()==ParticleID::nu_ebar) { *_ptl[3] += (*iter)->momentum().perp()/GeV; *_yl [3] += (*iter)->momentum().rapidity(); *_phil[3] += (*iter)->momentum().phi()+Constants::pi; } } } } NoPIOClassDescription ZJetTest::initZJetTest; // Definition of the static class description member. void ZJetTest::Init() { static ClassDocumentation documentation ("There is no documentation for the ZJetTest class"); } void ZJetTest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; string title,species; title = "pT of Z"; _ptZ->topdrawOutput(outfile,Frame|Ylog,"BLACK",title); title = "mass of Z"; _mZ->topdrawOutput(outfile,Frame,"BLACK",title); title = "rapidity of Z"; _yZ->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of Z"; _phiZ->topdrawOutput(outfile,Frame,"BLACK",title); for(unsigned int ix=0;ix<4;++ix) { if (ix==0) species = "e-"; else if(ix==1) species = "e+"; else if(ix==2) species = "nu_e"; else if(ix==3) species = "nu_ebar"; title = "pT of " +species; _ptl[ix]->topdrawOutput(outfile,Frame|Ylog,"BLACK",title); title = "rapidity of " + species; _yl[ix]->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of " + species; _phil[ix]->topdrawOutput(outfile,Frame,"BLACK",title); } } void ZJetTest::doinitrun() { AnalysisHandler::doinitrun(); _ptZ = new_ptr(Histogram( 0.,7000.,700)); _mZ = new_ptr(Histogram( 60.,120. ,600)); _yZ = new_ptr(Histogram(-10.,10 ,200)); _phiZ= new_ptr(Histogram(0.,2.*Constants::pi,200 )); for(unsigned int ix=0;ix<4;++ix) { _ptl [ix] = new_ptr(Histogram( 0.,7000.,700)); _yl [ix] = new_ptr(Histogram(-10., 10.,200 )); _phil [ix] = new_ptr(Histogram(0.,2.*Constants::pi,200 )); } } herwig++-2.6.0.orig/Tests/Hadron/WHTest.cc0000644000175000017500000001373411754474775021012 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the WHTest class. // #include "WHTest.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" using namespace Herwig; void WHTest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). StepVector::const_iterator sit =event->primaryCollision()->steps().begin(); StepVector::const_iterator stest =event->primaryCollision()->steps().end(); StepVector::const_iterator send=sit; ++send; if(send==stest) --send; ++send; if(send==stest) --send; ++send; Lorentz5Momentum pz; for(;sit!=send;++sit) { ParticleSet part=(**sit).all(); ParticleSet::const_iterator iter = part.begin(), end = part.end(); for( ;iter!=end;++iter) { if((**iter).id()==ParticleID::h0) { *_mH += (**iter).momentum().m()/GeV; *_phiH += (**iter).momentum().phi()+Constants::pi; *_yH += (**iter).momentum().rapidity(); *_ptH += (**iter).momentum().perp()/GeV; } else if(abs((**iter).id())==ParticleID::Wplus) { bool fermion=true; for(unsigned int ix=0;ix<(**iter).children().size();++ix) { if(abs((**iter).children()[ix]->id())>16) { fermion=false; break; } } if(fermion) { *_mW[0] += (**iter).momentum().m()/GeV; *_phiW[0] += (**iter).momentum().phi()+Constants::pi; *_yW[0] += (**iter).momentum().rapidity(); *_ptW[0] += (**iter).momentum().perp()/GeV; if((**iter).id()>0) { *_mW[1] += (**iter).momentum().m()/GeV; *_phiW[1] += (**iter).momentum().phi()+Constants::pi; *_yW[1] += (**iter).momentum().rapidity(); *_ptW[1] += (**iter).momentum().perp()/GeV; } else { *_mW[2] += (**iter).momentum().m()/GeV; *_phiW[2] += (**iter).momentum().phi()+Constants::pi; *_yW[2] += (**iter).momentum().rapidity(); *_ptW[2] += (**iter).momentum().perp()/GeV; } for(unsigned int ix=0;ix<(**iter).children().size();++ix) { if((**iter).children()[ix]->id()==11) { *_phil[0] += (**iter).children()[ix]->momentum().phi()+Constants::pi; *_yl[0] += (**iter).children()[ix]->momentum().rapidity(); *_ptl[0] += (**iter).children()[ix]->momentum().perp()/GeV; } else if((**iter).children()[ix]->id()==-11) { *_phil[1] += (**iter).children()[ix]->momentum().phi()+Constants::pi; *_yl[1] += (**iter).children()[ix]->momentum().rapidity(); *_ptl[1] += (**iter).children()[ix]->momentum().perp()/GeV; } else if((**iter).children()[ix]->id()==12) { *_phil[2] += (**iter).children()[ix]->momentum().phi()+Constants::pi; *_yl[2] += (**iter).children()[ix]->momentum().rapidity(); *_ptl[2] += (**iter).children()[ix]->momentum().perp()/GeV; } else if((**iter).children()[ix]->id()==-12) { *_phil[3] += (**iter).children()[ix]->momentum().phi()+Constants::pi; *_yl[3] += (**iter).children()[ix]->momentum().rapidity(); *_ptl[3] += (**iter).children()[ix]->momentum().perp()/GeV; } } } } } } } NoPIOClassDescription WHTest::initWHTest; // Definition of the static class description member. void WHTest::Init() { static ClassDocumentation documentation ("There is no documentation for the WHTest class"); } void WHTest::doinitrun() { AnalysisHandler::doinitrun(); if(getParticleData(ParticleID::h0)->mass()>200.*GeV) _mH = new_ptr(Histogram(200., 400.,200)); else _mH = new_ptr(Histogram(114., 116.0,200)); _yH = new_ptr(Histogram( -10.0, 10.0,200)); _ptH = new_ptr(Histogram( 0., 7000.0,1000)); _phiH = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); for(unsigned int ix=0;ix<3;++ix) { _mW[ix] = new_ptr(Histogram( 0.0, 200.0,400)); _yW[ix] = new_ptr(Histogram( -10.0, 10.0,200)); _ptW[ix] = new_ptr(Histogram( 0., 7000.0,1000)); _phiW[ix] = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); } for(unsigned int ix=0;ix<4;++ix) { _ptl[ix] = new_ptr(Histogram( 0., 7000.0,1000)); _yl[ix] = new_ptr(Histogram( -10.0, 10.0,200)); _phil[ix] = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); } } void WHTest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; string title,species; title = "mass of H"; _mH->topdrawOutput(outfile,Frame,"BLACK",title); title = "pt of H"; _ptH->topdrawOutput(outfile,Frame,"BLACK",title); title = "rapidity of H"; _yH->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of H"; _phiH->topdrawOutput(outfile,Frame,"BLACK",title); for(unsigned int ix=0;ix<3;++ix) { if(ix==0) species = "W all"; else if(ix==1) species = "W+"; else if(ix==2) species = "W-"; title = "mass of "+species; _mW[ix]->topdrawOutput(outfile,Frame,"BLACK",title); title = "pt of "+species; _ptW[ix]->topdrawOutput(outfile,Frame,"BLACK",title); title = "rapidity of "+species; _yW[ix]->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of "+species; _phiW[ix]->topdrawOutput(outfile,Frame,"BLACK",title); } for(unsigned int ix=0;ix<4;++ix) { if(ix==0) species="e-"; else if(ix==1) species="e+"; else if(ix==2) species="nu_e"; else if(ix==3) species="nu_ebar"; title = "pt of "+species; _ptl[ix]->topdrawOutput(outfile,Frame,"BLACK",title); title = "rapidity of "+species; _yl[ix]->topdrawOutput(outfile,Frame,"BLACK",title); title = "phi of "+species; _phil[ix]->topdrawOutput(outfile,Frame,"BLACK",title); } } herwig++-2.6.0.orig/Tests/Hadron/WJetTest.cc0000644000175000017500000001045511754474775021342 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the WJetTest class. // #include "WJetTest.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" using namespace Herwig; void WJetTest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). StepVector::const_iterator sit =event->primaryCollision()->steps().begin(); StepVector::const_iterator stest =event->primaryCollision()->steps().end(); StepVector::const_iterator send=sit; ++send; if(send==stest) --send; ++send; if(send==stest) --send; ++send; Lorentz5Momentum pz; for(;sit!=send;++sit) { ParticleSet part=(**sit).all(); ParticleSet::const_iterator iter = part.begin(), end = part.end(); for( ;iter!=end;++iter) { if (abs((**iter).id())==ParticleID::Wplus) { pz=(*iter)->momentum(); double pt = pz.perp()/GeV; double y = pz.rapidity(); double phi=pz.phi()+Constants::pi; double m = pz.m()/GeV; *_ptW [0] += pt; *_mW [0] += m; *_yW [0] += y; *_phiW [0] += phi; if((**iter).id()>0) { *_ptW [1] += pt; *_mW [1] += m; *_yW [1] += y; *_phiW [1] += phi; } else { *_ptW [2] += pt; *_mW [2] += m; *_yW [2] += y; *_phiW [2] += phi; } } else if((**iter).id()==ParticleID::eminus) { *_ptl[0] += (*iter)->momentum().perp()/GeV; *_yl [0] += (*iter)->momentum().rapidity(); *_phil[0] += (*iter)->momentum().phi()+Constants::pi; } else if((**iter).id()==ParticleID::eplus) { *_ptl[1] += (*iter)->momentum().perp()/GeV; *_yl [1] += (*iter)->momentum().rapidity(); *_phil[1] += (*iter)->momentum().phi()+Constants::pi; } else if((**iter).id()==ParticleID::nu_e) { *_ptl[2] += (*iter)->momentum().perp()/GeV; *_yl [2] += (*iter)->momentum().rapidity(); *_phil[2] += (*iter)->momentum().phi()+Constants::pi; } else if((**iter).id()==ParticleID::nu_ebar) { *_ptl[3] += (*iter)->momentum().perp()/GeV; *_yl [3] += (*iter)->momentum().rapidity(); *_phil[3] += (*iter)->momentum().phi()+Constants::pi; } } } } NoPIOClassDescription WJetTest::initWJetTest; // Definition of the static class description member. void WJetTest::Init() { static ClassDocumentation documentation ("There is no documentation for the WJetTest class"); } void WJetTest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; string title,species; for(unsigned int ix=0;ix<3;++ix) { if (ix==0) species = "all W"; else if(ix==1) species = "W+"; else if(ix==2) species = "W-"; title = "pT of " +species; _ptW[ix]->topdrawOutput(outfile,Frame|Ylog,"BLACK",title); title = "mass of " + species; _mW[ix]->topdrawOutput(outfile,Frame,"BLACK",title); title = "rapidity of " + species; _yW[ix]->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of " + species; _phiW[ix]->topdrawOutput(outfile,Frame,"BLACK",title); } for(unsigned int ix=0;ix<4;++ix) { if (ix==0) species = "e-"; else if(ix==1) species = "e+"; else if(ix==2) species = "nu_e"; else if(ix==3) species = "nu_ebar"; title = "pT of " +species; _ptl[ix]->topdrawOutput(outfile,Frame|Ylog,"BLACK",title); title = "rapidity of " + species; _yl[ix]->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of " + species; _phil[ix]->topdrawOutput(outfile,Frame,"BLACK",title); } } void WJetTest::doinitrun() { AnalysisHandler::doinitrun(); for(unsigned int ix=0;ix<3;++ix) { _ptW [ix] = new_ptr(Histogram( 0.,7000.,700)); _mW [ix] = new_ptr(Histogram( 50.,110. ,600)); _yW [ix] = new_ptr(Histogram(-10.,10 ,200)); _phiW [ix] = new_ptr(Histogram(0.,2.*Constants::pi,200 )); } for(unsigned int ix=0;ix<4;++ix) { _ptl [ix] = new_ptr(Histogram( 0.,7000.,700)); _yl [ix] = new_ptr(Histogram(-10., 10.,200 )); _phil [ix] = new_ptr(Histogram(0.,2.*Constants::pi,200 )); } } herwig++-2.6.0.orig/Tests/Hadron/ZHTest.cc0000644000175000017500000001132011754474775021002 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the ZHTest class. // #include "ZHTest.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" using namespace Herwig; void ZHTest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). StepVector::const_iterator sit =event->primaryCollision()->steps().begin(); StepVector::const_iterator stest =event->primaryCollision()->steps().end(); StepVector::const_iterator send=sit; ++send; if(send==stest) --send; ++send; if(send==stest) --send; ++send; Lorentz5Momentum pz; for(;sit!=send;++sit) { ParticleSet part=(**sit).all(); ParticleSet::const_iterator iter = part.begin(), end = part.end(); for( ;iter!=end;++iter) { if((**iter).id()==ParticleID::h0) { *_mH += (**iter).momentum().m()/GeV; *_phiH += (**iter).momentum().phi()+Constants::pi; *_yH += (**iter).momentum().rapidity(); *_ptH += (**iter).momentum().perp()/GeV; } else if((**iter).id()==ParticleID::Z0) { bool fermion=true; for(unsigned int ix=0;ix<(**iter).children().size();++ix) { if(abs((**iter).children()[ix]->id())>16) { fermion=false; break; } } if(fermion) { *_mZ += (**iter).momentum().m()/GeV; *_phiZ += (**iter).momentum().phi()+Constants::pi; *_yZ += (**iter).momentum().rapidity(); *_ptZ += (**iter).momentum().perp()/GeV; for(unsigned int ix=0;ix<(**iter).children().size();++ix) { if((**iter).children()[ix]->id()==11) { *_phil[0] += (**iter).children()[ix]->momentum().phi()+Constants::pi; *_yl[0] += (**iter).children()[ix]->momentum().rapidity(); *_ptl[0] += (**iter).children()[ix]->momentum().perp()/GeV; } else if((**iter).children()[ix]->id()==-11) { *_phil[1] += (**iter).children()[ix]->momentum().phi()+Constants::pi; *_yl[1] += (**iter).children()[ix]->momentum().rapidity(); *_ptl[1] += (**iter).children()[ix]->momentum().perp()/GeV; } } } } } } } NoPIOClassDescription ZHTest::initZHTest; // Definition of the static class description member. void ZHTest::Init() { static ClassDocumentation documentation ("There is no documentation for the ZHTest class"); } void ZHTest::doinitrun() { AnalysisHandler::doinitrun(); if(getParticleData(ParticleID::h0)->mass()>200.*GeV) _mH = new_ptr(Histogram(200., 400.,200)); else _mH = new_ptr(Histogram(114., 116.0,200)); _mZ = new_ptr(Histogram( 0.0, 200.0,400)); _yH = new_ptr(Histogram( -10.0, 10.0,200)); _yZ = new_ptr(Histogram( -10.0, 10.0,200)); _ptH = new_ptr(Histogram( 0., 7000.0,1000)); _ptZ = new_ptr(Histogram( 0., 7000.0,1000)); _phiH = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _phiZ = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); for(unsigned int ix=0;ix<2;++ix) { _ptl[ix] = new_ptr(Histogram( 0., 7000.0,1000)); _yl[ix] = new_ptr(Histogram( -10.0, 10.0,200)); _phil[ix] = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); } } void ZHTest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; string title,species; title = "mass of H"; _mH->topdrawOutput(outfile,Frame,"BLACK",title); title = "pt of H"; _ptH->topdrawOutput(outfile,Frame,"BLACK",title); title = "rapidity of H"; _yH->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of H"; _phiH->topdrawOutput(outfile,Frame,"BLACK",title); title = "mass of Z"; _mZ->topdrawOutput(outfile,Frame,"BLACK",title); title = "pt of Z"; _ptZ->topdrawOutput(outfile,Frame,"BLACK",title); title = "rapidity of Z"; _yZ->topdrawOutput(outfile,Frame,"BLACK",title); title = "azimuth of Z"; _phiZ->topdrawOutput(outfile,Frame,"BLACK",title); title = "pt of e-"; _ptl[0]->topdrawOutput(outfile,Frame,"BLACK",title); title = "rapidity of e-"; _yl[0]->topdrawOutput(outfile,Frame,"BLACK",title); title = "phi of e-"; _phil[0]->topdrawOutput(outfile,Frame,"BLACK",title); title = "pt of e+"; _ptl[1]->topdrawOutput(outfile,Frame,"BLACK",title); title = "rapidity of e+"; _yl[1]->topdrawOutput(outfile,Frame,"BLACK",title); title = "phi of e+"; _phil[1]->topdrawOutput(outfile,Frame,"BLACK",title); } herwig++-2.6.0.orig/Tests/Hadron/VGammaTest.h0000644000175000017500000001024611754474775021501 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_VGammaTest_H #define HERWIG_VGammaTest_H // // This is the declaration of the VGammaTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the VGammaTest class. * * @see \ref VGammaTestInterfaces "The interfaces" * defined for VGammaTest. */ class VGammaTest: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initVGammaTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VGammaTest & operator=(const VGammaTest &); private: /** * Histograms */ HistogramPtr _ptWp ,_ptWm ,_ptZ,_ptGamma; HistogramPtr _rapWp,_rapWm,_rapZ,_rapGamma; HistogramPtr _phiWp,_phiWm,_phiZ,_phiGamma; HistogramPtr _mass; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of VGammaTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of VGammaTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the VGammaTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::VGammaTest"; } /** * The name of a file containing the dynamic library where the class * VGammaTest is implemented. It may also include several, space-separated, * libraries if the class VGammaTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HadronTest.so"; } }; /** @endcond */ } #endif /* HERWIG_VGammaTest_H */ herwig++-2.6.0.orig/Tests/Hadron/WHTest.h0000644000175000017500000001003711754474775020645 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_WHTest_H #define HERWIG_WHTest_H // // This is the declaration of the WHTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the WHTest class. * * @see \ref WHTestInterfaces "The interfaces" * defined for WHTest. */ class WHTest: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription initWHTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ WHTest & operator=(const WHTest &); private: HistogramPtr _mH,_mW[3],_ptH,_ptW[3],_yH,_yW[3],_phiH,_phiW[3],_ptl[4],_yl[4],_phil[4]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of WHTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of WHTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the WHTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::WHTest"; } /** * The name of a file containing the dynamic library where the class * WHTest is implemented. It may also include several, space-separated, * libraries if the class WHTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HadronTest.so"; } }; /** @endcond */ } #endif /* HERWIG_WHTest_H */ herwig++-2.6.0.orig/Tests/Hadron/VTest.h0000644000175000017500000001074711754474775020544 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_VTest_H #define HERWIG_VTest_H // // This is the declaration of the VTest class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the VTest class. * * @see \ref VTestInterfaces "The interfaces" * defined for VTest. */ class VTest: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} 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. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initVTest; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VTest & operator=(const VTest &); private: HistogramPtr _vpt,_jetpt; HistogramPtr _yj[3]; HistogramPtr _yjyv[3]; HistogramPtr _njet[3]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of VTest. */ template <> struct BaseClassTrait { /** Typedef of the first base class of VTest. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the VTest class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::VTest"; } /** * The name of a file containing the dynamic library where the class * VTest is implemented. It may also include several, space-separated, * libraries if the class VTest depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "libfastjet.so HadronJetTest.so"; } }; /** @endcond */ } #endif /* HERWIG_VTest_H */ herwig++-2.6.0.orig/Tests/Hadron/HTest.cc0000644000175000017500000001343311754474775020657 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the HTest class. // #include "HTest.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Event.h" #include "fastjet/PseudoJet.hh" #include "fastjet/ClusterSequence.hh" using namespace Herwig; void HTest::analyze(tEventPtr event, long, int , int) { // Rotate to CMS, extract final state particles and call analyze(particles). set particles; event->selectFinalState(inserter(particles)); tPPtr h0; tParticleVector part2; for(set::const_iterator it=particles.begin(); it!=particles.end();++it) { if((**it).id()==ParticleID::h0) h0=*it; else part2.push_back(*it); } if(!h0) return; *_higgspt += h0->momentum().perp()/GeV; // callFastjet using R-parameter of 1 to get inclusive jets vector fastjet_particles; for (unsigned int j=0; jmomentum().x()/GeV, part2[j]->momentum().y()/GeV, part2[j]->momentum().z()/GeV, part2[j]->momentum().e()/GeV); p.set_user_index(j); fastjet_particles.push_back(p); } fastjet::RecombinationScheme recomb_scheme = fastjet::E_scheme; fastjet::Strategy strategy = fastjet::Best; fastjet::JetDefinition jet_def(fastjet::kt_algorithm, 1., recomb_scheme, strategy); fastjet::ClusterSequence cs(fastjet_particles, jet_def); vector jets = sorted_by_pt(cs.inclusive_jets()); double yh = h0->momentum().rapidity(); double yjet = jets[0].rapidity(); double ptj=jets[0].perp(); int njet[3]={0,0,0}; for(unsigned int ix=0;ix10.) ++njet[0]; if(jets[ix].perp()>40.) ++njet[1]; if(jets[ix].perp()>80.) ++njet[2]; } *_jetpt += ptj; if(ptj>10.) { *_yj[0] += yjet; *_yjyh[0] += yjet-yh; } if(ptj>40.) { *_yj[1] += yjet; *_yjyh[1] += yjet-yh; } if(ptj>80.) { *_yj[2] += yjet; *_yjyh[2] += yjet-yh; } for(unsigned int ix=0;ix<3;++ix) *_njet[ix] +=njet[ix]; } IBPtr HTest::clone() const { return new_ptr(*this); } IBPtr HTest::fullclone() const { return new_ptr(*this); } void HTest::persistentOutput(PersistentOStream & ) const { } void HTest::persistentInput(PersistentIStream & , int) { } ClassDescription HTest::initHTest; // Definition of the static class description member. void HTest::Init() { static ClassDocumentation documentation ("There is no documentation for the HTest class"); } void HTest::dofinish() { AnalysisHandler::dofinish(); ofstream file; string fname = generator()->filename() + string("-") + name() + string(".top"); file.open(fname.c_str()); using namespace HistogramOptions; _higgspt->topdrawOutput(file,Frame|Ylog,"BLACK","Higgs Pt","", "1/SdS/dp0T1/GeV2-13", " G G X X X X", "p0T1/GeV", " X X "); _higgspt->normaliseToCrossSection(); _higgspt->topdrawOutput(file,Frame|Ylog,"BLACK","Higgs Pt","", "dS/dp0T1/nbGeV2-13", " G X X X X", "p0T1/GeV", " X X "); _jetpt->topdrawOutput(file,Frame|Ylog,"BLACK","Hardest Jet Pt","", "1/SdS/dp0T1/GeV2-13", " G G X X X X", "p0T1/GeV", " X X "); _jetpt->normaliseToCrossSection(); _jetpt->topdrawOutput(file,Frame|Ylog,"BLACK","Hardest Jet Pt","", "dS/dp0T1/nbGeV2-13", " G X X X X", "p0T1/GeV", " X X "); string title; for(unsigned int ix=0;ix<3;++ix) { if(ix==0) title ="Hardest jet rapidity p0T1>10 GeV"; else if(ix==1) title ="Hardest jet rapidity p0T1>40 GeV"; else if(ix==2) title ="Hardest jet rapidity p0T1>80 GeV"; _yj[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/dy0j1", " G G X X","y0j1"," X X"); _yj[ix]->normaliseToCrossSection(); _yj[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/dy0j1/nb", " G G X X ","y0j1"," X X"); } for(unsigned int ix=0;ix<3;++ix) { if(ix==0) title ="Hardest jet rapidity - higgs rapidity p0T1>10 GeV"; else if(ix==1) title ="Hardest jet rapidity - higgs rapidity p0T1>40 GeV"; else if(ix==2) title ="Hardest jet rapidity - higgs rapidity p0T1>80 GeV"; _yjyh[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/d(y0j1-y0h1)", " G G X X X X ","y0j1-y0h1"," X X X X"); _yjyh[ix]->normaliseToCrossSection(); _yjyh[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/d(y0j1-y0h1)/nb", " G G X X X X ","y0j1-y0h1"," X X X X"); } for(unsigned int ix=0;ix<3;++ix) { if(ix==0) title ="Number of jets p0T1>10 GeV"; else if(ix==1) title ="Number of jets p0T1>40 GeV"; else if(ix==2) title ="Number of jets p0T1>80 GeV"; _njet[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/dN0jet1", " G G X X","N0jet1"," X X"); _njet[ix]->normaliseToCrossSection(); _njet[ix]->topdrawOutput(file,Frame,"BLACK",title, " X X ", "1/SdS/dN0jet1/nb", " G G X X","N0jet1"," X X"); } } void HTest::doinitrun() { AnalysisHandler::doinitrun(); _higgspt = new_ptr(Histogram(0.,1000.,1000)); _jetpt = new_ptr(Histogram(0.,1000.,1000)); for(unsigned int ix=0;ix<3;++ix) { _yj [ix] = new_ptr(Histogram(-10.,10.,200)); _yjyh[ix] = new_ptr(Histogram(-10.,10.,200)); _njet[ix] = new_ptr(Histogram(-0.5,10.5,11)); } } herwig++-2.6.0.orig/Tests/Hadron/HadronVVTest.cc0000755000175000017500000000744011754474775022163 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the HadronVVTest class. // #include "HadronVVTest.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" using namespace Herwig; void HadronVVTest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). StepVector::const_iterator sit =event->primaryCollision()->steps().begin(); StepVector::const_iterator stest =event->primaryCollision()->steps().end(); StepVector::const_iterator send=sit; ++send; if(send==stest) --send; ++send; if(send==stest) --send; ++send; Lorentz5Momentum ptotal; for(;sit!=send;++sit) { ParticleSet part; (**sit).selectFinalState(inserter(part)); ParticleSet::const_iterator iter = part.begin(), end = part.end(); for( ;iter!=end;++iter) { if((**iter).id()==ParticleID::Wplus) { ptotal+=(**iter).momentum(); _ptWp->addWeighted((**iter).momentum().perp()/GeV,event->weight()); _rapWp->addWeighted((**iter).momentum().rapidity(),event->weight()); _phiWp->addWeighted((**iter).momentum().phi()+Constants::pi,event->weight()); } else if((**iter).id()==ParticleID::Wminus) { ptotal+=(**iter).momentum(); _ptWm->addWeighted((**iter).momentum().perp()/GeV,event->weight()); _rapWm->addWeighted((**iter).momentum().rapidity(),event->weight()); _phiWm->addWeighted((**iter).momentum().phi()+Constants::pi,event->weight()); } else if((**iter).id()==ParticleID::Z0) { ptotal+=(**iter).momentum(); _ptZ->addWeighted((**iter).momentum().perp()/GeV,event->weight()); _rapZ->addWeighted((**iter).momentum().rapidity(),event->weight()); _phiZ->addWeighted((**iter).momentum().phi()+Constants::pi,event->weight()); } } } _mass->addWeighted(ptotal.m()/GeV,event->weight()); } IBPtr HadronVVTest::clone() const { return new_ptr(*this); } IBPtr HadronVVTest::fullclone() const { return new_ptr(*this); } NoPIOClassDescription HadronVVTest::initHadronVVTest; // Definition of the static class description member. void HadronVVTest::Init() { static ClassDocumentation documentation ("There is no documentation for the HadronVVTest class"); } void HadronVVTest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; _ptWp->topdrawOutput(outfile,Frame,"BLACK","Pt of W+"); _rapWp->topdrawOutput(outfile,Frame,"BLACK","Rapidity of W+"); _phiWp->topdrawOutput(outfile,Frame,"BLACK","Azimuthal angle for W+"); _ptWm->topdrawOutput(outfile,Frame,"BLACK","Pt of W-"); _rapWm->topdrawOutput(outfile,Frame,"BLACK","Rapidity of W-"); _phiWm->topdrawOutput(outfile,Frame,"BLACK","Azimuthal angle for W-"); _ptZ ->topdrawOutput(outfile,Frame,"BLACK","Pt of Z "); _rapZ ->topdrawOutput(outfile,Frame,"BLACK","Rapidity of Z "); _phiZ ->topdrawOutput(outfile,Frame,"BLACK","Azimuthal angle for Z "); _mass ->topdrawOutput(outfile,Frame,"BLACK","Pair mass"); } void HadronVVTest::doinitrun() { AnalysisHandler::doinitrun(); _ptWp = new_ptr(Histogram(0.,1000.,200)); _rapWp = new_ptr(Histogram(-10,10,200)); _phiWp = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _ptWm = new_ptr(Histogram(0.,1000.,200)); _rapWm = new_ptr(Histogram(-10,10,200)); _phiWm = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _ptZ = new_ptr(Histogram(0.,1000.,200)); _rapZ = new_ptr(Histogram(-10,10,200)); _phiZ = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _mass = new_ptr(Histogram(100.,1100.,200)); } herwig++-2.6.0.orig/Tests/Hadron/VGammaTest.cc0000644000175000017500000001147711754474775021646 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the VGammaTest class. // #include "VGammaTest.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" using namespace Herwig; void VGammaTest::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). StepVector::const_iterator sit =event->primaryCollision()->steps().begin(); StepVector::const_iterator stest =event->primaryCollision()->steps().end(); StepVector::const_iterator send=sit; ++send; if(send==stest) --send; ++send; if(send==stest) --send; ++send; Lorentz5Momentum ptotal; for(;sit!=send;++sit) { ParticleSet part; (**sit).selectFinalState(inserter(part)); ParticleSet::const_iterator iter = part.begin(), end = part.end(); for( ;iter!=end;++iter) { if((**iter).id()==ParticleID::Wplus) { ptotal+=(**iter).momentum(); _ptWp->addWeighted((**iter).momentum().perp()/GeV,event->weight()); _rapWp->addWeighted((**iter).momentum().rapidity(),event->weight()); _phiWp->addWeighted((**iter).momentum().phi()+Constants::pi,event->weight()); } else if((**iter).id()==ParticleID::Wminus) { ptotal+=(**iter).momentum(); _ptWm->addWeighted((**iter).momentum().perp()/GeV,event->weight()); _rapWm->addWeighted((**iter).momentum().rapidity(),event->weight()); _phiWm->addWeighted((**iter).momentum().phi()+Constants::pi,event->weight()); } else if((**iter).id()==ParticleID::Z0) { ptotal+=(**iter).momentum(); _ptZ->addWeighted((**iter).momentum().perp()/GeV,event->weight()); _rapZ->addWeighted((**iter).momentum().rapidity(),event->weight()); _phiZ->addWeighted((**iter).momentum().phi()+Constants::pi,event->weight()); } else if((**iter).id()==ParticleID::gamma) { ptotal+=(**iter).momentum(); _ptGamma->addWeighted((**iter).momentum().perp()/GeV,event->weight()); _rapGamma->addWeighted((**iter).momentum().rapidity(),event->weight()); _phiGamma->addWeighted((**iter).momentum().phi()+Constants::pi,event->weight()); } } } _mass->addWeighted(ptotal.m()/GeV,event->weight()); } IBPtr VGammaTest::clone() const { return new_ptr(*this); } IBPtr VGammaTest::fullclone() const { return new_ptr(*this); } NoPIOClassDescription VGammaTest::initVGammaTest; // Definition of the static class description member. void VGammaTest::Init() { static ClassDocumentation documentation ("There is no documentation for the VGammaTest class"); } void VGammaTest::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; _ptWp->topdrawOutput(outfile,Frame,"BLACK","Pt of W+"); _ptWp->normaliseToCrossSection(); _ptWp->topdrawOutput(outfile,Frame,"BLACK","Pt of W+"); _rapWp->topdrawOutput(outfile,Frame,"BLACK","Rapidity of W+"); _phiWp->topdrawOutput(outfile,Frame,"BLACK","Azimuthal angle for W+"); _ptWm->topdrawOutput(outfile,Frame,"BLACK","Pt of W-"); _ptWm->normaliseToCrossSection(); _ptWm->topdrawOutput(outfile,Frame,"BLACK","Pt of W-"); _rapWm->topdrawOutput(outfile,Frame,"BLACK","Rapidity of W-"); _phiWm->topdrawOutput(outfile,Frame,"BLACK","Azimuthal angle for W-"); _ptZ ->topdrawOutput(outfile,Frame,"BLACK","Pt of Z "); _ptZ->normaliseToCrossSection(); _ptZ ->topdrawOutput(outfile,Frame,"BLACK","Pt of Z "); _rapZ ->topdrawOutput(outfile,Frame,"BLACK","Rapidity of Z "); _phiZ ->topdrawOutput(outfile,Frame,"BLACK","Azimuthal angle for Z "); _ptGamma ->topdrawOutput(outfile,Frame,"BLACK","Pt of Gamma "); _ptGamma->normaliseToCrossSection(); _ptGamma ->topdrawOutput(outfile,Frame,"BLACK","Pt of Gamma "); _rapGamma ->topdrawOutput(outfile,Frame,"BLACK","Rapidity of Gamma "); _phiGamma ->topdrawOutput(outfile,Frame,"BLACK","Azimuthal angle for Gamma "); _mass ->topdrawOutput(outfile,Frame,"BLACK","Pair mass"); } void VGammaTest::doinitrun() { AnalysisHandler::doinitrun(); _ptWp = new_ptr(Histogram(0.,1000.,200)); _rapWp = new_ptr(Histogram(-10,10,200)); _phiWp = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _ptWm = new_ptr(Histogram(0.,1000.,200)); _rapWm = new_ptr(Histogram(-10,10,200)); _phiWm = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _ptZ = new_ptr(Histogram(0.,1000.,200)); _rapZ = new_ptr(Histogram(-10,10,200)); _phiZ = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _ptGamma = new_ptr(Histogram(0.,1000.,200)); _rapGamma = new_ptr(Histogram(-10,10,200)); _phiGamma = new_ptr(Histogram( 0.0,2.0*Constants::pi,200)); _mass = new_ptr(Histogram(100.,1100.,200)); } herwig++-2.6.0.orig/Exsample2/0000755000175000017500000000000011756464211016622 5ustar sylvestresylvestreherwig++-2.6.0.orig/Exsample2/ExSampler2.cc0000644000175000017500000001175411754474774021140 0ustar sylvestresylvestre// -*- C++ -*- // // ExSampler.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ExSampler class. // #include "ExSampler2.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.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 "GeneralSampler.h" using namespace Herwig; using namespace exsample; ExSampler::ExSampler() : presampling_points_(1000), freeze_grid_(0), efficiency_threshold_(.95), gain_threshold_(.1) {} ExSampler::~ExSampler() {} IBPtr ExSampler::clone() const { return new_ptr(*this); } IBPtr ExSampler::fullclone() const { return new_ptr(*this); } void ExSampler::generate(bool) { while (true) { try { generator_.generate(*this); lastPoint() = generator_.last_point(); break; } catch(selection_maxtry&) { throw GeneralSampler::MaxTryException() << "The maximum number of attempts to select a cell was exceeded\n" << "for process " << process() << Exception::eventerror; } catch(hit_and_miss_maxtry&) { throw GeneralSampler::MaxTryException() << "The maximum number of attempts to select an event was exceeded\n" << "for process " << process() << Exception::eventerror; } catch(generator_update&) { throw UpdateCrossSections(); } catch(...) { throw; } } } void ExSampler::initialize(bool progress) { if ( progress ) { cout << "initializing sampler for " << process() << "\n" << flush; } generator_.function(this); generator_.sampling_parameters().presampling_points = presampling_points_; generator_.sampling_parameters().freeze_grid = freeze_grid_; generator_.sampling_parameters().maxtry = eventHandler()->maxLoop(); generator_.sampling_parameters().efficiency_threshold = efficiency_threshold_; generator_.sampling_parameters().gain_threshold = gain_threshold_; generator_.initialize(*this); if ( progress ) { cout << "estimated cross section is ( " << averageWeight() << " +/- " << sqrt(averageWeightVariance()) << " ) nb\n" << flush; } } void ExSampler::finalize(bool) { generator_.finalize(); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void ExSampler::persistentOutput(PersistentOStream & os) const { os << presampling_points_ << freeze_grid_ << efficiency_threshold_ << gain_threshold_; generator_.put(os); } void ExSampler::persistentInput(PersistentIStream & is, int) { is >> presampling_points_ >> freeze_grid_ >> efficiency_threshold_ >> gain_threshold_; generator_.get(is); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeHerwigExSampler("Herwig::ExSampler", "HwExsample2.so"); void ExSampler::Init() { static ClassDocumentation documentation ("ExSampler interfaces to the exsample library.", "Events have been sampled using " "the ExSample library \\cite{Platzer:2011dr}", "%\\cite{Platzer:2011dr}\n" "\\bibitem{Platzer:2011dr}\n" "S.~Platzer,\n" "``ExSample -- A Library for Sampling Sudakov-Type Distributions,''\n" "arXiv:1108.6182 [hep-ph].\n" "%%CITATION = ARXIV:1108.6182;%%"); static ThePEG::Parameter interfacepresampling_points ("presampling_points", "Set the number of presampling points per cell", &ExSampler::presampling_points_, 1000, 0, 0, false, false, ThePEG::Interface::lowerlim); static ThePEG::Parameter interfacefreeze_grid ("freeze_grid", "Set the number of events after which the grid should be frozen", &ExSampler::freeze_grid_, 0, 0, 0, false, false, ThePEG::Interface::lowerlim); static ThePEG::Parameter interfaceefficiency_threshold ("efficiency_threshold", "Set the efficiency threshold", &ExSampler::efficiency_threshold_, .95, 0., 1., false, false, ThePEG::Interface::limited); static ThePEG::Parameter interfacegain_threshold ("gain_threshold", "Set the gain threshold", &ExSampler::gain_threshold_, .1, 0., 1., false, false, ThePEG::Interface::limited); } herwig++-2.6.0.orig/Exsample2/Makefile.in0000644000175000017500000005340411756461677020712 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Exsample2 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwExsample2_la_LIBADD = am_HwExsample2_la_OBJECTS = GeneralStatistics.lo BinnedStatistics.lo \ MultiIterationStatistics.lo BinSampler.lo ProjectingSampler.lo \ GeneralSampler.lo ExSampler2.lo HwExsample2_la_OBJECTS = $(am_HwExsample2_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwExsample2_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwExsample2_la_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwExsample2_la_SOURCES) DIST_SOURCES = $(HwExsample2_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwExsample2.la HwExsample2_la_LDFLAGS = -module -version-info 1:0:0 HwExsample2_la_SOURCES = \ GeneralStatistics.h GeneralStatistics.cc \ BinnedStatistics.h BinnedStatistics.cc \ MultiIterationStatistics.h MultiIterationStatistics.cc \ BinSampler.h BinSampler.cc \ ProjectingSampler.h ProjectingSampler.cc \ GeneralSampler.h GeneralSampler.cc \ ExSampler2.h ExSampler2.cc \ exsample/cell.icc \ exsample/generator.h \ exsample/linear_interpolator.icc \ exsample/config.h \ exsample/selectors.h \ exsample/adaption_info.h \ exsample/selectors.icc \ exsample/adaption_info.icc \ exsample/exponential_generator.h \ exsample/exponential_generator.icc \ exsample/generator.icc \ exsample/statistics.h \ exsample/linear_interpolator.h \ exsample/cell.h \ exsample/utility.h \ exsample/binary_tree.h \ exsample/statistics.icc all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Exsample2/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Exsample2/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwExsample2.la: $(HwExsample2_la_OBJECTS) $(HwExsample2_la_DEPENDENCIES) $(EXTRA_HwExsample2_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwExsample2_la_LINK) -rpath $(pkglibdir) $(HwExsample2_la_OBJECTS) $(HwExsample2_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BinSampler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BinnedStatistics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ExSampler2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeneralSampler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeneralStatistics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MultiIterationStatistics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ProjectingSampler.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Exsample2/BinSampler.h0000644000175000017500000001322611754474774021050 0ustar sylvestresylvestre// -*- C++ -*- // // BinSampler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_BinSampler_H #define Herwig_BinSampler_H // // This is the declaration of the BinSampler class. // #include "ThePEG/Handlers/StandardEventHandler.h" #include "ThePEG/Utilities/Exception.h" #include "ThePEG/Repository/UseRandom.h" #include "MultiIterationStatistics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief BinSampler samples XCombs bins. This default implementation * performs flat MC integration. * * @see \ref BinSamplerInterfaces "The interfaces" * defined for BinSampler. */ class BinSampler: public Interfaced, public Herwig::MultiIterationStatistics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ BinSampler(); /** * The destructor. */ virtual ~BinSampler(); //@} public: /** * Clone this object. */ Ptr::ptr cloneMe() const { return dynamic_ptr_cast::ptr>(clone()); } public: /** * Set the event handler */ void eventHandler(tStdEHPtr eh) { theEventHandler = eh; } /** * Return the event handler */ tStdEHPtr eventHandler() const { return theEventHandler; } /** * Return the bin */ int bin() const { return theBin; } /** * Set the bin */ void bin(int b) { theBin = b; } /** * Return a string describing the process handled by this sampler. */ string process() const; /** * Return the last generated point. */ const vector& lastPoint() const { return theLastPoint; } /** * Access the last generated point. */ vector& lastPoint() { return theLastPoint; } /** * Return true, if this bin sampler produces unweighted events. */ virtual bool isUnweighting() const { return false; } /** * Return true, if this sampler is in a compensating mode. */ virtual bool compensating() const { return false; } /** * Exception to be thrown, if a new maximum weight has been encountered * which should be taken care of by the unweighting performed in GeneralSampler */ struct NewMaximum { double oldMaxWeight; double newMaxWeight; NewMaximum(double oldm, double newm) : oldMaxWeight(oldm), newMaxWeight(newm) {} }; /** * Exception to be thrown if cross section information should be updated. */ struct UpdateCrossSections {}; /** * Generate the next point; store the point in lastPoint() and its * weight using select(); if noMaxInfo is true, do not throw * NewMaximum or UpdateCrossSections exceptions. */ virtual void generate(bool noMaxInfo = false); /** * Run a single iteration of n points, optionally printing a * progress bar to cout. Calls generate n times. */ void runIteration(unsigned long n, bool progress); /** * Initialize this bin sampler. This default version calls runIteration. */ virtual void initialize(bool progress); /** * Return true, if this sampler has already been initialized. */ bool initialized() const { return theInitialized; } /** * Indicate that this sampler has already been initialized. */ void isInitialized() { theInitialized = true; } /** * Finalize this sampler. */ virtual void finalize(bool) {} public: /** * Return the dimension. */ int dimension() const { return theEventHandler->nDim(bin()); } /** * Return the number of points to be used for initial integration. */ unsigned long initialPoints() const { return theInitialPoints; } 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The number of points to use for initial integration. */ unsigned long theInitialPoints; /** * The bin to be sampled. */ int theBin; /** * Wether or not this sampler has already been initialized. */ bool theInitialized; /** * The last generated point. */ vector theLastPoint; protected: /** * The event handler to be used. */ tStdEHPtr theEventHandler; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BinSampler & operator=(const BinSampler &); }; } #endif /* Herwig_BinSampler_H */ herwig++-2.6.0.orig/Exsample2/ProjectingSampler.cc0000644000175000017500000001566211754474774022610 0ustar sylvestresylvestre// -*- C++ -*- // // ProjectingSampler.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ProjectingSampler class. // #include "ProjectingSampler.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.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; ProjectingSampler::ProjectingSampler() : theFirstIteration(true), theNIterations(4), theEnhancementFactor(2.0), theNBins(8), theEpsilon(0.5), theLastNPoints(0), theWeightThreshold(0.001) {} ProjectingSampler::~ProjectingSampler() {} IBPtr ProjectingSampler::clone() const { return new_ptr(*this); } IBPtr ProjectingSampler::fullclone() const { return new_ptr(*this); } void ProjectingSampler::select(double weight) { for ( size_t k = 0; k < lastPoint().size(); ++k ) { if ( theFirstIteration ) { theProjections[k].bin(lastPoint()[k]); } theProjections[k].select(theLastValue); } GeneralStatistics::select(weight); } void ProjectingSampler::accept() { for ( size_t k = 0; k < lastPoint().size(); ++k ) { theProjections[k].accept(); } GeneralStatistics::accept(); } void ProjectingSampler::reject() { for ( size_t k = 0; k < lastPoint().size(); ++k ) { theProjections[k].reject(); } GeneralStatistics::reject(); } void ProjectingSampler::generate(bool noMaxInfo) { double w = 1.; if ( !theFirstIteration ) { for ( size_t k = 0; k < lastPoint().size(); ++k ) { w *= theProjections[k].sample(lastPoint()[k]); } } else { for ( size_t k = 0; k < lastPoint().size(); ++k ) lastPoint()[k] = UseRandom::rnd(); } try { theLastValue = theEventHandler->dSigDR(lastPoint()) / nanobarn; w *= theLastValue; } catch (Veto&) { theLastValue = 0.0; w = 0.0; } catch (...) { throw; } if ( abs(w) > maxWeight() && !noMaxInfo ) { double old = maxWeight(); select(w); throw NewMaximum(old,abs(w)); } select(w); if ( !noMaxInfo && selectedPoints() == theLastNPoints ) { theLastNPoints = (unsigned long)(theLastNPoints*theEnhancementFactor); adapt(); throw UpdateCrossSections(); } } void ProjectingSampler::initialize(bool progress) { if ( initialized() ) return; lastPoint().resize(dimension()); theProjections.resize(dimension(),BinnedStatistics(theNBins,theWeightThreshold)); theLastNPoints = initialPoints(); theFirstIteration = true; runIteration(theLastNPoints,progress); theLastNPoints = (unsigned long)(theLastNPoints*theEnhancementFactor); adapt(); if ( theNIterations == 1 ) { isInitialized(); return; } nextIteration(); theFirstIteration = false; for ( unsigned long k = 1; k < theNIterations-1; ++k ) { runIteration(theLastNPoints,progress); theLastNPoints = (unsigned long)(theLastNPoints*theEnhancementFactor); adapt(); nextIteration(); } runIteration(theLastNPoints,progress); theLastNPoints = (unsigned long)(theLastNPoints*theEnhancementFactor); adapt(); isInitialized(); } struct ProjectingAdaptor { double variance; double epsilon; double importanceMeasure(const GeneralStatistics& s) const { return s.averageAbsWeight(); } bool adapt(const GeneralStatistics& s) const { return s.averageAbsWeightVariance()/variance > epsilon; } }; void ProjectingSampler::adapt() { ProjectingAdaptor adaptor; adaptor.variance = 0.; for ( vector::iterator s = theProjections.begin(); s != theProjections.end(); ++s ) { double variance = 0.; for ( map::const_iterator k = s->statistics().begin(); k != s->statistics().end(); ++k ) { variance += k->second.averageAbsWeightVariance(); } adaptor.variance += variance/s->statistics().size(); } adaptor.variance /= theProjections.size(); adaptor.epsilon = theEpsilon; size_t count = 0; for ( vector::iterator s = theProjections.begin(); s != theProjections.end(); ++s, ++count ) { s->adapt(adaptor); } } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void ProjectingSampler::persistentOutput(PersistentOStream & os) const { os << theFirstIteration << theNIterations << theEnhancementFactor << theNBins << theEpsilon << theLastNPoints << theProjections << theWeightThreshold; } void ProjectingSampler::persistentInput(PersistentIStream & is, int) { is >> theFirstIteration >> theNIterations >> theEnhancementFactor >> theNBins >> theEpsilon >> theLastNPoints >> theProjections >> theWeightThreshold; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeHerwigProjectingSampler("Herwig::ProjectingSampler", "HwExsample2.so"); void ProjectingSampler::Init() { static ClassDocumentation documentation ("ProjectingSampler does adaption from projections of the integrand."); static Parameter interfaceNIterations ("NIterations", "The number of iterations to perform initially.", &ProjectingSampler::theNIterations, 4, 1, 0, false, false, Interface::lowerlim); static Parameter interfaceEnhancementFactor ("EnhancementFactor", "The enhancement factor for the number of points in the next iteration.", &ProjectingSampler::theEnhancementFactor, 2.0, 1.0, 0, false, false, Interface::lowerlim); static Parameter interfaceNBins ("NBins", "The number of projection bins to consider initially.", &ProjectingSampler::theNBins, 8, 1, 0, false, false, Interface::lowerlim); static Parameter interfaceEpsilon ("Epsilon", "The adaption threshold.", &ProjectingSampler::theEpsilon, 0.5, 0.0, 0, false, false, Interface::lowerlim); static Parameter interfaceWeightThreshold ("WeightThreshold", "The minimum weight per bin in units of the average weight.", &ProjectingSampler::theWeightThreshold, 0.001, 0.0, 0, false, false, Interface::lowerlim); } herwig++-2.6.0.orig/Exsample2/MultiIterationStatistics.cc0000644000175000017500000001023011754474774024166 0ustar sylvestresylvestre// -*- C++ -*- // // MultiIterationStatictis.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MultiIterationStatistics class. // #include "MultiIterationStatistics.h" #include using namespace Herwig; MultiIterationStatistics::MultiIterationStatistics() : GeneralStatistics() {} MultiIterationStatistics::~MultiIterationStatistics() {} void MultiIterationStatistics::put(PersistentOStream & os) const { GeneralStatistics::put(os); os << theIterations; } void MultiIterationStatistics::get(PersistentIStream & is) { GeneralStatistics::get(is); is >> theIterations; } double MultiIterationStatistics::chi2() const { assert(!iterations().empty()); double current = averageWeight(); double res = 0.; for ( vector::const_iterator s = iterations().begin(); s != iterations().end(); ++s ) { if ( s->selectedPoints() < 2 || s->averageWeightVariance() == 0.0 ) continue; res += sqr(s->averageWeight()-current)/s->averageWeightVariance(); } res += selectedPoints() > 1 && GeneralStatistics::averageWeightVariance() != 0.0 ? sqr(GeneralStatistics::averageWeight()-current)/ GeneralStatistics::averageWeightVariance() : 0.; res /= iterations().size(); return res; } double MultiIterationStatistics::averageWeight() const { double invSigmaBar = 0.; double res = 0.; for ( vector::const_iterator s = iterations().begin(); s != iterations().end(); ++s ) { if ( s->selectedPoints() < 2 || s->averageWeightVariance() == 0.0 ) continue; invSigmaBar += 1./s->averageWeightVariance(); res += s->averageWeight()/s->averageWeightVariance(); } invSigmaBar += selectedPoints() > 1 && GeneralStatistics::averageWeightVariance() != 0.0 ? 1./GeneralStatistics::averageWeightVariance() : 0.; res += selectedPoints() > 1 && GeneralStatistics::averageWeightVariance() != 0.0 ? GeneralStatistics::averageWeight()/GeneralStatistics::averageWeightVariance() : 0.; res /= invSigmaBar; return res; } double MultiIterationStatistics::averageWeightVariance() const { double invSigmaBar = 0.; for ( vector::const_iterator s = iterations().begin(); s != iterations().end(); ++s ) { if ( s->selectedPoints() < 2 || s->averageWeightVariance() == 0.0 ) continue; invSigmaBar += 1./s->averageWeightVariance(); } invSigmaBar += selectedPoints() > 1 && GeneralStatistics::averageWeightVariance() != 0.0 ? 1./GeneralStatistics::averageWeightVariance() : 0.; return 1./invSigmaBar; } double MultiIterationStatistics::averageAbsWeight() const { double invSigmaBar = 0.; double res = 0.; for ( vector::const_iterator s = iterations().begin(); s != iterations().end(); ++s ) { if ( s->selectedPoints() < 2 || s->averageAbsWeightVariance() == 0.0 ) continue; invSigmaBar += 1./s->averageAbsWeightVariance(); res += s->averageAbsWeight()/s->averageAbsWeightVariance(); } invSigmaBar += selectedPoints() > 1 && GeneralStatistics::averageAbsWeightVariance() != 0.0 ? 1./GeneralStatistics::averageAbsWeightVariance() : 0.; res += selectedPoints() > 1 && GeneralStatistics::averageAbsWeightVariance() != 0.0 ? GeneralStatistics::averageAbsWeight()/GeneralStatistics::averageAbsWeightVariance() : 0.; res /= invSigmaBar; return res; } double MultiIterationStatistics::averageAbsWeightVariance() const { double invSigmaBar = 0.; for ( vector::const_iterator s = iterations().begin(); s != iterations().end(); ++s ) { if ( s->selectedPoints() < 2 || s->averageAbsWeightVariance() == 0.0 ) continue; invSigmaBar += 1./s->averageAbsWeightVariance(); } invSigmaBar += selectedPoints() > 1 && GeneralStatistics::averageAbsWeightVariance() != 0.0 ? 1./GeneralStatistics::averageAbsWeightVariance() : 0.; return 1./invSigmaBar; } herwig++-2.6.0.orig/Exsample2/BinnedStatistics.cc0000644000175000017500000000223111754474774022416 0ustar sylvestresylvestre// -*- C++ -*- // // GeneralStatictis.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the BinnedStatistics class. // #include "BinnedStatistics.h" #include using boost::next; using boost::prior; using namespace Herwig; BinnedStatistics::~BinnedStatistics() {} void BinnedStatistics::put(PersistentOStream & os) const { os << statisticsMap << weightMap << selectorMap << lastPoint; } void BinnedStatistics::get(PersistentIStream & is) { is >> statisticsMap >> weightMap >> selectorMap >> lastPoint; lastStatistics = &(statisticsMap.upper_bound(lastPoint)->second); } void BinnedStatistics::initialize(unsigned int bins) { weightMap[1.] = 1.; selectorMap[1.] = make_pair(0.,1.); double step = 1./bins; for ( unsigned int i = 1; i <= bins; ++i ) { statisticsMap[i*step] = GeneralStatistics(); } } herwig++-2.6.0.orig/Exsample2/BinSampler.cc0000644000175000017500000001103211754474774021177 0ustar sylvestresylvestre// -*- C++ -*- // // BinSampler.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the BinSampler class. // #include "BinSampler.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Handlers/StandardEventHandler.h" #include "ThePEG/Handlers/StandardXComb.h" #include using namespace Herwig; BinSampler::BinSampler() : Interfaced(), MultiIterationStatistics(), theInitialPoints(1000000), theBin(-1), theInitialized(false) {} BinSampler::~BinSampler() {} IBPtr BinSampler::clone() const { return new_ptr(*this); } IBPtr BinSampler::fullclone() const { return new_ptr(*this); } string BinSampler::process() const { ostringstream os(""); const StandardEventHandler& eh = *theEventHandler; const StandardXComb& xc = *eh.xCombs()[theBin]; os << xc.matrixElement()->name() << " : "; os << xc.mePartonData()[0]->PDGName() << " " << xc.mePartonData()[1]->PDGName() << " -> "; for ( cPDVector::const_iterator pid = xc.mePartonData().begin() + 2; pid != xc.mePartonData().end(); ++pid ) os << (**pid).PDGName() << " "; return os.str(); } void BinSampler::generate(bool noMaxInfo) { double w = 1.; for ( size_t k = 0; k < lastPoint().size(); ++k ) { lastPoint()[k] = UseRandom::rnd(); } try { w = theEventHandler->dSigDR(lastPoint()) / nanobarn; } catch (Veto&) { w = 0.0; } catch (...) { throw; } if ( abs(w) > maxWeight() && !noMaxInfo ) { double old = maxWeight(); select(w); throw NewMaximum(old,abs(w)); } select(w); } void BinSampler::runIteration(unsigned long points, bool progress) { boost::progress_display* progressBar = 0; if ( progress ) { cout << "integrating " << process() << " , iteration " << (iterations().size() + 1); progressBar = new boost::progress_display(points,cout); } for ( unsigned long k = 0; k < points; ++k ) { generate(true); if ( progress ) { ++(*progressBar); } } if ( progress ) { cout << "integrated ( " << averageWeight() << " +/- " << sqrt(averageWeightVariance()) << " ) nb\nepsilon = " << (abs(maxWeight()) != 0. ? averageAbsWeight()/abs(maxWeight()) : 0.); if ( !iterations().empty() ) cout << " chi2 = " << chi2(); cout << "\n"; cout << "--------------------------------------------------------------------------------\n"; } if ( progressBar ) delete progressBar; } void BinSampler::initialize(bool progress) { if ( initialized() ) return; lastPoint().resize(dimension()); runIteration(initialPoints(),progress); isInitialized(); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void BinSampler::persistentOutput(PersistentOStream & os) const { MultiIterationStatistics::put(os); os << theInitialPoints << theBin << theInitialized << theLastPoint; } void BinSampler::persistentInput(PersistentIStream & is, int) { MultiIterationStatistics::get(is); is >> theInitialPoints >> theBin >> theInitialized >> theLastPoint; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeHerwigBinSampler("Herwig::BinSampler", "HwExsample2.so"); void BinSampler::Init() { static ClassDocumentation documentation ("BinSampler samples XCombs bins. This default implementation performs flat MC integration."); static Parameter interfaceInitialPoints ("InitialPoints", "The number of points to use for initial integration.", &BinSampler::theInitialPoints, 1000000, 1, 0, false, false, Interface::lowerlim); } herwig++-2.6.0.orig/Exsample2/MultiIterationStatistics.h0000644000175000017500000000530611754474774024040 0ustar sylvestresylvestre// -*- C++ -*- // // MultiIterationStatictis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_MultiIterationStatistics_H #define Herwig_MultiIterationStatistics_H // // This is the declaration of the MultiIterationStatistics class. // #include "GeneralStatistics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * \brief Monte Carlo statistics for multiple iterations */ class MultiIterationStatistics: public Herwig::GeneralStatistics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MultiIterationStatistics(); /** * The destructor. */ virtual ~MultiIterationStatistics(); //@} public: /** * Indicate the start of a new iteration */ void nextIteration() { iterations().push_back(GeneralStatistics(*this)); reset(); } /** * Return the iterations done so far. */ const vector& iterations() const { return theIterations; } /** * Access the iterations done so far. */ vector& iterations() { return theIterations; } /** * Return the last calculated chi^2. */ virtual double chi2() const; /** * Return the average weight. */ virtual double averageWeight() const; /** * Return the average absolute weight. */ virtual double averageAbsWeight() const; /** * Return the variance of the average weight. */ virtual double averageWeightVariance() const; /** * Return the variance of the average absolute weight. */ virtual double averageAbsWeightVariance() 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 put(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 get(PersistentIStream & is); //@} private: /** * The currently accumulated iterations. */ vector theIterations; }; inline PersistentOStream& operator<<(PersistentOStream& os, const MultiIterationStatistics& s) { s.put(os); return os; } inline PersistentIStream& operator>>(PersistentIStream& is, MultiIterationStatistics& s) { s.get(is); return is; } } #endif /* Herwig_MultiIterationStatistics_H */ herwig++-2.6.0.orig/Exsample2/Makefile.am0000644000175000017500000000150711755412445020662 0ustar sylvestresylvestrepkglib_LTLIBRARIES = HwExsample2.la HwExsample2_la_LDFLAGS = -module -version-info 1:0:0 HwExsample2_la_SOURCES = \ GeneralStatistics.h GeneralStatistics.cc \ BinnedStatistics.h BinnedStatistics.cc \ MultiIterationStatistics.h MultiIterationStatistics.cc \ BinSampler.h BinSampler.cc \ ProjectingSampler.h ProjectingSampler.cc \ GeneralSampler.h GeneralSampler.cc \ ExSampler2.h ExSampler2.cc \ exsample/cell.icc \ exsample/generator.h \ exsample/linear_interpolator.icc \ exsample/config.h \ exsample/selectors.h \ exsample/adaption_info.h \ exsample/selectors.icc \ exsample/adaption_info.icc \ exsample/exponential_generator.h \ exsample/exponential_generator.icc \ exsample/generator.icc \ exsample/statistics.h \ exsample/linear_interpolator.h \ exsample/cell.h \ exsample/utility.h \ exsample/binary_tree.h \ exsample/statistics.icc herwig++-2.6.0.orig/Exsample2/GeneralSampler.h0000644000175000017500000001461211754474774021715 0ustar sylvestresylvestre// -*- C++ -*- // // GeneralSampler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_GeneralSampler_H #define Herwig_GeneralSampler_H // // This is the declaration of the GeneralSampler class. // #include "ThePEG/Handlers/SamplerBase.h" #include "BinSampler.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief A GeneralSampler class * * @see \ref GeneralSamplerInterfaces "The interfaces" * defined for GeneralSampler. */ class GeneralSampler: public SamplerBase { public: /** * Exception thrown in case too many attempts to unweight an event. */ struct MaxTryException : public ThePEG::Exception {}; /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ GeneralSampler(); /** * The destructor. */ virtual ~GeneralSampler(); //@} public: /** @name Virtual functions from SamplerBase. */ //@{ /** * Initialize the the sampler, possibly doing presampling of the * phase space. */ virtual void initialize(); /** * Generarate a new phase space point and return a weight associated * with it. This weight should preferably be 1. */ virtual double generate(); /** * Reject the last chosen phase space point. */ virtual void rejectLast(); /** * If the sampler is able to sample several different functions * separately, this function should return the last chosen * function. This default version always returns 0. */ virtual int lastBin() const { return lastSampler ? lastSampler->bin() : 0; } /** * Return the total integrated cross section determined from the * Monte Carlo sampling so far. */ virtual CrossSection integratedXSec() const { currentCrossSections(); return theIntegratedXSec * nanobarn; } /** * Return the error on the total integrated cross section determined * from the Monte Carlo sampling so far. */ virtual CrossSection integratedXSecErr() const { currentCrossSections(); return theIntegratedXSecErr * nanobarn; } /** * Return the overestimated integrated cross section. */ virtual CrossSection maxXSec() const { currentCrossSections(); return abs(theIntegratedXSec) * nanobarn; } /** * Return the sum of the weights returned by generate() so far (of * the events that were not rejeted). */ virtual double sumWeights() const { return theSumWeights; } //@} protected: /** * Calculate cross sections from samplers, assuming the start of a * new iteration. */ void updateCrossSections(bool firstTime = false); /** * Calculate cross sections from samplers at current state. */ void currentCrossSections() 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). protected: /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans); /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); private: /** * The bin sampler to use. */ Ptr::ptr theBinSampler; /** * Whether or not additional information should be printed to cout. */ bool theVerbose; /** * True, if subprocesses should be selected flat. This is a debug * flag, cross section information and distributions will not be * correct. */ bool theFlatSubprocesses; /** * True, if we are generating events. */ bool isSampling; /** * The selector map for the bin samplers. */ map::ptr> samplers; /** * The last selected bin sampler. */ Ptr::tptr lastSampler; /** * The integrated cross section in nanobarn */ mutable double theIntegratedXSec; /** * The integrated cross section error in nanobarn */ mutable double theIntegratedXSecErr; /** * The sum of weights */ double theSumWeights; /** * The sum of absolute cross section. */ double norm; /** * Map samplers to events to be skipped owing to encounter of a new * maximum. */ map::tptr,unsigned long> skipMap; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GeneralSampler & operator=(const GeneralSampler &); }; } #endif /* Herwig_GeneralSampler_H */ herwig++-2.6.0.orig/Exsample2/exsample/0000755000175000017500000000000011756464211020440 5ustar sylvestresylvestreherwig++-2.6.0.orig/Exsample2/exsample/selectors.h0000644000175000017500000001172011754474774022632 0ustar sylvestresylvestre// -*- C++ -*- // // selectors.h is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // #ifndef EXSAMPLE_selectors_h_included #define EXSAMPLE_selectors_h_included #include "cell.h" namespace exsample { /// \brief flat sampling selector template struct sampling_selector { /// the default constructor sampling_selector() : rnd_gen(), compensate(false) {} /// the standard constructor explicit sampling_selector(const Random& r, bool comp = true) : rnd_gen(r), compensate(comp) {} /// return which of the children cells should be considered std::pair use(cell& parent, const cell& first_child, const cell& second_child) const; /// return true, if the leaf cell should be considered bool use(cell& leaf) const; /// The random number generator to be used Random rnd_gen; /// Whether or not compensation is needed bool compensate; }; /// \brief selector selecting only bins /// which contain the given parameter point class parametric_selector { public: /// the default constructor parametric_selector () : point_(), sampled_variables_() {} /// construct from reference to point and flags to sample variables parametric_selector(std::vector * point, const std::vector& sample) : point_(point), sampled_variables_(sample) {} public: /// return which of the children cells should be considered std::pair use(const cell& parent, const cell&, const cell&) const; /// return true, if the leaf cell should be considered bool use(const cell&) const { return true; } private: /// the point chosen std::vector * point_; /// flags for variables to be sampled std::vector sampled_variables_; }; /// \brief sampling selector selecting only bins /// which contain the given parameter point template class parametric_sampling_selector { public: /// the default constructor parametric_sampling_selector() : point_(), bin_id_(), sampled_variables_(), rnd_gen_(), compensate_(false) {} /// construct from reference to point, subtree hash, flags of /// variables to be sampled, and random number generator parametric_sampling_selector(std::vector * p, bit_container * bin_id, const std::vector& sample, const Random& rnd_gen) : point_(p), bin_id_(bin_id), sampled_variables_(sample), rnd_gen_(rnd_gen), compensate_(false) {} public: /// return which of the children cells should be considered std::pair use(cell& parent, const cell& first_child, const cell& second_child) const; /// return true, if the leaf cell should be considered bool use(cell& leaf) const; /// indicate that compensation is to take place void compensate (bool doit = true) { compensate_ = doit; } private: /// the point chosen std::vector * point_; /// the corresponding bin id bit_container * bin_id_; /// flags for variables to be sampled std::vector sampled_variables_; /// the random number generator Random rnd_gen_; /// wether or not compensation is needed bool compensate_; }; /// \brief accessor returning the integral of a cell struct integral_accessor { /// update and return the value double& set(cell& node) const { return node.integral(); } /// get the value double get(const cell& node, bool) const { return node.integral(); } }; /// \brief accessor returning the number of missing events struct missing_accessor { /// update and return the value int& set(cell& node) const { return node.missing_events(); } /// get the value int get(const cell& node, bool) const { return node.missing_events(); } }; /// \brief accessor returning the number of missing events /// for given parameter bin id struct parametric_missing_accessor { /// the default constructor parametric_missing_accessor () : id_() {} /// construct from subtree hash to consider explicit parametric_missing_accessor (bit_container* id) : id_ (id) {} /// update and return the value int& set(cell& node) const { return node.missing_events(); } /// get the value int get(const cell& node, bool isleaf) const { if (isleaf) return node.info().parametric_missing(*id_); return node.missing_events(); } private: /// the subtree hash to consider bit_container* id_; }; } #include "selectors.icc" #endif // EXSAMPLE_selectors_h_included herwig++-2.6.0.orig/Exsample2/exsample/binary_tree.h0000644000175000017500000005220111754720726023120 0ustar sylvestresylvestre// -*- C++ -*- // // binary_tree.h is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // #ifndef EXSAMPLE_binary_tree_h_included #define EXSAMPLE_binary_tree_h_included #include "utility.h" namespace exsample { /// \brief binary_tree represents a binary tree with the ability to /// `cascade' visitor objects down the tree template class binary_tree { public: ///@name type definitions //@{ /// define the object type typedef Value value_type; //@} public: ///@name constructors //@{ /// default constructor binary_tree() : neighbours_(0,0), parent_(0), value_(), children_() { } /// construct giving key/cell and parent binary_tree(const value_type& thevalue, binary_tree * theparent = 0) : neighbours_(0,0), parent_(theparent), value_(new value_type(thevalue)), children_() { } /// binary_tree has a strict ownership; on copying /// binary trees ownership is transferred binary_tree(const binary_tree& x) : neighbours_(x.neighbours_), parent_(x.parent_), value_(), children_() { assert(x.root()); binary_tree& nc_x = const_cast(x); value_.swap(nc_x.value_); children_.first.swap(nc_x.children_.first); children_.second.swap(nc_x.children_.second); nc_x.parent_ = 0; nc_x.neighbours_.first = 0; nc_x.neighbours_.second = 0; } /// binary_tree has a strict ownership; on copying /// binary trees ownership is transferred binary_tree& operator=(const binary_tree& x) { if (this == &x) return *this; assert(x.root()); binary_tree& nc_x = const_cast(x); value_.swap(nc_x.value_); children_.first.swap(nc_x.children_.first); children_.second.swap(nc_x.children_.second); neighbours_ = x.neighbours_; parent_ = x.parent_; nc_x.parent_ = 0; nc_x.neighbours_.first = 0; nc_x.neighbours_.second = 0; return *this; } //@} ///@name standard-conforming leaf iterators //@{ public: class const_iterator; /// iterator class iterator { public: ///@name type definitions for iterator traits //@{ /// define the iterator category typedef std::bidirectional_iterator_tag iterator_category; /// define the difference_type typedef int difference_type; /// define the value type typedef Value value_type; /// define the reference type typedef value_type& reference; /// define the pointer type typedef value_type * pointer; //@} public: ///@name constructors //@{ /// default constructor iterator() : pointee(0), post_end(0), pre_begin(0) { } /// constructor taking pointee iterator(binary_tree * p, std::size_t end = 0) : pointee(p), post_end(end), pre_begin(0) { } //@ public: ///@name comparisons //@{ /// comparison bool operator==(const iterator& x) const { return ((pointee == x.pointee) && (post_end == x.post_end) && (pre_begin == x.pre_begin)); } /// comparison bool operator!=(const iterator& x) const { return !(*this == x); } //@} public: ///@name derefrence and indirection //@{ /// dereference reference operator*() { return pointee->value(); } /// indirection pointer operator->() { return &**this; } /// return reference to the node binary_tree& node() { return *pointee; } //@} /// return raw pointer to the element pointed to binary_tree * get() const { return pointee; } ///@name biderectional iterator increment/decrements //@{ /// pre-increment iterator& operator++() { if (post_end) { ++post_end; return *this; } if (pre_begin) { --pre_begin; return *this; } if(!(pointee->right_neighbour())) { post_end = 1; return *this; } pointee = pointee->right_neighbour(); return *this; } /// pre-decrement iterator& operator--() { if (post_end) { --post_end; return *this; } if (pre_begin) { ++pre_begin; return *this; } if(!(pointee->left_neighbour())) { pre_begin = 1; return *this; } pointee = pointee->left_neighbour(); return *this; } /// post-increment iterator operator++(int) { iterator tmp = *this; ++(*this); return tmp; } /// post-decrement iterator operator--(int) { iterator tmp = *this; --(*this); return tmp; } //@} private: /// friend for conversion friend class const_iterator; /// the node pointed to binary_tree * pointee; /// the distance from --end() (if above --end()) std::size_t post_end; /// the distance from begin() (if below begin()) std::size_t pre_begin; }; /// return begin iterator iterator begin() { return iterator(left_most()); } /// return end iterator iterator end() { return iterator(right_most(),1); } /// return global begin iterator iterator global_begin() { if (!root()) return parent().global_begin(); return iterator(left_most()); } /// return global end iterator iterator global_end() { if (!root()) return parent().global_end(); return iterator(right_most(),1); } /// const_iterator class const_iterator { public: ///@name type definitions for iterator traits //@{ /// define the iterator category typedef std::bidirectional_iterator_tag iterator_category; /// define the difference type typedef int difference_type; /// define the value type typedef const Value value_type; /// define the reference type typedef const value_type& reference; /// define the pointer type typedef const value_type * pointer; //@} public: ///@name constructors //@{ /// default constructor const_iterator() : pointee(0), post_end(0), pre_begin(0) { } /// constructor taking pointee const_iterator(binary_tree * p, std::size_t end = 0) : pointee(p), post_end(end), pre_begin(0) { } /// conversion from iterator const_iterator(const iterator& x) : pointee(x.pointee), post_end(x.post_end), pre_begin(x.pre_begin) { } //@} public: ///@name comparisons //@{ /// comparison bool operator==(const const_iterator& x) const { return ((pointee == x.pointee) && (post_end == x.post_end) && (pre_begin == x.pre_begin)); } /// comparison bool operator!=(const const_iterator& x) const { return !(*this == x); } //@} public: ///@name dereference and indirection //@{ /// dereference reference operator*() const { return pointee->value(); } /// indirection pointer operator->() const { return &**this; } /// return reference to the node const binary_tree& node() const { return *pointee; } //@} ///@name biderectional iterator increment/decrements //@{ /// pre-increment const_iterator& operator++() { if (post_end) { ++post_end; return *this; } if (pre_begin) { --pre_begin; return *this; } if(!(pointee->right_neighbour())) { post_end = 1; return *this; } pointee = pointee->right_neighbour(); return *this; } /// pre-decrement const_iterator& operator--() { if (post_end) { --post_end; return *this; } if (pre_begin) { ++pre_begin; return *this; } if(!(pointee->left_neighbour())) { pre_begin = 1; return *this; } pointee = pointee->left_neighbour(); return *this; } /// post-increment const_iterator operator++(int) { const_iterator tmp = *this; ++(*this); return tmp; } /// post-decrement const_iterator operator--(int) { const_iterator tmp = *this; --(*this); return tmp; } //@} private: /// the node pointed to binary_tree * pointee; /// the distance from --end() (if above --end()) std::size_t post_end; /// the distance from begin() (if below begin()) std::size_t pre_begin; }; /// return begin const_iterator const_iterator begin() const { return const_iterator(left_most()); } /// return end const_iterator const_iterator end() const { return const_iterator(right_most(),1); } /// return global begin iterator const_iterator global_begin() const { if (!root()) return parent().global_begin(); return iterator(left_most()); } /// return global end iterator const_iterator global_end() const { if (!root()) return parent().global_end(); return iterator(right_most(),1); } private: /// set the left neighbour void left_neighbour(binary_tree * n) { neighbours_.first = n; } /// set the right neighbour void right_neighbour(binary_tree * n) { neighbours_.second = n; } /// get the left neighbour binary_tree * left_neighbour() const { return neighbours_.first; } /// get the right neighbour binary_tree * right_neighbour() const { return neighbours_.second; } /// return the left-most leaf binary_tree * left_most() { if(leaf()) return this; return left_child().left_most(); } /// return the right-most leaf binary_tree * right_most() { if(leaf()) return this; return right_child().right_most(); } /// return the left-most leaf const binary_tree * left_most() const { if(leaf()) return this; return left_child().left_most(); } /// return the right-most leaf const binary_tree * right_most() const { if(leaf()) return this; return right_child().right_most(); } /// the iterator is a good friend friend class binary_tree::iterator; /// the iterator is a good friend friend class binary_tree::const_iterator; /// the left and right neighbours of this node std::pair neighbours_; //@} public: /// return true, if this node is empty bool empty() const { return root() && leaf() && !value_; } /// clear this node void clear() { neighbours_ = std::make_pair(0,0); parent_ = 0; value_.reset(0); if (!leaf()) { left_child().clear(); right_child().clear(); } children_.first.reset(0); children_.second.reset(0); } public: /// split this node std::pair split(std::pair children) { assert(leaf()); children_.first.reset(new binary_tree(children.first,this)); children_.second.reset(new binary_tree(children.second,this)); children_.first->left_neighbour(neighbours_.first); children_.first->right_neighbour(children_.second.get()); children_.second->left_neighbour(children_.first.get()); children_.second->right_neighbour(neighbours_.second); // adjust original neighbours if(neighbours_.first) { neighbours_.first->right_neighbour(children_.first.get()); } if (neighbours_.second) { neighbours_.second->left_neighbour(children_.second.get()); } neighbours_.first = 0; neighbours_.second = 0; return std::make_pair(iterator(children_.first.get()),iterator(children_.second.get())); } public: /// select using a selector template iterator select(const Selector& selector) { if(leaf()) { bool use = selector.use(value()); if (use) return iterator(this); return global_end(); } std::pair which(selector.use(value(),left_child().value(),right_child().value())); assert(!which.first || !which.second); if (!which.first && !which.second) { return global_end(); } if (which.first) { return left_child().select(selector); } else { return right_child().select(selector); } return global_end(); } /// generate a hash value for the sub-tree /// selected by the given selector object template void subtree_hash(const Selector& selector, bit_container& bhash) { bhash = bit_container(); unsigned long pos = 0; do_subtree_hash(selector,bhash,pos); } /// accumulate values using a binary function /// and accessor object template typename BinaryOp::result_type accumulate(const Accessor& acc, BinaryOp binary_op) const { if (!leaf()) { return binary_op(left_child().accumulate(acc,binary_op), right_child().accumulate(acc,binary_op)); } return acc.get(value(),true); } /// accumulate values only from branches /// matching a Selector template typename BinaryOp::result_type accumulate(const Selector& selector, const Accessor& acc, BinaryOp binary_op) const { if (!leaf()) { std::pair which(selector.use(value(),left_child().value(),right_child().value())); assert(which.first || which.second); if (which.first && which.second) { return binary_op(left_child().accumulate(selector,acc,binary_op), right_child().accumulate(selector,acc,binary_op)); } else if (which.first) { return left_child().accumulate(selector,acc,binary_op); } else if (which.second) { return right_child().accumulate(selector,acc,binary_op); } } return acc.get(value(),true); } /// accumulate values using a binary function /// and accessor object, storing intermediate /// values in nodes template typename BinaryOp::result_type tree_accumulate(const Accessor& acc, BinaryOp binary_op) { if (!leaf()) { acc.set(value()) = binary_op(left_child().tree_accumulate(acc,binary_op), right_child().tree_accumulate(acc,binary_op)); return acc.get(value(),false); } acc.set(value()) = acc.get(value(),true); return acc.get(value(),true); } /// accumulate values only from branches /// matching a Selector template typename BinaryOp::result_type tree_accumulate(const Selector& selector, const Accessor& acc, BinaryOp binary_op) { if (!leaf()) { std::pair which(selector.use(value(),left_child().value(),right_child().value())); assert(which.first || which.second); if (which.first && which.second) { acc.set(value()) = binary_op(left_child().tree_accumulate(selector,acc,binary_op), right_child().tree_accumulate(selector,acc,binary_op)); } else if (which.first) { acc.set(value()) = left_child().tree_accumulate(selector,acc,binary_op); } else if (which.second) { acc.set(value()) = right_child().tree_accumulate(selector,acc,binary_op); } return acc.get(value(),false); } acc.set(value()) = acc.get(value(),true); return acc.get(value(),true); } /// forward propagate a visitor to all children nodes template void cascade(Visitor visitor) const { if (leaf()) { visitor.visit(value()); return; } else visitor.visit(value(),left_child().value(),right_child().value()); left_child().cascade(visitor); right_child().cascade(visitor); } /// succesively split using a generator template void generate(Generator generator) { if (root()) value_.reset(new value_type(generator.root())); if (generator.split()) { std::pair ch = split(generator.generate(value())); ch.first.node().generate(generator); ch.second.node().generate(generator); } } public: ///@name Public member access //@{ /// return the value held by this node value_type& value() { return *value_; } /// return the value held by this node const value_type& value() const { return *value_; } /// return true, if this is the root node bool root() const { return !parent_; } /// return true, if this node has got children bool leaf() const { return !(children_.first.get() && children_.second.get()); } //@} public: ///@name put and get from streams //@{ /// forward visitor writing out the tree to given ostream template struct ostream_visitor { /// construct from ostream reference explicit ostream_visitor(OStream& os) : os_(&os), first_time_(true) {} /// visit a leaf node void visit(const value_type&) { (*os_) << "end_branch"; ostream_traits::separator(*os_); } /// visit a branching void visit(const value_type& parent, const value_type& left, const value_type& right) { if (first_time_) { (*os_) << "root_node"; ostream_traits::separator(*os_); parent.put(*os_); first_time_ = false; } (*os_) << "left_child"; ostream_traits::separator(*os_); left.put(*os_); (*os_) << "right_child"; ostream_traits::separator(*os_); right.put(*os_); } private: /// pointer to the ostream to write to OStream* os_; /// whether we are at the or not bool first_time_; }; /// generator reading binary tree from istream template struct istream_generator { /// construct from istream reference explicit istream_generator(IStream& is) : is_(&is), children_(), tag_("") {} /// copy constructor istream_generator(const istream_generator& x) : is_(x.is_), children_(), tag_("") {} /// read the root node value_type root() { *is_ >> tag_; assert(tag_ == "root_node"); value_type rnode; rnode.get(*is_); return rnode; } /// read children nodes bool split() { *is_ >> tag_; if (tag_ == "end_branch") { return false; } assert (tag_ == "left_child"); children_.first.get(*is_); *is_ >> tag_; assert(tag_ == "right_child"); children_.second.get(*is_); return true; } /// return the children generated std::pair generate(const value_type&) { return children_; } /// initialize a leaf void initialize_leaf(const value_type&) {} private: /// pointer to the istream used IStream* is_; /// the children currently handled std::pair children_; /// temporary storage for tags std::string tag_; }; /// put to ostream template void put(OStream& os) const { if (empty()) { os << "empty"; ostream_traits::separator(os); return; } else if (root() && leaf()) { os << "root_only"; ostream_traits::separator(os); value().put(os); return; } else { os << "non_empty"; ostream_traits::separator(os); } assert(root()); cascade(ostream_visitor(os)); } /// get from istream template void get(IStream& is) { std::string state; is >> state; if (state == "empty") { return; } if (state == "root_only") { value_.reset(new value_type()); value().get(is); return; } assert(empty()); generate(istream_generator(is)); } //@} private: /// calculate hash value template void do_subtree_hash(const Selector& selector, bit_container& current, unsigned long& position, bool selected = true) const { if (!leaf()) { std::pair which(false,false); if (selected) which = selector.use(value(),left_child().value(),right_child().value()); current.bit(position,which.first); current.bit(position+1,which.second); position += 2; left_child().do_subtree_hash(selector,current,position,which.first && selected); right_child().do_subtree_hash(selector,current,position,which.second && selected); } } private: ///@name private member access //@{ /// return the parent of this node binary_tree& parent() { assert(parent_); return *parent_; } /// return the parent of this node const binary_tree& parent() const { assert(parent_); return *parent_; } /// return the left child of this node binary_tree& left_child() { assert(children_.first.get()); return *children_.first; } /// return the left child of this node const binary_tree& left_child() const { assert(children_.first.get()); return *children_.first; } /// return the right child of this node binary_tree& right_child() { assert(children_.second.get()); return *children_.second; } /// return the right child of this node const binary_tree& right_child() const { assert(children_.second.get()); return *children_.second; } //@} private: /// the parent of this node binary_tree * parent_; /// the cell held by this node boost::scoped_ptr value_; /// the children of this node std::pair, boost::scoped_ptr > children_; }; } #endif // EXSAMPLE_binary_tree_h_included herwig++-2.6.0.orig/Exsample2/exsample/config.h0000644000175000017500000000173311754474774022077 0ustar sylvestresylvestre// -*- C++ -*- // // config.h is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // #ifndef EXSAMPLE_config_h_included #define EXSAMPLE_config_h_included #include #include #include #include #include #include #include #include #include #include #include #include #include #define EXSAMPLE_has_ThePEG #ifdef EXSAMPLE_has_ThePEG #include "ThePEG/Persistency/PersistentOStream.h" #endif // EXSAMPLE_has_ThePEG namespace exsample { static const unsigned long parameter_hash_bits = 512; using boost::next; using boost::prior; } #endif // EXSAMPLE_config_h_included herwig++-2.6.0.orig/Exsample2/exsample/adaption_info.icc0000644000175000017500000000372411754474774023755 0ustar sylvestresylvestre// -*- C++ -*- // // adaption_info.icc is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // namespace exsample { template void adaption_info::put(OStream& os) const { os << dimension; ostream_traits::separator(os); for (std::size_t k = 0; k < dimension; ++k) { os << lower_left[k]; ostream_traits::separator(os); } for (std::size_t k = 0; k < dimension; ++k) { os << upper_right[k]; ostream_traits::separator(os); } os << presampling_points; ostream_traits::separator(os); os << histo_depth; ostream_traits::separator(os); for (std::size_t k = 0; k < dimension; ++k) { os << adapt[k]; ostream_traits::separator(os); } os << freeze_grid; ostream_traits::separator(os); os << maxtry; ostream_traits::separator(os); os << efficiency_threshold; ostream_traits::separator(os); os << gain_threshold; ostream_traits::separator(os); } template void adaption_info::get(IStream& is) { is >> dimension; lower_left.resize(dimension); upper_right.resize(dimension); adapt.resize(dimension); for (std::size_t k = 0; k < dimension; ++k) { is >> lower_left[k]; } for (std::size_t k = 0; k < dimension; ++k) { is >> upper_right[k]; } is >> presampling_points >> histo_depth; for (std::size_t k = 0; k < dimension; ++k) { // strange. is >> adapt[k] // gives: warning: value computet is not used // with gcc 4.2.1 bool v; is >> v; adapt[k] = v; } is >> freeze_grid >> maxtry >> efficiency_threshold >> gain_threshold; } } herwig++-2.6.0.orig/Exsample2/exsample/linear_interpolator.icc0000644000175000017500000000705311754474774025216 0ustar sylvestresylvestre// -*- C++ -*- // // linear_interpolator.icc is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // namespace exsample { inline linear_interpolator::linear_interpolator() : interpolation_(), range_() {} inline linear_interpolator::linear_interpolator(const std::map& points) : interpolation_(points) { reset(); } inline void linear_interpolator::set_interpolation(double point, double value) { interpolation_[point] = value; if (value > range_.second) range_.second = value; if(value < range_.first) range_.first = value; } inline void linear_interpolator::reset() { range_.first = interpolation_.begin()->second; range_.second = interpolation_.begin()->second; for (std::map::const_iterator c = interpolation_.begin(); c != interpolation_.end(); ++c) { if (c->second < range_.first) range_.first = c->second; if (c->second > range_.second) range_.second = c->second; } } inline double linear_interpolator::operator()(double x) const { std::map::const_iterator upper = interpolation_.upper_bound(x); if (upper == interpolation_.end()) { upper = interpolation_.upper_bound(x-1e-10); } if (upper == interpolation_.end()) { upper = interpolation_.upper_bound(x+1e-10); } assert(upper != interpolation_.begin() && upper != interpolation_.end()); return ((upper->second-prior(upper)->second)*x + prior(upper)->second*upper->first - upper->second*prior(upper)->first)/ (upper->first - prior(upper)->first); } inline double linear_interpolator::unique_inverse(double f) const { if(!invertible(f)) throw inversion_has_no_solution(); std::map::const_iterator lower = interpolation_.begin(); bool gotone = false; for (; lower != --interpolation_.end(); ++lower) if ((lower->second >= f && next(lower)->second <= f) || (lower->second <= f && next(lower)->second >= f)) { gotone = true; break; } if(!gotone) throw inversion_has_no_solution(); if (lower->second == next(lower)->second) { throw constant_interpolation(lower->first,next(lower)->first,lower->second); } double xdiff = next(lower)->first - lower->first; double wdiff = next(lower)->second - lower->second; double woffset = lower->second * next(lower)->first - next(lower)->second * lower->first; return (xdiff/wdiff)*(f - woffset/xdiff); } template void linear_interpolator::put(OStream& os) const { os << interpolation_.size(); ostream_traits::separator(os); for (std::map::const_iterator p = interpolation_.begin(); p != interpolation_.end(); ++p) { os << p->first; ostream_traits::separator(os); os << p->second; ostream_traits::separator(os); } os << range_.first; ostream_traits::separator(os); os << range_.second; ostream_traits::separator(os); } template void linear_interpolator::get(IStream& is) { std::size_t size; is >> size; std::pair point; for (std::size_t k = 0; k < size; ++k) { is >> point.first >> point.second; interpolation_.insert(point); } is >> range_.first >> range_.second; } } herwig++-2.6.0.orig/Exsample2/exsample/cell.h0000644000175000017500000002045411754474774021552 0ustar sylvestresylvestre// -*- C++ -*- // // cell.h is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // #ifndef EXSAMPLE_cell_h_included #define EXSAMPLE_cell_h_included #include "utility.h" #include "adaption_info.h" #include "statistics.h" namespace exsample { /// \brief Information contained in a leaf cell class cell_info { public: /// the default constructor cell_info(); /// construct from boundaries and adaption info cell_info(const std::vector& ll, const std::vector& ur, const adaption_info& ainfo); /// construct from boundaries, flags for variables to be sampled, /// and adaption info cell_info(const std::vector& ll, const std::vector& ur, const std::vector& sampled_variables, const adaption_info& ainfo); public: /// generate a flat trial point in this cell template void select(Random&, std::vector&); /// generate a flat trial point in this cell /// only for the variables falgged as true template void select(Random&, std::vector&, const std::vector&); /// indicate a function value for the given point void selected(const std::vector&, double, const adaption_info&); /// indicate that a point has been /// accepted in this cell void accept() { ++accepted_; } /// reject a previously accepted event void reject() { --accepted_; } public: /// return true, if below efficiency threshold bool bad(const adaption_info& ainfo) const { return ((static_cast(accepted_)/static_cast(attempted_)) < ainfo.efficiency_threshold); } /// suggest a split and indicate wether it is worth /// to be performed std::pair get_split(const adaption_info&, bool&) const; /// explore this cell performing a flat sampling, /// updating the given statistics object and pre-filling /// the efficiency histogram by a trial unweighting template void explore(Random&, const adaption_info&, Function*, statistics*, SlaveStatistics& opt); /// explore this cell in a more refined way, which /// is however not suited for already calculating integrals /// and stuff template void explore(Random&, const adaption_info&, Function*); public: /// get the current overestimate double overestimate() const { return overestimate_; } /// return the position of the last maximum const std::vector& last_max_position() const { return last_max_position_; } /// set the current overestimate and maximum position void overestimate(double v, const std::vector& pos) { overestimate_ = v; last_max_position_ = pos; } /// get the volume double volume() const { return volume_; } /// get the lower left corner const std::vector& lower_left() const { return lower_left_; } /// get the upper right corner const std::vector& upper_right() const { return upper_right_; } /// get the number of attempted events unsigned long attempted() const { return attempted_; } /// get the number of accepted events unsigned long accepted() const { return accepted_; } public: /// return the number of missing events /// for the given parameter bin id int parametric_missing(const bit_container& id) const; /// set the number of missing events /// for the given parameter bin id void parametric_missing(const bit_container& id, int n); /// increase to the number of missing events /// for the given parameter bin id void increase_parametric_missing(const bit_container& id); /// decrease to the number of missing events /// for the given parameter bin id void decrease_parametric_missing(const bit_container& id); /// return true, if the cell is compensating in /// at least one parameter bin bool parametric_compensating() const { return !parametric_missing_map_.empty(); } /// return true, if the cell contains the /// indicated parameter point bool contains_parameter(const std::vector& point, const std::vector& sampled) const; public: /// put to ostream template void put(OStream& os) const; /// get from istream template void get(IStream& is); private: /// the value of the overestimate in this cell double overestimate_; /// the volume of this cell double volume_; /// the lower left corner of this cell std::vector lower_left_; /// the upper right corner of this cell std::vector upper_right_; /// midpoint of this cell std::vector mid_point_; /// the position of the last encountered /// maximum in this cell std::vector last_max_position_; /// left-right statistics of average weight std::vector > avg_weight_; /// the number of attempts in this cell unsigned long attempted_; /// the number of accepted events in this cell unsigned long accepted_; /// an optional map of parameter bin ids /// to the number of missing events std::map,int> parametric_missing_map_; }; /// \brief the general cell class class cell { public: /// default constructor cell(); /// construct from boundaries and adaption info cell(const std::vector& ll, const std::vector& ur, const adaption_info& ainfo); /// construct from boundaries, flags for variables to be sampled, /// and adaption info cell(const std::vector& ll, const std::vector& ur, const std::vector& sampled_variables, const adaption_info& ainfo); /// copy constructor cell(const cell& x); /// assignment cell& operator=(const cell& x); public: /// split this cell, exploring the /// child not containing the current overestimate template std::pair split(std::pair split_d, Random& rnd_gen, Function* f, const adaption_info& ainfo, const std::vector& sampled = std::vector()); public: /// return the split dimension std::size_t split_dimension() const { return split_dimension_; } /// return the split value double split_point() const { return split_point_; } /// return the integral double integral() const { return integral_; } /// access the integral double& integral() { return integral_; } /// set the integral void integral(double v) { integral_ = v; } /// access the number of missing events int& missing_events() { return missing_events_; } /// return the number of missing events int missing_events() const { return missing_events_; } /// set the number of missing events void missing_events(int n) { missing_events_ = n; } /// access the cell_info object cell_info& info() { assert(cell_info_); return *cell_info_; } /// return the cell_info object const cell_info& info() const { assert(cell_info_); return *cell_info_; } public: /// put to ostream template void put(OStream& os) const; /// get from istream template void get(IStream& is); private: /// the dimension along this cell /// was split std::size_t split_dimension_; /// the value, where this cell was split double split_point_; /// the integral of the absolute value /// of the overestimate over all the /// children cells double integral_; /// the number of missing events in this cell int missing_events_; /// a pointer to the cell info object, /// if this is a leaf cell boost::scoped_ptr cell_info_; }; } #include "cell.icc" #endif // EXSAMPLE_cell_h_included herwig++-2.6.0.orig/Exsample2/exsample/statistics.h0000644000175000017500000001011611754474774023017 0ustar sylvestresylvestre// -*- C++ -*- // // statistics.h is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // #ifndef EXSAMPLE_statistics_h_included #define EXSAMPLE_statistics_h_included #include "utility.h" namespace exsample { /// \brief statistics is a helper class for keeping track of event /// generation statistics. class statistics { public: /// default constructor statistics(); /// update the statistics for a weight encountered during /// presampling void presampled(double weight); /// indicate that a weight has been selected; optionally preven /// the weight from entering the caluclation of the integral void select(double weight, bool calculate_integral = true); /// indicate that a point has been accepted void accept(double weight) { ++accepted_; if (weight < 0) ++accepted_negative_; } /// reject a prviously accepted event void reject(double weight) { --accepted_; if (weight < 0) --accepted_negative_; } /// reset the statistics object void reset(); /// return the integral's estimate and its uncertainty at the /// currently accumulated statistics std::pair current() const; /// the average weight double average_weight() const { return (n_iterations_ == 0 ? 0. : average_weight_/n_iterations_); } /// the average absolute weight double average_abs_weight() const { return (n_iterations_ == 0 ? 0. : average_abs_weight_/n_iterations_); } /// the variance of the weight double average_weight_variance() const { return (n_iterations_ == 0 ? 0. : average_weight_variance_/n_iterations_); } /// the number of points in this iteration unsigned long iteration_points() const { return iteration_points_; } /// the number of iterations unsigned long n_iterations() const { return n_iterations_; } /// the total number of attempted in this bin unsigned long attempted() const { return attempted_; } /// the total number of finally accepted events in this bin unsigned long accepted() const { return accepted_; } /// the total number of acceptet events with negative weights unsigned long accepted_negative() const { return accepted_negative_; } /// the sum of weights double sum_weights() const { return sum_weights_; } /// the sum of absolute values of the weights double sum_abs_weights() const { return sum_abs_weights_; } /// the sum of weights squared double sum_weights_squared() const { return sum_weights_squared_; } /// the maximum weight double max_weight() const { return max_weight_; } public: /// put ostream template void put(OStream& os) const; /// get from istream template void get(IStream& is); private: /// the average weight double average_weight_; /// the average absolute weight double average_abs_weight_; /// the variance of the weight double average_weight_variance_; /// the number of points in this iteration unsigned long iteration_points_; /// the total number of attempted in this bin unsigned long attempted_; /// the total number of finally accepted events in this bin unsigned long accepted_; /// the total number of acceptet events with negative weights unsigned long accepted_negative_; /// the sum of weights double sum_weights_; /// the sum of absolute values of the weights double sum_abs_weights_; /// the sum of weights squared double sum_weights_squared_; /// the maximum weight double max_weight_; /// the number of iterations used to calculate the integral unsigned long n_iterations_; }; } #include "statistics.icc" #endif // EXSAMPLE_statistics_h_included herwig++-2.6.0.orig/Exsample2/exsample/utility.h0000644000175000017500000002037211754474774022335 0ustar sylvestresylvestre// -*- C++ -*- // // utility.h is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // #ifndef EXSAMPLE_utility_h_included #define EXSAMPLE_utility_h_included #include "config.h" namespace exsample { /// \brief Compile time conversion of unsigned long to bool template struct static_binary { enum { value = 1 }; }; /// \brief Compile time conversion of unsigned long to bool template<> struct static_binary<0> { enum { value = 0 }; }; /// \brief Fixed-size, packed vector of bools template struct bit_container { enum { /// the number of bits contained n_bits = bits, /// the number of bits fitting in a unsigned long uint_bits = CHAR_BIT * sizeof(unsigned long), /// the number of unsigned long segments needed n_segments = bits / uint_bits + static_binary::value }; /// the default constructor bit_container() { for (std::size_t i = 0; i < n_segments; ++i) segments[i] = 0; } /// put all values to false void reset() { for (std::size_t i = 0; i < n_segments; ++i) segments[i] = 0; } /// compare for equality bool operator==(const bit_container& x) const { for (std::size_t i = 0; i < n_segments; ++i) if(segments[i] != x.segments[i]) return false; return true; } /// compare for ordering bool operator<(const bit_container& x) const { for (std::size_t i = 0; i < n_segments; ++i) if(segments[i] != x.segments[i]) return (segments[i] < x.segments[i]); return false; } /// set the k'th bit void bit(unsigned long k, bool value) { assert(k void dump(OStream& os) const { for ( unsigned int k = 0; k < n_segments; ++k ) os << segments[k] << " "; } private: /// segments needed to keep the hash value unsigned long segments[n_segments]; }; /// \brief square a number template T sqr(T x) { return x*x; } /// \brief cube a number template T cube(T x) { return x*x*x; } /// \brief Round a floating point value to an integer value of the /// same type. template T round(T x) { T f = std::floor(x); T c = std::ceil(x); if (x < (f+c)/2.) return f; return c; } /// \brief Calculate fast powers of two. inline std::size_t two_to(std::size_t n) { assert(n <= sizeof(std::size_t)*CHAR_BIT); return (1 << n); } /// \brief separate quantities written to an ostream template struct ostream_traits { /// put the separator to the ostream static void separator(OStream& os) { os << "\n"; } }; #ifdef EXSAMPLE_has_ThePEG /// \brief separate quantities written to a ThePEG::PersistentOStream template<> struct ostream_traits { /// put the separator to the ostream static void separator(ThePEG::PersistentOStream&) { } }; #endif // EXSAMPLE_has_ThePEG /// \brief Fast, zero memory-overhead one-dimensional /// histogram with 2^n equally spaced bins template struct fast_small_histogram { /// default constructor fast_small_histogram() : depth(0), bins(0) {} /// copy constructor fast_small_histogram(const fast_small_histogram& x) : depth(x.depth), bins(0) { if (x.bins) { bins.reset(new Statistics[two_to(depth)]); for(std::size_t k = 0; k < two_to(depth); ++k) bins[k] = x.bins[k]; } } /// assignment fast_small_histogram& operator=(const fast_small_histogram& x) { if (&x == this) return *this; depth = x.depth; bins.reset(0); if (x.bins) { bins.reset(new Statistics[two_to(depth)]); for(std::size_t k = 0; k < two_to(depth); ++k) bins[k] = x.bins[k]; } return *this; } /// construct from depth d, creating 2^d bins explicit fast_small_histogram(std::size_t d) : depth(d), bins(0) { bins.reset(new Statistics[two_to(d)]); } /// return the bin from event belongs to given outer boundaries Statistics& bin(double lower, double upper, double event) { double thelower = lower; double theupper = upper; std::size_t bindex = 0; std::size_t current_depth = 0; while (true) { double cut = (thelower+theupper)/2.; if (event < cut) { theupper = cut; } else { thelower = cut; bindex += two_to(depth-current_depth-1); } if(++current_depth == depth) break; } return bins[bindex]; } /// the depth, defining a histogram of 2^depth bins std::size_t depth; /// the contained statistics objects boost::scoped_array bins; /// put histogram to an ostream template void put(OStream& os) const { os << depth; ostream_traits::separator(os); for (std::size_t k = 0; k < two_to(depth); ++k) { bins[k].put(os); } } /// get histogram from an istream template void get(IStream& is) { is >> depth; bins.reset(new Statistics[two_to(depth)]); for(std::size_t k = 0; k < two_to(depth); ++k) { bins[k].get(is); } } }; /// \brief Generalize the transform algorithm to only apply /// depending on a range of flags accompanying the input range template OutputIterator conditional_transform(FirstInputIterator first1, FirstInputIterator last1, SecondInputIterator first2, FlagIterator firstf, OutputIterator result, BinaryOperation binary_op) { for (; first1 != last1; ++first1, ++first2, ++firstf, ++result) if (*firstf) *result = binary_op(*first1, *first2); return result; } /// \brief calculate a volume given lower left and upper right /// corners inline double volume(const std::vector& lower_left, const std::vector& upper_right) { std::vector delta; std::transform(upper_right.begin(),upper_right.end(), lower_left.begin(),std::back_inserter(delta), std::minus()); return std::accumulate(delta.begin(),delta.end(),1.,std::multiplies()); } /// \brief calculate a volume given lower left and upper right /// corners, taking into account only part of the dimensions, which /// are flagged with true in the correspponding random access /// container inline double volume(const std::vector& lower_left, const std::vector& upper_right, const std::vector& flags) { std::vector delta; conditional_transform(upper_right.begin(),upper_right.end(), lower_left.begin(),flags.begin(), std::back_inserter(delta), std::minus()); return std::accumulate(delta.begin(),delta.end(),1.,std::multiplies()); } /// \brief Exception thrown if the maximum number of attempts to /// select a cell has been reached. struct selection_maxtry{}; /// \brief Exception thrown, if the maximum number of misses has /// been reached. struct hit_and_miss_maxtry{}; /// \brief Random generator traits. template struct rnd_generator { ///Generate uniform random number on [0,1] double operator()() const { return Random::rnd(); } ///Generate uniform random number on [0,a] double operator()(double a) const { return a*Random::rnd(); } ///Generate uniform random number on [a,b] double operator()(double a, double b) const { return (a + (b-a)*Random::rnd()); } }; } #endif // EXSAMPLE_utility_h_included herwig++-2.6.0.orig/Exsample2/exsample/exponential_generator.h0000644000175000017500000001400511754474774025222 0ustar sylvestresylvestre// -*- C++ -*- // // exponential_generator.h is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // #ifndef EXSAMPLE_exponential_generator_h_included #define EXSAMPLE_exponential_generator_h_included #include "cell.h" #include "selectors.h" #include "statistics.h" #include "linear_interpolator.h" #include "binary_tree.h" namespace exsample { /// \brief Exception thrown, if the exponential_generator has just changed its /// state. The attempt of generating an event should be repeated. struct exponential_regenerate{}; /// \brief The generator for sudakov-type distributions. template class exponential_generator { public: /// default constructor exponential_generator() : function_(0), check_events_(0), adaption_info_(), root_cell_(), rnd_gen_(), did_split_(false), initialized_(false), evolution_variable_(0), evolution_cutoff_(0.), sample_variables_(), sample_other_variables_(), parameter_splits_(), last_cell_(), last_point_(), last_value_(0.), last_parameter_bin_(), exponents_(), last_exponent_integrand_(), last_exponent_(), compensating_(false), integral_accessor_(), missing_accessor_(), parametric_selector_(), exponent_selector_(), parametric_sampler_(), attempts_(0), accepts_(0), splits_(0) {} public: /// initialize this generator void initialize(); /// finalize this generator void finalize() {} /// generate an event, returning /// the sign of the weight or zero /// for an event below the evolution cutoff double generate(); /// return the last sampled phase space point const std::vector& last_point() const { return last_point_; } /// return the last evaluated function double last_value() const { return last_value_; } /// indicate that the last generated point has been rejected void reject() { last_cell_->info().reject(); } public: /// return true, if this generator has been initialized bool initialized() const { return initialized_; } /// return true, if at least one split has been performed bool did_split() const { return did_split_; } /// access the function Function& function() { return *function_; } /// set the function void function(Function * f) { function_ = f; } /// access the adaption_info object adaption_info& sampling_parameters() { return adaption_info_; } private: /// check for and possibly split /// the last selected cell bool split(); /// get the projection of the density integrating over every /// variable to be sampled, except the evolution variable for the /// indicated parameter point. the k'th entry in /// last_exponent_integrand_ is the value in the evolution /// variable bin from evolution_splits_[k] to /// evolution_splits_[k+1] void get_exponent(); /// compensate void compensate(); /// get all parameter points to build /// all possible sub tree hashes std::set > parameter_points(); /// get all parameter points to build /// all possible sub tree hashes void recursive_parameter_points(std::set >&, std::vector&, size_t); /// function to be sampled Function * function_; /// the number of events after which /// a cell is checked for splits unsigned long check_events_; /// the adaption info object adaption_info adaption_info_; /// the root cell binary_tree root_cell_; /// the random number generator to be used rnd_generator rnd_gen_; /// wether a split has already been performed bool did_split_; /// wether this generator has been initialized bool initialized_; /// the position of the evolution variable std::size_t evolution_variable_; /// the cutoff on the evolution variable double evolution_cutoff_; /// flags of variables to be sampled /// including the evolution variable std::vector sample_variables_; /// flags of variables to be sampled /// excluding the evolution variable std::vector sample_other_variables_; /// the splits in any parameter done so far /// (including the evolution variable) std::map > parameter_splits_; /// the last selected cell binary_tree::iterator last_cell_; /// the last sampled phasespace point std::vector last_point_; /// the last function value double last_value_; /// the last parameter bin id bit_container last_parameter_bin_; /// map parameter bin ids to exponent interpolations std::map,linear_interpolator > exponents_; /// the last exponent integrand std::vector last_exponent_integrand_; /// the last exponent std::map,linear_interpolator >::iterator last_exponent_; /// wether or not we are compensating bool compensating_; /// the integral accessor to be used integral_accessor integral_accessor_; /// the missing events accessor to be used parametric_missing_accessor missing_accessor_; /// the parametric selector to be used parametric_selector parametric_selector_; /// the parametric selector to be used for parameter bins parametric_selector exponent_selector_; /// the parametric sampler to be used parametric_sampling_selector > parametric_sampler_; /// the number of trials in the veto loo so far unsigned long attempts_; /// the number of accepted events so far unsigned long accepts_; /// number of splits done unsigned long splits_; }; } #include "exponential_generator.icc" #endif // EXSAMPLE_exponential_generator_h_included herwig++-2.6.0.orig/Exsample2/exsample/generator.h0000644000175000017500000001111711754474774022615 0ustar sylvestresylvestre// -*- C++ -*- // // generator.h is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // #ifndef EXSAMPLE_generator_h_included #define EXSAMPLE_generator_h_included #include "cell.h" #include "selectors.h" #include "statistics.h" #include "binary_tree.h" namespace exsample { /// \brief Exception thrown, if the generator has just changed its /// state. The attempt of generating an event should be repeated. struct generator_update{}; /// \brief A generator for plain sampling and integrating template class generator { public: /// default constructor generator() : function_(0), statistics_(), check_events_(0), adaption_info_(), root_cell_(), rnd_gen_(), did_split_(false), initialized_(false), last_cell_(), last_point_(), last_value_(0.), compensating_(false) {} public: /// initialize this generator template void initialize(SlaveStatistics&); /// generate an event, returning /// the sign of the weight template double generate(SlaveStatistics&); /// return the last sampled phase space point const std::vector& last_point() const { return last_point_; } /// indicate that the last generated point has been rejected void reject() { statistics_.reject(last_value_); last_cell_->info().reject(); } /// finalize this generator void finalize() { statistics_.reset(); } public: /// return true, if this generator has been initialized bool initialized() const { return initialized_; } /// return true, if at least one split has been performed bool did_split() const { return did_split_; } /// access the function Function& function() { return *function_; } /// set the function void function(Function * f) { function_ = f; } /// return the statistics object const statistics& stats() const { return statistics_; } /// return the sampled volume double volume() const { return exsample::volume(adaption_info_.lower_left, adaption_info_.upper_right); } /// return the integral double integral() const { return volume() * statistics_.average_weight(); } /// return the error on the integral double integral_uncertainty() const { return volume() * std::sqrt(statistics_.average_weight_variance()); } /// return the integral double current_integral() const { return volume() * statistics_.current().first; } /// return the error on the integral double current_integral_uncertainty() const { return volume() * std::sqrt(statistics_.current().second); } /// return the variance of the integral estimate double integral_variance() const { return sqr(volume()) * statistics_.average_weight_variance(); } /// access the adaption_info object adaption_info& sampling_parameters() { return adaption_info_; } /// return true, if still compensating bool compensating() const { return compensating_; } public: /// put to ostream template void put(OStream& os) const; /// get from istream template void get(IStream& is); private: /// check for and possibly split /// the last selected cell bool split(); /// compensate the last selected cell indicating the /// value and position of the new overestimate void compensate(); /// function to be sampled Function * function_; /// the global statistics object statistics statistics_; /// the number of events after which /// a cell is checked for splits unsigned long check_events_; /// the adaption info object adaption_info adaption_info_; /// the root cell binary_tree root_cell_; /// the random number generator to be used rnd_generator rnd_gen_; /// wether a split has already been performed bool did_split_; /// wether this generator has been initialized bool initialized_; /// the last selected cell binary_tree::iterator last_cell_; /// the last sampled phasespace point std::vector last_point_; /// the last function value double last_value_; /// wether or not we are compensating bool compensating_; }; } #include "generator.icc" #endif // EXSAMPLE_generator_h_included herwig++-2.6.0.orig/Exsample2/exsample/adaption_info.h0000644000175000017500000000356311754474774023447 0ustar sylvestresylvestre// -*- C++ -*- // // adaption_info.h is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // #ifndef EXSAMPLE_adaption_info_h_included #define EXSAMPLE_adaption_info_h_included namespace exsample { /// \brief adaption_info is a container for parameters relevant to /// sampling and adaption. struct adaption_info { /// the default constructor adaption_info() : dimension(0), lower_left(), upper_right(), presampling_points(100000), histo_depth(2), adapt(), freeze_grid(0), maxtry(200000), efficiency_threshold(.9), gain_threshold(.1) {} /// the phasespace dimension std::size_t dimension; /// the lower left corner of the function's support std::vector lower_left; /// the upper right corner of the function's support std::vector upper_right; /// the number of presampling points unsigned long presampling_points; /// use 2^histo_depth bins in efficiency histograms std::size_t histo_depth; /// indicate which dimensions should be adapted std::vector adapt; /// the number of accepted events after the grid is frozen unsigned long freeze_grid; /// the maximum number of misses allowed unsigned long maxtry; /// the efficiency threshold below which splits are considered double efficiency_threshold; /// a minimum gain for splits to be performed double gain_threshold; /// put to ostream template void put(OStream& os) const; /// get from istream template void get(IStream& is); }; } #include "adaption_info.icc" #endif // EXSAMPLE_adaption_info_h_included herwig++-2.6.0.orig/Exsample2/exsample/cell.icc0000644000175000017500000003157711754474774022071 0ustar sylvestresylvestre// -*- C++ -*- // // cell.icc is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // namespace exsample { template void cell_info::select (Random& rnd_gen, std::vector& p) { std::transform(lower_left_.begin(),lower_left_.end(), upper_right_.begin(),p.begin(), rnd_gen); ++attempted_; } template void cell_info::select (Random& rnd_gen, std::vector& p, const std::vector& sample) { conditional_transform(lower_left_.begin(),lower_left_.end(), upper_right_.begin(),sample.begin(), p.begin(),rnd_gen); ++attempted_; } template void cell_info::explore(Random& rnd_gen, const adaption_info& ainfo, Function* function, statistics* stats, SlaveStatistics& opt) { function->start_presampling(); unsigned long n_sampled = 0; std::vector ll = lower_left_; std::vector ur = upper_right_; double val = 0.; std::vector pos (ll.size()); while (n_sampled < ainfo.presampling_points) { std::transform(ll.begin(),ll.end(), ur.begin(),pos.begin(), rnd_gen); val = function->evaluate(pos); stats->presampled(val); opt.select(val); if (std::abs(val) > std::abs(overestimate_)) { overestimate_ = std::abs(val); last_max_position_ = pos; } selected(pos,std::abs(val),ainfo); ++n_sampled; } function->stop_presampling(); } template void cell_info::explore (Random& rnd_gen, const adaption_info& ainfo, Function* function) { function->start_presampling(); unsigned long n_sampled = 0; std::vector ll = lower_left_; std::vector ur = upper_right_; double val = 0.; std::vector pos (ll.size()); std::vector next_to_largest (ll.size()); while (n_sampled < ainfo.presampling_points) { std::transform(ll.begin(),ll.end(), ur.begin(),pos.begin(), rnd_gen); val = function->evaluate(pos); if (std::abs(val) > std::abs(overestimate_)) { next_to_largest = last_max_position_; overestimate_ = std::abs(val); last_max_position_ = pos; } ++n_sampled; } function->stop_presampling(); } template void cell_info::put (OStream& os) const { os << overestimate_; ostream_traits::separator(os); os << volume_; ostream_traits::separator(os); os << lower_left_.size(); ostream_traits::separator(os); for (std::size_t k = 0; k < lower_left_.size(); ++k) { os << lower_left_[k]; ostream_traits::separator(os); } for (std::size_t k = 0; k < upper_right_.size(); ++k) { os << upper_right_[k]; ostream_traits::separator(os); } for (std::size_t k = 0; k < mid_point_.size(); ++k) { os << mid_point_[k]; ostream_traits::separator(os); } for (std::size_t k = 0; k < last_max_position_.size(); ++k) { os << last_max_position_[k]; ostream_traits::separator(os); } for (std::size_t k = 0; k < avg_weight_.size(); ++k) { os << avg_weight_[k].first; ostream_traits::separator(os); os << avg_weight_[k].second; ostream_traits::separator(os); } } template void cell_info::get (IStream& is) { std::size_t dim; is >> overestimate_ >> volume_ >> dim; lower_left_.resize(dim); for (std::size_t k = 0; k < lower_left_.size(); ++k) { is >> lower_left_[k]; } upper_right_.resize(dim); for (std::size_t k = 0; k < upper_right_.size(); ++k) { is >> upper_right_[k]; } mid_point_.resize(dim); for (std::size_t k = 0; k < mid_point_.size(); ++k) { is >> mid_point_[k]; } last_max_position_.resize(dim); for (std::size_t k = 0; k < last_max_position_.size(); ++k) { is >> last_max_position_[k]; } avg_weight_.resize(dim); for (std::size_t k = 0; k < avg_weight_.size(); ++k) { is >> avg_weight_[k].first >> avg_weight_[k].second; } } template std::pair cell::split (std::pair split_d, Random& rnd_gen, Function* function, const adaption_info& ainfo, const std::vector& sampled) { assert(!missing_events() && !info().parametric_compensating()); split_dimension_ = split_d.first; split_point_ = split_d.second; std::vector lower_left1 = info().lower_left(); std::vector upper_right1 = info().upper_right(); std::vector lower_left2 = info().lower_left(); std::vector upper_right2 = info().upper_right(); upper_right1[split_dimension_] = split_point_; lower_left2[split_dimension_] = split_point_; std::pair children; if (sampled.empty()) children = std::pair(cell(lower_left1,upper_right1,ainfo), cell(lower_left2,upper_right2,ainfo)); else children = std::pair (cell(lower_left1,upper_right1,sampled,ainfo), cell(lower_left2,upper_right2,sampled,ainfo)); if (info().last_max_position()[split_dimension_] <= split_point_) { children.first.info().overestimate(info().overestimate(),info().last_max_position()); children.second.info().explore(rnd_gen,ainfo,function); } else { children.second.info().overestimate(info().overestimate(),info().last_max_position()); children.first.info().explore(rnd_gen,ainfo,function); } cell_info_.reset(0); children.first.integral(children.first.info().volume() * children.first.info().overestimate()); children.second.integral(children.second.info().volume() * children.second.info().overestimate()); return children; } template void cell::put (OStream& os) const { os << split_dimension_; ostream_traits::separator(os); os << split_point_; ostream_traits::separator(os); os << integral_; ostream_traits::separator(os); if (cell_info_) { os << "has_cell_info"; ostream_traits::separator(os); cell_info_->put(os); } else { os << "has_no_cell_info"; ostream_traits::separator(os); } } template void cell::get (IStream& is) { std::string info_tag; is >> split_dimension_ >> split_point_ >> integral_ >> info_tag; if (info_tag == "has_cell_info") { cell_info_.reset(new cell_info()); cell_info_->get(is); } } inline cell_info::cell_info() : overestimate_(0.), volume_(0.), lower_left_(), upper_right_(), mid_point_(), last_max_position_(), avg_weight_(), attempted_(0), accepted_(0) {} inline cell_info::cell_info(const std::vector& ll, const std::vector& ur, const adaption_info& ainfo) : overestimate_(0.), volume_(), lower_left_(ll), upper_right_(ur), mid_point_(), last_max_position_(), avg_weight_(std::vector > (ainfo.dimension,std::make_pair(0.,0.))), attempted_(0), accepted_(0) { std::vector delta; std::transform(ur.begin(),ur.end(), ll.begin(),std::back_inserter(delta), std::minus()); volume_ = std::accumulate(delta.begin(),delta.end(),1.,std::multiplies()); std::transform(ur.begin(),ur.end(), ll.begin(),std::back_inserter(mid_point_), std::plus()); for (std::size_t k = 0; k < ainfo.dimension; ++k) mid_point_[k] /= 2.; } inline cell_info::cell_info(const std::vector& ll, const std::vector& ur, const std::vector& sampled_variables, const adaption_info& ainfo) : overestimate_(0.), volume_(), lower_left_(ll), upper_right_(ur), mid_point_(), last_max_position_(), avg_weight_(std::vector > (ainfo.dimension,std::make_pair(0.,0.))), attempted_(0), accepted_(0) { std::vector delta; conditional_transform(ur.begin(),ur.end(), ll.begin(),sampled_variables.begin(), std::back_inserter(delta), std::minus()); volume_ = std::accumulate(delta.begin(),delta.end(),1.,std::multiplies()); std::transform(ur.begin(),ur.end(), ll.begin(),std::back_inserter(mid_point_), std::plus()); for (std::size_t k = 0; k < ainfo.dimension; ++k) mid_point_[k] /= 2.; } inline int cell_info::parametric_missing(const bit_container& id) const { std::map,int>::const_iterator mit = parametric_missing_map_.find(id); if (mit == parametric_missing_map_.end()) return 0; return mit->second; } inline void cell_info::parametric_missing(const bit_container& id, int n) { if (n == 0) { std::map,int>::iterator mit = parametric_missing_map_.find(id); if (mit != parametric_missing_map_.end()) parametric_missing_map_.erase(mit); return; } parametric_missing_map_[id] = n; } inline void cell_info::increase_parametric_missing(const bit_container& id) { std::map,int>::iterator mit = parametric_missing_map_.find(id); if (mit != parametric_missing_map_.end()) { mit->second += 1; if (mit->second == 0) parametric_missing_map_.erase(mit); } else parametric_missing_map_[id] = 1; } inline void cell_info::decrease_parametric_missing(const bit_container& id) { std::map,int>::iterator mit = parametric_missing_map_.find(id); if (mit != parametric_missing_map_.end()) { mit->second -= 1; if (mit->second == 0) parametric_missing_map_.erase(mit); } else assert(false); } inline void cell_info::selected(const std::vector& p, double weight, const adaption_info& ainfo) { for (std::size_t k = 0; k < p.size(); ++k) { if (ainfo.adapt[k]) { if (p[k] < mid_point_[k]) avg_weight_[k].first += weight; else avg_weight_[k].second += weight; } } } inline std::pair cell_info::get_split (const adaption_info& ainfo, bool& worth) const { std::size_t split_d = 0; double gain = 0.; for (std::size_t k = 0; k < ainfo.dimension; ++k) { double xgain = 0.; double left = avg_weight_[k].first; double right = avg_weight_[k].second; if (left+right > 0.) { xgain = std::abs(left-right)/(left+right); } if (xgain > gain) { gain = xgain; split_d = k; } } worth = (gain >= ainfo.gain_threshold); return std::make_pair(split_d,mid_point_[split_d]); } inline bool cell_info::contains_parameter (const std::vector& point, const std::vector& sampled) const { std::vector::const_iterator p = point.begin(); std::vector::const_iterator l = lower_left_.begin(); std::vector::const_iterator u = upper_right_.begin(); std::vector::const_iterator f = sampled.begin(); for (; p < point.end(); ++p, ++f, ++l, ++u) if (!(*f)) { if (((*l) > (*p)) || ((*u) < (*p))) return false; } return true; } inline cell::cell() : split_dimension_(0), split_point_(0.), integral_(0.), missing_events_(0), cell_info_(0) {} inline cell::cell(const std::vector& ll, const std::vector& ur, const adaption_info& ainfo) : split_dimension_(0), split_point_(0.), integral_(0.), missing_events_(0), cell_info_(new cell_info(ll,ur,ainfo)) {} inline cell::cell(const std::vector& ll, const std::vector& ur, const std::vector& sampled_variables, const adaption_info& ainfo) : split_dimension_(0), split_point_(0.), integral_(0.), missing_events_(0), cell_info_(new cell_info(ll,ur,sampled_variables,ainfo)) {} inline cell::cell(const cell& x) : split_dimension_(x.split_dimension_), split_point_(x.split_point_), integral_(x.integral_), missing_events_(x.missing_events_), cell_info_(0) { if (x.cell_info_) cell_info_.reset(new cell_info(*x.cell_info_)); } inline cell& cell::operator=(const cell& x) { if (this == &x) return *this; split_dimension_ = x.split_dimension_; split_point_ = x.split_point_; integral_ = x.integral_; missing_events_ = x.missing_events_; if (x.cell_info_) cell_info_.reset(new cell_info(*x.cell_info_)); return *this; } } herwig++-2.6.0.orig/Exsample2/exsample/selectors.icc0000644000175000017500000001012011754474774023132 0ustar sylvestresylvestre// -*- C++ -*- // // selectors.icc is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // namespace exsample { template std::pair sampling_selector::use(cell& parent, const cell& first_child, const cell& second_child) const { std::pair selected (false,false); if (compensate) { if (first_child.missing_events() > 0 && second_child.missing_events() <= 0) { selected.first = true; --parent.missing_events(); return selected; } if (first_child.missing_events() <= 0 && second_child.missing_events() > 0) { selected.second = true; --parent.missing_events(); return selected; } if (first_child.missing_events() > 0 && second_child.missing_events() > 0) { if (first_child.integral()/parent.integral() > rnd_gen()) selected.first = true; else selected.second = true; --parent.missing_events(); return selected; } } if (first_child.integral()/parent.integral() > rnd_gen()) selected.first = true; else selected.second = true; return selected; } template bool sampling_selector::use(cell& leaf) const { if (compensate) { if (leaf.missing_events() < 0) { ++leaf.missing_events(); return false; } if (leaf.missing_events() > 0) --leaf.missing_events(); } return true; } inline std::pair parametric_selector::use(const cell& parent, const cell&, const cell&) const { std::pair match_para (true,true); if (!sampled_variables_[parent.split_dimension()]) { match_para.first = (parent.split_point() > (*point_)[parent.split_dimension()]); match_para.second = (parent.split_point() <= (*point_)[parent.split_dimension()]); } return match_para; } template std::pair parametric_sampling_selector::use(cell& parent, const cell& first_child, const cell& second_child) const { std::pair match_para (true,true); std::pair selected (false,false); if (!sampled_variables_[parent.split_dimension()]) { match_para.first = (parent.split_point() > (*point_)[parent.split_dimension()]); match_para.second = (parent.split_point() <= (*point_)[parent.split_dimension()]); } if (match_para.first && match_para.second) { if (compensate_) { if (first_child.missing_events() > 0 && second_child.missing_events() <= 0) { selected.first = true; --parent.missing_events(); return selected; } if (first_child.missing_events() <= 0 && second_child.missing_events() > 0) { selected.second = true; --parent.missing_events(); return selected; } if (first_child.missing_events() > 0 && second_child.missing_events() > 0) { if (first_child.integral()/parent.integral() > rnd_gen_()) selected.first = true; else selected.second = true; --parent.missing_events(); return selected; } } if (first_child.integral()/parent.integral() > rnd_gen_()) selected.first = true; else selected.second = true; return selected; } assert(match_para.first || match_para.second); if (compensate_) if ((match_para.first && first_child.missing_events() > 0) || (match_para.second && second_child.missing_events() > 0)) --parent.missing_events(); return match_para; } template bool parametric_sampling_selector::use (cell& leaf) const { if (compensate_) { long pmissing = leaf.info().parametric_missing(*bin_id_); assert(leaf.missing_events() == pmissing); if (pmissing < 0) { leaf.info().increase_parametric_missing(*bin_id_); ++leaf.missing_events(); return false; } if (pmissing > 0) { leaf.info().decrease_parametric_missing(*bin_id_); --leaf.missing_events(); } } return true; } } herwig++-2.6.0.orig/Exsample2/exsample/statistics.icc0000644000175000017500000000655011754474774023335 0ustar sylvestresylvestre// -*- C++ -*- // // statistics.icc is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // namespace exsample { inline statistics::statistics() : average_weight_(0.), average_abs_weight_(0.), average_weight_variance_(-1.), iteration_points_(0), attempted_(0), accepted_(0), accepted_negative_(0), sum_weights_(0.), sum_abs_weights_(0.), sum_weights_squared_(0.), max_weight_(0.), n_iterations_(0) { } inline void statistics::presampled(double weight) { ++iteration_points_; sum_weights_ += weight; sum_abs_weights_ += std::abs(weight); sum_weights_squared_ += sqr(weight); max_weight_ = std::max(max_weight_,std::abs(weight)); } inline void statistics::select(double weight, bool calculate_integral) { ++attempted_; if (calculate_integral) { ++iteration_points_; sum_weights_ += weight; sum_abs_weights_ += std::abs(weight); sum_weights_squared_ += sqr(weight); max_weight_ = std::max(max_weight_,std::abs(weight)); } } inline void statistics::reset() { if (iteration_points_ == 0) return; double average = sum_weights_/iteration_points_; double average_abs = sum_abs_weights_/iteration_points_; double variance = std::abs(sum_weights_squared_/iteration_points_ - sqr(sum_weights_/iteration_points_)) / iteration_points_; if (n_iterations_ == 0 || std::sqrt(variance)/average <= std::sqrt(average_weight_variance_)/average_weight_) { if (n_iterations_ > 0) { average_weight_ = average_weight_ + average; average_abs_weight_ = average_abs_weight_ + average_abs; average_weight_variance_ = average_weight_variance_ + variance; } else { average_weight_ = average; average_abs_weight_ = average_abs; average_weight_variance_ = variance; } ++n_iterations_; } sum_weights_ = 0.; sum_abs_weights_ = 0.; sum_weights_squared_ = 0.; iteration_points_ = 0; } inline std::pair statistics::current() const { double average = sum_weights_/iteration_points_; double variance = std::abs(sum_weights_squared_/iteration_points_ - sqr(sum_weights_/iteration_points_)) / iteration_points_; std::pair res; if (n_iterations_ > 0) { res.first = average_weight_ + average; res.second = average_weight_variance_ + variance; } else { res.first = average; res.second = variance; } res.first = (n_iterations_ == 0 ? 0. : res.first/n_iterations_); res.second = (n_iterations_ == 0 ? 0. : res.second/n_iterations_); return res; } template void statistics::put(OStream& os) const { os << average_weight_; ostream_traits::separator(os); os << average_abs_weight_; ostream_traits::separator(os); os << average_weight_variance_; ostream_traits::separator(os); os << n_iterations_; ostream_traits::separator(os); } template void statistics::get(IStream& is) { is >> average_weight_ >> average_abs_weight_ >> average_weight_variance_ >> n_iterations_; } } herwig++-2.6.0.orig/Exsample2/exsample/exponential_generator.icc0000644000175000017500000003156611754474774025544 0ustar sylvestresylvestre// -*- C++ -*- // // exponential_generator.icc is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // namespace exsample { template void exponential_generator::initialize() { adaption_info_.dimension = function_->dimension(); adaption_info_.lower_left = function_->support().first; adaption_info_.upper_right = function_->support().second; if (adaption_info_.adapt.empty()) adaption_info_.adapt = std::vector(adaption_info_.dimension,true); evolution_variable_ = function_->evolution_variable(); evolution_cutoff_ = function_->evolution_cutoff(); sample_variables_ = function_->variable_flags(); sample_other_variables_ = sample_variables_; sample_other_variables_[evolution_variable_] = false; last_point_.resize(adaption_info_.dimension); parametric_selector_ = parametric_selector(&last_point_,sample_other_variables_); exponent_selector_ = parametric_selector(&last_point_,sample_variables_); missing_accessor_ = parametric_missing_accessor(&last_parameter_bin_); parametric_sampler_ = parametric_sampling_selector > (&last_point_,&last_parameter_bin_,sample_other_variables_,rnd_gen_); if (initialized_) return; splits_ = 0; for ( std::size_t k = 0; k < adaption_info_.dimension; ++k ) { if ( sample_other_variables_[k] ) continue; parameter_splits_[k].push_back(adaption_info_.lower_left[k]); parameter_splits_[k].push_back(adaption_info_.upper_right[k]); } root_cell_ = binary_tree(cell(adaption_info_.lower_left, adaption_info_.upper_right, sample_other_variables_, adaption_info_)); root_cell_.value().info().explore(rnd_gen_,adaption_info_,function_); root_cell_.value().integral(root_cell_.value().info().volume() * root_cell_.value().info().overestimate()); last_exponent_integrand_.resize(1); check_events_ = adaption_info_.presampling_points; initialized_ = true; } template bool exponential_generator::split () { if (adaption_info_.freeze_grid == accepts_) return false; if (compensating_) return false; if (!(*last_cell_).info().bad(adaption_info_)) return false; bool dosplit = false; std::pair sp = (*last_cell_).info().get_split(adaption_info_,dosplit); if (!dosplit) return false; if (!adaption_info_.adapt[sp.first]) return false; if (splits_ == parameter_hash_bits/2) return false; ++splits_; last_cell_.node().split((*last_cell_).split(sp,rnd_gen_,function_,adaption_info_,sample_other_variables_)); if ( !sample_other_variables_[sp.first] ) { if ( std::find(parameter_splits_[sp.first].begin(),parameter_splits_[sp.first].end(),sp.second) == parameter_splits_[sp.first].end() ) { parameter_splits_[sp.first].push_back(sp.second); std::sort(parameter_splits_[sp.first].begin(),parameter_splits_[sp.first].end()); if ( sp.first == evolution_variable_ ) { last_exponent_integrand_.push_back(0.); } } } did_split_ = true; last_point_ = function_->parameter_point(); root_cell_.tree_accumulate(parametric_selector_,integral_accessor_,std::plus()); exponents_.clear(); get_exponent(); return true; } template void exponential_generator::get_exponent () { last_parameter_bin_.reset(); root_cell_.subtree_hash (exponent_selector_,last_parameter_bin_); last_exponent_ = exponents_.find(last_parameter_bin_); if (last_exponent_ != exponents_.end()) return; exponents_[last_parameter_bin_] = linear_interpolator(); last_exponent_ = exponents_.find(last_parameter_bin_); double old_evo = last_point_[evolution_variable_]; std::vector::iterator exp_it = last_exponent_integrand_.begin(); for (std::vector::iterator esp = parameter_splits_[evolution_variable_].begin(); esp < prior(parameter_splits_[evolution_variable_].end()); ++esp, ++exp_it) { last_point_[evolution_variable_] = (*esp + *next(esp))/2.; *exp_it = root_cell_.accumulate(parametric_selector_,integral_accessor_,std::plus()); } exp_it = prior(last_exponent_integrand_.end()); double total = 0.; for (std::vector::iterator esp = prior(parameter_splits_[evolution_variable_].end()); esp > parameter_splits_[evolution_variable_].begin(); --esp, --exp_it) { last_exponent_->second.set_interpolation(*esp,total); total += (*exp_it) * ((*esp) - (*prior(esp))); } last_exponent_->second.set_interpolation(parameter_splits_[evolution_variable_].front(),total); last_point_[evolution_variable_] = old_evo; } template std::set > exponential_generator::parameter_points() { std::set > res; std::vector pt(adaption_info_.dimension,0.); recursive_parameter_points(res,pt,0); return res; } template void exponential_generator:: recursive_parameter_points(std::set >& res, std::vector& pt, size_t current) { if ( current == adaption_info_.dimension ) { res.insert(pt); return; } if ( sample_variables_[current] ) { recursive_parameter_points(res,pt,current+1); return; } for ( std::vector::const_iterator sp = parameter_splits_[current].begin(); sp != prior(parameter_splits_[current].end()); ++sp ) { pt[current] = (*sp + *next(sp))/2.; recursive_parameter_points(res,pt,current+1); } } template void exponential_generator::compensate() { if (!did_split_) { exponents_.clear(); root_cell_.value().info().overestimate(last_value_,last_point_); root_cell_.value().integral(root_cell_.value().info().volume() * root_cell_.value().info().overestimate()); last_point_ = function_->parameter_point(); get_exponent(); return; } std::vector themaxpoint = last_point_; std::set > id_points = parameter_points(); for ( std::set >::const_iterator id = id_points.begin(); id != id_points.end(); ++id ) { last_point_ = *id; get_exponent(); } std::map,linear_interpolator > old_exponents = exponents_; double old_oe = last_cell_->info().overestimate(); last_cell_->info().overestimate(last_value_,themaxpoint); last_cell_->integral(last_cell_->info().volume() * last_cell_->info().overestimate()); exponents_.clear(); for ( std::set >::const_iterator id = id_points.begin(); id != id_points.end(); ++id ) { last_point_ = *id; get_exponent(); std::map,linear_interpolator >::iterator old_exp = old_exponents.find(last_parameter_bin_); std::map,linear_interpolator >::iterator new_exp = exponents_.find(last_parameter_bin_); assert(old_exp != old_exponents.end() && new_exp != exponents_.end()); double old_norm = 1. - std::exp(-(old_exp->second)(adaption_info_.lower_left[evolution_variable_])); double new_norm = 1. - std::exp(-(new_exp->second)(adaption_info_.lower_left[evolution_variable_])); for (binary_tree::iterator it = root_cell_.begin(); it != root_cell_.end(); ++it) { if ( !it->info().contains_parameter(last_point_,sample_other_variables_) ) continue; double old_int = 0.; double new_int = 0.; for ( std::vector::const_iterator sp = parameter_splits_[evolution_variable_].begin(); sp != prior(parameter_splits_[evolution_variable_].end()); ++sp ) { if ( *sp >= it->info().lower_left()[evolution_variable_] && *sp < it->info().upper_right()[evolution_variable_] ) { double xl = *sp; double xxl = *next(sp); double old_al = (old_exp->second.interpolation()[xxl] - old_exp->second.interpolation()[xl]) / (xxl-xl); double old_bl = (xxl * old_exp->second.interpolation()[xl] - xl * old_exp->second.interpolation()[xxl]) / (xxl-xl); double new_al = (new_exp->second.interpolation()[xxl] - new_exp->second.interpolation()[xl]) / (xxl-xl); double new_bl = (xxl * new_exp->second.interpolation()[xl] - xl * new_exp->second.interpolation()[xxl]) / (xxl-xl); if ( std::abs(old_al) > std::numeric_limits::epsilon() ) { old_int += (exp(-(old_al*xl+old_bl)) - exp(-(old_al*xxl+old_bl)))/old_al; } else { old_int += (xxl-xl)*exp(-old_bl); } if ( std::abs(new_al) > std::numeric_limits::epsilon() ) { new_int += (exp(-(new_al*xl+new_bl)) - exp(-(new_al*xxl+new_bl)))/new_al; } else { new_int += (xxl-xl)*exp(-new_bl); } } } double scaling; if (it != last_cell_) { if (old_int > std::numeric_limits::epsilon() && new_int > std::numeric_limits::epsilon()) scaling = ((old_norm * new_int) / (new_norm * old_int)) - 1.; else scaling = 0.; } else { if (old_int > std::numeric_limits::epsilon() && new_int > std::numeric_limits::epsilon()) scaling = ((last_value_ * old_norm * new_int) / (old_oe * new_norm * old_int)) - 1.; else scaling = 0.; } it->info().parametric_missing(last_parameter_bin_, it->info().parametric_missing(last_parameter_bin_) + static_cast(round(scaling * it->info().attempted()))); if (it->info().parametric_missing(last_parameter_bin_) != 0) { compensating_ = true; } } } last_point_ = function_->parameter_point(); } template double exponential_generator::generate () { if (compensating_) { compensating_ = false; for (binary_tree::iterator it = root_cell_.begin(); it != root_cell_.end(); ++it) if (it->info().parametric_compensating()) { compensating_ = true; break; } parametric_sampler_.compensate(compensating_); } last_point_ = function_->parameter_point(); if (last_point_[evolution_variable_] < evolution_cutoff_) { return 0.; } unsigned long n_hit_miss = 0; unsigned long n_select = 0; double minus_log_r; root_cell_.tree_accumulate(parametric_selector_,integral_accessor_,std::plus()); get_exponent(); while (true) { n_select = 0; minus_log_r = -std::log(rnd_gen_()) + last_exponent_->second(last_point_[evolution_variable_]); if (!last_exponent_->second.invertible(minus_log_r)) { return 0.; } try { last_point_[evolution_variable_] = last_exponent_->second.unique_inverse(minus_log_r); } catch (constant_interpolation& c) { last_point_[evolution_variable_] = rnd_gen_(c.range.first,c.range.second); } assert(!std::isnan(last_point_[evolution_variable_]) && !std::isinf(last_point_[evolution_variable_])); if (last_point_[evolution_variable_] < evolution_cutoff_) { return 0.; } ++attempts_; if (compensating_) { root_cell_.tree_accumulate(missing_accessor_,std::plus()); } if (parameter_splits_[evolution_variable_].size() > 2) root_cell_.tree_accumulate(parametric_selector_,integral_accessor_,std::plus()); if (did_split_) while ((last_cell_ = root_cell_.select(parametric_sampler_)) == root_cell_.end()) { root_cell_.tree_accumulate(missing_accessor_,std::plus()); if(++n_select > adaption_info_.maxtry) throw selection_maxtry(); } else last_cell_ = root_cell_.begin(); last_cell_->info().select(rnd_gen_,last_point_,sample_other_variables_); last_value_ = function_->evaluate(last_point_); assert(last_value_ >= 0.); last_cell_->info().selected(last_point_,last_value_,adaption_info_); if (last_value_ > last_cell_->info().overestimate()) { if ( std::abs(last_value_)/last_cell_->info().overestimate() > 2. ) { last_value_ = last_value_*(1.+exp(2.*(2.-std::abs(last_value_)/last_cell_->info().overestimate()))); } compensate(); throw exponential_regenerate(); } if (last_cell_->info().attempted() % check_events_ == 0) { if (split()) { throw exponential_regenerate(); } } if (last_value_/last_cell_->info().overestimate() > rnd_gen_()) break; if(++n_hit_miss > adaption_info_.maxtry) throw hit_and_miss_maxtry(); } if (last_value_ == 0.) return 0.; ++accepts_; ++check_events_; last_cell_->info().accept(); return 1.; } } herwig++-2.6.0.orig/Exsample2/exsample/linear_interpolator.h0000644000175000017500000000575311754474774024714 0ustar sylvestresylvestre// -*- C++ -*- // // linear_interpolator.h is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // #ifndef EXSAMPLE_linear_interpolator_h_included #define EXSAMPLE_linear_interpolator_h_included #include "utility.h" namespace exsample { /// \brief Exception thrown, if inversion of the interpolation has /// no solution struct inversion_has_no_solution { }; /// \brief Exception thrown, if a constant piece of the /// interpolation has been hit struct constant_interpolation { /// standard constructor constant_interpolation(double xlow, double xhigh, double h) : range(xlow,xhigh), value(h) {} /// The range in which the interpolation is constant std::pair range; /// The value of the interpolation in the range double value; }; /// \brief A linear interpolation allowing for inversion of the /// linear interpolation class linear_interpolator { public: /// default constructor linear_interpolator(); /// construct a linear interpolator given the /// map of interpolation points and values explicit linear_interpolator(const std::map& points); public: /// return the interpolations value at the given point double operator()(double x) const; /// return the range of the interpolation std::pair range() const { return range_; } public: /// return true, if an inverse exists for /// the given value bool invertible(double f) const { return (range_.first <= f && range_.second >= f); } /// return the inverse, assuming the inverse /// is unique double unique_inverse(double f) const; /// access the interpolation map std::map& interpolation() { return interpolation_; } /// set the value at the given point void set_interpolation(double point, double value); /// reset after interpolation points have been changed void reset(); public: /// put to ostream template void put(OStream& os) const; /// get from istream template void get(IStream& is); private: /// map points to values std::map interpolation_; /// the range of the interpolation std::pair range_; }; /// ostream operator for linear_interpolator objects template inline OStream& operator<<(OStream& os, const linear_interpolator& ip) { ip.put(os); return os; } /// istream operator for linear_interpolator objects template inline IStream& operator>>(IStream& is, linear_interpolator& ip) { ip.get(is); return is; } } #include "linear_interpolator.icc" #endif // EXSAMPLE_linear_interpolator_h_included herwig++-2.6.0.orig/Exsample2/exsample/generator.icc0000644000175000017500000001460311754474774023127 0ustar sylvestresylvestre// -*- C++ -*- // // generator.icc is part of ExSample -- A Library for Sampling Sudakov-Type Distributions // // Copyright (C) 2008-2011 Simon Platzer -- simon.plaetzer@desy.de // // ExSample is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // namespace exsample { template template void generator::initialize(SlaveStatistics& opt) { adaption_info_.dimension = function_->dimension(); adaption_info_.lower_left = function_->support().first; adaption_info_.upper_right = function_->support().second; if (adaption_info_.adapt.empty()) adaption_info_.adapt = std::vector(adaption_info_.dimension,true); last_point_.resize(adaption_info_.dimension); if (initialized_) return; root_cell_ = binary_tree(cell(adaption_info_.lower_left, adaption_info_.upper_right, adaption_info_)); root_cell_.value().info().explore(rnd_gen_,adaption_info_,function_,&statistics_,opt); root_cell_.value().integral(root_cell_.value().info().volume() * root_cell_.value().info().overestimate()); statistics_.reset(); check_events_ = adaption_info_.presampling_points; initialized_ = true; } template bool generator::split() { if (adaption_info_.freeze_grid < statistics_.accepted() && adaption_info_.freeze_grid != 0) return false; if (compensating_) return false; if (!(*last_cell_).info().bad(adaption_info_)) return false; bool dosplit = false; std::pair sp = (*last_cell_).info().get_split(adaption_info_,dosplit); if (!dosplit || !adaption_info_.adapt[sp.first]) { return false; } last_cell_.node().split((*last_cell_).split(sp,rnd_gen_,function_,adaption_info_)); integral_accessor iacc; root_cell_.tree_accumulate(iacc,std::plus()); did_split_ = true; statistics_.reset(); return true; } template void generator::compensate() { if (!did_split_) { root_cell_.value().info().overestimate(std::abs(last_value_),last_point_); root_cell_.value().integral(root_cell_.value().info().volume() * root_cell_.value().info().overestimate()); return; } double old_norm = root_cell_.value().integral(); double new_norm = old_norm - (*last_cell_).integral() + std::abs(last_value_) * (*last_cell_).info().volume(); compensating_ = false; last_cell_->missing_events() += static_cast(round(((std::abs(last_value_) * old_norm)/(last_cell_->info().overestimate() * new_norm) - 1.) * (last_cell_->info().attempted()))); if (last_cell_->missing_events() != 0) compensating_ = true; last_cell_->info().overestimate(std::abs(last_value_),last_point_); last_cell_->integral(last_cell_->info().volume() * last_cell_->info().overestimate()); for (binary_tree::iterator it = root_cell_.begin(); it != root_cell_.end(); ++it) if (it != last_cell_) { it->missing_events() += static_cast(round((old_norm/new_norm - 1.) * (it->info().attempted()))); if (it->missing_events() != 0) { compensating_ = true; } } integral_accessor iacc; root_cell_.tree_accumulate(iacc,std::plus()); statistics_.reset(); root_cell_.tree_accumulate(missing_accessor(),std::plus()); } template template double generator::generate(SlaveStatistics& opt) { unsigned long n_hit_miss = 0; unsigned long n_select = 0; sampling_selector > sampler (rnd_gen_,compensating_); missing_accessor macc; if (compensating_) { compensating_ = false; for (binary_tree::iterator it = root_cell_.begin(); it != root_cell_.end(); ++it) if (it->missing_events() != 0) { compensating_ = true; break; } } while (true) { sampler.compensate = compensating_; n_select = 0; if (did_split_) while ((last_cell_ = root_cell_.select(sampler)) == root_cell_.end()) { root_cell_.tree_accumulate(macc,std::plus()); if(++n_select > adaption_info_.maxtry) throw selection_maxtry(); } else last_cell_ = root_cell_.begin(); last_cell_->info().select(rnd_gen_,last_point_); last_value_ = function_->evaluate(last_point_); last_cell_->info().selected(last_point_,std::abs(last_value_),adaption_info_); if (std::abs(last_value_) > last_cell_->info().overestimate()) { if ( std::abs(last_value_)/last_cell_->info().overestimate() > 2. ) { last_value_ = last_value_*(1.+exp(2.*(2.-std::abs(last_value_)/last_cell_->info().overestimate()))); } compensate(); n_hit_miss = 0; continue; } if (last_cell_->info().attempted() > check_events_) { if (split()) { throw generator_update(); } } if (did_split_) { statistics_.select(last_value_ * root_cell_.value().integral() / last_cell_->info().overestimate(), !compensating_); opt.select(last_value_ * root_cell_.value().integral() / last_cell_->info().overestimate(), !compensating_); } else { statistics_.select(last_value_, !compensating_); opt.select(last_value_, !compensating_); } if (std::abs(last_value_)/last_cell_->info().overestimate() > rnd_gen_()) break; if(++n_hit_miss > adaption_info_.maxtry) throw hit_and_miss_maxtry(); } last_cell_->info().accept(); if (did_split_) last_value_ *= root_cell_.value().integral() / last_cell_->info().overestimate(); statistics_.accept(last_value_); ++check_events_; if (last_value_ < 0.) return -1.; return 1.; } template template void generator::put (OStream& os) const { adaption_info_.put(os); root_cell_.put(os); statistics_.put(os); os << check_events_; ostream_traits::separator(os); os << did_split_; ostream_traits::separator(os); os << initialized_; ostream_traits::separator(os); } template template void generator::get (IStream& is) { adaption_info_.get(is); root_cell_.get(is); statistics_.get(is); is >> check_events_ >> did_split_ >> initialized_; } } herwig++-2.6.0.orig/Exsample2/GeneralStatistics.cc0000644000175000017500000000212711754474774022600 0ustar sylvestresylvestre// -*- C++ -*- // // GeneralStatictis.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the GeneralStatistics class. // #include "GeneralStatistics.h" using namespace Herwig; GeneralStatistics::~GeneralStatistics() {} void GeneralStatistics::put(PersistentOStream & os) const { os << theBias << theMaxWeight << theMinWeight << theSumWeights << theSumSquaredWeights << theSumAbsWeights << theSelectedPoints << theAcceptedPoints << theNanPoints << theAllPoints << theLastWeight; } void GeneralStatistics::get(PersistentIStream & is) { is >> theBias >> theMaxWeight >> theMinWeight >> theSumWeights >> theSumSquaredWeights >> theSumAbsWeights >> theSelectedPoints >> theAcceptedPoints >> theNanPoints >> theAllPoints >> theLastWeight; } herwig++-2.6.0.orig/Exsample2/ProjectingSampler.h0000644000175000017500000000770511754474774022451 0ustar sylvestresylvestre// -*- C++ -*- // // ProjectingSampler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_ProjectingSampler_H #define Herwig_ProjectingSampler_H // // This is the declaration of the ProjectingSampler class. // #include "BinSampler.h" #include "BinnedStatistics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief ProjectingSampler does adaption from projections of the integrand. * * @see \ref ProjectingSamplerInterfaces "The interfaces" * defined for ProjectingSampler. */ class ProjectingSampler: public Herwig::BinSampler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ ProjectingSampler(); /** * The destructor. */ virtual ~ProjectingSampler(); //@} public: /** * Generate the next point; store the point in lastPoint() and its * weight using select(); if noMaxInfo is true, do not throw * NewMaximum or UpdateCrossSections exceptions. */ virtual void generate(bool noMaxInfo = false); /** * Initialize this bin sampler. This default version calls runIteration. */ virtual void initialize(bool progress); /** * Finish an iteration, performing the adaption. */ void adapt(); public: /** * Select an event */ virtual void select(double weight); /** * Accept an event. */ virtual void accept(); /** * Reject an event. */ virtual void reject(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ProjectingSampler & operator=(const ProjectingSampler &); /** * True, if we're running the first iteration. */ bool theFirstIteration; /** * The number of iterations to be considered for initialization. */ unsigned long theNIterations; /** * Factor to enhance the number of points for the next iteration. */ double theEnhancementFactor; /** * The initial number of bins to use. */ unsigned int theNBins; /** * The adaption threshold. */ double theEpsilon; /** * The number of points used for the last iteration. */ unsigned long theLastNPoints; /** * The projections to use. */ vector theProjections; /** * The last integrand value. */ double theLastValue; /** * The weight threshold which governs the minimum bin weight. */ double theWeightThreshold; }; } #endif /* Herwig_ProjectingSampler_H */ herwig++-2.6.0.orig/Exsample2/ExSampler2.h0000644000175000017500000001060511754474774020774 0ustar sylvestresylvestre// -*- C++ -*- // // ExSampler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_ExSampler_H #define Herwig_ExSampler_H // // This is the declaration of the ExSampler class. // #include "BinSampler.h" #include "Herwig++/Exsample2/exsample/generator.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \brief Interface to the exsample generator. * \author Simon Platzer * * @see \ref ExSamplerInterfaces "The interfaces" * defined for ExSampler. */ class ExSampler: public Herwig::BinSampler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ ExSampler(); /** * The destructor. */ virtual ~ExSampler(); //@} public: /** * Return true, if this bin sampler produces unweighted events. */ virtual bool isUnweighting() const { return true; } /** * Return true, if this sampler is in a compensating mode. */ virtual bool compensating() const { return generator_.compensating(); } /** * Generate the next point; store the point in lastPoint() and its * weight using select(); if noMaxInfo is true, do not throw * NewMaximum or UpdateCrossSections exceptions. */ virtual void generate(bool noMaxInfo = false); /** * Initialize this bin sampler. This default version calls runIteration. */ virtual void initialize(bool progress); /** * Finalize this sampler. */ virtual void finalize(bool verbose); public: /** * Reject an event. */ virtual void reject() { GeneralStatistics::reject(); generator_.reject(); } public: /** * Evaluate with given random numbers. */ double evaluate(const vector& p) const { double ret; try { ret = eventHandler()->dSigDR(p) / nanobarn; } catch (Veto&) { ret = 0.0; } catch (...) { throw; } return ret; } /** * Return the lower left and upper right * corners of the support of this function */ pair,vector > support() const { vector lower(dimension(),0.); vector upper(dimension(),1.); return make_pair(lower,upper); } /** * Indicate start of presampling */ void start_presampling() { } /** * Indicate end of presampling */ void stop_presampling() { } 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The number of presampling points. */ unsigned long presampling_points_; /** * The number of points below which the grid is frozen */ unsigned long freeze_grid_; /** * The efficiency threshold */ double efficiency_threshold_; /** * The gains threshold. */ double gain_threshold_; /** * The generator used. */ exsample::generator generator_; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ExSampler & operator=(const ExSampler &); }; } #endif /* Herwig_ExSampler_H */ herwig++-2.6.0.orig/Exsample2/GeneralStatistics.h0000644000175000017500000001546711754474774022455 0ustar sylvestresylvestre// -*- C++ -*- // // GeneralStatictis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_GeneralStatistics_H #define Herwig_GeneralStatistics_H // // This is the declaration of the GeneralStatistics class. // #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief General Monte Carlo statistics. * */ class GeneralStatistics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ GeneralStatistics() : theBias(1.), theMaxWeight(0.), theMinWeight(Constants::MaxDouble), theSumWeights(0.), theSumSquaredWeights(0.), theSumAbsWeights(0.), theSelectedPoints(0), theAcceptedPoints(0), theNanPoints(0), theAllPoints(0), theLastWeight(0.) {} /** * The destructor. */ virtual ~GeneralStatistics(); //@} public: /** * Set the weight by which events entering this statistics have been * biased. */ void bias(double w) { theBias = w; } /** * Return the weight by which events entering this statistics have been * biased. */ double bias() const { return theBias; } /** * Return the last calculated chi^2. */ virtual double chi2() const { return 0.; } /** * Reset these statistics. */ void reset() { *this = GeneralStatistics(); } public: /** * Return the last weight encountered. */ double lastWeight() const { return theLastWeight; } /** * Return the maximum absolute weight */ double maxWeight() const { return theMaxWeight; } /** * Return the minimum absolute weight */ double minWeight() const { return theMinWeight; } /** * Set the maximum absolute weight */ void maxWeight(double w) { theMaxWeight = w; } /** * Set the minimum absolute weight */ void minWeight(double w) { theMinWeight = w; } /** * Return the sum of weights */ double sumWeights() const { return theSumWeights; } /** * Return the sum of squared weights */ double sumSquaredWeights() const { return theSumSquaredWeights; } /** * Return the sum of absolute weights */ double sumAbsWeights() const { return theSumAbsWeights; } /** * Return the number of selected points. */ unsigned long selectedPoints() const { return theSelectedPoints; } /** * Return the nnumber of accepted points. */ unsigned long acceptedPoints() const { return theAcceptedPoints; } /** * Return the number of points where a nan or inf weight has been * encountered. */ unsigned long nanPoints() const { return theNanPoints; } /** * Return the number of all points. */ unsigned long allPoints() const { return theAllPoints; } /** * Return the average weight. */ virtual double averageWeight() const { return selectedPoints() > 0 ? sumWeights()/selectedPoints() : 0.; } /** * Return the average absolute weight. */ virtual double averageAbsWeight() const { return selectedPoints() > 0 ? sumAbsWeights()/selectedPoints() : 0.; } /** * Return the variance of weights. */ double weightVariance() const { return selectedPoints() > 1 ? abs(sumSquaredWeights() - sqr(sumWeights())/selectedPoints())/(selectedPoints()-1) : 0.; } /** * Return the variance of absolute weights. */ double absWeightVariance() const { return selectedPoints() > 1 ? abs(sumSquaredWeights() - sqr(sumAbsWeights())/selectedPoints())/(selectedPoints()-1) : 0.; } /** * Return the variance of the average weight. */ virtual double averageWeightVariance() const { return selectedPoints() > 1 ? weightVariance()/selectedPoints() : 0.; } /** * Return the variance of the average absolute weight. */ virtual double averageAbsWeightVariance() const { return selectedPoints() > 1 ? absWeightVariance()/selectedPoints() : 0; } /** * Select an event */ virtual void select(double weight, bool doIntegral = true) { if ( isnan(weight) || isinf(weight) ) { theLastWeight = weight; theNanPoints += 1; theAllPoints += 1; return; } theLastWeight = weight; theMaxWeight = max(theMaxWeight,abs(weight)); theMinWeight = min(theMinWeight,abs(weight)); if ( !doIntegral ) return; theSumWeights += weight; theSumSquaredWeights += sqr(weight); theSumAbsWeights += abs(weight); theSelectedPoints += 1; theAllPoints += 1; } /** * Accept an event. */ virtual void accept() { theAcceptedPoints += 1; } /** * Reject an event. */ virtual void reject() { if ( isnan(lastWeight()) || isinf(lastWeight()) ) { theNanPoints -= 1; theAllPoints -= 1; return; } theSumWeights -= lastWeight(); theSumSquaredWeights -= sqr(lastWeight()); theSumAbsWeights -= abs(lastWeight()); theSelectedPoints -= 1; theAcceptedPoints -= 1; theAllPoints -= 1; } 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 put(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 get(PersistentIStream & is); //@} private: /** * A weight by which events entering this statistics have been * biased. */ double theBias; /** * The maximum weight encountered. */ double theMaxWeight; /** * The minimum weight encountered. */ double theMinWeight; /** * The sum of weights. */ double theSumWeights; /** * The sum of weights squared. */ double theSumSquaredWeights; /** * The sum of absolute values of weights */ double theSumAbsWeights; /** * The number of selected points */ unsigned long theSelectedPoints; /** * The number of accepted points */ unsigned long theAcceptedPoints; /** * The number of points where an nan or inf weight was encountered. */ unsigned long theNanPoints; /** * The number of all points. */ unsigned long theAllPoints; /** * The last weight encountered */ double theLastWeight; }; inline PersistentOStream& operator<<(PersistentOStream& os, const GeneralStatistics& s) { s.put(os); return os; } inline PersistentIStream& operator>>(PersistentIStream& is, GeneralStatistics& s) { s.get(is); return is; } } #endif /* Herwig_GeneralStatistics_H */ herwig++-2.6.0.orig/Exsample2/BinnedStatistics.h0000644000175000017500000001325111754474774022264 0ustar sylvestresylvestre// -*- C++ -*- // // GeneralStatictis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_BinnedStatistics_H #define Herwig_BinnedStatistics_H // // This is the declaration of the BinnedStatistics class. // #include "GeneralStatistics.h" #include "ThePEG/Repository/UseRandom.h" #include using boost::next; using boost::prior; namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief Aka histogram, yet not intented for analyses. * */ class BinnedStatistics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ BinnedStatistics() : lastPoint(0.), lastStatistics(0), theWeightThreshold(0.001) {} /** * The standard constructor. */ BinnedStatistics(unsigned int bins, double threshold = 0.001) : lastPoint(0.), lastStatistics(0) { initialize(bins); theWeightThreshold = threshold; } /** * The destructor. */ virtual ~BinnedStatistics(); //@} public: /** * Sample a point and return its weight to be divided out as a bias. */ double sample(double& point) { const pair& range = selectorMap.upper_bound(UseRandom::rnd())->second; lastPoint = UseRandom::rnd(range.first,range.second); point = lastPoint; lastStatistics = &(statisticsMap.upper_bound(lastPoint)->second); double weight = weightMap.upper_bound(lastPoint)->second; return 1./weight; } /** * Get a bin corresponding to a given point. */ void bin(double point) { lastPoint = point; lastStatistics = &(statisticsMap.upper_bound(lastPoint)->second); } /** * Select the last sampled point with a given weight. */ void select(double w) { lastStatistics->select(w); } /** * Accept the last sampled point. */ void accept() { lastStatistics->accept(); } /** * Reject the last sampled point. */ void reject() { lastStatistics->reject(); } /** * Initialize with flat sampling over the complete range, * using the given number of bins to accumulate statistics. */ void initialize(unsigned int bins); /** * Return the bins. */ const map& statistics() const { return statisticsMap; } /** * Update the sampling bins to reflect the accumulated statistics and * binning used. */ template void update(const Adaptor& ap) { double avgweight = 0.; size_t bins = 0; for ( map::const_iterator s = statisticsMap.begin(); s != statisticsMap.end(); ++s ) { avgweight += ap.importanceMeasure(s->second); ++bins; } avgweight /= bins; weightMap.clear(); double norm = 0.; for ( map::const_iterator s = statisticsMap.begin(); s != statisticsMap.end(); ++s ) { double weight = ap.importanceMeasure(s->second); if ( weight < theWeightThreshold*avgweight ) weight = theWeightThreshold*avgweight; weightMap[s->first] = weight; norm += weight * (s != statisticsMap.begin() ? (s->first - prior(s)->first) : s->first); } selectorMap.clear(); double current = 0.; for ( map::iterator bw = weightMap.begin(); bw != weightMap.end(); ++bw ) { bw->second /= norm; pair range = make_pair(bw != weightMap.begin() ? prior(bw)->first : 0., bw->first); current += bw->second*(range.second-range.first); selectorMap[current] = range; } } /** * Half those bins, which meet the given predicate * and update the statistics. */ template void adapt(const Adaptor& ap) { update(ap); map newBins; for ( map::const_iterator b = statisticsMap.begin(); b != statisticsMap.end(); ++b ) { newBins[b->first] = GeneralStatistics(); if ( ap.adapt(b->second) ) { double bound = b != statisticsMap.begin() ? (prior(b)->first + b->first)/2. : b->first/2.; newBins[bound] = GeneralStatistics(); } } statisticsMap = newBins; } 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 put(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 get(PersistentIStream & is); //@} private: /** * Map upper bin boundaries to statistics contained. * The lower bin boundary is always 0. */ map statisticsMap; /** * Map upper bin boundaries to bin weights currently used. */ map weightMap; /** * Selector map to sample a point */ map > selectorMap; /** * The last sampled point. */ double lastPoint; /** * The statistics relevant to the last sampled point. */ GeneralStatistics* lastStatistics; /** * The weight threshold which governs the minimum bin weight. */ double theWeightThreshold; }; inline PersistentOStream& operator<<(PersistentOStream& os, const BinnedStatistics& s) { s.put(os); return os; } inline PersistentIStream& operator>>(PersistentIStream& is, BinnedStatistics& s) { s.get(is); return is; } } #endif /* Herwig_BinnedStatistics_H */ herwig++-2.6.0.orig/Exsample2/GeneralSampler.cc0000644000175000017500000002757711754474774022071 0ustar sylvestresylvestre// -*- C++ -*- // // GeneralSampler.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the GeneralSampler class. // #include "GeneralSampler.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/Utilities/LoopGuard.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include using namespace Herwig; GeneralSampler::GeneralSampler() : theVerbose(false), theFlatSubprocesses(false), isSampling(false), theIntegratedXSec(0.), theIntegratedXSecErr(0.), theSumWeights(0.), norm(0.) {} GeneralSampler::~GeneralSampler() {} IBPtr GeneralSampler::clone() const { return new_ptr(*this); } IBPtr GeneralSampler::fullclone() const { return new_ptr(*this); } double sign(double x) { return x >= 0. ? 1. : -1.; } void GeneralSampler::initialize() { if ( theBinSampler->isUnweighting() && eventHandler()->weighted() ) { throw InitException() << "weighted events requested from unweighting bin sampler object."; } if ( !samplers.empty() ) return; boost::progress_display* progressBar = 0; if ( !theVerbose ) { cout << "integrating subprocesses"; progressBar = new boost::progress_display(eventHandler()->nBins(),cout); } for ( int b = 0; b < eventHandler()->nBins(); ++b ) { Ptr::ptr s = theBinSampler->cloneMe(); s->eventHandler(eventHandler()); s->bin(b); lastSampler = s; s->initialize(theVerbose); samplers[b] = s; if ( !theVerbose ) ++(*progressBar); if ( s->nanPoints() && theVerbose ) { cout << "warning: " << s->nanPoints() << " of " << s->allPoints() << " points with nan or inf weight.\n" << flush; } } updateCrossSections(true); if ( theVerbose ) cout << "estimated total cross section is ( " << integratedXSec()/nanobarn << " +/- " << integratedXSecErr()/nanobarn << " ) nb\n" << flush; if ( progressBar ) delete progressBar; } double GeneralSampler::generate() { long tries = 0; long excptTries = 0; if ( !theFlatSubprocesses ) lastSampler = samplers.upper_bound(UseRandom::rnd())->second; else { map::ptr>::iterator s = samplers.begin(); advance(s,(size_t)(UseRandom::rnd()*samplers.size())); lastSampler = s->second; } while ( true ) { try { lastSampler->generate(eventHandler()->weighted()); } catch (BinSampler::NewMaximum& update) { if ( !eventHandler()->weighted() ) { unsigned long skip = (unsigned long)(lastSampler->acceptedPoints()*(1.-update.oldMaxWeight/update.newMaxWeight)); map::tptr,unsigned long>::iterator s = skipMap.find(lastSampler); if ( s != skipMap.end() ) s->second += skip; else if ( skip != 0 ) skipMap[lastSampler] = skip; lastSampler = samplers.upper_bound(UseRandom::rnd())->second; tries = 0; if ( ++excptTries == eventHandler()->maxLoop() ) break; continue; } } catch(BinSampler::UpdateCrossSections) { updateCrossSections(); lastSampler = samplers.upper_bound(UseRandom::rnd())->second; tries = 0; if ( ++excptTries == eventHandler()->maxLoop() ) break; continue; } catch (...) { throw; } if ( isnan(lastSampler->lastWeight()) || isinf(lastSampler->lastWeight()) ) { lastSampler = samplers.upper_bound(UseRandom::rnd())->second; tries = 0; if ( ++excptTries == eventHandler()->maxLoop() ) break; continue; } if ( eventHandler()->weighted() && lastSampler->lastWeight() == 0.0 ) { lastSampler->accept(); lastSampler = samplers.upper_bound(UseRandom::rnd())->second; tries = 0; if ( ++excptTries == eventHandler()->maxLoop() ) break; continue; } if ( eventHandler()->weighted() || lastSampler->isUnweighting() ) break; if ( abs(lastSampler->lastWeight())/lastSampler->maxWeight() > UseRandom::rnd() ) { if ( skipMap.empty() ) break; map::tptr,unsigned long>::iterator s = skipMap.find(lastSampler); if ( s == skipMap.end() ) break; s->second -= 1; if ( s->second == 0 ) skipMap.erase(s); lastSampler = samplers.upper_bound(UseRandom::rnd())->second; tries = 0; if ( ++excptTries == eventHandler()->maxLoop() ) break; continue; } if ( ++tries == eventHandler()->maxLoop() ) { throw MaxTryException() << "Maximum number of unweighting tries reached in GeneralSampler::generate()\n" << "for process " << lastSampler->process() << Exception::eventerror; } } if ( excptTries == eventHandler()->maxLoop() ) throw Exception() << "GeneralSampler::generate() : Maximum number of tries to re-run event " << "selection reached. Aborting now." << Exception::runerror; lastPoint() = lastSampler->lastPoint(); lastSampler->accept(); if ( !eventHandler()->weighted() ) { theSumWeights += sign(lastSampler->lastWeight()); return sign(lastSampler->lastWeight()); } else { double w = lastSampler->lastWeight()/(norm*lastSampler->bias()); theSumWeights += w; return w; } return 0.; } void GeneralSampler::rejectLast() { lastSampler->reject(); if ( !eventHandler()->weighted() ) { theSumWeights -= sign(lastSampler->lastWeight()); } else { theSumWeights -= lastSampler->lastWeight()/(norm*lastSampler->bias()); } } void GeneralSampler::currentCrossSections() const { if ( !isSampling ) return; double xsec = 0.; double var = 0.; for ( map::ptr>::const_iterator s = samplers.begin(); s != samplers.end(); ++s ) { xsec += s->second->averageWeight(); var += s->second->averageWeightVariance(); } theIntegratedXSec = xsec; theIntegratedXSecErr = sqrt(var); } void GeneralSampler::updateCrossSections(bool) { double xsec = 0.; double var = 0.; double sumbias = 0.; for ( map::ptr>::iterator s = samplers.begin(); s != samplers.end(); ++s ) { if ( (isSampling && s->second == lastSampler) || !isSampling ) s->second->nextIteration(); if ( isSampling && s->second == lastSampler ) { s->second->maxWeight(s->second->iterations().back().maxWeight()); s->second->minWeight(s->second->iterations().back().minWeight()); } xsec += s->second->averageWeight(); var += s->second->averageWeightVariance(); sumbias += s->second->averageAbsWeight(); } theIntegratedXSec = xsec; theIntegratedXSecErr = sqrt(var); norm = sumbias; map::ptr> newSamplers; double current = 0.; for ( map::ptr>::iterator s = samplers.begin(); s != samplers.end(); ++s ) { double abssw = s->second->averageAbsWeight(); s->second->bias(abssw/sumbias); current += abssw; newSamplers[current/sumbias] = s->second; } samplers = newSamplers; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void GeneralSampler::dofinish() { set compensating; for ( map::ptr>::const_iterator s = samplers.begin(); s != samplers.end(); ++s ) { if ( s->second->compensating() || skipMap.find(s->second) != skipMap.end() ) { compensating.insert(s->second->process()); } if ( s->second->nanPoints() ) { generator()->logWarning(Exception() << "warning: " << s->second->nanPoints() << " of " << s->second->allPoints() << " points with nan or inf weight\n" << "in " << s->second->process() << Exception::warning); if ( theVerbose ) { cout << "warning: " << s->second->nanPoints() << " of " << s->second->allPoints() << " points with nan or inf weight\n" << "in " << s->second->process() << "\n"; } } s->second->finalize(theVerbose); } updateCrossSections(); if ( theVerbose ) { if ( !compensating.empty() ) { cout << "warning: sampling for the following processes is still compensating:\n"; for ( set::const_iterator c = compensating.begin(); c != compensating.end(); ++c ) cout << *c << "\n"; } cout << "final integrated cross section is ( " << integratedXSec()/nanobarn << " +/- " << integratedXSecErr()/nanobarn << " ) nb\n" << flush; } if ( !compensating.empty() ) { generator()->logWarning(Exception() << "Warning: Some samplers are still in compensating mode." << Exception::warning); } SamplerBase::dofinish(); } void GeneralSampler::doinitrun() { SamplerBase::doinitrun(); for ( map::ptr>::iterator s = samplers.begin(); s != samplers.end(); ++s ) { s->second->eventHandler(eventHandler()); s->second->initialize(false); assert( !s->second->iterations().empty() ); s->second->maxWeight(s->second->iterations().back().maxWeight()); s->second->minWeight(s->second->iterations().back().minWeight()); } isSampling = true; } void GeneralSampler::rebind(const TranslationMap & trans) { for ( map::ptr>::iterator s = samplers.begin(); s != samplers.end(); ++s ) s->second = trans.translate(s->second); SamplerBase::rebind(trans); } IVector GeneralSampler::getReferences() { IVector ret = SamplerBase::getReferences(); for ( map::ptr>::iterator s = samplers.begin(); s != samplers.end(); ++s ) ret.push_back(s->second); return ret; } void GeneralSampler::persistentOutput(PersistentOStream & os) const { os << theBinSampler << theVerbose << theFlatSubprocesses << samplers << lastSampler << theIntegratedXSec << theIntegratedXSecErr << theSumWeights << norm; } void GeneralSampler::persistentInput(PersistentIStream & is, int) { is >> theBinSampler >> theVerbose >> theFlatSubprocesses >> samplers >> lastSampler >> theIntegratedXSec >> theIntegratedXSecErr >> theSumWeights >> norm; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeHerwigGeneralSampler("Herwig::GeneralSampler", "HwExsample2.so"); void GeneralSampler::Init() { static ClassDocumentation documentation ("A GeneralSampler class"); static Reference interfaceBinSampler ("BinSampler", "The bin sampler to be used.", &GeneralSampler::theBinSampler, false, false, true, false, false); static Switch interfaceVerbose ("Verbose", "", &GeneralSampler::theVerbose, false, false, false); static SwitchOption interfaceVerboseOn (interfaceVerbose, "On", "", true); static SwitchOption interfaceVerboseOff (interfaceVerbose, "Off", "", false); static Switch interfaceFlatSubprocesses ("FlatSubprocesses", "[debug] ", &GeneralSampler::theFlatSubprocesses, false, false, false); static SwitchOption interfaceFlatSubprocessesOn (interfaceFlatSubprocesses, "On", "", true); static SwitchOption interfaceFlatSubprocessesOff (interfaceFlatSubprocesses, "Off", "", false); interfaceFlatSubprocesses.rank(-1); } herwig++-2.6.0.orig/Doc/0000755000175000017500000000000011756464211015467 5ustar sylvestresylvestreherwig++-2.6.0.orig/Doc/refman.conf.in0000644000175000017500000000062611755204003020205 0ustar sylvestresylvestre# @configure_input@ @INCLUDE=@THEPEGPATH@/share/ThePEG/Doc/refman.conf PROJECT_NAME = Herwig++ PROJECT_NUMBER = @VERSION@ INPUT = @top_builddir@ @top_srcdir@ EXCLUDE = @top_builddir@/include INCLUDE_PATH = @top_builddir@/include @top_builddir@/Config TAGFILES = tagfileThePEG.tag=file://@THEPEGPATH@/share/ThePEG/Doc/refman-html GENERATE_TAGFILE = Herwig++-refman.tag herwig++-2.6.0.orig/Doc/fixinterfaces.pl.in0000755000175000017500000000030711754474775021304 0ustar sylvestresylvestre#!@PERL@ -pi # @configure_input@ # s|(.+?)::(.+?)|\1::\2|g; s|(.+?)|\1|g; herwig++-2.6.0.orig/Doc/Makefile.in0000644000175000017500000003752711756461676017566 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Doc DIST_COMMON = $(dist_doc_DATA) $(dist_noinst_SCRIPTS) \ $(srcdir)/HerwigDefaults.in.in $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/fixinterfaces.pl.in \ $(srcdir)/refman.conf.in $(srcdir)/refman.h.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = refman.conf refman.h HerwigDefaults.in \ fixinterfaces.pl CONFIG_CLEAN_VPATH_FILES = SCRIPTS = $(dist_noinst_SCRIPTS) AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(docdir)" DATA = $(dist_doc_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = $(pkgdatadir)/Doc dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ CLEANFILES = AllInterfaces.h Herwig++-refman.tag HerwigDefaults.rpo tagfileThePEG.tag doxywarnings.log dist_doc_DATA = refman.conf refman.h HerwigDefaults.in EXTRA_DATA = tagfileThePEG.tag dist_noinst_SCRIPTS = fixinterfaces.pl all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Doc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): refman.conf: $(top_builddir)/config.status $(srcdir)/refman.conf.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ refman.h: $(top_builddir)/config.status $(srcdir)/refman.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ HerwigDefaults.in: $(top_builddir)/config.status $(srcdir)/HerwigDefaults.in.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ fixinterfaces.pl: $(top_builddir)/config.status $(srcdir)/fixinterfaces.pl.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_docDATA: $(dist_doc_DATA) @$(NORMAL_INSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-dist_docDATA: @$(NORMAL_UNINSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: html-local info: info-am info-am: install-data-am: install-data-local install-dist_docDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_docDATA uninstall-local .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ clean-local distclean distclean-generic distclean-libtool \ distdir dvi dvi-am html html-am html-local info info-am \ install install-am install-data install-data-am \ install-data-local install-dist_docDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-dist_docDATA uninstall-local clean-local: html-clean html-clean: rm -rf refman-html Herwig++-refman.tag tagfileThePEG.tag html-local: refman-html AllInterfaces.h: HerwigDefaults.in $(top_builddir)/src/Herwig++ init -L$(top_builddir)/lib refman-html: refman.conf refman.h AllInterfaces.h tagfileThePEG.tag $(builddir)/fixinterfaces.pl AllInterfaces.h doxygen $< tagfileThePEG.tag: @if test -e $(THEPEGPATH)/share/ThePEG/Doc/ThePEG-refman.tag; then $(LN_S) $(THEPEGPATH)/share/ThePEG/Doc/ThePEG-refman.tag tagfileThePEG.tag; fi install-data-local: if test -d refman-html; then $(mkdir_p) $(DESTDIR)$(docdir);\ find refman-html -follow -name '*.*' \ -exec $(install_sh_DATA) \{\} $(DESTDIR)$(docdir)/\{\} \;; \ $(install_sh_DATA) tagfileThePEG.tag $(DESTDIR)$(docdir)/tagfileThePEG.tag; \ $(install_sh_DATA) Herwig++-refman.tag $(DESTDIR)$(docdir)/Herwig++-refman.tag;fi uninstall-local: rm -rf $(DESTDIR)$(docdir)/refman-html \ $(DESTDIR)$(docdir)/tagfileThePEG.tag \ $(DESTDIR)$(docdir)/Herwig++-refman.tag # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Doc/HerwigDefaults.in0000644000175000017500000000232411756461717020745 0ustar sylvestresylvestre# Doc/HerwigDefaults.in. Generated from HerwigDefaults.in.in by configure. # # output interfaces for documentation # the following need to come first globallibrary Herwig.so library HwWeakCurrents.so # library Hw64Decay.so library HwAnalysis.so library HwFormFactors.so library HwLEPAnalysis.so library HwTevatronAnalysis.so library HwMamboDecay.so library HwMEHadronFast.so library HwMEHadron.so library HwMEDIS.so library HwMELepton.so library HwMEGammaGamma.so library HwMEGammaHadron.so library HwPowhegMEHadron.so library HwPowhegMELepton.so library SimpleKTCut.so library HwMPI.so library HwMRST.so library HwReggeonPDF.so library HwPomeronPDF.so library HwPomeronFlux.so library HwPartonicDecay.so library HwPerturbativeDecay.so library HwPerturbativeHiggsDecay.so library HwShower.so library HwSMDecay.so library HwTauDecay.so library HwTMDecay.so library HwBaryonDecay.so library HwSOPHTY.so library HwUA5.so library HwVMDecay.so library HwSatPDF.so library HwIncomingPhotonEvolver.so library HwSusy.so library HwNMSSM.so library HwRSModel.so library HwTransplanck.so library HwUED.so library HwADDModel.so library HwLeptoquarkModel.so library HwZprimeModel.so library HwLEPJetAnalysis.so doxygendump Herwig:: AllInterfaces.h herwig++-2.6.0.orig/Doc/refman.h.in0000644000175000017500000000313311754474775017533 0ustar sylvestresylvestre/**\mainpage Herwig++ Reference Manual This is the reference manual for Herwig++. \section HwIntroduction Introduction Herwig++ is a C++ Monte Carlo event generator. */ /** \defgroup Hadronization Hadronization Classes These classes are used for the Hadronization. */ /** \defgroup Helicity Helicity classes These classes are used to include spin correlation effects. */ /** \defgroup Interfaces Interfaces classes These classes are used to interface to external tools, like matrix element generators, jet finder algorithms, etc. */ /** \defgroup MatrixElement MatrixElement classes These classes are used for the hard process generation. */ /** \defgroup Matchbox Matchbox classes Hard process generation at NLO using Catani-Seymour subtraction and NLO matching. */ /** \defgroup Models Models classes These classes are used for specific models, like the Standard Model. */ /** \defgroup PDF PDF classes These classes are used for particle density functions. */ /** \defgroup Shower Shower classes These classes are used for the Showering. */ /** \defgroup DipoleShower DipoleShower classes Classes implementing the coherent dipole shower algorithm. */ /** \defgroup Analysis Analysis classes These classes are used to perform analysis of the events generated by Herwig++ */ /** \defgroup UnderlyingEvent UnderlyingEvent classes These classes are used for the underlying event. */ /** \defgroup Utilities Utilities classes These classes provide general utilities. */ /** \defgroup Decay Decay classes These classes perform the decays */ /** \defgroup PDT Particle Data class Particle properties classses. */ herwig++-2.6.0.orig/Doc/Makefile.am0000644000175000017500000000236111755206357017531 0ustar sylvestresylvestreCLEANFILES = AllInterfaces.h Herwig++-refman.tag HerwigDefaults.rpo tagfileThePEG.tag doxywarnings.log docdir = $(pkgdatadir)/Doc dist_doc_DATA = refman.conf refman.h HerwigDefaults.in EXTRA_DATA = tagfileThePEG.tag dist_noinst_SCRIPTS = fixinterfaces.pl clean-local: html-clean html-clean: rm -rf refman-html Herwig++-refman.tag tagfileThePEG.tag html-local: refman-html AllInterfaces.h: HerwigDefaults.in $(top_builddir)/src/Herwig++ init -L$(top_builddir)/lib refman-html: refman.conf refman.h AllInterfaces.h tagfileThePEG.tag $(builddir)/fixinterfaces.pl AllInterfaces.h doxygen $< tagfileThePEG.tag: @if test -e $(THEPEGPATH)/share/ThePEG/Doc/ThePEG-refman.tag; then $(LN_S) $(THEPEGPATH)/share/ThePEG/Doc/ThePEG-refman.tag tagfileThePEG.tag; fi install-data-local: if test -d refman-html; then $(mkdir_p) $(DESTDIR)$(docdir);\ find refman-html -follow -name '*.*' \ -exec $(install_sh_DATA) \{\} $(DESTDIR)$(docdir)/\{\} \;; \ $(install_sh_DATA) tagfileThePEG.tag $(DESTDIR)$(docdir)/tagfileThePEG.tag; \ $(install_sh_DATA) Herwig++-refman.tag $(DESTDIR)$(docdir)/Herwig++-refman.tag;fi uninstall-local: rm -rf $(DESTDIR)$(docdir)/refman-html \ $(DESTDIR)$(docdir)/tagfileThePEG.tag \ $(DESTDIR)$(docdir)/Herwig++-refman.tag herwig++-2.6.0.orig/Doc/refman.conf0000644000175000017500000000066011756461716017617 0ustar sylvestresylvestre# Doc/refman.conf. Generated from refman.conf.in by configure. @INCLUDE=/mt/home/dgrell/opt/ThePEG-release/share/ThePEG/Doc/refman.conf PROJECT_NAME = Herwig++ PROJECT_NUMBER = 2.6.0 INPUT = .. .. EXCLUDE = ../include INCLUDE_PATH = ../include ../Config TAGFILES = tagfileThePEG.tag=file:///mt/home/dgrell/opt/ThePEG-release/share/ThePEG/Doc/refman-html GENERATE_TAGFILE = Herwig++-refman.tag herwig++-2.6.0.orig/Doc/fixinterfaces.pl0000755000175000017500000000040411756461717020667 0ustar sylvestresylvestre#!/usr/bin/perl -pi # Doc/fixinterfaces.pl. Generated from fixinterfaces.pl.in by configure. # s|(.+?)::(.+?)|\1::\2|g; s|(.+?)|\1|g; herwig++-2.6.0.orig/Doc/refman.h0000644000175000017500000000313311756461716017117 0ustar sylvestresylvestre/**\mainpage Herwig++ Reference Manual This is the reference manual for Herwig++. \section HwIntroduction Introduction Herwig++ is a C++ Monte Carlo event generator. */ /** \defgroup Hadronization Hadronization Classes These classes are used for the Hadronization. */ /** \defgroup Helicity Helicity classes These classes are used to include spin correlation effects. */ /** \defgroup Interfaces Interfaces classes These classes are used to interface to external tools, like matrix element generators, jet finder algorithms, etc. */ /** \defgroup MatrixElement MatrixElement classes These classes are used for the hard process generation. */ /** \defgroup Matchbox Matchbox classes Hard process generation at NLO using Catani-Seymour subtraction and NLO matching. */ /** \defgroup Models Models classes These classes are used for specific models, like the Standard Model. */ /** \defgroup PDF PDF classes These classes are used for particle density functions. */ /** \defgroup Shower Shower classes These classes are used for the Showering. */ /** \defgroup DipoleShower DipoleShower classes Classes implementing the coherent dipole shower algorithm. */ /** \defgroup Analysis Analysis classes These classes are used to perform analysis of the events generated by Herwig++ */ /** \defgroup UnderlyingEvent UnderlyingEvent classes These classes are used for the underlying event. */ /** \defgroup Utilities Utilities classes These classes provide general utilities. */ /** \defgroup Decay Decay classes These classes perform the decays */ /** \defgroup PDT Particle Data class Particle properties classses. */ herwig++-2.6.0.orig/Doc/HerwigDefaults.in.in0000644000175000017500000000210411754474775021354 0ustar sylvestresylvestre# @configure_input@ # # output interfaces for documentation # the following need to come first globallibrary Herwig.so library HwWeakCurrents.so # library Hw64Decay.so library HwAnalysis.so library HwFormFactors.so library HwLEPAnalysis.so library HwTevatronAnalysis.so library HwMamboDecay.so library HwMEHadronFast.so library HwMEHadron.so library HwMEDIS.so library HwMELepton.so library HwMEGammaGamma.so library HwMEGammaHadron.so library HwPowhegMEHadron.so library HwPowhegMELepton.so library SimpleKTCut.so library HwMPI.so library HwMRST.so library HwReggeonPDF.so library HwPomeronPDF.so library HwPomeronFlux.so library HwPartonicDecay.so library HwPerturbativeDecay.so library HwPerturbativeHiggsDecay.so library HwShower.so library HwSMDecay.so library HwTauDecay.so library HwTMDecay.so library HwBaryonDecay.so library HwSOPHTY.so library HwUA5.so library HwVMDecay.so library HwSatPDF.so library HwIncomingPhotonEvolver.so @LOAD_SUSY@ @LOAD_NMSSM@ @LOAD_RS@ @LOAD_TRP@ @LOAD_UED@ @LOAD_ADD@ @LOAD_LEPTOQUARKS@ @LOAD_SEXTET@ @LOAD_FASTJET@ doxygendump Herwig:: AllInterfaces.h herwig++-2.6.0.orig/COPYING0000644000175000017500000004312211754474776016036 0ustar sylvestresylvestre GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. herwig++-2.6.0.orig/UnderlyingEvent/0000755000175000017500000000000011756464211020104 5ustar sylvestresylvestreherwig++-2.6.0.orig/UnderlyingEvent/MPIHandler.fh0000644000175000017500000000050511754474773022362 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the MPIHandler class. // #ifndef HERWIG_MPIHandler_FH #define HERWIG_MPIHandler_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; //create typedefs for c, t, tc, MPIHPtr's: ThePEG_DECLARE_CLASS_POINTERS(MPIHandler,MPIHPtr); } #endif herwig++-2.6.0.orig/UnderlyingEvent/ProcessHandler.fh0000644000175000017500000000053111754474773023352 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the ProcessHandler class. // #ifndef HERWIG_ProcessHandler_FH #define HERWIG_ProcessHandler_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; //create typedefs for c, t, tc, ProHdlPtr's: ThePEG_DECLARE_CLASS_POINTERS(ProcessHandler,ProHdlPtr); } #endif herwig++-2.6.0.orig/UnderlyingEvent/MPIXSecReweighter.h0000644000175000017500000000675511754474773023544 0ustar sylvestresylvestre// -*- C++ -*- // // MPIXSecReweighter.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_MPIXSecReweighter_H #define Herwig_MPIXSecReweighter_H // // This is the declaration of the MPIXSecReweighter class. // #include "ThePEG/Handlers/StepHandler.h" namespace Herwig { using namespace ThePEG; /** * \ingroup UnderlyingEvent * * \brief MPIXSecReweighter sets up the proper minimum bias cross * section. * */ class MPIXSecReweighter: public StepHandler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MPIXSecReweighter(); /** * The destructor. */ virtual ~MPIXSecReweighter(); //@} public: /** @name Virtual functions required by the StepHandler class. */ //@{ /** * The main function called by the EventHandler class to * perform a step. Given the current state of an Event, this function * performs the event generation step and includes the result in a new * Step object int the Event record. * @param eh the EventHandler in charge of the Event generation. * @param tagged if not empty these are the only particles which should * be considered by the StepHandler. * @param hint a Hint object with possible information from previously * performed steps. * @throws Veto if the StepHandler requires the current step to be discarded. * @throws Stop if the generation of the current Event should be stopped * after this call. * @throws Exception if something goes wrong. */ virtual void handle(EventHandler & eh, const tPVector & tagged, const Hint & hint); //@} 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MPIXSecReweighter & operator=(const MPIXSecReweighter &); /** * The sum of weights currently accumulated. */ double sumWeights; /** * The integrated (ME) cross section currently accumulated. */ CrossSection xSec; }; } #endif /* Herwig_MPIXSecReweighter_H */ herwig++-2.6.0.orig/UnderlyingEvent/ProcessHandler.h0000644000175000017500000003075711754474773023221 0ustar sylvestresylvestre// -*- C++ -*- // // ProcessHandler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ProcessHandler_H #define HERWIG_ProcessHandler_H // // This is the declaration of the ProcessHandler class. // #include "ThePEG/Interface/Interfaced.h" #include "ThePEG/Handlers/StandardEventHandler.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Handlers/SubProcessHandler.h" #include "ThePEG/Handlers/LuminosityFunction.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Handlers/SamplerBase.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/MatrixElement/MEBase.h" #include "ThePEG/Handlers/CascadeHandler.h" #include #include "ProcessHandler.fh" #include "stat.h" namespace Herwig { using namespace ThePEG; /** \ingroup UnderlyingEvent * \class ProcessHandler * This class is for handling the sampling of * semi hard partonic interactions. If several types of partonic interactions * are needed. Each of them has it's own ProcessHandler. A reference to them is * stored in MPIHandler, which administers everything. * * \author Manuel B\"ahr * * @see \ref ProcessHandlerInterfaces "The interfaces" * defined for ProcessHandler. * @see MPISampler * @see MPIHandler */ class ProcessHandler: public Interfaced, public LastXCombInfo<> { public: /** A weighted list of pointers to StandardXComb objects. */ typedef Selector XSelector; /** A vector of pointers to StandardXComb objects. */ typedef vector XVector; /** A vector of cross sections. */ typedef vector XSVector; /** Map of pointers to StandardXComb objects indexed by pointers to * the corresponding MEBase object. */ typedef map MEXMap; public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ ProcessHandler(); /** * The copy constructor. */ ProcessHandler(const ProcessHandler &); /** * The destructor. */ virtual ~ProcessHandler(); //@} public: /** @name Methods for the MPI generation. */ //@{ /** * Select a StandardXComb according to it's weight * @return that StandardXComb Object */ inline tStdXCombPtr generate(); //@} /** @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(); /** * Initialize this Multiple Interaction handler and all related objects needed to * generate additional events. */ void initialize(tSubHdlPtr sub, tCutsPtr cuts, tEHPtr eh); /** * Return the integrated cross section. */ CrossSection integratedXSec() const; /** * Write out accumulated statistics about intergrated cross sections * and stuff. */ void statistics(ostream &, Stat &) const; /** @name Functions used for the actual generation */ //@{ /** * Return the cross section for the chosen phase space point. * @param r a vector of random numbers to be used in the generation * of a phase space point. */ virtual CrossSection dSigDR(const vector & r); /** @name Simple access functions. */ //@{ /** * The level of statistics. Controlls the amount of statistics * written out after each run to the EventGenerators * .out file. Simply the EventHandler method is called here. */ inline int statLevel() const; /** * The pair of incoming particle types obtained via the EventHandler */ inline const cPDPair & incoming() const; /** * Access the luminosity function via the EventHandler. */ inline const LuminosityFunction & lumiFn() const; /** * The number of phase space dimensions used by the luminosity * function. Calls the corresponding StandardEventHandler method. */ inline int lumiDim() const; /** * Return the number of separate bins of StandardXComb objects to * sample. */ int nBins() const; /** * Return the number of phase space dimensions needed for the * sampling of indicated bin of StandardXComb objects. */ inline int maxDim(int bin) const; /** * The number of dimensions of the basic phase space to generate * sub-processes in for a given bin of StandardXComb objects. */ inline int nDim(int bin) const; /** * Return the maximum number attemts allowed to select a sub-process * for each event. Calls the corresponding StandardEventHandler method. */ inline long maxLoop() const; protected: /** * Generate a phase space point and return the corresponding cross * section. Is called from sSigDR(const vector &). * @param ll a pair of doubles giving the logarithms of the (inverse * energy fractions of the maximum CMS energy of the incoming * particles. * @param maxS the maximum squared CMS energy of the incoming particles. * @param ibin the preselected bin of StandardXComb objects to choose * sub-process from * @param nr the number of random numbers availiable in \a r. * @param r an array of random numbers to be used to generate a * phase-space point. */ virtual CrossSection dSigDR(const pair ll, Energy2 maxS, int ibin, int nr, const double * r); /** * Select an StandardXComb. Given a preselected bin, \a ibin of * StandardXComb objects pick one to generate the corresponding * sub-process with the given \a weight. */ tStdXCombPtr select(int bin, double weight); /** * Create and add StandardXComb objects. * * @param maxEnergy the maximum CMS energy of the incoming particles. * @param sub a pointer to the SubProcessHandler object. * @param extractor a pointer to the PartonExtractor object. * @param cuts a pointer to the Cuts object. * @param ckkw a currently empty pointer to a CascadeHandler to be used for CKKW reweighting. * @param me a pointer to the MEBase object. * @param pBins a pair of PartonBins describing the * partons extracted from the particles */ void addME(Energy maxEnergy, tSubHdlPtr sub, tPExtrPtr extractor, tCutsPtr cuts, tCascHdlPtr ckkw, tMEPtr me, const PBPair & pBins); /** * Return the vector of StandardXComb objects. */ inline const XVector & xCombs() const; /** * Return the vector of StandardXComb objects. */ inline XVector & xCombs(); /** * Return the vector of cross sections. */ inline const XSVector & xSecs() const; /** * Return the vector of cross sections. */ inline XSVector & xSecs(); /** * Return the strategy to be used when sampling different StandardXComb * objects. * @return 0 if all StandardXComb objects are sampled together. 1 if * all StandardXComb objects which have the same matrix element object are * sampled together. 2 if all StandardXComb objects are sampled separately. */ inline int binStrategy() const; /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} private: /** * Return the ThePEG::EventHandler assigned to this handler. * This methods shadows ThePEG::StepHandler::eventHandler(), because * it is not virtual in ThePEG::StepHandler. This is ok, because this * method would give a null-pointer at some stages, whereas this method * gives access to the explicitely copied pointer (in doinitrun()) * to the ThePEG::EventHandler. */ inline tEHPtr eventHandler() const; /** * Return the sampler assigned to this handler. */ inline tSamplerPtr sampler(); /** * Return the sampler assigned to this handler. */ inline tcSamplerPtr sampler() const; /** * Return a reference to the Cuts of this * MultipleInteractionHandler. Note that these cuts may be overridden by the * SubProcess chosen. */ inline tCutsPtr cuts() const; /** * Access the sub-process handler. */ inline tSubHdlPtr subProcess(); protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initProcessHandler; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ProcessHandler & operator=(const ProcessHandler &); /** * The phase space sampler responsible for generating phase space * points according to the cross section given by this handler. */ SamplerPtr theSampler; /** * A pointer to the EventHandler that calls us. Has to be saved, because the * method eventHandler() inherited from ThePEG::StepHandler returns a null-pointer * sometimes. Leif changed that in r1053 so that a valid pointer is present, when * calling doinitrun(). */ tEHPtr theHandler; /** * The kinematical cuts used for this collision handler. */ tCutsPtr theCuts;//used a transient pointer, //because regular pointer is already in MPIHandler /** * The SubProcessHandler that is connected to this ProcessHandler. */ tSubHdlPtr theSubProcess;//used a transient pointer, //because regular pointer is already in MPIHandler /** * The StandardXComb objects. */ XVector theXCombs; /** * The (incrementally summed) cross sections associated with the * StandardXComb objects for the last selected phase space point. */ XSVector theXSecs; /** * The strategy to be used when sampling different StandardXComb * objects. 0 means all StandardXComb objects are sampled * together. 1 means all StandardXComb objects which have the same * matrix element object are sampled together. 2 means all * StandardXComb objects are sampled separately. */ int theBinStrategy; /** * The map used to store all XBins with the same matrix element for * option 1 in theBinStrategy. */ MEXMap theMEXMap; /** * The number of degrees of freedom needed to generate the phase * space for the different bins. */ vector theMaxDims; protected: /** @cond EXCEPTIONCLASSES */ /** * Exception class used by the MultipleInteractionHandler, when something * during initialization went wrong. * \todo understand!!! */ class InitError: public Exception {}; /** @endcond */ }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ProcessHandler. */ template <> struct BaseClassTrait { /** Typedef of the first base class of ProcessHandler. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the ProcessHandler class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::ProcessHandler"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the ProcessHandler class and any other class on which it depends * (except the base class). */ static string library() { return "SimpleKTCut.so HwMPI.so"; } }; /** @endcond */ } #include "ProcessHandler.icc" #ifndef ThePEG_TEMPLATES_IN_CC_FILE // #include "ProcessHandler.tcc" #endif #endif /* HERWIG_ProcessHandler_H */ herwig++-2.6.0.orig/UnderlyingEvent/ProcessHandler.cc0000644000175000017500000003276611754474773023361 0ustar sylvestresylvestre// -*- C++ -*- // // ProcessHandler.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ProcessHandler class. // #include "ProcessHandler.h" #include "MPISampler.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Handlers/SubProcessHandler.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "ThePEG/PDF/PartonExtractor.h" #include "ThePEG/MatrixElement/MEBase.h" #include "ThePEG/Handlers/LuminosityFunction.h" #include "ThePEG/Handlers/CascadeHandler.h" #include "ThePEG/Cuts/Cuts.h" #include "Herwig++/Utilities/GaussianIntegrator.h" #include "gsl/gsl_sf_bessel.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "ProcessHandler.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; ProcessHandler::ProcessHandler() : theBinStrategy(2) {} ProcessHandler::ProcessHandler(const ProcessHandler & x) : Interfaced(x), LastXCombInfo<>(x), theSampler(x.theSampler), theHandler(x.theHandler), theCuts(x.theCuts), theSubProcess(x.theSubProcess), theXCombs(x.theXCombs), theXSecs(x.theXSecs), theBinStrategy(x.theBinStrategy), theMEXMap(x.theMEXMap), theMaxDims(x.theMaxDims) {} ProcessHandler::~ProcessHandler() {} void ProcessHandler::initialize(tSubHdlPtr sub, tCutsPtr cut, tEHPtr eh) { /* This method should be called during the "read" phase! However due to the unpredictable order in which objects are set up by ThePEG it is not guaranteed that the EventHandler is present. So we move that to doinitrun of the MPIHandler! */ if( !eh || !sub || !cut ) throw Exception() << "ProcessHandler was created without specifying a SubProcess " << "or a Cut Object or the EventHandler." << Exception::runerror; theHandler = eh; theCuts = cut; theSubProcess = sub; theSampler = new_ptr(MPISampler()); Energy maxEnergy = lumiFn().maximumCMEnergy(); xCombs().clear(); xSecs().clear(); cuts()->initialize(sqr(maxEnergy), lumiFn().Y()); CutsPtr kincuts = (*subProcess()).cuts()? (*subProcess()).cuts(): cuts(); if ( (*subProcess()).cuts() ) kincuts->initialize(sqr(maxEnergy), lumiFn().Y()); PExtrPtr pextract = (*subProcess()).pExtractor(); // Use an empty ckkw handler for the additional interactions: tCascHdlPtr ckkw = tCascHdlPtr(); PartonPairVec vpc = pextract->getPartons(maxEnergy, incoming(), *kincuts); // The last parton bin pair was in fact the bins corresponding to // the incoming particles, so we remove them, but save them to // keep them referenced. PBPair orig = vpc.back(); vpc.pop_back(); for ( PartonPairVec::iterator ppit = vpc.begin(); ppit != vpc.end(); ++ppit ) for ( MEVector::const_iterator meit = (*subProcess()).MEs().begin(); meit != (*subProcess()).MEs().end(); ++meit ) addME(maxEnergy, subProcess(), pextract, kincuts, ckkw, *meit, *ppit); xSecs().resize(xCombs().size()); theMaxDims.clear(); switch ( binStrategy() ) { case 0: { theMaxDims.push_back(0); for ( int i = 0, N = xCombs().size(); i < N; ++i ) theMaxDims[0] = max(theMaxDims[0], xCombs()[i]->nDim()); break; } case 1: { for ( int i = 0, N = xCombs().size(); i < N; ++i ) theMEXMap[xCombs()[i]->matrixElement()].push_back(xCombs()[i]); MEXMap::const_iterator mei = theMEXMap.begin(); for ( int i = 0, N = theMEXMap.size(); i < N; ++i, ++mei) { theMaxDims.push_back(0); for ( int j = 0, M = mei->second.size(); j < M; ++j ) theMaxDims[i] = max(theMaxDims[i], mei->second[j]->nDim()); } break; } case 2: { for ( int i = 0, N = xCombs().size(); i < N; ++i ) theMaxDims.push_back(xCombs()[i]->nDim()); break; } } tMPISamplerPtr smplr = dynamic_ptr_cast(sampler()); smplr->setProcessHandler(this); //sample 2 PSpoints to check for zero xsec in advance smplr->initialize(); } void ProcessHandler:: addME(Energy maxEnergy, tSubHdlPtr sub, tPExtrPtr extractor, tCutsPtr cuts, tCascHdlPtr ckkw, tMEPtr me, const PBPair & pBins) { typedef MEBase::DiagramVector DiagramVector; typedef map DiagramMap; cPDPair pin(pBins.first->parton(), pBins.second->parton()); DiagramVector diag = me->diagrams(); DiagramMap tdiag; DiagramMap tmdiag; for ( int i = 0, N = diag.size(); i < N; ++i ) { if ( diag[i]->partons()[0] == pin.first && diag[i]->partons()[1] == pin.second ) tdiag[diag[i]->getTag()].push_back(diag[i]); if ( diag[i]->partons()[0] == pin.second && diag[i]->partons()[1] == pin.first ) tmdiag[diag[i]->getTag()].push_back(diag[i]); } bool mirror = false; if ( ( mirror = tdiag.empty() ) ) tdiag = tmdiag; for ( DiagramMap::iterator dit = tdiag.begin(); dit != tdiag.end(); ++dit ) { //todo: hope that it is no problem that I take the EventHandler here and not the ProcessHandler: StdXCombPtr xcomb = new_ptr(StandardXComb(maxEnergy, incoming(), eventHandler(), sub, extractor, ckkw, pBins, cuts, me, dit->second, mirror)); if ( xcomb->checkInit() ) xCombs().push_back(xcomb); else generator()->logWarning( InitError() << "The matrix element '" << xcomb->matrixElement()->name() << "' cannot generate the diagram '" << dit->first << "' when used together with the parton extractor '" << xcomb->pExtractor()->name() << "'. The corresponding diagram is switched off." << Exception::warning); } } tStdXCombPtr ProcessHandler::select(int bin, double weight) { int i = upper_bound(xSecs().begin(), xSecs().end(), UseRandom::rnd()*xSecs().back()) - xSecs().begin(); tStdXCombPtr lastXC; switch ( binStrategy() ) { case 0: lastXC = xCombs()[i]; break; case 1: { MEXMap::iterator mei = theMEXMap.begin(); for ( int j = 0; j < bin; ++j) ++mei; lastXC = mei->second[i]; break; } case 2: lastXC = xCombs()[bin]; break; } // clean up the old XComb object before switching to a new one if ( theLastXComb && theLastXComb != lastXC ) theLastXComb->clean(); theLastXComb = lastXC; lastXC->select(weight); lastXC->accept(); lastXC->matrixElement()->setXComb(lastXC); return lastXC; } CrossSection ProcessHandler:: dSigDR(const pair ll, Energy2 maxS, int ibin, int nr, const double * r) { PPair inc = make_pair(incoming().first->produceParticle(), incoming().second->produceParticle()); SimplePhaseSpace::CMS(inc, maxS); XVector xv; switch ( binStrategy() ) { case 0: xv = xCombs(); break; case 1: { MEXMap::iterator mei = theMEXMap.begin(); for ( int i = 0; i < ibin; ++i) ++mei; xv = mei->second; break; } case 2: xv = XVector(1, xCombs()[ibin]); break; } xSecs().resize(xv.size()); for ( int i = 0, N = xv.size(); i < N; ++i ) xv[i]->prepare(inc); CrossSection sum = 0.0*nanobarn; for ( int i = 0, N = xv.size(); i < N; ++i ) xSecs()[i] = ( sum += xv[i]->dSigDR(ll, nr, r) ); return sum; } CrossSection ProcessHandler::dSigDR(const vector & r) { double jac = 1.0; pair ll = lumiFn().generateLL(&r[0], jac); Energy2 maxS = sqr(lumiFn().maximumCMEnergy())/exp(ll.first + ll.second); int bin = sampler()->lastBin(); CrossSection x = jac*lumiFn().value(incoming(), ll.first, ll.second) *dSigDR(ll, maxS, bin, nDim(bin) - lumiDim(), &r[lumiDim()]); return x; } int ProcessHandler::nBins() const { switch ( binStrategy() ) { case 0: return 1; case 1: return theMEXMap.size(); case 2: return xCombs().size(); } return -1; } void ProcessHandler::doinitrun() { Interfaced::doinitrun(); sampler()->initrun(); for ( int i = 0, N = xCombs().size(); i < N; ++i ) xCombs()[i]->reset(); double weight(0); //sample N PSpoints to get an estimate of the xsec for(unsigned int i=0; i<100000; i++){ weight = sampler()->generate(); tStdXCombPtr lastXC = select(sampler()->lastBin(), weight); } } CrossSection ProcessHandler::integratedXSec() const { if ( sampler()->integratedXSec() == 0.0*nanobarn ) return sampler()->maxXSec(); Stat tot; for ( int i = 0, N = xCombs().size(); i < N; ++i ) { const StandardXComb & x = *xCombs()[i]; Stat s; s = Stat(x.stats().attempts(), x.stats().accepted(), x.stats().sumWeights(), sampler()->integratedXSec(), sampler()->sumWeights()); tot += s; } return tot.xSec(); } void ProcessHandler::statistics(ostream & os, Stat & tot) const { if ( statLevel() == 0 ) return; map partonMap; map meMap; map extractMap; // Stat tot; for ( int i = 0, N = xCombs().size(); i < N; ++i ) { const StandardXComb & x = *xCombs()[i]; Stat s; s = Stat(x.stats().attempts(), x.stats().accepted(), x.stats().sumWeights(), sampler()->integratedXSec(), sampler()->sumWeights()); partonMap[x.partons()] += s; meMap[x.matrixElement()] += s; extractMap[x.pExtractor()] += s; tot += s; } string line = "=======================================" "=======================================\n"; if ( tot.accepted <= 0 ) { os << line << "No events generated by event handler '" << name() << "'." << endl; return; } os //<< line << "Statistics for event handler \'" << name() << "\':\n" << " " << "generated number of Cross-section\n" << " " << " events attempts (nb)\n"; os << line << "Total:" << setw(42) << tot.accepted << setw(13) << tot.attempted << setw(17) << tot.xSec()/nanobarn << endl << line; if ( statLevel() == 1 ) return; os << "Per matrix element breakdown:\n"; for ( map::iterator i = meMap.begin(); i != meMap.end(); ++i ) { string n = i->first->name(); n.resize(37, ' '); os << n << setw(11) << i->second.accepted << setw(13) << i->second.attempted << setw(17) << i->second.xSec()/nanobarn << endl; } os << line; if ( statLevel() == 2 ) return; os << "Per parton extractor breakdown:\n"; for ( map::iterator i = extractMap.begin(); i != extractMap.end(); ++i ) { string n = i->first->name(); n.resize(37, ' '); os << n << setw(11) << i->second.accepted << setw(13) << i->second.attempted << setw(17) << i->second.xSec()/millibarn << endl; } os << line; os << "Per incoming partons breakdown:\n"; for ( map::iterator i = partonMap.begin(); i != partonMap.end(); ++i ) { string n = i->first.first->PDGName() + " " + i->first.second->PDGName(); n.resize(37, ' '); os << n << setw(11) << i->second.accepted << setw(13) << i->second.attempted << setw(17) << i->second.xSec()/millibarn << endl; } os << line; if ( statLevel() == 3 ) return; os << "Detailed breakdown:\n"; double xsectot = sampler()->integratedXSec()/ (sampler()->sumWeights()*nanobarn); for ( int i = 0, N = xCombs().size(); i < N; ++i ) { const StandardXComb & x = *xCombs()[i]; os << "(" << x.pExtractor()->name() << ") " << x.partons().first->PDGName() << " " << x.partons().second->PDGName() << " (" << x.matrixElement()->name() << " " << x.lastDiagram()->getTag() << ") " << endl << setw(48) << x.stats().accepted() << setw(13) << x.stats().attempts() << setw(17) << x.stats().sumWeights()*xsectot << endl; } os << line; } void ProcessHandler::persistentOutput(PersistentOStream & os) const { os << theBinStrategy << theSubProcess << theCuts << theLastXComb << theXCombs << ounit(theXSecs, nanobarn) << theMaxDims << theMEXMap << theSampler << theHandler; } void ProcessHandler::persistentInput(PersistentIStream & is, int) { is >> theBinStrategy >> theSubProcess >> theCuts >> theLastXComb >> theXCombs >> iunit(theXSecs, nanobarn) >> theMaxDims >> theMEXMap >> theSampler >> theHandler; } ClassDescription ProcessHandler::initProcessHandler; // Definition of the static class description member. void ProcessHandler::Init() { static ClassDocumentation documentation ("There is soon documentation for the ProcessHandler class"); /* * Object will be created outside of *.in files * static Switch interfaceBinStrategy ("BinStrategy", "The strategy to be used when sampling different ThePEG::XComb " "objects. An ThePEG::XComb objet represents a pair of incoming " "parton types as defined by a ThePEG::PartonExtractor and a " "matrix element.", &ProcessHandler::theBinStrategy, 2, false, false); static SwitchOption interfaceBinStrategy0 (interfaceBinStrategy, "AllAtOnce", "All bins are sampled together.", 0); static SwitchOption interfaceBinStrategy1 (interfaceBinStrategy, "PerME", "All bins which have the same matrix element object are sampled together.", 1); static SwitchOption interfaceBinStrategy2 (interfaceBinStrategy, "Individual", "All bins are sampled individually.", 2); */ } herwig++-2.6.0.orig/UnderlyingEvent/Makefile.in0000644000175000017500000006420711756461701022163 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = UnderlyingEvent DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) am__DEPENDENCIES_1 = HwMPI_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am_HwMPI_la_OBJECTS = HwMPI_la-MPISampler.lo HwMPI_la-MPIHandler.lo \ HwMPI_la-ProcessHandler.lo HwMPI_la-MPIXSecReweighter.lo HwMPI_la_OBJECTS = $(am_HwMPI_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwMPI_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(HwMPI_la_LDFLAGS) $(LDFLAGS) -o $@ HwUA5_la_LIBADD = am_HwUA5_la_OBJECTS = UA5Handler.lo HwUA5_la_OBJECTS = $(am_HwUA5_la_OBJECTS) HwUA5_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(HwUA5_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwMPI_la_SOURCES) $(HwUA5_la_SOURCES) DIST_SOURCES = $(HwMPI_la_SOURCES) $(HwUA5_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwUA5.la HwMPI.la HwUA5_la_SOURCES = UA5Handler.cc UA5Handler.h UA5Handler.icc HwUA5_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 5:1:0 HwMPI_la_SOURCES = MPISampler.cc MPISampler.h MPISampler.icc \ MPISampler.fh MPIHandler.cc \ MPIHandler.fh MPIHandler.h \ ProcessHandler.cc ProcessHandler.icc \ ProcessHandler.fh ProcessHandler.h \ MPIXSecReweighter.h MPIXSecReweighter.cc \ stat.h HwMPI_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 10:0:0 HwMPI_la_LIBADD = $(GSLLIBS) HwMPI_la_CPPFLAGS = $(AM_CPPFLAGS) $(GSLINCLUDE) all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu UnderlyingEvent/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu UnderlyingEvent/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwMPI.la: $(HwMPI_la_OBJECTS) $(HwMPI_la_DEPENDENCIES) $(EXTRA_HwMPI_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwMPI_la_LINK) -rpath $(pkglibdir) $(HwMPI_la_OBJECTS) $(HwMPI_la_LIBADD) $(LIBS) HwUA5.la: $(HwUA5_la_OBJECTS) $(HwUA5_la_DEPENDENCIES) $(EXTRA_HwUA5_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwUA5_la_LINK) -rpath $(pkglibdir) $(HwUA5_la_OBJECTS) $(HwUA5_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwMPI_la-MPIHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwMPI_la-MPISampler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwMPI_la-MPIXSecReweighter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwMPI_la-ProcessHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UA5Handler.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< HwMPI_la-MPISampler.lo: MPISampler.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwMPI_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HwMPI_la-MPISampler.lo -MD -MP -MF $(DEPDIR)/HwMPI_la-MPISampler.Tpo -c -o HwMPI_la-MPISampler.lo `test -f 'MPISampler.cc' || echo '$(srcdir)/'`MPISampler.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HwMPI_la-MPISampler.Tpo $(DEPDIR)/HwMPI_la-MPISampler.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='MPISampler.cc' object='HwMPI_la-MPISampler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwMPI_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HwMPI_la-MPISampler.lo `test -f 'MPISampler.cc' || echo '$(srcdir)/'`MPISampler.cc HwMPI_la-MPIHandler.lo: MPIHandler.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwMPI_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HwMPI_la-MPIHandler.lo -MD -MP -MF $(DEPDIR)/HwMPI_la-MPIHandler.Tpo -c -o HwMPI_la-MPIHandler.lo `test -f 'MPIHandler.cc' || echo '$(srcdir)/'`MPIHandler.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HwMPI_la-MPIHandler.Tpo $(DEPDIR)/HwMPI_la-MPIHandler.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='MPIHandler.cc' object='HwMPI_la-MPIHandler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwMPI_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HwMPI_la-MPIHandler.lo `test -f 'MPIHandler.cc' || echo '$(srcdir)/'`MPIHandler.cc HwMPI_la-ProcessHandler.lo: ProcessHandler.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwMPI_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HwMPI_la-ProcessHandler.lo -MD -MP -MF $(DEPDIR)/HwMPI_la-ProcessHandler.Tpo -c -o HwMPI_la-ProcessHandler.lo `test -f 'ProcessHandler.cc' || echo '$(srcdir)/'`ProcessHandler.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HwMPI_la-ProcessHandler.Tpo $(DEPDIR)/HwMPI_la-ProcessHandler.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ProcessHandler.cc' object='HwMPI_la-ProcessHandler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwMPI_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HwMPI_la-ProcessHandler.lo `test -f 'ProcessHandler.cc' || echo '$(srcdir)/'`ProcessHandler.cc HwMPI_la-MPIXSecReweighter.lo: MPIXSecReweighter.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwMPI_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HwMPI_la-MPIXSecReweighter.lo -MD -MP -MF $(DEPDIR)/HwMPI_la-MPIXSecReweighter.Tpo -c -o HwMPI_la-MPIXSecReweighter.lo `test -f 'MPIXSecReweighter.cc' || echo '$(srcdir)/'`MPIXSecReweighter.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HwMPI_la-MPIXSecReweighter.Tpo $(DEPDIR)/HwMPI_la-MPIXSecReweighter.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='MPIXSecReweighter.cc' object='HwMPI_la-MPIXSecReweighter.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwMPI_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HwMPI_la-MPIXSecReweighter.lo `test -f 'MPIXSecReweighter.cc' || echo '$(srcdir)/'`MPIXSecReweighter.cc mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/UnderlyingEvent/UA5Handler.h0000644000175000017500000003504711754474773022172 0ustar sylvestresylvestre// -*- C++ -*- // // UA5Handler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UA5_H_ #define HERWIG_UA5_H_ #include #include "Herwig++/Hadronization/CluHadConfig.h" #include namespace Herwig { using namespace ThePEG; /** \ingroup UnderlyingEvent * * This is the class definition for the UA5Handler. This * class is designed to generate an underlying event * based on the UA5 model. This is intended as a basic * underlying event model which will be superceded by a * new model in Herwig++. * * This class interfaces with * the cluster hadronization. To that end there is an * interface set up with the ClusterFissioner class and * with the ClusterDecayer class. * * The Hadronization is responsible * for the formation of the beam clusters. In this step the colour connection * between the spectators and the initial-state parton showers is cut by the * forced emission of a soft quark-antiquark pair. The underlying soft event in a * hard hadron-hadron collision is then assumed to be a soft collision * between these two beam clusters. * * The model used for the underlying event is based on the minimum-bias * \f$p\bar{p}\f$ event generator of the UA5 Collaboration, * UA5 Collaboration, G.J. Alner et al., Nucl. Phys. B291 (1987) 445, * modified to make use of our cluster fragmentation algorithm. * * The parameter ProbSoft enables one to produce an underlying event in * only a fraction ProbSoft of events (default=1.0). * * The UA5 model starts from a parametrization of the \f$p\bar{p}\f$ * inelastic charged multiplicity distribution as a negative binomial distribution, * \f[P(n) = \frac{\Gamma(n+k)}{n!\,\Gamma(k)} * \frac{(\bar n/k)^n}{(1+\bar n/k)^{n+k}}\;.\f] * The parameter \f$k\f$ is given by * \f[1/k =k_1\ln s+k_2,\f] * and \f$\bar n\f$ is given by * \f[\bar n =n_1s^{n_2}+n_3\f] * As an option, for underlying events the value of \f$\sqrt{s}\f$ used to choose * the multiplicity \f$n\f$ may be increased by a factor EnhanceCM to allow * for an enhanced underlying activity in hard events. * * Once a charged multiplicity has been selected from the above distribution, * `softclusters' are generated with flavours \f$(f_1,f_2) = (q_{n-1},\bar q_n)\f$ * by drawing \f$q_n\bar q_n = u\bar u$ or $d\bar d\f$ randomly from the * vacuum. Soft cluster masses are assigned as * \f[M = m_{q1}+m_{q2}+m_1-\log(r_1 r_2)/m_2 \f] * where \f$r_{1,2}\f$ are random numbers, which gives a (shifted) exponential * distribution of \f$M^2\f$. The parameters \f$m_1\f$ and \f$m_2\f$ control * the distribution and \f$m_{q1,2}\f$ are the masses of the quarks in the cluster. * * As each soft cluster is generated, it is decayed to stable hadrons using * the cluster hadronization model (without cluster fission) and the accumulated * charged multiplicity is computed. * Once the preselected charged multiplicity is exactly reached, * cluster generation is stopped. If it is exceeded, all clusters are rejected * and new ones are generated until the exact value is reached. In this way the * multiplicity distribution of stable charged hadrons * is generated exactly as prescribed. * * At this stage (to save time) the kinematic distribution of the soft clusters * has not yet been generated. The decay products of each cluster are stored * in its rest frame. Now the transverse momenta of the clusters are * generated with the distribution * \f[P(p_t)\propto p_t\exp\left(-p_{1,2,3}\sqrt{p_t^2+M^2}\right)\f] * where the slope parameter \f$p_{1,2,3}\f$ depends as indicated on the * flavour of the quark or diquark pair created in the * primary cluster decay, \f$p_1\f$ for light quarks, \f$p_2\f$ for the strange and * charm quarks and \f$p_3\f$ for diquarks. * Next the clusters are given a flat * rapidity distribution with Gaussian shoulders. The `reduced * rapidities' \f$\xi_i\f$ are generated first by drawing * from a distribution * \f[P(\xi) = N\;\;\;\mbox{for}\;|\xi|<0.6\f] * \f[P(\xi) = N\,e^{-(\xi-0.6)^2/2} \;\;\;\mbox{for}\;\xi>0.6\f] * \f[P(\xi) = N\,e^{-(\xi+0.6)^2/2} \;\;\;\mbox{for}\;\xi<-0.6\f] * where \f$N=1/(1.2+\sqrt{2\pi})\f$ is the normalization. Next * a scaling factor \f$Y\f$ is computed such that the scaled cluster * rapidities \f$y_i=Y\xi_i\f$, their masses and transverse momenta * satisfy momentum conservation when compared to the total * energy of the underlying event. Thus the soft cluster rapidity * distribution retains its overall shape but becomes higher and * wider as the energy of the underlying event increases. * * Finally the decay products of each cluster are boosted from * its rest frame into the lab frame and added to the event record. * * @see \ref UA5HandlerInterfaces "The interfaces" * defined for UA5Handler.. */ class UA5Handler : public HadronizationHandler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ UA5Handler(); //@} /** * 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: /** @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); //@} public: /** * This is the routine that starts the algorithm. * @param eh the EventHandler in charge of the generation. * @param tagged the vector of particles to consider. If empty, all * final state particles in the current Step is considered. * @param hint a possible Hint which is ignored in this implementation */ virtual void handle(EventHandler &eh, const tPVector &tagged, const Hint &hint) ; 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: /** * Members to decay the clusters and hadrons produced in their decay, * and insert the output in the event record. */ //@{ /** * Perform the decay of an unstable hadron. * @param parent the decaying particle * @param totalcharge The totalcharge of the decay proiducts * @param numbercharge The number of stabel charged decay products */ void performDecay(PPtr parent,int & totalcharge,int & numbercharge) const; /** * Decay a cluster to two hadrons is sufficiently massive and to one if * not. * @param cluster The cluster to decay * @param single Whether or not ot allow decays to */ void decayCluster(ClusterPtr cluster, bool single) const; /** * Recursively add particle and decay products to the step * @param particle The particle * @param step The step * @param all Insert this particle as well as children */ void insertParticle(PPtr particle,StepPtr step,bool all) const; //@} /** * Members to generate the multiplicity according to a negative binomial * distribution. */ //@{ /** * Calculate the negative binomial probability given the * mean \f$\bar n\f$, the multiplicity and \f$1/k\f$. * @param N The multplicity for which to calculate the probability * @param mean The mean multiplicity \f$\bar n\f$ * @param ek \f$1/k\f$ * @return a value distributed according the negative binomial distribution */ inline double negativeBinomial(int N, double mean, double ek) const; /** * The value of the mean multiplicity for a given energy E. * This is \f$n_1E^{2n_2}+n_3\f$ wher \f$n_1\f$, \f$n_2\f$ and \f$n_3\f$ * are parameters. * @param E the energy to calculate the mean multiplicity for * @return the mean multiplicity */ inline double meanMultiplicity(Energy E) const; /** * Generates a multiplicity for the energy E according to the negative * binomial distribution. * @param E The energy to generate for * @return the randomly generated multiplicity for the energy given */ unsigned int multiplicity(Energy E) const; //@} /** * Members to generate the momenta of the clusters */ //@{ /** * This generates the momentum of the produced particles according to * the cylindrical phase space algorithm given * in Computer Physics Communications 9 (1975) 297-304 by S. Jadach. * @param clu1 The first incoming cluster * @param clu2 The second incoming cluster * @param clusters The list of clusters produced * @param CME The center of mass energy * @param cm The center of mass momentum (of the underlying event) */ void generateMomentum(tClusterPtr clu1,tClusterPtr clu2, const ClusterVector &clusters, Energy CME, const Lorentz5Momentum & cm) const; /** * The implementation of the cylindrical phase space. * @param clusters The list of clusters to generate the momentum for * @param CME The center of mass energy */ void generateCylindricalPS(const ClusterVector &clusters, Energy CME) const; //@} /** * This returns the rotation matrix needed to rotate p into the z axis */ LorentzRotation rotate(const LorentzMomentum &p) const; /** * Various methods to generate random distributions */ //@{ /** * Gaussian distribution * @param mean the mean of the distribution * @param stdev the standard deviation of the distribution * @return Arandom value from the gaussian distribution */ template inline T gaussDistribution(T mean, T stdev) const; /** * This returns a random number with a flat distribution * [-A,A] plus gaussian tail with stdev B * TODO: Should move this to Utilities * @param A The width of the flat part * @param B The standard deviation of the gaussian tail * @return the randomly generated value */ inline double randUng(double A, double B) const; /** * Generates a random azimuthal angle and puts x onto px and py * TODO: Should move this to Utilities * @param pt The magnitude of the transverse momentum * @param px The x component after random rotation * @param py The y component after random rotation */ template inline void randAzm(T pt, T &px, T &py) const; /** * This returns random number from \f$dN/dp_T^2=exp(-p_{1,2,3}m_T\f$ distribution, * where \f$m_T=\sqrt{p_T^2+M^2}\f$. It uses Newton's method to solve \f$F-R=0\f$ * @param AM0 The mass \f$M\f$. * @param B The slope * @return the value distributed from \f$dN/dp_T^2=exp(-p_{1,2,3}m_T\f$ with mean av */ inline Energy randExt(Energy AM0,InvEnergy B) const; //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initUA5Handler; /** * This is never defined and since it can never be called it isn't * needed. The prototype is defined so the compiler doesn't use the * default = operator. */ UA5Handler& operator=(const UA5Handler &); private: /** * Reference to the ClusterFissioner object */ ClusterFissionerPtr clusterFissioner; /** * Reference to the cluster decayer object. */ ClusterDecayerPtr clusterDecayer; /** * Parameters for the mean multiplicity \f$\bar n =n_1s^{n_2}+n_3\f$ */ //@{ /** * The parameter \f$n_1\f$ */ double _n1; /** * The parameter \f$n_2\f$ */ double _n2; /** * The parameter \f$n_3\f$ */ double _n3; //@} /** * Parameters for \f$k\f$ in the negative binomial * distribution given by \f$1/k =k_1\ln s+k_2\f$ */ //@{ /** * The parameter \f$k_1\f$ */ double _k1; /** * The parameter \f$k_2\f$ */ double _k2; //@} /** * Parameters for the cluster mass distribution, * \f$M = m_{q1}+m_{q2}+m_1-\log(r_1 r_2)/m_2\f$. */ //@{ /** * The parameter \f$m_1\f$ */ Energy _m1; /** * The parameter \f$m_2\f$ */ InvEnergy _m2; //@} /** * Parameters for the transverpse momentum of the soft distribution, * \f$P(p_T) \propto p_T*exp(-p_i\sqrt{p_T^2+M^2}\f$ */ //@{ /** * The parameter \f$p_1\f$ for light quarks */ InvEnergy _p1; /** * The parameter \f$p_2\f$ for strange and charm quarks */ InvEnergy _p2; /** * The parameter \f$p_3\f$ for diquarks */ InvEnergy _p3; //@} /** * This is the probability of having a soft underlying event. */ double _probSoft; /** * This is a parameter used to enhance the CM energy used to * generate the multiplicity distribution. */ double _enhanceCM; /** * The maximum number of attempts to generate the distribution */ unsigned int _maxtries; /** * Whether to warn about using UA5 and MPI simultaneously. */ bool _needWarning; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UA5Handler. */ template<> struct BaseClassTrait { /** Typedef of the first base class of UA5Handler. */ typedef HadronizationHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the UA5Handler class and the shared object where it is defined. */ template<> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::UA5Handler"; } /** Return the name of the shared library be loaded to get * access to the WeakPartonicDecayer class and every other class it uses * (except the base class). */ static string library() { return "HwUA5.so"; } }; /** @endcond */ } #include "UA5Handler.icc" #endif herwig++-2.6.0.orig/UnderlyingEvent/MPIHandler.cc0000644000175000017500000006537211754474773022367 0ustar sylvestresylvestre// -*- C++ -*- // // MPIHandler.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MPIHandler class. // #include "MPIHandler.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Handlers/SubProcessHandler.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/MatrixElement/MEBase.h" #include "ThePEG/Handlers/CascadeHandler.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Cuts/SimpleKTCut.h" #include "gsl/gsl_sf_bessel.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; MPIHandler * MPIHandler::currentHandler_ = 0; bool MPIHandler::beamOK() const { return (HadronMatcher::Check(*eventHandler()->incoming().first) && HadronMatcher::Check(*eventHandler()->incoming().second) ); } tStdXCombPtr MPIHandler::generate(unsigned int sel) { //generate a certain process if(sel+1 > processHandlers().size()) throw Exception() << "MPIHandler::generate called with argument out of range" << Exception::runerror; return processHandlers()[sel]->generate(); } IBPtr MPIHandler::clone() const { return new_ptr(*this); } IBPtr MPIHandler::fullclone() const { return new_ptr(*this); } void MPIHandler::finalize() { if( beamOK() ){ statistics(); } } void MPIHandler::initialize() { currentHandler_ = this; useMe(); theHandler = generator()->currentEventHandler(); //stop if the EventHandler is not present: assert(theHandler); //check if MPI is wanted if( !beamOK() ){ throw Exception() << "You have requested multiple parton-parton scattering,\n" << "but the model is not forseen for the beam setup you chose.\n" << "You should therefore disable that by setting XXXGenerator:EventHandler:" << "CascadeHandler:MPIHandler to NULL" << Exception::runerror; } numSubProcs_ = subProcesses().size(); if( numSubProcs_ != cuts().size() ) throw Exception() << "MPIHandler::each SubProcess needs a Cuts Object" << "ReferenceVectors are not equal in size" << Exception::runerror; if( additionalMultiplicities_.size()+1 != numSubProcs_ ) throw Exception() << "MPIHandler: each additional SubProcess needs " << "a multiplicity assigned. This can be done in with " << "insert MPIHandler:additionalMultiplicities 0 1" << Exception::runerror; //identicalToUE_ = 0 hard process is identical to ue, -1 no one if( identicalToUE_ > (int)numSubProcs_ || identicalToUE_ < -1 ) throw Exception() << "MPIHandler:identicalToUE has disallowed value" << Exception::runerror; // override the cuts for the additional scatters if energyExtrapolation_ is // set if (energyExtrapolation_ != 0 ) { overrideUECuts(); } tcPDPtr gluon=getParticleData(ParticleID::g); //determine ptmin Ptmin_ = cuts()[0]->minKT(gluon); if(identicalToUE_ == -1){ algorithm_ = 2; }else{ if(identicalToUE_ == 0){ //Need to work a bit, in case of LesHouches events for QCD2to2 if( dynamic_ptr_cast::pointer>(eventHandler()) ){ PtOfQCDProc_ = dynamic_ptr_cast ::pointer>(eventHandler())->cuts()->minKT(gluon); }else{ if(PtOfQCDProc_ == -1.0*GeV) throw Exception() << "MPIHandler: You need to specify the pt cutoff " << "used to in the LesHouches file for QCD2to2 events" << Exception::runerror; } }else{ PtOfQCDProc_ = cuts()[identicalToUE_]->minKT(gluon); } if(PtOfQCDProc_ > 2*Ptmin_) algorithm_ = 1; else algorithm_ = 0; if(PtOfQCDProc_ == ZERO)//pure MinBias mode algorithm_ = -1; } //Init all subprocesses for(unsigned int i=0; iinitialize(subProcesses()[i], cuts()[i], eventHandler()); processHandlers().back()->initrun(); } //now calculate the individual Probabilities XSVector UEXSecs; UEXSecs.push_back(processHandlers()[0]->integratedXSec()); //save the hard cross section hardXSec_ = UEXSecs.front(); //determine sigma_soft and beta if(softInt_){//check that soft ints are requested GSLBisection rootFinder; if(twoComp_){ //two component model /* GSLMultiRoot eqSolver; slopeAndTotalXSec eq(this); pair res = eqSolver.value(eq, 10*millibarn, 0.6*GeV2); softXSec_ = res.first; softMu2_ = res.second; */ slopeBisection fs(this); try{ softMu2_ = rootFinder.value(fs, 0.3*GeV2, 1.*GeV2); softXSec_ = fs.softXSec(); }catch(GSLBisection::IntervalError){ throw Exception() << "\n**********************************************************\n" "* Inconsistent MPI parameter choice for this beam energy *\n" "**********************************************************\n" "MPIHandler parameter choice is unable to reproduce\n" "the total cross section. Please check arXiv:0806.2949\n" "for the allowed parameter space." << Exception::runerror; } }else{ //single component model TotalXSecBisection fn(this); try{ softXSec_ = rootFinder.value(fn, 0*millibarn, 5000*millibarn); }catch(GSLBisection::IntervalError){ throw Exception() << "\n**********************************************************\n" "* Inconsistent MPI parameter choice for this beam energy *\n" "**********************************************************\n" "MPIHandler parameter choice is unable to reproduce\n" "the total cross section. Please check arXiv:0806.2949\n" "for the allowed parameter space." << Exception::runerror; } } //now get the differential cross section at ptmin ProHdlPtr qcd = new_ptr(ProcessHandler()); Energy eps = 0.1*GeV; Energy ptminPlus = Ptmin_ + eps; Ptr::pointer ktCut = new_ptr(SimpleKTCut(ptminPlus)); ktCut->init(); ktCut->initrun(); CutsPtr qcdCut = new_ptr(Cuts(2*ptminPlus)); qcdCut->add(dynamic_ptr_cast(ktCut)); qcdCut->init(); qcdCut->initrun(); qcd->initialize(subProcesses()[0], qcdCut, eventHandler()); qcd->initrun(); // ds/dp_T^2 = 1/2/p_T ds/dp_T DiffXSec hardPlus = (hardXSec_-qcd->integratedXSec())/(2*Ptmin_*eps); betaBisection fn2(softXSec_, hardPlus, Ptmin_); try{ beta_ = rootFinder.value(fn2, -10/GeV2, 2/GeV2); }catch(GSLBisection::IntervalError){ throw Exception() << "MPIHandler: slope of soft pt spectrum couldn't be " << "determined." << Exception::runerror; } } Probs(UEXSecs); //MultDistribution("probs.test"); UEXSecs.clear(); } void MPIHandler::MultDistribution(string filename) const { ofstream file; double p(0.0), pold(0.0); file.open(filename.c_str()); //theMultiplicities Selector::const_iterator it = theMultiplicities.begin(); while(it != theMultiplicities.end()){ p = it->first; file << it->second.first << " " << it->second.second << " " << p-pold << '\n'; it++; pold = p; } file << "sum of all probabilities: " << theMultiplicities.sum() << endl; file.close(); } void MPIHandler::statistics() const { ostream & file = generator()->misc(); string line = "=======================================" "=======================================\n"; for(unsigned int i=0; istatistics(file, tot); file << "\n"; } if(softInt_){ file << line << "Eikonalized and soft cross sections:\n\n" << "Model parameters: " << "ptmin: " << Ptmin_/GeV << " GeV" << ", mu2: " << invRadius_/sqr(1.*GeV) << " GeV2\n" << " " << "DL mode: " << DLmode_ << ", CMenergy: " << generator()->maximumCMEnergy()/GeV << " GeV" << '\n' << "hard inclusive cross section (mb): " << hardXSec_/millibarn << '\n' << "soft inclusive cross section (mb): " << softXSec_/millibarn << '\n' << "total cross section (mb): " << totalXSecExp()/millibarn << '\n' << "inelastic cross section (mb): " << inelXSec_/millibarn << '\n' << "soft inv radius (GeV2): " << softMu2_/GeV2 << '\n' << "slope of soft pt spectrum (1/GeV2): " << beta_*sqr(1.*GeV) << '\n' << "Average hard multiplicity: " << avgNhard_ << '\n' << "Average soft multiplicity: " << avgNsoft_ << '\n' << line << endl; }else{ file << line << "Eikonalized and soft cross sections:\n\n" << "Model parameters: " << "ptmin: " << Ptmin_/GeV << " GeV" << ", mu2: " << invRadius_/sqr(1.*GeV) << " GeV2\n" << " " << ", CMenergy: " << generator()->maximumCMEnergy()/GeV << " GeV" << '\n' << "hard inclusive cross section (mb): " << hardXSec_/millibarn << '\n' << "Average hard multiplicity: " << avgNhard_ << '\n' << line << endl; } } unsigned int MPIHandler::multiplicity(unsigned int sel){ if(sel==0){//draw from the pretabulated distribution MPair m = theMultiplicities.select(UseRandom::rnd()); softMult_ = m.second; return m.first; } else{ //fixed multiplicities for the additional hard scatters if(additionalMultiplicities_.size() < sel) throw Exception() << "MPIHandler::multiplicity: process index " << "is out of range" << Exception::runerror; return additionalMultiplicities_[sel-1]; } } void MPIHandler::Probs(XSVector UEXSecs) { GSLIntegrator integrator; unsigned int iH(1), iS(0); double P(0.0); double P0(0.0);//the probability for i hard and zero soft scatters Length bmax(500.0*sqrt(millibarn)); //only one UE process will be drawn from a probability distribution, //so check that. assert(UEXSecs.size() == 1); for ( XSVector::const_iterator it = UEXSecs.begin(); it != UEXSecs.end(); ++it ) { iH = 0; //get the inel xsec Eikonalization inelint(this, -1, *it, softXSec_, softMu2_); inelXSec_ = integrator.value(inelint, ZERO, bmax); avgNhard_ = 0.0; avgNsoft_ = 0.0; bmax = 10.0*sqrt(millibarn); do{//loop over hard ints if(Algorithm()>-1 && iH==0){ iH++; continue; } iS = 0; do{//loop over soft ints if( ( Algorithm() == -1 && iS==0 && iH==0 ) ){ iS++; continue; } Eikonalization integrand(this, iH*100+iS, *it, softXSec_, softMu2_); if(Algorithm() > 0){ P = integrator.value(integrand, ZERO, bmax) / *it; }else{ P = integrator.value(integrand, ZERO, bmax) / inelXSec_; } //store the probability if(Algorithm()>-1){ theMultiplicities.insert(P, make_pair(iH-1, iS)); avgNhard_ += P*(iH-1); }else{ theMultiplicities.insert(P, make_pair(iH, iS)); avgNhard_ += P*(iH); } avgNsoft_ += P*iS; if(iS==0) P0 = P; iS++; } while ( (iS < maxScatters_) && (iS < 5 || P > 1.e-15 ) && softInt_ ); iH++; } while ( (iH < maxScatters_) && (iH < 5 || P0 > 1.e-15) ); } } // calculate the integrand Length Eikonalization::operator() (Length b) const { unsigned int Nhard(0), Nsoft(0); //fac is just: d^2b=fac*db despite that large number Length fac(Constants::twopi*b); double chiTot(( theHandler->OverlapFunction(b)*hardXSec_ + theHandler->OverlapFunction(b, softMu2_)*softXSec_ ) / 2.0); //total cross section wanted if(theoption == -2) return 2 * fac * ( 1 - exp(-chiTot) ); //inelastic cross section if(theoption == -1) return fac * ( 1 - exp(- 2.0 * chiTot) ); if(theoption >= 0){ //encode multiplicities as: N_hard*100 + N_soft Nhard = theoption/100; Nsoft = theoption%100; if(theHandler->Algorithm() > 0){ //P_n*sigma_hard: n-1 extra scatters + 1 hard scatterer != hardXSec_ return fac * Nhard * theHandler->poisson(b, hardXSec_, Nhard) * theHandler->poisson(b, softXSec_, Nsoft, softMu2_); }else{ //P_n*sigma_inel: n extra scatters return fac * theHandler->poisson(b, hardXSec_, Nhard) * theHandler->poisson(b, softXSec_, Nsoft, softMu2_); } }else{ throw Exception() << "Parameter theoption in Struct Eikonalization in " << "MPIHandler.cc has not allowed value" << Exception::runerror; return 0.0*meter; } } InvEnergy2 slopeBisection::operator() (Energy2 softMu2) const { GSLBisection root; //single component model TotalXSecBisection fn(handler_, softMu2); try{ softXSec_ = root.value(fn, 0*millibarn, 5000*millibarn); }catch(GSLBisection::IntervalError){ throw Exception() << "MPIHandler 2-Component model didn't work out." << Exception::runerror; } return handler_->slopeDiff(softXSec_, softMu2); } LengthDiff slopeInt::operator() (Length b) const { //fac is just: d^2b=fac*db Length fac(Constants::twopi*b); double chiTot(( handler_->OverlapFunction(b)*hardXSec_ + handler_->OverlapFunction(b, softMu2_)*softXSec_ ) / 2.0); InvEnergy2 b2 = sqr(b/hbarc); //B*sigma_tot return fac * b2 * ( 1 - exp(-chiTot) ); } double MPIHandler::factorial (unsigned int n) const { double f[] = {1.,1.,2.,6.,24.,120.,720.,5040.,40320.,362880.,3.6288e6, 3.99168e7,4.790016e8,6.2270208e9,8.71782912e10,1.307674368e12, 2.0922789888e13,3.55687428096e14,6.402373705728e15,1.21645100408832e17, 2.43290200817664e18,5.10909421717094e19,1.12400072777761e21, 2.5852016738885e22,6.20448401733239e23,1.5511210043331e25, 4.03291461126606e26,1.08888694504184e28,3.04888344611714e29, 8.8417619937397e30,2.65252859812191e32,8.22283865417792e33, 2.63130836933694e35,8.68331761881189e36,2.95232799039604e38, 1.03331479663861e40,3.71993326789901e41,1.37637530912263e43, 5.23022617466601e44,2.03978820811974e46,8.15915283247898e47, 3.34525266131638e49,1.40500611775288e51,6.04152630633738e52, 2.65827157478845e54,1.1962222086548e56,5.50262215981209e57, 2.58623241511168e59,1.24139155925361e61,6.08281864034268e62, 3.04140932017134e64,1.55111875328738e66,8.06581751709439e67, 4.27488328406003e69,2.30843697339241e71,1.26964033536583e73, 7.10998587804863e74,4.05269195048772e76,2.35056133128288e78, 1.3868311854569e80,8.32098711274139e81,5.07580213877225e83, 3.14699732603879e85,1.98260831540444e87,1.26886932185884e89, 8.24765059208247e90,5.44344939077443e92,3.64711109181887e94, 2.48003554243683e96,1.71122452428141e98,1.19785716699699e100, 8.50478588567862e101,6.12344583768861e103,4.47011546151268e105, 3.30788544151939e107,2.48091408113954e109,1.88549470166605e111, 1.45183092028286e113,1.13242811782063e115,8.94618213078298e116, 7.15694570462638e118,5.79712602074737e120,4.75364333701284e122, 3.94552396972066e124,3.31424013456535e126,2.81710411438055e128, 2.42270953836727e130,2.10775729837953e132,1.85482642257398e134, 1.65079551609085e136,1.48571596448176e138,1.3520015276784e140, 1.24384140546413e142,1.15677250708164e144,1.08736615665674e146, 1.03299784882391e148,9.9167793487095e149,9.61927596824821e151, 9.42689044888325e153,9.33262154439442e155,9.33262154439442e157}; if(n > maxScatters_) throw Exception() << "MPIHandler::factorial called with too large argument" << Exception::runerror; else return f[n]; } InvArea MPIHandler::OverlapFunction(Length b, Energy2 mu2) const { if(mu2 == ZERO) mu2 = invRadius_; InvLength mu = sqrt(mu2)/hbarc; return (sqr(mu)/96/Constants::pi)*pow(mu*b, 3)*(gsl_sf_bessel_Kn(3, mu*b)); } double MPIHandler::poisson(Length b, CrossSection sigma, unsigned int N, Energy2 mu2) const { if(sigma > 0*millibarn){ return pow(OverlapFunction(b, mu2)*sigma, (double)N)/factorial(N) *exp(-OverlapFunction(b, mu2)*sigma); }else{ return (N==0) ? 1.0 : 0.0; } } CrossSection MPIHandler::totalXSecDiff(CrossSection softXSec, Energy2 softMu2) const { GSLIntegrator integrator; Eikonalization integrand(this, -2, hardXSec_, softXSec, softMu2); Length bmax = 500.0*sqrt(millibarn); CrossSection tot = integrator.value(integrand, ZERO, bmax); return (tot-totalXSecExp()); } InvEnergy2 MPIHandler::slopeDiff(CrossSection softXSec, Energy2 softMu2) const { GSLIntegrator integrator; Eikonalization integrand(this, -2, hardXSec_, softXSec, softMu2); Length bmax = 500.0*sqrt(millibarn); CrossSection tot = integrator.value(integrand, ZERO, bmax); slopeInt integrand2(this, hardXSec_, softXSec, softMu2); return integrator.value(integrand2, ZERO, bmax)/tot - slopeExp(); } CrossSection MPIHandler::totalXSecExp() const { if(totalXSecExp_ != 0*millibarn) return totalXSecExp_; double pom_old = 0.0808; CrossSection coef_old = 21.7*millibarn; double pom_new_hard = 0.452; CrossSection coef_new_hard = 0.0139*millibarn; double pom_new_soft = 0.0667; CrossSection coef_new_soft = 24.22*millibarn; Energy energy(generator()->maximumCMEnergy()); switch(DLmode_){ case 1://old DL extrapolation return coef_old * pow(energy/GeV, 2*pom_old); break; case 2://old DL extrapolation fixed to CDF return 81.8*millibarn * pow(energy/1800.0/GeV, 2*pom_old); break; case 3://new DL extrapolation return coef_new_hard * pow(energy/GeV, 2*pom_new_hard) + coef_new_soft * pow(energy/GeV, 2*pom_new_soft); break; default: throw Exception() << "MPIHandler::totalXSecExp non-existing mode selected" << Exception::runerror; } } InvEnergy2 MPIHandler::slopeExp() const{ //Currently return the slope as calculated in the pomeron fit by //Donnachie & Landshoff Energy energy(generator()->maximumCMEnergy()); //slope at Energy e_0 = 1800*GeV; InvEnergy2 b_0 = 17/GeV2; return b_0 + log(energy/e_0)/GeV2; } void MPIHandler::overrideUECuts() { if(energyExtrapolation_==1) Ptmin_ = EEparamA_ * log(generator()->maximumCMEnergy() / EEparamB_); else if(energyExtrapolation_==2) Ptmin_ = pT0_*pow(double(generator()->maximumCMEnergy()/refScale_),b_); else assert(false); // create a new SimpleKTCut object with the calculated ptmin value Ptr::pointer newUEktCut = new_ptr(SimpleKTCut(Ptmin_)); newUEktCut->init(); newUEktCut->initrun(); // create a new Cuts object with MHatMin = 2 * Ptmin_ CutsPtr newUEcuts = new_ptr(Cuts(2*Ptmin_)); newUEcuts->add(dynamic_ptr_cast(newUEktCut)); newUEcuts->init(); newUEcuts->initrun(); // replace the old Cuts object cuts()[0] = newUEcuts; } void MPIHandler::persistentOutput(PersistentOStream & os) const { os << theMultiplicities << theHandler << theSubProcesses << theCuts << theProcessHandlers << additionalMultiplicities_ << identicalToUE_ << ounit(PtOfQCDProc_, GeV) << ounit(Ptmin_, GeV) << ounit(hardXSec_, millibarn) << ounit(softXSec_, millibarn) << ounit(beta_, 1/GeV2) << algorithm_ << ounit(invRadius_, GeV2) << numSubProcs_ << colourDisrupt_ << softInt_ << twoComp_ << DLmode_ << ounit(totalXSecExp_, millibarn) << energyExtrapolation_ << ounit(EEparamA_, GeV) << ounit(EEparamB_, GeV) << ounit(refScale_,GeV) << ounit(pT0_,GeV) << b_; } void MPIHandler::persistentInput(PersistentIStream & is, int) { is >> theMultiplicities >> theHandler >> theSubProcesses >> theCuts >> theProcessHandlers >> additionalMultiplicities_ >> identicalToUE_ >> iunit(PtOfQCDProc_, GeV) >> iunit(Ptmin_, GeV) >> iunit(hardXSec_, millibarn) >> iunit(softXSec_, millibarn) >> iunit(beta_, 1/GeV2) >> algorithm_ >> iunit(invRadius_, GeV2) >> numSubProcs_ >> colourDisrupt_ >> softInt_ >> twoComp_ >> DLmode_ >> iunit(totalXSecExp_, millibarn) >> energyExtrapolation_ >> iunit(EEparamA_, GeV) >> iunit(EEparamB_, GeV) >> iunit(refScale_,GeV) >> iunit(pT0_,GeV) >> b_; } ClassDescription MPIHandler::initMPIHandler; // Definition of the static class description member. void MPIHandler::Init() { static ClassDocumentation documentation ("The MPIHandler class is the main administrator of the multiple interaction model", "The underlying event was simulated with an eikonal model for multiple partonic interactions." "Details can be found in Ref.~\\cite{Bahr:2008dy,Bahr:2009ek}.", "%\\cite{Bahr:2008dy}\n" "\\bibitem{Bahr:2008dy}\n" " M.~Bahr, S.~Gieseke and M.~H.~Seymour,\n" " ``Simulation of multiple partonic interactions in Herwig++,''\n" " JHEP {\\bf 0807}, 076 (2008)\n" " [arXiv:0803.3633 [hep-ph]].\n" " %%CITATION = JHEPA,0807,076;%%\n" "\\bibitem{Bahr:2009ek}\n" " M.~Bahr, J.~M.~Butterworth, S.~Gieseke and M.~H.~Seymour,\n" " ``Soft interactions in Herwig++,''\n" " arXiv:0905.4671 [hep-ph].\n" " %%CITATION = ARXIV:0905.4671;%%\n" ); static RefVector interfaceSubhandlers ("SubProcessHandlers", "The list of sub-process handlers used in this EventHandler. ", &MPIHandler::theSubProcesses, -1, false, false, true, false, false); static RefVector interfaceCuts ("Cuts", "List of cuts used for the corresponding list of subprocesses. These cuts " "should not be overidden in individual sub-process handlers.", &MPIHandler::theCuts, -1, false, false, true, false, false); static Parameter interfaceInvRadius ("InvRadius", "The inverse hadron radius squared used in the overlap function", &MPIHandler::invRadius_, GeV2, 2.0*GeV2, 0.2*GeV2, 4.0*GeV2, true, false, Interface::limited); static ParVector interfaceadditionalMultiplicities ("additionalMultiplicities", "specify the multiplicities of secondary hard processes (multiple parton scattering)", &MPIHandler::additionalMultiplicities_, -1, 0, 0, 3, false, false, true); static Parameter interfaceIdenticalToUE ("IdenticalToUE", "Specify which of the hard processes is identical to the UE one (QCD dijets)", &MPIHandler::identicalToUE_, -1, 0, 0, false, false, Interface::nolimits); static Parameter interfacePtOfQCDProc ("PtOfQCDProc", "Specify the value of the pt cutoff for the process that is identical to the UE one", &MPIHandler::PtOfQCDProc_, GeV, -1.0*GeV, ZERO, ZERO, false, false, Interface::nolimits); static Parameter interfacecolourDisrupt ("colourDisrupt", "Fraction of connections to additional subprocesses, which are colour disrupted.", &MPIHandler::colourDisrupt_, 0.0, 0.0, 1.0, false, false, Interface::limited); static Switch interfacesoftInt ("softInt", "Switch to enable soft interactions", &MPIHandler::softInt_, true, false, false); static SwitchOption interfacesoftIntYes (interfacesoftInt, "Yes", "enable the two component model", true); static SwitchOption interfacesoftIntNo (interfacesoftInt, "No", "disable the model", false); static Switch interEnergyExtrapolation ("EnergyExtrapolation", "Switch to ignore the cuts object at MPIHandler:Cuts[0]. " "Instead, extrapolate the pt cut.", &MPIHandler::energyExtrapolation_, 2, false, false); static SwitchOption interEnergyExtrapolationLog (interEnergyExtrapolation, "Log", "Use logarithmic dependence, ptmin = A * log (sqrt(s) / B).", 1); static SwitchOption interEnergyExtrapolationPower (interEnergyExtrapolation, "Power", "Use power law, ptmin = pt_0 * (sqrt(s) / E_0)^b.", 2); static SwitchOption interEnergyExtrapolationNo (interEnergyExtrapolation, "No", "Use manually set value for the minimal pt, " "specified in MPIHandler:Cuts[0]:OneCuts[0]:MinKT.", 0); static Parameter interfaceEEparamA ("EEparamA", "Parameter A in the empirical parametrization " "ptmin = A * log (sqrt(s) / B)", &MPIHandler::EEparamA_, GeV, 0.6*GeV, ZERO, Constants::MaxEnergy, false, false, Interface::limited); static Parameter interfaceEEparamB ("EEparamB", "Parameter B in the empirical parametrization " "ptmin = A * log (sqrt(s) / B)", &MPIHandler::EEparamB_, GeV, 39.0*GeV, ZERO, Constants::MaxEnergy, false, false, Interface::limited); static Switch interfacetwoComp ("twoComp", "switch to enable the model with a different radius for soft interactions", &MPIHandler::twoComp_, true, false, false); static SwitchOption interfacetwoCompYes (interfacetwoComp, "Yes", "enable the two component model", true); static SwitchOption interfacetwoCompNo (interfacetwoComp, "No", "disable the model", false); static Parameter interfaceMeasuredTotalXSec ("MeasuredTotalXSec", "Value for the total cross section (assuming rho=0). If non-zero, this " "overwrites the Donnachie-Landshoff parametrizations.", &MPIHandler::totalXSecExp_, millibarn, 0.0*millibarn, 0.0*millibarn, 0*millibarn, false, false, Interface::lowerlim); static Switch interfaceDLmode ("DLmode", "Choice of Donnachie-Landshoff parametrization for the total cross section.", &MPIHandler::DLmode_, 2, false, false); static SwitchOption interfaceDLmodeStandard (interfaceDLmode, "Standard", "Standard parametrization with s**0.08", 1); static SwitchOption interfaceDLmodeCDF (interfaceDLmode, "CDF", "Standard parametrization but normalization fixed to CDF's measured value", 2); static SwitchOption interfaceDLmodeNew (interfaceDLmode, "New", "Parametrization taking hard and soft pomeron contributions into account", 3); static Parameter interfaceReferenceScale ("ReferenceScale", "The reference energy for power law energy extrapolation of pTmin", &MPIHandler::refScale_, GeV, 7000.0*GeV, 0.0*GeV, 20000.*GeV, false, false, Interface::limited); static Parameter interfacepTmin0 ("pTmin0", "The pTmin at the reference scale for power law extrapolation of pTmin.", &MPIHandler::pT0_, GeV, 3.11*GeV, 0.0*GeV, 10.0*GeV, false, false, Interface::limited); static Parameter interfacePower ("Power", "The power for power law extrapolation of the pTmin cut-off.", &MPIHandler::b_, 0.21, 0.0, 10.0, false, false, Interface::limited); } herwig++-2.6.0.orig/UnderlyingEvent/Makefile.am0000644000175000017500000000107711755411047022143 0ustar sylvestresylvestrepkglib_LTLIBRARIES = HwUA5.la HwUA5_la_SOURCES = UA5Handler.cc UA5Handler.h UA5Handler.icc HwUA5_la_LDFLAGS= $(AM_LDFLAGS) -module -version-info 5:1:0 pkglib_LTLIBRARIES += HwMPI.la HwMPI_la_SOURCES = MPISampler.cc MPISampler.h MPISampler.icc \ MPISampler.fh MPIHandler.cc \ MPIHandler.fh MPIHandler.h \ ProcessHandler.cc ProcessHandler.icc \ ProcessHandler.fh ProcessHandler.h \ MPIXSecReweighter.h MPIXSecReweighter.cc \ stat.h HwMPI_la_LDFLAGS= $(AM_LDFLAGS) -module -version-info 10:0:0 HwMPI_la_LIBADD= $(GSLLIBS) HwMPI_la_CPPFLAGS= $(AM_CPPFLAGS) $(GSLINCLUDE) herwig++-2.6.0.orig/UnderlyingEvent/MPISampler.icc0000644000175000017500000000360611754474773022556 0ustar sylvestresylvestre// -*- C++ -*- // // MPISampler.icc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the inlined member functions of // the MPISampler class. // namespace Herwig { inline MPISampler::MPISampler() : theEps(100*Constants::epsilon), theMargin(1.1), theNTry(1000) {} inline MPISampler::MPISampler(const MPISampler & x) : SamplerBase(x), theProcessHandler(x.theProcessHandler), theEps(x.theEps), theMargin(x.theMargin), theNTry(x.theNTry) {} inline void MPISampler::setProcessHandler(tProHdlPtr proh){ theProcessHandler = proh; } inline IBPtr MPISampler::clone() const { return new_ptr(*this); } inline IBPtr MPISampler::fullclone() const { return new_ptr(*this); } inline void MPISampler::doupdate() { SamplerBase::doupdate(); // First update base class. bool redo = touched(); // redo if touched. // UpdateChecker::check(aDependentMember, redo); // Update referenced objects on which this depends redo is set to true // if the dependent object is touched. // for_each(ContainerOfDependencies, UpdateChecker(redo)); // Update a container of references. // for_each(MapOfDependencies, UpdateMapChecker(redo)); // Update a map of references. if ( !redo ) return; // return if nothing has been touched. Otherwise do the actual update. // touch() // Touch if anything has changed. } inline void MPISampler::doinit() { SamplerBase::doinit(); } inline void MPISampler::rebind(const TranslationMap & trans) { // dummy = trans.translate(dummy); SamplerBase::rebind(trans); } inline IVector MPISampler::getReferences() { IVector ret = SamplerBase::getReferences(); // ret.push_back(dummy); return ret; } } herwig++-2.6.0.orig/UnderlyingEvent/MPISampler.cc0000644000175000017500000001346611754474773022412 0ustar sylvestresylvestre// -*- C++ -*- // // MPISampler.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MPISampler class. // #include "MPISampler.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; MPISampler::~MPISampler() {} void MPISampler::initialize() { theSampler.setRnd(0); theSampler.eps(theEps); theSampler.margin(theMargin); theSampler.nTry(2); theSampler.maxTry(theProcessHandler->maxLoop()); bool nozero = false; for ( int i = 0, N = theProcessHandler->nBins(); i < N; ++i ) if ( theSampler.addFunction(theProcessHandler->nDim(i), theProcessHandler) ) nozero = true; if ( !nozero ) throw EventInitNoXSec() << "The UnderlyingEvent handler '" << theProcessHandler->name() << "' cannot be initialized because the cross-section for the selected " << "sub-processes was zero." << Exception::maybeabort; //clear the sampler because this was just a test run (nTry=2) theSampler.clear(); } double MPISampler::generate() { if ( !theSampler.generate() ) throw EventLoopException() << "The maximum number of attempts per event (" << theProcessHandler->maxLoop() << ") in multiple interaction handler '" << theProcessHandler->name() << "' was exceeded." << Exception::eventerror; lastPoint() = theSampler.lastPoint(); return 1.0; } void MPISampler::rejectLast() { theSampler.reject(); } CrossSection MPISampler::integratedXSec() const { return theSampler.integral()*nanobarn; } CrossSection MPISampler::integratedXSecErr() const { return theSampler.integralErr()*nanobarn; } CrossSection MPISampler::maxXSec() const { return theSampler.maxInt()*nanobarn; } int MPISampler::lastBin() const { return theSampler.last() - 1; } double MPISampler::sumWeights() const { return theSampler.n(); } void MPISampler::dofinish() { if ( theSampler.n() <= 0 && theProcessHandler && theProcessHandler->statLevel() > 1 ) { generator()->log() << "No events generated by the MPIsampler '" << name() << "'" << endl; } else if ( theProcessHandler && theProcessHandler->statLevel() > 1 ) generator()->log() << "Statistics for the MPI sampler '" << name() << "':" << endl << "Number of samplers:" << setw(10) << theSampler.size() << endl << "Number of bins: " << setw(10) << theSampler.nBins() << endl << "Depth of bins: " << setw(10) << theSampler.depth() << endl << "efficiency: " << setw(10) << theSampler.efficiency() << endl; if ( theSampler.compensating() ) generator()->logWarning( ACDCStillCompensating() << "The run was ended while the MPISampler '" << name() << "' was still trying to compensate for weights larger than 1. " << "The cross section estimates may therefore be statistically " << "inaccurate. At least " << theSampler.compleft() << " additional " << "samplings are needed to get out of compensation mode. " << "This may be avoided if you increase the value of the " << "Ntry parameter determining how many points are presampled before " << "the run." << Exception::warning); SamplerBase::dofinish(); } void MPISampler::doinitrun() { SamplerBase::doinitrun(); theSampler.setRnd(0); theSampler.eps(theEps); theSampler.margin(theMargin); theSampler.nTry(theNTry); theSampler.maxTry(theProcessHandler->maxLoop()); bool nozero = false; for ( int i = 0, N = theProcessHandler->nBins(); i < N; ++i ) if ( theSampler.addFunction(theProcessHandler->nDim(i), theProcessHandler) ) nozero = true; if ( !nozero ) throw EventInitNoXSec() << "The UnderlyingEvent handler '" << theProcessHandler->name() << "' cannot be initialized because the cross-section for the selected " << "sub-processes was zero." << Exception::maybeabort; } void MPISampler::persistentOutput(PersistentOStream & os) const { os << theEps << theMargin << theNTry << theProcessHandler; theSampler.output(os); } void MPISampler::persistentInput(PersistentIStream & is, int) { is >> theEps >> theMargin >> theNTry >> theProcessHandler; theSampler.input(is); if ( generator() ) theSampler.setRnd(0); } ClassDescription MPISampler::initMPISampler; // Definition of the static class description member. void MPISampler::Init() { static ClassDocumentation documentation ("This class inherits from ThePEG::SampleBase and implements " "the Auto Compensating Divide-and-Conquer phase space generator, " "ACDCGenerator::ACDCGen."); /* * Object will be created outside of *.in files * static Parameter interfaceMargin ("Margin", "The factor controlling the loss of efficiency when compensating " "for a previously underestimated phase space point. If close to one, " "the efficiency is increased at the expence of increased number " "of cells.", &MPISampler::theMargin, 1.1, 1.0, 2.0, true, false, true); static Parameter interfaceEps ("Epsilon", "The smallest possible cell division allowed.", &MPISampler::theEps, 100.0*Constants::epsilon, Constants::epsilon, 1.0e-6, true, false, true); static Parameter interfaceNTry ("Ntry", "The number of phase space points tried in the initialization.", &MPISampler::theNTry, 1000, 2, 1000000, true, false, true); interfaceNTry.rank(10); interfaceEps.rank(9); */ } herwig++-2.6.0.orig/UnderlyingEvent/UA5Handler.cc0000644000175000017500000006064211754474773022327 0ustar sylvestresylvestre// -*- C++ -*- // // UA5Handler.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #include #include "UA5Handler.h" #include #include #include #include #include #include #include #include "Herwig++/Hadronization/Cluster.h" #include "Herwig++/Hadronization/ClusterFissioner.h" #include "Herwig++/Hadronization/ClusterDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/Throw.h" #include using namespace std; using namespace ThePEG; using namespace Herwig; // Default constructor UA5Handler::UA5Handler() : _n1(9.11), _n2(0.115), _n3(-9.5), _k1(0.029), _k2(-0.104), _m1(0.4*GeV), _m2(2./GeV), _p1(5.2/GeV), _p2(3.0/GeV), _p3(5.2/GeV), _probSoft(1.0), _enhanceCM(1.), _maxtries(300), _needWarning(true) {} // Saving things into run file void UA5Handler::persistentOutput(PersistentOStream &os) const { os << clusterFissioner << clusterDecayer << _n1 << _n2 << _n3 << _k1 << _k2 << ounit(_m1,GeV) << ounit(_m2,InvGeV) << ounit(_p1,InvGeV) << ounit(_p2,InvGeV) << ounit(_p3,InvGeV) << _probSoft << _enhanceCM << _maxtries << _needWarning; } // Reading them back in, in the same order void UA5Handler::persistentInput(PersistentIStream &is, int) { is >> clusterFissioner >> clusterDecayer >> _n1 >> _n2 >> _n3 >> _k1 >> _k2 >> iunit(_m1,GeV) >> iunit(_m2,InvGeV) >> iunit(_p1,InvGeV) >> iunit(_p2,InvGeV) >> iunit(_p3,InvGeV) >> _probSoft >> _enhanceCM >> _maxtries >> _needWarning; } // We must define this static member for ThePEG ClassDescription UA5Handler::initUA5Handler; void UA5Handler::Init() { static ClassDocumentation documentation ("This is the simple UA5 model for the underlying event.", "The underlying event was simulated using the model of " "the UA5 collaboration, \\cite{Alner:1986is}.", "%\\cite{Alner:1986is}\n" "\\bibitem{Alner:1986is}\n" " G.~J.~Alner {\\it et al.} [UA5 Collaboration],\n" " ``The UA5 High-Energy anti-p p Simulation Program,''\n" " Nucl.\\ Phys.\\ B {\\bf 291}, 445 (1987).\n" " %%CITATION = NUPHA,B291,445;%%\n" ); static Reference interfaceClusterFissioner("ClusterFissioner", "A reference to the ClusterFissioner object", &Herwig::UA5Handler::clusterFissioner, false,false,true,false); static Reference interfaceClusterDecayer("ClusterDecayer", "A reference to the ClusterDecayer object", &Herwig::UA5Handler::clusterDecayer, false,false,true,false); static Parameter interfaceN1 ("N1", "The parameter n_1 in the mean charged multiplicity", &UA5Handler::_n1, 9.110, 0.0, 100.0, false, false, Interface::limited); static Parameter interfaceN2 ("N2", "The parameter n_2 in the mean charged multiplicity", &UA5Handler::_n2, 0.115, 0.0, 1.0, false, false, Interface::limited); static Parameter interfaceN3 ("N3", "The parameter n_3 in the mean charged multiplicity", &UA5Handler::_n3, -9.500, -100.0, 100.0, false, false, Interface::limited); static Parameter interfaceK1 ("K1", "The parameter k_1 used to generate the multiplicity distribution", &UA5Handler::_k1, 0.029, 0.0, 1.0, false, false, Interface::limited); static Parameter interfaceK2 ("K2", "The parameter k_2 used to generate the multiplicity distribution", &UA5Handler::_k2, -0.104, -1.0, 1.0, false, false, Interface::limited); static Parameter interfaceM1 ("M1", "The parameter m_1 used to generate the cluster mass distribution.", &UA5Handler::_m1, GeV, 0.4*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter interfaceM2 ("M2", "The parameter m_2 used to generate the cluster mass distribution.", &UA5Handler::_m2, 1./GeV, 2.0/GeV, 0.1/GeV, 10.0/GeV, false, false, Interface::limited); static Parameter interfaceP1 ("P1", "Slope used to generate the pt of the u,d soft clusters", &UA5Handler::_p1, 1./GeV, 5.2/GeV, 0.1/GeV, 10.0/GeV, false, false, Interface::limited); static Parameter interfaceP2 ("P2", "Slope used to generate the pt of the s,c soft clusters", &UA5Handler::_p2, 1./GeV, 3.0/GeV, 0.1/GeV, 10.0/GeV, false, false, Interface::limited); static Parameter interfaceP3 ("P3", "Slope used to generate the pt of the qq soft clusters", &UA5Handler::_p3, 1./GeV, 5.2/GeV, 0.1/GeV, 10.0/GeV, false, false, Interface::limited); static Parameter interfaceProbSoft ("ProbSoft", "The probability of having a soft underlying event.", &UA5Handler::_probSoft, 1.0, 0.0, 1.0, false, false, Interface::limited); static Parameter interfaceEnhanceCM ("EnhanceCM", "Enhancement of the CM energy in the mult distribution", &UA5Handler::_enhanceCM, 1.0, 0.0, 10.0, false, false, Interface::limited); static Parameter interfaceMaximumTries ("MaximumTries", "The maximum number of attempts to generate the clusters", &UA5Handler::_maxtries, 300, 100, 1000, false, false, Interface::limited); static Switch interfaceWarning ("Warning", "Whether to issue a warning if UA5 and MPI are on at the same time.", &UA5Handler::_needWarning, true, false, false); static SwitchOption interfaceWarningYes (interfaceWarning, "Yes", "Warn if UA5 and MPI are on at the same time.", true); static SwitchOption interfaceWarningNo (interfaceWarning, "No", "Print no warnings.", false); } void UA5Handler::insertParticle(PPtr particle,StepPtr step,bool all) const { if(all) step->addDecayProduct(particle); for(unsigned int ix=0; ix < particle->children().size(); ++ix) { insertParticle(particle->children()[ix],step,true); } } // This is all just administrative functions for ThePEG structure IBPtr UA5Handler::clone() const { return new_ptr(*this); } IBPtr UA5Handler::fullclone() const { return new_ptr(*this); } // Generates the multiplicity of the charged particles for the energy E unsigned int UA5Handler::multiplicity(Energy E) const { double alogs = 2.*log(E/GeV); double rk = _k1*alogs+_k2; if(rk > 1000.) rk = 1000.; double ek = 1./rk; double mean = meanMultiplicity(E); if(mean < 1.) mean = 1.; vector dist; dist.reserve(500); double sum = 0.0; for(int i = 0; i<500; ++i) { int N = (i+1)*2; double negBin = negativeBinomial(N,mean,ek); if(negBin < 1e-7*sum) break; sum += negBin; dist.push_back(sum); } unsigned int imax = dist.size(); if (imax==1) dist[0]=1.; else if (imax==500) throw Exception() << "Multiplicity too large in UA5Handler::multiplicity()" << Exception::eventerror; else { for(unsigned int i = 0; i ZERO) theta = 0.; else theta = Constants::pi; phi = 0.; } else { Energy pp = sqrt(pp2); Energy pt = sqrt(pt2); double ct = p.z()/pp; double cf = p.x()/pt; phi = -acos(cf); theta = acos(ct); } // Rotate first around the z axis to put p in the x-z plane // Then rotate around the Y axis to put p on the z axis R.rotateZ(phi).rotateY(theta); return R; } void UA5Handler::performDecay(PPtr parent,int & totalcharge,int & numbercharge) const { // for an already decayed particle apply to children if(!parent->children().empty()) { for(unsigned int ix=0;ixchildren().size();++ix) performDecay(parent->children()[ix],totalcharge,numbercharge); } // for a stable particle just add the charge else if(parent->data().stable()) { int charge = parent->data().iCharge()/3; totalcharge += charge ; numbercharge +=abs(charge); } // otherwise decay the particle else { unsigned int ntry = 0,maxtry=100; while (1) { // veto if too many tries if(++ntry>=maxtry) throw Exception() << "Too many attempts to decay " << parent->PDGName() << "in UA5Handler::performDecay(), probably needs a " << "partonic decay of a heavy hadron which isn't" << " implemented yet " << Exception::eventerror; // select the decay mode tDMPtr dm(parent->data().selectMode(*parent)); // throw event away if no decay mode if ( !dm ) throw Exception() << "No decay mode for " << parent->PDGName() << "in UA5Handler::performDecay()" << Exception::eventerror; // throw event away if no decayer if( !dm->decayer() ) throw Exception() << "No decayer mode for " << parent->PDGName() << "in UA5Handler::performDecay()" << Exception::eventerror; try { ParticleVector children = dm->decayer()->decay(*dm, *parent); // decay generates decay products if ( !children.empty() ) { // special for partonic decays // see if colour particles produced for(unsigned int ix=0;ixcoloured()){throw Veto();}} // set up parent parent->decayMode(dm); // add children for ( int i = 0, N = children.size(); i < N; ++i ) { children[i]->setLabVertex(parent->labDecayVertex()); parent->addChild(children[i]); } parent->scale(ZERO); // loop over the children and decay for ( int i = 0, N = children.size(); i < N; ++i ) {performDecay(children[i],totalcharge,numbercharge);} return; } } catch (Veto) {} } } } void UA5Handler::decayCluster(ClusterPtr cluster,bool single) const { PPair products = clusterDecayer->decayIntoTwoHadrons(cluster); if(products.first == PPtr() || products.second == PPtr()) { if(!single) throw Exception() << "Can't decay cluster in UA5Handler::decayCluster()" << Exception::eventerror; // decay the cluster to one hadron Lorentz5Momentum mom = cluster->momentum(); LorentzPoint vert = cluster->vertex(); tcPDPtr ptrQ = cluster->particle(0)->dataPtr(); tPPtr newPtr = cluster->particle(1); products=clusterFissioner->produceHadron(ptrQ,newPtr, mom, vert); // put the cluster and the hadron on mass-shell Energy mass=products.first->nominalMass(); Lorentz5Momentum newp(ZERO,ZERO,ZERO,mass,mass); cluster->set5Momentum(newp); products.first->set5Momentum(newp); cluster->addChild(products.first); } else { cluster->addChild(products.first); cluster->addChild(products.second); } } // This is the routine that is called to start the algorithm. void UA5Handler::handle(EventHandler &ch, const tPVector &tagged, const Hint &) { // Warn if the event has multiple scatters. // If so, UA5 often has been left on by accident. if (_needWarning && ch.currentEvent()->primaryCollision()->subProcesses().size() > 1) { static const string message = "\n\n" "warning:\n" " The use of UA5Handler for events with multiple hard subprocesses\n" " is probably not intended as it applies two different models\n" " of the underlying event at the same time.\n" " UA5Handler can be disabled in the input files with\n" " 'set stdCluHadHandler:UnderlyingEventHandler NULL'\n"; // here we should really ask the event handler // for the name of the hadronization handler. cerr << message << "\n This message can be disabled with\n 'set " << fullName() << ":Warning No'\n\n"; Throw() << message << Exception::warning; _needWarning = false; } // create a new step for the products StepPtr newstep = newStep(); // Constants that should not need changing. static const Length vclx = 4e-12*mm; static const Length vcly = 4e-12*mm; static const Length vclz = 4e-12*mm; static const Length vclt = 4e-12*mm; // Find the first two clusters // Lets find the clusters, set the partons inside to be on shell and no momentum tClusterPtr clu[2]; tPVector::const_iterator it; unsigned int i = 0; for(it = tagged.begin(); it!=tagged.end(); ++it) { if((*it)->id() != ParticleID::Cluster) continue; clu[i] = dynamic_ptr_cast(*it); ++i; if(i>2) throw Exception() << "Must have at most two beam clusters in " << "UA5Handler::handle " << Exception::eventerror; } if(i == 0) return; if(i!=2) throw Exception() << "Must have two and only two beam clusters in " << "UA5Handler::handle " << Exception::eventerror; // if not generating the soft underlying event // just hadronize and decay the two clusters if(rnd()>_probSoft) { for(int i =0; i<2; i++) { ClusterPtr cluster = clu[i]; decayCluster(cluster,false); int totalcharge(0),numbercharge(0); for(unsigned int ix=0;ixchildren().size();++ix) {performDecay(cluster->children()[ix],totalcharge,numbercharge);} insertParticle(cluster,newstep,false); } // don't to the rest return; } useMe(); // and their cm Lorentz5Momentum cm = clu[0]->momentum() + clu[1]->momentum(); Energy theCM = cm.mass(); // softCM = sqrt(S) with optional enhancement for multiplicity only // (name of variable not very reasonable any more...) Lorentz5Momentum pcm= ch.currentEvent()->incoming().first ->momentum()+ ch.currentEvent()->incoming().second->momentum(); Energy softCM = _enhanceCM*pcm.m(); long id1(0),id2(0),id3= rndbool() ? ParticleID::u : ParticleID::d; // storage for the multiplicity int nppbar = 0; // Loop until we find a match to the charge multiplicity unsigned int ntry = 0; vector clusters; bool multiplicityReached = false; while(!multiplicityReached && ntry < _maxtries) { PPtr part1, part2; // reset multiplicity every 50 tries if(ntry % 50 == 0) nppbar = multiplicity(softCM); ++ntry; unsigned int numberCluster = 0; int theMult = nppbar; Energy sumMasses = ZERO; // delete the particles from the previous attempt if needed if(ntry > 1) clusters.clear(); int numCharge = 0; bool newCluster = true; while(newCluster) { ClusterPtr cluster; // Choose new constituents if(numberCluster < 2) { part1 = clu[numberCluster]->particle(0); part2 = clu[numberCluster]->particle(1); id1 = part1->id(); id2 = part2->id(); cluster = new_ptr(Cluster(part1,part2)); } else { id1 = -id2; if(numberCluster == 2) id1 = id3; id2 = rndbool() ? ParticleID::ubar : ParticleID::dbar; part1 = getParticle(id1); part2 = getParticle(id2); cluster = new_ptr(Cluster(part1,part2)); } // Mass = Random number from dN/d(x**2)=exp(-b*x) with mean 1/M2 Energy newMass = getParticleData(id1)->constituentMass() + getParticleData(id2)->constituentMass() + _m1 - log(rnd()*rnd())/_m2; // set momentum of the cluster Lorentz5Momentum cp(ZERO,ZERO,ZERO,newMass,newMass); cluster->set5Momentum(cp); // Now the gaussian distribution of the x,y,z components, // and a time component given by // sqrt(vx^2+vy^2+vz^2) - vclt*log(r) Length vx = gaussDistribution(0.*mm,vclx); Length vy = gaussDistribution(0.*mm,vcly); Length vz = gaussDistribution(0.*mm,vclz); LorentzPoint vert(vx,vy,vz, sqrt(sqr(vx)+sqr(vy)+sqr(vz)) - vclt*log(rnd())); cluster->setVertex(vert); // Now need to measure displacement relative to soft cm (TODO:) // Fortran code sets the vertex of the primary incoming particle to 0 // then during boosting it adds the value of the vertex of particle 3 (???) // to all the particles // for now I will not implement this. Perhaps Mike can decide if this is // needed, as he added this code to the fortran code on 07/03/05. // Add the cluster to the list clusters.push_back(cluster); // Now we decay the clusters into hadrons decayCluster(cluster,true); // sum of the cluster masses sumMasses += cluster->mass(); // Now decay the hadrons into stable particles int totalcharge(0),numbercharge(0); for(unsigned int ix=0;ixchildren().size();++ix) {performDecay(cluster->children()[ix],totalcharge,numbercharge);} numCharge+=numbercharge; if(numberCluster == 0) theMult = nppbar+abs(totalcharge); if(numberCluster == 1) theMult += abs(totalcharge); if(numberCluster == 1 && theMult < 0) theMult += 2; numberCluster++; // Now check which loop to do next if(numCharge < theMult) continue; else if(numCharge > theMult) { newCluster = false; } else { newCluster = false; multiplicityReached = true; } } // Now check the physical mass/energy boundary if(multiplicityReached && (sumMasses > theCM || clusters.size()<2)) { multiplicityReached = false; } } // Catch case of too many attempts if(ntry == _maxtries) { // Just hadronize and decay the two clusters for(int i =0; i<2; i++) { ClusterPtr cluster = clu[i]; decayCluster(cluster,false); int totalcharge(0),numbercharge(0); for(unsigned int ix=0;ixchildren().size();++ix) {performDecay(cluster->children()[ix],totalcharge,numbercharge);} insertParticle(cluster,newstep,false); } // don't to the rest return; } // Now generate momentum of the clusters generateMomentum(clu[0],clu[1],clusters, theCM, cm); // insert the particles into the event record for(unsigned int ix=0;ixaddChild(clusters[ix]); clu[1]->addChild(clusters[ix]); newstep->addDecayProduct(clusters[ix]); } for(unsigned int ix=0;ixmomentum().z()>ZERO) swap(clu1,clu2); LorentzMomentum bmp = clu1->momentum(); bmp = bmp.boost(cm.findBoostToCM()); // Rotation to put bmp on the z axis LorentzRotation R = rotate(bmp); // We need to use the inverse R = R.inverse(); Boost boostv=cm.boostVector(); for(unsigned int i = 0; imomentum(); clusters[i]->transform(R); // Then we transform back to the lab frame (away from cm frame) Lorentz5Momentum oldP = clusters[i]->momentum(); Lorentz5Momentum newP=oldP; try { newP.boost(boostv); clusters[i]->deepBoost(newP.boostVector()); clusters[i]->set5Momentum(newP); } catch(exception &e) { cerr << "Caught an problem boosting. " << e.what() << endl; cerr << "Must decide how to handle this..." << endl; cerr << "Old p = " << oldP/GeV << endl << "New p = " << newP/GeV << endl; cerr << "This is from cluster " << *clusters[i] << " and has z component > energy" << endl; cerr << "Cluster 0 is = " << *clusters[0] << endl; cerr << "Original momentum = " << origP/GeV << endl; cerr << "The cm vector is = " << cm/GeV << endl; cerr << "Mass error of original momentum is " << origP.massError() << endl; throw Veto(); } } } void UA5Handler::generateCylindricalPS(const ClusterVector &clusters, Energy CME) const { assert(clusters.size()>=2); double alog = log(CME*CME/GeV2); unsigned int ncl = clusters.size(); // calculate the slope parameters for the different clusters // outside loop to save time vector slope(ncl); vector mom(ncl); for(unsigned int ix=0;ixhadron) then option 1 long id1=clusters[ix]->particle(0)->id(); long hadId = clusters[ix]->children()[0]->id(); long ids[3]={(abs(hadId)/10)%10,(abs(hadId)/100)%10,(abs(hadId)/1000)%10}; if(ids[2] != 0 && hadId < 0) { ids[2] = -ids[2]; ids[1] = -ids[1]; ids[0] = -ids[0]; } else if(ids[2] == 0 && hadId < 0) ids[1] = -ids[1]; else if(ids[2]) ids[0] = -ids[0]; if(ids[2] == 0) { long newId = 0; if(ids[1] == id1) newId = abs(ids[0]); else if(ids[0] == id1) newId = abs(ids[1]); if(newId == ParticleID::s || id1 == ParticleID::c) slope[ix] = _p2; else slope[ix] = _p1; } else if(clusters[ix]->children().size() == 1) slope[ix] = _p1; else slope[ix] = _p3; mom[ix]=clusters[ix]->momentum(); } // generate the momenta double eps = 1e-10/double(ncl); vector xi(ncl); unsigned int its(0); Energy sum1(ZERO); double yy(0.); while(its < _maxtries) { ++its; Energy sumx = ZERO; Energy sumy = ZERO; for(unsigned int i = 0; imass(), slope[i]); Energy2 ptp = pt*pt - sqr(mom[i].mass()); if(ptp <= ZERO) pt = - sqrt(-ptp); else pt = sqrt(ptp); // randomize azimuth Energy px,py; randAzm(pt,px,py); // set transverse momentum mom[i].setX(px); mom[i].setY(py); sumx += px; sumy += py; } sumx /= ncl; sumy /= ncl; // find the sum of the transverse mass Energy sumtm=ZERO; for(unsigned int ix = 0; ix CME) continue; for(unsigned int i = 0; i=1; i--) xi[i+1] = (xi[i]-ximin)/ximax; xi[1] = 1.; yy= log(CME*CME/(mom[0].z()*mom[1].z())); bool suceeded=false; Energy sum2,sum3,sum4; for(unsigned int j = 0; j<10; j++) { sum1 = sum2 = sum3 = sum4 = ZERO; for(unsigned int i = 0; i 100) eps *= 10.; } if(its==_maxtries) throw Exception() << "Can't generate soft underlying event in " << "UA5Handler::generateCylindricalPS" << Exception::eventerror; double zz = log(CME/sum1); for(unsigned int i = 0; iset5Momentum(mom[i]); } } herwig++-2.6.0.orig/UnderlyingEvent/MPISampler.h0000644000175000017500000002434511754474773022252 0ustar sylvestresylvestre// -*- C++ -*- // // MPISampler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_MPISampler_H #define Herwig_MPISampler_H // This is the declaration of the MPISampler class. #include "ThePEG/Handlers/SamplerBase.h" #include "ThePEG/ACDC/ACDCGen.h" #include "ThePEG/Repository/RandomGenerator.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Utilities/SimplePhaseSpace.xh" #include "MPISampler.fh" #include "ProcessHandler.h" namespace Herwig { using namespace ThePEG; /** * This class inherits from SampleBase and implements * the Auto Compensating Divide-and-Conquer phase space generator, * ACDCGen. In contrast to a ThePEG::ACDCSampler, this * class can be called by ProcessHandler. * * @see \ref MPISamplerInterfaces "The interfaces" * defined for MPISampler. * @see ACDCGen * @see ProcessHandler */ class MPISampler: public SamplerBase { public: /** Typedef the underlying ACDCGen class. */ typedef ACDCGenerator::ACDCGen SamplerType; /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline MPISampler(); /** * The copy constructor. */ inline MPISampler(const MPISampler &); /** * The destructor. */ virtual ~MPISampler(); //@} public: /** @name Virtual functions needed for SamplerBase */ //@{ /** * Method to set the connected ProcessHandler pointer * */ inline void setProcessHandler(tProHdlPtr mpih); /** * Initialize the sampler, possibly doing presampling of the * phase space. */ virtual void initialize(); /** * Generarate a new phase space point and return a weight associated * with it. This weight should preferably be 1. */ virtual double generate(); /** * ACDCSampler is able to sample several different functions * separately. This function returns the last chosen * function. */ virtual int lastBin() const; /** * Reject the last chosen phase space point. */ virtual void rejectLast(); /** * Return the total integrated cross section determined from the * Monte Carlo sampling so far. */ virtual CrossSection integratedXSec() const; /** * Return the error on the total integrated cross section determined * from the Monte Carlo sampling so far. */ virtual CrossSection integratedXSecErr() const; /** * Return the overestimated integrated cross section. */ virtual CrossSection maxXSec() const; /** * Return the sum of the weights returned by generate() so far (of * the events that were not rejeted). */ virtual double sumWeights() 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Check sanity of the object during the setup phase. */ inline virtual void doupdate(); /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ inline virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given pointer. */ inline virtual void rebind(const TranslationMap & trans) ; /** * Return a vector of all pointers to Interfaced objects used in this object. * @return a vector of pointers. */ inline virtual IVector getReferences(); //@} private: /** * The actual sampler object. */ SamplerType theSampler; /** * The ProcessHandler that calls us */ tProHdlPtr theProcessHandler; /** * The smallest possible division allowed. */ double theEps; /** * The factor controlling the loss of efficiency when compensating. */ double theMargin; /** * The number of points to use to find initial average. */ int theNTry; protected: /** @cond EXCEPTIONCLASSES */ /** Exception class used by ACDCSampler if the undelying ACDCGen was still in a compensating mode when the run was finished */ struct ACDCStillCompensating: public Exception {}; /** Exception class used by ACDCSampler if a EventHandler was not able to produce a non-zero cross section. */ struct EventInitNoXSec: public Exception {}; /** Exception class used if ACDCSampler was not able to produce a phase space point within the maximum allowed number of attempts. */ struct EventLoopException: public Exception {}; /** @endcond */ private: /** * Describe a concrete class with persistent data. */ static ClassDescription initMPISampler; /** * Private and non-existent assignment operator. */ MPISampler & operator=(const MPISampler &); }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of MPISampler. */ template <> struct BaseClassTrait: public ClassTraitsType { /** Typedef of the first base class of ACDCSampler. */ typedef SamplerBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits: public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::MPISampler"; } /** Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "SimpleKTCut.so HwMPI.so"; } }; /** @endcond */ } namespace ACDCGenerator { /** @cond TRAITSPECIALIZATIONS */ /** Specialized Traits class to define the interface to the * EventHandler object to be sampled by ACDCGen. */ template <> struct ACDCFncTraits: public ACDCTraitsType { /** Convenient typdef. */ typedef Herwig::tProHdlPtr tProHdlPtr; /** * Call a function to be sampled by ACDCGen. * @return (*f)(x). */ static inline double value(const tProHdlPtr & mpih, const DVector & x) { using namespace ThePEG::Units; try { return mpih->dSigDR(x)/nanobarn; } catch ( ThePEG::ImpossibleKinematics & v ) { breakThePEG(); } catch ( std::exception & e ) { breakThePEG(); } catch ( ... ) { breakThePEG(); } return 0.0; } }; /** Specialized Traits class to inform ACDCGen how to use the static UseRandom class. */ template <> struct ACDCRandomTraits: public ACDCTraitsType { /** Convenient typedef. */ typedef ThePEG::UseRandom UseRandom; /** * Return a flat random number in the interval ]0,1[. */ static inline double rnd(UseRandom *) { return UseRandom::rnd(); } /** * Return a flat random number in the interval ]\a xl,\a xu[. */ static inline double rnd(UseRandom * r, double xl, double xu) { return xl + (xu - xl)*rnd(r); } /** * Generate a set of random numbers. * @param r the random generator. * @param l an input iterator giving the lower limit of the interval * of the first requested random number. * @param lend an input iterator marking the end of the range of * requested random numbers. * @param u an input iterator giving the upper limit of the interval * of the first requested random number. * @param res the ouput iterator used to output the random numbers. */ template static inline void rnd(UseRandom * r, InputIterator l, InputIterator lend, InputIterator u, OutputIterator res) { for ( ; l != lend; ++l ) *res++ = *l + (*u++ - *l)*rnd(r); } /** * Generate \a D random numbers. The numbers are put into the * OutputIterator \a res. */ template static inline void rnd(UseRandom * r, int D, OutputIterator res) { for ( int d = 0; d < D; ++d ) *res++ = rnd(r); } /** * Return true with probability \a x. */ static inline bool rndBool(UseRandom, double x) { return UseRandom::rndbool(x); } /** * Return true with probability \a x(\a x + \a y). */ static inline bool rndBool(UseRandom *, double x, double y) { return UseRandom::rndbool(x, y); } /** * Return a random integer in the interval [0,\a x[. */ static inline long rndInt(UseRandom *, long x) { return UseRandom::irnd(x); } }; /** @endcond */ } #include "MPISampler.icc" #endif /* Herwig_MPISampler_H */ herwig++-2.6.0.orig/UnderlyingEvent/MPIHandler.h0000644000175000017500000005757111754474773022233 0ustar sylvestresylvestre// -*- C++ -*- // // MPIHandler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MPIHandler_H #define HERWIG_MPIHandler_H // // This is the declaration of the MPIHandler class. // #include "ThePEG/Interface/Interfaced.h" #include "ThePEG/Handlers/StandardEventHandler.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/PDT/StandardMatchers.h" #include "Herwig++/Utilities/GSLBisection.h" //#include "Herwig++/Utilities/GSLMultiRoot.h" #include "Herwig++/Utilities/GSLIntegrator.h" #include "Herwig++/Shower/UEBase.h" #include #include "ProcessHandler.h" #include "MPIHandler.fh" namespace Herwig { using namespace ThePEG; /** \ingroup UnderlyingEvent * \class MPIHandler * This class is responsible for generating additional * semi hard partonic interactions. * * \author Manuel B\"ahr * * @see \ref MPIHandlerInterfaces "The interfaces" * defined for MPIHandler. * @see ProcessHandler * @see ShowerHandler * @see HwRemDecayer */ class MPIHandler: public UEBase { /** * Maximum number of scatters */ static const unsigned int maxScatters_ = 99; /** * Class for the integration is a friend to access private members */ friend struct Eikonalization; friend struct TotalXSecBisection; friend struct slopeAndTotalXSec; friend struct slopeInt; friend struct slopeBisection; public: /** A vector of SubProcessHandlers. */ typedef vector SubHandlerList; /** A vector of Cuts. */ typedef vector CutsList; /** A vector of ProcessHandlers. */ typedef vector ProcessHandlerList; /** A vector of cross sections. */ typedef vector XSVector; /** A pair of multiplicities: hard, soft. */ typedef pair MPair; /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MPIHandler(): softMult_(0), identicalToUE_(-1), PtOfQCDProc_(-1.0*GeV), Ptmin_(-1.0*GeV), hardXSec_(0*millibarn), softXSec_(0*millibarn), totalXSecExp_(0*millibarn), softMu2_(ZERO), beta_(100.0/GeV2), algorithm_(2), numSubProcs_(0), colourDisrupt_(0.0), softInt_(true), twoComp_(true), DLmode_(2), avgNhard_(0.0), avgNsoft_(0.0), energyExtrapolation_(2), EEparamA_(0.6*GeV), EEparamB_(37.5*GeV), refScale_(7000.*GeV), pT0_(3.11*GeV), b_(0.21) {} /** * The destructor. */ virtual ~MPIHandler(){} //@} public: /** @name Methods for the MPI generation. */ //@{ /* * @return true if for this beam setup MPI can be generated */ virtual bool beamOK() const; /** * Return true or false depending on whether soft interactions are enabled. */ virtual bool softInt() const {return softInt_;} /** * Get the soft multiplicity from the pretabulated multiplicity * distribution. Generated in multiplicity in the first place. * @return the number of extra soft events in this collision */ virtual unsigned int softMultiplicity() const {return softMult_;} /** * Sample from the pretabulated multiplicity distribution. * @return the number of extra events in this collision */ virtual unsigned int multiplicity(unsigned int sel=0); /** * Select a StandardXComb according to it's weight * @return that StandardXComb Object * @param sel is the subprocess that should be returned, * if more than one is specified. */ virtual tStdXCombPtr generate(unsigned int sel=0); //@} /** @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(); /** * Initialize this Multiple Interaction handler and all related objects needed to * generate additional events. */ virtual void initialize(); /** * Finalize this Multiple Interaction handler and all related objects needed to * generate additional events. */ virtual void finalize(); /** * Write out accumulated statistics about integrated cross sections. */ void statistics() const; /** * The level of statistics. Controlls the amount of statistics * written out after each run to the EventGenerators * .out file. Simply the EventHandler method is called here. */ int statLevel() const {return eventHandler()->statLevel();} /** * Return the hard cross section above ptmin */ CrossSection hardXSec() const { return hardXSec_; } /** * Return the soft cross section below ptmin */ CrossSection softXSec() const { return softXSec_; } /** * Return the inelastic cross section */ CrossSection inelasticXSec() const { return inelXSec_; } /** @name Simple access functions. */ //@{ /** * Return the ThePEG::EventHandler assigned to this handler. * This methods shadows ThePEG::StepHandler::eventHandler(), because * it is not virtual in ThePEG::StepHandler. This is ok, because this * method would give a null-pointer at some stages, whereas this method * gives access to the explicitely copied pointer (in initialize()) * to the ThePEG::EventHandler. */ tEHPtr eventHandler() const {return theHandler;} /** * Return the current handler */ static const MPIHandler * currentHandler() { return currentHandler_; } /** * Return theAlgorithm. */ virtual int Algorithm() const {return algorithm_;} /** * Return the ptmin parameter of the model */ virtual Energy Ptmin() const { if(Ptmin_ > ZERO) return Ptmin_; else throw Exception() << "MPIHandler::Ptmin called without initialize before" << Exception::runerror; } /** * Return the slope of the soft pt spectrum as calculated. */ virtual InvEnergy2 beta() const { if(beta_ != 100.0/GeV2) return beta_; else throw Exception() << "MPIHandler::beta called without initialization" << Exception::runerror; } /** * Return the pt Cutoff of the Interaction that is identical to the UE * one. */ virtual Energy PtForVeto() const {return PtOfQCDProc_;} /** * Return the number of additional "hard" processes ( = multiple * parton scattering) */ virtual unsigned int additionalHardProcs() const {return numSubProcs_-1;} /** * Return the fraction of colour disrupted connections to the * suprocesses. */ virtual double colourDisrupt() const {return colourDisrupt_;} 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: /** * Access the list of sub-process handlers. */ const SubHandlerList & subProcesses() const {return theSubProcesses;} /** * Access the list of sub-process handlers. */ SubHandlerList & subProcesses() {return theSubProcesses;} /** * Access the list of cuts. */ const CutsList & cuts() const {return theCuts;} /** * Access the list of cuts. */ CutsList & cuts() {return theCuts;} /** * Access the list of sub-process handlers. */ const ProcessHandlerList & processHandlers() const {return theProcessHandlers;} /** * Access the list of sub-process handlers. */ ProcessHandlerList & processHandlers() {return theProcessHandlers;} /** * Method to calculate the individual probabilities for N scatters in the event. * @param UEXSecs is(are) the inclusiv cross section(s) for the UE process(es). */ void Probs(XSVector UEXSecs); /** * Debug method to check the individual probabilities. * @param filename is the file the output gets written to */ void MultDistribution(string filename) const; /** * Return the value of the Overlap function A(b) for a given impact * parameter \a b. * @param b impact parameter * @param mu2 = inv hadron radius squared. 0 will use the value of * invRadius_ * @return inverse area. */ InvArea OverlapFunction(Length b, Energy2 mu2=ZERO) const; /** * Method to calculate the poisson probability for expectation value * \f$ = A(b)\sigma\f$, and multiplicity N. */ double poisson(Length b, CrossSection sigma, unsigned int N, Energy2 mu2=ZERO) const; /** * Return n! */ double factorial (unsigned int n) const; /** * Returns the total cross section for the current CMenergy. The * decision which parametrization will be used is steered by a * external parameter of this class. */ CrossSection totalXSecExp() const; /** * Difference of the calculated total cross section and the * experimental one from totalXSecExp. * @param softXSec = the soft cross section that is used * @param softMu2 = the soft radius, if 0 the hard radius will be used */ CrossSection totalXSecDiff(CrossSection softXSec, Energy2 softMu2=ZERO) const; /** * Difference of the calculated elastic slope and the * experimental one from slopeExp. * @param softXSec = the soft cross section that is used * @param softMu2 = the soft radius, if 0 the hard radius will be used */ InvEnergy2 slopeDiff(CrossSection softXSec, Energy2 softMu2=ZERO) const; /** * Returns the value of the elastic slope for the current CMenergy. * The decision which parametrization will be used is steered by a * external parameter of this class. */ InvEnergy2 slopeExp() const; /** * Calculate the minimal transverse momentum from the extrapolation */ void overrideUECuts(); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initMPIHandler; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MPIHandler & operator=(const MPIHandler &); /** * A pointer to the EventHandler that calls us. Has to be saved, because the * method eventHandler() inherited from ThePEG::StepHandler returns a null-pointer * sometimes. Leif changed that in r1053 so that a valid pointer is present, when * calling doinitrun(). */ tEHPtr theHandler; /** * The list of SubProcessHandlers. */ SubHandlerList theSubProcesses; /** * The kinematical cuts used for this collision handler. */ CutsList theCuts; /** * List of ProcessHandler used to sample different processes independently */ ProcessHandlerList theProcessHandlers; /** * A ThePEG::Selector where the individual Probabilities P_N are stored * and the actual Multiplicities can be selected. */ Selector theMultiplicities; /** * Variable to store the soft multiplicity generated for a event. This * has to be stored as it is generated at the time of the hard * additional interactions but used later on. */ unsigned int softMult_; /** * Variable to store the multiplicity of the second hard process */ vector additionalMultiplicities_; /** * Variable to store the information, which process is identical to * the UE one (QCD dijets). * 0 means "real" hard one * n>0 means the nth additional hard scatter * -1 means no one! */ int identicalToUE_; /** * Variable to store the minimal pt of the process that is identical * to the UE one. This only has to be set, if it can't be determined * automatically (i.e. when reading QCD LesHouches files in). */ Energy PtOfQCDProc_; /** * Variable to store the parameter ptmin */ Energy Ptmin_; /** * Variable to store the hard cross section above ptmin */ CrossSection hardXSec_; /** * Variable to store the final soft cross section below ptmin */ CrossSection softXSec_; /** * Variable to store the inelastic cross section */ CrossSection inelXSec_; /** * Variable to store the total pp cross section (assuming rho=0!) as * measured at LHC. If this variable is set, this value is used in the * subsequent run instead of any of the Donnachie-Landshoff * parametrizations. */ CrossSection totalXSecExp_; /** * Variable to store the soft radius, that is calculated during * initialization for the two-component model. */ Energy2 softMu2_; /** * slope to the non-perturbative pt spectrum: \f$d\sigma/dp_T^2 = A \exp * (- beta p_T^2)\f$. Its value is determined durint initialization. */ InvEnergy2 beta_; /** * Switch to be set from outside to determine the algorithm used for * UE activity. */ int algorithm_; /** * Inverse hadron Radius squared \f$ (\mu^2) \f$. Used inside the overlap function. */ Energy2 invRadius_; /** * Member variable to store the actual number of separate SubProcesses */ unsigned int numSubProcs_; /** * Variable to store the relative number of colour disrupted * connections to additional subprocesses. This variable is used in * Herwig::HwRemDecayer but store here, to have access to all * parameters through one Object. */ double colourDisrupt_; /** * Flag to store whether soft interactions, i.e. pt < ptmin should be * simulated. */ bool softInt_; /** * Flag to steer wheather the soft part has a different radius, that * will be dynamically fixed. */ bool twoComp_; /** * Switch to determine which Donnachie & Landshoff parametrization * should be used. */ unsigned int DLmode_; /** * Variable to store the average hard multiplicity. */ double avgNhard_; /** * Variable to store the average soft multiplicity. */ double avgNsoft_; /** * The current handler */ static MPIHandler * currentHandler_; /** * Flag to store whether to calculate the minimal UE pt according to an * extrapolation formula or whether to use MPIHandler:Cuts[0]:OneCuts[0]:MinKT */ unsigned int energyExtrapolation_; /** * Parameters for the energy extrapolation formula */ Energy EEparamA_; Energy EEparamB_; Energy refScale_; Energy pT0_; double b_; protected: /** @cond EXCEPTIONCLASSES */ /** * Exception class used by the MultipleInteractionHandler, when something * during initialization went wrong. * \todo understand!!! */ class InitError: public Exception {}; /** @endcond */ }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MPIHandler. */ template <> struct BaseClassTrait { /** Typedef of the first base class of MPIHandler. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the MPIHandler class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::MPIHandler"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the MPIHandler class and any other class on which it depends * (except the base class). */ static string library() { return "SimpleKTCut.so HwMPI.so"; } }; /** @endcond */ } namespace Herwig { /** * A struct for the 2D root finding that is necessary to determine the * soft cross section and the soft radius that is needed to describe * the total cross section correctly. * NOT IN USE CURRENTLY */ struct slopeAndTotalXSec : public GSLHelper { public: /** * Constructor */ slopeAndTotalXSec(tcMPIHPtr handler): handler_(handler) {} /** second argument type */ typedef Energy2 ArgType2; /** second value type */ typedef InvEnergy2 ValType2; /** first element of the vector like function to find root for * @param softXSec soft cross-section * @param softMu2 \f$\mu^2\f$ */ CrossSection f1(ArgType softXSec, ArgType2 softMu2) const { return handler_->totalXSecDiff(softXSec, softMu2); } /** second element of the vector like function to find root for * @param softXSec soft cross-section * @param softMu2 \f$\mu^2\f$ */ InvEnergy2 f2(ArgType softXSec, ArgType2 softMu2) const { return handler_->slopeDiff(softXSec, softMu2); } /** provide the actual units of use */ virtual ValType vUnit() const {return 1.0*millibarn;} /** otherwise rounding errors may get significant */ virtual ArgType aUnit() const {return 1.0*millibarn;} /** provide the actual units of use */ ValType2 vUnit2() const {return 1.0/GeV2;} /** otherwise rounding errors may get significant */ ArgType2 aUnit2() const {return GeV2;} private: /** * Pointer to the handler */ tcMPIHPtr handler_; }; /** * A struct for the root finding that is necessary to determine the * slope of the soft pt spectrum to match the soft cross section */ struct betaBisection : public GSLHelper{ public: /** * Constructor. * @param soft = soft cross section, i.e. the integral of the soft * pt spectrum f(u=p_T^2) = dsig exp(-beta*u/u_min) * @param dsig = dsigma_hard/dp_T^2 at the p_T cutoff * @param ptmin = p_T cutoff */ betaBisection(CrossSection soft, DiffXSec dsig, Energy ptmin) : softXSec_(soft), dsig_(dsig), ptmin_(ptmin) {} /** * Operator that is used inside the GSLBisection class */ virtual Energy2 operator ()(InvEnergy2 beta) const { if( fabs(beta*GeV2) < 1.E-4 ) beta = (beta > ZERO) ? 1.E-4/GeV2 : -1.E-4/GeV2; return (exp(beta*sqr(ptmin_)) - 1.0)/beta - softXSec_/dsig_; } /** provide the actual units of use */ virtual ValType vUnit() const {return 1.0*GeV2;} /** provide the actual units of use */ virtual ArgType aUnit() const {return 1.0/GeV2;} private: /** soft cross section */ CrossSection softXSec_; /** dsigma/dp_T^2 at ptmin */ DiffXSec dsig_; /** pt cutoff */ Energy ptmin_; }; /** * A struct for the root finding that is necessary to determine the * soft cross section and soft mu2 that are needed to describe the * total cross section AND elastic slope correctly. */ struct slopeBisection : public GSLHelper { public: /** Constructor */ slopeBisection(tcMPIHPtr handler) : handler_(handler) {} /** * Return the difference of the calculated elastic slope to the * experimental one for a given value of the soft mu2. During that, * the soft cross section get fixed. */ InvEnergy2 operator ()(Energy2 arg) const; /** Return the soft cross section that has been calculated */ CrossSection softXSec() const {return softXSec_;} private: /** const pointer to the MPIHandler to give access to member functions.*/ tcMPIHPtr handler_; /** soft cross section that is determined on the fly.*/ mutable CrossSection softXSec_; }; /** * A struct for the root finding that is necessary to determine the * soft cross section that is needed to describe the total cross * section correctly. */ struct TotalXSecBisection : public GSLHelper { public: /** * Constructor * @param handler The handler * @param softMu2 \f$\mu^2\f$ */ TotalXSecBisection(tcMPIHPtr handler, Energy2 softMu2=ZERO): handler_(handler), softMu2_(softMu2) {} /** * operator to return the cross section * @param argument input cross section */ CrossSection operator ()(CrossSection argument) const { return handler_->totalXSecDiff(argument, softMu2_); } /** provide the actual units of use */ virtual ValType vUnit() const {return 1.0*millibarn;} /** otherwise rounding errors may get significant */ virtual ArgType aUnit() const {return 1.0*millibarn;} private: /** * The handler */ tcMPIHPtr handler_; /** * \f$\mu^2\f$ */ Energy2 softMu2_; }; /** * Typedef for derivative of the length */ typedef QTY<1,-2,0>::Type LengthDiff; /** * A struct for the integrand for the slope */ struct slopeInt : public GSLHelper{ public: /** Constructor * @param handler The handler * @param hard The hard cross section * @param soft The soft cross section * @param softMu2 \f$\mu^2\f$ */ slopeInt(tcMPIHPtr handler, CrossSection hard, CrossSection soft=0*millibarn, Energy2 softMu2=ZERO) : handler_(handler), hardXSec_(hard), softXSec_(soft), softMu2_(softMu2) {} /** * Operator to return the answer * @param arg The argument */ ValType operator ()(ArgType arg) const; private: /** * Pointer to the Handler that calls this integrand */ tcMPIHPtr handler_; /** * The hard cross section to be eikonalized */ CrossSection hardXSec_; /** * The soft cross section to be eikonalized. Default is zero */ CrossSection softXSec_; /** * The inv radius^2 of the soft interactions. */ Energy2 softMu2_; }; /** * A struct for the eikonalization of the inclusive cross section. */ struct Eikonalization : public GSLHelper{ /** * The constructor * @param handler is the pointer to the MPIHandler to get access to * MPIHandler::OverlapFunction and member variables of the MPIHandler. * @param option is a flag, whether the inelastic or the total * @param handler The handler * @param hard The hard cross section * @param soft The soft cross section * @param softMu2 \f$\mu^2\f$ * cross section should be returned (-2 or -1). For option = N > 0 the integrand * is N*(A(b)*sigma)^N/N! exp(-A(b)*sigma) this is the P_N*sigma where * P_N is the Probability of having exactly N interaction (including the hard one) * This is equation 14 from "Jimmy4: Multiparton Interactions in HERWIG for the LHC" */ Eikonalization(tcMPIHPtr handler, int option, CrossSection hard, CrossSection soft=0*millibarn, Energy2 softMu2=ZERO) : theHandler(handler), theoption(option), hardXSec_(hard), softXSec_(soft), softMu2_(softMu2) {} /** * Get the function value */ Length operator ()(Length argument) const; private: /** * Pointer to the Handler that calls this integrand */ tcMPIHPtr theHandler; /** * A flag to switch between the calculation of total and inelastic cross section * or calculations for the individual probabilities. See the constructor */ int theoption; /** * The hard cross section to be eikonalized */ CrossSection hardXSec_; /** * The soft cross section to be eikonalized. Default is zero */ CrossSection softXSec_; /** * The inv radius^2 of the soft interactions. */ Energy2 softMu2_; }; } #ifndef ThePEG_TEMPLATES_IN_CC_FILE // #include "MPIHandler.tcc" #endif #endif /* HERWIG_MPIHandler_H */ herwig++-2.6.0.orig/UnderlyingEvent/MPISampler.fh0000644000175000017500000000051311754474773022407 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the MPISampler class. // #ifndef HERWIG_MPISampler_FH #define HERWIG_MPISampler_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; //create typedefs for c, t, tc, MPIHPtr's: ThePEG_DECLARE_CLASS_POINTERS(MPISampler,MPISamplerPtr); } #endif herwig++-2.6.0.orig/UnderlyingEvent/ProcessHandler.icc0000644000175000017500000000425411754474773023521 0ustar sylvestresylvestre// -*- C++ -*- // // ProcessHandler.icc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the inlined member functions of // the ProcessHandler class. // namespace Herwig { inline tEHPtr ProcessHandler::eventHandler() const { return theHandler; } inline tCutsPtr ProcessHandler::cuts() const { return theCuts; } inline tSubHdlPtr ProcessHandler::subProcess() { return theSubProcess; } inline long ProcessHandler::maxLoop() const { return eventHandler()->maxLoop(); } inline tSamplerPtr ProcessHandler::sampler() { return theSampler; } inline tcSamplerPtr ProcessHandler::sampler() const { return theSampler; } inline const cPDPair & ProcessHandler::incoming() const { return eventHandler()->incoming(); } inline const LuminosityFunction & ProcessHandler::lumiFn() const { // Did that in that strange way, because lumiFn is protected return *eventHandler()->lumiFnPtr(); } inline int ProcessHandler::lumiDim() const { return lumiFn().nDim(incoming()); } inline int ProcessHandler::maxDim(int bin) const { return theMaxDims[bin]; } inline int ProcessHandler::nDim(int bin) const { return lumiDim() + maxDim(bin); } inline int ProcessHandler::statLevel() const { return eventHandler()->statLevel(); } inline const ProcessHandler::XVector & ProcessHandler::xCombs() const { return theXCombs; } inline ProcessHandler::XVector & ProcessHandler::xCombs() { return theXCombs; } inline const ProcessHandler::XSVector & ProcessHandler::xSecs() const { return theXSecs; } inline ProcessHandler::XSVector & ProcessHandler::xSecs() { return theXSecs; } inline int ProcessHandler::binStrategy() const { return theBinStrategy; } inline tStdXCombPtr ProcessHandler::generate() { double wgt = sampler()->generate(); return select(sampler()->lastBin(), wgt); } inline IBPtr ProcessHandler::clone() const { return new_ptr(*this); } inline IBPtr ProcessHandler::fullclone() const { return new_ptr(*this); } } herwig++-2.6.0.orig/UnderlyingEvent/stat.h0000644000175000017500000000276311754474773021254 0ustar sylvestresylvestre// -*- C++ -*- // // stat.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_Stat_H #define HERWIG_Stat_H namespace Herwig{ /** * Documentation for the statistics struct. * Copied from ThePEG::StandardEventHandler. */ struct Stat { /** Standard constructor */ Stat() : attempted(0), accepted(0), sumw(0.0), maxXSec(CrossSection()), totsum(0.0) {} /** Constructor with arguments.*/ Stat(long att, long acc, double w, CrossSection x, double sumw) : attempted(att), accepted(acc), sumw(w), maxXSec(x), totsum(sumw) {} /** * Calculation of the cross section. */ inline CrossSection xSec() const { return totsum >0.0? maxXSec*sumw/totsum: maxXSec; } /** Store the number of attempts */ long attempted; /** Store the number of accepted ones */ long accepted; /** Sum of weights */ double sumw; /** Maximal cross section */ CrossSection maxXSec; /** Maximal weights */ double totsum; /** Overloaded += operator */ const Stat & operator+= (const Stat & s) { attempted += s.attempted; accepted += s.accepted; sumw += s.sumw; totsum = max(totsum, s.totsum); if ( totsum > 0.0 ) maxXSec = max(maxXSec, s.maxXSec); else maxXSec += s.maxXSec; return *this; } }; } #endif herwig++-2.6.0.orig/UnderlyingEvent/UA5Handler.icc0000644000175000017500000000463111754474773022474 0ustar sylvestresylvestre// -*- C++ -*- // // UA5Handler.icc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the inlined member functions of // the ForcedSplitting class. // namespace Herwig { // This returns the mean multiplicity for the energy E amd the given parameters N1,N2,N3 inline double UA5Handler::meanMultiplicity(Energy E) const { return _n1*pow(E/GeV,2.0*_n2)+_n3; } // This returns the randomly generated value for the negative binomial inline double UA5Handler::negativeBinomial(int N, double mean, double ek) const { if(N < 0) return 0.0; double r = mean/ek; double rval = pow(1.+r, -ek); r /= (1.+r); for(int i = 1; i<=N; i++) rval *= r*(ek+i-1.)/i; return rval; } // This returns random number from dN/d(x**2)=exp(-B*TM) distribution, where // TM = SQRT(X**2+AM0**2). Uses Newton's method to solve F-R=0 inline Energy UA5Handler::randExt(Energy AM0, InvEnergy B) const { double r = rnd(); // Starting value Energy am = AM0-log(r)/B; for(int i = 1; i<20; ++i) { double a = exp(-B*(am-AM0))/(1.+B*AM0); double f = (1.+B*am)*a-r; InvEnergy df = -B*B*am*a; Energy dam = -f/df; am += dam; if(am inline T UA5Handler::gaussDistribution(T mean, T stdev) const { double x = rnd(); x = sqrt(-2.*log(x)); double y; randAzm(x,x,y); return mean + stdev*x; } // This returns a random number with a flat distribution [-A,A] plus gaussian // tail with stdev B inline double UA5Handler::randUng(double A, double B) const { double prun; if(A == 0.) prun = 0.; else prun = 1./(1.+B*1.2533/A); if(rnd() < prun) return 2.*(rnd()-0.5)*A; else { double temp = gaussDistribution(0.,B); if(temp < 0) return temp - abs(A); else return temp + abs(A); } } // Generates a random azimuthal angle and creates a 2 vector of length x with angle phi template inline void UA5Handler::randAzm (T x, T &px, T &py) const { double c,s,cs; while(true) { c = 2.*rnd()-1.; s = 2.*rnd()-1.; cs = c*c+s*s; if(cs <= 1.&&cs!=0.) break; } T qt = x/cs; px = (c*c-s*s)*qt; py = 2.*c*s*qt; } } herwig++-2.6.0.orig/UnderlyingEvent/MPIXSecReweighter.cc0000644000175000017500000000550411754474773023671 0ustar sylvestresylvestre// -*- C++ -*- // // MPIXSecReweighter.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MPIXSecReweighter class. // #include "MPIXSecReweighter.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 "MPIHandler.h" using namespace Herwig; MPIXSecReweighter::MPIXSecReweighter() : sumWeights(0.), xSec(ZERO) {} MPIXSecReweighter::~MPIXSecReweighter() {} void MPIXSecReweighter:: handle(EventHandler & eh, const tPVector &, const Hint &) { if ( MPIHandler::currentHandler() && dynamic_cast(&eh) ) { double corr = 1.; StandardEventHandler& seh = dynamic_cast(eh); CrossSection mpiXSec = MPIHandler::currentHandler()->inelasticXSec(); double weight = seh.currentEvent()->weight(); if ( weight == 0. ) return; CrossSection next = seh.integratedXSecNoReweight(); assert(next != ZERO); if ( xSec != ZERO ) { corr = (mpiXSec/next)*( 1. +(sumWeights/weight)*(1.-next/xSec) ); sumWeights += weight; xSec = next; } else { xSec = next; sumWeights = weight; corr = mpiXSec/xSec; } seh.reweight(corr); } } IBPtr MPIXSecReweighter::clone() const { return new_ptr(*this); } IBPtr MPIXSecReweighter::fullclone() const { return new_ptr(*this); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MPIXSecReweighter::persistentOutput(PersistentOStream &) const {} void MPIXSecReweighter::persistentInput(PersistentIStream &, int) {} // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeHerwigMPIXSecReweighter("Herwig::MPIXSecReweighter", "SimpleKTCut.so HwMPI.so"); void MPIXSecReweighter::Init() { static ClassDocumentation documentation ("MPIXSecReweighter sets up the proper minimum bias cross section."); } herwig++-2.6.0.orig/Models/0000755000175000017500000000000011756464206016211 5ustar sylvestresylvestreherwig++-2.6.0.orig/Models/TTbAsymm/0000755000175000017500000000000011756464206017711 5ustar sylvestresylvestreherwig++-2.6.0.orig/Models/TTbAsymm/TTbAModelWPTDVertex.cc0000644000175000017500000000426111754474773023703 0ustar sylvestresylvestre// -*- C++ -*- // // TTbAModelWPTDVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TTbAModelWPTDVertex class. // #include "TTbAModelWPTDVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Config/Constants.h" using namespace Herwig; IBPtr TTbAModelWPTDVertex::clone() const { return new_ptr(*this); } IBPtr TTbAModelWPTDVertex::fullclone() const { return new_ptr(*this); } TTbAModelWPTDVertex::TTbAModelWPTDVertex() { addToList(-1,6,-34); addToList(-6,1,34); orderInGem(1); orderInGs(1); } void TTbAModelWPTDVertex::doinit() { _theModel = generator()->standardModel(); tcHwTTbAPtr hwTTbA=dynamic_ptr_cast(_theModel); if(hwTTbA) { _cWPTD_R =hwTTbA->_cWPTD_right(); _cWPTD_L =hwTTbA->_cWPTD_left(); _models =hwTTbA->_model(); } FFVVertex::doinit(); } void TTbAModelWPTDVertex::persistentOutput(PersistentOStream & os) const { os << _cWPTD_R << _cWPTD_L << _models; } void TTbAModelWPTDVertex::persistentInput(PersistentIStream & is, int) { is >> _cWPTD_R >> _cWPTD_L >> _models; } ClassDescription TTbAModelWPTDVertex::initTTbAModelWPTDVertex; // Definition of the static class description member. void TTbAModelWPTDVertex::Init() { static ClassDocumentation documentation ("The TTbAModelWPTDVertex class is the implementation" " of the helicity amplitude calculation of the TTbA" " quark-lepton vertex."); } void TTbAModelWPTDVertex::setCoupling(Energy2,tcPDPtr aa ,tcPDPtr bb, tcPDPtr cc) { double _cL = 0, _cR = 0; if(fabs(aa->id()) == 34 || fabs(bb->id()) == 34 || fabs(cc->id()) == 34) { _cR = _cWPTD_R; _cL = _cWPTD_L; } if(_models!=0) { _cL = 1E-10; _cR = 1E-10; } left(_cL); right(_cR); norm(1.0); } herwig++-2.6.0.orig/Models/TTbAsymm/TTbAModelZPQQVertex.cc0000644000175000017500000000534711754474773023726 0ustar sylvestresylvestre// -*- C++ -*- // // TTbAModelZPQQVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TTbAModelZPQQVertex class. // #include "TTbAModelZPQQVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Config/Constants.h" using namespace Herwig; IBPtr TTbAModelZPQQVertex::clone() const { return new_ptr(*this); } IBPtr TTbAModelZPQQVertex::fullclone() const { return new_ptr(*this); } TTbAModelZPQQVertex::TTbAModelZPQQVertex() { addToList(-2,6,32); addToList(-6,2,32); addToList(-2,2,32); addToList(-4,4,32); orderInGem(1); orderInGs(1); } void TTbAModelZPQQVertex::doinit() { _theModel = generator()->standardModel(); tcHwTTbAPtr hwTTbA=dynamic_ptr_cast(_theModel); if(hwTTbA) { _cZPTU_R =hwTTbA->_cZPTU_right(); _cZPTU_L =hwTTbA->_cZPTU_left(); _cZPUU_R =hwTTbA->_cZPUU_right(); _cZPUU_L =hwTTbA->_cZPUU_left(); _cZPCC_R =hwTTbA->_cZPCC_right(); _cZPCC_L =hwTTbA->_cZPCC_left(); _models =hwTTbA->_model(); } FFVVertex::doinit(); } void TTbAModelZPQQVertex::persistentOutput(PersistentOStream & os) const { os << _cZPTU_R << _cZPTU_L << _cZPUU_R << _cZPUU_L << _cZPCC_R << _cZPCC_L << _models; } void TTbAModelZPQQVertex::persistentInput(PersistentIStream & is, int) { is >> _cZPTU_R >> _cZPTU_L >> _cZPUU_R >> _cZPUU_L >> _cZPCC_R >> _cZPCC_L >> _models; } ClassDescription TTbAModelZPQQVertex::initTTbAModelZPQQVertex; // Definition of the static class description member. void TTbAModelZPQQVertex::Init() { static ClassDocumentation documentation ("The TTbAModelZPQQVertex class is the implementation" " of the helicity amplitude calculation of the TTbA" " Z prime Quark-antiQuark vertex."); } void TTbAModelZPQQVertex::setCoupling(Energy2,tcPDPtr aa ,tcPDPtr bb, tcPDPtr cc) { double _cR = 0, _cL = 0; if( fabs(aa->id()) == 6 || fabs(bb->id()) == 6 || fabs(cc->id()) == 6) { _cR = _cZPTU_R; _cL = _cZPTU_L; } else { if( fabs(aa->id()) != 4 && fabs(bb->id()) != 4 && fabs(cc->id()) != 4) { _cR = _cZPUU_R; _cL = _cZPUU_L; } if( fabs(aa->id()) == 4 || fabs(bb->id()) == 4 || fabs(cc->id()) == 4) { _cR = _cZPCC_R; _cL = _cZPCC_L; } } if(_models!=1) { _cL = 1E-10; _cR = 1E-10; } right(_cR); left(_cL); norm(1.0); } herwig++-2.6.0.orig/Models/TTbAsymm/Makefile.in0000644000175000017500000005230411756461701021757 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Models/TTbAsymm DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwTTbAModel_la_LIBADD = am_HwTTbAModel_la_OBJECTS = TTbAModel.lo TTbAModelWPTDVertex.lo \ TTbAModelZPQQVertex.lo TTbAModelAGQQVertex.lo \ TTbAModelSU2XVertex.lo HwTTbAModel_la_OBJECTS = $(am_HwTTbAModel_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwTTbAModel_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwTTbAModel_la_LDFLAGS) \ $(LDFLAGS) -o $@ @WANT_TTBA_TRUE@am_HwTTbAModel_la_rpath = -rpath $(pkglibdir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwTTbAModel_la_SOURCES) DIST_SOURCES = $(HwTTbAModel_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @WANT_TTBA_TRUE@pkglib_LTLIBRARIES = HwTTbAModel.la HwTTbAModel_la_SOURCES = \ TTbAModel.cc TTbAModel.h TTbAModel.fh \ TTbAModelWPTDVertex.h TTbAModelWPTDVertex.cc \ TTbAModelZPQQVertex.h TTbAModelZPQQVertex.cc \ TTbAModelAGQQVertex.h TTbAModelAGQQVertex.cc \ TTbAModelSU2XVertex.h TTbAModelSU2XVertex.cc HwTTbAModel_la_LDFLAGS = -module -version-info 1:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Models/TTbAsymm/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Models/TTbAsymm/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwTTbAModel.la: $(HwTTbAModel_la_OBJECTS) $(HwTTbAModel_la_DEPENDENCIES) $(EXTRA_HwTTbAModel_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwTTbAModel_la_LINK) $(am_HwTTbAModel_la_rpath) $(HwTTbAModel_la_OBJECTS) $(HwTTbAModel_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TTbAModel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TTbAModelAGQQVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TTbAModelSU2XVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TTbAModelWPTDVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TTbAModelZPQQVertex.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Models/TTbAsymm/TTbAModelSU2XVertex.cc0000644000175000017500000001110111754474773023655 0ustar sylvestresylvestre// -*- C++ -*- // // TTbAModelSU2XVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TTbAModelSU2XVertex class. // #include "TTbAModelSU2XVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Config/Constants.h" using namespace Herwig; IBPtr TTbAModelSU2XVertex::clone() const { return new_ptr(*this); } IBPtr TTbAModelSU2XVertex::fullclone() const { return new_ptr(*this); } TTbAModelSU2XVertex::TTbAModelSU2XVertex() { orderInGem(1); orderInGs(1); addToList(-6,6,70); addToList(-2,2,70); addToList(-2,6,70); addToList(2,-6,70); addToList(-6,6,71); addToList(-2,2,71); addToList(-2,6,71); addToList(2,-6,71); addToList(-6,6,-71); addToList(-2,2,-71); addToList(-2,6,-71); addToList(2,-6,-71); } void TTbAModelSU2XVertex::doinit() { _theModel = generator()->standardModel(); tcHwTTbAPtr hwTTbA=dynamic_ptr_cast(_theModel); if(hwTTbA) { _alphaX =hwTTbA->_alphaX_value(); _costhetaX =hwTTbA->_costhetaX_value(); _models =hwTTbA->_model(); } FFVVertex::doinit(); } void TTbAModelSU2XVertex::persistentOutput(PersistentOStream & os) const { os << _alphaX << _costhetaX << _models; } void TTbAModelSU2XVertex::persistentInput(PersistentIStream & is, int) { is >> _alphaX >> _costhetaX >> _models; } ClassDescription TTbAModelSU2XVertex::initTTbAModelSU2XVertex; // Definition of the static class description member. void TTbAModelSU2XVertex::Init() { static ClassDocumentation documentation ("The TTbAModelSU2XVertex class is the implementation" " of the helicity amplitude calculation of the TTbA" " SU(2)_X vertex."); } void TTbAModelSU2XVertex::setCoupling(Energy2,tcPDPtr aa ,tcPDPtr bb, tcPDPtr cc) { double _cR = 0, _fac = 0; _gX = sqrt( 4 * Constants::pi * _alphaX ); double ct = _costhetaX; double st = sqrt(1 - pow(ct,2)); //Vz if( fabs(aa->id()) == 70 || fabs(bb->id()) == 70 || fabs(cc->id()) == 70) { _fac = _gX / 2.0; if( aa->id() == 6 || bb->id() == 6 || cc->id() == 6) { if( aa->id() == -6 || bb->id() == -6 || cc->id() == -6) { _cR = pow(ct,2) - pow(st,2); } } if( aa->id() == 2 || bb->id() == 2 || cc->id() == 2) { if( aa->id() == -2 || bb->id() == -2 || cc->id() == -2) { _cR = pow(st,2) - pow(ct,2); } } if( fabs(aa->id()) == 2 || fabs(bb->id()) == 2 || fabs(cc->id()) == 2) { if( fabs(aa->id()) == 6 || fabs(bb->id()) == 6 || fabs(cc->id()) == 6) { _cR = 2 * ct * st; } } } //Ym if( aa->id() == -71 || bb->id() == -71 || cc->id() == -71 ) { _fac = _gX / sqrt(2.0); if( aa->id() == 6 || bb->id() == 6 || cc->id() == 6) { if( aa->id() == -6 || bb->id() == -6 || cc->id() == -6) { _cR = - ct * st; } } if( aa->id() == 2 || bb->id() == 2 || cc->id() == 2) { if( aa->id() == -2 || bb->id() == -2 || cc->id() == -2) { _cR = ct * st; } } if( aa->id() == 2 || bb->id() == 2 || cc->id() == 2) { if( aa->id() == -6 || bb->id() == -6 || cc->id() == -6) { _cR = - pow(st,2); } } if( aa->id() == -2 || bb->id() == -2 || cc->id() == -2) { if( aa->id() == 6 || bb->id() == 6 || cc->id() == 6) { _cR = pow(ct,2); } } } //Yp if( aa->id() == 71 || bb->id() == 71 || cc->id() == 71 ) { _fac = _gX / sqrt(2.0); if( aa->id() == 6 || bb->id() == 6 || cc->id() == 6) { if( aa->id() == -6 || bb->id() == -6 || cc->id() == -6) { _cR = - ct * st; } } if( aa->id() == 2 || bb->id() == 2 || cc->id() == 2) { if( aa->id() == -2 || bb->id() == -2 || cc->id() == -2) { _cR = ct * st; } } if( aa->id() == 2 || bb->id() == 2 || cc->id() == 2) { if( aa->id() == -6 || bb->id() == -6 || cc->id() == -6) { _cR = pow(ct,2); } } if( aa->id() == -2 || bb->id() == -2 || cc->id() == -2) { if( aa->id() == 6 || bb->id() == 6 || cc->id() == 6) { _cR = - pow(st,2); } } } //normalise according to Lagrangian factor _cR *= _fac; //If this model is not selected set coupling to zero. if(_models!=3) { _cR = 1E-10; } right(_cR); left(0.); norm(1.0); } herwig++-2.6.0.orig/Models/TTbAsymm/TTbAModel.cc0000644000175000017500000001435111754474773022007 0ustar sylvestresylvestre // -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the TTbAModel class. // #include "TTbAModel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; using namespace ThePEG::Helicity; void TTbAModel::doinit() { addVertex(_theWPTDVertex); addVertex(_theZPQQVertex); addVertex(_theAGQQVertex); addVertex(_theSU2XVertex); StandardModel::doinit(); } TTbAModel::TTbAModel(): _gWPTD_L(1.0), _gWPTD_R(1.0),_gZPTU_L(1.0), _gZPTU_R(1.0),_gZPUU_L(1.0), _gZPUU_R(1.0),_gZPCC_L(1.0), _gZPCC_R(1.0),_gAGQQ_L(1.0), _gAGQQ_R(1.0),_gAGTT_L(1.0), _gAGTT_R(1.0), _alphaXparam(0.060), _costhetaXparam(0.95), _modelselect(1) {} IBPtr TTbAModel::clone() const { return new_ptr(*this); } IBPtr TTbAModel::fullclone() const { return new_ptr(*this); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void TTbAModel::persistentOutput(PersistentOStream & os) const { os << _theWPTDVertex << _theZPQQVertex << _theAGQQVertex << _theSU2XVertex << _gWPTD_L << _gWPTD_R << _gZPTU_L << _gZPTU_R << _gZPUU_L << _gZPUU_R << _gZPCC_L << _gZPCC_R << _gAGQQ_L << _gAGQQ_R << _gAGTT_L << _gAGTT_R << _modelselect; } void TTbAModel::persistentInput(PersistentIStream & is, int) { is >> _theWPTDVertex >> _theZPQQVertex >> _theAGQQVertex >> _theSU2XVertex >> _gWPTD_L >> _gWPTD_R >> _gZPTU_L >> _gZPTU_R >> _gZPUU_L >> _gZPUU_R >> _gZPCC_L >> _gZPCC_R >> _gAGQQ_L >> _gAGQQ_R >> _gAGTT_L >> _gAGTT_R >> _modelselect; } ClassDescription TTbAModel::initTTbAModel; // Definition of the static class description member. void TTbAModel::Init() { static Reference interfaceVertexWPTD ("Vertex/WPTD", "Reference to the W prime Top Down vertex", &TTbAModel::_theWPTDVertex, false, false, true, false, false); static Reference interfaceVertexZPQQ ("Vertex/ZPQQ", "Reference to the Z prime Quark-Antiquark vertex", &TTbAModel::_theZPQQVertex, false, false, true, false, false); static Reference interfaceVertexAGQQ ("Vertex/AGQQ", "Reference to the Axigluon Quark-Antiquark vertex", &TTbAModel::_theAGQQVertex, false, false, true, false, false); static Reference interfaceVertexSU2X ("Vertex/SU2X", "Reference to the non-Abelian SU(2)_X vertex", &TTbAModel::_theSU2XVertex, false, false, true, false, false); static Parameter interfaceWPTDLCoupling ("WPTDLCoupling", "The left-handed W prime coupling to top down", &TTbAModel::_gWPTD_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceWPTDRCoupling ("WPTDRCoupling", "The right-handed W prime coupling to top down", &TTbAModel::_gWPTD_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceAGQQLCoupling ("AGQQLCoupling", "The left-handed axigluon coupling to q-qbar", &TTbAModel::_gAGQQ_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceAGQQRCoupling ("AGQQRCoupling", "The right-handed axigluon coupling to q-qbar", &TTbAModel::_gAGQQ_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceAGTTLCoupling ("AGTTLCoupling", "The left-handed axigluon coupling to t-tbar", &TTbAModel::_gAGTT_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceAGTTRCoupling ("AGTTRCoupling", "The right-handed axigluon coupling to t-tbar", &TTbAModel::_gAGTT_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPTULCoupling ("ZPTULCoupling", "The left-handed Z prime coupling to top up", &TTbAModel::_gZPTU_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPTURCoupling ("ZPTURCoupling", "The right-handed Z prime coupling to top up", &TTbAModel::_gZPTU_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPUULCoupling ("ZPUULCoupling", "The left-handed Z prime coupling to up upbar", &TTbAModel::_gZPUU_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPUURCoupling ("ZPUURCoupling", "The right-handed Z prime coupling to up upbar", &TTbAModel::_gZPUU_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPCCLCoupling ("ZPCCLCoupling", "The left-handed Z prime coupling to char charmbar", &TTbAModel::_gZPCC_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPCCRCoupling ("ZPCCRCoupling", "The right-handed Z prime coupling to charm charmbar", &TTbAModel::_gZPCC_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceSU2Xcostheta ("SU2Xcostheta", "Misalignment parameter of SU(2)_X model", &TTbAModel::_costhetaXparam, 0.95, -1.0, 1.0, false, false, Interface::limited); static Parameter interfaceSU2Xalpha ("SU2Xalpha", "alphaX coupling constant", &TTbAModel::_alphaXparam, 0.060, 0.0, 10.0, false, false, Interface::limited); static Parameter interfacemodelselect ("modelselect", "Selet which model to run", &TTbAModel::_modelselect, 0, 0, 4, false, false, Interface::limited); static ClassDocumentation documentation ("There is no documentation for the TTbAModel class"); } herwig++-2.6.0.orig/Models/TTbAsymm/TTbAModelAGQQVertex.h0000644000175000017500000001011211754474773023510 0ustar sylvestresylvestre// -*- C++ -*- // // TTbAModelAGQQVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TTbAModelAGQQVertex_H #define HERWIG_TTbAModelAGQQVertex_H // // This is the declaration of the TTbAModelAGQQVertex class. #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "Herwig++/Models/TTbAsymm/TTbAModel.h" #include "ThePEG/PDT/EnumParticles.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the vertex coupling the Standard Model Higgs * to the Standard Model fermions for helicity amplitude calculations * * @see FFVVertex * @see VertexBase */ class TTbAModelAGQQVertex: public FFVVertex { public: /** * Default constructor. */ TTbAModelAGQQVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initTTbAModelAGQQVertex; /** * Private and non-existent assignment operator. */ TTbAModelAGQQVertex & operator=(const TTbAModelAGQQVertex &); /** * Pointer to the model object. */ tcSMPtr _theModel; private: /** * Storage of the couplings. */ //@{ /** * Axigluon coupling to q-qbar (left-handed) */ double _cAGQQ_L; /** * Axigluon coupling to q-qbar (right-handed) */ double _cAGQQ_R; /** * Axigluon coupling to t-tbar (left-handed) */ double _cAGTT_L; /** * Axigluon coupling to t-tbar (right-handed) */ double _cAGTT_R; /** * Model selector */ int _models; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of TTbAModelAGQQVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of TTbAModelAGQQVertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::TTbAModelAGQQVertex"; } }; /** @endcond */ } #endif /* HERWIG_TTbAModelAGQQVertex_H */ herwig++-2.6.0.orig/Models/TTbAsymm/TTbAModelAGQQVertex.cc0000644000175000017500000000513211754474773023654 0ustar sylvestresylvestre// -*- C++ -*- // // TTbAModelAGQQVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TTbAModelAGQQVertex class. // #include "TTbAModelAGQQVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Config/Constants.h" using namespace Herwig; IBPtr TTbAModelAGQQVertex::clone() const { return new_ptr(*this); } IBPtr TTbAModelAGQQVertex::fullclone() const { return new_ptr(*this); } TTbAModelAGQQVertex::TTbAModelAGQQVertex() { orderInGem(1); orderInGs(1); addToList(-1,1,63); addToList(-2,2,63); addToList(-3,3,63); addToList(-4,4,63); addToList(-5,5,63); addToList(-6,6,63); } void TTbAModelAGQQVertex::doinit() { _theModel = generator()->standardModel(); tcHwTTbAPtr hwTTbA=dynamic_ptr_cast(_theModel); if(hwTTbA) { _cAGQQ_R =hwTTbA->_cAGQQ_right(); _cAGQQ_L =hwTTbA->_cAGQQ_left(); _cAGTT_R =hwTTbA->_cAGTT_right(); _cAGTT_L =hwTTbA->_cAGTT_left(); _models = hwTTbA->_model(); } FFVVertex::doinit(); } void TTbAModelAGQQVertex::persistentOutput(PersistentOStream & os) const { os << _cAGQQ_R << _cAGQQ_L << _cAGTT_R << _cAGTT_L << _models; } void TTbAModelAGQQVertex::persistentInput(PersistentIStream & is, int) { is >> _cAGQQ_R >> _cAGQQ_L >>_cAGTT_R >> _cAGTT_L >> _models; } ClassDescription TTbAModelAGQQVertex::initTTbAModelAGQQVertex; // Definition of the static class description member. void TTbAModelAGQQVertex::Init() { static ClassDocumentation documentation ("The TTbAModelAGQQVertex class is the implementation" " of the helicity amplitude calculation of the TTbA" " quark-lepton vertex."); } void TTbAModelAGQQVertex::setCoupling(Energy2 q2,tcPDPtr aa ,tcPDPtr bb, tcPDPtr cc) { double _cL = 0, _cR = 0; double gstrong = 1.0; gstrong = strongCoupling(q2); if(fabs(aa->id()) == 63 || fabs(bb->id()) == 63 || fabs(cc->id()) == 63) { if(fabs(aa->id()) !=6 && fabs(bb->id()) !=6 && fabs(cc->id()) != 6) { _cR = _cAGQQ_R; _cL = _cAGQQ_L; } else { _cR = _cAGTT_R; _cL = _cAGTT_L; } } if(_models!=2) { _cL = 1E-10; _cR = 1E-10; } left(_cL); right(_cR); norm(gstrong); } herwig++-2.6.0.orig/Models/TTbAsymm/Makefile.am0000644000175000017500000000055411755404422021742 0ustar sylvestresylvestreif WANT_TTBA pkglib_LTLIBRARIES = HwTTbAModel.la endif HwTTbAModel_la_SOURCES = \ TTbAModel.cc TTbAModel.h TTbAModel.fh \ TTbAModelWPTDVertex.h TTbAModelWPTDVertex.cc \ TTbAModelZPQQVertex.h TTbAModelZPQQVertex.cc \ TTbAModelAGQQVertex.h TTbAModelAGQQVertex.cc \ TTbAModelSU2XVertex.h TTbAModelSU2XVertex.cc HwTTbAModel_la_LDFLAGS = -module -version-info 1:0:0 herwig++-2.6.0.orig/Models/TTbAsymm/TTbAModel.fh0000644000175000017500000000046211754474773022015 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the HwTTbAModel class. // #ifndef HERWIG_HwTTbAModel_FH #define HERWIG_HwTTbAModel_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class TTbAModel; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::TTbAModel,HwTTbAPtr); } #endif herwig++-2.6.0.orig/Models/TTbAsymm/TTbAModelSU2XVertex.h0000644000175000017500000000774511754474773023542 0ustar sylvestresylvestre// -*- C++ -*- // // TTbAModelSU2XVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TTbAModelSU2XVertex_H #define HERWIG_TTbAModelSU2XVertex_H // // This is the declaration of the TTbAModelSU2XVertex class. #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "Herwig++/Models/TTbAsymm/TTbAModel.h" #include "ThePEG/PDT/EnumParticles.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the vertex coupling the Standard Model Higgs * to the Standard Model fermions for helicity amplitude calculations * * @see FFVVertex * @see VertexBase */ class TTbAModelSU2XVertex: public FFVVertex { public: /** * Default constructor. */ TTbAModelSU2XVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initTTbAModelSU2XVertex; /** * Private and non-existent assignment operator. */ TTbAModelSU2XVertex & operator=(const TTbAModelSU2XVertex &); /** * Pointer to the model object. */ tcSMPtr _theModel; private: /** * Storage of the couplings. */ //@{ /** * alpha_X coupling for the SU(2)_X gauge */ double _alphaX; /** * Misalignment angle cosine */ double _costhetaX; /** * coupling strength for the SU(2)_X gauge */ double _gX; /** * Model selector */ int _models; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of TTbAModelSU2XVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of TTbAModelSU2XVertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::TTbAModelSU2XVertex"; } }; /** @endcond */ } #endif /* HERWIG_TTbAModelSU2XVertex_H */ herwig++-2.6.0.orig/Models/TTbAsymm/TTbAModel.h0000644000175000017500000001641711754474773021656 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_TTbAModel_H #define HERWIG_TTbAModel_H // // This is the declaration of the TTbAModel class. // #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "TTbAModel.fh" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * Here is the documentation of the TTbAModel class. * * @see \ref TTbAModelInterfaces "The interfaces" * defined for TTbAModel. */ class TTbAModel: public StandardModel { public: /** * The default constructor. */ TTbAModel(); /** @name Vertices */ //@{ /** * Pointer to the object handling W prime vertex. */ tAbstractFFVVertexPtr vertexWPTD() const {return _theWPTDVertex;} /** * Pointer to the object handling Z prime vertex. */ tAbstractFFVVertexPtr vertexZPQQ() const {return _theZPQQVertex;} 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(); /** * Return the W prime top-down left-handed coupling */ double _cWPTD_left() const {return _gWPTD_L;} /** * Return the W prime top-down right-handed coupling */ double _cWPTD_right() const {return _gWPTD_R;} /** * Return the Z prime top-up left-handed coupling */ double _cZPTU_left() const {return _gZPTU_L;} /** * Return the Z prime top-up right-handed coupling */ double _cZPTU_right() const {return _gZPTU_R;} /** * Return the Z prime up-upbar left-handed coupling */ double _cZPUU_left() const {return _gZPUU_L;} /** * Return the Z prime up-upbar right-handed coupling */ double _cZPUU_right() const {return _gZPUU_R;} /** * Return the Z prime charm-charmbar left-handed coupling */ double _cZPCC_left() const {return _gZPCC_L;} /** * Return the Z prime charm-charmbar right-handed coupling */ double _cZPCC_right() const {return _gZPCC_R;} /** * Return the axigluon q-qbar left-handed coupling */ double _cAGQQ_left() const {return _gAGQQ_L;} /** * Return the axigluon q-qbar right-handed coupling */ double _cAGQQ_right() const {return _gAGQQ_R;} /** * Return the axigluon t-tbar left-handed coupling */ double _cAGTT_left() const {return _gAGTT_L;} /** * Return the axigluon t-tbar right-handed coupling */ double _cAGTT_right() const {return _gAGTT_R;} /** * Return the alphaX value of the SU(2)_X model */ double _alphaX_value() const {return _alphaXparam;} /** * Return the costheta misalignment value of the SU(2)_X model */ double _costhetaX_value() const {return _costhetaXparam;} /** * Return the selected model id */ int _model() const {return _modelselect;} 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(); //@} 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initTTbAModel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TTbAModel & operator=(const TTbAModel &); /** * Pointer to the object handling the Wp to Top Down vertex. */ AbstractFFVVertexPtr _theWPTDVertex; /** * Pointer to the object handling the Zp to Quark-antiQuark vertex. */ AbstractFFVVertexPtr _theZPQQVertex; /** * Pointer to the object handling the Ag to Quark-antiQuark vertex. */ AbstractFFVVertexPtr _theAGQQVertex; /** * Pointer to the object handling the SU(2)_X vertex. */ AbstractFFVVertexPtr _theSU2XVertex; /** * W prime coupling to top-down (left-handed) */ double _gWPTD_L; /** * W prime coupling to top-down (right-handed) */ double _gWPTD_R; /** * Z prime coupling to top-up (left-handed) */ double _gZPTU_L; /** * Z prime coupling to top-up (right-handed) */ double _gZPTU_R; /** * Z prime coupling to up-upbar (left-handed) */ double _gZPUU_L; /** * Z prime coupling to up-upbar (right-handed) */ double _gZPUU_R; /** * Z prime coupling to charm-charmbar (left-handed) */ double _gZPCC_L; /** * Z prime coupling to charm-charmbar (right-handed) */ double _gZPCC_R; /** * Axigluon coupling to q-qbar (left-handed) */ double _gAGQQ_L; /** * Axigluon coupling to q-qbar (right-handed) */ double _gAGQQ_R; /** * Axigluon coupling to t-tbar (left-handed) */ double _gAGTT_L; /** * Axigluon coupling to t-tbar (right-handed) */ double _gAGTT_R; /** * SU(2)_X alpha_X parameter */ double _alphaXparam; /** * SU(2)_X costheta misalignment angle */ double _costhetaXparam; /** * Model selector */ int _modelselect; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of TTbAModel. */ template <> struct BaseClassTrait { /** Typedef of the first base class of TTbAModel. */ typedef Herwig::StandardModel NthBase; }; /** This template specialization informs ThePEG about the name of * the TTbAModel class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::TTbAModel"; } /** * The name of a file containing the dynamic library where the class * TTbAModel is implemented. It may also include several, space-separated, * libraries if the class TTbAModel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwTTbAModel.so"; } }; /** @endcond */ } #endif /* HERWIG_TTbAModel_H */ herwig++-2.6.0.orig/Models/TTbAsymm/TTbAModelZPQQVertex.h0000644000175000017500000001040511754474773023557 0ustar sylvestresylvestre// -*- C++ -*- // // TTbAModelZPQQVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TTbAModelZPQQVertex_H #define HERWIG_TTbAModelZPQQVertex_H // // This is the declaration of the TTbAModelZPQQVertex class. #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "Herwig++/Models/TTbAsymm/TTbAModel.h" #include "ThePEG/PDT/EnumParticles.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the vertex coupling the Standard Model Higgs * to the Standard Model fermions for helicity amplitude calculations * * @see FFVVertex * @see VertexBase */ class TTbAModelZPQQVertex: public FFVVertex { public: /** * Default constructor. */ TTbAModelZPQQVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initTTbAModelZPQQVertex; /** * Private and non-existent assignment operator. */ TTbAModelZPQQVertex & operator=(const TTbAModelZPQQVertex &); /** * Pointer to the model object. */ tcSMPtr _theModel; private: /** * Storage of the couplings. */ //@{ /** * Z prime coupling to top-up (left-handed) */ double _cZPTU_L; /** * Z prime coupling to top-up (right-handed) */ double _cZPTU_R; /** * Z prime coupling to up-upbar (left-handed) */ double _cZPUU_L; /** * Z prime coupling to up-upbar (right-handed) */ double _cZPUU_R; /** * Z prime coupling to charm-charmbar (left-handed) */ double _cZPCC_L; /** * Z prime coupling to charm-charmbar (right-handed) */ double _cZPCC_R; /** * Model selector */ int _models; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of TTbAModelZPQQVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of TTbAModelZPQQVertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::TTbAModelZPQQVertex"; } }; /** @endcond */ } #endif /* HERWIG_TTbAModelZPQQVertex_H */ herwig++-2.6.0.orig/Models/TTbAsymm/TTbAModelWPTDVertex.h0000644000175000017500000000765311754474773023555 0ustar sylvestresylvestre// -*- C++ -*- // // TTbAModelWPTDVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TTbAModelWPTDVertex_H #define HERWIG_TTbAModelWPTDVertex_H // // This is the declaration of the TTbAModelWPTDVertex class. #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "Herwig++/Models/TTbAsymm/TTbAModel.h" #include "ThePEG/PDT/EnumParticles.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the vertex coupling the Standard Model Higgs * to the Standard Model fermions for helicity amplitude calculations * * @see FFVVertex * @see VertexBase */ class TTbAModelWPTDVertex: public FFVVertex { public: /** * Default constructor. */ TTbAModelWPTDVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initTTbAModelWPTDVertex; /** * Private and non-existent assignment operator. */ TTbAModelWPTDVertex & operator=(const TTbAModelWPTDVertex &); /** * Pointer to the model object. */ tcSMPtr _theModel; private: /** * Storage of the couplings. */ //@{ /** * W prime coupling to top-down (left-handed) */ double _cWPTD_L; /** * W prime coupling to top-down (right-handed) */ double _cWPTD_R; /** * Model selector */ int _models; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of TTbAModelWPTDVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of TTbAModelWPTDVertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::TTbAModelWPTDVertex"; } }; /** @endcond */ } #endif /* HERWIG_TTbAModelWPTDVertex_H */ herwig++-2.6.0.orig/Models/RSModel/0000755000175000017500000000000011756464205017515 5ustar sylvestresylvestreherwig++-2.6.0.orig/Models/RSModel/RSModelFFGGRVertex.cc0000644000175000017500000000434611754474773023323 0ustar sylvestresylvestre// -*- C++ -*- // // RSModelFFGGRVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the RSModelFFGGRVertex class. // #include "RSModelFFGGRVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; RSModelFFGGRVertex::RSModelFFGGRVertex() : couplast_(0.), q2last_(ZERO), kappa_(ZERO) { orderInGem(1); orderInGs (1); } void RSModelFFGGRVertex::doinit() { for(int ix=1;ix<7;++ix) { addToList(-ix,ix,21,39); } FFVTVertex::doinit(); tcHwRSPtr hwRS=dynamic_ptr_cast(generator()->standardModel()); if(!hwRS) throw Exception() << "Must have RSModel in RSModelFFGGRVertex::doinit()" << Exception::runerror; kappa_ = 2./hwRS->lambda_pi(); } void RSModelFFGGRVertex::persistentOutput(PersistentOStream & os) const { os << ounit(kappa_,InvGeV); } void RSModelFFGGRVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(kappa_,InvGeV); } ClassDescription RSModelFFGGRVertex::initRSModelFFGGRVertex; // Definition of the static class description member. void RSModelFFGGRVertex::Init() { static ClassDocumentation documentation ("The RSModelFFGGRVertexxs class is the implementation" " of the two fermion vector coupling for the RS model."); } // FFGGR coupling #ifndef NDEBUG void RSModelFFGGRVertex::setCoupling(Energy2 q2,tcPDPtr aa,tcPDPtr, tcPDPtr cc, tcPDPtr) { #else void RSModelFFGGRVertex::setCoupling(Energy2 q2,tcPDPtr,tcPDPtr, tcPDPtr, tcPDPtr) { #endif // work out the particles assert(cc->id()==ParticleID::g && abs(aa->id()) <=6 ); // overall factor if(q2last_ != q2 || couplast_ == 0. ) { couplast_ = strongCoupling(q2); q2last_ = q2; } left (1.); right(1.); // set the coupling norm( UnitRemoval::E * kappa_ * couplast_); } herwig++-2.6.0.orig/Models/RSModel/RSModel.fh0000644000175000017500000000044611754474773021356 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the HwRSModel class. // #ifndef HERWIG_HwRSModel_FH #define HERWIG_HwRSModel_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class RSModel; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::RSModel,HwRSPtr); } #endif herwig++-2.6.0.orig/Models/RSModel/RSModelFFGGRVertex.h0000644000175000017500000001011511754474773023154 0ustar sylvestresylvestre// -*- C++ -*- // // RSModelFFGGRVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_RSModelFFGGRVertex_H #define HERWIG_RSModelFFGGRVertex_H // // This is the declaration of the RSModelFFGGRVertex class. #include "ThePEG/Helicity/Vertex/Tensor/FFVTVertex.h" #include "RSModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the fermion-antifermion-vector-graviton * vertex for the Randell-Sundrum model * * @see FFVTVertex * @see VertexBase */ class RSModelFFGGRVertex: public FFVTVertex { public: /** * Default constructor. */ RSModelFFGGRVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the foruth particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2, tcPDPtr part3, tcPDPtr part4); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initRSModelFFGGRVertex; /** * Private and non-existent assignment operator. */ RSModelFFGGRVertex & operator=(const RSModelFFGGRVertex &); private: /** * Storage of the couplings. */ //@{ /** * The last value of the coupling/ */ Complex couplast_; /** * The last value of the scale, \f$q^2\f$. */ Energy2 q2last_; /** * The graviton coupling. */ InvEnergy kappa_; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of RSModelFFGGRVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of RSModelFFGGRVertex. */ typedef ThePEG::Helicity::FFVTVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::RSModelFFGGRVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwRSModel.so"; } }; /** @endcond */ } #endif /* HERWIG_RSModelFFGGRVertex_H */ herwig++-2.6.0.orig/Models/RSModel/Makefile.in0000644000175000017500000005310211756461700021560 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Models/RSModel DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwRSModel_la_LIBADD = am_HwRSModel_la_OBJECTS = RSModel.lo RSModelFFGRVertex.lo \ RSModelFFGGRVertex.lo RSModelFFWGRVertex.lo \ RSModelSSGRVertex.lo RSModelVVGRVertex.lo \ RSModelWWWGRVertex.lo RSModelGGGGRVertex.lo HwRSModel_la_OBJECTS = $(am_HwRSModel_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwRSModel_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(HwRSModel_la_LDFLAGS) $(LDFLAGS) -o $@ @WANT_RS_TRUE@am_HwRSModel_la_rpath = -rpath $(pkglibdir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwRSModel_la_SOURCES) DIST_SOURCES = $(HwRSModel_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @WANT_RS_TRUE@pkglib_LTLIBRARIES = HwRSModel.la HwRSModel_la_SOURCES = RSModel.fh RSModel.cc RSModel.h \ RSModelFFGRVertex.cc RSModelFFGRVertex.h \ RSModelFFGGRVertex.cc RSModelFFGGRVertex.h \ RSModelFFWGRVertex.cc RSModelFFWGRVertex.h \ RSModelSSGRVertex.cc RSModelSSGRVertex.h \ RSModelVVGRVertex.cc RSModelVVGRVertex.h \ RSModelWWWGRVertex.cc RSModelWWWGRVertex.h\ RSModelGGGGRVertex.cc RSModelGGGGRVertex.h HwRSModel_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 8:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Models/RSModel/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Models/RSModel/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwRSModel.la: $(HwRSModel_la_OBJECTS) $(HwRSModel_la_DEPENDENCIES) $(EXTRA_HwRSModel_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwRSModel_la_LINK) $(am_HwRSModel_la_rpath) $(HwRSModel_la_OBJECTS) $(HwRSModel_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RSModel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RSModelFFGGRVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RSModelFFGRVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RSModelFFWGRVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RSModelGGGGRVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RSModelSSGRVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RSModelVVGRVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RSModelWWWGRVertex.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Models/RSModel/RSModelGGGGRVertex.h0000644000175000017500000001021511754474773023157 0ustar sylvestresylvestre// -*- C++ -*- // // RSModelGGGGRVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_RSModelGGGGRVertex_H #define HERWIG_RSModelGGGGRVertex_H // // This is the declaration of the RSModelGGGGRVertex class. #include "ThePEG/Helicity/Vertex/Tensor/VVVTVertex.h" #include "RSModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * The RSModelGGGGRVertex class is the implementation of the * triple vector graviton couling in the RS model. * It inherits from VVVTVertex and implements the setCoupling member. * * @see VVVTVertex * @see VertexBase */ class RSModelGGGGRVertex: public VVVTVertex { public: /** * Default constructor. */ RSModelGGGGRVertex(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the foruth particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3, tcPDPtr part4); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initRSModelGGGGRVertex; /** * Private and non-existent assignment operator. */ RSModelGGGGRVertex & operator=(const RSModelGGGGRVertex &); private: /** * Storage of the couplings. */ //@{ /** * The graviton coupling. */ InvEnergy kappa_; /** * The last value of the coupling/ */ Complex _couplast; /** * The last value of the scale, \f$q^2\f$. */ Energy2 _q2last; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of RSModelGGGGRVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of RSModelGGGGRVertex. */ typedef ThePEG::Helicity::VVVTVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::RSModelGGGGRVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwRSModel.so"; } }; /** @endcond */ } #endif /* HERWIG_RSModelGGGGRVertex_H */ herwig++-2.6.0.orig/Models/RSModel/RSModelWWWGRVertex.cc0000644000175000017500000000610411754474773023377 0ustar sylvestresylvestre// -*- C++ -*- // // RSModelVVVGRVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the RSModelWWWGRVertex class. // #include "RSModelWWWGRVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; RSModelWWWGRVertex::RSModelWWWGRVertex() : kappa_(ZERO), _couplast(0.), _q2last(ZERO), _zfact(0.) { // order in the couplings orderInGem(2); orderInGs (0); } void RSModelWWWGRVertex::doinit() { addToList(24,-24, 22, 39); addToList(24,-24, 23, 39); VVVTVertex::doinit(); _zfact = sqrt((1.-sin2ThetaW())/sin2ThetaW()); // set the graviton coupling tcHwRSPtr hwRS=dynamic_ptr_cast(generator()->standardModel()); if(!hwRS) throw Exception() << "Must have RSModel in RSModelWWWGRVertex::doinit()" << Exception::runerror; kappa_=2./hwRS->lambda_pi(); } void RSModelWWWGRVertex::persistentOutput(PersistentOStream & os) const { os << ounit(kappa_,InvGeV) << _zfact; } void RSModelWWWGRVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(kappa_,InvGeV) >> _zfact; } ClassDescription RSModelWWWGRVertex::initRSModelWWWGRVertex; // Definition of the static class description member. void RSModelWWWGRVertex::Init() { static ClassDocumentation documentation ("The RSModelWWWGRVertex class is the four point coupling" " of three vector bosons and a graviton in the Randell-Sundrum model."); } // couplings for the WWWGR vertex void RSModelWWWGRVertex::setCoupling(Energy2 q2,tcPDPtr a,tcPDPtr b, tcPDPtr c, tcPDPtr) { int ida=a->id(); int idb=b->id(); int idc=c->id(); // first the overall normalisation if(q2!=_q2last||_couplast==0.) { _couplast = electroMagneticCoupling(q2); _q2last=q2; } // W- W+ photon and cylic perms if((ida==-24 && idb== 24 && idc== 22) || (ida== 22 && idb==-24 && idc== 24) || (ida== 24 && idb== 22 && idc==-24) ) norm(Complex(_couplast*kappa_*UnitRemoval::E)); // W+ W- photon (anticylic perms of above) else if((ida== 24 && idb==-24 && idc== 22) || (ida== 22 && idb== 24 && idc==-24) || (ida==-24 && idb== 22 && idc== 24) ) norm(-Complex(_couplast*kappa_*UnitRemoval::E)); // W- W+ Z and cylic perms else if((ida==-24 && idb== 24 && idc== 23) || (ida== 23 && idb==-24 && idc== 24) || (ida== 24 && idb== 23 && idc==-24) ) norm(Complex(_couplast*_zfact*kappa_*UnitRemoval::E)); // W+ W- Z (anticylic perms of above) else if((ida== 24 && idb==-24 && idc== 23) || (ida== 23 && idb== 24 && idc==-24) || (ida==-24 && idb== 23 && idc== 24) ) norm(-Complex(_couplast*_zfact*kappa_*UnitRemoval::E)); else assert(false); } herwig++-2.6.0.orig/Models/RSModel/RSModelGGGGRVertex.cc0000644000175000017500000000431011754474773023314 0ustar sylvestresylvestre// -*- C++ -*- // // RSModelGGGGRVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the RSModelGGGGRVertex class. // #include "RSModelGGGGRVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; RSModelGGGGRVertex::RSModelGGGGRVertex() : kappa_(ZERO), _couplast(0.), _q2last(ZERO) { orderInGem(1); orderInGs (1); } void RSModelGGGGRVertex::doinit() { addToList(21, 21, 21, 39); VVVTVertex::doinit(); // set the graviton coupling tcHwRSPtr hwRS=dynamic_ptr_cast(generator()->standardModel()); if(!hwRS) throw Exception() << "Must have RSModel in RSModelGGGGRVertex::doinit()" << Exception::runerror; kappa_=2./hwRS->lambda_pi(); } void RSModelGGGGRVertex::persistentOutput(PersistentOStream & os) const { os << ounit(kappa_,InvGeV); } void RSModelGGGGRVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(kappa_,InvGeV); } ClassDescription RSModelGGGGRVertex::initRSModelGGGGRVertex; // Definition of the static class description member. void RSModelGGGGRVertex::Init() { static ClassDocumentation documentation ("The RSModelGGGGRVertex class is the four point coupling" " of three vector bosons and a graviton in the Randell-Sundrum model."); } // couplings for the GGGGR vertex #ifndef NDEBUG void RSModelGGGGRVertex::setCoupling(Energy2 q2,tcPDPtr a,tcPDPtr b, tcPDPtr c, tcPDPtr) { #else void RSModelGGGGRVertex::setCoupling(Energy2 q2,tcPDPtr,tcPDPtr, tcPDPtr, tcPDPtr) { #endif assert(a->id() == ParticleID::g && b->id() == ParticleID::g && c->id() == ParticleID::g); if(q2!=_q2last||_couplast==0.) { _couplast = strongCoupling(q2); _q2last=q2; } norm(Complex(_couplast*kappa_*UnitRemoval::E)); } herwig++-2.6.0.orig/Models/RSModel/RSModelVVGRVertex.cc0000644000175000017500000000343311754474773023250 0ustar sylvestresylvestre// -*- C++ -*- // // RSModelVVGRVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the RSModelVVGRVertex class. // #include "RSModelVVGRVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; void RSModelVVGRVertex::persistentOutput(PersistentOStream & os) const { os << ounit(kappa_,InvGeV); } void RSModelVVGRVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(kappa_,InvGeV); } ClassDescription RSModelVVGRVertex::initRSModelVVGRVertex; // Definition of the static class description member. void RSModelVVGRVertex::Init() { static ClassDocumentation documentation ("The RSModelVVGRVertex class is the implementation" " of the RSModel vector-vector-graviton vertex"); } void RSModelVVGRVertex::setCoupling(Energy2,tcPDPtr,tcPDPtr, tcPDPtr) { norm(Complex(UnitRemoval::E * kappa_)); } RSModelVVGRVertex::RSModelVVGRVertex() : kappa_(ZERO) { orderInGem(1); orderInGs (0); } void RSModelVVGRVertex::doinit() { addToList(23,23,39); addToList(22,22,39); addToList(24,-24,39); addToList(21,21,39); VVTVertex::doinit(); tcHwRSPtr hwRS=dynamic_ptr_cast(generator()->standardModel()); if(!hwRS) throw Exception() << "Must be RSModel in RSModelVVGRVertex::doinit()" << Exception::runerror; kappa_=2./hwRS->lambda_pi(); } herwig++-2.6.0.orig/Models/RSModel/RSModelSSGRVertex.h0000644000175000017500000000750011754474773023103 0ustar sylvestresylvestre// -*- C++ -*- // // RSModelSSGRVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_RSModelSSGRVertex_H #define HERWIG_RSModelSSGRVertex_H // // This is the declaration of the RSModelSSGRVertex class. #include "ThePEG/Helicity/Vertex/Tensor/SSTVertex.h" #include "RSModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * The RSModelSSGRVertex class is thew implementation of the graviton * coupling to the Higgs in the RSModel. It inherits from the SSTVertex * and implements the setCoupling member * * @see SSTVertex * @see VertexBase */ class RSModelSSGRVertex: public SSTVertex { public: /** * Default constructor. */ RSModelSSGRVertex(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initRSModelSSGRVertex; /** * Private and non-existent assignment operator. */ RSModelSSGRVertex & operator=(const RSModelSSGRVertex &); /** * Coupling. */ InvEnergy kappa_; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of RSModelSSGRVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of RSModelSSGRVertex. */ typedef ThePEG::Helicity::SSTVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::RSModelSSGRVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwRSModel.so"; } }; /** @endcond */ } #endif /* HERWIG_RSModelSSGRVertex_H */ herwig++-2.6.0.orig/Models/RSModel/RSModel.h0000644000175000017500000001320311754474773021203 0ustar sylvestresylvestre// -*- C++ -*- // // RSModel.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_RSModel_H #define HERWIG_RSModel_H // This is the declaration of the RSModel class. #include "Herwig++/Models/General/BSMModel.h" #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractSSTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVTVertex.h" #include "RSModel.fh" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** \ingroup Models * * This is the class to be used instead of the Standard Model class for * the Randell Sundrum model. * * @see \ref RSModelInterfaces "The interfaces" * defined for RSModel. * @see StandardModel * @see StandardModelBase * */ class RSModel: public BSMModel { public: /** * The default constructor */ RSModel(): Lambda_pi_(10000*GeV) { useMe(); } /** * Return the gravition coupling */ Energy lambda_pi() const {return Lambda_pi_;} /** @name Vertices */ //@{ /** * Pointer to the object handling the \f$G\to f\bar{f}\f$ vertex. */ tAbstractFFTVertexPtr vertexFFGR() const {return FFGRVertex_;} /** * Pointer to the object handling the \f$G\to VV\f$ vertex. */ tAbstractVVTVertexPtr vertexVVGR() const {return VVGRVertex_;} /** * Pointer to the object handling the \f$G\to SS\f$ vertex. */ tAbstractSSTVertexPtr vertexSSGR() const {return SSGRVertex_;} /** * Pointer to the object handling the \f$G\to f\bar{f}g\f$ vertex. */ tAbstractFFVTVertexPtr vertexFFGGR() const {return FFGGRVertex_;} /** * Pointer to the object handling the \f$G\to f\bar{f}W^\pm/Z^0/\gamma\f$ vertex. */ tAbstractFFVTVertexPtr vertexFFWGR() const {return FFWGRVertex_;} /** * Pointer to the object handling the \f$G\to W^+W^-Z^0/\gamma\f$ vertex. */ tAbstractVVVTVertexPtr vertexWWWGR() const {return WWWGRVertex_;} /** * Pointer to the object handling the \f$G\to ggg\f$ vertex. */ tAbstractVVVTVertexPtr vertexGGGGR() const {return GGGGRVertex_;} //@} 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); 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(); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription initRSModel; /** * Private and non-existent assignment operator. */ RSModel & operator=(const RSModel &); private: /** * Coupling of the graviton */ Energy Lambda_pi_; /** * Pointer to the object handling the \f$G\to f\bar{f}\f$ vertex. */ AbstractFFTVertexPtr FFGRVertex_; /** * Pointer to the object handling the \f$G\to VV\f$ vertex. */ AbstractVVTVertexPtr VVGRVertex_; /** * Pointer to the object handling the \f$G\to SS\f$ vertex. */ AbstractSSTVertexPtr SSGRVertex_; /** * Pointer to the object handling the \f$G\to f\bar{f}g\f$ vertex. */ AbstractFFVTVertexPtr FFGGRVertex_; /** * Pointer to the object handling the \f$G\to f\bar{f}W/Z^0\gamma\f$ vertex. */ AbstractFFVTVertexPtr FFWGRVertex_; /** * Pointer to the object handling the \f$G\to W^+W^-Z^0\gamma\f$ vertex. */ AbstractVVVTVertexPtr WWWGRVertex_; /** * Pointer to the object handling the \f$G\to ggg\f$ vertex. */ AbstractVVVTVertexPtr GGGGRVertex_; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of RSModel. */ template <> struct BaseClassTrait { /** Typedef of the base class of RSModel. */ typedef Herwig::BSMModel NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return the class name.*/ static string className() { return "Herwig::RSModel"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwRSModel.so"; } }; /** @endcond */ } #endif /* HERWIG_RSModel_H */ herwig++-2.6.0.orig/Models/RSModel/RSModelVVGRVertex.h0000644000175000017500000000733411754474773023116 0ustar sylvestresylvestre// -*- C++ -*- // // RSModelVVGRVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_RSModelVVGRVertex_H #define HERWIG_RSModelVVGRVertex_H // // This is the declaration of the RSModelVVGRVertex class. #include "ThePEG/Helicity/Vertex/Tensor/VVTVertex.h" #include "RSModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the vector-vector-graviton vertex for * the RS model * * @see VVTVertex * @see VertexBase */ class RSModelVVGRVertex: public VVTVertex { public: /** * Default constructor. */ RSModelVVGRVertex(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initRSModelVVGRVertex; /** * Private and non-existent assignment operator. */ RSModelVVGRVertex & operator=(const RSModelVVGRVertex &); /** * The coupling. */ InvEnergy kappa_; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of RSModelVVGRVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of RSModelVVGRVertex. */ typedef ThePEG::Helicity::VVTVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::RSModelVVGRVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwRSModel.so"; } }; /** @endcond */ } #endif /* HERWIG_RSModelVVGRVertex_H */ herwig++-2.6.0.orig/Models/RSModel/Makefile.am0000644000175000017500000000074711754474773021572 0ustar sylvestresylvestreif WANT_RS pkglib_LTLIBRARIES = HwRSModel.la endif HwRSModel_la_SOURCES = RSModel.fh RSModel.cc RSModel.h \ RSModelFFGRVertex.cc RSModelFFGRVertex.h \ RSModelFFGGRVertex.cc RSModelFFGGRVertex.h \ RSModelFFWGRVertex.cc RSModelFFWGRVertex.h \ RSModelSSGRVertex.cc RSModelSSGRVertex.h \ RSModelVVGRVertex.cc RSModelVVGRVertex.h \ RSModelWWWGRVertex.cc RSModelWWWGRVertex.h\ RSModelGGGGRVertex.cc RSModelGGGGRVertex.h HwRSModel_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 8:0:0 herwig++-2.6.0.orig/Models/RSModel/RSModelFFWGRVertex.h0000644000175000017500000001066311754474773023204 0ustar sylvestresylvestre// -*- C++ -*- // // RSModelFFWGRVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_RSModelFFWGRVertex_H #define HERWIG_RSModelFFWGRVertex_H // // This is the declaration of the RSModelFFWGRVertex class. #include "ThePEG/Helicity/Vertex/Tensor/FFVTVertex.h" #include "RSModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the fermion-antifermion-vector-graviton * vertex for the Randell-Sundrum model * * @see FFVTVertex * @see VertexBase */ class RSModelFFWGRVertex: public FFVTVertex { public: /** * Default constructor. */ RSModelFFWGRVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the foruth particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2, tcPDPtr part3, tcPDPtr part4); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initRSModelFFWGRVertex; /** * Private and non-existent assignment operator. */ RSModelFFWGRVertex & operator=(const RSModelFFWGRVertex &); private: /** * Storage of the couplings. */ //@{ /** * The charges of the Standard Model fermions. */ vector charge_; /** * The left couplings of the Standard Model fermions. */ vector gl_; /** * The right couplings of the Standard Model fermions. */ vector gr_; /** * The elements of the CKM matrix. */ vector > ckm_; /** * The last value of the coupling/ */ Complex couplast_; /** * The last value of the scale, \f$q^2\f$. */ Energy2 q2last_; /** * The graviton coupling. */ InvEnergy kappa_; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of RSModelFFWGRVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of RSModelFFWGRVertex. */ typedef ThePEG::Helicity::FFVTVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::RSModelFFWGRVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwRSModel.so"; } }; /** @endcond */ } #endif /* HERWIG_RSModelFFWGRVertex_H */ herwig++-2.6.0.orig/Models/RSModel/RSModelSSGRVertex.cc0000644000175000017500000000333111754474773023237 0ustar sylvestresylvestre// -*- C++ -*- // // RSModelSSGRVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the RSModelSSGRVertex class. // #include "RSModelSSGRVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; RSModelSSGRVertex::RSModelSSGRVertex() : kappa_(ZERO) { orderInGem(1); orderInGs (0); } void RSModelSSGRVertex::doinit() { addToList(25,25,39); SSTVertex::doinit(); tcHwRSPtr hwRS=dynamic_ptr_cast(generator()->standardModel()); if(!hwRS) throw Exception() << "Must have RSModel in RSModelSSGRVertex::doinit()" << Exception::runerror; kappa_=2./hwRS->lambda_pi(); } void RSModelSSGRVertex::persistentOutput(PersistentOStream & os) const { os << ounit(kappa_,InvGeV); } void RSModelSSGRVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(kappa_,InvGeV); } ClassDescription RSModelSSGRVertex::initRSModelSSGRVertex; // Definition of the static class description member. void RSModelSSGRVertex::Init() { static ClassDocumentation documentation ("The RSModelSSGRVertex class is the implementation of" " the RSModel scalar-scalar-graviton vertex"); } void RSModelSSGRVertex::setCoupling(Energy2,tcPDPtr,tcPDPtr, tcPDPtr) { norm(Complex(kappa_ * UnitRemoval::E)); } herwig++-2.6.0.orig/Models/RSModel/RSModel.cc0000644000175000017500000000756111754474773021353 0ustar sylvestresylvestre// -*- C++ -*- // // RSModel.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the RSModel class. // #include "RSModel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; using namespace ThePEG::Helicity; void RSModel::doinit() { addVertex(FFGRVertex_); addVertex(VVGRVertex_); addVertex(SSGRVertex_); addVertex(FFGGRVertex_); addVertex(FFWGRVertex_); addVertex(GGGGRVertex_); addVertex(WWWGRVertex_); BSMModel::doinit(); } void RSModel::persistentOutput(PersistentOStream & os) const { os << ounit(Lambda_pi_,GeV) << FFGRVertex_ << VVGRVertex_ << SSGRVertex_ << FFGGRVertex_ << FFWGRVertex_ << GGGGRVertex_ << WWWGRVertex_; } void RSModel::persistentInput(PersistentIStream & is, int) { is >> iunit(Lambda_pi_,GeV) >> FFGRVertex_ >> VVGRVertex_ >> SSGRVertex_ >> FFGGRVertex_ >> FFWGRVertex_ >> GGGGRVertex_ >> WWWGRVertex_; } ClassDescription RSModel::initRSModel; // Definition of the static class description member. void RSModel::Init() { static Reference interfaceVertexFFGR ("Vertex/FFGR", "Reference to the fermion-fermion-graviton vertex", &RSModel::FFGRVertex_, false, false, true, false, false); static Reference interfaceVertexVVGR ("Vertex/VVGR", "Reference to the vector-vector-graviton vertex", &RSModel::VVGRVertex_, false, false, true, false, false); static Reference interfaceVertexSSGR ("Vertex/SSGR", "Reference to the scalar-scalar-graviton vertex", &RSModel::SSGRVertex_, false, false, true, false, false); static Reference interfaceVertexFFGGR ("Vertex/FFGGR", "Reference to the fermion-antifermion-gluon graviton vertex", &RSModel::FFGGRVertex_, false, false, true, false, false); static Reference interfaceVertexFFWGR ("Vertex/FFWGR", "Reference to the fermion-antifermion-weak vector boson graviton vertex", &RSModel::FFWGRVertex_, false, false, true, false, false); static Reference interfaceVertexGGGGR ("Vertex/GGGGR", "Reference to the three gluon graviton vertex", &RSModel::GGGGRVertex_, false, false, true, false, false); static Reference interfaceVertexWWWGR ("Vertex/WWWGR", "Reference to the three weak vector boson graviton vertex", &RSModel::WWWGRVertex_, false, false, true, false, false); static Parameter interfaceLambda_pi ("Lambda_pi", "The coupling of the graviton to matter", &RSModel::Lambda_pi_, GeV, 10000*GeV, ZERO, 1.0e12*GeV, false, false, false); static ClassDocumentation documentation ("The RSModel class replaces the Standard Model class for the" " RS model", "The Randall-Sundrum model was constructed from \\cite{Randall:1999ee}.", "%\\cite{Randall:1999ee}\n" "\\bibitem{Randall:1999ee}\n" " L.~Randall and R.~Sundrum,\n" " ``A large mass hierarchy from a small extra dimension,''\n" " Phys.\\ Rev.\\ Lett.\\ {\\bf 83}, 3370 (1999)\n" " [arXiv:hep-ph/9905221].\n" " %%CITATION = PRLTA,83,3370;%%\n" ); } herwig++-2.6.0.orig/Models/RSModel/RSModelFFWGRVertex.cc0000644000175000017500000001252111754474773023335 0ustar sylvestresylvestre// -*- C++ -*- // // RSModelFFWGRVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the RSModelFFWGRVertex class. // #include "RSModelFFWGRVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Models/StandardModel/StandardCKM.h" using namespace Herwig; using namespace ThePEG; RSModelFFWGRVertex::RSModelFFWGRVertex() : charge_(17,0.), gl_(17,0.), gr_(17,0.), ckm_(3,vector(3,0.0)), couplast_(0.), q2last_(ZERO), kappa_(ZERO) { orderInGem(2); orderInGs (0); } void RSModelFFWGRVertex::doinit() { for(int ix=11;ix<17;++ix) { addToList(-ix,ix,22,39); addToList(-ix,ix,23,39); } for(int ix=1;ix<7;++ix) { addToList(-ix,ix,22,39); addToList(-ix,ix,23,39); } // particles for outgoing W- // quarks for(int ix=1;ix<6;ix+=2) { for(int iy=2;iy<7;iy+=2) { addToList(-ix, iy, -24,39); } } // leptons for(int ix=11;ix<17;ix+=2) { addToList(-ix, ix+1, -24,39); } // particles for outgoing W+ // quarks for(int ix=2;ix<7;ix+=2) { for(int iy=1;iy<6;iy+=2) { addToList(-ix, iy, 24,39); } } // leptons for(int ix=11;ix<17;ix+=2) { addToList(-ix-1, ix, 24,39); } FFVTVertex::doinit(); tcHwRSPtr hwRS=dynamic_ptr_cast(generator()->standardModel()); if(!hwRS) throw Exception() << "Must have RSModel in RSModelFFWGRVertex::doinit()" << Exception::runerror; double sw2 = sin2ThetaW(); double fact = 0.25/sqrt(sw2*(1.-sw2)); for(int ix=1;ix<4;++ix) { charge_[2*ix-1] = hwRS->ed(); charge_[2*ix ] = hwRS->eu(); charge_[2*ix+9 ] = hwRS->ee(); charge_[2*ix+10] = hwRS->enu(); gl_[2*ix-1] = fact*(hwRS->vd() + hwRS->ad() ); gl_[2*ix ] = fact*(hwRS->vu() + hwRS->au() ); gl_[2*ix+9 ] = fact*(hwRS->ve() + hwRS->ae() ); gl_[2*ix+10] = fact*(hwRS->vnu() + hwRS->anu()); gr_[2*ix-1] = fact*(hwRS->vd() - hwRS->ad() ); gr_[2*ix ] = fact*(hwRS->vu() - hwRS->au() ); gr_[2*ix+9 ] = fact*(hwRS->ve() - hwRS->ae() ); gr_[2*ix+10] = fact*(hwRS->vnu() - hwRS->anu()); } kappa_ = 2./hwRS->lambda_pi(); Ptr::transient_pointer CKM = generator()->standardModel()->CKM(); // cast the CKM object to the HERWIG one ThePEG::Ptr::transient_const_pointer hwCKM = ThePEG::dynamic_ptr_cast< ThePEG::Ptr:: transient_const_pointer>(CKM); if(hwCKM) { vector< vector > CKM; CKM = hwCKM->getUnsquaredMatrix(generator()->standardModel()->families()); for(unsigned int ix=0;ix<3;++ix) { for(unsigned int iy=0;iy<3;++iy) { ckm_[ix][iy]=CKM[ix][iy]; } } } else { throw Exception() << "Must have access to the Herwig::StandardCKM object" << "for the CKM matrix in SMFFWVertex::doinit()" << Exception::runerror; } } void RSModelFFWGRVertex::persistentOutput(PersistentOStream & os) const { os << charge_ << gl_ << gr_ << ounit(kappa_,InvGeV) << ckm_; } void RSModelFFWGRVertex::persistentInput(PersistentIStream & is, int) { is >> charge_ >> gl_ >> gr_ >> iunit(kappa_,InvGeV) >> ckm_; } ClassDescription RSModelFFWGRVertex::initRSModelFFWGRVertex; // Definition of the static class description member. void RSModelFFWGRVertex::Init() { static ClassDocumentation documentation ("The RSModelFFWGRVertexxs class is the implementation" " of the two fermion vector coupling for the RS model."); } // FFWGR coupling void RSModelFFWGRVertex::setCoupling(Energy2 q2,tcPDPtr aa,tcPDPtr bb, tcPDPtr cc, tcPDPtr) { // work out the particles int iferm= abs(aa->id()); int ibos = abs(cc->id()); Complex coup; // overall factor assert( ibos >= 22 && ibos <= 24 ); if( q2last_ != q2 || couplast_ == 0. ) { couplast_ = electroMagneticCoupling(q2); q2last_ = q2; } // photon if(ibos==22) { // alpha coup = UnitRemoval::E * kappa_ * couplast_; // _charge of particle assert((iferm>=1 && iferm<=6)||(iferm>=11 &&iferm<=16)); coup *= charge_[iferm]; left (1.); right(1.); } // Z boson else if(ibos==23) { coup = UnitRemoval::E * kappa_ * couplast_; // _charge of particle assert((iferm>=1 && iferm<=6)||(iferm>=11 &&iferm<=16)); left (gl_[iferm]); right(gr_[iferm]); } else if(ibos==24) { coup = UnitRemoval::E * kappa_ * couplast_ * sqrt(0.5) / sqrt(sin2ThetaW()); // the left and right couplings int iferm=abs(aa->id()); int ianti=abs(bb->id()); // quarks if(iferm>=1 && iferm <=6) { int iu,id; // up type first if(iferm%2==0) { iu = iferm/2; id = (ianti+1)/2; } // down type first else { iu = ianti/2; id = (iferm+1)/2; } assert( iu>=1 && iu<=3 && id>=1 && id<=3); left(ckm_[iu-1][id-1]); right(0.); } // leptons else if(iferm>=11 && iferm <=16) { left(1.); right(0.); } else assert(false); } // set the coupling norm(coup); } herwig++-2.6.0.orig/Models/RSModel/RSModelFFGRVertex.cc0000644000175000017500000000355211754474773023212 0ustar sylvestresylvestre// -*- C++ -*- // // RSModelFFGRVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the RSModelFFGRVertex class. // #include "RSModelFFGRVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; void RSModelFFGRVertex::persistentOutput(PersistentOStream & os) const { os << ounit(kappa_,InvGeV); } void RSModelFFGRVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(kappa_,InvGeV); } ClassDescription RSModelFFGRVertex::initRSModelFFGRVertex; // Definition of the static class description member. void RSModelFFGRVertex::Init() { static ClassDocumentation documentation ("The RSModelFFGRVertex class is the RSModel calculation" " of the fermion-antifermion-graviton vertex"); } void RSModelFFGRVertex::setCoupling(Energy2,tcPDPtr,tcPDPtr, tcPDPtr) { norm(Complex(kappa_ * UnitRemoval::E)); } RSModelFFGRVertex::RSModelFFGRVertex() : kappa_(ZERO) { orderInGem(1); orderInGs (0); } void RSModelFFGRVertex::doinit() { // PDG codes for the particles // the quarks for (int ix=1;ix<7;++ix) addToList(-ix,ix,39); // the leptons for (int ix=11;ix<17;++ix) addToList(-ix,ix,39); FFTVertex::doinit(); tcHwRSPtr hwRS=dynamic_ptr_cast(generator()->standardModel()); if(!hwRS) throw Exception() << "Must have RSModel in RSModelFFGRVertex::doinit()" << Exception::runerror; kappa_=2./hwRS->lambda_pi(); } herwig++-2.6.0.orig/Models/RSModel/RSModelWWWGRVertex.h0000644000175000017500000001032711754474773023243 0ustar sylvestresylvestre// -*- C++ -*- // // RSModelWWWGRVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_RSModelWWWGRVertex_H #define HERWIG_RSModelWWWGRVertex_H // // This is the declaration of the RSModelWWWGRVertex class. #include "ThePEG/Helicity/Vertex/Tensor/VVVTVertex.h" #include "RSModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * The RSModelWWWGRVertex class is the implementation of the * triple vector graviton couling in the RS model. * It inherits from VVVTVertex and implements the setCoupling member. * * @see VVVTVertex * @see VertexBase */ class RSModelWWWGRVertex: public VVVTVertex { public: /** * Default constructor. */ RSModelWWWGRVertex(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the foruth particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3, tcPDPtr part4); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initRSModelWWWGRVertex; /** * Private and non-existent assignment operator. */ RSModelWWWGRVertex & operator=(const RSModelWWWGRVertex &); private: /** * Storage of the couplings. */ //@{ /** * The graviton coupling. */ InvEnergy kappa_; /** * The last value of the coupling/ */ Complex _couplast; /** * The last value of the scale, \f$q^2\f$. */ Energy2 _q2last; /** * The prefactor for the \f$Z\f$ vertex. */ double _zfact; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of RSModelWWWGRVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of RSModelWWWGRVertex. */ typedef ThePEG::Helicity::VVVTVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::RSModelWWWGRVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwRSModel.so"; } }; /** @endcond */ } #endif /* HERWIG_RSModelWWWGRVertex_H */ herwig++-2.6.0.orig/Models/RSModel/RSModelFFGRVertex.h0000644000175000017500000000752311754474773023056 0ustar sylvestresylvestre// -*- C++ -*- // // RSModelFFGRVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_RSModelFFGRVertex_H #define HERWIG_RSModelFFGRVertex_H // // This is the declaration of the RSModelFFGRVertex class. #include "ThePEG/Helicity/Vertex/Tensor/FFTVertex.h" #include "RSModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the Randell-Sundrum model fermion-antifermion * tensor vertex for helicity amplitude calculations * * @see FFTVertex * @see VertexBase */ class RSModelFFGRVertex: public FFTVertex { public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor. */ RSModelFFGRVertex(); //@} 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initRSModelFFGRVertex; /** * Private and non-existent assignment operator. */ RSModelFFGRVertex & operator=(const RSModelFFGRVertex &); /** * The coupling. */ InvEnergy kappa_; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of RSModelFFGRVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of RSModelFFGRVertex. */ typedef ThePEG::Helicity::FFTVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::RSModelFFGRVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwRSModel.so"; } }; /** @endcond */ } #endif /* HERWIG_RSModelFFGRVertex_H */ herwig++-2.6.0.orig/Models/Transplanckian/0000755000175000017500000000000011756464206021161 5ustar sylvestresylvestreherwig++-2.6.0.orig/Models/Transplanckian/METRP2to2.h0000644000175000017500000001635111754474773022746 0ustar sylvestresylvestre// -*- C++ -*- // // METRP2to2.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2009-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_METRP2to2_H #define HERWIG_METRP2to2_H // // This is the declaration of the METRP2to2 class. // // The implementation of this process is based upon hep-ph/0112161 by G.F. Giudice, R. Rattazzi, J.D. Wells. #include "Herwig++/MatrixElement/HwMEBase.h" #include "ThePEG/Repository/UseRandom.h" #include "Herwig++/Utilities/Interpolator.h" namespace Herwig { using namespace ThePEG; /** * The METRP2to2 class implements the matrix elements for * Transplanckian \f$2\to2\f$ scattering process */ class METRP2to2: public HwMEBase { public: /** * The default constructor. */ METRP2to2(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const { return 0; } /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const { return 0; } /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector colourGeometries(tcDiagPtr diag) const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() 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(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans); /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} 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 Helper functions for me2. */ //@{ /** * The function which calculates b_c according to hep-ph/0112161, eq.(18) */ InvEnergy bccalc(Energy2 s) const; /** * A_ny calculates part of the matrix element squared (divided by 16 * pi^2) according to hep-ph/0112161. eq.(19) */ double A_ny(Energy2 s, Energy2 t) const; /** * fpoint initializes the matrix of pre-calculated points for the functions F_n(y) (hep-ph/0112161, eq.(20) */ double fpoint(double x) const; /** * The asymptotic form of the F_n(y) functions, used for y>20, according to hep-ph/0112161, eq. (25) */ double fnyasympt(double y) const; //@} /** * Setup the interpolator */ void setup_interpolator(); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initMETRP2to2; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ METRP2to2 & operator=(const METRP2to2 &); private: /** * Interpolator */ Interpolator::Ptr _interpol; /** * Maximum number of quark flavours to include */ unsigned int _maxflavour; /** * Number of Extra dimensions (>=2) */ unsigned int _ndim; /** * The Extra-dimensional Planck mass */ Energy _planckmass; /** * Processes to include */ unsigned int _process; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of METRP2to2. */ template <> struct BaseClassTrait { /** Typedef of the first base class of METRP2to2. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the METRP2to2 class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::METRP2to2"; } /** * The name of a file containing the dynamic library where the class * METRP2to2 is implemented. It may also include several, space-separated, * libraries if the class MEQCD2to2Fast depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwTransplanck.so"; } }; /** @endcond */ } #endif /* HERWIG_METRP2to2_H */ herwig++-2.6.0.orig/Models/Transplanckian/Makefile.in0000644000175000017500000005121211756461701023224 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Models/Transplanckian DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwTransplanck_la_LIBADD = am_HwTransplanck_la_OBJECTS = METRP2to2.lo HwTransplanck_la_OBJECTS = $(am_HwTransplanck_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwTransplanck_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwTransplanck_la_LDFLAGS) \ $(LDFLAGS) -o $@ @WANT_TRP_TRUE@am_HwTransplanck_la_rpath = -rpath $(pkglibdir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwTransplanck_la_SOURCES) DIST_SOURCES = $(HwTransplanck_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @WANT_TRP_TRUE@pkglib_LTLIBRARIES = HwTransplanck.la HwTransplanck_la_SOURCES = METRP2to2.cc METRP2to2.h HwTransplanck_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 1:1:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Models/Transplanckian/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Models/Transplanckian/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwTransplanck.la: $(HwTransplanck_la_OBJECTS) $(HwTransplanck_la_DEPENDENCIES) $(EXTRA_HwTransplanck_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwTransplanck_la_LINK) $(am_HwTransplanck_la_rpath) $(HwTransplanck_la_OBJECTS) $(HwTransplanck_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/METRP2to2.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Models/Transplanckian/METRP2to2.cc0000644000175000017500000004007211754474773023101 0ustar sylvestresylvestre// -*- C++ -*- // // METRP2to2.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2009-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the METRP2to2 class. // #include "METRP2to2.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Cuts/Cuts.h" #include "Herwig++/Utilities/Interpolator.h" #include namespace Herwig { // Need to init the interpolator instance here HERWIG_INTERPOLATOR_CLASSDESC(double,double) } using namespace Herwig; METRP2to2::METRP2to2() : _maxflavour(2), _ndim(6), _planckmass(1500.0*GeV), _process(0) { massOption(vector(2,0)); } void METRP2to2::doinit() { HwMEBase::doinit(); setup_interpolator(); } void METRP2to2::rebind(const TranslationMap & trans) { _interpol = trans.translate(_interpol); HwMEBase::rebind(trans); } IVector METRP2to2::getReferences() { IVector ret = HwMEBase::getReferences(); ret.push_back(_interpol); return ret; } void METRP2to2::setup_interpolator() { static const double xmatrix1[103] = {0.0, 0.02, 0.10, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3., 3.2, 3.4, 3.6, 3.8, 4., 4.2, 4.4, 4.6, 4.8, 5.0, 5.2, 5.4, 5.6, 5.8, 6., 6.2, 6.4, 6.6, 6.8, 7., 7.2, 7.4, 7.6, 7.8, 8., 8.2, 8.4, 8.6, 8.8, 9., 9.2, 9.4, 9.6, 9.8, 10., 10.2, 10.4, 10.6, 10.8, 11., 11.2, 11.4, 11.6, 11.8, 12., 12.2, 12.4, 12.6, 12.8, 13., 13.2, 13.4, 13.6, 13.8, 14., 14.2, 14.4, 14.6, 14.8, 15., 15.2, 15.4, 15.6, 15.8, 16., 16.2, 16.4, 16.6, 16.8, 17., 17.2, 17.4, 17.6, 17.8, 18., 18.2, 18.4, 18.6, 18.8, 19., 19.2, 19.4, 19.6, 19.8, 20.0 }; static const double xmatrix2[102] = {0.02, 0.10, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3., 3.2, 3.4, 3.6, 3.8, 4., 4.2, 4.4, 4.6, 4.8, 5., 5.2, 5.4, 5.6, 5.8, 6., 6.2, 6.4, 6.6, 6.8, 7., 7.2, 7.4, 7.6, 7.8, 8., 8.2, 8.4, 8.6, 8.8, 9., 9.2, 9.4, 9.6, 9.8, 10., 10.2, 10.4, 10.6, 10.8, 11., 11.2, 11.4, 11.6, 11.8, 12., 12.2, 12.4, 12.6, 12.8, 13., 13.2, 13.4, 13.6, 13.8, 14., 14.2, 14.4, 14.6, 14.8, 15., 15.2, 15.4, 15.6, 15.8, 16., 16.2, 16.4, 16.6, 16.8, 17., 17.2, 17.4, 17.6, 17.8, 18., 18.2, 18.4, 18.6, 18.8, 19., 19.2, 19.4, 19.6, 19.8, 20.0 }; static const double datamatrix2[102] = {4.32048, 2.74662, 2.090560, 1.457590, 1.113050, 0.885216, 0.720795, 0.597404, 0.501483, 0.425543, 0.364668, 0.315299, 0.274983, 0.241792, 0.214466, 0.191698, 0.172689, 0.156841, 0.143329, 0.131919, 0.122174, 0.113656, 0.106339, 0.099869, 0.094101, 0.089013, 0.084378, 0.080185, 0.076376, 0.072856, 0.069622, 0.066624, 0.063844, 0.061242, 0.058820, 0.056561, 0.054417, 0.052433, 0.05055, 0.048772, 0.047129, 0.045546, 0.044056, 0.042673, 0.041328, 0.040078, 0.038895, 0.037749, 0.036688, 0.035666, 0.034687, 0.033771, 0.032883, 0.032041, 0.031239, 0.030467, 0.029731, 0.029025, 0.028350, 0.027698, 0.027075, 0.026479, 0.025896, 0.025347, 0.024812, 0.024291, 0.023804, 0.023318, 0.022854, 0.022416, 0.021974, 0.021561, 0.021160, 0.020761, 0.020390, 0.020021, 0.019662, 0.019325, 0.01898, 0.018662, 0.018351, 0.018041, 0.017747, 0.017459, 0.017177, 0.016906, 0.016641, 0.016384, 0.016132, 0.015889, 0.015651, 0.015418, 0.015196, 0.014973, 0.014759, 0.014553, 0.014345, 0.014149, 0.013956, 0.013762, 0.013582, 0.013399}; static const double datamatrix3[103] = {1.33947, 1.32238, 1.25505, 1.17491, 1.02696, 0.89463, 0.77688, 0.67270, 0.58105, 0.50095, 0.43143, 0.37156, 0.32046, 0.27726, 0.24113, 0.21126, 0.18684, 0.16707, 0.15118, 0.13843, 0.12815, 0.11974, 0.11271, 0.10670, 0.10141, 0.09663, 0.09224, 0.08814, 0.08427, 0.08061, 0.07715, 0.07387, 0.07077, 0.06785, 0.06511, 0.06254, 0.06014, 0.05790, 0.05582, 0.05388, 0.05207, 0.05038, 0.04879, 0.04731, 0.04591, 0.04459, 0.04334, 0.04216, 0.04103, 0.03996, 0.03894, 0.03796, 0.03702, 0.03612, 0.03526, 0.03443, 0.03363, 0.03287, 0.03214, 0.03143, 0.03075, 0.03010, 0.02947, 0.02887, 0.02829, 0.02773, 0.02719, 0.02666, 0.02616, 0.02567, 0.0250, 0.02475, 0.02431, 0.02388, 0.02347, 0.02306, 0.02267, 0.02230, 0.02193, 0.02157, 0.02123, 0.02089, 0.02056, 0.02025, 0.01994, 0.01964, 0.01934, 0.01906, 0.018, 0.01851, 0.01825, 0.01799, 0.01774, 0.01750, 0.01726, 0.01703, 0.01680, 0.01658, 0.01637, 0.01616, 0.01595, 0.01575, 0.01555}; static const double datamatrix4[103] = {0.88623, 0.885845, 0.879328, 0.86361, 0.81617, 0.75594, 0.68928, 0.62036, 0.55206, 0.48641, 0.42484, 0.36832, 0.31749, 0.27273, 0.23419, 0.20185, 0.17547, 0.15464, 0.13871, 0.12685, 0.11813, 0.11162, 0.10654, 0.10229, 0.09844, 0.09475, 0.09107, 0.08738, 0.08368, 0.08000, 0.07641, 0.07295, 0.06967, 0.06660, 0.06377, 0.06118, 0.05883, 0.05670, 0.05476, 0.05300, 0.05138, 0.04989, 0.04849, 0.04716, 0.04590, 0.04469, 0.04353, 0.04240, 0.04131, 0.04026, 0.03924, 0.03826, 0.037, 0.03642, 0.03556, 0.03473, 0.03394, 0.03319, 0.03247, 0.03178, 0.03112, 0.03049, 0.02988, 0.02930, 0.02873, 0.02819, 0.02767, 0.02716, 0.02667, 0.02619, 0.02573, 0.02529, 0.02486, 0.02444, 0.02403, 0.02364, 0.02326, 0.02289, 0.02253, 0.02218, 0.02184, 0.02152, 0.02120, 0.02089, 0.02058, 0.02029, 0.02000, 0.01972, 0.01944, 0.01918, 0.01892, 0.01866, 0.01841, 0.01816, 0.01792, 0.01769, 0.01746, 0.01724, 0.01702, 0.01681, 0.01660, 0.01639, 0.01619 }; static const double datamatrix5[103] = {0.744596, 0.744489, 0.742327, 0.73584, 0.71183, 0.67590, 0.63118, 0.58053, 0.52645, 0.47109, 0.41628, 0.36351, 0.31401, 0.26878, 0.22857, 0.19396, 0.16533, 0.14280, 0.12611, 0.11459, 0.10713, 0.10244, 0.09934, 0.09690, 0.09453, 0.09189, 0.08887, 0.08548, 0.08180, 0.07796, 0.07410, 0.07035, 0.06681, 0.06358, 0.06068, 0.05815, 0.05595, 0.05405, 0.05240, 0.05094, 0.04962, 0.04838, 0.04720, 0.04604, 0.04489, 0.04375, 0.04262, 0.04150, 0.04040, 0.03934, 0.03831, 0.03733, 0.03639, 0.03551, 0.03469, 0.03391, 0.03317, 0.03247, 0.03181, 0.03118, 0.03057, 0.02998, 0.02941, 0.02886, 0.02832, 0.02779, 0.02728, 0.02678, 0.02630, 0.02583, 0.02538, 0.02494, 0.02452, 0.02412, 0.02373, 0.02335, 0.02299, 0.02264, 0.02230, 0.02197, 0.02165, 0.02134, 0.02104, 0.02074, 0.02045, 0.02016, 0.01989, 0.01961, 0.01935, 0.01909, 0.01883, 0.01858, 0.01834, 0.01810, 0.01787, 0.01764, 0.01742, 0.01721, 0.01699, 0.01679, 0.01659, 0.01639, 0.01620}; static const double datamatrix6[103] = {0.67759, 0.677074, 0.675686, 0.67139, 0.65466, 0.62818, 0.59351, 0.55242, 0.50671, 0.45815, 0.40837, 0.35888, 0.31104, 0.26603, 0.22490, 0.18855, 0.15777, 0.13319, 0.11510, 0.10322, 0.09650, 0.09333, 0.09206, 0.09137, 0.09045, 0.08888, 0.08652, 0.08343, 0.07977, 0.07574, 0.07157, 0.06747, 0.06364, 0.06020, 0.05725, 0.05479, 0.05281, 0.05121, 0.04991, 0.04880, 0.04779, 0.04680, 0.04580, 0.04475, 0.04364, 0.04249, 0.04130, 0.04012, 0.03895, 0.03783, 0.03677, 0.03579, 0.03488, 0.03405, 0.03330, 0.03261, 0.03197, 0.03137, 0.03080, 0.03025, 0.02970, 0.02917, 0.02863, 0.02811, 0.02758, 0.02707, 0.02657, 0.02608, 0.02560, 0.02515, 0.02471, 0.02430, 0.02390, 0.02351, 0.02314, 0.02279, 0.02244, 0.02211, 0.02178, 0.02146, 0.02115, 0.02084, 0.02054, 0.02025, 0.01996, 0.01968, 0.01941, 0.01915, 0.01890, 0.01865, 0.01841, 0.01818, 0.01795, 0.01773, 0.01751, 0.01730, 0.01710, 0.01690, 0.01670, 0.01650, 0.01631, 0.01612, 0.01593 }; const double * datamatrix = 0; const double * xmatrix = 0; int xsize = 0; //assign the appropriate tabulated points for the number of extra dimensions switch ( _ndim ) { case 2 : datamatrix = datamatrix2; xmatrix = xmatrix2; xsize = 102; break; case 3 : datamatrix = datamatrix3; xmatrix = xmatrix1; xsize = 103; break; case 4 : datamatrix = datamatrix4; xmatrix = xmatrix1; xsize = 103; break; case 5 : datamatrix = datamatrix5; xmatrix = xmatrix1; xsize = 103; break; case 6 : datamatrix = datamatrix6; xmatrix = xmatrix1; xsize = 103; break; default : assert(false); } _interpol = make_InterpolatorPtr(xsize, datamatrix, 1.0, xmatrix, 1.0, 1); } IBPtr METRP2to2::clone() const { return new_ptr(*this); } IBPtr METRP2to2::fullclone() const { return new_ptr(*this); } void METRP2to2::persistentOutput(PersistentOStream & os) const { os << _interpol << _maxflavour << _process << _ndim << ounit(_planckmass,GeV); } void METRP2to2::persistentInput(PersistentIStream & is, int) { is >> _interpol >> _maxflavour >> _process >> _ndim >> iunit(_planckmass,GeV); } Energy2 METRP2to2::scale() const { Energy2 invbcsq = 1 / sqr(bccalc(sHat())); return ( -tHat() > invbcsq ) ? invbcsq : -tHat(); } // Definition of the static class description member. ClassDescription METRP2to2::initMETRP2to2; void METRP2to2::Init() { static ClassDocumentation documentation ("The METRP2to2 class implements the transplanckian 2->2 processes in hadron-hadron" " collisions"); static Parameter interfaceMaximumFlavour ("MaximumFlavour", "The maximum flavour of the quarks in the process", &METRP2to2::_maxflavour, 2, 1, 5, false, false, Interface::limited); static Parameter interfacePlanckMass ("PlanckMass", "The Planck Mass", &METRP2to2::_planckmass, GeV, 2000.0*GeV, 200.0*GeV, 200000.0*GeV, false, false, Interface::limited); static Parameter interfaceNumberExtraDimensions ("NumberExtraDimensions", "The number of extra dimensions to consider", &METRP2to2::_ndim, 6, 2, 6, false, false, Interface::limited); static Switch interfaceProcess ("Process", "Which subprocesses to include", &METRP2to2::_process, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all subprocesses", 0); static SwitchOption interfaceProcess1 (interfaceProcess, "gg2gg", "Include only gg->gg subprocesses", 1); static SwitchOption interfaceProcessqgqg (interfaceProcess, "qg2qg", "Include only q g -> q g processes", 4); static SwitchOption interfaceProcessqbargqbarg (interfaceProcess, "qbarg2qbarg", "Include only qbar g -> qbar g processes", 5); static SwitchOption interfaceProcessqqqq (interfaceProcess, "qq2qq", "Include only q q -> q q processes", 6); static SwitchOption interfaceProcessqbarqbarqbarqbar (interfaceProcess, "qbarqbar2qbarqbar", "Include only qbar qbar -> qbar qbar processes", 7); static SwitchOption interfaceProcessqqbarqqbar (interfaceProcess, "qqbar2qqbar", "Include only q qbar -> q qbar processes", 8); } Selector METRP2to2::diagrams(const DiagramVector & diags) const { // select the diagram, this is easy for us as we have already done it Selector sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { sel.insert(1.0, i); } return sel; } void METRP2to2::getDiagrams() const { // get the particle data objects PDPtr gluon = getParticleData(ParticleID::g); PDPtr trpon = getParticleData(39); vector quark,antiquark; for(int ix=1;ix<=int(_maxflavour);++ix) { quark.push_back( getParticleData( ix)); antiquark.push_back(getParticleData(-ix)); } // gg-> gg subprocess if(_process==0||_process==1) { add(new_ptr((Tree2toNDiagram(3),gluon,trpon,gluon, 1,gluon, 2,gluon,-2))); } // processes involving one quark line for(unsigned int ix=0;ix<_maxflavour;++ix) { // q g -> q g subprocesses if(_process==0||_process==4) { add(new_ptr((Tree2toNDiagram(3),quark[ix],trpon,gluon, 1,quark[ix],2,gluon,-12))); } // qbar g -> qbar g subprocesses if(_process==0||_process==5) { add(new_ptr((Tree2toNDiagram(3),antiquark[ix],trpon,gluon, 1,antiquark[ix],2,gluon,-15))); } // processes involving two quark lines for(unsigned int iy=0;iy<_maxflavour;++iy) { // q q -> q q subprocesses if(_process==0||_process==6) { // t-channel add(new_ptr((Tree2toNDiagram(3),quark[ix],trpon,quark[iy], 1,quark[ix],2,quark[iy],-16))); //exchange for identical quarks if(ix==iy) add(new_ptr((Tree2toNDiagram(3),quark[ix],trpon,quark[iy], 2,quark[ix],1,quark[iy],-17))); } // qbar qbar -> qbar qbar subprocesses if(_process==0||_process==7) { // t-channel add(new_ptr((Tree2toNDiagram(3),antiquark[ix],trpon,antiquark[iy], 1,antiquark[ix],2,antiquark[iy],-18))); //exchange for identical quarks if(ix==iy) add(new_ptr((Tree2toNDiagram(3),antiquark[ix],trpon,antiquark[iy], 2,antiquark[ix],1,antiquark[iy],-19))); } // q qbar -> q qbar if(_process==0||_process==8) { add(new_ptr((Tree2toNDiagram(3),quark[ix],trpon,antiquark[iy], 1,quark[ix],2,antiquark[iy],-21))); } } } } Selector METRP2to2::colourGeometries(tcDiagPtr diag) const { // colour lines for gg to gg static const ColourLines cgggg("1 4, -1 -4, 3 5, -3 -5"); // colour lines for q g to q g static const ColourLines cqgqg("1 4, 3 5, -3 -5"); // colour lines for qbar g -> qbar g static const ColourLines cqbgqbg("-1 -4, -3 -5, 3 5"); // colour lines for q q -> q q static const ColourLines cqqqq("1 4,3 5"); // colour lines for qbar qbar -> qbar qbar static const ColourLines cqbqbqbqb("-1 -4,-3 -5"); // colour lines for q qbar -> q qbar static const ColourLines cqqbqqb("1 4,-3 -5"); // select the colour flow (as already picked just insert answer) Selector sel; switch(abs(diag->id())) { //gg -> gg case 2: sel.insert(1.0, &cgggg); break; // q g -> q g subprocess case 12: sel.insert(1.0, &cqgqg); break; // qbar g -> qbar g subprocess case 15: sel.insert(1.0, &cqbgqbg); break; // q q -> q q subprocess case 16: case 17: sel.insert(1.0, &cqqqq); break; // qbar qbar -> qbar qbar subprocess case 18: case 19: sel.insert(1.0, &cqbqbqbqb); break; // q qbar -> q qbar subprocess case 21: sel.insert(1.0, &cqqbqqb); break; } return sel; } double METRP2to2::me2() const { double me(0.), me_exch(0.); double fac1(1.), fac2(0.); if ( mePartonData()[0]->id() == mePartonData()[1]->id() ) { if ( mePartonData()[0]->id()>0 ) { me_exch = - A_ny(sHat(),uHat()); fac1 = 2./3.; fac2 = 1./6.; } else if ( mePartonData()[0]->id() == ParticleID::g ) { me_exch = A_ny(sHat(),uHat()); fac1 = 7./8.; fac2 = 1./16.; } } me = A_ny(sHat(),tHat()); return fac1 * sqr(me) + fac2 * sqr(me+me_exch); } // Calculate the constant b_c which depends on s_hat and the number of // extra dimensions InvEnergy METRP2to2::bccalc(Energy2 s) const { static const double fourpi = 4.0*Constants::pi; return 1/_planckmass * sqrt(fourpi) * pow( (0.5 * s / (sqr(_planckmass) * fourpi)) * Math::gamma(_ndim/2.0), 1.0/_ndim); } //Calculation of the matrix element squared using the function F_n(y) double METRP2to2::A_ny(Energy2 s, Energy2 t) const { InvEnergy bc = bccalc(s); double fny = 0; double y = bc * sqrt(-t); if ( y >= 20.0 ) fny = fnyasympt(y); else fny = fpoint(y); return 4. * Constants::pi * fny * s * sqr(bc); } //The asymptotic form of the F_n functions; used for x > 20 double METRP2to2::fnyasympt(double y) const { return pow( _ndim, 1.0/(_ndim+1.0) ) * pow( y, -(_ndim+2.0)/(_ndim+1.0) ) / sqrt(_ndim+1.0); } //fpoint uses the interpolator to calculate the value of F_n for intermediate values of the argument double METRP2to2::fpoint(double x) const { assert( x < 20.0 ); if ( _ndim == 2 && x < 0.02 ) { return sqrt( sqr(-log(x/1.4)) + sqr(Constants::pi)/16 ); } else { return (*_interpol)(x); } } herwig++-2.6.0.orig/Models/Transplanckian/Makefile.am0000644000175000017500000000026111754474773023224 0ustar sylvestresylvestreif WANT_TRP pkglib_LTLIBRARIES = HwTransplanck.la endif HwTransplanck_la_SOURCES = METRP2to2.cc METRP2to2.h HwTransplanck_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 1:1:0 herwig++-2.6.0.orig/Models/UED/0000755000175000017500000000000011756464206016626 5ustar sylvestresylvestreherwig++-2.6.0.orig/Models/UED/UEDBase.cc0000644000175000017500000003540011754474773020357 0ustar sylvestresylvestre// -*- C++ -*- // // UEDBase.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDBase class. // #include "UEDBase.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Repository/Repository.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; UEDBase::UEDBase() : theRadCorr(true), theInvRadius(500.*GeV), theLambdaR(20.), theMbarH(), theSinThetaOne(0.), theVeV(246.*GeV) {} void UEDBase::doinit() { readDecays(false); BSMModel::doinit(); //level-1 masses and mixing angle calculateKKMasses(1); writeSpectrum(); //add the level-1 vertices. addVertex(theF1F1Z0Vertex); addVertex(theF1F1G0Vertex); addVertex(theF1F0G1Vertex); addVertex(theG1G1G0Vertex); addVertex(theG0G0G1G1Vertex); addVertex(theF1F1P0Vertex); addVertex(theF1F1W0Vertex); addVertex(theF1F0W1Vertex); addVertex(theF1F0H1Vertex); addVertex(theP0H1H1Vertex); addVertex(theZ0H1H1Vertex); addVertex(theW0A1H1Vertex); addVertex(theZ0A1h1Vertex); addVertex(theW0W1W1Vertex); readDecays(true); if(decayFile()=="") return; decayRead(); } void UEDBase::persistentOutput(PersistentOStream & os) const { os << theRadCorr << ounit(theInvRadius, GeV) << theLambdaR << theF1F1Z0Vertex << theF1F1G0Vertex << theF1F0G1Vertex << theG1G1G0Vertex << theG0G0G1G1Vertex << theF1F1P0Vertex << theF1F1W0Vertex << theF1F0W1Vertex << theF1F0H1Vertex << theP0H1H1Vertex << theZ0H1H1Vertex << theW0A1H1Vertex << theZ0A1h1Vertex << theW0W1W1Vertex << ounit(theVeV,GeV) << ounit(theMbarH, GeV) << theSinThetaOne; } void UEDBase::persistentInput(PersistentIStream & is, int) { is >> theRadCorr >> iunit(theInvRadius, GeV) >> theLambdaR >> theF1F1Z0Vertex >> theF1F1G0Vertex >> theF1F0G1Vertex >> theG1G1G0Vertex >> theG0G0G1G1Vertex >> theF1F1P0Vertex >> theF1F1W0Vertex >> theF1F0W1Vertex >> theF1F0H1Vertex >> theP0H1H1Vertex >> theZ0H1H1Vertex >> theW0A1H1Vertex >> theZ0A1h1Vertex >> theW0W1W1Vertex >> iunit(theVeV,GeV) >> iunit(theMbarH, GeV) >> theSinThetaOne; } ClassDescription UEDBase::initUEDBase; // Definition of the static class description member. void UEDBase::Init() { static ClassDocumentation documentation ("This class implements/stores the necessary information for the simulation" " of a Universal Extra Dimensions model.", "Universal extra dimensions model based on \\cite{Cheng:2002iz,Appelquist:2000nn}.", "%\\cite{Cheng:2002iz}\n" "\\bibitem{Cheng:2002iz}\n" " H.~C.~Cheng, K.~T.~Matchev and M.~Schmaltz,\n" " ``Radiative corrections to Kaluza-Klein masses,''\n" " Phys.\\ Rev.\\ D {\\bf 66}, 036005 (2002)\n" " [arXiv:hep-ph/0204342].\n" " %%CITATION = PHRVA,D66,036005;%%\n" "%\\cite{Appelquist:2000nn}\n" "\\bibitem{Appelquist:2000nn}\n" " T.~Appelquist, H.~C.~Cheng and B.~A.~Dobrescu,\n" " ``Bounds on universal extra dimensions,''\n" " Phys.\\ Rev.\\ D {\\bf 64}, 035002 (2001)\n" " [arXiv:hep-ph/0012100].\n" " %%CITATION = PHRVA,D64,035002;%%\n" ); static Switch interfaceRadiativeCorrections ("RadiativeCorrections", "Calculate the radiative corrections to the masses", &UEDBase::theRadCorr, true, false, false); static SwitchOption interfaceRadiativeCorrectionsYes (interfaceRadiativeCorrections, "Yes", "Calculate the radiative corrections to the masses", true); static SwitchOption interfaceRadiativeCorrectionsNo (interfaceRadiativeCorrections, "No", "Leave the masses of the KK particles as n/R", false); static Parameter interfaceInverseRadius ("InverseRadius", "The inverse radius of the compactified dimension ", &UEDBase::theInvRadius, GeV, 500.*GeV, ZERO, ZERO, true, false, Interface::nolimits); static Parameter interfaceLambdaR ("LambdaR", "The product of the cut-off scale and the radius of compactification", &UEDBase::theLambdaR, 20.0, 0.0, 0, false, false, Interface::lowerlim); static Parameter interfaceBoundaryMass ("HiggsBoundaryMass", "The boundary mass for the Higgs", &UEDBase::theMbarH, GeV, ZERO, ZERO, ZERO, false, false, Interface::lowerlim); static Parameter interfaceVeV ("HiggsVEV", "The vacuum expectation value of the Higgs field", &UEDBase::theVeV, GeV, 246.*GeV, ZERO, ZERO, true, false, Interface::nolimits); static Reference interfaceF1F1Z ("Vertex/F1F1Z", "The F1F1Z UED Vertex", &UEDBase::theF1F1Z0Vertex, false, false, true, false, false); static Reference interfaceF1F1G0 ("Vertex/F1F1G0", "The F1F1G UED Vertex", &UEDBase::theF1F1G0Vertex, false, false, true, false, false); static Reference interfaceF1F0G1 ("Vertex/F1F0G1", "The F1F0G0 UED Vertex", &UEDBase::theF1F0G1Vertex, false, false, true, false, false); static Reference interfaceG1G1G0 ("Vertex/G1G1G0", "The G1G1G0 UED Vertex", &UEDBase::theG1G1G0Vertex, false, false, true, false, false); static Reference interfaceG0G0G1G1 ("Vertex/G0G0G1G1", "The G0G0G1G1 UED Vertex", &UEDBase::theG0G0G1G1Vertex, false, false, true, false, false); static Reference interfaceF1F1P ("Vertex/F1F1P", "The F1F1P UED Vertex", &UEDBase::theF1F1P0Vertex, false, false, true, false, false); static Reference interfaceF1F1W ("Vertex/F1F1W", "The F1F1W UED Vertex", &UEDBase::theF1F1W0Vertex, false, false, true, false, false); static Reference interfaceF1F0W1 ("Vertex/F1F0W1", "The F1F0W1 UED Vertex", &UEDBase::theF1F0W1Vertex, false, false, true, false, false); static Reference interfaceF1F0H1 ("Vertex/F1F0H1", "The F1F0H1 UED Vertex", &UEDBase::theF1F0H1Vertex, false, false, true, false, false); static Reference interfaceP0H1H1 ("Vertex/P0H1H1", "The P0H1H1 UED Vertex", &UEDBase::theP0H1H1Vertex, false, false, true, false, false); static Reference interfaceZ0H1H1 ("Vertex/Z0H1H1", "The Z0H1H1 UED Vertex", &UEDBase::theZ0H1H1Vertex, false, false, true, false, false); static Reference interfaceW0A1H1 ("Vertex/W0A1H1", "The W0A1H1 UED Vertex", &UEDBase::theW0A1H1Vertex, false, false, true, false, false); static Reference interfaceZ0A1h1 ("Vertex/Z0A1h1", "The W0A1H1 UED Vertex", &UEDBase::theZ0A1h1Vertex, false, false, true, false, false); static Reference interfaceW0W1W1 ("Vertex/W0W1W1", "The W0W1W1 UED Vertex", &UEDBase::theW0W1W1Vertex, false, false, true, false, false); } void UEDBase::calculateKKMasses(const unsigned int n) { useMe(); if(n == 0) throw InitException() << "UEDBase::resetKKMasses - " << "Trying to reset masses with KK number == 0!" << Exception::warning; if(theRadCorr) { fermionMasses(n); bosonMasses(n); } else { cerr << "Warning: Radiative corrections to particle masses have been " "turned off.\n The masses will be set to (n/R + m_sm)^1/2 and " "the spectrum will be\n highly degenerate so that no decays " "will occur.\n This is only meant to be used for debugging " "purposes.\n"; //set masses to tree level for each kk mode long level1 = 5000000 + n*100000; long level2 = 6000000 + n*100000; Energy2 ndmass2 = sqr(n*theInvRadius); for ( int i = 1; i < 38; ++i ) { if(i == 7 || i == 17) i += 4; if(i == 26) i += 10; Energy kkmass = sqrt( ndmass2 + sqr(getParticleData(i)->mass()) ); resetMass(level1 + i, kkmass); if( i < 7 || i == 11 || i == 13 || i == 15 ) resetMass(level2 + i, kkmass); } } } void UEDBase::bosonMasses(const unsigned int n) { // Common constants const Energy2 invRad2 = theInvRadius*theInvRadius; const double g_em2 = 4.*Constants::pi*alphaEM(invRad2); const double g_s2 = 4.*Constants::pi*alphaS(invRad2); const double g_W2 = g_em2/sin2ThetaW(); //Should probably use a function to calculate zeta. const double zeta3 = 1.20206; const Energy2 nmass2 = sqr(n*theInvRadius); const double pi2 = sqr(Constants::pi); const double norm = 1./16./pi2; const double nnlogLR = n*n*log(theLambdaR); long level = 5000000 + n*100000; //gluon Energy2 deltaGB = g_s2*invRad2*norm*(23.*nnlogLR - 3.*zeta3/2./pi2 ); resetMass(level + 21, sqrt(nmass2 + deltaGB)); //W+/- Energy2 deltaGW = g_W2*invRad2*norm*( 15.*nnlogLR - 5.*zeta3/2./pi2 ); Energy2 mw2 = sqr(getParticleData(24)->mass()); resetMass(level + 24, sqrt(mw2 + nmass2 + deltaGW)); //Z and gamma are a mixture of Bn and W3n deltaGB = -g_em2*invRad2*norm*( 39.*zeta3/2./pi2 + nnlogLR/3. ); Energy2 mz2 = sqr(getParticleData(23)->mass()); Energy2 fp = 0.5*(mz2 + deltaGB + deltaGW + 2.*nmass2); Energy2 sp = 0.5*sqrt( sqr(deltaGB - deltaGW - 2.*mw2 + mz2) - 4.*mw2*(mw2 - mz2) ); resetMass(level + 22, sqrt(fp - sp)); resetMass(level + 23, sqrt(fp + sp)); //mixing angle will now depend on both Z* and gamma* mass //Derived expression: // // cos^2_theta_N = ( (n/R)^2 + delta_GW + mw^2 - m_gam*^2)/(m_z*^2 - m_gam*^2) // double cn2 = (nmass2 + deltaGW + mw2 - fp + sp)/2./sp; double sn = sqrt(1. - cn2); theMixingAngles.insert(make_pair(n, sn)); if( n == 1 ) theSinThetaOne = sn; //scalars Energy2 mh2 = sqr(getParticleData(25)->mass()); double lambda_H = mh2/theVeV/theVeV; deltaGB = nnlogLR*norm*invRad2*(3.*g_W2 + (3.*g_em2/2.) - 2.*lambda_H) + sqr(theMbarH); //H0 Energy2 new_m2 = nmass2 + deltaGB; resetMass(level + 25, sqrt( mh2 + new_m2 )); //A0 resetMass(level + 36, sqrt( mz2 + new_m2 )); //H+ resetMass(level + 37, sqrt( mw2 + new_m2 )); } void UEDBase::fermionMasses(const unsigned int n) { const Energy2 invRad2 = theInvRadius*theInvRadius; const double g_em2 = 4.*Constants::pi*alphaEM(invRad2); const double g_s2 = 4.*Constants::pi*alphaS(invRad2); const double g_W2 = g_em2/sin2ThetaW(); const Energy nmass = n*theInvRadius; const Energy norm = nmass*log(theLambdaR)/16./Constants::pi/Constants::pi; const Energy topMass = getParticleData(6)->mass(); const double ht = sqrt(2)*topMass/theVeV; //doublets Energy deltaL = norm*(6.*g_s2 + (27.*g_W2/8.) + (g_em2/8.)); Energy deltaQ = deltaL; Energy2 shift = sqr(nmass + deltaL); long level = 5000000 + n*100000; for(long i = 1; i < 17; ++i) { if(i == 6) { i += 5; deltaL = norm*( (27.*g_W2/8.) + (9.*g_em2/8.) ); shift = sqr(nmass + deltaL); } Energy2 new_m2 = sqr(getParticleData(i)->mass()) + shift; resetMass(level + i, sqrt(new_m2)); } //singlet shifts const Energy deltaU = norm*(6.*g_s2 + 2.*g_em2); const Energy deltaD = norm*(6.*g_s2 + 0.5*g_em2); const Energy2 shiftU = sqr(nmass + deltaU); const Energy2 shiftD = sqr(nmass + deltaD); //Top quarks seperately as they have different corrections const Energy2 mt2 = sqr(topMass); const Energy delta_Q3 = -3.*ht*ht*norm/2.; const Energy deltaTD = deltaQ + delta_Q3; const Energy deltaTS = deltaU + 2.*delta_Q3; Energy second_term = 0.5*sqrt( sqr(2.*nmass + deltaTS + deltaTD) + 4.*mt2 ); //doublet resetMass(level + 6, abs(0.5*(deltaTD - deltaTS) - second_term) ); //singlet level += 1000000; resetMass(level + 6, 0.5*(deltaTD - deltaTS) + second_term); // others //lepton Energy delta = 9.*norm*g_em2/2.; shift = sqr(nmass + delta); for(long i = 1; i < 17; ) { if(i == 6) i += 5; Energy2 smMass2(sqr(getParticleData(i)->mass())); if(i < 6) { Energy2 new_m2; if( i % 2 == 0) new_m2 = smMass2 + shiftU; else new_m2 = smMass2 + shiftD; resetMass(level + i, sqrt(new_m2)); ++i; } else { resetMass(level + i, sqrt(smMass2 + shift)); i += 2; } } } void UEDBase::resetMass(long id, Energy mass) { theMasses.push_back(make_pair(id, mass)); tPDPtr particle = getParticleData(id); if(!particle) { throw InitException() << "UEDBase::resetMass - Trying to reset a mass for " << "a ParticleData object that does not exist. ID: " << id << Exception::warning; return; } //find the correct interface const InterfaceBase * ifc = Repository::FindInterface(particle, "NominalMass"); if(!ifc) throw InitException() << "UEDBase::resetMass - There was an error while " << "retrieving the NominalMass interface for " << particle->fullName() << Exception::abortnow; //put value into a stream ostringstream oss; oss << ounit(mass, GeV); if(!oss) throw InitException() << "UEDBase::resetMass - There was an error while " << "reading the new mass into a stream for " << particle->fullName() << Exception::abortnow; ifc->exec(*particle, "set", oss.str()); } void UEDBase::writeSpectrum() { sort(theMasses.begin(), theMasses.end(), lowerMass); ostream & ofs = CurrentGenerator::current().misc(); ofs << "# MUED Model Particle Spectrum\n" << "# R^-1: " << theInvRadius/GeV << " GeV\n" << "# Lambda * R: " << theLambdaR << "\n" << "# Higgs Mass: " << getParticleData(25)->mass()/GeV << " GeV\n"; ofs << "#\n# ID\t\t\tMass(GeV)\n"; while (!theMasses.empty()) { IDMassPair tmp = theMasses.back(); tcPDPtr data = getParticleData(tmp.first); ofs << tmp.first << "\t\t\t" << tmp.second/GeV << "\t\t" << (data? data->PDGName() : "") << endl; theMasses.pop_back(); } ofs << "#\n"; } double UEDBase::sinThetaN(const unsigned int n) const { WAMap::const_iterator pos = theMixingAngles.find(n); if(pos != theMixingAngles.end()) return pos->second; else { throw Exception() << "UEDBase::sinThetaN() - A mixing angle has " << "been requested for a level that does not " << "exist. Check that the radiative corrections " << "for the " << n << "th level have been " << "calculated." << Exception::warning; return 0.0; } } herwig++-2.6.0.orig/Models/UED/UEDF1F1P0Vertex.h0000644000175000017500000001027011754474773021400 0ustar sylvestresylvestre// -*- C++ -*- // // UEDF1F1P0Vertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDF1F1P0Vertex_H #define HERWIG_UEDF1F1P0Vertex_H // // This is the declaration of the UEDF1F1P0Vertex class. // #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "UEDBase.h" namespace Herwig { using namespace ThePEG; /** * This class implements the coupling of a pair of level-1 KK * fermions to a standard Model photon. * * @see \ref UEDF1F1P0VertexInterfaces "The interfaces" * defined for UEDF1F1P0Vertex. */ class UEDF1F1P0Vertex: public FFVVertex { public: /** * The default constructor. */ UEDF1F1P0Vertex(); /** * 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(); /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initUEDF1F1P0Vertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDF1F1P0Vertex & operator=(const UEDF1F1P0Vertex &); private: /** * The value of the coupling when it was last evaluated . */ Complex theCoupLast; /** * The scale at which the coupling was last evaluated. */ Energy2 theq2Last; /** * The id of the last fermion that the vertex was evaluated for */ long thefermLast; /** * The value of the left/right coupling when it was last evaluated. */ Complex theLRLast; /** * The charges of the fermions */ vector theCharges; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UEDF1F1P0Vertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of UEDF1F1P0Vertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the UEDF1F1P0Vertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::UEDF1F1P0Vertex"; } /** * The name of a file containing the dynamic library where the class * UEDF1F1P0Vertex is implemented. It may also include several, space-separated, * libraries if the class UEDF1F1P0Vertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwUED.so"; } }; /** @endcond */ } #endif /* HERWIG_UEDF1F1P0Vertex_H */ herwig++-2.6.0.orig/Models/UED/UEDF1F1Z0Vertex.h0000644000175000017500000001206211754474773021413 0ustar sylvestresylvestre// -*- C++ -*- // // UEDF1F1Z0Vertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDF1F1Z0Vertex_H #define HERWIG_UEDF1F1Z0Vertex_H // // This is the declaration of the UEDF1F1Z0Vertex class. // #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "UEDBase.h" namespace Herwig { using namespace ThePEG; /** * This is the implementation of the level-1 fermion-fermion Z-boson. * It inherits from FFVVertex and implements the setCoupling member. * * @see \ref UEDF1F1Z0VertexInterfaces "The interfaces" * defined for UEDF1F1Z0Vertex. */ class UEDF1F1Z0Vertex: public FFVVertex { public: /** * The default constructor. */ UEDF1F1Z0Vertex(); 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: /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initUEDF1F1Z0Vertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDF1F1Z0Vertex & operator=(const UEDF1F1Z0Vertex &); private: /** * The value if \f$\sin^2\theta_W\f$ */ double theSin2ThW; /** * The value if \f$\cos\theta_W\f$ */ double theCosThW; /** * The value of the inverse radius */ InvEnergy theRadius; /** * The PDG code of the 1st fermion when the vertex was last evaluated */ long theID1Last; /** * The PDG code of the 2nd fermion when the vertex was last evaluated */ long theID2Last; /** * The energy where the coupling was last evaluated */ Energy2 theq2Last; /** * * The value of the coupling when it was last evaluated */ Complex theCoupLast; /** * * The value of the coupling when it was last evaluated */ Complex theLeftLast; /** * * The value of the coupling when it was last evaluated */ Complex theRightLast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UEDF1F1Z0Vertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of UEDF1F1Z0Vertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the UEDF1F1Z0Vertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::UEDF1F1Z0Vertex"; } /** * The name of a file containing the dynamic library where the class * UEDF1F1Z0Vertex is implemented. It may also include several, space-separated, * libraries if the class UEDF1F1Z0Vertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwUED.so"; } }; /** @endcond */ } #endif /* HERWIG_UEDF1F1Z0Vertex_H */ herwig++-2.6.0.orig/Models/UED/UEDW0A1H1Vertex.cc0000644000175000017500000000613611754474773021550 0ustar sylvestresylvestre// -*- C++ -*- // // UEDW0A1H1Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDW0A1H1Vertex class. // #include "UEDW0A1H1Vertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace ThePEG::Helicity; using namespace Herwig; void UEDW0A1H1Vertex::doinit() { addToList( 24, 5100036, -5100037); addToList(-24, 5100036, 5100037); VSSVertex::doinit(); tUEDBasePtr UEDBase = dynamic_ptr_cast(generator()->standardModel()); if(!UEDBase) throw InitException() << "UEDW0A1H1Vertex::doinit() - The pointer to " << "the UEDBase object is null!" << Exception::runerror; theMw2 = sqr(getParticleData(24)->mass()); theMz2 = sqr(getParticleData(23)->mass()); theR2 = sqr(UEDBase->compactRadius()); } UEDW0A1H1Vertex::UEDW0A1H1Vertex() : theMw2(), theMz2(), theR2(), theq2Last(), theCoupLast(0.) { orderInGs(0); orderInGem(1); } void UEDW0A1H1Vertex::persistentOutput(PersistentOStream & os) const { os << ounit(theMw2,GeV2) << ounit(theMz2,GeV2) << ounit(theR2,1/GeV2); } void UEDW0A1H1Vertex::persistentInput(PersistentIStream & is, int) { is >> iunit(theMw2,GeV2) >> iunit(theMz2,GeV2) >> iunit(theR2,1/GeV2); } ClassDescription UEDW0A1H1Vertex::initUEDW0A1H1Vertex; // Definition of the static class description member. void UEDW0A1H1Vertex::Init() { static ClassDocumentation documentation ("The coupling of a SM W boson to a level-1 charged higgs and the " "level-1 heavy neutral higgs"); } void UEDW0A1H1Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { long chiggs(0); if(abs(part1->id()) == ParticleID::Wplus) chiggs = (abs(part2->id()) == 5100037) ? part2->id() : part3->id(); else if(abs(part2->id()) == ParticleID::Wplus) chiggs = (abs(part1->id()) == 5100037) ? part1->id() : part3->id(); else if(abs(part3->id()) == ParticleID::Wplus) chiggs = (abs(part1->id()) == 5100037) ? part1->id() : part2->id(); else { throw HelicityLogicalError() << "UEDW0A1H1Vertex::setCoupling - " << "There is no SM W boson in this vertex" << Exception::warning; return; } if(abs(chiggs) == 5100037) { if(q2 != theq2Last || theCoupLast == 0.) { theq2Last = q2; theCoupLast = weakCoupling(q2); double mwRs = theMw2*theR2; double denom = sqrt( (1 + mwRs)*(1. + theMw2*theR2) ); theCoupLast *= ( 0.5 + mwRs )/denom; } if(chiggs > 0) theCoupLast *= -1.; norm(theCoupLast); } else throw HelicityLogicalError() << "UEDW0A1H1Vertex::setCoupling - " << "There is an unknown particle in this " << "vertex " << chiggs << Exception::runerror; } herwig++-2.6.0.orig/Models/UED/Makefile.in0000644000175000017500000005455411756461701020705 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Models/UED DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwUED_la_LIBADD = am_HwUED_la_OBJECTS = UEDBase.lo UEDF1F1Z0Vertex.lo UEDF1F1G0Vertex.lo \ UEDF1F0G1Vertex.lo UEDG1G1G0Vertex.lo UEDG0G0G1G1Vertex.lo \ UEDF1F1P0Vertex.lo UEDF1F1W0Vertex.lo UEDF1F0W1Vertex.lo \ UEDP0H1H1Vertex.lo UEDZ0H1H1Vertex.lo UEDW0A1H1Vertex.lo \ UEDZ0A1h1Vertex.lo UEDW0W1W1Vertex.lo UEDF1F0H1Vertex.lo HwUED_la_OBJECTS = $(am_HwUED_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwUED_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(HwUED_la_LDFLAGS) $(LDFLAGS) -o $@ @WANT_UED_TRUE@am_HwUED_la_rpath = -rpath $(pkglibdir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwUED_la_SOURCES) DIST_SOURCES = $(HwUED_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @WANT_UED_TRUE@pkglib_LTLIBRARIES = HwUED.la HwUED_la_SOURCES = \ UEDBase.cc UEDBase.h UEDBase.fh \ UEDF1F1Z0Vertex.cc UEDF1F1Z0Vertex.h \ UEDF1F1G0Vertex.cc UEDF1F1G0Vertex.h \ UEDF1F0G1Vertex.cc UEDF1F0G1Vertex.h \ UEDG1G1G0Vertex.cc UEDG1G1G0Vertex.h \ UEDG0G0G1G1Vertex.cc UEDG0G0G1G1Vertex.h \ UEDF1F1P0Vertex.cc UEDF1F1P0Vertex.h \ UEDF1F1W0Vertex.cc UEDF1F1W0Vertex.h \ UEDF1F0W1Vertex.cc UEDF1F0W1Vertex.h \ UEDP0H1H1Vertex.cc UEDP0H1H1Vertex.h \ UEDZ0H1H1Vertex.cc UEDZ0H1H1Vertex.h \ UEDW0A1H1Vertex.cc UEDW0A1H1Vertex.h \ UEDZ0A1h1Vertex.cc UEDZ0A1h1Vertex.h \ UEDW0W1W1Vertex.cc UEDW0W1W1Vertex.h \ UEDF1F0H1Vertex.cc UEDF1F0H1Vertex.h HwUED_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Models/UED/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Models/UED/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwUED.la: $(HwUED_la_OBJECTS) $(HwUED_la_DEPENDENCIES) $(EXTRA_HwUED_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwUED_la_LINK) $(am_HwUED_la_rpath) $(HwUED_la_OBJECTS) $(HwUED_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDBase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDF1F0G1Vertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDF1F0H1Vertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDF1F0W1Vertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDF1F1G0Vertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDF1F1P0Vertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDF1F1W0Vertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDF1F1Z0Vertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDG0G0G1G1Vertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDG1G1G0Vertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDP0H1H1Vertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDW0A1H1Vertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDW0W1W1Vertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDZ0A1h1Vertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEDZ0H1H1Vertex.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Models/UED/UEDW0A1H1Vertex.h0000644000175000017500000001136211754474773021407 0ustar sylvestresylvestre// -*- C++ -*- // // UEDW0A1H1Vertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDW0A1H1Vertex_H #define HERWIG_UEDW0A1H1Vertex_H // // This is the declaration of the UEDW0A1H1Vertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h" #include "UEDBase.h" namespace Herwig { using namespace ThePEG; /** * This is the coupling for the vertex \f$ W_{\mu(0)}^\pm A_{(1)}^0 H^\mp_{(1)}\f$. * It takes the form: * \f[\pm\frac{g(m_W^2 R^2 + 1/2)}{\sqrt{(1 + m_W^2)(1 + m_Z^2)}} * \left(p(H_1^\mp) - p(A_1)\right)_\mu \f] * * @see \ref UEDW0A1H1VertexInterfaces "The interfaces" * defined for UEDW0A1H1Vertex. */ class UEDW0A1H1Vertex: public VSSVertex { public: /** * The default constructor. */ UEDW0A1H1Vertex(); 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(); /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initUEDW0A1H1Vertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDW0A1H1Vertex & operator=(const UEDW0A1H1Vertex &); private: /** * The mass-squared of the \f$W\f$ boson. */ Energy2 theMw2; /** * The mass-squared of the \f$Z\f$ boson. */ Energy2 theMz2; /** * The square of the compactification radius. */ InvEnergy2 theR2; /** * The scale at which the coupling was last evaluated. */ Energy2 theq2Last; /** * The value of the coupling when it was last evaluated. */ Complex theCoupLast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UEDW0A1H1Vertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of UEDW0A1H1Vertex. */ typedef ThePEG::Helicity::VSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the UEDW0A1H1Vertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::UEDW0A1H1Vertex"; } /** * The name of a file containing the dynamic library where the class * UEDW0A1H1Vertex is implemented. It may also include several, space-separated, * libraries if the class UEDW0A1H1Vertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwUED.so"; } }; /** @endcond */ } #endif /* HERWIG_UEDW0A1H1Vertex_H */ herwig++-2.6.0.orig/Models/UED/UEDF1F0W1Vertex.h0000644000175000017500000001271111754474773021411 0ustar sylvestresylvestre// -*- C++ -*- // // UEDF1F0W1Vertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDF1F0W1Vertex_H #define HERWIG_UEDF1F0W1Vertex_H // // This is the declaration of the UEDF1F0W1Vertex class. // #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "UEDBase.h" namespace Herwig { using namespace ThePEG; /** * This is the \f$ \bar{f}^{(1)} f^{(0)} W^{(1)}\f$ coupling, where * \f$W^{(1)}\f$ is any level 1 EW gauge boson. The class * inherits from FFVVertex and implements the setCoupling virtual member. * * @see \ref UEDF1F0W1VertexInterfaces "The interfaces" * defined for UEDF1F0W1Vertex. */ class UEDF1F0W1Vertex: public FFVVertex { public: /** * The default constructor. */ UEDF1F0W1Vertex(); 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(); /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initUEDF1F0W1Vertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDF1F0W1Vertex & operator=(const UEDF1F0W1Vertex &); private: /** * The value of \f$\sin\theta_W\f$ */ double theSinW; /** * The value of \f$\cos\theta_W\f$ */ double theCosW; /** * The value of \f$\sin\theta_1\f$ */ double theSinOne; /** * The value of \f$\cos\theta_1\f$ */ double theCosOne; /** * The value of \f$\sin(\theta_W - \theta_1)\f$ */ double theSinWmO; /** * The value of \f$\cos(\theta_W - \theta_1)\f$ */ double theCosWmO; /** * Store the CKM matrix for the \f$W\f$ interactions */ vector< vector > theCKM; /** * The scale at which the coupling was last evaluated. */ Energy2 theq2last; /** * The value of \f$\sqrt{4\pi\alpha}\f$ when it was last evaluated. */ Complex theCouplast; /** * The value of the left coupling when it was last evaluated. */ Complex theLlast; /** * The value of the right coupling when it was last evaluated. */ Complex theRlast; /** * The last gauge boson in the vertex */ long theGBlast; /** * The last KK-fermion in the vertex */ long theKKlast; /** * The last SM fermion in the vertex */ long theSMlast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UEDF1F0W1Vertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of UEDF1F0W1Vertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the UEDF1F0W1Vertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::UEDF1F0W1Vertex"; } /** * The name of a file containing the dynamic library where the class * UEDF1F0W1Vertex is implemented. It may also include several, space-separated, * libraries if the class UEDF1F0W1Vertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwUED.so"; } }; /** @endcond */ } #endif /* HERWIG_UEDF1F0W1Vertex_H */ herwig++-2.6.0.orig/Models/UED/UEDP0H1H1Vertex.h0000644000175000017500000000774411754474773021420 0ustar sylvestresylvestre// -*- C++ -*- // // UEDP0H1H1Vertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDP0H1H1Vertex_H #define HERWIG_UEDP0H1H1Vertex_H // // This is the declaration of the UEDP0H1H1Vertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h" #include "UEDBase.h" namespace Herwig { using namespace ThePEG; /** * The implementation of the \f$A^\mu_{(0)}H_{(1)}^+H_{(1)}^-\f$ vertex. This * class inherits from VSSVertex and implements the setCoupling member function. * * @see \ref UEDP0H1H1VertexInterfaces "The interfaces" * defined for UEDP0H1H1Vertex. */ class UEDP0H1H1Vertex: public VSSVertex { public: /** * The default constructor. */ UEDP0H1H1Vertex(); public: /** * 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(); /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initUEDP0H1H1Vertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDP0H1H1Vertex & operator=(const UEDP0H1H1Vertex &); private: /** * The scale at which the coupling was last evaluated. */ Energy2 theq2Last; /** * The value of the coupling when it was last evaluated. */ Complex theCoupLast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UEDP0H1H1Vertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of UEDP0H1H1Vertex. */ typedef ThePEG::Helicity::VSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the UEDP0H1H1Vertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::UEDP0H1H1Vertex"; } /** * The name of a file containing the dynamic library where the class * UEDP0H1H1Vertex is implemented. It may also include several, space-separated, * libraries if the class UEDP0H1H1Vertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwUED.so"; } }; /** @endcond */ } #endif /* HERWIG_UEDP0H1H1Vertex_H */ herwig++-2.6.0.orig/Models/UED/UEDF1F1G0Vertex.cc0000644000175000017500000000424511754474773021532 0ustar sylvestresylvestre// -*- C++ -*- // // UEDF1F1G0Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDF1F1G0Vertex class. // #include "UEDF1F1G0Vertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace ThePEG::Helicity; using namespace Herwig; UEDF1F1G0Vertex::UEDF1F1G0Vertex() : theq2Last(ZERO), theCoupLast(0.) { orderInGs(1); orderInGem(0); } NoPIOClassDescription UEDF1F1G0Vertex::initUEDF1F1G0Vertex; // Definition of the static class description member. void UEDF1F1G0Vertex::Init() { static ClassDocumentation documentation ("This class implements the F^1 F^1 G^0 vertex."); } void UEDF1F1G0Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { long iferm; if(part1->id() == ParticleID::g) iferm = abs(part2->id()); else if(part2->id() == ParticleID::g) iferm = abs(part1->id()); else if(part3->id() == ParticleID::g) iferm = abs(part1->id()); else throw HelicityLogicalError() << "UEDF1F1G0Vertex::setCoupling - " << "There is no gluon in this vertex!" << Exception::warning; if((iferm >= 5100001 && iferm <= 5100006) || (iferm >= 6100001 && iferm <= 6100006)) { if(q2 != theq2Last || theCoupLast ==0. ) { theCoupLast = -strongCoupling(q2); theq2Last=q2; } norm(theCoupLast); left(1.); right(1.); } else throw HelicityLogicalError() << "UEDF1F1G0Vertex::setCoupling - " << "There is an unknown particle in this vertex! " << iferm << Exception::warning; } void UEDF1F1G0Vertex::doinit() { long boson = 21; //QQ for(long i = 5100001; i < 6100007; ++i) { if(i == 5100007) i += 999994; addToList(-i, i, boson); } FFVVertex::doinit(); } herwig++-2.6.0.orig/Models/UED/UEDZ0A1h1Vertex.h0000644000175000017500000001116511754474773021453 0ustar sylvestresylvestre// -*- C++ -*- // // UEDZ0A1h1Vertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDZ0A1h1Vertex_H #define HERWIG_UEDZ0A1h1Vertex_H // // This is the declaration of the UEDZ0A1h1Vertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h" #include "UEDBase.h" namespace Herwig { using namespace ThePEG; /** * This class implements the coupling for the \f$A_{(1)}h_{(1)}Z^\mu_{{0}}\f$ * vertex. It inherits from VSSVertex and implements the setCoupling member. * * @see \ref UEDZ0A1h1VertexInterfaces "The interfaces" * defined for UEDZ0A1h1Vertex. */ class UEDZ0A1h1Vertex: public VSSVertex { public: /** * The default constructor. */ UEDZ0A1h1Vertex(); 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(); /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initUEDZ0A1h1Vertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDZ0A1h1Vertex & operator=(const UEDZ0A1h1Vertex &); private: /** * The value of \f$ \sin 2\theta_W \f$. */ double theSin2ThetaW; /** * The value of \f$m_kk/\sqrt{m_kk^2 + m_z^2}\f$ */ double theKappa; /** * The scale at which the coupling was last evaluated. */ Energy2 theq2Last; /** * The value of the coupling when it was last evaluated. */ Complex theCoupLast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UEDZ0A1h1Vertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of UEDZ0A1h1Vertex. */ typedef ThePEG::Helicity::VSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the UEDZ0A1h1Vertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::UEDZ0A1h1Vertex"; } /** * The name of a file containing the dynamic library where the class * UEDZ0A1h1Vertex is implemented. It may also include several, space-separated, * libraries if the class UEDZ0A1h1Vertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwUED.so"; } }; /** @endcond */ } #endif /* HERWIG_UEDZ0A1h1Vertex_H */ herwig++-2.6.0.orig/Models/UED/UEDF1F1Z0Vertex.cc0000644000175000017500000001145711754474773021560 0ustar sylvestresylvestre// -*- C++ -*- // // UEDF1F1Z0Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDF1F1Z0Vertex class. // #include "UEDF1F1Z0Vertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace ThePEG::Helicity; using namespace Herwig; UEDF1F1Z0Vertex::UEDF1F1Z0Vertex() : theSin2ThW(0.0), theCosThW(0.0), theRadius(), theID1Last(0), theID2Last(0) , theq2Last(ZERO), theCoupLast(0.), theLeftLast(0.), theRightLast(0.) { orderInGs(0); orderInGem(1); } void UEDF1F1Z0Vertex::doinit() { long boson = 23; //QQ, uu, dd for(long i = 5100001; i < 6100007; ++i) { if(i == 5100007) i += 999994; addToList(-i, i, boson); } //top/bottom quark l/r mixing addToList(-5100006, 6100006, boson); addToList(-6100006, 5100006, boson); addToList(-5100005, 6100005, boson); addToList(-6100005, 5100005, boson); //leptons for(long i = 5100011; i < 5100017; ++i) { addToList(-i, i, boson); } for(long i = 6100011; i < 6100017; i +=2) { addToList(-i, i, boson); } FFVVertex::doinit(); UEDBasePtr model = dynamic_ptr_cast(generator()->standardModel()); if(!model) throw InitException() << "UEDF1F1Z0Vertex::doinit() - The pointer to " << "the UEDBase object is null!" << Exception::runerror; theSin2ThW = sin2ThetaW(); theCosThW = sqrt(1. - theSin2ThW); theRadius = model->compactRadius(); } void UEDF1F1Z0Vertex::persistentOutput(PersistentOStream & os) const { os << theSin2ThW << theCosThW << ounit(theRadius,1/GeV); } void UEDF1F1Z0Vertex::persistentInput(PersistentIStream & is, int) { is >> theSin2ThW >> theCosThW >> iunit(theRadius,1/GeV); } ClassDescription UEDF1F1Z0Vertex::initUEDF1F1Z0Vertex; // Definition of the static class description member. void UEDF1F1Z0Vertex::Init() { static ClassDocumentation documentation ("This is the implementation of the level-1 fermion pair Z_0 boson " "coupling."); } void UEDF1F1Z0Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { if( part3->id() != 23 ) { norm(0.0); left(0.0); right(0.0); throw HelicityLogicalError() << "UEDF1F1Z0Vertex::setCoupling - The vector boson in this vertex " << "is not a Z^0 boson. ID: " << part3->id() << "\n" << Exception::warning; return; } long ianti(abs(part1->id())), iferm(abs(part2->id())); bool ferma = (iferm >= 5100001 && iferm <= 5100006) || (iferm >= 6100001 && iferm <= 6100006) || (iferm >= 5100011 && iferm <= 5100016) || (iferm >= 6100011 && iferm <= 6100016); bool fermb = (ianti >= 5100001 && ianti <= 5100006) || (ianti >= 6100001 && ianti <= 6100006) || (ianti >= 5100011 && ianti <= 5100016) || (ianti >= 6100011 && ianti <= 6100016); if( ferma && fermb ) { if(q2 != theq2Last || theCoupLast == 0. ) { theq2Last = q2; theCoupLast = 0.5*weakCoupling(q2)/theCosThW; } if( ianti != theID1Last || iferm != theID2Last) { theID1Last = ianti; theID2Last = iferm; int stateA = ianti/1000000; int stateB = iferm/1000000; long smID = (stateA == 6) ? ianti - 6100000 : ianti - 5100000; // L/R mixing double alpha = atan(getParticleData(smID)->mass()*theRadius)/2.; double sin2al = sqr(sin(alpha)); double cos2al = 1. - sin2al; if(stateA == 5 && stateB == 5) { if(smID >= 11 && smID <= 16) theLeftLast = -cos2al + 2.*theSin2ThW; else if(smID <= 6 && smID % 2 == 0) theLeftLast = cos2al - 4.*theSin2ThW/3.; else theLeftLast = -cos2al + 2.*theSin2ThW/3.; theRightLast = theLeftLast; } else if(stateA == 6 && stateB == 6) { if(smID >= 11 && smID <= 16) theLeftLast = -sin2al + 2.*theSin2ThW; else if(smID <=6 && smID % 2 == 0) theLeftLast = sin2al - 4.*theSin2ThW/3.; else theLeftLast = -sin2al + 2.*theSin2ThW/3.; theRightLast = theLeftLast; } else { theLeftLast = sqrt(sin2al*cos2al); if(smID % 2 == 0) theLeftLast *= -1.; theRightLast = -theLeftLast; } } norm(theCoupLast); left(theLeftLast); right(theRightLast); } else { throw HelicityLogicalError() << "UEDF1F1Z0Vertex::setCoupling - " << "There is an unknown particle(s) in the " << "UED F^(1) F^(1) Z^(0) vertex. ID: " << ianti << " " << iferm << Exception::warning; norm(0.0); left(0.0); right(0.0); } } herwig++-2.6.0.orig/Models/UED/UEDF1F0H1Vertex.cc0000644000175000017500000001405311754474773021531 0ustar sylvestresylvestre// -*- C++ -*- // // UEDF1F0H1Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDF1F0H1Vertex class. // #include "UEDF1F0H1Vertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace ThePEG::Helicity; using namespace Herwig; UEDF1F0H1Vertex::UEDF1F0H1Vertex() : theRadius(ZERO), theMw(ZERO), theSinThetaW(0.), theq2Last(ZERO), theCoupLast(0.), theLeftLast(0.), theRightLast(0.), theAntiLast(0), theFermLast(0), theHLast(0) { orderInGs(0); orderInGem(1); } void UEDF1F0H1Vertex::doinit() { long heavy[3] = {5, 6, 15}; //h0 for( unsigned int i = 0; i < 3; ++i ) { addToList(-5100000 - i, 5100000 + i, 25); addToList(-6100000 - i, 6100000 + i, 25); addToList(-5100000 - i, 6100000 + i, 25); addToList(-6100000 - i, 5100000 + i, 25); } // Neutral KK-Higgs long higgs[2] = {5100025, 5100036}; for( unsigned int h = 0; h < 2; ++h ) { for( unsigned int i = 0; i < 3; ++i ) { addToList(-heavy[i], 5100000 + heavy[i], higgs[h]); addToList(-5100000 - heavy[i], heavy[i], higgs[h]); addToList(-heavy[i], 6100000 + heavy[i], higgs[h]); addToList(-6100000 - heavy[i], heavy[i], higgs[h]); } } //KK-charged higgs //outgoing H+ addToList(-5100006, 5, 5100037); addToList(-6100006, 5, 5100037); addToList(-6, 5100005, 5100037); addToList(-6, 6100005, 5100037); addToList(-5100016, 15, 5100037); addToList(-6100016, 15, 5100037); addToList(-16, 5100015, 5100037); addToList(-16, 6100015, 5100037); //outgoing H- addToList(-5100005, 6,-5100037); addToList(-6100005, 6,-5100037); addToList(-5, 5100006,-5100037); addToList(-5, 6100006,-5100037); addToList(-5100015, 16,-5100037); addToList(-6100015, 16,-5100037); addToList(-15, 5100016,-5100037); addToList(-15, 6100016,-5100037); FFSVertex::doinit(); tUEDBasePtr UEDBase = dynamic_ptr_cast(generator()->standardModel()); if(!UEDBase) throw InitException() << "UEDF1F0H1Vertex::doinit() - The pointer to " << "the UEDBase object is null!" << Exception::runerror; theRadius = UEDBase->compactRadius(); theSinThetaW = sqrt(sin2ThetaW()); theCosThetaW = sqrt(1. - sin2ThetaW()); theMw = getParticleData(24)->mass(); theMz = getParticleData(23)->mass(); } void UEDF1F0H1Vertex::persistentOutput(PersistentOStream & os) const { os << ounit(theRadius,1/GeV) << ounit(theMw,GeV) << theSinThetaW << ounit(theMz, GeV) << theCosThetaW; } void UEDF1F0H1Vertex::persistentInput(PersistentIStream & is, int) { is >> iunit(theRadius,1/GeV) >> iunit(theMw,GeV) >> theSinThetaW >> iunit(theMz, GeV) >> theCosThetaW; } ClassDescription UEDF1F0H1Vertex::initUEDF1F0H1Vertex; // Definition of the static class description member. void UEDF1F0H1Vertex::Init() { static ClassDocumentation documentation ("The coupling involving a KK-Higgs and a pair of fermions."); } void UEDF1F0H1Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { long anti(abs(part1->id())), ferm(abs(part2->id())), higgs(part3->id()); if( ferm > 17 ) swap( ferm, anti); if( anti != theAntiLast || ferm != theFermLast || higgs != theHLast ) { theAntiLast = anti; theFermLast = ferm; theHLast = higgs; tcPDPtr pd; if( higgs != 25 ) { pd = getParticleData(ferm); } else { long smid = ( ferm/1000000 == 5 ) ? ferm - 5100000 : ferm - 6100000; pd = getParticleData(smid); } Energy mf = pd->mass(); double alpha = mf*theRadius/2.; double salpha = sin(alpha); double calpha = cos(alpha); double fact(0.); if( abs(higgs) == 5100037 ) { fact = theRadius/2./sqrt(1. + sqr(theMw*theRadius)) * UnitRemoval::E; theRightLast = theRadius*theMw; if(anti/1000000 == 5) { Energy mfk = getParticleData(anti - 5100000)->mass(); theLeftLast = (theMw*calpha - (mfk*salpha/theRadius/theMw)) * UnitRemoval::InvE; theRightLast *= calpha*mfk* UnitRemoval::InvE; } else { Energy mfk = getParticleData(anti - 6100000)->mass(); theLeftLast = (theMw*salpha +(mfk*calpha/theRadius/theMw)) * UnitRemoval::InvE; theRightLast *= -salpha*mfk*UnitRemoval::InvE; } theLeftLast *= fact; theRightLast *= fact; if( higgs < 0 ) swap( theLeftLast, theRightLast ); } else if( higgs == 5100025 ) { fact = mf/theMw/2.; if( anti/1000000 == 5 ) theLeftLast = salpha + calpha; else theLeftLast = salpha - calpha; theRightLast = theLeftLast; theLeftLast *= fact; theRightLast *= fact; } else if( higgs == 5100036 ) { fact = theRadius/theCosThetaW/sqrt(1.+sqr(theMz*theRadius))*UnitRemoval::E; double i3f = ( ferm % 2 == 0 ) ? 0.5 : -0.5; double qf = pd->charge()/eplus; if( anti/1000000 == 5 ) { theLeftLast = (theMz*calpha*(i3f - qf*sqr(theSinThetaW)) - mf*salpha/theRadius/theMw) * UnitRemoval::InvE; theRightLast = (-theMz*salpha*qf*sqr(theSinThetaW) + mf*calpha/theRadius/theMw) * UnitRemoval::InvE; } else { theLeftLast = (theMz*salpha*(i3f - qf*sqr(theSinThetaW)) - mf*calpha/theRadius/theMw) * UnitRemoval::InvE; theRightLast = (-theMz*calpha*qf*sqr(theSinThetaW) + mf*salpha/theRadius/theMw)*UnitRemoval::InvE; } theLeftLast *= fact; theRightLast *= fact; } else { theLeftLast = mf*calpha*salpha/2./theMw; if( ferm/1000000 == 5 ) theLeftLast *= -1.; theRightLast = theLeftLast; } } if(q2 != theq2Last || theCoupLast == 0.) { theq2Last = q2; theCoupLast = weakCoupling(q2); } norm(theCoupLast); left(theLeftLast); right(theRightLast); } herwig++-2.6.0.orig/Models/UED/UEDW0W1W1Vertex.h0000644000175000017500000001206511754474773021455 0ustar sylvestresylvestre// -*- C++ -*- // // UEDW0W1W1Vertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDW0W1W1Vertex_H #define HERWIG_UEDW0W1W1Vertex_H // // This is the declaration of the UEDW0W1W1Vertex class. // #include "ThePEG/Helicity/Vertex/Vector/VVVVertex.h" #include "UEDBase.h" namespace Herwig { using namespace ThePEG; using ThePEG::Helicity::Direction; /** * The coupling for the \f$ W\,W^{(1)}Z^{(1)}\f$ and \f$ W\,W^{(1)}\gamma^{(1)}\f$ * vertex . The class inherits from VVVVertex and implements * the setCoupling member. * * @see \ref UEDW0W1W1VertexInterfaces "The interfaces" * defined for UEDW0W1W1Vertex. */ class UEDW0W1W1Vertex: public VVVVertex { public: /** * The default constructor. */ UEDW0W1W1Vertex(); 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(); /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initUEDW0W1W1Vertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDW0W1W1Vertex & operator=(const UEDW0W1W1Vertex &); private: /** * The value of \f$\sin\theta_W\f$. */ double theSinW; /** * The value of \f$\cos\theta_W\f$. */ double theCosW; /** * The value of \f$\sin\theta_1\f$. */ double theSinThetaOne; /** * The value of \f$\cos\theta_1\f$. */ double theCosThetaOne; /** * The scale at which the coupling was last evaluated. */ Energy2 theq2last; /** * The value of \f$ \sqrt{4\pi\alpha}\f$ when it was last evaluated. */ Complex theElast; /** * The value of the coupling when it was last evaluated. */ Complex theCouplast; /** * The PDG code of the last SM particle in the vertex */ long theSMlast; /** * The PDG code of the last KK-particle in the vertex */ long theKKlast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UEDW0W1W1Vertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of UEDW0W1W1Vertex. */ typedef ThePEG::Helicity::VVVVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the UEDW0W1W1Vertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::UEDW0W1W1Vertex"; } /** * The name of a file containing the dynamic library where the class * UEDW0W1W1Vertex is implemented. It may also include several, space-separated, * libraries if the class UEDW0W1W1Vertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwUED.so"; } }; /** @endcond */ } #endif /* HERWIG_UEDW0W1W1Vertex_H */ herwig++-2.6.0.orig/Models/UED/UEDW0W1W1Vertex.cc0000644000175000017500000000763311754474773021620 0ustar sylvestresylvestre// -*- C++ -*- // // UEDW0W1W1Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDW0W1W1Vertex class. // #include "UEDW0W1W1Vertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace ThePEG::Helicity; using namespace Herwig; UEDW0W1W1Vertex::UEDW0W1W1Vertex() : theSinW(0.), theCosW(0.), theSinThetaOne(0.), theCosThetaOne(0.), theq2last(), theElast(0.), theCouplast(0.), theSMlast(0), theKKlast(0) { orderInGs(0); orderInGem(1); } void UEDW0W1W1Vertex::doinit() { addToList( 22, -5100024, 5100024); addToList( 23, -5100024, 5100024); addToList( 24, -5100024, 5100022); addToList( 24, -5100024, 5100023); addToList(-24, 5100024, 5100022); addToList(-24, 5100024, 5100023); VVVVertex::doinit(); tUEDBasePtr model = dynamic_ptr_cast(generator()->standardModel()); if(!model) throw InitException() << "UEDW0W1W1Vertex::doinit() - The pointer to " << "the UEDBase object is null!" << Exception::runerror; theSinW = sqrt(sin2ThetaW()); theCosW = sqrt( 1. - sqr(theSinW) ); theSinThetaOne = model->sinThetaOne(); theCosThetaOne = sqrt( 1. - sqr(theSinThetaOne)); } void UEDW0W1W1Vertex::persistentOutput(PersistentOStream & os) const { os << theSinW << theCosW << theSinThetaOne << theCosThetaOne; } void UEDW0W1W1Vertex::persistentInput(PersistentIStream & is, int) { is >> theSinW >> theCosW >> theSinThetaOne >> theCosThetaOne; } ClassDescription UEDW0W1W1Vertex::initUEDW0W1W1Vertex; // Definition of the static class description member. void UEDW0W1W1Vertex::Init() { static ClassDocumentation documentation ("The coupling of an SM W boson to a level 1 KK W and KK Z and KK photon"); } /// \todo look again void UEDW0W1W1Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { long id1(abs(part1->id())), id2(abs(part2->id())), id3(abs(part3->id())), smID(0), kkparticle(0); double perm(1.); if( id1 == 22 || id1 == 23) { smID = id1; kkparticle = id2; if(part2->id()>0) perm=-1.; } else if(id2 == 22 || id2 == 23) { smID = id2; kkparticle = id1; if(part1->id()<0) perm=-1.; } else if(id3 == 22 || id3 == 23) { smID = id3; kkparticle = id1; if(part1->id()>0) perm=-1.; } else if(id1 == 24 ) { if( part1->id() == 24 ) perm = -1.; smID = id1; kkparticle = (id2 == 5100024) ? id3 : id2; if(id3 == 5100024) perm *=-1.; } else if( id2 == 24 ) { if( part2->id() == 24 ) perm = -1.; smID = id2; kkparticle = (id1 == 5100024) ? id3 : id1; if(id1 == 5100024) perm *=-1.; } else if( id3 == 24 ) { if( part3->id() == 24 ) perm = -1.; smID = id3; kkparticle = (id1 == 5100024) ? id2 : id1; if(id2 == 5100024) perm *=-1.; } else { throw HelicityLogicalError() << "UEDW0W1W1Vertex::setCoupling() - There is no SM gauge boson in " << "this vertex. " << id1 << " " << id2 << " " << id3 << Exception::warning; norm(0.); return; } if( q2 != theq2last || theElast == 0.) { theq2last = q2; theElast = electroMagneticCoupling(q2); } if( smID != theSMlast || kkparticle != theKKlast ) { theSMlast = smID; theKKlast = kkparticle; if( smID == 22 ) theCouplast = 1.; else if(smID == 23) theCouplast = theCosW/theSinW; else { if( kkparticle == 5100023 ) theCouplast = theCosThetaOne/theSinW; else theCouplast = theSinThetaOne/theSinW; } } norm(perm*theElast*theCouplast); } herwig++-2.6.0.orig/Models/UED/UEDG1G1G0Vertex.cc0000644000175000017500000000453411754474773021535 0ustar sylvestresylvestre// -*- C++ -*- // // UEDG1G1G0Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDG1G1G0Vertex class. // #include "UEDG1G1G0Vertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace ThePEG::Helicity; using namespace Herwig; UEDG1G1G0Vertex::UEDG1G1G0Vertex() : theq2Last(ZERO), theCoupLast(0.) { orderInGs(1); orderInGem(0); } void UEDG1G1G0Vertex::doinit() { long kkg1 = 5100021; addToList(kkg1, kkg1, 21); VVVVertex::doinit(); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeNoPIOClass describeUEDG1G1G0Vertex("Herwig::UEDG1G1G0Vertex", "HwUED.so"); void UEDG1G1G0Vertex::Init() { static ClassDocumentation documentation ("The UEDG1G1G0Vertex class implements the coupling of the " "gluon to two KK excitations of the gluon in the UED model."); } void UEDG1G1G0Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { long id1(part1->id()), id2(part2->id()), id3(part3->id()); if( (id1 == ParticleID::g && id2 == 5100021 && id3 == 5100021) || (id2 == ParticleID::g && id1 == 5100021 && id3 == 5100021) || (id3 == ParticleID::g && id1 == 5100021 && id2 == 5100021) ) { if(q2 != theq2Last || theCoupLast == 0.) { theq2Last = q2; theCoupLast = strongCoupling(q2); } norm(theCoupLast); } else throw HelicityLogicalError() << "UEDG1G1G0Vertex::setCoupling - " << "There is an unknown particle in this vertex " << id1 << " " << id2 << " " << id3 << Exception::runerror; } herwig++-2.6.0.orig/Models/UED/UEDG0G0G1G1Vertex.h0000644000175000017500000000517211754474773021565 0ustar sylvestresylvestre// -*- C++ -*- // // UEDG0G0G1G1Vertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDG0G0G1G1Vertex_H #define HERWIG_UEDG0G0G1G1Vertex_H // // This is the declaration of the UEDG0G0G1G1Vertex class. // #include "ThePEG/Helicity/Vertex/Vector/VVVVVertex.h" namespace Herwig { using namespace ThePEG; /** * This is the implementation of the coupling of two Standard * Model gluons to a pair of level 1 KK gluons. * * @see \ref UEDG0G0G1G1VertexInterfaces "The interfaces" * defined for UEDG0G0G1G1Vertex. */ class UEDG0G0G1G1Vertex: public Helicity::VVVVVertex { public: /** * The default constructor. */ UEDG0G0G1G1Vertex(); /** * 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(); /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle *@param part4 The fourth interacting particle */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3, tcPDPtr part4); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDG0G0G1G1Vertex & operator=(const UEDG0G0G1G1Vertex &); private: /** * The scale at which the coupling was last evaluated */ Energy2 theq2Last; /** * The value of the coupling when it was last evaluated */ Complex theCoupLast; }; } #endif /* HERWIG_UEDG0G0G1G1Vertex_H */ herwig++-2.6.0.orig/Models/UED/Makefile.am0000644000175000017500000000131011755411622020646 0ustar sylvestresylvestreif WANT_UED pkglib_LTLIBRARIES = HwUED.la endif HwUED_la_SOURCES = \ UEDBase.cc UEDBase.h UEDBase.fh \ UEDF1F1Z0Vertex.cc UEDF1F1Z0Vertex.h \ UEDF1F1G0Vertex.cc UEDF1F1G0Vertex.h \ UEDF1F0G1Vertex.cc UEDF1F0G1Vertex.h \ UEDG1G1G0Vertex.cc UEDG1G1G0Vertex.h \ UEDG0G0G1G1Vertex.cc UEDG0G0G1G1Vertex.h \ UEDF1F1P0Vertex.cc UEDF1F1P0Vertex.h \ UEDF1F1W0Vertex.cc UEDF1F1W0Vertex.h \ UEDF1F0W1Vertex.cc UEDF1F0W1Vertex.h \ UEDP0H1H1Vertex.cc UEDP0H1H1Vertex.h \ UEDZ0H1H1Vertex.cc UEDZ0H1H1Vertex.h \ UEDW0A1H1Vertex.cc UEDW0A1H1Vertex.h \ UEDZ0A1h1Vertex.cc UEDZ0A1h1Vertex.h \ UEDW0W1W1Vertex.cc UEDW0W1W1Vertex.h \ UEDF1F0H1Vertex.cc UEDF1F0H1Vertex.h HwUED_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:0:0 herwig++-2.6.0.orig/Models/UED/UEDG1G1G0Vertex.h0000644000175000017500000000515711754474773021401 0ustar sylvestresylvestre// -*- C++ -*- // // UEDG1G1G0Vertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDG1G1G0Vertex_H #define HERWIG_UEDG1G1G0Vertex_H // // This is the declaration of the UEDG1G1G0Vertex class. // #include "ThePEG/Helicity/Vertex/Vector/VVVVertex.h" #include "UEDBase.h" namespace Herwig { using namespace ThePEG; using ThePEG::Helicity::Direction; /** * This is the implementation of the Feynman rule for the coupling * of Standard Model gluon to a pair of (level1) KK excited gluons. * * @see \ref UEDG1G1G0VertexInterfaces "The interfaces" * defined for UEDG1G1G0Vertex. */ class UEDG1G1G0Vertex: public VVVVertex { public: /** * The default constructor. */ UEDG1G1G0Vertex(); /** * 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(); /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDG1G1G0Vertex & operator=(const UEDG1G1G0Vertex &); private: /** * The scale at which the coupling was last evaluated */ Energy2 theq2Last; /** * The value of the coupling when it was last evaluated */ Complex theCoupLast; }; } #endif /* HERWIG_UEDG1G1G0Vertex_H */ herwig++-2.6.0.orig/Models/UED/UEDF1F0G1Vertex.h0000644000175000017500000000760211754474773021374 0ustar sylvestresylvestre// -*- C++ -*- // // UEDF1F0G1Vertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDF1F0G1Vertex_H #define HERWIG_UEDF1F0G1Vertex_H // // This is the declaration of the UEDF1F0G1Vertex class. // #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "UEDBase.h" namespace Herwig { using namespace ThePEG; /** * This is the implementation of the \f$\bar{f}^{1}f^{0}g^{(1)}\f$ vertex * * @see \ref UEDF1F0G1VertexInterfaces "The interfaces" * defined for UEDF1F0G1Vertex. */ class UEDF1F0G1Vertex: public FFVVertex { public: /** * The default constructor. */ UEDF1F0G1Vertex(); /** * 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(); /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initUEDF1F0G1Vertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDF1F0G1Vertex & operator=(const UEDF1F0G1Vertex &); private: /** * The energy at which the coupling was last evaluated */ Energy2 theq2Last; /** * The value of the coupling when it was last evaluated */ Complex theCoupLast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UEDF1F0G1Vertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of UEDF1F0G1Vertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the UEDF1F0G1Vertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::UEDF1F0G1Vertex"; } /** * The name of a file containing the dynamic library where the class * UEDF1F0G1Vertex is implemented. It may also include several, space-separated, * libraries if the class UEDF1F0G1Vertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwUED.so"; } }; /** @endcond */ } #endif /* HERWIG_UEDF1F0G1Vertex_H */ herwig++-2.6.0.orig/Models/UED/UEDBase.fh0000644000175000017500000000044311754474773020366 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the UEDBase class. // #ifndef HERWIG_UEDBase_FH #define HERWIG_UEDBase_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class UEDBase; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::UEDBase,UEDBasePtr); } #endif herwig++-2.6.0.orig/Models/UED/UEDZ0A1h1Vertex.cc0000644000175000017500000000565711754474773021622 0ustar sylvestresylvestre// -*- C++ -*- // // UEDZ0A1h1Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDZ0A1h1Vertex class. // #include "UEDZ0A1h1Vertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace ThePEG::Helicity; using namespace Herwig; UEDZ0A1h1Vertex::UEDZ0A1h1Vertex() : theSin2ThetaW(0.), theKappa(0.), theq2Last(ZERO), theCoupLast(0.) { orderInGs(0); orderInGem(1); } void UEDZ0A1h1Vertex::doinit() { addToList(23, 5100036, 5100025); VSSVertex::doinit(); tUEDBasePtr UEDBase = dynamic_ptr_cast(generator()->standardModel()); if(!UEDBase) throw InitException() << "UEDZ0A1h1Vertex::doinit() - The pointer to " << "the UEDBase object is null!" << Exception::runerror; double sw2 = sin2ThetaW(); theSin2ThetaW = 2.*sqrt(sw2*(1. - sw2)); Energy2 mz2 = sqr(getParticleData(23)->mass()); InvEnergy2 rad2 = sqr(UEDBase->compactRadius()); theKappa = 1./sqrt(1. + mz2*rad2); } void UEDZ0A1h1Vertex::persistentOutput(PersistentOStream & os) const { os << theSin2ThetaW << theKappa; } void UEDZ0A1h1Vertex::persistentInput(PersistentIStream & is, int) { is >> theSin2ThetaW >> theKappa; } ClassDescription UEDZ0A1h1Vertex::initUEDZ0A1h1Vertex; // Definition of the static class description member. void UEDZ0A1h1Vertex::Init() { static ClassDocumentation documentation ("The coupling of an SM Z boson to a level-1 CP-Odd pseudo-scalar " "and level 1 higgs."); } void UEDZ0A1h1Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { long scaA(0), scaB(0); if(part1->id() == ParticleID::Z0) { scaA = part2->id(); scaB = part3->id(); } else if(part2->id() == ParticleID::Z0) { scaA = part1->id(); scaB = part3->id(); } else if(part3->id() == ParticleID::Z0) { scaA = part1->id(); scaB = part2->id(); } else { throw HelicityLogicalError() << "UEDZ0A1h1Vertex::setCoupling - " << "There is no SM Z boson in this vertex" << Exception::warning; } if( (scaA == 5100036 && scaB == 5100025) || (scaB == 5100036 && scaA == 5100025) ) { if(q2 != theq2Last || theCoupLast == 0.) { theq2Last = q2; theCoupLast = theKappa*electroMagneticCoupling(q2)/theSin2ThetaW; } norm(theCoupLast); } else throw HelicityLogicalError() << "UEDZ0A1h1Vertex::setCoupling - " << "There is an unknown particle in this " << "vertex. " << scaA << " " << scaB << Exception::warning; } herwig++-2.6.0.orig/Models/UED/UEDF1F1W0Vertex.cc0000644000175000017500000001066411754474773021554 0ustar sylvestresylvestre// -*- C++ -*- // // UEDF1F1W0Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDF1F1W0Vertex class. // #include "UEDF1F1W0Vertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace ThePEG::Helicity; using namespace Herwig; UEDF1F1W0Vertex::UEDF1F1W0Vertex(): theRadius(ZERO), theQ2Last(ZERO), theCoupLast(0.), thefermALast(0), thefermBLast(0) { orderInGs(0); orderInGem(1); } void UEDF1F1W0Vertex::doinit() { //outgoing W+ for( long i = 2; i < 17; i += 2 ) { if( i == 7 ) i += 5; addToList(-5100000 - i, 5100000 + i - 1, 24); if( i < 7 ) { addToList(-6100000 - i, 6100000 + i - 1, 24); } } addToList(-6100006, 5100005, 24); addToList(-5100006, 6100005, 24); //outgoing W- for( long i = 1; i < 16; i += 2 ) { if( i == 6 ) i += 5; addToList(-5100000 - i, 5100001 + i, -24); if( i < 6 ) { addToList(-6100000 - i, 6100001 + i, -24); } } addToList(-6100005, 5100006, -24); addToList(-5100005, 6100006, -24); FFVVertex::doinit(); tUEDBasePtr model = dynamic_ptr_cast(generator()->standardModel()); if(!model) throw InitException() << "UEDF1F1W0Vertex::doinit() - The pointer to " << "the UEDBase object is null!" << Exception::runerror; theRadius = model->compactRadius(); } void UEDF1F1W0Vertex::persistentOutput(PersistentOStream & os) const { os << ounit(theRadius,1/GeV); } void UEDF1F1W0Vertex::persistentInput(PersistentIStream & is, int) { is >> iunit(theRadius,1/GeV); } ClassDescription UEDF1F1W0Vertex::initUEDF1F1W0Vertex; // Definition of the static class description member. void UEDF1F1W0Vertex::Init() { static ClassDocumentation documentation ("This class implements the coupling of a pair of level-1 KK fermions" "to an SM W boson"); } void UEDF1F1W0Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, #ifndef NDEBUG tcPDPtr part3) { #else tcPDPtr) { #endif long ianti(abs(part1->id())), iferm(abs(part2->id())); assert( abs(part3->id()) == 24 ); bool ferma = (iferm >= 5100001 && iferm <= 5100006) || (iferm >= 6100001 && iferm <= 6100006) || (iferm >= 5100011 && iferm <= 5100016) || (iferm >= 6100011 && iferm <= 6100016); bool fermb = (ianti >= 5100001 && ianti <= 5100006) || (ianti >= 6100001 && ianti <= 6100006) || (ianti >= 5100011 && ianti <= 5100016) || (ianti >= 6100011 && ianti <= 6100016); if( !ferma || !fermb ) throw HelicityLogicalError() << "UEDF1F1W0Vertex::setCoupling - " << "There is an unknown particle(s) in the " << "UED F^(1) F^(1) W^(0) vertex. ID: " << ianti << " " << iferm << Exception::runerror; if(q2 != theQ2Last || theCoupLast == 0. ) { theQ2Last = q2; theCoupLast = sqrt(0.5)*weakCoupling(q2); } if(iferm != thefermALast || ianti != thefermBLast) { thefermALast = iferm; thefermBLast = ianti; int stateA(ianti/1000000), stateB(iferm/1000000); long sma = (stateA == 6) ? ianti - 6100000 : ianti - 5100000; long smb = (stateB == 6) ? iferm - 6100000 : iferm - 5100000; double afu(0.), afd(0.); if( sma % 2 == 0 ) { afu = atan(getParticleData(sma)->mass()*theRadius)/2.; afd = atan(getParticleData(smb)->mass()*theRadius)/2.; } else { afd = atan(getParticleData(sma)->mass()*theRadius)/2.; afu = atan(getParticleData(smb)->mass()*theRadius)/2.; } if( stateA == stateB ) { if( stateA == 5 ) { left(cos(afu)*cos(afd)); right(cos(afu)*cos(afd)); } else { left(sin(afu)*sin(afd)); right(sin(afu)*sin(afd)); } } else { if( sma % 2 == 0 ) { if( stateA == 5 ) { left(cos(afu)*sin(afd)); right(-cos(afu)*sin(afd)); } else { left(sin(afu)*cos(afd)); right(-sin(afu)*cos(afd)); } } else { if( stateA == 5 ) { left(sin(afu)*cos(afd)); right(-sin(afu)*cos(afd)); } else { left(cos(afu)*sin(afd)); right(-cos(afu)*sin(afd)); } } } } norm(theCoupLast); } herwig++-2.6.0.orig/Models/UED/UEDZ0H1H1Vertex.cc0000644000175000017500000000570311754474773021561 0ustar sylvestresylvestre// -*- C++ -*- // // UEDZ0H1H1Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDZ0H1H1Vertex class. // #include "UEDZ0H1H1Vertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace ThePEG::Helicity; using namespace Herwig; UEDZ0H1H1Vertex::UEDZ0H1H1Vertex() : theCosThetaW(0.), theCosTheta2W(0.), theMw2(), theR2(), theq2Last(ZERO), theCoupLast(0.) { orderInGs(0); orderInGem(1); } void UEDZ0H1H1Vertex::doinit() { addToList(23, 5100037, -5100037); VSSVertex::doinit(); tUEDBasePtr theUEDBase = dynamic_ptr_cast(generator()->standardModel()); if(!theUEDBase) throw InitException() << "UEDZ0H1H1Vertex::doinit() - The pointer to " << "the UEDBase object is null!" << Exception::runerror; theCosThetaW = sqrt(1. - sin2ThetaW()); theCosTheta2W = 1. - 2.*sin2ThetaW(); theMw2 = sqr(getParticleData(24)->mass()); theR2 = sqr(theUEDBase->compactRadius()); } void UEDZ0H1H1Vertex::persistentOutput(PersistentOStream & os) const { os << theCosThetaW << theCosTheta2W << ounit(theMw2,GeV2) << ounit(theR2,1/GeV2); } void UEDZ0H1H1Vertex::persistentInput(PersistentIStream & is, int) { is >> theCosThetaW >> theCosTheta2W >> iunit(theMw2,GeV2) >> iunit(theR2,1/GeV2); } ClassDescription UEDZ0H1H1Vertex::initUEDZ0H1H1Vertex; // Definition of the static class description member. void UEDZ0H1H1Vertex::Init() { static ClassDocumentation documentation ("This is the coupling of the SM Z boson to the level-1 charged higgs."); } void UEDZ0H1H1Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { long kkhiggs(0); if(part1->id() == ParticleID::Z0) kkhiggs = abs(part2->id()); else if(part2->id() == ParticleID::Z0) kkhiggs = abs(part1->id()); else if(part3->id() == ParticleID::Z0) kkhiggs = abs(part1->id()); else { throw HelicityLogicalError() << "UEDZ0H1H1Vertex::setCoupling - There is no " << "SM photon in this vertex!." << Exception::warning; return; } if(kkhiggs == 5100037) { if(q2 != theq2Last || theCoupLast == 0.) { theq2Last = q2; theCoupLast = Complex(0., 1.)*weakCoupling(q2); theCoupLast *= ( (theCosTheta2W/2./theCosThetaW) - sqr(theCosThetaW)*theMw2*theR2 )/(1. + theMw2*theR2); } norm(theCoupLast); } else throw HelicityLogicalError() << "UEDZ0H1H1Vertex::setCoupling - There is no " << "level-1 higgs in this vertex! " << kkhiggs << Exception::warning; } herwig++-2.6.0.orig/Models/UED/UEDF1F0W1Vertex.cc0000644000175000017500000001417711754474773021557 0ustar sylvestresylvestre// -*- C++ -*- // // UEDF1F0W1Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDF1F0W1Vertex class. // #include "UEDF1F0W1Vertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Models/StandardModel/StandardCKM.h" using namespace ThePEG::Helicity; using namespace Herwig; UEDF1F0W1Vertex::UEDF1F0W1Vertex() : theSinW(0.), theCosW(0.), theSinOne(0.), theCosOne(0.), theSinWmO(0.), theCosWmO(0.), theCKM(0, vector(0, 0.)), theq2last(), theCouplast(0.), theLlast(0.), theRlast(0.), theGBlast(0), theKKlast(0), theSMlast(0) { orderInGs(0); orderInGem(1); } void UEDF1F0W1Vertex::doinit() { //outgoing W+ for(long i = 2; i < 7; i += 2) { for(long j = 1; j < 6; j += 2) { addToList( -i, 5100000 + j, 5100024 ); addToList( -(5100000 + i), j, 5100024 ); } } for(long i = 11; i < 17; i += 2) { addToList( -i-1, 5100000 + i, 5100024 ); addToList( -(5100001 + i), i, 5100024 ); } //outgoing W- for(long i = 1; i < 6; i += 2) { for(long j = 2 ; j < 7; j += 2) { addToList( -i, 5100000 + j, -5100024 ); addToList( -(5100000 + i), j, -5100024 ); } } for(long i = 11; i < 17; i += 2) { addToList( -i, 5100001 + i, -5100024 ); addToList(-(5100000 + i), i + 1, -5100024); } long boson[2] = {5100022,5100023}; for(long b = 0; b < 2; ++b) { //QQ for(int i = 1; i < 7; ++i) { addToList( -i, i + 5100000, boson[b]); addToList(-(i + 5100000), i, boson[b]); addToList(-i, i + 6100000, boson[b]); addToList(-(i + 6100000), i, boson[b]); } //LL for(int i = 11; i < 17; ++i) { addToList( -i, i + 5100000, boson[b]); addToList(-(i + 5100000), i, boson[b]); if( i % 2 != 0 ) { addToList(-i, i + 6100000, boson[b]); addToList(-(i + 6100000), i, boson[b]); } } } FFVVertex::doinit(); tUEDBasePtr UEDBase = dynamic_ptr_cast(generator()->standardModel()); if(!UEDBase) throw InitException() << "UEDF1F0W1Vertex::doinit() - The pointer to " << "the UEDBase object is null!" << Exception::runerror; theSinW = sqrt(sin2ThetaW()); theCosW = sqrt( 1. - sqr(theSinW)); theSinOne = UEDBase->sinThetaOne(); theCosOne = sqrt(1. - sqr(theSinOne)); theSinWmO = theSinW*theCosOne - theSinOne*theCosW; theCosWmO = theCosW*theCosOne + theSinW*theSinOne; theCKM = dynamic_ptr_cast::transient_pointer> (UEDBase->CKM())->getUnsquaredMatrix(UEDBase->families()); } void UEDF1F0W1Vertex::persistentOutput(PersistentOStream & os) const { os << theSinW << theCosW << theSinOne << theCosOne << theSinWmO << theCosWmO << theCKM; } void UEDF1F0W1Vertex::persistentInput(PersistentIStream & is, int) { is >> theSinW >> theCosW >> theSinOne >> theCosOne >> theSinWmO >> theCosWmO >> theCKM; } ClassDescription UEDF1F0W1Vertex::initUEDF1F0W1Vertex; // Definition of the static class description member. void UEDF1F0W1Vertex::Init() { static ClassDocumentation documentation ("This is the coupling of a KK1 W boson to a KK1 fermion and " "a SM fermion."); } void UEDF1F0W1Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { long id1(abs(part1->id())), id2(abs(part2->id())), id3(abs(part3->id())), kkparticle(0), gboson(0), smID(0); if( id1 == 5100022 || id1 == 5100023 || id1 == 5100024 ) { gboson = id1; if( id2 > 5000000 ) { kkparticle = id2; smID = id3; } else { kkparticle = id3; smID = id2; } } else if( id2 == 5100022 || id2 == 5100023 || id2 == 5100024 ) { gboson = id2; if( id1 > 5000000 ) { kkparticle = id1; smID = id3; } else { kkparticle = id3; smID = id1; } } else if( id3 == 5100022 || id3 == 5100023 || id3 == 5100024 ) { gboson = id3; if( id1 > 5000000 ) { kkparticle = id1; smID = id2; } else { kkparticle = id2; smID = id1; } } else { throw HelicityLogicalError() << "UEDF1F0W1Vertex::setCoupling - There is no KK gauge boson " << "in this vertex." << Exception::warning; return; } if( (kkparticle >= 5100001 && kkparticle <= 5100006) || (kkparticle >= 6100001 && kkparticle <= 6100006) || (kkparticle >= 5100011 && kkparticle <= 5100016) || (kkparticle >= 6100011 && kkparticle <= 6100016) ) { if(q2 != theq2last || theCouplast == 0.) { theq2last = q2; theCouplast = electroMagneticCoupling(q2); } if( gboson != theGBlast || kkparticle != theKKlast || smID != theSMlast ) { theGBlast = gboson; theKKlast = kkparticle; theSMlast = smID; if( gboson == 5100024 ) { Complex ckm(1.); if( smID >= 1 && smID <= 6 ) { long smIDb(kkparticle - 5100000); if( smID % 2 != 0 ) swap(smID, smIDb); ckm = theCKM[smID/2 - 1][(smIDb - 1)/2]; } theLlast = -ckm/sqrt(2)/theSinW; theRlast = 0.; } else if( gboson == 5100022 || gboson == 5100023 ) { double Qf = getParticleData(smID)->charge()/eplus; if( kkparticle/1000000 == 5 ) { theRlast = 0.; double I3f = (abs(smID) % 2 == 0) ? 0.5 : -0.5; if( gboson == 5100023 ) theLlast = (Qf*theSinOne - I3f*theCosWmO/theSinW)/theCosW; else theLlast = -(Qf*theCosOne - I3f*theSinWmO/theSinW)/theCosW; } else { theLlast = 0.; if( gboson == 5100023 ) theRlast = Qf*theSinOne/theCosW; else theRlast = -Qf*theCosOne/theCosW; } } } norm(theCouplast); left(theLlast); right(theRlast); } else throw HelicityLogicalError() << "UEDF1F0W1Vertex::setCoupling - " << "There is an unknown particle in this vertex! " << kkparticle << Exception::warning; } herwig++-2.6.0.orig/Models/UED/UEDF1F0H1Vertex.h0000644000175000017500000001250011754474773021366 0ustar sylvestresylvestre// -*- C++ -*- // // UEDF1F0H1Vertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDF1F0H1Vertex_H #define HERWIG_UEDF1F0H1Vertex_H // // This is the declaration of the UEDF1F0H1Vertex class. // #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h" #include "UEDBase.h" namespace Herwig { using namespace ThePEG; /** * The implementation of the \f$ f_{(1)}f_{(0)}H_{(1)}^\pm\f$ vertex. It inherits * from FFSVertex and implements the setCoupling member function. * * @see \ref UEDF1F0H1VertexInterfaces "The interfaces" * defined for UEDF1F0H1Vertex. */ class UEDF1F0H1Vertex: public FFSVertex { public: /** * The default constructor. */ UEDF1F0H1Vertex(); 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(); /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initUEDF1F0H1Vertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDF1F0H1Vertex & operator=(const UEDF1F0H1Vertex &); private: /** * The compactification radius. */ InvEnergy theRadius; /** * The mass of the \f$W\f$-boson. */ Energy theMw; /** * The mass of the \f$Z\f$-boson. */ Energy theMz; /** * The value of \f$\sin\Theta_W\f$. */ double theSinThetaW; /** * The value of \f$\cos\Theta_W\f$. */ double theCosThetaW; /** * The scale at which the coupling was last evaluated. */ Energy2 theq2Last; /** * The value of the coupling when it was last evaluated. */ Complex theCoupLast; /** * The value of the left coupling when it was last evaluated. */ Complex theLeftLast; /** * The value of the right coupling when it was last evaluated. */ Complex theRightLast; /** * The PDG code of the 1st particle at the vertex when it was last evaluated */ long theAntiLast; /** * The PDG code of the 2nd particle at the vertex when it was last evaluated */ long theFermLast; /** * The PDG code of the Higgs particle at the vertex when it was last * evaluated */ long theHLast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UEDF1F0H1Vertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of UEDF1F0H1Vertex. */ typedef ThePEG::Helicity::FFSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the UEDF1F0H1Vertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::UEDF1F0H1Vertex"; } /** * The name of a file containing the dynamic library where the class * UEDF1F0H1Vertex is implemented. It may also include several, space-separated, * libraries if the class UEDF1F0H1Vertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwUED.so"; } }; /** @endcond */ } #endif /* HERWIG_UEDF1F0H1Vertex_H */ herwig++-2.6.0.orig/Models/UED/UEDP0H1H1Vertex.cc0000644000175000017500000000406711754474773021551 0ustar sylvestresylvestre// -*- C++ -*- // // UEDP0H1H1Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDP0H1H1Vertex class. // #include "UEDP0H1H1Vertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace Herwig; using namespace ThePEG::Helicity; UEDP0H1H1Vertex::UEDP0H1H1Vertex() : theq2Last(ZERO), theCoupLast(0.) { orderInGs(0); orderInGem(1); } void UEDP0H1H1Vertex::doinit() { addToList(22, 5100037, -5100037); VSSVertex::doinit(); } NoPIOClassDescription UEDP0H1H1Vertex::initUEDP0H1H1Vertex; // Definition of the static class description member. void UEDP0H1H1Vertex::Init() { static ClassDocumentation documentation ("This is the coupling of the SM photon to the level-1 charged higgs."); } void UEDP0H1H1Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { long kkhiggs(0); if(part1->id() == ParticleID::gamma) kkhiggs = abs(part2->id()); else if(part2->id() == ParticleID::gamma) kkhiggs = abs(part1->id()); else if(part3->id() == ParticleID::gamma) kkhiggs = abs(part1->id()); else { throw HelicityLogicalError() << "UEDP0H1H1Vertex::setCoupling - There is no " << "SM photon in this vertex!." << Exception::warning; return; } if(kkhiggs == 5100037) { if(q2 != theq2Last || theCoupLast == 0.) { theq2Last = q2; theCoupLast = Complex(0., 1.)*electroMagneticCoupling(q2); } norm(theCoupLast); } else throw HelicityLogicalError() << "UEDP0H1H1Vertex::setCoupling - There is no " << "level-1 higgs in this vertex! " << kkhiggs << Exception::warning; } herwig++-2.6.0.orig/Models/UED/UEDG0G0G1G1Vertex.cc0000644000175000017500000000472111754474773021722 0ustar sylvestresylvestre// -*- C++ -*- // // UEDG0G0G1G1Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDG0G0G1G1Vertex class. // #include "UEDG0G0G1G1Vertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/PDT/EnumParticles.h" #include "UEDBase.h" using namespace Herwig; UEDG0G0G1G1Vertex::UEDG0G0G1G1Vertex() : theq2Last(ZERO), theCoupLast(0.) { orderInGs(2); orderInGem(0); } void UEDG0G0G1G1Vertex::doinit() { long kk1g = 5100021, smgl = 21; addToList(smgl, smgl, kk1g, kk1g); VVVVVertex::doinit(); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeNoPIOClass describeUEDG0G0G1G1Vertex("Herwig::UEDG0G0G1G1Vertex", "HwUED.so"); void UEDG0G0G1G1Vertex::Init() { static ClassDocumentation documentation ("This class implements the coupling of a pair of SM gluons to" "a pair of UED level-1 KK gluons."); } void UEDG0G0G1G1Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3, tcPDPtr part4) { int ismg(0), ikkg(0); vector particles(4); particles[0] = part1; particles[1] = part2; particles[2] = part3; particles[3] = part4; for(vector::size_type i = 0; i < 4; ++i) { if(particles[i]->id() == ParticleID::g) ++ismg; if(particles[i]->id() == 5100021) ++ikkg; } if(ismg == 2 && ikkg == 2) { if(q2 != theq2Last || theCoupLast == 0. ) { theq2Last = q2; theCoupLast = sqr(strongCoupling(q2)); } norm(theCoupLast); setType(1); setOrder(0,1,2,3); } else { throw HelicityLogicalError() << "UEDG0G0G1G1Vertex::setCoupling - " << "There is an unknown particle in this vertex " << part1->id() << " " << part2->id() << " " << part3->id() << " " << part4->id() << Exception::warning; norm(0.); } } herwig++-2.6.0.orig/Models/UED/UEDF1F1P0Vertex.cc0000644000175000017500000000640311754474773021541 0ustar sylvestresylvestre// -*- C++ -*- // // UEDF1F1P0Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDF1F1P0Vertex class. // #include "UEDF1F1P0Vertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace ThePEG::Helicity; using namespace Herwig; UEDF1F1P0Vertex::UEDF1F1P0Vertex() : theCoupLast(0.0), theq2Last(ZERO), thefermLast(0), theLRLast(0.0), theCharges(3) { orderInGs(0); orderInGem(1); } void UEDF1F1P0Vertex::doinit() { long photon = 22; //quarks for(long i = 1; i < 7; ++i) { //left addToList(-5100000 - i, 5100000 + i, photon); //right addToList(-6100000 - i, 6100000 + i, photon); } //leptons for(long i = 11; i < 17; i += 2) { //left addToList(-5100000 - i, 5100000 + i, photon); //right addToList(-6100000 - i, 6100000 + i, photon); } FFVVertex::doinit(); tUEDBasePtr UEDBase = dynamic_ptr_cast(generator()->standardModel()); if(!UEDBase) throw InitException() << "UEDF1F1P0Vertex::doinit() - The pointer to " << "the UEDBase object is null!" << Exception::runerror; theCharges[0] = UEDBase->ee(); theCharges[1] = UEDBase->ed(); theCharges[2] = UEDBase->eu(); } NoPIOClassDescription UEDF1F1P0Vertex::initUEDF1F1P0Vertex; // Definition of the static class description member. void UEDF1F1P0Vertex::Init() { static ClassDocumentation documentation ("This class couples a pair of level-1 KK fermions to an SM " "photon."); } void UEDF1F1P0Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { long iferm; if(part1->id() == ParticleID::gamma) iferm = abs(part2->id()); else if(part2->id() == ParticleID::gamma) iferm = abs(part1->id()); else if(part3->id() == ParticleID::gamma) iferm = abs(part1->id()); else { throw HelicityLogicalError() << "UEDF1F1P0Vertex::setCoupling - There is no " << "photon in this vertex!" << Exception::warning; norm(0.0); return; } if((iferm >= 5100001 && iferm <= 5100006) || (iferm >= 5100011 && iferm <= 5100016) || (iferm >= 6100001 && iferm <= 6100006) || (iferm >= 6100011 && iferm <= 6100016)) { if(q2 != theq2Last || theCoupLast == 0. ) { theq2Last = q2; theCoupLast = electroMagneticCoupling(q2); } norm(theCoupLast); if(iferm != thefermLast) { thefermLast = iferm; int smtype = (iferm > 6000000) ? iferm - 6100000 : iferm - 5100000; if(smtype >= 11) theLRLast = theCharges[0]; else theLRLast = (smtype % 2 == 0) ? theCharges[2] : theCharges[1]; } left(theLRLast); right(theLRLast); } else { throw HelicityLogicalError() << "UEDF1F1P0Vertex::setCoupling - There is an " << "unknown particle in this vertex " << iferm << Exception::warning; norm(0.0); } } herwig++-2.6.0.orig/Models/UED/UEDZ0H1H1Vertex.h0000644000175000017500000001172011754474773021417 0ustar sylvestresylvestre// -*- C++ -*- // // UEDZ0H1H1Vertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDZ0H1H1Vertex_H #define HERWIG_UEDZ0H1H1Vertex_H // // This is the declaration of the UEDZ0H1H1Vertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h" #include "UEDBase.h" namespace Herwig { using namespace ThePEG; /** * The implementation of the \f$Z^\mu_{(0)}H_{(1)}^+H_{(1)}^-\f$ vertex. This * class inherits from VSSVertex and implements the setCoupling member function. * * The vertex is taken to have the form: * \f[\frac{g}{1 + m_W^2R^2}\left(\frac{\cos 2\theta_W}{2\cos\theta_W} - * m_W^2 R^2\cos^2\theta_W \right)\left(p(H_{(1)}^-) - p(H_{(1)}^+)\right) \f] * * @see \ref UEDZ0H1H1VertexInterfaces "The interfaces" * defined for UEDZ0H1H1Vertex. */ class UEDZ0H1H1Vertex: public VSSVertex { public: /** * The default constructor. */ UEDZ0H1H1Vertex(); 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(); /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initUEDZ0H1H1Vertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDZ0H1H1Vertex & operator=(const UEDZ0H1H1Vertex &); private: /** * The value of \f$\cos\theta_W\f$. */ double theCosThetaW; /** * The value of \f$\cos 2\theta_W\f$. */ double theCosTheta2W; /** * The mass-squared of the \f$W\f$ boson. */ Energy2 theMw2; /** * The square of the compactification radius. */ InvEnergy2 theR2; /** * The scale at which the coupling was last evaluated. */ Energy2 theq2Last; /** * The value of the coupling when it was last evaluated. */ Complex theCoupLast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UEDZ0H1H1Vertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of UEDZ0H1H1Vertex. */ typedef ThePEG::Helicity::VSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the UEDZ0H1H1Vertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::UEDZ0H1H1Vertex"; } /** * The name of a file containing the dynamic library where the class * UEDZ0H1H1Vertex is implemented. It may also include several, space-separated, * libraries if the class UEDZ0H1H1Vertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwUED.so"; } }; /** @endcond */ } #endif /* HERWIG_UEDZ0H1H1Vertex_H */ herwig++-2.6.0.orig/Models/UED/UEDBase.h0000644000175000017500000002076711754474773020233 0ustar sylvestresylvestre// -*- C++ -*- // // UEDBase.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDBase_H #define HERWIG_UEDBase_H // // This is the declaration of the UEDBase class. // #include "Herwig++/Models/General/BSMModel.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" #include "UEDBase.fh" namespace Herwig { using namespace ThePEG; /** * This class serves as a base class for all UED models. It stores the * values of the inverse radius and the product \f$\Lambda R \f$ and has functions * to calculate the radiative corrections to the nth level KK excitations. * * To use this class for n > 1 simply inherit off it, calculate the necessary masses * using the provided functions for the new excitations and add the * appropriate vertices. * * @see \ref UEDBaseInterfaces "The interfaces" * defined for UEDBase. */ class UEDBase: public BSMModel { public: /** Typedef for ID-Mass pair. */ typedef pair IDMassPair; /** Typedef for unsigned int/double map to store Weinburg angles.*/ typedef map WAMap; public: /** * The default constructor. */ UEDBase(); /** @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: /** @name Public Access Functions.*/ //@{ /** * Return the compactification radius */ InvEnergy compactRadius() const { return 1./theInvRadius; } /** * Return the Weinburg mixing angle for any level. */ double sinThetaN(const unsigned int n) const; /** * Return the Weinburg mixing angle for \f$n = 1\f$ */ double sinThetaOne() const { return theSinThetaOne; } //@} protected: /** * Add a new ID,mass pair to the mass storage * @param elem The element to add in to storage */ void addMassElement(IDMassPair elem) { theMasses.push_back(elem); } /** * Add a new mixing angle to the storage * @param n The level * @param val The value */ void addMixingAngle(const unsigned int n, const double val) { theMixingAngles.insert(make_pair(n, val)); } private: /** @name Utility Functions for calculating masses. */ //@{ /** * Calculate the radiative corrections to the masses of the KK excitations * @param n The KK-level for which to calculate the masses. */ void calculateKKMasses(const unsigned int n); /** * Calculate the radiative corrections to the spin-0 and spin-1 * masses of the KK excitations * @param n The KK-level for which to calculate the masses. */ void bosonMasses(const unsigned int n); /** * Calculate the radiative corrections to the spin-1/2 * masses of the KK excitations. * @param n The KK-level for which to calculate the masses. */ void fermionMasses(const unsigned int n); /** * Reset the mass of the ParticleData object *@param id The id of the particles mass to reset *@param value The new mass */ void resetMass(long id, Energy value); /** * Calculate the Weinburg Mixing angle for the appropriate level. * @param n The KK-level for which to calculate the mixing angle. */ double calculateMixingAngle(const unsigned int n); //@} /** * Write out a spectrum file ordered in mass (name can be set by an interface). */ void writeSpectrum(); /** * A predicate for sorting the list of masses. */ static bool lowerMass(const pair & p1, const pair & p2) { return p1.second < p2.second; } protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initUEDBase; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDBase & operator=(const UEDBase &); private: /** * Whether to calculate the radiative corrections to the KK masses */ bool theRadCorr; /** * Store the radius of the compactified dimension. */ Energy theInvRadius; /** * The value of \f$\Lambda R \f$. */ double theLambdaR; /** * The boundary mass term for the Higgs. */ Energy theMbarH; /** * The values of \f$\sin\theta_N\f$ */ WAMap theMixingAngles; /** * Store \f$\sin\theta_1\f$ for faster access */ double theSinThetaOne; /** * Store the masses of the new particles */ vector theMasses; /** * The value of the vacuum expectation value of the higgs field. */ Energy theVeV; /** @name The level 1 UED vertices. */ //@{ /** * The \f$\bar{f}^{(1)}f^{(1)}Z^{(0)}\f$ */ AbstractFFVVertexPtr theF1F1Z0Vertex; /** * The \f$\bar{f}^{(1)}f^{(1)}g^{(0)}\f$ */ AbstractFFVVertexPtr theF1F1G0Vertex; /** * The \f$\bar{f}^{(1)}f^{(0)}g^{(1)}\f$ */ AbstractFFVVertexPtr theF1F0G1Vertex; /** * The \f$g^{(1)}g^{(1)}g\f$ vertex */ AbstractVVVVertexPtr theG1G1G0Vertex; /** * The \f$g\,g\,g^{(1)},g^{(1)}\f$ vertex */ AbstractVVVVVertexPtr theG0G0G1G1Vertex; /** * The \f$\bar{f}^{(1)}f^{(1)}\gamma\f$ */ AbstractFFVVertexPtr theF1F1P0Vertex; /** * The \f$\bar{f}^{(1)}f^{(1)}W\f$ */ AbstractFFVVertexPtr theF1F1W0Vertex; /** * The \f$\bar{f}^{(1)}f^{(0)}W^{(1)}\f$ */ AbstractFFVVertexPtr theF1F0W1Vertex; /** * The \f$\bar{f}^{(1)}f^{(0)}H^{(1)}\f$ */ AbstractFFSVertexPtr theF1F0H1Vertex; /** * The \f$ A^\mu_{(0)}H^+_{(1)}H-_{(1)}\f$ */ AbstractVSSVertexPtr theP0H1H1Vertex; /** * The \f$ Z^\mu_{(0)}H^+_{(1)}H-_{(1)}\f$ */ AbstractVSSVertexPtr theZ0H1H1Vertex; /** * The \f$ W^\pm_{\mu(0)}A_{(1)}H^\mp_{(1)}\f$ */ AbstractVSSVertexPtr theW0A1H1Vertex; /** * The \f$ Z^\mu_{\mu(0)}A_{(1)}h_{(1)}\f$ */ AbstractVSSVertexPtr theZ0A1h1Vertex; /** * The \f$W^{(1)}Z^{(1)}W_{(0)}\f$ vertex */ AbstractVVVVertexPtr theW0W1W1Vertex; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UEDBase. */ template <> struct BaseClassTrait { /** Typedef of the first base class of UEDBase. */ typedef Herwig::BSMModel NthBase; }; /** This template specialization informs ThePEG about the name of * the UEDBase class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::UEDBase"; } /** * The name of a file containing the dynamic library where the class * UEDBase is implemented. It may also include several, space-separated, * libraries if the class UEDBase depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwUED.so"; } }; /** @endcond */ } #endif /* HERWIG_UEDBase_H */ herwig++-2.6.0.orig/Models/UED/UEDF1F0G1Vertex.cc0000644000175000017500000000507711754474773021536 0ustar sylvestresylvestre// -*- C++ -*- // // UEDF1F0G1Vertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the UEDF1F0G1Vertex class. // #include "UEDF1F0G1Vertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace ThePEG::Helicity; using namespace Herwig; UEDF1F0G1Vertex::UEDF1F0G1Vertex() : theq2Last(ZERO), theCoupLast(0.) { orderInGs(1); orderInGem(0); } NoPIOClassDescription UEDF1F0G1Vertex::initUEDF1F0G1Vertex; // Definition of the static class description member. void UEDF1F0G1Vertex::Init() { static ClassDocumentation documentation ("This class implements the F^1-F^0-G^1 vertex."); } void UEDF1F0G1Vertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { long ifermN; if(part1->id() == 5100021) { if(abs(part2->id()) > 5100000) ifermN = part2->id(); else ifermN = part3->id(); } else if(part2->id() == 5100021) { if(abs(part1->id()) > 5100000) ifermN = part1->id(); else ifermN = part3->id(); } else if(part3->id() == 5100021) { if(abs(part2->id()) > 5100000) ifermN = part2->id(); else ifermN = part1->id(); } else throw HelicityLogicalError() << "UEDF1F0G1Vertex::setCoupling - " << "There is no KK gluon in this vertex!" << Exception::warning; if((abs(ifermN) >= 5100001 && abs(ifermN) <= 5100006) || (abs(ifermN) >= 6100001 && abs(ifermN) <= 6100006)) { if(q2 != theq2Last || theCoupLast == 0.) { theq2Last = q2; theCoupLast = -strongCoupling(q2); } norm(theCoupLast); int state = abs(ifermN)/1000000; if(state == 5) { left(1.); right(0.); } else { left(0.); right(1.); } } else throw HelicityLogicalError() << "UEDF1F0G1Vertex::setCoupling - " << "There is an unknown particle in this vertex! " << ifermN << Exception::warning; } void UEDF1F0G1Vertex::doinit() { long boson = 5100021; //QQ for(long i = 1; i < 7; ++i) { addToList(-i, i + 5100000, boson); addToList(-(i + 5100000), i, boson); addToList(-i, i + 6100000, boson); addToList(-(i + 6100000), i, boson); } FFVVertex::doinit(); } herwig++-2.6.0.orig/Models/UED/UEDF1F1W0Vertex.h0000644000175000017500000001144211754474773021411 0ustar sylvestresylvestre// -*- C++ -*- // // UEDF1F1W0Vertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDF1F1W0Vertex_H #define HERWIG_UEDF1F1W0Vertex_H // // This is the declaration of the UEDF1F1W0Vertex class. // #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "UEDBase.h" namespace Herwig { using namespace ThePEG; /** * This class implements the coupling of a pair of level-1 * fermions to the SM $W$ boson. * * @see \ref UEDF1F1W0VertexInterfaces "The interfaces" * defined for UEDF1F1W0Vertex. */ class UEDF1F1W0Vertex: public FFVVertex { public: /** * The default constructor. */ UEDF1F1W0Vertex(); 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(); /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initUEDF1F1W0Vertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDF1F1W0Vertex & operator=(const UEDF1F1W0Vertex &); private: /** * The value of the inverse radius */ InvEnergy theRadius; /** * The scale at which the coupling was last evaluated. */ Energy2 theQ2Last; /** * The value of the coupling when it was last evaluated. */ Complex theCoupLast; /** * The value of the left coupling when it was last evaluated. */ Complex theLeftLast; /** * The PDG code of the first fermion for which the vertex was last evaluated. */ long thefermALast; /** * The PDG code of the second fermion for which the vertex was last evaluated. */ long thefermBLast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UEDF1F1W0Vertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of UEDF1F1W0Vertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the UEDF1F1W0Vertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::UEDF1F1W0Vertex"; } /** * The name of a file containing the dynamic library where the class * UEDF1F1W0Vertex is implemented. It may also include several, space-separated, * libraries if the class UEDF1F1W0Vertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwUED.so"; } }; /** @endcond */ } #endif /* HERWIG_UEDF1F1W0Vertex_H */ herwig++-2.6.0.orig/Models/UED/UEDF1F1G0Vertex.h0000644000175000017500000000757611754474773021406 0ustar sylvestresylvestre// -*- C++ -*- // // UEDF1F1G0Vertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_UEDF1F1G0Vertex_H #define HERWIG_UEDF1F1G0Vertex_H // // This is the declaration of the UEDF1F1G0Vertex class. // #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "UEDBase.h" namespace Herwig { using namespace ThePEG; /** * This is the implementation of the \f$\bar{f}^{1}f^{(1)}g\f$ vertex * * @see \ref UEDF1F1G0VertexInterfaces "The interfaces" * defined for UEDF1F1G0Vertex. */ class UEDF1F1G0Vertex: public FFVVertex { public: /** * The default constructor. */ UEDF1F1G0Vertex(); /** * 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(); /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initUEDF1F1G0Vertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEDF1F1G0Vertex & operator=(const UEDF1F1G0Vertex &); private: /** * The energy at which the coupling was last evaluated */ Energy2 theq2Last; /** * The value of the coupling when it was last evaluated */ Complex theCoupLast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UEDF1F1G0Vertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of UEDF1F1G0Vertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the UEDF1F1G0Vertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::UEDF1F1G0Vertex"; } /** * The name of a file containing the dynamic library where the class * UEDF1F1G0Vertex is implemented. It may also include several, space-separated, * libraries if the class UEDF1F1G0Vertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwUED.so"; } }; /** @endcond */ } #endif /* HERWIG_UEDF1F1G0Vertex_H */ herwig++-2.6.0.orig/Models/Makefile.in0000644000175000017500000004632611756461700020265 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Models DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = RSModel StandardModel General Susy UED Zprime \ Transplanckian ADD Leptoquarks Sextet TTbAsymm all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Models/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Models/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done cscopelist-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \ cscopelist-recursive ctags-recursive install-am install-strip \ tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ cscopelist cscopelist-recursive ctags ctags-recursive \ distclean distclean-generic distclean-libtool distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-recursive uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Models/StandardModel/0000755000175000017500000000000011756464205020731 5ustar sylvestresylvestreherwig++-2.6.0.orig/Models/StandardModel/SMFFWVertex.h0000644000175000017500000000727311754474773023204 0ustar sylvestresylvestre// -*- C++ -*- // // SMFFWVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMFFWVertex_H #define HERWIG_SMFFWVertex_H // // This is the declaration of the SMFFWVertex class. #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the Standard model coupling * of the W to the fermions. * * @see FFVVertex * @see VertexBase */ class SMFFWVertex: public FFVVertex { public: /** * Default constructor. */ SMFFWVertex(); 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initSMFFWVertex; /** * Private and non-existent assignment operator. */ SMFFWVertex & operator=(const SMFFWVertex &); private: /** * Storage of the couplings. */ //@{ /** * The elements of the CKM matrix. */ vector > _ckm; /** * The last value of the electroweak coupling calculated. */ Complex _couplast; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 _q2last; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SMFFWVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of SMFFWVertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::SMFFWVertex"; } }; /** @endcond */ } #endif /* HERWIG_SMFFWVertex_H */ herwig++-2.6.0.orig/Models/StandardModel/SMHHHVertex.h0000644000175000017500000000723311754474773023165 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_SMHHHVertex_H #define HERWIG_SMHHHVertex_H // // This is the declaration of the SMHHHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/SSSVertex.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * Here is the documentation of the SMHHHVertex class. * * @see \ref SMHHHVertexInterfaces "The interfaces" * defined for SMHHHVertex. */ class SMHHHVertex: public SSSVertex { public: /** * The default constructor. */ SMHHHVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSMHHHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SMHHHVertex & operator=(const SMHHHVertex &); private: /** * ratio of masses */ Energy ratio_; /** * The last value of the electroweak coupling calculated. */ Complex couplast_; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 q2last_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SMHHHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SMHHHVertex. */ typedef Helicity::SSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SMHHHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SMHHHVertex"; } }; /** @endcond */ } #endif /* HERWIG_SMHHHVertex_H */ herwig++-2.6.0.orig/Models/StandardModel/SMFFZVertex.cc0000644000175000017500000000507311754474773023341 0ustar sylvestresylvestre// -*- C++ -*- // // SMFFZVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMFFZVertex class. // #include "SMFFZVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; void SMFFZVertex::persistentOutput(PersistentOStream & os) const { os << _gl << _gr; } void SMFFZVertex::persistentInput(PersistentIStream & is, int) { is >> _gl >> _gr; } ClassDescription SMFFZVertex::initSMFFZVertex; // Definition of the static class description member. void SMFFZVertex::Init() { static ClassDocumentation documentation ("The SMFFZVertex class is the implementation of" "the coupling of the Z boson to the Standard Model fermions"); } void SMFFZVertex::setCoupling(Energy2 q2,tcPDPtr aa,tcPDPtr,tcPDPtr) { // first the overall normalisation if(q2!=_q2last||_couplast==0.) { _couplast = -electroMagneticCoupling(q2); _q2last=q2; } norm(_couplast); // the left and right couplings int iferm=abs(aa->id()); if((iferm>=1 && iferm<=6)||(iferm>=11 &&iferm<=16)) { left(_gl[iferm]); right(_gr[iferm]); } else throw HelicityConsistencyError() << "SMFFZVertex::setCoupling " << "Unknown particle in Z vertex" << Exception::runerror; } SMFFZVertex::SMFFZVertex() : _gl(17,0.0), _gr(17,0.0), _couplast(0.0), _q2last(ZERO) { orderInGem(1); orderInGs(0); } void SMFFZVertex::doinit() { // PDG codes for the particles // the quarks for(int ix=1;ix<7;++ix) { addToList(-ix, ix, 23); } // the leptons for(int ix=11;ix<17;++ix) { addToList(-ix, ix, 23); } tcSMPtr sm = generator()->standardModel(); double sw2 = sin2ThetaW(); double fact = 0.25/sqrt(sw2*(1.-sw2)); for(int ix=1;ix<4;++ix) { _gl[2*ix-1] = fact*(sm->vd() + sm->ad() ); _gl[2*ix ] = fact*(sm->vu() + sm->au() ); _gl[2*ix+9 ] = fact*(sm->ve() + sm->ae() ); _gl[2*ix+10] = fact*(sm->vnu() + sm->anu()); _gr[2*ix-1] = fact*(sm->vd() - sm->ad() ); _gr[2*ix ] = fact*(sm->vu() - sm->au() ); _gr[2*ix+9 ] = fact*(sm->ve() - sm->ae() ); _gr[2*ix+10] = fact*(sm->vnu() - sm->anu()); } FFVVertex::doinit(); } herwig++-2.6.0.orig/Models/StandardModel/StandardModel.h0000644000175000017500000002367511754474773023651 0ustar sylvestresylvestre// -*- C++ -*- // // StandardModel.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_StandardModel_H #define HERWIG_StandardModel_H // // This is the declaration of the StandardModel class. #include "ThePEG/StandardModel/StandardModelBase.h" #include "Herwig++/Models/StandardModel/RunningMassBase.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractSSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractSSSSVertex.h" #include "Herwig++/Models/General/ModelGenerator.fh" #include "StandardModel.fh" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** \ingroup Models * * This is the Herwig++ StandardModel class which inherits from ThePEG * Standard Model class and implements additional Standard Model couplings, * access to vertices for helicity amplitude calculations etc. * * @see StandardModelBase */ class StandardModel: public StandardModelBase { /** * Some typedefs for the pointers. */ //@{ /** * Pointer to the RunningMassBase object */ typedef Ptr::pointer runPtr; /** * Transient pointer to the RunningMassBase object */ typedef Ptr::transient_pointer trunPtr; //@} public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor */ StandardModel(); /** * Copy-constructor. */ StandardModel(const StandardModel &); /** * Destructor */ virtual ~StandardModel(); //@} 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** * The left and right couplings of the Z^0 including sin and cos theta_W. */ //@{ /** * The left-handed coupling of a neutrino */ double lnu() const { return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(vnu()+anu()); } /** * The left-handed coupling of a charged lepton. */ double le() const { return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(ve()+ae()); } /** * The left-handed coupling of an up type quark. */ double lu() const { return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(vu()+au()); } /** * The left-handed coupling of a down type quark. */ double ld() const { return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(vd()+ad()); } /** * The right-handed coupling of a neutrino */ double rnu() const { return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(vnu()-anu()); } /** * The right-handed coupling of a charged lepton. */ double re() const { return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(ve()-ae()); } /** * The right-handed coupling of an up type quark. */ double ru() const { return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(vu()-au()); } /** * The right-handed coupling of a down type quark. */ double rd() const { return 0.25/sqrt(sin2ThetaW()*(1.-sin2ThetaW()))*(vd()-ad()); } //@} /** * Pointers to the objects handling the vertices. */ //@{ /** * Pointer to the fermion-fermion-Z vertex */ virtual tAbstractFFVVertexPtr vertexFFZ() const { return FFZVertex_; } /** * Pointer to the fermion-fermion-photon vertex */ virtual tAbstractFFVVertexPtr vertexFFP() const { return FFPVertex_; } /** * Pointer to the fermion-fermion-gluon vertex */ virtual tAbstractFFVVertexPtr vertexFFG() const { return FFGVertex_; } /** * Pointer to the fermion-fermion-W vertex */ virtual tAbstractFFVVertexPtr vertexFFW() const { return FFWVertex_; } /** * Pointer to the fermion-fermion-Higgs vertex */ virtual tAbstractFFSVertexPtr vertexFFH() const { return FFHVertex_; } /** * Pointer to the triple gluon vertex */ virtual tAbstractVVVVertexPtr vertexGGG() const { return GGGVertex_; } /** * Pointer to the triple electroweak gauge boson vertex. */ virtual tAbstractVVVVertexPtr vertexWWW() const { return WWWVertex_; } /** * Pointer to the two electroweak gauge boson Higgs vertex. */ virtual tAbstractVVSVertexPtr vertexWWH() const { return WWHVertex_; } /** * Pointer to the quartic electroweak gauge boson vertex. */ virtual tAbstractVVVVVertexPtr vertexWWWW() const { return WWWWVertex_; } /** * Pointer to the quartic gluon vertex */ virtual tAbstractVVVVVertexPtr vertexGGGG() const { return GGGGVertex_; } /** * Pointer to the quartic gluon vertex */ virtual tAbstractVVSVertexPtr vertexHGG() const { return HGGVertex_; } /** * Pointer to the quartic gluon vertex */ virtual tAbstractVVSVertexPtr vertexHPP() const { return HPPVertex_; } /** * Pointer to the triple Higgs vertex */ virtual tAbstractSSSVertexPtr vertexHHH() const { return HHHVertex_; } /** * Pointer to the WWHH vertex */ virtual tAbstractVVSSVertexPtr vertexWWHH() const { return WWHHVertex_; } /** * Total number of vertices */ unsigned int numberOfVertices() const { return vertexList_.size(); } /** * Access to a vertex from the list */ tVertexBasePtr vertex(unsigned int ix) const { return vertexList_[ix]; } //@} /** * Return the running mass for a given scale \f$q^2\f$ and particle type. * @param scale The scale \f$q^2\f$. * @param part The ParticleData object for the particle */ Energy mass(Energy2 scale,tcPDPtr part) const { return runningMass_->value(scale,part); } /** * Return a pointer to the object handling the running mass. */ trunPtr massPtr() const { return runningMass_; } 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: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} protected: /** * Add a vertex to the list */ void addVertex(VertexBasePtr in) { vertexList_.push_back(in); } private: /** * Describe a concrete class with persistent data. */ static ClassDescription initStandardModel; /** * Private and non-existent assignment operator. */ StandardModel & operator=(const StandardModel &); private: /** * Pointers to the vertices for Standard Model helicity amplitude * calculations. */ //@{ /** * Pointer to the fermion-fermion-Z vertex */ AbstractFFVVertexPtr FFZVertex_; /** * Pointer to the fermion-fermion-photon vertex */ AbstractFFVVertexPtr FFPVertex_; /** * Pointer to the fermion-fermion-gluon vertex */ AbstractFFVVertexPtr FFGVertex_; /** * Pointer to the fermion-fermion-W vertex */ AbstractFFVVertexPtr FFWVertex_; /** * Pointer to the fermion-fermion-Higgs vertex */ AbstractFFSVertexPtr FFHVertex_; /** * Pointer to the two electroweak gauge boson Higgs vertex. */ AbstractVVSVertexPtr WWHVertex_; /** * Pointer to the triple gluon vertex */ AbstractVVVVertexPtr GGGVertex_; /** * Pointer to the triple electroweak gauge boson vertex. */ AbstractVVVVertexPtr WWWVertex_; /** * Pointer to the quartic gluon vertex */ AbstractVVVVVertexPtr GGGGVertex_; /** * Pointer to the quartic electroweak gauge boson vertex. */ AbstractVVVVVertexPtr WWWWVertex_; /** * Pointer to higgs-gluon-gluon vertex */ AbstractVVSVertexPtr HGGVertex_; /** * Pointer to higgs-gamma-gamma vertex */ AbstractVVSVertexPtr HPPVertex_; /** * Pointer to triple Higgs vertex */ AbstractSSSVertexPtr HHHVertex_; /** * Pointer to WWHH vertex */ AbstractVVSSVertexPtr WWHHVertex_; /** * Full list of vertices as a vector to allow searching */ vector vertexList_; //@} /** * The running mass. */ runPtr runningMass_; /** * Pointer to ModelGenerator Class */ ModelGeneratorPtr modelGenerator_; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of StandardModel. */ template <> struct BaseClassTrait { /** Typedef of the base class of StandardModel. */ typedef StandardModelBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::StandardModel"; } }; /** @endcond */ } #endif /* HERWIG_StandardModel_H */ herwig++-2.6.0.orig/Models/StandardModel/StandardModel.fh0000644000175000017500000000050411754474773024001 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the HwStandardModel class. // #ifndef HERWIG_HwStandardModel_FH #define HERWIG_HwStandardModel_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class StandardModel; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::StandardModel,HwSMPtr); } #endif herwig++-2.6.0.orig/Models/StandardModel/SMWWHHVertex.h0000644000175000017500000000737411754474773023341 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_SMWWHHVertex_H #define HERWIG_SMWWHHVertex_H // // This is the declaration of the SMWWHHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VVSSVertex.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the SMWWHHVertex class. * * @see \ref SMWWHHVertexInterfaces "The interfaces" * defined for SMWWHHVertex. */ class SMWWHHVertex: public Helicity::VVSSVertex { public: /** * The default constructor. */ SMWWHHVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the fourth particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3, tcPDPtr part4); /** @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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSMWWHHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SMWWHHVertex & operator=(const SMWWHHVertex &); private: /** * ratio of masses */ double ratio_; /** * The last value of the electroweak coupling calculated. */ Complex couplast_; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 q2last_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SMWWHHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SMWWHHVertex. */ typedef Helicity::VVSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SMWWHHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SMWWHHVertex"; } }; /** @endcond */ } #endif /* HERWIG_SMWWHHVertex_H */ herwig++-2.6.0.orig/Models/StandardModel/SMGGGVertex.cc0000644000175000017500000000260611754474773023317 0ustar sylvestresylvestre// -*- C++ -*- // // SMGGGVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMGGGVertex class. // #include "SMGGGVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; SMGGGVertex::SMGGGVertex() : _couplast(0.), _q2last(0.*GeV2) { orderInGs(1); orderInGem(0); } void SMGGGVertex::doinit() { // the particles addToList(21,21,21); VVVVertex::doinit(); } NoPIOClassDescription SMGGGVertex::initSMGGGVertex; // Definition of the static class description member. void SMGGGVertex::Init() { static ClassDocumentation documentation ("The SMGGGVertex class is the implementation" " of the Standard Model triple gluon vertex."); } // couplings for the GGG vertex void SMGGGVertex::setCoupling(Energy2 q2,tcPDPtr,tcPDPtr, tcPDPtr) { // first the overall normalisation if(q2!=_q2last||_couplast==0.) { _couplast = strongCoupling(q2); _q2last=q2; } norm(_couplast); } herwig++-2.6.0.orig/Models/StandardModel/Makefile.in0000644000175000017500000005050511756461700023000 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Models/StandardModel DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwStandardModel_la_LIBADD = am_libHwStandardModel_la_OBJECTS = StandardModel.lo RunningMassBase.lo \ RunningMass.lo StandardCKM.lo O2AlphaS.lo AlphaEM.lo \ SMFFGVertex.lo SMFFHVertex.lo SMFFPVertex.lo SMFFWVertex.lo \ SMFFZVertex.lo SMGGGGVertex.lo SMGGGVertex.lo SMWWHVertex.lo \ SMWWWVertex.lo SMWWWWVertex.lo SMHGGVertex.lo SMHPPVertex.lo \ SMHHHVertex.lo SMWWHHVertex.lo libHwStandardModel_la_OBJECTS = $(am_libHwStandardModel_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwStandardModel_la_SOURCES) DIST_SOURCES = $(libHwStandardModel_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwStandardModel.la libHwStandardModel_la_SOURCES = \ StandardModel.fh StandardModel.h StandardModel.cc\ RunningMassBase.h RunningMassBase.cc \ RunningMass.h RunningMass.cc\ StandardCKM.h StandardCKM.cc \ O2AlphaS.h O2AlphaS.cc \ AlphaEM.h AlphaEM.cc \ SMFFGVertex.cc SMFFGVertex.h \ SMFFHVertex.cc SMFFHVertex.h \ SMFFPVertex.cc SMFFPVertex.h \ SMFFWVertex.cc SMFFWVertex.h \ SMFFZVertex.cc SMFFZVertex.h \ SMGGGGVertex.cc SMGGGGVertex.h \ SMGGGVertex.cc SMGGGVertex.h \ SMWWHVertex.cc SMWWHVertex.h \ SMWWWVertex.cc SMWWWVertex.h \ SMWWWWVertex.cc SMWWWWVertex.h \ SMHGGVertex.cc SMHGGVertex.h \ SMHPPVertex.cc SMHPPVertex.h\ SMHHHVertex.cc SMHHHVertex.h \ SMWWHHVertex.cc SMWWHHVertex.h all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Models/StandardModel/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Models/StandardModel/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwStandardModel.la: $(libHwStandardModel_la_OBJECTS) $(libHwStandardModel_la_DEPENDENCIES) $(EXTRA_libHwStandardModel_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwStandardModel_la_OBJECTS) $(libHwStandardModel_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AlphaEM.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/O2AlphaS.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RunningMass.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RunningMassBase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMFFGVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMFFHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMFFPVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMFFWVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMFFZVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMGGGGVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMGGGVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMHGGVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMHHHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMHPPVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMWWHHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMWWHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMWWWVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMWWWWVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StandardCKM.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StandardModel.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Models/StandardModel/SMGGGGVertex.cc0000644000175000017500000000274711754474773023434 0ustar sylvestresylvestre// -*- C++ -*- // // SMGGGGVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMGGGGVertex class. // #include "SMGGGGVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; SMGGGGVertex::SMGGGGVertex() : _couplast(0.),_q2last() { orderInGs(2); orderInGem(0); } void SMGGGGVertex::doinit() { // particles addToList(21,21,21,21); VVVVVertex::doinit(); } NoPIOClassDescription SMGGGGVertex::initSMGGGGVertex; // Definition of the static class description member. void SMGGGGVertex::Init() { static ClassDocumentation documentation ("The SMGGGGVertex class is the implementation of the" " Standard Model quartic gluon coupling"); } // couplings for the GGGG vertex void SMGGGGVertex::setCoupling(Energy2 q2,tcPDPtr,tcPDPtr, tcPDPtr,tcPDPtr) { // set the order and type setType(1); setOrder(0,1,2,3); // first the overall normalisation if(q2!=_q2last||_couplast==0.) { _couplast = sqr(strongCoupling(q2)); _q2last=q2; } norm(_couplast); } herwig++-2.6.0.orig/Models/StandardModel/SMFFZVertex.h0000644000175000017500000000752511754474773023207 0ustar sylvestresylvestre// -*- C++ -*- // // SMFFZVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMFFZVertex_H #define HERWIG_SMFFZVertex_H // // This is the declaration of the SMFFZVertex class. // #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "ThePEG/StandardModel/StandardModelBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the Standard Model * fermion-antifermion Z vertex. * * @see FFVVertex * @see VertexBase */ class SMFFZVertex: public FFVVertex { public: /** * Default constructor. */ SMFFZVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initSMFFZVertex; /** * Private and non-existent assignment operator. */ SMFFZVertex & operator=(const SMFFZVertex &); private: /** * Storage of the couplings. */ //@{ /** * The left couplings of the Standard Model fermions. */ vector _gl; /** * The right couplings of the Standard Model fermions. */ vector _gr; /** * The last value of the electroweak coupling calculated. */ Complex _couplast; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 _q2last; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SMFFZVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of SMFFZVertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::SMFFZVertex"; } }; /** @endcond */ } #endif /* HERWIG_SMFFZVertex_H */ herwig++-2.6.0.orig/Models/StandardModel/StandardCKM.h0000644000175000017500000000714111754474773023211 0ustar sylvestresylvestre// -*- C++ -*- // // StandardCKM.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_StandardCKM_H #define HERWIG_StandardCKM_H // // This is the declaration of the StandardCKM class. // #include #include // #include "StandardCKM.fh" // #include "StandardCKM.xh" namespace Herwig { using namespace ThePEG; /** \ingroup Models * * StandardCKM inherits from CKMBase and implements the standard * parameterization of the CKM matrix in terms of three angles and * a phase. It provides access to the unsquared matrix from helicity * amplitude calculations. * * @see CKMBase */ class StandardCKM: public CKMBase { public: /** * Default constructor. */ StandardCKM() : theta12(0.2262), theta13(0.0037), theta23(0.0413), delta(1.05) {} /** * Return the matrix of squared CKM matrix elements. The returned * matrix should be for \a nf families. */ virtual vector< vector > getMatrix(unsigned int nf) const; /** * Return the matrix of CKM matrix elements. The returned * matrix should be for \a nf families. */ virtual vector< vector > getUnsquaredMatrix(unsigned int nf) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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; //@} private: /** * The \f$\theta_{12}\f$ angle. */ double theta12; /** * The \f$\theta_{13}\f$ angle. */ double theta13; /** * The \f$\theta_{23}\f$ angle. */ double theta23; /** * The \f$\delta\f$ angle describing the phase. */ double delta; private: /** * Describe a concrete class with persistent data. */ static ClassDescription initStandardCKM; /** * Private and non-existent assignment operator. */ StandardCKM & operator=(const StandardCKM &); }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the base classes * of StandardCKM. */ template <> struct BaseClassTrait { /** Typedef of the first base class of StandardCKM. */ typedef CKMBase NthBase; }; /** This template specialization informs ThePEG about the name of the * StandardCKM class and the shared object where it is * defined. */ template <> struct ClassTraits: public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::StandardCKM"; } }; /** @endcond */ } #endif /* HERWIG_StandardCKM_H */ herwig++-2.6.0.orig/Models/StandardModel/SMFFGVertex.h0000644000175000017500000000634611754474773023164 0ustar sylvestresylvestre// -*- C++ -*- // // SMFFGVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMFFGVertex_H #define HERWIG_SMFFGVertex_H // // This is the declaration of the SMFFGVertex class. // #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "ThePEG/StandardModel/StandardModelBase.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the Standard Model quark-antiquark gluon vertex. * * @see FFVVertex * @see VertexBase */ class SMFFGVertex: public FFVVertex { public: /** * Default constructor. */ SMFFGVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); public: /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static NoPIOClassDescription initSMFFGVertex; /** * Private and non-existent assignment operator. */ SMFFGVertex & operator=(const SMFFGVertex &); private: /** * Storage of the couplings. */ //@{ /** * The last value of the strong coupling calculated. */ Complex _couplast; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 _q2last; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SMFFGVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of SMFFGVertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::SMFFGVertex"; } }; /** @endcond */ } #endif /* HERWIG_SMFFGVertex_H */ herwig++-2.6.0.orig/Models/StandardModel/SMHPPVertex.cc0000644000175000017500000002111111754474773023332 0ustar sylvestresylvestre// -*- C++ -*- // // SMHPPVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMHPPVertex class. // #include "SMHPPVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/Looptools/clooptools.h" using namespace Herwig; using namespace ThePEG; void SMHPPVertex::persistentOutput(PersistentOStream & os) const { os << _theSM << ounit(_mw,GeV) << massopt << _minloop << _maxloop << _CoefRepresentation; } void SMHPPVertex::persistentInput(PersistentIStream & is, int) { is >> _theSM >> iunit(_mw, GeV) >> massopt >> _minloop >> _maxloop >> _CoefRepresentation; } ClassDescription SMHPPVertex::initSMHPPVertex; // Definition of the static class description member. void SMHPPVertex::Init() { static ClassDocumentation documentation ("This class implements the h0->gamma,gamma vertex."); static Parameter interfaceMinQuarkInLoop ("MinQuarkInLoop", "The minimum flavour of the quarks to include in the loops", &SMHPPVertex::_minloop, 6, 1, 6, false, false, Interface::limited); static Parameter interfaceMaxQuarkInLoop ("MaxQuarkInLoop", "The maximum flavour of the quarks to include in the loops", &SMHPPVertex::_maxloop, 6, 1, 6, false, false, Interface::limited); static Switch interfaceMassOption ("LoopMassScheme", "Switch for the treatment of the masses in the loops ", &SMHPPVertex::massopt, 2, false, false); static SwitchOption interfaceHeavyMass (interfaceMassOption, "PoleMasses", "The loop is calculcated with the pole quark masses", 1); static SwitchOption interfaceNormalMass (interfaceMassOption, "RunningMasses", "running quark masses are taken in the loop", 2); static Switch interfaceScheme ("CoefficientScheme", "Which scheme for the tensor coefficients is applied", &SMHPPVertex::_CoefRepresentation, 1, false, false); static SwitchOption interfaceSchemeSimplified (interfaceScheme, "Simplified", "Represection suitable for the simplified the H-g-g and H-gamma-gamma vertices", 1); static SwitchOption interfaceSchemeGeneral (interfaceScheme, "General", "Represection suitable for the Passarino-Veltman tensor reduction scheme", 2); } void SMHPPVertex::setCoupling(Energy2 q2, tcPDPtr part2, tcPDPtr part3, tcPDPtr part1) { assert( part1->id() == ParticleID::h0 && part2->id() == ParticleID::gamma && part3->id() == ParticleID::gamma ); int Qminloop = _minloop; int Qmaxloop = _maxloop; if (_maxloop < _minloop) { Qmaxloop=_minloop; Qminloop=_maxloop; } switch (_CoefRepresentation) { case 1: { if(q2 != _q2last||_couplast==0.) { double g = weakCoupling(q2); double e2 = sqr(electroMagneticCoupling(q2)); _couplast = UnitRemoval::E * e2 * g / 8. / _mw/ sqr(Constants::pi); _q2last = q2; } norm(_couplast); Complex loop(0.); // quark loops for ( int i = Qminloop; i <= Qmaxloop; ++i ) { tcPDPtr qrk = getParticleData(i); Energy mass = (2 == massopt) ? _theSM->mass(q2,qrk) : qrk->mass(); Charge charge = qrk->charge(); loop += 3.*sqr(charge/ThePEG::Units::eplus) * Af(sqr(mass)/q2); } // lepton loops int Lminloop = 3; // still fixed value int Lmaxloop = 3; // still fixed value for (int i = Lminloop; i <= Lmaxloop; ++i) { tcPDPtr lpt = getParticleData(9 + 2*i); Energy mass = (2 == massopt) ? _theSM->mass(q2,lpt) : lpt->mass(); Charge charge = lpt->charge(); loop += sqr(charge/ThePEG::Units::eplus) * Af(sqr(mass)/q2); } // W loop loop += Aw(sqr(_mw)/q2); a00(loop); a11(0.0); a12(0.0); a21(-loop); a22(0.0); aEp(0.0); break; } case 2: { if(q2 != _q2last||_couplast==0.) { Looptools::clearcache(); double e = electroMagneticCoupling(q2); _couplast = pow(e,3)/sqrt(sin2ThetaW()); _q2last = q2; } norm(_couplast); // quarks int delta = Qmaxloop - Qminloop + 1; type.resize(delta,PDT::SpinUnknown); masses.resize(delta,ZERO); for (int i = 0; i < delta; ++i) { tcPDPtr q = getParticleData(_minloop+i); type[i] = PDT::Spin1Half; masses[i] = (2 == massopt) ? _theSM->mass(q2,q) : q->mass(); double copl = -masses[i]*3.*sqr(q->iCharge()/3.)/_mw/2.; couplings.push_back(make_pair(copl, copl)); } // tau type.push_back(PDT::Spin1Half); tcPDPtr tau = getParticleData(ParticleID::tauminus); masses.push_back(_theSM->mass(q2,tau)); double copl = -masses.back()*sqr(tau->iCharge()/3.)/_mw/2.; couplings.push_back(make_pair(copl, copl)); // W type.push_back(PDT::Spin1); masses.push_back(_mw); couplings.push_back(make_pair(UnitRemoval::InvE*_mw, UnitRemoval::InvE*_mw)); setNParticles(delta+2); VVSLoopVertex::setCoupling(q2, part1, part2, part3); break; } } } Complex SMHPPVertex::Af(const double tau) const { return tau*(4. - W2(tau)*(1. - 4.*tau)); } Complex SMHPPVertex::Aw(const double tau) const { return 0.5*(-3.*W2(tau)*tau*(4.*tau - 2.) - 12.*tau - 2.); } Complex SMHPPVertex::W2(double lambda) const { double pi = Constants::pi; if (0.0 == lambda) return 0.0; if (lambda < 0.0) return 4.*sqr(asinh(0.5*sqrt(-1./lambda))); double root(0.5*sqrt(1./lambda)); Complex ac(0.); // formulae from NPB297,221 if(root < 1.) { ac = -sqr(asin(root)); } else { double ex = acosh(root); ac = sqr(ex) - 0.25*sqr(pi) - pi*ex*Complex(0.,1.); } return 4.*ac; } SMHPPVertex::SMHPPVertex() :_couplast(0.),_q2last(),_mw(),massopt(1), _minloop(6),_maxloop(6),_CoefRepresentation(1) { orderInGs(0); orderInGem(3); } // functions for loops for testing // namespace { // Complex F0(double tau) { // Complex ft; // if(tau>=1.) // ft = sqr(asin(1./sqrt(tau))); // else { // double etap = 1.+sqrt(1.-tau); // double etam = 1.-sqrt(1.-tau); // ft = -0.25*sqr(log(etap/etam)-Constants::pi*Complex(0.,1.)); // } // return tau*(1.-tau*ft); // } // Complex FHalf(double tau,double eta) { // Complex ft; // if(tau>=1.) // ft = sqr(asin(1./sqrt(tau))); // else { // double etap = 1.+sqrt(1.-tau); // double etam = 1.-sqrt(1.-tau); // ft = -0.25*sqr(log(etap/etam)-Constants::pi*Complex(0.,1.)); // } // return -2.*tau*(eta+(1.-tau*eta)*ft); // } // Complex F1(double tau) { // Complex ft; // if(tau>=1.) // ft = sqr(asin(1./sqrt(tau))); // else { // double etap = 1.+sqrt(1.-tau); // double etam = 1.-sqrt(1.-tau); // ft = -0.25*sqr(log(etap/etam)-Constants::pi*Complex(0.,1.)); // } // return 2.+3.*tau+3.*tau*(2.-tau)*ft; // } // } void SMHPPVertex::doinit() { //PDG codes for particles at vertices addToList(22,22,25); _theSM = dynamic_ptr_cast(generator()->standardModel()); if( !_theSM ) throw InitException() << "SMHGGVertex::doinit() - The pointer to the SM object is null." << Exception::abortnow; _mw = getParticleData(ThePEG::ParticleID::Wplus)->mass(); VVSLoopVertex::doinit(); // // code to test the partial width // Energy mh = getParticleData(25)->mass(); // Complex I(0.); // for(long ix=int(_minloop);ix<=int(_maxloop);++ix) { // tcPDPtr qrk = getParticleData(ix); // Energy mt = (2 == massopt) ? _theSM->mass(sqr(mh),qrk) : qrk->mass(); // double tau = sqr(2.*mt/mh); // I += 3.*sqr(double(qrk->iCharge())/3.)*FHalf(tau,1.); // cerr << "testing half " << FHalf(tau,1) << " " << Af(0.25*tau) << "\n"; // } // for(long ix=15;ix<=15;++ix) { // tcPDPtr qrk = getParticleData(ix); // Energy mt = (2 == massopt) ? _theSM->mass(sqr(mh),qrk) : qrk->mass(); // double tau = sqr(2.*mt/mh); // I += sqr(double(qrk->iCharge())/3.)*FHalf(tau,1.); // } // I += F1(sqr(2.*_mw/mh)); // Energy width = sqr(weakCoupling(sqr(mh))*sqr(electroMagneticCoupling(sqr(mh)))) // /1024./pow(Constants::pi,5)/16.*sqr(mh/_mw)*mh*std::norm(I); // cerr << "testing anal " << width/GeV << "\n"; Looptools::ltexi(); } herwig++-2.6.0.orig/Models/StandardModel/SMWWWWVertex.cc0000644000175000017500000001040411754474773023521 0ustar sylvestresylvestre// -*- C++ -*- // // SMWWWWVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMWWWWVertex class. // #include "SMWWWWVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; SMWWWWVertex::SMWWWWVertex() : _couplast(0.0), _q2last(sqr(Constants::MaxEnergy)), _vfact(4,0.0), _sw2(0.), _cw2(0.) { orderInGem(2); orderInGs(0); } void SMWWWWVertex::doinit() { // particles addToList(24, -24, 24, -24); addToList(23, 24, 23, -24); addToList(22, 24, 22, -24); addToList(22, 24, 23, -24); VVVVVertex::doinit(); // couplings _sw2 = sin2ThetaW(); _cw2 = 1.-_sw2; double sw = sqrt(_sw2); double cw = sqrt(_cw2); _vfact[0] = -1./_sw2; _vfact[1] = _cw2/_sw2; _vfact[2] = 1.; _vfact[3] = cw/sw; // pointer for intermediate particles _gamma = getParticleData(ThePEG::ParticleID::gamma); _Z0 = getParticleData(ThePEG::ParticleID::Z0); _wplus = getParticleData(ThePEG::ParticleID::Wplus); _wminus = getParticleData(ThePEG::ParticleID::Wminus); } void SMWWWWVertex::persistentOutput(PersistentOStream & os) const { os << _gamma << _Z0 << _wplus << _wminus << _vfact << _sw2 << _cw2; } void SMWWWWVertex::persistentInput(PersistentIStream & is, int) { is >> _gamma >> _Z0 >> _wplus >> _wminus >> _vfact >> _sw2 >> _cw2; } ClassDescriptionSMWWWWVertex::initSMWWWWVertex; // Definition of the static class description member. void SMWWWWVertex::Init() { static ClassDocumentation documentation ("The SMWWWWVertex class is the implementation of the" " Standard Model quartic electroweka gauge boson coupling."); } // couplings for the WWWW vertex void SMWWWWVertex::setCoupling(Energy2 q2,tcPDPtr a,tcPDPtr b, tcPDPtr c,tcPDPtr d) { // id's of the particles long id[4]={a->id(),b->id(),c->id(),d->id()}; // order the particles int ngamma(0),nz(0); int iorder[4]; for(int ix=0;ix<4;++ix) { if (id[ix]==22) ++ngamma; else if (id[ix]==23) ++nz; } // if photons or Z's if(ngamma!=0 || nz!=0) { int iy=0; // put the photons first for(int ix=0;iyid()); else if(iorder[0]==1) ida = abs(b->id()); else if(iorder[0]==2) ida = abs(c->id()); else if(iorder[0]==3) ida = abs(d->id()); if(iorder[1]==0) idb = abs(a->id()); else if(iorder[1]==1) idb = abs(b->id()); else if(iorder[1]==2) idb = abs(c->id()); else if(iorder[1]==3) idb = abs(d->id()); // WWWW coupling if(ida==24) norm(_vfact[0]*_couplast); // ZZWW coupling else if(ida==23&&idb==23) norm(_vfact[1]*_couplast); // gamma gamma WW coupling else if(ida==22&&idb==22) norm(_couplast); // gamma Z WW coupling else if(ida==22&&idb==23) norm(_vfact[3]*_couplast); else assert(false); } herwig++-2.6.0.orig/Models/StandardModel/SMFFPVertex.h0000644000175000017500000000734311754474773023173 0ustar sylvestresylvestre// -*- C++ -*- // // SMFFPVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMFFPVertex_H #define HERWIG_SMFFPVertex_H // // This is the declaration of the SMFFPVertex class. #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "ThePEG/StandardModel/StandardModelBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the Standard Model fermion-antifermion * photon vertex. * * @see FFVVertex * @see VertexBase */ class SMFFPVertex: public FFVVertex { public: /** * Default constructor. */ SMFFPVertex(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initSMFFPVertex; /** * Private and non-existent assignment operator. */ SMFFPVertex & operator=(const SMFFPVertex &); private: /** * Storage of the couplings. */ //@{ /** * The charge of the Standard Model fermions. */ vector _charge; /** * The last value of the coupling calculated. */ Complex _couplast; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 _q2last; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SMFFPVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of SMFFPVertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::SMFFPVertex"; } }; /** @endcond */ } #endif /* HERWIG_SMFFPVertex_H */ herwig++-2.6.0.orig/Models/StandardModel/SMWWHHVertex.cc0000644000175000017500000000324111754474773023464 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SMWWHHVertex class. // #include "SMWWHHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; SMWWHHVertex::SMWWHHVertex() : ratio_(0.), couplast_(0.), q2last_(ZERO) { orderInGem(2); orderInGs (0); } IBPtr SMWWHHVertex::clone() const { return new_ptr(*this); } IBPtr SMWWHHVertex::fullclone() const { return new_ptr(*this); } void SMWWHHVertex::persistentOutput(PersistentOStream & os) const { os << ratio_; } void SMWWHHVertex::persistentInput(PersistentIStream & is, int) { is >> ratio_; } ClassDescription SMWWHHVertex::initSMWWHHVertex; // Definition of the static class description member. void SMWWHHVertex::Init() { static ClassDocumentation documentation ("The SMWWHHVertex class implements the coupling of two electroweeak" " gauge bosons and the Higgs boson in the Standard Model."); } void SMWWHHVertex::doinit() { addToList( 23, 23, 25, 25); addToList( 24,-24, 25, 25); VVSSVertex::doinit(); ratio_ = 1./(1.-sin2ThetaW()); } void SMWWHHVertex::setCoupling(Energy2 q2, tcPDPtr part1,tcPDPtr, #ifndef NDEBUG tcPDPtr part3,tcPDPtr part4) { #else tcPDPtr,tcPDPtr) { #endif assert(part3->id()==ParticleID::h0 && part4->id()==ParticleID::h0 ); if(q2!=q2last_||couplast_==0.) { couplast_ = sqr(weakCoupling(q2)); q2last_=q2; } if(part1->id()==ParticleID::Z0) { norm(0.5*couplast_*ratio_); } else { norm(0.5*couplast_); } } herwig++-2.6.0.orig/Models/StandardModel/SMWWWVertex.h0000644000175000017500000000764111754474773023245 0ustar sylvestresylvestre// -*- C++ -*- // // SMWWWVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMWWWVertex_H #define HERWIG_SMWWWVertex_H // // This is the declaration of the SMWWWVertex class. // #include "ThePEG/Helicity/Vertex/Vector/VVVVertex.h" #include "ThePEG/StandardModel/StandardModelBase.h" namespace Herwig { using namespace ThePEG; using ThePEG::Helicity::Direction; /** \ingroup Helicity * * This is the implementation fo the vertex for the coupling of three * standard Model electroweak bosons. * * @see VVVVertex * @see VertexBase */ class SMWWWVertex: public Helicity::VVVVertex { public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor. */ SMWWWVertex(); //@} 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription initSMWWWVertex; /** * Private and non-existent assignment operator. */ SMWWWVertex & operator=(const SMWWWVertex &); private: /** * Storage of the couplings. */ //@{ /** * The factor for the \f$Z\f$ vertex. */ double _zfact; /** * The last value of the electroweak coupling calculated. */ Complex _couplast; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 _q2last; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SMWWWVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of SMWWWVertex. */ typedef ThePEG::Helicity::VVVVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::SMWWWVertex"; } }; /** @endcond */ } #endif /* HERWIG_SMWWWVertex_H */ herwig++-2.6.0.orig/Models/StandardModel/SMHGGVertex.cc0000644000175000017500000001546311754474773023325 0ustar sylvestresylvestre// -*- C++ -*- // // SMHGGVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMHGGVertex class. // #include "SMHGGVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Looptools/clooptools.h" using namespace Herwig; using namespace ThePEG; SMHGGVertex::SMHGGVertex() :_couplast(0.),_q2last(ZERO),_mw(),massopt(1),_minloop(6), _maxloop(6),_CoefRepresentation(1) { orderInGs(2); orderInGem(1); } void SMHGGVertex::doinit() { //PDG codes for particles at vertices addToList(21,21,25); _theSM = dynamic_ptr_cast(generator()->standardModel()); if(!_theSM) throw InitException(); _mw = getParticleData(ThePEG::ParticleID::Wplus)->mass(); VVSLoopVertex::doinit(); // code to test the partial width // Energy mh = getParticleData(25)->mass(); // Complex I(0.); // for(long ix=int(_minloop);ix<=int(_maxloop);++ix) { // tcPDPtr qrk = getParticleData(ix); // Energy mt = (2 == massopt) ? _theSM->mass(sqr(mh),qrk) : qrk->mass(); // double lambda = sqr(mt/mh); // Complex fl; // if(lambda>=0.25) { // fl = -2.*sqr(asin(0.5/sqrt(lambda))); // } // else { // double etap = 0.5+sqrt(0.25-lambda); // double etam = 0.5-sqrt(0.25-lambda); // fl = 0.5*sqr(log(etap/etam))-0.5*sqr(Constants::pi) // -Complex(0.,1.)*Constants::pi*log(etap/etam); // } // I += 3.*(2.*lambda+lambda*(4.*lambda-1)*fl); // } // Energy width = sqr(weakCoupling(sqr(mh))*sqr(strongCoupling(sqr(mh))))/36./8.*sqr(mh/_mw)*mh // /sqr(4.*sqr(Constants::pi))*std::norm(I)/Constants::pi; // cerr << "testing anal " << width/GeV << "\n"; Looptools::ltexi(); } void SMHGGVertex::persistentOutput(PersistentOStream & os) const { os << _theSM << ounit(_mw,GeV) << massopt << _minloop << _maxloop << _CoefRepresentation; } void SMHGGVertex::persistentInput(PersistentIStream & is, int) { is >> _theSM >> iunit(_mw,GeV) >> massopt >> _minloop >> _maxloop >> _CoefRepresentation; } ClassDescription SMHGGVertex::initSMHGGVertex; // Definition of the static class description member. void SMHGGVertex::Init() { static ClassDocumentation documentation ("This class implements the h->g,g vertex"); static Parameter interfaceMinQuarkInLoop ("MinQuarkInLoop", "The minimum flavour of the quarks to include in the loops", &SMHGGVertex::_minloop, 6, 1, 6, false, false, Interface::limited); static Parameter interfaceMaxQuarkInLoop ("MaxQuarkInLoop", "The maximum flavour of the quarks to include in the loops", &SMHGGVertex::_maxloop, 6, 1, 6, false, false, Interface::limited); static Switch interfaceMassOption ("LoopMassScheme", "Switch for the treatment of the masses in the loops ", &SMHGGVertex::massopt, 1, false, false); static SwitchOption interfaceHeavyMass (interfaceMassOption, "PoleMasses", "The loop is calculcated with the pole quark masses", 1); static SwitchOption interfaceNormalMass (interfaceMassOption, "RunningMasses", "running quark masses are taken in the loop", 2); static SwitchOption interfaceInfiniteTopMass (interfaceMassOption, "InfiniteTopMass", "the loop consists of an infinitely massive top quark", 3); static Switch interfaceScheme ("CoefficientScheme", "Which scheme for the tensor coefficients is applied", &SMHGGVertex::_CoefRepresentation, 1, false, false); static SwitchOption interfaceSchemeSimplified (interfaceScheme, "Simplified", "Represection suitable for the simplified the H-g-g and H-gamma-gamma vertices", 1); static SwitchOption interfaceSchemeGeneral (interfaceScheme, "General", "Represection suitable for the Passarino-Veltman tensor reduction scheme", 2); } void SMHGGVertex::setCoupling(Energy2 q2, tcPDPtr part2, tcPDPtr part3, tcPDPtr part1) { assert(part1 && part2 && part3); assert(part1->id() == ParticleID::h0 && part2->id() == ParticleID::g && part3->id() == ParticleID::g ); int Qminloop = _minloop; int Qmaxloop = _maxloop; if (_maxloop < _minloop) { Qmaxloop=_minloop; Qminloop=_maxloop; } if(massopt==3) { if(q2 != _q2last) { double g = weakCoupling(q2); double gs2 = sqr(strongCoupling(q2)); _couplast = UnitRemoval::E * gs2 * g / 16. / _mw/ sqr(Constants::pi); _q2last = q2; } norm(_couplast); Complex loop(2./3.); a00( loop); a11(0.0); a12(0.0); a21(-loop); a22(0.0); aEp(0.0); return; } switch (_CoefRepresentation) { case 1: { if(q2 != _q2last||_couplast==0.) { double g = weakCoupling(q2); double gs2 = sqr(strongCoupling(q2)); _couplast = UnitRemoval::E * gs2 * g / 16. / _mw/ sqr(Constants::pi); _q2last = q2; } norm(_couplast); Complex loop(0.); for ( int i = Qminloop; i <= Qmaxloop; ++i ) { tcPDPtr qrk = getParticleData(i); Energy mass = (2 == massopt) ? _theSM->mass(q2,qrk) : qrk->mass(); loop += Af(sqr(mass)/q2); } a00(loop); a11(0.0); a12(0.0); a21(-loop); a22(0.0); aEp(0.0); break; } case 2: { if (q2 != _q2last) { Looptools::clearcache(); _couplast = 0.25*sqr(strongCoupling(q2))*weakCoupling(q2); _q2last = q2; } norm(_couplast); int delta = Qmaxloop - Qminloop + 1; type.resize(delta,PDT::SpinUnknown); masses.resize(delta,ZERO); for (int i = 0; i < delta; ++i) { tcPDPtr q = getParticleData(_minloop+i); type[i] = PDT::Spin1Half; masses[i] = (2 == massopt) ? _theSM->mass(q2,q) : q->mass(); couplings.push_back(make_pair(masses[i]/_mw, masses[i]/_mw)); } setNParticles(delta); VVSLoopVertex::setCoupling(q2, part1, part2, part3); break; } } } Complex SMHGGVertex::Af(double tau) const { return tau*(4.- W2(tau)*(1.-4.*tau)); } Complex SMHGGVertex::W2(double lambda) const { double pi = Constants::pi; if (0.0 == lambda) return 0.0; else if (lambda < 0.0) return 4.*sqr(asinh(0.5*sqrt(-1./lambda))); double root(0.5*sqrt(1./lambda)); Complex ac(0.); // formulae from NPB297,221 if(root < 1.) { ac = -sqr(asin(root)); } else { double ex = acosh(root); ac = sqr(ex) - 0.25*sqr(pi) - pi*ex*Complex(0.,1.); } return 4.*ac; } herwig++-2.6.0.orig/Models/StandardModel/SMWWWVertex.cc0000644000175000017500000000537711754474773023407 0ustar sylvestresylvestre// -*- C++ -*- // // SMWWWVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMWWWVertex class. // #include "SMWWWVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void SMWWWVertex::persistentOutput(PersistentOStream & os) const { os << _zfact; } void SMWWWVertex::persistentInput(PersistentIStream & is, int) { is >> _zfact; } ClassDescription SMWWWVertex::initSMWWWVertex; // Definition of the static class description member. void SMWWWVertex::Init() { static ClassDocumentation documentation ("The SMWWWVertex class is the implementation of the " "Standard Model triple electroweak boson coupling."); } // couplings for the WWW vertex void SMWWWVertex::setCoupling(Energy2 q2,tcPDPtr a,tcPDPtr b, tcPDPtr c) { int ida=a->id(); int idb=b->id(); int idc=c->id(); // first the overall normalisation if(q2!=_q2last||_couplast==0.) { _couplast = electroMagneticCoupling(q2); _q2last=q2; } // W- W+ photon and cylic perms if((ida==-24 && idb== 24 && idc== 22) || (ida== 22 && idb==-24 && idc== 24) || (ida== 24 && idb== 22 && idc==-24) ) norm(_couplast); // W+ W- photon (anticylic perms of above) else if((ida== 24 && idb==-24 && idc== 22) || (ida== 22 && idb== 24 && idc==-24) || (ida==-24 && idb== 22 && idc== 24) ) norm(-_couplast); // W- W+ Z and cylic perms else if((ida==-24 && idb== 24 && idc== 23) || (ida== 23 && idb==-24 && idc== 24) || (ida== 24 && idb== 23 && idc==-24) ) norm(_couplast*_zfact); // W+ W- Z (anticylic perms of above) else if((ida== 24 && idb==-24 && idc== 23) || (ida== 23 && idb== 24 && idc==-24) || (ida==-24 && idb== 23 && idc== 24) ) norm(-_couplast*_zfact); else throw Helicity::HelicityConsistencyError() << "SMWWWVertex::setCoupling " << "Invalid particles in WWW Vertex" << a->PDGName() << " " << b->PDGName() << " " << c->PDGName() << Exception::runerror; } SMWWWVertex::SMWWWVertex() : _zfact(0.),_couplast(0.), _q2last(sqr(Constants::MaxEnergy)) { orderInGem(1); orderInGs(0); } void SMWWWVertex::doinit() { addToList(24, -24, 22); addToList(24, -24, 23); VVVVertex::doinit(); // factor for the Z vertex double sw2=sin2ThetaW(); _zfact = sqrt((1.-sw2)/sw2); } herwig++-2.6.0.orig/Models/StandardModel/StandardModel.cc0000644000175000017500000001462111754474773023776 0ustar sylvestresylvestre// -*- C++ -*- // // StandardModel.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the StandardModel class. // #include "StandardModel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Models/General/ModelGenerator.h" using namespace Herwig; StandardModel::StandardModel() {} StandardModel::~StandardModel() {} StandardModel::StandardModel(const StandardModel & x) : StandardModelBase(x), FFZVertex_ (x.FFZVertex_), FFPVertex_ (x.FFPVertex_) , FFGVertex_ (x.FFGVertex_) , FFWVertex_ (x.FFWVertex_) , FFHVertex_ (x.FFHVertex_) , WWHVertex_ (x.WWHVertex_) , GGGVertex_ (x.GGGVertex_) , WWWVertex_ (x.WWWVertex_) , GGGGVertex_(x.GGGGVertex_), WWWWVertex_(x.WWWWVertex_), HGGVertex_ (x.HGGVertex_) , HPPVertex_ (x.HPPVertex_) , HHHVertex_ (x.HHHVertex_) , WWHHVertex_ (x.WWHHVertex_) , vertexList_(x.vertexList_), runningMass_(x.runningMass_),modelGenerator_(x.modelGenerator_) {} IBPtr StandardModel::clone() const { return new_ptr(*this); } IBPtr StandardModel::fullclone() const { return new_ptr(*this); } void StandardModel::doinit() { if(runningMass_) { runningMass_->init(); } //add Standard Model vertices addVertex(vertexFFZ()); addVertex(vertexFFP()); addVertex(vertexFFG()); addVertex(vertexFFW()); addVertex(vertexFFH()); addVertex(vertexWWH()); addVertex(GGGVertex_); addVertex(WWWVertex_); addVertex(GGGGVertex_); addVertex(WWWWVertex_); addVertex(vertexHGG()); addVertex(HPPVertex_); if(HHHVertex_ ) addVertex(HHHVertex_); if(WWHHVertex_) addVertex(WWHHVertex_); StandardModelBase::doinit(); } void StandardModel::persistentOutput(PersistentOStream & os) const { os << FFZVertex_ <> FFZVertex_ >> FFPVertex_ >> FFGVertex_ >> FFWVertex_ >> FFHVertex_ >> WWHVertex_ >> GGGGVertex_ >> WWWWVertex_ >> GGGVertex_ >> WWWVertex_ >> HGGVertex_ >> HPPVertex_ >> HHHVertex_ >> WWHHVertex_ >> runningMass_ >> vertexList_ >> modelGenerator_; } ClassDescription StandardModel::initStandardModel; // Definition of the static class description member. void StandardModel::Init() { static Reference interfaceVertexFFZ ("Vertex/FFZ", "Reference to the Standard Model FFZ Vertex", &StandardModel::FFZVertex_, false, false, true, false); static Reference interfaceVertexFFP ("Vertex/FFP", "Reference to the Standard Model FFP Vertex", &StandardModel::FFPVertex_, false, false, true, false); static Reference interfaceVertexFFG ("Vertex/FFG", "Reference to the Standard Model FFG Vertex", &StandardModel::FFGVertex_, false, false, true, false); static Reference interfaceVertexFFW ("Vertex/FFW", "Reference to the Standard Model FFW Vertex", &StandardModel::FFWVertex_, false, false, true, false); static Reference interfaceVertexFFH ("Vertex/FFH", "Reference to the Standard Model FFH Vertex.", &StandardModel::FFHVertex_, false, false, true, false); static Reference interfaceVertexGGG ("Vertex/GGG", "Reference to the Standard Model GGG Vertex", &StandardModel::GGGVertex_, false, false, true, false, false); static Reference interfaceVertexWWW ("Vertex/WWW", "Reference to the Standard Model WWW Vertex", &StandardModel::WWWVertex_, false, false, true, false, false); static Reference interfaceVertexWWH ("Vertex/WWH", "Reference to the Standard Model WWH Vertex", &StandardModel::WWHVertex_, false, false, true, false); static Reference interfaceVertexWWWW ("Vertex/WWWW", "Reference to the Standard Model WWWW Vertex", &StandardModel::WWWWVertex_, false, false, true, false); static Reference interfaceVertexGGGG ("Vertex/GGGG", "Reference to the Standard Model GGGG Vertex", &StandardModel::GGGGVertex_, false, false, true, false); static Reference interfaceVertexHGG ("Vertex/HGG", "Reference to the StandardModel HGG Vertex", &StandardModel::HGGVertex_, false, false, true, false); static Reference interfaceVertexHPP ("Vertex/HPP", "Reference to StandardModel HPPVertex", &StandardModel::HPPVertex_, false, false, true, false); static Reference interfaceVertexHHH ("Vertex/HHH", "Reference to the Standard Model HHHVertex", &StandardModel::HHHVertex_, false, false, true, true, false); static Reference interfaceVertexWWHH ("Vertex/WWHH", "Reference to the Standard Model WWHHVertex", &StandardModel::WWHHVertex_, false, false, true, true, false); static Reference interfaceRunningMass ("RunningMass", "Reference to the running mass object", &StandardModel::runningMass_, false, false, true, false); static Reference interfaceModelGenerator ("ModelGenerator", "Pointer to ModelGenerator class", &StandardModel::modelGenerator_, false, false, true, true); static ClassDocumentation documentation ("The StandardModel class inherits from StandardModelBase" "and supplies additional couplings and access to the StandardModel" "vertices for helicity amplitude calculations" ); } herwig++-2.6.0.orig/Models/StandardModel/AlphaEM.h0000644000175000017500000001027311754474773022365 0ustar sylvestresylvestre// -*- C++ -*- // // AlphaEM.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_AlphaEM_H #define HERWIG_AlphaEM_H // // This is the declaration of the AlphaEM class. // #include "ThePEG/StandardModel/AlphaEMBase.h" namespace Herwig { using namespace ThePEG; /** * The AlphaEM class is an exact reimplementation of the electromagentic * coupling in FORTRAN HERWIG and is mainly intended for testing. * It uses that same hadronic parameterisation as in the ThePEG::SimpleEM * but differs in the treatment of the top and leptonic contribution. * * @see \ref AlphaEMInterfaces "The interfaces" * defined for AlphaEM. */ class AlphaEM: public AlphaEMBase { public: /** * The default constructor. */ AlphaEM() : _me(),_mmu(),_mtau(), _mtop() {} /** * The \f$\alpha_{EM}\f$. Return the value of the coupling at a * given \a scale using the given standard model object, \a sm. */ virtual double value(Energy2 scale, const StandardModelBase &) 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(); protected: /** * The real part of the photon self-energy * @param ratio The ratio of the mass squared of the fermion to the scale squared, * \f$m^2/Q^2\f$. */ double realPi(double ratio) const; 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initAlphaEM; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ AlphaEM & operator=(const AlphaEM &); private: /** * Masses of the Standard Model fermions we need for the * self-energies */ //@{ /** * Electron mass squared */ Energy2 _me; /** * Muon mass squared */ Energy2 _mmu; /** * Tau mass squared */ Energy2 _mtau; /** * Top mass squared */ Energy2 _mtop; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of AlphaEM. */ template <> struct BaseClassTrait { /** Typedef of the first base class of AlphaEM. */ typedef AlphaEMBase NthBase; }; /** This template specialization informs ThePEG about the name of * the AlphaEM class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::AlphaEM"; } }; /** @endcond */ } #endif /* HERWIG_AlphaEM_H */ herwig++-2.6.0.orig/Models/StandardModel/SMFFWVertex.cc0000644000175000017500000000656611754474773023346 0ustar sylvestresylvestre// -*- C++ -*- // // SMFFWVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMFFWVertex class. // #include "SMFFWVertex.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "Herwig++/Models/StandardModel/StandardCKM.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; SMFFWVertex::SMFFWVertex() : _ckm(3,vector(3,0.0)), _couplast(0.), _q2last(0.*sqr(MeV)) { orderInGem(1); orderInGs(0); } void SMFFWVertex::persistentOutput(PersistentOStream & os) const { os << _ckm; } void SMFFWVertex::persistentInput(PersistentIStream & is, int) { is >> _ckm; } void SMFFWVertex::doinit() { // particles for outgoing W- // quarks for(int ix=1;ix<6;ix+=2) { for(int iy=2;iy<7;iy+=2) { addToList(-ix, iy, -24); } } // leptons for(int ix=11;ix<17;ix+=2) { addToList(-ix, ix+1, -24); } // particles for outgoing W+ // quarks for(int ix=2;ix<7;ix+=2) { for(int iy=1;iy<6;iy+=2) { addToList(-ix, iy, 24); } } // leptons for(int ix=11;ix<17;ix+=2) { addToList(-ix-1, ix, 24); } ThePEG::Helicity::FFVVertex::doinit(); Ptr::transient_pointer CKM = generator()->standardModel()->CKM(); // cast the CKM object to the HERWIG one ThePEG::Ptr::transient_const_pointer hwCKM = ThePEG::dynamic_ptr_cast< ThePEG::Ptr:: transient_const_pointer>(CKM); if(hwCKM) { vector< vector > CKM; CKM = hwCKM->getUnsquaredMatrix(generator()->standardModel()->families()); for(unsigned int ix=0;ix<3;++ix) { for(unsigned int iy=0;iy<3;++iy) { _ckm[ix][iy]=CKM[ix][iy]; } } } else { throw Exception() << "Must have access to the Herwig::StandardCKM object" << "for the CKM matrix in SMFFWVertex::doinit()" << Exception::runerror; } } ClassDescriptionSMFFWVertex::initSMFFWVertex; // Definition of the static class description member. void SMFFWVertex::Init() { static ClassDocumentation documentation ("The SMFFZVertex class is the implementation of" "the coupling of the W boson to the Standard Model fermions"); } // coupling for FFW vertex void SMFFWVertex::setCoupling(Energy2 q2, tcPDPtr aa, tcPDPtr bb, tcPDPtr) { // first the overall normalisation if(q2!=_q2last||_couplast==0.) { _couplast = -sqrt(0.5)*weakCoupling(q2); _q2last=q2; } norm(_couplast); // the left and right couplings int iferm=abs(aa->id()); int ianti=abs(bb->id()); // quarks if(iferm>=1 && iferm <=6) { int iu,id; // up type first if(iferm%2==0) { iu = iferm/2; id = (ianti+1)/2; } // down type first else { iu = ianti/2; id = (iferm+1)/2; } assert( iu>=1 && iu<=3 && id>=1 && id<=3); left(_ckm[iu-1][id-1]); right(0.); } // leptons else if(iferm>=11 && iferm <=16) { left(1.); right(0.); } else assert(false); } herwig++-2.6.0.orig/Models/StandardModel/SMHPPVertex.h0000644000175000017500000001175411754474773023210 0ustar sylvestresylvestre// -*- C++ -*- // // SMHPPVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMHPPVertex_H #define HERWIG_SMHPPVertex_H // // This is the declaration of the SMHPPVertex class. // #include "Herwig++/Models/General/VVSLoopVertex.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/PDT/EnumParticles.h" namespace Herwig { using namespace ThePEG; /** * The SMHGGVertex class implements the * setCoupling member for the Standard Model effective * vertex Higgs-gamma-gamma. */ class SMHPPVertex: public VVSLoopVertex { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ SMHPPVertex(); //@} /** @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(); /** * Calculate couplings *@param q2 Scale at which to evaluate coupling *@param part1 ParticleData pointer to first particle *@param part2 ParticleData pointer to second particle *@param part3 ParticleData pointer to third particle */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSMHPPVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SMHPPVertex & operator=(const SMHPPVertex &); /** *Storage of couplings */ //@{ /** * Last value of the coupling calculated */ Complex _couplast; /** * The scale \f$q^2\f$ at which coupling was last evaluated */ Energy2 _q2last; //@} /** * Pointer to Standard Model object */ tcHwSMPtr _theSM; /** * The mass of the \f$W\f$ boson. */ Energy _mw; /** * define quark mass scheme (fixed/running) */ unsigned int massopt; /** * The minimum flavour number in quark loops */ int _minloop; /** * The maximum flavour number in quark loops */ int _maxloop; /** * Loop calculations: A1 for spin-1/2 particles (see details in ``Higgs Hunter's Guide'') */ Complex Af(const double lambda) const; /** * Loop calculations: A1 for spin-1 particles (see details in ``Higgs Hunter's Guide'') */ Complex Aw(const double lambda) const; /** * Loop calculations: W2 function (see details in NPB297,221) */ Complex W2(double lambda) const; /** * Switch between two representations of coefficients (_a00,_a11,_a12,_a21,_a22,_aEp): * suitable for the simplified H-g-g and H-gamma-gamma vertices and * suitable for the Passarino-Veltman tensor reduction scheme */ unsigned int _CoefRepresentation; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SMHPPVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SMHPPVertex. */ typedef Herwig::VVSLoopVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SMHPPVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SMHPPVertex"; } }; /** @endcond */ } #endif /* HERWIG_SMHPPVertex_H */ herwig++-2.6.0.orig/Models/StandardModel/RunningMass.cc0000644000175000017500000001123211754474773023514 0ustar sylvestresylvestre// -*- C++ -*- // // RunningMass.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the RunningMass class. // #include "RunningMass.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Parameter.h" namespace Herwig { using namespace ThePEG; void RunningMass::persistentOutput(PersistentOStream & os) const { os << _theQCDOrder << _thePower << _theCoefficient << _theMaxFlav << _theStandardModel << _lightOption << _heavyOption; } void RunningMass::persistentInput(PersistentIStream & is, int) { is >> _theQCDOrder >> _thePower >> _theCoefficient >> _theMaxFlav >> _theStandardModel >> _lightOption >> _heavyOption; } ClassDescription RunningMass::initRunningMass; // Definition of the static class description member. void RunningMass::Init() { static Parameter interfaceQCDOrder ("QCDOrder", "The order in alpha_S", &RunningMass::_theQCDOrder, 1, 1, 2, false, false, true); static Parameter interfaceMaxFlav ("MaxFlav", "maximum number of flavours", &RunningMass::_theMaxFlav, 6, 3, 6, false, false, true); static ClassDocumentation documentation ("The RunningMass class is the implementation of the" " QCD running mass to one or two loop in alpha_S"); static Switch interfaceLightQuarkMass ("LightQuarkMass", "Option for the treatment of light mass masses", &RunningMass::_lightOption, 1, false, false); static SwitchOption interfaceLightQuarkMassRunning (interfaceLightQuarkMass, "Running", "Use a running, probably zero mass", 0); static SwitchOption interfaceLightQuarkMassPole (interfaceLightQuarkMass, "Pole", "Use the pole mass", 1); static Switch interfaceBottomCharmMass ("TopBottomCharmMass", "Option for using a running or pole mass for the top, bottom and charm quarks", &RunningMass::_heavyOption, 0, false, false); static SwitchOption interfaceBottomCharmMassRunning (interfaceBottomCharmMass, "Running", "Use the running mass", 0); static SwitchOption interfaceBottomCharmMassPole (interfaceBottomCharmMass, "Pole", "Use the pole mass", 1); } // Return the masses used. vector RunningMass::mass() const { using Constants::pi; vector masses; for ( long f = 1; f <= long(_theMaxFlav); ++f ) { PDPtr p = getParticleData(f); Energy massf = p ? p->mass() : ZERO; if((f<=3&&_lightOption==0) || (f>3 &&_heavyOption==0)) { double coeff = _theQCDOrder==2 ? _theCoefficient[f-1]+4./3./pi : 0.; double as = _theStandardModel->alphaS(massf*massf); massf = as>0 ? massf/(1.+coeff*as)/pow(as,_thePower[f-1]) : ZERO; } masses.push_back(massf); } return masses; } // Return the running mass for a given scale and particle type. Energy RunningMass::value(Energy2 scale, tcPDPtr part) const { Energy output; unsigned int id=abs(part->id()); // calculate the running mass if(id<=_theMaxFlav) { if( (id <= 3 && _lightOption == 1 ) || (id >= 4 && _heavyOption == 1 ) ) { output= part->mass(); } else { // calculate the value of alphaS and number of flavours //unsigned int nf= _theStandardModel->Nf(scale); unsigned int nf=id; double as = _theStandardModel->alphaS(scale); id=id-1; output = massElement(id)*pow(as,_thePower[nf-1]); if(_theQCDOrder==2){output*=(1.+as*_theCoefficient[nf-1]);} } } // else { output= part->mass(); } return output; } void RunningMass::doinit() { using Constants::pi; _theStandardModel = generator()->standardModel(); _theStandardModel->alphaSPtr()->init(); // coefficients for the calculation double c = 1./pi,cprime,b,bprime,power,coeff; for(unsigned int f=1;f<=_theMaxFlav;++f) { // the basic parameters for the running mass cprime = c*(303.-10.*f)/72.; b = c*(33. -2. *f)/12.; bprime = 0.5*c*(153.-19.*f)/(33.-2.*f); power = c/b; coeff = c*(cprime-bprime)/b; _thePower.push_back(power); _theCoefficient.push_back(coeff); } RunningMassBase::doinit(); } } herwig++-2.6.0.orig/Models/StandardModel/O2AlphaS.cc0000644000175000017500000001250211754474773022622 0ustar sylvestresylvestre// -*- C++ -*- // // O2AlphaS.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the O2AlphaS class. // #include "O2AlphaS.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void O2AlphaS::persistentOutput(PersistentOStream & os) const { os << ounit(_lambdaQCD,GeV) << _bcoeff << _ccoeff << ounit(_lambdas,GeV) << ounit(_threshold,GeV) << _match << _copt; } void O2AlphaS::persistentInput(PersistentIStream & is, int) { is >> iunit(_lambdaQCD,GeV) >> _bcoeff >> _ccoeff >> iunit(_lambdas,GeV) >> iunit(_threshold,GeV) >> _match >> _copt; } ClassDescription O2AlphaS::initO2AlphaS; // Definition of the static class description member. void O2AlphaS::Init() { static ClassDocumentation documentation ("The O2AlphaS class implements the next-to-leading order alphaS in the same" " way as in FORTRAN HERWIG"); static Parameter interfaceLambdaQCD ("LambdaQCD", "The value of Lambda QCD", &O2AlphaS::_lambdaQCD, MeV, 180.*MeV, 50.*MeV, 500.0*MeV, false, false, Interface::limited); static Switch interfaceLambdaType ("LambdaType", "Which type of Lambda to use", &O2AlphaS::_copt, 0, false, false); static SwitchOption interfaceLambdaTypeMonteCarlo (interfaceLambdaType, "MonteCarlo", "Use a Monte Carlo scheme as in the FORTRAN program", 0); static SwitchOption interfaceLambdaTypeMSBar (interfaceLambdaType, "MSBar", "Use the MSBar scheme", 1); } vector O2AlphaS::flavourThresholds() const { vector thresholds(_threshold.size()); transform(_threshold.begin(), _threshold.end(), thresholds.begin(), sqr); return thresholds; } void O2AlphaS::doinit() { // thresholds for ( int ix=1; ix<7; ++ix ) { tPDPtr p = getParticleData(ix); _threshold[ix-1] = p->mass(); } // d is heavier than u, need to swap swap(_threshold[0],_threshold[1]); // beta function coefficients const double ca = generator()->standardModel()->Nc(); const double cf = (sqr(ca)-1.)/2./ca; for(unsigned int ix=3;ix<7;++ix) { _bcoeff[ix-1]=(11.*ca-2.*ix)/(12.*Constants::pi); _ccoeff[ix-1]=(17.*sqr(ca)-ix*(5.*ca+3.*cf))/(24.*sqr(Constants::pi))/sqr(_bcoeff[ix-1]); } if(_copt==0) { double kfac(ca*(67./18.-sqr(Constants::pi)/6.)-25./9.); _lambdas[5]=_lambdaQCD*exp(kfac/(4.*Constants::pi*_bcoeff[4]))/sqrt(2.); } else{_lambdas[5]=_lambdaQCD;} // calculate the threshold matching double rho=2.*log(_threshold[5]/_lambdas[5]); double rat=log(rho)/rho; _match[5]=(_bcoeff[4]/(1.-_ccoeff[4]*rat)-_bcoeff[5]/(1.-_ccoeff[5]*rat))*rho; rho=2.*log(_threshold[4]/_lambdas[5]); rat=log(rho)/rho; _match[4]=(_bcoeff[4]/(1.-_ccoeff[4]*rat)-_bcoeff[3]/(1.-_ccoeff[3]*rat))*rho; rho=2.*log(_threshold[3]/_lambdas[5]); rat=log(rho)/rho; _match[3]=(_bcoeff[3]/(1.-_ccoeff[3]*rat)-_bcoeff[2]/(1.-_ccoeff[2]*rat))*rho +_match[4]; // calculate the 4-flavour lambda _lambdas[4]=_lambdas[5]*pow(_threshold[4]/_lambdas[5],2./25.)* pow(2.*log(_threshold[4]/_lambdas[5]),963./14375.); // calculate the 3-flavour lambda double eps(1.e-6),d35(-1./(_bcoeff[2]*_match[3])),rlf,drh; unsigned int ix=0; do { rat=log(d35)/d35; rlf=_bcoeff[2]*d35/(1.-_ccoeff[2]*rat); drh=_bcoeff[2]*(rlf+_match[3])*sqr(d35)/ ((1.-2.*_ccoeff[2]*rat+_ccoeff[2]/d35)*sqr(rlf)); d35=d35-drh; ++ix; } while(ix<100&&abs(drh)>eps*d35); _lambdas[3]=_lambdas[5]*exp(0.5*d35); AlphaSBase::doinit(); } vector O2AlphaS::LambdaQCDs() const { vector output(4,_lambdas[3]); output.push_back(_lambdas[4]); output.push_back(_lambdas[5]); output.push_back(_lambdas[5]); return output; } double O2AlphaS::value(Energy2 scale, const StandardModelBase &) const { Energy rs=sqrt(scale); if(scalelog() << "O2AlphaS called with scale less than Lambda QCD " << "scale = " << rs/MeV << " MeV and " << "Lambda = " << _lambdas[5]/MeV << " MeV\n"; return 0.; } double rho=2.*log(rs/_lambdas[5]),rat(log(rho)/rho); double rlf; if(rs>_threshold[5]) rlf=_bcoeff[5]*rho/(1.-_ccoeff[5]*rat)+_match[5]; else if(rs>_threshold[4]) rlf=_bcoeff[4]*rho/(1.-_ccoeff[4]*rat); else if(rs>_threshold[3]) rlf=_bcoeff[3]*rho/(1.-_ccoeff[3]*rat)+_match[4]; else rlf=_bcoeff[2]*rho/(1.-_ccoeff[2]*rat)+_match[3]; // must be possible if(rlf<=0.) { generator()->log() << "O2AlphaS coupling less than zero \n"; return 0.; } return 1./rlf; } herwig++-2.6.0.orig/Models/StandardModel/Makefile.am0000644000175000017500000000146211754474773023001 0ustar sylvestresylvestrenoinst_LTLIBRARIES = libHwStandardModel.la libHwStandardModel_la_SOURCES = \ StandardModel.fh StandardModel.h StandardModel.cc\ RunningMassBase.h RunningMassBase.cc \ RunningMass.h RunningMass.cc\ StandardCKM.h StandardCKM.cc \ O2AlphaS.h O2AlphaS.cc \ AlphaEM.h AlphaEM.cc \ SMFFGVertex.cc SMFFGVertex.h \ SMFFHVertex.cc SMFFHVertex.h \ SMFFPVertex.cc SMFFPVertex.h \ SMFFWVertex.cc SMFFWVertex.h \ SMFFZVertex.cc SMFFZVertex.h \ SMGGGGVertex.cc SMGGGGVertex.h \ SMGGGVertex.cc SMGGGVertex.h \ SMWWHVertex.cc SMWWHVertex.h \ SMWWWVertex.cc SMWWWVertex.h \ SMWWWWVertex.cc SMWWWWVertex.h \ SMHGGVertex.cc SMHGGVertex.h \ SMHPPVertex.cc SMHPPVertex.h\ SMHHHVertex.cc SMHHHVertex.h \ SMWWHHVertex.cc SMWWHHVertex.h herwig++-2.6.0.orig/Models/StandardModel/SMGGGVertex.h0000644000175000017500000000630711754474773023163 0ustar sylvestresylvestre// -*- C++ -*- // // SMGGGVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMGGGVertex_H #define HERWIG_SMGGGVertex_H // // This is the declaration of the SMGGGVertex class. // #include "ThePEG/Helicity/Vertex/Vector/VVVVertex.h" #include "ThePEG/StandardModel/StandardModelBase.h" namespace Herwig { using namespace ThePEG; using ThePEG::Helicity::Direction; /** \ingroup Helicity * * Implementation of the SM triple gluon vertex. * * @see VVVVertex * @see VertexBase */ class SMGGGVertex : public Helicity::VVVVertex { public: /** * Default constructor. */ SMGGGVertex(); /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static NoPIOClassDescription initSMGGGVertex; /** * Private and non-existent assignment operator. */ SMGGGVertex & operator=(const SMGGGVertex &); /** * Storage of the couplings. */ //@{ /** * The last value of the strong coupling calculated. */ Complex _couplast; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 _q2last; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SMGGGVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of SMGGGVertex. */ typedef ThePEG::Helicity::VVVVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::SMGGGVertex"; } }; /** @endcond */ } #endif /* HERWIG_SMGGGVertex_H */ herwig++-2.6.0.orig/Models/StandardModel/SMFFHVertex.h0000644000175000017500000001000411754474773023147 0ustar sylvestresylvestre// -*- C++ -*- // // SMFFHVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMFFHVertex_H #define HERWIG_SMFFHVertex_H // // This is the declaration of the SMFFHVertex class. #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/PDT/EnumParticles.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the vertex coupling the Standard Model Higgs * to the Standard Model fermions for helicity amplitude calculations * * @see FFSVertex * @see VertexBase */ class SMFFHVertex: public FFSVertex { public: /** * Default constructor. */ SMFFHVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initSMFFHVertex; /** * Private and non-existent assignment operator. */ SMFFHVertex & operator=(const SMFFHVertex &); private: /** * Pointer to the SM object. */ tcHwSMPtr _theSM; /** * Storage of the couplings. */ //@{ /** * Last evaluation of the coupling */ complex _couplast; /** * The PDG code of the last fermion the coupling was evaluated for. */ int _idlast; /** * The last \f$q^2\f$ the coupling was evaluated at. */ Energy2 _q2last; /** * The mass of the last fermion for which the coupling was evaluated. */ Energy _masslast; /** * The mass of the \f$W\f$ boson. */ Energy _mw; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SMFFHVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of SMFFHVertex. */ typedef ThePEG::Helicity::FFSVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::SMFFHVertex"; } }; /** @endcond */ } #endif /* HERWIG_SMFFHVertex_H */ herwig++-2.6.0.orig/Models/StandardModel/O2AlphaS.h0000644000175000017500000001204211754474773022463 0ustar sylvestresylvestre// -*- C++ -*- // // O2AlphaS.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_O2AlphaS_H #define HERWIG_O2AlphaS_H // // This is the declaration of the O2AlphaS class. // #include "ThePEG/StandardModel/AlphaSBase.h" namespace Herwig { using namespace ThePEG; /** * The O2AlphaS class is the implementation of the two-loop * \f$\alpha_S\f$ in the same way as in FORTRAN HERWIG. * * The input value of \f$\Lambda_{\rm QCD}\f$ is in the \f$\bar{MS}\f$ * scheme and can either be converted to a Monte Carlo scheme, as in the * FORTRAN program, or left in the \f$\bar{MS}\f$ scheme to evaluate * the running coupling * * @see \ref O2AlphaSInterfaces "The interfaces" * defined for O2AlphaS. */ class O2AlphaS: public AlphaSBase { public: /** * The default constructor. */ O2AlphaS() : _lambdaQCD(180.*MeV), _bcoeff(6,0.0), _ccoeff(6,0.0), _lambdas(7), _threshold(6), _match(6,0.0), _copt(0) {} /** @name Virtual functions to override those in the base class */ //@{ /** * The \f$\alpha_S\f$. Return the QCD coupling for a given \a scale * using the given standard model object \a sm. */ virtual double value(Energy2 scale, const StandardModelBase & sm) const; /** * Return the flavour thresholds used. The returned vector contains * (in position i) the scales when the active number of * flavours changes from i to i+1. */ virtual vector flavourThresholds() const; /** * Return the \f$\Lambda_{QCD}\f$ used for different numbers of * active flavours. */ virtual vector LambdaQCDs() 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initO2AlphaS; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ O2AlphaS & operator=(const O2AlphaS &); private: /** * The value of \f$\Lambda_{\rm QCD}\f$ 5-flavours * in the \f$\bar{\rm MS}\f$ scheme */ Energy _lambdaQCD; /** * The values of the leading-order \f$\beta\f$-function coefficients */ vector _bcoeff; /** * The values of the next-to-leading-order \f$\beta\f$-function coefficients */ vector _ccoeff; /** * The values of \f$\Lambda_{\rm QCD}\f$ for the diffferent number of flavours */ vector _lambdas; /** * The flavour thresholds */ vector _threshold; /** * The constants for matching */ vector _match; /** * Option for the coupling */ unsigned int _copt; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of O2AlphaS. */ template <> struct BaseClassTrait { /** Typedef of the first base class of O2AlphaS. */ typedef AlphaSBase NthBase; }; /** This template specialization informs ThePEG about the name of * the O2AlphaS class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::O2AlphaS"; } }; /** @endcond */ } #endif /* HERWIG_O2AlphaS_H */ herwig++-2.6.0.orig/Models/StandardModel/SMWWHVertex.h0000644000175000017500000000777011754474773023231 0ustar sylvestresylvestre// -*- C++ -*- // // SMWWHVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMWWHVertex_H #define HERWIG_SMWWHVertex_H // // This is the declaration of the SMWWHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VVSVertex.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/Models/StandardModel/StandardModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * The SMWWHVertex is the implementation of the * coupling of two electroweak gauge bosons to the Higgs in the Standard * Model. It inherits from VVSVertex and implements the setCoupling member. * * @see VVSVertex * @see VertexBase */ class SMWWHVertex: public VVSVertex { public: /** * Default constructor. */ SMWWHVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription initSMWWHVertex; /** * Private and non-existent assignment operator. */ SMWWHVertex & operator=(const SMWWHVertex &); private: /** * Storage of the couplings. */ //@{ /** * The last value of the electroweak coupling calculated. */ Complex _couplast; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 _q2last; /** * The mass of the \f$W\f$ boson. */ Energy _mw; /** * The factor for the \f$Z\f$ vertex. */ double _zfact; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SMWWHVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of SMWWHVertex. */ typedef ThePEG::Helicity::VVSVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::SMWWHVertex"; } }; /** @endcond */ } #endif /* HERWIG_SMWWHVertex_H */ herwig++-2.6.0.orig/Models/StandardModel/SMFFHVertex.cc0000644000175000017500000000501011754474773023306 0ustar sylvestresylvestre// -*- C++ -*- // // SMFFHVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMFFHVertex class. // #include "SMFFHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Config/Constants.h" using namespace Herwig; IBPtr SMFFHVertex::clone() const { return new_ptr(*this); } IBPtr SMFFHVertex::fullclone() const { return new_ptr(*this); } SMFFHVertex::SMFFHVertex() { // set up for the couplings _couplast=InvEnergy(); _idlast=0; _q2last=ZERO; _masslast=ZERO; _mw=ZERO; orderInGem(1); orderInGs(0); } void SMFFHVertex::doinit() { // PDG codes for the particles // the quarks for(int ix=1;ix<7;++ix) { addToList(-ix, ix, 25); } // the leptons for(int ix=11;ix<17;ix+=2) { addToList(-ix, ix, 25); } _theSM = dynamic_ptr_cast(generator()->standardModel()); if (!_theSM) throw InitException(); _mw= getParticleData(ThePEG::ParticleID::Wplus)->mass(); FFSVertex::doinit(); } void SMFFHVertex::persistentOutput(PersistentOStream & os) const { os << _theSM << ounit(_mw,GeV); } void SMFFHVertex::persistentInput(PersistentIStream & is, int) { is >> _theSM >> iunit(_mw,GeV); } ClassDescription SMFFHVertex::initSMFFHVertex; // Definition of the static class description member. void SMFFHVertex::Init() { static ClassDocumentation documentation ("The SMFFHVertex class is the implementation" " of the helicity amplitude calculation of the Standard Model Higgs" " fermion-antiferiom vertex."); } void SMFFHVertex::setCoupling(Energy2 q2,tcPDPtr aa,tcPDPtr, tcPDPtr) { int iferm=abs(aa->id()); // left and right couplings set to one left (1.); right(1.); // first the overall normalisation if(q2!=_q2last||_couplast==0./GeV) { _couplast = -0.5*weakCoupling(q2)/_mw; _q2last=q2; _idlast=iferm; assert((iferm>=1 && iferm<=6)||(iferm>=11 &&iferm<=16)); _masslast=_theSM->mass(q2,aa); } else if(iferm!=_idlast) { _idlast=iferm; assert((iferm>=1 && iferm<=6)||(iferm>=11 &&iferm<=16)); _masslast=_theSM->mass(q2,aa); } norm(_couplast*_masslast); } herwig++-2.6.0.orig/Models/StandardModel/AlphaEM.cc0000644000175000017500000000661711754474773022532 0ustar sylvestresylvestre// -*- C++ -*- // // AlphaEM.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the AlphaEM class. // #include "AlphaEM.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/StandardModel/StandardModelBase.h" using namespace Herwig; IBPtr AlphaEM::clone() const { return new_ptr(*this); } IBPtr AlphaEM::fullclone() const { return new_ptr(*this); } void AlphaEM::persistentOutput(PersistentOStream & os) const { os << ounit(_me,GeV2) << ounit(_mmu,GeV2) << ounit(_mtau,GeV2) << ounit(_mtop,GeV2); } void AlphaEM::persistentInput(PersistentIStream & is, int) { is >> iunit(_me,GeV2) >> iunit(_mmu,GeV2) >> iunit(_mtau,GeV2) >> iunit(_mtop,GeV2); } ClassDescription AlphaEM::initAlphaEM; // Definition of the static class description member. void AlphaEM::Init() { static ClassDocumentation documentation ("This class implements a running \\f$\\alpha_{\\mbox{EM}}\\f$ according " "to Buckhardt et al.", "In the running of $\\alpha_{EM}$, the parametrization of " "H.~Buckhardt et al. was used. See \\cite{KLEISSCERN9808v3pp129}.", "\\bibitem{KLEISSCERN9808v3pp129} R.~Kleiss et al, " "CERN 89-08, vol.~3, pp 129-131."); } void AlphaEM::doinit() { AlphaEMBase::doinit(); _me = sqr(getParticleData(ParticleID::eminus)->mass()); _mmu = sqr(getParticleData(ParticleID::muminus)->mass()); _mtau = sqr(getParticleData(ParticleID::tauminus)->mass()); _mtop = sqr(getParticleData(ParticleID::t)->mass()); } double AlphaEM::realPi(double r) const { static double fvthr=1.666666666666667e0,rmax=1.e6; // use assymptotic formula if(abs(r)<1e-3) { return -fvthr-log(r); } // return zero for large values else if(abs(r)>rmax) { return 0.; } else if(4.*r>1.) { double beta=sqrt(4.*r-1.); return 1./3. -(1.+2.*r)*(2.-beta*acos(1.-1./(2.*r))); } else { double beta=sqrt(1.-4.*r); return 1./3. -(1.+2.*r)*(2.+beta*log(abs((beta-1.)/(beta+1.)))); } } double AlphaEM::value(Energy2 scale, const StandardModelBase & sm) const { useMe(); static double eps=1e-6; static double a1=0.0 ,b1=0.00835,c1=1.000; static double a2=0.0 ,b2=0.00238,c2=3.927; static double a3=0.00165,b3=0.00299,c3=1.000; static double a4=0.00221,b4=0.00293,c4=1.000; // alpha_EM at Q^2=0 double alem=sm.alphaEM(); double aempi=alem/(3.*Constants::pi); // convert scale to GeV2 double Q2=scale/GeV2; double x=abs(Q2); // return q^2=0 value for small scales if(x initSMGGGGVertex; /** * Private and non-existent assignment operator. */ SMGGGGVertex & operator=(const SMGGGGVertex &); /** * Storage of the couplings. */ //@{ /** * The last value of the strong coupling calculated. */ Complex _couplast; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 _q2last; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SMGGGGVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of SMGGGGVertex. */ typedef ThePEG::Helicity::VVVVVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::SMGGGGVertex"; } }; /** @endcond */ } #endif /* HERWIG_SMGGGGVertex_H */ herwig++-2.6.0.orig/Models/StandardModel/StandardCKM.cc0000644000175000017500000001030611754474773023344 0ustar sylvestresylvestre// -*- C++ -*- // // StandardCKM.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the StandardCKM class. // #include "StandardCKM.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Parameter.h" using namespace Herwig; using namespace ThePEG; IBPtr StandardCKM::clone() const { return new_ptr(*this); } IBPtr StandardCKM::fullclone() const { return new_ptr(*this); } vector< vector > StandardCKM::getMatrix(unsigned int nFamilies) const { vector< vector > ckm(nFamilies, vector(nFamilies, 0.0)); for ( unsigned int i = 0; i < nFamilies; ++i ) ckm[i][i] = 1.0; if ( nFamilies <= 1 ) return ckm; double s12 = sin(theta12); double c12 = cos(theta12); if ( nFamilies == 2 ) { ckm[0][0] = sqr(c12); ckm[0][1] = sqr(s12); ckm[1][0] = sqr(s12); ckm[1][1] = sqr(c12); return ckm; } double s13 = sin(theta13); double c13 = cos(theta13); double s23 = sin(theta23); double c23 = cos(theta23); double cd = cos(delta); ckm[0][0] = sqr(c12*c13); ckm[0][1] = sqr(s12*c13); ckm[0][2] = sqr(s13); ckm[1][0] = sqr(s12*c23)+sqr(c12*s23*s13)+2.0*s12*c23*c12*s23*s13*cd; ckm[1][1] = sqr(c12*c23)+sqr(s12*s23*s13)-2.0*c12*c23*s12*s23*s13*cd; ckm[1][2] = sqr(s23*c13); ckm[2][0] = sqr(s12*s23)+sqr(c12*c23*s13)-2.0*s12*s23*c12*c23*s13*cd; ckm[2][1] = sqr(c12*s23)+sqr(s12*c23*s13)+2.0*c12*s23*s12*c23*s13*cd; ckm[2][2] = sqr(c23*c13); return ckm; } vector< vector > > StandardCKM::getUnsquaredMatrix(unsigned int nFamilies) const { vector< vector > > ckm(nFamilies, vector >(nFamilies, 0.0)); for ( unsigned int i = 0; i < nFamilies; ++i ) ckm[i][i] = 1.0; if ( nFamilies <= 1 ) return ckm; double s12 = sin(theta12); double c12 = cos(theta12); if ( nFamilies == 2 ) { ckm[0][0] = sqr(c12); ckm[0][1] = sqr(s12); ckm[1][0] = sqr(s12); ckm[1][1] = sqr(c12); return ckm; } double s13 = sin(theta13); double c13 = cos(theta13); double s23 = sin(theta23); double c23 = cos(theta23); double cd = cos(delta); double sd = sin(delta); complex ii(0.,1.); complex expid = cd+ii*sd; complex expmid = cd-ii*sd; ckm[0][0] = c12*c13; ckm[0][1] = s12*c13; ckm[0][2] = s13*expmid; ckm[1][0] = -s12*c23-c12*s23*s13*expid; ckm[1][1] = c12*c23-s12*s23*s13*expid; ckm[1][2] = s23*c13; ckm[2][0] = s12*s23-c12*c23*s13*expid; ckm[2][1] = -c12*s23-s12*c23*s13*expid; ckm[2][2] = c23*c13; return ckm; } void StandardCKM::persistentOutput(PersistentOStream & os) const { os << theta12 << theta13 << theta23 << delta; } void StandardCKM::persistentInput(PersistentIStream & is, int) { is >> theta12 >> theta13 >> theta23 >> delta; } ClassDescription StandardCKM::initStandardCKM; void StandardCKM::Init() { static Parameter interfaceTheta12 ("theta_12", "The mixing angle between the first and second generation in the standard " "parameterization of the CKM matrix", &StandardCKM::theta12, 0.2262, 0.0, Constants::twopi, false, false, true); static Parameter interfaceTheta13 ("theta_13", "The mixing angle between the first and third generation in the standard " "parameterization of the CKM matrix", &StandardCKM::theta13, 0.0037, 0.0, Constants::twopi, false, false, true); static Parameter interfaceTheta23 ("theta_23", "The mixing angle between the second and third generation in the standard " "parameterization of the CKM matrix", &StandardCKM::theta23, 0.0413, 0.0, Constants::twopi, false, false, true); static Parameter interfaceDelta ("delta", "The phase angle in the standard " "parameterization of the CKM matrix", &StandardCKM::delta, 1.05, 0.0, Constants::twopi, false, false, true); } herwig++-2.6.0.orig/Models/StandardModel/SMFFPVertex.cc0000644000175000017500000000450011754474773023321 0ustar sylvestresylvestre// -*- C++ -*- // // SMFFPVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the StandardModelFFPVertex class. // #include "SMFFPVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; SMFFPVertex::SMFFPVertex() : _charge(17,0.0), _couplast(0.), _q2last(0.*GeV2) { orderInGem(1); orderInGs(0); } void SMFFPVertex::doinit() { // PDG codes for the particles // the quarks for(int ix=1;ix<7;++ix) { addToList(-ix, ix, 22); } // the leptons for(int ix=11;ix<17;ix+=2) { addToList(-ix, ix, 22); } for(int ix=1;ix<4;++ix) { _charge[2*ix-1] = generator()->standardModel()->ed(); _charge[2*ix ] = generator()->standardModel()->eu(); _charge[2*ix+9 ] = generator()->standardModel()->ee(); _charge[2*ix+10] = generator()->standardModel()->enu(); } FFVVertex::doinit(); } void SMFFPVertex::persistentOutput(PersistentOStream & os) const { os << _charge; } void SMFFPVertex::persistentInput(PersistentIStream & is, int) { is >> _charge; } ClassDescription SMFFPVertex::initSMFFPVertex; // Definition of the static class description member. void SMFFPVertex::Init() { static ClassDocumentation documentation ("The SMFFPVertex class is the implementation of" "the coupling of the photon to the Standard Model fermions"); } // coupling for FFP vertex void SMFFPVertex::setCoupling(Energy2 q2,tcPDPtr aa,tcPDPtr,tcPDPtr) { // first the overall normalisation if(q2!=_q2last||_couplast==0.) { _couplast = -electroMagneticCoupling(q2); _q2last=q2; } norm(_couplast); // the left and right couplings int iferm=abs(aa->id()); if((iferm>=1 && iferm<=6)||(iferm>=11 &&iferm<=16)) { left(_charge[iferm]); right(_charge[iferm]); } else throw HelicityConsistencyError() << "SMGFFPVertex::setCoupling " << "Unknown particle in photon vertex" << Exception::runerror; } herwig++-2.6.0.orig/Models/StandardModel/RunningMassBase.cc0000644000175000017500000000237611754474773024320 0ustar sylvestresylvestre// -*- C++ -*- // // RunningMassBase.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the RunningMassBase class. // #include "RunningMassBase.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; void RunningMassBase::persistentOutput(PersistentOStream & os) const { os << ounit(_theMass, GeV); } void RunningMassBase::persistentInput(PersistentIStream & is, int) { is >> iunit(_theMass, GeV); } AbstractClassDescription RunningMassBase::initRunningMassBase; // Definition of the static class description member. void RunningMassBase::Init() { static ClassDocumentation documentation ("The RunningMassBase class is the base class for running mass" "calculations"); } void RunningMassBase::doinit() { _theMass = mass(); Interfaced::doinit(); } herwig++-2.6.0.orig/Models/StandardModel/SMFFGVertex.cc0000644000175000017500000000332711754474773023316 0ustar sylvestresylvestre// -*- C++ -*- // // SMFFGVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the StandardModelFFGVertex class. // #include "SMFFGVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/StandardModel/StandardModelBase.h" using namespace Herwig; using namespace ThePEG; NoPIOClassDescription SMFFGVertex::initSMFFGVertex; // Definition of the static class description member. void SMFFGVertex::Init() { static ClassDocumentation documentation ("The SMFFGVertex class is the implementation of" "the coupling of the gluon to the Standard Model fermions"); } // coupling for FFG vertex #ifndef NDEBUG void SMFFGVertex::setCoupling(Energy2 q2,tcPDPtr aa,tcPDPtr,tcPDPtr) { #else void SMFFGVertex::setCoupling(Energy2 q2,tcPDPtr,tcPDPtr,tcPDPtr) { #endif // first the overall normalisation if(q2!=_q2last||_couplast==0.) { _couplast = -strongCoupling(q2); _q2last=q2; } norm(_couplast); // the left and right couplings assert( abs(aa->id()) >= 1 && abs(aa->id()) <= 6 ); left(1.); right(1.); } SMFFGVertex::SMFFGVertex() : _couplast(0.), _q2last(ZERO) { orderInGs(1); orderInGem(0); } void SMFFGVertex::doinit() { // PDG codes for the particles for(int ix=1;ix<7;++ix) { addToList(-ix,ix,21); } FFVVertex::doinit(); } herwig++-2.6.0.orig/Models/StandardModel/RunningMass.h0000644000175000017500000000767111754474773023372 0ustar sylvestresylvestre// -*- C++ -*- // // RunningMass.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_RunningMass_H #define HERWIG_RunningMass_H // // This is the declaration of the RunningMass class. #include "RunningMassBase.h" #include "StandardModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Models * * Implementation of the 1 or 2 loop QCD running mass. * * @see RunningMassBase */ class RunningMass: public RunningMassBase { public: /** * Default constructor. */ RunningMass() : _theQCDOrder(1), _theMaxFlav(6), _lightOption(1), _heavyOption(0) {} public: /** * Return the running mass for a given scale \f$q^2\f$ and particle type. * @param q2 The scale \f$q^2\f$. * @param part The ParticleData pointer */ virtual Energy value(Energy2 q2,tcPDPtr part) const; /** * Return the masses used. */ virtual vector mass() 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription initRunningMass; /** * Private and non-existent assignment operator. */ RunningMass & operator=(const RunningMass &); private: /** * Order in alphaS. */ unsigned int _theQCDOrder; /** * The maximum number of flavours. */ unsigned int _theMaxFlav; /** * The power for the running mass calculation. */ vector _thePower; /** * The coefficients for the running mass calculation. */ vector _theCoefficient; /** * Pointer to the StandardModel object. */ tcSMPtr _theStandardModel; /** * Option to use pole masses for u,d,s */ unsigned int _lightOption; /** * Option to use pole masses for c,b */ unsigned int _heavyOption; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of RunningMass. */ template <> struct BaseClassTrait { /** Typedef of the base class of RunningMass. */ typedef Herwig::RunningMassBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::RunningMass"; } }; /** @endcond */ } #endif /* HERWIG_RunningMass_H */ herwig++-2.6.0.orig/Models/StandardModel/SMWWWWVertex.h0000644000175000017500000001101411754474773023361 0ustar sylvestresylvestre// -*- C++ -*- // // SMWWWWVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMWWWWVertex_H #define HERWIG_SMWWWWVertex_H // // This is the declaration of the SMWWWWVertex class. // #include "ThePEG/Helicity/Vertex/Vector/VVVVVertex.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/PDT/EnumParticles.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * The SMWWWWVertex class is the implementation of the * coupling of four electroweak gauge bosons in the SM. * It inherits from VVVVVertex nad implements the setCoupling member. * * @see VVVVVVertex * @see VertexBase */ class SMWWWWVertex: public VVVVVertex { public: /** * Default constructor. */ SMWWWWVertex(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the fourth particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3, tcPDPtr part4); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription initSMWWWWVertex; /** * Private and non-existent assignment operator. */ SMWWWWVertex & operator=(const SMWWWWVertex &); /** * Intermediate particles */ //@{ /** * The ParticleData pointer for the photon */ tcPDPtr _gamma; /** * The ParticleData pointer for the \f$Z^0\f$ boson. */ tcPDPtr _Z0; /** * The ParticleData pointer for the \f$W^+\f$ boson. */ tcPDPtr _wplus; /** * The ParticleData pointer for the \f$W^-\f$ boson. */ tcPDPtr _wminus; //@} /** * Storage of the couplings. */ //@{ /** * The last value of the electroweak coupling calculated. */ Complex _couplast; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 _q2last; /** * The factors for the different bosons. */ vector _vfact; /** * \f$\sin^2\theta_W\f$. */ double _sw2; /** * \f$\cos^2\theta_W\f$. */ double _cw2; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SMWWWWVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of SMWWWWVertex. */ typedef ThePEG::Helicity::VVVVVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::SMWWWWVertex"; } }; /** @endcond */ } #endif /* HERWIG_SMWWWWVertex_H */ herwig++-2.6.0.orig/Models/StandardModel/RunningMassBase.h0000644000175000017500000000622711754474773024161 0ustar sylvestresylvestre// -*- C++ -*- // // RunningMassBase.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_RunningMassBase_H #define HERWIG_RunningMassBase_H // // This is the declaration of the RunningMassBase class. #include "ThePEG/Interface/Interfaced.h" #include "ThePEG/StandardModel/StandardModelBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Models * * Base class for running mass calculations. */ class RunningMassBase: public Interfaced { public: /** * Return the running mass for a given scale \f$q^2\f$ and particle type. * @param q2 The scale \f$q^2\f$. * @param part The ParticleData pointer */ virtual Energy value(Energy2 q2,tcPDPtr part) const = 0; /** * Return the masses used. */ virtual vector mass() const = 0; /** * Return the \f$i\f$ th element of the mass array. * @param i The element to return */ Energy massElement(unsigned int i) const {return _theMass[i];} 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe an abstract base class with persistent data. */ static AbstractClassDescription initRunningMassBase; /** * Private and non-existent assignment operator. */ RunningMassBase & operator=(const RunningMassBase &); private: /** * Flavour thresholds and the masses, set at initialization. */ vector _theMass; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of RunningMassBase. */ template <> struct BaseClassTrait { /** Typedef of the base class of RunningMassBase. */ typedef Interfaced NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::RunningMassBase"; } }; /** @endcond */ } #endif /* HERWIG_RunningMassBase_H */ herwig++-2.6.0.orig/Models/StandardModel/SMHGGVertex.h0000644000175000017500000001145011754474773023157 0ustar sylvestresylvestre// -*- C++ -*- // // SMHGGVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMHGGVertex_H #define HERWIG_SMHGGVertex_H // // This is the declaration of the SMHGGVertex class. // #include "Herwig++/Models/General/VVSLoopVertex.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/PDT/EnumParticles.h" namespace Herwig { using namespace ThePEG; /** * The SMHGGVertex class implements the * setCoupling member for the Standard Model effective * vertex Higgs-gluon-gluon. */ class SMHGGVertex: public VVSLoopVertex { public: /** * The default constructor. */ SMHGGVertex(); /** @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(); /** * Calculate couplings *@param q2 Scale at which to evaluate coupling *@param part1 ParticleData pointer to first particle *@param part2 ParticleData pointer to first particle *@param part3 ParticleData pointer to first particle */ virtual void setCoupling (Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSMHGGVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SMHGGVertex & operator=(const SMHGGVertex &); /** * Storage of couplings */ //@{ /** * Last value of the coupling calculated */ Complex _couplast; /** * The scale \f$q^2\f$ at which coupling was last evaluated */ Energy2 _q2last; //@} /** * Pointer to Standard Model object */ tcHwSMPtr _theSM; /** * Mass of W-boson for higgs coupling */ Energy _mw; /** * define quark mass scheme (fixed/running) */ unsigned int massopt; /** * The minimum flavour number in quark loops */ int _minloop; /** * The maximum flavour number in quark loops */ int _maxloop; /** * Loop calculations: A1 for spin-1/2 particles (see details in ``Higgs Hunter's Guide'') */ Complex Af(double labmda) const; /** * Loop calculations: W2 function (see details in NPB297,221) */ Complex W2(double lambda) const; /** * Switch between two representations of coefficients (_a00,_a11,_a12,_a21,_a22,_aEp): * suitable for the simplified H-g-g and H-gamma-gamma vertices and * suitable for the Passarino-Veltman tensor reduction scheme */ unsigned int _CoefRepresentation; }; } // CLASSDOC OFF #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SMHGGVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SMHGGVertex. */ typedef Herwig::VVSLoopVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SMHGGVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SMHGGVertex"; } }; /** @endcond */ } #endif /* HERWIG_SMHGGVertex_H */ herwig++-2.6.0.orig/Models/StandardModel/SMWWHVertex.cc0000644000175000017500000000406611754474773023362 0ustar sylvestresylvestre// -*- C++ -*- // // SMWWHVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the WWHVertex class. // #include "SMWWHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG::Helicity; SMWWHVertex::SMWWHVertex() : _couplast(0.), _q2last(ZERO), _mw(ZERO), _zfact(0.) { orderInGem(1); orderInGs(0); } void SMWWHVertex::doinit() { addToList(24,-24, 25); addToList(23, 23, 25); // parameters _mw = getParticleData(ThePEG::ParticleID::Wplus)->mass(); _zfact = 1./(1.-sin2ThetaW()); // base class VVSVertex::doinit(); } void SMWWHVertex::persistentOutput(PersistentOStream & os) const { os << ounit(_mw,GeV) << _zfact; } void SMWWHVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(_mw,GeV) >> _zfact; } ClassDescriptionSMWWHVertex::initSMWWHVertex; // Definition of the static class description member. void SMWWHVertex::Init() { static ClassDocumentation documentation ("The SMWWHVertex class is the implementation" " of the helicity amplitude calculation for the coupling of the Standard" " Model electroweak gauge bosons to the Higgs."); } void SMWWHVertex::setCoupling(Energy2 q2,tcPDPtr aa,tcPDPtr, tcPDPtr) { int ibos=abs(aa->id()); // first the overall normalisation if(q2!=_q2last||_couplast==0.) { _couplast = weakCoupling(q2) * UnitRemoval::InvE * _mw; _q2last=q2; } if(ibos==24) norm(_couplast); else if(ibos==23) norm(_couplast*_zfact); else throw HelicityConsistencyError() << "SMWWHVertex::setCoupling " << "Invalid particles in WWH Vertex" << Exception::runerror; } herwig++-2.6.0.orig/Models/StandardModel/SMHHHVertex.cc0000644000175000017500000000321711754474773023321 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SMHHHVertex class. // #include "SMHHHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; SMHHHVertex::SMHHHVertex() : ratio_(ZERO), couplast_(0.), q2last_(ZERO) { orderInGem(1); orderInGs (0); } IBPtr SMHHHVertex::clone() const { return new_ptr(*this); } IBPtr SMHHHVertex::fullclone() const { return new_ptr(*this); } void SMHHHVertex::persistentOutput(PersistentOStream & os) const { os << ounit(ratio_,GeV); } void SMHHHVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(ratio_,GeV); } ClassDescription SMHHHVertex::initSMHHHVertex; // Definition of the static class description member. void SMHHHVertex::Init() { static ClassDocumentation documentation ("The SMHHHVertex class implements the triple Higgs" " coupling in the Standard Model."); } void SMHHHVertex::doinit() { addToList(25,25,25); SSSVertex::doinit(); ratio_ = -1.5*sqr(getParticleData(ParticleID::h0)->mass())/ getParticleData(ParticleID::Wplus)->mass(); } #ifndef NDEBUG void SMHHHVertex::setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3) { #else void SMHHHVertex::setCoupling(Energy2 q2,tcPDPtr,tcPDPtr,tcPDPtr) { #endif assert(part1->id()==ParticleID::h0 && part2->id()==ParticleID::h0 && part3->id()==ParticleID::h0 ); if(q2!=q2last_||couplast_==0.) { couplast_ = weakCoupling(q2)*ratio_*UnitRemoval::InvE; q2last_=q2; } norm(couplast_); } herwig++-2.6.0.orig/Models/Sextet/0000755000175000017500000000000011756464206017465 5ustar sylvestresylvestreherwig++-2.6.0.orig/Models/Sextet/SextetGSSVertex.h0000644000175000017500000000436311754474773022703 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_SextetGSSVertex_H #define HERWIG_SextetGSSVertex_H // // This is the declaration of the SextetGSSVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the SextetGSSVertex class. * * @see \ref SextetGSSVertexInterfaces "The interfaces" * defined for SextetGSSVertex. */ class SextetGSSVertex: public Helicity::VSSVertex { public: /** * The default constructor. */ SextetGSSVertex() {} /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3); public: /** * 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. */ SextetGSSVertex & operator=(const SextetGSSVertex &); private: /** * Store the value of the coupling when last evaluated */ Complex coupLast_; /** * Store the scale at which coupling was last evaluated */ Energy2 q2Last_; }; } #endif /* HERWIG_SextetGSSVertex_H */ herwig++-2.6.0.orig/Models/Sextet/SextetModel.h0000644000175000017500000001521411754474773022106 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_SextetModel_H #define HERWIG_SextetModel_H // // This is the declaration of the SextetModel class. // #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSSVertex.h" #include "SextetModel.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Models * * This class is used instead of the StandardModel class for the * * * @see \ref SextetModelInterfaces "The interfaces" * defined for SextetModel. */ class SextetModel: public StandardModel { public: /** * The default constructor. */ SextetModel() : g1L_(3,0.), g1R_(3,0.), g1pR_(3,0.), g1ppR_(3,0.), g2_(3,0.), g2p_(3,0.), g3L_(3,0.), enableScalarSingletY43_(false),enableScalarSingletY13_(false), enableScalarSingletY23_(false),enableScalarTripletY13_(false), enableVectorDoubletY16_(false),enableVectorDoubletY56_(false) { useMe(); } /** * Access to the couplings */ //@{ /** * The \f$SU(2)\f$ quark-doublet coupling to \f$\Phi_{6,1,1/3}\f$ */ const vector & g1L() const {return g1L_;} /** * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,1/3}\f$ */ const vector & g1R() const {return g1R_;} /** * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,-2/3}\f$ */ const vector & g1pR() const {return g1pR_;} /** * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,4/3}\f$ */ const vector & g1ppR() const {return g1ppR_;} /** * The coupling to \f$V^\mu_{6,2,-1/6}\f$ */ const vector & g2() const {return g2_;} /** * The coupling to \f$V^\mu_{6,2,5/6}\f$ */ const vector & g2p() const {return g2p_;} /** * Coupling to \f$\Phi_{6,3,1/3}\f$ */ const vector & g3L() const {return g3L_;} //@} /** * Switches to decide which particles to include */ //@{ /** * Scalar Singlet \f$Y = 4/3\f$ */ bool ScalarSingletY43Enabled() const {return enableScalarSingletY43_;} /** * Scalar Singlet \f$Y = -1/3\f$ */ bool ScalarSingletY13Enabled() const {return enableScalarSingletY13_;} /** * Scalar Singlet \f$Y = -2/3\f$ */ bool ScalarSingletY23Enabled() const {return enableScalarSingletY23_;} /** * Scalar Triplet \f$Y = 1/3\f$ */ bool ScalarTripletY13Enabled() const {return enableScalarTripletY13_;} /** * Vector Doublet \f$Y = -1/6\f$ */ bool VectorDoubletY16Enabled() const {return enableVectorDoubletY16_;} /** * Vector Doublet \f$Y = 5/6\f$ */ bool VectorDoubletY56Enabled() const {return enableVectorDoubletY56_;} //@} 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(); /** * Member to implement the command to enable particular diquarks */ string doEnable(string command); //@} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SextetModel & operator=(const SextetModel &); private: /** * Pointers to the vertex objects */ //@{ /** * Pointer to the object handling the strong coupling of a * vector sextet to one gluon */ AbstractVVVVertexPtr VVVVertex_; /** * Pointer to the object handling the strong coupling of a * vector sextet to two gluons */ AbstractVVVVVertexPtr VVVVVertex_; /** * Pointer to the object handling the strong coupling of a * scalar sextet to one gluon */ AbstractVSSVertexPtr VSSVertex_; /** * Pointer to the object handling the strong coupling of a * scalar sextet to two gluons */ AbstractVVSSVertexPtr VVSSVertex_; /** * Pointer to the object handling the coupling of two quarks * to a vector sextet */ AbstractFFVVertexPtr FFVVertex_; /** * Pointer to the object handling the coupling of two quarks * to a scalar sextet */ AbstractFFSVertexPtr FFSVertex_; //@} /** * Couplings */ //@{ /** * The \f$SU(2)\f$ quark-doublet coupling to \f$\Phi_{6,1,1/3}\f$ */ vector g1L_; /** * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,1/3}\f$ */ vector g1R_; /** * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,-2/3}\f$ */ vector g1pR_; /** * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,4/3}\f$ */ vector g1ppR_; /** * The coupling to \f$V^\mu_{6,2,-1/6}\f$ */ vector g2_; /** * The coupling to \f$V^\mu_{6,2,5/6}\f$ */ vector g2p_; /** * Coupling to \f$\Phi_{6,3,1/3}\f$ */ vector g3L_; //@} /** * Switches to decide which particles to include */ //@{ /** * Scalar Singlet \f$Y = 4/3\f$ */ bool enableScalarSingletY43_; /** * Scalar Singlet \f$Y = -1/3\f$ */ bool enableScalarSingletY13_; /** * Scalar Singlet \f$Y = -2/3\f$ */ bool enableScalarSingletY23_; /** * Scalar Triplet \f$Y = 1/3\f$ */ bool enableScalarTripletY13_; /** * Vector Doublet \f$Y = -1/6\f$ */ bool enableVectorDoubletY16_; /** * Vector Doublet \f$Y = 5/6\f$ */ bool enableVectorDoubletY56_; //@} }; } #endif /* HERWIG_SextetModel_H */ herwig++-2.6.0.orig/Models/Sextet/SextetGGVVVertex.h0000644000175000017500000000434511754474773023020 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_SextetGGVVVertex_H #define HERWIG_SextetGGVVVertex_H // // This is the declaration of the SextetGGVVVertex class. // #include "ThePEG/Helicity/Vertex/Vector/VVVVVertex.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the SextetGGVVVertex class. * * @see \ref SextetGGVVVertexInterfaces "The interfaces" * defined for SextetGGVVVertex. */ class SextetGGVVVertex: public Helicity::VVVVVertex { public: /** * The default constructor. */ SextetGGVVVertex() {} /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle *@param part4 The fourth interacting particle */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3, tcPDPtr part4); public: /** * 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. */ SextetGGVVVertex & operator=(const SextetGGVVVertex &); private: /** * The scale at which the coupling was last evaluated */ Energy2 q2Last_; /** * The value of the coupling when it was last evaluated */ Complex coupLast_; }; } #endif /* HERWIG_SextetGGVVVertex_H */ herwig++-2.6.0.orig/Models/Sextet/SextetFFSVertex.cc0000644000175000017500000001437611754474773023030 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SextetFFSVertex class. // #include "SextetFFSVertex.h" #include "SextetModel.h" #include "SextetParticles.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" using namespace Herwig; IBPtr SextetFFSVertex::clone() const { return new_ptr(*this); } IBPtr SextetFFSVertex::fullclone() const { return new_ptr(*this); } void SextetFFSVertex::persistentOutput(PersistentOStream & os) const { os << g1L_ << g1R_ << g1pR_ << g1ppR_ << g3L_; } void SextetFFSVertex::persistentInput(PersistentIStream & is, int) { is >> g1L_ >> g1R_ >> g1pR_ >> g1ppR_ >> g3L_; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeSextetFFSVertex("Herwig::SextetFFSVertex", "HwSextetModel.so"); void SextetFFSVertex::Init() { static ClassDocumentation documentation ("The SextetFFSVertex class implements the coupling of two " "fermions to a scalar sextet particle."); } void SextetFFSVertex::doinit() { orderInGs (0); orderInGem(1); SextetModelPtr model = dynamic_ptr_cast(generator()->standardModel()); if(!model) throw Exception() << "Must be using the SextetModel" << " in SextetGSSVertex::doinit()" << Exception::runerror; // extract the couplings g1L_ = model->g1L(); g1R_ = model->g1R(); g1pR_ = model->g1pR(); g1ppR_ = model->g1ppR(); g3L_ = model->g3L(); // add the enabled particles if(model->ScalarSingletY43Enabled()) { for(long ix=0;ix<3;++ix) { long iu = 2*ix + 2; if(g1ppR_[ix]!=0.) { addToList( iu, iu, ParticleID::ScalarDQSingletY43bar); addToList( -iu, -iu, ParticleID::ScalarDQSingletY43); } } } if(model->ScalarSingletY13Enabled()) { for(long ix=0;ix<3;++ix) { long iu = 2*ix + 2; long id = 2*ix + 1; if(g1L_[ix]!=0. || g1R_[ix]!=0.) { addToList( id, iu, ParticleID::ScalarDQSingletY13bar); addToList( -id, -iu, ParticleID::ScalarDQSingletY13); } } } if(model->ScalarSingletY23Enabled()) { for(long ix=0;ix<3;++ix) { long id = 2*ix + 1; if(g1pR_[ix]!=0. ) { addToList( id, id,ParticleID::ScalarDQSingletY23bar); addToList(-id,-id,ParticleID::ScalarDQSingletY23); } } } if(model->ScalarTripletY13Enabled()) { for(long ix=0;ix<3;++ix) { long iu = 2*ix + 2; long id = 2*ix + 1; if(g3L_[ix]!=0. ) { addToList( iu, iu, ParticleID::ScalarDQTripletPbar); addToList( -iu, -iu, ParticleID::ScalarDQTripletP); addToList( iu, id, ParticleID::ScalarDQTriplet0bar); addToList( -iu, -id, ParticleID::ScalarDQTriplet0); addToList( id, id, ParticleID::ScalarDQTripletMbar); addToList( -id, -id, ParticleID::ScalarDQTripletM); } } } Helicity::FFSVertex::doinit(); } void SextetFFSVertex::setCoupling(Energy2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3) { long q1ID=(abs(part1->id())), q2ID=(abs(part2->id())), sDQID=(abs(part3->id())); //check scalar diquark assert( sDQID == ParticleID::ScalarDQSingletY43 || sDQID == ParticleID::ScalarDQSingletY13 || sDQID == ParticleID::ScalarDQSingletY23 || sDQID == ParticleID::ScalarDQTripletP || sDQID == ParticleID::ScalarDQTriplet0 || sDQID == ParticleID::ScalarDQTripletM); //check quarks assert(!(q1ID>6) && !(q2ID>6)); bool part1Up = (q1ID==2 || q1ID==4 || q1ID==6) ? true : false; bool part2Up = (q2ID==2 || q2ID==4 || q2ID==6) ? true : false; Complex cRight, cLeft, prefactor(1.); if(sDQID==ParticleID::ScalarDQSingletY43){ //should both be up type assert(part1Up && part2Up); if(q1ID==2) cRight=Complex(g1ppR_[0]); else if(q1ID==4) cRight=Complex(g1ppR_[1]); else cRight=Complex(g1ppR_[2]); cLeft=Complex(0.); } if(sDQID==ParticleID::ScalarDQSingletY13){ //should be one up one down type assert((part1Up && !part2Up) || (!part1Up && part2Up)); long upType; if(part1Up) upType=q1ID; else upType=q2ID; if(upType==2){ cRight=Complex(g1R_[0]); cLeft=Complex(2.*g1L_[0]); } else if(upType==4){ cRight=Complex(g1R_[1]); cLeft=Complex(2.*g1L_[1]); } else cRight=Complex(g1R_[2]);{ cLeft=Complex(2.*g1L_[2]); } } if(sDQID==ParticleID::ScalarDQSingletY23){ //should both be down type assert(!part1Up && !part2Up); if(q1ID==1) cRight=Complex(g1pR_[0]); else if(q1ID==3) cRight=Complex(g1pR_[1]); else cRight=Complex(g1pR_[2]); cLeft=Complex(0.); } if(sDQID==ParticleID::ScalarDQTripletP){ //should both be up type assert(part1Up && part2Up); if(q1ID==2) cLeft=Complex(g3L_[0]); else if(q1ID==4) cLeft=Complex(g3L_[1]); else cLeft=Complex(g3L_[2]); cRight=Complex(0.); } if(sDQID==ParticleID::ScalarDQTriplet0){ //should both one up and down type assert((part1Up && !part2Up) || (!part1Up && part2Up)); //possibly doesn't couple long upType; if(part1Up) upType=q1ID; else upType=q2ID; if(upType==2) cLeft=Complex(g3L_[0]); else if(upType==4) cLeft=Complex(g3L_[1]); else cLeft=Complex(g3L_[2]); cRight=Complex(0.); } if(sDQID==ParticleID::ScalarDQTripletM){ //should one both be down type assert(!part1Up && !part2Up); if(q1ID==1) cLeft=Complex(g3L_[0]); else if(q1ID==3) cLeft=Complex(g3L_[1]); else cLeft=Complex(g3L_[2]); cRight=Complex(0.); prefactor=Complex(-1.); } left(cLeft); right(cRight); norm(prefactor); } herwig++-2.6.0.orig/Models/Sextet/SextetGGVVVertex.cc0000644000175000017500000000445611754474773023161 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SextetGGVVVertex class. // #include "SextetGGVVVertex.h" #include "SextetModel.h" #include "SextetParticles.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" using namespace Herwig; IBPtr SextetGGVVVertex::clone() const { return new_ptr(*this); } IBPtr SextetGGVVVertex::fullclone() const { return new_ptr(*this); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeNoPIOClass describeSextetGGVVVertex("Herwig::SextetGGVVVertex", "HwSextetModel.so"); void SextetGGVVVertex::Init() { static ClassDocumentation documentation ("The SextetGGVVVertex class implements the coupling of two gluons to two vector" " sextet particles."); } void SextetGGVVVertex::doinit() { orderInGs(2); orderInGem(0); SextetModelPtr model = dynamic_ptr_cast(generator()->standardModel()); if(!model) throw Exception() << "Must be using the SextetModel" << " in SextetGGVVVertex::doinit()" << Exception::runerror; if(model->VectorDoubletY16Enabled()) { addToList(21,21,ParticleID::VectorDQY16P, ParticleID::VectorDQY16Pbar); addToList(21,21,ParticleID::VectorDQY16M, ParticleID::VectorDQY16Mbar); } if(model->VectorDoubletY56Enabled()) { addToList(21,21,ParticleID::VectorDQY56P, ParticleID::VectorDQY56Pbar); addToList(21,21,ParticleID::VectorDQY56M, ParticleID::VectorDQY56Mbar); } VVVVVertex::doinit(); } void SextetGGVVVertex::setCoupling(Energy2 q2, tcPDPtr , tcPDPtr , tcPDPtr , tcPDPtr ) { if(q2 != q2Last_ || coupLast_ == 0. ) { q2Last_ = q2; coupLast_ = sqr(strongCoupling(q2)); } norm(coupLast_); setType(1); setOrder(0,1,2,3); } herwig++-2.6.0.orig/Models/Sextet/Makefile.in0000644000175000017500000005275411756461700021543 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Models/Sextet DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwSextetModel_la_LIBADD = am_HwSextetModel_la_OBJECTS = SextetModel.lo SextetGSSVertex.lo \ SextetGGSSVertex.lo SextetGVVVertex.lo SextetGGVVVertex.lo \ SextetFFSVertex.lo SextetFFVVertex.lo HwSextetModel_la_OBJECTS = $(am_HwSextetModel_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwSextetModel_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwSextetModel_la_LDFLAGS) \ $(LDFLAGS) -o $@ @WANT_SEXTET_TRUE@am_HwSextetModel_la_rpath = -rpath $(pkglibdir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwSextetModel_la_SOURCES) DIST_SOURCES = $(HwSextetModel_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @WANT_SEXTET_TRUE@pkglib_LTLIBRARIES = HwSextetModel.la HwSextetModel_la_SOURCES = SextetParticles.h \ SextetModel.cc SextetModel.h SextetModel.fh \ SextetGSSVertex.cc SextetGSSVertex.h \ SextetGGSSVertex.cc SextetGGSSVertex.h \ SextetGVVVertex.cc SextetGVVVertex.h \ SextetGGVVVertex.cc SextetGGVVVertex.h \ SextetFFSVertex.cc SextetFFSVertex.h \ SextetFFVVertex.cc SextetFFVVertex.h HwSextetModel_la_LDFLAGS = -module -version-info 1:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Models/Sextet/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Models/Sextet/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwSextetModel.la: $(HwSextetModel_la_OBJECTS) $(HwSextetModel_la_DEPENDENCIES) $(EXTRA_HwSextetModel_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwSextetModel_la_LINK) $(am_HwSextetModel_la_rpath) $(HwSextetModel_la_OBJECTS) $(HwSextetModel_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SextetFFSVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SextetFFVVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SextetGGSSVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SextetGGVVVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SextetGSSVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SextetGVVVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SextetModel.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Models/Sextet/SextetGVVVertex.cc0000644000175000017500000000432111754474773023041 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SextetGVVVertex class. // #include "SextetModel.h" #include "SextetGVVVertex.h" #include "SextetParticles.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" using namespace Herwig; IBPtr SextetGVVVertex::clone() const { return new_ptr(*this); } IBPtr SextetGVVVertex::fullclone() const { return new_ptr(*this); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeNoPIOClass describeSextetGVVVertex("Herwig::SextetGVVVertex", "HwSextetModel.so"); void SextetGVVVertex::Init() { static ClassDocumentation documentation ("The SextetGVVVertex class implements the coupling of the gluon to two" " vector sextet particles"); } void SextetGVVVertex::doinit() { orderInGs(1); orderInGem(0); SextetModelPtr model = dynamic_ptr_cast(generator()->standardModel()); if(!model) throw Exception() << "Must be using the SextetModel" << " in SextetGVVVertex::doinit()" << Exception::runerror; if(model->VectorDoubletY16Enabled()) { addToList(21,ParticleID::VectorDQY16P, ParticleID::VectorDQY16Pbar); addToList(21,ParticleID::VectorDQY16M, ParticleID::VectorDQY16Mbar); } if(model->VectorDoubletY56Enabled()) { addToList(21,ParticleID::VectorDQY56P, ParticleID::VectorDQY56Pbar); addToList(21,ParticleID::VectorDQY56M, ParticleID::VectorDQY56Mbar); } VVVVertex::doinit(); } void SextetGVVVertex::setCoupling(Energy2 q2, tcPDPtr , tcPDPtr , tcPDPtr ) { if(q2 != q2Last_ || coupLast_ == 0.) { q2Last_ = q2; coupLast_ = strongCoupling(q2); } norm(coupLast_); } herwig++-2.6.0.orig/Models/Sextet/SextetFFVVertex.cc0000644000175000017500000001133211754474773023020 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SextetFFVVertex class. // #include "SextetFFVVertex.h" #include "SextetModel.h" #include "SextetParticles.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" using namespace Herwig; IBPtr SextetFFVVertex::clone() const { return new_ptr(*this); } IBPtr SextetFFVVertex::fullclone() const { return new_ptr(*this); } void SextetFFVVertex::persistentOutput(PersistentOStream & os) const { os << g2_ << g2p_ ; } void SextetFFVVertex::persistentInput(PersistentIStream & is, int) { is >> g2_ >> g2p_ ; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeSextetFFVVertex("Herwig::SextetFFVVertex", "HwSextetModel.so"); void SextetFFVVertex::Init() { static ClassDocumentation documentation ("The SextetFFVVertex class implements the coupling of two " "fermions to a scalar sextet particle."); } void SextetFFVVertex::doinit() { orderInGs (0); orderInGem(1); SextetModelPtr model = dynamic_ptr_cast(generator()->standardModel()); if(!model) throw Exception() << "Must be using the SextetModel" << " in SextetGSSVertex::doinit()" << Exception::runerror; // extract the couplings g2_ = model->g2(); g2p_= model->g2p(); // add the enabled particles if(model->VectorDoubletY16Enabled()) { for(long ix=0;ix<3;++ix) { long iu = 2*ix + 2; long id = 2*ix + 1; if(g2_[ix]!=0.) { addToList( -id, -iu, ParticleID::VectorDQY16P); addToList( id, iu, ParticleID::VectorDQY16Pbar); addToList( -id, -id, ParticleID::VectorDQY16M); addToList( id, id, ParticleID::VectorDQY16Mbar); } } } if(model->VectorDoubletY56Enabled()) { for(long ix=0;ix<3;++ix) { long iu = 2*ix + 2; long id = 2*ix + 1; if(g2p_[ix]!=0.) { addToList( -iu, -iu, ParticleID::VectorDQY56P); addToList( iu, iu, ParticleID::VectorDQY56Pbar); addToList( -id, -iu, ParticleID::VectorDQY56M); addToList( id, iu, ParticleID::VectorDQY56Mbar); } } } Helicity::FFVVertex::doinit(); } void SextetFFVVertex::setCoupling(Energy2, tcPDPtr part1, tcPDPtr part2,tcPDPtr part3) { long q1ID=(abs(part1->id())), q2ID=(abs(part2->id())), vDQID=(abs(part3->id())); //check scalar diquark assert( vDQID == ParticleID::VectorDQY16P || vDQID == ParticleID::VectorDQY16M || vDQID == ParticleID::VectorDQY56P || vDQID == ParticleID::VectorDQY56M); //check quarks assert(!(q1ID>6) && !(q2ID>6)); bool part1Up = (q1ID==2 || q1ID==4 || q1ID==6) ? true : false; bool part2Up = (q2ID==2 || q2ID==4 || q2ID==6) ? true : false; Complex cRight(1.,1.), cLeft(1.,1.), prefactor(1.,0.); if(vDQID==ParticleID::VectorDQY16P){ //should be one up and down type assert((!part1Up && part2Up) || (part1Up && !part2Up)); long upType; if(part1Up) upType=q1ID; else upType=q2ID; if(upType==2) cRight=Complex(g2_[0]); else if(upType==4) cRight=Complex(g2_[1]); else cRight=Complex(g2_[2]); cLeft=Complex(0.); } if(vDQID==ParticleID::VectorDQY16M) { //should be both be down type assert(!part1Up && !part2Up); if(q1ID==1) cRight=Complex(g2_[0]); else if(q1ID==2) cRight=Complex(g2_[1]); else cRight=Complex(g2_[2]); cLeft=Complex(0.); } if(vDQID==ParticleID::VectorDQY56P) { //should both be up type assert(part1Up && part2Up); if(q1ID==2) cRight=Complex(g2p_[0]); else if(q1ID==4) cRight=Complex(g2p_[1]); else cRight=Complex(g2p_[2]); cLeft=Complex(0.); } if(vDQID==ParticleID::VectorDQY56M){ //should be one up and down type assert((!part1Up && part2Up) || (part1Up && !part2Up)); long upType; if(part1Up) upType=q1ID; else upType=q2ID; if(upType==2) cRight=Complex(g2p_[0]); else if(upType==4) cRight=Complex(g2p_[1]); else cRight=Complex(g2p_[2]); cLeft=Complex(0.); } left(cLeft); right(cRight); norm(prefactor); } herwig++-2.6.0.orig/Models/Sextet/SextetGSSVertex.cc0000644000175000017500000000573411754474773023044 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SextetGSSVertex class. // #include "SextetGSSVertex.h" #include "SextetModel.h" #include "SextetParticles.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" using namespace Herwig; IBPtr SextetGSSVertex::clone() const { return new_ptr(*this); } IBPtr SextetGSSVertex::fullclone() const { return new_ptr(*this); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeSextetGSSVertex("Herwig::SextetGSSVertex", "HwSextetModel.so"); void SextetGSSVertex::Init() { static ClassDocumentation documentation ("The SextetGSSVertex class implements the coupling of the gluon" " to scalar diquarks."); } void SextetGSSVertex::doinit() { orderInGs (1); orderInGem(0); SextetModelPtr model = dynamic_ptr_cast(generator()->standardModel()); if(!model) throw Exception() << "Must be using the SextetModel" << " in SextetGSSVertex::doinit()" << Exception::runerror; // add the enabled particles if(model->ScalarSingletY43Enabled()) addToList(21,ParticleID::ScalarDQSingletY43, ParticleID::ScalarDQSingletY43bar); if(model->ScalarSingletY13Enabled()) addToList(21,ParticleID::ScalarDQSingletY13, ParticleID::ScalarDQSingletY13bar); if(model->ScalarSingletY23Enabled()) addToList(21,ParticleID::ScalarDQSingletY23, ParticleID::ScalarDQSingletY23bar); if(model->ScalarTripletY13Enabled()) { addToList(21,ParticleID::ScalarDQTripletP, ParticleID::ScalarDQTripletPbar); addToList(21,ParticleID::ScalarDQTriplet0, ParticleID::ScalarDQTriplet0bar); addToList(21,ParticleID::ScalarDQTripletM, ParticleID::ScalarDQTripletMbar); } Helicity::VSSVertex::doinit(); } void SextetGSSVertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr ) { assert(part1->id()==ParticleID::g); long idq = abs(part2->id()); assert(idq == ParticleID::ScalarDQSingletY43 || idq == ParticleID::ScalarDQSingletY13 || idq == ParticleID::ScalarDQSingletY23 || idq == ParticleID::ScalarDQTripletP || idq == ParticleID::ScalarDQTriplet0 || idq == ParticleID::ScalarDQTripletM); if(q2 != q2Last_ || coupLast_ == 0.) { coupLast_ = strongCoupling(q2); q2Last_ = q2; } norm(coupLast_); } herwig++-2.6.0.orig/Models/Sextet/SextetModel.fh0000644000175000017500000000044211754474773022251 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the SextetModel class. // #ifndef HERWIG_SextetModel_FH #define HERWIG_SextetModel_FH #include "ThePEG/Config/ThePEG.h" namespace Herwig { class SextetModel; ThePEG_DECLARE_POINTERS(Herwig::SextetModel,SextetModelPtr); } #endif herwig++-2.6.0.orig/Models/Sextet/SextetModel.cc0000644000175000017500000002005611754474773022244 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SextetModel class. // #include "SextetModel.h" #include "ThePEG/Utilities/StringUtils.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Command.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ParVector.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" using namespace Herwig; IBPtr SextetModel::clone() const { return new_ptr(*this); } IBPtr SextetModel::fullclone() const { return new_ptr(*this); } void SextetModel::persistentOutput(PersistentOStream & os) const { os << VVVVertex_ << VVVVVertex_ << VSSVertex_ << VVSSVertex_ << FFVVertex_ << FFSVertex_ << g1L_ << g1R_ << g1pR_ << g1ppR_ << g2_ << g2p_ << g3L_ << enableScalarSingletY43_ << enableScalarSingletY13_ << enableScalarSingletY23_ << enableScalarTripletY13_ << enableVectorDoubletY16_ << enableVectorDoubletY56_; } void SextetModel::persistentInput(PersistentIStream & is, int) { is >> VVVVertex_ >> VVVVVertex_ >> VSSVertex_ >> VVSSVertex_ >> FFVVertex_ >> FFSVertex_ >> g1L_ >> g1R_ >> g1pR_ >> g1ppR_ >> g2_ >> g2p_ >> g3L_ >> enableScalarSingletY43_ >> enableScalarSingletY13_ >> enableScalarSingletY23_ >> enableScalarTripletY13_ >> enableVectorDoubletY16_ >> enableVectorDoubletY56_; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeSextetModel("Herwig::SextetModel", "HwSextetModel.so"); void SextetModel::Init() { static ClassDocumentation documentation ("The SextetModel class provides the Model class for models with new scalars" " or vectors in the sextet representation of SU(3)"); static Reference interfaceVertexVDQVDQG ("Vertex/VDQVDQG", "The coupling of the gluon to two vector diquarks", &SextetModel::VVVVertex_, false, false, true, false, false); static Reference interfaceVertexVDQVDQGG ("Vertex/VDQVDQGG", "The coupling of two gluons to two vector diquarks", &SextetModel::VVVVVertex_, false, false, true, false, false); static Reference interfaceVertexSDQSDQG ("Vertex/SDQSDQG", "The coupling of the gluon to two scalar diquarks", &SextetModel::VSSVertex_, false, false, true, false, false); static Reference interfaceVertexSDQSDQGG ("Vertex/SDQSDQGG", "The coupling of two gluons to two scalar diquarks", &SextetModel::VVSSVertex_, false, false, true, false, false); static Reference interfaceVertexFFSDQ ("Vertex/FFSDQ", "The coupling of two quarks to the scalar diquark", &SextetModel::FFSVertex_, false, false, true, false, false); static Reference interfaceVertexFFVDQ ("Vertex/FFVDQ", "The coupling of two quarks to the vector diquark", &SextetModel::FFVVertex_, false, false, true, false, false); static ParVector interfaceg1L ("g1L", "The \\f$SU(2)\\f$ quark-doublet coupling to \\f$\\Phi_{6,1,1/3}\\f$.", &SextetModel::g1L_, 3, 0.0, 0, 0, false, false, Interface::nolimits); static ParVector interfaceg1R ("g1R", "The \\f$SU(2)\\f$ singlet coupling to \\f$\\Phi_{6,1,1/3}\\f$.", &SextetModel::g1R_, 3, 0.0, 0, 0, false, false, Interface::nolimits); static ParVector interfaceg1RPrime ("g1RPrime", "The \\f$SU(2)\\f$ singlet coupling to \\f$\\Phi_{6,1,1/3}\\f$.", &SextetModel::g1pR_, 3, 0.0, 0, 0, false, false, Interface::nolimits); static ParVector interfaceg1RDoublePrime ("g1RDoublePrime", "The \\f$SU(2)\\f$ singlet coupling to \\f$\\Phi_{6,1,1/3}\\f$.", &SextetModel::g1ppR_, 3, 0.0, 0, 0, false, false, Interface::nolimits); static ParVector interfaceg2 ("g2", "The coupling to \\f$V^\\mu_{6,2,-1/6}\\f$.", &SextetModel::g2_, 3, 0.0, 0, 0, false, false, Interface::nolimits); static ParVector interfaceg2Prime ("g2Prime", "The coupling to \\f$V^\\mu_{6,2,5/6}\\f$.", &SextetModel::g2p_, 3, 0.0, 0, 0, false, false, Interface::nolimits); static ParVector interfaceg3L ("g3L", "Coupling to \\f$\\Phi_{6,3,1/3}\\f$.", &SextetModel::g3L_, 3, 0.0, 0, 0, false, false, Interface::nolimits); static Command interfaceEnableParticles ("EnableParticles", "Enable specfiic diquarks", &SextetModel::doEnable, false); } void SextetModel::doinit() { StandardModel::doinit(); addVertex(VVVVertex_); addVertex(VVVVVertex_); addVertex(VSSVertex_); addVertex(VVSSVertex_); addVertex(FFVVertex_); addVertex(FFSVertex_); } string SextetModel::doEnable(string args) { int spin=-1; int weak=-1; int Y[2]={-1000000,-1000000}; string orig=args; while ( !args.empty() ) { string arg = StringUtils::car(args); args = StringUtils::cdr(args); if ( arg == "Scalar" ) spin=1; else if ( arg == "Vector" ) spin=3; else if ( arg == "Singlet" ) weak=1; else if ( arg == "Doublet" ) weak=2; else if ( arg == "Triplet" ) weak=3; else { if(arg.find("Y=")==string::npos) continue; arg = StringUtils::cdr(arg,"="); vector split = StringUtils::split(arg,"/"); if(split.size()!=2) continue; istringstream is1(split[0]); is1 >> Y[0]; istringstream is2(split[1]); is2 >> Y[1]; } } // check we read a value for all three quantum numbers if ( spin <0 || weak<0 || 0 || Y[0]== -1000000) { return string("SextetModel:EnableParticles couldn't termine spin, weak") + string(" isospin or hypercharge for ") + orig + "."; } // check the values of Y if(!(Y[1]==3||Y[1]==6)) { return string("SextetModel:EnableParticles invalid weak") + string(" hypercharge for ") + orig + "."; } // the various allowed combinations bool found = false; if(spin == 1 ) { found = true; if ( weak == 1 && Y[0] == 4 && Y[1] == 3) { enableScalarSingletY43_ = true; } else if( weak == 1 && Y[0] == 1 && Y[1] == 3) { enableScalarSingletY13_ = true; } else if( weak == 1 && Y[0] == -2 && Y[1] == 3) { enableScalarSingletY23_ = true; } else if( weak == 3 && Y[0] == 1 && Y[1] == 3) { enableScalarTripletY13_ = true; } else found = false; } else if(spin == 3 && weak == 2) { found = true; if ( Y[0] == -1 && Y[1] == 6) { enableVectorDoubletY16_ = true; } else if( Y[0] == 5 && Y[1] == 6) { enableVectorDoubletY56_ = true; } else found = false; } if(!found) return string("SextetModel:EnableParticles invalid combination") + string(" of spin, weak isospin or hypercharge for ") + orig + "."; else return ""; } // // Scalar Singlet Y = 4/3 // Scalar Singlet Y = -1/3 // Scalar Singlet Y = -2/3 // Scalar Triplet Y = 1/3 // Vector Doublet Y = -1/6 // Vector Doublet Y = 5/6 /** * Pointer to the object handling the coupling of two quarks * to a vector sextet */ AbstractFFVVertexPtr FFVVertex_; /** * Pointer to the object handling the coupling of two quarks * to a scalar sextet */ AbstractFFSVertexPtr FFSVertex_; //@} herwig++-2.6.0.orig/Models/Sextet/SextetParticles.h0000644000175000017500000000335611754474773023000 0ustar sylvestresylvestre#ifndef HERWIG_SextetParticles_H #define HERWIG_SextetParticles_H #include namespace ThePEG { /** * The ParticleID namespace defines the ParticleCodes enumeration. */ namespace ParticleID { /** \ingroup Utilities * Enumeration to give identifiers to PDG codes for sextet particles */ enum SextetCodes { ScalarDQSingletY43 = 6000221, /**< \f$\Phi_{6,1,4/3}\f$*/ ScalarDQSingletY13 = 6000211, /**< \f$\Phi_{6,1,1/3}\f$*/ ScalarDQSingletY23 = 6000111, /**< \f$\Phi_{6,1,-2/3}\f$*/ ScalarDQSingletY43bar = -6000221, /**< \f$\bar\Phi_{6,1,4/3}\f$*/ ScalarDQSingletY13bar = -6000211, /**< \f$\bar\Phi_{6,1,1/3}\f$*/ ScalarDQSingletY23bar = -6000111, /**< \f$\bar\Phi_{6,1,-2/3}\f$*/ ScalarDQTripletP = 6001221, /**< \f$\Phi^+_{6,3,1/3}\f$*/ ScalarDQTriplet0 = 6001211, /**< \f$\Phi^0_{6,3,1/3}\f$*/ ScalarDQTripletM = 6001111, /**< \f$\Phi^-_{6,3,1/3}\f$*/ ScalarDQTripletPbar = -6001221, /**< \f$\bar\Phi^+_{6,3,1/3}\f$*/ ScalarDQTriplet0bar = -6001211, /**< \f$\bar\Phi^0_{6,3,1/3}\f$*/ ScalarDQTripletMbar = -6001111, /**< \f$\bar\Phi^-_{6,3,1/3}\f$*/ VectorDQY16P = 6000123, /**< \f$V^{+\frac12\mu}_{6,2,-1/6}\f$*/ VectorDQY16M = 6000113, /**< \f$V^{-\frac12\mu}_{6,2,-1/6}\f$*/ VectorDQY16Pbar = -6000123, /**< \f$\bar V^{+\frac12\mu}_{6,2,-1/6}\f$*/ VectorDQY16Mbar = -6000113, /**< \f$\bar V^{-\frac12\mu}_{6,2,-1/6}\f$*/ VectorDQY56P = 6000223, /**< \f$V^{+\frac12\mu}_{6,2,5/6}\f$*/ VectorDQY56M = 6000213, /**< \f$V^{-\frac12\mu}_{6,2,5/6}\f$*/ VectorDQY56Pbar = -6000223, /**< \f$\bar V^{+\frac12\mu}_{6,2,5/6}\f$*/ VectorDQY56Mbar = -6000213 /**< \f$\bar V^{-\frac12\mu}_{6,2,5/6}\f$*/ }; } } #endif herwig++-2.6.0.orig/Models/Sextet/SextetFFVVertex.h0000644000175000017500000000550611754474773022670 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_SextetFFVVertex_H #define HERWIG_SextetFFVVertex_H // // This is the declaration of the SextetFFVVertex class. // #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the SextetFFVVertex class. * * @see \ref SextetFFVVertexInterfaces "The interfaces" * defined for SextetFFVVertex. */ class SextetFFVVertex: public Helicity::FFVVertex { public: /** * The default constructor. */ SextetFFVVertex() {} /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); 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. */ SextetFFVVertex & operator=(const SextetFFVVertex &); private: /** * The various couplings */ //@{ /** * The \f$SU(2)\f$ quark-doublet coupling to \f$\Phi_{6,2,-1/6}\f$ */ vector g2_; /** * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,2,5/6}\f$ */ vector g2p_; //@} }; } #endif /* HERWIG_SextetFFVVertex_H */ herwig++-2.6.0.orig/Models/Sextet/Makefile.am0000644000175000017500000000071011754474773021527 0ustar sylvestresylvestreif WANT_SEXTET pkglib_LTLIBRARIES = HwSextetModel.la endif HwSextetModel_la_SOURCES = SextetParticles.h \ SextetModel.cc SextetModel.h SextetModel.fh \ SextetGSSVertex.cc SextetGSSVertex.h \ SextetGGSSVertex.cc SextetGGSSVertex.h \ SextetGVVVertex.cc SextetGVVVertex.h \ SextetGGVVVertex.cc SextetGGVVVertex.h \ SextetFFSVertex.cc SextetFFSVertex.h \ SextetFFVVertex.cc SextetFFVVertex.h HwSextetModel_la_LDFLAGS = -module -version-info 1:0:0 herwig++-2.6.0.orig/Models/Sextet/SextetGGSSVertex.cc0000644000175000017500000000520711754474773023146 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SextetGGSSVertex class. // #include "SextetGGSSVertex.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 "SextetModel.h" #include "SextetParticles.h" using namespace Herwig; SextetGGSSVertex::SextetGGSSVertex() : q2last_(), couplast_() {} IBPtr SextetGGSSVertex::clone() const { return new_ptr(*this); } IBPtr SextetGGSSVertex::fullclone() const { return new_ptr(*this); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeNoPIOClass describeSextetGGSSVertex("Herwig::SextetGGSSVertex", "HwSextetModel.so"); void SextetGGSSVertex::Init() { static ClassDocumentation documentation ("The SextetGGSSVertex class implements the coupling of two gluons to two" " scalar sextets"); } void SextetGGSSVertex::setCoupling(Energy2 q2, tcPDPtr, tcPDPtr, tcPDPtr, tcPDPtr) { if(q2 != q2last_ || couplast_ == 0.) { couplast_ = sqr(strongCoupling(q2)); q2last_ = q2; } norm(couplast_); } void SextetGGSSVertex::doinit() { orderInGs(2); orderInGem(0); SextetModelPtr model = dynamic_ptr_cast(generator()->standardModel()); if(!model) throw Exception() << "Must be using the SextetModel" << " in SextetGSSVertex::doinit()" << Exception::runerror; // add the enabled particles if(model->ScalarSingletY43Enabled()) addToList(21,21,ParticleID::ScalarDQSingletY43, ParticleID::ScalarDQSingletY43bar); if(model->ScalarSingletY13Enabled()) addToList(21,21,ParticleID::ScalarDQSingletY13, ParticleID::ScalarDQSingletY13bar); if(model->ScalarSingletY23Enabled()) addToList(21,21,ParticleID::ScalarDQSingletY23, ParticleID::ScalarDQSingletY23bar); if(model->ScalarTripletY13Enabled()) { addToList(21,21,ParticleID::ScalarDQTripletP, ParticleID::ScalarDQTripletPbar); addToList(21,21,ParticleID::ScalarDQTriplet0, ParticleID::ScalarDQTriplet0bar); addToList(21,21,ParticleID::ScalarDQTripletM, ParticleID::ScalarDQTripletMbar); } VVSSVertex::doinit(); } herwig++-2.6.0.orig/Models/Sextet/SextetFFSVertex.h0000644000175000017500000000614711754474773022667 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_SextetFFSVertex_H #define HERWIG_SextetFFSVertex_H // // This is the declaration of the SextetFFSVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the SextetFFSVertex class. * * @see \ref SextetFFSVertexInterfaces "The interfaces" * defined for SextetFFSVertex. */ class SextetFFSVertex: public Helicity::FFSVertex { public: /** * The default constructor. */ SextetFFSVertex() {} /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); 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. */ SextetFFSVertex & operator=(const SextetFFSVertex &); private: /** * The various couplings */ //@{ /** * The \f$SU(2)\f$ quark-doublet coupling to \f$\Phi_{6,1,1/3}\f$ */ vector g1L_; /** * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,1/3}\f$ */ vector g1R_; /** * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,-2/3}\f$ */ vector g1pR_; /** * The \f$SU(2)\f$ singlet coupling to \f$\Phi_{6,1,4/3}\f$ */ vector g1ppR_; /** * Coupling to \f$\Phi_{6,3,1/3}\f$ */ vector g3L_; //@} }; } #endif /* HERWIG_SextetFFSVertex_H */ herwig++-2.6.0.orig/Models/Sextet/SextetGGSSVertex.h0000644000175000017500000000446011754474773023010 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_SextetGGSSVertex_H #define HERWIG_SextetGGSSVertex_H // // This is the declaration of the SextetGGSSVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VVSSVertex.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the SextetGGSSVertex class. * * @see \ref SextetGGSSVertexInterfaces "The interfaces" * defined for SextetGGSSVertex. */ class SextetGGSSVertex: public Helicity::VVSSVertex { public: /** * The default constructor. */ SextetGGSSVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the fourth particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3,tcPDPtr part4); public: /** * 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. */ SextetGGSSVertex & operator=(const SextetGGSSVertex &); private: /** * The energy at which the coupling was last evaluated */ Energy2 q2last_; /** * The coupling when it was last evaluated */ Complex couplast_; }; } #endif /* HERWIG_SextetGGSSVertex_H */ herwig++-2.6.0.orig/Models/Sextet/SextetGVVVertex.h0000644000175000017500000000423011754474773022702 0ustar sylvestresylvestre// -*- C++ -*- #ifndef THEPEG_SextetGVVVertex_H #define THEPEG_SextetGVVVertex_H // // This is the declaration of the SextetGVVVertex class. // #include "ThePEG/Helicity/Vertex/Vector/VVVVertex.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the SextetGVVVertex class. * * @see \ref SextetGVVVertexInterfaces "The interfaces" * defined for SextetGVVVertex. */ class SextetGVVVertex: public Helicity::VVVVertex { public: /** * The default constructor. */ SextetGVVVertex() {} /** Calculate the coupling *@param q2 The scale at which to evaluate the coupling *@param part1 The first interacting particle *@param part2 The second interacting particle *@param part3 The third interacting particle */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3); public: /** * 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. */ SextetGVVVertex & operator=(const SextetGVVVertex &); private: /** * Store the value of the coupling when last evaluated */ Complex coupLast_; /** * Store the scale at which coupling was last evaluated */ Energy2 q2Last_; }; } #endif /* THEPEG_SextetGVVVertex_H */ herwig++-2.6.0.orig/Models/Leptoquarks/0000755000175000017500000000000011756464206020523 5ustar sylvestresylvestreherwig++-2.6.0.orig/Models/Leptoquarks/LeptoquarkModelSLQSLQGGVertex.h0000644000175000017500000001056411754474773026376 0ustar sylvestresylvestre// -*- C++ -*- // // LeptoquarkModelSLQSLQGGVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_LeptoquarkModelSLQSLQGGVertex_H #define HERWIG_LeptoquarkModelSLQSLQGGVVertex_H // // This is the declaration of the LeptoquarkModelSLQSLQGGVertex class. #include "ThePEG/Helicity/Vertex/Scalar/VVSSVertex.h" #include "Herwig++/Models/Leptoquarks/LeptoquarkModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * The LeptoquarkModelSLQSLQGGVertex class is the implementation of the gluon * gluon coupling to pairs of scalar leptoquarks in the LeptoquarkModel. It inherits from the VVSSVertex * and implements the setCoupling member * * @see VVSSVertex * @see VertexBase */ class LeptoquarkModelSLQSLQGGVertex: public VVSSVertex { public: /** * Default constructor. */ LeptoquarkModelSLQSLQGGVertex(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3, tcPDPtr part4); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initLeptoquarkModelSLQSLQGGVertex; /** * Private and non-existent assignment operator. */ LeptoquarkModelSLQSLQGGVertex & operator=(const LeptoquarkModelSLQSLQGGVertex &); /** * Pointer to the model. */ tcSMPtr _theModel; /** * The energy at which the coupling was last evaluated */ Energy2 _q2last; /** * The coupling when it was last evaluated */ Complex _couplast; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of LeptoquarkModelSLQSLQGGVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of LeptoquarkModelSLQSLQGGVertex. */ typedef ThePEG::Helicity::VVSSVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::LeptoquarkModelSLQSLQGGVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwLeptoquarkModel.so"; } }; /** @endcond */ } #endif /* HERWIG_LeptoquarkModelSLQSLQGGVertex_H */ herwig++-2.6.0.orig/Models/Leptoquarks/LeptoquarkModelSLQSLQGVertex.cc0000644000175000017500000000451711754474773026426 0ustar sylvestresylvestre// -*- C++ -*- // // LeptoquarkModelSLQSLQGVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the LeptoquarkModelSLQSLQGVertex class. // #include "LeptoquarkModelSLQSLQGVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; LeptoquarkModelSLQSLQGVertex::LeptoquarkModelSLQSLQGVertex() : _q2last(ZERO), _couplast(0.) { orderInGs(1); orderInGem(0); } void LeptoquarkModelSLQSLQGVertex::doinit() { addToList(21,9941551,-9941551); addToList(21,9911561,-9911561); addToList(21,9921551,-9921551); addToList(21,9931561,-9931561); addToList(21,9931551,-9931551); addToList(21,9931661,-9931661); addToList(21,9941561,-9941561); addToList(21,9951551,-9951551); addToList(21,9951651,-9951651); addToList(21,9961551,-9961551); addToList(21,9971561,-9971561); addToList(21,9981561,-9981561); addToList(21,9981551,-9981551); addToList(21,9981651,-9981651); addToList(21,9991551,-9991551); addToList(21,9991561,-9991561); addToList(21,9901561,-9901561); addToList(21,9901661,-9901661); VSSVertex::doinit(); } void LeptoquarkModelSLQSLQGVertex::persistentOutput(PersistentOStream & os) const { os << _theModel; } void LeptoquarkModelSLQSLQGVertex::persistentInput(PersistentIStream & is, int) { is >> _theModel; } ClassDescription LeptoquarkModelSLQSLQGVertex::initLeptoquarkModelSLQSLQGVertex; // Definition of the static class description member. void LeptoquarkModelSLQSLQGVertex::Init() { static ClassDocumentation documentation ("The LeptoquarkModelSLQSLQGVertex class is the implementation of" " the LeptoquarkModel scalar LQ-scalar LQ-gluon vertex"); } void LeptoquarkModelSLQSLQGVertex::setCoupling(Energy2 q2,tcPDPtr ,tcPDPtr ,tcPDPtr ) { if(q2 != _q2last || _couplast == 0.) { _couplast = strongCoupling(q2); _q2last = q2; } norm(_couplast); } herwig++-2.6.0.orig/Models/Leptoquarks/Makefile.in0000644000175000017500000005254711756461700022601 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Models/Leptoquarks DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwLeptoquarkModel_la_LIBADD = am_HwLeptoquarkModel_la_OBJECTS = LeptoquarkModel.lo \ LeptoquarkModelSLQSLQGGVertex.lo LeptoquarkModelSLQFFVertex.lo \ LeptoquarkModelSLQSLQGVertex.lo HwLeptoquarkModel_la_OBJECTS = $(am_HwLeptoquarkModel_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwLeptoquarkModel_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwLeptoquarkModel_la_LDFLAGS) \ $(LDFLAGS) -o $@ @WANT_Leptoquark_TRUE@am_HwLeptoquarkModel_la_rpath = -rpath \ @WANT_Leptoquark_TRUE@ $(pkglibdir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwLeptoquarkModel_la_SOURCES) DIST_SOURCES = $(HwLeptoquarkModel_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @WANT_Leptoquark_TRUE@pkglib_LTLIBRARIES = HwLeptoquarkModel.la HwLeptoquarkModel_la_SOURCES = \ LeptoquarkModel.cc LeptoquarkModel.h LeptoquarkModel.fh \ LeptoquarkModelSLQSLQGGVertex.h LeptoquarkModelSLQSLQGGVertex.cc \ LeptoquarkModelSLQFFVertex.h LeptoquarkModelSLQFFVertex.cc \ LeptoquarkModelSLQSLQGVertex.h LeptoquarkModelSLQSLQGVertex.cc HwLeptoquarkModel_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Models/Leptoquarks/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Models/Leptoquarks/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwLeptoquarkModel.la: $(HwLeptoquarkModel_la_OBJECTS) $(HwLeptoquarkModel_la_DEPENDENCIES) $(EXTRA_HwLeptoquarkModel_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwLeptoquarkModel_la_LINK) $(am_HwLeptoquarkModel_la_rpath) $(HwLeptoquarkModel_la_OBJECTS) $(HwLeptoquarkModel_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LeptoquarkModel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LeptoquarkModelSLQFFVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LeptoquarkModelSLQSLQGGVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LeptoquarkModelSLQSLQGVertex.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Models/Leptoquarks/LeptoquarkModel.fh0000644000175000017500000000052611754474773024165 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the HwLeptoquarkModel class. // #ifndef HERWIG_HwLeptoquarkModel_FH #define HERWIG_HwLeptoquarkModel_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class LeptoquarkModel; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::LeptoquarkModel,HwLeptoquarkPtr); } #endif herwig++-2.6.0.orig/Models/Leptoquarks/LeptoquarkModelSLQSLQGVertex.h0000644000175000017500000001040411754474773026260 0ustar sylvestresylvestre// -*- C++ -*- // // LeptoquarkModelSLQSLQGVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_LeptoquarkModelSLQSLQGVertex_H #define HERWIG_LeptoquarkModelSLQSLQGVVertex_H // // This is the declaration of the LeptoquarkModelSLQSLQGVertex class. #include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h" #include "Herwig++/Models/Leptoquarks/LeptoquarkModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * The LeptoquarkModelSLQSLQGVertex class is the implementation of the gluon * coupling to pairs of scalar leptoquarks in the LeptoquarkModel. It inherits from the VSSVertex * and implements the setCoupling member * * @see VSSVertex * @see VertexBase */ class LeptoquarkModelSLQSLQGVertex: public VSSVertex { public: /** * Default constructor. */ LeptoquarkModelSLQSLQGVertex(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initLeptoquarkModelSLQSLQGVertex; /** * Private and non-existent assignment operator. */ LeptoquarkModelSLQSLQGVertex & operator=(const LeptoquarkModelSLQSLQGVertex &); /** * Pointer to the model. */ tcSMPtr _theModel; /** * The energy at which the coupling was last evaluated */ Energy2 _q2last; /** * The coupling when it was last evaluated */ Complex _couplast; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of LeptoquarkModelSLQSLQGVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of LeptoquarkModelSLQSLQGVertex. */ typedef ThePEG::Helicity::VSSVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::LeptoquarkModelSLQSLQGVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwLeptoquarkModel.so"; } }; /** @endcond */ } #endif /* HERWIG_LeptoquarkModelSLQSLQGVertex_H */ herwig++-2.6.0.orig/Models/Leptoquarks/LeptoquarkModel.h0000644000175000017500000002060711754474773024021 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_LeptoquarkModel_H #define HERWIG_LeptoquarkModel_H // // This is the declaration of the LeptoquarkModel class. // #include "Herwig++/Models/General/BSMModel.h" #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSSVertex.h" #include "LeptoquarkModel.fh" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * Here is the documentation of the LeptoquarkModel class. * * @see \ref LeptoquarkModelInterfaces "The interfaces" * defined for LeptoquarkModel. */ class LeptoquarkModel: public BSMModel { public: /** * The default constructor. */ LeptoquarkModel(); /** @name Vertices */ //@{ /** * Pointer to the object handling S0S0barg vertex. */ tAbstractVSSVertexPtr vertexSLQSLQG() const {return _theSLQSLQGVertex;} /** * Pointer to the object handling the S0S0bargg vertex. */ tAbstractVVSSVertexPtr vertexSLQSLQGG() const {return _theSLQSLQGGVertex;} /** * Pointer to the object handling the S0ql vertex. */ tAbstractFFSVertexPtr vertexSLQFF() const {return _theSLQFFVertex;} 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(); /** * Return the overall fermion coupling */ double cfermion() const {return _CouplFF;} /** * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (S0) */ double cleft() const {return _leftcoup;} /** * Return the coupling of the leptoquark to right-handed leptons + left-handed quarks (S0) */ double cright() const {return _rightcoup;} /** * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (S1 triplet) */ double cleft1() const {return _leftcoup1;} /** * Return the coupling of the leptoquark to right-handed leptons * + left-handed quarks (~S0) */ double crighttilde() const {return _rightcouptilde;} /** * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (S1/2) */ double cleft12() const {return _leftcoup12;} /** * Return the coupling of the leptoquark to right-handed leptons + left-handed quarks (S1/2) */ double cright12() const {return _rightcoup12;} /** * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (S1/2) */ double cleft12tilde() const {return _leftcoup12t;} /** * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (S0) */ double dcleft() const {return _dleftcoup;} /** * Return the coupling of the leptoquark to right-handed leptons + left-handed quarks (dS0) */ double dcright() const {return _drightcoup;} /** * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (dS1 triplet) */ double dcleft1() const {return _dleftcoup1;} /** * Return the coupling of the leptoquark to right-handed leptons * + left-handed quarks (~dS0) */ double dcrighttilde() const {return _drightcouptilde;} /** * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (dS1/2) */ double dcleft12() const {return _dleftcoup12;} /** * Return the coupling of the leptoquark to right-handed leptons + left-handed quarks (dS1/2) */ double dcright12() const {return _drightcoup12;} /** * Return the coupling of the leptoquark to left-handed leptons + right-handed quarks (dS1/2) */ double dcleft12tilde() const {return _dleftcoup12t;} /** * Suppression scale for derivatively coupled scalar leptoquarks */ double fscale() const {return _derivscalef;} 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(); //@} 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initLeptoquarkModel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ LeptoquarkModel & operator=(const LeptoquarkModel &); /** * Pointer to the object handling the G to SLQ SLQ vertex. */ AbstractVSSVertexPtr _theSLQSLQGVertex; /** * Pointer to the object handling the GG to SLQ SLQ vertex. */ AbstractVVSSVertexPtr _theSLQSLQGGVertex; /** * Pointer to the object handling the SLQ to FF vertex. */ AbstractFFSVertexPtr _theSLQFFVertex; /** * Overall coupling to fermions */ double _CouplFF; /** * Overall coupling to left-handed leptons (S0) */ double _leftcoup; /** * Overall coupling to right-handed leptons (S0) */ double _rightcoup; /** * Overall coupling to left-handed leptons (~S0) */ double _rightcouptilde; /** * Overall coupling to left-handed leptons (S1 triplet) */ double _leftcoup1; /** * Overall coupling to left-handed leptons (S1/2) */ double _leftcoup12; /** * Overall coupling to right-handed leptons (S1/2) */ double _rightcoup12; /** * Overall coupling to left-handed leptons (~S1/2) */ double _leftcoup12t; /** * Overall coupling to left-handed leptons (dS0) */ double _dleftcoup; /** * Overall coupling to right-handed leptons (dS0) */ double _drightcoup; /** * Overall coupling to left-handed leptons (~dS0) */ double _drightcouptilde; /** * Overall coupling to left-handed leptons (dS1 triplet) */ double _dleftcoup1; /** * Overall coupling to left-handed leptons (dS1/2) */ double _dleftcoup12; /** * Overall coupling to right-handed leptons (dS1/2) */ double _drightcoup12; /** * Overall coupling to left-handed leptons (~dS1/2) */ double _dleftcoup12t; /** * Suppression scale for derivatively coupled scalar leptoquarks, f */ double _derivscalef; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of LeptoquarkModel. */ template <> struct BaseClassTrait { /** Typedef of the first base class of LeptoquarkModel. */ typedef Herwig::BSMModel NthBase; }; /** This template specialization informs ThePEG about the name of * the LeptoquarkModel class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::LeptoquarkModel"; } /** * The name of a file containing the dynamic library where the class * LeptoquarkModel is implemented. It may also include several, space-separated, * libraries if the class LeptoquarkModel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwLeptoquarkModel.so"; } }; /** @endcond */ } #endif /* HERWIG_LeptoquarkModel_H */ herwig++-2.6.0.orig/Models/Leptoquarks/LeptoquarkModel.cc0000644000175000017500000001562611754474773024164 0ustar sylvestresylvestre // -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the LeptoquarkModel class. // #include "LeptoquarkModel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; using namespace ThePEG::Helicity; void LeptoquarkModel::doinit() { addVertex(_theSLQSLQGVertex); addVertex(_theSLQSLQGGVertex); addVertex(_theSLQFFVertex); BSMModel::doinit(); } LeptoquarkModel::LeptoquarkModel() : _CouplFF(0.312), _leftcoup(1.0), _rightcoup(1.0), _rightcouptilde(1.0), _leftcoup1(1.0) , _leftcoup12(1.0), _rightcoup12(1.0), _leftcoup12t(1.0), _dleftcoup(1.0), _drightcoup(1.0), _drightcouptilde(1.0), _dleftcoup1(1.0) , _dleftcoup12(1.0), _drightcoup12(1.0), _dleftcoup12t(1.0), _derivscalef(500.0) {} IBPtr LeptoquarkModel::clone() const { return new_ptr(*this); } IBPtr LeptoquarkModel::fullclone() const { return new_ptr(*this); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void LeptoquarkModel::persistentOutput(PersistentOStream & os) const { os << _theSLQSLQGGVertex << _theSLQSLQGVertex << _theSLQFFVertex << _CouplFF << _leftcoup << _rightcoup << _leftcoup1 << _rightcouptilde << _leftcoup12 << _rightcoup12 << _leftcoup12t << _dleftcoup << _drightcoup << _dleftcoup1 << _drightcouptilde << _dleftcoup12 << _drightcoup12 << _dleftcoup12t << _derivscalef; } void LeptoquarkModel::persistentInput(PersistentIStream & is, int) { is >> _theSLQSLQGGVertex >> _theSLQSLQGVertex >> _theSLQFFVertex >> _CouplFF >> _leftcoup >> _rightcoup >> _leftcoup1 >> _rightcouptilde >> _leftcoup12 >> _rightcoup12 >> _leftcoup12t >> _dleftcoup >> _drightcoup >> _dleftcoup1 >> _drightcouptilde >> _dleftcoup12 >> _drightcoup12 >> _dleftcoup12t >> _derivscalef; } ClassDescription LeptoquarkModel::initLeptoquarkModel; // Definition of the static class description member. void LeptoquarkModel::Init() { static Reference interfaceVertexSLQSLQG ("Vertex/SLQSLQG", "Reference to the scalar leptoquark-scalar leptoquark-gluon vertex", &LeptoquarkModel::_theSLQSLQGVertex, false, false, true, false, false); static Reference interfaceVertexSLQSLQGG ("Vertex/SLQSLQGG", "Reference to the scalar leptoquark-scalar leptoquark-gluon-gluon vertex", &LeptoquarkModel::_theSLQSLQGGVertex, false, false, true, false, false); static Reference interfaceVertexSLQFF ("Vertex/SLQFF", "Reference to the scalar leptoquark-scalar-quark-lepton", &LeptoquarkModel::_theSLQFFVertex, false, false, true, false, false); static Parameter interfaceLQCoupling ("LQCoupling", "The overall Leptoquark Coupling", &LeptoquarkModel::_CouplFF, 0.312, 0., 10.0, false, false, Interface::limited); static Parameter interfacegLQ_L ("g_S0_L", "The leptoquark S0 coupling LQ-lepton_left-quark_right", &LeptoquarkModel::_leftcoup, 1.0, 0., 1.0, false, false, Interface::limited); static Parameter interfacegLQ_R ("g_S0_R", "The leptoquark S0 coupling LQ-lepton_right-quark_left", &LeptoquarkModel::_rightcoup, 1.0, 0., 1.0, false, false, Interface::limited); static Parameter interfacegLQ_Rt ("g_S0t_R", "The leptoquark ~S0 coupling LQ-lepton_right-quark_left", &LeptoquarkModel::_rightcouptilde, 1.0, 0., 1.0, false, false, Interface::limited); static Parameter interfacegLQ_L1 ("g_S1_L", "The leptoquark S1 coupling LQ-lepton_left-quark_right", &LeptoquarkModel::_leftcoup1, 1.0, 0., 1.0, false, false, Interface::limited); static Parameter interfacegLQ12_L ("g_S12_L", "The leptoquark S1/2 coupling LQ-lepton_left-quark_right", &LeptoquarkModel::_leftcoup12, 1.0, 0., 1.0, false, false, Interface::limited); static Parameter interfacegLQ12_R ("g_S12_R", "The leptoquark S1/2 coupling LQ-lepton_right-quark_left", &LeptoquarkModel::_rightcoup12, 1.0, 0., 1.0, false, false, Interface::limited); static Parameter interfacegLQ12t_L ("g_S12t_L", "The leptoquark ~S1/2 coupling LQ-lepton_left-quark_right", &LeptoquarkModel::_leftcoup12t, 1.0, 0., 1.0, false, false, Interface::limited); static Parameter interfacegdLQ_L ("g_dS0_L", "The leptoquark dS0 coupling LQ-lepton_left-quark_right", &LeptoquarkModel::_dleftcoup, 1.0, 0., 1.0, false, false, Interface::limited); static Parameter interfacegdLQ_R ("g_dS0_R", "The leptoquark dS0 coupling LQ-lepton_right-quark_left", &LeptoquarkModel::_drightcoup, 1.0, 0., 1.0, false, false, Interface::limited); static Parameter interfacegdLQ_Rt ("g_dS0t_R", "The leptoquark ~dS0 coupling LQ-lepton_right-quark_left", &LeptoquarkModel::_drightcouptilde, 1.0, 0., 1.0, false, false, Interface::limited); static Parameter interfacegdLQ_L1 ("g_dS1_L", "The leptoquark dS1 coupling LQ-lepton_left-quark_right", &LeptoquarkModel::_dleftcoup1, 1.0, 0., 1.0, false, false, Interface::limited); static Parameter interfacegdLQ12_L ("g_dS12_L", "The leptoquark dS1/2 coupling LQ-lepton_left-quark_right", &LeptoquarkModel::_dleftcoup12, 1.0, 0., 1.0, false, false, Interface::limited); static Parameter interfacegdLQ12_R ("g_dS12_R", "The leptoquark dS1/2 coupling LQ-lepton_right-quark_left", &LeptoquarkModel::_drightcoup12, 1.0, 0., 1.0, false, false, Interface::limited); static Parameter interfacegdLQ12t_L ("g_dS12t_L", "The leptoquark ~dS1/2 coupling LQ-lepton_left-quark_right", &LeptoquarkModel::_dleftcoup12t, 1.0, 0., 1.0, false, false, Interface::limited); static Parameter interfaceDerivativeScale ("derivscale", "The suppression scale for the derivatively coupled leptoquarks", &LeptoquarkModel::_derivscalef, 500.0, 0., 10000.0, false, false, Interface::limited); static ClassDocumentation documentation ("There is no documentation for the LeptoquarkModel class"); } herwig++-2.6.0.orig/Models/Leptoquarks/Makefile.am0000644000175000017500000000065411754474773022574 0ustar sylvestresylvestreif WANT_Leptoquark pkglib_LTLIBRARIES = HwLeptoquarkModel.la endif HwLeptoquarkModel_la_SOURCES = \ LeptoquarkModel.cc LeptoquarkModel.h LeptoquarkModel.fh \ LeptoquarkModelSLQSLQGGVertex.h LeptoquarkModelSLQSLQGGVertex.cc \ LeptoquarkModelSLQFFVertex.h LeptoquarkModelSLQFFVertex.cc \ LeptoquarkModelSLQSLQGVertex.h LeptoquarkModelSLQSLQGVertex.cc HwLeptoquarkModel_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:0:0 herwig++-2.6.0.orig/Models/Leptoquarks/LeptoquarkModelSLQFFVertex.cc0000644000175000017500000002174311754474773026153 0ustar sylvestresylvestre// -*- C++ -*- // // LeptoquarkModelSLQFFVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the LeptoquarkModelSLQFFVertex class. // #include "LeptoquarkModelSLQFFVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Config/Constants.h" using namespace Herwig; IBPtr LeptoquarkModelSLQFFVertex::clone() const { return new_ptr(*this); } IBPtr LeptoquarkModelSLQFFVertex::fullclone() const { return new_ptr(*this); } LeptoquarkModelSLQFFVertex::LeptoquarkModelSLQFFVertex() { orderInGem(1); orderInGs(0); } void LeptoquarkModelSLQFFVertex::doinit() { //S0 addToList( 15, 6,-9911561); addToList(-15,-6, 9911561); addToList(-16,-5, 9911561); addToList( 16, 5,-9911561); //~S0 addToList(-15,-5, 9921551); addToList( 15, 5,-9921551); //S1 triplet //S1p addToList(-15,-5, 9931551); addToList( 15, 5,-9931551); //S1z addToList(-15,-6, 9931561); addToList( 15, 6,-9931561); addToList(-16,-5, 9931561); addToList( 16, 5,-9931561); //S1m addToList(-16,-6, 9931661); addToList( 16, 6,-9931661); //S1/2 doublet addToList( 15,-6, 9941561); addToList(-15, 6,-9941561); addToList(-15, 5,-9941551); addToList(-16, 6,-9941551); addToList( 15,-5, 9941551); addToList( 16,-6, 9941551); //S1/2 tilde doublet addToList( 5,-16,-9951651); addToList(-5, 16, 9951651); addToList(-5, 15, 9951551); addToList( 5,-15,-9951551); //dS0 addToList( 15,-5, 9961551); addToList(-15, 5,-9961551); addToList( 16,-6, 9961551); addToList(-16, 6,-9961551); //~dS0 addToList( 15,-6, 9971561); addToList(-15, 6,-9971561); //dS1 triplet //dS1p addToList( 15,-6, 9981561); addToList(-15, 6,-9981561); //dS1z addToList( 16,-6, 9981551); addToList(-16, 6,-9981551); addToList( 15,-5, 9981551); addToList(-15, 5,-9981551); //dS1m addToList( 16,-5, 9981651); addToList(-16, 5,-9981651); //dS1/2 doublet addToList(-15,-5, 9991551); addToList( 15, 5,-9991551); addToList(-15,-6, 9991561); addToList( 15, 6,-9991561); addToList(-16,-5, 9991561); addToList( 16, 5,-9991561); //dS1/2 tilde doublet addToList(-15,-6, 9901561); addToList( 15, 6,-9901561); addToList(-16,-6, 9901661); addToList( 16, 6,-9901661); _theModel = generator()->standardModel(); tcHwLeptoquarkPtr hwLeptoquark=dynamic_ptr_cast(_theModel); if(hwLeptoquark){ _CFF=hwLeptoquark->cfermion(); _cL0 =hwLeptoquark->cleft(); _cR0 =hwLeptoquark->cright(); _cR0t = hwLeptoquark->crighttilde(); _cL1 =hwLeptoquark->cleft1(); _cL12 =hwLeptoquark->cleft12(); _cR12 =hwLeptoquark->cright12(); _cL12t =hwLeptoquark->cleft12tilde(); _derivscale = hwLeptoquark->fscale(); _dcL0 =hwLeptoquark->dcleft(); _dcR0 =hwLeptoquark->dcright(); _dcR0t = hwLeptoquark->dcrighttilde(); _dcL1 =hwLeptoquark->dcleft1(); _dcL12 =hwLeptoquark->dcleft12(); _dcR12 =hwLeptoquark->dcright12(); _dcL12t =hwLeptoquark->dcleft12tilde(); } FFSVertex::doinit(); } void LeptoquarkModelSLQFFVertex::persistentOutput(PersistentOStream & os) const { os << _CFF << _cL0 << _cR0 << _cR0t << _cL1 << _cL12 << _cR12 << _cL12t << _dcL0 << _dcR0 << _dcR0t << _dcL1 << _dcL12 << _dcR12 << _dcL12t << _derivscale; } void LeptoquarkModelSLQFFVertex::persistentInput(PersistentIStream & is, int) { is >> _CFF >> _cL0 >> _cR0 >> _cR0t >> _cL1 >> _cL12 >> _cR12 >> _cL12t >>_dcL0 >> _dcR0 >> _dcR0t >> _dcL1 >> _dcL12 >> _dcR12 >> _dcL12t >> _derivscale; } ClassDescription LeptoquarkModelSLQFFVertex::initLeptoquarkModelSLQFFVertex; // Definition of the static class description member. void LeptoquarkModelSLQFFVertex::Init() { static ClassDocumentation documentation ("The LeptoquarkModelSLQFFVertex class is the implementation" " of the helicity amplitude calculation of the Leptoquark" " quark-lepton vertex."); } void LeptoquarkModelSLQFFVertex::setCoupling(Energy2,tcPDPtr aa ,tcPDPtr bb, tcPDPtr cc) { long isc(cc->id()), ism(aa->id()), ichg(bb->id()); long lqid = isc; long smid_1 = ism; long smid_2 = ichg; if(fabs(lqid) < 9900000) { lqid = ism; smid_1 = ichg; smid_2 = isc; } if(fabs(lqid) < 9900000) { lqid = ichg; smid_1 = ism; smid_2 = isc; } if( fabs(smid_1) > fabs(smid_2) ) { swap(smid_1, smid_2); } double mtop = 174.2; double mbot = 4.2; double mtau = 1.77699; //set the couplings to left and right //S0 if( fabs(isc) == 9911561 || fabs(ism) == 9911561 || fabs(ichg) == 9911561 ) { if(fabs(isc) == 5 || fabs(ism) == 5 || fabs(ichg) == 5) { _cL = -_cL0; _cR = Complex(0.); } if(fabs(isc) == 6 || fabs(ism) == 6 || fabs(ichg) == 6) { _cL = _cL0; _cR = _cR0; } } //~S0 if( fabs(isc) == 9921551 || fabs(ism) == 9921551 || fabs(ichg) == 9921551 ) { _cL = Complex(0.); _cR = _cR0t; } //S1 triplet //Q = + 4/3 if( fabs(isc) == 9931551 || fabs(ism) == 9931551 || fabs(ichg) == 9931551 ) { _cL = sqrt(2.)* _cL1; _cR = Complex(0.); } //Q = + 1/3 if( fabs(isc) == 9931561 || fabs(ism) == 9931561 || fabs(ichg) == 9931561 ) { _cL = - _cL1; _cR = Complex(0.); } //Q = - 2/3 if( fabs(isc) == 9931661 || fabs(ism) == 9931661 || fabs(ichg) == 9931661 ) { _cL = sqrt(2.) * _cL1; _cR = Complex(0.); } //S1/2 doublet //Q = + 5/3 if( fabs(isc) == 9941561 || fabs(ism) == 9941561 || fabs(ichg) == 9941561 ) { _cR = _cL12; _cL = _cR12; } //Q = + 2/3 if( fabs(isc) == 9941551 || fabs(ism) == 9941551 || fabs(ichg) == 9941551 ) { if(fabs(isc) == 5 || fabs(ism) == 5 || fabs(ichg) == 5) { _cR = Complex(0.); _cL = - _cR12; } if(fabs(isc) == 6 || fabs(ism) == 6 || fabs(ichg) == 6) { _cL = Complex(0.); _cR = _cL12; } } //S1/2 tilde doublet //Q = + 2/3 if( fabs(isc) == 9951551 || fabs(ism) == 9951551 || fabs(ichg) == 9951551 ) { _cR = _cL12t; _cL = Complex(0.); } //Q = - 1/3 if( fabs(isc) == 9951651 || fabs(ism) == 9951651 || fabs(ichg) == 9951651 ) { _cR = _cL12t; _cL = Complex(0.); } //dS0 if( fabs(isc) == 9961551 || fabs(ism) == 9961551 || fabs(ichg) == 9961551) { if(fabs(isc) == 5 || fabs(ism) == 5 || fabs(ichg) == 5) { _cR = _dcL0 * mbot +_dcR0 * mtau; _cL = _dcR0 * mbot + _dcL0 * mtau; } if(fabs(isc) == 6 || fabs(ism) == 6 || fabs(ichg) == 6) { _cR = _dcL0 * mtop; _cL = Complex(0.); } _cL /= sqrt(2.) * _derivscale; _cR /= sqrt(2.) * _derivscale; } //d~S0 if( fabs(isc) == 9971561 || fabs(ism) == 9971561 || fabs(ichg) == 9971561) { _cR = _dcR0t * mtau / (sqrt(2.) * _derivscale); _cL = _dcR0t * mtop / (sqrt(2.) * _derivscale); } //dS1 triplet if( fabs(isc) == 9981561 || fabs(ism) == 9981561 || fabs(ichg) == 9981561) { _cR = sqrt(2.) * _dcL1 * mtop / (sqrt(2.) * _derivscale); _cL = sqrt(2.) * _dcL1 * mtau / (sqrt(2.) * _derivscale); } if( fabs(isc) == 9981551 || fabs(ism) == 9981551 || fabs(ichg) == 9981551) { if(fabs(isc) == 5 || fabs(ism) == 5 || fabs(ichg) == 5) { _cR = -_dcL1 * mbot; _cL = -_dcL1 * mtau; } if(fabs(isc) == 6 || fabs(ism) == 6 || fabs(ichg) == 6) { _cR = _dcL1 * mtop; _cL = Complex(0.); } _cL /= sqrt(2.) * _derivscale; _cR /= sqrt(2.) * _derivscale; } if( fabs(isc) == 9981651 || fabs(ism) == 9981651 || fabs(ichg) == 9981651) { _cL = sqrt(2.) * _dcL1 * mbot / (sqrt(2.) * _derivscale); _cR = Complex(0.); } //dS1/2 doublet if( fabs(isc) == 9991551 || fabs(ism) == 9991551 || fabs(ichg) == 9991551 ) { _cL = _dcL12 * mbot + _dcR12 * mtau; _cR = _dcR12 * mbot + _dcL12 * mtau; _cL /= sqrt(2.) * _derivscale; _cR /= sqrt(2.) * _derivscale; } if( fabs(isc) == 9991561 || fabs(ism) == 9991561 || fabs(ichg) == 9991561 ) { if(fabs(isc) == 6 || fabs(ism) == 6 || fabs(ichg) == 6) { _cL = _dcR12 * mtau; _cR = _dcR12 * mtop; } if(fabs(isc) == 5 || fabs(ism) == 5 || fabs(ichg) == 5) { _cL = _dcL12 * mbot; } _cL /= sqrt(2.) * _derivscale; _cR /= sqrt(2.) * _derivscale; } //dS1/2 tilde doublet if( fabs(isc) == 9901561 || fabs(ism) == 9901561 || fabs(ichg) == 9901561 ) { _cL = _dcL12t * mtop / (sqrt(2.) * _derivscale); _cR = _dcL12t * mtau / (sqrt(2.) * _derivscale); } if( fabs(isc) == 9901661 || fabs(ism) == 9901661 || fabs(ichg) == 9901661 ) { _cL = _dcL12t * mtop / (sqrt(2.) * _derivscale); _cR = Complex(0.); } if(smid_1 > 0) { left(conj(_cR)); right(conj(_cL)); } else { left(_cL); right(_cR); } norm(_CFF); } herwig++-2.6.0.orig/Models/Leptoquarks/LeptoquarkModelSLQFFVertex.h0000644000175000017500000001353111754474773026011 0ustar sylvestresylvestre// -*- C++ -*- // // LeptoquarkModelSLQFFVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_LeptoquarkModelSLQFFVertex_H #define HERWIG_LeptoquarkModelSLQFFVertex_H // // This is the declaration of the LeptoquarkModelSLQFFVertex class. #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h" #include "Herwig++/Models/Leptoquarks/LeptoquarkModel.h" #include "ThePEG/PDT/EnumParticles.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the vertex coupling the Standard Model Higgs * to the Standard Model fermions for helicity amplitude calculations * * @see FFSVertex * @see VertexBase */ class LeptoquarkModelSLQFFVertex: public FFSVertex { public: /** * Default constructor. */ LeptoquarkModelSLQFFVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initLeptoquarkModelSLQFFVertex; /** * Private and non-existent assignment operator. */ LeptoquarkModelSLQFFVertex & operator=(const LeptoquarkModelSLQFFVertex &); /** * Pointer to the model object. */ tcSMPtr _theModel; private: /** * Storage of the couplings. */ //@{ /** * Overall coupling to fermions */ double _CFF; /** * Overall coupling to left-handed leptons */ //double _cL; Complex _cL; /** * Overall coupling to right-handed leptons */ // double _cR; Complex _cR; /** * Overall coupling to left-handed leptons for S0 */ // double _cL0; Complex _cL0; /** * Overall coupling to right-handed leptons for S0 */ // double _cR0; Complex _cR0; /** * Overall coupling to right-handed leptons for ~S0 */ // double _cR0t; Complex _cR0t; /** * Overall coupling to left-handed leptons for ~S1 triplet */ // double _cL1; Complex _cL1; /** * Overall coupling to left-handed leptons for S1/2 triplet */ // double _cL12; Complex _cL12; /** * Overall coupling to right-handed leptons for S1/2 triplet */ // double _cR12; Complex _cR12; /** * Overall coupling to left-handed leptons for ~S1/2 triplet */ // double _cL12t; Complex _cL12t; /** * Overall coupling to left-handed leptons */ //double _dcL; Complex _dcL; /** * Overall coupling to right-handed leptons */ // double _dcR; Complex _dcR; /** * Overall coupling to left-handed leptons for dS0 */ // double _dcL0; Complex _dcL0; /** * Overall coupling to right-handed leptons for dS0 */ // double _dcR0; Complex _dcR0; /** * Overall coupling to right-handed leptons for ~dS0 */ double _dcR0t; /** * Overall coupling to left-handed leptons for ~dS1 triplet */ double _dcL1; /** * Overall coupling to left-handed leptons for dS1/2 triplet */ //double _dcL12; Complex _dcL12; /** * Overall coupling to right-handed leptons for dS1/2 triplet */ //double _dcR12; Complex _dcR12; /** * Overall coupling to left-handed leptons for ~dS1/2 triplet */ // double _dcL12t; Complex _dcL12t; /** * Suppression scale for derivatively coupled scalar leptoquarks */ double _derivscale; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of LeptoquarkModelSLQFFVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of LeptoquarkModelSLQFFVertex. */ typedef ThePEG::Helicity::FFSVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::LeptoquarkModelSLQFFVertex"; } }; /** @endcond */ } #endif /* HERWIG_LeptoquarkModelSLQFFVertex_H */ herwig++-2.6.0.orig/Models/Leptoquarks/LeptoquarkModelSLQSLQGGVertex.cc0000644000175000017500000000505211754474773026530 0ustar sylvestresylvestre// -*- C++ -*- // // LeptoquarkModelSLQSLQGGVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the LeptoquarkModelSLQSLQGGVertex class. // #include "LeptoquarkModelSLQSLQGGVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; LeptoquarkModelSLQSLQGGVertex::LeptoquarkModelSLQSLQGGVertex() : _q2last(ZERO), _couplast(0.) { orderInGs(2); orderInGem(0); } void LeptoquarkModelSLQSLQGGVertex::doinit() { addToList(21,21,9941551,-9941551); addToList(21,21,9911561,-9911561); addToList(21,21,9921551,-9921551); addToList(21,21,9931561,-9931561); addToList(21,21,9931551,-9931551); addToList(21,21,9931661,-9931661); addToList(21,21,9941561,-9941561); addToList(21,21,9951551,-9951551); addToList(21,21,9951651,-9951651); addToList(21,21,9961551,-9961551); addToList(21,21,9971561,-9971561); addToList(21,21,9981561,-9981561); addToList(21,21,9981551,-9981551); addToList(21,21,9981651,-9981651); addToList(21,21,9991551,-9991551); addToList(21,21,9991561,-9991561); addToList(21,21,9901561,-9901561); addToList(21,21,9901661,-9901661); VVSSVertex::doinit(); // _theModel = generator()->standardModel(); // tcHwLeptoquarkPtr hwLeptoquark=dynamic_ptr_cast(_theModel); } void LeptoquarkModelSLQSLQGGVertex::persistentOutput(PersistentOStream & os) const { os << _theModel; } void LeptoquarkModelSLQSLQGGVertex::persistentInput(PersistentIStream & is, int) { is >> _theModel; } ClassDescription LeptoquarkModelSLQSLQGGVertex::initLeptoquarkModelSLQSLQGGVertex; // Definition of the static class description member. void LeptoquarkModelSLQSLQGGVertex::Init() { static ClassDocumentation documentation ("The LeptoquarkModelSLQSLQGGVertex class is the implementation of" " the LeptoquarkModel scalar LQ-scalar LQ-gluon-gluon vertex"); } void LeptoquarkModelSLQSLQGGVertex::setCoupling(Energy2 q2,tcPDPtr ,tcPDPtr ,tcPDPtr, tcPDPtr ) { if(q2 != _q2last || _couplast == 0.) { _couplast = sqr(strongCoupling(q2)); _q2last = q2; } norm(_couplast); } herwig++-2.6.0.orig/Models/Susy/0000755000175000017500000000000011756464206017154 5ustar sylvestresylvestreherwig++-2.6.0.orig/Models/Susy/SSWHHVertex.h0000644000175000017500000001130611754474773021430 0ustar sylvestresylvestre// -*- C++ -*- // // SSWHHVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSWHHVertex_H #define HERWIG_SSWHHVertex_H // // This is the declaration of the SSWHHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h" #include "MSSM.h" namespace Herwig { using namespace ThePEG; /** * The coupling of a pair of higgs to the SM gauge bosons * in the MSSM. * * @see \ref SSWHHVertexInterfaces "The interfaces" * defined for SSWHHVertex. */ class SSWHHVertex: public VSSVertex { public: /** * The default constructor. */ SSWHHVertex(); 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(); /** * Calculate the coupling for the vertex * @param q2 The scale to at which evaluate the coupling. * @param particle1 The first particle in the vertex. * @param particle2 The second particle in the vertex. * @param particle3 The third particle in the vertex. */ virtual void setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2, tcPDPtr particle3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSWHHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSWHHVertex & operator=(const SSWHHVertex &); private: /** * The value of \f$\sin\theta_W\f$ */ double theSw; /** * The value of \f$\sin2\theta_W\f$ */ double theS2w; /** * The value of \f$\cos2\theta_W\f$ */ double theC2w; /** * The value of \f$\sin(\beta - \alpha)\f$ */ double thesbma; /** * The value of \f$\cos(\beta - \alpha)\f$ */ double thecbma; /** * The scale at which the coupling was last evaluated. */ Energy2 theq2last; /** * The value of the \f$\sqrt{4\pi\alpha}\f$ when last evaluated. */ double theElast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSWHHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSWHHVertex. */ typedef ThePEG::Helicity::VSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSWHHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSWHHVertex"; } /** * The name of a file containing the dynamic library where the class * SSWHHVertex is implemented. It may also include several, space-separated, * libraries if the class SSWHHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSWHHVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSCFSVertex.h0000644000175000017500000001247511754474773021425 0ustar sylvestresylvestre// -*- C++ -*- // // SSCFSVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSCFSVertex_H #define HERWIG_SSCFSVertex_H // // This is the declaration of the SSCFSVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h" #include "MSSM.h" namespace Herwig { using namespace ThePEG; /** * This is the implementation of the coupling of the charginos to fermion- * sfermions. It inherits from FFSVertex and implements the virtual * setCoupling member * * @see FFSVertex */ class SSCFSVertex: public FFSVertex { public: /** * The default constructor. */ SSCFSVertex(); 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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSCFSVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSCFSVertex & operator=(const SSCFSVertex &); /** * Pointer to the MSSM object */ tMSSMPtr _theSS; /** * \f$\sin(\beta)\f$ */ double _sb; /** * \f$\cos(\beta)\f$ */ double _cb; /** * Mass of the W */ Energy _mw; /** * Pointer to stop mixing matrix */ tMixingMatrixPtr _stop; /** * Pointer to sbottom mixing matrix */ tMixingMatrixPtr _sbot; /** * Pointer to stau mixing matrix */ tMixingMatrixPtr _stau; /** * Pointer to U chargino mixing matrix */ tMixingMatrixPtr _umix; /** * Pointer to V chargino mixing matrix */ tMixingMatrixPtr _vmix; /** * The energy scale at which the coupling * was last evaluated */ Energy2 _q2last; /** * The value of the coupling at the scale last evaluated */ Complex _couplast; /** * The value of the left coupling when last evaluated */ Complex _leftlast; /** * The value of the right coupling when last evaluated */ Complex _rightlast; /** * Id of the last sm fermion that the coupling was evaluated for */ long _id1last; /** * Id of the last scalar that the coupling was evaluated for */ long _id2last; /** * Id of the last chargino that the coupling was evaluated for */ long _id3last; /** * Include Yukawa's ? */ bool yukawa_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSCFSVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSCFSVertex. */ typedef ThePEG::Helicity::FFSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSCFSVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSCFSVertex"; } /** Return the name of the shared library be loaded to get * access to the SSCFSVertex class and every other class it uses * (except the base class). */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSCFSVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSWWHHVertex.h0000644000175000017500000001033711754474773021562 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_SSWWHHVertex_H #define HERWIG_SSWWHHVertex_H // // This is the declaration of the SSWWHHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VVSSVertex.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the SSWWHHVertex class. * * @see \ref SSWWHHVertexInterfaces "The interfaces" * defined for SSWWHHVertex. */ class SSWWHHVertex: public Helicity::VVSSVertex { public: /** * The default constructor. */ SSWWHHVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the fourth particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2, tcPDPtr part3, tcPDPtr part4); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSWWHHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSWWHHVertex & operator=(const SSWWHHVertex &); private: /** * Storage of the couplings. */ //@{ /** * The last value of the electroweak coupling calculated. */ Complex couplast_; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 q2last_; //@} /** * Prefactors for the couplings */ vector coup_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSWWHHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSWWHHVertex. */ typedef Helicity::VVSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSWWHHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSWWHHVertex"; } /** * The name of a file containing the dynamic library where the class * SSWWHHVertex is implemented. It may also include several, space-separated, * libraries if the class SSWWHHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSWWHHVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSCNWVertex.cc0000644000175000017500000001023411754474773021566 0ustar sylvestresylvestre// -*- C++ -*- // // SSCNWVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSCNWVertex class. // #include "SSCNWVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace ThePEG::Helicity; using namespace Herwig; SSCNWVertex::SSCNWVertex() : _sw(0.), _couplast(0.), _q2last(ZERO), _id1last(0), _id2last(0), _leftlast(0.), _rightlast(0.) { orderInGs(0); orderInGem(1); } void SSCNWVertex::doinit() { long neu[] = { 1000022, 1000023, 1000025, 1000035, 1000045 }; long cha[] = { 1000024, 1000037 }; // sign == -1 outgoing W-, sign == +1 outgoing W+ for(int sign = -1; sign < 2; sign += 2) for(unsigned int ine = 0; ine < 5; ++ine) for(unsigned int ic = 0; ic < 2; ++ic) addToList(-sign*cha[ic], neu[ine], sign*24); FFVVertex::doinit(); tSusyBasePtr theSS = dynamic_ptr_cast(generator()->standardModel()); if(!theSS) throw InitException() << "SSCNWVertex::doinit() - The model pointer is null!" << Exception::abortnow; _sw = sqrt(sin2ThetaW()); _theN = theSS->neutralinoMix(); _theU = theSS->charginoUMix(); _theV = theSS->charginoVMix(); if(!_theN || !_theU || ! _theV) throw InitException() << "SSCNWVertex::doinit() - " << "A mixing matrix pointer is null." << " N: " << _theN << " U: " << _theU << " V: " << _theV << Exception::abortnow; } void SSCNWVertex::persistentOutput(PersistentOStream & os) const { os << _sw << _theN << _theU << _theV; } void SSCNWVertex::persistentInput(PersistentIStream & is, int) { is >> _sw >> _theN >> _theU >> _theV; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeSSCNWVertex("Herwig::SSCNWVertex", "HwSusy.so"); void SSCNWVertex::Init() { static ClassDocumentation documentation ("This class implements the coupling of a W boson to a " "neutralino and a chargino"); } void SSCNWVertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, #ifndef NDEBUG tcPDPtr part3) { #else tcPDPtr) { #endif assert(abs(part3->id()) == ParticleID::Wplus); long neu, cha; if(part1->charged()) { cha = part1->id(); neu = part2->id(); } else { cha = part2->id(); neu = part1->id(); } assert((abs(cha) == 1000024 || abs(cha) == 1000037) && (neu == 1000022 || neu == 1000023 || neu == 1000025 || neu == 1000035 || neu == 1000045) ); if(q2 != _q2last||_couplast==0.) { _q2last = q2; _couplast = weakCoupling(q2); } norm(_couplast); if(cha != _id1last || neu != _id2last) { _id1last = cha; _id2last = neu; unsigned int eigc = abs(cha) == 1000037 ? 1 : 0; unsigned int eign(0); if (neu == 1000023) eign = 1; else if(neu == 1000025) eign = 2; else if(neu == 1000035) eign = 3; else if(neu == 1000045) eign = 4; _leftlast = (*_theN)(eign, 1)*conj((*_theV)(eigc, 0)) - ( (*_theN)(eign, 3)*conj((*_theV)(eigc, 1))/sqrt(2)); _rightlast = conj((*_theN)(eign, 1))*(*_theU)(eigc, 0) + ( conj((*_theN)(eign, 2))*(*_theU)(eigc, 1)/sqrt(2)); } Complex ltemp = _leftlast; Complex rtemp = _rightlast; // conjugate if +ve chargino if(cha>0) { ltemp = conj(ltemp); rtemp = conj(rtemp); } if((part1->id()==cha&&cha>0)||(part2->id()==cha&&cha<0)) { Complex temp = ltemp; ltemp = -rtemp; rtemp = -temp; } left (ltemp); right(rtemp); } herwig++-2.6.0.orig/Models/Susy/SSGFSVertex.h0000644000175000017500000001143411754474773021423 0ustar sylvestresylvestre// -*- C++ -*- // // SSGFSVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSGFSVertex_H #define HERWIG_SSGFSVertex_H // // This is the declaration of the SSGFSVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h" #include "MSSM.h" namespace Herwig { using namespace ThePEG; /** * This is the implementation of the coupling of a gluino to a squark- * quark pair. It inherits from FFSVertex and implements the setCoupling * method. * * @see FFSVertex */ class SSGFSVertex: public FFSVertex { public: /** * The default constructor. */ SSGFSVertex(); 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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} /** * Pointer to the stop mixing matrix */ tMixingMatrixPtr _stop; /** * Pointer to the _sbottom mixing matrix */ tMixingMatrixPtr _sbottom; /** * Gluino Phase */ Complex gluinoPhase_; /** * The scale at which the coupling was last evaluated; */ Energy2 _q2last; /** * The value of the coupling when it was last evaluated */ Complex _couplast; /** * The id of the sm fermion for which the coupling was evaluated */ long _id1last; /** * The id of the scalar for which the coupling was evaluated */ long _id2last; /** * The value of the left coupling when it was last evaluated */ Complex _leftlast; /** * The value of the right coupling when it was last evaluated */ Complex _rightlast; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSGFSVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSGFSVertex & operator=(const SSGFSVertex &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSGFSVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSGFSVertex. */ typedef ThePEG::Helicity::FFSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSGFSVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSGFSVertex"; } /** Return the name of the shared library be loaded to get * access to the SSGFSVertex class and every other class it uses * (except the base class). */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSGFSVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSCFSVertex.cc0000644000175000017500000001412211754474773021552 0ustar sylvestresylvestre// -*- C++ -*- // // SSCFSVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSCFSVertex class. // #include "SSCFSVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace ThePEG::Helicity; using namespace Herwig; SSCFSVertex::SSCFSVertex(): _sb(0.),_cb(0.),_mw(ZERO), _q2last(0.*GeV2), _couplast(0.), _leftlast(0.),_rightlast(0.), _id1last(0), _id2last(0), _id3last(0), yukawa_(true) { orderInGem(1); orderInGs(0); } void SSCFSVertex::doinit() { long chargino[2] = {1000024, 1000037}; for(unsigned int ic = 0; ic < 2; ++ic) { //quarks for(long ix = 1; ix < 7; ++ix) { if( ix % 2 == 0 ) { addToList(-chargino[ic],ix,-(999999+ix)); addToList(-chargino[ic],ix,-(1999999+ix)); addToList(-ix,chargino[ic],(999999+ix)); addToList(-ix,chargino[ic],(1999999+ix)); } else { addToList(-chargino[ic],-ix,(1000001+ix)); addToList(-chargino[ic],-ix,2000001+ix); addToList(chargino[ic],ix,-(1000001+ix)); addToList(chargino[ic],ix,-(2000001+ix)); } } //leptons for(long ix = 11; ix < 17; ++ix) { if( ix % 2 == 0 ) { addToList(-chargino[ic],ix,-(999999+ix)); addToList(-chargino[ic],ix,-(1999999+ix)); addToList(-ix,chargino[ic],(999999+ix)); addToList(-ix,chargino[ic],(1999999+ix)); } else { addToList(-chargino[ic],-ix,1000001+ix); addToList(chargino[ic],ix,-(1000001+ix)); } } } FFSVertex::doinit(); _theSS = dynamic_ptr_cast(generator()->standardModel()); //mixing matrices _stop = _theSS->stopMix(); _sbot = _theSS->sbottomMix(); _stau = _theSS->stauMix(); _umix = _theSS->charginoUMix(); _vmix = _theSS->charginoVMix(); if(!_stop || !_stau || !_sbot || !_umix || !_vmix) throw InitException() << "SSCFSVertex:: doinit - " << "A mixing matrix pointer is null." << " stop: " << _stop << " sbottom: " << _sbot << " stau: " << _stau << " U: " << _umix << " V:" << _vmix << Exception::abortnow; _mw = getParticleData(24)->mass(); double tb = _theSS->tanBeta(); _sb = tb/sqrt(1 + sqr(tb)); _cb = sqrt(1.- sqr(_sb)); } void SSCFSVertex::persistentOutput(PersistentOStream & os) const { os << _theSS << _sb << _cb << ounit(_mw,GeV) << _stop << _sbot << _stau << _umix << _vmix << yukawa_; } void SSCFSVertex::persistentInput(PersistentIStream & is, int) { is >> _theSS >> _sb >> _cb >> iunit(_mw,GeV) >> _stop >> _sbot >> _stau >> _umix >> _vmix >> yukawa_; } ClassDescription SSCFSVertex::initSSCFSVertex; // Definition of the static class description member. void SSCFSVertex::Init() { static ClassDocumentation documentation ("The implementation of the coupling of the charginos to fermion-" "sfermions."); static Switch interfaceYukawa ("Yukawa", "Whether or not to include the Yukawa type couplings", &SSCFSVertex::yukawa_, true, false, false); static SwitchOption interfaceYukawaYes (interfaceYukawa, "Yes", "Include the terms", true); static SwitchOption interfaceYukawaNo (interfaceYukawa, "No", "Don't include them", false); } void SSCFSVertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2,tcPDPtr part3) { long isc(abs(part3->id())), ism(abs(part1->id())), ichg(abs(part2->id())); tcPDPtr smfermion = part1; if( ism / 1000000 == 1 ) { swap( ism, ichg); smfermion = part2; } //overall normalisation if(q2!=_q2last||_couplast==0.) { _q2last=q2; _couplast = -weakCoupling(q2); } norm(_couplast); if( ichg != _id1last || ism != _id2last || isc != _id3last ) { _id1last = ichg; _id2last = ism; _id3last = isc; // determine chargino and sfermion eigenstates unsigned int alpha(isc/1000000 - 1); unsigned int ch = (ichg == 1000024 ) ? 0 : 1; Complex ul1 = (*_umix)(ch,0); Complex ul2 = (*_umix)(ch,1); Complex vl1 = (*_vmix)(ch,0); Complex vl2 = (*_vmix)(ch,1); if( ism >= 11 && ism <= 16 ) { long lept = ( ism % 2 == 0 ) ? ism - 1 : ism; double y = yukawa_ ? double(_theSS->mass(q2, getParticleData(lept))/_mw/sqrt(2)/_cb) : 0.; if( ism == 12 || ism == 14 ) { _leftlast = Complex(0., 0.); if( alpha == 0 ) _rightlast = ul1; else _rightlast = -y*ul2; } else if( ism == 16 ) { _leftlast = Complex(0., 0.); _rightlast = ul1*(*_stau)(alpha, 0) - y*(*_stau)(alpha,1)*ul2; } else if( ism == 11 || ism == 13 || ism == 15 ) { _leftlast = -y*conj(ul2); _rightlast = vl1; } } else { double yd(0.), yu(0.); if(yukawa_) { if( ism % 2 == 0) { yu = _theSS->mass(q2, getParticleData(ism))/_mw/sqrt(2)/_sb; yd = _theSS->mass(q2, getParticleData(ism - 1))/_mw/sqrt(2)/_cb; } else { yu = _theSS->mass(q2, getParticleData(ism + 1))/_mw/sqrt(2)/_sb; yd = _theSS->mass(q2, getParticleData(ism))/_mw/sqrt(2)/_cb; } } //heavy quarks if( ism == 5 ) { _leftlast = -yd*conj(ul2)*(*_stop)(alpha,0); _rightlast = vl1*(*_stop)(alpha, 0) - yu*vl2*(*_stop)(alpha,1); } else if( ism == 6 ) { _leftlast = -yu*conj(vl2)*(*_sbot)(alpha,0); _rightlast = ul1*(*_sbot)(alpha, 0) - yd*ul2*(*_sbot)(alpha,1); } else { if( alpha == 0 ) { _leftlast = (ism % 2 == 0) ? -yu*conj(vl2) : -yd*conj(ul2); _rightlast = (ism % 2 == 0) ? ul1 : vl1; } else { _leftlast = Complex(0.); _rightlast = (ism % 2 == 0) ? -yd*ul2 : -yu*vl2; } } } }//end of coupling calculation //determine the helicity order of the vertex if( smfermion->id() < 0 ) { left(conj(_rightlast)); right(conj(_leftlast)); } else { left(_leftlast); right(_rightlast); } } herwig++-2.6.0.orig/Models/Susy/SSWWHHVertex.cc0000644000175000017500000001075011754474773021717 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SSWWHHVertex class. // #include "SSWWHHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "MSSM.h" using namespace Herwig; SSWWHHVertex::SSWWHHVertex() : couplast_(0.), q2last_(ZERO) { orderInGs(0); orderInGem(2); } IBPtr SSWWHHVertex::clone() const { return new_ptr(*this); } IBPtr SSWWHHVertex::fullclone() const { return new_ptr(*this); } void SSWWHHVertex::persistentOutput(PersistentOStream & os) const { os << coup_; } void SSWWHHVertex::persistentInput(PersistentIStream & is, int) { is >> coup_; } ClassDescription SSWWHHVertex::initSSWWHHVertex; // Definition of the static class description member. void SSWWHHVertex::Init() { static ClassDocumentation documentation ("The SSWWHHVertex class implements the coupling of two Higgs bosons and" "two electroweak vector bosons in the MSSM."); } void SSWWHHVertex::doinit() { int id[3]={25,35,36}; for(unsigned int ix=0;ix<3;++ix) { addToList( 24,-24,id[ix],id[ix]); addToList( 23, 23,id[ix],id[ix]); addToList( 22, 24,id[ix],-37); addToList( 22,-24,id[ix], 37); addToList( 23, 24,id[ix],-37); addToList( 23,-24,id[ix], 37); } addToList( 24,-24, 37,-37); addToList( 23, 23, 37,-37); addToList( 22, 23, 37,-37); addToList( 22, 22, 37,-37); VVSSVertex::doinit(); tMSSMPtr model = dynamic_ptr_cast(generator()->standardModel()); if( !model ) throw Exception() << "SSWWHHVertex::doinit() - The pointer to the MSSM object is null!" << Exception::abortnow; coup_.resize(11); double sw2 = sin2ThetaW(); double sw = sqrt(sw2); double cw2 = 1.-sw2; double cw = sqrt(cw2); double c2w = cw2-sw2; double sinalp = sin(model->higgsMixingAngle()); double cosalp = sqrt(1. - sqr(sinalp)); double tanbeta = model->tanBeta(); double sinbeta = tanbeta/sqrt(1. + sqr(tanbeta)); double cosbeta = sqrt( 1. - sqr(sinbeta) ); double sinbma = sinbeta*cosalp - cosbeta*sinalp; double cosbma = cosbeta*cosalp + sinbeta*sinalp; // WWHH coup_[0] = 0.5/sw2; // ZZH0H0 coup_[1] = 0.5/sw2/cw2; // ZZH+H- coup_[2] = 0.5*sqr(c2w)/cw2/sw2; // Z W h0 H+ coup_[3] =-0.5/cw*cosbma; // Z W H0 H+ coup_[4] = 0.5/cw*sinbma; // Z W A0 H+ coup_[5] =-Complex(0.,0.5)/cw; // A A H+H- coup_[6] = 2.; // A Z H+H- coup_[7] = c2w/sw/cw; // A W h0 H+ coup_[8] = 0.5*cosbma/sw; // A W H0 H+ coup_[9] =-0.5*sinbma/sw; // A W A0 H+ coup_[10] = Complex(0.,0.5)/sw; } void SSWWHHVertex::setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2, tcPDPtr part3, tcPDPtr part4) { if(q2!=q2last_||couplast_==0.) { couplast_ = sqr(electroMagneticCoupling(q2)); q2last_=q2; } int ibos1 = part1->id(), ibos2 = part2->id(); int isca1 = part3->id(), isca2 = part4->id(); if(abs(ibos1)==abs(ibos2)) { if(abs(ibos1)==ParticleID::Wplus) { norm(couplast_*coup_[0]); } else if(ibos1==ParticleID::Z0) { if(abs(isca1)==ParticleID::Hplus) norm(couplast_*coup_[2]); else norm(couplast_*coup_[1]); } else if(ibos1==ParticleID::gamma) { norm(couplast_*coup_[6]); } else assert(false); } else if(abs(ibos1)==ParticleID::Wplus || abs(ibos2)==ParticleID::Wplus) { if(abs(ibos1)==ParticleID::gamma || abs(ibos2)==ParticleID::gamma) { if(abs(isca1)==ParticleID::h0 || abs(isca2)==ParticleID::h0) { norm(couplast_*coup_[8]); } else if(abs(isca1)==ParticleID::H0 || abs(isca2)==ParticleID::H0) { norm(couplast_*coup_[9]); } else if(abs(isca1)==ParticleID::A0 || abs(isca2)==ParticleID::A0) { if(isca1==ParticleID::Hplus || isca2==ParticleID::Hplus) { norm(couplast_* coup_[10] ); } else { norm(couplast_*conj(coup_[10])); } } else assert(false); } else { if(abs(isca1)==ParticleID::h0 || abs(isca2)==ParticleID::h0) { norm(couplast_*coup_[3]); } else if(abs(isca1)==ParticleID::H0 || abs(isca2)==ParticleID::H0) { norm(couplast_*coup_[4]); } else if(abs(isca1)==ParticleID::A0 || abs(isca2)==ParticleID::A0) { if(isca1==ParticleID::Hplus || isca2==ParticleID::Hplus) { norm(couplast_* coup_[5] ); } else { norm(couplast_*conj(coup_[5])); } } else assert(false); } } else { norm(couplast_*coup_[7]); } } herwig++-2.6.0.orig/Models/Susy/SSNFSVertex.h0000644000175000017500000001264011754474773021432 0ustar sylvestresylvestre// -*- C++ -*- // // SSNFSVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSNFSVertex_H #define HERWIG_SSNFSVertex_H // // This is the declaration of the SSNFSVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "MSSM.h" namespace Herwig { using namespace ThePEG; /** * This is the implementation of the coupling of the neutralinos to * fermion-sfermions. It inherits from FFSVertex and implements the * virtual setCoupling() method. * * @see FFSVertex */ class SSNFSVertex: public FFSVertex { public: /** * The default constructor. */ SSNFSVertex(); 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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSNFSVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSNFSVertex & operator=(const SSNFSVertex &); /** * Pointer to the stop mixing matrix */ tMixingMatrixPtr _stop; /** * Pointer to the sbottom mixing matrix */ tMixingMatrixPtr _sbot; /** * Pointer to the stau mixing matrix */ tMixingMatrixPtr _stau; /** * Pointer to the neutralino mixing matrix */ tMixingMatrixPtr _nmix; /** * Pointer to the Susy Model object */ tMSSMPtr _theSS; /** * \f$\sin(\theta_w)\f$ */ double _sw; /** * \f$\cos(\theta_w)\f$ */ double _cw; /** * Mass of the W */ Energy _mw; /** * \f$\sin(\beta)\f$ */ double _sb; /** * \f$\cos(\beta)\f$ */ double _cb; /** * The scale at which the coupling was last evaluated. */ Energy2 _q2last; /** * The value of the normalisation when it was evaluated at _q2last */ Complex _couplast; /** * Store the value of the left coupling when it was last evaluated */ Complex _leftlast; /** * Store the value of the right coupling when it was last evaluated */ Complex _rightlast; /** * Store the id of the last neutralino to be evaluate */ long _id1last; /** * Store the id of the last SM fermion to be evaluate */ long _id2last; /** * Store the id of the last scalar to be evaluate */ long _id3last; /** * Include Yukawa's ? */ bool yukawa_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSNFSVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSNFSVertex. */ typedef ThePEG::Helicity::FFSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSNFSVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSNFSVertex"; } /** Return the name of the shared library be loaded to get * access to the SSNFSVertex class and every other class it uses * (except the base class). */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSNFSVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSHSFSFVertex.h0000644000175000017500000001640311754474773021656 0ustar sylvestresylvestre// -*- C++ -*- // // SSHSFSFVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSHSFSFVertex_H #define HERWIG_SSHSFSFVertex_H // // This is the declaration of the SSHSFSFVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/SSSVertex.h" #include "MSSM.h" namespace Herwig { using namespace ThePEG; /** * This is the implementation of the coupling for a Higgs in the MSSM * to a pair of sfermions. * * @see \ref SSHSFSFVertexInterfaces "The interfaces" * defined for SSHSFSFVertex. */ class SSHSFSFVertex: public SSSVertex { /** A vector of MixingMatrix pointers. */ typedef vector MMPVector; public: /** * The default constructor. */ SSHSFSFVertex(); /** @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(); /** * Calculate the coupling at the given scale. * @param q2 The scale at which to evaluate the coupling * @param particle1 The first particle at the vertex * @param particle2 The second particle at the vertex * @param particle3 The third particle at the vertex */ void setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2, tcPDPtr particle3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSHSFSFVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSHSFSFVertex & operator=(const SSHSFSFVertex &); private: /** @name Functions to calculate the coupling based on the sfermion type. */ //@{ /** * Calculate the coupling for the first higgs * @param higgs The ID of the higgs * @param smID The ID of the SM particle to which it is a partner. * @param alpha The mass eigenstate of an sfermion * @param beta The mass eigenstate of the other sfermion */ void downSF(long higgs, long smID, unsigned int alpha, unsigned int beta); /** * Calculate the coupling for the second higgs * @param higgs The ID of the higgs * @param smID The ID of the SM particle to which it is a partner. * @param alpha The mass eigenstate of an sfermion * @param beta The mass eigenstate of the other sfermion */ void upSF(long higgs, long smID, unsigned int alpha, unsigned int beta); /** * Calculate the coupling for the third higgs * @param higgs The ID of the higgs * @param smID The ID of the SM particle to which it is a partner. * @param alpha The mass eigenstate of an sfermion * @param beta The mass eigenstate of the other sfermion */ void leptonSF(long higgs, long smID, unsigned int alpha, unsigned int beta); /** * Calculate the coupling for the charged higgs * @param id1 The ID of the first sfermion * @param id2 The ID of the second sfermion */ void chargedHiggs(long id1, long id2); //@} private: /** * A vector containing pointers to the mixing matrices, 0 = stop, * 1 = sbottom, 2 = stau */ MMPVector theMix; /** * A vector containing the trilinear couplings, quarks then leptons */ vector > theTriC; /** * The value of \f$\sin\alpha\f$. */ double theSinA; /** * The value of \f$\cos\alpha\f$. */ double theCosA; /** * The value of \f$\sin\beta\f$. */ double theSinB; /** * The value of \f$\cos\beta\f$. */ double theCosB; /** * The value of \f$\tan\beta\f$. */ double theTanB; /** * The value of \f$\sin(\alpha + \beta)\f$. */ double theSinAB; /** * The value of \f$\cos(\alpha + \beta)\f$. */ double theCosAB; /** * The mass of the \f$W\f$. */ Energy theMw; /** * The mass of the \f$Z\f$. */ Energy theMz; /** * The \f$\mu\f$ parameter. */ Energy theMu; /** * The value of \f$\sin\theta_W\f$ */ double theSw; /** * The value of \f$\cos\theta_W\f$ */ double theCw; /** * The value of the coupling when it was last evaluated */ complex theCoupLast; /** * The scale at which the coupling was last evaluated */ Energy2 theq2Last; /** * The value of g coupling when it was last evaluated */ double thegLast; /** * The ID of the higgs when the vertex was last evaluated */ long theHLast; /** * The ID of the first sfermion when the vertex was last evaluated */ long theSF1Last; /** * The ID of the second sfermion when the vertex was last evaluated */ long theSF2Last; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSHSFSFVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSHSFSFVertex. */ typedef ThePEG::Helicity::SSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSHSFSFVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSHSFSFVertex"; } /** * The name of a file containing the dynamic library where the class * SSHSFSFVertex is implemented. It may also include several, space-separated, * libraries if the class SSHSFSFVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSHSFSFVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSWWHVertex.h0000644000175000017500000001221211754474773021444 0ustar sylvestresylvestre// -*- C++ -*- // // SSWWHVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSWWHVertex_H #define HERWIG_SSWWHVertex_H // // This is the declaration of the SSWWHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VVSVertex.h" #include "MSSM.h" namespace Herwig { using namespace ThePEG; /** * This class implements the coupling of a higgs in the MSSM * to a pair of SM gauge bosons. * * @see \ref SSWWHVertexInterfaces "The interfaces" * defined for SSWWHVertex. */ class SSWWHVertex: public VVSVertex { public: /** * The default constructor. */ SSWWHVertex(); 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(); /** * Calculate the coupling for the vertex * @param q2 The scale to at which evaluate the coupling. * @param particle1 The first particle in the vertex. * @param particle2 The second particle in the vertex. * @param particle3 The third particle in the vertex. */ virtual void setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2, tcPDPtr particle3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSWWHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSWWHVertex & operator=(const SSWWHVertex &); private: /** * The value of the factor \f$\frac{m_W \sin(\beta-\alpha)}{\sin\theta_W}\f$ */ Energy theh0Wfact; /** * The value of the factor \f$\frac{m_W \cos(\beta-\alpha)}{\sin\theta_W}\f$ */ Energy theH0Wfact; /** * The value of the factor * \f$\frac{m_Z\sin(\beta-\alpha)}{\sin\theta_W\cos\theta_W}\f$ */ Energy theh0Zfact; /** * The value of the factor * \f$\frac{m_Z\cos(\beta-\alpha)}{\sin\theta_W\cos\theta_W}\f$ */ Energy theH0Zfact; /** * The value of the coupling when it was last evaluated */ complex theCoupLast; /** * The value of \f$\sqrt{4\pi \alpha(q2)}\f$ when it was last evaluated. */ Complex theElast; /** * The scale at which the coupling was last evaluated */ Energy2 theq2last; /** * The ID of the last higgs for which the vertex was evaluated */ long theHlast; /** * The ID of the last gauge boson for which the vertex was evaluated */ long theGBlast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSWWHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSWWHVertex. */ typedef ThePEG::Helicity::VVSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSWWHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSWWHVertex"; } /** * The name of a file containing the dynamic library where the class * SSWWHVertex is implemented. It may also include several, space-separated, * libraries if the class SSWWHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSWWHVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSHHHVertex.cc0000644000175000017500000001061411754474773021550 0ustar sylvestresylvestre// -*- C++ -*- // // SSHHHVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSHHHVertex class. // #include "SSHHHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include using namespace ThePEG::Helicity; using namespace Herwig; SSHHHVertex::SSHHHVertex() : theMw(ZERO), theZfact(ZERO), theSw(0.), theSbpa(0.), theCbpa(0.), theSbma(0.), theCbma(0.), theS2a(0.), theC2a(0.), theS2b(0.), theC2b(0.), theElast(0.), theq2last(ZERO) { orderInGem(1); orderInGs(0); } void SSHHHVertex::doinit() { long sec = 35; for(long h = 25; h < 36; h += 10) { //self-coupling addToList(h, h, h); //first-second addToList(h,sec,sec); //pseudo-scalar addToList(h, 36, 36); //charged higgs addToList(h, 37,-37); sec = 25; } SSSVertex::doinit(); tMSSMPtr theMSSM = dynamic_ptr_cast(generator()->standardModel()); if( !theMSSM ) throw InitException() << "SSHHHVertex::doinit() - The pointer to the MSSM object is null!" << Exception::abortnow; theMw = getParticleData(ParticleID::Wplus)->mass(); theSw = sqrt(sin2ThetaW()); theZfact = getParticleData(ParticleID::Z0)->mass()/2./ theSw/sqrt(1. - sqr(theSw)); double tanbeta = theMSSM->tanBeta(); double sinbeta = tanbeta/sqrt(1. + sqr(tanbeta)); double cosbeta = sqrt(1. - sqr(sinbeta)); double sinalpha = sin(theMSSM->higgsMixingAngle()); double cosalpha = sqrt( 1. - sqr(sinalpha) ); theS2a = 2.*sinalpha*cosalpha; theS2b = 2.*sinbeta*cosbeta; theC2a = cosalpha*cosalpha - sinalpha*sinalpha; theC2b = cosbeta*cosbeta - sinbeta*sinbeta; theSbpa = sinbeta*cosalpha + sinalpha*cosbeta; theCbpa = cosbeta*cosalpha - sinbeta*sinalpha; theSbma = sinbeta*cosalpha - sinalpha*cosbeta; theCbma = cosbeta*cosalpha + sinbeta*sinalpha; } void SSHHHVertex::persistentOutput(PersistentOStream & os) const { os << ounit(theMw,GeV) << ounit(theZfact,GeV) << theSw << theSbpa << theCbpa << theSbma << theCbma << theS2a << theC2a << theS2b << theC2b; } void SSHHHVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(theMw,GeV) >> iunit(theZfact,GeV) >> theSw >> theSbpa >> theCbpa >> theSbma >> theCbma >> theS2a >> theC2a >> theS2b >> theC2b; } ClassDescription SSHHHVertex::initSSHHHVertex; // Definition of the static class description member. void SSHHHVertex::Init() { static ClassDocumentation documentation ("This is the coupling of a higgs to a pair of higgs bosons " "in the MSSM."); } void SSHHHVertex::setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2,tcPDPtr particle3) { long ids[3] = { abs(particle1->id()), abs(particle2->id()), abs(particle3->id()) }; long h1(0), h2(0), h3(0), hc(0); for(unsigned int i = 0; i < 3; ++i) { if( ids[i] == ParticleID::h0) ++h1; else if( ids[i] == ParticleID::H0) ++h2; else if( ids[i] == ParticleID::A0) ++h3; else if( ids[i] == ParticleID::Hplus) ++hc; else assert(false); } assert(h1 + h2 + h3 + hc == 3); complex coupling; if( h1 == 3 || h2 == 3 ) { coupling = -3.*theZfact*theC2a; if( h1 == 3 ) coupling *= theSbpa; else coupling *= theCbpa; } else if( h1 == 1 ) { if( h2 == 2 ) coupling = theZfact*( 2.*theS2a*theCbpa + theSbpa*theC2a ); else if( h3 == 2 ) coupling = -theZfact*theC2b*theSbpa; else if( hc == 2 ) coupling = -theMw*theSbma/theSw - theZfact*theC2b*theSbpa; else assert(false); } else if( h2 == 1 ) { if( h1 == 2 ) coupling = -theZfact*( 2.*theS2a*theSbpa - theCbpa*theC2a ); else if( h3 == 2 ) coupling = theZfact*theC2b*theCbpa; else if( hc == 2 ) coupling = -theMw*theCbma/theSw + theZfact*theC2b*theCbpa; else assert(false); } if( q2 != theq2last || theElast==0. ) { theq2last = q2; theElast = electroMagneticCoupling(q2); } norm(theElast*coupling*UnitRemoval::InvE); } herwig++-2.6.0.orig/Models/Susy/Makefile.in0000644000175000017500000007254711756461700021234 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Models/Susy DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwSusy_la_LIBADD = am_HwSusy_la_OBJECTS = SusyBase.lo MSSM.lo MixingMatrix.lo \ SSCFSVertex.lo SSGFSVertex.lo SSHSFSFVertex.lo SSNFSVertex.lo \ SSWSSVertex.lo SSGSSVertex.lo SSGGSQSQVertex.lo \ SSGSGSGVertex.lo SSNNZVertex.lo SSCCZVertex.lo SSCNWVertex.lo \ SSFFHVertex.lo SSGOGOHVertex.lo SSWWHVertex.lo SSWWHHVertex.lo \ SSWHHVertex.lo SSHHHVertex.lo SSHGGVertex.lo SSHPPVertex.lo \ SSNNPVertex.lo SSGNGVertex.lo SSNCTVertex.lo SSGVNHVertex.lo \ SSGVNVVertex.lo SSGVFSVertex.lo HwSusy_la_OBJECTS = $(am_HwSusy_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwSusy_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(HwSusy_la_LDFLAGS) $(LDFLAGS) -o $@ @WANT_MSSM_TRUE@am_HwSusy_la_rpath = -rpath $(pkglibdir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwSusy_la_SOURCES) DIST_SOURCES = $(HwSusy_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = NMSSM @WANT_MSSM_TRUE@pkglib_LTLIBRARIES = HwSusy.la HwSusy_la_SOURCES = SusyBase.cc SusyBase.h SusyBase.fh \ MSSM.cc MSSM.h MSSM.fh\ MixingMatrix.h MixingMatrix.fh MixingMatrix.cc\ SSCFSVertex.cc SSCFSVertex.h \ SSGFSVertex.cc SSGFSVertex.h \ SSHSFSFVertex.cc SSHSFSFVertex.h \ SSNFSVertex.cc SSNFSVertex.h \ SSWSSVertex.cc SSWSSVertex.h \ SSGSSVertex.cc SSGSSVertex.h \ SSGGSQSQVertex.cc SSGGSQSQVertex.h \ SSGSGSGVertex.cc SSGSGSGVertex.h \ SSNNZVertex.cc SSNNZVertex.h \ SSCCZVertex.cc SSCCZVertex.h \ SSCNWVertex.cc SSCNWVertex.h \ SSFFHVertex.cc SSFFHVertex.h \ SSGOGOHVertex.cc SSGOGOHVertex.h \ SSWWHVertex.cc SSWWHVertex.h \ SSWWHHVertex.cc SSWWHHVertex.h \ SSWHHVertex.cc SSWHHVertex.h \ SSHHHVertex.cc SSHHHVertex.h \ SSHGGVertex.cc SSHGGVertex.h \ SSHPPVertex.cc SSHPPVertex.h \ SSNNPVertex.h SSNNPVertex.cc \ SSGNGVertex.h SSGNGVertex.cc \ SSNCTVertex.h SSNCTVertex.cc \ SSGVNHVertex.h SSGVNHVertex.cc\ SSGVNVVertex.h SSGVNVVertex.cc\ SSGVFSVertex.h SSGVFSVertex.cc HwSusy_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 9:0:0 all: all-recursive .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Models/Susy/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Models/Susy/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwSusy.la: $(HwSusy_la_OBJECTS) $(HwSusy_la_DEPENDENCIES) $(EXTRA_HwSusy_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwSusy_la_LINK) $(am_HwSusy_la_rpath) $(HwSusy_la_OBJECTS) $(HwSusy_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MSSM.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MixingMatrix.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSCCZVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSCFSVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSCNWVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSFFHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSGFSVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSGGSQSQVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSGNGVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSGOGOHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSGSGSGVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSGSSVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSGVFSVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSGVNHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSGVNVVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSHGGVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSHHHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSHPPVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSHSFSFVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSNCTVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSNFSVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSNNPVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSNNZVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSWHHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSWSSVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSWWHHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSWWHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SusyBase.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done cscopelist-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \ cscopelist-recursive ctags-recursive install-am install-strip \ tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ clean-pkglibLTLIBRARIES cscopelist cscopelist-recursive ctags \ ctags-recursive distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Models/Susy/NMSSM/0000755000175000017500000000000011756464206020051 5ustar sylvestresylvestreherwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMHSFSFVertex.h0000644000175000017500000001444511754474773023127 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_NMSSMHSFSFVertex_H #define HERWIG_NMSSMHSFSFVertex_H // // This is the declaration of the NMSSMHSFSFVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/SSSVertex.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/Models/Susy/MixingMatrix.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * This class defines the coupling of Higgs bosons to the sfermions * in the NMSSM. * * @see \ref NMSSMHSFSFVertexInterfaces "The interfaces" * defined for NMSSMHSFSFVertex. */ class NMSSMHSFSFVertex: public Helicity::SSSVertex { public: /** * The default constructor. */ NMSSMHSFSFVertex(); /** @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(); /** * Calculate the couplings. This method is virtual and must be implemented in * classes inheriting from this. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initNMSSMHSFSFVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ NMSSMHSFSFVertex & operator=(const NMSSMHSFSFVertex &); private: /** * Return the coupling of the charged higgs to the sfermions */ Complex chargedHiggs(Energy2 q2, long id1, long id2); private: /** @name Stored parameters for fast access.*/ //@{ /** * A pointer to the Standard Model object */ tcHwSMPtr _theSM; /** * The CP-even higgs mixing matrix */ MixingMatrixPtr _mixS; /** * The CP-odd higgs mixing matrix */ MixingMatrixPtr _mixP; /** * The \f$ \tilde{t}\f$ mixing matrix */ MixingMatrixPtr _mixTp; /** * The \f$ \tilde{b}\f$ mixing matrix */ MixingMatrixPtr _mixBt; /** * The \f$ \tilde{\tau}\f$ mixing matrix */ MixingMatrixPtr _mixTa; /** * The top quark trilinear coupling */ complex _triTp; /** * The bottom quark trilinear coupling */ complex _triBt; /** * The tau lepton trilinear coupling */ complex _triTa; /** * The value of \f$\lambda\f$. */ double _lambda; /** * The value of \f$ \lambda \f$, the * V.E.V of the extra gauge singlet scaled * by \f$\lambda\f$ */ Energy _lambdaVEV; /** * The value of the V.E.V \f$ v_1 \f$ */ Energy _v1; /** * The value of the V.E.V \f$ v_2 \f$ */ Energy _v2; /** * The value of \f$ \sin\theta_W \f$ */ double _sw; /** * The value of \f$ \cos\theta_W \f$ */ double _cw; /** * The value of \f$ M_W \f$ */ Energy _mw; /** * The value of \f$ M_Z \f$ */ Energy _mz; /** * The value of \f$ \sin\beta \f$ */ double _sb; /** * The value of \f$ \cos\beta \f$ */ double _cb; /** * The value of \f$ \tan\beta \f$ */ double _tb; //@} /** @name Store previously calculated values for speed. */ //@{ /** * The scale at which the last calculation took place. */ Energy2 _q2last; /** * The value of the dimensionless coupling \f$g_W\f$ when * last calculated. */ double _couplast; /** * The value of mass of the counterpart SM fermion when * last calculated. */ pair _masslast; /** * The PDG codes of the particles in the vertex when it was last evaluated */ pair _idlast; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of NMSSMHSFSFVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of NMSSMHSFSFVertex. */ typedef ThePEG::Helicity::SSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the NMSSMHSFSFVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::NMSSMHSFSFVertex"; } /** * The name of a file containing the dynamic library where the class * NMSSMHSFSFVertex is implemented. It may also include several, space-separated, * libraries if the class NMSSMHSFSFVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so HwNMSSM.so"; } }; /** @endcond */ } #endif /* HERWIG_NMSSMHSFSFVertex_H */ herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMGGHVertex.h0000644000175000017500000001415711754474773022663 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_NMSSMGGHVertex_H #define HERWIG_NMSSMGGHVertex_H // // This is the declaration of the NMSSMGGHVertex class. // #include "Herwig++/Models/General/VVSLoopVertex.h" #include "Herwig++/Models/StandardModel/StandardModel.fh" #include "Herwig++/Models/Susy/MixingMatrix.h" namespace Herwig { using namespace ThePEG; /** * This class implements the effective vertex for a higgs coupling * to a pair of gluons in the NMSSM. * * @see \ref NMSSMGGHVertexInterfaces "The interfaces" * defined for NMSSMGGHVertex. */ class NMSSMGGHVertex: public VVSLoopVertex { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ NMSSMGGHVertex(); //@} 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(); /** * Calculate couplings *@param q2 Scale at which to evaluate coupling *@param p1 ParticleData pointer to first particle *@param p2 ParticleData pointer to second particle *@param p3 ParticleData pointer to third particle */ virtual void setCoupling(Energy2 q2, tcPDPtr p1, tcPDPtr p2, tcPDPtr p3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initNMSSMGGHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ NMSSMGGHVertex & operator=(const NMSSMGGHVertex &); private: /** @name Stored parameters. */ //@{ /** * The SM pointer */ tcHwSMPtr _theSM; /** * \f$ \sin\theta_W\f$ */ double _sw; /** * \f$ \cos\theta_W\f$ */ double _cw; /** * \f$ M_W\f$ */ Energy _mw; /** * \f$ M_Z \f$ */ Energy _mz; /** * The product \f$\lambda \langle S\rangle \f$. */ Energy _lambdaVEV; /** * The coefficient of the trilinear \f$SH_2 H_1\f$ term in the superpotential */ double _lambda; /** * The value of the VEV of the higgs that couples to the up-type sector * \f$ g*sqrt(2)M_W\cos\beta \f$ */ Energy _v1; /** * The value of the VEV of the higgs that couples to the down-type sector * \f$ g*sqrt(2)M_W\cos\beta \f$ */ Energy _v2; /** * The top quark trilinear coupling */ complex _triTp; /** * The bottom quark trilinear coupling */ complex _triBt; /** * A pointer to the top quark */ tcPDPtr _top; /** * A pointer to the bottom quark */ tcPDPtr _bt; /** * CP-even Higgs mixing matrix */ MixingMatrixPtr _mixS; /** * CP-even Higgs mixing matrix */ MixingMatrixPtr _mixP; /** * \f$\tilde{t}\f$ mixing matrix */ MixingMatrixPtr _mixQt; /** * \f$\tilde{b}\f$ mixing matrix */ MixingMatrixPtr _mixQb; /** * \f$ \sin\beta\f$ */ double _sb; /** * \f$ \cos\beta\f$ */ double _cb; /** * The top and bottom quark masses calculated at the last value * of \f$q^2\f$ */ pair _masslast; /** * The scale at which the coupling was last evaluated */ Energy2 _q2last; /** * The value of the overall normalisation when the coupling was last * evaluated. */ double _couplast; /** * The value of the weak coupling was last * evaluated. */ double _coup; /** * The PDG code of the Higgs particle when the vertex was last evaluated */ long _hlast; /** * Whether the tensor coefficient need recalculating or not */ bool _recalc; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of NMSSMGGHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of NMSSMGGHVertex. */ typedef Herwig::VVSLoopVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the NMSSMGGHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::NMSSMGGHVertex"; } /** * The name of a file containing the dynamic library where the class * NMSSMGGHVertex is implemented. It may also include several, space-separated, * libraries if the class NMSSMGGHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so HwNMSSM.so"; } }; /** @endcond */ } #endif /* HERWIG_NMSSMGGHVertex_H */ herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMFFHVertex.h0000644000175000017500000001160011754474773022647 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_NMSSMFFHVertex_H #define HERWIG_NMSSMFFHVertex_H // // This is the declaration of the NMSSMFFHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/Models/Susy/MixingMatrix.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * The NMSSMFFHVertex class implements the interactions of the NMSSM Higgs bosons * with the Standard Model fermions. * * @see \ref NMSSMFFHVertexInterfaces "The interfaces" * defined for NMSSMFFHVertex. */ class NMSSMFFHVertex: public FFSVertex { public: /** * The default constructor. */ NMSSMFFHVertex(); /** @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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initNMSSMFFHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ NMSSMFFHVertex & operator=(const NMSSMFFHVertex &); private: /** * Mixing matrix for the CP-even Higgs bosons */ MixingMatrixPtr _mixS; /** * Mixing matrix for the CP-odd Higgs bosons */ MixingMatrixPtr _mixP; /** * Pointer to the SM object. */ tcHwSMPtr _theSM; /** * Mass of the \f$W\f$ boson */ Energy _mw; /** * \f$\sin\beta\f$ */ double _sinb; /** * \f$\cos\beta\f$ */ double _cosb; /** * \f$\tan\beta\f$ */ double _tanb; /** * \f$\sin\theta_W\f$ */ double _sw; /** * The PDG code of the last fermion the coupling was evaluated for. */ pair _idlast; /** * The last \f$q^2\f$ the coupling was evaluated at. */ Energy2 _q2last; /** * The mass of the last fermion for which the coupling was evaluated. */ pair _masslast; /** * The last value of the coupling */ double _couplast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of NMSSMFFHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of NMSSMFFHVertex. */ typedef ThePEG::Helicity::FFSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the NMSSMFFHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::NMSSMFFHVertex"; } /** * The name of a file containing the dynamic library where the class * NMSSMFFHVertex is implemented. It may also include several, space-separated, * libraries if the class NMSSMFFHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so HwNMSSM.so"; } }; /** @endcond */ } #endif /* HERWIG_NMSSMFFHVertex_H */ herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMWHHVertex.h0000644000175000017500000001111111754474773022667 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_NMSSMWHHVertex_H #define HERWIG_NMSSMWHHVertex_H // // This is the declaration of the NMSSMWHHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h" #include "Herwig++/Models/Susy/MixingMatrix.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The NMSSMWHHVertex class implements the coupling of an electroweak" * gauge boson with two Higgs bosons in the NMSSM. * * @see \ref NMSSMWHHVertexInterfaces "The interfaces" * defined for NMSSMWHHVertex. */ class NMSSMWHHVertex: public VSSVertex { public: /** * The default constructor. */ NMSSMWHHVertex(); /** @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(); /** * Calculate the couplings. This method is virtual and must be implemented in * classes inheriting from this. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initNMSSMWHHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ NMSSMWHHVertex & operator=(const NMSSMWHHVertex &); private: /** * \f$\sin\beta\f$ */ double _sinb; /** * \f$\cos\beta\f$ */ double _cosb; /** * \f$\sin\theta_W\f$ */ double _sw; /** * \f$\cos\theta_W\f$ */ double _cw; /** * The last \f$q^2\f$ the coupling was evaluated at. */ Energy2 _q2last; /** * The last value of the coupling */ double _couplast; /** * Mixing matrix for the CP-even Higgs bosons */ MixingMatrixPtr _mixS; /** * Mixing matrix for the CP-odd Higgs bosons */ MixingMatrixPtr _mixP; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of NMSSMWHHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of NMSSMWHHVertex. */ typedef ThePEG::Helicity::VSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the NMSSMWHHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::NMSSMWHHVertex"; } /** * The name of a file containing the dynamic library where the class * NMSSMWHHVertex is implemented. It may also include several, space-separated, * libraries if the class NMSSMWHHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so HwNMSSM.so"; } }; /** @endcond */ } #endif /* HERWIG_NMSSMWHHVertex_H */ herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMFFHVertex.cc0000644000175000017500000001110311754474773023003 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the NMSSMFFHVertex class. // #include "NMSSMFFHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "NMSSM.h" using namespace Herwig; using namespace ThePEG::Helicity; NMSSMFFHVertex::NMSSMFFHVertex() : _mw(0.*MeV), _sinb(0.), _cosb(0.), _tanb(0.), _idlast(make_pair(0,0)), _q2last(0.*MeV2), _masslast(make_pair(0.*MeV,0*MeV)), _couplast(0.) { orderInGem(1); orderInGs(0); } void NMSSMFFHVertex::persistentOutput(PersistentOStream & os) const { os << _mixS << _mixP << ounit(_mw,GeV) << _sinb << _cosb << _tanb << _sw << _theSM; } void NMSSMFFHVertex::persistentInput(PersistentIStream & is, int) { is >> _mixS >> _mixP >> iunit(_mw,GeV) >> _sinb >> _cosb >> _tanb >> _sw >> _theSM; } void NMSSMFFHVertex::doinit() { // the quarks and neutral higgs int in[5]={25,35,45,36,46}; for(unsigned int iy=0;iy<5;++iy) for(int ix=1;ix<7;++ix) addToList( -ix, ix, in[iy] ); // leptons and neutral higgs for(unsigned int iy=0;iy<5;++iy) for(int ix=11;ix<17;ix+=2) addToList( -ix, ix, in[iy] ); // the quarks and the charged higgs //H- for(int ix=0;ix<3;++ix) addToList(2*ix+2, -2*ix-1, -37); //H+ for(int ix=0;ix<3;++ix) addToList(-(2*ix+2), 2*ix+1, 37); // the leptons and the charged higgs //H- for(int ix=0;ix<3;++ix) addToList( 2*ix+12, -2*ix-11, -37 ); //H+ for(int ix=0;ix<3;++ix) addToList( -(2*ix+12), 2*ix+11, 37 ); // cast to NMSSM model tcNMSSMPtr model=dynamic_ptr_cast(generator()->standardModel()); if(!model) throw InitException() << "Must have the NMSSM Model in NMSSMFFHVertex::doinit()" << Exception::runerror; _theSM = model; // sin theta_W double sw2=_theSM->sin2ThetaW(); _sw = sqrt(sw2); // get the mixing matrices _mixS=model->CPevenHiggsMix(); if(!_mixS) throw InitException() << "Mixing matrix for CP-even neutral Higgs" << " bosons is not set in NMSSMFFHVertex::doinit()" << Exception::runerror; _mixP=model->CPoddHiggsMix(); if(!_mixP) throw InitException() << "Mixing matrix for CP-odd neutral Higgs" << " bosons is not set in NMSSMFFHVertex::doinit()" << Exception::runerror; // Mass of the W boson _mw=getParticleData(ParticleID::Wplus)->mass(); // sin and cos beta _tanb = model->tanBeta(); double beta = atan(_tanb); _sinb=sin(beta); _cosb=cos(beta); // base class FFSVertex::doinit(); } ClassDescription NMSSMFFHVertex::initNMSSMFFHVertex; // Definition of the static class description member. void NMSSMFFHVertex::Init() { static ClassDocumentation documentation ("The NMSSMFFHVertex class implements the vertex for the couplings" " of the Higgs bosons of the NMSSM to Standard Model fermions"); } //calulate the couplings void NMSSMFFHVertex::setCoupling(Energy2 q2,tcPDPtr a,tcPDPtr b, tcPDPtr c) { int ihiggs=c->id(); int id(abs(a->id())); Complex output(1.); // neutral Higgs if(ihiggs==25||ihiggs==35||ihiggs==45||ihiggs==36||ihiggs==46) { if(_idlast.first!=id||q2!=_q2last) { _idlast.first=id; _masslast.first = _theSM->mass(q2,a); } output = _masslast.first/_mw; // CP-even if(ihiggs==25||ihiggs==35||ihiggs==45) { int iloc = (ihiggs-25)/10; output *= (id%2==0) ? (*_mixS)(iloc,1)/_sinb : (*_mixS)(iloc,0)/_cosb; left(1.); right(1.); } // CP-odd else { int iloc = (ihiggs-36)/10; output *= (id%2==0) ? (*_mixP)(iloc,1)/_sinb : (*_mixP)(iloc,0)/_cosb; left(1.); right(-1.); output *= Complex(0., 1.); } } // Charged higgs else if(abs(ihiggs)==37) { output *= -sqrt(2.); int id2=abs(b->id()); if(id2mass(q2,a); _masslast.second = _theSM->mass(q2,b); } double rgt = _masslast.first *_tanb/_mw; double lft = _masslast.second/_tanb/_mw; if(ihiggs>0) swap(lft,rgt); right(rgt); left (lft); } else { throw Exception() << "Unknown Higgs boson, PDG code = " << ihiggs << "in NMSSMFFHVertex::setCoupling()" << Exception::runerror; } // prefactor if(q2!=_q2last) { _couplast = 0.5*weakCoupling(q2); _q2last=q2; } norm(-_couplast*output); } herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMHHHVertex.cc0000644000175000017500000002254011754474773023016 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the NMSSMHHHVertex class. // #include "NMSSMHHHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "NMSSM.h" using namespace Herwig; using namespace ThePEG::Helicity; NMSSMHHHVertex::NMSSMHHHVertex() : _mw(0.*MeV), _mz(0.*MeV), _sw2(0.), _cw(0.), _lambda(0.), _kappa(0.) , _lambdaVEV(0.*MeV), _theAl(0.*MeV), _theAk(0.*MeV), _sb(0.), _cb(0.), _s2b(0.), _c2b(0.), _vu(0.*MeV), _vd(0.*MeV), _s(0.*MeV), _q2last(0.*MeV2), _glast(0.), _MQ3(0.*MeV), _MU2(0.*MeV), _includeRadiative(false) { orderInGem(1); orderInGs(0); } void NMSSMHHHVertex::doinit() { // PDG codes for the particles in vertex _vd //CP-even Higgs addToList(25, 35, 45); for( unsigned int i = 25; i <= 45; i += 10 ) { addToList(i, i, 25); addToList(i, i, 35); addToList(i, i, 45); //Charged Higgs addToList(i, 37, -37); //CP-odd Higgs addToList(i, 36, 36); addToList(i, 36, 46); addToList(i, 46, 36); addToList(i, 46, 46); } _theSM = dynamic_ptr_cast(generator()->standardModel()); tcNMSSMPtr nmssm = dynamic_ptr_cast(_theSM); if( !nmssm ) throw InitException() << "NMSSMHHHVertex::doinit - The model object is" << "not the NMSSM object." << Exception::runerror; //SM parameters _mw = getParticleData(24)->mass(); _mz = getParticleData(23)->mass(); _sw2 = sin2ThetaW(); _cw = sqrt(1. - _sw2); //NMSSM parameters _mixS = nmssm->CPevenHiggsMix(); _mixP = nmssm->CPoddHiggsMix(); if( !_mixS || !_mixP ) throw InitException() << "NMSSMHHHVertex::doinit - One of the mixing matrix " << "pointers is null, cannot continue. S: " << _mixS << " P: " << _mixP << Exception::runerror; _lambda = nmssm->lambda(); _kappa = nmssm->kappa(); _lambdaVEV = nmssm->lambdaVEV(); _theAl = nmssm->trilinearLambda(); _theAk = nmssm->trilinearKappa(); _MQ3 = nmssm->MQ3(); _MU2 = nmssm->MU2(); double beta = atan(nmssm->tanBeta()); _sb = sin(beta); _cb = cos(beta); _vd = sqrt(2)*_mw*_cb; _vu = sqrt(2)*_mw*_sb; _s = _lambdaVEV/_lambda; SSSVertex::doinit(); } void NMSSMHHHVertex::persistentOutput(PersistentOStream & os) const { os << ounit(_mw, GeV) << ounit(_mz,GeV) << _sw2 << _cw << _lambda << _includeRadiative << _kappa << ounit(_lambdaVEV,GeV) << ounit(_theAl, GeV) << ounit(_theAk,GeV) << _sb << _cb << _s2b << _c2b << ounit(_vu,GeV) << ounit(_vd,GeV) << ounit(_s,GeV) << _mixS << _mixP << ounit(_MQ3,GeV) << ounit(_MU2,GeV) << _theSM; } void NMSSMHHHVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(_mw, GeV) >> iunit(_mz,GeV) >> _sw2 >> _cw >> _lambda >> _includeRadiative >> _kappa >> iunit(_lambdaVEV,GeV) >> iunit(_theAl, GeV) >> iunit(_theAk,GeV) >> _sb >> _cb >> _s2b >> _c2b >> iunit(_vu,GeV) >> iunit(_vd,GeV) >> iunit(_s,GeV)>> _mixS >> _mixP >> iunit(_MQ3,GeV) >> iunit(_MU2,GeV) >> _theSM; } ClassDescription NMSSMHHHVertex::initNMSSMHHHVertex; // Definition of the static class description member. void NMSSMHHHVertex::Init() { static ClassDocumentation documentation ("This is the triple Higgs coupling in the NMSSM."); static Switch interfaceIncludeRadiativeCorrections ("IncludeRadiativeCorrections", "Include radiative corrections in the vertex", &NMSSMHHHVertex::_includeRadiative, false, false, false); static SwitchOption interfaceIncludeRadiativeCorrectionsYes (interfaceIncludeRadiativeCorrections, "Yes", "Include the radiative terms", true); static SwitchOption interfaceIncludeRadiativeCorrectionsNo (interfaceIncludeRadiativeCorrections, "No", "Don't include them", false); } //calulate couplings void NMSSMHHHVertex::setCoupling(Energy2 q2,tcPDPtr p1,tcPDPtr p2, tcPDPtr p3) { using Constants::pi; long higgs[3] = {p1->id(), p2->id(), p3->id()}; unsigned int ns(0), np(0), nc(0); for( int i = 0; i < 3; ++i ) { if( higgs[i] == 25 || higgs[i] == 35 || higgs[i] == 45 ) ++ns; else if( higgs[i] == 36 || higgs[i] == 46 ) ++np; else if( abs(higgs[i]) == 37 ) ++nc; } //check three Higgs in vertex assert( ns + np + nc == 3 ); if( q2 != _q2last ) { _q2last = q2; _glast = weakCoupling(q2); _mb = _theSM->mass(q2,getParticleData(5)); _mt = _theSM->mass(q2,getParticleData(6)); } //define VEV's double rt = sqrt(0.5); Energy _mtpole = getParticleData(6)->mass(); Energy2 Qstsb = _MQ3*_MU2; double temp = Qstsb/sqr(_mtpole); assert(temp!=0.); double radlog = log(temp); complex coupling; //CP even Higgs if( ns == 3 ) { unsigned int a = (higgs[0] - 25)/10; unsigned int b = (higgs[1] - 25)/10; unsigned int c = (higgs[2] - 25)/10; coupling = sqr(_lambda)*rt*(_vu*(usMix(a,b,c,1,0,0) + usMix(a,b,c,1,2,2))/_glast + _vd*(usMix(a,b,c,0,1,1) + usMix(a,b,c,0,2,2))/_glast + _s *(usMix(a,b,c,2,1,1) + usMix(a,b,c,2,0,0))) - _lambda*_kappa*rt*(_vu*usMix(a,b,c,0,2,2)/_glast + _vd*usMix(a,b,c,2,1,2)/_glast + 2.*_s*usMix(a,b,c,1,0,2)) + sqr(_kappa)/rt*_s*usMix(a,b,c,2,2,2) - _lambda*_theAl*rt*usMix(a,b,c,1,0,2) + _kappa*_theAk*rt/3.*usMix(a,b,c,2,2,2) + sqr(_glast)*0.25*rt/sqr(_cw)*(_vu*(usMix(a,b,c,1,1,1) - usMix(a,b,c,1,0,0))/_glast - _vd*(usMix(a,b,c,0,1,1) - usMix(a,b,c,0,0,0))/_glast); // additional radiative terms if(_includeRadiative) { complex radtop = usMix(a,b,c,1,1,1)*3.0*sqrt(2.0)*radlog *sqr(_mt)*sqr(_mt)*sqr(_glast)*_glast/ (16.0*sqr(pi)*_vu*_vu*_vu); complex radbot= usMix(a,b,c,0,0,0)*3.0*sqrt(2.0)*radlog *sqr(_mb)*sqr(_mb)*sqr(_glast)*_glast /(16.0*sqr(pi)*_vd*_vd*_vd); coupling += radbot + radtop; } } //CP even, CP odd Vertex else if(ns == 1 && np == 2) { unsigned int a(0), b(0), c(0); if( higgs[0] == 25 || higgs[0] == 35 || higgs[0] == 45 ) { a = (higgs[0] - 25)/10; b = (higgs[1] - 36)/10; c = (higgs[2] - 36)/10; } else if(higgs[1] == 25 || higgs[1] == 35 || higgs[1] == 45 ) { a = (higgs[1] - 25)/10; b = (higgs[0] - 36)/10; c = (higgs[2] - 36)/10; } else { a = (higgs[2] - 25)/10; b = (higgs[0] - 36)/10; c = (higgs[1] - 36)/10; } coupling = sqr(_lambda)*rt*(_vu*(upMix(a,b,c,1,0,0) + upMix(a,b,c,1,2,2))/_glast + _vd*(upMix(a,b,c,0,1,1) + upMix(a,b,c,0,2,2))/_glast + _s *(upMix(a,b,c,2,1,1) + upMix(a,b,c,2,0,0))) + _lambda*_kappa*rt*(_vu*(upMix(a,b,c,0,2,2) - 2.*upMix(a,b,c,2,0,2))/_glast + _vd*(upMix(a,b,c,1,2,2) - 2.*upMix(a,b,c,2,1,2))/_glast + 2.*_s*(upMix(a,b,c,2,1,0) - upMix(a,b,c,1,0,2) - upMix(a,b,c,0,1,2))) + sqr(_kappa)/rt*_s*upMix(a,b,c,2,2,2) +_lambda*_theAl*rt*(upMix(a,b,c,1,0,2) + upMix(a,b,c,0,1,2) + upMix(a,b,c,2,1,0)) - _kappa*_theAk*rt*upMix(a,b,c,2,2,2) + sqr(_glast)*0.25*rt/sqr(_cw)*(_vu*(upMix(a,b,c,1,1,1) - upMix(a,b,c,1,0,0))/_glast - _vd*(upMix(a,b,c,0,1,1) - upMix(a,b,c,0,0,0))/_glast); if(_includeRadiative) { complex radtop = upMix(a,b,c,1,1,1)*3.0*sqrt(2.0)*radlog* sqr(_mt)*sqr(_mt)*sqr(_glast)*_glast/ (16.0*sqr(pi)*_vu*_vu*_vu); complex radbot= upMix(a,b,c,0,0,0)*3.0*sqrt(2.0)*radlog* sqr(_mb)*sqr(_mb)*sqr(_glast)*_glast /(16.0*sqr(pi)*_vd*_vd*_vd); coupling += radbot + radtop; } } //Charged Higgs else { unsigned int a(0); if( higgs[0] == 25 || higgs[0] == 35 || higgs[0] == 45 ) a = (higgs[0] - 25)/10; else if(higgs[1] == 25 || higgs[1] == 35 || higgs[1] == 45 ) a = (higgs[1] - 25)/10; else a = (higgs[2] - 25)/10; coupling = sqr(_lambda)*rt*2.*(_s*((*_mixS)(a,2)*sqr(_cb) + (*_mixS)(a,2)*sqr(_sb)) - (_vu*(*_mixS)(a,0)/_glast + _vd*(*_mixS)(a,1)/_glast)*_sb*_cb) +_lambda*_sb*_cb*2.*(*_mixS)(a,2)*(_kappa*_s/rt + rt*_theAl) + sqr(_glast)*0.5*rt*_sw2/sqr(_cw)*((_vu*(*_mixS)(a,1)/_glast - _vd*(*_mixS)(a,0)/_glast)*sqr(_cb) + (_vd*(*_mixS)(a,0)/_glast - _vu*(*_mixS)(a,1)/_glast)*sqr(_sb)) + sqr(_glast)*0.5*rt*(_vu*((*_mixS)(a,1)*sqr(_cb) + (*_mixS)(a,1)*sqr(_sb) + 2.*(*_mixS)(a,0)*_cb*_sb)/_glast + _vd*((*_mixS)(a,0)*sqr(_cb) + (*_mixS)(a,0)*sqr(_sb) + 2.*(*_mixS)(a,1)*_sb*_cb)/_glast); if(_includeRadiative) { complex radtop =(*_mixS)(a,1)*sqr(_sb)*6.0*sqrt(2.0)*radlog* sqr(_mt)*sqr(_mt)*sqr(_glast)*_glast/ (16.0*sqr(pi)*_vu*_vu*_vu); complex radbot=(*_mixS)(a,0)*sqr(_cb)*6.0*sqrt(2.0)*radlog* sqr(_mb)*sqr(_mb)*sqr(_glast)*_glast /(16.0*sqr(pi)*_vd*_vd*_vd); complex temp2 = _vu*((*_mixS)(a,1)*sqr(_cb) + (*_mixS)(a,0)*_sb*_cb)/_glast+ _vd*((*_mixS)(a,1)*_sb*_cb + (*_mixS)(a,0)*sqr(_sb))/_glast; complex radtopbot= temp2*6.0*sqrt(2.0)*radlog* sqr(_mt)*sqr(_mb)*sqr(_glast)*sqr(_glast) /(16.0*sqr(pi)*sqr(_vu)*sqr(_vd)); coupling += radbot + radtop + radtopbot; } } norm(-coupling * UnitRemoval::InvE); } herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMGOGOHVertex.cc0000644000175000017500000002223611754474773023254 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the NMSSMGOGOHVertex class. // #include "NMSSMGOGOHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "NMSSM.h" using namespace Herwig; using namespace ThePEG::Helicity; NMSSMGOGOHVertex::NMSSMGOGOHVertex() : _lambda(0.), _kappa(0.), _sinb(0.), _cosb(0.), _sw(0.), _cw(0.), _q2last(0.*MeV2), _couplast(0.) { orderInGem(1); orderInGs(0); } void NMSSMGOGOHVertex::persistentOutput(PersistentOStream & os) const { os << _mixV << _mixU << _mixN << _mixS << _mixP << _lambda << _kappa << _sinb << _cosb << _sw << _cw; } void NMSSMGOGOHVertex::persistentInput(PersistentIStream & is, int) { is >> _mixV >> _mixU >> _mixN >> _mixS >> _mixP >> _lambda >> _kappa >> _sinb >> _cosb >> _sw >> _cw; } void NMSSMGOGOHVertex::doinit() { int ieven[3]={25,35,45}; int iodd [2]={36,46}; long ichar[2]={1000024,1000037}; long ineut[5]={1000022,1000023,1000025,1000035,1000045}; // CP-even charginos for(unsigned int ix=0;ix<2;++ix) { for(unsigned int iy=0;iy<2;++iy) { for(unsigned int iz=0;iz<3;++iz) { addToList(-ichar[ix], ichar[iy], ieven[iz]); } } } // CP-odd charginos for(unsigned int ix=0;ix<2;++ix) { for(unsigned int iy=0;iy<2;++iy) { for(unsigned int iz=0;iz<2;++iz) { addToList(-ichar[ix], ichar[iy], iodd [iz]); } } } // CP-even neutralinos for(unsigned int ix=0;ix<5;++ix) { for(unsigned int iy=0;iy<5;++iy) { for(unsigned int iz=0;iz<3;++iz) { addToList( ineut[ix], ineut[iy], ieven[iz]); } } } // CP-odd neutralinos for(unsigned int ix=0;ix<5;++ix) { for(unsigned int iy=0;iy<5;++iy) { for(unsigned int iz=0;iz<2;++iz) { addToList( ineut[ix], ineut[iy], iodd[iz]); } } } // charged higgs for(unsigned int ix=0;ix<5;++ix) { for(unsigned int iy=0;iy<2;++iy) { addToList(ineut[ix], -ichar[iy], 37); addToList(ineut[ix], ichar[iy], -37); } } tcNMSSMPtr model=dynamic_ptr_cast(generator()->standardModel()); // SM parameters // sin theta_W double sw2=sin2ThetaW(); _cw=sqrt(1.0 - sw2); _sw=sqrt(sw2); if(!model) throw InitException() << "Must have the NMSSM Model in " << "NMSSMGOGOHVertex::doinit()" << Exception::runerror; // get the mixing matrices // higgs _mixS=model->CPevenHiggsMix(); if(!_mixS) throw InitException() << "Mixing matrix for CP-even neutral Higgs" << " bosons is not set in NMSSMGOGOHVertex::doinit()" << Exception::runerror; _mixP=model->CPoddHiggsMix(); if(!_mixP) throw InitException() << "Mixing matrix for CP-odd neutral Higgs" << " bosons is not set in NMSSMGOGOHVertex::doinit()" << Exception::runerror; // charginos _mixU = model->charginoUMix(); _mixV = model->charginoVMix(); if(!_mixU || !_mixV) throw InitException() << "NMSSMGOGOHVertex::doinit - " << "A mixing matrix pointer is null. U: " << _mixU << " V: " << _mixV << Exception::abortnow; // neutralinos _mixN = model->neutralinoMix(); if(!_mixN) throw InitException() << "NMSSMGOGOHVertex::doinit - The neutralino " << "mixing matrix pointer is null." << Exception::abortnow; // kappa and lambda couplings _lambda = model->lambda(); _kappa = model->kappa(); // sin and cos beta double beta = atan(model->tanBeta()); _sinb=sin(beta); _cosb=cos(beta); FFSVertex::doinit(); } ClassDescription NMSSMGOGOHVertex::initNMSSMGOGOHVertex; // Definition of the static class description member. void NMSSMGOGOHVertex::Init() { static ClassDocumentation documentation ("The NMSSMGOGOHVertex class implements the couplings of the Higgs bosons" " of the NMSSM and the electroweak gauginos"); } void NMSSMGOGOHVertex::setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2, tcPDPtr part3) { long id1(part1->id()), id2(part2->id()), id3(part3->id()), ihigg(0), ig1(0), ig2(0); if( abs(id1) == 25 || abs(id1) == 35 || abs(id1) == 45 || abs(id1) == 36 || abs(id1) == 46 || abs(id1) == 37 ) { ihigg = id1; ig1 = id2; ig2 = id3; } else if( abs(id2) == 25 || abs(id2) == 35 || abs(id2) == 45 ||abs(id2) == 36 ||abs(id2) == 46 || abs(id2) == 37 ) { ihigg = id2; ig1 = id1; ig2 = id3; } else if( abs(id3) ==25 || abs(id3) == 35 || abs(id3) == 45 ||abs(id3) == 36 ||abs(id3) == 46 || abs(id3) == 37 ) { ihigg = id3; ig1 = id1; ig2 = id2; } else { throw HelicityConsistencyError() << "NMSSMGOGOHVertex::setCoupling - There is no higgs particle in " << "this vertex. Particles: " << id1 << " " << id2 << " " << id3 << Exception::runerror; return; } // weak coupling if(q2!=_q2last) { _couplast = weakCoupling(q2); _q2last = q2; } double rt = sqrt(0.5); // CP-even neutral higgs if(ihigg == 25 || ihigg == 35 || ihigg == 45) { int iloc = (ihigg - 25)/10; // chargino if(abs(ig1) == 1000024 || abs(ig1) == 1000037) { if( ig1 < 0 ) swap(ig1, ig2); int ic1 = abs(ig1)==1000024 ? 0 : 1; int ic2 = abs(ig2)==1000024 ? 0 : 1; Complex coupL = -_lambda*rt*conj((*_mixS)(iloc,2)*(*_mixU)(ic1,1)*(*_mixV)(ic2,1)) -_couplast*rt*(conj((*_mixS)(iloc,0)*(*_mixU)(ic1,1)*(*_mixV)(ic2,0) + (*_mixS)(iloc,1)*(*_mixU)(ic1,0)*(*_mixV)(ic2,1))); Complex coupR = -_lambda*rt*(*_mixS)(iloc,2)*(*_mixU)(ic2,1)*(*_mixV)(ic1,1) -_couplast*rt*((*_mixS)(iloc,0)*(*_mixU)(ic2,1)*(*_mixV)(ic1,0)+ (*_mixS)(iloc,1)*(*_mixU)(ic2,0)*(*_mixV)(ic1,1)); left(coupL); right(coupR); norm(1.0); } // neutralino else { int in1 = (ig1 < 1000024) ? (ig1 - 1000022) : (ig1 - 1000005)/10; int in2 = (ig2 < 1000024) ? (ig2 - 1000022) : (ig2 - 1000005)/10; Complex us1 = (*_mixS)(iloc, 0), us2 = (*_mixS)(iloc, 1); Complex us3 = (*_mixS)(iloc, 2); Complex ni1 = (*_mixN)(in1,0), nj1 = (*_mixN)(in2,0); Complex ni2 = (*_mixN)(in1,1), nj2 = (*_mixN)(in2,1); Complex ni3 = (*_mixN)(in1,3), nj3 = (*_mixN)(in2,3); Complex ni4 = (*_mixN)(in1,2), nj4 = (*_mixN)(in2,2); Complex ni5 = (*_mixN)(in1,4), nj5 = (*_mixN)(in2,4); Complex YL = - _lambda*rt*(us2*(ni4*nj5 + ni5*nj4) + us1*(ni3*nj5 + ni5*nj3) + us3*(ni3*nj4 + ni4*nj3)) + sqrt(2.)*_kappa*us3*ni5*nj5 - _couplast*0.5*(us2*(ni2*nj3 + ni3*nj2) - us1*(ni2*nj4 + ni4*nj2)) + _couplast*0.5*_sw*(us2*(ni1*nj3 + ni3*nj1) - us1*(ni1*nj4 + ni4*nj1) )/_cw; left(-conj(YL)); right(-YL); norm(1.0); } } // CP-odd neutral higgs else if(ihigg==36||ihigg==46) { int iloc = (ihigg-36)/10; // chargino if(abs(ig1)==1000024||abs(ig1)==1000037) { if( ig1 < 0 ) swap(ig1, ig2); int ic1 = abs(ig1)==1000024 ? 0 : 1; int ic2 = abs(ig2)==1000024 ? 0 : 1; Complex QL = Complex(0,-1.0)* (_lambda*rt*conj((*_mixP)(iloc,2)*(*_mixU)(ic1,1)*(*_mixV)(ic2,1)) -_couplast*rt*conj(((*_mixP)(iloc,0)*(*_mixU)(ic1,1)*(*_mixV)(ic2,0) + (*_mixP)(iloc,1)*(*_mixU)(ic1,0)*(*_mixV)(ic2,1)))); Complex QR = Complex(0,-1.0)* (_lambda*rt*(*_mixP)(iloc,2)*(*_mixU)(ic2,1)*(*_mixV)(ic1,1) -_couplast*rt*((*_mixP)(iloc,0)*(*_mixU)(ic2,1)*(*_mixV)(ic1,0) + (*_mixP)(iloc,1)*(*_mixU)(ic2,0)*(*_mixV)(ic1,1))); left(QL); right(-QR); norm(1.); } // neutralino else { int in1 = (ig1 < 1000024) ? (ig1 - 1000022) : (ig1 - 1000005)/10; int in2 = (ig2 < 1000024) ? (ig2 - 1000022) : (ig2 - 1000005)/10; Complex up1 = (*_mixP)(iloc, 0), up2 = (*_mixP)(iloc, 1); Complex up3 = (*_mixP)(iloc, 2); Complex ni1 = (*_mixN)(in1,0), nj1 = (*_mixN)(in2,0); Complex ni2 = (*_mixN)(in1,1), nj2 = (*_mixN)(in2,1); Complex ni3 = (*_mixN)(in1,2), nj3 = (*_mixN)(in2,2); Complex ni4 = (*_mixN)(in1,3), nj4 = (*_mixN)(in2,3); Complex ni5 = (*_mixN)(in1,4), nj5 = (*_mixN)(in2,4); Complex AL = _lambda*rt*(up2*(ni3*nj5 + ni5*nj3) + up1*(ni4*nj5 + ni5*nj4) + up3*(ni3*nj4 + ni4*nj3)) - sqrt(2.)*_kappa*up3*ni5*nj5 - _couplast*0.5*(up2*(ni2*nj4 + ni4*nj2) - up1*(ni2*nj3 + ni3*nj2)) + _couplast*0.5*_sw*(up2*(ni1*nj4 + ni4*nj1) - up1*(ni1*nj3 + ni3*nj1))/_cw; AL *= Complex(0.0, -1.0); left(conj(AL)); right(AL); norm(1.); } } // charged higgs else { if (abs(ig1) == 1000024 || abs(ig1) == 1000037) swap (ig1,ig2); int in = (abs(ig1) < 1000024) ? (ig1-1000022) : (ig1-1000005)/10; int ic = (abs(ig2) == 1000024) ? 0 : 1; Complex QpR = _lambda*_cosb*(*_mixU)(ic,1)*(*_mixN)(in,4) -_sinb*_couplast*(rt*(*_mixU)(ic,1)*(_sw*(*_mixN)(in,0)/_cw + (*_mixN)(in,1)) - (*_mixU)(ic,0)*(*_mixN)(in,2)); Complex QpL = _lambda*_sinb*(*_mixV)(ic,1)*(*_mixN)(in,4) + _couplast*_cosb*(rt*(*_mixV)(ic,1) *(_sw*(*_mixN)(in,0)/_cw + (*_mixN)(in,1)) + (*_mixV)(ic,0)*(*_mixN)(in,3)); QpL = conj(QpL); if(ihigg > 0) { left (QpL); right(QpR); norm(-1.); } else { left (conj(QpR)); right(conj(QpL)); norm(-1.); } } } herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMWHHVertex.cc0000644000175000017500000001001111754474773023023 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the NMSSMWHHVertex class. // #include "NMSSMWHHVertex.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "NMSSM.h" using namespace Herwig; using namespace ThePEG::Helicity; NMSSMWHHVertex::NMSSMWHHVertex() : _sinb(0.), _cosb(0.), _sw(0.), _cw(0.), _q2last(0.*MeV2), _couplast(0.) { orderInGem(1); orderInGs(0); } void NMSSMWHHVertex::doinit() { // codes for the neutral higgs //CP even int ieven[3]={25,35,45}; //CP odd int iodd [2]={36,46}; // Z CP even CP odd for(unsigned int ix=0;ix<3;++ix) for(unsigned int iy=0;iy<2;++iy) addToList( 23, ieven[ix], iodd[iy] ); // W H+ CP even for(unsigned int ix=0;ix<3;++ix) addToList( -24, 37, ieven[ix] ); // W+ H- CP even for(unsigned int ix=0;ix<3;++ix) addToList( 24, -37, ieven[ix] ); // W H+ CP odd for(unsigned int ix=0;ix<2;++ix) addToList( -24, 37, iodd[ix] ); //W+ H- CP odd for(unsigned int ix=0;ix<2;++ix) addToList( 24, -37, iodd[ix] ); // Charged higgs Z/gamma addToList( 22, 37, -37 ); addToList( 23, 37, -37 ); // cast to NMSSM model tcNMSSMPtr model=dynamic_ptr_cast(generator()->standardModel()); if(!model) throw InitException() << "Must have the NMSSM Model in NMSSMFFHVertex::doinit()" << Exception::runerror; // sin theta_W double sw2 = sin2ThetaW(); _sw = sqrt(sw2); _cw = sqrt(1.-sw2); // get the mixing matrices _mixS=model->CPevenHiggsMix(); if(!_mixS) throw InitException() << "Mixing matrix for CP-even neutral Higgs" << " bosons is not set in NMSSMWHHVertex::doinit()" << Exception::runerror; _mixP=model->CPoddHiggsMix(); if(!_mixP) throw InitException() << "Mixing matrix for CP-odd neutral Higgs" << " bosons is not set in NMSSMWHHVertex::doinit()" << Exception::runerror; // sin and cos beta double beta = atan(model->tanBeta()); _sinb = sin(beta); _cosb = cos(beta); // base class VSSVertex::doinit(); } void NMSSMWHHVertex::persistentOutput(PersistentOStream & os) const { os << _sinb << _cosb << _sw << _cw << _mixS << _mixP; } void NMSSMWHHVertex::persistentInput(PersistentIStream & is, int) { is >> _sinb >> _cosb >> _sw >> _cw >> _mixS >> _mixP; } ClassDescription NMSSMWHHVertex::initNMSSMWHHVertex; // Definition of the static class description member. void NMSSMWHHVertex::Init() { static ClassDocumentation documentation ("The NMSSMWHHVertex class implements the coupling of an electroweak" " gauge boson with two Higgs bosons in the NMSSM."); } //calulate the couplings void NMSSMWHHVertex::setCoupling(Energy2 q2,tcPDPtr a,tcPDPtr b,tcPDPtr c) { // weak coupling if(q2!=_q2last) { _couplast = weakCoupling(q2); _q2last=q2; } // gauge bosons int ibos= a->id(); int ih1 = b->id(); int ih2 = c->id(); Complex fact; if(ibos==ParticleID::Z0) { fact = 0.5/_cw; // Z H+ H- if(abs(ih1)==37) { fact *= (sqr(_cw)-sqr(_sw)); if(ih1<0) fact *=-1.; } // Z CP even CP odd else { fact *= -1.; if(ih1%10==6) { fact *= -1.; swap(ih1,ih2); } int is = (ih1-25)/10; int ip = (ih2-36)/10; fact *= Complex(0.,1.)*((*_mixS)(is,1)*(*_mixP)(ip,1)- (*_mixS)(is,0)*(*_mixP)(ip,0)); } } // gamma CP even CP odd else if(ibos==ParticleID::gamma) { fact = ih1>0 ? _sw : -_sw; } // W boson else { fact = 0.5; if(abs(ih2)==37) { swap(ih1,ih2); fact*=-1; } if(ibos<0&&ih2%5==0) fact*=-1; // H+ CP even if(ih2%5==0) { int is = (ih2-25)/10; fact *= (_cosb*(*_mixS)(is,1)-_sinb*(*_mixS)(is,0)); } // H+ CP odd else { int ip = (ih2-36)/10; fact *= Complex(0.,1.)*(_cosb*(*_mixP)(ip,1)+_sinb*(*_mixP)(ip,0)); } } //output the coupling norm(_couplast*fact); } herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMPPHVertex.h0000644000175000017500000001574511754474773022711 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_NMSSMPPHVertex_H #define HERWIG_NMSSMPPHVertex_H // // This is the declaration of the NMSSMPPHVertex class. // #include "Herwig++/Models/General/VVSLoopVertex.h" #include "Herwig++/Models/StandardModel/StandardModel.fh" #include "Herwig++/Models/Susy/MixingMatrix.h" namespace Herwig { using namespace ThePEG; /** * This class implements the effective vertex for a higgs coupling * to a pair of photons in the NMSSM. * * @see \ref NMSSMPPHVertexInterfaces "The interfaces" * defined for NMSSMPPHVertex. */ class NMSSMPPHVertex: public VVSLoopVertex { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ NMSSMPPHVertex(); //@} 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(); /** * Calculate couplings *@param q2 Scale at which to evaluate coupling *@param p1 ParticleData pointer to first particle *@param p2 ParticleData pointer to second particle *@param p3 ParticleData pointer to third particle */ virtual void setCoupling(Energy2 q2, tcPDPtr p1, tcPDPtr p2, tcPDPtr p3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initNMSSMPPHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ NMSSMPPHVertex & operator=(const NMSSMPPHVertex &); private: /** @name Stored parameters. */ //@{ /** * The SM pointer */ tcHwSMPtr _theSM; /** * \f$ \sin\theta_W\f$ */ double _sw; /** * \f$ \cos\theta_W\f$ */ double _cw; /** * \f$ M_W\f$ */ Energy _mw; /** * \f$ M_Z \f$ */ Energy _mz; /** * The product \f$\lambda \langle S\rangle \f$. */ Energy _lambdaVEV; /** * The coefficient of the trilinear \f$SH_2 H_1\f$ term in the superpotential */ double _lambda; /** * The value of the VEV of the higgs that couples to the up-type sector * \f$ g*sqrt(2)M_W\cos\beta \f$ */ Energy _v1; /** * The value of the VEV of the higgs that couples to the down-type sector * \f$ g*sqrt(2)M_W\cos\beta \f$ */ Energy _v2; /** * The top quark trilinear coupling */ complex _triTp; /** * The bottom quark trilinear coupling */ complex _triBt; /** * The tau quark trilinear coupling */ complex _triTa; /** * A pointer to the top quark */ tcPDPtr _top; /** * A pointer to the bottom quark */ tcPDPtr _bt; /** * A pointer to the tau lepton */ tcPDPtr _tau; /** * CP-even Higgs mixing matrix */ MixingMatrixPtr _mixS; /** * CP-even Higgs mixing matrix */ MixingMatrixPtr _mixP; /** * \f$\tilde{t}\f$ mixing matrix */ MixingMatrixPtr _mixQt; /** * \f$\tilde{b}\f$ mixing matrix */ MixingMatrixPtr _mixQb; /** * \f$\tilde{\tau}\f$ mixing matrix */ MixingMatrixPtr _mixLt; /** * \f$ \sin\beta\f$ */ double _sb; /** * \f$ \cos\beta\f$ */ double _cb; /** * The coefficient of the cubic singlet term in the superpotential */ double _kappa; /** * The value of the VEV of the higgs that couples to the down-type sector * \f$ g*sqrt(2)M_W\cos\beta \f$ */ Energy _vu; /** * The value of the VEV of the higgs that couples to the up-type sector * i.e. \f$ g*sqrt(2)M_W\sin\beta \f$ */ Energy _vd; /** * The value of the VEV of the singlet higgs */ Energy _s; /** * The soft trilinear \f$SH_2 H_1\f$ coupling */ Energy _theAl; /** * The U mixing matrix */ tMixingMatrixPtr _mixU; /** * The V mixing matrix */ tMixingMatrixPtr _mixV; /** * The top and bottom quark masses calculated at the last value * of \f$q^2\f$ */ pair _masslast; /** * The scale at which the coupling was last evaluated */ Energy2 _q2last; /** * The value of the overall normalisation when the coupling was last * evaluated. */ double _couplast; /** * The value of the weak coupling was last * evaluated. */ double _coup; /** * The PDG code of the Higgs particle when the vertex was last evaluated */ long _hlast; /** * Whether the tensor coefficient need recalculating or not */ bool _recalc; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of NMSSMPPHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of NMSSMPPHVertex. */ typedef Herwig::VVSLoopVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the NMSSMPPHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::NMSSMPPHVertex"; } /** * The name of a file containing the dynamic library where the class * NMSSMPPHVertex is implemented. It may also include several, space-separated, * libraries if the class NMSSMPPHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so HwNMSSM.so"; } }; /** @endcond */ } #endif /* HERWIG_NMSSMPPHVertex_H */ herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSM.cc0000644000175000017500000001162611754474773021273 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the NMSSM class. // #include "NMSSM.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Reference.h" using namespace Herwig; void NMSSM::persistentOutput(PersistentOStream & os) const { os << theHiggsAMix << _lambda << _kappa << ounit(_theAlambda,GeV) << ounit(_theAkappa, GeV) << ounit(_lambdaVEV, GeV) << ounit(_MQ3, GeV) << ounit(_MU2, GeV); } void NMSSM::persistentInput(PersistentIStream & is, int) { is >> theHiggsAMix >> _lambda >> _kappa >> iunit(_theAlambda,GeV) >> iunit(_theAkappa, GeV) >> iunit(_lambdaVEV, GeV) >> iunit(_MQ3, GeV) >> iunit(_MU2, GeV); } ClassDescription NMSSM::initNMSSM; // Definition of the static class description member. void NMSSM::Init() { static ClassDocumentation documentation ("The NMSSM class is the base class for the NMSSM model"); } void NMSSM::extractParameters(bool checkmodel) { MSSM::extractParameters(false); if(checkmodel) { map::const_iterator pit; pit = parameters().find("modsel"); if(pit == parameters().end()) return; ParamMap::const_iterator it; // nmssm or mssm it = pit->second.find(3); int inmssm = (it != pit->second.end()) ? int(it->second) : 0; if(inmssm == 0) throw Exception() << "R-parity, CP and flavour conserving NMSSM model" << " used but MSSM read in." << Exception::runerror; // RPV it = pit->second.find(4); int irpv = (it != pit->second.end()) ? int(it->second) : 0; if(irpv != 0) throw Exception() << "NMSSM model does not support RPV" << Exception::runerror; // CPV it = pit->second.find(5); int icpv = (it != pit->second.end()) ? int(it->second) : 0; if(icpv != 0) throw Exception() << "NMSSM model does not support CPV" << Exception::runerror; // flavour violation it = pit->second.find(6); int ifv = (it != pit->second.end()) ? int(it->second) : 0; if(ifv != 0) throw Exception() << "NMSSM model does not support " << "flavour violation" << Exception::runerror; } // get the NMSSM parameters map::const_iterator pit; pit=parameters().find("msoft"); if( pit != parameters().end() ) { ParamMap::const_iterator it; it = pit->second.find(43); if(it != pit->second.end()) _MQ3 = it->second*GeV; it = pit->second.find(46); if(it != pit->second.end()) _MU2 = it->second*GeV; } pit=parameters().find("nmssmrun"); if( pit != parameters().end() ) { ParamMap::const_iterator it = pit->second.find(1); if(it != pit->second.end()) _lambda = it->second; it = pit->second.find(2); if(it != pit->second.end()) _kappa = it->second; it = pit->second.find(3); if(it != pit->second.end()) _theAlambda = it->second*GeV; it = pit->second.find(4); if(it != pit->second.end()) _theAkappa = it->second*GeV; it = pit->second.find(5); if(it != pit->second.end()) _lambdaVEV = it->second*GeV; } pit=parameters().find("extpar"); if( pit != parameters().end() ) { ParamMap::const_iterator it = pit->second.find(61); if(_lambda==ZERO && it != pit->second.end()) _lambda = it->second; it = pit->second.find(62); if(_kappa==ZERO && it != pit->second.end()) _kappa = it->second; it = pit->second.find(63); if(_theAlambda==ZERO && it != pit->second.end()) _theAlambda = it->second*GeV; it = pit->second.find(64); if(_theAkappa==ZERO && it != pit->second.end()) _theAkappa = it->second*GeV; it = pit->second.find(65); if(_lambdaVEV==ZERO && it != pit->second.end()) _lambdaVEV = it->second*GeV; it = pit->second.find(43); if(_MQ3==ZERO && it != pit->second.end()) _MQ3 = it->second*GeV; it = pit->second.find(46); if(_MU2==ZERO && it != pit->second.end()) _MU2 = it->second*GeV; } else { throw Exception() << "NMSSM::extractParameters - There was no EXTPAR block " << "in the extracted parameters list. The model cannot " << "be used without these." << Exception::runerror; } pit=parameters().find("msoft"); if( pit != parameters().end() ) { ParamMap::const_iterator it; if(_MQ3==ZERO) { it = pit->second.find(43); if(it != pit->second.end()) _MQ3 = it->second*GeV; } if(_MU2==ZERO) { it = pit->second.find(46); if(it != pit->second.end()) _MU2 = it->second*GeV; } } } void NMSSM::createMixingMatrices() { map >::const_iterator it; for(it=mixings().begin();it!=mixings().end();++it) { string name=it->first; // pseudo-scalar higgs mixing if (name == "nmamix") { createMixingMatrix(theHiggsAMix,name,it->second.second,it->second.first); } } // base class for neutralinos and charginos MSSM::createMixingMatrices(); } herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMWWHVertex.cc0000644000175000017500000000525111754474773023054 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the NMSSMWWHVertex class. // #include "NMSSMWWHVertex.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "NMSSM.h" using namespace Herwig; using namespace ThePEG::Helicity; NMSSMWWHVertex::NMSSMWWHVertex() : _couplast(0.), _q2last(), _mw(), _zfact(0.), _sinb(0.),_cosb(0.) { orderInGem(1); orderInGs(0); } void NMSSMWWHVertex::doinit() { int id[3]={25,35,45}; // PDG codes for the particles in the vertex for(unsigned int ix=0;ix<3;++ix) { // Higgs WW addToList( 24, -24, id[ix] ); //Higgs ZZ addToList( 23, 23, id[ix] ); } // SM parameters _mw = getParticleData(ThePEG::ParticleID::Wplus)->mass(); double sw = sin2ThetaW(); _zfact = 1./(1.-sw); sw = sqrt(sw); // NMSSM parameters tcNMSSMPtr model=dynamic_ptr_cast(generator()->standardModel()); if(!model) throw InitException() << "Must have the NMSSM Model in NMSSMWWHVertex::doinit()" << Exception::runerror; // get the mixing matrices _mixS=model->CPevenHiggsMix(); if(!_mixS) throw InitException() << "Mixing matrix for CP-even neutral Higgs" << " bosons is not set in NMSSMWWHVertex::doinit()" << Exception::runerror; // sin and cos beta double beta = atan(model->tanBeta()); _sinb=sin(beta); _cosb=cos(beta); // base class VVSVertex::doinit(); } void NMSSMWWHVertex::persistentOutput(PersistentOStream & os) const { os << ounit(_mw,GeV) << _zfact << _sinb << _cosb << _mixS; } void NMSSMWWHVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(_mw,GeV) >> _zfact >> _sinb >> _cosb >> _mixS; } ClassDescription NMSSMWWHVertex::initNMSSMWWHVertex; // Definition of the static class description member. void NMSSMWWHVertex::Init() { static ClassDocumentation documentation ("The NMSSMWWHVertex class implements the coupling of two electroweak gauge" " bosons with the Higgs bosons of the NMSSM"); } //calulate couplings void NMSSMWWHVertex::setCoupling(Energy2 q2,tcPDPtr a,tcPDPtr, tcPDPtr c) { // ID of gauge bosons int ibos=abs(a->id()); // ID of Higgs int ihiggs = (c->id()-25)/10; // first the overall normalisation if(q2!=_q2last) { _couplast = weakCoupling(q2)*_mw*UnitRemoval::InvE; _q2last=q2; } // higgs mixing factor Complex hmix = _cosb*(*_mixS)(ihiggs,0)+_sinb*(*_mixS)(ihiggs,1); // couplings if(ibos==24) norm(_couplast*hmix); else if(ibos==23) norm(_couplast*hmix*_zfact); else assert(false); } herwig++-2.6.0.orig/Models/Susy/NMSSM/Makefile.in0000644000175000017500000005335511756461701022126 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Models/Susy/NMSSM DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwNMSSM_la_LIBADD = am_HwNMSSM_la_OBJECTS = NMSSM.lo NMSSMFFHVertex.lo NMSSMWWHVertex.lo \ NMSSMWHHVertex.lo NMSSMHSFSFVertex.lo NMSSMGOGOHVertex.lo \ NMSSMHHHVertex.lo NMSSMGGHVertex.lo NMSSMPPHVertex.lo \ NMSSMWWHHVertex.lo HwNMSSM_la_OBJECTS = $(am_HwNMSSM_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwNMSSM_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(HwNMSSM_la_LDFLAGS) $(LDFLAGS) -o $@ @WANT_NMSSM_TRUE@am_HwNMSSM_la_rpath = -rpath $(pkglibdir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwNMSSM_la_SOURCES) DIST_SOURCES = $(HwNMSSM_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @WANT_NMSSM_TRUE@pkglib_LTLIBRARIES = HwNMSSM.la HwNMSSM_la_SOURCES = \ NMSSM.cc NMSSM.h NMSSM.fh \ NMSSMFFHVertex.h NMSSMFFHVertex.cc \ NMSSMWWHVertex.h NMSSMWWHVertex.cc \ NMSSMWHHVertex.h NMSSMWHHVertex.cc \ NMSSMHSFSFVertex.h NMSSMHSFSFVertex.cc\ NMSSMGOGOHVertex.h NMSSMGOGOHVertex.cc \ NMSSMHHHVertex.h NMSSMHHHVertex.cc \ NMSSMGGHVertex.h NMSSMGGHVertex.cc \ NMSSMPPHVertex.h NMSSMPPHVertex.cc \ NMSSMWWHHVertex.h NMSSMWWHHVertex.cc HwNMSSM_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Models/Susy/NMSSM/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Models/Susy/NMSSM/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwNMSSM.la: $(HwNMSSM_la_OBJECTS) $(HwNMSSM_la_DEPENDENCIES) $(EXTRA_HwNMSSM_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwNMSSM_la_LINK) $(am_HwNMSSM_la_rpath) $(HwNMSSM_la_OBJECTS) $(HwNMSSM_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NMSSM.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NMSSMFFHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NMSSMGGHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NMSSMGOGOHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NMSSMHHHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NMSSMHSFSFVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NMSSMPPHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NMSSMWHHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NMSSMWWHHVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NMSSMWWHVertex.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMWWHVertex.h0000644000175000017500000001126611754474773022721 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_NMSSMWWHVertex_H #define HERWIG_NMSSMWWHVertex_H // // This is the declaration of the NMSSMWWHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VVSVertex.h" #include "Herwig++/Models/Susy/MixingMatrix.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** \ingroup Helicity * * The NMSSMWWHVertex class is the implementation of the coupling of two electroweak * gauge bosons to the Higgs bosons of the NMSSM. It inherits from VVSVertex and * implements the setCoupling member. * * @see \ref NMSSMWWHVertexInterfaces "The interfaces" * @see VVSVertex * @see SMWWHVertex * defined for NMSSMWWHVertex. */ class NMSSMWWHVertex: public VVSVertex { public: /** * The default constructor. */ NMSSMWWHVertex(); 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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initNMSSMWWHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ NMSSMWWHVertex & operator=(const NMSSMWWHVertex &); private: /** * Storage of the couplings. */ //@{ /** * The last value of the electroweak coupling calculated. */ Complex _couplast; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 _q2last; /** * The mass of the \f$W\f$ boson. */ Energy _mw; /** * The factor for the \f$Z\f$ vertex. */ double _zfact; /** * \f$\sin\beta\f$ */ double _sinb; /** * \f$\cos\beta\f$ */ double _cosb; /** * Mixing matrix for the CP-even Higgs bosons */ MixingMatrixPtr _mixS; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of NMSSMWWHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of NMSSMWWHVertex. */ typedef ThePEG::Helicity::VVSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the NMSSMWWHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::NMSSMWWHVertex"; } /** * The name of a file containing the dynamic library where the class * NMSSMWWHVertex is implemented. It may also include several, space-separated, * libraries if the class NMSSMWWHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so HwNMSSM.so"; } }; /** @endcond */ } #endif /* HERWIG_NMSSMWWHVertex_H */ herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMGGHVertex.cc0000644000175000017500000001451211754474773023014 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the NMSSMGGHVertex class. // #include "NMSSMGGHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Models/Susy/NMSSM/NMSSM.h" #include "Herwig++/Looptools/clooptools.h" using namespace Herwig; NMSSMGGHVertex::NMSSMGGHVertex() : _sw(0.), _cw(0.), _mw(0.*MeV), _mz(0.*MeV),_lambdaVEV(0.*MeV), _lambda(0.), _v1(0.*MeV), _v2(0.*MeV), _triTp(0.*MeV), _triBt(0.*MeV), _sb(0.), _cb(0.), _masslast(make_pair(0.*MeV,0.*MeV)), _q2last(0.*MeV2), _couplast(0.), _coup(0.), _hlast(0), _recalc(true) { orderInGem(1); orderInGs(2); } void NMSSMGGHVertex::doinit() { addToList(21,21,25); addToList(21,21,35); addToList(21,21,36); addToList(21,21,45); addToList(21,21,46); _theSM = dynamic_ptr_cast(generator()->standardModel()); if( !_theSM ) { throw InitException() << "NMSSMGGHVertex::doinit - The SM pointer is null!" << Exception::abortnow; } // SM parameters _sw = sqrt(sin2ThetaW()); _cw = sqrt(1. - sin2ThetaW()); _mw = getParticleData(24)->mass(); _mz = getParticleData(23)->mass(); _top = getParticleData(6); _bt = getParticleData(5); //NMSSM parameters tcNMSSMPtr nmssm = dynamic_ptr_cast(_theSM); _mixS = nmssm->CPevenHiggsMix(); _mixP = nmssm->CPoddHiggsMix(); _mixQt = nmssm->stopMix(); _mixQb = nmssm->sbottomMix(); double beta = atan(nmssm->tanBeta()); _sb = sin(beta); _cb = cos(beta); _v1 = sqrt(2.)*_mw*_cb; _v2 = sqrt(2.)*_mw*_sb; _lambda = nmssm->lambda(); _lambdaVEV = nmssm->lambdaVEV(); _triTp = nmssm->topTrilinear(); _triBt = nmssm->bottomTrilinear(); // resize vectors here and use setNParticles method // to the set the actual number in the loop. // Also only the top mass hass to be calculated at runtime masses.resize(6, Energy()); masses[0] = getParticleData(6)->mass(); masses[1] = getParticleData(5)->mass(); masses[2] = getParticleData(1000005)->mass(); masses[3] = getParticleData(2000005)->mass(); masses[4] = getParticleData(1000006)->mass(); masses[5] = getParticleData(2000006)->mass(); type.resize(6, PDT::Spin0); type[0] = PDT::Spin1Half; type[1] = PDT::Spin1Half; couplings.resize(6); VVSLoopVertex::doinit(); Looptools::ltexi(); } void NMSSMGGHVertex::persistentOutput(PersistentOStream & os) const { os << _theSM << _sw << _cw << ounit(_mw, GeV) << ounit(_mz, GeV) << ounit(_lambdaVEV,GeV) << _lambda << ounit(_v1,GeV) << ounit(_v2,GeV) << ounit(_triTp,GeV) << ounit(_triBt,GeV) << _top << _bt << _mixS << _mixP << _mixQt << _mixQb << _sb << _cb; } void NMSSMGGHVertex::persistentInput(PersistentIStream & is, int) { is >> _theSM >> _sw >> _cw >> iunit(_mw, GeV) >> iunit(_mz, GeV) >> iunit(_lambdaVEV,GeV) >> _lambda >> iunit(_v1,GeV) >> iunit(_v2,GeV) >> iunit(_triTp,GeV) >> iunit(_triBt,GeV) >> _top >> _bt >> _mixS >> _mixP >> _mixQt >> _mixQb >> _sb >> _cb; } ClassDescription NMSSMGGHVertex::initNMSSMGGHVertex; // Definition of the static class description member. void NMSSMGGHVertex::Init() { static ClassDocumentation documentation ("The effective coupling of a higgs to a pair of gluons in the " "NMSSM."); } void NMSSMGGHVertex::setCoupling(Energy2 q2, tcPDPtr p1, tcPDPtr p2, tcPDPtr p3) { long hid(p3->id()); if( q2 != _q2last ) { Looptools::clearcache(); _couplast = sqr(strongCoupling(q2)); _coup = weakCoupling(q2); _q2last = q2; _recalc = true; } norm(_couplast*_coup); // scalar higgs bosons if( hid != _hlast ) { _hlast = hid; _recalc = true; if( hid % 5 == 0 ) { // location of the higgs int iloc = (hid - 25)/10; // 6 particles in the loop setNParticles(6); // top and bottom quark masses Energy mt = _theSM->mass(q2, _top); Energy mb = _theSM->mass(q2, _bt); Complex c(0.); // couplings for the top quark loop c = -0.25*mt*(*_mixS)(iloc, 1)/_sb/_mw; couplings[0] = make_pair(c,c); masses[0] = mt; // couplings for the bottom quark loop c = -0.25*mb*(*_mixS)(iloc, 0)/_cb/_mw; couplings[1] = make_pair(c,c); masses[1] = mb; // sbottoms double f1 = mb/_mw/_cb; complex f2 = 0.5*_mz/_cw* ( - _cb*(*_mixS)(iloc,0) + _sb*(*_mixS)(iloc,1)); complex cpl; for(unsigned int ix=0;ix<2;++ix) { cpl = -f2*( (1. - 2.*sqr(_sw)/3.)*(*_mixQb)(ix, 0)*(*_mixQb)(ix, 0) + 2.*sqr(_sw)*(*_mixQb)(ix, 1)*(*_mixQb)(ix, 1)/3.) - f1*mb*(*_mixS)(iloc,0) *((*_mixQb)(ix, 0)*(*_mixQb)(ix, 0) + (*_mixQb)(ix, 1)*(*_mixQb)(ix, 1)) - 0.5*f1*(-_lambdaVEV*(*_mixS)(iloc,1) - _lambda*_v2*(*_mixS)(iloc,2)/_coup + _triBt*(*_mixS)(iloc,0))*((*_mixQb)(ix, 1)*(*_mixQb)(ix, 0) + (*_mixQb)(ix, 0)*(*_mixQb)(ix, 1)); couplings[2+ix] = make_pair(0.5*cpl*UnitRemoval::InvE,0.5*cpl*UnitRemoval::InvE); } // stop f1 = mt/_mw/_sb; for(unsigned int ix=0;ix<2;++ix) { cpl =+f2*( (1. - 4.*sqr(_sw)/3.)*(*_mixQt)(ix, 0)*(*_mixQt)(ix, 0) + 4.*sqr(_sw)*(*_mixQt)(ix, 1)*(*_mixQt)(ix, 1)/3.) - f1*mt*(*_mixS)(iloc,1) *((*_mixQt)(ix, 0)*(*_mixQt)(ix, 0) + (*_mixQt)(ix, 1)*(*_mixQt)(ix, 1)) - 0.5*f1*(-_lambdaVEV*(*_mixS)(iloc,0) - _lambda*_v1*(*_mixS)(iloc,2)/_coup + _triTp*(*_mixS)(iloc,1))*((*_mixQt)(ix, 1)*(*_mixQt)(ix, 0) + (*_mixQt)(ix, 0)*(*_mixQt)(ix, 1)); couplings[4+ix] = make_pair(0.5*cpl*UnitRemoval::InvE,0.5*cpl*UnitRemoval::InvE); } } // pseudoscalar higgs bosons else { // location of the higgs int iloc = (hid - 36)/10; // 2 particles in the loop setNParticles(2); // top and bottom quark masses Energy mt = _theSM->mass(q2, _top); Energy mb = _theSM->mass(q2, _bt); Complex c(0.); // top quark couplings c = Complex(0.,-1.)*0.25*mt*(*_mixP)(iloc, 1)/_sb/_mw; couplings[0] = make_pair(-c,c); masses[0] = mt; // bottom quark couplings c = Complex(0., -1.)*0.25*mb*(*_mixP)(iloc, 0)/_cb/_mw; couplings[1] = make_pair(-c,c); masses[1] = mb; } } if( _recalc ) { VVSLoopVertex::setCoupling(q2, p1, p2, p3); _recalc = false; } } herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMWWHHVertex.cc0000644000175000017500000001211011754474773023154 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the NMSSMWWHHVertex class. // #include "NMSSMWWHHVertex.h" #include "NMSSM.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; NMSSMWWHHVertex::NMSSMWWHHVertex() : couplast_(0.),q2last_(ZERO), sw_(0.), cw_(0.), sb_(0.), cb_(0.) { orderInGem(2); orderInGs (0); } IBPtr NMSSMWWHHVertex::clone() const { return new_ptr(*this); } IBPtr NMSSMWWHHVertex::fullclone() const { return new_ptr(*this); } void NMSSMWWHHVertex::persistentOutput(PersistentOStream & os) const { os << sw_ << cw_ << sb_ << cb_ << mixS_ << mixP_; } void NMSSMWWHHVertex::persistentInput(PersistentIStream & is, int) { is >> sw_ >> cw_ >> sb_ >> cb_ >> mixS_ >> mixP_; } ClassDescription NMSSMWWHHVertex::initNMSSMWWHHVertex; // Definition of the static class description member. void NMSSMWWHHVertex::Init() { static ClassDocumentation documentation ("The NMSSMWWHHVertex class implements the coupling of" " two electroweak and two Higgs bosons in the NMSSM."); } void NMSSMWWHHVertex::doinit() { int scalar[3]={25,35,45}; int pseudo[2]={36,46}; // scalar higgs bosons for(unsigned int i=0;i<3;++i) { // pair of scalars for(unsigned int j=0;j<3;++j) { addToList( 24,-24,scalar[i],scalar[j]); addToList( 23, 23,scalar[i],scalar[j]); } // scalar charged addToList( 22, 24,scalar[i],-37); addToList( 22,-24,scalar[i], 37); addToList( 23, 24,scalar[i],-37); addToList( 23,-24,scalar[i], 37); } // pair of pseudoscalars for(unsigned int i=0;i<2;++i) { for(unsigned int j=0;j<2;++j) { addToList( 24,-24,pseudo[i],pseudo[j]); addToList( 23, 23,pseudo[i],pseudo[j]); } // pseudo charged addToList( 22, 24,pseudo[i],-37); addToList( 22,-24,pseudo[i], 37); addToList( 23, 24,pseudo[i],-37); addToList( 23,-24,pseudo[i], 37); } addToList( 24,-24, 37,-37); addToList( 23, 23, 37,-37); addToList( 22, 23, 37,-37); addToList( 22, 22, 37,-37); // cast to NMSSM model tcNMSSMPtr model=dynamic_ptr_cast(generator()->standardModel()); if(!model) throw InitException() << "Must have the NMSSM Model in NMSSMWWHHVertex::doinit()" << Exception::runerror; // sin and cos theta_W sw_ = sqrt( sin2ThetaW()); cw_ = sqrt(1.-sin2ThetaW()); // get the mixing matrices mixS_ = model->CPevenHiggsMix(); if(!mixS_) throw InitException() << "Mixing matrix for CP-even neutral Higgs" << " bosons is not set in NMSSMWWHHVertex::doinit()" << Exception::runerror; mixP_ = model->CPoddHiggsMix(); if(!mixP_) throw InitException() << "Mixing matrix for CP-odd neutral Higgs" << " bosons is not set in NMSSMWWHHVertex::doinit()" << Exception::runerror; // sin and cos beta double beta = atan(model->tanBeta()); sb_ = sin(beta); cb_ = cos(beta); // base class VVSSVertex::doinit(); } void NMSSMWWHHVertex::setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2, tcPDPtr part3, tcPDPtr part4) { if(q2!=q2last_||couplast_==0.) { couplast_ = sqr(electroMagneticCoupling(q2)); q2last_=q2; } int ibos1 = part1->id(), ibos2 = part2->id(); int isca1 = part3->id(), isca2 = part4->id(); Complex fact(1.); if(abs(ibos1)==abs(ibos2)) { fact *= 0.5/sqr(sw_); if(ibos1==ParticleID::Z0) fact /= sqr(cw_); // charged if(abs(isca1)==37) { if(ibos1==ParticleID::Z0) fact *= sqr(sqr(cw_)-sqr(sw_)); else if(ibos1==ParticleID::gamma) fact = 2.; } // pair of scalars else if((isca1-5)%10==0) { unsigned int i = (isca1-25)/10; unsigned int j = (isca2-25)/10; fact *= (*mixS_)(i,0)*(*mixS_)(j,0)+(*mixS_)(i,1)*(*mixS_)(j,1); } // pair of pseudoscalars else if((isca1-6)%10==0) { unsigned int i = (isca1-36)/10; unsigned int j = (isca2-36)/10; fact *= (*mixP_)(i,0)*(*mixP_)(j,0)+(*mixP_)(i,1)*(*mixP_)(j,1); } else assert(false); } else if(abs(ibos1)==ParticleID::Wplus || abs(ibos2)==ParticleID::Wplus) { if(abs(ibos1)==ParticleID::gamma || abs(ibos2)==ParticleID::gamma) { fact *= -0.5/sw_; } else { fact *= 0.5/cw_; } if((isca1-5)%10==0) { unsigned int i = (isca1-25)/10; fact *= sb_*(*mixS_)(i,0) - cb_*(*mixS_)(i,1); } else if((isca2-5)%10==0) { unsigned int i = (isca2-25)/10; fact *= sb_*(*mixS_)(i,0) - cb_*(*mixS_)(i,1); } else if((isca1-6)%10==0) { unsigned int i = (isca1-36)/10; fact *= sb_*(*mixP_)(i,0) + cb_*(*mixP_)(i,1); fact *= isca2==ParticleID::Hplus ? -Complex(0.,1.) : Complex(0.,1.); } else if((isca2-6)%10==0) { unsigned int i = (isca2-36)/10; fact *= sb_*(*mixP_)(i,0) + cb_*(*mixP_)(i,1); fact *= isca1==ParticleID::Hplus ? -Complex(0.,1.) : Complex(0.,1.); } else assert(false); } else { fact = (sqr(cw_)-sqr(sw_))/cw_/sw_; } // set the coupling norm(couplast_*fact); } herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSM.h0000644000175000017500000001174611754474773021140 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_NMSSM_H #define HERWIG_NMSSM_H // // This is the declaration of the NMSSM class. // #include "Herwig++/Models/Susy/MSSM.h" #include "NMSSM.fh" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the NMSSM class. * * @see \ref NMSSMInterfaces "The interfaces" * defined for NMSSM. */ class NMSSM: public MSSM { public: /** * The default constructor. */ NMSSM() : _lambda(0.), _kappa(0.), _theAlambda(0.*MeV), _theAkappa(0.*MeV), _lambdaVEV(0.*MeV), _MQ3(0.*MeV), _MU2(0.*MeV) {} public: /** * Mixing matrix for the neutral CP-odd Higgs bosons */ const MixingMatrixPtr & CPoddHiggsMix() const { return theHiggsAMix; } /** * The NMSSM couplings */ //@{ /** * Superpotential \f$\lambda\f$ term */ double lambda() const { return _lambda; } /** * Superpotential \f$\kappa\f$ coupling */ double kappa() const { return _kappa; } /** * The V.E.V of the extra singlet field scaled * by \f$ lambda\f$, */ Energy lambdaVEV() const { return _lambdaVEV; } /** * Soft trilinear \f$SH_2 H_1\f$ coupling */ Energy trilinearLambda() const { return _theAlambda; } /** * Soft cubic \f$S\f$ coupling */ Energy trilinearKappa() const { return _theAkappa; } /** * left 3rd generation scalar quark mass */ Energy MQ3() const { return _MQ3; } /** * right scalar top mass */ Energy MU2() const { return _MU2; } //@} 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: /** * Extract the parameters from the input blocks */ virtual void extractParameters(bool checkModel=true); /** * Create the mixing matrices for the model */ virtual void createMixingMatrices(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initNMSSM; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ NMSSM & operator=(const NMSSM &); private: /** * Higgs mixing matrix */ MixingMatrixPtr theHiggsAMix; /** * The NMSSM couplings */ //@{ /** * Superpotential \f$\lambda\f$ term */ double _lambda; /** * Superpotential \f$\kappa\f$ coupling */ double _kappa; /** * Soft trilinear \f$SH_2 H_1\f$ coupling */ Energy _theAlambda; /** * Soft cubic \f$S\f$ coupling */ Energy _theAkappa; /** * The V.E.V of the extra singlet field scaled * by \f$ lambda\f$ */ Energy _lambdaVEV; /** * left 3rd generation scalar quark mass */ Energy _MQ3; /** * right scalar top mass */ Energy _MU2; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of NMSSM. */ template <> struct BaseClassTrait { /** Typedef of the first base class of NMSSM. */ typedef Herwig::MSSM NthBase; }; /** This template specialization informs ThePEG about the name of * the NMSSM class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::NMSSM"; } /** * The name of a file containing the dynamic library where the class * NMSSM is implemented. It may also include several, space-separated, * libraries if the class NMSSM depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so HwNMSSM.so"; } }; /** @endcond */ } #endif /* HERWIG_NMSSM_H */ herwig++-2.6.0.orig/Models/Susy/NMSSM/Makefile.am0000644000175000017500000000102311754474773022111 0ustar sylvestresylvestreif WANT_NMSSM pkglib_LTLIBRARIES = HwNMSSM.la endif HwNMSSM_la_SOURCES = \ NMSSM.cc NMSSM.h NMSSM.fh \ NMSSMFFHVertex.h NMSSMFFHVertex.cc \ NMSSMWWHVertex.h NMSSMWWHVertex.cc \ NMSSMWHHVertex.h NMSSMWHHVertex.cc \ NMSSMHSFSFVertex.h NMSSMHSFSFVertex.cc\ NMSSMGOGOHVertex.h NMSSMGOGOHVertex.cc \ NMSSMHHHVertex.h NMSSMHHHVertex.cc \ NMSSMGGHVertex.h NMSSMGGHVertex.cc \ NMSSMPPHVertex.h NMSSMPPHVertex.cc \ NMSSMWWHHVertex.h NMSSMWWHHVertex.cc HwNMSSM_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:0:0 herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMGOGOHVertex.h0000644000175000017500000001177211754474773023121 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_NMSSMGOGOHVertex_H #define HERWIG_NMSSMGOGOHVertex_H // // This is the declaration of the NMSSMGOGOHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h" #include "Herwig++/Models/Susy/MixingMatrix.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * Here is the documentation of the NMSSMGOGOHVertex class. * * @see \ref NMSSMGOGOHVertexInterfaces "The interfaces" * defined for NMSSMGOGOHVertex. */ class NMSSMGOGOHVertex: public FFSVertex { public: /** * The default constructor. */ inline NMSSMGOGOHVertex(); /** @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(); /** * Calculate the couplings. This method is virtual and must be implemented in * classes inheriting from this. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initNMSSMGOGOHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ NMSSMGOGOHVertex & operator=(const NMSSMGOGOHVertex &); private: /** * The various mixing matrices and couplings */ //@{ /** * The V chargino mixing matrix */ MixingMatrixPtr _mixV; /** * The U chargino mixing matrix */ MixingMatrixPtr _mixU; /** * The neutralino mixing matrix */ MixingMatrixPtr _mixN; /** * The CP-even neutral Higgs mixing matrix */ MixingMatrixPtr _mixS; /** * The CP-odd neutral Higgs mixing matrix */ MixingMatrixPtr _mixP; /** * The tri-linear \f$\lambda\f$ coupling */ double _lambda; /** * The tri-linear \f$\kappa\f$ coupling */ double _kappa; /** * \f$\sin\beta\f$ */ double _sinb; /** * \f$\cos\beta\f$ */ double _cosb; /** * \f$\sin\theta_W\f$ */ double _sw; /** * \f$\cos\theta_W\f$ */ double _cw; /** * The last \f$q^2\f$ the coupling was evaluated at. */ Energy2 _q2last; /** * The last value of the coupling */ double _couplast; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of NMSSMGOGOHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of NMSSMGOGOHVertex. */ typedef ThePEG::Helicity::FFSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the NMSSMGOGOHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::NMSSMGOGOHVertex"; } /** * The name of a file containing the dynamic library where the class * NMSSMGOGOHVertex is implemented. It may also include several, space-separated, * libraries if the class NMSSMGOGOHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so HwNMSSM.so"; } }; /** @endcond */ } #endif /* HERWIG_NMSSMGOGOHVertex_H */ herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSM.fh0000644000175000017500000000042711754474773021300 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the NMSSM class. // #ifndef HERWIG_NMSSM_FH #define HERWIG_NMSSM_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class NMSSM; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::NMSSM,NMSSMPtr); } #endif herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMWWHHVertex.h0000644000175000017500000001115411754474773023025 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_NMSSMWWHHVertex_H #define HERWIG_NMSSMWWHHVertex_H // // This is the declaration of the NMSSMWWHHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VVSSVertex.h" #include "Herwig++/Models/Susy/MixingMatrix.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the NMSSMWWHHVertex class. * * @see \ref NMSSMWWHHVertexInterfaces "The interfaces" * defined for NMSSMWWHHVertex. */ class NMSSMWWHHVertex: public Helicity::VVSSVertex { public: /** * The default constructor. */ NMSSMWWHHVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the fourth particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2, tcPDPtr part3, tcPDPtr part4); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initNMSSMWWHHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ NMSSMWWHHVertex & operator=(const NMSSMWWHHVertex &); private: /** * Storage of the couplings. */ //@{ /** * The last value of the electroweak coupling calculated. */ Complex couplast_; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 q2last_; //@} /** * \f$\sin\theta_W\f$ */ double sw_; /** * \f$\cos\theta_W\f$ */ double cw_; /** * \f$\sin\beta\f$ */ double sb_; /** * \f$\cos\beta\f$ */ double cb_; /** * The CP-even Higgs mixing matrix */ MixingMatrixPtr mixS_; /** * The CP-odd Higgs mixing matrix */ MixingMatrixPtr mixP_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of NMSSMWWHHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of NMSSMWWHHVertex. */ typedef Helicity::VVSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the NMSSMWWHHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::NMSSMWWHHVertex"; } /** * The name of a file containing the dynamic library where the class * NMSSMWWHHVertex is implemented. It may also include several, space-separated, * libraries if the class NMSSMWWHHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "NMSSMWWHHVertex.so"; } }; /** @endcond */ } #endif /* HERWIG_NMSSMWWHHVertex_H */ herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMPPHVertex.cc0000644000175000017500000002354711754474773023046 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the NMSSMPPHVertex class. // #include "NMSSMPPHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/Models/Susy/NMSSM/NMSSM.h" #include "Herwig++/Looptools/clooptools.h" using namespace Herwig; NMSSMPPHVertex::NMSSMPPHVertex() : _sw(0.), _cw(0.), _mw(0.*MeV), _mz(0.*MeV),_lambdaVEV(0.*MeV), _lambda(0.), _triTp(0.*MeV), _triBt(0.*MeV), _sb(0.), _cb(0.), _kappa(0.),_vu(ZERO),_vd(ZERO),_s(ZERO),_theAl(ZERO), _masslast(make_pair(0.*MeV,0.*MeV)),_q2last(0.*MeV2), _couplast(0.), _coup(0.), _hlast(0), _recalc(true) { orderInGem(3); orderInGs(0); } void NMSSMPPHVertex::doinit() { addToList(22,22,25); addToList(22,22,35); addToList(22,22,36); addToList(22,22,45); addToList(22,22,46); _theSM = dynamic_ptr_cast(generator()->standardModel()); if( !_theSM ) { throw InitException() << "NMSSMPPHVertex::doinit - The SM pointer is null!" << Exception::abortnow; } // SM parameters _sw = sqrt(sin2ThetaW()); _cw = sqrt(1. - sin2ThetaW()); _mw = getParticleData(24)->mass(); _mz = getParticleData(23)->mass(); _top = getParticleData(6); _bt = getParticleData(5); _tau = getParticleData(15); //NMSSM parameters tcNMSSMPtr nmssm = dynamic_ptr_cast(_theSM); _mixS = nmssm->CPevenHiggsMix(); _mixP = nmssm->CPoddHiggsMix(); _mixQt = nmssm->stopMix(); _mixQb = nmssm->sbottomMix(); _mixLt = nmssm->stauMix(); double beta = atan(nmssm->tanBeta()); _sb = sin(beta); _cb = cos(beta); _lambda = nmssm->lambda(); _lambdaVEV = nmssm->lambdaVEV(); _triTp = nmssm->topTrilinear(); _triBt = nmssm->bottomTrilinear(); _triTa = nmssm->tauTrilinear(); _vd = sqrt(2)*_mw*_cb; _vu = sqrt(2)*_mw*_sb; _s = _lambdaVEV/_lambda; _theAl = nmssm->trilinearLambda(); _kappa = nmssm->kappa(); _mixU = nmssm->charginoUMix(); _mixV = nmssm->charginoVMix(); // resize vectors here and use setNParticles method // to the set the actual number in the loop. // Also only the top mass hass to be calculated at runtime masses.resize(13, Energy()); masses[ 0] = getParticleData( 6)->mass(); masses[ 1] = getParticleData( 5)->mass(); masses[ 2] = getParticleData(15)->mass(); masses[ 3] = getParticleData(ParticleID::SUSY_chi_1plus)->mass(); masses[ 4] = getParticleData(ParticleID::SUSY_chi_2plus)->mass(); masses[ 5] = _mw; masses[ 6] = getParticleData(ParticleID::Hplus)->mass(); masses[ 7] = getParticleData(1000005)->mass(); masses[ 8] = getParticleData(2000005)->mass(); masses[ 9] = getParticleData(1000006)->mass(); masses[10] = getParticleData(2000006)->mass(); masses[11] = getParticleData(1000015)->mass(); masses[12] = getParticleData(2000015)->mass(); type.resize(13, PDT::Spin0); type[0] = PDT::Spin1Half; type[1] = PDT::Spin1Half; type[2] = PDT::Spin1Half; type[3] = PDT::Spin1Half; type[4] = PDT::Spin1Half; type[5] = PDT::Spin1; couplings.resize(13); VVSLoopVertex::doinit(); Looptools::ltexi(); } void NMSSMPPHVertex::persistentOutput(PersistentOStream & os) const { os << _theSM << _sw << _cw << ounit(_mw, GeV) << ounit(_mz, GeV) << ounit(_lambdaVEV,GeV) << _lambda << ounit(_triTp,GeV) << ounit(_triBt,GeV) << ounit(_triTa,GeV) << _top << _bt << _tau << _mixS << _mixP << _mixU << _mixV << _mixQt << _mixQb << _mixLt << _sb << _cb << _kappa << ounit(_vu,GeV) << ounit(_vd,GeV) << ounit(_s,GeV) << ounit(_theAl,GeV); } void NMSSMPPHVertex::persistentInput(PersistentIStream & is, int) { is >> _theSM >> _sw >> _cw >> iunit(_mw, GeV) >> iunit(_mz, GeV) >> iunit(_lambdaVEV,GeV) >> _lambda >> iunit(_triTp,GeV) >> iunit(_triBt,GeV) >> iunit(_triTa,GeV) >> _top >> _bt >> _tau >> _mixS >> _mixP >> _mixU >> _mixV >> _mixQt >> _mixQb >> _mixLt >> _sb >> _cb >> _kappa >> iunit(_vu,GeV) >> iunit(_vd,GeV) >> iunit(_s,GeV) >> iunit(_theAl,GeV); } ClassDescription NMSSMPPHVertex::initNMSSMPPHVertex; // Definition of the static class description member. void NMSSMPPHVertex::Init() { static ClassDocumentation documentation ("The effective coupling of a higgs to a pair of gluons in the " "NMSSM."); } void NMSSMPPHVertex::setCoupling(Energy2 q2, tcPDPtr p1, tcPDPtr p2, tcPDPtr p3) { long hid(p3->id()); double rt = sqrt(0.5); if( q2 != _q2last ) { Looptools::clearcache(); _couplast = sqr(electroMagneticCoupling(q2)); _coup = weakCoupling(q2); _q2last = q2; _recalc = true; } norm(_couplast*_coup); // scalar higgs bosons if( hid != _hlast ) { _hlast = hid; _recalc = true; // top and bottom quark masses Energy mt = _theSM->mass(q2, _top); Energy mb = _theSM->mass(q2, _bt); Energy mtau = _theSM->mass(q2, _tau); // scalar if( hid % 5 == 0 ) { // location of the higgs int iloc = (hid - 25)/10; // 6 particles in the loop setNParticles(13); Complex c(0.); // couplings for the top quark loop c = -1.5*sqr(_theSM->eu())* mt*(*_mixS)(iloc, 1)/_sb/_mw; couplings[0] = make_pair(c,c); masses[0] = mt; // couplings for the bottom quark loop c = -1.5*sqr(_theSM->ed())* mb*(*_mixS)(iloc, 0)/_cb/_mw; couplings[1] = make_pair(c,c); masses[1] = mb; // couplings for the tau lepton loop c = -0.5*sqr(_theSM->ee())*mtau*(*_mixS)(iloc, 0)/_cb/_mw; couplings[2] = make_pair(c,c); masses[2] = mtau; // charginos for(unsigned int ic=0;ic<2;++ic) { c = -_lambda/_coup*rt*(*_mixS)(iloc,2)*(*_mixU)(ic,1)*(*_mixV)(ic,1) -rt*((*_mixS)(iloc,0)*(*_mixU)(ic,1)*(*_mixV)(ic,0) + (*_mixS)(iloc,1)*(*_mixU)(ic,0)*(*_mixV)(ic,1)); couplings[3+ic] = make_pair(c,c); } // W boson c = UnitRemoval::InvE*_mw* (_cb*(*_mixS)(iloc,0)+_sb*(*_mixS)(iloc,1)); couplings[5] = make_pair(c,c); // charged Higgs complex cpl; cpl = sqr(_lambda)*rt*2.*(_s*((*_mixS)(iloc,2)*sqr(_cb) + (*_mixS)(iloc,2)*sqr(_sb)) - (_vu*(*_mixS)(iloc,0)/_coup + _vd*(*_mixS)(iloc,1)/_coup)*_sb*_cb) +_lambda*_sb*_cb*2*(*_mixS)(iloc,2)*(_kappa*_s/rt + rt*_theAl) + sqr(_coup)*0.5*rt*sqr(_sw)/sqr(_cw)*((_vu*(*_mixS)(iloc,1)/_coup - _vd*(*_mixS)(iloc,0)/_coup)*sqr(_cb) + (_vd*(*_mixS)(iloc,0)/_coup - _vu*(*_mixS)(iloc,1)/_coup)*sqr(_sb)) + sqr(_coup)*0.5*rt*(_vu*((*_mixS)(iloc,1)*sqr(_cb) + (*_mixS)(iloc,1)*sqr(_sb) + 2.*(*_mixS)(iloc,0)*_cb*_sb)/_coup + _vd*((*_mixS)(iloc,0)*sqr(_cb) + (*_mixS)(iloc,0)*sqr(_sb) + 2.*(*_mixS)(iloc,1)*_sb*_cb)/_coup); cpl /= -_coup; couplings[6] = make_pair(cpl*UnitRemoval::InvE,cpl*UnitRemoval::InvE); // sbottoms double f1 = mb/_mw/_cb; complex f2 = 0.5*_mz/_cw* ( - _cb*(*_mixS)(iloc,0) + _sb*(*_mixS)(iloc,1)); for(unsigned int ix=0;ix<2;++ix) { cpl = -f2*( (1. - 2.*sqr(_sw)/3.)*(*_mixQb)(ix, 0)*(*_mixQb)(ix, 0) + 2.*sqr(_sw)*(*_mixQb)(ix, 1)*(*_mixQb)(ix, 1)/3.) - f1*mb*(*_mixS)(iloc,0) *((*_mixQb)(ix, 0)*(*_mixQb)(ix, 0) + (*_mixQb)(ix, 1)*(*_mixQb)(ix, 1)) - 0.5*f1*(-_lambdaVEV*(*_mixS)(iloc,1) - _lambda*_vu*(*_mixS)(iloc,2)/_coup + _triBt*(*_mixS)(iloc,0))*((*_mixQb)(ix, 1)*(*_mixQb)(ix, 0) + (*_mixQb)(ix, 0)*(*_mixQb)(ix, 1)); cpl *= 3.*sqr(_theSM->ed()); couplings[7+ix] = make_pair(cpl*UnitRemoval::InvE,cpl*UnitRemoval::InvE); } // stop f1 = mt/_mw/_sb; for(unsigned int ix=0;ix<2;++ix) { cpl =+f2*( (1. - 4.*sqr(_sw)/3.)*(*_mixQt)(ix, 0)*(*_mixQt)(ix, 0) + 4.*sqr(_sw)*(*_mixQt)(ix, 1)*(*_mixQt)(ix, 1)/3.) - f1*mt*(*_mixS)(iloc,1) *((*_mixQt)(ix, 0)*(*_mixQt)(ix, 0) + (*_mixQt)(ix, 1)*(*_mixQt)(ix, 1)) - 0.5*f1*(-_lambdaVEV*(*_mixS)(iloc,0) - _lambda*_vd*(*_mixS)(iloc,2)/_coup + _triTp*(*_mixS)(iloc,1))*((*_mixQt)(ix, 1)*(*_mixQt)(ix, 0) + (*_mixQt)(ix, 0)*(*_mixQt)(ix, 1)); cpl *= 3.*sqr(_theSM->eu()); couplings[9+ix] = make_pair(cpl*UnitRemoval::InvE,cpl*UnitRemoval::InvE); } // sbottoms f1 = mtau/_mw/_cb; for(unsigned int ix=0;ix<2;++ix) { cpl = -f2*( (1. - 2.*sqr(_sw))*(*_mixLt)(ix, 0)*(*_mixLt)(ix, 0) + 2.*sqr(_sw)*(*_mixLt)(ix, 1)*(*_mixLt)(ix, 1)) - f1*mtau*(*_mixS)(iloc,0) *((*_mixLt)(ix, 0)*(*_mixLt)(ix, 0) + (*_mixLt)(ix, 1)*(*_mixLt)(ix, 1)) - 0.5*f1*(-_lambdaVEV*(*_mixS)(iloc,1) - _lambda*_vu*(*_mixS)(iloc,2)/_coup + _triTa*(*_mixS)(iloc,0))*((*_mixLt)(ix, 1)*(*_mixLt)(ix, 0) + (*_mixLt)(ix, 0)*(*_mixLt)(ix, 1)); cpl *= sqr(_theSM->ee()); couplings[11+ix] = make_pair(cpl*UnitRemoval::InvE,cpl*UnitRemoval::InvE); } } // pseudoscalar higgs bosons else { // location of the higgs int iloc = (hid - 36)/10; // 2 particles in the loop setNParticles(5); Complex c(0.); // top quark couplings c = Complex(0., 1.)*1.5*sqr(_theSM->eu())* mt*(*_mixP)(iloc, 1)/_sb/_mw; couplings[0] = make_pair(c,-c); masses[0] = mt; // bottom quark couplings c = Complex(0., 1.)*1.5*sqr(_theSM->ed())* mb*(*_mixP)(iloc, 0)/_cb/_mw; couplings[1] = make_pair(c,-c); masses[1] = mb; // tau lepton couplings c = Complex(0., 1.)*0.5*sqr(_theSM->ee())*mtau*(*_mixP)(iloc, 0)/_cb/_mw; couplings[2] = make_pair(c,-c); masses[2] = mtau; // charginos for(unsigned int ic=0;ic<2;++ic) { c = Complex(0,-1.0)* (_lambda/_coup*rt*(*_mixP)(iloc,2)*(*_mixU)(ic,1)*(*_mixV)(ic,1) -rt*((*_mixP)(iloc,0)*(*_mixU)(ic,1)*(*_mixV)(ic,0) + (*_mixP)(iloc,1)*(*_mixU)(ic,0)*(*_mixV)(ic,1))); couplings[3+ic] = make_pair(-c,c); } } } if( _recalc ) { VVSLoopVertex::setCoupling(q2, p1, p2, p3); _recalc = false; } } herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMHHHVertex.h0000644000175000017500000001716111754474773022663 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_NMSSMHHHVertex_H #define HERWIG_NMSSMHHHVertex_H // // This is the declaration of the NMSSMHHHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/SSSVertex.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/Models/Susy/MixingMatrix.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** \ingroup Helicity * The NMSSMHHHVertex defines the triple * Higgs coupling in the NMSSM. * * @see \ref NMSSMHHHVertexInterfaces "The interfaces" * defined for NMSSMHHHVertex. */ class NMSSMHHHVertex: public SSSVertex { public: /** * The default constructor. */ NMSSMHHHVertex(); 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(); /** * Calculate the couplings. This method is virtual and must be implemented in * classes inheriting from this. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initNMSSMHHHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ NMSSMHHHVertex & operator=(const NMSSMHHHVertex &); private: /** * The mixing matrix combination \f$U^S_{ai}U^S_{bj}U^S_{ck}\f$ * @param a The row element of the first CP-even mixing matrix * @param b The column element of the first CP-even mixing matrix * @param c The row element of the second CP-even mixing matrix * @param i The column element of the second CP-even mixing matrix * @param j The row element of the third CP-even mixing matrix * @param k The column element of the third CP-even mixing matrix */ Complex usMix(unsigned int a, unsigned int b, unsigned int c, unsigned int i, unsigned int j, unsigned int k) const { return (*_mixS)(a,i)*(*_mixS)(b,j)*(*_mixS)(c,k) + (*_mixS)(a,i)*(*_mixS)(c,j)*(*_mixS)(b,k) + (*_mixS)(b,i)*(*_mixS)(a,j)*(*_mixS)(c,k) + (*_mixS)(b,i)*(*_mixS)(c,j)*(*_mixS)(a,k) + (*_mixS)(c,i)*(*_mixS)(a,j)*(*_mixS)(b,k) + (*_mixS)(c,i)*(*_mixS)(b,j)*(*_mixS)(a,k); } /** * The mixing matrix combination \f$U^S_{ai}U^P_{bj}U^P_{ck}\f$ * @param a The row element of the first CP-even mixing matrix * @param b The column element of the first CP-even mixing matrix * @param c The row element of the second CP-even mixing matrix * @param i The column element of the second CP-even mixing matrix * @param j The row element of the third CP-even mixing matrix * @param k The column element of the third CP-even mixing matrix */ Complex upMix(unsigned int a, unsigned int b, unsigned int c, unsigned int i, unsigned int j, unsigned int k) const { return (*_mixS)(a,i)*((*_mixP)(b,j)*(*_mixP)(c,k) + (*_mixP)(c,j)*(*_mixP)(b,k)); } private: /** * A pointer to the object containing the SM parameters */ tcHwSMPtr _theSM; /** * The \f$W\f$ mass */ Energy _mw; /** * The \f$Z\f$ mass */ Energy _mz; /** * The \f$b\f$ mass */ Energy _mb; /** * The \f$t\f$ mass */ Energy _mt; /** * \f$\sin^2\theta_W\f$ */ double _sw2; /** * \f$\cos\theta_W\f$ */ double _cw; /** * The CP-even Higgs mixing matrix */ MixingMatrixPtr _mixS; /** * The CP-odd Higgs mixing matrix */ MixingMatrixPtr _mixP; /** * The coefficient of the trilinear \f$SH_2 H_1\f$ term in the superpotential */ double _lambda; /** * The coefficient of the cubic singlet term in the superpotential */ double _kappa; /** * The product \f$\lambda \langle S\rangle \f$. */ Energy _lambdaVEV; /** * The soft trilinear \f$SH_2 H_1\f$ coupling */ Energy _theAl; /** * The soft cubic \f$S\f$ coupling */ Energy _theAk; /** * \f$\sin\beta\f$ */ double _sb; /** * \f$\cos\beta\f$ */ double _cb; /** * \f$\sin2\beta\f$ */ double _s2b; /** * \f$\cos2\beta\f$ */ double _c2b; /** * The value of the VEV of the higgs that couples to the down-type sector * \f$ g*sqrt(2)M_W\cos\beta \f$ */ Energy _vu; /** * The value of the VEV of the higgs that couples to the up-type sector * i.e. \f$ g*sqrt(2)M_W\sin\beta \f$ */ Energy _vd; /** * The value of the VEV of the singlet higgs */ Energy _s; /** * The scale at which this vertex was last evaluated */ Energy2 _q2last; /** * The value of the EW coupling when it was last evaluated */ double _glast; /** * left 3rd generation scalar quark mass */ Energy _MQ3; /** * right scalar top mass */ Energy _MU2; /** * Whether or onto to include the radiative terms */ bool _includeRadiative; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of NMSSMHHHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of NMSSMHHHVertex. */ typedef Helicity::SSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the NMSSMHHHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::NMSSMHHHVertex"; } /** * The name of a file containing the dynamic library where the class * NMSSMHHHVertex is implemented. It may also include several, space-separated, * libraries if the class NMSSMHHHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so HwNMSSM.so"; } }; /** @endcond */ } #endif /* HERWIG_NMSSMHHHVertex_H */ herwig++-2.6.0.orig/Models/Susy/NMSSM/NMSSMHSFSFVertex.cc0000644000175000017500000002626511754474773023270 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the NMSSMHSFSFVertex class. // #include "NMSSMHSFSFVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "NMSSM.h" using namespace Herwig; using namespace ThePEG::Helicity; NMSSMHSFSFVertex::NMSSMHSFSFVertex() : _triTp(0.*MeV), _triBt(0.*MeV), _triTa(0.*MeV), _lambda(0.), _lambdaVEV(0.*MeV), _v1(0.*MeV), _v2(0.*MeV), _sw(0.), _cw(0.), _mw(0.*MeV), _mz(0.*MeV), _sb(0.), _cb(0.), _tb(0.), _q2last(0.*MeV2), _couplast(0.), _masslast(make_pair(0.*MeV,0.*MeV)), _idlast(make_pair(0,0)) { orderInGem(1); orderInGs(0); } void NMSSMHSFSFVertex::persistentOutput(PersistentOStream & os) const { os << _theSM << _mixS << _mixP << _mixTp << _mixBt << _mixTa << ounit(_triTp,GeV) << ounit(_triBt,GeV) << ounit(_triTa,GeV) << _lambda << ounit(_lambdaVEV,GeV) << ounit(_v1,GeV) << ounit(_v2,GeV) << _sw << _cw << ounit(_mw,GeV) << ounit(_mz,GeV) << _sb << _cb << _tb; } void NMSSMHSFSFVertex::persistentInput(PersistentIStream & is, int) { is >> _theSM >> _mixS >> _mixP >> _mixTp >> _mixBt >> _mixTa >> iunit(_triTp,GeV) >> iunit(_triBt,GeV) >> iunit(_triTa,GeV) >> _lambda >> iunit(_lambdaVEV,GeV) >> iunit(_v1,GeV) >> iunit(_v2,GeV) >> _sw >> _cw >> iunit(_mw,GeV) >> iunit(_mz,GeV) >> _sb >> _cb >> _tb; } ClassDescription NMSSMHSFSFVertex::initNMSSMHSFSFVertex; // Definition of the static class description member. void NMSSMHSFSFVertex::Init() { static ClassDocumentation documentation ("The coupling of Higgs bosons to sfermions in the MSSM."); } void NMSSMHSFSFVertex::doinit() { //CP even int even[3] = {25, 35, 45}; for(size_t h = 0; h < 3; ++h ) { //squarks for(long q = 1; q < 7; ++q) { //11 addToList(even[h], -1000000 - q, 1000000 + q); //22 addToList(even[h], -2000000 - q, 2000000 + q); //12 addToList(even[h], -1000000 - q, 2000000 + q); //21 addToList(even[h], -2000000 - q, 1000000 + q); } //sleptons for(long l = 11; l < 17; ++l) { //11 addToList(even[h], -1000000 - l, 1000000 + l); //no right handed sneutrinos if( l % 2 != 0 ) { //22 addToList(even[h], -2000000 - l, 2000000 + l); //12 addToList(even[h], -1000000 - l, 2000000 + l); //21 addToList(even[h], -2000000 - l, 1000000 + l); } } } //CP odd int odd[2] = {36, 46}; for(size_t h = 0; h < 2; ++h ) { //squarks for(long q = 1; q < 7; ++q) { //12 addToList(odd[h], -1000000 - q, 2000000 + q); //21 addToList(odd[h], -2000000 - q, 1000000 + q); } //sleptons for(long l = 11; l < 16; l += 2) { //12 addToList(odd[h], -1000000 - l, 2000000 + l); //21 addToList(odd[h], -2000000 - l, 1000000 + l); } } //charged higgs //squarks for(long q = 1; q < 3; ++q ) { //H- //LL addToList(-37, -2*q - 999999, 2*q + 1000000); //RR addToList(-37, -2*q - 1999999, 2*q + 2000000); //LR addToList(-37, -2*q - 999999, 2*q + 2000000); //RL addToList(-37, -2*q - 1999999, 2*q + 1000000); //H+ //LL addToList(37, -2*q - 1000000, 2*q + 999999); //RR addToList(37, -2*q - 2000000, 2*q + 1999999); //LR addToList(37, -2*q - 1000000, 2*q + 1999999); //RL addToList(37, -2*q - 2000000, 2*q + 999999); } //sleptons //easier as there are no right handed sneutrinos for(long l = 11; l <= 15; l +=2 ) { //H- //LL addToList(-37, -l - 1000000, l + 1000001); //RL addToList(-37, -l - 2000000, l + 1000001); //H+ //LL addToList(+37, -l - 1000001, l + 1000000); //RL addToList(+37, -l - 1000001, l + 2000000); } _theSM = dynamic_ptr_cast(generator()->standardModel()); tcNMSSMPtr nmssm = dynamic_ptr_cast(_theSM); if( !nmssm ) throw InitException() << "NMSSMHSFSFVertex::doinit() - The model pointer " << "in this vertex is not an NMSSM one as it " << "should be." << Exception::runerror; _mixS = nmssm->CPevenHiggsMix(); _mixP = nmssm->CPoddHiggsMix(); _mixTp = nmssm->stopMix(); _mixBt = nmssm->sbottomMix(); _mixTa = nmssm->stauMix(); if( !_mixS || !_mixP || !_mixTp || !_mixBt || !_mixTa ) throw InitException() << "NMSSMHSFSFVertex::doinit() - One of the mixing matrix pointers is " << "null, cannot continue. CP-even: " << _mixS << " CP-odd: " << _mixP << " ~t: " << _mixTp << " ~b: " << _mixBt << " ~tau: " << _mixTa << Exception::runerror; _triTp = nmssm->topTrilinear(); _triBt = nmssm->bottomTrilinear(); _triTa = nmssm->tauTrilinear(); _lambda = nmssm->lambda(); _lambdaVEV = nmssm->lambdaVEV(); _sw = sin2ThetaW(); _cw = sqrt( 1. - _sw); _sw = sqrt(_sw); _mw = getParticleData(24)->mass(); _mz = getParticleData(23)->mass(); _tb = nmssm->tanBeta(); double beta = atan(_tb); _sb = sin(beta); _cb = cos(beta); _v1 = sqrt(2.)*_mw*_cb; _v2 = sqrt(2.)*_mw*_sb; SSSVertex::doinit(); } void NMSSMHSFSFVertex::setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { // extract particle ids long higgs(part1->id()), isf1(part2->id()), isf2(part3->id()); // higgs first if(abs(isf1)<100) swap(higgs,isf1); if(abs(isf2)<100) swap(higgs,isf2); // squark second if(isf1<0) swap(isf1,isf2); // check higgs assert( higgs == 25 || higgs == 35 || higgs == 45 || higgs == 36 || higgs == 46 || abs(higgs) == 37 ); // abs of antisquark and check isf2 *=-1; assert(isf1>0&&isf2>0); // running coupling if( q2 != _q2last ) { _q2last = q2; _couplast = weakCoupling(q2); } //charged higgs if( abs(higgs) == 37 ) { norm(_couplast*chargedHiggs(q2, isf1, isf2)); return; } // neutral higgs // L/R states of the sfermions unsigned int alpha = ( isf1 > 2000000 ) ? 1 : 0; unsigned int beta = ( isf2 > 2000000 ) ? 1 : 0; // id nad mass of corresponding SM fermion long smid = ( alpha == 0 ) ? isf1 - 1000000 : isf1 - 2000000; if( q2 != _q2last || smid != _idlast.first) { _idlast.first = smid; _masslast.first = _theSM->mass(q2, getParticleData(smid)); } double f1 = _masslast.first/_mw; complex af(ZERO); Complex m1a(0.), m1b(0.), m2a(0.), m2b(0.); // mixing for down type squarks and charged sleptons if( smid % 2 != 0 ) { f1 /= _cb; // sbottom if( smid == 5 ) { m1a = (*_mixBt)(alpha, 0); m1b = (*_mixBt)(alpha, 1); m2a = (*_mixBt)(beta , 0) ; m2b = (*_mixBt)(beta , 1); af = _triBt; } // stau else if( smid == 15 ) { m1a = (*_mixTa)(alpha, 0); m1b = (*_mixTa)(alpha, 1); m2a = (*_mixTa)(beta , 0) ; m2b = (*_mixTa)(beta , 1); af = _triTa; } // 1st 2 generations else { m1a = (alpha == 0) ? 1. : 0.; m1b = (alpha == 0) ? 0. : 1.; m2a = (beta == 0) ? 1. : 0.; m2b = (beta == 0) ? 0. : 1.; af = ZERO; } } // mixing for up type squarks and sneutrions else { f1 /= _sb; // stop if( smid == 6 ) { m1a = (*_mixTp)(alpha, 0); m1b = (*_mixTp)(alpha, 1); m2a = (*_mixTp)(beta , 0); m2b = (*_mixTp)(beta , 1); af = _triTp; } // everything else else { m1a = (alpha == 0) ? 1. : 0.; m1b = (alpha == 0) ? 0. : 1.; m2a = (beta == 0) ? 1. : 0.; m2b = (beta == 0) ? 0. : 1.; af = 0.*MeV; } } // scalar higgs bosons complex fact(ZERO); if( higgs == 25 || higgs == 35 || higgs == 45 ) { int iloc = (higgs - 25)/10; complex f2 = 0.5*_mz*( - _cb*(*_mixS)(iloc,0) + _sb*(*_mixS)(iloc,1))/_cw; // down type squarks and charged sleptons if( smid % 2 != 0 ) { double ef = (smid < 7) ? -1./3. : -1.; fact = - f2*( (1. + 2.*ef*sqr(_sw))*m1a*m2a - 2.*ef*sqr(_sw)*m1b*m2b) - f1*_masslast.first*(*_mixS)(iloc,0)*(m1a*m2a + m1b*m2b) - 0.5*f1*(( - _lambdaVEV*(*_mixS)(iloc,1) - _lambda*_v2*(*_mixS)(iloc,2)/_couplast + af*(*_mixS)(iloc,0)) * (m2a*m1b + m1a*m2b) ); } // up type squarks and sneutrinos else { double ef = (smid < 7) ? 2./3. : 0.; fact = +f2*( (1. - 2.*ef*sqr(_sw))*m1a*m2a + 2.*ef*sqr(_sw)*m1b*m2b ) - f1*_masslast.first*(*_mixS)(iloc,1)*(m1a*m2a + m1b*m2b) - 0.5*f1*(( - _lambdaVEV*(*_mixS)(iloc,0) - _lambda*_v1*(*_mixS)(iloc,2)/_couplast + af*(*_mixS)(iloc,1) ) * (m2a*m1b + m1a*m2b)); } } // pseudo scalar else if( higgs == 36 || higgs == 46 ) { int iloc = (higgs - 36)/10; // down type squarks and charged sleptons if( smid % 2 != 0 ) { fact = -0.5*f1*Complex(0.0,1.0)* ( _lambdaVEV*(*_mixP)(iloc,1) + _lambda*_v2*(*_mixP)(iloc,2)/_couplast + af*(*_mixP)(iloc,0) ); } // up-type squarks and sneutrinos else { fact =-0.5*f1*Complex(0.0,1.0)* ( _lambdaVEV *(*_mixP)(iloc,0) + _lambda*_v1*(*_mixP)(iloc,2)/_couplast + af*(*_mixP)(iloc,1)); } if(alphamass(q2, getParticleData(utype) ); _masslast.second = _theSM->mass(q2, getParticleData(dtype) ); } Energy2 facta = 2.*sqr(_mw)*_sb*_cb; complex coupling(ZERO); // sleptons if( dtype == 11 || dtype == 13 || dtype == 15) { Complex l1b = 0., l2b = 0.; complex tri(ZERO); // 1st 2 generations if (dtype == 11 || dtype == 13) { l1b = (beta == 0) ? 1.0 : 0.0; l2b = (beta == 0) ? 0.0 : 1.0; } // stau else { l1b = (*_mixTa)(beta, 0) ; l2b = (*_mixTa)(beta, 1); tri = _triTa; } coupling = ( l1b*(sqr(_masslast.second)*_tb - facta) + l2b*_masslast.second*(tri*_tb + _lambdaVEV) ); } // squarks else { Complex q1a(0.0), q1b(0.0), q2a(0.0), q2b(0.0); complex triD(ZERO), triU(ZERO); // up-type bit // stop if(utype == 6){ q1a = (*_mixTp)(alpha, 0) ; q2a = (*_mixTp)(alpha, 1); triU = _triTp; } // light else{ q1a = (alpha == 0) ? 1.0 : 0.0; q2a = (alpha == 0) ? 0.0 : 1.0; } // down-type bit // sbottom if(utype == 5){ q1b = (*_mixBt)(beta, 0) ; q2b = (*_mixBt)(beta, 1); } // light else{ q1b = (beta == 0) ? 1.0 : 0.0; q2b = (beta == 0) ? 0.0 : 1.0; } Energy mfu = _masslast.first; Energy mfd = _masslast.second; coupling = ( q1a*q1b*((sqr(mfd)*_tb + sqr(mfu)/_tb) - facta) + q2a*q2b*mfu*mfd*(_tb + (1./_tb)) + q1a*q2b*mfd*(triD*_tb + _lambdaVEV) + q2a*q1b*mfu*(triU/_tb + _lambdaVEV)); } return coupling * UnitRemoval::InvE/_mw/sqrt(2.); } herwig++-2.6.0.orig/Models/Susy/SSGVNVVertex.h0000644000175000017500000001061611754474773021565 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_SSGVNVVertex_H #define HERWIG_SSGVNVVertex_H // // This is the declaration of the SSGVNVVertex class. // #include "ThePEG/Helicity/Vertex/Vector/RFVVertex.h" #include "MixingMatrix.h" namespace Herwig { using namespace ThePEG; /** * The SSGVNVVertex class implements the coupling of the gravitino * to a gaugino and the assoicated gauge boson. * * @see \ref SSGVNVVertexInterfaces "The interfaces" * defined for SSGVNVVertex. */ class SSGVNVVertex: public Helicity::RFVVertex { public: /** * The default constructor. */ SSGVNVVertex(); /** * Calculate the couplings. This method is virtual and must be implemented in * classes inheriting from this. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSGVNVVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSGVNVVertex & operator=(const SSGVNVVertex &); private: /** * \f$\sin\theta_W\f$ */ double sw_; /** * \f$\sin\theta_W\f$ */ double cw_; /** * The value of \f$\sin\beta\f$ */ double sb_; /** * The value of \f$\cos\beta\f$ */ double cb_; /** * The Z mass */ Energy mz_; /** * Pointer to the neutralino mixing matrix */ tMixingMatrixPtr nmix_; /** * The Planck mass */ Energy MPlanck_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSGVNVVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSGVNVVertex. */ typedef Helicity::RFVVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSGVNVVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSGVNVVertex"; } /** * The name of a file containing the dynamic library where the class * SSGVNVVertex is implemented. It may also include several, space-separated, * libraries if the class SSGVNVVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "SSGVNVVertex.so"; } }; /** @endcond */ } #endif /* HERWIG_SSGVNVVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSWSSVertex.h0000644000175000017500000001211211754474773021452 0ustar sylvestresylvestre// -*- C++ -*- // // SSWSSVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSWSSVertex_H #define HERWIG_SSWSSVertex_H // // This is the declaration of the SSWSSVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h" #include "MSSM.h" namespace Herwig { using namespace ThePEG; /** * This is the implementation of the coupling of an SM gauge boson to * a pair of sfermions. * It inherits from VSSVertex and implements the setCoupling() method. * * @see VSSVertex */ class SSWSSVertex: public VSSVertex { public: /** * The default constructor. */ SSWSSVertex(); 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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSWSSVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSWSSVertex & operator=(const SSWSSVertex &); /** * Value of \f$sin(\theta_w)\f$ */ double _sw; /** * Value of \f$cos(\theta_w)\f$ */ double _cw; /** * Scale at which the coupling was last evaluated */ Energy2 _q2last; /** * Value of coupling when last evaluated */ Complex _couplast; /** * Stau mixing matrix */ tMixingMatrixPtr _stau; /** * Stop mixing matrix */ tMixingMatrixPtr _stop; /** * Sbottom mixing matrix */ tMixingMatrixPtr _sbottom; /** * The up type sfermion present when the vertex was evaluated. */ long _ulast; /** * The down type sfermion present when the vertex was evaluated. */ long _dlast; /** * The gauge boson present when the vertex was last evaluated. */ long _gblast; /** * The value of the mixing matrix dependent part when the vertex was * last evaluated */ Complex _factlast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSWSSVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSWSSVertex. */ typedef ThePEG::Helicity::VSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSWSSVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSWSSVertex"; } /** * The name of a file containing the dynamic library where the class * SSWSSVertex is implemented. It may also include several, space-separated, * libraries if the class SSWSSVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSWSSVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSGFSVertex.cc0000644000175000017500000000745711754474773021573 0ustar sylvestresylvestre// -*- C++ -*- // // SSGFSVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSGFSVertex class. // #include "SSGFSVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace ThePEG::Helicity; using namespace Herwig; SSGFSVertex::SSGFSVertex() :_q2last(0.*GeV2),_couplast(0.), _id1last(0), _id2last(0) { orderInGs(1); orderInGem(0); } void SSGFSVertex::persistentOutput(PersistentOStream & os) const { os << _stop << _sbottom << gluinoPhase_; } void SSGFSVertex::persistentInput(PersistentIStream & is, int) { is >> _stop >> _sbottom >> gluinoPhase_; } ClassDescription SSGFSVertex::initSSGFSVertex; // Definition of the static class description member. void SSGFSVertex::Init() { static ClassDocumentation documentation ("The SSGFSVertex implements coupling of the gluinos to the " "squarks and quarks"); } void SSGFSVertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { tcPDPtr ferm; long isc(0); if(abs(part1->id()) == 1000021) { if(part2->iSpin() == PDT::Spin1Half) { ferm = part2; isc = abs(part3->id()); } else { ferm = part3; isc = abs(part2->id()); } } else if(abs(part2->id()) == 1000021) { if(part1->iSpin() == PDT::Spin1Half) { ferm = part1; isc = abs(part3->id()); } else { ferm = part3; isc = abs(part1->id()); } } else if(abs(part3->id()) == 1000021) { if(part1->iSpin() == PDT::Spin1Half) { ferm = part1; isc = abs(part2->id()); } else { ferm = part2; isc = abs(part1->id()); } } else throw HelicityConsistencyError() << "SSGFSVertex::setCoupling() - There is no gluino in this vertex!" << part1->id() << " " << part2->id() << " " << part3->id() << Exception::runerror; long iferm = abs(ferm->id()); assert(iferm >=1 && iferm <=6); if(q2 != _q2last || _couplast==0.) { _couplast = -strongCoupling(q2)*sqrt(2.); _q2last = q2; } if(iferm != _id1last || isc != _id2last) { _id1last = iferm; _id2last = isc; unsigned int eig = (isc/1000000) - 1; if(iferm == 6) { _leftlast = -(*_stop)(eig,1)*conj(gluinoPhase_); _rightlast = (*_stop)(eig,0)* gluinoPhase_ ; } else if(iferm == 5){ _leftlast = -(*_sbottom)(eig,1)*conj(gluinoPhase_); _rightlast = (*_sbottom)(eig,0)* gluinoPhase_ ; } else { if(eig == 0) { _leftlast = 0.; _rightlast = gluinoPhase_; } else { _leftlast = -conj(gluinoPhase_); _rightlast = 0.; } } } norm(_couplast); //arrange l/r couplings if(ferm->id() < 0) { left(conj(_rightlast)); right(conj(_leftlast)); } else { left(_leftlast); right(_rightlast); } } void SSGFSVertex::doinit() { for(long ix=1;ix<7;++ix) { addToList(1000021, ix, -(ix+1000000)); addToList(1000021, ix, -(ix+2000000)); addToList(1000021, -ix, (ix+1000000)); addToList(1000021, -ix, (ix+2000000)); } FFSVertex::doinit(); tMSSMPtr model = dynamic_ptr_cast(generator()->standardModel()); _stop = model->stopMix(); _sbottom = model->sbottomMix(); gluinoPhase_ = model->gluinoPhase(); if(!_stop || !_sbottom) throw InitException() << "SSGFSVertex::doinit() - " << "There is a null mixing matrix pointer. " << "stop: " << _stop << " sbottom: " << _sbottom << Exception::abortnow; } herwig++-2.6.0.orig/Models/Susy/SSHHHVertex.h0000644000175000017500000001216511754474773021415 0ustar sylvestresylvestre// -*- C++ -*- // // SSHHHVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSHHHVertex_H #define HERWIG_SSHHHVertex_H // // This is the declaration of the SSHHHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/SSSVertex.h" #include "MSSM.h" namespace Herwig { using namespace ThePEG; /** * This is the higgs coupling with other higgs bosons in the MSSM. * * @see \ref SSHHHVertexInterfaces "The interfaces" * defined for SSHHHVertex. */ class SSHHHVertex: public SSSVertex { public: /** * The default constructor. */ SSHHHVertex(); /** @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(); /** * Calculate the coupling for the vertex * @param q2 The scale to at which evaluate the coupling. * @param particle1 The first particle in the vertex. * @param particle2 The second particle in the vertex. * @param particle3 The third particle in the vertex. */ virtual void setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2, tcPDPtr particle3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSHHHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSHHHVertex & operator=(const SSHHHVertex &); private: /** * The mass of the \f$W\f$. */ Energy theMw; /** * The factor \f$ \frac{m_Z}{\sin2\theta_W} \f$ */ Energy theZfact; /** * The value of \f$\sin\theta_W\f$ */ double theSw; /** * The value of \f$ \sin(\beta + \alpha) \f$. */ double theSbpa; /** * The value of \f$ \cos(\beta + \alpha) \f$. */ double theCbpa; /** * The value of \f$ \sin(\beta - \alpha) \f$. */ double theSbma; /** * The value of \f$ \cos(\beta - \alpha) \f$. */ double theCbma; /** * The value of \f$ \sin 2\alpha \f$. */ double theS2a; /** * The value of \f$ \cos 2\alpha \f$. */ double theC2a; /** * The value of \f$ \sin 2\beta \f$. */ double theS2b; /** * The value of \f$ \cos 2\beta \f$. */ double theC2b; /** * The value of \f$ \sqrt{4\pi\alpha}\f$ when it was last evaluated. */ double theElast; /** * The scale at which the coupling was last evaluated. */ Energy2 theq2last; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSHHHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSHHHVertex. */ typedef ThePEG::Helicity::SSSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSHHHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSHHHVertex"; } /** * The name of a file containing the dynamic library where the class * SSHHHVertex is implemented. It may also include several, space-separated, * libraries if the class SSHHHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSHHHVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSCCZVertex.cc0000644000175000017500000000777111754474773021572 0ustar sylvestresylvestre// -*- C++ -*- // // SSCCZVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSCCZVertex class. // #include "SSCCZVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace ThePEG::Helicity; using namespace Herwig; SSCCZVertex::SSCCZVertex() : _sw2(0.), _cw(0.), _couplast(0.), _q2last(), _id1last(0), _id2last(0), _leftlast(0.), _rightlast(0.), _gblast(0) { orderInGs(0); orderInGem(1); } void SSCCZVertex::doinit() { addToList(-1000024, 1000024, 23); addToList(-1000024, 1000037, 23); addToList(-1000037, 1000024, 23); addToList(-1000037, 1000037, 23); //photon addToList(-1000024, 1000024, 22); addToList(-1000037, 1000037, 22); FFVVertex::doinit(); tSusyBasePtr theSS = dynamic_ptr_cast(generator()->standardModel()); if(!theSS) throw InitException() << "SSCCZVertex::doinit - The model pointer " << "is null! " << Exception::abortnow; _sw2 = sin2ThetaW(); _cw = sqrt(1. - _sw2); _theU = theSS->charginoUMix(); _theV = theSS->charginoVMix(); if(!_theU || !_theV) throw InitException() << "SSCCZVertex::doinit - " << "A mixing matrix pointer is null. U: " << _theU << " V: " << _theV << Exception::abortnow; } void SSCCZVertex::persistentOutput(PersistentOStream & os) const { os << _sw2 << _cw << _theU << _theV; } void SSCCZVertex::persistentInput(PersistentIStream & is, int) { is >> _sw2 >> _cw >> _theU >> _theV; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeSSCCZVertex("Herwig::SSCCZVertex", "HwSusy.so"); void SSCCZVertex::Init() { static ClassDocumentation documentation ("This class implements the coupling of a Z/gamma to a pair of" " charginos. "); } void SSCCZVertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { long ichar1(part1->id()), ichar2(part2->id()), boson(part3->id()); assert( boson == ParticleID::gamma || boson == ParticleID::Z0); assert( abs(ichar1) == 1000024 || abs(ichar1) == 1000037); assert( abs(ichar2) == 1000024 || abs(ichar2) == 1000037); if(_q2last != q2||_couplast==0.) { _q2last = q2; _couplast = electroMagneticCoupling(q2); } norm(_couplast); if(boson != _gblast || ichar1 != _id1last || ichar2 != _id2last) { _gblast = boson; _id1last = ichar1; _id2last = ichar2; if( boson == ParticleID::Z0 ) { unsigned int ic1(0), ic2(0); if(abs(ichar1) == 1000037) ic1 = 1; if(abs(ichar2) == 1000037) ic2 = 1; _leftlast = -(*_theV)(ic1, 0)*conj((*_theV)(ic2, 0)) - 0.5*(*_theV)(ic1, 1)*conj((*_theV)(ic2, 1)); _rightlast = -conj((*_theU)(ic1, 0))*(*_theU)(ic2, 0) - 0.5*conj((*_theU)(ic1, 1))*(*_theU)(ic2, 1); if(abs(ichar1) == abs(ichar2)) { _leftlast += _sw2; _rightlast += _sw2; } _leftlast /= sqrt(_sw2)*_cw; _rightlast /= sqrt(_sw2)*_cw; } else { if(abs(ichar1) == abs(ichar2)) { _leftlast = -1.; _rightlast = -1.; } else { _leftlast = 0.; _rightlast = 0.; } } if(ichar1>0) { Complex temp = _leftlast; _leftlast = -_rightlast; _rightlast = -temp; } } left(_leftlast); right(_rightlast); } herwig++-2.6.0.orig/Models/Susy/SSHPPVertex.cc0000644000175000017500000005365111754474773021600 0ustar sylvestresylvestre// -*- C++ -*- // // SSHPPVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSHPPVertex class. // #include "SSHPPVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include #include "Herwig++/Looptools/clooptools.h" using namespace ThePEG::Helicity; using namespace Herwig; SSHPPVertex::SSHPPVertex() : theSw(0.), theMw(), theZfact(), theQt1L(0.), theQt1R(0.), theQt1LR(0.), theQt2L(0.), theQt2R(0.), theQt2LR(0.), theQb1L(0.), theQb1R(0.), theQb1LR(0.), theQb2L(0.), theQb2R(0.), theQb2LR(0.), theLt1L(0.), theLt1R(0.), theLt1LR(0.), theLt2L(0.), theLt2R(0.), theLt2LR(0.), theSfmass(6,ZERO), theTanB(0.),theSinA(0.), theCosA(0.), theSinB(0.), theCosB(0.), theSinApB(0.), theCosApB(0.), theSinBmA(0.), theCosBmA(0.), theCouplast(0.), theq2last(), theHaveCoeff(false), theLastID(0) { orderInGs(0); orderInGem(3); } void SSHPPVertex::persistentOutput(PersistentOStream & os) const { os << theMSSM << theSw << ounit(theMw,GeV) << ounit(theZfact,GeV) << theQt1L << theQt1R << theQt1LR << theQt2L << theQt2R << theQt2LR << theQb1L << theQb1R << theQb1LR << theQb2L << theQb2R << theQb2LR << theLt1L << theLt1R << theLt1LR << theLt2L << theLt2R << theLt2LR << thetop << thebot << thetau << theTanB << theSinA << theCosA << theSinB << theCosB << theSinApB << theCosApB << theSinBmA << theCosBmA << ounit(theSfmass, GeV) << theU << theV; } void SSHPPVertex::persistentInput(PersistentIStream & is, int) { is >> theMSSM >> theSw >> iunit(theMw,GeV) >> iunit(theZfact,GeV) >> theQt1L >> theQt1R >> theQt1LR >> theQt2L >> theQt2R >> theQt2LR >> theQb1L >> theQb1R >> theQb1LR >> theQb2L >> theQb2R >> theQb2LR >> theLt1L >> theLt1R >> theLt1LR >> theLt2L >> theLt2R >> theLt2LR >> thetop >> thebot >> thetau >> theTanB >> theSinA >> theCosA >> theSinB >> theCosB >> theSinApB >> theCosApB >> theSinBmA >> theCosBmA >> iunit(theSfmass, GeV) >> theU >> theV; } ClassDescription SSHPPVertex::initSSHPPVertex; // Definition of the static class description member. void SSHPPVertex::Init() { static ClassDocumentation documentation ("This class implements the higgs-gluon-gluon effective " "vertex in the MSSM including stop, sbottom and top quarks " "loops."); } void SSHPPVertex::setCoupling(Energy2 q2, tcPDPtr particle2, tcPDPtr particle3, tcPDPtr particle1) { long higgs(abs(particle1->id())); // check allowed assert ( higgs == ParticleID::h0 || higgs == ParticleID::H0 || higgs == ParticleID::A0 ); assert(particle2->id() == ParticleID::gamma && particle3->id() == ParticleID::gamma ); // couplings if( q2 != theq2last || theCouplast == 0. || higgs != theLastID ) { Looptools::clearcache(); theCouplast = sqr(electroMagneticCoupling(q2))*weakCoupling(q2); Energy mt = theMSSM->mass(q2, thetop); Energy mb = theMSSM->mass(q2, thebot); Energy mtau = theMSSM->mass(q2, thetau); masses.resize(0); type.resize(0); if( higgs == ParticleID::h0 || higgs == ParticleID::H0 ) { setNParticles(13); masses.insert(masses.begin(), theSfmass.begin(), theSfmass.end()); masses.push_back(mt); masses.push_back(mb); masses.push_back(mtau); masses.push_back(getParticleData(ParticleID::Hplus)->mass()); masses.push_back(theMw); masses.push_back(getParticleData(ParticleID::SUSY_chi_1plus)->mass()); masses.push_back(getParticleData(ParticleID::SUSY_chi_2plus)->mass()); type.resize(13, PDT::Spin0); type[6] = PDT::Spin1Half; type[7] = PDT::Spin1Half; type[8] = PDT::Spin1Half; type[9] = PDT::Spin0; type[10] = PDT::Spin1; type[11] = PDT::Spin1Half; type[12] = PDT::Spin1Half; couplings.resize(13, make_pair(0., 0.)); complex brac1 = theZfact*(0.5 + theMSSM->ed()*sqr(theSw)); complex brac2 = theZfact*(0.5 - theMSSM->eu()*sqr(theSw)); complex brac3 = theZfact*theMSSM->ed()*sqr(theSw); complex brac4 = theZfact*theMSSM->eu()*sqr(theSw); complex brac5 = theZfact*(0.5 + theMSSM->ee()*sqr(theSw)); complex brac6 = theZfact*theMSSM->ee()*sqr(theSw); Energy Trib=theMSSM->bottomTrilinear().real(); Energy Trit=theMSSM->topTrilinear().real(); Energy Trita=theMSSM->tauTrilinear().real(); Energy theMu = theMSSM->muParameter(); if( higgs == ParticleID::h0 ) { // lightest sbottom Complex coup = 3.*UnitRemoval::InvE*sqr(theMSSM->ed())* (theQb1L *( sqr(mb)*theSinA/theMw/theCosB - theSinApB*brac1) + theQb1R *( sqr(mb)*theSinA/theMw/theCosB + theSinApB*brac3) + theQb1LR*0.5*mb/theMw*(Trib*theSinA + theMu*theCosA)/theCosB); couplings[0] = make_pair(coup, coup); // lightest stop coup = 3.*UnitRemoval::InvE*sqr(theMSSM->eu())* (theQt1L *( - sqr(mt)*theCosA/theMw/theSinB + theSinApB*brac2) + theQt1R *( - sqr(mt)*theCosA/theMw/theSinB + theSinApB*brac4) - theQt1LR*0.5*mt/theMw*(Trit*theCosA + theMu*theSinA)/theSinB); couplings[1] = make_pair(coup, coup); // lightest stau coup = UnitRemoval::InvE*sqr(theMSSM->ee())* (theLt1L *( sqr(mtau)*theSinA/theMw/theCosB - theSinApB*brac5) + theLt1R *( sqr(mtau)*theSinA/theMw/theCosB + theSinApB*brac6) + theLt1LR*0.5*mtau/theMw*(Trita*theSinA + theMu*theCosA)/theCosB); couplings[2] = make_pair(coup, coup); // heavier sbottom coup = 3.*UnitRemoval::InvE*sqr(theMSSM->ed())* (theQb2L *( sqr(mb)*theSinA/theMw/theCosB - theSinApB*brac1) + theQb2R *( sqr(mb)*theSinA/theMw/theCosB + theSinApB*brac3) + theQb2LR*0.5*mb/theMw*(Trib*theSinA + theMu*theCosA)/theCosB); couplings[3] = make_pair(coup, coup); // heavier stop coup = 3.*UnitRemoval::InvE*sqr(theMSSM->eu())* (theQt2L*( - sqr(mt)*theCosA/theMw/theSinB + theSinApB*brac2) + theQt2R*( - sqr(mt)*theCosA/theMw/theSinB + theSinApB*brac4) - theQt2LR*0.5*mt/theMw*(Trit*theCosA + theMu*theSinA)/theSinB); couplings[4] = make_pair(coup, coup); // heavier stau coup = UnitRemoval::InvE*sqr(theMSSM->ee())* (theLt2L *( sqr(mtau)*theSinA/theMw/theCosB - theSinApB*brac5) + theLt2R *( sqr(mtau)*theSinA/theMw/theCosB + theSinApB*brac6)+ theLt2LR*0.5*mtau/theMw*(Trita*theSinA + theMu*theCosA)/theCosB); couplings[5] = make_pair(coup, coup); // top coup = - 3.*mt*sqr(theMSSM->eu())*theCosA/2./theMw/theSinB; couplings[6] = make_pair(coup, coup); // bottom coup = 3.*mb*sqr(theMSSM->ed())*theSinA/2./theMw/theCosB; couplings[7] = make_pair(coup, coup); // tau coup = mtau*sqr(theMSSM->ee())*theSinA/2./theMw/theCosB; couplings[8] = make_pair(coup, coup); // charged higgs coup = - UnitRemoval::InvE*theMw*(theSinBmA + 0.5/(1.-sqr(theSw))* (sqr(theCosB)-sqr(theSinB))*theSinApB); couplings[9] = make_pair(coup, coup); // W boson coup = UnitRemoval::InvE*theMw*theSinBmA; couplings[10] = make_pair(coup, coup); // charginos for(unsigned int ix=0;ix<2;++ix) { Complex Q = sqrt(0.5)*(*theV)(ix,0)*(*theU)(ix,1); Complex S = sqrt(0.5)*(*theV)(ix,1)*(*theU)(ix,0); coup = Q*theSinA-S*theCosA; couplings[11+ix] = make_pair(conj(coup), coup); } } else { // lightest sbottom Complex coup = 3.*UnitRemoval::InvE*sqr(theMSSM->ed())* (theQb1L *( - sqr(mb)*theCosA/theMw/theCosB + theCosApB*brac1) + theQb1R *( - sqr(mb)*theCosA/theMw/theCosB - theCosApB*brac3)+ theQb1LR*0.5*mb/theMw*(theMu*theSinA - Trib*theCosA)/theCosB); couplings[0] = make_pair(coup, coup); // lightest stop coup = 3.*UnitRemoval::InvE*sqr(theMSSM->eu())* (theQt1L *( - sqr(mt)*theSinA/theMw/theSinB - theCosApB*brac2) + theQt1R *( - sqr(mt)*theSinA/theMw/theSinB - theCosApB*brac4)- theQt1LR*0.5*mt/theMw*(-theMu*theCosA + Trit*theSinA)/theSinB); couplings[1] = make_pair(coup, coup); // lightest stau coup = UnitRemoval::InvE*sqr(theMSSM->ee())* (theLt1L *( - sqr(mtau)*theCosA/theMw/theCosB + theCosApB*brac5) + theLt1R *( - sqr(mtau)*theCosA/theMw/theCosB - theCosApB*brac6)+ theLt1LR*0.5*mtau/theMw*(theMu*theSinA - Trita*theCosA)/theCosB); couplings[2] = make_pair(coup, coup); // heavier sbottom coup = 3.*UnitRemoval::InvE*sqr(theMSSM->ed())* (theQb2L *( - sqr(mb)*theCosA/theMw/theCosB + theCosApB*brac1) + theQb2R *( - sqr(mb)*theCosA/theMw/theCosB - theCosApB*brac3)+ theQb2LR*0.5*mb/theMw*(theMu*theSinA - Trib*theCosA)/theCosB); couplings[3] = make_pair(coup, coup); // heavier stop coup = 3.*UnitRemoval::InvE*sqr(theMSSM->eu())* (theQt2L *( - sqr(mt)*theSinA/theMw/theSinB - theCosApB*brac2) + theQt2R *( - sqr(mt)*theSinA/theMw/theSinB - theCosApB*brac4)- theQt2LR*0.5*mt/theMw*(-theMu*theCosA + Trit*theSinA)/theSinB); couplings[4] = make_pair(coup, coup); // heavier stau coup = UnitRemoval::InvE*sqr(theMSSM->ee())* (theLt2L *( - sqr(mtau)*theCosA/theMw/theCosB + theCosApB*brac5) + theLt2R *( - sqr(mtau)*theCosA/theMw/theCosB - theCosApB*brac6)+ theLt2LR*0.5*mtau/theMw*(theMu*theSinA - Trita*theCosA)/theCosB); couplings[5] = make_pair(coup, coup); // top coup = -3.*mt*sqr(theMSSM->eu())*theSinA/2./theMw/theSinB; couplings[6] = make_pair(coup, coup); // bottom coup = -3.*mb*sqr(theMSSM->ed())*theCosA/2./theMw/theCosB; couplings[7] = make_pair(coup, coup); // bottom coup = -mtau*sqr(theMSSM->ee())*theCosA/2./theMw/theCosB; couplings[8] = make_pair(coup, coup); // charged higgs coup = - UnitRemoval::InvE*theMw*(theCosBmA - 0.5/(1.-sqr(theSw))* (sqr(theCosB)-sqr(theSinB))*theCosApB); couplings[9] = make_pair(coup, coup); // W boson coup = UnitRemoval::InvE*theMw*theCosBmA; couplings[10] = make_pair(coup, coup); // charginos for(unsigned int ix=0;ix<2;++ix) { Complex Q = sqrt(0.5)*(*theV)(ix,0)*(*theU)(ix,1); Complex S = sqrt(0.5)*(*theV)(ix,1)*(*theU)(ix,0); coup = -Q*theCosA-S*theSinA; couplings[11+ix] = make_pair(conj(coup), coup); } } } else { setNParticles(5); masses.resize(5); couplings.resize(5); masses[0] = mt; masses[1] = mb; masses[2] = mtau; masses[3] = getParticleData(ParticleID::SUSY_chi_1plus)->mass(); masses[4] = getParticleData(ParticleID::SUSY_chi_2plus)->mass(); type.resize(5,PDT::Spin1Half); // top Complex coup = 3.*Complex(0., 1.)*sqr(theMSSM->eu())*mt/2./theMw/theTanB; couplings[0] = make_pair(coup, -coup); // bottom coup = 3.*Complex(0., 1.)*sqr(theMSSM->ed())*mb/2./theMw*theTanB; couplings[1] = make_pair(coup, -coup); // tau coup = Complex(0., 1.)*sqr(theMSSM->ee())*mtau/2./theMw*theTanB; couplings[2] = make_pair(coup, -coup); // charginos for(unsigned int ix=0;ix<2;++ix) { Complex Q = sqrt(0.5)*(*theV)(ix,0)*(*theU)(ix,1); Complex S = sqrt(0.5)*(*theV)(ix,1)*(*theU)(ix,0); coup = - Complex(0., 1.)*(Q*theSinB+S*theCosB); couplings[3+ix] = make_pair(coup, - coup); } } theq2last = q2; theLastID = higgs; theHaveCoeff = false; } norm(theCouplast); //calculate tensor coefficients if( !theHaveCoeff ) { VVSLoopVertex::setCoupling(q2, particle2, particle3, particle1); theHaveCoeff = true; } } // functions for loops for testing // namespace { // Complex F0(double tau) { // Complex ft; // if(tau>=1.) // ft = sqr(asin(1./sqrt(tau))); // else { // double etap = 1.+sqrt(1.-tau); // double etam = 1.-sqrt(1.-tau); // ft = -0.25*sqr(log(etap/etam)-Constants::pi*Complex(0.,1.)); // } // return tau*(1.-tau*ft); // } // Complex FHalf(double tau,double eta) { // Complex ft; // if(tau>=1.) // ft = sqr(asin(1./sqrt(tau))); // else { // double etap = 1.+sqrt(1.-tau); // double etam = 1.-sqrt(1.-tau); // ft = -0.25*sqr(log(etap/etam)-Constants::pi*Complex(0.,1.)); // } // return -2.*tau*(eta+(1.-tau*eta)*ft); // } // Complex F1(double tau) { // Complex ft; // if(tau>=1.) // ft = sqr(asin(1./sqrt(tau))); // else { // double etap = 1.+sqrt(1.-tau); // double etam = 1.-sqrt(1.-tau); // ft = -0.25*sqr(log(etap/etam)-Constants::pi*Complex(0.,1.)); // } // return 2.+3.*tau+3.*tau*(2.-tau)*ft; // } // } void SSHPPVertex::doinit() { //PDG codes for particles at vertices addToList(22,22,25); addToList(22,22,35); addToList(22,22,36); theMSSM = dynamic_ptr_cast(generator()->standardModel()); if( !theMSSM ) throw InitException() << "SSHPPVertex::doinit() - The pointer to the MSSM object is null!" << Exception::abortnow; theMw = getParticleData(ParticleID::Wplus)->mass(); thetop = getParticleData(ParticleID::t); thebot = getParticleData(ParticleID::b); thetau = getParticleData(ParticleID::tauminus); theSw = sqrt(sin2ThetaW()); theZfact = getParticleData(ParticleID::Z0)->mass()/sqrt(1. - sqr(theSw)); theSinA = sin(theMSSM->higgsMixingAngle()); theCosA = sqrt(1. - sqr(theSinA)); theTanB = theMSSM->tanBeta(); theSinB = theTanB/sqrt(1. + sqr(theTanB)); theCosB = sqrt( 1. - sqr(theSinB) ); theSinApB = theSinA*theCosB + theCosA*theSinB; theCosApB = theCosA*theCosB - theSinA*theSinB; theSinBmA =-theSinA*theCosB + theCosA*theSinB; theCosBmA = theCosA*theCosB + theSinA*theSinB; MixingMatrix stop = *theMSSM->stopMix(); MixingMatrix sbot = *theMSSM->sbottomMix(); MixingMatrix stau = *theMSSM->stauMix(); theQt1L = stop(0,0)*stop(0,0); theQt1R = stop(0,1)*stop(0,1); theQt1LR = stop(0,1)*stop(0,0) + stop(0,1)*stop(0,0); theQt2L = stop(1,0)*stop(1,0); theQt2R = stop(1,1)*stop(1,1); theQt2LR = stop(1,1)*stop(1,0) + stop(1,0)*stop(1,1); theQb1L = sbot(0,0)*sbot(0,0); theQb1R = sbot(0,1)*sbot(0,1); theQb1LR = sbot(0,1)*sbot(0,0) + sbot(0,1)*sbot(0,0); theQb2L = sbot(1,0)*sbot(1,0); theQb2R = sbot(1,1)*sbot(1,1); theQb2LR = sbot(1,1)*sbot(1,0) + sbot(1,0)*sbot(1,1); theLt1L = stau(0,0)*stau(0,0); theLt1R = stau(0,1)*stau(0,1); theLt1LR = stau(0,1)*stau(0,0) + stau(0,1)*stau(0,0); theLt2L = stau(1,0)*stau(1,0); theLt2R = stau(1,1)*stau(1,1); theLt2LR = stau(1,1)*stau(1,0) + stau(1,0)*stau(1,1); theU = theMSSM->charginoUMix(); theV = theMSSM->charginoVMix(); assert( theSfmass.size() == 6 ); theSfmass[0] = getParticleData(ParticleID::SUSY_b_1)->mass(); theSfmass[1] = getParticleData(ParticleID::SUSY_t_1)->mass(); theSfmass[2] = getParticleData(ParticleID::SUSY_tau_1minus)->mass(); theSfmass[3] = getParticleData(ParticleID::SUSY_b_2)->mass(); theSfmass[4] = getParticleData(ParticleID::SUSY_t_2)->mass(); theSfmass[5] = getParticleData(ParticleID::SUSY_tau_2minus)->mass(); VVSLoopVertex::doinit(); // test calc of the width // for(unsigned int ix=0;ix<2;++ix) { // Energy mh = getParticleData(25+long(ix)*10)->mass(); // Energy mt = theMSSM->mass(sqr(mh ), thetop); // Energy mb = theMSSM->mass(sqr(mh ), thebot); // Energy mtau = theMSSM->mass(sqr(mh ), thetau); // Energy mhp = getParticleData(ParticleID::Hplus)->mass(); // Energy mc[2] = {getParticleData(ParticleID::SUSY_chi_1plus)->mass(), // getParticleData(ParticleID::SUSY_chi_2plus)->mass()}; // // sbottom // Complex rsb1,rsb2; // if(ix==0) { // rsb1 = // +theQb1L*(-sqr(mb/theMw)*(1.-sqr(theSw))*theSinA/theCosB // -(-0.5+sqr(theSw)/3.)*theSinApB) // +theQb1R*(-sqr(mb/theMw)*(1.-sqr(theSw))*theSinA/theCosB // +sqr(theSw)/3.*theSinApB); // rsb2 = // +theQb2L*(-sqr(mb/theMw)*(1.-sqr(theSw))*theSinA/theCosB // -(-0.5+sqr(theSw)/3.)*theSinApB) // +theQb2R*(-sqr(mb/theMw)*(1.-sqr(theSw))*theSinA/theCosB // +sqr(theSw)/3.*theSinApB); // } // else { // rsb1 = // +theQb1L*(+sqr(mb/theMw)*(1.-sqr(theSw))*theCosA/theCosB // +(-0.5+sqr(theSw)/3.)*theCosApB) // +theQb1R*(+sqr(mb/theMw)*(1.-sqr(theSw))*theCosA/theCosB // -sqr(theSw)/3.*theCosApB); // rsb2 = // +theQb2L*(+sqr(mb/theMw)*(1.-sqr(theSw))*theCosA/theCosB // +(-0.5+sqr(theSw)/3.)*theCosApB) // +theQb2R*(+sqr(mb/theMw)*(1.-sqr(theSw))*theCosA/theCosB // -sqr(theSw)/3.*theCosApB); // } // Complex Isb1 = 3.*sqr(1./3.)*rsb1*sqr(theMw/theSfmass[0])/(1.-sqr(theSw)) // *F0(sqr(2.*theSfmass[0]/mh)); // Complex Isb2 = 3.*sqr(1./3.)*rsb2*sqr(theMw/theSfmass[3])/(1.-sqr(theSw)) // *F0(sqr(2.*theSfmass[3]/mh)); // // stop // Complex rst1,rst2; // if(ix==0) { // rst1 = // +theQt1L*(+sqr(mt/theMw)*(1.-sqr(theSw))*theCosA/theSinB // -(+0.5-2.*sqr(theSw)/3.)*theSinApB) // +theQt1R*(+sqr(mt/theMw)*(1.-sqr(theSw))*theCosA/theSinB // -2.*sqr(theSw)/3.*theSinApB); // rst2 = // +theQt2L*(+sqr(mt/theMw)*(1.-sqr(theSw))*theCosA/theSinB // -(+0.5-2.*sqr(theSw)/3.)*theSinApB) // +theQt2R*(+sqr(mt/theMw)*(1.-sqr(theSw))*theCosA/theSinB // -2.*sqr(theSw)/3.*theSinApB); // } // else { // rst1 = // +theQt1L*(+sqr(mt/theMw)*(1.-sqr(theSw))*theSinA/theSinB // +(+0.5-2.*sqr(theSw)/3.)*theCosApB) // +theQt1R*(+sqr(mt/theMw)*(1.-sqr(theSw))*theSinA/theSinB // +2.*sqr(theSw)/3.*theCosApB); // rst2 = // +theQt2L*(+sqr(mt/theMw)*(1.-sqr(theSw))*theSinA/theSinB // +(+0.5-2.*sqr(theSw)/3.)*theCosApB) // +theQt2R*(+sqr(mt/theMw)*(1.-sqr(theSw))*theSinA/theSinB // +2.*sqr(theSw)/3.*theCosApB); // } // Complex Ist1 = 3.*sqr(2./3.)*rst1*sqr(theMw/theSfmass[1])/(1.-sqr(theSw)) // *F0(sqr(2.*theSfmass[1]/mh)); // Complex Ist2 = 3.*sqr(2./3.)*rst2*sqr(theMw/theSfmass[4])/(1.-sqr(theSw)) // *F0(sqr(2.*theSfmass[4]/mh)); // // stau // Complex rstau1,rstau2; // if(ix==0) { // rstau1 = // +theLt1L*(-sqr(mtau/theMw)*(1.-sqr(theSw))*theSinA/theCosB // -(-0.5+sqr(theSw))*theSinApB) // +theLt1R*(-sqr(mtau/theMw)*(1.-sqr(theSw))*theSinA/theCosB // +sqr(theSw)*theSinApB); // rstau2 = // +theLt2L*(-sqr(mtau/theMw)*(1.-sqr(theSw))*theSinA/theCosB // -(-0.5+sqr(theSw))*theSinApB) // +theLt2R*(-sqr(mtau/theMw)*(1.-sqr(theSw))*theSinA/theCosB // +sqr(theSw)*theSinApB); // } // else { // rstau1 = // +theLt1L*(+sqr(mtau/theMw)*(1.-sqr(theSw))*theCosA/theCosB // +(-0.5+sqr(theSw))*theCosApB) // +theLt1R*(+sqr(mtau/theMw)*(1.-sqr(theSw))*theCosA/theCosB // -sqr(theSw)*theCosApB); // rstau2 = // +theLt2L*(+sqr(mtau/theMw)*(1.-sqr(theSw))*theCosA/theCosB // +(-0.5+sqr(theSw))*theCosApB) // +theLt2R*(+sqr(mtau/theMw)*(1.-sqr(theSw))*theCosA/theCosB // -sqr(theSw)*theCosApB); // } // Complex Istau1 = rstau1*sqr(theMw/theSfmass[2])/(1.-sqr(theSw)) // *F0(sqr(2.*theSfmass[2]/mh)); // Complex Istau2 = rstau2*sqr(theMw/theSfmass[5])/(1.-sqr(theSw)) // *F0(sqr(2.*theSfmass[5]/mh)); // // charged higgs // Complex rh; // if(ix==0) { // rh = theSinBmA+0.5*(sqr(theCosB)-sqr(theSinB))*theSinApB/(1.-sqr(theSw)); // } // else { // rh = theCosBmA-0.5*(sqr(theCosB)-sqr(theSinB))*theCosApB/(1.-sqr(theSw)); // } // Complex Ih = rh*sqr(theMw/mhp)*F0(sqr(2.*mhp/mh)); // // W // Complex rw; // if(ix==0) { // rw = theSinBmA; // } // else { // rw = theCosBmA; // } // Complex IW = rw*F1(sqr(2.*theMw/mh)); // // top // Complex rt; // if(ix==0) { // rt = theCosA/theSinB; // } // else { // rt = theSinA/theSinB; // } // Complex Itop = 3.*sqr(2./3.)*rt*FHalf(sqr(2.*mt/mh),1.); // // bottom // Complex rb; // if(ix==0) { // rb =-theSinA/theCosB; // } // else { // rb = theCosA/theCosB; // } // Complex Ibot = 3.*sqr(1./3.)*rb*FHalf(sqr(2.*mb/mh),1.); // // tau // Complex rtau; // if(ix==0) { // rtau =-theSinA/theCosB; // } // else { // rtau = theCosA/theCosB; // } // Complex Itau = rtau*FHalf(sqr(2.*mtau/mh),1.); // // charginos // Complex rc[2],IC[2]; // for(unsigned int ic=0;ic<2;++ic) { // Complex Q = sqrt(0.5)*(*theV)(ic,0)*(*theU)(ic,1); // Complex S = sqrt(0.5)*(*theV)(ic,1)*(*theU)(ic,0); // if(ix==0) { // rc[ic] = 2.*(S*theCosA-Q*theSinA); // } // else { // rc[ic] = 2.*(S*theSinA+Q*theCosA); // } // IC[ic] = rc[ic]*FHalf(sqr(2.*mc[ic]/mh),1.)*theMw/mc[ic]; // } // Energy pre = sqr(mh/theMw)*mh/1024./pow(Constants::pi,3) // *sqr(weakCoupling(sqr(mh))*sqr(electroMagneticCoupling(sqr(mh)))/4./Constants::pi); // cerr << "testing lighter sbottom" << ix << " " // << pre*std::norm(Isb1)/GeV << "\n"; // cerr << "testing heavier sbottom" << ix << " " // << pre*std::norm(Istau2)/GeV << "\n"; // cerr << "testing lighter stop" << ix << " " // << pre*std::norm(Ist1)/GeV << "\n"; // cerr << "testing heavier stop" << ix << " " // << pre*std::norm(Ist2)/GeV << "\n"; // cerr << "testing lighter stau" << ix << " " // << pre*std::norm(Istau1)/GeV << "\n"; // cerr << "testing heavier stau" << ix << " " // << pre*std::norm(Isb2)/GeV << "\n"; // cerr << "testing top " << ix << " " // << pre*std::norm(Itop)/GeV << "\n"; // cerr << "testing bottom " << ix << " " // << pre*std::norm(Ibot)/GeV << "\n"; // cerr << "testing tau " << ix << " " // << pre*std::norm(Itau)/GeV << "\n"; // cerr << "testing higgs " << ix << " " // << pre*std::norm(Ih)/GeV << "\n"; // cerr << "testing W " << ix << " " // << pre*std::norm(IW)/GeV << "\n"; // cerr << "testing chi1 " << ix << " " // << pre*std::norm(IC[0])/GeV << "\n"; // cerr << "testing chi2 " << ix << " " // << pre*std::norm(IC[1])/GeV << "\n"; // cerr << "testing chi " << ix << " " // << pre*std::norm(IC[0]+IC[1])/GeV << "\n"; // cerr << "testing higgs width " << ix << " " // << pre*std::norm(Isb1+Isb2+Ist1+Ist2+Istau1+Istau2+ // Itop+Ibot+Itau+Ih+IW+IC[0]+IC[1])/GeV << "\n"; // } Looptools::ltexi(); } herwig++-2.6.0.orig/Models/Susy/SSNNZVertex.cc0000644000175000017500000000742611754474773021615 0ustar sylvestresylvestre// -*- C++ -*- // // SSNNZVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSNNZVertex class. // #include "SSNNZVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "MixingMatrix.h" #include "ThePEG/PDT/EnumParticles.h" using namespace ThePEG::Helicity; using namespace Herwig; SSNNZVertex::SSNNZVertex() : _sw(0.), _cw(0.), _id1last(0), _id2last(0), _q2last(), _couplast(0.), _leftlast(0.), _rightlast(0.) { orderInGem(1); orderInGs(0); } void SSNNZVertex::doinit() { long neu[] = { 1000022, 1000023, 1000025, 1000035, 1000045 }; for(unsigned int i = 0; i < 5; ++i) for(unsigned int j = 0; j < 5; ++j) addToList(neu[i], neu[j], 23); FFVVertex::doinit(); tSusyBasePtr theSS = dynamic_ptr_cast(generator()->standardModel()); if(!theSS) throw InitException() << "SSNNZVertex::doinit() - " << "The model pointer is null." << Exception::abortnow; _theN = theSS->neutralinoMix(); if(!_theN) throw InitException() << "SSNNZVertex::doinit - The neutralino " << "mixing matrix pointer is null." << Exception::abortnow; _sw = sqrt(sin2ThetaW()); _cw = sqrt(1 - _sw*_sw); } void SSNNZVertex::persistentOutput(PersistentOStream & os) const { os << _sw << _cw << _theN; } void SSNNZVertex::persistentInput(PersistentIStream & is, int) { is >> _sw >> _cw >> _theN; _id1last = 0; _id2last = 0; _q2last = ZERO; _couplast = 0.; _leftlast = 0.; _rightlast = 0.; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeSSNNZVertex("Herwig::SSNNZVertex", "HwSusy.so"); void SSNNZVertex::Init() { static ClassDocumentation documentation ("The coupling of a Z-boson to a pair of neutralinos"); } void SSNNZVertex::setCoupling(Energy2 q2,tcPDPtr part1, #ifndef NDEBUG tcPDPtr part2,tcPDPtr part3) { #else tcPDPtr part2,tcPDPtr) { #endif assert(part3->id() == ParticleID::Z0); long ic1 = part2->id(); long ic2 = part1->id(); assert(ic1 == ParticleID::SUSY_chi_10 || ic1 == ParticleID::SUSY_chi_20 || ic1 == ParticleID::SUSY_chi_30 || ic1 == ParticleID::SUSY_chi_40 || ic1 == 1000045); assert(ic2 == ParticleID::SUSY_chi_10 || ic2 == ParticleID::SUSY_chi_20 || ic2 == ParticleID::SUSY_chi_30 || ic2 == ParticleID::SUSY_chi_40 || ic2 == 1000045); if(q2 != _q2last || _couplast==0.) { _q2last = q2; _couplast = weakCoupling(q2)/_cw; } if(ic1 != _id1last || ic2 != _id2last) { _id1last = ic1; _id2last = ic2; unsigned int neu1(ic1 - 1000022), neu2(ic2 - 1000022); if(neu1 > 1) { if(ic1 == 1000025) neu1 = 2; else if(ic1 == 1000035) neu1 = 3; else neu1 = 4; } if(neu2 > 1) { if(ic2 == 1000025) neu2 = 2; else if(ic2 == 1000035) neu2 = 3; else neu2 = 4; } _leftlast = 0.5*( (*_theN)(neu1, 3)*conj((*_theN)(neu2, 3)) - (*_theN)(neu1, 2)*conj((*_theN)(neu2, 2)) ); _rightlast = -conj(_leftlast); } norm(_couplast); left(_leftlast); right(_rightlast); } herwig++-2.6.0.orig/Models/Susy/SSGNGVertex.h0000644000175000017500000001322711754474773021421 0ustar sylvestresylvestre// -*- C++ -*- // // SSGNGVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSGNGVertex_H #define HERWIG_SSGNGVertex_H // // This is the declaration of the SSGNGVertex class. // #include "ThePEG/Helicity/Vertex/Vector/GeneralFFVVertex.h" #include "Herwig++/Models/Susy/MSSM.h" #include "Herwig++/Models/Susy/MixingMatrix.fh" namespace Herwig { using namespace ThePEG; /** * This class implements the coupling of a photon to a pair of neutralinos * via loop diagrams * It inherits from GeneralFFVertex and implements the setCoupling method. * * @see \ref SSGNGVertexInterfaces "The interfaces" * defined for SSGNGVertex. * @see FFVertex */ class SSGNGVertex: public GeneralFFVVertex { public: /** * The default constructor. */ SSGNGVertex(); 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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Evaluate the loop integrals */ void loopIntegrals(Energy Mi, Energy Mj, Energy M, Energy m, complex & I, complex & J, complex & K, complex & I2); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSGNGVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSGNGVertex & operator=(const SSGNGVertex &); private: /** * Pointer to the stop mixing matrix */ tMixingMatrixPtr _stop; /** * Pointer to the sbottom mixing matrix */ tMixingMatrixPtr _sbot; /** * The value of \f$sin(\theta_W)\f$ */ double _sw; /** * The value of \f$cos(\theta_W)\f$ */ double _cw; /** * Mass of the W */ Energy _mw; /** * \f$\sin(\beta)\f$ */ double _sb; /** * \f$\cos(\beta)\f$ */ double _cb; /** * Store the neutralino mixing matrix */ tMixingMatrixPtr _theN; /** * Store the id of the neutralino when the coupling was last evaluated */ long _idlast; /** * Store the value at which the coupling when it was last evalutated */ Energy2 _q2last; /** * Store the value of the coupling when it was last evalutated */ Complex _couplast; /** * Store the value of the left-coupling when it was last evalutated */ complex _leftlast; /** * Store the value of the right-coupling when it was last evalutated */ complex _rightlast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSGNGVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSGNGVertex. */ typedef ThePEG::Helicity::GeneralFFVVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSGNGVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSGNGVertex"; } /** * The name of a file containing the dynamic library where the class * SSGNGVertex is implemented. It may also include several, space-separated, * libraries if the class SSGNGVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSGNGVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSNNPVertex.h0000644000175000017500000001125711754474773021442 0ustar sylvestresylvestre// -*- C++ -*- // // SSNNPVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSNNPVertex_H #define HERWIG_SSNNPVertex_H // // This is the declaration of the SSNNPVertex class. // #include "ThePEG/Helicity/Vertex/Vector/GeneralFFVVertex.h" #include "Herwig++/Models/Susy/MSSM.h" #include "Herwig++/Models/Susy/MixingMatrix.fh" namespace Herwig { using namespace ThePEG; /** * This class implements the coupling of a photon to a pair of neutralinos * via loop diagrams * It inherits from GeneralFFVertex and implements the setCoupling method. * * @see \ref SSNNPVertexInterfaces "The interfaces" * defined for SSNNPVertex. * @see FFVertex */ class SSNNPVertex: public GeneralFFVVertex { public: /** * The default constructor. */ SSNNPVertex(); 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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Evaluate the loop integrals */ void loopIntegrals(Energy Mi, Energy Mj, Energy M, Energy m, complex & I, complex & J, complex & K, complex & I2); 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. */ SSNNPVertex & operator=(const SSNNPVertex &); private: /** * Pointer to the stop mixing matrix */ tMixingMatrixPtr _stop; /** * Pointer to the sbottom mixing matrix */ tMixingMatrixPtr _sbot; /** * Pointer to the stau mixing matrix */ tMixingMatrixPtr _stau; /** * The value of \f$sin(\theta_W)\f$ */ double _sw; /** * The value of \f$cos(\theta_W)\f$ */ double _cw; /** * Mass of the W */ Energy _mw; /** * \f$\sin(\beta)\f$ */ double _sb; /** * \f$\cos(\beta)\f$ */ double _cb; /** * Store the neutralino mixing matrix */ tMixingMatrixPtr _theN; /** * Store the U-type chargino mixing matrix */ tMixingMatrixPtr _theU; /** * Store the V-type chargino mixing matrix */ tMixingMatrixPtr _theV; /** * Store the id of the 1st neutralino when the coupling was last evaluated */ long _id1last; /** * Store the id of the 1st neutralino when the coupling was last evaluated */ long _id2last; /** * Store the value at which the coupling when it was last evalutated */ Energy2 _q2last; /** * Store the value of the coupling when it was last evalutated */ Complex _couplast; /** * Store the value of the left-coupling when it was last evalutated */ complex _leftlast; /** * Store the value of the right-coupling when it was last evalutated */ complex _rightlast; }; } #endif /* HERWIG_SSNNPVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSNFSVertex.cc0000644000175000017500000001367211754474773021576 0ustar sylvestresylvestre// -*- C++ -*- // // SSNFSVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSNFSVertex class. // #include "SSNFSVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace ThePEG::Helicity; using namespace Herwig; SSNFSVertex::SSNFSVertex() : _sw(0.), _cw(0.), _mw(), _sb(0.), _cb(0.), _q2last(), _couplast(0.), _leftlast(0.), _rightlast(0.), _id1last(0), _id2last(0), yukawa_(true) { orderInGem(1); orderInGs(0); } void SSNFSVertex::persistentOutput(PersistentOStream & os) const { os << _stop << _sbot << _stau << _nmix << _theSS << _sw << _cw << ounit(_mw,GeV) << _sb << _cb << yukawa_; } void SSNFSVertex::persistentInput(PersistentIStream & is, int) { is >> _stop >> _sbot >> _stau >> _nmix >> _theSS >> _sw >> _cw >> iunit(_mw,GeV) >> _sb >> _cb >> yukawa_; } void SSNFSVertex::doinit() { long neut[5] = {1000022, 1000023, 1000025, 1000035, 1000045}; for(unsigned int nl = 0; nl < 5; ++nl) { //quarks for(long ix=1;ix<7;++ix){ addToList( neut[nl], ix, -(1000000+ix) ); addToList( neut[nl], ix, -(2000000+ix) ); addToList( neut[nl], -ix, (1000000+ix) ); addToList( neut[nl], -ix, (2000000+ix) ); } //leptons for(long ix=11;ix<17;++ix) { addToList( neut[nl], ix, -(1000000+ix) ); addToList( neut[nl], -ix, (1000000+ix) ); if( ix % 2 != 0 ) { addToList( neut[nl], ix, -(2000000+ix) ); addToList( neut[nl], -ix, (2000000+ix) ); } } } FFSVertex::doinit(); _theSS = dynamic_ptr_cast(generator()->standardModel()); if(!_theSS) throw InitException() << "SSGSSVertex::doinit() - " << "The model pointer is null." << Exception::abortnow; _stop = _theSS->stopMix(); _sbot = _theSS->sbottomMix(); _stau = _theSS->stauMix(); _nmix = _theSS->neutralinoMix(); if(!_stop || !_stau || !_sbot || !_nmix) throw InitException() << "SSNFSVertex::doinit() - " << "A mixing matrix pointer is null." << " stop: " << _stop << " sbottom: " << _sbot << " stau: " << _stau << " N: " << _nmix << Exception::abortnow; _sw = sqrt(sin2ThetaW()); _mw = getParticleData(24)->mass(); double tb = _theSS->tanBeta(); _cw = sqrt(1. - sqr(_sw)); _sb = tb/sqrt(1 + sqr(tb)); _cb = sqrt(1 - sqr(_sb)); } ClassDescription SSNFSVertex::initSSNFSVertex; // Definition of the static class description member. void SSNFSVertex::Init() { static ClassDocumentation documentation ("The SSNFSVertex implements the coupling of a neutralino to " "a fermion-sfermion"); static Switch interfaceYukawa ("Yukawa", "Whether or not to include the Yukawa type couplings", &SSNFSVertex::yukawa_, true, false, false); static SwitchOption interfaceYukawaYes (interfaceYukawa, "Yes", "Include the terms", true); static SwitchOption interfaceYukawaNo (interfaceYukawa, "No", "Don't include them", false); } void SSNFSVertex::setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3) { long isc(abs(part3->id())), ism(abs(part1->id())), ineut(abs(part2->id())); tcPDPtr smfermion = part1; if( ism / 1000000 == 1 ) { swap( ism, ineut); smfermion = part2; } if(q2!=_q2last || _couplast==0.) { _couplast = -sqrt(2)*weakCoupling(q2); _q2last=q2; } norm(_couplast); if( ineut != _id1last || ism != _id2last || isc != _id3last ) { _id1last = ineut; _id2last = ism; _id3last = isc; // determine neutralino and squark eigenstates unsigned int alpha(isc/1000000 - 1), nl(0); switch( ineut ) { case 1000022 : nl = 0; break; case 1000023 : nl = 1; break; case 1000025 : nl = 2; break; case 1000035 : nl = 3; break; case 1000045 : nl = 4; break; default : assert(false); } // common primed neutralino matrices Complex n2prime = (*_nmix)(nl,1)*_cw - (*_nmix)(nl,0)*_sw; //handle neutrinos first if( ism == 12 || ism == 14 || ism == 16 ) { _leftlast = Complex(0., 0.); _rightlast = n2prime/2./_cw; } else { Complex n1prime = (*_nmix)(nl,0)*_cw + (*_nmix)(nl,1)*_sw; tcPDPtr smf = getParticleData(ism); double qf = smf->charge()/eplus; Complex bracketl = qf*_sw*( conj(n1prime) - _sw*conj(n2prime)/_cw ); double y = yukawa_ ? double(_theSS->mass(q2, smf)/2./_mw) : 0.; double lambda(0.); //neutralino mixing element Complex nlf(0.); if( ism % 2 == 0 ) { y /= _sb; lambda = -0.5 + qf*sqr(_sw); nlf = (*_nmix)(nl,3); } else { y /= _cb; lambda = 0.5 + qf*sqr(_sw); nlf = (*_nmix)(nl,2); } Complex bracketr = _sw*qf*n1prime - n2prime*lambda/_cw; //heavy quarks/sleptons if( ism == 5 || ism == 6 || ism == 15 ) { Complex ma1(0.), ma2(0.); if( ism == 5 ) { ma1 = (*_sbot)(alpha,0); ma2 = (*_sbot)(alpha,1); } else if( ism == 6 ) { ma1 = (*_stop)(alpha,0); ma2 = (*_stop)(alpha,1); } else { ma1 = (*_stau)(alpha,0); ma2 = (*_stau)(alpha,1); } _leftlast = y*conj(nlf)*ma1 - ma2*bracketl; _rightlast = y*nlf*ma2 + ma1*bracketr; } else { if( alpha == 0 ) { _leftlast = y*conj(nlf); _rightlast = bracketr; } else { _leftlast = -bracketl; _rightlast = y*nlf; } } } } //determine the helicity order of the vertex if( smfermion->id() < 0 ) { left(conj(_rightlast)); right(conj(_leftlast)); } else { left(_leftlast); right(_rightlast); } } herwig++-2.6.0.orig/Models/Susy/SSGVFSVertex.h0000644000175000017500000001060011754474773021543 0ustar sylvestresylvestre// -*- C++ -*- // // SSGVFSVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSGVFSVertex_H #define HERWIG_SSGVFSVertex_H // // This is the declaration of the SSGVFSVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/RFSVertex.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "MSSM.h" namespace Herwig { using namespace ThePEG; /** * This is the implementation of the coupling of the gravitino to * fermion-sfermions. It inherits from RFSVertex and implements the * virtual setCoupling() method. * * @see RFSVertex */ class SSGVFSVertex: public RFSVertex { public: /** * The default constructor. */ SSGVFSVertex(); 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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSGVFSVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSGVFSVertex & operator=(const SSGVFSVertex &); /** * Pointer to the stop mixing matrix */ tMixingMatrixPtr stop_; /** * Pointer to the sbottom mixing matrix */ tMixingMatrixPtr sbot_; /** * Pointer to the stau mixing matrix */ tMixingMatrixPtr stau_; /** * The Planck mass */ Energy MPlanck_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSGVFSVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSGVFSVertex. */ typedef ThePEG::Helicity::RFSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSGVFSVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSGVFSVertex"; } /** Return the name of the shared library be loaded to get * access to the SSGVFSVertex class and every other class it uses * (except the base class). */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSGVFSVertex_H */ herwig++-2.6.0.orig/Models/Susy/SusyBase.cc0000644000175000017500000005353211755204203021215 0ustar sylvestresylvestre// -*- C++ -*- // // SusyBase.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SusyBase class. // #include "SusyBase.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Repository/Repository.h" #include "ThePEG/Utilities/StringUtils.h" #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/MassGenerator.h" #include "ThePEG/PDT/WidthGenerator.h" #include "ThePEG/PDT/DecayMode.h" using namespace Herwig; SusyBase::SusyBase() : readFile_(false), MPlanck_(2.4e18*GeV), gravitino_(false), tanBeta_(0), mu_(ZERO), M1_(ZERO), M2_(ZERO), M3_(ZERO), mH12_(ZERO),mH22_(ZERO), meL_(ZERO),mmuL_(ZERO),mtauL_(ZERO), meR_(ZERO),mmuR_(ZERO),mtauR_(ZERO), mq1L_(ZERO),mq2L_(ZERO),mq3L_(ZERO), mdR_(ZERO),muR_(ZERO),msR_(ZERO), mcR_(ZERO),mbR_(ZERO),mtR_(ZERO), gluinoPhase_(1.) {} IBPtr SusyBase::clone() const { return new_ptr(*this); } IBPtr SusyBase::fullclone() const { return new_ptr(*this); } void SusyBase::doinit() { addVertex(WSFSFVertex_); addVertex(NFSFVertex_); addVertex(GFSFVertex_); addVertex(HSFSFVertex_); addVertex(CFSFVertex_); addVertex(GSFSFVertex_); addVertex(GGSQSQVertex_); addVertex(GSGSGVertex_); addVertex(NNZVertex_); if(NNPVertex_) addVertex(NNPVertex_); if(GNGVertex_) addVertex(GNGVertex_); addVertex(CCZVertex_); addVertex(CNWVertex_); addVertex(GOGOHVertex_); addVertex(WHHVertex_); addVertex(NCTVertex_); if(gravitino_) { if(GVNHVertex_) addVertex(GVNHVertex_); if(GVNVVertex_) addVertex(GVNVVertex_); if(GVFSVertex_) addVertex(GVFSVertex_); } BSMModel::doinit(); } void SusyBase::persistentOutput(PersistentOStream & os) const { os << readFile_ << gravitino_ << NMix_ << UMix_ << VMix_ << WSFSFVertex_ << NFSFVertex_ << GFSFVertex_ << HSFSFVertex_ << CFSFVertex_ << GSFSFVertex_ << GGSQSQVertex_ << GSGSGVertex_ << NNZVertex_ << NNPVertex_ << CCZVertex_ << CNWVertex_ << GOGOHVertex_ << WHHVertex_ << GNGVertex_ << NCTVertex_ << GVNHVertex_ << GVNVVertex_ << GVFSVertex_ << tanBeta_ << ounit(mu_,GeV) << ounit(M1_,GeV) << ounit(M2_,GeV) << ounit(M3_,GeV) << ounit(mH12_,GeV2) << ounit(mH22_,GeV2) << ounit(meL_,GeV) << ounit(mmuL_,GeV) << ounit(mtauL_,GeV) << ounit(meR_,GeV) << ounit(mmuR_,GeV) << ounit(mtauR_,GeV) << ounit(mq1L_,GeV) << ounit(mq2L_,GeV) << ounit(mq3L_,GeV) << ounit(mdR_,GeV) << ounit(muR_,GeV) << ounit(msR_,GeV) << ounit(mcR_,GeV) << ounit(mbR_,GeV) << ounit(mtR_,GeV) << gluinoPhase_ << ounit(MPlanck_,GeV); } void SusyBase::persistentInput(PersistentIStream & is, int) { is >> readFile_ >> gravitino_ >> NMix_ >> UMix_ >> VMix_ >> WSFSFVertex_ >> NFSFVertex_ >> GFSFVertex_ >> HSFSFVertex_ >> CFSFVertex_ >> GSFSFVertex_ >> GGSQSQVertex_ >> GSGSGVertex_ >> NNZVertex_ >> NNPVertex_ >> CCZVertex_ >> CNWVertex_ >> GOGOHVertex_ >> WHHVertex_ >> GNGVertex_ >> NCTVertex_ >> GVNHVertex_ >> GVNVVertex_ >> GVFSVertex_ >> tanBeta_ >> iunit(mu_,GeV) >> iunit(M1_,GeV) >> iunit(M2_,GeV) >> iunit(M3_,GeV) >> iunit(mH12_,GeV2) >> iunit(mH22_,GeV2) >> iunit(meL_,GeV) >> iunit(mmuL_,GeV) >> iunit(mtauL_,GeV) >> iunit(meR_,GeV) >> iunit(mmuR_,GeV) >> iunit(mtauR_,GeV) >> iunit(mq1L_,GeV) >> iunit(mq2L_,GeV) >> iunit(mq3L_,GeV) >> iunit(mdR_,GeV) >> iunit(muR_,GeV) >> iunit(msR_,GeV) >> iunit(mcR_,GeV) >> iunit(mbR_,GeV) >> iunit(mtR_,GeV) >> gluinoPhase_ >> iunit(MPlanck_,GeV); } ClassDescription SusyBase::initSusyBase; // Definition of the static class description member. void SusyBase::Init() { static ClassDocumentation documentation ("This is the base class for any SUSY model.", "SUSY spectrum files follow the Les Houches accord" " \\cite{Skands:2003cj,Allanach:2008qq}.", " %\\cite{Skands:2003cj}\n" "\\bibitem{Skands:2003cj}\n" " P.~Skands {\\it et al.},\n" " ``SUSY Les Houches accord: Interfacing SUSY spectrum calculators, decay\n" " %packages, and event generators,''\n" " JHEP {\\bf 0407}, 036 (2004)\n" " [arXiv:hep-ph/0311123].\n" " %%CITATION = JHEPA,0407,036;%%\n" "%\\cite{Allanach:2008qq}\n" "\\bibitem{Allanach:2008qq}\n" " B.~Allanach {\\it et al.},\n" " %``SUSY Les Houches Accord 2,''\n" " Comput.\\ Phys.\\ Commun.\\ {\\bf 180}, 8 (2009)\n" " [arXiv:0801.0045 [hep-ph]].\n" " %%CITATION = CPHCB,180,8;%%\n" ); static Reference interfaceVertexWSS ("Vertex/WSFSF", "Reference to Susy W SF SF vertex", &SusyBase::WSFSFVertex_, false, false, true, false); static Reference interfaceVertexNFSF ("Vertex/NFSF", "Reference to the neutralino-fermion-sfermion vertex", &SusyBase::NFSFVertex_, false, false, true, false); static Reference interfaceVertexGFSF ("Vertex/GFSF", "Reference to the gluino-fermion-sfermion vertex", &SusyBase::GFSFVertex_, false, false, true, false); static Reference interfaceVertexHSFSF ("Vertex/HSFSF", "Reference to the Higgs-fermion-sfermion vertex", &SusyBase::HSFSFVertex_, false, false, true, false); static Reference interfaceVertexCFSF ("Vertex/CFSF", "Reference to the chargino-fermion-sfermion vertex", &SusyBase::CFSFVertex_, false, false, true, false); static Reference interfaceVertexGSFSF ("Vertex/GSFSF", "Reference to the gluon-sfermion-sfermion vertex", &SusyBase::GSFSFVertex_, false, false, true, false); static Reference interfaceVertexGGSS ("Vertex/GGSQSQ", "Reference to the gluon-gluon-squark-squark vertex", &SusyBase::GGSQSQVertex_, false, false, true, false); static Reference interfaceVertexGSGSG ("Vertex/GSGSG", "Reference to the gluon-gluino-gluino vertex", &SusyBase::GSGSGVertex_, false, false, true, false); static Reference interfaceVertexNNZ ("Vertex/NNZ", "Reference to Z-~chi_i0-~chi_i0 vertex", &SusyBase::NNZVertex_, false, false, true, false); static Reference interfaceVertexNNP ("Vertex/NNP", "Reference to photon-~chi_i0-~chi_i0 vertex", &SusyBase::NNPVertex_, false, false, true, true, false); static Reference interfaceVertexGNG ("Vertex/GNG", "Reference to gluon-~chi_i0-gluino vertex", &SusyBase::GNGVertex_, false, false, true, true, false); static Reference interfaceVertexCCZ ("Vertex/CCZ", "Reference to ~chi_i+-~chi_i-Z vertex", &SusyBase::CCZVertex_, false, false, true, false); static Reference interfaceVertexCNW ("Vertex/CNW", "Reference to ~chi_i+-chi_i0-W vertex", &SusyBase::CNWVertex_, false, false, true, false); static Reference interfaceVertexGOGOH ("Vertex/GOGOH", "Reference to the gaugino-gaugino-higgs vertex", &SusyBase::GOGOHVertex_, false, false, true, false); static Reference interfaceVertexWHH ("Vertex/SSWHH", "Reference to Susy WHHVertex", &SusyBase::WHHVertex_, false, false, true, false); static Reference interfaceVertexNCT ("Vertex/NCT", "Vertex for the flavour violating coupling of the top squark " "to the neutralino and charm quark.", &SusyBase::NCTVertex_, false, false, true, false, false); static Reference interfaceVertexGVNH ("Vertex/GVNH", "Vertex for the interfaction of the gravitino-neutralino" " and Higgs bosons", &SusyBase::GVNHVertex_, false, false, true, true, false); static Reference interfaceVertexGVNV ("Vertex/GVNV", "Vertex for the interfaction of the gravitino-neutralino" " and vector bosons", &SusyBase::GVNVVertex_, false, false, true, true, false); static Reference interfaceVertexGVFS ("Vertex/GVFS", "Vertex for the interfaction of the gravitino-fermion" " and sfermion", &SusyBase::GVFSVertex_, false, false, true, true, false); static Parameter interfaceMPlanck ("MPlanck", "The Planck mass for GMSB models", &SusyBase::MPlanck_, GeV, 2.4e18*GeV, 1.e16*GeV, 1.e20*GeV, false, false, Interface::limited); } void SusyBase::readSetup(istream & is) { string filename = dynamic_ptr_cast(&is)->str(); filename = StringUtils::stripws(filename); if(readFile_) throw SetupException() << "A second SLHA file " << filename << " has been opened." << "This is probably unintended and as it can cause crashes" << " and other unpredictable behaviour it is not allowed." << Exception::runerror; CFileLineReader cfile; cfile.open(filename); if( !cfile ) throw SetupException() << "SusyBase::readSetup - An error occurred in opening the " << "spectrum file \"" << filename << "\". A SUSY model cannot be " << "run without this." << Exception::runerror; useMe(); // read first line and check if this is a Les Houches event file cfile.readline(); bool lesHouches = cfile.find("> scale; unsigned int row(0),col(0); MixingVector vals = readMatrix(cfile,row,col); if(scale>1e10) continue; mixings_[name] = make_pair(make_pair(row,col),vals); } else if( name.find("info") == string::npos) { readBlock(cfile,name,line); } else { if(!cfile.readline()) break; } continue; } else if( lesHouches && line.find("> alpha; store.insert(make_pair(1,alpha)); } else { // extract the scale from the block if present if(test.find("=")!= string::npos) { while(test.find("=")!=string::npos) test= StringUtils::cdr(test,"="); istringstream is(test); double scale; is >> scale; // only store the lowest scale block if(parameters_.find(name)!=parameters_.end()) { set = scale < parameters_[name][-1]; } else { store.insert(make_pair(-1,scale)); } } while(cfile.readline()) { string line = cfile.getline(); // skip comments if(line[0] == '#') continue; // reached the end if( line[0] == 'B' || line[0] == 'b' || line[0] == 'D' || line[0] == 'd' || line[0] == '<' ) { cfile.resetline(); break; } istringstream is(line); long index; double value; is >> index >> value; store.insert(make_pair(index, value)); } } if(set) parameters_[name]=store; } const MixingVector SusyBase::readMatrix(CFileLineReader & cfile, unsigned int & row, unsigned int & col) { if(!cfile) throw SetupException() << "SusyBase::readMatrix() - The input stream is in a bad state." << Exception::runerror; unsigned int rowmax(0), colmax(0); MixingVector values; while(cfile.readline()) { string line = cfile.getline(); // skip comments if(line[0] == '#') continue; // reached the end if( line[0] == 'B' || line[0] == 'b' || line[0] == 'D' || line[0] == 'd' || line[0] == '<' ) { cfile.resetline(); break; } istringstream is(line); unsigned int index1, index2; double real(0.), imag(0.); is >> index1 >> index2 >> real >> imag; values.push_back(MixingElement(index1,index2,Complex(real, imag))); if(index1 > rowmax) rowmax = index1; if(index2 > colmax) colmax = index2; } col=colmax; row=rowmax; return values; } void SusyBase::createMixingMatrix(MixingMatrixPtr & matrix, string name, const MixingVector & values, MatrixSize size) { matrix = new_ptr(MixingMatrix(size.first,size.second)); for(unsigned int ix=0; ix < values.size(); ++ix) (*matrix)(values[ix].row-1,values[ix].col-1) = values[ix].value; if(name == "nmix") { vector ids(4); ids[0] = 1000022; ids[1] = 1000023; ids[2] = 1000025; ids[3] = 1000035; matrix->setIds(ids); } else if(name == "nmnmix") { vector ids(5); ids[0] = 1000022; ids[1] = 1000023; ids[2] = 1000025; ids[3] = 1000035; ids[4] = 1000045; matrix->setIds(ids); } else if(name == "umix") { vector ids(2); ids[0] = 1000024; ids[1] = 1000037; matrix->setIds(ids); } else if(name == "vmix") { vector ids(2); ids[0] = 1000024; ids[1] = 1000037; matrix->setIds(ids); } else if(name == "stopmix") { vector ids(2); ids[0] = 1000006; ids[1] = 2000006; matrix->setIds(ids); } else if(name == "sbotmix") { vector ids(2); ids[0] = 1000005; ids[1] = 2000005; matrix->setIds(ids); } else if(name == "staumix") { vector ids(2); ids[0] = 1000015; ids[1] = 2000015; matrix->setIds(ids); } else if(name == "nmhmix") { vector ids(3); ids[0] = 25; ids[1] = 35; ids[2] = 45; matrix->setIds(ids); } else if(name == "nmamix") { vector ids(2); ids[0] = 36; ids[1] = 46; matrix->setIds(ids); } else throw SetupException() << "Cannot find correct title for mixing matrix " << name << Exception::runerror; } void SusyBase::resetRepositoryMasses() { map::const_iterator fit=parameters_.find("mass"); if(fit==parameters_.end()) throw Exception() << "BLOCK MASS not found in input file" << " can't set masses of SUSY particles" << Exception::runerror; ParamMap theMasses = fit->second; for(ParamMap::iterator it = theMasses.begin(); it != theMasses.end(); ++it) { long id = it->first; double mass = it->second; //a negative mass requires an adjustment to the //associated mixing matrix by a factor of i if(mass < 0.0) adjustMixingMatrix(id); PDPtr part = getParticleData(id); if(!part) throw SetupException() << "SusyBase::resetRepositoryMasses() - Particle with PDG code " << id << " not found." << Exception::warning; if(abs(id)<=5||abs(id)==23||abs(id)==24) cerr << "SusyBase::resetRepositoryMasses() Resetting mass of " << part->PDGName() << " using SLHA " << "file,\nthis can affect parts of the Standard Model simulation and" << " is strongly discouraged.\n"; //Find interface nominal mass interface const InterfaceBase * ifb = BaseRepository::FindInterface(part, "NominalMass"); ostringstream os; os.precision(12); os << abs(it->second); ifb->exec(*part, "set", os.str()); // switch on gravitino interactions? gravitino_ |= id== ParticleID::SUSY_Gravitino; } theMasses.clear(); } void SusyBase::adjustMixingMatrix(long id) { //get correct mixing matrix switch(id) { case 1000021 : gluinoPhase_ = Complex(0.,1.); break; case 1000022 : case 1000023 : case 1000025 : case 1000035 : case 1000045 : if(NMix_) NMix_->adjustPhase(id); else throw SetupException() << "SusyBase::adjustMixingMatrix - " << "The neutralino mixing matrix pointer " << "is null!" << Exception::runerror; break; case 1000024 : case 1000037 : if(UMix_) UMix_->adjustPhase(id); else throw SetupException() << "SusyBase::adjustMixingMatrix - " << "The U-Type chargino mixing matrix pointer " << "is null!" << Exception::runerror; if(VMix_) VMix_->adjustPhase(id); else throw SetupException() << "SusyBase::adjustMixingMatrix - " << "The V-Type chargino mixing matrix pointer " << "is null!" << Exception::runerror; break; default : throw SetupException() << "SusyBase::adjustMixingMatrix - Trying to adjust mixing matrix " << "phase for a particle that does not have a mixing matrix " << "associated with it. " << id << " must have a negative mass in " << "the spectrum file, this should only occur for particles that mix." << Exception::runerror; } } void SusyBase::createMixingMatrices() { map >::const_iterator it; for(it=mixings_.begin();it!=mixings_.end();++it) { string name=it->first; // create the gaugino mixing matrices if(name == "nmix" || name == "nmnmix" ){ createMixingMatrix(NMix_,name,it->second.second,it->second.first); } else if (name == "umix" ) { createMixingMatrix(UMix_,name,it->second.second,it->second.first); } else if (name == "vmix") { createMixingMatrix(VMix_,name,it->second.second,it->second.first); } } } void SusyBase::extractParameters(bool checkmodel) { map::const_iterator pit; ParamMap::const_iterator it; // try and get tan beta from extpar first pit=parameters_.find("extpar"); // extract tan beta tanBeta_ = -1.; if(pit!=parameters_.end()) { it = pit->second.find(25); if(it!=pit->second.end()) tanBeta_ = it->second; } // otherwise from minpar if(tanBeta_<0.) { pit=parameters_.find("minpar"); if(pit!=parameters_.end()) { it = pit->second.find(3); if(it!=pit->second.end()) tanBeta_ = it->second; } } if(tanBeta_<0.) throw Exception() << "Can't find tan beta in BLOCK MINPAR" << " or BLOCK EXTPAR " << Exception::runerror; if(tanBeta_==0.) throw Exception() << "Tan(beta) = 0 in SusyBase::extractParameters()" << Exception::runerror; // extract parameters from hmix pit=parameters_.find("hmix"); if(pit==parameters_.end()) { cerr << "BLOCK HMIX not found setting mu to zero\n"; mu_=ZERO; } else { it = pit->second.find(1); if(it==pit->second.end()) { cerr << "mu not found in BLOCK HMIX setting to zero\n"; } else { mu_=it->second*GeV; } } pit = parameters_.find("msoft"); if( pit == parameters_.end() ) throw Exception() << "BLOCK MSOFT not found in " << "SusyBase::extractParameters()" << Exception::runerror; M1_ = pit->second.find(1 )->second*GeV; M2_ = pit->second.find(2 )->second*GeV; M3_ = pit->second.find(3 )->second*GeV; mH12_ = pit->second.find(21)->second*GeV2; mH22_ = pit->second.find(22)->second*GeV2; meL_ = pit->second.find(31)->second*GeV; mmuL_ = pit->second.find(32)->second*GeV; mtauL_ = pit->second.find(33)->second*GeV; meR_ = pit->second.find(34)->second*GeV; mmuR_ = pit->second.find(35)->second*GeV; mtauR_ = pit->second.find(36)->second*GeV; mq1L_ = pit->second.find(41)->second*GeV; mq2L_ = pit->second.find(42)->second*GeV; mq3L_ = pit->second.find(43)->second*GeV; muR_ = pit->second.find(44)->second*GeV; mcR_ = pit->second.find(45)->second*GeV; mtR_ = pit->second.find(46)->second*GeV; mdR_ = pit->second.find(47)->second*GeV; msR_ = pit->second.find(48)->second*GeV; mbR_ = pit->second.find(49)->second*GeV; if(checkmodel) { throw Exception() << "The SusyBase class should not be used as a " << "Model class, use one of the models which inherit" << " from it" << Exception::runerror; } } herwig++-2.6.0.orig/Models/Susy/SSGSSVertex.cc0000644000175000017500000000401311754474773021571 0ustar sylvestresylvestre// -*- C++ -*- // // SSGSSVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSGSSVertex class. // #include "SSGSSVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace ThePEG::Helicity; using namespace Herwig; SSGSSVertex::SSGSSVertex() : _couplast(0.),_q2last(ZERO) { orderInGs(1); orderInGem(0); } void SSGSSVertex::doinit() { for(long ix=1000001;ix<1000007;++ix) { addToList(21,ix,-ix); } for(long ix=2000001;ix<2000007;++ix) { addToList(21,ix,-ix); } VSSVertex::doinit(); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeNoPIOClass describeSSGSSVertex("Herwig::SSGSSVertex", "HwSusy.so"); void SSGSSVertex::Init() { static ClassDocumentation documentation ("The SSGSSVertex class implements the coupling" " of the gluon to the squarks"); } void SSGSSVertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr) { assert(part1->id()==ParticleID::g); long isf = abs(part2->id()); assert( (isf >= 1000001 && isf <= 1000006) || (isf >= 2000001 && isf <= 2000006) ); if(q2 != _q2last || _couplast == 0.) { _couplast = strongCoupling(q2); _q2last = q2; } norm(_couplast); } herwig++-2.6.0.orig/Models/Susy/SSHGGVertex.h0000644000175000017500000001541311754474773021412 0ustar sylvestresylvestre// -*- C++ -*- // // SSHGGVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSHGGVertex_H #define HERWIG_SSHGGVertex_H // // This is the declaration of the SSHGGVertex class. // #include "Herwig++/Models/General/VVSLoopVertex.h" #include "MSSM.h" namespace Herwig { /** * This class implements the effective vertex coupling a higgs * to a pair of gluons in the MSSM. The loop include the stop and sbottom * squarks and the top quark. * * * @see \ref SSHGGVertexInterfaces "The interfaces" * defined for SSHGGVertex. */ class SSHGGVertex: public VVSLoopVertex { public: /** * The default constructor. */ SSHGGVertex(); /** @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(); /** * Calculate couplings *@param q2 Scale at which to evaluate coupling *@param particle1 ParticleData pointer to first particle *@param particle2 ParticleData pointer to second particle *@param particle3 ParticleData pointer to third particle */ virtual void setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2, tcPDPtr particle3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSHGGVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSHGGVertex & operator=(const SSHGGVertex &); private: /** * A pointer to the MSSM object */ tMSSMPtr theMSSM; /** * Value of \f$\sin\theta_W\f$ */ double theSw; /** * The mass of the \f$W\f$ boson. */ Energy theMw; /** * The factor \f$\frac{M_Z}{\cos\theta_W}\f$ */ Energy theZfact; /** * The mixing matrix factor \f$Q^{2i}_{11}Q^{2i}_{11}\f$ * for the \f$\tilde{t}\f$ */ Complex theQt1L; /** * The mixing matrix factor \f$Q^{2i}_{12}Q^{2i}_{12}\f$ * for the \f$\tilde{t}\f$ */ Complex theQt1R; /** * The mixing matrix factor \f$Q^{2i}_{12}Q^{2i}_{12}\f$ * for the \f$\tilde{t}\f$ */ Complex theQt1LR; /** * The mixing matrix factor \f$Q^{2i}_{21}Q^{2i}_{21}\f$ * for the \f$\tilde{t}\f$ */ Complex theQt2L; /** * The mixing matrix factor \f$Q^{2i}_{22}Q^{2i}_{22}\f$ * for the \f$\tilde{t}\f$ */ Complex theQt2R; /** * The mixing matrix factor \f$Q^{2i}_{22}Q^{2i}_{22}\f$ * for the \f$\tilde{t}\f$ */ Complex theQt2LR; /** * The mixing matrix factor \f$Q^{2i-1}_{11}Q^{2i-1}_{11}\f$ * for the \f$\tilde{b}\f$ */ Complex theQb1L; /** * The mixing matrix factor \f$Q^{2i-1}_{12}Q^{2i-1}_{12}\f$ * for the \f$\tilde{b}\f$ */ Complex theQb1R; /** * The mixing matrix factor \f$Q^{2i-1}_{12}Q^{2i-1}_{12}\f$ * for the \f$\tilde{b}\f$ */ Complex theQb1LR; /** * The mixing matrix factor \f$Q^{2i-1}_{21}Q^{2i-1}_{21}\f$ * for the \f$\tilde{b}\f$ */ Complex theQb2L; /** * The mixing matrix factor \f$Q^{2i-1}_{22}Q^{2i-1}_{22}\f$ * for the \f$\tilde{b}\f$ */ Complex theQb2R; /** * The mixing matrix factor \f$Q^{2i-1}_{22}Q^{2i-1}_{22}\f$ * for the \f$\tilde{b}\f$ */ Complex theQb2LR; /** * A pointer to the top quark ParticleData object */ tPDPtr thetop; /** * A pointer to the bottom quark ParticleData object */ tPDPtr thebot; /** * The squark masses */ vector theSqmass; /** * The value of \f$ \tan\beta \f$ */ double theTanB; /** * The value of \f$ \sin\alpha \f$ */ double theSinA; /** * The value of \f$ \cos\alpha \f$ */ double theCosA; /** * The value of \f$ \sin\beta \f$ */ double theSinB; /** * The value of \f$ \cos\beta \f$ */ double theCosB; /** * The value of \f$ \sin(\alpha + \beta) \f$ */ double theSinApB; /** * The value of \f$ \cos(\alpha + \beta) \f$ */ double theCosApB; /** * Last value of the coupling calculated */ Complex theCouplast; /** * The scale \f$q^2\f$ at which coupling was last evaluated */ Energy2 theq2last; /** * Whether we have calculated the tensor coefficents yet */ bool theHaveCoeff; /** * ID of the higgs */ long theLastID; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSHGGVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSHGGVertex. */ typedef Herwig::VVSLoopVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSHGGVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSHGGVertex"; } /** Return the name of the shared library be loaded to get * access to the SSHGGVertex class and every other class it uses * (except the base class). */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSHGGVertex_H */ herwig++-2.6.0.orig/Models/Susy/MSSM.h0000644000175000017500000001037711754474773020124 0ustar sylvestresylvestre// -*- C++ -*- // // MSSM.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MSSM_H #define HERWIG_MSSM_H // // This is the declaration of the MSSM class. // #include "SusyBase.h" #include "MSSM.fh" namespace Herwig { using namespace ThePEG; /** * The MSSM class provides the main model class to replace the Standard Model * when using the Minimal Supersymmetric Standard Model. * * @see \ref MSSMInterfaces "The interfaces" * defined for MSSM. */ class MSSM: public SusyBase { public: /** * Value of Higgs mixing angle \f$\alpha\f$. */ double higgsMixingAngle() const {return theAlpha;} /** * Value of up-type trilinear couplings */ const complex & topTrilinear() const {return theAtop;} /** * Value of down-type trilinear couplings */ const complex & bottomTrilinear() const {return theAbottom;} /** * Value of lepton trilinear couplings */ const complex & tauTrilinear() const {return theAtau;} /** * The stop mixing matrix */ const MixingMatrixPtr & stopMix() const {return theStopMix;} /** * The sbottom chargino mixing matrix */ const MixingMatrixPtr & sbottomMix() const {return theSbotMix;} /** * The stau mixing matrix */ const MixingMatrixPtr & stauMix() const {return theStauMix;} /** * Mixing matrix for the neutral CP-even Higgs bosons */ const MixingMatrixPtr & CPevenHiggsMix() const {return theHiggsMix;} 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Create the mixing matrices for the model */ virtual void createMixingMatrices(); /** * Extract the parameters from the input blocks */ virtual void extractParameters(bool checkModel=true); /** * Adjust row of Mixing Matrix if a negative mass occurs in LHA file * @param id The PDG code of the particle with a negative mass */ virtual void adjustMixingMatrix(long id); private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MSSM & operator=(const MSSM &); private: /** * Third generation squark and slepton mixing matrices */ //@{ /** * The \f$\tilde{t}\f$ mixing matrix */ MixingMatrixPtr theStopMix; /** * The \f$\tilde{b}\f$ mixing matrix */ MixingMatrixPtr theSbotMix; /** * The \f$\tilde{\tau}\f$ mixing matrix */ MixingMatrixPtr theStauMix; //@} /** * Trilinear couplings stored as vector of complex numbers to make use * of routine already available to read complex matrices */ //@{ /** * For the up type squarks */ complex theAtop; /** * For the down type squarks */ complex theAbottom; /** * For the charged sleptons */ complex theAtau; //@} /** * Value of higgs mixing angle. */ double theAlpha; /** * Higgs mixing matrix */ MixingMatrixPtr theHiggsMix; }; } #endif /* HERWIG_MSSM_H */ herwig++-2.6.0.orig/Models/Susy/SSCNWVertex.h0000644000175000017500000000753211754474773021437 0ustar sylvestresylvestre// -*- C++ -*- // // SSCNWVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSCNWVertex_H #define HERWIG_SSCNWVertex_H // // This is the declaration of the SSCNWVertex class. // #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "SusyBase.h" namespace Herwig { using namespace ThePEG; /** * This class is implements the coupling of a W boson to a chargino and a * neutralino. It inherits from FFVVertex and implements the setCoupling method. * * @see \ref SSCNWVertexInterfaces "The interfaces" * defined for SSCNWVertex. * @see FFVVertex */ class SSCNWVertex: public FFVVertex { public: /** * The default constructor. */ SSCNWVertex(); 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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSCNWVertex & operator=(const SSCNWVertex &); private: /** * Store \f$sin(\theta_W)\f$ */ double _sw; /** * Store the neutralino mixing matrix */ tMixingMatrixPtr _theN; /** * Store the U-type chargino mixing matrix */ tMixingMatrixPtr _theU; /** * Store the V-type chargino mixing matrix */ tMixingMatrixPtr _theV; /** * The value of the coupling when it was last evaluated */ Complex _couplast; /** * The scale at which the coupling was last evaluated */ Energy2 _q2last; /** * The id of the first chargino the last time the vertex was evaluated */ long _id1last; /** * The id of the second chargino the last time the vertex was evaluated */ long _id2last; /** * The value of the left coupling when it was last evaluated */ Complex _leftlast; /** * The value of the right coupling when it was last evaluated */ Complex _rightlast; }; } #endif /* HERWIG_SSCNWVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSHSFSFVertex.cc0000644000175000017500000003133611754474773022016 0ustar sylvestresylvestre// -*- C++ -*- // // SSHSFSFVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSHSFSFVertex class. // #include "SSHSFSFVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include using namespace ThePEG::Helicity; using namespace Herwig; SSHSFSFVertex::SSHSFSFVertex() : theMix(3), theTriC(9, complex(ZERO)), theSinA(0.0), theCosA(0.0), theSinB(0.0), theCosB(0.0), theTanB(0.0), theSinAB(0.0), theCosAB(0.0), theMw(ZERO), theMz(ZERO), theMu(ZERO), theSw(0.0), theCw(0.0), theCoupLast(ZERO), theq2Last(ZERO), theHLast(0), theSF1Last(0), theSF2Last(0) { orderInGem(1); orderInGs(0); } void SSHSFSFVertex::doinit() { int higgs = 25; //h0,H0 for(unsigned int i = 0; i < 2; ++i) { if( i == 1 ) higgs = 35; //quarks for(unsigned int j = 1; j < 7; ++j) { long lj = 1000000 + j; long rj = 2000000 + j; //LLbar addToList(higgs,lj,-lj); //RRbar addToList(higgs,rj,-rj); //LRbar addToList(higgs,lj,-rj); //RLbar addToList(higgs,rj,-lj); } for(unsigned int j = 11; j < 17; ++j) { long lj = 1000000 + j; long rj = 2000000 + j; addToList(higgs,lj,-lj); if( j % 2 != 0) { addToList(higgs,rj,-rj); //LRbar addToList(higgs,lj,-rj); //RLbar addToList(higgs,rj,-lj); } } } //A0 for(unsigned int j = 1; j < 7; ++j) { long lj = 1000000 + j; long rj = 2000000 + j; //LRbar addToList(36,lj,-rj); //RLbar addToList(36,rj,-lj); } for(unsigned int j = 11; j < 17; j += 2) { long lj = 1000000 + j; long rj = 2000000 + j; addToList(36,lj,-rj); addToList(36,rj,-lj); } //outgoing H+ for(long ii = 2; ii < 7; ii += 2) { //LL addToList(37, 999999 + ii, -1000000 - ii); //RR addToList(37, 1999999 + ii, -2000000 - ii); //RL addToList(37, 1999999 + ii, -1000000 - ii); //LR addToList(37, 999999 + ii, -2000000 - ii); } for(long ii = 11; ii < 17; ii += 2) { addToList(37, 1000000 + ii, -1000001 - ii); addToList(37, 2000000 + ii, -1000001 - ii); } //outgoing H- for(long ii = 2; ii < 7; ii += 2) { //LL addToList(-37, 1000000 + ii, -999999 - ii); //RR addToList(-37, 2000000 + ii, -1999999 - ii); //RL addToList(-37, 1000000 + ii, -1999999 - ii); //LR addToList(-37, 2000000 + ii, -999999 - ii); } for(long ii = 11; ii < 17; ii += 2) { addToList(-37, 1000001 + ii, -1000000 - ii); addToList(-37, 1000001 + ii, -2000000 - ii); } SSSVertex::doinit(); tMSSMPtr theMSSM = dynamic_ptr_cast(generator()->standardModel()); if( !theMSSM ) throw InitException() << "SSHSFSFVertex::doinit - A problem occurred" << "while trying to cast the SM pointer to " << "a Susy one." << Exception::abortnow; //mixing vector should have been sized correctly already assert( theMix.size() == 3 ); theMix[0] = theMSSM->stopMix(); theMix[1] = theMSSM->sbottomMix(); theMix[2] = theMSSM->stauMix(); if(!theMix[0] || !theMix[1] || !theMix[2]) throw InitException() << "SSHSFSFVertex::doinit - " << "A null mixing matrix pointer. stop: " << theMix[0] << " sbottom: " << theMix[1] << " stau: " << theMix[2] << Exception::abortnow; //trilinear vector should have been sized correctly already assert( theTriC.size() == 9 ); //vector has been zeroed in constructor theTriC[4]=theMSSM->bottomTrilinear().real(); theTriC[5]=theMSSM->topTrilinear().real(); theTriC[8]=theMSSM->tauTrilinear().real(); //Masses theMw = getParticleData(ParticleID::Wplus)->mass(); theMz = getParticleData(ParticleID::Z0)->mass(); //parameters theSinA = sin(theMSSM->higgsMixingAngle()); theCosA = cos(theMSSM->higgsMixingAngle()); theTanB = theMSSM->tanBeta(); theMu = theMSSM->muParameter(); theSinB = theTanB/sqrt(1. + sqr(theTanB)); theCosB = sqrt( 1. - sqr(theSinB) ); theSinAB = theSinA*theCosB + theCosA*theSinB; theCosAB = theCosA*theCosB - theSinA*theSinB; theSw = sqrt(sin2ThetaW()); theCw = sqrt(1. - sin2ThetaW()); } void SSHSFSFVertex::persistentOutput(PersistentOStream & os) const { os << theMix << theSinA << theCosA << theSinB << theCosB << theTanB << ounit(theMu, GeV) << theSinAB << theCosAB << ounit(theMw,GeV) << ounit(theMz,GeV) << theSw << theCw << ounit(theTriC,GeV); } void SSHSFSFVertex::persistentInput(PersistentIStream & is, int) { is >> theMix >> theSinA >> theCosA >> theSinB >> theCosB >> theTanB >> iunit(theMu, GeV) >> theSinAB >> theCosAB >> iunit(theMw,GeV) >> iunit(theMz,GeV) >> theSw >> theCw >> iunit(theTriC,GeV); } ClassDescription SSHSFSFVertex::initSSHSFSFVertex; // Definition of the static class description member. void SSHSFSFVertex::Init() { static ClassDocumentation documentation ("The coupling of an MSSM Higgs to a pair of sfermions."); } void SSHSFSFVertex::setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3) { // extract particle ids long higgs(part1->id()), sq1(part2->id()), sq2(part3->id()); // higgs first if(abs(sq1)<100) swap(higgs,sq1); if(abs(sq2)<100) swap(higgs,sq2); // squark second if(sq1<0) swap(sq1,sq2); assert( higgs == 25 || higgs == 35 || higgs == 36 || abs(higgs) == 37 ); sq2 *=-1; assert(sq1>0&&sq2>0); // running coupling if( q2 != theq2Last || thegLast==0.) { thegLast = weakCoupling(q2); theq2Last = q2; } if( higgs == theHLast && sq1 == theSF1Last && sq2 == theSF2Last) { norm(thegLast*theCoupLast*UnitRemoval::InvE); return; } theHLast = higgs; theSF1Last = sq1; theSF2Last = sq2; if( abs(higgs) == ParticleID::Hplus ) chargedHiggs(sq1, sq2); else { long sm(0); unsigned int alpha(sq1/1000000 - 1), beta(sq2/1000000 - 1); if( sq1/1000000 == 2 ) sm = sq1 - 2000000; else sm = sq1 - 1000000; if( sm < 7 ) { if( sm % 2 == 0 ) upSF(higgs, sm, alpha, beta); else downSF(higgs, sm, alpha, beta); } else leptonSF(higgs, sm, alpha, beta); } norm(thegLast*theCoupLast*UnitRemoval::InvE); } void SSHSFSFVertex::downSF(long higgs, long sm, unsigned int alpha, unsigned int beta) { assert( sm < 7 && sm % 2 != 0); Energy fmass = getParticleData(sm)->mass(); double mfacta = 0.5*fmass/theMw; if( higgs == ParticleID::A0 ) { theCoupLast = -Complex(0.,1.)*mfacta*(theTriC[sm - 1]*theTanB + theMu); if(alphastandardModel()->ed()*theSw*theSw; //mixing parameters Complex q1a(0.), q1b(0.), q2a(0.), q2b(0.); if( sm == 1 || sm == 3) { q1a = (alpha == 0) ? 1.0 : 0.0; q1b = (beta == 0) ? 1.0 : 0.0; q2a = (alpha == 0) ? 0.0 : 1.0; q2b = (beta == 0) ? 0.0 : 1.0; } else { q1a = (*theMix[1])(alpha, 0); q1b = (*theMix[1])(beta, 0); q2a = (*theMix[1])(alpha, 1); q2b = (*theMix[1])(beta, 1); } Complex fbrac = (q1a*q1b*(0.5 + factb) - factb*q2a*q2b); Complex sbrac = (q1a*q1b + q2a*q2b); Complex tbrac = (q2a*q1b + q1a*q2b); if( higgs == ParticleID::h0) { theCoupLast = -facta*theSinAB*fbrac + mfactb*theSinA*sbrac + mfacta*(theTriC[sm - 1]*theSinA + theMu*theCosA)*tbrac/theCosB; } else if( higgs == ParticleID::H0 ) { theCoupLast = facta*theCosAB*fbrac - mfactb*theCosA*sbrac + mfacta*(theMu*theSinA - theTriC[sm - 1]*theCosA)*tbrac/theCosB; } else throw HelicityConsistencyError() << "SSHSFSFVertex::downSF - Unrecognised higgs particle " << higgs << Exception::warning; } void SSHSFSFVertex::upSF(long higgs, long sm, unsigned int alpha, unsigned int beta) { assert( sm < 7 && sm % 2 == 0); Energy fmass = getParticleData(sm)->mass(); double mfacta = 0.5*fmass/theMw; if( higgs == ParticleID::A0 ){ theCoupLast = -Complex(0.,1.)*mfacta*(theTriC[sm - 1]/theTanB + theMu); if(alphastandardModel()->eu()*sqr(theSw); //mixing parameters Complex q1a(0.), q1b(0.), q2a(0.), q2b(0.); if( sm == 2 || sm == 4) { q1a = (alpha == 0) ? 1.0 : 0.0; q1b = (beta == 0) ? 1.0 : 0.0; q2a = (alpha == 0) ? 0.0 : 1.0; q2b = (beta == 0) ? 0.0 : 1.0; } else { q1a = (*theMix[0])(alpha, 0); q1b = (*theMix[0])(beta , 0); q2a = (*theMix[0])(alpha, 1); q2b = (*theMix[0])(beta , 1); } Complex fbrac = (q1a*q1b*(0.5 - factb) + factb*q2a*q2b); Complex sbrac = (q1a*q1b + q2a*q2b); Complex tbrac = (q2a*q1b + q1a*q2b); if( higgs == ParticleID::h0) { theCoupLast = facta*theSinAB*fbrac - mfactb*theCosA*sbrac - mfacta*(theTriC[sm - 1]*theCosA + theMu*theSinA)*tbrac/theSinB; } else if( higgs == ParticleID::H0 ) { theCoupLast = -facta*theCosAB*fbrac - mfactb*theSinA*sbrac - mfacta*(theTriC[sm - 1]*theSinA - theMu*theCosA )*tbrac/theSinB; } else assert(false); } void SSHSFSFVertex::leptonSF(long higgs, long sm, unsigned int alpha, unsigned int beta) { assert( sm >= 11 && sm <= 16 ); Energy facta = theMz/theCw; if( sm % 2 == 0 ) { theCoupLast = complex(facta/2.); if( higgs == ParticleID::h0) theCoupLast *= theSinAB; else theCoupLast *= -theCosAB; return; } Energy fmass = getParticleData(sm)->mass(); double mfacta = fmass/2./theMw; if( higgs == ParticleID::A0 ) { theCoupLast = -Complex(0.,1.)*mfacta*(theTriC[(sm + 1)/2]*theTanB + theMu); if(alphamass(); Energy2 facta = sqr(theMw)*2.*theSinB*theCosB; if( smd == 11 || smd == 13 || smd == 15) { Complex l1b = (beta == 0) ? 1.0 : 0.0; Complex l2b = (beta == 0) ? 0.0 : 1.0; if( smd == 15 ) { l1b = (*theMix[2])(beta, 0); l2b = (*theMix[2])(beta, 1); } theCoupLast = ( l1b*(mfd*mfd*theTanB - facta) + l2b*mfd*(theTriC[(smd + 1)/2]*theTanB + theMu) )/theMw/sqrt(2.); } else { unsigned int alpha(0); if( id1/1000000 == 2 ) alpha = 1; else alpha = 0; long smu = (alpha == 0) ? id1 - 1000000 : id1 - 2000000; Energy mfu = getParticleData(smu)->mass(); Complex q1a(0.0), q1b(0.0), q2a(0.0), q2b(0.0); if( smu == 2 || smu == 4 ) { q1a = (alpha == 0) ? 1.0 : 0.0; q2a = (alpha == 0) ? 0.0 : 1.0; } else { q1a = (*theMix[0])(alpha, 0); q2a = (*theMix[0])(1, alpha); } if( smd == 1 || smd == 3 ) { q1b = (beta == 0) ? 1.0 : 0.0; q2b = (beta == 0) ? 0.0 : 1.0; } else { q1b = (*theMix[1])(0, beta); q2b = (*theMix[1])(1, beta); } theCoupLast = ( q1a*q1b*(mfd*mfd*theTanB + mfu*mfu/theTanB - facta) + q2a*q2b*mfu*mfd*(theTanB + (1./theTanB)) + q1a*q1b*mfd*(theTriC[smd - 1]*theTanB + theMu) + q2a*q1b*mfu*(theMu + theTriC[(smu + 1)/2]/theTanB) )/theMw/sqrt(2.); } } herwig++-2.6.0.orig/Models/Susy/Makefile.am0000644000175000017500000000217611755411241021204 0ustar sylvestresylvestreSUBDIRS = NMSSM if WANT_MSSM pkglib_LTLIBRARIES = HwSusy.la endif HwSusy_la_SOURCES = SusyBase.cc SusyBase.h SusyBase.fh \ MSSM.cc MSSM.h MSSM.fh\ MixingMatrix.h MixingMatrix.fh MixingMatrix.cc\ SSCFSVertex.cc SSCFSVertex.h \ SSGFSVertex.cc SSGFSVertex.h \ SSHSFSFVertex.cc SSHSFSFVertex.h \ SSNFSVertex.cc SSNFSVertex.h \ SSWSSVertex.cc SSWSSVertex.h \ SSGSSVertex.cc SSGSSVertex.h \ SSGGSQSQVertex.cc SSGGSQSQVertex.h \ SSGSGSGVertex.cc SSGSGSGVertex.h \ SSNNZVertex.cc SSNNZVertex.h \ SSCCZVertex.cc SSCCZVertex.h \ SSCNWVertex.cc SSCNWVertex.h \ SSFFHVertex.cc SSFFHVertex.h \ SSGOGOHVertex.cc SSGOGOHVertex.h \ SSWWHVertex.cc SSWWHVertex.h \ SSWWHHVertex.cc SSWWHHVertex.h \ SSWHHVertex.cc SSWHHVertex.h \ SSHHHVertex.cc SSHHHVertex.h \ SSHGGVertex.cc SSHGGVertex.h \ SSHPPVertex.cc SSHPPVertex.h \ SSNNPVertex.h SSNNPVertex.cc \ SSGNGVertex.h SSGNGVertex.cc \ SSNCTVertex.h SSNCTVertex.cc \ SSGVNHVertex.h SSGVNHVertex.cc\ SSGVNVVertex.h SSGVNVVertex.cc\ SSGVFSVertex.h SSGVFSVertex.cc HwSusy_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 9:0:0 herwig++-2.6.0.orig/Models/Susy/SSGOGOHVertex.h0000644000175000017500000001321611754474773021647 0ustar sylvestresylvestre// -*- C++ -*- // // SSGOGOHVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSGOGOHVertex_H #define HERWIG_SSGOGOHVertex_H // // This is the declaration of the SSGOGOHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h" #include "MSSM.h" namespace Herwig { /** * The is the coupling of higgs bosons in the MSSM to a pair * of SM fermions. * * @see \ref SSGOGOHVertexInterfaces "The interfaces" * defined for SSGOGOHVertex. */ class SSGOGOHVertex: public FFSVertex { public: /** * The default constructor. */ SSGOGOHVertex(); 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(); /** * Calculate the coupling for the vertex * @param q2 The scale to at which evaluate the coupling. * @param particle1 The first particle in the vertex. * @param particle2 The second particle in the vertex. * @param particle3 The third particle in the vertex. */ virtual void setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2, tcPDPtr particle3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSGOGOHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSGOGOHVertex & operator=(const SSGOGOHVertex &); private: /** * The mass of the \f$W\f$. */ Energy theMw; /** * The matrix \f$S_{ij}\f$ */ vector > theSij; /** * The matrix \f$Q_{ij}\f$ */ vector > theQij; /** * The matrix \f$Q_{ij}^{L'}\f$ */ vector > theQijLp; /** * The matrix \f$Q_{ij}^{R'}\f$ */ vector > theQijRp; /** * The matrix \f$S_{ij}^{''}\f$ */ vector > theSijdp; /** * The matrix \f$Q_{ij}^{''}\f$ */ vector > theQijdp; /** * The value of \f$\sin\alpha\f$ */ double theSa; /** * The value of \f$\sin\beta\f$ */ double theSb; /** * The value of \f$\cos\alpha\f$ */ double theCa; /** * The value of \f$\cos\beta\f$ */ double theCb; /** * The value of the coupling when it was last evaluated. */ Complex theCoupLast; /** * The value of the left-coupling when it was last evaluated. */ Complex theLLast; /** * The value of the right-coupling when it was last evaluated. */ Complex theRLast; /** * The ID of the last higgs for which the vertex was evaluated */ long theHLast; /** * The ID of the first gaugino when the coupling was las evaluated */ long theID1Last; /** * The ID of the first gaugino when the coupling was las evaluated */ long theID2Last; /** * The scale at which the coupling was last evaluated */ Energy2 theq2last; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSGOGOHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSGOGOHVertex. */ typedef ThePEG::Helicity::FFSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSGOGOHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSGOGOHVertex"; } /** * The name of a file containing the dynamic library where the class * SSGOGOHVertex is implemented. It may also include several, space-separated, * libraries if the class SSGOGOHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSGOGOHVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSFFHVertex.h0000644000175000017500000001201211754474773021400 0ustar sylvestresylvestre// -*- C++ -*- // // SSFFHVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSFFHVertex_H #define HERWIG_SSFFHVertex_H // // This is the declaration of the SSFFHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h" #include "MSSM.h" namespace Herwig { /** * The is the coupling of higgs bosons in the MSSM to a pair * of SM fermions. * * @see \ref SSFFHVertexInterfaces "The interfaces" * defined for SSFFHVertex. */ class SSFFHVertex: public FFSVertex { public: /** * The default constructor. */ SSFFHVertex(); /** @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(); /** * Calculate the coupling for the vertex * @param q2 The scale to at which evaluate the coupling. * @param particle1 The first particle in the vertex. * @param particle2 The second particle in the vertex. * @param particle3 The third particle in the vertex. */ virtual void setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2, tcPDPtr particle3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSFFHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSFFHVertex & operator=(const SSFFHVertex &); private: /** * Pointer to the SM object. */ tcMSSMPtr theMSSM; /** * The value of \f$\tan\beta\f$. */ double thetanb; /** * The mass of the \f$W\f$. */ Energy theMw; /** * The value of \f$\sin\theta_W\f$ */ double theSw; /** * The value of \f$\sin\alpha\f$ */ double theSa; /** * The value of \f$\sin\beta\f$ */ double theSb; /** * The value of \f$\cos\alpha\f$ */ double theCa; /** * The value of \f$\cos\beta\f$ */ double theCb; /** * The ID of the last fermion for which the vertex was evaluated */ pair theFLast; /** * The value of \f$ \frac{e}{\sin\theta_W} \f$ when it was last evaluated. */ double theGlast; /** * The scale at which then coupling was last evaluated. */ Energy2 theq2last; /** * Values of the masses */ pair theMassLast; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSFFHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSFFHVertex. */ typedef ThePEG::Helicity::FFSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSFFHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSFFHVertex"; } /** * The name of a file containing the dynamic library where the class * SSFFHVertex is implemented. It may also include several, space-separated, * libraries if the class SSFFHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSFFHVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSHPPVertex.h0000644000175000017500000001757611754474773021450 0ustar sylvestresylvestre// -*- C++ -*- // // SSHPPVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSHPPVertex_H #define HERWIG_SSHPPVertex_H // // This is the declaration of the SSHPPVertex class. // #include "Herwig++/Models/General/VVSLoopVertex.h" #include "MSSM.h" namespace Herwig { /** * This class implements the effective vertex coupling a higgs * to a pair of photons in the MSSM. The loops include third generation * sfermions and fermions, \f$W^\pm\f$ and \f$H^\pm\f$ * * @see \ref SSHPPVertexInterfaces "The interfaces" * defined for SSHPPVertex. */ class SSHPPVertex: public VVSLoopVertex { public: /** * The default constructor. */ SSHPPVertex(); /** @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(); /** * Calculate couplings *@param q2 Scale at which to evaluate coupling *@param particle1 ParticleData pointer to first particle *@param particle2 ParticleData pointer to second particle *@param particle3 ParticleData pointer to third particle */ virtual void setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2, tcPDPtr particle3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSHPPVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSHPPVertex & operator=(const SSHPPVertex &); private: /** * A pointer to the MSSM object */ tMSSMPtr theMSSM; /** * Value of \f$\sin\theta_W\f$ */ double theSw; /** * The mass of the \f$W\f$ boson. */ Energy theMw; /** * The factor \f$\frac{M_Z}{\cos\theta_W}\f$ */ Energy theZfact; /** * The mixing matrix factor \f$Q^{2i}_{11}Q^{2i}_{11}\f$ * for the \f$\tilde{t}\f$ */ Complex theQt1L; /** * The mixing matrix factor \f$Q^{2i}_{12}Q^{2i}_{12}\f$ * for the \f$\tilde{t}\f$ */ Complex theQt1R; /** * The mixing matrix factor \f$Q^{2i}_{12}Q^{2i}_{12}\f$ * for the \f$\tilde{t}\f$ */ Complex theQt1LR; /** * The mixing matrix factor \f$Q^{2i}_{21}Q^{2i}_{21}\f$ * for the \f$\tilde{t}\f$ */ Complex theQt2L; /** * The mixing matrix factor \f$Q^{2i}_{22}Q^{2i}_{22}\f$ * for the \f$\tilde{t}\f$ */ Complex theQt2R; /** * The mixing matrix factor \f$Q^{2i}_{22}Q^{2i}_{22}\f$ * for the \f$\tilde{t}\f$ */ Complex theQt2LR; /** * The mixing matrix factor \f$Q^{2i-1}_{11}Q^{2i-1}_{11}\f$ * for the \f$\tilde{b}\f$ */ Complex theQb1L; /** * The mixing matrix factor \f$Q^{2i-1}_{12}Q^{2i-1}_{12}\f$ * for the \f$\tilde{b}\f$ */ Complex theQb1R; /** * The mixing matrix factor \f$Q^{2i-1}_{12}Q^{2i-1}_{12}\f$ * for the \f$\tilde{b}\f$ */ Complex theQb1LR; /** * The mixing matrix factor \f$Q^{2i-1}_{21}Q^{2i-1}_{21}\f$ * for the \f$\tilde{b}\f$ */ Complex theQb2L; /** * The mixing matrix factor \f$Q^{2i-1}_{22}Q^{2i-1}_{22}\f$ * for the \f$\tilde{b}\f$ */ Complex theQb2R; /** * The mixing matrix factor \f$Q^{2i-1}_{22}Q^{2i-1}_{22}\f$ * for the \f$\tilde{b}\f$ */ Complex theQb2LR; /** * The mixing matrix factor \f$L^{2i}_{11}L^{2i}_{11}\f$ * for the \f$\tilde{\tau}\f$ */ Complex theLt1L; /** * The mixing matrix factor \f$L^{2i}_{12}L^{2i}_{12}\f$ * for the \f$\tilde{\tau}\f$ */ Complex theLt1R; /** * The mixing matrix factor \f$L^{2i}_{12}L^{2i}_{12}\f$ * for the \f$\tilde{\tau}\f$ */ Complex theLt1LR; /** * The mixing matrix factor \f$L^{2i}_{21}L^{2i}_{21}\f$ * for the \f$\tilde{\tau}\f$ */ Complex theLt2L; /** * The mixing matrix factor \f$L^{2i}_{22}L^{2i}_{22}\f$ * for the \f$\tilde{\tau}\f$ */ Complex theLt2R; /** * The mixing matrix factor \f$L^{2i}_{22}L^{2i}_{22}\f$ * for the \f$\tilde{\tau}\f$ */ Complex theLt2LR; /** * A pointer to the top quark ParticleData object */ tPDPtr thetop; /** * A pointer to the bottom quark ParticleData object */ tPDPtr thebot; /** * A pointer to the tau lepton ParticleData object */ tPDPtr thetau; /** * The sfermion masses */ vector theSfmass; /** * The value of \f$ \tan\beta \f$ */ double theTanB; /** * The value of \f$ \sin\alpha \f$ */ double theSinA; /** * The value of \f$ \cos\alpha \f$ */ double theCosA; /** * The value of \f$ \sin\beta \f$ */ double theSinB; /** * The value of \f$ \cos\beta \f$ */ double theCosB; /** * The value of \f$ \sin(\alpha + \beta) \f$ */ double theSinApB; /** * The value of \f$ \cos(\alpha + \beta) \f$ */ double theCosApB; /** * The value of \f$ \sin(\beta-\alpha) \f$ */ double theSinBmA; /** * The value of \f$ \cos(\beta-\alpha) \f$ */ double theCosBmA; /** * The U mixing matrix */ tMixingMatrixPtr theU; /** * The V mixing matrix */ tMixingMatrixPtr theV; /** * Last value of the coupling calculated */ Complex theCouplast; /** * The scale \f$q^2\f$ at which coupling was last evaluated */ Energy2 theq2last; /** * Whether we have calculated the tensor coefficents yet */ bool theHaveCoeff; /** * ID of the higgs */ long theLastID; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSHPPVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSHPPVertex. */ typedef Herwig::VVSLoopVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSHPPVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSHPPVertex"; } /** Return the name of the shared library be loaded to get * access to the SSHPPVertex class and every other class it uses * (except the base class). */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSHPPVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSGSSVertex.h0000644000175000017500000000507211754474773021441 0ustar sylvestresylvestre// -*- C++ -*- // // SSGSSVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSGSSVertex_H #define HERWIG_SSGSSVertex_H // // This is the declaration of the SSGSSVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h" #include "SusyBase.h" namespace Herwig { using namespace ThePEG; /** * The SSGSSVertex implements the coupling of a gluon to 2 sfermions. * It inherits from VSSVertex and implements the setCoupling method. * * @see VSSVertex */ class SSGSSVertex: public VSSVertex { public: /** * The default constructor. */ SSGSSVertex(); /** * 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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSGSSVertex & operator=(const SSGSSVertex &); private: /** * Store the value of the coupling when last evaluated */ Complex _couplast; /** * Store the scale at which coupling was last evaluated */ Energy2 _q2last; }; } #endif /* HERWIG_SSGSSVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSNCTVertex.cc0000644000175000017500000001314211754474773021564 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SSNCTVertex class. // #include "SSNCTVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Models/StandardModel/StandardCKM.h" using namespace Herwig; SSNCTVertex::SSNCTVertex() : MX_(2.e16*GeV), sw_(0.), cw_(0.), mw_(ZERO), sb_(0.), cb_(0.), q2last_(), couplast_(0.), leftlast_(0.), rightlast_(0.), idlast_(0), epsilon_(0.) { orderInGem(1); orderInGs(0); } IBPtr SSNCTVertex::clone() const { return new_ptr(*this); } IBPtr SSNCTVertex::fullclone() const { return new_ptr(*this); } void SSNCTVertex::persistentOutput(PersistentOStream & os) const { os << ounit(MX_,GeV) << nmix_ << sw_ << cw_ << ounit(mw_,GeV) << sb_ << cb_ << ounit(q2last_,GeV2) << couplast_ << leftlast_ << rightlast_ << idlast_ << epsilon_; } void SSNCTVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(MX_,GeV) >> nmix_ >> sw_ >> cw_ >> iunit(mw_,GeV) >> sb_ >> cb_ >> iunit(q2last_,GeV2) >> couplast_ >> leftlast_ >> rightlast_ >> idlast_ >> epsilon_; } ClassDescription SSNCTVertex::initSSNCTVertex; // Definition of the static class description member. void SSNCTVertex::Init() { static ClassDocumentation documentation ("The SSNCTVertex class implements the flavour violating" " coupling of the top quark to a charm quark and a neutralino"); static Parameter interfaceMX ("MX", "Unification scale for the loop", &SSNCTVertex::MX_, GeV, 2.e16*GeV, 1.e14*GeV, 1.e20*GeV, false, false, Interface::limited); } void SSNCTVertex::doinit() { long neut[5] = {1000022, 1000023, 1000025, 1000035, 1000045}; for(unsigned int nl = 0; nl < 5; ++nl) { addToList( neut[nl], 4, -1000006 ); addToList( neut[nl], -4, 1000006 ); } FFSVertex::doinit(); // get the MSSM MSSMPtr model = dynamic_ptr_cast(generator()->standardModel()); if(!model) throw InitException() << "SSNCTVertex::doinit() - " << "The model pointer is null." << Exception::abortnow; // standard SUSY couplings // neutralino mixing nmix_ = model->neutralinoMix(); if(!nmix_) throw InitException() << "SSNCTVertex::doinit() " << "The neutralino mixing matrix pointer is null." << Exception::abortnow; sw_ = sqrt(sin2ThetaW()); mw_ = getParticleData(24)->mass(); double tb = model->tanBeta(); cw_ = sqrt(1. - sqr(sw_)); sb_ = tb/sqrt(1 + sqr(tb)); cb_ = sqrt(1 - sqr(sb_)); // susy breaking scale Energy mSUSY = sqrt(max(sqr(getParticleData(ParticleID::Z0)->mass()), model->Mq3L()*model->MtR())); // CKM factor ThePEG::Ptr::transient_const_pointer CKMptr = ThePEG::dynamic_ptr_cast< ThePEG::Ptr:: transient_const_pointer>(model->CKM()); if(!CKMptr) throw Exception() << "Must have access to the Herwig::StandardCKM object" << "for the CKM matrix in SSNCTVertex::doinit()" << Exception::runerror; vector< vector > CKM; CKM = CKMptr->getUnsquaredMatrix(generator()->standardModel()->families()); // SM masses Energy mb = getParticleData(ParticleID::b)->mass(); Energy mt = getParticleData(ParticleID::t)->mass(); // squark masses Energy mt1 = getParticleData(1000006)->mass(); Energy mcL = getParticleData(1000004)->mass(); // mixing parameter Complex pre = sqr(weakCoupling(sqr(mSUSY)))/16./sqr(Constants::pi)* log(MX_/mSUSY)*sqr(double(mb/mw_))/sqr(cb_)*conj(CKM[2][2])*CKM[1][2]; complex deltaL = -0.5*pre*(sqr(model->Mq2L())+sqr(model->Mq3L()) + 2.*model->Mh12()+2.*sqr(model->MbR()) + 2.*real( model->bottomTrilinear()* conj(model->bottomTrilinear()))); complex deltaR = pre*mt*conj(model->bottomTrilinear()); if(abs(mt1-mcL)/abs(mt1+mcL)<1e-10) { epsilon_ = 0.; } else { epsilon_ = (deltaL*(*model->stopMix())(0,0)- deltaR*(*model->stopMix())(0,1))/(sqr(mt1)-sqr(mcL)); } } void SSNCTVertex::setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr ) { long ism(abs(part1->id())), ineut(abs(part2->id())); tcPDPtr smfermion = part1; if( ism / 1000000 == 1 ) { swap( ism, ineut); smfermion = part2; } if(q2!= q2last_ || couplast_==0.) { couplast_ = -sqrt(2)*weakCoupling(q2); q2last_=q2; } norm(couplast_); if( ineut != idlast_) { idlast_ = ineut; // determine neutralino unsigned nl(0); switch( ineut ) { case 1000022 : nl = 0; break; case 1000023 : nl = 1; break; case 1000025 : nl = 2; break; case 1000035 : nl = 3; break; case 1000045 : nl = 4; break; default : assert(false); } // common primed neutralino matrices Complex n2prime = (*nmix_)(nl,1)*cw_ - (*nmix_)(nl,0)*sw_; Complex n1prime = (*nmix_)(nl,0)*cw_ + (*nmix_)(nl,1)*sw_; tcPDPtr smf = getParticleData(ism); double qf = smf->charge()/eplus; //Complex bracketl = qf*sw_*( conj(n1prime) - sw_*conj(n2prime)/cw_ ); double lambda(0.); //neutralino mixing element Complex nlf(0.); lambda = -0.5 + qf*sqr(sw_); nlf = (*nmix_)(nl,3); Complex bracketr = sw_*qf*n1prime - n2prime*lambda/cw_; leftlast_ = 0.; rightlast_ = epsilon_*bracketr; } //determine the helicity order of the vertex if( smfermion->id() < 0 ) { left(conj(rightlast_)); right(conj(leftlast_)); } else { left(leftlast_); right(rightlast_); } } herwig++-2.6.0.orig/Models/Susy/SSNCTVertex.h0000644000175000017500000001140411754474773021425 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_SSNCTVertex_H #define HERWIG_SSNCTVertex_H // // This is the declaration of the SSNCTVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h" #include "MSSM.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the SSNCTVertex class. * * @see \ref SSNCTVertexInterfaces "The interfaces" * defined for SSNCTVertex. */ class SSNCTVertex: public Helicity::FFSVertex { public: /** * The default constructor. */ SSNCTVertex(); 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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSNCTVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSNCTVertex & operator=(const SSNCTVertex &); private: /** * High scale for the loops */ Energy MX_; /** * Pointer to the neutralino mixing matrix */ tMixingMatrixPtr nmix_; /** * \f$\sin(\theta_w)\f$ */ double sw_; /** * \f$\cos(\theta_w)\f$ */ double cw_; /** * Mass of the W */ Energy mw_; /** * \f$\sin(\beta)\f$ */ double sb_; /** * \f$\cos(\beta)\f$ */ double cb_; /** * The scale at which the coupling was last evaluated. */ Energy2 q2last_; /** * The value of the normalisation when it was evaluated at _q2last */ Complex couplast_; /** * Store the value of the left coupling when it was last evaluated */ Complex leftlast_; /** * Store the value of the right coupling when it was last evaluated */ Complex rightlast_; /** * Store the id of the last neutralino to be evaluate */ long idlast_; /** * Mixing parameter */ Complex epsilon_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSNCTVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSNCTVertex. */ typedef Helicity::FFSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSNCTVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSNCTVertex"; } /** * The name of a file containing the dynamic library where the class * SSNCTVertex is implemented. It may also include several, space-separated, * libraries if the class SSNCTVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSNCTVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSGGSQSQVertex.cc0000644000175000017500000000356011754474773022150 0ustar sylvestresylvestre// -*- C++ -*- // // SSGGSQSQVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSGGSQSQVertex class. // #include "SSGGSQSQVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace ThePEG::Helicity; using namespace Herwig; SSGGSQSQVertex::SSGGSQSQVertex() : q2last_(),couplast_(0.) {} // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeNoPIOClass describeSSGGSQSQVertex("Herwig::SSGGSQSQVertex", "HwSusy.so"); void SSGGSQSQVertex::Init() { static ClassDocumentation documentation ("This implements the gluon-gluon-squark-squark vertex."); } void SSGGSQSQVertex::setCoupling(Energy2 q2, tcPDPtr, tcPDPtr, tcPDPtr, tcPDPtr) { if(q2 != q2last_ || couplast_ == 0.) { couplast_ = sqr(strongCoupling(q2)); q2last_ = q2; } norm(couplast_); } void SSGGSQSQVertex::doinit() { //L-L squarks for(long ix=1000001;ix<1000007;++ix) { addToList(21,21,ix,-ix); } //R-R squarks for(long ix=2000001;ix<2000007;++ix) { addToList(21,21,ix,-ix); } orderInGs(2); orderInGem(0); VVSSVertex::doinit(); } herwig++-2.6.0.orig/Models/Susy/SSCCZVertex.h0000644000175000017500000000760111754474773021424 0ustar sylvestresylvestre// -*- C++ -*- // // SSCCZVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSCCZVertex_H #define HERWIG_SSCCZVertex_H // // This is the declaration of the SSCCZVertex class. // #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "SusyBase.h" namespace Herwig { using namespace ThePEG; /** * This class implements the coupling of a \f$\gamma/Z^0\f$ to a pair of * charginos. It inherits from FFVVertex and implements the setCoupling method. * * @see \ref SSCCZVertexInterfaces "The interfaces" * defined for SSCCZVertex. * @see FFVVertex */ class SSCCZVertex: public FFVVertex { public: /** * The default constructor. */ SSCCZVertex(); 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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSCCZVertex & operator=(const SSCCZVertex &); private: /** * Value of \f$sin^2(\theta_W)\f$ */ double _sw2; /** * Value of \f$cos(\theta_W)\f$ */ double _cw; /** * The U mixing matrix */ tMixingMatrixPtr _theU; /** * The V mixing matrix */ tMixingMatrixPtr _theV; /** * The value of the coupling when it was last evaluated */ Complex _couplast; /** * The scale at which the coupling was last evaluated */ Energy2 _q2last; /** * The id of the first chargino the last time the vertex was evaluated */ long _id1last; /** * The id of the second chargino the last time the vertex was evaluated */ long _id2last; /** * The value of the left coupling when it was last evaluated */ Complex _leftlast; /** * The value of the right coupling when it was last evaluated */ Complex _rightlast; /** * The ID of the gauge boson when the vertex was last evaluated */ long _gblast; }; } #endif /* HERWIG_SSCCZVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSNNPVertex.cc0000644000175000017500000002770511754474773021605 0ustar sylvestresylvestre// -*- C++ -*- // // SSNNPVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSNNPVertex class. // #include "SSNNPVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Models/Susy/MixingMatrix.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/Utilities/Maths.h" using namespace ThePEG::Helicity; using namespace Herwig; SSNNPVertex::SSNNPVertex() : _sw(0.), _cw(0.), _id1last(0), _id2last(0), _q2last(ZERO), _couplast(0.), _leftlast(ZERO), _rightlast(ZERO) { orderInGem(3); orderInGs(0); } void SSNNPVertex::doinit() { int ineu[5] = {1000022,1000023,1000025,1000035,1000045}; for(unsigned int i = 0; i < 5; ++i) { for(unsigned int j = 0; j < 5; ++j) { addToList(ineu[i], ineu[j], 22); } } GeneralFFVVertex::doinit(); tMSSMPtr theSS = dynamic_ptr_cast(generator()->standardModel()); if(!theSS) throw InitException() << "SSNNPVertex::doinit() - " << "The model pointer is null." << Exception::abortnow; _theN = theSS->neutralinoMix(); _theU = theSS->charginoUMix(); _theV = theSS->charginoVMix(); if(!_theN || !_theU || ! _theV) throw InitException() << "SSNNPVertex::doinit - The neutralino " << "mixing matrix pointer is null." << Exception::abortnow; _sw = sqrt(sin2ThetaW()); _cw = sqrt(1 - _sw*_sw); _mw = getParticleData(ParticleID::Wplus)->mass(); double tb = theSS->tanBeta(); _sb = tb/sqrt(1 + sqr(tb)); _cb = sqrt(1 - sqr(_sb)); _stop = theSS->stopMix(); _sbot = theSS->sbottomMix(); _stau = theSS->stauMix(); } void SSNNPVertex::persistentOutput(PersistentOStream & os) const { os << _sw << _cw << _theN << ounit(_mw,GeV) << _sb << _cb << _stop << _sbot << _stau << _theU << _theV; } void SSNNPVertex::persistentInput(PersistentIStream & is, int) { is >> _sw >> _cw >> _theN >> iunit(_mw,GeV) >> _sb >> _cb >> _stop >> _sbot >> _stau >> _theU >> _theV; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeSSNNPVertex("Herwig::SSNNPVertex", "HwSusy.so"); void SSNNPVertex::Init() { static ClassDocumentation documentation ("The coupling of a Z-boson to a pair of neutralinos"); } void SSNNPVertex::setCoupling(Energy2 q2, tcPDPtr part1, #ifndef NDEBUG tcPDPtr part2,tcPDPtr part3) { #else tcPDPtr part2,tcPDPtr) { #endif int o[2]={1,0}; long in1 = part1->id(); long in2 = part2->id(); Energy Mj = part1->mass(); Energy Mi = part2->mass(); // checks of the particle ids assert(part3->id()==ParticleID::gamma); assert(in1 == ParticleID::SUSY_chi_10 || in1 == ParticleID::SUSY_chi_20 || in1 == ParticleID::SUSY_chi_30 || in1 == ParticleID::SUSY_chi_40 || in1 == 1000045 ); assert(in2 == ParticleID::SUSY_chi_10 || in2 == ParticleID::SUSY_chi_20 || in2 == ParticleID::SUSY_chi_30 || in2 == ParticleID::SUSY_chi_40 || in2 == 1000045 ); // normal couplings are zero setLeft (0.); setRight(0.); if(in1==in2) { _leftlast = ZERO; _rightlast = ZERO; setLeftSigma (_leftlast ); setRightSigma(_rightlast); return; } if(q2 != _q2last || _couplast==0.) { _q2last = q2; _couplast = sqr(weakCoupling(q2))* electroMagneticCoupling(q2)/32./sqr(Constants::pi); } if(in1 != _id1last || in2 != _id2last) { _leftlast = ZERO; _rightlast = ZERO; _id1last = in1; _id2last = in2; unsigned int neu1(in1 - 1000022), neu2(in2 - 1000022); if(neu1 > 1) neu1 = (in1-1000005)/10; if(neu2 > 1) neu2 = (in2-1000005)/10; Complex n1prime[2] = { (*_theN)(neu2,0)*_cw + (*_theN)(neu2,1)*_sw , (*_theN)(neu1,0)*_cw + (*_theN)(neu1,1)*_sw }; Complex n2prime[2] = { (*_theN)(neu2,1)*_cw - (*_theN)(neu2,0)*_sw , (*_theN)(neu1,1)*_cw - (*_theN)(neu1,0)*_sw }; // sfermion/fermion loops for(long iferm=1;iferm<16;++iferm) { if(iferm==7) iferm=11; if(iferm%2==0&&iferm>11) ++iferm; tcPDPtr smf = getParticleData(iferm); Energy mf = smf->mass(); double qf = smf->charge()/eplus; double y = 0.5*mf/_mw; Complex bracketl[2] = { qf*_sw*( conj(n1prime[0]) - _sw*conj(n2prime[0])/_cw ) , qf*_sw*( conj(n1prime[1]) - _sw*conj(n2prime[1])/_cw ) }; double lambda(0.); //neutralino mixing element Complex nlf[2]={0.,0.}; if( iferm % 2 == 0 ) { y /= _sb; lambda = -0.5 + qf*sqr(_sw); nlf[0] = (*_theN)(neu2,3); nlf[1] = (*_theN)(neu1,3); } else { y /= _cb; lambda = 0.5 + qf*sqr(_sw); nlf[0] = (*_theN)(neu2,2); nlf[1] = (*_theN)(neu1,2); } Complex bracketr[2] = { _sw*qf*n1prime[0] - n2prime[0]*lambda/_cw , _sw*qf*n1prime[1] - n2prime[1]*lambda/_cw }; for(long iy=0;iy<2;++iy) { long isf = 1000000*(1+iy)+iferm; Energy msf = getParticleData(isf)->mass(); if(mf+msf I,J,K,I2; loopIntegrals(Mi,Mj,msf,mf,I,J,K,I2); complex coup[2]; for(unsigned int ix=0;ix<2;++ix) { coup[ix] = Mj*(I2-K)*(g[0][ix]*g[1][o[ix]]-conj(g[0][o[ix]]*g[1][ix])) +Mi*K*(g[0][o[ix]]*g[1][ix]-conj(g[0][ix]*g[1][o[ix]])) +mf*I*(g[0][ix]*g[1][ix]-conj(g[0][o[ix]]*g[1][o[ix]])); } double fact = 4.*qf; if(iferm<=6) fact *=3.; _leftlast += fact*coup[0]; _rightlast += fact*coup[1]; } } // the chargino W contribution for(unsigned int ic=0;ic<2;++ic) { long id = ic==0 ? ParticleID::SUSY_chi_1plus : ParticleID::SUSY_chi_2plus; Energy Mk = getParticleData(id)->mass(); if(Mk+_mw I,J,K,I2; loopIntegrals(Mi,Mj,_mw,Mk,I,J,K,I2); Complex g[2][2]; for(unsigned int ix=0;ix<2;++ix) { unsigned int in = ix==0 ? neu2 : neu1; g[ix][0] = conj((*_theN)(in, 1))*(*_theV)(ic, 0) - conj((*_theN)(in, 3))*(*_theV)(ic, 1)/sqrt(2); g[ix][1] = (*_theN)(in, 1)*conj((*_theU)(ic, 0)) + (*_theN)(in, 2)*conj((*_theU)(ic, 1))/sqrt(2); } complex coup[2]; for(unsigned int ix=0;ix<2;++ix) { coup[ix] = Mj*(I2-J-K)*(g[0][o[ix]]*g[1][o[ix]]-conj(g[0][ix]*g[1][ix]))- Mi*(J-K)*(g[0][ix]*g[1][ix]-conj(g[0][o[ix]]*g[1][o[ix]]))+ 2.*Mk*J*(g[0][o[ix]]*g[1][ix]-conj(g[0][ix]*g[1][o[ix]])); } _leftlast += 4.*coup[0]; _rightlast += 4.*coup[1]; } // the chargino charged higgs contribution Energy mh = getParticleData(ParticleID::Hplus)->mass(); for(unsigned int ic=0;ic<2;++ic) { long id = ic==0 ? ParticleID::SUSY_chi_1plus : ParticleID::SUSY_chi_2plus; Energy Mk = getParticleData(id)->mass(); if(Mk+mh I,J,K,I2; loopIntegrals(Mi,Mj,mh,Mk,I,J,K,I2); Complex g[2][2]; for(unsigned int ix=0;ix<2;++ix) { unsigned int in = ix==0 ? neu2 : neu1; g[ix][0] = (*_theN)(in, 3)*(*_theV)(ic,0) + ((*_theN)(in,1) + (*_theN)(in,0)*_sw/_cw)* (*_theV)(ic,1)/sqrt(2); g[ix][0] *= _cb; g[ix][1] = conj((*_theN)(in, 2)*(*_theU)(ic,0) - ((*_theN)(in,1) + (*_theN)(in,0)*_sw/_cw)* (*_theU)(ic,1)/sqrt(2)); g[ix][1] *= _sb; } swap(g[1][0],g[1][1]); complex coup[2]; for(unsigned int ix=0;ix<2;++ix) { coup[ix] = Mj*(I2-K)*(g[0][ix]*g[1][o[ix]]-conj(g[0][o[ix]]*g[1][ix])) +Mi*K*(g[0][o[ix]]*g[1][ix]-conj(g[0][ix]*g[1][o[ix]])) +Mk*I*(g[0][ix]*g[1][ix]-conj(g[0][o[ix]]*g[1][o[ix]])); } _leftlast += 2.*coup[0]; _rightlast += 2.*coup[1]; } // the chargino goldstone contribution for(unsigned int ic=0;ic<2;++ic) { long id = ic==0 ? ParticleID::SUSY_chi_1plus : ParticleID::SUSY_chi_2plus; Energy Mk = getParticleData(id)->mass(); if(Mk+_mw I,J,K,I2; loopIntegrals(Mi,Mj,_mw,Mk,I,J,K,I2); Complex g[2][2]; for(unsigned int ix=0;ix<2;++ix) { unsigned int in = ix==0 ? neu2 : neu1; g[ix][0] = (*_theN)(in, 3)*(*_theV)(ic,0) + ((*_theN)(in,1) + (*_theN)(in,0)*_sw/_cw)* (*_theV)(ic,1)/sqrt(2); g[ix][0] *= _sb; g[ix][1] = conj((*_theN)(in, 2)*(*_theU)(ic,0) - ((*_theN)(in,1) + (*_theN)(in,0)*_sw/_cw)* (*_theU)(ic,1)/sqrt(2)); g[ix][1] *= _cb; } swap(g[1][0],g[1][1]); complex coup[2]; for(unsigned int ix=0;ix<2;++ix) { coup[ix] = Mj*(I2-K)*(g[0][ix]*g[1][o[ix]]-conj(g[0][o[ix]]*g[1][ix])) +Mi*K*(g[0][o[ix]]*g[1][ix]-conj(g[0][ix]*g[1][o[ix]])) +Mk*I*(g[0][ix]*g[1][ix]-conj(g[0][o[ix]]*g[1][o[ix]])); } _leftlast += 2.*coup[0]; _rightlast += 2.*coup[1]; } } norm(_couplast); setLeftSigma ( _leftlast); setRightSigma(_rightlast); } void SSNNPVertex::loopIntegrals(Energy Mi, Energy Mj, Energy M, Energy m, complex & I, complex & J, complex & K, complex & I2) { static const Complex ii(0.,1.); static const Energy eps(100.*MeV); Energy2 m2(sqr(m)),M2(sqr(M)),Mi2(sqr(Mi)),Mj2(sqr(Mj)); using Math::Li2; // general form if(m>eps) { Energy4 li = sqr(m2+M2-Mi2)-4.*sqr(m*M); complex rli = li rlj = lj> stop_ >> sbot_ >> stau_ >> iunit(MPlanck_,GeV); } void SSGVFSVertex::doinit() { //quarks for(long ix=1;ix<7;++ix){ addToList( ParticleID::SUSY_Gravitino, ix, -(1000000+ix) ); addToList( ParticleID::SUSY_Gravitino, ix, -(2000000+ix) ); addToList( ParticleID::SUSY_Gravitino, -ix, (1000000+ix) ); addToList( ParticleID::SUSY_Gravitino, -ix, (2000000+ix) ); } //leptons for(long ix=11;ix<17;++ix) { addToList( ParticleID::SUSY_Gravitino, ix, -(1000000+ix) ); addToList( ParticleID::SUSY_Gravitino, -ix, (1000000+ix) ); if( ix % 2 != 0 ) { addToList( ParticleID::SUSY_Gravitino, ix, -(2000000+ix) ); addToList( ParticleID::SUSY_Gravitino, -ix, (2000000+ix) ); } } RFSVertex::doinit(); tMSSMPtr model = dynamic_ptr_cast(generator()->standardModel()); if( !model ) throw InitException() << "SSGVFSVertex::doinit() - " << "The model pointer is null." << Exception::abortnow; MPlanck_ = model->MPlanck(); stop_ = model->stopMix(); sbot_ = model->sbottomMix(); stau_ = model->stauMix(); } ClassDescription SSGVFSVertex::initSSGVFSVertex; // Definition of the static class description member. void SSGVFSVertex::Init() { static ClassDocumentation documentation ("The SSGVFSVertex implements the coupling of the gravitino to " "a fermion-sfermion"); } void SSGVFSVertex::setCoupling(Energy2 , #ifndef NDEBUG tcPDPtr part1, #else tcPDPtr, #endif tcPDPtr part2,tcPDPtr part3) { assert(part1->id()==ParticleID::SUSY_Gravitino); assert(part3->iSpin()==PDT::Spin0); norm(double(sqrt(2.)/MPlanck_*UnitRemoval::E)); // sfermion mass eigenstate unsigned int alpha(abs(part3->id())/1000000 - 1); unsigned int ism(abs(part2->id())); Complex lc,rc; //heavy quarks/sleptons if( ism == 5 || ism == 6 || ism == 15 ) { Complex ma1(0.), ma2(0.); if( ism == 5 ) { ma1 = (*sbot_)(alpha,0); ma2 = (*sbot_)(alpha,1); } else if( ism == 6 ) { ma1 = (*stop_)(alpha,0); ma2 = (*stop_)(alpha,1); } else { ma1 = (*stau_)(alpha,0); ma2 = (*stau_)(alpha,1); } lc = - ma2; rc = + ma1; } else { if( alpha == 0 ) { lc = 0.; rc = 1.; } else { lc = -1.; rc = 0.; } } // determine the helicity order of the vertex if( part2->id() < 0 ) { left (conj(rc)); right(conj(lc)); } else { left (lc); right(rc); } } herwig++-2.6.0.orig/Models/Susy/SSNNZVertex.h0000644000175000017500000000746211754474773021457 0ustar sylvestresylvestre// -*- C++ -*- // // SSNNZVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSNNZVertex_H #define HERWIG_SSNNZVertex_H // // This is the declaration of the SSNNZVertex class. // #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "SusyBase.h" #include "MixingMatrix.fh" namespace Herwig { using namespace ThePEG; /** * This class implements the coupling of a Z-boson to a pair of neutralinos. * It inherits from FFVertex and implements the setCoupling method. * * @see \ref SSNNZVertexInterfaces "The interfaces" * defined for SSNNZVertex. * @see FFVertex */ class SSNNZVertex: public FFVVertex { public: /** * The default constructor. */ SSNNZVertex(); 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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2, tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSNNZVertex & operator=(const SSNNZVertex &); private: /** * The value of \f$sin(\theta_W)\f$ */ double _sw; /** * The value of \f$cos(\theta_W)\f$ */ double _cw; /** * Store the neutralino mixing matrix */ tMixingMatrixPtr _theN; /** * Store the id of the 1st neutralino when the coupling was last evaluated */ long _id1last; /** * Store the id of the 1st neutralino when the coupling was last evaluated */ long _id2last; /** * Store the value at which the coupling when it was last evalutated */ Energy2 _q2last; /** * Store the value of the coupling when it was last evalutated */ Complex _couplast; /** * Store the value of the left-coupling when it was last evalutated */ Complex _leftlast; /** * Store the value of the right-coupling when it was last evalutated */ Complex _rightlast; }; } #endif /* HERWIG_SSNNZVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSHGGVertex.cc0000644000175000017500000002205611754474773021551 0ustar sylvestresylvestre// -*- C++ -*- // // SSHGGVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSHGGVertex class. // #include "SSHGGVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/Looptools/clooptools.h" #include using namespace ThePEG::Helicity; using namespace Herwig; SSHGGVertex::SSHGGVertex() : theSw(0.), theMw(), theZfact(), theQt1L(0.), theQt1R(0.), theQt1LR(0.), theQt2L(0.), theQt2R(0.), theQt2LR(0.), theQb1L(0.), theQb1R(0.), theQb1LR(0.), theQb2L(0.), theQb2R(0.), theQb2LR(0.), theSqmass(4,ZERO), theTanB(0.),theSinA(0.), theCosA(0.), theSinB(0.), theCosB(0.), theSinApB(0.), theCosApB(0.), theCouplast(0.), theq2last(), theHaveCoeff(false), theLastID(0) { orderInGs(2); orderInGem(1); } void SSHGGVertex::doinit() { //PDG codes for particles at vertices addToList(21,21,25); addToList(21,21,35); addToList(21,21,36); theMSSM = dynamic_ptr_cast(generator()->standardModel()); if( !theMSSM ) throw InitException() << "SSHGGVertex::doinit() - The pointer to the MSSM object is null!" << Exception::abortnow; theMw = getParticleData(ParticleID::Wplus)->mass(); thetop = getParticleData(ParticleID::t); thebot = getParticleData(ParticleID::b); theSw = sqrt(sin2ThetaW()); theZfact = getParticleData(ParticleID::Z0)->mass()/sqrt(1. - sqr(theSw)); theSinA = sin(theMSSM->higgsMixingAngle()); theCosA = sqrt(1. - sqr(theSinA)); theTanB = theMSSM->tanBeta(); theSinB = theTanB/sqrt(1. + sqr(theTanB)); theCosB = sqrt( 1. - sqr(theSinB) ); theSinApB = theSinA*theCosB + theCosA*theSinB; theCosApB = theCosA*theCosB - theSinA*theSinB; MixingMatrixPtr stop = theMSSM->stopMix(); MixingMatrixPtr sbot = theMSSM->sbottomMix(); theQt1L = (*stop)(0,0)*(*stop)(0,0); theQt1R = (*stop)(0,1)*(*stop)(0,1); theQt1LR = (*stop)(0,1)*(*stop)(0,0) + (*stop)(0,1)*(*stop)(0,0); theQt2L = (*stop)(1,0)*(*stop)(1,0); theQt2R = (*stop)(1,1)*(*stop)(1,1); theQt2LR = (*stop)(1,1)*(*stop)(1,0) + (*stop)(1,0)*(*stop)(1,1); theQb1L = (*sbot)(0,0)*(*sbot)(0,0); theQb1R = (*sbot)(0,1)*(*sbot)(0,1); theQb1LR = (*sbot)(0,1)*(*sbot)(0,0) + (*sbot)(0,1)*(*sbot)(0,0); theQb2L = (*sbot)(1,0)*(*sbot)(1,0); theQb2R = (*sbot)(1,1)*(*sbot)(1,1); theQb2LR = (*sbot)(1,1)*(*sbot)(1,0) + (*sbot)(1,0)*(*sbot)(1,1); assert( theSqmass.size() == 4 ); theSqmass[0] = getParticleData(ParticleID::SUSY_b_1)->mass(); theSqmass[1] = getParticleData(ParticleID::SUSY_t_1)->mass(); theSqmass[2] = getParticleData(ParticleID::SUSY_b_2)->mass(); theSqmass[3] = getParticleData(ParticleID::SUSY_t_2)->mass(); VVSLoopVertex::doinit(); Looptools::ltexi(); } void SSHGGVertex::persistentOutput(PersistentOStream & os) const { os << theMSSM << theSw << ounit(theMw,GeV) << ounit(theZfact,GeV) << theQt1L << theQt1R << theQt1LR << theQt2L << theQt2R << theQt2LR << theQb1L << theQb1R << theQb1LR << theQb2L << theQb2R << theQb2LR << thetop << thebot << theTanB << theSinA << theCosA << theSinB << theCosB << theSinApB << theCosApB << ounit(theSqmass, GeV); } void SSHGGVertex::persistentInput(PersistentIStream & is, int) { is >> theMSSM >> theSw >> iunit(theMw,GeV) >> iunit(theZfact,GeV) >> theQt1L >> theQt1R >> theQt1LR >> theQt2L >> theQt2R >> theQt2LR >> theQb1L >> theQb1R >> theQb1LR >> theQb2L >> theQb2R >> theQb2LR >> thetop >> thebot >> theTanB >> theSinA >> theCosA >> theSinB >> theCosB >> theSinApB >> theCosApB >> iunit(theSqmass, GeV); } ClassDescription SSHGGVertex::initSSHGGVertex; // Definition of the static class description member. void SSHGGVertex::Init() { static ClassDocumentation documentation ("This class implements the higgs-gluon-gluon effective " "vertex in the MSSM including stop, sbottom and top quarks " "loops."); } void SSHGGVertex::setCoupling(Energy2 q2, tcPDPtr particle2, tcPDPtr particle3, tcPDPtr particle1) { long higgs(abs(particle1->id())); assert( higgs == ParticleID::h0 || higgs == ParticleID::H0 || higgs == ParticleID::A0 ); assert(particle2->id() == ParticleID::g && particle3->id() == ParticleID::g ); if( q2 != theq2last || theCouplast == 0. || higgs != theLastID ) { Looptools::clearcache(); theCouplast = weakCoupling(q2)*sqr(strongCoupling(q2)); Energy mt = theMSSM->mass(q2, thetop); Energy mb = theMSSM->mass(q2, thebot); masses.resize(0); type.resize(0); if( higgs == ParticleID::h0 || higgs == ParticleID::H0 ) { setNParticles(6); masses.insert(masses.begin(), theSqmass.begin(), theSqmass.end()); masses.push_back(mt); masses.push_back(mb); type.resize(6, PDT::Spin0); type[4] = PDT::Spin1Half; type[5] = PDT::Spin1Half; couplings.resize(6, make_pair(0., 0.)); complex brac1 = theZfact*(0.5 + theMSSM->ed()*sqr(theSw)); complex brac2 = theZfact*(0.5 - theMSSM->eu()*sqr(theSw)); complex brac3 = theZfact*theMSSM->ed()*sqr(theSw); complex brac4 = theZfact*theMSSM->eu()*sqr(theSw); Energy Trib=theMSSM->bottomTrilinear().real(); Energy Trit=theMSSM->topTrilinear().real(); Energy theMu = theMSSM->muParameter(); if( higgs == ParticleID::h0 ) { // lightest sbottom Complex coup = 0.5*UnitRemoval::InvE* (theQb1L *( sqr(mb)*theSinA/theMw/theCosB - theSinApB*brac1) + theQb1R *( sqr(mb)*theSinA/theMw/theCosB + theSinApB*brac3) + theQb1LR*0.5*mb/theMw*(Trib*theSinA + theMu*theCosA)/theCosB); couplings[0] = make_pair(coup, coup); // lightest stop coup = 0.5*UnitRemoval::InvE* (theQt1L *( - sqr(mt)*theCosA/theMw/theSinB + theSinApB*brac2) + theQt1R *( - sqr(mt)*theCosA/theMw/theSinB + theSinApB*brac4) - theQt1LR*0.5*mt/theMw*(Trit*theCosA + theMu*theSinA)/theSinB); couplings[1] = make_pair(coup, coup); // heavier sbottom coup = 0.5*UnitRemoval::InvE* (theQb2L *( sqr(mb)*theSinA/theMw/theCosB - theSinApB*brac1) + theQb2R *( sqr(mb)*theSinA/theMw/theCosB + theSinApB*brac3)+ theQb2LR*0.5*mb/theMw*(Trib*theSinA + theMu*theCosA)/theCosB); couplings[2] = make_pair(coup, coup); // heavier stop coup = 0.5*UnitRemoval::InvE* (theQt2L *( - sqr(mt)*theCosA/theMw/theSinB + theSinApB*brac2) + theQt2R *( - sqr(mt)*theCosA/theMw/theSinB + theSinApB*brac4) - theQt2LR*0.5*mt/theMw*(Trit*theCosA + theMu*theSinA)/theSinB); couplings[3] = make_pair(coup, coup); // top coup = -0.25*(mt*theCosA/theMw/theSinB); couplings[4] = make_pair(coup, coup); // bottom coup = +0.25*(mb*theSinA/theMw/theCosB); couplings[5] = make_pair(coup, coup); } else { // lightest sbottom Complex coup = 0.5*UnitRemoval::InvE* (theQb1L *( - sqr(mb)*theCosA/theMw/theCosB + theCosApB*brac1) + theQb1R *( - sqr(mb)*theCosA/theMw/theCosB - theCosApB*brac3) + theQb1LR*0.5*mb/theMw*(theMu*theSinA - Trib*theCosA)/theCosB); couplings[0] = make_pair(coup, coup); // lightest stop coup = 0.5*UnitRemoval::InvE* (theQt1L *( - sqr(mt)*theSinA/theMw/theSinB - theCosApB*brac2) + theQt1R *( - sqr(mt)*theSinA/theMw/theSinB - theCosApB*brac4) - theQt1LR*0.5*mt/theMw*(-theMu*theCosA + Trit*theSinA)/theSinB); couplings[1] = make_pair(coup, coup); // heavier sbottom coup = 0.5*UnitRemoval::InvE* (theQb2L *( - sqr(mb)*theCosA/theMw/theCosB + theCosApB*brac1) + theQb2R *( - sqr(mb)*theCosA/theMw/theCosB - theCosApB*brac3) + theQb2LR*0.5*mb/theMw*(theMu*theSinA - Trib*theCosA)/theCosB); couplings[2] = make_pair(coup, coup); // heavier stop coup = 0.5*UnitRemoval::InvE* (theQt2L *( - sqr(mt)*theSinA/theMw/theSinB - theCosApB*brac2) + theQt2R *( - sqr(mt)*theSinA/theMw/theSinB - theCosApB*brac4) - theQt2LR*0.5*mt/theMw*(-theMu*theCosA + Trit*theSinA)/theSinB); couplings[3] = make_pair(coup, coup); // top coup = -0.25*mt*theSinA/theMw/theSinB; couplings[4] = make_pair(coup, coup); // bottom coup = -0.25*mb*theCosA/theMw/theCosB; couplings[5] = make_pair(coup, coup); } } else { setNParticles(2); masses.resize(2); couplings.resize(2); masses[0] = mt; masses[1] = mb; type.resize(2,PDT::Spin1Half); Complex coup = 0.25*Complex(0., 1.)*mt/theMw/theTanB; couplings[0] = make_pair(coup, -coup); coup = 0.25*Complex(0., 1.)*mb/theMw*theTanB; couplings[1] = make_pair(coup, -coup); } theq2last = q2; theLastID = higgs; theHaveCoeff = false; } norm(theCouplast); //calculate tensor coefficients if( !theHaveCoeff ) { VVSLoopVertex::setCoupling(q2, particle2, particle3, particle1); theHaveCoeff = true; } } herwig++-2.6.0.orig/Models/Susy/MSSM.fh0000644000175000017500000000042111754474773020257 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the MSSM class. // #ifndef HERWIG_MSSM_FH #define HERWIG_MSSM_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class MSSM; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::MSSM,MSSMPtr); } #endif herwig++-2.6.0.orig/Models/Susy/SSGSGSGVertex.h0000644000175000017500000000763211754474773021663 0ustar sylvestresylvestre// -*- C++ -*- // // SSGSGSGVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSGSGSGVertex_H #define HERWIG_SSGSGSGVertex_H // // This is the declaration of the SSGSGSGVertex class. // #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "SusyBase.h" namespace Herwig { using namespace ThePEG; /** * This class implements the g-\f$\tilde{g}\f$-\f$\tilde{g}\f$ vertex. It * inherits from FFVVertex and implements the setCoupling virtual method. * * @see FFVVertex */ class SSGSGSGVertex: public FFVVertex { public: /** * The default constructor. */ SSGSGSGVertex(); /** * 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(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initSSGSGSGVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSGSGSGVertex & operator=(const SSGSGSGVertex &); private: /** * The value of the coupling when last evaluated */ Complex _couplast; /** * The scale at which the coupling was last evaluated */ Energy2 _q2last; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSGSGSGVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSGSGSGVertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSGSGSGVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSGSGSGVertex"; } /** * The name of a file containing the dynamic library where the class * SSGSGSGVertex is implemented. It may also include several, space-separated, * libraries if the class SSGSGSGVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSGSGSGVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSGGSQSQVertex.h0000644000175000017500000000524111754474773022010 0ustar sylvestresylvestre// -*- C++ -*- // // SSGGSQSQVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSGGSQSQVertex_H #define HERWIG_SSGGSQSQVertex_H // // This is the declaration of the SSGGSQSQVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/VVSSVertex.h" #include "SusyBase.h" namespace Herwig { using namespace ThePEG; /** * This is the implementation of the 4 point gluon-gluon-squark-squark * vertex. It inherits from VVSSVertex and implements the setCouopling * method. * * @see VVSSVertex */ class SSGGSQSQVertex: public VVSSVertex { public: /** * The default constructor. */ SSGGSQSQVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the fourth particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3,tcPDPtr part4); public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSGGSQSQVertex & operator=(const SSGGSQSQVertex &); private: /** * The energy at which the coupling was last evaluated */ Energy2 q2last_; /** * The coupling when it was last evaluated */ Complex couplast_; }; } #endif /* HERWIG_SSGGSQSQVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSGOGOHVertex.cc0000644000175000017500000001712711754474773022012 0ustar sylvestresylvestre// -*- C++ -*- // // SSGOGOHVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSGOGOHVertex class. // #include "SSGOGOHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include using namespace ThePEG::Helicity; using namespace Herwig; SSGOGOHVertex::SSGOGOHVertex() : theMw(), theSij(2, vector(2,0.0)), theQij(2, vector(2,0.0)), theQijLp(4, vector(2,0.0)), theQijRp(4, vector(2,0.0)), theSijdp(4, vector(4,0.0)), theQijdp(4, vector(4,0.0)), theSa(0.0), theSb(0.0), theCa(0.0), theCb(0.0), theCoupLast(0.0), theLLast(0.0), theRLast(0.0), theHLast(0), theID1Last(0), theID2Last(0), theq2last() { orderInGem(1); orderInGs(0); } void SSGOGOHVertex::doinit() { long neu[4] = {1000022, 1000023, 1000025, 1000035}; long chg[2] = {1000024, 1000037}; long higgs[3] = {25, 35, 36}; for(unsigned int i = 0; i < 4; ++i) { //neutralinos for(unsigned int j = 0; j < 4; ++j) { for(unsigned int k = 0; k < 4; ++k) { if( i < 3 ) { if(k<=j) addToList(neu[j], neu[k], higgs[i]); //charginos if( j < 2 && k < 2 ) { addToList(-chg[j], chg[k], higgs[i]); } } else { if( k == 2 ) break; addToList(-chg[k], neu[j], 37); addToList( chg[k], neu[j],-37); } } } } FFSVertex::doinit(); tMSSMPtr theMSSM = dynamic_ptr_cast(generator()->standardModel()); if( !theMSSM ) throw InitException() << "SSGOGOHVertex::doinit() - The pointer to the MSSM object is null!" << Exception::abortnow; theMw = getParticleData(ParticleID::Wplus)->mass(); double theSw = sqrt(sin2ThetaW()); double tw = theSw/sqrt(1. - theSw*theSw); double tanb = theMSSM->tanBeta(); theSb = tanb/sqrt(1. + sqr(tanb)); theCb = sqrt( 1. - sqr(theSb) ); theSa = sin(theMSSM->higgsMixingAngle()); theCa = sqrt(1. - sqr(theSa)); MixingMatrix nmix = *theMSSM->neutralinoMix(); MixingMatrix umix = *theMSSM->charginoUMix(); MixingMatrix vmix = *theMSSM->charginoVMix(); for(unsigned int i = 0; i < 4; ++i) { for(unsigned int j = 0; j < 4; ++j) { if( i < 2 && j < 2 ) { theQij[i][j] = vmix(i,0)*umix(j,1)/sqrt(2); theSij[i][j] = vmix(i,1)*umix(j,0)/sqrt(2); } if( j < 2 ) { theQijLp[i][j] = conj(nmix(i, 3)*vmix(j,0) + (nmix(i,1) + nmix(i,0)*tw)*vmix(j,1)/sqrt(2)); theQijRp[i][j] = nmix(i, 2)*umix(j,0) - (nmix(i,1) + nmix(i,0)*tw)*umix(j,1)/sqrt(2); } theQijdp[i][j] = 0.5*( nmix(i,2)*( nmix(j,1) - tw*nmix(j,0) ) + nmix(j,2)*( nmix(i,1) - tw*nmix(i,0) ) ); theSijdp[i][j] = 0.5*( nmix(i,3)*( nmix(j,1) - tw*nmix(j,0) ) + nmix(j,3)*( nmix(i,1) - tw*nmix(i,0) ) ); } } } void SSGOGOHVertex::persistentOutput(PersistentOStream & os) const { os << theSij << theQij << theQijLp << theQijRp << theSijdp << theQijdp << ounit(theMw,GeV) << theSa << theSb << theCa << theCb; } void SSGOGOHVertex::persistentInput(PersistentIStream & is, int) { is >> theSij >> theQij >> theQijLp >> theQijRp >> theSijdp >> theQijdp >> iunit(theMw,GeV) >> theSa >> theSb >> theCa >> theCb; } ClassDescription SSGOGOHVertex::initSSGOGOHVertex; // Definition of the static class description member. void SSGOGOHVertex::Init() { static ClassDocumentation documentation ("The coupling of the higgs bosons to SM fermions in the MSSM"); } /// \todo fixme void SSGOGOHVertex::setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2,tcPDPtr particle3) { long f1ID(particle1->id()), f2ID(particle2->id()), higgsID(particle3->id()); assert(higgsID == ParticleID::h0 || higgsID == ParticleID::H0 || higgsID == ParticleID::A0 || abs(higgsID) == ParticleID::Hplus); if( f1ID < 0 ) swap(f1ID, f2ID); if( q2 != theq2last || theCoupLast == 0. ) { theCoupLast = weakCoupling(q2); theq2last = q2; } if( higgsID == theHLast && f1ID == theID1Last && f2ID == theID2Last) { norm(theCoupLast); left(theLLast); right(theRLast); return; } theHLast = higgsID; theID1Last = f1ID; theID2Last = f2ID; if( higgsID == ParticleID::h0 ) { //charginos if( abs(f2ID) == ParticleID::SUSY_chi_1plus || abs(f2ID) == ParticleID::SUSY_chi_2plus ) { unsigned int ei = (abs(f1ID) == ParticleID::SUSY_chi_1plus) ? 0 : 1; unsigned int ej = (abs(f2ID) == ParticleID::SUSY_chi_1plus) ? 0 : 1; theLLast = conj(theQij[ej][ei])*theSa - conj(theSij[ej][ei])*theCa; theRLast = theQij[ei][ej]*theSa - theSij[ei][ej]*theCa; } //neutralinos else { unsigned int ei(f1ID - ParticleID::SUSY_chi_10), ej(f2ID - ParticleID::SUSY_chi_10); if( ei > 1 ) ei = ( ei == 13 ) ? 3 : 2; if( ej > 1 ) ej = ( ej == 13 ) ? 3 : 2; theLLast = conj(theQijdp[ej][ei])*theSa + conj(theSijdp[ej][ei])*theCa; theRLast = theQijdp[ei][ej]*theSa + theSijdp[ei][ej]*theCa ; } } else if( higgsID == ParticleID::H0 ) { //charginos if( abs(f2ID) == ParticleID::SUSY_chi_1plus || abs(f2ID) == ParticleID::SUSY_chi_2plus ) { unsigned int ei = (abs(f1ID) == ParticleID::SUSY_chi_1plus) ? 0 : 1; unsigned int ej = (abs(f2ID) == ParticleID::SUSY_chi_1plus) ? 0 : 1; theLLast = -conj(theQij[ej][ei])*theCa - conj(theSij[ej][ei])*theSa; theRLast = -theQij[ei][ej]*theCa - theSij[ei][ej]*theSa; } //neutralinos else { unsigned int ei(f1ID - ParticleID::SUSY_chi_10), ej(f2ID - ParticleID::SUSY_chi_10); if( ei > 1 ) ei = ( ei == 13 ) ? 3 : 2; if( ej > 1 ) ej = ( ej == 13 ) ? 3 : 2; theLLast = -conj(theQijdp[ej][ei])*theCa + conj(theSijdp[ej][ei])*theSa; theRLast = -theQijdp[ei][ej]*theCa + theSijdp[ei][ej]*theSa; } } else if( higgsID == ParticleID::A0 ) { if( abs(f2ID) == ParticleID::SUSY_chi_1plus || abs(f2ID) == ParticleID::SUSY_chi_2plus ) { unsigned int ei = (abs(f1ID) == ParticleID::SUSY_chi_1plus) ? 0 : 1; unsigned int ej = (abs(f2ID) == ParticleID::SUSY_chi_1plus) ? 0 : 1; theLLast = Complex(0.,1.)*( conj(theQij[ej][ei])*theSb + conj(theSij[ej][ei])*theCb ); theRLast = -Complex(0.,1.)*(theQij[ei][ej]*theSb + theSij[ei][ej]*theCb); } //neutralinos else { unsigned int ei(f1ID - ParticleID::SUSY_chi_10), ej(f2ID - ParticleID::SUSY_chi_10); if( ei > 1 ) ei = ( ei == 13 ) ? 3 : 2; if( ej > 1 ) ej = ( ej == 13 ) ? 3 : 2; theLLast = Complex(0.,1.)*( conj(theQijdp[ej][ei])*theSb - conj(theSijdp[ej][ei])*theCb ); theRLast = -Complex(0.,1.)*(theQijdp[ei][ej]*theSb - theSijdp[ei][ej]*theCb); } } //charged higgs else { unsigned int ei(0),ej(0); long chg(f2ID), neu(f1ID); if( abs(neu) == ParticleID::SUSY_chi_1plus || abs(neu) == ParticleID::SUSY_chi_2plus ) swap(chg, neu); ej = ( abs(chg) == ParticleID::SUSY_chi_1plus) ? 0 : 1; ei = neu - ParticleID::SUSY_chi_10; if( ei > 1 ) ei = ( ei == 13 ) ? 3 : 2; theLLast = -theQijLp[ei][ej]*theCb; theRLast = -theQijRp[ei][ej]*theSb; if( higgsID < 0 ) { Complex tmp = theLLast; theLLast = conj(theRLast); theRLast = conj(tmp); } } norm(theCoupLast); left(theLLast); right(theRLast); } herwig++-2.6.0.orig/Models/Susy/SSGVNVVertex.cc0000644000175000017500000000657011754474773021727 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SSGVNVVertex class. // #include "SSGVNVVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "MSSM.h" using namespace Herwig; SSGVNVVertex::SSGVNVVertex() : sw_(0.), cw_(0.), sb_(0.), cb_(0.), mz_(91.1876*GeV), MPlanck_(2.4e18*GeV) { orderInGem(1); orderInGs(0); } IBPtr SSGVNVVertex::clone() const { return new_ptr(*this); } IBPtr SSGVNVVertex::fullclone() const { return new_ptr(*this); } void SSGVNVVertex::persistentOutput(PersistentOStream & os) const { os << sw_ << cw_ << sb_ << cb_ << ounit(mz_,GeV) << nmix_ << ounit(MPlanck_,GeV); } void SSGVNVVertex::persistentInput(PersistentIStream & is, int) { is >> sw_ >> cw_ >> sb_ >> cb_ >> iunit(mz_,GeV) >> nmix_ >> iunit(MPlanck_,GeV); } ClassDescription SSGVNVVertex::initSSGVNVVertex; // Definition of the static class description member. void SSGVNVVertex::Init() { static ClassDocumentation documentation ("The SSGVNVVertex class implements the coupling of the gravitino" " to the neutralino and a photon or Z boson, or the gluino and gluon."); } void SSGVNVVertex::doinit() { long neu[4] = {ParticleID::SUSY_chi_10, ParticleID::SUSY_chi_20, ParticleID::SUSY_chi_30, ParticleID::SUSY_chi_40}; for(unsigned int j = 0; j < 4; ++j) { addToList(ParticleID::SUSY_Gravitino, neu[j], ParticleID::gamma); addToList(ParticleID::SUSY_Gravitino, neu[j], ParticleID::Z0); } addToList(ParticleID::SUSY_Gravitino, ParticleID::SUSY_g, ParticleID::g); RFVVertex::doinit(); tMSSMPtr model = dynamic_ptr_cast(generator()->standardModel()); if( !model ) throw InitException() << "SSGVNVVertex::doinit() - The pointer to the MSSM object is null!" << Exception::abortnow; double tanb = model->tanBeta(); sb_ = tanb/sqrt(1. + sqr(tanb)); cb_ = sqrt( 1. - sqr(sb_) ); sw_ = sqrt(sin2ThetaW()); cw_ = sqrt(1. - sin2ThetaW()); nmix_ = model->neutralinoMix(); MPlanck_ = model->MPlanck(); } void SSGVNVVertex::setCoupling(Energy2 , #ifndef NDEBUG tcPDPtr part1, #else tcPDPtr, #endif tcPDPtr part2,tcPDPtr part3) { assert(part1->id()==ParticleID::SUSY_Gravitino); assert(part3->iSpin()==PDT::Spin1); unsigned int neut = part2->id() - ParticleID::SUSY_chi_10; if(neut>1) neut = ( neut == 13 ) ? 3 : 2; int bid = part3->id(); Complex coup[2]; vector lV,rV; switch(bid) { case ParticleID::gamma : coup[0] = (*nmix_)(neut,0)*cw_+(*nmix_)(neut,1)*sw_; lV.push_back(-coup[0]*part2->mass()*UnitRemoval::InvE); lV.push_back( coup[0]); lV.push_back(0.); rV=lV; break; case ParticleID::Z0 : coup[0] = -(*nmix_)(neut,0)*sw_+(*nmix_)(neut,1)*cw_; coup[1] = -(*nmix_)(neut,2)*cb_+(*nmix_)(neut,3)*sb_; lV.push_back((-coup[0]*part2->mass()-mz_*coup[1])*UnitRemoval::InvE); lV.push_back( coup[0]); lV.push_back(0.); rV=lV; rV[0] = (-coup[0]*part2->mass()+mz_*coup[1])*UnitRemoval::InvE; break; case ParticleID::g : lV.push_back(-double(part2->mass()*UnitRemoval::InvE)); lV.push_back(1.); lV.push_back(0.); rV=lV; break; default : assert(false); } left (lV); right(rV); norm(double(1./MPlanck_*UnitRemoval::E)); } herwig++-2.6.0.orig/Models/Susy/SSGVNHVertex.cc0000644000175000017500000000557611754474773021716 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SSGVNHVertex class. // #include "SSGVNHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "MSSM.h" using namespace Herwig; SSGVNHVertex::SSGVNHVertex() : sa_(0.), sb_(0.), ca_(0.), cb_(0.), MPlanck_(2.4e18*GeV) { orderInGem(1); orderInGs(0); } IBPtr SSGVNHVertex::clone() const { return new_ptr(*this); } IBPtr SSGVNHVertex::fullclone() const { return new_ptr(*this); } void SSGVNHVertex::persistentOutput(PersistentOStream & os) const { os << sa_ << sb_ << ca_ << cb_ << nmix_ << ounit(MPlanck_,GeV); } void SSGVNHVertex::persistentInput(PersistentIStream & is, int) { is >> sa_ >> sb_ >> ca_ >> cb_ >> nmix_ >> iunit(MPlanck_,GeV); } ClassDescription SSGVNHVertex::initSSGVNHVertex; // Definition of the static class description member. void SSGVNHVertex::Init() { static ClassDocumentation documentation ("The SSGVNHVertex class implments the coupling of the Higgs" " bosons to a gravitino and a neutralino"); } void SSGVNHVertex::doinit() { long neu[4] = {ParticleID::SUSY_chi_10, ParticleID::SUSY_chi_20, ParticleID::SUSY_chi_30, ParticleID::SUSY_chi_40}; long higgs[3] = {25, 35, 36}; for(unsigned int i = 0; i < 3; ++i) { for(unsigned int j = 0; j < 4; ++j) { addToList(ParticleID::SUSY_Gravitino, neu[j], higgs[i]); } } RFSVertex::doinit(); tMSSMPtr model = dynamic_ptr_cast(generator()->standardModel()); if( !model ) throw InitException() << "SSGVNHVertex::doinit() - The pointer to the MSSM object is null!" << Exception::abortnow; double tanb = model->tanBeta(); sb_ = tanb/sqrt(1. + sqr(tanb)); cb_ = sqrt( 1. - sqr(sb_) ); sa_ = sin(model->higgsMixingAngle()); ca_ = sqrt(1. - sqr(sa_)); nmix_ = model->neutralinoMix(); MPlanck_ = model->MPlanck(); } void SSGVNHVertex::setCoupling(Energy2 , #ifndef NDEBUG tcPDPtr part1, #else tcPDPtr, #endif tcPDPtr part2,tcPDPtr part3) { assert(part1->id()==ParticleID::SUSY_Gravitino); assert(part3->iSpin()==PDT::Spin0); unsigned int neut = part2->id() - ParticleID::SUSY_chi_10; if(neut>1) neut = ( neut == 13 ) ? 3 : 2; int hid = part3->id(); Complex coup; switch(hid) { case ParticleID::h0 : left (1.); right(1.); coup = -(*nmix_)(neut,2)*sa_+(*nmix_)(neut,3)*ca_; break; case ParticleID::H0 : left (1.); right(1.); coup = (*nmix_)(neut,2)*ca_+(*nmix_)(neut,3)*sa_; break; case ParticleID::A0 : left (Complex(0.,-1.)); right(Complex(0., 1.)); coup = (*nmix_)(neut,2)*sb_+(*nmix_)(neut,3)*cb_; break; default : assert(false); } norm(coup/MPlanck_*UnitRemoval::E); } herwig++-2.6.0.orig/Models/Susy/MixingMatrix.cc0000644000175000017500000000377411754474773022126 0ustar sylvestresylvestre// -*- C++ -*- // // MixingMatrix.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MixingMatrix class. // #include "MixingMatrix.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void MixingMatrix::persistentOutput(PersistentOStream & os) const { os << _theMixingMatrix << _theIds << _theSize; } void MixingMatrix::persistentInput(PersistentIStream & is, int) { is >> _theMixingMatrix >> _theIds >> _theSize; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeMixingMatrix("Herwig::MixingMatrix", "HwSusy.so"); void MixingMatrix::Init() { static ClassDocumentation documentation ("The MixingMatrix class implements the storage of the SUSY mixing " "matrices."); } void MixingMatrix::adjustPhase(long id) { unsigned int irow(0); while(irow < size().first && _theIds[irow] != id) ++irow; for(unsigned int c = 0; c < _theSize.second; ++c) _theMixingMatrix[irow][c] *= Complex(0., 1.); } ostream & Herwig::operator<<(ostream & os,const MixingMatrix & mix) { for(unsigned int ix=0;ix using namespace ThePEG::Helicity; using namespace Herwig; SSWHHVertex::SSWHHVertex() : theSw(0.), theS2w(0.), theC2w(0.), thesbma(0.), thecbma(0.), theq2last(ZERO), theElast(0.) { orderInGs(0); orderInGem(1); } void SSWHHVertex::doinit() { addToList(22,37,-37); addToList(23,36,25); addToList(23,36,35); addToList(23,37,-37); //outgoing W+ addToList(24,-37,25); addToList(24,-37,35); addToList(24,-37,36); //outgoing W- addToList(-24,37,25); addToList(-24,37,35); addToList(-24,37,36); VSSVertex::doinit(); tMSSMPtr theMSSM = dynamic_ptr_cast(generator()->standardModel()); if( !theMSSM ) throw InitException() << "SSWHHVertex::doinit() - The pointer to the MSSM object is null!" << Exception::abortnow; theSw = sqrt(sin2ThetaW()); double cw = sqrt(1. - sqr(theSw)); theS2w = 2.*theSw*cw; theC2w = cw*cw - theSw*theSw; double sina = sin(theMSSM->higgsMixingAngle()); double cosa = sqrt(1. - sqr(sina)); double tanb = theMSSM->tanBeta(); double sinb = tanb/sqrt(1. + sqr(tanb)); double cosb = sqrt( 1. - sqr(sinb) ); thesbma = sinb*cosa - sina*cosb; thecbma = cosa*cosb + sina*sinb; } void SSWHHVertex::persistentOutput(PersistentOStream & os) const { os << theSw << theS2w << theC2w << thesbma << thecbma; } void SSWHHVertex::persistentInput(PersistentIStream & is, int) { is >> theSw >> theS2w >> theC2w >> thesbma >> thecbma; } ClassDescription SSWHHVertex::initSSWHHVertex; // Definition of the static class description member. void SSWHHVertex::Init() { static ClassDocumentation documentation ("The coupling of a pair of higgs bosons and a SM gauge boson"); } void SSWHHVertex::setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2, tcPDPtr particle3) { long gboson = particle1->id(); assert( gboson == ParticleID::Z0 || gboson == ParticleID::gamma || abs(gboson) == ParticleID::Wplus ); long h1ID = particle2->id(); long h2ID = particle3->id(); Complex coup(0.); if( gboson == ParticleID::Z0 ) { if( abs(h1ID) == ParticleID::Hplus ) { coup = theC2w/theS2w; if(h1ID<0) coup *= -1.; } else if( h1ID == ParticleID::h0 || h2ID == ParticleID::h0 ) { coup = Complex(0., 1.)*thecbma/theS2w; } else { coup =-Complex(0., 1.)*thesbma/theS2w; } if(h2ID==ParticleID::A0) coup *=-1.; } else if( gboson == ParticleID::gamma ) { coup = 1.; if(h1ID<0) coup *= -1.; } else { long higgs = abs(h1ID) == ParticleID::Hplus ? h2ID : h1ID; if( higgs == ParticleID::h0 ) { coup = 0.5*thecbma/theSw; } else if( higgs == ParticleID::H0) coup = -0.5*thesbma/theSw; else coup = Complex(0., 0.5)/theSw; if(abs(h2ID) == ParticleID::Hplus ) coup *= -1.; if(gboson<0&&higgs!=ParticleID::A0) coup *= -1.; } if( q2 != theq2last || theElast==0.) { theq2last = q2; theElast = electroMagneticCoupling(q2); } norm(theElast*coup); } herwig++-2.6.0.orig/Models/Susy/SSGSGSGVertex.cc0000644000175000017500000000400011754474773022003 0ustar sylvestresylvestre// -*- C++ -*- // // SSGSGSGVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSGSGSGVertex class. // #include "SSGSGSGVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace ThePEG::Helicity; using namespace Herwig; SSGSGSGVertex::SSGSGSGVertex() : _couplast(0.),_q2last(ZERO) { orderInGs(1); orderInGem(0); } NoPIOClassDescription SSGSGSGVertex::initSSGSGSGVertex; // Definition of the static class description member. void SSGSGSGVertex::Init() { static ClassDocumentation documentation ("This class implements the gluon-gluino-gluino vertex"); } void SSGSGSGVertex::setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3) { if((part1->id() == ParticleID::g && part2->id() == ParticleID::SUSY_g && part3->id() == ParticleID::SUSY_g) || (part2->id() == ParticleID::g && part1->id() == ParticleID::SUSY_g && part3->id() == ParticleID::SUSY_g) || (part3->id() == ParticleID::g && part1->id() == ParticleID::SUSY_g && part2->id() == ParticleID::SUSY_g)) { if(q2 != _q2last || _couplast==0.) { _couplast = strongCoupling(q2); _q2last = q2; } norm(_couplast); left(1.);right(1.); } else { throw HelicityConsistencyError() << "SSGSGSGVertex::setCoupling() - Incorrect particle found. " << part1->id() << " " << part2->id() << " " << part3->id() << Exception::warning; norm(0.); left(0.); right(0); } } void SSGSGSGVertex::doinit() { addToList(1000021, 1000021, 21); FFVVertex::doinit(); } herwig++-2.6.0.orig/Models/Susy/SusyBase.h0000644000175000017500000003455411754474773021106 0ustar sylvestresylvestre// -*- C++ -*- // // SusyBase.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SusyBase_H #define HERWIG_SusyBase_H // // This is the declaration of the SusyBase class. // #include "Herwig++/Models/General/BSMModel.h" #include "MixingMatrix.h" #include "ThePEG/Utilities/CFileLineReader.h" #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractSSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractRFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractRFVVertex.h" #include "SusyBase.fh" namespace Herwig { using namespace ThePEG; /*@name Some convenient typedefs. */ //@{ /** * Map to hold key, parameter pairs. */ typedef map ParamMap; //@} /** \ingroup Models * This class is designed to be a base class for SUSY models. There is * an interface to set the name of the spectrum file to read in * the necessary parameters for a SUSY model. * * @see \ref SusyBaseInterfaces "The interfaces" * defined for SusyBase. * @see StandardModel */ class SusyBase: public BSMModel { public: /** * The default constructor. */ SusyBase(); public: /** @name Access functions. */ //@{ /** * Value of \f$\tan\beta\f$. */ double tanBeta() const { return tanBeta_; } /** * Value of \f$\mu\f$ parameter. */ Energy muParameter() const { return mu_; } /** * The neutralino mixing matrix */ const MixingMatrixPtr & neutralinoMix() const { return NMix_; } /** * The U-type chargino mixing matrix */ const MixingMatrixPtr & charginoUMix() const { return UMix_; } /** * The V-type chargino mixing matrix */ const MixingMatrixPtr & charginoVMix() const { return VMix_; } /** * The phase for gluino vertices */ const Complex & gluinoPhase() const {return gluinoPhase_;} //@} 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: /** * Soft breaking parameters */ //@{ /** * The bilinear breaking mass term for the bino */ const Energy & M1() const {return M1_;} /** * The bilinear breaking mass term for the wino */ const Energy & M2() const {return M2_;} /** * The bilinear breaking mass term for the gluinos */ const Energy & M3() const {return M3_;} /** * The soft breaking mass squared for \f$H_1\f$ */ const Energy2 & Mh12() const {return mH12_;} /** * The soft breaking mass squared for \f$H_2\f$ */ const Energy2 & Mh22() const {return mH22_;} /** * Soft breaking mass for the first generation lepton doublet */ const Energy & MeL() const {return meL_;} /** * Soft breaking mass for the second generation lepton doublet */ const Energy & MmuL() const {return mmuL_;} /** * Soft breaking mass for the third generation lepton doublet */ const Energy & MtauL() const {return mtauL_;} /** * Soft breaking mass for the first generation lepton singlet */ const Energy & MeR() const {return meR_;} /** * Soft breaking mass for the second generation lepton singlet */ const Energy & MmuR() const {return mmuR_;} /** * Soft breaking mass for the third generation lepton singlet */ const Energy & MtauR() const {return mtauR_;} /** * Soft breaking mass for the first generation quark doublet */ const Energy & Mq1L() const {return mq1L_;} /** * Soft breaking mass for the second generation quark doublet */ const Energy & Mq2L() const {return mq2L_;} /** * Soft breaking mass for the third generation quark doublet */ const Energy & Mq3L() const {return mq3L_;} /** * Soft breaking mass for the down singlet */ const Energy & MdR() const {return mdR_;} /** * Soft breaking mass for the up singlet */ const Energy & MuR() const {return muR_;} /** * Soft breaking mass for the strange singlet */ const Energy & MsR() const {return msR_;} /** * Soft breaking mass for the charm singlet */ const Energy & McR() const {return mcR_;} /** * Soft breaking mass for the bottom singlet */ const Energy & MbR() const {return mbR_;} /** * Soft breaking mass for the top singlet */ const Energy & MtR() const {return mtR_;} //@} /** * Planck mass */ const Energy & MPlanck() const {return MPlanck_;} protected: /** * Function to read information from a setup file. * @param is istream object to read file. */ virtual void readSetup(istream & is); private: /**@name Functions to help file read-in. */ //@{ /** * Read block from LHA file * @param ifs input stream containg data * @param name The name of the block * @param line The line defining the block */ void readBlock(CFileLineReader & ifs,string name,string line); /** * Function to read mixing matrix from LHA file * @param ifs input stream containg data * @param row Number of rows * @param col Number of columns */ const MixingVector readMatrix(CFileLineReader & ifs, unsigned int & row, unsigned int & col); protected: /** * Create the mixing matrices for the model */ virtual void createMixingMatrices(); /** * Extract the parameters from the input blocks */ virtual void extractParameters(bool checkmodel=true); /** * Create a object MixingMatrix in the repository * @param matrix Pointer to the mixing matrix * @param name Name of the mixing matrix, i.e. nmix, umix... * @param values Value of each entry in the matrix * @param size The size of the matrix */ void createMixingMatrix(MixingMatrixPtr & matrix, string name, const MixingVector & values, MatrixSize size); /** * Reset masses in the repository to values read from LHA file. */ void resetRepositoryMasses(); /** * Adjust row of Mixing Matrix if a negative mass occurs in LHA file * @param id The PDG code of the particle with a negative mass */ virtual void adjustMixingMatrix(long id); //@} /** * Access to the mixings and parameters for the inheriting classes */ //@{ /** * Parameter blocks */ const map & parameters() const { return parameters_; } /** * Mixing blocks */ const map > & mixings() const { return mixings_; } //@} /** * Reset neutralino mixing matrix */ void neutralinoMix(MixingMatrixPtr nm) { NMix_ = nm; } /** * Reset the U-type chargino mixing matrix */ void charginoUMix(MixingMatrixPtr um) { UMix_ = um; } /** * Reset the V-type chargino mixing matrix */ void charginoVMix(MixingMatrixPtr vm) { VMix_ = vm; } 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSusyBase; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SusyBase & operator=(const SusyBase &); private: /** * Whether or not the SLHA fiel has been read */ bool readFile_; /** * Planck mass needed in GMSB models */ Energy MPlanck_; /** * Whether or not to include gravitino interactions */ bool gravitino_; /* * Storage of the parameters. */ //@{ /** * Parameter blocks */ map parameters_; /** * Mixing blocks */ map > mixings_; /** * \f$\tan\beta\f$ */ double tanBeta_; /** * \f$\mu\f$ */ Energy mu_; //@} /** * Soft breaking parameters */ //@{ /** * The bilinear breaking mass term for the bino */ Energy M1_; /** * The bilinear breaking mass term for the wino */ Energy M2_; /** * The bilinear breaking mass term for the gluinos */ Energy M3_; /** * The soft breaking mass squared for \f$H_1\f$ */ Energy2 mH12_; /** * The soft breaking mass squared for \f$H_2\f$ */ Energy2 mH22_; /** * Soft breaking mass for the first generation lepton doublet */ Energy meL_; /** * Soft breaking mass for the second generation lepton doublet */ Energy mmuL_; /** * Soft breaking mass for the third generation lepton doublet */ Energy mtauL_; /** * Soft breaking mass for the first generation lepton singlet */ Energy meR_; /** * Soft breaking mass for the second generation lepton singlet */ Energy mmuR_; /** * Soft breaking mass for the third generation lepton singlet */ Energy mtauR_; /** * Soft breaking mass for the first generation quark doublet */ Energy mq1L_; /** * Soft breaking mass for the second generation quark doublet */ Energy mq2L_; /** * Soft breaking mass for the third generation quark doublet */ Energy mq3L_; /** * Soft breaking mass for the down singlet */ Energy mdR_; /** * Soft breaking mass for the up singlet */ Energy muR_; /** * Soft breaking mass for the strange singlet */ Energy msR_; /** * Soft breaking mass for the charm singlet */ Energy mcR_; /** * Soft breaking mass for the bottom singlet */ Energy mbR_; /** * Soft breaking mass for the top singlet */ Energy mtR_; //@} /** * Phase for the gluino */ Complex gluinoPhase_; /** * Neutralino and Chargino mixing matrices */ //@{ /** * Store pointers to the gaugino mixing matrices */ //@{ /** * The neutralino mixing matrix */ MixingMatrixPtr NMix_; /** * The \f$U\f$ mixing matrix for the charginos */ MixingMatrixPtr UMix_; /** * The \f$V\f$ mixing matrix for the charginos */ MixingMatrixPtr VMix_; //@} /**@name Vertex pointers. */ //@{ /** * Pointer to the gauge boson sfermion-sfermion vertex */ AbstractVSSVertexPtr WSFSFVertex_; /** * Pointer to the neutralino-fermion-sfermion vertex */ AbstractFFSVertexPtr NFSFVertex_; /** * Pointer to the gluino-fermion-sfermion coupling */ AbstractFFSVertexPtr GFSFVertex_; /** * Pointer to the Higgs-sfermion-sfermion vertex */ AbstractSSSVertexPtr HSFSFVertex_; /** * Pointer to the \f$\tilde{\chi}^+\f$-fermion-sfermion vertex */ AbstractFFSVertexPtr CFSFVertex_; /** * Pointer to the gluon-sfermion-sfermion vertex */ AbstractVSSVertexPtr GSFSFVertex_; /** * Pointer to the gluon-gluon-squark-squark vertex; */ AbstractVVSSVertexPtr GGSQSQVertex_; /** * Pointer to the gluon-gluino-gluino vertex */ AbstractFFVVertexPtr GSGSGVertex_; /** * Pointer to the gluino-neutralino-gluon vertex */ AbstractFFVVertexPtr GNGVertex_; /** * Pointer to the neutralino-neutralino-Z vertex */ AbstractFFVVertexPtr NNZVertex_; /** * Pointer to the neutralino-neutralino-photon vertex */ AbstractFFVVertexPtr NNPVertex_; /** * Pointer to the vertex chargino-chargino-Z vertex */ AbstractFFVVertexPtr CCZVertex_; /** * Pointer to the vertex chargino-neutralino-Z vertex */ AbstractFFVVertexPtr CNWVertex_; /** * Pointer to the vertex gaugino-gaugino-higgs vertex */ AbstractFFSVertexPtr GOGOHVertex_; /** * Pointer to the vertex for a gauge boson and higgs */ AbstractVSSVertexPtr WHHVertex_; /** * Pointer to the vertex for flavour changing stop decay */ AbstractFFSVertexPtr NCTVertex_; /** * Pointer to the vertex for gravitino-neutralino vector boson */ AbstractRFVVertexPtr GVNVVertex_; /** * Pointer to the vertex for gravitino-neutralino Higgs boson */ AbstractRFSVertexPtr GVNHVertex_; /** * Pointer to the vertex for gravitino-fermion sfermion */ AbstractRFSVertexPtr GVFSVertex_; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SusyBase. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SusyBase. */ typedef Herwig::BSMModel NthBase; }; /** This template specialization informs ThePEG about the name of * the SusyBase class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SusyBase"; } /** * The name of a file containing the dynamic library where the class * SusyBase is implemented. It may also include several, space-separated, * libraries if the class SusyBase depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SusyBase_H */ herwig++-2.6.0.orig/Models/Susy/SusyBase.fh0000644000175000017500000000045111754474773021241 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the SusyBase class. // #ifndef HERWIG_SusyBase_FH #define HERWIG_SusyBase_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class SusyBase; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::SusyBase,SusyBasePtr); } #endif herwig++-2.6.0.orig/Models/Susy/MixingMatrix.h0000644000175000017500000001403711754474773021762 0ustar sylvestresylvestre// -*- C++ -*- // // MixingMatrix.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MixingMatrix_H #define HERWIG_MixingMatrix_H // // This is the declaration of the MixingMatrix class. // #include "ThePEG/Interface/Interfaced.h" #include "ThePEG/Config/Complex.h" #include "MixingMatrix.fh" #include "ThePEG/Utilities/Exception.h" namespace Herwig { using namespace ThePEG; /*@name Some convenient typedefs. */ //@{ /** * A complex valued nested vector. */ typedef vector > CMatrix; /** * Struct for the elements of a mixing matrix */ struct MixingElement{ /** * Constructor */ MixingElement(unsigned int irow, unsigned int icol,Complex ivalue) : row(irow), col(icol), value(ivalue) {} /** * row */ unsigned int row; /** * column */ unsigned int col; /** * value */ Complex value; }; /** * A vector of mixing elements. */ typedef vector MixingVector; /** * The size of the matrix */ typedef pair MatrixSize; //@} /** * This class is desinged to store the mixing matrices needed for Susy * studies. The actual matrix is stored as a nested complex vector. It * also stores a vector of PDG codes correspoding to the mass states of * mixing states. * * @see Interfaced */ class MixingMatrix: public Interfaced { /** Exception class to indicate problem with mixing matrix .*/ class MixingMatrixError : public Exception {}; public: /** @name Constructors */ //@{ /** * Constructor that takes a mixing matrix and a vector id's as arguments * @param mix Mixing matrix * @param ids The ids of the mixing sparticles */ MixingMatrix(const CMatrix & mix,const vector & ids) : _theMixingMatrix(mix),_theIds(ids), _theSize(make_pair(mix.size(),mix[0].size())) {} /** * Contructor that initializes size of matrix */ MixingMatrix(unsigned int row, unsigned int col) : _theMixingMatrix(row,vector(col,Complex(0.,0.))), _theSize(row,col) {} /** * Standard Constructor. */ MixingMatrix() {} //@} 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(); /** @name Get and Set functions. */ //@{ /** * Set the mixing matrix * @param mixing The Mixing matrix stored as nested complex vector */ void setMatrix(const CMatrix & mixing) { _theMixingMatrix = mixing; _theSize = make_pair(mixing.size(),mixing[0].size()); } /** *Get the mixing matrix */ CMatrix getMatrix() const {return _theMixingMatrix;} /** * Set the vector containing mixing particles codes * @param mixingCodes vector containing PDG codes for mixing particles */ void setIds(const vector & mixingCodes) { if(mixingCodes.size() != _theSize.first) { throw MixingMatrixError() << "MixingMatrix::setIds() - The number " << "of PDG codes does not match the size of the " << "matrix" << Exception::warning; return; } _theIds = mixingCodes; } /** * Get the vector containing mixing particles codes */ const vector & getIds() const {return _theIds;} //@} /** * Multiply row corresponding to id by \f$i\f$ * @param id PDG code of particle */ void adjustPhase(long id); /** * Access element of matrix */ const Complex operator()(unsigned int row, unsigned int col) const { return _theMixingMatrix.at(row).at(col); } /** * Set element of matrix */ Complex & operator()(unsigned int row, unsigned int col) { return _theMixingMatrix.at(row).at(col); } /** * Add a PDG code to the stored vector */ void addCode(long id) { if(_theIds.size() >= _theSize.first) { throw MixingMatrixError() << "MixingMatrix::addCode() - Trying to add a" << "PDG code but the vector already contains the " << "same number as the matrix size " << Exception::warning; return; } _theIds.push_back(id); } /** * Return the size of the mixing matrix */ MatrixSize size() const {return _theSize;} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MixingMatrix & operator=(const MixingMatrix &); /** * The mixing matrix */ CMatrix _theMixingMatrix; /** * The PDG codes of the mixing particles */ vector _theIds; /** * Size of matrix */ pair _theSize; /** * Print the matrix to the stream */ friend ostream & operator<<(ostream & os,const MixingMatrix & mix); }; /** * Output operator for the MixingMatrix */ ostream & operator<<(ostream &,const MixingMatrix &); } #endif /* HERWIG_MixingMatrix_H */ herwig++-2.6.0.orig/Models/Susy/SSWWHVertex.cc0000644000175000017500000000643511754474773021614 0ustar sylvestresylvestre// -*- C++ -*- // // SSWWHVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSWWHVertex class. // #include "SSWWHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include using namespace ThePEG::Helicity; using namespace Herwig; SSWWHVertex::SSWWHVertex() : theh0Wfact(ZERO), theH0Wfact(ZERO), theh0Zfact(ZERO), theH0Zfact(ZERO), theCoupLast(ZERO), theElast(0.0), theq2last(ZERO), theHlast(0), theGBlast(0) { orderInGem(1); orderInGs(0); } void SSWWHVertex::doinit() { addToList(23,23,25); addToList(-24,24,25); addToList(23,23,35); addToList(-24,24,35); VVSVertex::doinit(); tMSSMPtr model = dynamic_ptr_cast(generator()->standardModel()); if( !model ) throw InitException() << "SSWWHVertex::doinit() - The pointer to the MSSM object is null!" << Exception::abortnow; Energy mw = getParticleData(ParticleID::Wplus)->mass(); Energy mz = getParticleData(ParticleID::Z0)->mass(); double sw = sqrt(sin2ThetaW()); double sinalp = sin(model->higgsMixingAngle()); double cosalp = sqrt(1. - sqr(sinalp)); double tanbeta = model->tanBeta(); double sinbeta = tanbeta/sqrt(1. + sqr(tanbeta)); double cosbeta = sqrt( 1. - sqr(sinbeta) ); double sinbma = sinbeta*cosalp - cosbeta*sinalp; double cosbma = cosbeta*cosalp + sinbeta*sinalp; theh0Wfact = mw*sinbma/sw; theH0Wfact = mw*cosbma/sw; theh0Zfact = mz*sinbma/sw/sqrt(1. - sw*sw); theH0Zfact = mz*cosbma/sw/sqrt(1. - sw*sw); } void SSWWHVertex::persistentOutput(PersistentOStream & os) const { os << ounit(theh0Wfact,GeV) << ounit(theH0Wfact,GeV) << ounit(theh0Zfact,GeV) << ounit(theH0Zfact,GeV); } void SSWWHVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(theh0Wfact,GeV) >> iunit(theH0Wfact,GeV) >> iunit(theh0Zfact,GeV) >> iunit(theH0Zfact,GeV); } ClassDescription SSWWHVertex::initSSWWHVertex; // Definition of the static class description member. void SSWWHVertex::Init() { static ClassDocumentation documentation ("This is the coupling of a pair of SM gauge bosons" "to the higgs particles in the MSSM"); } void SSWWHVertex::setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr, tcPDPtr particle3) { long bosonID = abs(particle1->id()); long higgsID = particle3->id(); assert( higgsID == ParticleID::h0 || higgsID == ParticleID::H0 ); assert( bosonID == ParticleID::Wplus || bosonID == ParticleID::Z0 ); if( higgsID != theHlast || bosonID != theGBlast) { if( higgsID == ParticleID::h0 ) theCoupLast = (bosonID == ParticleID::Z0) ? theh0Zfact : theh0Wfact; else theCoupLast = (bosonID == ParticleID::Z0) ? theH0Zfact : theH0Wfact; } if( q2 != theq2last ) { theq2last = q2; theElast = electroMagneticCoupling(q2); } norm(theElast*theCoupLast*UnitRemoval::InvE); } herwig++-2.6.0.orig/Models/Susy/SSFFHVertex.cc0000644000175000017500000001054511754474773021547 0ustar sylvestresylvestre// -*- C++ -*- // // SSFFHVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSFFHVertex class. // #include "SSFFHVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include using namespace ThePEG::Helicity; using namespace Herwig; SSFFHVertex::SSFFHVertex() : thetanb(0.0), theMw(ZERO), theSa(0.0), theSb(0.0), theCa(0.0), theCb(0.0), theFLast(make_pair(0,0)), theGlast(0.), theq2last(), theMassLast(make_pair(ZERO,ZERO)) { orderInGem(1); orderInGs(0); } void SSFFHVertex::doinit() { int higgs[] = { 25, 35, 36 }; for ( long h = 0; h < 3; ++h ) { //neutral higgs // quarks for(long ix=1;ix<7;++ix) addToList(-ix,ix,higgs[h]); // charged leptons for(long ix=11;ix<16;ix+=2) addToList(-ix,ix,higgs[h]); } for(long ix=1;ix<6;ix+=2) { //outgoing H+ addToList(-ix-1, ix, 37); //outgoing H- addToList(-ix ,ix+1,-37); } for(long ix=11;ix<16;ix+=2) { //outgoing H+ addToList(-ix-1, ix, 37); //outgoing H- addToList(-ix ,ix+1,-37); } theMSSM = dynamic_ptr_cast(generator()->standardModel()); if( !theMSSM ) throw InitException() << "SSFFHVertex::doinit() - The pointer to the MSSM object is null!" << Exception::abortnow; theMw = getParticleData(ParticleID::Wplus)->mass(); thetanb = theMSSM->tanBeta(); theSb = thetanb/sqrt(1. + sqr(thetanb)); theCb = sqrt( 1. - sqr(theSb) ); theSa = sin(theMSSM->higgsMixingAngle()); theCa = sqrt(1. - sqr(theSa)); FFSVertex::doinit(); } void SSFFHVertex::persistentOutput(PersistentOStream & os) const { os << theMSSM << thetanb << ounit(theMw,GeV) << theSa << theSb << theCa << theCb; } void SSFFHVertex::persistentInput(PersistentIStream & is, int) { is >> theMSSM >> thetanb >> iunit(theMw,GeV) >> theSa >> theSb >> theCa >> theCb; } ClassDescription SSFFHVertex::initSSFFHVertex; // Definition of the static class description member. void SSFFHVertex::Init() { static ClassDocumentation documentation ("The coupling of the higgs bosons to SM fermions in the MSSM"); } void SSFFHVertex::setCoupling(Energy2 q2, tcPDPtr particle1, tcPDPtr particle2,tcPDPtr particle3) { long f1ID(abs(particle1->id())), f2ID(abs(particle2->id())), higgsID(particle3->id()); // check higgs assert( higgsID == ParticleID::h0 || higgsID == ParticleID::H0 || higgsID == ParticleID::A0 || abs(higgsID) == ParticleID::Hplus ); // check fermions assert(!( ((f1ID > 6 && f1ID < 11) || f1ID > 16 ) || ((f2ID > 6 && f1ID < 11) || f2ID > 16 ) )); if( q2 != theq2last || theGlast==0.) { theGlast = weakCoupling(q2); } if( q2 != theq2last || theFLast.first != f1ID) { theMassLast.first = theMSSM->mass(q2,particle1); theFLast.first = f1ID; } if( q2 != theq2last || theFLast.second != f2ID) { theMassLast.second = theMSSM->mass(q2,particle2); theFLast.second = f2ID; } theq2last = q2; Complex coup(0.); Complex lcoup(1.),rcoup(1.); if( higgsID == ParticleID::h0 || higgsID == ParticleID::H0 || higgsID == ParticleID::A0 ) { coup = 0.5*theMassLast.first/theMw; if( higgsID == ParticleID::h0 ) { if( f1ID % 2 == 0 ) coup *= -theCa/theSb; else coup *= theSa/theCb; } else if( higgsID == ParticleID::H0 ) { if( f1ID % 2 == 0 ) coup *= -theSa/theSb; else coup *= -theCa/theCb; } else { if( f1ID % 2 == 0 ) coup /= thetanb; else coup *= thetanb; coup *= Complex(0.,-1.); rcoup = -1.; } } //H+ else { if( f1ID % 2 == 0 ) { lcoup = theMassLast.first /thetanb/theMw; rcoup = theMassLast.second*thetanb/theMw; } else { lcoup = theMassLast.second/thetanb/theMw; rcoup = theMassLast.first *thetanb/theMw; } coup = sqrt(0.5); if( higgsID > 0 ) swap(lcoup,rcoup); } norm(theGlast*coup); left (lcoup); right(rcoup); } herwig++-2.6.0.orig/Models/Susy/MixingMatrix.fh0000644000175000017500000000047111754474773022125 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the MixingMatrix class. // #ifndef ThePEG_MixingMatrix_FH #define ThePEG_MixingMatrix_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; class MixingMatrix; ThePEG_DECLARE_POINTERS(MixingMatrix,MixingMatrixPtr); } #endif herwig++-2.6.0.orig/Models/Susy/MSSM.cc0000644000175000017500000001555611754474773020266 0ustar sylvestresylvestre// -*- C++ -*- // // MSSM.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MSSM class. // #include "MSSM.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void MSSM::persistentOutput(PersistentOStream & os) const { os << theStopMix << theSbotMix << theStauMix << theAlpha << ounit(theAtop,GeV) << ounit(theAbottom,GeV) << ounit(theAtau,GeV) << theHiggsMix; } void MSSM::persistentInput(PersistentIStream & is, int) { is >> theStopMix >> theSbotMix >> theStauMix >> theAlpha >> iunit(theAtop,GeV) >> iunit(theAbottom,GeV) >> iunit(theAtau,GeV) >> theHiggsMix; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass describeMSSM("Herwig::MSSM", "HwSusy.so"); void MSSM::Init() { static ClassDocumentation documentation ("The MSSM class is the base class for the MSSM model.", "MSSM Feynman rules were taken from \\cite{Haber:1984rc,Gunion:1984yn}.", " %\\cite{Haber:1984rc}\n" "\\bibitem{Haber:1984rc}\n" " H.~E.~Haber and G.~L.~Kane,\n" " %``The Search For Supersymmetry: Probing Physics Beyond The Standard Model,''\n" " Phys.\\ Rept.\\ {\\bf 117}, 75 (1985).\n" " %%CITATION = PRPLC,117,75;%%\n" "%\\cite{Gunion:1984yn}\n" "\\bibitem{Gunion:1984yn}\n" " J.~F.~Gunion and H.~E.~Haber,\n" " %``Higgs Bosons In Supersymmetric Models. 1,''\n" " Nucl.\\ Phys.\\ B {\\bf 272}, 1 (1986)\n" " [Erratum-ibid.\\ B {\\bf 402}, 567 (1993)].\n" " %%CITATION = NUPHA,B272,1;%%\n" ); } void MSSM::createMixingMatrices() { useMe(); map >::const_iterator it; for(it=mixings().begin();it!=mixings().end();++it) { string name=it->first; // create the stop, sbottom and stau mixing matrices if(name == "stopmix" ){ createMixingMatrix(theStopMix,name,it->second.second,it->second.first); } else if (name == "sbotmix" ) { createMixingMatrix(theSbotMix,name,it->second.second,it->second.first); } else if (name == "staumix") { createMixingMatrix(theStauMix,name,it->second.second,it->second.first); } // Higgs mixing matrix in extended models else if (name == "nmhmix") { createMixingMatrix(theHiggsMix,name,it->second.second,it->second.first); } } // neutral higgs mixing if not already set if(!theHiggsMix) { MixingVector hmix; hmix.push_back(MixingElement(1,1, cos(theAlpha))); hmix.push_back(MixingElement(1,2, sin(theAlpha))); hmix.push_back(MixingElement(2,1,-sin(theAlpha))); hmix.push_back(MixingElement(2,2, cos(theAlpha))); vector ids(2); ids[0] = 25; ids[1] = 35; theHiggsMix = new_ptr(MixingMatrix(2,2)); (*theHiggsMix).setIds(ids); } // base class for neutralinos and charginos SusyBase::createMixingMatrices(); } void MSSM::adjustMixingMatrix(long id) { switch (id) { case 1000006 : case 2000006 : if(theStopMix) theStopMix->adjustPhase(id); else throw SetupException() << "SusyBase::adjustMixingMatrix - " << "The stop mixing matrix pointer is null!" << Exception::runerror; break; case 1000005 : case 2000005 : if(theSbotMix) theSbotMix->adjustPhase(id); else throw SetupException() << "SusyBase::adjustMixingMatrix - " << "The sbottom mixing matrix pointer is null!" << Exception::runerror; break; case 1000015 : case 2000015 : if(theStauMix) theStauMix->adjustPhase(id); else throw SetupException() << "SusyBase::adjustMixingMatrix - " << "The stau mixing matrix pointer is null!" << Exception::runerror; break; default : SusyBase::adjustMixingMatrix(id); break; } } void MSSM::extractParameters(bool checkmodel) { map >::const_iterator it; // trilinear couplings for(it=mixings().begin();it!=mixings().end();++it) { string name=it->first; MixingVector::const_iterator vit; if(name=="au") { theAtop=ZERO; for(vit=it->second.second.begin();vit!=it->second.second.end();++vit) { if(vit->row==3&&vit->col==3) theAtop=vit->value*GeV; } } else if(name=="ad") { theAbottom=ZERO; for(vit=it->second.second.begin();vit!=it->second.second.end();++vit) { if(vit->row==3&&vit->col==3) theAbottom=vit->value*GeV; } } else if(name=="ae") { theAtau=ZERO; for(vit=it->second.second.begin();vit!=it->second.second.end();++vit) { if(vit->row==3&&vit->col==3) theAtau=vit->value*GeV; } } } // neutralino and chargino paramters in the base class SusyBase::extractParameters(false); // check the model map::const_iterator pit; pit=parameters().find("modsel"); if(pit==parameters().end()) return; // nmssm or mssm ParamMap::const_iterator jt; jt = pit->second.find(3); int inmssm = jt!=pit->second.end() ? int(jt->second) : 0; // RPV jt = pit->second.find(4); int irpv = jt!=pit->second.end() ? int(jt->second) : 0; // CPV jt = pit->second.find(5); int icpv = jt!=pit->second.end() ? int(jt->second) : 0; // flavour violation jt = pit->second.find(6); int ifv = jt!=pit->second.end() ? int(jt->second) : 0; // the higgs mixing angle if not NMSSM theAlpha=0.; if(inmssm==0) { map::const_iterator pit; pit=parameters().find("alpha"); if(pit!=parameters().end()) { ParamMap::const_iterator it = pit->second.find(1); if(it!=pit->second.end()) theAlpha=it->second; } } if(checkmodel) { if(inmssm!=0) throw Exception() << "R-parity, CP and flavour conserving MSSM model" << " used but NMSSM read in " << Exception::runerror; if(irpv!=0) throw Exception() << "R-parity, CP and flavour conserving MSSM model" << " used but RPV read in " << Exception::runerror; if(icpv!=0) throw Exception() << "R-parity, CP and flavour conserving MSSM model" << " used but CPV read in " << Exception::runerror; if(ifv!=0) throw Exception() << "R-parity, CP and flavour conserving MSSM model" << " used but flavour violation read in " << Exception::runerror; } } herwig++-2.6.0.orig/Models/Susy/SSWSSVertex.cc0000644000175000017500000001501211754474773021612 0ustar sylvestresylvestre// -*- C++ -*- // // SSWSSVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSWSSVertex class. // #include "SSWSSVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace ThePEG::Helicity; using namespace Herwig; SSWSSVertex::SSWSSVertex():_sw(0.), _cw(0.), _q2last(),_couplast(0.), _ulast(0), _dlast(0), _gblast(0), _factlast(0.) { orderInGem(1); orderInGs(0); } void SSWSSVertex::doinit() { //W- //LL-squarks for(long ix=1000001;ix<1000006;ix+=2) { addToList(-24,ix+1,-ix); } //1-2 stop sbottom addToList(-24,1000006,-2000005); //2-1 stop sbottom addToList(-24,2000006,-1000005); //2-2 stop sbottom addToList(-24,2000006,-2000005); //LL-sleptons for(long ix=1000011;ix<1000016;ix+=2) { addToList(-24,-ix,ix+1); } //2-L stau addToList(-24,-2000015,1000016); //W+ for(long ix=1000001;ix<1000006;ix+=2) { addToList(24,-(ix+1),ix); } //1-2 stop sbottom addToList(24,-1000006,2000005); //2-1 stop sbottom addToList(24,-2000006,1000005); //2-2 stop sbottom addToList(24,-2000006,2000005); //LL-sleptons for(long ix=1000011;ix<1000016;ix+=2) { addToList(24,ix,-ix-1); } //2-L stau addToList(24,2000015,-1000016); //---Z0---- //LL-sleptons for(long ix=1000011;ix<1000017;++ix) { addToList(23,ix,-ix); } //RR-sleptons for(long ix=2000011;ix<2000016;ix+=2) { addToList(23,ix,-ix); } //L-Rbar stau addToList(23,1000015,-2000015); //Lbar-R stau addToList(23,-1000015,2000015); //LL squarks for(long ix=1000001;ix<1000007;++ix) { addToList(23,ix,-ix); } //RR squarks for(long ix=2000001;ix<2000007;++ix) { addToList(23,ix,-ix); } //L-Rbar stop addToList(23,1000006,-2000006); //Lbar-R stop addToList(23,-1000006,2000006); //L-Rbar sbottom addToList(23,1000005,-2000005); //Lbar-R sbottom addToList(23,-1000005,2000005); //----gamma---- //sleptons for(long ix=1000011;ix<1000016;ix+=2) { addToList(22,ix,-ix); } for(long ix=2000011;ix<2000016;ix+=2) { addToList(22,ix,-ix); } //squarks for(long ix=1000001;ix<1000007;++ix) { addToList(22,ix,-ix); } for(long ix=2000001;ix<2000007;++ix) { addToList(22,ix,-ix); } VSSVertex::doinit(); tMSSMPtr theSS = dynamic_ptr_cast(generator()->standardModel()); if(!theSS) throw InitException() << "SSWSSVertex::doinit() - " << "The model pointer is null." << Exception::abortnow; _sw = sqrt(sin2ThetaW()); _cw = sqrt( 1. - sqr(_sw) ); _stop = theSS->stopMix(); _sbottom = theSS->sbottomMix(); _stau = theSS->stauMix(); if(!_stop || !_stau || !_sbottom) throw InitException() << "SSWSSVertex::doinit() - " << "A mixing matrix pointer is null." << " stop: " << _stop << " sbottom: " << _sbottom << " stau: " << _stau << Exception::abortnow; } void SSWSSVertex::persistentOutput(PersistentOStream & os) const { os << _sw << _cw << _stau << _stop << _sbottom; } void SSWSSVertex::persistentInput(PersistentIStream & is, int) { is >> _sw >> _cw >> _stau >> _stop >> _sbottom; } ClassDescription SSWSSVertex::initSSWSSVertex; // Definition of the static class description member. void SSWSSVertex::Init() { static ClassDocumentation documentation ("This is the implementation of the coupling of an SM boson " "a pair of sfermions"); } void SSWSSVertex::setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3){ long boson(abs(part1->id())); if( boson != ParticleID::Wplus && boson != ParticleID::Z0 && boson != ParticleID::gamma ) { throw HelicityConsistencyError() << "SSWSSVertex::setCoupling() - The vector particle in this " << "vertex is not a W/Z. " << boson << Exception::warning; norm(0.); } long sf1(abs(part2->id())),sf2(abs(part3->id())); if( (sf1 > 1000006 && sf1 < 1000011 && sf1 > 1000016) || (sf1 > 2000006 && sf1 < 2000011 && sf1 > 2000016) || (sf2 > 1000006 && sf2 < 1000011 && sf2 > 1000016) || (sf2 > 2000006 && sf2 < 2000011 && sf2 > 2000016) ) throw HelicityConsistencyError() << "SSWSSVertex::setCoupling() - There are no sfermions in " << "this vertex! " << part2->id() << " " << part3->id() << Exception::warning; if( sf1 % 2 != 0 ) swap(sf1, sf2); if( sf1 != _ulast || sf2 != _dlast || boson != _gblast) { _gblast = boson; _ulast = sf1; _dlast = sf2; //photon is simplest if( boson == ParticleID::gamma ) _factlast = getParticleData(sf1)->charge()/eplus; else { //determine which helicity state unsigned int alpha(sf1/1000000 - 1), beta(sf2/1000000 - 1); //mixing factors Complex m1a(0.), m1b(0.); if( sf1 == ParticleID::SUSY_t_1 || sf1 == ParticleID::SUSY_t_2 ) m1a = (*_stop)(alpha, 0); else if( sf1 == ParticleID::SUSY_b_1 || sf1 == ParticleID::SUSY_b_2 ) m1a = (*_sbottom)(alpha, 0); else if( sf1 == ParticleID::SUSY_tau_1minus || sf1 == ParticleID::SUSY_tau_2minus ) m1a = (*_stau)(alpha, 0); else m1a = (alpha == 0) ? Complex(1.) : Complex(0.); if( sf2 == ParticleID::SUSY_t_1 || sf2 == ParticleID::SUSY_t_2 ) m1b = (*_stop)(beta, 0); else if( sf2 == ParticleID::SUSY_b_1 || sf2 == ParticleID::SUSY_b_2 ) m1b = (*_sbottom)(beta, 0); else if( sf2 == ParticleID::SUSY_tau_1minus || sf2 == ParticleID::SUSY_tau_2minus ) m1b = (*_stau)(beta, 0); else m1b = (beta == 0) ? Complex(1.) : Complex(0.); //W boson if( boson == ParticleID::Wplus ) { _factlast = m1a*m1b/sqrt(2)/_sw; } //Z boson else { if( sf1 == ParticleID::SUSY_nu_eL || sf1 == ParticleID::SUSY_nu_muL || sf1 == ParticleID::SUSY_nu_tauL ) { _factlast = 1./_cw/2./_sw; } else { double lmda(1.); if( sf2 % 2 == 0 ) lmda = -1.; _factlast = lmda*m1a*m1b; if( alpha == beta) { double ef = getParticleData(sf1)->charge()/eplus; _factlast += 2.*ef*sqr(_sw); } _factlast *= -1./2./_cw/_sw; } } } } if( q2 != _q2last || _couplast==0. ) { _q2last = q2; _couplast = electroMagneticCoupling(q2); } norm(_couplast*_factlast); } herwig++-2.6.0.orig/Models/Susy/SSGVNHVertex.h0000644000175000017500000001053511754474773021547 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_SSGVNHVertex_H #define HERWIG_SSGVNHVertex_H // // This is the declaration of the SSGVNHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/RFSVertex.h" #include "MixingMatrix.h" namespace Herwig { using namespace ThePEG; /** * The SSGVNHVertex class implements the coupling of the gravitino to * a neutralino and Higgs boson. * * @see \ref SSGVNHVertexInterfaces "The interfaces" * defined for SSGVNHVertex. */ class SSGVNHVertex: public Helicity::RFSVertex { public: /** * The default constructor. */ SSGVNHVertex(); /** * Calculate the couplings. This method is virtual and must be implemented in * classes inheriting from this. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2,tcPDPtr part3); /** @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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSSGVNHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSGVNHVertex & operator=(const SSGVNHVertex &); private: /** * The value of \f$\sin\alpha\f$ */ double sa_; /** * The value of \f$\sin\beta\f$ */ double sb_; /** * The value of \f$\cos\alpha\f$ */ double ca_; /** * The value of \f$\cos\beta\f$ */ double cb_; /** * Pointer to the neutralino mixing matrix */ tMixingMatrixPtr nmix_; /** * The Planck mass */ Energy MPlanck_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSGVNHVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SSGVNHVertex. */ typedef Helicity::RFSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the SSGVNHVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SSGVNHVertex"; } /** * The name of a file containing the dynamic library where the class * SSGVNHVertex is implemented. It may also include several, space-separated, * libraries if the class SSGVNHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSusy.so"; } }; /** @endcond */ } #endif /* HERWIG_SSGVNHVertex_H */ herwig++-2.6.0.orig/Models/Susy/SSGNGVertex.cc0000644000175000017500000001616711754474773021565 0ustar sylvestresylvestre// -*- C++ -*- // // SSGNGVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSGNGVertex class. // #include "SSGNGVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Models/Susy/MixingMatrix.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/Utilities/Maths.h" using namespace ThePEG::Helicity; using namespace Herwig; SSGNGVertex::SSGNGVertex() : _sw(0.), _cw(0.), _idlast(0), _q2last(ZERO), _couplast(0.), _leftlast(ZERO), _rightlast(ZERO) { orderInGem(1); orderInGs(2); } void SSGNGVertex::doinit() { int ineu[5] = {1000022,1000023,1000025,1000035,1000045}; for(unsigned int i = 0; i < 5; ++i) { addToList(1000021, ineu[i], 21); } GeneralFFVVertex::doinit(); tMSSMPtr theSS = dynamic_ptr_cast(generator()->standardModel()); if(!theSS) throw InitException() << "SSGNGVertex::doinit() - " << "The model pointer is null." << Exception::abortnow; _theN = theSS->neutralinoMix(); if(!_theN ) throw InitException() << "SSGNGVertex::doinit - The neutralino " << "mixing matrix pointer is null." << Exception::abortnow; _sw = sqrt(sin2ThetaW()); _cw = sqrt(1 - _sw*_sw); _mw = getParticleData(ParticleID::Wplus)->mass(); double tb = theSS->tanBeta(); _sb = tb/sqrt(1 + sqr(tb)); _cb = sqrt(1 - sqr(_sb)); _stop = theSS->stopMix(); _sbot = theSS->sbottomMix(); } void SSGNGVertex::persistentOutput(PersistentOStream & os) const { os << _sw << _cw << _theN << ounit(_mw,GeV) << _sb << _cb << _stop << _sbot; } void SSGNGVertex::persistentInput(PersistentIStream & is, int) { is >> _sw >> _cw >> _theN >> iunit(_mw,GeV) >> _sb >> _cb >> _stop >> _sbot; } ClassDescription SSGNGVertex::initSSGNGVertex; // Definition of the static class description member. void SSGNGVertex::Init() { static ClassDocumentation documentation ("The coupling of a Z-boson to a pair of neutralinos"); } void SSGNGVertex::setCoupling(Energy2 q2, tcPDPtr part1, #ifndef NDEBUG tcPDPtr part2,tcPDPtr part3) { #else tcPDPtr part2,tcPDPtr) { #endif int o[2]={1,0}; long in1 = part1->id(); long in2 = part2->id(); Energy Mj = part1->mass(); Energy Mi = part2->mass(); if(in1!=ParticleID::SUSY_g) { swap(in1,in2); swap(Mj,Mi); } // checks of the particle ids assert(part3->id()==ParticleID::g); assert(in1 == ParticleID::SUSY_g); assert(in2 == ParticleID::SUSY_chi_10 || in2 == ParticleID::SUSY_chi_20 || in2 == ParticleID::SUSY_chi_30 || in2 == ParticleID::SUSY_chi_40 || in2 == 1000045 ); // normal couplings are zero setLeft (0.); setRight(0.); if(q2 != _q2last || _couplast==0.) { _q2last = q2; _couplast = weakCoupling(q2)*sqr(strongCoupling(q2))/ 32./sqr(Constants::pi); } if(in2 != _idlast) { _leftlast = ZERO; _rightlast = ZERO; _idlast = in2; unsigned int neu(in2 - 1000022); if(neu > 1) neu = (in2-1000005)/10; Complex n1prime = (*_theN)(neu,0)*_cw + (*_theN)(neu,1)*_sw; Complex n2prime = (*_theN)(neu,1)*_cw - (*_theN)(neu,0)*_sw; // squark/quark loops for(long iferm=1;iferm<7;++iferm) { tcPDPtr smf = getParticleData(iferm); Energy mf = smf->mass(); double qf = smf->charge()/eplus; double y = 0.5*mf/_mw; Complex bracketl = qf*_sw*( conj(n1prime) - _sw*conj(n2prime)/_cw ); double lambda(0.); // neutralino mixing element Complex nlf(0.); if( iferm % 2 == 0 ) { y /= _sb; lambda = -0.5 + qf*sqr(_sw); nlf = (*_theN)(neu,3); } else { y /= _cb; lambda = 0.5 + qf*sqr(_sw); nlf = (*_theN)(neu,2); } Complex bracketr = _sw*qf*n1prime - n2prime*lambda/_cw; for(long iy=0;iy<2;++iy) { long isf = 1000000*(1+iy)+iferm; Energy msf = getParticleData(isf)->mass(); if(mf+msf I,J,K,I2; loopIntegrals(Mi,Mj,msf,mf,I,J,K,I2); complex coup[2]; for(unsigned int ix=0;ix<2;++ix) { coup[ix] = Mj*(I2-K)*(g[0][ix]*g[1][o[ix]]-conj(g[0][o[ix]]*g[1][ix])) +Mi*K*(g[0][o[ix]]*g[1][ix]-conj(g[0][ix]*g[1][o[ix]])) +mf*I*(g[0][ix]*g[1][ix]-conj(g[0][o[ix]]*g[1][o[ix]])); } _leftlast += 2.*coup[0]; _rightlast += 2.*coup[1]; } } } norm(_couplast); setLeftSigma ( _leftlast); setRightSigma(_rightlast); } void SSGNGVertex::loopIntegrals(Energy Mi, Energy Mj, Energy M, Energy m, complex & I, complex & J, complex & K, complex & I2) { static const Complex ii(0.,1.); static const Energy eps(100.*MeV); Energy2 m2(sqr(m)),M2(sqr(M)),Mi2(sqr(Mi)),Mj2(sqr(Mj)); using Math::Li2; // general form if(m>eps || (M2-Mj2) < ZERO || (M2-Mi2)< ZERO) { Energy4 li = sqr(m2+M2-Mi2)-4.*sqr(m*M); complex rli = li rlj = lj/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Models/Zprime DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwZprimeModel_la_LIBADD = am_HwZprimeModel_la_OBJECTS = ZprimeModel.lo ZprimeModelZPQQVertex.lo HwZprimeModel_la_OBJECTS = $(am_HwZprimeModel_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwZprimeModel_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwZprimeModel_la_LDFLAGS) \ $(LDFLAGS) -o $@ @WANT_ZPRIME_TRUE@am_HwZprimeModel_la_rpath = -rpath $(pkglibdir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwZprimeModel_la_SOURCES) DIST_SOURCES = $(HwZprimeModel_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @WANT_ZPRIME_TRUE@pkglib_LTLIBRARIES = HwZprimeModel.la HwZprimeModel_la_SOURCES = ZprimeModel.cc ZprimeModel.h ZprimeModel.fh ZprimeModelZPQQVertex.h ZprimeModelZPQQVertex.cc HwZprimeModel_la_LDFLAGS = -module -version-info 1:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Models/Zprime/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Models/Zprime/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwZprimeModel.la: $(HwZprimeModel_la_OBJECTS) $(HwZprimeModel_la_DEPENDENCIES) $(EXTRA_HwZprimeModel_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwZprimeModel_la_LINK) $(am_HwZprimeModel_la_rpath) $(HwZprimeModel_la_OBJECTS) $(HwZprimeModel_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ZprimeModel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ZprimeModelZPQQVertex.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Models/Zprime/ZprimeModel.cc0000644000175000017500000002203511754474773022227 0ustar sylvestresylvestre // -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the ZprimeModel class. // #include "ZprimeModel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; using namespace ThePEG::Helicity; void ZprimeModel::doinit() { addVertex(_theZPQQVertex); StandardModel::doinit(); } ZprimeModel::ZprimeModel():_gZPUU_L(1.0),_gZPUU_R(1.0), _gZPDD_L(1.0), _gZPDD_R(1.0), _gZPCC_L(1.0), _gZPCC_R(1.0), _gZPSS_L(1.0), _gZPSS_R(1.0) ,_gZPBB_L(1.0), _gZPBB_R(1.0), _gZPTU_L(1.0), _gZPTU_R(1.0),_gZPTT_L(1.0), _gZPTT_R(1.0), _gZPee_L(1.0), _gZPee_R(1.0), _gZPmm_L(1.0), _gZPmm_R(1.0),_gZPtt_L(1.0), _gZPtt_R(1.0), _gZPnuenue_L(1.0), _gZPnuenue_R(1.0) ,_gZPnumnum_L(1.0), _gZPnumnum_R(1.0),_gZPnutnut_L(1.0), _gZPnutnut_R(1.0), _ZPoverall(1.0) {} IBPtr ZprimeModel::clone() const { return new_ptr(*this); } IBPtr ZprimeModel::fullclone() const { return new_ptr(*this); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void ZprimeModel::persistentOutput(PersistentOStream & os) const { os << _theZPQQVertex << _gZPTU_L << _gZPTU_R << _gZPTT_L << _gZPTT_R << _gZPBB_L << _gZPBB_R << _gZPCC_L << _gZPCC_R << _gZPSS_L << _gZPSS_R << _gZPUU_L << _gZPUU_R << _gZPDD_L << _gZPDD_R << _gZPee_L << _gZPee_R << _gZPmm_L << _gZPmm_R << _gZPtt_L << _gZPtt_R << _gZPnuenue_L << _gZPnuenue_R << _gZPnumnum_L << _gZPnumnum_R << _gZPnutnut_L << _gZPnutnut_R << _ZPoverall; } void ZprimeModel::persistentInput(PersistentIStream & is, int) { is >> _theZPQQVertex >> _gZPTU_L >> _gZPTU_R >> _gZPTT_L >> _gZPTT_R >> _gZPBB_L >> _gZPBB_R >> _gZPCC_L >> _gZPCC_R >> _gZPSS_L >> _gZPSS_R >> _gZPUU_L >> _gZPUU_R >> _gZPDD_L >> _gZPDD_L >> _gZPee_L >> _gZPee_R >> _gZPmm_L >> _gZPmm_R >> _gZPtt_L >> _gZPtt_R >> _gZPnuenue_L >> _gZPnuenue_R >> _gZPnumnum_L >> _gZPnumnum_R >> _gZPnutnut_L >> _gZPnutnut_R >> _ZPoverall; } ClassDescription ZprimeModel::initZprimeModel; // Definition of the static class description member. void ZprimeModel::Init() { static Reference interfaceVertexZPQQ ("Vertex/ZPQQ", "Reference to the Z prime Quark-Antiquark vertex", &ZprimeModel::_theZPQQVertex, false, false, true, false, false); static Parameter interfaceZPTULCoupling ("ZPTULCoupling", "The left-handed Z prime coupling to top-up", &ZprimeModel::_gZPTU_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPTURCoupling ("ZPTURCoupling", "The right-handed Z prime coupling to top-up", &ZprimeModel::_gZPTU_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPTTLCoupling ("ZPTTLCoupling", "The left-handed Z prime coupling to top anti-top", &ZprimeModel::_gZPTT_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPTTRCoupling ("ZPTTRCoupling", "The right-handed Z prime coupling to top anti-top", &ZprimeModel::_gZPTT_R, 1.0, -10., 10.0, false, false, Interface::limited); static Parameter interfaceZPUULCoupling ("ZPUULCoupling", "The left-handed Z prime coupling to up upbar", &ZprimeModel::_gZPUU_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPUURCoupling ("ZPUURCoupling", "The right-handed Z prime coupling to up upbar", &ZprimeModel::_gZPUU_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPCCLCoupling ("ZPCCLCoupling", "The left-handed Z prime coupling to c cbar", &ZprimeModel::_gZPCC_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPCCRCoupling ("ZPCCRCoupling", "The right-handed Z prime coupling to c cbar", &ZprimeModel::_gZPCC_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPBBLCoupling ("ZPBBLCoupling", "The left-handed Z prime coupling to b bbar", &ZprimeModel::_gZPBB_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPBBRCoupling ("ZPBBRCoupling", "The right-handed Z prime coupling to b bbar", &ZprimeModel::_gZPBB_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPDDLCoupling ("ZPDDLCoupling", "The left-handed Z prime coupling to d dbar", &ZprimeModel::_gZPDD_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPDDRCoupling ("ZPDDRCoupling", "The right-handed Z prime coupling to d dbar", &ZprimeModel::_gZPDD_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPSSLCoupling ("ZPSSLCoupling", "The left-handed Z prime coupling to s sbar", &ZprimeModel::_gZPSS_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPSSRCoupling ("ZPSSRCoupling", "The right-handed Z prime coupling to s sbar", &ZprimeModel::_gZPSS_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPeeCoupling ("ZPeeLCoupling", "The left-handed Z prime coupling to e+e-", &ZprimeModel::_gZPee_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPeeRCoupling ("ZPeeRCoupling", "The right-handed Z prime coupling to e+e-", &ZprimeModel::_gZPee_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPmmLCoupling ("ZPmmLCoupling", "The left-handed Z prime coupling to mu+mu-", &ZprimeModel::_gZPmm_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPmmRCoupling ("ZPmmRCoupling", "The right-handed Z prime coupling to mu+mu-", &ZprimeModel::_gZPmm_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPttLCoupling ("ZPttLCoupling", "The left-handed Z prime coupling to tau+tau-", &ZprimeModel::_gZPtt_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPttRCoupling ("ZPttRCoupling", "The right-handed Z prime coupling to tau+tau-", &ZprimeModel::_gZPtt_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPnuenueCoupling ("ZPnuenueLCoupling", "The left-handed Z prime coupling to nu_e nu_ebar", &ZprimeModel::_gZPnuenue_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPnuenueRCoupling ("ZPnuenueRCoupling", "The right-handed Z prime coupling to nu_e nu_ebar", &ZprimeModel::_gZPnuenue_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPnumnumLCoupling ("ZPnumnumLCoupling", "The left-handed Z prime coupling to nu_mu nu_mubar", &ZprimeModel::_gZPnumnum_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPnumnumRCoupling ("ZPnumnumRCoupling", "The right-handed Z prime coupling to nu_mu nu_mubar", &ZprimeModel::_gZPnumnum_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPnutnutLCoupling ("ZPnutnutLCoupling", "The left-handed Z prime coupling to nu_tau nu_taubar", &ZprimeModel::_gZPnutnut_L, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPnutnutRCoupling ("ZPnutnutRCoupling", "The right-handed Z prime coupling to nu_tau nu_taubar", &ZprimeModel::_gZPnutnut_R, 1.0, -10.0, 10.0, false, false, Interface::limited); static Parameter interfaceZPOverallCoupling ("ZPOverallCoupling", "An overall coupling of the Z prime to quark-antiquark", &ZprimeModel::_ZPoverall, 1.0, -10000.0, 10000.0, false, false, Interface::limited); static ClassDocumentation documentation ("There is no documentation for the ZprimeModel class"); } herwig++-2.6.0.orig/Models/Zprime/ZprimeModel.h0000644000175000017500000002251411754474773022073 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_ZprimeModel_H #define HERWIG_ZprimeModel_H // // This is the declaration of the ZprimeModel class. // #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ZprimeModel.fh" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * Here is the documentation of the ZprimeModel class. * * @see \ref ZprimeModelInterfaces "The interfaces" * defined for ZprimeModel. */ class ZprimeModel: public StandardModel { public: /** * The default constructor. */ ZprimeModel(); /** @name Vertices */ //@{ /** * Pointer to the object handling Z prime quark-anti-quark vertex. */ tAbstractFFVVertexPtr vertexZPQQ() const {return _theZPQQVertex;} 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(); /** * Return the Z prime top-up left-handed coupling */ double _cZPTU_left() const {return _gZPTU_L;} /** * Return the Z prime top-up right-handed coupling */ double _cZPTU_right() const {return _gZPTU_R;} /** * Return the Z prime d-dbar left-handed coupling */ double _cZPDD_left() const {return _gZPDD_L;} /** * Return the Z prime d-dbar right-handed coupling */ double _cZPDD_right() const {return _gZPDD_R;} /** * Return the Z prime top-anti-top left-handed coupling */ double _cZPTT_left() const {return _gZPTT_L;} /** * Return the Z prime top-anti-top right-handed coupling */ double _cZPTT_right() const {return _gZPTT_R;} /** * Return the Z prime u-ubar left-handed coupling */ double _cZPUU_left() const {return _gZPUU_L;} /** * Return the Z prime u-ubar right-handed coupling */ double _cZPUU_right() const {return _gZPUU_R;} /** * Return the Z prime c-cbar left-handed coupling */ double _cZPCC_left() const {return _gZPCC_L;} /** * Return the Z prime c-cbar right-handed coupling */ double _cZPCC_right() const {return _gZPCC_R;} /** * Return the Z prime b-bbar left-handed coupling */ double _cZPBB_left() const {return _gZPBB_L;} /** * Return the Z prime b-bbar right-handed coupling */ double _cZPBB_right() const {return _gZPBB_R;} /** * Return the Z prime s-sbar left-handed coupling */ double _cZPSS_left() const {return _gZPSS_L;} /** * Return the Z prime c-cbar right-handed coupling */ double _cZPSS_right() const {return _gZPSS_R;} /** * Return the Z prime e+e- left-handed coupling */ double _cZPee_left() const {return _gZPee_L;} /** * Return the Z prime e+e- right-handed coupling */ double _cZPee_right() const {return _gZPee_R;} /** * Return the Z prime mu+mu- left-handed coupling */ double _cZPmm_left() const {return _gZPmm_L;} /** * Return the Z prime mu+mu- right-handed coupling */ double _cZPmm_right() const {return _gZPmm_R;} /** * Return the Z prime tau+tau- left-handed coupling */ double _cZPtt_left() const {return _gZPtt_L;} /** * Return the Z prime tau+tau- right-handed coupling */ double _cZPtt_right() const {return _gZPtt_R;} /** * Return the Z prime nu_e nu_ebar left-handed coupling */ double _cZPnuenue_left() const {return _gZPnuenue_L;} /** * Return the Z prime nu_e nu_ebar right-handed coupling */ double _cZPnuenue_right() const {return _gZPnuenue_R;} /** * Return the Z prime nu_mu nu_mubar left-handed coupling */ double _cZPnumnum_left() const {return _gZPnumnum_L;} /** * Return the Z prime nu_mu nu_mubar right-handed coupling */ double _cZPnumnum_right() const {return _gZPnumnum_R;} /** * Return the Z prime nu_tau nu_taubar left-handed coupling */ double _cZPnutnut_left() const {return _gZPnutnut_L;} /** * Return the Z prime nu_tau nu_taubar right-handed coupling */ double _cZPnutnut_right() const {return _gZPnutnut_R;} /** * Return the overall coupling of the Z prime to quark-anti-quark */ double _cZPoverallCoup() const {return _ZPoverall;} 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(); //@} 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initZprimeModel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ZprimeModel & operator=(const ZprimeModel &); /** * Pointer to the object handling the Zp to Quark-antiQuark vertex. */ AbstractFFVVertexPtr _theZPQQVertex; /** * Z prime coupling to u-ubar (left-handed) */ double _gZPUU_L; /** * Z prime coupling to u-ubar (right-handed) */ double _gZPUU_R; /** * Z prime coupling to d-dbar (left-handed) */ double _gZPDD_L; /** * Z prime coupling to d-dbar (right-handed) */ double _gZPDD_R; /** * Z prime coupling to c-cbar (left-handed) */ double _gZPCC_L; /** * Z prime coupling to c-cbar (right-handed) */ double _gZPCC_R; /** * Z prime coupling to s-sbar (left-handed) */ double _gZPSS_L; /** * Z prime coupling to s-sbar (right-handed) */ double _gZPSS_R; /** * Z prime coupling to b-bbar (left-handed) */ double _gZPBB_L; /** * Z prime coupling to b-bbar (right-handed) */ double _gZPBB_R; /** * Z prime coupling to top-up (left-handed) */ double _gZPTU_L; /** * Z prime coupling to top-up (right-handed) */ double _gZPTU_R; /** * Z prime coupling to top-anti-top (left-handed) */ double _gZPTT_L; /** * Z prime coupling to top-anti-top (right-handed) */ double _gZPTT_R; /** * Z prime coupling to e+e- (left-handed) */ double _gZPee_L; /** * Z prime coupling to e+e- (right-handed) */ double _gZPee_R; /** * Z prime coupling to mu+mu- (left-handed) */ double _gZPmm_L; /** * Z prime coupling to mu+mu- (right-handed) */ double _gZPmm_R; /** * Z prime coupling to tau+tau- (left-handed) */ double _gZPtt_L; /** * Z prime coupling to tau+tau- (right-handed) */ double _gZPtt_R; /** * Z prime coupling to nu_e nu_ebar (left-handed) */ double _gZPnuenue_L; /** * Z prime coupling to nu_e nu_ebar (right-handed) */ double _gZPnuenue_R; /** * Z prime coupling to nu_mu nu_mubar (left-handed) */ double _gZPnumnum_L; /** * Z prime coupling to nu_mu nu_mubar (right-handed) */ double _gZPnumnum_R; /** * Z prime coupling to nu_tau nu_taubar (left-handed) */ double _gZPnutnut_L; /** * Z prime coupling to nu_tau nu_taubar (right-handed) */ double _gZPnutnut_R; /** * Z prime overall coupling */ double _ZPoverall; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ZprimeModel. */ template <> struct BaseClassTrait { /** Typedef of the first base class of ZprimeModel. */ typedef Herwig::StandardModel NthBase; }; /** This template specialization informs ThePEG about the name of * the ZprimeModel class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::ZprimeModel"; } /** * The name of a file containing the dynamic library where the class * ZprimeModel is implemented. It may also include several, space-separated, * libraries if the class ZprimeModel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwZprimeModel.so"; } }; /** @endcond */ } #endif /* HERWIG_ZprimeModel_H */ herwig++-2.6.0.orig/Models/Zprime/ZprimeModelZPQQVertex.cc0000644000175000017500000001301011754474773024132 0ustar sylvestresylvestre// -*- C++ -*- // // ZprimeModelZPQQVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ZprimeModelZPQQVertex class. // #include "ZprimeModelZPQQVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Config/Constants.h" using namespace Herwig; IBPtr ZprimeModelZPQQVertex::clone() const { return new_ptr(*this); } IBPtr ZprimeModelZPQQVertex::fullclone() const { return new_ptr(*this); } ZprimeModelZPQQVertex::ZprimeModelZPQQVertex() { addToList(-2,6,32); addToList(-6,2,32); addToList(-6,6,32); addToList(-5,5,32); addToList(-4,4,32); addToList(-3,3,32); addToList(-2,2,32); addToList(-1,1,32); addToList(-11,11,32); addToList(-13,13,32); addToList(-15,15,32); addToList(-12,12,32); addToList(-14,14,32); addToList(-16,16,32); orderInGem(1); orderInGs(0); } void ZprimeModelZPQQVertex::doinit() { _theModel = generator()->standardModel(); tcHwZprimePtr hwZprime=dynamic_ptr_cast(_theModel); if(hwZprime) { _cZPTU_R =hwZprime->_cZPTU_right(); _cZPTU_L =hwZprime->_cZPTU_left(); _cZPTT_R =hwZprime->_cZPTT_right(); _cZPTT_L =hwZprime->_cZPTT_left(); _cZPUU_R =hwZprime->_cZPUU_right(); _cZPUU_L =hwZprime->_cZPUU_left(); _cZPCC_R =hwZprime->_cZPCC_right(); _cZPCC_L =hwZprime->_cZPCC_left(); _cZPDD_R =hwZprime->_cZPDD_right(); _cZPDD_L =hwZprime->_cZPDD_left(); _cZPBB_R =hwZprime->_cZPBB_right(); _cZPBB_L =hwZprime->_cZPBB_left(); _cZPSS_R =hwZprime->_cZPSS_right(); _cZPSS_L =hwZprime->_cZPSS_left(); _cZPee_R =hwZprime->_cZPee_right(); _cZPee_L =hwZprime->_cZPee_left(); _cZPmm_R =hwZprime->_cZPmm_right(); _cZPmm_L =hwZprime->_cZPmm_left(); _cZPtt_R =hwZprime->_cZPtt_right(); _cZPtt_L =hwZprime->_cZPtt_left(); _cZPnuenue_R =hwZprime->_cZPnuenue_right(); _cZPnuenue_L =hwZprime->_cZPnuenue_left(); _cZPnuenue_R =hwZprime->_cZPnumnum_right(); _cZPnumnum_L =hwZprime->_cZPnumnum_left(); _cZPnutnut_R =hwZprime->_cZPnutnut_right(); _cZPnutnut_L =hwZprime->_cZPnutnut_left(); _cZP_o =hwZprime->_cZPoverallCoup(); } FFVVertex::doinit(); } void ZprimeModelZPQQVertex::persistentOutput(PersistentOStream & os) const { os << _cZPTU_R << _cZPTU_L << _cZPTT_R << _cZPTT_L << _cZPUU_R << _cZPUU_L << _cZPCC_R << _cZPCC_L << _cZPDD_R << _cZPDD_L << _cZPSS_R << _cZPSS_L << _cZPBB_R << _cZPBB_L << _cZPee_R << _cZPee_L << _cZPmm_R << _cZPmm_L << _cZPtt_R << _cZPtt_L << _cZPnuenue_R << _cZPnuenue_L << _cZPnumnum_R << _cZPnumnum_L << _cZPnutnut_R << _cZPnutnut_L << _cZP_o; } void ZprimeModelZPQQVertex::persistentInput(PersistentIStream & is, int) { is >> _cZPTU_R >> _cZPTU_L >> _cZPTT_R >> _cZPTT_L >> _cZPUU_R >> _cZPUU_L >> _cZPCC_R >> _cZPCC_L >> _cZPDD_R >> _cZPDD_L >> _cZPSS_R >> _cZPSS_L >> _cZPBB_R >> _cZPBB_L >> _cZPee_R >> _cZPee_L >> _cZPmm_R >> _cZPmm_L >> _cZPtt_R >> _cZPtt_L >> _cZPnuenue_R >> _cZPnuenue_L >> _cZPnumnum_R >> _cZPnumnum_L >> _cZPnutnut_R >> _cZPnutnut_L >> _cZP_o; } ClassDescription ZprimeModelZPQQVertex::initZprimeModelZPQQVertex; // Definition of the static class description member. void ZprimeModelZPQQVertex::Init() { static ClassDocumentation documentation ("The ZprimeModelZPQQVertex class is the implementation" " of the helicity amplitude calculation of the Zprime" " Z prime Quark-antiQuark vertex."); } void ZprimeModelZPQQVertex::setCoupling(Energy2,tcPDPtr aa ,tcPDPtr bb, tcPDPtr cc) { double _cR = 1.0, _cL = 1.0; long ccc(cc->id()), aaa(aa->id()), bbb(bb->id()); if( fabs(aaa) == 6 || fabs(bbb) == 6 || fabs(ccc) == 6 ) { if( fabs(aaa) !=2 && fabs(bbb) !=2 && fabs(ccc) != 2 ) { _cL = _cZPTT_L; _cR = _cZPTT_R; } else if( fabs(aaa) ==2 || fabs(bbb) ==2 || fabs(ccc) == 2 ) { _cL = _cZPTU_L; _cR = _cZPTU_R; } } if( fabs(aaa) == 5 || fabs(bbb) == 5 || fabs(ccc) == 5 ) { _cL = _cZPBB_L; _cR = _cZPBB_R; } if( fabs(aaa) == 4 || fabs(bbb) == 4 || fabs(ccc) == 4 ) { _cL = _cZPCC_L; _cR = _cZPCC_R; } if( fabs(aaa) == 3 || fabs(bbb) == 3 || fabs(ccc) == 3 ) { _cL = _cZPSS_L; _cR = _cZPSS_R; } if( (fabs(aaa) == 2 || fabs(bbb) == 2 || fabs(ccc) == 2) && (fabs(aaa) !=6 && fabs(bbb) !=6 && fabs(ccc) != 6)) { _cL = _cZPUU_L; _cR = _cZPUU_R; } if( fabs(aaa) == 1 || fabs(bbb) == 1 || fabs(ccc) == 1 ) { _cL = _cZPDD_L; _cR = _cZPDD_R; } if( fabs(aaa) == 11 || fabs(bbb) == 11 || fabs(ccc) == 11 ) { _cL = _cZPee_L; _cR = _cZPee_R; } if( fabs(aaa) == 13 || fabs(bbb) == 13 || fabs(ccc) == 13 ) { _cL = _cZPmm_L; _cR = _cZPmm_R; } if( fabs(aaa) == 15 || fabs(bbb) == 15 || fabs(ccc) == 15 ) { _cL = _cZPtt_L; _cR = _cZPtt_R; } if( fabs(aaa) == 12 || fabs(bbb) == 12 || fabs(ccc) == 12 ) { _cL = _cZPnuenue_L; _cR = _cZPnuenue_R; } if( fabs(aaa) == 14 || fabs(bbb) == 14 || fabs(ccc) == 14 ) { _cL = _cZPnumnum_L; _cR = _cZPnumnum_R; } if( fabs(aaa) == 16 || fabs(bbb) == 16 || fabs(ccc) == 16 ) { _cL = _cZPnutnut_L; _cR = _cZPnutnut_R; } right(_cR); left(_cL); norm(_cZP_o); } herwig++-2.6.0.orig/Models/Zprime/Makefile.am0000644000175000017500000000035611755403515021512 0ustar sylvestresylvestreif WANT_ZPRIME pkglib_LTLIBRARIES = HwZprimeModel.la endif HwZprimeModel_la_SOURCES = ZprimeModel.cc ZprimeModel.h ZprimeModel.fh ZprimeModelZPQQVertex.h ZprimeModelZPQQVertex.cc HwZprimeModel_la_LDFLAGS = -module -version-info 1:0:0 herwig++-2.6.0.orig/Models/Zprime/ZprimeModelZPQQVertex.h0000644000175000017500000001370611754474773024010 0ustar sylvestresylvestre// -*- C++ -*- // // ZprimeModelZPQQVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ZprimeModelZPQQVertex_H #define HERWIG_ZprimeModelZPQQVertex_H // // This is the declaration of the ZprimeModelZPQQVertex class. #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "Herwig++/Models/Zprime/ZprimeModel.h" #include "ThePEG/PDT/EnumParticles.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the vertex coupling the Standard Model Higgs * to the Standard Model fermions for helicity amplitude calculations * * @see FFVVertex * @see VertexBase */ class ZprimeModelZPQQVertex: public FFVVertex { public: /** * Default constructor. */ ZprimeModelZPQQVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initZprimeModelZPQQVertex; /** * Private and non-existent assignment operator. */ ZprimeModelZPQQVertex & operator=(const ZprimeModelZPQQVertex &); /** * Pointer to the model object. */ tcSMPtr _theModel; private: /** * Storage of the couplings. */ //@{ /** * Z prime coupling to top-up (left-handed) */ double _cZPTU_L; /** * Z prime coupling to top-up (right-handed) */ double _cZPTU_R; /** * Z prime coupling to top-anti-top (left-handed) */ double _cZPTT_L; /** * Z prime coupling to top-anti-top (right-handed) */ double _cZPTT_R; /** * Z prime coupling to u-ubar (left-handed) */ double _cZPUU_L; /** * Z prime coupling to u-ubar (right-handed) */ double _cZPUU_R; /** * Z prime coupling to c-cbar (left-handed) */ double _cZPCC_L; /** * Z prime coupling to c-cbar (right-handed) */ double _cZPCC_R; /** * Z prime coupling to s-sbar (left-handed) */ double _cZPSS_L; /** * Z prime coupling to s-sbar (right-handed) */ double _cZPSS_R; /** * Z prime coupling to d-dbar (left-handed) */ double _cZPDD_L; /** * Z prime coupling to d-dbar (right-handed) */ double _cZPDD_R; /** * Z prime coupling to d-dbar (left-handed) */ double _cZPBB_L; /** * Z prime coupling to d-dbar (right-handed) */ double _cZPBB_R; /** * Z prime coupling to e+e- (left-handed) */ double _cZPee_L; /** * Z prime coupling to e+e- (right-handed) */ double _cZPee_R; /** * Z prime coupling to mu+mu- (left-handed) */ double _cZPmm_L; /** * Z prime coupling to mu+mu- (right-handed) */ double _cZPmm_R; /** * Z prime coupling to tau+tau- (left-handed) */ double _cZPtt_L; /** * Z prime coupling to tau+tau- (right-handed) */ double _cZPtt_R; /** * Z prime coupling to nu_e nu_ebar (left-handed) */ double _cZPnuenue_L; /** * Z prime coupling to nu_e nu_ebar (right-handed) */ double _cZPnuenue_R; /** * Z prime coupling to nu_mu nu_mubar (left-handed) */ double _cZPnumnum_L; /** * Z prime coupling to nu_mu nu_mubar (right-handed) */ double _cZPnumnum_R; /** * Z prime coupling to nu_tau nu_taubar (left-handed) */ double _cZPnutnut_L; /** * Z prime coupling to nu_tau nu_taubar (right-handed) */ double _cZPnutnut_R; /** * Z prime overall coupling */ double _cZP_o; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ZprimeModelZPQQVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of ZprimeModelZPQQVertex. */ typedef ThePEG::Helicity::FFVVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::ZprimeModelZPQQVertex"; } }; /** @endcond */ } #endif /* HERWIG_ZprimeModelZPQQVertex_H */ herwig++-2.6.0.orig/Models/Zprime/ZprimeModel.fh0000644000175000017500000000047611754474773022244 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the HwZprimeModel class. // #ifndef HERWIG_HwZprimeModel_FH #define HERWIG_HwZprimeModel_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ZprimeModel; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ZprimeModel,HwZprimePtr); } #endif herwig++-2.6.0.orig/Models/Makefile.am0000644000175000017500000000016411754474773020256 0ustar sylvestresylvestreSUBDIRS = RSModel StandardModel General Susy UED Zprime \ Transplanckian ADD Leptoquarks Sextet TTbAsymm herwig++-2.6.0.orig/Models/ADD/0000755000175000017500000000000011756464206016601 5ustar sylvestresylvestreherwig++-2.6.0.orig/Models/ADD/ADDModelVVGRVertex.cc0000644000175000017500000000425611754474773022403 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModelVVGRVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ADDModelVVGRVertex class. // #include "ADDModelVVGRVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; void ADDModelVVGRVertex::persistentOutput(PersistentOStream & os) const { os << ounit(kappa_,InvGeV) << ounit(r_,GeV); } void ADDModelVVGRVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(kappa_,InvGeV) >> iunit(r_,GeV); } ClassDescription ADDModelVVGRVertex::initADDModelVVGRVertex; // Definition of the static class description member. void ADDModelVVGRVertex::Init() { static ClassDocumentation documentation ("The ADDModelVVGRVertex class is the implementation" " of the ADDModel vector-vector-graviton vertex"); } void ADDModelVVGRVertex::setCoupling(Energy2,tcPDPtr,tcPDPtr, tcPDPtr) { norm(Complex(UnitRemoval::E * kappa_)); } ADDModelVVGRVertex::ADDModelVVGRVertex() : kappa_(ZERO), r_(ZERO) { orderInGem(1); orderInGs (0); } void ADDModelVVGRVertex::doinit() { addToList(23,23,39); addToList(22,22,39); addToList(24,-24,39); addToList(21,21,39); VVTVertex::doinit(); tcHwADDPtr hwADD=dynamic_ptr_cast(generator()->standardModel()); if(!hwADD) throw Exception() << "Must be ADDModel in ADDModelVVGRVertex::doinit()" << Exception::runerror; kappa_=2./hwADD->MPlanckBar(); r_ = sqr(hwADD->LambdaT())/hwADD->MPlanckBar(); } Complex ADDModelVVGRVertex::propagator(int iopt, Energy2 q2,tcPDPtr part, Energy mass, Energy width) { if(part->id()!=ParticleID::Graviton) return VertexBase::propagator(iopt,q2,part,mass,width); else return Complex(4.*Constants::pi*UnitRemoval::E2/sqr(r_)); } herwig++-2.6.0.orig/Models/ADD/ADDModelWWWGRVertex.cc0000644000175000017500000000672011754474773022532 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModelWWWGRVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ADDModelWWWGRVertex class. // #include "ADDModelWWWGRVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; ADDModelWWWGRVertex::ADDModelWWWGRVertex() : kappa_(ZERO), r_(ZERO), couplast_(0.), q2last_(ZERO), zfact_(0.) { // order in the couplings orderInGem(2); orderInGs (0); } void ADDModelWWWGRVertex::doinit() { addToList(24,-24, 22, 39); addToList(24,-24, 23, 39); VVVTVertex::doinit(); zfact_ = sqrt((1.-sin2ThetaW())/sin2ThetaW()); // set the graviton coupling tcHwADDPtr hwADD=dynamic_ptr_cast(generator()->standardModel()); if(!hwADD) throw Exception() << "Must have ADDModel in ADDModelWWWGRVertex::doinit()" << Exception::runerror; kappa_=2./hwADD->MPlanckBar(); r_ = sqr(hwADD->LambdaT())/hwADD->MPlanckBar(); } void ADDModelWWWGRVertex::persistentOutput(PersistentOStream & os) const { os << ounit(kappa_,InvGeV) << zfact_ << ounit(r_,GeV); } void ADDModelWWWGRVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(kappa_,InvGeV) >> zfact_ >> iunit(r_,GeV); } ClassDescription ADDModelWWWGRVertex::initADDModelWWWGRVertex; // Definition of the static class description member. void ADDModelWWWGRVertex::Init() { static ClassDocumentation documentation ("The ADDModelWWWGRVertex class is the four point coupling" " of three vector bosons and a graviton in the Randell-Sundrum model."); } // couplings for the WWWGR vertex void ADDModelWWWGRVertex::setCoupling(Energy2 q2,tcPDPtr a,tcPDPtr b, tcPDPtr c, tcPDPtr) { int ida=a->id(); int idb=b->id(); int idc=c->id(); // first the overall normalisation if(q2!=q2last_||couplast_==0.) { couplast_ = electroMagneticCoupling(q2); q2last_=q2; } // W- W+ photon and cylic perms if((ida==-24 && idb== 24 && idc== 22) || (ida== 22 && idb==-24 && idc== 24) || (ida== 24 && idb== 22 && idc==-24) ) norm(Complex(couplast_*kappa_*UnitRemoval::E)); // W+ W- photon (anticylic perms of above) else if((ida== 24 && idb==-24 && idc== 22) || (ida== 22 && idb== 24 && idc==-24) || (ida==-24 && idb== 22 && idc== 24) ) norm(-Complex(couplast_*kappa_*UnitRemoval::E)); // W- W+ Z and cylic perms else if((ida==-24 && idb== 24 && idc== 23) || (ida== 23 && idb==-24 && idc== 24) || (ida== 24 && idb== 23 && idc==-24) ) norm(Complex(couplast_*zfact_*kappa_*UnitRemoval::E)); // W+ W- Z (anticylic perms of above) else if((ida== 24 && idb==-24 && idc== 23) || (ida== 23 && idb== 24 && idc==-24) || (ida==-24 && idb== 23 && idc== 24) ) norm(-Complex(couplast_*zfact_*kappa_*UnitRemoval::E)); else assert(false); } Complex ADDModelWWWGRVertex::propagator(int iopt, Energy2 q2,tcPDPtr part, Energy mass, Energy width) { if(part->id()!=ParticleID::Graviton) return VertexBase::propagator(iopt,q2,part,mass,width); else return Complex(4.*Constants::pi*UnitRemoval::E2/sqr(r_)); } herwig++-2.6.0.orig/Models/ADD/GravitonMassGenerator.cc0000644000175000017500000000542111754474773023406 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the GravitonMassGenerator class. // #include "GravitonMassGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ADDModel.h" using namespace Herwig; GravitonMassGenerator::GravitonMassGenerator() : prefactor_(0.), delta_(2), md_(1000.*GeV), mMin_(MeV) {} IBPtr GravitonMassGenerator::clone() const { return new_ptr(*this); } IBPtr GravitonMassGenerator::fullclone() const { return new_ptr(*this); } void GravitonMassGenerator::persistentOutput(PersistentOStream & os) const { os << prefactor_ << delta_ << ounit(md_,GeV) << ounit(mMin_,GeV); } void GravitonMassGenerator::persistentInput(PersistentIStream & is, int) { is >> prefactor_ >> delta_ >> iunit(md_,GeV) >> iunit(mMin_,GeV); } ClassDescription GravitonMassGenerator::initGravitonMassGenerator; // Definition of the static class description member. void GravitonMassGenerator::Init() { static ClassDocumentation documentation ("The GravitonMassGenerator class generates the mass for external gravitions " "in the ADD model."); static Parameter interfaceMinimumMass ("MinimumMass", "Minimum gravition mass to avoid numerical problems", &GravitonMassGenerator::mMin_, GeV, MeV, MeV, GeV, false, false, Interface::limited); } void GravitonMassGenerator::doinit() { GenericMassGenerator::doinit(); tcHwADDPtr hwADD = dynamic_ptr_cast(generator()->standardModel()); if(!hwADD) throw Exception() << "Must have ADDModel in GravitonMassGenerator::doinit()" << Exception::runerror; delta_ = hwADD->delta(); md_ = hwADD->MD(); // calculate the prefactor prefactor_ = sqr(hwADD->MPlanckBar()/md_); // even no of dimensions if(delta_%2==0) { unsigned int n = delta_/2; prefactor_ *= 2.*pow(Constants::pi,int(n)); for(unsigned int ix=1;ix/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Models/ADD DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwADDModel_la_LIBADD = am_HwADDModel_la_OBJECTS = ADDModel.lo ADDModelFFGRVertex.lo \ ADDModelFFGGRVertex.lo ADDModelFFWGRVertex.lo \ ADDModelSSGRVertex.lo ADDModelVVGRVertex.lo \ ADDModelGGGGRVertex.lo ADDModelWWWGRVertex.lo \ GravitonMassGenerator.lo HwADDModel_la_OBJECTS = $(am_HwADDModel_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwADDModel_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwADDModel_la_LDFLAGS) $(LDFLAGS) \ -o $@ @WANT_ADD_TRUE@am_HwADDModel_la_rpath = -rpath $(pkglibdir) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwADDModel_la_SOURCES) DIST_SOURCES = $(HwADDModel_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @WANT_ADD_TRUE@pkglib_LTLIBRARIES = HwADDModel.la HwADDModel_la_SOURCES = ADDModel.fh ADDModel.cc ADDModel.h \ ADDModelFFGRVertex.cc ADDModelFFGRVertex.h \ ADDModelFFGGRVertex.cc ADDModelFFGGRVertex.h \ ADDModelFFWGRVertex.cc ADDModelFFWGRVertex.h \ ADDModelSSGRVertex.cc ADDModelSSGRVertex.h \ ADDModelVVGRVertex.cc ADDModelVVGRVertex.h \ ADDModelGGGGRVertex.cc ADDModelGGGGRVertex.h \ ADDModelWWWGRVertex.cc ADDModelWWWGRVertex.h \ GravitonMassGenerator.h GravitonMassGenerator.cc HwADDModel_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Models/ADD/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Models/ADD/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwADDModel.la: $(HwADDModel_la_OBJECTS) $(HwADDModel_la_DEPENDENCIES) $(EXTRA_HwADDModel_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwADDModel_la_LINK) $(am_HwADDModel_la_rpath) $(HwADDModel_la_OBJECTS) $(HwADDModel_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ADDModel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ADDModelFFGGRVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ADDModelFFGRVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ADDModelFFWGRVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ADDModelGGGGRVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ADDModelSSGRVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ADDModelVVGRVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ADDModelWWWGRVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GravitonMassGenerator.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Models/ADD/ADDModelFFGGRVertex.h0000644000175000017500000001116111754474773022305 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModelFFGGRVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ADDModelFFGGRVertex_H #define HERWIG_ADDModelFFGGRVertex_H // // This is the declaration of the ADDModelFFGGRVertex class. #include "ThePEG/Helicity/Vertex/Tensor/FFVTVertex.h" #include "ADDModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the fermion-antifermion-vector-graviton * vertex for the Randell-Sundrum model * * @see FFVTVertex * @see VertexBase */ class ADDModelFFGGRVertex: public FFVTVertex { public: /** * Default constructor. */ ADDModelFFGGRVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the foruth particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3, tcPDPtr part4); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Calculate the propagator for a diagram. * @param iopt The option for the Breit-Wigner shape * @param q2 The scale * @param part The ParticleData pointer for the off-shell particle. * @param mass The mass if not to be taken from the ParticleData object * @param width The width if not to be taken from the ParticleData object */ virtual Complex propagator(int iopt, Energy2 q2,tcPDPtr part, Energy mass=-GeV, Energy width=-GeV); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initADDModelFFGGRVertex; /** * Private and non-existent assignment operator. */ ADDModelFFGGRVertex & operator=(const ADDModelFFGGRVertex &); private: /** * Storage of the couplings. */ //@{ /** * The last value of the coupling/ */ Complex couplast_; /** * The last value of the scale, \f$q^2\f$. */ Energy2 q2last_; /** * The graviton coupling. */ InvEnergy kappa_; /** * Mass ratio for the propagator */ Energy r_; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ADDModelFFGGRVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of ADDModelFFGGRVertex. */ typedef ThePEG::Helicity::FFVTVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::ADDModelFFGGRVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwADDModel.so"; } }; /** @endcond */ } #endif /* HERWIG_ADDModelFFGGRVertex_H */ herwig++-2.6.0.orig/Models/ADD/ADDModelFFGRVertex.h0000644000175000017500000001046411754474773022203 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModelFFGRVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ADDModelFFGRVertex_H #define HERWIG_ADDModelFFGRVertex_H // // This is the declaration of the ADDModelFFGRVertex class. #include "ThePEG/Helicity/Vertex/Tensor/FFTVertex.h" #include "ADDModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the Randell-Sundrum model fermion-antifermion * tensor vertex for helicity amplitude calculations * * @see FFTVertex * @see VertexBase */ class ADDModelFFGRVertex: public FFTVertex { public: /** * Default constructor. */ ADDModelFFGRVertex(); 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Calculate the propagator for a diagram. * @param iopt The option for the Breit-Wigner shape * @param q2 The scale * @param part The ParticleData pointer for the off-shell particle. * @param mass The mass if not to be taken from the ParticleData object * @param width The width if not to be taken from the ParticleData object */ virtual Complex propagator(int iopt, Energy2 q2,tcPDPtr part, Energy mass=-GeV, Energy width=-GeV); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initADDModelFFGRVertex; /** * Private and non-existent assignment operator. */ ADDModelFFGRVertex & operator=(const ADDModelFFGRVertex &); /** * The coupling. */ InvEnergy kappa_; /** * Mass ratio for the propagator */ Energy r_; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ADDModelFFGRVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of ADDModelFFGRVertex. */ typedef ThePEG::Helicity::FFTVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::ADDModelFFGRVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwADDModel.so"; } }; /** @endcond */ } #endif /* HERWIG_ADDModelFFGRVertex_H */ herwig++-2.6.0.orig/Models/ADD/ADDModelSSGRVertex.cc0000644000175000017500000000415211754474773022370 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModelSSGRVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ADDModelSSGRVertex class. // #include "ADDModelSSGRVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; ADDModelSSGRVertex::ADDModelSSGRVertex() : kappa_(ZERO), r_(ZERO) { orderInGem(1); orderInGs (0); } void ADDModelSSGRVertex::doinit() { addToList(25,25,39); SSTVertex::doinit(); tcHwADDPtr hwADD=dynamic_ptr_cast(generator()->standardModel()); if(!hwADD) throw Exception() << "Must have ADDModel in ADDModelSSGRVertex::doinit()" << Exception::runerror; kappa_=2./hwADD->MPlanckBar(); r_ = sqr(hwADD->LambdaT())/hwADD->MPlanckBar(); } void ADDModelSSGRVertex::persistentOutput(PersistentOStream & os) const { os << ounit(kappa_,InvGeV) << ounit(r_,GeV); } void ADDModelSSGRVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(kappa_,InvGeV) >> iunit(r_,GeV); } ClassDescription ADDModelSSGRVertex::initADDModelSSGRVertex; // Definition of the static class description member. void ADDModelSSGRVertex::Init() { static ClassDocumentation documentation ("The ADDModelSSGRVertex class is the implementation of" " the ADDModel scalar-scalar-graviton vertex"); } void ADDModelSSGRVertex::setCoupling(Energy2,tcPDPtr,tcPDPtr, tcPDPtr) { norm(Complex(kappa_ * UnitRemoval::E)); } Complex ADDModelSSGRVertex::propagator(int iopt, Energy2 q2,tcPDPtr part, Energy mass, Energy width) { if(part->id()!=ParticleID::Graviton) return VertexBase::propagator(iopt,q2,part,mass,width); else return Complex(4.*Constants::pi*UnitRemoval::E2/sqr(r_)); } herwig++-2.6.0.orig/Models/ADD/ADDModelFFWGRVertex.cc0000644000175000017500000001334011754474773022464 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModelFFWGRVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ADDModelFFWGRVertex class. // #include "ADDModelFFWGRVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Models/StandardModel/StandardCKM.h" using namespace Herwig; using namespace ThePEG; ADDModelFFWGRVertex::ADDModelFFWGRVertex() : charge_(17,0.), gl_(17,0.), gr_(17,0.), ckm_(3,vector(3,0.0)), couplast_(0.), q2last_(ZERO), kappa_(ZERO), r_(ZERO) { orderInGem(2); orderInGs (0); } void ADDModelFFWGRVertex::doinit() { for(int ix=1;ix<7;++ix) { addToList(-ix,ix,22,39); addToList(-ix,ix,23,39); } for(int ix=11;ix<17;++ix) { addToList(-ix,ix,22,39); addToList(-ix,ix,23,39); } // particles for outgoing W- // quarks for(int ix=1;ix<6;ix+=2) { for(int iy=2;iy<7;iy+=2) { addToList(-ix, iy, -24,39); } } // leptons for(int ix=11;ix<17;ix+=2) { addToList(-ix, ix+1, -24,39); } // particles for outgoing W+ // quarks for(int ix=2;ix<7;ix+=2) { for(int iy=1;iy<6;iy+=2) { addToList(-ix, iy, 24,39); } } // leptons for(int ix=11;ix<17;ix+=2) { addToList(-ix-1, ix, 24,39); } FFVTVertex::doinit(); tcHwADDPtr hwADD=dynamic_ptr_cast(generator()->standardModel()); if(!hwADD) throw Exception() << "Must have ADDModel in ADDModelFFWGRVertex::doinit()" << Exception::runerror; double sw2 = sin2ThetaW(); double fact = 0.25/sqrt(sw2*(1.-sw2)); for(int ix=1;ix<4;++ix) { charge_[2*ix-1] = hwADD->ed(); charge_[2*ix ] = hwADD->eu(); charge_[2*ix+9 ] = hwADD->ee(); charge_[2*ix+10] = hwADD->enu(); gl_[2*ix-1] = fact*(hwADD->vd() + hwADD->ad() ); gl_[2*ix ] = fact*(hwADD->vu() + hwADD->au() ); gl_[2*ix+9 ] = fact*(hwADD->ve() + hwADD->ae() ); gl_[2*ix+10] = fact*(hwADD->vnu() + hwADD->anu()); gr_[2*ix-1] = fact*(hwADD->vd() - hwADD->ad() ); gr_[2*ix ] = fact*(hwADD->vu() - hwADD->au() ); gr_[2*ix+9 ] = fact*(hwADD->ve() - hwADD->ae() ); gr_[2*ix+10] = fact*(hwADD->vnu() - hwADD->anu()); } kappa_=2./hwADD->MPlanckBar(); r_ = sqr(hwADD->LambdaT())/hwADD->MPlanckBar(); Ptr::transient_pointer CKM = generator()->standardModel()->CKM(); // cast the CKM object to the HERWIG one ThePEG::Ptr::transient_const_pointer hwCKM = ThePEG::dynamic_ptr_cast< ThePEG::Ptr:: transient_const_pointer>(CKM); if(hwCKM) { vector< vector > CKM; CKM = hwCKM->getUnsquaredMatrix(generator()->standardModel()->families()); for(unsigned int ix=0;ix<3;++ix) { for(unsigned int iy=0;iy<3;++iy) { ckm_[ix][iy]=CKM[ix][iy]; } } } else { throw Exception() << "Must have access to the Herwig::StandardCKM object" << "for the CKM matrix in SMFFWVertex::doinit()" << Exception::runerror; } } void ADDModelFFWGRVertex::persistentOutput(PersistentOStream & os) const { os << charge_ << gl_ << gr_ << ounit(kappa_,InvGeV) << ckm_ << ounit(r_,GeV); } void ADDModelFFWGRVertex::persistentInput(PersistentIStream & is, int) { is >> charge_ >> gl_ >> gr_ >> iunit(kappa_,InvGeV) >> ckm_ >> iunit(r_,GeV); } ClassDescription ADDModelFFWGRVertex::initADDModelFFWGRVertex; // Definition of the static class description member. void ADDModelFFWGRVertex::Init() { static ClassDocumentation documentation ("The ADDModelFFWGRVertexxs class is the implementation" " of the two fermion vector coupling for the ADD model."); } void ADDModelFFWGRVertex::setCoupling(Energy2 q2,tcPDPtr aa,tcPDPtr bb, tcPDPtr cc, tcPDPtr) { // work out the particles int iferm= abs(aa->id()); int ibos = abs(cc->id()); Complex coup; // overall factor assert( ibos >= 22 && ibos <= 24 ); if( q2last_ != q2 || couplast_ == 0. ) { couplast_ = electroMagneticCoupling(q2); q2last_ = q2; } // photon if(ibos==22) { // alpha coup = UnitRemoval::E * kappa_ * couplast_; // _charge of particle assert((iferm>=1 && iferm<=6)||(iferm>=11 &&iferm<=16)); coup *= charge_[iferm]; left (1.); right(1.); } // Z boson else if(ibos==23) { coup = UnitRemoval::E * kappa_ * couplast_; // _charge of particle assert((iferm>=1 && iferm<=6)||(iferm>=11 &&iferm<=16)); left (gl_[iferm]); right(gr_[iferm]); } else if(ibos==24) { coup = UnitRemoval::E * kappa_ * couplast_ * sqrt(0.5) / sqrt(sin2ThetaW()); // the left and right couplings int iferm=abs(aa->id()); int ianti=abs(bb->id()); // quarks if(iferm>=1 && iferm <=6) { int iu,id; // up type first if(iferm%2==0) { iu = iferm/2; id = (ianti+1)/2; } // down type first else { iu = ianti/2; id = (iferm+1)/2; } assert( iu>=1 && iu<=3 && id>=1 && id<=3); left(ckm_[iu-1][id-1]); right(0.); } // leptons else if(iferm>=11 && iferm <=16) { left(1.); right(0.); } else assert(false); } // set the coupling norm(coup); } Complex ADDModelFFWGRVertex::propagator(int iopt, Energy2 q2,tcPDPtr part, Energy mass, Energy width) { if(part->id()!=ParticleID::Graviton) return VertexBase::propagator(iopt,q2,part,mass,width); else return Complex(4.*Constants::pi*UnitRemoval::E2/sqr(r_)); } herwig++-2.6.0.orig/Models/ADD/GravitonMassGenerator.h0000644000175000017500000001073211754474773023251 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_GravitonMassGenerator_H #define HERWIG_GravitonMassGenerator_H // // This is the declaration of the GravitonMassGenerator class. // #include "Herwig++/PDT/GenericMassGenerator.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the GravitonMassGenerator class. * * @see \ref GravitonMassGeneratorInterfaces "The interfaces" * defined for GravitonMassGenerator. */ class GravitonMassGenerator: public GenericMassGenerator { public: /** * The default constructor. */ GravitonMassGenerator(); 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(); //@} protected: /** * Return a mass with the weight using the specified limits. * @param part The particle data pointer of the particle. * @param low The lower limit on the particle's mass. * @param upp The upper limit on the particle's mass. * @param wgt The weight for this mass. * @param shape The type of shape to use * @param r The random number used for the weight * @return The mass of the particle instance. */ virtual Energy mass(double & wgt, const ParticleData & part, const Energy low,const Energy upp, int shape, double r=UseRandom::rnd()) const; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initGravitonMassGenerator; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GravitonMassGenerator & operator=(const GravitonMassGenerator &); private: /** * prefactor */ double prefactor_; /** * Number of extra dimensions */ unsigned int delta_; /** * d-dimensional Planck mass */ Energy md_; /** * Minimum mass cut to avoid numerical problems */ Energy mMin_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of GravitonMassGenerator. */ template <> struct BaseClassTrait { /** Typedef of the first base class of GravitonMassGenerator. */ typedef Herwig::GenericMassGenerator NthBase; }; /** This template specialization informs ThePEG about the name of * the GravitonMassGenerator class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::GravitonMassGenerator"; } /** * The name of a file containing the dynamic library where the class * GravitonMassGenerator is implemented. It may also include several, space-separated, * libraries if the class GravitonMassGenerator depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwADDModel.so"; } }; /** @endcond */ } #endif /* HERWIG_GravitonMassGenerator_H */ herwig++-2.6.0.orig/Models/ADD/ADDModelSSGRVertex.h0000644000175000017500000001054711754474773022237 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModelSSGRVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ADDModelSSGRVertex_H #define HERWIG_ADDModelSSGRVertex_H // // This is the declaration of the ADDModelSSGRVertex class. #include "ThePEG/Helicity/Vertex/Tensor/SSTVertex.h" #include "ADDModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * The ADDModelSSGRVertex class is thew implementation of the graviton * coupling to the Higgs in the ADDModel. It inherits from the SSTVertex * and implements the setCoupling member * * @see SSTVertex * @see VertexBase */ class ADDModelSSGRVertex: public SSTVertex { public: /** * Default constructor. */ ADDModelSSGRVertex(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Calculate the propagator for a diagram. * @param iopt The option for the Breit-Wigner shape * @param q2 The scale * @param part The ParticleData pointer for the off-shell particle. * @param mass The mass if not to be taken from the ParticleData object * @param width The width if not to be taken from the ParticleData object */ virtual Complex propagator(int iopt, Energy2 q2,tcPDPtr part, Energy mass=-GeV, Energy width=-GeV); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initADDModelSSGRVertex; /** * Private and non-existent assignment operator. */ ADDModelSSGRVertex & operator=(const ADDModelSSGRVertex &); /** * Coupling. */ InvEnergy kappa_; /** * Mass ratio for the propagator */ Energy r_; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ADDModelSSGRVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of ADDModelSSGRVertex. */ typedef ThePEG::Helicity::SSTVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::ADDModelSSGRVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwADDModel.so"; } }; /** @endcond */ } #endif /* HERWIG_ADDModelSSGRVertex_H */ herwig++-2.6.0.orig/Models/ADD/ADDModelFFGGRVertex.cc0000644000175000017500000000515411754474773022450 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModelFFGGRVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ADDModelFFGGRVertex class. // #include "ADDModelFFGGRVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; ADDModelFFGGRVertex::ADDModelFFGGRVertex() : couplast_(0.), q2last_(ZERO), kappa_(ZERO), r_(ZERO) { orderInGem(1); orderInGs (1); } void ADDModelFFGGRVertex::doinit() { for(int ix=1;ix<7;++ix) { addToList(-ix,ix,21,39); } FFVTVertex::doinit(); tcHwADDPtr hwADD=dynamic_ptr_cast(generator()->standardModel()); if(!hwADD) throw Exception() << "Must have ADDModel in ADDModelFFGGRVertex::doinit()" << Exception::runerror; kappa_ = 2./hwADD->MPlanckBar(); r_ = sqr(hwADD->LambdaT())/hwADD->MPlanckBar(); } void ADDModelFFGGRVertex::persistentOutput(PersistentOStream & os) const { os << ounit(kappa_,InvGeV) << ounit(r_,GeV); } void ADDModelFFGGRVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(kappa_,InvGeV) >> iunit(r_,GeV); } ClassDescription ADDModelFFGGRVertex::initADDModelFFGGRVertex; // Definition of the static class description member. void ADDModelFFGGRVertex::Init() { static ClassDocumentation documentation ("The ADDModelFFGGRVertexxs class is the implementation" " of the two fermion vector coupling for the ADD model."); } #ifndef NDEBUG void ADDModelFFGGRVertex::setCoupling(Energy2 q2,tcPDPtr aa,tcPDPtr, tcPDPtr cc, tcPDPtr) { #else void ADDModelFFGGRVertex::setCoupling(Energy2 q2,tcPDPtr,tcPDPtr, tcPDPtr, tcPDPtr) { #endif // work out the particles assert(cc->id()==ParticleID::g && abs(aa->id()) <= 6); Complex coup; // overall factor if(q2last_!=q2||couplast_==0.) { couplast_ = strongCoupling(q2); q2last_=q2; } left (1.); right(1.); // set the coupling norm(UnitRemoval::E * kappa_ * couplast_); } Complex ADDModelFFGGRVertex::propagator(int iopt, Energy2 q2,tcPDPtr part, Energy mass, Energy width) { if(part->id()!=ParticleID::Graviton) return VertexBase::propagator(iopt,q2,part,mass,width); else return Complex(4.*Constants::pi*UnitRemoval::E2/sqr(r_)); } herwig++-2.6.0.orig/Models/ADD/ADDModel.cc0000644000175000017500000001040011754474773020464 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModel.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ADDModel class. // #include "ADDModel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; using namespace ThePEG::Helicity; void ADDModel::doinit() { addVertex(FFGRVertex_); addVertex(VVGRVertex_); addVertex(SSGRVertex_); addVertex(FFGGRVertex_); addVertex(FFWGRVertex_); addVertex(GGGGRVertex_); addVertex(WWWGRVertex_); BSMModel::doinit(); } void ADDModel::persistentOutput(PersistentOStream & os) const { os << ounit(mPlanckBar_,GeV) << ounit(md_,GeV) << delta_ << ounit(lambdaT_,GeV) << FFGRVertex_ << VVGRVertex_ << SSGRVertex_ << FFGGRVertex_ << FFWGRVertex_ << GGGGRVertex_ << WWWGRVertex_; } void ADDModel::persistentInput(PersistentIStream & is, int) { is >> iunit(mPlanckBar_,GeV) >> iunit(md_,GeV) >> delta_ >> iunit(lambdaT_,GeV) >> FFGRVertex_ >> VVGRVertex_ >> SSGRVertex_ >> FFGGRVertex_ >> FFWGRVertex_ >> GGGGRVertex_ >> WWWGRVertex_; } ClassDescription ADDModel::initADDModel; // Definition of the static class description member. void ADDModel::Init() { static Reference interfaceVertexFFGR ("Vertex/FFGR", "Reference to the fermion-fermion-graviton vertex", &ADDModel::FFGRVertex_, false, false, true, false, false); static Reference interfaceVertexVVGR ("Vertex/VVGR", "Reference to the vector-vector-graviton vertex", &ADDModel::VVGRVertex_, false, false, true, false, false); static Reference interfaceVertexSSGR ("Vertex/SSGR", "Reference to the scalar-scalar-graviton vertex", &ADDModel::SSGRVertex_, false, false, true, false, false); static Reference interfaceVertexFFGGR ("Vertex/FFGGR", "Reference to the fermion-antifermion-gluon graviton vertex", &ADDModel::FFGGRVertex_, false, false, true, false, false); static Reference interfaceVertexFFWGR ("Vertex/FFWGR", "Reference to the fermion-antifermion-weak vector boson graviton vertex", &ADDModel::FFWGRVertex_, false, false, true, false, false); static Reference interfaceVertexGGGGR ("Vertex/GGGGR", "Reference to the three gluon graviton vertex", &ADDModel::GGGGRVertex_, false, false, true, false, false); static Reference interfaceVertexWWWGR ("Vertex/WWWGR", "Reference to the three weak vector boson graviton vertex", &ADDModel::WWWGRVertex_, false, false, true, false, false); static ClassDocumentation documentation ("The ADDModel class replaces the Standard Model class for the" " ADD model"); static Parameter interfaceDelta ("Delta", "Number of extra dimensions", &ADDModel::delta_, 2, 2, 1000, false, false, Interface::limited); static Parameter interfaceReducedPlanckMass ("Reduced4dPlanckMass", "The reduced planck mass in 4 dimensions", &ADDModel::mPlanckBar_, GeV, 2.4e18*GeV, 1e17*GeV, 1e20*GeV, false, false, Interface::limited); static Parameter interfaceDdPlanckMass ("DdPlanckMass", "The d dimension planck mass", &ADDModel::md_, GeV, 1000.*GeV, 100.0*GeV, 1e6*GeV, false, false, Interface::limited); static Parameter interfaceLambdaT ("LambdaT", "The cut-off for virtual graviton processes", &ADDModel::lambdaT_, GeV, 1000.*GeV, 100.*GeV, 100000.0*GeV, false, false, Interface::limited); } herwig++-2.6.0.orig/Models/ADD/ADDModelFFGRVertex.cc0000644000175000017500000000437511754474773022345 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModelFFGRVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ADDModelFFGRVertex class. // #include "ADDModelFFGRVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; void ADDModelFFGRVertex::persistentOutput(PersistentOStream & os) const { os << ounit(kappa_,InvGeV) << ounit(r_,GeV); } void ADDModelFFGRVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(kappa_,InvGeV) >> iunit(r_,GeV); } ClassDescription ADDModelFFGRVertex::initADDModelFFGRVertex; // Definition of the static class description member. void ADDModelFFGRVertex::Init() { static ClassDocumentation documentation ("The ADDModelFFGRVertex class is the ADDModel calculation" " of the fermion-antifermion-graviton vertex"); } void ADDModelFFGRVertex::setCoupling(Energy2,tcPDPtr,tcPDPtr, tcPDPtr) { norm(Complex(kappa_ * UnitRemoval::E)); } ADDModelFFGRVertex::ADDModelFFGRVertex() : kappa_(ZERO), r_(ZERO) { orderInGem(1); orderInGs (0); } void ADDModelFFGRVertex::doinit() { // PDG codes for the particles // the quarks for (int ix=1;ix<7;++ix) addToList(-ix,ix,39); // the leptons for (int ix=11;ix<17;++ix) addToList(-ix,ix,39); FFTVertex::doinit(); tcHwADDPtr hwADD=dynamic_ptr_cast(generator()->standardModel()); if(!hwADD) throw Exception() << "Must have ADDModel in ADDModelFFGRVertex::doinit()" << Exception::runerror; kappa_=2./hwADD->MPlanckBar(); r_ = sqr(hwADD->LambdaT())/hwADD->MPlanckBar(); } Complex ADDModelFFGRVertex::propagator(int iopt, Energy2 q2,tcPDPtr part, Energy mass, Energy width) { if(part->id()!=ParticleID::Graviton) return VertexBase::propagator(iopt,q2,part,mass,width); else return Complex(4.*Constants::pi*UnitRemoval::E2/sqr(r_)); } herwig++-2.6.0.orig/Models/ADD/ADDModelFFWGRVertex.h0000644000175000017500000001173011754474773022327 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModelFFWGRVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ADDModelFFWGRVertex_H #define HERWIG_ADDModelFFWGRVertex_H // // This is the declaration of the ADDModelFFWGRVertex class. #include "ThePEG/Helicity/Vertex/Tensor/FFVTVertex.h" #include "ADDModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the fermion-antifermion-vector-graviton * vertex for the Randell-Sundrum model * * @see FFVTVertex * @see VertexBase */ class ADDModelFFWGRVertex: public FFVTVertex { public: /** * Default constructor. */ ADDModelFFWGRVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the foruth particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2, tcPDPtr part3, tcPDPtr part4); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Calculate the propagator for a diagram. * @param iopt The option for the Breit-Wigner shape * @param q2 The scale * @param part The ParticleData pointer for the off-shell particle. * @param mass The mass if not to be taken from the ParticleData object * @param width The width if not to be taken from the ParticleData object */ virtual Complex propagator(int iopt, Energy2 q2,tcPDPtr part, Energy mass=-GeV, Energy width=-GeV); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initADDModelFFWGRVertex; /** * Private and non-existent assignment operator. */ ADDModelFFWGRVertex & operator=(const ADDModelFFWGRVertex &); private: /** * Storage of the couplings. */ //@{ /** * The charges of the Standard Model fermions. */ vector charge_; /** * The left couplings of the Standard Model fermions. */ vector gl_; /** * The right couplings of the Standard Model fermions. */ vector gr_; /** * The elements of the CKM matrix. */ vector > ckm_; /** * The last value of the coupling/ */ Complex couplast_; /** * The last value of the scale, \f$q^2\f$. */ Energy2 q2last_; /** * The graviton coupling. */ InvEnergy kappa_; /** * Mass ratio for the propagator */ Energy r_; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ADDModelFFWGRVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of ADDModelFFWGRVertex. */ typedef ThePEG::Helicity::FFVTVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::ADDModelFFWGRVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwADDModel.so"; } }; /** @endcond */ } #endif /* HERWIG_ADDModelFFWGRVertex_H */ herwig++-2.6.0.orig/Models/ADD/Makefile.am0000644000175000017500000000105711754474773020650 0ustar sylvestresylvestreif WANT_ADD pkglib_LTLIBRARIES = HwADDModel.la endif HwADDModel_la_SOURCES = ADDModel.fh ADDModel.cc ADDModel.h \ ADDModelFFGRVertex.cc ADDModelFFGRVertex.h \ ADDModelFFGGRVertex.cc ADDModelFFGGRVertex.h \ ADDModelFFWGRVertex.cc ADDModelFFWGRVertex.h \ ADDModelSSGRVertex.cc ADDModelSSGRVertex.h \ ADDModelVVGRVertex.cc ADDModelVVGRVertex.h \ ADDModelGGGGRVertex.cc ADDModelGGGGRVertex.h \ ADDModelWWWGRVertex.cc ADDModelWWWGRVertex.h \ GravitonMassGenerator.h GravitonMassGenerator.cc HwADDModel_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:0:0 herwig++-2.6.0.orig/Models/ADD/ADDModelWWWGRVertex.h0000644000175000017500000001137611754474773022377 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModelWWWGRVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ADDModelWWWGRVertex_H #define HERWIG_ADDModelWWWGRVertex_H // // This is the declaration of the ADDModelWWWGRVertex class. #include "ThePEG/Helicity/Vertex/Tensor/VVVTVertex.h" #include "ADDModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * The ADDModelWWWGRVertex class is the implementation of the * triple vector graviton couling in the ADD model. * It inherits from VVVTVertex and implements the setCoupling member. * * @see VVVTVertex * @see VertexBase */ class ADDModelWWWGRVertex: public VVVTVertex { public: /** * Default constructor. */ ADDModelWWWGRVertex(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the foruth particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3, tcPDPtr part4); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Calculate the propagator for a diagram. * @param iopt The option for the Breit-Wigner shape * @param q2 The scale * @param part The ParticleData pointer for the off-shell particle. * @param mass The mass if not to be taken from the ParticleData object * @param width The width if not to be taken from the ParticleData object */ virtual Complex propagator(int iopt, Energy2 q2,tcPDPtr part, Energy mass=-GeV, Energy width=-GeV); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initADDModelWWWGRVertex; /** * Private and non-existent assignment operator. */ ADDModelWWWGRVertex & operator=(const ADDModelWWWGRVertex &); private: /** * Storage of the couplings. */ //@{ /** * The graviton coupling. */ InvEnergy kappa_; /** * Mass ratio for the propagator */ Energy r_; /** * The last value of the coupling/ */ Complex couplast_; /** * The last value of the scale, \f$q^2\f$. */ Energy2 q2last_; /** * The prefactor for the \f$Z\f$ vertex. */ double zfact_; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ADDModelWWWGRVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of ADDModelWWWGRVertex. */ typedef ThePEG::Helicity::VVVTVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::ADDModelWWWGRVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwADDModel.so"; } }; /** @endcond */ } #endif /* HERWIG_ADDModelWWWGRVertex_H */ herwig++-2.6.0.orig/Models/ADD/ADDModelGGGGRVertex.cc0000644000175000017500000000506411754474773022452 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModelGGGGRVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ADDModelGGGGRVertex class. // #include "ADDModelGGGGRVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; ADDModelGGGGRVertex::ADDModelGGGGRVertex() : kappa_(ZERO), r_(ZERO), couplast_(0.), q2last_(ZERO) { orderInGem(1); orderInGs (1); } void ADDModelGGGGRVertex::doinit() { addToList(21, 21, 21, 39); VVVTVertex::doinit(); // set the graviton coupling tcHwADDPtr hwADD=dynamic_ptr_cast(generator()->standardModel()); if(!hwADD) throw Exception() << "Must have ADDModel in ADDModelGGGGRVertex::doinit()" << Exception::runerror; kappa_=2./hwADD->MPlanckBar(); r_ = sqr(hwADD->LambdaT())/hwADD->MPlanckBar(); } void ADDModelGGGGRVertex::persistentOutput(PersistentOStream & os) const { os << ounit(kappa_,InvGeV) << ounit(r_,GeV); } void ADDModelGGGGRVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(kappa_,InvGeV) >> iunit(r_,GeV); } ClassDescription ADDModelGGGGRVertex::initADDModelGGGGRVertex; // Definition of the static class description member. void ADDModelGGGGRVertex::Init() { static ClassDocumentation documentation ("The ADDModelGGGGRVertex class is the four point coupling" " of three vector bosons and a graviton in the Randell-Sundrum model."); } #ifndef NDEBUG void ADDModelGGGGRVertex::setCoupling(Energy2 q2,tcPDPtr a,tcPDPtr b, tcPDPtr c, tcPDPtr) { #else void ADDModelGGGGRVertex::setCoupling(Energy2 q2,tcPDPtr,tcPDPtr, tcPDPtr, tcPDPtr) { #endif assert(a->id() == ParticleID::g && b->id() == ParticleID::g && c->id() == ParticleID::g); if(q2!=q2last_||couplast_==0.) { couplast_ = strongCoupling(q2); q2last_=q2; } norm(Complex(couplast_*kappa_*UnitRemoval::E)); } Complex ADDModelGGGGRVertex::propagator(int iopt, Energy2 q2,tcPDPtr part, Energy mass, Energy width) { if(part->id()!=ParticleID::Graviton) return VertexBase::propagator(iopt,q2,part,mass,width); else return Complex(4.*Constants::pi*UnitRemoval::E2/sqr(r_)); } herwig++-2.6.0.orig/Models/ADD/ADDModelVVGRVertex.h0000644000175000017500000001040211754474773022233 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModelVVGRVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ADDModelVVGRVertex_H #define HERWIG_ADDModelVVGRVertex_H // // This is the declaration of the ADDModelVVGRVertex class. #include "ThePEG/Helicity/Vertex/Tensor/VVTVertex.h" #include "ADDModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * This is the implementation of the vector-vector-graviton vertex for * the ADD model * * @see VVTVertex * @see VertexBase */ class ADDModelVVGRVertex: public VVTVertex { public: /** * Default constructor. */ ADDModelVVGRVertex(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Calculate the propagator for a diagram. * @param iopt The option for the Breit-Wigner shape * @param q2 The scale * @param part The ParticleData pointer for the off-shell particle. * @param mass The mass if not to be taken from the ParticleData object * @param width The width if not to be taken from the ParticleData object */ virtual Complex propagator(int iopt, Energy2 q2,tcPDPtr part, Energy mass=-GeV, Energy width=-GeV); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initADDModelVVGRVertex; /** * Private and non-existent assignment operator. */ ADDModelVVGRVertex & operator=(const ADDModelVVGRVertex &); /** * The coupling. */ InvEnergy kappa_; /** * Mass ratio for the propagator */ Energy r_; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ADDModelVVGRVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of ADDModelVVGRVertex. */ typedef ThePEG::Helicity::VVTVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::ADDModelVVGRVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwADDModel.so"; } }; /** @endcond */ } #endif /* HERWIG_ADDModelVVGRVertex_H */ herwig++-2.6.0.orig/Models/ADD/ADDModel.h0000644000175000017500000001427011754474773020337 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModel.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ADDModel_H #define HERWIG_ADDModel_H // This is the declaration of the ADDModel class. #include "Herwig++/Models/General/BSMModel.h" #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractSSTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVTVertex.h" #include "ADDModel.fh" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** \ingroup Models * * This is the class to be used instead of the Standard Model class for * the ADD model. * * @see \ref ADDModelInterfaces "The interfaces" * defined for ADDModel. * @see StandardModel * @see StandardModelBase * */ class ADDModel: public BSMModel { public: /** * The default constructor */ ADDModel() : delta_(2), mPlanckBar_(2.4e18*GeV), md_(1000.*GeV), lambdaT_(1000.*GeV) { useMe(); } /** * Number of extrac dimensions */ unsigned int delta() const {return delta_;} /** * The reduced Planck mass in 4d */ Energy MPlanckBar() const {return mPlanckBar_;} /** * The d-dimension Planck mass */ Energy MD() const {return md_;} /** * The cut-off for virtual gravition processes */ Energy LambdaT() const {return lambdaT_;} /** @name Vertices */ //@{ /** * Pointer to the object handling the \f$G\to f\bar{f}\f$ vertex. */ tAbstractFFTVertexPtr vertexFFGR() const {return FFGRVertex_;} /** * Pointer to the object handling the \f$G\to VV\f$ vertex. */ tAbstractVVTVertexPtr vertexVVGR() const {return VVGRVertex_;} /** * Pointer to the object handling the \f$G\to SS\f$ vertex. */ tAbstractSSTVertexPtr vertexSSGR() const {return SSGRVertex_;} /** * Pointer to the object handling the \f$G\to f\bar{f}g\f$ vertex. */ tAbstractFFVTVertexPtr vertexFFGGR() const {return FFGGRVertex_;} /** * Pointer to the object handling the \f$G\to f\bar{f}W^\pm/Z^0/\gamma\f$ vertex. */ tAbstractFFVTVertexPtr vertexFFWGR() const {return FFWGRVertex_;} /** * Pointer to the object handling the \f$G\to W^+W^-Z^0/\gamma\f$ vertex. */ tAbstractVVVTVertexPtr vertexWWWGR() const {return WWWGRVertex_;} /** * Pointer to the object handling the \f$G\to ggg\f$ vertex. */ tAbstractVVVTVertexPtr vertexGGGGR() const {return GGGGRVertex_;} //@} 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); 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(); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription initADDModel; /** * Private and non-existent assignment operator. */ ADDModel & operator=(const ADDModel &); private: /** * Number of extrac dimensions */ unsigned int delta_; /** * The reduced Planck mass in 4d */ Energy mPlanckBar_; /** * The d-dimension Planck mass */ Energy md_; /** * Cut-off parameter for virtual gravitons */ Energy lambdaT_; /** * Pointer to the object handling the \f$G\to f\bar{f}\f$ vertex. */ AbstractFFTVertexPtr FFGRVertex_; /** * Pointer to the object handling the \f$G\to VV\f$ vertex. */ AbstractVVTVertexPtr VVGRVertex_; /** * Pointer to the object handling the \f$G\to SS\f$ vertex. */ AbstractSSTVertexPtr SSGRVertex_; /** * Pointer to the object handling the \f$G\to f\bar{f}g\f$ vertex. */ AbstractFFVTVertexPtr FFGGRVertex_; /** * Pointer to the object handling the \f$G\to f\bar{f}W/Z^0\gamma\f$ vertex. */ AbstractFFVTVertexPtr FFWGRVertex_; /** * Pointer to the object handling the \f$G\to W^+W^-Z^0\gamma\f$ vertex. */ AbstractVVVTVertexPtr WWWGRVertex_; /** * Pointer to the object handling the \f$G\to ggg\f$ vertex. */ AbstractVVVTVertexPtr GGGGRVertex_; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ADDModel. */ template <> struct BaseClassTrait { /** Typedef of the base class of ADDModel. */ typedef Herwig::BSMModel NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return the class name.*/ static string className() { return "Herwig::ADDModel"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwADDModel.so"; } }; /** @endcond */ } #endif /* HERWIG_ADDModel_H */ herwig++-2.6.0.orig/Models/ADD/ADDModelGGGGRVertex.h0000644000175000017500000001126511754474773022314 0ustar sylvestresylvestre// -*- C++ -*- // // ADDModelGGGGRVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ADDModelGGGGRVertex_H #define HERWIG_ADDModelGGGGRVertex_H // // This is the declaration of the ADDModelGGGGRVertex class. #include "ThePEG/Helicity/Vertex/Tensor/VVVTVertex.h" #include "ADDModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * The ADDModelGGGGRVertex class is the implementation of the * triple vector graviton couling in the ADD model. * It inherits from VVVTVertex and implements the setCoupling member. * * @see VVVTVertex * @see VertexBase */ class ADDModelGGGGRVertex: public VVVTVertex { public: /** * Default constructor. */ ADDModelGGGGRVertex(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. * @param part4 The ParticleData pointer for the foruth particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3, tcPDPtr part4); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Calculate the propagator for a diagram. * @param iopt The option for the Breit-Wigner shape * @param q2 The scale * @param part The ParticleData pointer for the off-shell particle. * @param mass The mass if not to be taken from the ParticleData object * @param width The width if not to be taken from the ParticleData object */ virtual Complex propagator(int iopt, Energy2 q2,tcPDPtr part, Energy mass=-GeV, Energy width=-GeV); private: /** * Describe a concrete class with persistent data. */ static ClassDescription initADDModelGGGGRVertex; /** * Private and non-existent assignment operator. */ ADDModelGGGGRVertex & operator=(const ADDModelGGGGRVertex &); private: /** * Storage of the couplings. */ //@{ /** * The graviton coupling. */ InvEnergy kappa_; /** * Mass ratio for the propagator */ Energy r_; /** * The last value of the coupling/ */ Complex couplast_; /** * The last value of the scale, \f$q^2\f$. */ Energy2 q2last_; //@} }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ADDModelGGGGRVertex. */ template <> struct BaseClassTrait { /** Typedef of the base class of ADDModelGGGGRVertex. */ typedef ThePEG::Helicity::VVVTVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** * Return the class name. */ static string className() { return "Herwig::ADDModelGGGGRVertex"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwADDModel.so"; } }; /** @endcond */ } #endif /* HERWIG_ADDModelGGGGRVertex_H */ herwig++-2.6.0.orig/Models/General/0000755000175000017500000000000011756464205017565 5ustar sylvestresylvestreherwig++-2.6.0.orig/Models/General/VVSLoopVertex.cc0000644000175000017500000002311211754474773022612 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the VVSLoopVertex class. // #include "VVSLoopVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Looptools/clooptools.h" using namespace Herwig; using namespace ThePEG; namespace LT = Looptools; IBPtr VVSLoopVertex::clone() const { return new_ptr(*this); } IBPtr VVSLoopVertex::fullclone() const { return new_ptr(*this); } void VVSLoopVertex::persistentOutput(PersistentOStream & os) const { os << ounit(masses,GeV) << type << couplings << theNpart; } void VVSLoopVertex::persistentInput(PersistentIStream & is, int) { is >> iunit(masses,GeV) >> type >> couplings >> theNpart; } void VVSLoopVertex::doinit() { // ffini needed here for BSM initialization code! Looptools::ltini(); GeneralVVSVertex::doinit(); } void VVSLoopVertex::dofinish() { Looptools::ltexi(); GeneralVVSVertex::dofinish(); } void VVSLoopVertex::doinitrun() { Looptools::ltini(); GeneralVVSVertex::doinitrun(); } ClassDescription VVSLoopVertex::initVVSLoopVertex; // Definition of the static class description member. void VVSLoopVertex::Init() { static ClassDocumentation documentation ("The VVSLoopVertex class calculates the tensor integral" " coefficients using Looptools."); } void VVSLoopVertex::setCoupling(Energy2, tcPDPtr, tcPDPtr,tcPDPtr) { //Kinematic invariants double ps2 = invariant(0,0) / MeV2; double pv1s = invariant(1,1) / MeV2; double pv2s = invariant(2,2) / MeV2; Complex a(0.),b(0.),c(0.),d(0.),e(0.),f(0.); for(unsigned int i = 0; i< theNpart;++i) { double lmass = masses[i] / MeV; double mls = sqr(lmass); Complex lc = couplings[i].first; if(type[i] == PDT::Spin1Half) { Complex C0 = LT::C0i(LT::cc0,pv1s,pv2s,ps2,mls,mls,mls); long theC = LT::Cget(ps2,pv2s,pv1s, mls,mls,mls); Complex C1 = LT::Cval(LT::cc1,theC); Complex C2 = LT::Cval(LT::cc2,theC); Complex C00 = LT::Cval(LT::cc00,theC); Complex C11 = LT::Cval(LT::cc11,theC); Complex C12 = LT::Cval(LT::cc12,theC); Complex C22 = LT::Cval(LT::cc22,theC); Complex lpr = lc + couplings[i].second; a += 4.*lpr*lmass*(-2.*LT::B0(ps2,mls,mls)+ C0*(pv1s + pv2s - ps2) + 8.*C00)/ps2; b += 8.*lpr*lmass*(C0 + 3.*C1 +3.*C2 + 2.*(C11 + 2.*C12 + C22)); c += 4.*lpr*lmass*(C0 +2.*(2.*C1+C2 + 2.*(C11 +C12))); d += 4.*lpr*lmass*(C0 + 4.*(C1+C11+C12)); e += 8.*lpr*lmass*(C1 + 2.*C11); f += 4.*(lc - couplings[i].second)*lmass*C0; } else if(type[i] == PDT::Spin1) { long theC = LT::Cget(ps2,pv2s,pv1s,mls,mls,mls); Complex C1 = LT::Cval(LT::cc1,theC);Complex C2 = LT::Cval(LT::cc2,theC); Complex C00 = LT::Cval(LT::cc00,theC);Complex C11 = LT::Cval(LT::cc11,theC); Complex C12 = LT::Cval(LT::cc12,theC); Complex C22 = LT::Cval(LT::cc22,theC); /** * vector type can contain different types of particle * and hence the coupling is different * Here left is used for the coupling of the ith * type rather than creating another * vector to hold them. */ double pv12 = pv1s*pv2s; Complex C0A(LT::C0(pv1s,pv2s,ps2,mls,mls,mls)),A0A(LT::A0(mls)), B0A(LT::B0(ps2 ,mls,mls)), B1A(LT::B1(ps2 ,mls,mls)),B11A(LT::B11(ps2 ,mls,mls)), B0B(LT::B0(pv1s,mls,mls)),B00B(LT::B00(pv1s,mls,mls)), B1B(LT::B1(pv1s,mls,mls)),B11B(LT::B11(pv1s,mls,mls)), B0C(LT::B0(pv2s,mls,mls)),B00C(LT::B00(pv2s,mls,mls)), B1C(LT::B1(pv2s,mls,mls)),B11C(LT::B11(pv2s,mls,mls)); double mls2(mls*mls),mls3(mls2*mls); // coefficient a += 0.5*lc*(B0A*(2.*mls2*(-6.*mls + pv1s + pv2s) + mls*(-2.*mls + pv1s + pv2s)*ps2) + 2.*(8.*mls3*C0A*pv1s - 2.*mls2*C0A*(pv1s*pv1s) + 2.*mls*B00B*pv2s + 8.*mls3*C0A*pv2s + mls*B0B*pv12 + mls*B0C*pv12 - B00B*pv12 - 2.*mls2*C0A*(pv2s*pv2s) + B00C*pv1s*(2.*mls - pv2s) - mls*A0A*(pv1s + pv2s) - 8.*mls3*C0A*ps2 + 2.*mls2*C0A*pv1s*ps2 + 2.*mls2*C0A*pv2s*ps2 - mls*C0A*pv12*ps2 + (24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C00 ) )/mls3*2./ps2; b += -0.25*lc* ( 8.*mls*B0C*pv2s - 4.*B11B*(2.*mls - pv1s)*pv2s + 2.*B1B*(2.*mls - pv1s)*(4.*mls - 3.*pv2s) + 4.*B00C*(2.*mls - pv2s) - 2.*A0A*(2.*mls + pv2s) + 2.*B0B*(4.*mls2 - 2.*mls*pv1s + pv12) - 2.*mls*B0A*(pv2s - ps2) - 4.*mls*B11A*(2.*mls + ps2) + B1A*(2.*mls - pv2s)*(2.*mls + ps2) - B1A*(6.*mls - pv2s)*(2.*mls + ps2) - B0A*(8.*mls2 + (2.*mls - pv2s)*ps2) - 2.*C0A*(2.*mls*(12.*mls2 + pv2s*(pv1s + pv2s) - 2.*mls*(pv1s + 3.*pv2s)) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2) + 4.*mls*(2.*mls*B0A + (B1A + B11A)*(2.*mls + ps2)) - 2.*(2.*mls*(36.*mls2 + 2.*pv12 + (pv2s*pv2s) - 6.*mls*(pv1s + pv2s)) + (12.*mls2 + 3.*pv12 - 2.*mls*(3.*pv1s + 4.*pv2s))*ps2)*C1 - 2.*(2.*mls*(36.*mls2 + 2.*pv12 + (pv2s*pv2s) - 6.*mls*(pv1s + pv2s)) + (12.*mls2 + 3.*pv12 - 2.*mls*(3.*pv1s + 4.*pv2s))*ps2)*C2 - 4.*(24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C11 - 8.*(24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C12 - 4.*(24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C22 )/mls3; c+= -lc* (-12.*mls2 + 8.*mls*pv1s - (pv1s*pv1s) + 48.*B00B*(2.*mls - pv1s) + 24.*B00C*(2.*mls - pv2s) - 6.*A0A*(6.*mls + pv1s - 2.*ps2) - 6.*B1B*(2.*mls - pv1s)*(2.*mls - pv1s + 3.*pv2s - ps2) - 24.*mls*B11A*(2.*mls + ps2) - 3.*B1A*(4.*mls - pv1s + pv2s - ps2)*(2.*mls + ps2) - 3.*B1A*(2.*mls + ps2)*(4.*mls + pv1s - pv2s + ps2) + 6.*B1C*(2.*mls - pv2s)*(-3.*pv1s + pv2s + ps2) + 12.*B11C*(2.*mls - pv2s)*(-pv1s + pv2s + ps2) + 6.*B11B*(2.*mls - pv1s)*(3.*pv1s - 2.*pv2s + 2.*ps2) + 6.*B0C*(2.*mls*pv1s + (4.*mls + pv1s)*pv2s - 4.*mls*ps2) - 6.*B0B*(2.*mls2 - 5.*mls*pv1s - (2.*mls + pv1s)*pv2s + 4.*mls*ps2) - 3.*B0A*(2.*mls*(4.*mls + pv1s + 2.*pv2s) - (4.*mls + pv1s)*ps2) - 3.*B0A*(2.*mls*(4.*mls + 2.*pv1s + pv2s) - (2.*mls + pv2s)*ps2 + (ps2*ps2)) - 6.*C0A*(2.*mls*(12.*mls2 - (pv1s*pv1s) + pv12 + (pv2s*pv2s) - 6.*mls*(pv1s + pv2s)) + (12.*mls2 + pv12 + 2.*mls*(pv1s - pv2s))*ps2 - 2.*mls*(ps2*ps2)) + 24.*mls*(2.*mls*B0A + (B1A + B11A)*(2.*mls + ps2)) - 24.*(mls*(24.*mls2 - (pv1s*pv1s) + 2.*pv12 + (pv2s*pv2s) - 4.*mls*(pv1s + pv2s)) + (4.*mls2 + pv12 - mls*(pv1s + 3.*pv2s))*ps2)*C1 - 12.*(24.*mls3 - 2.*mls*(pv1s*pv1s) - 4.*mls2*(pv1s + pv2s) + (4.*mls2 - 2.*mls*pv2s + pv12)*ps2)*C2 - 24.*(24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) +(2.*mls - pv1s)*(2.*mls - pv2s)*ps2)* C11 - 24.*(24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C12 + 72.*(2.*mls - pv1s)*(-0.125*mls - 0.125*A0A + (0.25*mls*B1B) + (0.125*pv1s*B11B)) - 12.*(-2.*mls + pv1s)*(0.25*mls - 0.25*A0A - (0.5*mls*B1B) - (0.75*pv1s*B11B)) )/24./mls3; d+= -lc* (-2.*mls2*B0A - 2.*mls*C0A*(8.*mls2 + pv12 - 2.*mls*(pv1s + pv2s)) - mls*B1A*(2.*mls + ps2) - mls*B11A*(2.*mls + ps2) + mls*(2.*mls*B0A + (B1A + B11A)*(2.*mls + ps2)) - (24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)* C1 - 2.*mls*pv12*C2 - (24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C11 - (24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) +(2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C12 )/mls3; e+= -0.25*lc* (8.*mls*B0B*pv1s + 4.*B00B*(2*mls - pv1s) - 2.*A0A*(2.*mls + pv1s) - 4.*B11C*pv1s*(2.*mls - pv2s) + 2.*B1C*(4.*mls - 3.*pv1s)*(2.*mls - pv2s) + 2.*B0C*(4.*mls2 - 2.*mls*pv2s + pv12) - 2.*mls*B0A*(pv1s - ps2) + 4.*mls*C0A*pv1s*(4.*mls - pv2s - ps2) - 4.*mls*B11A*(2.*mls + ps2) + B1A*(2.*mls - pv1s)*(2.*mls + ps2) - B1A*(6.*mls - pv1s)*(2.*mls + ps2) - B0A*(8.*mls2 + (2.*mls - pv1s)*ps2) + 4.*mls*(2.*mls*B0A + (B1A + B11A)*(2.*mls + ps2)) - 2*(2.*mls*(12.*mls2 - pv1s + 2.*pv12 - 2.*mls*(pv1s + pv2s)) + (4.*mls2 - 2.*mls*pv2s + pv12)*ps2)*C1 - 4.*(24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C11 )/mls3; } else if(type[i] == PDT::Spin0) { long theC = LT::Cget(ps2,pv2s,pv1s, mls,mls,mls); Complex C1 = LT::Cval(LT::cc1,theC); Complex C2 = LT::Cval(LT::cc2,theC); Complex C00 = LT::Cval(LT::cc00,theC); Complex C11 = LT::Cval(LT::cc11,theC); Complex C12 = LT::Cval(LT::cc12,theC); Complex C22 = LT::Cval(LT::cc22,theC); Complex Cz = LT::C0(pv1s,pv2s,ps2,mls,mls,mls); /** * vector type can contain different types of particle * and hence the coupling is different * Here left[i] is used for the coupling of the ith * type rather than creating another * vector to hold them. */ a += 4.*lc*(LT::B0(ps2,mls,mls) - 4.*C00)/ps2; b += -4.*lc*(Cz + 3.*C1 + 3.*C2 +2.*(C11 + 2.*C12 + C22 )); c += -2.*lc*(Cz + 2.*(2.*C1+ C2 + 2.*(C11 +C12))); d += -8.*lc*(C1 +C11 + C12); e += -4.*lc*(C1 + 2.*C11); } else { throw Helicity::HelicityConsistencyError() << "SVVLoopVertex::setCoupling - Incorrect particle in SVV loop. " << "Spin: " << type[i] << Exception::warning; } } //Looptools defines integrals differently double fact = 1./16./sqr(Constants::pi); a00(fact*a); a11(fact*b); a12(fact*c); a21(fact*d); a22(fact*e); aEp(fact*f); } herwig++-2.6.0.orig/Models/General/TwoToTwoProcessConstructor.cc0000644000175000017500000005561111755204223025446 0ustar sylvestresylvestre// -*- C++ -*- // // TwoToTwoProcessConstructor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TwoToTwoProcessConstructor class. // #include "TwoToTwoProcessConstructor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include using std::stringstream; using namespace Herwig; namespace { // Helper functor for find_if in duplicate function. class SameIncomingAs { public: SameIncomingAs(tPDPair in) : a(in.first->id()), b(in.second->id()) {} bool operator()(tPDPair ppair) const { long id1(ppair.first->id()), id2(ppair.second->id()); return ( id1 == a && id2 == b ) || ( id1 == b && id2 == a ); } private: long a, b; }; bool duplicateIncoming(tPDPair ppair, const vector & incPairs ) { vector::const_iterator it = find_if( incPairs.begin(), incPairs.end(), SameIncomingAs(ppair) ); return it != incPairs.end(); } } TwoToTwoProcessConstructor::TwoToTwoProcessConstructor() : Nout_(0), nv_(0), allDiagrams_(true), processOption_(0), scaleChoice_(0), scaleFactor_(1.) {} IBPtr TwoToTwoProcessConstructor::clone() const { return new_ptr(*this); } IBPtr TwoToTwoProcessConstructor::fullclone() const { return new_ptr(*this); } void TwoToTwoProcessConstructor::doinit() { HardProcessConstructor::doinit(); if(processOption_==2&&outgoing_.size()!=2) throw InitException() << "Exclusive processes require exactly" << " two outgoing particles but " << outgoing_.size() << "have been inserted in TwoToTwoProcessConstructor::doinit()." << Exception::runerror; Nout_ = outgoing_.size(); PDVector::size_type ninc = incoming_.size(); // exit if nothing to do if(Nout_==0||ninc==0) return; //create vector of initial-state pairs for(PDVector::size_type i = 0; i < ninc; ++i) { for(PDVector::size_type j = 0; j < ninc; ++j) { tPDPair inc = make_pair(incoming_[i], incoming_[j]); if( (inc.first->iSpin() > inc.second->iSpin()) || (inc.first->iSpin() == inc.second->iSpin() && inc.first->id() < inc.second->id()) ) swap(inc.first, inc.second); if( !duplicateIncoming(inc,incPairs_) ) { incPairs_.push_back(inc); } } } // excluded vertices excludedVertexSet_ = set(excludedVertexVector_.begin(), excludedVertexVector_.end()); } void TwoToTwoProcessConstructor::persistentOutput(PersistentOStream & os) const { os << vertices_ << incoming_ << outgoing_ << allDiagrams_ << processOption_ << scaleChoice_ << scaleFactor_ << excluded_ << excludedExternal_ << excludedVertexVector_ << excludedVertexSet_; } void TwoToTwoProcessConstructor::persistentInput(PersistentIStream & is, int) { is >> vertices_ >> incoming_ >> outgoing_ >> allDiagrams_ >> processOption_ >> scaleChoice_ >> scaleFactor_ >> excluded_ >> excludedExternal_ >> excludedVertexVector_ >> excludedVertexSet_; } ClassDescription TwoToTwoProcessConstructor::initTwoToTwoProcessConstructor; // Definition of the static class description member. void TwoToTwoProcessConstructor::Init() { static ClassDocumentation documentation ("TwoToTwoProcessConstructor constructs the possible diagrams for " "a process given the external particles"); static RefVector interfaceIn ("Incoming", "Pointers to incoming particles", &TwoToTwoProcessConstructor::incoming_, -1, false, false, true, false); static RefVector interfaceOut ("Outgoing", "Pointers to incoming particles", &TwoToTwoProcessConstructor::outgoing_, -1, false, false, true, false); static Switch interfaceIncludeAllDiagrams ("IncludeEW", "Switch to decide which diagrams to include in ME calc.", &TwoToTwoProcessConstructor::allDiagrams_, true, false, false); static SwitchOption interfaceIncludeAllDiagramsOff (interfaceIncludeAllDiagrams, "No", "Only include QCD diagrams", false); static SwitchOption interfaceIncludeAllDiagramsOn (interfaceIncludeAllDiagrams, "Yes", "Include EW+QCD.", true); static Switch interfaceProcesses ("Processes", "Whether to generate inclusive or exclusive processes", &TwoToTwoProcessConstructor::processOption_, 0, false, false); static SwitchOption interfaceProcessesSingleParticleInclusive (interfaceProcesses, "SingleParticleInclusive", "Require at least one particle from the list of outgoing particles" " in the hard process", 0); static SwitchOption interfaceProcessesTwoParticleInclusive (interfaceProcesses, "TwoParticleInclusive", "Require that both the particles in the hard processes are in the" " list of outgoing particles", 1); static SwitchOption interfaceProcessesExclusive (interfaceProcesses, "Exclusive", "Require that both the particles in the hard processes are in the" " list of outgoing particles in every hard process", 2); static Switch interfaceScaleChoice ("ScaleChoice", "&TwoToTwoProcessConstructor::scaleChoice_", &TwoToTwoProcessConstructor::scaleChoice_, 0, false, false); static SwitchOption interfaceScaleChoiceDefault (interfaceScaleChoice, "Default", "Use if sHat if intermediates all colour neutral, otherwise the transverse mass", 0); static SwitchOption interfaceScaleChoicesHat (interfaceScaleChoice, "sHat", "Always use sHat", 1); static SwitchOption interfaceScaleChoiceTransverseMass (interfaceScaleChoice, "TransverseMass", "Always use the transverse mass", 2); static Parameter interfaceScaleFactor ("ScaleFactor", "The prefactor used in the scale calculation. The scale used is" " that defined by scaleChoice multiplied by this prefactor", &TwoToTwoProcessConstructor::scaleFactor_, 1.0, 0.0, 10.0, false, false, Interface::limited); static RefVector interfaceExcluded ("Excluded", "Particles which are not allowed as intermediates", &TwoToTwoProcessConstructor::excluded_, -1, false, false, true, false, false); static RefVector interfaceExcludedExternal ("ExcludedExternal", "Particles which are not allowed as outgoing particles", &TwoToTwoProcessConstructor::excludedExternal_, -1, false, false, true, false, false); static RefVector interfaceExcludedVertices ("ExcludedVertices", "Vertices which are not included in the 2 -> 2 scatterings", &TwoToTwoProcessConstructor::excludedVertexVector_, -1, false, false, true, true, false); } namespace { // Helper functor for find_if below. class SameProcessAs { public: SameProcessAs(const HPDiagram & diag) : a(diag) {} bool operator()(const HPDiagram & b) const { return a.sameProcess(b); } private: HPDiagram a; }; } void TwoToTwoProcessConstructor::constructDiagrams() { if(incPairs_.empty() || outgoing_.empty() || !subProcess() ) return; nv_ = model()->numberOfVertices(); //make sure vertices are initialised for(unsigned int ix = 0; ix < nv_; ++ix ) { VertexBasePtr vertex = model()->vertex(ix); if(excludedVertexSet_.find(vertex) != excludedVertexSet_.end()) continue; vertices_.push_back(vertex); } nv_ = vertices_.size(); //Create necessary diagrams vector::size_type is; PDVector::size_type os; for(is = 0; is < incPairs_.size(); ++is) { tPDPair ppi = incPairs_[is]; for(os = 0; os < Nout_; ++os) { long fs = outgoing_[os]->id(); for(size_t iv = 0; iv < nv_; ++iv) { tVertexBasePtr vertexA = vertices_[iv]; //This skips an effective vertex and the EW ones if // we only want the strong diagrams if( !allDiagrams_ && vertexA->orderInGs() == 0 ) continue; if(vertexA->getNpoint() == 3) { //scattering diagrams createTChannels(ppi, fs, vertexA); //resonance diagrams if( vertexA->isIncoming(ppi.first) && vertexA->isIncoming(ppi.second) ) createSChannels(ppi, fs, vertexA); } else makeFourPointDiagrams(ppi.first->id(), ppi.second->id(), fs, vertexA); } } } //need to find all of the diagrams that relate to the same process //first insert them into a map which uses the '<' operator //to sort the diagrams multiset grouped; HPDVector::iterator dit = processes_.begin(); HPDVector::iterator dend = processes_.end(); bool abort=false; for( ; dit != dend; ++dit) { // check for on-shell s-channel tPDPtr out1 = getParticleData(dit->outgoing.first ); tPDPtr out2 = getParticleData(dit->outgoing.second); if(dit->channelType == HPDiagram::sChannel && dit->intermediate->width()==ZERO && dit->intermediate->mass() > out1->mass()+ out2->mass()) { tPDPtr in1 = getParticleData(dit->incoming.first ); tPDPtr in2 = getParticleData(dit->incoming.second); generator()->log() << dit->intermediate->PDGName() << " can be on-shell in the process " << in1 ->PDGName() << " " << in2->PDGName() << " -> " << out1->PDGName() << " " << out2->PDGName() << " but has zero width.\nEither set the width, enable " << "calculation of its decays, and hence the width,\n" << "or disable it as a potential intermediate using\n" << "insert " << fullName() << ":Excluded 0 " << dit->intermediate->fullName() << "\n---\n"; abort = true; } grouped.insert(*dit); } if(abort) throw Exception() << "One or more processes with zero width" << " resonant intermediates" << Exception::runerror; assert( processes_.size() == grouped.size() ); processes_.clear(); typedef multiset::const_iterator set_iter; set_iter it = grouped.begin(), iend = grouped.end(); while( it != iend ) { pair range = grouped.equal_range(*it); set_iter itb = range.first; HPDVector process; for( ; itb != range.second; ++itb ) { process.push_back(*itb); } // if inclusive enforce the exclusivity if(processOption_==2) { if(!((process[0].outgoing. first==outgoing_[0]->id()&& process[0].outgoing.second==outgoing_[1]->id())|| (process[0].outgoing. first==outgoing_[1]->id()&& process[0].outgoing.second==outgoing_[0]->id()))) { process.clear(); it = range.second; continue; } } if(find(excludedExternal_.begin(),excludedExternal_.end(), getParticleData(process[0].outgoing. first))!=excludedExternal_.end()) { process.clear(); it = range.second; continue; } if(find(excludedExternal_.begin(),excludedExternal_.end(), getParticleData(process[0].outgoing.second))!=excludedExternal_.end()) { process.clear(); it = range.second; continue; } // finally if the process is allow assign the colour flows for(unsigned int ix=0;ix inc = make_pair(inpp.first->id(), inpp.second->id()); tPDSet offshells = search(vertex, inpp.first->id(), incoming, inpp.second->id(), incoming, outgoing); tPDSet::const_iterator it; for(it = offshells.begin(); it != offshells.end(); ++it) { if(find(excluded_.begin(),excluded_.end(),*it)!=excluded_.end()) continue; for(size_t iv = 0; iv < nv_; ++iv) { tVertexBasePtr vertexB = vertices_[iv]; if( vertexB->getNpoint() != 3) continue; if( !allDiagrams_ && vertexB->orderInGs() == 0 ) continue; tPDSet final; if( vertexB->isOutgoing(getParticleData(fs)) && vertexB->isIncoming(*it) ) final = search(vertexB, (*it)->id(), incoming, fs, outgoing, outgoing); //Now make diagrams if(!final.empty()) makeDiagrams(inc, fs, final, *it, HPDiagram::sChannel, make_pair(vertex, vertexB), make_pair(true,true)); } } } void TwoToTwoProcessConstructor:: createTChannels(tPDPair inpp, long fs, tVertexBasePtr vertex) { pair inc = make_pair(inpp.first->id(), inpp.second->id()); //first try a with c tPDSet offshells = search(vertex, inpp.first->id(), incoming, fs, outgoing, outgoing); tPDSet::const_iterator it; for(it = offshells.begin(); it != offshells.end(); ++it) { if(find(excluded_.begin(),excluded_.end(),*it)!=excluded_.end()) continue; for(size_t iv = 0; iv < nv_; ++iv) { tVertexBasePtr vertexB = vertices_[iv]; if( vertexB->getNpoint() != 3 ) continue; if( !allDiagrams_ && vertexB->orderInGs() == 0 ) continue; tPDSet final; if( vertexB->isIncoming(inpp.second) ) final = search(vertexB, inc.second, incoming, (*it)->id(), incoming, outgoing); if( !final.empty() ) makeDiagrams(inc, fs, final, *it, HPDiagram::tChannel, make_pair(vertex, vertexB), make_pair(true,true)); } } //now try b with c offshells = search(vertex, inpp.second->id(), incoming, fs, outgoing, incoming); for(it = offshells.begin(); it != offshells.end(); ++it) { if(find(excluded_.begin(),excluded_.end(),*it)!=excluded_.end()) continue; for(size_t iv = 0; iv < nv_; ++iv) { tVertexBasePtr vertexB = vertices_[iv]; if( vertexB->getNpoint() != 3 ) continue; if( !allDiagrams_ && vertexB->orderInGs() == 0 ) continue; tPDSet final; if( vertexB->isIncoming(inpp.first) ) final = search(vertexB, inc.first, incoming, (*it)->id(), outgoing, outgoing); if( !final.empty() ) makeDiagrams(inc, fs, final, *it, HPDiagram::tChannel, make_pair(vertexB, vertex), make_pair(true, false)); } } } void TwoToTwoProcessConstructor::makeFourPointDiagrams(long parta, long partb, long partc, VBPtr vert) { if(processOption_>=1) { PDVector::const_iterator loc = find(outgoing_.begin(),outgoing_.end(), getParticleData(partc)); if(loc==outgoing_.end()) return; } tPDSet ext = search(vert, parta, incoming, partb,incoming, partc, outgoing); if( ext.empty() ) return; IDPair in(parta, partb); for(tPDSet::const_iterator iter=ext.begin(); iter!=ext.end(); ++iter) { if(processOption_>=1) { PDVector::const_iterator loc = find(outgoing_.begin(),outgoing_.end(), *iter); if(loc==outgoing_.end()) continue; } HPDiagram nhp(in,make_pair(partc, (*iter)->id())); nhp.vertices = make_pair(vert, vert); nhp.channelType = HPDiagram::fourPoint; fixFSOrder(nhp); if( !duplicate(nhp, processes_) ) processes_.push_back(nhp); } } void TwoToTwoProcessConstructor::makeDiagrams(IDPair in, long out1, const tPDSet & out2, PDPtr inter, HPDiagram::Channel chan, VBPair vertexpair, BPair cross) { if(processOption_>=1) { PDVector::const_iterator loc = find(outgoing_.begin(),outgoing_.end(), getParticleData(out1)); if(loc==outgoing_.end()) return; } for(tPDSet::const_iterator it = out2.begin(); it != out2.end(); ++it) { if(processOption_>=1) { PDVector::const_iterator loc = find(outgoing_.begin(),outgoing_.end(), *it); if(loc==outgoing_.end()) continue; } HPDiagram nhp( in,make_pair(out1, (*it)->id()) ); nhp.intermediate = inter; nhp.vertices = vertexpair; nhp.channelType = chan; nhp.ordered = cross; fixFSOrder(nhp); if( !duplicate(nhp, processes_) ) processes_.push_back(nhp); } } set TwoToTwoProcessConstructor::search(VBPtr vertex, long part1, direction d1, long part2, direction d2, direction d3) { if(vertex->getNpoint() != 3) return tPDSet(); if(d1 == incoming && getParticleData(part1)->CC()) part1 = -part1; if(d2 == incoming && getParticleData(part2)->CC()) part2 = -part2; vector ext; tPDSet third; for(unsigned int ix = 0;ix < 3; ++ix) { vector pdlist = vertex->search(ix, part1); ext.insert(ext.end(), pdlist.begin(), pdlist.end()); } for(unsigned int ix = 0; ix < ext.size(); ix += 3) { long id0 = ext.at(ix); long id1 = ext.at(ix+1); long id2 = ext.at(ix+2); int pos; if((id0 == part1 && id1 == part2) || (id0 == part2 && id1 == part1)) pos = ix + 2; else if((id0 == part1 && id2 == part2) || (id0 == part2 && id2 == part1)) pos = ix + 1; else if((id1 == part1 && id2 == part2) || (id1 == part2 && id2 == part1)) pos = ix; else pos = -1; if(pos >= 0) { tPDPtr p = getParticleData(ext[pos]); if(d3 == incoming && p->CC()) p = p->CC(); third.insert(p); } } return third; } set TwoToTwoProcessConstructor::search(VBPtr vertex, long part1, direction d1, long part2, direction d2, long part3, direction d3, direction d4) { if(vertex->getNpoint() != 4) return tPDSet(); if(d1 == incoming && getParticleData(part1)->CC()) part1 = -part1; if(d2 == incoming && getParticleData(part2)->CC()) part2 = -part2; if(d3 == incoming && getParticleData(part3)->CC()) part3 = -part3; vector ext; tPDSet fourth; for(unsigned int ix = 0;ix < 4; ++ix) { vector pdlist = vertex->search(ix, part1); ext.insert(ext.end(), pdlist.begin(), pdlist.end()); } for(unsigned int ix = 0;ix < ext.size(); ix += 4) { long id0 = ext.at(ix); long id1 = ext.at(ix + 1); long id2 = ext.at(ix + 2); long id3 = ext.at(ix + 3); int pos; if((id0 == part1 && id1 == part2 && id2 == part3) || (id0 == part1 && id1 == part3 && id2 == part2) || (id0 == part2 && id1 == part1 && id2 == part3) || (id0 == part2 && id1 == part3 && id2 == part1) || (id0 == part3 && id1 == part1 && id2 == part2) || (id0 == part3 && id1 == part2 && id2 == part1)) pos = ix + 3; else if((id0 == part1 && id1 == part2 && id3 == part3) || (id0 == part1 && id1 == part3 && id3 == part2) || (id0 == part2 && id1 == part1 && id3 == part3) || (id0 == part2 && id1 == part3 && id3 == part1) || (id0 == part3 && id1 == part1 && id3 == part2) || (id0 == part3 && id1 == part2 && id3 == part1)) pos = ix + 2; else if((id0 == part1 && id2 == part2 && id3 == part3) || (id0 == part1 && id2 == part3 && id3 == part2) || (id0 == part2 && id2 == part1 && id3 == part3) || (id0 == part2 && id2 == part3 && id3 == part1) || (id0 == part3 && id2 == part1 && id3 == part2) || (id0 == part3 && id2 == part2 && id3 == part1)) pos = ix + 1; else if((id1 == part1 && id2 == part2 && id3 == part3) || (id1 == part1 && id2 == part3 && id3 == part2) || (id1 == part2 && id2 == part1 && id3 == part3) || (id1 == part2 && id2 == part3 && id3 == part1) || (id1 == part3 && id2 == part1 && id3 == part2) || (id1 == part3 && id2 == part2 && id3 == part1)) pos = ix; else pos = -1; if(pos >= 0) { tPDPtr p = getParticleData(ext[pos]); if(d4 == incoming && p->CC()) p = p->CC(); fourth.insert(p); } } return fourth; } void TwoToTwoProcessConstructor::createMatrixElement(const HPDVector & process) const { if ( process.empty() ) return; // external particles tcPDVector extpart(4); extpart[0] = getParticleData(process[0].incoming.first); extpart[1] = getParticleData(process[0].incoming.second); extpart[2] = getParticleData(process[0].outgoing.first); extpart[3] = getParticleData(process[0].outgoing.second); // create the object string objectname ("/Herwig/MatrixElements/"); string classname = MEClassname(extpart, objectname); GeneralHardMEPtr matrixElement = dynamic_ptr_cast (generator()->preinitCreate(classname, objectname)); if( !matrixElement ) { std::stringstream message; message << "TwoToTwoProcessConstructor::createMatrixElement " << "- No matrix element object could be created for " << "the process " << extpart[0]->PDGName() << " " << extpart[0]->iSpin() << "," << extpart[1]->PDGName() << " " << extpart[1]->iSpin() << "->" << extpart[2]->PDGName() << " " << extpart[2]->iSpin() << "," << extpart[3]->PDGName() << " " << extpart[3]->iSpin() << ". Constructed class name: \"" << classname << "\""; generator()->logWarning(TwoToTwoProcessConstructorError(message.str(),Exception::warning)); return; } // choice for the scale unsigned int scale; if(scaleChoice_==0) { // check coloured initial and final state bool inColour = ( extpart[0]->coloured() || extpart[1]->coloured()); bool outColour = ( extpart[2]->coloured() || extpart[3]->coloured()); if(inColour&&outColour) { bool coloured = false; for(unsigned int ix=0;ixcoloured()) { coloured = true; break; } } scale = coloured ? 1 : 0; } else { scale = 0; } } else { scale = scaleChoice_-1; } // set the information matrixElement->setProcessInfo(process, colourFlow(extpart), debug(), scale, scaleFactor_); // insert it generator()->preinitInterface(subProcess(), "MatrixElements", subProcess()->MEs().size(), "insert", matrixElement->fullName()); } string TwoToTwoProcessConstructor::MEClassname(const vector & extpart, string & objname) const { string classname("Herwig::ME"); for(vector::size_type ix = 0; ix < extpart.size(); ++ix) { if(ix == 2) classname += "2"; if(extpart[ix]->iSpin() == PDT::Spin0) classname += "s"; else if(extpart[ix]->iSpin() == PDT::Spin1) classname += "v"; else if(extpart[ix]->iSpin() == PDT::Spin1Half) classname += "f"; else if(extpart[ix]->iSpin() == PDT::Spin2) classname += "t"; else { std::stringstream message; message << "MEClassname() : Encountered an unknown spin for " << extpart[ix]->PDGName() << " while constructing MatrixElement " << "classname " << extpart[ix]->iSpin(); generator()->logWarning(TwoToTwoProcessConstructorError(message.str(),Exception::warning)); } } objname += "ME" + extpart[0]->PDGName() + extpart[1]->PDGName() + "2" + extpart[2]->PDGName() + extpart[3]->PDGName(); return classname; } herwig++-2.6.0.orig/Models/General/BSMWidthGenerator.h0000644000175000017500000001052011754474773023235 0ustar sylvestresylvestre// -*- C++ -*- // // BSMWidthGenerator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_BSMWidthGenerator_H #define HERWIG_BSMWidthGenerator_H // // This is the declaration of the BSMWidthGenerator class. // #include "Herwig++/PDT/GenericWidthGenerator.h" #include "Herwig++/Decay/General/GeneralTwoBodyDecayer.fh" #include "BSMWidthGenerator.fh" namespace Herwig { using namespace ThePEG; /** * This class is designed to be able to calculate the running * width for a BSM particle given the decay mode and partial width * calculated from the decayer. * * @see \ref BSMWidthGeneratorInterfaces "The interfaces" * defined for BSMWidthGenerator. */ class BSMWidthGenerator: public GenericWidthGenerator { public: /** * The default constructor. */ BSMWidthGenerator() : theModes(0) {} /** @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: /** * Perform the set up for a mode in classes inheriting from this one * @param mode The decay mode * @param decayer The decayer for the mode. * @param imode The number of the mode. */ virtual void setupMode(tcDMPtr mode, tDecayIntegratorPtr decayer, unsigned int imode); /** * The \f$1\to2\f$ width for outgoing particles which can be off-shell. * @param iloc The location of the mode in the list. * @param m0 The mass of the decaying particle. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @return The partial width. */ virtual Energy partial2BodyWidth(int iloc,Energy m0,Energy m1,Energy m2) const; 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initBSMWidthGenerator; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BSMWidthGenerator & operator=(const BSMWidthGenerator &); private: /** * A vector decay modes with their associated decayer * cast to GeneralTwoBodyDecayer. */ vector > theModes; }; /** * An exception class to report an error. */ class BSMWidthException : public Exception {}; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of BSMWidthGenerator. */ template <> struct BaseClassTrait { /** Typedef of the first base class of BSMWidthGenerator. */ typedef Herwig::GenericWidthGenerator NthBase; }; /** This template specialization informs ThePEG about the name of * the BSMWidthGenerator class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::BSMWidthGenerator"; } }; /** @endcond */ } #endif /* HERWIG_BSMWidthGenerator_H */ herwig++-2.6.0.orig/Models/General/HardProcessConstructor.cc0000644000175000017500000004613711755204223024561 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the HardProcessConstructor class. // #include "HardProcessConstructor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void HardProcessConstructor::persistentOutput(PersistentOStream & os) const { os << debug_ << subProcess_ << model_; } void HardProcessConstructor::persistentInput(PersistentIStream & is, int) { is >> debug_ >> subProcess_ >> model_; } AbstractClassDescription HardProcessConstructor::initHardProcessConstructor; // Definition of the static class description member. void HardProcessConstructor::Init() { static ClassDocumentation documentation ("Base class for implementation of the automatic generation of hard processes"); static Switch interfaceDebugME ("DebugME", "Print comparison with analytical ME", &HardProcessConstructor::debug_, false, false, false); static SwitchOption interfaceDebugMEYes (interfaceDebugME, "Yes", "Print the debug information", true); static SwitchOption interfaceDebugMENo (interfaceDebugME, "No", "Do not print the debug information", false); } void HardProcessConstructor::doinit() { Interfaced::doinit(); EGPtr eg = generator(); model_ = dynamic_ptr_cast(eg->standardModel()); if(!model_) throw InitException() << "HardProcessConstructor:: doinit() - " << "The model pointer is null!" << Exception::abortnow; if(!eg->eventHandler()) { throw InitException() << "HardProcessConstructor:: doinit() - " << "The eventHandler pointer was null therefore " << "could not get SubProcessHandler pointer " << Exception::abortnow; } string subProcessName = eg->preinitInterface(eg->eventHandler(), "SubProcessHandlers", "get",""); subProcess_ = eg->getObject(subProcessName); if(!subProcess_) { ostringstream s; s << "HardProcessConstructor:: doinit() - " << "There was an error getting the SubProcessHandler " << "from the current event handler. "; generator()->logWarning( Exception(s.str(), Exception::warning) ); } } GeneralHardME::ColourStructure HardProcessConstructor:: colourFlow(const tcPDVector & extpart) const { PDT::Colour ina = extpart[0]->iColour(); PDT::Colour inb = extpart[1]->iColour(); PDT::Colour outa = extpart[2]->iColour(); PDT::Colour outb = extpart[3]->iColour(); // incoming colour neutral if(ina == PDT::Colour0 && inb == PDT::Colour0) { if( outa == PDT::Colour0 && outb == PDT::Colour0 ) { return GeneralHardME::Colour11to11; } else if( outa == PDT::Colour3 && outb == PDT::Colour3bar ) { return GeneralHardME::Colour11to33bar; } else if( outa == PDT::Colour8 && outb == PDT::Colour8 ) { return GeneralHardME::Colour11to88; } else assert(false); } // incoming 3 3 else if(ina == PDT::Colour3 && inb == PDT::Colour3 ) { if( outa == PDT::Colour3 && outb == PDT::Colour3 ) { return GeneralHardME::Colour33to33; } else if( outa == PDT::Colour6 && outb == PDT::Colour0 ) { return GeneralHardME::Colour33to61; } else if( outa == PDT::Colour0 && outb == PDT::Colour6 ) { return GeneralHardME::Colour33to16; } else assert(false); } // incoming 3bar 3bar else if(ina == PDT::Colour3bar && inb == PDT::Colour3bar ) { if( outa == PDT::Colour3bar && outb == PDT::Colour3bar ) { return GeneralHardME::Colour3bar3barto3bar3bar; } else if( outa == PDT::Colour6bar && outb == PDT::Colour0) { return GeneralHardME::Colour3bar3barto6bar1; } else if ( outa == PDT::Colour0 && outb == PDT::Colour6bar ) { return GeneralHardME::Colour3bar3barto16bar; } else assert(false); } // incoming 3 3bar else if(ina == PDT::Colour3 && inb == PDT::Colour3bar ) { if( outa == PDT::Colour0 && outb == PDT::Colour0 ) { return GeneralHardME::Colour33barto11; } else if( outa == PDT::Colour3 && outb == PDT::Colour3bar ) { return GeneralHardME::Colour33barto33bar; } else if( outa == PDT::Colour8 && outb == PDT::Colour8 ) { return GeneralHardME::Colour33barto88; } else if( outa == PDT::Colour8 && outb == PDT::Colour0 ) { return GeneralHardME::Colour33barto81; } else if( outa == PDT::Colour0 && outb == PDT::Colour8 ) { return GeneralHardME::Colour33barto18; } else if( outa == PDT::Colour6 && outb == PDT::Colour6bar) { return GeneralHardME::Colour33barto66bar; } else if( outa == PDT::Colour6bar && outb == PDT::Colour6) { return GeneralHardME::Colour33barto6bar6; } else assert(false); } // incoming 88 else if(ina == PDT::Colour8 && inb == PDT::Colour8 ) { if( outa == PDT::Colour0 && outb == PDT::Colour0 ) { return GeneralHardME::Colour88to11; } else if( outa == PDT::Colour3 && outb == PDT::Colour3bar ) { return GeneralHardME::Colour88to33bar; } else if( outa == PDT::Colour8 && outb == PDT::Colour8 ) { return GeneralHardME::Colour88to88; } else if( outa == PDT::Colour8 && outb == PDT::Colour0 ) { return GeneralHardME::Colour88to81; } else if( outa == PDT::Colour0 && outb == PDT::Colour8 ) { return GeneralHardME::Colour88to18; } else if( outa == PDT::Colour6 && outb == PDT::Colour6bar ) { return GeneralHardME::Colour88to66bar; } else assert(false); } // incoming 38 else if(ina == PDT::Colour3 && inb == PDT::Colour8 ) { if(outa == PDT::Colour3 && outb == PDT::Colour0) { return GeneralHardME::Colour38to31; } else if(outa == PDT::Colour0 && outb == PDT::Colour3) { return GeneralHardME::Colour38to13; } else if(outa == PDT::Colour3 && outb == PDT::Colour8) { return GeneralHardME::Colour38to38; } else if(outa == PDT::Colour8 && outb == PDT::Colour3) { return GeneralHardME::Colour38to83; } else if(outa == PDT::Colour3bar && outb == PDT::Colour6){ return GeneralHardME::Colour38to3bar6; } else if(outa == PDT::Colour6 && outb == PDT::Colour3bar){ return GeneralHardME::Colour38to63bar; } else assert(false); } // incoming 3bar8 else if(ina == PDT::Colour3bar && inb == PDT::Colour8 ) { if(outa == PDT::Colour3bar && outb == PDT::Colour0 ) { return GeneralHardME::Colour3bar8to3bar1; } else if(outa == PDT::Colour0 && outb == PDT::Colour3bar) { return GeneralHardME::Colour3bar8to13bar; } else if(outa == PDT::Colour3bar && outb == PDT::Colour8 ) { return GeneralHardME::Colour3bar8to3bar8; } else if(outa == PDT::Colour8 && outb == PDT::Colour3bar) { return GeneralHardME::Colour3bar8to83bar; } else assert(false); } // unknown colour flow else assert(false); return GeneralHardME::UNDEFINED; } void HardProcessConstructor::fixFSOrder(HPDiagram & diag) { tcPDPtr psa = getParticleData(diag.incoming.first); tcPDPtr psb = getParticleData(diag.incoming.second); tcPDPtr psc = getParticleData(diag.outgoing.first); tcPDPtr psd = getParticleData(diag.outgoing.second); //fix a spin order if( psc->iSpin() < psd->iSpin() ) { swap(diag.outgoing.first, diag.outgoing.second); if(diag.channelType == HPDiagram::tChannel) { diag.ordered.second = !diag.ordered.second; } return; } if( psc->iSpin() == psd->iSpin() && psc->id() < 0 && psd->id() > 0 ) { swap(diag.outgoing.first, diag.outgoing.second); if(diag.channelType == HPDiagram::tChannel) { diag.ordered.second = !diag.ordered.second; } return; } } void HardProcessConstructor::assignToCF(HPDiagram & diag) { if(diag.channelType == HPDiagram::tChannel) { if(diag.ordered.second) tChannelCF(diag); else uChannelCF(diag); } else if(diag.channelType == HPDiagram::sChannel) { sChannelCF(diag); } else if (diag.channelType == HPDiagram::fourPoint) { fourPointCF(diag); } else assert(false); } void HardProcessConstructor::tChannelCF(HPDiagram & diag) { PDT::Colour ina = getParticleData(diag.incoming.first )->iColour(); PDT::Colour inb = getParticleData(diag.incoming.second)->iColour(); PDT::Colour outa = getParticleData(diag.outgoing.first )->iColour(); PDT::Colour outb = getParticleData(diag.outgoing.second)->iColour(); vector cfv(1, make_pair(0, 1.)); if(diag.intermediate->iColour() == PDT::Colour0) { if(ina==PDT::Colour0) { cfv[0] = make_pair(0, 1); } else if(ina==PDT::Colour3 || ina==PDT::Colour3bar) { if( inb == PDT::Colour0 ) { cfv[0] = make_pair(0, 1); } else if(inb==PDT::Colour3 || outb==PDT::Colour3bar) { cfv[0] = make_pair(2, 1); } else if(inb==PDT::Colour8) { cfv[0] = make_pair(2, 1); } } else if(ina==PDT::Colour8) { if( inb == PDT::Colour0 ) { cfv[0] = make_pair(0, 1); } else if(inb==PDT::Colour3 || outb==PDT::Colour3bar) { cfv[0] = make_pair(2, 1); } else if(inb==PDT::Colour8) { cfv[0] = make_pair(5, 1); } } } else if(diag.intermediate->iColour() == PDT::Colour8) { if(ina==PDT::Colour8&&outa==PDT::Colour8&& inb==PDT::Colour8&&outb==PDT::Colour8) { cfv.push_back(make_pair(1, -1.)); } } else if(diag.intermediate->iColour() == PDT::Colour3 || diag.intermediate->iColour() == PDT::Colour3bar) { if(outa == PDT::Colour0 || outb == PDT::Colour0) { cfv[0] = make_pair(0,1.); // cfv.push_back(make_pair(1,1.)); } else if(outa==PDT::Colour6 && outb==PDT::Colour3bar) { cfv[0] = make_pair(4,1.); cfv.push_back(make_pair(5,1.)); } else if(outa==PDT::Colour6 && outb==PDT::Colour6bar) { cfv[0] = make_pair(4, 1.); for(unsigned int ix=5;ix<8;++ix) cfv.push_back(make_pair(ix,1.)); } else if(outa==PDT::Colour6 || outa ==PDT::Colour6bar || outb==PDT::Colour6 || outb ==PDT::Colour6bar ) { assert(false); // cfv[0] = make_pair(0,1.); // should this start a 0 or one i.e. 4 or 5 flows // for(int ix=0; ix<4;++ix) // cfv.push_back(make_pair(ix,1.)); } else { cfv[0] = make_pair(0,1.); } } else if(diag.intermediate->iColour() == PDT::Colour6 || diag.intermediate->iColour() == PDT::Colour6bar) { if(ina==PDT::Colour8 && inb==PDT::Colour8) { cfv[0] = make_pair(0, 1.); for(unsigned int ix=1;ix<4;++ix) cfv.push_back(make_pair(ix,1.)); for(unsigned int ix=4;ix<8;++ix) cfv.push_back(make_pair(ix,1.)); } else if(outa==PDT::Colour3bar && outb==PDT::Colour6) { cfv[0] = make_pair(0,1.); for(unsigned int ix=1;ix<4;++ix) cfv.push_back(make_pair(ix,1.)); } else if(outa==PDT::Colour6 && outb==PDT::Colour3bar) { cfv[0] = make_pair(4,1.); cfv.push_back(make_pair(5,1.)); } } diag.colourFlow = cfv; } void HardProcessConstructor::uChannelCF(HPDiagram & diag) { PDT::Colour offshell = diag.intermediate->iColour(); PDT::Colour ina = getParticleData(diag.incoming.first )->iColour(); PDT::Colour inb = getParticleData(diag.incoming.second)->iColour(); PDT::Colour outa = getParticleData(diag.outgoing.first )->iColour(); PDT::Colour outb = getParticleData(diag.outgoing.second)->iColour(); vector cfv(1, make_pair(1, 1.)); if(offshell == PDT::Colour8) { if( outa != outb ) { if(outa == PDT::Colour0 || outb == PDT::Colour0) { cfv[0].first = 0; } else { cfv[0].first = 0; cfv.push_back(make_pair(1, -1.)); } } else if(outa==PDT::Colour8&&ina==PDT::Colour8) { cfv[0]=make_pair(1, -1.); cfv.push_back(make_pair(2, 1.)); } } else { if(offshell == PDT::Colour3 || offshell == PDT::Colour3bar) { if( outa == PDT::Colour0 || outb == PDT::Colour0 ) { cfv[0] = make_pair(0,1.); // cfv.push_back(make_pair(1,1.)); } else if(outa==PDT::Colour3bar && outb==PDT::Colour6) { cfv[0] = make_pair(4,1.); cfv.push_back(make_pair(5,1.)); } else if(outa==PDT::Colour6 && outb==PDT::Colour3bar) { cfv[0] = make_pair(0,1.); for(int ix=0; ix<4;++ix) cfv.push_back(make_pair(ix,1.)); } else if(outa==PDT::Colour6bar && outb==PDT::Colour6) { cfv[0] = make_pair(4,1.); for(int ix=5; ix<8;++ix) cfv.push_back(make_pair(ix,1.)); } else cfv[0].first = 0; } else if( offshell == PDT::Colour0 ) { if(ina==PDT::Colour0) { cfv[0] = make_pair(0, 1); } else if(ina==PDT::Colour3 || ina==PDT::Colour3bar) { if( inb == PDT::Colour0 ) { cfv[0] = make_pair(0, 1); } else if(inb==PDT::Colour3 || outb==PDT::Colour3bar) { cfv[0] = make_pair(3, 1); } else if(inb==PDT::Colour8) { cfv[0] = make_pair(2, 1); } } else if(ina==PDT::Colour8) { if( inb == PDT::Colour0 ) { cfv[0] = make_pair(0, 1); } else if(inb==PDT::Colour3 || outb==PDT::Colour3bar) { cfv[0] = make_pair(2, 1); } else if(inb==PDT::Colour8) { cfv[0] = make_pair(4, 1); } } } else if(diag.intermediate->iColour() == PDT::Colour6 || diag.intermediate->iColour() == PDT::Colour6bar) { if(ina==PDT::Colour8 && inb==PDT::Colour8) { cfv[0] = make_pair(0, 1.); for(unsigned int ix=1;ix<4;++ix) cfv.push_back(make_pair(ix,1.)); for(unsigned int ix=8;ix<12;++ix) cfv.push_back(make_pair(ix,1.)); } else if(outa==PDT::Colour3bar && outa==PDT::Colour6) { cfv[0] = make_pair(4, 1.); cfv.push_back(make_pair(5,1.)); } else if(outa==PDT::Colour6 && outa==PDT::Colour3bar) { cfv[0] = make_pair(0, 1.); for(unsigned int ix=1;ix<4;++ix) cfv.push_back(make_pair(ix,1.)); } } } diag.colourFlow = cfv; } void HardProcessConstructor::sChannelCF(HPDiagram & diag) { tcPDPtr pa = getParticleData(diag.incoming.first); tcPDPtr pb = getParticleData(diag.incoming.second); PDT::Colour ina = pa->iColour(); PDT::Colour inb = pb->iColour(); PDT::Colour offshell = diag.intermediate->iColour(); tcPDPtr pc = getParticleData(diag.outgoing.first); tcPDPtr pd = getParticleData(diag.outgoing.second); PDT::Colour outa = pc->iColour(); PDT::Colour outb = pd->iColour(); vector cfv(1); if(offshell == PDT::Colour8) { if(ina == PDT::Colour0 || inb == PDT::Colour0 || outa == PDT::Colour0 || outb == PDT::Colour0) { cfv[0] = make_pair(0, 1); } else { bool incol = ina == PDT::Colour8 && inb == PDT::Colour8; bool outcol = outa == PDT::Colour8 && outb == PDT::Colour8; bool intrip = ina == PDT::Colour3 && inb == PDT::Colour3bar; bool outtrip = outa == PDT::Colour3 && outb == PDT::Colour3bar; bool outsex = outa == PDT::Colour6 && outb == PDT::Colour6bar; bool outsexb = outa == PDT::Colour6bar && outb == PDT::Colour6; if(incol || outcol) { // Require an additional minus sign for a fermion 33bar final state // due to the way the vertex rules are defined. int prefact(1); if( (pc->iSpin() == PDT::Spin1Half && pd->iSpin() == PDT::Spin1Half) && (outa == PDT::Colour3 && outb == PDT::Colour3bar) ) prefact = -1; if(incol && outcol) { cfv[0].first = 0; cfv[0].second = -prefact; cfv.push_back(make_pair(2, prefact)); } else if(incol && outsex) { cfv[0].first = 4; cfv[0].second = -prefact; for(unsigned int ix=1;ix<4;++ix) cfv.push_back(make_pair(4+ix,-prefact)); for(unsigned int ix=0;ix<4;++ix) cfv.push_back(make_pair(8+ix, prefact)); } else { cfv[0].first = 0; cfv[0].second = -prefact; cfv.push_back(make_pair(1, prefact)); } } else if( ( intrip && !outtrip ) || ( !intrip && outtrip ) ) { if(!outsex) cfv[0] = make_pair(0, 1); else { cfv[0] = make_pair(0, 1.); for(unsigned int ix=0;ix<3;++ix) cfv.push_back(make_pair(ix+1, 1.)); } } else if((intrip && outsex) || (intrip && outsexb)) { cfv[0] = make_pair(0,1.); for(int ix=1; ix<4; ++ix) cfv.push_back(make_pair(ix,1.)); } else cfv[0] = make_pair(1, 1); } } else if(offshell == PDT::Colour0) { if( ina == PDT::Colour0 ) { cfv[0] = make_pair(0, 1); } else if(ina==PDT::Colour3 || ina==PDT::Colour3bar) { if( outa == PDT::Colour0 ) { cfv[0] = make_pair(0, 1); } else if(outa==PDT::Colour3 || outa==PDT::Colour3bar) { cfv[0] = make_pair(3, 1); } else if(outa==PDT::Colour8) { cfv[0] = make_pair(2, 1); } } else if(ina==PDT::Colour8) { if( outa == PDT::Colour0 ) { cfv[0] = make_pair(0, 1); } else if(outa==PDT::Colour3 || outb==PDT::Colour3bar) { cfv[0] = make_pair(2, 1); } else if(outa==PDT::Colour8) { cfv[0] = make_pair(3, 1); } } } else if(offshell == PDT::Colour3 || offshell == PDT::Colour3bar) { if(outa == PDT::Colour6 || outa == PDT::Colour6bar || outb == PDT::Colour6bar || outb == PDT::Colour6) { cfv[0] = make_pair(6, 1.); cfv.push_back(make_pair(7,1.)); } } else if( offshell == PDT::Colour6 || offshell == PDT::Colour6bar) { cfv[0] = make_pair(2,0.5); cfv.push_back(make_pair(3,0.5)); } else { if(outa == PDT::Colour0 || outb == PDT::Colour0) cfv[0] = make_pair(0, 1); else cfv[0] = make_pair(1, 1); } diag.colourFlow = cfv; } void HardProcessConstructor::fourPointCF(HPDiagram & diag) { // count the colours unsigned int noct(0),ntri(0),nsng(0),nsex(0); for(unsigned int ix=0;ix<4;++ix) { PDT::Colour col = getParticleData(diag.ids[ix])->iColour(); if(col==PDT::Colour0) ++nsng; else if(col==PDT::Colour3||col==PDT::Colour3bar) ++ntri; else if(col==PDT::Colour8) ++noct; else if(col==PDT::Colour6||col==PDT::Colour6bar) ++nsex; } if(nsng==4 || (ntri==2&&nsng==2) || (noct==3 && nsng==1) || (ntri==2 && noct==1 && nsng==1) ) { vector cfv(1,make_pair(0,1)); diag.colourFlow = cfv; } else if(noct==4) { // flows for SSVV, VVVV is handled in me class vector cfv(3); cfv[0] = make_pair(0, 1.); cfv[1] = make_pair(1,-2.); cfv[2] = make_pair(2, 1.); diag.colourFlow = cfv; } else if(ntri==2&&noct==2) { vector cfv(2); cfv[0] = make_pair(0, 1); cfv[1] = make_pair(1, 1); diag.colourFlow = cfv; } else if(nsex==2&&noct==2) { vector cfv; for(unsigned int ix=0;ix<4;++ix) cfv.push_back(make_pair(ix ,2.)); for(unsigned int ix=0;ix<8;++ix) cfv.push_back(make_pair(4+ix,1.)); diag.colourFlow = cfv; } else assert(false); } namespace { // Helper functor for find_if in duplicate function. class SameDiagramAs { public: SameDiagramAs(const HPDiagram & diag) : a(diag) {} bool operator()(const HPDiagram & b) const { return a == b; } private: HPDiagram a; }; } bool HardProcessConstructor::duplicate(const HPDiagram & diag, const HPDVector & group) const { //find if a duplicate diagram exists HPDVector::const_iterator it = find_if(group.begin(), group.end(), SameDiagramAs(diag)); return it != group.end(); } herwig++-2.6.0.orig/Models/General/TwoToTwoProcessConstructor.h0000644000175000017500000002210411754474773025321 0ustar sylvestresylvestre// -*- C++ -*- // // TwoToTwoProcessConstructor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TwoToTwoProcessConstructor_H #define HERWIG_TwoToTwoProcessConstructor_H // // This is the declaration of the TwoToTwoProcessConstructor class. // #include "HardProcessConstructor.h" #include "ThePEG/Utilities/Exception.h" #include "TwoToTwoProcessConstructor.fh" namespace Herwig { using namespace ThePEG; /** * The TwoToTwoProcessConstructor is designed to construct the diagrams that are * possible for a given set of incoming and outgoing particles. * * @see \ref TwoToTwoProcessConstructorInterfaces "The interfaces" * defined for TwoToTwoProcessConstructor. * @see HardProcessConstructor */ class TwoToTwoProcessConstructor: public HardProcessConstructor { public: /** Set of ParticleData pointers */ typedef set tPDSet; /** Map of HPDiagrams. */ typedef multimap HPDMap; /** Enumeration for the direction */ enum direction {incoming, outgoing}; public: /** * The default constructor. */ TwoToTwoProcessConstructor(); 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: /** * Main function called to start constructing the diagrams for * the 2->2 process */ void constructDiagrams(); 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 HardProcessConstructor 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initTwoToTwoProcessConstructor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TwoToTwoProcessConstructor & operator=(const TwoToTwoProcessConstructor &); private: /** Functions to create the diagrams.*/ //@{ /** * Given a vertex and 2 particle id's find the possible states * that can be the 3rd external particle * @param vertex Pointer to the vertex * @param part1 id of first particle * @param d1 direction of particle one * @param part2 id of other particle * @param d2 direction of particle two * @param d3 required direction of 3rd state (default = outgoing) * @return container of third particles */ tPDSet search(VertexBasePtr vertex, long part1, direction d1, long part2, direction d2, direction d3 = outgoing); /** * Given a vertex and 3 particle id's find the possible states * that can be the 4th external particle * @param vertex Pointer to the vertex * @param part1 id of first particle * @param d1 direction of particle one * @param part2 id of second particle * @param d2 direction of particle two * @param part3 id of third particle * @param d3 direction of particle three * @param d4 Required direction of fourth state (default = outgoing) * @return container of fourth particles */ tPDSet search(VertexBasePtr vertex, long part1, direction d1, long part2, direction d2, long part3, direction d3, direction d4 = outgoing); /** * Create the resonance diagrams. * @param inpp The incoming pair of particles. * @param fs A possible final state. * @param vertex The possible interaction vertex for the incoming pair */ void createSChannels(tcPDPair inpp, long fs, tVertexBasePtr vertex); /** * Create the scattering diagrams. * @param inpp The incoming pair of particles. * @param fs A possible final state. * @param vertex The first vertex */ void createTChannels(tPDPair inpp, long fs, tVertexBasePtr vertex); /** * Populate the diagram structure * @param in Pair of incoming particle id's * @param out1 first outgoing particle * @param out2 set of second outgoing particles * @param inter pointer to particle data for intermediate * @param chan the channel type * @param vertices pair of vertices for the diagram * @param order The order */ void makeDiagrams(IDPair in, long out1, const tPDSet & out2, PDPtr inter, HPDiagram::Channel chan, VBPair vertices, BPair order); /** * Create diagrams from 4 point vertices * @param parta id of first incoming particle * @param partb id of second incoming particle * @param partc id of first outgoing particle * @param vert pointer to the vertex */ void makeFourPointDiagrams(long parta,long partb,long partc, VertexBasePtr vert); /** * Create the matrix element that will calculate me2() for this * process * @param process vector of HardPrcoessDiagrams structs that store * the information about the diagrams */ void createMatrixElement(const HPDVector & process) const; //@} /** * Contruct the classname and object name for the matrix element * @param extpart vector containing incoming and outgoing particle data pointers * @param objname a string containing the default path of the ME object */ string MEClassname(const vector & extpart, string & objname) const; private: /** * Required initial state particles */ PDVector incoming_; /** * Pairs of particles for initial state, ordered by spin or id. * If both are of differing spin then lowest is first and if the spin is * equal the particle goes first then the anti-particle. This is setup * in the doinit() member. */ vector incPairs_; /** * Required final state particles */ PDVector outgoing_; /** * Number of incoming particles */ unsigned int Nout_; /** * Number of vertices in the model */ unsigned int nv_; /** * The vertices */ vector vertices_; /** * Store the configuration of the diagrams */ HPDVector processes_; /** * Whether to include all diagrams or just those with strong * coupling in them */ bool allDiagrams_; /** * Which types of processes to generate */ unsigned int processOption_; /** * Option for the scales */ unsigned int scaleChoice_; /** * Prefactor for the scale calculation */ double scaleFactor_; /** * Option to exclude certain intermediates */ vector excluded_; /** * Option to exclude certain external particles */ vector excludedExternal_; /** * Excluded Vertices */ vector excludedVertexVector_; /** * Excluded Vertices */ set excludedVertexSet_; }; /** Exception class indicating setup problem. */ class TwoToTwoProcessConstructorError : public Exception { public: /** * Exception for error handling * @param str Error message * @param sev Severity */ TwoToTwoProcessConstructorError(const string & str, Severity sev) : Exception(str,sev) {} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of TwoToTwoProcessConstructor. */ template <> struct BaseClassTrait { /** Typedef of the first base class of TwoToTwoProcessConstructor. */ typedef Herwig::HardProcessConstructor NthBase; }; /** This template specialization informs ThePEG about the name of * the TwoToTwoProcessConstructor class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::TwoToTwoProcessConstructor"; } }; /** @endcond */ } #endif /* HERWIG_TwoToTwoProcessConstructor_H */ herwig++-2.6.0.orig/Models/General/ThreeBodyDecayConstructor.h0000644000175000017500000001677111754474773025064 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_ThreeBodyDecayConstructor_H #define HERWIG_ThreeBodyDecayConstructor_H // // This is the declaration of the ThreeBodyDecayConstructor class. // #include "NBodyDecayConstructorBase.h" #include "ThePEG/Helicity/Vertex/VertexBase.h" #include "TBDiagram.h" #include "Herwig++/Decay/General/GeneralThreeBodyDecayer.fh" namespace Herwig { using namespace ThePEG; using Helicity::VertexBasePtr; /** * A two body decay mode which is a prototype for the * three body mode */ struct TwoBodyPrototype { /** * Constructor */ TwoBodyPrototype(tPDPtr in, tPDPair out, VertexBasePtr v) : incoming(in), outgoing(out), vertex(v) {} /** * Incoming particle */ tPDPtr incoming; /** * Outgoing particles */ tPDPair outgoing; /** * The vertex for the interaction */ VertexBasePtr vertex; }; /** * The ThreeBodyDecayConstructor class inherits from the dummy base class * NBodyDecayConstructorBase and implements the necessary functions in * order to create the 3 body decaymodes for a given set of vertices * stored in a Model class. * * @see \ref ThreeBodyDecayConstructorInterfaces "The interfaces" * defined for ThreeBodyDecayConstructor. * @see NBodyDecayConstructor */ class ThreeBodyDecayConstructor: public NBodyDecayConstructorBase { public: /** * The default constructor. */ ThreeBodyDecayConstructor() : _removeOnShell(1), _includeTopOnShell(false), _interopt(0), _widthopt(1), _minReleaseFraction(1e-3), _maxBoson(1), _maxList(1), weakMassCut_(-GeV), intOpt_(1), relErr_(1e-2) {} /** * 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 & part); /** * Number of outgoing lines. Required for correct ordering. */ virtual unsigned int numBodies() const { return 3; } protected: /** * Create the two body prototypes for the decays * @param inpart Incoming particle * @param vert The vertex to create decays for * @param ilist Which list to search * @return A vector a decay modes */ vector createPrototypes(tPDPtr inpart, VertexBasePtr vert, unsigned int ilist); /** * Expand the two body prototype to get the possible * threebody diagrams * @param proto The two body prototype * @param vert The vertex to create decays for * @param ilist Which list to search */ vector expandPrototype(TwoBodyPrototype proto, VertexBasePtr vert, unsigned int ilist); /** * Create the decayer * @param diagrams The diagrams for the decay * @param inter Option for intermediates */ GeneralThreeBodyDecayerPtr createDecayer(vector & diagrams, bool inter) const; /** * Contruct the classname and object name for the Decayer * @param incoming The incoming particle * @param outgoing The decay products * @param objname a string containing the default path of the Decayer object */ string DecayerClassName(tcPDPtr incoming, const OrderedParticles & outgoing, string & objname) const; /** * Create the DecayMode from the diagrams * @param diagrams The diagrams * @param inter Option for intermediates */ void createDecayMode(vector & diagrams, bool inter); /** * Get the correct colour factor matrix. * @param incoming The incoming particle * @param outgoing The outgoing particles * @param diagrams The diagrams * @param ncf Set the number of colourflows. */ pair,vector > getColourFactors(tcPDPtr incoming, const OrderedParticles & outgoing, const vector & diagrams, unsigned int & ncf) 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initThreeBodyDecayConstructor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ThreeBodyDecayConstructor & operator=(const ThreeBodyDecayConstructor &); private: /** * Whether or not to remove on-shell diagrams */ unsigned int _removeOnShell; /** * Include on-shell for \f$t\to b W\f$ */ bool _includeTopOnShell; /** * Option for the inclusion of intermediates */ unsigned int _interopt; /** * How to treat the widths of the intermediate particles */ unsigned int _widthopt; /** * The minimum energy release for a three-body decay as a * fraction of the parent mass */ double _minReleaseFraction; /** * Maximum number of EW gauge bosons */ unsigned int _maxBoson; /** * Maximum number of particles from the decaying particle list */ unsigned int _maxList; /** * Excluded Vertices */ vector excludedVector_; /** * Excluded Vertices */ set excludedSet_; /** * Cut off or decays via the weak current */ Energy weakMassCut_; /** * Option for the integration to get the partial width */ unsigned int intOpt_; /** * Relative error for partial width integration */ double relErr_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ThreeBodyDecayConstructor. */ template <> struct BaseClassTrait { /** Typedef of the first base class of ThreeBodyDecayConstructor. */ typedef Herwig::NBodyDecayConstructorBase NthBase; }; /** This template specialization informs ThePEG about the name of * the ThreeBodyDecayConstructor class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::ThreeBodyDecayConstructor"; } }; /** @endcond */ } #endif /* HERWIG_ThreeBodyDecayConstructor_H */ herwig++-2.6.0.orig/Models/General/QQHiggsProcessConstructor.cc0000644000175000017500000001303211755204223025172 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the QQHiggsProcessConstructor class. // #include "QQHiggsProcessConstructor.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/General/GeneralQQHiggs.h" using namespace Herwig; QQHiggsProcessConstructor::QQHiggsProcessConstructor() : _process(0), _quarkFlavour(0), _shapeOpt(1) {} IBPtr QQHiggsProcessConstructor::clone() const { return new_ptr(*this); } IBPtr QQHiggsProcessConstructor::fullclone() const { return new_ptr(*this); } void QQHiggsProcessConstructor::persistentOutput(PersistentOStream & os) const { os << _process << _quarkFlavour << _higgs << _shapeOpt; } void QQHiggsProcessConstructor::persistentInput(PersistentIStream & is, int) { is >> _process >> _quarkFlavour >> _higgs >> _shapeOpt; } ClassDescription QQHiggsProcessConstructor::initQQHiggsProcessConstructor; // Definition of the static class description member. void QQHiggsProcessConstructor::Init() { static ClassDocumentation documentation ("The QQHiggsProcessConstructor class generates hard processes for the" " production of the Higgs boson in association with a heavy quark-antiquark" " pair in general models."); static RefVector interfaceHiggsBoson ("HiggsBoson", "The possible Higgs bosons", &QQHiggsProcessConstructor::_higgs, -1, false, false, true, false, false); static Switch interfaceShapeOption ("ShapeScheme", "Option for the treatment of the Higgs resonance shape", &QQHiggsProcessConstructor::_shapeOpt, 2, false, false); static SwitchOption interfaceStandardShapeFixed (interfaceShapeOption, "FixedBreitWigner", "Breit-Wigner s-channel resonanse", 1); static SwitchOption interfaceStandardShapeRunning (interfaceShapeOption, "MassGenerator", "Use the mass generator to give the shape", 2); static SwitchOption interfaceStandardShapeOn (interfaceShapeOption, "OnShell", "Produce the Higgs on-shell", 0); static Switch interfaceProcess ("Process", "Which subprocesses to include", &QQHiggsProcessConstructor::_process, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all subprocesses", 0); static SwitchOption interfaceProcess1 (interfaceProcess, "gg", "Include only gg -> QQbarH processes", 1); static SwitchOption interfaceProcessqbarqbarqbarqbar (interfaceProcess, "qqbar", "Include only qbar qbar -> QQbarH processes", 2); static Switch interfaceQuarkType ("QuarkType", "The type of quark", &QQHiggsProcessConstructor::_quarkFlavour, 6, false, false); static SwitchOption interfaceQuarkTypeBottom (interfaceQuarkType, "Bottom", "Produce bottom-antibottom", 5); static SwitchOption interfaceQuarkTypeTop (interfaceQuarkType, "Top", "Produce top-antitop", 6); static SwitchOption interfaceQuarkTypeBottomTop (interfaceQuarkType, "BottomandTop", "Produce bottom-antibottom and top-antitop", 0); } void QQHiggsProcessConstructor::constructDiagrams() { if(_higgs.empty() || !subProcess() ) return; // initialize the Higgs bosons for(unsigned int ix=0;ix<_higgs.size();++ix) _higgs[ix]->init(); long qmin = _quarkFlavour == 0 ? 5 : _quarkFlavour; long qmax = _quarkFlavour == 0 ? 6 : _quarkFlavour; for(long iq=qmin;iq<=qmax;++iq) { tPDPtr qk = getParticleData(iq); tPDPtr qb = qk->CC(); // loop over the possible Higgs bosons for(PDVector::const_iterator ih=_higgs.begin(); ih!=_higgs.end();++ih) { // check higgs is neutral and scalar if((**ih).iCharge()!=0 || (**ih).coloured() || (**ih).iSpin()!=PDT::Spin0) continue; // find a suitable vertex for(unsigned int nv = 0; nv < model()->numberOfVertices(); ++nv ) { VertexBasePtr vertex = model()->vertex(nv); AbstractFFSVertexPtr svert = dynamic_ptr_cast(vertex); if(!svert) continue; if(vertex->getNpoint() != 3) continue; // check q qb allowed if(!vertex->isOutgoing(qk)|| !vertex->isOutgoing(qb)) continue; // check outgoing higgs allowed if(!vertex->isOutgoing(*ih)) continue; // create the MatrixElement object string objectname ("/Herwig/MatrixElements/"); string classname("Herwig::GeneralQQHiggs"); objectname += "MEPP2"; if(iq==5) objectname += "bbbar"; else objectname += "ttbar"; objectname += (**ih).PDGName(); GeneralQQHiggsPtr matrixElement = dynamic_ptr_cast (generator()->preinitCreate(classname, objectname)); if( !matrixElement ) throw Exception() << "QQHiggsProcessConstructor::constructDiagrams() " << " Failed to construct matrix element for " << qk->PDGName() << " + " << qb->PDGName() << " + " << (**ih).PDGName() << " production" << Exception::runerror; // set the information matrixElement->setProcessInfo( iq, *ih, svert,_shapeOpt, _process ); // insert it generator()->preinitInterface(subProcess(), "MatrixElements", subProcess()->MEs().size(), "insert", matrixElement->fullName()); } } } } herwig++-2.6.0.orig/Models/General/DecayConstructor.h0000644000175000017500000001212711754474773023245 0ustar sylvestresylvestre// -*- C++ -*- // // DecayConstructor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DecayConstructor_H #define HERWIG_DecayConstructor_H // // This is the declaration of the DecayConstructor class. // #include "ThePEG/Interface/Interfaced.h" #include "NBodyDecayConstructorBase.h" #include "Herwig++/Decay/Radiation/DecayRadiationGenerator.h" #include "DecayConstructor.fh" namespace Herwig { using namespace ThePEG; /** * The DecayConstructor class is an interfaced class that stores a * vector of NBodyDecayConstructor objects and calls the appropriate * function to create the decayers and decaymodes. There is also an interface * to add decay mode tags of the form a->b,c,...; which will not * be created. * * @see \ref DecayConstructorInterfaces "The interfaces" * defined for DecayConstructor. * @see Interfaced */ class DecayConstructor: public Interfaced { public: /** * The default constructor. */ DecayConstructor() : NBodyDecayConstructors_(0), _disableDMTags(0), _minBR(0.) {} 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(); /** * Function to create decayers * @param particles vector of ParticleData pointers to particles contained * in model * @param minBR minimum branching ratio for modes */ void createDecayers(const vector & particles, double minBR); /** * Check whether the decay mode given is one that should not be * created * @param tag The decay mode tag, a->b,c,d,...; */ bool disableDecayMode(string tag) const; /** * QED Generator */ DecayRadiationGeneratorPtr QEDGenerator() {return QEDGenerator_;} /** * Vector of references to the objects that will construct the N-Body * decays. */ const vector & decayConstructors() { return NBodyDecayConstructors_; } /** * Get minimum branching ratio */ double minimumBR() const { return _minBR;} 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(); //@} 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initDecayConstructor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DecayConstructor & operator=(const DecayConstructor &); private: /** * Vector of references to the objects that will construct the N-Body * decays. */ vector NBodyDecayConstructors_; /** * A list of DecayMode tags that are not to be created */ vector _disableDMTags; /** * The decay radiation generator to use for QED radiation */ DecayRadiationGeneratorPtr QEDGenerator_; /** * Minimum allowed branching ratio */ double _minBR; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DecayConstructor. */ template <> struct BaseClassTrait { /** Typedef of the first base class of DecayConstructor. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the DecayConstructor class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::DecayConstructor"; } }; /** @endcond */ } #endif /* HERWIG_DecayConstructor_H */ herwig++-2.6.0.orig/Models/General/VVSLoopVertex.h0000644000175000017500000001060111754474773022453 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_VVSLoopVertex_H #define HERWIG_VVSLoopVertex_H // // This is the declaration of the VVSLoopVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/GeneralVVSVertex.h" #include "VVSLoopVertex.fh" namespace Herwig { using namespace ThePEG; /** * The VVSLoopVertex is designed to * calculate the coefficents for the terms in the * Passarino-Veltman tensor reduction scheme. A vertex * class should inherit from this and implement it's own * setCoupling member from which the VVSLoopVertex * setCoupling member is called. */ class VVSLoopVertex: public Helicity::GeneralVVSVertex { public: /** * The default constructor. */ VVSLoopVertex() : masses(0), type(0), couplings(0), theNpart(0) { kinematics(true); } /** * Calculate couplings *@param q2 Scale at which to evaluate coupling *@param part1 ParticleData pointer to first particle *@param part2 ParticleData pointer to first particle *@param part3 ParticleData pointer to first particle */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} protected: /** * Vector of loop masses */ vector masses; /** * Vector of loop types */ vector type; /** * The left and right couplings for a fermion loop */ vector > couplings; /** * Set the number of particles in the loop */ void setNParticles(unsigned int npart) { theNpart = npart; } private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initVVSLoopVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VVSLoopVertex & operator=(const VVSLoopVertex &); private: /** * The number of particles in the loop */ unsigned int theNpart; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of VVSLoopVertex. */ template <> struct BaseClassTrait { /** Typedef of the first base class of VVSLoopVertex. */ typedef Helicity::GeneralVVSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the VVSLoopVertex class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::VVSLoopVertex"; } }; /** @endcond */ } #endif /* HERWIG_VVSLoopVertex_H */ herwig++-2.6.0.orig/Models/General/HardProcessConstructor.h0000644000175000017500000001324011754474773024432 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_HardProcessConstructor_H #define HERWIG_HardProcessConstructor_H // // This is the declaration of the HardProcessConstructor class. // #include "ThePEG/Interface/Interfaced.h" #include "HPDiagram.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Handlers/SubProcessHandler.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Handlers/StandardEventHandler.h" #include "Herwig++/MatrixElement/General/GeneralHardME.h" #include "HardProcessConstructor.fh" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the HardProcessConstructor class. * * @see \ref HardProcessConstructorInterfaces "The interfaces" * defined for HardProcessConstructor. */ class HardProcessConstructor: public Interfaced { public: /** Vector of HPDiagrams. */ typedef vector HPDVector; public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ HardProcessConstructor() : debug_(false) {} //@} /** * The main function to create diagrams etc for the processes */ virtual void constructDiagrams() = 0; 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: /** Functions to set up colour flows and matrix elements. */ //@{ /** * Determine whether the ordering of the outgoing states is the same * as the ordering in the matrix elements * @param diag The diagram to question */ void fixFSOrder(HPDiagram & diag); /** * Assign a diagram to the appropriate colour flow(s). * @param diag The diagram to assign */ void assignToCF(HPDiagram & diag); /** * Assign a $s$-channel diagram to the appropriate colour flow(s). * @param diag The diagram to assign */ void sChannelCF(HPDiagram & diag); /** * Assign a $t$-channel diagram to the appropriate colour flow(s). * @param diag The diagram to assign */ void tChannelCF(HPDiagram & diag); /** * Assign a $u$-channel diagram to the appropriate colour flow(s). * @param diag The diagram to assign */ void uChannelCF(HPDiagram & diag); /** * Assign a $u$-channel diagram to the appropriate colour flow(s). * @param diag The diagram to assign */ void fourPointCF(HPDiagram & diag); //@} /** * Pointer to the model being used */ tHwSMPtr model() const {return model_;} /** * Pointer to the sub process handler */ tSubHdlPtr subProcess() const {return subProcess_;} /** * Whether to print the debug information with the matrix * element. This is here solely so it can be passed to * a matrix element that is created here. */ bool debug() const {return debug_;} /** * Get the correct colour factor matrix. * @param extpart Vector of external ParticleData pointers */ GeneralHardME::ColourStructure colourFlow(const tcPDVector & extpart) const; /** * Search for a diagram that has already been created * @param diagram The diagram to search for * @param group The group of diagrams to search through */ bool duplicate(const HPDiagram & diagram, const HPDVector & group) 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 static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription initHardProcessConstructor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ HardProcessConstructor & operator=(const HardProcessConstructor &); private: /** * Pointer to the model being used */ tHwSMPtr model_; /** * Pointer to the sub process handler */ tSubHdlPtr subProcess_; /** * Whether to print the debug information with the matrix * element. This is here solely so it can be passed to * a matrix element that is created here. */ bool debug_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of HardProcessConstructor. */ template <> struct BaseClassTrait { /** Typedef of the first base class of HardProcessConstructor. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the HardProcessConstructor class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::HardProcessConstructor"; } }; /** @endcond */ } #endif /* HERWIG_HardProcessConstructor_H */ herwig++-2.6.0.orig/Models/General/BSMModel.cc0000644000175000017500000002762211755204024021475 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the BSMModel class. // #include "BSMModel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Repository/Repository.h" #include "ThePEG/Utilities/StringUtils.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/MassGenerator.h" #include "ThePEG/PDT/WidthGenerator.h" #include "ThePEG/PDT/DecayMode.h" using namespace Herwig; BSMModel::BSMModel() : decayFile_(), readDecays_(true), topModesFromFile_(false), tolerance_(1e-6) {} void BSMModel::persistentOutput(PersistentOStream & os) const { os << decayFile_ << topModesFromFile_ << tolerance_; } void BSMModel::persistentInput(PersistentIStream & is, int) { is >> decayFile_ >> topModesFromFile_ >> tolerance_; } DescribeAbstractClass describeHerwigBSMModel("Herwig::BSMModel", ""); void BSMModel::Init() { static ClassDocumentation documentation ("The BSMModel class provides a base class for BSM models including the" " features to read decays in the SLHA format"); static Parameter interfaceDecayFileName ("DecayFileName", "Name of the file from which to read decays in the SLHA format", &BSMModel::decayFile_, "", false, false); static Switch interfaceTopModes ("TopModes", "Whether ro use the Herwig++ SM top decays or those from the SLHA file", &BSMModel::topModesFromFile_, false, false, false); static SwitchOption interfaceTopModesFile (interfaceTopModes, "File", "Take the modes from the files", true); static SwitchOption interfaceTopModesHerwig (interfaceTopModes, "Herwig", "Use the SM ones", false); static Parameter interfaceBRTolerance ("BRTolerance", "Tolerance for the sum of branching ratios to be difference from one.", &BSMModel::tolerance_, 1e-6, 1e-8, 0.01, false, false, Interface::limited); } void BSMModel::doinit() { StandardModel::doinit(); // check if need to read decays if(decayFile()==""||!readDecays_) return; decayRead(); } void BSMModel::decayRead() { // read decays CFileLineReader cfile; cfile.open(decayFile_); if( !cfile ) throw SetupException() << "BSMModel::doinit - An error occurred in opening the " << "decay file \"" << decayFile_ << "\"." << Exception::runerror; //Before reading the spectrum/decay files the SM higgs //decay modes, mass and width generators need to be turned off. PDPtr h0 = getParticleData(ParticleID::h0); h0->widthGenerator(WidthGeneratorPtr()); h0->massGenerator(MassGenPtr()); h0->width(ZERO); h0->stable(true); DecaySet::const_iterator dit = h0->decayModes().begin(); DecaySet::const_iterator dend = h0->decayModes().end(); for( ; dit != dend; ++dit ) { generator()->preinitInterface(*dit, "BranchingRatio", "set", "0."); generator()->preinitInterface(*dit, "OnOff", "set", "Off"); } // if taking the top modes from the file // delete the SM stuff if(topModesFromFile_) { PDPtr top = getParticleData(ParticleID::t); top->widthGenerator(WidthGeneratorPtr()); top->massGenerator(MassGenPtr()); DecaySet::const_iterator dit = top->decayModes().begin(); DecaySet::const_iterator dend = top->decayModes().end(); for( ; dit != dend; ++dit ) { generator()->preinitInterface(*dit, "BranchingRatio", "set", "0."); generator()->preinitInterface(*dit, "OnOff", "set", "Off"); } } // read first line and check if this is a Les Houches event file cfile.readline(); bool lesHouches = cfile.find("> dummy >> parent >> iunit(width, GeV); PDPtr inpart = getParticleData(parent); if(!topModesFromFile_&&abs(parent)==ParticleID::t) { cfile.readline(); return; } if(!inpart) throw SetupException() << "BSMModel::readDecay() - " << "A ParticleData object with the PDG code " << parent << " does not exist. " << Exception::runerror; inpart->width(width); if( width > ZERO ) inpart->cTau(hbarc/width); inpart->widthCut(5.*width); Energy inMass = inpart->mass(); string prefix(inpart->name() + "->"); double brsum(0.); unsigned int nmode = 0; while(cfile.readline()) { string line = cfile.getline(); // skip comments if(line[0] == '#') continue; // reached the end if( line[0] == 'B' || line[0] == 'b' || line[0] == 'D' || line[0] == 'd' || line[0] == '<' ) { cfile.resetline(); break; } // read the mode // get the branching ratio and no of decay products istringstream is(line); double brat(0.); unsigned int nda(0),npr(0); is >> brat >> nda; vector products,bosons; Energy mout(ZERO),moutnoWZ(ZERO); string tag = prefix; int charge = -inpart->iCharge(); while( true ) { long t; is >> t; if( is.fail() ) break; if( t == abs(parent) ) { throw SetupException() << "An error occurred while read a decay of the " << inpart->PDGName() << ". One of its products has the same PDG code " << "as the parent particle. Please check the SLHA file.\n" << Exception::runerror; } tcPDPtr p = getParticleData(t); charge += p->iCharge(); if( !p ) { throw SetupException() << "BSMModel::readDecay() - An unknown PDG code has been encounterd " << "while reading a decay mode. ID: " << t << Exception::runerror; } ++npr; tag += p->name() + ","; Energy mass = p->mass(); mout += mass; if(abs(p->id())==ParticleID::Wplus||p->id()==ParticleID::Z0) { bosons.push_back(p); } else { products.push_back(p); moutnoWZ += mass; } } if( npr != nda ) { throw SetupException() << "BSMModel::readDecay - While reading a decay of the " << inpart->PDGName() << " from an SLHA file, an inconsistency " << "between the number of decay products and the value in " << "the 'NDA' column was found. Please check if the spectrum " << "file is correct.\n" << Exception::warning; } if( npr > 1 ) { tag.replace(tag.size() - 1, 1, ";"); if(charge!=0) { cerr << "BSMModel::readDecay() " << "Decay mode " << tag << " read from SLHA file does not conserve charge," << "\nare you really sure you want to do this?\n"; } ++nmode; // normal option if(mout<=inMass) { inpart->stable(false); brsum += brat; createDecayMode(tag, brat); } // no possible off-shell gauge bosons throw it away else if(bosons.empty() || bosons.size()>2 || moutnoWZ>=inMass) { cerr << "BSMModel::readDecay() " << "The decay " << tag << " cannot proceed for on-shell " << "particles, skipping it.\n"; } else { Energy maxMass = inMass - moutnoWZ; string newTag = prefix; for(unsigned int ix=0;ixname() + ","; if(bosons.size()==1) { cerr << "BSMModel::readDecay() " << "The decay " << tag << " cannot proceed for on-shell\n" << "particles, replacing gauge boson with its decay products\n"; vector > modes = createWZDecayModes(newTag,brat,bosons[0],maxMass); for(unsigned int ix=0;ixid()==bosons[1]->id(); if(maxMass>bosons[0]->mass()&&maxMass>bosons[1]->mass()) { cerr << "BSMModel::readDecay() " << "The decay " << tag << " cannot proceed for on-shell\n" << "particles, replacing one of the gauge bosons" << " with its decay products\n"; unsigned int imax = identical ? 1 : 2; if(imax==2) brat *= 0.5; for(unsigned int ix=0;ixname()+','; unsigned int iother = ix==0 ? 1 : 0; vector > modes = createWZDecayModes(newTag2,brat,bosons[iother],maxMass); for(unsigned int ix=0;ix tolerance_ && nmode!=0 ) { cerr << "Warning: The total branching ratio for " << inpart->PDGName() << " from the spectrum file does not sum to 1. The branching fractions" << " will be rescaled.\n"; cerr << setprecision(13) << abs(brsum - 1.) << "\n"; } if(nmode>0) { inpart->update(); if(inpart->CC()) inpart->CC()->update(); } } void BSMModel::createDecayMode(string tag, double brat) const { tDMPtr dm = generator()->findDecayMode(tag); if(!dm) { dm = generator()->preinitCreateDecayMode(tag); } generator()->preinitInterface(dm, "OnOff", "set", "On"); generator()->preinitInterface(dm, "Decayer", "set","/Herwig/Decays/Mambo"); ostringstream brf; brf << setprecision(13)<< brat; generator()->preinitInterface(dm, "BranchingRatio","set", brf.str()); if(dm->CC()) { generator()->preinitInterface(dm->CC(), "OnOff", "set", "On"); generator()->preinitInterface(dm->CC(), "Decayer", "set","/Herwig/Decays/Mambo"); generator()->preinitInterface(dm->CC(), "BranchingRatio","set", brf.str()); } } vector > BSMModel::createWZDecayModes(string tag, double brat, tcPDPtr boson, Energy maxMass) const { vector > modes; double sum(0.); for(DecaySet::const_iterator dit=boson->decayModes().begin(); dit!=boson->decayModes().end();++dit) { tcDMPtr mode = *dit; if(!mode->on()) continue; string extra; Energy outMass(ZERO); for(ParticleMSet::const_iterator pit=mode->products().begin(); pit!=mode->products().end();++pit) { extra += (**pit).name() + ","; outMass += (**pit).mass(); } if(outMassbrat(); modes.push_back(make_pair(mode->brat(),tag+extra)); } } for(unsigned int ix=0;ix/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Models/General DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwModelGenerator_la_LIBADD = am_libHwModelGenerator_la_OBJECTS = ModelGenerator.lo \ DecayConstructor.lo NBodyDecayConstructorBase.lo \ TwoBodyDecayConstructor.lo TwoToTwoProcessConstructor.lo \ HardProcessConstructor.lo \ HiggsVectorBosonProcessConstructor.lo \ HiggsVBFProcessConstructor.lo QQHiggsProcessConstructor.lo \ ThreeBodyDecayConstructor.lo WeakCurrentDecayConstructor.lo \ ResonantProcessConstructor.lo VVSLoopVertex.lo \ BSMWidthGenerator.lo BSMModel.lo libHwModelGenerator_la_OBJECTS = $(am_libHwModelGenerator_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwModelGenerator_la_SOURCES) DIST_SOURCES = $(libHwModelGenerator_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwModelGenerator.la libHwModelGenerator_la_SOURCES = \ ModelGenerator.h ModelGenerator.fh ModelGenerator.cc\ DecayConstructor.cc DecayConstructor.h DecayConstructor.fh \ NBodyDecayConstructorBase.cc NBodyDecayConstructorBase.h \ NBodyDecayConstructorBase.fh \ TwoBodyDecayConstructor.cc TwoBodyDecayConstructor.h \ TwoToTwoProcessConstructor.h TwoToTwoProcessConstructor.fh \ TwoToTwoProcessConstructor.cc \ HardProcessConstructor.h HardProcessConstructor.fh \ HardProcessConstructor.cc \ HiggsVectorBosonProcessConstructor.h \ HiggsVectorBosonProcessConstructor.cc \ HiggsVBFProcessConstructor.h \ HiggsVBFProcessConstructor.cc \ QQHiggsProcessConstructor.h \ QQHiggsProcessConstructor.cc \ HPDiagram.h \ ThreeBodyDecayConstructor.h ThreeBodyDecayConstructor.cc \ WeakCurrentDecayConstructor.h WeakCurrentDecayConstructor.cc \ ResonantProcessConstructor.cc ResonantProcessConstructor.h \ ResonantProcessConstructor.fh \ VVSLoopVertex.fh VVSLoopVertex.h VVSLoopVertex.cc \ BSMWidthGenerator.h BSMWidthGenerator.fh BSMWidthGenerator.cc \ TBDiagram.h TwoBodyDecay.h\ BSMModel.h BSMModel.cc all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Models/General/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Models/General/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwModelGenerator.la: $(libHwModelGenerator_la_OBJECTS) $(libHwModelGenerator_la_DEPENDENCIES) $(EXTRA_libHwModelGenerator_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwModelGenerator_la_OBJECTS) $(libHwModelGenerator_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BSMModel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BSMWidthGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DecayConstructor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HardProcessConstructor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HiggsVBFProcessConstructor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HiggsVectorBosonProcessConstructor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ModelGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NBodyDecayConstructorBase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QQHiggsProcessConstructor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ResonantProcessConstructor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ThreeBodyDecayConstructor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TwoBodyDecayConstructor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TwoToTwoProcessConstructor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VVSLoopVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/WeakCurrentDecayConstructor.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Models/General/HardProcessConstructor.fh0000644000175000017500000000056211754474773024603 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the HardProcessConstructor class. // #ifndef HERWIG_HardProcessConstructor_FH #define HERWIG_HardProcessConstructor_FH #include "ThePEG/Config/ThePEG.h" namespace Herwig { class HardProcessConstructor; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::HardProcessConstructor,HPConstructorPtr); } #endif herwig++-2.6.0.orig/Models/General/TwoBodyDecay.h0000644000175000017500000000336711754474773022315 0ustar sylvestresylvestre// -*- C++ -*- // // TwoBodyDecay.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TwoBodyDecay_H #define HERWIG_TwoBodyDecay_H // // This is the declaration of the TwoBodyDecay struct. // namespace Herwig { using namespace ThePEG; using Helicity::tVertexBasePtr; /** * Struct for the prototype of a two-body decay mode */ struct TwoBodyDecay { public: /** * Constructor * @param pa Decaying particle * @param pb First decay product * @param pc Second decay product */ TwoBodyDecay(tPDPtr pa, tPDPtr pb, tPDPtr pc, tVertexBasePtr vertex) : parent_(pa), vertex_(vertex) { ParticleOrdering order; if( order(pb, pc) ) { children_.first = pb; children_.second = pc; } else { children_.first = pc; children_.second = pb; } } /** * The parent */ tPDPtr parent_; /** * The children */ tPDPair children_; /** * Vertex */ tVertexBasePtr vertex_; private: TwoBodyDecay(); }; /** * Test whether one TwoBodyDecay is less than another */ inline bool operator<(const TwoBodyDecay & x, const TwoBodyDecay & y) { if(x.parent_->id()!=y.parent_->id()) return x.parent_->id()id(); if(x.children_.first->id()!=y.children_.first->id()) return x.children_.first->id() < y.children_.first->id(); if(x.children_.second->id()!=y.children_.second->id()) return x.children_.second->id() < y.children_.second->id(); return x.vertex_> theModes; } ClassDescription BSMWidthGenerator::initBSMWidthGenerator; // Definition of the static class description member. void BSMWidthGenerator::Init() { static ClassDocumentation documentation ("A width generator for BSM particles."); } void BSMWidthGenerator::setupMode(tcDMPtr mode, tDecayIntegratorPtr decayer, unsigned int) { tcGeneralTwoBodyDecayerPtr dec = dynamic_ptr_cast(decayer); theModes.push_back(make_pair(mode, dec)); } Energy BSMWidthGenerator::partial2BodyWidth(int iloc, Energy m0, Energy m1, Energy m2) const { if( m0 < (m1 + m2) ) return ZERO; //need pointers to particles involved tcDMPtr dm = theModes[iloc].first; ParticleMSet::const_iterator pit = dm->products().begin(); tcPDPtr parta = *pit; ++pit; tcPDPtr partb = *pit; int dummya(0); double dummyb(0.); if( !theModes[iloc].second->twoBodyMEcode(*dm, dummya, dummyb) ) swap(parta, partb); return theModes[iloc].second->partialWidth(make_pair(dm->parent(), m0), make_pair(parta, m1), make_pair(partb, m2)); } herwig++-2.6.0.orig/Models/General/DecayConstructor.fh0000644000175000017500000000053411754474773023412 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the DecayConstructor class. // #ifndef ThePEG_DecayConstructor_FH #define ThePEG_DecayConstructor_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class DecayConstructor; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::DecayConstructor,DecayConstructorPtr); } #endif herwig++-2.6.0.orig/Models/General/NBodyDecayConstructorBase.fh0000644000175000017500000000062311754474773025140 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the NBodyDecayConstructorBase class. // #ifndef HERWIG_NBodyDecayConstructorBase_FH #define HERWIG_NBodyDecayConstructorBase_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class NBodyDecayConstructorBase; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::NBodyDecayConstructorBase, NBodyDecayConstructorBasePtr); } #endif herwig++-2.6.0.orig/Models/General/ResonantProcessConstructor.fh0000644000175000017500000000061011754474773025510 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the ResonantProcessConstructor class. // #ifndef HERWIG_ResonantProcessConstructor_FH #define HERWIG_ResonantProcessConstructor_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ResonantProcessConstructor; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ResonantProcessConstructor,RPConstructorPtr); } #endif herwig++-2.6.0.orig/Models/General/ResonantProcessConstructor.h0000644000175000017500000001416311754474773025352 0ustar sylvestresylvestre// -*- C++ -*- // // ResonantProcessConstructor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ResonantProcessConstructor_H #define HERWIG_ResonantProcessConstructor_H // // This is the declaration of the ResonantProcessConstructor class. // #include "HardProcessConstructor.h" #include "ThePEG/Utilities/Exception.h" #include "ResonantProcessConstructor.fh" namespace Herwig { using namespace ThePEG; /** * This class is designed to construct the diagrams for resonant processes * using a provdided set of particles as interemdiates. * * @see \ref ResonantProcessConstructorInterfaces "The interfaces" * defined for ResonantProcessConstructor. * @see HardProcessConstructor */ class ResonantProcessConstructor: public HardProcessConstructor { public: /** Set of ParticleData pointers */ typedef set tPDSet; /** Nested vector of doubles. */ typedef vector > CFMatrix; /** Enumeration for the direction */ enum direction {incoming, outgoing}; public: /** * The default constructor. */ ResonantProcessConstructor() : processOption_(0), scaleFactor_(1.), incoming_(0), intermediates_(0), outgoing_(0), diagrams_(0) {} 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(); /** * The main function to create the resonant diagrams */ void constructDiagrams() ; 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 HardProcessConstructor 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: /** * Utility function to help second vertex */ void constructVertex2(IDPair in, VertexBasePtr vertex, PDPtr partc); /** * Function to create the appropriate diagrams */ void makeResonantDiagram(IDPair in, PDPtr offshell, long outa, long outb, VBPair vertices); /** * Given a vertex and 2 particle id's find the possible states * that can be the 3rd external particle * @param vertex Pointer to the vertex * @param part1 id of first particle * @param d1 direction of particle one * @param part2 id of other particle * @param d2 direction of particle two * @param d3 required direction of 3rd state (default = outgoing) * @return container of third particles */ tPDSet search(VertexBasePtr vertex, long part1, direction d1, long part2, direction d2, direction d3 = outgoing); /** * Return the pair of outgoing particles from the list */ IDPair find(long part, const PDVector & out) const; /** * Create a matrix element from the given resonant process diagram */ void createMatrixElement(const HPDiagram & diag) const; /** * Create the correct classname and objectname for a matrix element */ string MEClassname(const tcPDVector & extpart, tcPDPtr inter, string & objname) const; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initResonantProcessConstructor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ResonantProcessConstructor & operator=(const ResonantProcessConstructor &); private: /** * Which types of processes to generate */ unsigned int processOption_; /** * Prefactor for the scale calculation */ double scaleFactor_; /** * Storage for the required intermediate particles */ vector incoming_; /** * Storage for the required intermediate particles */ vector intermediates_; /** * Storage for the required intermediate particles */ vector outgoing_; /** * Storage for the diagrams */ vector diagrams_; }; /** Exception class indicating setup problem. */ class RPConstructorError : public Exception {}; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ResonantProcessConstructor. */ template <> struct BaseClassTrait { /** Typedef of the first base class of ResonantProcessConstructor. */ typedef Herwig::HardProcessConstructor NthBase; }; /** This template specialization informs ThePEG about the name of * the ResonantProcessConstructor class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::ResonantProcessConstructor"; } }; /** @endcond */ } #endif /* HERWIG_ResonantProcessConstructor_H */ herwig++-2.6.0.orig/Models/General/WeakCurrentDecayConstructor.h0000644000175000017500000001406411754474773025422 0ustar sylvestresylvestre// -*- C++ -*- // // WeakCurrentDecayConstructor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_WeakCurrentDecayConstructor_H #define HERWIG_WeakCurrentDecayConstructor_H // // This is the declaration of the WeakCurrentDecayConstructor class. // #include "NBodyDecayConstructorBase.h" #include "ThePEG/Helicity/Vertex/VertexBase.h" #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/Decay/General/GeneralCurrentDecayer.fh" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/Decay/WeakCurrents/WeakDecayCurrent.h" #include "Herwig++/Decay/General/GeneralCurrentDecayer.h" #include "TwoBodyDecay.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the WeakCurrentDecayConstructor class. * * @see \ref WeakCurrentDecayConstructorInterfaces "The interfaces" * defined for WeakCurrentDecayConstructor. */ class WeakCurrentDecayConstructor: public NBodyDecayConstructorBase { public: /** * The default constructor. */ WeakCurrentDecayConstructor() : _masscut(5.*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 & part); /** * Number of outgoing lines. Required for correct ordering (do this one last) */ virtual unsigned int numBodies() const { return 1000; } /** * 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: /** @name Functions to create decayers and decaymodes. */ //@{ /** * Function to create decays * @param inpart Incoming particle * @param vert The vertex to create decays for * @param ilist Which list to search * @param iv Row number in _theExistingDecayers member * @return vector of ParticleData ptrs */ vector createModes(const PDPtr inpart,const VertexBasePtr vert, unsigned int ilist); /** * Function to create decayer for specific vertex * @param vert Pointer to vertex * @param icol Integer referring to the colmun in _theExistingDecayers * @param ivert Integer referring to the row in _theExistingDecayers * member variable */ GeneralCurrentDecayerPtr createDecayer(PDPtr in, PDPtr out1, vector outCurrent, VertexBasePtr vertex, WeakDecayCurrentPtr current); /** * Create decay mode(s) from given part and decay modes * @param inpart pointer to incoming particle * @param decays list of allowed interactions * @param decayer The decayer responsible for this decay */ void createDecayMode(vector & decays); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initWeakCurrentDecayConstructor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ WeakCurrentDecayConstructor & operator=(const WeakCurrentDecayConstructor &); private: /** * Model Pointer */ Ptr::pointer _theModel; /** * Cut-off on the mass difference */ Energy _masscut; /** * Tags for the modes */ vector decayTags_; /** * Particles for the mode */ vector > particles_; /** * Normalisation */ vector _norm; /** * The current for the mode */ vector _current; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of WeakCurrentDecayConstructor. */ template <> struct BaseClassTrait { /** Typedef of the first base class of WeakCurrentDecayConstructor. */ typedef Herwig::NBodyDecayConstructorBase NthBase; }; /** This template specialization informs ThePEG about the name of * the WeakCurrentDecayConstructor class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::WeakCurrentDecayConstructor"; } }; /** @endcond */ } #endif /* HERWIG_WeakCurrentDecayConstructor_H */ herwig++-2.6.0.orig/Models/General/TwoBodyDecayConstructor.cc0000644000175000017500000002220611754474773024712 0ustar sylvestresylvestre// -*- C++ -*- // // TwoBodyDecayConstructor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TwoBodyDecayConstructor class. // #include "TwoBodyDecayConstructor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "Herwig++/Decay/General/GeneralTwoBodyDecayer.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/PDT/EnumParticles.h" #include "DecayConstructor.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.fh" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.fh" #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.fh" #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.fh" #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.fh" #include "ThePEG/Helicity/Vertex/AbstractSSTVertex.fh" #include "ThePEG/Helicity/Vertex/AbstractSSSVertex.fh" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.fh" #include "ThePEG/Helicity/Vertex/AbstractRFSVertex.fh" #include "ThePEG/Helicity/Vertex/AbstractRFVVertex.fh" using namespace Herwig; using ThePEG::Helicity::VertexBasePtr; IBPtr TwoBodyDecayConstructor::clone() const { return new_ptr(*this); } IBPtr TwoBodyDecayConstructor::fullclone() const { return new_ptr(*this); } NoPIOClassDescription TwoBodyDecayConstructor::initTwoBodyDecayConstructor; // Definition of the static class description member. void TwoBodyDecayConstructor::Init() { static ClassDocumentation documentation ("The TwoBodyDecayConstructor implements to creation of 2 body decaymodes " "and decayers that do not already exist for the given set of vertices."); } void TwoBodyDecayConstructor::DecayList(const set & particles) { if( particles.empty() ) return; tHwSMPtr model = dynamic_ptr_cast(generator()->standardModel()); unsigned int nv(model->numberOfVertices()); for(set::const_iterator ip=particles.begin(); ip!=particles.end();++ip) { tPDPtr parent = *ip; for(unsigned int iv = 0; iv < nv; ++iv) { for(unsigned int il = 0; il < 3; ++il) { set decays = createModes(parent, model->vertex(iv), il); if( !decays.empty() ) createDecayMode(decays); } } } } set TwoBodyDecayConstructor:: createModes(tPDPtr inpart, VertexBasePtr vertex, unsigned int list) { int id = inpart->id(); if( id < 0 || !vertex->isIncoming(inpart) || vertex->getNpoint() != 3 ) return set(); Energy m1(inpart->mass()); tPDVector decaylist = vertex->search(list, inpart); set decays; tPDVector::size_type nd = decaylist.size(); for( tPDVector::size_type i = 0; i < nd; i += 3 ) { tPDPtr pa(decaylist[i]), pb(decaylist[i + 1]), pc(decaylist[i + 2]); if( pb->id() == id ) swap(pa, pb); if( pc->id() == id ) swap(pa, pc); //allowed on-shell decay? if( m1 <= pb->mass() + pc->mass() ) continue; //vertices are defined with all particles incoming if( pb->CC() ) pb = pb->CC(); if( pc->CC() ) pc = pc->CC(); decays.insert( TwoBodyDecay(inpart,pb, pc, vertex) ); } return decays; } GeneralTwoBodyDecayerPtr TwoBodyDecayConstructor::createDecayer(TwoBodyDecay decay) { string name; using namespace Helicity::VertexType; PDT::Spin in = decay.parent_->iSpin(); // PDT::Spin out1 = decay.children_.first ->iSpin(); PDT::Spin out2 = decay.children_.second->iSpin(); switch(decay.vertex_->getName()) { case FFV : if(in == PDT::Spin1Half) { name = "FFVDecayer"; if(out2==PDT::Spin1Half) swap(decay.children_.first,decay.children_.second); } else { name = "VFFDecayer"; } break; case FFS : if(in == PDT::Spin1Half) { name = "FFSDecayer"; if(out2==PDT::Spin1Half) swap(decay.children_.first,decay.children_.second); } else { name = "SFFDecayer"; } break; case VVS : if(in == PDT::Spin1) { name = "VVSDecayer"; if(out2==PDT::Spin1) swap(decay.children_.first,decay.children_.second); } else { name = "SVVDecayer"; } break; case VSS : if(in == PDT::Spin1) { name = "VSSDecayer"; } else { name = "SSVDecayer"; if(out2==PDT::Spin0) swap(decay.children_.first,decay.children_.second); } break; case VVT : name = in==PDT::Spin2 ? "TVVDecayer" : "Unknown"; break; case FFT : name = in==PDT::Spin2 ? "TFFDecayer" : "Unknown"; break; case SST : name = in==PDT::Spin2 ? "TSSDecayer" : "Unknown"; break; case SSS : name = "SSSDecayer"; break; case VVV : name = "VVVDecayer"; break; case RFS : if(in==PDT::Spin1Half) { name = "FRSDecayer"; if(out2==PDT::Spin3Half) swap(decay.children_.first,decay.children_.second); } else if(in==PDT::Spin0) { name = "SRFDecayer"; if(out2==PDT::Spin3Half) swap(decay.children_.first,decay.children_.second); } else { name = "Unknown"; } break; case RFV : if(in==PDT::Spin1Half) { name = "FRVDecayer"; if(out2==PDT::Spin3Half) swap(decay.children_.first,decay.children_.second); } else name = "Unknown"; break; default : Throw() << "Error: Cannot assign " << decay.vertex_->fullName() << " to a decayer. " << "Decay is " << decay.parent_->PDGName() << " -> " << decay.children_.first ->PDGName() << " " << decay.children_.second->PDGName(); } if(name=="Unknown") Throw() << "Error: Cannot assign " << decay.vertex_->fullName() << " to a decayer. " << "Decay is " << decay.parent_->PDGName() << " -> " << decay.children_.first ->PDGName() << " " << decay.children_.second->PDGName(); ostringstream fullname; fullname << "/Herwig/Decays/" << name << "_" << decay.parent_->PDGName() << "_" << decay.children_.first ->PDGName() << "_" << decay.children_.second->PDGName(); string classname = "Herwig::" + name; GeneralTwoBodyDecayerPtr decayer; decayer = dynamic_ptr_cast (generator()->preinitCreate(classname,fullname.str())); if(!decayer) Throw() << "Error: Cannot assign " << decay.vertex_->fullName() << " to a decayer. " << "Decay is " << decay.parent_->PDGName() << " -> " << decay.children_.first ->PDGName() << " " << decay.children_.second->PDGName(); decayer->setDecayInfo(decay.parent_,decay.children_,decay.vertex_); decayer->init(); setDecayerInterfaces(fullname.str()); return decayer; } void TwoBodyDecayConstructor:: createDecayMode(set & decays) { tPDPtr inpart = decays.begin()->parent_; tEGPtr eg = generator(); set::iterator dend = decays.end(); for( set::iterator dit = decays.begin(); dit != dend; ++dit ) { tPDPtr pb((*dit).children_.first), pc((*dit).children_.second); string tag = inpart->name() + "->" + pb->name() + "," + pc->name() + ";"; // Does it exist already ? tDMPtr dm = eg->findDecayMode(tag); // Check if tag is one that should be disabled if( decayConstructor()->disableDecayMode(tag) ) { // If mode alread exists, ie has been read from file, // disable it if( dm ) { eg->preinitInterface(dm, "BranchingRatio", "set", "0.0"); eg->preinitInterface(dm, "OnOff", "set", "Off"); } continue; } // now create DecayMode objects that do not already exist if( createDecayModes() && (!dm || inpart->id() == ParticleID::h0) ) { tDMPtr ndm = eg->preinitCreateDecayMode(tag); if(ndm) { inpart->stable(false); GeneralTwoBodyDecayerPtr decayer=createDecayer(*dit); if(!decayer) continue; eg->preinitInterface(ndm, "Decayer", "set", decayer->fullName()); eg->preinitInterface(ndm, "OnOff", "set", "On"); Energy width = decayer->partialWidth(make_pair(inpart,inpart->mass()), make_pair(pb,pb->mass()) , make_pair(pc,pc->mass())); setBranchingRatio(ndm, width); if(ndm->brat()minimumBR()) { generator()->preinitInterface(decayer->fullName(), "Initialize", "set","0"); } } else throw NBodyDecayConstructorError() << "TwoBodyDecayConstructor::createDecayMode - Needed to create " << "new decaymode but one could not be created for the tag " << tag << Exception::warning; } else if( dm ) { if(dm->brat()minimumBR()) { continue; } if((dm->decayer()->fullName()).find("Mambo") != string::npos) { inpart->stable(false); GeneralTwoBodyDecayerPtr decayer=createDecayer(*dit); if(!decayer) continue; eg->preinitInterface(dm, "Decayer", "set", decayer->fullName()); } } } // update CC mode if it exists if( inpart->CC() ) inpart->CC()->synchronize(); } herwig++-2.6.0.orig/Models/General/NBodyDecayConstructorBase.cc0000644000175000017500000001336311754474773025135 0ustar sylvestresylvestre// -*- C++ -*- // // NBodyDecayConstructorBase.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the NBodyDecayConstructorBase class. // #include "NBodyDecayConstructorBase.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "DecayConstructor.h" using namespace Herwig; using namespace ThePEG; void NBodyDecayConstructorBase::persistentOutput(PersistentOStream & os ) const { os << _init << _iteration << _points << _info << _decayConstructor; } void NBodyDecayConstructorBase::persistentInput(PersistentIStream & is , int) { is >> _init >> _iteration >> _points >> _info >> _decayConstructor; } AbstractClassDescription NBodyDecayConstructorBase::initNBodyDecayConstructorBase; // Definition of the static class description member. void NBodyDecayConstructorBase::Init() { static ClassDocumentation documentation ("The NBodyDecayConstructorBase class is the base class for the automatic" "construction of the decay modes"); static Switch interfaceInitializeDecayers ("InitializeDecayers", "Initialize new decayers", &NBodyDecayConstructorBase::_init, true, false, false); static SwitchOption interfaceInitializeDecayersInitializeDecayersOn (interfaceInitializeDecayers, "Yes", "Initialize new decayers to find max weights", true); static SwitchOption interfaceInitializeDecayersoff (interfaceInitializeDecayers, "No", "Use supplied weights for integration", false); static Parameter interfaceInitIteration ("InitIteration", "Number of iterations to optimise integration weights", &NBodyDecayConstructorBase::_iteration, 1, 0, 10, false, false, true); static Parameter interfaceInitPoints ("InitPoints", "Number of points to generate when optimising integration", &NBodyDecayConstructorBase::_points, 1000, 100, 100000000, false, false, true); static Switch interfaceOutputInfo ("OutputInfo", "Whether to output information about the decayers", &NBodyDecayConstructorBase::_info, false, false, false); static SwitchOption interfaceOutputInfoOff (interfaceOutputInfo, "No", "Do not output information regarding the created decayers", false); static SwitchOption interfaceOutputInfoOn (interfaceOutputInfo, "Yes", "Output information regarding the decayers", true); static Switch interfaceCreateDecayModes ("CreateDecayModes", "Whether to create the ThePEG::DecayMode objects as well as the decayers", &NBodyDecayConstructorBase::_createmodes, true, false, false); static SwitchOption interfaceCreateDecayModesOn (interfaceCreateDecayModes, "Yes", "Create the ThePEG::DecayMode objects", true); static SwitchOption interfaceCreateDecayModesOff (interfaceCreateDecayModes, "No", "Only create the Decayer objects", false); } void NBodyDecayConstructorBase::setBranchingRatio(tDMPtr dm, Energy pwidth) { //Need width and branching ratios for all currently created decay modes PDPtr parent = const_ptr_cast(dm->parent()); DecaySet modes = parent->decayModes(); if( modes.empty() ) return; double dmbrat(0.); if( modes.size() == 1 ) { parent->width(pwidth); if( pwidth > ZERO ) parent->cTau(hbarc/pwidth); dmbrat = 1.; } 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.; } ostringstream br; br << setprecision(13) << dmbrat; generator()->preinitInterface(dm, "BranchingRatio", "set", br.str()); } void NBodyDecayConstructorBase::setDecayerInterfaces(string fullname) const { if( initialize() ) { ostringstream value; value << initialize(); generator()->preinitInterface(fullname, "Initialize", "set", value.str()); value.str(""); value << iteration(); generator()->preinitInterface(fullname, "Iteration", "set", value.str()); value.str(""); value << points(); generator()->preinitInterface(fullname, "Points", "set", value.str()); } // QED stuff if needed if(decayConstructor()->QEDGenerator()) generator()->preinitInterface(fullname, "PhotonGenerator", "set", decayConstructor()->QEDGenerator()->fullName()); string outputmodes; if( info() ) outputmodes = string("Output"); else outputmodes = string("NoOutput"); generator()->preinitInterface(fullname, "OutputModes", "set", outputmodes); } herwig++-2.6.0.orig/Models/General/HiggsVBFProcessConstructor.cc0000644000175000017500000001306611755204223025275 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the HiggsVBFProcessConstructor class. // #include "HiggsVBFProcessConstructor.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/General/GeneralfftoffH.h" using namespace Herwig; HiggsVBFProcessConstructor::HiggsVBFProcessConstructor() : _type(true), _shapeOpt(1), _intermediates(0) { } IBPtr HiggsVBFProcessConstructor::clone() const { return new_ptr(*this); } IBPtr HiggsVBFProcessConstructor::fullclone() const { return new_ptr(*this); } void HiggsVBFProcessConstructor::persistentOutput(PersistentOStream & os) const { os << _higgs << _type << _shapeOpt; } void HiggsVBFProcessConstructor::persistentInput(PersistentIStream & is, int) { is >> _higgs >> _type >> _shapeOpt; } ClassDescription HiggsVBFProcessConstructor::initHiggsVBFProcessConstructor; // Definition of the static class description member. void HiggsVBFProcessConstructor::Init() { static ClassDocumentation documentation ("The HiggsVBFProcessConstructor class generates hard processes for" " Higgs boson production in association with a vector boson in general models."); static RefVector interfaceHiggsBoson ("HiggsBoson", "The possible Higgs bosons", &HiggsVBFProcessConstructor::_higgs, -1, false, false, true, false, false); static Switch interfaceShapeOption ("ShapeScheme", "Option for the treatment of the Higgs resonance shape", &HiggsVBFProcessConstructor::_shapeOpt, 2, false, false); static SwitchOption interfaceStandardShapeFixed (interfaceShapeOption, "FixedBreitWigner", "Breit-Wigner s-channel resonanse", 1); static SwitchOption interfaceStandardShapeRunning (interfaceShapeOption, "MassGenerator", "Use the mass generator to give the shape", 2); static SwitchOption interfaceStandardShapeOn (interfaceShapeOption, "OnShell", "Produce the Higgs on-shell", 0); static Switch interfaceProcess ("Process", "Which processes to include", &HiggsVBFProcessConstructor::_intermediates, 0, false, false); static SwitchOption interfaceProcessBoth (interfaceProcess, "Both", "Include both WW and ZZ processes", 0); static SwitchOption interfaceProcessWW (interfaceProcess, "WW", "Only include WW processes", 1); static SwitchOption interfaceProcessZZ (interfaceProcess, "ZZ", "Only include ZZ processes", 2); static Switch interfaceCollisionType ("CollisionType", "Type of collision", &HiggsVBFProcessConstructor::_type, true, false, false); static SwitchOption interfaceCollisionTypeLepton (interfaceCollisionType, "Lepton", "Lepton-Lepton collisions", false); static SwitchOption interfaceCollisionTypeHadron (interfaceCollisionType, "Hadron", "Hadron-Hadron collisions", true); } void HiggsVBFProcessConstructor::constructDiagrams() { if(_higgs.empty() || !subProcess() ) return; tPDPtr Wplus = getParticleData(ParticleID::Wplus); tPDPtr Wminus = getParticleData(ParticleID::Wminus); tPDPtr Z0 = getParticleData(ParticleID::Z0); for(unsigned int ix=0;ix<_higgs.size();++ix) _higgs[ix]->init(); for(unsigned int ix=0;ix<2;++ix) { if( ( ix == 0 && _intermediates == 2 ) || ( ix == 1 && _intermediates == 1 )) continue; // loop over the possible Higgs bosons for(PDVector::const_iterator ih=_higgs.begin(); ih!=_higgs.end();++ih) { // check higgs is neutral and scalar if((**ih).iCharge()!=0 || (**ih).coloured() || (**ih).iSpin()!=PDT::Spin0) continue; // find a suitable vertex for(unsigned int nv = 0; nv < model()->numberOfVertices(); ++nv ) { VertexBasePtr vertex = model()->vertex(nv); AbstractVVSVertexPtr svert = dynamic_ptr_cast(vertex); if(!svert) continue; if(vertex->getNpoint() != 3) continue; // check incoming W+W- or ZZ allowed if(ix==0) { if(!vertex->isIncoming(Wminus)|| !vertex->isIncoming(Wplus)) continue; } else { if(!vertex->isIncoming(Z0)) continue; } // check outgoing higgs allowed if(!vertex->isOutgoing(*ih)) continue; // create the MatrixElement object string objectname ("/Herwig/MatrixElements/"); string classname("Herwig::GeneralfftoffH"); if(_type) objectname += "MEPP2"; else objectname += "MEee2"; string bos = ix==0 ? "W+W+" : "ZOZO"; objectname += bos; objectname += (**ih).PDGName(); GeneralfftoffHPtr matrixElement = dynamic_ptr_cast (generator()->preinitCreate(classname, objectname)); if( !matrixElement ) throw Exception() << "HiggsVBFProcessConstructor::constructDiagrams() " << " Failed to construct matrix element for " << bos << " + " << (**ih).PDGName() << " production" << Exception::runerror; GeneralfftoffH::Process process = _type ? GeneralfftoffH::Hadron : GeneralfftoffH::Lepton; // set the information matrixElement->setProcessInfo( process, *ih, svert,_shapeOpt, ix+1 ); // insert it generator()->preinitInterface(subProcess(), "MatrixElements", subProcess()->MEs().size(), "insert", matrixElement->fullName()); } } } } herwig++-2.6.0.orig/Models/General/ResonantProcessConstructor.cc0000644000175000017500000003217711755204223025473 0ustar sylvestresylvestre// -*- C++ -*- // // ResonantProcessConstructor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ResonantProcessConstructor class. // #include "ResonantProcessConstructor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" using namespace Herwig; IBPtr ResonantProcessConstructor::clone() const { return new_ptr(*this); } IBPtr ResonantProcessConstructor::fullclone() const { return new_ptr(*this); } void ResonantProcessConstructor::persistentOutput(PersistentOStream & os) const { os << incoming_ << intermediates_ << outgoing_ << processOption_ << scaleFactor_; } void ResonantProcessConstructor::persistentInput(PersistentIStream & is, int) { is >> incoming_ >> intermediates_ >> outgoing_ >> processOption_ >> scaleFactor_; } ClassDescription ResonantProcessConstructor::initResonantProcessConstructor; // Definition of the static class description member. void ResonantProcessConstructor::Init() { static ClassDocumentation documentation ("This class is designed solely to contruct resonant processes using" "a provided set of intermediate particles"); static RefVector interfaceOffshell ("Intermediates", "A vector of offshell particles for resonant diagrams", &ResonantProcessConstructor::intermediates_, -1, false, false, true, false); static RefVector interfaceIncoming ("Incoming", "A vector of incoming particles for resonant diagrams", &ResonantProcessConstructor::incoming_, -1, false, false, true, false); static RefVector interfaceOutgoing ("Outgoing", "A vector of outgoing particles for resonant diagrams", &ResonantProcessConstructor::outgoing_, -1, false, false, true, false); static Switch interfaceProcesses ("Processes", "Whether to generate inclusive or exclusive processes", &ResonantProcessConstructor::processOption_, 0, false, false); static SwitchOption interfaceProcessesSingleParticleInclusive (interfaceProcesses, "SingleParticleInclusive", "Require at least one particle from the list of outgoing particles" " in the hard process", 0); static SwitchOption interfaceProcessesTwoParticleInclusive (interfaceProcesses, "TwoParticleInclusive", "Require that both the particles in the hard processes are in the" " list of outgoing particles", 1); static SwitchOption interfaceProcessesExclusive (interfaceProcesses, "Exclusive", "Require that both the particles in the hard processes are in the" " list of outgoing particles in every hard process", 2); static SwitchOption interfaceProcessesInclusive (interfaceProcesses, "Inclusive", "Generate all modes which are allowed for the on-shell intermediate particle", 3); static Parameter interfaceScaleFactor ("ScaleFactor", "The prefactor used in the scale calculation. The scale used is" " sHat multiplied by this prefactor", &ResonantProcessConstructor::scaleFactor_, 1.0, 0.0, 10.0, false, false, Interface::limited); } void ResonantProcessConstructor::doinit() { HardProcessConstructor::doinit(); if(processOption_==2&&outgoing_.size()!=2) throw InitException() << "Exclusive processes require exactly" << " two outgoing particles but " << outgoing_.size() << "have been inserted in ResonantProcessConstructor::doinit()." << Exception::runerror; } namespace { // Helper functor for find_if in duplicate function. class SameIncomingAs { public: SameIncomingAs(tPDPair in) : a(in.first->id()), b(in.second->id()) {} bool operator()(tPDPair ppair) const { long id1(ppair.first->id()), id2(ppair.second->id()); return ( id1 == a && id2 == b ) || ( id1 == b && id2 == a ); } private: long a, b; }; bool duplicateIncoming(tPDPair ppair,const vector &incPairs) { vector::const_iterator it = find_if( incPairs.begin(), incPairs.end(), SameIncomingAs(ppair) ); return it != incPairs.end(); } } void ResonantProcessConstructor::constructDiagrams() { size_t ninc = incoming_.size() , ninter = intermediates_.size(); if(ninc == 0 || ninter == 0 || !subProcess() ) return; // find the incoming particle pairs vector incPairs; for(PDVector::size_type i = 0; i < ninc; ++i) { for(PDVector::size_type j = 0; j < ninc; ++j) { tPDPair inc = make_pair(incoming_[i], incoming_[j]); if( (inc.first->iSpin() > inc.second->iSpin()) || (inc.first->iSpin() == inc.second->iSpin() && inc.first->id() < inc.second->id()) ) swap(inc.first, inc.second); if( !duplicateIncoming(inc,incPairs) ) { incPairs.push_back(inc); } } } size_t nvertices = model()->numberOfVertices(); //To construct resonant diagrams loop over the incoming particles, intermediates //and vertices to find allowed diagrams. Need to exclude the diagrams that have //the intermediate as an external particle as well for(vector::size_type is = 0; is < incPairs.size(); ++is) { tPDPair ppi = incPairs[is]; for(vector::size_type ik = 0; ik < ninter ; ++ik) { long ipart = intermediates_[ik]->id(); for(size_t iv = 0; iv < nvertices; ++iv) { VBPtr vertex = model()->vertex(iv); if(vertex->getNpoint() > 3) continue; long part1 = ppi.first->CC() ? -ppi.first->id() : ppi.first->id(); long part2 = ppi.second->CC() ? -ppi.second->id() : ppi.second->id(); if(vertex->allowed(part1, part2, ipart) || vertex->allowed(part1, ipart, part2) || vertex->allowed(part2, part1, ipart) || vertex->allowed(part2, ipart, part1) || vertex->allowed(ipart, part1, part2) || vertex->allowed(ipart, part2, part1) ) { constructVertex2(make_pair(ppi.first->id(), ppi.second->id()), vertex, intermediates_[ik]); } } } } //Create matrix element for each process const HPDVector::size_type ndiags = diagrams_.size(); for(HPDVector::size_type ix = 0; ix < ndiags; ++ix) createMatrixElement(diagrams_[ix]); } void ResonantProcessConstructor:: constructVertex2(IDPair in, VertexBasePtr vertex, PDPtr partc) { //We have the left hand part of the diagram, just need all the possibilities //for the RHS size_t nvertices = model()->numberOfVertices(); if(processOption_!=3) { for(size_t io = 0; io < outgoing_.size(); ++io) { tcPDPtr outa = outgoing_[io]; for(size_t iv = 0; iv < nvertices; ++iv) { VBPtr vertex2 = model()->vertex(iv); if(vertex2->getNpoint() > 3) continue; tPDSet outb = search(vertex2, partc->id(), incoming, outa->id(), outgoing, outgoing); for(tPDSet::const_iterator ita = outb.begin(); ita != outb.end(); ++ita) makeResonantDiagram(in, partc, outa->id(),(**ita).id(), make_pair(vertex, vertex2)); } } } else { for(size_t iv = 0; iv < nvertices; ++iv) { VBPtr vertex2 = model()->vertex(iv); if(vertex2->getNpoint() > 3) continue; for(unsigned int ix = 0;ix < 3; ++ix) { vector pdlist = vertex2->search(ix, partc->id()); for(unsigned int iy=0;iymass() < getParticleData(out1)->mass() + getParticleData(out2)->mass()) continue; makeResonantDiagram(in, partc, out1, out2, make_pair(vertex, vertex2)); } } } } } void ResonantProcessConstructor:: makeResonantDiagram(IDPair in, PDPtr offshell, long outa, long outb, VBPair vertpair) { assert(vertpair.first && vertpair.second); if( abs(outa) == abs(offshell->id()) || abs(outb) == abs(offshell->id())) return; HPDiagram newdiag(in,make_pair(outa,outb)); newdiag.intermediate = offshell; newdiag.vertices = vertpair; newdiag.channelType = HPDiagram::sChannel; fixFSOrder(newdiag); assignToCF(newdiag); if(duplicate(newdiag,diagrams_)) return; // if inclusive enforce the exclusivity if(processOption_==1) { PDVector::const_iterator loc = std::find(outgoing_.begin(),outgoing_.end(), getParticleData(newdiag.outgoing. first)); if(loc==outgoing_.end()) return; loc = std::find(outgoing_.begin(),outgoing_.end(), getParticleData(newdiag.outgoing.second)); if(loc==outgoing_.end()) return; } else if(processOption_==2) { if(!((newdiag.outgoing. first==outgoing_[0]->id()&& newdiag.outgoing.second==outgoing_[1]->id())|| (newdiag.outgoing. first==outgoing_[1]->id()&& newdiag.outgoing.second==outgoing_[0]->id()))) return; } // add to the list diagrams_.push_back(newdiag); } set ResonantProcessConstructor::search(VBPtr vertex, long part1, direction d1, long part2, direction d2, direction d3) { if(d1 == incoming && getParticleData(part1)->CC()) part1 = -part1; if(d2 == incoming && getParticleData(part2)->CC()) part2 = -part2; vector ext; tPDSet third; for(unsigned int ix = 0;ix < 3; ++ix) { vector pdlist = vertex->search(ix, part1); ext.insert(ext.end(), pdlist.begin(), pdlist.end()); } for(unsigned int ix = 0; ix < ext.size(); ix += 3) { long id0 = ext.at(ix); long id1 = ext.at(ix+1); long id2 = ext.at(ix+2); int pos; if((id0 == part1 && id1 == part2) || (id0 == part2 && id1 == part1)) pos = ix + 2; else if((id0 == part1 && id2 == part2) || (id0 == part2 && id2 == part1)) pos = ix + 1; else if((id1 == part1 && id2 == part2) || (id1 == part2 && id2 == part1)) pos = ix; else pos = -1; if(pos >= 0) { tPDPtr p = getParticleData(ext[pos]); if(d3 == incoming && p->CC()) p = p->CC(); third.insert(p); } } return third; } IDPair ResonantProcessConstructor:: find(long part, const vector & out) const { vector::size_type iloc(0); bool found(false); do { if(out[iloc]->id() == part) found = true; else ++iloc; } while(found == false && iloc < out.size()); //found offshell IDPair outids; if(iloc == 0) outids = make_pair(out[1]->id(), out[2]->id()); else if(iloc == 1) outids = make_pair(out[0]->id(), out[2]->id()); else outids = make_pair(out[0]->id(), out[1]->id()); return outids; } void ResonantProcessConstructor:: createMatrixElement(const HPDiagram & diag) const { vector extpart(4); extpart[0] = getParticleData(diag.incoming.first); extpart[1] = getParticleData(diag.incoming.second); extpart[2] = getParticleData(diag.outgoing.first); extpart[3] = getParticleData(diag.outgoing.second); string objectname ("/Herwig/MatrixElements/"); string classname = MEClassname(extpart, diag.intermediate, objectname); GeneralHardMEPtr matrixElement = dynamic_ptr_cast (generator()->preinitCreate(classname, objectname)); if( !matrixElement ) { throw RPConstructorError() << "ResonantProcessConstructor::createMatrixElement " << "- No matrix element object could be created for " << "the process " << extpart[0]->PDGName() << " " << extpart[0]->iSpin() << "," << extpart[1]->PDGName() << " " << extpart[1]->iSpin() << "->" << extpart[2]->PDGName() << " " << extpart[2]->iSpin() << "," << extpart[3]->PDGName() << " " << extpart[3]->iSpin() << ". Constructed class name: \"" << classname << "\"\n" << Exception::warning; return; } matrixElement->setProcessInfo(HPDVector(1, diag), colourFlow(extpart), debug(),0,scaleFactor_); generator()->preinitInterface(subProcess(), "MatrixElements", subProcess()->MEs().size(), "insert", matrixElement->fullName()); } string ResonantProcessConstructor:: MEClassname(const vector & extpart, tcPDPtr inter, string & objname) const { string classname("Herwig::ME"); for(vector::size_type ix = 0; ix < extpart.size(); ++ix) { if(ix == 2) classname += "2"; if(extpart[ix]->iSpin() == PDT::Spin0) classname += "s"; else if(extpart[ix]->iSpin() == PDT::Spin1) classname += "v"; else if(extpart[ix]->iSpin() == PDT::Spin1Half) classname += "f"; else if(extpart[ix]->iSpin() == PDT::Spin2) classname += "t"; else throw RPConstructorError() << "MEClassname() : Encountered an unknown spin for " << extpart[ix]->PDGName() << " while constructing MatrixElement " << "classname " << extpart[ix]->iSpin() << Exception::warning; } objname += "ME" + extpart[0]->PDGName() + extpart[1]->PDGName() + "2" + inter->PDGName() + "2" + extpart[2]->PDGName() + extpart[3]->PDGName(); return classname; } herwig++-2.6.0.orig/Models/General/TwoToTwoProcessConstructor.fh0000644000175000017500000000061611754474773025473 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the TwoToTwoProcessConstructor class. // #ifndef HERWIG_TwoToTwoProcessConstructor_FH #define HERWIG_TwoToTwoProcessConstructor_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class TwoToTwoProcessConstructor; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::TwoToTwoProcessConstructor,TwoToTwoConstructorPtr); } #endif herwig++-2.6.0.orig/Models/General/Makefile.am0000644000175000017500000000213111754474773021627 0ustar sylvestresylvestrenoinst_LTLIBRARIES = libHwModelGenerator.la libHwModelGenerator_la_SOURCES = \ ModelGenerator.h ModelGenerator.fh ModelGenerator.cc\ DecayConstructor.cc DecayConstructor.h DecayConstructor.fh \ NBodyDecayConstructorBase.cc NBodyDecayConstructorBase.h \ NBodyDecayConstructorBase.fh \ TwoBodyDecayConstructor.cc TwoBodyDecayConstructor.h \ TwoToTwoProcessConstructor.h TwoToTwoProcessConstructor.fh \ TwoToTwoProcessConstructor.cc \ HardProcessConstructor.h HardProcessConstructor.fh \ HardProcessConstructor.cc \ HiggsVectorBosonProcessConstructor.h \ HiggsVectorBosonProcessConstructor.cc \ HiggsVBFProcessConstructor.h \ HiggsVBFProcessConstructor.cc \ QQHiggsProcessConstructor.h \ QQHiggsProcessConstructor.cc \ HPDiagram.h \ ThreeBodyDecayConstructor.h ThreeBodyDecayConstructor.cc \ WeakCurrentDecayConstructor.h WeakCurrentDecayConstructor.cc \ ResonantProcessConstructor.cc ResonantProcessConstructor.h \ ResonantProcessConstructor.fh \ VVSLoopVertex.fh VVSLoopVertex.h VVSLoopVertex.cc \ BSMWidthGenerator.h BSMWidthGenerator.fh BSMWidthGenerator.cc \ TBDiagram.h TwoBodyDecay.h\ BSMModel.h BSMModel.cc herwig++-2.6.0.orig/Models/General/NBodyDecayConstructorBase.h0000644000175000017500000001475611754474773025006 0ustar sylvestresylvestre// -*- C++ -*- // // NBodyDecayConstructorBase.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_NBodyDecayConstructorBase_H #define HERWIG_NBodyDecayConstructorBase_H // // This is the declaration of the NBodyDecayConstructorBase class. // #include "ThePEG/Interface/Interfaced.h" #include "ThePEG/Utilities/Exception.h" #include "ThePEG/PDT/ParticleData.h" #include "NBodyDecayConstructorBase.fh" #include "DecayConstructor.fh" namespace Herwig { using namespace ThePEG; /** * A struct to order the particles in the same way as in the DecayMode's */ struct ParticleOrdering { /** * Operator for the ordering * @param p1 The first ParticleData object * @param p2 The second ParticleData object */ bool operator()(PDPtr p1, PDPtr p2) { 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() ); } }; /** * A set of ParticleData objects ordered as for the DecayMode's */ typedef multiset OrderedParticles; /** * This is the base class for NBodyDecayConstructors. An N-body * decay constructor should inherit from this and implement the * DecayList virtual funtcion to create the decays and decayers. * * @see \ref NBodyDecayConstructorBaseInterfaces "The interfaces" * defined for NBodyDecayConstructor. */ class NBodyDecayConstructorBase: public Interfaced { public: /** * The default constructor. */ NBodyDecayConstructorBase() : _init(true),_iteration(1), _points(1000), _info(false), _createmodes(true) {} /** * Function used to determine allowed decaymodes, to be implemented * in derived class. * @param particles vector of ParticleData pointers containing * particles in model */ virtual void DecayList(const set & particles) = 0; /** * Number of outgoing lines. Required for correct ordering. */ virtual unsigned int numBodies() const = 0; /** * Set the pointer to the DecayConstrcutor */ void decayConstructor(tDecayConstructorPtr d) { _decayConstructor = d; } 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); /** * Set the interfaces of the decayers depending on the flags stored. * @param name Fullname of the decayer in the EventGenerator * including the path */ void setDecayerInterfaces(string name) const; /** * Whether to initialize decayers or not */ bool initialize() const { return _init; } /** * Number of iterations if initializing (default 1) */ int iteration() const { return _iteration; } /** * Number of points to do in initialization */ int points() const { return _points; } /** * Whether to output information on the decayers */ bool info() const { return _info; } /** * Whether to create the DecayModes as well as the Decayer objects */ bool createDecayModes() const { return _createmodes; } /** * Get the pointer to the DecayConstructor object */ tDecayConstructorPtr decayConstructor() const { return _decayConstructor; } 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(); private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription initNBodyDecayConstructorBase; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ NBodyDecayConstructorBase & operator=(const NBodyDecayConstructorBase &); private: /** * Whether to initialize decayers or not */ bool _init; /** * Number of iterations if initializing (default 1) */ int _iteration; /** * Number of points to do in initialization */ int _points; /** * Whether to output information on the decayers */ bool _info; /** * Whether to create the DecayModes as well as the Decayer objects */ bool _createmodes; /** * A pointer to the DecayConstructor object */ tDecayConstructorPtr _decayConstructor; }; /** An Exception class that can be used by all inheriting classes to * indicate a setup problem. */ class NBodyDecayConstructorError : public Exception { public: NBodyDecayConstructorError() : Exception() {} NBodyDecayConstructorError(const string & str, Severity sev) : Exception(str,sev) {} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of NBodyDecayConstructorBase. */ template <> struct BaseClassTrait { /** Typedef of the first base class of NBodyDecayConstructorBase. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the NBodyDecayConstructorBase class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::NBodyDecayConstructorBase"; } }; /** @endcond */ } #endif /* HERWIG_NBodyDecayConstructorBase_H */ herwig++-2.6.0.orig/Models/General/ThreeBodyDecayConstructor.cc0000644000175000017500000007753111755204677025216 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the ThreeBodyDecayConstructor class. // #include "ThreeBodyDecayConstructor.h" #include "ThePEG/Utilities/Debug.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/Decay/General/GeneralThreeBodyDecayer.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" #include "ThePEG/PDT/StandardMatchers.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Utilities/Throw.h" #include "DecayConstructor.h" #include "WeakCurrentDecayConstructor.h" using namespace Herwig; IBPtr ThreeBodyDecayConstructor::clone() const { return new_ptr(*this); } IBPtr ThreeBodyDecayConstructor::fullclone() const { return new_ptr(*this); } void ThreeBodyDecayConstructor::persistentOutput(PersistentOStream & os) const { os << _removeOnShell << _interopt << _widthopt << _minReleaseFraction << _includeTopOnShell << _maxBoson << _maxList << excludedVector_ << excludedSet_ << intOpt_ << relErr_; } void ThreeBodyDecayConstructor::persistentInput(PersistentIStream & is, int) { is >> _removeOnShell >> _interopt >> _widthopt >> _minReleaseFraction >> _includeTopOnShell >> _maxBoson >> _maxList >> excludedVector_ >> excludedSet_ >> intOpt_ >> relErr_; } ClassDescription ThreeBodyDecayConstructor::initThreeBodyDecayConstructor; // Definition of the static class description member. void ThreeBodyDecayConstructor::Init() { static ClassDocumentation documentation ("The ThreeBodyDecayConstructor class constructs the three body decay modes"); static Switch interfaceRemoveOnShell ("RemoveOnShell", "Remove on-shell diagrams as should be treated as a sequence of 1->2 decays", &ThreeBodyDecayConstructor::_removeOnShell, 1, false, false); static SwitchOption interfaceRemoveOnShellYes (interfaceRemoveOnShell, "Yes", "Remove the diagrams if neither the production of decay or the intermediate" " can happen", 1); static SwitchOption interfaceRemoveOnShellNo (interfaceRemoveOnShell, "No", "Never remove the intermediate", 0); static SwitchOption interfaceRemoveOnShellProduction (interfaceRemoveOnShell, "Production", "Remove the diagram if the on-shell production of the intermediate is allowed", 2); static Switch interfaceIncludeOnShellTop ("IncludeOnShellTop", "Include the on-shell diagrams involving t -> bW", &ThreeBodyDecayConstructor::_includeTopOnShell, false, false, false); static SwitchOption interfaceIncludeOnShellTopYes (interfaceIncludeOnShellTop, "Yes", "Inlude them", true); static SwitchOption interfaceIncludeOnShellTopNo (interfaceIncludeOnShellTop, "No", "Don't include them", true); static Switch interfaceWidthOption ("WidthOption", "Option for the treatment of the widths of the intermediates", &ThreeBodyDecayConstructor::_widthopt, 1, false, false); static SwitchOption interfaceWidthOptionFixed (interfaceWidthOption, "Fixed", "Use fixed widths", 1); static SwitchOption interfaceWidthOptionRunning (interfaceWidthOption, "Running", "Use running widths", 2); static SwitchOption interfaceWidthOptionZero (interfaceWidthOption, "Zero", "Set the widths to zero", 3); static Switch interfaceIntermediateOption ("IntermediateOption", "Option for the inclusion of intermediates in the event", &ThreeBodyDecayConstructor::_interopt, 0, false, false); static SwitchOption interfaceIntermediateOptionAlways (interfaceIntermediateOption, "Always", "Always include the intermediates", 1); static SwitchOption interfaceIntermediateOptionNever (interfaceIntermediateOption, "Never", "Never include the intermediates", 2); static SwitchOption interfaceIntermediateOptionOnlyIfOnShell (interfaceIntermediateOption, "OnlyIfOnShell", "Only if there are on-shell diagrams", 0); static Parameter interfaceMinReleaseFraction ("MinReleaseFraction", "The minimum energy release for a three-body decay, as a " "fraction of the parent mass.", &ThreeBodyDecayConstructor::_minReleaseFraction, 1e-3, 0.0, 1.0, false, false, Interface::limited); static Switch interfaceMaximumGaugeBosons ("MaximumGaugeBosons", "Maximum number of electroweak gauge bosons" " to be produced as decay products", &ThreeBodyDecayConstructor::_maxBoson, 1, false, false); static SwitchOption interfaceMaximumGaugeBosonsNone (interfaceMaximumGaugeBosons, "None", "Produce no W/Zs", 0); static SwitchOption interfaceMaximumGaugeBosonsSingle (interfaceMaximumGaugeBosons, "Single", "Produce at most one W/Zs", 1); static SwitchOption interfaceMaximumGaugeBosonsDouble (interfaceMaximumGaugeBosons, "Double", "Produce at most two W/Zs", 2); static SwitchOption interfaceMaximumGaugeBosonsTriple (interfaceMaximumGaugeBosons, "Triple", "Produce at most three W/Zs", 3); static Switch interfaceMaximumNewParticles ("MaximumNewParticles", "Maximum number of particles from the list of " "decaying particles to be allowed as decay products", &ThreeBodyDecayConstructor::_maxList, 1, false, false); static SwitchOption interfaceMaximumNewParticlesNone (interfaceMaximumNewParticles, "None", "No particles from the list", 0); static SwitchOption interfaceMaximumNewParticlesSingle (interfaceMaximumNewParticles, "Single", "A single particle from the list", 1); static SwitchOption interfaceMaximumNewParticlesDouble (interfaceMaximumNewParticles, "Double", "Two particles from the list", 2); static SwitchOption interfaceMaximumNewParticlesTriple (interfaceMaximumNewParticles, "Triple", "Three particles from the list", 3); static RefVector interfaceExcludedVertices ("ExcludedVertices", "Vertices which are not included in the three-body decayers", &ThreeBodyDecayConstructor::excludedVector_, -1, false, false, true, true, false); static Switch interfaceIntegrationOption ("IntegrationOption", "Option for the integration of the partial width", &ThreeBodyDecayConstructor::intOpt_, 1, false, false); static SwitchOption interfaceIntegrationOptionAllPoles (interfaceIntegrationOption, "AllPoles", "Include all potential poles", 0); static SwitchOption interfaceIntegrationOptionShallowestPole (interfaceIntegrationOption, "ShallowestPole", "Onlt include the shallowest pole", 1); static Parameter interfaceRelativeError ("RelativeError", "The relative error for the GQ integration", &ThreeBodyDecayConstructor::relErr_, 1e-2, 1e-10, 1., false, false, Interface::limited); } void ThreeBodyDecayConstructor::DecayList(const set & particles) { if( particles.empty() ) return; // special for weak decays for(unsigned int ix=0;ixdecayConstructors().size();++ix) { Ptr::pointer weak = dynamic_ptr_cast::pointer > (decayConstructor()->decayConstructors()[ix]); if(!weak) continue; weakMassCut_ = max(weakMassCut_,weak->massCut()); } // cast the StandardModel to the Hw++ one to get the vertices tHwSMPtr model = dynamic_ptr_cast(generator()->standardModel()); unsigned int nv(model->numberOfVertices()); // loop over the particles and create the decayers for(set::const_iterator ip=particles.begin(); ip!=particles.end();++ip) { tPDPtr parent = *ip; // create the prototype 1->2 decays which will be turned into // 1 -> 3 decays vector prototypes; for(unsigned int iv = 0; iv < nv; ++iv) { VertexBasePtr vertex = model->vertex(iv); if(excludedSet_.find(vertex)!=excludedSet_.end()) continue; //skip an effective vertex if( vertex->orderInGs() + vertex->orderInGem() == 3 ) continue; for(unsigned int il = 0; il < 3; ++il) { vector temp = createPrototypes(parent, vertex, il); if(!temp.empty()) prototypes.insert(prototypes.end(), temp.begin(),temp.end()); } } // now expand the prototypes by decaying the outgoing particles // in the prototypes vector diagrams; for(unsigned int ix=0;ixvertex(iv); if(excludedSet_.find(vertex)!=excludedSet_.end()) continue; //skip an effective vertex if( vertex->orderInGs() + vertex->orderInGem() == 3 ) continue; for(unsigned int il = 0; il < 3; ++il) { vector temp = expandPrototype(prototypes[ix], vertex, il); if(!temp.empty()) diagrams.insert(diagrams.end(),temp.begin(), temp.end()); } } } // now we have the potential diagrams we need to do some sorting // into decay modes vector< vector > modes; Energy min = parent->mass(); bool possibleOnShell(false); for(vector::const_iterator dit = diagrams.begin(); dit != diagrams.end(); ++dit) { tPDPtr outgoing[3]={getParticleData(dit->outgoing), getParticleData(dit->outgoingPair.first), getParticleData(dit->outgoingPair.second)}; Energy mout[3] = {outgoing[0]->constituentMass(),outgoing[1]->constituentMass(), outgoing[2]->constituentMass()}; // remove processes which aren't kinematically allowed within if( min - mout[0] - mout[1] - mout[2] <= _minReleaseFraction * min ) continue; // remove QED and QCD radiation diagrams // radiation from intermediate long interID = dit->intermediate->id(); if((dit->outgoingPair.first ==interID && (dit->outgoingPair.second==ParticleID::g || dit->outgoingPair.second==ParticleID::gamma || dit->outgoingPair.second==ParticleID::Z0 ))|| (dit->outgoingPair.second==interID && (dit->outgoingPair.first ==ParticleID::g || dit->outgoingPair.first ==ParticleID::gamma || dit->outgoingPair.first ==ParticleID::Z0 ))) continue; // radiation from the parent if((dit->outgoing ==dit->incoming&& (interID==ParticleID::g || interID==ParticleID::gamma || interID==ParticleID::Z0 ))|| (interID==dit->incoming && (dit->outgoing ==ParticleID::g || dit->outgoing ==ParticleID::gamma || dit->outgoing ==ParticleID::Z0 ))) continue; // remove weak decays of quarks other than top if(StandardQCDPartonMatcher::Check(interID) && ((StandardQCDPartonMatcher::Check(dit->outgoingPair.first)&& abs(dit->outgoingPair.second)==ParticleID::Wplus)|| (StandardQCDPartonMatcher::Check(dit->outgoingPair.second)&& abs(dit->outgoingPair.first)==ParticleID::Wplus))) continue; // remove weak lepton decays if((abs(interID)>=11&&abs(interID)<=16) && ( ((abs(dit->outgoingPair.first)>=11&&abs(dit->outgoingPair.first)<=16)&& abs(dit->outgoingPair.second)==ParticleID::Wplus)|| ((abs(dit->outgoingPair.second)>=11&&abs(dit->outgoingPair.second)<=16)&& abs(dit->outgoingPair.first)==ParticleID::Wplus)) ) continue; // remove processes where one of the outgoing particles has the //same id as the incoming particles if(abs(parent->id()) == abs(dit->outgoing ) || abs(parent->id()) == abs(dit->outgoingPair.first ) || abs(parent->id()) == abs(dit->outgoingPair.second) ) continue; // check the number of new particles and gauge bosons unsigned int nbos(0),nnew(0); for(unsigned int ix=0;ix<3;++ix) { if(outgoing[ix]->id()==ParticleID::gamma || outgoing[ix]->id()==ParticleID::Z0 || abs(outgoing[ix]->id())==ParticleID::Wplus) ++nbos; if(particles.find(outgoing[ix])!=particles.end()) ++nnew; if(outgoing[ix]->CC() && particles.find(outgoing[ix]->CC())!=particles.end()) ++nnew; } if(nbos>_maxBoson || nnew>_maxList) continue; // if needed remove intermediate diagrams where intermediate can be // on shell Energy mint = dit->intermediate->mass(); if( min> mout[0] + mint ) { if(_removeOnShell==2) continue; if(mint > mout[1] + mout[2] ) { // special for top if(abs(dit->incoming)==ParticleID::t&& abs(interID)==ParticleID::Wplus) { if(!_includeTopOnShell) continue; } // general else if(_removeOnShell==1) { continue; } if(dit->intermediate->width()==0.*GeV) { Throw() << "Trying to include on-shell diagram for " << getParticleData(dit->incoming)->PDGName() << " -> " << outgoing[0]->PDGName() << " " << outgoing[1]->PDGName() << " " << outgoing[2]->PDGName() << " with intermediate " << dit->intermediate->PDGName() << " with zero width.\n" << "You should make sure that the width for the intermediate is either" << " read from an SLHA file or the intermediate is included in the " << "DecayParticles list of the ModelGenerator.\n" << Exception::runerror; } possibleOnShell = true; } } // check if should be added to an existing decaymode bool added = false; for(unsigned int iy = 0; iy < modes.size(); ++iy) { if(modes[iy][0].sameDecay(*dit)) { added = true; bool already = false; for(unsigned int iz = 0; iz < modes[iy].size(); ++iz) { if( modes[iy][iz] == *dit) { already = true; break; } } if(!already) modes[iy].push_back(*dit); break; } } // otherwise create a new decay mode if(!added) modes.push_back(vector(1,*dit)); } // print out info on the potential modes if( Debug::level > 1 ) { generator()->log() << "There are " << modes.size() << " modes for " << (**ip).PDGName() << "\n"; for(unsigned int ix=0;ixlog() << "Mode: " << ix << "\n"; generator()->log() << "incoming = " << getParticleData(modes[ix][0].incoming)->PDGName() << "\n"; generator()->log() << "outgoing = " << getParticleData(modes[ix][0].outgoing)->PDGName() << " " << getParticleData(modes[ix][0].outgoingPair.first )->PDGName() << " " << getParticleData(modes[ix][0].outgoingPair.second)->PDGName() << "\n"; generator()->log() << "There are " << modes[ix].size() << " diagrams\n"; for(unsigned int iy=0;iylog() << "Diagram: " << iy << "\n"; generator()->log() << "incoming = " << modes[ix][iy].incoming << "\n"; generator()->log() << "outgoing = " << modes[ix][iy].outgoing << " " << modes[ix][iy].outgoingPair.first << " " << modes[ix][iy].outgoingPair.second << "\n"; generator()->log() << "intermediate = " << modes[ix][iy].intermediate->PDGName() << "\t" << modes[ix][iy].intermediate->id() << "\n"; generator()->log() << "vertices = " << modes[ix][iy].vertices.first ->fullName() << "\n" << " " << modes[ix][iy].vertices.second->fullName() << "\n"; } } } // now we need to create the decayers for the mode bool inter(false); if( _interopt == 1 || (_interopt == 0 && possibleOnShell) ) inter = true; for( vector< vector >::iterator mit = modes.begin(); mit != modes.end(); ++mit ) { createDecayMode(*mit, inter); } }// end of particle loop } vector ThreeBodyDecayConstructor:: createPrototypes(tPDPtr inpart, VertexBasePtr vertex, unsigned int list) { int id = inpart->id(); if( id < 0 || !vertex->isIncoming(inpart) || vertex->getNpoint() != 3 ) return vector(); tPDVector decaylist = vertex->search(list, inpart); vector decays; tPDVector::size_type nd = decaylist.size(); for( tPDVector::size_type i = 0; i < nd; i += 3 ) { tPDPtr pa(decaylist[i]), pb(decaylist[i + 1]), pc(decaylist[i + 2]); if( pb->id() == id ) swap(pa, pb); if( pc->id() == id ) swap(pa, pc); // vertices are defined with all particles incoming if( pb->CC() ) pb = pb->CC(); if( pc->CC() ) pc = pc->CC(); decays.push_back(TwoBodyPrototype(inpart,make_pair(pb,pc),vertex)); } return decays; } vector ThreeBodyDecayConstructor:: expandPrototype(TwoBodyPrototype proto, VertexBasePtr vertex,unsigned int list) { vector decays; if( vertex->getNpoint() != 3 ) return decays; // loop over the outgoing particles for(unsigned int ix=0;ix<2;++ix) { tPDPtr dec = proto.outgoing.first ; tPDPtr other = proto.outgoing.second; if(ix==1) swap(dec,other); int id = dec->id(); // remove weak processes simulated using the current if(weakMassCut_>ZERO && abs(dec->id())==ParticleID::Wplus && proto.incoming->mass()-other->mass()isIncoming(dec) ) continue; tPDVector decaylist = vertex->search(list, dec); tPDVector::size_type nd = decaylist.size(); for( tPDVector::size_type i = 0; i < nd; i += 3 ) { tPDPtr pa(decaylist[i]), pb(decaylist[i + 1]), pc(decaylist[i + 2]); if( pb->id() == id ) swap(pa, pb); if( pc->id() == id ) swap(pa, pc); //vertices are defined with all particles incoming if( pb->CC() ) pb = pb->CC(); if( pc->CC() ) pc = pc->CC(); // create the three body diagram TBDiagram diag(proto.incoming->id(), other->id(), make_pair(pb->id(),pc->id())); diag.intermediate = pa; diag.vertices = make_pair(proto.vertex,vertex); diag.colourFlow = vector(1,make_pair(1,1.)); diag.largeNcColourFlow = vector(1,make_pair(1,1.)); decays.push_back(diag); } } return decays; } GeneralThreeBodyDecayerPtr ThreeBodyDecayConstructor:: createDecayer(vector & diagrams, bool inter) const { if(diagrams.empty()) return GeneralThreeBodyDecayerPtr(); // extract the external particles for the process PDPtr incoming = getParticleData(diagrams[0].incoming); // outgoing particles OrderedParticles outgoing; outgoing.insert(getParticleData(diagrams[0].outgoing )); outgoing.insert(getParticleData(diagrams[0].outgoingPair.first )); outgoing.insert(getParticleData(diagrams[0].outgoingPair.second)); // sort out ordering and labeling of diagrams vector outVector(outgoing.begin(),outgoing.end()); for(unsigned int ix=0;ixid()) break; if(diagrams[ix].channelType == TBDiagram::UNDEFINED) { diagrams[ix].channelType = TBDiagram::Channel(iy); if( ( iy == 0 && outVector[1]->id() != diagrams[ix].outgoingPair.first)|| ( iy == 1 && outVector[0]->id() != diagrams[ix].outgoingPair.first)|| ( iy == 2 && outVector[0]->id() != diagrams[ix].outgoingPair.first) ) swap(diagrams[ix].outgoingPair.first, diagrams[ix].outgoingPair.second); } } // create the object string objectname ("/Herwig/Decays/"); string classname = DecayerClassName(incoming, outgoing, objectname); if(classname=="") return GeneralThreeBodyDecayerPtr(); GeneralThreeBodyDecayerPtr decayer = dynamic_ptr_cast (generator()->preinitCreate(classname, objectname)); unsigned int ncf(0); pair, vector > cfactors = getColourFactors(incoming,outgoing,diagrams,ncf); decayer->setDecayInfo(incoming,outVector, diagrams,cfactors.first,cfactors.second,ncf); // set decayer options from base class setDecayerInterfaces(objectname); // options for partial width integration ostringstream value; value << intOpt_; generator()->preinitInterface(objectname, "PartialWidthIntegration", "set", value.str()); value.str(""); value << relErr_; generator()->preinitInterface(objectname, "RelativeError", "set", value.str()); // set the width option value.str(""); value << _widthopt; generator()->preinitInterface(objectname, "WidthOption", "set", value.str()); // set the intermediates option value.str(""); value << inter; generator()->preinitInterface(objectname, "GenerateIntermediates", "set", value.str()); // initialize the decayer decayer->init(); // return the decayer return decayer; } string ThreeBodyDecayConstructor:: DecayerClassName(tcPDPtr incoming, const OrderedParticles & outgoing, string & objname) const { string classname("Herwig::"); // spins of the outgoing particles unsigned int ns(0),nf(0),nv(0); objname += incoming->PDGName() + "2"; for(OrderedParticles::const_iterator it=outgoing.begin(); it!=outgoing.end();++it) { if ((**it).iSpin()==PDT::Spin0 ) ++ns; else if((**it).iSpin()==PDT::Spin1Half) ++nf; else if((**it).iSpin()==PDT::Spin1 ) ++nv; objname += (**it).PDGName(); } objname += "Decayer"; if(incoming->iSpin()==PDT::Spin0) { if(ns==1&&nf==2) classname += "StoSFFDecayer"; else if(nf==2&&nv==1) classname += "StoFFVDecayer"; else classname = ""; } else if(incoming->iSpin()==PDT::Spin1Half) { if(nf==3) classname += "FtoFFFDecayer"; else if(nf==1&&nv==2) classname += "FtoFVVDecayer"; else classname = ""; } else if(incoming->iSpin()==PDT::Spin1) { if(nf==2&&nv==1) classname += "VtoFFVDecayer"; else classname = ""; } else { classname=""; } return classname; } void ThreeBodyDecayConstructor:: createDecayMode(vector & diagrams, bool inter) { // incoming particle tPDPtr inpart = getParticleData(diagrams[0].incoming); // outgoing particles OrderedParticles outgoing; outgoing.insert(getParticleData(diagrams[0].outgoing)); outgoing.insert(getParticleData(diagrams[0].outgoingPair.first )); outgoing.insert(getParticleData(diagrams[0].outgoingPair.second)); // construct the tag for the decay mode string tag = inpart->name() + "->"; unsigned int iprod=0; for(OrderedParticles::const_iterator it = outgoing.begin(); it != outgoing.end(); ++it) { ++iprod; tag += (**it).name(); if(iprod != 3) tag += ","; } tag += ";"; tDMPtr dm = generator()->findDecayMode(tag); if( decayConstructor()->disableDecayMode(tag) ) { // If mode alread exists, ie has been read from file, // disable it if( dm ) { generator()->preinitInterface(dm, "BranchingRatio", "set", "0.0"); generator()->preinitInterface(dm, "OnOff", "set", "Off"); } return; } // create mode if needed if( createDecayModes() && (!dm || inpart->id() == ParticleID::h0) ) { // create the decayer GeneralThreeBodyDecayerPtr decayer = createDecayer(diagrams,inter); if(!decayer) { if(Debug::level > 1 ) generator()->log() << "Can't create the decayer for " << tag << " so mode not created\n"; return; } tDMPtr ndm = generator()->preinitCreateDecayMode(tag); if(ndm) { generator()->preinitInterface(ndm, "Decayer", "set", decayer->fullName()); generator()->preinitInterface(ndm, "OnOff", "set", "On"); OrderedParticles::const_iterator pit=outgoing.begin(); tPDPtr pa = *pit; ++pit; tPDPtr pb = *pit; ++pit; tPDPtr pc = *pit; Energy width = decayer->partialWidth(make_pair(inpart,inpart->mass()), make_pair(pa,pa->mass()) , make_pair(pb,pb->mass()) , make_pair(pc,pc->mass())); setBranchingRatio(ndm, width); if(ndm->brat()minimumBR()) { generator()->preinitInterface(decayer->fullName(), "Initialize", "set","0"); } // incoming particle is now unstable inpart->stable(false); } else throw NBodyDecayConstructorError() << "ThreeBodyDecayConstructor::createDecayMode - Needed to create " << "new decaymode but one could not be created for the tag " << tag << Exception::warning; } else if( dm ) { if(dm->brat()minimumBR()) { return; } if((dm->decayer()->fullName()).find("Mambo") != string::npos) { // create the decayer GeneralThreeBodyDecayerPtr decayer = createDecayer(diagrams,inter); if(!decayer) { if(Debug::level > 1 ) generator()->log() << "Can't create the decayer for " << tag << " so mode not created\n"; return; } generator()->preinitInterface(dm, "Decayer", "set", decayer->fullName()); // incoming particle is now unstable inpart->stable(false); } } //update CC mode if it exists if( inpart->CC() ) inpart->CC()->synchronize(); } pair,vector > ThreeBodyDecayConstructor:: getColourFactors(tcPDPtr incoming, const OrderedParticles & outgoing, const vector & diagrams, unsigned int & ncf) const { string name = incoming->PDGName() + "->"; vector sng,trip,atrip,oct; unsigned int iloc(0); for(OrderedParticles::const_iterator it = outgoing.begin(); it != outgoing.end();++it) { name += (**it).PDGName() + " "; if ((**it).iColour() == PDT::Colour0 ) sng.push_back(iloc) ; else if((**it).iColour() == PDT::Colour3 ) trip.push_back(iloc) ; else if((**it).iColour() == PDT::Colour3bar ) atrip.push_back(iloc); else if((**it).iColour() == PDT::Colour8 ) oct.push_back(iloc) ; ++iloc; } pair,vector > output; // colour neutral decaying particle if ( incoming->iColour() == PDT::Colour0) { // options are all neutral or triplet/antitriplet+ neutral if(sng.size()==3) { ncf = 1; output.first = vector(1,DVector(1,1.)); output.second = vector(1,DVector(1,1.)); } else if(sng.size()==1&&trip.size()==1&&atrip.size()==1) { ncf = 1; output.first = vector(1,DVector(1,3.)); output.second = vector(1,DVector(1,3.)); } else if(trip.size()==1&&atrip.size()==1&&oct.size()==1) { ncf = 1; output.first = vector(1,DVector(1,4.)); output.second = vector(1,DVector(1,4.)); } else throw Exception() << "Unknown colour flow structure for " << name << Exception::runerror; } // colour triplet decaying particle else if( incoming->iColour() == PDT::Colour3) { if(sng.size()==2&&trip.size()==1) { ncf = 1; output.first = vector(1,DVector(1,1.)); output.second = vector(1,DVector(1,1.)); } else if(trip.size()==2&&atrip.size()==1) { ncf = 2; output.first.resize(2,DVector(2,0.)); output.first[0][0] = 3.; output.first[0][1] = 1.; output.first[1][0] = 1.; output.first[1][1] = 3.; output.second.resize(2,DVector(2,0.)); output.second[0][0] = 3.; output.second[1][1] = 3.; // sort out the contribution of the different diagrams to the colour // flows for(unsigned int ix=0;ixiColour()==PDT::Colour0) { if(diagrams[ix].channelType==trip[0]) { diagrams[ix]. colourFlow = vector(1,make_pair(1,1.)); diagrams[ix].largeNcColourFlow = vector(1,make_pair(1,1.)); } else { diagrams[ix].colourFlow = vector(1,make_pair(2,1.)); diagrams[ix].largeNcColourFlow = vector(1,make_pair(2,1.)); } } // colour octet intermediate else if(diagrams[ix].intermediate->iColour()==PDT::Colour8) { if(diagrams[ix].channelType==trip[0]) { vector flow(1,make_pair(2, 0.5 )); diagrams[ix].largeNcColourFlow = flow; flow.push_back( make_pair(1,-1./6.)); diagrams[ix].colourFlow=flow; } else { vector flow(1,make_pair(1, 0.5 )); diagrams[ix].largeNcColourFlow = flow; flow.push_back( make_pair(2,-1./6.)); diagrams[ix].colourFlow=flow; } } else throw Exception() << "Unknown colour for the intermediate in " << "triplet -> triplet triplet antitriplet in " << "ThreeBodyDecayConstructor::getColourFactors()" << Exception::runerror; } } else if(trip.size()==1&&oct.size()==1&&sng.size()==1) { ncf = 1; output.first = vector(1,DVector(1,4./3.)); output.second = vector(1,DVector(1,4./3.)); } else throw Exception() << "Unknown colour flow structure for " << name << Exception::runerror; } // colour antitriplet decaying particle else if( incoming->iColour() == PDT::Colour3bar) { if(sng.size()==2&&atrip.size()==1) { ncf = 1; output.first = vector(1,DVector(1,1.)); output.second = vector(1,DVector(1,1.)); } else if(atrip.size()==2&&trip.size()==1) { ncf = 2; output.first.resize(2,DVector(2,0.)); output.first[0][0] = 3.; output.first[0][1] = 1.; output.first[1][0] = 1.; output.first[1][1] = 3.; output.second.resize(2,DVector(2,0.)); output.second[0][0] = 3.; output.second[1][1] = 3.; // sort out the contribution of the different diagrams to the colour // flows for(unsigned int ix=0;ixiColour()==PDT::Colour0) { if(diagrams[ix].channelType==atrip[0]) { diagrams[ix]. colourFlow = vector(1,make_pair(1,1.)); diagrams[ix].largeNcColourFlow = vector(1,make_pair(1,1.)); } else { diagrams[ix].colourFlow = vector(1,make_pair(2,1.)); diagrams[ix].largeNcColourFlow = vector(1,make_pair(2,1.)); } } // colour octet intermediate else if(diagrams[ix].intermediate->iColour()==PDT::Colour8) { if(diagrams[ix].channelType==atrip[0]) { vector flow(1,make_pair(2, 0.5 )); diagrams[ix].largeNcColourFlow = flow; flow.push_back( make_pair(1,-1./6.)); diagrams[ix].colourFlow=flow; } else { vector flow(1,make_pair(1, 0.5 )); diagrams[ix].largeNcColourFlow = flow; flow.push_back( make_pair(2,-1./6.)); diagrams[ix].colourFlow=flow; } } else throw Exception() << "Unknown colour for the intermediate in " << "antitriplet -> antitriplet antitriplet triplet in " << "ThreeBodyDecayConstructor::getColourFactors()" << Exception::runerror; } } else if(atrip.size()==1&&oct.size()==1&&sng.size()==1) { ncf = 1; output.first = vector(1,DVector(1,4./3.)); output.second = vector(1,DVector(1,4./3.)); } else throw Exception() << "Unknown colour flow structure for " << name << Exception::runerror; } else if( incoming->iColour() == PDT::Colour8) { // triplet antitriplet if(trip.size() == 1 && atrip.size() == 1 && sng.size() == 1) { ncf = 1; output.first = vector(1,DVector(1,0.5)); output.second = vector(1,DVector(1,0.5)); } else throw Exception() << "Unknown colour flow structure for " << name << Exception::runerror; } return output; } void ThreeBodyDecayConstructor::doinit() { NBodyDecayConstructorBase::doinit(); excludedSet_ = set(excludedVector_.begin(), excludedVector_.end()); if(_removeOnShell==0) generator()->log() << "Warning: Including diagrams with on-shell " << "intermediates in three-body BSM decays, this" << " can lead to double counting and is not" << " recommended unless you really know what you are doing\n" << "This can be switched off using\n set " << fullName() << ":RemoveOnShell Yes\n"; } herwig++-2.6.0.orig/Models/General/DecayConstructor.cc0000644000175000017500000001163011754474773023401 0ustar sylvestresylvestre// -*- C++ -*- // // DecayConstructor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DecayConstructor class. // #include "DecayConstructor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/BaseRepository.h" #include using namespace Herwig; using namespace ThePEG; IBPtr DecayConstructor::clone() const { return new_ptr(*this); } IBPtr DecayConstructor::fullclone() const { return new_ptr(*this); } void DecayConstructor::persistentOutput(PersistentOStream & os) const { os << NBodyDecayConstructors_ << QEDGenerator_; } void DecayConstructor::persistentInput(PersistentIStream & is, int) { is >> NBodyDecayConstructors_ >> QEDGenerator_; } ClassDescription DecayConstructor::initDecayConstructor; // Definition of the static class description member. void DecayConstructor::Init() { static ClassDocumentation documentation ("There is no documentation for the TwoBodyDecayConstructor class"); static RefVector interfaceNBodyDecayConstructors ("NBodyDecayConstructors", "Vector of references to NBodyDecayConstructors", &DecayConstructor::NBodyDecayConstructors_, -1, false, false, true, false, false); static ParVector interfaceDisableModes ("DisableModes", "A list of decay modes to disable", &DecayConstructor::_disableDMTags, -1, string(""), string(""), string(""), false, false, Interface::nolimits); static Reference interfaceQEDGenerator ("QEDGenerator", "Object to generate QED radiation in particle decays", &DecayConstructor::QEDGenerator_, false, false, true, true, false); } /** A helper function for for_each to sort the decay mode tags into the * standard order. */ namespace { void adjustFSOrder(string & tag) { string::size_type sep = tag.find(">"); string head = tag.substr(0, sep + 1); string products = tag.substr(sep + 1); OrderedParticles finalstate; bool loopbreak(true); while ( loopbreak ) { sep = products.find(","); string child; if( sep != string::npos ) { child = products.substr(0, sep); products = products.substr(sep + 1); } else { child = string(products.begin(), products.end() - 1); loopbreak = false; } PDPtr p = BaseRepository::GetObject (string("/Herwig/Particles/" + child)); if( p ) finalstate.insert(p); } if( finalstate.empty() ) return; tag = head; OrderedParticles::const_iterator iend = finalstate.end(); OrderedParticles::size_type count(0), npr(finalstate.size()); for( OrderedParticles::const_iterator it = finalstate.begin(); it != iend; ++it ) { tag += (**it).name(); if( ++count != npr ) tag += string(","); } tag += string(";"); } } namespace { /// Helper function for sorting by number of outgoing lines inline bool orderNBodyConstructors(tNBodyDecayConstructorBasePtr a, tNBodyDecayConstructorBasePtr b) { return a->numBodies() < b->numBodies(); } } void DecayConstructor::doinit() { Interfaced::doinit(); //Need to check that the stored decay mode tags have the //products in the standard order for_each( _disableDMTags.begin(), _disableDMTags.end(), adjustFSOrder ); sort(NBodyDecayConstructors_.begin(), NBodyDecayConstructors_.end(), orderNBodyConstructors); } void DecayConstructor::createDecayers(const PDVector & particles, double minBR) { _minBR = minBR; if ( particles.empty() || NBodyDecayConstructors_.empty() ) return; // turn the vector into a set to avoid duplicates set particleSet(particles.begin(),particles.end()); typedef vector::iterator NBDecayIterator; NBDecayIterator it = NBodyDecayConstructors_.begin(); NBDecayIterator iend = NBodyDecayConstructors_.end(); for( ; it != iend; ++it ) { (**it).init(); (**it).decayConstructor(this); (**it).DecayList(particleSet); } } bool DecayConstructor::disableDecayMode(string tag) const { if( _disableDMTags.empty() ) return false; vector::const_iterator dit = _disableDMTags.begin(); vector::const_iterator dend = _disableDMTags.end(); bool disable(false); for( ; dit != dend; ++dit ) { if( *dit == tag ) { disable = true; break; } } return disable; } herwig++-2.6.0.orig/Models/General/TBDiagram.h0000644000175000017500000001045211754474773021543 0ustar sylvestresylvestre// -*- C++ -*- // // TBDiagram.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TBDiagram_H #define HERWIG_TBDiagram_H // // This is the declaration of the TBDiagram struct. // #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/Vertex/VertexBase.h" namespace Herwig { using namespace ThePEG; using Helicity::VertexBasePtr; /** Pair of particle ids. */ typedef pair IDPair; /** Pair of bool's*/ typedef pair BPair; /** Convenient typedef of VertexBasePtr */ typedef VertexBasePtr VBPtr; /** Pair of VertexBasePtrs */ typedef pair VBPair; /** Pair of int,double */ typedef pair CFPair; /** * The TBDiagram struct contains information about a \f$1\to3\f$ decay that * has been automatically generated by ThreeBodyDecayConstructor. */ struct TBDiagram { /** Enumeration for channel type */ enum Channel {UNDEFINED = -1, channel23=0, channel13=1, channel12=2, fourPoint=3}; /** Standard Constructor */ TBDiagram() : incoming(0), outgoing(0), outgoingPair(make_pair(0, 0)), channelType(UNDEFINED), colourFlow(0), ids(4, 0) {} /** Constructor taking ids as arguments.*/ TBDiagram(long a, long b, IDPair c) : incoming(a), outgoing(b), outgoingPair(c), channelType(UNDEFINED), colourFlow(0), ids(4, 0) { ids[0] = a; ids[1] = b; ids[2] = c.first; ids[3] = c.second; } /** Incoming particle id's */ long incoming; /** Outgoing particle from first vertex */ long outgoing; /** Outgoing particle id's fropm resonance*/ IDPair outgoingPair; /** ParticleData pointer to intermediate, null for 4-point vertices */ PDPtr intermediate; /** The two vertices for the diagram */ VBPair vertices; /** Enum of channel type */ Channel channelType; /** Store colour flow at \f$N_c=3\f$ information */ mutable vector colourFlow; /** Store colour flow at \f$N_c=\infty\f$ information */ mutable vector largeNcColourFlow; /** Store the ids in a vector for easy use of comparison operator. */ vector ids; /** * Test whether this and x are the same decay * @param x The other process to check */ bool sameDecay(const TBDiagram & x) const { if(ids[0] != x.ids[0]) return false; bool used[4]={false,false,false,false}; for(unsigned int ix=1;ix<4;++ix) { bool found=false; for(unsigned int iy=1;iy<4;++iy) { if(used[iy]) continue; if(ids[ix]==x.ids[iy]) { used[iy]=true; found=true; break; } } if(!found) return false; } return true; } }; /** * Test whether two diagrams are identical. */ inline bool operator==(const TBDiagram & x, const TBDiagram & y) { if( x.incoming != y.incoming) return false; if( x.outgoing != y.outgoing) return false; if( x.intermediate != y.intermediate) return false; if( x.vertices != y.vertices ) return false; if( (x.outgoingPair.first == y.outgoingPair.first && x.outgoingPair.second == y.outgoingPair.second ) || (x.outgoingPair.first == y.outgoingPair.second && x.outgoingPair.second == y.outgoingPair.first ) ) return true; else return false; } /** * Output operator to allow the structure to be persistently written * @param os The output stream * @param x The TBDiagram */ inline PersistentOStream & operator<<(PersistentOStream & os, const TBDiagram & x) { os << x.incoming << x.outgoing << x.outgoingPair << x.intermediate << x.vertices << x.channelType << x.colourFlow << x.largeNcColourFlow << x.ids; return os; } /** * Input operator to allow persistently written data to be read in * @param is The input stream * @param x The TBDiagram */ inline PersistentIStream & operator>>(PersistentIStream & is, TBDiagram & x) { int chan; is >> x.incoming >> x.outgoing >> x.outgoingPair >> x.intermediate >> x.vertices >> chan >> x.colourFlow >> x.largeNcColourFlow >> x.ids; x.channelType = TBDiagram::Channel(chan); return is; } } #endif /* HERWIG_TBDiagram_H */ herwig++-2.6.0.orig/Models/General/BSMModel.h0000644000175000017500000000663511754474773021363 0ustar sylvestresylvestre// -*- C++ -*- #ifndef Herwig_BSMModel_H #define Herwig_BSMModel_H // // This is the declaration of the BSMModel class. // #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Utilities/CFileLineReader.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the BSMModel class. * * @see \ref BSMModelInterfaces "The interfaces" * defined for BSMModel. */ class BSMModel: public Herwig::StandardModel { public: /** * The default constructor. */ BSMModel(); 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: /** * Get name of SLHA decay file */ const string & decayFile() const {return decayFile_;} /** * Set name of SLHA decay file */ void decayFile(string in) {decayFile_ = in;} /** * Read the decays */ void decayRead(); /** * Read decaymodes from LHA file * @param ifs input stream containg data * @param decay string containing name of parent and value of total width */ void readDecay(CFileLineReader & ifs, string decay) const; /** * Create a DecayMode object in the repository * @param tag The tag identifying the decay mode including the prefix * 'decaymode' * @param brat Branching ratio of this mode */ void createDecayMode(string tag, double brat) const; /** * Create a DecayMode object in the repository * @param tag The tag identifying the decay mode including the prefix * 'decaymode' * @param brat Branching ratio of this mode */ vector > createWZDecayModes(string tag, double brat, tcPDPtr boson, Energy maxMass) const; /** * read the decays */ bool readDecays() const {return readDecays_;} /** * set the reading of the decays */ void readDecays(bool in) {readDecays_=in;} 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(); //@} /** * Overloaded function from Interfaced */ virtual bool preInitialize() const { return true; } private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BSMModel & operator=(const BSMModel &); private: /** * Name of the decay file */ string decayFile_; /** * Read the decays from the file */ bool readDecays_; /** * Whether or not to replace the top decay modes with those from * the SLHA files */ bool topModesFromFile_; /** * Tolerance for branching ratios */ double tolerance_; }; } #endif /* Herwig_BSMModel_H */ herwig++-2.6.0.orig/Models/General/HiggsVectorBosonProcessConstructor.h0000644000175000017500000000707711754474773027014 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_HiggsVectorBosonProcessConstructor_H #define HERWIG_HiggsVectorBosonProcessConstructor_H // // This is the declaration of the HiggsVectorBosonProcessConstructor class. // #include "HardProcessConstructor.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the HiggsVectorBosonProcessConstructor class. * * @see \ref HiggsVectorBosonProcessConstructorInterfaces "The interfaces" * defined for HiggsVectorBosonProcessConstructor. */ class HiggsVectorBosonProcessConstructor: public HardProcessConstructor { public: /** * The default constructor. */ HiggsVectorBosonProcessConstructor(); /** * Main function called to start constructing the diagrams for * the 2->2 process */ void constructDiagrams(); 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; //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initHiggsVectorBosonProcessConstructor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ HiggsVectorBosonProcessConstructor & operator=(const HiggsVectorBosonProcessConstructor &); private: /** * The allowed outgoing vector bosons */ PDVector _vector; /** * The outgoing higgs bosons */ PDVector _higgs; /** * Collision Type */ bool _type; /** * Treatment of the Higgs width */ unsigned int _shapeOpt; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of HiggsVectorBosonProcessConstructor. */ template <> struct BaseClassTrait { /** Typedef of the first base class of HiggsVectorBosonProcessConstructor. */ typedef Herwig::HardProcessConstructor NthBase; }; /** This template specialization informs ThePEG about the name of * the HiggsVectorBosonProcessConstructor class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::HiggsVectorBosonProcessConstructor"; } }; /** @endcond */ } #endif /* HERWIG_HiggsVectorBosonProcessConstructor_H */ herwig++-2.6.0.orig/Models/General/QQHiggsProcessConstructor.h0000644000175000017500000000757011754474773025070 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_QQHiggsProcessConstructor_H #define HERWIG_QQHiggsProcessConstructor_H // // This is the declaration of the QQHiggsProcessConstructor class. // #include "HardProcessConstructor.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the QQHiggsProcessConstructor class. * * @see \ref QQHiggsProcessConstructorInterfaces "The interfaces" * defined for QQHiggsProcessConstructor. */ class QQHiggsProcessConstructor: public HardProcessConstructor { public: /** * The default constructor. */ QQHiggsProcessConstructor(); /** * Main function called to start constructing the diagrams for * the 2->2 process */ void constructDiagrams(); 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; //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initQQHiggsProcessConstructor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ QQHiggsProcessConstructor & operator=(const QQHiggsProcessConstructor &); private: /** * Which partonic processes to include */ unsigned int _process; /** * Which outgoing quark flavours to include */ unsigned int _quarkFlavour; /** * The outgoing higgs bosons */ PDVector _higgs; /** * Treatment of the Higgs width */ unsigned int _shapeOpt; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of QQHiggsProcessConstructor. */ template <> struct BaseClassTrait { /** Typedef of the first base class of QQHiggsProcessConstructor. */ typedef Herwig::HardProcessConstructor NthBase; }; /** This template specialization informs ThePEG about the name of * the QQHiggsProcessConstructor class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::QQHiggsProcessConstructor"; } /** * The name of a file containing the dynamic library where the class * QQHiggsProcessConstructor is implemented. It may also include several, space-separated, * libraries if the class QQHiggsProcessConstructor depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "QQHiggsProcessConstructor.so"; } }; /** @endcond */ } #endif /* HERWIG_QQHiggsProcessConstructor_H */ herwig++-2.6.0.orig/Models/General/TwoBodyDecayConstructor.h0000644000175000017500000001052711754474773024557 0ustar sylvestresylvestre// -*- C++ -*- // // TwoBodyDecayConstructor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TwoBodyDecayConstructor_H #define HERWIG_TwoBodyDecayConstructor_H // // This is the declaration of the TwoBodyDecayConstructor class. // #include "NBodyDecayConstructorBase.h" #include "ThePEG/Helicity/Vertex/VertexBase.h" #include "Herwig++/Decay/General/GeneralTwoBodyDecayer.fh" #include "TwoBodyDecay.h" namespace Herwig { using namespace ThePEG; using Helicity::VertexBasePtr; using Helicity::tVertexBasePtr; /** * The TwoBodyDecayConstructor class inherits from the dummy base class * NBodyDecayConstructorBase and implements the necessary functions in * order to create the 2 body decay modes for a given set of vertices * stored in a Model class. * * @see \ref TwoBodyDecayConstructorInterfaces "The interfaces" * defined for TwoBodyDecayConstructor. * @see NBodyDecayConstructor **/ class TwoBodyDecayConstructor: public NBodyDecayConstructorBase { public: /** * The default constructor. */ TwoBodyDecayConstructor() {} /** * Function used to determine allowed decaymodes *@param part vector of ParticleData pointers containing particles in model */ virtual void DecayList(const set & part); /** * Number of outgoing lines. Required for correct ordering. */ virtual unsigned int numBodies() const { return 2; } public: /** * 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; //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initTwoBodyDecayConstructor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TwoBodyDecayConstructor & operator=(const TwoBodyDecayConstructor &); private: /** @name Functions to create decayers and decaymodes. */ //@{ /** * Function to create decays * @param inpart Incoming particle * @param vert The vertex to create decays for * @param ilist Which list to search * @param iv Row number in _theExistingDecayers member * @return A vector a decay modes */ set createModes(tPDPtr inpart, VertexBasePtr vert, unsigned int ilist); /** * Function to create decayer for specific vertex * @param decay decay mode for this decay * member variable */ GeneralTwoBodyDecayerPtr createDecayer(TwoBodyDecay decay); /** * Create decay mode(s) from given part and decay modes * @param decays The vector of decay modes * @param decayer The decayer responsible for this decay */ void createDecayMode(set & decays); //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of TwoBodyDecayConstructor. */ template <> struct BaseClassTrait { /** Typedef of the first base class of TwoBodyDecayConstructor. */ typedef Herwig::NBodyDecayConstructorBase NthBase; }; /** This template specialization informs ThePEG about the name of * the TwoBodyDecayConstructor class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::TwoBodyDecayConstructor"; } }; /** @endcond */ } #endif /* HERWIG_TwoBodyDecayConstructor_H */ herwig++-2.6.0.orig/Models/General/HiggsVectorBosonProcessConstructor.cc0000644000175000017500000001317411755204223027123 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the HiggsVectorBosonProcessConstructor class. // #include "HiggsVectorBosonProcessConstructor.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/General/GeneralfftoVH.h" using namespace Herwig; HiggsVectorBosonProcessConstructor::HiggsVectorBosonProcessConstructor() : _type(true), _shapeOpt(1) { } IBPtr HiggsVectorBosonProcessConstructor::clone() const { return new_ptr(*this); } IBPtr HiggsVectorBosonProcessConstructor::fullclone() const { return new_ptr(*this); } void HiggsVectorBosonProcessConstructor::persistentOutput(PersistentOStream & os) const { os << _vector << _higgs << _type << _shapeOpt; } void HiggsVectorBosonProcessConstructor::persistentInput(PersistentIStream & is, int) { is >> _vector >> _higgs >> _type >> _shapeOpt; } ClassDescription HiggsVectorBosonProcessConstructor::initHiggsVectorBosonProcessConstructor; // Definition of the static class description member. void HiggsVectorBosonProcessConstructor::Init() { static ClassDocumentation documentation ("The HiggsVectorBosonProcessConstructor class generates hard process for" " Higgs boson production in assoication with a vector boson in general models."); static RefVector interfaceVectorBoson ("VectorBoson", "The possible outgoing vector bosons, must be W/Z", &HiggsVectorBosonProcessConstructor::_vector, -1, false, false, true, false, false); static RefVector interfaceHiggsBoson ("HiggsBoson", "The possible Higgs bosons", &HiggsVectorBosonProcessConstructor::_higgs, -1, false, false, true, false, false); static Switch interfaceShapeOption ("ShapeScheme", "Option for the treatment of the Higgs resonance shape", &HiggsVectorBosonProcessConstructor::_shapeOpt, 2, false, false); static SwitchOption interfaceStandardShapeFixed (interfaceShapeOption, "FixedBreitWigner", "Breit-Wigner s-channel resonanse", 1); static SwitchOption interfaceStandardShapeRunning (interfaceShapeOption, "MassGenerator", "Use the mass generator to give the shape", 2); static SwitchOption interfaceStandardShapeOn (interfaceShapeOption, "OnShell", "Produce the Higgs on-shell", 0); static Switch interfaceCollisionType ("CollisionType", "Type of collision", &HiggsVectorBosonProcessConstructor::_type, true, false, false); static SwitchOption interfaceCollisionTypeLepton (interfaceCollisionType, "Lepton", "Lepton-Lepton collisions", false); static SwitchOption interfaceCollisionTypeHadron (interfaceCollisionType, "Hadron", "Hadron-Hadron collisions", true); } void HiggsVectorBosonProcessConstructor::constructDiagrams() { if(_vector.empty()||_higgs.empty() || !subProcess() ) return; // initialise the particles for(unsigned int ix=0;ix<_vector.size();++ix) _vector[ix]->init(); for(unsigned int ix=0;ix<_higgs.size();++ix) _higgs[ix]->init(); for(PDVector::const_iterator iv=_vector.begin(); iv!=_vector.end();++iv) { // skip if combination not possible if(_type==false && (**iv).id()!=ParticleID::Z0) continue; else if(_type==true && (abs((**iv).id()) != ParticleID::Wplus && (**iv).id() != ParticleID::Z0)) continue; // loop over the possible Higgs bosons for(PDVector::const_iterator ih=_higgs.begin(); ih!=_higgs.end();++ih) { // check higgs is neutral and scalar if((**ih).iCharge()!=0 || (**ih).coloured() || (**ih).iSpin()!=PDT::Spin0) continue; // find a suitable vertex for(unsigned int nv = 0; nv < model()->numberOfVertices(); ++nv ) { VertexBasePtr vertex = model()->vertex(nv); AbstractVVSVertexPtr svert = dynamic_ptr_cast(vertex); if(!svert) continue; if(vertex->getNpoint() != 3) continue; if(!vertex->isIncoming(*iv)) continue; if(!vertex->isOutgoing(*iv)) continue; if(!vertex->isOutgoing(*ih)) continue; // create the MatrixElement object string objectname ("/Herwig/MatrixElements/"); string classname("Herwig::GeneralfftoVH"); if(_type) objectname += "MEPP2"; else objectname += "MEee2"; objectname += (**iv).PDGName(); objectname += (**ih).PDGName(); GeneralfftoVHPtr matrixElement = dynamic_ptr_cast (generator()->preinitCreate(classname, objectname)); if( !matrixElement ) throw Exception() << "HiggsVectorBosonProcessConstructor::constructDiagrams() " << " Failed to construct matrix element for " << (**iv).PDGName() << " + " << (**ih).PDGName() << " production" << Exception::runerror; GeneralfftoVH::Process process = GeneralfftoVH::Lepton; if(_type) { if((**iv).id()==ParticleID::Z0) process = GeneralfftoVH::HadronZ; else if((**iv).id()==ParticleID::Wplus) process = GeneralfftoVH::HadronWplus; else if((**iv).id()==ParticleID::Wminus) process = GeneralfftoVH::HadronWminus; } // set the information matrixElement->setProcessInfo( process, *ih, svert,_shapeOpt); // insert it generator()->preinitInterface(subProcess(), "MatrixElements", subProcess()->MEs().size(), "insert", matrixElement->fullName()); } } } } herwig++-2.6.0.orig/Models/General/HPDiagram.h0000644000175000017500000001310211754474773021540 0ustar sylvestresylvestre// -*- C++ -*- // // HPDiagram.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_HPDiagram_H #define HERWIG_HPDiagram_H // // This is the declaration of the HPDiagram struct. // #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/Vertex/VertexBase.h" namespace Herwig { using namespace ThePEG; using Helicity::VertexBasePtr; /** Pair of particle ids. */ typedef pair IDPair; /** Pair of bool's*/ typedef pair BPair; /** Convenient typedef of VertexBasePtr */ typedef VertexBasePtr VBPtr; /** Pair of VertexBasePtrs */ typedef pair VBPair; /** Pair of int,double */ typedef pair CFPair; /** * The HPDiagram struct contains information about a 2->2 hard-process that * has been automatically generated by HardProcessConstructor. */ struct HPDiagram { /** Enumeration for channel type */ enum Channel {UNDEFINED = -1, sChannel, tChannel, fourPoint}; /** Standard Constructor */ HPDiagram() : incoming(make_pair(0, 0)), outgoing(make_pair(0, 0)), ordered(make_pair(true,true)), channelType(UNDEFINED), colourFlow(0), ids(4, 0) {} /** Constructor taking ids as arguments.*/ HPDiagram(IDPair a, IDPair b) : incoming(a), outgoing(b), ordered(make_pair(true,true)), channelType(UNDEFINED), colourFlow(0), ids(4, 0){ ids[0] = incoming.first; ids[1] = incoming.second; ids[2] = outgoing.first; ids[3] = outgoing.second; } /** Incoming particle id's */ IDPair incoming; /** Outgoing particle id's */ IDPair outgoing; /** Particle ordering for t-channel diagrams */ BPair ordered; /** ParticleData pointer to intermediate, null for 4-point vertices */ PDPtr intermediate; /** The two vertices for the diagram */ VBPair vertices; /** Enum of channel type */ Channel channelType; /** Store colour flow information */ vector colourFlow; /** Store the ids in a vector for easy use of comparison operator. */ vector ids; /** * Test whether this and x are the same process * @param x The other process to check */ bool sameProcess(const HPDiagram & x) const { return ( x.incoming == incoming && x.outgoing == outgoing ); } }; /** * Test whether two diagrams are identical. */ inline bool operator==(const HPDiagram & x, const HPDiagram & y) { if( x.channelType != y.channelType ) return false; if( x.incoming == y.incoming && x.outgoing == y.outgoing && x.ordered == y.ordered ) { if( !y.intermediate && !x.intermediate ) return true; if( abs(y.intermediate->id()) == abs(x.intermediate->id()) ) return true; } //diagram is also the same if the outgoing particles are //swapped and the ordering is opposite else if( x.incoming == y.incoming && x.outgoing.first != x.outgoing.second && y.outgoing.first != y.outgoing.second && x.outgoing.first == y.outgoing.second && x.outgoing.second == y.outgoing.first && x.channelType == y.channelType) { if(x.channelType==HPDiagram::fourPoint) return true; if(x.channelType==HPDiagram::tChannel&& x.ordered.second != y.ordered.second) { if( abs(y.intermediate->id()) == abs(x.intermediate->id()) ) return true; } if(x.channelType==HPDiagram::sChannel) { if( y.intermediate->id() == x.intermediate->id() ) return true; } } return false; } /** * Test whether one diagram is 'less' than another. Does a * lexicographic comparison of the external states. */ inline bool operator<(const HPDiagram & x, const HPDiagram & y) { for( size_t i = 0; i < 4; ++i ) { if( x.ids[i] < y.ids[i] ) return true; else if( x.ids[i] > y.ids[i] ) return false; } return false; } /** * Output to a stream */ inline ostream & operator<<(ostream & os, const HPDiagram & diag) { os << diag.incoming.first << " " << diag.incoming.second << " -> "; if(diag.intermediate) os << diag.intermediate->id() << " -> "; os << diag.outgoing.first << " " << diag.outgoing.second << " channel: " << diag.channelType << " "; if(diag.channelType == HPDiagram::tChannel) os << "ordering " << diag.ordered.first << " " << diag.ordered.second << " "; for(size_t cf = 0; cf < diag.colourFlow.size(); ++cf) os << "(" << diag.colourFlow[cf].first << "," <>(PersistentIStream & is, HPDiagram & x) { int chan = -1; is >> x.incoming >> x.outgoing >> x.ordered >> x.intermediate >> x.vertices >> chan >> x.colourFlow >> x.ids; x.channelType = HPDiagram::Channel(chan); return is; } } #endif /* HERWIG_HPDiagram_H */ herwig++-2.6.0.orig/Models/General/WeakCurrentDecayConstructor.cc0000644000175000017500000002520011754474773025552 0ustar sylvestresylvestre// -*- C++ -*- // // WeakCurrentDecayConstructor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the WeakCurrentDecayConstructor class. // #include "WeakCurrentDecayConstructor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" #include "DecayConstructor.h" using namespace Herwig; using ThePEG::Helicity::VertexBasePtr; IBPtr WeakCurrentDecayConstructor::clone() const { return new_ptr(*this); } IBPtr WeakCurrentDecayConstructor::fullclone() const { return new_ptr(*this); } void WeakCurrentDecayConstructor::doinit() { NBodyDecayConstructorBase::doinit(); _theModel = dynamic_ptr_cast::pointer> (generator()->standardModel()); unsigned int isize=decayTags_.size(); if(isize!=_norm .size()||isize!=_current.size()) throw InitException() << "Invalid sizes for the decay mode vectors in " << " WeakCurrentDecayConstructor " << decayTags_.size() << " " << _norm.size() << " " << _current.size() << Exception::runerror; // get the particles from the tags for(unsigned int ix=0;ixinit(); particles_.push_back(vector()); string tag=decayTags_[ix]; do { string::size_type next = min(tag.find(','), tag.find(';')); particles_.back().push_back(generator()->findParticle(tag.substr(0,next))); if(!particles_.back().back()) throw Exception() << "Failed to find particle " << tag.substr(0,next) << " in DecayMode " << decayTags_[ix] << " in WeakCurrentDecayConstructor::doinit()" << Exception::runerror; if(tag[next]==';') break; tag = tag.substr(next+1); } while(true); } } void WeakCurrentDecayConstructor::persistentOutput(PersistentOStream & os) const { os << ounit(_masscut,GeV) << decayTags_ << particles_ << _norm << _current; } void WeakCurrentDecayConstructor::persistentInput(PersistentIStream & is, int) { is >> iunit(_masscut,GeV) >> decayTags_ >> particles_ >> _norm >> _current; } ClassDescription WeakCurrentDecayConstructor::initWeakCurrentDecayConstructor; // Definition of the static class description member. void WeakCurrentDecayConstructor::Init() { static ClassDocumentation documentation ("The WeakCurrentDecayConstructor class implemets the decay of BSM particles " "to low mass hadronic states using the Weak current"); static ParVector interfaceDecayModes ("DecayModes", "The decays of the weak current", &WeakCurrentDecayConstructor::decayTags_, -1, "", "", "", false, false, Interface::nolimits); static ParVector interfaceNormalisation ("Normalisation", "The normalisation of the different modes", &WeakCurrentDecayConstructor::_norm, -1, 1.0, 0.0, 10.0, false, false, Interface::limited); static RefVector interfaceCurrent ("Current", "The current for the decay mode", &WeakCurrentDecayConstructor::_current, -1, false, false, true, false, false); static Parameter interfaceMassCut ("MassCut", "The maximum mass difference for the decay", &WeakCurrentDecayConstructor::_masscut, GeV, 5.0*GeV, 1.0*GeV, 10.0*GeV, false, false, Interface::limited); } void WeakCurrentDecayConstructor::DecayList(const set & part) { if( part.empty() ) return; unsigned int nv(_theModel->numberOfVertices()); for(set::const_iterator ip=part.begin();ip!=part.end();++ip) { for(unsigned int iv = 0; iv < nv; ++iv) { for(unsigned int ilist = 0; ilist < 3; ++ilist) { vector decays = createModes(*ip, _theModel->vertex(iv),ilist); if(!decays.empty()) createDecayMode(decays); } } } } vector WeakCurrentDecayConstructor::createModes(const PDPtr inpart, const VertexBasePtr vert, unsigned int ilist) { int id = inpart->id(); if( id < 0 || !vert->isIncoming(inpart) || vert->getNpoint() != 3 ) return vector(); Energy m1(inpart->mass()); vector decaylist; decaylist = vert->search(ilist,inpart); tPDVector::size_type nd = decaylist.size(); vector decays; for( tPDVector::size_type i = 0; i < nd; i += 3 ) { tPDPtr pa(decaylist[i]), pb(decaylist.at(i + 1)), pc(decaylist.at(i + 2)); if( pb->id() == id ) swap(pa, pb); if( pc->id() == id ) swap(pa, pc); //One of the products must be a W Energy mp(ZERO); if( abs(pb->id()) == ParticleID::Wplus ) mp = pc->mass(); else if( abs(pc->id()) == ParticleID::Wplus ) mp = pb->mass(); else continue; //allowed on-shell decay and passes mass cut if( m1 >= pb->mass() + pc->mass() ) continue; if( m1 < mp ) continue; if( m1 - mp >= _masscut ) continue; //vertices are defined with all particles incoming if( pb->CC() ) pb = pb->CC(); if( pc->CC() ) pc = pc->CC(); decays.push_back( TwoBodyDecay(inpart,pb, pc, vert) ); if(abs(decays.back().children_.second->id())!=ParticleID::Wplus) swap(decays.back().children_.first,decays.back().children_.second); assert(abs(decays.back().children_.second->id())==ParticleID::Wplus); } return decays; } GeneralCurrentDecayerPtr WeakCurrentDecayConstructor::createDecayer(PDPtr in, PDPtr out1, vector outCurrent, VertexBasePtr vertex, WeakDecayCurrentPtr current) { string name; using namespace ThePEG::Helicity::VertexType; switch(vertex->getName()) { case FFV : name = "FFVCurrentDecayer"; break; default : ostringstream message; message << "Invalid vertex for decays of " << in->PDGName() << " -> " << out1->PDGName() << " via weak current " << vertex->fullName() << "\n"; generator()->logWarning(NBodyDecayConstructorError(message.str(), Exception::warning)); return GeneralCurrentDecayerPtr(); } ostringstream fullname; fullname << "/Herwig/Decays/" << name << "_" << in->PDGName() << "_" << out1->PDGName(); for(unsigned int ix=0;ixPDGName(); string classname = "Herwig::" + name; GeneralCurrentDecayerPtr decayer = dynamic_ptr_cast (generator()->preinitCreate(classname,fullname.str())); decayer->setDecayInfo(in,out1,outCurrent,vertex,current,_masscut); // set decayer options from base class setDecayerInterfaces(fullname.str()); // initialize the decayer decayer->init(); // return the decayer return decayer; } void WeakCurrentDecayConstructor:: createDecayMode(vector & decays) { assert(!decays.empty()); for(unsigned int ix = 0; ix < decays.size(); ++ix) { PDVector particles(3); particles[0] = decays[ix].parent_; particles[1] = decays[ix].children_.first ; bool Wplus=decays[ix].children_.second->id()==ParticleID::Wplus; for(unsigned int iy=0;iy<_current.size();++iy) { particles.resize(2); vector wprod=particles_[iy]; int icharge=0; Energy msum = particles[0]->mass()-particles[1]->mass(); for(unsigned int iz=0;iziCharge(); msum -=wprod[iz]->mass(); } if(msum<=ZERO) continue; bool cc = (Wplus&&icharge==-3)||(!Wplus&&icharge==3); OrderedParticles outgoing; outgoing.insert(particles[1]); for(unsigned int iz=0;izCC()) wprod[iz]=wprod[iz]->CC(); outgoing.insert(wprod[iz]); } // check outgoing particles initialised for(unsigned int iz=0;izinit(); // create the tag for the decay mode string tag = particles[0]->PDGName() + "->"; OrderedParticles::const_iterator it = outgoing.begin(); do { tag += (**it).name(); ++it; if(it!=outgoing.end()) tag +=","; else tag +=";"; } while(it!=outgoing.end()); // find the decay mode tDMPtr dm= generator()->findDecayMode(tag); if( !dm && createDecayModes() ) { // create the decayer GeneralCurrentDecayerPtr decayer = createDecayer(particles[0],particles[1], wprod,decays[ix].vertex_, _current[iy]); if(!decayer) continue; // calculate the width Energy pWidth = _norm[iy]*decayer->partialWidth(particles[0],particles[1],wprod); if(pWidth<=ZERO) { generator()->preinitInterface(decayer->fullName(), "Initialize", "set","0"); continue; } tDMPtr ndm = generator()->preinitCreateDecayMode(tag); if(!ndm) throw NBodyDecayConstructorError() << "WeakCurrentDecayConstructor::createDecayMode - Needed to create " << "new decaymode but one could not be created for the tag " << tag << Exception::warning; generator()->preinitInterface(ndm, "Decayer", "set", decayer->fullName()); generator()->preinitInterface(ndm, "OnOff", "set", "On"); setBranchingRatio(ndm, pWidth); particles[0]->stable(false); if(ndm->brat()minimumBR()) { generator()->preinitInterface(decayer->fullName(), "Initialize", "set","0"); } } else if (dm) { // create the decayer GeneralCurrentDecayerPtr decayer = createDecayer(particles[0],particles[1], wprod,decays[ix].vertex_, _current[iy]); if(!decayer) continue; generator()->preinitInterface(dm, "Decayer", "set", decayer->fullName()); particles[0]->stable(false); if(createDecayModes()) { // calculate the width Energy pWidth = _norm[iy]*decayer->partialWidth(particles[0],particles[1],wprod); if(pWidth<=ZERO) { generator()->preinitInterface(decayer->fullName(), "Initialize", "set","0"); continue; } generator()->preinitInterface(dm, "OnOff", "set", "On"); particles[0]->width(particles[0]->width()*(1.-dm->brat())); setBranchingRatio(dm, pWidth); } if(dm->brat()minimumBR()) { generator()->preinitInterface(decayer->fullName(), "Initialize", "set","0"); } } } } } herwig++-2.6.0.orig/Models/General/BSMWidthGenerator.fh0000644000175000017500000000053711754474773023412 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the BSMWidthGenerator class. // #ifndef HERWIG_BSMWidthGenerator_FH #define HERWIG_BSMWidthGenerator_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class BSMWidthGenerator; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::BSMWidthGenerator,BSMWidthGeneratorPtr); } #endif herwig++-2.6.0.orig/Models/General/ModelGenerator.fh0000644000175000017500000000051511754474773023025 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the ModelGenerator class. // #ifndef HERWIG_ModelGenerator_FH #define HERWIG_ModelGenerator_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ModelGenerator; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ModelGenerator,ModelGeneratorPtr); } #endif herwig++-2.6.0.orig/Models/General/VVSLoopVertex.fh0000644000175000017500000000050711754474773022625 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the VVSLoopVertex class. // #ifndef HERWIG_VVSLoopVertex_FH #define HERWIG_VVSLoopVertex_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class VVSLoopVertex; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::VVSLoopVertex,VVSLoopVertexPtr); } #endif herwig++-2.6.0.orig/Models/General/ModelGenerator.h0000644000175000017500000001304311754474773022657 0ustar sylvestresylvestre// -*- C++ -*- // // ModelGenerator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ModelGenerator_H #define HERWIG_ModelGenerator_H // // This is the declaration of the ModelGenerator class. // #include "ThePEG/Interface/Interfaced.h" #include "DecayConstructor.h" #include "HardProcessConstructor.h" #include "ModelGenerator.fh" namespace Herwig { using namespace ThePEG; /** * This class is designed to store the particles in some model and * then call the appropriate function to setup the model * * @see \ref ModelGeneratorInterfaces "The interfaces" * defined for ModelGenerator. * @see Interfaced */ class ModelGenerator: public Interfaced { public: /** * The default constructor. */ ModelGenerator() : particles_(0), offshell_(0), Offsel_(0), BRnorm_(true), Npoints_(50), Iorder_(1), BWshape_(0), brMin_(1e-6), decayOutput_(1) {} 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: /** @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(); //@} 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initModelGenerator; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ModelGenerator & operator=(const ModelGenerator &); private: /** * Check the decay modes a given particle type. This checks whether * the decay has quarks in the final state and that they can be put on * mass-shell during the shower. * @param parent The parent particle */ void checkDecays(PDPtr parent); /** * Write out the spectrum of masses and decay modes */ void writeDecayModes(ostream & ofs, tcPDPtr parent) const; /** * Create mass and width generators to simulate off-shell effects * @param p A pointer to the ParticleData object to create * the width and mass generators for. */ void createWidthGenerator(tPDPtr p); private: /** * Pointer to the TwoToTwoProcessConstructor */ vector hardProcessConstructors_; /** * Pointer to DecayConstructor */ DecayConstructorPtr _theDecayConstructor; /** * Vector of ParticleData pointer */ PDVector particles_; /** @name Width and Mass Generator variables. */ //@{ /** * The particles to create MassGenerator and WidthGenerators */ PDVector offshell_; /** * Which particles to treat as off-shell. 1 treats all particles in * particles_ vector as off-shell, 0 allows selection via * offshell_ vector. */ int Offsel_; /** * Whether to normalise the partial widths to BR*Total width for * an on-shell particle */ bool BRnorm_; /** * The number of points to include in the interpolation table */ int Npoints_; /** * The order for the interpolation */ unsigned int Iorder_; /** * The shape of the Breit-Wigner used in the mass generation */ int BWshape_; /** * The minimum branching ratio to use */ double brMin_; //@} /** * Option for the outputs of the decays to a file */ unsigned int decayOutput_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ModelGenerator. */ template <> struct BaseClassTrait { /** Typedef of the first base class of ModelGenerator. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the ModelGenerator class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::ModelGenerator"; } }; /** @endcond */ } #endif /* HERWIG_ModelGenerator_H */ herwig++-2.6.0.orig/Models/General/ModelGenerator.cc0000644000175000017500000003766411754474773023034 0ustar sylvestresylvestre// -*- C++ -*- // // ModelGenerator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ModelGenerator class. // #include "ModelGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Repository/CurrentGenerator.h" #include "BSMWidthGenerator.h" #include "Herwig++/PDT/GenericMassGenerator.h" #include "Herwig++/Decay/DecayIntegrator.h" #include "ThePEG/Repository/BaseRepository.h" using namespace Herwig; IBPtr ModelGenerator::clone() const { return new_ptr(*this); } IBPtr ModelGenerator::fullclone() const { return new_ptr(*this); } void ModelGenerator::persistentOutput(PersistentOStream & os) const { os << hardProcessConstructors_ << _theDecayConstructor << particles_ << offshell_ << Offsel_ << BRnorm_ << Npoints_ << Iorder_ << BWshape_ << brMin_ << decayOutput_; } void ModelGenerator::persistentInput(PersistentIStream & is, int) { is >> hardProcessConstructors_ >> _theDecayConstructor >> particles_ >> offshell_ >> Offsel_ >> BRnorm_ >> Npoints_ >> Iorder_ >> BWshape_ >> brMin_ >> decayOutput_; } ClassDescription ModelGenerator::initModelGenerator; // Definition of the static class description member. void ModelGenerator::Init() { static ClassDocumentation documentation ("This class controls the the use of BSM physics.", "BSM physics was produced using the algorithm of " "\\cite{Gigg:2007cr,Gigg:2008yc}", "\\bibitem{Gigg:2007cr} M.~Gigg and P.~Richardson, \n" "Eur.\\ Phys.\\ J.\\ C {\\bf 51} (2007) 989.\n" "%%CITATION = EPHJA,C51,989;%%\n" " %\\cite{Gigg:2008yc}\n" "\\bibitem{Gigg:2008yc}\n" " M.~A.~Gigg and P.~Richardson,\n" " %``Simulation of Finite Width Effects in Physics Beyond the Standard Model,''\n" " arXiv:0805.3037 [hep-ph].\n" " %%CITATION = ARXIV:0805.3037;%%\n" ); static RefVector interfaceHardProcessConstructors ("HardProcessConstructors", "The objects to construct hard processes", &ModelGenerator::hardProcessConstructors_, -1, false, false, true, false, false); static Reference interfaceDecayConstructor ("DecayConstructor", "Pointer to DecayConstructor helper class", &ModelGenerator::_theDecayConstructor, false, false, true, false); static RefVector interfaceModelParticles ("DecayParticles", "ParticleData pointers to the particles requiring spin correlation " "decayers. If decay modes do not exist they will also be created.", &ModelGenerator::particles_, -1, false, false, true, false); static RefVector interfaceOffshell ("Offshell", "The particles to treat as off-shell", &ModelGenerator::offshell_, -1, false, false, true, false); static Switch interfaceWhichOffshell ("WhichOffshell", "A switch to determine which particles to create mass and width " "generators for.", &ModelGenerator::Offsel_, 0, false, false); static SwitchOption interfaceWhichOffshellSelected (interfaceWhichOffshell, "Selected", "Only create mass and width generators for the particles specified", 0); static SwitchOption interfaceWhichOffshellAll (interfaceWhichOffshell, "All", "Treat all particles specified in the DecayParticles " "list as off-shell", 1); static Switch interfaceBRNormalize ("BRNormalize", "Whether to normalize the partial widths to BR*total width for an " "on-shell particle", &ModelGenerator::BRnorm_, true, false, false); static SwitchOption interfaceBRNormalizeNormalize (interfaceBRNormalize, "Yes", "Normalize the partial widths", true); static SwitchOption interfaceBRNormalizeNoNormalize (interfaceBRNormalize, "No", "Do not normalize the partial widths", false); static Parameter interfacePoints ("InterpolationPoints", "Number of points to use for interpolation tables when needed", &ModelGenerator::Npoints_, 50, 5, 1000, false, false, true); static Parameter interfaceInterpolationOrder ("InterpolationOrder", "The interpolation order for the tables", &ModelGenerator::Iorder_, 1, 1, 5, false, false, Interface::limited); static Switch interfaceBreitWignerShape ("BreitWignerShape", "Controls the shape of the mass distribution generated", &ModelGenerator::BWshape_, 0, false, false); static SwitchOption interfaceBreitWignerShapeDefault (interfaceBreitWignerShape, "Default", "Running width with q in numerator and denominator width factor", 0); static SwitchOption interfaceBreitWignerShapeFixedWidth (interfaceBreitWignerShape, "FixedWidth", "Use a fixed width", 1); static SwitchOption interfaceBreitWignerShapeNoq (interfaceBreitWignerShape, "Noq", "Use M rather than q in the numerator and denominator width factor", 2); static SwitchOption interfaceBreitWignerShapeNoNumerator (interfaceBreitWignerShape, "NoNumerator", "Neglect the numerator factors", 3); static Parameter interfaceMinimumBR ("MinimumBR", "The minimum branching fraction to include", &ModelGenerator::brMin_, 1e-6, 0.0, 1.0, false, false, Interface::limited); static Switch interfaceDecayOutput ("DecayOutput", "Option to control the output of the decay mode information", &ModelGenerator::decayOutput_, 1, false, false); static SwitchOption interfaceDecayOutputNone (interfaceDecayOutput, "None", "No output", 0); static SwitchOption interfaceDecayOutputPlain (interfaceDecayOutput, "Plain", "Default plain text output", 1); static SwitchOption interfaceDecayOutputSLHA (interfaceDecayOutput, "SLHA", "Output in the Susy Les Houches Accord format", 2); } namespace { /// Helper function for sorting by mass inline bool massIsLess(tcPDPtr a, tcPDPtr b) { return a->mass() < b->mass(); } } void ModelGenerator::doinit() { useMe(); Interfaced::doinit(); // make sure the model is initialized Ptr::pointer model = dynamic_ptr_cast::pointer>(generator()->standardModel()); model->init(); // and the vertices for(size_t iv = 0; iv < model->numberOfVertices(); ++iv) model->vertex(iv)->init(); // sort DecayParticles list by mass sort(particles_.begin(),particles_.end(), massIsLess); //create mass and width generators for the requested particles PDVector::iterator pit, pend; if( Offsel_ == 0 ) { pit = offshell_.begin(); pend = offshell_.end(); } else { pit = particles_.begin(); pend = particles_.end(); } for(; pit != pend; ++pit) createWidthGenerator(*pit); //create decayers and decaymodes (if necessary) if( _theDecayConstructor ) { _theDecayConstructor->init(); _theDecayConstructor->createDecayers(particles_,brMin_); } // write out decays with spin correlations ostream & os = CurrentGenerator::current().misc(); ofstream ofs; if ( decayOutput_ > 1 ) { string filename = CurrentGenerator::current().filename() + "-BR.spc"; ofs.open(filename.c_str()); } if(decayOutput_!=0) { if(decayOutput_==1) { os << "# The decay modes listed below will have spin\n" << "# correlations included when they are generated.\n#\n#"; } else { ofs << "# Herwig++ decay tables in SUSY Les Houches accord format\n"; ofs << "Block DCINFO # Program information\n"; ofs << "1 Herwig++ # Decay Calculator\n"; ofs << "2 " << generator()->strategy()->versionstring() << " # Version number\n"; } } pit = particles_.begin(); pend = particles_.end(); for( ; pit != pend; ++pit) { tPDPtr parent = *pit; // Check decays for ones where quarks cannot be put on constituent // mass-shell checkDecays(parent); parent->reset(); parent->update(); if( parent->CC() ) parent->CC()->synchronize(); if( parent->decaySelector().empty() ) { parent->stable(true); parent->width(ZERO); parent->massGenerator(tGenericMassGeneratorPtr()); parent->widthGenerator(tGenericWidthGeneratorPtr()); } else { if ( decayOutput_ == 2 ) writeDecayModes(ofs, parent); else writeDecayModes(os, parent); } if( parent->massGenerator() ) { parent->widthCut(5.*parent->width()); parent->massGenerator()->reset(); if(decayOutput_==1) os << "# " <PDGName() << " will be considered off-shell.\n#\n"; } if( parent->widthGenerator() ) parent->widthGenerator()->reset(); } //Now construct hard processes given that we know which //objects have running widths for(unsigned int ix=0;ixinit(); hardProcessConstructors_[ix]->constructDiagrams(); } } void ModelGenerator::checkDecays(PDPtr parent) { if( parent->stable() ) { if(parent->coloured()) cerr << "Warning: No decays for coloured particle " << parent->PDGName() << "\n\n" << "have been calcluated in BSM model.\n" << "This may cause problems in the hadronization phase.\n" << "You may have forgotten to switch on the decay mode calculation using\n" << " set TwoBodyDC:CreateDecayModes Yes\n" << " set ThreeBodyDC:CreateDecayModes Yes\n" << " set WeakDecayConstructor:CreateDecayModes Yes\n" << "or the decays of this particle are missing from your\n" << "input spectrum and decay file in the SLHA format.\n\n"; return; } DecaySet::iterator dit = parent->decayModes().begin(); DecaySet::iterator dend = parent->decayModes().end(); Energy oldwidth(parent->width()), newwidth(ZERO); bool rescalebrat(false); double brsum(0.); for(; dit != dend; ++dit ) { if( !(**dit).on() ) continue; Energy release((**dit).parent()->mass()); tPDVector::const_iterator pit = (**dit).orderedProducts().begin(); tPDVector::const_iterator pend =(**dit).orderedProducts().end(); for( ; pit != pend; ++pit ) { release -= (**pit).constituentMass(); } if( (**dit).brat() < brMin_ || release < ZERO ) { if( release < ZERO ) cerr << "Warning: The shower cannot be generated using this decay " << (**dit).tag() << " because it is too close to threshold. It " << "will be switched off and the branching fractions of the " << "remaining modes rescaled.\n"; rescalebrat = true; generator()->preinitInterface(*dit, "OnOff", "set", "Off"); generator()->preinitInterface(*dit, "BranchingRatio", "set", "0.0"); DecayIntegratorPtr decayer = dynamic_ptr_cast((**dit).decayer()); if(decayer) { generator()->preinitInterface(decayer->fullName(), "Initialize", "set","0"); } } else { brsum += (**dit).brat(); newwidth += (**dit).brat()*oldwidth; } } if( rescalebrat || (abs(brsum - 1.) > 1e-12) ) { dit = parent->decayModes().begin(); dend = parent->decayModes().end(); double factor = oldwidth/newwidth; brsum = 0.; for( ; dit != dend; ++dit ) { if( !(**dit).on() ) continue; double newbrat = ((**dit).brat())*factor; brsum += newbrat; ostringstream brf; brf << setprecision(13) << newbrat; generator()->preinitInterface(*dit, "BranchingRatio", "set", brf.str()); } parent->width(newwidth); if( newwidth > ZERO ) parent->cTau(hbarc/newwidth); } } namespace { struct DecayModeOrdering { bool operator()(tcDMPtr m1, tcDMPtr m2) { if(m1->brat()!=m2->brat()) { return m1->brat()>m2->brat(); } else { if(m1->products().size()==m2->products().size()) { ParticleMSet::const_iterator it1=m1->products().begin(); ParticleMSet::const_iterator it2=m2->products().begin(); do { if((**it1).id()!=(**it2).id()) { return (**it1).id()>(**it2).id(); } ++it1; ++it2; } while(it1!=m1->products().end()&& it2!=m2->products().end()); assert(false); } else return m1->products().size()products().size(); } return false; } }; } void ModelGenerator::writeDecayModes(ostream & os, tcPDPtr parent) const { if(decayOutput_==0) return; set modes; for(Selector::const_iterator dit = parent->decaySelector().begin(); dit != parent->decaySelector().end(); ++dit) { modes.insert((*dit).second); } if(decayOutput_==1) { os << " Parent: " << parent->PDGName() << " Mass (GeV): " << parent->mass()/GeV << " Total Width (GeV): " << parent->width()/GeV << endl; os << std::left << std::setw(40) << '#' << std::left << std::setw(20) << "Partial Width/GeV" << "BR\n"; for(set::iterator dit=modes.begin(); dit!=modes.end();++dit) os << std::left << std::setw(40) << (**dit).tag() << std::left << std::setw(20) << (**dit).brat()*parent->width()/GeV << (**dit).brat() << '\n'; os << "#\n#"; } else if(decayOutput_==2) { os << "# \t PDG \t Width\n"; os << "DECAY\t" << parent->id() << "\t" << parent->width()/GeV << "\t # " << parent->PDGName() << "\n"; for(set::iterator dit=modes.begin(); dit!=modes.end();++dit) { os << "\t" << std::left << std::setw(10) << (**dit).brat() << "\t" << (**dit).orderedProducts().size() << "\t"; for(unsigned int ix=0;ix<(**dit).orderedProducts().size();++ix) os << std::right << std::setw(10) << (**dit).orderedProducts()[ix]->id() ; for(unsigned int ix=(**dit).orderedProducts().size();ix<4;++ix) os << "\t"; os << "# " << (**dit).tag() << "\n"; } } } void ModelGenerator::createWidthGenerator(tPDPtr p) { string wn = p->fullName() + string("-WGen"); string mn = p->fullName() + string("-MGen"); GenericMassGeneratorPtr mgen = dynamic_ptr_cast (generator()->preinitCreate("Herwig::GenericMassGenerator", mn)); BSMWidthGeneratorPtr wgen = dynamic_ptr_cast (generator()->preinitCreate("Herwig::BSMWidthGenerator", wn)); //set the particle interface generator()->preinitInterface(mgen, "Particle", "set", p->fullName()); generator()->preinitInterface(wgen, "Particle", "set", p->fullName()); //set the generator interfaces in the ParticleData object generator()->preinitInterface(p, "Mass_generator","set", mn); generator()->preinitInterface(p, "Width_generator","set", wn); //allow the branching fraction of this particle type to vary p->variableRatio(true); if( p->CC() ) p->CC()->variableRatio(true); //initialize the generators generator()->preinitInterface(mgen, "Initialize", "set", "Yes"); generator()->preinitInterface(wgen, "Initialize", "set", "Yes"); string norm = BRnorm_ ? "Yes" : "No"; generator()->preinitInterface(wgen, "BRNormalize", "set", norm); ostringstream os; os << Npoints_; generator()->preinitInterface(wgen, "InterpolationPoints", "set", os.str()); os.str(""); os << Iorder_; generator()->preinitInterface(wgen, "InterpolationOrder", "set", os.str()); os.str(""); os << BWshape_; generator()->preinitInterface(mgen, "BreitWignerShape", "set", os.str()); } herwig++-2.6.0.orig/Models/General/HiggsVBFProcessConstructor.h0000644000175000017500000000664411754474773025165 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_HiggsVBFProcessConstructor_H #define HERWIG_HiggsVBFProcessConstructor_H // // This is the declaration of the HiggsVBFProcessConstructor class. // #include "HardProcessConstructor.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the HiggsVBFProcessConstructor class. * * @see \ref HiggsVBFProcessConstructorInterfaces "The interfaces" * defined for HiggsVBFProcessConstructor. */ class HiggsVBFProcessConstructor: public HardProcessConstructor { public: /** * The default constructor. */ HiggsVBFProcessConstructor(); /** * Main function called to start constructing the diagrams for * the 2->2 process */ void constructDiagrams(); 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; //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initHiggsVBFProcessConstructor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ HiggsVBFProcessConstructor & operator=(const HiggsVBFProcessConstructor &); private: /** * The outgoing higgs bosons */ PDVector _higgs; /** * Collision Type */ bool _type; /** * Treatment of the Higgs width */ unsigned int _shapeOpt; /** * which intermediates to include */ unsigned int _intermediates; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of HiggsVBFProcessConstructor. */ template <> struct BaseClassTrait { /** Typedef of the first base class of HiggsVBFProcessConstructor. */ typedef Herwig::HardProcessConstructor NthBase; }; /** This template specialization informs ThePEG about the name of * the HiggsVBFProcessConstructor class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::HiggsVBFProcessConstructor"; } }; /** @endcond */ } #endif /* HERWIG_HiggsVBFProcessConstructor_H */ herwig++-2.6.0.orig/Analysis/0000755000175000017500000000000011756464211016545 5ustar sylvestresylvestreherwig++-2.6.0.orig/Analysis/BFragmentationAnalysisHandler.h0000644000175000017500000001314411754474773024637 0ustar sylvestresylvestre// -*- C++ -*- // // BFragmentationAnalysisHandler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_BFragmentationAnalysisHandler_H #define HERWIG_BFragmentationAnalysisHandler_H // // This is the declaration of the BFragmentationAnalysisHandler class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" #include "ThePEG/EventRecord/Event.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * The BFragmentationAnalysisHandler class is designed to compare * the fragmentation function for weakly decaying B hadrons with data * from SLD and ALEPH. * * @see \ref BFragmentationAnalysisHandlerInterfaces "The interfaces" * defined for BFragmentationAnalysisHandler. */ class BFragmentationAnalysisHandler: public AnalysisHandler { public: /** * The default constructor. */ BFragmentationAnalysisHandler() : _emax() {} /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Identifies which step(2) final state particles originate * from the b/bbar... */ void analyze_bquarks(ParticleSet, double); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. * @param weight The weight for the event */ virtual void analyze(tPPtr particle, double weight); using AnalysisHandler::analyze; //@} public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initBFragmentationAnalysisHandler; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BFragmentationAnalysisHandler & operator=(const BFragmentationAnalysisHandler &); private: /** * Histogram for the SLD binning */ HistogramPtr _fragBxE; /** * Histogram for the ALEPH binning */ HistogramPtr _fragBxEa; /** * Histograms for quark energy fraction */ HistogramPtr _fragbquarkxE; /** * Histograms for b jet mass */ HistogramPtr _fragbquarkjetmass; /** * Centre-of-mass energy of the collision */ Energy _emax; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of BFragmentationAnalysisHandler. */ template <> struct BaseClassTrait { /** Typedef of the first base class of BFragmentationAnalysisHandler. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the BFragmentationAnalysisHandler class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::BFragmentationAnalysisHandler"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the BFragmentationAnalysisHandler class and any other class on which it depends * (except the base class). */ static string library() { return "HwAnalysis.so HwLEPAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_BFragmentationAnalysisHandler_H */ herwig++-2.6.0.orig/Analysis/LEPFourJetsAnalysis.h0000644000175000017500000001601511754474773022543 0ustar sylvestresylvestre// -*- C++ -*- // // LEPFourJetsAnalysis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_LEPFourJetsAnalysis_H #define HERWIG_LEPFourJetsAnalysis_H // // This is the declaration of the LEPFourJetsAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Vectors/Lorentz5Vector.h" #include "Herwig++/Utilities/Histogram.h" #include "ThePEG/Repository/CurrentGenerator.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * The LEPFourJetsAnalysis class performs analysis for four jet angles and * compares them to LEP data. * * @see \ref LEPFourJetsAnalysisInterfaces "The interfaces" * defined for LEPFourJetsAnalysis. */ class LEPFourJetsAnalysis: public AnalysisHandler { public: /** * Default constructor */ LEPFourJetsAnalysis () : _ca34(), _cchiBZ(), _cphiKSW(), _cthNR(), _charged(true) {} public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} 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: /** * Methods to compute the four jet angles, assumes the jets are energy ordered */ //@{ /** * Compute \f$\cos\chi_{BZ}\f$ */ double cosChiBZ(vector p) { if (p.size() == 4) { ThreeVector v1 = p[0].vect().cross(p[1].vect()); ThreeVector v2 = p[2].vect().cross(p[3].vect()); return cos(v1.angle(v2)); } else return 123; } /** * Compute \f$\cos\Phi_{KSW}\f$. */ double cosPhiKSW(vector p) { if (p.size() == 4) { ThreeVector v1 = p[0].vect().cross(p[3].vect()); ThreeVector v2 = p[1].vect().cross(p[2].vect()); double alpha1 = v1.angle(v2); v1 = p[0].vect().cross(p[2].vect()); v2 = p[1].vect().cross(p[3].vect()); double alpha2 = v1.angle(v2); return cos((alpha1+alpha2)/2.); } else return 123; } /** * Compute \f$\cos\Theta_{NR}\f$ */ double cosThetaNR(vector p) { if (p.size() == 4) { ThreeVector v1 = p[0].vect() - p[1].vect(); ThreeVector v2 = p[2].vect() - p[3].vect(); return cos(v1.angle(v2)); } else return 123; } /** * Compute \f$\cos\alpha_{34}\f$ */ double cosAlpha34(std::vector p) { if (p.size() == 4) return cos(p[2].vect().angle(p[3].vect())); else return 123; } //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initLEPFourJetsAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ LEPFourJetsAnalysis & operator=(const LEPFourJetsAnalysis &); private: /** * Histogram for the \f$\cos\alpha_{34}\f$ distribution */ HistogramPtr _ca34; /** * Histogram for the \f$\cos\chi_{BZ}\f$ distribution */ HistogramPtr _cchiBZ; /** * Histogram for the \f$\cos\Phi_{KSW}\f$ distribution */ HistogramPtr _cphiKSW; /** * Histogram for the \f$\cos\Theta_{NR}\f$ distribution */ HistogramPtr _cthNR; /** * Use charged particles only */ bool _charged; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of LEPFourJetsAnalysis. */ template <> struct BaseClassTrait { /** Typedef of the first base class of LEPFourJetsAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the LEPFourJetsAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::LEPFourJetsAnalysis"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the LEPFourJetsAnalysis class and any other class on which it depends * (except the base class). */ static string library() { return "libfastjet.so HwLEPJetAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_LEPFourJetsAnalysis_H */ herwig++-2.6.0.orig/Analysis/EventShapes.cc0000644000175000017500000002405511754474773021323 0ustar sylvestresylvestre// -*- C++ -*- // // EventShapes.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the EventShapes class. // #include "EventShapes.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; NoPIOClassDescription EventShapes::initEventShapes; // Definition of the static class description member. void EventShapes::Init() { static ClassDocumentation documentation ("There is no documentation for the EventShapes class"); } void EventShapes::calcHemisphereMasses() { Lorentz5Momentum pos, neg; Energy pden(ZERO),epos(ZERO),eneg(ZERO); for(unsigned int ix=0;ix<_pv.size();++ix) { if(_pv[ix].vect() * thrustAxis() > ZERO) { pos += _pv[ix]; // can be replaced with, once perp() is giving non-nan results // for nearly parallel vectors. // epos += _pv[ix].perp(thrustAxis()); epos += _pv[ix].vect().cross(thrustAxis()).mag(); } else { neg += _pv[ix]; // see above // eneg += _pv[ix].perp(thrustAxis()); eneg += _pv[ix].vect().cross(thrustAxis()).mag(); } pden += _pv[ix].vect().mag(); } // denominator and masses Energy2 den(sqr(pos.e()+neg.e())); _mPlus = pos.m2()/den; _mMinus = neg.m2()/den; if (_mPlus < _mMinus) swap(_mPlus, _mMinus); // jet broadening _bPlus = 0.5*epos/pden; _bMinus = 0.5*eneg/pden; if (_bPlus < _bMinus) swap(_bPlus, _bMinus); } vector EventShapes::eigenvalues(const double T[3][3]) { // b, c, d are the coefficients of the characteristic polynomial, // a lambda^3 + b lambda^2 + c lambda + d // where a is chosen to be +1. double t11, t12, t13, t22, t23, t33; t11 = T[0][0]; t12 = T[0][1]; t13 = T[0][2]; t22 = T[1][1]; t23 = T[1][2]; t33 = T[2][2]; double b = -(t11 + t22 + t33); double c = t11*t22 + t11*t33 + t22*t33 - sqr(t12) - sqr(t13) - sqr(t23); double d = - t11*t22*t33 - 2.*t12*t23*t13 + t11*sqr(t23) + t22*sqr(t13) + t33*sqr(t12); // use Cardano's formula to compute the zeros double p = (3.*c - sqr(b))/3.; double q = (2.*sqr(b)*b - 9.*b*c + 27.*d)/27.; // check diskriminant to double precision vector lambda; if (4.*p*sqr(p) + 27.*sqr(q) > 2.0e-16) { for (unsigned int i=0; i<3; ++i) { lambda.push_back(-1.); } cerr << "EventShapes::eigenvalues: found D = " << 4.*p*sqr(p) + 27.*sqr(q) << " > 0! No real Eigenvalues!\n"; } else { // get solutions double alpha = acos(-q/2.*sqrt(-27./(p*p*p)))/3.; double w = sqrt(-4.*p/3.); lambda.push_back(w*cos(alpha) - b/3.); lambda.push_back(-w*cos(alpha+M_PI/3.) - b/3.); lambda.push_back(-w*cos(alpha-M_PI/3.) - b/3.); } // sort according to size of eigenvalues // such that lambda[0] > lambda[1] > lambda[2] if (lambda[0] < lambda[1]) { swap(lambda[0], lambda[1]); } if (lambda[0] < lambda[2]) { swap(lambda[0], lambda[2]); } if (lambda[1] < lambda[2]) { swap(lambda[1], lambda[2]); } return lambda; } Axis EventShapes::eigenvector(const double T[3][3], const double &lam) { // set up matrix of system to be solved double a11, a12, a13, a23, a33; a11 = T[0][0] - lam; a12 = T[0][1]; a13 = T[0][2]; a23 = T[1][2]; a33 = T[2][2] - lam; // intermediate steps from gauss type algorithm double b1, b2, b4; b1 = a11*a33 - sqr(a13); b2 = a12*a33 - a13*a23; b4 = a11*a23 - a12*a13; // eigenvector Axis u(b2, -b1, b4); return u.unit(); } vector EventShapes:: eigenvectors(const double T[3][3], const vector &lam) { vector n; for (unsigned int i=0; i<3; ++i) { n.push_back(eigenvector(T, lam[i])); } return n; } void EventShapes::diagonalizeTensors(bool linear, bool cmboost) { // initialize double Theta[3][3]; for(int i=0; i<3; ++i) { for(int j=0; j<3; ++j) { Theta[i][j] = 0.0; } } double sum = 0.; Momentum3 sumvec; vector lam; vector n; // get cm-frame Lorentz5Momentum pcm = Lorentz5Momentum(); Boost beta; if (cmboost) { for(unsigned int ix=0;ix<_pv.size();++ix) { pcm += _pv[ix]; } beta = pcm.findBoostToCM(); } // get Theta_ij for(unsigned int ix=0;ix<_pv.size();++ix) { Lorentz5Momentum dum(_pv[ix]); if (cmboost) { dum.boost( beta ); } Momentum3 pvec = dum.vect(); double pvec_MeV[3] = {pvec.x()/MeV, pvec.y()/MeV, pvec.z()/MeV}; if (pvec.mag() > ZERO) { sumvec += pvec; if (linear) { sum += pvec.mag()*UnitRemoval::InvE; } else { sum += pvec.mag2()*UnitRemoval::InvE2; } for(int i=0; i<3; ++i) { for(int j=i; j<3; ++j) { if (linear) { Theta[i][j] += (pvec_MeV[i])*(pvec_MeV[j])*MeV/(pvec.mag()); } else { Theta[i][j] += (pvec_MeV[i])*(pvec_MeV[j]); } } } } } for(int i=0; i<3; ++i) { for(int j=0; j<3; ++j) { Theta[i][j] /= sum; } } // diagonalize it lam = eigenvalues(Theta); n = eigenvectors(Theta, lam); if (linear) { _linTen = lam; _linTenAxis = n; } else { _spher = lam; _spherAxis = n; } } void EventShapes::calculateThrust() { // explicitly calculate in units of MeV // algorithm based on Brandt/Dahmen Z Phys C1 (1978) // and 'tasso' code from HERWIG // assumes all momenta in cm system, no explicit boost performed here! // unlike for C and D _thrust.clear(); _thrustAxis.clear(); if (_pv.size() < 2) { for (int i=0; i<3; ++i) { _thrust.push_back(-1); _thrustAxis.push_back(Axis()); } return; } // thrust vector p; Energy psum = ZERO; for(unsigned int l=0; l<_pv.size(); ++l) { p.push_back(_pv[l].vect()); psum += p.back().mag(); } Axis axis; if (p.size() == 2) { _thrust.push_back(1.0); _thrust.push_back(0.0); _thrust.push_back(0.0); axis = p[0].unit(); if (axis.z() < 0) axis = -axis; _thrustAxis.push_back(axis); _thrustAxis.push_back(axis.orthogonal()); axis = _thrustAxis[0].cross(_thrustAxis[1]); return; } if (p.size() == 3) { if (p[0].mag2() < p[1].mag2()) swap(p[0], p[1]); if (p[0].mag2() < p[2].mag2()) swap(p[0], p[2]); if (p[1].mag2() < p[2].mag2()) swap(p[1], p[2]); // thrust axis = p[0].unit(); if (axis.z() < 0) axis = -axis; _thrust.push_back(2.*p[0].mag()/psum); _thrustAxis.push_back(axis); // major axis = (p[1] - (axis*p[1])*axis).unit(); if (axis.x() < 0) axis = -axis; _thrust.push_back((abs(p[1]*axis) + abs(p[2]*axis))/psum); _thrustAxis.push_back(axis); // minor _thrust.push_back(0.0); axis = _thrustAxis[0].cross(_thrustAxis[1]); _thrustAxis.push_back(axis); return; } // ACHTUNG special case with >= 4 coplanar particles will still fail. // probably not too important... Energy2 val; calcT(p, val, axis); _thrust.push_back(sqrt(val)/psum); if (axis.z() < 0) axis = -axis; _thrustAxis.push_back(axis.unit()); //major Momentum3 par; for (unsigned int l=0; l<_pv.size(); ++l) { par = (p[l]*axis.unit())*axis.unit(); p[l] = p[l] - par; } calcM(p, val, axis); _thrust.push_back(sqrt(val)/psum); if (axis.x() < 0) axis = -axis; _thrustAxis.push_back(axis.unit()); // minor if (_thrustAxis[0]*_thrustAxis[1] < 1e-10) { Energy eval = ZERO; axis = _thrustAxis[0].cross(_thrustAxis[1]); _thrustAxis.push_back(axis); for (unsigned int l=0; l<_pv.size(); ++l) eval += abs(axis*_pv[l].vect()); _thrust.push_back(eval/psum); } else { _thrust.push_back(-1.0); _thrustAxis.push_back(Axis()); } } void EventShapes::calcT(const vector &p, Energy2 &t, Axis &taxis) { Energy2 tval; t = ZERO; ThreeVector tv; Momentum3 ptot; vector cpm; for (unsigned int k=1; k < p.size(); ++k) { for (unsigned int j=0; j ZERO) { ptot += p[l]; } else { ptot -= p[l]; } } } cpm.clear(); cpm.push_back(ptot-p[j]-p[k]); cpm.push_back(ptot-p[j]+p[k]); cpm.push_back(ptot+p[j]-p[k]); cpm.push_back(ptot+p[j]+p[k]); for (vector::iterator it = cpm.begin(); it != cpm.end(); ++it) { tval = it->mag2(); if (tval > t) { t = tval; taxis = it->unit(); } } } } } void EventShapes::calcM(const vector &p, Energy2 &m, Axis &maxis) { Energy2 mval; m = ZERO; Momentum3 tv, ptot; vector cpm; for (unsigned int j=0; j < p.size(); ++j) { tv = p[j]; ptot = Momentum3(); for (unsigned int l=0; l ZERO) { ptot += p[l]; } else { ptot -= p[l]; } } } cpm.clear(); cpm.push_back(ptot-p[j]); cpm.push_back(ptot+p[j]); for (vector::iterator it = cpm.begin(); it != cpm.end(); ++it) { mval = it->mag2(); if (mval > m) { m = mval; maxis = it->unit(); } } } } void EventShapes::bookEEC(vector & hi) { // hi is the histogram. It is understood that hi.front() contains // the bin [-1 < cos(chi) < -1+delta] and hi.back() the bin [1-delta // < cos(chi) < 1]. Here, delta = 2/hi.size(). Energy Evis(ZERO); for (unsigned int bin = 0; bin < hi.size(); ++bin) { double delta = 2./hi.size(); double coschi = -1+bin*delta; if (_pv.size() > 1) { for (unsigned int i = 0; i < _pv.size()-1; ++i) { Evis += _pv[i].e(); for (unsigned int j = i+1; j < _pv.size(); ++j) { double diff = abs(coschi-cos( _pv[i].vect().angle(_pv[j].vect()) )); if (delta > diff) hi[bin] += _pv[i].e()*_pv[j].e() / MeV2; } } } hi[bin] /= (Evis*Evis) / MeV2; } } herwig++-2.6.0.orig/Analysis/IdentifiedParticleAnalysis.h0000644000175000017500000002502211754474773024167 0ustar sylvestresylvestre// -*- C++ -*- // // IdentifiedParticleAnalysis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IdentifiedParticleAnalysis_H #define HERWIG_IdentifiedParticleAnalysis_H // // This is the declaration of the IdentifiedParticleAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/Utilities/Histogram.h" #include "ThePEG/Vectors/Lorentz5Vector.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * The IdentifiedParticleAnalysis class produces various identified particle spectra * compared to LEP data. * * @see \ref IdentifiedParticleAnalysisInterfaces "The interfaces" * defined for IdentifiedParticleAnalysis. */ class IdentifiedParticleAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); public: /** * 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: /** * Work out the flavour of the quarks produced */ int getFlavour(const tPVector &); double getX(const Lorentz5Momentum & p, const Energy & Ebeam) { return Ebeam > ZERO ? double(p.vect().mag()/Ebeam) : -1.; } protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initIdentifiedParticleAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IdentifiedParticleAnalysis & operator=(const IdentifiedParticleAnalysis &); private: /** * Single particle spectra */ //@{ /** * Histogram for the \f$\xi\f$ distribution for all particles from all quarks */ HistogramPtr _xpa; /** * Histogram for the \f$\xi\f$ distribution for all particles from light quarks */ HistogramPtr _xpl; /** * Histogram for the \f$\xi\f$ distribution for all particles from charm quarks */ HistogramPtr _xpc; /** * Histogram for the \f$\xi\f$ distribution for all particles from bottom quarks */ HistogramPtr _xpb; /** * Histogram for the \f$\xi\f$ distribution for charged pions from all quarks */ HistogramPtr _pipma; /** * Histogram for the \f$\xi\f$ distribution for charged pions from light quarks */ HistogramPtr _pipml; /** * Histogram for the \f$\xi\f$ distribution for charged pions from charm quarks */ HistogramPtr _pipmc; /** * Histogram for the \f$\xi\f$ distribution for charged pions from bottom quarks */ HistogramPtr _pipmb; /** * Histogram for the \f$\xi\f$ distribution for charged pions from OPAL */ HistogramPtr _pipm; /** * Histogram for the \f$\xi\f$ distribution for charged kaons from all quarks */ HistogramPtr _kpma; /** * Histogram for the \f$\xi\f$ distribution for charged kaons from light quarks */ HistogramPtr _kpml; /** * Histogram for the \f$\xi\f$ distribution for charged kaons from charm quarks */ HistogramPtr _kpmc; /** * Histogram for the \f$\xi\f$ distribution for charged kaons from bottom quarks */ HistogramPtr _kpmb; /** * Histogram for the \f$\xi\f$ distribution for charged kaons from OPAL */ HistogramPtr _kpm; /** * Histogram for the \f$\xi\f$ distribution for protons from all quarks */ HistogramPtr _ppma; /** * Histogram for the \f$\xi\f$ distribution for protons from light quarks */ HistogramPtr _ppml; /** * Histogram for the \f$\xi\f$ distribution for protons from charm quarks */ HistogramPtr _ppmc; /** * Histogram for the \f$\xi\f$ distribution for protons from bottom quarks */ HistogramPtr _ppmb; /** * Histogram for the \f$\xi\f$ distribution for protons from OPAL */ HistogramPtr _ppm; /** * Histogram for the \f$x\f$ distribution for light quark events (lin) */ HistogramPtr _udsxp; /** * Histogram for the \f$\xi\f$ distribution for light quark events (lin) */ HistogramPtr _udsxip; /** * Histogram for the \f$\xi\f$ distribution for \f$\Lambda\f$ */ HistogramPtr _lpm; /** * Histogram for the ALEPH \f$K^{*\pm}\f$ \f$x\f$distribution */ HistogramPtr _xpKstarplus; /** * Histogram for the OPAL \f$\Xi^-\f$ \f$x\f$ distribution */ HistogramPtr _xpXiminus; /** * Histogram for the OPAL \f$\Xi^-\f$ \f$\xi\f$ distribution */ HistogramPtr _xiXiminus; /** * Histogram for the OPAL \f$\Sigma^{*+}\f$ \f$x\f$ distribution */ HistogramPtr _xpSigmaplus; /** * Histogram for the OPAL \f$\Sigma^{*+}\f$ \f$\xi\f$ distribution */ HistogramPtr _xiSigmaplus; /** * Histogram for the OPAL \f$\Sigma^{*-}\f$ \f$x\f$ distribution */ HistogramPtr _xpSigmaminus; /** * Histogram for the OPAL \f$\Sigma^{*-}\f$ \f$\xi\f$ distribution */ HistogramPtr _xiSigmaminus; /** * Histogram for the OPAL \f$\Xi^{*0}\f$ \f$x\f$ distribution */ HistogramPtr _xpXi0; /** * Histogram for the OPAL \f$\Xi^{*0}\f$ \f$\xi\f$ distribution */ HistogramPtr _xiXi0; /** * Histogram for \f$\Lambda(1520)\f$ \f$x\f$ distribution */ HistogramPtr _xpLambda1520; /** * Histogram for \f$\Lambda(1520)\f$ \f$\xi\f$ distribution */ HistogramPtr _xiLambda1520; /** * Histogram for \f$\Delta^{++}\f$ \f$x\f$ distribution */ HistogramPtr _xeDelta; /** * Histogram for \f$f_0(980)\f$ \f$x\f$ distribution */ HistogramPtr _xpf980; /** * Histogram for \f$\phi\f$ \f$x\f$ distribution */ HistogramPtr _xpphi; /** * Histogram for \f$f_2\f$ \f$x\f$ distribution */ HistogramPtr _xpf2; /** * Histogram for \f$K^{*0}\f$ \f$x\f$ distribution */ HistogramPtr _xpKstar0; /** * Histogram for \f$K^0\f$ \f$x\f$ distribution */ HistogramPtr _xpK0; /** * Histogram for \f$\rho^0\f$ \f$x\f$ distribution */ HistogramPtr _xerho0; /** * Histogram for the OPAL \f$\pi^0\f$ \f$x\f$ distribution */ HistogramPtr _xepi0; /** * Histogram for the OPAL \f$\pi^0\f$ \f$\xi\f$ distribution */ HistogramPtr _xipi0; /** * Histogram for the OPAL \f$\eta\f$ \f$x\f$ distribution */ HistogramPtr _xeeta; /** * Histogram for the OPAL \f$\eta'\f$ \f$\xi\f$ distribution */ HistogramPtr _xieta; /** * Histogram for the OPAL \f$\eta\f$ \f$x\f$ distribution */ HistogramPtr _xeetap; /** * Histogram for the OPAL \f$\eta'\f$ \f$\xi\f$ distribution */ HistogramPtr _xietap; /** * Histogram for the OPAL \f$\omega\f$ \f$x\f$ distribution */ HistogramPtr _xeomega; /** * Histogram for the OPAL \f$\omega'\f$ \f$\xi\f$ distribution */ HistogramPtr _xiomega; /** * Histogram for the OPAL \f$\rho^+\f$ \f$x\f$ distribution */ HistogramPtr _xerhop; /** * Histogram for the OPAL \f$\rho^+\f$ \f$\xi\f$ distribution */ HistogramPtr _xirhop; /** * Histogram for the OPAL \f$a_0^+\f$ \f$x\f$ distribution */ HistogramPtr _xea_0p; /** * Histogram for the OPAL \f$a_0^+\f$ \f$\xi\f$ distribution */ HistogramPtr _xia_0p; /** * Histogram for \f$D^0\f$ \f$x\f$ distribution */ HistogramPtr _xeD0; /** * Histogram for \f$D^{*+}\f$ \f$x\f$ distribution */ HistogramPtr _xeDstar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of IdentifiedParticleAnalysis. */ template <> struct BaseClassTrait { /** Typedef of the first base class of IdentifiedParticleAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the IdentifiedParticleAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::IdentifiedParticleAnalysis"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the IdentifiedParticleAnalysis class and any other class on which it depends * (except the base class). */ static string library() { return "HwAnalysis.so HwLEPAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_IdentifiedParticleAnalysis_H */ herwig++-2.6.0.orig/Analysis/LEPBMultiplicity.cc0000644000175000017500000001314111754474773022223 0ustar sylvestresylvestre// -*- C++ -*- // // LEPBMultiplicity.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the LEPBMultiplicity class. // #include "LEPBMultiplicity.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "Herwig++/Utilities/StandardSelectors.h" using namespace Herwig; using namespace ThePEG; BranchingInfo::BranchingInfo(double inmult,double inerror) : obsBranching(inmult), obsError(inerror), actualCount(0), sumofsquares(0.0) {} double BranchingInfo::simBranching(long N, BranchingInfo den) { return den.actualCount>0 ? double(actualCount) / double(den.actualCount) : double(actualCount) / double(N) ; } double BranchingInfo::simError(long N, BranchingInfo den) { double rn = N*( sumofsquares/double(N) - sqr(simBranching(N))) / sqr(double(actualCount)); double rd = den.actualCount>0 ? N*( den.sumofsquares/double(N) - sqr(den.simBranching(N))) / sqr(double(den.actualCount)) : 0.; return simBranching(N,den)*sqrt(rn+rd); } double BranchingInfo::nSigma(long N,BranchingInfo den) { return obsBranching == 0.0 ? 0.0 : (simBranching(N,den) - obsBranching) / sqrt(sqr(simError(N,den)) + sqr(obsError)); } string BranchingInfo::bargraph(long N, BranchingInfo den) { if (obsBranching == 0.0) return " ? "; else if (nSigma(N,den) >= 6.0) return "-----|---->"; else if (nSigma(N,den) >= 5.0) return "-----|----*"; else if (nSigma(N,den) >= 4.0) return "-----|---*-"; else if (nSigma(N,den) >= 3.0) return "-----|--*--"; else if (nSigma(N,den) >= 2.0) return "-----|-*---"; else if (nSigma(N,den) >= 1.0) return "-----|*----"; else if (nSigma(N,den) > -1.0) return "-----*-----"; else if (nSigma(N,den) > -2.0) return "----*|-----"; else if (nSigma(N,den) > -3.0) return "---*-|-----"; else if (nSigma(N,den) > -4.0) return "--*--|-----"; else if (nSigma(N,den) > -5.0) return "-*---|-----"; else if (nSigma(N,den) > -6.0) return "*----|-----"; else return "<----|-----"; } LEPBMultiplicity::LEPBMultiplicity() { // B+ _data[521 ] = BranchingInfo(0.403, 0.009); // B_s _data[531 ] = BranchingInfo(0.103, 0.009); // baryons _data[5122] = BranchingInfo(0.091, 0.015); // b's _data[5] = BranchingInfo(0. , 0. ); } void LEPBMultiplicity::analyze(tEventPtr event, long , int , int ) { // extract the weakly decaying B hadrons using set to avoid double counting set particles; map eventcount; StepVector steps = event->primaryCollision()->steps(); steps[0]->select(inserter(particles), ThePEG::AllSelector()); unsigned int nb=0; for(set::const_iterator cit=particles.begin();cit!=particles.end();++cit) { if(abs((*cit)->id())==ParticleID::b) ++nb; } if(nb!=0) eventcount.insert(make_pair(5,nb)); particles.clear(); event->select(inserter(particles),WeakBHadronSelector()); for(set::const_iterator it = particles.begin(); it != particles.end(); ++it) { long ID = abs( (*it)->id() ); //special for b baryons if(ID!=511&&ID!=521&&ID!=531) ID=5122; if (_data.find(ID) != _data.end()) { eventcount.insert(make_pair(ID,0)); ++eventcount[ID]; } } for(map::const_iterator it = eventcount.begin(); it != eventcount.end(); ++it) { _data[it->first].actualCount += it->second; _data[it->first].sumofsquares += sqr(double(it->second)); } } NoPIOClassDescription LEPBMultiplicity::initLEPBMultiplicity; // Definition of the static class description member. void LEPBMultiplicity::Init() { static ClassDocumentation documentation ("The LEP B multiplicity analysis.", "The LEP B multiplicity analysis uses data from PDG 2006 \\cite{Yao:2006px}.", "%\\cite{Yao:2006px}\n" "\\bibitem{Yao:2006px}\n" " W.~M.~Yao {\\it et al.} [Particle Data Group],\n" " %``Review of particle physics,''\n" " J.\\ Phys.\\ G {\\bf 33} (2006) 1.\n" " %%CITATION = JPHGB,G33,1;%%\n" ); } void LEPBMultiplicity::dofinish() { useMe(); string filename = generator()->filename() + ".Bmult"; ofstream outfile(filename.c_str()); outfile << "\nB branching fraction (compared to LEP data):\n" " ID Name simMult obsMult obsErr Sigma\n"; long N = generator()->currentEventNumber() - 1; BranchingInfo den = _data[5]; for (map::const_iterator it = _data.begin(); it != _data.end(); ++it) { if(it->first==5) continue; BranchingInfo multiplicity = it->second; string name = (it->first==5122 ? "b baryons" : generator()->getParticleData(it->first)->PDGName() ) +" "; ios::fmtflags oldFlags = outfile.flags(); outfile << std::scientific << std::showpoint << std::setprecision(3) << setw(7) << it->first << ' ' << setw(9) << name << ' ' << setw(2) << multiplicity.simBranching(N,den) << " | " << setw(2) << multiplicity.obsBranching << " +/- " << setw(2) << multiplicity.obsError << ' ' << std::showpos << std::setprecision(1) << multiplicity.nSigma(N,den) << ' ' << multiplicity.bargraph(N,den) << std::noshowpos; outfile << '\n'; outfile.flags(oldFlags); } } herwig++-2.6.0.orig/Analysis/LEPJetAnalysis.h0000644000175000017500000001376111754474773021531 0ustar sylvestresylvestre// -*- C++ -*- // // LEPJetAnalysis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_LEPJetAnalysis_H #define HERWIG_LEPJetAnalysis_H // // This is the declaration of the LEPJetAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * The LEPJetAnalysis class compares the results of Heriwg++ with LEP data for * various jet distributions. * * @see \ref LEPJetAnalysisInterfaces "The interfaces" * defined for LEPJetAnalysis. */ class LEPJetAnalysis: public AnalysisHandler { public: /// Default constructor LEPJetAnalysis() : _nevent() {} /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription initLEPJetAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ LEPJetAnalysis & operator=(const LEPJetAnalysis &); private: /** * Histograms ofr the \f$y\f$ distributions */ //@{ /** * \f$y_{23}\f$ */ HistogramPtr _y23; /** * \f$y_{34}\f$ */ HistogramPtr _y34; /** * \f$y_{45}\f$ */ HistogramPtr _y45; /** * \f$y_{56}\f$ */ HistogramPtr _y56; //@} /** * Bins for the y fractions */ vector _yc_frac; /** * Points for the y fractions */ //@{ /** * 1 jet */ vector _frac1; /** * 2 jet */ vector _frac2; /** * 3 jet */ vector _frac3; /** * 4 jet */ vector _frac4; /** * 5 jet */ vector _frac5; /** * 6 jet */ vector _frac6; //@} /** * Number of events analysed */ unsigned int _nevent; /** * N jet distribution */ vector _njet; /** * For different jet rates */ //@{ /** * Differential two jet rate */ vector _d2dbins; /** * Differential three jet rate */ vector _d3dbins; /** * Differential four jet rate */ vector _d4dbins; /** * differential 2->2 */ vector _d2dN2; /** * differential 3->2 */ vector _d3dN2; /** * differential 3->2 */ vector _d3dN3; /** * differential 4->2 */ vector _d4dN2; /** * differential 4->3 */ vector _d4dN3; /** * differential 4->4 */ vector _d4dN4; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of LEPJetAnalysis. */ template <> struct BaseClassTrait { /** Typedef of the first base class of LEPJetAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the LEPJetAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::LEPJetAnalysis"; } /** * The name of a file containing the dynamic library where the class * LEPJetAnalysis is implemented. It may also include several, space-separated, * libraries if the class LEPJetAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "libfastjet.so HwLEPJetAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_LEPJetAnalysis_H */ herwig++-2.6.0.orig/Analysis/BELLECharmAnalysis.h0000644000175000017500000001545711754474773022250 0ustar sylvestresylvestre// -*- C++ -*- // // BELLECharmAnalysis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_BELLECharmAnalysis_H #define HERWIG_BELLECharmAnalysis_H // // This is the declaration of the BELLECharmAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * The BELLECharmAnalysis class is designed to compared the results of * Herwig++ at 10.52 GeV with data from the BELLE experiment. * * @see \ref BELLECharmAnalysisInterfaces "The interfaces" * defined for BELLECharmAnalysis. */ class BELLECharmAnalysis: public AnalysisHandler { public: /** * The default constructor. */ BELLECharmAnalysis() : _s(), _onshell(false), _ratioDstar(), _ratioDs(), _ratioLambda(), _weight() {} /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initBELLECharmAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BELLECharmAnalysis & operator=(const BELLECharmAnalysis &); private: /** * CMS energy squared */ Energy2 _s; /** * Whether this is on-shell or continuum */ bool _onshell; /** * Histogram for \f$D^{*+}\f$ */ HistogramPtr _histDstarplus; /** * Histogram for \f$D^{*0}\f$ */ HistogramPtr _histDstar0; /** * Histogram for \f$D^0\f$ */ HistogramPtr _histD0; /** * Histogram for \f$D^+\f$ */ HistogramPtr _histDplus; /** * Histogram for \f$D^+_s\f$ */ HistogramPtr _histDs; /** * Histogram for \f$\Lambda_c^+\f$ */ HistogramPtr _histLambda; /** * Ratios */ //@{ /** * Ratio for \f$D^{*0}+D^{*+}\f$ */ double _ratioDstar; /** * Ratio for \f$D_s\f$ */ double _ratioDs; /** * Ratio for \f$\Lambda_c^+\f$ */ double _ratioLambda; //@} /** * Statistics for the ratios */ //@{ /** * Statistics for \f$D^0+D^+\f$ */ Statistic _statD; /** * Statistics for \f$D^{*0}+D^{*+}\f$ */ Statistic _statDstar; /** * Statistics for \f$D_s\f$ */ Statistic _statDs; /** * Statistics for \f$\Lambda_c^+\f$ */ Statistic _statLambda; //@} /** * The weight for an event */ double _weight; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of BELLECharmAnalysis. */ template <> struct BaseClassTrait { /** Typedef of the first base class of BELLECharmAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the BELLECharmAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::BELLECharmAnalysis"; } /** * The name of a file containing the dynamic library where the class * BELLECharmAnalysis is implemented. It may also include several, space-separated, * libraries if the class BELLECharmAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwAnalysis.so HwLEPAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_BELLECharmAnalysis_H */ herwig++-2.6.0.orig/Analysis/BFragmentationAnalysisHandler.cc0000644000175000017500000002301511754474773024773 0ustar sylvestresylvestre// -*- C++ -*- // // BFragmentationAnalysisHandler.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the BFragmentationAnalysisHandler class. // #include "BFragmentationAnalysisHandler.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Event.h" #include "Herwig++/Utilities/StandardSelectors.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void BFragmentationAnalysisHandler::analyze(tEventPtr event, long, int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; double weight = event->weight(); /////////////////////////// // Hadron Level Analysis // /////////////////////////// // extract the weakly decaying B hadrons using set to avoid double counting set allParticles; event->select(inserter(allParticles),WeakBHadronSelector()); // convert to vector tPVector particles(allParticles.begin(),allParticles.end()); // numerator _emax = 0.5*generator()->maximumCMEnergy(); analyze(particles,weight); //////////////////////////////////////// // Parton Level Analysis (e+e-->bbar) // //////////////////////////////////////// // Get all the particles from the perturbative bit of the events. Find the // b and bbar coming straight out of the Z/photon (b_orig, bbar_orig and // ZGamma respectively). Then go and find the b and bbar that have their // maximal off-shellness i.e. just before the first gluon is emitted. // Finally go off down the b quark lines to find the b's just before they // hadronize (b_end and bbar_end respectively). ParticleSet pert=event->primaryCollision()->step(1)->all(); analyze_bquarks(pert,weight); } void BFragmentationAnalysisHandler::analyze(tPPtr part, double weight) { _fragBxE ->addWeighted(part->momentum().e()/_emax, weight); _fragBxEa->addWeighted(part->momentum().e()/_emax, weight); } void BFragmentationAnalysisHandler::analyze_bquarks(ParticleSet pert, double weight) { ParticleSet::const_iterator pit; PPtr b_orig,bbar_orig,ZGamma,b_start,bbar_start,b_end,bbar_end; // First go through all the particles looking for b's coming out of Z/gamma's: for(pit=pert.begin();pit!=pert.end();++pit) { PPtr bline = *pit; if(abs((*pit)->id())==5) { while(abs(bline->parents()[0]->id())==5) bline=bline->parents()[0]; } if(bline->id()== 5&&(bline->parents()[0]->id()!=21)) b_orig = bline; if(bline->id()==-5&&(bline->parents()[0]->id()!=21)) bbar_orig = bline; } if(!b_orig) return; if(!bbar_orig) return; // Note down the Z/Photon that decays to the b & bbar: if(b_orig->parents()[0]==bbar_orig->parents()[0]) ZGamma = b_orig->parents()[0]; PPtr root_b[] = {b_orig,bbar_orig}; // Now go and look for the b & bbar just before the first gluon is emitted: for(int ix=0;ix<=1;ix++) { while(root_b[ix]->momentum().m()<= getParticleData(ParticleID::b)->mass()+1.e-8*GeV) { for(unsigned int jx=0;jxchildren().size();jx++) if(root_b[ix]->id()==root_b[ix]->children()[jx]->id()) root_b[ix]=root_b[ix]->children()[jx]; } } b_start = root_b[0]; bbar_start = root_b[1]; // Now go and find the b and bbar quarks at the end of the shower before // they turn into hadrons. for(unsigned int ix=0;ix<=1;ix++) { while(root_b[ix]->momentum().m()>= getParticleData(ParticleID::b)->constituentMass()+1.e-8*GeV) { for(unsigned int jx=0;jxchildren().size();jx++) if(root_b[ix]->id()==root_b[ix]->children()[jx]->id()) root_b[ix]=root_b[ix]->children()[jx]; } } b_end = root_b[0]; bbar_end = root_b[1]; // Fill the energy fraction histograms with that of the b quarks. _fragbquarkxE -> addWeighted( b_end->momentum().e()/_emax ,weight); _fragbquarkxE -> addWeighted( bbar_end->momentum().e()/_emax,weight); _fragbquarkjetmass -> addWeighted( b_start->momentum().m()/GeV ,weight); _fragbquarkjetmass -> addWeighted( bbar_start->momentum().m()/GeV,weight); } NoPIOClassDescription BFragmentationAnalysisHandler::initBFragmentationAnalysisHandler; // Definition of the static class description member. void BFragmentationAnalysisHandler::Init() { static ClassDocumentation documentation ("The BFragmentationAnalysisHandler class performs analysis" " of the B fragmentation function", "The B fragmentation function analysis uses data from \\cite{Heister:2001jg,Abe:2002iq}.", " %\\cite{Heister:2001jg}\n" "\\bibitem{Heister:2001jg}\n" " A.~Heister {\\it et al.} [ALEPH Collaboration],\n" " %``Study of the fragmentation of b quarks into B mesons at the Z peak,''\n" " Phys.\\ Lett.\\ B {\\bf 512}, 30 (2001)\n" " [arXiv:hep-ex/0106051].\n" " %%CITATION = PHLTA,B512,30;%%\n" "%\\cite{Abe:2002iq}\n" "\\bibitem{Abe:2002iq}\n" " K.~Abe {\\it et al.} [SLD Collaboration],\n" " %``Measurement of the b-quark fragmentation function in Z0 decays,''\n" " Phys.\\ Rev.\\ D {\\bf 65}, 092006 (2002)\n" " [Erratum-ibid.\\ D {\\bf 66}, 079905 (2002)]\n" " [arXiv:hep-ex/0202031].\n" " %%CITATION = PHRVA,D65,092006;%%\n" ); } void BFragmentationAnalysisHandler::dofinish() { useMe(); AnalysisHandler::dofinish(); // output the histograms string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; double chisq,minfrac=0.05; unsigned int npoint; _fragBxE->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD b hadron fragmentation " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _fragBxE->topdrawOutput(output,Frame|Errorbars, "RED", "B Hadron fragmentation function compared to SLD data", " ", "1/SdS/dx0B1", " G G X X", "x0B1", " X X"); _fragBxEa->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for ALEPH b hadron fragmentation " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _fragBxEa->topdrawOutput(output,Frame|Errorbars, "RED", "B Hadron framgentation function compared to ALEPH data", " ", "1/SdS/dx0B1", " G G X X", "x0B1", " X X"); _fragbquarkxE->topdrawOutput(output,Frame|Smooth, "RED", "b quark fragmentation function", " ", "1/SdS/dx0B1", " G G X X", "x0B1", " X X"); _fragbquarkjetmass->topdrawOutput(output,Frame|Smooth, "RED", "b quark jet mass", " ", "1/SdS/dm0J1223", " G G X XX X", "m0J1223", " X XX X"); output.close(); } void BFragmentationAnalysisHandler::doinitrun() { AnalysisHandler::doinitrun(); // SLD binning double BxEbins[] = {0.00, 0.04, 0.08, 0.12, 0.16, 0.20, 0.24, 0.28, 0.32, 0.36, 0.40, 0.44, 0.48, 0.52, 0.56, 0.60, 0.64, 0.68, 0.72, 0.76, 0.80, 0.84, 0.88, 0.92, 0.96, 1.0}; double BxEdata[] = {0.000,0.000,0.000,0.116,0.198, 0.247,0.264,0.308,0.370,0.426, 0.501,0.577,0.685,0.833,1.055, 1.311,1.667,2.080,2.566,2.934, 3.104,2.856,1.954,0.841,0.108}; double BxEerror[]= {0.000,0.000,0.000,0.030,0.037, 0.030,0.029,0.032,0.033,0.034, 0.039,0.041,0.042,0.053,0.074, 0.089,0.088,0.084,0.116,0.178, 0.235,0.179,0.162,0.215,0.062}; vector bins(BxEbins,BxEbins+26), data(BxEdata,BxEdata+25), error(BxEerror,BxEerror+25); _fragBxE = new_ptr(Histogram(bins,data,error)); // ALEPH binning double BxEabins[] = {0.0 ,0.1 ,0.25 ,0.35 ,0.45 , 0.55 ,0.6 ,0.65 ,0.7 ,0.725 , 0.75 ,0.775 ,0.8 ,0.825 ,0.85 , 0.875 ,0.9 ,0.925 ,0.95 ,0.975 , 1.}; double BxEadata[] = {0.0000,0.1193,0.2810,0.4510,0.7410, 1.0180,1.2760,1.7020,2.1080,2.3520, 2.5360,2.7960,2.9840,3.1000,2.9080, 2.6440,2.0880,1.3480,0.4840,0.0400}; double BxEaerrora[] = {0.0000,0.0487,0.0470,0.0390,0.0590, 0.0660,0.0640,0.0660,0.0760,0.0840, 0.0920,0.1040,0.1080,0.1000,0.0880, 0.0880,0.1160,0.1240,0.0760,0.0120}; double BxEaerrorb[] = {0.0000,0.0573,0.0350,0.0430,0.0660, 0.0680,0.0640,0.0740,0.0960,0.1120, 0.1240,0.1360,0.1320,0.1240,0.1040, 0.1360,0.1880,0.1880,0.1000,0.0200}; double BxEaerror[20]; for(unsigned int ix=0;ix<20;++ix){BxEaerror[ix]=sqrt(sqr(BxEaerrora[ix])+ sqr(BxEaerrorb[ix]));} bins = vector(BxEabins,BxEabins+21); data = vector(BxEadata,BxEadata+20); error = vector(BxEaerror,BxEaerror+20); _fragBxEa = new_ptr(Histogram(bins,data,error)); _fragbquarkxE = new_ptr(Histogram(0.,1.0,100)); _fragbquarkjetmass = new_ptr(Histogram(0.,90.0,90)); } herwig++-2.6.0.orig/Analysis/HiggsJetAnalysis.h0000644000175000017500000001127011754474773022143 0ustar sylvestresylvestre// -*- C++ -*- // // HiggsJetAnalysis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_HiggsJetAnalysis_H #define HERWIG_HiggsJetAnalysis_H // // This is the declaration of the HiggsJetAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * HiggsJetAnalysis assumes that there is one Higgs in the final state * and books some observables computed from its four momentum. It * shouldn't do anything in case there is no Higgs in the event. * * @see \ref HiggsJetAnalysisInterfaces "The interfaces" * defined for HiggsJetAnalysis. */ class HiggsJetAnalysis: public AnalysisHandler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ HiggsJetAnalysis(); //@} public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class without persistent data. */ static NoPIOClassDescription initHiggsJetAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ HiggsJetAnalysis & operator=(const HiggsJetAnalysis &); private: /** * \f$p_T\f$ of the h boson */ Histogram _pth; Histogram _pthZoom; /** * Rapidity of h */ Histogram _raph; /** * Azimuth of h */ Histogram _phih; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of HiggsJetAnalysis. */ template <> struct BaseClassTrait { /** Typedef of the first base class of HiggsJetAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the HiggsJetAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::HiggsJetAnalysis"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the HiggsJetAnalysis class and any other class on which it depends * (except the base class). */ static string library() { return "HwAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_HiggsJetAnalysis_H */ herwig++-2.6.0.orig/Analysis/LEPBMultiplicity.h0000644000175000017500000001370011754474773022066 0ustar sylvestresylvestre// -*- C++ -*- // // LEPBMultiplicity.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_LEPBMultiplicity_H #define HERWIG_LEPBMultiplicity_H // // This is the declaration of the LEPBMultiplicity class. // #include "ThePEG/Handlers/AnalysisHandler.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * Struct for the multiplcity data */ struct BranchingInfo { /** * Default constructor * @param mult The observed multiplcity. * @param error The error on the observed multiplicity */ BranchingInfo(double mult=0.,double error=0.); /** * The observed multiplicity */ double obsBranching; /** * The error on the observed multiplicity */ double obsError; /** * Number of particles of this type */ long actualCount; /** * Sum of squares of number per event for error */ double sumofsquares; /** * The average fraction per quark * @param N The number of events * @param den The denominator to give the fraction */ double simBranching(long N,BranchingInfo den=BranchingInfo()); /** * The error on the average number per event * @param N The number of events * @param den The denominator to give the fraction */ double simError(long N,BranchingInfo den=BranchingInfo()); /** * Is the result more than \f$3\sigma\f$ from the experimental result * @param N The number of events * @param den The denominator to give the fraction */ double nSigma(long N,BranchingInfo den=BranchingInfo()); /** * Plot standard error in a simple barchart * @param N The number of events * @param den The denominator to give the fraction */ string bargraph(long N,BranchingInfo den=BranchingInfo()); }; /** * The LEPBBMultiplicity class is designed to compare the production * rates of \f$B^+\f$, \f$B^0\f$, \f$B^0_s\f$ and B-baryons in * B events at LEP * * @see \ref LEPBMultiplicityInterfaces "The interfaces" * defined for LEPBMultiplicity. */ class LEPBMultiplicity: public AnalysisHandler { public: /** * The default constructor. */ LEPBMultiplicity(); public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription initLEPBMultiplicity; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ LEPBMultiplicity & operator=(const LEPBMultiplicity &); private: /** * Map of PDG codes to multiplicity info */ map _data; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of LEPBMultiplicity. */ template <> struct BaseClassTrait { /** Typedef of the first base class of LEPBMultiplicity. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the LEPBMultiplicity class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::LEPBMultiplicity"; } /** * The name of a file containing the dynamic library where the class * LEPBMultiplicity is implemented. It may also include several, space-separated, * libraries if the class LEPBMultiplicity depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_LEPBMultiplicity_H */ herwig++-2.6.0.orig/Analysis/Makefile.in0000644000175000017500000010411111756461675020623 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ # analysis code which depends on fastjet @WANT_LIBFASTJET_TRUE@am__append_1 = HwLEPJetAnalysis.la subdir = Analysis DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwAnalysis_la_LIBADD = am_HwAnalysis_la_OBJECTS = EventShapes.lo EventShapesMasterAnalysis.lo \ BasicConsistency.lo LEPMultiplicityCount.lo \ LEPBMultiplicity.lo SimpleLHCAnalysis.lo TTbarAnalysis.lo \ LPairAnalysis.lo GammaGammaAnalysis.lo GammaJetAnalysis.lo \ HiggsJetAnalysis.lo DrellYanPT.lo HwAnalysis_la_OBJECTS = $(am_HwAnalysis_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwAnalysis_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwAnalysis_la_LDFLAGS) $(LDFLAGS) \ -o $@ HwLEPAnalysis_la_LIBADD = am_HwLEPAnalysis_la_OBJECTS = BFragmentationAnalysisHandler.lo \ SingleParticleAnalysis.lo LEPEventShapes.lo \ IdentifiedParticleAnalysis.lo BELLECharmAnalysis.lo \ CLEOCharmAnalysis.lo HwLEPAnalysis_la_OBJECTS = $(am_HwLEPAnalysis_la_OBJECTS) HwLEPAnalysis_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwLEPAnalysis_la_LDFLAGS) \ $(LDFLAGS) -o $@ am__DEPENDENCIES_1 = @WANT_LIBFASTJET_TRUE@HwLEPJetAnalysis_la_DEPENDENCIES = \ @WANT_LIBFASTJET_TRUE@ $(am__DEPENDENCIES_1) am__HwLEPJetAnalysis_la_SOURCES_DIST = LEPJetAnalysis.cc \ LEPJetAnalysis.h LEPFourJetsAnalysis.cc LEPFourJetsAnalysis.h @WANT_LIBFASTJET_TRUE@am_HwLEPJetAnalysis_la_OBJECTS = \ @WANT_LIBFASTJET_TRUE@ HwLEPJetAnalysis_la-LEPJetAnalysis.lo \ @WANT_LIBFASTJET_TRUE@ HwLEPJetAnalysis_la-LEPFourJetsAnalysis.lo HwLEPJetAnalysis_la_OBJECTS = $(am_HwLEPJetAnalysis_la_OBJECTS) HwLEPJetAnalysis_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwLEPJetAnalysis_la_LDFLAGS) \ $(LDFLAGS) -o $@ @WANT_LIBFASTJET_TRUE@am_HwLEPJetAnalysis_la_rpath = -rpath \ @WANT_LIBFASTJET_TRUE@ $(pkglibdir) HwTevatronAnalysis_la_LIBADD = am_HwTevatronAnalysis_la_OBJECTS = HwTevatronAnalysis_la-ZpTRun2.lo \ HwTevatronAnalysis_la-ZpTRun1.lo HwTevatronAnalysis_la-Wpt.lo \ HwTevatronAnalysis_la-Zrapidity.lo HwTevatronAnalysis_la_OBJECTS = $(am_HwTevatronAnalysis_la_OBJECTS) HwTevatronAnalysis_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwTevatronAnalysis_la_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwAnalysis_la_SOURCES) $(HwLEPAnalysis_la_SOURCES) \ $(HwLEPJetAnalysis_la_SOURCES) \ $(HwTevatronAnalysis_la_SOURCES) DIST_SOURCES = $(HwAnalysis_la_SOURCES) $(HwLEPAnalysis_la_SOURCES) \ $(am__HwLEPJetAnalysis_la_SOURCES_DIST) \ $(HwTevatronAnalysis_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwAnalysis.la HwLEPAnalysis.la $(am__append_1) \ HwTevatronAnalysis.la HwAnalysis_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 9:2:0 HwAnalysis_la_SOURCES = \ EventShapes.cc EventShapes.fh EventShapes.h \ EventShapesMasterAnalysis.cc EventShapesMasterAnalysis.h \ BasicConsistency.cc BasicConsistency.h \ LEPMultiplicityCount.cc LEPMultiplicityCount.h \ MultiplicityInfo.h \ LEPBMultiplicity.cc\ LEPBMultiplicity.h \ SimpleLHCAnalysis.h SimpleLHCAnalysis.cc\ TTbarAnalysis.h TTbarAnalysis.cc\ LPairAnalysis.h LPairAnalysis.cc\ GammaGammaAnalysis.h GammaGammaAnalysis.cc\ GammaJetAnalysis.h GammaJetAnalysis.cc\ HiggsJetAnalysis.h HiggsJetAnalysis.cc \ DrellYanPT.h DrellYanPT.cc HwLEPAnalysis_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 6:0:0 HwLEPAnalysis_la_SOURCES = \ BFragmentationAnalysisHandler.cc BFragmentationAnalysisHandler.h\ SingleParticleAnalysis.cc SingleParticleAnalysis.h\ LEPEventShapes.cc LEPEventShapes.h\ IdentifiedParticleAnalysis.cc IdentifiedParticleAnalysis.h\ BELLECharmAnalysis.h BELLECharmAnalysis.cc\ CLEOCharmAnalysis.h CLEOCharmAnalysis.cc @WANT_LIBFASTJET_TRUE@HwLEPJetAnalysis_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 8:0:0 @WANT_LIBFASTJET_TRUE@HwLEPJetAnalysis_la_CPPFLAGS = $(AM_CPPFLAGS) $(FASTJETINCLUDE) \ @WANT_LIBFASTJET_TRUE@-I$(FASTJETPATH) @WANT_LIBFASTJET_TRUE@HwLEPJetAnalysis_la_LIBADD = $(FASTJETLIBS) @WANT_LIBFASTJET_TRUE@HwLEPJetAnalysis_la_SOURCES = \ @WANT_LIBFASTJET_TRUE@LEPJetAnalysis.cc LEPJetAnalysis.h\ @WANT_LIBFASTJET_TRUE@LEPFourJetsAnalysis.cc LEPFourJetsAnalysis.h HwTevatronAnalysis_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 1:0:0 HwTevatronAnalysis_la_CPPFLAGS = $(AM_CPPFLAGS) HwTevatronAnalysis_la_SOURCES = \ ZpTRun2.cc ZpTRun2.h \ ZpTRun1.cc ZpTRun1.h \ Wpt.cc Wpt.h \ Zrapidity.cc Zrapidity.h all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Analysis/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Analysis/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwAnalysis.la: $(HwAnalysis_la_OBJECTS) $(HwAnalysis_la_DEPENDENCIES) $(EXTRA_HwAnalysis_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwAnalysis_la_LINK) -rpath $(pkglibdir) $(HwAnalysis_la_OBJECTS) $(HwAnalysis_la_LIBADD) $(LIBS) HwLEPAnalysis.la: $(HwLEPAnalysis_la_OBJECTS) $(HwLEPAnalysis_la_DEPENDENCIES) $(EXTRA_HwLEPAnalysis_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwLEPAnalysis_la_LINK) -rpath $(pkglibdir) $(HwLEPAnalysis_la_OBJECTS) $(HwLEPAnalysis_la_LIBADD) $(LIBS) HwLEPJetAnalysis.la: $(HwLEPJetAnalysis_la_OBJECTS) $(HwLEPJetAnalysis_la_DEPENDENCIES) $(EXTRA_HwLEPJetAnalysis_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwLEPJetAnalysis_la_LINK) $(am_HwLEPJetAnalysis_la_rpath) $(HwLEPJetAnalysis_la_OBJECTS) $(HwLEPJetAnalysis_la_LIBADD) $(LIBS) HwTevatronAnalysis.la: $(HwTevatronAnalysis_la_OBJECTS) $(HwTevatronAnalysis_la_DEPENDENCIES) $(EXTRA_HwTevatronAnalysis_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwTevatronAnalysis_la_LINK) -rpath $(pkglibdir) $(HwTevatronAnalysis_la_OBJECTS) $(HwTevatronAnalysis_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BELLECharmAnalysis.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BFragmentationAnalysisHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BasicConsistency.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CLEOCharmAnalysis.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DrellYanPT.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EventShapes.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EventShapesMasterAnalysis.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GammaGammaAnalysis.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GammaJetAnalysis.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HiggsJetAnalysis.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwLEPJetAnalysis_la-LEPFourJetsAnalysis.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwLEPJetAnalysis_la-LEPJetAnalysis.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwTevatronAnalysis_la-Wpt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwTevatronAnalysis_la-ZpTRun1.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwTevatronAnalysis_la-ZpTRun2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwTevatronAnalysis_la-Zrapidity.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IdentifiedParticleAnalysis.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LEPBMultiplicity.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LEPEventShapes.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LEPMultiplicityCount.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LPairAnalysis.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleLHCAnalysis.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SingleParticleAnalysis.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TTbarAnalysis.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< HwLEPJetAnalysis_la-LEPJetAnalysis.lo: LEPJetAnalysis.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwLEPJetAnalysis_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HwLEPJetAnalysis_la-LEPJetAnalysis.lo -MD -MP -MF $(DEPDIR)/HwLEPJetAnalysis_la-LEPJetAnalysis.Tpo -c -o HwLEPJetAnalysis_la-LEPJetAnalysis.lo `test -f 'LEPJetAnalysis.cc' || echo '$(srcdir)/'`LEPJetAnalysis.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HwLEPJetAnalysis_la-LEPJetAnalysis.Tpo $(DEPDIR)/HwLEPJetAnalysis_la-LEPJetAnalysis.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='LEPJetAnalysis.cc' object='HwLEPJetAnalysis_la-LEPJetAnalysis.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwLEPJetAnalysis_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HwLEPJetAnalysis_la-LEPJetAnalysis.lo `test -f 'LEPJetAnalysis.cc' || echo '$(srcdir)/'`LEPJetAnalysis.cc HwLEPJetAnalysis_la-LEPFourJetsAnalysis.lo: LEPFourJetsAnalysis.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwLEPJetAnalysis_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HwLEPJetAnalysis_la-LEPFourJetsAnalysis.lo -MD -MP -MF $(DEPDIR)/HwLEPJetAnalysis_la-LEPFourJetsAnalysis.Tpo -c -o HwLEPJetAnalysis_la-LEPFourJetsAnalysis.lo `test -f 'LEPFourJetsAnalysis.cc' || echo '$(srcdir)/'`LEPFourJetsAnalysis.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HwLEPJetAnalysis_la-LEPFourJetsAnalysis.Tpo $(DEPDIR)/HwLEPJetAnalysis_la-LEPFourJetsAnalysis.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='LEPFourJetsAnalysis.cc' object='HwLEPJetAnalysis_la-LEPFourJetsAnalysis.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwLEPJetAnalysis_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HwLEPJetAnalysis_la-LEPFourJetsAnalysis.lo `test -f 'LEPFourJetsAnalysis.cc' || echo '$(srcdir)/'`LEPFourJetsAnalysis.cc HwTevatronAnalysis_la-ZpTRun2.lo: ZpTRun2.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwTevatronAnalysis_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HwTevatronAnalysis_la-ZpTRun2.lo -MD -MP -MF $(DEPDIR)/HwTevatronAnalysis_la-ZpTRun2.Tpo -c -o HwTevatronAnalysis_la-ZpTRun2.lo `test -f 'ZpTRun2.cc' || echo '$(srcdir)/'`ZpTRun2.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HwTevatronAnalysis_la-ZpTRun2.Tpo $(DEPDIR)/HwTevatronAnalysis_la-ZpTRun2.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ZpTRun2.cc' object='HwTevatronAnalysis_la-ZpTRun2.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwTevatronAnalysis_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HwTevatronAnalysis_la-ZpTRun2.lo `test -f 'ZpTRun2.cc' || echo '$(srcdir)/'`ZpTRun2.cc HwTevatronAnalysis_la-ZpTRun1.lo: ZpTRun1.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwTevatronAnalysis_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HwTevatronAnalysis_la-ZpTRun1.lo -MD -MP -MF $(DEPDIR)/HwTevatronAnalysis_la-ZpTRun1.Tpo -c -o HwTevatronAnalysis_la-ZpTRun1.lo `test -f 'ZpTRun1.cc' || echo '$(srcdir)/'`ZpTRun1.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HwTevatronAnalysis_la-ZpTRun1.Tpo $(DEPDIR)/HwTevatronAnalysis_la-ZpTRun1.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ZpTRun1.cc' object='HwTevatronAnalysis_la-ZpTRun1.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwTevatronAnalysis_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HwTevatronAnalysis_la-ZpTRun1.lo `test -f 'ZpTRun1.cc' || echo '$(srcdir)/'`ZpTRun1.cc HwTevatronAnalysis_la-Wpt.lo: Wpt.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwTevatronAnalysis_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HwTevatronAnalysis_la-Wpt.lo -MD -MP -MF $(DEPDIR)/HwTevatronAnalysis_la-Wpt.Tpo -c -o HwTevatronAnalysis_la-Wpt.lo `test -f 'Wpt.cc' || echo '$(srcdir)/'`Wpt.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HwTevatronAnalysis_la-Wpt.Tpo $(DEPDIR)/HwTevatronAnalysis_la-Wpt.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Wpt.cc' object='HwTevatronAnalysis_la-Wpt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwTevatronAnalysis_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HwTevatronAnalysis_la-Wpt.lo `test -f 'Wpt.cc' || echo '$(srcdir)/'`Wpt.cc HwTevatronAnalysis_la-Zrapidity.lo: Zrapidity.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwTevatronAnalysis_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HwTevatronAnalysis_la-Zrapidity.lo -MD -MP -MF $(DEPDIR)/HwTevatronAnalysis_la-Zrapidity.Tpo -c -o HwTevatronAnalysis_la-Zrapidity.lo `test -f 'Zrapidity.cc' || echo '$(srcdir)/'`Zrapidity.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HwTevatronAnalysis_la-Zrapidity.Tpo $(DEPDIR)/HwTevatronAnalysis_la-Zrapidity.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Zrapidity.cc' object='HwTevatronAnalysis_la-Zrapidity.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(HwTevatronAnalysis_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HwTevatronAnalysis_la-Zrapidity.lo `test -f 'Zrapidity.cc' || echo '$(srcdir)/'`Zrapidity.cc mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Analysis/LEPEventShapes.h0000644000175000017500000001572011754474773021525 0ustar sylvestresylvestre// -*- C++ -*- // // LEPEventShapes.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_LEPEventShapes_H #define HERWIG_LEPEventShapes_H // // This is the declaration of the LEPEventShapes class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "ThePEG/Vectors/Lorentz5Vector.h" #include "EventShapes.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * The LEPEventShapes class performs the analysis of global event shapes and * compares with LEP data. This handler is solely intended as a slave * handler for the EventShapesMasterAnalysis class. * * @see \ref LEPEventShapesInterfaces "The interfaces" * defined for LEPEventShapes */ class LEPEventShapes: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Transform the event to the desired Lorentz frame and return the * corresponding LorentzRotation. * @param event a pointer to the Event to be transformed. * @return the LorentzRotation used in the transformation. */ virtual LorentzRotation transform(tEventPtr event) const; /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); using AnalysisHandler::analyze; //@} 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initLEPEventShapes; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ LEPEventShapes & operator=(const LEPEventShapes &); private: /** * Histogram for \f$1-T\f$ distribution. */ HistogramPtr _omthr; /** * Histogram for the major distribution */ HistogramPtr _maj; /** * Histogram for the minor distribution */ HistogramPtr _min; /** * Histogram for the oblateness distribution */ HistogramPtr _obl; /** * Histogram for the sphericity distribution */ HistogramPtr _sph; /** * Histogram for the aplanarity distribution */ HistogramPtr _apl; /** * Histogram for the planarity distribution */ HistogramPtr _pla; /** * Histogram for the C distribution */ HistogramPtr _c; /** * Histogram for the D distribution */ HistogramPtr _d; /** * Histogram for the \f$M_{\rm high}\f$ distribution */ HistogramPtr _mhi; /** * Histogram for the \f$M_{\rm low}\f$ distribution */ HistogramPtr _mlo; /** * Histogram for the \f$M_{\rm high}-M_{\rm low}\f$ distribution */ HistogramPtr _mdiff; /** * Histogram for the \f$B_{\rm max}\f$ distribution */ HistogramPtr _bmax; /** * Histogram for the \f$B_{\rm min}\f$ distribution */ HistogramPtr _bmin; /** * Histogram for the \f$B_{\rm max}+B_{\rm min}\f$ distribution */ HistogramPtr _bsum; /** * Histogram for the \f$B_{\rm max}-B_{\rm min}\f$ distribution */ HistogramPtr _bdiff; /** * Pointer to the object which calculates the event shapes */ EventShapesPtr _shapes; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of LEPEventShapes. */ template <> struct BaseClassTrait { /** Typedef of the first base class of LEPEventShapes. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the LEPEventShapes class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::LEPEventShapes"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the LEPEventShapes class and any other class on which it depends * (except the base class). */ static string library() { return "HwAnalysis.so HwLEPAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_LEPEventShapes_H */ herwig++-2.6.0.orig/Analysis/DrellYanPT.h0000644000175000017500000001056111754474773020713 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_DrellYanPT_H #define HERWIG_DrellYanPT_H // // This is the declaration of the DrellYanPT class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * * This AnalysisHandler books histograms * of the weak boson's pt in Drell-Yan * processes. * * An Interface switch allows you to choose * between output of the histograms * as TopDraw or plain ASCII files, which * may be processed further, e.g. by gnuplot. * * @see \ref DrellYanPTInterfaces "The interfaces" * defined for DrellYanPT. */ class DrellYanPT: public AnalysisHandler { public: /** * The default constructor. */ DrellYanPT(); /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * Histogram of the Z's pt */ Histogram _Zpt; /** * Histogram of the W+'s pt */ Histogram _Wppt; /** * Histogram of the W-'s pt */ Histogram _Wmpt; /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initDrellYanPT; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DrellYanPT & operator=(const DrellYanPT &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DrellYanPT. */ template <> struct BaseClassTrait { /** Typedef of the first base class of DrellYanPT. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the DrellYanPT class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::DrellYanPT"; } /** * The name of a file containing the dynamic library where the class * DrellYanPT is implemented. It may also include several, space-separated, * libraries if the class DrellYanPT depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_DrellYanPT_H */ herwig++-2.6.0.orig/Analysis/LEPJetAnalysis.cc0000644000175000017500000010045611754474773021665 0ustar sylvestresylvestre// -*- C++ -*- // // LEPJetAnalysis.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the LEPJetAnalysis class. // #include "LEPJetAnalysis.h" #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "Herwig++/Utilities/HerwigStrategy.h" #include "fastjet/PseudoJet.hh" #include "fastjet/ClusterSequence.hh" using namespace Herwig; void LEPJetAnalysis::analyze(tEventPtr event, long, int, int ) { ++_nevent; tPVector particles; event->selectFinalState(back_inserter(particles)); // copy fastjet particles from event record. Templated fastjet // method might leave units ambigouos. Loop with integer index // allows backtracing ThePEG particles if needed. vector fastjet_particles; for (unsigned int j=0; jmomentum().x()/GeV, particles[j]->momentum().y()/GeV, particles[j]->momentum().z()/GeV, particles[j]->momentum().e()/GeV); p.set_user_index(j); fastjet_particles.push_back(p); } fastjet::RecombinationScheme recomb_scheme = fastjet::E_scheme; fastjet::Strategy strategy = fastjet::Best; fastjet::JetDefinition jet_def(fastjet::ee_kt_algorithm, recomb_scheme, strategy); fastjet::ClusterSequence cs(fastjet_particles, jet_def); // ynm distributions *_y23 += cs.exclusive_ymerge(2); *_y34 += cs.exclusive_ymerge(3); *_y45 += cs.exclusive_ymerge(4); *_y56 += cs.exclusive_ymerge(5); const int entr_fr = 37; const int ddentr = 16; for(int j = 0; j LEPJetAnalysis::initLEPJetAnalysis; // Definition of the static class description member. void LEPJetAnalysis::Init() { static ClassDocumentation documentation ("LEP Jet data analysis", "The LEP Jet analysis uses data from \\cite{Pfeifenschneider:1999rz,Abreu:1996na}. ", "%\\cite{Pfeifenschneider:1999rz}\n" "\\bibitem{Pfeifenschneider:1999rz}\n" " P.~Pfeifenschneider {\\it et al.} [JADE collaboration and OPAL\n" " Collaboration],\n" " ``QCD analyses and determinations of alpha(s) in e+ e- annihilation at\n" " %energies between 35-GeV and 189-GeV,''\n" " Eur.\\ Phys.\\ J.\\ C {\\bf 17}, 19 (2000)\n" " [arXiv:hep-ex/0001055].\n" " %%CITATION = EPHJA,C17,19;%%\n" "%\\cite{Abreu:1996na}\n" "\\bibitem{Abreu:1996na}\n" " P.~Abreu {\\it et al.} [DELPHI Collaboration],\n" " ``Tuning and test of fragmentation models based on identified particles and\n" " %precision event shape data,''\n" " Z.\\ Phys.\\ C {\\bf 73}, 11 (1996).\n" " %%CITATION = ZEPYA,C73,11;%%\n" ); } void LEPJetAnalysis::dofinish() { useMe(); AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; double chisq,minfrac=0.05; unsigned int npoint; _y23->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL y_23 distribution or " << chisq/npoint << " per degree of freedom \n"; _y23->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "y0231 compared to OPAL data", " X X ", "1/NdN/dy0231", " X X", "y0231", " X X"); _y34->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL y_34 distribution or " << chisq/npoint << " per degree of freedom \n"; _y34->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "y0341 compared to OPAL data", " X X ", "1/NdN/dy0341", " X X", "y0341", " X X"); _y45->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL y_45 distribution or " << chisq/npoint << " per degree of freedom \n"; _y45->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "y0451 compared to OPAL data", " X X ", "1/NdN/dy0451", " X X", "y0451", " X X"); _y56->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL y_56 distribution or " << chisq/npoint << " per degree of freedom \n"; _y56->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "y0561 compared to OPAL data", " X X ", "1/NdN/dy0561", " X X", "y0561", " X X"); // data for jet fractions double jet2data[]={0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.02 , 0.06 , 0.17 , 0.43 , 1.07 , 2.35 , 4.69 , 8.36 , 13.46 , 19.77 , 26.96 , 34.42 , 41.62 , 48.29 , 54.25 , 59.88 , 65.05 , 70.02 , 74.71 , 79.04 , 83.01 , 86.68 , 89.89 , 92.73 , 95.08 , 97.02 , 98.51 , 99.52 , 99.99}; double jet2stat[]={0.0 ,0.0 ,0.0 ,0.0 ,0.0 , 0.0 ,0.0 ,0.0 ,0.00 ,0.00 , 0.01 ,0.01 ,0.02 ,0.03 ,0.04 , 0.05 ,0.07 ,0.08 ,0.08 ,0.09 , 0.09 ,0.09 ,0.09 ,0.09 ,0.08 , 0.08 ,0.08 ,0.07 ,0.07 ,0.06 , 0.05 ,0.05 ,0.04 ,0.03 ,0.02 ,0.01 ,0.00}; double jet2syst[]={0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,0.01,0.03, 0.06,0.13,0.27,0.51,0.88, 1.41,1.95,2.39,2.66,2.71, 2.63,2.46,2.26,2.08,1.87, 1.67,1.49,1.31,1.10,0.88, 0.69,0.50,0.31,0.17,0.09,0.04,0.04}; double jet3data[]={0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.01 , 0.03 , 0.09 , 0.24 , 0.67 , 1.63 , 3.57 , 6.82 ,11.57 ,17.39 , 23.77 ,29.92 ,34.68 ,37.87 ,39.20 , 38.91 ,37.48 ,35.47 ,32.83 ,29.92 , 26.68 ,23.25 ,19.79 ,16.38 ,13.06 , 10.03 , 7.26 , 4.92 , 2.98 , 1.48 , 0.47 , 0.0 }; double jet3stat[]={0.0 ,0.0 ,0.0 ,0.0 ,0.0 , 0.00 ,0.00 ,0.01 ,0.01 ,0.01 , 0.02 ,0.03 ,0.05 ,0.06 ,0.07 , 0.08 ,0.08 ,0.08 ,0.08 ,0.08 , 0.08 ,0.08 ,0.08 ,0.07 ,0.07 , 0.07 ,0.07 ,0.06 ,0.06 ,0.05 , 0.05 ,0.04 ,0.03 ,0.03 ,0.02 ,0.01 ,0.0}; double jet3syst[]={0.0 ,0.0 ,0.0 ,0.0 ,0.0 , 0.01,0.01,0.03,0.08,0.21, 0.44,0.78,1.23,1.68,1.97, 2.02,1.73,1.14,0.64,0.59, 0.88,1.12,1.25,1.35,1.37, 1.32,1.24,1.13,0.98,0.81, 0.63,0.46,0.27,0.14,0.06,0.03,0.0}; double jet4data[]={ 0.0 , 0.0 , 0.02 , 0.03 , 0.04 , 0.09 , 0.23 , 0.60 , 1.55 , 3.45 , 6.89 , 11.80 , 17.67 , 23.30 , 27.89 , 30.19 , 29.93 , 27.81 , 24.05 , 19.72 , 15.64 , 12.09 , 9.13 , 6.74 , 4.79 , 3.24 , 2.06 , 1.22 , 0.66 , 0.30 , 0.12 , 0.03 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0}; double jet4stat[]={0.0 ,0.0 ,0.00 ,0.00 ,0.00 , 0.01 ,0.01 ,0.01 ,0.02 ,0.03 , 0.05 ,0.06 ,0.07 ,0.08 ,0.08 , 0.08 ,0.08 ,0.07 ,0.07 ,0.06 , 0.06 ,0.05 ,0.05 ,0.04 ,0.04 , 0.03 ,0.02 ,0.02 ,0.01 ,0.01 , 0.01 ,0.00 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0}; double jet4syst[]={0.0 ,0.0 ,0.02,0.01,0.01, 0.02,0.05,0.14,0.34,0.72, 1.30,1.87,2.09,1.89,1.35, 0.90,0.91,1.15,1.36,1.39, 1.23,1.01,0.83,0.63,0.46, 0.32,0.23,0.16,0.10,0.06, 0.03,0.02,0.0 ,0.0 ,0.0 ,0.0 ,0.0}; double jet5data[]={0.02 , 0.03 , 0.04 , 0.07 , 0.17 , 0.44 , 1.14 , 2.68 , 5.52 , 9.82 , 15.10 , 20.28 , 24.06 , 25.57 , 24.61 , 21.66 , 17.47 , 12.91 , 8.83 , 5.67 , 3.43 , 2.02 , 1.14 , 0.60 , 0.30 , 0.13 , 0.05 , 0.01 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0}; double jet5stat[]={0.00 ,0.00 ,0.00 ,0.00 ,0.01 , 0.01 ,0.02 ,0.03 ,0.04 ,0.06 , 0.07 ,0.07 ,0.08 ,0.07 ,0.07 , 0.07 ,0.06 ,0.05 ,0.04 ,0.04 , 0.03 ,0.02 ,0.02 ,0.01 ,0.01 , 0.01 ,0.00 ,0.00 ,0.0 ,0.0 , 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0}; double jet5syst[]={0.01,0.01,0.01,0.01,0.02, 0.06,0.20,0.52,1.04,1.61, 1.92,1.78,1.22,0.78,0.85, 1.13,1.30,1.26,1.04,0.73, 0.46,0.27,0.15,0.08,0.04, 0.02,0.01,0.00,0.0 ,0.0 , 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0}; double jet6data[]={99.98 , 99.97 , 99.95 , 99.90 , 99.78 , 99.45 , 98.58 , 96.63 , 92.76 , 86.25 , 76.64 , 64.51 , 51.02 , 37.79 , 25.95 , 16.48 , 9.62 , 5.15 , 2.53 , 1.14 , 0.48 , 0.20 , 0.07 , 0.03 , 0.01 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0}; double jet6stat[]={0.00 ,0.00 ,0.00 ,0.01 ,0.01 , 0.01 ,0.02 ,0.03 ,0.04 ,0.05 , 0.06 ,0.07 ,0.07 ,0.07 ,0.07 , 0.06 ,0.04 ,0.03 ,0.02 ,0.02 , 0.01 ,0.01 ,0.00 ,0.00 ,0.00 , 0.0 ,0.0 ,0.0 ,0.0 ,0.0 , 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0}; double jet6syst[]={ 0.1, 0.1, 0.1, 0.2, 0.3, 0.4, 0.6, 1.0, 1.6, 2.4, 3.3, 4.0, 4.2, 3.8, 3.2, 2.4, 1.7, 1.0, 0.6, 0.3, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; double jet2error[37],jet3error[37],jet4error[37],jet5error[37],jet6error[38]; for(unsigned int ix=0;ix<37;++ix) { jet2data[ix] /=100.; jet3data[ix] /=100.; jet4data[ix] /=100.; jet5data[ix] /=100.; jet6data[ix] /=100.; jet2error[ix] = sqrt(sqr(jet2stat[ix])+sqr(jet2syst[ix]))/100.; jet3error[ix] = sqrt(sqr(jet3stat[ix])+sqr(jet3syst[ix]))/100.; jet4error[ix] = sqrt(sqr(jet4stat[ix])+sqr(jet4syst[ix]))/100.; jet5error[ix] = sqrt(sqr(jet5stat[ix])+sqr(jet5syst[ix]))/100.; jet6error[ix] = sqrt(sqr(jet6stat[ix])+sqr(jet6syst[ix]))/100.; } for(unsigned int ix=2;ix<7;++ix) { vector data,error; vector obs; switch(ix) { case 2: data = vector(jet2data ,jet2data+37 ); error = vector(jet2error,jet2error+37); obs = _frac2; break; case 3: data = vector(jet3data ,jet3data+37 ); error = vector(jet3error,jet3error+37); obs = _frac3; break; case 4: data = vector(jet4data ,jet4data+37 ); error = vector(jet4error,jet4error+37); obs = _frac4; break; case 5: data = vector(jet5data ,jet5data+37 ); error = vector(jet5error,jet5error+37); obs = _frac5; break; case 6: data = vector(jet6data ,jet6data+37 ); error = vector(jet6error,jet6error+37); obs = _frac6; break; } output << "NEW FRAME\n"; output << "SET WINDOW X 1.6 8 Y 3.5 9\n"; output << "SET FONT DUPLEX\n"; output << "TITLE TOP \"R0" << ix << "1 vs y0cut1\"\n"; output << "CASE \" X X X X\"\n"; output << "TITLE LEFT \"R0" << ix << "1\"\n"; output << "CASE \" X X\"\n"; if (HerwigStrategy::version != "") { output << "TITLE RIGHT \"" << HerwigStrategy::version << "\"\n"; output << "CASE \"\"\n"; } output << "SET AXIS BOTTOM OFF\n"; output << "SET ORDER X Y DY\n"; output << "SET LIMITS X " << _yc_frac[0] << " " << _yc_frac[36] << "\n"; output << "SET SCALE X LOG\n"; for(unsigned int iy=0;iy<37;++iy) { output << _yc_frac[iy] << "\t" << double(obs[iy])/double(_nevent) << "\n"; } output << "JOIN RED\n"; for(unsigned int iy=0;iy<37;++iy) { output << _yc_frac[iy] << "\t" << data[iy] << "\t" << error[iy] << "\n"; } output << "PLOT " << endl; output << "SET WINDOW X 1.6 8 Y 2.5 3.5\n"; output << "SET LIMITS X " << _yc_frac[0] << " " << _yc_frac[36] << "\n"; output << "SET SCALE X LOG\n"; double ymax=0.; for(unsigned int iy=0;iy<37;++iy) { double y = data[iy]>0. ? error[iy]/data[iy] : 1.; if(y>ymax) ymax=y; output << _yc_frac[iy] << "\t" << y << "\n"; } for(int iy=36;iy>=0;--iy) { double y = data[iy]>0. ? error[iy]/data[iy] : 1.; output << _yc_frac[iy] << "\t" << -y << "\n"; } output << "set limits y " << -ymax << " " << ymax << "\n"; output << "set fill full\n"; output << "join yellow fill yellow\n"; for(unsigned int iy=0;iy<37;++iy) { output << _yc_frac[iy] << "\t" << (double(obs[iy])/double(_nevent)-data[iy])/data[iy] << "\n"; } output << "JOIN\n"; output << "SET WINDOW X 1.6 8 Y 1.6 2.5\n"; output << "SET LIMITS X " << _yc_frac[0] << " " << _yc_frac[36] << "\n"; output << "SET SCALE X LOG\n"; output << "SET AXIS BOTTOM ON\n"; output << "TITLE BOTTOM \"y0" << ix << "1\"\n"; output << "CASE \" X X\n"; ymax =0.; double ymin=0.,chisq=0.; int npoint=0; for(unsigned int iy=0;iy<37;++iy) { double point = data[iy]>0.&&error[iy]>0. ? (double(obs[iy])/double(_nevent)-data[iy])/ sqrt(sqr(error[iy])+double(obs[iy])/sqr(double(_nevent))) : 0.; if(point!=0.) ++npoint; if(pointymax) ymax=point; output << _yc_frac[iy] << "\t" << point << "\n"; if(point!=0.) { if(error[iy]>0.05*data[ix]) chisq+=sqr(point); else chisq+=sqr(double(obs[iy])/double(_nevent)-data[iy])/ (sqr(0.05*data[ix])+double(obs[iy])/sqr(double(_nevent))); } } output << "set limits y " << ymin << " " << ymax << "\n"; output << "JOIN" << endl; generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL R_" << ix << " distribution\n"; } // n jet distributions double njetdata[]={15.662 , 14.500 , 13.377 , 12.296 , 11.264 , 10.286 , 9.363 , 8.501 , 7.701 , 6.964 , 6.294 , 5.688 , 5.142 , 4.652 , 4.219 , 3.837 , 3.510 , 3.233 , 3.008 , 2.829 , 2.688 , 2.576 , 2.483 , 2.405 , 2.336 , 2.275 , 2.222 , 2.177 , 2.136 , 2.102 , 2.073 , 2.049 , 2.030 , 2.015 , 2.005 , 2.000}; double njetstat[]={0.006 ,0.006 ,0.006 ,0.006 ,0.005 , 0.005 ,0.005 ,0.005 ,0.004 ,0.004 , 0.004 ,0.004 ,0.003 ,0.003 ,0.003 , 0.003 ,0.003 ,0.003 ,0.003 ,0.003 , 0.002 ,0.002 ,0.002 ,0.002 ,0.002 , 0.002 ,0.002 ,0.002 ,0.002 ,0.002 , 0.002 ,0.002 ,0.002 ,0.002 ,0.002 ,0.002 }; double njetsyst[]={0.46, 0.42, 0.38, 0.35, 0.33, 0.32, 0.31, 0.30, 0.28, 0.26, 0.23, 0.20, 0.17, 0.14, 0.12, 0.10, 0.09, 0.07, 0.06, 0.04, 0.03, 0.03, 0.02, 0.02, 0.02, 0.01, 0.01, 0.01, 0.01, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00}; double njeterror[36]; for(unsigned int ix=0;ix<36;++ix) njeterror[ix]=sqrt(sqr(njetstat[ix])+sqr(njetsyst[ix])); output << "NEW FRAME\n"; output << "SET WINDOW X 1.6 8 Y 3.5 9\n"; output << "SET FONT DUPLEX\n"; output << "TITLE TOP \" N0jets1\"\n"; output << "CASE \" X X\"\n"; output << "TITLE LEFT \" \"\n"; output << "CASE \" X X \"\n"; if (HerwigStrategy::version != "") { output << "TITLE RIGHT \"" << HerwigStrategy::version << "\"\n"; output << "CASE \"\"\n"; } output << "SET AXIS BOTTOM OFF\n"; output << "SET ORDER X Y DY\n"; output << "SET LIMITS X " << _yc_frac[1] << " " << _yc_frac[36] << "\n"; output << "SET SCALE X LOG Y LOG\n"; output << "SET LIMITS Y 2 16\n"; for(unsigned int ix=1;ix<37;++ix) { output << _yc_frac[ix] << "\t" << _njet[ix].mean() << "\n"; } output << "JOIN RED\n"; for(unsigned int ix=0;ix<36;++ix) { output << _yc_frac[ix+1] << "\t" << njetdata[ix] << "\t" << njeterror[ix] << "\n"; } output << "PLOT " << endl; output << "SET WINDOW X 1.6 8 Y 2.5 3.5\n"; output << "SET LIMITS X " << _yc_frac[1] << " " << _yc_frac[36] << "\n"; output << "SET SCALE X LOG Y LIN\n"; double ymax=0.; for(unsigned int ix=0;ix<36;++ix) { double y = njetdata[ix]>0. ? njeterror[ix]/njetdata[ix] : 1.; if(y>ymax) ymax=y; output << _yc_frac[ix] << "\t" << y << "\n"; } for(int ix=35;ix>=0;--ix) { double y = njetdata[ix]>0. ? njeterror[ix]/njetdata[ix] : 1.; output << _yc_frac[ix] << "\t" << -y << "\n"; } output << "set limits y " << -ymax << " " << ymax << "\n"; output << "set fill full\n"; output << "join yellow fill yellow\n"; for(unsigned int ix=1;ix<37;++ix) { output << _yc_frac[ix] << "\t" << (_njet[ix].mean()-njetdata[ix-1])/njetdata[ix-1] << "\n"; } output << "JOIN\n"; output << "SET WINDOW X 1.6 8 Y 1.6 2.5\n"; output << "SET SCALE X LOG\n"; output << "SET LIMITS X " << _yc_frac[1] << " " << _yc_frac[36] << "\n"; output << "SET AXIS BOTTOM ON\n"; output << "TITLE BOTTOM \"y0cut1\"\n"; output << "CASE \" X X\"\n"; ymax =0.; double ymin=0.; chisq=0.; npoint=0; for(unsigned int ix=1;ix<37;++ix) { double point = njetdata[ix-1]>0.&&njeterror[ix-1]>0. ? (_njet[ix].mean()-njetdata[ix-1])/ sqrt(sqr(njeterror[ix-1])+_njet[ix].mean_var()) : 0.; if(point!=0.) ++npoint; if(pointymax) ymax=point; output << _yc_frac[ix] << "\t" << point << "\n"; if(point!=0.) { if(njeterror[ix-1]>0.05*njetdata[ix-1]) chisq+=sqr(point); else chisq+=sqr(_njet[ix].mean()-njetdata[ix-1])/ (sqr(0.05*njetdata[ix-1])+_njet[ix].mean_var()); } } output << "set limits y " << ymin << " " << ymax << "\n"; output << "JOIN" << endl; generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL N_jet " << " distribution\n"; const int ddentr = 16; // D_2 vector d2,d2error; for(int j = 0; j d3,d3error; for(int j = 0; j d4,d4error; for(int j = 0; j data,error,obs,obserr,bins; switch(ix) { case 2: data = vector(d2data ,d2data+15 ); error = vector(d2total,d2total+15); obs = d2; obserr = d2error; bins = _d2dbins; break; case 3: data = vector(d3data ,d3data+15 ); error = vector(d3total,d3total+15); obs = d3; obserr = d3error; bins = _d3dbins; break; case 4: data = vector(d4data ,d4data+15 ); error = vector(d4total,d4total+15); obs = d4; obserr = d4error; bins = _d4dbins; break; } output << "NEW FRAME\n"; output << "SET WINDOW X 1.6 8 Y 3.5 9\n"; output << "SET FONT DUPLEX\n"; output << "TITLE TOP \"D0" << ix << "1 vs y0cut1\"\n"; output << "CASE \" X X X X\"\n"; output << "TITLE LEFT \"D0" << ix << "1\"\n"; output << "CASE \" X X\"\n"; if (HerwigStrategy::version != "") { output << "TITLE RIGHT \"" << HerwigStrategy::version << "\"\n"; output << "CASE \"\"\n"; } output << "SET AXIS BOTTOM OFF\n"; output << "SET ORDER X Y DY\n"; output << "SET LIMITS X " << bins[0] << " " << bins[ddentr-1] << "\n"; output << "SET SCALE Y LOG\n"; for(int iy=0;iy0. ? error[iy]/data[iy] : 1.; if(y>ymax) ymax=y; output << 0.5*(bins[iy]+bins[iy+1]) << "\t" << y << "\n"; } for(int iy=ddentr-2;iy>=0;--iy) { double y = data[iy]>0. ? error[iy]/data[iy] : 1.; output << 0.5*(bins[iy]+bins[iy+1]) << "\t" << -y << "\n"; } output << "set limits y " << -ymax << " " << ymax << "\n"; output << "set fill full\n"; output << "join yellow fill yellow\n"; for(unsigned int iy=0;iy0.&&error[iy]>0. ? (double(obs[iy])-data[iy])/ sqrt(sqr(error[iy])+sqr(obserr[iy])) : 0.; if(point!=0.) ++npoint; if(pointymax) ymax=point; output << 0.5*(bins[iy]+bins[iy+1]) << "\t" << point << "\n"; if(point!=0.) { if(error[iy]>0.05*data[ix]) chisq+=sqr(point); else chisq+=sqr(obs[iy]-data[iy])/ (sqr(0.05*data[ix])+sqr(obserr[iy])); } } output << "set limits y " << ymin << " " << ymax << "\n"; output << "JOIN" << endl; generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for DELPHI D_" << ix << " distribution\n"; } } void LEPJetAnalysis::doinitrun() { AnalysisHandler::doinitrun(); _nevent=0; // y distributions double diffbins[] = {1.00E-05, 1.33E-05, 1.78E-05, 2.37E-05, 3.16E-05, 4.22E-05, 5.62E-05, 7.50E-05, 1.00E-04, 1.33E-04, 1.78E-04, 2.37E-04, 3.16E-04, 4.22E-04, 5.62E-04, 7.50E-04, 1.00E-03, 1.33E-03, 1.78E-03, 2.37E-03, 3.16E-03, 4.22E-03, 5.62E-03, 7.50E-03, 1.00E-02, 1.33E-02, 1.78E-02, 2.37E-02, 3.16E-02, 4.22E-02, 5.62E-02, 7.50E-02, 1.00E-01, 1.33E-01, 1.78E-01, 2.37E-01, 3.16E-01}; double y23data[]= {0.0 , 0.0 , 0.0 , 0.0 , 2.672 , 2.984 , 2.482 , 5.199 , 11.11 , 24.82 , 43.76 , 80.73 ,121.9 ,166.2 ,195.5 , 203.8 ,189.7 ,162.3 ,126.6 , 91.87 , 63.59 , 42.77 , 30.13 , 20.75 , 14.93 , 10.56 , 7.318 , 5.045 , 3.483 , 2.289 , 1.521 , 0.942 , 0.583 , 0.336 , 0.170 , 0.058}; double y23stat[]={0.0 ,0.0 ,0.0 ,0.0 ,2.248 , 1.821 ,0.662 ,0.867 ,1.05 ,1.45 , 1.56 ,1.93 ,2.1 ,2.1 ,2.0 , 1.7 ,1.4 ,1.1 ,0.8 ,0.56 , 0.40 ,0.28 ,0.20 ,0.15 ,0.11 , 0.08 ,0.057 ,0.041 ,0.030 ,0.020 , 0.015 ,0.010 ,0.007 ,0.004 ,0.003 ,0.002}; double y23syst[]={0.0 ,0.0 ,0.0 ,0.0 ,2.296, 2.024,1.502,2.085, 4.56, 6.57, 10.18,15.48,19.2 ,23.3 ,25.6 , 21.5 ,14.3 , 8.6 , 5.2 , 4.43, 3.77, 2.50, 1.38, 0.92, 0.65, 0.44,0.321,0.270,0.209,0.146, 0.104,0.077,0.046,0.022,0.009,0.011}; vector bins(diffbins,diffbins+37); vector data(y23data,y23data+36); vector error(36); for(unsigned int ix=0;ix<36;++ix) error[ix]=sqrt(sqr(y23stat[ix])+sqr(y23syst[ix])); _y23 = new_ptr(Histogram(bins,data,error)); double y34data[]={0.0 , 0.0 , 0.0 , 5.910 , 7.934 , 14.89 , 34.42 , 64.74 ,138.3 ,242.9 , 369.6 ,492.9 ,571.7 ,580.0 ,535.1 , 448.7 ,333.2 ,234.0 ,149.3 , 88.43 , 50.04 , 28.38 , 15.95 , 9.092 , 5.181 , 2.848 , 1.479 , 0.727 , 0.338 , 0.134 , 0.045 , 0.011 , 0.0 , 0.0 , 0.0 , 0.0}; double y34stat[]={0.0 , 0.0 , 0.0 , 1.837 , 1.577 , 1.77 , 2.40 , 2.79 , 3.8 , 4.4 , 4.7 , 4.7 , 4.3 , 3.7 , 3.0 , 2.3 , 1.7 , 1.2 , 0.8 , 0.52 , 0.34 , 0.22 , 0.15 , 0.096 , 0.064 , 0.042 , 0.026 , 0.016 , 0.010 , 0.005 , 0.003 , 0.001 , 0.0 , 0.0 , 0.0 , 0.0}; double y34syst[]={0.0 ,0.0 ,0.0 ,3.084 ,2.557 , 4.84 , 8.66 ,20.29 ,38.3 ,50.2 , 60.3 ,66.6 ,59.8 ,45.1 ,30.5 , 18.1 ,11.6 ,10.0 , 9.0 ,7.43 , 5.09 ,2.94 ,1.75 ,1.052 ,0.580 , 0.313 ,0.166 ,0.098 ,0.053 ,0.026 , 0.014 ,0.007 ,0.0 ,0.0 ,0.0 ,0.0}; data=vector(y34data,y34data+36); for(unsigned int ix=0;ix<36;++ix) error[ix]=sqrt(sqr(y34stat[ix])+sqr(y34syst[ix])); _y34 = new_ptr(Histogram(bins,data,error)); double y45data[]={17.50 , 18.42 , 19.98 , 28.13 , 56.68 , 113.1 , 233.0 , 446.7 , 711.5 ,1018.6 , 1197.7 ,1236.0 ,1108.2 , 907.8 , 658.8 , 439.2 , 269.8 , 150.1 , 76.52 , 36.67 , 16.23 , 7.154 , 3.150 , 1.267 , 0.537 , 0.179 , 0.064 , 0.014 , 0.003 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0}; double y45stat[]={8.19 ,5.57 ,3.46 ,3.06 ,3.75 , 4.6 ,6.1 ,7.7 ,8.6 ,9.1 , 8.4 ,7.2 ,5.7 ,4.3 ,3.1 , 2.1 ,1.4 ,0.9 ,0.55 ,0.33 , 0.19 ,0.112 ,0.067 ,0.037 ,0.023 , 0.011 ,0.006 ,0.003 ,0.001 ,0.0 , 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0}; double y45syst[]={10.58 ,10.58 , 7.51 , 8.89 ,10.54 , 19.5 , 48.8 , 90.5 ,138.9 ,169.5 , 156.2 ,106.5 , 52.8 , 28.5 , 25.0 , 23.3 , 20.0 , 15.7 ,10.60 , 6.24 , 3.15 ,1.43 ,0.63 ,0.28 ,0.11 , 0.04 ,0.01 ,0.00 ,0.00 ,0.0 , 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0}; data=vector(y45data,y45data+36); for(unsigned int ix=0;ix<36;++ix) error[ix]=sqrt(sqr(y45stat[ix])+sqr(y45syst[ix])); _y45 = new_ptr(Histogram(bins,data,error)); double y56data[]={42.43 , 44.80 , 78.16 , 155.9 , 309.6 , 619.9 ,1055.3 ,1586.5 ,2003.2 ,2204.6 , 2072.6 ,1715.4 ,1255.9 , 841.2 , 503.6 , 273.2 , 133.7 , 58.54 , 23.36 , 8.336 , 2.735 , 0.874 , 0.253 , 0.084 , 0.012 , 0.003 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0}; double y56stat[]={7.35 , 5.01 , 5.56 , 7.0 , 8.9 , 11.7 ,13.8 ,15.0 ,14.5 ,13.0 , 10.5 , 8.0 , 5.7 , 4.0 , 2.6 , 1.6 , 1.0 , 0.55 , 0.30 , 0.157 , 0.080 , 0.042 , 0.020 , 0.012 , 0.003 , 0.002 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0}; double y56syst[]={14.5,12.8,16.0, 20., 44., 103.,195.,280.,307.,256., 154., 84., 61., 51., 44., 33., 21.,12.1, 6.2,2.86, 1.24,0.49,0.19,0.07,0.02, 0.01,0.0 ,0.0 ,0.0 ,0.0 , 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 }; data=vector(y56data,y56data+36); for(unsigned int ix=0;ix<36;++ix) error[ix]=sqrt(sqr(y56stat[ix])+sqr(y56syst[ix])); _y56 = new_ptr(Histogram(bins,data,error)); double yc_frac[] = {1.00E-05, 1.33E-05, 1.78E-05, 2.37E-05, 3.16E-05, 4.22E-05, 5.62E-05, 7.50E-05, 1.00E-04, 1.33E-04, 1.78E-04, 2.37E-04, 3.16E-04, 4.22E-04, 5.62E-04, 7.50E-04, 1.00E-03, 1.33E-03, 1.78E-03, 2.37E-03, 3.16E-03, 4.22E-03, 5.62E-03, 7.50E-03, 1.00E-02, 1.33E-02, 1.78E-02, 2.37E-02, 3.16E-02, 4.22E-02, 5.62E-02, 7.50E-02, 1.00E-01, 1.33E-01, 1.78E-01, 2.37E-01, 3.16E-01}; _yc_frac=vector(yc_frac,yc_frac+37); const int entr_fr = 37; _frac1.resize(entr_fr,0); _frac2.resize(entr_fr,0); _frac3.resize(entr_fr,0); _frac4.resize(entr_fr,0); _frac5.resize(entr_fr,0); _frac6.resize(entr_fr,0); _njet.resize(entr_fr); _njet = vector(entr_fr); const int ddentr = 16; double d2dbins[] = {0.000, 0.010, 0.020, 0.030, 0.040, 0.050, 0.060, 0.080, 0.100, 0.120, 0.140, 0.160, 0.180, 0.200, 0.250, 0.300}; double d3dbins[] = {0.000, 0.002, 0.004, 0.006, 0.008, 0.012, 0.016, 0.020, 0.024, 0.028, 0.032, 0.040, 0.050, 0.060, 0.080, 0.100}; double d4dbins[] = {0.000, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.008, 0.010, 0.012, 0.014, 0.016, 0.018, 0.020, 0.025, 0.030}; _d2dbins=vector(d2dbins,d2dbins+ddentr); _d3dbins=vector(d3dbins,d3dbins+ddentr); _d4dbins=vector(d4dbins,d4dbins+ddentr); _d2dN2.resize(ddentr); _d3dN2.resize(ddentr); _d3dN3.resize(ddentr); _d4dN2.resize(ddentr); _d4dN3.resize(ddentr); _d4dN4.resize(ddentr); } herwig++-2.6.0.orig/Analysis/Zrapidity.cc0000755000175000017500000001072511754474773021057 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the Zrapidity class. // #include "Zrapidity.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDF/BeamParticleData.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Utilities/Histogram.h" using namespace Herwig; using namespace ThePEG; using namespace std; inline IBPtr Zrapidity::clone() const { return new_ptr(*this); } inline IBPtr Zrapidity::fullclone() const { return new_ptr(*this); } void Zrapidity::doinitrun() { vector ybins, ydata, yerror; double yvals1[] = { 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8 }; double ydata1[] = { 0.271598, 0.276609, 0.274604, 0.266586, 0.278613, 0.269593, 0.260573, 0.276609, 0.235518, 0.244538, 0.251553, 0.233514, 0.230507, 0.223492, 0.211465, 0.191421, 0.170375, 0.16837, 0.142313, 0.119262, 0.117258, 0.0912006, 0.0691521, 0.049108, 0.039086, 0.0180397, 0.0140309, 0.00501102 }; /* double ydata1[] = { 0.271, 0.276, 0.274, 0.266, 0.278, 0.269, 0.26, 0.276, 0.235, 0.244, 0.251, 0.233, 0.23, 0.223, 0.211, 0.191, 0.17, 0.168, 0.142, 0.119, 0.117, 0.091, 0.069, 0.049, 0.039, 0.018, 0.014, 0.005 }; double yerror1[] = { 0.015, 0.015, 0.015, 0.015, 0.015, 0.016, 0.017, 0.016, 0.014, 0.015, 0.014, 0.014, 0.014, 0.013, 0.013, 0.013, 0.01, 0.014, 0.013, 0.01, 0.009, 0.008, 0.007, 0.006, 0.005, 0.004, 0.004, 0.006 }; */ double yerror1[] = { 0.0150331, 0.0150331, 0.0150331, 0.0150331, 0.0150331, 0.0160353, 0.0170375, 0.0160353, 0.0140309, 0.0150331, 0.0140309, 0.0140309, 0.0140309, 0.0130287, 0.0130287, 0.0130287, 0.010022, 0.0140309, 0.0130287, 0.010022, 0.00901984, 0.00801764, 0.00701543, 0.00601323, 0.00501102, 0.00400882, 0.00400882, 0.00601323 }; ybins = vector(yvals1 ,yvals1 +29); ydata = vector(ydata1 ,ydata1 +28); yerror = vector(yerror1,yerror1+28); _hy = new_ptr( Histogram( ybins, ydata, yerror ) ); } void Zrapidity::persistentOutput(PersistentOStream & ) const { } void Zrapidity::persistentInput(PersistentIStream & , int) { } ClassDescription Zrapidity::initZrapidity; // Definition of the static class description member. void Zrapidity::Init() { static ClassDocumentation documentation ("There is no documentation for the Zrapidity class"); } void Zrapidity::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; _hy->topdrawOutput(outfile,Frame|Errorbars, "RED", "y of Z ( mass 71 GeV to 111 GeV ) compared to TVT data", " ", "1/SdS/dy", " G G ", "y", " "); outfile.close(); } void Zrapidity::analyze(tEventPtr event, long , int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; transform(event); // find the outgoing particles in the hard process ParticleVector outgoing; event->selectFinalState(back_inserter(outgoing)); ParticleVector Zdecay; // search for electrons and positions from Z/gamma for(unsigned int ix=0;ixid(); if(abs(id)==ParticleID::eminus) { PPtr part=outgoing[ix]; do { part=part->parents()[0]; } while (part->id()==id); if(part->id()==ParticleID::gamma||part->id()==ParticleID::Z0) Zdecay.push_back(outgoing[ix]); } } if(Zdecay.size()!=2) return; Lorentz5Momentum pZ=Zdecay[0]->momentum()+Zdecay[1]->momentum(); pZ.rescaleMass(); if(pZ.mass()<71.*GeV||pZ.mass()>111.*GeV) return; *_hy += pZ.rapidity(); // remove leptons from outgoing particles for(unsigned int ix=0;ix::iCharge(p); } }; } void LEPFourJetsAnalysis::persistentOutput(PersistentOStream & os) const { os << _charged; } void LEPFourJetsAnalysis::persistentInput(PersistentIStream & is, int) { is >> _charged; } void LEPFourJetsAnalysis::analyze(tEventPtr event, long, int, int ) { tPVector particles; if (_charged) { event->select(back_inserter(particles), ThePEG::ParticleSelector()); } else { event->select(back_inserter(particles),SelectFinalState()); } // copy fastjet particles from event record. Templated fastjet // method might leave units ambigouos. Loop with integer index // allows backtracing ThePEG particles if needed. vector fastjet_particles; for (unsigned int j=0; jmomentum().x()/GeV, particles[j]->momentum().y()/GeV, particles[j]->momentum().z()/GeV, particles[j]->momentum().e()/GeV); p.set_user_index(j); fastjet_particles.push_back(p); } fastjet::RecombinationScheme recomb_scheme = fastjet::E_scheme; fastjet::Strategy strategy = fastjet::Best; fastjet::JetDefinition jet_def(fastjet::ee_kt_algorithm, recomb_scheme, strategy); fastjet::ClusterSequence cs(fastjet_particles, jet_def); vector fastjets = cs.exclusive_jets_ycut(0.008); vector sorted = fastjet::sorted_by_E(fastjets); vector jets; if (sorted.size() == 4) { for (int j=0; j<4; ++j) { if ((cs.constituents(sorted[j])).size() == 1) { throw Exception() << "LEPFourJetsAnalysis: Trying to extract jet " << "momenta from a single particle." << Exception::warning; } LorentzMomentum newjet(sorted[j].px()*GeV, sorted[j].py()*GeV, sorted[j].pz()*GeV, sorted[j].e()*GeV); jets.push_back(newjet); } *_cchiBZ += abs(cosChiBZ(jets)); *_cphiKSW += cosPhiKSW(jets); *_cthNR += abs(cosThetaNR(jets)); *_ca34 += cosAlpha34(jets); } } ClassDescription LEPFourJetsAnalysis::initLEPFourJetsAnalysis; // Definition of the static class description member. void LEPFourJetsAnalysis::Init() { static ClassDocumentation documentation ("The LEP FourJets Analysis class", "The LEP FourJets analysis uses data from \\cite{Heister:2002tq}.", "%\\cite{Heister:2002tq}\n" "\\bibitem{Heister:2002tq}\n" " A.~Heister {\\it et al.} [ALEPH Collaboration],\n" " ``Measurements of the strong coupling constant and the QCD colour factors\n" " %using four-jet observables from hadronic Z decays,''\n" " Eur.\\ Phys.\\ J.\\ C {\\bf 27}, 1 (2003).\n" " %%CITATION = EPHJA,C27,1;%%\n" ); static Switch interfaceChargedParticles ("ChargedParticles", "Wether or not to use charged particles only for this analysis", &LEPFourJetsAnalysis::_charged, true, false, false); static SwitchOption interfaceChargedParticlesYes (interfaceChargedParticles, "Yes", "Use charged particles only", true); static SwitchOption interfaceChargedParticlesNo (interfaceChargedParticles, "No", "Use all final state particles", false); } void LEPFourJetsAnalysis::dofinish() { useMe(); AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); _ca34->normaliseToData(); _cchiBZ->normaliseToData(); _cphiKSW->normaliseToData(); _cthNR->normaliseToData(); // chisq double chisq,minfrac=0.05; unsigned int npoint; generator()->log() << "Output from LEPFourJetsAnalysis \n"; _ca34->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for alpha_34 four jet distribution or " << chisq/npoint << " per degree of freedom \n"; _cchiBZ->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for BZ four jet distribution or " << chisq/npoint << " per degree of freedom \n"; _cphiKSW->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for KSW four jet distribution or " << chisq/npoint << " per degree of freedom \n"; _cthNR->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for NR four jet distribution or " << chisq/npoint << " per degree of freedom \n"; using namespace HistogramOptions; // output the plots _ca34->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "cosA0341 to DELPHI data", " GX X ", "1/NdN/dcosA0341", " GX X", "cosA0341", " GX X"); _cchiBZ->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "cos|C0BZ1| to DELPHI data", " GX X ", "1/NdN/dcos|C0BZ1|", " GX X ", "|cosC0BZ1|", " GX X "); _cphiKSW->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "cosF0KSW1 to DELPHI data", " FX X ", "1/NdN/dcosF0KSW1", " FX X", " cosF0KSW1", " FX X"); _cthNR->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "|cosQ0NR1| to DELPHI data", " GX X ", "1/NdN/d|cosQ0NR1|", " GX X ", "|cosQ0NR1|", " GX X "); } void LEPFourJetsAnalysis::doinitrun() { AnalysisHandler::doinitrun(); // 4 jet angles double ca34bins[] = {-1.0, -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0}; double ca34data[]={0.05279 ,0.04785 ,0.04541 ,0.04407 ,0.04461 , 0.04225 ,0.04163 ,0.04166 ,0.04106 ,0.04180 , 0.04171 ,0.04197 ,0.04193 ,0.04280 ,0.04245 , 0.04412 ,0.03966 ,0.03199 ,0.01450 ,0.000417}; double ca34errorstat[]={0.00079 ,0.00075 ,0.00073 ,0.00073 ,0.00074 , 0.00072 ,0.00071 ,0.00071 ,0.00071 ,0.00072 , 0.00071 ,0.00071 ,0.00071 ,0.00072 ,0.00071 , 0.00074 ,0.00068 ,0.00058 ,0.00036 ,0.000062}; double ca34errorsyst[]={0.00267 ,0.00236 ,0.00229 ,0.00227 ,0.00237 , 0.00224 ,0.00214 ,0.00225 ,0.00215 ,0.00221 , 0.00213 ,0.00212 ,0.00208 ,0.00207 ,0.00196 , 0.00207 ,0.00163 ,0.00113 ,0.00033 ,0.000022}; double ca34error[20]; for(unsigned int ix=0;ix<20;++ix){ca34error[ix]=sqrt(sqr(ca34errorstat[ix])+ sqr(ca34errorsyst[ix]));} vector bins = vector(ca34bins ,ca34bins +21); vector data = vector(ca34data ,ca34data +20); vector error = vector(ca34error,ca34error+20); _ca34= new_ptr(Histogram(bins,data,error)); double cchiBZbins[] = {0.00, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.65, 0.70, 0.75, 0.80, 0.85, 0.90, 0.95, 1.00}; double cchiBZdata[]={0.05455 ,0.05346 ,0.05450 ,0.05782 ,0.05730 , 0.05880 ,0.05734 ,0.05973 ,0.06074 ,0.06387 , 0.06483 ,0.06781 ,0.07144 ,0.07206 ,0.07887 , 0.08601 ,0.09318 ,0.09865 ,0.11785 ,0.24115}; double cchiBZerrorstat[]={0.00115 ,0.00113 ,0.00115 ,0.00120 ,0.00120 , 0.00121 ,0.00118 ,0.00121 ,0.00122 ,0.00125 , 0.00126 ,0.00128 ,0.00131 ,0.00129 ,0.00136 , 0.00148 ,0.00146 ,0.00147 ,0.00159 ,0.00244}; double cchiBZerrorsyst[]={0.00288,0.00287,0.00289,0.00306,0.00310, 0.00314,0.00299,0.00311,0.00319,0.00330, 0.00340,0.00332,0.00358,0.00329,0.00365, 0.00412,0.00406,0.00401,0.00432,0.01276}; double cchiBZerror[20]; for(unsigned int ix=0;ix<20;++ix){cchiBZerror[ix]=sqrt(sqr(cchiBZerrorstat[ix])+ sqr(cchiBZerrorsyst[ix]));} bins = vector(cchiBZbins ,cchiBZbins +21); data = vector(cchiBZdata ,cchiBZdata +20); error = vector(cchiBZerror,cchiBZerror+20); _cchiBZ= new_ptr(Histogram(bins,data,error)); double cphiKSWbins[] = {-1.0, -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0}; double cphiKSWdata[]={0.06378 ,0.03897 ,0.03558 ,0.03637 ,0.03597 , 0.03759 ,0.03696 ,0.03886 ,0.03801 ,0.03783 , 0.03342 ,0.03096 ,0.03033 ,0.02974 ,0.02976 , 0.02979 ,0.03068 ,0.03399 ,0.04234 ,0.09341}; double cphiKSWerrorstat[]={0.00091 ,0.00066 ,0.00062 ,0.00065 ,0.00065 , 0.00067 ,0.00065 ,0.00068 ,0.00065 ,0.00064 , 0.00060 ,0.00059 ,0.00060 ,0.00060 ,0.00061 , 0.00061 ,0.00062 ,0.00065 ,0.00072 ,0.00109}; double cphiKSWerrorsyst[]={0.00362,0.00161,0.00143,0.00158,0.00157, 0.00172,0.00165,0.00177,0.00157,0.00143, 0.00130,0.00141,0.00154,0.00158,0.00172, 0.00172,0.00172,0.00191,0.00224,0.00560}; double cphiKSWerror[20]; for(unsigned int ix=0;ix<20;++ix){cphiKSWerror[ix]=sqrt(sqr(cphiKSWerrorstat[ix])+ sqr(cphiKSWerrorsyst[ix]));} bins = vector(cphiKSWbins ,cphiKSWbins +21); data = vector(cphiKSWdata ,cphiKSWdata +20); error = vector(cphiKSWerror,cphiKSWerror+20); _cphiKSW= new_ptr(Histogram(bins,data,error)); double cthNRbins[] = {0.00, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.65, 0.70, 0.75, 0.80, 0.85, 0.90, 0.95, 1.00}; double cthNRerror[20]; double cthNRdata[]={0.06131 ,0.05888 ,0.05937 ,0.06104 ,0.05949 , 0.06317 ,0.06632 ,0.06712 ,0.07040 ,0.07274 , 0.07605 ,0.07707 ,0.08350 ,0.08779 ,0.08856 , 0.09567 ,0.09632 ,0.10124 ,0.10139 ,0.12596}; double cthNRerrorstat[]={0.00119 ,0.00114 ,0.00115 ,0.00118 ,0.00115 , 0.00121 ,0.00125 ,0.00125 ,0.00129 ,0.00131 , 0.00135 ,0.00135 ,0.00142 ,0.00147 ,0.00145 , 0.00154 ,0.00154 ,0.00160 ,0.00158 ,0.00178}; double cthNRerrorsyst[]={0.00281,0.00252,0.00272,0.00281,0.00271, 0.00292,0.00321,0.00324,0.00343,0.00354, 0.00377,0.00376,0.00422,0.00436,0.00431, 0.00503,0.00505,0.00534,0.00506,0.00630}; for(unsigned int ix=0;ix<20;++ix){cthNRerror[ix]=sqrt(sqr(cthNRerrorstat[ix])+ sqr(cthNRerrorsyst[ix]));} bins = vector(cthNRbins ,cthNRbins +21); data = vector(cthNRdata ,cthNRdata +20); error = vector(cthNRerror,cthNRerror+20); _cthNR= new_ptr(Histogram(bins,data,error)); } herwig++-2.6.0.orig/Analysis/BasicConsistency.cc0000644000175000017500000002331711754474773022341 0ustar sylvestresylvestre// -*- C++ -*- // // BasicConsistency.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the BasicConsistency class. // #include "BasicConsistency.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Utilities/EnumParticles.h" #include "ThePEG/PDT/DecayMode.h" using namespace Herwig; using namespace ThePEG; BasicConsistency::BasicConsistency() : _epsmom(ZERO),_checkquark(true), _checkcharge(true), _checkcluster(true), _checkBR(true), _absolutemomentumtolerance(1*MeV), _relativemomentumtolerance(1e-5) {} IBPtr BasicConsistency::clone() const { return new_ptr(*this); } IBPtr BasicConsistency::fullclone() const { return new_ptr(*this); } void BasicConsistency::analyze(tEventPtr event, long, int, int) { bool writeEvent=false; set particles; event->selectFinalState(inserter(particles)); int charge(-event->incoming().first->dataPtr()->iCharge() -event->incoming().second->dataPtr()->iCharge()); Lorentz5Momentum ptotal(-event->incoming().first->momentum() -event->incoming().second->momentum()); const Energy beamenergy = ptotal.m(); for(set::const_iterator it = particles.begin(); it != particles.end(); ++it) { if (_checkquark && (*it)->coloured()) { cerr << "Had quarks in final state in event " << event->number() << '\n'; generator()->log() << "Had quarks in final state in event " << event->number() << '\n'; writeEvent = true; } else if( _checkcluster && (**it).id()==ParticleID::Cluster) { cerr << "Had clusters in final state in event " << event->number() << '\n'; generator()->log() << "Had clusters in final state in event " << event->number() << '\n'; writeEvent = true; } charge += (*it)->dataPtr()->iCharge(); ptotal += (*it)->momentum(); bool problem=false; LorentzDistance test; for(unsigned int ix=0;ix<5;++ix) { switch (ix) { case 0: test = (*it)->vertex(); break; case 1: test = (*it)->labVertex(); break; case 2: test = (*it)->decayVertex(); break; case 3: test = (*it)->labDecayVertex(); break; case 4: test = (*it)->lifeLength(); break; } problem |= isnan(test.x()/mm) || isnan(test.y()/mm) || isnan(test.z()/mm) || isnan(test.t()/mm) || isinf(test.x()/mm) || isinf(test.y()/mm) || isinf(test.z()/mm) || isinf(test.t()/mm); } if(problem) { generator()->log() << "Problem with position of " << **it << "\n" << (*it)->vertex()/mm << "\n" << (*it)->labVertex()/mm << "\n" << (*it)->decayVertex()/mm << "\n" << (*it)->labDecayVertex()/mm << "\n" << (*it)->lifeLength()/mm << "\n"; } } if ( _checkcharge && charge != 0 ) { cerr << "\nCharge imbalance by " << charge << "in event " << event->number() << '\n'; generator()->log() << "Charge imbalance by " << charge << "in event " << event->number() << '\n'; writeEvent = true; } Energy mag = ptotal.m(); Energy ee = ptotal.e(); if (isnan(mag/MeV)) { cerr << "\nMomentum is 'nan'; " << ptotal/MeV << " MeV in event " << event->number() << '\n'; generator()->log() <<"\nMomentum is 'nan'; " << ptotal/MeV << " MeV in event " << event->number() << '\n'; writeEvent = true; } const Energy epsilonmax = max( _absolutemomentumtolerance, _relativemomentumtolerance * beamenergy ); if (abs(mag) > epsilonmax || abs(ee) > epsilonmax) { cerr << "\nMomentum imbalance by " << ptotal/MeV << " MeV in event " << event->number() << '\n'; generator()->log() <<"\nMomentum imbalance by " << ptotal/MeV << " MeV in event " << event->number() << '\n'; writeEvent = true; } if (abs(mag) > _epsmom) _epsmom = abs(mag); if (abs(ee) > _epsmom) _epsmom = abs(ee); if (abs(ptotal.x()) > _epsmom) _epsmom = abs(ptotal.x()); if (abs(ptotal.y()) > _epsmom) _epsmom = abs(ptotal.y()); if (abs(ptotal.z()) > _epsmom) _epsmom = abs(ptotal.z()); particles.clear(); event->select(inserter(particles), ThePEG::AllSelector()); for(set::const_iterator it = particles.begin(); it != particles.end(); ++it) { bool problem=false; LorentzDistance test; for(unsigned int ix=0;ix<5;++ix) { switch (ix) { case 0: test = (*it)->vertex(); break; case 1: test = (*it)->labVertex(); break; case 2: test = (*it)->decayVertex(); break; case 3: test = (*it)->labDecayVertex(); break; case 4: test = (*it)->lifeLength(); break; } problem |= isnan(test.m2()/mm/mm) || isinf(test.m2()/mm/mm); } if(problem) { generator()->log() << "Problem with position of " << **it << "\n" << (*it)->vertex()/mm << "\n" << (*it)->labVertex()/mm << "\n" << (*it)->decayVertex()/mm << "\n" << (*it)->labDecayVertex()/mm << "\n" << (*it)->lifeLength()/mm << "\n"; writeEvent=true; } } if(writeEvent) generator()->log() << *event; } void BasicConsistency::persistentOutput(PersistentOStream & os) const { os << _checkquark << _checkcharge << _checkcluster << _checkBR << ounit(_absolutemomentumtolerance,MeV) << _relativemomentumtolerance; } void BasicConsistency::persistentInput(PersistentIStream & is, int) { is >> _checkquark >> _checkcharge >> _checkcluster >> _checkBR >> iunit(_absolutemomentumtolerance,MeV) >> _relativemomentumtolerance; } ClassDescription BasicConsistency::initBasicConsistency; // Definition of the static class description member. void BasicConsistency::Init() { static ClassDocumentation documentation ("The BasicConsistency analysis handler checks for" " momentum and charge conservation."); static Switch interfaceCheckQuark ("CheckQuark", "Check whether there are quarks in the final state", &BasicConsistency::_checkquark, true, false, false); static SwitchOption interfaceCheckQuarkCheck (interfaceCheckQuark, "Yes", "Check for quarks", true); static SwitchOption interfaceCheckQuarkNoCheck (interfaceCheckQuark, "No", "Don't check for quarks", false); static Switch interfaceCheckCharge ("CheckCharge", "Check whether charge is conserved", &BasicConsistency::_checkcharge, true, false, false); static SwitchOption interfaceCheckChargeCheck (interfaceCheckCharge, "Yes", "Check charge conservation", true); static SwitchOption interfaceCheckChargeNoCheck (interfaceCheckCharge, "No", "Don't check charge conservation", false); static Switch interfaceCheckCluster ("CheckCluster", "Check whether there are clusters in the final state", &BasicConsistency::_checkcluster, true, false, false); static SwitchOption interfaceCheckClusterCheck (interfaceCheckCluster, "Yes", "Check for clusters", true); static SwitchOption interfaceCheckClusterNoCheck (interfaceCheckCluster, "No", "Don't check for clusters", false); static Switch interfaceCheckBranchingRatios ("CheckBranchingRatios", "Check whether the branching ratios of the particles add up to one.", &BasicConsistency::_checkBR, true, false, false); static SwitchOption interfaceCheckBranchingRatiosYes (interfaceCheckBranchingRatios, "Yes", "Perform the check", true); static SwitchOption interfaceCheckBranchingRatiosNo (interfaceCheckBranchingRatios, "No", "Don't perform the check", false); static Parameter interfaceAbsoluteMomentumTolerance ("AbsoluteMomentumTolerance", "The value of the momentum imbalance above which warnings are issued/MeV.\n" "Final tolerance is the larger of AbsoluteMomentumTolerance and\n" "RelativeMomentumTolerance*beam energy.", &BasicConsistency::_absolutemomentumtolerance, MeV, 1*MeV, ZERO, 1e10*GeV, false, false, true); static Parameter interfaceRelativeMomentumTolerance ("RelativeMomentumTolerance", "The value of the momentum imbalance as a fraction of the beam energy\n" "above which warnings are issued.\n" "Final tolerance is the larger of AbsoluteMomentumTolerance and\n" "RelativeMomentumTolerance*beam energy.", &BasicConsistency::_relativemomentumtolerance, 1e-5, 0.0, 1.0, false, false, true); } void BasicConsistency::dofinish() { AnalysisHandler::dofinish(); cout << "\nBasicConsistency: maximum 4-momentum violation: " << _epsmom/MeV << " MeV\n"; } void BasicConsistency::doinitrun() { AnalysisHandler::doinitrun(); static double eps=1e-12; for(ParticleMap::const_iterator it=generator()->particles().begin(); it!=generator()->particles().end();++it) { if(it->second->stable()) continue; double total(0.); for(DecaySet::const_iterator dit=it->second->decayModes().begin(); dit!=it->second->decayModes().end();++dit) { if((**dit).on()) total +=(**dit).brat(); } if(abs(total-1.)>eps) { cerr << "Warning: Total BR for " << it->second->PDGName() << " does not add up to 1. sum = " << total << "\n"; } } } herwig++-2.6.0.orig/Analysis/LPairAnalysis.cc0000644000175000017500000001155411754474773021611 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the LPairAnalysis class. // #include "LPairAnalysis.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; namespace { inline Lorentz5Momentum getMomentum(tcPPtr particle) { return particle->momentum(); } inline bool isLeptonPlus(tcPPtr p) { if ( p->id() == ParticleID::eplus || p->id() == ParticleID::muplus || p->id() == ParticleID::tauplus ) { return true; }else { return false; } } inline bool isLeptonMinus(tcPPtr p) { if ( p->id() == ParticleID::eminus || p->id() == ParticleID::muminus || p->id() == ParticleID::tauminus ) { return true; }else { return false; } } inline bool isFromTop(tcPPtr p) { while (p->parents()[0] && p->parents().size() == 1) { p = p->parents()[0]; if (abs(p->id()) == ParticleID::t) { return true; } } return false; } } LPairAnalysis::LPairAnalysis() : _ptp(0.,250.,100), _ptm(0.,250.,100), _ptpair(0.,250.,100), _etp(0.,250.,100), _etm(0.,250.,100), _etpair(0.,250.,100), _ep(0.,1000.,100), _em(1.,3000.,100), _epair(0.,1500.,100), _rapp(-5.,5.,100), _rapm(-5.,5.,100), _rappair(-5.,5.,100), _phip(-Constants::pi,Constants::pi,50), _phim(-Constants::pi,Constants::pi,50), _deltaphi(-Constants::pi,Constants::pi,100), _mpair(0,750,100), _etsum(0.,400.,100), _ptsum(0.,400.,100) {} void LPairAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; _ptp.topdrawOutput(outfile,Frame|Ylog,"RED","pt lp, lm"); _ptm.topdrawOutput(outfile,Ylog,"BLUE",""); _ptpair.topdrawOutput(outfile,Frame|Ylog,"BLACK","pt pair"); _etp.topdrawOutput(outfile,Frame|Ylog,"RED","Et lp, lm"); _etm.topdrawOutput(outfile,Ylog,"BLUE",""); _etpair.topdrawOutput(outfile,Frame|Ylog,"BLACK","Et pair"); _ep.topdrawOutput(outfile,Frame|Ylog,"RED","E lp, lm"); _em.topdrawOutput(outfile,Ylog,"BLUE",""); _epair.topdrawOutput(outfile,Frame|Ylog,"BLACK","E pair"); _rapp.topdrawOutput(outfile,Frame,"RED","y lp, lm"); _rapm.topdrawOutput(outfile,None,"BLUE",""); _rappair.topdrawOutput(outfile,Frame,"BLACK","y pair"); _phip.topdrawOutput(outfile,Frame,"RED","phi lp, lm"); _phim.topdrawOutput(outfile,None,"BLUE",""); _deltaphi.topdrawOutput(outfile,Frame,"BLACK","Delta phi"); _mpair.topdrawOutput(outfile,Frame|Ylog,"BLACK","M pair"); _etsum.topdrawOutput(outfile,Frame|Ylog,"BLACK","pt sum"); _ptsum.topdrawOutput(outfile,Frame|Ylog,"BLACK","Et sum"); } void LPairAnalysis::analyze(tEventPtr event, long, int, int) { Lorentz5Momentum ppair, plp, plm; bool foundlp = false; bool foundlm = false; set particles; event->selectFinalState(inserter(particles)); // find highest pt lepton+ and lepton- in the event resp. for(set::const_iterator it = particles.begin(); it != particles.end(); ++it) { if( isLeptonPlus(*it) ) { // if ( getMomentum(*it).perp() > plp.perp() ) { if (isFromTop(*it)) { plp = getMomentum(*it); foundlp = true; } } else if( isLeptonMinus(*it) ) { // if ( getMomentum(*it).perp() > plm.perp() ) { if (isFromTop(*it)) { plm = getMomentum(*it); foundlm = true; } } } if (foundlp && foundlm) { ppair = plp + plm; _ptp += plp.perp()/GeV; _ptm += plm.perp()/GeV; _ptpair += ppair.perp()/GeV; _etp += plp.et()/GeV; _etm += plm.et()/GeV; _etpair += ppair.et()/GeV; _ep += plp.e()/GeV; _em += plm.e()/GeV; _epair += ppair.e()/GeV; _rapp += plp.rapidity(); _rapm += plm.rapidity(); _rappair += ppair.rapidity(); _phip += plp.phi(); _phim += plm.phi(); _deltaphi += (plp.vect()).deltaPhi(plm.vect()); _mpair += ppair.m()/GeV; _etsum += (plp.et() + plm.et())/GeV; _ptsum += (plp.perp() + plm.perp())/GeV; } else { cerr << "Analysis/LPairAnalysis: did not find suitable lepton" << " pair in event " << event->number() << " (" << (foundlp ? "+" : "0") << (foundlm ? "-" : "0") << ").\n"; generator()->log() << "Analysis/LPairAnalysis: " << "Found no suitable lepton pair in event " << event->number() << ".\n" << *event; } } NoPIOClassDescription LPairAnalysis::initLPairAnalysis; // Definition of the static class description member. void LPairAnalysis::Init() { static ClassDocumentation documentation ("There is no documentation for the LPairAnalysis class"); } herwig++-2.6.0.orig/Analysis/EventShapesMasterAnalysis.cc0000644000175000017500000000374111754474773024202 0ustar sylvestresylvestre// -*- C++ -*- // // EventShapesMasterAnalysis.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the EventShapesMasterAnalysis class. // #include "EventShapesMasterAnalysis.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void EventShapesMasterAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); } LorentzRotation EventShapesMasterAnalysis::transform(tEventPtr) const { return LorentzRotation(); // Return the Rotation to the frame in which you want to perform the analysis. } void EventShapesMasterAnalysis::analyze(const tPVector & particles) { _shapes->reset(particles); } void EventShapesMasterAnalysis::analyze(tPPtr) {} void EventShapesMasterAnalysis::persistentOutput(PersistentOStream & os) const { os << _shapes; } void EventShapesMasterAnalysis::persistentInput(PersistentIStream & is, int) { is >> _shapes; } ClassDescription EventShapesMasterAnalysis::initEventShapesMasterAnalysis; // Definition of the static class description member. void EventShapesMasterAnalysis::Init() { static ClassDocumentation documentation ("The EventShapesMasterAnalysis class is the master class for event" " shapes analyses"); static Reference interfaceEventShapes ("EventShapes", "Pointer to the object which calculates the event shapes", &EventShapesMasterAnalysis::_shapes, false, false, true, false, false); } herwig++-2.6.0.orig/Analysis/GammaGammaAnalysis.cc0000644000175000017500000001070311754474773022562 0ustar sylvestresylvestre// -*- C++ -*- // // GammaGammaAnalysis.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the GammaGammaAnalysis class. // #include "GammaGammaAnalysis.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; GammaGammaAnalysis::GammaGammaAnalysis() : _ptharder(0.,250.,100), _ptsofter(0.,250.,100), _ptpair(0.,250.,100), _Eharder(0.,3000.,100), _Esofter(0.,3000.,100), _Epair(0.,6000.,100), _rapharder(-12.,12.,120), _rapsofter(-12.,12.,120), _rappair(-12.,12.,120), _phiharder(-Constants::pi,Constants::pi,50), _phisofter(-Constants::pi,Constants::pi,50), _deltaphi(-Constants::pi,Constants::pi,100), _mpair(0,1000,100) {} void GammaGammaAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; _ptharder.topdrawOutput(outfile,Frame|Ylog,"BLACK","pt harder"); _ptsofter.topdrawOutput(outfile,Frame|Ylog,"BLACK","pt softer"); _ptpair.topdrawOutput(outfile,Frame|Ylog,"BLACK","pt pair"); _Eharder.topdrawOutput(outfile,Frame|Ylog,"BLACK","E harder"); _Esofter.topdrawOutput(outfile,Frame|Ylog,"BLACK","E softer"); _Epair.topdrawOutput(outfile,Frame|Ylog,"BLACK","E pair"); _rapharder.topdrawOutput(outfile,Frame,"BLACK","y harder"); _rapsofter.topdrawOutput(outfile,Frame,"BLACK","y softer"); _rappair.topdrawOutput(outfile,Frame,"BLACK","y pair"); _phiharder.topdrawOutput(outfile,Frame,"BLACK","phi harder"); _phisofter.topdrawOutput(outfile,Frame,"BLACK","phi softer"); _deltaphi.topdrawOutput(outfile,Frame,"BLACK","Delta phi"); _mpair.topdrawOutput(outfile,Frame|Ylog,"BLACK","M pair"); outfile.close(); } namespace { inline Lorentz5Momentum getMomentum(tcPPtr particle) { return particle->momentum(); //Lorentz5Momentum tmp = particle->children()[0]->next()->momentum(); //tmp += particle->children()[1]->next()->momentum(); //tmp.rescaleMass(); //return tmp; } } void GammaGammaAnalysis::analyze(tEventPtr event, long, int, int) { // AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). // find the Z Lorentz5Momentum p1, p2, ppair; bool foundphotons = false; set particles; event->selectFinalState(inserter(particles)); for(set::const_iterator it = particles.begin(); it != particles.end(); ++it) { if((**it).id()==ParticleID::gamma) { // find the two hardest photons in the event if( getMomentum(*it).perp() > p2.perp() ) { if (getMomentum(*it).perp() > p1.perp()) { p2 = p1; p1 = getMomentum(*it); } else { p2 = getMomentum(*it); } } } } // cerr << "E1 = " << p1.e()/GeV << ", E1 = " << p1.e()/GeV << "\n"; if (p1.perp()/GeV > 0 && p2.perp()/GeV > 0) foundphotons = true; ppair = p1 + p2; if (foundphotons) { _ptharder += p1.perp()/GeV; _ptsofter += p2.perp()/GeV; _ptpair += ppair.perp()/GeV; _Eharder += p1.e()/GeV; _Esofter += p2.e()/GeV; _Epair += ppair.e()/GeV; _rapharder += p1.rapidity(); _rapsofter += p2.rapidity(); _rappair += ppair.rapidity(); _phiharder += p1.phi(); _phisofter += p2.phi(); _deltaphi += (p2.vect()).deltaPhi(p1.vect()); _mpair += ppair.m()/GeV; } else { cerr << "Analysis/GammaGammaAnalysis: Found no hard photon in event " << event->number() << ".\n"; generator()->log() << "Analysis/GammaGammaAnalysis: " << "Found no hard photon in event " << event->number() << ".\n" << *event; } } NoPIOClassDescription GammaGammaAnalysis::initGammaGammaAnalysis; // Definition of the static class description member. void GammaGammaAnalysis::Init() { static ClassDocumentation documentation ("There is no documentation for the GammaGammaAnalysis class"); } herwig++-2.6.0.orig/Analysis/GammaJetAnalysis.cc0000644000175000017500000000707111754474773022266 0ustar sylvestresylvestre// -*- C++ -*- // // GammaJetAnalysis.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the GammaJetAnalysis class. // #include "GammaJetAnalysis.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; GammaJetAnalysis::GammaJetAnalysis() : _ptg(0.,250.,100), _ptgZoom(35.,65.,100), _Eg(0,3000,100), _rapg(-10.,10.,100), _phig(-Constants::pi,Constants::pi,100) {} void GammaJetAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; _Eg.topdrawOutput(outfile,Frame,"BLACK","Energy of Gamma"); _Eg.topdrawOutput(outfile,Frame|Ylog,"BLACK","Energy of Gamma"); _ptg.topdrawOutput(outfile,Frame,"BLACK","pt of Gamma"); _ptg.topdrawOutput(outfile,Frame|Ylog,"BLACK","pt of Gamma"); _ptgZoom.topdrawOutput(outfile,Frame,"BLACK","35momentum(); //Lorentz5Momentum tmp = particle->children()[0]->next()->momentum(); //tmp += particle->children()[1]->next()->momentum(); //tmp.rescaleMass(); //return tmp; } } void GammaJetAnalysis::analyze(tEventPtr event, long, int, int) { // AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). // find the Z Lorentz5Momentum pg; bool foundphoton = false; set particles; event->selectFinalState(inserter(particles)); for(set::const_iterator it = particles.begin(); it != particles.end(); ++it) { if((**it).id()==ParticleID::gamma) { // only book the hardest photon in the event if( (**it).momentum().perp() > pg.perp() ) { foundphoton = true; pg=getMomentum(*it); } } } if (foundphoton) { Energy pt = pg.perp(); (_ptg)+=(pt)/GeV; (_Eg)+=pg.e()/GeV; (_ptgZoom)+=(pt)/GeV; double rap = 0.5*log((pg.e()+pg.z())/(pg.e()-pg.z())); (_rapg)+=(rap); (_phig)+=pg.phi(); } else { cerr << "Analysis/GammaJetAnalysis: Found no hard photon in event " << event->number() << ".\n"; generator()->log() << "Analysis/GammaJetAnalysis: " << "Found no hard photon in event " << event->number() << ".\n" << *event; } } NoPIOClassDescription GammaJetAnalysis::initGammaJetAnalysis; // Definition of the static class description member. void GammaJetAnalysis::Init() { static ClassDocumentation documentation ("There is no documentation for the GammaJetAnalysis class"); } herwig++-2.6.0.orig/Analysis/BasicConsistency.h0000644000175000017500000001271411754474773022202 0ustar sylvestresylvestre// -*- C++ -*- // // BasicConsistency.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef THEPEG_BasicConsistency_H #define THEPEG_BasicConsistency_H // // This is the declaration of the BasicConsistency class. // #include "ThePEG/Handlers/AnalysisHandler.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * The BasicConsistency class is a simple analysis which performs a basic * analysis of the event checking that energy, momentum and charge are * conserved and no quarks or clusters are final-state particles. * * @see \ref BasicConsistencyInterfaces "The interfaces" * defined for BasicConsistency. */ class BasicConsistency: public AnalysisHandler { public: /** * The default constructor. */ BasicConsistency(); /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} 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. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initBasicConsistency; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BasicConsistency & operator=(const BasicConsistency &); private: /** * Maximum momentum deviation */ Energy _epsmom; /** * check for quarks */ bool _checkquark; /** * check for charge conservation */ bool _checkcharge; /** * Check for clusters in the final-state */ bool _checkcluster; /** * Check the branching ratios */ bool _checkBR; /** * Maximum absolute momentum deviation before warning */ Energy _absolutemomentumtolerance; /** * Maximum momentum deviation relative to beam energy before warning */ double _relativemomentumtolerance; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of BasicConsistency. */ template <> struct BaseClassTrait { /** Typedef of the first base class of BasicConsistency. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the BasicConsistency class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::BasicConsistency"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the BasicConsistency class and any other class on which it depends * (except the base class). */ static string library() { return "HwAnalysis.so"; } }; /** @endcond */ } #endif /* THEPEG_BasicConsistency_H */ herwig++-2.6.0.orig/Analysis/MultiplicityInfo.h0000644000175000017500000000467611754474773022253 0ustar sylvestresylvestre// -*- C++ -*- // // MultiplicityInfo.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respe #include "Herwig++/Utilities/Statistic.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * Enumeration for species of particle */ enum ParticleSpecies { lightMeson=0,strangeMeson,lightBaryon,other }; /** \ingroup Analysis * Struct for the multiplcity data */ struct MultiplicityInfo { /** * Default constructor * @param mult The observed multiplcity. * @param error The error on the observed multiplicity * @param type The type of particle */ MultiplicityInfo(double mult=0.,double error=0., ParticleSpecies type=other) : obsMultiplicity(mult), obsError(error), type(type) {}; /** * The observed multiplicity */ double obsMultiplicity; /** * The error on the observed multiplicity */ double obsError; /** * The type of particle */ ParticleSpecies type; /** * Simulation statistics for particles of this type */ Statistic count; /** * The average number per event */ double simMultiplicity() { return count.mean();} /** * The error on the average number per event */ double simError() { return count.mean_stdDev();} /** * Is the result more than \f$3\sigma\f$ from the experimental result */ double nSigma() { return obsMultiplicity == 0.0 ? 0.0 : (simMultiplicity() - obsMultiplicity) / sqrt(sqr(simError()) + sqr(obsError)); } /** * Plot standard error in a simple barchart */ string bargraph() { if (obsMultiplicity == 0.0) return " ? "; else if (nSigma() >= 6.0) return "-----|---->"; else if (nSigma() >= 5.0) return "-----|----*"; else if (nSigma() >= 4.0) return "-----|---*-"; else if (nSigma() >= 3.0) return "-----|--*--"; else if (nSigma() >= 2.0) return "-----|-*---"; else if (nSigma() >= 1.0) return "-----|*----"; else if (nSigma() > -1.0) return "-----*-----"; else if (nSigma() > -2.0) return "----*|-----"; else if (nSigma() > -3.0) return "---*-|-----"; else if (nSigma() > -4.0) return "--*--|-----"; else if (nSigma() > -5.0) return "-*---|-----"; else if (nSigma() > -6.0) return "*----|-----"; else return "<----|-----"; } }; } herwig++-2.6.0.orig/Analysis/CLEOCharmAnalysis.cc0000644000175000017500000001557411754474773022305 0ustar sylvestresylvestre// -*- C++ -*- // // CLEOCharmAnalysis.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the CLEOCharmAnalysis class. // #include "CLEOCharmAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; void CLEOCharmAnalysis::analyze(tEventPtr event, long, int, int) { _s = (event->incoming().first ->momentum()+ event->incoming().second->momentum()).m2(); double weight = event->weight(); set particles; StepVector steps = event->primaryCollision()->steps(); for ( StepVector::const_iterator it = steps.begin()+2; it != steps.end(); ++it ) { (**it).select(inserter(particles), ThePEG::AllSelector()); } tPVector output; for(set::const_iterator it = particles.begin(); it != particles.end(); ++it) { long id = abs((*it)->id()); if(id==ParticleID::Dplus || id==ParticleID::Dstarplus || id==ParticleID::D0 || id==ParticleID::Dstar0 ) output.push_back(*it); } analyze(output,weight); } void CLEOCharmAnalysis::analyze(tPPtr particle, double weight) { // Calls analyze() for each particle. double xp = particle->momentum().vect().mag()/ sqrt(0.25*_s-sqr(particle->mass())); int id = abs(particle->id()); if(id==ParticleID::Dstarplus) { _histDstarplus->addWeighted(xp,weight); } else if(id==ParticleID::Dstar0) { _histDstar0 ->addWeighted(xp,weight); } else if(id==ParticleID::D0) { _histD0 ->addWeighted(xp,weight); } else if(id==ParticleID::Dplus) { _histDplus ->addWeighted(xp,weight); } } NoPIOClassDescription CLEOCharmAnalysis::initCLEOCharmAnalysis; // Definition of the static class description member. void CLEOCharmAnalysis::Init() { static ClassDocumentation documentation ("CLEO Charm meson analysis class", "The CLEO Charm meson analysis uses data from \\cite{Artuso:2004pj}.", "%\\cite{Artuso:2004pj}\n" "\\bibitem{Artuso:2004pj}\n" " M.~Artuso {\\it et al.} [CLEO Collaboration],\n" " %``Charm meson spectra in $e^{+} e^{-}$ annihilation at 10.5-GeV c.m.e,''\n" " Phys.\\ Rev.\\ D {\\bf 70}, 112001 (2004)\n" " [arXiv:hep-ex/0402040].\n" " %%CITATION = PHRVA,D70,112001;%%\n" ); } void CLEOCharmAnalysis::dofinish() { useMe(); AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; double chisq=0.,minfrac=0.05; unsigned int ndegrees; _histDstarplus->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for CLEO D*+ distribution\n"; _histDstar0 ->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for CLEO D*0 distribution\n"; _histD0 ->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for CLEO D0 distribution\n"; _histDplus ->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for CLEO D+ distribution\n"; _histDstarplus->topdrawOutput(output,Frame|Errorbars, "RED", "D2*+3", " X X", "1/SdS/dx0p1", " G G X X", "x0p1", " X X"); _histDstar0->topdrawOutput(output,Frame|Errorbars, "RED", "D2*03", " X X", "1/SdS/dx0p1", " G G X X", "x0p1", " X X"); _histD0->topdrawOutput(output,Frame|Errorbars, "RED", "D203", " X X", "1/SdS/dx0p1", " G G X X", "x0p1", " X X"); _histDplus->topdrawOutput(output,Frame|Errorbars, "RED", "D2+3", " X X", "1/SdS/dx0p1", " G G X X", "x0p1", " X X"); } void CLEOCharmAnalysis::doinitrun() { AnalysisHandler::doinitrun(); double vals[]={0.10,0.15,0.20,0.25,0.30,0.35,0.40,0.45,0.50,0.55, 0.60,0.65,0.70,0.75,0.80,0.85,0.90,0.95,1.00}; // data and errors for D+ double dplusdata []={ 161, 320, 356, 413, 693, 909,1042,1271,1357,1370, 1291,1129, 952, 694, 449, 223, 74}; double dpluserror []={ 83, 92, 92, 94, 60, 56, 53, 38, 38, 36, 34, 29, 25, 19, 13, 7, 4}; // data and errors for D0 double d0data []={ 173, 431, 529, 882,1156, 1670,2349,2822,3194,3475, 3371,3007,2549,2008,1383, 829, 339, 90}; double d0error []={ 109, 186, 209, 84, 83, 94, 110, 122, 56, 58, 56, 51, 46, 39, 30, 21, 11, 5}; // data and errors for D*+ double dstarplusdata []={ 146, 253, 348, 494, 624, 920,1108,1244,1286,1248, 1113, 932, 723, 531, 310, 119}; double dstarpluserror[]={ 86, 60, 60, 60, 46, 50, 32, 33, 32, 31, 29, 25, 21, 17, 12, 8}; // data and errors for D*0 double dstar0data []={ 108, 292, 387, 425, 594, 546, 897,1085,1162,1230, 1198,1055, 865, 694, 471, 289, 121}; double dstar0error []={ 121, 115, 111, 103, 98, 92, 108, 70, 65, 64, 60, 52, 45, 36, 27, 20, 15}; // D+ histogram vector bins,data,error; for(unsigned int ix=0;ix<4;++ix) { if(ix==0) { bins = vector(vals+1,vals+19); data = vector(dplusdata ,dplusdata +17); error = vector(dpluserror,dpluserror+17); } else if(ix==1) { bins = vector(vals,vals+19); data = vector(d0data ,d0data +18); error = vector(d0error,d0error+18); } else if(ix==2) { bins = vector(vals+2,vals+19); data = vector(dstarplusdata ,dstarplusdata +16); error = vector(dstarpluserror,dstarpluserror+16); } else if(ix==3) { bins = vector(vals+1,vals+19); data = vector(dstar0data ,dstar0data +17); error = vector(dstar0error,dstar0error+17); } double norm=0.; for(unsigned int iy=0;iymomentum(); if(!particles[ix]->data().charged()) continue; Ncharged++; *_yT += abs(_shapes->yT(p)); *_yS += abs(_shapes->yS(p)); *_ptinT += _shapes->ptInT(p)/GeV; *_ptoutT += _shapes->ptOutT(p)/GeV; *_ptinS += _shapes->ptInS(p)/GeV; *_ptoutS += _shapes->ptOutS(p)/GeV; } // make sure the right bin is booked by subtracting a small amount. *_nch += Ncharged-0.00001; } void SingleParticleAnalysis::persistentOutput(PersistentOStream & os) const { os << _shapes; } void SingleParticleAnalysis::persistentInput(PersistentIStream & is, int) { is >> _shapes; } ClassDescription SingleParticleAnalysis::initSingleParticleAnalysis; // Definition of the static class description member. void SingleParticleAnalysis::Init() { static ClassDocumentation documentation ("LEP SingleParticle analysis class", "The LEP SingleParticle analysis uses data from \\cite{Abreu:1996na}.", "%\\cite{Abreu:1996na}\n" "\\bibitem{Abreu:1996na}\n" " P.~Abreu {\\it et al.} [DELPHI Collaboration],\n" " ``Tuning and test of fragmentation models based on identified particles and\n" " %precision event shape data,''\n" " Z.\\ Phys.\\ C {\\bf 73}, 11 (1996).\n" " %%CITATION = ZEPYA,C73,11;%%\n" ); static Reference interfaceEventShapes ("EventShapes", "Pointer to the object which calculates the event shapes", &SingleParticleAnalysis::_shapes, false, false, true, false, false); } void SingleParticleAnalysis::dofinish() { useMe(); AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); // normalize the data _yT->normaliseToData(); _yS->normaliseToData(); _ptinT->normaliseToData(); _ptoutT->normaliseToData(); _ptinS->normaliseToData(); _ptoutS->normaliseToData(); _nch->prefactor(2.); // chisq double chisq,minfrac=0.05; unsigned int npoint; _yT->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for DELPHI rapidity wrt " << "thrust axis distribution or " << chisq/npoint << " per degree of freedom \n"; _yS->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for DELPHI rapidity wrt " << "sphericity axis distribution or " << chisq/npoint << " per degree of freedom \n"; _ptinT->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for DELPHI pT in the plane wrt " << "thrust axis distribution " << chisq/npoint << " per degree of freedom \n"; _ptoutT->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for DELPHI pT out of the plane wrt " << "thrust axis distribution " << chisq/npoint << " per degree of freedom \n"; _ptinS->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for DELPHI pT in the plane wrt " << "sphericity axis distribution " << chisq/npoint << " per degree of freedom \n"; _ptoutS->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for DELPHI pT out of the wrt " << "sphericity axis plane distribution " << chisq/npoint << " per degree of freedom \n"; _nch->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL number of charged " << "particles distribution or " << chisq/npoint << " per degree of freedom \n"; // output the plots using namespace HistogramOptions; _yT->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Radidity with respect to the thrust axis compared to DELPHI data", " ", "1/NdN/dy0T1", " X X", "y0T1", " X X"); _yS->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Radidity with respect to the sphericity axis" " compared to DELPHI data", " " " ", "1/NdN/dy0S1", " X X", "y0S1", " X X"); _ptinT->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "p0T1 in the plane with respect to the thrust axis" " compared to DELPHI data", " X X " " ", "1/NdN/dp0T,in1", " X X", "p0T,in1", " X X"); _ptoutT->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "p0T1 out of the plane with respect to the thrust axis" " compared to DELPHI data", " X X " " ", "1/NdN/dp0T,out1", " X X", "p0T,out1", " X X"); _ptinS->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "p0T1 in the plane with respect to the sphericity axis" " compared to DELPHI data", " X X " " ", "1/NdN/dp0T,in1", " X X", "p0T,in1", " X X"); _ptoutS->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "p0T1 out of the plane with respect to the sphericity axis" " compared to DELPHI data", " X X ", "1/NdN/dp0T,out1", " X X", "p0T,out1", " X X"); _nch->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Multiplcity of charged particles compared to OPAL data", " ", "1/SdS/dN0charged1", " G G X X", "N0charged1", " X X"); } void SingleParticleAnalysis::doinitrun() { AnalysisHandler::doinitrun(); vector bins,data,error; // rapidity with respect to thrust axis double vals19[] = {0.000, 0.250, 0.500, 0.750, 1.000, 1.250, 1.500, 1.750, 2.000, 2.250, 2.500, 2.750, 3.000, 3.250, 3.500, 3.750, 4.000, 4.250, 4.500, 5.000, 5.500, 6.000}; double data19[]={5.9517,6.4291,6.6831,6.7763,6.7650, 6.7230,6.6085,6.4346,6.1697,5.7692, 5.1450,4.3511,3.4481,2.5852,1.7999, 1.1669,0.7054,0.3997,0.15673,0.03374, 0.00502}; double error19stat[]={0.0095,0.0095,0.0094,0.0089 ,0.0085, 0.0083,0.0081,0.0080,0.0078 ,0.0076, 0.0072,0.0066,0.0059,0.0051 ,0.0043, 0.0035,0.0027,0.0020,0.00089,0.00041, 0.00016}; double error19syst[]={0.5628 ,0.4417 ,0.3319 ,0.2429 ,0.1755 , 0.1277 ,0.0939 ,0.0710 ,0.0617 ,0.0577 , 0.0514 ,0.0435 ,0.0345 ,0.0259 ,0.0180 , 0.0117 ,0.0071 ,0.0041 ,0.00177,0.00043, 0.00007}; double error19[21]; for(unsigned int ix=0;ix<21;++ix){error19[ix]=sqrt(sqr(error19stat[ix])+ sqr(error19syst[ix]));} bins = vector(vals19 ,vals19 +22); data = vector(data19 ,data19 +21); error = vector(error19,error19+21); _yT= new_ptr(Histogram(bins,data,error)); // rapidity with respect to the sphericity axis double vals20[] = {0.000, 0.250, 0.500, 0.750, 1.000, 1.250, 1.500, 1.750, 2.000, 2.250, 2.500, 2.750, 3.000, 3.250, 3.500, 3.750, 4.000, 4.250, 4.500, 5.000, 5.500, 6.000}; double data20[]={6.5680 ,6.5901 ,6.6094 ,6.6152 ,6.5917 , 6.5817 ,6.5221 ,6.4097 ,6.1741 ,5.7542 , 5.1066 ,4.2721 ,3.3718 ,2.5185 ,1.7588 , 1.1589 ,0.7327 ,0.4402 ,0.1952 ,0.05574, 0.01306}; double error20stat[]={0.0097 , 0.0096 , 0.0093 , 0.0088 , 0.0084 , 0.0082 , 0.0081 , 0.0080 , 0.0079 , 0.0076 , 0.0072 , 0.0066 , 0.0059 , 0.0051 , 0.0042 , 0.0034 , 0.0027 , 0.0021 , 0.0010 , 0.00050 , 0.00024}; double error20syst[]={0.5323 ,0.4246 ,0.3329 ,0.2554 ,0.1908 , 0.1393 ,0.0983 ,0.0673 ,0.0617 ,0.0575 , 0.0511 ,0.0427 ,0.0337 ,0.0252 ,0.0176 , 0.0130 ,0.0105 ,0.0078 ,0.0046 ,0.00180, 0.00055}; double error20[21]; for(unsigned int ix=0;ix<21;++ix){error20[ix]=sqrt(sqr(error20stat[ix])+ sqr(error20syst[ix]));} bins = vector(vals20 ,vals20 +22); data = vector(data20 ,data20 +21); error = vector(error20,error20+21); _yS= new_ptr(Histogram(bins,data,error)); // pt_in with respect to thrust axis double vals21[] = {0.000, 0.100, 0.200, 0.300, 0.400, 0.500, 0.600, 0.700, 0.800, 1.000, 1.200, 1.400, 1.600, 1.800, 2.000, 2.500, 3.000, 3.500, 4.000, 5.000, 6.000, 7.000, 8.000, 10.000, 12.000, 14.000}; double data21[]={46.663 ,39.823 ,29.351 ,21.034 ,15.156 , 11.149 , 8.348 , 6.430 , 4.5131 , 2.9522 , 2.0401 , 1.4597 , 1.0796 , 0.8155 , 0.5326 , 0.2988 , 0.18067 , 0.11471 , 0.06305 , 0.03040 , 0.01501 , 0.00858 , 0.00376 , 0.00123 , 0.00044}; double error21stat[]={0.037 ,0.033 ,0.028 ,0.024 ,0.020 , 0.017 ,0.015 ,0.013 ,0.0076 ,0.0062 , 0.0052 ,0.0044 ,0.0038 ,0.0033 ,0.0017 , 0.0013 ,0.00099 ,0.00079 ,0.00042 ,0.00029 , 0.00021 ,0.00016 ,0.00008 ,0.00004 ,0.00003}; double error21syst[]={1.758 ,1.092 ,0.608 ,0.350 ,0.219 , 0.150 ,0.111 ,0.087 ,0.0624 ,0.0420 , 0.0299 ,0.0222 ,0.0171 ,0.0136 ,0.0095 , 0.0057 ,0.00383,0.00273,0.00171,0.00095, 0.00054,0.00035,0.00017,0.00006,0.00002}; double error21[25]; for(unsigned int ix=0;ix<25;++ix){error21[ix]=sqrt(sqr(error21stat[ix])+ sqr(error21syst[ix]));} bins = vector(vals21 ,vals21 +26); data = vector(data21 ,data21 +25); error = vector(error21,error21+25); _ptinT= new_ptr(Histogram(bins,data,error)); // pt_out with respect to thrust axis double vals22[] = {0.000, 0.100, 0.200, 0.300, 0.400, 0.500, 0.600, 0.700, 0.800, 1.000, 1.200, 1.400, 1.600, 1.800, 2.000, 2.500, 3.000, 3.500}; double data22[]={66.160 ,49.794 ,33.544 ,21.407 ,13.466 , 8.527 , 5.448 , 3.5845 , 2.0309 , 0.9959 , 0.5288 , 0.2987 , 0.1755 , 0.1086 , 0.05266 , 0.01885 , 0.00814}; double error22stat[]={0.043 ,0.037 ,0.030 ,0.024 ,0.019 , 0.015 ,0.012 ,0.0098 ,0.0052 ,0.0037 , 0.0028 ,0.0021 ,0.0016 ,0.0013 ,0.00058 , 0.00035 ,0.00023}; double error22syst[]={1.822 ,1.149 ,0.678 ,0.397 ,0.239 , 0.150 ,0.097 ,0.0658 ,0.0398 ,0.0216 , 0.0127 ,0.0079 ,0.0051 ,0.0034 ,0.00189, 0.00080,0.00040}; double error22[17]; for(unsigned int ix=0;ix<17;++ix){error22[ix]=sqrt(sqr(error22stat[ix])+ sqr(error22syst[ix]));} bins = vector(vals22 ,vals22 +18); data = vector(data22 ,data22 +17); error = vector(error22,error22+17); _ptoutT= new_ptr(Histogram(bins,data,error)); // pt_in with respect to sphericity axis double vals23[] = {0.000, 0.100, 0.200, 0.300, 0.400, 0.500, 0.600, 0.700, 0.800, 1.000, 1.200, 1.400, 1.600, 1.800, 2.000, 2.500, 3.000, 3.500, 4.000, 5.000, 6.000, 7.000, 8.000, 10.000, 12.000, 14.000}; double data23[]={49.206 ,38.461 ,28.203 ,20.391 ,14.926 , 11.133 , 8.458 , 6.548 , 4.6706 , 3.0684 , 2.1299 , 1.5201 , 1.1143 , 0.8398 , 0.5334 , 0.2968 , 0.17343 , 0.10741 , 0.05615 , 0.02473 , 0.01157 , 0.00561 , 0.00204 , 0.00049 , 0.00012 }; double error23stat[]={0.038 ,0.033 ,0.027 ,0.023 ,0.020 , 0.017 ,0.015 ,0.013 ,0.0078 ,0.0064 , 0.0053 ,0.0045 ,0.0039 ,0.0034 ,0.0017 , 0.0013 ,0.00098 ,0.00078 ,0.00040 ,0.00027 , 0.00019 ,0.00013 ,0.00006 ,0.00003 ,0.00001}; double error23syst[]={1.672 ,0.984 ,0.571 ,0.349 ,0.233 , 0.168 ,0.129 ,0.102 ,0.0747 ,0.0504 , 0.0359 ,0.0264 ,0.0201 ,0.0159 ,0.0107 , 0.0065 ,0.00418,0.00292,0.00176,0.00089, 0.00048,0.00026,0.00010,0.00002,0.00001}; double error23[25]; for(unsigned int ix=0;ix<25;++ix){error23[ix]=sqrt(sqr(error23stat[ix])+ sqr(error23syst[ix]));} bins = vector(vals23 ,vals23 +26); data = vector(data23 ,data23 +25); error = vector(error23,error23+25); _ptinS= new_ptr(Histogram(bins,data,error)); // pt_out with respect to sphericity axis double vals24[] = {0.000, 0.100, 0.200, 0.300, 0.400, 0.500, 0.600, 0.700, 0.800, 1.000, 1.200, 1.400, 1.600, 1.800, 2.000, 2.500, 3.000, 3.500}; double data24[]={66.825 ,50.556 ,34.241 ,21.708 ,13.481 , 8.314 , 5.180 , 3.2986 , 1.7559 , 0.8187 , 0.4064 , 0.2175 , 0.1232 , 0.0712 , 0.03217 , 0.01112 , 0.00387}; double error24stat[]={0.043 ,0.037 ,0.030 ,0.024 ,0.019 , 0.015 ,0.012 ,0.0094 ,0.0049 ,0.0034 , 0.0024 ,0.0018 ,0.0014 ,0.0011 ,0.00047 , 0.00029 ,0.00017}; double error24syst[]={1.506 ,1.102 ,0.726 ,0.451 ,0.277 , 0.170 ,0.106 ,0.0679 ,0.0370 ,0.0181 , 0.0096 ,0.0055 ,0.0034 ,0.0022 ,0.00115, 0.00050,0.00021}; double error24[17]; for(unsigned int ix=0;ix<17;++ix){error24[ix]=sqrt(sqr(error24stat[ix])+ sqr(error24syst[ix]));} bins = vector(vals24 ,vals24 +18); data = vector(data24 ,data24 +17); error = vector(error24,error24+17); _ptoutS= new_ptr(Histogram(bins,data,error)); // number of charged particles double vals25[]={01., 3., 5., 7., 9., 11.,13.,15.,17.,19., 21.,23.,25.,27.,29., 31.,33.,35.,37.,39., 41.,43.,45.,47.,49., 51.,53.,55.}; double data25[]={0.0010 ,0.016 ,0.16 ,0.68 , 2.08 , 4.69 , 8.00 ,10.79 ,12.61 ,12.85 , 11.83 , 9.99 , 7.85 , 5.95, 4.35 , 2.97 , 2.02 , 1.29 , 0.81 , 0.47 , 0.26 , 0.17 , 0.089 , 0.042 , 0.025 , 0.011 , 0.004}; double error25stat[]={0.0010 ,0.020 ,0.03 ,0.05 , 0.08 , 0.12 , 0.16 , 0.18 , 0.19 , 0.20 , 0.19 , 0.17 , 0.15 , 0.13 , 0.11 , 0.09 , 0.08 , 0.06 , 0.05 , 0.04 , 0.03 , 0.02 , 0.016 , 0.011 , 0.009 , 0.007 , 0.004}; double error25syst[]={0.0,0.0,0.10, 0.18, 0.19, 0.23, 0.19, 0.40, 0.24, 0.34, 0.20, 0.35, 0.14, 0.17, 0.17, 0.09, 0.09, 0.11, 0.06, 0.05, 0.04, 0.05, 0.038, 0.020, 0.015, 0.007, 0.004}; double error25[27]; for(unsigned int ix=0;ix<27;++ix) { error25[ix]=sqrt(sqr(error25stat[ix])+ sqr(error25syst[ix]))/100.; data25[ix]/=100.; } bins = vector(vals25 ,vals25 +28); data = vector(data25 ,data25 +27); error = vector(error25,error25+27); _nch=new_ptr(Histogram(bins,data,error)); } herwig++-2.6.0.orig/Analysis/ZpTRun1.h0000755000175000017500000001157611754474773020232 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_ZpTRun1_H #define HERWIG_ZpTRun1_H // // This is the declaration of the ZpTRun1 class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the ZpTRun1 class. * * @see \ref ZpTRun1Interfaces "The interfaces" * defined for ZpTRun1. */ class ZpTRun1: public AnalysisHandler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline ZpTRun1() {} public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} private: /** * \f$p_T\f$ histogram */ HistogramPtr _hpt; /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initZpTRun1; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ZpTRun1 & operator=(const ZpTRun1 &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ZpTRun1. */ template <> struct BaseClassTrait { /** Typedef of the first base class of ZpTRun1. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the ZpTRun1 class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::ZpTRun1"; } /** * The name of a file containing the dynamic library where the class * ZpTRun1 is implemented. It may also include several, space-separated, * libraries if the class ZpTRun1 depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwTevatronAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_ZpTRun1_H */ herwig++-2.6.0.orig/Analysis/LPairAnalysis.h0000644000175000017500000001207411754474773021451 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_LPairAnalysis_H #define HERWIG_LPairAnalysis_H // // This is the declaration of the LPairAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * The LPairAnalysis class is designed to analyse lepton pairs. * Therefore the lepton and antilepton with highest pt are selected from * the event and some observables are computed and booked into * histograms. The analysis is intended to anaylse top pair events * where both W's are decaying semileptonically. Therefore, only the * semileptonic top quark decay channels should be switched on. If no * pair of (opposite sign) leptons is found in the final state a warning * message is printed and nothing is booked. Output is created as * topdrawer file * * @see \ref LPairAnalysisInterfaces "The interfaces" * defined for LPairAnalysis. */ class LPairAnalysis: public AnalysisHandler { public: /** * The default constructor. */ LPairAnalysis(); /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class without persistent data. */ static NoPIOClassDescription initLPairAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ LPairAnalysis & operator=(const LPairAnalysis &); private: /** * \f$p_T\f$ of the leptons */ Histogram _ptp; Histogram _ptm; Histogram _ptpair; /** * \f$E_T\f$ of the leptons */ Histogram _etp; Histogram _etm; Histogram _etpair; /** * Energy of the leptons */ Histogram _ep; Histogram _em; Histogram _epair; /** * Rapidity of the leptons */ Histogram _rapp; Histogram _rapm; Histogram _rappair; /** * Azimuth of the leptons */ Histogram _phip; Histogram _phim; Histogram _deltaphi; /** * Invariant mass of the pair */ Histogram _mpair; /** * scalar sums of Et, pt */ Histogram _etsum; Histogram _ptsum; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of LPairAnalysis. */ template <> struct BaseClassTrait { /** Typedef of the first base class of LPairAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the LPairAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::LPairAnalysis"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the LPairAnalysis class and any other class on which it depends * (except the base class). */ static string library() { return "HwAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_LPairAnalysis_H */ herwig++-2.6.0.orig/Analysis/TTbarAnalysis.h0000644000175000017500000001227511754474773021461 0ustar sylvestresylvestre// -*- C++ -*- // // TTbarAnalysis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TTbarAnalysis_H #define HERWIG_TTbarAnalysis_H // // This is the declaration of the TTbarAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * The TTbarAnalysis class tries to find a top antitop pair in the final * state and books a number of histograms. It only makes sense if * hadronization and decays are switched off. However, if there is is * no top quark pair in the final state then a warning is printed and * nothing is booked. Some of the histograms will be sensitive to the * initial state shower. * * @see \ref TTbarAnalysisInterfaces "The interfaces" * defined for TTbarAnalysis. */ class TTbarAnalysis: public AnalysisHandler { public: /** * The default constructor. */ TTbarAnalysis(); /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class without persistent data. */ static NoPIOClassDescription initTTbarAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TTbarAnalysis & operator=(const TTbarAnalysis &); private: /** * \f$p_T\f$ of the tops */ Histogram _pttop; Histogram _pttbar; Histogram _ptpair; /** * \f$E_T\f$ of the tops */ Histogram _ettop; Histogram _ettbar; Histogram _etpair; /** * Energy of the tops */ Histogram _etop; Histogram _etbar; Histogram _epair; /** * Rapidity of the tops */ Histogram _raptop; Histogram _raptbar; Histogram _rappair; /** * Azimuth of the tops */ Histogram _phitop; Histogram _phitbar; Histogram _deltaphi; /** * Invariant mass of the pair */ Histogram _mpair; /** * scalar sums of Et, pt */ Histogram _etsum; Histogram _ptsum; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of TTbarAnalysis. */ template <> struct BaseClassTrait { /** Typedef of the first base class of TTbarAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the TTbarAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::TTbarAnalysis"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the TTbarAnalysis class and any other class on which it depends * (except the base class). */ static string library() { return "HwAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_TTbarAnalysis_H */ herwig++-2.6.0.orig/Analysis/EventShapes.fh0000644000175000017500000000046411754474773021331 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the EventShapes class. // #ifndef HERWIG_EventShapes_FH #define HERWIG_EventShapes_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; class EventShapes; ThePEG_DECLARE_POINTERS(EventShapes,EventShapesPtr); } #endif herwig++-2.6.0.orig/Analysis/SimpleLHCAnalysis.h0000644000175000017500000001253211754474773022221 0ustar sylvestresylvestre// -*- C++ -*- // // SimpleLHCAnalysis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SimpleLHCAnalysis_H #define HERWIG_SimpleLHCAnalysis_H // // This is the declaration of the SimpleLHCAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * The SimpleLHCAnalysis class is designed to perform some simple analysis of * gauge boson, W and Z, distributions in hadron-hadron collisions. The main * distriubtions are the transverse momentum and rapidities of the gauge bosons * which are of physical interest, and the azimuthal angle distribution for * testing purposes. * * @see \ref SimpleLHCAnalysisInterfaces "The interfaces" * defined for SimpleLHCAnalysis. */ class SimpleLHCAnalysis: public AnalysisHandler { public: /** * The default constructor. */ SimpleLHCAnalysis(); /** @name Virtual Functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initSimpleLHCAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SimpleLHCAnalysis & operator=(const SimpleLHCAnalysis &); private: /** * \f$p_T\f$ of the Z boson */ vector _ptZ; /** * \f$p_T\f$ of the \f$W^+\f$ boson */ vector _ptWp; /** * \f$p_T\f$ of the \f$W^-\f$ boson */ vector _ptWm; /** * Mass of the Z boson */ Histogram _mZ; /** * Mass of the \f$W^+\f$ boson */ Histogram _mWp; /** * Mass of the \f$W^-\f$ boson */ Histogram _mWm; /** * Rapidity of Z */ Histogram _rapZ; /** * Rapidity of \f$W^+\f$ boson */ Histogram _rapWp; /** * Rapidity of \f$W^-\f$ boson */ Histogram _rapWm; /** * Azimuth of Z */ Histogram _phiZ; /** * Azimuth of \f$W^+\f$ boson */ Histogram _phiWp; /** * Azimuth of \f$W^-\f$ boson */ Histogram _phiWm; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SimpleLHCAnalysis. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SimpleLHCAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the SimpleLHCAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SimpleLHCAnalysis"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the SimpleLHCAnalysis class and any other class on which it depends * (except the base class). */ static string library() { return "HwAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_SimpleLHCAnalysis_H */ herwig++-2.6.0.orig/Analysis/HiggsJetAnalysis.cc0000644000175000017500000000611211754474773022300 0ustar sylvestresylvestre// -*- C++ -*- // // HiggsJetAnalysis.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the HiggsJetAnalysis class. // #include "HiggsJetAnalysis.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; HiggsJetAnalysis::HiggsJetAnalysis() : _pth(0.,250.,100), _pthZoom(35.,65.,100), _raph(-10.,10.,100), _phih(-Constants::pi,Constants::pi,100) {} void HiggsJetAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; _pth.topdrawOutput(outfile,Frame,"BLACK","pt of Higgs"); _pth.topdrawOutput(outfile,Frame|Ylog,"BLACK","pt of Higgs"); _pthZoom.topdrawOutput(outfile,Frame,"BLACK","35 1 && p.children()[0]->id() != p.id() && p.children()[1]->id() != p.id(); } struct Higgs { static bool AllCollisions() { return false; } static bool AllSteps() { return true; } // === // pick the last instance from the shower static bool FinalState() { return false; } static bool Intermediate() { return true; } // === static bool Check(const Particle & p) { return p.id() == ParticleID::h0 && isLastInShower(p); } }; } void HiggsJetAnalysis::analyze(tEventPtr event, long, int, int) { tcParticleSet higgses; event->select(inserter(higgses), ThePEG::ParticleSelector()); if ( higgses.empty() ) return; else if ( higgses.size() > 1 ) { cerr << "\nMultiple h0 found. Only binning first one.\n"; } tcPPtr higgs = *higgses.begin(); Lorentz5Momentum ph = higgs->momentum(); double pt = ph.perp()/GeV; (_pth)+=(pt); (_pthZoom)+=(pt); double rap = 0.5*log((ph.e()+ph.z())/(ph.e()-ph.z())); (_raph)+=(rap); (_phih)+=ph.phi(); } NoPIOClassDescription HiggsJetAnalysis::initHiggsJetAnalysis; // Definition of the static class description member. void HiggsJetAnalysis::Init() { static ClassDocumentation documentation ("Standard analysis of a single h0 after showering."); } herwig++-2.6.0.orig/Analysis/Makefile.am0000644000175000017500000000340411755411664020605 0ustar sylvestresylvestrepkglib_LTLIBRARIES = HwAnalysis.la HwAnalysis_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 9:2:0 HwAnalysis_la_SOURCES = \ EventShapes.cc EventShapes.fh EventShapes.h \ EventShapesMasterAnalysis.cc EventShapesMasterAnalysis.h \ BasicConsistency.cc BasicConsistency.h \ LEPMultiplicityCount.cc LEPMultiplicityCount.h \ MultiplicityInfo.h \ LEPBMultiplicity.cc\ LEPBMultiplicity.h \ SimpleLHCAnalysis.h SimpleLHCAnalysis.cc\ TTbarAnalysis.h TTbarAnalysis.cc\ LPairAnalysis.h LPairAnalysis.cc\ GammaGammaAnalysis.h GammaGammaAnalysis.cc\ GammaJetAnalysis.h GammaJetAnalysis.cc\ HiggsJetAnalysis.h HiggsJetAnalysis.cc \ DrellYanPT.h DrellYanPT.cc pkglib_LTLIBRARIES += HwLEPAnalysis.la HwLEPAnalysis_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 6:0:0 HwLEPAnalysis_la_SOURCES = \ BFragmentationAnalysisHandler.cc BFragmentationAnalysisHandler.h\ SingleParticleAnalysis.cc SingleParticleAnalysis.h\ LEPEventShapes.cc LEPEventShapes.h\ IdentifiedParticleAnalysis.cc IdentifiedParticleAnalysis.h\ BELLECharmAnalysis.h BELLECharmAnalysis.cc\ CLEOCharmAnalysis.h CLEOCharmAnalysis.cc # analysis code which depends on fastjet if WANT_LIBFASTJET pkglib_LTLIBRARIES += HwLEPJetAnalysis.la HwLEPJetAnalysis_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 8:0:0 HwLEPJetAnalysis_la_CPPFLAGS = $(AM_CPPFLAGS) $(FASTJETINCLUDE) \ -I$(FASTJETPATH) HwLEPJetAnalysis_la_LIBADD = $(FASTJETLIBS) HwLEPJetAnalysis_la_SOURCES = \ LEPJetAnalysis.cc LEPJetAnalysis.h\ LEPFourJetsAnalysis.cc LEPFourJetsAnalysis.h endif pkglib_LTLIBRARIES += HwTevatronAnalysis.la HwTevatronAnalysis_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 1:0:0 HwTevatronAnalysis_la_CPPFLAGS = $(AM_CPPFLAGS) HwTevatronAnalysis_la_SOURCES = \ ZpTRun2.cc ZpTRun2.h \ ZpTRun1.cc ZpTRun1.h \ Wpt.cc Wpt.h \ Zrapidity.cc Zrapidity.h herwig++-2.6.0.orig/Analysis/EventShapesMasterAnalysis.h0000644000175000017500000001312211754474773024036 0ustar sylvestresylvestre// -*- C++ -*- // // EventShapesMasterAnalysis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_EventShapesMasterAnalysis_H #define HERWIG_EventShapesMasterAnalysis_H // // This is the declaration of the EventShapesMasterAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "EventShapes.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * The EventShapesMasterAnalysis class is responsible for extracting the * final state particles from the event record and setting up the object which * calculates the event shapes. This is done so that the EventShapes class which * contains a lot of slow code isn't rerun unnecessarily. * * @see \ref EventShapesMasterAnalysisInterfaces "The interfaces" * defined for EventShapesMasterAnalysis. */ class EventShapesMasterAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Transform the event to the desired Lorentz frame and return the * corresponding LorentzRotation. * @param event a pointer to the Event to be transformed. * @return the LorentzRotation used in the transformation. */ virtual LorentzRotation transform(tEventPtr event) const; /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initEventShapesMasterAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ EventShapesMasterAnalysis & operator=(const EventShapesMasterAnalysis &); private: /** * Pointer to the EventShapes object */ EventShapesPtr _shapes; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of EventShapesMasterAnalysis. */ template <> struct BaseClassTrait { /** Typedef of the first base class of EventShapesMasterAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the EventShapesMasterAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::EventShapesMasterAnalysis"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the EventShapesMasterAnalysis class and any other class on which it depends * (except the base class). */ static string library() { return "HwAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_EventShapesMasterAnalysis_H */ herwig++-2.6.0.orig/Analysis/DrellYanPT.cc0000644000175000017500000000436011754474773021051 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the DrellYanPT class. // #include "DrellYanPT.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; DrellYanPT::DrellYanPT() : _Zpt(0.,250.,250), _Wppt(0.,250.,250), _Wmpt(0.,250.,250) {} void DrellYanPT::dofinish() { AnalysisHandler::dofinish(); ofstream outZ ("pt_Z.dat"); _Zpt.normaliseToCrossSection(); _Zpt.simpleOutput(outZ,true); ofstream outWm ("pt_Wm.dat"); _Wmpt.normaliseToCrossSection(); _Wmpt.simpleOutput(outWm,true); ofstream outWp ("pt_Wp.dat"); _Wppt.normaliseToCrossSection(); _Wppt.simpleOutput(outWp,true); } void DrellYanPT::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). StepVector::const_iterator sit =event->primaryCollision()->steps().begin(); StepVector::const_iterator send=event->primaryCollision()->steps().end(); for(;sit!=send;++sit) { ParticleSet part=(**sit).all(); ParticleSet::const_iterator iter=part.begin(); ParticleSet::const_iterator end =part.end(); for( ;iter!=end;++iter) { if(((**iter).id()==ParticleID::Z0||(**iter).id()==ParticleID::gamma) && (**iter).children().size()==2) { _Zpt.addWeighted((**iter).momentum().perp()/GeV,event->weight()); } else if ((**iter).id()==ParticleID::Wplus && (**iter).children().size()==2) { _Wppt.addWeighted((**iter).momentum().perp()/GeV,event->weight()); } else if ((**iter).id()==ParticleID::Wminus && (**iter).children().size()==2) { _Wmpt.addWeighted((**iter).momentum().perp()/GeV,event->weight()); } } } } NoPIOClassDescription DrellYanPT::initDrellYanPT; // Definition of the static class description member. void DrellYanPT::Init() { static ClassDocumentation documentation ("Analyses the pt of weak bosons produces in Drell-Yan processes."); } herwig++-2.6.0.orig/Analysis/CLEOCharmAnalysis.h0000644000175000017500000001241211754474773022133 0ustar sylvestresylvestre// -*- C++ -*- // // CLEOCharmAnalysis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_CLEOCharmAnalysis_H #define HERWIG_CLEOCharmAnalysis_H // // This is the declaration of the CLEOCharmAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * The CLEOCharmAnalysis class compares the results of Herwig++ at 10.52 GeV * with data on Charm hadron spectra from the CLEO experiment * * @see \ref CLEOCharmAnalysisInterfaces "The interfaces" * defined for CLEOCharmAnalysis. */ class CLEOCharmAnalysis: public AnalysisHandler { public: /** * The default constructor. */ CLEOCharmAnalysis() : _s() {} /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. * @param weight The weight for the event */ virtual void analyze(tPPtr particle, double weight); using AnalysisHandler::analyze; //@} public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initCLEOCharmAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ CLEOCharmAnalysis & operator=(const CLEOCharmAnalysis &); private: /** * Histograms */ //@{ /** * Histogram for \f$D^+\f$ */ HistogramPtr _histDplus; /** * Histogram for \f$D^0\f$ */ HistogramPtr _histD0; /** * Histogram for \f$D^{*+}\f$ */ HistogramPtr _histDstarplus; /** * Histogram for \f$D^{*0}\f$ */ HistogramPtr _histDstar0; //@} /** * CMF energy squared */ Energy2 _s; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of CLEOCharmAnalysis. */ template <> struct BaseClassTrait { /** Typedef of the first base class of CLEOCharmAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the CLEOCharmAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::CLEOCharmAnalysis"; } /** * The name of a file containing the dynamic library where the class * CLEOCharmAnalysis is implemented. It may also include several, space-separated, * libraries if the class CLEOCharmAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwAnalysis.so HwLEPAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_CLEOCharmAnalysis_H */ herwig++-2.6.0.orig/Analysis/GammaGammaAnalysis.h0000644000175000017500000001265411754474773022433 0ustar sylvestresylvestre// -*- C++ -*- // // GammaGammaAnalysis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_GammaGammaAnalysis_H #define HERWIG_GammaGammaAnalysis_H // // This is the declaration of the GammaGammaAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * GammaGammaAnalysis is for the analysis of events with a pair of hard * photons produced. These are selected as the two highest pt photons * in the final state of the event. A topdrawer file with histograms * is written to the working directory. * * @see \ref GammaGammaAnalysisInterfaces "The interfaces" * defined for GammaGammaAnalysis. */ class GammaGammaAnalysis: public AnalysisHandler { public: /** * The default constructor. */ GammaGammaAnalysis(); /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class without persistent data. */ static NoPIOClassDescription initGammaGammaAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GammaGammaAnalysis & operator=(const GammaGammaAnalysis &); private: /** * \f$p_T\f$ of the harder photon */ Histogram _ptharder; /** * \f$p_T\f$ of the softer photon */ Histogram _ptsofter; /** * \f$p_T\f$ of the photon pair */ Histogram _ptpair; /** * Energy of the harder photon */ Histogram _Eharder; /** * Energy of the softer photon */ Histogram _Esofter; /** * Energy of the photon pair */ Histogram _Epair; /** * Rapidity of the harder photon */ Histogram _rapharder; /** * Rapidity of the softer photon */ Histogram _rapsofter; /** * Rapidity of the photon pair */ Histogram _rappair; /** * Azimuth of the harder photon */ Histogram _phiharder; /** * Azimuth of the softer photon */ Histogram _phisofter; /** * Azimuth of the photon pair */ Histogram _deltaphi; /** * Invariant mass of the pair */ Histogram _mpair; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of GammaGammaAnalysis. */ template <> struct BaseClassTrait { /** Typedef of the first base class of GammaGammaAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the GammaGammaAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::GammaGammaAnalysis"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the GammaGammaAnalysis class and any other class on which it depends * (except the base class). */ static string library() { return "HwAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_GammaGammaAnalysis_H */ herwig++-2.6.0.orig/Analysis/Wpt.h0000755000175000017500000001144211754474773017511 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_Wpt_H #define HERWIG_Wpt_H // // This is the declaration of the Wpt class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the Wpt class. * * @see \ref WptInterfaces "The interfaces" * defined for Wpt. */ class Wpt: public AnalysisHandler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline Wpt() {} public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} private: /** * \f$p_T\f$ histogram */ HistogramPtr _hpt; /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initWpt; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Wpt & operator=(const Wpt &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Wpt. */ template <> struct BaseClassTrait { /** Typedef of the first base class of Wpt. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the Wpt class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::Wpt"; } /** * The name of a file containing the dynamic library where the class * Wpt is implemented. It may also include several, space-separated, * libraries if the class Wpt depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwTevatronAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_Wpt_H */ herwig++-2.6.0.orig/Analysis/SingleParticleAnalysis.h0000644000175000017500000001245511754474773023352 0ustar sylvestresylvestre// -*- C++ -*- // // SingleParticleAnalysis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SingleParticleAnalysis_H #define HERWIG_SingleParticleAnalysis_H // // This is the declaration of the SingleParticleAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/Utilities/Histogram.h" #include "EventShapes.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * The SingleParticleAnalysis class performs the analysis for * single particle variables and is intended as a slave handler for the * EventShapesMasterAnalysis class. * * @see \ref SingleParticleAnalysisInterfaces "The interfaces" * defined for SingleParticleAnalysis. */ class SingleParticleAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); //@} 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSingleParticleAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SingleParticleAnalysis & operator=(const SingleParticleAnalysis &); private: /** * Histogram for the rapidity distribution with respect to the thrust axis */ HistogramPtr _yT; /** * Histogram for the rapidity distribution with respect to the sphericity axis */ HistogramPtr _yS; /** * Histogram for the \f$p_{T,in}\f$ distribution with respect to the thrust axis */ HistogramPtr _ptinT; /** * Histogram for the \f$p_{T,out}\f$ distribution with respect to the thrust axis */ HistogramPtr _ptoutT; /** * Histogram for the \f$p_{S,in}\f$ distribution with respect to the sphericity axis */ HistogramPtr _ptinS; /** * Histogram for the \f$p_{S,out}\f$ distribution with respect to the sphericity axis */ HistogramPtr _ptoutS; /** * Histogram for the number of charged particles */ HistogramPtr _nch; /** * Object which calculates the event shapes */ EventShapesPtr _shapes; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SingleParticleAnalysis. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SingleParticleAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the SingleParticleAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SingleParticleAnalysis"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the SingleParticleAnalysis class and any other class on which it depends * (except the base class). */ static string library() { return "HwAnalysis.so HwLEPAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_SingleParticleAnalysis_H */ herwig++-2.6.0.orig/Analysis/IdentifiedParticleAnalysis.cc0000644000175000017500000027231111754474773024332 0ustar sylvestresylvestre// -*- C++ -*- // // IdentifiedParticleAnalysis.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IdentifiedParticleAnalysis class. // #include "IdentifiedParticleAnalysis.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; int IdentifiedParticleAnalysis::getFlavour(const tPVector &pv) { tPVector::const_iterator it; for(it = pv.begin(); it!=pv.end(); ++it) if (abs((*it)->id()) < 7) break; return abs((*it)->id()); } void IdentifiedParticleAnalysis:: analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); if ( loop > 0 || state != 0 || !event ) return; // get the final-state tPVector hadrons=event->getFinalState(); // get the partons tPVector partons=event->primaryCollision()->steps()[0]-> getFinalState(); int flav = getFlavour(partons); Energy Emax = 0.5*generator()->maximumCMEnergy(); for (tPVector::iterator it = hadrons.begin(); it != hadrons.end(); ++it ) { // only looking at charged particles if(!(*it)->data().charged()) continue; // all particles double xp = getX((*it)->momentum(), Emax); double pp = (*it)->momentum().vect().mag()/GeV; _xpa->addWeighted(xp,event->weight()); if(abs((*it)->id()) == ParticleID::piplus) { _pipma->addWeighted(xp,event->weight()); _pipm ->addWeighted(pp,event->weight()); } else if(abs((*it)->id()) == ParticleID::Kplus) { _kpma->addWeighted(xp,event->weight()); _kpm ->addWeighted(pp,event->weight()); } else if(abs((*it)->id()) == ParticleID::pplus) { _ppma->addWeighted(xp,event->weight()); _ppm ->addWeighted(pp,event->weight()); } switch(flav) { case 1: case 2: case 3: _xpl ->addWeighted(xp,event->weight()); if(abs((*it)->id()) == ParticleID::piplus) _pipml->addWeighted(xp,event->weight()); else if(abs((*it)->id()) == ParticleID::Kplus) _kpml ->addWeighted(xp,event->weight()); else if(abs((*it)->id()) == ParticleID::pplus) _ppml ->addWeighted(xp,event->weight()); _udsxp->addWeighted(xp,event->weight()); if (xp > 0) _udsxip->addWeighted( -log(xp),event->weight()); break; case 4: _xpc->addWeighted(xp,event->weight()); if(abs((*it)->id()) == ParticleID::piplus) _pipmc->addWeighted(xp,event->weight()); else if(abs((*it)->id()) == ParticleID::Kplus) _kpmc ->addWeighted(xp,event->weight()); else if(abs((*it)->id()) == ParticleID::pplus) _ppmc ->addWeighted(xp,event->weight()); break; case 5: _xpb ->addWeighted(xp,event->weight()); if(abs((*it)->id()) == ParticleID::piplus) _pipmb ->addWeighted(xp,event->weight()); else if(abs((*it)->id()) == ParticleID::Kplus) _kpmb ->addWeighted(xp,event->weight()); else if(abs((*it)->id()) == ParticleID::pplus) _ppmb ->addWeighted(xp,event->weight()); break; default: break; } } // finally decaying particles set allparticles; StepVector steps = event->primaryCollision()->steps(); for ( StepVector::const_iterator it = steps.begin()+2; it != steps.end(); ++it ) { (**it).select(inserter(allparticles), ThePEG::AllSelector()); } for(set::const_iterator it = allparticles.begin(); it != allparticles.end(); ++it) { // lambda's long id = abs( (*it)->id()); double xe = (*it)->momentum().e()/Emax; double xp = (*it)->momentum().vect().mag()/Emax; switch(id) { case ParticleID::Lambda0: _lpm ->addWeighted( xp,event->weight()); break; case ParticleID::Kstarplus: _xpKstarplus ->addWeighted( xp,event->weight()); break; case ParticleID::Ximinus: _xpXiminus ->addWeighted( xe,event->weight()); _xiXiminus ->addWeighted( -log(xp),event->weight()); break; case ParticleID::Sigmastarplus: _xpSigmaplus ->addWeighted( xe,event->weight()); _xiSigmaplus ->addWeighted( -log(xp),event->weight()); break; case ParticleID::Sigmastarminus: _xpSigmaminus ->addWeighted( xe,event->weight()); _xiSigmaminus ->addWeighted( -log(xp),event->weight()); break; case ParticleID::Xistar0: _xpXi0 ->addWeighted( xe,event->weight()); _xiXi0 ->addWeighted( -log(xp),event->weight()); break; case 3124: // lambda(1520) _xpLambda1520 ->addWeighted( xe,event->weight()); _xiLambda1520 ->addWeighted(-log(xp),event->weight()); break; case ParticleID::Deltaplus2: _xeDelta ->addWeighted(xe,event->weight()); break; case ParticleID::f_0: _xpf980 ->addWeighted(xp,event->weight()); break; case ParticleID::f_2: _xpf2 ->addWeighted(xp,event->weight()); break; case ParticleID::phi: _xpphi ->addWeighted(xp,event->weight()); break; case ParticleID::Kstar0: _xpKstar0 ->addWeighted(xp,event->weight()); break; case ParticleID::D0: _xeD0 ->addWeighted( xe,event->weight()); break; case ParticleID::Dstarplus: _xeDstar ->addWeighted( xe,event->weight()); break; case ParticleID::rho0: _xerho0 ->addWeighted( xe,event->weight()); break; case ParticleID::pi0: _xepi0 ->addWeighted( xe,event->weight()); _xipi0 ->addWeighted(-log(xp),event->weight()); case ParticleID::eta: _xeeta ->addWeighted( xe,event->weight()); _xieta ->addWeighted(-log(xp),event->weight()); case ParticleID::etaprime: _xeetap ->addWeighted( xe,event->weight()); _xietap ->addWeighted(-log(xp),event->weight()); case ParticleID::rhoplus: _xerhop ->addWeighted( xe,event->weight()); _xirhop ->addWeighted(-log(xp),event->weight()); case ParticleID::omega: _xeomega ->addWeighted( xe,event->weight()); _xiomega ->addWeighted(-log(xp),event->weight()); case ParticleID::a_0plus: _xea_0p ->addWeighted( xe,event->weight()); _xia_0p ->addWeighted(-log(xp),event->weight()); case ParticleID::K0: case ParticleID::K_S0: case ParticleID::K_L0: _xpK0->addWeighted(xp,event->weight()); } } } NoPIOClassDescription IdentifiedParticleAnalysis::initIdentifiedParticleAnalysis; // Definition of the static class description member. void IdentifiedParticleAnalysis::Init() { static ClassDocumentation documentation ("The IdentifiedParticleAnalysis class compares identified" " particle spectra with Z pole data", "The LEP IdentifiedParticle analysis uses data from" "\\cite{Akers:1994ez,Alexander:1995gq,Alexander:1996qj,Ackerstaff:1998ue,Ackerstaff:1997kj,Abbiendi:2000cv,Ackerstaff:1998ap,Acton:1991aa,Abreu:1998nn,Abreu:1993mn,Barate:1999bg,Barate:1996fi,Abe:1998zs}.", "%\\cite{Akers:1994ez}\n" "\\bibitem{Akers:1994ez}\n" " R.~Akers {\\it et al.} [OPAL Collaboration],\n" " ``Measurement of the production rates of charged hadrons in e+ e-\n" " %annihilation at the Z0,''\n" " Z.\\ Phys.\\ C {\\bf 63}, 181 (1994).\n" " %%CITATION = ZEPYA,C63,181;%%\n" "%\\cite{Alexander:1995gq}\n" "\\bibitem{Alexander:1995gq}\n" " G.~Alexander {\\it et al.} [OPAL Collaboration],\n" " %``Delta++ production in hadronic Z0 decays,''\n" " Phys.\\ Lett.\\ B {\\bf 358}, 162 (1995).\n" " %%CITATION = PHLTA,B358,162;%%\n" "%\\cite{Alexander:1996qj}\n" "\\bibitem{Alexander:1996qj}\n" " G.~Alexander {\\it et al.} [OPAL Collaboration],\n" " %``Strange baryon production in hadronic Z0 decays,''\n" " Z.\\ Phys.\\ C {\\bf 73}, 569 (1997).\n" " %%CITATION = ZEPYA,C73,569;%%\n" "%\\cite{Ackerstaff:1998ue}\n" "\\bibitem{Ackerstaff:1998ue}\n" " K.~Ackerstaff {\\it et al.} [OPAL Collaboration],\n" " %``Production of f0(980), f2(1270) and Phi(1020) in hadronic Z0 decay,''\n" " Eur.\\ Phys.\\ J.\\ C {\\bf 4}, 19 (1998)\n" " [arXiv:hep-ex/9802013].\n" " %%CITATION = EPHJA,C4,19;%%\n" "%\\cite{Ackerstaff:1997kj}\n" "\\bibitem{Ackerstaff:1997kj}\n" " K.~Ackerstaff {\\it et al.} [OPAL Collaboration],\n" " %``Spin alignment of leading K*(892)0 mesons in hadronic Z0 decays,''\n" " Phys.\\ Lett.\\ B {\\bf 412}, 210 (1997)\n" " [arXiv:hep-ex/9708022].\n" " %%CITATION = PHLTA,B412,210;%%\n" "%\\cite{Abbiendi:2000cv}\n" "\\bibitem{Abbiendi:2000cv}\n" " G.~Abbiendi {\\it et al.} [OPAL Collaboration],\n" " ``Multiplicities of pi0, eta, K0 and of charged particles in quark and gluon\n" " %jets,''\n" " Eur.\\ Phys.\\ J.\\ C {\\bf 17}, 373 (2000)\n" " [arXiv:hep-ex/0007017].\n" " %%CITATION = EPHJA,C17,373;%%\n" "%\\cite{Ackerstaff:1998ap}\n" "\\bibitem{Ackerstaff:1998ap}\n" " K.~Ackerstaff {\\it et al.} [OPAL Collaboration],\n" " %``Photon and light meson production in hadronic Z0 decays,''\n" " Eur.\\ Phys.\\ J.\\ C {\\bf 5}, 411 (1998)\n" " [arXiv:hep-ex/9805011].\n" " %%CITATION = EPHJA,C5,411;%%\n" "%\\cite{Acton:1991aa}\n" "\\bibitem{Acton:1991aa}\n" " P.~D.~Acton {\\it et al.} [OPAL Collaboration],\n" " %``A Study of charged particle multiplicities in hadronic decays of the Z0,''\n" " Z.\\ Phys.\\ C {\\bf 53}, 539 (1992).\n" " %%CITATION = ZEPYA,C53,539;%%\n" "%\\cite{Abreu:1998nn}\n" "\\bibitem{Abreu:1998nn}\n" " P.~Abreu {\\it et al.} [DELPHI Collaboration],\n" " ``Measurement of inclusive rho0, f0(980), f2(1270), K*2(1430)0 and f\'2(1525)\n" " %production in Z0 decays,''\n" " Phys.\\ Lett.\\ B {\\bf 449}, 364 (1999).\n" " %%CITATION = PHLTA,B449,364;%%\n" "%\\cite{Abreu:1993mn}\n" "\\bibitem{Abreu:1993mn}\n" " P.~Abreu {\\it et al.} [DELPHI Collaboration],\n" " %``A Measurement of D meson production in Z0 hadronic decays,''\n" " Z.\\ Phys.\\ C {\\bf 59}, 533 (1993)\n" " [Erratum-ibid.\\ C {\\bf 65}, 709 (1995)].\n" " %%CITATION = ZEPYA,C59,533;%%\n" "%\\cite{Barate:1999bg}\n" "\\bibitem{Barate:1999bg}\n" " R.~Barate {\\it et al.} [ALEPH Collaboration],\n" " %``Study of charm production in Z decays,''\n" " Eur.\\ Phys.\\ J.\\ C {\\bf 16}, 597 (2000)\n" " [arXiv:hep-ex/9909032].\n" " %%CITATION = EPHJA,C16,597;%%\n" "%\\cite{Barate:1996fi}\n" "\\bibitem{Barate:1996fi}\n" " R.~Barate {\\it et al.} [ALEPH Collaboration],\n" " %``Studies of quantum chromodynamics with the ALEPH detector,''\n" " Phys.\\ Rept.\\ {\\bf 294}, 1 (1998).\n" " %%CITATION = PRPLC,294,1;%%\n" "%\\cite{Abe:1998zs}\n" "\\bibitem{Abe:1998zs}\n" " K.~Abe {\\it et al.} [SLD Collaboration],\n" " ``Production of pi+, K+, K0, K*0, Phi, p and Lambda0 in hadronic Z0\n" " %decays,''\n" " Phys.\\ Rev.\\ D {\\bf 59}, 052001 (1999)\n" " [arXiv:hep-ex/9805029].\n" " %%CITATION = PHRVA,D59,052001;%%\n" ); } void IdentifiedParticleAnalysis::dofinish() { useMe(); AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); // chisq double chisq,minfrac=0.05; unsigned int npoint; using namespace HistogramOptions; // Histogram for the \f$\xi\f$ distribution for all particles from all quarks _xpa->normaliseToData(); _xpa->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (charged, all quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpa->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of charged particles for all events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // light quarks _xpl->normaliseToData(); _xpl->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (charged, light quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpl->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of charged particles for all light quark events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // OPAL _udsxp->normaliseToData(); _udsxp->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL xp (charged, light quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _udsxp->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of charged particles for all light quark events(OPAL)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); _udsxip->normaliseToData(); _udsxip->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL xi (charged, light quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _udsxip->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of charged particles for all light quark events(OPAL)", " ", "1/NdN/dX", " G", "X", "G"); // charm _xpc->normaliseToData(); _xpc->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (charged, charm quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpc->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of charged particles for all charm events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // bottom _xpb->normaliseToData(); _xpb->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (charged, bottom quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpb->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of charged particles for all bottom events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // pions all quarks _pipma->normaliseToData(); _pipma->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (pions, all quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _pipma->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of pions for all events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // OPAL pions _pipm->normaliseToData(); _pipm->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL momentum (pions, all quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _pipm->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The momentum of pions for all events(OPAL)", " ", "1/NdN/dp/GeV2-13", " X X", "p/GeV", " "); // light _pipml->normaliseToData(); _pipml->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (pions, light quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _pipml->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of pions for light quark events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // charm _pipmc->normaliseToData(); _pipmc->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (pions, charm quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _pipmc->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of pions for charm events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // bottom _pipmb->normaliseToData(); _pipmb->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (pions, bottom quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _pipmb->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of pions for bottom quark events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // kaons all quarks _kpma->normaliseToData(); _kpma->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (kaons, all quakrks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _kpma->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of kaons for all events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // OPAL kaons _kpm->normaliseToData(); _kpm->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL momentum (kaons, all quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _kpm->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The momentum of kaons for all events(OPAL)", " ", "1/NdN/dp/GeV2-13", " X X", "p/GeV", " "); // light _kpml->normaliseToData(); _kpml->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (kaons, light quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _kpml->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of kaons for light quark events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // charm _kpmc->normaliseToData(); _kpmc->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (kaons, charm quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _kpmc->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of kaons for charm events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // bottom _kpmb->normaliseToData(); _kpmb->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (kaons, bottom quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _kpmb->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of kaons for bottom quark events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // protons all quarks _ppma->normaliseToData(); _ppma->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (protons, all quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _ppma->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of protons for all events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // OPAL protons _ppm->normaliseToData(); _ppm->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL momentum (protons, all quarks ) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _ppm->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The momentum of protons for all events(OPAL)", " ", "1/NdN/dpGeV2-13", " X X", "p/GeV", " "); // light _ppml->normaliseToData(); _ppml->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (protons, light quarks) " << "distribution or " << chisq/npoint << "per degree of freedom\n"; _ppml->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of protons for light quark events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // charm _ppmc->normaliseToData(); _ppmc->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (protons, charm quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _ppmc->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of protons for charm events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // bottom _ppmb->normaliseToData(); _ppmb->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for SLD xp (protons, bottom quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _ppmb->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of protons for bottom quark events(SLD)", " ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // lambda _lpm->normaliseToData(); _lpm->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for ALEPH momentum (lambda, all quarks) " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _lpm->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of L for all events (ALEPH)", " F ", "1/NdN/dp/GeV2-13", " X X", "p/GeV", " "); // K*+ _xpKstarplus->normaliseToData(); _xpKstarplus->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for ALEPH momentum K*+ " << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpKstarplus->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum of K2*+3 for all events (ALEPH)", " X X ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // xi- _xpXiminus->normaliseToData(); _xpXiminus->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL xi- x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpXiminus->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of X2-3 for all events (OPAL)", " X X FX X ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); _xiXiminus->normaliseToData(); _xiXiminus->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL xi- xi" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xiXiminus->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum X of X2-3 for all events (OPAL)", " G FX X ", "1/NdN/dX", " G", "X", "G"); // Sigma*+ _xpSigmaplus->normaliseToData(); _xpSigmaplus->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL Sigma*+ x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpSigmaplus->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of S2*+3 for all events (OPAL)", " X X FX X ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); _xiSigmaplus->normaliseToData(); _xiSigmaplus->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL Sigma*+ xi" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xiSigmaplus->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum X of S2*+3 for all events (OPAL)", " G FX X ", "1/NdN/dX", " G", "X", "G"); // Sigma*- _xpSigmaminus->normaliseToData(); _xpSigmaminus->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL Sigma*- x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpSigmaminus->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of S2*-3 for all events (OPAL)", " X X FX X ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); _xiSigmaminus->normaliseToData(); _xiSigmaminus->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL Sigma*- xi" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xiSigmaminus->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum X of S2*-3 for all events (OPAL)", " G FX X ", "1/NdN/dX", " G", "X", "G"); // Xi*0 _xpXi0->normaliseToData(); _xpXi0->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL Xi*0 x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpXi0->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of X2*03 for all events (OPAL)", " X X FX X ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); _xiXi0->normaliseToData(); _xiXi0->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL Xi*0 xi" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xiXi0->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum X of X2*03 for all events (OPAL)", " G FX X ", "1/NdN/dX", " G", "X", "G"); // lambda(1520) _xpLambda1520->normaliseToData(); _xpLambda1520->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL Lambda(1520) x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpLambda1520->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of L(1520) for all events (OPAL)", " X X F ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); _xiLambda1520->normaliseToData(); _xiLambda1520->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL Lambda(1520) xi" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xiLambda1520->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum X of L(1520) for all events (OPAL)", " G F ", "1/NdN/dX", " G", "X", "G"); // Delta++ _xeDelta->normaliseToData(); _xeDelta->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL Delta++ x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xeDelta->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of D2++3 for all events (OPAL)", " X X FX X ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); // f_0 _xpf980->normaliseToData(); _xpf980->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL f_0(980) x_p" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpf980->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0p1 of f001(980) for all events (OPAL)", " X X X X ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // f_2 _xpf2->normaliseToData(); _xpf2->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL f_2 x_p" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpf2->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0p1 of f021 for all events (OPAL)", " X X X X ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // phi _xpphi->normaliseToData(); _xpphi->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL phi x_p" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpphi->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0p1 of F for all events (OPAL)", " X X G ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // K*0 _xpKstar0->normaliseToData(); _xpKstar0->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL K*0 x_p" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpKstar0->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0p1 of K2*03 for all events (OPAL)", " X X X X ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // K0 _xpK0->normaliseToData(); _xpK0->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL K0 x_p" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xpK0->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0p1 of K203 for all events (OPAL)", " X X X X ", "1/NdN/dx0p1", " X X", "x0p1", " X X"); // rho0 _xerho0->normaliseToData(); _xerho0->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for DELPHI rho0 x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xerho0->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of R203 for all events (DELPHI)", " X X GX X ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); // pi0 _xepi0->normaliseToData(); _xepi0->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL pi0 x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xepi0->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of P203 for all events (OPAL)", " X X GX X ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); _xipi0->normaliseToData(); _xipi0->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL pi0 xi" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xipi0->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum X of P203 for all events (OPAL)", " G GX X ", "1/NdN/dX", " G", "X", "G"); // eta _xeeta->normaliseToData(); _xeeta->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL eta x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xeeta->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of H for all events (OPAL)", " X X G ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); _xieta->normaliseToData(); _xieta->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL eta xi" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xieta->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum X of H for all events (OPAL)", " G G ", "1/NdN/dX", " G", "X", "G"); // eta' _xeetap->normaliseToData(); _xeetap->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL eta' x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xeetap->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of H' for all events (OPAL)", " X X G ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); _xietap->normaliseToData(); _xietap->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL eta' xi" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xietap->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum X of H' for all events (OPAL)", " G G ", "1/NdN/dX", " G", "X", "G"); // rho+ _xerhop->normaliseToData(); _xerhop->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL rho+ x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xerhop->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of R2+3 for all events (OPAL)", " X X GX X ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); _xirhop->normaliseToData(); _xirhop->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL rho+ xi" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xirhop->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum X of R2+3 for all events (OPAL)", " G GX X ", "1/NdN/dX", " G", "X", "G"); // omega _xeomega->normaliseToData(); _xeomega->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL omega x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xeomega->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of W for all events (OPAL)", " X X G ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); _xiomega->normaliseToData(); _xiomega->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL omega xi" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xiomega->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum X of W for all events (OPAL)", " G G ", "1/NdN/dX", " G", "X", "G"); // a_0+ _xea_0p->normaliseToData(); _xea_0p->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL a_0+ x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xea_0p->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of A0012+3 for all events (OPAL)", " X X X XX X ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); _xia_0p->normaliseToData(); _xia_0p->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for OPAL a_0+ xi" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xia_0p->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum X of A0012+3 for all events (OPAL)", " G X XX X ", "1/NdN/dX", " G", "X", "G"); // D0 _xeD0->normaliseToData(); _xeD0->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for DELPHI D0 x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xeD0->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of D203 for all events (DELPHI)", " X X X X ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); // D*+ _xeDstar->normaliseToData(); _xeDstar->chiSquared(chisq,npoint,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << npoint << " degrees of freedom for ALEPH Dstar x_E" << "distribution or " << chisq/npoint << " per degree of freedom\n"; _xeDstar->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "The scaled momentum x0E1 of D2*+3 for all events (ALEPH)", " X X X X ", "1/NdN/dx0E1", " X X", "x0E1", " X X"); } void IdentifiedParticleAnalysis::doinitrun() { AnalysisHandler::doinitrun(); // SLD data (all charged) double xpbins[] = {0.005, 0.008, 0.010, 0.012, 0.014, 0.016, 0.022, 0.027, 0.033, 0.038, 0.044, 0.049, 0.055, 0.060, 0.066, 0.071, 0.077, 0.082, 0.088, 0.099, 0.110, 0.121, 0.143, 0.164, 0.186, 0.208, 0.230, 0.252, 0.274, 0.296, 0.318, 0.351, 0.384, 0.417, 0.450, 0.482, 0.526, 0.570, 0.658, 0.768, 1.000}; double xpdataa[]={509.2 ,513.9 ,485.5 ,443.4 ,398.7 , 335.8 ,267.2 ,217.8 ,180.7 ,153.2 , 130.6 ,113.4 , 99.09 , 87.57 , 77.56 , 69.78 , 62.84 , 56.72 , 48.90 , 40.78 , 34.39 , 27.35 , 20.53 , 15.64 , 12.25 , 9.67 , 7.75 , 6.161 , 5.029 , 4.053 , 3.139 , 2.338 , 1.748 , 1.326 , 1.008 , 0.724 , 0.480 , 0.285 , 0.114 , 0.024 }; double xperrora[]={9.5 ,7.8 ,6.6 ,5.6 ,4.9 , 3.9 ,2.9 ,2.3 ,1.9 ,1.6 , 1.4 ,1.2 ,1.03 ,0.91 ,0.81 , 0.73 ,0.66 ,0.60 ,0.51 ,0.43 , 0.37 ,0.29 ,0.23 ,0.18 ,0.15 , 0.12 ,0.11 ,0.088,0.076,0.065, 0.052,0.042,0.034,0.028,0.023, 0.018,0.013,0.009,0.005,0.001}; double xpdatal[] ={507.8 ,505.2 ,465.3 ,421.9 ,371.7 , 315.5 ,250.5 ,200.3 ,167.3 ,140.4 , 121.2 ,105.5 , 91.2 ,81.29 ,72.69 , 65.92 ,58.06 ,53.26 ,45.37 ,38.55 , 32.84 ,26.05 ,19.79 ,15.75 ,12.16 , 10.27 , 8.14 , 6.62 ,5.565 ,4.428 , 3.588 ,2.706 ,2.062 ,1.631 ,1.193 , 0.912 ,0.632 ,0.398 ,0.172 ,0.027}; double xperrorl[]={ 11.9 , 9.2 , 7.5 , 6.3 , 5.8 , 4.2 , 3.2 , 2.3 , 2.0 , 1.6 , 1.3 , 1.1 , 1.0 , 0.89 , 0.81 , 0.76 , 0.70 , 0.66 , 0.48 , 0.43 , 0.41 , 0.28 , 0.29 , 0.35 , 0.17 , 0.14 , 0.11 , 0.10 ,0.087 ,0.076 , 0.057 ,0.049 ,0.042 ,0.037 ,0.034 , 0.026 ,0.023 ,0.015 ,0.011 ,0.005 }; double xpdatac[] ={468.7 ,485.4 ,507.2 ,464.0 ,422.9 , 349.1 ,274.1 ,231.5 ,187.5 ,162.3 , 136.6 ,117.3 , 99.1 ,89.21 ,78.25 , 69.26 ,62.25 ,55.28 ,49.14 ,40.11 , 35.64 ,28.94 ,21.99 ,16.51 ,12.69 , 10.41 , 7.86 , 6.37 ,5.060 ,4.080 , 3.123 ,2.141 ,1.472 ,0.952 ,0.935 , 0.485 ,0.372 ,0.140 ,0.027 ,0.011}; double xperrorc[]={25.3, 22.6, 20.2, 17.6, 16.9, 12.7, 9.5, 7.3, 6.9, 5.2, 4.2, 3.6, 3.0, 2.65, 2.42, 2.23, 2.06, 1.93, 1.42, 1.29, 1.22, 0.83, 0.86, 1.03, 0.50, 0.40, 0.32, 0.28,0.241,0.210, 0.156,0.126,0.106,0.090,0.085, 0.061,0.055,0.031,0.016,0.010}; double xpdatab[] ={546.1 ,558.5 ,531.9 ,490.8 ,436.5 , 382.8 ,308.6 ,254.8 ,213.2 ,182.1 , 154.5 ,134.3 ,118.6 ,102.4 ,91.92 , 83.63 ,75.06 ,66.58 ,57.31 ,47.80 , 39.19 ,29.54 ,20.69 ,15.36 ,10.65 , 8.06 , 6.28 , 4.69 ,3.490 ,2.935 , 2.041 ,1.534 ,1.111 ,0.736 ,0.510 , 0.330 ,0.188 ,0.089 ,0.017 ,0.003}; double xperrorb[]={ 14.2, 10.3, 8.0, 6.3, 6.7, 4.4, 3.4, 2.6, 2.1, 1.9, 1.7, 1.6, 1.4, 1.3, 1.22, 1.14, 1.10, 1.04, 0.74, 0.71, 0.67, 0.48, 0.48, 0.55, 0.26, 0.20, 0.16, 0.13,0.110,0.098, 0.068,0.058,0.051,0.042,0.037, 0.027,0.022,0.012,0.006,0.002}; vector bins =vector(xpbins,xpbins+41); vector data =vector(xpdataa,xpdataa+40); vector error=vector(xperrora,xperrora+40); _xpa=new_ptr(Histogram(bins,data,error)); data =vector(xpdatal,xpdatal+40); error=vector(xperrorl,xperrorl+40); _xpl=new_ptr(Histogram(bins,data,error)); data =vector(xpdatac,xpdatac+40); error=vector(xperrorc,xperrorc+40); _xpc=new_ptr(Histogram(bins,data,error)); data =vector(xpdatab,xpdatab+40); error=vector(xperrorb,xperrorb+40); _xpb=new_ptr(Histogram(bins,data,error)); // SLD pions data double pipmbins[] = {0.005, 0.008, 0.010, 0.012, 0.014, 0.016, 0.022, 0.027, 0.033, 0.038, 0.044, 0.049, 0.055, 0.060, 0.066, 0.071, 0.077, 0.082, 0.088, 0.099, 0.110, 0.121, 0.143, 0.164, 0.186, 0.208, 0.230, 0.252, 0.274, 0.296, 0.318, 0.351, 0.384, 0.417, 0.450, 0.482, 0.526, 0.570, 0.658, 0.768, 1.000}; double pipmdataa[]={ 471.8 , 470.4 , 434.6 , 388.8 , 352.7 , 294.8 , 229.6 , 185.0 , 150.6 , 125.6 , 106.5 , 90.40 , 77.38 , 67.39 , 59.40 , 52.57 , 46.76 , 41.70 , 35.26 , 28.89 , 23.88 , 18.69 , 13.85 , 10.16 , 7.812 , 6.076 , 4.674 , 3.632 , 2.886 , 2.292 , 1.749 , 1.275 , 0.921 , 0.680 , 0.499 , 0.338 , 0.226 , 0.130 ,0.0526 ,0.0113 }; double pipmerrorastat[]={1.3, 1.1, 1.1, 1.0, 0.9, 0.5, 0.5, 0.4, 0.4, 0.4, 0.4, 0.35, 0.31, 0.29, 0.27, 0.25, 0.24, 0.23, 0.15, 0.13, 0.12, 0.08, 0.07, 0.06, 0.050, 0.044, 0.039, 0.035, 0.031, 0.028, 0.021, 0.018, 0.016, 0.014, 0.013, 0.010, 0.009, 0.005, 0.0037, 0.0018}; double pipmerrorasytm[]={9.2, 6.6, 5.0, 4.0, 3.3, 2.2, 1.3, 0.9, 0.7, 0.9, 1.1, 1.33, 0.91, 0.70, 0.75, 0.60, 0.50, 0.43, 0.36, 0.29, 0.25, 0.19, 0.14, 0.11, 0.069, 0.061, 0.053, 0.044, 0.037, 0.031, 0.034, 0.028, 0.022, 0.018, 0.014, 0.010, 0.007, 0.005, 0.0029, 0.0013}; double pipmdatal[] ={474.0 , 467.3 , 418.2 , 375.5 , 327.7 , 275.8 , 216.0 , 171.2 , 140.4 , 116.4 , 99.9 , 85.4 , 72.85 , 64.51 , 56.82 , 50.84 , 45.34 , 40.71 , 34.60 , 28.99 , 24.19 , 18.97 , 14.52 , 11.06 , 8.67 , 6.79 , 5.341 , 4.214 , 3.452 , 2.727 , 2.138 , 1.652 , 1.164 , 0.874 , 0.622 , 0.441 , 0.300 , 0.178 , 0.081 , 0.016}; double pipmerrorlstat[]={13.9 , 10.5 , 8.4 , 6.9 , 5.7 , 4.2 , 3.0 , 2.2 , 1.9 , 1.5 , 1.2 , 1.0 , 0.89 , 0.79 , 0.72 , 0.66 , 0.61 , 0.56 , 0.40 , 0.35 , 0.31 , 0.22 , 0.17 , 0.14 , 0.12 , 0.10 ,0.085 ,0.073 ,0.064 ,0.056 , 0.042 ,0.036 ,0.031 ,0.027 ,0.024 , 0.019 ,0.017 ,0.010 ,0.007 ,0.003}; double pipmerrorlsytm[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; double pipmdatac[] ={425.5 , 440.5 , 453.8 , 409.2 , 372.8 , 306.4 , 234.6 , 197.4 , 155.8 , 132.5 , 109.3 , 92.9 , 77.56 , 68.23 , 60.06 , 51.76 , 45.28 , 40.04 , 33.50 , 27.45 , 22.92 , 18.73 , 13.72 , 10.18 , 7.53 , 5.76 , 4.381 , 3.358 , 2.487 , 1.947 , 1.436 , 0.817 , 0.614 , 0.386 , 0.429 , 0.206 , 0.142 , 0.066 , 0.003 , 0.003}; double pipmerrorcstat[]={26.6 , 23.2 , 20.0 , 17.2 , 14.6 , 10.9 , 8.0 , 6.2 , 6.0 , 4.3 , 3.5 , 2.9 , 2.48 , 2.17 , 1.97 , 1.81 , 1.67 , 1.55 , 1.12 , 0.99 , 0.87 , 0.63 , 0.50 , 0.41 , 0.34 , 0.29 ,0.235 ,0.202 ,0.171 ,0.148 , 0.108 ,0.087 ,0.074 ,0.063 ,0.061 , 0.043 ,0.037 ,0.021 ,0.010 ,0.006}; double pipmerrorcsytm[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; double pipmdatab[] ={478.1 ,488.4 ,463.7 ,432.2 ,382.4 , 333.3 ,261.7 ,214.2 ,175.2 ,145.4 , 121.4 ,103.3 ,89.24 ,75.47 ,65.97 , 59.39 ,52.11 ,45.86 ,38.29 ,30.57 , 24.34 ,18.21 ,12.27 , 8.25 , 5.83 , 4.14 ,2.984 ,2.303 ,1.642 ,1.365 , 0.886 ,0.631 ,0.490 ,0.276 ,0.187 , 0.111 ,0.045 ,0.039 ,0.011 ,0.003}; double pipmerrorbstat[]={15.8, 11.9, 9.5, 7.7, 6.5, 4.6, 3.3, 2.7, 2.3, 1.9, 1.7, 1.5, 1.36, 1.21, 1.12, 1.04, 0.97, 0.90, 0.65, 0.58, 0.51, 0.36, 0.28, 0.22, 0.18, 0.15, 0.128, 0.110, 0.094, 0.085, 0.063, 0.052, 0.047, 0.038, 0.033, 0.025, 0.019, 0.010, 0.005, 0.002}; double pipmerrorbsytm[]={0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; double pipmerrora[40],pipmerrorl[40],pipmerrorc[40],pipmerrorb[40]; for(unsigned int ix=0;ix<40;++ix) { pipmerrora[ix]=sqrt(sqr(pipmerrorastat[ix])+sqr(pipmerrorasytm[ix])); pipmerrorl[ix]=sqrt(sqr(pipmerrorlstat[ix])+sqr(pipmerrorlsytm[ix])); pipmerrorc[ix]=sqrt(sqr(pipmerrorcstat[ix])+sqr(pipmerrorcsytm[ix])); pipmerrorb[ix]=sqrt(sqr(pipmerrorbstat[ix])+sqr(pipmerrorbsytm[ix])); } bins =vector(pipmbins,pipmbins+41); data =vector(pipmdataa,pipmdataa+40); error=vector(pipmerrora,pipmerrora+40); _pipma=new_ptr(Histogram(bins,data,error)); data =vector(pipmdatal,pipmdatal+40); error=vector(pipmerrorl,pipmerrorl+40); _pipml=new_ptr(Histogram(bins,data,error)); data =vector(pipmdatac,pipmdatac+40); error=vector(pipmerrorc,pipmerrorc+40); _pipmc=new_ptr(Histogram(bins,data,error)); data =vector(pipmdatab,pipmdatab+40); error=vector(pipmerrorb,pipmerrorb+40); _pipmb=new_ptr(Histogram(bins,data,error)); // opal pion data double pibinso[] = {0.227, 0.239, 0.251, 0.263, 0.276, 0.290, 0.305, 0.320, 0.336, 0.353, 0.371, 0.390, 0.410, 0.431, 0.453, 0.476, 0.500, 0.525, 0.552, 0.580, 0.610, 0.641, 0.673, 0.708, 0.744, 0.782, 0.822, 0.864, 2.02, 2.12, 2.23, 2.34, 2.59, 2.72, 2.86, 3.01, 3.16, 3.32, 3.49, 3.67, 3.86, 4.06, 4.95, 6.05, 7.39, 9.02, 11.02, 13.46, 16.44, 20.08, 29.95, 45.60}; double pidatao[]={ 9.89 , 9.98 , 10.37 , 10.38 , 10.42 , 10.40 , 10.53 , 10.66 , 10.53 , 10.56 , 10.46 , 10.23 , 10.29 , 10.02 , 9.83 , 9.62 , 9.46 , 9.23 , 9.05 , 8.71 , 8.40 , 8.12 , 7.87 , 7.50 , 7.26 , 6.95 , 6.56 , 0.0 , 2.374 , 2.264 , 2.103 , 1.944 , 1.672 , 1.550 , 1.420 , 1.328 , 1.221 , 1.115 , 1.035 , 0.955 , 0.879 , 0.705 , 0.478 , 0.319 , 0.2052 , 0.1246 , 0.0717 , 0.0386 , 0.0206 , 0.0058 , 0.0006 }; double pierrorostat[]={0.07 ,0.07 ,0.07 ,0.07 ,0.07 , 0.07 ,0.06 ,0.06 ,0.06 ,0.06 , 0.06 ,0.06 ,0.06 ,0.05 ,0.05 , 0.05 ,0.05 ,0.05 ,0.05 ,0.04 , 0.04 ,0.04 ,0.04 ,0.04 ,0.03 , 0.03 ,0.04 ,0.0 ,0.031 ,0.013 , 0.018 ,0.010 ,0.009 ,0.013 ,0.008 , 0.008 ,0.008 ,0.007 ,0.007 ,0.006 , 0.006 ,0.003 ,0.002 ,0.001 ,0.0012, 0.0008,0.0006,0.0005,0.0004,0.0001, 0.0001}; double pierrorosyst[]={0.29 ,0.29 ,0.31 ,0.31 ,0.31 , 0.31 ,0.31 ,0.31 ,0.31 ,0.31 , 0.31 ,0.30 ,0.30 ,0.29 ,0.29 , 0.28 ,0.28 ,0.27 ,0.26 ,0.25 , 0.25 ,0.24 ,0.23 ,0.22 ,0.21 , 0.20 ,0.20 ,0.0,0.209 ,0.079 , 0.036 ,0.027 ,0.024 ,0.024 ,0.022 , 0.019 ,0.017 ,0.015 ,0.015 ,0.014 , 0.012 ,0.009 ,0.007 ,0.005 ,0.0032 , 0.0024 ,0.0016 ,0.0012 ,0.0013 ,0.0004 , 0.0002 }; double pierroro[51]; for(unsigned int ix=0;ix<51;++ix) {pierroro[ix]=sqrt(sqr(pierrorostat[ix])+sqr(pierrorosyst[ix]));} bins =vector(pibinso,pibinso+52); data =vector(pidatao,pidatao+51); error=vector(pierroro,pierroro+51); _pipm=new_ptr(Histogram(bins,data,error)); // SLD kaons double Kbins[] = {0.014, 0.016, 0.022, 0.027, 0.033, 0.038, 0.044, 0.049, 0.055, 0.060, 0.066, 0.071, 0.077, 0.082, 0.088, 0.099, 0.110, 0.121, 0.143, 0.164, 0.186, 0.208, 0.230, 0.252, 0.274, 0.296, 0.318, 0.351, 0.384, 0.417, 0.450, 0.482, 0.526, 0.570, 0.658, 0.768, 1.000}; double Kdataa[]={28.59 , 21.57 , 21.62 , 19.65 , 18.02 , 17.27 , 15.78 , 14.664 , 13.535 , 12.599 , 12.036 , 11.349 , 10.207 , 9.571 , 8.671 , 7.784 , 7.237 , 5.746 , 3.959 , 3.473 , 2.739 , 2.452 , 1.903 , 1.574 , 1.360 , 1.118 , 0.890 , 0.683 , 0.567 , 0.433 , 0.351 , 0.264 , 0.188 , 0.122 , 0.0485 , 0.0078}; double Kerrorastat[]={0.64 , 0.20 , 0.19 , 0.18 , 0.16 , 0.17 , 0.17 , 0.194 , 0.189 , 0.176 , 0.165 , 0.162 , 0.164 , 0.160 , 0.113 , 0.114 , 0.120 , 0.089 , 0.102 , 0.134 , 0.047 , 0.037 , 0.030 , 0.027 , 0.024 , 0.022 , 0.016 , 0.014 , 0.013 , 0.012 , 0.011 , 0.008 , 0.008 , 0.005 , 0.0037 , 0.0022}; double Kerrorasytm[]={9.26, 1.57, 0.80, 0.53, 0.44, 0.43, 0.47, 0.442, 0.503, 0.558, 0.635, 0.622, 0.603, 0.566, 0.505, 0.440, 0.395, 0.369, 0.381, 0.532, 0.419, 0.163, 0.063, 0.036, 0.026, 0.020, 0.017, 0.016, 0.015, 0.014, 0.012, 0.010, 0.008, 0.006, 0.0027, 0.0011}; double Kdatal[] ={27.05 , 20.00 , 19.74 , 17.52 , 16.08 , 15.04 , 13.54 , 11.87 , 11.44 , 10.64 , 10.24 , 9.67 , 8.13 , 7.98 , 7.00 , 6.36 , 5.85 , 4.89 , 3.41 , 2.84 , 2.564 , 2.401 , 1.973 , 1.643 , 1.481 , 1.211 , 1.001 , 0.746 , 0.666 , 0.559 , 0.426 , 0.363 , 0.261 , 0.183 , 0.079 , 0.008}; double Kerrorlstat[]={1.27 , 0.42 , 0.40 , 0.37 , 0.37 , 0.34 , 0.34 , 0.34 , 0.33 , 0.30 , 0.29 , 0.29 , 0.27 , 0.28 , 0.19 , 0.19 , 0.20 , 0.15 , 0.17 , 0.22 , 0.082 ,0.067 ,0.054 ,0.048 ,0.044 , 0.039 ,0.029 ,0.025 ,0.023 ,0.022 , 0.020 ,0.016 ,0.015 ,0.010 ,0.007 , 0.004}; double Kerrorlsytm[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0}; double Kdatac[] ={30.92 , 22.43 , 22.04 , 20.82 , 16.79 , 16.68 , 16.46 , 15.81 , 12.62 , 12.24 , 11.42 , 10.95 , 10.88 , 9.62 , 9.84 , 8.08 , 8.98 , 6.59 , 5.50 , 5.12 , 3.850 , 3.087 , 2.074 , 1.960 , 1.681 , 1.368 , 1.043 , 0.874 , 0.600 , 0.408 , 0.408 , 0.243 , 0.173 , 0.064 , 0.009 , 0.008}; double Kerrorcstat[]={3.86 , 1.37 , 1.27 , 1.17 , 1.15 , 1.15 , 1.06 , 1.08 , 0.99 , 0.92 , 0.87 , 0.85 , 0.84 , 0.81 , 0.59 , 0.58 , 0.63 , 0.45 , 0.51 , 0.68 , 0.245 ,0.190 ,0.145 ,0.132 ,0.119 , 0.104 ,0.076 ,0.068 ,0.058 ,0.050 , 0.050 ,0.037 ,0.034 ,0.020 ,0.011 , 0.008}; double Kerrorcsytm[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0}; double Kdatab[] ={30.21 , 23.06 , 22.89 , 21.64 , 21.36 , 21.36 , 19.90 , 18.91 , 18.46 , 17.43 , 16.92 , 15.62 , 15.11 , 13.18 , 12.43 , 11.56 , 9.96 , 7.17 , 4.58 , 4.20 , 2.541 , 2.009 , 1.627 , 1.116 , 0.830 , 0.640 , 0.452 , 0.337 , 0.245 , 0.149 , 0.108 , 0.057 , 0.061 , 0.012 , 0.002 , 0.001}; double Kerrorbstat[]={1.99 , 0.62 , 0.60 , 0.55 , 0.53 , 0.56 , 0.57 , 0.60 , 0.58 , 0.54 , 0.53 , 0.52 , 0.52 , 0.50 , 0.36 , 0.37 , 0.38 , 0.27 , 0.29 , 0.36 , 0.126 ,0.096 ,0.078 ,0.062 ,0.053 , 0.045 ,0.032 ,0.028 ,0.024 ,0.020 , 0.018 ,0.012 ,0.013 ,0.005 ,0.003 , 0.001}; double Kerrorbsytm[]={0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 , 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 , 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0 , 0.0 ,0.0 ,0.0 ,0.0 ,0.0 ,0.0}; double Kerrora[36],Kerrorl[36],Kerrorc[36],Kerrorb[36]; for(unsigned int ix=0;ix<36;++ix) { Kerrora[ix]=sqrt(sqr(Kerrorastat[ix])+sqr(Kerrorasytm[ix])); Kerrorl[ix]=sqrt(sqr(Kerrorlstat[ix])+sqr(Kerrorlsytm[ix])); Kerrorc[ix]=sqrt(sqr(Kerrorcstat[ix])+sqr(Kerrorcsytm[ix])); Kerrorb[ix]=sqrt(sqr(Kerrorbstat[ix])+sqr(Kerrorbsytm[ix])); } bins =vector(Kbins,Kbins+37); data =vector(Kdataa,Kdataa+36); error=vector(Kerrora,Kerrora+36); _kpma=new_ptr(Histogram(bins,data,error)); data =vector(Kdatal,Kdatal+36); error=vector(Kerrorl,Kerrorl+36); _kpml=new_ptr(Histogram(bins,data,error)); data =vector(Kdatac,Kdatac+36); error=vector(Kerrorc,Kerrorc+36); _kpmc=new_ptr(Histogram(bins,data,error)); data =vector(Kdatab,Kdatab+36); error=vector(Kerrorb,Kerrorb+36); _kpmb=new_ptr(Histogram(bins,data,error)); // OPAL kaons double Kbinso[] = {0.271, 0.281, 0.292, 0.304, 0.317, 0.331, 0.346, 0.362, 0.379, 0.397, 0.416, 0.436, 0.457, 0.480, 0.504, 0.528, 0.555, 0.583, 0.612, 0.643, 0.675, 0.709, 0.745, 0.783, 4.05, 4.95, 6.05, 7.38, 9.02, 11.01, 13.45, 16.43, 20.06, 29.93, 45.60}; double Kdatao[]={0.363 ,0.373 ,0.367 ,0.374 ,0.375 , 0.410 ,0.431 ,0.418 ,0.456 ,0.499 , 0.514 ,0.486 ,0.522 ,0.541 ,0.539 , 0.557 ,0.587 ,0.590 ,0.586 ,0.591 , 0.614 ,0.597 ,0.613 ,0.0 ,0.181 , 0.138 ,0.103 ,0.0767,0.0536,0.0349, 0.0220,0.0127,0.0042,0.0004}; double Kerrorostat[]={0.030 ,0.027 ,0.024 ,0.022 ,0.021 , 0.020 ,0.020 ,0.018 ,0.018 ,0.018 , 0.017 ,0.011 ,0.011 ,0.011 ,0.011 , 0.011 ,0.011 ,0.010 ,0.010 ,0.010 , 0.009 ,0.009 ,0.009 ,0.0 ,0.004 , 0.003 ,0.001 ,0.0010,0.0006,0.0005, 0.0003,0.0003,0.0001,0.0001}; double Kerrorosyst[]={0.028 ,0.028 ,0.025 ,0.023 ,0.019 , 0.019 ,0.019 ,0.020 ,0.016 ,0.017 , 0.016 ,0.011 ,0.011 ,0.012 ,0.018 , 0.020 ,0.014 ,0.048 ,0.016 ,0.044 , 0.024 ,0.025 ,0.031 , 0.0 ,0.015 , 0.009 ,0.006 ,0.0042,0.0029,0.0018, 0.0012,0.0007,0.0003,0.0001}; double Kerroro[34]; for(unsigned int ix=0;ix<34;++ix) {Kerroro[ix]=sqrt(sqr(Kerrorostat[ix])+sqr(Kerrorosyst[ix]));} bins =vector(Kbinso,Kbinso+35); data =vector(Kdatao,Kdatao+34); error=vector(Kerroro,Kerroro+34); _kpm=new_ptr(Histogram(bins,data,error)); // SLD proton data double pbins[] = {0.014, 0.016, 0.022, 0.027, 0.033, 0.038, 0.044, 0.049, 0.055, 0.060, 0.066, 0.071, 0.077, 0.082, 0.088, 0.099, 0.110, 0.121, 0.143, 0.164, 0.186, 0.208, 0.230, 0.252, 0.274, 0.296, 0.318, 0.351, 0.384, 0.417, 0.450, 0.482, 0.526, 0.570, 0.658, 0.768, 1.000}; double pdataa[]={14.51 , 17.32 , 13.75 , 11.12 , 10.75 , 9.048 , 7.669 , 7.410 , 6.587 , 5.788 , 5.344 , 4.987 , 4.278 , 4.117 , 3.633 , 3.036 , 2.568 , 2.165 , 1.931 , 1.603 , 0.871 , 0.912 , 0.775 , 0.639 , 0.511 , 0.419 , 0.358 , 0.254 , 0.173 , 0.141 , 0.0950 , 0.0688 , 0.0470 , 0.0241 , 0.0093 , 0.0015}; double perrorastat[]={ 0.52 , 0.27 , 0.29 , 0.17 , 0.14 , 0.123 , 0.117 , 0.113 , 0.109 , 0.105 , 0.100 , 0.104 , 0.100 , 0.101 , 0.072 , 0.076 , 0.081 , 0.069 , 0.096 , 0.133 , 0.045 , 0.030 , 0.025 , 0.022 , 0.019 , 0.016 , 0.011 , 0.009 , 0.008 , 0.007 , 0.0055 , 0.0039 , 0.0032 , 0.0017 , 0.0010 , 0.0003}; double perrorasytm[]={5.08, 2.58, 2.50, 1.24, 0.47, 0.350, 0.298, 0.294, 0.259, 0.238, 0.228, 0.229, 0.242, 0.253, 0.269, 0.300, 0.357, 0.398, 0.452, 0.594, 0.255, 0.179, 0.062, 0.044, 0.033, 0.024, 0.018, 0.012, 0.008, 0.005,0.0036,0.0027,0.0018,0.0012,0.0006,0.0001}; double pdatal[] ={13.98 , 17.63 , 13.42 , 10.57 , 9.98 , 8.37 , 7.33 , 7.79 , 6.62 , 5.88 , 5.39 , 5.22 , 4.42 , 4.44 , 3.65 , 3.11 , 2.73 , 2.15 , 1.83 , 1.84 , 0.905 , 1.065 , 0.822 , 0.762 , 0.628 , 0.486 , 0.446 , 0.306 , 0.230 , 0.197 , 0.145 , 0.108 , 0.070 , 0.036 , 0.013 , 0.003}; double perrorlstat[]={0.99 , 0.58 , 0.60 , 0.36 , 0.31 , 0.26 , 0.24 , 0.23 , 0.22 , 0.20 , 0.19 , 0.19 , 0.18 , 0.19 , 0.13 , 0.13 , 0.15 , 0.12 , 0.16 , 0.24 ,0.078 ,0.054 ,0.044 ,0.038 ,0.033 ,0.029 ,0.022 ,0.018 ,0.015 ,0.013 ,0.011 ,0.008 ,0.006 ,0.003 ,0.002 ,0.001}; double perrorlsytm[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; double pdatac[] ={13.28, 15.22, 13.32, 9.60, 11.64, 10.07, 8.10, 6.09, 6.54, 6.36, 4.62, 4.43, 4.08, 3.67, 4.07, 2.98, 2.30, 2.39, 1.72, 0.31, 0.561, 0.978, 0.907, 0.652, 0.572, 0.494, 0.454, 0.314, 0.170, 0.103, 0.064, 0.015, 0.044, 0.007, 0.015, 0.001}; double perrorcstat[]={ 2.94 , 1.89 , 1.86 , 1.16 , 1.01 , 0.87 , 0.76 , 0.72 , 0.67 , 0.63 , 0.59 , 0.58 , 0.55 , 0.55 , 0.42 , 0.41 , 0.43 , 0.36 , 0.50 , 0.71 , 0.235 , 0.163 , 0.136 , 0.116 , 0.101 , 0.089 , 0.069 , 0.054 , 0.041 , 0.033 , 0.028 , 0.018 , 0.017 , 0.007 , 0.005 , 0.002}; double perrorcsytm[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; double pdatab[] ={13.79 , 17.93 , 16.41 , 12.11 , 10.32 , 9.52 , 7.72 , 6.86 , 6.19 , 4.96 , 4.82 , 4.57 , 4.07 , 3.82 , 3.29 , 2.68 , 2.24 , 1.84 , 1.91 , 1.25 , 0.867 , 0.739 , 0.645 , 0.392 , 0.252 , 0.266 , 0.146 , 0.102 , 0.020 , 0.034 , 0.004 , 0.016 , 0.003 , 0.004 , 0.001 , 0.000}; double perrorbstat[]={1.49 , 0.78 , 0.93 , 0.52 , 0.42 , 0.40 , 0.36 , 0.32 , 0.32 , 0.29 , 0.29 , 0.29 , 0.29 , 0.29 , 0.21 , 0.22 , 0.23 , 0.19 , 0.27 , 0.36 , 0.121 ,0.072 ,0.060 ,0.047 ,0.038 , 0.035 ,0.022 ,0.018 ,0.012 ,0.011 , 0.007 ,0.006 ,0.003 ,0.002 ,0.001 , 0.000}; double perrorbsytm[]={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0}; double perrora[36],perrorl[36],perrorc[36],perrorb[36]; for(unsigned int ix=0;ix<36;++ix) { perrora[ix]=sqrt(sqr(perrorastat[ix])+sqr(perrorasytm[ix])); perrorl[ix]=sqrt(sqr(perrorlstat[ix])+sqr(perrorlsytm[ix])); perrorc[ix]=sqrt(sqr(perrorcstat[ix])+sqr(perrorcsytm[ix])); perrorb[ix]=sqrt(sqr(perrorbstat[ix])+sqr(perrorbsytm[ix])); } bins =vector(pbins,pbins+37); data =vector(pdataa,pdataa+36); error=vector(perrora,perrora+36); _ppma=new_ptr(Histogram(bins,data,error)); data =vector(pdatal,pdatal+36); error=vector(perrorl,perrorl+36); _ppml=new_ptr(Histogram(bins,data,error)); data =vector(pdatac,pdatac+36); error=vector(perrorc,perrorc+36); _ppmc=new_ptr(Histogram(bins,data,error)); data =vector(pdatab,pdatab+36); error=vector(perrorb,perrorb+36); _ppmb=new_ptr(Histogram(bins,data,error)); // OPAL protons double pbinso[] = {0.406, 0.421, 0.438, 0.456, 0.475, 0.495, 0.517, 0.541, 0.565, 0.592, 0.620, 0.650, 0.681, 0.714, 0.750, 0.787, 0.826, 0.867, 0.911, 0.957, 1.005, 1.056, 1.109, 1.166, 1.225, 1.287, 1.353, 1.422, 4.05, 4.95, 6.04, 7.38, 9.01, 11.01, 13.44, 16.42, 20.05, 29.90, 45.60}; double pdatao[]={0.169 ,0.174 ,0.171 ,0.185 , 0.181 ,0.202 ,0.215 ,0.228 , 0.230 ,0.230 ,0.236 ,0.239 , 0.246 ,0.248 ,0.248 ,0.254 , 0.260 ,0.260 ,0.257 ,0.263 , 0.257 ,0.256 ,0.257 ,0.248 , 0.241 ,0.250 ,0.245 ,0.0 , 0.0606 ,0.0517 ,0.0352 ,0.0214 , 0.0152 ,0.0093 ,0.0045 ,0.0015 , 0.00056 ,0.000015}; double perrorostat[]={0.010 ,0.009 ,0.009 ,0.008 , 0.008 ,0.008 ,0.008 ,0.008 , 0.008 ,0.008 ,0.007 ,0.007 , 0.007 ,0.007 ,0.004 ,0.004 , 0.004 ,0.004 ,0.004 ,0.004 , 0.004 ,0.004 ,0.004 ,0.004 , 0.004 ,0.004 ,0.004 ,0.0 , 0.0036 ,0.0029 ,0.0011 ,0.0011 , 0.0006 ,0.0004 ,0.0003 ,0.0002 , 0.00005 ,0.000004}; double perrorosyst[]={0.013 ,0.015 ,0.012 ,0.015 ,0.006 , 0.010 ,0.012 ,0.014 ,0.010 ,0.007 , 0.012 ,0.008 ,0.006 ,0.009 ,0.009 , 0.008 ,0.007 ,0.007 ,0.006 ,0.007 , 0.021 ,0.027 ,0.029 ,0.027 ,0.017 , 0.016 ,0.021 , 0.0 ,0.0129 ,0.0062 , 0.0031 ,0.0023 ,0.0021 ,0.0013 ,0.0006 , 0.0005 ,0.00014 ,0.000026}; double perroro[38]; for(unsigned int ix=0;ix<38;++ix) perroro[ix]=sqrt(sqr(perrorostat[ix])+sqr(perrorosyst[ix])); bins =vector(pbinso,pbinso+39); data =vector(pdatao,pdatao+38); error=vector(perroro,perroro+38); _ppm=new_ptr(Histogram(bins,data,error)); // OPAL light quarks double udsbinso[] = {0.00, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.10, 0.12, 0.14, 0.16, 0.18, 0.20, 0.25, 0.30, 0.40, 0.50, 0.60, 0.80, 1.00}; double udsdatao[]={388. ,390. ,241. ,176. ,122.6 , 95.7 ,79.3 ,65.0 ,53.3 ,43.3 , 35.1 ,27.7 ,21.2 ,17.1 ,13.3 , 9.86 ,6.30 ,3.42 ,1.50 ,0.668 , 0.241 , 0.031}; double udserrorostat[]={5. ,5. ,4. ,3.,2.7 ,2.2 , 1.9 ,1.6 ,1.6 ,1.5 ,0.9 ,0.7 , 0.7 ,0.6 ,0.6 ,0.26,0.19,0.09, 0.05,0.033 ,0.008 ,0.007}; double udserrorosyst[]={9. ,10.,7. ,5. ,3.9,2.9, 2.3,1.7,1.3,1.0,0.7,0.4, 0.4,0.3,0.3,0.30 ,0.25 , 0.17 ,0.10 ,0.048 ,0.024 ,0.007}; double udserroro[22]; for(unsigned int ix=0;ix<22;++ix) {udserroro[ix]=sqrt(sqr(udserrorostat[ix])+sqr(udserrorosyst[ix]));} bins =vector(udsbinso,udsbinso+23); data =vector(udsdatao,udsdatao+22); error=vector(udserroro,udserroro+22); _udsxp=new_ptr(Histogram(bins,data,error)); double udsxibinso[] = {0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0, 5.2, 5.4, 5.6, 5.8}; double udsxidatao[]={0.024 , 0.114 , 0.277 , 0.529 , 0.86 , 1.31 , 1.76 , 2.22 , 2.70 , 3.06 , 3.76 , 4.03 , 4.48 , 5.12 , 5.22 , 5.26 , 6.24 , 6.02 , 5.89 , 6.04 , 5.85 , 5.58 , 5.15 , 4.21 , 3.99 , 2.94 , 2.14 , 1.93 , 1.43}; double udsxierrorostat[]={0.006 ,0.003 ,0.009 ,0.016 ,0.02 , 0.03 ,0.05 ,0.06 ,0.07 ,0.08 , 0.09 ,0.10 ,0.10 ,0.11 ,0.12 , 0.13 ,0.12 ,0.12 ,0.13 ,0.12 , 0.13 ,0.11 ,0.11 ,0.12 ,0.10 , 0.10 ,0.10 ,0.08 ,0.09}; double udsxierrorosyst[]={0.006,0.011,0.025,0.032,0.05 ,0.06 , 0.07 ,0.06 ,0.06 ,0.09 ,0.11 ,0.13 , 0.18 ,0.16 ,0.17 ,0.19 ,0.21 ,0.20 , 0.26 ,0.20 ,0.20 ,0.14 ,0.09 ,0.24 , 0.14 ,0.15 ,0.12 ,0.13 ,0.23 }; double udsxierroro[22]; for(unsigned int ix=0;ix<22;++ix) {udsxierroro[ix]=sqrt(sqr(udsxierrorostat[ix])+sqr(udsxierrorosyst[ix]));} bins =vector(udsxibinso,udsxibinso+23); data =vector(udsxidatao,udsxidatao+22); error=vector(udsxierroro,udsxierroro+22); _udsxip=new_ptr(Histogram(bins,data,error)); // lambdas double Lbinso[] = {0.012, 0.014, 0.016, 0.018, 0.020, 0.025, 0.030, 0.035, 0.040, 0.050, 0.060, 0.080, 0.100, 0.120, 0.140, 0.160, 0.180, 0.200, 0.250, 0.300, 0.350, 0.400, 0.500, 0.600, 0.700, 0.900}; double Ldatao[]={2.97 ,3.43 ,3.74 ,3.70 ,3.69 ,3.68 , 3.70 ,3.41 ,3.18 ,2.66 ,2.04 ,1.52 , 1.19 ,0.956 ,0.771 ,0.630 ,0.528 ,0.408 , 0.269 ,0.182 ,0.129 ,0.078 ,0.035 ,0.0118 ,0.0026}; double Lerrorostat[]={0.35 ,0.30 ,0.29 ,0.21 ,0.18 ,0.16 , 0.15 ,0.14 ,0.11 ,0.09 ,0.06 ,0.04 , 0.03 ,0.023 ,0.018 ,0.015 ,0.013 ,0.010 , 0.008 ,0.007 ,0.006 ,0.005 ,0.003 ,0.0019 ,0.0012}; double Lerrorosyst[]={0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0, 0.0,0.0,0.0,0.0,0.0,0.0,0.0}; double Lerroro[25]; for(unsigned int ix=0;ix<25;++ix) Lerroro[ix]=sqrt(sqr(Lerrorostat[ix])+sqr(Lerrorosyst[ix])); bins =vector(Lbinso,Lbinso+26); data =vector(Ldatao,Ldatao+25); error=vector(Lerroro,Lerroro+25); _lpm=new_ptr(Histogram(bins,data,error)); // K*+/- CERN-PPE-96-186 double Kstarpmbin[]={0.03 ,0.06 ,0.09 ,0.12 ,0.15 , 0.18 ,0.22 ,0.26 ,0.32 ,0.44 ,1.00}; double Kstarpmdata[]={5.17 ,3.43 ,2.09 ,2.01 ,1.54 , 1.16 ,0.71 ,0.59 ,0.38 ,0.06}; double Kstarpmstat[]={0.53 ,0.29 ,0.20 ,0.16 ,0.15 , 0.12 ,0.09 ,0.06 ,0.04 ,0.01}; double Kstarpmsyst[]={0.54,0.58,0.22,0.23,0.19,0.22,0.07,0.07,0.03,0.01}; double Kstarpmerror[10]; for(unsigned int ix=0;ix<10;++ix) Kstarpmerror[ix] = sqrt(sqr(Kstarpmstat[ix])+sqr(Kstarpmsyst[ix])); bins =vector(Kstarpmbin,Kstarpmbin+11); data =vector(Kstarpmdata,Kstarpmdata+10); error=vector(Kstarpmerror,Kstarpmerror+10); _xpKstarplus = new_ptr(Histogram(bins,data,error)); // xi- ALEXANDER 96 ZP C73,569 double ximbinsA[]={0.035 ,0.050 ,0.060 ,0.080 ,0.100 , 0.150 ,0.200 ,0.300 ,0.400 ,0.500}; double ximdataA[]={0.341 ,0.254 ,0.180 ,0.114 ,0.0737 , 0.0438 ,0.0192 ,0.0120 ,0.0084}; double ximstatA[]={0.018 ,0.014 ,0.007 ,0.005 ,0.0024 , 0.0021 ,0.0015 ,0.0012 ,0.0014}; double ximsystA[]={0.032 ,0.021 ,0.012 ,0.008 ,0.0048 , 0.0031 ,0.0014 ,0.0012 ,0.0015}; double ximerrorA[9]; for(unsigned int ix=0;ix<9;++ix) ximerrorA[ix] = sqrt(sqr(ximstatA[ix])+sqr(ximsystA[ix])); bins =vector(ximbinsA,ximbinsA+10); data =vector(ximdataA,ximdataA+9); error=vector(ximerrorA,ximerrorA+9); _xpXiminus = new_ptr(Histogram(bins,data,error)); double ximbinsB[]={0.6 ,0.8 ,1.0 ,1.2 ,1.4 , 1.6 ,1.8 ,2.0 ,2.2 ,2.4 , 2.6 ,2.8 ,3.0 ,3.2 ,3.4 ,3.6}; double ximdataB[]={0.0026 ,0.0044 ,0.0044 ,0.0050 ,0.0071 , 0.0075 ,0.0088 ,0.0086 ,0.0094 ,0.0103 , 0.0121 ,0.0102 ,0.0100 ,0.0087 ,0.0088}; double ximstatB[]={0.0005 ,0.0004 ,0.0004 ,0.0005 ,0.0004 , 0.0004 ,0.0004 ,0.0004 ,0.0004 ,0.0005 , 0.0006 ,0.0006 ,0.0007 ,0.0009 ,0.0011}; double ximsystB[]={0.0017 ,0.0011 ,0.0005 ,0.0005 ,0.0006 , 0.0006 ,0.0007 ,0.0006 ,0.0007 ,0.0008 , 0.0009 ,0.0008 ,0.0009 ,0.0010 ,0.0013}; double ximerrorB[15]; for(unsigned int ix=0;ix<15;++ix) ximerrorB[ix] = sqrt(sqr(ximstatB[ix])+sqr(ximsystB[ix])); bins =vector(ximbinsB,ximbinsB+16); data =vector(ximdataB,ximdataB+15); error=vector(ximerrorB,ximerrorB+15); _xiXiminus = new_ptr(Histogram(bins,data,error)); // sigma*+ALEXANDER 96 ZP C73,569 double sigmapbinsA[]={0.04 ,0.07 ,0.10 ,0.15 ,0.20 ,0.30 ,0.50}; double sigmapdataA[]={0.280 ,0.118 ,0.0619 ,0.0403 ,0.0248 ,0.0076}; double sigmapstatA[]={0.020 ,0.012 ,0.0060 ,0.0048 ,0.0027 ,0.0013}; double sigmapsystA[]={0.021 ,0.009 ,0.0047 ,0.0031 ,0.0019 ,0.0006}; double sigmaperrorA[6]; for(unsigned int ix=0;ix<6;++ix) sigmaperrorA[ix] = sqrt(sqr(sigmapstatA[ix])+sqr(sigmapsystA[ix])); bins =vector(sigmapbinsA,sigmapbinsA+7); data =vector(sigmapdataA,sigmapdataA+6); error=vector(sigmaperrorA,sigmaperrorA+6); _xpSigmaplus = new_ptr(Histogram(bins,data,error)); double sigmapbinsB[]={0.70 ,1.21 ,1.62 ,1.92 ,2.35 ,2.76 ,3.65}; double sigmapdataB[]={0.0030 ,0.0060 ,0.0068 ,0.0072 ,0.0086 ,0.0095}; double sigmapstatB[]={0.0005 ,0.0007 ,0.0008 ,0.0007 ,0.0008 ,0.0007}; double sigmapsystB[]={0.0002 ,0.0005 ,0.0005 ,0.0005 ,0.0007 ,0.0007}; double sigmaperrorB[6]; for(unsigned int ix=0;ix<6;++ix) sigmaperrorB[ix] = sqrt(sqr(sigmapstatB[ix])+sqr(sigmapsystB[ix])); bins =vector(sigmapbinsB,sigmapbinsB+7); data =vector(sigmapdataB,sigmapdataB+6); error=vector(sigmaperrorB,sigmaperrorB+6); _xiSigmaplus = new_ptr(Histogram(bins,data,error)); // sigma*+ ALEXANDER 96 ZP C73,569 double sigmambinsA[]={0.04 ,0.07 ,0.10 ,0.15 ,0.20 ,0.30 ,0.50}; double sigmamdataA[]={0.291 ,0.116 ,0.0646 ,0.0414 ,0.0235 ,0.0062}; double sigmamstatA[]={0.021 ,0.013 ,0.0071 ,0.0061 ,0.0040 ,0.0020}; double sigmamsystA[]={0.022 ,0.009 ,0.000 ,0.0032,0.0018,0.0005}; double sigmamerrorA[6]; for(unsigned int ix=0;ix<6;++ix) sigmamerrorA[ix] = sqrt(sqr(sigmamstatA[ix])+sqr(sigmamsystA[ix])); bins =vector(sigmambinsA,sigmambinsA+7); data =vector(sigmamdataA,sigmamdataA+6); error=vector(sigmamerrorA,sigmamerrorA+6); _xpSigmaminus = new_ptr(Histogram(bins,data,error)); double sigmambinsB[]={0.70 ,1.21 ,1.62 ,1.92 ,2.35 ,2.76 ,3.65}; double sigmamdataB[]={0.0024 ,0.0057 ,0.0070 ,0.0075 ,0.0085 ,0.0098}; double sigmamstatB[]={0.0008 ,0.0010 ,0.0010 ,0.0008 ,0.0009 ,0.0007}; double sigmamsystB[]={0.0002,0.0004,0.0005,0.0006,0.0006,0.0007}; double sigmamerrorB[6]; for(unsigned int ix=0;ix<6;++ix) sigmamerrorB[ix] = sqrt(sqr(sigmamstatB[ix])+sqr(sigmamsystB[ix])); bins =vector(sigmambinsB,sigmambinsB+7); data =vector(sigmamdataB,sigmamdataB+6); error=vector(sigmamerrorB,sigmamerrorB+6); _xiSigmaminus = new_ptr(Histogram(bins,data,error)); // xi*0 ALEXANDER 96 ZP C73,569 double xi0binsA[]={0.04 ,0.07 ,0.10 ,0.15 ,0.20 ,0.30}; double xi0dataA[]={0.064 ,0.0387 ,0.0239 ,0.0144 ,0.0049}; double xi0statA[]={0.014 ,0.0054 ,0.0028 ,0.0025 ,0.0015}; double xi0systA[]={0.009 ,0.0042,0.0024,0.0017,0.0006}; double xi0errorA[5]; for(unsigned int ix=0;ix<5;++ix) xi0errorA[ix] = sqrt(sqr(xi0statA[ix])+sqr(xi0systA[ix])); bins =vector(xi0binsA,xi0binsA+6); data =vector(xi0dataA,xi0dataA+5); error=vector(xi0errorA,xi0errorA+5); _xpXi0 = new_ptr(Histogram(bins,data,error)); double xi0binsB[]={1.21 ,1.62 ,1.92 ,2.36 ,2.79 ,3.83}; double xi0dataB[]={0.0012 ,0.0024 ,0.0027 ,0.0027 ,0.0019}; double xi0statB[]={0.0004 ,0.0004 ,0.0003 ,0.0004 ,0.0004}; double xi0systB[]={0.0002,0.0003,0.0003,0.0003,0.0003}; double xi0errorB[5]; for(unsigned int ix=0;ix<5;++ix) xi0errorB[ix] = sqrt(sqr(xi0statB[ix])+sqr(xi0systB[ix])); bins =vector(xi0binsB,xi0binsB+6); data =vector(xi0dataB,xi0dataB+5); error=vector(xi0errorB,xi0errorB+5); _xiXi0 = new_ptr(Histogram(bins,data,error)); double lambda1520binsA[]={0.035 ,0.039 ,0.045 ,0.052 ,0.060 ,0.100 ,0.300 ,0.500}; double lambda1520dataA[]={0.447 ,0.139 ,0.150 ,0.163 ,0.000 ,0.033 ,0.008}; double lambda1520statA[]={0.070 ,0.036 ,0.032 ,0.052 ,0.000 ,0.007 ,0.003}; double lambda1520systA[]={0.076,0.018,0.018,0.022,0.000,0.006,0.002}; double lambda1520errorA[7]; for(unsigned int ix=0;ix<7;++ix) lambda1520errorA[ix] = sqrt(sqr(lambda1520statA[ix])+sqr(lambda1520systA[ix])); bins =vector(lambda1520binsA,lambda1520binsA+8); data =vector(lambda1520dataA,lambda1520dataA+7); error=vector(lambda1520errorA,lambda1520errorA+7); _xpLambda1520 = new_ptr(Histogram(bins,data,error)); double lambda1520binsB[]={0.70 ,1.21 ,2.36 ,3.00 ,3.22 ,3.50 ,3.90,4.54}; double lambda1520dataB[]={0.0032 ,0.0060 ,0.0000 ,0.0058 ,0.0037 ,0.0020 ,0.0026}; double lambda1520statB[]={0.0010 ,0.0012 ,0.0000 ,0.0018 ,0.0008 ,0.0005 ,0.0004}; double lambda1520systB[]={0.0007,0.0010,0.0000,0.0008,0.0005,0.0003,0.0004}; double lambda1520errorB[7]; for(unsigned int ix=0;ix<7;++ix) lambda1520errorB[ix] = sqrt(sqr(lambda1520statB[ix])+sqr(lambda1520systB[ix])); bins =vector(lambda1520binsB,lambda1520binsB+8); data =vector(lambda1520dataB,lambda1520dataB+7); error=vector(lambda1520errorB,lambda1520errorB+7); _xiLambda1520 = new_ptr(Histogram(bins,data,error)); // delta++ double deltabins []={0.05,0.075,0.1,0.15,0.2,0.3,1.0}; double deltadata []={1.9,2.8,0.38,0.18,0.073 ,0.006}; double deltaerror[]={0.7,0.8,0.09,0.10,0.043,0.0029}; bins =vector(deltabins,deltabins+7); data =vector(deltadata,deltadata+6); error=vector(deltaerror,deltaerror+6); _xeDelta = new_ptr(Histogram(bins,data,error)); // f_0(980) double f980bins []={0.00 ,0.06 ,0.12 ,0.14 ,0.16 ,0.20 ,0.25 ,0.35 ,0.50 ,1.00}; double f980data []={1.04 ,0.57 ,0.30 ,0.20 ,0.21 ,0.13 ,0.085 ,0.046 ,0.0079}; double f980error[]={0.09 ,0.05 ,0.06 ,0.05 ,0.03 ,0.02 ,0.011 ,0.005 ,0.0009}; bins =vector(f980bins ,f980bins +10); data =vector(f980data ,f980data + 9); error=vector(f980error,f980error+ 9); _xpf980 = new_ptr(Histogram(bins,data,error)); // f_2 double f2bins []={0.00 ,0.06 ,0.12 ,0.14 ,0.16 ,0.20 ,0.25 ,0.35 ,0.50 ,1.00 }; double f2data []={1.00 ,0.69 ,0.41 ,0.25 ,0.27 ,0.22 ,0.091 ,0.035 ,0.008}; double f2error[]={0.14 ,0.08 ,0.09 ,0.08 ,0.04 ,0.03 ,0.016 ,0.008 ,0.001}; bins =vector(f2bins ,f2bins +10); data =vector(f2data ,f2data + 9); error=vector(f2error,f2error+ 9); _xpf2 = new_ptr(Histogram(bins,data,error)); // phi double phibins []={0.00 ,0.06 ,0.12 ,0.14 ,0.16 ,0.20 ,0.25 ,0.35 ,0.50 ,1.00}; double phidata []={0.464 ,0.316 ,0.285 ,0.197 ,0.167 ,0.133 ,0.096 ,0.045 ,0.010}; double phistat []={0.011 ,0.021 ,0.020 ,0.019 ,0.017 ,0.007 ,0.004 ,0.002 ,0.001}; double phisyst []={0.005,0.007,0.009,0.006,0.002,0.002,0.001,0.001,0.000}; double phierror[9]; for(unsigned int ix=0;ix<9;++ix) phierror[ix] = sqrt(sqr(phistat[ix])+sqr(phisyst[ix])); bins =vector(phibins ,phibins +10); data =vector(phidata ,phidata + 9); error=vector(phierror,phierror+ 9); _xpphi = new_ptr(Histogram(bins,data,error)); // K*0 double Kstar0bins []={0.0 ,0.01 ,0.03 ,0.1 ,0.125 , 0.14 ,0.16 ,0.2 ,0.3 ,0.4 ,0.5 ,0.7 ,1.0 }; double Kstar0data []={1.22 ,4.96 ,4.14 ,2.35 ,1.99 , 1.60 ,1.30 ,0.81 ,0.44 ,0.22 ,0.090 ,0.013 }; double Kstar0stat []={0.15 ,0.17 ,0.20 ,0.16 ,0.15 , 0.11 ,0.09 ,0.04 ,0.03 ,0.02 ,0.009 ,0.004 }; double Kstar0syst []={0.04 ,0.15 ,0.19 ,0.13 ,0.09 , 0.10 ,0.06 ,0.05 ,0.03 ,0.01 ,0.003,0.003}; double Kstar0error[12]; for(unsigned int ix=0;ix<12;++ix) Kstar0error[ix] = sqrt(sqr(Kstar0stat[ix])+sqr(Kstar0syst[ix])); bins =vector(Kstar0bins ,Kstar0bins +13); data =vector(Kstar0data ,Kstar0data +12); error=vector(Kstar0error,Kstar0error+12); _xpKstar0 = new_ptr(Histogram(bins,data,error)); // D0 double D0bins []={0.15 ,0.25 ,0.35 ,0.45 ,0.55 ,0.65 ,0.75 ,0.85 ,1.00}; double D0data []={41.1 ,101.4 , 58.4 , 52.9 , 53.2 , 36.0 , 13.5 , 2.0}; double D0error[]={11.3 ,13.8 ,10.5 , 8.1 , 8.4 , 8.0 , 3.7 , 2.0}; bins =vector(D0bins ,D0bins + 9); data =vector(D0data ,D0data + 8); error=vector(D0error,D0error+ 8); _xeD0 = new_ptr(Histogram(bins,data,error)); // Dstar double Dstarbins []={0.10 ,0.15 ,0.20 ,0.25 ,0.30 , 0.35 ,0.40 ,0.45 ,0.50 ,0.55 , 0.60 ,0.65 ,0.70 ,0.75 ,0.80 , 0.85 ,0.90 ,0.95 ,1.00}; double Dstardata []={7.47 , 9.03 ,10.42 ,10.76 , 9.89 , 8.97 , 8.17 , 6.94 , 6.73 , 5.56 , 4.94 , 3.49 , 3.13 , 2.00 , 1.27 , 0.50 , 0.27 , 0.06}; double Dstarerror[]={0.63 ,0.49 ,0.44 ,0.43 ,0.38 , 0.35 ,0.32 ,0.28 ,0.27 ,0.24 , 0.22 ,0.18 ,0.17 ,0.14 ,0.11 , 0.07 ,0.05 ,0.03}; bins =vector(Dstarbins ,Dstarbins +19); data =vector(Dstardata ,Dstardata +18); error=vector(Dstarerror,Dstarerror+18); _xeDstar = new_ptr(Histogram(bins,data,error)); // rho0 double rho0bins []={0.05 ,0.1 ,0.2 ,0.3 ,0.4 ,0.6 ,0.8 ,1.0}; double rho0data []={6.15 ,2.16 ,0.92 ,0.45 ,0.13 ,0.027,0.003}; double rho0error[]={0.72 ,0.23 ,0.10 ,0.05 ,0.02 ,0.005,0.002}; bins =vector(rho0bins ,rho0bins +8); data =vector(rho0data ,rho0data +7); error=vector(rho0error,rho0error+7); _xerho0 = new_ptr(Histogram(bins,data,error)); // pi0 double pi0binsA[]={0.007 ,0.009 ,0.011 ,0.013 ,0.016 , 0.020 ,0.025 ,0.030 ,0.035 ,0.040 , 0.050 ,0.060 ,0.070 ,0.085 ,0.100 , 0.125 ,0.150 ,0.200 ,0.300 ,0.400 ,0.500}; double pi0dataA[]={254. ,266. ,248. ,211. ,178. , 139. ,113. , 94.1 , 77.7 , 62.5 , 45.7 , 34.7 , 26.2 , 19.4 , 13.2 , 9.05 , 5.36 , 2.26 , 0.764 , 0.455}; double pi0statA[]={18. ,12. , 6. , 3. , 2. , 2. , 1. , 0.9 , 0.8 , 0.4 , 0.4 , 0.3 , 0.2 , 0.2 , 0.1 , 0.13 , 0.10 , 0.13 , 0.085 , 0.095}; double pi0systA[]={48 ,38 ,28 ,18 ,14 , 6 ,5 ,4.0 ,4.3 ,3.9 , 3.0 ,3.0 ,1.8 ,1.4 ,2.9 , 0.76 ,0.69 ,0.38 ,0.309,0.244}; double pi0errorA[20]; for(unsigned int ix=0;ix<20;++ix) pi0errorA[ix] = sqrt(sqr(pi0statA[ix])+sqr(pi0systA[ix])); bins =vector(pi0binsA,pi0binsA+21); data =vector(pi0dataA,pi0dataA+20); error=vector(pi0errorA,pi0errorA+20); _xepi0 = new_ptr(Histogram(bins,data,error)); double pi0binsB[]={0.69 ,0.92 ,1.20 ,1.61 ,1.90 , 2.08 ,2.30 ,2.47 ,2.66 ,2.81 , 3.00 ,3.22 ,3.36 ,3.51 ,3.70 , 3.92 ,4.15 ,4.37 ,4.55 ,4.77 ,5.06}; double pi0dataB[]={0.204 ,0.266 ,0.558 ,0.931 ,1.240 , 1.48 ,1.79 ,2.02 ,2.25 ,2.50 , 2.79 ,2.89 ,3.03 ,3.06 ,3.05 , 3.11 ,2.92 ,2.78 ,2.42 ,1.74}; double pi0statB[]={0.043 ,0.030 ,0.031 ,0.017 ,0.017 ,0.02 ,0.02 ,0.02 ,0.02 ,0.02 , 0.02 ,0.03 ,0.03 ,0.03 ,0.03 , 0.03 ,0.05 ,0.06 ,0.11 ,0.12}; double pi0systB[]={0.110 ,0.107 ,0.094 ,0.120 ,0.105 , 0.32 ,0.13 ,0.14 ,0.20 ,0.16 , 0.17 ,0.16 ,0.13 ,0.13 ,0.13 , 0.25 ,0.25 ,0.31 ,0.34 ,0.33}; double pi0errorB[20]; for(unsigned int ix=0;ix<20;++ix) pi0errorB[ix] = sqrt(sqr(pi0statB[ix])+sqr(pi0systB[ix])); bins =vector(pi0binsB,pi0binsB+21); data =vector(pi0dataB,pi0dataB+20); error=vector(pi0errorB,pi0errorB+20); _xipi0 = new_ptr(Histogram(bins,data,error)); // eta double etabinsA[]={0.025 ,0.035 ,0.050 ,0.075 ,0.100 , 0.125 ,0.150 ,0.200 ,0.300 ,0.400 ,0.500 ,0.600 ,0.800 ,1.000}; double etadataA[]={10.6 , 7.63 , 5.10 , 3.81 , 2.83 , 2.21 , 1.46 , 0.733 , 0.364 , 0.220 , 0.086 , 0.033 , 0.0013}; double etastatA[]={1.5 ,0.78 ,0.38 ,0.21 ,0.12 , 0.10 ,0.05 ,0.026 ,0.022 ,0.019 ,0.010 ,0.004 ,0.0004}; double etasystA[]={2.4 ,1.27 ,0.61 ,0.44 ,0.28 , 0.22 ,0.13 ,0.062 ,0.047 ,0.031 ,0.019 ,0.008 ,0.0011}; double etaerrorA[13]; for(unsigned int ix=0;ix<13;++ix) etaerrorA[ix] = sqrt(sqr(etastatA[ix])+sqr(etasystA[ix])); bins =vector(etabinsA,etabinsA+14); data =vector(etadataA,etadataA+13); error=vector(etaerrorA,etaerrorA+13); _xeeta = new_ptr(Histogram(bins,data,error)); double etabinsB[]={0.00 ,0.22 ,0.51 ,0.69 ,0.92 , 1.20 ,1.61 ,1.90 ,2.08 ,2.31 ,2.60 ,3.03 ,3.42 ,3.82}; double etadataB[]={0.0012 ,0.023 ,0.047 ,0.099 ,0.126 , 0.180 ,0.252 ,0.301 ,0.314 ,0.324 ,0.302 ,0.294 ,0.261}; double etastatB[]={0.0004 ,0.003 ,0.006 ,0.008 ,0.008 , 0.006 ,0.009 ,0.014 ,0.014 ,0.018 ,0.023 ,0.030 ,0.038}; double etasystB[]={0.0009 ,0.005 ,0.009 ,0.011 ,0.014 , 0.014 ,0.021 ,0.027 ,0.028 ,0.032 ,0.028 ,0.038 ,0.046}; double etaerrorB[13]; for(unsigned int ix=0;ix<13;++ix) etaerrorB[ix] = sqrt(sqr(etastatB[ix])+sqr(etasystB[ix])); bins =vector(etabinsB,etabinsB+14); data =vector(etadataB,etadataB+13); error=vector(etaerrorB,etaerrorB+13); _xieta = new_ptr(Histogram(bins,data,error)); // rho+ double rhopbinsA[]={0.016 ,0.025 ,0.035 ,0.050 ,0.075 , 0.100 ,0.125 ,0.150 ,0.200 ,0.300 ,0.400 ,0.600 ,0.800, 1.000}; double rhopdataA[]={17.3 ,32.3 ,21.3 ,16.7 , 9.89 , 7.11 , 5.90 , 3.60 , 2.02 , 1.03 , 0.430 , 0.075 , 0.013}; double rhopstatA[]={8.1 ,2.5 ,0.7 ,0.4 ,0.40 , 0.25 ,0.25 ,0.12 ,0.07 ,0.04 ,0.023 ,0.013 ,0.003}; double rhopsystA[]={12.2 ,9.7 ,4.5 ,1.8 ,1.46 ,1.04 ,0.78 ,0.48 ,0.21 ,0.27 ,0.081,0.032,0.009}; double rhoperrorA[13]; for(unsigned int ix=0;ix<13;++ix) rhoperrorA[ix] = sqrt(sqr(rhopstatA[ix])+sqr(rhopsystA[ix])); bins =vector(rhopbinsA,rhopbinsA+14); data =vector(rhopdataA,rhopdataA+13); error=vector(rhoperrorA,rhoperrorA+13); _xerhop = new_ptr(Histogram(bins,data,error)); double rhopbinsB[]={0.0 ,0.5 ,1.0 ,1.5 ,2.0 ,2.5 ,3.0 ,3.5 ,4.0 ,4.5 ,5.0}; double rhopdataB[]={0.034 ,0.217 ,0.419 ,0.603 ,0.805 ,0.868 ,0.692 ,0.500 ,0.419 ,0.171}; double rhopstatB[]={0.004 ,0.010 ,0.014 ,0.017 ,0.022 ,0.021 ,0.028 ,0.092 ,0.035 ,0.008}; double rhopsystB[]={0.019,0.055,0.073,0.078,0.104,0.126,0.165,0.138,0.111,0.081}; double rhoperrorB[10]; for(unsigned int ix=0;ix<10;++ix) rhoperrorB[ix] = sqrt(sqr(rhopstatB[ix])+sqr(rhopsystB[ix])); bins =vector(rhopbinsB,rhopbinsB+11); data =vector(rhopdataB,rhopdataB+10); error=vector(rhoperrorB,rhoperrorB+10); _xirhop = new_ptr(Histogram(bins,data,error)); // omega double omegabinsA[]={0.025 ,0.035 ,0.050 ,0.075 ,0.100 ,0.125 ,0.150 ,0.200 ,0.300 ,0.400 ,0.600}; double omegadataA[]={15.2 , 9.88 , 5.82 , 4.12 , 2.74 , 2.23 , 1.45 , 0.789 , 0.335 , 0.130}; double omegastatA[]={2.4 ,0.84 ,0.35 ,0.25 ,0.16 ,0.14 ,0.09 ,0.049 ,0.037 ,0.027}; double omegasystA[]={2.1 ,1.48 ,0.75 ,0.54 ,0.32 ,0.24 ,0.17 ,0.099,0.042,0.028}; double omegaerrorA[10]; for(unsigned int ix=0;ix<10;++ix) omegaerrorA[ix] = sqrt(sqr(omegastatA[ix])+sqr(omegasystA[ix])); bins =vector(omegabinsA,omegabinsA+11); data =vector(omegadataA,omegadataA+10); error=vector(omegaerrorA,omegaerrorA+10); _xeomega = new_ptr(Histogram(bins,data,error)); double omegabinsB[]={0.51 ,0.92 ,1.21 ,1.61 ,1.90 ,2.09 ,2.32 ,2.62 ,3.06 ,3.49 ,4.01}; double omegadataB[]={0.064 ,0.116 ,0.193 ,0.250 ,0.301 ,0.299 ,0.344 ,0.330 ,0.344 ,0.293}; double omegastatB[]={0.013 ,0.013 ,0.012 ,0.016 ,0.018 ,0.018 ,0.021 ,0.020 ,0.029 ,0.046}; double omegasystB[]={0.014,0.014,0.024,0.029,0.032,0.035,0.045,0.043,0.051,0.040}; double omegaerrorB[10]; for(unsigned int ix=0;ix<10;++ix) omegaerrorB[ix] = sqrt(sqr(omegastatB[ix])+sqr(omegasystB[ix])); bins =vector(omegabinsB,omegabinsB +11); data =vector(omegadataB,omegadataB +10); error=vector(omegaerrorB,omegaerrorB+10); _xiomega = new_ptr(Histogram(bins,data,error)); // eta' double etapbinsA[]={0.050 ,0.070 ,0.100 ,0.125 ,0.150 ,0.200 ,0.300 ,0.400 ,0.600 ,0.800}; double etapdataA[]={1.01 ,0.462 ,0.460 ,0.293 ,0.354 ,0.137 ,0.088 ,0.034 ,0.013}; double etapstatA[]={0.38 ,0.180 ,0.144 ,0.099 ,0.068 ,0.028 ,0.020 ,0.010 ,0.006}; double etapsystA[]={0.14 ,0.073,0.082,0.049,0.054,0.017,0.011,0.006,0.003}; double etaperrorA[9]; for(unsigned int ix=0;ix<9;++ix) etaperrorA[ix] = sqrt(sqr(etapstatA[ix])+sqr(etapsystA[ix])); bins =vector(etapbinsA,etapbinsA+10); data =vector(etapdataA,etapdataA+9); error=vector(etaperrorA,etaperrorA+9); _xeetap = new_ptr(Histogram(bins,data,error)); double etapbinsB[]={0.22 ,0.51 ,0.92 ,1.21 ,1.61 ,1.91 ,2.09 ,2.33 ,2.71 ,3.09}; double etapdataB[]={0.009 ,0.017 ,0.030 ,0.034 ,0.061 ,0.039 ,0.050 ,0.036 ,0.052}; double etapstatB[]={0.004 ,0.005 ,0.007 ,0.007 ,0.012 ,0.013 ,0.016 ,0.014 ,0.020}; double etapsystB[]={0.002,0.003,0.004,0.004,0.009,0.007,0.009,0.006,0.007}; double etaperrorB[9]; for(unsigned int ix=0;ix<9;++ix) etaperrorB[ix] = sqrt(sqr(etapstatB[ix])+sqr(etapsystB[ix])); bins =vector(etapbinsB,etapbinsB+10); data =vector(etapdataB,etapdataB+9); error=vector(etaperrorB,etaperrorB+9); _xietap = new_ptr(Histogram(bins,data,error)); // a_0+ double a0binsA[]={0.050 ,0.070 ,0.100 ,0.125 ,0.150 ,0.200 ,0.300 ,0.400 ,0.600 ,0.800 ,1.000}; double a0dataA[]={1.65 ,1.05 ,0.747 ,0.985 ,0.623 ,0.207 ,0.093 ,0.038 ,0.014 ,0.0040}; double a0statA[]={1.03 ,0.49 ,0.215 ,0.238 ,0.107 ,0.046 ,0.027 ,0.015 ,0.005 ,0.0018}; double a0systA[]={0.75 ,0.73 ,0.214 ,0.560 ,0.171 ,0.069 ,0.040 ,0.015 ,0.006 ,0.0024}; double a0errorA[10]; for(unsigned int ix=0;ix<10;++ix) a0errorA[ix] = sqrt(sqr(a0statA[ix])+sqr(a0systA[ix])); bins =vector(a0binsA,a0binsA+11); data =vector(a0dataA,a0dataA+10); error=vector(a0errorA,a0errorA+10); _xea_0p = new_ptr(Histogram(bins,data,error)); double a0binsB[]={0.00 ,0.50 ,1.00 ,1.50 ,2.00 ,2.50 ,3.00 ,3.50}; double a0dataB[]={0.0071 ,0.019 ,0.040 ,0.088 ,0.076 ,0.104 ,0.093}; double a0statB[]={0.0025 ,0.006 ,0.009 ,0.013 ,0.019 ,0.041 ,0.063}; double a0systB[]={0.0022,0.007 ,0.012 ,0.023 ,0.030 ,0.041 ,0.050}; double a0errorB[7]; for(unsigned int ix=0;ix<7;++ix) a0errorB[ix] = sqrt(sqr(a0statB[ix])+sqr(a0systB[ix])); bins =vector(a0binsB,a0binsB+8); data =vector(a0dataB,a0dataB+7); error=vector(a0errorB,a0errorB+7); _xia_0p = new_ptr(Histogram(bins,data,error)); // K_0 double K0bins []={0.0114 ,0.020 ,0.030 ,0.040 ,0.050 , 0.060 ,0.070 ,0.080 ,0.090 ,0.100 , 0.125 ,0.150 ,0.200 ,0.250 ,0.300 , 0.350 ,0.400 ,0.450 ,0.500 ,0.600 ,0.800}; double K0data []={25.731 ,24.617 ,19.349 ,15.500 ,13.170 , 11.144 , 9.360 , 8.470 , 7.010 , 5.734 , 4.488 , 3.100 , 1.945 , 1.266 , 0.860 , 0.579 , 0.394 , 0.253 , 0.163 , 0.051}; double K0stat []={0.232 ,0.120 ,0.116 ,0.061 ,0.072 , 0.073 ,0.066 ,0.061 ,0.059 ,0.029 , 0.028 ,0.019 ,0.015 ,0.010 ,0.010 , 0.009 ,0.008 ,0.005 ,0.003 ,0.001}; double K0syst []={1.430,1.300,1.040,0.767,0.690, 0.600,0.500,0.468,0.401,0.312, 0.247,0.169,0.104,0.071,0.050, 0.035,0.026,0.018,0.018,0.010}; double K0error[20]; for(unsigned int ix=0;ix<20;++ix) K0error[ix] = sqrt(sqr(K0stat[ix])+sqr(K0syst[ix])); bins =vector(K0bins ,K0bins +21); data =vector(K0data ,K0data +20); error=vector(K0error,K0error+20); _xpK0 = new_ptr(Histogram(bins,data,error)); } // // a_0+ // double a0binsA[]={}; // double a0dataA[]={}; // double a0statA[]={}; // double a0systA[]={}; // double a0errorA[7]; // for(unsigned int ix=0;ix<10;++ix) // a0errorA[ix] = sqrt(sqr(a0statA[ix])+sqr(a0systA[ix])); // bins =vector(a0binsA,a0binsA+11); // data =vector(a0dataA,a0dataA+10); // error=vector(a0errorA,a0errorA+10); // _xea_0p = new_ptr(Histogram(bins,data,error)); // double a0binsB[]={}; // double a0dataB[]={}; // double a0statB[]={}; // double a0systB[]={}; // double a0errorB[7]; // for(unsigned int ix=0;ix<7;++ix) // a0errorB[ix] = sqrt(sqr(a0statB[ix])+sqr(a0systB[ix])); // bins =vector(a0binsB,a0binsB+8); // data =vector(a0dataB,a0dataB+7); // error=vector(a0errorB,a0errorB+7); // _xia_0p = new_ptr(Histogram(bins,data,error)); herwig++-2.6.0.orig/Analysis/LEPEventShapes.cc0000644000175000017500000006706111754474773021670 0ustar sylvestresylvestre// -*- C++ -*- // // LEPEventShapes.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the LEPEventShapes class. // #include "LEPEventShapes.h" #include "EventShapes.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; void LEPEventShapes::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); if ( loop > 0 || state != 0 || !event ) return; // get the final-state particles tPVector hadrons=event->getFinalState(); // event shapes } LorentzRotation LEPEventShapes::transform(tEventPtr) const { return LorentzRotation(); // Return the Rotation to the frame in which you want to perform the analysis. } void LEPEventShapes::analyze(const tPVector & ) { double eventweight = generator()->currentEvent()->weight(); _omthr ->addWeighted( 1.-_shapes->thrust() ,eventweight); _maj ->addWeighted( _shapes->thrustMajor() ,eventweight); _min ->addWeighted( _shapes->thrustMinor() ,eventweight); _obl ->addWeighted( _shapes->oblateness() ,eventweight); _c ->addWeighted( _shapes->CParameter() ,eventweight); _d ->addWeighted( _shapes->DParameter() ,eventweight); _sph ->addWeighted( _shapes->sphericity() ,eventweight); _apl ->addWeighted( _shapes->aplanarity() ,eventweight); _pla ->addWeighted( _shapes->planarity() ,eventweight); _mhi ->addWeighted( _shapes->Mhigh2() ,eventweight); _mlo ->addWeighted( _shapes->Mlow2() ,eventweight); _mdiff ->addWeighted( _shapes->Mdiff2() ,eventweight); _bmax ->addWeighted( _shapes->Bmax() ,eventweight); _bmin ->addWeighted( _shapes->Bmin() ,eventweight); _bsum ->addWeighted( _shapes->Bsum() ,eventweight); _bdiff ->addWeighted( _shapes->Bdiff() ,eventweight); } void LEPEventShapes::persistentOutput(PersistentOStream & os) const { os << _shapes; } void LEPEventShapes::persistentInput(PersistentIStream & is, int) { is >> _shapes; } ClassDescription LEPEventShapes::initLEPEventShapes; // Definition of the static class description member. void LEPEventShapes::Init() { static ClassDocumentation documentation ("The LEPEventShapes class compares event shapes at the Z mass" "with experimental results", "The LEP EventShapes analysis uses data from \\cite{Pfeifenschneider:1999rz,Abreu:1996na}.", "%\\cite{Pfeifenschneider:1999rz}\n" "\\bibitem{Pfeifenschneider:1999rz}\n" " P.~Pfeifenschneider {\\it et al.} [JADE collaboration and OPAL\n" " Collaboration],\n" " ``QCD analyses and determinations of alpha(s) in e+ e- annihilation at\n" " %energies between 35-GeV and 189-GeV,''\n" " Eur.\\ Phys.\\ J.\\ C {\\bf 17}, 19 (2000)\n" " [arXiv:hep-ex/0001055].\n" " %%CITATION = EPHJA,C17,19;%%\n" "%\\cite{Abreu:1996na}\n" "\\bibitem{Abreu:1996na}\n" " P.~Abreu {\\it et al.} [DELPHI Collaboration],\n" " ``Tuning and test of fragmentation models based on identified particles and\n" " %precision event shape data,''\n" " Z.\\ Phys.\\ C {\\bf 73}, 11 (1996).\n" " %%CITATION = ZEPYA,C73,11;%%\n" ); static Reference interfaceEventShapes ("EventShapes", "Pointer to the object which calculates the event shapes", &LEPEventShapes::_shapes, false, false, true, false, false); } void LEPEventShapes::dofinish() { useMe(); AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; _omthr->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "1-T compared to DELPHI data", " ", "1/SdS/d(1-T)", " G G ", "1-T", " "); _maj->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Thrust Major compared to DELPHI data", " ", "1/SdS/dMajor", " G G ", "Major", " "); _min->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Thrust Minor compared to DELPHI data", " ", "1/SdS/dMinor", " G G ", "Minor", " "); _obl->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Oblateness compared to DELPHI data", " ", "1/SdS/dO", " G G ", "O", " "); _sph->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Sphericity compared to DELPHI data", " ", "1/SdS/dS", " G G ", "S", " "); _apl->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Aplanarity compared to DELPHI data", " ", "1/SdS/dA", " G G ", "A", " "); _pla->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Planarity compared to DELPHI data", " ", "1/SdS/dP", " G G ", "P", " "); _c->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "C parameter compared to DELPHI data", " ", "1/SdS/dC", " G G ", "C", " "); _d->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "D parameter compared to DELPHI data", " ", "1/SdS/dD", " G G ", "D", " "); _mhi->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "High hemisphere mass compared to DELPHI data", " ", "1/SdS/dM0high1", " G G X X", "M0high1", " X X"); _mlo->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Low hemisphere mass compared to DELPHI data", " ", "1/SdS/dM0low1", " G G X X", "M0low1", " X X"); _mdiff->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Difference in hemisphere masses compared to DELPHI data", " ", "1/SdS/dM0diff1", " G G X X", "M0diff1", " X X"); _bmax->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Wide jet broadening measure compared to DELPHI data", " ", "1/SdS/dB0max1", " G G X X", "B0max1", " X X"); _bmin->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Narrow jet broadening measure compared to DELPHI data", " ", "1/SdS/dB0min1", " G G X X", "B0min1", " X X"); _bsum->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Sum of jet broadening measures compared to DELPHI data", " ", "1/SdS/dB0sum1", " G G X X", "B0sum1", " X X"); _bdiff->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Difference of jet broadenings measure compared to DELPHI data", " ", "1/SdS/dB0diff1", " G G X X", "B0diff1", " X X"); // chi squareds double chisq=0.,minfrac=0.05; unsigned int ndegrees; _omthr->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI thrust distribution\n"; _maj->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI major distribution\n"; _min->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI minor distribution\n"; _obl->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI oblateness distribution\n"; _sph->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI sphericity distribution\n"; _apl->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI aplanarity distribution\n"; _pla->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI planarity distribution\n"; _c->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI C distribution\n"; _d->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI D distribution\n"; _mhi->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI m_high distribution\n"; _mlo->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI m_low distribution\n"; _mdiff->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI m_diff distribution\n"; _bmax->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI B_max distribution\n"; _bmin->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI B_min distribution\n"; _bsum->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI B_sum distribution\n"; _bdiff->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for DELPHI B_diff distribution\n"; } void LEPEventShapes::doinitrun() { AnalysisHandler::doinitrun(); vector bins,data,error; // 1-T double vals1[] = {0.000, 0.010, 0.020, 0.030, 0.040, 0.050, 0.060, 0.070, 0.080, 0.090, 0.100, 0.120, 0.140, 0.160, 0.180, 0.200, 0.250, 0.300, 0.350, 0.400, 0.500}; double data1[]= { 1.030,10.951,17.645,14.192,10.009, 7.572, 5.760, 4.619, 3.792, 3.176, 2.456, 1.825, 1.401, 1.074, 0.8262, 0.5525,0.3030,0.1312,0.0238,0.0007}; double error1stat[]={0.019 ,0.051 ,0.066 ,0.061 ,0.050 , 0.044 ,0.038 ,0.034 ,0.031 ,0.028 , 0.018 ,0.015 ,0.013 ,0.011 ,0.0100 , 0.0051 ,0.0038 ,0.0025 ,0.0012 ,0.0002 }; double error1syst[]={0.076 , 0.527 , 0.547 , 0.292 , 0.152 , 0.101 , 0.076 , 0.062 , 0.051 , 0.042 , 0.032 , 0.022 , 0.016 , 0.011 , 0.0083, 0.0065 , 0.0058, 0.0044, 0.0014, 0.0001}; double error1[20]; for(unsigned int ix=0;ix<20;++ix){error1[ix]=sqrt(sqr(error1stat[ix])+ sqr(error1syst[ix]));} bins = vector(vals1 ,vals1 +21); data = vector(data1 ,data1 +20); error = vector(error1,error1+20); _omthr= new_ptr(Histogram(bins,data,error)); // major double vals2[] = {0.000, 0.020, 0.040, 0.050, 0.060, 0.070, 0.080, 0.100, 0.120, 0.140, 0.160, 0.200, 0.240, 0.280, 0.320, 0.360, 0.400, 0.440, 0.480, 0.520, 0.560, 0.600, 0.640}; double data2[]={0.00040 ,0.0590 ,0.642 ,2.178 ,4.303 , 5.849 ,6.889 ,6.342 ,4.890 ,3.900 , 2.960 ,2.124 ,1.5562 ,1.1807 ,0.8693, 0.6493 ,0.4820 ,0.3493 ,0.2497 ,0.1489, 0.0714 ,0.0203}; double error2stat[]={0.00090 ,0.0030 ,0.013 ,0.024 ,0.034 , 0.039 ,0.030 ,0.028 ,0.024 ,0.021 , 0.013 ,0.011 ,0.0095 ,0.0083 ,0.0071 , 0.0061 ,0.0052 ,0.0044 ,0.0037 ,0.0028 , 0.0019 ,0.0010}; double error2syst[]={0.00005 ,0.0058 ,0.028 ,0.086 ,0.155 , 0.192 ,0.194 ,0.143 ,0.085 ,0.050 , 0.030 ,0.021 ,0.0156 ,0.0118 ,0.0087 , 0.0065 ,0.0048 ,0.0055 ,0.0065 ,0.0058 , 0.0038 ,0.0014}; double error2[22]; for(unsigned int ix=0;ix<22;++ix){error2[ix]=sqrt(sqr(error2stat[ix])+ sqr(error2syst[ix]));} bins = vector(vals2 ,vals2 +23); data = vector(data2 ,data2 +22); error = vector(error2,error2+22); _maj= new_ptr(Histogram(bins,data,error)); // minor double vals3[] = {0.000, 0.020, 0.040, 0.050, 0.060, 0.070, 0.080, 0.100, 0.120, 0.140, 0.160, 0.200, 0.240, 0.280, 0.320, 0.400}; double data3[]={ 0.0156 , 1.236 , 5.706 , 9.714 ,12.015 , 12.437 ,10.404 , 6.918 , 4.250 , 2.517 , 1.2561 , 0.4895 , 0.2112 , 0.0879 , 0.0250 }; double error3stat[]={0.0017 ,0.013 ,0.037 ,0.048 ,0.054 , 0.055 ,0.036 ,0.029 ,0.023 ,0.017 , 0.0086 ,0.0054 ,0.0036 ,0.0023 ,0.0009}; double error3syst[]={0.0036,0.066 ,0.073 ,0.125 ,0.155 , 0.161 ,0.136 ,0.092 ,0.058 ,0.035 , 0.0187,0.0080,0.0039,0.0018,0.0006}; double error3[15]; for(unsigned int ix=0;ix<15;++ix){error3[ix]=sqrt(sqr(error3stat[ix])+ sqr(error3syst[ix]));} bins = vector(vals3 ,vals3 +16); data = vector(data3 ,data3 +15); error = vector(error3,error3+15); _min= new_ptr(Histogram(bins,data,error)); // oblateness double vals4[] = {0.000, 0.020, 0.040, 0.060, 0.080, 0.100, 0.120, 0.140, 0.160, 0.200, 0.240, 0.280, 0.320, 0.360, 0.400, 0.440, 0.520}; double data4[]={ 9.357 ,11.508 , 7.215 , 4.736 , 3.477 , 2.696 , 2.106 , 1.690 , 1.2648 , 0.8403 , 0.5674 , 0.3842 , 0.2573 , 0.1594 , 0.0836 , 0.0221 }; double error4stat[]={0.036 ,0.038 ,0.029 ,0.023 ,0.020 , 0.018 ,0.016 ,0.014 ,0.0085 ,0.0069 , 0.0056 ,0.0046 ,0.0037 ,0.0029 ,0.0020 , 0.0007}; double error4syst[]={0.178 ,0.140 ,0.072 ,0.047 ,0.035 , 0.027 ,0.021 ,0.017 ,0.0126,0.0087, 0.0065,0.0050,0.0043,0.0037,0.0030, 0.0015}; double error4[16]; for(unsigned int ix=0;ix<16;++ix){error4[ix]=sqrt(sqr(error4stat[ix])+ sqr(error4syst[ix]));} bins = vector(vals4 ,vals4 +17); data = vector(data4 ,data4 +16); error = vector(error4,error4+16); _obl= new_ptr(Histogram(bins,data,error)); // sphericity double vals5[] = {0.000, 0.010, 0.020, 0.030, 0.040, 0.050, 0.060, 0.080, 0.100, 0.120, 0.160, 0.200, 0.250, 0.300, 0.350, 0.400, 0.500, 0.600, 0.700, 0.850}; double data5[]={16.198 ,20.008 ,12.896 , 8.237 , 5.885 , 4.458 , 3.272 , 2.290 , 1.699 , 1.2018 , 0.7988 , 0.5610 , 0.3926 , 0.2810 , 0.2099 , 0.1441 , 0.0842 , 0.04160 , 0.00758 }; double error5stat[]={0.067 ,0.072 ,0.056 ,0.043 ,0.037 , 0.032 ,0.019 ,0.016 ,0.014 ,0.0082 , 0.0067 ,0.0050 ,0.0042 ,0.0035 ,0.0030 , 0.0018 ,0.0013 ,0.00092 ,0.00032}; double error5syst[]={0.208 ,0.246 ,0.153 ,0.094 ,0.065 , 0.048 ,0.034 ,0.023 ,0.017 ,0.0120 , 0.0080 ,0.0063 ,0.0051 ,0.0043 ,0.0037 , 0.0032 ,0.0023 ,0.00129,0.00024}; double error5[19]; for(unsigned int ix=0;ix<19;++ix){error5[ix]=sqrt(sqr(error5stat[ix])+ sqr(error5syst[ix]));} bins = vector(vals5 ,vals5 +20); data = vector(data5 ,data5 +19); error = vector(error5,error5+19); _sph=new_ptr(Histogram(bins,data,error)); // aplanarity double vals6[] = {0.000, 0.005, 0.010, 0.015, 0.020, 0.030, 0.040, 0.060, 0.080, 0.100, 0.120, 0.140, 0.160, 0.200, 0.250, 0.300}; double data6[]={75.10 ,55.31 ,26.03 ,13.927 , 6.768 , 3.014 , 1.281 , 0.5181 , 0.2619 , 0.1461 , 0.0758 , 0.0467 , 0.0234 , 0.00884 , 0.00310 }; double error6stat[]={0.19 ,0.17 ,0.11 ,0.079 ,0.038 , 0.025 ,0.012 ,0.0075 ,0.0054 ,0.0041 , 0.0029 ,0.0023 ,0.0011 ,0.00061 ,0.00040 }; double error6syst[]={0.75 ,0.55 ,0.28 ,0.176 ,0.098 , 0.056 ,0.035 ,0.0188 ,0.0118 ,0.0079 , 0.0043 ,0.0027 ,0.0014 ,0.00052,0.00018}; double error6[15]; for(unsigned int ix=0;ix<15;++ix){error6[ix]=sqrt(sqr(error6stat[ix])+ sqr(error6syst[ix]));} bins = vector(vals6 ,vals6 +16); data = vector(data6 ,data6 +15); error = vector(error6,error6+15); _apl= new_ptr(Histogram(bins,data,error)); // planarity double vals7[] = {0.000, 0.005, 0.010, 0.015, 0.020, 0.025, 0.030, 0.035, 0.040, 0.050, 0.060, 0.080, 0.100, 0.120, 0.160, 0.200, 0.250, 0.300, 0.350, 0.400, 0.500}; double data7[]={68.69 ,31.66 ,17.091 ,11.370 , 8.417 , 6.578 , 5.479 , 4.493 , 3.610 , 2.749 , 1.987 , 1.362 , 1.008 , 0.6676 , 0.4248 , 0.2692 , 0.1742 , 0.1042 , 0.0566 , 0.0145 }; double error7stat[]={0.19 ,0.12 ,0.088 ,0.072 ,0.062 , 0.055 ,0.050 ,0.045 ,0.029 ,0.025 , 0.015 ,0.012 ,0.011 ,0.0061 ,0.0048 , 0.0034 ,0.0028 ,0.0021 ,0.0015 ,0.0006}; double error7syst[]={0.74 ,0.35 ,0.188 ,0.127 ,0.095 , 0.075 ,0.063 ,0.052 ,0.042 ,0.033 , 0.024 ,0.017 ,0.013 ,0.0093,0.0063, 0.0042 ,0.0029,0.0019,0.0011,0.0003}; double error7[20]; for(unsigned int ix=0;ix<20;++ix){error7[ix]=sqrt(sqr(error7stat[ix])+ sqr(error7syst[ix]));} bins = vector(vals7 ,vals7 +21); data = vector(data7 ,data7 +20); error = vector(error7,error7+20); _pla= new_ptr(Histogram(bins,data,error)); // C double vals8[] = {0.000, 0.040, 0.080, 0.120, 0.160, 0.200, 0.240, 0.280, 0.320, 0.360, 0.400, 0.440, 0.480, 0.520, 0.560, 0.600, 0.640, 0.680, 0.720, 0.760, 0.800, 0.840, 0.880, 0.920}; double data8[]={0.0881 ,1.5383 ,3.909 ,3.833 ,2.835 , 2.164 ,1.716 ,1.3860 ,1.1623 ,0.9720 , 0.8349 ,0.7161 ,0.6205 ,0.5441 ,0.4844 , 0.4209 ,0.3699 ,0.3286 ,0.2813 ,0.2178 , 0.1287 ,0.0542 ,0.0212 }; double error8stat[]={0.0030 ,0.0100 ,0.016 ,0.016 ,0.013 , 0.012 ,0.010 ,0.0092 ,0.0084 ,0.0077 , 0.0072 ,0.0066 ,0.0061 ,0.0057 ,0.0054 , 0.0050 ,0.0046 ,0.0044 ,0.0040 ,0.0033 , 0.0026 ,0.0016 ,0.0009}; double error8syst[]={0.0067,0.0831,0.142 ,0.088 ,0.040 , 0.022 ,0.017 ,0.0139,0.0116,0.0097, 0.0083,0.0072,0.0062,0.0054,0.0050, 0.0063,0.0079,0.0099,0.0129,0.0151, 0.0130,0.0076,0.0040}; double error8[23]; for(unsigned int ix=0;ix<23;++ix){error8[ix]=sqrt(sqr(error8stat[ix])+ sqr(error8syst[ix]));} bins = vector(vals8 ,vals8 +24); data = vector(data8 ,data8 +23); error = vector(error8,error8+23); _c= new_ptr(Histogram(bins,data,error)); // D double vals9[] = {0.000, 0.008, 0.016, 0.030, 0.044, 0.066, 0.088, 0.112, 0.136, 0.162, 0.188, 0.218, 0.248, 0.284, 0.320, 0.360, 0.400, 0.450, 0.500, 0.560, 0.620, 0.710, 0.800}; double data9[]={22.228 ,22.766 ,12.107 , 6.879 , 4.284 , 2.727 , 1.909 , 1.415 , 1.051 , 0.7977 , 0.6155 , 0.4566 , 0.3341 , 0.2452 , 0.1774 , 0.1234 , 0.0902 , 0.0603 , 0.0368 , 0.0222 , 0.0128 , 0.0052 }; double error9stat[]={0.082 ,0.085 ,0.047 ,0.035 ,0.022 , 0.018 ,0.014 ,0.012 ,0.010 ,0.0089 , 0.0073 ,0.0063 ,0.0049 ,0.0042 ,0.0033 , 0.0028 ,0.0021 ,0.0017 ,0.0012 ,0.0009 , 0.0006 ,0.0004}; double error9syst[]={0.868 ,0.440 ,0.150 ,0.079 ,0.053 , 0.036 ,0.028 ,0.022 ,0.018 ,0.0145, 0.0117 ,0.0089,0.0065,0.0049,0.0037 , 0.0028,0.0023 ,0.0018,0.0013,0.0009, 0.0006,0.0003}; double error9[22]; for(unsigned int ix=0;ix<22;++ix){error9[ix]=sqrt(sqr(error9stat[ix])+ sqr(error9syst[ix]));} bins = vector(vals9 ,vals9 +23); data = vector(data9 ,data9 +22); error = vector(error9,error9+22); _d= new_ptr(Histogram(bins,data,error)); // M high double vals10[] = {0.000, 0.010, 0.020, 0.030, 0.040, 0.050, 0.060, 0.080, 0.100, 0.120, 0.140, 0.160, 0.200, 0.250, 0.300, 0.350, 0.400}; double data10[]={ 1.994 ,18.580 ,20.678 ,13.377 , 8.965 , 6.558 , 4.515 , 2.914 , 1.991 , 1.406 , 1.010 , 0.6319 , 0.3085 , 0.1115 , 0.0184 , 0.0008 }; double error10stat[]={0.027 ,0.065 ,0.076 ,0.060 ,0.049 , 0.041 ,0.024 ,0.019 ,0.016 ,0.013 , 0.011 ,0.0063 ,0.0039 ,0.0022 ,0.0008 , 0.0002 }; double error10syst[]={0.166 ,0.709 ,0.729 ,0.412 ,0.239 , 0.151 ,0.082 ,0.037 ,0.020 ,0.014 , 0.010 ,0.0063,0.0051,0.0039,0.0012, 0.0001}; double error10[16]; for(unsigned int ix=0;ix<16;++ix){error10[ix]=sqrt(sqr(error10stat[ix])+ sqr(error10syst[ix]));} bins = vector(vals10 ,vals10 +17); data = vector(data10 ,data10 +16); error = vector(error10,error10+16); _mhi= new_ptr(Histogram(bins,data,error)); // M low double vals11[] = {0.000, 0.010, 0.020, 0.030, 0.040, 0.050, 0.060, 0.080, 0.100, 0.120}; double data11[]={23.414 ,39.12 ,18.080 , 7.704 , 3.922 , 2.128 , 1.013 , 0.3748 , 0.1412 }; double error11stat[]={0.074 ,0.11 ,0.081 ,0.052 ,0.036 , 0.026 ,0.013 ,0.0079 ,0.0050}; double error11syst[]={1.595 ,2.65 ,1.215 ,0.514 ,0.260 , 0.140 ,0.066 ,0.0241,0.0089}; double error11[9]; for(unsigned int ix=0;ix<9;++ix){error11[ix]=sqrt(sqr(error11stat[ix])+ sqr(error11syst[ix]));} bins = vector(vals11 ,vals11 +10); data = vector(data11 ,data11 + 9); error = vector(error11,error11+ 9); _mlo= new_ptr(Histogram(bins,data,error)); // M diff double vals12[] = {0.000, 0.010, 0.020, 0.030, 0.040, 0.060, 0.080, 0.120, 0.160, 0.200, 0.250, 0.300, 0.350, 0.400}; double data12[]={35.393 ,20.745 ,11.426 , 7.170 , 4.344 , 2.605 , 1.4238 , 0.7061 , 0.3831 , 0.1836 , 0.0579 , 0.0075 , 0.0003}; double error12stat[]={0.092 ,0.071 ,0.052 ,0.041 ,0.023 , 0.017 ,0.0092 ,0.0064 ,0.0046 ,0.0028 , 0.0015 ,0.0006 ,0.0002}; double error12syst[]={0.354 ,0.207 ,0.114 ,0.072 ,0.043 , 0.026 ,0.0142,0.0071,0.0044,0.0032, 0.0018,0.0006,0.0001}; double error12[13]; for(unsigned int ix=0;ix<13;++ix){error12[ix]=sqrt(sqr(error12stat[ix])+ sqr(error12syst[ix]));} bins = vector(vals12 ,vals12 +14); data = vector(data12 ,data12 +13); error = vector(error12,error12+13); _mdiff= new_ptr(Histogram(bins,data,error)); // Bmax double vals13[] = {0.010, 0.020, 0.030, 0.040, 0.050, 0.060, 0.070, 0.080, 0.100, 0.120, 0.140, 0.170, 0.200, 0.240, 0.280, 0.320}; double data13[]={0.6707 , 7.538 ,14.690 ,13.942 ,11.298 , 9.065 , 7.387 , 5.445 , 3.796 , 2.670 , 1.756 , 1.0580 , 0.5288 , 0.1460 , 0.0029 }; double error13stat[]={0.0096 ,0.038 ,0.058 ,0.057 ,0.053 , 0.048 ,0.043 ,0.026 ,0.022 ,0.018 , 0.012 ,0.0092 ,0.0056 ,0.0028 ,0.0004}; double error13syst[]={0.1077,0.809 ,0.745 ,0.592 ,0.379 , 0.266 ,0.222 ,0.176 ,0.127 ,0.087 , 0.051 ,0.0218,0.0053,0.0071,0.0003}; double error13[15]; for(unsigned int ix=0;ix<15;++ix){error13[ix]=sqrt(sqr(error13stat[ix])+ sqr(error13syst[ix]));} bins = vector(vals13 ,vals13 +16); data = vector(data13 ,data13 +15); error = vector(error13,error13+15); _bmax= new_ptr(Histogram(bins,data,error)); // Bmin double vals14[] = {0.000, 0.010, 0.020, 0.030, 0.040, 0.050, 0.060, 0.080, 0.100, 0.120, 0.150, 0.180}; double data14[]={0.645 ,11.169 ,28.908 ,25.972 ,14.119 , 7.500 , 3.405 , 1.320 , 0.5448 , 0.1916 , 0.0366}; double error14stat[]={0.010 ,0.045 ,0.082 ,0.083 ,0.061 , 0.044 ,0.021 ,0.013 ,0.0082 ,0.0040 , 0.0017}; double error14syst[]={0.096 ,1.006 ,1.823 ,1.478 ,0.860 , 0.494 ,0.233 ,0.089 ,0.0328,0.0104, 0.0034}; double error14[11]; for(unsigned int ix=0;ix<11;++ix){error14[ix]=sqrt(sqr(error14stat[ix])+ sqr(error14syst[ix]));} bins = vector(vals14 ,vals14 +12); data = vector(data14 ,data14 +11); error = vector(error14,error14+11); _bmin= new_ptr(Histogram(bins,data,error)); // Bsum double vals15[] = {0.020, 0.030, 0.040, 0.050, 0.060, 0.070, 0.080, 0.090, 0.100, 0.110, 0.130, 0.150, 0.170, 0.190, 0.210, 0.240, 0.270, 0.300, 0.330, 0.360}; double data15[]={0.2030 ,1.628 ,4.999 ,8.190 ,9.887 , 9.883 ,9.007 ,7.746 ,6.714 ,5.393 , 3.998 ,2.980 ,2.294 ,1.747 ,1.242 , 0.8125 ,0.4974 ,0.2285 ,0.0732 }; double error15stat[]={0.0055 ,0.015 ,0.031 ,0.041 ,0.047 , 0.049 ,0.047 ,0.044 ,0.041 ,0.026 , 0.023 ,0.019 ,0.017 ,0.015 ,0.010 , 0.0080 ,0.0062 ,0.0041 ,0.0024}; double error15syst[]={0.0383,0.183 ,0.463 ,0.644 ,0.661 , 0.564 ,0.443 ,0.332 ,0.255 ,0.180 , 0.125 ,0.098 ,0.085 ,0.075 ,0.063 , 0.0469,0.0296,0.0119,0.0007}; double error15[19]; for(unsigned int ix=0;ix<19;++ix){error15[ix]=sqrt(sqr(error15stat[ix])+ sqr(error15syst[ix]));} bins = vector(vals15 ,vals15 +20); data = vector(data15 ,data15 +19); error = vector(error15,error15+19); _bsum= new_ptr(Histogram(bins,data,error)); // Bdiff double vals16[] = {0.000, 0.010, 0.020, 0.030, 0.040, 0.050, 0.060, 0.070, 0.080, 0.090, 0.100, 0.120, 0.140, 0.160, 0.180, 0.200, 0.240, 0.280}; double data16[]={26.630 ,18.684 ,12.343 , 8.819 , 6.688 , 5.111 , 4.071 , 3.271 , 2.681 , 2.233 , 1.647 , 1.111 , 0.7618 , 0.5138 , 0.3167 , 0.1265 , 0.0117}; double error16stat[]={0.081 ,0.066 ,0.054 ,0.046 ,0.040 , 0.035 ,0.031 ,0.028 ,0.025 ,0.023 , 0.014 ,0.011 ,0.0095 ,0.0078 ,0.0062 , 0.0026 ,0.0008}; double error16syst[]={0.459 ,0.292 ,0.186 ,0.134 ,0.106 , 0.084 ,0.068 ,0.054 ,0.043 ,0.035 , 0.026 ,0.019 ,0.0144,0.0119,0.0098, 0.0056,0.0008}; double error16[17]; for(unsigned int ix=0;ix<17;++ix){error16[ix]=sqrt(sqr(error16stat[ix])+ sqr(error16syst[ix]));} bins = vector(vals16 ,vals16 +18); data = vector(data16 ,data16 +17); error = vector(error16,error16+17); _bdiff= new_ptr(Histogram(bins,data,error)); } herwig++-2.6.0.orig/Analysis/GammaJetAnalysis.h0000644000175000017500000001127411754474773022130 0ustar sylvestresylvestre// -*- C++ -*- // // GammaJetAnalysis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_GammaJetAnalysis_H #define HERWIG_GammaJetAnalysis_H // // This is the declaration of the GammaJetAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * GammaJetAnalysis selects the photon with the hightest pt in the final * state and books a number of histograms from its four momentum. The * results are witten in topdrawer format to the working directory. * * @see \ref GammaJetAnalysisInterfaces "The interfaces" * defined for GammaJetAnalysis. */ class GammaJetAnalysis: public AnalysisHandler { public: /** * The default constructor. */ GammaJetAnalysis(); /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initGammaJetAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GammaJetAnalysis & operator=(const GammaJetAnalysis &); private: /** * \f$p_T\f$ of the photon */ Histogram _ptg; Histogram _ptgZoom; /** * Energy of the photon */ Histogram _Eg; /** * Rapidity of the photon */ Histogram _rapg; /** * Azimuth of the photon */ Histogram _phig; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of GammaJetAnalysis. */ template <> struct BaseClassTrait { /** Typedef of the first base class of GammaJetAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the GammaJetAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::GammaJetAnalysis"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the GammaJetAnalysis class and any other class on which it depends * (except the base class). */ static string library() { return "HwAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_GammaJetAnalysis_H */ herwig++-2.6.0.orig/Analysis/BELLECharmAnalysis.cc0000644000175000017500000011413311754474773022375 0ustar sylvestresylvestre// -*- C++ -*- // // BELLECharmAnalysis.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the BELLECharmAnalysis class. // #include "BELLECharmAnalysis.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; void BELLECharmAnalysis::analyze(tEventPtr event, long, int, int) { _weight = event->weight(); _s = (event->incoming().first ->momentum()+ event->incoming().second->momentum()).m2(); set particles; StepVector steps = event->primaryCollision()->steps(); for ( StepVector::const_iterator it = steps.begin()+2; it != steps.end(); ++it ) { (**it).select(inserter(particles), ThePEG::AllSelector()); } tPVector output; for(set::const_iterator it = particles.begin(); it != particles.end(); ++it) { long id = abs((*it)->id()); if(id==ParticleID::Dplus || id==ParticleID::Dstarplus || id==ParticleID::D0 || id==ParticleID::Dstar0 || id==ParticleID::D_splus || id==ParticleID::Lambda_cplus ) output.push_back(*it); } analyze(output); } void BELLECharmAnalysis::analyze(const tPVector & particles) { for(unsigned int ix=0;ixmomentum().vect().mag()/ sqrt(0.25*_s-sqr(particle->mass())); int id = abs(particle->id()); if(id==ParticleID::Dstarplus) { _histDstarplus ->addWeighted( xp,_weight); _statDstar += _weight; } else if(id==ParticleID::Dstar0) { _histDstar0 ->addWeighted( xp,_weight); _statDstar += _weight; } else if(id==ParticleID::D0) { _histD0 ->addWeighted( xp,_weight); _statD += _weight; } else if(id==ParticleID::Dplus) { _histDplus ->addWeighted( xp,_weight); _statD += _weight; } else if(id==ParticleID::D_splus) { _histDs ->addWeighted( xp,_weight); _statDs += _weight; } else if(id==ParticleID::Lambda_cplus) { _histLambda ->addWeighted( xp,_weight); _statLambda += _weight; } } void BELLECharmAnalysis::persistentOutput(PersistentOStream & os) const { os << _onshell; } void BELLECharmAnalysis::persistentInput(PersistentIStream & is, int) { is >> _onshell; } ClassDescription BELLECharmAnalysis::initBELLECharmAnalysis; // Definition of the static class description member. void BELLECharmAnalysis::Init() { static ClassDocumentation documentation ("The BELLECharmAnalysis class implements the analysis of hep-ex/0506068", "The results of Herwig++ were compared with the data of the Belle collaboration" "\\cite{Seuster:2005tr} on charm fragmentation functions.", "\\bibitem{Seuster:2005tr} R.~Seuster {\\it et al.} [Belle Collaboration]," "Phys.\\ Rev.\\ D {\\bf 73} (2006) 032002 [arXiv:hep-ex/0506068].\n" "%%CITATION = PHRVA,D73,032002;%%\n"); static Switch interfaceResonance ("Resonance", "Whether we are doing Upsilon(4S)->B,B or continuum production", &BELLECharmAnalysis::_onshell, false, false, false); static SwitchOption interfaceResonanceContinuum (interfaceResonance, "Continuum", "Continuum production", false); static SwitchOption interfaceResonanceUpsilon4S (interfaceResonance, "Upsilon4S", "At Upsilon(4S) resonance", true); } void BELLECharmAnalysis::dofinish() { useMe(); AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; double chisq=0.,minfrac=0.05; unsigned int ndegrees; _histDstarplus->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for BELLE D*+ distribution\n"; _histDstar0 ->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for BELLE D*0 distribution\n"; _histD0 ->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for BELLE D0 distribution\n"; _histDplus ->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for BELLE D+ distribution\n"; _histDs ->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for BELLE D_s+ distribution\n"; _histLambda ->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for BELLE Lambda_c+ distribution\n"; _histDstarplus->topdrawOutput(output,Frame|Errorbars, "RED", "D2*+3", " X X", "1/SdS/dx0p1", " G G X X", "x0p1", " X X"); _histDstar0->topdrawOutput(output,Frame|Errorbars, "RED", "D2*03", " X X", "1/SdS/dx0p1", " G G X X", "x0p1", " X X"); _histD0->topdrawOutput(output,Frame|Errorbars, "RED", "D203", " X X", "1/SdS/dx0p1", " G G X X", "x0p1", " X X"); _histDplus->topdrawOutput(output,Frame|Errorbars, "RED", "D2+3", " X X", "1/SdS/dx0p1", " G G X X", "x0p1", " X X"); _histDs->topdrawOutput(output,Frame|Errorbars, "RED", "D0s12+3", " X XX X", "1/SdS/dx0p1", " G G X X", "x0p1", " X X"); _histLambda->topdrawOutput(output,Frame|Errorbars, "RED", "L0c12+3", "FX XX X", "1/SdS/dx0p1", " G G X X", "x0p1", " X X"); // and the ratios double denom1 = _statD.total(); double denom2 = denom1+_statDs.total(); double data[3] ={_statDstar .total()/denom1, _statDs .total()/denom2, _statLambda.total()/denom2}; double derror[3] = {data[0]*sqrt(1./denom1+1./_statDstar .total()), data[1]*sqrt(1./denom2+1./_statDs .total()), data[2]*sqrt(1./denom2+1./_statLambda.total())}; double ratio[3]={0.527,0.099,0.081}; double error[3]={0.027,0.004,0.004}; for(unsigned int ix=0;ix<3;++ix) { double chisq = sqr(data[ix]-ratio[ix])/(sqr(derror[ix])+sqr(error[ix])); generator()->log() << "Chi Square = " << chisq << " for 1 degree of freedon for BELLE "; if(ix==0) { generator()->log() << "Ratio of D*/D = "; } else if(ix==1) { generator()->log() << "Ratio of D_s/D = "; } else if(ix==2) { generator()->log() << "Ratio of Lambda_c/D = "; } generator()->log() << "Hw++ = " << data[ix] << " +/- " << derror[ix] << "\t" << "Exp = " << ratio[ix] << " +/- " << error[ix] << "\n"; } } void BELLECharmAnalysis::doinitrun() { AnalysisHandler::doinitrun(); // the bin sizes (same for all the plots) double vals[]={0.00,0.02,0.04,0.06,0.08,0.10,0.12,0.14,0.16,0.18, 0.20,0.22,0.24,0.26,0.28,0.30,0.32,0.34,0.36,0.38, 0.40,0.42,0.44,0.46,0.48,0.50,0.52,0.54,0.56,0.58, 0.60,0.62,0.64,0.66,0.68,0.70,0.72,0.74,0.76,0.78, 0.80,0.82,0.84,0.86,0.88,0.90,0.92,0.94,0.96,0.98, 1.00,1.02,1.04,1.06,1.08,1.10,1.12,1.14,1.16,1.18, 1.20}; // the data and errors for D*+ // continuum double DstarContAdata []={0.0000 ,0.0000 ,0.0000 ,0.0000 ,0.1086 , 0.0920 ,0.2600 ,0.1734 ,0.2212 ,0.4413 , 0.3998 ,0.5073 ,0.6654 ,0.7496 ,1.0015 , 0.8738 ,1.2712 ,1.2758 ,1.5916 ,1.7495 , 1.9353 ,2.1832 ,2.3189 ,2.5587 ,2.8917 , 3.0588 ,3.2292 ,3.4595 ,3.7583 ,3.9273 , 3.8202 ,3.8493 ,3.8297 ,3.7796 ,3.7061 , 3.4861 ,3.3356 ,3.2040 ,2.9714 ,2.7053 , 2.4643 ,2.2032 ,1.9259 ,1.7746 ,1.5298 , 1.2213 ,0.9208 ,0.7591 ,0.5077 ,0.3008 , 0.0752 ,0.0000 ,0.0007 ,0.0003 ,0.0003 , 0.0000 ,0.0000 ,0.0004 ,0.0007 ,0.0000 }; double DstarContAerror[]={0.0000 ,0.0000 ,0.0000 ,0.0000 ,0.0945 , 0.0651 ,0.0782 ,0.0672 ,0.0559 ,0.0606 , 0.0703 ,0.0802 ,0.1147 ,0.1003 ,0.0519 , 0.0818 ,0.0591 ,0.0688 ,0.0608 ,0.0508 , 0.0770 ,0.0695 ,0.1046 ,0.0685 ,0.0827 , 0.0743 ,0.0942 ,0.0873 ,0.0777 ,0.0740 , 0.0854 ,0.0804 ,0.0694 ,0.0720 ,0.0725 , 0.0738 ,0.0674 ,0.0712 ,0.0533 ,0.0598 , 0.0595 ,0.0542 ,0.0582 ,0.0470 ,0.0481 , 0.0491 ,0.0377 ,0.0343 ,0.0412 ,0.0287 , 0.0096 ,0.0000 ,0.0007 ,0.0000 ,0.0000 , 0.0000 ,0.0000 ,0.0001 ,0.0007 ,0.0000 }; double DstarContAsyst []={0.0000 ,0.0000 ,0.0000 ,0.0000 ,0.1089 , 0.1010 ,0.1116 ,0.0260 ,0.0331 ,0.0470 , 0.0298 ,0.1081 ,0.0374 ,0.0403 ,0.0775 , 0.0257 ,0.0770 ,0.0456 ,0.0729 ,0.0675 , 0.0668 ,0.0638 ,0.0705 ,0.0760 ,0.1014 , 0.0834 ,0.1208 ,0.1058 ,0.1048 ,0.1141 , 0.1179 ,0.1175 ,0.1137 ,0.1305 ,0.1276 , 0.0944 ,0.1488 ,0.0804 ,0.1300 ,0.0827 , 0.0611 ,0.0556 ,0.0498 ,0.0503 ,0.0384 , 0.0339 ,0.0235 ,0.0210 ,0.0177 ,0.0221 , 0.0212 ,0.0000 ,0.0005 ,0.0004 ,0.0003 , 0.0000 ,0.0002 ,0.0003 ,0.0004 ,0.0000}; double DstarContBdata []={0.0023 ,0.0192 ,0.1091 ,0.0119 ,0.2982 , 0.1810 ,0.5365 ,0.5271 ,0.4393 ,0.5188 , 1.2347 ,0.9356 ,1.2284 ,1.3936 ,1.6509 , 1.5206 ,1.0046 ,1.5886 ,1.5468 ,2.4733 , 2.1732 ,2.2865 ,2.4508 ,3.2556 ,2.9489 , 3.4497 ,3.2338 ,4.0084 ,3.3482 ,3.7872 , 4.0491 ,4.0065 ,3.8393 ,3.8573 ,3.9580 , 3.4841 ,3.2875 ,3.0220 ,3.0135 ,2.6343 , 2.1812 ,2.1588 ,2.1708 ,1.8158 ,1.4513 , 1.1350 ,1.0107 ,0.7388 ,0.4409 ,0.1652 , 0.0076 ,0.0000 ,0.0000 ,0.0000 ,0.0000 , 0.0002 ,0.0000 ,0.0003 ,0.0000 ,0.0000}; double DstarContBerror[]={0.0029 ,0.0235 ,0.0694 ,0.2135 ,0.1164 , 0.1500 ,0.1942 ,0.2272 ,0.2671 ,0.2697 , 0.2797 ,0.3122 ,0.2844 ,0.3007 ,0.3027 , 0.2881 ,0.3061 ,0.2927 ,0.2742 ,0.2868 , 0.2623 ,0.2652 ,0.2541 ,0.2541 ,0.2410 , 0.2388 ,0.2307 ,0.2307 ,0.2112 ,0.2102 , 0.2116 ,0.1995 ,0.1875 ,0.1811 ,0.1778 , 0.1649 ,0.1562 ,0.1460 ,0.1405 ,0.1307 , 0.1171 ,0.1131 ,0.1126 ,0.1016 ,0.0929 , 0.0801 ,0.0792 ,0.0712 ,0.0584 ,0.0415 , 0.0019 ,0.0000 ,0.0000 ,0.0000 ,0.0000 , 0.0003 ,0.0000 ,0.0003 ,0.0000 ,0.0000}; double DstarContBsyst []={0.0289 ,0.0279 ,0.1111 ,0.1412 ,0.1884 , 0.2026 ,0.2951 ,0.4560 ,0.3143 ,0.2830 , 0.8143 ,0.5703 ,0.5426 ,0.8053 ,0.8518 , 0.7047 ,0.6345 ,0.4422 ,0.6728 ,0.7195 , 0.5979 ,0.5913 ,0.4242 ,0.8650 ,0.3603 , 0.3100 ,0.4185 ,0.5449 ,0.7992 ,0.6498 , 0.3426 ,0.4139 ,0.4198 ,0.3723 ,0.1777 , 0.3743 ,0.3991 ,0.5463 ,0.2445 ,0.3707 , 0.5247 ,0.2772 ,0.1936 ,0.1444 ,0.2310 , 0.2199 ,0.0455 ,0.1016 ,0.1170 ,0.1720 , 0.0753 ,0.0000 ,0.0008 ,0.0003 ,0.0003 , 0.0003 ,0.0000 ,0.0001 ,0.0008 ,0.0004}; // upsilon(4s) double DstarResAdata [] ={0.0000 ,0.0000 ,0.0000 ,0.4738 ,1.5171 , 2.3419 ,2.8561 ,3.4064 ,3.8241 ,4.1637 , 4.6871 ,5.0245 ,5.3191 ,5.3183 ,4.9756 , 5.3471 ,5.4127 ,5.6859 ,5.0897 ,4.3337 , 4.2906 ,4.2940 ,3.8785 ,3.4359 ,3.1051 , 3.1234 ,3.2755 ,3.5321 ,3.6719 ,3.7688 , 3.7823 ,3.8011 ,3.9374 ,3.7599 ,3.6048 , 3.5008 ,3.2785 ,3.0835 ,2.9116 ,2.6687 , 2.4073 ,2.1714 ,1.9326 ,1.6977 ,1.4383 , 1.1891 ,0.9458 ,0.7230 ,0.4886 ,0.2788 , 0.0560 ,0.0004 ,0.0000 ,0.0001 ,0.0001 , 0.0001 ,0.0004 ,0.0001 ,0.0001 ,0.0002}; double DstarResAerror[] ={0.0000 ,0.0000 ,0.0000 ,0.0827 ,0.0814 , 0.0742 ,0.0695 ,0.0660 ,0.0617 ,0.0582 , 0.0898 ,0.0762 ,0.0725 ,0.0664 ,0.0639 , 0.0607 ,0.0604 ,0.0563 ,0.0541 ,0.0488 , 0.0506 ,0.0500 ,0.0440 ,0.0417 ,0.0398 , 0.0393 ,0.0406 ,0.0394 ,0.0415 ,0.0402 , 0.0394 ,0.0391 ,0.0347 ,0.0374 ,0.0372 , 0.0355 ,0.0345 ,0.0328 ,0.0319 ,0.0292 , 0.0285 ,0.0281 ,0.0254 ,0.0249 ,0.0247 , 0.0240 ,0.0232 ,0.0231 ,0.0235 ,0.0185 , 0.0059 ,0.0002 ,0.0000 ,0.0001 ,0.0000 , 0.0000 ,0.0004 ,0.0000 ,0.0001 ,0.0002}; double DstarResAsyst []={0.0000 ,0.0000 ,0.0000 ,0.4952 ,0.1372 , 0.1752 ,0.1725 ,0.1311 ,0.1107 ,0.1715 , 0.1424 ,0.1415 ,0.1428 ,0.1425 ,0.1335 , 0.1851 ,0.1591 ,0.1564 ,0.1502 ,0.1209 , 0.1471 ,0.1470 ,0.1160 ,0.0948 ,0.0846 , 0.0896 ,0.0879 ,0.0911 ,0.0935 ,0.1639 , 0.0945 ,0.1078 ,0.1546 ,0.0968 ,0.0927 , 0.0944 ,0.1009 ,0.0796 ,0.0738 ,0.0717 , 0.0653 ,0.0757 ,0.0494 ,0.0447 ,0.0413 , 0.0306 ,0.0238 ,0.0204 ,0.0163 ,0.0303 , 0.0167 ,0.0004 ,0.0001 ,0.0001 ,0.0002 , 0.0003 ,0.0004 ,0.0001 ,0.0002 ,0.0003}; double DstarResBdata [] ={0.1165 ,0.4929 ,1.0685 ,1.4522 ,2.3575 , 3.2876 ,4.0676 ,4.6098 ,5.0437 ,5.4440 , 6.0972 ,5.8901 ,6.4027 ,6.1881 ,5.9507 , 5.7318 ,6.1615 ,6.4023 ,5.5579 ,4.9284 , 4.5515 ,4.7132 ,3.8666 ,3.7695 ,3.0282 , 3.3300 ,3.4129 ,3.4566 ,3.6621 ,3.6642 , 3.5726 ,3.5974 ,3.5789 ,3.4910 ,3.4001 , 3.3657 ,3.0850 ,2.9208 ,2.7965 ,2.5201 , 2.3858 ,2.0900 ,1.8334 ,1.6066 ,1.3657 , 1.1287 ,0.8791 ,0.6908 ,0.4402 ,0.2154 , 0.0074 ,0.0000 ,0.0000 ,0.0000 ,0.0000 , 0.0003 ,0.0001 ,0.0000 ,0.0000 ,0.0000}; double DstarResBerror[] ={0.0551 ,0.0953 ,0.1464 ,0.1641 ,0.2045 , 0.2484 ,0.2532 ,0.2739 ,0.2811 ,0.2803 , 0.2781 ,0.2721 ,0.2662 ,0.2609 ,0.2462 , 0.2263 ,0.2298 ,0.2155 ,0.1894 ,0.1785 , 0.1646 ,0.1637 ,0.1423 ,0.1364 ,0.1200 , 0.1188 ,0.1156 ,0.1084 ,0.1060 ,0.0991 , 0.0969 ,0.0921 ,0.0869 ,0.0835 ,0.0803 , 0.0770 ,0.0717 ,0.0685 ,0.0654 ,0.0610 , 0.0585 ,0.0541 ,0.0505 ,0.0474 ,0.0453 , 0.0420 ,0.0402 ,0.0405 ,0.0371 ,0.0329 , 0.0009 ,0.0000 ,0.0000 ,0.0000 ,0.0000 , 0.0002 ,0.0001 ,0.0001 ,0.0000 ,0.0000}; double DstarResBsyst [] ={0.1372 ,0.4965 ,1.0767 ,0.9674 ,0.7464 , 1.0696 ,1.3322 ,1.2031 ,1.6356 ,1.5783 , 1.4752 ,1.4304 ,1.0702 ,1.2437 ,0.9721 , 0.9081 ,1.0710 ,0.9747 ,0.7575 ,0.8353 , 0.5420 ,0.5751 ,0.6969 ,0.4650 ,0.6019 , 0.3728 ,0.3793 ,0.5501 ,0.4483 ,0.6431 , 0.6985 ,0.6916 ,0.7151 ,0.6843 ,0.5956 , 0.5118 ,0.5377 ,0.4870 ,0.4397 ,0.4362 , 0.3022 ,0.3202 ,0.3053 ,0.2776 ,0.2307 , 0.1823 ,0.1645 ,0.1084 ,0.1023 ,0.0940 , 0.0546 ,0.0005 ,0.0000 ,0.0001 ,0.0002 , 0.0004 ,0.0004 ,0.0001 ,0.0001 ,0.0002}; // combine the data vector bins(vals,vals+61),data(60),error(60); double norm(0.); for(unsigned int ix=0;ix<60;++ix) { if(_onshell) { data[ix] = DstarResAdata[ix]+DstarResBdata[ix] -(DstarContAdata[ix]+DstarContBdata[ix]); error[ix] = sqrt(sqr(DstarResAerror[ix])+sqr(DstarResAsyst[ix])+ sqr(DstarResBerror[ix])+sqr(DstarResBsyst[ix])+ sqr(DstarContAerror[ix])+sqr(DstarContAsyst[ix])+ sqr(DstarContBerror[ix])+sqr(DstarContBsyst[ix])); } else { data[ix] = DstarContAdata[ix]+DstarContBdata[ix]; error[ix] = sqrt(sqr(DstarContAerror[ix])+sqr(DstarContAsyst[ix])+ sqr(DstarContBerror[ix])+sqr(DstarContBsyst[ix])); } norm +=data[ix]; } norm*=0.02; for(unsigned int ix=0;ixchildren().empty()) { for(unsigned int ix=0;ixchildren().size();++ix) sumMomenta(psum,parent->children()[ix]); } else psum += parent->momentum(); } void SimpleLHCAnalysis::analyze(tEventPtr event, long, int, int) { // AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). // find the Z Lorentz5Momentum pz; StepVector::const_iterator sit =event->primaryCollision()->steps().begin(); StepVector::const_iterator stest =event->primaryCollision()->steps().end(); StepVector::const_iterator send=sit; ++send; if(send==stest) --send; ++send; if(send==stest) --send; ++send; for(;sit!=send;++sit) { ParticleSet part=(**sit).all(); ParticleSet::const_iterator iter = part.begin(), end = part.end(); for( ;iter!=end;++iter) { if((**iter).children().size()!=2) continue; if((**iter).id()==ParticleID::Z0||(**iter).id()==ParticleID::gamma) { pz=Lorentz5Momentum(); sumMomenta(pz,*iter); pz.rescaleMass(); double pt = pz.perp()/GeV; double mz = pz.mass()/GeV; if(mz>20.&&mz<80.) _ptZ[1].addWeighted(pt,event->weight()); else if (mz>80.&&mz<100.) _ptZ[2].addWeighted(pt,event->weight()); else if (mz>100.) _ptZ[3].addWeighted(pt,event->weight()); _ptZ[0].addWeighted(pt ,event->weight()); _mZ .addWeighted(mz ,event->weight()); _rapZ .addWeighted(pz.rapidity(),event->weight()); _phiZ .addWeighted(pz.phi() ,event->weight()); } else if ((**iter).id()==ParticleID::Wplus) { pz=Lorentz5Momentum(); sumMomenta(pz,*iter); pz.rescaleMass(); double pt = pz.perp()/GeV; double mz = pz.mass()/GeV; if(mz>20.&&mz<80.) _ptWp[1].addWeighted(pt,event->weight()); else if (mz>80.&&mz<100.) _ptWp[2].addWeighted(pt,event->weight()); else if (mz>100.) _ptWp[3].addWeighted(pt,event->weight()); _ptWp[0].addWeighted(pt ,event->weight()); _mWp .addWeighted(mz ,event->weight()); _rapWp .addWeighted(pz.rapidity(),event->weight()); _phiWp .addWeighted(pz.phi() ,event->weight()); } else if ((**iter).id()==ParticleID::Wminus) { pz=Lorentz5Momentum(); sumMomenta(pz,*iter); pz.rescaleMass(); double pt = pz.perp()/GeV; double mz = pz.mass()/GeV; if(mz>20.&&mz<80.) (_ptWm[1]).addWeighted(pt,event->weight()); else if (mz>80.&&mz<100.) (_ptWm[2]).addWeighted(pt,event->weight()); else if (mz>100.) (_ptWm[3]).addWeighted(pt,event->weight()); _ptWm[0].addWeighted(pt ,event->weight()); _mWm .addWeighted(mz ,event->weight()); _rapWm .addWeighted(pz.rapidity(),event->weight()); _phiWm .addWeighted(pz.phi() ,event->weight()); } } } } NoPIOClassDescription SimpleLHCAnalysis::initSimpleLHCAnalysis; // Definition of the static class description member. void SimpleLHCAnalysis::Init() { static ClassDocumentation documentation ("The SimpleLHCAnalysis class performs a simple analysis of W and" " Z production in hadron-hadron collisions"); } void SimpleLHCAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); string title; using namespace HistogramOptions; for(unsigned int ix=0;ix<4;++ix) { if(ix==0){title="pt of Z for all masses ";} else if(ix==1){title="pt of Z for mass 40-80 GeV";} else if(ix==2){title="pt of Z for mass 80-100 GeV";} else if(ix==3){title="pt of Z for mass 100- GeV";} _ptZ[ix].topdrawOutput(outfile,Frame,"BLACK",title); _ptZ[ix].topdrawOutput(outfile,Frame|Ylog,"BLACK",title); if(ix==0){title="pt of Wp for all masses ";} else if(ix==1){title="pt of Wp for mass 40-80 GeV";} else if(ix==2){title="pt of Wp for mass 80-100 GeV";} else if(ix==3){title="pt of Wp for mass 100- GeV";} _ptWp[ix].topdrawOutput(outfile,Frame,"BLACK",title); _ptWp[ix].topdrawOutput(outfile,Frame|Ylog,"BLACK",title); if(ix==0){title="pt of Wm for all masses ";} else if(ix==1){title="pt of Wm for mass 40-80 GeV";} else if(ix==2){title="pt of Wm for mass 80-100 GeV";} else if(ix==3){title="pt of Wm for mass 100- GeV";} _ptWm[ix].topdrawOutput(outfile,Frame,"BLACK",title); _ptWm[ix].topdrawOutput(outfile,Frame|Ylog,"BLACK",title); } _mZ.topdrawOutput(outfile,Frame,"BLACK","Mass of Z"); _mZ.topdrawOutput(outfile,Frame|Ylog,"BLACK", "Mass of Z"); _mWp.topdrawOutput(outfile,Frame,"BLACK","Mass of Wp"); _mWp.topdrawOutput(outfile,Frame|Ylog,"BLACK", "Mass of Wp"); _mWm.topdrawOutput(outfile,Frame,"BLACK","Mass of Wm"); _mWm.topdrawOutput(outfile,Frame|Ylog,"BLACK", "Mass of Wm"); _rapZ.topdrawOutput(outfile,Frame,"BLACK","Rapidity of Z"); _rapZ.topdrawOutput(outfile,Frame|Ylog,"BLACK","Rapidity of Z"); _rapWp.topdrawOutput(outfile,Frame,"BLACK","Rapidity of Wp"); _rapWp.topdrawOutput(outfile,Frame|Ylog,"BLACK","Rapidity of Wp"); _rapWm.topdrawOutput(outfile,Frame,"BLACK","Rapidity of Wm"); _rapWm.topdrawOutput(outfile,Frame|Ylog,"BLACK","Rapidity of Wm"); _phiZ.topdrawOutput(outfile,Frame,"BLACK","Azimuth of Z"); _phiWp.topdrawOutput(outfile,Frame,"BLACK","Azimuth of Wp"); _phiWm.topdrawOutput(outfile,Frame,"BLACK","Azimuth of Wm"); } herwig++-2.6.0.orig/Analysis/ZpTRun2.h0000644000175000017500000001000311754474773020210 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_ZpTRun2_H #define HERWIG_ZpTRun2_H // // This is the declaration of the ZpTRun2 class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the ZpTRun2 class. * * @see \ref ZpTRun2Interfaces "The interfaces" * defined for ZpTRun2. */ class ZpTRun2: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription initZpTRun2; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ZpTRun2 & operator=(const ZpTRun2 &); private: /** * \f$p_T\f$ distribution */ HistogramPtr _pt; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ZpTRun2. */ template <> struct BaseClassTrait { /** Typedef of the first base class of ZpTRun2. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the ZpTRun2 class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::ZpTRun2"; } /** * The name of a file containing the dynamic library where the class * ZpTRun2 is implemented. It may also include several, space-separated, * libraries if the class ZpTRun2 depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwTevatronAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_ZpTRun2_H */ herwig++-2.6.0.orig/Analysis/TTbarAnalysis.cc0000644000175000017500000001163311754474773021614 0ustar sylvestresylvestre// -*- C++ -*- // // TTbarAnalysis.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TTbarAnalysis class. // #include "TTbarAnalysis.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; namespace { bool isLastInShower(const Particle & p) { return p.children().size() > 1 && p.children()[0]->id() != p.id() && p.children()[1]->id() != p.id(); } struct TTBar { static bool AllCollisions() { return false; } static bool AllSteps() { return true; } // === // pick the last instance from the shower static bool FinalState() { return false; } static bool Intermediate() { return true; } // === static bool Check(const Particle & p) { return abs(p.id()) == ParticleID::t && isLastInShower(p); } }; } TTbarAnalysis::TTbarAnalysis() : _pttop(0.,350.,100), _pttbar(0.,350.,100), _ptpair(0.,350.,100), _ettop(0.,350.,100), _ettbar(0.,350.,100), _etpair(0.,350.,100), _etop(0.,3000.,100), _etbar(0.,3000.,100), _epair(0.,6000.,100), _raptop(-5.,5.,100), _raptbar(-5.,5.,100), _rappair(-5.,5.,100), _phitop (-Constants::pi,Constants::pi,50), _phitbar (-Constants::pi,Constants::pi,50), _deltaphi(-Constants::pi,Constants::pi,100), _mpair(300,1500,100), _etsum(0.,700.,100), _ptsum(0.,700.,100) {} void TTbarAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; _pttop.topdrawOutput(outfile,Frame|Ylog,"RED","pt t, tbar"); _pttbar.topdrawOutput(outfile,Ylog,"BLUE","pt tbar"); _ptpair.topdrawOutput(outfile,Frame|Ylog,"BLACK","pt pair"); _ettop.topdrawOutput(outfile,Frame|Ylog,"RED","Et t, tbar"); _ettbar.topdrawOutput(outfile,Ylog,"BLUE","Et tbar"); _etpair.topdrawOutput(outfile,Frame|Ylog,"BLACK","Et pair"); _etop.topdrawOutput(outfile,Frame|Ylog,"RED","E t, tbar"); _etbar.topdrawOutput(outfile,Ylog,"BLUE","E tbar"); _epair.topdrawOutput(outfile,Frame|Ylog,"BLACK","E pair"); _raptop.topdrawOutput(outfile,Frame,"RED","y t, tbar"); _raptbar.topdrawOutput(outfile,None,"BLUE","y tbar"); _rappair.topdrawOutput(outfile,Frame,"BLACK","y pair"); _phitop.topdrawOutput(outfile,Frame,"RED","phi t, tbar"); _phitbar.topdrawOutput(outfile,None,"BLUE","phi tbar"); _deltaphi.topdrawOutput(outfile,Frame,"BLACK","Delta phi"); _mpair.topdrawOutput(outfile,Frame|Ylog,"BLACK","M pair"); _etsum.topdrawOutput(outfile,Frame|Ylog,"BLACK","pt sum"); _ptsum.topdrawOutput(outfile,Frame|Ylog,"BLACK","Et sum"); } void TTbarAnalysis::analyze(tEventPtr event, long, int, int) { Lorentz5Momentum ptop, ptbar, ppair; bool foundt = false; bool foundtbar = false; tcParticleSet particles; event->select(inserter(particles), ThePEG::ParticleSelector()); if ( particles.empty() ) return; for(tcParticleSet::const_iterator it = particles.begin(); it != particles.end(); ++it) { if((**it).id() == ParticleID::t) { ptop = (*it)->momentum(); foundt = true; } else if((**it).id() == ParticleID::tbar) { ptbar = (*it)->momentum(); foundtbar = true; } } if (foundt && foundtbar) { ppair = ptop + ptbar; _pttop += ptop.perp()/GeV; _pttbar += ptbar.perp()/GeV; _ptpair += ppair.perp()/GeV; _ettop += ptop.et()/GeV; _ettbar += ptbar.et()/GeV; _etpair += ppair.et()/GeV; _etop += ptop.e()/GeV; _etbar += ptbar.e()/GeV; _epair += ppair.e()/GeV; _raptop += ptop.rapidity(); _raptbar += ptbar.rapidity(); _rappair += ppair.rapidity(); _phitop += ptop.phi(); _phitbar += ptbar.phi(); _deltaphi += (ptop.vect()).deltaPhi(ptbar.vect()); _mpair += ppair.m()/GeV; _etsum += (ptop.et() + ptbar.et())/GeV; _ptsum += (ptop.perp() + ptbar.perp())/GeV; } else { cerr << "Analysis/TTbarAnalysis: did not find ttbar pair in event " << event->number() << ".\n"; generator()->log() << "Analysis/TTbarAnalysis: " << "Found no ttbar pair in event " << event->number() << ".\n" << *event; } } NoPIOClassDescription TTbarAnalysis::initTTbarAnalysis; // Definition of the static class description member. void TTbarAnalysis::Init() { static ClassDocumentation documentation ("Standard analysis of a t/tbar pair after showering."); } herwig++-2.6.0.orig/Analysis/Wpt.cc0000755000175000017500000001066211754474773017652 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the Wpt class. // #include "Wpt.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDF/BeamParticleData.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Utilities/Histogram.h" using namespace Herwig; using namespace ThePEG; using namespace std; inline IBPtr Wpt::clone() const { return new_ptr(*this); } inline IBPtr Wpt::fullclone() const { return new_ptr(*this); } void Wpt::doinitrun() { //Z pt run I CDF data from hep-ex:9803003 vector bins, data, error; //23 entries double vals1[] = { 0., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20., 25., 30., 35., 40., 50., 60., 70., 80., 100., 120., 160., 200. }; //22 entries double data1[] = { 0.47348E-01, 0.89142E-01, 0.74150E-01, 0.57847E-01, 0.44721E-01, 0.33586E-01, 0.27560E-01, 0.20728E-01, 0.16330E-01, 0.13269E-01, 0.95329E-02, 0.60349E-02, 0.40997E-02, 0.29612E-02, 0.17100E-02, 0.78358E-03, 0.49786E-03, 0.32469E-03, 0.13550E-03, 0.36365E-04, 0.19048E-04, 0.33335E-05 }; //22 entries double error1[] = { 0.50183E-02, 0.10305E-01, 0.46570E-02, 0.46999E-02, 0.35607E-02, 0.34406E-02, 0.22816E-02, 0.21171E-02, 0.15093E-02, 0.11812E-02, 0.71726E-03, 0.58489E-03, 0.46567E-03, 0.35365E-03, 0.20567E-03, 0.14391E-03, 0.14135E-03, 0.11974E-03, 0.46951E-04, 0.14776E-04, 0.79826E-05, 0.30431E-05 }; /* //data normalised to one double data1[] = { 0.0374049, 0.0908118, 0.092412, 0.0742096, 0.0530069, 0.0318041, 0.0272035, 0.0168022, 0.0136018, 0.0124016, 0.00743097, 0.00429056, 0.00245032, 0.00167022, 0.000875114, 0.000333043, 0.000186024, 5.20068e-05, 2.50033e-05, 1.10014e-05 }; double error1[] = { 0.000660086, 0.000950124, 0.000750098, 0.000580075, 0.000420055, 0.000300039, 0.000260034, 0.000190025, 0.00015002, 0.00015002, 8.90116e-05, 6.10079e-05, 4.20055e-05, 3.30043e-05, 2.3203e-05, 1.5502e-05, 7.50098e-06, 3.80049e-06, 1.30017e-06, 5.00065e-07 }; */ bins = vector(vals1 ,vals1 +23); data = vector(data1 ,data1 +22); error = vector(error1,error1+22); _hpt = new_ptr( Histogram( bins, data, error ) ); } void Wpt::persistentOutput(PersistentOStream & ) const { } void Wpt::persistentInput(PersistentIStream & , int) { } ClassDescription Wpt::initWpt; // Definition of the static class description member. void Wpt::Init() { static ClassDocumentation documentation ("There is no documentation for the Wpt class"); } void Wpt::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; _hpt->topdrawOutput(outfile,Frame|Errorbars|Ylog, "RED", "pT of W compared to run I data", " ", "1/SdS/dpT", " G G ", "pT", " "); outfile.close(); } void Wpt::analyze(tEventPtr event, long , int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; transform(event); // find the outgoing particles in the hard process ParticleVector outgoing; event->selectFinalState(back_inserter(outgoing)); ParticleVector Wdecay; // search for electrons and positions from Z/gamma for( unsigned int ix = 0; ixid(); //check children are 1st gen leptons if(abs(id)==11 || abs(id)==12) { PPtr part=outgoing[ix]; do { part=part->parents()[0]; } while (part->id()==id); if(abs(part->id())==24) Wdecay.push_back(outgoing[ix]); } } if(Wdecay.size()!=2) return; Lorentz5Momentum pW=Wdecay[0]->momentum()+Wdecay[1]->momentum(); pW.rescaleMass(); Energy pt=pW.perp(); *_hpt += pt/GeV; // remove leptons from outgoing particles for(unsigned int ix=0;ix 0 || state != 0 || !event ) return; transform(event); tParticleVector outgoing = event->primaryCollision()->step(1)->getFinalState(); ParticleVector Zdecay; // search for electrons and positions from Z/gamma for(unsigned int ix=0;ixid(); if(abs(id)==ParticleID::eminus) { PPtr part=outgoing[ix]; do { part=part->parents()[0]; } while (part->id()==id); if(part->id()==ParticleID::gamma||part->id()==ParticleID::Z0) Zdecay.push_back(outgoing[ix]); } } if(Zdecay.size()!=2) return; Lorentz5Momentum pZ=Zdecay[0]->momentum()+Zdecay[1]->momentum(); pZ.rescaleMass(); if(pZ.mass()<40.*GeV||pZ.mass()>200.*GeV) return; Energy pT = pZ.perp(); if(pT>260.*GeV) return; *_pt += pT/GeV; } NoPIOClassDescription ZpTRun2::initZpTRun2; // Definition of the static class description member. void ZpTRun2::Init() { static ClassDocumentation documentation ("There is no documentation for the ZpTRun2 class"); } void ZpTRun2::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; _pt->topdrawOutput(output,Frame|Errorbars|Ylog,"RED", "pt of Z (mass 40 GeV to 200 GeV) compared to D0 run II data", " ", "1/SdS/dpT", " G G ", "pT", " "); } void ZpTRun2::doinitrun() { AnalysisHandler::doinitrun(); //data from hep-ex 07120803 //normalised to one double abins[] ={ 0.0 , 2.5, 5.0, 7.5,10.0, 12.5,15.0,17.5,20.0,22.5, 25.0,27.5,30.0,40.0,50.0, 60.0,70.0,80.0,90.0,100.0, 140.0,180.0,220.0,260.0}; double adata[] = { 0.0533419, 0.0810158, 0.0634688, 0.0444179, 0.0314839, 0.0246659, 0.01865, 0.014238, 0.010929, 0.00942508, 0.00691838, 0.00551469, 0.00391039, 0.00210559, 0.0011029, 0.000731948, 0.000421119, 0.000250669, 0.00016043, 6.01598e-05, 1.1029e-05, 3.00799e-06, 7.11888e-07 }; double aerror[] = {0.00273679, 0.00225319, 0.0017852, 0.0014251, 0.0011344, 0.000924408, 0.000783108, 0.000708988, 0.000501329, 0.000448409, 0.000361519, 0.000317069, 0.0001418, 9.24408e-05, 5.84649e-05, 4.48409e-05, 3.61519e-05, 2.24199e-05, 1.8838e-05, 5.84649e-06, 2.12459e-06, 1.0468e-06, 6.14578e-07 }; vector bins(abins ,abins +24); vector data(adata ,adata +23); vector error(aerror,aerror+23); _pt = new_ptr(Histogram(bins,data,error)); } herwig++-2.6.0.orig/Analysis/LEPMultiplicityCount.cc0000644000175000017500000003467711754474773023153 0ustar sylvestresylvestre// -*- C++ -*- // // LEPMultiplicityCount.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the LEPMultiplicityCount class. // #include "LEPMultiplicityCount.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/StandardSelectors.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Utilities/EnumParticles.h" #include "Herwig++/Hadronization/Cluster.h" #include #include #include using namespace Herwig; using namespace ThePEG; IBPtr LEPMultiplicityCount::clone() const { return new_ptr(*this); } IBPtr LEPMultiplicityCount::fullclone() const { return new_ptr(*this); } LEPMultiplicityCount::LEPMultiplicityCount() : _makeHistograms(false) { // Average particle multiplicities in hadronic Z decay // PDG 2006 with 2007 partial update // all charged _data[0] = MultiplicityInfo(20.76, 0.16, lightMeson); // all charged // gamma _data[22] = MultiplicityInfo(20.97, 1.17, lightMeson); // pi+, pi0, eta _data[211] = MultiplicityInfo(17.03, 0.16, lightMeson); _data[111] = MultiplicityInfo( 9.76, 0.26, lightMeson); _data[221] = MultiplicityInfo( 1.01, 0.08, lightMeson); // rho+, rho0, omega, eta' _data[213] = MultiplicityInfo( 2.40, 0.49, lightMeson); _data[113] = MultiplicityInfo( 1.24, 0.10, lightMeson); _data[223] = MultiplicityInfo( 1.02, 0.06, lightMeson); _data[331] = MultiplicityInfo( 0.17, 0.05, lightMeson); // f_0(980), a_0(980), phi _data[10221] = MultiplicityInfo(0.147, 0.011, other); _data[9000211] = MultiplicityInfo(0.27, 0.14, other); _data[333] = MultiplicityInfo(0.098, 0.006, strangeMeson); // f_2(1270), f_1(1285), f_2'(1525), K+, K0 _data[225] = MultiplicityInfo(0.169, 0.025, other); _data[20223] = MultiplicityInfo(0.165, 0.051, other); _data[335] = MultiplicityInfo(0.012, 0.006, other); _data[321] = MultiplicityInfo(2.24, 0.04, strangeMeson); _data[311] = MultiplicityInfo(2.039, 0.025, lightMeson); // K*+(892), K*0(892), K*_2(1430) _data[323] = MultiplicityInfo(0.72, 0.05, strangeMeson); _data[313] = MultiplicityInfo(0.739, 0.022, strangeMeson); _data[315] = MultiplicityInfo(0.073, 0.023, strangeMeson); // D+, D0, D_s+ _data[411] = MultiplicityInfo(0.187, 0.020, other); _data[421] = MultiplicityInfo(0.462, 0.026, other); _data[431] = MultiplicityInfo(0.131, 0.028, other); // D*+(2010), J/Psi(1S), Psi(2S) _data[413] = MultiplicityInfo(0.183, 0.008, other); _data[443] = MultiplicityInfo(0.0056, 0.0007, other); _data[100443] = MultiplicityInfo(0.0023, 0.0007, other); // p, Delta++(1232), Lambda, Sigma+, Sigma-, Sigma0 _data[2212] = MultiplicityInfo(1.046, 0.026, lightBaryon); _data[2224] = MultiplicityInfo(0.087, 0.033, lightBaryon); _data[3122] = MultiplicityInfo(0.388, 0.009, lightBaryon); _data[3222] = MultiplicityInfo(0.107, 0.010, lightBaryon); _data[3112] = MultiplicityInfo(0.082, 0.007, lightBaryon); _data[3212] = MultiplicityInfo(0.076, 0.010, lightBaryon); // Sigma*+, Sigma*-, Xi-, Xi*0, Omega- _data[3224] = MultiplicityInfo(0.0239, 0.0021, lightBaryon); _data[3114] = MultiplicityInfo(0.0240, 0.0024, lightBaryon); _data[3312] = MultiplicityInfo(0.0258, 0.0009, lightBaryon); _data[3324] = MultiplicityInfo(0.0059, 0.0011, lightBaryon); _data[3334] = MultiplicityInfo(0.00164, 0.00028, lightBaryon); // Lambda_c+ _data[4122] = MultiplicityInfo(0.078, 0.024, other); // old values from 1.0 paper // _data[433] = MultiplicityInfo(0.096, 0.046, other); _data[2112] = MultiplicityInfo(0.991, 0.054, lightBaryon); // _data[2214] = MultiplicityInfo(0., 0., lightBaryon); // _data[2114] = MultiplicityInfo(0., 0., lightBaryon); // values unknown // B mesons // _data[513] = MultiplicityInfo(0.28, 0.04, other); // flavour averaged value! _data[513] = MultiplicityInfo(0., 0., other); _data[511] = MultiplicityInfo(0., 0., other); // B0 _data[521] = MultiplicityInfo(0., 0., other); // B+ _data[531] = MultiplicityInfo(0., 0., other); // B_s _data[541] = MultiplicityInfo(0., 0., other); // B_c // B baryons _data[5122] = MultiplicityInfo(0., 0., other); // Lambda_b _data[5112] = MultiplicityInfo(0., 0., other); // Sig_b- _data[5212] = MultiplicityInfo(0., 0., other); // Sig_b0 _data[5222] = MultiplicityInfo(0., 0., other); // Sig_b+ _data[5132] = MultiplicityInfo(0., 0., other); // Xi_b- _data[5232] = MultiplicityInfo(0., 0., other); // Xi_b0 _data[5312] = MultiplicityInfo(0., 0., other); // Xi'_b- _data[5322] = MultiplicityInfo(0., 0., other); // Xi'_b0 _data[5332] = MultiplicityInfo(0., 0., other); // Omega_b- } namespace { bool isLastCluster(tcPPtr p) { if ( p->id() != ParticleID::Cluster ) return false; for ( size_t i = 0, end = p->children().size(); i < end; ++i ) { if ( p->children()[i]->id() == ParticleID::Cluster ) return false; } return true; } Energy parentClusterMass(tcPPtr p) { if (p->parents().empty()) return -1.0*MeV; tcPPtr parent = p->parents()[0]; if (parent->id() == ParticleID::Cluster) { if ( isLastCluster(parent) ) return parent->mass(); else return p->mass(); } else return parentClusterMass(parent); } bool isPrimaryCluster(tcPPtr p) { if ( p->id() != ParticleID::Cluster ) return false; if( p->parents().empty()) return false; for ( size_t i = 0, end = p->parents().size(); i < end; ++i ) { if ( !(p->parents()[i]->dataPtr()->coloured()) ) return false; } return true; } } void LEPMultiplicityCount::analyze(tEventPtr event, long, int, int) { set particles; event->selectFinalState(inserter(particles)); map eventcount; for(set::const_iterator it = particles.begin(); it != particles.end(); ++it) { if((*it)->dataPtr()->charged()) ++eventcount[0]; long ID = abs( (*it)->id() ); ++_finalstatecount[ID]; } // ======== StepVector steps = event->primaryCollision()->steps(); particles.clear(); steps[0]->select(inserter(particles), ThePEG::AllSelector()); for(set::const_iterator it = particles.begin(); it != particles.end(); ++it) { long ID = (*it)->id(); ++_collisioncount[ID]; } // ======= particles.clear(); if (steps.size() > 2) { for ( StepVector::const_iterator it = steps.begin()+2; it != steps.end(); ++it ) { (**it).select(inserter(particles), ThePEG::AllSelector()); } } if( _makeHistograms ) _histograms.insert(make_pair(ParticleID::Cluster, Histogram(0.0,10.0,200))); for(set::const_iterator it = particles.begin(); it != particles.end(); ++it) { long ID = abs( (*it)->id() ); if(ID==ParticleID::K0) continue; if(ID==ParticleID::K_L0||ID==ParticleID::K_S0) ID=ParticleID::K0; if ( _makeHistograms && isLastCluster(*it) ) { _histograms[ParticleID::Cluster] += (*it)->mass()/GeV; tcClusterPtr clu = dynamic_ptr_cast(*it); if (clu) { _clusters.insert(make_pair(clu->clusterId(), Histogram(0.0,10.0,200))); _clusters[clu->clusterId()] += (*it)->mass()/GeV; } } if( _makeHistograms && isPrimaryCluster(*it) ) { _primary.insert(make_pair(0, Histogram(0.0,20.0,400))); _primary[0] += (*it)->mass()/GeV; tcClusterPtr clu = dynamic_ptr_cast(*it); if(clu) { _primary.insert(make_pair(clu->clusterId(), Histogram(0.0,20.0,400))); _primary[clu->clusterId()] += (*it)->mass()/GeV; } } if (_data.find(ID) != _data.end()) { ++eventcount[ID]; if (_makeHistograms && ! (*it)->parents().empty() && (*it)->parents()[0]->id() == ParticleID::Cluster) { _histograms.insert(make_pair(ID,Histogram(0.0,10.0,200))); _histograms[ID] += parentClusterMass(*it)/GeV; } } } for(map::iterator it = _data.begin(); it != _data.end(); ++it) { long currentcount = eventcount.find(it->first) == eventcount.end() ? 0 : eventcount[it->first]; it->second.count += currentcount; } } void LEPMultiplicityCount::analyze(const tPVector & ) {} void LEPMultiplicityCount::dofinish() { useMe(); string filename = generator()->filename() + ".mult"; ofstream outfile(filename.c_str()); outfile << "\nParticle multiplicities (compared to LEP data):\n" " ID Name simMult obsMult obsErr Sigma\n"; for (map::const_iterator it = _data.begin(); it != _data.end(); ++it) { MultiplicityInfo multiplicity = it->second; string name = (it->first==0 ? "All chgd" : generator()->getParticleData(it->first)->PDGName() ); ios::fmtflags oldFlags = outfile.flags(); outfile << std::scientific << std::showpoint << std::setprecision(3) << setw(7) << it->first << ' ' << setw(9) << name << ' ' << setw(2) << multiplicity.simMultiplicity() << " | " << setw(2) << multiplicity.obsMultiplicity << " +/- " << setw(2) << multiplicity.obsError << ' ' << std::showpos << std::setprecision(1) << multiplicity.nSigma() << ' ' << multiplicity.bargraph() << std::noshowpos; outfile << '\n'; outfile.flags(oldFlags); } outfile << "\nCount of particles involved in hard process:\n"; for (map::const_iterator it = _collisioncount.begin(); it != _collisioncount.end(); ++ it) { string name = generator()->getParticleData(it->first)->PDGName(); outfile << name << '\t' << it->second << '\n'; } outfile << "\nFinal state particle count:\n"; for (map::const_iterator it = _finalstatecount.begin(); it != _finalstatecount.end(); ++ it) { string name = generator()->getParticleData(it->first)->PDGName(); outfile << name << '\t' << it->second << '\n'; } outfile.close(); if (_makeHistograms) { Histogram piratio = _histograms[ParticleID::piplus].ratioWith(_histograms[ParticleID::pi0]); Histogram Kratio = _histograms[ParticleID::Kplus].ratioWith(_histograms[ParticleID::K0]); using namespace HistogramOptions; string histofilename = filename + ".top"; ofstream outfile2(histofilename.c_str()); for (map::const_iterator it = _primary.begin(); it != _primary.end(); ++it) { ostringstream title1; title1 << "Primary Cluster " << it->first; string title = title1.str(); it->second.topdrawOutput(outfile2,Frame|Ylog,"BLACK",title,"", "N (200 bins)","","Cluster mass [GeV]"); } map::const_iterator cit = _histograms.find(ParticleID::Cluster); string title = generator()->getParticleData(cit->first)->PDGName(); cit->second.topdrawOutput(outfile2,Frame|Ylog,"BLACK",title,"", "N (200 bins)","","Parent cluster mass [GeV]"); for (map::const_iterator it = _clusters.begin(); it != _clusters.end(); ++it) { ostringstream title1; title1 << "Final Cluster " << it->first; string title = title1.str(); it->second.topdrawOutput(outfile2,Frame|Rawcount|Ylog,"BLACK",title,"", "N (200 bins)","","Cluster mass [GeV]"); } for (map::const_iterator it = _histograms.begin(); it != _histograms.end(); ++it) { string title = generator()->getParticleData(it->first)->PDGName(); it->second.topdrawOutput(outfile2,Frame|Rawcount|Ylog,"BLACK",title,"", "N (200 bins)","","Parent cluster mass [GeV]"); } piratio.topdrawOutput(outfile2,Frame|Rawcount,"BLACK","pi+ / pi0","", "","","Parent cluster mass [GeV]"); Kratio.topdrawOutput(outfile2,Frame|Rawcount,"BLACK","K+ / K0","", "","","Parent cluster mass [GeV]"); outfile2.close(); } AnalysisHandler::dofinish(); } ClassDescription LEPMultiplicityCount::initLEPMultiplicityCount; // Definition of the static class description member. void LEPMultiplicityCount::Init() { static ParVector interfaceparticlecodes ("ParticleCodes", "The PDG code for the particles", &LEPMultiplicityCount::_particlecodes, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector interfaceMultiplicity ("Multiplicity", "The multiplicity for the particle", &LEPMultiplicityCount::_multiplicity, 0, 0, 0, 0., 1000., false, false, true); static ParVector interfaceError ("Error", "The error on the multiplicity for the particle", &LEPMultiplicityCount::_error, 0, 0, 0, 0., 1000., false, false, true); static ParVector interfaceSpecies ("Species", "The type of particle", &LEPMultiplicityCount::_species, 0, 0, other, 0, other, false, false, true); static Switch interfaceHistograms ("Histograms", "Set to On if detailed histograms are required.", &LEPMultiplicityCount::_makeHistograms, false, true, false); static SwitchOption interfaceHistogramsOn (interfaceHistograms, "Yes", "Generate histograms of cluster mass dependence.", true); static SwitchOption interfaceHistogramsOff (interfaceHistograms, "No", "Do not generate histograms.", false); static ClassDocumentation documentation ("The LEPMultiplicityCount class count the multiplcities of final-state particles" " and compares them with LEP data.", "The LEP multiplicity analysis uses data from PDG 2006 \\cite{Yao:2006px}.", "%\\cite{Yao:2006px}\n" "\\bibitem{Yao:2006px}\n" " W.~M.~Yao {\\it et al.} [Particle Data Group],\n" " %``Review of particle physics,''\n" " J.\\ Phys.\\ G {\\bf 33} (2006) 1.\n" " %%CITATION = JPHGB,G33,1;%%\n" ); } void LEPMultiplicityCount::persistentOutput(PersistentOStream & os) const { os << _particlecodes << _multiplicity << _error << _species << _makeHistograms; } void LEPMultiplicityCount::persistentInput(PersistentIStream & is, int) { is >> _particlecodes >> _multiplicity >> _error >> _species >> _makeHistograms; } herwig++-2.6.0.orig/Analysis/LEPMultiplicityCount.h0000644000175000017500000001411411754474773022775 0ustar sylvestresylvestre// -*- C++ -*- // // LEPMultiplicityCount.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_LEPMultiplicityCount_H #define HERWIG_LEPMultiplicityCount_H // // This is the declaration of the LEPMultiplicityCount class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "ThePEG/Repository/Repository.h" #include "ThePEG/PDT/ParticleData.h" #include "Herwig++/Utilities/Histogram.h" #include "MultiplicityInfo.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * The LEPMultiplicityCount class is designed to count particle multiplicities and * compare them to LEP data. * * @see \ref LEPMultiplicityCountInterfaces "The interfaces" * defined for LEPMultiplicityCount. */ class LEPMultiplicityCount: public AnalysisHandler { public: /** * The default constructor. */ LEPMultiplicityCount(); public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); using AnalysisHandler::analyze; //@} 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. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initLEPMultiplicityCount; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ LEPMultiplicityCount & operator=(const LEPMultiplicityCount &); private: /** * The PDG codes of the particles */ vector _particlecodes; /** * The multiplcity */ vector _multiplicity; /** * The error */ vector _error; /** * Species of particle */ vector _species; /** * Map of PDG codes to multiplicity info */ map _data; /// Histograms for cluster mass dependence map _histograms; /** * Histograms of the clusters after cluster splitting */ map _clusters; /** * Histograms of the primary clusters */ map _primary; /** * Map of number of final-state particles to PDG code */ map _finalstatecount; /** * Particles in hard process */ map _collisioncount; /// Make histograms of cluster mass dependence bool _makeHistograms; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of LEPMultiplicityCount. */ template <> struct BaseClassTrait { /** Typedef of the first base class of LEPMultiplicityCount. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the LEPMultiplicityCount class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::LEPMultiplicityCount"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the LEPMultiplicityCount class and any other class on which it depends * (except the base class). */ static string library() { return "HwAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_LEPMultiplicityCount_H */ herwig++-2.6.0.orig/Analysis/README0000644000175000017500000000001011754474773017430 0ustar sylvestresylvestretesting herwig++-2.6.0.orig/Analysis/EventShapes.h0000644000175000017500000003475111754474773021171 0ustar sylvestresylvestre// -*- C++ -*- // // EventShapes.h is a part of Herwig++ - A multi-purpose Monte Carlo // event generator Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for // details. Please respect the MCnet academic guidelines, see // GUIDELINES for details. // #ifndef HERWIG_EventShapes_H #define HERWIG_EventShapes_H // // This is the declaration of the EventShapes class. // #include "ThePEG/Interface/Interfaced.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "ThePEG/Vectors/Lorentz5Vector.h" #include "ThePEG/Vectors/ThreeVector.h" #include "ThePEG/EventRecord/Particle.h" #include "EventShapes.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * * The EventShapes class is designed so that certain event shapes, such * as the thrust are only calculated once per event given the speed of * the calculation. * * @see \ref EventShapesInterfaces "The interfaces" defined for * EventShapes. */ class EventShapes: public Interfaced { public: /** * The default constructor. */ EventShapes() : _thrustDone(false), _spherDone(false), _linTenDone(false), _hemDone(false), _useCmBoost(false), _mPlus(), _mMinus(), _bPlus(), _bMinus() {} /** * Member to reset the particles to be considered */ void reset(const tPVector &part) { _pv.resize(part.size()); for(unsigned int ix=0;ixmomentum(); _thrustDone = false; _spherDone = false; _linTenDone = false; _hemDone = false; _useCmBoost = false; } public: /** * Member functions to return thrust related shapes */ //@{ /** * The thrust */ double thrust() { checkThrust(); return _thrust[0]; } /** * The major */ double thrustMajor() { checkThrust(); return _thrust[1]; } /** * The minor */ double thrustMinor() { checkThrust(); return _thrust[2]; } /** * The oblateness */ double oblateness() { checkThrust(); return _thrust[1]-_thrust[2]; } /** * The thrust axis */ Axis thrustAxis() { checkThrust(); return _thrustAxis[0]; } /** * The major axis */ Axis majorAxis() { checkThrust(); return _thrustAxis[1]; } /** * The minor axis */ Axis minorAxis() { checkThrust(); return _thrustAxis[2]; } //@} /** * Linear momentum tensor related event shapes */ //@{ /** * The C parameter */ double CParameter() { checkLinTen(); return 3.*(_linTen[0]*_linTen[1]+_linTen[1]*_linTen[2] +_linTen[2]*_linTen[0]); } /** * The D parameter */ double DParameter() { checkLinTen(); return 27.*(_linTen[0]*_linTen[1]*_linTen[2]); } /** * The eigenvalues in descending order */ vector linTenEigenValues() { checkLinTen(); return _linTen; } /** * The eigenvectors in order of descending eigenvalue */ vector linTenEigenVectors() { checkLinTen(); return _linTenAxis; } //@} /** * Quadratic momentum tensor related variables */ //@{ /** * The sphericity */ double sphericity() { checkSphericity(); return 3./2.*(_spher[1]+_spher[2]); } /** * The aplanarity */ double aplanarity() { checkSphericity(); return 3./2.*_spher[2]; } /** * The planarity */ double planarity() { checkSphericity(); return _spher[1]-_spher[2]; } /** * The sphericity axis */ Axis sphericityAxis() { checkSphericity(); return _spherAxis[0]; } /** * The sphericity eigenvalues */ vector sphericityEigenValues() { checkSphericity(); return _spher; } /** * The sphericity eigenvectors */ vector sphericityEigenVectors() { checkSphericity(); return _spherAxis; } //@} /** * Jet mass related event shapes */ //@{ /** * The high hemishpere mass squared divided by the visible energy * squared */ double Mhigh2() { checkHemispheres(); return _mPlus; } /** * The low hemishpere mass squared divided by the visible energy * squared */ double Mlow2() { checkHemispheres(); return _mMinus; } /** * The difference between the * hemishpere masses squared divided by the visible energy squared */ double Mdiff2() { checkHemispheres(); return _mPlus-_mMinus; } //@} /** * Jet broadening related event shapes */ //@{ /** * The wide jet broadening */ double Bmax() { checkHemispheres(); return _bPlus; } /** * The narrow jet broadening */ double Bmin() { checkHemispheres(); return _bMinus; } /** * The sum of the jet broadenings */ double Bsum() { checkHemispheres(); return _bPlus+_bMinus; } /** * The difference of the jet broadenings */ double Bdiff() { checkHemispheres(); return _bPlus-_bMinus; } //@} /** * Single particle variables which do not depend on event shapes axes */ //@{ /** * The scaled momentum \f$\xi=-\log\left( p/E_{\rm beam}\right)\f$. */ double getXi(const Lorentz5Momentum & p, const Energy & Ebeam) { return((Ebeam > 0*MeV && p.vect().mag() > 0*MeV) ? log(Ebeam/p.vect().mag()) : -1.); } /** * Transverse momentum with respect to the beam */ Energy getPt(const Lorentz5Momentum & p) { return p.perp(); } /** * Rapidity with respect to the beam direction */ double getRapidity(const Lorentz5Momentum & p) { return (p.t() > p.z() ? p.rapidity() : 1e99); } //@} /** * Single particle variables related to one of the shape axis. */ //@{ /** * Transverse momentum with respect to the thrust axis in the event plane */ Energy ptInT(const Lorentz5Momentum & p) { checkThrust(); return p.vect()*_thrustAxis[1]; } /** * Transverse momentum with respect to the thrust axis out of the * event plane */ Energy ptOutT(const Lorentz5Momentum & p) { checkThrust(); return p.vect()*_thrustAxis[2]; } /** * Rapidity with respect to the thrust axis */ double yT(const Lorentz5Momentum & p) { checkThrust(); return (p.t() > p.vect()*_thrustAxis[0] ? p.rapidity(_thrustAxis[0]) : 1e99); } /** * Transverse momentum with respect to the sphericity axis in the * event plane */ Energy ptInS(const Lorentz5Momentum & p) { checkSphericity(); return p.vect()*_spherAxis[1]; } /** * Transverse momentum with respect to the sphericity axis out of the * event plane */ Energy ptOutS(const Lorentz5Momentum & p) { checkSphericity(); return p.vect()*_spherAxis[2]; } /** * Rapidity with respect to the sphericity axis */ double yS(const Lorentz5Momentum & p) { checkSphericity(); return (p.t() > p.vect()*_spherAxis[0] ? p.rapidity(_spherAxis[0]) : 1e99); } //@} /** * Energy-energy correlation (EEC) @param hi is the histogram and has * to be provided externally It is understood that the range of the * histogam is -1 < cos(chi) < 1. hi.front() contains the bin [-1 < * cos(chi) < -1+delta] and hi.back() the bin [1-delta < cos(chi) < * 1]. delta = 2/hi.size(). We use classical indices to access the * vector. */ void bookEEC(vector & hi); /** * Before writing the histogram it has to be normalized according to * the number of events. */ void normalizeEEC(vector & hi, long evts) { for (unsigned int bin = 0; bin < hi.size(); bin++) bin /= (hi.size()*evts); } /** * The asymmetry of EEC is calculated from a given \f$\cos\chi\f$ and * EEC histogram, which is a vector as described above. */ double AEEC(vector & hi, double& coschi) { if (coschi > 0. && coschi <= 1.) { int i = static_cast( floor((-coschi+1.)/2.*hi.size()) ); int j = static_cast( floor(( coschi+1.)/2.*hi.size()) ); return hi[i]-hi[j]; } else { return 1e99; } } public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * Check whether the initialization of a certain class of event shapes * has been calculated and if not do so */ //@{ /** * Check if thrust related variables have been calculated and if not * do so */ void checkThrust() { if (!_thrustDone) { _thrustDone = true; calculateThrust(); } } /** * Check if the linear tensor related variables have been calculated * and if not do so */ void checkLinTen() { if (!_linTenDone) { _linTenDone = true; diagonalizeTensors(true, _useCmBoost); } } /** * Check if the quadratic tensor related variables have been * calculated and if not do so */ void checkSphericity() { if (!_spherDone) { _spherDone = true; diagonalizeTensors(false, _useCmBoost); } } /** * Check if the hemisphere mass variables and jet broadenings have * been calculated and if not do so */ void checkHemispheres() { if (!_hemDone) { _hemDone = true; calcHemisphereMasses(); } } //@} /** * Methods that actually calculate the event shapes */ //@{ /** * Calculate the hemisphere masses and jet broadenings */ void calcHemisphereMasses(); /** * Calculate the thrust and related axes */ void calculateThrust(); /** * Diagonalize the tensors @param linear switch between * diagonalization of linear/quadratic tensor. @param cmboost tells * whether to boost into cm frame of all momenta first, or not * (default off, and no interface to this). */ void diagonalizeTensors(bool linear, bool cmboost); /** * Quite general diagonalization of a symmetric Matrix T, given as an * array of doubles. The symmetry is not checked explicitly as this * is clear in the context. It uses an explicit generic solution of * the eigenvalue problem and no numerical approximation, based on * Cardano's formula. @param T Matrix to be diagonalised */ vector eigenvalues(const double T[3][3]); /** * The eigenvector of @param T to a given eigenvalue @param lam */ Axis eigenvector(const double T[3][3], const double &lam); /** * The eigenvectors of @param T corresponding to the eigenvectors * @param lam . The ordering of the vectors corresponds to the * ordering of the eigenvalues. */ vector eigenvectors(const double T[3][3], const vector &lam); /** * Member to calculate the thrust * @param p The three vectors * @param t The thrust-squared (up to an Energy scale factor) * @param taxis The thrust axis */ void calcT(const vector &p, Energy2 &t, Axis &taxis); /** * Member to calculate the major * @param p The three vectors * @param m The major-squared (up to an Energy scale factor) * @param maxis The major axis */ void calcM(const vector &p, Energy2 &m, Axis &maxis); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initEventShapes; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ EventShapes & operator=(const EventShapes &); private: /** * Vector of particle momenta to be analysed */ vector _pv; /** * Various event shape axes */ //@{ /** * The thrust related axes */ vector _thrustAxis; /** * The sphericity related axes */ vector _spherAxis; /** * The linearised tensor axes */ vector _linTenAxis; //@} /** * Values of axis related event shapes */ //@{ /** * Values of thrust related variables */ vector _thrust; /** * Values of sphericity related variables */ vector _spher; /** * Values of linearized tensor related variables */ vector _linTen; //@} /** * Whether or not certain event axes have been calculated */ //@{ /** * Whether or not the thrust is calculated */ bool _thrustDone; /** * Whether or not the sphericity is calculated */ bool _spherDone; /** * Whether or not the linearizes tensor is calculated */ bool _linTenDone; /** * Whether or not the hemisphere masses have been calculated */ bool _hemDone; //@} /** * Whether ot not to boost to the CMS frame for the tensor diagonalizations */ bool _useCmBoost; /** * Hemisphere masses */ //@{ /** * The high hemisphere mass */ double _mPlus; /** * The low hemisphere mass */ double _mMinus; //@} /** * The jet broadenings */ //@{ /** * The wide jet broadening */ double _bPlus; /** * The narrow jet broadening */ double _bMinus; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of EventShapes. */ template <> struct BaseClassTrait { /** Typedef of the first base class of EventShapes. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the EventShapes class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::EventShapes"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the EventShapes class and any other class on which it depends * (except the base class). */ static string library() { return "HwAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_EventShapes_H */ herwig++-2.6.0.orig/Analysis/Zrapidity.h0000755000175000017500000001215011754474773020713 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_Zrapidity_H #define HERWIG_Zrapidity_H // // This is the declaration of the Zrapidity class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the Zrapidity class. * * @see \ref ZrapidityInterfaces "The interfaces" * defined for Zrapidity. */ class Zrapidity: public AnalysisHandler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline Zrapidity() {} public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * Rapidity histogram */ HistogramPtr _hy; /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initZrapidity; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Zrapidity & operator=(const Zrapidity &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Zrapidity. */ template <> struct BaseClassTrait { /** Typedef of the first base class of Zrapidity. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the Zrapidity class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::Zrapidity"; } /** * The name of a file containing the dynamic library where the class * Zrapidity is implemented. It may also include several, space-separated, * libraries if the class Zrapidity depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwTevatronAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_Zrapidity_H */ herwig++-2.6.0.orig/Analysis/ZpTRun1.cc0000755000175000017500000001014711754474773020361 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the ZpTRun1 class. // #include "ZpTRun1.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDF/BeamParticleData.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Utilities/Histogram.h" using namespace Herwig; using namespace ThePEG; using namespace std; inline IBPtr ZpTRun1::clone() const { return new_ptr(*this); } inline IBPtr ZpTRun1::fullclone() const { return new_ptr(*this); } void ZpTRun1::doinitrun() { //Z pt run I CDF data from vector bins, data, error; //50 data points double vals1[] = { 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5, 10., 10.5, 11., 11.5, 12., 13., 14., 15., 16., 17., 18., 19., 20., 22., 24., 26., 28., 30., 34., 38., 42., 46., 50., 60., 70., 80., 90., 100.,125.,150.,200., }; double data1[] = {3.35, 10.1, 14.8, 19.4, 20.2, 23.6, 23.6, 23, 19.9, 19.3, 17.9, 18, 14.6, 14.5, 13.5, 13.7, 11.9, 10.4, 11.1, 9.56, 8.35, 7.82, 8.18, 7.48, 7.21, 6.05, 4.73, 5.21, 4.46, 4.28, 3.51, 3.01, 2.63, 1.82, 1.85, 1.58, 1.41, 1.02, 0.678, 0.644, 0.434, 0.394, 0.21, 0.107, 0.091, 0.045, 0.0351, 0.0181, 0.00711, 0.000974 }; double error1[] = { 0.54, 1, 1.2, 1.4, 1.4, 1.5, 1.4, 1.4, 1.3, 1.2, 1.2, 1.2, 1, 1, 1, 1, 0.9, 0.9, 0.9, 0.82, 0.76, 0.74, 0.76, 0.72, 0.53, 0.47, 0.41, 0.44, 0.4, 0.39, 0.35, 0.33, 0.22, 0.18, 0.17, 0.17, 0.16, 0.1, 0.079, 0.076, 0.062, 0.059, 0.027, 0.019, 0.0175, 0.0122, 0.0107, 0.0048, 0.00297, 0.000756 }; bins = vector(vals1 ,vals1 +51); data = vector(data1 ,data1 +50); error = vector(error1,error1+50); _hpt = new_ptr( Histogram( bins, data, error ) ); } void ZpTRun1::persistentOutput(PersistentOStream &) const { } void ZpTRun1::persistentInput(PersistentIStream &, int) { } ClassDescription ZpTRun1::initZpTRun1; // Definition of the static class description member. void ZpTRun1::Init() { static ClassDocumentation documentation ("There is no documentation for the ZpTRun1 class"); } void ZpTRun1::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; _hpt->normaliseToData(); _hpt->topdrawOutput(outfile,Frame|Errorbars|Ylog, "RED", "pT of Z ( mass 60 GeV to 116 GeV ) compared to CDF run I data", " ", "1/SdS/dpT", " G G ", "pT", " "); outfile.close(); } void ZpTRun1::analyze(tEventPtr event, long , int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; transform(event); // find the outgoing particles in the hard process ParticleVector outgoing; event->selectFinalState(back_inserter(outgoing)); ParticleVector Zdecay; // search for electrons and positions from Z/gamma for(unsigned int ix=0;ixid(); if(abs(id)==ParticleID::eminus) { PPtr part=outgoing[ix]; do { part=part->parents()[0]; } while (part->id()==id); if(part->id()==ParticleID::gamma||part->id()==ParticleID::Z0) Zdecay.push_back(outgoing[ix]); } } if(Zdecay.size()!=2) return; Lorentz5Momentum pZ=Zdecay[0]->momentum()+Zdecay[1]->momentum(); pZ.rescaleMass(); if(pZ.mass()<66.*GeV||pZ.mass()>116.*GeV) return; Energy pt=pZ.perp(); *_hpt += pt/GeV; // remove leptons from outgoing particles for(unsigned int ix=0;ix/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/Config/ar-lib \ $(top_srcdir)/Config/config.guess \ $(top_srcdir)/Config/config.h.in \ $(top_srcdir)/Config/config.sub \ $(top_srcdir)/Config/install-sh $(top_srcdir)/Config/ltmain.sh \ $(top_srcdir)/Config/missing $(top_srcdir)/configure AUTHORS \ COPYING ChangeLog Config/ar-lib Config/config.guess \ Config/config.sub Config/depcomp Config/install-sh \ Config/ltmain.sh Config/missing INSTALL NEWS ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ cscope distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 GZIP_ENV = --best DIST_TARGETS = dist-bzip2 dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = include \ Utilities PDT Decay PDF Models \ Shower DipoleShower Hadronization MatrixElement \ UnderlyingEvent Analysis Looptools Exsample2 \ lib src Doc Contrib Tests EXTRA_DIST = GUIDELINES DISTCHECK_CONFIGURE_FLAGS = --enable-debug --with-thepeg=$(THEPEGPATH) ACLOCAL_AMFLAGS = -I m4 DISTCLEANFILES = config.herwig all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): Config/config.h: Config/stamp-h1 @if test ! -f $@; then rm -f Config/stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) Config/stamp-h1; else :; fi Config/stamp-h1: $(top_srcdir)/Config/config.h.in $(top_builddir)/config.status @rm -f Config/stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status Config/config.h $(top_srcdir)/Config/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f Config/stamp-h1 touch $@ distclean-hdr: -rm -f Config/config.h Config/stamp-h1 mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done cscopelist-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist-recursive cscopelist cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \ cscopelist-recursive ctags-recursive install-am install-strip \ tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-cscope \ clean-generic clean-libtool cscope cscopelist \ cscopelist-recursive ctags ctags-recursive dist dist-all \ dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ dist-xz \ dist-zip distcheck distclean distclean-generic distclean-hdr \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-recursive uninstall uninstall-am libclean: find . -name '*.la' -print0 | xargs -0 rm -rf cd lib && $(MAKE) $(AM_MAKEFLAGS) clean cd src && $(MAKE) $(AM_MAKEFLAGS) clean tests: cd Tests && $(MAKE) $(AM_MAKEFLAGS) tests unregister: cd src && $(MAKE) $(AM_MAKEFLAGS) unregister register: cd src && $(MAKE) $(AM_MAKEFLAGS) register # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/GUIDELINES0000644000175000017500000001105211754474776016353 0ustar sylvestresylvestre MCNET GUIDELINES for Event Generator Authors and Users PREAMBLE This generator has been developed as part of an academic research project and is the result of many years of work by the authors. Proper academic recognition is a requirement for its continued development. The components of the program have been developed to work together as a coherent physics framework. We believe that the creation of separately maintained forks or piecewise distribution of individual parts would diminish their scientific value. The authors are convinced that software development in a scientific context requires full availability of all source code, to further progress and to allow local modifications to meet the specific requirements of the individual user. Therefore we have decided to release this program under the GNU General Public License (GPL) version 2. This ensures that the source code will be available to you and grants you the freedom to use and modify the program. You can redistribute your modified versions as long as you retain the GPL and respect existing copyright notices (see the file 'COPYING' for details). By using the GPL, we entrust you with considerable freedom and expect you to use it wisely, since the GPL does not address the issues in the first two paragraphs. To remedy this shortcoming, we have formulated the following guidelines relevant for the distribution and usage of event generator software in an academic setting. GUIDELINES 1) The integrity of the program should be respected. ------------------------------------------------- 1.1) Suspected bugs and proposed fixes should be reported back to the original authors to be considered for inclusion in the standard distribution. No independently developed and maintained forks should be created as long as the original authors actively work on the program. 1.2) The program should normally be redistributed in its entirety. When there are special reasons, an agreement should be sought with the original authors to redistribute only specific parts. This should be arranged such that the redistributed parts remain updated in step with the standard distribution. 1.3) Any changes in the code must be clearly marked in the source (reason, author, date) and documented. If any modified version is redistributed it should be stated at the point of distribution (download link) that it has been modified and why. 1.4) If a significant part of the code is used by another program, this should be clearly specified in that program's documentation and stated at its point of distribution. 1.5) Copyright information and references may not be removed. Copyright-related program messages may not be altered and must be printed even if only a part of the program is used. Adding further messages specifying any modifications is encouraged. 2) The program and its physics should be properly cited when used for academic publications ------------------------------------------------------------------ 2.1) The main software reference as designated by the program authors should always be cited. 2.2) In addition, the original literature on which the program is based should be cited to the extent that it is of relevance for a study, applying the same threshold criteria as for other literature. 2.3) When several programs are combined, they should all be mentioned, commensurate with their importance for the physics study at hand. 2.4) To make published results reproducible, the exact versions of the codes that were used and any relevant program and parameter modifications should be spelled out. POSTSCRIPT The copyright license of the software is the GPL v2 alone, therefore the above guidelines are not legally binding. However, we reserve the right to criticize offenders. The guidelines should always be combined with common sense, for interpretation and for issues not covered. Enquiries regarding the guidelines and related issues are encouraged and should be directed to the authors of the program. Please note that the program, including all its code and documentation, is intended for academic use and is delivered "as is" to be used at your own risk, without any guarantees. ---------------------------------------------------------------------- These guidelines were edited by Nils Lavesson and David Grellscheid for the MCnet collaboration, which has approved and agreed to respect them. MCnet is a Marie Curie Research Training Network funded under Framework Programme 6 contract MRTN-CT-2006-035606. herwig++-2.6.0.orig/NEWS0000644000175000017500000011460011756462271015467 0ustar sylvestresylvestreHerwig++ News (emacs -*- outline -*- format) * Herwig++-2.6.0 release: 2012-05-21 (tagged at SVN r7407) ** New NLO framework Matchbox, a flexible and very general framework for performing NLO calculations at fixed order or matched to parton showers is provided with this release. ** Dipole shower algorithm A first implementation of the coherent dipole shower algorithm by Plätzer and Gieseke (arXiv:0909.5593 and arXiv:1109.6256) is available. ** Alternative samplers and the ExSample library The ExSample library by Plätzer (arXiv:1108.6182) is shipped along with Herwig++ in an extended version. The extended version provides SamplerBase objects which can be used alternatively to the default ACDCSampler. ** New BSM models *** New colour sextet diquark model A colour sextet diquark model has been included, as described in Richardson and Winn (arXiv:1108.6154). *** Models reproducing the CDF t-tbar asymmetry Four models that can reproduce the reported t-tbar asymmetry have been included. *** Zprime A simple standard model extension by one additional heavy neutral vector boson. ** Interface to AlpGen, with MLM merging The Contrib directory contains a new interface to the AlpGen matrix element generator. AlpGen events must be preprocessed with the provided AlpGenToLH.exe tool before they can be used. More information can be found in the Herwig++ 2.6 release note. ** HiggsVBF Powheg Higgs boson production by vector boson fusion is available at NLO in the POWHEG scheme, as described in d'Errico, Richardson (arXiv:1106.2983). The Powheg DIS processes were available in Herwig++-2.5.2 already. ** Statistical colour reconnection Alternative mechanisms to minimize the colour length Sum(m_clu) before the hadronization stage, based on Metropolis and annealing algorithms. ** Energy extrapolation of underlying-event tunes To describe underlying-event data at different c.m. energies, the energy-dependent parameter pT_min will now be adjusted automatically, following a power-law. The new tune parameters are the value at 7000 GeV "MPIHandler:pTmin0", and MPIHandler:Power. ** Ticket #239: Reporting of minimum-bias cross-section When simulating minimum-bias events using the MEMinBias matrix element, the correct unitarized cross section can now be reported via the standard facilities; it is no longer necessary to extract it from the .log file of the run. The corresponding functionality is enabled by inserting a MPIXSecReweighter object as a post-subprocess handler: create Herwig::MPIXSecReweighter MPIXSecReweighter insert LHCHandler:PostSubProcessHandlers 0 MPIXSecReweighter ** Dependency on 'boost' Herwig++ now requires the boost headers to build; if not detected in standard locations, specify with the --with-boost configure option. ** Tests directory The Tests directory now contains input cards for almost all Rivet analyses. A full comparison run can be initiated with 'make tests'. ** Minor changes *** Default LHC energy now 8 TeV All LHC-based defaults have now been updated to use 8 TeV as the center-of-mass energy. *** Herwig::ExtraParticleID -> ThePEG::ParticleID The namespace for additional particles has been unified into ThePEG::ParticleID *** MEee2VectorMeson The e+e- -> vector meson matrix element has moved from Contrib into HwMELepton.so *** SUSY numerics fixes Better handling of rare numerical instabilities. *** YODA output for Rivet The built-in histogramming handler can now output data in the YODA format used by Rivet. *** Consistency checks in SLHA file reader Better warnings for inconsistent SusyLHA files *** better colour flow checking for development ** Bug fixes *** Extremely offshell W from top decay Numerical improvements for very off-shell W bosons coming from top decays. *** Ticket #367: problems in using SUSY + LHE Susy events from Les Houches event files are now handled better. *** Infinite loop in remnant decayer The remnant decayer will now abort after 100 tries. *** Fix to HiggsVBF LO diagrams The diagram structure of HiggsVBF LO matrix elements has been fixed. *** LEP thrust fix The calculation of the transverse momentum of a branching from the evolution variable in final-state radiation can now be changed. While formally a sub-leading choice this enables a better description of the thrust distribution in e+e- collisions at small values of the thrust. Currently the default behaviour, where the cut-off masses are used in the calculation, remains the same as previous versions. * Herwig++-2.5.2 release: 2011-11-01 (tagged at SVN r6928) ** Optional new jet vetoing model The jet vetoing model by Schofield and Seymour (arXiv:1103.4811) is available via Evolver:ColourEvolutionMethod, PartnerFinder:PartnerMethod and SplittingFunction:SplittingColourMethod. The default behaviour is unchanged. ** MPI tune Version 3 of the MPI tunes is now the default. Please note that the pT parameter is energy-dependent and needs to be modified when an LHC run is not at 7 TeV. The latest tunes are always available at http://projects.hepforge.org/herwig/trac/wiki/MB_UE_tunes ** MPI PDFs MPI PDFs can now be controlled independently. ** Initialization time speedup A new BSMModel base class was introduced between StandardModel and the BSM model classes. Together with a restructured decay mode initialization, this offers significantly faster startup times for BSM runs. ThreeBodyDecays can now always be switched on without a large speed penalty. ** Decay mode file Decay mode files in the SLHA format can now be read separately in any BSM model with 'set Model:DecayFileName filename' ** Powheg DIS Charged- and neutral-current DIS processes implementing the POWHEG method are now available. ** Diffraction models Xi cut implemented in PomeronFlux ** Ticket #352: Colour reconnection fixed in DIS ** Ticket #353: Improved numerical stability in chargino decays ** Ticket #358: Infinite loop in top events with pT cut in shower ** Ticket #361: Problem with duplicate 2-body modes in BSM ** Tickets #362 / #363: Crashes with baryon number violating models Particle decays in SUSY models with RPV now work correctly in the colour 8 -> 3,3,3 case. Colour reshuffling now works for RPV clusters. ** Improved Fastjet detection The configure step uses fastjet-config to make sure all header file paths are seen. ** Darwin 11 / OS X Lion A configure bug was fixed which prevented 'make check' from succeeding on OS X Lion. ** Vertex classes The specification of QED / QCD orders has been moved to the vertex constructors, to allow ThePEG consistency checks. WWHH vertices in MSSM and NMSSM were fixed. Some Leptoquark and UED vertices fixed. ** Hadronization Cleanup of obsolete code. * Herwig++-2.5.1 release: 2011-06-24 (tagged at SVN r6609) ** Example input files at 7 TeV All our example input files for LHC now have their beam energy set to 7 TeV instead of 14 TeV. ** Colour reconnection on by default The colour reconnection tunes are now the default setup. Version 2 of the tunes replaces the *-1 tunes, which had a problem with LEP event shapes. ** Run name tags Aded possibility to add a tag to the run name when running with the '-t' option. One run file can thus be run with different seeds and results stored in different output files. ** Floating point exceptions The new command line option -D enables floating point error checking. ** General improvements to WeakCurrent decays ** Remnant decayer Hardwired gluon mass was removed. ** WeakCurrentDecayConstructor Instead of specifying separate Particle1...Particle5 vectors for the decay modes, the new interface DecayModes can be filled with decay tags in the standard syntax. ** BSM: improvements to handling of vertex and model initialisation ** Powheg Higgs Option to use pT or mT as the scale in alphaS and for the factorization scale in the PDFs ** Ticket #337: Tau polarization wrong in charged Higgs decay ** Ticket #339: Colour flows in GeneralThreeBody Decayers for 3bar -> 8 3bar 1 ** Ticket #340: Crash for resonant zero-width particles ** Ticket #341: Varying scale for BSM processes The scale used is now ResonantProcessConstructor:ScaleFactor or TwoToTwoProcessConstructor:ScaleFactor multiplied by sHat. ** Ticket #346: Chargino decays Chargino decayers now automatically switch between the mesonic decays for mass differences less than 2 GeV and the normal partonic decays above 2 GeV. ** Ticket #349: Stop by default on input file errors The '--exitonerror' flag is now the default behaviour for the Herwig++ binary. To switch back to the old behaviour, '--noexitonerror' is required. ** Ticket #351: Four-body stop decays ** Tested with gcc-4.6 * Herwig++-2.5.0 release: 2011-02-08 (tagged at SVN r6274) ** Uses ThePEG-1.7.0 Herwig++ 2.5.0 requires ThePEG 1.7.0 to benefit from various improvements, particularly: handling of diffractive processes; respecting LD_LIBRARY_PATH when loading dynamic libraries, including LHAPDF; improvements to repository commands for decay modes. See ThePEG's NEWS file for more details. ** POWHEG improvements *** New POWHEG processes Simulation at NLO accuracy using the POWHEG method is now available for hadronic diboson production (pp to WW,WZ,ZZ), Higgs decays to heavy quarks, and e+e- to two jets or ttbar, including full mass dependence. *** Input file changes The input files for setting up POWHEG process simulation have been simplified. See the example files LHC-Powheg.in and TVT-Powheg.in for the improved command list. *** Structural changes The POWHEG backend in the shower code has been restructured to make future additions easier: PowhegEvolver has merged with Evolver; both the matrix element corrections and real corrections in the POWHEG scheme are implemented directly in the ME or Decayer classes. ** New processes at leading order *** Photon initiated processes We have added a matrix element for dijet production in gamma hadron collisions. *** Bottom and charm in heavy quark ME The option of bottom and charm quarks is now supported for heavy quark production in MEHeavyQuark. ** Colour reconnection The cluster hadronization model has been extended by an option to reconnect coloured constituents between clusters with a given probability. This new model is different from the colour reconnection model used in FORTRAN HERWIG, and improves the description of minimum bias and underlying event data. ** Diffractive Processes Both single and double diffractive processes are now supported in Herwig++. The Pomeron PDF is implemented using a fit to HERA data, and a pion PDF can be used to model reggeon flux. ** BSM physics *** New models We have added new BSM models, particularly ADD-type extra dimension models and the next-to-minimal supersymmetric standard model (NMSSM). Effects of leptoquarks can as well be simulated. *** Vertex additions We have added flavour changing stop interactions (stop - neutralino - charm) and gravitino interactions with particular emphasis on numerical stability for very light gravitinos. Tri-linear Higgs and Higgs-Higgs/Vector-Vector four-vertices are available as well. *** Input file changes The SUSY model can now also extract the SLHA information from the header of a Les Houches event file: replace the SLHA file name in the example input files with the LH file name. *** Structure The backend structure of the HardProcessConstructor has changed, to allow easier inclusion of new process constructors. Some 2->3 BSM scattering processes involving neutral higgs bosons are now included. The spin handling has been improved in the background. ** Shower splitting code reorganized The selection of spin structures has been decoupled from the choice of colour structure. This gives more flexibility in implementing new splittings. Selected splittings can be disabled in the input files. ** B mixing B mixing, and indirect CP violation in the B meson system are included now. ** Looptools The Looptools directory has been updated to reflect T.Hahn's Looptools 2.6. ** Contrib changes The ROOT interface has been removed as deprecated. The MCPWNLO code has temporarily been removed from the Contrib directory as a major review of this code is required. Additionally, there are various fixes to all other codes shipped in Contrib. ** DIS improvements The momentum reshuffling in DIS events has been improved. ** mu and nu beams mu, nu_e and nu_mu and their antiparticles are now available as beam particles. They are all supported in the DIS matrix elements. mu+ mu- collisions are supported in the general matrix element code for BSM models, but not yet in the hard-coded matrix elements for lepton-lepton scattering. ** Structural changes *** Inline code Inline code has been merged into the header files, .icc files were removed. *** Silent build By default, Herwig++ now builds with silent build rules. To get the old behaviour, run 'make V=1'. *** Debug level The debug level on the command line will now always have priority. *** Event counter The event counter has been simplified. *** Interpolator persistency Interpolators can now be written persistently. ** Ticket #307: Momentum violation check in BasicConsistency Added parameters AbsoluteMomentumTolerance and RelativeMomentumTolerance ** Example POWHEG input files The example input files for Powheg processes now set the NLO alpha_S correctly, and are run as part of 'make check'. ** Truncated shower A problem which lead to the truncated shower not being applied in some cases has been fixed. ** Fixes to numerical problems Minor problems with values close to zero were fixed in several locations. ** Remove duplicated calculation of event shapes An accidental duplication in the calculation of event shapes was removed, they are now only calculated once per event. Several other minor issues in the event shape calculations have also been fixed. ** MRST PDFs fixed An initialization problem in the internal MRST PDFs was fixed. ** Vertex scale choice The scale in the Vertex classes can now be zero where possible. ** Treatment of -N flag The Herwig++ main program now correctly treats the -N flag as optional. ** Numerical stability improved The numerical stability in the 'RunningMass' and 'QTildeReconstructor' classes has been improved. The stability of the boosts in the SOPTHY code for the simulation of QED radiation has been improved. The accuracy of boosts in the z-direction has been improved to fix problems with extremely high p_T partons. ** Bugfix in initial state splittings A bug in the implementation of the PDF weight in initial-state qbar -> qbar g splittings has been fixed. ** Bugfix in chargino neutralino vertices A bug in the 'chi+- chi0 W-+' and charged Higgs-sfermions vertices has been fixed. ** Remove uninitialized variables written to repository A number of uninitialised variables which were written to the repository have been initialised to zero to avoid problems on some systems. ** Fix to QED radiation in hadronic collisions The longitudinal boost of the centre-of-mass frame in hadronic collisions is correctly accounted for now in the generation of QED radiation. ** Fix to numerical problems in two-body decays Numerical problems have been fixed, which appeared in the rare case that the three-momenta of the decay products in two-body decays are zero in the rest frame of the decay particle. ** A problem with forced splittings in the Remnant was fixed. ** ME correction for W+- decays applied properly The matrix element correction for QCD radiation in W+- decays which was not being applied is now correctly used. ** Top quark decays from SLHA file The presence of top quark decay modes in SLHA files is now handled correctly. ** Exceptional shower reconstruction kinematics Additional protection against problems due to the shower reconstruction leading to partons with x>1 has been added. ** Ordering of particles in BSM processes Changes have been made to allow arbitrary ordering of the outgoing particles in BSM processes. ** Bugfixes in tau decays Two bugs involving tau decays have been fixed. The wrong masses were used in the 'KPiCurrent' class for the scalar form factors and a mistake in the selection of decay products lead to tau- --> pi0 K- being generated instead of tau- --> eta K-. ** Avoid crashes in baryon number violating processes. To avoid crashes, better protection has been introduced for the case where diquarks cannot be formed from the quarks in a baryon-number violating process. In addition, the parents of the baryon-number violating clusters have been changed to avoid problems with the conversion of the events to HepMC. ** QED radiation in W- decays A bug in the 'QEDRadiationHandler' class which resulted in no QED radiation being generated in W- decays has been fixed. ** A number of minor fixes to the SUSY models have been made. ** Partial width calculations in BSM models A fix for the direction of the incoming particle in the calculation of two-body partial widths in BSM models has been made. ** LoopTools improvements The LoopTools cache is now cleared more frequently to reduce the amount of memory used by the particle. ** Negative gluino masses are now correctly handled. ** A problem with mixing matrices which are not square has been fixed. ** Removed duplicate diagram The 'MEee2gZ2ll' class has been fixed to only include the photon exchange diagram once rather than twice as previously. ** Fix for duplicate particles in DecayConstructor A problem has been fixed which occurred if the same particle was included in the list of DecayConstructor:DecayParticles. ** Fixes for UED model vertices A number of minor problems in the vertices for the UED model have been fixed. ** Include missing symmetry factor The missing identical-particle symmetry factor in 'MEPP2GammaGamma' has been included. ** Fix floating point problem in top decays A floating point problem in the matrix element correction for top decays has been fixed. * Herwig++-2.4.2 release: 2009-12-11 (tagged at SVN r5022) ** Ticket #292: Tau decay numerical instability The momentum assignment in tau decays contained numerical instabilities which have been fixed by postponing the tau decay until after the parton shower. A new interface setting DecayHandler:Excluded is available to prevent decays in the shower step. This is enabled by default for tau only. ** Ticket #290: Missing MSSM colour structure The missing colour structure for gluino -> gluon neutralino was added. ** Ticket #294: Zero momentum in some decays Some rare phase space points lead to zero momentum in two-body decays. This has been fixed. ** Ticket #295: Stability of QED radiation for lepton collider processes The numerical stability of QED radiation momenta was improved further. ** Ticket #296: K0 oscillation vertex was wrong The oscillation from K0 to K0_L/S now takes place at the production vertex of K0. ** Ticket #289: Undefined variables in repository On some system configurations, undefined variables were written to the repository. These have been fixed. ** Fixed QED radiation for hadron processes The longitudinal boost of the centre-of-mass frame in hadronic collisions is correctly accounted for now. ** Numerical stability fixes Small fixes in RunningMass and QTildeReconstructor. ** Powheg example input files The example input files for Powheg processes now set the NLO alpha_S correctly, and are run as part of 'make check'. ** OS X builds for Snow Leopard Snow Leopard machines will now be recognized as a 64bit architecture. * Herwig++-2.4.1 release: 2009-11-19 (tagged at SVN r4932) ** Uses ThePEG-1.6.0 Herwig++ now requires ThePEG-1.6.0 to benefit from the improved helicity code there. If you have self-written vertex classes, see ThePEG's NEWS file for conversion instructions. ** Vertex improvements ThePEG's new helicity code allowed major simplification of the vertex implementations for all Standard Model and BSM physics models. ** New Transplanckian scattering model An example configuration is in LHC-TRP.in ** BSM ModelGenerator as branching ratio calculator The BSM ModelGenerator has a new switch to output the branching ratios for a given SLHA file in SLHA format, which can then be used elsewhere. ** BSM debugging: HardProcessConstructor New interface 'Excluded' to exclude certain particles from intermediate lines. ** Chargino-Neutralino-W vertex fixed ** Spin correlations are now switched on by default for all perturbative decays. ** Ticket #276: Scale choice in BSM models' HardProcessConstructor New interface 'ScaleChoice' to choose process scale between - sHat (default for colour neutral intermediates) and - transverse mass (default for all other processes). ** Ticket #287: Powheg process scale choice The default choice is now the mass of the colour-singlet system. ** Ticket #278: QED radiation for BSM Soft QED radiation is now enabled in BSM decays and all perturbative decays by default. ** Ticket #279: Full 1-loop QED radiation for Z decays Soft QED radiation in Z decays is now fully 1-loop by default. ** Ticket #280: Redirect all files to stdout This is now implemented globally. The files previously ending in -UE.out and -BSMinfo.out are now appended to the log file. They now also obey the EventGenerator:UseStdout flag. ** Ticket #270: LaTeX output updated After each run, a LaTeX file is produced that contains the full list of citations. Please include the relevant ones in publications. ** Ticket #256: Mac OS X problems An initialization problem that affected only some configurations has been identified and fixed. ** Tests directory added This contains many .in files, to exercise most matrix elements. ** Minor fixes *** Prevent rare x>1 partons in shower reconstruction. *** SUSY-LHA parameter EXTPAR can be used to set tan beta *** Improved Fastjet detection at configure time * Herwig++-2.4.0 release: 2009-09-01 (tagged at SVN r4616) ** New matrix elements We have added a built-in implementation of several new matrix elements: PP --> WW / WZ / ZZ PP --> W gamma / Z gamma PP --> VBF Higgs PP --> Higgs tt / Higgs bb e+e- --> WW / ZZ gamma gamma --> ff / WW ** Base code improvements *** Ticket #257: Remnant handling A problem with forced splittings in the Remnant was fixed. *** Ticket #264: Soft matrix element correction A problem with emissions form antiquarks was fixed. ** PDF sets *** New default set MRST LO** is the new default PDF set. LO* is also available built-in. *** Shower PDFs can be set separately from the hard process Use the 'ShowerHandler:PDF' interface. ** Parameter tunes Shower, hadronization and underlying event parameters were retuned against LEP and Tevatron data respectively. ** BSM module improvements *** Ticket #259: read error for some UED models Arbitrary ordering of outgoing lines in the process description is now possible. *** Ticket #266: branching ratio sums The warning threshold for branching ratios not summing to 1 has been relaxed. It is now a user interface parameter. *** Ticket #267: Top decay modes Top decay modes listed in SLHA files are now handled correctly. ** QED radiation *** Ticket #241: Soft QED radiation is now enabled by default *** Ticket #265: Radiation off W+ and W- is now handled correctly ** Interfaces *** Ticket #243: Fastjet Fastjet is now the only supported jet finder code. All example analyses have been converted to use Fastjet. *** KtJet and CLHEP interfaces have been removed. *** New interfaces to AcerDet and PGS available in Contrib *** MCPWnlo distributed in Contrib *** HepMC and Rivet interfaces moved to ThePEG ** Ticket #239: Inelastic cross-section for MinBias This information is now available in the ...-UE.out files. ** Technical changes *** Ticket #186 Configure now looks for ThePEG in the --prefix location first. *** Configure information Important configuration information is listed at the end of the 'configure' run and in the file 'config.thepeg'. Please provide this file in any bug reports. *** New ZERO object The ZERO object can be used to set any dimensionful quantity to zero. This avoids explicit constructs like 0.0*GeV. *** Exception specifiers removed Client code changes are needed in doinit() etc., simply remove the exception specifier after the function name. *** Ticket #263: Tau polarizations can be forced in TauDecayer * Herwig++-2.3.2 release: 2009-05-08 (tagged at SVN r4249) ** SUSY enhancements *** Ticket #245: Select inclusive / exclusive production Using the new 'HardProcessConstructor:Processes' switch options 'SingleParticleInclusive', 'TwoParticleInclusive' or 'Exclusive' *** Improved three-body decay generation Several problems were fixed, incl. tickets #249 #250 #251 Thanks to J.Tattersall and K.Rolbiecki for the stress-testing! *** Looptools fix Release 2.3.1 had broken the Looptools initialization. *** Improved warning message texts ** Ticket #237: Values of q2last can now be zero where possible. ** Ticket #240: The Herwig++ main program now correctly treats the -N flag as optional. ** Ticket #246: Extreme pT partons fixed by improving accuracy of z boosts. ** DIS Improved parton shower momentum reshuffling. ** Minimum Bias events The zero-momentum interacting particle used for bookkeeping is now labelled as a pomeron. ** User Makefile Makefile-UserModules does not enable -pedantic anymore. User's ROOT code will not compile otherwise. ** Build system Small fixes in the build system. * Herwig++-2.3.1 release: 2009-03-31 (tagged at SVN r4140) ** Initial state showers The PDF veto was wrongly applied to qbar->qbar g splittings. ** User interaction The Makefile-UserModules now includes the Herwig version number. The -N flag to 'Herwig++ run' is optional now, as was always intended. ** Contrib The contrib directory is now included in the tarball. The omission was accidental. ** Numerical accuracy Minor problems with values close to zero were fixed in several locations. ** LEP event shapes An accidental duplication was removed, they are now only calculated once per event. ** MRST PDF code Initialization problem fixed. ** Mac OS X The configure script was improved to detect libraries better. ** Libtool Updated to version 2.2.6 * Herwig++-2.3.0 release: 2008-12-02 (tagged at SVN r3939) ** Major release, with many new features and bug fixes ** Extension to lepton-hadron collisions ** Inclusion of several processes accurate at next-to-leading order in the POsitive Weight Hardest Emission Generator (POWHEG) scheme ** Inclusion of three-body decays and finite-width effects in BSM processes ** New procedure for reconstructing kinematics of the parton shower based on the colour structure of the hard scattering process ** New model for baryon decays including excited baryon multiplets ** Addition of a soft component to the multiple scattering model of the underlying event and the option to choose more than one hard scattering explicitly ** New matrix elements for DIS and e+e- processes ** New /Contrib directory added containing external modules that will hopefully be of use to some users but are not expected to be needed by most users and are not supported at the same level as the main Herwig++ code ** Minor changes to improve the physics simulation: *** IncomingPhotonEvolver added to allow the simulation of partonic processes with incoming photons in hadron collisions *** KTRapidityCut added to allow cuts on the p_T and rapidity, rather than just the p_T and pseudorapidity used in SimpleKTCut. This is now used by default for cuts on massive particles such as the $W^\pm$, $Z^0$ and Higgs bosons and the top quark *** Several changes to the decayers of B mesons both to resolve problems with the modelling of partonic decays and improve agreement with $\Upsilon(4s)$ data *** Changes to allow values other than transverse mass of final-state particles as maximum transverse momentum for radiation in parton shower either SCALUP for Les Houches events or the scale of the hard process for internally generated hard processes *** Changed defaults for intrinsic transverse momentum in hadron collisions to 1.9GeV, 2.1GeV and 2.2GeV for the Tevatron and LHC at 10 TeV and 14 TeV, respectively *** Pdfinfo object is now created in the HepMC interface However in order to support all versions of HepMC containing this feature the PDF set is not specified as not all versions contain this information *** New option of only decaying particles with lifetimes below user specified value *** New options for the cut-off in the shower and some obsolete parameters removed *** Added option of switching off certain decay modes in BSM models *** Added a Matcher for Higgs boson to allow cuts to be placed on it *** Diffractive particles deleted from default input files they were not previously used ** Technical changes: *** Some AnalysisHandler classes comparing to LEP data have been renamed e.g. MultiplicityCount becomes LEPMultiplicityCount to avoid confusion with those supplied in /Contrib for observables at the Upsilon(4s) resonance *** Reorganisation to remove the majority of the .icc files by moving inlined functions to headers in an effort to improve compile time *** Restructured the decay libraries to reduce the amount of memory allocation and de-allocation which improves run-time performance *** The switch to turn off LoopTools has been removed because LoopTools is now used by several core modules. As LoopTools does not work on 64-bit platforms with g77 this build option is not supported *** Removed support for obsolete version of HepMC supplied with CLHEP and improved the support for different units options with HepMC *** EvtGen interface has been removed until it is more stable *** Support for ROOT has been removed it was not previously used *** CKKW infrastructure has been removed from the release until a concrete implementation is available *** Default optimisation has been increased from -O2 to -O3 *** Handling of the fortran compiler has been improved mainly due to improvements in the autotools *** Use of FixedAllocator for Particle objects in ThePEG has been removed as it had no performance benefits ** Bugs fixed: *** Problems with the mother/daughter relations in the hard process and diagram selection in W+- and Z0 production in association with a hard jet *** In general matrix element code for fermion-vector to fermion-scalar where the outgoing fermion is coloured and the scalar neutral *** In the selection of diagrams in some associated squark gaugino processes *** h0->mu+mu- was being generated when h0->tau+tau- *** Normalisation in the Histogram class for non unit-weight events *** Protection against negative PDF values has been improved these can occur when using NLO PDF sets *** Lifetime for BSM particles is now automatically calculated at the same time as the width *** Hadrons containing a top quark now treated like hadrons containing BSM particles in order to support this possibility *** Several ambiguous uses of unsigned int *** Several variables that may have been used undefined *** Several memory leaks at initialisation *** The configuration now aborts if no fortran compiler is found as this is required to compile Looptools *** Several minor floating point errors that did not affect results * Herwig++-2.2.1 release: 2008-07-09 (tagged at SVN r3434) ** Ticket #181: BSM shower with a decay close to threshold Now fixed. ** Ticket #191: Split SUSY crash Improved error message. ** Ticket #192: using SCALUP as the pT veto in the shower Now implemented. ** Ticket #194: production processes of ~chi_1(2)- Fixed bug in the diagram creation. ** Removed unused particles DiffractiveParticles.in was removed, they were never produced. ** Hadronization Top quark clusters now possible, handled as 'exotic' clusters. ** Improved handling of decay modes See ThePEG-1.3.0. 'defaultparticle' command is now obsolete. ** Multi-Parton interactions Increased phase space sampling to have less than 1% uncertainty on average multiplicity. ** New libtool version gfortran is now used as default if it is available. Set FC=g77 to override this. ** Fixed several memory leaks ** Memory allocation Now using plain 'new' and 'delete'. * Herwig++-2.2.0 release: 2008-04-18 (tagged at SVN r3195) ** Major release: now as stand-alone library Herwig++ is now a stand-alone dlopen() plugin to ThePEG. No compile-time linking to Herwig code is required. The Herwig++ binary is a simple executable steering ThePEG, which can be replaced by other frontends (such as setupThePEG / runThePEG). ** New matrix elements p p -> W + jet / Z + jet / W + higgs / Z + higgs e+ e- -> Z + higgs ** Looptools Updated to version 2.2. ** Ticket #141: segfault from using 'run' command Fixed by using default allocators in Herwig++, and the Repository::cleanup() method in ThePEG 1.2.0. ** Ticket #157: broken gsl library path on some 64bit systems Paths with lib64 are correctly identified now. ** Ticket #159: p_t spectrum of ttbar pair Fixed identical particle multiplier in Sudakov form factor. ** Ticket #161: glibc segfault Rare segfault in MPI handler fixed. ** Ticket #165: rare infinite loop in four-body decay All 4-body decays without dedicated decayers now use the Mambo algorithm. A loop guard has been introduced to 3-body decays to avoid infinite retries. ** Ticket #166: rare infinite loop in top ME correction These very rare events (O(1) in 10^7) close to mass threshold now are discarded. ** Higgs width fixes ** SatPDF Optionally, the PDF extrapolation behaviour outside a given range can now be specified. ** gcc 4.3 Herwig++-2.2 compiles cleanly with the new gcc 4.3 series. * Herwig++-2.1.4 release: 2008-03-03 (tagged at SVN r3024) ** Ticket #152: Vertex positions All vertex positions of unphysical particles are set to zero until a fix for the previous nonsensical values can be implemented. * Herwig++-2.1.3 release: 2008-02-25 (tagged at SVN r2957) ** Ticket #129: Baryon decays Fix for baryon decay modes. ** Ticket #131: HepMC Check if IO_GenEvent exists ** Ticket #134: Hadronization Smearing of hadron directions in cluster decay fixed. ** Ticket #137: HepMC HepMC conversion allows specification of energy and length units to be used. ** Ticket #139: Neutral kaons Ratio K_L / K_S corrected. ** Ticket #140 / #141: Crash on shutdown Event generation from the 'read' stage or an interface now shuts down cleanly. Fixes a crash bug introduced in 2.1.1 which affected external APIs to ThePEG / Herwig. ** Ticket #146: BSM models can be disabled To save build time, some or all of the BSM models can be disabled using the '--enable-models' configure switch. ** Reorganised .model files The .model files now include the model-specific particles, too. ** Re-tune Re-tuned hadronization parameters to LEP data. ** Other fixes in QSPAC implementation in Shower; Multi-parton interaction tuning; MRST initialization * Herwig++-2.1.2 release: 2008-01-05 (tagged at SVN r2694) ** Ticket #127 Thanks to a patch submitted by Fred Stober, HepMCFile now can output event files in all supported formats. ** Ticket #128 Fixed incorrect value of pi in histogram limits. ** Other fixes in CKKW Qtilde clusterers, BSM width cut, SUSY mixing matrices. * Herwig++-2.1.1 release: 2007-12-08 (tagged at SVN r2589) ** Bug #123 Fixed a bug with particle lifetimes which resulted in nan for some vertex positions. ** Secondary scatters Fixed bug which gave intrinsic pT to secondary scatters. ** gcc abs bug detection configure now checks for and works around http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34130 ** CKKW reweighting Fixed wrong check for top quarks. ** MPIHandler Fixed call order ambiguity. * Herwig++-2.1.0 release: 2007-11-20 (tagged at SVN r2542) ** Major new release Herwig++-2.1 includes significant improvements, including multi-parton interactions, BSM physics and a new hadronic decay model, tuned to LEP data. For an overview of the changes, please see the release note arXiv:0711.3137 * Herwig++-2.0.3 release: 2007-08-21 (tagged at SVN r2101) ** Bug #90 nan in top decay ME corrections fixed. ** unlisted Colour flow fix in LightClusterDecayer ** unlisted Updated version of MultiplicityCount analysis handler. * Herwig++-2.0.2 release: 2007-07-06 (tagged at SVN r1716) ** Bug #80 Separation of HepMC from CLHEP is handled properly now. ** Bug #83 Workaround for OS X header problem ** unlisted Veto on very hard emissions from Shower. ** unlisted Detailed documentation in .in files * Herwig++-2.0.1 release: 2006-12-05 (tagged at SVN r1195) ** Bug #54 ClusterFissioner vertex calculation fixed. ** Bug #57 Crash when showering W+jet events supplied by Les Houches interface. ** Bug #59 Fix for #57 applied to LHC events. ** Bug #60 Segfault when PDF is set to NoPDF. ** Bug #61 Missing weight factor for I=0 mesons ** Bug #62 Spinor vertex calculations broken when spinor rep is not default rep. ** Bug #63 Top decay never produces tau. ** Bug #69 TTbar and HiggsJet analysis handlers fixed. ** unlisted Reorganization of Hadronization module gives 30% speedup. Thanks to Vincenzo Innocente at CMS for his profiling work! ** unlisted cleaner automake files in include/ and src/ ** unlisted Hw64 hadron selection algorithm 'abortnow' fixed. ** unlisted Top/LeptonDalitzAnalysis removed (only worked with modified code). ** unlisted removed f'_0 from particle list, decays were not handled * Herwig++-2.0.0 release: 2006-09-28 (tagged at SVN r1066) ** Full simulation of hadron collisions herwig++-2.6.0.orig/lib/0000755000175000017500000000000011756464211015530 5ustar sylvestresylvestreherwig++-2.6.0.orig/lib/Makefile.in0000644000175000017500000004343611756461702017611 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = lib DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) am__DEPENDENCIES_1 = Herwig_la_DEPENDENCIES = \ $(top_builddir)/Hadronization/libHwHadronization.la \ $(top_builddir)/Models/StandardModel/libHwStandardModel.la \ $(top_builddir)/Decay/libHwDecay.la \ $(top_builddir)/Decay/FormFactors/libHwFormFactor.la \ $(top_builddir)/Decay/Radiation/libHwDecRad.la \ $(top_builddir)/Utilities/libHwUtils.la \ $(top_builddir)/Models/General/libHwModelGenerator.la \ $(top_builddir)/Decay/General/libHwGeneralDecay.la \ $(top_builddir)/MatrixElement/General/libHwGeneralME.la \ $(top_builddir)/MatrixElement/libHwME.la \ $(top_builddir)/Decay/WeakCurrents/libHwWeakCurrent.la \ $(top_builddir)/Looptools/libHwLooptools.la \ $(top_builddir)/Shower/libHwShower.la $(am__DEPENDENCIES_1) am_Herwig_la_OBJECTS = Herwig_la_OBJECTS = $(am_Herwig_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent Herwig_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(Herwig_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(Herwig_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(Herwig_la_SOURCES) DIST_SOURCES = $(Herwig_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = Herwig.la Herwig_la_SOURCES = Herwig_la_LIBTOOLFLAGS = --tag=CXX Herwig_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 11:0:0 \ $(THEPEGLDFLAGS) $(FCLIBS) Herwig_la_LIBADD = \ $(top_builddir)/Hadronization/libHwHadronization.la \ $(top_builddir)/Models/StandardModel/libHwStandardModel.la \ $(top_builddir)/Decay/libHwDecay.la \ $(top_builddir)/Decay/FormFactors/libHwFormFactor.la \ $(top_builddir)/Decay/Radiation/libHwDecRad.la \ $(top_builddir)/Utilities/libHwUtils.la \ $(top_builddir)/Models/General/libHwModelGenerator.la \ $(top_builddir)/Decay/General/libHwGeneralDecay.la \ $(top_builddir)/MatrixElement/General/libHwGeneralME.la \ $(top_builddir)/MatrixElement/libHwME.la \ $(top_builddir)/Decay/WeakCurrents/libHwWeakCurrent.la \ $(top_builddir)/Looptools/libHwLooptools.la \ $(top_builddir)/Shower/libHwShower.la \ $(THEPEGLIB) -ldl all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } Herwig.la: $(Herwig_la_OBJECTS) $(Herwig_la_DEPENDENCIES) $(EXTRA_Herwig_la_DEPENDENCIES) $(AM_V_CCLD)$(Herwig_la_LINK) -rpath $(pkglibdir) $(Herwig_la_OBJECTS) $(Herwig_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) all-local installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local \ clean-pkglibLTLIBRARIES mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local clean-pkglibLTLIBRARIES distclean \ distclean-compile distclean-generic distclean-libtool distdir \ dvi dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-pkglibLTLIBRARIES install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES all-local: done-all-links done-all-links: Herwig.la if test ! -L Herwig++ ; then $(LN_S) -f . Herwig++ ; fi find $(top_builddir) \( -name '*.so.*' -or -name '*.so' \) \ -not -name 'lib*' -not -path '$(top_builddir)/lib/*' -exec $(LN_S) -f \{\} \; $(LN_S) -f .libs/Herwig*so* . echo "stamp" > done-all-links clean-local: rm -f *.so *.so.* done-all-links # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/lib/Makefile.am0000644000175000017500000000234111755413677017575 0ustar sylvestresylvestrepkglib_LTLIBRARIES = Herwig.la Herwig_la_SOURCES = Herwig_la_LIBTOOLFLAGS = --tag=CXX Herwig_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 11:0:0 Herwig_la_LDFLAGS += $(THEPEGLDFLAGS) $(FCLIBS) Herwig_la_LIBADD = \ $(top_builddir)/Hadronization/libHwHadronization.la \ $(top_builddir)/Models/StandardModel/libHwStandardModel.la \ $(top_builddir)/Decay/libHwDecay.la \ $(top_builddir)/Decay/FormFactors/libHwFormFactor.la \ $(top_builddir)/Decay/Radiation/libHwDecRad.la \ $(top_builddir)/Utilities/libHwUtils.la \ $(top_builddir)/Models/General/libHwModelGenerator.la \ $(top_builddir)/Decay/General/libHwGeneralDecay.la \ $(top_builddir)/MatrixElement/General/libHwGeneralME.la \ $(top_builddir)/MatrixElement/libHwME.la \ $(top_builddir)/Decay/WeakCurrents/libHwWeakCurrent.la \ $(top_builddir)/Looptools/libHwLooptools.la \ $(top_builddir)/Shower/libHwShower.la \ $(THEPEGLIB) -ldl all-local: done-all-links done-all-links: Herwig.la if test ! -L Herwig++ ; then $(LN_S) -f . Herwig++ ; fi find $(top_builddir) \( -name '*.so.*' -or -name '*.so' \) \ -not -name 'lib*' -not -path '$(top_builddir)/lib/*' -exec $(LN_S) -f \{\} \; $(LN_S) -f .libs/Herwig*so* . echo "stamp" > done-all-links clean-local: rm -f *.so *.so.* done-all-links herwig++-2.6.0.orig/lib/README0000644000175000017500000000012611754474775016425 0ustar sylvestresylvestreThis directory will contain symbolic links to all the libraries created by Herwig++. herwig++-2.6.0.orig/include/0000755000175000017500000000000011756464203016406 5ustar sylvestresylvestreherwig++-2.6.0.orig/include/Makefile.in0000644000175000017500000003173411756461702020464 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = include DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ BUILT_SOURCES = done-all-links AUTOMAKE_OPTIONS = -Wno-portability DIRLINKS = $(top_srcdir)/Analysis \ $(top_srcdir)/Decay \ $(top_srcdir)/Hadronization \ $(top_srcdir)/MatrixElement \ $(top_srcdir)/Models \ $(top_srcdir)/PDF \ $(top_srcdir)/PDT \ $(top_srcdir)/Shower \ $(top_srcdir)/DipoleShower \ $(top_srcdir)/Exsample2 \ $(top_srcdir)/UnderlyingEvent \ $(top_srcdir)/Utilities LOOPTOOLHEADERS = $(top_srcdir)/Looptools/include/clooptools.h CLEANFILES = done-all-links all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu include/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile installdirs: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local .MAKE: all check install install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ clean-local distclean distclean-generic distclean-libtool \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-data-local \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-local done-all-links: $(DIRLINKS) $(LOOPTOOLHEADERS) mkdir -p Herwig++/Config Herwig++/Looptools $(LN_S) -f $(addprefix ../, $(DIRLINKS)) Herwig++ $(LN_S) -f $(addprefix ../../, $(LOOPTOOLHEADERS)) Herwig++/Looptools touch done-all-links install-data-local: find Herwig++ -follow \( -name '*.h' -or -name '*.icc' \ -or -name '*.tcc' -or -name '*.fh' -or -name '*.xh' \) \ -exec $(install_sh_DATA) \{\} $(DESTDIR)$(includedir)/\{\} \; uninstall-local: rm -rf $(DESTDIR)$(includedir)/Herwig++ clean-local: rm -rf Herwig++ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/include/Makefile.am0000644000175000017500000000215011754474773020453 0ustar sylvestresylvestreBUILT_SOURCES = done-all-links AUTOMAKE_OPTIONS = -Wno-portability DIRLINKS = $(top_srcdir)/Analysis \ $(top_srcdir)/Decay \ $(top_srcdir)/Hadronization \ $(top_srcdir)/MatrixElement \ $(top_srcdir)/Models \ $(top_srcdir)/PDF \ $(top_srcdir)/PDT \ $(top_srcdir)/Shower \ $(top_srcdir)/DipoleShower \ $(top_srcdir)/Exsample2 \ $(top_srcdir)/UnderlyingEvent \ $(top_srcdir)/Utilities LOOPTOOLHEADERS = $(top_srcdir)/Looptools/include/clooptools.h CLEANFILES = done-all-links done-all-links: $(DIRLINKS) $(LOOPTOOLHEADERS) mkdir -p Herwig++/Config Herwig++/Looptools $(LN_S) -f $(addprefix ../, $(DIRLINKS)) Herwig++ $(LN_S) -f $(addprefix ../../, $(LOOPTOOLHEADERS)) Herwig++/Looptools touch done-all-links install-data-local: find Herwig++ -follow \( -name '*.h' -or -name '*.icc' \ -or -name '*.tcc' -or -name '*.fh' -or -name '*.xh' \) \ -exec $(install_sh_DATA) \{\} $(DESTDIR)$(includedir)/\{\} \; uninstall-local: rm -rf $(DESTDIR)$(includedir)/Herwig++ clean-local: rm -rf Herwig++ herwig++-2.6.0.orig/Looptools/0000755000175000017500000000000011756464211016754 5ustar sylvestresylvestreherwig++-2.6.0.orig/Looptools/C/0000755000175000017500000000000011756464211017136 5ustar sylvestresylvestreherwig++-2.6.0.orig/Looptools/C/Cget.F0000644000175000017500000001134411754474774020147 0ustar sylvestresylvestre* Cget.F * the three-point tensor coefficients * this file is part of LoopTools * improvements by M. Rauch * last modified 28 Sep 10 th #include "defs.h" integer function XCget(p1, p2, p1p2, m1, m2, m3) implicit none DVAR p1, p2, p1p2, m1, m2, m3 #include "lt.h" integer cachelookup external cachelookup, XCcoeff integer dummy DVAR dvardummy DVAR para(Pcc) para(1) = p1 para(2) = p2 para(3) = p1p2 para(4) = m1 if( abs(para(4)) .lt. minmass ) para(4) = 0 para(5) = m2 if( abs(para(5)) .lt. minmass ) para(5) = 0 para(6) = m3 if( abs(para(6)) .lt. minmass ) para(6) = 0 XCget = cachelookup(para, Cval(1,0), XCcoeff, RC*Pcc, Ncc) end ************************************************************************ double complex function XC0i(i, p1, p2, p1p2, m1, m2, m3) implicit none integer i DVAR p1, p2, p1p2, m1, m2, m3 #include "lt.h" integer XCget external XCget integer b b = XCget(p1, p2, p1p2, m1, m2, m3) XC0i = Cval(i,b) end ************************************************************************ subroutine XCcoeff(para, C, ldpara) implicit none integer ldpara DVAR para(ldpara,Pcc) double complex C(Ncc) #include "lt.h" integer XBget double complex XC0 external XBget, XC0 DVAR p1, p2, p1p2, m1, m2, m3 DVAR f1, f2 QVAR G(2,2) double complex bsum, b1sum, b00sum, b11sum, in(2) integer B12, B23, B13 logical dump #ifdef SOLVE_EIGEN QVAR Ginv(2,2) #define SOLVE_SETUP XInverse(2, G,2, Ginv,2) #define SOLVE(b) XSolve(2, G,2, Ginv,2, b) #else integer perm(2) #define IN(i) in(perm(i)) #define SOLVE_SETUP XDecomp(2, G,2, perm) #define SOLVE(b) XSolve(2, G,2, b) #endif #ifdef COMPLEXPARA if( abs(DIMAG(para(1,1))) + & abs(DIMAG(para(1,2))) + & abs(DIMAG(para(1,3))) .gt. 0 ) & print *, "Warning: complex momenta not implemented" if( abs(DIMAG(para(1,4))) + & abs(DIMAG(para(1,5))) + & abs(DIMAG(para(1,6))) .eq. 0 ) then call Ccoeff(para, C, 2) return endif #endif p1 = para(1,1) p2 = para(1,2) p1p2 = para(1,3) m1 = para(1,4) m2 = para(1,5) m3 = para(1,6) B12 = XBget(p1, m1, m2) B23 = XBget(p2, m2, m3) B13 = XBget(p1p2, m1, m3) serial = serial + 1 dump = ibits(debugkey, DebugC, 1) .ne. 0 .and. & serial .ge. debugfrom .and. serial .le. debugto if( dump ) call XDumpPara(3, para, ldpara, "Ccoeff") f1 = QPREC(m2) - QPREC(m1) - QPREC(p1) f2 = QPREC(m3) - QPREC(m1) - QPREC(p1p2) G(1,1) = 2*QPREC(p1) G(2,2) = 2*QPREC(p1p2) G(1,2) = QPREC(p1) + QPREC(p1p2) - QPREC(p2) G(2,1) = G(1,2) call SOLVE_SETUP bsum = Bval(bb0,B23) + Bval(bb1,B23) b1sum = Bval(bb1,B23) + Bval(bb11,B23) b00sum = Bval(bb00,B23) + Bval(bb001,B23) b11sum = Bval(bb11,B23) + Bval(bb111,B23) C(cc0) = XC0(p1, p2, p1p2, m1, m2, m3) IN(1) = f1*C(cc0) - Bval(bb0,B23) + Bval(bb0,B13) IN(2) = f2*C(cc0) - Bval(bb0,B23) + Bval(bb0,B12) call SOLVE(in) C(cc1) = in(1) C(cc2) = in(2) C(cc00) = .5D0*(m1*C(cc0) - & .5D0*(f1*C(cc1) + f2*C(cc2) - Bval(bb0,B23) - 1)) IN(1) = f1*C(cc1) + bsum - 2*C(cc00) IN(2) = f2*C(cc1) + bsum + Bval(bb1,B12) call SOLVE(in) C(cc11) = in(1) C(cc12) = in(2) IN(1) = f1*C(cc2) - Bval(bb1,B23) + Bval(bb1,B13) IN(2) = f2*C(cc2) - Bval(bb1,B23) - 2*C(cc00) call SOLVE(in) C(cc12) = .5D0*(C(cc12) + in(1)) C(cc22) = in(2) C(cc001) = 1/3D0*(m1*C(cc1) - & .5D0*(f1*C(cc11) + f2*C(cc12) + bsum + 1/3D0)) C(cc002) = 1/3D0*(m1*C(cc2) - & .5D0*(f1*C(cc12) + f2*C(cc22) - Bval(bb1,B23) + 1/3D0)) bsum = bsum + b1sum IN(1) = f1*C(cc11) - bsum - 4*C(cc001) IN(2) = f2*C(cc11) - bsum + Bval(bb11,B12) call SOLVE(in) C(cc111) = in(1) C(cc112) = in(2) IN(1) = f1*C(cc22) - Bval(bb11,B23) + Bval(bb11,B13) IN(2) = f2*C(cc22) - Bval(bb11,B23) - 4*C(cc002) call SOLVE(in) C(cc122) = in(1) C(cc222) = in(2) C(cc0000) = 1/4D0*(m1*C(cc00) - & .5D0*(f1*C(cc001) + f2*C(cc002) - Bval(bb00,B23) - & (m1 + m2 + m3 - .25D0*(p1 + p2 + p1p2))/6D0)) IN(1) = f1*C(cc001) + b00sum - 2*C(cc0000) IN(2) = f2*C(cc001) + b00sum + Bval(bb001,B12) call SOLVE(in) C(cc0011) = in(1) C(cc0012) = in(2) IN(1) = f1*C(cc002) - Bval(bb001,B23) + Bval(bb001,B13) IN(2) = f2*C(cc002) - Bval(bb001,B23) - 2*C(cc0000) call SOLVE(in) C(cc0012) = .5D0*(C(cc0012) + in(1)) C(cc0022) = in(2) bsum = bsum + b1sum + b11sum IN(1) = f1*C(cc111) + bsum - 6*C(cc0011) IN(2) = f2*C(cc111) + bsum + Bval(bb111,B12) call SOLVE(in) C(cc1111) = in(1) C(cc1112) = in(2) IN(1) = f1*C(cc222) - Bval(bb111,B23) + Bval(bb111,B13) IN(2) = f2*C(cc222) - Bval(bb111,B23) - 6*C(cc0022) call SOLVE(in) C(cc1222) = in(1) C(cc2222) = in(2) IN(1) = f1*C(cc122) + b11sum - 2*C(cc0022) IN(2) = f2*C(cc122) + b11sum - 4*C(cc0012) call SOLVE(in) C(cc1122) = in(1) C(cc1222) = .5D0*(C(cc1222) + in(2)) if( dump ) call XDumpCoeff(3, C) end herwig++-2.6.0.orig/Looptools/C/ffxc0.F0000644000175000017500000004200211754474774020266 0ustar sylvestresylvestre#include "externals.h" * $Id: ffxc0.f,v 1.5 1996/08/15 09:36:47 gj Exp $ *###[ ffxc0: subroutine ffxc0(cc0,xpi,ier) ***#[*comment:*********************************************************** * * * Calculates the threepoint function closely following * * recipe in 't Hooft & Veltman, NP B(183) 1979. * * Bjorken and Drell metric is used nowadays! * * * * p2 | | * * v | * * / \ * * m2/ \m3 * * p1 / \ p3 * * -> / m1 \ <- * * ------------------------ * * * * 1 / 1 * * = ----- \d^4Q---------------------------------------- * * ipi^2 / [Q^2-m1^2][(Q+p1)^2-m2^2][(Q-p3)^2-m3^2] * * * * If the function is infra-red divergent (p1=m2,p3=m3,m1=0 or * * cyclic) the function is calculated with a user-supplied cutoff * * lambda in the common block /ffregul/. * * * * Input: xpi (real) i=1,3: mass^2, i=4,6: pi.pi * * Output: cc0 (complex) C0, the threepoint function. * * ier (integer) 0=ok, 1=inaccurate, 2=error * * Calls: ffxc0p,ffxb0p * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX cc0 DOUBLE PRECISION xpi(6) integer ier * * local variables: * integer i,j DOUBLE PRECISION dpipj(6,6) * * common blocks: * #include "ff.h" * #] declarations: * #[ special case: all momenta^2 = 0 * if (abs(xpi(4)) + abs(xpi(5)) + abs(xpi(6)) .lt. 1D-10) then call ffxc0p0(cc0, xpi) return endif * #[ convert input: do 40 i=1,6 do 39 j = 1,6 dpipj(j,i) = xpi(j) - xpi(i) 39 continue 40 continue * #] convert input: * #[ call ffxc0a: call ffxc0a(cc0,xpi,dpipj,ier) * #] call ffxc0a: *###] ffxc0: end *###[ ffxc0a: subroutine ffxc0a(cc0,xpi,dpipj,ier) ***#[*comment:*********************************************************** * * * See ffxc0. * * * * Input: xpi (real) i=1,3: mass^2, i=4,6: pi.pi * * dpipj (real) = xpi(i) - xpi(j) * * Output: cc0 (complex) C0, the threepoint function. * * ier (integer) 0=ok, 1=inaccurate, 2=error * * Calls: ffxc0p,ffxb0p * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX cc0 DOUBLE PRECISION xpi(6),dpipj(6,6) integer ier * * local variables: * logical ljust integer i,j,inew(6,6) * DOUBLE COMPLEX cs,cs1,cs2 DOUBLE PRECISION xqi(6),dqiqj(6,6),qiDqj(6,6),lambda0,dum66(6,6) save inew,lambda0 * * common blocks: * #include "ff.h" * * memory * integer iermem(memory),ialmem(memory),memind,ierini DOUBLE PRECISION xpimem(6,memory),dl2mem(memory) DOUBLE COMPLEX cc0mem(memory) save memind,iermem,ialmem,xpimem,dl2mem,cc0mem data memind /0/ * * data * data lambda0 /1.D0/ data inew /1,2,3,4,5,6, + 2,3,1,5,6,4, + 3,1,2,6,4,5, + 1,3,2,6,5,4, + 3,2,1,5,4,6, + 2,1,3,4,6,5/ * #] declarations: * #[ initialisations: if ( lmem .and. memind .eq. 0 ) then do 2 i=1,memory do 1 j=1,6 xpimem(j,i) = 0 1 continue ialmem(i) = 0 2 continue endif idsub = 0 ljust = .FALSE. * #] initialisations: * #[ handle special cases: * * The infrared divergent diagrams are calculated in ffxc0i: * if ( dpipj(2,4).eq.0 .and. dpipj(3,6).eq.0 .and. xpi(1).eq.0 + .or. dpipj(3,5).eq.0 .and. dpipj(1,4).eq.0 .and. xpi(2).eq.0 + .or. dpipj(1,6).eq.0 .and. dpipj(2,5).eq.0 .and. xpi(3).eq.0 ) + then call ffxc0i(cc0,xpi,dpipj,ier) return endif * #] handle special cases: * #[ rotate to alpha in (0,1): call ffrot3(irota3,xqi,dqiqj,qiDqj,xpi,dpipj,dum66,2,3,ier) * #] rotate to alpha in (0,1): * #[ look in memory: ierini = ier+ner if ( lmem .and. lambda .eq. lambda0 ) then do 70 i=1,memory do 60 j=1,6 if ( xqi(j) .ne. xpimem(j,i) ) goto 70 60 continue if ( ialmem(i) .ne. isgnal ) goto 70 * we found an already calculated mass combination .. * (maybe check differences as well) cc0 = cc0mem(i) ier = ier+iermem(i) if ( ldot ) then fdel2 = dl2mem(i) * we forgot to recalculate the stored quantities ljust = .TRUE. goto 71 endif return 70 continue elseif ( lmem ) then lambda0 = lambda endif 71 continue * #] look in memory: * #[ dot products: call ffdot3(qiDqj,xqi,dqiqj,6,ier) * * save dotproducts for tensor functions if requested * if ( ldot ) then do 75 i=1,6 do 74 j=1,6 fpij3(j,i) = qiDqj(inew(i,irota3),inew(j,irota3)) 74 continue 75 continue if ( irota3 .gt. 3 ) then * * the sign of the s's has been changed! * do 77 i=1,3 do 76 j=4,6 fpij3(j,i) = -fpij3(j,i) fpij3(i,j) = -fpij3(i,j) 76 continue 77 continue endif endif if ( ljust ) return * #] dot products: * #[ call ffxc0b: call ffxc0b(cc0,xqi,dqiqj,qiDqj,ier) * #] call ffxc0b: * #[ add to memory: if ( lmem ) then memind = memind + 1 if ( memind .gt. memory ) memind = 1 do 200 j=1,6 xpimem(j,memind) = xqi(j) 200 continue cc0mem(memind) = cc0 iermem(memind) = ier+ner-ierini ialmem(memind) = isgnal dl2mem(memind) = fdel2 endif * #] add to memory: *###] ffxc0a: end *###[ ffxc0b: subroutine ffxc0b(cc0,xqi,dqiqj,qiDqj,ier) ***#[*comment:*********************************************************** * * * See ffxc0. * * * * Input: xpi (real) i=1,3: mass^2, i=4,6: pi.pi * * dpipj (real) = xpi(i) - xpi(j) * * Output: cc0 (complex) C0, the threepoint function. * * ier (integer) 0=ok, 1=inaccurate, 2=error * * Calls: ffxc0p,ffxb0p * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX cc0 DOUBLE PRECISION xqi(6),dqiqj(6,6),qiDqj(6,6) integer ier * * local variables: * integer nerr parameter(nerr=6) integer isoort(8),ipi12(8),i,j,k,ipi12t,ilogi(3),ier0,ieri(nerr) DOUBLE COMPLEX cs3(80),cs,c,clogi(3),cslam,cetalm, + cetami(6),cel2s(3),calph(3),cblph(3),csdel2, + cqi(6),cdqiqj(6,6),cqiDqj(6,6),celpsi(3) DOUBLE PRECISION del2,del2s(3),del3,delpsi(3), + del3mi(3) DOUBLE PRECISION xmax,absc,alph(3),etalam,etami(6),sdel2, + blph(3) * * common blocks: * #include "ff.h" * * statement function: * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * #] declarations: * #[ calculations: * * some determinants * do 98 i = 1,nerr ieri(i) = 0 98 continue call ffdel2(del2,qiDqj, 6, 4,5,6, 1,ier) if ( ldot ) fdel2 = del2 if ( del2 .gt. 0 ) then * shouldn't occur ... * 12-10-1993 three spacelike momenta are OK if ( .not.(xqi(4).lt.0 .and. xqi(5).lt.0 .and. xqi(6).lt.0) + ) then call fferr(41,ier) print *,'xpi = ',xqi endif elseif ( del2 .eq. 0 ) then call fferr(42,ier) return endif call ffdel3(del3,qiDqj) call ffdl3m(del3mi,.TRUE.,del3,del2,xqi,dqiqj,qiDqj,6, 4,5,6, + 1,3) do 101 i=1,3 j = i+1 if ( j .eq. 4 ) j = 1 call ffdel2(del2s(i),qiDqj,6, i+3,i,j, 1,ieri(i)) k = i-1 if ( k .eq. 0 ) k = 3 call ffdl2p(delpsi(i),xqi,dqiqj,qiDqj,i+3,j+3,k+3,i,j,k,6) 101 continue ier0 = 0 do 99 i=1,nerr ier0 = max(ier0,ieri(i)) 99 continue ier = ier + ier0 * * initialize cs3: * do 80 i=1,80 cs3(i) = 0 80 continue do 90 i=1,8 ipi12(i) = 0 90 continue do 100 i=1,3 clogi(i) = 0 ilogi(i) = 0 100 continue * #[ complex case: * in case of three spacelike momenta or unphysical real ones if ( del2 .gt. 0 ) then do 102 i=1,3 cel2s(i) = del2s(i) celpsi(i) = delpsi(i) cetami(i) = del3mi(i)/del2 102 continue do 104 i=1,6 cqi(i) = xqi(i) do 103 j=1,6 cdqiqj(j,i) = dqiqj(j,i) cqiDqj(j,i) = qiDqj(j,i) 103 continue 104 continue cetalm = del3/del2 csdel2 = isgnal*DCMPLX(0D0,sqrt(del2)) * * get alpha,1-alpha * call ffcoot(cblph(1),calph(1),cqi(5),-cqiDqj(5,6),cqi(6), + csdel2,ier) call ffcoot(calph(3),cblph(3),cqi(5),-cqiDqj(5,4),cqi(4), + csdel2,ier) cslam = 2*csdel2 call ffcc0p(cs3,ipi12,isoort,clogi,ilogi,cqi,cdqiqj,cqiDqj, + csdel2,cel2s,cetalm,cetami,celpsi,calph,3,ier) goto 109 endif * #] complex case: etalam = del3/del2 do 106 i=1,3 etami(i) = del3mi(i)/del2 106 continue if ( abs(isgnal).ne.1 ) then print *,'ffxc0b: error: isgnal should be +/-1, not ',isgnal print *,' forgot to call ltini?' call ltini endif sdel2 = isgnal*sqrt(-del2) * * get alpha,1-alpha * call ffroot(blph(1),alph(1),xqi(5),-qiDqj(5,6),xqi(6),sdel2,ier) call ffroot(alph(3),blph(3),xqi(5),-qiDqj(5,4),xqi(4),sdel2,ier) if ( l4also .and. ( alph(1) .gt. 1 .or. alph(1) .lt. 0 ) .and. + abs(blph(1)-.5D0) .lt. abs(alph(1)-.5D0) ) then alph(1) = blph(1) alph(3) = blph(3) sdel2 = -sdel2 isgnal = -isgnal endif cslam = 2*sdel2 * * and the calculations * call ffxc0p(cs3,ipi12,isoort,clogi,ilogi,xqi,dqiqj,qiDqj, + sdel2,del2s,etalam,etami,delpsi,alph,3,ier) * * sum'em up: * 109 continue cs = 0 xmax = 0 do 110 i=1,80 * if ( cs3(i) .ne. 0 ) then cs = cs + cs3(i) xmax = max(xmax,absc(cs)) * endif 110 continue ipi12t = 0 do 120 i=1,8 ipi12t = ipi12t + ipi12(i) 120 continue cs = cs + ipi12t*DBLE(pi12) * * A imaginary component less than precc times the real part is * zero (may be removed) * if ( abs(DIMAG(cs)) .lt. precc*abs(DBLE(cs)) ) + cs = DCMPLX(DBLE(cs)) * * Finally ... * cc0 = - cs/cslam * #] calculations: *###] ffxc0b: end *###[ ffrot3: subroutine ffrot3(irota,xqi,dqiqj,qiDqj,xpi,dpipj,piDpj, + iflag,npoin,ier) ***#[*comment:*********************************************************** * * * rotates the arrays xpi, dpipj into xqi,dqiqj so that * * xpi(6),xpi(4) suffer the strongest outside cancellations and * * xpi(6) > xpi(4) if iflag = 1, so that xpi(5) largest and xpi(5) * * and xpi(6) suffer cancellations if iflag = 2. * * if iflag = 3 make xqi(3)=0. * * If npoin=4, rotate piDpj into qiDqj as well. * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer irota,iflag,ier,npoin DOUBLE PRECISION xpi(6),dpipj(6,6),piDpj(6,6),xqi(6),dqiqj(6,6), + qiDqj(6,6) * * local variables * DOUBLE PRECISION a1,a2,a3,xpimax DOUBLE COMPLEX chulp(3,3) integer i,j,inew(6,6) save inew * * common blocks * #include "ff.h" * * data * data inew /1,2,3,4,5,6, + 2,3,1,5,6,4, + 3,1,2,6,4,5, + 1,3,2,6,5,4, + 3,2,1,5,4,6, + 2,1,3,4,6,5/ * #] declarations: * #[ get largest cancellation: if ( iflag .eq. 1 ) then a1 = abs(dpipj(6,4))/max(abs(xpi(6)+xpi(4)),xalogm) a2 = abs(dpipj(5,4))/max(abs(xpi(5)+xpi(4)),xalogm) a3 = abs(dpipj(5,6))/max(abs(xpi(6)+xpi(5)),xalogm) if ( a1 .le. a2 .and. a1 .le. a3 ) then irota = 1 if ( abs(xpi(6)) .lt. abs(xpi(4)) ) then irota = 4 endif elseif ( a2 .le. a3 ) then irota = 3 if ( abs(xpi(4)) .lt. abs(xpi(5)) ) then irota = 6 endif else irota = 2 if ( abs(xpi(5)) .lt. abs(xpi(6)) ) then irota = 5 endif endif elseif ( iflag .eq. 2 ) then xpimax = max(xpi(4),xpi(5),xpi(6)) if ( xpimax .eq. 0 ) then if ( xpi(5) .ne. 0 ) then irota = 1 elseif ( xpi(4) .ne. 0 ) then irota = 2 elseif ( xpi(6) .ne. 0 ) then irota = 3 else call fferr(40,ier) irota = 1 endif elseif ( xpi(5) .eq. xpimax ) then if ( xpi(4) .le. xpi(6) ) then irota = 1 else irota = 4 endif elseif ( xpi(4) .eq. xpimax ) then if ( xpi(5) .ge. xpi(6) ) then irota = 2 else irota = 5 endif else if ( xpi(4) .ge. xpi(6) ) then irota = 3 else irota = 6 endif endif elseif ( iflag .eq. 3 ) then if ( dpipj(2,4).eq.0 .and. dpipj(3,6).eq.0 .and. + xpi(1).eq.0 ) then irota = 3 elseif ( dpipj(1,6).eq.0 .and. dpipj(2,5).eq.0 .and. + xpi(3).eq.0 ) then irota = 1 elseif ( dpipj(3,5).eq.0 .and. dpipj(1,4).eq.0 .and. + xpi(2).eq.0 ) then irota = 2 else call fferr(35,ier) irota = 1 endif else call fferr(35,ier) irota = 1 endif * #] get largest cancellation: * #[ rotate: do 20 i=1,6 xqi(inew(i,irota)) = xpi(i) do 10 j=1,6 dqiqj(inew(i,irota),inew(j,irota)) = dpipj(i,j) 10 continue 20 continue * * when called in a 4pointfunction we already have the dotproducts * if ( npoin .eq. 4 ) then do 80 j=1,6 do 70 i=1,6 qiDqj(inew(i,irota),inew(j,irota)) = piDpj(i,j) 70 continue 80 continue endif *DEBUG if ( iflag .eq. 3 .and. lsmug ) then if ( lsmug ) then * * do not forget to rotate the smuggled differences * do 40 j=1,3 do 30 i=1,3 chulp(i,j) = cmipj(i,j) 30 continue 40 continue do 60 j=1,3 do 50 i=1,3 cmipj(inew(i,irota),inew(j+3,irota)-3) = chulp(i,j) 50 continue 60 continue endif * #] rotate: *###] ffrot3: end *###[ ffdot3: subroutine ffdot3(piDpj,xpi,dpipj,ns,ier) ***#[*comment:*********************************************************** * * * calculate the dotproducts pi.pj with * * * * pi = si i1=1,3 * * pi = p(i-3) i1=4,6 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ns,ier DOUBLE PRECISION xpi(6),dpipj(6,6),piDpj(6,6) * * locals * integer is1,is2,is3,ip1,ip2,ip3,i,j,ier1,inew(6,6) save inew * * rest * #include "ff.h" * * data * data inew /1,2,3,4,5,6, + 2,3,1,5,6,4, + 3,1,2,6,4,5, + 1,3,2,6,5,4, + 3,2,1,5,4,6, + 2,1,3,4,6,5/ * * #] declarations: * #[ check input: if ( ns .ne. 6 ) print *,'ffdot3: error: ns /= 6 ' * #] check input: * #[ copy if known: * if ( idot.ge.3 ) then do 2 i=1,6 do 1 j=1,6 piDpj(inew(j,irota3),inew(i,irota3)) = fpij3(j,i) 1 continue 2 continue if ( irota3 .gt. 3 ) then * * the sign of the s's has been changed! * do 4 i=1,3 do 3 j=4,6 piDpj(j,i) = -piDpj(j,i) piDpj(i,j) = -piDpj(i,j) 3 continue 4 continue endif return endif * * #] copy if known: * #[ calculations: ier1 = ier do 10 is1=1,3 is2 = is1 + 1 if ( is2 .eq. 4 ) is2 = 1 is3 = is2 + 1 if ( is3 .eq. 4 ) is3 = 1 ip1 = is1 + 3 ip2 = is2 + 3 ip3 = is3 + 3 * * pi.pj, si.sj * piDpj(is1,is1) = xpi(is1) piDpj(ip1,ip1) = xpi(ip1) * * si.s(i+1) * if ( xpi(is2) .le. xpi(is1) ) then piDpj(is1,is2) = (dpipj(is1,ip1) + xpi(is2))/2 else piDpj(is1,is2) = (dpipj(is2,ip1) + xpi(is1))/2 endif piDpj(is2,is1) = piDpj(is1,is2) * * pi.si * if ( abs(xpi(ip1)) .le. xpi(is1) ) then piDpj(ip1,is1) = (dpipj(is2,is1) - xpi(ip1))/2 else piDpj(ip1,is1) = (dpipj(is2,ip1) - xpi(is1))/2 endif piDpj(is1,ip1) = piDpj(ip1,is1) * * pi.s(i+1) * if ( abs(xpi(ip1)) .le. xpi(is2) ) then piDpj(ip1,is2) = (dpipj(is2,is1) + xpi(ip1))/2 else piDpj(ip1,is2) = (dpipj(ip1,is1) + xpi(is2))/2 endif piDpj(is2,ip1) = piDpj(ip1,is2) * * pi.s(i+2) * if ( min(abs(dpipj(is2,is1)),abs(dpipj(ip3,ip2))) .le. + min(abs(dpipj(ip3,is1)),abs(dpipj(is2,ip2))) ) then piDpj(ip1,is3) = (dpipj(ip3,ip2) + dpipj(is2,is1))/2 else piDpj(ip1,is3) = (dpipj(ip3,is1) + dpipj(is2,ip2))/2 endif piDpj(is3,ip1) = piDpj(ip1,is3) * * pi.p(i+1) * if ( idot.le.0 ) then if ( abs(xpi(ip2)) .le. abs(xpi(ip1)) ) then piDpj(ip1,ip2) = (dpipj(ip3,ip1) - xpi(ip2))/2 else piDpj(ip1,ip2) = (dpipj(ip3,ip2) - xpi(ip1))/2 endif piDpj(ip2,ip1) = piDpj(ip1,ip2) else piDpj(inew(ip2,irota3),inew(ip1,irota3)) = + fpij3(ip1,ip2) piDpj(inew(ip1,irota3),inew(ip2,irota3)) = + piDpj(inew(ip2,irota3),inew(ip1,irota3)) endif 10 continue ier = ier1 * * #] calculations: *###] ffdot3: end *###[ ffxc0r: subroutine ffxc0r(cc0,xpi,ier) ***#[*comment:*********************************************************** * * * Tries all 2 permutations of the 3pointfunction * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none integer ier DOUBLE PRECISION xpi(6),xqi(6) DOUBLE COMPLEX cc0,cc0p integer inew(6,2),irota,ier1,i,j,ialsav save inew #include "ff.h" data inew /1,2,3,4,5,6, + 1,3,2,6,5,4/ * #] declarations: * #[ calculations: cc0 = 0 ier = 999 ialsav = isgnal do 30 j = -1,1,2 do 20 irota=1,2 do 10 i=1,6 xqi(inew(i,irota)) = xpi(i) 10 continue print '(a,i1,a,i2)','---#[ rotation ',irota,': isgnal ', + isgnal ier1 = 0 ner = 0 id = id + 1 isgnal = ialsav call ffxc0(cc0p,xqi,ier1) ier1 = ier1 + ner print '(a,i1,a,i2)','---#] rotation ',irota,': isgnal ', + isgnal print '(a,2g28.16,i3)','c0 = ',cc0p,ier1 if ( ier1 .lt. ier ) then cc0 = cc0p ier = ier1 endif 20 continue ialsav = -ialsav 30 continue * #] calculations: *###] ffxc0r: end herwig++-2.6.0.orig/Looptools/C/C0.F0000644000175000017500000003451611754474774017535 0ustar sylvestresylvestre* C0.F * the scalar three-point function * this file is part of LoopTools * last modified 21 Dec 10 th #include "defs.h" #define legs 3 #define M(i) xpi(i) #define P(i) xpi(i+legs) double complex function C0(p1, p2, p1p2, m1, m2, m3) implicit none double precision p1, p2, p1p2, m1, m2, m3 #include "lt.h" external C0soft, C0coll, C0softDR, C0collDR double complex res(0:1) double precision xpi(6) integer key, ier M(1) = m1 M(2) = m2 M(3) = m3 P(1) = p1 P(2) = p2 P(3) = p1p2 if( lambda .le. 0 ) then call CDispatch(C0, xpi, C0softDR, C0collDR) return endif ier = 0 key = ibits(versionkey, KeyC0, 2) if( key .ne. 1 ) then call ffxc0(res(0), xpi, ier) if( ier .gt. warndigits ) then ier = 0 call ffxc0r(res(0), xpi, ier) if( ier .gt. warndigits ) key = ior(key, 2) endif endif if( key .ne. 0 ) then call CDispatch(res(1), xpi, C0soft, C0coll) if( key .gt. 1 .and. & abs(res(0) - res(1)) .gt. maxdev*abs(res(0)) ) then print *, "Discrepancy in C0:" print *, " p1 =", p1 print *, " p2 =", p2 print *, " p1p2 =", p1p2 print *, " m1 =", m1 print *, " m2 =", m2 print *, " m3 =", m3 print *, "C0 a =", res(0) print *, "C0 b =", res(1) if( ier .gt. errdigits ) res(0) = res(1) endif endif C0 = res(iand(key, 1)) end ************************************************************************ * adapter code for C++ subroutine c0sub(res, p1, p2, p1p2, m1, m2, m3) implicit none double complex res double precision p1, p2, p1p2, m1, m2, m3 double complex C0 external C0 res = C0(p1, p2, p1p2, m1, m2, m3) end ************************************************************************ subroutine CDispatch(res, xpi, soft, coll) implicit none double complex res double precision xpi(6) external soft, coll #include "lt.h" integer i, z, c, perm double complex C0p3, C0p2, C0p1, C0p0 external C0p3, C0p2, C0p1, C0p0 integer p123, p231, p312 parameter (p123 = O'123', p231 = O'231', p312 = O'312') integer xpiperm(3) data xpiperm /p123, p231, p312/ #define Px(j) P(ibits(perm,3*(3-j),3)) #define Mx(j) M(ibits(perm,3*(3-j),3)) 555 z = 0 c = 0 do i = 1, 3 perm = xpiperm(i) if( abs(Mx(1)) .lt. eps ) then if( abs(Px(1) - Mx(2)) + & abs(Px(3) - Mx(3)) .lt. acc ) then if( DEBUGLEVEL .gt. 0 ) & print '(A,O3)', "soft C0, perm = ", perm call soft(res, xpi, perm) return endif if( abs(Px(1)) + abs(Mx(2)) .lt. eps ) c = perm endif if( abs(P(i)) .lt. eps ) z = z + 1 enddo if( c .ne. 0 ) then if( DEBUGLEVEL .gt. 0 ) & print '(A,O3)', "collinear C0, perm = ", perm call coll(res, xpi, c) if( res .eq. c ) goto 555 return endif goto (1, 2, 3) z res = C0p3(xpi, p123) + C0p3(xpi, p231) + C0p3(xpi, p312) return 1 res = C0p2(xpi, p123) + C0p2(xpi, p231) + C0p2(xpi, p312) return 2 res = C0p1(xpi, p123) + C0p1(xpi, p231) + C0p1(xpi, p312) return 3 res = C0p0(xpi) end ************************************************************************ * the following routines are adapted from Ansgar Denner's bcanew.f * to the conventions of LoopTools; * they are used for double-checking the results of FF * all mom-squares != 0 double complex function C0p3(xpi, perm) implicit none double precision xpi(6) integer perm #include "lt.h" double precision m1, m2, m3, p1, p2, p3 double precision m12, m13, m23, a2, n double complex a, b, c double complex y1, y2, y3, y4, x1, x2, x3, x4, z3, z4 integer z3z4, x1z3, x3z3, x2z4, x4z4 double complex spence integer eta external spence, eta m1 = Mx(1) m2 = Mx(2) m3 = Mx(3) p1 = Px(1) p2 = Px(2) p3 = Px(3) m12 = m1 - m2 m13 = m1 - m3 m23 = m2 - m3 a2 = (p1 - p2 - p3)**2 - 4*p2*p3 a = sqrt(DCMPLX(a2)) n = .5D0/p1 c = (p1*(p1 - p2 - p3 - m13 - m23) - m12*(p2 - p3))/a y1 = n*(c + (p1 - m12)) y4 = n*(c - (p1 - m12)) if( abs(y1) .lt. abs(y4) ) & y1 = ((p1 - m12)*(p2 + m23)*p3 - & (p1 - p2 - m13)*(m12*p2 + m23*p1))/(a2*p1*y4) y2 = n*(c - (p1 + m12)) y4 = n*(c + (p1 + m12)) if( abs(y2) .lt. abs(y4) ) & y2 = ((p1 + m12)*(p3 + m13)*p2 + & (p1 - p3 - m23)*(m12*p3 - m13*p1))/(a2*p1*y4) b = sqrt(DCMPLX((p1 - m12)**2 - 4*p1*m2)) y3 = n*(c + b) y4 = n*(c - b) n = (p1*((p1 - p2 - p3)*m3 + p2*p3 + m13*m23) + & p2*((p2 - p3 - p1)*m1 + m12*m13) + & p3*((p3 - p1 - p2)*m2 - m12*m23))/(a2*p1) if( abs(y3) .lt. abs(y4) ) then y3 = n/y4 else y4 = n/y3 endif c = a*b if( c .ne. 0 ) then y3 = y3 + cI*eps*abs(c*y3)/c y4 = y4 - cI*eps*abs(c*y4)/c else y3 = y3*(1 + cI*eps) y4 = y4*(1 - cI*eps) endif C0p3 = spence(y2/y3, 0D0) + spence(y2/y4, 0D0) - & spence(y1/y3, 0D0) - spence(y1/y4, 0D0) if( DIMAG(a) .ne. 0 ) then c = abs(b)/b*eps*cI x1 = -.5D0/p1*( p1 - m12 + b) - c x2 = -.5D0/p1*( p1 - m12 - b) - c x3 = -.5D0/p1*(-p1 - m12 + b) - c x4 = -.5D0/p1*(-p1 - m12 - b) - c z3 = 1/y3 z4 = 1/y4 z3z4 = eta(z3, 0D0, z4, 0D0, 0D0) x1z3 = eta(x1, 0D0, z3, 0D0, 0D0) x3z3 = eta(x3, 0D0, z3, 0D0, 0D0) x2z4 = eta(x2, 0D0, z4, 0D0, 0D0) x4z4 = eta(x4, 0D0, z4, 0D0, 0D0) c = log(y1)*(eta(x1, 0D0, x2, 0D0, 0D0) + & z3z4 - x1z3 - x2z4) - & log(y2)*(eta(x3, 0D0, x4, 0D0, 0D0) + & z3z4 - x3z3 - x4z4) + & log(y3)*(x1z3 - x3z3) + & log(y4)*(x2z4 - x4z4) if( DIMAG(a) .gt. 0 .and. p1 .lt. 0 ) c = c - log(y1/y2) C0p3 = C0p3 + c2ipi*c endif C0p3 = C0p3/a end ************************************************************************ * one mom-square zero double complex function C0p2(xpi, perm) implicit none double precision xpi(6) integer perm #include "lt.h" double precision m1, m2, m3, p1, p2, p3 double precision m12, m23, m13, a, c, y1, y2 double complex b, y3, y4 double complex spence external spence if( abs(Px(1)) .lt. eps ) then C0p2 = 0 return endif m1 = Mx(1) m2 = Mx(2) m3 = Mx(3) p1 = Px(1) p2 = Px(2) p3 = Px(3) m12 = m1 - m2 m23 = m2 - m3 m13 = m1 - m3 if( abs(p3) .lt. eps ) then a = p1 - p2 y1 = -2*p1*(m13 - a) y2 = -2*p1*m13 else a = p3 - p1 y1 = -2*p1*m23 y2 = -2*p1*(m23 + a) endif c = p1*(p1 - p2 - p3 - m13 - m23) - m12*(p2 - p3) b = a*sqrt(DCMPLX((p1 - m12)**2 - 4*p1*m2)) y3 = c + b y4 = c - b c = 4*p1*( & p1*((p1 - p2 - p3)*m3 + p2*p3 + m13*m23) + & p2*((p2 - p3 - p1)*m1 + m12*m13) + & p3*((p3 - p1 - p2)*m2 - m12*m23) ) if( abs(y3) .lt. abs(y4) ) then y3 = c/y4 else y4 = c/y3 endif c = a/p1 if( c .ne. 0 ) then y3 = y3 + cI*eps*abs(c*y3)/c y4 = y4 - cI*eps*abs(c*y4)/c else y3 = y3*(1 + cI*eps) y4 = y4*(1 - cI*eps) endif C0p2 = (spence(y2/y3, 0D0) + spence(y2/y4, 0D0) - & spence(y1/y3, 0D0) - spence(y1/y4, 0D0))/a end ************************************************************************ * two mom-squares zero double complex function C0p1(xpi, perm) implicit none double precision xpi(6) integer perm #include "lt.h" double precision m1, m2, m3, p1, p2, p3 double precision m12, m23, m13, c, y1, y2 double complex b, y3, y4 double complex spence external spence if( abs(Px(1)) .lt. eps ) then C0p1 = 0 return endif m1 = Mx(1) m2 = Mx(2) m3 = Mx(3) p1 = Px(1) p2 = Px(2) p3 = Px(3) m12 = m1 - m2 m23 = m2 - m3 m13 = m1 - m3 C0p1 = 0 if( abs(m13) .gt. acc ) then y1 = m23 - p1 y2 = m23 c = m23 + p1*m3/m13 y3 = c - cI*eps*sign(1D0, p1/m13)*abs(c) C0p1 = spence(y1/y3, 0D0) - spence(y2/y3, 0D0) endif y1 = -2*p1*m23 y2 = -2*p1*(m23 - p1) c = p1*(p1 - m13 - m23) b = p1*sqrt(DCMPLX((p1 - m12)**2 - 4*p1*m2)) y3 = c - b y4 = c + b c = 4*p1**2*(p1*m3 + m13*m23) if( abs(y3) .lt. abs(y4) ) then y3 = c/y4 else y4 = c/y3 endif y3 = y3 - cI*eps*abs(y3) y4 = y4 + cI*eps*abs(y4) C0p1 = (C0p1 + & spence(y1/y3, 0D0) + spence(y1/y4, 0D0) - & spence(y2/y3, 0D0) - spence(y2/y4, 0D0))/p1 end ************************************************************************ double complex function C0p0(xpi) implicit none double precision xpi(6) #include "lt.h" double precision m1, m2, m3 double precision m12, m23, m13 m1 = M(1) m2 = M(2) m3 = M(3) m12 = m1 - m2 m23 = m2 - m3 m13 = m1 - m3 if( abs(m23) .lt. acc ) then if( abs(m13) .lt. acc ) then C0p0 = -.5D0/m1 else C0p0 = (m13 - m1*log(m1/m3))/m13**2 endif else if( abs(m12) .lt. acc ) then C0p0 = (-m23 + m3*log(m2/m3))/m23**2 else if( abs(m13) .lt. acc ) then C0p0 = (m23 - m2*log(m2/m3))/m23**2 else C0p0 = m3/(m13*m23)*log(m1/m3) - m2/(m12*m23)*log(m1/m2) endif endif end ************************************************************************ subroutine C0soft(res, xpi, perm) implicit none double complex res double precision xpi(6) integer perm #include "lt.h" double complex ln, spence external ln, spence double precision s, m1, m2 double precision a, h1, h2, h3, ps double complex ls logical ini data ini /.FALSE./ s = Px(2) m1 = Px(1) m2 = Px(3) a = sqrt(4*m1*m2) if( abs(a) .lt. eps ) then ps = max(minmass, 1D-14) if( abs(m1) .lt. eps ) m1 = ps if( abs(m2) .lt. eps ) m2 = ps if( .not. ini ) then print *, "collinear-divergent C0, using mass cutoff ", ps ini = .TRUE. endif endif if( abs(s) .lt. acc ) then if( abs(m1 - m2) .lt. acc ) then res = -.5D0*log(m1/lambda)/m1 else res = -.25D0*log(m2*m1/lambda**2)* & log(m1/m2)/(m1 - m2) endif return endif ps = s - m1 - m2 a = (ps - a)*(ps + a) if( a .lt. 0 ) then print *, "C0soft: complex square root not implemented" a = 0 endif a = sqrt(a) if( ps .le. 0 ) then h1 = .5D0*(a - ps) else h1 = -2*m1*m2/(a + ps) endif ps = s - m1 + m2 if( ps .le. 0 ) then h2 = .5D0*(a - ps) else h2 = -2*s*m2/(a + ps) endif ps = s + m1 - m2 if( ps .le. 0 ) then h3 = .5D0*(a - ps) else h3 = -2*m1*s/(a + ps) endif ls = ln(-a/s, -1D0) res = (-pi6 + & spence(DCMPLX(h2/a), -1D0) + spence(DCMPLX(h3/a), -1D0) - & .5D0*(ln(-h2/s, -1D0)**2 + ln(-h3/s, -1D0)**2) + & .25D0*(ln(-m1/s, -1D0)**2 + ln(-m2/s, -1D0)**2) - & ls*(ln(-h1/s, -1D0) - ls) + & ln(-lambda/s, -1D0)*ln(h1/sqrt(m1*m2), 1D0))/a end ************************************************************************ subroutine C0coll(res, xpi, perm) implicit none double complex res double precision xpi(6) integer perm #include "lt.h" logical ini data ini /.FALSE./ Px(1) = max(minmass, 1D-14) res = perm if( ini ) return print *, "collinear-divergent C0, using mass cutoff ", Px(1) ini = .TRUE. end ************************************************************************ subroutine C0softDR(res, xpi, perm) implicit none double complex res double precision xpi(6) integer perm #include "lt.h" double precision s, m1, m2 double precision m, dm, r double complex root, fac, ls, lm, mK, lmK double complex Li2omx2, lnrat, cln, spence external Li2omx2, lnrat, cln, spence s = Px(2) m1 = Px(1) m2 = Px(3) m = sqrt(m1*m2) if( abs(m) .lt. eps ) then if( abs(m1) .lt. eps ) then m1 = m2 if( abs(m1) .lt. eps ) then if( abs(s) .lt. eps ) then print *, "C0softDR: all scales zero" res = nan return endif * qltri1 if( DEBUGLEVEL .gt. 1 ) print *, "qltri1" if( lambda .eq. -2 ) then res = 1/s else if( lambda .eq. -1 ) then res = lnrat(mudim, -s)/s else res = .5D0*lnrat(mudim, -s)**2/s endif return endif endif if( abs(s - m1) .lt. acc ) then * qltri5 if( DEBUGLEVEL .gt. 1 ) print *, "qltri5" if( lambda .eq. -2 ) then res = 0 else if( lambda .eq. -1 ) then res = -.5D0/m1 else res = (-.5D0*lnrat(mudim, m1) + 1)/m1 endif return endif * qltri4 if( DEBUGLEVEL .gt. 1 ) print *, "qltri4" if( lambda .eq. -2 ) then res = .5D0/(s - m1) else if( lambda .eq. -1 ) then res = (.5D0*lnrat(mudim, m1) + lnrat(m1, m1 - s))/(s - m1) else ls = lnrat(m1, m1 - s) lm = lnrat(mudim, m1) res = (lm*(.25D0*lm + ls) + .5D0*ls**2 + pi12 - & spence(DCMPLX(s/(s - m1)), 0D0))/(s - m1) endif return endif if( lambda .eq. -2 ) then res = 0 return endif * qltri6 if( DEBUGLEVEL .gt. 1 ) print *, "qltri6" dm = sqrt(m1) - sqrt(m2) r = s - dm**2 root = sqrt(DCMPLX((r - 4*m)/r)) mK = -4*m/(r*(1 + root)**2) if( abs(mK - 1) .lt. acc ) then if( lambda .eq. -1 ) then res = .5D0/m else res = 0 if( abs(m1 - m2) .gt. acc ) & res = 2 + .5D0*(sqrt(m1) + sqrt(m2))/dm*log(m2/m1) res = .5D0/m*(log(mudim/m) - res) endif return endif lmK = cln(mK, 1D0) fac = 1/(r*root) if( lambda .eq. -1 ) then res = fac*lmK else res = fac*( lmK*(.5D0*lmK + log(mudim/m)) - & .125D0*log(m1/m2)**2 + & Li2omx2(mK, 1D0, mK, 1D0) - & Li2omx2(mK, 1D0, DCMPLX(sqrt(m1/m2)), 0D0) - & Li2omx2(mK, 1D0, DCMPLX(sqrt(m2/m1)), 0D0) ) endif end ************************************************************************ subroutine C0collDR(res, xpi, perm) implicit none double complex res double precision xpi(6) integer perm #include "lt.h" double precision s1, s2, m double precision m1, m2, r double complex l1, l2, lm double complex Li2omrat, lnrat external Li2omrat, lnrat if( lambda .eq. -2 ) then res = 0 return endif m = Mx(3) s1 = Px(2) s2 = Px(3) if( abs(m) .lt. eps ) then * qltri2 if( DEBUGLEVEL .gt. 1 ) print *, "qltri2" r = .5D0*(s2 - s1)/s1 if( abs(r) .lt. acc ) then if( lambda .eq. -1 ) then res = (1 - r*mudim/s1)/s1 else res = (lnrat(mudim, -s1)*(1 - r) - r)/s1 endif return endif l1 = lnrat(mudim, -s1) l2 = lnrat(mudim, -s2) res = (l1 - l2)/(s1 - s2) if( lambda .ne. -1 ) res = .5D0*(l1 + l2)*res return endif * qltri3 if( DEBUGLEVEL .gt. 1 ) print *, "qltri3" m1 = m - s1 m2 = m - s2 l1 = lnrat(m1, m) l2 = lnrat(m2, m) lm = lnrat(mudim, m) r = .5D0*(s1 - s2)/m1 if( abs(r) .lt. acc ) then if( lambda .eq. -1 ) then res = (1 - r)/m1 else m = m/s1 res = (lm - (m + 1)*(l2 + r) - & r*((m*(m - 2) - 1)*l2 + lm))/m1 endif return endif res = l2 - l1 if( lambda .ne. -1 ) & res = (lm - l1 - l2)*res + & Li2omrat(m1, m) - Li2omrat(m2, m) res = res/(s1 - s2) end herwig++-2.6.0.orig/Looptools/C/ffxc0p0.F0000644000175000017500000000276511754474774020542 0ustar sylvestresylvestre#include "externals.h" *###[ ffxc0p0 subroutine ffxc0p0(cc0, xpi) ***#[*comment:*********************************************************** * * * C0 function for all three momenta^2 = 0 * * input parameters as for ffxc0 * * * * original code from David Garcia * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX cc0 DOUBLE PRECISION xpi(6) DOUBLE PRECISION m1, m2, m3, m #include "ff.h" m1 = xpi(1) m2 = xpi(2) m3 = xpi(3) * sort the masses such that m1 >= m2 >= m3 * this is important to avoid complex logs later if( m1 .lt. m2 ) then m = m2 m2 = m1 m1 = m endif if( m2 .lt. m3 ) then m = m3 m3 = m2 m2 = m endif if( m1 .lt. m2 ) then m = m2 m2 = m1 m1 = m endif m = (m1 + m2 + m3)*1D-6 if( m3 .gt. m ) then * non-zero masses: if( m2 - m3 .gt. m ) then if( m1 - m2 .gt. m ) then * m1 != m2 != m3 cc0 = (log(m3/m2) + m1/(m3 - m1)*log(m3/m1) - & m1/(m2 - m1)*log(m2/m1))/(m2 - m3) else * m1 = m2 != m3 cc0 = (1 - m3/(m2 - m3)*log(m2/m3))/(m3 - m2) endif else if( m1 - m2 .gt. m ) then * m1 != m2 = m3 cc0 = (1 - m1/(m2 - m1)*log(m2/m1))/(m1 - m2) else * m1 = m2 = m3 cc0 = -.5D0/m1 endif endif else * zero masses: if( m1 - m2 .gt. m ) then * m1 != m2, m3 = 0 cc0 = log(m2/m1)/(m1 - m2) else * m1 = m2, m3 = 0 cc0 = -1/m1 endif endif end herwig++-2.6.0.orig/Looptools/C/ffcel3.F0000644000175000017500000000536111754474774020431 0ustar sylvestresylvestre#include "externals.h" *###[ ffcel3: subroutine ffcel3(del3,piDpj) ***#[*comment:*********************************************************** * * * Calculate del3(piDpj) = det(si.sj) with * * the momenta as follows: * * p(1-3) = s(i) * * p(4-6) = p(i) * * * * Input: piDpj(6,6) (real) * * * * Output: del3 (real) det(si.sj) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * DOUBLE COMPLEX del3,piDpj(6,6) * * local variables: * integer mem,nperm parameter(mem=10,nperm=16) integer i,jj(6),iperm(3,nperm),imem,memarr(mem,3),memind,inow DOUBLE COMPLEX s(6),del3p,cc DOUBLE PRECISION xmax,xmaxp,absc save iperm,memind,memarr,inow * * common blocks: * #include "ff.h" * * statement function * absc(cc) = abs(DBLE(cc)) + abs(DIMAG(cc)) * #] declarations: * #[ data: data memind /0/ data memarr /mem*0,mem*0,mem*1/ data inow /1/ * * these are all permutations that give a non-zero result with the * correct sign. This list was generated with getperm3. * data iperm/ + 1,2,3, 1,2,5, 1,6,2, 1,4,3, + 1,3,5, 1,4,5, 1,6,4, 1,5,6, + 2,4,3, 2,3,6, 2,4,5, 2,6,4, + 2,5,6, 3,4,5, 3,6,4, 3,5,6/ * #] data: * #[ starting point in memory?: * * see if we know were to start, if not: go on as last time * do 5 i=1,mem if ( id .eq. memarr(i,1) .and. idsub .eq. memarr(i,2) ) then inow = memarr(i,3) goto 6 endif 5 continue 6 continue * #] starting point in memory?: * #[ calculations: imem = inow del3 = 0 xmax = 0 10 continue jj(1) = iperm(1,inow) jj(3) = iperm(2,inow) jj(5) = iperm(3,inow) jj(2) = iperm(1,inow) jj(4) = iperm(2,inow) jj(6) = iperm(3,inow) s(1) = +piDpj(jj(1),jj(2))*piDpj(jj(3),jj(4))*piDpj(jj(5),jj(6)) s(2) = +piDpj(jj(1),jj(4))*piDpj(jj(3),jj(6))*piDpj(jj(5),jj(2)) s(3) = +piDpj(jj(1),jj(6))*piDpj(jj(3),jj(2))*piDpj(jj(5),jj(4)) s(4) = -piDpj(jj(1),jj(2))*piDpj(jj(3),jj(6))*piDpj(jj(5),jj(4)) s(5) = -piDpj(jj(1),jj(6))*piDpj(jj(3),jj(4))*piDpj(jj(5),jj(2)) s(6) = -piDpj(jj(1),jj(4))*piDpj(jj(3),jj(2))*piDpj(jj(5),jj(6)) del3p = 0 xmaxp = 0 do 20 i=1,6 del3p = del3p + s(i) xmaxp = max(xmaxp,absc(s(i))) 20 continue if ( absc(del3p) .lt. xloss*xmaxp ) then if ( inow .eq. imem .or. xmaxp .lt. xmax ) then del3 = del3p xmax = xmaxp endif inow = inow + 1 if ( inow .gt. nperm ) inow = 1 if ( inow .eq. imem ) then goto 800 endif goto 10 endif del3 = del3p xmax = xmaxp * #] calculations: * #[ into memory: 800 continue memind = memind + 1 if ( memind .gt. mem ) memind = 1 memarr(memind,1) = id memarr(memind,2) = idsub memarr(memind,3) = inow * #] into memory: *###] ffcel3: end herwig++-2.6.0.orig/Looptools/C/ffdel3.F0000644000175000017500000001373011754474774020431 0ustar sylvestresylvestre#include "externals.h" *###[ ffdel3: subroutine ffdel3(del3,piDpj) ***#[*comment:*********************************************************** * * * Calculate del3(piDpj) = det(si.sj) with * * the momenta as follows: * * p(1-3) = s(i) * * p(4-6) = p(i) * * * * Input: xpi(ns) (real) m^2(i),i=1,3; p^2(i-3),i=4,10 * * piDpj(ns,ns) (real) * * ns (integer) * * ier (integer) * * * * Output: del3 (real) det(si.sj) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * DOUBLE PRECISION del3,piDpj(6,6) * * local variables: * integer mem,nperm parameter(mem=10,nperm=16) integer i,jj(6),iperm(3,nperm),imem,memarr(mem,3),memind,inow DOUBLE PRECISION s(6),xmax,del3p,xmaxp save iperm,memind,memarr,inow * * common blocks: * #include "ff.h" * #] declarations: * #[ data: data memind /0/ data memarr /mem*0,mem*0,mem*1/ data inow /1/ * * these are all permutations that give a non-zero result with the * correct sign. This list was generated with getperm3. * data iperm/ + 1,2,3, 1,2,5, 1,6,2, 1,4,3, + 1,3,5, 1,4,5, 1,6,4, 1,5,6, + 2,4,3, 2,3,6, 2,4,5, 2,6,4, + 2,5,6, 3,4,5, 3,6,4, 3,5,6/ * #] data: * #[ starting point in memory?: * * see if we know were to start, if not: go on as last time * do 5 i=1,mem if ( id .eq. memarr(i,1) .and. idsub .eq. memarr(i,2) ) then inow = memarr(i,3) goto 6 endif 5 continue 6 continue * #] starting point in memory?: * #[ calculations: imem = inow del3 = 0 xmax = 0 10 continue jj(1) = iperm(1,inow) jj(3) = iperm(2,inow) jj(5) = iperm(3,inow) jj(2) = iperm(1,inow) jj(4) = iperm(2,inow) jj(6) = iperm(3,inow) s(1) = +piDpj(jj(1),jj(2))*piDpj(jj(3),jj(4))*piDpj(jj(5),jj(6)) s(2) = +piDpj(jj(1),jj(4))*piDpj(jj(3),jj(6))*piDpj(jj(5),jj(2)) s(3) = +piDpj(jj(1),jj(6))*piDpj(jj(3),jj(2))*piDpj(jj(5),jj(4)) s(4) = -piDpj(jj(1),jj(2))*piDpj(jj(3),jj(6))*piDpj(jj(5),jj(4)) s(5) = -piDpj(jj(1),jj(6))*piDpj(jj(3),jj(4))*piDpj(jj(5),jj(2)) s(6) = -piDpj(jj(1),jj(4))*piDpj(jj(3),jj(2))*piDpj(jj(5),jj(6)) del3p = 0 xmaxp = 0 do 20 i=1,6 del3p = del3p + s(i) xmaxp = max(xmaxp,abs(s(i))) 20 continue if ( abs(del3p) .lt. xloss*xmaxp ) then if ( inow .eq. imem .or. xmaxp .lt. xmax ) then del3 = del3p xmax = xmaxp endif inow = inow + 1 if ( inow .gt. nperm ) inow = 1 if ( inow .eq. imem ) goto 800 goto 10 endif del3 = del3p xmax = xmaxp * #] calculations: * #[ into memory: 800 continue memind = memind + 1 if ( memind .gt. mem ) memind = 1 memarr(memind,1) = id memarr(memind,2) = idsub memarr(memind,3) = inow * #] into memory: *###] ffdel3: end *(##[ ffdl3s: subroutine ffdl3s(dl3s,piDpj,ii,ns) ***#[*comment:*********************************************************** * * * Calculate dl3s(piDpj) = det(si.sj) with * * the momenta indicated by the indices ii(1-6,1), ii(1-6,2) * * as follows: * * p(|ii(1,)|-|ii(3,)|) = s(i) * * p(|ii(4,)|-|ii(6,)|) = p(i) = sgn(ii())*(s(i+1) - s(i)) * * * * At this moment (26-apr-1990) only the diagonal is tried * * * * Input: xpi(ns) (real) m^2(i),i=1,3; p^2(i-3),i=4,10 * * piDpj(ns,ns) (real) * * ii(6,2) (integer) see above * * ns (integer) * * ier (integer) * * * * Output: dl3s (real) det(si.sj) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ii(6,2),ns DOUBLE PRECISION dl3s,piDpj(ns,ns) * * local variables: * integer mem,nperm parameter(mem=10,nperm=16) integer i,jj(6),jsgn,iperm(3,nperm),imem,memarr(mem,3), + memind,inow DOUBLE PRECISION s(6),xmax,dl3sp,xmaxp save iperm,memind,memarr,inow * * common blocks: * #include "ff.h" * #] declarations: * #[ data: data memind /0/ data memarr /mem*0,mem*0,mem*1/ data inow /1/ * * these are all permutations that give a non-zero result with the * correct sign. This list was generated with getperm3. * data iperm/ + 1,2,3, 1,2,5, 1,6,2, 1,4,3, + 1,3,5, 1,4,5, 1,6,4, 1,5,6, + 2,4,3, 2,3,6, 2,4,5, 2,6,4, + 2,5,6, 3,4,5, 3,6,4, 3,5,6/ * #] data: * #[ starting point in memory?: * * see if we know were to start, if not: go on as last time * do 5 i=1,mem if ( id .eq. memarr(i,1) .and. idsub .eq. memarr(i,2) ) then inow = memarr(i,3) goto 6 endif 5 continue 6 continue * #] starting point in memory?: * #[ calculations: imem = inow dl3s = 0 xmax = 0 10 continue jj(1) = abs(ii(iperm(1,inow),1)) jj(3) = abs(ii(iperm(2,inow),1)) jj(5) = abs(ii(iperm(3,inow),1)) jj(2) = abs(ii(iperm(1,inow),2)) jj(4) = abs(ii(iperm(2,inow),2)) jj(6) = abs(ii(iperm(3,inow),2)) jsgn = sign(1,ii(iperm(1,inow),1)) + *sign(1,ii(iperm(2,inow),1)) + *sign(1,ii(iperm(3,inow),1)) + *sign(1,ii(iperm(1,inow),2)) + *sign(1,ii(iperm(2,inow),2)) + *sign(1,ii(iperm(3,inow),2)) s(1) = +piDpj(jj(1),jj(2))*piDpj(jj(3),jj(4))*piDpj(jj(5),jj(6)) s(2) = +piDpj(jj(1),jj(4))*piDpj(jj(3),jj(6))*piDpj(jj(5),jj(2)) s(3) = +piDpj(jj(1),jj(6))*piDpj(jj(3),jj(2))*piDpj(jj(5),jj(4)) s(4) = -piDpj(jj(1),jj(2))*piDpj(jj(3),jj(6))*piDpj(jj(5),jj(4)) s(5) = -piDpj(jj(1),jj(6))*piDpj(jj(3),jj(4))*piDpj(jj(5),jj(2)) s(6) = -piDpj(jj(1),jj(4))*piDpj(jj(3),jj(2))*piDpj(jj(5),jj(6)) dl3sp = 0 xmaxp = 0 do 20 i=1,6 dl3sp = dl3sp + s(i) xmaxp = max(xmaxp,abs(s(i))) 20 continue if ( abs(dl3sp) .lt. xloss*xmaxp ) then if ( inow .eq. imem .or. xmaxp .lt. xmax ) then dl3s = jsgn*dl3sp xmax = xmaxp endif inow = inow + 1 if ( inow .gt. nperm ) inow = 1 if ( inow .eq. imem ) goto 800 goto 10 endif dl3s = jsgn*dl3sp xmax = xmaxp * #] calculations: * #[ into memory: 800 continue memind = memind + 1 if ( memind .gt. mem ) memind = 1 memarr(memind,1) = id memarr(memind,2) = idsub memarr(memind,3) = inow * #] into memory: *)##] ffdl3s: end herwig++-2.6.0.orig/Looptools/C/ffxc0p.F0000644000175000017500000003337411754474774020462 0ustar sylvestresylvestre#include "externals.h" * $Id: ffxc0p.f,v 1.3 1995/10/06 09:17:26 gj Exp $ * $Log: ffxc0p.f,v $ c Revision 1.3 1995/10/06 09:17:26 gj c Found stupid typo in ffxc0p which caused the result to be off by pi^2/3 in c some equal-mass cases. Added checks to ffcxs4.f ffcrr.f. c *###[ ffxc0p: subroutine ffxc0p(cs3,ipi12,isoort,clogi,ilogi,xpi,dpipj,piDpj, + sdel2,del2s,etalam,etami,delpsi,alph,npoin,ier) ***#[*comment:*********************************************************** * * * calculates the threepoint function closely following * * recipe in 't Hooft & Veltman, NP B(183) 1979. * * Bjorken and Drell metric is used nowadays! * * * * p2 ^ | * * | | * * / \ * * m2/ \m3 * * p1 / \ p3 * * <- / m1 \ -> * * ------------------------ * * * * Input: xpi(1-3) (real) pi squared * * xpi(4-6) (real) internal mass squared * * dpipj(6,6) (real) xpi(i)-xpi(j) * * piDpj(6,6) (real) pi(i).pi(j) * * sdel2 (real) sqrt(delta_{p_1 p_2}^{p_1 p_2}) * * del2s(3) (real) delta_{p_i s_i}^{p_i s_i} * * etalam (real) delta_{s_1 s_2 s_3}^{s_1 s_2 s_3} * /delta_{p_1 p_2}^{p_1 p_2} * * etami(6) (real) m_i^2 - etalam * * alph(3) (real) alph(1)=alpha, alph(3)=1-alpha * * * * Output: cs3(80) (complex) C0, not yet summed. * * ipi12(8) (integer) factors pi^2/12, not yet summed * * slam (complex) lambda(p1,p2,p3). * * isoort(8) (integer) indication of he method used * * clogi(3) (complex) log(-dyz(2,1,i)/dyz(2,2,i)) * * ilogi(3) (integer) factors i*pi in this * * ier (integer) number of digits inaccurate in * * answer * * * * Calls: ffroot,ffxxyz,ffcxyz,ffdwz,ffcdwz, * * ffcxs3,ffcs3,ffcxs4,ffcs4 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ipi12(8),isoort(8),ilogi(3),npoin,ier DOUBLE COMPLEX cs3(80),clogi(3) DOUBLE PRECISION xpi(6),dpipj(6,6),piDpj(6,6),sdel2,del2s(3), + etalam,etami(6),delpsi(3),alph(3) * * local variables: * integer i,j,k,m,ip,jsoort(8),ierw,iw,ier0,ier1,irota, + ilogip(3) logical l4,lcompl,lcpi,l4pos DOUBLE COMPLEX c,cs,calph(3),csdl2i(3),csdel2 DOUBLE COMPLEX cy(4,3),cz(4,3),cw(4,3),cdyz(2,2,3),cdwy(2,2,3), + cdwz(2,2,3),cd2yzz(3),cd2yww(3) DOUBLE COMPLEX cpi(6),cdpipj(6,6),cpiDpj(6,6),clogip(3) DOUBLE PRECISION y(4,3),z(4,3),w(4,3),dyz(2,2,3),dwy(2,2,3), + dwz(2,2,3),d2yzz(3),d2yww(3),dy2z(4,3) DOUBLE PRECISION sdel2i(3),s1,s2 DOUBLE PRECISION absc,s,xqi(6),dqiqj(6,6),qiDqj(6,6) DOUBLE PRECISION dfflo1 DOUBLE COMPLEX zxfflg external dfflo1,zxfflg * * common blocks: * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ IR case: * * but only the off-shell regulator case - the log(lam) has been * caught before * if ( lsmug ) then do 5 i=1,3 if ( xpi(i) .eq. 0 ) then j = mod(i,3)+1 k = mod(j,3)+1 if ( piDpj(i,j).eq.0 .and. piDpj(i,k).eq.0 ) then call ffrot3(irota,xqi,dqiqj,qiDqj, + xpi,dpipj,piDpj,3,4,ier) if ( npoin.eq.4 ) call ffrt3p(clogip,ilogip, + irota,clogi,ilogi,+1) call ffxc0j(cs3(1),ipi12(1),sdel2,clogip,ilogip, + xqi,dqiqj,qiDqj,0D0,4,ier) if ( npoin.eq.4 ) call ffrt3p(clogi,ilogi,irota, + clogip,ilogip,-1) return endif endif 5 continue endif * #] IR case: * #[ get roots etc: * #[ get z-roots: * if ( npoin .eq. 3 ) then l4pos = l4also * else * l4pos = .FALSE. * endif lcompl = .FALSE. ier1 = ier do 10 i=1,3 * * get roots (y,z,w) and flag what to do: 0=nothing, 1=normal, * -1=complex * ip = i+3 * first get the roots ier0 = ier if ( del2s(i) .le. 0 ) then * real case sdel2i(i) = sqrt(-del2s(i)) csdl2i(i) = sdel2i(i) * then handle the special case Si = 0 if ( xpi(ip) .eq. 0 ) then if ( i .eq. 1 .and. alph(3) .eq. 0 .or. + i .eq. 3 .and. alph(1) .eq. 0 ) then isoort(2*i-1) = 0 isoort(2*i) = 0 l4pos = .FALSE. goto 10 endif endif call ffxxyz(y(1,i),z(1,i),dyz(1,1,i),d2yzz(i),dy2z(1,i), + i,sdel2,sdel2i(i),etalam,etami,delpsi(i),xpi, + dpipj,piDpj,isoort(2*i-1),.FALSE.,6,ier0) else * complex case sdel2i(i) = sqrt(del2s(i)) csdl2i(i) = DCMPLX(0D0,sdel2i(i)) lcompl = .TRUE. call ffcxyz(cy(1,i),cz(1,i),cdyz(1,1,i),cd2yzz(i),i, + sdel2,sdel2i(i),etami,delpsi(i),xpi, + piDpj,isoort(2*i-1),.FALSE.,6,ier0) endif ier1 = max(ier1,ier0) 10 continue ier = ier1 * #] get z-roots: * #[ get w-roots: * * get w's: * ierw = ier l4 = .FALSE. lcpi = .FALSE. if ( isoort(4) .eq. 0 ) then * no error message; just bail out ierw = ierw + 100 goto 90 endif do 70 iw = 1,3,2 if ( .not. l4pos .or. alph(4-iw) .eq. 0 ) then jsoort(2*iw-1) = 0 jsoort(2*iw) = 0 l4pos = .FALSE. else if ( isoort(4) .gt. 0 .and. isoort(2*iw) .ge. 0 ) then jsoort(2*iw-1) = 1 jsoort(2*iw) = 1 d2yww(iw) = -d2yzz(2)/alph(4-iw) do 20 j=1,2 w(j+iw-1,iw) = z(j+3-iw,2)/alph(4-iw) w(j+3-iw,iw) = 1 - w(j+iw-1,iw) if ( abs(w(j+3-iw,iw)) .lt. xloss ) then s = z(j+iw-1,2) - alph(iw) if ( abs(s) .lt. xloss*alph(iw) ) then ierw = ierw + 15 goto 70 endif w(j+3-iw,iw) = s/alph(4-iw) endif dwy(j,2,iw) = dyz(2,j,2)/alph(4-iw) do 15 i=1,2 dwz(j,i,iw) = w(j,iw) - z(i,iw) if ( abs(dwz(j,i,iw)) .ge. xloss*abs(w(j,iw)) ) + goto 14 dwz(j,i,iw) = z(i+2,iw) - w(j+2,iw) if ( abs(dwz(j,i,iw)) .ge. xloss*abs(w(j+2,iw)) ) + goto 14 dwz(j,i,iw) = dwy(j,2,iw) + dyz(2,i,iw) if ( abs(dwz(j,i,iw)) .ge. xloss*abs(dwy(j,2,iw)) ) + goto 14 l4 = .TRUE. call ffdwz(dwz(1,1,iw),z(1,iw),j,i,iw, + alph(1),alph(3),xpi,dpipj,piDpj,sdel2i,6,ierw) 14 continue 15 continue 20 continue else * convert to complex ... jsoort(2*iw-1) = -10 jsoort(2*iw) = -10 if ( isoort(4).ge.0 .and. (iw.eq.1 .or. isoort(2).ge.0) ) + then cd2yzz(2) = d2yzz(2) do 21 i=1,4 cy(i,2) = y(i,2) cz(i,2) = z(i,2) 21 continue do 23 i=1,2 do 22 j=1,2 cdyz(j,i,2) = dyz(j,i,2) 22 continue 23 continue endif if ( isoort(2*iw) .ge. 0 ) then cd2yzz(iw) = d2yzz(iw) do 24 i=1,4 cy(i,iw) = y(i,iw) cz(i,iw) = z(i,iw) 24 continue do 26 i=1,2 do 25 j=1,2 cdyz(j,i,iw) = dyz(j,i,iw) 25 continue 26 continue endif cd2yww(iw) = -cd2yzz(2)/DBLE(alph(4-iw)) do 30 j=1,2 cw(j+iw-1,iw) = cz(j+3-iw,2)/DBLE(alph(4-iw)) cw(j+3-iw,iw) = 1 - cw(j+iw-1,iw) if ( absc(cw(j+3-iw,iw)) .lt. xloss ) then cs = cz(j+iw-1,2) - DBLE(alph(iw)) if ( absc(cs) .lt. xloss*alph(iw) ) ierw = ierw + 15 cw(j+3-iw,iw) = cs/DBLE(alph(4-iw)) endif cdwy(j,2,iw) = cdyz(2,j,2)/DBLE(alph(4-iw)) do 29 i=1,2 cdwz(j,i,iw) = cw(j,iw) - cz(i,iw) if ( absc(cdwz(j,i,iw)) .ge. xloss*absc(cw(j,iw)) ) + goto 31 cdwz(j,i,iw) = cz(i+2,iw) - cw(j+2,iw) if ( absc(cdwz(j,i,iw)) .ge. xloss*absc(cw(j+2,iw))) + goto 31 cdwz(j,i,iw) = cdwy(j,2,iw) + cdyz(2,i,iw) if ( absc(cdwz(j,i,iw)).ge.xloss*absc(cdwy(j,2,iw))) + goto 31 l4 = .TRUE. if ( .not. lcpi ) then lcpi = .TRUE. calph(1) = alph(1) calph(3) = alph(3) csdel2 = sdel2 do 28 k=1,6 cpi(k) = xpi(k) do 27 m=1,6 cdpipj(m,k) = dpipj(m,k) cpiDpj(m,k) = piDpj(m,k) 27 continue 28 continue endif call ffcdwz(cdwz(1,1,iw),cz(1,iw),j,i,iw, + calph(1),calph(3),cpi,cdpipj,cpiDpj,csdl2i, + csdel2,6,ierw) 31 continue 29 continue 30 continue endif endif 70 continue 90 continue ierw = ierw-ier * #] get w-roots: * #[ which case: if ( l4 ) then * 21-aug-1995. added check for isoort(2*i-1).eq.0 to avoid * undefined variables etc in ffdcs, ffdcrr. They should be * able to handle this, but are not (yet?) if ( ierw .ge. 1 .or. isoort(1).eq.0 .or. isoort(3).eq.0 + .or. isoort(5).eq.0 ) then l4pos = .FALSE. else ier = ier + ierw endif endif * #] which case: * #] get roots etc: * #[ logarithms for 4point function: if ( npoin .eq. 4 ) then do 95 i = 1,3 if ( ilogi(i) .ne. -999 ) goto 95 if ( isoort(2*i) .gt. 0 .and. + isoort(2*i-1) .ge. 0 ) then s1 = -dyz(2,1,i)/dyz(2,2,i) if ( abs(s1-1) .lt. xloss ) then clogi(i) = dfflo1(d2yzz(i)/dyz(2,2,i),ier) ilogi(i) = 0 else if ( abs(s1+1) .lt. xloss ) then clogi(i) = dfflo1(-2*sdel2i(i)/(xpi(i+3)* + dyz(2,2,i)),ier) else clogi(i) = zxfflg(abs(s1),0,0D0,ier) endif if ( dyz(2,2,i).gt.0 .and. dyz(2,1,i).gt.0 ) then ilogi(i) = -1 elseif ( dyz(2,1,i).lt.0 .and. dyz(2,2,i).lt.0) then ilogi(i) = +1 else ilogi(i) = 0 endif endif elseif ( isoort(2*i-1) .lt. 0 ) then * for stability split the unit circle up in 4*pi/2 * (this may have to be improved to 8*pi/4...) ier0 = 0 if ( DBLE(cdyz(2,1,i)) .gt. DIMAG(cdyz(2,1,i)) ) then s = 2*atan2(DIMAG(cdyz(2,1,i)),DBLE(cdyz(2,1,i))) clogi(i) = DCMPLX(0D0,s) ilogi(i) = -1 elseif ( DBLE(cdyz(2,1,i)) .lt. -DIMAG(cdyz(2,1,i))) + then if ( DIMAG(cdyz(2,1,i)) .eq. 0 ) then call fferr(84,ier) endif s = 2*atan2(-DIMAG(cdyz(2,1,i)),-DBLE(cdyz(2,1,i))) clogi(i) = DCMPLX(0D0,s) ilogi(i) = 1 else s1 = -DBLE(cdyz(2,1,i)) s2 = DIMAG(cdyz(2,1,i)) s = 2*atan2(s1,s2) clogi(i) = DCMPLX(0D0,s) ilogi(i) = 0 endif endif 95 continue * An algorithm to obtain the sum of two small logarithms more * accurately has been put in ffcc0p, not yet here endif * #] logarithms for 4point function: * #[ real case integrals: ier1 = ier if ( .not. lcompl ) then if ( .not. l4 .or. .not. l4pos ) then * normal case do 100 i=1,3 j = 2*i-1 if ( isoort(j) .ne. 0 ) then ier0 = ier call ffcxs3(cs3(20*i-19),ipi12(j),y(1,i),z(1,i), + dyz(1,1,i),d2yzz(i),dy2z(1,i),xpi,piDpj, + i,6,isoort(j),ier0) ier1 = max(ier1,ier0) endif 100 continue isoort(7) = 0 isoort(8) = 0 else do 110 i=1,3,2 j = 2*i-1 isoort(j+2) = jsoort(j) isoort(j+3) = jsoort(j+1) ier0 = ier call ffcxs4(cs3(20*i-19),ipi12(j),w(1,i),y(1,i), + z(1,i),dwy(1,1,i),dwz(1,1,i),dyz(1,1,i), + d2yww(i),d2yzz(i),xpi,piDpj,i,6,isoort(j),ier0) ier1 = max(ier1,ier0) 110 continue endif * #] real case integrals: * #[ complex case integrals: else * convert xpi if ( .not.lcpi ) then do 190 i=1,6 cpi(i) = xpi(i) 190 continue endif if ( .not. l4 .or. .not. l4pos ) then * normal case do 200 i=1,3 j = 2*i-1 ier0 = ier if ( isoort(j) .gt. 0 ) then call ffcxs3(cs3(20*i-19),ipi12(2*i-1),y(1,i), + z(1,i),dyz(1,1,i),d2yzz(i),dy2z(1,i), + xpi,piDpj,i,6,isoort(j),ier0) elseif( isoort(j) .ne. 0 ) then call ffcs3(cs3(20*i-19),ipi12(2*i-1),cy(1,i), + cz(1,i),cdyz(1,1,i),cd2yzz(i),cpi, + cpiDpj,i,6,isoort(j),ier0) endif ier1 = max(ier1,ier0) 200 continue isoort(7) = 0 isoort(8) = 0 else isoort(3) = jsoort(1) isoort(4) = jsoort(2) ier0 = ier if ( isoort(1) .gt. 0 .and. isoort(3) .gt. 0 ) then call ffcxs4(cs3(1),ipi12(1),w(1,1),y(1,1), + z(1,1),dwy(1,1,1),dwz(1,1,1),dyz(1,1,1), + d2yww(1),d2yzz(1),xpi,piDpj,1,6,isoort(1),ier0) else call ffcs4(cs3(1),ipi12(1),cw(1,1),cy(1,1), + cz(1,1),cdwy(1,1,1),cdwz(1,1,1),cdyz(1,1,1), + cd2yww(1),cd2yzz(1),cpi,cpiDpj, + DCMPLX(xpi(5)*alph(3)**2),1,6,isoort(1), + ier0) endif ier1 = max(ier1,ier0) isoort(7) = jsoort(5) isoort(8) = jsoort(6) ier0 = ier if ( isoort(5) .gt. 0 .and. isoort(7) .gt. 0 ) then call ffcxs4(cs3(41),ipi12(5),w(1,3),y(1,3), + z(1,3),dwy(1,1,3),dwz(1,1,3),dyz(1,1,3), + d2yww(3),d2yzz(3),xpi,piDpj,3,6,isoort(5),ier0) else call ffcs4(cs3(41),ipi12(5),cw(1,3),cy(1,3), + cz(1,3),cdwy(1,1,3),cdwz(1,1,3),cdyz(1,1,3), + cd2yww(3),cd2yzz(3),cpi,cpiDpj, + DCMPLX(xpi(5)*alph(1)**2),3,6,isoort(5), + ier0) endif ier1 = max(ier1,ier0) endif endif ier = ier1 * #] complex case integrals: *###] ffxc0p: end *###[ ffrt3p: subroutine ffrt3p(clogip,ilogip,irota,clogi,ilogi,idir) ***#[*comment:*********************************************************** * * * rotates the arrays clogi,ilogi also over irota (idir=+1) or * * back (-1) * * * * Input: irota (integer) index in rotation array * * clogi(3) (complex) only if idir=-1 * * ilogi(3) (integer) indicates which clogi are needed* * (idir=+1), i*pi terms (idir=-1) * * idir (integer) direction: forward (+1) or * * backward (-1) * * Output: clogip(3) (integer) clogi rotated * * ilogip(3) (integer) ilogi rotated * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer irota,idir,ilogi(3),ilogip(3) DOUBLE COMPLEX clogi(3),clogip(3) * * local variables * integer i,inew(6,6) save inew * * common blocks * #include "ff.h" * * data * data inew /1,2,3,4,5,6, + 2,3,1,5,6,4, + 3,1,2,6,4,5, + 1,3,2,6,5,4, + 3,2,1,5,4,6, + 2,1,3,4,6,5/ * #] declarations: * #[ rotate: * * the clogi, ilogi are numbered according to the p_i * if ( idir .eq. +1 ) then do 10 i=1,3 ilogip(inew(i+3,irota)-3) = ilogi(i) clogip(inew(i+3,irota)-3) = clogi(i) 10 continue else do 20 i=1,3 ilogip(i) = ilogi(inew(i+3,irota)-3) clogip(i) = clogi(inew(i+3,irota)-3) 20 continue endif * * #] rotate: *###] ffrt3p: end herwig++-2.6.0.orig/Looptools/C/ffcc0.F0000644000175000017500000006143611754474774020255 0ustar sylvestresylvestre#include "externals.h" * $Id: ffcc0.f,v 1.2 1996/06/30 19:03:55 gj Exp $ *###[ ffcc0: subroutine ffcc0(cc0,cpi,ier) ***#[*comment:*********************************************************** * * * Calculates the threepoint function closely following * * recipe in 't Hooft & Veltman, NP B(183) 1979. * * B&D metric is used throughout! * * * * p2 | | * * v | * * / \ * * m2/ \m3 * * p1 / \ p3 * * -> / m1 \ <- * * ------------------------ * * * * 1 / 1 * * = ----- \d^4Q---------------------------------------- * * ipi^2 / [Q^2-m1^2][(Q+p1)^2-m2^2][(Q-p3)^2-m3^2] * * * * If the function is infra-red divergent (p1=m2,p3=m3,m1=0 or * * cyclic) the function is calculated with a user-supplied cutoff * * lambda in the common block /ffregul/. * * * * the parameter nschem in the common block /fflags/ determines * * which recipe is followed, see ffinit.f * * * * Input: cpi(6) (complex) m1^2,m2^3,p1^2,p2^2,p3^2 * * of divergences, but C0 has none) * * /ffregul/ lambda (real) IR cutoff * * /fflags/..nschem(integer) 6: full complex, 0: real, else: * * some or all logs * * /fflags/..nwidth(integer) when |p^2-Re(m^2)| < nwidth|Im(m^2) * * use complex mass * * ier (integer) number of digits lost so far * * Output: cc0 (complex) C0, the threepoint function * * ier (integer) number of digits lost more than (at * * most) xloss^5 * * Calls: ffcc0p,ffcb0p * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cc0,cpi(6) * * local variables: * integer i,j,init DOUBLE COMPLEX cdpipj(6,6) DOUBLE PRECISION xpi(6),sprecx save init * * common blocks: * #include "ff.h" * * data * data init/0/ * * #] declarations: * #[ the real case: * * take a faster route if all masses are real or nschem < 3 * if ( nschem .ge. 3 ) then do 10 i = 1,6 if ( DIMAG(cpi(i)) .ne. 0 ) goto 30 10 continue elseif ( init .eq. 0 ) then init = 1 print *,'ffcc0: disregarding complex masses, nschem= ', + nschem endif do 20 i = 1,6 xpi(i) = DBLE(cpi(i)) 20 continue sprecx = precx precx = precc call ffxc0(cc0,xpi,ier) precx = sprecx if ( ldot ) call ffcod3(cpi) return 30 continue * * #] the real case: * #[ check input: * idsub = 0 * * #] check input: * #[ convert input: do 70 i=1,6 cdpipj(i,i) = 0 do 60 j = 1,6 cdpipj(j,i) = cpi(j) - cpi(i) 60 continue 70 continue * #] convert input: * #[ call ffcc0a: call ffcc0a(cc0,cpi,cdpipj,ier) * #] call ffcc0a: *###] ffcc0: end *###[ ffcc0r: subroutine ffcc0r(cc0,cpi,ier) ***#[*comment:*********************************************************** * * * Tries all 2 permutations of the 3pointfunction * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none integer ier DOUBLE COMPLEX cc0,cc0p,cpi(6),cqi(6) integer inew(6,2),irota,ier1,i,j,ialsav save inew #include "ff.h" data inew /1,2,3,4,5,6, + 1,3,2,6,5,4/ * #] declarations: * #[ calculations: cc0 = 0 ier = 999 ialsav = isgnal do 30 j = -1,1,2 do 20 irota=1,2 do 10 i=1,6 cqi(inew(i,irota)) = cpi(i) 10 continue print '(a,i1,a,i2)','---#[ rotation ',irota,': isgnal ', + isgnal ier1 = 0 ner = 0 id = id + 1 isgnal = ialsav call ffcc0(cc0p,cqi,ier1) ier1 = ier1 + ner print '(a,i1,a,i2)','---#] rotation ',irota,': isgnal ', + isgnal print '(a,2g28.16,i3)','c0 = ',cc0p,ier1 if ( ier1 .lt. ier ) then cc0 = cc0p ier = ier1 endif 20 continue ialsav = -ialsav 30 continue * #] calculations: *###] ffcc0r: end *###[ ffcc0a: subroutine ffcc0a(cc0,cpi,cdpipj,ier) ***#[*comment:*********************************************************** * * * see ffcc0 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cc0,cpi(6),cdpipj(6,6) * * local variables: * integer i,j,irota,inew(6,6),i1,i2,i3,initlo,ithres(3),ifound logical ljust * DOUBLE COMPLEX cs,cs1,cs2 DOUBLE COMPLEX cqi(6),cqiqj(6,6),cqiDqj(6,6) DOUBLE PRECISION xqi(6),dqiqj(6,6),qiDqj(6,6),sprec save initlo * * common blocks: * #include "ff.h" * * memory * integer iermem(memory),ialmem(memory),nscmem(memory),memind, + ierini DOUBLE COMPLEX cpimem(6,memory) DOUBLE COMPLEX cc0mem(memory) DOUBLE PRECISION dl2mem(memory) save memind,iermem,ialmem,cpimem,cc0mem data memind /0/ * * data * data inew /1,2,3,4,5,6, + 2,3,1,5,6,4, + 3,1,2,6,4,5, + 1,3,2,6,5,4, + 3,2,1,5,4,6, + 2,1,3,4,6,5/ data initlo /0/ * * #] declarations: * #[ initialisations: if ( lmem .and. memind .eq. 0 ) then do 2 i=1,memory do 1 j=1,6 cpimem(j,i) = 0 1 continue ialmem(i) = 0 nscmem(i) = -1 2 continue endif idsub = 0 ljust = .FALSE. * #] initialisations: * #[ handle special cases: if ( DIMAG(cpi(1)).eq.0 .and. DIMAG(cpi(2)).eq.0 .and. + DIMAG(cpi(3)).eq.0 ) then do 4 i=1,6 xqi(i) = DBLE(cpi(i)) do 3 j=1,6 dqiqj(j,i) = DBLE(cdpipj(j,i)) 3 continue 4 continue sprec = precx precx = precc call ffxc0a(cc0,xqi,dqiqj,ier) precx = sprec if ( ldot ) call ffcod3(cpi) return endif * goto 5 * No special cases for the moment... ** * The infrared divergent diagrams cannot be complex ** * The general case cannot handle cpi=0, pj=pk. These are simple * though. ** * if ( cpi(4) .eq. 0 .and. cdpipj(5,6) .eq. 0 .and. cdpipj(1,2) * + .ne. 0 ) then * call ffcb0p(cs1,-cpi(5),cpi(1),cpi(3),cdpipj(1,6), * + cdpipj(3,5),cdpipj(1,3),ier) * call ffcb0p(cs2,-cpi(5),cpi(2),cpi(3),cdpipj(2,5), * + cdpipj(3,5),cdpipj(2,3),ier) * cs = cs1 - cs2 * cc0 = cs/cdpipj(1,2) * elseif ( cpi(6) .eq. 0 .and. cdpipj(4,5) .eq. 0 .and. * + cdpipj(3,1) .ne. 0 ) then * call ffcb0p(cs1,-cpi(4),cpi(3),cpi(2),cdpipj(3,5), * + cdpipj(2,4),cdpipj(3,2),ier) * call ffcb0p(cs2,-cpi(4),cpi(1),cpi(2),cdpipj(1,4), * + cdpipj(2,4),cdpipj(1,2),ier) * cs = cs1 - cs2 * cc0 = cs/cdpipj(3,1) * elseif ( cpi(5) .eq. 0 .and. cdpipj(6,4) .eq. 0 .and. * + cdpipj(2,3) .ne. 0 ) then * call ffcb0p(cs1,-cpi(6),cpi(2),cpi(1),cdpipj(2,4), * + cdpipj(1,6),cdpipj(2,1),ier) * call ffcb0p(cs2,-cpi(6),cpi(3),cpi(1),cdpipj(3,6), * + cdpipj(1,6),cdpipj(3,1),ier) * cs = cs1 - cs2 * cc0 = cs/cdpipj(2,3) * else * goto 5 * endif ** * common piece - excuse my style ** * print *,'ffcc0: WARNING: this algorithm has not yet been tested' * if ( absc(cs) .lt. xloss*absc(cs1) ) * + call ffwarn(26,ier,absc(cs),absc(cs1)) ** * return * 5 continue * #] handle special cases: * #[ rotate to alpha in (0,1): call ffcrt3(irota,cqi,cqiqj,cpi,cdpipj,6,2,ier) * #] rotate to alpha in (0,1): * #[ look in memory: ierini = ier+ner if ( lmem ) then do 70 i=1,memory do 60 j=1,6 if ( cqi(j) .ne. cpimem(j,i) ) goto 70 60 continue if ( ialmem(i) .ne. isgnal .or. + nscmem(i) .ne. nschem ) goto 70 * we found an already calculated masscombination .. * (maybe check differences as well) cc0 = cc0mem(i) ier = ier+iermem(i) if ( ldot ) then fodel2 = dl2mem(i) fdel2 = fodel2 * we forgot to recalculate the stored quantities ljust = .TRUE. goto 71 endif return 70 continue endif 71 continue * #] look in memory: * #[ dot products: call ffcot3(cqiDqj,cqi,cqiqj,6,ier) * * save dotproducts for tensor functions if requested * if ( ldot ) then do 75 i=1,6 do 74 j=1,6 cfpij3(j,i) = cqiDqj(inew(i,irota),inew(j,irota)) 74 continue 75 continue if ( irota .gt. 3 ) then * * the signs of the s's have been changed * do 77 i=1,3 do 76 j=4,6 cfpij3(j,i) = -cfpij3(j,i) cfpij3(i,j) = -cfpij3(i,j) 76 continue 77 continue endif * * also give the real dotproducts as reals * do 79 i=4,6 do 78 j=4,6 fpij3(j,i) = DBLE(cfpij3(j,i)) 78 continue 79 continue endif if ( ljust ) return * #] dot products: * #[ handle poles-only approach: sprec = precx precx = precc if ( nschem.le.6 ) then if ( initlo.eq.0 ) then initlo = 1 if ( nschem.eq.1 .or. nschem.eq.2 ) then print *,'ffcc0a: disregarding all complex masses' elseif ( nschem.eq.3 ) then print *,'ffcc0a: undefined nschem=3' elseif ( nschem.eq.4 ) then print *,'ffcc0a: using the scheme in which ', + 'complex masses are used everywhere when ', + 'there is a divergent log' elseif ( nschem.eq.5 ) then print *,'ffcc0a: using the scheme in which ', + 'complex masses are used everywhere when ', + 'there is a divergent or almost divergent log' elseif ( nschem.eq.6 ) then print *,'ffcc0a: using the scheme in which ', + 'complex masses are used everywhere when ', + 'there is a singular log' elseif ( nschem.eq.7 ) then print *,'ffcc0a: using complex masses' endif if ( nschem.ge.3 ) then print *,'ffcc0a: switching to complex when ', + '|p^2-Re(m^2)| < ',nwidth,'*|Im(m^2)|' endif endif do 9 i=1,6 xqi(i) = DBLE(cqi(i)) do 8 j=1,6 dqiqj(j,i) = DBLE(cqiqj(j,i)) qiDqj(j,i) = DBLE(cqiDqj(j,i)) 8 continue 9 continue i1 = 0 ithres(1) = 0 ithres(2) = 0 ithres(3) = 0 if ( nschem.le.2 ) goto 21 * do 10 i1=1,3 * * search for a combination of 2 almost on-shell particles * and a light one * i2 = mod(i1,3)+1 i3 = mod(i2,3)+1 call ffbglg(ifound,cqi,cqiqj,cqiDqj,6,i1,i2,i3,i1+3, + i3+3) if ( ifound .ne. 0 ) goto 11 10 continue i1 = 0 11 continue if ( nschem.ge.4 .and. i1.ne.0 ) goto 30 if ( nschem.le.3 ) goto 21 * do 20 i=1,3 i2 = mod(i,3)+1 call ffthre(ithres(i),cqi,cqiqj,6,i,i2,i+3) 20 continue * if ( nschem.eq.5 .and. (ithres(1).eq.2 .or. + ithres(2).eq.2 .or. ithres(3).eq.2) ) goto 30 if ( nschem.eq.6 .and. (ithres(1).eq.1 .or. + ithres(2).eq.1 .or. ithres(3).eq.1) ) goto 30 * 21 continue * * The infrared divergent diagrams are calculated in ffxc0i: * if ( dqiqj(2,4).eq.0 .and. dqiqj(3,6).eq.0 .and. xqi(1).eq.0 + .or. dqiqj(3,5).eq.0 .and. dqiqj(1,4).eq.0 .and. xqi(2).eq.0 + .or. dqiqj(1,6).eq.0 .and. dqiqj(2,5).eq.0 .and. xqi(3).eq.0 + ) then call ffxc0i(cc0,xqi,dqiqj,ier) else call ffxc0b(cc0,xqi,dqiqj,qiDqj,ier) endif * the dotproducts are already set, but I forgot this if ( ldot ) fodel2 = fdel2 goto 31 * * the complex case * 30 continue precx = sprec call ffcc0b(cc0,cqi,cqiqj,cqiDqj,ier) 31 continue * * #] handle poles-only approach: * #[ call ffcc0b: else precx = sprec call ffcc0b(cc0,cqi,cqiqj,cqiDqj,ier) endif * #] call ffcc0b: * #[ add to memory: if ( lmem ) then memind = memind + 1 if ( memind .gt. memory ) memind = 1 do 200 j=1,6 cpimem(j,memind) = cqi(j) 200 continue cc0mem(memind) = cc0 iermem(memind) = ier+ner-ierini ialmem(memind) = isgnal nscmem(memind) = nschem dl2mem(memind) = fodel2 endif * #] add to memory: *###] ffcc0a: end *###[ ffcc0b: subroutine ffcc0b(cc0,cqi,cqiqj,cqiDqj,ier) ***#[*comment:*********************************************************** * * * see ffcc0 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none integer nerr parameter (nerr=6) * * arguments * DOUBLE COMPLEX cc0,cqi(6),cqiqj(6,6),cqiDqj(6,6) integer ier * * local variables: * integer isoort(8),ipi12(8),i,j,k,ipi12t,ilogi(3),ier0,ieri(nerr) DOUBLE COMPLEX cs3(80),cs,cs1,cs2,cslam,c,cel2,cel3,cel2s(3), + cel3mi(3),clogi(3),calph(3),cblph(3),cetalm,cetami(6), + csdel2,celpsi(3) DOUBLE PRECISION xmax,absc,del2,qiDqj(6,6) * * common blocks: * #include "ff.h" * * statement function: * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * #] declarations: * #[ calculations: * * some determinants * do 98 i = 1,nerr ieri(i) = 0 98 continue do 104 i=4,6 do 103 j=4,6 qiDqj(j,i) = DBLE(cqiDqj(j,i)) 103 continue 104 continue call ffdel2(del2,qiDqj,6,4,5,6,1,ier) fodel2 = del2 fdel2 = fodel2 cel2 = DCMPLX(DBLE(del2)) call ffcel3(cel3,cqiDqj) if ( DIMAG(cel3).ne.0 .and. + abs(DIMAG(cel3)).lt.precc*abs(DBLE(cel3)) ) then cel3 = DBLE(cel3) endif call ffcl3m(cel3mi,.TRUE.,cel3,cel2,cqi,cqiqj,cqiDqj,6, 4,5,6, + 1,3) do 105 i=1,3 j = i+1 if ( j .eq. 4 ) j = 1 call ffcel2(cel2s(i),cqiDqj,6,i+3,i,j,1,ieri(i)) k = i-1 if ( k .eq. 0 ) k = 3 call ffcl2p(celpsi(i),cqi,cqiqj,cqiDqj,i+3,j+3,k+3,i,j,k,6) 105 continue cetalm = cel3*DBLE(1/del2) do 108 i=1,3 cetami(i) = cel3mi(i)*DBLE(1/del2) 108 continue csdel2 = isgnal*DBLE(sqrt(-del2)) ier0 = 0 do 99 i=1,nerr ier0 = max(ier0,ieri(i)) 99 continue ier = ier + ier0 * * initialize cs3: * do 80 i=1,80 cs3(i) = 0 80 continue do 90 i=1,8 ipi12(i) = 0 90 continue * * get alpha,1-alpha * call ffcoot(cblph(1),calph(1),cqi(5),-cqiDqj(5,6),cqi(6),csdel2, + ier) call ffcoot(calph(3),cblph(3),cqi(5),-cqiDqj(5,4),cqi(4),csdel2, + ier) cs1 = cblph(1) - chalf cs2 = calph(1) - chalf if ( l4also .and. ( DBLE(calph(1)) .gt. 1 .or. DBLE(calph(1)) + .lt. 0 ) .and. absc(cs1) .lt. absc(cs2) ) then calph(1) = cblph(1) calph(3) = cblph(3) csdel2 = -csdel2 isgnal = -isgnal endif cslam = 2*csdel2 * * and the calculations * call ffcc0p(cs3,ipi12,isoort,clogi,ilogi,cqi,cqiqj,cqiDqj, + csdel2,cel2s,cetalm,cetami,celpsi,calph,3,ier) * * sum'em up: * cs = 0 xmax = 0 do 110 i=1,80 cs = cs + cs3(i) xmax = max(xmax,absc(cs)) 110 continue ipi12t = ipi12(1) do 120 i=2,8 ipi12t = ipi12t + ipi12(i) 120 continue cs = cs + ipi12t*DBLE(pi12) * * check for imaginary part zero (this may have to be dropped) * if ( abs(DIMAG(cs)) .lt. precc*abs(DBLE(cs)) ) + cs = DCMPLX(DBLE(cs)) cc0 = - cs/cslam * #] calculations: *###] ffcc0b: end *###[ ffcrt3: subroutine ffcrt3(irota,cqi,cdqiqj,cpi,cdpipj,ns,iflag,ier) ***#[*comment:*********************************************************** * * * rotates the arrays cpi, cdpipj into cqi,cdqiqj so that * * cpi(6),cpi(4) suffer the strongest outside cancellations and * * cpi(6) > cpi(4) if iflag = 1, so that cpi(5) largest and cpi(5) * * and cpi(6) suffer cancellations if iflag = 2. * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer irota,ns,iflag,ier DOUBLE COMPLEX cpi(ns),cdpipj(ns,ns),cqi(ns),cdqiqj(ns,ns) * * local variables * DOUBLE PRECISION a1,a2,a3,xpimax,absc DOUBLE COMPLEX c integer i,j,inew(6,6) save inew * * common blocks * #include "ff.h" * * data * data inew /1,2,3,4,5,6, + 2,3,1,5,6,4, + 3,1,2,6,4,5, + 1,3,2,6,5,4, + 3,2,1,5,4,6, + 2,1,3,4,6,5/ * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * #] declarations: * #[ get largest cancellation: if ( iflag .eq. 1 ) then a1 = absc(cdpipj(6,4))/max(absc(cpi(6)+cpi(4)),xclogm) a2 = absc(cdpipj(5,4))/max(absc(cpi(5)+cpi(4)),xclogm) a3 = absc(cdpipj(5,6))/max(absc(cpi(6)+cpi(5)),xclogm) if ( a1 .le. a2 .and. a1 .le. a3 ) then if ( absc(cpi(6)) .lt. absc(cpi(4)) ) then irota = 4 else irota = 1 endif elseif ( a2 .le. a3 ) then if ( absc(cpi(4)) .lt. absc(cpi(5)) ) then irota = 6 else irota = 3 endif else if ( absc(cpi(5)) .lt. absc(cpi(6)) ) then irota = 5 else irota = 2 endif endif elseif ( iflag .eq. 2 ) then xpimax = max(DBLE(cpi(4)),DBLE(cpi(5)),DBLE(cpi(6))) if ( xpimax .eq. 0 ) then if ( DBLE(cpi(5)) .ne. 0 ) then irota = 1 elseif ( DBLE(cpi(4)) .ne. 0 ) then irota = 2 elseif ( DBLE(cpi(6)) .ne. 0 ) then irota = 3 else call fferr(40,ier) return endif elseif ( DBLE(cpi(5)) .eq. xpimax ) then if ( DBLE(cpi(4)) .le. DBLE(cpi(6)) ) then irota = 1 else irota = 4 endif elseif ( DBLE(cpi(4)) .eq. xpimax ) then if ( DBLE(cpi(5)) .ge. DBLE(cpi(6)) ) then irota = 2 else irota = 5 endif else if ( DBLE(cpi(4)) .ge. DBLE(cpi(6)) ) then irota = 3 else irota = 6 endif endif else call fferr(35,ier) endif * #] get largest cancellation: * #[ rotate: do 20 i=1,6 cqi(inew(i,irota)) = cpi(i) do 10 j=1,6 cdqiqj(inew(i,irota),inew(j,irota)) = cdpipj(i,j) 10 continue 20 continue * #] rotate: *###] ffcrt3: end *###[ ffcot3: subroutine ffcot3(cpiDpj,cpi,cdpipj,ns,ier) ***#[*comment:*********************************************************** * * * calculate the dotproducts pi.pj with * * * * pi = si i1=1,3 * * pi = p(i-3) i1=4,6 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ns,ier DOUBLE COMPLEX cpi(ns),cdpipj(ns,ns),cpiDpj(ns,ns) * * locals * integer is1,is2,is3,ip1,ip2,ip3,ier1 DOUBLE COMPLEX c DOUBLE PRECISION absc * * rest * #include "ff.h" absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * #] declarations: * #[ calculations: * ier1 = 0 do 10 is1=1,3 is2 = is1 + 1 if ( is2 .eq. 4 ) is2 = 1 is3 = is2 + 1 if ( is3 .eq. 4 ) is3 = 1 ip1 = is1 + 3 ip2 = is2 + 3 ip3 = is3 + 3 * * pi.pj, si.sj * cpiDpj(is1,is1) = cpi(is1) cpiDpj(ip1,ip1) = cpi(ip1) * * si.s(i+1) * if ( absc(cdpipj(is1,ip1)) .le. absc(cdpipj(is2,ip1)) ) then cpiDpj(is1,is2) = (cdpipj(is1,ip1) + cpi(is2))/2 else cpiDpj(is1,is2) = (cdpipj(is2,ip1) + cpi(is1))/2 endif cpiDpj(is2,is1) = cpiDpj(is1,is2) * * pi.si * if ( absc(cdpipj(is2,is1)) .le. absc(cdpipj(is2,ip1)) ) then cpiDpj(ip1,is1) = (cdpipj(is2,is1) - cpi(ip1))/2 else cpiDpj(ip1,is1) = (cdpipj(is2,ip1) - cpi(is1))/2 endif cpiDpj(is1,ip1) = cpiDpj(ip1,is1) * * pi.s(i+1) * if ( absc(cdpipj(is2,is1)) .le. absc(cdpipj(ip1,is1)) ) then cpiDpj(ip1,is2) = (cdpipj(is2,is1) + cpi(ip1))/2 else cpiDpj(ip1,is2) = (cdpipj(ip1,is1) + cpi(is2))/2 endif cpiDpj(is2,ip1) = cpiDpj(ip1,is2) * * pi.s(i+2) * if ( (absc(cdpipj(is2,is1)) .le. absc(cdpipj(ip3,is1)) .and. + absc(cdpipj(is2,is1)) .le. absc(cdpipj(is2,ip2))) .or. + (absc(cdpipj(ip3,ip2)) .le. absc(cdpipj(ip3,is1)) .and. + absc(cdpipj(ip3,ip2)).le.absc(cdpipj(is2,ip2))))then cpiDpj(ip1,is3) = (cdpipj(ip3,ip2)+cdpipj(is2,is1))/2 else cpiDpj(ip1,is3) = (cdpipj(ip3,is1)+cdpipj(is2,ip2))/2 endif cpiDpj(is3,ip1) = cpiDpj(ip1,is3) * * pi.p(i+1) * if ( absc(cdpipj(ip3,ip1)) .le. absc(cdpipj(ip3,ip2)) ) then cpiDpj(ip1,ip2) = (cdpipj(ip3,ip1) - cpi(ip2))/2 else cpiDpj(ip1,ip2) = (cdpipj(ip3,ip2) - cpi(ip1))/2 endif cpiDpj(ip2,ip1) = cpiDpj(ip1,ip2) 10 continue ier = ier + ier1 * #] calculations: *###] ffcot3: end *###[ ffbglg: subroutine ffbglg(ifound,cqi,cqiqj,cqiDqj,ns,i1,i2,i3,ip1,ip3) ***#[*comment:*********************************************************** * * * Find a configuration which contains big logs, i.e. terms which * * would be IR divergent but for the finite width effects. * * We also use the criterium that delta^{s1 s2 s[34]}_{s1 s2 s[34]}* * should not be 0 when m^2 is shifted over nwidth*Im(m^2) * * * * Input: cqi(ns) (complex) masses, p^2 * * cqiqj(ns,ns) (complex) diff cqi(i)-cqi(j) * * * cqiDqj(ns,ns) (complex) cqi(i).cqi(j) * * * ns (integer) size of cqi,cqiqj * * i1,i2,i3 (integer) combo to be tested * * small,~onshell,~onshell * * ip1,ip3 (integer) (i1,i2) and (i1,i3) inx * * Output: ifound (integer) 0: no divergence, 1: IR * * -1: del(s,s,s)~0 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ifound,ns,i1,i2,i3,ip1,ip3 DOUBLE COMPLEX cqi(ns),cqiqj(ns,ns),cqiDqj(ns,ns) * * locals vars * integer i123 DOUBLE PRECISION absc DOUBLE COMPLEX cel3,cdm2,cdm3,c * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * #] declarations: * #[ work: ifound = 0 if ( abs(DBLE(cqi(i1))) .lt. -xloss*(DIMAG(cqi(i2)) + + DIMAG(cqi(i3))) + .and. abs(DBLE(cqiqj(ip1,i2))) .le. -nwidth*DIMAG(cqi(i2)) + .and. abs(DBLE(cqiqj(ip3,i3))) .le. -nwidth*DIMAG(cqi(i3)) + ) then ifound = 1 return endif if ( nschem.ge.5 .and. cqi(i1).eq.0 ) then i123 = 2**i1 + 2**i2 + 2**i3 if ( i123.eq.2**1+2**2+2**3 .or. i123.eq.2**1+2**2+2**4 ) + then cel3 = - cqiDqj(i1,i2)**2*cqi(i3) + - cqiDqj(i1,i3)**2*cqi(i2) + + 2*cqiDqj(i1,i2)*cqiDqj(i1,i3)*cqiDqj(i2,i3) cdm2 = cqiDqj(i1,i2)*cqiDqj(ip3,i3) + + cqiDqj(i1,i3)*cqiDqj(ip1,i3) cdm3 = -cqiDqj(i1,i2)*cqiDqj(ip3,i2) - + cqiDqj(i1,i3)*cqiDqj(ip1,i2) if ( 2*absc(cel3) .lt.-nwidth*(absc(cdm2)*DIMAG(cqi(i2)) + + absc(cdm3)*DIMAG(cqi(i3))) ) then ifound = -1 endif endif endif * #] work: *###] ffbglg: end *###[ ffthre: subroutine ffthre(ithres,cqi,cqiqj,ns,i1,i2,ip) ***#[*comment:*********************************************************** * * * look for threshold effects. * * ithres = 1: 3 heavy masses * * ithres = 2: 2 masses almost equal and 1 zero * * * * Input: cqi(ns) (complex) usual masses,p^2 * * cqiqj(ns,ns) (complex) cqi(i)-cqi(j) * * ns (integer) size * * i1,i2 (integer) position to be tested * * ip (integer) (i1,i2) index * * * * Output: ithres (integer) see above, 0 if nothing * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ithres,ns,i1,i2,ip DOUBLE COMPLEX cqi(ns),cqiqj(ns,ns) * * local variables * integer ier0 DOUBLE COMPLEX c DOUBLE PRECISION absc,xq1,xq2,xq3,dq1q2,dq1q3,dq2q3,xlam,d1,d2, + sprecx * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * #] declarations: * #[ work: ithres = 0 if ( DIMAG(cqi(i1)).eq.0 .and. DIMAG(cqi(i2)).eq.0 .or. + nschem.le.4 ) return if ( DBLE(cqi(i1)).lt.-DIMAG(cqi(i2)) .and. + abs(DBLE(cqiqj(ip,i2))).lt.-nwidth*DIMAG(cqi(i2)) + .or. DBLE(cqi(i2)).lt.-DIMAG(cqi(i1)) .and. + abs(DBLE(cqiqj(ip,i1))).lt.-nwidth*DIMAG(cqi(i1)) ) then ithres = 2 elseif ( nschem.ge.6 .and. DBLE(cqi(i1)).ne.0 .and. + DBLE(cqi(i2)).ne.0 ) then ier0 = 0 xq1 = DBLE(cqi(i1)) xq2 = DBLE(cqi(i2)) xq3 = DBLE(cqi(ip)) dq1q2 = DBLE(cqiqj(i1,i2)) dq1q3 = DBLE(cqiqj(i1,ip)) dq2q3 = DBLE(cqiqj(i2,ip)) sprecx = precx precx = precc call ffxlmb(xlam,xq1,xq2,xq3, dq1q2,dq1q3,dq2q3) precx = sprecx d1 = absc(cqiqj(i1,ip) - cqi(i2)) d2 = absc(cqiqj(i2,ip) - cqi(i1)) * if ( d1 .lt. -nwidth*DIMAG(cqi(i1)) .or. ** + d2 .lt. -nwidth*DIMAG(cqi(i2)) ) ** + call ffwarn(182,ier0,x1,x1) if ( abs(xlam) .lt. -nwidth*(DBLE(d1)* + DIMAG(cqi(i1)) + d2*DIMAG(cqi(i2))) ) then ithres = 1 endif endif * #] work: *###] ffthre: end *###[ ffcod3: subroutine ffcod3(cpi) ***#[*comment:*********************************************************** * * * Convert real dorproducts into complex ones, adding the * * imaginary parts where appropriate. * * * * Input: cpi(6) complex m^2, p^2 * * /ffdots/fpij3(6,6) real p.p real * * * * Output: /ffcots/cfpij3(6,6) complex p.p complex * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX cpi(6) * * local variables * integer i,i1,i2,ip * * common blocks * #include "ff.h" * * #] declarations: * #[ add widths: * do 25 i=1,3 ip = i+3 i1 = 1 + mod(i,3) i2 = 1 + mod(i1,3) * s.s cfpij3(i,i) = cpi(i) cfpij3(i1,i) = DCMPLX(DBLE(fpij3(i1,i)), + (DIMAG(cpi(i1))+DIMAG(cpi(i)))/2) cfpij3(i,i1) = cfpij3(i1,i) * s.p cfpij3(i,ip) = DCMPLX(DBLE(fpij3(i,ip)), + (DIMAG(cpi(i1))-DIMAG(cpi(i)))/2) cfpij3(ip,i) = cfpij3(i,ip) cfpij3(i1,ip) = DCMPLX(DBLE(fpij3(i1,ip)), + (DIMAG(cpi(i1))-DIMAG(cpi(i)))/2) cfpij3(ip,i1) = cfpij3(i1,ip) cfpij3(i2,ip) = DCMPLX(DBLE(fpij3(i2,ip)), + (DIMAG(cpi(i1))-DIMAG(cpi(i)))/2) cfpij3(ip,i2) = cfpij3(i2,ip) * p.p cfpij3(ip,ip) = cpi(ip) cfpij3(ip,i1+3) = fpij3(ip,i1+3) cfpij3(i1+3,ip) = cfpij3(ip,i1+3) 25 continue fodel2 = fdel2 * * #] add widths: *###] ffcod3: end herwig++-2.6.0.orig/Looptools/C/ffcc0p.F0000644000175000017500000003034411754474774020427 0ustar sylvestresylvestre#include "externals.h" *###[ ffcc0p: subroutine ffcc0p(cs3,ipi12,isoort,clogi,ilogi,cpi,cpipj, + cpiDpj,sdel2,cel2si,etalam,etami,delpsi,alpha,npoin,ier) ***#[*comment:*********************************************************** * * * Calculates the threepoint function closely following * * recipe in 't Hooft & Veltman, NP B(183) 1979. * * Bjorken and Drell metric is used nowadays! * * * * p2 ^ | * * | | * * / \ * * m2/ \m3 * * p1 / \ p3 * * <- / m1 \ -> * * ------------------------ * * * * Input: cpi(1-3) (complex) pi squared (,2=untransformed * * when npoin=4) * * cpi(4-6) (complex) internal mass squared * * cpipj(6,6) (complex) cpi(i)-cpi(j) * * cpiDpj(6,6) (complex) pi(i).pi(j) * * * * Output: cs3 (complex)(48) C0, not yet summed. * * ipi12 (integer)(3) factors pi^2/12, not yet summed * * cslam (complex) lambda(p1,p2,p3). * * isoort (integer)(3) indication of he method used * * ier (integer) 0=ok, 1=inaccurate, 2=error * * * * Calls: ffcel2,ffcoot,ffccyz,ffcdwz,ffcs3,ffcs4 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ipi12(8),isoort(8),ilogi(3),npoin,ier DOUBLE COMPLEX cs3(80),clogi(3),cpi(6),cpipj(6,6), + cpiDpj(6,6),sdel2,cel2si(3),etalam,etami(6), + delpsi(3),alpha(3) * * local variables: * integer i,j,k,ip,ierw,jsoort(8),iw,ismall(3) logical l4,l4pos DOUBLE COMPLEX c,cs,zfflog,cs1,cs2,cs4 DOUBLE COMPLEX cy(4,3),cz(4,3),cw(4,3),cdyz(2,2,3), + cdwy(2,2,3),cdwz(2,2,3),cd2yzz(3),cd2yww(3) DOUBLE COMPLEX csdl2i(3) * DOUBLE COMPLEX cyp,cym,ca,cb,cc,cd DOUBLE COMPLEX zfflo1 DOUBLE PRECISION absc external zfflo1,zfflog * * common blocks: * #include "ff.h" absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ get roots etc: * #[ get z-roots: if ( npoin .ne. 3 ) then l4pos = .FALSE. else l4pos = l4also endif do 10 i=1,3 * * get roots (y,z) * ip = i+3 * first get the roots j = i+1 if ( j .eq. 4 ) j = 1 csdl2i(i) = sqrt(-cel2si(i)) if ( cpi(ip) .eq. 0 ) then if ( i .eq. 1 .and. alpha(3) .eq. 0 .or. + i .eq. 3 .and. alpha(1) .eq. 0 ) then isoort(2*i-1) = 0 isoort(2*i) = 0 l4pos = .FALSE. goto 10 endif endif call ffccyz(cy(1,i),cz(1,i),cdyz(1,1,i),cd2yzz(i),i, + sdel2,csdl2i(i),etalam,etami,delpsi(i), + cpi,cpiDpj,isoort(2*i-1),ier) 10 continue * #] get z-roots: * #[ get w-roots: * * get w's: * ierw = 0 l4 = .FALSE. if ( isoort(4) .eq. 0 ) then call fferr(10,ierw) goto 90 endif do 70 iw = 1,3,2 if ( .not. l4pos .or. alpha(4-iw) .eq. 0 ) then jsoort(2*iw-1) = 0 jsoort(2*iw) = 0 l4pos = .FALSE. else jsoort(2*iw-1) = -1 jsoort(2*iw) = -1 cd2yww(iw) = -cd2yzz(2)/alpha(4-iw) do 20 j=1,2 cw(j+iw-1,iw) = cz(j+3-iw,2)/alpha(4-iw) cw(j+3-iw,iw) = 1 - cw(j+iw-1,iw) if ( absc(cw(j+3-iw,iw)) .lt. xloss ) then cs = cz(j+iw-1,2) - alpha(iw) if ( absc(cs) .lt. xloss*absc(alpha(iw)) ) then ierw = 1 goto 70 endif cw(j+3-iw,iw) = cs/alpha(4-iw) endif cdwy(j,2,iw) = cdyz(2,j,2)/alpha(4-iw) do 15 i=1,2 cdwz(j,i,iw) = cw(j,iw) - cz(i,iw) if ( absc(cdwz(j,i,iw)) .ge. xloss*absc(cw(j,iw)) ) + goto 14 cdwz(j,i,iw) = cz(i+2,iw) - cw(j+2,iw) if ( absc(cdwz(j,i,iw)) .ge. xloss*absc(cw(j+2,iw)) ) + goto 14 cdwz(j,i,iw) = cdwy(j,2,iw) + cdyz(2,i,iw) if ( absc(cdwz(j,i,iw)) .ge. xloss*absc(cdwy(j,2,iw)) ) + goto 14 l4 = .TRUE. call ffcdwz(cdwz(1,1,iw),cz(1,iw),j,i,iw, + alpha(1),alpha(3),cpi,cpipj,cpiDpj,csdl2i, + sdel2,6,ierw) 14 continue 15 continue 20 continue endif 70 continue * #] get w-roots: * #[ which case: 90 if ( l4 ) then if ( DIMAG(alpha(1)) .ne. 0 ) then l4pos = .FALSE. elseif ( ierw .ge. 1 ) then l4pos = .FALSE. else ier = max(ier,ierw) endif endif * #] which case: * #] get roots etc: * #[ logarithms for 4point function: if ( npoin .eq. 4 ) then do 95 i = 1,3 ismall(i) = 0 if ( ilogi(i) .ne. -999 ) goto 95 if ( isoort(2*i) .ne. 0 ) then * maybe add sophisticated factors i*pi later c = -cdyz(2,1,i)/cdyz(2,2,i) if ( absc(c-1) .lt. xloss ) then cs = cd2yzz(i)/cdyz(2,2,i) clogi(i) = zfflo1(cs,ier) ilogi(i) = 0 ismall(i) = 1 elseif ( DBLE(c) .gt. 0 ) then clogi(i) = zfflog(c,0,czero,ier) ilogi(i) = 0 else if ( absc(c+1) .lt. xloss ) then cs = -2*csdl2i(i)/cdyz(2,2,i)/ + DBLE(cpi(i+3)) clogi(i) = zfflo1(cs,ier) ismall(i) = -1 else cs = 0 clogi(i) = zfflog(-c,0,czero,ier) endif if ( DIMAG(c).lt.0 .or. DIMAG(cs).lt.0 ) then ilogi(i) = -1 elseif ( DIMAG(c).gt.0 .or. DIMAG(cs).gt.0 ) then ilogi(i) = +1 elseif ( DBLE(cdyz(2,2,i)) .eq. 0 ) then ilogi(i)=-nint(sign(1D0,DBLE(cpi(i+3)))) ier = ier + 50 print *,'doubtful imaginary part ',ilogi(i) endif if ( abs(DIMAG(c)).lt.precc*absc(c) .and. + abs(DIMAG(cs)).lt.precc*absc(cs) ) then print *,'ffcc0p: error: imaginary part doubtful' ier = ier + 50 endif endif endif 95 continue do 96 i=1,3 j = i + 1 if ( j .eq. 4 ) j = 1 if ( abs(ismall(i)+ismall(j)) .eq. 2 .and. absc(clogi(i)+ + clogi(j)) .lt. xloss*absc(clogi(i)) ) then * assume that we got here because of complex sqrt(-delta) cs1=-2*cI*DIMAG(cy(2,i))*csdl2i(j)/DBLE(cpi(j+3))/ + (cdyz(2,2,i)*cdyz(2,2,j)) cs2=-2*cI*DIMAG(cy(2,j))*csdl2i(i)/DBLE(cpi(i+3))/ + (cdyz(2,2,i)*cdyz(2,2,j)) cs = cs1 + cs2 if ( absc(cs) .lt. xloss*absc(cs1) ) then k = j+1 if ( k .eq. 4 ) k = 1 cs1 = cpipj(j+3,i+3)*cpi(j) cs2 = cpiDpj(k+3,j)*cpiDpj(j+3,j) cs4 = -cpiDpj(k+3,j)*cpiDpj(i+3,j) cs = cs1 + cs2 + cs4 if ( absc(cs) .lt. xloss*max(absc(cs1),absc(cs2), + absc(cs4)) ) then print *,'ffcc0p: cancellations in delj-deli' goto 96 endif cs1 = cI*DIMAG(cy(2,j))*cs/(csdl2i(i)+csdl2i(j)) call ffcl2t(cs2,cpiDpj,k+3,j,4,5,6,+1,-1,6) cs2 = -cs2*csdl2i(j)/sdel2/DBLE(cpi(j+3)) cs = cs1 + cs2 if ( absc(cs) .lt. xloss*absc(cs1) ) then print *,'ffcc0p: cancellations in extra terms' goto 96 endif cs = -2*cs/DBLE(cpi(i+3))/(cdyz(2,2,i)* + cdyz(2,2,j)) endif clogi(i) = zfflo1(cs,ier) clogi(j) = 0 endif 96 continue endif * #] logarithms for 4point function: * #[ integrals: if ( .not. l4 .or. .not. l4pos ) then * normal case do 200 i=1,3 j = 2*i-1 if ( isoort(2*i-1) .ne. 0 ) then call ffcs3(cs3(20*i-19),ipi12(2*i-1),cy(1,i), + cz(1,i),cdyz(1,1,i),cd2yzz(i),cpi,cpiDpj, + i,6,isoort(j),ier) endif 200 continue isoort(7) = 0 isoort(8) = 0 else isoort(3) = jsoort(1) isoort(4) = jsoort(2) call ffcs4(cs3(1),ipi12(1),cw(1,1),cy(1,1), + cz(1,1),cdwy(1,1,1),cdwz(1,1,1),cdyz(1,1,1), + cd2yww(1),cd2yzz(1),cpi,cpiDpj, + cpi(5)*alpha(3)**2,1,6,isoort(1),ier) isoort(7) = jsoort(5) isoort(8) = jsoort(6) call ffcs4(cs3(41),ipi12(1),cw(1,3),cy(1,3), + cz(1,3),cdwy(1,1,3),cdwz(1,1,3),cdyz(1,1,3), + cd2yww(3),cd2yzz(3),cpi,cpiDpj, + cpi(5)*alpha(1)**2,3,6,isoort(5),ier) endif * #] integrals: *###] ffcc0p: end *###[ ffccyz: subroutine ffccyz(cy,cz,cdyz,cd2yzz,ivert,csdelp,csdels,etalam, + etami,delps,xpi,piDpj,isoort,ier) ***#[*comment:*********************************************************** * * * calculate in a numerically stable way * * * * cz(1,2) = (-p(ip1).p(is2) +/- csdelp)/xpi(ip1) * * cy(1,2) = (-p(ip1).p(is2) +/- sdisc)/xpi(ip1) * * cdisc = csdels + etaslam*xpi(ip1) * * * * cy(3,4) = 1-cy(1,2) * * cz(3,4) = 1-cz(1,2) * * cdyz(i,j) = cy(i) - cz(j) * * * * Input: ivert (integer) defines the vertex * * csdelp (complex) sqrt(lam(p1,p2,p3))/2 * * csdels (complex) sqrt(lam(p,ma,mb))/2 * * etalam (complex) det(si.sj)/det(pi.pj) * * etami(6) (complex) si.si - etalam * * xpi(ns) (complex) standard * * piDpj(ns,ns) (complex) standard * * ns (integer) dim of xpi,piDpj * * * * Output: cy(4),cz(4),cdyz(4,4) (complex) see above * * ier (integer) usual error flag * * * * Calls: fferr,ffroot * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ivert,ier,isoort(2) DOUBLE COMPLEX cy(4),cz(4),cdyz(2,2),cd2yzz,csdelp,csdels DOUBLE COMPLEX etalam,etami(6),delps,xpi(6),piDpj(6,6) * * local variables: * integer ip1,is1,is2,is3 DOUBLE COMPLEX cdisc,c DOUBLE PRECISION absc * * common blocks: * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ set up pointers: is1 = ivert is2 = ivert+1 if ( is2 .eq. 4 ) is2 = 1 is3 = ivert-1 if ( is3 .eq. 0 ) is3 = 3 ip1 = is1 + 3 * #] set up pointers: * #[ xk = 0: if ( xpi(ip1) .eq. 0 ) then isoort(2) = 0 if ( piDpj(is1,ip1) .eq. 0 ) then isoort(1) = 0 return endif if ( DIMAG(etalam).ne.0 ) then isoort(1) = -1 else isoort(1) = -3 endif cy(1) = etami(is2) / piDpj(is1,ip1) /2 cy(2) = cy(1) cy(3) = - etami(is1) / piDpj(is1,ip1) /2 cy(4) = cy(3) cz(1) = xpi(is2) / piDpj(is1,ip1) /2 cz(2) = cz(1) cz(3) = - xpi(is1) / piDpj(is1,ip1) /2 cz(4) = cz(3) cdyz(1,1) = - etalam / piDpj(is1,ip1) /2 cdyz(1,2) = cdyz(1,1) cdyz(2,1) = cdyz(1,1) cdyz(2,2) = cdyz(1,1) return endif * #] xk = 0: * #[ get cy(1,2),cz(1,2): if ( DIMAG(etalam).ne.0 ) then isoort(1) = -1 isoort(2) = -1 else isoort(1) = -3 isoort(2) = -3 endif call ffcoot(cz(1),cz(2),xpi(ip1),piDpj(ip1,is2),xpi(is2), + csdels,ier) cdisc = delps/csdelp call ffcoot(cy(1),cy(2),xpi(ip1),piDpj(ip1,is2),etami(is2), + cdisc,ier) * #] get cy(1,2),cz(1,2): * #[ get cy(3,4),cz(3,4): cz(4) = 1-cz(2) cz(3) = 1-cz(1) if ( absc(cz(3)) .lt. xloss .or. absc(cz(4)) .lt. xloss ) then call ffcoot(cz(4),cz(3),xpi(ip1),-piDpj(ip1,is1), + xpi(is1),csdels,ier) endif * the imaginary part may not be accurate in these cases, take * some precautions: if ( cz(3) .eq. 0 ) cz(1) = 1 if ( cz(4) .eq. 0 ) cz(2) = 1 if ( DIMAG(cz(1)).eq.0 ) + cz(1) = DCMPLX(DBLE(cz(1)),-DIMAG(cz(3))) if ( DIMAG(cz(2)).eq.0 ) + cz(2) = DCMPLX(DBLE(cz(2)),-DIMAG(cz(4))) if ( DIMAG(cz(1)) .gt. 0 .neqv. DIMAG(cz(3)) .lt. 0 ) then if ( abs(DBLE(cz(1))) .ge. abs(DBLE(cz(3))) ) then cz(1) = DCMPLX(DBLE(cz(1)),-DIMAG(cz(3))) else cz(3) = DCMPLX(DBLE(cz(3)),-DIMAG(cz(1))) endif endif if ( DIMAG(cz(2)) .gt. 0 .neqv. DIMAG(cz(4)) .lt. 0 ) then if ( abs(DBLE(cz(2))) .ge. abs(DBLE(cz(4))) ) then cz(2) = DCMPLX(DBLE(cz(2)),-DIMAG(cz(4))) else cz(4) = DCMPLX(DBLE(cz(4)),-DIMAG(cz(2))) endif endif cy(4) = 1-cy(2) cy(3) = 1-cy(1) if ( absc(cy(3)) .lt. xloss .or. absc(cy(4)) .lt. xloss ) then call ffcoot(cy(4),cy(3),xpi(ip1),-piDpj(ip1,is1), + etami(is1),cdisc,ier) endif if ( cy(3) .eq. 0 ) cy(1) = 1 if ( cy(4) .eq. 0 ) cy(2) = 1 if ( DIMAG(cy(1)).eq.0 ) + cy(1) = DCMPLX(DBLE(cy(1)),-DIMAG(cy(3))) if ( DIMAG(cy(2)).eq.0 ) + cy(2) = DCMPLX(DBLE(cy(2)),-DIMAG(cy(4))) if ( DIMAG(cy(1)) .gt. 0 .neqv. DIMAG(cy(3)) .lt. 0 ) then if ( abs(DBLE(cy(1))) .ge. abs(DBLE(cy(3))) ) then cy(1) = DCMPLX(DBLE(cy(1)),-DIMAG(cy(3))) else cy(3) = DCMPLX(DBLE(cy(3)),-DIMAG(cy(1))) endif endif if ( DIMAG(cy(2)) .gt. 0 .neqv. DIMAG(cy(4)) .lt. 0 ) then if ( abs(DBLE(cy(2))) .ge. abs(DBLE(cy(4))) ) then cy(2) = DCMPLX(DBLE(cy(2)),-DIMAG(cy(4))) else cy(4) = DCMPLX(DBLE(cy(4)),-DIMAG(cy(2))) endif endif * #] get cy(3,4),cz(3,4): * #[ get cdyz: * Note that cdyz(i,j) only exists for i,j=1,2! if ( absc(cdisc+csdels) .gt. xloss*absc(cdisc) ) then cdyz(2,1) = ( cdisc + csdels )/xpi(ip1) cdyz(2,2) = etalam/(xpi(ip1)*cdyz(2,1)) else cdyz(2,2) = ( cdisc - csdels )/xpi(ip1) cdyz(2,1) = etalam/(xpi(ip1)*cdyz(2,2)) endif cdyz(1,1) = -cdyz(2,2) cdyz(1,2) = -cdyz(2,1) cd2yzz = 2*cdisc/xpi(ip1) * #] get cdyz: *###] ffccyz: end herwig++-2.6.0.orig/Looptools/C/ffdxc0.F0000644000175000017500000005464611754474774020453 0ustar sylvestresylvestre#include "externals.h" *###[ ffdxc0: subroutine ffdxc0(cs3,ipi12,isoort,clogi,ilogi,xpi,dpipj,piDpj, + xqi,qiDqj,sdel2,del2s,etalam,etami,delpsi,alph, + ddel2s,ldel2s,npoin,ier) ***#[*comment:*********************************************************** * * * Calculates the difference of two threepoint functions * * C(3,...a) - C(4,...b) * * For this we not only calculate the roots of the three-point * * function y,z(1-4,3-4,1-3) but also the combinations * * * * yzzy = y(,4,)*z(,3,) - z(,4,)*y(,3,) * * and * * yyzz = y(,4,) - z(,4,) - y(,3,) + z(,3,) * * * * This is done explicitly for most special cases, so a lot of * * lines of code result. This may be shortened with a smart use * * of indices, however, it is readable now. * * * * Input: xpi(6,3:4) (real) transformed mi,pi squared in Ci * * dpipj(6,6,3:4) (real) xpi(i)-xpi(j) * * piDpj(6,6,3:4) (real) pi(i).pi(j) * * xqi(10,10) (real) transformed mi,pi squared in D * * qiDqj(10,10) (real) qi(i).qi(j) * * sdel2 (real) sqrt(delta_{p_1 p_2}^{p_1 p_2}) * * del2s(3,3:4) (real) delta_{p_i s_i}^{p_i s_i} * * etalam(3:4) (real) delta_{s_1 s_2 s_3}^{s_1 s_2 s_3} * /delta_{p_1 p_2}^{p_1 p_2} * * etami(6,3:4) (real) m_i^2 - etalam * * ddel2s(2:3) (real) del2s(i,3) - del2s(i,4) * * alph(3) (real) alph(1)=alpha, alph(3)=1-alpha * * ldel2s (logical) indicates yes/no limit del2s->0 * * * * Output: cs3 (complex)(160) C0(3)-C0(4), not yet summed. * * ipi12 (integer)(6) factors pi^2/12, not yet summed * * slam (complex) lambda(p1,p2,p3). * * isoort (integer)(16) indication of he method used * * clogi (complex)(6) log(-dyz(2,1,i)/dyz(2,2,i)) * * ilogi (integer)(6) factors i*pi in this * * ier (integer) 0=ok, 1=inaccurate, 2=error * * * * Calls: ... * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ipi12(16),isoort(16),ilogi(6),npoin,ier logical ldel2s DOUBLE COMPLEX cs3(160),clogi(6) DOUBLE PRECISION xqi(10),qiDqj(10,10), + xpi(6,3:4),dpipj(6,6,3:4),piDpj(6,6,3:4), + sdel2,del2s(3,3:4),etalam(3:4),etami(6,3:4),alph(3), + ddel2s(2:3),delpsi(3,3:4) * * local variables: * integer i,j,k,l,ip,ier0,ii,ifirst,ieri(12),idone(6) logical lcompl DOUBLE COMPLEX c,csom,cs(5),csdeli(3,3:4),csdel2, + cy(4,3:4,3),cz(4,3:4,3),cdyz(2,2,3:4,3),cd2yzz(3:4,3), + cpi(6,3:4),cpiDpj(6,6,3:4),cdyzzy(4,3),cdyyzz(2,3) DOUBLE PRECISION sdel2i(3,3:4),s(5),som,smax,absc,dfflo1, + y(4,3:4,3),z(4,3:4,3),dyz(2,2,3:4,3),d2yzz(3:4,3), + dy2z(4,3:4,3),dyzzy(4,3),dsdel2,xmax DOUBLE COMPLEX zxfflg,zfflo1 external dfflo1,zxfflg,zfflo1 * * common blocks: * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ get y,z-roots: lcompl = .FALSE. do 20 k=3,4 do 10 i=1,3 * * get roots (y,z) and flag what to do: 0=nothing, 1=normal, * -1=complex * ip = i+3 * first get the roots if ( del2s(i,k) .le. 0 ) then * real case sdel2i(i,k) = sqrt(-del2s(i,k)) * then handle the special case Si = 0 if ( xpi(ip,k) .eq. 0 ) then if ( i .eq. 1 .and. alph(3) .eq. 0 .or. + i .eq. 3 .and. alph(1) .eq. 0 ) then isoort(2*i-1+8*(k-3)) = 0 isoort(2*i+8*(k-3)) = 0 goto 10 endif endif call ffxxyz(y(1,k,i),z(1,k,i),dyz(1,1,k,i),d2yzz(k,i), + dy2z(1,k,i),i,sdel2,sdel2i(i,k),etalam(k),etami(1,k), + delpsi(i,k),xpi(1,k),dpipj(1,1,k),piDpj(1,1,k), + isoort(2*i-1+8*(k-3)),ldel2s,6,ier) else * complex case sdel2i(i,k) = sqrt(del2s(i,k)) csdeli(i,k) = DCMPLX(0D0,sdel2i(i,k)) lcompl = .TRUE. call ffcxyz(cy(1,k,i),cz(1,k,i),cdyz(1,1,k,i),cd2yzz(k,i),i, + sdel2,sdel2i(i,k),etami(1,k),delpsi(i,k),xpi( + 1,k),piDpj(1,1,k),isoort(2*i-1+8*(k-3)),ldel2s,6,ier) endif 10 continue 20 continue * #] get y,z-roots: * #[ convert to complex if necessary: do 60 i=2,3 l = 2*i-1 if ( isoort(l).gt.0 .and. isoort(l+8).lt.0 ) then k = 3 * we get -5, -105 if they have equal roots, isoort=+2 * -6, -106 if they have unequal roots, isoort=+1 if ( .not.ldel2s ) then isoort(l) = isoort(l)-7 isoort(l+1) = isoort(l+1)-7 else isoort(l) = isoort(l)-207 isoort(l+1) = isoort(l+1)-207 endif elseif ( isoort(l).lt.0 .and. isoort(l+8).gt.0 ) then k = 4 if ( .not.ldel2s ) then isoort(l+8) = isoort(l+8)-7 isoort(l+9) = isoort(l+9)-7 else isoort(l+8) = isoort(l+8)-207 isoort(l+9) = isoort(l+9)-207 endif else k = 0 endif if ( k .ne. 0 ) then do 30 j=1,4 cy(j,k,i) = y(j,k,i) cz(j,k,i) = z(j,k,i) 30 continue do 50 j=1,2 do 40 l=1,2 cdyz(l,j,k,i) = dyz(l,j,k,i) 40 continue 50 continue cd2yzz(k,i) = d2yzz(k,i) csdeli(i,k) = sdel2i(i,k) endif 60 continue * #] convert to complex if necessary: * #[ get differences: * * the only important differences are y4z3-z3y4 and (1-y4)(1-z3)- * (1-y3)(1-z4) * do 100 i=1,12 ieri(i) = 0 100 continue * #[ vertices (1): som = qiDqj(7,2)/sdel2 if ( isoort(1) .ge. 0 ) then * Note that the isoorts are equal as the vertex is equal. * * flag if we have a cancellation * if ( abs(som) .lt. xloss ) then isoort(1) = isoort(1) + 10 isoort(9) = isoort(9) + 10 endif do 110 k=1,4 dyzzy(k,1) = som*z(k,3,1) if ( k .gt. 2 ) dyzzy(k,1) = -dyzzy(k,1) 110 continue else if ( abs(som) .lt. xloss ) then isoort(1) = isoort(1) - 10 isoort(9) = isoort(9) - 10 endif do 120 k=1,4 cdyzzy(k,1) = DBLE(som)*cz(k,3,1) if ( k .gt. 2 ) cdyzzy(k,1) = -cdyzzy(k,1) 120 continue cdyyzz(1,1) = som cdyyzz(2,1) = som endif * #] vertices (1): * #[ vertices (2): if ( isoort(3) .ge. 0 ) then * #[ real case: (note that this implies isoort(11)>0) ifirst = 0 do 150 j=1,2 do 140 k=1,2 ii = 2*(j-1) + k dyzzy(ii,2) = y(2*j,4,2)*z(ii,3,2)-y(2*j,3,2)*z(ii,4,2) xmax = abs(y(2*j,4,2)*z(ii,3,2)) if ( abs(dyzzy(ii,2)) .ge. xmax ) goto 140 isoort(3) = isoort(3) + 10 isoort(11) = isoort(11) + 10 if ( ldel2s ) then print *,'ffdxc0: not ready for del2s=0, real case' goto 130 endif if ( ifirst .le. 0 ) then if ( ddel2s(2) .eq. 0 ) then dsdel2 = 0 else dsdel2 = ddel2s(2)/(sdel2i(2,3)+sdel2i(2,4)) endif endif if ( ifirst .le. 1 ) then if ( j .eq. 1 ) then s(1) = xqi(6)*qiDqj(7,4)*qiDqj(5,4)/sdel2 s(2) = -qiDqj(7,4)*sdel2i(2,3) s(3) = +qiDqj(6,4)*dsdel2 else s(1) = xqi(6)*qiDqj(7,2)*qiDqj(5,2)/sdel2 s(2) = -qiDqj(7,2)*sdel2i(2,3) s(3) = +qiDqj(6,2)*dsdel2 endif endif if ( ifirst .le. 0 ) then ifirst = 2 s(4) = -qiDqj(5,10)*qiDqj(7,4)*sdel2i(2,3)/sdel2 s(5) = delpsi(2,3)*dsdel2/sdel2 endif if ( k .eq. 1 ) then som = s(1) + s(2) + s(3) + s(4) + s(5) else som = s(1) - s(2) - s(3) - s(4) - s(5) endif smax = max(abs(s(1)),abs(s(2)),abs(s(3)),abs(s(4)), + abs(s(5)))/xqi(6)**2 if ( smax .lt. xmax ) then dyzzy(ii,2) = som/xqi(6)**2 xmax = smax endif 130 continue 140 continue ifirst = ifirst - 1 150 continue * #] real case: else * #[ complex case: ifirst = 0 do 180 j=1,2 do 170 k=1,2 ii = 2*(j-1) + k cdyzzy(ii,2) = cy(2*j,4,2)*cz(ii,3,2)-cy(2*j,3,2)* + cz(ii,4,2) xmax = absc(cy(2*j,4,2)*cz(ii,3,2)) if ( absc(cdyzzy(ii,2)) .ge. xmax ) goto 170 isoort(3) = isoort(3) - 10 isoort(11) = isoort(11) - 10 if ( ldel2s ) then ip = 3 else ip = 6 endif if ( mod(isoort(3),10).ne.0 .or. mod(isoort(11),10).ne.0 + ) then * * one of the roots is really real * if ( ifirst .le. 0 ) then csdel2=DBLE(ddel2s(2))/(csdeli(2,3)+csdeli(2,4)) endif if ( ifirst .le. 1 ) then if ( j .eq. 1 .neqv. ldel2s ) then if ( .not.ldel2s ) then cs(1)=xqi(6)*qiDqj(7,4)*qiDqj(5,4)/sdel2 cs(2) = -DBLE(qiDqj(7,4))*csdeli(2,3) cs(3) = +DBLE(qiDqj(6,4))*csdel2 else cs(1)=-xqi(3)*qiDqj(5,10)*qiDqj(7,2)/ + sdel2 cs(2) = -DBLE(qiDqj(7,2))*csdeli(2,3) cs(3) = -DBLE(qiDqj(6,3))*csdel2 endif else cs(1) = xqi(ip)*qiDqj(7,2)*qiDqj(5,2)/sdel2 cs(2) = -DBLE(qiDqj(7,2))*csdeli(2,3) cs(3) = +DBLE(qiDqj(ip,2))*csdel2 endif endif if ( ifirst .le. 0 ) then ifirst = 2 if ( .not.ldel2s ) then cs(4) = -DBLE(qiDqj(5,10)*qiDqj(7,4)/sdel2)* + csdeli(2,3) else cs(4) = -DBLE(qiDqj(5,3)*qiDqj(7,2)/sdel2)* + csdeli(2,3) endif cs(5) = DBLE(delpsi(2,3)/sdel2)*csdel2 endif else * * both roots are complex * if ( ifirst .eq. 0 ) then dsdel2 = -ddel2s(2)/(sdel2i(2,3)+sdel2i(2,4)) csdel2 = DCMPLX(0D0,dsdel2) endif if ( ifirst .le. 1 ) then if ( j .eq. 1 .neqv. ldel2s ) then if ( .not.ldel2s ) then cs(1)=xqi(6)*qiDqj(7,4)*qiDqj(5,4)/sdel2 cs(2)=-DCMPLX(0D0,qiDqj(7,4)*sdel2i(2,3)) cs(3)=+DCMPLX(0D0,qiDqj(6,3)*dsdel2) else cs(1)=-xqi(3)*qiDqj(5,10)*qiDqj(7,2)/ + sdel2 cs(2)=-DCMPLX(0D0,qiDqj(7,2)*sdel2i(2,3)) cs(3)=-DCMPLX(0D0,qiDqj(6,3)*dsdel2) endif else cs(1) = xqi(ip)*qiDqj(7,2)*qiDqj(5,2)/sdel2 cs(2) = -DCMPLX(0D0,qiDqj(7,2)*sdel2i(2,3)) cs(3) = +DCMPLX(0D0,qiDqj(ip,2)*dsdel2) endif endif if ( ifirst .eq. 0 ) then ifirst = 2 if ( .not.ldel2s ) then cs(4) = -DCMPLX(0D0,qiDqj(5,10)*qiDqj(7,4)* + sdel2i(2,3)/sdel2) else cs(4) = -DCMPLX(0D0,qiDqj(5,3)*qiDqj(7,2)* + sdel2i(2,3)/sdel2) endif cs(5) = DCMPLX(0D0,delpsi(2,3)*dsdel2/sdel2) endif endif if ( k .eq. 1 ) then csom = cs(1) + cs(2) + cs(3) + cs(4) + cs(5) else csom = cs(1) - cs(2) - cs(3) - cs(4) - cs(5) endif smax = max(absc(cs(1)),absc(cs(2)),absc(cs(3)), + absc(cs(4)),absc(cs(5)))/xqi(ip)**2 if ( smax .lt. xmax ) then cdyzzy(ii,2) = csom/DBLE(xqi(ip))**2 xmax = smax endif 170 continue * * get cdyyzz * if ( ldel2s ) then cdyyzz(j,2) = cdyz(2,j,4,2) - cdyz(2,j,3,2) xmax = absc(cdyz(2,j,4,2)) if ( absc(cdyyzz(j,2)) .ge. xloss*xmax ) goto 175 if ( ifirst .le. 0 ) then if ( mod(isoort( 3),10).ne.0 .or. + mod(isoort(11),10).ne.0 ) then csdel2=DBLE(ddel2s(2))/(csdeli(2,3)+csdeli(2,4)) else dsdel2 = -ddel2s(2)/(sdel2i(2,3)+sdel2i(2,4)) csdel2 = DCMPLX(0D0,dsdel2) endif endif cs(2) = csdel2/DBLE(xqi(3)) cs(1) = qiDqj(5,3)*qiDqj(7,2)/(sdel2*xqi(3)) if ( j .eq. 1 ) then csom = cs(1) + cs(2) else csom = cs(1) - cs(2) endif smax = absc(cs(1)) if ( smax .lt. xmax ) then cdyyzz(j,2) = csom xmax = smax endif endif * * bookkeeping * 175 continue ifirst = ifirst - 1 180 continue * #] complex case: endif * #] vertices (2): * #[ vertices (3): if ( isoort(5) .ge. 0 ) then * #[ real case: (note that this implies isoort(15)>0) ifirst = 0 do 210 j=1,2 do 200 k=1,2 ii = 2*(j-1) + k dyzzy(ii,3) = y(2*j,4,3)*z(ii,3,3)-y(2*j,3,3)*z(ii,4,3) xmax = abs(y(2*j,4,3)*z(ii,3,3)) if ( abs(dyzzy(ii,3)) .ge. xmax ) goto 200 isoort(5) = isoort(5) + 10 isoort(13) = isoort(13) + 10 if ( ldel2s ) then print *,'ffdxc0: not ready for del2s=0, real case' goto 190 endif if ( ifirst .le. 0 ) then if ( ddel2s(2) .eq. 0 ) then dsdel2 = 0 else dsdel2 = ddel2s(3)/(sdel2i(3,3)+sdel2i(3,4)) endif endif if ( ifirst .le. 1 ) then if ( j .eq. 1 ) then s(1) = xqi(8)*qiDqj(7,1)*qiDqj(5,1)/sdel2 s(2) = +qiDqj(7,1)*sdel2i(3,3) s(3) = +qiDqj(9,1)*dsdel2 else s(1) = xqi(8)*qiDqj(7,4)*qiDqj(5,4)/sdel2 s(2) = +qiDqj(7,4)*sdel2i(3,3) s(3) = +qiDqj(9,4)*dsdel2 endif endif if ( ifirst .le. 0 ) then ifirst = 2 s(4) = -qiDqj(5,9)*qiDqj(7,1)*sdel2i(3,3)/sdel2 s(5) = delpsi(3,3)*dsdel2/sdel2 endif if ( k .eq. 1 ) then som = s(1) + s(2) + s(3) + s(4) + s(5) else som = s(1) - s(2) - s(3) - s(4) - s(5) endif smax = max(abs(s(1)),abs(s(2)),abs(s(3)),abs(s(4)), + abs(s(5)))/xqi(8)**2 if ( smax .lt. xmax ) then dyzzy(ii,3) = som/xqi(8)**2 xmax = smax endif 190 continue 200 continue ifirst = ifirst - 1 210 continue * #] real case: else * #[ complex case: ifirst = 0 do 240 j=1,2 do 230 k=1,2 ii = 2*(j-1) + k cdyzzy(ii,3) = cy(2*j,4,3)*cz(ii,3,3)-cy(2*j,3,3)* + cz(ii,4,3) xmax = absc(cy(2*j,4,3)*cz(ii,3,3)) if ( absc(cdyzzy(ii,3)) .ge. xmax ) goto 230 isoort(5) = isoort(5) - 10 isoort(13) = isoort(13) - 10 if ( ldel2s ) then ip = 3 else ip = 8 endif if ( mod(isoort(3),10).ne.0 .or. mod(isoort(11),10).ne.0 + ) then * * one of the roots is really real * if ( ifirst .le. 0 ) then csdel2=DBLE(ddel2s(3))/(csdeli(3,3)+csdeli(3,4)) endif if ( ifirst .le. 1 ) then if ( j .eq. 1 ) then cs(1) = xqi(ip)*qiDqj(7,1)*qiDqj(5,1)/sdel2 cs(2) = +DBLE(qiDqj(7,1))*csdeli(3,3) if ( .not.ldel2s ) then cs(3) = +DBLE(qiDqj(9,1))*csdel2 else cs(3) = +DBLE(qiDqj(3,1))*csdel2 endif else if ( .not.ldel2s ) then cs(1) = xqi(ip)*qiDqj(7,4)*qiDqj(5,4)/ + sdel2 cs(2) = DBLE(qiDqj(7,4))*csdeli(3,3) else cs(1) = xqi(ip)*qiDqj(7,1)*qiDqj(5,9)/ + sdel2 cs(2) = DBLE(qiDqj(7,1))*csdeli(3,3) endif cs(3) = +DBLE(qiDqj(9,3))*csdel2 endif if ( ldel2s ) cs(3) = -cs(3) endif if ( ifirst .le. 0 ) then ifirst = 2 if ( .not.ldel2s ) then cs(4) = -DBLE(qiDqj(5,9)*qiDqj(7,1)/sdel2)* + csdeli(3,3) else cs(4) = DBLE(qiDqj(5,4)*qiDqj(7,1)/sdel2)* + csdeli(3,3) endif cs(5) = DBLE(delpsi(3,3)/sdel2)*csdel2 endif else * * both roots are complex * if ( ifirst .eq. 0 ) then dsdel2 = -ddel2s(3)/(sdel2i(3,3)+sdel2i(3,4)) csdel2 = DCMPLX(0D0,dsdel2) endif if ( ifirst .le. 1 ) then if ( j .eq. 1 ) then cs(1) = xqi(ip)*qiDqj(7,1)*qiDqj(5,1)/sdel2 cs(2) = +DCMPLX(0D0,qiDqj(7,1)*sdel2i(3,3)) if ( .not.ldel2s ) then cs(3) = +DCMPLX(0D0,qiDqj(9,1)*dsdel2) else cs(3) = +DCMPLX(0D0,qiDqj(3,1)*dsdel2) endif else if ( .not.ldel2s ) then cs(1)= xqi(ip)*qiDqj(7,4)*qiDqj(5,4)/ + sdel2 cs(2)=DCMPLX(0D0,qiDqj(7,4)*sdel2i(3,3)) else cs(1)= xqi(ip)*qiDqj(7,1)*qiDqj(5,9)/ + sdel2 cs(2)=DCMPLX(0D0,qiDqj(7,1)*sdel2i(3,3)) endif cs(3) = +DCMPLX(0D0,qiDqj(9,3)*dsdel2) endif if ( ldel2s ) cs(3) = -cs(3) endif if ( ifirst .le. 0 ) then ifirst = 2 if ( .not.ldel2s ) then cs(4) = -DCMPLX(0D0,qiDqj(5,9)*qiDqj(7,1)* + sdel2i(3,3)/sdel2) else cs(4) = DCMPLX(0D0,qiDqj(5,4)*qiDqj(7,1)* + sdel2i(3,3)/sdel2) endif cs(5) = DCMPLX(0D0,delpsi(3,3)*dsdel2/sdel2) endif endif if ( k .eq. 1 ) then csom = cs(1) + cs(2) + cs(3) + cs(4) + cs(5) else csom = cs(1) - cs(2) - cs(3) - cs(4) - cs(5) endif smax =max(absc(cs(1)),absc(cs(2)),absc(cs(3)), + absc(cs(4)),absc(cs(5)))/xqi(ip)**2 if ( smax .lt. xmax ) then cdyzzy(ii,3) = csom/DBLE(xqi(ip))**2 xmax = smax endif 230 continue * * get cdyyzz * if ( ldel2s ) then cdyyzz(j,3) = cdyz(2,j,4,3) - cdyz(2,j,3,3) xmax = absc(cdyz(2,j,4,3)) if ( absc(cdyyzz(j,3)) .ge. xloss*xmax ) goto 235 if ( ifirst .le. 0 ) then if ( mod(isoort( 5),10).ne.0 .or. + mod(isoort(13),10).ne.0 ) then csdel2=DBLE(ddel2s(3))/(csdeli(3,3)+csdeli(3,4)) else dsdel2 = -ddel2s(3)/(sdel2i(3,3)+sdel2i(3,4)) csdel2 = DCMPLX(0D0,dsdel2) endif endif cs(2) = -csdel2/DBLE(xqi(3)) cs(1) = qiDqj(5,3)*qiDqj(7,1)/(sdel2*xqi(3)) if ( j .eq. 1 ) then csom = cs(1) + cs(2) else csom = cs(1) - cs(2) endif smax = absc(cs(1)) if ( smax .lt. xmax ) then cdyyzz(j,3) = csom xmax = smax endif endif * * bookkeeping * 235 continue ifirst = ifirst - 1 240 continue * #] complex case: endif * #] vertices (3): ier0 = 0 do 250 i = 1,12 ier0 = max(ier0,ieri(i)) 250 continue ier = ier + ier0 * #] get differences: * #[ logarithms for 4point function: * * Not yet made stable ... * if ( npoin .eq. 4 ) then do 420 i = 1,3 do 410 k = 3,4 ii = i+3*(k-3) if ( ilogi(ii) .ne. -999 ) then idone(ii) = 0 goto 410 endif l = 2*i+8*(k-3)-1 if ((isoort(l).gt.0 .or. mod(isoort(l),10).le.-5) .and. + (isoort(l+1).ge.0 .or. mod(isoort(l+1),10).le.-5)) then * #[ real case: * * the real case (isoort=-5,-6: really real but complex for ffdcs) * s(1) = -dyz(2,1,k,i)/dyz(2,2,k,i) if ( abs(s(1)-1) .lt. xloss ) then clogi(ii) = dfflo1(d2yzz(k,i)/dyz(2,2,k,i),ier) ilogi(ii) = 0 else if ( abs(s(1)+1) .lt. xloss ) then clogi(ii) = dfflo1(-2*sdel2i(i,k)/(xpi(i+3,k)* + dyz(2,2,k,i)),ier) else clogi(ii) = zxfflg(abs(s(1)),0,0D0,ier) endif if ( dyz(2,2,k,i).gt.0 .and. dyz(2,1,k,i).gt.0 ) + then ilogi(ii) = -1 elseif ( dyz(2,1,k,i).lt.0 .and. dyz(2,2,k,i).lt.0) + then ilogi(ii) = +1 else ilogi(ii) = 0 endif * in case del2s=0 and i=3 we pick up a minus sign, I think if ( ldel2s .and. i .eq. 3 ) ilogi(ii) = -ilogi(ii) endif idone(ii) = 1 * #] real case: elseif ( isoort(l) .lt. 0 ) then * #[ complex case: * for stability split the unit circle up in 4*pi/2 * (this may have to be improved to 8*pi/4...) * ier0 = 0 if ( DBLE(cdyz(2,1,k,i)) .gt. abs(DIMAG(cdyz(2,1,k,i)))) + then som =2*atan2(DIMAG(cdyz(2,1,k,i)),DBLE( + cdyz(2,1,k,i))) clogi(ii) = DCMPLX(0D0,som) if ( DIMAG(cdyz(2,1,k,i)) .gt. 0 ) then ilogi(ii) = -1 else ilogi(ii) = +1 endif elseif ( DBLE(cdyz(2,1,k,i)) .lt. + -abs(DIMAG(cdyz(2,1,k,i))) ) then if ( DIMAG(cdyz(2,1,k,i)) .eq. 0 ) then call fferr(82,ier) print *,'isoort = ',isoort(l),isoort(l+1) endif som = 2*atan2(-DIMAG(cdyz(2,1,k,i)),-DBLE( + cdyz(2,1,k,i))) clogi(ii) = DCMPLX(0D0,som) if ( DIMAG(cdyz(2,1,k,i)) .gt. 0 ) then ilogi(ii) = +1 else ilogi(ii) = -1 endif else s(1) = -DBLE(cdyz(2,1,k,i)) s(2) = DIMAG(cdyz(2,1,k,i)) som = 2*atan2(s(1),s(2)) clogi(ii) = DCMPLX(0D0,som) ilogi(ii) = 0 endif idone(ii) = 1 * #] complex case: endif 410 continue if ( idone(ii) .ne. 0 .and. idone(ii-3) .ne. 0 .and. + absc(clogi(ii)-clogi(ii-3)).lt.xloss*absc(clogi(ii)) .and. + ilogi(ii).eq.ilogi(ii-3) ) then * #[ subtract more smartly: if ( isoort(l).gt.0 .and. isoort(l+1).ge.0 ) then goto 420 else cs(1) = cdyzzy(1,i) cs(2) = cdyzzy(2,i) if ( i .eq. 1 ) then cs(3) = 0 else goto 420 endif csom = cs(1) - cs(2) + cs(3) xmax = max(absc(cs(1)),absc(cs(2)),absc(cs(3))) * change this to "no warning and quit" later c = csom/(cdyz(2,2,3,i)*cdyz(2,1,4,i)) c = zfflo1(c,ier) * * the log is never much bigger than 1, so demand at least * accuracy to 0.1; this will catch all i*pi errors * if ( abs(clogi(ii-3)-clogi(ii)-c).gt.0.1 ) then print *,'ffdxc0: error in smart logs: ',clogi(ii-3)- + clogi(ii),c,' not used' goto 420 endif clogi(ii-3) = c clogi(ii) = 0 endif * #] subtract more smartly: endif 420 continue * An algorithm to obtain the sum of two small logarithms more * accurately has been put in ffcc0p, not yet here endif * #] logarithms for 4point function: * #[ real case integrals: if ( .not. lcompl ) then * normal case do 510 i=1,3 j = 2*i-1 if ( isoort(j) .eq. 0 ) then if ( isoort(j+8) .ne. 0 ) then call ffcxs3(cs3(20*i+61),ipi12(j+8),y(1,4,i), + z(1,4,i),dyz(1,1,4,i),d2yzz(4,i),dy2z(1,4,i), + xpi(1,4),piDpj(1,1,4),i,6,isoort(j+8),ier) endif elseif ( isoort(j+8) .eq. 0 ) then call ffcxs3(cs3(20*i-19),ipi12(j),y(1,3,i), + z(1,3,i),dyz(1,1,3,i),d2yzz(3,i),dy2z(1,3,i), + xpi(1,3),piDpj(1,1,3),i,6,isoort(j),ier) else call ffdcxs(cs3(20*i-19),ipi12(j),y(1,3,i),z(1,3,i), + dyz(1,1,3,i),d2yzz(3,i),dy2z(1,3,i),dyzzy(1,i), + xpi,piDpj,i,6,isoort(j),ier) endif 510 continue isoort(7) = 0 isoort(8) = 0 * #] real case integrals: * #[ complex case integrals: else * convert xpi do 540 k=3,4 *not cetami(1,k) = etami(1,k) *used cetami(3,k) = etami(3,k) do 530 i=1,6 cpi(i,k) = xpi(i,k) do 520 j=1,6 cpiDpj(j,i,k) = piDpj(j,i,k) 520 continue 530 continue 540 continue do 550 i=1,3 j = 2*i-1 if ( isoort(j) .eq. 0 ) then if ( isoort(j+8) .ne. 0 ) then call ffcxs3(cs3(20*i+61),ipi12(j+8),y(1,4,i), + z(1,4,i),dyz(1,1,4,i),d2yzz(4,i),dy2z(1,4,i), + xpi(1,4),piDpj(1,1,4),i,6,isoort(j+8),ier) endif elseif ( isoort(j+8) .eq. 0 ) then call ffcxs3(cs3(20*i-19),ipi12(j),y(1,3,i), + z(1,3,i),dyz(1,1,3,i),d2yzz(3,i),dy2z(1,3,i), + xpi(1,3),piDpj(1,1,3),i,6,isoort(j),ier) elseif ( isoort(j) .gt. 0 ) then if ( isoort(j+8) .gt. 0 ) then call ffdcxs(cs3(20*i-19),ipi12(j),y(1,3,i), + z(1,3,i),dyz(1,1,3,i),d2yzz(3,i),dy2z(1,3,i), + dyzzy(1,i),xpi,piDpj,i,6,isoort(j),ier) else print *,'ffdxc0: error: should not occur!' call ffcxs3(cs3(20*i-19),ipi12(j),y(1,3,i), + z(1,3,i),dyz(1,1,3,i),d2yzz(3,i),dy2z(1,3,i), + xpi(1,3),piDpj(1,1,3),i,6,isoort(j),ier) call ffcs3(cs3(20*i+61),ipi12(j+8),cy(1,4,i), + cz(1,4,i),cdyz(1,1,4,i),cd2yzz(4,i), + cpi(1,4),cpiDpj(1,1,4),i,6,isoort(j+8),ier) endif else if ( isoort(j+8) .lt. 0 ) then call ffdcs(cs3(20*i-19),ipi12(j),cy(1,3,i), + cz(1,3,i),cdyz(1,1,3,i),cd2yzz(3,i), + cdyzzy(1,i),cdyyzz(1,i),cpi,cpiDpj, + i,6,isoort(j),ier) else print *,'ffdxc0: error: should not occur!' call ffcs3(cs3(20*i-19),ipi12(j),cy(1,3,i), + cz(1,3,i),cdyz(1,1,3,i),cd2yzz(3,i), + cpi(1,3),cpiDpj(1,1,3),i,6,isoort(j),ier) call ffcxs3(cs3(20*i+61),ipi12(j+8),y(1,4,i), + z(1,4,i),dyz(1,1,4,i),d2yzz(4,i),dy2z(1,4,i), + xpi(1,4),piDpj(1,1,4),i,6,isoort(j+8),ier) endif endif 550 continue isoort(7) = 0 isoort(8) = 0 endif return * #] complex case integrals: *###] ffdxc0: end herwig++-2.6.0.orig/Looptools/C/ffxc0i.F0000644000175000017500000004320611754474774020446 0ustar sylvestresylvestre#include "externals.h" *--#[ log: * $Id: ffxc0i.f,v 1.3 1996/06/03 12:11:43 gj Exp $ * $Log: ffxc0i.f,v $ c Revision 1.3 1996/06/03 12:11:43 gj c Added an error message for ffxc0j with zero masses, which is ill-defined. c c Revision 1.2 1995/12/01 15:04:40 gj c Fixed a ridiculous bug: wrong sign for p4^2=0, m20 for * the time being - we calculate a complete 3point function so it * should not be a problem (just a sign). Of course this spoils a * good check on the correctness. * sdel2 = abs(sdel2i) * if ( xpi(4).eq.0 ) then zm = xpi(2)/dpipj(2,1) zm1 = -xpi(1)/dpipj(2,1) else call ffroot(zm,zp,xpi(4),piDpj(4,2),xpi(2),sdel2,ier) if ( dpipj(1,2) .ne. 0 ) then call ffroot(zp1,zm1,xpi(4),-piDpj(4,1),xpi(1),sdel2,ier) else zm1 = zp zp1 = zm endif endif * imag sign ok 30-oct-1989 ieps = -1 if ( xpi(4).ne.0 ) dyzp = -2*sdel2/xpi(4) * * #] get determinants, roots, ieps: * #[ the finite+divergent S1: * if ( xpi(4).ne.0 ) then call ffcxr(cs(1),ipi12,zm,zm1,zp,zp1,dyzp, + .FALSE.,0D0,0D0,0D0,.FALSE.,dum,ieps,ier) endif * * Next the divergent piece * if ( .not.lsmug ) then * * Here we dropped the term log(lam/lamsq)*log(-zm/zm1) * if ( abs(zm1) .gt. 1/xloss ) then clog1 = dfflo1(1/zm1,ier) elseif ( zm.ne.0 ) then clog1 = zxfflg(-zm/zm1,-2,0D0,ier) else call fferr(97,ier) return endif hulp = zm*zm1*4*del2/lamsq**2 * * 14-jan-1994: do not count when this is small, this was * meant to be so by the user carefully adjusting lamsq * ier0 = ier if ( hulp.eq.0 ) call fferr(97,ier) clog2 = zxfflg(hulp,2,0D0,ier0) cs(8) = -clog1*clog2/2 else * * checked 4-aug-1992, but found Yet Another Bug 30-sep-1992 * cdyzm = cel3*DBLE(1/(-2*sdel2*del2)) dyzm = del3/(-2*sdel2*del2) carg1 = +cdyzm*DBLE(1/zm) arg1 = +dyzm/zm clog1 = zfflog(-carg1,+ieps,DCMPLX(DBLE(zm),DBLE(0)),ier) if (DIMAG(cdyzm) .lt. 0 .and. arg1 .gt. 0 ) then clog1 = clog1 - c2ipi * ier = ier + 50 endif cs(8) = -clog1**2/2 carg2 = -cdyzm*DBLE(1/zm1) arg2 = -dyzm/zm1 clog2 = zfflog(-carg2,ieps,DCMPLX(DBLE(-zm1),DBLE(0)),ier) if ( DIMAG(cdyzm) .lt. 0 .and. arg2 .gt. 0 ) then clog2 = clog2 + c2ipi endif cs(9) = +clog2**2/2 endif * #] the finite+divergent S1: * #[ log(1) for npoin=4: if ( npoin .eq. 4 ) then if ( ilogi(1) .eq. -999 ) then if ( .not.lsmug ) then hulp = xpi(4)*lamsq/(4*del2) ier0 = ier if ( hulp.eq.0 ) call fferr(97,ier) clogi(1) = -zxfflg(abs(hulp),0,0D0,ier0) if ( hulp .lt. 0 ) then if ( xpi(4) .gt. 0 ) then ilogi(1) = -1 else ilogi(1) = +1 endif else ilogi(1) = 0 endif else if ( xpi(4).eq.0 ) then print *,'ffxc0i: cannot handle t=0 yet, sorry' print *,'Please regularize with a small mass' stop endif chulp = -cdyzm*DBLE(1/dyzp) chulp1 = 1+chulp if ( absc(chulp1) .lt. xloss ) + call ffwarn(129,ier,absc(chulp1),1D0) call ffxclg(clogi(1),ilogi(1),chulp,chulp1,dyzp, + ier) endif endif endif * #] log(1) for npoin=4: * #[ the log(lam) Si: if ( .not.lsmug ) then * * Next the divergent S_i (easy). * The term -2*log(lam/lamsq)*log(xpi(2)/xpi(1)) has been discarded * with lam the photon mass (regulator). * If lamsq = sqrt(xpi(1)*xpi(2)) the terms cancel as well * if ( dpipj(1,2).ne.0 .and. xloss*abs(xpi(1)*xpi(2)-lamsq**2) + .gt.precx*lamsq**2 ) then if ( xpi(1) .ne. lamsq ) then ier0 = ier if ( xpi(1).eq.0 ) call fferr(97,ier) cs(9) = -zxfflg(xpi(1)/lamsq,0,0D0,ier0)**2 /4 endif if ( xpi(2) .ne. lamsq ) then ier0 = ier if ( xpi(2).eq.0 ) call fferr(97,ier) cs(10) = zxfflg(xpi(2)/lamsq,0,0D0,ier0)**2 /4 endif endif * #] the log(lam) Si: * #[ the logs for A_i<0: if ( npoin.eq.4 ) then clogi(2) = 0 ilogi(2) = 0 clogi(3) = 0 ilogi(3) = 0 endif * #] the logs for A_i<0: * #[ the off-shell S3: else * * the divergent terms in the offshell regulator scheme - not * quite as easy * wm = p3.p2/sqrtdel - 1 = -s1.s2/sqrtdel - 1 * wp = p3.p2/sqrtdel + 1 = -s1.s2/sqrtdel + 1 * Note that we took the choice sdel2<0 in S1 when * \delta^{p1 s2}_{p1 p2} < 0 by using yp=zm * wm = -1 - piDpj(1,2)/sdel2 wp = wm + 2 if ( abs(wm) .lt. abs(wp) ) then wm = -xpi(5)*xpi(6)/(del2*wp) else wp = -xpi(5)*xpi(6)/(del2*wm) endif * * the im sign * if ( -DBLE(cmipj(1,3)) .gt. 0 ) then ieps = -1 else ieps = +1 endif * if ( nschem .lt. 3 .or. DIMAG(cmipj(1,3)).eq.0 .and. + DIMAG(cmipj(2,2)).eq.0 ) then * #[ real case: * * first z-,z+ * dyzp = -DBLE(cmipj(1,3))*DBLE(wm)/(2*DBLE(xpi(6))) - + DBLE(cmipj(2,2))/(2*DBLE(sdel2)) dyzm = -DBLE(cmipj(1,3))*DBLE(wp)/(2*DBLE(xpi(6))) - + DBLE(cmipj(2,2))/(2*DBLE(sdel2)) * * the (di)logs * clog1 = zxfflg(-dyzp,-ieps,1D0,ier) cs(10) = -clog1**2/2 ipi12 = ipi12 - 4 clog2 = zxfflg(-dyzm,+ieps,1D0,ier) cs(11) = -clog2**2/2 ipi12 = ipi12 - 2 hulp = dyzp/dyzm if ( dyzp .lt. 0 ) then ieps1 = -ieps else ieps1 = +ieps endif call ffzxdl(cli,i,cdum(1),hulp,+ieps1,ier) cs(12) = -cli ipi12 = ipi12 - i * * the log for npoin=4 * if ( npoin.eq.4 ) then if ( ilogi(3) .eq. -999 ) then if ( DBLE(cmipj(1,3)) .eq. 0 ) then chulp = -1 chulp1 = 0 elseif ( dyzp .lt. dyzm ) then chulp = -dyzm/dyzp chulp1 = +DBLE(cmipj(1,3))/DBLE(xpi(6)*dyzp) else chulp = -dyzp/dyzm chulp1 = -DBLE(cmipj(1,3))/DBLE(xpi(6)*dyzm) endif call ffxclg(clogi(3),ilogi(3),chulp,chulp1,dyzp, + ier) endif endif * #] real case: else * #[ complex case: * * first z+ * cdyzp = -cmipj(1,3)*DBLE(wm)/(2*DBLE(xpi(6))) - + cmipj(2,2)/(2*DBLE(sdel2)) clog1 = zfflog(-cdyzp,-ieps,cone,ier) if ( ieps*DIMAG(cdyzp).lt.0.and.DBLE(cdyzp).gt.0 ) then clog1 = clog1 - ieps*c2ipi endif cs(10) = -clog1**2/2 ipi12 = ipi12 - 4 * * now z- * cdyzm = -cmipj(1,3)*DBLE(wp)/(2*DBLE(xpi(6))) - + cmipj(2,2)/(2*DBLE(sdel2)) clog2 = zfflog(-cdyzm,+ieps,cone,ier) if ( ieps*DIMAG(cdyzm).gt.0.and.DBLE(cdyzm).gt.0 ) then clog2 = clog2 + ieps*c2ipi endif cs(11) = -clog2**2/2 ipi12 = ipi12 - 2 * * the dilog * chulp = cdyzp/cdyzm hulp = DBLE(cdyzp)/DBLE(cdyzm) if ( DBLE(cdyzp) .lt. 0 ) then ieps1 = -ieps else ieps1 = +ieps endif if ( DIMAG(chulp) .eq. 0 ) then hulp = DBLE(chulp) call ffzxdl(cli,i,cdum(1),hulp,+ieps1,ier) else call ffzzdl(cli,i,cdum(1),chulp,ier) if ( hulp.gt.1 .and. ieps1*DIMAG(chulp).lt.0 ) then cli = cli + ieps1*c2ipi*zfflog(chulp,0,czero,ier) endif endif cs(12) = -cli ipi12 = ipi12 - i * * the log for npoin=4 * if ( npoin.eq.4 ) then if ( ilogi(3) .eq. -999 ) then if ( cmipj(1,3) .eq. 0 ) then chulp = -1 chulp1 = 0 elseif ( DBLE(cdyzp) .lt. DBLE(cdyzm) ) then chulp = -cdyzm/cdyzp chulp1 = +cmipj(1,3)/cdyzp*DBLE(1/xpi(6)) else chulp = -cdyzp/cdyzm chulp1 = -cmipj(1,3)/cdyzm*DBLE(1/xpi(6)) endif dyzp = DBLE(cdyzp) call ffxclg(clogi(3),ilogi(3),chulp,chulp1,dyzp, + ier) endif endif * #] complex case: endif * #] the off-shell S3: * #[ the off-shell S2: * * the im sign * if ( -DBLE(cmipj(2,2)) .gt. 0 ) then ieps = -1 else ieps = +1 endif * if ( nschem .lt. 3 ) then * #[ real case: * * first z- * dyzm = -DBLE(cmipj(2,2))*DBLE(wp)/(2*DBLE(xpi(5))) - + DBLE(cmipj(1,3))/(2*DBLE(sdel2)) clog1 = zxfflg(+dyzm,-ieps,1D0,ier) cs(13) = +clog1**2/2 ipi12 = ipi12 + 4 * * now z+ * dyzp = -DBLE(cmipj(2,2))*DBLE(wm)/(2*DBLE(xpi(5))) - + DBLE(cmipj(1,3))/(2*DBLE(sdel2)) clog2 = zxfflg(+dyzp,+ieps,1D0,ier) cs(14) = +clog2**2/2 ipi12 = ipi12 + 2 hulp = dyzm/dyzp if ( dyzm .lt. 0 ) then ieps1 = -ieps else ieps1 = +ieps endif call ffzxdl(cli,i,cdum(1),hulp,-ieps1,ier) cs(15) = +cli ipi12 = ipi12 + i * * the log for npoin=4 * if ( npoin.eq.4 ) then if ( ilogi(2) .eq. -999 ) then if ( DBLE(cmipj(2,2)) .eq. 0 ) then chulp = -1 chulp1 = 0 elseif ( dyzp .lt. dyzm ) then chulp = -dyzm/dyzp chulp1 = +DBLE(cmipj(2,2))/DBLE(xpi(5)*dyzp) elseif ( dyzp .gt. dyzm ) then chulp = -dyzp/dyzm chulp1 = -DBLE(cmipj(2,2))/DBLE(xpi(5)*dyzm) endif call ffxclg(clogi(2),ilogi(2),chulp,chulp1,dyzp, + ier) endif endif * #] real case: else * #[ complex case: * * first z- * cdyzm = -cmipj(2,2)*DBLE(wp)/(2*DBLE(xpi(5))) - + cmipj(1,3)/(2*DBLE(sdel2)) clog1 = zfflog(+cdyzm,-ieps,cone,ier) if ( DBLE(cdyzm).lt.0.and.ieps*DIMAG(cdyzm).gt.0 ) then clog1 = clog1 - ieps*c2ipi endif cs(13) = +clog1**2/2 ipi12 = ipi12 + 4 * * now z+ * cdyzp = -cmipj(2,2)*DBLE(wm)/(2*DBLE(xpi(5))) - + cmipj(1,3)/(2*DBLE(sdel2)) clog2 = zfflog(+cdyzp,+ieps,cone,ier) if ( DBLE(cdyzp).lt.0.and.ieps*DIMAG(cdyzp).lt.0 ) then clog2 = clog2 + ieps*c2ipi endif cs(14) = +clog2**2/2 ipi12 = ipi12 + 2 * * and ghe dilog * chulp = cdyzm/cdyzp hulp = DBLE(dyzm)/DBLE(dyzp) if ( DBLE(cdyzm) .lt. 0 ) then ieps1 = -ieps else ieps1 = +ieps endif if ( DIMAG(chulp ) .eq. 0 ) then hulp = DBLE(chulp) call ffzxdl(cli,i,cdum(1),hulp,-ieps1,ier) else call ffzzdl(cli,i,cdum(1),chulp,ier) if ( hulp.gt.1 .and. ieps1*DIMAG(chulp).gt.0 ) then cli = cli - ieps1*c2ipi*zfflog(chulp,0,czero,ier) endif endif cs(15) = +cli ipi12 = ipi12 + i * * the log for npoin=4 * if ( npoin.eq.4 ) then if ( ilogi(2) .eq. -999 ) then if ( cmipj(2,2) .eq. 0 ) then chulp = -1 chulp1 = 0 elseif ( DBLE(cdyzp) .lt. DBLE(cdyzm) ) then chulp = -cdyzm/cdyzp chulp1 = +cmipj(2,2)/cdyzp*DBLE(1/xpi(5)) elseif ( DBLE(cdyzp) .gt. DBLE(cdyzm) ) then chulp = -cdyzp/cdyzm chulp1 = -cmipj(2,2)/cdyzm*DBLE(1/xpi(5)) endif dyzp = DBLE(cdyzp) call ffxclg(clogi(2),ilogi(2),chulp,chulp1,dyzp, + ier) endif endif * #] complex case: endif endif * #] the off-shell S2: * #[ sdel2<0!: if ( sdel2i.gt.0 .neqv. xpi(4).eq.0.and.xpi(1).gt.xpi(2) ) then if ( .not.lsmug ) then n = 10 else n = 15 endif do 10 i=1,n cs(i) = -cs(i) 10 continue ipi12 = -ipi12 if ( npoin.eq.4 ) then do 20 i=1,3 ilogi(i) = -ilogi(i) clogi(i) = -clogi(i) 20 continue endif endif * #] sdel2<0!: *###] ffxc0j: end *###[ ffxclg: subroutine ffxclg(clg,ilg,chulp,chulp1,dyzp,ier) ***#[*comment:*********************************************************** * * * compute the extra logs for npoin=4 given chulp=-cdyzm/cdyzp * * all flagchecking has already been done. * * * * Input: chulp (complex) see above * * chulp1 (complex) 1+chulp (in case chulp ~ -1) * * dyzp (real) (real part of) y-z+ for im part * * Output: clg (complex) the log * * ilg (integer) factor i*pi split off clg * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ilg,ier DOUBLE PRECISION dyzp DOUBLE COMPLEX clg,chulp,chulp1 * * local variables * DOUBLE PRECISION hulp,hulp1,dfflo1 DOUBLE COMPLEX zxfflg,zfflog,zfflo1 external dfflo1,zxfflg,zfflog,zfflo1 * * common blocks * #include "ff.h" * * #] declarations: * #[ work: * if ( DIMAG(chulp) .eq. 0 ) then hulp = DBLE(chulp) hulp1 = DBLE(chulp1) if ( abs(hulp1) .lt. xloss ) then clg = DBLE(dfflo1(hulp1,ier)) else clg = zxfflg(abs(hulp),0,0D0,ier) endif if ( hulp .lt. 0 ) then if ( dyzp.lt.0 ) then ilg = +1 else ilg = -1 endif else ilg = 0 endif else * * may have to be improved * if ( abs(DBLE(chulp1))+abs(DIMAG(chulp1)) .lt. xloss ) then clg = zfflo1(chulp1,ier) else clg = zfflog(chulp,0,czero,ier) endif ilg = 0 if ( DBLE(chulp) .lt. 0 ) then if ( dyzp.lt.0 .and. DIMAG(clg).lt.0 ) then ilg = +2 elseif ( dyzp.gt.0 .and. DIMAG(clg).gt.0 ) then ilg = -2 endif endif endif * #] work: *###] ffxclg: end herwig++-2.6.0.orig/Looptools/C/C0C.F0000644000175000017500000000207711754474774017635 0ustar sylvestresylvestre* C0C.F * the scalar three-point function for complex parameters * this file is part of LoopTools * last modified 24 Jan 06 th #include "defs.h" double complex function C0C(p1, p2, p1p2, m1, m2, m3) implicit none double complex p1, p2, p1p2, m1, m2, m3 #include "lt.h" double complex cpi(6) integer ier cpi(1) = m1 cpi(2) = m2 cpi(3) = m3 cpi(4) = p1 cpi(5) = p2 cpi(6) = p1p2 ier = 0 call ffcc0(C0C, cpi, ier) if( ier .gt. warndigits ) then ier = 0 call ffcc0r(C0C, cpi, ier) if( ier .gt. warndigits ) then print *, "C0C claims ", ier, " lost digits" print *, " p1 =", p1 print *, " p2 =", p2 print *, " p1p2 =", p1p2 print *, " m1 =", m1 print *, " m2 =", m2 print *, " m3 =", m3 endif endif end ************************************************************************ * adapter code for C++ subroutine c0subc(res, p1, p2, p1p2, m1, m2, m3) implicit none double complex res double complex p1, p2, p1p2, m1, m2, m3 double complex C0C external C0C res = C0C(p1, p2, p1p2, m1, m2, m3) end herwig++-2.6.0.orig/Looptools/clooptools.cc0000644000175000017500000002767211754474774021513 0ustar sylvestresylvestre/* -*- C++ -*- clooptools.cc the C++ file with the definitions for fortran IO redirection Output redirected to log file. 2007-07-18 dgrell Definitions moved here from clooptools.h 2011-01-21 dgrell */ #include "Herwig++/Looptools/clooptools.h" #ifdef HAVE_CONFIG_H # include #endif #include #include #include #ifdef HAVE_UNISTD_H # include "ThePEG/Repository/CurrentGenerator.h" #endif extern "C" { #ifdef HAVE_UNISTD_H # include #endif extern void a0sub_(DOUBLE_COMPLEX *result, AARGS(_Fr_)); extern void a0subc_(DOUBLE_COMPLEX *result, AARGS(_Fc_)); extern void a00sub_(DOUBLE_COMPLEX *result, AARGS(_Fr_)); extern void a00subc_(DOUBLE_COMPLEX *result, AARGS(_Fc_)); extern long bget_(BARGS(_Fr_)); extern long bgetc_(BARGS(_Fc_)); extern void c0sub_(DOUBLE_COMPLEX *result, CARGS(_Fr_)); extern void c0subc_(DOUBLE_COMPLEX *result, CARGS(_Fc_)); extern long cget_(CARGS(_Fr_)); extern long cgetc_(CARGS(_Fc_)); extern void d0sub_(DOUBLE_COMPLEX *result, DARGS(_Fr_)); extern void d0subc_(DOUBLE_COMPLEX *result, DARGS(_Fc_)); extern long dget_(DARGS(_Fr_)); extern long dgetc_(DARGS(_Fc_)); extern void e0sub_(DOUBLE_COMPLEX *result, EARGS(_Fr_)); extern void e0subc_(DOUBLE_COMPLEX *result, EARGS(_Fc_)); extern long eget_(EARGS(_Fr_)); extern long egetc_(EARGS(_Fc_)); extern void li2sub_(DOUBLE_COMPLEX *result, const double *x); extern void li2csub_(DOUBLE_COMPLEX *result, CDOUBLE_COMPLEX *x); extern void ltini_(void); extern void ltexi_(void); extern void clearcache_(void); extern void markcache_(void); extern void restorecache_(void); extern struct { /* MUST match common block ltvars in lt.h! */ DOUBLE_COMPLEX cache[8][2]; DOUBLE_COMPLEX savedptr[8]; double maxdev; long warndigits, errdigits; long serial, versionkey; long debugkey, debugfrom, debugto; } ltvars_; extern struct { /* MUST match common block ltcache in lt.h! */ long cmpbits; } ltcache_; extern struct { /* MUST match common block ltregul in ff.h! */ double mudim, delta, lambda, minmass; } ltregul_; } /****************************************************************/ namespace { #ifdef HAVE_UNISTD_H int start_redirection(std::string logfilename) { if ( ! ThePEG::CurrentGenerator::isVoid() && ThePEG::CurrentGenerator::current().useStdOut() ) return -1; // redirect C stdout --- unix specific solution, // see C FAQ: http://c-faq.com/stdio/undofreopen.html int fd; fflush(stdout); fd = dup(fileno(stdout)); freopen(logfilename.c_str(), "a", stdout); return fd; } void stop_redirection(int fd) { if ( ! ThePEG::CurrentGenerator::isVoid() && ThePEG::CurrentGenerator::current().useStdOut() ) return; fflush(stdout); close(fileno(stdout)); dup2(fd, fileno(stdout)); close(fd); clearerr(stdout); } #else int start_redirection(std::string) { return -1; } void stop_redirection(int) {} #endif } // namespace namespace Herwig { namespace Looptools { static int initcount = 0; void ltini(std::string logfilename) { assert( initcount >= 0 ); if ( initcount == 0 ) { int rd = start_redirection(logfilename); ltini_(); stop_redirection(rd); } ++initcount; } void ltexi(std::string logfilename) { assert( initcount > 0 ); --initcount; if ( initcount == 0 ) { int rd = start_redirection(logfilename); ltexi_(); stop_redirection(rd); } } double_complex ToComplex(DOUBLE_COMPLEX c) { return double_complex(c.re, c.im); } double_complex A0(AARGS(_Cr_)) { DOUBLE_COMPLEX result; a0sub_(&result, AARGS(_Frp_)); return ToComplex(result); } double_complex A0C(AARGS(_Cc_)) { DOUBLE_COMPLEX result; a0subc_(&result, AARGS(_Fcp_)); return ToComplex(result); } double_complex A00(AARGS(_Cr_)) { DOUBLE_COMPLEX result; a00sub_(&result, AARGS(_Frp_)); return ToComplex(result); } double_complex A00C(AARGS(_Cc_)) { DOUBLE_COMPLEX result; a00subc_(&result, AARGS(_Fcp_)); return ToComplex(result); } /****************************************************************/ long Bget(BARGS(_Cr_)) { return bget_(BARGS(_Frp_)); } long BgetC(BARGS(_Cc_)) { return bgetc_(BARGS(_Fcp_)); } DOUBLE_COMPLEX *Bcache(const long integral) { return <vars_.cache[0][integral]; } DOUBLE_COMPLEX *BcacheC(const long integral) { return <vars_.cache[1][integral]; } double_complex Bval(const int i, const long integral) { return ToComplex(Bcache(integral)[i]); } double_complex BvalC(const int i, const long integral) { return ToComplex(BcacheC(integral)[i]); } double_complex B0i(const int i, BARGS(_Cr_)) { return Bval(i, Bget(BARGS(_Id_))); } double_complex B0iC(const int i, BARGS(_Cc_)) { return BvalC(i, BgetC(BARGS(_Id_))); } double_complex B0(BARGS(_Cr_)) { return B0i(bb0, BARGS(_Id_)); } double_complex B1(BARGS(_Cr_)) { return B0i(bb1, BARGS(_Id_)); } double_complex B00(BARGS(_Cr_)) { return B0i(bb00, BARGS(_Id_)); } double_complex B11(BARGS(_Cr_)) { return B0i(bb11, BARGS(_Id_)); } double_complex B001(BARGS(_Cr_)) { return B0i(bb001, BARGS(_Id_)); } double_complex B111(BARGS(_Cr_)) { return B0i(bb111, BARGS(_Id_)); } double_complex DB0(BARGS(_Cr_)) { return B0i(dbb0, BARGS(_Id_)); } double_complex DB1(BARGS(_Cr_)) { return B0i(dbb1, BARGS(_Id_)); } double_complex DB00(BARGS(_Cr_)) { return B0i(dbb00, BARGS(_Id_)); } double_complex DB11(BARGS(_Cr_)) { return B0i(dbb11, BARGS(_Id_)); } double_complex B0C(BARGS(_Cc_)) { return B0iC(bb0, BARGS(_Id_)); } double_complex B1C(BARGS(_Cc_)) { return B0iC(bb1, BARGS(_Id_)); } double_complex B00C(BARGS(_Cc_)) { return B0iC(bb00, BARGS(_Id_)); } double_complex B11C(BARGS(_Cc_)) { return B0iC(bb11, BARGS(_Id_)); } double_complex B001C(BARGS(_Cc_)) { return B0iC(bb001, BARGS(_Id_)); } double_complex B111C(BARGS(_Cc_)) { return B0iC(bb111, BARGS(_Id_)); } double_complex DB0C(BARGS(_Cc_)) { return B0iC(dbb0, BARGS(_Id_)); } double_complex DB1C(BARGS(_Cc_)) { return B0iC(dbb1, BARGS(_Id_)); } double_complex DB00C(BARGS(_Cc_)) { return B0iC(dbb00, BARGS(_Id_)); } double_complex DB11C(BARGS(_Cc_)) { return B0iC(dbb11, BARGS(_Id_)); } /****************************************************************/ double_complex C0(CARGS(_Cr_)) { DOUBLE_COMPLEX result; c0sub_(&result, CARGS(_Frp_)); return ToComplex(result); } double_complex C0C(CARGS(_Cc_)) { DOUBLE_COMPLEX result; c0subc_(&result, CARGS(_Fcp_)); return ToComplex(result); } long Cget(CARGS(_Cr_)) { return cget_(CARGS(_Frp_)); } long CgetC(CARGS(_Cc_)) { return cgetc_(CARGS(_Fcp_)); } DOUBLE_COMPLEX *Ccache(const long integral) { return <vars_.cache[2][integral]; } DOUBLE_COMPLEX *CcacheC(const long integral) { return <vars_.cache[3][integral]; } double_complex Cval(const int i, const long integral) { return ToComplex(Ccache(integral)[i]); } double_complex CvalC(const int i, const long integral) { return ToComplex(CcacheC(integral)[i]); } double_complex C0i(const int i, CARGS(_Cr_)) { return Cval(i, Cget(CARGS(_Id_))); } double_complex C0iC(const int i, CARGS(_Cc_)) { return CvalC(i, CgetC(CARGS(_Id_))); } /****************************************************************/ double_complex D0(DARGS(_Cr_)) { DOUBLE_COMPLEX result; d0sub_(&result, DARGS(_Frp_)); return ToComplex(result); } double_complex D0C(DARGS(_Cc_)) { DOUBLE_COMPLEX result; d0subc_(&result, DARGS(_Fcp_)); return ToComplex(result); } long Dget(DARGS(_Cr_)) { return dget_(DARGS(_Frp_)); } long DgetC(DARGS(_Cc_)) { return dgetc_(DARGS(_Fcp_)); } DOUBLE_COMPLEX *Dcache(const long integral) { return <vars_.cache[4][integral]; } DOUBLE_COMPLEX *DcacheC(const long integral) { return <vars_.cache[5][integral]; } double_complex Dval(const int i, const long integral) { return ToComplex(Dcache(integral)[i]); } double_complex DvalC(const int i, const long integral) { return ToComplex(DcacheC(integral)[i]); } double_complex D0i(const int i, DARGS(_Cr_)) { return Dval(i, Dget(DARGS(_Id_))); } double_complex D0iC(const int i, DARGS(_Cc_)) { return DvalC(i, DgetC(DARGS(_Id_))); } /****************************************************************/ double_complex E0(EARGS(_Cr_)) { DOUBLE_COMPLEX result; e0sub_(&result, EARGS(_Frp_)); return ToComplex(result); } double_complex E0C(EARGS(_Cc_)) { DOUBLE_COMPLEX result; e0subc_(&result, EARGS(_Fcp_)); return ToComplex(result); } long Eget(EARGS(_Cr_)) { return eget_(EARGS(_Frp_)); } long EgetC(EARGS(_Cc_)) { return egetc_(EARGS(_Fcp_)); } DOUBLE_COMPLEX *Ecache(const long integral) { return <vars_.cache[6][integral]; } DOUBLE_COMPLEX *EcacheC(const long integral) { return <vars_.cache[7][integral]; } double_complex Eval(const int i, const long integral) { return ToComplex(Ecache(integral)[i]); } double_complex EvalC(const int i, const long integral) { return ToComplex(EcacheC(integral)[i]); } double_complex E0i(const int i, EARGS(_Cr_)) { return Eval(i, Eget(EARGS(_Id_))); } double_complex E0iC(const int i, EARGS(_Cc_)) { return EvalC(i, EgetC(EARGS(_Id_))); } /****************************************************************/ double_complex Li2(const double x) { DOUBLE_COMPLEX result; li2sub_(&result, _Frp_(x)); return ToComplex(result); } double_complex Li2C(const double_complex x) { DOUBLE_COMPLEX result; li2csub_(&result, _Fcp_(x)); return ToComplex(result); } /****************************************************************/ void setmudim(const double mudim) { ltregul_.mudim = mudim; clearcache(); } double getmudim() { return ltregul_.mudim; } void setdelta(const double delta) { ltregul_.delta = delta; clearcache(); } double getdelta() { return ltregul_.delta; } void setlambda(const double lambda) { ltregul_.lambda = lambda; clearcache(); } double getlambda() { return ltregul_.lambda; } void setminmass(const double minmass) { ltregul_.minmass = minmass; clearcache(); } double getminmass() { return ltregul_.minmass; } void setmaxdev(const double maxdev) { ltvars_.maxdev = maxdev; } double getmaxdev() { return ltvars_.maxdev; } void setwarndigits(const long warndigits) { ltvars_.warndigits = warndigits; } long getwarndigits() { return ltvars_.warndigits; } void seterrdigits(const long errdigits) { ltvars_.errdigits = errdigits; } long geterrdigits() { return ltvars_.errdigits; } void setversionkey(const long versionkey) { ltvars_.versionkey = versionkey; clearcache(); } long getversionkey() { return ltvars_.versionkey; } void setdebugkey(const long debugkey) { ltvars_.debugkey = debugkey; } long getdebugkey() { return ltvars_.debugkey; } void setdebugrange(const long debugfrom, const long debugto) { ltvars_.debugfrom = debugfrom; ltvars_.debugto = debugto; } void setcmpbits(const long cmpbits) { ltcache_.cmpbits = cmpbits; } long getcmpbits() { return ltcache_.cmpbits; } void clearcache() { clearcache_(); } void markcache() { markcache_(); } void restorecache() { restorecache_(); } } // namespace Looptools } // namespace Herwig herwig++-2.6.0.orig/Looptools/A/0000755000175000017500000000000011756464211017134 5ustar sylvestresylvestreherwig++-2.6.0.orig/Looptools/A/A00.F0000644000175000017500000000101111754474774017571 0ustar sylvestresylvestre* A00.F * the scalar one-point function * this file is part of LoopTools * written by M. Rauch * last modified 24 Jan 06 th #include "defs.h" double complex function XA00(m) implicit none DVAR m #include "lt.h" double complex XA0 external XA0 XA00 = .25D0*m*(XA0(m) + .5D0*m) end ************************************************************************ * adapter code for C++ subroutine XA00sub(res, m) implicit none double complex res DVAR m double complex XA00 external XA00 res = XA00(m) end herwig++-2.6.0.orig/Looptools/A/ffxa0.F0000644000175000017500000000114511754474774020265 0ustar sylvestresylvestre* ffxa0.F * the one-point function for real mass * original code by G.J. van Oldenborgh * this file is part of LoopTools * last modified 7 Dec 10 th #include "externals.h" * Input: xm (real) mass2, * Output: ca0 (complex) A0, the one-point function, * ier 0 (ok) subroutine ffxa0(ca0, xm, ier) implicit none double complex ca0 double precision xm integer ier #include "ff.h" double precision xmu, xlogm xmu = xm if( mudim .ne. 0 ) xmu = xmu/mudim if( xmu .gt. xalogm ) then xlogm = log(xmu) else xlogm = 0 if( xmu .ne. 0 ) call fferr(2, ier) endif ca0 = -(xm*(xlogm - 1 - delta)) end herwig++-2.6.0.orig/Looptools/A/ffca0.F0000644000175000017500000000153311754474774020241 0ustar sylvestresylvestre* ffca0.F * the one-point function for complex mass * original code by G.J. van Oldenborgh * this file is part of LoopTools * last modified 7 Dec 10 th #include "externals.h" * Input: cm (complex) mass2, re > 0, im < 0. * Output: ca0 (complex) A0, the one-point function, * ier 0 (OK) subroutine ffca0(ca0, cm, ier) implicit none double complex ca0, cm integer ier #include "ff.h" double complex cmu, clogm double precision absc double complex c absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * the real case: * adapted to log-and-pole scheme 25-mar-1992 if( DIMAG(cm) .eq. 0 .or. nschem .lt. 7 ) then call ffxa0(ca0, cm, ier) return endif cmu = cm if( mudim .ne. 0 ) cmu = cmu/mudim if( absc(cmu) .gt. xclogm ) then clogm = log(cmu) else clogm = 0 if ( cmu .ne. 0 ) call fferr(1, ier) endif ca0 = -cm*(clogm - 1 - delta) end herwig++-2.6.0.orig/Looptools/A/A0.F0000644000175000017500000000264611754474774017530 0ustar sylvestresylvestre* A0.F * the scalar one-point function * this file is part of LoopTools * last modified 20 Dec 06 th #include "defs.h" double complex function XA0(m) implicit none DVAR m #include "lt.h" double complex XA0b external XA0b double complex res(0:1) integer key, ier key = ibits(versionkey, KeyA0, 2) if( key .ne. 1 ) then ier = 0 call Xffa0(res(0), m, ier) if( ier .gt. warndigits ) key = ior(key, 2) endif if( key .ne. 0 ) then res(1) = XA0b(m) if( key .gt. 1 .and. & abs(res(0) - res(1)) .gt. maxdev*abs(res(0)) ) then #ifdef COMPLEXPARA print *, "Discrepancy in CA0:" print *, " m =", m print *, "A0C a =", res(0) print *, "A0C b =", res(1) #else print *, "Discrepancy in A0:" print *, " m =", m print *, "A0 a =", res(0) print *, "A0 b =", res(1) #endif endif endif XA0 = res(iand(key, 1)) end ************************************************************************ * adapter code for C++ subroutine XA0sub(res, m) implicit none double complex res DVAR m double complex XA0 external XA0 res = XA0(m) end ************************************************************************ * this routine is adapted from Ansgar Denner's bcanew.f * to the conventions of LoopTools double complex function XA0b(m) implicit none DVAR m #include "lt.h" if( m .eq. 0 ) then XA0b = 0 else XA0b = m*(1 - log(m/mudim) + delta) endif end herwig++-2.6.0.orig/Looptools/Makefile.in0000644000175000017500000016777611756461677021066 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ EXTRA_PROGRAMS = tester$(EXEEXT) subdir = Looptools DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwLooptools_la_DEPENDENCIES = libHwLooptoolsXFC.la \ libHwLooptoolsCFC.la am_libHwLooptools_la_OBJECTS = libHwLooptools_la-cache.lo \ libHwLooptools_la-clooptools.lo libHwLooptools_la_OBJECTS = $(am_libHwLooptools_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent libHwLooptools_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(libHwLooptools_la_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ libHwLooptoolsCFC_la_LIBADD = am__objects_1 = libHwLooptoolsCFC_la-A0.lo libHwLooptoolsCFC_la-A00.lo \ libHwLooptoolsCFC_la-Bget.lo libHwLooptoolsCFC_la-Bcoeffa.lo \ libHwLooptoolsCFC_la-Cget.lo libHwLooptoolsCFC_la-Dget.lo \ libHwLooptoolsCFC_la-E0.lo libHwLooptoolsCFC_la-Eget.lo \ libHwLooptoolsCFC_la-Ecoeffa.lo \ libHwLooptoolsCFC_la-Ecoeffb.lo libHwLooptoolsCFC_la-solve.lo \ libHwLooptoolsCFC_la-Dump.lo libHwLooptoolsCFC_la-Li2.lo am_libHwLooptoolsCFC_la_OBJECTS = $(am__objects_1) libHwLooptoolsCFC_la_OBJECTS = $(am_libHwLooptoolsCFC_la_OBJECTS) libHwLooptoolsCFC_la_LINK = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(F77LD) \ $(libHwLooptoolsCFC_la_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ libHwLooptoolsXFC_la_LIBADD = am__objects_2 = libHwLooptoolsXFC_la-A0.lo libHwLooptoolsXFC_la-A00.lo \ libHwLooptoolsXFC_la-ffxa0.lo libHwLooptoolsXFC_la-ffca0.lo \ libHwLooptoolsXFC_la-Bget.lo libHwLooptoolsXFC_la-Bcoeff.lo \ libHwLooptoolsXFC_la-BcoeffC.lo \ libHwLooptoolsXFC_la-Bcoeffa.lo \ libHwLooptoolsXFC_la-Bcoeffb.lo libHwLooptoolsXFC_la-ffxb0.lo \ libHwLooptoolsXFC_la-ffcb0.lo libHwLooptoolsXFC_la-ffxb1.lo \ libHwLooptoolsXFC_la-ffcb1.lo libHwLooptoolsXFC_la-ffxb2p.lo \ libHwLooptoolsXFC_la-ffcb2p.lo libHwLooptoolsXFC_la-ffxdb0.lo \ libHwLooptoolsXFC_la-ffcdb0.lo libHwLooptoolsXFC_la-ffxdb1.lo \ libHwLooptoolsXFC_la-ffdel2.lo libHwLooptoolsXFC_la-ffcel2.lo \ libHwLooptoolsXFC_la-C0.lo libHwLooptoolsXFC_la-C0C.lo \ libHwLooptoolsXFC_la-Cget.lo libHwLooptoolsXFC_la-ffxc0.lo \ libHwLooptoolsXFC_la-ffcc0.lo libHwLooptoolsXFC_la-ffxc0i.lo \ libHwLooptoolsXFC_la-ffxc0p.lo libHwLooptoolsXFC_la-ffxc0p0.lo \ libHwLooptoolsXFC_la-ffcc0p.lo libHwLooptoolsXFC_la-ffdxc0.lo \ libHwLooptoolsXFC_la-ffdel3.lo libHwLooptoolsXFC_la-ffcel3.lo \ libHwLooptoolsXFC_la-D0.lo libHwLooptoolsXFC_la-D0C.lo \ libHwLooptoolsXFC_la-Dget.lo libHwLooptoolsXFC_la-ffxd0.lo \ libHwLooptoolsXFC_la-ffxd0h.lo libHwLooptoolsXFC_la-ffxd0i.lo \ libHwLooptoolsXFC_la-ffxd0p.lo libHwLooptoolsXFC_la-ffxd0m0.lo \ libHwLooptoolsXFC_la-ffxd0tra.lo \ libHwLooptoolsXFC_la-ffxdbd.lo libHwLooptoolsXFC_la-ffdcc0.lo \ libHwLooptoolsXFC_la-ffdel4.lo libHwLooptoolsXFC_la-ffd0c.lo \ libHwLooptoolsXFC_la-ffTn.lo libHwLooptoolsXFC_la-ffT13.lo \ libHwLooptoolsXFC_la-ffS2.lo libHwLooptoolsXFC_la-ffS3n.lo \ libHwLooptoolsXFC_la-ffRn.lo libHwLooptoolsXFC_la-E0.lo \ libHwLooptoolsXFC_la-Eget.lo libHwLooptoolsXFC_la-Ecoeffa.lo \ libHwLooptoolsXFC_la-Ecoeffb.lo libHwLooptoolsXFC_la-ffxe0.lo \ libHwLooptoolsXFC_la-ffdel5.lo libHwLooptoolsXFC_la-ini.lo \ libHwLooptoolsXFC_la-auxCD.lo libHwLooptoolsXFC_la-solve.lo \ libHwLooptoolsXFC_la-Dump.lo libHwLooptoolsXFC_la-Li2.lo \ libHwLooptoolsXFC_la-ffinit.lo libHwLooptoolsXFC_la-ffxli2.lo \ libHwLooptoolsXFC_la-ffcli2.lo libHwLooptoolsXFC_la-ffxxyz.lo \ libHwLooptoolsXFC_la-ffcxyz.lo libHwLooptoolsXFC_la-ffcrr.lo \ libHwLooptoolsXFC_la-ffcxr.lo libHwLooptoolsXFC_la-fftran.lo \ libHwLooptoolsXFC_la-ffabcd.lo libHwLooptoolsXFC_la-ff2dl2.lo \ libHwLooptoolsXFC_la-ffcxs3.lo libHwLooptoolsXFC_la-ffcxs4.lo \ libHwLooptoolsXFC_la-ffdcxs.lo libHwLooptoolsXFC_la-ffbndc.lo am_libHwLooptoolsXFC_la_OBJECTS = $(am__objects_2) libHwLooptoolsXFC_la_OBJECTS = $(am_libHwLooptoolsXFC_la_OBJECTS) libHwLooptoolsXFC_la_LINK = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(F77LD) \ $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ am_tester_OBJECTS = tester.$(OBJEXT) tester_OBJECTS = $(am_tester_OBJECTS) am__DEPENDENCIES_1 = tester_DEPENDENCIES = libHwLooptools.la $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f PPF77COMPILE = $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_FFLAGS) $(FFLAGS) LTPPF77COMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_FFLAGS) $(FFLAGS) AM_V_PPF77 = $(am__v_PPF77_@AM_V@) am__v_PPF77_ = $(am__v_PPF77_@AM_DEFAULT_V@) am__v_PPF77_0 = @echo " PPF77 " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ F77LD = $(F77) F77LINK = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_F77LD = $(am__v_F77LD_@AM_V@) am__v_F77LD_ = $(am__v_F77LD_@AM_DEFAULT_V@) am__v_F77LD_0 = @echo " F77LD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwLooptools_la_SOURCES) $(libHwLooptoolsCFC_la_SOURCES) \ $(libHwLooptoolsXFC_la_SOURCES) $(tester_SOURCES) DIST_SOURCES = $(libHwLooptools_la_SOURCES) \ $(libHwLooptoolsCFC_la_SOURCES) \ $(libHwLooptoolsXFC_la_SOURCES) $(tester_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwLooptoolsXFC.la libHwLooptoolsCFC.la \ libHwLooptools.la EXTRA_DIST = include/lt.h include/ftypes.h include/ff.h include/ffwarn.h \ include/fferr.h include/defs.h include/looptools.h include/ffperm5.h \ include/clooptools.h include/cexternals.h include/externals.h \ util/solve-LU.F util/solve-LU.h util/solve-Eigen.F theXFCSOURCES = \ A/A0.F A/A00.F A/ffxa0.F A/ffca0.F B/Bget.F \ B/Bcoeff.F B/BcoeffC.F B/Bcoeffa.F B/Bcoeffb.F B/ffxb0.F \ B/ffcb0.F B/ffxb1.F B/ffcb1.F B/ffxb2p.F B/ffcb2p.F \ B/ffxdb0.F B/ffcdb0.F B/ffxdb1.F B/ffdel2.F B/ffcel2.F \ C/C0.F C/C0C.F C/Cget.F C/ffxc0.F C/ffcc0.F \ C/ffxc0i.F C/ffxc0p.F C/ffxc0p0.F C/ffcc0p.F C/ffdxc0.F \ C/ffdel3.F C/ffcel3.F D/D0.F D/D0C.F D/Dget.F \ D/ffxd0.F D/ffxd0h.F D/ffxd0i.F D/ffxd0p.F D/ffxd0m0.F \ D/ffxd0tra.F D/ffxdbd.F D/ffdcc0.F D/ffdel4.F D/ffd0c.F \ D/ffTn.F D/ffT13.F D/ffS2.F D/ffS3n.F D/ffRn.F \ E/E0.F E/Eget.F E/Ecoeffa.F E/Ecoeffb.F E/ffxe0.F \ E/ffdel5.F util/ini.F util/auxCD.F util/solve.F util/Dump.F \ util/Li2.F util/ffinit.F util/ffxli2.F util/ffcli2.F util/ffxxyz.F \ util/ffcxyz.F util/ffcrr.F util/ffcxr.F util/fftran.F util/ffabcd.F \ util/ff2dl2.F util/ffcxs3.F util/ffcxs4.F util/ffdcxs.F util/ffbndc.F theCFCSOURCES = \ A/A0.F A/A00.F B/Bget.F B/Bcoeffa.F C/Cget.F D/Dget.F E/E0.F \ E/Eget.F E/Ecoeffa.F E/Ecoeffb.F util/solve.F util/Dump.F util/Li2.F commonCPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/include libHwLooptoolsXFC_la_SOURCES = $(theXFCSOURCES) libHwLooptoolsXFC_la_CPPFLAGS = $(commonCPPFLAGS) libHwLooptoolsXFC_la_FCFLAGS = $(AM_FCFLAGS) -ffixed-line-length-none libHwLooptoolsXFC_la_FFLAGS = $(AM_FFLAGS) -ffixed-line-length-none libHwLooptoolsCFC_la_SOURCES = $(theCFCSOURCES) libHwLooptoolsCFC_la_CPPFLAGS = $(commonCPPFLAGS) -DCOMPLEXPARA libHwLooptoolsCFC_la_FCFLAGS = $(AM_FCFLAGS) -ffixed-line-length-none libHwLooptoolsCFC_la_FFLAGS = $(AM_FFLAGS) -ffixed-line-length-none libHwLooptools_la_SOURCES = util/cache.c clooptools.cc libHwLooptools_la_CXXFLAGS = $(AM_CXXFLAGS) -Wno-strict-aliasing libHwLooptools_la_CPPFLAGS = $(commonCPPFLAGS) libHwLooptools_la_CFLAGS = $(AM_CFLAGS) -std=c99 libHwLooptools_la_LIBADD = libHwLooptoolsXFC.la libHwLooptoolsCFC.la tester_SOURCES = tester.cc tester_LDADD = libHwLooptools.la $(FCLIBS) $(THEPEGLDFLAGS) $(THEPEGLIB) all: all-am .SUFFIXES: .SUFFIXES: .F .c .cc .f .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Looptools/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Looptools/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwLooptools.la: $(libHwLooptools_la_OBJECTS) $(libHwLooptools_la_DEPENDENCIES) $(EXTRA_libHwLooptools_la_DEPENDENCIES) $(AM_V_CXXLD)$(libHwLooptools_la_LINK) $(libHwLooptools_la_OBJECTS) $(libHwLooptools_la_LIBADD) $(LIBS) libHwLooptoolsCFC.la: $(libHwLooptoolsCFC_la_OBJECTS) $(libHwLooptoolsCFC_la_DEPENDENCIES) $(EXTRA_libHwLooptoolsCFC_la_DEPENDENCIES) $(AM_V_F77LD)$(libHwLooptoolsCFC_la_LINK) $(libHwLooptoolsCFC_la_OBJECTS) $(libHwLooptoolsCFC_la_LIBADD) $(LIBS) libHwLooptoolsXFC.la: $(libHwLooptoolsXFC_la_OBJECTS) $(libHwLooptoolsXFC_la_DEPENDENCIES) $(EXTRA_libHwLooptoolsXFC_la_DEPENDENCIES) $(AM_V_F77LD)$(libHwLooptoolsXFC_la_LINK) $(libHwLooptoolsXFC_la_OBJECTS) $(libHwLooptoolsXFC_la_LIBADD) $(LIBS) tester$(EXEEXT): $(tester_OBJECTS) $(tester_DEPENDENCIES) $(EXTRA_tester_DEPENDENCIES) @rm -f tester$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(tester_OBJECTS) $(tester_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libHwLooptools_la-cache.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libHwLooptools_la-clooptools.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tester.Po@am__quote@ .F.o: $(AM_V_PPF77)$(PPF77COMPILE) -c -o $@ $< .F.obj: $(AM_V_PPF77)$(PPF77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .F.lo: $(AM_V_PPF77)$(LTPPF77COMPILE) -c -o $@ $< libHwLooptoolsCFC_la-A0.lo: A/A0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsCFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsCFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsCFC_la-A0.lo `test -f 'A/A0.F' || echo '$(srcdir)/'`A/A0.F libHwLooptoolsCFC_la-A00.lo: A/A00.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsCFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsCFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsCFC_la-A00.lo `test -f 'A/A00.F' || echo '$(srcdir)/'`A/A00.F libHwLooptoolsCFC_la-Bget.lo: B/Bget.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsCFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsCFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsCFC_la-Bget.lo `test -f 'B/Bget.F' || echo '$(srcdir)/'`B/Bget.F libHwLooptoolsCFC_la-Bcoeffa.lo: B/Bcoeffa.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsCFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsCFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsCFC_la-Bcoeffa.lo `test -f 'B/Bcoeffa.F' || echo '$(srcdir)/'`B/Bcoeffa.F libHwLooptoolsCFC_la-Cget.lo: C/Cget.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsCFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsCFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsCFC_la-Cget.lo `test -f 'C/Cget.F' || echo '$(srcdir)/'`C/Cget.F libHwLooptoolsCFC_la-Dget.lo: D/Dget.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsCFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsCFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsCFC_la-Dget.lo `test -f 'D/Dget.F' || echo '$(srcdir)/'`D/Dget.F libHwLooptoolsCFC_la-E0.lo: E/E0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsCFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsCFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsCFC_la-E0.lo `test -f 'E/E0.F' || echo '$(srcdir)/'`E/E0.F libHwLooptoolsCFC_la-Eget.lo: E/Eget.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsCFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsCFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsCFC_la-Eget.lo `test -f 'E/Eget.F' || echo '$(srcdir)/'`E/Eget.F libHwLooptoolsCFC_la-Ecoeffa.lo: E/Ecoeffa.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsCFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsCFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsCFC_la-Ecoeffa.lo `test -f 'E/Ecoeffa.F' || echo '$(srcdir)/'`E/Ecoeffa.F libHwLooptoolsCFC_la-Ecoeffb.lo: E/Ecoeffb.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsCFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsCFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsCFC_la-Ecoeffb.lo `test -f 'E/Ecoeffb.F' || echo '$(srcdir)/'`E/Ecoeffb.F libHwLooptoolsCFC_la-solve.lo: util/solve.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsCFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsCFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsCFC_la-solve.lo `test -f 'util/solve.F' || echo '$(srcdir)/'`util/solve.F libHwLooptoolsCFC_la-Dump.lo: util/Dump.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsCFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsCFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsCFC_la-Dump.lo `test -f 'util/Dump.F' || echo '$(srcdir)/'`util/Dump.F libHwLooptoolsCFC_la-Li2.lo: util/Li2.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsCFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsCFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsCFC_la-Li2.lo `test -f 'util/Li2.F' || echo '$(srcdir)/'`util/Li2.F libHwLooptoolsXFC_la-A0.lo: A/A0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-A0.lo `test -f 'A/A0.F' || echo '$(srcdir)/'`A/A0.F libHwLooptoolsXFC_la-A00.lo: A/A00.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-A00.lo `test -f 'A/A00.F' || echo '$(srcdir)/'`A/A00.F libHwLooptoolsXFC_la-ffxa0.lo: A/ffxa0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxa0.lo `test -f 'A/ffxa0.F' || echo '$(srcdir)/'`A/ffxa0.F libHwLooptoolsXFC_la-ffca0.lo: A/ffca0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffca0.lo `test -f 'A/ffca0.F' || echo '$(srcdir)/'`A/ffca0.F libHwLooptoolsXFC_la-Bget.lo: B/Bget.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-Bget.lo `test -f 'B/Bget.F' || echo '$(srcdir)/'`B/Bget.F libHwLooptoolsXFC_la-Bcoeff.lo: B/Bcoeff.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-Bcoeff.lo `test -f 'B/Bcoeff.F' || echo '$(srcdir)/'`B/Bcoeff.F libHwLooptoolsXFC_la-BcoeffC.lo: B/BcoeffC.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-BcoeffC.lo `test -f 'B/BcoeffC.F' || echo '$(srcdir)/'`B/BcoeffC.F libHwLooptoolsXFC_la-Bcoeffa.lo: B/Bcoeffa.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-Bcoeffa.lo `test -f 'B/Bcoeffa.F' || echo '$(srcdir)/'`B/Bcoeffa.F libHwLooptoolsXFC_la-Bcoeffb.lo: B/Bcoeffb.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-Bcoeffb.lo `test -f 'B/Bcoeffb.F' || echo '$(srcdir)/'`B/Bcoeffb.F libHwLooptoolsXFC_la-ffxb0.lo: B/ffxb0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxb0.lo `test -f 'B/ffxb0.F' || echo '$(srcdir)/'`B/ffxb0.F libHwLooptoolsXFC_la-ffcb0.lo: B/ffcb0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffcb0.lo `test -f 'B/ffcb0.F' || echo '$(srcdir)/'`B/ffcb0.F libHwLooptoolsXFC_la-ffxb1.lo: B/ffxb1.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxb1.lo `test -f 'B/ffxb1.F' || echo '$(srcdir)/'`B/ffxb1.F libHwLooptoolsXFC_la-ffcb1.lo: B/ffcb1.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffcb1.lo `test -f 'B/ffcb1.F' || echo '$(srcdir)/'`B/ffcb1.F libHwLooptoolsXFC_la-ffxb2p.lo: B/ffxb2p.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxb2p.lo `test -f 'B/ffxb2p.F' || echo '$(srcdir)/'`B/ffxb2p.F libHwLooptoolsXFC_la-ffcb2p.lo: B/ffcb2p.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffcb2p.lo `test -f 'B/ffcb2p.F' || echo '$(srcdir)/'`B/ffcb2p.F libHwLooptoolsXFC_la-ffxdb0.lo: B/ffxdb0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxdb0.lo `test -f 'B/ffxdb0.F' || echo '$(srcdir)/'`B/ffxdb0.F libHwLooptoolsXFC_la-ffcdb0.lo: B/ffcdb0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffcdb0.lo `test -f 'B/ffcdb0.F' || echo '$(srcdir)/'`B/ffcdb0.F libHwLooptoolsXFC_la-ffxdb1.lo: B/ffxdb1.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxdb1.lo `test -f 'B/ffxdb1.F' || echo '$(srcdir)/'`B/ffxdb1.F libHwLooptoolsXFC_la-ffdel2.lo: B/ffdel2.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffdel2.lo `test -f 'B/ffdel2.F' || echo '$(srcdir)/'`B/ffdel2.F libHwLooptoolsXFC_la-ffcel2.lo: B/ffcel2.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffcel2.lo `test -f 'B/ffcel2.F' || echo '$(srcdir)/'`B/ffcel2.F libHwLooptoolsXFC_la-C0.lo: C/C0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-C0.lo `test -f 'C/C0.F' || echo '$(srcdir)/'`C/C0.F libHwLooptoolsXFC_la-C0C.lo: C/C0C.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-C0C.lo `test -f 'C/C0C.F' || echo '$(srcdir)/'`C/C0C.F libHwLooptoolsXFC_la-Cget.lo: C/Cget.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-Cget.lo `test -f 'C/Cget.F' || echo '$(srcdir)/'`C/Cget.F libHwLooptoolsXFC_la-ffxc0.lo: C/ffxc0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxc0.lo `test -f 'C/ffxc0.F' || echo '$(srcdir)/'`C/ffxc0.F libHwLooptoolsXFC_la-ffcc0.lo: C/ffcc0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffcc0.lo `test -f 'C/ffcc0.F' || echo '$(srcdir)/'`C/ffcc0.F libHwLooptoolsXFC_la-ffxc0i.lo: C/ffxc0i.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxc0i.lo `test -f 'C/ffxc0i.F' || echo '$(srcdir)/'`C/ffxc0i.F libHwLooptoolsXFC_la-ffxc0p.lo: C/ffxc0p.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxc0p.lo `test -f 'C/ffxc0p.F' || echo '$(srcdir)/'`C/ffxc0p.F libHwLooptoolsXFC_la-ffxc0p0.lo: C/ffxc0p0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxc0p0.lo `test -f 'C/ffxc0p0.F' || echo '$(srcdir)/'`C/ffxc0p0.F libHwLooptoolsXFC_la-ffcc0p.lo: C/ffcc0p.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffcc0p.lo `test -f 'C/ffcc0p.F' || echo '$(srcdir)/'`C/ffcc0p.F libHwLooptoolsXFC_la-ffdxc0.lo: C/ffdxc0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffdxc0.lo `test -f 'C/ffdxc0.F' || echo '$(srcdir)/'`C/ffdxc0.F libHwLooptoolsXFC_la-ffdel3.lo: C/ffdel3.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffdel3.lo `test -f 'C/ffdel3.F' || echo '$(srcdir)/'`C/ffdel3.F libHwLooptoolsXFC_la-ffcel3.lo: C/ffcel3.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffcel3.lo `test -f 'C/ffcel3.F' || echo '$(srcdir)/'`C/ffcel3.F libHwLooptoolsXFC_la-D0.lo: D/D0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-D0.lo `test -f 'D/D0.F' || echo '$(srcdir)/'`D/D0.F libHwLooptoolsXFC_la-D0C.lo: D/D0C.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-D0C.lo `test -f 'D/D0C.F' || echo '$(srcdir)/'`D/D0C.F libHwLooptoolsXFC_la-Dget.lo: D/Dget.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-Dget.lo `test -f 'D/Dget.F' || echo '$(srcdir)/'`D/Dget.F libHwLooptoolsXFC_la-ffxd0.lo: D/ffxd0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxd0.lo `test -f 'D/ffxd0.F' || echo '$(srcdir)/'`D/ffxd0.F libHwLooptoolsXFC_la-ffxd0h.lo: D/ffxd0h.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxd0h.lo `test -f 'D/ffxd0h.F' || echo '$(srcdir)/'`D/ffxd0h.F libHwLooptoolsXFC_la-ffxd0i.lo: D/ffxd0i.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxd0i.lo `test -f 'D/ffxd0i.F' || echo '$(srcdir)/'`D/ffxd0i.F libHwLooptoolsXFC_la-ffxd0p.lo: D/ffxd0p.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxd0p.lo `test -f 'D/ffxd0p.F' || echo '$(srcdir)/'`D/ffxd0p.F libHwLooptoolsXFC_la-ffxd0m0.lo: D/ffxd0m0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxd0m0.lo `test -f 'D/ffxd0m0.F' || echo '$(srcdir)/'`D/ffxd0m0.F libHwLooptoolsXFC_la-ffxd0tra.lo: D/ffxd0tra.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxd0tra.lo `test -f 'D/ffxd0tra.F' || echo '$(srcdir)/'`D/ffxd0tra.F libHwLooptoolsXFC_la-ffxdbd.lo: D/ffxdbd.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxdbd.lo `test -f 'D/ffxdbd.F' || echo '$(srcdir)/'`D/ffxdbd.F libHwLooptoolsXFC_la-ffdcc0.lo: D/ffdcc0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffdcc0.lo `test -f 'D/ffdcc0.F' || echo '$(srcdir)/'`D/ffdcc0.F libHwLooptoolsXFC_la-ffdel4.lo: D/ffdel4.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffdel4.lo `test -f 'D/ffdel4.F' || echo '$(srcdir)/'`D/ffdel4.F libHwLooptoolsXFC_la-ffd0c.lo: D/ffd0c.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffd0c.lo `test -f 'D/ffd0c.F' || echo '$(srcdir)/'`D/ffd0c.F libHwLooptoolsXFC_la-ffTn.lo: D/ffTn.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffTn.lo `test -f 'D/ffTn.F' || echo '$(srcdir)/'`D/ffTn.F libHwLooptoolsXFC_la-ffT13.lo: D/ffT13.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffT13.lo `test -f 'D/ffT13.F' || echo '$(srcdir)/'`D/ffT13.F libHwLooptoolsXFC_la-ffS2.lo: D/ffS2.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffS2.lo `test -f 'D/ffS2.F' || echo '$(srcdir)/'`D/ffS2.F libHwLooptoolsXFC_la-ffS3n.lo: D/ffS3n.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffS3n.lo `test -f 'D/ffS3n.F' || echo '$(srcdir)/'`D/ffS3n.F libHwLooptoolsXFC_la-ffRn.lo: D/ffRn.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffRn.lo `test -f 'D/ffRn.F' || echo '$(srcdir)/'`D/ffRn.F libHwLooptoolsXFC_la-E0.lo: E/E0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-E0.lo `test -f 'E/E0.F' || echo '$(srcdir)/'`E/E0.F libHwLooptoolsXFC_la-Eget.lo: E/Eget.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-Eget.lo `test -f 'E/Eget.F' || echo '$(srcdir)/'`E/Eget.F libHwLooptoolsXFC_la-Ecoeffa.lo: E/Ecoeffa.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-Ecoeffa.lo `test -f 'E/Ecoeffa.F' || echo '$(srcdir)/'`E/Ecoeffa.F libHwLooptoolsXFC_la-Ecoeffb.lo: E/Ecoeffb.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-Ecoeffb.lo `test -f 'E/Ecoeffb.F' || echo '$(srcdir)/'`E/Ecoeffb.F libHwLooptoolsXFC_la-ffxe0.lo: E/ffxe0.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxe0.lo `test -f 'E/ffxe0.F' || echo '$(srcdir)/'`E/ffxe0.F libHwLooptoolsXFC_la-ffdel5.lo: E/ffdel5.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffdel5.lo `test -f 'E/ffdel5.F' || echo '$(srcdir)/'`E/ffdel5.F libHwLooptoolsXFC_la-ini.lo: util/ini.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ini.lo `test -f 'util/ini.F' || echo '$(srcdir)/'`util/ini.F libHwLooptoolsXFC_la-auxCD.lo: util/auxCD.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-auxCD.lo `test -f 'util/auxCD.F' || echo '$(srcdir)/'`util/auxCD.F libHwLooptoolsXFC_la-solve.lo: util/solve.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-solve.lo `test -f 'util/solve.F' || echo '$(srcdir)/'`util/solve.F libHwLooptoolsXFC_la-Dump.lo: util/Dump.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-Dump.lo `test -f 'util/Dump.F' || echo '$(srcdir)/'`util/Dump.F libHwLooptoolsXFC_la-Li2.lo: util/Li2.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-Li2.lo `test -f 'util/Li2.F' || echo '$(srcdir)/'`util/Li2.F libHwLooptoolsXFC_la-ffinit.lo: util/ffinit.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffinit.lo `test -f 'util/ffinit.F' || echo '$(srcdir)/'`util/ffinit.F libHwLooptoolsXFC_la-ffxli2.lo: util/ffxli2.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxli2.lo `test -f 'util/ffxli2.F' || echo '$(srcdir)/'`util/ffxli2.F libHwLooptoolsXFC_la-ffcli2.lo: util/ffcli2.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffcli2.lo `test -f 'util/ffcli2.F' || echo '$(srcdir)/'`util/ffcli2.F libHwLooptoolsXFC_la-ffxxyz.lo: util/ffxxyz.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffxxyz.lo `test -f 'util/ffxxyz.F' || echo '$(srcdir)/'`util/ffxxyz.F libHwLooptoolsXFC_la-ffcxyz.lo: util/ffcxyz.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffcxyz.lo `test -f 'util/ffcxyz.F' || echo '$(srcdir)/'`util/ffcxyz.F libHwLooptoolsXFC_la-ffcrr.lo: util/ffcrr.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffcrr.lo `test -f 'util/ffcrr.F' || echo '$(srcdir)/'`util/ffcrr.F libHwLooptoolsXFC_la-ffcxr.lo: util/ffcxr.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffcxr.lo `test -f 'util/ffcxr.F' || echo '$(srcdir)/'`util/ffcxr.F libHwLooptoolsXFC_la-fftran.lo: util/fftran.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-fftran.lo `test -f 'util/fftran.F' || echo '$(srcdir)/'`util/fftran.F libHwLooptoolsXFC_la-ffabcd.lo: util/ffabcd.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffabcd.lo `test -f 'util/ffabcd.F' || echo '$(srcdir)/'`util/ffabcd.F libHwLooptoolsXFC_la-ff2dl2.lo: util/ff2dl2.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ff2dl2.lo `test -f 'util/ff2dl2.F' || echo '$(srcdir)/'`util/ff2dl2.F libHwLooptoolsXFC_la-ffcxs3.lo: util/ffcxs3.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffcxs3.lo `test -f 'util/ffcxs3.F' || echo '$(srcdir)/'`util/ffcxs3.F libHwLooptoolsXFC_la-ffcxs4.lo: util/ffcxs4.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffcxs4.lo `test -f 'util/ffcxs4.F' || echo '$(srcdir)/'`util/ffcxs4.F libHwLooptoolsXFC_la-ffdcxs.lo: util/ffdcxs.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffdcxs.lo `test -f 'util/ffdcxs.F' || echo '$(srcdir)/'`util/ffdcxs.F libHwLooptoolsXFC_la-ffbndc.lo: util/ffbndc.F $(AM_V_PPF77)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(F77) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptoolsXFC_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptoolsXFC_la_FFLAGS) $(FFLAGS) -c -o libHwLooptoolsXFC_la-ffbndc.lo `test -f 'util/ffbndc.F' || echo '$(srcdir)/'`util/ffbndc.F .F.f: $(F77COMPILE) -F $< .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libHwLooptools_la-cache.lo: util/cache.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptools_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptools_la_CFLAGS) $(CFLAGS) -MT libHwLooptools_la-cache.lo -MD -MP -MF $(DEPDIR)/libHwLooptools_la-cache.Tpo -c -o libHwLooptools_la-cache.lo `test -f 'util/cache.c' || echo '$(srcdir)/'`util/cache.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libHwLooptools_la-cache.Tpo $(DEPDIR)/libHwLooptools_la-cache.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='util/cache.c' object='libHwLooptools_la-cache.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptools_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptools_la_CFLAGS) $(CFLAGS) -c -o libHwLooptools_la-cache.lo `test -f 'util/cache.c' || echo '$(srcdir)/'`util/cache.c .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< libHwLooptools_la-clooptools.lo: clooptools.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptools_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptools_la_CXXFLAGS) $(CXXFLAGS) -MT libHwLooptools_la-clooptools.lo -MD -MP -MF $(DEPDIR)/libHwLooptools_la-clooptools.Tpo -c -o libHwLooptools_la-clooptools.lo `test -f 'clooptools.cc' || echo '$(srcdir)/'`clooptools.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libHwLooptools_la-clooptools.Tpo $(DEPDIR)/libHwLooptools_la-clooptools.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='clooptools.cc' object='libHwLooptools_la-clooptools.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libHwLooptools_la_CPPFLAGS) $(CPPFLAGS) $(libHwLooptools_la_CXXFLAGS) $(CXXFLAGS) -c -o libHwLooptools_la-clooptools.lo `test -f 'clooptools.cc' || echo '$(srcdir)/'`clooptools.cc mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Looptools/D/0000755000175000017500000000000011756464211017137 5ustar sylvestresylvestreherwig++-2.6.0.orig/Looptools/D/ffdcc0.F0000644000175000017500000002116111754474774020411 0ustar sylvestresylvestre#include "externals.h" *###[ ffdcc0: subroutine ffdcc0(cs3,ipi12,isoort,clogi,ilogi,xpi,piDpj, + xqi,qiDqj,sdel2,del2s,etalam,etami,delpsi,alph, + ddel2s,ldel2s,npoin,ier) ***#[*comment:*********************************************************** * * * Calculates the difference of two threepoint functions * * C(3,...a) - C(4,...b) * * * * Input: xpi(6,3:4) (complex) transformed mi,pi squared in Ci * * piDpj(6,6,3:4)(complex) pi(i).pi(j) * * xqi(10,10) (complex) transformed mi,pi squared in D * * qiDqj(10,10) (complex) qi(i).qi(j) * * sdel2 (complex) sqrt(delta_{p_1 p_2}^{p_1 p_2}) * * del2s(3,3:4) (complex) delta_{p_i s_i}^{p_i s_i} * * etalam(3:4) (complex) delta_{s_1 s_2 s_3}^{s_1 s_2 s_3} * /delta_{p_1 p_2}^{p_1 p_2} * * etami(6,3:4) (complex) m_i^2 - etalam * * ddel2s(2:3) (complex) del2s(i,3) - del2s(i,4) * * alph(3) (complex) alph(1)=alpha, alph(3)=1-alpha * * * * Output: cs3 (complex)(160) C0(3)-C0(4), not yet summed. * * ipi12 (integer)(6) factors pi^2/12, not yet summed * * slam (complex) lambda(p1,p2,p3). * * isoort (integer)(16) indication of he method used * * clogi (complex)(6) log(-dyz(2,1,i)/dyz(2,2,i)) * * ilogi (integer)(6) factors i*pi in this * * ier (integer) 0=ok, 1=inaccurate, 2=error * * * * Calls: ... * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ipi12(16),isoort(16),ilogi(6),npoin,ier logical ldel2s DOUBLE COMPLEX cs3(160),clogi(6) DOUBLE COMPLEX xqi(10),qiDqj(10,10), + xpi(6,3:4),piDpj(6,6,3:4), + sdel2,del2s(3,3:4),etalam(3:4),etami(6,3:4),alph(3), + ddel2s(2:3),delpsi(3,3:4) * * local variables: * integer i,j,k,ip,ii,ifirst,ieri(8) DOUBLE COMPLEX c,cc DOUBLE COMPLEX sdel2i(3,3:4),s(5),som,zfflo1, + y(4,3:4,3),z(4,3:4,3),dyz(2,2,3:4,3),d2yzz(3:4,3), + dyzzy(4,3),dsdel2,dyyzz(2,3) DOUBLE PRECISION smax,absc,xmax DOUBLE COMPLEX zfflog external zfflo1,zfflog * * common blocks: * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ get y,z-roots: do 20 k=3,4 do 10 i=1,3 * * get roots (y,z) * ip = i+3 sdel2i(i,k) = sqrt(-del2s(i,k)) * then handle the special case Si = 0 if ( xpi(ip,k) .eq. 0 ) then if ( i .eq. 1 .and. alph(3) .eq. 0 .or. + i .eq. 3 .and. alph(1) .eq. 0 ) then isoort(2*i-1+8*(k-3)) = 0 isoort(2*i+8*(k-3)) = 0 goto 10 endif endif call ffccyz(y(1,k,i),z(1,k,i),dyz(1,1,k,i),d2yzz(k,i),i, + sdel2,sdel2i(i,k),etalam(k),etami(1,k),delpsi(i,k), + xpi(1,k),piDpj(1,1,k),isoort(2*i-1+8*(k-3)),ier) 10 continue 20 continue * #] get y,z-roots: * #[ get differences: * * the only important differences are y4z3-z3y4 and (1-y4)(1-z3)- * (1-y3)(1-z4). Note that the errors work in parallel. * do 199 i=1,8 ieri(i) = 0 199 continue if ( isoort(1) .eq. isoort(9) ) then * #[ vertices (1): som = qiDqj(7,2)/sdel2 * * flag if we have a cancellation * if ( absc(som) .lt. xloss ) then isoort(1) = isoort(1) - 10 isoort(9) = isoort(9) - 10 endif do 201 k=1,4 dyzzy(k,1) = som*z(k,3,1) if ( k .gt. 2 ) dyzzy(k,1) = -dyzzy(k,1) 201 continue dyyzz(1,1) = som dyyzz(2,1) = som * #] vertices (1): endif if ( isoort(3) .eq. isoort(11) ) then * #[ vertices (2): ifirst = 0 do 22 j=1,2 do 21 k=1,2 ii = 2*(j-1) + k dyzzy(ii,2) = y(2*j,4,2)*z(ii,3,2)-y(2*j,3,2)*z(ii,4,2) xmax = absc(y(2*j,4,2)*z(ii,3,2)) if ( absc(dyzzy(ii,2)) .ge. xmax ) goto 21 isoort(3) = isoort(3) - 10 isoort(11) = isoort(11) - 10 if ( ifirst .eq. 0 ) then if ( ddel2s(2) .eq. 0 ) then dsdel2 = 0 else dsdel2 = ddel2s(2)/(sdel2i(2,3)+sdel2i(2,4)) endif endif if ( ifirst .le. 1 ) then if ( j .eq. 1 ) then s(1) = xqi(6)*qiDqj(7,4)*qiDqj(5,4)/sdel2 s(2) = -qiDqj(7,4)*sdel2i(2,3) s(3) = +qiDqj(6,4)*dsdel2 else s(1) = xqi(6)*qiDqj(7,2)*qiDqj(5,2)/sdel2 s(2) = -qiDqj(7,2)*sdel2i(2,3) s(3) = +qiDqj(6,2)*dsdel2 endif endif if ( ifirst .le. 0 ) then ifirst = 2 s(4) = -qiDqj(5,10)*qiDqj(7,4)*sdel2i(2,3)/sdel2 s(5) = delpsi(2,3)*dsdel2/sdel2 endif if ( k .eq. 1 ) then som = s(1) + s(2) + s(3) + s(4) + s(5) else som = s(1) - s(2) - s(3) - s(4) - s(5) endif smax = max(absc(s(1)),absc(s(2)),absc(s(3)),absc(s(4)), + absc(s(5)))/DBLE(xqi(6))**2 if ( smax .lt. xmax ) then dyzzy(ii,2) = som*(1/DBLE(xqi(6))**2) xmax = smax endif 21 continue * * get dyyzz * if ( ldel2s ) then dyyzz(j,2) = dyz(2,j,4,2) - dyz(2,j,3,2) xmax = absc(dyz(2,j,4,2)) if ( absc(dyyzz(j,2)) .ge. xloss*xmax ) goto 22 print *,'ffdcc0: under construction!' * * (could be copied from real case) * endif * * bookkeeping * ifirst = ifirst - 1 22 continue * #] vertices (2): endif if ( isoort(5) .eq. isoort(13) ) then * #[ vertices (3): ifirst = 0 do 26 j=1,2 do 25 k=1,2 ii = 2*(j-1) + k dyzzy(ii,3) = y(2*j,4,3)*z(ii,3,3)-y(2*j,3,3)*z(ii,4,3) xmax = absc(y(2*j,4,3)*z(ii,3,3)) if ( absc(dyzzy(ii,3)) .ge. xmax ) goto 25 isoort(5) = isoort(5) - 10 isoort(13) = isoort(13) - 10 if ( ifirst .eq. 0 ) then if ( ddel2s(2) .eq. 0 ) then dsdel2 = 0 else dsdel2 = ddel2s(3)/(sdel2i(3,3)+sdel2i(3,4)) endif endif if ( ifirst .le. 1 ) then if ( j .eq. 1 ) then s(1) = xqi(8)*qiDqj(7,1)*qiDqj(5,1)/sdel2 s(2) = +qiDqj(7,1)*sdel2i(3,3) s(3) = +qiDqj(9,1)*dsdel2 else s(1) = xqi(8)*qiDqj(7,4)*qiDqj(5,4)/sdel2 s(2) = +qiDqj(7,4)*sdel2i(3,3) s(3) = +qiDqj(9,4)*dsdel2 endif endif if ( ifirst .le. 0 ) then ifirst = 2 s(4) = -qiDqj(5,9)*qiDqj(7,1)*sdel2i(3,3)/sdel2 s(5) = delpsi(3,3)*dsdel2/sdel2 endif if ( k .eq. 1 ) then som = s(1) + s(2) + s(3) + s(4) + s(5) else som = s(1) - s(2) - s(3) - s(4) - s(5) endif smax = max(absc(s(1)),absc(s(2)),absc(s(3)),absc(s(4)), + absc(s(5)))/DBLE(xqi(8))**2 if ( smax .lt. xmax ) then dyzzy(ii,3) = som*(1/DBLE(xqi(8))**2) xmax = smax endif 25 continue * * get dyyzz * if ( ldel2s ) then dyyzz(j,3) = dyz(2,j,4,3) - dyz(2,j,3,3) xmax = absc(dyz(2,j,4,3)) if ( absc(dyyzz(j,3)) .ge. xloss*xmax ) goto 24 print *,'ffdcc0: under construction!' * * (could be copied from real case) * endif * * bookkeeping * 24 continue ifirst = ifirst - 1 26 continue * #] vertices (3): endif ier = ier + max(ieri(1),ieri(2),ieri(3),ieri(4),ieri(5),ieri(6), + ieri(7),ieri(8)) * #] get differences: * #[ logarithms for 4point function: if ( npoin .eq. 4 ) then do 96 k = 3,4 do 95 i = 1,3 ii = i+3*(k-3) if ( ilogi(ii) .ne. -999 ) goto 95 if ( isoort(2*i+8*(k-3)) .ne. 0 ) then * maybe add sophisticated factors i*pi later c = -dyz(2,1,i,k)/dyz(2,2,i,k) cc = c-1 if ( absc(cc) .lt. xloss ) then s(1) = d2yzz(i,k)/dyz(2,2,i,k) clogi(ii) = zfflo1(s(1),ier) ilogi(ii) = 0 elseif ( DBLE(c) .gt. 0 ) then clogi(ii) = zfflog(c,0,czero,ier) ilogi(ii) = 0 else cc = c+1 if ( absc(cc) .lt. xloss ) then s(1) = -2*sdel2i(i,k)/dyz(2,2,i,k)/ + DBLE(xpi(i+3,k)) clogi(ii) = zfflo1(s(1),ier) else s(1) = 0 clogi(ii) = zfflog(-c,0,czero,ier) endif if ( DIMAG(c) .lt. -precc*absc(c) .or. DIMAG(s(1)) + .lt. -precc*absc(s(1)) ) then ilogi(ii) = -1 elseif ( DIMAG(c) .gt. precc*absc(c) .or. + DIMAG(s(1)) .gt. precc*absc(s(1)) ) then ilogi(ii) = +1 elseif ( DBLE(dyz(2,2,i,k)) .eq. 0 ) then ilogi(ii) = -nint(sign(1D0,DBLE(xpi(i+3,k)))) ier = ier + 50 print *,'doubtful imaginary part ',ilogi(ii) else call fferr(78,ier) print *,'c = ',c endif endif endif 95 continue 96 continue endif * #] logarithms for 4point function: * #[ integrals: do 100 i=1,3 j = 2*i-1 if ( isoort(j) .eq. 0 ) then if ( isoort(j+8) .ne. 0 ) then call ffcs3(cs3(20*i+61),ipi12(j+8),y(1,4,i), + z(1,4,i),dyz(1,1,4,i),d2yzz(4,i), + xpi(1,4),piDpj(1,1,4),i,6,isoort(j+8),ier) endif elseif ( isoort(j+8) .eq. 0 ) then call ffcs3(cs3(20*i-19),ipi12(j),y(1,3,i), + z(1,3,i),dyz(1,1,3,i),d2yzz(3,i), + xpi(1,3),piDpj(1,1,3),i,6,isoort(j),ier) else call ffdcs(cs3(20*i-19),ipi12(j),y(1,3,i),z(1,3,i), + dyz(1,1,3,i),d2yzz(3,i),dyzzy(1,i),dyyzz(1,i), + xpi,piDpj,i,6,isoort(j),ier) endif 100 continue * #] integrals: *###] ffdcc0: end herwig++-2.6.0.orig/Looptools/D/ffxd0.F0000644000175000017500000004457111754474774020305 0ustar sylvestresylvestre#include "externals.h" *--#[ log: * $Id: ffxd0.f,v 1.4 1996/01/22 13:32:52 gj Exp $ * $Log: ffxd0.f,v $ c Revision 1.4 1996/01/22 13:32:52 gj c Added sanity check on ier; if it is larger than 16 some routines will not c compute anything. c c Revision 1.3 1995/11/28 13:37:47 gj c Found wrong sign in ffcdna, fixed typo in ffcrp. c Killed first cancellation in ffcdna - more to follow c Added warnings to ffwarn.dat; slightly changed debug output in ffxd0.f c c Revision 1.2 1995/10/17 06:55:12 gj c Fixed ieps error in ffdcrr (ffcxs4.f), added real case in ffcrr, debugging c info in ffxd0, and warned against remaining errors for del2=0 in ffrot4 c (ffxd0h.f) c *--#] log: *###[ ffxd0: subroutine ffxd0(cd0,xpi,ier) ***#[*comment:*********************************************************** * * * 1 / * * calculate cd0 = ----- \dq [(q^2 + 2*s_1.q)*(q^2 + 2*s2.q) * * ipi^2 / *(q^2 + 2*s3.q)*(q^2 + 2*s4.q)]^-1 * * * * |p9 * * \p8 V p7/ * * \ / * * \________/ * * | m4 | * * = | | /____ * * m1| |m3 \ p10 * * | | all momenta are incoming * * |________| * * / m2 \ * * / \ * * /p5 p6\ * * * * * * following the two-three-point-function method in 't hooft & * * veltman. this is only valid if there is a lambda(pij,mi,mj)>0 * * * * Input: xpi = mi^2 (real) i=1,4 * * xpi = pi.pi (real) i=5,8 (note: B&D metric) * * xpi(9)=s (real) (=p13) * * xpi(10)=t (real) (=p24) * * xpi(11)=u (real) u=p5.p5+..-p9.p9-p10.10 or 0 * * xpi(12)=v (real) v=-p5.p5+p6.p6-p7.p7+.. or 0 * * xpi(13)=w (real) w=p5.p5-p6.p6+p7.p7-p8.p8+.. * * output: cd0 (complex) * * ier (integer) <50:lost # digits 100=error * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE PRECISION xpi(13) DOUBLE COMPLEX cd0 integer ier * * local variables * logical luvw(3) DOUBLE PRECISION dpipj(10,13) * * common blocks: * #include "ff.h" * #] declarations: * #[ catch totally massless case: * if (abs(xpi(1) + xpi(2) + xpi(3) + xpi(4)) .lt. 1D-10) then call ffxd0m0(cd0,xpi,ier) return endif * * #] catch totally massless case: * #[ call ffdif4, ffxd0a: * call ffdif4(dpipj,luvw,xpi) call ffxd0a(cd0,xpi,dpipj,ier) * * restore the zeros for u,v,w as we have calculated them * ourselves and the user is unlikely to do this... * if ( luvw(1) ) xpi(11) = 0 if ( luvw(2) ) xpi(12) = 0 if ( luvw(3) ) xpi(13) = 0 * * #] call ffdif4, ffxd0a: *###] ffxd0: end *###[ ffxd0a: subroutine ffxd0a(cd0,xpi,dpipj,ier) * * glue routine which calls ffxd0b with ndiv=0 * implicit none * * arguments * integer ier DOUBLE PRECISION xpi(13),dpipj(10,13) DOUBLE COMPLEX cd0 * * locals * DOUBLE COMPLEX cs,cfac * * and go! * call ffxd0b(cs,cfac,xpi,dpipj,0,ier) cd0 = cs*cfac * *###] ffxd0a: end *###[ ffxd0b: subroutine ffxd0b(cs,cfac,xpi,dpipj,ndiv,ier) ***#[*comment:*********************************************************** * * * 1 / * * calculate cd0 = ----- \dq [(q^2 + 2*s_1.q)*(q^2 + 2*s2.q) * * ipi^2 / *(q^2 + 2*s3.q)*(q^2 + 2*s4.q)]^-1 * * * * |p9 * * \p8 V p7/ * * \ / * * \________/ * * | m4 | * * = | | /____ * * m1| |m3 \ p10 * * | | all momenta are incoming * * |________| * * / m2 \ * * / \ * * /p5 p6\ * * * * * * following the two-three-point-function method in 't hooft & * * veltman. this is only valid if there is a lambda(pij,mi,mj)>0 * * * * Input: xpi = mi^2 (real) i=1,4 * * xpi = pi.pi (real) i=5,8 (note: B&D metric) * * xpi(9)=s (real) (=p13) * * xpi(10)=t (real) (=p24) * * xpi(11)=u (real) u=p5.p5+..-p9.p9-p10.10 * * xpi(12)=v (real) v=-p5.p5+p6.p6-p7.p7+.. * * xpi(13)=w (real) w=p5.p5-p6.p6+p7.p7-p8.p8+.. * * dpipj(10,13) (real) = pi(i) - pi(j) * * output: cs,cfac (complex) cd0 = cs*cfac * * ier (integr) 0=ok 1=inaccurate 2=error * * calls: ffcxs3,ffcxr,ffcrr,... * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ndiv,ier DOUBLE PRECISION xpi(13),dpipj(10,13) DOUBLE COMPLEX cs,cfac * * local variables * integer i,j,itype,ini2ir,ier2,idone,ier0 logical ldel2s DOUBLE COMPLEX c,cs1,cs2 DOUBLE PRECISION absc,xmax,xpip(13),dpipjp(10,13),piDpjp(10,10), + qiDqj(10,10),del2s,lambda0 save ini2ir,lambda0 * * common blocks: * #include "ff.h" * * memory * integer iermem(memory),ialmem(memory),memind,ierini,nscsav, + isgnsa logical onssav DOUBLE PRECISION xpimem(10,memory),dl4mem(memory) DOUBLE COMPLEX csmem(memory),cfcmem(memory) save memind,iermem,ialmem,xpimem,dl4mem,nscsav,onssav,csmem, + cfcmem * * statement function: * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * data * data memind /0/ data ini2ir /0/ data lambda0 /1D0/ * * #] declarations: * #[ initialisations: cs = 0 cfac = 1 idsub = 0 idone = 0 * #] initialisations: * #[ check for IR 4point function: * call ffxdir(cs,cfac,idone,xpi,dpipj,4,ndiv,ier) if ( idone .le. 0 .and. ndiv .gt. 0 ) then cs = 0 cfac = 1 ier = 0 return endif if ( idone .gt. 0 ) then return endif * * #] check for IR 4point function: * #[ rotate to calculable position: call ffrot4(irota4,del2s,xpip,dpipjp,piDpjp,xpi,dpipj,qiDqj,4, + itype,ier) if ( itype .lt. 0 ) then print *,'ffxd0b: error: Cannot handle this ', + ' masscombination yet:' print *,(xpi(i),i=1,13) return endif if ( itype .eq. 1 ) then ldel2s = .TRUE. isgnal = +1 else ldel2s = .FALSE. endif * #] rotate to calculable position: * #[ treat doubly IR divergent case: if ( itype .eq. 2 ) then * * double IR divergent diagram, i.e. xpi(3)=xpi(4)=xpi(7)=0 * if ( ini2ir .eq. 0 ) then ini2ir = 1 print *,'ffxd0b: using the log(lam) prescription to' print *,' regulate the 2 infrared poles to match' print *,' with soft gluon massive, lam^2 =',lambda endif ier2 = 0 call ffx2ir(cs1,cs2,xpip,dpipjp,ier2) del2s = -lambda**2/4 * * correct for the wrongly treated IR pole * cs = cs + (cs1 + cs2)/cfac ier = max(ier,ier2) xmax = max(absc(cs1),absc(cs2))/absc(cfac) if ( absc(cs) .lt. xloss*xmax ) + call ffwarn(172,ier,absc(cs),xmax) if ( .not.ldot ) return endif if( itype .eq. 3 ) then call ffd0tra(cs, & xpi(iold(9,irota4)), xpi(iold(10,irota4)), & xpi(iold(1,irota4)), xpi(iold(8,irota4)), ier) return endif * * #] treat doubly IR divergent case: * #[ look in memory: ierini = ier isgnsa = isgnal * * initialise memory * if ( lmem .and. idone .eq. 0 .and. (memind .eq. 0 .or. nschem + .ne. nscsav .or. (onshel .neqv. onssav) ) ) then memind = 0 nscsav = nschem onssav = onshel do 2 i=1,memory do 1 j=1,10 xpimem(j,i) = 0 1 continue ialmem(i) = 0 2 continue endif * if ( lmem .and. idone .eq. 0 .and. lambda .eq. lambda0 ) then do 150 i=1,memory do 130 j=1,10 if ( xpip(j) .ne. xpimem(j,i) ) goto 150 130 continue * we use ialmem(i)==0 to signal that both are covered as * the sign was flipped during the computation if ( ialmem(i).ne.isgnal .and. ialmem(i).ne.0 ) goto 150 * we found an already calculated masscombination .. * (maybe check differences as well) cs = csmem(i) cfac = cfcmem(i) ier = ier+iermem(i) if ( ldot ) then fdel4s = dl4mem(i) * we forgot to calculate the dotproducts idone = 1 goto 51 endif return 150 continue elseif ( lmem ) then lambda0 = lambda endif 51 continue * #] look in memory: * #[ get dotproducts: * * Calculate the dotproducts (in case it comes out of memory the * error is already included in ier) * ier0 = ier call ffgdt4(piDpjp,xpip,dpipjp,xpi,ier0) if ( idone .gt. 0 ) return ier = ier0 if ( ier.ge.100 ) then cs = 0 cfac = 1 return endif * * #] get dotproducts: * #[ calculations: * call ffxd0e(cs,cfac,xmax, .FALSE.,ndiv,xpip,dpipjp,piDpjp,del2s, + ldel2s,ier) * * #] calculations: * #[ add to memory: * * memory management :-) * if ( lmem ) then memind = memind + 1 if ( memind .gt. memory ) memind = 1 do 200 j=1,10 xpimem(j,memind) = xpip(j) 200 continue csmem(memind) = cs cfcmem(memind) = cfac iermem(memind) = ier-ierini ialmem(memind) = isgnal dl4mem(memind) = fdel4s if ( isgnal.ne.isgnsa ) then ialmem(memind) = 0 endif endif * #] add to memory: *###] ffxd0b: end *###[ ffxd0e: subroutine ffxd0e(cs,cfac,xmax,lir,ndiv,xpip,dpipjp,piDpjp, + del2s,ldel2s,ier) ***#[*comment:*********************************************************** * * * Break in the calculation of D0 to allow the E0 to tie in in a * * logical position. This part gets untransformed momenta but * * rotated momenta in and gives the D0 (in two pieces) and the * * maximum term back. * * * * Input xpip real(13) * * dpipjp real(10,13) * * piDpjp real(10,10) * * del2s real * * ldel2s logical * * lir logical if TRUE it can still be IR-div * * ndiv integer number of required divergences * * * * Output: cs complex the fourpoint function without * * overall factor (sum of dilogs) * * cfac complex this overall factor * * xmax real largest term in summation * * ier integer usual error flag * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ndiv,ier logical lir,ldel2s DOUBLE PRECISION xpip(13),dpipjp(10,13),piDpjp(10,10),xmax,del2s DOUBLE COMPLEX cs,cfac * * local variables * DOUBLE COMPLEX c,cs4(175),cs3(2) logical laai integer i,ier0,itime,maxlos,init,isoort(16),ipi12(28), + ipi123(2),ipi12t,idone DOUBLE PRECISION absc,sdel2s,ai(4),daiaj(4,4),aai(4), + dt3t4,xqi(10),dqiqj(10,10),qiDqj(10,10),xfac save maxlos * * common blocks: * #include "ff.h" * * statement function: * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * data * data init /0/ * #] declarations: * #[ check for IR 4point function: if ( lir ) then * ier0 = ier call ffxdir(cs,cfac,idone,xpip,dpipjp,4,0,ier) if ( idone .le. 0 .and. ndiv .gt. 0 ) then cs = 0 cfac = 1 xmax = 0 ier = 0 return endif if ( idone .gt. 0 ) then xmax = abs(cs)*10d0**(-mod((ier0-ier),50)) return endif endif * * #] check for IR 4point function: * #[ init: * * initialize cs4: * do 80 i=1,175 cs4(i) = 0 80 continue do 90 i=1,28 ipi12(i) = 0 90 continue cs = 0 * * #] init: * #[ transform the masses and momenta: itime = 1 25 continue * * Transform with the A's of gerard 't hooft's transformation: * * NOTE: for some odd reason I cannot vary isgnal,isgn34 * independently! * isgn34 = isgnal sdel2s = isgn34*sqrt(-del2s) ier0 = ier call ffai(ai,daiaj,aai,laai,del2s,sdel2s,xpip,dpipjp,piDpjp, + ier0) if ( ier0 .ge. 100 ) goto 70 call fftran(ai,daiaj,aai,laai,xqi,dqiqj,qiDqj,del2s,sdel2s, + xpip,dpipjp,piDpjp,ier0) if ( ier0 .ge. 100 ) goto 70 if ( .not.ldel2s ) then dt3t4 = -2*ai(3)*ai(4)*sdel2s if ( dt3t4 .eq. 0 ) then * don't know what to do... call fferr(85,ier) return endif else * this value is modulo the delta of xpip(4)=xpip(3)(1+2delta) dt3t4 = -2*ai(4)**2*xpip(3) endif 70 continue * * If we lost too much accuracy try the other root... * (to do: build in a mechanism for remembering this later) * if ( init .eq. 0 ) then init = 1 * go ahead if we have half the digits left maxlos = -int(log10(precx))/2 endif if ( ier0-ier .gt. maxlos ) then if ( itime .eq. 1 ) then itime = 2 if ( ier0-ier .ge. 100 ) itime = 100 isgnal = -isgnal goto 25 else if ( ier0-ier .lt. 100 ) then * it does not make any sense to go on, but do it anyway elseif ( itime.eq.100 ) then call fferr(72,ier) cfac = 1 return elseif ( itime.le.2 ) then * the first try was better isgnal = -isgnal itime = 3 goto 25 endif endif endif ier = ier0 * #] transform the masses and momenta: * #[ calculations: call ffxd0p(cs4,ipi12,isoort,cfac,xpip,dpipjp,piDpjp, + xqi,dqiqj,qiDqj,ai,daiaj,ldel2s,ier) xfac = -ai(1)*ai(2)*ai(3)*ai(4)/dt3t4 * * see the note at the end of this section about the sign * if ( DIMAG(cfac) .eq. 0 ) then cfac = xfac/DBLE(cfac) else cfac = DBLE(xfac)/cfac endif * * sum'em up: * cs3(1) = 0 cs3(2) = 0 xmax = 0 do 110 i=1,80 cs3(1) = cs3(1) + cs4(i) xmax = max(xmax,absc(cs3(1))) 110 continue do 111 i=81,160 cs3(2) = cs3(2) + cs4(i) xmax = max(xmax,absc(cs3(2))) 111 continue cs = cs3(1) - cs3(2) do 112 i=161,175 cs = cs + cs4(i) xmax = max(xmax,absc(cs)) 112 continue ipi123(1) = 0 ipi123(2) = 0 do 113 i=1,8 ipi123(1) = ipi123(1) + ipi12(i) 113 continue do 114 i=9,16 ipi123(2) = ipi123(2) + ipi12(i) 114 continue ipi12t = ipi123(1) - ipi123(2) do 120 i=17,28 ipi12t = ipi12t + ipi12(i) 120 continue cs = cs + ipi12t*DBLE(pi12) * * If the imaginary part is very small it most likely is zero * (can be removed, just esthetically more pleasing) * if ( abs(DIMAG(cs)) .lt. precc*abs(DBLE(cs)) ) + cs = DCMPLX(DBLE(cs)) * * it is much nicer to have the sign of cfac fixed, say positive * if ( DBLE(cfac) .lt. 0 .or. (DBLE(cfac) .eq. 0 .and. DIMAG(cfac) + .lt. 0 ) ) then cfac = -cfac cs = -cs endif * #] calculations: *###] ffxd0e: end *###[ ffxd0r: subroutine ffxd0r(cd0,xpi,ier) ***#[*comment:*********************************************************** * * * Tries all 12 permutations of the 4pointfunction * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none integer ier DOUBLE PRECISION xpi(13),xqi(13) DOUBLE COMPLEX cd0,cd0p integer inew(13,6),irota,ier0,ier1,i,j,ialsav save inew #include "ff.h" data inew /1,2,3,4,5,6,7,8,9,10,11,12,13, + 4,1,2,3,8,5,6,7,10,9,11,13,12, + 3,4,1,2,7,8,5,6,9,10,11,12,13, + 2,3,4,1,6,7,8,5,10,9,11,13,12, + 4,2,3,1,10,6,9,8,7,5,12,11,13, + 1,3,2,4,9,6,10,8,5,7,12,11,13/ * #] declarations: * #[ calculations: cd0 = 0 ier0 = ier ier = 999 ialsav = isgnal do 30 j = -1,1,2 do 20 irota=1,6 do 10 i=1,13 xqi(inew(i,irota)) = xpi(i) 10 continue ier1 = ier0 ner = 0 id = id + 1 isgnal = ialsav print '(a,i1,a,i2)','---#[ rotation ',irota,': isgnal ', + isgnal call ffxd0(cd0p,xqi,ier1) ier1 = ier1 + ner print '(a,i1,a,i2,a)','---#] rotation ',irota, + ': isgnal ',isgnal,' ' print '(a,2g28.16,i3)','d0 = ',cd0p,ier1 if ( ier1 .lt. ier ) then cd0 = cd0p ier = ier1 endif 20 continue ialsav = -ialsav 30 continue * #] calculations: *###] ffxd0r: end *###[ ffxd0d: subroutine ffxd0d(cd0,xpi,piDpj,del3p,del4s,info,ier) ***#[*comment:*********************************************************** * * * Entry point to the four point function with dotproducts given. * * Necessary to avoid cancellations near the borders of phase * * space. * * * * Input: xpi(13) real 1-4: mi^2, 5-10: pi^2,s,t * * optional: 11:u, 12:v, 13:w * * info integer 0: no extra info * * 1: piDpj(i,j), i,j>4 is defined * * 2: del3p is also defined * * 3: all piDpj are given * * 4: del4s is also given * * piDpj(10,10) real pi.pj in B&D metric; * * 1-4:si.sj=(m_i^2+m_j^2-p_ij^2)/2* * cross: si.pjk=si.pj-si.pk * * 5-10: pi.pj * * del3p real det(pi.pj) * * del4s real det(si.sj) (~square overall fac)* * ier integer #digits accuracy lost in input * * Output: cd0 complex D0 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer info,ier DOUBLE PRECISION xpi(13),piDpj(10,10),del3p,del4s DOUBLE COMPLEX cd0 * * local vars * integer i,j * * common blocks * #include "ff.h" * * #] declarations: * #[ hide information in common blocks: * idot = info if ( idot.ne.0 ) then if ( idot.gt.0 .and. idot.le.2 ) then do 20 i=5,10 do 10 j=5,10 fpij4(j,i) = piDpj(j,i) 10 continue 20 continue elseif ( idot.ge.3 ) then do 40 i=1,10 do 30 j=1,10 fpij4(j,i) = piDpj(j,i) 30 continue 40 continue endif if ( abs(idot).ge.2 ) then fdel3 = del3p endif if ( abs(idot).ge.4 ) then fdel4s = del4s endif endif * * #] hide information in common blocks: * #[ call ffxd0: * call ffxd0(cd0,xpi,ier) * * invalidate all the common blocks for the next call * idot = 0 * * #] call ffxd0: *###] ffxd0d: end *###[ ffdif4: subroutine ffdif4(dpipj,luvw,xpi) ***#[*comment:*********************************************************** * * * Compute the elements 11-13 in xpi and the differences dpipj * * Note that the digits lost in dpipj are not counted towards * * the total. * * * * Input: xpi(1:10) real masses, momenta^2 * * * * Output: xpi(11:13) real u and similar vars v,w * * luvw(3) logical TRUE if xpi(10+i) has * * been computed here * * dpipj(10,13) real xpi(i) - xpi(j) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * logical luvw(3) DOUBLE PRECISION xpi(13),dpipj(10,13) * * local variables * integer i,j * * common blocks * #include "ff.h" * * #] declarations: * #[ get differences: * simulate the differences in the masses etc.. if ( xpi(11) .eq. 0 ) then xpi(11) = xpi(5)+xpi(6)+xpi(7)+xpi(8)-xpi(9)-xpi(10) luvw(1) = .TRUE. else luvw(1) = .FALSE. endif if ( xpi(12) .eq. 0 ) then xpi(12) = -xpi(5)+xpi(6)-xpi(7)+xpi(8)+xpi(9)+xpi(10) luvw(2) = .TRUE. else luvw(2) = .FALSE. endif if ( xpi(13) .eq. 0 ) then if ( max(abs(xpi(5)),abs(xpi(7))) .gt. + max(abs(xpi(9)),abs(xpi(10))) ) then xpi(13) = -xpi(12) + 2*(xpi(9)+xpi(10)) else xpi(13) = -xpi(11) + 2*(xpi(5)+xpi(7)) endif * xpi(13) = xpi(5)-xpi(6)+xpi(7)-xpi(8)+xpi(9)+xpi(10) luvw(3) = .TRUE. else luvw(3) = .FALSE. endif do 20 i=1,13 do 19 j=1,10 dpipj(j,i) = xpi(j) - xpi(i) 19 continue 20 continue * #] get differences: *###] ffdif4: end herwig++-2.6.0.orig/Looptools/D/ffxd0p.F0000644000175000017500000004241011754474774020453 0ustar sylvestresylvestre#include "externals.h" *(##[ ffxd0p: subroutine ffxd0p(cs4,ipi12,isoort,cfac,xpi,dpipj,piDpj, + xqi,dqiqj,qiDqj,ai,daiaj,ldel2s,ier) ***#[*comment:*********************************************************** * * * calculate D0/pi^2/(A1*A2*A3*A4/dt3t4) * * * * = C0(t1,t2,t3) - C0(t1,t2,t4) * * * * The transformed momenta of the fourpoint functions are * * input. * * * * Input: xpi(10) untransformed fourpoint momenta * * dpipj(10,10) differences of xpi * * piDpj(10,10) dotproducts of xpi * * xqi(10) transformed fourpoint momenta * * dqiqj(10,10) differences of xqi * * qiDqj(10,10) dotproducts of xqi * * ai(4) the transformation parameters * * daiaj(4,4) their deifferences * * ldel2s if .TRUE. we took out factors delta * * * * Output: cs4(170) not added (assumed 0 on input) * * cfac the factor of cs4 from C0 (ie lam(pi)) * * ier 0=ok 1=inaccurate 2=error * * * * Calls: ffxc0p,ffpi34,ffxhck,ffdl3m,ffdel2,... * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX cs4(175),cfac integer ipi12(28),isoort(16),ier logical ldel2s DOUBLE PRECISION xpi(10),dpipj(10,10),piDpj(10,10), + xqi(10),dqiqj(10,10),qiDqj(10,10),ai(4),daiaj(4,4) * * local variables * integer i,j,k,ip,jp,m,ilogi(6),ii(6,2),jj(6,2),ier0,ier1 DOUBLE COMPLEX c,clogi(6),cipi DOUBLE PRECISION xpi3(6,3:4),dpipj3(6,6,3:4),piDpj3(6,6,3:4), + del2,del2s(3,3:4),del3(3:4),del3mi(6,3:4), + del4,etalam(3:4),etami(6,3:4),ddel2s(2:3),delpsi(3,3:4), + alph(3),blph(3),sdel2,hulp,som,s(4),smax,xmax DOUBLE COMPLEX cpi(6,3:4),cpiDpj(6,6,3:4),cdpipj(6,6,3:4), + cetalm(3:4),cetami(6,3:4),calph(3),csdel2, + cel2s(3,3:4),celpsi(3,3:4),zqi(10),zqiDqj(10,10), + cddl2s(2:3) logical lcroot save ii,jj * * common blocks: * #include "ff.h" * * data * data ii/1,2,3,5,6,9,1,2,3,5,6,9/ data jj/1,2,4,5,10,8,1,2,4,5,10,8/ * * #] declarations: * #[ preparation: * Note that the piDpj3(,,3) contain now the threepoint function * with s3, (,,4) with s4 (and NOT *without* as before) call ffpi43(xpi3(1,3),dpipj3(1,1,3),piDpj3(1,1,3), + xqi,dqiqj,qiDqj,7-3) call ffpi43(xpi3(1,4),dpipj3(1,1,4),piDpj3(1,1,4), + xqi,dqiqj,qiDqj,7-4) * * set the logarithms to be calculated to -999 * do 40 i=1,6 clogi(i) = 0 ilogi(i) = 0 40 continue if ( ai(1) .lt. 0 .neqv. ai(2) .lt. 0 ) then ilogi(1) = -999 ilogi(4) = -999 endif if ( ai(2) .lt. 0 .neqv. ai(3) .lt. 0 ) then ilogi(2) = -999 endif if ( ai(3) .lt. 0 .neqv. ai(1) .lt. 0 ) then ilogi(3) = -999 endif if ( ai(2) .lt. 0 .neqv. ai(4) .lt. 0 ) then ilogi(5) = -999 endif if ( ai(4) .lt. 0 .neqv. ai(1) .lt. 0 ) then ilogi(6) = -999 endif * * #] preparation: * #[ determinants: * * some determinants * * note that not all errors are additive, only when a previous * result is used as input do we need to add ther ier's, otherwise * we can take the maximum value to get a decent estimate of the * number of digits lost. * ier1 = ier if ( .not.ldel2s ) then ier0 = ier call ffdel2(del2,qiDqj,10, 5,6,9, 0,ier0) ier1 = max(ier1,ier0) else s(1) = xqi(5)*xqi(3) s(2) = qiDqj(5,3)**2 del2 = s(1) - s(2) if ( abs(del2) .lt. xloss*s(2) ) ier1 = 100 endif if ( ier1 .ne. ier ) then ier0 = ier call ffdel4(del4,piDpj) if ( ldel2s ) then hulp = -(ai(1)*ai(2)*ai(3)*ai(4)/xqi(3))**2 * del4 else hulp = -(2*ai(1)*ai(2)*ai(3)*ai(4)/dqiqj(3,4))**2 * del4 endif del2 = hulp ier1 = ier0 fdel4s = del4 else if ( ldel2s ) then fdel4s = -del2*(xqi(3)/ai(1)*ai(2)*ai(3)*ai(4))**2 else fdel4s=-del2*(dqiqj(3,4)/(2*ai(1)*ai(2)*ai(3)*ai(4)))**2 endif endif if ( del2 .gt. 0 ) then * use complex routines * call fferr(44,ier) lcroot = .TRUE. sdel2 = isgnal*sqrt(del2) csdel2 = DCMPLX(0D0,sdel2) elseif ( del2 .eq. 0 ) then call fferr(45,ier) else lcroot = .FALSE. sdel2 = isgnal*sqrt(-del2) endif ier0 = ier call ffdl3s(del3(3),piDpj,ii,10) ier1 = max(ier0,ier1) ier0 = ier call ffdl3s(del3(4),piDpj,jj,10) ier1 = max(ier1,ier0) del3(3) = ai(1)**2*ai(2)**2*ai(3)**2*del3(3) del3(4) = ai(1)**2*ai(2)**2*ai(4)**2*del3(4) do 108 m=3,4 ier0 = ier if ( .not.ldel2s ) then call ffdl3m(del3mi(1,m),.TRUE.,del3(m),del2,xpi3(1,m) + ,dpipj3(1,1,m),piDpj3(1,1,m), 6, 4,5,6,1,3) else * * the special case del2s = 0. Note that del3mi(i) and * del3mi(i+3) are used in S_{i-1}. * call ffdl3m(del3mi(1,m),.FALSE.,0D0,0D0,xpi3(1,m), + dpipj3(1,1,m),piDpj3(1,1,m), 6, 4,3,0, 1,2) ier1= max(ier1,ier0) ier0 = ier call ffdl3m(del3mi(5,m),.FALSE.,0D0,0D0,xpi3(1,m), + dpipj3(1,1,m),piDpj3(1,1,m), 6, 4,3,0, 5,2) del3mi(3,m) = 0 del3mi(4,m) = 0 endif ier1 = max(ier1,ier0) do 105 i=1,3 j = i+1 if ( j .eq. 4 ) j = 1 ip = i jp = j if ( m .eq. 4 ) then if ( jp .eq. 3 ) jp = 4 if ( ip .eq. 3 ) ip = 4 endif if ( i.eq.1 .and. m.eq.4 ) then del2s(1,4) = del2s(1,3) else ier0 = ier call ffdel2(del2s(i,m),piDpj,10,inx(ip,jp),ip, + jp,1,ier0) del2s(i,m) = ai(ip)**2*ai(jp)**2*del2s(i,m) ier1 = max(ier1,ier0) endif k = i-1 if ( k .eq. 0 ) k = 3 ier0 = ier if ( .not.ldel2s ) then call ffdl2p(delpsi(i,m),xpi3(1,m),dpipj3(1,1,m), + piDpj3(1,1,m),i+3,j+3,k+3,i,j,k,6) else call ffdl2t(delpsi(i,m),qiDqj, m,5, ip,jp,inx(ip,jp) + ,+1,+1, 10) endif ier1 = max(ier1,ier0) etami(i,m) = del3mi(i,m)/del2 if ( ldel2s .and. i.gt.1 ) + etami(i+3,m) = del3mi(i+3,m)/del2 105 continue etalam(m) = del3(m)/del2 108 continue * * the error analysis * ier = ier1 * * get alpha,1-alpha * if ( .not. lcroot ) then if ( .not.ldel2s ) then if ( xpi3(5,3).eq.0 .and. (piDpj3(5,6,3).gt.0 .eqv. + sdel2.gt.0) ) then alph(1) = -xpi3(6,3)/(piDpj3(5,6,3)+sdel2) alph(3) = -xpi3(4,3)/(piDpj3(5,4,3)-sdel2) else call ffroot(blph(1),alph(1),xpi3(5,3), + -piDpj3(5,6,3),xpi3(6,3),sdel2,ier) call ffroot(alph(3),blph(3),xpi3(5,3), + -piDpj3(5,4,3),xpi3(4,3),sdel2,ier) endif * We cannot change the sign as it is fixed by the choice * of sign in fftrans (sqrt(delta(s3,s4))) WRONG * if ( l4also .and. ( alph(1) .gt. 1 .or. alph(1) .lt. 0 * + ) .and. abs(blph(1)-.5D0) .lt. abs(alph(1)-.5D0) ) then * alph(1) = blph(1) * alph(3) = blph(3) * sdel2 = -sdel2 * isgnal = -isgnal * endif else alph(1) = 1 alph(3) = 0 endif cfac = 2*sdel2 else do 4 k=3,4 do 3 i=1,6 cpi(i,k) = xpi3(i,k) do 2 j=1,6 cdpipj(j,i,k) = dpipj3(j,i,k) cpiDpj(j,i,k) = piDpj3(j,i,k) 2 continue 3 continue 4 continue if ( .not.ldel2s ) then call ffcoot(c,calph(1),cpi(5,3),-cpiDpj(5,6,3), + cpi(6,3),csdel2,ier) call ffcoot(calph(3),c,cpi(5,3),-cpiDpj(5,4,3), + cpi(4,3),csdel2,ier) else calph(1) = 1 calph(3) = 0 endif cfac = 2*csdel2 endif * #] determinants: * #[ convert to complex: if ( lcroot ) then do 110 k=3,4 cetalm(k) = etalam(k) do 109 i=1,3 cel2s(i,k) = del2s(i,k) celpsi(i,k) = delpsi(i,k) cetami(i,k) = etami(i,k) 109 continue 110 continue endif * #] convert to complex: * #[ simple case: if ( ldel2s .or. abs(dqiqj(3,4)) .lt. xloss*abs(xqi(3)) ) then if ( .not.lsmug .and. (ldel2s .or. ldc3c4) ) goto 500 endif * * and the calculations * ier0 = ier ier1 = ier if ( lcroot ) then call ffcc0p(cs4( 1),ipi12(1),isoort(1),clogi(1),ilogi(1), + cpi(1,3),cdpipj(1,1,3),cpiDpj(1,1,3),csdel2,cel2s(1,3), + cetalm(3),cetami(1,3),celpsi(1,3),calph,4,ier0) call ffcc0p(cs4(81),ipi12(9),isoort(9),clogi(4),ilogi(4), + cpi(1,4),cdpipj(1,1,4),cpiDpj(1,1,4),csdel2,cel2s(1,4), + cetalm(4),cetami(1,4),celpsi(1,4),calph,4,ier1) else if ( lsmug ) call ffsm43(xpi3(1,3),7-3) call ffxc0p(cs4( 1),ipi12(1),isoort(1),clogi(1),ilogi(1), + xpi3(1,3),dpipj3(1,1,3),piDpj3(1,1,3),sdel2,del2s(1,3), + etalam(3),etami(1,3),delpsi(1,3),alph,4,ier0) if ( lsmug ) call ffsm43(xpi3(1,4),7-4) call ffxc0p(cs4(81),ipi12(9),isoort(9),clogi(4),ilogi(4), + xpi3(1,4),dpipj3(1,1,4),piDpj3(1,1,4),sdel2,del2s(1,4), + etalam(4),etami(1,4),delpsi(1,4),alph,4,ier1) endif ier = max(ier0,ier1) goto 600 * #] simple case: * #[ cancellations: 500 continue * * There are cancellations between the dilogarithms or the vertex * is on threshold. * we need the differences ddel2s(i) = del2s(i,3)-del2s(i,4) * do 510 i=2,3 if ( i .eq. 2 ) then j = 2 else j = 1 endif ddel2s(i) = del2s(i,3) - del2s(i,4) xmax = abs(del2s(i,3)) if ( abs(ddel2s(i)) .ge. xloss*xmax ) goto 510 * * Very first try with transformation * s(1) = (ai(3)+ai(4))*daiaj(3,4)*del2s(i,3)/ai(3)**2 s(2) = ai(j)**2*ai(4)**2*xpi(j)*dpipj(3,4) s(3) = ai(j)**2*ai(4)**2*piDpj(j,7)*piDpj(j,3) s(4) = ai(j)**2*ai(4)**2*piDpj(j,7)*piDpj(j,4) som = s(1) + s(2) + s(3) + s(4) smax = max(abs(s(1)),abs(s(2)),abs(s(3)),abs(s(4))) if ( abs(som) .ge. xloss*smax ) goto 510 if ( smax .lt. xmax ) then ddel2s(i) = som xmax = smax endif 510 continue if ( .not. lcroot ) then call ffdxc0(cs4,ipi12,isoort,clogi,ilogi,xpi3,dpipj3,piDpj3, + xqi,qiDqj,sdel2,del2s,etalam,etami,delpsi,alph, + ddel2s,ldel2s,4,ier) else cddl2s(2) = ddel2s(2) cddl2s(3) = ddel2s(3) do 530 i=1,10 zqi(i) = xqi(i) do 520 j=1,10 zqiDqj(j,i) = qiDqj(j,i) 520 continue 530 continue call ffdcc0(cs4,ipi12,isoort,clogi,ilogi,cpi,cpiDpj, + zqi,zqiDqj,csdel2,cel2s,cetalm,cetami,celpsi, + calph,cddl2s,ldel2s,4,ier) endif 600 continue * #] cancellations: * #[ Ai<0 terms: cipi = DCMPLX(0D0,pi) if ( ai(3) .lt. 0 .neqv. ai(4) .lt. 0 ) then * we need the S term if ( ai(1) .lt. 0 .eqv. ai(2) .lt. 0 ) then if ( lcroot ) then call ffcxra(cs4(167),ipi12(23),xqi,qiDqj,sdel2,1,ier) else * call ffxtro(cs4(167),ipi12(23),xqi,qiDqj,sdel2,1,ier) call ffxtra(cs4(167),ipi12(23),xqi,qiDqj,sdel2,1,ier) endif else if ( lcroot ) then call ffcxra(cs4(167),ipi12(23),xqi,qiDqj,sdel2,2,ier) call ffcxra(cs4(169),ipi12(26),xqi,qiDqj,sdel2,3,ier) else call ffxtra(cs4(167),ipi12(23),xqi,qiDqj,sdel2,2,ier) call ffxtra(cs4(169),ipi12(26),xqi,qiDqj,sdel2,3,ier) * call ffxtro(cs4(167),ipi12(23),xqi,qiDqj,sdel2,2,ier) * call ffxtro(cs4(169),ipi12(26),xqi,qiDqj,sdel2,3,ier) endif endif endif * * The normal correction terms * if ( ai(1) .lt. 0 .neqv. ai(2) .lt. 0 ) then cs4(161) = -cipi*clogi(1) ipi12(17) = 12*ilogi(1) if ( ilogi(1) .eq. -999 ) call fferr(46,ier) cs4(164) = cipi*clogi(4) ipi12(20) = -12*ilogi(4) if ( ilogi(4) .eq. -999 ) call fferr(46,ier) endif if ( ai(2) .lt. 0 .neqv. ai(3) .lt. 0 ) then cs4(162) = -cipi*clogi(2) ipi12(18) = 12*ilogi(2) if ( ilogi(2) .eq. -999 ) call fferr(46,ier) endif if ( ai(3) .lt. 0 .neqv. ai(1) .lt. 0 ) then cs4(163) = -cipi*clogi(3) ipi12(19) = 12*ilogi(3) if ( ilogi(3) .eq. -999 ) call fferr(46,ier) endif if ( ai(2) .lt. 0 .neqv. ai(4) .lt. 0 ) then cs4(165) = cipi*clogi(5) ipi12(21) = -12*ilogi(5) if ( ilogi(5) .eq. -999 ) call fferr(46,ier) endif if ( ai(4) .lt. 0 .neqv. ai(1) .lt. 0 ) then cs4(166) = cipi*clogi(6) ipi12(22) = -12*ilogi(6) if ( ilogi(6) .eq. -999 ) call fferr(46,ier) endif * #] Ai<0 terms: *###] ffxd0p: end *###[ ffpi43: subroutine ffpi43(xpi3,dpipj3,piDpj3,xpi,dpipj,piDpj,imiss) ***#[*comment:*********************************************************** * * * Fill the threepoint arrays xpi3 and dpipj3 with masses from the * * the fourpoint array xpi with leg imiss cut out. * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE PRECISION xpi3(6),dpipj3(6,6),piDpj3(6,6) DOUBLE PRECISION xpi(10),dpipj(10,10),piDpj(10,10) integer imiss * * local variables * integer i,j integer iinx(6,4) save iinx * * common blocks * #include "ff.h" * * data * data iinx /2,3,4,6,7,10, + 1,3,4,9,7,8, + 1,2,4,5,10,8, + 1,2,3,5,6,9/ * #] declarations: * #[ calculations: do 20 i=1,6 xpi3(i) = xpi(iinx(i,imiss)) do 10 j=1,6 dpipj3(j,i) = dpipj(iinx(j,imiss),iinx(i,imiss)) piDpj3(j,i) = piDpj(iinx(j,imiss),iinx(i,imiss)) 10 continue 20 continue * #] calculations: *###] ffpi43: end *###[ ffxtra: subroutine ffxtra(cs4,ipi12,xqi,qiDqj,sdel2,ii,ier) ***#[*comment:*********************************************************** * * * calculate the extra terms S_ii^{\infty\prime}, put them in * * cs4 and ipi12. * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ipi12(3),ii,ier DOUBLE COMPLEX cs4(3) DOUBLE PRECISION xqi(10),qiDqj(10,10),sdel2 * * local variables * integer i,ip(5) DOUBLE PRECISION x(2,3),dfflo1,s,s1 external dfflo1 * * common blocks * #include "ff.h" * * data * data ip/5,6,8,5,6/ * #] declarations: * #[ calculations: if ( ii .eq. 3 ) return do 10 i=1,3 if ( ii .eq. 1 .and. i .eq. 2 ) goto 10 call ffroot(x(1,i),x(2,i),xqi(ip(i)),-qiDqj(ip(i), + ip(i+1)),xqi(ip(i+1)),sdel2,ier) s = -x(2,i)/x(1,i) if ( abs(s-1) .lt. xloss ) then s1 = dfflo1(-2*qiDqj(ip(i),ip(i+1))/(xqi(ip(i))*x(1,i)), + ier) elseif ( s .gt. 0 ) then s1 = log(s) else if ( abs(s+1) .lt. xloss ) then s1 = dfflo1(-2*sdel2/(xqi(ip(i))*x(1,i)),ier) else s1 = log(-s) endif * also here an minus sign (-i*pi*log(-(p.p-sqrt)/(p.p+sqrt))) if ( qiDqj(ip(i),ip(i+1))*xqi(ip(i))*sdel2 .gt. 0 ) then ipi12(i) = +12 else ipi12(i) = -12 endif * ier = ier + 50 * print *,'ffxtra: imaginary part may well be wrong -> ', * + 'n*pi^2 fout' * print *,' ipi12(i) = ',ipi12(i) * print *,' qiDqj = ',qiDqj(ip(i),ip(i+1)) * print *,' qi^2 = ',xqi(ip(i)) endif * there is an overall minus compared with Veltman cs4(i) = DCMPLX(0D0,-pi*s1) if ( sdel2 .lt. 0 ) then cs4(i) = -cs4(i) ipi12(i) = -ipi12(i) endif if ( ii .ne. 1 ) then cs4(i) = -cs4(i) ipi12(i) = -ipi12(i) endif if ( i .eq. 2 ) then cs4(i) = 2*cs4(i) ipi12(i) = 2*ipi12(i) endif 10 continue * #] calculations: *###] ffxtra: end *###[ ffcxra: subroutine ffcxra(cs4,ipi12,xqi,qiDqj,sdel2,ii,ier) ***#[*comment:*********************************************************** * * * calculate the extra terms S_ii^{\infty\prime}, put them in * * cs4 and ipi12 for qi real but sdel2 complex. * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ipi12(3),ii,ier DOUBLE COMPLEX cs4(3) DOUBLE PRECISION xqi(10),qiDqj(10,10),sdel2 * * local variables * integer i,ip(5) DOUBLE COMPLEX x(2,3),zfflo1,s,s1,c DOUBLE PRECISION absc external zfflo1 * * common blocks * #include "ff.h" * * data * data ip/5,6,8,5,6/ * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ calculations: if ( ii .eq. 3 ) return do 10 i=1,3 if ( ii .eq. 1 .and. i .eq. 2 ) goto 10 x(1,i) = DCMPLX(-qiDqj(ip(i),ip(i+1))/xqi(ip(i)), + -sdel2/xqi(ip(i))) x(2,i) = DCMPLX(-qiDqj(ip(i),ip(i+1))/xqi(ip(i)), + +sdel2/xqi(ip(i))) s = -x(2,i)/x(1,i) c = s-1 if ( absc(c) .lt. xloss ) then s1 = zfflo1(DBLE(-2*qiDqj(ip(i),ip(i+1))/xqi(ip(i)))/ + x(1,i),ier) elseif ( abs(s+1) .lt. xloss ) then s1 = zfflo1(DCMPLX(0D0,-2*sdel2/xqi(ip(i)))/x(1,i),ier) if ( DIMAG(c).gt.0 ) then ipi12(i) = +12 else ipi12(i) = -12 endif else s1 = log(s) endif * there is an overall minus compared with Veltman cs4(i) = DCMPLX(pi*DIMAG(s1),-pi*DBLE(s1)) if ( ii .ne. 1 ) then cs4(i) = -cs4(i) ipi12(i) = -ipi12(i) endif if ( sdel2 .lt. 0 ) then cs4(i) = -cs4(i) ipi12(i) = -ipi12(i) endif if ( i .eq. 2 ) then cs4(i) = 2*cs4(i) ipi12(i) = 2*ipi12(i) endif 10 continue * #] calculations: *###] ffcxra: end *###[ ffsm43: subroutine ffsm43(xpi3,imiss) ***#[*comment:*********************************************************** * * * Distribute the smuggled 4point momenta to the 3point smuggled * * momenta. Note that because of the common block smuggling this * * cannot be included in ffpi43. * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer imiss DOUBLE PRECISION xpi3(6) * * local variables * integer i,j,iinx(6,4) save iinx * * common blocks * #include "ff.h" * * data * data iinx /2,3,4,6,7,10, + 1,3,4,9,7,8, + 1,2,4,5,10,8, + 1,2,3,5,6,9/ * * #] declarations: * #[ parcel out: if ( lsmug ) then * * parcel out the smuggled diffs * do 30 i=1,3 j = mod(i,3)+1 if ( xpi3(j) .eq. 0 ) then cmipj(i,i) = c2sisj(iinx(i,imiss),iinx(j,imiss)) elseif ( xpi3(i) .eq. 0 ) then cmipj(j,i) = c2sisj(iinx(i,imiss),iinx(j,imiss)) endif 30 continue endif * #] parcel out: *)##] ffsm43: end herwig++-2.6.0.orig/Looptools/D/ffS2.F0000644000175000017500000000602111754474774020062 0ustar sylvestresylvestre* ffS2.F * calculate S2 = \int_0^1 dy ln(a y^2 + b y + c), * where a is real and can be zero; b and c complex * input: ra=a (real), cb=b, cc=c * signc=sign(img(c)) in case c is real. * cza and czb are the 2 roots of: a y^2 + b y + c == 0 * remarks: ieps is needed for cza, czb. * this file is part of LoopTools * last modified 8 Dec 10 th * Written by Le Duc Ninh, MPI, Munich (2008). * Spence, log and eta functions are taken from FF. * Oct 28 2008 #include "externals.h" double complex function ffS2(ra, cb, cc, signc, ier) implicit none double precision ra, signc double complex cb, cc integer ier #include "ff.h" double complex crdisc, cza, czb double precision sza, szb, sy1, sy2, sc double complex ffS2_linr, zfflog integer nffet1 external ffS2_linr, zfflog, nffet1 sc = DIMAG(cc) if( sc .eq. 0 ) sc = signc if( abs(ra) .lt. precx ) then if( abs(cb) .lt. precx ) then * 0 roots: if( abs(cc) .lt. precx ) then call fferr(89, ier) ffS2 = 0 return endif ffS2 = zfflog(cc, 1, DCMPLX(signc), ier) return endif * 1 root: cza = -cc/cb sza = -signc*DBLE(cb) if( sza .eq. 0 ) sza = -signc ffS2 = zfflog(cb, 1, DCMPLX(sc), ier) + & ffS2_linr(cza, sza, ier) if( abs(DIMAG(cb)) .lt. precx ) return * complex b szb = DIMAG(cza) if( szb .eq. 0 ) szb = sza ffS2 = ffS2 + & c2ipi*nffet1(cb, DCMPLX(0D0, -szb), DCMPLX(0D0, sc), ier) return endif * 2 roots: cza = y1, czb = y2 * eq.: y**2 + (b/a) y + (c/a) = 0 * the ieps is irrelevant here since we take into account * the contributions of both roots *** Ninh changed: 14 Aug 2009 crdisc = sqrt(cb**2/ra**2 - 4*cc/ra) cza = -.5D0*(cb/ra + crdisc) czb = -.5D0*(cb/ra - crdisc) if( abs(cza) .gt. abs(czb) ) then czb = cc/(ra*cza) else cza = cc/(ra*czb) endif * calculate the sign of im(cza) and im(czb) which are related to ieps sza = signc/ra if( abs(DBLE(crdisc)) .gt. precx ) sza = sza/DBLE(crdisc) szb = -sza sy1 = DIMAG(cza) if( sy1 .eq. 0 ) sy1 = sza sy2 = DIMAG(czb) if( sy2 .eq. 0 ) sy2 = szb * calculate the log and etas * ieps=1 to choose the cut along the real axis ffS2 = & zfflog(DCMPLX(ra), 1, DCMPLX(sc), ier) + & c2ipi*nffet1(DCMPLX(0D0, -sy1), DCMPLX(0D0, -sy2), & DCMPLX(0D0, sc/ra), ier) + & ffS2_linr(cza, sza, ier) + & ffS2_linr(czb, szb, ier) end ************************************************************************ * calculate S2 = \int_0^1 dy ln(y - z), * where z is complex * input: cz, signz = sign(im(z)) in case z is real. * remarks: ieps is needed. double complex function ffS2_linr(cz, signz, ier) implicit none double complex cz double precision signz integer ier #include "ff.h" double complex zfflog external zfflog if( abs(cz) .lt. precx ) then ffS2_linr = -1 else if( abs(cz - 1) .lt. precx ) then ffS2_linr = zfflog(-cz, 1, DCMPLX(-signz), ier) - 1 else ffS2_linr = & zfflog(1 - cz, 1, DCMPLX(-signz), ier)*(1 - cz) + & zfflog(-cz, 1, DCMPLX(-signz), ier)*cz - 1 endif end herwig++-2.6.0.orig/Looptools/D/ffdel4.F0000644000175000017500000002073211754474774020433 0ustar sylvestresylvestre#include "externals.h" *###[ ffdel4: subroutine ffdel4(del4,piDpj) ***#[*comment:*********************************************************** * * * Calculate del4(piDpj) = det(si.sj) with * * the momenta as follows: * * p(1-4) = s(i) * * p(4-10) = p(i) * * * * Input: piDpj(ns,ns) (real) * * * * Output: del4 (real) det(si.sj) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * DOUBLE PRECISION del4,piDpj(10,10) * * local variables: * integer mem,nperm parameter(mem=10,nperm=125) integer i,jj(8),iperm(4,nperm),imem,jmem,memarr(mem,4),memind, + inow,jnow,icount DOUBLE PRECISION s(24),xmax,del4p,xmaxp save iperm,memind,memarr,inow,jnow * * common blocks: * #include "ff.h" * #] declarations: * #[ data: data memind /0/ data memarr /mem*0,mem*0,mem*1,mem*1/ data inow /1/ data jnow /1/ * * these are all permutations that give a non-zero result with the * correct sign. This list was generated with getperm4. * (note: this used to be well-ordened, but then it had more than * 19 continuation lines) * data iperm/ + 1,2,3,4,1,2,3,7,1,2,8,3,1,2,3,10,1,2,6,4,1,2,4,7,1,2,4,9,1,2,6,7 + ,1,2,8,6,1,2,6,10,1,2,7,8,1,2,7,9,1,2,10,7,1,2,9,8,1,2,10,9,1,3, + 4,5,1,3,6,4,1,3,10,4,1,3,7,5,1,3,5,8,1,3,10,5,1,3,6,7,1,3,8,6,1, + 3,6,10,1,3,10,7,1,3,8,10,1,4,5,6,1,4,7,5,1,4,9,5,1,4,6,7,1,4,6,9 + ,1,4,6,10,1,4,10,7,1,4,10,9,1,5,6,7,1,5,8,6,1,5,6,10,1,5,7,8,1,5 + ,7,9,1,5,10,7,1,5,9,8,1,5,10,9,1,6,8,7,1,6,9,7,1,6,8,9,1,6,8,10, + 1,6,9,10,1,7,10,8,1,7,10,9,1,8,9,10,2,3,4,5,2,3,8,4,2,3,9,4,2,3, + 7,5,2,3,5,8,2,3,10,5,2,3,8,7,2,3,9,7,2,3,8,9,2,3,8,10,2,3,9,10,2 + ,4,5,6,2,4,7,5,2,4,9,5,2,4,6,8,2,4,6,9,2,4,8,7,2,4,9,7,2,4,8,9,2 + ,5,6,7,2,5,8,6,2,5,6,10,2,5,7,8,2,5,7,9,2,5,10,7,2,5,9,8,2,5,10, + 9,2,6,8,7,2,6,9,7,2,6,8,9,2,6,8,10,2,6,9,10,2,7,10,8,2,7,10,9,2, + 8,9,10,3,4,5,6,3,4,8,5,3,4,9,5,3,4,5,10,3,4,6,8,3,4,6,9,3,4,10,8 + ,3,4,10,9,3,5,6,7,3,5,8,6,3,5,6,10,3,5,7,8,3,5,7,9,3,5,10,7,3,5, + 9,8,3,5,10,9,3,6,8,7,3,6,9,7,3,6,8,9,3,6,8,10,3,6,9,10,3,7,10,8, + 3,7,10,9,3,8,9,10,4,5,6,7,4,5,8,6,4,5,6,10,4,5,7,8,4,5,7,9,4,5,1 + 0,7,4,5,9,8,4,5,10,9,4,6,8,7,4,6,9,7,4,6,8,9,4,6,8,10,4,6,9,10,4 + ,7,10,8,4,7,10,9,4,8,9,10/ * #] data: * #[ get starting point from memory: * * see if we know were to start, if not: go on as last time * do 5 i=1,mem if ( id .eq. memarr(i,1) .and. idsub .eq. memarr(i,2) ) then inow = memarr(i,3) jnow = memarr(i,4) goto 6 endif 5 continue 6 continue * #] get starting point from memory: * #[ calculations: imem = inow jmem = jnow del4 = 0 xmax = 0 icount = 0 10 continue jj(1) = iperm(1,inow) jj(3) = iperm(2,inow) jj(5) = iperm(3,inow) jj(7) = iperm(4,inow) jj(2) = iperm(1,jnow) jj(4) = iperm(2,jnow) jj(6) = iperm(3,jnow) jj(8) = iperm(4,jnow) s( 1) = +piDpj(jj(1),jj(2))*piDpj(jj(3),jj(4))* + piDpj(jj(5),jj(6))*piDpj(jj(7),jj(8)) s( 2) = +piDpj(jj(1),jj(4))*piDpj(jj(3),jj(6))* + piDpj(jj(5),jj(2))*piDpj(jj(7),jj(8)) s( 3) = +piDpj(jj(1),jj(6))*piDpj(jj(3),jj(2))* + piDpj(jj(5),jj(4))*piDpj(jj(7),jj(8)) s( 4) = -piDpj(jj(1),jj(2))*piDpj(jj(3),jj(6))* + piDpj(jj(5),jj(4))*piDpj(jj(7),jj(8)) s( 5) = -piDpj(jj(1),jj(6))*piDpj(jj(3),jj(4))* + piDpj(jj(5),jj(2))*piDpj(jj(7),jj(8)) s( 6) = -piDpj(jj(1),jj(4))*piDpj(jj(3),jj(2))* + piDpj(jj(5),jj(6))*piDpj(jj(7),jj(8)) s( 7) = -piDpj(jj(1),jj(2))*piDpj(jj(3),jj(4))* + piDpj(jj(7),jj(6))*piDpj(jj(5),jj(8)) s( 8) = -piDpj(jj(1),jj(4))*piDpj(jj(3),jj(6))* + piDpj(jj(7),jj(2))*piDpj(jj(5),jj(8)) s( 9) = -piDpj(jj(1),jj(6))*piDpj(jj(3),jj(2))* + piDpj(jj(7),jj(4))*piDpj(jj(5),jj(8)) s(10) = +piDpj(jj(1),jj(2))*piDpj(jj(3),jj(6))* + piDpj(jj(7),jj(4))*piDpj(jj(5),jj(8)) s(11) = +piDpj(jj(1),jj(6))*piDpj(jj(3),jj(4))* + piDpj(jj(7),jj(2))*piDpj(jj(5),jj(8)) s(12) = +piDpj(jj(1),jj(4))*piDpj(jj(3),jj(2))* + piDpj(jj(7),jj(6))*piDpj(jj(5),jj(8)) s(13) = -piDpj(jj(1),jj(2))*piDpj(jj(7),jj(4))* + piDpj(jj(5),jj(6))*piDpj(jj(3),jj(8)) s(14) = -piDpj(jj(1),jj(4))*piDpj(jj(7),jj(6))* + piDpj(jj(5),jj(2))*piDpj(jj(3),jj(8)) s(15) = -piDpj(jj(1),jj(6))*piDpj(jj(7),jj(2))* + piDpj(jj(5),jj(4))*piDpj(jj(3),jj(8)) s(16) = +piDpj(jj(1),jj(2))*piDpj(jj(7),jj(6))* + piDpj(jj(5),jj(4))*piDpj(jj(3),jj(8)) s(17) = +piDpj(jj(1),jj(6))*piDpj(jj(7),jj(4))* + piDpj(jj(5),jj(2))*piDpj(jj(3),jj(8)) s(18) = +piDpj(jj(1),jj(4))*piDpj(jj(7),jj(2))* + piDpj(jj(5),jj(6))*piDpj(jj(3),jj(8)) s(19) = -piDpj(jj(7),jj(2))*piDpj(jj(3),jj(4))* + piDpj(jj(5),jj(6))*piDpj(jj(1),jj(8)) s(20) = -piDpj(jj(7),jj(4))*piDpj(jj(3),jj(6))* + piDpj(jj(5),jj(2))*piDpj(jj(1),jj(8)) s(21) = -piDpj(jj(7),jj(6))*piDpj(jj(3),jj(2))* + piDpj(jj(5),jj(4))*piDpj(jj(1),jj(8)) s(22) = +piDpj(jj(7),jj(2))*piDpj(jj(3),jj(6))* + piDpj(jj(5),jj(4))*piDpj(jj(1),jj(8)) s(23) = +piDpj(jj(7),jj(6))*piDpj(jj(3),jj(4))* + piDpj(jj(5),jj(2))*piDpj(jj(1),jj(8)) s(24) = +piDpj(jj(7),jj(4))*piDpj(jj(3),jj(2))* + piDpj(jj(5),jj(6))*piDpj(jj(1),jj(8)) del4p = 0 xmaxp = 0 do 20 i=1,24 del4p = del4p + s(i) xmaxp = max(xmaxp,abs(s(i))) 20 continue if ( abs(del4p) .lt. xloss*xmaxp ) then if ( inow .eq. imem .or. xmaxp .lt. xmax ) then del4 = del4p xmax = xmaxp endif * as the list is ordered we may have more luck stepping * through with large steps inow = inow + 43 jnow = jnow + 49 if ( inow .gt. nperm ) inow = inow - nperm if ( jnow .gt. nperm ) jnow = jnow - nperm icount = icount + 1 if ( icount.gt.15 .or. inow.eq.imem .or. jnow.eq.jmem + ) goto 800 goto 10 endif del4 = del4p xmax = xmaxp * #] calculations: * #[ into memory: memind = memind + 1 if ( memind .gt. mem ) memind = 1 memarr(memind,1) = id memarr(memind,2) = idsub memarr(memind,3) = inow memarr(memind,4) = jnow 800 continue * #] into memory: *###] ffdel4: end *###[ ffdl3p: subroutine ffdl3p(dl3p,piDpj,ns,ii,jj) ***#[*comment:*********************************************************** * calculate in a numerically stable way * * * * p1 p2 p3 * * delta * * p1' p2' p3' * * * * with pn = xpi(ii(n)), p4 = -p1-p2-p3, p5 = -p1-p2, p6 = p2+p3 * * with pn'= xpi(jj(n)), p4'= etc. (when ns=15 p5=p1+p2) * * * * Input: piDpj real(ns,ns) dotpruducts * * ns integer either 10 or 15 * * ii,jj integer(6) location of pi in piDpj * * Output: dl3p real see above * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ns,ii(6),jj(6) DOUBLE PRECISION dl3p,piDpj(ns,ns) * * local variables * integer i,j,k,l,iperm(3,16),ii1,ii2,ii3,jj1,jj2,jj3,i0 logical lsymm DOUBLE PRECISION s(6),som,xmax,smax,trylos * * common blocks * #include "ff.h" * * data * data iperm /1,2,3, 2,4,3, 3,4,1, 4,2,1, + 1,2,6, 6,4,3, 3,1,6, 2,4,6, + 2,5,3, 5,4,1, 1,3,5, 2,4,5, + 1,6,5, 2,5,6, 3,6,5, 4,5,6/ * #] declarations: * #[ calculations: if ( ii(1).eq.jj(1) .and. ii(2).eq.jj(2) .and. ii(3).eq.jj(3) ) + then * * symmetric - fewer possibilities * lsymm = .TRUE. else lsymm = .FALSE. endif * * try all (8.5,16)*16 permutations * xmax = 0 trylos = 1 do 101 l=1,16 if ( lsymm ) then i0 = l else i0 = 1 endif do 100 i=i0,16 ii1 = ii(iperm(1,i)) ii2 = ii(iperm(2,i)) ii3 = ii(iperm(3,i)) j = i+l-1 if ( j .gt. 16 ) j=j-16 jj1 = jj(iperm(1,j)) jj2 = jj(iperm(2,j)) jj3 = jj(iperm(3,j)) s(1) = +piDpj(ii1,jj1)*piDpj(ii2,jj2)*piDpj(ii3,jj3) s(2) = +piDpj(ii2,jj1)*piDpj(ii3,jj2)*piDpj(ii1,jj3) s(3) = +piDpj(ii3,jj1)*piDpj(ii1,jj2)*piDpj(ii2,jj3) s(4) = -piDpj(ii1,jj1)*piDpj(ii3,jj2)*piDpj(ii2,jj3) s(5) = -piDpj(ii3,jj1)*piDpj(ii2,jj2)*piDpj(ii1,jj3) s(6) = -piDpj(ii2,jj1)*piDpj(ii1,jj2)*piDpj(ii3,jj3) som = 0 smax = 0 do 80 k=1,6 som = som + s(k) smax = max(smax,abs(som)) 80 continue if ( ns .eq. 15 .and. (i.gt.8 .neqv. j.gt.8) ) + som = -som if ( i .eq. 1 .or. smax .lt. xmax ) then dl3p = som xmax = smax endif if ( abs(dl3p) .ge. xloss*smax ) goto 110 * give up a bit more easily if I have tried many times if ( trylos*abs(dl3p) .ge. xloss*smax ) goto 109 trylos = trylos*1.3D0 100 continue 101 continue 109 continue 110 continue * #] calculations: *###] ffdl3p: end herwig++-2.6.0.orig/Looptools/D/ffxdbd.F0000644000175000017500000004367511754474774020537 0ustar sylvestresylvestre#include "externals.h" *###[ ffxdir: subroutine ffxdir(cs,cfac,idone,xpi,dpipj,ipoin,ndiv,ier) ***#[*comment:*********************************************************** * * * Check if this 4point function is IRdivergent and if so, get it * * using ffxdbd and set idone to 1 (or 2 if 2 IR poles) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ipoin,idone,ndiv,ier DOUBLE COMPLEX cs,cfac DOUBLE PRECISION xpi(13),dpipj(10,13) * * local variables * integer i,j,k,l,ier0,ii(6),notijk(4,4,4) save notijk * * common blocks * #include "ff.h" * * data * data notijk/ + 0,0,0,0,0,0,4,3,0,4,0,2,0,3,2,0,0,0,4,3,0,0,0,0,4,0,0,1,3,0,1,0, + 0,4,0,2,4,0,0,1,0,0,0,0,2,1,0,0,0,3,2,0,3,0,1,0,2,1,0,0,0,0,0,0/ * * #] declarations: * #[ work: * idone = 0 do 25 i=1,4 if ( xpi(i) .ne. 0 ) goto 25 do 24 j=1,3 if ( j .eq. i ) goto 24 if ( dpipj(j,inx(j,i)) .ne. 0 ) goto 24 do 23 k=j+1,4 if ( k .eq. i ) goto 23 if ( dpipj(k,inx(k,i)) .ne. 0 ) goto 23 * * we found an IR divergent function; * first check whether it is linearly divergent * l = notijk(k,j,i) * * do we have a linear divergence on our hands? * if ( dpipj(l,inx(l,i)) .eq. 0 ) then if ( ndiv.eq.-1 ) ndiv = 1 elseif ( ndiv.gt.0 ) then cs = 0 cfac = 1 idone = 1 return endif * * the complex case * if ( lsmug ) then * * use Wim & Ansgard's formulae whenever possible * if ( c2sisj(i,j).eq.0 .and. c2sisj(i,k).eq.0 ) + then call ffxdbd(cs,cfac,xpi,dpipj,i,j,k,l,ier) goto 98 endif if ( c2sisj(i,j).eq.0 .and. dpipj(i,inx(i,l)) + .eq.0 .and. c2sisj(i,l).eq.0 ) then call ffxdbd(cs,cfac,xpi,dpipj,i,j,l,k,ier) goto 98 endif if ( c2sisj(i,k).eq.0 .and. dpipj(i,inx(i,l)) + .eq.0 .and. c2sisj(i,l).eq.0 ) then call ffxdbd(cs,cfac,xpi,dpipj,i,k,l,j,ier) goto 98 endif * * is it nasty? * if ( dpipj(i,inx(i,l)).eq.0 ) then if ( c2sisj(j,i).eq.0 ) then goto 99 elseif ( c2sisj(k,i).eq.0 ) then goto 99 elseif ( c2sisj(l,i).eq.0 ) then goto 99 else call fferr(71,ier) return endif endif * * then it just is logarithmiocally divergent * let the ffxc0i handle this * else * * the real case * if ( dpipj(i,inx(i,l)).eq.0 ) then call fferr(73,ier) idone = 1 return endif call ffxdbd(cs,cfac,xpi,dpipj,i,j,k,l,ier) goto 98 endif 23 continue 24 continue 25 continue idone = 0 lnasty = .FALSE. if ( ndiv.eq.-1 ) ndiv = 0 return * * clean up * 98 continue if ( ldot .and. ipoin.eq.4 ) then ier0 = 0 if ( idot.lt.1 ) then call ffdot4(fpij4,xpi,dpipj,10,ier0) endif ii(1)= 5 ii(2)= 6 ii(3)= 7 ii(4)= 8 ii(5)= 9 ii(6)= 10 if ( abs(idot).lt.2 ) then fidel3 = ier0 call ffdl3p(fdel3,fpij4,10,ii,ii) endif endif * * and finito * if ( ndiv.eq.-1 ) ndiv = 0 idone = 1 if ( xpi(j) .eq. 0 .or. xpi(k) .eq. 0 ) idone = 2 if ( xpi(j) .eq. 0 .and. xpi(k) .eq. 0 ) idone = 3 return * * nasty - set some flags * 99 continue lnasty = .TRUE. return * * #] work: *###] ffxdir: end *###[ ffxdbd: subroutine ffxdbd(csom,cfac,xpi,dpipj,ilam,i1,i4,ic,ier) ***#[*comment:*********************************************************** * * * The IR divergent fourpoint function with real masses * * according to Beenakker & Denner, Nucl.Phys.B338(1990)349. * * * * Input: xpi(13) real momenta^2 * * dpipj(10,13) real xpi(i)-xpi(j) * * ilam integer position of m=0 * * i1,i4 integer position of other 2 IR masses * * ic integer position of complex mass * * lambda real cutoff to use instead of lam^2 * * * * Output: csom,cfac complex D0 = csom*cfac * * ier integer number of digits lost * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ilam,i1,i4,ic,ier DOUBLE COMPLEX csom,cfac DOUBLE PRECISION xpi(13),dpipj(10,13) * * local variables * integer ier0,ier1,ipi12,ip,init,is,i2,i3,i,iepst,iepss,ieps2, + ieps3 DOUBLE PRECISION absc,xmax DOUBLE PRECISION xxs(3),xxt(1),xx2(3),xx3(3),xm0,xm1,xm4,xlam, + d,dfflo1,fac DOUBLE COMPLEX c,cs(21),z,zlg,som,cxt DOUBLE COMPLEX zxfflg,zfflog external dfflo1,zxfflg,zfflog save init * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * data * data init /0/ * * #] declarations: * #[ check input: * if ( init .eq. 0 ) then init = 1 print *,'ffxdbd: using IR cutoff lambda^2 = ',lambda endif if ( xpi(i1).eq.0 .or. xpi(i4).eq.0 ) then call fferr(98,ier) return endif * * #] check input: * #[ preliminaries: * csom = 0 cfac = 1 xm0 = sqrt(xpi(ic)) xm1 = sqrt(xpi(i1)) xm4 = sqrt(xpi(i4)) xlam = sqrt(lambda) * * #] preliminaries: * #[ special case m0=0, m1=m2, m3=m4: if ( xpi(ic) .eq. 0 ) then * * even more special case: 2 points of IR divergence: * if ( dpipj(i1,inx(ic,i1)).eq.0 .and. + dpipj(i4,inx(ic,i4)).eq.0 ) then ier0 = 0 call ffxkfn(xxs,iepss,xpi(inx(i1,i4)),xm1,xm4,ier0) if ( ier0.ge.100 ) then call fferr(44,ier) return endif ier = ier + ier0 if ( abs(xxs(2)).gt.xloss ) then zlg = zxfflg(xxs(1),iepss,0D0,ier) else zlg = DBLE(dfflo1(xxs(2),ier)) endif csom = -2*zlg* + zxfflg(-lambda/xpi(inx(ilam,ic)),-2,0D0,ier) fac = xxs(1)/(xm1*xm4*xpi(inx(ilam,ic))*xxs(2)*xxs(3)) cfac = fac if ( ldot .and. abs(idot).lt.4 ) then fdel4s = 1/(16*fac**2) endif return endif * #] special case m0=0, m1=m2, m3=m4: * #[ special case m0=0, m1=m2, m3!=m4: if ( dpipj(i1,inx(ic,i1)).eq.0 .or. + dpipj(i4,inx(ic,i4)).eq.0 ) then if ( dpipj(i1,inx(ic,i1)).ne.0 ) then i = i4 i4 = i1 i1 = i endif * * From Wim Beenakker, Priv.Comm. * ier0 = 0 call ffxkfn(xxs,iepss,xpi(inx(i1,i4)),xm1,xm4,ier0) if ( ier0.ge.100 ) then call fferr(44,ier) return endif ier = ier + ier0 ier0 = ier ier1 = ier if ( abs(xxs(2)).gt.xloss ) then zlg = zxfflg(xxs(1),iepss,0D0,ier0) else zlg = DBLE(dfflo1(xxs(2),ier0)) endif cs(1) = zlg**2 ier1 = max(ier0,ier1) ier0 = ier if ( xxs(1)**2.lt.xloss ) then cs(2) = -2*DBLE(dfflo1(xxs(1)**2,ier0))*zlg else cs(2) = -2*zxfflg(xxs(2)*xxs(3),0,0D0,ier0)*zlg endif ier1 = max(ier0,ier1) ier0 = ier cs(3) = zxfflg(lambda/xpi(i4),0,0D0,ier0)*zlg ier1 = max(ier0,ier1) ier0 = ier cs(4) = 2*zxfflg(dpipj(inx(ic,i4),i4)/xpi(inx(ilam,ic)), + -1,dpipj(inx(ic,i4),i4),ier0)*zlg ier1 = max(ier0,ier1) ier0 = ier call ffzxdl(cs(5),ip,zlg,xxs(1)**2,iepss,ier0) cs(5) = -cs(5) ipi12 = -ip + 2 ier1 = max(ier0,ier1) ier = ier1 som = cs(1) + cs(2) + cs(3) + cs(4) + cs(5) + + ipi12*DBLE(pi12) xmax = max(absc(cs(1)),absc(cs(2)),absc(cs(3)), + absc(cs(4)),absc(cs(5))) csom = som fac = -xxs(1)/(xm1*xm4*xpi(inx(ilam,ic))*xxs(2)*xxs(3)) cfac = fac if ( ldot .and. abs(idot).lt.4 ) then fdel4s = 1/(16*fac**2) endif return endif * #] special case m0=0, m1=m2, m3!=m4: * #[ special case m0=0, m1!=m2, m3!=m4: * * This also crashes... * xm0 = precx*max(xm1,xm4) endif * #] special case m0=0, m1!=m2, m3!=m4: * #[ get dimensionless vars: * * we follow the notation of Wim & Ansgar closely * remember that for -pi we have ieps=+2 and v.v. * if ( lsmug ) then * all is not what it seems if ( nschem .ge. 3 ) then cxt = DBLE(xm0*xlam)/c2sisj(ic,ilam) else cxt = DBLE(xm0*xlam)/DBLE(c2sisj(ic,ilam)) endif else if ( dpipj(ic,inx(ilam,ic)) .eq. 0 ) then call fferr(73,ier) return endif xxt(1) = xm0*xlam/dpipj(ic,inx(ilam,ic)) endif iepst = -2 ier1 = 0 ier0 = 0 call ffxkfn(xxs,iepss,xpi(inx(i1,i4)),xm1,xm4,ier0) ier1 = max(ier0,ier1) ier0 = 0 call ffxkfn(xx2,ieps2,xpi(inx(i1,ic)),xm1,xm0,ier0) ier1 = max(ier0,ier1) ier0 = 0 call ffxkfn(xx3,ieps3,xpi(inx(i4,ic)),xm4,xm0,ier0) ier1 = max(ier0,ier1) if ( ier1 .ge. 100 ) then call ffzdbd(csom,cfac,xpi,dpipj,ilam,i1,i4,ic,ier) return endif ier = ier + ier1 * * #] get dimensionless vars: * #[ fill array: * ier1 = 0 ier0 = 0 zlg = zxfflg(xxs(1),iepss,0D0,ier) d = xxs(1)**2 if ( abs(d) .lt. xloss ) then cs(1) = 2*zlg*DBLE(dfflo1(d,ier0)) else cs(1) = 2*zlg*zxfflg(xxs(2)*xxs(3),-iepss,0D0,ier0) endif ier1 = max(ier0,ier1) ier0 = 0 if ( lsmug ) then cs(2) = -2*zlg*zfflog(cxt,iepst,czero,ier0) else cs(2) = -2*zlg*zxfflg(xxt(1),iepst,0D0,ier0) endif ier1 = max(ier0,ier1) * ipi12 = 6 * ier0 = 0 call ffzxdl(cs(3),ip,zlg,xxs(1)**2,iepss,ier0) ipi12 = ipi12 + ip ier1 = max(ier0,ier1) ier0 = 0 if ( abs(xx2(2)) .gt. xloss ) then z = zxfflg(xx2(1),ieps2,0D0,ier0) else z = dfflo1(xx2(2),ier0) endif cs(4) = z**2 ier1 = max(ier0,ier1) ier0 = 0 if ( abs(xx3(2)) .gt. xloss ) then z = zxfflg(xx3(1),ieps3,0D0,ier0) else z = dfflo1(xx3(2),ier0) endif cs(5) = z**2 ier1 = max(ier0,ier1) * is = 6 do 110 i2=-1,+1,2 do 100 i3=-1,+1,2 * ier0 = 0 call ffzxdl(cs(is),ip,zlg,xxs(1)*xx2(1)**i2*xx3(1)**i3, + 0,ier0) cs(is) = -cs(is) ipi12 = ipi12 - ip is = is + 1 ier1 = max(ier0,ier1) * ier0 = 0 if ( abs(xxs(2)) .gt. xloss ) then cs(is) = -zlg*zxfflg(xxs(1),iepss,0D0,ier0) else cs(is) = -zlg*DBLE(dfflo1(xxs(2),ier0)) endif is = is + 1 ier1 = max(ier0,ier1) * ier0 = 0 if ( abs(xx2(2)) .gt. xloss ) then cs(is) = -zlg*zxfflg(xx2(1)**i2,i2*ieps2,0D0,ier0) elseif ( i2.eq.1 ) then cs(is) = -zlg*DBLE(dfflo1(xx2(2),ier0)) else cs(is) = -zlg*DBLE(dfflo1(-xx2(2)/xx2(1),ier0)) endif is = is + 1 ier1 = max(ier0,ier1) * ier0 = 0 if ( abs(xx3(2)) .gt. xloss ) then cs(is) = -zlg*zxfflg(xx3(1)**i3,i3*ieps3,0D0,ier0) elseif ( i3.eq.1 ) then cs(is) = -zlg*DBLE(dfflo1(xx3(2),ier0)) else cs(is) = -zlg*DBLE(dfflo1(-xx3(2)/xx3(1),ier0)) endif is = is + 1 ier1 = max(ier0,ier1) * 100 continue 110 continue ier = ier + ier1 * * #] fill array: * #[ sum: * som = 0 xmax = 0 is = is - 1 do 200 i=1,is som = som + cs(i) xmax = max(xmax,absc(cs(i))) 200 continue som = som + ipi12*DBLE(pi12) * * #] sum: * #[ overall factors: * csom = som if ( lsmug ) then if ( nschem .ge. 2 ) then cfac = -DBLE(xxs(1)/((xm1*xm4*xxs(2)*xxs(3))))/ + c2sisj(ilam,ic) else cfac = -DBLE(xxs(1))/(DBLE(xm1*xm4*xxs(2)*xxs(3))* + DBLE(c2sisj(ilam,ic))) endif if ( ldot .and. abs(idot).lt.4 ) then fdel4s = 16*(xm1*xm4*dpipj(inx(ilam,ic),ic)*xxs(2)* + xxs(3)/xxs(1))**2 endif else fac = xxs(1)/(xm1*xm4*dpipj(inx(ilam,ic),ic)*xxs(2)*xxs(3)) cfac = fac if ( ldot .and. abs(idot).lt.4 ) then fdel4s = 1/(16*fac**2) endif endif * * #] overall factors: *###] ffxdbd: end *###[ ffxkfn: subroutine ffxkfn(x,ieps,xpi,xm,xmp,ier) ***#[*comment:*********************************************************** * * * Calculate the K-function in this paper: * * * * 1-sqrt(1-4*m*mp/(z-(m-mp)^2)) * * K(p^2,m,mp) = ----------------------------- * * 1+sqrt(1-4*m*mp/(z-(m-mp)^2)) * * * * and fill x(1) = -K, x(2) = 1+K, x(3) = 1-K * * ieps gives the sign of the imaginary part: -2 -> +ieps and v.v. * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ieps,ier DOUBLE PRECISION x(3),xpi,xm,xmp * * local variables * DOUBLE PRECISION wortel,xx1,xx2,xx3 * * common blocks * #include "ff.h" * * #] declarations: * #[ work: * * special case * if ( xpi.eq.0 .and. xm.eq.xmp ) then x(1) = 1 x(2) = 0 x(3) = 2 return endif * * normal case * xx1 = xpi - (xm-xmp)**2 xx2 = 1 - 4*xm*xmp/xx1 if ( xx2 .lt. 0 ) then ier = ier + 100 return endif wortel = sqrt(xx2) xx3 = 1/(1+wortel) x(1) = -4*xm*xmp*xx3**2/xx1 x(2) = 2*xx3 x(3) = 2*wortel*xx3 * ieps = -2 * * #] work: *###] ffxkfn: end *###[ ffzdbd: subroutine ffzdbd(csom,cfac,xpi,dpipj,ilam,i1,i4,ic,ier) ***#[*comment:*********************************************************** * * * The IR divergent fourpoint function with real masses * * according to Beenakker & Denner, Nucl.Phys.B338(1990)349. * * but in the case at least one of the roots is complex * * * * Input: xpi(13) real momenta^2 * * dpipj(10,13) real xpi(i)-xpi(j) * * ilam integer position of m=0 * * i1,i4 integer position of other 2 IR masses * * ic integer position of complex mass * * lambda real cutoff to use instead of lam^2 * * * * Output: csom,cfac complex D0 = csom*cfac * * ier integer number of digits lost * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ilam,i1,i4,ic,ier DOUBLE COMPLEX csom,cfac DOUBLE PRECISION xpi(13),dpipj(10,13) * * local variables * integer ier0,ier1,ipi12,ip,init,is,i2,i3,i,iepst,iepss,ieps2, + ieps3 DOUBLE PRECISION absc,xmax DOUBLE PRECISION xm0,xm1,xm4,xlam,xxt(1) DOUBLE COMPLEX c,cs(21),z,zlg,som,cxt,cxs(3),cx2(3),cx3(3) DOUBLE COMPLEX zxfflg,zfflog,zfflo1 external zxfflg,zfflog,zfflo1 save init * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * data * data init /0/ * * #] declarations: * #[ check input: * if ( init .eq. 0 ) then init = 1 print *,'ffzdbd: using IR cutoff lambda^2 = ',lambda endif * * #] check input: * #[ preliminaries: * xm0 = sqrt(xpi(ic)) xm1 = sqrt(xpi(i1)) xm4 = sqrt(xpi(i4)) xlam = sqrt(lambda) * * #] preliminaries: * #[ get dimensionless vars: * * we follow the notation of Wim & Ansgar closely * remember that for -pi we have ieps=+2 and v.v. * if ( lsmug ) then * all is not what it seems if ( nschem .ge. 3 ) then cxt = DBLE(xm0*xlam)/c2sisj(ic,ilam) else cxt = DBLE(xm0*xlam)/DBLE(c2sisj(ic,ilam)) endif else xxt(1) = xm0*xlam/dpipj(ic,inx(ilam,ic)) endif iepst = -2 ier1 = 0 ier0 = 0 call ffzkfn(cxs,iepss,xpi(inx(i1,i4)),xm1,xm4) ier1 = max(ier0,ier1) ier0 = 0 call ffzkfn(cx2,ieps2,xpi(inx(i1,ic)),xm1,xm0) ier1 = max(ier0,ier1) ier0 = 0 call ffzkfn(cx3,ieps3,xpi(inx(i4,ic)),xm4,xm0) ier1 = max(ier0,ier1) ier = ier + ier1 * * #] get dimensionless vars: * #[ fill array: * ier1 = 0 ier0 = 0 zlg = zfflog(cxs(1),iepss,czero,ier) c = cxs(1)**2 if ( absc(c) .lt. xloss ) then cs(1) = 2*zlg*zfflo1(c,ier0) else cs(1) = 2*zlg*zfflog(cxs(2)*cxs(3),-iepss,czero,ier0) endif ier1 = max(ier0,ier1) ier0 = 0 if ( lsmug ) then cs(2) = -2*zlg*zfflog(cxt,iepst,czero,ier0) else cs(2) = -2*zlg*zxfflg(xxt(1),iepst,0D0,ier0) endif ier1 = max(ier0,ier1) * ipi12 = 6 * ier0 = 0 call ffzzdl(cs(3),ip,zlg,cxs(1)**2,ier0) ipi12 = ipi12 + ip ier1 = max(ier0,ier1) ier0 = 0 z = zfflog(cx2(1),ieps2,czero,ier0) cs(4) = z**2 ier1 = max(ier0,ier1) ier0 = 0 z = zfflog(cx3(1),ieps3,czero,ier0) cs(5) = z**2 ier1 = max(ier0,ier1) * is = 6 do 110 i2=-1,+1,2 do 100 i3=-1,+1,2 * ier0 = 0 call ffzzdl(cs(is),ip,zlg,cxs(1)*cx2(1)**i2*cx3(1)**i3, + ier0) cs(is) = -cs(is) ipi12 = ipi12 - ip is = is + 1 ier1 = max(ier0,ier1) * ier0 = 0 cs(is) = -zlg*zfflog(cxs(1),iepss,czero,ier0) is = is + 1 ier1 = max(ier0,ier1) * ier0 = 0 cs(is) = -zlg*zfflog(cx2(1)**i2,i2*ieps2,czero,ier0) is = is + 1 ier1 = max(ier0,ier1) * ier0 = 0 cs(is) = -zlg*zfflog(cx3(1)**i3,i3*ieps3,czero,ier0) is = is + 1 ier1 = max(ier0,ier1) * 100 continue 110 continue ier = ier + ier1 * * #] fill array: * #[ sum: * som = 0 xmax = 0 is = is - 1 do 200 i=1,is som = som + cs(i) xmax = max(xmax,absc(cs(i))) 200 continue som = som + ipi12*DBLE(pi12) * * #] sum: * #[ overall factors: * csom = som if ( lsmug ) then if ( nschem .ge. 2 ) then cfac = -cxs(1)/(DBLE(xm1*xm4)*cxs(2)*cxs(3)* + c2sisj(ilam,ic)) else cfac = -cxs(1)/(DBLE(xm1*xm4)*cxs(2)*cxs(3)* + DBLE(c2sisj(ilam,ic))) endif if ( ldot .and. abs(idot).lt.4 ) then c = 16*(DBLE(xm1*xm4*dpipj(inx(ilam,ic),ic))* + cxs(2)*cxs(3)/cxs(1))**2 fdel4s = DBLE(c) if ( xloss*DIMAG(c) .gt. precc*DBLE(c) ) then print *,'ffzdbd: error: Del4s is not real ',c endif endif else cfac = cxs(1)/(DBLE(xm1*xm4*dpipj(inx(ilam,ic),ic))* + cxs(2)*cxs(3)) if ( ldot .and. abs(idot).lt.4 ) then fdel4s = 1/(16*DBLE(cfac)**2) if ( xloss*abs(DIMAG(cfac)) .gt. precc*abs(DBLE(cfac)) ) + then print *,'ffzdbd: error: fac is not real: ',cfac endif endif endif * * #] overall factors: *###] ffzdbd: end *###[ ffzkfn: subroutine ffzkfn(cx,ieps,xpi,xm,xmp) ***#[*comment:*********************************************************** * * * Calculate the K-function in this paper: * * * * 1-sqrt(1-4*m*mp/(z-(m-mp)^2)) * * K(p^2,m,mp) = ----------------------------- * * 1+sqrt(1-4*m*mp/(z-(m-mp)^2)) * * * * and fill x(1) = -K, x(2) = 1+K, x(3) = 1-K * * the roots are allowed to be imaginary * * ieps gives the sign of the imaginary part: -2 -> +ieps and v.v. * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ieps DOUBLE PRECISION xpi,xm,xmp DOUBLE COMPLEX cx(3) * * local variables * DOUBLE PRECISION xx1,xx2 DOUBLE COMPLEX wortel,cx3 * * common blocks * #include "ff.h" * * #] declarations: * #[ work: * xx1 = xpi - (xm-xmp)**2 xx2 = 1 - 4*xm*xmp/xx1 if ( xx2 .ge. 0 ) then wortel = sqrt(xx2) else wortel = DCMPLX(DBLE(0),DBLE(sqrt(-xx2))) endif cx3 = 1/(1+wortel) if ( xx1.eq.0 ) then print *, 'ffzkfn: error: xx1=0, contact author' cx(1) = 1/xclogm else cx(1) = DBLE(-4*xm*xmp/xx1)*cx3**2 endif cx(2) = 2*cx3 cx(3) = 2*wortel*cx3 * ieps = -2 * * #] work: *###] ffzkfn: end herwig++-2.6.0.orig/Looptools/D/ffxd0m0.F0000644000175000017500000000332411754474774020531 0ustar sylvestresylvestre#include "externals.h" *###[ ffxd0m0: subroutine ffxd0m0(cd0, xpi, ier) ***#[*comment:*********************************************************** * * * D0 function for 4 masses = 0 * * input parameters as for ffxd0 * * * * algorithm taken from * * Denner, Nierste, Scharf, Nucl. Phys. B367 (1991) 637-656 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE PRECISION xpi(13) DOUBLE COMPLEX cd0 integer ier DOUBLE PRECISION a, b, c, d DOUBLE COMPLEX x(2), z(2), k1, k2, t1, t2 DOUBLE COMPLEX dl1, dl2, zl, ww, tlg DOUBLE COMPLEX k12, k23, k34, k14, k13, k24 integer j, ipi1(2), ipi2(2), nffeta #include "ff.h" a = xpi(10)*xpi(7) b = xpi(9)*xpi(10) + xpi(5)*xpi(7) - xpi(8)*xpi(6) c = xpi(5)*xpi(9) d = -xpi(6) k1 = DCMPLX(c, precx*d) k2 = sqrt(b*b - 4*a*k1) x(1) = (-b - k2)/2D0/a x(2) = (-b + k2)/2D0/a if( abs(x(1)) .gt. abs(x(2)) ) then x(2) = k1/(a*x(1)) else x(1) = k1/(a*x(2)) endif k12 = DCMPLX(-xpi(5), -precx) k13 = DCMPLX(-xpi(9), -precx) k23 = DCMPLX(-xpi(6), -precx) k34 = DCMPLX(-xpi(7), -precx) k14 = DCMPLX(-xpi(8), -precx) k24 = DCMPLX(-xpi(10), -precx) k1 = k34/k13 k2 = k24/k12 ww = log(k12) + log(k13) - log(k14) - log(k23) do 100 j = 1, 2 t1 = 1 + k1*x(j) t2 = 1 + k2*x(j) call ffzzdl(dl1, ipi1(j), zl, t1, ier) call ffzzdl(dl2, ipi2(j), zl, t2, ier) tlg = log(-x(j)) z(j) = tlg*(ww - .5D0*tlg) - dl1 - dl2 - + c2ipi*( nffeta(-x(j), k1, ier)*log(t1) + + nffeta(-x(j), k2, ier)*log(t2) ) 100 continue ww = z(2) - z(1) + + (ipi1(1) + ipi2(1) - ipi1(2) - ipi2(2))*pi12 cd0 = ww/(a*(x(1) - x(2))) end herwig++-2.6.0.orig/Looptools/D/ffTn.F0000644000175000017500000003010611754474774020160 0ustar sylvestresylvestre* ffTn.F * calculate T(ra, rb, rc, rg, rh; cd, ce, cf, cj) defined as: * T = \int_0^1 dx \int_0^x dy * 1/((rg x + rh y + cj) * (ra x^2 + rb y^2 + rc x y + cd x + ce y + cf + I signf)) * with signf = -eps, * {ra,rb,rc,rg,rh} are real, {cd,ce,cf,cj} are complex. * important: variables "signX" is the sign of im(X) in case X becomes real. * this file is part of LoopTools * last modified 8 Dec 10 th * Written by Le Duc Ninh, MPI, Munich (2008). * Spence, log and eta functions are taken from FF. * Oct 27 2008 #include "defs.h" double complex function ffTn(ra, rb, rc, rgx, rhx, & cd, ce, cf, signf, cjx, signj, key, ier) implicit none double precision ra, rb, rc, rgx, rhx, signf, signj double complex cd, ce, cf, cjx integer key, ier #include "ff.h" double complex cj, crdetq4, crdetq42, cy(2), cy2(2) double complex crdisc, cbeta1, cbeta2, cbeta double complex ctv, ctemp, cresd, cyij double complex cbj(6), ccj(6), cbk(6), cck(6) double precision rg, rh, reps double precision sj, scj, sy(2), sy2(2), stv, syij double precision rminuv, rminuv2, raj(6) integer i, j, ny, ny2, chketa(2), chketa2(2) double complex ffT_lin, ffS2, ffS3n, zfflog integer nffet1 external ffT_lin, ffS2, ffS3n, zfflog, nffet1 ier = 0 * calculate ieps and the sign of im(J) reps = DIMAG(cf) if( reps .eq. 0 ) reps = signf reps = sign(1D0, -reps) sj = DIMAG(cjx) if( sj .eq. 0 ) sj = signj sj = sign(1D0, sj*reps) * change the sign of G,H,J * sj = 1 or -1 rg = -sj*rgx rh = -sj*rhx cj = -sj*cjx if( abs(rb) .lt. precx ) then ffTn = sj*ffT_lin(ra, rc, rg, rh, cd, ce, cf, cj, & signf, reps, ier) return endif if( abs(ra) .lt. precx ) then * change the integration variables to get rb = 0 as above ffTn = sj*ffT_lin(rb + rc, -rc, -rg - rh, rg, & -2*(rb + rc) - cd - ce, & rc + cd, & rb + rc + cd + ce + cf, & rg + rh + cj, & signf, reps, ier) return endif * calculate beta * beta is one root of: B beta^2 + C beta + A = 0 * we do not need the ieps for beta crdisc = sqrt(DCMPLX(rc**2 - 4*rb*ra)) cbeta1 = -.5D0/rb*(rc + crdisc) cbeta2 = -.5D0/rb*(rc - crdisc) if( abs(cbeta1) .gt. abs(cbeta2) ) then cbeta2 = ra/(rb*cbeta1) else cbeta1 = cbeta2 cbeta2 = ra/(rb*cbeta2) endif * Ninh added: 14 Aug 2009 * be careful with this approximation, IMG can be wrong if( abs(1 - cbeta1) .lt. precx ) cbeta1 = 1 if( abs(1 - cbeta2) .lt. precx ) cbeta2 = 1 * which one for beta? if( abs(cbeta1) .gt. abs(cbeta2) ) then ctemp = cbeta1 cbeta1 = cbeta2 cbeta2 = ctemp endif * look at the prefactor 1/(S V - T U) * eq. (S V - T U) = K y^2 + L y + N == 0 * to decide which beta is the best. * The two roots are calculated. * Leading Landau Sing. can occur if y1 = y2 and eps -> 0 * the ieps is needed for the roots cbeta = cbeta1 if( abs(cbeta2 - 1) .lt. precx ) then cbeta = cbeta2 cbeta2 = cbeta1 endif call ffwbeta(rb, rc, rg, rh, cd, ce, cf, cj, signf, & cbeta, crdetq4, ny, cy, sy, chketa, rminuv, key, ier) * to check whether there is numerical cancellation * at the border of the triangle if( rminuv .lt. 1D-10 ) then call ffwbeta(rb, rc, rg, rh, cd, ce, cf, cj, signf, & cbeta2, crdetq42, ny2, cy2, sy2, chketa2, rminuv2, & key, ier) if( rminuv2 .lt. rminuv ) then call ffwarn(254, ier, 1D0, 0D0) else * choose the beta2-parameters cbeta = cbeta2 crdetq4 = crdetq42 ny = ny2 do i = 1, ny sy(i) = sy2(i) cy(i) = cy2(i) chketa(i) = chketa2(i) enddo endif endif * the coefficients of the 6 log arguments raj(1) = 0 raj(2) = 0 raj(3) = 0 raj(4) = rb raj(5) = ra + rb + rc raj(6) = ra cbj(1) = rh cbj(2) = rg + rh cbj(3) = rg cbj(4) = rc + ce cbj(5) = ce + cd cbj(6) = cd ccj(1) = rg + cj ccj(2) = cj ccj(3) = cj ccj(4) = ra + cd + cf ccj(5) = cf ccj(6) = cf * the ieps for the log arguments scj = -reps * the cck(6)-coefficients before the logs cck(1) = 1 cck(2) = -1 + cbeta cck(3) = -cbeta cck(4) = -1 cck(5) = 1 - cbeta cck(6) = cbeta if( ny .eq. 0 ) then * no extra term is needed ffTn = -sj/crdetq4*( & cck(1)*ffS2(raj(1), cbj(1), ccj(1), scj, ier) + & cck(2)*ffS2(raj(2), cbj(2), ccj(2), scj, ier) + & cck(3)*ffS2(raj(3), cbj(3), ccj(3), scj, ier) + & cck(4)*ffS2(raj(4), cbj(4), ccj(4), scj, ier) + & cck(5)*ffS2(raj(5), cbj(5), ccj(5), scj, ier) + & cck(6)*ffS2(raj(6), cbj(6), ccj(6), scj, ier) ) return endif * cbk(6)-coefficients of cj/(aj y - bj - yi) cbk(1) = cbeta cbk(2) = 0 cbk(3) = 0 cbk(4) = cbeta cbk(5) = 0 cbk(6) = 0 ffTn = 0 do i = 1, ny cresd = 0 if( chketa(i) .ne. 0 ) then * extra term needed * calculate the residue * the denominator was checked above in ffS3n therefore the (V/T)_pole * should be safe now: ctv = (rh*cy(i) + cj)/(cy(i)*(rb*cy(i) + ce) + cf) ctemp = (rg + cbeta*rh)/ & ((rc + 2*cbeta*rb)*cy(i) + cd + ce*cbeta) if( abs(DIMAG(ctemp)) .gt. abs(DIMAG(ctv)) ) ctv = ctemp * if im(ctv) = 0 then take the ieps from T/V stv = -signf*DBLE(rh*cy(i) + cj) if( stv .eq. 0 ) stv = -signf ctv = zfflog(ctv, 1, DCMPLX(stv), ier) if( abs(ctv) .gt. precx ) then do j = 1, 3 if( abs(cck(j)) .gt. precx ) then cyij = -Sgn(j)*(cy(i) + cbk(j))/cck(j) syij = -Sgn(j)*sy(i)*DBLE(cck(j)) if( syij .eq. 0 ) syij = sy(i) cresd = cresd - Sgn(i+j)* & zfflog((cyij - 1)/cyij, 1, DCMPLX(syij), ier) endif enddo cresd = cresd*ctv endif endif * calculate the main part do j = 1, 6 if( abs(cck(j)) .gt. precx ) then cyij = -Sgn(j)*(cy(i) + cbk(j))/cck(j) syij = -Sgn(j)*sy(i)*DBLE(cck(j)) if( syij .eq. 0 ) syij = sy(i) cresd = cresd + Sgn(i+j)* & ffS3n(cyij, syij, raj(j), cbj(j), ccj(j), scj, ier) endif enddo ffTn = ffTn + cresd enddo * the prefactor of Landau det. ffTn = sj/crdetq4*ffTn end ************************************************************************ * calculate the roots of the eq. ck x^2 + cl x + cn = 0 * and check if the roots are inside the triangle [0, -cbeta, 1 - cbeta] * the ieps part for the roots is needed. * Nov 17 2008 * input: rb, rc, rg, rh, cd, ce, cf, cj, signf, cbeta * output: ru, rv, ny, cy, signy, ck, cl, cn subroutine ffwbeta(rb, rc, rg, rh, cd, ce, cf, cj, signf, & cbeta, crdetq4, ny, cy, signy, chketa, rminuv, key, ier) implicit none double precision rb, rc, rg, rh, signf, signy(2), rminuv double complex cd, ce, cf, cj, cbeta, cy(2), crdetq4 integer ny, chketa(2), key, ier #include "lt.h" double complex ck, cl, cn double complex cab, cac, cay double precision dotyc, dotyb, dotbc, dotbb, dotcc double precision sn, ru, rv, abc2 integer i chketa(1) = 0 chketa(2) = 0 rminuv = 1D300 ck = rb*rg - rh*(rc + cbeta*rb) cl = rg*ce - rh*cd - cj*(rc + 2*rb*cbeta) cn = (rg + rh*cbeta)*cf - cj*(cd + ce*cbeta) * the ieps for cn sn = signf*DBLE(rg + rh*cbeta) if( sn .eq. 0 ) sn = signf if( abs(ck) .lt. precx ) then if( abs(cl) .lt. precx ) then * the case ny = 0, (S V - T U) = N = constant if( abs(cn) .lt. precx ) then call fferr(104, ier) cbeta = 0 return endif ny = 0 crdetq4 = cn else * the case ny = 1, (S V - T U) = L y + N ny = 1 cy(1) = -cn/cl * ieps for this pole signy(1) = -sn*DBLE(cl) if( signy(1) .eq. 0 ) signy(1) = signf crdetq4 = cl endif else * the case ny = 2, (S V - T U) = K y^2 + L y + N ny = 2 crdetq4 = sqrt(cl**2 - 4*ck*cn) cy(1) = -.5D0/ck*(cl + crdetq4) cy(2) = -.5D0/ck*(cl - crdetq4) if( abs(cy(1)) .gt. abs(cy(2)) ) then cy(2) = cn/(ck*cy(1)) else cy(1) = cn/(ck*cy(2)) endif * calculate the sign of img(cy1) and img(cy2) which are related to ieps signy(1) = sn*DBLE(crdetq4) if( signy(1) .eq. 0 ) signy(1) = signf signy(2) = -signy(1) endif if( ny .eq. 0 .or. abs(DIMAG(cbeta)) .lt. precx ) return if( key .eq. 1 ) then chketa(1) = 1 chketa(2) = 1 else * check if the poles are inside the triangle [0, -cbeta, 1 - cbeta] * using the barycentric technique abc2 = 1/DIMAG(cbeta)**2 do i = 1, ny cay = cy(i) + cbeta cac = cbeta cab = 1 dotyc = DBLE(cay)*DBLE(cac) + DIMAG(cay)*DIMAG(cac) dotyb = DBLE(cay)*DBLE(cab) + DIMAG(cay)*DIMAG(cab) dotbc = DBLE(cab)*DBLE(cac) + DIMAG(cab)*DIMAG(cac) dotcc = DBLE(cac)*DBLE(cac) + DIMAG(cac)*DIMAG(cac) dotbb = 1 ru = (dotyc*dotbb - dotbc*dotyb)*abc2 rv = (dotcc*dotyb - dotyc*dotbc)*abc2 if( ru .ge. 0 .and. rv .ge. 0 .and. ru + rv .le. 1 ) & chketa(i) = 1 rminuv = min(rminuv, abs(ru), abs(rv)) enddo endif end ************************************************************************ * calculate T(ra, rc, rg, rh; cd, ce, cf, cj) defined as: * T = \int_0^1 dx \int_0^x dy * 1/( (rg x + rh y + cj) * (ra x^2 + rc x y + cd x + ce y + cf + I signf) ) * with signf = -eps, * {ra, rc, rg, rh} are real, {cd, ce, cf, cj} are complex. * important: variables "signX" is the sign of img(X) in case X becomes real. * No extra term is needed. * Written by Le Duc Ninh, MPI, Munich (2008). * Spence, log and eta functions are taken from FF. * Nov 10 2008 double complex function ffT_lin(ra, rc, rg, rh, & cd, ce, cf, cj, signf, reps, ier) implicit none double precision ra, rc, rg, rh, signf, reps double complex cd, ce, cf, cj integer ier #include "ff.h" double complex ck, cl, cn, cy(2), crdetq4 double complex cbj(4), ccj(4) double complex ffS3nAll1, ffS3nAll2 double precision sn, scj, sy(2), raj(4) double complex ffS2, ffS3n external ffS2, ffS3n * the coefficients of the 4 log arguments raj(1) = rc + ra raj(2) = 0 raj(3) = 0 raj(4) = ra cbj(1) = ce + cd cbj(2) = rh + rg cbj(3) = rg cbj(4) = cd ccj(1) = cf ccj(2) = cj ccj(3) = cj ccj(4) = cf * the ieps is the same for all scj = -reps * the prefactor 1/(S V - T U) * eq. (S V - T U) = K y^2 + L y + N = 0 * Leading Landau Sing. can occur if y1 == y2 and eps -> 0 * the ieps is needed for the roots ck = rh*ra - rc*rg cl = rh*cd - rc*cj - ce*rg cn = rh*cf - ce*cj * the ieps for cn sn = -reps*rh if( sn .eq. 0 ) sn = -reps if( abs(ck) .lt. precx ) then if( abs(cl) .lt. precx ) then if( abs(cn) .lt. precx ) then call fferr(105, ier) ffT_lin = 0 return endif * the case ny = 0, (S V - T U) = N = constant ffT_lin = 1/cn*( & ffS2(raj(1), cbj(1), ccj(1), scj, ier) - & ffS2(raj(2), cbj(2), ccj(2), scj, ier) + & ffS2(raj(3), cbj(3), ccj(3), scj, ier) - & ffS2(raj(4), cbj(4), ccj(4), scj, ier) ) return endif * the case ny = 1, (S V - T U) = L y + N cy(1) = -cn/cl * ieps for this pole sy(1) = -sn*DBLE(cl) if( sy(1) .eq. 0 ) sy(1) = signf ffS3nAll1 = & ffS3n(cy(1), sy(1), raj(1), cbj(1), ccj(1), scj, ier) - & ffS3n(cy(1), sy(1), raj(2), cbj(2), ccj(2), scj, ier) + & ffS3n(cy(1), sy(1), raj(3), cbj(3), ccj(3), scj, ier) - & ffS3n(cy(1), sy(1), raj(4), cbj(4), ccj(4), scj, ier) ffT_lin = -ffS3nAll1/cl return endif * the case ny = 2, (S V - T U) = K y^2 + L y + N crdetq4 = sqrt(cl**2 - 4*ck*cn) cy(1) = -.5D0/ck*(cl + crdetq4) cy(2) = -.5D0/ck*(cl - crdetq4) if( abs(cy(1)) .gt. abs(cy(2)) ) then cy(2) = cn/(ck*cy(1)) else cy(1) = cn/(ck*cy(2)) endif * calculate the sign of im(cy1) and im(cy2) which are related to ieps sy(1) = sn*DBLE(crdetq4) if( sy(1) .eq. 0 ) sy(1) = signf sy(2) = -sy(1) ffS3nAll1 = & ffS3n(cy(1), sy(1), raj(1), cbj(1), ccj(1), scj, ier) - & ffS3n(cy(1), sy(1), raj(2), cbj(2), ccj(2), scj, ier) + & ffS3n(cy(1), sy(1), raj(3), cbj(3), ccj(3), scj, ier) - & ffS3n(cy(1), sy(1), raj(4), cbj(4), ccj(4), scj, ier) ffS3nAll2 = & ffS3n(cy(2), sy(2), raj(1), cbj(1), ccj(1), scj, ier) - & ffS3n(cy(2), sy(2), raj(2), cbj(2), ccj(2), scj, ier) + & ffS3n(cy(2), sy(2), raj(3), cbj(3), ccj(3), scj, ier) - & ffS3n(cy(2), sy(2), raj(4), cbj(4), ccj(4), scj, ier) ffT_lin = (ffS3nAll2 - ffS3nAll1)/crdetq4 end herwig++-2.6.0.orig/Looptools/D/ffT13.F0000644000175000017500000000657511754474774020163 0ustar sylvestresylvestre* ffT13.F * part of the complex four-point function * this file is part of LoopTools * last modified 8 Dec 10 th #include "externals.h" * T13 = \int_0^1 dx \int_0^x dy * y/( (rg y^2 + rh xy + cd x + cj y + cf + I signf) * * (ra y^2 + rc xy + cd x + ce y + cf + I signf) ) * with signf = -eps * variables "signX" is the sign of im(X) in case X becomes real. * No extra term is needed. * Nov 11 2008 double complex function ffT13(ra, rc, rg, rh, & cd, ce, cf, signf, cj, ier) implicit none double precision ra, rc, rg, rh, signf double complex cd, ce, cf, cj integer ier #include "ff.h" double complex ck, cl, cn, cy(2), crdetq4 double complex cbj(4), ccj(4) double complex ffS3nAll1, ffS3nAll2 double precision sn, scj, sy(2), raj(4) double complex ffS2, ffS3n external ffS2, ffS3n * the coefficients of the 4 log arguments raj(1) = ra raj(2) = rg raj(3) = rg + rh raj(4) = ra + rc cbj(1) = ce + rc cbj(2) = cj + rh cbj(3) = cd + cj cbj(4) = ce + cd ccj(1) = cf + cd ccj(2) = cf + cd ccj(3) = cf ccj(4) = cf * the ieps is the same for all scj = signf * the prefactor 1/(S V - T U) * eq. (S V - T U) = K y^2 + L y + N == 0 * Leading Landau singularity can occur if y1 = y2 and eps -> 0 * the ieps is needed for the roots ck = rh*ra - rc*rg cl = (ra - rg)*cd + rh*ce - rc*cj cn = (rh - rc)*cf + cd*(ce - cj) * the ieps for cn sn = signf*(rh - rc) * if (rh - rc) = 0 then we are at the boundary of phase space * and sn is irrelevant if( abs(ck) .lt. precx ) then if( abs(cl) .lt. precx ) then if( abs(cn) .lt. precx ) then call fferr(99, ier) ffT13 = 0 return endif * the case ny = 0, (SV - TU) = N = constant * no extra term is needed ffT13 = -1/cn*( & ffS2(raj(1), cbj(1), ccj(1), scj, ier) - & ffS2(raj(2), cbj(2), ccj(2), scj, ier) + & ffS2(raj(3), cbj(3), ccj(3), scj, ier) - & ffS2(raj(4), cbj(4), ccj(4), scj, ier) ) return endif * the case ny = 1, (S V - T U) = L y + N cy(1) = -cn/cl * ieps for this root sy(1) = -sn*DBLE(cl) if( sy(1) .eq. 0 ) sy(1) = signf ffS3nAll1 = & ffS3n(cy(1), sy(1), raj(1), cbj(1), ccj(1), scj, ier) - & ffS3n(cy(1), sy(1), raj(2), cbj(2), ccj(2), scj, ier) + & ffS3n(cy(1), sy(1), raj(3), cbj(3), ccj(3), scj, ier) - & ffS3n(cy(1), sy(1), raj(4), cbj(4), ccj(4), scj, ier) ffT13 = -ffS3nAll1/cl return endif * the case ny = 2, (SV - TU) = K y^2 + L y + N crdetq4 = sqrt(cl**2 - 4*ck*cn) cy(1) = -.5D0/ck*(cl + crdetq4) cy(2) = -.5D0/ck*(cl - crdetq4) if( abs(cy(1)) .gt. abs(cy(2)) ) then cy(2) = cn/(ck*cy(1)) else cy(1) = cn/(ck*cy(2)) endif * calculate the signs of img(cy1) and img(cy2) which are related to ieps sy(1) = sn*DBLE(crdetq4) if( sy(1) .eq. 0 ) sy(1) = signf sy(2) = -sy(1) ffS3nAll1 = & ffS3n(cy(1), sy(1), raj(1), cbj(1), ccj(1), scj, ier) - & ffS3n(cy(1), sy(1), raj(2), cbj(2), ccj(2), scj, ier) + & ffS3n(cy(1), sy(1), raj(3), cbj(3), ccj(3), scj, ier) - & ffS3n(cy(1), sy(1), raj(4), cbj(4), ccj(4), scj, ier) ffS3nAll2 = & ffS3n(cy(2), sy(2), raj(1), cbj(1), ccj(1), scj, ier) - & ffS3n(cy(2), sy(2), raj(2), cbj(2), ccj(2), scj, ier) + & ffS3n(cy(2), sy(2), raj(3), cbj(3), ccj(3), scj, ier) - & ffS3n(cy(2), sy(2), raj(4), cbj(4), ccj(4), scj, ier) ffT13 = (ffS3nAll1 - ffS3nAll2)/crdetq4 end herwig++-2.6.0.orig/Looptools/D/ffS3n.F0000644000175000017500000000532011754474774020242 0ustar sylvestresylvestre* ffS3n.F * calculate S3n = \int_0^1 dy (ra y^2 + cb y + cc + I signc)/(y - cy) * where ra can be zero. * input: cy=y0, ra=a (real), cb=b, cc=c * signc=sign(im(c)), signy=sign(im(cy)) in case they are real. * cza and czb are the 2 roots of: a y^2 + b y + c == 0 * remarks: ieps is needed for cza, czb and y0. * this file is part of LoopTools * last modified 8 Dec 10 th * Written by Le Duc Ninh, MPI, Munich (2008). * Spence, log and eta functions are taken from FF. * Oct 27 2008 #include "externals.h" double complex function ffS3n(cy, signy, ra, cb, cc, signc, & ier) implicit none double precision ra, signy, signc double complex cy, cb, cc integer ier #include "ff.h" double complex cl, crdisc, cza, czb double precision sza, szb, sy1, sy2, sc double complex ffRn, zfflog integer nffet1 external ffRn, zfflog, nffet1 * check for end-point sing. if( abs(cy) .lt. precx .or. abs(cy - 1) .lt. precx ) then call fferr(90, ier) ffS3n = 0 return endif cl = zfflog((cy - 1)/cy, 1, DCMPLX(signy), ier) sc = DIMAG(cc) if( sc .eq. 0 ) sc = signc if( abs(ra) .lt. precx ) then if( abs(cb) .lt. precx ) then * 0 roots: if( abs(cc) .lt. precx ) then call fferr(91, ier) ffS3n = 0 return endif ffS3n = cl*zfflog(cc, 1, DCMPLX(signc), ier) return endif * 1 root: * eq.: b y + c == 0 cza = -cc/cb sza = -signc*DBLE(cb) if( sza .eq. 0 ) sza = -signc ffS3n = cl*zfflog(cb, 1, DCMPLX(signc), ier) + & ffRn(cy, signy, cza, sza, ier) if( abs(DIMAG(cb)) .gt. precx ) then szb = DIMAG(cza) if( szb .eq. 0 ) szb = sza ffS3n = ffS3n + cl*c2ipi* & nffet1(cb, DCMPLX(0D0, -szb), DCMPLX(0D0, sc), ier) endif return endif * 2 roots: cza = y1, czb = y2 * eq.: y**2 + (b/a) y + (c/a) = 0 * the ieps is irrelevant here since we take into account * the contributions of both roots *** Ninh changed: 14 Aug 2009 crdisc = sqrt(cb**2/ra**2 - 4*cc/ra) cza = -.5D0*(cb/ra + crdisc) czb = -.5D0*(cb/ra - crdisc) if( abs(cza) .gt. abs(czb) ) then czb = cc/(ra*cza) else if( abs(czb) .gt. 1D-13 ) then cza = cc/(ra*czb) endif * calculate the sign of im(cza) and im(czb) which are related to ieps sza = sc/ra if( abs(DBLE(crdisc)) .gt. precx ) sza = sza/DBLE(crdisc) szb = -sza sy1 = DIMAG(cza) if( sy1 .eq. 0 ) sy1 = sza sy2 = DIMAG(czb) if( sy2 .eq. 0 ) sy2 = szb * calculate the log, etas, and the 2 R-functions * ieps=1 to choose the cut along the real axis ffS3n = & cl*( zfflog(DCMPLX(ra), 1, DCMPLX(sc), ier) + & c2ipi*nffet1(DCMPLX(0D0, -sy1), DCMPLX(0D0, -sy2), & DCMPLX(0D0, sc/ra), ier) ) + & ffRn(cy, signy, cza, sza, ier) + & ffRn(cy, signy, czb, szb, ier) end herwig++-2.6.0.orig/Looptools/D/Dget.F0000644000175000017500000003061111754474774020147 0ustar sylvestresylvestre* Dget.F * retrieve the four-point tensor coefficients * this file is part of LoopTools * improvements by M. Rauch * last modified 28 Sep 10 th #include "defs.h" integer function XDget(p1, p2, p3, p4, p1p2, p2p3, & m1, m2, m3, m4) implicit none DVAR p1, p2, p3, p4, p1p2, p2p3 DVAR m1, m2, m3, m4 #include "lt.h" integer cachelookup external cachelookup, XDcoeff DVAR para(Pdd) para(1) = p1 para(2) = p2 para(3) = p3 para(4) = p4 para(5) = p1p2 para(6) = p2p3 para(7) = m1 if( abs(para(7)) .lt. minmass ) para(7) = 0 para(8) = m2 if( abs(para(8)) .lt. minmass ) para(8) = 0 para(9) = m3 if( abs(para(9)) .lt. minmass ) para(9) = 0 para(10) = m4 if( abs(para(10)) .lt. minmass ) para(10) = 0 XDget = cachelookup(para, Dval(1,0), XDcoeff, RC*Pdd, Ndd) end ************************************************************************ double complex function XD0i(i, p1, p2, p3, p4, p1p2, p2p3, & m1, m2, m3, m4) implicit none integer i DVAR p1, p2, p3, p4, p1p2, p2p3 DVAR m1, m2, m3, m4 #include "lt.h" integer XDget external XDget integer b b = XDget(p1, p2, p3, p4, p1p2, p2p3, m1, m2, m3, m4) XD0i = Dval(i,b) end ************************************************************************ subroutine XDcoeff(para, D, ldpara) implicit none integer ldpara DVAR para(ldpara,Pdd) double complex D(Ndd) #include "lt.h" integer XCget double complex XD0 external XCget, XD0 DVAR p1, p2, p3, p4, p1p2, p2p3, m1, m2, m3, m4 DVAR f1, f2, f3 QVAR G(3,3) double complex c0sum, c1sum, c2sum, csum double complex c00sum, c11sum, c12sum, c22sum double complex in(3) integer C234, C134, C124, C123 logical dump #ifdef SOLVE_EIGEN QVAR Ginv(3,3) #define SOLVE_SETUP XInverse(3, G,3, Ginv,3) #define SOLVE(b) XSolve(3, G,3, Ginv,3, b) #else integer perm(3) #define IN(i) in(perm(i)) #define SOLVE_SETUP XDecomp(3, G,3, perm) #define SOLVE(b) XSolve(3, G,3, b) #endif #ifdef COMPLEXPARA if( abs(DIMAG(para(1,1))) + & abs(DIMAG(para(1,2))) + & abs(DIMAG(para(1,3))) + & abs(DIMAG(para(1,4))) + & abs(DIMAG(para(1,5))) + & abs(DIMAG(para(1,6))) .gt. 0 ) & print *, "Warning: complex momenta not implemented" if( abs(DIMAG(para(1,7))) + & abs(DIMAG(para(1,8))) + & abs(DIMAG(para(1,9))) + & abs(DIMAG(para(1,10))) .eq. 0 ) then call Dcoeff(para, D, 2) return endif #endif p1 = para(1,1) p2 = para(1,2) p3 = para(1,3) p4 = para(1,4) p1p2 = para(1,5) p2p3 = para(1,6) m1 = para(1,7) m2 = para(1,8) m3 = para(1,9) m4 = para(1,10) C234 = XCget(p2, p3, p2p3, m2, m3, m4) C134 = XCget(p1p2, p3, p4, m1, m3, m4) C124 = XCget(p1, p2p3, p4, m1, m2, m4) C123 = XCget(p1, p2, p1p2, m1, m2, m3) serial = serial + 1 dump = ibits(debugkey, DebugD, 1) .ne. 0 .and. & serial .ge. debugfrom .and. serial .le. debugto if( dump ) call XDumpPara(4, para, ldpara, "Dcoeff") f1 = QPREC(m2) - QPREC(m1) - QPREC(p1) f2 = QPREC(m3) - QPREC(m1) - QPREC(p1p2) f3 = QPREC(m4) - QPREC(m1) - QPREC(p4) G(1,1) = 2*QPREC(p1) G(2,2) = 2*QPREC(p1p2) G(3,3) = 2*QPREC(p4) G(1,2) = QPREC(p1) + QPREC(p1p2) - QPREC(p2) G(2,1) = G(1,2) G(1,3) = QPREC(p1) + QPREC(p4) - QPREC(p2p3) G(3,1) = G(1,3) G(2,3) = QPREC(p1p2) - QPREC(p3) + QPREC(p4) G(3,2) = G(2,3) call SOLVE_SETUP c0sum = Cval(cc0,C234) + Cval(cc1,C234) + Cval(cc2,C234) c1sum = Cval(cc1,C234) + Cval(cc11,C234) + Cval(cc12,C234) c2sum = Cval(cc2,C234) + Cval(cc12,C234) + Cval(cc22,C234) csum = c0sum + c1sum + c2sum c00sum = Cval(cc00,C234) + & Cval(cc001,C234) + Cval(cc002,C234) c11sum = Cval(cc11,C234) + & Cval(cc111,C234) + Cval(cc112,C234) c12sum = Cval(cc12,C234) + & Cval(cc112,C234) + Cval(cc122,C234) c22sum = Cval(cc22,C234) + & Cval(cc122,C234) + Cval(cc222,C234) D(dd0) = XD0(p1, p2, p3, p4, p1p2, p2p3, m1, m2, m3, m4) IN(1) = f1*D(dd0) - Cval(cc0,C234) + Cval(cc0,C134) IN(2) = f2*D(dd0) - Cval(cc0,C234) + Cval(cc0,C124) IN(3) = f3*D(dd0) - Cval(cc0,C234) + Cval(cc0,C123) call SOLVE(in) D(dd1) = in(1) D(dd2) = in(2) D(dd3) = in(3) D(dd00) = m1*D(dd0) - .5D0* & (D(dd1)*f1 + D(dd2)*f2 + D(dd3)*f3 - Cval(cc0,C234)) IN(1) = f1*D(dd1) + c0sum - 2*D(dd00) IN(2) = f2*D(dd1) + c0sum + Cval(cc1,C124) IN(3) = f3*D(dd1) + c0sum + Cval(cc1,C123) call SOLVE(in) D(dd11) = in(1) D(dd12) = in(2) D(dd13) = in(3) IN(1) = f1*D(dd2) - Cval(cc1,C234) + Cval(cc1,C134) IN(2) = f2*D(dd2) - Cval(cc1,C234) - 2*D(dd00) IN(3) = f3*D(dd2) - Cval(cc1,C234) + Cval(cc2,C123) call SOLVE(in) D(dd12) = .5D0*(D(dd12) + in(1)) D(dd22) = in(2) D(dd23) = in(3) IN(1) = f1*D(dd3) - Cval(cc2,C234) + Cval(cc2,C134) IN(2) = f2*D(dd3) - Cval(cc2,C234) + Cval(cc2,C124) IN(3) = f3*D(dd3) - Cval(cc2,C234) - 2*D(dd00) call SOLVE(in) D(dd13) = .5D0*(D(dd13) + in(1)) D(dd23) = .5D0*(D(dd23) + in(2)) D(dd33) = in(3) IN(1) = f1*D(dd00) - Cval(cc00,C234) + Cval(cc00,C134) IN(2) = f2*D(dd00) - Cval(cc00,C234) + Cval(cc00,C124) IN(3) = f3*D(dd00) - Cval(cc00,C234) + Cval(cc00,C123) call SOLVE(in) D(dd001) = in(1) D(dd002) = in(2) D(dd003) = in(3) IN(1) = f1*D(dd11) - csum - 4*D(dd001) IN(2) = f2*D(dd11) - csum + Cval(cc11,C124) IN(3) = f3*D(dd11) - csum + Cval(cc11,C123) call SOLVE(in) D(dd111) = in(1) D(dd112) = in(2) D(dd113) = in(3) IN(1) = f1*D(dd22) - Cval(cc11,C234) + Cval(cc11,C134) IN(2) = f2*D(dd22) - Cval(cc11,C234) - 4*D(dd002) IN(3) = f3*D(dd22) - Cval(cc11,C234) + Cval(cc22,C123) call SOLVE(in) D(dd122) = in(1) D(dd222) = in(2) D(dd223) = in(3) IN(1) = f1*D(dd33) - Cval(cc22,C234) + Cval(cc22,C134) IN(2) = f2*D(dd33) - Cval(cc22,C234) + Cval(cc22,C124) IN(3) = f3*D(dd33) - Cval(cc22,C234) - 4*D(dd003) call SOLVE(in) D(dd133) = in(1) D(dd233) = in(2) D(dd333) = in(3) IN(1) = f1*D(dd13) + c2sum - 2*D(dd003) IN(2) = f2*D(dd13) + c2sum + Cval(cc12,C124) IN(3) = f3*D(dd13) + c2sum - 2*D(dd001) call SOLVE(in) D(dd113) = .5D0*(D(dd113) + in(1)) D(dd123) = in(2) D(dd133) = .5D0*(D(dd133) + in(3)) D(dd0000) = 1/3D0*(m1*D(dd00) - & .5D0*(f1*D(dd001) + f2*D(dd002) + f3*D(dd003) - & Cval(cc00,C234) - 1/6D0)) D(dd0011) = 1/3D0*(m1*D(dd11) - & .5D0*(f1*D(dd111) + f2*D(dd112) + f3*D(dd113) - csum)) D(dd0012) = 1/3D0*(m1*D(dd12) - & .5D0*(f1*D(dd112) + f2*D(dd122) + f3*D(dd123) + c1sum)) D(dd0013) = 1/3D0*(m1*D(dd13) - & .5D0*(f1*D(dd113) + f2*D(dd123) + f3*D(dd133) + c2sum)) D(dd0022) = 1/3D0*(m1*D(dd22) - & .5D0*(f1*D(dd122) + f2*D(dd222) + f3*D(dd223) - & Cval(cc11,C234))) D(dd0023) = 1/3D0*(m1*D(dd23) - & .5D0*(f1*D(dd123) + f2*D(dd223) + f3*D(dd233) - & Cval(cc12,C234))) D(dd0033) = 1/3D0*(m1*D(dd33) - & .5D0*(f1*D(dd133) + f2*D(dd233) + f3*D(dd333) - & Cval(cc22,C234))) c1sum = c1sum + c11sum + c12sum c2sum = c2sum + c12sum + c22sum csum = csum + c1sum + c2sum IN(1) = f1*D(dd111) + csum - 6*D(dd0011) IN(2) = f2*D(dd111) + csum + Cval(cc111,C124) IN(3) = f3*D(dd111) + csum + Cval(cc111,C123) call SOLVE(in) D(dd1111) = in(1) D(dd1112) = in(2) D(dd1113) = in(3) IN(1) = f1*D(dd113) - c2sum - 4*D(dd0013) IN(2) = f2*D(dd113) - c2sum + Cval(cc112,C124) IN(3) = f3*D(dd113) - c2sum - 2*D(dd0011) call SOLVE(in) D(dd1113) = .5D0*(D(dd1113) + in(1)) D(dd1123) = in(2) D(dd1133) = in(3) IN(1) = f1*D(dd122) + c11sum - 2*D(dd0022) IN(2) = f2*D(dd122) + c11sum - 4*D(dd0012) IN(3) = f3*D(dd122) + c11sum + Cval(cc122,C123) call SOLVE(in) D(dd1122) = in(1) D(dd1222) = in(2) D(dd1223) = in(3) IN(1) = f1*D(dd222) - Cval(cc111,C234) + Cval(cc111,C134) IN(2) = f2*D(dd222) - Cval(cc111,C234) - 6*D(dd0022) IN(3) = f3*D(dd222) - Cval(cc111,C234) + Cval(cc222,C123) call SOLVE(in) D(dd1222) = .5D0*(D(dd1222) + in(1)) D(dd2222) = in(2) D(dd2223) = in(3) IN(1) = f1*D(dd233) - Cval(cc122,C234) + Cval(cc122,C134) IN(2) = f2*D(dd233) - Cval(cc122,C234) - 2*D(dd0033) IN(3) = f3*D(dd233) - Cval(cc122,C234) - 4*D(dd0023) call SOLVE(in) D(dd1233) = in(1) D(dd2233) = in(2) D(dd2333) = in(3) IN(1) = f1*D(dd333) - Cval(cc222,C234) + Cval(cc222,C134) IN(2) = f2*D(dd333) - Cval(cc222,C234) + Cval(cc222,C124) IN(3) = f3*D(dd333) - Cval(cc222,C234) - 6*D(dd0033) call SOLVE(in) D(dd1333) = in(1) D(dd2333) = .5D0*(D(dd2333) + in(2)) D(dd3333) = in(3) c00sum = c00sum + & Cval(cc001,C234) + Cval(cc0011,C234) + Cval(cc0012,C234) + & Cval(cc002,C234) + Cval(cc0012,C234) + Cval(cc0022,C234) c11sum = c11sum + & Cval(cc111,C234) + Cval(cc1111,C234) + Cval(cc1112,C234) + & Cval(cc112,C234) + Cval(cc1112,C234) + Cval(cc1122,C234) c12sum = c12sum + & Cval(cc112,C234) + Cval(cc1112,C234) + Cval(cc1122,C234) + & Cval(cc122,C234) + Cval(cc1122,C234) + Cval(cc1222,C234) c22sum = c22sum + & Cval(cc122,C234) + Cval(cc1122,C234) + Cval(cc1222,C234) + & Cval(cc222,C234) + Cval(cc1222,C234) + Cval(cc2222,C234) c1sum = c1sum + c11sum + c12sum c2sum = c2sum + c12sum + c22sum csum = csum + c1sum + c2sum IN(1) = f1*D(dd0000) - Cval(cc0000,C234) + Cval(cc0000,C134) IN(2) = f2*D(dd0000) - Cval(cc0000,C234) + Cval(cc0000,C124) IN(3) = f3*D(dd0000) - Cval(cc0000,C234) + Cval(cc0000,C123) call SOLVE(in) D(dd00001) = in(1) D(dd00002) = in(2) D(dd00003) = in(3) IN(1) = f1*D(dd0011) - c00sum - 4*D(dd00001) IN(2) = f2*D(dd0011) - c00sum + Cval(cc0011,C124) IN(3) = f3*D(dd0011) - c00sum + Cval(cc0011,C123) call SOLVE(in) D(dd00111) = in(1) D(dd00112) = in(2) D(dd00113) = in(3) IN(1) = f1*D(dd0022) - Cval(cc0011,C234) + Cval(cc0011,C134) IN(2) = f2*D(dd0022) - Cval(cc0011,C234) - 4*D(dd00002) IN(3) = f3*D(dd0022) - Cval(cc0011,C234) + Cval(cc0022,C123) call SOLVE(in) D(dd00122) = in(1) D(dd00222) = in(2) D(dd00223) = in(3) IN(1) = f1*D(dd0033) - Cval(cc0022,C234) + Cval(cc0022,C134) IN(2) = f2*D(dd0033) - Cval(cc0022,C234) + Cval(cc0022,C124) IN(3) = f3*D(dd0033) - Cval(cc0022,C234) - 4*D(dd00003) call SOLVE(in) D(dd00133) = in(1) D(dd00233) = in(2) D(dd00333) = in(3) IN(1) = f1*D(dd0023) - Cval(cc0012,C234) + Cval(cc0012,C134) IN(2) = f2*D(dd0023) - Cval(cc0012,C234) - 2*D(dd00003) IN(3) = f3*D(dd0023) - Cval(cc0012,C234) - 2*D(dd00002) call SOLVE(in) D(dd00123) = in(1) D(dd00223) = .5D0*(D(dd00223) + in(2)) D(dd00233) = .5D0*(D(dd00233) + in(3)) IN(1) = f1*D(dd1111) - csum - 8*D(dd00111) IN(2) = f2*D(dd1111) - csum + Cval(cc1111,C124) IN(3) = f3*D(dd1111) - csum + Cval(cc1111,C123) call SOLVE(in) D(dd11111) = in(1) D(dd11112) = in(2) D(dd11113) = in(3) IN(1) = f1*D(dd2222) - Cval(cc1111,C234) + Cval(cc1111,C134) IN(2) = f2*D(dd2222) - Cval(cc1111,C234) - 8*D(dd00222) IN(3) = f3*D(dd2222) - Cval(cc1111,C234) + Cval(cc2222,C123) call SOLVE(in) D(dd12222) = in(1) D(dd22222) = in(2) D(dd22223) = in(3) IN(1) = f1*D(dd3333) - Cval(cc2222,C234) + Cval(cc2222,C134) IN(2) = f2*D(dd3333) - Cval(cc2222,C234) + Cval(cc2222,C124) IN(3) = f3*D(dd3333) - Cval(cc2222,C234) - 8*D(dd00333) call SOLVE(in) D(dd13333) = in(1) D(dd23333) = in(2) D(dd33333) = in(3) IN(1) = f1*D(dd1122) - c11sum - 4*D(dd00122) IN(2) = f2*D(dd1122) - c11sum - 4*D(dd00112) IN(3) = f3*D(dd1122) - c11sum + Cval(cc1122,C123) call SOLVE(in) D(dd11122) = in(1) D(dd11222) = in(2) D(dd11223) = in(3) IN(1) = f1*D(dd1133) - c22sum - 4*D(dd00133) IN(2) = f2*D(dd1133) - c22sum + Cval(cc1122,C124) IN(3) = f3*D(dd1133) - c22sum - 4*D(dd00113) call SOLVE(in) D(dd11133) = in(1) D(dd11233) = in(2) D(dd11333) = in(3) IN(1) = f1*D(dd2233) - Cval(cc1122,C234) + Cval(cc1122,C134) IN(2) = f2*D(dd2233) - Cval(cc1122,C234) - 4*D(dd00233) IN(3) = f3*D(dd2233) - Cval(cc1122,C234) - 4*D(dd00223) call SOLVE(in) D(dd12233) = in(1) D(dd22233) = in(2) D(dd22333) = in(3) IN(1) = f1*D(dd1123) - c12sum - 4*D(dd00123) IN(2) = f2*D(dd1123) - c12sum - 2*D(dd00113) IN(3) = f3*D(dd1123) - c12sum - 2*D(dd00112) call SOLVE(in) D(dd11123) = in(1) D(dd11223) = .5D0*(D(dd11223) + in(2)) D(dd11233) = .5D0*(D(dd11233) + in(3)) IN(1) = f1*D(dd2223) - Cval(cc1112,C234) + Cval(cc1112,C134) IN(2) = f2*D(dd2223) - Cval(cc1112,C234) - 6*D(dd00223) IN(3) = f3*D(dd2223) - Cval(cc1112,C234) - 2*D(dd00222) call SOLVE(in) D(dd12223) = in(1) D(dd22223) = .5D0*(D(dd22223) + in(2)) D(dd22233) = .5D0*(D(dd22233) + in(3)) IN(1) = f1*D(dd2333) - Cval(cc1222,C234) + Cval(cc1222,C134) IN(2) = f2*D(dd2333) - Cval(cc1222,C234) - 2*D(dd00333) IN(3) = f3*D(dd2333) - Cval(cc1222,C234) - 6*D(dd00233) call SOLVE(in) D(dd12333) = in(1) D(dd22333) = .5D0*(D(dd22333) + in(2)) D(dd23333) = .5D0*(D(dd23333) + in(3)) if( dump ) call XDumpCoeff(4, D) end herwig++-2.6.0.orig/Looptools/D/D0.F0000644000175000017500000012135411754474774017534 0ustar sylvestresylvestre* D0.F * the scalar four-point function * this file is part of LoopTools * last modified 14 Dec 10 th #include "defs.h" #define legs 4 #define M(i) xpi(i) #define P(i) xpi(i+legs) double complex function D0(p1, p2, p3, p4, p1p2, p2p3, & m1, m2, m3, m4) implicit none double precision p1, p2, p3, p4, p1p2, p2p3 double precision m1, m2, m3, m4 #include "lt.h" double complex res(0:1) double precision xpi(13) integer key, ier external D0softDR, D0collDR, D0soft, D0coll M(1) = m1 M(2) = m2 M(3) = m3 M(4) = m4 P(1) = p1 P(2) = p2 P(3) = p3 P(4) = p4 P(5) = p1p2 P(6) = p2p3 P(7) = 0 P(8) = 0 P(9) = 0 if( lambda .le. 0 ) then call DDispatch(D0, xpi, D0softDR, D0collDR) return endif ier = 0 key = ibits(versionkey, KeyD0, 2) if( key .ne. 1 ) then call ffxd0(res(0), xpi, ier) if( ier .gt. warndigits ) then ier = 0 call ffxd0r(res(0), xpi, ier) if( ier .gt. warndigits ) key = ior(key, 2) if( ier .ge. errdigits ) key = ior(key, 3) endif endif if( key .ne. 0 ) then call DDispatch(res(1), xpi, D0soft, D0coll) if( key .gt. 1 .and. & abs(res(0) - res(1)) .gt. maxdev*abs(res(0)) ) then print *, "Discrepancy in D0:" print *, " p1 =", p1 print *, " p2 =", p2 print *, " p3 =", p3 print *, " p4 =", p4 print *, " p1p2 =", p1p2 print *, " p2p3 =", p2p3 print *, " m1 =", m1 print *, " m2 =", m2 print *, " m3 =", m3 print *, " m4 =", m4 print *, "D0 a =", res(0) print *, "D0 b =", res(1) if( ier .gt. errdigits ) res(0) = res(1) endif endif D0 = res(iand(key, 1)) end ************************************************************************ * adapter code for C++ subroutine d0sub(res, p1, p2, p3, p4, p1p2, p2p3, & m1, m2, m3, m4) implicit none double complex res double precision p1, p2, p3, p4, p1p2, p2p3 double precision m1, m2, m3, m4 double complex D0 external D0 res = D0(p1, p2, p3, p4, p1p2, p2p3, m1, m2, m3, m4) end ************************************************************************ subroutine DDispatch(res, xpi, soft, coll) implicit none double complex res double precision xpi(13) external soft, coll #include "lt.h" integer i, z, s, perm integer xpiperm(12), mperm(0:7) data xpiperm / & O'1234561234', O'1635421243', O'5264131324', & O'2341652341', O'6351242431', O'2546132314', & O'3412563412', O'5462313142', O'3615243421', & O'4123654123', O'4526314132', O'6153424213' / data mperm / O'1234561234', O'1234561234', & O'5264131324', O'1234561234', O'4321561432', & O'1635421243', O'5361421342', O'1234561234' / * 0 1 1xxx O'1234561234' * 1 2 12xx O'1234561234' * 2 2 13xx O'5264131324' * 3 3 123x O'1234561234' * 4 2 14xx O'4321561432' * 5 3 124x O'1635421243' * 6 3 134x O'5361421342' * 7 4 xxxx O'1234561234' #define pj(p,j) ibits(p,3*(10-j),3) #define mj(p,j) ibits(p,3*(4-j),3) #define Px(j) P(pj(perm,j)) #define Mx(j) M(mj(perm,j)) z = 0 s = 0 do i = 1, 12 perm = xpiperm(i) if( abs(Mx(1)) .lt. eps ) then if( abs(Px(1)) + abs(Mx(2)) .lt. eps ) then call coll(res, xpi, perm) if( res .ne. perm ) return endif if( s .eq. 0 .and. & abs(Px(1) - Mx(2)) + & abs(Px(4) - Mx(4)) .lt. acc ) s = perm if( z .eq. 0 ) z = perm endif enddo if( s .ne. 0 ) then call soft(res, xpi, s) return endif if( z .eq. 0 ) then call D0m4(res, xpi) return endif perm = z z = 0 if( abs(Mx(2)) .lt. eps ) z = 1 if( abs(Mx(3)) .lt. eps ) z = z + 2 if( abs(Mx(4)) .lt. eps ) z = z + 4 s = mperm(z) if( s .ne. O'1234561234' ) perm = & pj(perm, pj(s, 1))*8**9 + & pj(perm, pj(s, 2))*8**8 + & pj(perm, pj(s, 3))*8**7 + & pj(perm, pj(s, 4))*8**6 + & pj(perm, pj(s, 5))*8**5 + & pj(perm, pj(s, 6))*8**4 + & mj(perm, mj(s, 1))*8**3 + & mj(perm, mj(s, 2))*8**2 + & mj(perm, mj(s, 3))*8**1 + & mj(perm, mj(s, 4))*8**0 goto (2, 2, 3, 2, 3, 3, 4) z call D0m3(res, xpi, perm) return 2 call D0m2(res, xpi, perm) return 3 call D0m1(res, xpi, perm) return 4 call D0m0(res, xpi) end ************************************************************************ subroutine D0soft(res, xpi, perm) implicit none double complex res double precision xpi(13) integer perm #include "lt.h" double precision m3, p1, p2, p3, p4, p1p2, p2p3 double precision r1, r3, r4 double complex xs, x2, x3, y, c, fac double complex lxs, lx2, lx3, l1x2, l1x3, ly, lm double complex ln, spence, bdK external ln, spence, bdK m3 = Mx(3) p1 = Px(1) p2 = Px(2) p3 = Px(3) p4 = Px(4) p1p2 = Px(5) p2p3 = Px(6) r1 = sqrt(p1) r4 = sqrt(p4) fac = .5D0/(r1*r4*(p1p2 - m3)) xs = bdK(p2p3, r1, r4) lxs = -1 if( xs .ne. 1 ) then lxs = log(xs) fac = 2*xs/((1 - xs)*(1 + xs))*fac endif * massless case if( abs(m3) .lt. eps ) then if( abs(p1 - p2) + abs(p3 - p4) .lt. acc ) then res = -2*ln(-lambda/p1p2, 1D0)*lxs*fac return endif y = (r1*(p3 - p4 + cI*eps))/(r4*(p2 - p1 + cI*eps)) ly = log(y) c = ln(lambda/(r1*r4), 0D0) + & ln((p2 - p1)/p1p2, p1 - p2) + & ln((p3 - p4)/p1p2, p4 - p3) if( xs .eq. 1 ) then res = fac*(c - 2 - (1 + y)/(1 - y)*ly) else res = fac*(pi6 - & spence(xs/y, 0D0) - & (lxs + log(1/y))*log(1 - xs/y) - & spence(xs*y, 0D0) - & (lxs + ly)*(log(1 - xs*y) + .5D0*(lxs - ly)) + & spence(xs**2, 0D0) + & lxs*(2*log((1 - xs)*(1 + xs)) - c)) endif return endif * massive case r3 = sqrt(m3) x2 = bdK(p2, r1, r3) x3 = bdK(p3, r4, r3) lx2 = log(x2) lx3 = log(x3) l1x3 = log(1/x3) lm = 2*ln(r3*sqrt(lambda)/(m3 - p1p2), 1D0) if( xs .eq. 1 ) then c = -2 if( abs(x2 - x3) .gt. acc ) then c = (1 + x2/x3)/(1 - x2/x3)*(lx2 + l1x3) + & (1 + x2*x3)/(1 - x2*x3)*(lx2 + lx3) + 2 else if( abs(x2 - 1) .gt. acc ) then c = -2*(x2**2 + 1)/((x2 - 1)*(x2 + 1))*lx2 endif res = fac*(lm - c) else l1x2 = log(1/x2) res = fac*( .5D0*pi**2 + & lxs*(2*log((1 - xs)*(1 + xs)) - lm) + & spence(xs**2, 0D0) + lx2**2 + lx3**2 - & spence(xs/(x2*x3), 0D0) - & (lxs + l1x2 + l1x3)*log(1 - xs/(x2*x3)) - & spence(xs*x2/x3, 0D0) - & (lxs + lx2 + l1x3)*log(1 - xs*x2/x3) - & spence(xs/x2*x3, 0D0) - & (lxs + l1x2 + lx3)*log(1 - xs/x2*x3) - & spence(xs*x2*x3, 0D0) - & (lxs + lx2 + lx3)*log(1 - xs*x2*x3) ) endif end ************************************************************************ double complex function bdK(x, m1, m2) * this is actually -K from the Beenakker/Denner paper for D0soft implicit none double precision x, m1, m2 #include "lt.h" double precision d double complex t d = x - (m1 - m2)**2 if( abs(d) .lt. acc ) then bdK = 1 else t = 4*m1*m2/(d + cI*eps) bdK = -t/(sqrt(1 - t) + 1)**2 endif end ************************************************************************ subroutine D0coll(res, xpi, perm) implicit none double complex res double precision xpi(13) integer perm #include "lt.h" logical ini data ini /.FALSE./ Px(1) = max(minmass, 1D-14) res = perm if( ini ) return print *, "collinear-divergent D0, using mass cutoff ", Px(1) ini = .TRUE. end ************************************************************************ * IR-divergent D0 in dim reg * from W. Beenakker and A. Denner, NPB 338 (1990) 349 subroutine D0softDR(res, xpi, perm) implicit none double complex res double precision xpi(13) integer perm #include "lt.h" double precision m2, m3, m4, p2, p3, t, p2p3, q2, q3 double precision r1, r3, r4, m24, sy double complex c, fac, xs, x2, x3, lxs, lx2, lx3, lm, y double complex bdK, ln, cln, lnrat, Li2omx2, Li2omx3 external bdK, ln, cln, lnrat, Li2omx2, Li2omx3 c PRINT *, "D0softDR" if( lambda .eq. -2 ) then res = 0 return endif m2 = Mx(2) m3 = Mx(3) m4 = Mx(4) t = m3 - Px(5) p2p3 = Px(6) p2 = Px(2) q2 = m2 - p2 p3 = Px(3) q3 = m4 - p3 r1 = sqrt(m2) r4 = sqrt(m4) fac = .5D0/(r1*r4*t) xs = bdK(p2p3, r1, r4) lxs = -1 if( xs .ne. 1 ) then lxs = log(xs) fac = 2*xs/((1 - xs)*(1 + xs))*fac endif if( abs(m3) .lt. eps ) then if( abs(q2) + abs(q3) .lt. acc ) then * qlbox14: D0(m2, m2, m4, m4; p1p2, p2p3; 0, m2, 0, m4) c PRINT *, "D0softDR: qlbox14" res = 2*fac*lxs if( lambda .ne. -1 ) res = res*lnrat(mudim, t) return endif * qlbox15: D0(m2, p2, p3, m4; p1p2, p2p3; 0, m2, 0, m4) * Beenakker-Denner Eq. (2.11) c PRINT *, "D0softDR: qlbox15" if( lambda .eq. -1 ) then res = fac*lxs return endif if( abs(q2*q3) .lt. acc ) then m24 = m2 if( abs(q2) .lt. acc ) m24 = m4 res = fac*( lxs*(lxs + log(mudim/m24) + & 2*lnrat(q2 + q3, t)) + & Li2omx2(xs, 1D0, xs, 1D0) ) return endif y = r1*q3/(r4*q2) sy = sign(.5D0, r1*q3) - sign(.5D0, r4*q2) if( xs .eq. 1 ) then res = fac*( -log(mudim/(r1*r4)) + & lnrat(q2, t) + lnrat(q3, t) + 2 + & (1 + y)/(1 - y)*ln(y, sy) ) else res = fac*( -.5D0*ln(y, sy)**2 + & lxs*(.5D0*lxs + lnrat(q2, t) + lnrat(q3, t) + & log(mudim/(r1*r4))) + & Li2omx2(xs, 1D0, xs, 1D0) - & Li2omx2(xs, 1D0, y, sy) - & Li2omx2(xs, 1D0, 1/y, -sy) ) endif return endif * qlbox16: D0(m2, p2, p3, m4; p1p2, p2p3; 0, m2, m3, m4) * Beenakker-Denner Eq. (2.9) c PRINT *, "D0softDR: qlbox16" if( lambda .eq. -1 ) then res = fac*lxs return endif r3 = sqrt(m3) x2 = bdK(p2, r1, r3) x3 = bdK(p3, r4, r3) lx2 = log(x2) lx3 = log(x3) lm = 2*lnrat(sqrt(m3*mudim), t) if( xs .eq. 1 ) then c = -2 if( abs(x2 - x3) .gt. acc ) then c = (1 + x2/x3)/(1 - x2/x3)*(lx2 + log(1/x3)) + & (1 + x2*x3)/(1 - x2*x3)*(lx2 + lx3) + 2 else if( abs(x2 - 1) .gt. acc ) then c = -2*(x2**2 + 1)/((x2 - 1)*(x2 + 1))*lx2 endif res = fac*(c - lm) else res = fac*(lm*lxs - lx2**2 - lx3**2 + & Li2omx2(xs, 1D0, xs, 1D0) - & Li2omx3(xs, 1D0, x2, 1D0, x3, 1D0) - & Li2omx3(xs, 1D0, 1/x2, -1D0, 1/x3, -1D0) - & Li2omx3(xs, 1D0, x2, 1D0, 1/x3, -1D0) - & Li2omx3(xs, 1D0, 1/x2, -1D0, x3, 1D0)) endif end ************************************************************************ subroutine D0collDR(res, xpi, perm) implicit none double complex res double precision xpi(13) integer perm #include "lt.h" integer z, s * see D0table.f integer pperm(0:127) data pperm / & -898440548, -898440548, -865381277, -898440548, & -898440548, -1972182372, -865381277, -1972182372, & -898440548, -898440548, -865381277, -1972182372, & -898440548, -1972182372, -865381277, 1249043100, & -898440548, -898440548, -1939123101, -1939123101, & -898440548, -1972182372, -1939123101, 1368319628, & -898440548, -898440548, -1939123101, 1282102371, & -898440548, -1972182372, -1939123101, 175301276, & -898440548, -1921432484, -865381277, -1921432484, & -898440548, -1972182372, -865381277, -1972182372, & -898440548, -1921432484, -865381277, 1299792988, & -898440548, -1921432484, -865381277, 1249043100, & -898440548, -1921432484, -1939123101, -1939123101, & -898440548, -1972182372, -1939123101, 1368319628, & -898440548, -1921432484, -1939123101, 1282102371, & -898440548, -1972182372, -1939123101, 175301276, & -898440548, -898440548, -1904860509, -1904860509, & -898440548, -1972182372, -1904860509, -1972182372, & -898440548, -898440548, -1904860509, 1316364963, & -898440548, -1972182372, -1904860509, 1249043100, & -898440548, -898440548, -1904860509, -1939123101, & -898440548, -1972182372, -1904860509, 1368319628, & -898440548, -898440548, -1904860509, 1282102371, & -898440548, -1972182372, -1904860509, 175301276, & -898440548, -1921432484, -1904860509, 1907239051, & -898440548, -1972182372, -1904860509, 1907239051, & -898440548, -1921432484, -1904860509, 833497227, & -898440548, -1972182372, -1904860509, 833497227, & -898440548, -1921432484, -1904860509, 1907239051, & -898440548, -1972182372, -1904860509, 850499737, & -898440548, -1921432484, -1904860509, 833497227, & -898440548, -1972182372, -1904860509, 175301276 / z = 0 if( abs(Mx(3)) .lt. eps ) z = 1 if( abs(Mx(4)) .lt. eps ) z = z + 2 if( abs(Px(2)) .lt. eps ) z = z + 4 if( abs(Px(3)) .lt. eps ) z = z + 8 if( abs(Px(4)) .lt. eps ) z = z + 16 if( abs(Px(5)) .lt. eps ) z = z + 32 if( abs(Px(6)) .lt. eps ) z = z + 64 s = pperm(z) if( iand(s, O'7777777777') .ne. O'1234561234' ) perm = & pj(perm, pj(s, 1))*8**9 + & pj(perm, pj(s, 2))*8**8 + & pj(perm, pj(s, 3))*8**7 + & pj(perm, pj(s, 4))*8**6 + & pj(perm, pj(s, 5))*8**5 + & pj(perm, pj(s, 6))*8**4 + & mj(perm, mj(s, 1))*8**3 + & mj(perm, mj(s, 2))*8**2 + & mj(perm, mj(s, 3))*8**1 + & mj(perm, mj(s, 4))*8**0 goto (22,22,22,23, 22,22,22,23, 10,11,12,13) & ibits(s, 30, 2) + ibits(z, 0, 2)*4 - 3 call D0m2p3(res, xpi, perm) return 23 call D0m1p3(res, xpi, perm) return 22 call D0m1p2(res, xpi, perm) return 13 call D0m0p3(res, xpi, perm) return 12 call D0m0p2(res, xpi, perm) return 11 call D0m0p1(res, xpi, perm) return 10 call D0m0p0(res, xpi, perm) end ************************************************************************ * qlbox1: D0(0, 0, 0, 0; p1p2, p2p3; 0, 0, 0, 0) * Bern, Dixon, Kosower, NPB 412 (1994) 751 [hep-ph/9306240], Eq. (I.11) subroutine D0m0p0(res, xpi, perm) implicit none double complex res double precision xpi(13) integer perm #include "lt.h" double precision s, t, fac double complex lnrat external lnrat c PRINT *, "D0m0p0: qlbox1" s = -Px(5) t = -Px(6) fac = 1/(s*t) if( lambda .eq. -2 )then res = 4*fac else if( lambda .eq. -1 ) then res = 2*fac*(-lnrat(t, mudim) - lnrat(s, mudim)) else res = fac*(lnrat(t, mudim)**2 + lnrat(s, mudim)**2 - & lnrat(t, s)**2 - pi**2) endif end ************************************************************************ * qlbox2: D0(0, 0, 0, p4; p1p2, p2p3; 0, 0, 0, 0) * One-mass integral as given in * Ellis, Giele, Zanderighi, Eq. (A22). subroutine D0m0p1(res, xpi, perm) implicit none double complex res double precision xpi(13) integer perm #include "lt.h" double precision s, t, m4, fac double complex l1, l2 double complex lnrat, Li2omrat external lnrat, Li2omrat c PRINT *, "D0m0p1: qlbox2" s = -Px(5) t = -Px(6) m4 = -Px(4) fac = 1/(s*t) if( lambda .eq. -2 ) then res = 2*fac else if( lambda .eq. -1 ) then res = 2*fac*(lnrat(m4, mudim) - & lnrat(t, mudim) - lnrat(s, mudim)) else l1 = sqrt(lnrat(t, mudim)**2 + lnrat(m4, t)**2 + & lnrat(s, mudim)**2 + lnrat(m4, s)**2) l2 = sqrt(lnrat(m4, mudim)**2 + lnrat(t, s)**2) res = fac*((l1 - l2)*(l1 + l2) + & 2*(Li2omrat(t, m4) + Li2omrat(s, m4) - pi6)) endif end ************************************************************************ subroutine D0m0p2(res, xpi, perm) implicit none double complex res double precision xpi(13) integer perm #include "lt.h" double precision s, t, q2, q3, q4, fac, r double complex ls, lt, lq2, lq3, lq4 double complex lnrat, lndiv0, lndiv1, Li2omrat, Li2omrat2 external lnrat, lndiv0, lndiv1, Li2omrat, Li2omrat2 c PRINT *, "D0m0p2" s = -Px(5) t = -Px(6) fac = 1/(s*t) q4 = -Px(4) q3 = -Px(3) if( abs(q3) .lt. eps ) then * qlbox3: D0(0, p2, 0, p4; p1p2, p2p3; 0, 0, 0, 0) * Bern, Dixon, Kosower, NPB 412 (1994) 751 [hep-ph/9306240], Eq. (I.13) c PRINT *, "D0m0p2: qlbox3" if( lambda .eq. -2 ) then res = 0 return endif q2 = -Px(2) r = 1 - q2*q4*fac * Use expansion only in cases where signs (s,t,m2,m4) are not * ++-- or --++ if( abs(r) .lt. 1D-6 .and. & (fac .lt. 0 .or. q2*q4 .lt. 0) ) then * expanded case if( lambda .eq. -1 ) then res = -(2 + r)*fac else res = fac*(2 - .5D0*r + & (2 + r)*(lnrat(s, mudim) + lnrat(t, q4)) + & 2*(lndiv0(q4, t) + lndiv0(q4, s)) + & r*(lndiv1(q4, t) + lndiv1(q4, s))) endif else * general case fac = 1/(s*t - q2*q4) if( lambda .eq. -1 ) then res = 2*fac*(lnrat(q2, s) + lnrat(q4, t)) else ls = lnrat(s, mudim) lt = lnrat(t, mudim) lq2 = lnrat(q2, mudim) lq4 = lnrat(q4, mudim) res = fac*( & (ls - lq2)*(ls + lq2) + & (lt - lq4)*(lt + lq4) - lnrat(s, t)**2 + & 2*(Li2omrat2(q2, s, q4, t) - & Li2omrat(q2, s) - Li2omrat(q2, t) - & Li2omrat(q4, s) - Li2omrat(q4, t)) ) endif endif return endif * qlbox4: D0(0, 0, p3, p4; p1p2, p2p3; 0, 0, 0, 0) * Bern, Dixon, Kosower, NPB 412 (1994) 751 [hep-ph/9306240], Eq. (I.14) c PRINT *, "D0m0p2: qlbox4" if( lambda .eq. -2 ) then res = fac else if( lambda .eq. -1 ) then res = -fac*(lnrat(s, q3) + lnrat(t, q4) + lnrat(t, mudim)) else ls = lnrat(s, mudim) lt = lnrat(t, mudim) lq3 = lnrat(q3, mudim) lq4 = lnrat(q4, mudim) res = fac*( & .5D0*((ls - lq3)*(ls + lq3) + & (lt - lq4)*(lt + lq4) + lt**2) + & lnrat(s, q3)*lnrat(s, q4) - lnrat(s, t)**2 - & 2*(Li2omrat(q3, t) + Li2omrat(q4, t)) ) endif end ************************************************************************ * qlbox5: D0(0, p2, p3, p4; p1p2, p2p3; 0, 0, 0, 0) * Bern, Dixon, Kosower, NPB 412 (1994) 751 [hep-ph/9306240], Eq. (I.15) * or from hep-ph/0508308v3 Eq. (A27) * (v3 corrects previous versions) subroutine D0m0p3(res, xpi, perm) implicit none double complex res double precision xpi(13) integer perm #include "lt.h" double precision s, t, q2, q3, q4, fac, r double complex lnrat, lndiv0, lndiv1, Li2omrat, Li2omrat2 external lnrat, lndiv0, lndiv1, Li2omrat, Li2omrat2 c PRINT *, "D0m0p3: qlbox5" if( lambda .eq. -2 ) then res = 0 return endif s = -Px(5) t = -Px(6) fac = 1/(s*t) q2 = -Px(2) q3 = -Px(3) q4 = -Px(4) r = 1 - q2*q4*fac * Use expansion only in cases where signs of (s,t,q2,q4) are * not ++-- or --++ if( abs(r) .lt. 1D-6 .and. & (fac .lt. 0 .or. q2*q4 .lt. 0) ) then * expanded case if( lambda .eq. -1 ) then res = -.5D0*(2 + r)*fac else res = lndiv0(q4, t) res = fac*( & .5D0*(2 + r)*(2 + (1 + q4/t)*res - & lnrat(mudim, s) - lnrat(q3, t)) + & r*(lndiv1(q4, t) - res - 1) ) endif else * general case fac = 1/(s*t - q2*q4) if( lambda .eq. -1 ) then res = fac*(lnrat(q2, t) + lnrat(q4, s)) else res = fac*( & (lnrat(q3, t) + lnrat(mudim, t))*lnrat(q2, t) + & (lnrat(q3, s) + lnrat(mudim, s))*lnrat(q4, s) - & .5D0*(lnrat(t, q2)**2 + lnrat(s, q4)**2) - & lnrat(s, t)**2 - & 2*(Li2omrat(q2, s) + Li2omrat(q4, t) - & Li2omrat2(q2, s, q4, t)) ) endif endif end ************************************************************************ subroutine D0m1p2(res, xpi, perm) implicit none double complex res double precision xpi(13) integer perm #include "lt.h" double precision m4, s, t, q3, q4, fac double complex lm, ls, lt, lq integer ir double complex lnrat, Li2omrat, Li2omrat2 external lnrat, Li2omrat, Li2omrat2 c PRINT *, "D0m1p2" m4 = Mx(4) s = -Px(5) t = m4 - Px(6) fac = 1/(s*t) q3 = m4 - Px(3) q4 = m4 - Px(4) ir = 0 if( abs(q3) .lt. acc ) ir = 1 if( abs(q4) .lt. acc ) then ir = ir + 1 q4 = q3 endif if( lambda .eq. -2 ) then res = .5D0*(2 + ir)*fac return endif goto (1, 2) ir * qlbox8: D0(0, 0, p3, p4; p1p2, p2p3; 0, 0, 0, m4) c PRINT *, "D0m1p2: qlbox8" lm = lnrat(s, mudim) if( lambda .eq. -1 ) then res = fac*(lnrat(q3, t) + lnrat(q4, t) - lm) else ls = lnrat(s, m4) res = fac*(-2*(Li2omrat(q3, t) + Li2omrat(q4, t)) - & Li2omrat2(q3, s, q4, m4) - pi6 + & .5D0*(lm - ls)*(lm + ls) + 2*lm*lnrat(t, m4) - & lnrat(q3, mudim)*lnrat(q3, m4) - & lnrat(q4, mudim)*lnrat(q4, m4)) endif return 1 continue * qlbox7: D0(0, 0, m4, p4; p1p2, p2p3; 0, 0, 0, m4) c PRINT *, "D0m1p2: qlbox7" ls = lnrat(s, m4) lt = lnrat(t, m4) lm = lnrat(mudim, m4) lq = lnrat(q4, m4) if( lambda .eq. -1 ) then res = fac*(1.5D0*lm - 2*lt - ls + lq) else res = fac*(2*ls*lt - lq**2 - 5*pi12 + & lm*(.75D0*lm - 2*lt - ls + lq) - & 2*Li2omrat(q4, t)) endif return 2 continue * qlbox6: D0(0, 0, m4, m4; p1p2, p2p3; 0, 0, 0, m4) c PRINT *, "D0m1p2: qlbox6" ls = lnrat(s, m4) lt = lnrat(t, m4) lm = lnrat(mudim, m4) if( lambda .eq. -1 ) then res = fac*(2*(lm - lt) - ls) else res = fac*((lm - ls)*(lm - 2*lt) - .5D0*pi**2) endif end ************************************************************************ subroutine D0m1p3(res, xpi, perm) implicit none double complex res double precision xpi(13) integer perm #include "lt.h" double precision s, t, m4, q2, q3, q4, m4mu, fac double complex lnrat, Li2omrat, Li2omrat2 external lnrat, Li2omrat, Li2omrat2 c PRINT *, "D0m1p3" if( lambda .eq. -2 ) then res = 0 return endif q2 = -Px(2) s = -Px(5) m4 = Mx(4) q3 = m4 - Px(3) q4 = m4 - Px(4) t = m4 - Px(6) if( abs(t) .lt. acc ) then t = q4 q4 = 0 s = q2 q2 = -Px(5) endif m4mu = sqrt(m4*mudim) * qlbox9: D0(0, p2, p3, m4; p1p2, p2p3; 0, 0, 0, m4) if( abs(q4) .lt. acc ) then c PRINT *, "D0m1p3: qlbox9" fac = 1/(s*t) if( lambda .eq. -1 ) then res = -fac*(lnrat(t, m4mu) + lnrat(s, q2)) else res = fac*(Li2omrat2(q3, q2, t, m4) + 2*Li2omrat(s, q2) + & lnrat(t, m4mu) + lnrat(s, q2) + pi12) endif return endif * qlbox10: D0(0, p2, p3, p4; p1p2, p2p3; 0, 0, 0, m4) c PRINT *, "D0m1p3: qlbox10" fac = 1/(s*t - q2*q4) res = fac*(lnrat(q2, mudim) + lnrat(q4, mudim) - & lnrat(s, mudim) - lnrat(t, mudim)) if( lambda .ne. -1 ) then res = 2*res*lnrat(m4mu, t) + & fac*(Li2omrat2(q3, q2, t, m4) - Li2omrat2(q3, s, q4, m4) + & 2*(Li2omrat2(q2, s, q4, t) + & Li2omrat(q2, s) - Li2omrat(t, q4))) endif end ************************************************************************ subroutine D0m2p3(res, xpi, perm) implicit none double complex res double precision xpi(13) integer perm #include "lt.h" double precision s, t, m3, m4, q3, q4, p3, fac, m3mu, m4mu double precision p34, c, s3t, s4s double complex ls, lt, lq3, lq4, d double complex x43(4), r3t, r4s, r43p, r43m double complex logs, dilogs integer ir, case double complex lnrat, cln, Li2rat, Li2omrat, Li2omrat2 external lnrat, cln, Li2rat, Li2omrat, Li2omrat2 c PRINT *, "D0m2p3" m3 = Mx(3) s = m3 - Px(5) q3 = m3 - Px(2) m4 = Mx(4) t = m4 - Px(6) q4 = m4 - Px(4) if( abs(s*t) .lt. eps ) then s = q3 q3 = m3 - Px(5) t = q4 q4 = m4 - Px(6) endif fac = 1/(s*t - q3*q4) ir = 0 if( abs(q3) .lt. acc ) ir = 1 if( abs(q4) .lt. acc ) then ir = ir + 1 q4 = q3 s = t t = m3 - Px(5) m4 = m3 m3 = Mx(4) endif if( lambda .eq. -2 ) then res = .5D0*fac*ir return endif if( lambda .eq. -1 ) goto (10, 11, 12) ir + 1 p3 = Px(3) if( abs(p3) .lt. eps ) then case = 1 logs = lnrat(m3, m4)**2 else p34 = p3 + m3 - m4 c = -4*p3*m3 d = sqrt(DCMPLX(p34**2 + c)) x43(1) = -p34 - d x43(2) = p34 - d if( abs(x43(1)) .lt. abs(x43(2)) ) then x43(1) = c/x43(2) else x43(2) = c/x43(1) endif p34 = -p3 + m3 - m4 c = -4*p3*m4 x43(3) = -p34 - d x43(4) = p34 - d if( abs(x43(3)) .lt. abs(x43(4)) ) then x43(3) = c/x43(4) else x43(4) = c/x43(3) endif if( abs(DIMAG(d)) .lt. eps ) then case = 2 logs = lnrat(x43(1), x43(3))**2 + & lnrat(x43(2), x43(4))**2 else case = 3 r43p = x43(1)/x43(3) r43m = x43(2)/x43(4) logs = cln(r43p, 0D0)**2 + cln(r43m, 0D0)**2 endif endif goto (1, 2) ir * qlbox13: D0(0, p2, p3, p4; p1p2, p2p3; 0, 0, m3, m4) c PRINT *, "D0m2p3: qlbox13" ls = lnrat(s, mudim) lt = lnrat(t, mudim) lq3 = lnrat(q3, mudim) lq4 = lnrat(q4, mudim) if( case .eq. 1 ) then dilogs = Li2omrat2(q3, t, -1D0, -1D0) + & Li2omrat2(q3, t, m4, m3) + & Li2omrat2(q4, s, m3, m4) + & Li2omrat2(q4, s, -1D0, -1D0) else if( case .eq. 2 ) then dilogs = Li2omrat2(q3, t, x43(4), x43(2)) + & Li2omrat2(q3, t, x43(3), x43(1)) + & Li2omrat2(q4, s, x43(1), x43(3)) + & Li2omrat2(q4, s, x43(2), x43(4)) else r3t = q3/t s3t = sign(.5D0, q3) - sign(.5D0, t) r4s = q4/s s4s = sign(.5D0, q4) - sign(.5D0, s) dilogs = Li2rat(r3t,s3t, 1/r43m,0D0) + & Li2rat(r3t,s3t, 1/r43p,0D0) + & Li2rat(r4s,s4s, r43p,0D0) + & Li2rat(r4s,s4s, r43m,0D0) endif res = -fac*(dilogs + .5D0*logs + lq3**2 + lq4**2 + & 2*(Li2omrat(q3, s) + Li2omrat(q4, t) - & Li2omrat2(q3, s, q4, t) - ls*lt) + & (lt - lq3)*log(m3/mudim) + (ls - lq4)*log(m4/mudim)) return 10 res = fac*(lnrat(q3, mudim) + lnrat(q4, mudim) - & lnrat(s, mudim) - lnrat(t, mudim)) return 1 continue * qlbox12: D0(0, m3, p3, p4; p1p2, p2p3; 0, 0, m3, m4) c PRINT *, "D0m2p3: qlbox12" m3mu = sqrt(m3*mudim) ls = lnrat(s, m3mu) lt = lnrat(t, m3mu) lq4 = lnrat(q4, m3mu) if( case .eq. 1 ) then dilogs = 0 else if( case .eq. 2 ) then dilogs = Li2omrat2(q4, s, x43(1), x43(3)) + & Li2omrat2(q4, s, x43(2), x43(4)) else r4s = q4/s s4s = sign(.5D0, q4) - sign(.5D0, s) dilogs = Li2rat(r4s,s4s, r43p,0D0) + & Li2rat(r4s,s4s, r43m,0D0) endif res = -fac*(dilogs + .5D0*logs + pi12 + & 2*(Li2omrat(q4, t) - ls*lt) + & lq4**2 + (ls - lq4)*log(m4/m3)) return 11 m3mu = sqrt(m3*mudim) res = fac*(lnrat(q4, m3mu) - lnrat(s, m3mu) - lnrat(t, m3mu)) return 2 continue * qlbox11: D0(0, m3, p3, m4; p1p2, p2p3; 0, 0, m3, m4) c PRINT *, "D0m2p3: qlbox11" m3mu = sqrt(m3*mudim) m4mu = sqrt(m4*mudim) ls = lnrat(s, m3mu) lt = lnrat(t, m4mu) res = fac*(.25D0*log(m3/m4)**2 - .5D0*(logs + pi**2) + & 2*lnrat(s, sqrt(m3*mudim))*lnrat(t, sqrt(m4*mudim))) return 12 res = -fac*(lnrat(s, sqrt(m3*mudim)) + & lnrat(t, sqrt(m4*mudim))) end ************************************************************************ * this routine is adapted from Ansgar Denner's bcanew.f * to the conventions of LoopTools; * it is used for double-checking the results of FF * M. Rauch: implemented the log branch cuts for k13 < 2 * (from Denner, Nierste, Scharf; Nucl Phys B367 (1991) 637) #define AddEps(k) k*DCMPLX(1D0, -sign(eps, k)) #define k2r(k) (.5D0*k*(1 + sqrt(DCMPLX((1 - 2/k)*(1 + 2/k))))) subroutine D0m4(res, xpi) implicit none double complex res double precision xpi(13) #include "lt.h" double precision tmp, ir1324, gamma, s1, s2 double precision kij(6), irij(6), ix(2,4) double complex rij(6), x(2,4), l(2,4), q13, q24 double complex a, b, c, d, disc, ki, etas integer j double precision k12, k13, k14, k23, k24, k34 double precision ir12, ir13, ir14, ir23, ir24, ir34 double complex r12, r14, r13, r23, r24, r34 equivalence (kij(1), k12), (rij(1), r12), (irij(1), ir12) equivalence (kij(2), k23), (rij(2), r23), (irij(2), ir23) equivalence (kij(3), k34), (rij(3), r34), (irij(3), ir34) equivalence (kij(4), k14), (rij(4), r14), (irij(4), ir14) equivalence (kij(5), k13), (rij(5), r13), (irij(5), ir13) equivalence (kij(6), k24), (rij(6), r24), (irij(6), ir24) double complex cln, xspence, xeta, xetatilde integer eta external cln, xspence, xeta, xetatilde, eta k12 = (M(1) + M(2) - P(1))/sqrt(M(1)*M(2)) k23 = (M(2) + M(3) - P(2))/sqrt(M(2)*M(3)) k34 = (M(3) + M(4) - P(3))/sqrt(M(3)*M(4)) k14 = (M(1) + M(4) - P(4))/sqrt(M(1)*M(4)) k13 = (M(1) + M(3) - P(5))/sqrt(M(1)*M(3)) k24 = (M(2) + M(4) - P(6))/sqrt(M(2)*M(4)) * test if r_13 can be made real by a permutation * if one of the r_ij is real r_13 must be made real => case 1 if( abs(k13) .ge. 2 ) then * nothing to do * otherwise try all permutations else if( abs(k12) .ge. 2 ) then * 2 <-> 3 tmp = k12 k12 = k13 k13 = tmp tmp = k24 k24 = k34 k34 = tmp else if( abs(k14) .ge. 2 ) then * 3 <-> 4 tmp = k13 k13 = k14 k14 = tmp tmp = k23 k23 = k24 k24 = tmp else if( abs(k23) .ge. 2 ) then * 1 <-> 2 tmp = k13 k13 = k23 k23 = tmp tmp = k14 k14 = k24 k24 = tmp else if( abs(k24) .ge. 2 ) then * 1 -> 4, 2 -> 1, 3 -> 2, 4 -> 3 tmp = k12 k12 = k23 k23 = k34 k34 = k14 k14 = tmp tmp = k13 k13 = k24 k24 = tmp else if( abs(k34) .ge. 2 ) then * 1 <-> 4 tmp = k12 k12 = k24 k24 = tmp tmp = k13 k13 = k34 k34 = tmp * else * nothing found => all r_ij on the complex unit circle => case 2 endif r12 = k2r(k12) r23 = k2r(k23) r34 = k2r(k34) r14 = k2r(k14) r13 = 1/k2r(k13) r24 = 1/k2r(k24) do j = 1, 6 if( DIMAG(rij(j)) .eq. 0 ) then ki = kij(j) - cI*eps irij(j) = sign(1D0, abs(rij(j)) - 1)* & DIMAG(k2r(ki)) else irij(j) = 0 endif enddo ir1324 = sign(1D0, DBLE(r24))*ir13 - & sign(1D0, DBLE(r13))*ir24 a = k34/r24 - k23 + (k12 - k14/r24)*r13 b = (1/r13 - r13)*(1/r24 - r24) + k12*k34 - k14*k23 c = k34*r24 - k23 + (k12 - k14*r24)/r13 d = k23 + (r24*k14 - k12)*r13 - r24*k34 disc = sqrt(b**2 - 4*a*(c + cI*eps*d)) ix(1,4) = DIMAG(.5D0/a*(b - disc)) ix(2,4) = DIMAG(.5D0/a*(b + disc)) disc = sqrt(b**2 - 4*a*c) x(1,4) = .5D0/a*(b - disc) x(2,4) = .5D0/a*(b + disc) if( abs(x(1,4)) .gt. abs(x(2,4)) ) then x(2,4) = c/(a*x(1,4)) else x(1,4) = c/(a*x(2,4)) endif x(1,1) = x(1,4)/r24 x(2,1) = x(2,4)/r24 x(1,2) = x(1,4)*r13/r24 x(2,2) = x(2,4)*r13/r24 x(1,3) = x(1,4)*r13 x(2,3) = x(2,4)*r13 s1 = sign(1D0, DBLE(x(1,4))) s2 = sign(1D0, DBLE(x(2,4))) ix(1,1) = ix(1,4)*DBLE(x(1,1))*s1 ix(2,1) = ix(2,4)*DBLE(x(2,1))*s2 ix(1,2) = ix(1,4)*DBLE(x(1,2))*s1 ix(2,2) = ix(2,4)*DBLE(x(2,2))*s2 ix(1,3) = ix(1,4)*DBLE(x(1,3))*s1 ix(2,3) = ix(2,4)*DBLE(x(2,3))*s2 res = 0 do j = 1, 4 res = res + Sgn(j)*( & xspence(x(1,j), ix(1,j), rij(j), irij(j)) + & xspence(x(1,j), ix(1,j), 1/rij(j), -irij(j)) ) enddo gamma = sign(1D0, DBLE(a*(x(2,4) - x(1,4)))) l(1,4) = c2ipi*eta(r13, ir13, 1/r24, -ir24, ir1324) l(2,4) = l(1,4) if( DIMAG(r13) .eq. 0 ) then r12 = k12 - r24*k14 r23 = k23 - r24*k34 r34 = k34 - r13*k14 r14 = k23 - r13*k12 q13 = k13 - 2*r13 q24 = k24 - 2*r24 c = gamma*sign(1D0, DIMAG(r24) + ir24) l(1,1) = cln(-x(1,1), -ix(1,1)) + & cln(r14 - q13/x(1,1), -1D0) + & cln((r12 - q24*x(1,4))/d, c) l(2,1) = cln(-x(2,1), -ix(2,1)) + & cln(r14 - q13/x(2,1), -1D0) + & cln((r12 - q24*x(2,4))/d, -c) c = gamma*sign(1D0, DBLE(r13)*(DIMAG(r24) + ir24)) l(1,2) = cln(-x(1,2), -ix(1,2)) + & cln(r14 - q13/x(1,1), -1D0) + & cln((r23 - q24*x(1,3))/d, c) l(2,2) = cln(-x(2,2), -ix(2,2)) + & cln(r14 - q13/x(2,1), -1D0) + & cln((r23 - q24*x(2,3))/d, -c) l(1,3) = cln(-x(1,3), -ix(1,3)) + & cln(r34 - q13/x(1,4), -1D0) + & cln((r23 - q24*x(1,3))/d, c) l(2,3) = cln(-x(2,3), -ix(2,3)) + & cln(r34 - q13/x(2,4), -1D0) + & cln((r23 - q24*x(2,3))/d, -c) etas = & xetatilde(x(1,4), ix(1,4), r13, ir13, l(1,3)) + & xetatilde(x(1,4), ix(1,4), 1/r24, -ir24, l(1,1)) - & xetatilde(x(1,4), ix(1,4), r13/r24, ir1324, l(1,2)) + & xetatilde(x(1,4), ix(1,4), -r13/r24, -ir1324, l(1,4)) else do j = 1, 3 l(1,j) = log(-x(1,j)) + & cln(kij(j) - 1/x(1,j) - x(1,j), -x(1,j)*b*gamma) l(2,j) = log(-x(2,j)) + & cln(kij(j) - 1/x(2,j) - x(2,j), -x(2,j)*b*gamma) enddo etas = & xeta(x(1,4), ix(1,4), r13, ir13, ix(1,3), l(1,3)) + & xeta(x(1,4), ix(1,4), 1/r24, -ir24, ix(1,1), l(1,1)) - & xeta(x(1,4), ix(1,4), r13/r24, ir1324, ix(1,2), l(1,2)) + & xeta(x(1,4), ix(1,4), -r13/r24, -ir1324, ix(1,4), l(1,4))* & (1 - sign(1D0, DBLE(b))*gamma) endif res = (res - c2ipi*etas + (l(2,2) - l(1,2))*l(1,4))/ & (sqrt(M(1)*M(2)*M(3)*M(4))*disc) end ************************************************************************ subroutine D0m3(res, xpi, perm) implicit none double complex res double precision xpi(13) integer perm #include "lt.h" double precision m2, m3, m4, p1, p2, p3, p4, p1p2, p2p3 double precision m, k12, k13, k14, k23, k24, k34 double precision ir12, ir14, ir24, ix1(2), ix4(2) double complex r12, r14, r24, q12, q24 double complex x1(2), x4(2), l4(2) double complex a, b, c, d double complex cln, xspence, xetatilde external cln, xspence, xetatilde m2 = Mx(2) m3 = Mx(3) m4 = Mx(4) p1 = Px(1) p2 = Px(2) p3 = Px(3) p4 = Px(4) p1p2 = Px(5) p2p3 = Px(6) m = sqrt(m3*m4) k23 = (m4 - p4)/m k12 = (m4 + m3 - p3)/m r12 = k2r(k12) ir12 = 0 if( k12 .lt. -2 ) ir12 = sign(10D0, 1 - abs(r12)) m = sqrt(m2*m3) k34 = (m2 - p1)/m k14 = (m2 + m3 - p2)/m r14 = k2r(k14) ir14 = 0 if( k14 .lt. -2 ) ir14 = sign(10D0, 1 - abs(r14)) k13 = (m3 - p1p2)/m3 m = sqrt(m2*m4) k24 = (m2 + m4 - p2p3)/m r24 = k2r(k24) ir24 = 0 if( k24 .lt. -2 ) ir24 = sign(10D0, 1 - abs(r24)) q24 = r24 - 1/r24 q12 = k12 - r24*k14 a = k34/r24 - k23 b = k12*k34 - k13*q24 - k14*k23 c = k13*q12 + r24*k34 - k23 d = sqrt(DCMPLX((k12*k34 - k13*k24 - k14*k23)**2 - & 4*(k13*(k13 - k23*(k12 - k14*k24)) + & k23*(k23 - k24*k34) + k34*(k34 - k13*k14)))) x4(1) = .5D0/a*(b - d) x4(2) = .5D0/a*(b + d) if( abs(x4(1)) .gt. abs(x4(2)) ) then x4(2) = c/(a*x4(1)) else x4(1) = c/(a*x4(2)) endif d = -k34*r24 + k23 ix4(1) = sign(1D0, DBLE(d)) ix4(2) = -ix4(1) x1(1) = x4(1)/r24 x1(2) = x4(2)/r24 ix1(1) = sign(1D0, ix4(1)*DBLE(r24)) ix1(2) = -ix1(1) c = cln(DCMPLX(k13), -1D0) l4(1) = c + cln((q12 + q24*x4(1))/d, DBLE(q24*ix4(1)/d)) l4(2) = c + cln((q12 + q24*x4(2))/d, DBLE(q24*ix4(2)/d)) res = ( & xspence(x4, ix4, r14, ir14) + & xspence(x4, ix4, 1/r14, -ir14) - & xspence(x4, ix4, DCMPLX(k34/k13), -k13) - & xspence(x1, ix1, r12, ir12) - & xspence(x1, ix1, 1/r12, -ir12) + & xspence(x1, ix1, DCMPLX(k23/k13), -k13) - & c2ipi*xetatilde(x4, ix4, 1/r24, -ir24, l4) & )/(m3*m*a*(x4(2) - x4(1))) end ************************************************************************ subroutine D0m2(res, xpi, perm) implicit none double complex res double precision xpi(13) integer perm #include "lt.h" double precision m3, m4, p1, p2, p3, p4, p1p2, p2p3 double precision m, k12, k13, k14, k23, k24, k34 double complex k12c, k13c, k23c, k24c, k34c double complex r14, x4(2) double complex a, b, c, disc double complex xspence external xspence double precision imzero(2) data imzero /0D0, 0D0/ m3 = Mx(3) m4 = Mx(4) p1 = Px(1) p2 = Px(2) p3 = Px(3) p4 = Px(4) p1p2 = Px(5) p2p3 = Px(6) k12 = (m3 - p2)/m3 k12c = AddEps(k12) k13 = (m3 - p1p2)/m3 k13c = AddEps(k13) k23 = -p1/m3 k23c = AddEps(k23) m = sqrt(m3*m4) k24 = (m4 - p2p3)/m k24c = AddEps(k24)/k12c k34 = (m4 - p4)/m k34c = AddEps(k34)/k13c k14 = (m3 + m4 - p3)/m r14 = k2r(k14) r14 = r14*DCMPLX(1D0, sign(eps, DBLE(1/r14 - r14))) a = k34*k24 - k23 b = k13*k24 + k12*k34 - k14*k23 c = k13*k12 - k23*(1 - cI*eps) disc = sqrt(b**2 - 4*a*c) x4(1) = .5D0/a*(b - disc) x4(2) = .5D0/a*(b + disc) if( abs(x4(1)) .gt. abs(x4(2)) ) then x4(2) = c/(a*x4(1)) else x4(1) = c/(a*x4(2)) endif res = ( & xspence(x4, imzero, r14, 0D0) + & xspence(x4, imzero, 1/r14, 0D0) - & xspence(x4, imzero, k34c, 0D0) - & xspence(x4, imzero, k24c, 0D0) + & (log(x4(2)) - log(x4(1)))* & (log(k12c) + log(k13c) - log(k23c)) & )/(m3*m*a*(x4(2) - x4(1))) end ************************************************************************ subroutine D0m1(res, xpi, perm) implicit none double complex res double precision xpi(13) integer perm #include "lt.h" double precision m4, k12, k13, k14, k23, k24, k34 double complex k12c, k13c, k14c, k23c, k24c, k34c double precision a, b double complex c, disc, x4(2) double complex xspence external xspence double precision imzero(2) data imzero /0D0, 0D0/ m4 = Mx(4) k12 = (m4 - Px(3))/m4 k12c = AddEps(k12) k13 = (m4 - Px(4))/m4 k13c = AddEps(k13) k14 = (m4 - Px(6))/m4 k14c = AddEps(k14) k23 = -Px(5)/m4 k23c = AddEps(k23) k24 = -Px(2)/m4 k24c = AddEps(k24)/k12c k34 = -Px(1)/m4 k34c = AddEps(k34)/k13c a = k34*k24 b = k13*k24 + k12*k34 - k14*k23 c = k13*k12 - k23*(1 - cI*eps) disc = sqrt(b*b - 4*a*c) x4(1) = .5D0/a*(b - disc) x4(2) = .5D0/a*(b + disc) if( abs(x4(1)) .gt. abs(x4(2)) ) then x4(2) = c/(a*x4(1)) else x4(1) = c/(a*x4(2)) endif res = ( & xspence(x4, imzero, k14c, 0D0) - & xspence(x4, imzero, k34c, 0D0) - & xspence(x4, imzero, k24c, 0D0) + & (log(x4(2)) - log(x4(1)))* & (log(k12c) + log(k13c) - log(k23c)) & )/(m4**2*a*(x4(2) - x4(1))) end ************************************************************************ subroutine D0m0(res, xpi) implicit none double complex res double precision xpi(13) #include "lt.h" double precision m2, k12, k13, k14, k23, k24, k34 double complex k12c, k13c, k14c, k23c, k24c, k34c double precision a, b double complex c, disc, x4(2) double complex xspence external xspence double precision imzero(2) data imzero /0D0, 0D0/ m2 = abs(P(6)) k12 = -P(1)/m2 k12c = AddEps(k12) k13 = -P(5)/m2 k13c = AddEps(k13) k14 = -P(4)/m2 k14c = AddEps(k14) k23 = -P(2)/m2 k23c = AddEps(k23) k24 = -P(6)/m2 k24c = AddEps(k24)/k12c k34 = -P(3)/m2 k34c = AddEps(k34)/k13c a = k34*k24 b = k13*k24 + k12*k34 - k14*k23 c = k13*k12 + cI*eps*k23 disc = sqrt(b*b - 4*a*c) x4(1) = .5D0/a*(b - disc) x4(2) = .5D0/a*(b + disc) if( abs(x4(1)) .gt. abs(x4(2)) ) then x4(2) = c/(a*x4(1)) else x4(1) = c/(a*x4(2)) endif res = ( & (log(x4(2)) - log(x4(1)))* & (-.5D0*(log(x4(2)) + log(x4(1))) + & log(k12c) + log(k13c) - log(k23c) - log(k14c)) - & xspence(x4, imzero, k34c, 0D0) - & xspence(x4, imzero, k24c, 0D0) & )/(m2**2*a*(x4(2) - x4(1))) end ************************************************************************ double complex function xspence(z1, im1, z2, im2) implicit none double complex z1(2), z2 double precision im1(2), im2 #include "lt.h" double complex cspence external cspence xspence = cspence(z1(2), im1(2), z2, im2) - & cspence(z1(1), im1(1), z2, im2) end ************************************************************************ double complex function cspence(z1, im1, z2, im2) implicit none double complex z1, z2 double precision im1, im2 #include "lt.h" double complex cln, spence integer eta external cln, spence, eta double complex z12 double precision im12 integer etas z12 = z1*z2 im12 = im2*sign(1D0, DBLE(z1)) if( DBLE(z12) .gt. .5D0 ) then cspence = spence(1 - z12, 0D0) etas = eta(z1, im1, z2, im2, im12) if( etas .ne. 0 ) cspence = cspence + & etas*cln(1 - z12, -im12)*c2ipi else if( abs(z12) .lt. 1D-4 ) then cspence = pi6 if( abs(z12) .gt. 1D-14 ) cspence = cspence - & spence(z12, 0D0) + & (cln(z1, im1) + cln(z2, im2))*z12* & (1 + z12*(.5D0 + z12*(1/3D0 + z12/4D0))) else cspence = pi6 - spence(z12, 0D0) - & (cln(z1, im1) + cln(z2, im2))*cln(1 - z12, 0D0) endif end ************************************************************************ double complex function xeta(z1, im1, z2, im2, im12, l1) implicit none double complex z1(2), z2, l1(2) double precision im1(2), im2, im12 #include "lt.h" integer eta external eta xeta = l1(2)*eta(z1(2), im1(2), z2, im2, im12) - & l1(1)*eta(z1(1), im1(1), z2, im2, im12) end ************************************************************************ double complex function xetatilde(z1, im1, z2, im2, l1) implicit none double complex z1(2), z2, l1(2) double precision im1(2), im2 #include "lt.h" integer etatilde external etatilde xetatilde = l1(2)*etatilde(z1(2), im1(2), z2, im2) - & l1(1)*etatilde(z1(1), im1(1), z2, im2) end ************************************************************************ integer function etatilde(c1, im1x, c2, im2x) implicit none double complex c1, c2 double precision im1x, im2x double precision im1, im2 integer eta external eta im1 = DIMAG(c1) if( im1 .eq. 0 ) im1 = im1x im2 = DIMAG(c2) if( im2 .ne. 0 ) then etatilde = eta(c1, im1x, c2, 0D0, 0D0) else if( DBLE(c2) .gt. 0 ) then etatilde = 0 else if( im1 .gt. 0 .and. im2x .gt. 0 ) then etatilde = -1 else if( im1 .lt. 0 .and. im2x .lt. 0 ) then etatilde = 1 else etatilde = 0 #ifdef WARNINGS if( im1 .eq. 0 .and. DBLE(c1) .lt. 0 .or. & im2x .eq. 0 .and. DBLE(c1*c2) .lt. 0 ) & print *, "etatilde not defined" #endif endif end herwig++-2.6.0.orig/Looptools/D/D0C.F0000644000175000017500000000323411754474774017633 0ustar sylvestresylvestre* D0C.F * the scalar four-point function with complex masses * this file is part of LoopTools * last modified 29 Jan 09 th #include "defs.h" double complex function D0C(p1, p2, p3, p4, p1p2, p2p3, & m1, m2, m3, m4) implicit none double complex p1, p2, p3, p4, p1p2, p2p3 double complex m1, m2, m3, m4 #include "lt.h" double complex cpi(10), res(0:1) integer key, ier, ier1 cpi(1) = m1 cpi(2) = m2 cpi(3) = m3 cpi(4) = m4 cpi(5) = p1 cpi(6) = p2 cpi(7) = p3 cpi(8) = p4 cpi(9) = p1p2 cpi(10) = p2p3 ier = 0 key = ibits(versionkey, KeyD0C, 2) if( key .ne. 1 ) call ffd0c(res(0), cpi, 0, ier) if( key .ne. 0 ) then ier1 = 0 call ffd0c(res(1), cpi, 1, ier1) if( key .gt. 1 .and. & abs(res(0) - res(1)) .gt. maxdev*abs(res(0)) ) then print *, "Discrepancy in D0C:" print *, " p1 =", p1 print *, " p2 =", p2 print *, " p3 =", p3 print *, " p4 =", p4 print *, " p1p2 =", p1p2 print *, " p2p3 =", p2p3 print *, " m1 =", m1 print *, " m2 =", m2 print *, " m3 =", m3 print *, " m4 =", m4 print *, "D0C a =", res(0) print *, "D0C b =", res(1) if( ier1 .lt. ier .and. ier .gt. errdigits ) & res(0) = res(1) endif endif D0C = res(iand(key, 1)) end ************************************************************************ * adapter code for C++ subroutine d0subc(res, p1, p2, p3, p4, p1p2, p2p3, & m1, m2, m3, m4) implicit none double complex res double complex p1, p2, p3, p4, p1p2, p2p3 double complex m1, m2, m3, m4 double complex D0C external D0C res = D0C(p1, p2, p3, p4, p1p2, p2p3, m1, m2, m3, m4) end herwig++-2.6.0.orig/Looptools/D/ffxd0h.F0000644000175000017500000004154711754474774020455 0ustar sylvestresylvestre#include "externals.h" *--#[ log: * $Id: ffxd0h.f,v 1.6 1996/01/22 13:33:49 gj Exp $ * $Log: ffxd0h.f,v $ c Revision 1.6 1996/01/22 13:33:49 gj c Added the word 'error' to print statements in ffxuvw that u,v,w were wrong c c Revision 1.5 1995/12/08 10:48:32 gj c Changed xloss to xlosn to prevent spurious error messages. c c Revision 1.4 1995/11/10 18:55:46 gj c JUst added some comments in ffrot4 c c Revision 1.3 1995/10/29 15:37:43 gj c Revision 1.2 1995/10/17 06:55:13 gj c Fixed ieps error in ffdcrr (ffcxs4.f), added real case in ffcrr, debugging c info in ffxd0, and warned against remaining errors for del2=0 in ffrot4 c (ffxd0h.f) c *--#] log: *###[ ffrot4: subroutine ffrot4(irota,del2,xqi,dqiqj,qiDqj,xpi,dpipj,piDpj,ii, + itype,ier) ***#[*comment:*********************************************************** * * * rotates the arrays xpi, dpipj into xqi,dqiqj over irota places * * such that del2(s3,s4)<=0. itype=0 unless del2(s3,s4)=0 (itype=1)* * itype=2 if the 4pointfunction is doubly IR-divergent * * ((0,0,0)vertex) * * * * Input: xpi(13) real momenta squared * * dpipj(10,13) real xpi(i) - xpi(j) * * piDpj(10,10) real if ( ii>4) pi.pj * * ii integer 4: from Do, 5: from E0 * * Output: irota integer # of positions rotated + 1 * * del2 real delta(s3,s4,s3,s4) chosen * * * xqi,dqiqj,qiDqj real rotated (q->p) * * itype integer 0:normal, -1:failure, 1:del2=0 * * 2:doubly IR * * ier integer usual error flag * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer irota,ier,ii,itype DOUBLE PRECISION del2,xpi(13),dpipj(10,13),piDpj(10,10), + xqi(13),dqiqj(10,13),qiDqj(10,10) * * local variables * integer i,j,izero,ier0,init DOUBLE COMPLEX chulp(4,4) save init * * common blocks * #include "ff.h" * * data * data init /0/ * * #] declarations: * #[ find out which del2 is negative: (or zero) izero = 0 do 40 irota = 1,12 * * first check if we have a doubly IR divergent diagram * if ( xpi(iold(3,irota)) .eq. 0 .and. + xpi(iold(4,irota)) .eq. 0 .and. + xpi(iold(7,irota)) .eq. 0 .and. + dpipj(iold(1,irota),iold(8,irota)) .eq. 0 .and. + dpipj(iold(2,irota),iold(6,irota)) .eq. 0 ) then del2 = 0 goto 41 endif * * We can at this moment only handle s3^2 = 0 * (Hope to include two masses 0 later) * I hope nothing goes wrong if we leave out: * >xpi(iold(1,irota)) .eq. 0 .or. * + xpi(iold(2,irota)) .eq. 0 .or. * + < * 'cause I can't see why it was included in the first place.. * if ( xpi(iold(4,irota)) .eq. 0 ) goto 40 * * Well, the combination s2=0, p6=s3, p10=s4 gives 1/A2=0 twice * if ( xpi(iold(2,irota)) .eq. 0 .and. + dpipj(iold( 6,irota),iold(3,irota)) .eq. 0 .and. + dpipj(iold(10,irota),iold(4,irota)) .eq. 0) + goto 40 * * phenomenologically this combo also gives an infinite result * if ( xpi(iold(1,irota)) .eq. 0 .and. + xpi(iold(2,irota)) .eq. 0 .and. + dpipj(iold( 8,irota),iold(4,irota)) .eq. 0 .and. + dpipj(iold( 9,irota),iold(3,irota)) .eq. 0) + goto 40 * * I just found out that this gives two times 1/A1 = 0 * if ( xpi(iold(7,irota)) .eq. 0 .and. + dpipj(iold(9,irota),iold(3,irota))+ + dpipj(iold(4,irota),iold(8,irota)) .eq. 0 ) + goto 40 if ( xpi(iold(1,irota)) .eq. 0 .and. + dpipj(iold(9,irota),iold(3,irota)) .eq. 0 .and. + dpipj(iold(4,irota),iold(8,irota)) .eq. 0 .and. + .not.lnasty ) + goto 40 * * the nasty case wants xpi(1)=0, xpi(2) real: * if ( lnasty ) then if ( xpi(iold(1,irota)).ne.0 .or. DIMAG( + c2sisj(iold(1,irota),iold(2,irota))).ne.0 ) then print *,'no good: nasty but s1!=0 or s2 not real' goto 40 endif endif * * all masses equal, three momenta zero: * added by TH 24 Dec 09 * #if 0 if( xpi(iold(5,irota)) .eq. 0 .and. & xpi(iold(6,irota)) .eq. 0 .and. & xpi(iold(7,irota)) .eq. 0 .and. & abs(xpi(iold(1,irota)) - xpi(iold(2,irota))) + & abs(xpi(iold(1,irota)) - xpi(iold(3,irota))) + & abs(xpi(iold(1,irota)) - xpi(iold(4,irota))) & .lt. precx ) then itype = 3 return endif #endif * ier0 = 0 call ffxlam(del2,xpi,dpipj,10, + iold(3,irota),iold(4,irota),iold(7,irota)) * * we can only handle del2=0 if p_i^2 = 0 (and thus m_i=m_{i+1}) * if ( del2 .lt. 0 ) then itype = 0 goto 50 endif if ( del2 .eq. 0 .and. izero .eq. 0 .and. xpi(iold(7,irota)) + .eq. 0 ) then izero = irota endif 40 continue ier = ier + ier0 if ( izero .eq. 0 ) then call fferr(54,ier) itype = -1 irota = 1 else irota = izero del2 = 0 itype = 1 if ( init.lt.10 ) then init = init + 1 print *,'ffrota: warning: the algorithms for del2=0 have not ' print *,' yet been tested thoroughly, and in fact are ' print *,' known to contain bugs.' print *,' ==> DOUBLECHECK EVERYTHING WITH SMALL SPACELIKE p^2' endif endif goto 50 41 continue itype = 2 50 continue * #] find out which del2 is negative: * #[ rotate: do 20 i=1,13 xqi(i) = xpi(iold(i,irota)) do 10 j=1,10 dqiqj(j,i) = dpipj(iold(j,irota),iold(i,irota)) 10 continue 20 continue if ( ii .eq. 5 ) then do 120 i=1,10 do 110 j=1,10 qiDqj(j,i) = isgrot(iold(j,irota),irota)* + isgrot(iold(i,irota),irota)* + piDpj(iold(j,irota),iold(i,irota)) 110 continue 120 continue endif if ( lsmug .or. lnasty ) then do 220 j=1,4 do 210 i=1,4 chulp(i,j) = c2sisj(i,j) 210 continue 220 continue do 240 j=1,4 do 230 i=1,4 c2sisj(i,j) = chulp(iold(i,irota),iold(j,irota)) 230 continue 240 continue endif * #] rotate: *###] ffrot4: end *###[ ffxlam: subroutine ffxlam(xlam,xpi,dpipj,ns,i1,i2,i3) ************************************************************************* * * * calculate in a numerically stable way * * xlam(xpi(i1),xpi(i2),xpi(i3)) = * * = -((xpi(i1)+xpi(i2)-xpi(i3))/2)^2 + xpi(i1)*xpi(i2) * * or a permutation * * ier is the usual error flag. * * * ************************************************************************* implicit none * * arguments: * integer ns,i1,i2,i3 DOUBLE PRECISION xlam,xpi(ns),dpipj(ns,ns) * * local variables * DOUBLE PRECISION s1,s2 * * common blocks * #include "ff.h" * * calculations * if ( abs(xpi(i1)) .gt. max(abs(xpi(i2)),abs(xpi(i3))) ) then s1 = xpi(i2)*xpi(i3) if ( abs(dpipj(i1,i2)) .lt. abs(dpipj(i1,i3)) ) then s2 = ((dpipj(i1,i2) - xpi(i3))/2)**2 else s2 = ((dpipj(i1,i3) - xpi(i2))/2)**2 endif elseif ( abs(xpi(i2)) .gt. abs(xpi(i3)) ) then s1 = xpi(i1)*xpi(i3) if ( abs(dpipj(i1,i2)) .lt. abs(dpipj(i2,i3)) ) then s2 = ((dpipj(i1,i2) + xpi(i3))/2)**2 else s2 = ((dpipj(i2,i3) - xpi(i1))/2)**2 endif else s1 = xpi(i1)*xpi(i2) if ( abs(dpipj(i1,i3)) .lt. abs(dpipj(i2,i3)) ) then s2 = ((dpipj(i1,i3) + xpi(i2))/2)**2 else s2 = ((dpipj(i2,i3) + xpi(i1))/2)**2 endif endif xlam = s1 - s2 *###] ffxlam: end *###[ ffdot4: subroutine ffdot4(piDpj,xpi,dpipj,ns,ier) ***#[*comment:*********************************************************** * * * calculate the dotproducts pi.pj with * * * * pi = si i1=1,4 * * pi = p(i-3) i1=5,10 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none integer ns,ier DOUBLE PRECISION xpi(13),dpipj(10,13),piDpj(10,10) integer is1,is2,is3,ip1,ip2,ip3,i,j,ier0,ier1 DOUBLE PRECISION xmax,som,xmxp #include "ff.h" * #] declarations: * #[ check input: if ( ns .ne. 10 ) print *,'ffdot4: error: ns <> 10 ' * #] check input: * #[ special case: already known: if ( idot.ge.3 ) then do 2 i=1,10 do 1 j=1,10 piDpj(j,i) = isgrot(iold(j,irota4),irota4)* + isgrot(iold(i,irota4),irota4)* + fpij4(iold(j,irota4),iold(i,irota4)) 1 continue 2 continue return endif * #] special case: already known: * #[ indices: ier1 = ier do 10 is1=1,4 is2 = is1 + 1 if ( is2 .eq. 5 ) is2 = 1 is3 = is2 + 1 if ( is3 .eq. 5 ) is3 = 1 ip1 = is1 + 4 ip2 = is2 + 4 if ( mod(is1,2) .eq. 1 ) then ip3 = 9 else ip3 = 10 endif * #] indices: * #[ all in one vertex: * * pi.pj, si.sj * piDpj(is1,is1) = xpi(is1) piDpj(ip1,ip1) = xpi(ip1) * * si.s(i+1) * if ( xpi(is2) .le. xpi(is1) ) then piDpj(is1,is2) = (dpipj(is1,ip1) + xpi(is2))/2 else piDpj(is1,is2) = (dpipj(is2,ip1) + xpi(is1))/2 endif piDpj(is2,is1) = piDpj(is1,is2) ier0 = ier ier1 = max(ier1,ier0) * * si.s(i+2) * if ( is1 .le. 2 ) then if ( xpi(is1) .le. xpi(is3) ) then piDpj(is3,is1) = (dpipj(is3,ip3) + xpi(is1))/2 else piDpj(is3,is1) = (dpipj(is1,ip3) + xpi(is3))/2 endif piDpj(is1,is3) = piDpj(is3,is1) ier0 = ier ier1 = max(ier1,ier0) endif * * pi.si * if ( abs(xpi(ip1)) .le. xpi(is1) ) then piDpj(ip1,is1) = (dpipj(is2,is1) - xpi(ip1))/2 else piDpj(ip1,is1) = (dpipj(is2,ip1) - xpi(is1))/2 endif piDpj(is1,ip1) = piDpj(ip1,is1) ier0 = ier ier1 = max(ier1,ier0) * * pi.s(i+1) * if ( abs(xpi(ip1)) .le. xpi(is2) ) then piDpj(ip1,is2) = (dpipj(is2,is1) + xpi(ip1))/2 else piDpj(ip1,is2) = (dpipj(ip1,is1) + xpi(is2))/2 endif piDpj(is2,ip1) = piDpj(ip1,is2) ier0 = ier ier1 = max(ier1,ier0) * * p(i+2).s(i) * if ( abs(xpi(ip3)) .le. xpi(is1) ) then piDpj(ip3,is1) = (dpipj(is1,is3) + xpi(ip3))/2 else piDpj(ip3,is1) = (dpipj(ip3,is3) + xpi(is1))/2 endif if ( is1 .eq. 2 .or. is1 .eq. 3 ) + piDpj(ip3,is1) = -piDpj(ip3,is1) piDpj(is1,ip3) = piDpj(ip3,is1) ier0 = ier ier1 = max(ier1,ier0) * * #] all in one vertex: * #[ all in one 3point: * * pi.s(i+2) * if ( min(abs(dpipj(is2,is1)),abs(dpipj(ip3,ip2))) .le. + min(abs(dpipj(ip3,is1)),abs(dpipj(is2,ip2))) ) then piDpj(ip1,is3) = (dpipj(ip3,ip2) + dpipj(is2,is1))/2 else piDpj(ip1,is3) = (dpipj(ip3,is1) + dpipj(is2,ip2))/2 endif piDpj(is3,ip1) = piDpj(ip1,is3) ier0 = ier ier1 = max(ier1,ier0) * * p(i+1).s(i) * if ( min(abs(dpipj(is3,is2)),abs(dpipj(ip1,ip3))) .le. + min(abs(dpipj(ip1,is2)),abs(dpipj(is3,ip3))) ) then piDpj(ip2,is1) = (dpipj(ip1,ip3) + dpipj(is3,is2))/2 else piDpj(ip2,is1) = (dpipj(ip1,is2) + dpipj(is3,ip3))/2 endif piDpj(is1,ip2) = piDpj(ip2,is1) ier0 = ier ier1 = max(ier1,ier0) * * p(i+2).s(i+1) * if ( min(abs(dpipj(is1,is3)),abs(dpipj(ip2,ip1))) .le. + min(abs(dpipj(ip2,is3)),abs(dpipj(is1,ip1))) ) then piDpj(ip3,is2) = (dpipj(ip2,ip1) + dpipj(is1,is3))/2 else piDpj(ip3,is2) = (dpipj(ip2,is3) + dpipj(is1,ip1))/2 endif if ( is1 .eq. 2 .or. is1 .eq. 3 ) + piDpj(ip3,is2) = -piDpj(ip3,is2) piDpj(is2,ip3) = piDpj(ip3,is2) ier0 = ier ier1 = max(ier1,ier0) * * #] all in one 3point: * #[ all external 3point: if ( idot.le.0 ) then * * pi.p(i+1) * if ( abs(xpi(ip2)) .le. abs(xpi(ip1)) ) then piDpj(ip1,ip2) = (dpipj(ip3,ip1) - xpi(ip2))/2 else piDpj(ip1,ip2) = (dpipj(ip3,ip2) - xpi(ip1))/2 endif piDpj(ip2,ip1) = piDpj(ip1,ip2) ier0 = ier ier1 = max(ier1,ier0) * * p(i+1).p(i+2) * if ( abs(xpi(ip3)) .le. abs(xpi(ip2)) ) then piDpj(ip2,ip3) = (dpipj(ip1,ip2) - xpi(ip3))/2 else piDpj(ip2,ip3) = (dpipj(ip1,ip3) - xpi(ip2))/2 endif if ( is1 .eq. 2 .or. is1 .eq. 3 ) + piDpj(ip2,ip3) = -piDpj(ip2,ip3) piDpj(ip3,ip2) = piDpj(ip2,ip3) ier0 = ier ier1 = max(ier1,ier0) * * p(i+2).p(i) * if ( abs(xpi(ip1)) .le. abs(xpi(ip3)) ) then piDpj(ip3,ip1) = (dpipj(ip2,ip3) - xpi(ip1))/2 else piDpj(ip3,ip1) = (dpipj(ip2,ip1) - xpi(ip3))/2 endif if ( is1 .eq. 2 .or. is1 .eq. 3 ) + piDpj(ip3,ip1) = -piDpj(ip3,ip1) piDpj(ip1,ip3) = piDpj(ip3,ip1) ier0 = ier ier1 = max(ier1,ier0) * else * * idot > 0: copy the dotproducts from fpij4 * piDpj(ip1,ip2) = isgrot(iold(ip1,irota4),irota4)* + isgrot(iold(ip2,irota4),irota4)* + fpij4(iold(ip1,irota4),iold(ip2,irota4)) piDpj(ip2,ip1) = piDpj(ip1,ip2) piDpj(ip1,ip3) = isgrot(iold(ip1,irota4),irota4)* + isgrot(iold(ip3,irota4),irota4)* + fpij4(iold(ip1,irota4),iold(ip3,irota4)) piDpj(ip3,ip1) = piDpj(ip1,ip3) piDpj(ip2,ip3) = isgrot(iold(ip2,irota4),irota4)* + isgrot(iold(ip3,irota4),irota4)* + fpij4(iold(ip2,irota4),iold(ip3,irota4)) piDpj(ip3,ip2) = piDpj(ip2,ip3) endif 10 continue * #] all external 3point: * #[ real 4point: * * the awkward 4point dotproducts: * piDpj(9,9) = xpi(9) piDpj(10,10) = xpi(10) if ( idot.le.0 ) then *--#[ p5.p7: if ( abs(xpi(7)) .lt. abs(xpi(5)) ) then piDpj(5,7) = (-xpi(7) - dpipj(5,11))/2 else piDpj(5,7) = (-xpi(5) - dpipj(7,11))/2 endif xmax = min(abs(xpi(5)),abs(xpi(7))) if ( abs(piDpj(5,7)) .lt. xloss*xmax ) then * * second try (old algorithm) * if ( min(abs(dpipj(6,9)),abs(dpipj(8,10))) .le. + min(abs(dpipj(8,9)),abs(dpipj(6,10))) ) then som = (dpipj(6,9) + dpipj(8,10))/2 else som = (dpipj(8,9) + dpipj(6,10))/2 endif xmxp = min(abs(dpipj(6,9)),abs(dpipj(8,9))) if ( xmxp.lt.xmax ) then piDpj(5,7) = som xmax = xmxp endif ier0 = ier ier1 = max(ier1,ier0) endif piDpj(7,5) = piDpj(5,7) *--#] p5.p7: *--#[ p6.p8: if ( abs(xpi(6)) .lt. abs(xpi(8)) ) then piDpj(6,8) = (-xpi(6) - dpipj(8,11))/2 else piDpj(6,8) = (-xpi(8) - dpipj(6,11))/2 endif xmax = min(abs(xpi(6)),abs(xpi(8))) if ( abs(piDpj(6,8)) .lt. xloss*xmax ) then * * second try (old algorithm) * if ( min(abs(dpipj(5,9)),abs(dpipj(7,10))) .le. + min(abs(dpipj(7,9)),abs(dpipj(5,10))) ) then som = (dpipj(5,9) + dpipj(7,10))/2 else som = (dpipj(7,9) + dpipj(5,10))/2 endif xmxp = min(abs(dpipj(5,9)),abs(dpipj(7,9))) if ( xmxp.lt.xmax ) then piDpj(6,8) = som xmax = xmxp endif ier0 = ier ier1 = max(ier1,ier0) endif piDpj(8,6) = piDpj(6,8) *--#] p6.p8: *--#[ p9.p10: if ( abs(xpi(9)) .lt. abs(xpi(10)) ) then piDpj(9,10) = (-xpi(9) - dpipj(10,13))/2 else piDpj(9,10) = (-xpi(10) - dpipj(9,13))/2 endif xmax = min(abs(xpi(9)),abs(xpi(10))) if ( abs(piDpj(9,10)) .lt. xloss*xmax ) then * * second try (old algorithm) * if ( min(abs(dpipj(5,6)),abs(dpipj(7,8))) .le. + min(abs(dpipj(7,6)),abs(dpipj(5,8))) ) then som = (dpipj(5,6) + dpipj(7,8))/2 else som = (dpipj(7,6) + dpipj(5,8))/2 endif xmxp = min(abs(dpipj(5,6)),abs(dpipj(7,6))) if ( xmxp.lt.xmax ) then piDpj(9,10) = som xmax = xmxp endif ier0 = ier ier1 = max(ier1,ier0) endif piDpj(10,9) = piDpj(9,10) *--#] p9.p10: else *--#[ copy: * * idot > 1: just copy from fpij4... * piDpj(5,7) = isgrot(iold(5,irota4),irota4)* + isgrot(iold(7,irota4),irota4)* + fpij4(iold(5,irota4),iold(7,irota4)) piDpj(7,5) = piDpj(5,7) piDpj(6,8) = isgrot(iold(6,irota4),irota4)* + isgrot(iold(8,irota4),irota4)* + fpij4(iold(6,irota4),iold(8,irota4)) piDpj(8,6) = piDpj(6,8) piDpj(9,10)= isgrot(iold(9,irota4),irota4)* + isgrot(iold(10,irota4),irota4)* + fpij4(iold(9,irota4),iold(10,irota4)) piDpj(10,9) = piDpj(9,10) *--#] copy: endif ier = ier1 * #] real 4point: *###] ffdot4: end *###[ ffgdt4: subroutine ffgdt4(piDpj,xpip,dpipjp,xpi,ier) ***#[*comment:*********************************************************** * * * calculate the dotproducts pi.pj with * * and store results in common when asked for * * * * pi = si i1=1,4 * * pi = p(i-3) i1=5,10 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE PRECISION piDpj(10,10),xpip(13),dpipjp(10,13),xpi(13) integer ier * * local variables * integer i,j,ii(6) DOUBLE PRECISION dl3p * * common blocks: * #include "ff.h" * * #] declarations: * #[ get dotproducts: * * Calculate the dotproducts * call ffdot4(piDpj,xpip,dpipjp,10,ier) if ( ldot .and. idot.lt.3 ) then do 65 i=1,10 do 64 j=1,10 fpij4(iold(j,irota4),iold(i,irota4)) = + isgrot(iold(j,irota4),irota4)* + isgrot(iold(i,irota4),irota4)*piDpj(j,i) 64 continue 65 continue endif if ( ldot ) then if ( abs(idot).lt.2 ) then ii(1)= 5 ii(2)= 6 ii(3)= 7 ii(4)= 8 ii(5)= 9 ii(6)= 10 fidel3 = ier call ffdl3p(dl3p,piDpj,10,ii,ii) fdel3 = dl3p else dl3p = fdel3 endif if ( dl3p .lt. 0 ) then call fferr(44,ier) print *,'overall vertex has del3 ',dl3p print *,'xpi = ',xpi endif endif * #] get dotproducts: *###] ffgdt4: end herwig++-2.6.0.orig/Looptools/D/ffxd0tra.F0000644000175000017500000000755711754474774021017 0ustar sylvestresylvestre* ffd0tra.F * a special case of the D0 function * original code by Francesco Tramontano * this file is part of LoopTools * last modified 8 Dec 10 th #include "externals.h" subroutine ffd0tra(res, S, T, ML2, ME2, ier) implicit none DOUBLE COMPLEX res DOUBLE PRECISION S, T, ML2, ME2 integer ier c===============================c c c c p1 S p2 c c \ / c c \ / c S = (p1+p2)^2 c \========/ c T = (p2+p3)^2 c || || c ML2= mass-square of the particle in the loop c || || T c ME2= mass-square of the external particle p4 c || || c c E========\ c c E ML2 \ c c E \ c c p3 c c p4^2=ME2 c c c c===============================c DOUBLE COMPLEX xp, xm, ypS, ymS, ypT, ymT, ypE, ymE DOUBLE COMPLEX xr, yr integer iepsS, iepsT, iepsE DOUBLE COMPLEX ffint3 external ffint3 c PRINT *, "ML2=", ML2 c PRINT *, "ME2=", ME2 c PRINT *, "S=", S c PRINT *, "T=", T call fftraroot(xm, xp, xr, -ML2*(ME2 - S - T)/(S*T)) call fftraroot(ymS, ypS, yr, ML2/S) call fftraroot(ymT, ypT, yr, ML2/T) call fftraroot(ymE, ypE, yr, ML2/ME2) iepsS = 0 if( S .gt. 0 ) iepsS = 1 iepsT = 0 if( T .gt. 0 ) iepsT = 1 iepsE = 0 if( ME2 .gt. 0 ) iepsE = 1 res = ( & ffint3(ypS, xm, iepsS, ier) - ffint3(ypS, xp, iepsS, ier) + & ffint3(ymS, xm, -iepsS, ier) - ffint3(ymS, xp, -iepsS, ier) + & ffint3(ypT, xm, iepsT, ier) - ffint3(ypT, xp, iepsT, ier) + & ffint3(ymT, xm, -iepsT, ier) - ffint3(ymT, xp, -iepsT, ier) - & ffint3(ypE, xm, iepsE, ier) + ffint3(ypE, xp, iepsE, ier) - & ffint3(ymE, xm, -iepsE, ier) + ffint3(ymE, xp, -iepsE, ier) & )/(xr*S*T) end ************************************************************************ subroutine fftraroot(xm, xp, r, c) ***#[*comment:*********************************************************** * * * roots of quadratic equation x^2 + x + c == 0 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none DOUBLE COMPLEX xm, xp, r DOUBLE PRECISION c * #] declarations: r = sqrt(DCMPLX(1 - 4*c)) xp = .5D0*(1 + r) xm = .5D0*(1 - r) c PRINT *, "c=", c c PRINT *, "r=", r c PRINT *, "xp=", xp c PRINT *, "xm=", xm if( abs(xp) .gt. abs(xm) ) then xm = c/xp else xp = c/xm endif c PRINT *, "xp'=", xp c PRINT *, "xm'=", xm end ************************************************************************ DOUBLE COMPLEX function ffint3(y, x, ieps, ier) implicit none DOUBLE COMPLEX y, x integer ieps, ier * compute \int_0^1 dz log(z - y)/(z - x) #include "ff.h" DOUBLE COMPLEX arg1, arg2, dd1, dd2, zlog integer ipi121, ipi122 c DOUBLE PRECISION rarg1, rarg2 c equivalence (arg1, rarg1), (arg2, rarg2) c DOUBLE PRECISION ddilog c DOUBLE COMPLEX li2 c external ddilog, li2 if( DIMAG(x) .ne. 0 ) call ffwarn(258, ier, 1D0, 0D0) arg1 = x/(x - y) if( abs(DIMAG(arg1)) .lt. 1D-15 ) then call ffzxdl(dd1, ipi121, zlog, arg1, ieps, ier) c dd1 = ddilog(rarg1) c if( rarg1 .gt. 1 ) c & dd1 = dd1 + eps*sign(pi, x)*log(rarg1)*cI else call ffzzdl(dd1, ipi121, zlog, arg1, ier) c dd1 = li2(arg1) endif arg2 = (x - 1)/(x - y) if( abs(DIMAG(arg2)) .lt. 1D-15 ) then call ffzxdl(dd2, ipi122, zlog, arg2, ieps, ier) c dd2 = ddilog(rarg2) c if( rarg2 .gt. 1 ) c & dd2 = dd2 - eps*sign(pi, 1 - x)*log(rarg2)*cI else call ffzzdl(dd2, ipi122, zlog, arg2, ier) c dd2 = li2(arg2) endif ffint3 = dd1 - dd2 + (ipi121 - ipi122)*pi12 end herwig++-2.6.0.orig/Looptools/D/ffRn.F0000644000175000017500000000707111754474774020163 0ustar sylvestresylvestre* ffRn.F * calculate Rn = \int_0^1 dx (x - cz - I signz) (x - cy - I signy) * Input: cy, cz, signz, signy * i*sign=-i*eps is needed in the case of real masses * this file is part of LoopTools * last modified 8 Dec 10 th * Written by Le Duc Ninh, MPI, Munich (Dec 15, 2008). * Spence, log and eta functions are taken from FF. * 14 Aug 2009: changed ieps of cdyza to "signy" (before used "signza"). #include "externals.h" double complex function ffRn(cy, signy, cz, signz, ier) implicit none double complex cy, cz double precision signy, signz integer ier #include "ff.h" double complex c1, c2, c1yz, cab1, cab2, dummy double precision sz, syz, sab1, sab2 integer n double complex zfflog integer nffet1 external zfflog, nffet1 if( abs(cy - cz) .lt. precx ) then * cy == cza and check for singularities * be careful with log(0) singularity. sz = signz c1 = 0 c2 = 0 if( abs(DIMAG(cy)) .lt. precx .and. signy*sz .lt. 0 ) then sz = signy if( DBLE(cy) .ge. 0 ) then c2 = sign(2D0, signz)*c2ipi if( DBLE(cy) .le. 1 ) then call ffwarn(255, ier, 1D0, 0D0) c1 = c2*(zfflog(-cy, 1, DCMPLX(-sz), ier) - & zfflog(DCMPLX(-1D-16), 1, DCMPLX(-sz), ier)) c2 = 0 endif endif endif ffRn = .5D0*(c1 + & zfflog((cy - 1)/cy, 1, DCMPLX(sz), ier)*( & zfflog(1 - cy, 1, DCMPLX(-sz), ier) + & zfflog(-cy, 1, DCMPLX(-sz), ier) - c2 )) return endif * calculate the sign of imaginary parts and eta functions * we do not need the ieps for y0 * if im(y0) == im(y1) we may need the ieps for the logs sz = DIMAG(cz) if( sz .eq. 0 ) sz = signz syz = DIMAG(cy - cz) if( syz .eq. 0 ) syz = signy c1yz = 1/(cy - cz) sab1 = DIMAG(-cz*c1yz) if( sab1 .eq. 0 ) then sab1 = DBLE(cz)*signy c if( sab1 .eq. 0 ) call ffwarn(256, ier, 1D0, 0D0) * this step: not checked but same as below * choose +signy since this ieps is relevant if cza in (0,1) if( sab1 .eq. 0 ) sab1 = signy endif sab2 = DIMAG((1 - cz)*c1yz) if( sab2 .eq. 0 ) then sab2 = -DBLE(1 - cz)*signy c if( sab2 .eq. 0 ) call ffwarn(257, ier, 1D0, 0D0) * this step: checked and worked * choose -signy since this ieps is relevant if cza in (0,1) if( sab2 .eq. 0 ) sab2 = -signy endif * calculate R-func from Sp-func * def: R(y0, y1) = * Sp(y0/(y0-y1)) + ln(y0/(y0-y1))*eta(-y1,1/(y0-y1)) - * Sp((y0-1)/(y0-y1)) - ln((y0-1)/(y0-y1))*eta(1-y1,1/(y0-y1)) * calculate the two dilogs * calls "ffzzdl(zdilog,ipi12,zlog,cx,ier)" in "ffcli2.F" or Li2C(z) cab1 = cy*c1yz if( DIMAG(cab1) .eq. 0 .and. DBLE(cab1) .ge. 1 ) then call ffzzdl(c1, n, dummy, 1/cab1, ier) c1 = -c1 - n*pi12 - pi6 - & .5D0*zfflog(-cab1, 1, DCMPLX(sab1), ier)**2 else call ffzzdl(c1, n, dummy, cab1, ier) c1 = c1 + n*pi12 endif cab2 = (cy - 1)*c1yz if( DIMAG(cab2) .eq. 0 .and. DBLE(cab2) .ge. 1 ) then call ffzzdl(c2, n, dummy, 1/cab2, ier) c2 = -c2 - n*pi12 - pi6 - & .5D0*zfflog(-cab2, 1, DCMPLX(sab2), ier)**2 else call ffzzdl(c2, n, dummy, cab2, ier) c2 = c2 + n*pi12 endif * calculate the two logs * ieps=1 to choose the cut along the real axis, n = nffet1(DCMPLX(0D0, -sz), DCMPLX(0D0, -syz), & DCMPLX(0D0, sab1), ier) if( n .ne. 0 ) & c1 = c1 + n*c2ipi*zfflog(cab1, 1, DCMPLX(-sab1), ier) n = nffet1(DCMPLX(0D0, -sz), DCMPLX(0D0, -syz), & DCMPLX(0D0, sab2), ier) if( n .ne. 0 ) & c2 = c2 + n*c2ipi*zfflog(cab2, 1, DCMPLX(-sab2), ier) ffRn = c1 - c2 + & zfflog((cy - 1)/cy, 1, DCMPLX(signy), ier)* & zfflog(cy - cz, 1, DCMPLX(signy), ier) end herwig++-2.6.0.orig/Looptools/D/ffxd0i.F0000644000175000017500000000706011754474774020446 0ustar sylvestresylvestre#include "externals.h" *###[ ffx2ir: subroutine ffx2ir(cs1,cs2,xpip,dpipjp,ier) ***#[*comment:*********************************************************** * * * Get the terms to correct for the second IR pole which is * * treated incorrectly if the first one is regulated with a small * * mass lam and they are adjacent. It is assumed that xpi(3)= * * xpi(4)=xpi(7)=0, xpi(1)=xpi(8), xpi(2)=xpi(6). The correction * * terms are * * * * cs1 = -C0(m2^2,0,lam^2;m2^2,0,p10^2)/(s-m1^2) * * cs2 = +C0(m2^2,lam^2,0;m2^2,0,p10^2)/(s-m1^2) * * * * when xpi(4) = lambda is taken in the D0, * * * * cs1 = -C0(lam^2,0,m1^2;0,m1^2,p9^2)/(t-m2^2) * * cs2 = +C0(0,lam^2,m1^2;0,m1^2,p9^2)/(t-m2^2) * * * * when xpi(3) = lambda. Not yet tested. * * * * 10-oct-1991 Geert Jan van Oldenborgh * * * * Input: xpip(13) (real) usual 4point pi.pi * * dpipjp(10,13) (real) xpip(i) - xpip(j) * * output: xpip(13) (real) usual 4point pi.pi modified * * dpipjp(10,13) (real) xpip(i) - xpip(j) modified * * cs1,cs2 (complex) * * ier (integer) * * calls: ffxc0 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cs1,cs2 DOUBLE PRECISION xpip(13),dpipjp(10,13) * * local vars * integer itest,ier0,ier1,i,j,iinx(6,4) DOUBLE COMPLEX cc0 DOUBLE PRECISION xpi3(6),dpipj3(6,6) save itest,iinx * * common * #include "ff.h" * * data * * 3=put mass on xpi(3) * 4=put mass on xpi(4) data itest /4/ data iinx /2,3,4,6,7,10, + 1,3,4,9,7,8, + 1,2,4,5,10,8, + 1,2,3,5,6,9/ * * #] declarations: * #[ work 3: if ( itest .eq. 3 ) then * * modify xpip,dpipjp * xpip(3) = lambda do 10 i=1,10 dpipjp(i,3) = dpipjp(i,3) - lambda 10 continue do 20 i=1,13 dpipjp(3,i) = dpipjp(3,i) + lambda 20 continue * * call first C0 * do 120 i=1,6 xpi3(i) = xpip(iinx(i,2)) do 110 j=1,6 dpipj3(j,i) = dpipjp(iinx(j,2),iinx(i,2)) 110 continue 120 continue idsub = idsub + 1 ier1 = 0 call ffxc0a(cc0,xpi3,dpipj3,ier1) cs1 = -cc0/DBLE(dpipjp(9,2)) * * call second C0 * xpi3(2) = 0 xpi3(3) = lambda do 130 i=1,6 dpipj3(i,2) = dpipj3(i,2) + lambda dpipj3(i,3) = dpipj3(i,3) - lambda 130 continue do 140 i=1,6 dpipj3(2,i) = dpipj3(2,i) - lambda dpipj3(3,i) = dpipj3(3,i) + lambda 140 continue idsub = idsub + 1 ier0 = 0 call ffxc0a(cc0,xpi3,dpipj3,ier0) cs2 = +cc0/DBLE(dpipjp(9,2)) ier1 = max(ier1,ier0) ier = ier + ier1 * #] work 3: * #[ work 4: elseif ( itest .eq. 4 ) then * * modify xpip,dpipjp * xpip(4) = lambda do 210 i=1,10 dpipjp(i,4) = dpipjp(i,4) - lambda 210 continue do 220 i=1,13 dpipjp(4,i) = dpipjp(4,i) + lambda 220 continue * * call first C0 * do 320 i=1,6 xpi3(i) = xpip(iinx(i,1)) do 310 j=1,6 dpipj3(j,i) = dpipjp(iinx(j,1),iinx(i,1)) 310 continue 320 continue idsub = idsub + 1 ier1 = 0 call ffxc0a(cc0,xpi3,dpipj3,ier1) cs1 = -cc0/DBLE(dpipjp(10,1)) * * call second C0 * xpi3(3) = 0 xpi3(2) = lambda do 330 i=1,6 dpipj3(i,3) = dpipj3(i,3) + lambda dpipj3(i,2) = dpipj3(i,2) - lambda 330 continue do 340 i=1,6 dpipj3(3,i) = dpipj3(3,i) - lambda dpipj3(2,i) = dpipj3(2,i) + lambda 340 continue idsub = idsub + 1 ier0 = 0 call ffxc0a(cc0,xpi3,dpipj3,ier0) cs2 = +cc0/DBLE(dpipjp(10,1)) ier1 = max(ier1,ier0) ier = ier + ier1 * #] work 4: * #[ error: else print *,'ffx2ir: error: itest should be either 3 or 4!',itest endif * #] error: *###] ffx2ir: end herwig++-2.6.0.orig/Looptools/D/ffd0c.F0000644000175000017500000001071211754474774020246 0ustar sylvestresylvestre* ffd0c.F * the scalar four-point function with complex masses * this file is part of LoopTools * last modified 8 Dec 10 th * Written by Le Duc Ninh, MPI, Munich (2008). * Spence, log and eta functions are taken from FF. * Please cite arXiV:0902.0325 [hep-ph] if you use this function. #include "externals.h" subroutine ffd0c(cd0c, cpi, key, ier) implicit none double complex cd0c, cpi(10) integer key, ier #include "ff.h" integer o double precision ra, rb, rg, rc, rh, rj double precision d, a double complex cd, ce, ck, cfx double precision signf parameter (signf = -1) double complex ffT13, ffTn external ffT13, ffTn #define PP(i) DBLE(cpi(i+4)) #define LightLike(i) abs(PP(i)) .lt. precx * 2 lightlike momenta if( LightLike(1) .and. & LightLike(3) ) then o = O'1234561234' else if( LightLike(2) .and. & LightLike(4) ) then o = O'4123654123' else if( LightLike(5) .and. & LightLike(6) ) then o = O'5361421342' else if( LightLike(1) .and. & LightLike(2) ) then o = O'1234561234' else if( LightLike(2) .and. & LightLike(3) ) then o = O'2341652341' else if( LightLike(3) .and. & LightLike(4) ) then o = O'3412563412' else if( LightLike(4) .and. & LightLike(1) ) then o = O'4123654123' * 1 lightlike momentum else if( LightLike(1) ) then o = O'1234561234' else if( LightLike(2) ) then o = O'2341652341' else if( LightLike(3) ) then o = O'3412563412' else if( LightLike(4) ) then o = O'4123654123' else if( LightLike(5) ) then c WRONG? 8 Jan 10 th c o = O'5361422413' o = O'5361421342' else if( LightLike(6) ) then c WRONG? 8 Jan 10 th c o = O'6452132431' o = O'6452132413' * kallen(pi, pj, pk) >= 0 #define SIDE(i,j) PP(i)*(PP(i) - 2*PP(j)) else if( SIDE(5,1) + & SIDE(1,2) + & SIDE(2,5) .ge. 0 ) then o = O'1234561234' else if( SIDE(6,2) + & SIDE(2,3) + & SIDE(3,6) .ge. 0 ) then o = O'2341652341' else if( SIDE(5,3) + & SIDE(3,4) + & SIDE(4,5) .ge. 0 ) then o = O'3412563412' else if( SIDE(6,4) + & SIDE(4,1) + & SIDE(1,6) .ge. 0 ) then o = O'4123654123' else call fferr(103, ier) return endif #define RP(i) PP(ibits(o,3*(10-i),3)) #define CM(i) cpi(ibits(o,3*(4-i),3)) rg = RP(1) rb = RP(2) rj = RP(5) - rb ra = RP(3) rc = RP(6) - ra rh = RP(4) - RP(6) cfx = CM(4) cd = CM(3) - cfx - ra ce = CM(2) - CM(3) - rc ck = CM(1) - CM(2) - rh rc = rc - rb rh = rh - rj rj = rj - rg * D0C = \int_0^1 dx \int_0^x dy \int_0^y dz * 1/(ra x^2 + rb y^2 + rg z^2 + rc xy + rh xz + rj yz + * cd x + ce y + ck z + cfx + I signf) * with signf = -eps. * important: variables "signX" is the sign of img(X) in case X becomes real. * 2 opposite lightlike momenta if( ra .eq. 0 .and. rg .eq. 0 ) then cd0c = ffT13(rb + rj, rc + rh, rb, rc, & cd, ce + ck, cfx, signf, ce, ier) return endif * 2 adjacent lightlike momenta if( rb .eq. 0 .and. rg .eq. 0 ) then cd0c = ffTn(ra, rb, rc, rh, rj, & cd, ce, cfx, signf, ck, signf, key, ier) - & ffTn(ra, rj, rc + rh, rh, rj, & cd, ce + ck, cfx, signf, ck, signf, key, ier) return endif * 1 lightlike momentum if( rg .eq. 0 ) then cd0c = ffTn(ra, rb, rc, rh, rj, & cd, ce, cfx, signf, ck, signf, key, ier) - & ffTn(ra, rj + rb, rc + rh, rh, rj, & cd, ce + ck, cfx, signf, ck, signf, key, ier) return endif * alpha is one root of: rg*alpha^2 + rj*alpha + rb == 0 * we do not need the ieps for alpha d = rj**2 - 4*rg*rb d = sqrt(d) a = -.5D0/rg*(rj + d) d = -.5D0/rg*(rj - d) * choose the bigger root or unity if( abs(a) .gt. abs(d) ) then d = rb/(rg*a) else a = rb/(rg*d) endif * which one for alpha? if( abs(d) .lt. abs(a) ) a = d cd0c = ffTn(ra + rb + rc, rg, rj + rh, & -rc - 2*rb - (rj + rh)*a, -rj - 2*a*rg, & cd + ce, ck, cfx, signf, -ce - ck*a, -signf, key, ier) if( a .ne. 1 ) then d = 1/(1 - a) cd0c = cd0c + ffTn(ra, rg + rj + rb, rc + rh, & d*(rc + rh*a), rj + 2*a*rg, & cd, ce + ck, cfx, signf, d*(ce + ck*a), d*signf, key, ier) endif if( abs(a) .lt. precx ) then call ffwarn(253, ier, 1D0, 0D0) else d = 1/a cd0c = cd0c + ffTn(ra, rb, rc, & d*rc + rh, -rj - 2*a*rg, & cd, ce, cfx, signf, d*ce + ck, d*signf, key, ier) endif end herwig++-2.6.0.orig/Looptools/include/0000755000175000017500000000000011756464211020377 5ustar sylvestresylvestreherwig++-2.6.0.orig/Looptools/include/clooptools.h0000644000175000017500000001730611754474774022771 0ustar sylvestresylvestre/* -*- C++ -*- clooptools.h the C/C++ header file with all definitions for LoopTools this file is part of LoopTools last modified 9 Dec 10 th dgrell 2011-01-21 for Herwig++: moved definitions and extern declarations to our clooptools.cc */ #ifndef HERWIG_clooptools_h_ #define HERWIG_clooptools_h_ //#define cachelookup_ ljcachelookup_ /** complex defn for Looptools */ struct DOUBLE_COMPLEX { /** * Real part */ double re; /** * Imaginary part */ double im; }; typedef const DOUBLE_COMPLEX CDOUBLE_COMPLEX; #include typedef std::complex double_complex; /****************************************************************/ #define AARGS(t) t(m) #define BARGS(t) t(p), t(m1), t(m2) #define CARGS(t) t(p1), t(p2), t(p1p2), t(m1), t(m2), t(m3) #define DARGS(t) t(p1), t(p2), t(p3), t(p4), t(p1p2), t(p2p3), \ t(m1), t(m2), t(m3), t(m4) #define EARGS(t) t(p1), t(p2), t(p3), t(p4), t(p5), \ t(p1p2), t(p2p3), t(p3p4), t(p4p5), t(p5p1), \ t(m1), t(m2), t(m3), t(m4), t(m5) #define _Cr_(v) const double v #define _Cc_(v) const double_complex v #define _Fr_(v) const double *v #define _Fc_(v) CDOUBLE_COMPLEX *v #define _Frp_(v) &v #define _Fcp_(v) (CDOUBLE_COMPLEX *)&v #define _Id_(v) v /****************************************************************/ namespace Herwig { namespace Looptools { enum { bb0, bb1, bb00, bb11, bb001, bb111, dbb0, dbb1, dbb00, dbb11, Nbb }; enum { cc0, cc1, cc2, cc00, cc11, cc12, cc22, cc001, cc002, cc111, cc112, cc122, cc222, cc0000, cc0011, cc0012, cc0022, cc1111, cc1112, cc1122, cc1222, cc2222, Ncc }; enum { dd0, dd1, dd2, dd3, dd00, dd11, dd12, dd13, dd22, dd23, dd33, dd001, dd002, dd003, dd111, dd112, dd113, dd122, dd123, dd133, dd222, dd223, dd233, dd333, dd0000, dd0011, dd0012, dd0013, dd0022, dd0023, dd0033, dd1111, dd1112, dd1113, dd1122, dd1123, dd1133, dd1222, dd1223, dd1233, dd1333, dd2222, dd2223, dd2233, dd2333, dd3333, dd00001, dd00002, dd00003, dd00111, dd00112, dd00113, dd00122, dd00123, dd00133, dd00222, dd00223, dd00233, dd00333, dd11111, dd11112, dd11113, dd11122, dd11123, dd11133, dd11222, dd11223, dd11233, dd11333, dd12222, dd12223, dd12233, dd12333, dd13333, dd22222, dd22223, dd22233, dd22333, dd23333, dd33333, Ndd }; enum { ee0, ee1, ee2, ee3, ee4, ee00, ee11, ee12, ee13, ee14, ee22, ee23, ee24, ee33, ee34, ee44, ee001, ee002, ee003, ee004, ee111, ee112, ee113, ee114, ee122, ee123, ee124, ee133, ee134, ee144, ee222, ee223, ee224, ee233, ee234, ee244, ee333, ee334, ee344, ee444, ee0000, ee0011, ee0012, ee0013, ee0014, ee0022, ee0023, ee0024, ee0033, ee0034, ee0044, ee1111, ee1112, ee1113, ee1114, ee1122, ee1123, ee1124, ee1133, ee1134, ee1144, ee1222, ee1223, ee1224, ee1233, ee1234, ee1244, ee1333, ee1334, ee1344, ee1444, ee2222, ee2223, ee2224, ee2233, ee2234, ee2244, ee2333, ee2334, ee2344, ee2444, ee3333, ee3334, ee3344, ee3444, ee4444, Nee }; enum { KeyA0 = 1, KeyBget = 1<<2, KeyC0 = 1<<4, KeyD0 = 1<<6, KeyE0 = 1<<8, KeyEget = 1<<10, KeyEgetC = 1<<12, KeyAll = KeyA0 + KeyBget + KeyC0 + KeyD0 + KeyE0 + KeyEget + KeyEgetC }; enum { DebugB = 1, DebugC = 1<<1, DebugD = 1<<2, DebugE = 1<<3, DebugAll = DebugB + DebugC + DebugD + DebugE }; double_complex ToComplex(DOUBLE_COMPLEX c); /** * Looptools initialisation */ void ltini(std::string logfilename = std::string("Looptools.log")); /** * Looptools termination */ void ltexi(std::string logfilename = std::string("Looptools.log")); double_complex A0(AARGS(_Cr_)); double_complex A0C(AARGS(_Cc_)); double_complex A00(AARGS(_Cr_)); double_complex A00C(AARGS(_Cc_)); /****************************************************************/ long Bget(BARGS(_Cr_)); long BgetC(BARGS(_Cc_)); DOUBLE_COMPLEX *Bcache(const long integral); DOUBLE_COMPLEX *BcacheC(const long integral); double_complex Bval(const int i, const long integral); double_complex BvalC(const int i, const long integral); double_complex B0i(const int i, BARGS(_Cr_)); double_complex B0iC(const int i, BARGS(_Cc_)); double_complex B0(BARGS(_Cr_)); double_complex B1(BARGS(_Cr_)); double_complex B00(BARGS(_Cr_)); double_complex B11(BARGS(_Cr_)); double_complex B001(BARGS(_Cr_)); double_complex B111(BARGS(_Cr_)); double_complex DB0(BARGS(_Cr_)); double_complex DB1(BARGS(_Cr_)); double_complex DB00(BARGS(_Cr_)); double_complex DB11(BARGS(_Cr_)); double_complex B0C(BARGS(_Cc_)); double_complex B1C(BARGS(_Cc_)); double_complex B00C(BARGS(_Cc_)); double_complex B11C(BARGS(_Cc_)); double_complex B001C(BARGS(_Cc_)); double_complex B111C(BARGS(_Cc_)); double_complex DB0C(BARGS(_Cc_)); double_complex DB1C(BARGS(_Cc_)); double_complex DB00C(BARGS(_Cc_)); double_complex DB11C(BARGS(_Cc_)); /****************************************************************/ double_complex C0(CARGS(_Cr_)); double_complex C0C(CARGS(_Cc_)); long Cget(CARGS(_Cr_)); long CgetC(CARGS(_Cc_)); DOUBLE_COMPLEX *Ccache(const long integral); DOUBLE_COMPLEX *CcacheC(const long integral); double_complex Cval(const int i, const long integral); double_complex CvalC(const int i, const long integral); double_complex C0i(const int i, CARGS(_Cr_)); double_complex C0iC(const int i, CARGS(_Cc_)); /****************************************************************/ double_complex D0(DARGS(_Cr_)); double_complex D0C(DARGS(_Cc_)); long Dget(DARGS(_Cr_)); long DgetC(DARGS(_Cc_)); DOUBLE_COMPLEX *Dcache(const long integral); DOUBLE_COMPLEX *DcacheC(const long integral); double_complex Dval(const int i, const long integral); double_complex DvalC(const int i, const long integral); double_complex D0i(const int i, DARGS(_Cr_)); double_complex D0iC(const int i, DARGS(_Cc_)); /****************************************************************/ double_complex E0(EARGS(_Cr_)); double_complex E0C(EARGS(_Cc_)); long Eget(EARGS(_Cr_)); long EgetC(EARGS(_Cc_)); DOUBLE_COMPLEX *Ecache(const long integral); DOUBLE_COMPLEX *EcacheC(const long integral); double_complex Eval(const int i, const long integral); double_complex EvalC(const int i, const long integral); double_complex E0i(const int i, EARGS(_Cr_)); double_complex E0iC(const int i, EARGS(_Cc_)); /****************************************************************/ double_complex Li2(const double x); double_complex Li2C(const double_complex x); /****************************************************************/ void setmudim(const double mudim); double getmudim(); void setdelta(const double delta); double getdelta(); void setlambda(const double lambda); double getlambda(); void setminmass(const double minmass); double getminmass(); void setmaxdev(const double maxdev); double getmaxdev(); void setwarndigits(const long warndigits); long getwarndigits(); void seterrdigits(const long errdigits); long geterrdigits(); void setversionkey(const long versionkey); long getversionkey(); void setdebugkey(const long debugkey); long getdebugkey(); void setdebugrange(const long debugfrom, const long debugto); void setcmpbits(const long cmpbits); long getcmpbits(); void clearcache(); void markcache(); void restorecache(); } // namespace Looptools } // namespace Herwig #endif herwig++-2.6.0.orig/Looptools/include/fferr.h0000644000175000017500000002517711754474774021705 0ustar sylvestresylvestre character*80 e1 parameter (e1="ffca0: minimum value complex logarit"// + "hm gives problem, change mu.") character*80 e2 parameter (e2="ffxa0: minimum value real logarithm "// + "gives problem, change mu.") character*80 e3 parameter (e3="ffcb0: minimum value complex logarit"// + "hm gives problem, change mu.") character*80 e4 parameter (e4="ffxb0: minimum value real logarithm "// + "gives problem, change mu.") character*80 e5 parameter (e5="ffcb0p: cannot handle complex k^2 yet") character*80 e6 parameter (e6="ffcb0p: minimum value complex log giv"// + "es problem in unequal masses.") character*80 e7 parameter (e7="ffxb0p: divergence for k->0, m1=m2=0.") character*80 e8 parameter (e8="ffxb0p: minimum value real log gives "// + "problem in equal masses.") character*80 e9 parameter (e9="ffxb0p: minimum value real log gives "// + "problem in unequal masses.") character*80 e10 parameter (e10="ffcc0p: cannot handle two spacelike m"// + "omenta and one zero.") character*80 e11 parameter (e11="ffxc0p: cannot handle two spacelike m"// + "omenta and one zero.") character*80 e12 parameter (e12="ffcs3: illegal code for isoort(1) (s"// + "hould not occur)") character*80 e13 parameter (e13="ffcs3: illegal code for isoort(2) (s"// + "hould not occur)") character*80 e14 parameter (e14="ffcs3: imaginary part wrong, will be"// + " improved later") character*80 e15 parameter (e15="ffcs3: isoort = -1,0 not yet ready") character*80 e16 parameter (e16="ffcs3: illegal combination in isoort"// + " (should not occur)") character*80 e17 parameter (e17="ffcxs3: illegal code for isoort(1) (s"// + "hould not occur)") character*80 e18 parameter (e18="ffcxs3: illegal code for isoort(2) (s"// + "hould not occur)") character*80 e19 parameter (e19="ffcs4: imaginary part is wrong (shou"// + "ld be updated)") character*80 e20 parameter (e20="ffdcrr: Taylor expansion in 1/x not y"// + "et ready") character*80 e21 parameter (e21="ffdcxr: imaginary part is wrong") character*80 e22 parameter (e22="ffdcxr: Taylor expansion in 1/x not y"// + "et ready") character*80 e23 parameter (e23="ffcrr: minimum value complex log cau"// + "ses correction term to be wrong.") character*80 e24 parameter (e24="ffcxr: minimum value real log causes"// + " correction term to be wrong.") character*80 e25 parameter (e25="ffcrr: illegal code for iclas1 (shou"// + "ld not occur)") character*80 e26 parameter (e26="ffcxr: illegal code for iclas1 (shou"// + "ld not occur)") character*80 e27 parameter (e27="ffcrr: illegal code for iclas2 (shou"// + "ld not occur)") character*80 e28 parameter (e28="ffcxr: illegal code for iclas2 (shou"// + "ld not occur)") character*80 e29 parameter (e29="ffxli2: argument too large (should no"// + "t occur)") character*80 e30 parameter (e30="ffzli2: argument too large (should no"// + "t occur)") character*80 e31 parameter (e31="ffzzdl: imaginary part dilog is undef"// + "ined for real x > 1.") character*80 e32 parameter (e32="nffeta: eta is not defined for real n"// + "egative numbers a,b, ab.") character*80 e33 parameter (e33="nffet1: eta is not defined for real n"// + "egative numbers a,b, ab.") character*80 e34 parameter (e34="ffcota: illegal flag (should not occu"// + "r)") character*80 e35 parameter (e35="ffrota: illegal flag (should not occu"// + "r)") character*80 e36 parameter (e36="ffccyz: I took the wrong value for ca"// + "lpha... (should not occur)") character*80 e37 parameter (e37="ffxxyz: I took the wrong value for al"// + "pha... (should not occur)") character*80 e38 parameter (e38="ffcoot: a=0, trying to find two roots"// + " of a linear equation ...") character*80 e39 parameter (e39="ffroot: a=0, trying to find two roots"// + " of a linear equation ...") character*80 e40 parameter (e40="ffrot3: all three external masses zer"// + "o !") character*80 e41 parameter (e41="ffxc0: lambda(p1,p2,p3) < 0, unphysi"// + "cal configuration") character*80 e42 parameter (e42="ffxc0: cannot handle this case (p1,p"// + "2,p3 dependent, on threshold)") character*80 e43 parameter (e43="ffcxs3: illegal code for isoort(1) (s"// + "hould not occur)") character*80 e44 parameter (e44="ffxd0: lambda(p1,p2,p3,p4) < 0, unph"// + "ysical configuration") character*80 e45 parameter (e45="ffxd0: cannot handle this case (p1,p"// + "2,p3 dependent, on threshold)") character*80 e46 parameter (e46="ffxd0p: correction terms for Ai <0 in"// + "finite (mass zero?)") character*80 e47 parameter (e47="ffcxyz: p_i^2 = 0 (should not occur)") character*80 e48 parameter (e48="ffeta: answer not consistent with no"// + "rmal result (old)") character*80 e49 parameter (e49="ffcc0: cannot handle complex externa"// + "l momenta or im > 0") character*80 e50 parameter (e50="ffcd0: cannot handle complex externa"// + "l momenta.") character*80 e51 parameter (e51="zfflog: imaginary part undefined for "// + "real z < 0.") character*80 e52 parameter (e52="zxfflg: imaginary part undefined for "// + "x < 0.") character*80 e53 parameter (e53="ffcs3: eta changes within (0,1), add"// + " sophisticated terms...") character*80 e54 parameter (e54="ffrot4: cannot find any physical vert"// + "ex to apply transformation.") character*80 e55 parameter (e55="fftra0: too many vectors parallel, p_"// + "1.p_7 or p_2.p_7 is zero.") character*80 e56 parameter (e56="zfflog: tiny imaginary part in confli"// + "ct with ieps prescription.") character*80 e57 parameter (e57="ffxe0: lambda(p1,p2,p3,p4,p5) < 0, u"// + "nphysical") character*80 e58 parameter (e58="ffxc0j: IR divergent C0 with lambda(p"// + "1,p2,p3)=0.") character*80 e59 parameter (e59="ffxc0i: IR divergent C0 with lambda2=0.") character*80 e60 parameter (e60="ffxc0j: IR divergent C0 obtained from"// + " D0 is singular. Contact author.") character*80 e61 parameter (e61="ffxd0p: IR divergent D0 with lambda2=0.") character*80 e62 parameter (e62="ffxc0p: I never expected complex root"// + "s in an IR divergent diagram.") character*80 e63 parameter (e63="ffxd0p: can only handle one IR diverg"// + "ence per 3point function") character*80 e64 parameter (e64="ffxd0p: cannot handle a threshold in"// + " (3,4), rotated wrongly.") character*80 e65 parameter (e65="ffcxr: IR divergence but iclass!=3. "// + " should not occur.") character*80 e66 parameter (e66="ffcxs3: different imaginary signs sho"// + "uld not occur for ipole=3.") character*80 e67 parameter (e67="ffxdbd: I cannot use this algorithm f"// + "or a linear IR divergence") character*80 e68 parameter (e68="ffxd0: cannot find a proj. transform"// + "ation; try another permutation.") character*80 e69 parameter (e69="ff5ind: could not find independent mo"// + "menta (should not occur).") character*80 e70 parameter (e70="ffxdna: lambda(pi,pj,pk) < 0, unphysi"// + "cal configuration") character*80 e71 parameter (e71="ffxdna: cannot handle lambda(pi,pj,pk"// + ") = 0, dependent momenta.") character*80 e72 parameter (e72="ffxd0e: could not find a stable root;"// + " please try another permutation") character*80 e73 parameter (e73="ffxdir: cannot handle a linearly dive"// + "rgent four point function (yet)") character*80 e74 parameter (e74="ffxdbd: IR divergent B0' without cuto"// + "ff in /ffregul/") character*80 e75 parameter (e75="ffdcxr: dyz=0, should not occur") character*80 e76 parameter (e76="ffdcrr: cdwz=0, but iepsz!=iepsz and "// + "significant") character*80 e77 parameter (e77="ffdcrr: cdyz=0, should not occur") character*80 e78 parameter (e78="ffdcc0: imaginary part wrong") character*80 e79 parameter (e79="ffdcs: cannot handle isoort=0") character*80 e80 parameter (e80="ffdcs: mixed up iep's, 2*pi^2 wrong "// + "somewhere") character*80 e81 parameter (e81="ffdcs: wrong value for isoort") character*80 e82 parameter (e82="ffdxc0: imaginary part Ai < 0 terms unc"// + "ertain") character*80 e83 parameter (e83="ffxc0j: sorry, complex roots not yet "// + "supported here") character*80 e84 parameter (e84="ffxc0p: imaginary part Ai < 0 terms unc"// + "ertain") character*80 e85 parameter (e85="ffxd0a: t3 = t4, don''t know what to do") character*80 e86 parameter (e86="ffxdbp: cannot compute derivative, la"// + "m=0") character*80 e87 parameter (e87="ffxdi: dependent momenta not yet sup"// + "ported (boundary of phase space)") character*80 e88 parameter (e88="ffxxyz: xk = 0 not yet implemented") character*80 e92 parameter (e92="ffxc1: cannot invert matrix with zer"// + "o determinant.") character*80 e93 parameter (e93="ffze0: Im(m^2) > 0") character*80 e94 parameter (e94="ffze0: Im(p^2) != 0") character*80 e95 parameter (e95="ffzf0: Im(m^2) > 0") character*80 e96 parameter (e96="ffzf0: Im(p^2) != 0") character*80 e97 parameter (e97="ffxc0j: ill-defined IR-divergent C0 "// + "for massless charged particles.") character*80 e98 parameter (e98="ffxdbd: ill-defined IR-divergent D0 "// + "for massless charged particles.") character*80 e100 parameter (e100="ffrcvr: probably underflow, I do"// + " not know where or how severe.") character*80 e101 parameter (e101="ffxdb1: case not defined") character*80 e102 parameter (e102="ffxdb11: case not defined") character*80 e103 parameter (e103="ffd0c: cannot handle this case") character*80 e104 parameter (e104="ffwbeta: prefactor 1/(SV-TU) = 1/0 "// + "for all y") character*80 e105 parameter (e105="ffT_lin: prefactor 1/(SV-TU) = 1/0 "// + "for all y") character*80 e99 parameter (e99="ffT13: prefactor 1/(SV-TU) = 1/0 "// + "for all y") character*80 e89 parameter (e89="ffS2: log(0) singularity") character*80 e90 parameter (e90="ffS3n: end-point singularity") character*80 e91 parameter (e91="ffS3n: log(0) singularity") character*80 error(105) data error / e1,e2,e3,e4,e5,e6,e7,e8,e9, + e10,e11,e12,e13,e14,e15,e16,e17,e18,e19, + e20,e21,e22,e23,e24,e25,e26,e27,e28,e29, + e30,e31,e32,e33,e34,e35,e36,e37,e38,e39, + e40,e41,e42,e43,e44,e45,e46,e47,e48,e49, + e50,e51,e52,e53,e54,e55,e56,e57,e58,e59, + e60,e61,e62,e63,e64,e65,e66,e67,e68,e69, + e70,e71,e72,e73,e74,e75,e76,e77,e78,e79, + e80,e81,e82,e83,e84,e85,e86,e87,e88,e89, + e90,e91,e92,e93,e94,e95,e96,e97,e98,e99, + e100,e101,e102,e103,e104,e105 / herwig++-2.6.0.orig/Looptools/include/lt.h0000644000175000017500000000153411754474774021207 0ustar sylvestresylvestre* lt.h * internal common blocks for the LoopTools routines * this file is part of LoopTools * last modified 21 Dec 10 th #include "ff.h" * the cache-pointer structure is (see cache.c): * 1. int valid * 2. Node *last * 3. Node *first * 4. (not used) integer ncaches parameter (ncaches = 8) integer*8 cacheptr(4,KIND,ncaches) integer*8 savedptr(2,ncaches) double precision maxdev integer warndigits, errdigits integer serial, versionkey integer debugkey, debugfrom, debugto common /ltvars/ & cacheptr, savedptr, & maxdev, & warndigits, errdigits, & serial, versionkey, & debugkey, debugfrom, debugto integer cmpbits common /ltcache/ cmpbits double complex cache(2,ncaches) equivalence (cacheptr, cache) #ifndef sig #define sig(c) int(sign(1D0,DBLE(r)) #define DEBUGLEVEL ibits(debugkey,8,2) #endif herwig++-2.6.0.orig/Looptools/include/ffperm5.h0000644000175000017500000004613211754474774022137 0ustar sylvestresylvestre data ((iperm(j1,j2),j1=1,5),j2=1,80) / + 1,2,3,4,5,1,2,3,4,9,1,2,3,10,4,1,2,3,4,13, + 1,2,3,15,4,1,2,3,8,5,1,2,3,5,9,1,2,3,12,5, + 1,2,3,5,14,1,2,3,8,9,1,2,3,10,8,1,2,3,8,13, + 1,2,3,15,8,1,2,3,9,10,1,2,3,12,9,1,2,3,13,9, + 1,2,3,9,14,1,2,3,9,15,1,2,3,10,12,1,2,3,14,10, + 1,2,3,12,13,1,2,3,15,12,1,2,3,13,14,1,2,3,14,15, + 1,2,4,5,7,1,2,4,8,5,1,2,4,5,11,1,2,4,13,5, + 1,2,4,9,7,1,2,4,7,10,1,2,4,13,7,1,2,4,7,15, + 1,2,4,8,9,1,2,4,10,8,1,2,4,8,13,1,2,4,15,8, + 1,2,4,9,11,1,2,4,13,9,1,2,4,11,10,1,2,4,10,13, + 1,2,4,13,11,1,2,4,11,15,1,2,4,15,13,1,2,5,7,8, + 1,2,5,9,7,1,2,5,7,12,1,2,5,14,7,1,2,5,8,9, + 1,2,5,11,8,1,2,5,12,8,1,2,5,8,13,1,2,5,8,14, + 1,2,5,9,11,1,2,5,13,9,1,2,5,11,12,1,2,5,14,11, + 1,2,5,12,13,1,2,5,13,14,1,2,7,8,9,1,2,7,10,8, + 1,2,7,8,13,1,2,7,15,8,1,2,7,9,10,1,2,7,12,9, + 1,2,7,13,9,1,2,7,9,14,1,2,7,9,15,1,2,7,10,12, + 1,2,7,14,10,1,2,7,12,13,1,2,7,15,12,1,2,7,13,14, + 1,2,7,14,15,1,2,8,10,9,1,2,8,9,11,1,2,8,9,12, + 1,2,8,14,9,1,2,8,15,9,1,2,8,11,10,1,2,8,12,10 / data ((iperm(j1,j2),j1=1,5),j2=81,160) / + 1,2,8,10,13,1,2,8,10,14,1,2,8,13,11,1,2,8,11,15, + 1,2,8,13,12,1,2,8,12,15,1,2,8,14,13,1,2,8,15,13, + 1,2,8,15,14,1,2,9,10,11,1,2,9,13,10,1,2,9,11,12, + 1,2,9,11,13,1,2,9,14,11,1,2,9,15,11,1,2,9,12,13, + 1,2,9,13,14,1,2,9,13,15,1,2,10,12,11,1,2,10,11,14, + 1,2,10,13,12,1,2,10,14,13,1,2,11,12,13,1,2,11,15,12, + 1,2,11,13,14,1,2,11,14,15,1,2,12,15,13,1,2,13,15,14, + 1,3,4,6,5,1,3,4,5,7,1,3,4,5,12,1,3,4,15,5, + 1,3,4,6,9,1,3,4,10,6,1,3,4,6,13,1,3,4,15,6, + 1,3,4,9,7,1,3,4,7,10,1,3,4,13,7,1,3,4,7,15, + 1,3,4,9,12,1,3,4,15,9,1,3,4,12,10,1,3,4,10,15, + 1,3,4,13,12,1,3,4,12,15,1,3,4,15,13,1,3,5,8,6, + 1,3,5,6,9,1,3,5,12,6,1,3,5,6,14,1,3,5,7,8, + 1,3,5,9,7,1,3,5,7,12,1,3,5,14,7,1,3,5,12,8, + 1,3,5,8,15,1,3,5,9,12,1,3,5,15,9,1,3,5,14,12, + 1,3,5,12,15,1,3,5,15,14,1,3,6,9,8,1,3,6,8,10, + 1,3,6,13,8,1,3,6,8,15,1,3,6,10,9,1,3,6,9,12, + 1,3,6,9,13,1,3,6,14,9,1,3,6,15,9,1,3,6,12,10, + 1,3,6,10,14,1,3,6,13,12,1,3,6,12,15,1,3,6,14,13, + 1,3,6,15,14,1,3,7,8,9,1,3,7,10,8,1,3,7,8,13 / data ((iperm(j1,j2),j1=1,5),j2=161,240) / + 1,3,7,15,8,1,3,7,9,10,1,3,7,12,9,1,3,7,13,9, + 1,3,7,9,14,1,3,7,9,15,1,3,7,10,12,1,3,7,14,10, + 1,3,7,12,13,1,3,7,15,12,1,3,7,13,14,1,3,7,14,15, + 1,3,8,9,12,1,3,8,15,9,1,3,8,12,10,1,3,8,10,15, + 1,3,8,13,12,1,3,8,12,15,1,3,8,15,13,1,3,9,10,12, + 1,3,9,15,10,1,3,9,12,13,1,3,9,14,12,1,3,9,13,15, + 1,3,9,15,14,1,3,10,12,14,1,3,10,15,12,1,3,10,14,15, + 1,3,12,13,14,1,3,12,15,13,1,3,12,14,15,1,3,13,15,14, + 1,4,5,6,7,1,4,5,8,6,1,4,5,6,11,1,4,5,13,6, + 1,4,5,7,8,1,4,5,11,7,1,4,5,7,12,1,4,5,7,13, + 1,4,5,15,7,1,4,5,12,8,1,4,5,8,15,1,4,5,11,12, + 1,4,5,15,11,1,4,5,12,13,1,4,5,13,15,1,4,6,7,9, + 1,4,6,10,7,1,4,6,7,13,1,4,6,15,7,1,4,6,9,8, + 1,4,6,8,10,1,4,6,13,8,1,4,6,8,15,1,4,6,11,9, + 1,4,6,9,13,1,4,6,10,11,1,4,6,13,10,1,4,6,11,13, + 1,4,6,15,11,1,4,6,13,15,1,4,7,8,9,1,4,7,10,8, + 1,4,7,8,13,1,4,7,15,8,1,4,7,9,11,1,4,7,12,9, + 1,4,7,13,9,1,4,7,9,15,1,4,7,11,10,1,4,7,10,12, + 1,4,7,10,13,1,4,7,15,10,1,4,7,13,11,1,4,7,11,15, + 1,4,7,12,13,1,4,7,15,12,1,4,8,9,12,1,4,8,15,9 / data ((iperm(j1,j2),j1=1,5),j2=241,320) / + 1,4,8,12,10,1,4,8,10,15,1,4,8,13,12,1,4,8,12,15, + 1,4,8,15,13,1,4,9,11,12,1,4,9,15,11,1,4,9,12,13, + 1,4,9,13,15,1,4,10,12,11,1,4,10,11,15,1,4,10,13,12, + 1,4,10,15,13,1,4,11,12,13,1,4,11,15,12,1,4,11,13,15, + 1,4,12,15,13,1,5,6,8,7,1,5,6,7,9,1,5,6,12,7, + 1,5,6,7,14,1,5,6,9,8,1,5,6,8,11,1,5,6,8,12, + 1,5,6,13,8,1,5,6,14,8,1,5,6,11,9,1,5,6,9,13, + 1,5,6,12,11,1,5,6,11,14,1,5,6,13,12,1,5,6,14,13, + 1,5,7,8,9,1,5,7,11,8,1,5,7,8,13,1,5,7,8,14, + 1,5,7,15,8,1,5,7,9,11,1,5,7,12,9,1,5,7,13,9, + 1,5,7,9,15,1,5,7,11,12,1,5,7,14,11,1,5,7,12,13, + 1,5,7,12,14,1,5,7,15,12,1,5,7,13,14,1,5,7,14,15, + 1,5,8,9,12,1,5,8,15,9,1,5,8,12,11,1,5,8,11,15, + 1,5,8,13,12,1,5,8,14,12,1,5,8,12,15,1,5,8,15,13, + 1,5,8,15,14,1,5,9,11,12,1,5,9,15,11,1,5,9,12,13, + 1,5,9,13,15,1,5,11,12,14,1,5,11,15,12,1,5,11,14,15, + 1,5,12,13,14,1,5,12,15,13,1,5,13,15,14,1,6,7,8,9, + 1,6,7,10,8,1,6,7,8,13,1,6,7,15,8,1,6,7,9,10, + 1,6,7,12,9,1,6,7,13,9,1,6,7,9,14,1,6,7,9,15, + 1,6,7,10,12,1,6,7,14,10,1,6,7,12,13,1,6,7,15,12 / data ((iperm(j1,j2),j1=1,5),j2=321,400) / + 1,6,7,13,14,1,6,7,14,15,1,6,8,10,9,1,6,8,9,11, + 1,6,8,9,12,1,6,8,14,9,1,6,8,15,9,1,6,8,11,10, + 1,6,8,12,10,1,6,8,10,13,1,6,8,10,14,1,6,8,13,11, + 1,6,8,11,15,1,6,8,13,12,1,6,8,12,15,1,6,8,14,13, + 1,6,8,15,13,1,6,8,15,14,1,6,9,10,11,1,6,9,13,10, + 1,6,9,11,12,1,6,9,11,13,1,6,9,14,11,1,6,9,15,11, + 1,6,9,12,13,1,6,9,13,14,1,6,9,13,15,1,6,10,12,11, + 1,6,10,11,14,1,6,10,13,12,1,6,10,14,13,1,6,11,12,13, + 1,6,11,15,12,1,6,11,13,14,1,6,11,14,15,1,6,12,15,13, + 1,6,13,15,14,1,7,8,9,10,1,7,8,11,9,1,7,8,9,14, + 1,7,8,10,11,1,7,8,13,10,1,7,8,14,10,1,7,8,10,15, + 1,7,8,11,13,1,7,8,15,11,1,7,8,13,14,1,7,8,14,15, + 1,7,9,11,10,1,7,9,10,12,1,7,9,10,13,1,7,9,15,10, + 1,7,9,12,11,1,7,9,13,11,1,7,9,11,14,1,7,9,11,15, + 1,7,9,14,12,1,7,9,14,13,1,7,9,15,14,1,7,10,11,12, + 1,7,10,14,11,1,7,10,12,13,1,7,10,12,14,1,7,10,15,12, + 1,7,10,13,14,1,7,10,14,15,1,7,11,13,12,1,7,11,12,15, + 1,7,11,14,13,1,7,11,15,14,1,7,12,13,14,1,7,12,14,15, + 1,8,9,12,10,1,8,9,10,15,1,8,9,11,12,1,8,9,15,11, + 1,8,9,12,14,1,8,9,14,15,1,8,10,12,11,1,8,10,11,15 / data ((iperm(j1,j2),j1=1,5),j2=401,480) / + 1,8,10,13,12,1,8,10,14,12,1,8,10,12,15,1,8,10,15,13, + 1,8,10,15,14,1,8,11,12,13,1,8,11,15,12,1,8,11,13,15, + 1,8,12,14,13,1,8,12,15,14,1,8,13,14,15,1,9,10,11,12, + 1,9,10,15,11,1,9,10,12,13,1,9,10,13,15,1,9,11,13,12, + 1,9,11,12,14,1,9,11,15,13,1,9,11,14,15,1,9,12,13,14, + 1,9,13,15,14,1,10,11,14,12,1,10,11,12,15,1,10,11,15,14, + 1,10,12,14,13,1,10,12,13,15,1,10,13,14,15,1,11,12,13,14, + 1,11,12,15,13,1,11,12,14,15,1,11,13,15,14,1,12,13,14,15, + 2,3,4,6,5,2,3,4,5,10,2,3,4,11,5,2,3,4,5,14, + 2,3,4,6,9,2,3,4,10,6,2,3,4,6,13,2,3,4,15,6, + 2,3,4,9,10,2,3,4,11,9,2,3,4,9,14,2,3,4,10,11, + 2,3,4,13,10,2,3,4,14,10,2,3,4,10,15,2,3,4,11,13, + 2,3,4,15,11,2,3,4,13,14,2,3,4,14,15,2,3,5,8,6, + 2,3,5,6,9,2,3,5,12,6,2,3,5,6,14,2,3,5,10,8, + 2,3,5,8,11,2,3,5,14,8,2,3,5,9,10,2,3,5,11,9, + 2,3,5,9,14,2,3,5,10,12,2,3,5,14,10,2,3,5,12,11, + 2,3,5,11,14,2,3,5,14,12,2,3,6,9,8,2,3,6,8,10, + 2,3,6,13,8,2,3,6,8,15,2,3,6,10,9,2,3,6,9,12, + 2,3,6,9,13,2,3,6,14,9,2,3,6,15,9,2,3,6,12,10, + 2,3,6,10,14,2,3,6,13,12,2,3,6,12,15,2,3,6,14,13 / data ((iperm(j1,j2),j1=1,5),j2=481,560) / + 2,3,6,15,14,2,3,8,9,10,2,3,8,11,9,2,3,8,9,14, + 2,3,8,10,11,2,3,8,13,10,2,3,8,14,10,2,3,8,10,15, + 2,3,8,11,13,2,3,8,15,11,2,3,8,13,14,2,3,8,14,15, + 2,3,9,11,10,2,3,9,10,12,2,3,9,10,13,2,3,9,15,10, + 2,3,9,12,11,2,3,9,13,11,2,3,9,11,14,2,3,9,11,15, + 2,3,9,14,12,2,3,9,14,13,2,3,9,15,14,2,3,10,11,12, + 2,3,10,14,11,2,3,10,12,13,2,3,10,12,14,2,3,10,15,12, + 2,3,10,13,14,2,3,10,14,15,2,3,11,13,12,2,3,11,12,15, + 2,3,11,14,13,2,3,11,15,14,2,3,12,13,14,2,3,12,14,15, + 2,4,5,6,7,2,4,5,8,6,2,4,5,6,11,2,4,5,13,6, + 2,4,5,7,10,2,4,5,11,7,2,4,5,7,14,2,4,5,10,8, + 2,4,5,8,11,2,4,5,14,8,2,4,5,11,10,2,4,5,10,13, + 2,4,5,13,11,2,4,5,11,14,2,4,5,14,13,2,4,6,7,9, + 2,4,6,10,7,2,4,6,7,13,2,4,6,15,7,2,4,6,9,8, + 2,4,6,8,10,2,4,6,13,8,2,4,6,8,15,2,4,6,11,9, + 2,4,6,9,13,2,4,6,10,11,2,4,6,13,10,2,4,6,11,13, + 2,4,6,15,11,2,4,6,13,15,2,4,7,10,9,2,4,7,9,11, + 2,4,7,14,9,2,4,7,11,10,2,4,7,10,13,2,4,7,10,14, + 2,4,7,15,10,2,4,7,13,11,2,4,7,11,15,2,4,7,14,13, + 2,4,7,15,14,2,4,8,9,10,2,4,8,11,9,2,4,8,9,14 / data ((iperm(j1,j2),j1=1,5),j2=561,640) / + 2,4,8,10,11,2,4,8,13,10,2,4,8,14,10,2,4,8,10,15, + 2,4,8,11,13,2,4,8,15,11,2,4,8,13,14,2,4,8,14,15, + 2,4,9,11,10,2,4,9,10,13,2,4,9,13,11,2,4,9,11,14, + 2,4,9,14,13,2,4,10,14,11,2,4,10,11,15,2,4,10,13,14, + 2,4,10,15,13,2,4,11,14,13,2,4,11,13,15,2,4,11,15,14, + 2,4,13,14,15,2,5,6,8,7,2,5,6,7,9,2,5,6,12,7, + 2,5,6,7,14,2,5,6,9,8,2,5,6,8,11,2,5,6,8,12, + 2,5,6,13,8,2,5,6,14,8,2,5,6,11,9,2,5,6,9,13, + 2,5,6,12,11,2,5,6,11,14,2,5,6,13,12,2,5,6,14,13, + 2,5,7,8,10,2,5,7,11,8,2,5,7,8,14,2,5,7,10,9, + 2,5,7,9,11,2,5,7,14,9,2,5,7,12,10,2,5,7,10,14, + 2,5,7,11,12,2,5,7,14,11,2,5,7,12,14,2,5,8,9,10, + 2,5,8,11,9,2,5,8,9,14,2,5,8,10,11,2,5,8,10,12, + 2,5,8,13,10,2,5,8,14,10,2,5,8,12,11,2,5,8,11,13, + 2,5,8,14,12,2,5,8,13,14,2,5,9,11,10,2,5,9,10,13, + 2,5,9,13,11,2,5,9,11,14,2,5,9,14,13,2,5,10,11,12, + 2,5,10,14,11,2,5,10,12,13,2,5,10,13,14,2,5,11,13,12, + 2,5,11,12,14,2,5,11,14,13,2,5,12,13,14,2,6,7,8,9, + 2,6,7,10,8,2,6,7,8,13,2,6,7,15,8,2,6,7,9,10, + 2,6,7,12,9,2,6,7,13,9,2,6,7,9,14,2,6,7,9,15 / data ((iperm(j1,j2),j1=1,5),j2=641,720) / + 2,6,7,10,12,2,6,7,14,10,2,6,7,12,13,2,6,7,15,12, + 2,6,7,13,14,2,6,7,14,15,2,6,8,10,9,2,6,8,9,11, + 2,6,8,9,12,2,6,8,14,9,2,6,8,15,9,2,6,8,11,10, + 2,6,8,12,10,2,6,8,10,13,2,6,8,10,14,2,6,8,13,11, + 2,6,8,11,15,2,6,8,13,12,2,6,8,12,15,2,6,8,14,13, + 2,6,8,15,13,2,6,8,15,14,2,6,9,10,11,2,6,9,13,10, + 2,6,9,11,12,2,6,9,11,13,2,6,9,14,11,2,6,9,15,11, + 2,6,9,12,13,2,6,9,13,14,2,6,9,13,15,2,6,10,12,11, + 2,6,10,11,14,2,6,10,13,12,2,6,10,14,13,2,6,11,12,13, + 2,6,11,15,12,2,6,11,13,14,2,6,11,14,15,2,6,12,15,13, + 2,6,13,15,14,2,7,8,9,10,2,7,8,11,9,2,7,8,9,14, + 2,7,8,10,11,2,7,8,13,10,2,7,8,14,10,2,7,8,10,15, + 2,7,8,11,13,2,7,8,15,11,2,7,8,13,14,2,7,8,14,15, + 2,7,9,11,10,2,7,9,10,12,2,7,9,10,13,2,7,9,15,10, + 2,7,9,12,11,2,7,9,13,11,2,7,9,11,14,2,7,9,11,15, + 2,7,9,14,12,2,7,9,14,13,2,7,9,15,14,2,7,10,11,12, + 2,7,10,14,11,2,7,10,12,13,2,7,10,12,14,2,7,10,15,12, + 2,7,10,13,14,2,7,10,14,15,2,7,11,13,12,2,7,11,12,15, + 2,7,11,14,13,2,7,11,15,14,2,7,12,13,14,2,7,12,14,15, + 2,8,9,12,10,2,8,9,10,15,2,8,9,11,12,2,8,9,15,11 / data ((iperm(j1,j2),j1=1,5),j2=721,800) / + 2,8,9,12,14,2,8,9,14,15,2,8,10,12,11,2,8,10,11,15, + 2,8,10,13,12,2,8,10,14,12,2,8,10,12,15,2,8,10,15,13, + 2,8,10,15,14,2,8,11,12,13,2,8,11,15,12,2,8,11,13,15, + 2,8,12,14,13,2,8,12,15,14,2,8,13,14,15,2,9,10,11,12, + 2,9,10,15,11,2,9,10,12,13,2,9,10,13,15,2,9,11,13,12, + 2,9,11,12,14,2,9,11,15,13,2,9,11,14,15,2,9,12,13,14, + 2,9,13,15,14,2,10,11,14,12,2,10,11,12,15,2,10,11,15,14, + 2,10,12,14,13,2,10,12,13,15,2,10,13,14,15,2,11,12,13,14, + 2,11,12,15,13,2,11,12,14,15,2,11,13,15,14,2,12,13,14,15, + 3,4,5,6,7,3,4,5,10,6,3,4,5,6,11,3,4,5,6,12, + 3,4,5,14,6,3,4,5,15,6,3,4,5,7,10,3,4,5,11,7, + 3,4,5,7,14,3,4,5,12,10,3,4,5,10,15,3,4,5,11,12, + 3,4,5,15,11,3,4,5,12,14,3,4,5,14,15,3,4,6,7,9, + 3,4,6,10,7,3,4,6,7,13,3,4,6,15,7,3,4,6,9,10, + 3,4,6,11,9,3,4,6,12,9,3,4,6,9,14,3,4,6,9,15, + 3,4,6,10,11,3,4,6,10,12,3,4,6,13,10,3,4,6,14,10, + 3,4,6,11,13,3,4,6,15,11,3,4,6,12,13,3,4,6,15,12, + 3,4,6,13,14,3,4,6,13,15,3,4,6,14,15,3,4,7,10,9, + 3,4,7,9,11,3,4,7,14,9,3,4,7,11,10,3,4,7,10,13, + 3,4,7,10,14,3,4,7,15,10,3,4,7,13,11,3,4,7,11,15 / data ((iperm(j1,j2),j1=1,5),j2=801,880) / + 3,4,7,14,13,3,4,7,15,14,3,4,9,12,10,3,4,9,10,15, + 3,4,9,11,12,3,4,9,15,11,3,4,9,12,14,3,4,9,14,15, + 3,4,10,12,11,3,4,10,11,15,3,4,10,13,12,3,4,10,14,12, + 3,4,10,12,15,3,4,10,15,13,3,4,10,15,14,3,4,11,12,13, + 3,4,11,15,12,3,4,11,13,15,3,4,12,14,13,3,4,12,15,14, + 3,4,13,14,15,3,5,6,8,7,3,5,6,7,9,3,5,6,12,7, + 3,5,6,7,14,3,5,6,10,8,3,5,6,8,11,3,5,6,8,12, + 3,5,6,14,8,3,5,6,15,8,3,5,6,9,10,3,5,6,11,9, + 3,5,6,12,9,3,5,6,9,14,3,5,6,9,15,3,5,6,10,12, + 3,5,6,14,10,3,5,6,12,11,3,5,6,11,14,3,5,6,15,12, + 3,5,6,14,15,3,5,7,8,10,3,5,7,11,8,3,5,7,8,14, + 3,5,7,10,9,3,5,7,9,11,3,5,7,14,9,3,5,7,12,10, + 3,5,7,10,14,3,5,7,11,12,3,5,7,14,11,3,5,7,12,14, + 3,5,8,10,12,3,5,8,15,10,3,5,8,12,11,3,5,8,11,15, + 3,5,8,14,12,3,5,8,15,14,3,5,9,12,10,3,5,9,10,15, + 3,5,9,11,12,3,5,9,15,11,3,5,9,12,14,3,5,9,14,15, + 3,5,10,14,12,3,5,10,12,15,3,5,10,15,14,3,5,11,12,14, + 3,5,11,15,12,3,5,11,14,15,3,5,12,15,14,3,6,7,8,9, + 3,6,7,10,8,3,6,7,8,13,3,6,7,15,8,3,6,7,9,10, + 3,6,7,12,9,3,6,7,13,9,3,6,7,9,14,3,6,7,9,15 / data ((iperm(j1,j2),j1=1,5),j2=881,960) / + 3,6,7,10,12,3,6,7,14,10,3,6,7,12,13,3,6,7,15,12, + 3,6,7,13,14,3,6,7,14,15,3,6,8,10,9,3,6,8,9,11, + 3,6,8,9,12,3,6,8,14,9,3,6,8,15,9,3,6,8,11,10, + 3,6,8,12,10,3,6,8,10,13,3,6,8,10,14,3,6,8,13,11, + 3,6,8,11,15,3,6,8,13,12,3,6,8,12,15,3,6,8,14,13, + 3,6,8,15,13,3,6,8,15,14,3,6,9,10,11,3,6,9,13,10, + 3,6,9,11,12,3,6,9,11,13,3,6,9,14,11,3,6,9,15,11, + 3,6,9,12,13,3,6,9,13,14,3,6,9,13,15,3,6,10,12,11, + 3,6,10,11,14,3,6,10,13,12,3,6,10,14,13,3,6,11,12,13, + 3,6,11,15,12,3,6,11,13,14,3,6,11,14,15,3,6,12,15,13, + 3,6,13,15,14,3,7,8,9,10,3,7,8,11,9,3,7,8,9,14, + 3,7,8,10,11,3,7,8,13,10,3,7,8,14,10,3,7,8,10,15, + 3,7,8,11,13,3,7,8,15,11,3,7,8,13,14,3,7,8,14,15, + 3,7,9,11,10,3,7,9,10,12,3,7,9,10,13,3,7,9,15,10, + 3,7,9,12,11,3,7,9,13,11,3,7,9,11,14,3,7,9,11,15, + 3,7,9,14,12,3,7,9,14,13,3,7,9,15,14,3,7,10,11,12, + 3,7,10,14,11,3,7,10,12,13,3,7,10,12,14,3,7,10,15,12, + 3,7,10,13,14,3,7,10,14,15,3,7,11,13,12,3,7,11,12,15, + 3,7,11,14,13,3,7,11,15,14,3,7,12,13,14,3,7,12,14,15, + 3,8,9,12,10,3,8,9,10,15,3,8,9,11,12,3,8,9,15,11 / data ((iperm(j1,j2),j1=1,5),j2=961,1040) / + 3,8,9,12,14,3,8,9,14,15,3,8,10,12,11,3,8,10,11,15, + 3,8,10,13,12,3,8,10,14,12,3,8,10,12,15,3,8,10,15,13, + 3,8,10,15,14,3,8,11,12,13,3,8,11,15,12,3,8,11,13,15, + 3,8,12,14,13,3,8,12,15,14,3,8,13,14,15,3,9,10,11,12, + 3,9,10,15,11,3,9,10,12,13,3,9,10,13,15,3,9,11,13,12, + 3,9,11,12,14,3,9,11,15,13,3,9,11,14,15,3,9,12,13,14, + 3,9,13,15,14,3,10,11,14,12,3,10,11,12,15,3,10,11,15,14, + 3,10,12,14,13,3,10,12,13,15,3,10,13,14,15,3,11,12,13,14, + 3,11,12,15,13,3,11,12,14,15,3,11,13,15,14,3,12,13,14,15, + 4,5,6,8,7,4,5,6,7,10,4,5,6,12,7,4,5,6,13,7, + 4,5,6,7,14,4,5,6,7,15,4,5,6,10,8,4,5,6,8,11, + 4,5,6,8,12,4,5,6,14,8,4,5,6,15,8,4,5,6,11,10, + 4,5,6,10,13,4,5,6,12,11,4,5,6,13,11,4,5,6,11,14, + 4,5,6,11,15,4,5,6,13,12,4,5,6,14,13,4,5,6,15,13, + 4,5,7,8,10,4,5,7,11,8,4,5,7,8,14,4,5,7,10,11, + 4,5,7,12,10,4,5,7,13,10,4,5,7,10,15,4,5,7,11,12, + 4,5,7,11,13,4,5,7,14,11,4,5,7,15,11,4,5,7,12,14, + 4,5,7,13,14,4,5,7,14,15,4,5,8,10,12,4,5,8,15,10, + 4,5,8,12,11,4,5,8,11,15,4,5,8,14,12,4,5,8,15,14, + 4,5,10,11,12,4,5,10,15,11,4,5,10,12,13,4,5,10,13,15 / data ((iperm(j1,j2),j1=1,5),j2=1041,1120) / + 4,5,11,13,12,4,5,11,12,14,4,5,11,15,13,4,5,11,14,15, + 4,5,12,13,14,4,5,13,15,14,4,6,7,8,9,4,6,7,10,8, + 4,6,7,8,13,4,6,7,15,8,4,6,7,9,10,4,6,7,12,9, + 4,6,7,13,9,4,6,7,9,14,4,6,7,9,15,4,6,7,10,12, + 4,6,7,14,10,4,6,7,12,13,4,6,7,15,12,4,6,7,13,14, + 4,6,7,14,15,4,6,8,10,9,4,6,8,9,11,4,6,8,9,12, + 4,6,8,14,9,4,6,8,15,9,4,6,8,11,10,4,6,8,12,10, + 4,6,8,10,13,4,6,8,10,14,4,6,8,13,11,4,6,8,11,15, + 4,6,8,13,12,4,6,8,12,15,4,6,8,14,13,4,6,8,15,13, + 4,6,8,15,14,4,6,9,10,11,4,6,9,13,10,4,6,9,11,12, + 4,6,9,11,13,4,6,9,14,11,4,6,9,15,11,4,6,9,12,13, + 4,6,9,13,14,4,6,9,13,15,4,6,10,12,11,4,6,10,11,14, + 4,6,10,13,12,4,6,10,14,13,4,6,11,12,13,4,6,11,15,12, + 4,6,11,13,14,4,6,11,14,15,4,6,12,15,13,4,6,13,15,14, + 4,7,8,9,10,4,7,8,11,9,4,7,8,9,14,4,7,8,10,11, + 4,7,8,13,10,4,7,8,14,10,4,7,8,10,15,4,7,8,11,13, + 4,7,8,15,11,4,7,8,13,14,4,7,8,14,15,4,7,9,11,10, + 4,7,9,10,12,4,7,9,10,13,4,7,9,15,10,4,7,9,12,11, + 4,7,9,13,11,4,7,9,11,14,4,7,9,11,15,4,7,9,14,12, + 4,7,9,14,13,4,7,9,15,14,4,7,10,11,12,4,7,10,14,11 / data ((iperm(j1,j2),j1=1,5),j2=1121,1200) / + 4,7,10,12,13,4,7,10,12,14,4,7,10,15,12,4,7,10,13,14, + 4,7,10,14,15,4,7,11,13,12,4,7,11,12,15,4,7,11,14,13, + 4,7,11,15,14,4,7,12,13,14,4,7,12,14,15,4,8,9,12,10, + 4,8,9,10,15,4,8,9,11,12,4,8,9,15,11,4,8,9,12,14, + 4,8,9,14,15,4,8,10,12,11,4,8,10,11,15,4,8,10,13,12, + 4,8,10,14,12,4,8,10,12,15,4,8,10,15,13,4,8,10,15,14, + 4,8,11,12,13,4,8,11,15,12,4,8,11,13,15,4,8,12,14,13, + 4,8,12,15,14,4,8,13,14,15,4,9,10,11,12,4,9,10,15,11, + 4,9,10,12,13,4,9,10,13,15,4,9,11,13,12,4,9,11,12,14, + 4,9,11,15,13,4,9,11,14,15,4,9,12,13,14,4,9,13,15,14, + 4,10,11,14,12,4,10,11,12,15,4,10,11,15,14,4,10,12,14,13, + 4,10,12,13,15,4,10,13,14,15,4,11,12,13,14,4,11,12,15,13, + 4,11,12,14,15,4,11,13,15,14,4,12,13,14,15,5,6,7,8,9, + 5,6,7,10,8,5,6,7,8,13,5,6,7,15,8,5,6,7,9,10, + 5,6,7,12,9,5,6,7,13,9,5,6,7,9,14,5,6,7,9,15, + 5,6,7,10,12,5,6,7,14,10,5,6,7,12,13,5,6,7,15,12, + 5,6,7,13,14,5,6,7,14,15,5,6,8,10,9,5,6,8,9,11, + 5,6,8,9,12,5,6,8,14,9,5,6,8,15,9,5,6,8,11,10, + 5,6,8,12,10,5,6,8,10,13,5,6,8,10,14,5,6,8,13,11, + 5,6,8,11,15,5,6,8,13,12,5,6,8,12,15,5,6,8,14,13 / data ((iperm(j1,j2),j1=1,5),j2=1201,1280) / + 5,6,8,15,13,5,6,8,15,14,5,6,9,10,11,5,6,9,13,10, + 5,6,9,11,12,5,6,9,11,13,5,6,9,14,11,5,6,9,15,11, + 5,6,9,12,13,5,6,9,13,14,5,6,9,13,15,5,6,10,12,11, + 5,6,10,11,14,5,6,10,13,12,5,6,10,14,13,5,6,11,12,13, + 5,6,11,15,12,5,6,11,13,14,5,6,11,14,15,5,6,12,15,13, + 5,6,13,15,14,5,7,8,9,10,5,7,8,11,9,5,7,8,9,14, + 5,7,8,10,11,5,7,8,13,10,5,7,8,14,10,5,7,8,10,15, + 5,7,8,11,13,5,7,8,15,11,5,7,8,13,14,5,7,8,14,15, + 5,7,9,11,10,5,7,9,10,12,5,7,9,10,13,5,7,9,15,10, + 5,7,9,12,11,5,7,9,13,11,5,7,9,11,14,5,7,9,11,15, + 5,7,9,14,12,5,7,9,14,13,5,7,9,15,14,5,7,10,11,12, + 5,7,10,14,11,5,7,10,12,13,5,7,10,12,14,5,7,10,15,12, + 5,7,10,13,14,5,7,10,14,15,5,7,11,13,12,5,7,11,12,15, + 5,7,11,14,13,5,7,11,15,14,5,7,12,13,14,5,7,12,14,15, + 5,8,9,12,10,5,8,9,10,15,5,8,9,11,12,5,8,9,15,11, + 5,8,9,12,14,5,8,9,14,15,5,8,10,12,11,5,8,10,11,15, + 5,8,10,13,12,5,8,10,14,12,5,8,10,12,15,5,8,10,15,13, + 5,8,10,15,14,5,8,11,12,13,5,8,11,15,12,5,8,11,13,15, + 5,8,12,14,13,5,8,12,15,14,5,8,13,14,15,5,9,10,11,12, + 5,9,10,15,11,5,9,10,12,13,5,9,10,13,15,5,9,11,13,12 / data ((iperm(j1,j2),j1=1,5),j2=1281,nperm) / + 5,9,11,12,14,5,9,11,15,13,5,9,11,14,15,5,9,12,13,14, + 5,9,13,15,14,5,10,11,14,12,5,10,11,12,15,5,10,11,15,14, + 5,10,12,14,13,5,10,12,13,15,5,10,13,14,15,5,11,12,13,14, + 5,11,12,15,13,5,11,12,14,15,5,11,13,15,14,5,12,13,14,15 / herwig++-2.6.0.orig/Looptools/include/ftypes.h0000644000175000017500000000140211754474774022074 0ustar sylvestresylvestre#ifndef FTYPES_H #define FTYPES_H #define FORTRAN(s) s##_ typedef int INTEGER; typedef const INTEGER CINTEGER; typedef double DOUBLE_PRECISION; typedef const DOUBLE_PRECISION CDOUBLE_PRECISION; typedef struct { DOUBLE_PRECISION re, im; } DOUBLE_COMPLEX; typedef const DOUBLE_COMPLEX CDOUBLE_COMPLEX; typedef char CHARACTER; typedef const CHARACTER CCHARACTER; #ifdef __cplusplus #include typedef std::complex double_complex; #define ToComplex(c) double_complex(c.re, c.im) #define ToComplex2(r,i) double_complex(r, i) #define Re(x) std::real(x) #define Im(x) std::imag(x) #else typedef DOUBLE_COMPLEX double_complex; #define ToComplex(c) c #define ToComplex2(r,i) (double_complex){r, i} #define Re(x) (x).re #define Im(x) (x).im #endif #endif herwig++-2.6.0.orig/Looptools/include/ff.h0000644000175000017500000001527711754474774021174 0ustar sylvestresylvestre* $Id: ff.h,v 1.1 1995/12/12 10:03:48 gj Exp $ * ------------------------------------------------------------- * INCLUDE FILE FOR THE FF ROUTINES. * Geert Jan van Oldenborgh. * ------------------------------------------------------------- * please do not change, and recompile _everything_ when you do. * ------------------------------------------------------------- * * this parameter determines how far the scalar npoint functions * will look back to find the same parameters (when lmem is true) * integer memory parameter (memory = 12) * * if .TRUE. then default (ffinit) * l4also: in C0 (and higher), also consider the algorithm with 16 * dilogs .TRUE. * ldc3c4: in D0 (and higher), also consider possible cancellations * between the C0s .TRUE. * lmem: before computing the C0 and higher, first check whether * it has already been done recently .FALSE. * ldot: leave the dotproducts and some determinants in common * .FALSE. * onshel: (in ffz?0 only): use onshell momenta .TRUE. * lsmug: internal use * lnasty: internal use * logical l4also,ldc3c4,lmem,ldot,onshel,lsmug,lnasty * * nwidth: number of widths within which the complex mass is used * nschem: scheme to handle the complex mass (see ffinit.f) * idot: internal flags to signal that some of the dotproducts * are input: 0: none; 1: external pi.pj, 2: external + * kinematical determinant, 3: all dotproducts + kindet. * integer nwidth,nschem,idot * * xloss: factor that the final result of a subtraction can be * smaller than the terms without warning (default 1/8) * precx: precision of real numbers, determined at runtime by * ffinit (IEEE: 4.e-16) * precc: same for complex numbers * xalogm: smallest real number of which a log can be taken, * determined at runtime by ffinit (IEEE: 2.e-308) * xclogm: same for complex. * xalog2: xalogm**2 * xclog2: xclogm**2 * reqprc: not used * pi: pi * pi6: pi**2/6 * pi12: pi**2/12 * xlg2: log(2) * bf: factors in the expansion of dilog (~Bernouilli numbers) * xninv: 1/n * xn2inv: 1/n**2 * xinfac: 1/n! * fpij2: vi.vj for 2point function 1-2: si, 3-3: pi * fpij3: vi.vj for 3point function 1-3: si, 4-6: pi * fpij4: vi.vj for 4point function 1-4: si, 5-10: pi * fpij5: vi.vj for 5point function 1-5: si, 6-15: pi * fpij6: vi.vj for 6point function 1-6: si, 7-21: pi * fdel2: del2 = delta_(p1,p2)^(p1,p2) = p1^2.p2^2 - p1.p2^2 in C0 * fdel3: del3 = delta_(p1,p2,p3)^(p1,p2,p3) in D0 * fdel4s: del4s = delta_(s1,s2,s3,s4)^(s1,s2,s3,s4) in D0 * fdel4: del4 = delta_(p1,p2,p3,p4)^(p1,p2,p3,p4) in E0 * fdl3i: del3i = delta_(pj,pk,pl)^(pj,pk,pl) in E0, D0 without si * fdl4si: dl4si = del4s in E0, D0 without si * fdl3ij: same in F0 without si and sj. * fd4sij: dl4si = del4s in E0, D0 without si * fdl4i: delta4 in F0 without si. * fodel2: same offshell (in case of complex or z-functions) * fodel3: -''- * cfdl4s: -''- * fodel4: -''- * fodl3i: -''- * fod3ij: -''- * fodl4i: -''- * fidel3: ier of del3 (is not included in D0) * fidel4: ier of del4 (is not included in E0) * fidl3i: ier of dl3i (is not included in E0) * fid3ij: ier of dl3ij (is not included in F0) * fidl4i: ier of dl4i (is not included in F0) * DOUBLE PRECISION xloss,precx,precc,xalogm,xclogm,xalog2,xclog2, & reqprc,pi,pi6,pi12,xlg2,bf(20), & xninv(30),xn2inv(30),xinfac(30), & fpij2(3,3),fpij3(6,6),fpij4(10,10),fpij5(15,15), & fpij6(21,21),fdel2,fdel3,fdel4s,fdel4,fdl3i(5), & fdl4si(5),fdl3ij(6,6),fd4sij(6,6),fdl4i(6),fodel2, & fodel3,fodel4,fodl3i(5),fod3ij(6,6),fodl4i(6) integer fidel3,fidel4,fidl3i(5),fid3ij(6,6),fidl4i(6) * * cI: imaginary unit * c[zero1]:0,1 complex * c2ipi: 2*i*pi * cipi2: i*pi**2 * cfp..: complex version of fp..., only defined in ff[cz]* * cmipj: (internal only) mi^2 - pj^2 in C0 * c2sisj: (internal only) 2*si.sj in D0 * cfdl4s: del4s in complex case (D0) * ca1: (internal only) complex A1 * csdl2p: (internal only) complex transformed sqrt(del2) * DOUBLE COMPLEX cI,czero,chalf,cone,c2ipi,cipi2, & cfpij2(3,3),cfpij3(6,6),cfpij4(10,10),cfpij5(15,15), & cfpij6(21,21),cmipj(3,3),c2sisj(4,4),cfdl4s,ca1 * * nevent: number in integration loop (to be updated by user) * ner: can be used to signal numerical problems (see ffrcvr) * id: identifier of scalar function (to be set by user) * idsub: internal identifier to pinpoint errors * inx: in D0: p(inx(i,j)) = isgn(i,j)*(s(i)-s(j)) * inx5: in E0: p(inx5(i,j)) = isgn5(i,j)*(s(i)-s(j)) * inx6: in F0: p(inx6(i,j)) = isgn6(i,j)*(s(i)-s(j)) * isgn: see inx * isgn5: see inx5 * isgn6: see inx6 * iold: rotation matrix for 4point function * isgrot: signs to iold * isgn34: +1 or -1: which root to choose in the transformation (D0) * isgnal: +1 or -1: which root to choose in the alpha-trick (C0) * irota3: save the number of positions the C0 configuration has been * rotated over * irota4: same for the D0 * irota5: same for the E0 * irota6: same for the F0 * integer nevent,ner,id,idsub,inx(4,4),isgn(4,4),inx5(5,5), & isgn5(5,5),inx6(6,6),isgn6(6,6),isgn34,isgnal,iold(13, & 12),isgrot(10,12),irota3,irota4,irota5,irota6 integer idum93(2) * DOUBLE PRECISION acc, eps * * parameters * parameter( & cI = (0D0, 1D0), & czero = (0D0,0D0), & chalf = (.5D0,0D0), & cone = (1D0,0D0), & c2ipi = (0D0,6.28318530717958647692528676655896D0), & cipi2 = (0D0,9.869604401089358618834490999876D0), & pi = 3.14159265358979323846264338327948D0, & pi6 = 1.644934066848226436472415166646D0, & pi12 = .822467033424113218236207583323D0, & xlg2 = .6931471805599453094172321214581D0, & acc = 1D-12, & eps = 1D-25 ) * * common * common /ffsign/isgn34,isgnal common /ffprec/ xloss,precx,precc,xalogm,xclogm,xalog2,xclog2, & reqprc common /ffflag/ l4also,ldc3c4,lmem,ldot, & nevent,ner,id,idsub,nwidth,nschem,onshel,idot common /ffcnst/ bf,xninv,xn2inv,xinfac,inx,isgn,iold,isgrot, & inx5,isgn5,inx6,isgn6 common /ffrota/ irota3,irota4,irota5,irota6 common /ffdot/ fpij2,fpij3,fpij4,fpij5,fpij6 common /ffdel/ fdel2,fdel3,fdel4s,fdel4,fdl3i,fdl4si,fdl3ij, & fd4sij,fdl4i common /ffidel/ fidel3,fidel4,fidl3i,fid3ij,fidl4i common /ffcdot/ cfpij2,cfpij3,cfpij4,cfpij5,cfpij6 common /ffcdel/ fodel2,fodel3,cfdl4s,fodel4,fodl3i,fod3ij,fodl4i common /ffsmug/ lsmug,lnasty,idum93,cmipj,c2sisj,ca1 * * regularization parameters * DOUBLE PRECISION mudim,delta,lambda,minmass common /ltregul/ mudim,delta,lambda,minmass * * nan is used for undefined values and is supposed to * "poison" a result, much as the IEEE NaN, which is just * too unportable in Fortran * DOUBLE COMPLEX nan parameter (nan = (1D123, 1D123)) herwig++-2.6.0.orig/Looptools/include/externals.h0000644000175000017500000001446611754474774022605 0ustar sylvestresylvestre#if 0 This file was generated by mkexternalsh on Thu Dec 9 09:13:07 CET 2010. Do not edit. #endif #define A0b ljA0b #define A0bC ljA0bC #define Bcheck ljBcheck #define Bcoeff ljBcoeff #define BcoeffC ljBcoeffC #define Bcoeffa ljBcoeffa #define BcoeffaC ljBcoeffaC #define Bcoeffb ljBcoeffb #define C0coll ljC0coll #define C0collDR ljC0collDR #define C0p0 ljC0p0 #define C0p1 ljC0p1 #define C0p2 ljC0p2 #define C0p3 ljC0p3 #define C0soft ljC0soft #define C0softDR ljC0softDR #define CDispatch ljCDispatch #define Ccoeff ljCcoeff #define CcoeffC ljCcoeffC #define D0coll ljD0coll #define D0collDR ljD0collDR #define D0m0 ljD0m0 #define D0m0p0 ljD0m0p0 #define D0m0p1 ljD0m0p1 #define D0m0p2 ljD0m0p2 #define D0m0p3 ljD0m0p3 #define D0m1 ljD0m1 #define D0m1p2 ljD0m1p2 #define D0m1p3 ljD0m1p3 #define D0m2 ljD0m2 #define D0m2p3 ljD0m2p3 #define D0m3 ljD0m3 #define D0m4 ljD0m4 #define D0soft ljD0soft #define D0softDR ljD0softDR #define DDispatch ljDDispatch #define Dcoeff ljDcoeff #define DcoeffC ljDcoeffC #define Decomp ljDecomp #define DecompC ljDecompC #define Detm ljDetm #define DetmC ljDetmC #define DumpCoeff ljDumpCoeff #define DumpCoeffC ljDumpCoeffC #define DumpPara ljDumpPara #define DumpParaC ljDumpParaC #define E0b ljE0b #define Echeck ljEcheck #define EcheckC ljEcheckC #define Ecoeff ljEcoeff #define EcoeffC ljEcoeffC #define Ecoeffa ljEcoeffa #define EcoeffaC ljEcoeffaC #define Ecoeffb ljEcoeffb #define EcoeffbC ljEcoeffbC #define InvGramE ljInvGramE #define InvGramEC ljInvGramEC #define Inverse ljInverse #define InverseC ljInverseC #define Li2omrat ljLi2omrat #define Li2omrat2 ljLi2omrat2 #define Li2omx2 ljLi2omx2 #define Li2omx3 ljLi2omx3 #define Li2rat ljLi2rat #define Li2series ljLi2series #define RSolve ljRSolve #define Solve ljSolve #define SolveC ljSolveC #define bdK ljbdK #define cachelookup ljcachelookup #define cln ljcln #define cspence ljcspence #define dfflo1 ljdfflo1 #define dfflo2 ljdfflo2 #define dfflo3 ljdfflo3 #define eta ljeta #define etatilde ljetatilde #define ff2d22 ljff2d22 #define ff2dl2 ljff2dl2 #define ff3dl2 ljff3dl2 #define ffRn ljffRn #define ffS2 ljffS2 #define ffS2_linr ljffS2_linr #define ffS3n ljffS3n #define ffT13 ljffT13 #define ffT_lin ljffT_lin #define ffTn ljffTn #define ffabcd ljffabcd #define ffai ljffai #define ffbglg ljffbglg #define ffbnd ljffbnd #define ffbndc ljffbndc #define ffc1lg ljffc1lg #define ffca0 ljffca0 #define ffcayl ljffcayl #define ffcb0 ljffcb0 #define ffcb0p ljffcb0p #define ffcb1 ljffcb1 #define ffcb1a ljffcb1a #define ffcb2p ljffcb2p #define ffcb2q ljffcb2q #define ffcc0 ljffcc0 #define ffcc0a ljffcc0a #define ffcc0b ljffcc0b #define ffcc0p ljffcc0p #define ffcc0r ljffcc0r #define ffccyz ljffccyz #define ffcdb0 ljffcdb0 #define ffcdbp ljffcdbp #define ffcdel ljffcdel #define ffcdot ljffcdot #define ffcdwz ljffcdwz #define ffcel2 ljffcel2 #define ffcel3 ljffcel3 #define ffchck ljffchck #define ffcl2p ljffcl2p #define ffcl2t ljffcl2t #define ffcl3m ljffcl3m #define ffcl3s ljffcl3s #define ffclg2 ljffclg2 #define ffclgy ljffclgy #define ffclmb ljffclmb #define ffcnst ljffcnst #define ffcod3 ljffcod3 #define ffcoot ljffcoot #define ffcot2 ljffcot2 #define ffcot3 ljffcot3 #define ffcrr ljffcrr #define ffcrt3 ljffcrt3 #define ffcs3 ljffcs3 #define ffcs4 ljffcs4 #define ffcxr ljffcxr #define ffcxra ljffcxra #define ffcxs3 ljffcxs3 #define ffcxs4 ljffcxs4 #define ffcxyz ljffcxyz #define ffd0c ljffd0c #define ffd0tra ljffd0tra #define ffdcc0 ljffdcc0 #define ffdcrr ljffdcrr #define ffdcs ljffdcs #define ffdcxr ljffdcxr #define ffdcxs ljffdcxs #define ffdel ljffdel #define ffdel2 ljffdel2 #define ffdel3 ljffdel3 #define ffdel4 ljffdel4 #define ffdel5 ljffdel5 #define ffdif4 ljffdif4 #define ffdl2p ljffdl2p #define ffdl2s ljffdl2s #define ffdl2t ljffdl2t #define ffdl3m ljffdl3m #define ffdl3p ljffdl3p #define ffdl3s ljffdl3s #define ffdl4p ljffdl4p #define ffdl4r ljffdl4r #define ffdot ljffdot #define ffdot2 ljffdot2 #define ffdot3 ljffdot3 #define ffdot4 ljffdot4 #define ffdot5 ljffdot5 #define ffdwz ljffdwz #define ffdxc0 ljffdxc0 #define fferr ljfferr #define ffflag ljffflag #define ffgdt4 ljffgdt4 #define ffgeta ljffgeta #define ffidel ljffidel #define ffieps ljffieps #define ffint3 ljffint3 #define ffpi43 ljffpi43 #define ffpi54 ljffpi54 #define ffprec ljffprec #define ffpvf ljffpvf #define ffroot ljffroot #define ffroots ljffroots #define ffrot3 ljffrot3 #define ffrot4 ljffrot4 #define ffrota ljffrota #define ffrt3p ljffrt3p #define ffset ljffset #define ffsign ljffsign #define ffsm43 ljffsm43 #define ffsmug ljffsmug #define fftayl ljfftayl #define ffthf ljffthf #define ffthre ljffthre #define fftran ljfftran #define fftraroot ljfftraroot #define ffwarn ljffwarn #define ffwbeta ljffwbeta #define ffx2ir ljffx2ir #define ffxa0 ljffxa0 #define ffxb0 ljffxb0 #define ffxb0p ljffxb0p #define ffxb1 ljffxb1 #define ffxb111 ljffxb111 #define ffxb1a ljffxb1a #define ffxb2p ljffxb2p #define ffxb2q ljffxb2q #define ffxc0 ljffxc0 #define ffxc0a ljffxc0a #define ffxc0b ljffxc0b #define ffxc0i ljffxc0i #define ffxc0j ljffxc0j #define ffxc0p ljffxc0p #define ffxc0p0 ljffxc0p0 #define ffxc0r ljffxc0r #define ffxclg ljffxclg #define ffxd0 ljffxd0 #define ffxd0a ljffxd0a #define ffxd0b ljffxd0b #define ffxd0d ljffxd0d #define ffxd0e ljffxd0e #define ffxd0m0 ljffxd0m0 #define ffxd0p ljffxd0p #define ffxd0r ljffxd0r #define ffxdb0 ljffxdb0 #define ffxdb1 ljffxdb1 #define ffxdb11 ljffxdb11 #define ffxdbd ljffxdbd #define ffxdbp ljffxdbp #define ffxdir ljffxdir #define ffxe0 ljffxe0 #define ffxe00 ljffxe00 #define ffxe0a ljffxe0a #define ffxe0r ljffxe0r #define ffxhck ljffxhck #define ffxkfn ljffxkfn #define ffxl22 ljffxl22 #define ffxlam ljffxlam #define ffxli2 ljffxli2 #define ffxlmb ljffxlmb #define ffxlogx ljffxlogx #define ffxtra ljffxtra #define ffxxyz ljffxxyz #define ffypvf ljffypvf #define ffzdbd ljffzdbd #define ffzkfn ljffzkfn #define ffzli2 ljffzli2 #define ffzxdl ljffzxdl #define ffzzdl ljffzzdl #define fpv ljfpv #define fth ljfth #define ln ljln #define lndiv0 ljlndiv0 #define lndiv1 ljlndiv1 #define lnrat ljlnrat #define ltcoeffnames ljltcoeffnames #define ltparanames ljltparanames #define nffet1 ljnffet1 #define nffeta ljnffeta #define spence ljspence #define xeta ljxeta #define xetatilde ljxetatilde #define xlogx ljxlogx #define xspence ljxspence #define yfpv ljyfpv #define zfflo1 ljzfflo1 #define zfflo2 ljzfflo2 #define zfflo3 ljzfflo3 #define zfflog ljzfflog #define zxfflg ljzxfflg herwig++-2.6.0.orig/Looptools/include/defs.h0000644000175000017500000001505511754474774021514 0ustar sylvestresylvestre* defs.h * internal definitions for the LoopTools routines * this file is part of LoopTools * last modified 7 Dec 10 th #include "externals.h" #ifdef COMPLEXPARA #define XA0 A0C #define XA0b A0bC #define XA0sub a0subc #define XA00 A00C #define XA00sub a00subc #define XB0 B0C #define XB1 B1C #define XB00 B00C #define XB11 B11C #define XB001 B001C #define XB111 B111C #define XDB0 DB0C #define XDB1 DB1C #define XDB00 DB00C #define XDB11 DB11C #define XB0i B0iC #define XBget BgetC #define XBcoeff BcoeffC #define XBcoeffa BcoeffaC #define XC0 C0C #define XC0i C0iC #define XCget CgetC #define XCcoeff CcoeffC #define XD0 D0C #define XD0i D0iC #define XDget DgetC #define XDcoeff DcoeffC #define XE0 E0C #define XE0sub e0subc #define XE0i E0iC #define XEget EgetC #define XEcoeff EcoeffC #define XEcoeffa EcoeffaC #define XEcoeffb EcoeffbC #define XEcheck EcheckC #define XInvGramE InvGramEC #define XSolve SolveC #define XEigen EigenC #define XDecomp DecompC #define XDet DetmC #define XInverse InverseC #define XDumpPara DumpParaC #define XDumpCoeff DumpCoeffC #define XLi2 Li2C #define XLi2sub li2csub #define Xfpij2 cfpij2 #define Xffa0 ffca0 #define Xffb0 ffcb0 #define Xffb1 ffcb1 #define Xffb2p ffcb2p #define Xffdb0 ffcdb0 #define RC 2 #define DVAR double complex #define QVAR double complex #define QREAL double precision #define QPREC(x) x #define QCC(x) DCONJG(x) #define QRE(x) DBLE(x) #else #define XA0 A0 #define XA0b A0b #define XA0sub a0sub #define XA00 A00 #define XA00sub a00sub #define XB0 B0 #define XB1 B1 #define XB00 B00 #define XB11 B11 #define XB001 B001 #define XB111 B111 #define XDB0 DB0 #define XDB1 DB1 #define XDB00 DB00 #define XDB11 DB11 #define XB0i B0i #define XBget Bget #define XBcoeff Bcoeff #define XBcoeffa Bcoeffa #define XC0 C0 #define XC0i C0i #define XCget Cget #define XCcoeff Ccoeff #define XD0 D0 #define XD0i D0i #define XDget Dget #define XDcoeff Dcoeff #define XE0 E0 #define XE0sub e0sub #define XE0i E0i #define XEget Eget #define XEcoeff Ecoeff #define XEcoeffa Ecoeffa #define XEcoeffb Ecoeffb #define XEcheck Echeck #define XInvGramE InvGramE #define XSolve Solve #define XEigen Eigen #define XDecomp Decomp #define XDet Detm #define XInverse Inverse #define XDumpPara DumpPara #define XDumpCoeff DumpCoeff #define XLi2 Li2 #define XLi2sub li2sub #define Xfpij2 fpij2 #define Xffa0 ffxa0 #define Xffb0 ffxb0 #define Xffb1 ffxb1 #define Xffb2p ffxb2p #define Xffdb0 ffxdb0 #define RC 1 #define DVAR double precision #if QUAD #define QVAR real*16 #define QPREC(x) QEXT(x) #else #define QVAR double precision #define QPREC(x) x #endif #define QREAL QVAR #define QCC(x) x #define QRE(x) x #endif #define bb0 1 #define bb1 2 #define bb00 3 #define bb11 4 #define bb001 5 #define bb111 6 #define dbb0 7 #define dbb1 8 #define dbb00 9 #define dbb11 10 #define Pbb 3 #define Nbb 10 #define cc0 1 #define cc1 2 #define cc2 3 #define cc00 4 #define cc11 5 #define cc12 6 #define cc22 7 #define cc001 8 #define cc002 9 #define cc111 10 #define cc112 11 #define cc122 12 #define cc222 13 #define cc0000 14 #define cc0011 15 #define cc0012 16 #define cc0022 17 #define cc1111 18 #define cc1112 19 #define cc1122 20 #define cc1222 21 #define cc2222 22 #define Pcc 6 #define Ncc 22 #define dd0 1 #define dd1 2 #define dd2 3 #define dd3 4 #define dd00 5 #define dd11 6 #define dd12 7 #define dd13 8 #define dd22 9 #define dd23 10 #define dd33 11 #define dd001 12 #define dd002 13 #define dd003 14 #define dd111 15 #define dd112 16 #define dd113 17 #define dd122 18 #define dd123 19 #define dd133 20 #define dd222 21 #define dd223 22 #define dd233 23 #define dd333 24 #define dd0000 25 #define dd0011 26 #define dd0012 27 #define dd0013 28 #define dd0022 29 #define dd0023 30 #define dd0033 31 #define dd1111 32 #define dd1112 33 #define dd1113 34 #define dd1122 35 #define dd1123 36 #define dd1133 37 #define dd1222 38 #define dd1223 39 #define dd1233 40 #define dd1333 41 #define dd2222 42 #define dd2223 43 #define dd2233 44 #define dd2333 45 #define dd3333 46 #define dd00001 47 #define dd00002 48 #define dd00003 49 #define dd00111 50 #define dd00112 51 #define dd00113 52 #define dd00122 53 #define dd00123 54 #define dd00133 55 #define dd00222 56 #define dd00223 57 #define dd00233 58 #define dd00333 59 #define dd11111 60 #define dd11112 61 #define dd11113 62 #define dd11122 63 #define dd11123 64 #define dd11133 65 #define dd11222 66 #define dd11223 67 #define dd11233 68 #define dd11333 69 #define dd12222 70 #define dd12223 71 #define dd12233 72 #define dd12333 73 #define dd13333 74 #define dd22222 75 #define dd22223 76 #define dd22233 77 #define dd22333 78 #define dd23333 79 #define dd33333 80 #define Pdd 10 #define Ndd 80 #define ee0 1 #define ee1 2 #define ee2 3 #define ee3 4 #define ee4 5 #define ee00 6 #define ee11 7 #define ee12 8 #define ee13 9 #define ee14 10 #define ee22 11 #define ee23 12 #define ee24 13 #define ee33 14 #define ee34 15 #define ee44 16 #define ee001 17 #define ee002 18 #define ee003 19 #define ee004 20 #define ee111 21 #define ee112 22 #define ee113 23 #define ee114 24 #define ee122 25 #define ee123 26 #define ee124 27 #define ee133 28 #define ee134 29 #define ee144 30 #define ee222 31 #define ee223 32 #define ee224 33 #define ee233 34 #define ee234 35 #define ee244 36 #define ee333 37 #define ee334 38 #define ee344 39 #define ee444 40 #define ee0000 41 #define ee0011 42 #define ee0012 43 #define ee0013 44 #define ee0014 45 #define ee0022 46 #define ee0023 47 #define ee0024 48 #define ee0033 49 #define ee0034 50 #define ee0044 51 #define ee1111 52 #define ee1112 53 #define ee1113 54 #define ee1114 55 #define ee1122 56 #define ee1123 57 #define ee1124 58 #define ee1133 59 #define ee1134 60 #define ee1144 61 #define ee1222 62 #define ee1223 63 #define ee1224 64 #define ee1233 65 #define ee1234 66 #define ee1244 67 #define ee1333 68 #define ee1334 69 #define ee1344 70 #define ee1444 71 #define ee2222 72 #define ee2223 73 #define ee2224 74 #define ee2233 75 #define ee2234 76 #define ee2244 77 #define ee2333 78 #define ee2334 79 #define ee2344 80 #define ee2444 81 #define ee3333 82 #define ee3334 83 #define ee3344 84 #define ee3444 85 #define ee4444 86 #define Pee 15 #define Nee 86 #define KeyA0 0 #define KeyBget 2 #define KeyC0 4 #define KeyD0 6 #define KeyD0C 8 #define KeyE0 10 #define KeyEget 12 #define KeyEgetC 14 #define DebugB 0 #define DebugC 1 #define DebugD 2 #define DebugE 3 #define Bval(id,p) cache(p+id,RC) #define Cval(id,p) cache(p+id,RC+2) #define Dval(id,p) cache(p+id,RC+4) #define Eval(id,p) cache(p+id,RC+6) #define Nval(n,id,p) cache(p+id,RC+2*n-4) #define Sgn(i) (1 - 2*iand(i,1)) #define MAXDIM 8 #ifndef KIND #define KIND 1 #endif *#define WARNINGS herwig++-2.6.0.orig/Looptools/include/looptools.h0000644000175000017500000001237411754474774022626 0ustar sylvestresylvestre* looptools.h * the header file for Fortran with all definitions for LoopTools * this file is part of LoopTools * last modified 6 Jul 10 th #ifndef LOOPTOOLS_H #define LOOPTOOLS_H #define bb0 1 #define bb1 2 #define bb00 3 #define bb11 4 #define bb001 5 #define bb111 6 #define dbb0 7 #define dbb1 8 #define dbb00 9 #define dbb11 10 #define cc0 1 #define cc1 2 #define cc2 3 #define cc00 4 #define cc11 5 #define cc12 6 #define cc22 7 #define cc001 8 #define cc002 9 #define cc111 10 #define cc112 11 #define cc122 12 #define cc222 13 #define cc0000 14 #define cc0011 15 #define cc0012 16 #define cc0022 17 #define cc1111 18 #define cc1112 19 #define cc1122 20 #define cc1222 21 #define cc2222 22 #define dd0 1 #define dd1 2 #define dd2 3 #define dd3 4 #define dd00 5 #define dd11 6 #define dd12 7 #define dd13 8 #define dd22 9 #define dd23 10 #define dd33 11 #define dd001 12 #define dd002 13 #define dd003 14 #define dd111 15 #define dd112 16 #define dd113 17 #define dd122 18 #define dd123 19 #define dd133 20 #define dd222 21 #define dd223 22 #define dd233 23 #define dd333 24 #define dd0000 25 #define dd0011 26 #define dd0012 27 #define dd0013 28 #define dd0022 29 #define dd0023 30 #define dd0033 31 #define dd1111 32 #define dd1112 33 #define dd1113 34 #define dd1122 35 #define dd1123 36 #define dd1133 37 #define dd1222 38 #define dd1223 39 #define dd1233 40 #define dd1333 41 #define dd2222 42 #define dd2223 43 #define dd2233 44 #define dd2333 45 #define dd3333 46 #define dd00001 47 #define dd00002 48 #define dd00003 49 #define dd00111 50 #define dd00112 51 #define dd00113 52 #define dd00122 53 #define dd00123 54 #define dd00133 55 #define dd00222 56 #define dd00223 57 #define dd00233 58 #define dd00333 59 #define dd11111 60 #define dd11112 61 #define dd11113 62 #define dd11122 63 #define dd11123 64 #define dd11133 65 #define dd11222 66 #define dd11223 67 #define dd11233 68 #define dd11333 69 #define dd12222 70 #define dd12223 71 #define dd12233 72 #define dd12333 73 #define dd13333 74 #define dd22222 75 #define dd22223 76 #define dd22233 77 #define dd22333 78 #define dd23333 79 #define dd33333 80 #define ee0 1 #define ee1 2 #define ee2 3 #define ee3 4 #define ee4 5 #define ee00 6 #define ee11 7 #define ee12 8 #define ee13 9 #define ee14 10 #define ee22 11 #define ee23 12 #define ee24 13 #define ee33 14 #define ee34 15 #define ee44 16 #define ee001 17 #define ee002 18 #define ee003 19 #define ee004 20 #define ee111 21 #define ee112 22 #define ee113 23 #define ee114 24 #define ee122 25 #define ee123 26 #define ee124 27 #define ee133 28 #define ee134 29 #define ee144 30 #define ee222 31 #define ee223 32 #define ee224 33 #define ee233 34 #define ee234 35 #define ee244 36 #define ee333 37 #define ee334 38 #define ee344 39 #define ee444 40 #define ee0000 41 #define ee0011 42 #define ee0012 43 #define ee0013 44 #define ee0014 45 #define ee0022 46 #define ee0023 47 #define ee0024 48 #define ee0033 49 #define ee0034 50 #define ee0044 51 #define ee1111 52 #define ee1112 53 #define ee1113 54 #define ee1114 55 #define ee1122 56 #define ee1123 57 #define ee1124 58 #define ee1133 59 #define ee1134 60 #define ee1144 61 #define ee1222 62 #define ee1223 63 #define ee1224 64 #define ee1233 65 #define ee1234 66 #define ee1244 67 #define ee1333 68 #define ee1334 69 #define ee1344 70 #define ee1444 71 #define ee2222 72 #define ee2223 73 #define ee2224 74 #define ee2233 75 #define ee2234 76 #define ee2244 77 #define ee2333 78 #define ee2334 79 #define ee2344 80 #define ee2444 81 #define ee3333 82 #define ee3334 83 #define ee3344 84 #define ee3444 85 #define ee4444 86 #define KeyA0 2**0 #define KeyBget 2**2 #define KeyC0 2**4 #define KeyD0 2**6 #define KeyD0C 2**8 #define KeyE0 2**10 #define KeyEget 2**12 #define KeyEgetC 2**14 #define KeyAll 21845 #define DebugB 2**0 #define DebugC 2**1 #define DebugD 2**2 #define DebugE 2**3 #define DebugAll 15 #define Bval(id,p) cache(p+id,1) #define BvalC(id,p) cache(p+id,2) #define Cval(id,p) cache(p+id,3) #define CvalC(id,p) cache(p+id,4) #define Dval(id,p) cache(p+id,5) #define DvalC(id,p) cache(p+id,6) #define Eval(id,p) cache(p+id,7) #define EvalC(id,p) cache(p+id,8) #define Ccache 0 #define Dcache 0 #endif integer ncaches parameter (ncaches = 8) double complex cache(2,ncaches) common /ltvars/ cache double complex A0, A0C, B0i, B0iC double complex B0, B1, B00, B11, B001, B111 double complex B0C, B1C, B00C, B11C, B001C, B111C double complex DB0, DB1, DB00, DB11 double complex DB0C, DB1C, DB00C, DB11C double complex C0, C0C, C0i, C0iC double complex D0, D0C, D0i, D0iC double complex E0, E0C, E0i, E0iC double complex Li2, Li2C integer Bget, BgetC, Cget, CgetC, Dget, DgetC, Eget, EgetC double precision getmudim, getdelta, getlambda, getmaxdev integer getwarndigits, geterrdigits integer getversionkey, getdebugkey integer getcachelast external A0, A0C, B0i, B0iC external B0, B1, B00, B11, B001, B111 external B0C, B1C, B00C, B11C, B001C, B111C external DB0, DB1, DB00, DB11 external DB0C, DB1C, DB00C, DB11C external C0, C0C, C0i, C0iC external D0, D0C, D0i, D0iC external E0, E0C, E0i, E0iC external Li2, Li2C external Bget, BgetC, Cget, CgetC, Dget, DgetC, Eget, EgetC external getmudim, getdelta, getlambda, getmaxdev external getwarndigits, geterrdigits external getversionkey, getdebugkey external setcachelast, getcachelast herwig++-2.6.0.orig/Looptools/include/ffwarn.h0000644000175000017500000007222711754474774022062 0ustar sylvestresylvestre character*80 w1 parameter (w1="ffcb0p: warning: instability in case one mas"// + "s zero, may be solved later.") character*80 w2 parameter (w2="ffcb0p: warning: not enough terms in Taylor "// + "expansion ma=mb. May be serious!") character*80 w3 parameter (w3="ffcb0p: warning: minimum value complex logar"// + "ithm gives problem in equal masses.") character*80 w4 parameter (w4="ffcb0p: warning: cancellations in equal mass"// + "es (should not occur).") character*80 w5 parameter (w5="ffcb0p: warning: not enough terms in expansi"// + "on1 k2 zero. May be serious!") character*80 w6 parameter (w6="ffcb0p: warning: not enough terms in expansi"// + "on2 k2 zero, May be serious!") character*80 w7 parameter (w7="ffcb0p: warning: cancellations in final addi"// + "ng up, contact author if serious.") character*80 w8 parameter (w8="ffc1lg: warning: the combination 1-z*log(1-1"// + "/z) id unstable.") character*80 w9 parameter (w9="ffcayl: warning: not enough terms in Taylor "// + "expansion, may be serious.") character*80 w10 parameter (w10="ffcb0p: warning: cancellation in dotproduct "// + "s1.s2") character*80 w11 parameter (w11="ffcot2: warning: cancellation in dotproduct "// + "p.si ") character*80 w12 parameter (w12="ffcdbp: warning: not enough terms in Taylor "// + "expansion, may be serious") character*80 w13 parameter (w13="ffcdbp: warning: cancellations in case one m"// + "ass equal to zero") character*80 w14 parameter (w14="ffxb0p: warning: instability in case one mas"// + "s zero, may be solved later.") character*80 w15 parameter (w15="ffxb0p: warning: not enough terms in Taylor "// + "expansion ma=mb. May be serious!") character*80 w16 parameter (w16="ffxb0p: warning: minimum value real logarith"// + "m gives problem in equal masses.") character*80 w17 parameter (w17="ffxb0p: warning: cancellations in equal mass"// + "es (should not occur).") character*80 w18 parameter (w18="ffxb0p: warning: cancellations in equal mass"// + "es, complex roots, can be avoided.") character*80 w19 parameter (w19="ffxb0p: warning: not enough terms in expansi"// + "on1 k2 zero, may be serious!") character*80 w20 parameter (w20="ffxb0p: warning: not enough terms in expansi"// + "on2 k2 zero, may be serious!") character*80 w21 parameter (w21="ffxb0p: warning: cancellations between s2 an"// + "d alpha, should not be serious") character*80 w22 parameter (w22="ffd1lg: warning: the combination 1-z*log(1-1"// + "/z) id unstable.") character*80 w23 parameter (w23="ffxb0p: warning: cancellations in lambda equ"// + "al masses.") character*80 w24 parameter (w24="ffxb0p: warning: cancellation in dotproduct "// + "s1.s2") character*80 w25 parameter (w25="ffdot2: warning: cancellation in dotproduct "// + "p.si") character*80 w26 parameter (w26="ffcc0: warning: cancellation between the tw"// + "o twopoint functions.") character*80 w27 parameter (w27="ffcc0: warning: cancellation in final summi"// + "ng up.") character*80 w28 parameter (w28="ffxc0: warning: cancellation between the tw"// + "o twopoint functions.") character*80 w29 parameter (w29="ffxc0: warning: cancellation in final summi"// + "ng up.") character*80 w30 parameter (w30="ffcc0p: warning: numerical problems in cw(j+"// + "2,1), not used") character*80 w31 parameter (w31="ffcc0p: warning: cancellations in cdwz(j,i,1"// + "), not used") character*80 w32 parameter (w32="ffcc0p: warning: numerical problems in cw(j+"// + "2,3), not used") character*80 w33 parameter (w33="ffcc0p: warning: cancellations in cdwz(j,i,3"// + "), not used") character*80 w34 parameter (w34="ffxc0p: warning: numerical problems in w(j+2"// + ",1), not used") character*80 w35 parameter (w35="ffxc0p: warning: cancellations in dwz(j,i,1)"// + ", not used") character*80 w36 parameter (w36="ffxc0p: warning: numerical problems in cw(j+"// + "2,1), not used") character*80 w37 parameter (w37="ffxc0p: warning: cancellations in cdwz(j,i,1"// + "), not used") character*80 w38 parameter (w38="ffxc0p: warning: numerical problems in w(j+2"// + ",3), not used") character*80 w39 parameter (w39="ffxc0p: warning: cancellations in dwz(j,i,3)"// + ", not used") character*80 w40 parameter (w40="ffxc0p: warning: numerical problems in cw(j+"// + "2,3), not used") character*80 w41 parameter (w41="ffxc0p: warning: cancellations in cdwz(j,i,3"// + "), not used") character*80 w42 parameter (w42="ffcs3: warning: problems with range complex"// + " numbers") character*80 w43 parameter (w43="ffcs3: warning: cancellations in czz1 in sp"// + "ecial case") character*80 w44 parameter (w44="ffcxs3: warning: cancellations in zz1 in spe"// + "cial case") character*80 w45 parameter (w45="ffdcrr: warning: not enough terms in Taylor "// + "series (may be serious)") character*80 w46 parameter (w46="ffdcxr: warning: not enough terms in Taylor "// + "series (may be serious)") character*80 w47 parameter (w47="ffcrr: warning: problems with dynamical ran"// + "ge complex numbers") character*80 w48 parameter (w48="ffcrr: warning: y0 = y1, so R has been take"// + "n zero") character*80 w49 parameter (w49="ffcrr: warning: very large correction terms.") character*80 w50 parameter (w50="ffcrr: warning: minimum value complex log c"// + "auses loss of precision.") character*80 w51 parameter (w51="ffcxr: warning: y0 = y1, so R has been take"// + "n zero") character*80 w52 parameter (w52="ffcxr: warning: very large correction terms.") character*80 w53 parameter (w53="ffcxr: warning: minimum value real log caus"// + "es loss of precision.") character*80 w54 parameter (w54="ffcrr: warning: not enough terms in Taylor "// + "series (may be serious)") character*80 w55 parameter (w55="ffcxr: warning: not enough terms in Taylor "// + "series (may be serious)") character*80 w56 parameter (w56="ffcrr: warning: cancellations in cd2yzz + c"// + "zz") character*80 w57 parameter (w57="ffcrr: warning: cancellations in cd2yzz - c"// + "zz1") character*80 w58 parameter (w58="ffcxr: warning: cancellations in d2yzz + zz") character*80 w59 parameter (w59="ffcxr: warning: cancellations in d2yzz - zz1") character*80 w60 parameter (w60="ffxli2: warning: not enough terms in expansi"// + "on (may be serious)") character*80 w61 parameter (w61="ffzli2: warning: not enough terms in expansi"// + "on (may be serious)") character*80 w62 parameter (w62="dfflo1: warning: not enough terms in expansi"// + "on. calling log.") character*80 w63 parameter (w63="zfflo1: warning: not enough terms in expansi"// + "on. calling log.") character*80 w64 parameter (w64="ffzxdl: warning: minimum value real log give"// + "s problems.") character*80 w65 parameter (w65="ffzzdl: warning: minimum value complex log g"// + "ives problems.") character*80 w66 parameter (w66="ffzxdl: warning: not enough terms in expansi"// + "on (may be serious)") character*80 w67 parameter (w67="ffzzdl: warning: not enough terms in expansi"// + "on (may be serious)") character*80 w68 parameter (w68="ffclmb: warning: cancellation in calculation"// + " lambda.") character*80 w69 parameter (w69="ffxlmb: warning: cancellation in calculation"// + " lambda.") character*80 w70 parameter (w70="ffcel2: warning: cancellation in calculation"// + " delta_{pi pj}^{pi pj}") character*80 w71 parameter (w71="ffdel2: warning: cancellation in calculation"// + " delta_{pi pj}^{pi pj}") character*80 w72 parameter (w72="ffcel3: warning: cancellation in calculation"// + " delta_{s1 s2 s3}^{s1 s2 s3}") character*80 w73 parameter (w73="ffdel3: warning: cancellation in calculation"// + " delta_{s1 s2 s3}^{s1 s2 s3}") character*80 w74 parameter (w74="ffcl3m: warning: cancellation in (delta_{sj"// + " sk}^{si mu})^2") character*80 w75 parameter (w75="ffdl3m: warning: cancellation in (delta_{sj"// + " sk}^{si mu})^2") character*80 w76 parameter (w76="ffeta: warning: still cancellations. (not u"// + "sed)") character*80 w77 parameter (w77="ffceta: warning: still cancellations. (not u"// + "sed)") character*80 w78 parameter (w78="ffcdwz: warning: still cancelations in cw3pm"// + " - cz3mp (not used)") character*80 w79 parameter (w79="ffdwz: warning: still cancelations in w3pm "// + "- z3mp (not used)") character*80 w80 parameter (w80="ffdcxr: warning: minimum value real log caus"// + "es problems.") character*80 w81 parameter (w81="ffdcxr: warning: ieps <> iepsz, imaginary pa"// + "rt will be wrong") character*80 w82 parameter (w82="ffdcrr: warning: minimum value complex log c"// + "auses problems.") character*80 w83 parameter (w83="ffdl2s: warning: cancellations in delta_{s1'"// + "s2'}^{s1 s2}") character*80 w84 parameter (w84="ffxd0: warning: cancellation in final summi"// + "ng up.") character*80 w85 parameter (w85="ffdl3s: warning: cancellation in calculation"// + " delta^(si sj sk)_(sl sm sn)") character*80 w86 parameter (w86="ffcc0: warning: cancellations among input p"// + "arameters") character*80 w87 parameter (w87="ffxc0: warning: cancellations among input p"// + "arameters (import difference)") character*80 w88 parameter (w88="ffabcd: warning: cancellations in (2*s3.s4^2"// + " - s3^2*s4^2), try with del2") character*80 w89 parameter (w89="ffabcd: warning: cancellations in somb") character*80 w90 parameter (w90="ffabcd: warning: cancellations in d") character*80 w91 parameter (w91="ffabcd: warning: xc not yet accurate (can be"// + " improved)") character*80 w92 parameter (w92="ffdl2p: warning: cancellations in delta_{p1"// + " s2}^{p1 p2}") character*80 w93 parameter (w93="ffdl2t: warning: cancellations in delta_{p1"// + " s4}^{s3 s4}") character*80 w94 parameter (w94="ffcb0: warning: cancellations between cma a"// + "nd cmb (add input parameters)") character*80 w95 parameter (w95="ffcb0: warning: cancellations between ck an"// + "d cma (add input parameters)") character*80 w96 parameter (w96="ffcb0: warning: cancellations between ck an"// + "d cmb (add input parameters)") character*80 w97 parameter (w97="ffxb0: warning: cancellations between xma a"// + "nd xmb (add input parameters)") character*80 w98 parameter (w98="ffxb0: warning: cancellations between xk an"// + "d xma (add input parameters)") character*80 w99 parameter (w99="ffxb0: warning: cancellations between xk an"// + "d xmb (add input parameters)") character*80 w100 parameter (w100="ffdot3: warning: cancellations in dotproduct"// + " s_i.s_{i+1}") character*80 w101 parameter (w101="ffdot3: warning: cancellations in dotproduct"// + " p_i.s_i") character*80 w102 parameter (w102="ffdot3: warning: cancellations in dotproduct"// + " p_i.s_{i+1}") character*80 w103 parameter (w103="ffdot3: warning: cancellations in dotproduct"// + " p_i.s_{i+2}") character*80 w104 parameter (w104="ffdot3: warning: cancellations in dotproduct"// + " p_i.p_{i+1}") character*80 w105 parameter (w105="ffdot4: warning: cancellations in dotproduct"// + " s_i.s_{i+1}") character*80 w106 parameter (w106="ffdot4: warning: cancellations in dotproduct"// + " s_i.s_{i-1}") character*80 w107 parameter (w107="ffdot4: warning: cancellations in dotproduct"// + " p_i.s_i") character*80 w108 parameter (w108="ffdot4: warning: cancellations in dotproduct"// + " p_i.s_{i+1}") character*80 w109 parameter (w109="ffdot4: warning: cancellations in dotproduct"// + " p_{i-1}.s_i") character*80 w110 parameter (w110="ffdot4: warning: cancellations in dotproduct"// + " p_i.s_{i+2}") character*80 w111 parameter (w111="ffdot4: warning: cancellations in dotproduct"// + " p_{i+1}.s_i") character*80 w112 parameter (w112="ffdot4: warning: cancellations in dotproduct"// + " p_{i+2}.s_{i+1}") character*80 w113 parameter (w113="ffdot4: warning: cancellations in dotproduct"// + " p_i.p_{i+1}") character*80 w114 parameter (w114="ffdot4: warning: cancellations in dotproduct"// + " p_{i+1}.p_{i+2}") character*80 w115 parameter (w115="ffdot4: warning: cancellations in dotproduct"// + " p_{i+2}.p_i") character*80 w116 parameter (w116="ffdot4: warning: cancellations in dotproduct"// + " p_5.p_7") character*80 w117 parameter (w117="ffdot4: warning: cancellations in dotproduct"// + " p_6.p_8") character*80 w118 parameter (w118="ffdot4: warning: cancellations in dotproduct"// + " p_9.p_10") character*80 w119 parameter (w119="ffxd0: warning: sum is close to the minimum"// + " of the range.") character*80 w120 parameter (w120="ffxc0: warning: sum is close to the minimum"// + " of the range.") character*80 w121 parameter (w121="ffxd0: warning: cancellations among input p"// + "arameters (import difference)") character*80 w122 parameter (w122="ff2d22: warning: cancellations (delta_{sjsk"// + "}_{si mu} delta_{smsn}^{mu nu})^2") character*80 w123 parameter (w123="ff2dl2: warning: cancellations delta^{si mu"// + "}_{sj sk} delta^{mu sl}_{sm sn}") character*80 w124 parameter (w124="ff3dl2: warning: cancellations d^{i mu}_{jl"// + "} d^{mu nu}_{lm} d^{nu n}_{op}") character*80 w125 parameter (w125="fftran: warning: cancellations in s'_i^2 - s"// + "'_j^2") character*80 w126 parameter (w126="fftran: warning: cancellations in p'_i^2 - s"// + "'_j^2") character*80 w127 parameter (w127="fftran: warning: cancellations in p'_i^2 - p"// + "'_j^2") character*80 w128 parameter (w128="zfflog: warning: taking log of number close "// + "to 1, must be cured.") character*80 w129 parameter (w129="zxfflg: warning: taking log of number close "// + "to 1, must be cured.") character*80 w130 parameter (w130="ffcrr: warning: cancellations in calculatin"// + "g 2y-1-z...") character*80 w131 parameter (w131="ffxtra: warning: cancellations in extra term"// + "s, working on it") character*80 w132 parameter (w132="dfflo1: warning: cancellations because of wr"// + "ong call, should not occur") character*80 w133 parameter (w133="zfflo1: warning: cancellations because of wr"// + "ong call, should not occur") character*80 w134 parameter (w134="ffcs4: warning: cancellations in cd2yzz + c"// + "zz") character*80 w135 parameter (w135="ffcd0: warning: cancellations among input p"// + "arameters (import difference)") character*80 w136 parameter (w136="ffcd0: warning: cancellation in final summi"// + "ng up.") character*80 w137 parameter (w137="ffcd0: warning: sum is close to the minimum"// + " of the range.") character*80 w138 parameter (w138="ffdl3p: warning: cancellations in delta_{p1"// + " p2 p3}^{p1 p2 p3}") character*80 w139 parameter (w139="ffxd0p: warning: problems calculating sqrt(d"// + "elta(si,s3)) - sqrt(delta(si,s4))") character*80 w140 parameter (w140="ffdxc0: warning: problems calculating yzzy ="// + " y(4)z(3) - y(3)z(4)") character*80 w141 parameter (w141="ffcd0p: warning: problems calculating sqrt(d"// + "elta(si,s3)) - sqrt(delta(si,s4))") character*80 w142 parameter (w142="ffdcc0: warning: problems calculating yzzy ="// + " y(4)z(3) - y(3)z(4)") character*80 w143 parameter (w143="ffdel4: warning: cancellation in calculation"// + " delta_{s1 s2 s3 s4}^{s1 s2 s3 s4}") character*80 w144 parameter (w144="fftran: warning: cancellation in calculation"// + " s_i'.p_{jk}'") character*80 w145 parameter (w145="fftran: warning: cancellation in calculation"// + " p_{ji}'.p_{lk}'") character*80 w146 parameter (w146="fftran: warning: cancellation in calculation"// + " Ai - Aj") character*80 w147 parameter (w147="ffdxc0: warning: problems calculating yyzz ="// + " y(4) - y(3) - z(3) + z(4)") character*80 w148 parameter (w148="ffdxc0: warning: problems calculating cancel"// + "lations extra terms") character*80 w149 parameter (w149="ffcb0: warning: cancellations between Delta"// + ", B0' and log(m1*m2/mu^2)/2") character*80 w150 parameter (w150="ffxb0: warning: cancellations between Delta"// + ", B0' and log(m1*m2/mu^2)/2") character*80 w151 parameter (w151="ffzli2: warning: real part complex dilog ver"// + "y small and not stable") character*80 w152 parameter (w152="ffxxyz: warning: cancellations in y - 2*z (w"// + "ill be solved)") character*80 w153 parameter (w153="ffxd0: warning: cancellation in u=+p5^2+p6^"// + "2+p7^2+p8^2-p9^2-p10^2, import it!") character*80 w154 parameter (w154="ffxd0: warning: cancellation in v=-p5^2+p6^"// + "2-p7^2+p8^2+p9^2+p10^2, import it!") character*80 w155 parameter (w155="ffxd0: warning: cancellation in w=+p5^2-p6^"// + "2+p7^2-p8^2+p9^2+p10^2, import it!") character*80 w156 parameter (w156="ffxc0i: warning: cancellations in dotproduct"// + " p_i.s_j") character*80 w157 parameter (w157="ffxc0i: warning: cancellations in final summ"// + "ing up") character*80 w158 parameter (w158="ffxe0: warning: cancellations among input p"// + "arameters (import difference)") character*80 w159 parameter (w159="ffdl4p: warning: cancellations in delta_{p1"// + " p2 p3 p4}^{p1 p2 p3 p4}") character*80 w160 parameter (w160="ffdel5: warning: cancellation in calculation"// + " delta_{s1s2s3s4s5}^{s1s2s3s4s5}") character*80 w161 parameter (w161="ffxe0a: warning: cancellation in final summi"// + "ng up.") character*80 w162 parameter (w162="ffxe0a: warning: sum is close to the minimum"// + " of the range.") character*80 w163 parameter (w163="ffxc1: warning: cancellations in cc1.") character*80 w164 parameter (w164="ffxd1: warning: cancellations in cd1.") character*80 w165 parameter (w165="ffdl2i: warning: cancellations in delta_{p1"// + " p2}^{p3 p4}") character*80 w166 parameter (w166="ffdl3q: warning: cancellations in delta_{p5"// + " p6 p7}^{p(i1) p(i2) p(i3)}") character*80 w167 parameter (w167="ffxb1: warning: cancellations in cb1.") character*80 w168 parameter (w168="ffxe0: warning: cancellations in (p_i+p_{i+"// + "2})^2 (may not be serious)") character*80 w169 parameter (w169="ffdl4r: warning: cancellations in delta_{p1"// + " p2 p3 p4}^{s1 s2 s3 s4}") character*80 w170 parameter (w170="ffdl4s: warning: cancellations in delta_{p1"// + "p2p3p4}^{si pj pk pl}, to be improved") character*80 w171 parameter (w171="ffxe1: warning: cancellations in ce1") character*80 w172 parameter (w172="ffceta: warning: cancellations in extra term"// + "s for 4point function") character*80 w173 parameter (w173="ffceta: warning: cancellations between alpha"// + " and w-") character*80 w174 parameter (w174="ffceta: warning: cancellations between alpha"// + " and w+") character*80 w175 parameter (w175="ffceta: warning: cancellations between a and"// + " z") character*80 w176 parameter (w176="ffceta: warning: cancellations between a and"// + " y") character*80 w177 parameter (w177="ffcdbd: warning: cancellations in summing up") character*80 w178 parameter (w178="ffkfun: warning: cancellations between z and"// + " (m-mp)^2") character*80 w179 parameter (w179="ffkfun: warning: 4*m*mp/(z-(m-mp)^2) ~ 1, ca"// + "n be solved") character*80 w180 parameter (w180="ffxc0p: warning: delta^{s1,s2,s3}_{s1,s2,s3"// + "} not stable, can be solved.") character*80 w181 parameter (w181="ffxc0p: warning: cancellations in complex di"// + "scriminant, can be solved") character*80 w182 parameter (w182="ffcd0e: warning: still cancellations in del4"// + " with only complex in poles") character*80 w183 parameter (w183="ffcc0a: warning: cannot deal properly with t"// + "hreshold of this type") character*80 w184 parameter (w184="ffcran: warning: cancellations in s'(i).p'(k"// + "j)") character*80 w185 parameter (w185="ffcran: warning: cancellations in p'(ji).p'("// + "lk)") character*80 w186 parameter (w186="ffcd0p: warning: cancellations in cel2") character*80 w187 parameter (w187="ffdel6: warning: cancellations in coefficien"// + "t F0, can be improved") character*80 w188 parameter (w188="ffdl5r: warning: cancellations in coefficien"// + "t E0, can be improved") character*80 w189 parameter (w189="ffxdi: warning: cancellations in cd2del") character*80 w190 parameter (w190="ffxdi: warning: cancellations in cd2pp") character*80 w191 parameter (w191="ffxf0a: warning: cancellations in F0 as sum "// + "of 6 E0's - near threshold?") character*80 w192 parameter (w192="ffxf0a: warning: sum is close to minimum of "// + "range") character*80 w193 parameter (w193="ffxf0: warning: cancellations among input p"// + "arameters (import difference)") character*80 w194 parameter (w194="ffxdbd: warning: cancellations in summing up") character*80 w195 parameter (w195="ffdot6: warning: cancellations in dotproduct"// + " s_i.s_{i+1}") character*80 w196 parameter (w196="ffdot6: warning: cancellations in dotproduct"// + " s_i.s_{i-1}") character*80 w197 parameter (w197="ffdot6: warning: cancellations in dotproduct"// + " p_i.s_i") character*80 w198 parameter (w198="ffdot6: warning: cancellations in dotproduct"// + " p_i.s_{i+1}") character*80 w199 parameter (w199="ffdot6: warning: cancellations in dotproduct"// + " p_{i-1}.s_i") character*80 w200 parameter (w200="ffdot6: warning: cancellations in dotproduct"// + " p_i.s_{i+2}") character*80 w201 parameter (w201="ffdot6: warning: cancellations in dotproduct"// + " p_{i+1}.s_i") character*80 w202 parameter (w202="ffdot6: warning: cancellations in dotproduct"// + " p_{i+2}.s_{i+1}") character*80 w203 parameter (w203="ffdot6: warning: cancellations in dotproduct"// + " p_i.p_{i+1}") character*80 w204 parameter (w204="ffdot6: warning: cancellations in dotproduct"// + " p_{i+1}.p_{i+2}") character*80 w205 parameter (w205="ffdot6: warning: cancellations in dotproduct"// + " p_{i+2}.p_i") character*80 w206 parameter (w206="ffdot6: warning: cancellations in dotproduct"// + " p_{i+2}.s_{i+2}") character*80 w207 parameter (w207="ffdot6: warning: cancellations in dotproduct"// + " s_i.s{i+3}") character*80 w208 parameter (w208="ffdot6: warning: cancellations in dotproduct"// + " pi.pj") character*80 w209 parameter (w209="ffxdna: warning: cancellations in 1+/-a, une"// + "xpected...") character*80 w210 parameter (w210="ffxdna: warning: cancellations in b-a, unexp"// + "ected...") character*80 w211 parameter (w211="ffcd0c: warning: cancellations in subtractio"// + "n of IR pole (to be expected)") character*80 w212 parameter (w212="ffcd0c: warning: cancellations in computatio"// + "n prop1 for threshold") character*80 w213 parameter (w213="ffcd0c: warning: cancellations in computatio"// + "n prop2 for threshold") character*80 w214 parameter (w214="ffxb2a: warning: cancellations in B2d") character*80 w215 parameter (w215="ffxd0p: warning: cancellations in complex de"// + "l3mi") character*80 w216 parameter (w216="ffzcnp: warning: cancellations in y (can be "// + "fixed, contact author)") character*80 w217 parameter (w217="ffzdnp: warning: cancellations in delta^(pi "// + "si+1)_(pi pi+1)") character*80 w218 parameter (w218="ffzdnp: warning: cancellations in (delta^(m"// + "u si+1)_(pi pi+1))^2") character*80 w219 parameter (w219="ffzcnp: warning: cancellations in z (can be "// + "fixed, contact author)") character*80 w220 parameter (w220="ffxb1: warning: not enough terms in Taylor "// + "expansion, may be serious") character*80 w221 parameter (w221="ffxdb0: warning: cancellations in computatio"// + "n 'diff'") character*80 w222 parameter (w222="ffxdb0: warning: still cancellations is spli"// + "t-up 1") character*80 w223 parameter (w223="ffxdb0: warning: still cancellations is s1") character*80 w224 parameter (w224="ffxdb0: warning: cancellations in B0', compl"// + "ex args (can be improved)") character*80 w225 parameter (w225="ffxb2p: warning: cancellations in B21 (after"// + " a lot of effort)") character*80 w226 parameter (w226="ffxb2p: warning: cancellations in B22") character*80 w227 parameter (w227="ffxb2a: warning: cancellations in B21") character*80 w228 parameter (w228="ffxbdp: warning: cancellations in case p^2=0") character*80 w229 parameter (w229="ffxdpv: warning: cancellations in going from"// + " delta- to PV-scheme") character*80 w230 parameter (w230="ffxl22: warning: not enough terms in Taylor "// + "expansion Li2(2-x)") character*80 w231 parameter (w231="dfflo2: warning: not enough terms in taylor "// + "expansion, using log(1-x)+x") character*80 w232 parameter (w232="dfflo3: warning: not enough terms in taylor "// + "expansion, using log(1-x)+x+x^2/2") character*80 w233 parameter (w233="ffcdbp: warning: cancellations in equal mass"// + "es case") character*80 w234 parameter (w234="ffcbdp: warning: cancellations in case p^2=0") character*80 w235 parameter (w235="ffcbdp: warning: cancellations in small diff.") character*80 w236 parameter (w236="ffcbdp: warning: cancellations in 1-alpha") character*80 w237 parameter (w237="ffcbdp: warning: cancellations in s2-alpha, "// + "may not be serious") character*80 w238 parameter (w238="ffcbdp: warning: not enough terms in Taylor "// + "expansion, may be serious") character*80 w239 parameter (w239="ffcbdp: warning: cancellations in s1-(1-alph"// + "a), may not be serious") character*80 w240 parameter (w240="ffcbdp: warning: cancellations in final resu"// + "lt") character*80 w241 parameter (w241="ffxe2: warning: cancellations in E2 (can ma"// + "ybe be done better)") character*80 w242 parameter (w242="ffxe3: warning: cancellations in E3 (can ma"// + "ybe be done better)") character*80 w243 parameter (w243="ffxe3: warning: cancellations in adding det"// + "erminants (may not be serious)") character*80 w244 parameter (w244="ffcdna: warning: cancellations in del45") character*80 w245 parameter (w245="ffcdna: warning: cancellations in del543m") character*80 w246 parameter (w246="ffcdna: warning: cancellations in B") character*80 w247 parameter (w247="ffcdna: warning: cancellations in C") character*80 w248 parameter (w248="ffcdna: warning: cancellations between z1 an"// + "d alpha") character*80 w249 parameter (w249="ffcdna: warning: cancellations between z2 an"// + "d alpha") character*80 w250 parameter (w250="ffcdna: warning: cancellations in 1 + r*x1 ") character*80 w251 parameter (w251="ffcdna: warning: cancellations in 1 + r*x2") character*80 w252 parameter (w252="ffcdna: warning: cancellations between r*x1 "// + "and r*x2") character*80 w253 parameter (w253="ffd0c: warning: something wrong with the "// + "rotation") character*80 w254 parameter (w254="ffTn: warning: numerical cancellation "// + "in in-triangle check") character*80 w255 parameter (w255="ffRn: warning: 3-point Landau singularity") character*80 w256 parameter (w256="ffRn: warning: Im(a.b) in the 1st theta "// + "function is zero") character*80 w257 parameter (w257="ffRn: warning: Im(a.b) in the 2nd theta "// + "function is zero") character*80 w258 parameter (w258="ffint3: cannot handle complex x yet") character*80 warn(258) data warn / w1,w2,w3,w4,w5,w6,w7,w8,w9, + w10,w11,w12,w13,w14,w15,w16,w17,w18,w19, + w20,w21,w22,w23,w24,w25,w26,w27,w28,w29, + w30,w31,w32,w33,w34,w35,w36,w37,w38,w39, + w40,w41,w42,w43,w44,w45,w46,w47,w48,w49, + w50,w51,w52,w53,w54,w55,w56,w57,w58,w59, + w60,w61,w62,w63,w64,w65,w66,w67,w68,w69, + w70,w71,w72,w73,w74,w75,w76,w77,w78,w79, + w80,w81,w82,w83,w84,w85,w86,w87,w88,w89, + w90,w91,w92,w93,w94,w95,w96,w97,w98,w99, + w100,w101,w102,w103,w104,w105,w106,w107,w108,w109, + w110,w111,w112,w113,w114,w115,w116,w117,w118,w119, + w120,w121,w122,w123,w124,w125,w126,w127,w128,w129, + w130,w131,w132,w133,w134,w135,w136,w137,w138,w139, + w140,w141,w142,w143,w144,w145,w146,w147,w148,w149, + w150,w151,w152,w153,w154,w155,w156,w157,w158,w159, + w160,w161,w162,w163,w164,w165,w166,w167,w168,w169, + w170,w171,w172,w173,w174,w175,w176,w177,w178,w179, + w180,w181,w182,w183,w184,w185,w186,w187,w188,w189, + w190,w191,w192,w193,w194,w195,w196,w197,w198,w199, + w200,w201,w202,w203,w204,w205,w206,w207,w208,w209, + w210,w211,w212,w213,w214,w215,w216,w217,w218,w219, + w220,w221,w222,w223,w224,w225,w226,w227,w228,w229, + w230,w231,w232,w233,w234,w235,w236,w237,w238,w239, + w240,w241,w242,w243,w244,w245,w246,w247,w248,w249, + w250,w251,w252,w253,w254,w255,w256,w257,w258 / herwig++-2.6.0.orig/Looptools/include/cexternals.h0000644000175000017500000000021011754474774022726 0ustar sylvestresylvestre#if 0 This file was generated by mkexternalsh on Thu Dec 9 09:13:07 CET 2010. Do not edit. #endif #define cachelookup_ ljcachelookup_ herwig++-2.6.0.orig/Looptools/B/0000755000175000017500000000000011756464211017135 5ustar sylvestresylvestreherwig++-2.6.0.orig/Looptools/B/ffcb0.F0000644000175000017500000004734711754474774020260 0ustar sylvestresylvestre#include "externals.h" * $Id: ffcb0.f,v 1.11 1996/07/18 10:49:04 gj Exp $ *###[ ffcb0: subroutine ffcb0(cb0,cp,cma,cmb,ier) ***#[*comment:*********************************************************** * * * calculates the the two-point function (cf 't Hooft and Veltman) * * we include an overall factor 1/(i*pi^2) relative to FormF * * * * Input: cp (complex) k2, in B&D metric * * cma (complex) mass2, re>0, im<0. * * cmb (complex) mass2, re>0, im<0. * * * * Output: cb0 (complex) B0, the two-point function, * * ier (integer) number of digits lost in calculation * * * * Calls: ffcb0p,ffxb0p * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cb0,cp,cma,cmb * * local variables * integer init,ithres,i,j,nschsa logical lreal DOUBLE COMPLEX cmamb,cmap,cmbp,cm,c,cb0p,cqi(3),cqiqj(3,3) DOUBLE PRECISION absc,xp,xma,xmb,sprec,smax save init * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * data * data init /0/ * * #] declarations: * #[ the real cases: * if ( DIMAG(cma) .eq. 0 .and. DIMAG(cmb) .eq. 0 .and. + DIMAG(cp).eq.0 ) then lreal = .TRUE. elseif ( nschem.le.4 ) then lreal = .TRUE. if ( init.eq.0 ) then init = 1 print *,'ffcb0: nschem <= 4, ignoring complex masses: ', + nschem endif elseif ( nschem.le.6 ) then if ( init.eq.0 ) then init = 1 print *,'ffcb0: nschem = 5,6 complex masses near ', + 'threshold: ',nschem endif cqi(1) = cma cqi(2) = cmb cqi(3) = cp cqiqj(1,2) = cma - cmb cqiqj(2,1) = -cqiqj(1,2) cqiqj(1,3) = cma - cp cqiqj(3,1) = -cqiqj(1,3) cqiqj(2,3) = cmb - cp cqiqj(3,2) = -cqiqj(2,3) cqiqj(1,1) = 0 cqiqj(2,2) = 0 cqiqj(3,3) = 0 call ffthre(ithres,cqi,cqiqj,3,1,2,3) if ( ithres.eq.0 .or. ithres.eq.1 .and. nschem.eq.5 ) then lreal = .TRUE. else lreal = .FALSE. endif else lreal = .FALSE. endif if ( lreal ) then xp = DBLE(cp) xma = DBLE(cma) xmb = DBLE(cmb) sprec = precx precx = precc call ffxb0(cb0,xp,xma,xmb,ier) precx = sprec if ( ldot ) then do 120 j=1,3 do 110 i=1,3 cfpij2(i,j) = fpij2(i,j) 110 continue 120 continue endif return endif * * #] the real cases: * #[ get differences: * cmamb = cma - cmb cmap = cma - cp cmbp = cmb - cp * * #] get differences: * #[ calculations: * * no more schem-checking, please... * nschsa = nschem nschem = 7 call ffcb0p(cb0p,cp,cma,cmb,cmap,cmbp,cmamb,ier) nschem = nschsa if ( cma .eq. 0 ) then if ( cmb .eq. 0 ) then cm = 1 else cm = cmb**2 endif elseif ( cmb .eq. 0 ) then cm = cma**2 else cm = cma*cmb endif if ( mudim .ne. 0 ) cm = cm/DBLE(mudim)**2 if ( absc(cm) .gt. xclogm ) then cb0 = DBLE(delta) - cb0p - log(cm)/2 smax = max(abs(delta),absc(cb0p),absc(log(cm))/2) else call fferr(3,ier) cb0 = -cb0p + DBLE(delta) endif * #] calculations: *###] ffcb0: end *###[ ffcb0p: subroutine ffcb0p(cb0p,cp,cma,cmb,cmap,cmbp,cmamb,ier) ***#[*comment:*********************************************************** * * * calculates the main part of the two-point function (cf 't * * Hooft and Veltman) for all possible cases: masses equal, * * unequal, equal to zero, real or complex (with a negative * * imaginary part). I think it works. * * Has been checked against FormF for all parameter space. * * Only problems with underflow for extreme cases. VERY OLD CODE. * * * * Input: cp (complex) k2, in B&D metric * * cma (complex) mass2, re>0, im<0. * * cmb (complex) mass2, re>0, im<0. * * cmap/b (complex) cma/b - cp * * cmamb (complex) cma - cmb * * * * Output: cb0p (complex) B0, the two-point function, * * minus log(cm/mu), delta and the * * factor -ipi^2. * * ier (integer) 0=ok, 1=numerical problems, 2=error * * * * Calls: (z/a)log, atan. * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cb0p,cp,cma,cmb,cmap,cmbp,cmamb * * local variables * integer i,j,initeq,initn1,n1,n2,nffeta,nffet1,init, + ithres,is1 logical lreal DOUBLE PRECISION xp,ax,ay,ffbnd, + xprceq,bdeq01,bdeq05,bdeq11,bdeq17,bdeq25, + xprcn1,bdn101,bdn105,bdn110,bdn115, + xprnn2,bdn201,bdn205,bdn210,bdn215, + xpneq(30),xpnn1(30), + absc,sprec,xma,xmb,dmap,dmbp,dmamb,smax DOUBLE COMPLEX cm,cmp,cm1,cm2,cm1m2, + cm1p,cm2p,cs,cs1,cs2,cx,cy,csom,clam,cslam,clogmm, + zfflo1,c,zm,zp,zm1,zp1,zfflog,cqi(3), + cqiqj(3,3),cpiDpj(3,3),ck,clamr,cslamr,zmr,zpr,zm1r,zp1r save initeq,initn1,xpneq,xpnn1,init, + xprceq,bdeq01,bdeq05,bdeq11,bdeq17,bdeq25, + xprcn1,bdn101,bdn105,bdn110,bdn115, + xprnn2,bdn201,bdn205,bdn210,bdn215 *FOR ABSOFT ONLY * DOUBLE COMPLEX csqrt * external csqrt * * common blocks * #include "ff.h" * * data * data xprceq /-1./ data xprcn1 /-1./ data xprnn2 /-1./ data initeq /0/ data initn1 /0/ data init /0/ * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * #] declarations: * #[ fill some dotproducts: * call ffcot2(cpiDpj,cp,cma,cmb,cmap,cmbp,cmamb,ier) if ( ldot ) then do 20 i=1,3 do 10 j=1,3 cfpij2(j,i) = cpiDpj(j,i) fpij2(j,i) = DBLE(cpiDpj(j,i)) 10 continue 20 continue endif * * #] fill some dotproducts: * #[ the real cases: * if ( DIMAG(cma) .eq. 0 .and. DIMAG(cmb) .eq. 0 .and. + DIMAG(cp).eq.0 ) then lreal = .TRUE. elseif ( nschem.le.4 ) then lreal = .TRUE. if( init.eq.0 ) then init = 1 print *,'ffcb0p: nschem <= 4, ignoring complex masses:', + nschem endif elseif ( nschem.le.6 ) then if( init.eq.0 ) then init = 1 print *,'ffcb0p: nschem = 4,6 complex masses near ', + 'threshold: ',nschem endif cqi(1) = cma cqi(2) = cmb cqi(3) = cp cqiqj(1,2) = cmamb cqiqj(2,1) = -cqiqj(1,2) cqiqj(1,3) = cmap cqiqj(3,1) = -cqiqj(1,3) cqiqj(2,3) = cmbp cqiqj(3,2) = -cqiqj(2,3) cqiqj(1,1) = 0 cqiqj(2,2) = 0 cqiqj(3,3) = 0 call ffthre(ithres,cqi,cqiqj,3,1,2,3) if ( ithres.eq.0 .or. ithres.eq.1 .and. nschem.eq.5 ) then lreal = .TRUE. else lreal = .FALSE. endif else lreal = .FALSE. endif if ( lreal ) then xp = DBLE(cp) xma = DBLE(cma) xmb = DBLE(cmb) dmap = DBLE(cmap) dmbp = DBLE(cmbp) dmamb = DBLE(cmamb) sprec = precx precx = precc call ffxb0p(cb0p,xp,xma,xmb,dmap,dmbp,dmamb,ier) precx = sprec if ( ldot ) then do 120 j=1,3 do 110 i=1,3 cfpij2(i,j) = fpij2(i,j) 110 continue 120 continue endif return endif * * #] the real cases: * #[ which case: * * sort according to the type of mass combination encountered: * 200: one equal to zero, 300: both equal, 400: rest. * if ( cma .eq. 0 ) then if ( cmb .eq. 0 ) then goto 100 endif cm = cmb cmp = cmbp goto 200 endif if ( cmb .eq. 0 ) then cm = cma cmp = cmap goto 200 endif if ( cma .eq. cmb ) then cm = cma cmp = cmap goto 300 endif if ( DBLE(cma) .lt. DBLE(cmb) ) then cm2 = cma cm1 = cmb cm1m2 = -cmamb cm1p = cmbp cm2p = cmap is1 = 2 else cm1 = cma cm2 = cmb cm1m2 = cmamb cm1p = cmap cm2p = cmbp is1 = 1 endif goto 400 * #] which case: * #[ both masses equal to zero: 100 continue if ( absc(cp) .gt. xclogm ) then if ( DBLE(cp).gt.0 ) then cb0p = log(cp) - c2ipi/2 - 2 else cb0p = log(-cp) - 2 endif else cb0p = 0 call fferr(7,ier) endif return * #] both masses equal to zero: * #[ one mass zero: 200 continue * * special case cp = 0, checked 25-oct-1991 * if ( cp .eq. 0 ) then cb0p = -1 goto 990 endif * * Normal case: * cs1 = cp/cm cs2 = cmp/cm * make sure we get the right Riemann sheet! if ( absc(cs1) .lt. xloss ) then cs = zfflo1(cs1,ier) elseif ( DBLE(cs2).gt.0 ) then cs = zfflog(cs2,0,czero,ier) else cs = zfflog(-cs2,0,czero,ier) cs = cs - c2ipi/2 endif cs = -cs*cmp/cp cb0p = cs - 2 goto 990 * #] one mass zero: * #[ both masses equal: 300 continue * * Both masses are equal. Not only this speeds up things, some * cancellations have to be avoided as well. Checked 25-oct-1991. * -#[ taylor expansion: * * first this special case * if ( absc(cp) .lt. 8*xloss*absc(cm) ) then * * a Taylor expansion seems appropriate as the result will go * as k^2 but seems to go as 1/k !! * * #[ data and bounds: if ( initeq .eq. 0 ) then initeq = 1 xpneq(1) = 1/6D0 do 1 i=2,30 xpneq(i) = xpneq(i-1)*DBLE(i-1)/DBLE(2*(2*i+1)) 1 continue endif if (xprceq .ne. precc ) then * * calculate the boundaries for the number of terms to be * included in the taylorexpansion * xprceq = precc sprec = precx precx = precc bdeq01 = ffbnd(1,1,xpneq) bdeq05 = ffbnd(1,5,xpneq) bdeq11 = ffbnd(1,11,xpneq) bdeq17 = ffbnd(1,17,xpneq) bdeq25 = ffbnd(1,25,xpneq) precx = sprec endif * #] data and bounds: cx = cp/cm ax = absc(cx) if ( ax .gt. bdeq17 ) then csom = cx*(DBLE(xpneq(18)) + cx*(DBLE(xpneq(19)) + + cx*(DBLE(xpneq(20)) + cx*(DBLE(xpneq(21)) + + cx*(DBLE(xpneq(22)) + cx*(DBLE(xpneq(23)) + + cx*(DBLE(xpneq(24)) + cx*(DBLE(xpneq(25)) )))))))) else csom = 0 endif if ( ax .gt. bdeq11 ) then csom = cx*(DBLE(xpneq(12)) + cx*(DBLE(xpneq(13)) + + cx*(DBLE(xpneq(14)) + cx*(DBLE(xpneq(15)) + + cx*(DBLE(xpneq(16)) + cx*(DBLE(xpneq(17)) + csom )))) + )) endif if ( ax .gt. bdeq05 ) then csom = cx*(DBLE(xpneq(6)) + cx*(DBLE(xpneq(7)) + + cx*(DBLE(xpneq(8)) + cx*(DBLE(xpneq(9)) + + cx*(DBLE(xpneq(10)) + cx*(DBLE(xpneq(11)) + csom )))))) endif if ( ax .gt. bdeq01 ) then csom = cx*(DBLE(xpneq(2)) + cx*(DBLE(xpneq(3)) + + cx*(DBLE(xpneq(4)) + cx*(DBLE(xpneq(5)) + csom )))) endif cb0p = -cx*(DBLE(xpneq(1))+csom) goto 990 endif * -#] taylor expansion: * -#[ normal case: * * normal case. first determine if the arguments of the logarithm * has positive real part: (we assume Re(cm) > Im(cm) ) * call ffclmb(clam,-cp,-cm,-cm,cmp,cmp,czero) cslam = sqrt(clam) call ffcoot(zm,zp,cone,chalf,cm/cp,cslam/(2*cp),ier) cs1 = zp/zm if ( absc(cs1-1) .lt. xloss ) then * In this case a quicker and more accurate way is to * calculate log(1-cx). cs2 = cp - cslam if ( absc(cs2) .lt. xloss*absc(cp) ) then cs2 = -cslam*(cp+cslam)/(4*cp*cm) else cs2 = -2*cslam/cs2 endif cs = zfflo1(cs2/(2*cm),ier) else * finally the normal case cs = zfflog(cs1,0,czero,ier) endif cs = cslam*cs/cp cb0p = cs - 2 * * eta terms * n1 = nffet1(zp,1/zm,cs1,ier) if ( DIMAG(cp).eq.0 ) then n2 = nffet1(-zp,-1/zm,cs1,ier) else * use the onshell expression to get the correct continuation ck = DBLE(cp) call ffclmb(clamr,-ck,-cm,-cm,cm-ck,cm-ck,czero) cslamr = sqrt(clamr) call ffcoot(zmr,zpr,cone,chalf,cm/ck,cslamr/(2*ck),ier) if ( absc(zm-zmr)+absc(zp-zpr).gt.absc(zm-zpr)+absc(zp-zmr) + ) then cs1 = zmr zmr = zpr zpr = cs1 endif if ( DIMAG(zmr).eq.0 .or. DIMAG(zpr).eq.0 ) then if ( DBLE(zpr).gt.DBLE(zmr) ) then n2 = +1 else n2 = -1 endif else n2 = nffeta(-zpr,-1/zmr,ier) endif endif if ( n1+n2 .ne. 0 ) + cb0p = cb0p - cslam*c2ipi*(n1+n2)/(2*cp) * also superfluous - just to make sure goto 990 * -#] normal case: * * #] both masses equal: * #[ unequal nonzero masses: 400 continue * -#[ get log(xm2/xm1): cx = cm2/cm1 c = cx-1 if ( 1/absc(cx) .lt. xclogm ) then call fferr(6,ier) clogmm = 0 elseif ( absc(c) .lt. xloss ) then clogmm = zfflo1(cm1m2/cm1,ier) else clogmm = log(cx) endif * -#] get log(xm2/xm1): * -#[ cp = 0: * * first a special case * if ( cp .eq. 0 ) then cs2 = ((cm2+cm1) / cm1m2)*clogmm * save the factor 1/2 for the end cs = - cs2 - 2 if ( absc(cs) .lt. xloss*2 ) then * Taylor expansions: choose which one cx = cm1m2/cm1 ax = absc(cx) if ( ax .lt. .15 .or. precc .gt. 1.E-8 .and. ax + .lt. .3 ) then * #[ taylor 1: * * This is the simple Taylor expansion 'n1' * *--#[ data and bounds: * get the coefficients of the taylor expansion if ( initn1 .eq. 0 ) then initn1 = 1 do 410 i = 1,30 410 xpnn1(i)=DBLE(i)/DBLE((i+1)*(i+2)) endif * determine the boundaries for 1,5,10,15 terms if ( xprcn1 .ne. precc ) then xprcn1 = precc sprec = precx precx = precc bdn101 = ffbnd(1,1,xpnn1) bdn105 = ffbnd(1,5,xpnn1) bdn110 = ffbnd(1,10,xpnn1) bdn115 = ffbnd(1,15,xpnn1) precx = sprec endif *--#] data and bounds: * calculate: if ( ax .gt. bdn110 ) then cs = cx*(DBLE(xpnn1(11)) + cx*(DBLE(xpnn1(12)) + + cx*(DBLE(xpnn1(13)) + cx*(DBLE(xpnn1(14)) + + cx*(DBLE(xpnn1(15))) )))) else cs = 0 endif if ( ax .gt. bdn105 ) then cs = cx*(DBLE(xpnn1(6)) + cx*(DBLE(xpnn1(7)) + + cx*(DBLE(xpnn1(8)) + cx*(DBLE(xpnn1(9)) + + cx*(DBLE(xpnn1(10)) + cs))))) endif if ( ax .gt. bdn101 ) then cs = cx*(DBLE(xpnn1(2)) + cx*(DBLE(xpnn1(3)) + + cx*(DBLE(xpnn1(4)) + cx*(DBLE(xpnn1(5)) + + cs)))) endif cs = cx*cx*(DBLE(xpnn1(1)) + cs) * #] taylor 1: else * #[ taylor 2: * * This is the more complicated exponential Taylor * expansion 'n2' * * #[ bounds: * determine the boundaries for 1,5,10,15 terms for this * Taylor expansion (starting at i=4) * if ( xprnn2 .ne. precc ) then xprnn2 = precc sprec = precx precx = precc bdn201 = ffbnd(4,1,xinfac) bdn205 = ffbnd(4,5,xinfac) bdn210 = ffbnd(4,10,xinfac) bdn215 = ffbnd(4,15,xinfac) precx = sprec endif * #] bounds: * calculate: cy = 2*cx/(2-cx) ay = absc(cy) if ( ay .gt. bdn210 ) then cs = cy*(DBLE(xinfac(14)) + cy*(DBLE(xinfac(15)) + + cy*(DBLE(xinfac(16)) + cy*(DBLE(xinfac(17)) + + cy*(DBLE(xinfac(18))))))) else cs = 0 endif if ( ay .gt. bdn205 ) then cs = cy*(DBLE(xinfac(9)) + cy*(DBLE(xinfac(10)) + + cy*(DBLE(xinfac(11)) + cy*(DBLE(xinfac(12)) + + cy*(DBLE(xinfac(13)) + cs))))) endif if ( ay .gt. bdn201 ) then cs = cy*(DBLE(xinfac(5)) + cy*(DBLE(xinfac(6)) + + cy*(DBLE(xinfac(7)) + cy*(DBLE(xinfac(8)) + + cs)))) endif cs = (1-cx)*cy**4 * (DBLE(xinfac(4)) + cs) cs = cx*cy**2*(1+cy)/12 - cs cs = - 2*zfflo1(cs,ier)/cy * #] taylor 2: endif endif cb0p = cs/2 goto 990 endif * -#] cp = 0: * -#[ normal case: * * (programmed anew 28-oct-1991) * call ffclmb(clam,cm1,cm2,cp,cm1m2,cm1p,cm2p) cslam = sqrt(clam) if ( is1.eq.1 ) then cs = +cpiDpj(2,3) else cs = -cpiDpj(1,3) endif call ffcoot(zm,zp,cp,cs,cm2,cslam/2,ier) zm1 = 1-zm zp1 = 1-zp if ( absc(zm1) .lt. xloss .or. absc(zp1) .lt. xloss ) then if ( is1.eq.1 ) then cs = -cpiDpj(1,3) else cs = +cpiDpj(2,3) endif call ffcoot(zp1,zm1,cp,cs,cm1,cslam/2,ier) if ( abs(DIMAG(zm)) .lt. abs(DIMAG(zm1)) ) then zm = DCMPLX(DBLE(zm),-DIMAG(zm1)) else zm1 = DCMPLX(DBLE(zm1),-DIMAG(zm)) endif if ( abs(DIMAG(zp)) .lt. abs(DIMAG(zp1)) ) then zp = DCMPLX(DBLE(zp),-DIMAG(zp1)) else zp1 = DCMPLX(DBLE(zp1),-DIMAG(zp)) endif endif if ( DIMAG(cp).ne.0 ) then * compute roots for Im(cp).eq.0 for continuation terms. ck = DBLE(cp) call ffclmb(clamr,cm1,cm2,ck,cm1m2,cm1-ck,cm2-ck) cslamr = sqrt(clamr) if ( absc(cslamr-cslam).gt.absc(cslamr+cslam) ) + cslamr = -cslamr cs = (cm2-cm1+ck)/2 call ffcoot(zmr,zpr,ck,cs,cm2,cslamr/2,ier) zm1r = 1-zmr zp1r = 1-zpr if ( absc(zm1r) .lt. xloss .or. absc(zp1r) .lt. xloss ) then cs = -(cm2-cm1-ck)/2 call ffcoot(zp1r,zm1r,ck,cs,cm1,cslamr/2,ier) if ( abs(DIMAG(zmr)) .lt. abs(DIMAG(zm1r)) ) then zmr = DCMPLX(DBLE(zmr),-DIMAG(zm1r)) else zm1r = DCMPLX(DBLE(zm1r),-DIMAG(zmr)) endif if ( abs(DIMAG(zpr)) .lt. abs(DIMAG(zp1r)) ) then zpr = DCMPLX(DBLE(zpr),-DIMAG(zp1r)) else zp1r = DCMPLX(DBLE(zp1r),-DIMAG(zpr)) endif endif else zmr = zm zm1r = zm1 zpr = zp zp1r = zp1 endif call ffc1lg(cs1,zm,zm1,zmr,zm1r,-1,ier) call ffc1lg(cs2,zp,zp1,zpr,zp1r,+1,ier) cb0p = -clogmm/2 + cs1 + cs2 smax = max(absc(clogmm)/2,absc(cs1),absc(cs2)) if ( absc(cb0p) .lt. xloss*smax ) then call ffwarn(7,ier,absc(cb0p),smax) endif goto 990 * -#] normal case: * #] unequal nonzero masses: * #[ debug: 990 continue * #] debug: *###] ffcb0p: end *###[ ffc1lg: subroutine ffc1lg(cs,z,z1,zr,z1r,is,ier) ***#[*comment:*********************************************************** * * * Calculate the potentially unstable combination -1-z*log(1-1/z) * * = sum_{n=1} 1/(n+1) z^{-n}. * * * * Input z,z1 complex root, z1=1-z * * zr,z1r complex root for Im(p^2)=0, z1r=1-zr * * is integer -1: roots are z-, +1: z+ * * * * Output cs complex see above * * ier integer usual error flag * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer is,ier DOUBLE COMPLEX cs,z,z1,zr,z1r * * local variables * DOUBLE PRECISION absc DOUBLE COMPLEX c,zfflog * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * #] declarations: * #[ work: if ( 1 .lt. xclogm*absc(z) ) then cs = 0 elseif ( 1 .lt. precc*absc(z) ) then cs = 1/(2*z) elseif ( 1 .gt. 2*xloss*absc(z) ) then * * normal case * cs = -1 - z*zfflog(-z1/z,0,czero,ier) * * check analytical continuation for Im(p^2) -> 0 * if ( z.ne.zr .or. z1.ne.z1r ) then c = -z1r/zr if ( DBLE(c).lt.0 ) then * check whetehr we chose the correct continuation if ( (DIMAG(c).gt.0 .or. DIMAG(c).eq.0 .and. + is.eq.+1) .and. DIMAG(-z1/z).lt.0 ) then cs = cs - c2ipi*z elseif ( (DIMAG(c).lt.0 .or. DIMAG(c).eq.0 .and. + is.eq.-1) .and. DIMAG(-z1/z).gt.0 ) then cs = cs + c2ipi*z endif endif endif if ( absc(cs) .lt. xloss ) call ffwarn(8,ier,absc(cs),1D0) else * * Taylor expansion * call ffcayl(cs,1/z,xninv(2),29,ier) endif * #] work: *###] ffc1lg: end *###[ ffcot2: subroutine ffcot2(cpiDpj,cp,cma,cmb,cmap,cmbp,cmamb,ier) ***#[*comment:*********************************************************** * * * Store the 3 dotproducts in the common block ffdot. * * * * Input: see ffxc0p * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cpiDpj(3,3),cp,cma,cmb,cmap,cmbp,cmamb * * local variables * integer ier1 DOUBLE PRECISION absc,xmax DOUBLE COMPLEX c * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ work: ier1 = ier cpiDpj(1,1) = cma cpiDpj(2,2) = cmb cpiDpj(3,3) = cp if ( absc(cmap) .lt. absc(cmbp) ) then cpiDpj(1,2) = (cmap + cmb)/2 else cpiDpj(1,2) = (cmbp + cma)/2 endif cpiDpj(2,1) = cpiDpj(1,2) xmax = min(absc(cma),absc(cmb))/2 if ( absc(cmamb) .lt. absc(cmbp) ) then cpiDpj(1,3) = (-cmamb - cp)/2 else cpiDpj(1,3) = (cmbp - cma)/2 endif cpiDpj(3,1) = cpiDpj(1,3) xmax = min(absc(cma),absc(cp))/2 if ( absc(cmamb) .lt. absc(cmap) ) then cpiDpj(2,3) = (-cmamb + cp)/2 else cpiDpj(2,3) = (-cmap + cmb)/2 endif cpiDpj(3,2) = cpiDpj(2,3) xmax = min(absc(cmb),absc(cp))/2 ier = ier1 * #] work: *###] ffcot2: end herwig++-2.6.0.orig/Looptools/B/ffcb1.F0000644000175000017500000002160611754474774020247 0ustar sylvestresylvestre#include "externals.h" *###[ ffcb1: subroutine ffcb1(cb1,cb0,ca0i,xp,xm1,xm2,piDpj,ier) ***#[*comment:*********************************************************** * * * Calculate 1 / d^n Q Q(mu) * * ------ | ------------------------ = B1*p(mu) * * i pi^2 / (Q^2-m1^2)((Q+p)^2-m2^2) * * * * Input: cb0 complex scalar twopoint function * * ca0i(2) complex scalar onepoint function with * * m1,m2 * * xp complex p.p in B&D metric * * xm1,2 complex m_1^2,m_2^2 * * piDpj(3,3) complex dotproducts between s1,s2,p * * ier integer digits lost so far * * Output: cb1 complex B1 * * ier integer digits lost * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX xp,xm1,xm2,piDpj(3,3) DOUBLE COMPLEX cb1,cb0,ca0i(2) * * local variables * integer ier0,i,j DOUBLE COMPLEX dm1p,dm2p,dm1m2 DOUBLE PRECISION rm1,rm2,rp,rpiDpj(3,3),sprec * * common blocks * #include "ff.h" * * #] declarations: * #[ real case: if ( DIMAG(xm1).eq.0 .and. DIMAG(xm2).eq.0 ) then rm1 = DBLE(xm1) rm2 = DBLE(xm2) rp = DBLE(xp) do 20 j=1,3 do 10 i=1,3 rpiDpj(i,j) = DBLE(piDpj(i,j)) 10 continue 20 continue sprec = precx precx = precc call ffxb1(cb1,cb0,ca0i,rp,rm1,rm2,rpiDpj,ier) precx = sprec return endif * #] real case: * #[ get differences: ier0 = 0 dm1m2 = xm1 - xm2 dm1p = xm1 - xp dm2p = xm2 - xp * #] get differences: * #[ call ffcb1a: call ffcb1a(cb1,cb0,ca0i,xp,xm1,xm2,dm1p,dm2p,dm1m2,piDpj,ier) * #] call ffcb1a: *###] ffcb1: end *###[ ffcb1a: subroutine ffcb1a(cb1,cb0,ca0i,xp,xm1,xm2,dm1p,dm2p,dm1m2,piDpj, + ier) ***#[*comment:*********************************************************** * * * Calculate 1 / d^n Q Q(mu) * * ------ | ------------------------ = B1*p(mu) * * i pi^2 / (Q^2-m1^2)((Q+p)^2-m2^2) * * * * Input: cb0 complex scalar twopoint function * * ca0i(2) complex scalar onepoint function with * * m1,m2 * * xp complex p.p in B&D metric * * xm1,2 complex m_1^2,m_2^2 * * piDpj(3,3) complex dotproducts between s1,s2,p * * ier integer digits lost so far * * Output: cb1 complex B1 * * ier integer digits lost * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX xp,xm1,xm2,dm1p,dm2p,dm1m2,piDpj(3,3) DOUBLE COMPLEX cb1,cb0,ca0i(2) * * local variables * integer i,j,ithres,init logical lneg,lreal DOUBLE PRECISION xmax,absc,bnd101,bnd105,bnd110,bnd115,ax,cprec, + xprec,xmxp DOUBLE COMPLEX s,s1,h,slam,xma,xmb,x,small,dmbma,clam,clogm, + ts2Dp,xlo3,xlogm,cqiqj(3,3),cqi(3) DOUBLE COMPLEX cs(5),cc,csom DOUBLE PRECISION ffbnd DOUBLE COMPLEX zfflo1,zfflo3 DOUBLE PRECISION rm1,rm2,rp,rm1m2,rm1p,rm2p,rpiDpj(3,3),sprec save cprec,bnd101,bnd105,bnd110,bnd115,init *FOR ABSOFT ONLY * DOUBLE COMPLEX csqrt * external csqrt * * common blocks * #include "ff.h" * * statement function * absc(cc) = abs(DBLE(cc)) + abs(DIMAG(cc)) * * data * data cprec /0./ * * #] declarations: * #[ the real cases: * if ( DIMAG(xm1) .eq. 0 .and. DIMAG(xm2) .eq. 0 ) then lreal = .TRUE. elseif ( nschem.le.4 ) then lreal = .TRUE. if ( init.eq.0 ) then init = 1 print *,'ffcb1a: nschem <= 4, ignoring complex masses:', + nschem endif elseif ( nschem.le.6 ) then if ( init.eq.0 ) then init = 1 print *,'ffcb1a: nschem = 5,6 complex masses near ', + 'threshold: ',nschem endif cqi(1) = xm1 cqi(2) = xm2 cqi(3) = xp cqiqj(1,2) = dm1m2 cqiqj(2,1) = -cqiqj(1,2) cqiqj(1,3) = dm1p cqiqj(3,1) = -cqiqj(1,3) cqiqj(2,3) = dm2p cqiqj(3,2) = -cqiqj(2,3) cqiqj(1,1) = 0 cqiqj(2,2) = 0 cqiqj(3,3) = 0 call ffthre(ithres,cqi,cqiqj,3,1,2,3) if ( ithres.eq.0 .or. ithres.eq.1 .and. nschem.eq.5 ) then lreal = .TRUE. else lreal = .FALSE. endif else lreal = .FALSE. endif if ( lreal ) then rm1 = DBLE(xm1) rm2 = DBLE(xm2) rp = DBLE(xp) rm1p = DBLE(dm1p) rm2p = DBLE(dm2p) rm1m2 = DBLE(dm1m2) do 20 j=1,3 do 10 i=1,3 rpiDpj(i,j) = DBLE(piDpj(i,j)) 10 continue 20 continue sprec = precx precx = precc call ffxb1a(cb1,cb0,ca0i,rp,rm1,rm2,rm1m2,rpiDpj,ier) precx = sprec return endif * #] the real cases: * #[ p^2 != 0: if ( DBLE(xp) .ne. 0 ) then * #[ normal case: if ( dm1m2 .ne. 0 ) then cs(1) = -ca0i(2) cs(2) = +ca0i(1) else cs(1) = 0 cs(2) = 0 endif cs(3) = +2*piDpj(1,3)*cb0 cb1 = cs(1) + cs(2) + cs(3) xmax = max(absc(cs(2)),absc(cs(3))) if ( absc(cb1) .ge. xloss*xmax ) goto 110 * #] normal case: * #[ almost equal masses: if ( absc(dm1m2) .le. xloss*absc(xm1) ) then cs(2) = dm1m2/xm1*cs(2) cs(1) = -xm2*zfflo1(-dm1m2/xm2,ier) cb1 = cs(1) + cs(2) + cs(3) xmax = max(absc(cs(2)),absc(cs(3))) if ( absc(cb1) .ge. xloss*xmax ) goto 110 * for the perfectionist (not me (today)): * if d0=0 and mu~m1(~m2), then the terms of order * (m1^2-m2^2) also cancel. To patch this I need d0 and mu endif * #] almost equal masses: * #[ p2 -> 0: if ( xloss**2*max(absc(xm1),absc(xm2)) .gt. absc(xp) ) then if ( DBLE(xm2).gt.DBLE(xm1) ) then xma = xm1 xmb = xm2 dmbma = -dm1m2 ts2Dp = +2*piDpj(2,3) lneg = .FALSE. else xma = xm2 xmb = xm1 dmbma = +dm1m2 ts2Dp = -2*piDpj(1,3) lneg = .TRUE. endif else goto 100 endif * * We found a situation in which p2 is much smaller than * the masses. * if ( xma.eq.0 ) then clogm = 1 elseif ( absc(dmbma) .gt. xloss*absc(xmb) ) then clogm = log(xmb/xma) else clogm = zfflo1(-dmbma/xma,ier) endif clam = (dmbma-xp)**2 - 4*xma*xp slam = sqrt(clam) small = xp*(-2*(xma+xmb) + xp)/(slam+dmbma) cs(1) = clogm*xma*(4*xmb*(small-xp) + (small-xp)**2)/(2* + (slam+dmbma)*(slam+2*piDpj(1,2))) if ( cprec.ne.precc ) then cprec = precc xprec = precx precx = precc bnd101 = ffbnd(2,1,xinfac) bnd105 = ffbnd(2,5,xinfac) bnd110 = ffbnd(2,10,xinfac) bnd115 = ffbnd(2,15,xinfac) precx = xprec endif x = xp/slam ax = absc(x) if ( ax.gt.bnd110 ) then s = x*(DBLE(xinfac(12)) + x*(DBLE(xinfac(13)) + + x*(DBLE(xinfac(14)) + x*(DBLE(xinfac(15)) + + x*(DBLE(xinfac(16)) ))))) else s = 0 endif if ( ax.gt.bnd105 ) then s = x*(DBLE(xinfac(7)) + x*(DBLE(xinfac(8)) + + x*(DBLE(xinfac(9)) + x*(DBLE(xinfac(10)) + + x*(DBLE(xinfac(11) + s) ))))) endif if ( ax.gt.bnd101) then s = x*(DBLE(xinfac(3)) + x*(DBLE(xinfac(4)) + + x*(DBLE(xinfac(5)) + x*(DBLE(xinfac(6)) + s)))) endif s = x**2*(.5D0 + s) s1 = 2*xp/(ts2Dp + slam)*(s + x) h = -4*xp**2*xmb/(slam*(slam+ts2Dp)**2) - s + s1 if ( absc(h) .lt. .1 ) then cs(2) = dmbma*slam/xp*zfflo1(h,ier) else print *,'ffcb1: warning: I thought this was small: ',h print *,' cp,cma,cmb = ',xp,xma,xmb cs(2) = dmbma*slam/xp*log(1-h) *** goto 100 endif if ( lneg ) then cs(1) = -cs(1) cs(2) = -cs(2) endif cs(3) = -xp*cb0 cb1 = cs(1) + cs(2) + cs(3) xmax = max(absc(cs(2)),absc(cs(3))) if ( absc(cb1) .gt. xloss*xmax) goto 110 * #] p2 -> 0: * #[ give up: * * give up... * 100 continue 110 continue * #] give up: cb1 = cb1/(2*xp) * #] p^2 != 0: * #[ p^2=0, m1 != m2: elseif ( dm1m2 .ne. 0 ) then cs(1) = +xm2/(2*dm1m2**2)*(ca0i(2)+xm2/2) cs(2) = -xm1/(2*dm1m2**2)*(ca0i(1)+xm1/2) cs(3) = +ca0i(2)/dm1m2 cb1 = cs(1) + cs(2) + cs(3) xmax = max(absc(cs(1)),absc(cs(2)),absc(cs(3))) if ( absc(cb1).ge.xloss**2*xmax ) goto 120 * * m1 ~ m2, see b21.frm * if ( absc(dm1m2).lt.xloss*absc(xm1) ) then xlogm = zfflo1(dm1m2/xm1,ier) else xlogm = log(xm2/xm1) endif cs(1) = -(xm1/dm1m2)/2 cs(2) = -xlogm/2*(xm1/dm1m2)**2 cs(3) = +1/DBLE(4) - ca0i(1)/(2*xm1) cs(4) = xlogm/2 csom = cs(1) + cs(2) + cs(3) + cs(4) xmxp = max(absc(cs(2)),absc(cs(3)),absc(cs(4))) if ( xmxp.lt.xmax ) then xmax = xmxp cb1 = csom if ( absc(cb1).gt.xloss**2*xmax ) goto 120 endif * * better * xlo3 = zfflo3(dm1m2/xm1,ier) cs(1) = -(dm1m2/xm1)**2/4 cs(2) = -(dm1m2/xm1)/2 cs(3) = -xlo3/(dm1m2/xm1)**2/2 cs(4) = xlo3/2 cs(5) = 1/DBLE(2) - ca0i(1)/(2*xm1) csom = cs(1) + cs(2) + cs(3) + cs(4) + cs(5) xmxp = max(absc(cs(2)),absc(cs(3)),absc(cs(4)),absc(cs(5))) if ( xmxp.lt.xmax ) then xmax = xmxp cb1 = csom if ( absc(cb1).gt.xloss**2*xmax ) goto 120 endif * * give up * 120 continue * #] p^2=0, m1 != m2: * #[ p^2=0, m1 == m2: else cb1 = -cb0/2 endif * #] p^2=0, m1 == m2: *###] ffcb1a: end herwig++-2.6.0.orig/Looptools/B/ffxb2p.F0000644000175000017500000002625111754474774020456 0ustar sylvestresylvestre#include "externals.h" *###[ ffxb2p: subroutine ffxb2p(cb2i,cb1,cb0,ca0i,xp,xm1,xm2,piDpj,ier) ***#[*comment:*********************************************************** * * * Compute the PV B2, the coefficients of p(mu)p(nu) and g(mu,nu) * * of 1/(ipi^2)\int d^nQ Q(mu)Q(nu)/(Q^2-m_1^2)/((Q+p)^2-m_2^2) * * originally based on aaxbx by Andre Aeppli. * * * * Input: cb1 complex vector two point function * * cb0 complex scalar two point function * * ca0i(2) complex scalar onepoint function with * * m1,m2 * * xp real p.p in B&D metric * * xm1,2 real m_1^2,m_2^2 * * piDpj(3,3) real dotproducts between s1,s2,p * * ier integer digits lost so far * * * * Output: cb2i(2) complex B21,B22: coeffs of p*p, g in B2 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE PRECISION xp,xm1,xm2,piDpj(3,3) DOUBLE COMPLEX cb2i(2),cb1,cb0,ca0i(2) * * local variables * DOUBLE PRECISION dm1m2 * * #] declarations: * #[ work: * dm1m2= xm1 - xm2 call ffxb2q(cb2i,cb1,cb0,ca0i,xp,xm1,xm2,dm1m2,piDpj,ier) * * #] work: *###] ffxb2p: end *###[ ffxb2q: subroutine ffxb2q(cb2i,cb1,cb0,ca0i,xp,xm1,xm2,dm1m2,piDpj,ier) ***#[*comment:*********************************************************** * * * Compute the PV B2, the coefficients of p(mu)p(nu) and g(mu,nu) * * of 1/(ipi^2)\int d^nQ Q(mu)Q(nu)/(Q^2-m_1^2)/((Q+p)^2-m_2^2) * * originally based on aaxbx by Andre Aeppli. * * * * Input: cb1 complex vector two point function * * cb0 complex scalar two point function * * ca0i(2) complex scalar onepoint function with * * m1,m2 * * xp real p.p in B&D metric * * xm1,2 real m_1^2,m_2^2 * * piDpj(3,3) real dotproducts between s1,s2,p * * ier integer digits lost so far * * * * Output: cb2i(2) complex B21,B22: coeffs of p*p, g in B2 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE PRECISION xp,xm1,xm2,dm1m2,piDpj(3,3) DOUBLE COMPLEX cb2i(2),cb1,cb0,ca0i(2) * * local variables * integer i,ier0,ier1 logical llogmm DOUBLE PRECISION xmax,absc,xlam,slam,bet,xmxp,dfflo3,xlo3, + xmxsav,xnoe,xnoe2,xlogmm,dfflo1 DOUBLE COMPLEX cs(16),cc,csom,clo3,zfflo3 external dfflo1,dfflo3,zfflo3 * * common blocks * #include "ff.h" * * statement function * absc(cc) = abs(DBLE(cc)) + abs(DIMAG(cc)) * * #] declarations: * #[ normal case: ier0 = ier ier1 = ier * * with thanks to Andre Aeppli, off whom I stole the original * if ( xp .ne. 0) then cs(1) = ca0i(2) cs(2) = DBLE(xm1)*cb0 cs(3) = DBLE(2*piDpj(1,3))*cb1 cs(4) = (xm1+xm2)/2 cs(5) = -xp/6 cb2i(1) = cs(1) - cs(2) - cs(4) + 2*cs(3) - cs(5) cb2i(2) = cs(1) + 2*cs(2) - cs(3) + 2*cs(4) + 2*cs(5) xmax = max(absc(cs(2)),absc(cs(3)),absc(cs(4)),absc(cs(5))) xmxsav = xmax if ( absc(cb2i(1)) .ge. xloss*xmax ) goto 100 * #] normal case: * #[ improve: m1=m2: * * a relatively simple case: dm1m2 = 0 (bi0.frm) * if ( dm1m2.eq.0 .and. xm1.ne.0 ) then if ( xp.lt.0 ) then slam = sqrt(xp**2-4*xm1*xp) xlo3 = dfflo3((xp-slam)/(2*xm1),ier) cs(1) = xp*(-1/DBLE(3) + slam/(4*xm1)) cs(2) = xp**2*(-slam/(4*xm1**2) - 3/(4*xm1)) cs(3) = xp**3/(4*xm1**2) cs(4) = DBLE(xp/xm1)*ca0i(1) cs(5) = xlo3/xp*(-xm1*slam) cs(6) = xlo3*slam else slam = isgnal*sqrt(-xp**2+4*xm1*xp) clo3 = zfflo3(DCMPLX(DBLE(xp/(2*xm1)), + DBLE(-slam/(2*xm1))),ier) cs(1) = DBLE(xp)*DCMPLX(-1/DBLE(3), + DBLE(slam/(4*xm1))) cs(2) = DBLE(xp**2)*DCMPLX(DBLE(-3/(4*xm1)), + DBLE(-slam/(4*xm1**2))) cs(3) = DBLE(xp**3/(4*xm1**2)) cs(4) = DBLE(xp/xm1)*ca0i(1) cs(5) = clo3*DCMPLX(DBLE(0),DBLE(-xm1*slam/xp)) cs(6) = clo3*DCMPLX(DBLE(0),DBLE(slam)) endif csom = cs(1) + cs(2) + cs(3) + cs(4) + cs(5) + cs(6) xmxp = max(absc(cs(2)),absc(cs(3)),absc(cs(4)), + absc(cs(5)),absc(cs(6))) * * get rid of noise in the imaginary part * if ( xloss*abs(DIMAG(csom)).lt.precc*abs(DBLE(csom)) ) + csom = DCMPLX(DBLE(csom),DBLE(0)) if ( xmxp.lt.xmax ) then cb2i(1) = csom xmax = xmxp endif if ( absc(cb2i(1)).ge.xloss**2*xmax ) goto 100 endif * #] improve: m1=m2: * #[ improve: |xp| < xm1 < xm2: * * try again (see bi.frm) * xlam = 4*(piDpj(1,3)**2 - xm1*xp) if ( xm1.eq.0 .or. xm2.eq.0 ) then xlogmm = 0 elseif ( abs(dm1m2).lt.xloss*xm1 ) then xlogmm = dfflo1(dm1m2/xm1,ier) else xlogmm = log(xm2/xm1) endif if ( xlam.gt.0 .and. abs(xp).lt.xloss*xm2 .and. + xm1.lt.xm2 ) then slam = sqrt(xlam) bet = 4*xm1*xp/(2*piDpj(1,3)+slam) cs(1) = DBLE(xp/xm2)*ca0i(2) cs(2) = -xlogmm*bet*xm1**2*2*(xm2 + xm1) + /((-dm1m2+slam)*(2*piDpj(1,2)+slam)*(2*piDpj(1,3)+slam)) cs(3) = xlogmm*(-4*xp*xm1**3) + /((-dm1m2+slam)*(2*piDpj(1,2)+slam)*(2*piDpj(1,3)+slam)) xnoe = 1/(2*piDpj(2,3)+slam) xnoe2 = xnoe**2 cs(4) = xnoe2*xm1*bet*(xp-4*xm2) cs(5) = xnoe2*xm1*2*xp*xm2 cs(6) = xnoe2*xm1**2*bet cs(7) = xnoe2*xm1**2*4*xp cs(8) = xnoe2*bet*xm2*(xp+3*xm2) cs(9) = xnoe2*(-6*xp*xm2**2) cs(10)= xp*(7/6.d0 - 2*xm1*slam*xnoe2 + + 4*xm2*slam*xnoe2 - 2*slam*xnoe) cs(11)= xp**2*( -2*slam*xnoe2 ) xlo3 = dfflo3(2*xp*xnoe,ier) cs(12) = xlo3*dm1m2**2*slam/xp**2 cs(13) = xlo3*(xm1 - 2*xm2)*slam/xp cs(14) = xlo3*slam csom = 0 xmxp = 0 do 50 i=1,14 csom = csom + cs(i) xmxp = max(xmxp,absc(cs(i))) 50 continue if ( xmxp.lt.xmax ) then cb2i(1) = csom xmax = xmxp endif cs(7) = -2*bet*xnoe2*xm2*dm1m2 cs(6) = -bet*xm1**2*xlogmm* & (2*(xm1 + xm2)/(2*piDpj(1,3)+slam) + 1)/ & ((-dm1m2+slam)*(2*piDpj(1,2)+slam)) cs(5) = xnoe2*xp*((xm1 + xm2)*(bet + 4*dm1m2) + & 2*xm2*(dm1m2 + slam)) cs(4) = xnoe2*(bet*dm1m2**2 - & 2*xp*slam*(dm1m2 + 1/xnoe + xp)) cs(3) = 7/6D0*xp xmxp = dm1m2/xp cs(2) = xlo3*slam*(xmxp*(xmxp + 1) - xm2/xp + 1) csom = 0 xmxp = 0 do i=7,1,-1 c do i=1,7 csom = csom + cs(i) xmxp = max(xmxp,absc(cs(i))) enddo if ( xmxp.lt.xmax ) then cb2i(1) = csom xmax = xmxp endif if ( absc(cb2i(1)).ge.xloss**2*xmax ) goto 100 endif * #] improve: |xp| < xm1 < xm2: * #[ improve: |xp| < xm2 < xm1: if ( xlam.gt.0 .and. abs(xp).lt.xloss*xm1 .and. + xm2.lt.xm1 ) then slam = sqrt(xlam) bet = 4*xm2*xp/(-2*piDpj(2,3)+slam) xnoe = 1/(-2*piDpj(1,3)+slam) xnoe2 = xnoe**2 cs(1) = DBLE(xp/xm1)*ca0i(1) cs(2) = -2*xlogmm*bet*xm2* + (3*xp*(2*xm1 + xm2 - xp) - xm2*(xm1 + xm2))/ + ((dm1m2+slam)*(2*piDpj(1,2)+slam)*(-2*piDpj(2,3)+slam)) cs(3) = -4*xlogmm*xm2*xp* + (-6*xm1**2-xm2**2+ 3*xp*(3*xm1 + xm2 - xp))/ + ((dm1m2+slam)*(2*piDpj(1,2)+slam)*(-2*piDpj(2,3)+slam)) cs(4) = xnoe2*xm2*bet*(xp-4*xm1) cs(5) = xnoe2*xm2*(-10*xp*xm1) cs(6) = xnoe2*xm2**2*bet cs(7) = xnoe2*xm2**2*4*xp cs(8) = xnoe2*bet*xm1*(xp+3*xm1) cs(9) = xnoe2*6*xp*xm1**2 cs(10)= xp*(7/6.d0 - 2*xm1*slam*xnoe2 + + 4*xm2*slam*xnoe2 - 2*slam*xnoe) cs(11)= xp**2*( -2*slam*xnoe2 ) xlo3 = dfflo3(2*xp*xnoe,ier) cs(12) = xlo3*dm1m2**2*slam/xp**2 cs(13) = xlo3*(xm1 - 2*xm2)*slam/xp cs(14) = xlo3*slam csom = 0 xmxp = 0 do 60 i=1,14 csom = csom + cs(i) xmxp = max(xmxp,absc(cs(i))) 60 continue if ( xmxp.lt.xmax ) then cb2i(1) = csom xmax = xmxp endif xmxp = xlogmm*xm2/((dm1m2+slam)* & (2*piDpj(1,2)+slam)*(-2*piDpj(2,3)+slam)) cs(8) = 2*bet*(xnoe2*dm1m2*xm1 + xmxp*(xm1+xm2)*xm2) cs(7) = 2*xmxp*xp*(13*xm1**2 + xm2**2 + dm1m2**2) cs(6) = 2*xnoe2*xp*dm1m2*(xm1 + 2*dm1m2) cs(5) = bet*xnoe2*(dm1m2**2 + xp*(xm1 + xm2)) cs(4)= xp*(7/6D0 - & 2*slam*xnoe*(xnoe*(dm1m2 - xm2 + xp) + 1)) cs(3) = -2*xmxp*xp*( & 3*(bet + 2*xp)*(2*xm1 + xm2 - xp) + & 2*xm1*(3*xp + dm1m2) ) xmxp = dm1m2/xp cs(2) = xlo3*slam*(xmxp*(xmxp + 1) - xm2/xp + 1) csom = 0 xmxp = 0 do i=8,1,-1 csom = csom + cs(i) xmxp = max(xmxp,absc(cs(i))) enddo if ( xmxp.lt.xmax ) then cb2i(1) = csom xmax = xmxp endif if ( absc(cb2i(1)).ge.xloss**2*xmax ) goto 100 endif * #] improve: |xp| < xm2 < xm1: * #[ wrap up: 100 continue xmax = xmxsav cb2i(1) = DBLE(1/(3*xp)) * cb2i(1) cb2i(2) = DBLE(1/6.d0) * cb2i(2) * #] wrap up: * #[ xp=0, m1!=m2: elseif (dm1m2 .ne. 0) then * #[ B21: llogmm = .FALSE. * * B21 (see thesis, b21.frm) * cs(1) = DBLE(xm1**2/3/dm1m2**3)*ca0i(1) cs(2) = DBLE((-xm1**2 + xm1*xm2 - xm2**2/3)/dm1m2**3)* + ca0i(2) cs(3) = (5*xm1**3/18 - xm1*xm2**2/2 + 2*xm2**3/9) + /dm1m2**3 cb2i(1) = cs(1)+cs(2)+cs(3) xmax = max(absc(cs(2)),absc(cs(3))) if ( absc(cb2i(1)).gt.xloss**2*xmax ) goto 160 * * ma ~ mb * if ( abs(dm1m2).lt.xloss*xm1 ) then xlogmm = dfflo1(dm1m2/xm1,ier) else xlogmm = log(xm2/xm1) endif llogmm = .TRUE. cs(1) = (xm1/dm1m2)/6 cs(2) = (xm1/dm1m2)**2/3 cs(3) = (xm1/dm1m2)**3*xlogmm/3 cs(4) = -2/DBLE(9) + ca0i(1)*DBLE(1/(3*xm1)) cs(5) = -xlogmm/3 csom = cs(1)+cs(2)+cs(3)+cs(4)+cs(5) xmxp = max(absc(cs(2)),absc(cs(3)),absc(cs(4)), + absc(cs(5))) if ( xmxp.lt.xmax ) then xmax = xmxp cb2i(1) = csom if ( absc(cb2i(1)).gt.xloss**2*xmax ) goto 160 endif * * and last try * xlo3 = dfflo3(dm1m2/xm1,ier) cs(1) = (dm1m2/xm1)**2/6 cs(2) = (dm1m2/xm1)/3 cs(3) = xlo3/(3*(dm1m2/xm1)**3) *same cs(4) = -2/DBLE(9) + ca0i(1)*DBLE(1/(3*xm1)) cs(5) = -xlo3/3 csom = cs(1)+cs(2)+cs(3)+cs(4)+cs(5) xmxp = max(absc(cs(2)),absc(cs(3)),absc(cs(4)), + absc(cs(5))) if ( xmxp.lt.xmax ) then xmax = xmxp cb2i(1) = csom if ( absc(cb2i(1)).gt.xloss**2*xmax ) goto 160 endif * * give up * 160 continue * #] B21: * #[ B22: * * B22 * cs(1) = +DBLE(xm1/(4*dm1m2))*ca0i(1) cs(2) = -DBLE(xm2/(4*dm1m2))*ca0i(2) cs(3) = (xm1+xm2)/8 cb2i(2) = cs(1) + cs(2) + cs(3) xmax = max(absc(cs(2)),absc(cs(3))) if ( absc(cb2i(2)).gt.xloss*xmax ) goto 210 * * second try, close together * if ( .not.llogmm ) then if ( abs(dm1m2).lt.xloss*xm1 ) then xlogmm = dfflo1(dm1m2/xm1,ier) else xlogmm = log(xm2/xm1) endif endif cs(1) = dm1m2*( -1/DBLE(8) - ca0i(1)*DBLE(1/(4*xm1)) ) cs(2) = dm1m2*xlogmm/4 cs(3) = xm1*(xm1/dm1m2)/4*xlogmm cs(4) = xm1*( 1/DBLE(4) + ca0i(1)*DBLE(1/(2*xm1)) ) cs(5) = -xm1*xlogmm/2 csom = cs(1) + cs(2) + cs(3) + cs(4) + cs(5) xmxp = max(absc(cs(2)),absc(cs(3)),absc(cs(4)), + absc(cs(5))) if ( xmxp.lt.xmax ) then xmax = xmxp cb2i(2) = csom endif if ( absc(cb2i(2)).gt.xloss*xmax ) goto 210 * * give up * 210 continue * #] B22: * #] xp=0, m1!=m2: * #[ xp=0, m1==m2: else * * taken over from ffxb2a, which in turns stem from my thesis GJ * cb2i(1) = cb0/3 cb2i(2) = DBLE(xm1/2)*(cb0 + 1) endif * #] xp=0, m1==m2: * #[ finish up: ier = max(ier0,ier1) * #] finish up: *###] ffxb2q: end herwig++-2.6.0.orig/Looptools/B/Bcoeff.F0000644000175000017500000000430611754474774020450 0ustar sylvestresylvestre* Bcoeff.F * invoke the two-point tensor coefficients * this file is part of LoopTools * last modified 22 Dec 10 th #include "defs.h" subroutine Bcoeff(para, B, ldpara) implicit none integer ldpara double precision para(ldpara,Pbb) double complex B(Nbb) #include "lt.h" double complex Bcmp(Nbb) double precision p, m1, m2 integer ier(Nbb), ierall, i p = para(1,1) m1 = para(1,2) m2 = para(1,3) if( lambda .lt. 0 .or. & abs(p) + abs(m1) + abs(m2) .lt. eps ) then do i = 1, Nbb B(i) = 0 enddo if( lambda .eq. -1 ) then B(bb0) = 1 B(bb1) = -.5D0 B(bb00) = -(p - 3*(m1 + m2))/12D0 B(bb11) = 1/3D0 B(bb001) = -(p - 2*m1 - 4*m2)/24D0 B(bb111) = -.25D0 if( m1*m2 .eq. 0 .and. abs(p - m1 - m2) .lt. acc ) & B(dbb0) = -.5D0/p if( m2 .eq. 0 .and. abs(p - m1) .lt. acc ) & B(dbb1) = .5D0/p B(dbb00) = -1/12D0 endif return endif goto (1, 2, 3) ibits(versionkey, KeyBget, 2) call Bcoeffa(para, B, ldpara, ier) ierall = 0 do i = 1, Nbb ierall = max(ierall, ier(i)) enddo if( ierall .gt. warndigits ) then call Bcoeffb(para, Bcmp, ldpara) call Bcheck(para, B, Bcmp, ldpara, ier) endif return 1 call Bcoeffb(para, B, ldpara) return 2 call Bcoeffa(para, B, ldpara, ier) call Bcoeffb(para, Bcmp, ldpara) call Bcheck(para, B, Bcmp, ldpara, ier) return 3 call Bcoeffa(para, Bcmp, ldpara, ier) call Bcoeffb(para, B, ldpara) call Bcheck(para, Bcmp, B, ldpara, ier) end ************************************************************************ subroutine Bcheck(para, Ba, Bb, ldpara, ier) implicit none integer ldpara, ier(Nbb) DVAR para(ldpara,Pbb) double complex Ba(Nbb), Bb(Nbb) #include "lt.h" integer i logical ini character*5 name(Nbb) data name /"bb0", "bb1", "bb00", "bb11", "bb001", "bb111", & "dbb0", "dbb1", "dbb00", "dbb11"/ ini = .TRUE. do i = 1, Nbb if( abs(Ba(i) - Bb(i)) .gt. maxdev*abs(Ba(i)) ) then if( ini ) then print *, "Discrepancy in Bget:" call DumpPara(2, para, ldpara, " ") ini = .FALSE. endif print *, name(i), " a =", Ba(i) print *, name(i), " b =", Bb(i) if( ier(i) .gt. errdigits ) Ba(i) = Bb(i) endif enddo end herwig++-2.6.0.orig/Looptools/B/Bcoeffb.F0000644000175000017500000001676311754474774020624 0ustar sylvestresylvestre* Bcoeffb.F * the two-point tensor coefficients from Ansgar Denner's bcanew.f, * adapted to the conventions of LoopTools * this file is part of LoopTools * last modified 22 Dec 10 th #include "defs.h" subroutine Bcoeffb(para, B, ldpara) implicit none integer ldpara double precision para(ldpara,Pbb) double complex B(Nbb) #include "lt.h" double complex fpv, yfpv, fth, xlogx, A0b external fpv, yfpv, fth, xlogx, A0b double precision p, m1, m2 double precision minacc, dm, la double complex x1, x2, y1, y2, r double complex mu, f1, f2, g1, g2 integer sel logical dump p = para(1,1) m1 = para(1,2) m2 = para(1,3) serial = serial + 1 dump = ibits(debugkey, DebugB, 1) .ne. 0 .and. & serial .ge. debugfrom .and. serial .le. debugto if( dump ) call DumpPara(2, para, ldpara, "Bcoeffb") minacc = acc*(m1 + m2) dm = m1 - m2 * general case if( abs(p) .gt. minacc ) then r = sqrt(DCMPLX(p*(p - m1 - m2) - & m1*(p - dm) - m2*(p + dm))) x1 = .5D0*(p + dm + r)/p x2 = .5D0*(p + dm - r)/p if( abs(x2) .gt. abs(x1) ) then x1 = m1/(p*x2) else if( abs(x1) .gt. abs(x2) ) then x2 = m1/(p*x1) endif x1 = x1 + abs(p*x1)/p*eps*cI x2 = x2 - abs(p*x2)/p*eps*cI y2 = .5D0*(p - dm + r)/p y1 = .5D0*(p - dm - r)/p if( abs(y2) .gt. abs(y1) ) then y1 = m2/(p*y2) else if( abs(y1) .gt. abs(y2) ) then y2 = m2/(p*y1) endif y1 = y1 - abs(p*y1)/p*eps*cI y2 = y2 + abs(p*y2)/p*eps*cI if( abs(y1) .gt. .5D0 .and. abs(y2) .gt. .5D0 ) then mu = log(m2/mudim) - delta B(bb0) = -(mu + fpv(1, x1, y1) + fpv(1, x2, y2)) B(bb1) = 1/2D0*(mu + fpv(2, x1, y1) + fpv(2, x2, y2)) B(bb11) = -1/3D0*(mu + fpv(3, x1, y1) + fpv(3, x2, y2)) B(bb111) = 1/4D0*(mu + fpv(4, x1, y1) + fpv(4, x2, y2)) else if( abs(x1) .lt. 10 .and. abs(x2) .lt. 10 ) then mu = log(p/mudim*(1 - cI*eps)) - delta g1 = xlogx(y1) f1 = xlogx(-x1) - g1 + 1 g2 = xlogx(y2) f2 = xlogx(-x2) - g2 + 1 B(bb0) = -(mu - f1 - f2) f1 = x1*f1 - g1 + 1/2D0 f2 = x2*f2 - g2 + 1/2D0 B(bb1) = 1/2D0*(mu - f1 - f2) f1 = x1*f1 - g1 + 1/3D0 f2 = x2*f2 - g2 + 1/3D0 B(bb11) = -1/3D0*(mu - f1 - f2) f1 = x1*f1 - g1 + 1/4D0 f2 = x2*f2 - g2 + 1/4D0 B(bb111) = 1/4D0*(mu - f1 - f2) else if( abs(x1) .gt. .5D0 .and. abs(x2) .gt. .5D0 ) then mu = log(m1/mudim) - delta + & fth(1, x1, y1) + fth(1, x2, y2) B(bb0) = -mu mu = mu + fth(2, x1, y1) + fth(2, x2, y2) B(bb1) = 1/2D0*mu mu = mu + fth(3, x1, y1) + fth(3, x2, y2) B(bb11) = -1/3D0*mu mu = mu + fth(4, x1, y1) + fth(4, x2, y2) B(bb111) = 1/4D0*mu else print *, "Bcoeffb not defined for" print *, " p =", p print *, " m1 =", m1 print *, " m2 =", m2 B(bb0) = nan B(bb1) = nan B(bb11) = nan B(bb111) = nan endif B(bb00) = ((p + dm)*B(bb1) + & 2*m1*B(bb0) + A0b(m2) + m1 + m2 - p/3D0)/6D0 B(bb001) = .125D0*( 2*m1*B(bb1) - A0b(m2) + & (p + dm)*(B(bb11) + 1/6D0) - .5D0*(m1 + m2) ) if( abs(x1 - x2) .gt. acc*abs(x1 + x2) ) then B(dbb11) = (yfpv(3, x2, y2) - yfpv(3, x1, y1))/r sel = 1 else if( abs(x1) .gt. 10 ) then B(dbb11) = -DBLE((3/4D0 + (3 - 4*x1)*fpv(4, x1, y1))/ & x1**2)/p sel = 2 else if( abs(y1) .gt. acc ) then B(dbb11) = -DBLE(4/3D0 + (3 - 4*x1)*fpv(2, x1, y1))/p sel = 3 else B(dbb11) = nan endif if( m1*m2 .eq. 0 .and. & abs(p - m1 - m2) .lt. acc ) then * IR divergent case la = lambda if( la .le. 0 ) la = mudim B(dbb0) = -(1 + .5D0*log(la/p))/p else if( sel .eq. 1 ) then B(dbb0) = (yfpv(1, x2, y2) - yfpv(1, x1, y1))/r else if( sel .eq. 2 ) then B(dbb0) = -DBLE((.5D0 + (1 - 2*x1)*fpv(2, x1, y1))/ & x1**2)/p else if( sel .eq. 3 ) then B(dbb0) = -DBLE(2 + (1 - 2*x1)*fpv(0, x1, y1))/p else B(dbb0) = nan endif if( m2 .eq. 0 .and. abs(p - m1) .lt. acc ) then * IR divergent case B(dbb1) = .5D0*(3 + log(la/p))/p else if( sel .eq. 1 ) then B(dbb1) = (yfpv(2, x1, y1) - yfpv(2, x2, y2))/r else if( sel .eq. 2 ) then B(dbb1) = DBLE((2/3D0 + (2 - 3*x1)*fpv(3, x1, y1))/ & x1**2)/p else if( sel .eq. 3 ) then B(dbb1) = DBLE(3/2D0 + (2 - 3*x1)*fpv(1, x1, y1))/p else B(dbb1) = nan endif * zero momentum else if( abs(dm) .gt. minacc ) then x2 = m1/dm*(1 - cI*eps) y2 = -m2/dm*(1 - cI*eps) if( abs(y2) .gt. .5D0 ) then mu = log(m2/mudim) - delta B(bb0) = -(mu + fpv(1, x2, y2)) B(bb1) = 1/2D0*(mu + fpv(2, x2, y2)) B(bb11) = -1/3D0*(mu + fpv(3, x2, y2)) B(bb111) = 1/4D0*(mu + fpv(4, x2, y2)) B(bb00) = (2*(m1*B(bb0) + A0b(m2)) + m1 + m2)/8D0 else mu = log(m1/mudim) - delta f1 = fpv(1, y2, x2) B(bb0) = -(mu + f1) B(bb1) = 1/2D0*(mu + (1 + x2)*f1 + 1/2D0) B(bb11) = -1/3D0*(mu - (1 + x2*(1 + x2))*yfpv(0, x2, y2) - & x2*(x2 + 1/2D0) - 1/3D0) B(bb111) = 1/4D0*(mu - & (1 + x2*(1 + x2*(1 + x2)))*yfpv(0, x2, y2) - & x2*(x2*(x2 + 1/2D0) + 1/3D0) - 1/4D0) B(bb00) = (2*(m2*B(bb0) + A0b(m1)) + m1 + m2)/8D0 endif B(bb001) = -( ((m1 + m2)/6D0)**2 + & m1*m2/6D0 * (B(bb0) + 1/3D0) + & (dm - m2)/3D0 * B(bb00) )/dm if( abs(x2) .lt. 10 ) then B(dbb0) = (1/2D0 + yfpv(1, x2, y2))/dm B(dbb1) = -(1/3D0 + yfpv(2, x2, y2))/dm B(dbb11) = (1/4D0 + yfpv(3, x2, y2))/dm else B(dbb0) = (1/2D0 + yfpv(2, x2, y2))/m1 B(dbb1) = -(1/3D0 + yfpv(3, x2, y2))/m1 B(dbb11) = (1/4D0 + yfpv(4, x2, y2))/m1 endif else mu = log(m2/mudim) - delta B(bb0) = -mu B(bb1) = 1/2D0*mu B(bb11) = -1/3D0*mu B(bb111) = 1/4D0*mu B(bb00) = .5D0*m1*(1 - mu) B(bb001) = -.5D0*B(bb00) B(dbb0) = 1/6D0/m1 B(dbb1) = -1/12D0/m1 B(dbb11) = 1/20D0/m1 endif B(dbb00) = 1/6D0*( 2*m1*B(dbb0) + B(bb1) + & (p + dm)*B(dbb1) - 1/3D0 ) if( dump ) call DumpCoeff(2, B) end ************************************************************************ double complex function fpv(n, x, y) implicit none integer n double complex x, y #include "lt.h" double complex xm integer m if( abs(x) .lt. 5 ) then if( n .eq. 0 ) then fpv = -log(-y/x) else if( abs(x) .lt. acc ) then fpv = -1D0/n else xm = -log(-y/x) do m = 1, n xm = x*xm - 1D0/m enddo fpv = xm endif else fpv = 0 xm = 1 do m = 1, 50 xm = xm/x fpv = fpv + xm/(m + n) if( abs(xm) .lt. precx*abs(fpv) ) return enddo endif end ************************************************************************ double complex function yfpv(n, x, y) implicit none integer n double complex x, y double complex fpv external fpv if( abs(y) .eq. 0 ) then yfpv = 0 else yfpv = y*fpv(n, x, y) endif end ************************************************************************ double complex function fth(n, x, y) implicit none integer n double complex x, y #include "lt.h" double complex fpv external fpv double complex xm integer m if( abs(x) .gt. 1D4 ) then xm = 1 fth = 0 do m = n, 30 + n xm = xm/x fth = fth - xm/(m*(m + 1)) if( abs(xm) .lt. precx*abs(fth) ) return enddo else fth = fpv(1, y, x) do m = 1, n - 1 fth = x*fth + 1D0/(m*(m + 1)) enddo endif end ************************************************************************ double complex function xlogx(x) implicit none double complex x if( abs(x) .eq. 0 ) then xlogx = 0 else xlogx = x*log(x) endif end herwig++-2.6.0.orig/Looptools/B/Bget.F0000644000175000017500000000610711754474774020146 0ustar sylvestresylvestre* Bget.F * retrieve the two-point tensor coefficients * this file is part of LoopTools * last modified 15 Jun 09 th #include "defs.h" integer function XBget(p, m1, m2) implicit none DVAR p, m1, m2 #include "lt.h" integer cachelookup external cachelookup, XBcoeff DVAR para(Pbb) para(1) = p para(2) = m1 if( abs(para(2)) .lt. minmass ) para(2) = 0 para(3) = m2 if( abs(para(3)) .lt. minmass ) para(3) = 0 XBget = cachelookup(para, Bval(1,0), XBcoeff, RC*Pbb, Nbb) end ************************************************************************ double complex function XB0i(i, p, m1, m2) implicit none integer i DVAR p, m1, m2 #include "lt.h" integer XBget external XBget integer b b = XBget(p, m1, m2) XB0i = Bval(i,b) end ************************************************************************ double complex function XB0(p, m1, m2) implicit none DVAR p, m1, m2 #include "lt.h" integer XBget external XBget XB0 = Bval(bb0,XBget(p, m1, m2)) end ************************************************************************ double complex function XB1(p, m1, m2) implicit none DVAR p, m1, m2 #include "lt.h" integer XBget external XBget XB1 = Bval(bb1,XBget(p, m1, m2)) end ************************************************************************ double complex function XB00(p, m1, m2) implicit none DVAR p, m1, m2 #include "lt.h" integer XBget external XBget XB00 = Bval(bb00,XBget(p, m1, m2)) end ************************************************************************ double complex function XB11(p, m1, m2) implicit none DVAR p, m1, m2 #include "lt.h" integer XBget external XBget XB11 = Bval(bb11,XBget(p, m1, m2)) end ************************************************************************ double complex function XB001(p, m1, m2) implicit none DVAR p, m1, m2 #include "lt.h" integer XBget external XBget XB001 = Bval(bb001,XBget(p, m1, m2)) end ************************************************************************ double complex function XB111(p, m1, m2) implicit none DVAR p, m1, m2 #include "lt.h" integer XBget external XBget XB111 = Bval(bb111,XBget(p, m1, m2)) end ************************************************************************ double complex function XDB0(p, m1, m2) implicit none DVAR p, m1, m2 #include "lt.h" integer XBget external XBget XDB0 = Bval(dbb0,XBget(p, m1, m2)) end ************************************************************************ double complex function XDB1(p, m1, m2) implicit none DVAR p, m1, m2 #include "lt.h" integer XBget external XBget XDB1 = Bval(dbb1,XBget(p, m1, m2)) end ************************************************************************ double complex function XDB00(p, m1, m2) implicit none DVAR p, m1, m2 #include "lt.h" integer XBget external XBget XDB00 = Bval(dbb00,XBget(p, m1, m2)) end ************************************************************************ double complex function XDB11(p, m1, m2) implicit none DVAR p, m1, m2 #include "lt.h" integer XBget external XBget XDB11 = Bval(dbb11,XBget(p, m1, m2)) end herwig++-2.6.0.orig/Looptools/B/BcoeffC.F0000644000175000017500000000213611754474774020552 0ustar sylvestresylvestre* BcoeffC.F * invoke the two-point tensor coefficients * this file is part of LoopTools * last modified 24 Aug 09 th #include "defs.h" subroutine BcoeffC(para, B, ldpara) implicit none integer ldpara double complex para(ldpara,Pbb) double complex B(Nbb) #include "lt.h" integer ier(Nbb), i logical ini character*5 name(Nbb) data name /"bb0", "bb1", "bb11", "bb00", "bb001", "bb111", & "dbb0", "dbb1", "dbb00", "dbb11"/ if( lambda .lt. 0 ) then do i = 1, Nbb B(i) = 0 enddo if( lambda .eq. -1 ) then B(bb0) = 1 B(bb1) = -.5D0 B(bb00) = -(para(1,1) - 3*(para(1,2) + para(1,3)))/12D0 B(bb11) = 1/3D0 B(bb001) = -(para(1,1) - 2*para(1,2) - 4*para(1,3))/24D0 B(bb111) = -.25D0 B(dbb00) = -1/12D0 endif return endif call BcoeffaC(para, B, ldpara, ier) ini = .TRUE. do i = 1, Nbb if( ier(i) .gt. warndigits ) then if( ini ) then print *, "Loss of digits in BgetC for:" call DumpParaC(2, para, ldpara, " ") ini = .FALSE. endif print *, name(i), " claims ", ier(i), "lost digits" endif enddo end herwig++-2.6.0.orig/Looptools/B/ffcb2p.F0000644000175000017500000002622511754474774020432 0ustar sylvestresylvestre#include "externals.h" *###[ ffcb2p: subroutine ffcb2p(cb2i,cb1,cb0,ca0i,cp,xm1,xm2,piDpj,ier) ***#[*comment:*********************************************************** * * * Compute the PV B2, the coefficients of p(mu)p(nu) and g(mu,nu) * * of 1/(ipi^2)\int d^nQ Q(mu)Q(nu)/(Q^2-m_1^2)/((Q+p)^2-m_2^2) * * originally based on aaxbx by Andre Aeppli. * * * * Input: cb1 complex vector two point function * * cb0 complex scalar two point function * * ca0i(2) complex scalar onepoint function with * * m1,m2 * * cp complex p.p in B&D metric * * xm1,2 complex m_1^2,m_2^2 * * piDpj(3,3) complex dotproducts between s1,s2,p * * ier integer digits lost so far * * * * Output: cb2i(2) complex B21,B22: coeffs of p*p, g in B2 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cp,xm1,xm2,piDpj(3,3) DOUBLE COMPLEX cb2i(2),cb1,cb0,ca0i(2) DOUBLE PRECISION rm1,rm2,rp,rpiDpj(3,3),sprec * * local variables * integer i,j DOUBLE COMPLEX dm1p,dm2p,dm1m2 * * common blocks * * #include "ff.h" * * #] declarations: * #[ real case: if ( DIMAG(xm1).eq.0 .and. DIMAG(xm2).eq.0 ) then rm1 = DBLE(xm1) rm2 = DBLE(xm2) rp = DBLE(cp) do 20 j=1,3 do 10 i=1,3 rpiDpj(i,j) = DBLE(piDpj(i,j)) 10 continue 20 continue sprec = precx precx = precc call ffxb2p(cb2i,cb1,cb0,ca0i,rp,rm1,rm2,rpiDpj,ier) precx = sprec return endif * #] real case: * #[ work: * dm1p = xm1 - cp dm2p = xm2 - cp dm1m2= xm1 - xm2 call ffcb2q(cb2i,cb1,cb0,ca0i,cp,xm1,xm2,dm1p,dm2p,dm1m2, + piDpj,ier) * * #] work: *###] ffcb2p: end *###[ ffcb2q: subroutine ffcb2q(cb2i,cb1,cb0,ca0i,cp,xm1,xm2,dm1p,dm2p,dm1m2, + piDpj,ier) ***#[*comment:*********************************************************** * * * Compute the PV B2, the coefficients of p(mu)p(nu) and g(mu,nu) * * of 1/(ipi^2)\int d^nQ Q(mu)Q(nu)/(Q^2-m_1^2)/((Q+p)^2-m_2^2) * * originally based on aaxbx by Andre Aeppli. * * * * Input: cb1 complex vector two point function * * cb0 complex scalar two point function * * ca0i(2) complex scalar onepoint function with * * m1,m2 * * cp complex p.p in B&D metric * * xm1,2 complex m_1^2,m_2^2 * * piDpj(3,3) complex dotproducts between s1,s2,p * * ier integer digits lost so far * * * * Output: cb2i(2) complex B21,B22: coeffs of p*p, g in B2 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cp,xm1,xm2,dm1p,dm2p,dm1m2,piDpj(3,3) DOUBLE COMPLEX cb2i(2),cb1,cb0,ca0i(2) * * local variables * integer i,j,ier0,ier1,ithres,init logical lreal,llogmm DOUBLE PRECISION xmax,xmxsav,absc,xmxp DOUBLE PRECISION rm1,rm2,rp,rm1p,rm2p,rm1m2,rpiDpj(3,3),sprec DOUBLE COMPLEX cs(14),cc,slam,xlo3,csom,clam,xlogmm,zfflo1,alp, + bet,xnoe,xnoe2,zfflo3 DOUBLE COMPLEX cqi(3),cqiqj(3,3) save init * for Absoft only * external csqrt * DOUBLE COMPLEX csqrt * * common blocks * #include "ff.h" * * statement function * absc(cc) = abs(DBLE(cc)) + abs(DIMAG(cc)) * * #] declarations: * #[ real cases: if ( DIMAG(xm1).eq.0 .and. DIMAG(xm2).eq.0 ) then lreal = .TRUE. elseif ( nschem.le.4 ) then lreal = .TRUE. if ( init.eq.0 ) then init = 1 print *,'ffcb2q: nschem <= 4, ignoring complex masses:', + nschem endif elseif ( nschem.le.6 ) then if ( init.eq.0 ) then init = 1 print *,'ffcb2q: nschem = 5,6 complex masses near ', + 'threshold: ',nschem endif cqi(1) = xm1 cqi(2) = xm2 cqi(3) = cp cqiqj(1,2) = dm1m2 cqiqj(2,1) = -cqiqj(1,2) cqiqj(1,3) = dm1p cqiqj(3,1) = -cqiqj(1,3) cqiqj(2,3) = dm2p cqiqj(3,2) = -cqiqj(2,3) cqiqj(1,1) = 0 cqiqj(2,2) = 0 cqiqj(3,3) = 0 call ffthre(ithres,cqi,cqiqj,3,1,2,3) if ( ithres.eq.0 .or. ithres.eq.1 .and. nschem.eq.5 ) then lreal = .TRUE. else lreal = .FALSE. endif else lreal = .FALSE. endif if ( lreal ) then rm1 = DBLE(xm1) rm2 = DBLE(xm2) rp = DBLE(cp) rm1p = DBLE(dm1p) rm2p = DBLE(dm2p) rm1m2 = DBLE(dm1m2) do 20 j=1,3 do 10 i=1,3 rpiDpj(i,j) = DBLE(piDpj(i,j)) 10 continue 20 continue sprec = precx precx = precc call ffxb2q(cb2i,cb1,cb0,ca0i,rp,rm1,rm2,rm1m2,rpiDpj,ier) precx = sprec return endif * #] real cases: * #[ normal case: ier0 = ier ier1 = ier * * with thanks to Andre Aeppli, off whom I stole the original * if ( DBLE(cp) .ne. 0) then cs(1) = ca0i(2) cs(2) = xm1*cb0 cs(3) = 2*piDpj(1,3)*cb1 cs(4) = (xm1+xm2)/2 cs(5) = -cp/6 cb2i(1) = cs(1) - cs(2) + 2*cs(3) - cs(4) - cs(5) cb2i(2) = cs(1) + 2*cs(2) - cs(3) + 2*cs(4) + 2*cs(5) xmax = max(absc(cs(2)),absc(cs(3)),absc(cs(4)),absc(cs(5))) xmxsav = xmax if ( absc(cb2i(1)) .ge. xloss*xmax ) goto 100 * #] normal case: * #[ improve: m1=m2: * * a relatively simple case: dm1m2 = 0 (bi0.frm) * if ( dm1m2.eq.0 ) then slam = sqrt(cp**2-4*xm1*cp) xlo3 = zfflo3((cp-slam)/(2*xm1),ier) cs(1) = cp*(-1/DBLE(3) + slam/(4*xm1)) cs(2) = cp**2*(-slam/(4*xm1**2) - 3/(4*xm1)) cs(3) = cp**3/(4*xm1**2) cs(4) = cp/xm1*ca0i(1) cs(5) = xlo3/cp*(-xm1*slam) cs(6) = xlo3*slam csom = cs(1) + cs(2) + cs(3) + cs(4) + cs(5) + cs(6) xmxp = max(absc(cs(2)),absc(cs(3)),absc(cs(4)), + absc(cs(5)),absc(cs(6))) if ( xmxp.lt.xmax ) then cb2i(1) = csom xmax = xmxp endif if ( absc(cb2i(1)).ge.xloss**2*xmax ) goto 100 endif * #] improve: m1=m2: * #[ improve: |cp| < xm1 < xm2: * * try again (see bi.frm) * clam = 4*(piDpj(1,3)**2 - xm1*cp) if ( xm1.eq.0 .or. xm2.eq.0 ) then xlogmm = 0 elseif ( absc(dm1m2).lt.xloss*absc(xm1) ) then xlogmm = zfflo1(dm1m2/xm1,ier) else xlogmm = log(xm2/xm1) endif if ( abs(DBLE(cp)).lt.xloss*absc(xm2) .and. + DBLE(xm1).lt.DBLE(xm2) ) then slam = sqrt(clam) alp = (2*xm1*xm2/(2*piDpj(1,2)+slam) + xm1)/(slam-dm1m2) * bet = [xm2-xm1-cp-slam] bet = 4*xm1*cp/(2*piDpj(1,3)+slam) cs(1) = cp/xm2*ca0i(2) cs(2) = xlogmm*bet*(-2*xm1**2*xm2 - 2*xm1**3) + /((-dm1m2+slam)*(2*piDpj(1,2)+slam)*(2*piDpj(1,3)+slam)) cs(3) = xlogmm*(-4*cp*xm1**3) + /((-dm1m2+slam)*(2*piDpj(1,2)+slam)*(2*piDpj(1,3)+slam)) xnoe = 1/(2*piDpj(2,3)+slam) xnoe2 = xnoe**2 cs(4) = xnoe2*xm1*bet*(cp-4*xm2) cs(5) = xnoe2*xm1*2*cp*xm2 cs(6) = xnoe2*xm1**2*bet cs(7) = xnoe2*xm1**2*4*cp cs(8) = xnoe2*bet*(cp*xm2+3*xm2**2) cs(9) = xnoe2*(-6*cp*xm2**2) cs(10)= cp*(7/6.d0 - 2*xm1*slam*xnoe2 + + 4*xm2*slam*xnoe2 - 2*slam*xnoe) cs(11)= cp**2*( -2*slam*xnoe2 ) xlo3 = zfflo3(2*cp*xnoe,ier) cs(12) = xlo3*dm1m2**2*slam/cp**2 cs(13) = xlo3*(xm1 - 2*xm2)*slam/cp cs(14) = xlo3*slam csom = 0 xmxp = 0 do 50 i=1,14 csom = csom + cs(i) xmxp = max(xmxp,absc(cs(i))) 50 continue if ( xmxp.lt.xmax ) then cb2i(1) = csom xmax = xmxp endif if ( absc(cb2i(1)).ge.xloss**2*xmax ) goto 100 endif * #] improve: |cp| < xm1 < xm2: * #[ improve: |cp| < xm2 < xm1: if ( abs(DBLE(cp)).lt.xloss*absc(xm1) .and. + DBLE(xm2).lt.DBLE(xm1) ) then slam = sqrt(clam) alp = (2*xm2*xm1/(2*piDpj(1,2)+slam) + xm2)/(slam+dm1m2) * bet = [xm1-xm2-cp-slam] bet = 4*xm2*cp/(-2*piDpj(2,3)+slam) xnoe = 1/(-2*piDpj(1,3)+slam) xnoe2 = xnoe**2 cs(1) = cp/xm1*ca0i(1) cs(2) = -xlogmm*bet*(12*cp*xm1*xm2+6*cp*xm2**2- + 6*cp**2*xm2-2*xm1*xm2**2-2*xm2**3) + /((dm1m2+slam)*(2*piDpj(1,2)+slam)*(-2*piDpj(2,3)+slam)) cs(3) = -xlogmm*(-24*cp*xm1**2*xm2-4*cp*xm2**3+36* + cp**2*xm1*xm2+12*cp**2*xm2**2-12*cp**3*xm2) + /((dm1m2+slam)*(2*piDpj(1,2)+slam)*(-2*piDpj(2,3)+slam)) cs(4) = xnoe2*xm2*bet*(cp-4*xm1) cs(5) = xnoe2*xm2*(-10*cp*xm1) cs(6) = xnoe2*xm2**2*bet cs(7) = xnoe2*xm2**2*4*cp cs(8) = xnoe2*bet*(cp*xm1+3*xm1**2) cs(9) = xnoe2*6*cp*xm1**2 cs(10)= cp*(7/6.d0 - 2*xm1*slam*xnoe2 + + 4*xm2*slam*xnoe2 - 2*slam*xnoe) cs(11)= cp**2*( -2*slam*xnoe2 ) xlo3 = zfflo3(2*cp*xnoe,ier) cs(12) = xlo3*dm1m2**2*slam/cp**2 cs(13) = xlo3*(xm1 - 2*xm2)*slam/cp cs(14) = xlo3*slam csom = 0 xmxp = 0 do 60 i=1,14 csom = csom + cs(i) xmxp = max(xmxp,absc(cs(i))) 60 continue if ( xmxp.lt.xmax ) then cb2i(1) = csom xmax = xmxp endif if ( absc(cb2i(1)).ge.xloss**2*xmax ) goto 100 endif * #] improve: |cp| < xm2 < xm1: * #[ wrap up: 100 continue xmax = xmxsav cb2i(1) = DBLE(1/(3*cp)) * cb2i(1) cb2i(2) = DBLE(1/6.d0) * cb2i(2) * #] wrap up: * #[ cp=0, m1!=m2: elseif (dm1m2 .ne. 0) then * #[ B21: llogmm = .FALSE. * * B21 (see thesis, b21.frm) * cs(1) = xm1**2/3/dm1m2**3*ca0i(1) cs(2) = (-xm1**2 + xm1*xm2 - xm2**2/3)/dm1m2**3*ca0i(2) cs(3) = (5*xm1**3/18 - xm1*xm2**2/2 + 2*xm2**3/9) + /dm1m2**3 cb2i(1) = cs(1)+cs(2)+cs(3) xmax = max(absc(cs(2)),absc(cs(3))) if ( absc(cb2i(1)).gt.xloss**2*xmax ) goto 160 * * ma ~ mb * if ( absc(dm1m2).lt.xloss*absc(xm1) ) then xlogmm = zfflo1(dm1m2/xm1,ier) else xlogmm = log(xm2/xm1) endif llogmm = .TRUE. cs(1) = (xm1/dm1m2)/6 cs(2) = (xm1/dm1m2)**2/3 cs(3) = (xm1/dm1m2)**3*xlogmm/3 cs(4) = -2/DBLE(9) + ca0i(1)/(3*xm1) cs(5) = -xlogmm/3 csom = cs(1)+cs(2)+cs(3)+cs(4)+cs(5) xmxp = max(absc(cs(2)),absc(cs(3)),absc(cs(4)), + absc(cs(5))) if ( xmxp.lt.xmax ) then xmax = xmxp cb2i(1) = csom if ( absc(cb2i(1)).gt.xloss**2*xmax ) goto 160 endif * * and last try * xlo3 = zfflo3(dm1m2/xm1,ier) cs(1) = (dm1m2/xm1)**2/6 cs(2) = (dm1m2/xm1)/3 cs(3) = xlo3/(3*(dm1m2/xm1)**3) *same cs(4) = -2/DBLE(9) + ca0i(1)/(3*xm1) cs(5) = -xlo3/3 csom = cs(1)+cs(2)+cs(3)+cs(4)+cs(5) xmxp = max(absc(cs(2)),absc(cs(3)),absc(cs(4)), + absc(cs(5))) if ( xmxp.lt.xmax ) then xmax = xmxp cb2i(1) = csom if ( absc(cb2i(1)).gt.xloss**2*xmax ) goto 160 endif * * give up * 160 continue * #] B21: * #[ B22: * * B22 * cs(1) = +xm1/(4*dm1m2)*ca0i(1) cs(2) = -xm2/(4*dm1m2)*ca0i(2) cs(3) = (xm1+xm2)/8 cb2i(2) = cs(1) + cs(2) + cs(3) xmax = max(absc(cs(2)),absc(cs(3))) if ( absc(cb2i(2)).gt.xloss*xmax ) goto 210 * * second try, close together * if ( .not.llogmm ) then if ( abs(dm1m2).lt.xloss*absc(xm1) ) then xlogmm = zfflo1(dm1m2/xm1,ier) else xlogmm = log(xm2/xm1) endif endif cs(1) = dm1m2*( -1/DBLE(8) - ca0i(1)/(4*xm1) ) cs(2) = dm1m2*xlogmm/4 cs(3) = xm1*(xm1/dm1m2)/4*xlogmm cs(4) = xm1*( 1/DBLE(4) + ca0i(1)/(2*xm1) ) cs(5) = -xm1*xlogmm/2 csom = cs(1) + cs(2) + cs(3) + cs(4) + cs(5) xmxp = max(absc(cs(2)),absc(cs(3)),absc(cs(4)), + absc(cs(5))) if ( xmxp.lt.xmax ) then xmax = xmxp cb2i(2) = csom endif if ( absc(cb2i(2)).gt.xloss*xmax ) goto 210 * * give up * 210 continue * #] B22: * #] cp=0, m1!=m2: * #[ cp=0, m1==m2: else * * taken over from ffxb2a, which in turns stem from my thesis GJ * cb2i(1) = cb0/3 cb2i(2) = xm1/2*(cb0 + 1) endif * #] cp=0, m1==m2: * #[ finish up: ier = max(ier0,ier1) * #] finish up: *###] ffcb2q: end herwig++-2.6.0.orig/Looptools/B/ffxdb1.F0000644000175000017500000002114211754474774020433 0ustar sylvestresylvestre#include "externals.h" *###[ ffxdb1: subroutine ffxdb1(cdb1, p, m1, m2, ier) ***#[*comment:*********************************************************** * * * DB1 function (derivative of B1) * * * * algorithm adapted from Ansgar Denner's bcanew.f * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX cdb1 DOUBLE PRECISION p, m1, m2 integer ier DOUBLE COMPLEX ffpvf, ffypvf external ffpvf, ffypvf DOUBLE COMPLEX xp, xm, yp, ym, r #include "ff.h" logical initir save initir data initir /.FALSE./ * * #[ declarations: if( abs(p) .gt. acc*(m1 + m2) ) then * IR divergent case if( m2 .eq. 0 .and. p .eq. m1 ) then if( .not. initir ) then initir = .TRUE. print *, "ffxdb1: IR divergent B1', using cutoff ", + lambda endif if( lambda .le. 0 ) then cdb1 = .5D0*(3 + log(mudim/p))/p else cdb1 = .5D0*(3 + log(lambda/p))/p endif return endif call ffroots(p, m1, m2, xp, xm, yp, ym, r, ier) if( abs(xp - xm) .gt. acc*abs(xp + xm) ) then cdb1 = (ffypvf(2, xp, yp) - ffypvf(2, xm, ym))/r else if( abs(xp) .gt. 10 ) then cdb1 = DBLE( (2/3D0 + + (2 - 3*xp)*ffpvf(3, xp, yp))/xp**2 )/p else if( abs(yp) .gt. acc ) then cdb1 = DBLE( (3/2D0 + + (2 - 3*xp)*ffpvf(1, xp, yp)) )/p else call fferr(101, ier) cdb1 = nan endif * zero momentum case else if( abs(m1 - m2) .gt. acc*(m1 + m2) ) then xm = (1 - cI*eps)*m1/(m1 - m2) ym = (1 - cI*eps)*m2/(m2 - m1) if( abs(xm) .lt. 10 ) then cdb1 = -(1/3D0 + ffypvf(2, xm, ym))/(m1 - m2) else cdb1 = -(1/3D0 + ffypvf(3, xm, ym))/m1 endif else cdb1 = -1/12D0/m1 endif end *###[ ffxdb11: subroutine ffxdb11(cdb11, p, m1, m2, ier) ***#[*comment:*********************************************************** * * * DB11 function (derivative of B11) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX cdb11 DOUBLE PRECISION p, m1, m2 integer ier DOUBLE COMPLEX ffpvf, ffypvf external ffpvf, ffypvf DOUBLE COMPLEX xp, xm, yp, ym, r #include "ff.h" * * #] declarations: if( abs(p) .gt. acc*(m1 + m2) ) then call ffroots(p, m1, m2, xp, xm, yp, ym, r, ier) if( abs(xp - xm) .gt. acc*abs(xp + xm) ) then cdb11 = (ffypvf(3, xm, ym) - ffypvf(3, xp, yp))/r else if( abs(xp) .gt. 10 ) then cdb11 = DBLE( (-3/4D0 + + (4*xp - 3)*ffpvf(4, xp, yp))/xp**2 )/p else if( abs(yp) .gt. acc ) then cdb11 = DBLE( (-4/3D0 + + (4*xp - 3)*ffpvf(2, xp, yp))/p ) else c call fferr(102, ier) cdb11 = nan endif * zero momentum case else if( abs(m1 - m2) .gt. acc*(m1 + m2) ) then xm = (1 - cI*eps)*m1/(m1 - m2) ym = (1 - cI*eps)*m2/(m2 - m1) if( abs(xm) .lt. 10 ) then cdb11 = (1/4D0 + ffypvf(3, xm, ym))/(m1 - m2) else cdb11 = (1/4D0 + ffypvf(4, xm, ym))/m1 endif else cdb11 = 1/20D0/m1 endif end *###[ ffxdb11: subroutine ffxb111(cb111, p, m1, m2, ier) ***#[*comment:*********************************************************** * * * B111 function (coefficient of p_mu p_nu p_rho) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX cb111 DOUBLE PRECISION p, m1, m2 integer ier DOUBLE COMPLEX ffpvf, ffypvf, ffthf, ffxlogx external ffpvf, ffypvf, ffthf, ffxlogx DOUBLE COMPLEX xp, xm, yp, ym, r #include "ff.h" * * #] declarations: if( abs(p) .gt. acc*(m1 + m2) ) then call ffroots(p, m1, m2, xp, xm, yp, ym, r, ier) if( abs(yp) .gt. .5D0 .and. abs(ym) .gt. .5D0 ) then cb111 = 1/4D0*( log(m2/mudim) - delta + & ffpvf(4, xp, yp) + ffpvf(4, xm, ym) ) else if( abs(xp) .lt. 10 .and. abs(xm) .lt. 10 ) then cb111 = 1/4D0*( log(p/mudim*(1 - cI*eps)) - & delta - 1/2D0 + & (1 + xp)*(1 + xp**2)*ffxlogx(yp) - & xp*(1/3D0 + xp*(1/2D0 + xp*(1 + ffxlogx(-xp)))) + & (1 + xm)*(1 + xm**2)*ffxlogx(ym) - & xm*(1/3D0 + xm*(1/2D0 + xm*(1 + ffxlogx(-xm)))) ) else if( abs(xp) .gt. .5D0 .and. abs(xm) .gt. .5D0 ) then cb111 = 1/4D0*( log(m1/mudim) - delta + & ffthf(4, xp, yp) + ffthf(4, xm, ym) ) else c call fferr(102, ier) cb111 = nan endif * zero momentum case else if( abs(m1 - m2) .gt. acc*(m1 + m2) ) then xm = (1 - cI*eps)*m1/(m1 - m2) ym = (1 - cI*eps)*m2/(m2 - m1) if( abs(ym) .gt. .5D0 ) then cb111 = 1/4D0*(log(m2/mudim) - delta + ffpvf(4, xm, ym)) else cb111 = 1/4D0*(log(m1/mudim) - delta - & (1 + xm*(1 + xm*(1 + xm)))*ffypvf(0, xm, ym) - & xm*(xm*(xm + 1/2D0) + 1/3D0) - 1/4D0) endif else cb111 = 1/4D0*(log(m2/mudim) - delta) endif end *###[ ffroots subroutine ffroots(p, m1, m2, xp, xm, yp, ym, r, ier) ***#[*comment:*********************************************************** * * * roots of quadratic equation * * p*x^2 + (m2 - m1 - p)*x + m2 - I eps = * * p*(x - xp)*(x - xm) = p*(x - 1 + yp)*(x - 1 + ym) * * i.e. x[pm] = 1 - y[pm] * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE PRECISION p, m1, m2 DOUBLE COMPLEX xp, xm, yp, ym, r integer ier DOUBLE PRECISION qx, qy #include "ff.h" * * #] declarations: * #[ check input: if( p .eq. 0 ) then call fferr(39, ier) return endif * #] check input: qx = m1 - m2 + p qy = m2 - m1 + p r = sqrt(DCMPLX(p*(p - m1 - m2) - m1*qy - m2*qx)) xp = .5D0*(qx + r)/p xm = .5D0*(qx - r)/p if( abs(xm) .gt. abs(xp) ) then xp = m1/(p*xm) else if( abs(xp) .gt. abs(xm) ) then xm = m1/(p*xp) endif xp = xp + abs(p*xp)/p*eps*cI xm = xm - abs(p*xm)/p*eps*cI ym = .5D0*(qy + r)/p yp = .5D0*(qy - r)/p if( abs(ym) .gt. abs(yp) ) then yp = m2/(p*ym) else if( abs(yp) .gt. abs(ym) ) then ym = m2/(p*yp) endif yp = yp - abs(p*yp)/p*eps*cI ym = ym + abs(p*ym)/p*eps*cI end *###[ ffpvf DOUBLE COMPLEX function ffpvf(n, x, y) ***#[*comment:*********************************************************** * * * Passarino-Veltman function f(n, x) * * here third arg y = 1 - x * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer n DOUBLE COMPLEX x, y DOUBLE COMPLEX xm integer m #include "ff.h" * * #] declarations: if( abs(x) .lt. 5 ) then if( n .eq. 0 ) then ffpvf = -log(-y/x) else if( abs(x) .lt. 1D-14 ) then ffpvf = -1D0/n else xm = -log(-y/x) do m = 1, n xm = x*xm - 1D0/m enddo ffpvf = xm endif else ffpvf = 0 xm = 1 do m = 1, 30 xm = xm/x ffpvf = ffpvf + xm/(m + n) if( abs(xm) .lt. precx*abs(ffpvf) ) return enddo endif end *###[ ffypvf DOUBLE COMPLEX function ffypvf(n, x, y) ***#[*comment:*********************************************************** * * * y*ffpvf(n, x, y) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer n DOUBLE COMPLEX x, y DOUBLE COMPLEX ffpvf external ffpvf * * #] declarations: if( abs(y) .eq. 0 ) then ffypvf = 0 else ffypvf = y*ffpvf(n, x, y) endif end *###[ ffypvf DOUBLE COMPLEX function ffxlogx(x) ***#[*comment:*********************************************************** * * * x*log(x) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX x * * #] declarations: if( abs(x) .eq. 0 ) then ffxlogx = 0 else ffxlogx = x*log(x) endif end *###[ ffthf DOUBLE COMPLEX function ffthf(n, x, y) ***#[*comment:*********************************************************** * * * y*ffpvf(n, x, y) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer n DOUBLE COMPLEX x, y DOUBLE COMPLEX ffpvf external ffpvf DOUBLE COMPLEX xm integer m #include "ff.h" * * #] declarations: if( abs(x) .gt. 1D4 ) then xm = n ffthf = 0 do m = 1, 30 xm = xm/x ffthf = ffthf - xm/(m*(m + n)) if( abs(xm) .lt. precx*abs(ffthf) ) return enddo else xm = ffpvf(1, y, x) ffthf = xm do m = 1, n - 1 xm = x*xm + 1D0/(m*(m + 1)) ffthf = ffthf + xm enddo endif end herwig++-2.6.0.orig/Looptools/B/ffxb1.F0000644000175000017500000001557611754474774020305 0ustar sylvestresylvestre#include "externals.h" *###[ ffxb1: subroutine ffxb1(cb1,cb0,ca0i,xp,xm1,xm2,piDpj,ier) ***#[*comment:*********************************************************** * * * Calculate 1 / d^n Q Q(mu) * * ------ | ------------------------ = B1*p(mu) * * i pi^2 / (Q^2-m1^2)((Q+p)^2-m2^2) * * * * Input: cb0 complex scalar twopoint function * * ca0i(2) complex scalar onepoint function with * * m1,m2 * * xp real p.p in B&D metric * * xm1,2 real m_1^2,m_2^2 * * piDpj(3,3) real dotproducts between s1,s2,p * * ier integer digits lost so far * * Output: cb1 complex B1 * * ier integer digits lost * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE PRECISION xp,xm1,xm2,piDpj(3,3) DOUBLE COMPLEX cb1,cb0,ca0i(2) * * local variables * DOUBLE PRECISION dm1m2 * * common blocks * #include "ff.h" * * #] declarations: * #[ get differences: dm1m2 = xm1 - xm2 * #] get differences: * #[ call ffxb1a: call ffxb1a(cb1,cb0,ca0i,xp,xm1,xm2,dm1m2,piDpj,ier) * #] call ffxb1a: *###] ffxb1: end *###[ ffxb1a: subroutine ffxb1a(cb1,cb0,ca0i,xp,xm1,xm2,dm1m2,piDpj,ier) ***#[*comment:*********************************************************** * * * Calculate 1 / d^n Q Q(mu) * * ------ | ------------------------ = B1*p(mu) * * i pi^2 / (Q^2-m1^2)((Q+p)^2-m2^2) * * * * Input: cb0 complex scalar twopoint function * * ca0i(2) complex scalar onepoint function with * * m1,m2 * * xp real p.p in B&D metric * * xm1,2 real m_1^2,m_2^2 * * piDpj(3,3) real dotproducts between s1,s2,p * * ier integer digits lost so far * * Output: cb1 complex B1 * * ier integer digits lost * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE PRECISION xp,xm1,xm2,dm1m2,piDpj(3,3) DOUBLE COMPLEX cb1,cb0,ca0i(2) * * local variables * logical lneg DOUBLE PRECISION xmax,absc,s,s1,h,slam,bnd101,bnd105,bnd110, + xma,xmb,x,ax,xlogm,small,dmbma,xprec,xlam,ts2Dp, + xmxp,xlo3,dfflo3 DOUBLE COMPLEX cs(5),cc,csom DOUBLE PRECISION ffbnd,dfflo1 external ffbnd,dfflo1,dfflo3 save xprec,bnd101,bnd105,bnd110 * * common blocks * #include "ff.h" * * statement function * absc(cc) = abs(DBLE(cc)) + abs(DIMAG(cc)) * * data * data xprec /0D0/ * * #] declarations: * #[ p^2 != 0: if ( xp .ne. 0 ) then * #[ normal case: if ( dm1m2 .ne. 0 ) then cs(1) = -ca0i(2) cs(2) = +ca0i(1) else cs(1) = 0 cs(2) = 0 endif cs(3) = +DBLE(2*piDpj(1,3))*cb0 cb1 = cs(1) + cs(2) + cs(3) xmax = max(absc(cs(2)),absc(cs(3))) if ( absc(cb1) .ge. xloss*xmax ) goto 110 * #] normal case: * #[ almost equal masses: if ( abs(dm1m2) .le. xloss*xm1 ) then cs(2) = DBLE(dm1m2/xm1)*cs(2) cs(1) = -xm2*dfflo1(-dm1m2/xm2,ier) cb1 = cs(1) + cs(2) + cs(3) xmax = max(absc(cs(2)),absc(cs(3))) if ( absc(cb1) .ge. xloss*xmax ) goto 110 * for the perfectionist (not me (today)): * if d0=0 and mu~m1(~m2), then the terms of order * (m1^2-m2^2) also cancel. To patch this I need d0 and mu endif * #] almost equal masses: * #[ p2 -> 0: if ( xloss**2*max(xm1,xm2) .gt. abs(xp) ) then if ( xm2.gt.xm1 ) then xma = xm1 xmb = xm2 ts2Dp = +2*piDpj(2,3) lneg = .FALSE. else xma = xm2 xmb = xm1 ts2Dp = -2*piDpj(1,3) lneg = .TRUE. endif else goto 100 endif * * We found a situation in which p2 is much smaller than * the masses. * dmbma = abs(dm1m2) if ( xma.eq.0 ) then xlogm = 1 elseif ( dmbma .gt. xloss*xmb ) then xlogm = log(xmb/xma) else xlogm = dfflo1(-dmbma/xma,ier) endif xlam = (dmbma-xp)**2 - 4*xma*xp if ( xlam.gt.0 ) then * #[ real roots: slam = sqrt(xlam) small = xp*(-2*(xma+xmb) + xp)/(slam+dmbma) h = slam+2*piDpj(1,2) cs(1) = xlogm*xma*(4*xmb*(small-xp) + (small-xp)**2)/(2* + (slam+dmbma)*h) if ( xprec.ne.precx ) then xprec = precx bnd101 = ffbnd(2,1,xinfac) bnd105 = ffbnd(2,5,xinfac) bnd110 = ffbnd(2,10,xinfac) endif x = xp/slam ax = abs(x) if ( ax.gt.bnd110 ) then s = x*(xinfac(12) + x*(xinfac(13) + x*(xinfac(14) + + x*(xinfac(15) + x*xinfac(16) )))) else s = 0 endif if ( ax.gt.bnd105 ) then s = x*(xinfac(7) + x*(xinfac(8) + x*(xinfac(9) + + x*(xinfac(10) + x*(xinfac(11) + s ))))) endif if ( ax.gt.bnd101) then s = x*(xinfac(3) + x*(xinfac(4) + x*(xinfac(5) + + x*(xinfac(6) + s )))) endif s = x**2*(.5D0 + s) h = ts2Dp + slam s1 = 2*xp/h*(s + x) h = -4*xp**2*xmb/(slam*h**2) - s + s1 if ( abs(h) .lt. .1 ) then cs(2) = dmbma*slam/xp*dfflo1(h,ier) else goto 100 endif if ( lneg ) then cs(1) = -cs(1) cs(2) = -cs(2) endif cs(3) = -DBLE(xp)*cb0 cb1 = cs(1) + cs(2) + cs(3) xmax = max(absc(cs(2)),absc(cs(3))) if ( absc(cb1) .gt. xloss*xmax) goto 110 * * this still occurs in the case xp << dmamb << xma, * with a cancellation of order dmamb/xma between cs1 and * cs2; as the standard model does not contain these kind * of doublets I leave this as an exercise for the * reader... * * #] real roots: else * #[ imaginary roots: * #] imaginary roots: endif * #] p2 -> 0: * #[ give up: * * give up... * 100 continue 110 continue * #] give up: cb1 = cb1*(1/DBLE(2*xp)) * #] p^2 != 0: * #[ p^2=0, m1 != m2: elseif ( dm1m2 .ne. 0 ) then cs(1) = +DBLE(xm2/(2*dm1m2**2))*(ca0i(2)+DBLE(xm2)/2) cs(2) = -DBLE(xm1/(2*dm1m2**2))*(ca0i(1)+DBLE(xm1)/2) cs(3) = +ca0i(2)*(1/DBLE(dm1m2)) cb1 = cs(1) + cs(2) + cs(3) xmax = max(absc(cs(1)),absc(cs(2)),absc(cs(3))) if ( absc(cb1).ge.xloss**2*xmax ) goto 120 * * m1 ~ m2, see b21.frm * if ( abs(dm1m2).lt.xloss*xm1 ) then xlogm = dfflo1(dm1m2/xm1,ier) else xlogm = log(xm2/xm1) endif cs(1) = -(xm1/dm1m2)/2 cs(2) = -xlogm/2*(xm1/dm1m2)**2 cs(3) = +1/DBLE(4) - ca0i(1)*DBLE(1/(2*xm1)) cs(4) = xlogm/2 csom = cs(1) + cs(2) + cs(3) + cs(4) xmxp = max(absc(cs(2)),absc(cs(3)),absc(cs(4))) if ( xmxp.lt.xmax ) then xmax = xmxp cb1 = csom if ( absc(cb1).gt.xloss**2*xmax ) goto 120 endif * * better * xlo3 = dfflo3(dm1m2/xm1,ier) cs(1) = -(dm1m2/xm1)**2/4 cs(2) = -(dm1m2/xm1)/2 cs(3) = -xlo3/(dm1m2/xm1)**2/2 cs(4) = xlo3/2 cs(5) = 1/DBLE(2) - ca0i(1)*DBLE(1/(2*xm1)) csom = cs(1) + cs(2) + cs(3) + cs(4) + cs(5) xmxp = max(absc(cs(2)),absc(cs(3)),absc(cs(4)),absc(cs(5))) if ( xmxp.lt.xmax ) then xmax = xmxp cb1 = csom if ( absc(cb1).gt.xloss**2*xmax ) goto 120 endif * * give up * 120 continue * #] p^2=0, m1 != m2: * #[ p^2=0, m1 == m2: else cb1 = -cb0/2 endif * #] p^2=0, m1 == m2: *###] ffxb1a: end herwig++-2.6.0.orig/Looptools/B/ffdel2.F0000644000175000017500000003447611754474774020441 0ustar sylvestresylvestre#include "externals.h" *###[ ffdel2: subroutine ffdel2(del2,piDpj,ns,i1,i2,i3,lerr,ier) ************************************************************************* * calculate in a numerically stable way * * del2(piDpj(i1,i1),piDpj(i2,i2),piDpj(i3,i3)) = * * = piDpj(i1,i1)*piDpj(i2,i2) - piDpj(i1,i2)^2 * * = piDpj(i1,i1)*piDpj(i3,i3) - piDpj(i1,i3)^2 * * = piDpj(i2,i2)*piDpj(i3,i3) - piDpj(i2,i3)^2 * * ier is the usual error flag. * ************************************************************************* implicit none * * arguments: * integer ns,i1,i2,i3,lerr,ier DOUBLE PRECISION del2,piDpj(ns,ns) * * local variables * DOUBLE PRECISION s1,s2 * * common blocks * #include "ff.h" * * calculations * idsub = idsub + 1 if ( abs(piDpj(i1,i2)) .lt. abs(piDpj(i1,i3)) .and. + abs(piDpj(i1,i2)) .lt. abs(piDpj(i2,i3)) ) then s1 = piDpj(i1,i1)*piDpj(i2,i2) s2 = piDpj(i1,i2)**2 elseif ( abs(piDpj(i1,i3)) .lt. abs(piDpj(i2,i3)) ) then s1 = piDpj(i1,i1)*piDpj(i3,i3) s2 = piDpj(i1,i3)**2 else s1 = piDpj(i2,i2)*piDpj(i3,i3) s2 = piDpj(i2,i3)**2 endif del2 = s1 - s2 if ( abs(del2) .lt. xloss*s2 ) then if ( lerr .eq. 0 ) then * we know we have another chance if ( del2.ne.0 ) then ier = ier + int(log10(xloss*abs(s2/del2))) else ier = ier + int(log10(xloss*abs(s2)/xclogm)) endif endif endif *###] ffdel2: end *###[ ffdl2p: subroutine ffdl2p(delps1,xpi,dpipj,piDpj, + ip1,ip2,ip3,is1,is2,is3,ns) ***#[*comment:*********************************************************** * * * calculate in a numerically stable way * * delta_{ip1,is2}^{ip1,ip2} * * ier is the usual error flag. * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ns,ip1,ip2,ip3,is1,is2,is3 DOUBLE PRECISION delps1,xpi(ns),dpipj(ns,ns),piDpj(ns,ns) * * local variables * DOUBLE PRECISION s1,s2,s3,xmax,som * * common blocks * #include "ff.h" * #] declarations: * #[ stupid tree: * 1 s1 = xpi(ip1)*piDpj(ip2,is2) s2 = piDpj(ip1,ip2)*piDpj(ip1,is2) delps1 = s1 - s2 if ( abs(delps1) .ge. xloss*abs(s1) ) goto 100 som = delps1 xmax = abs(s1) * 2 s1 = piDpj(ip1,ip2)*piDpj(ip3,is2) s2 = piDpj(ip1,ip3)*piDpj(ip2,is2) delps1 = s1 - s2 if ( abs(delps1) .ge. xloss*abs(s1) ) goto 100 if ( abs(s1) .lt. xmax ) then som = delps1 xmax = abs(s1) endif * 3 s1 = piDpj(ip1,ip3)*piDpj(ip1,is2) s2 = xpi(ip1)*piDpj(ip3,is2) delps1 = s1 - s2 if ( abs(delps1) .ge. xloss*abs(s1) ) goto 100 if ( abs(s1) .lt. xmax ) then som = delps1 xmax = abs(s1) endif * 4 s1 = xpi(ip1)*piDpj(ip2,is1) s2 = piDpj(ip1,is1)*piDpj(ip1,ip2) delps1 = s1 - s2 if ( abs(delps1) .ge. xloss*abs(s1) ) goto 100 if ( abs(s1) .lt. xmax ) then som = delps1 xmax = abs(s1) endif * 5 s1 = piDpj(ip1,is2)*piDpj(ip2,is1) s2 = piDpj(ip1,is1)*piDpj(ip2,is2) delps1 = s1 - s2 if ( abs(delps1) .ge. xloss*abs(s1) ) goto 100 if ( abs(s1) .lt. xmax ) then som = delps1 xmax = abs(s1) endif * 6 s1 = piDpj(ip1,ip2)*piDpj(ip3,is1) s2 = piDpj(ip1,ip3)*piDpj(ip2,is1) delps1 = s1 - s2 if ( abs(delps1) .ge. xloss*abs(s1) ) goto 100 if ( abs(s1) .lt. xmax ) then som = delps1 xmax = abs(s1) endif * 7 s1 = piDpj(ip2,is2)*piDpj(ip3,is1) s2 = piDpj(ip2,is1)*piDpj(ip3,is2) delps1 = s1 - s2 if ( abs(delps1) .ge. xloss*abs(s1) ) goto 100 if ( abs(s1) .lt. xmax ) then som = delps1 xmax = abs(s1) endif * 8 s1 = piDpj(ip1,ip3)*piDpj(ip1,is1) s2 = xpi(ip1)*piDpj(ip3,is1) delps1 = s1 - s2 if ( abs(delps1) .ge. xloss*abs(s1) ) goto 100 if ( abs(s1) .lt. xmax ) then som = delps1 xmax = abs(s1) endif * 9 s1 = piDpj(ip1,is1)*piDpj(ip3,is2) s2 = piDpj(ip1,is2)*piDpj(ip3,is1) delps1 = s1 - s2 if ( abs(delps1) .ge. xloss*abs(s1) ) goto 100 if ( abs(s1) .lt. xmax ) then som = delps1 xmax = abs(s1) endif *10 22-nov-1993 yet another one if ( dpipj(1,1).eq.0 ) then s1 = +xpi(ip1)*dpipj(is3,is2)/2 s2 = -piDpj(ip1,ip2)*dpipj(is2,is1)/2 s3 = +xpi(ip1)*piDpj(ip2,ip3)/2 delps1 = s1+s2+s3 if ( abs(delps1) .ge. xloss*max(abs(s1),abs(s2)) ) goto 100 if ( max(abs(s1),abs(s2)) .lt. xmax ) then som = delps1 xmax = abs(s1) endif endif * NO possibility delps1 = som 100 continue * #] stupid tree: *###] ffdl2p: end *###[ ffdl2s: subroutine ffdl2s(delps1,piDpj,in,jn,jin,isji, + kn,ln,lkn,islk,ns) ***#[*comment:*********************************************************** * * * calculate in a numerically stable way * * * * \delta_{si,sj}^{sk,sl} * * * * with p(ji) = isji*(sj-si) * * p(lk) = islk*(sl-sk) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer in,jn,jin,isji,kn,ln,lkn,islk,ns DOUBLE PRECISION delps1,piDpj(ns,ns) * * local variables * integer ii,jj,i,j,ji,k,l,lk,ihlp DOUBLE PRECISION s1,s2,som,smax * * common blocks * #include "ff.h" * #] declarations: * #[ stupid tree: idsub = idsub + 1 som = 0 smax = 0 i = in j = jn ji = jin k = kn l = ln lk = lkn do 20 ii=1,3 do 10 jj=1,3 s1 = piDpj(i,k)*piDpj(j,l) s2 = piDpj(i,l)*piDpj(j,k) delps1 = s1 - s2 if ( ii .gt. 1 ) delps1 = isji*delps1 if ( jj .gt. 1 ) delps1 = islk*delps1 if ( ii .eq. 3 .neqv. jj .eq. 3 ) delps1 = -delps1 if ( abs(delps1) .ge. xloss*abs(s1) ) goto 30 * * Save the most accurate estimate so far: if ( ii .eq. 1 .and. jj .eq. 1 .or. abs(s1) .lt. smax + ) then som = delps1 smax = abs(s1) endif * * rotate the jj's if ( lk .eq. 0 ) goto 20 ihlp = k k = l l = lk lk = ihlp 10 continue * * and the ii's if ( ji .eq. 0 ) goto 25 ihlp = i i = j j = ji ji = ihlp 20 continue 25 continue delps1 = som 30 continue * #] stupid tree: *###] ffdl2s: end *###[ ffdl2t: subroutine ffdl2t(delps,piDpj,in,jn,kn,ln,lkn,islk,iss,ns) ***#[*comment:*********************************************************** * * * calculate in a numerically stable way * * * * \delta_{si,sj}^{sk,sl} * * * * with p(lk) = islk*(iss*sl - sk) (islk,iss = +/-1) * * and NO relationship between s1,s2 assumed (so 1/2 the * * possibilities of ffdl2s). * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer in,jn,kn,ln,lkn,islk,iss,ns DOUBLE PRECISION delps,piDpj(ns,ns) * * local variables * DOUBLE PRECISION s1,s2,som,smax * * common blocks * #include "ff.h" * #] declarations: * #[ calculations: if ( in .eq. jn ) then delps = 0 return endif s1 = piDpj(kn,in)*piDpj(ln,jn) s2 = piDpj(ln,in)*piDpj(kn,jn) delps = s1 - s2 if ( abs(delps) .ge. xloss*abs(s1) ) goto 20 som = delps smax = abs(s1) s1 = piDpj(kn,in)*piDpj(lkn,jn) s2 = piDpj(lkn,in)*piDpj(kn,jn) delps = iss*islk*(s1 - s2) if ( abs(delps) .ge. xloss*abs(s1) ) goto 20 if ( abs(s1) .lt. smax ) then som = delps smax = abs(s1) endif s1 = piDpj(lkn,in)*piDpj(ln,jn) s2 = piDpj(ln,in)*piDpj(lkn,jn) delps = islk*(- s1 + s2) if ( abs(delps) .ge. xloss*abs(s1) ) goto 20 if ( abs(s1) .lt. smax ) then som = delps smax = abs(s1) endif * * give up * delps = som 20 continue * #] calculations: *###] ffdl2t: end *###[ ffdl3m: subroutine ffdl3m(del3mi,ldel,del3,del2,xpi,dpipj,piDpj,ns,ip1n, + ip2n,ip3n,is,itime) ***#[*comment:*********************************************************** * * * Calculate xpi(i)*del2 - del3(piDpj) * * * * / si mu \2 (This appears to be one of the harder * * = | d | determinants to calculate accurately. * * \ p1 p2 / Note that we allow a loss of xloss^2) * * * * Input: ldel iff .true. del2 and del3 exist * * del3 \delta^{s(1),p1,p2}_{s(1),p1,p2} * * del2 \delta^{p1,p2}_{p1,p2} * * xpi(ns) standard * * dpipj(ns,ns) standard * * piDpj(ns,ns) standard * * ipi pi = xpi(abs(ipi)) [p3=-p1 +/-p2] * * is si = xpi(is,is+1,..,is+itime-1) * * itime number of functions to calculate * * * * Output: del3mi(3) (\delta^{s_i \mu}_{p_1 p_2})^2 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ns,ip1n,ip2n,ip3n,is,itime logical ldel DOUBLE PRECISION del3mi(itime),del3,del2,xpi(ns),dpipj(ns,ns), + piDpj(ns,ns) * * local variables: * DOUBLE PRECISION s(7),som,smax,xsom,xmax integer i,j,k,ip1,ip2,ip3,ipn,is1,is2,isi,is3,ihlp,iqn, + jsgn1,jsgn2,jsgn3,jsgnn,iadj(10,10,3:4),init,nm save iadj,init logical lmax,ltwist * * common blocks: * #include "ff.h" * * data * data iadj /200*0/ data init /0/ * #] declarations: * #[ initialisations: if ( init .eq. 0 ) then init = 1 * * Fill the array with adjacent values: if * x = iadj(i,j) * k = abs(mod(k,100)) * jsgnk = sign(x) * jsgnj = 1-2*theta(x-100) (ie -1 iff |x|>100) * then * pi(k) = jsgnk*( p(i) - jsgnj*pi(j) ) * do 5 nm=3,4 do 4 i=1,nm is1 = i is2 = i+1 if ( is2 .gt. nm ) is2 = 1 is3 = i-1 if ( is3 .eq. 0 ) is3 = nm ip1 = is1 + nm iadj(is1,is2,nm) = -ip1 iadj(is2,is1,nm) = ip1 iadj(ip1,is2,nm) = -is1 iadj(is2,ip1,nm) = is1 iadj(is1,ip1,nm) = 100+is2 iadj(ip1,is1,nm) = 100+is2 if ( nm .eq. 3 ) then iadj(ip1,is2+3,3) = -100-is3-3 iadj(is2+3,ip1,3) = -100-is3-3 endif 4 continue 5 continue iadj(3,1,4) = -9 iadj(1,3,4) = 9 iadj(9,1,4) = -3 iadj(1,9,4) = 3 iadj(3,9,4) = 100+1 iadj(9,3,4) = 100+1 iadj(2,4,4) = -10 iadj(4,2,4) = 10 iadj(10,4,4) = -2 iadj(4,10,4) = 2 iadj(2,10,4) = 100+4 iadj(10,2,4) = 100+4 endif if ( ns .eq. 6 ) then nm = 3 else nm = 4 endif * #] initialisations: * #[ easy tries: do 40 i=1,itime isi = i+is-1 lmax = .FALSE. * * get xpi(isi)*del2 - del3 ... if del3 and del2 are defined * if ( ldel ) then s(1) = xpi(isi)*del2 som = s(1) - del3 smax = abs(s(1)) if ( abs(som) .ge. xloss**2*smax ) goto 35 xsom = som xmax = smax lmax = .TRUE. endif ip1 = ip1n ip2 = ip2n ip3 = ip3n do 20 j=1,3 * * otherwise use the simple threeterm formula * s(1) = xpi(ip2)*piDpj(ip1,isi)**2 s(2) = xpi(ip1)*piDpj(ip2,isi)*piDpj(ip2,isi) s(3) = -2*piDpj(ip2,isi)*piDpj(ip2,ip1)*piDpj(ip1,isi) som = s(1) + s(2) + s(3) smax = max(abs(s(1)),abs(s(2)),abs(s(3))) if ( abs(som) .ge. xloss**2*smax ) goto 35 if ( .not. lmax .or. smax .lt. xmax ) then xsom = som xmax = smax lmax = .TRUE. endif * * if there are cancellations between two of the terms: * we try mixing with isi. * * First map cancellation to s(2)+s(3) (do not mess up * rotations...) * if ( abs(s(1)+s(3)) .lt. abs(s(3))/2 ) then ihlp = ip1 ip1 = ip2 ip2 = ihlp som = s(1) s(1) = s(2) s(2) = som ltwist = .TRUE. else ltwist = .FALSE. endif if ( abs(s(2)+s(3)) .lt. abs(s(3))/2 ) then * * switch to the vector pn so that si = jsgn1*p1 + jsgnn*pn * k = iadj(isi,ip1,nm) if ( k .ne. 0 ) then ipn = abs(k) jsgnn = isign(1,k) if ( ipn .gt. 100 ) then ipn = ipn - 100 jsgn1 = -1 else jsgn1 = +1 endif if (abs(dpipj(ipn,isi)).lt.xloss*abs(piDpj(ip1,isi)) + .and. + abs(piDpj(ipn,ip2)).lt.xloss*abs(piDpj(ip2,isi)) + ) then * same: s(1) = xpi(ip2)*piDpj(ip1,isi)**2 s(2) = jsgnn*piDpj(isi,ip2)*piDpj(ipn,ip2)* + xpi(ip1) s(3) = jsgn1*piDpj(isi,ip2)*piDpj(ip1,ip2)* + dpipj(ipn,isi) som = s(1) + s(2) + s(3) smax = max(abs(s(1)),abs(s(2)),abs(s(3))) if ( abs(som) .ge. xloss**2*smax ) goto 35 if ( smax .lt. xmax ) then xsom = som xmax = smax endif * * there may be a cancellation between s(1) and * s(2) left. Introduce a vector q such that * pn = jsgnq*q + jsgn2*p2. We also need the sign * jsgn3 in p3 = -p1 - jsgn3*p2 * k = iadj(ipn,ip2,nm) if ( k .ne. 0 ) then iqn = abs(k) if ( iqn .gt. 100 ) then iqn = iqn - 100 jsgn2 = -1 else jsgn2 = +1 endif k = iadj(ip1,ip2,nm) if ( k .eq. 0 .or. k .lt. 100 ) then * we have p1,p2,p3 all p's jsgn3 = +1 elseif ( k .lt. 0 ) then * ip1,ip2 are 2*s,1*p such that p2-p1=ip3 jsgn3 = -1 else jsgn3 = 0 endif * we need one condition on the signs for this * to work if ( ip3.ne.0 .and. jsgn1*jsgn2.eq.jsgnn* + jsgn3 .and. abs(s(3)).lt.xloss*smax ) then s(1) = piDpj(ip1,isi)**2*dpipj(iqn,ipn) s(2) = -jsgn2*jsgn1*piDpj(ipn,ip2)* + piDpj(ip1,isi)*dpipj(ipn,isi) * s(3) stays the same s(4) = -jsgn2*jsgn1*piDpj(ipn,ip2)* + xpi(ip1)*piDpj(isi,ip3) som = s(1) + s(2) + s(3) + s(4) smax =max(abs(s(1)),abs(s(2)),abs(s(3)), + abs(s(4))) if ( abs(som).ge.xloss**2*smax ) goto 35 if ( smax .lt. xmax ) then xsom = som xmax = smax endif endif endif endif endif k = iadj(isi,ip2,nm) if ( k .ne. 0 ) then ipn = abs(k) jsgnn = isign(1,k) if ( ipn .gt. 100 ) then jsgn1 = -1 ipn = ipn - 100 else jsgn1 = +1 endif if (abs(dpipj(ipn,isi)).lt.xloss*abs(piDpj(ip2,isi)) + .and. + abs(piDpj(ipn,ip1)).lt.xloss*abs(piDpj(ip1,isi)) + ) then s(1) = jsgnn*piDpj(isi,ip1)*piDpj(ipn,ip1)* + xpi(ip2) s(2) = xpi(ip1)*piDpj(ip2,isi)**2 s(3) = jsgn1*piDpj(isi,ip1)*piDpj(ip2,ip1)* + dpipj(ipn,isi) som = s(1) + s(2) + s(3) smax = max(abs(s(1)),abs(s(2)),abs(s(3))) print *,' (isi+ip2) with isi,ip1,ip2,ipn: ', + isi,ip1,ip2,ipn if ( abs(som) .ge. xloss**2*smax ) goto 35 if ( smax .lt. xmax ) then xsom = som xmax = smax endif endif endif endif * * rotate the ipi * if ( ip3 .eq. 0 ) goto 30 if ( j .ne. 3 ) then if ( .not. ltwist ) then ihlp = ip1 ip1 = ip2 ip2 = ip3 ip3 = ihlp else ihlp = ip2 ip2 = ip3 ip3 = ihlp endif endif 20 continue 30 continue * #] easy tries: * #[ choose the best value: * * These values are the best found: * som = xsom smax = xmax 35 continue del3mi(i) = som 40 continue * #] choose the best value: *###] ffdl3m: end herwig++-2.6.0.orig/Looptools/B/ffxb0.F0000644000175000017500000005526411754474774020302 0ustar sylvestresylvestre#include "externals.h" *###[ ffxb0: subroutine ffxb0(cb0,xp,xma,xmb,ier) ***#[*comment:*********************************************************** * * * Calculates the the two-point function (cf 't Hooft and Veltman) * * we include an overall factor 1/(i*pi^2) relative to FormF * * * * Input: xp (real) k2, in B&D metric * * xma (real) mass2 * * xmb (real) mass2 * * * * Output: cb0 (complex) B0, the two-point function, * * ier (integer) # of digits lost, if >=100: error * * * * Calls: ffxb0p * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cb0 DOUBLE PRECISION xp,xma,xmb * * local variables * DOUBLE COMPLEX cb0p DOUBLE PRECISION dmamb,dmap,dmbp,xm * * common blocks * #include "ff.h" * * #] declarations: * #[ get differences: dmamb = xma - xmb dmap = xma - xp dmbp = xmb - xp * #] get differences: * #[ calculations: call ffxb0p(cb0p,xp,xma,xmb,dmap,dmbp,dmamb,ier) if ( xma .eq. 0 ) then if ( xmb .eq. 0 ) then xm = 1D0 else xm = xmb**2 endif elseif ( xmb .eq. 0 ) then xm = xma**2 else xm = xma*xmb endif if ( mudim .ne. 0 ) xm = xm/mudim**2 if ( abs(xm) .gt. xalogm ) then cb0 = DBLE(delta - log(xm)/2D0) - cb0p else call fferr(4,ier) cb0 = DBLE(delta) - cb0p endif * #] calculations: *###] ffxb0: end *###[ ffxb0p: subroutine ffxb0p(cb0p,xp,xma,xmb,dmap,dmbp,dmamb,ier) ***#[*comment:*********************************************************** * * * calculates the two-point function (see 't Hooft and * * Veltman) for all possible cases: masses equal, unequal, * * equal to zero. * * * * Input: xp (real) p.p, in B&D metric * * xma (real) mass2, * * xmb (real) mass2, * * dm[ab]p (real) xm[ab] - xp * * dmamb (real) xma - xmb * * * * Output: cb0p (complex) B0, the two-point function, minus * * log(xm1*xm2)/2, delta and ipi^2 * * ier (integer) 0=ok, 1=numerical problems, 2=error * * * * Calls: ffxb0q. * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cb0p DOUBLE PRECISION xp,xma,xmb,dmap,dmbp,dmamb * * local variables * integer i,initeq,initn1,jsign DOUBLE PRECISION ax,ay,ffbnd, + xprceq,bdeq01,bdeq05,bdeq11,bdeq17, + xprcn1,bdn101,bdn105,bdn110,bdn115, + xprnn2,bdn205,bdn210,bdn215,bdn220, + xprcn3,bdn301,bdn305,bdn310,bdn315, + xprcn5,bdn501,bdn505,bdn510,bdn515, + absc DOUBLE PRECISION xm,dmp,xm1,xm2,dm1m2,dm1p, + dm2p,s,s1,s1a,s1b,s1p,s2,s2a,s2b,s2p,x,y,som, + xlam,slam,xlogmm,alpha,alph1,xnoe,xpneq(30), + xpnn1(30),xx,xtel,dfflo1 DOUBLE COMPLEX cs2a,cs2b,cs2p,c,cx external ffbnd,dfflo1 save initeq,initn1,xpneq,xpnn1, + xprceq,bdeq01,bdeq05,bdeq11,bdeq17, + xprcn1,bdn101,bdn105,bdn110,bdn115, + xprnn2,bdn205,bdn210,bdn215,bdn220, + xprcn3,bdn301,bdn305,bdn310,bdn315, + xprcn5,bdn501,bdn505,bdn510,bdn515 * * common blocks * #include "ff.h" * * data * data xprceq /-1D0/ data xprcn1 /-1D0/ data xprnn2 /-1D0/ data xprcn3 /-1D0/ data xprcn5 /-1D0/ data initeq /0/ data initn1 /0/ * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ fill some dotproducts: if ( ldot ) then call ffdot2(fpij2,xp,xma,xmb,dmap,dmbp,dmamb,ier) endif * #] fill some dotproducts: * #[ which case: * * sort according to the type of masscombination encountered: * 100: both masses zero, 200: one equal to zero, 300: both equal * 400: rest. * if ( xma .eq. 0 ) then if ( xmb .eq. 0 ) then goto 100 endif xm = xmb dmp = dmbp goto 200 endif if ( xmb .eq. 0 ) then xm = xma dmp = dmap goto 200 elseif ( dmamb .eq. 0 ) then xm = xma dmp = dmap goto 300 elseif ( xma .gt. xmb ) then xm2 = xma xm1 = xmb dm1m2 = -dmamb dm1p = dmbp dm2p = dmap else xm1 = xma xm2 = xmb dm1m2 = dmamb dm1p = dmap dm2p = dmbp endif goto 400 * #] which case: * #[ both masses equal to zero: 100 continue if ( xp .lt. -xalogm ) then cb0p = log(-xp) - 2 elseif ( xp .gt. xalogm ) then cb0p = DCMPLX( DBLE(log(xp) - 2), DBLE(-pi) ) else cb0p = 0 call fferr(7,ier) endif return * #] both masses equal to zero: * #[ one mass equal to zero: 200 continue * * special case xp = 0 * if ( xp .eq. 0 ) then cb0p = -1 goto 990 * * special case xp = xm * elseif ( dmp.eq.0 ) then cb0p = -2 goto 990 endif * * Normal case: * s1 = xp/xm if ( abs(s1) .lt. xloss ) then s = dfflo1(s1,ier) else s = log(abs(dmp/xm)) endif s = -s*dmp/xp cb0p = s - 2 if ( xp .gt. xm ) + cb0p = cb0p - DCMPLX(0D0,-(dmp/xp)*pi) goto 990 * #] one mass equal to zero: * #[ both masses equal: 300 continue * * Both masses are equal. Not only this speeds up things, some * cancellations have to be avoided as well. * * first a special case * if ( abs(xp) .lt. 8*xloss*xm ) then * -#[ taylor expansion: * * a Taylor expansion seems appropriate as the result will go * as k^2 but seems to go as 1/k !! * *--#[ data and bounds: if ( initeq .eq. 0 ) then initeq = 1 xpneq(1) = 1D0/6D0 do 1 i=2,30 xpneq(i) = - xpneq(i-1)*DBLE(i-1)/DBLE(2*(2*i+1)) 1 continue endif if (xprceq .ne. precx ) then * * calculate the boundaries for the number of terms to be * included in the taylorexpansion * xprceq = precx bdeq01 = ffbnd(1,1,xpneq) bdeq05 = ffbnd(1,5,xpneq) bdeq11 = ffbnd(1,11,xpneq) bdeq17 = ffbnd(1,17,xpneq) endif *--#] data and bounds: x = -xp/xm ax = abs(x) if ( ax .gt. bdeq17 ) then som = x*(xpneq(18) + x*(xpneq(19) + x*(xpneq(20) + + x*(xpneq(21) + x*(xpneq(22) + x*(xpneq(23) + + x*(xpneq(24) + x*xpneq(25) ))))))) else som = 0 endif if ( ax .gt. bdeq11 ) then som = x*(xpneq(12) + x*(xpneq(13) + x*(xpneq(14) + + x*(xpneq(15) + x*(xpneq(16) + x*(xpneq(17) + som )))) + )) endif if ( ax .gt. bdeq05 ) then som = x*(xpneq(6) + x*(xpneq(7) + x*(xpneq(8) + x*( + xpneq(9) + x*(xpneq(10) + x*(xpneq(11) + som )))))) endif if ( ax .gt. bdeq01 ) then som = x*(xpneq(2) + x*(xpneq(3) + x*(xpneq(4) + x*( + xpneq(5) + som )))) endif cb0p = x*(xpneq(1)+som) goto 990 * -#] taylor expansion: endif * -#[ normal case: * * normal case * call ffxlmb(xlam,-xp,-xm,-xm,dmp,dmp,0D0) if ( xlam .ge. 0 ) then * cases 1,2 and 4 slam = sqrt(xlam) s2a = dmp + xm s2 = s2a + slam if ( abs(s2) .gt. xloss*slam ) then * looks fine jsign = 1 else s2 = s2a - slam jsign = -1 endif ax = abs(s2/(2*xm)) if ( ax .lt. xalogm ) then s = 0 elseif( ax-1 .lt. .1 .and. s2 .gt. 0 ) then * In this case a quicker and more accurate way is to * calculate log(1-x). s2 = (xp - slam) * the following line is superfluous. s = -slam/xp*dfflo1(s2/(2*xm),ier) else * finally the normal case s = -slam/xp*log(ax) if ( jsign .eq. -1 ) s = -s endif if ( xp .gt. 2*xm ) then * in this case ( xlam>0, so xp>(2*m)^2) ) there also * is an imaginary part y = -pi*slam/xp else y = 0 endif else * the root is complex (k^2 between 0 and (2*m1)^2) slam = sqrt(-xlam) s = 2*slam/xp*atan2(xp,slam) y = 0 endif xx = s - 2 cb0p = DCMPLX(DBLE(xx),DBLE(y)) goto 990 * -#] normal case: * * #] both masses equal: * #[ unequal nonzero masses: * -#[ get log(xm2/xm1): 400 continue x = xm2/xm1 if ( 1 .lt. xalogm*x ) then call fferr(8,ier) xlogmm = 0 elseif ( abs(x-1) .lt. xloss ) then xlogmm = dfflo1(dm1m2/xm1,ier) else xlogmm = log(x) endif * -#] get log(xm2/xm1): * -#[ xp = 0: * * first a special case * if ( xp .eq. 0 ) then s2 = ((xm2+xm1) / dm1m2)*xlogmm s = - s2 - 2 * save the factor 1/2 for the end if ( abs(s) .lt. xloss*2 ) then * Taylor expansions: choose which one x = dm1m2/xm1 ax = abs(x) if ( ax .lt. .15 .or. precx .gt. 1.E-8 .and. ax + .lt. .3 ) then * * This is the simple Taylor expansion 'n1' * *--#[ data and bounds: * get the coefficients of the taylor expansion if ( initn1 .eq. 0 ) then initn1 = 1 do 410 i = 1,30 410 xpnn1(i) = DBLE(i)/DBLE((i+1)*(i+2)) endif * determine the boundaries for 1,5,10,15 terms if ( xprcn1 .ne. precx ) then xprcn1 = precx bdn101 = ffbnd(1,1,xpnn1) bdn105 = ffbnd(1,5,xpnn1) bdn110 = ffbnd(1,10,xpnn1) bdn115 = ffbnd(1,15,xpnn1) endif *--#] data and bounds: * calculate: if ( ax .gt. bdn115 ) then s = x*(xpnn1(16) + x*(xpnn1(17) + x*(xpnn1(18) + + x*(xpnn1(19) + x*xpnn1(20) )))) else s = 0 endif if ( ax .gt. bdn110 ) then s = x*(xpnn1(11) + x*(xpnn1(12) + x*(xpnn1(13) + + x*(xpnn1(14) + x*xpnn1(15) + s)))) endif if ( ax .gt. bdn105 ) then s = x*(xpnn1(6) + x*(xpnn1(7) + x*(xpnn1(8) + x* + (xpnn1(9) + x*(xpnn1(10) + s))))) endif if ( ax .gt. bdn101 ) then s = x*(xpnn1(2) + x*(xpnn1(3) + x*(xpnn1(4) + x* + (xpnn1(5) +s)))) endif s = x*x*(xpnn1(1) + s) else * * This is the more complicated Taylor expansion 'fc' * * #[ bounds: * determine the boundaries for 1,5,10,15 terms for * the exponential taylor expansion, assuming it * starts at n=2. * if ( xprnn2 .ne. precx ) then xprnn2 = precx bdn205 = ffbnd(4,5,xinfac) bdn210 = ffbnd(4,10,xinfac) bdn215 = ffbnd(4,15,xinfac) bdn220 = ffbnd(4,20,xinfac) endif * #] bounds: * calculate: y = 2*x/(2-x) ay = abs(y) if ( ay .gt. bdn220 ) then s = y*(xinfac(19) + y*(xinfac(20) + y*(xinfac( + 21) + y*(xinfac(22) + y*xinfac( + 23) )))) else s = 0 endif if ( ay .gt. bdn215 ) then s = y*(xinfac(14) + y*(xinfac(15) + y*(xinfac( + 16) + y*(xinfac(17) + y*(xinfac( + 18) + s))))) endif if ( ay .gt. bdn210 ) then s = y*(xinfac(9) + y*(xinfac(10) + y*(xinfac(11) + + y*(xinfac(12) + y*(xinfac(13) + s))))) endif if ( ay .gt. bdn205 ) then s = y*(xinfac(5) + y*(xinfac(6) + y*(xinfac(7) + + y*(xinfac(8) + s)))) endif s = (1-x)*y**4*(xinfac(4)+s) s = x*y**2*(1+y)/12 - s s = - 2*dfflo1(s,ier)/y endif endif cb0p = s/2 goto 990 endif * -#] xp = 0: * -#[ normal case: * * proceeding with the normal case * call ffxlmb(xlam,-xp,-xm2,-xm1,dm2p,dm1p,dm1m2) if ( xlam .gt. 0 ) then * cases k^2 < -(m2+m1)^2 or k^2 > -(m2-m1)^2: *--#[ first try: * first try the normal way slam = sqrt(xlam) s2a = dm2p + xm1 s2 = s2a + slam if ( abs(s2) .gt. xloss*slam ) then * looks fine jsign = 1 else s2 = s2a - slam jsign = -1 endif s2 = s2**2/(4*xm1*xm2) if ( abs(s2) .lt. xalogm ) then call fferr(9,ier) s2 = 0 elseif ( abs(s2-1) .lt. xloss ) then if ( jsign.eq.1 ) then s2 = -slam*(s2a+slam)/(2*xm1*xm2) s2 = -slam/(2*xp)*dfflo1(s2,ier) else s2 = +slam*(s2a-slam)/(2*xm1*xm2) s2 = +slam/(2*xp)*dfflo1(s2,ier) endif else s2 = -slam/(2*xp)*log(s2) if ( jsign .eq. -1 ) s2 = -s2 endif s1 = -dm1m2*xlogmm/(2*xp) xx = s1+s2-2 *--#] first try: if ( abs(xx) .lt. xloss*max(abs(s1),abs(s2)) ) then *--#[ second try: * this is unacceptable, try a better solution s1a = dm1m2 + slam if ( abs(s1a) .gt. xloss*slam ) then * (strangely) this works s1 = -s1a/(2*xp) else * by division a more accurate form can be found s1 = ( -xp/2 + xm1 + xm2 ) / ( slam - dm1m2 ) endif s1 = s1*xlogmm if ( abs(xp) .lt. xm2 ) then s2a = xp - dm1m2 else s2a = xm2 - dm1p endif s2 = s2a - slam if ( abs(s2) .gt. xloss*slam ) then * at least reasonable s2 = s2 / (2*xm2) else * division again s2 = (2*xp) / (s2a+slam) endif if ( abs(s2) .lt. .1 ) then * choose a quick way to get the logarithm s2 = dfflo1(s2,ier) else s2a = abs(1-s2) s2 = log(s2a) endif s2 = -(slam/xp)*s2 xx = s1 + s2 - 2 *--#] second try: if ( abs(xx) .lt. xloss**2*max(abs(s1),abs(s2)) ) then *--#[ third try: * (we accept two times xloss because that's the same * as in this try) * A Taylor expansion might work. We expand * inside the logs. Only do the necessary work. * alpha = slam/(slam-dm1m2) alph1 = -dm1m2/(slam-dm1m2) * * First s1: * s1p = s1 - 2*alph1 if ( abs(s1p) .lt. xloss*abs(s1) ) then * -#[ bounds: * determine the boundaries for 1,5,10,15 terms if ( xprcn3 .ne. precx ) then xprcn3 = precx bdn301 = ffbnd(3,1,xinfac) bdn305 = ffbnd(3,5,xinfac) bdn310 = ffbnd(3,10,xinfac) bdn315 = ffbnd(3,15,xinfac) endif * -#] bounds: xnoe = -xp + 2*xm1 + 2*xm2 x = 4*dm1m2/xnoe ax = abs(x) if ( ax .gt. bdn310 ) then s1a = x*(xinfac(13) + x*(xinfac(14) + x*( + xinfac(15) + x*(xinfac(16) + x* + xinfac(17) )))) else s1a = 0 endif if ( ax .gt. bdn305 ) then s1a = x*(xinfac(8) + x*(xinfac(9) + x*( + xinfac(10) + x*(xinfac(11) + x*( + xinfac(12) + s1a))))) endif if ( ax .gt. bdn301 ) then s1a = x*(xinfac(4) + x*(xinfac(5) + x*( + xinfac(6) + x*(xinfac(7) + s1a)))) endif s1a = x**3 *(xinfac(3) + s1a) *xm2/xm1 s1b = dm1m2*(4*dm1m2**2 - xp*(4*xm1-xp))/ + (xm1*xnoe**2) s1p = s1b - s1a s1p = xnoe*dfflo1(s1p,ier)/(slam - dm1m2)/2 endif * * next s2: * s2p = s2 - 2*alpha if ( abs(s2p) .lt. xloss*abs(s2) ) then * -#[ bounds: * determine the boundaries for 1,5,10,15 terms if ( xprcn5 .ne. precx ) then xprcn5 = precx bdn501 = ffbnd(4,1,xinfac) bdn505 = ffbnd(4,5,xinfac) bdn510 = ffbnd(4,10,xinfac) bdn515 = ffbnd(4,15,xinfac) endif * -#] bounds: xnoe = slam - dm1m2 x = 2*xp/xnoe ax = abs(x) * do not do the Taylor expansion if ( ax .gt. bdn515 ) goto 495 if ( ax .gt. bdn510 ) then s2a = x*(xinfac(14) + x*(xinfac(15) + x*( + xinfac(16) + x*(xinfac(17) + x* + xinfac(18) )))) else s2a = 0 endif if ( ax .gt. bdn505 ) then s2a = x*(xinfac(9) + x*(xinfac(10) + x*( + xinfac(11) + x*(xinfac(12) + x*( + xinfac(13) + s2a))))) endif if ( ax .gt. bdn501 ) then s2a = x*(xinfac(5) + x*(xinfac(6) + x*( + xinfac(7) + x*(xinfac(8) + s2a)))) endif s2a = x**4*(xinfac(4)+s2a)*(1-2*xp/(xnoe+xp)) s2b = -2*xp**3 *(-2*xp - xnoe)/(3*(xnoe+xp)* + xnoe**3) s2p = s2b - s2a s2p = -slam/xp*dfflo1(s2p,ier) endif * * finally ... * 495 xx = s1p + s2p *--#] third try: endif endif if ( xp .gt. xm1+xm2 ) then *--#[ imaginary part: * in this case ( xlam>0, so xp>(m1+m2)^2) ) there also * is an imaginary part y = -pi*slam/xp else y = 0 *--#] imaginary part: endif else * the root is complex (k^2 between -(m1+m2)^2 and -(m2-m1)^2) *--#[ first try: slam = sqrt(-xlam) xnoe = dm2p + xm1 s1 = -(dm1m2/(2*xp))*xlogmm s2 = (slam/xp)*atan2(slam,xnoe) xx = s1 + s2 - 2 *--#] first try: if ( abs(xx) .lt. xloss**2*max(abs(s1),abs(s2)) ) then *--#[ second try: * Again two times xloss as we'll accept that in the next * step as well. * xtel = dm1m2**2 - xp**2 alpha = -xlam/(2*xp*xnoe) alph1 = xtel/(2*xp*xnoe) * * try a taylor expansion on the terms. First s1: * s1p = s1 - 2*alph1 if ( abs(s1p) .lt. xloss*abs(s1) ) then * -#[ bounds: * determine the boundaries for 1,5,10,15 terms if ( xprcn3 .ne. precx ) then xprcn3 = precx bdn301 = ffbnd(3,1,xinfac) bdn305 = ffbnd(3,5,xinfac) bdn310 = ffbnd(3,10,xinfac) bdn315 = ffbnd(3,15,xinfac) endif * -#] bounds: x = 2*xtel/(dm1m2*xnoe) ax = abs(x) * do not do the Taylor expansion if ( ax .gt. bdn315 ) goto 590 if ( ax .gt. bdn310 ) then s1a = x*(xinfac(13) + x*(xinfac(14) + x*( + xinfac(15) + x*(xinfac(16) + x* + xinfac(17) )))) else s1a = 0 endif if ( ax .gt. bdn305 ) then s1a = x*(xinfac(8) + x*(xinfac(9) + x*( + xinfac(10) + x*(xinfac(11) + x*( + xinfac(12) + s1a))))) endif if ( ax .gt. bdn301 ) then s1a = x*(xinfac(4) + x*(xinfac(5) + x*( + xinfac(6) + x*(xinfac(7) + s1a)))) endif s1a = x**3 *(xinfac(3) + s1a) *xm2/xm1 s1b = (dm1m2**3*(dm1m2**2-2*xp*xm1) + xp**2*(4* + dm1m2*xm1**2-dm1m2**2*(dm1m2+2*xm1))-2*xm2* + xp**3*(dm1m2+xp))/(xm1*dm1m2**2*xnoe**2) s1p = s1b - s1a s1p = -dm1m2*dfflo1(s1p,ier)/(2*xp) endif * * next s2: * 590 continue s2p = s2 - 2*alpha if ( abs(s2p) .lt. xloss*abs(s2) ) then * -#[ bounds: * determine the boundaries for 1,5,10,15 terms if ( xprcn3 .ne. precx ) then xprcn3 = precx bdn301 = ffbnd(3,1,xinfac) bdn305 = ffbnd(3,5,xinfac) bdn310 = ffbnd(3,10,xinfac) bdn315 = ffbnd(3,15,xinfac) endif * -#] bounds: cx = DCMPLX(0D0,-slam/xnoe) ax = absc(cx) if ( ax .gt. bdn315 ) goto 600 if ( ax .gt. bdn310 ) then cs2a = cx*(DBLE(xinfac(13)) + cx*(DBLE(xinfac(14 + )) + cx*(DBLE(xinfac(15)) + cx*(DBLE(xinfac(16 + )) + cx*(DBLE(xinfac(17))))))) else cs2a = 0 endif if ( ax .gt. bdn305 ) then cs2a = cx*(DBLE(xinfac(8)) + cx*(DBLE(xinfac(9)) + + cx*(DBLE(xinfac(10)) + cx*(DBLE(xinfac(11)) + + cx*(DBLE(xinfac(12)) + cs2a))))) endif if ( ax .gt. bdn301 ) then cs2a = cx*(DBLE(xinfac(4)) + cx*(DBLE(xinfac(5)) + + cx*(DBLE(xinfac(6)) + cx*(DBLE(xinfac(7)) + + cs2a)))) endif cs2a = cx**3*(DBLE(xinfac(3))+cs2a)* + DCMPLX(DBLE(xnoe),DBLE(slam)) cs2b = DCMPLX(DBLE(xnoe-xlam/xnoe/2), + -DBLE(slam**3/xnoe**2/2)) cs2p = cs2b + cs2a s2p = slam*atan2(DIMAG(cs2p),DBLE(cs2p))/xp endif 600 continue xx = s1p + s2p *--#] second try: endif y = 0 endif cb0p = DCMPLX(DBLE(xx),DBLE(y)) goto 990 * -#] normal case: * #] unequal nonzero masses: * #[ debug: 990 continue * #] debug: *###] ffxb0p: end *###[ ffxlmb: subroutine ffxlmb(xlambd,a1,a2,a3,a12,a13,a23) ***#[*comment:*********************************************************** * calculate in a numerically stable way * * lambda(a1,a2,a3) = * * a1**2 + a2**2 + a3**2 - 2*a2*a3 - 2*a3*a1 - 2*a1*a2 * * aij = ai - aj are required for greater accuracy at times * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE PRECISION xlambd,a1,a2,a3,a12,a13,a23 * * local variables * DOUBLE PRECISION aa1,aa2,aa3,a,aff,asq * * common blocks * #include "ff.h" * #] declarations: * #[ calculations: aa1 = abs(a1) aa2 = abs(a2) aa3 = abs(a3) * * first see if there are input parameters with opposite sign: * if ( a1 .lt. 0 .and. a2 .gt. 0 .or. + a1 .gt. 0 .and. a2 .lt. 0 ) then goto 12 elseif ( a1 .lt. 0 .and. a3 .gt. 0 .or. + a1 .gt. 0 .and. a3 .lt. 0 ) then goto 13 * * all have the same sign, choose the smallest 4*ai*aj term * elseif ( aa1 .gt. aa2 .and. aa1 .gt. aa3 ) then goto 23 elseif ( aa2 .gt. aa3 ) then goto 13 else goto 12 endif 12 continue if ( aa1 .gt. aa2 ) then a = a13 + a2 else a = a1 + a23 endif aff = 4*a1*a2 goto 100 13 continue if ( aa1 .gt. aa3 ) then a = a12 + a3 else a = a1 - a23 endif aff = 4*a1*a3 goto 100 23 continue if ( aa2 .gt. aa3 ) then a = a12 - a3 else a = a13 - a2 endif aff = 4*a2*a3 100 continue asq = a**2 xlambd = asq - aff * #] calculations: *###] ffxlmb: end *###[ ffclmb: subroutine ffclmb(clambd,cc1,cc2,cc3,cc12,cc13,cc23) ***#[*comment:*********************************************************** * calculate in cc numerically stable way * * lambda(cc1,cc2,cc3) = * * cc1**2 + cc2**2 + cc3**2 - 2*cc2*cc3 - 2*cc3*cc1 - 2*cc1*cc2 * * cij = ci - cj are required for greater accuracy at times * * ier is the usual error flag. * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX clambd,cc1,cc2,cc3,cc12,cc13,cc23 * * local variables * DOUBLE PRECISION aa1,aa2,aa3,absc DOUBLE COMPLEX cc,cff,csq,c * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ calculations (rather old style ...): aa1 = absc(cc1) aa2 = absc(cc2) aa3 = absc(cc3) * * first see if there are input parameters with opposite sign: * if ( DBLE(cc1) .lt. 0 .and. DBLE(cc2) .gt. 0 .or. + DBLE(cc1) .gt. 0 .and. DBLE(cc2) .lt. 0 ) then goto 12 elseif ( DBLE(cc1) .lt. 0 .and. DBLE(cc3) .gt. 0 .or. + DBLE(cc1) .gt. 0 .and. DBLE(cc3) .lt. 0 ) then goto 13 * * all have the same sign, choose the smallest 4*ci*cj term * elseif ( aa1 .gt. aa2 .and. aa1 .gt. aa3 ) then goto 23 elseif ( aa2 .gt. aa3 ) then goto 13 else goto 12 endif 12 continue if ( aa1 .gt. aa2 ) then cc = cc13 + cc2 else cc = cc1 + cc23 endif cff = 4*cc1*cc2 goto 100 13 continue if ( aa1 .gt. aa3 ) then cc = cc12 + cc3 else cc = cc1 - cc23 endif cff = 4*cc1*cc3 goto 100 23 continue if ( aa2 .gt. aa3 ) then cc = cc12 - cc3 else cc = cc13 - cc2 endif cff = 4*cc2*cc3 100 continue csq = cc**2 clambd = csq - cff * #] calculations (rather old style ...): *###] ffclmb: end *###[ ffdot2: subroutine ffdot2(piDpj,xp,xma,xmb,dmap,dmbp,dmamb,ier) ***#[*comment:*********************************************************** * * * Store the 3 dotproducts in the common block ffdot. * * * * Input: see ffxb0p * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE PRECISION piDpj(3,3),xp,xma,xmb,dmap,dmbp,dmamb * * local variables * integer ier1 * * common blocks * #include "ff.h" * * statement function * * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ work: ier1 = ier piDpj(1,1) = xma piDpj(2,2) = xmb piDpj(3,3) = xp if ( abs(dmap) .lt. abs(dmbp) ) then piDpj(1,2) = (dmap + xmb)/2 else piDpj(1,2) = (dmbp + xma)/2 endif piDpj(2,1) = piDpj(1,2) if ( abs(dmamb) .lt. abs(dmbp) ) then piDpj(1,3) = (-dmamb - xp)/2 else piDpj(1,3) = (dmbp - xma)/2 endif piDpj(3,1) = piDpj(1,3) if ( abs(dmamb) .lt. abs(dmap) ) then piDpj(2,3) = (-dmamb + xp)/2 else piDpj(2,3) = (-dmap + xmb)/2 endif piDpj(3,2) = piDpj(2,3) ier = ier1 * #] work: *###] ffdot2: end herwig++-2.6.0.orig/Looptools/B/Bcoeffa.F0000644000175000017500000000516111754474774020611 0ustar sylvestresylvestre* Bcoeffa.F * the two-point tensor coefficients from FF * this file is part of LoopTools * last modified 28 Sep 10 th #include "defs.h" subroutine XBcoeffa(para, B, ldpara, ier) implicit none integer ldpara, ier(Nbb) DVAR para(ldpara,Pbb) double complex B(Nbb) #include "lt.h" DVAR p, m1, m2, dm double complex a0(2), b2(2), pdb0 integer i logical dump #ifdef COMPLEXPARA DVAR m1dm double complex dmp, d2mp #endif #ifdef COMPLEXPARA if( abs(DIMAG(para(1,1))) .gt. 0 ) & print *, "Warning: complex momenta not implemented" if( abs(DIMAG(para(1,2))) + & abs(DIMAG(para(1,3))) .eq. 0 ) then call Bcoeffa(para, B, 2, ier) return endif #endif p = para(1,1) m1 = para(1,2) m2 = para(1,3) serial = serial + 1 dump = ibits(debugkey, DebugB, 1) .ne. 0 .and. & serial .ge. debugfrom .and. serial .le. debugto if( dump ) call XDumpPara(2, para, ldpara, "Bcoeffa") do i = 1, Nbb ier(i) = 0 enddo ldot = .TRUE. i = 0 call Xffb0(B(bb0), p, m1, m2, i) ier(bb0) = i call Xffa0(a0(1), m1, i) call Xffa0(a0(2), m2, i) ier(bb1) = i call Xffb1(B(bb1), B(bb0), a0, p, m1, m2, Xfpij2, ier(bb1)) call Xffb2p(b2, B(bb1), B(bb0), a0, p, m1, m2, Xfpij2, i) ier(bb00) = i ier(bb11) = i B(bb11) = b2(1) B(bb00) = b2(2) ldot = .FALSE. dm = m1 - m2 if( abs(p) .lt. acc ) then if( abs(dm) .lt. acc ) then B(bb001) = -.5D0*B(bb00) else B(bb001) = -( ((m1 + m2)/6D0)**2 + & m1*m2/6D0 * (B(bb0) + 1/3D0) + & (dm - m2)/3D0 * B(bb00) )/dm endif else B(bb001) = .125D0*( 2*m1*B(bb1) - a0(2) + & (p + dm)*(B(bb11) + 1/6D0) - .5D0*(m1 + m2) ) endif call Xffdb0(B(dbb0), pdb0, p, m1, m2, ier(dbb0)) #ifdef COMPLEXPARA if( abs(p) .lt. acc ) then if( abs(dm) .lt. acc ) then B(bb111) = -.25D0*B(bb0) else m1dm = m1/dm B(bb111)= 3/16D0 + .25D0*a0(2)/dm*(m1dm + 1) + & .5D0*m1dm*(m1dm*(B(bb1) - .5D0) - 1/6D0) endif else B(bb111) = -.25D0*( a0(2) + 2*m1*B(bb1) + & (p + dm)*(3*B(bb11) + 1/6D0) - .5D0*(m1 + m2) )/p endif B(dbb1) = .5D0/p*( & (a0(2) - a0(1) + dm*B(bb0))/p - & (p + dm)*B(dbb0) ) dmp = (m1 - m2)/p d2mp = (m1 - 2*m2)/p B(dbb11) = 1/3D0*( & ( (.5D0*(m1 + m2) + & (2*dmp + 1)*a0(1) - (2*dmp + 2)*a0(2))/p - & (d2mp + 2*dmp**2)*B(bb0) )/p + & (d2mp + dmp**2 + 1)*B(dbb0) ) #else call ffxb111(B(bb111), p, m1, m2, ier(bb111)) call ffxdb1(B(dbb1), p, m1, m2, ier(dbb1)) call ffxdb11(B(dbb11), p, m1, m2, ier(dbb11)) #endif B(dbb00) = 1/6D0*( 2*m1*B(dbb0) + B(bb1) + & (p + dm)*B(dbb1) - 1/3D0 ) if( dump ) call DumpCoeff(2, B) end herwig++-2.6.0.orig/Looptools/B/ffcel2.F0000644000175000017500000003240311754474774020424 0ustar sylvestresylvestre#include "externals.h" *###[ ffcel2: subroutine ffcel2(del2,piDpj,ns,i1,i2,i3,lerr,ier) ************************************************************************* * calculate in a numerically stable way * * del2(piDpj(i1,i1),piDpj(i2,i2),piDpj(i3,i3)) = * * = piDpj(i1,i1)*piDpj(i2,i2) - piDpj(i1,i2)^2 * * = piDpj(i1,i1)*piDpj(i3,i3) - piDpj(i1,i3)^2 * * = piDpj(i2,i2)*piDpj(i3,i3) - piDpj(i2,i3)^2 * * ier is the usual error flag. * ************************************************************************* implicit none * * arguments: * integer ns,i1,i2,i3,lerr,ier DOUBLE COMPLEX del2,piDpj(ns,ns) * * local variables * DOUBLE COMPLEX s1,s2,cc DOUBLE PRECISION absc * * common blocks * #include "ff.h" * absc(cc) = abs(DBLE(cc)) + abs(DIMAG(cc)) * * calculations * if ( absc(piDpj(i1,i2)) .lt. absc(piDpj(i1,i3)) .and. + absc(piDpj(i1,i2)) .lt. absc(piDpj(i2,i3)) ) then s1 = piDpj(i1,i1)*piDpj(i2,i2) s2 = piDpj(i1,i2)**2 elseif ( absc(piDpj(i1,i3)) .lt. absc(piDpj(i2,i3)) ) then s1 = piDpj(i1,i1)*piDpj(i3,i3) s2 = piDpj(i1,i3)**2 else s1 = piDpj(i2,i2)*piDpj(i3,i3) s2 = piDpj(i2,i3)**2 endif del2 = s1 - s2 if ( absc(del2) .lt. xloss*absc(s2) ) then if ( lerr .eq. 0 ) then * we know we have another chance if ( del2.ne.0 ) then ier = ier + int(log10(xloss*absc(s2)/absc(del2))) else ier = ier + int(log10(xloss*absc(s2)/xclogm)) endif endif endif *###] ffcel2: end *###[ ffcl2p: subroutine ffcl2p(delps1,xpi,dpipj,piDpj, + ip1,ip2,ip3,is1,is2,is3,ns) ***#[*comment:*********************************************************** * * * calculate in a numerically stable way * * delta_{ip1,is2}^{ip1,ip2} * * ier is the usual error flag. * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ns,ip1,ip2,ip3,is1,is2,is3 DOUBLE COMPLEX delps1,xpi(ns),dpipj(ns,ns),piDpj(ns,ns) * * local variables * DOUBLE COMPLEX s1,s2,s3,som,c DOUBLE PRECISION xmax,absc * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ stupid tree: * 1 s1 = xpi(ip1)*piDpj(ip2,is2) s2 = piDpj(ip1,ip2)*piDpj(ip1,is2) delps1 = s1 - s2 if ( absc(delps1) .ge. xloss*absc(s1) ) goto 100 som = delps1 xmax = absc(s1) * 2 s1 = piDpj(ip1,ip2)*piDpj(ip3,is2) s2 = piDpj(ip1,ip3)*piDpj(ip2,is2) delps1 = s1 - s2 if ( absc(delps1) .ge. xloss*absc(s1) ) goto 100 if ( absc(s1) .lt. xmax ) then som = delps1 xmax = absc(s1) endif * 3 s1 = piDpj(ip1,ip3)*piDpj(ip1,is2) s2 = xpi(ip1)*piDpj(ip3,is2) delps1 = s1 - s2 if ( absc(delps1) .ge. xloss*absc(s1) ) goto 100 if ( absc(s1) .lt. xmax ) then som = delps1 xmax = absc(s1) endif * 4 s1 = xpi(ip1)*piDpj(ip2,is1) s2 = piDpj(ip1,is1)*piDpj(ip1,ip2) delps1 = s1 - s2 if ( absc(delps1) .ge. xloss*absc(s1) ) goto 100 if ( absc(s1) .lt. xmax ) then som = delps1 xmax = absc(s1) endif * 5 s1 = piDpj(ip1,is2)*piDpj(ip2,is1) s2 = piDpj(ip1,is1)*piDpj(ip2,is2) delps1 = s1 - s2 if ( absc(delps1) .ge. xloss*absc(s1) ) goto 100 if ( absc(s1) .lt. xmax ) then som = delps1 xmax = absc(s1) endif * 6 s1 = piDpj(ip1,ip2)*piDpj(ip3,is1) s2 = piDpj(ip1,ip3)*piDpj(ip2,is1) delps1 = s1 - s2 if ( absc(delps1) .ge. xloss*absc(s1) ) goto 100 if ( absc(s1) .lt. xmax ) then som = delps1 xmax = absc(s1) endif * 7 s1 = piDpj(ip2,is2)*piDpj(ip3,is1) s2 = piDpj(ip2,is1)*piDpj(ip3,is2) delps1 = s1 - s2 if ( absc(delps1) .ge. xloss*absc(s1) ) goto 100 if ( absc(s1) .lt. xmax ) then som = delps1 xmax = absc(s1) endif * 8 s1 = piDpj(ip1,ip3)*piDpj(ip1,is1) s2 = xpi(ip1)*piDpj(ip3,is1) delps1 = s1 - s2 if ( absc(delps1) .ge. xloss*absc(s1) ) goto 100 if ( absc(s1) .lt. xmax ) then som = delps1 xmax = absc(s1) endif * 9 s1 = piDpj(ip1,is1)*piDpj(ip3,is2) s2 = piDpj(ip1,is2)*piDpj(ip3,is1) delps1 = s1 - s2 if ( absc(delps1) .ge. xloss*absc(s1) ) goto 100 if ( absc(s1) .lt. xmax ) then som = delps1 xmax = absc(s1) endif *10 22-nov-1993 yet another one if ( dpipj(1,1).eq.0 ) then s1 = +xpi(ip1)*dpipj(is3,is2)/2 s2 = -piDpj(ip1,ip2)*dpipj(is2,is1)/2 s3 = +xpi(ip1)*piDpj(ip2,ip3)/2 delps1 = s1+s2+s3 if ( absc(delps1) .ge. xloss*max(absc(s1),absc(s2)) ) + goto 100 if ( max(absc(s1),absc(s2)) .lt. xmax ) then som = delps1 xmax = absc(s1) endif endif * NO possibility delps1 = som 100 continue * #] stupid tree: *###] ffcl2p: end *###[ ffcl2t: subroutine ffcl2t(delps,piDpj,in,jn,kn,ln,lkn,islk,iss,ns) ***#[*comment:*********************************************************** * * * calculate in a numerically stable way * * * * \delta_{si,sj}^{sk,sl} * * * * with p(lk) = islk*(iss*sl - sk) (islk,iss = +/-1) * * and NO relationship between s1,s2 assumed (so 1/2 the * * possibilities of ffdl2s). * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer in,jn,kn,ln,lkn,islk,iss,ns DOUBLE COMPLEX delps,piDpj(ns,ns) * * local variables * DOUBLE COMPLEX s1,s2,c DOUBLE PRECISION absc * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ calculations: if ( in .eq. jn ) then delps = 0D0 return endif s1 = piDpj(kn,in)*piDpj(ln,jn) s2 = piDpj(ln,in)*piDpj(kn,jn) delps = s1 - s2 if ( absc(delps) .ge. xloss*absc(s1) ) goto 10 s1 = piDpj(kn,in)*piDpj(lkn,jn) s2 = piDpj(lkn,in)*piDpj(kn,jn) delps = iss*islk*(s1 - s2) if ( absc(delps) .ge. xloss*absc(s1) ) goto 10 s1 = piDpj(lkn,in)*piDpj(ln,jn) s2 = piDpj(ln,in)*piDpj(lkn,jn) delps = islk*(- s1 + s2) if ( absc(delps) .ge. xloss*absc(s1) ) goto 10 10 continue * #] calculations: *###] ffcl2t: end *###[ ffcl3m: subroutine ffcl3m(del3mi,ldel,del3,del2,xpi,dpipj,piDpj,ns,ip1n, + ip2n,ip3n,is,itime) ***#[*comment:*********************************************************** * * * Calculate xpi(i)*del2 - del3(piDpj) * * * * / si mu \2 (This appears to be one of the harder * * = | d | determinants to calculate accurately. * * \ p1 p2 / Note that we allow a loss of xloss^2) * * * * Input: ldel iff .true. del2 and del3 exist * * del3 \delta^{s(1),p1,p2}_{s(1),p1,p2} * * del2 \delta^{p1,p2}_{p1,p2} * * xpi(ns) standard * * dpipj(ns,ns) standard * * piDpj(ns,ns) standard * * ipi pi = xpi(abs(ipi)) [p3=-p1 +/-p2] * * is si = xpi(is,is+1,..,is+itime-1) * * itime number of functions to calculate * * * * Output: del3mi(3) (\delta^{s_i \mu}_{p_1 p_2})^2 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ns,ip1n,ip2n,ip3n,is,itime logical ldel DOUBLE COMPLEX del3mi(itime),del3,del2,xpi(ns),dpipj(ns,ns), + piDpj(ns,ns) * * local variables: * DOUBLE PRECISION smax,xmax,absc DOUBLE COMPLEX s(7),som,xsom,c integer i,j,k,ip1,ip2,ip3,ipn,is1,is2,isi,is3,ihlp,iqn, + jsgn1,jsgn2,jsgn3,jsgnn,iadj(10,10,3:4),init,nm save iadj,init logical lmax,ltwist * * common blocks: * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * data * data iadj /200*0/ data init /0/ * #] declarations: * #[ initialisations: if ( init .eq. 0 ) then init = 1 * * Fill the array with adjacent values: if * x = iadj(i,j) * k = abs(mod(k,100)) * jsgnk = sign(x) * jsgnj = 1-2*theta(x-100) (ie -1 iff |x|>100) * then * pi(k) = jsgnk*( p(i) - jsgnj*pi(j) ) * do 5 nm=3,4 do 4 i=1,nm is1 = i is2 = i+1 if ( is2 .gt. nm ) is2 = 1 is3 = i-1 if ( is3 .eq. 0 ) is3 = nm ip1 = is1 + nm iadj(is1,is2,nm) = -ip1 iadj(is2,is1,nm) = ip1 iadj(ip1,is2,nm) = -is1 iadj(is2,ip1,nm) = is1 iadj(is1,ip1,nm) = 100+is2 iadj(ip1,is1,nm) = 100+is2 if ( nm .eq. 3 ) then iadj(ip1,is2+3,3) = -100-is3-3 iadj(is2+3,ip1,3) = -100-is3-3 endif 4 continue 5 continue iadj(3,1,4) = -9 iadj(1,3,4) = 9 iadj(9,1,4) = -3 iadj(1,9,4) = 3 iadj(3,9,4) = 100+1 iadj(9,3,4) = 100+1 iadj(2,4,4) = -10 iadj(4,2,4) = 10 iadj(10,4,4) = -2 iadj(4,10,4) = 2 iadj(2,10,4) = 100+4 iadj(10,2,4) = 100+4 endif if ( ns .eq. 6 ) then nm = 3 else nm = 4 endif * #] initialisations: * #[ easy tries: do 40 i=1,itime isi = i+is-1 lmax = .FALSE. * * get xpi(isi)*del2 - del3 ... if del3 and del2 are defined * if ( ldel ) then s(1) = xpi(isi)*del2 som = s(1) - del3 smax = absc(s(1)) if ( absc(som) .ge. xloss**2*smax ) goto 35 xsom = som xmax = smax lmax = .TRUE. endif ip1 = ip1n ip2 = ip2n ip3 = ip3n do 20 j=1,3 * * otherwise use the simple threeterm formula * s(1) = xpi(ip2)*piDpj(ip1,isi)**2 s(2) = xpi(ip1)*piDpj(ip2,isi)*piDpj(ip2,isi) s(3) = -2*piDpj(ip2,isi)*piDpj(ip2,ip1)*piDpj(ip1,isi) som = s(1) + s(2) + s(3) smax = max(absc(s(1)),absc(s(2)),absc(s(3))) if ( absc(som) .ge. xloss**2*smax ) goto 35 if ( .not. lmax .or. smax .lt. xmax ) then xsom = som xmax = smax lmax = .TRUE. endif * * if there are cancellations between two of the terms: * we try mixing with isi. * * First map cancellation to s(2)+s(3) (do not mess up * rotations...) * if ( absc(s(1)+s(3)) .lt. absc(s(3))/2 ) then ihlp = ip1 ip1 = ip2 ip2 = ihlp som = s(1) s(1) = s(2) s(2) = som ltwist = .TRUE. else ltwist = .FALSE. endif if ( absc(s(2)+s(3)) .lt. absc(s(3))/2 ) then * * switch to the vector pn so that si = jsgn1*p1 + jsgnn*pn * k = iadj(isi,ip1,nm) if ( k .ne. 0 ) then ipn = abs(k) jsgnn = isign(1,k) if ( ipn .gt. 100 ) then ipn = ipn - 100 jsgn1 = -1 else jsgn1 = +1 endif if ( absc(dpipj(ipn,isi)) .lt. + xloss*absc(piDpj(ip1,isi)) .and. + absc(piDpj(ipn,ip2)) .lt. + xloss*absc(piDpj(ip2,isi)) ) then * same: s(1) = xpi(ip2)*piDpj(ip1,isi)**2 s(2) = jsgnn*piDpj(isi,ip2)*piDpj(ipn,ip2)* + xpi(ip1) s(3) = jsgn1*piDpj(isi,ip2)*piDpj(ip1,ip2)* + dpipj(ipn,isi) som = s(1) + s(2) + s(3) smax = max(absc(s(1)),absc(s(2)),absc(s(3))) * print *,' (isi+ip1) with isi,ip1,ip2,ipn: ', * + isi,ip1,ip2,ipn * print *,'xpi(ip2),piDpj(ip1,isi)',xpi(ip2), * + piDpj(ip1,isi) * print *,'piDpj(isi,ip2),piDpj(ipn,ip2),xpi(ip1)' * + ,piDpj(isi,ip2),piDpj(ipn,ip2),xpi(ip1) if ( absc(som) .ge. xloss**2*smax ) goto 35 if ( smax .lt. xmax ) then xsom = som xmax = smax endif * * there may be a cancellation between s(1) and * s(2) left. Introduce a vector q such that * pn = jsgnq*q + jsgn2*p2. We also need the sign * jsgn3 in p3 = -p1 - jsgn3*p2 * k = iadj(ipn,ip2,nm) if ( k .ne. 0 ) then iqn = abs(k) *not used jsgnq = isign(1,k) if ( iqn .gt. 100 ) then iqn = iqn - 100 jsgn2 = -1 else jsgn2 = +1 endif k = iadj(ip1,ip2,nm) if ( k .eq. 0 .or. k .lt. 100 ) then * we have p1,p2,p3 all p's jsgn3 = +1 elseif ( k .lt. 0 ) then * ip1,ip2 are 2*s,1*p such that p2-p1=ip3 jsgn3 = -1 else jsgn3 = 0 endif * we need one condition on the signs for this * to work if ( ip3.ne.0 .and. jsgn1*jsgn2.eq.jsgnn* + jsgn3 .and. absc(s(3)).lt.xloss*smax ) then s(1) = piDpj(ip1,isi)**2*dpipj(iqn,ipn) s(2) = -jsgn2*jsgn1*piDpj(ipn,ip2)* + piDpj(ip1,isi)*dpipj(ipn,isi) * s(3) stays the same s(4) = -jsgn2*jsgn1*piDpj(ipn,ip2)* + xpi(ip1)*piDpj(isi,ip3) som = s(1) + s(2) + s(3) + s(4) smax = max(absc(s(1)),absc(s(2)), + absc(s(3)),absc(s(4))) if (absc(som).ge.xloss**2*smax) goto 35 if ( smax .lt. xmax ) then xsom = som xmax = smax endif endif endif endif endif k = iadj(isi,ip2,nm) if ( k .ne. 0 ) then ipn = abs(k) jsgnn = isign(1,k) if ( ipn .gt. 100 ) then jsgn1 = -1 ipn = ipn - 100 else jsgn1 = +1 endif if ( absc(dpipj(ipn,isi)) .lt. + xloss*absc(piDpj(ip2,isi)) .and. + absc(piDpj(ipn,ip1)) .lt. + xloss*absc(piDpj(ip1,isi)) ) then s(1) = jsgnn*piDpj(isi,ip1)*piDpj(ipn,ip1)* + xpi(ip2) s(2) = xpi(ip1)*piDpj(ip2,isi)**2 s(3) = jsgn1*piDpj(isi,ip1)*piDpj(ip2,ip1)* + dpipj(ipn,isi) som = s(1) + s(2) + s(3) smax = max(absc(s(1)),absc(s(2)),absc(s(3))) print *,' (isi+ip2) with isi,ip1,ip2,ipn: ', + isi,ip1,ip2,ipn if ( absc(som) .ge. xloss**2*smax ) goto 35 if ( smax .lt. xmax ) then xsom = som xmax = smax endif endif endif endif * * rotate the ipi * if ( ip3 .eq. 0 ) goto 30 if ( j .ne. 3 ) then if ( .not. ltwist ) then ihlp = ip1 ip1 = ip2 ip2 = ip3 ip3 = ihlp else ihlp = ip2 ip2 = ip3 ip3 = ihlp endif endif 20 continue 30 continue * #] easy tries: * #[ choose the best value: * * These values are the best found: * som = xsom smax = xmax 35 continue del3mi(i) = som 40 continue * #] choose the best value: *###] ffcl3m: end herwig++-2.6.0.orig/Looptools/B/ffxdb0.F0000644000175000017500000003734511754474774020446 0ustar sylvestresylvestre#include "externals.h" *###[ ffxdb0: subroutine ffxdb0(cdb0,cdb0p,xp,xma,xmb,ier) ***#[*comment:*********************************************************** * * * Calculates the the derivative of the two-point function with * * respect to p2 and the same times p2 (one is always well-defined)* * * * Input: xp (real) k2, in B&D metric * * xma (real) mass2 * * xmb (real) mass2 * * * * Output: cdb0 (complex) dB0/dxp * * cdb0p (complex) xp*dB0/dxp * * ier (integer) # of digits lost, if >=100: error * * * * Calls: ffxdba * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cdb0,cdb0p DOUBLE PRECISION xp,xma,xmb * * local variables * DOUBLE PRECISION dmamb,dmap,dmbp * * common blocks * #include "ff.h" * * #] declarations: dmamb = (sqrt(xma) - sqrt(xmb))**2 if( abs(xp - dmamb) .lt. precx .and. & abs(dmamb) .gt. precx .and. & xma .gt. precx .and. xmb .gt. precx ) then cdb0p = .5D0*(xmb - xma)/dmamb*log(xmb/xma) - 2 cdb0 = cdb0p/dmamb return endif * #[ get differences: dmamb = xma - xmb dmap = xma - xp dmbp = xmb - xp * #] get differences: * #[ calculations: call ffxdbp(cdb0,cdb0p,xp,xma,xmb,dmap,dmbp,dmamb,ier) * #] calculations: *###] ffxdb0: end *###[ ffxdbp: subroutine ffxdbp(cdb0,cdb0p,xp,xma,xmb,dmap,dmbp,dmamb,ier) ***#[*comment:*********************************************************** * * * calculates the derivatives of the two-point function * * Veltman) for all possible cases: masses equal, unequal, * * equal to zero. * * * * Input: xp (real) p.p, in B&D metric * * xma (real) mass2, * * xmb (real) mass2, * * dm[ab]p (real) xm[ab] - xp * * dmamb (real) xma - xmb * * * * Output: cdb0 (complex) B0' = dB0/dxp * * cdb0p (complex) xp*dB0/dxp * * ier (integer) 0=ok,>0=numerical problems,>100=error * * * * Calls: ffxdbp. * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cdb0,cdb0p DOUBLE PRECISION xp,xma,xmb,dmap,dmbp,dmamb * * local variables * integer i,initeq,jsign,initir DOUBLE PRECISION ax,ffbnd, + xprceq,bdeq01,bdeq05,bdeq11,bdeq17, + xprcn3,bdn301,bdn305,bdn310, + xprcn5,bdn501,bdn505,bdn510, + xprec0,bdn001,bdn005,bdn010,bdn015 DOUBLE PRECISION xm,dmp,xm1,xm2,dm1m2,dm1p, + dm2p,s,s1,s1a,s1b,s1p,s2,s2a,s2b,s2p,x,y,som, + xlam,slam,xlogmm,alpha,alph1,xnoe,xpneq(30), + xx,dfflo1,dfflo3,d1,d2,diff,h,a,b,c,d,beta, + betm2n,xmax,s1c,s1d,s1e,s1f,s3 external ffbnd,dfflo1,dfflo3 save initeq,xpneq,initir, + xprceq,bdeq01,bdeq05,bdeq11,bdeq17, + xprcn3,bdn301,bdn305,bdn310, + xprcn5,bdn501,bdn505,bdn510, + xprec0,bdn001,bdn005,bdn010,bdn015 * * common blocks * #include "ff.h" * * data * data xprceq /-1D0/ data xprec0 /-1D0/ data xprcn3 /-1D0/ data xprcn5 /-1D0/ data initeq /0/ data initir /0/ * * #] declarations: * #[ which case: * * sort according to the type of masscombination encountered: * 100: both masses zero, 200: one equal to zero, 300: both equal * 400: rest. * if ( xma .eq. 0 ) then if ( xmb .eq. 0 ) then goto 100 endif xm = xmb dmp = dmbp goto 200 endif if ( xmb .eq. 0 ) then xm = xma dmp = dmap goto 200 elseif ( dmamb .eq. 0 ) then xm = xma dmp = dmap goto 300 elseif ( xma .gt. xmb ) then xm2 = xma xm1 = xmb dm1m2 = -dmamb dm1p = dmbp dm2p = dmap else xm1 = xma xm2 = xmb dm1m2 = dmamb dm1p = dmap dm2p = dmbp endif goto 400 * #] which case: * #[ both masses equal to zero: 100 continue if ( xp.ne.0 ) cdb0 = -1/xp cdb0p = -1 return * #] both masses equal to zero: * #[ one mass equal to zero: 200 continue * * special case xp = 0 * if ( xp .eq. 0 ) then cdb0p = 0 cdb0 = 1/(2*xm) goto 990 * * special case xp = xm * elseif ( dmp.eq.0 ) then if ( lsmug ) then if ( DBLE(cmipj(1,3)).lt.DBLE(cmipj(2,3)) ) then cdb0p = -1 - log(cmipj(1,3)*DBLE(1/xm)) else cdb0p = -1 - log(cmipj(2,3)*DBLE(1/xm)) endif else if ( initir.eq.0 ) then initir = 1 print *,'ffxdb0: IR divergent B0'', using cutoff ', + lambda endif if ( lambda .le. 0 ) then cdb0p = -1 + log(xm/mudim)/2 else cdb0p = -1 + log(xm/lambda)/2 endif endif cdb0 = cdb0p*(1/DBLE(xp)) goto 990 endif * * Normal case: * x = xp/xm ax = abs(x) if ( ax .lt. xloss ) then * #[ Taylor expansion: if ( xprec0 .ne. precx ) then xprec0 = precx bdn001 = ffbnd(2,1,xninv) bdn005 = ffbnd(2,5,xninv) bdn010 = ffbnd(2,10,xninv) bdn015 = ffbnd(2,15,xninv) endif if ( ax .gt. bdn015 ) then som = x*(xninv(17) + x*(xninv(18) + x*(xninv(19) + + x*(xninv(20) + x*xninv(21) )))) else som = 0 endif if ( ax .gt. bdn010 ) then som = x*(xninv(12) + x*(xninv(13) + x*(xninv(14) + + x*(xninv(15) + x*(xninv(16) + som ))))) endif if ( ax .gt. bdn005 ) then som = x*(xninv(7) + x*(xninv(8) + x*(xninv(9) + + x*(xninv(10) + x*(xninv(11) + som ))))) endif if ( ax .gt. bdn001 ) then som = x*(xninv(3) + x*(xninv(4) + x*(xninv(5) + + x*(xninv(6) + som )))) endif cdb0p = x*(xninv(2) + som) * #] Taylor expansion: else * #[ short formula: s = log(abs(dmp/xm)) cdb0p = -(1 + s*xm/xp) if ( xp.gt.xm ) cdb0p = cdb0p+DCMPLX(DBLE(0),DBLE(xm/xp*pi)) * #] short formula: endif cdb0 = cdb0p*(1/DBLE(xp)) goto 990 * #] one mass equal to zero: * #[ both masses equal: 300 continue * * Both masses are equal. Not only this speeds up things, some * cancellations have to be avoided as well. * * first a special case * if ( abs(xp) .lt. 8*xloss*xm ) then * -#[ taylor expansion: * * a Taylor expansion seems appropriate as the result will go * as k^2 but seems to go as 1/k !! * *--#[ data and bounds: if ( initeq .eq. 0 ) then initeq = 1 xpneq(1) = 1D0/6D0 do 1 i=2,30 xpneq(i) = - xpneq(i-1)*DBLE(i)/DBLE(2*(2*i+1)) 1 continue endif if (xprceq .ne. precx ) then * * calculate the boundaries for the number of terms to be * included in the taylorexpansion * xprceq = precx bdeq01 = ffbnd(1,1,xpneq) bdeq05 = ffbnd(1,5,xpneq) bdeq11 = ffbnd(1,11,xpneq) bdeq17 = ffbnd(1,17,xpneq) endif *--#] data and bounds: x = -xp/xm ax = abs(x) if ( ax .gt. bdeq17 ) then som = x*(xpneq(18) + x*(xpneq(19) + x*(xpneq(20) + + x*(xpneq(21) + x*(xpneq(22) + x*(xpneq(23) + + x*(xpneq(24) + x*xpneq(25) ))))))) else som = 0 endif if ( ax .gt. bdeq11 ) then som = x*(xpneq(12) + x*(xpneq(13) + x*(xpneq(14) + + x*(xpneq(15) + x*(xpneq(16) + x*(xpneq(17) + som )))) + )) endif if ( ax .gt. bdeq05 ) then som = x*(xpneq(6) + x*(xpneq(7) + x*(xpneq(8) + x*( + xpneq(9) + x*(xpneq(10) + x*(xpneq(11) + som )))))) endif if ( ax .gt. bdeq01 ) then som = x*(xpneq(2) + x*(xpneq(3) + x*(xpneq(4) + x*( + xpneq(5) + som )))) endif cdb0p = -x*(xpneq(1)+som) if ( xp.ne.0 ) then cdb0 = cdb0p*(1/DBLE(xp)) else cdb0 = xpneq(1)/xm endif goto 990 * -#] taylor expansion: endif * -#[ normal case: * * normal case * call ffxlmb(xlam,-xp,-xm,-xm,dmp,dmp,0D0) if ( xlam .eq. 0 ) then call fferr(86,ier) return elseif ( xlam .gt. 0 ) then * cases 1,2 and 4 slam = sqrt(xlam) s2a = dmp + xm s2 = s2a + slam if ( abs(s2) .gt. xloss*slam ) then * looks fine jsign = 1 else s2 = s2a - slam jsign = -1 endif ax = abs(s2/(2*xm)) if ( ax .lt. xalogm ) then s = 0 elseif( ax-1 .lt. .1 .and. s2 .gt. 0 ) then * In this case a quicker and more accurate way is to * calculate log(1-x). s2 = (xp - slam) * the following line is superfluous. s = 2*xm/slam*dfflo1(s2/(2*xm),ier) else * finally the normal case s = 2*xm/slam*log(ax) if ( jsign .eq. -1 ) s = -s endif if ( xp .gt. 2*xm ) then * in this case ( xlam>0, so xp>(2*m)^2) ) there also * is an imaginary part y = pi*2*xm/slam else y = 0 endif else * the root is complex (k^2 between 0 and (2*m1)^2) slam = sqrt(-xlam) s = 4*xm/slam*atan2(xp,slam) y = 0 endif xx = s - 1 cdb0p = DCMPLX(DBLE(xx),DBLE(y)) cdb0 = cdb0p*(1/DBLE(xp)) goto 990 * -#] normal case: * * #] both masses equal: * #[ unequal nonzero masses: * -#[ get log(xm2/xm1): 400 continue x = xm2/xm1 if ( 1 .lt. xalogm*x ) then call fferr(8,ier) xlogmm = 0 elseif ( abs(x-1) .lt. xloss ) then xlogmm = dfflo1(dm1m2/xm1,ier) else xlogmm = log(x) endif * -#] get log(xm2/xm1): * -#[ xp = 0: * * first a special case * if ( xp .eq. 0 ) then * * repaired 19-nov-1993, see b2.frm * s1 = xm1*xm2*xlogmm/dm1m2**3 s2 = (xm1+xm2)/(2*dm1m2**2) s = s1 + s2 if ( abs(s) .lt. xloss**2*s2 ) then * * second try * h = dfflo3(dm1m2/xm1,ier) s1 = -xm1*h/dm1m2**2 s2 = 1/(2*xm1) s3 = xm1**2*h/dm1m2**3 s = s1 + s2 + s3 if ( abs(s) .lt. xloss*max(abs(s2),abs(s3)) ) then call ffwarn(228,ier,s,s2) endif endif cdb0 = s cdb0p = 0 goto 990 endif * -#] xp = 0: * -#[ normal case: * * proceeding with the normal case * call ffxlmb(xlam,-xp,-xm2,-xm1,dm2p,dm1p,dm1m2) diff = xlam + xp*(dm2p+xm1) if ( abs(diff) .lt. xloss*xlam ) then h = dm1m2**2 - xp*(xm1+xm2) if ( abs(h) .lt. xloss*dm1m2**2 ) then if ( dm1m2**2 .lt. abs(xlam) ) diff = h endif endif if ( xlam .eq. 0 ) then call fferr(86,ier) return elseif ( xlam .gt. 0 ) then * cases k^2 < -(m2+m1)^2 or k^2 > -(m2-m1)^2: *--#[ first try: * first try the normal way slam = sqrt(xlam) s2a = dm2p + xm1 s2 = s2a + slam if ( abs(s2) .gt. xloss*slam ) then * looks fine jsign = 1 else s2 = s2a - slam jsign = -1 endif s2 = s2**2/(4*xm1*xm2) if ( abs(s2) .lt. xalogm ) then call fferr(9,ier) s2 = 0 elseif ( abs(s2-1) .lt. xloss ) then if ( jsign.eq.1 ) then s2 = -slam*(s2a+slam)/(2*xm1*xm2) s2 = -diff/(2*slam*xp)*dfflo1(s2,ier) else ier = ier + 50 print *,'ffxdb0: untested: s2 better in first try' s2 = +slam*(s2a-slam)/(2*xm1*xm2) s2 = +diff/(2*slam*xp)*dfflo1(s2,ier) endif else s2 = -diff/(2*slam*xp)*log(s2) if ( jsign .eq. -1 ) s2 = -s2 endif s1 = -dm1m2*xlogmm/(2*xp) xx = s1+s2-1 *--#] first try: if ( abs(xx) .lt. xloss**2*max(abs(s1),abs(s2)) ) then *--#[ second try: * this is unacceptable, try a better solution s1a = diff + slam*dm1m2 if ( abs(s1a) .gt. xloss*diff ) then * this works s1 = -s1a/(2*xp*slam) else * by division a more accurate form can be found s1 = -2*xm1*xm2*xp/(slam*(diff - slam*dm1m2)) endif s = s1 s1 = s1*xlogmm if ( abs(xp) .lt. xm2 ) then s2a = xp - dm1m2 else s2a = xm2 - dm1p endif s2 = s2a - slam if ( abs(s2) .gt. xloss*slam ) then * at least reasonable s2 = s2 / (2*xm2) else * division again s2 = (2*xp) / (s2a+slam) endif if ( abs(s2) .lt. .1 ) then * choose a quick way to get the logarithm s2 = dfflo1(s2,ier) elseif ( s2.eq.1 ) then print *,'ffxdbp: error: arg log would be 0!' print *,' xp,xma,xmb = ',xp,xma,xmb goto 600 else s2 = log(abs(1 - s2)) endif s2 = -diff/(slam*xp)*s2 xx = s1 + s2 - 1 *--#] second try: if ( abs(xx) .lt. xloss**2*max(abs(s1),abs(s2)) ) then *--#[ third try: * (we accept two times xloss because that's the same * as in this try) * A Taylor expansion might work. We expand * inside the logs. Only do the necessary work. * * #[ split up 1: xnoe = s2a+slam a = 1 b = 2/xnoe-1/xp c = -4/(xp*xnoe) d = sqrt((2/xnoe)**2 + 1/xp**2) call ffroot(d1,d2,a,b,c,d,ier) if ( xp.gt.0 ) then beta = d2 else beta = d1 endif alpha = beta*diff/slam alph1 = 1-alpha if ( alph1 .lt. xloss ) then s1a = 4*xp**2*xm1*xm2/(slam*dm1m2*(diff-slam* + dm1m2)) s1b = -diff/slam*4*xm1*xp/(dm1m2*xnoe*(2*xp- + xnoe)) b = -1/xp c = -(2/xnoe)**2 call ffroot(d1,d2,a,b,c,d,ier) if ( xp.gt.0 ) then betm2n = d2 else betm2n = d1 endif d1 = s1a + s1b - diff/slam*betm2n xmax = max(abs(s1a),abs(s1b)) if ( xmax .lt. 1 ) then alph1 = d1 else xmax = 1 endif else betm2n = beta - 2/xnoe endif * #] split up 1: * #[ s2: * * first s2: * s2p = s2 - alpha if ( abs(s2p) .lt. xloss*abs(s2) ) then * -#[ bounds: * determine the boundaries for 1,5,10,15 terms if ( xprcn5 .ne. precx ) then xprcn5 = precx bdn501 = ffbnd(3,1,xinfac) bdn505 = ffbnd(3,5,xinfac) bdn510 = ffbnd(3,10,xinfac) endif * -#] bounds: x = beta*xp ax = abs(x) if ( ax .gt. bdn510 ) then s2a = x*(xinfac(13) + x*(xinfac(14) + x*( + xinfac(15) + x*(xinfac(16) + x* + xinfac(17) )))) else s2a = 0 endif if ( ax .gt. bdn505 ) then s2a = x*(xinfac(8) + x*(xinfac(9) + x*( + xinfac(10) + x*(xinfac(11) + x*( + xinfac(12) + s2a))))) endif if ( ax .gt. bdn501 ) then s2a = x*(xinfac(4) + x*(xinfac(5) + x*( + xinfac(6) + x*(xinfac(7) + s2a)))) endif s2a = x**3*(xinfac(3)+s2a) s2b = 2*xp/xnoe*(s2a + x**2/2) s2p = s2b - s2a s2p = -diff/(xp*slam)*dfflo1(s2p,ier) endif * #] s2: * #[ s1: * * next s1: * s1p = s1 - alph1 if ( abs(s1p) .lt. xloss*abs(s1) ) then * -#[ bounds: * determine the boundaries for 1,5,10,15 terms if ( xprcn3 .ne. precx ) then xprcn3 = precx bdn301 = ffbnd(3,1,xinfac) bdn305 = ffbnd(3,5,xinfac) bdn310 = ffbnd(3,10,xinfac) endif * -#] bounds: * x = slam*(diff-slam*dm1m2)*alph1/(2*xp*xm1*xm2) h = (2*xp*(xm1+xm2) - xp**2)/(slam-dm1m2) ax = abs(x) * * see form job gets1.frm * s1b = diff*(diff-slam*dm1m2)*betm2n/(2*xp*xm1* + xm2) s1c = 1/(xm1*xnoe*(2*xp-xnoe))*( + xp*( 4*xp*xm2 + 2*dm1m2**2/xm2*(xp-h) + + 2*dm1m2*(3*xp-h) - 8*dm1m2**2 ) + - 2*dm1m2**3/xm2*(3*xp-h) + + 4*dm1m2**4/xm2 + ) s1d = x*dm1m2/xm1 s1e = -x**2/2 if ( ax .gt. bdn310 ) then s1a = x*(xinfac(13) + x*(xinfac(14) + x*( + xinfac(15) + x*(xinfac(16) + x* + xinfac(17) )))) else s1a = 0 endif if ( ax .gt. bdn305 ) then s1a = x*(xinfac(8) + x*(xinfac(9) + x*( + xinfac(10) + x*(xinfac(11) + x*( + xinfac(12) + s1a))))) endif if ( ax .gt. bdn301 ) then s1a = x*(xinfac(4) + x*(xinfac(5) + x*( + xinfac(6) + x*(xinfac(7) + s1a)))) endif s1a = -x**3 *(xinfac(3) + s1a) s1f = dm1m2/xm1*(x**2/2 - s1a) s1p = s1e + s1d + s1c + s1b + s1a + s1f xmax = max(abs(s1a),abs(s1b),abs(s1c),abs(s1d), + abs(s1e)) s1p = s*dfflo1(s1p,ier) endif * #] s1: * * finally ... * xx = s1p + s2p *--#] third try: endif endif 600 continue if ( xp .gt. xm1+xm2 ) then *--#[ imaginary part: * in this case ( xlam>0, so xp>(m1+m2)^2) ) there also * is an imaginary part y = -pi*diff/(slam*xp) else y = 0 *--#] imaginary part: endif else * the root is complex (k^2 between -(m1+m2)^2 and -(m2-m1)^2) *--#[ first try: slam = sqrt(-xlam) xnoe = dm2p + xm1 s1 = -(dm1m2/(2*xp))*xlogmm s2 = -diff/(slam*xp)*atan2(slam,xnoe) xx = s1 + s2 - 1 *--#] first try: y = 0 endif cdb0p = DCMPLX(DBLE(xx),DBLE(y)) cdb0 = cdb0p*(1/DBLE(xp)) goto 990 * -#] normal case: * #] unequal nonzero masses: 990 continue *###] ffxdbp: end herwig++-2.6.0.orig/Looptools/B/ffcdb0.F0000644000175000017500000004214111754474774020407 0ustar sylvestresylvestre#include "externals.h" *###[ ffcdb0: subroutine ffcdb0(cdb0,cdb0p,cp,cma,cmb,ier) ***#[*comment:*********************************************************** * * * Calculates the derivative of the two-point function with * * respect to p2, plus the same times p2. * * * * Input: cp (complex) k2, in B&D metric * * cma (complex) mass2 * * cmb (complex) mass2 * * * * Output: cdb0 (complex) dB0/dxp * * cdb0p (complex) cp*dB0/dxp * * ier (integer) # of digits lost, if >=100: error * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cdb0,cdb0p DOUBLE COMPLEX cp,cma,cmb * * local variables * integer ier0 DOUBLE COMPLEX cmamb,cmap,cmbp DOUBLE PRECISION xp,xma,xmb * * common * #include "ff.h" * * #] declarations: * #[ check input: if ( DIMAG(cma).eq.0 .and. DIMAG(cmb).eq.0 ) then xma = DBLE(cma) xmb = DBLE(cmb) xp = DBLE(cp) call ffxdb0(cdb0,cdb0p,xp,xma,xmb,ier) return endif * #] check input: * #[ get differences: ier0 = 0 cmamb = cma - cmb cmap = cma - cp cmbp = cmb - cp * #] get differences: * #[ calculations: call ffcdbp(cdb0,cdb0p,cp,cma,cmb,cmap,cmbp,cmamb,ier) * #] calculations: *###] ffcdb0: end *###[ ffcdbp: subroutine ffcdbp(cdb0,cdb0p,cp,cma,cmb,cmap,cmbp,cmamb,ier) ***#[*comment:*********************************************************** * * * calculates the derivatives of the two-point function * * * * Input: cp (complex) p.p, in B&D metric * * cma (complex) mass2, * * cmb (complex) mass2, * * dm[ab]p (complex) cm[ab] - cp * * cmamb (complex) cma - cmb * * * * Output: cdb0 (complex) B0' = dB0/dxp * * cdb0p (complex) cp*B0' * * ier (integer) 0=ok,>0=numerical problems,>100=error * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cdb0,cdb0p DOUBLE COMPLEX cp,cma,cmb,cmap,cmbp,cmamb * * local variables * integer i,initeq,jsign,init,ithres,initir,n1,n2,nffet1 logical lreal DOUBLE PRECISION ax,ffbnd,ffbndc, + xprceq,bdeq01,bdeq05,bdeq11,bdeq17,bdeq25, + xprcn3,bdn301,bdn305,bdn310,bdn315, + xprcn5,bdn501,bdn505,bdn510,bdn515, + xprec0,bdn001,bdn005,bdn010,bdn015,bdn020, + absc,xmax,prcsav DOUBLE COMPLEX cm,cdmp,cm1,cm2,cm1m2,cdm1p, + cdm2p,s,s1,s1a,s1b,s1p,s2,s2a,s2b,s2p,s3,cx,som, + clam,slam,xlogmm,alpha,alph1,xnoe,xpneq(30), + zfflo1,zfflo3,d1,d2,diff,h,a,b,c,d,beta, + betm2n,s1c,s1d,s1e,s1f,cqi(3),cqiqj(3,3),zm,zp DOUBLE COMPLEX cc DOUBLE PRECISION xp,xma,xmb,dmamb,dmap,dmbp,sprec save initeq,xpneq,init,initir, + xprceq,bdeq01,bdeq05,bdeq11,bdeq17,bdeq25, + xprcn3,bdn301,bdn305,bdn310,bdn315, + xprcn5,bdn501,bdn505,bdn510,bdn515, + xprec0,bdn001,bdn005,bdn010,bdn015,bdn020 *for ABSOFT only * DOUBLE COMPLEX csqrt * external csqrt * * common blocks * #include "ff.h" * * data * data xprceq /-1./ data xprec0 /-1./ data xprcn3 /-1./ data xprcn5 /-1./ data initeq /0/ * * statement function * absc(cc) = abs(DBLE(cc)) + abs(DIMAG(cc)) * #] declarations: * #[ the real cases: * if ( DIMAG(cma) .eq. 0 .and. DIMAG(cmb) .eq. 0 ) then lreal = .TRUE. elseif ( nschem.le.2 ) then lreal = .TRUE. if ( init.eq.0 ) then init = 1 print *,'ffcb0: nschem <= 2, ignoring complex masses: ', + nschem endif elseif ( nschem.le.4 ) then if ( init.eq.0 ) then init = 1 print *,'ffcdbp: nschem = 3,4 complex masses near ', + 'singularity: ',nschem endif if ( abs(DBLE(cma)) .lt. -xloss*DIMAG(cmb) + .and. abs(DBLE(cmbp)) .le. -nwidth*DIMAG(cmb) + .or. abs(DBLE(cmb)) .lt. -xloss*DIMAG(cma) + .and. abs(DBLE(cmap)) .le. -nwidth*DIMAG(cma) ) then lreal = .FALSE. else lreal = .TRUE. endif elseif ( nschem.le.6 ) then if ( init.eq.0 ) then init = 1 print *,'ffcdbp: nschem = 5,6 complex masses near ', + 'threshold: ',nschem endif cqi(1) = cma cqi(2) = cmb cqi(3) = cp cqiqj(1,2) = cmamb cqiqj(2,1) = -cqiqj(1,2) cqiqj(1,3) = cmap cqiqj(3,1) = -cqiqj(1,3) cqiqj(2,3) = cmbp cqiqj(3,2) = -cqiqj(2,3) cqiqj(1,1) = 0 cqiqj(2,2) = 0 cqiqj(3,3) = 0 call ffthre(ithres,cqi,cqiqj,3,1,2,3) if ( ithres.eq.0 .or. ithres.eq.1 .and. nschem.eq.5 ) then lreal = .TRUE. else lreal = .FALSE. endif else lreal = .FALSE. endif if ( lreal ) then xp = DBLE(cp) xma = DBLE(cma) xmb = DBLE(cmb) dmap = DBLE(cmap) dmbp = DBLE(cmbp) dmamb = DBLE(cmamb) sprec = precx precx = precc call ffxdbp(cdb0,cdb0p,xp,xma,xmb,dmap,dmbp,dmamb,ier) precx = sprec return endif * * #] the real cases: * #[ which case: * * sort according to the type of masscombination encountered: * 100: both masses zero, 200: one equal to zero, 300: both equal * 400: rest. * if ( cma .eq. 0 ) then if ( cmb .eq. 0 ) then goto 100 endif cm = cmb cdmp = cmbp goto 200 endif if ( cmb .eq. 0 ) then cm = cma cdmp = cmap goto 200 elseif ( cmamb .eq. 0 ) then cm = cma cdmp = cmap goto 300 elseif ( DBLE(cma) .gt. DBLE(cmb) ) then cm2 = cma cm1 = cmb cm1m2 = -cmamb cdm1p = cmbp cdm2p = cmap else cm1 = cma cm2 = cmb cm1m2 = cmamb cdm1p = cmap cdm2p = cmbp endif goto 400 * #] which case: * #[ both masses equal to zero: 100 continue if ( cp.ne.0 ) cdb0 = -1/cp cdb0p = -1 return * #] both masses equal to zero: * #[ one mass equal to zero: 200 continue * * special case cp = 0 * if ( cp .eq. 0 ) then cdb0p = 0 cdb0 = 1/(2*cm) goto 990 * * special case cp = cm * elseif ( cdmp.eq.0 ) then if ( initir.eq.0 ) then initir = 1 print *,'ffcdbd: IR divergent B0'', using cutoff ', & lambda endif if ( lambda .le. 0 ) then cdb0p = -1 + log(cm/mudim)/2 else cdb0p = -1 + log(cm/lambda)/2 endif cdb0 = cdb0p/cp goto 990 endif * * Normal case: * cx = cp/cm ax = absc(cx) if ( ax .lt. xloss ) then * #[ Taylor expansion: if ( xprec0 .ne. precx ) then xprec0 = precc prcsav = precx precx = precc bdn001 = ffbnd(2,1,xninv) bdn005 = ffbnd(2,5,xninv) bdn010 = ffbnd(2,10,xninv) bdn015 = ffbnd(2,15,xninv) bdn020 = ffbnd(2,20,xninv) precx = prcsav endif if ( ax .gt. bdn015 ) then som = cx*(DBLE(xninv(17)) + cx*(DBLE(xninv(18)) + + cx*(DBLE(xninv(19)) + cx*(DBLE(xninv(20)) + + cx*(DBLE(xninv(21)) ))))) else som = 0 endif if ( ax .gt. bdn010 ) then som = cx*(DBLE(xninv(12)) + cx*(DBLE(xninv(13)) + + cx*(DBLE(xninv(14)) + cx*(DBLE(xninv(15)) + + cx*(DBLE(xninv(16)) + som ))))) endif if ( ax .gt. bdn005 ) then som = cx*(DBLE(xninv(7)) + cx*(DBLE(xninv(8)) + + cx*(DBLE(xninv(9)) + cx*(DBLE(xninv(10)) + + cx*(DBLE(xninv(11)) + som ))))) endif if ( ax .gt. bdn001 ) then som = cx*(DBLE(xninv(3)) + cx*(DBLE(xninv(4)) + + cx*(DBLE(xninv(5)) + cx*(DBLE(xninv(6)) + som )))) endif cdb0p = cx*(DBLE(xninv(2)) + som) * #] Taylor expansion: else * #[ short formula: s = log(cdmp/cm) cdb0p = -(1 + s*cm/cp) * #] short formula: endif cdb0 = cdb0p/cp goto 990 * #] one mass equal to zero: * #[ both masses equal: 300 continue * * Both masses are equal. Not only this speeds up things, some * cancellations have to be avoided as well. * * first a special case * if ( absc(cp) .lt. 8*xloss*absc(cm) ) then * -#[ taylor expansion: * * a Taylor expansion seems appropriate as the result will go * as k^2 but seems to go as 1/k !! * *--#[ data and bounds: if ( initeq .eq. 0 ) then initeq = 1 xpneq(1) = 1/6D0 do 1 i=2,30 xpneq(i) = - xpneq(i-1)*DBLE(i)/DBLE(2*(2*i+1)) 1 continue endif if (xprceq .ne. precx ) then * * calculate the boundaries for the number of terms to be * included in the taylorexpansion * xprceq = precx bdeq01 = ffbndc(1,1,xpneq) bdeq05 = ffbndc(1,5,xpneq) bdeq11 = ffbndc(1,11,xpneq) bdeq17 = ffbndc(1,17,xpneq) bdeq25 = ffbndc(1,25,xpneq) endif *--#] data and bounds: cx = -cp/cm ax = absc(cx) if ( ax .gt. bdeq17 ) then som = cx*(xpneq(18) + cx*(xpneq(19) + cx*(xpneq(20) + + cx*(xpneq(21) + cx*(xpneq(22) + cx*(xpneq(23) + + cx*(xpneq(24) + cx*(xpneq(25) )))))))) else som = 0 endif if ( ax .gt. bdeq11 ) then som = cx*(xpneq(12) + cx*(xpneq(13) + cx*(xpneq(14) + + cx*(xpneq(15) + cx*(xpneq(16) + cx*(xpneq(17) + som )))) + )) endif if ( ax .gt. bdeq05 ) then som = cx*(xpneq(6) + cx*(xpneq(7) + cx*(xpneq(8) + cx*( + xpneq(9) + cx*(xpneq(10) + cx*(xpneq(11) + som )))))) endif if ( ax .gt. bdeq01 ) then som = cx*(xpneq(2) + cx*(xpneq(3) + cx*(xpneq(4) + cx*( + xpneq(5) + som )))) endif cdb0p = -cx*(xpneq(1)+som) if ( cp.ne.0 ) then cdb0 = cdb0p*(1/DBLE(cp)) else cdb0 = xpneq(1)/cm endif goto 990 * -#] taylor expansion: endif * -#[ normal case: * * normal case * call ffclmb(clam,-cp,-cm,-cm,cdmp,cdmp,czero) slam = sqrt(clam) call ffcoot(zm,zp,cone,chalf,cm/cp,slam/(2*cp),ier) s1 = zp/zm if( abs(s1-1) .lt. xloss ) then * In this case a quicker and more accurate way is to * calculate log(1-cx). print *,'Not tested, probably wrong' ier = ier + 50 s2 = (cp - slam) if ( absc(s2) .lt. xloss*absc(cp) ) then s2 = -slam*(cp+slam)/(4*cp*cm) else s2 = -2*slam/s2 endif s = -2*cm/slam*zfflo1(s2/(2*cm),ier) else * finally the normal case s = -2*cm/slam*log(s1) endif * * eta terms * n1 = nffet1(zp,1/zm,s1,ier) n2 = nffet1(-zp,-1/zm,s1,ier) if ( n1+n2 .ne. 0 ) then s1 = cm/slam*c2ipi*(n1+n2) s = s + s1 endif cdb0p = s - 1 cdb0 = cdb0p/cp goto 990 * -#] normal case: * * #] both masses equal: * #[ unequal nonzero masses: 400 continue * -#[ get log(cm2/cm1): cx = cm2/cm1 c = cx-1 if ( 1 .lt. xclogm*absc(cx) ) then call fferr(8,ier) xlogmm = 0 elseif ( absc(c) .lt. xloss ) then xlogmm = zfflo1(cm1m2/cm1,ier) else xlogmm = log(cx) endif * -#] get log(cm2/cm1): * -#[ cp = 0: * * first a special case * if ( cp .eq. 0 ) then * * repaired 19-nov-1993, see b2.frm * s1 = cm1*cm2*xlogmm/cm1m2**3 s2 = (cm1+cm2)/(2*cm1m2**2) s = s1 + s2 if ( absc(s) .lt. xloss**2*absc(s2) ) then * * second try * h = zfflo3(cm1m2/cm1,ier) s1 = -cm1*h/cm1m2**2 s2 = 1/(2*cm1) s3 = cm1**2*h/cm1m2**3 s = s1 + s2 + s3 if ( absc(s) .lt. xloss*max(absc(s2),absc(s3)) ) then call ffwarn(234,ier,absc(s),absc(s2)) endif endif cdb0 = s cdb0p = 0 goto 990 endif * -#] cp = 0: * -#[ normal case: * * proceeding with the normal case * call ffclmb(clam,-cp,-cm2,-cm1,cdm2p,cdm1p,cm1m2) diff = clam + cp*(cdm2p+cm1) if ( absc(diff) .lt. xloss*absc(clam) ) then h = cm1m2**2 - cp*(cm1+cm2) if ( absc(h) .lt. xloss*absc(cm1m2)**2 ) then if ( absc(cm1m2)**2 .lt. absc(clam) ) diff = h call ffwarn(235,ier,absc(diff),min(absc(cm1m2)**2, + absc(clam))) endif endif *--#[ first try: * first try the normal way slam = sqrt(clam) if ( abs(DBLE(cm1)) .lt. abs(DBLE(cm2)) ) then s2a = cm1 + cdm2p else s2a = cm2 + cdm1p endif s2 = s2a + slam if ( absc(s2) .gt. xloss*absc(slam) ) then * looks fine jsign = 1 else s2 = s2a - slam jsign = -1 endif s2 = s2/sqrt(4*cm1*cm2) if ( absc(s2) .lt. xclogm ) then call fferr(9,ier) s2 = 0 elseif ( absc(s2-1) .lt. xloss ) then ier = ier + 50 print *,'ffcdb0: untested: s2 better in first try' if ( jsign.eq.1 ) then s2 = -slam*(s2a+slam)/(2*cm1*cm2) s2 = -diff/(2*slam*cp)*zfflo1(s2,ier) else s2 = +slam*(s2a-slam)/(2*cm1*cm2) s2 = +diff/(2*slam*cp)*zfflo1(s2,ier) endif else s2 = -diff/(2*slam*cp)*2*log(s2) if ( jsign .eq. -1 ) s2 = -s2 endif s1 = -cm1m2*xlogmm/(2*cp) cdb0p = s1+s2-1 *--#] first try: if ( absc(cdb0p) .lt. xloss**2*max(absc(s1),absc(s2)) ) then *--#[ second try: * this is unacceptable, try a better solution s1a = diff + slam*cm1m2 if ( absc(s1a) .gt. xloss*absc(diff) ) then * this works s1 = -s1a/(2*cp*slam) else * by division a more accurate form can be found s1 = -2*cm1*cm2*cp/(slam*(diff - slam*cm1m2)) endif s = s1 s1 = s1*xlogmm if ( abs(DBLE(cp)).lt.abs(DBLE(cm2)) ) then s2a = cp - cm1m2 else s2a = cm2 - cdm1p endif s2 = s2a - slam if ( absc(s2) .gt. xloss*absc(slam) ) then * at least reasonable s2 = s2 / (2*cm2) else * division again s2 = (2*cp) / (s2a+slam) endif if ( absc(s2) .lt. .1 ) then * choose a quick way to get the logarithm s2 = zfflo1(s2,ier) else s2 = log(1-s2) endif s2 = -diff/(slam*cp)*s2 cdb0p = s1 + s2 - 1 *--#] second try: if ( absc(cdb0p) .lt. xloss**2*max(absc(s1),absc(s2)) ) + then *--#[ third try: * (we accept two times xloss because that's the same * as in this try) * A Taylor expansion might work. We expand * inside the logs. Only do the necessary work. * * #[ split up 1: xnoe = s2a+slam a = 1 b = 2/xnoe-1/cp c = -4/(cp*xnoe) d = sqrt(cp**(-2) + (2/xnoe)**2) call ffcoot(d1,d2,a,b,c,d,ier) if ( DBLE(cp).gt.0 ) then beta = d2 else beta = d1 endif alpha = beta*diff/slam alph1 = 1-alpha if ( absc(alph1) .lt. xloss ) then s1a = 4*cp**2*cm1*cm2/(slam*cm1m2*(diff-slam* + cm1m2)) s1b = -diff/slam*4*cm1*cp/(cm1m2*xnoe*(2*cp- + xnoe)) b = -1/cp c = -(2/xnoe)**2 call ffcoot(d1,d2,a,b,c,d,ier) if ( DBLE(cp).gt.0 ) then betm2n = d2 else betm2n = d1 endif d1 = s1a + s1b - diff/slam*betm2n xmax = max(absc(s1a),absc(s1b)) if ( xmax .lt. 1 ) then alph1 = d1 else xmax = 1 endif if ( absc(alph1) .lt. xloss*xmax ) + call ffwarn(236,ier,absc(alph1),xmax) else betm2n = beta - 2/xnoe endif * #] split up 1: * #[ s2: * * first s2: * s2p = s2 - alpha if ( absc(s2p) .lt. xloss*absc(s2) ) then * -#[ bounds: * determine the boundaries for 1,5,10,15 terms if ( xprcn5 .ne. precx ) then xprcn5 = precc prcsav = precx precx = precc bdn501 = ffbnd(3,1,xinfac) bdn505 = ffbnd(3,5,xinfac) bdn510 = ffbnd(3,10,xinfac) bdn515 = ffbnd(3,15,xinfac) precx = prcsav endif * -#] bounds: cx = beta*cp ax = absc(cx) if ( ax .gt. bdn510 ) then s2a = cx*(DBLE(xinfac(13)) + cx*(DBLE(xinfac( + 14))+ cx*(DBLE(xinfac(15)) + cx*(DBLE(xinfac( + 16))+ cx*(DBLE(xinfac(17))))))) else s2a = 0 endif if ( ax .gt. bdn505 ) then s2a = cx*(DBLE(xinfac( 8)) + cx*(DBLE(xinfac( + 9))+ cx*(DBLE(xinfac(10)) + cx*(DBLE(xinfac( + 11))+ cx*(DBLE(xinfac(12)) + s2a))))) endif if ( ax .gt. bdn501 ) then s2a =cx*(DBLE(xinfac(4))+cx*(DBLE(xinfac(5)) + +cx*(DBLE(xinfac(6))+cx*(DBLE(xinfac(7)) + + s2a)))) endif s2a = cx**3*(DBLE(xinfac(3))+s2a) s2b = 2*cp/xnoe*(s2a + cx**2/2) s2p = s2b - s2a s2p = -diff/(cp*slam)*zfflo1(s2p,ier) endif * #] s2: * #[ s1: * * next s1: * s1p = s1 - alph1 if ( absc(s1p) .lt. xloss*absc(s1) ) then * -#[ bounds: * determine the boundaries for 1,5,10,15 terms if ( xprcn3 .ne. precx ) then xprcn3 = precc prcsav = precx precx = precc bdn301 = ffbnd(3,1,xinfac) bdn305 = ffbnd(3,5,xinfac) bdn310 = ffbnd(3,10,xinfac) bdn315 = ffbnd(3,15,xinfac) precx = prcsav endif * -#] bounds: * cx = slam*(diff-slam*cm1m2)*alph1/(2*cp*cm1*cm2) ax = absc(cx) h = (2*cp*(cm1+cm2) - cp**2)/(slam-cm1m2) * * see form job gets1.frm * s1b = diff*(diff-slam*cm1m2)*betm2n/(2*cp*cm1* + cm2) s1c = 1/(cm1*xnoe*(2*cp-xnoe))*( + cp*( 4*cp*cm2 + 2*cm1m2**2/cm2*(cp-h) + + 2*cm1m2*(3*cp-h) - 8*cm1m2**2 ) + - 2*cm1m2**3/cm2*(3*cp-h) + + 4*cm1m2**4/cm2 + ) s1d = cx*cm1m2/cm1 s1e = -cx**2/2 if ( ax .gt. bdn310 ) then s1a = cx*(DBLE(xinfac(13)) + cx*(DBLE(xinfac( + 14))+ cx*(DBLE(xinfac(15)) + cx*(DBLE(xinfac( + 16))+ cx*(DBLE(xinfac(17))))))) else s1a = 0 endif if ( ax .gt. bdn305 ) then s1a = cx*(DBLE(xinfac( 8)) + cx*(DBLE(xinfac( + 9))+ cx*(DBLE(xinfac(10)) + cx*(DBLE(xinfac( + 11))+ cx*(DBLE(xinfac(12)) + s1a))))) endif if ( ax .gt. bdn301 ) then s1a =cx*(DBLE(xinfac(4))+cx*(DBLE(xinfac(5)) + +cx*(DBLE(xinfac(6))+cx*(DBLE(xinfac(7)) + +s1a)))) endif s1a = -cx**3 *(DBLE(xinfac(3)) + s1a) s1f = cm1m2/cm1*(cx**2/2 - s1a) s1p = s1e + s1d + s1c + s1b + s1a + s1f xmax = max(absc(s1a),absc(s1b),absc(s1c), + absc(s1d),absc(s1e)) s1p = s*zfflo1(s1p,ier) endif * #] s1: * * finally ... * cdb0p = s1p + s2p *--#] third try: endif endif cdb0 = cdb0p*(1/DBLE(cp)) * -#] normal case: * #] unequal nonzero masses: 990 continue *###] ffcdbp: end herwig++-2.6.0.orig/Looptools/tester.cc0000644000175000017500000002167411754474774020620 0ustar sylvestresylvestre// test program to check looptool linking against c++ code. #include #include #include "Herwig++/Looptools/clooptools.h" namespace LT = Herwig::Looptools; using namespace std; int main() { { double ps2 = 1.2268e+10; double pv1s = -4.76837e-07; double pv2s = -4.76837e-07; double mls = 2.65501e+11; LT::ltini(); LT::clearcache(); int theC = LT::Cget(ps2,pv2s,pv1s, mls,mls,mls); cerr << "theC: " << theC << '\n'; complex C1 = LT::Cval(LT::cc1,theC); LT::ltexi(); cout << "after: " << C1 << endl; cerr << "int : " << sizeof(int) << " long : " << sizeof(long) << '\n'; } // ################################################## LT::ltini(); typedef complex Complex; //Kinematic invariants double ps2 = 1.2268e+10; double pv1s = -4.76837e-07; double pv2s = -4.76837e-07; //cerr << ps2 << ' ' << pv1s << ' ' << pv2s << ' ' << 6 << '\n'; Complex a(0.),b(0.),c(0.),d(0.),e(0.),f(0.); for(unsigned int i = 0; i< 1; ++i) { double lmass = 515268; //cerr << lmass << '\n'; double mls = lmass * lmass; Complex lc = 803.477; //cerr << lc << '\n'; LT::clearcache(); { Complex C0 = LT::C0i(LT::cc0,pv1s,pv2s,ps2,mls,mls,mls); int theC = LT::Cget(ps2,pv2s,pv1s, mls,mls,mls); Complex C1 = LT::Cval(LT::cc1,theC); Complex C2 = LT::Cval(LT::cc2,theC); Complex C00 = LT::Cval(LT::cc00,theC); Complex C11 = LT::Cval(LT::cc11,theC); Complex C12 = LT::Cval(LT::cc12,theC); Complex C22 = LT::Cval(LT::cc22,theC); Complex lpr = lc + 803.477; //cerr << lpr << '\n'; a += 4.*lpr*lmass*(-2.*LT::B0(ps2,mls,mls) + C0*(pv1s + pv2s - ps2) + 8.*C00)/ps2; b += 8.*lpr*lmass*(C0 + 3.*C1 +3.*C2 + 2.*(C11 + 2.*C12 + C22)); c += 4.*lpr*lmass*(C0 +2.*(2.*C1+C2 + 2.*(C11 +C12))); d += 4.*lpr*lmass*(C0 + 4.*(C1+C11+C12)); e += 8.*lpr*lmass*(C1 + 2.*C11); f += 4.*(lc - 803.477)*lmass*C0; cerr << a << ' ' << b << ' ' << c << ' ' << d << ' ' << e << ' ' << f << '\n'; } LT::clearcache(); { int theC = LT::Cget(ps2,pv2s,pv1s,mls,mls,mls); Complex C1 = LT::Cval(LT::cc1,theC); Complex C2 = LT::Cval(LT::cc2,theC); Complex C00 = LT::Cval(LT::cc00,theC); Complex C11 = LT::Cval(LT::cc11,theC); Complex C12 = LT::Cval(LT::cc12,theC); Complex C22 = LT::Cval(LT::cc22,theC); /** * vector type can contain different types of particle * and hence the coupling is different * Here left is used for the coupling of the ith * type rather than creating another * vector to hold them. */ double pv12 = pv1s*pv2s; Complex C0A(LT::C0(pv1s,pv2s,ps2,mls,mls,mls)),A0A(LT::A0(mls)), B0A(LT::B0(ps2 ,mls,mls)), B1A(LT::B1(ps2 ,mls,mls)),B11A(LT::B11(ps2 ,mls,mls)), B0B(LT::B0(pv1s,mls,mls)),B00B(LT::B00(pv1s,mls,mls)), B1B(LT::B1(pv1s,mls,mls)),B11B(LT::B11(pv1s,mls,mls)), B0C(LT::B0(pv2s,mls,mls)),B00C(LT::B00(pv2s,mls,mls)), B1C(LT::B1(pv2s,mls,mls)),B11C(LT::B11(pv2s,mls,mls)); double mls2(mls*mls),mls3(mls2*mls); // coefficient a += 0.5*lc*(B0A*(2.*mls2*(-6.*mls + pv1s + pv2s) + mls*(-2.*mls + pv1s + pv2s)*ps2) + 2.*(8.*mls3*C0A*pv1s - 2.*mls2*C0A*(pv1s*pv1s) + 2.*mls*B00B*pv2s + 8.*mls3*C0A*pv2s + mls*B0B*pv12 + mls*B0C*pv12 - B00B*pv12 - 2.*mls2*C0A*(pv2s*pv2s) + B00C*pv1s*(2.*mls - pv2s) - mls*A0A*(pv1s + pv2s) - 8.*mls3*C0A*ps2 + 2.*mls2*C0A*pv1s*ps2 + 2.*mls2*C0A*pv2s*ps2 - mls*C0A*pv12*ps2 + (24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C00 ) )/mls3*2./ps2; b += -0.25*lc* ( 8.*mls*B0C*pv2s - 4.*B11B*(2.*mls - pv1s)*pv2s + 2.*B1B*(2.*mls - pv1s)*(4.*mls - 3.*pv2s) + 4.*B00C*(2.*mls - pv2s) - 2.*A0A*(2.*mls + pv2s) + 2.*B0B*(4.*mls2 - 2.*mls*pv1s + pv12) - 2.*mls*B0A*(pv2s - ps2) - 4.*mls*B11A*(2.*mls + ps2) + B1A*(2.*mls - pv2s)*(2.*mls + ps2) - B1A*(6.*mls - pv2s)*(2.*mls + ps2) - B0A*(8.*mls2 + (2.*mls - pv2s)*ps2) - 2.*C0A*(2.*mls*(12.*mls2 + pv2s*(pv1s + pv2s) - 2.*mls*(pv1s + 3.*pv2s)) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2) + 4.*mls*(2.*mls*B0A + (B1A + B11A)*(2.*mls + ps2)) - 2.*(2.*mls*(36.*mls2 + 2.*pv12 + (pv2s*pv2s) - 6.*mls*(pv1s + pv2s)) + (12.*mls2 + 3.*pv12 - 2.*mls*(3.*pv1s + 4.*pv2s))*ps2)*C1 - 2.*(2.*mls*(36.*mls2 + 2.*pv12 + (pv2s*pv2s) - 6.*mls*(pv1s + pv2s)) + (12.*mls2 + 3.*pv12 - 2.*mls*(3.*pv1s + 4.*pv2s))*ps2)*C2 - 4.*(24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C11 - 8.*(24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C12 - 4.*(24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C22 )/mls3; c+= -lc* (-12.*mls2 + 8.*mls*pv1s - (pv1s*pv1s) + 48.*B00B*(2.*mls - pv1s) + 24.*B00C*(2.*mls - pv2s) - 6.*A0A*(6.*mls + pv1s - 2.*ps2) - 6.*B1B*(2.*mls - pv1s)*(2.*mls - pv1s + 3.*pv2s - ps2) - 24.*mls*B11A*(2.*mls + ps2) - 3.*B1A*(4.*mls - pv1s + pv2s - ps2)*(2.*mls + ps2) - 3.*B1A*(2.*mls + ps2)*(4.*mls + pv1s - pv2s + ps2) + 6.*B1C*(2.*mls - pv2s)*(-3.*pv1s + pv2s + ps2) + 12.*B11C*(2.*mls - pv2s)*(-pv1s + pv2s + ps2) + 6.*B11B*(2.*mls - pv1s)*(3.*pv1s - 2.*pv2s + 2.*ps2) + 6.*B0C*(2.*mls*pv1s + (4.*mls + pv1s)*pv2s - 4.*mls*ps2) - 6.*B0B*(2.*mls2 - 5.*mls*pv1s - (2.*mls + pv1s)*pv2s + 4.*mls*ps2) - 3.*B0A*(2.*mls*(4.*mls + pv1s + 2.*pv2s) - (4.*mls + pv1s)*ps2) - 3.*B0A*(2.*mls*(4.*mls + 2.*pv1s + pv2s) - (2.*mls + pv2s)*ps2 + (ps2*ps2)) - 6.*C0A*(2.*mls*(12.*mls2 - (pv1s*pv1s) + pv12 + (pv2s*pv2s) - 6.*mls*(pv1s + pv2s)) + (12.*mls2 + pv12 + 2.*mls*(pv1s - pv2s))*ps2 - 2.*mls*(ps2*ps2)) + 24.*mls*(2.*mls*B0A + (B1A + B11A)*(2.*mls + ps2)) - 24.*(mls*(24.*mls2 - (pv1s*pv1s) + 2.*pv12 + (pv2s*pv2s) - 4.*mls*(pv1s + pv2s)) + (4.*mls2 + pv12 - mls*(pv1s + 3.*pv2s))*ps2)*C1 - 12.*(24.*mls3 - 2.*mls*(pv1s*pv1s) - 4.*mls2*(pv1s + pv2s) + (4.*mls2 - 2.*mls*pv2s + pv12)*ps2)*C2 - 24.*(24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) +(2.*mls - pv1s)*(2.*mls - pv2s)*ps2)* C11 - 24.*(24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C12 + 72.*(2.*mls - pv1s)*(-0.125*mls - 0.125*A0A + (0.25*mls*B1B) + (0.125*pv1s*B11B)) - 12.*(-2.*mls + pv1s)*(0.25*mls - 0.25*A0A - (0.5*mls*B1B) - (0.75*pv1s*B11B)) )/24./mls3; d+= -lc* (-2.*mls2*B0A - 2.*mls*C0A*(8.*mls2 + pv12 - 2.*mls*(pv1s + pv2s)) - mls*B1A*(2.*mls + ps2) - mls*B11A*(2.*mls + ps2) + mls*(2.*mls*B0A + (B1A + B11A)*(2.*mls + ps2)) - (24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)* C1 - 2.*mls*pv12*C2 - (24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C11 - (24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) +(2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C12 )/mls3; e+= -0.25*lc* (8.*mls*B0B*pv1s + 4.*B00B*(2*mls - pv1s) - 2.*A0A*(2.*mls + pv1s) - 4.*B11C*pv1s*(2.*mls - pv2s) + 2.*B1C*(4.*mls - 3.*pv1s)*(2.*mls - pv2s) + 2.*B0C*(4.*mls2 - 2.*mls*pv2s + pv12) - 2.*mls*B0A*(pv1s - ps2) + 4.*mls*C0A*pv1s*(4.*mls - pv2s - ps2) - 4.*mls*B11A*(2.*mls + ps2) + B1A*(2.*mls - pv1s)*(2.*mls + ps2) - B1A*(6.*mls - pv1s)*(2.*mls + ps2) - B0A*(8.*mls2 + (2.*mls - pv1s)*ps2) + 4.*mls*(2.*mls*B0A + (B1A + B11A)*(2.*mls + ps2)) - 2*(2.*mls*(12.*mls2 - pv1s + 2.*pv12 - 2.*mls*(pv1s + pv2s)) + (4.*mls2 - 2.*mls*pv2s + pv12)*ps2)*C1 - 4.*(24.*mls3 + 2.*mls*pv12 - 4.*mls2*(pv1s + pv2s) + (2.*mls - pv1s)*(2.*mls - pv2s)*ps2)*C11 )/mls3; cerr << a << ' ' << b << ' ' << c << ' ' << d << ' ' << e << ' ' << f << '\n'; } LT::clearcache(); { int theC = LT::Cget(ps2,pv2s,pv1s, mls,mls,mls); Complex C1 = LT::Cval(LT::cc1,theC); Complex C2 = LT::Cval(LT::cc2,theC); Complex C00 = LT::Cval(LT::cc00,theC); Complex C11 = LT::Cval(LT::cc11,theC); Complex C12 = LT::Cval(LT::cc12,theC); Complex C22 = LT::Cval(LT::cc22,theC); Complex Cz = LT::C0(pv1s,pv2s,ps2,mls,mls,mls); /** * vector type can contain different types of particle * and hence the coupling is different * Here left[i] is used for the coupling of the ith * type rather than creating another * vector to hold them. */ a += 4.*lc*(LT::B0(ps2,mls,mls) - 4.*C00)/ps2; b += -4.*lc*(Cz + 3.*C1 + 3.*C2 +2.*(C11 + 2.*C12 + C22 )); c += -2.*lc*(Cz + 2.*(2.*C1+ C2 + 2.*(C11 +C12))); d += -8.*lc*(C1 +C11 + C12); e += -4.*lc*(C1 + 2.*C11); cerr << a << ' ' << b << ' ' << c << ' ' << d << ' ' << e << ' ' << f << '\n'; } } LT::clearcache(); LT::ltexi(); return 0; } herwig++-2.6.0.orig/Looptools/util/0000755000175000017500000000000011756464211017731 5ustar sylvestresylvestreherwig++-2.6.0.orig/Looptools/util/ini.F0000644000175000017500000002165411754474774020644 0ustar sylvestresylvestre* ini.F * routines for initializing and setting some parameters * this file is part of LoopTools * last modified 9 Dec 10 th #include "defs.h" subroutine clearcache implicit none #include "lt.h" integer i do i = 1, ncaches cacheptr(1,1,i) = 0 cacheptr(2,1,i) = 0 enddo end ************************************************************************ subroutine markcache implicit none #include "lt.h" integer i do i = 1, ncaches savedptr(1,i) = cacheptr(1,1,i) savedptr(2,i) = cacheptr(2,1,i) enddo end ************************************************************************ subroutine restorecache implicit none #include "lt.h" integer i do i = 1, ncaches cacheptr(1,1,i) = savedptr(1,i) cacheptr(2,1,i) = savedptr(2,i) enddo end ************************************************************************ * Legacy function, provided for compatibility only. * Works only approximately as before! subroutine setcachelast(base, offset) implicit none double complex base(*) integer offset logical ini data ini /.TRUE./ if( ini ) then print *, "setcachelast is deprecated" print *, "use clearcache or restorecache instead" ini = .FALSE. endif if( offset .eq. 0 ) then call clearcache else call restorecache endif end ************************************************************************ * Legacy function, provided for compatibility only. * Works only approximately as before! integer function getcachelast(base) implicit none double complex base(*) logical ini data ini /.TRUE./ if( ini ) then print *, "getcachelast is deprecated" print *, "use markcache instead" ini = .FALSE. endif getcachelast = 1 call markcache end ************************************************************************ subroutine setmudim(mudim_) implicit none double precision mudim_ #include "lt.h" mudim = mudim_ call clearcache end ************************************************************************ double precision function getmudim() implicit none #include "lt.h" getmudim = mudim end ************************************************************************ subroutine setdelta(delta_) implicit none double precision delta_ #include "lt.h" delta = delta_ call clearcache end ************************************************************************ double precision function getdelta() implicit none #include "lt.h" getdelta = delta end ************************************************************************ subroutine setlambda(lambda_) implicit none double precision lambda_ #include "lt.h" lambda = lambda_ call clearcache end ************************************************************************ double precision function getlambda() implicit none #include "lt.h" getlambda = lambda end ************************************************************************ subroutine setminmass(minmass_) implicit none double precision minmass_ #include "lt.h" minmass = minmass_ call clearcache end ************************************************************************ double precision function getminmass() implicit none #include "lt.h" getminmass = minmass end ************************************************************************ subroutine setmaxdev(maxdev_) implicit none double precision maxdev_ #include "lt.h" maxdev = maxdev_ end ************************************************************************ double precision function getmaxdev() implicit none #include "lt.h" getmaxdev = maxdev end ************************************************************************ subroutine setwarndigits(warndigits_) implicit none integer warndigits_ #include "lt.h" warndigits = warndigits_ end ************************************************************************ integer function getwarndigits() implicit none #include "lt.h" getwarndigits = warndigits end ************************************************************************ subroutine seterrdigits(errdigits_) implicit none integer errdigits_ #include "lt.h" errdigits = errdigits_ end ************************************************************************ integer function geterrdigits() implicit none #include "lt.h" geterrdigits = errdigits end ************************************************************************ subroutine setversionkey(versionkey_) implicit none integer versionkey_ #include "lt.h" versionkey = versionkey_ call clearcache end ************************************************************************ integer function getversionkey() implicit none #include "lt.h" getversionkey = versionkey end ************************************************************************ subroutine setdebugkey(debugkey_) implicit none integer debugkey_ #include "lt.h" debugkey = debugkey_ end ************************************************************************ integer function getdebugkey() implicit none #include "lt.h" getdebugkey = debugkey end ************************************************************************ subroutine setdebugrange(debugfrom_, debugto_) implicit none integer debugfrom_, debugto_ #include "lt.h" debugfrom = debugfrom_ debugto = debugto_ end ************************************************************************ subroutine setcmpbits(cmpbits_) implicit none integer cmpbits_ #include "lt.h" cmpbits = cmpbits_ end ************************************************************************ integer function getcmpbits() implicit none #include "lt.h" getcmpbits = cmpbits end ************************************************************************ * This silly subroutine is called from ffini while determining * the working precision of the machine we're running on. * It works around the optimizer to guarantee that we're not in * fact determining the precision of the FPU registers. subroutine ffset(res, x) implicit none DOUBLE PRECISION res, x res = x end ************************************************************************ block data LTNameData implicit none integer i character*6 paraname(Pee,2:5) common /ltparanames/ paraname character*8 coeffname(Nee,2:5) common /ltcoeffnames/ coeffname data (paraname(i,2), i = 1, Pbb) / & "p", "m1", "m2" / data (paraname(i,3), i = 1, Pcc) / & "p1", "p2", "p1p2", "m1", "m2", "m3" / data (paraname(i,4), i = 1, Pdd) / & "p1", "p2", "p3", "p4", "p1p2", "p2p3", & "m1", "m2", "m3", "m4" / data (paraname(i,5), i = 1, Pee) / & "p1", "p2", "p3", "p4", "p5", & "p1p2", "p2p3", "p3p4", "p4p5", "p5p1", & "m1", "m2", "m3", "m4", "m5" / data (coeffname(i,2), i = 1, Nbb) / & "bb0", "bb1", "bb00", "bb11", "bb001", "bb111", & "dbb0", "dbb1", "dbb00", "dbb11" / data (coeffname(i,3), i = 1, Ncc) / & "cc0", "cc1", "cc2", "cc00", "cc11", "cc12", "cc22", & "cc001", "cc002", "cc111", "cc112", "cc122", "cc222", & "cc0000", "cc0011", "cc0012", "cc0022", "cc1111", & "cc1112", "cc1122", "cc1222", "cc2222" / data (coeffname(i,4), i = 1, Ndd) / & "dd0", "dd1", "dd2", "dd3", "dd00", "dd11", "dd12", & "dd13", "dd22", "dd23", "dd33", "dd001", "dd002", "dd003", & "dd111", "dd112", "dd113", "dd122", "dd123", "dd133", & "dd222", "dd223", "dd233", "dd333", "dd0000", "dd0011", & "dd0012", "dd0013", "dd0022", "dd0023", "dd0033", "dd1111", & "dd1112", "dd1113", "dd1122", "dd1123", "dd1133", "dd1222", & "dd1223", "dd1233", "dd1333", "dd2222", "dd2223", "dd2233", & "dd2333", "dd3333", "dd00001", "dd00002", "dd00003", & "dd00111", "dd00112", "dd00113", "dd00122", "dd00123", & "dd00133", "dd00222", "dd00223", "dd00233", "dd00333", & "dd11111", "dd11112", "dd11113", "dd11122", "dd11123", & "dd11133", "dd11222", "dd11223", "dd11233", "dd11333", & "dd12222", "dd12223", "dd12233", "dd12333", "dd13333", & "dd22222", "dd22223", "dd22233", "dd22333", "dd23333", & "dd33333" / data (coeffname(i,5), i = 1, Nee) / & "ee0", "ee1", "ee2", "ee3", "ee4", "ee00", "ee11", & "ee12", "ee13", "ee14", "ee22", "ee23", "ee24", "ee33", & "ee34", "ee44", "ee001", "ee002", "ee003", "ee004", & "ee111", "ee112", "ee113", "ee114", "ee122", "ee123", & "ee124", "ee133", "ee134", "ee144", "ee222", "ee223", & "ee224", "ee233", "ee234", "ee244", "ee333", "ee334", & "ee344", "ee444", "ee0000", "ee0011", "ee0012", "ee0013", & "ee0014", "ee0022", "ee0023", "ee0024", "ee0033", "ee0034", & "ee0044", "ee1111", "ee1112", "ee1113", "ee1114", "ee1122", & "ee1123", "ee1124", "ee1133", "ee1134", "ee1144", "ee1222", & "ee1223", "ee1224", "ee1233", "ee1234", "ee1244", "ee1333", & "ee1334", "ee1344", "ee1444", "ee2222", "ee2223", "ee2224", & "ee2233", "ee2234", "ee2244", "ee2333", "ee2334", "ee2344", & "ee2444", "ee3333", "ee3334", "ee3344", "ee3444", "ee4444" / end herwig++-2.6.0.orig/Looptools/util/ffxli2.F0000644000175000017500000003541411754474774021256 0ustar sylvestresylvestre#include "externals.h" *###[ ffxli2: subroutine ffxli2(xdilog,xlog,x,ier) ***#[*comment:*********************************************************** * * * Computes the dilogarithm (Li2, Sp) for (real) x to precision * * precx. It is assumed that -1<=x<=1/2. As it is available anyway* * log(1-x) = -Li1(x) is also passed. * * * * Input: x (real) * * * * Output: xdilog (real) Li2(x) * * xlog (real) log(1-x) = -Li1(x) * * ier (integer) 0=OK, 1=num prob, 2=error * * * * Calls: log,dfflo1 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE PRECISION xdilog,xlog,x * * local variables * integer ipi12 DOUBLE PRECISION dfflo1,u,u2,a,ffbnd, + xprec,bdn02,bdn05,bdn10,bdn15 DOUBLE COMPLEX zxdilo,zlog external ffbnd,dfflo1 save xprec,bdn02,bdn05,bdn10,bdn15 * * common blocks * #include "ff.h" * #] declarations: * #[ initialisations: data xprec /-1D0/ if ( xprec .ne. precx ) then xprec = precx bdn02 = ffbnd(1,2,bf) bdn05 = ffbnd(1,5,bf) bdn10 = ffbnd(1,10,bf) bdn15 = ffbnd(1,15,bf) endif * #] initialisations: * #[ if the argument is too large... if ( x .lt. -1.5 .or. x .gt. .75 ) then call ffzxdl(zxdilo,ipi12,zlog,x,0,ier) if ( DIMAG(zxdilo) .ne. 0 ) then call fferr(52,ier) endif xdilog = DBLE(zxdilo) + ipi12*pi12 xlog = DBLE(zlog) return endif * #] if the argument is too large... * #[ exceptional cases: if ( x .eq. -1 ) then xdilog = -pi12 xlog = log(2D0) return elseif ( x .eq. .5D0 ) then xdilog = - xlg2**2/2 + pi12 xlog = - xlg2 return elseif ( abs(x) .lt. precx ) then xdilog = x xlog = -x return endif * #] exceptional cases: * #[ calculate dilog: if ( abs(x) .lt. xloss ) then xlog = dfflo1(x,ier) else xlog = log(1-x) endif u = -xlog u2 = u*u a = abs(u2) if ( a .gt. bdn15 ) then xdilog = u2*(bf(16) + u2*(bf(17) + u2*(bf(18) + + u2*(bf(19) + u2*bf(20) )))) else xdilog = 0 endif if ( a .gt. bdn10 ) then xdilog = u2*(bf(11) + u2*(bf(12) + u2*(bf(13) + + u2*(bf(14) + u2*(bf(15) + xdilog))))) endif if ( a .gt. bdn05 ) then xdilog = u2*(bf(6) + u2*(bf(7) + u2*(bf(8) + + u2*(bf(9) + u2*(bf(10) + xdilog))))) endif if ( a .gt. bdn02 ) then xdilog = u2*(bf(3) + u2*(bf(4) + u2*(bf(5) + xdilog))) endif * watch the powers of u. xdilog = u + u2*(bf(1) + u*(bf(2) + xdilog)) * #] calculate dilog: *###] ffxli2: end *###[ ffzxdl: subroutine ffzxdl(zxdilo,ipi12,zlog,x,ieps,ier) ***#[*comment:*************************************************** * Computes the dilogarithm (Li2, Sp) for any (real) x * * to precision precx. If an error message is given add * * more bf's. For x > 1 the imaginary part is * * -/+i*pi*log(x), corresponding to x+ieps. * * The number of factors pi^2/12 is passed separately in * * ipi12 for accuracy. We also calculate log(1-x) * * which is likely to be needed. * * * * Input: x (real) * * ieps (integer,+/-1) * * * * Output: zxdilo (complex) the dilog mod factors pi2/12 * * ipi12 (integer) these factors * * zlog (complex) log(1-x) * * * * Calls: log,dfflo1 * * * ***#]*comment:*************************************************** * #[ declarations: implicit none * * arguments * integer ipi12,ieps,ier DOUBLE PRECISION x DOUBLE COMPLEX zxdilo,zlog * * local variables * integer jsgn DOUBLE PRECISION fact,u,u2,dfflo1,ffbnd,a,xdilo, + xprec,bdn02,bdn05,bdn10,bdn15 DOUBLE COMPLEX cy,cfact external ffbnd,dfflo1 save xprec,bdn02,bdn05,bdn10,bdn15 * * common blocks * #include "ff.h" * #] declarations: * #[ initialisations: data xprec /-1D0/ if ( xprec .ne. precx ) then xprec = precx bdn02 = ffbnd(1,2,bf) bdn05 = ffbnd(1,5,bf) bdn10 = ffbnd(1,10,bf) bdn15 = ffbnd(1,15,bf) endif * #] initialisations: * #[ exceptional cases: if ( x .eq. 1) then zxdilo = 0 zlog = -99999 ipi12 = 2 return elseif (x .eq. -1) then zxdilo = 0 zlog = xlg2 ipi12 = -1 return elseif (x .eq. .5D0) then zxdilo = - xlg2**2/2 zlog = -xlg2 ipi12 = 1 return elseif ( abs(x) .lt. precx ) then zxdilo = x zlog = -x ipi12 = 0 return endif * #] exceptional cases: * #[ transform to (-1,.5): if (x .lt. -1) then fact = log(-x) cy = - fact**2/2 ipi12 = -2 if ( -x*xloss .gt. 1 ) then u = -dfflo1(1/x,ier) else u = -log(1-1/x) endif zlog = log(1-x) jsgn = -1 elseif ( x .lt. .5D0) then cy = 0 ipi12 = 0 if ( abs(x) .lt. xloss ) then zlog = dfflo1(x,ier) else zlog = log(1-x) endif u = -DBLE(zlog) jsgn = 1 elseif ( x .le. 2 ) then u = -log(x) if ( abs(1-x) .lt. xalogm ) then cy = 0 elseif ( x .lt. 1 ) then zlog = log(1-x) cy = DBLE(u)*zlog elseif ( ieps .gt. 0 ) then zlog = DCMPLX(log(x-1),-pi) cy = DBLE(u)*zlog else zlog = DCMPLX(log(x-1),+pi) cy = DBLE(u)*zlog endif ipi12 = 2 jsgn = -1 else if ( ieps .gt. 0 ) then cfact = DCMPLX(log(x),-pi) zlog = DCMPLX(log(x-1),-pi) else cfact = DCMPLX(log(x),+pi) zlog = DCMPLX(log(x-1),+pi) endif cy = - cfact**2/2 ipi12 = -2 if ( x*xloss .gt. 1 ) then u = -dfflo1(1/x,ier) else u = -log(1-1/x) endif jsgn = -1 endif * #] transform to (-1,.5): * #[ calculate dilog: if ( abs(u) .lt. xalog2 ) then xdilo = u else u2 = u**2 a = abs(u2) if ( a .gt. bdn15 ) then xdilo = u2*(bf(16) + u2*(bf(17) + u2*(bf(18) + + u2*(bf(19) + u2*bf(20) )))) else xdilo = 0 endif if ( a .gt. bdn10 ) then xdilo = u2*(bf(11) + u2*(bf(12) + u2*(bf(13) + + u2*(bf(14) + u2*(bf(15) + xdilo))))) endif if ( a .gt. bdn05 ) then xdilo = u2*(bf(6) + u2*(bf(7) + u2*(bf(8) + + u2*(bf(9) + u2*(bf(10) + xdilo))))) endif if ( a .gt. bdn02 ) then xdilo = u2*(bf(3) + u2*(bf(4) + u2*(bf(5) + xdilo))) endif * watch the powers of u. xdilo = u + u2*(bf(1) + u*(bf(2) + xdilo)) endif if(jsgn.eq.1)then zxdilo = DBLE(xdilo) + cy else zxdilo = -DBLE(xdilo) + cy endif * #] calculate dilog: *###] ffzxdl: end *###[ zxfflg: DOUBLE COMPLEX function zxfflg(x,ieps,y,ier) ***#[*comment:*********************************************************** * * * Calculate the complex logarithm of x. The following cases * * are treted separately: * * |x| too small: give warning and return 0 * * (for Absoft, Apollo DN300) * * |x| < 0: take sign according to ieps * * * ***#]*comment:*********************************************************** * #[ declarations: * * arguments * implicit none integer ieps,ier DOUBLE PRECISION x,y * * local variables * DOUBLE PRECISION xlog * * common blocks * #include "ff.h" * #] declarations: * #[ calculations: if ( abs(x) .lt. xalogm ) then zxfflg = 0 elseif ( x .gt. 0 ) then zxfflg = log(x) else xlog = log(-x) * checked imaginary parts 19-May-1988 if ( abs(ieps) .eq. 1 ) then if ( y*ieps .lt. 0 ) then zxfflg = DCMPLX(xlog,-pi) else zxfflg = DCMPLX(xlog,pi) endif elseif ( ieps .eq. 2 ) then zxfflg = DCMPLX(xlog,-pi) elseif ( ieps .eq. -2 ) then zxfflg = DCMPLX(xlog,+pi) else call fferr(52,ier) zxfflg = DCMPLX(xlog,pi) endif endif * #] calculations: *###] zxfflg: end *###[ dfflo1: DOUBLE PRECISION function dfflo1(x,ier) ***#[*comment:*************************************************** * calculates log(1-x) for |x|<.14 in a faster way to ~15 * * significant figures. * ***#]*comment:*************************************************** * #[ declarations: implicit none integer ier DOUBLE PRECISION x,bdn01,bdn05,bdn10,bdn15,bdn19,xprec, + xa,ffbnd DOUBLE COMPLEX zxfflg external ffbnd,zxfflg save xprec,bdn01,bdn05,bdn10,bdn15,bdn19 #include "ff.h" * #] declarations: * #[ initialisation: data xprec /-1D0/ if ( xprec .ne. precx ) then xprec = precx * determine the boundaries for 1,5,10,15 terms bdn01 = ffbnd(1,1,xninv) bdn05 = ffbnd(1,5,xninv) bdn10 = ffbnd(1,10,xninv) bdn15 = ffbnd(1,15,xninv) bdn19 = ffbnd(1,19,xninv) endif * #] initialisation: * #[ calculations: xa = abs(x) if ( xa .gt. bdn19 ) then dfflo1 = DBLE(zxfflg(1-x,0,0D0,ier)) return endif if ( xa .gt. bdn15 ) then dfflo1 = x*( xninv(16) + x*( xninv(17) + x*( xninv(18) + + x*( xninv(19) + x*xninv(20) )))) else dfflo1 = 0 endif if ( xa .gt. bdn10 ) then dfflo1 = x*( xninv(11) + x*( xninv(12) + x*( xninv(13) + + x*( xninv(14) + x*( xninv(15) + dfflo1 ))))) endif if ( xa .gt. bdn05 ) then dfflo1 = x*( xninv(6) + x*( xninv(7) + x*( xninv(8) + + x*( xninv(9) + x*( xninv(10) + dfflo1 ))))) endif if ( xa .gt. bdn01 ) then dfflo1 = x*( xninv(2) + x*( xninv(3) + x*( xninv(4) + + x*( xninv(5) + dfflo1 )))) endif dfflo1 = - x*( xninv(1) + dfflo1 ) * #] calculations: *###] dfflo1: end *###[ dfflo2: DOUBLE PRECISION function dfflo2(x,ier) ***#[*comment:*************************************************** * calculates log(1-x)+x for |x|<.14 in a faster way to * * ~15 significant figures. * ***#]*comment:*************************************************** * #[ declarations: implicit none integer ier DOUBLE PRECISION x,bdn01,bdn05,bdn10,bdn15,bdn18,xprec, + xa,ffbnd,dfflo1 external ffbnd,dfflo1 save xprec,bdn01,bdn05,bdn10,bdn15,bdn18 #include "ff.h" * #] declarations: * #[ initialisation: data xprec /-1D0/ if ( xprec .ne. precx ) then xprec = precx * determine the boundaries for 1,5,10,15 terms bdn01 = ffbnd(1,1,xninv(2)) bdn05 = ffbnd(1,5,xninv(2)) bdn10 = ffbnd(1,10,xninv(2)) bdn15 = ffbnd(1,15,xninv(2)) bdn18 = ffbnd(1,18,xninv(2)) endif * #] initialisation: * #[ calculations: xa = abs(x) if ( xa .gt. bdn18 ) then dfflo2 = dfflo1(x,ier) + x return endif if ( xa .gt. bdn15 ) then dfflo2 = x*( xninv(17) + x*( xninv(18) + x*( xninv(19) + + x*xninv(20) ))) else dfflo2 = 0 endif if ( xa .gt. bdn10 ) then dfflo2 = x*( xninv(12) + x*( xninv(13) + x*( xninv(14) + + x*( xninv(15) + x*( xninv(16) + dfflo2 ))))) endif if ( xa .gt. bdn05 ) then dfflo2 = x*( xninv(7) + x*( xninv(8) + x*( xninv(9) + + x*( xninv(10) + x*( xninv(11) + dfflo2 ))))) endif if ( xa .gt. bdn01 ) then dfflo2 = x*( xninv(3) + x*( xninv(4) + x*( xninv(5) + + x*( xninv(6) + dfflo2 )))) endif dfflo2 = - x**2*( xninv(2) + dfflo2 ) * #] calculations: *###] dfflo2: end *###[ dfflo3: DOUBLE PRECISION function dfflo3(x,ier) ***#[*comment:*************************************************** * calculates log(1-x)+x+x^2/2 for |x|<.14 in a faster * * way to ~15 significant figures. * ***#]*comment:*************************************************** * #[ declarations: implicit none integer ier DOUBLE PRECISION x,bdn01,bdn05,bdn10,bdn15,xprec, + xa,ffbnd,dfflo2 external ffbnd,dfflo2 save xprec,bdn01,bdn05,bdn10,bdn15 #include "ff.h" * #] declarations: * #[ initialisation: data xprec /-1D0/ if ( xprec .ne. precx ) then xprec = precx * determine the boundaries for 1,5,10,15 terms bdn01 = ffbnd(1,1,xninv(3)) bdn05 = ffbnd(1,5,xninv(3)) bdn10 = ffbnd(1,10,xninv(3)) bdn15 = ffbnd(1,15,xninv(3)) endif * #] initialisation: * #[ calculations: xa = abs(x) if ( xa .gt. bdn15 ) then dfflo3 = dfflo2(x,ier) + x**2/2 return endif if ( xa .gt. bdn10 ) then dfflo3 = x*( xninv(13) + x*( xninv(14) + x*( xninv(15) + + x*( xninv(16) + x*xninv(17) )))) else dfflo3 = 0 endif if ( xa .gt. bdn05 ) then dfflo3 = x*( xninv(8) + x*( xninv(9) + x*( xninv(10) + + x*( xninv(11) + x*( xninv(12) + dfflo3 ))))) endif if ( xa .gt. bdn01 ) then dfflo3 = x*( xninv(4) + x*( xninv(5) + x*( xninv(6) + + x*( xninv(7) + dfflo3 )))) endif dfflo3 = - x**3*( xninv(3) + dfflo3 ) * #] calculations: *###] dfflo3: end *###[ ffxl22: subroutine ffxl22(xl22,x,ier) ***#[*comment:*************************************************** * calculates Li2(2-x) for |x|<.14 in a faster way to ~15 * * significant figures. * ***#]*comment:*************************************************** * #[ declarations: implicit none integer ier,init DOUBLE PRECISION xl22,x,bdn01,bdn05,bdn10,bdn15,bdn20,bdn25, + xprec,xa,ffbnd,dilog2(29) external ffbnd save xprec,bdn01,bdn05,bdn10,bdn15,bdn20,bdn25,init,dilog2 #include "ff.h" data xprec /-1D0/ data init /0/ if ( init .eq. 0 ) then init = 1 * taylor(dilog(x-1),x,30); dilog2( 1) = 0.d0 dilog2( 2) = 1/4.d0 dilog2( 3) = 1/6.d0 dilog2( 4) = 5/48.d0 dilog2( 5) = 1/15.d0 dilog2( 6) = 2/45.d0 dilog2( 7) = 13/420.d0 dilog2( 8) = 151/6720.d0 dilog2( 9) = 16/945.d0 dilog2(10) = 83/6300.d0 dilog2(11) = 73/6930.d0 dilog2(12) = 1433/166320.d0 dilog2(13) = 647/90090.d0 dilog2(14) = 15341/2522520.d0 dilog2(15) = 28211/5405400.d0 dilog2(16) = 10447/2306304.d0 dilog2(17) = 608/153153.d0 dilog2(18) = 19345/5513508.d0 dilog2(19) = 18181/5819814.d0 dilog2(20) = 130349/46558512.d0 dilog2(21) = 771079/305540235.d0 dilog2(22) = 731957/320089770.d0 dilog2(23) = 2786599/1338557220.d0 dilog2(24) = 122289917/64250746560.d0 dilog2(25) = 14614772/8365982625.d0 dilog2(26) = 140001721/87006219300.d0 dilog2(27) = 134354573/90352612350.d0 dilog2(28) = 774885169/562194032400.d0 dilog2(29) = 745984697/582272390700.d0 endif * #] declarations: * #[ initialisation: if ( xprec .ne. precx ) then xprec = precx * determine the boundaries for 1,5,10,15,20 terms bdn01 = ffbnd(2,1,dilog2) bdn05 = ffbnd(2,5,dilog2) bdn10 = ffbnd(2,10,dilog2) bdn15 = ffbnd(2,15,dilog2) bdn20 = ffbnd(2,20,dilog2) bdn25 = ffbnd(2,25,dilog2) endif * #] initialisation: * #[ calculations: xa = abs(x) if ( xa .gt. bdn25 ) then call ffwarn(230,ier,precx,dilog2(27)*xa**25) endif if ( xa .gt. bdn20 ) then xl22 = x*( dilog2(22) + x*( dilog2(23) + x*( dilog2(24) + + x*( dilog2(25) + x*dilog2(26) )))) else xl22 = 0 endif if ( xa .gt. bdn15 ) then xl22 = x*( dilog2(17) + x*( dilog2(18) + x*( dilog2(19) + + x*( dilog2(20) + x*dilog2(21) )))) endif if ( xa .gt. bdn10 ) then xl22 = x*( dilog2(12) + x*( dilog2(13) + x*( dilog2(14) + + x*( dilog2(15) + x*dilog2(16) )))) endif if ( xa .gt. bdn05 ) then xl22 = x*( dilog2(7) + x*( dilog2(8) + x*( dilog2(9) + + x*( dilog2(10) + x*( dilog2(11) + xl22 ))))) endif if ( xa .gt. bdn01 ) then xl22 = x*( dilog2(3) + x*( dilog2(4) + x*( dilog2(5) + + x*( dilog2(6) + xl22 )))) endif xl22 = - x**2*( dilog2(2) + xl22 ) * #] calculations: *###] ffxl22: end herwig++-2.6.0.orig/Looptools/util/solve-LU.F0000644000175000017500000001122311754474774021522 0ustar sylvestresylvestre* solve-LU.F * Solution of the linear system A.x = B by LU decomposition * with partial pivoting * this file is part of LoopTools * last modified 14 Dec 10 th * Author: Michael Rauch, 7 Dec 2004 * Reference: Folkmar Bornemann, lecture notes to * Numerische Mathematik 1, Technical University, Munich, Germany #include "defs.h" #define EPS 2D0**(-51) ************************************************************************ * XDecomp computes the LU decomposition of the n-by-n matrix A * by Gaussian Elimination with partial pivoting; * compact (in situ) storage scheme * Input: * A: n-by-n matrix to LU-decompose * n: dimension of A * Output: * A: mangled LU decomposition of A in the form * ( y11 y12 ... y1n ) * ( x21 y22 ... y2n ) * ( x31 x32 ... y3n ) * ( ............... ) * ( xn1 xn2 ... ynn ) * where * ( 1 0 ... 0 ) ( y11 y12 ... y1n ) * ( x21 1 ... 0 ) ( 0 y22 ... y2n ) * ( x31 x32 ... 0 ) ( 0 0 ... y3n ) = Permutation(A) * ( ............... ) ( ............... ) * ( xn1 xn2 ... 1 ) ( 0 0 ... ynn ) * perm: permutation vector subroutine XDecomp(n, A,ldA, perm) implicit none integer n, ldA, perm(*) QVAR A(ldA,*) integer i, j, k, pj, invperm(MAXDIM) QVAR tmp QREAL absA, pabsA do j = 1, n invperm(j) = j enddo do j = 1, n * do U part (minus diagonal one) do i = 2, j - 1 tmp = 0 do k = 1, i - 1 tmp = tmp + A(i,k)*A(k,j) enddo A(i,j) = A(i,j) - tmp enddo * do L part (plus diagonal from U case) pabsA = -1 do i = j, n tmp = 0 do k = 1, j - 1 tmp = tmp + A(i,k)*A(k,j) enddo A(i,j) = A(i,j) - tmp * do partial pivoting ... * find the pivot absA = abs(A(i,j)) if( absA .gt. pabsA ) then pabsA = absA pj = i endif enddo perm(invperm(pj)) = j * exchange rows if( pj .ne. j ) then invperm(pj) = invperm(j) do k = 1, n tmp = A(j,k) A(j,k) = A(pj,k) A(pj,k) = tmp enddo endif * division by the pivot element if( abs(A(j,j)) .gt. EPS ) then tmp = 1/A(j,j) do i = j + 1, n A(i,j) = A(i,j)*tmp enddo endif enddo end ************************************************************************ * XSolve computes the x in A.x = b from the LU-decomposed A. * Input: * A: LU-decomposed n-by-n matrix A * b: input vector b in A.x = b * n: dimension of A * p: permutation vector from LU decomposition * Output: * b: solution vector x in A.x = b subroutine XSolve(n, A,ldA, b) implicit none integer n, ldA QVAR A(ldA,*) double complex b(*) integer i, j double complex tmp * forward substitution L.y = b do i = 1, n tmp = 0 do j = 1, i - 1 tmp = tmp + A(i,j)*b(j) enddo b(i) = b(i) - tmp enddo * backward substitution U.x = y do i = n, 1, -1 tmp = 0 do j = i + 1, n tmp = tmp + A(i,j)*b(j) enddo b(i) = (b(i) - tmp)/A(i,i) enddo end ************************************************************************ #ifdef COMPLEXPARA #undef RSolve #define RSolve XSolve #else * same as XSolve but for real vector b subroutine RSolve(n, A,ldA, b) implicit none integer n, ldA QVAR A(ldA,*), b(*) integer i, j QVAR tmp * forward substitution L.y = b do i = 1, n tmp = 0 do j = 1, i - 1 tmp = tmp + A(i,j)*b(j) enddo b(i) = b(i) - tmp enddo * backward substitution U.x = y do i = n, 1, -1 tmp = 0 do j = i + 1, n tmp = tmp + A(i,j)*b(j) enddo b(i) = (b(i) - tmp)/A(i,i) enddo end #endif ************************************************************************ * Det computes the determinant of a matrix. * Input: * A: n-by-n matrix A * n: dimension of A * Output: * determinant of A * Warning: A is overwritten subroutine XDet(n, A,ldA, det) implicit none integer n, ldA QVAR A(ldA,*), det integer i, j, s, perm(MAXDIM) call XDecomp(n, A,ldA, perm) det = 1 s = 0 do i = 1, n det = det*A(i,i) j = i do while( perm(j) .ne. i ) j = j + 1 enddo if( j .ne. i ) then perm(j) = perm(i) s = s + 1 endif enddo if( iand(s, 1) .ne. 0 ) det = -det end ************************************************************************ * Inverse computes the inverse of a matrix. * Input: * A: n-by-n matrix A * n: dimension of A * Output: * A: mangled LU decomposition of A * Ainv: inverse of A * perm: permutation vector subroutine XInverse(n, A,ldA, Ainv,ldAinv, perm) implicit none integer n, ldA, ldAinv, perm(*) QVAR A(ldA,*), Ainv(ldAinv,*) integer i, j call XDecomp(n, A,ldA, perm) do i = 1, n do j = 1, n Ainv(j,i) = 0 enddo Ainv(perm(i),i) = 1 call RSolve(n, A,ldA, Ainv(1,i)) enddo end herwig++-2.6.0.orig/Looptools/util/ffbndc.F0000644000175000017500000000140311754474774021275 0ustar sylvestresylvestre#include "externals.h" *###[ ffbndc: DOUBLE PRECISION function ffbndc(n1,n2,carray) ************************************************************************* * * * calculate bound = (precc*|a(n1)/a(n1+n2)|^(1/n2) which is the * * maximum value of x in a series expansion sum_(i=n1)^(n1+n2) * * a(i)*x(i) to give a result of accuracy precc (actually of |next * * term| < prec * * * ************************************************************************* implicit none integer n1,n2 DOUBLE COMPLEX carray(n1+n2) #include "ff.h" if ( carray(n1+n2) .eq. 0 ) then print *,'ffbnd: fatal: array not intialized; did you call ', + 'ffini?' stop endif ffbndc = (precc*abs(carray(n1)/carray(n1+n2)))**(1/DBLE(n2)) *###] ffbndc: end herwig++-2.6.0.orig/Looptools/util/ffcxyz.F0000644000175000017500000001745011754474774021375 0ustar sylvestresylvestre#include "externals.h" *###[ ffcxyz: subroutine ffcxyz(cy,cz,cdyz,cd2yzz,ivert,sdelpp,sdelps, + etami,delps,xpi,piDpj,isoort,ldel2s,ns,ier) ***#[*comment:*********************************************************** * * * calculate in a numerically stable way * * * * cz(1,2) = (-p(ip1).p(is2) +/- sdelpp)/xpi(ip1) * * cy(1,2) = (-p(ip1).p(is2) +/- sdisc)/xpi(ip1) * * disc = slam1 + 4*eta*xpi(ip)/slam * * * * cy(3,4) = 1-cy(1,2) * * cz(3.4) = 1-cz(1,2) * * cdyz(i,j) = cy(i) - cz(j) * * * * Input: ivert (integer) 1,2 of 3 * * sdelpp (real) sqrt(lam(p1,p2,p3))/2 * * sdelps (real) sqrt(-lam(p,ma,mb))/2 * * etalam (real) det(si.sj)/det(pi.pj) * * etami(6) (real) si.si - etalam * * xpi(ns) (real) standard * * piDpj(ns,ns) (real) standard * * ns (integer) dim of xpi,piDpj * * * * Output: cy(4),cz(4),cdyz(4,4) (complex) see above * * * * Calls: ?? * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ivert,isoort(2),ns,ier logical ldel2s DOUBLE COMPLEX cy(4),cz(4),cdyz(2,2),cd2yzz DOUBLE PRECISION sdelpp,sdelps,etami(6),delps,xpi(ns), + piDpj(ns,ns) * * local variables: * integer ip1,is1,is2,is3 DOUBLE COMPLEX c DOUBLE PRECISION absc,y(4) DOUBLE PRECISION disc,hulp * * common blocks: * #include "ff.h" absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ set up pointers: if ( ldel2s .and. ivert .ne. 1 ) goto 100 is1 = ivert is2 = ivert+1 if ( is2 .eq. 4 ) is2 = 1 is3 = ivert-1 if ( is3 .eq. 0 ) is3 = 3 ip1 = is1 + 3 * ip2 = is2 + 3 * ip3 = is3 + 3 isoort(1) = -10 isoort(2) = -10 * #] set up pointers: * #[ get cypm,czpm: hulp = sdelps/xpi(ip1) cz(1) = DCMPLX(piDpj(ip1,is2)/xpi(ip1),-hulp) cz(2) = DCMPLX(piDpj(ip1,is2)/xpi(ip1),+hulp) disc = delps/sdelpp call ffroot(y(1),y(2),xpi(ip1),piDpj(ip1,is2),etami(is2),disc, + ier) cy(1) = y(1) cy(2) = y(2) * #] get cypm,czpm: * #[ get cypm1,czpm1: if ( xpi(is1) .eq. xpi(is2) ) then cy(4) = cy(1) cy(3) = cy(2) cz(4) = cz(1) cz(3) = cz(2) else cz(3) = 1 - cz(1) cz(4) = 1 - cz(2) if ( absc(cz(3)).lt.xloss .or. absc(cz(4)).lt.xloss ) then cz(3) =DCMPLX(-piDpj(ip1,is1)/xpi(ip1),+hulp) cz(4) =DCMPLX(-piDpj(ip1,is1)/xpi(ip1),-hulp) endif y(3) = 1 - y(1) y(4) = 1 - y(2) if ( abs(y(3)) .lt. xloss .or. abs(y(4)) .lt. xloss ) then call ffroot(y(4),y(3),xpi(ip1),-piDpj(ip1,is1), + etami(is1),disc,ier) endif cy(3) = y(3) cy(4) = y(4) endif * #] get cypm1,czpm1: * #[ get cdypzp, cdypzm: cdyz(2,1) = DCMPLX(disc/xpi(ip1),+hulp) cdyz(2,2) = DCMPLX(disc/xpi(ip1),-hulp) cdyz(1,1) = -cdyz(2,2) cdyz(1,2) = -cdyz(2,1) cd2yzz = 2*disc/xpi(ip1) goto 200 * #] get cdypzp, cdypzm: * #[ special case, get indices: 100 continue if ( ivert.eq.2 ) then is1 = 2 ip1 = 5 else is1 = 1 ip1 = 6 endif isoort(1) = -100 isoort(2) = -100 * #] special case, get indices: * #[ get cypm,czpm: * * special case del2s = 0, hence the roots are not the real roots * but z_2'' = (z_2'-1)/delta, z''_3 = -z'_3/delta * hulp = sdelps/xpi(3) disc = delps/sdelpp if ( ivert .eq. 3 ) then hulp = -hulp disc = -disc endif cz(1) = DCMPLX(piDpj(is1,3)/xpi(3),-hulp) cz(2) = DCMPLX(piDpj(is1,3)/xpi(3),+hulp) call ffroot(y(1),y(2),xpi(3),piDpj(is1,3),etami(is1),disc,ier) cy(1) = y(1) cy(2) = y(2) * #] get cypm,czpm: * #[ get cypm1,czpm1: cz(3) = 1 - cz(1) cz(4) = 1 - cz(2) if ( absc(cz(3)).lt.xloss .or. absc(cz(4)).lt.xloss ) then if ( ivert.eq.2 ) then cz(3) =DCMPLX(piDpj(ip1,3)/xpi(3),+hulp) cz(4) =DCMPLX(piDpj(ip1,3)/xpi(3),-hulp) else cz(3) =DCMPLX(-piDpj(ip1,3)/xpi(3),+hulp) cz(4) =DCMPLX(-piDpj(ip1,3)/xpi(3),-hulp) endif endif y(3) = 1 - y(1) y(4) = 1 - y(2) if ( abs(y(3)) .lt. xloss .or. abs(y(4)) .lt. xloss ) then if ( ivert .eq. 2 ) then call ffroot(y(4),y(3),xpi(3),piDpj(ip1,3),etami(ip1), + disc,ier) else call ffroot(y(4),y(3),xpi(3),-piDpj(ip1,3),etami(ip1), + disc,ier) endif endif cy(3) = y(3) cy(4) = y(4) * #] get cypm1,czpm1: * #[ get cdypzp, cdypzm: cdyz(2,1) = DCMPLX(disc/xpi(3),+hulp) cdyz(2,2) = DCMPLX(disc/xpi(3),-hulp) cdyz(1,1) = -cdyz(2,2) cdyz(1,2) = -cdyz(2,1) cd2yzz = 2*disc/xpi(3) * #] get cdypzp, cdypzm: 200 continue *###] ffcxyz: end *###[ ffcdwz: subroutine ffcdwz(cdwz,cz,i1,j1,l,calpha,calph1,cpi,cdpipj, + cpiDpj,csdeli,csdel2,ns,ier) ***#[*comment:*********************************************************** * * * Recalculate cdwz(i1,j1) = cw(i1) - cz(j1) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer i1,j1,l,ns,ier DOUBLE COMPLEX cdwz(2,2),cz(4),calpha,calph1,cpi(ns) DOUBLE COMPLEX cdpipj(ns,ns),cpiDpj(ns,ns),csdeli(3),csdel2 * * local variables: * integer i,n DOUBLE COMPLEX cs(8),csum,cfac,c,cddel DOUBLE PRECISION xmax,absc,afac * * common blocks: * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ calculations: if ( l .eq. 1 ) then if ( j1 .eq. 1 ) then if ( absc(csdeli(1)+csdel2) .lt. xloss*absc(csdel2) ) + then * for example in e-> e g* with eeg loop * first get the difference of csdeli(1) and csdel2: cs(1) = cpi(4)*cdpipj(2,5) cs(2) = -cpiDpj(4,3)*cpiDpj(4,2) cs(3) = cpiDpj(4,3)*cpiDpj(4,5) csum = cs(1)+cs(2)+cs(3) xmax = max(absc(cs(1)),absc(cs(2)),absc(cs(3))) if ( absc(csum) .lt. xloss*xmax ) then ier = 1 goto 5 endif cddel = csum/(csdel2-csdeli(1)) if ( i1 .eq. 1 ) then cs(1) = cpi(4)*csdeli(2) else cs(1) = -cpi(4)*csdeli(2) endif cs(2) = cddel*cpiDpj(4,2) cs(3) = -cpiDpj(4,3)*csdeli(1) cs(4) = cpiDpj(4,3)*cpiDpj(4,5) cs(5) = -cpi(4)*cpiDpj(5,3) cs(6) = -cddel*csdel2 n = 6 else ier = ier + 100 goto 5 endif csum = 0 xmax = 0 do 1 i=1,n csum = csum + cs(i) xmax = max(xmax,absc(cs(i))) 1 continue if ( absc(csum) .lt. xloss*xmax ) then ier = ier + 1 endif cdwz(i1,j1) = csum/calph1/cpi(4)/cpi(5) if ( cdwz(i1,j1) .eq. 0 .and. csum .ne. 0 ) then print *,'?#$&!! cdwz = 0 but csum != 0, try again' afac = 1/absc(csum) csum = csum*DBLE(afac) cdwz(i1,j1) = csum/calph1/cpi(4)/cpi(5) afac = 1/afac cdwz(i1,j1) = cdwz(i1,j1)*DBLE(afac) endif else ier = ier + 100 endif 5 continue elseif ( l .eq. 3 ) then if ( (i1.eq.2 .and. j1.eq.1) .or. (i1.eq.1 .and. j1.eq.2 ) ) + then cfac = 1/(csdeli(2) + csdeli(3)) cs(1) = cdpipj(6,5)*cz(j1) cs(2) = -calph1*cpi(5)*cz(j1+2) if ( max(absc(cdpipj(2,1)),absc(cdpipj(5,6))) .lt. + max(absc(cdpipj(2,6)),absc(cdpipj(5,1))) ) then cs(3) = cdpipj(2,1)/2 cs(4) = cdpipj(5,6)/2 else cs(3) = cdpipj(2,6)/2 cs(4) = cdpipj(5,1)/2 endif cs(5) = cpiDpj(4,3)*cpiDpj(5,3)*cfac cs(6) = -cpiDpj(4,3)*cpiDpj(6,3)*cfac cs(7) = cpi(3)*cdpipj(5,6)*cfac if ( i1 .eq. 1 ) then csum = cs(1)+cs(2)+cs(3)+cs(4) - (cs(5)+cs(6)+cs(7)) else csum = cs(1)+cs(2)+cs(3)+cs(4) + cs(5)+cs(6)+cs(7) endif xmax = absc(cs(1)) do 10 i=2,7 xmax = max(xmax,absc(cs(i))) 10 continue if ( absc(csum) .lt. xloss*xmax ) then * this result is not used if it is not accurate (see * ffxc0p) ier = ier + 1 xmax = xmax/absc(calpha*cpi(5)) if ( xmax .lt. min(absc(cz(j1)),absc(cz(j1+2))) ) + then cdwz(i1,j1) = csum/(calpha*cpi(5)) endif else cdwz(i1,j1) = csum/(calpha*cpi(5)) endif else ier = ier + 100 endif else ier = ier + 100 endif * #] calculations: *###] ffcdwz: end herwig++-2.6.0.orig/Looptools/util/ffcxr.F0000644000175000017500000002372111754474774021172 0ustar sylvestresylvestre#include "externals.h" *--#[ log: * $Id: ffcxr.f,v 1.2 1995/11/10 19:04:24 gj Exp $ * $Log: ffcxr.f,v $ c Revision 1.2 1995/11/10 19:04:24 gj c Added nicer logging header... c *--#] log: *###[ ffcxr: subroutine ffcxr(crr,ipi12,y,y1,z,z1,dyz,ld2yzz,d2yzz,zz,zz1, + ldy2z,dy2z,ieps,ier) ***#[*comment:*********************************************************** * * * calculates R as defined in appendix b: * * * * /1 log(x-z+i*eps) - log(y-z+i*eps) * * r(y,z) = \ dx ----------------------------------- * * /0 x-y * * * * = li2(y/(y-z)+i*eps') - li2((y-1)/(y-z)+i*eps') * * * * y,z are real, ieps integer denoting the sign of i*eps. * * factors pi^2/12 are passed in the integer ipi12. * * * * Input: y (real) * * y1 (real) 1-y * * z (real) * * z1 (real) 1-z * * dyz (real) y-z * * * * ld2yzz (logical) if .TRUE. also defined are: * * d2yzz (real) 2*y - z^+ - z^- * * zz (real) the other z-root * * zz1 (real) 1 - zz * * * * ieps (integer) if +/-1 denotes sign imaginary * * part of argument logs * * ieps (integer) if +/-2 denotes sign imaginary * * part of argument dilogs * * * * Output crr (complex) R modulo factors pi^2/12 * * ipi12 (integer) these factors * * ier (intger) 0=ok, 1=num prob, 2=error * * * * Calls: ffxli2,(test: ffzxdl),dfflo1,zxfflg * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ipi12,ieps,ier logical ld2yzz,ldy2z DOUBLE PRECISION y,y1,z,z1,dyz,d2yzz,zz,zz1,dy2z(3) DOUBLE COMPLEX crr(7) * * local variables * integer i,iclas1,iclas2 DOUBLE PRECISION fact,xx1,xx2,xx1p,xx2p,arg2,arg3, + xli1,xli2,xli3,xlo1,xlo2,xlo3,xhill,xlog1, + xlog2p,xx1n,d2,d21,d2n,d21n1,term,tot,xtroep,xli4, + xlo4,som,xmax DOUBLE COMPLEX clog1p,clog2p DOUBLE PRECISION dfflo1 DOUBLE COMPLEX zxfflg external dfflo1,zxfflg * * common blocks * #include "ff.h" * #] declarations: * #[ groundwork: * * get the arguments * if ( dyz .eq. 0 ) return fact = 1/dyz xx1 = y * fact xx2 = - y1 * fact * * #] groundwork: * #[ which area?: * * determine the area: 1 = [-1+xloss,1/2] * 2 = (1/2,2-xloss] * 3 = [2+xloss,->) U (<-,-1-xloss] * 4 = [-1-xloss,-1+xloss] * 5 = [2-xloss,2+xloss] * if ( xx1 .lt. -1-xloss/2 ) then iclas1 = 3 xx1p = 1/xx1 elseif( xx1 .lt. -1+xloss/2 ) then if ( ld2yzz ) then iclas1 = 4 else iclas1 = 1 endif xx1p = xx1 elseif( xx1 .le. .5D0 ) then iclas1 = 1 xx1p = xx1 elseif ( xx1 .lt. 2-xloss ) then iclas1 = 2 xx1p = -z*fact elseif ( ldy2z .and. xx1 .lt. 2+xloss ) then iclas1 = 5 xx1p = dy2z(1)*fact else iclas1 = 3 xx1p = 1/xx1 endif if ( xx2 .lt. -1-xloss/2 ) then iclas2 = 3 xx2p = 1/xx2 elseif( xx2 .lt. -1+xloss/2 ) then if ( ld2yzz ) then iclas2 = 4 else iclas2 = 1 endif xx2p = xx2 elseif ( xx2 .le. .5D0 ) then iclas2 = 1 xx2p = xx2 elseif ( xx2 .lt. 2-xloss ) then iclas2 = 2 xx2p = z1*fact elseif ( ldy2z .and. xx2 .lt. 2+xloss ) then iclas2 = 5 xx2p = -dy2z(3)*fact else iclas2 = 3 xx2p = 1/xx2 endif * * throw together if they are close * if ( iclas1 .ne. iclas2 .and. abs(xx1-xx2) .lt. 2*xloss ) + then * we don't want trouble with iclasn = 4,5 if ( iclas1 .eq. 4 ) then iclas1 = 1 elseif ( iclas1 .eq. 5 ) then iclas1 = 3 xx1p = 1/xx1 endif if ( iclas2 .eq. 4 ) then iclas2 = 1 elseif ( iclas2 .eq. 5 ) then iclas2 = 3 xx2p = 1/xx2 endif if ( iclas1 .eq. iclas2 ) goto 5 * go on if ( iclas1 .le. iclas2 ) then iclas2 = iclas1 if ( iclas1 .eq. 1 ) then xx2p = xx2 else xx2p = z1*fact endif else iclas1 = iclas2 if ( iclas1 .eq. 1 ) then xx1p = xx1 else xx1p = -z*fact endif endif endif * #] which area?: * #[ calculations: 5 if ( iclas1 .eq. iclas2 .and. + abs(xx1p-xx2p) .lt. 2*xloss*max(abs(xx1p),abs(xx2p)) + .and. iclas1 .ne. 5 ) then * |----->temporary! * Close together: * -#[ handle dilog's: if ( abs(xx2p) .gt. xloss ) then *--#[ Hill identity: * * Use the Hill identity to get rid of the cancellations. * * * first get the arguments: * if ( iclas1 .eq. 1 .or. iclas1 .eq. 4 ) then d2 = 1/y arg2 = 1/z1 arg3 = arg2/xx1p elseif ( iclas1 .eq. 2 ) then d2 = 1/z arg2 = 1/y1 arg3 = arg2/xx1p elseif ( iclas1 .eq. 3 ) then d2 = 1/y1 arg3 = 1/z1 arg2 = arg3*xx1p endif call ffxli2(xli1,xlo1,d2,ier) call ffxli2(xli2,xlo2,arg2,ier) call ffxli2(xli3,xlo3,arg3,ier) if ( abs(xx2p) .lt. xloss ) then xlog2p = dfflo1(xx2p,ier) else xlog2p = DBLE(zxfflg(1-xx2p,0,1D0,ier)) endif xhill = xlo1*xlog2p *--#] Hill identity: else *--#[ Taylor expansion: * * if the points are close to zero do a Taylor * expansion of the first and last dilogarithm * * Li2(xx1p) - Li2(xx2p) * = sum xx1p^i ( 1-(1-d2)^i ) /i^2 * * with d2 = 1-xx2p/xx1p = ... * if ( iclas1 .eq. 1 .or. iclas1 .eq. 4 ) then d2 = 1/y elseif ( iclas1 .eq. 2 ) then d2 = 1/z elseif ( iclas1 .eq. 3 ) then d2 = 1/y1 endif * flag to the print section that we did a Taylor expansion d21 = 1-d2 d21n1 = 1 xx1n = xx1p d2n = d2 tot = xx1p*d2 * check for possible underflow on the next line if ( abs(xx1p) .lt. xalog2 ) goto 51 do 50 i=2,20 xx1n = xx1n*xx1p d21n1 = d21n1*d21 d2n = d2n + d2*d21n1 term = xx1n*d2n*xn2inv(i) tot = tot + term if ( abs(term) .le. precx*abs(tot) ) goto 51 50 continue 51 continue xli1 = tot xli2 = 0 xli3 = 0 xhill = 0 * for the eta+transformation section we also need if ( iclas1 .ne. 1 ) then if ( abs(d2) .lt. xloss ) then xlo1 = dfflo1(d2,ier) else xlo1 = DBLE(zxfflg(d21,0,1D0,ier)) endif endif if ( iclas1 .eq. 2 ) xlo2 = dfflo1(1/y1,ier) *--#] Taylor expansion: endif * * -#] handle dilog's: * -#[ handle transformation terms: if ( iclas1 .eq. 1 .or. iclas1 .eq. 4 ) then * * no transformation was made. * * crr(5) = 0 * crr(6) = 0 elseif ( iclas1 .eq. 2 ) then * * we tranformed to 1-x for both dilogs * if ( abs(xx1p) .lt. xloss ) then xlog1 = dfflo1(xx1p,ier) else xlog1 = DBLE(zxfflg(xx1,0,1D0,ier)) endif crr(5) = xlo1*xlog1 clog2p = zxfflg(xx2p,ieps,-y1,ier) crr(6) = -DBLE(xlo2)*clog2p elseif ( iclas1 .eq. 3 ) then * * we transformed to 1/x for both dilogs * clog2p = zxfflg(-xx2p,-ieps,-y1,ier) crr(5) = DBLE(xlo1)*(clog2p - DBLE(xlo1)/2) endif * -#] handle transformation terms: * -#[ add up and print out: if ( iclas1 .eq. 1 .or. iclas1 .eq. 4 ) then crr(1) = xli1 crr(2) = xli2 crr(3) = - xli3 crr(4) = xhill else crr(1) = - xli1 crr(2) = - xli2 crr(3) = xli3 crr(4) = - xhill endif * -#] add up and print out: else * Normal case: * -#[ handle dilogs: * * the dilogs will not come close together so just go on * only the special case xx1p ~ -1 needs special attention * - and the special case xx1 ~ 2 also needs special attention * if ( iclas1 .eq. 4 ) then d2 = d2yzz + zz xmax = abs(d2yzz) if ( abs(d2) .lt. xloss*xmax ) then som = y + dyz if ( abs(y).lt.xmax ) then d2 = som xmax = abs(y) endif endif d2 = d2/dyz fact = 1/(2-d2) call ffxli2(xli1,xlo1,d2*fact,ier) call ffxli2(xli3,xlo3,-d2*fact,ier) call ffxli2(xli4,xlo4,d2,ier) elseif ( iclas1 .eq. 5 ) then call ffxl22(xli1,xx1p,ier) ipi12 = ipi12 + 3 else call ffxli2(xli1,xlo1,xx1p,ier) endif if ( iclas2 .eq. 4 ) then if ( iclas1 .eq. 4 ) call fferr(26,ier) d2 = d2yzz - zz1 xmax = abs(d2yzz) if ( abs(d2) .lt. xloss*xmax ) then som = dyz - y1 if ( abs(y1).lt.xmax ) then d2 = som xmax = abs(y1) endif endif d2 = d2/dyz fact = 1/(2-d2) call ffxli2(xli2,xlo2,d2*fact,ier) call ffxli2(xli3,xlo3,-d2*fact,ier) call ffxli2(xli4,xlo4,d2,ier) elseif ( iclas2 .eq. 5 ) then call ffxl22(xli2,xx2p,ier) ipi12 = ipi12 - 3 else call ffxli2(xli2,xlo2,xx2p,ier) endif * -#] handle dilogs: * -#[ handle transformation terms xx1: * * transformation of c1 * if ( iclas1 .eq. 1 ) then crr(1) = xli1 elseif( iclas1 .eq. 2 ) then crr(1) = -xli1 ipi12 = ipi12 + 2 clog1p = zxfflg(xx1p,ieps,y,ier) crr(3) = - DBLE(xlo1)*clog1p elseif ( iclas1 .eq. 3 ) then crr(1) = -xli1 ipi12 = ipi12 - 2 clog1p = zxfflg(-xx1p,-ieps,y,ier) crr(3) = - clog1p**2/2 elseif ( iclas1 .eq. 4 ) then crr(1) = xli1 * Note that this sum does not cause problems as d2<<1 crr(3) = DBLE(-xli3-xli4) + DBLE(xlo4)* + zxfflg(fact,0,0D0,ier) ipi12 = ipi12 - 1 elseif ( iclas1 .eq. 5 ) then crr(1) = xli1 * supply an imaginary part clog1p = zxfflg(-1/xx1,-ieps,y,ier) xtroep = -DIMAG(clog1p)*DBLE(clog1p) crr(3) = DCMPLX(0D0,xtroep) else call fferr(26,ier) endif * -#] handle transformation terms xx1: * -#[ handle transformation terms xx2: * * transformation of c2 * if ( iclas2 .eq. 1 ) then crr(2) = -xli2 elseif( iclas2 .eq. 2 ) then crr(2) = +xli2 ipi12 = ipi12 - 2 clog2p = zxfflg(xx2p,ieps,-y1,ier) crr(4) = + DBLE(xlo2)*clog2p elseif ( iclas2 .eq. 3 ) then crr(2) = +xli2 ipi12 = ipi12 + 2 clog2p = zxfflg(-xx2p,-ieps,-y1,ier) crr(4) = clog2p**2/2 elseif ( iclas2 .eq. 4 ) then crr(2) = -xli2 * Note that this sum does not cause problems as d2<<1 crr(4) = DBLE(xli3+xli4) - DBLE(xlo4)* + zxfflg(fact,0,0D0,ier) ipi12 = ipi12 + 1 elseif ( iclas2 .eq. 5 ) then crr(2) = -xli2 * supply an imaginary part clog2p = zxfflg(-1/xx2,-ieps,-y1,ier) xtroep = DIMAG(clog2p)*DBLE(clog2p) crr(4) = DCMPLX(0D0,xtroep) else call fferr(28,ier) endif * -#] handle transformation terms xx2: endif * #] calculations: *###] ffcxr: end herwig++-2.6.0.orig/Looptools/util/auxCD.F0000644000175000017500000002410611754474774021064 0ustar sylvestresylvestre* auxCD.F * auxillary functions used by the three- and four-point integrals * these functions are adapted from Ansgar Denner's bcanew.f * to the conventions of LoopTools; * they are used for double-checking the results of FF * last modified 1 Feb 10 th #include "defs.h" double complex function ln(x, s) implicit none double precision x, s #include "ff.h" if( x .le. 0 ) then #ifdef WARNINGS if( s .eq. 0 ) print *, "ln: argument on cut" #endif ln = log(-x) + cI*sign(pi, s) else ln = log(x) endif end ************************************************************************ double complex function cln(z, s) implicit none double complex z double precision s #include "ff.h" if( DIMAG(z) .eq. 0 .and. DBLE(z) .le. 0 ) then #ifdef WARNINGS if( s .eq. 0 ) print *, "cln: argument on cut" #endif cln = log(-z) + cI*sign(pi, s) else cln = log(z) endif end ************************************************************************ * lnrat(x, y) = log(x - i eps) - log(y - i eps) * original version by R.K. Ellis * this function is hardwired for the sign of epsilon * we must adjust the sign of x and y to get the right sign for epsilon double complex function lnrat(x, y) implicit none double precision x, y #include "ff.h" lnrat = log(abs(x/y)) + & cI*(sign(.5D0*pi, x) - sign(.5D0*pi, y)) end ************************************************************************ double complex function lndiv0(x, y) implicit none double precision x, y double precision den double complex lnrat external lnrat den = 1 - x/y if( abs(den) .lt. 1D-7 ) then lndiv0 = -1 - den*(.5D0 + den/3D0) else lndiv0 = lnrat(x, y)/den endif end ************************************************************************ double complex function lndiv1(x, y) implicit none double precision x, y double precision den double complex lnrat external lnrat den = 1 - x/y if( abs(den) .lt. 1D-7 ) then lndiv1 = -.5D0 - den/3D0*(1 + .75D0*den) else lndiv1 = (lnrat(x, y)/den + 1)/den endif end ************************************************************************ * Li2omrat(x, y) = Li2(1 - (x - i eps)/(y - i eps)) for real x and y * hence arguments are typically negative invariants * original version by R.K. Ellis double complex function Li2omrat(x, y) implicit none double precision x, y #include "ff.h" double precision omarg double complex spence, lnrat external spence, lnrat omarg = x/y if( omarg .lt. 0 ) then Li2omrat = pi6 - spence(DCMPLX(omarg), 0D0) - & log(1 - omarg)*lnrat(x, y) else Li2omrat = spence(DCMPLX(1 - omarg), 0D0) endif end ************************************************************************ * Li2omx2 = Li2(1 - (z1 + i eps1) (z2 + i eps2)) for complex z1, z2 * for z1 z2 < 1: +Li2(1 - z1 z2) * for z1 z2 > 1: -Li2(1 - 1/(z1 z2)) - 1/2 (ln(z1) + ln(z2))^2 * original version by R.K. Ellis double complex function Li2omx2(z1, s1, z2, s2) implicit none double complex z1, z2 double precision s1, s2 #include "ff.h" double complex z12, l12 double precision s12 double complex cln, spence external cln, spence z12 = z1*z2 if( abs(z12) .lt. eps ) then Li2omx2 = 0 else if( abs(z12 - 1) .eq. acc ) then Li2omx2 = pi6 else l12 = cln(z1, s1) + cln(z2, s2) s12 = sign(1D0, DBLE(z2))*s1 + sign(1D0, DBLE(z1))*s2 if( abs(z12) .le. 1 ) then Li2omx2 = pi6 - spence(z12, s12) - & l12*cln(1 - z12, -s12) else z12 = 1/z12 Li2omx2 = -pi6 + spence(z12, s12) - & l12*(cln(1 - z12, -s12) + .5D0*l12) endif endif end ************************************************************************ * Li2omx3 = Li2(1 - (z1 + i eps1) (z2 + i eps2)) for complex z1, z2 * for z1 z2 < 1: +Li2(1 - z1 z2) * for z1 z2 > 1: -Li2(1 - 1/(z1 z2)) - 1/2 (ln(z1) + ln(z2))^2 * original version by R.K. Ellis double complex function Li2omx3(z1, s1, z2, s2, z3, s3) implicit none double complex z1, z2, z3 double precision s1, s2, s3 #include "ff.h" double complex z123, l123 double precision s123 double complex cln, spence external cln, spence z123 = z1*z2*z3 if( abs(DIMAG(z123)) .lt. eps ) & s123 = sign(1D0, & DBLE(z2*z3)*s1 + DBLE(z1*z3)*s2 + DBLE(z1*z2)*s3) if( abs(z123) .le. 1 ) then Li2omx3 = pi6 - spence(z123, s123) if( abs(z123) .gt. eps .and. abs(z123 - 1) .gt. acc ) & Li2omx3 = Li2omx3 - cln(1 - z123, 0D0)* & (cln(z1, s1) + cln(z2, s2) + cln(z3, s3)) else z123 = 1/z123 l123 = cln(z1, s1) + cln(z2, s2) + cln(z3, s3) Li2omx3 = -pi6 + spence(z123, s123) - & l123*(.5D0*l123 - cln(1 - z123, 0D0)) endif end ************************************************************************ * Li2omrat2 = Li2(1 - (n1 - i eps) (n2 - i eps)/(d1 - i eps)/(d2 - i eps)) * for real n1, n2, d1, d2 * original version by R.K. Ellis double complex function Li2omrat2(n1, d1, n2, d2) implicit none double precision n1, d1, n2, d2 #include "ff.h" double precision r12 double complex l12 double complex lnrat, spence external lnrat, spence r12 = n1*n2/(d1*d2) if( r12 .lt. 1 ) then Li2omrat2 = pi6 - spence(DCMPLX(r12), 0D0) if( abs(r12*(1 - r12)) .gt. acc ) & Li2omrat2 = Li2omrat2 - & (lnrat(n1, d1) + lnrat(n2, d2))*log(1 - r12) else r12 = 1/r12 l12 = lnrat(n1, d1) + lnrat(n2, d2) Li2omrat2 = -pi6 + spence(DCMPLX(r12), 0D0) - & l12*(.5D0*l12 + log(1 - r12)) endif end ************************************************************************ * original version by R.K. Ellis double complex function Li2rat(r1, s1, r2, s2) implicit none double complex r1, r2 double precision s1, s2 #include "ff.h" double complex r12, l12 double complex Li2omx2, cln, spence external Li2omx2, cln, spence if( abs(DIMAG(r1)) + abs(DIMAG(r2)) .lt. eps ) then Li2rat = Li2omx2(r1, s1, r2, s2) return endif r12 = r1*r2 if( abs(r12) .lt. 1 ) then Li2rat = pi6 - spence(r12, 0D0) if( abs(r12*(1 - r12)) .gt. acc ) & Li2rat = Li2rat - (cln(r1, s1) + cln(r2, s2))*log(1 - r12) else r12 = 1/r12 l12 = cln(r1, s1) + cln(r2, s2) Li2rat = -pi6 + spence(r12, 0D0) - & l12*(.5D0*l12 - log(1 - r12)) endif end ************************************************************************ double complex function spence(z, s) implicit none double complex z double precision s #include "ff.h" double complex z1 double precision az1 double complex Li2series, cln external Li2series, cln z1 = 1 - z az1 = abs(z1) #ifdef WARNINGS if( s .eq. 0 .and. & DIMAG(z) .eq. 0 .and. abs(DBLE(z1)) .lt. acc ) & print *, "spence: argument on cut" #endif if( az1 .lt. acc ) then spence = pi6 else if( DBLE(z) .lt. .5D0 ) then if( abs(z) .lt. 1 ) then spence = Li2series(z, s) else spence = -pi6 - & .5D0*cln(-z, -s)**2 - Li2series(1/z, -s) endif else if( az1 .lt. 1 ) then spence = pi6 - & cln(z, s)*cln(z1, -s) - Li2series(z1, -s) else spence = 2*pi6 + & .5D0*cln(-z1, -s)**2 - cln(z, s)*cln(z1, -s) + & Li2series(1/z1, s) endif endif end ************************************************************************ double complex function Li2series(z, s) implicit none double complex z double precision s double complex xm, x2, new integer j double complex cln external cln * these are the even-n Bernoulli numbers, already divided by (n + 1)! * as in Table[BernoulliB[n]/(n + 1)!, {n, 2, 50, 2}] double precision b(25) data b / & 0.02777777777777777777777777777777777777777778774D0, & -0.000277777777777777777777777777777777777777777778D0, & 4.72411186696900982615268329554043839758125472D-6, & -9.18577307466196355085243974132863021751910641D-8, & 1.89788699889709990720091730192740293750394761D-9, & -4.06476164514422552680590938629196667454705711D-11, & 8.92169102045645255521798731675274885151428361D-13, & -1.993929586072107568723644347793789705630694749D-14, & 4.51898002961991819165047655285559322839681901D-16, & -1.035651761218124701448341154221865666596091238D-17, & 2.39521862102618674574028374300098038167894899D-19, & -5.58178587432500933628307450562541990556705462D-21, & 1.309150755418321285812307399186592301749849833D-22, & -3.087419802426740293242279764866462431595565203D-24, & 7.31597565270220342035790560925214859103339899D-26, & -1.740845657234000740989055147759702545340841422D-27, & 4.15763564461389971961789962077522667348825413D-29, & -9.96214848828462210319400670245583884985485196D-31, & 2.394034424896165300521167987893749562934279156D-32, & -5.76834735536739008429179316187765424407233225D-34, & 1.393179479647007977827886603911548331732410612D-35, & -3.372121965485089470468473635254930958979742891D-37, & 8.17820877756210262176477721487283426787618937D-39, & -1.987010831152385925564820669234786567541858996D-40, & 4.83577851804055089628705937311537820769430091D-42 / xm = -cln(1 - z, -s) x2 = xm**2 Li2series = xm - x2/4D0 do j = 1, 25 xm = xm*x2 new = Li2series + xm*b(j) if( new .eq. Li2series ) return Li2series = new enddo #ifdef WARNINGS print *, "Li2series: bad convergence" #endif end ************************************************************************ integer function eta(z1, s1, z2, s2, s12) implicit none double complex z1, z2 double precision s1, s2, s12 double precision im1, im2, im12 im1 = DIMAG(z1) if( im1 .eq. 0 ) im1 = s1 im2 = DIMAG(z2) if( im2 .eq. 0 ) im2 = s2 im12 = DIMAG(z1*z2) if( im12 .eq. 0 ) im12 = s12 if( im1 .lt. 0 .and. im2 .lt. 0 .and. im12 .gt. 0 ) then eta = 1 else & if( im1 .gt. 0 .and. im2 .gt. 0 .and. im12 .lt. 0 ) then eta = -1 else eta = 0 #ifdef WARNINGS if( .not. (im2 .eq. 0 .and. DBLE(z2) .gt. 0 .or. & im1 .eq. 0 .and. DBLE(z1) .gt. 0) .and. & (im1 .eq. 0 .and. DBLE(z1) .lt. 0 .or. & im2 .eq. 0 .and. DBLE(z2) .lt. 0 .or. & im12 .eq. 0 .and. DBLE(z1*z2) .lt. 0) ) & print *, "eta not defined" #endif endif end herwig++-2.6.0.orig/Looptools/util/Dump.F0000644000175000017500000000220311754474774020757 0ustar sylvestresylvestre* Dump.F * dumps the parameters and coefficients on screen * this file is part of LoopTools * last modified 8 Dec 05 th #include "defs.h" subroutine XDumpPara(npoint, para, ldpara, origin) implicit none integer npoint, ldpara DVAR para(ldpara,*) character*(*) origin #include "lt.h" integer i character*6 paraname(Pee,2:5) common /ltparanames/ paraname integer npara(2:5) data npara /Pbb, Pcc, Pdd, Pee/ #ifdef COMPLEXPARA if( len(origin) .gt. 1 ) print *, "C", origin, serial #else if( len(origin) .gt. 1 ) print *, origin, serial #endif do i = 1, npara(npoint) print *, " ", paraname(i,npoint), "=", para(1,i) enddo call flush(6) end ************************************************************************ subroutine XDumpCoeff(npoint, coeff) implicit none integer npoint double complex coeff(*) #include "lt.h" integer i character*8 coeffname(Nee,2:5) common /ltcoeffnames/ coeffname integer ncoeff(2:5) data ncoeff /Nbb, Ncc, Ndd, Nee/ do i = 1, ncoeff(npoint) print *, coeffname(i,npoint), "=", coeff(i) enddo print *, "====================================================" call flush(6) end herwig++-2.6.0.orig/Looptools/util/Li2.F0000644000175000017500000000126311754474774020505 0ustar sylvestresylvestre* Li2.F * the dilogarithm function * this file is part of LoopTools * last modified 13 Apr 06 th #include "defs.h" double complex function XLi2(x) implicit none DVAR x double precision pi12 parameter (pi12 = .822467033424113218236207583323D0) double complex res, dummy integer ier, ipi12 ier = 0 #ifdef COMPLEXPARA call ffzzdl(res, ipi12, dummy, x, ier) #else call ffzxdl(res, ipi12, dummy, x, -1, ier) #endif XLi2 = res + ipi12*pi12 end ************************************************************************ * adapter code for C++ subroutine XLi2sub(res, x) implicit none double complex res DVAR x double complex XLi2 external XLi2 res = XLi2(x) end herwig++-2.6.0.orig/Looptools/util/ffinit.F0000644000175000017500000006605311754474774021346 0ustar sylvestresylvestre#include "defs.h" * $Id: ffinit.f,v 1.9 1996/04/26 10:39:03 gj Exp $ *###[ ffini: subroutine ltini ***#[*comment:*********************************************************** * calculate a lot of commonly-used constants in the common block * * /ffcnst/. also set the precision, maximum loss of digits and * * the minimum value the logarithm accepts in /prec/. * ***#]*comment:*********************************************************** * #[ declarations: implicit none integer i,j,init,ioldp(13,12),isgrop(10,12),ji save init DOUBLE PRECISION s,sold DOUBLE COMPLEX cs #include "lt.h" character*32 env data init /0/ data ioldp/1,2,3,4, 5,6,7,8,9,10, 11,12,13, + 4,1,2,3, 8,5,6,7,10,9, 11,13,12, + 3,4,1,2, 7,8,5,6,9,10, 11,12,13, + 2,3,4,1, 6,7,8,5,10,9, 11,13,12, + 4,2,3,1, 10,6,9,8,7,5, 12,11,13, + 1,3,2,4, 9,6,10,8,5,7, 12,11,13, + 1,2,4,3, 5,10,7,9,8,6, 13,12,11, + 1,4,3,2, 8,7,6,5,9,10, 11,13,12, + 3,4,2,1, 7,10,5,9,6,8, 13,12,11, + 2,3,1,4, 6,9,8,10,5,7, 12,13,11, + 4,2,1,3, 10,5,9,7,8,6, 13,11,12, + 1,3,4,2, 9,7,10,5,8,6, 13,11,12/ data isgrop/ + +1,+1,+1,+1, +1,+1,+1,+1, +1,+1, + +1,+1,+1,+1, +1,+1,+1,+1, -1,+1, + +1,+1,+1,+1, +1,+1,+1,+1, -1,-1, + +1,+1,+1,+1, +1,+1,+1,+1, +1,-1, + +1,+1,+1,+1, -1,+1,+1,-1, +1,-1, + +1,+1,+1,+1, -1,-1,+1,+1, -1,+1, + +1,+1,+1,+1, +1,+1,-1,+1, +1,+1, + +1,+1,+1,+1, -1,-1,-1,-1, +1,-1, + +1,+1,+1,+1, -1,+1,+1,+1, -1,-1, + +1,+1,+1,+1, +1,+1,+1,-1, +1,-1, + +1,+1,+1,+1, -1,+1,+1,-1, -1,-1, + +1,+1,+1,+1, -1,-1,+1,+1, -1,-1/ * #] declarations: * #[ check: * check whether there is anything to do if ( init .ne. 0 ) return init = 1 print *,'====================================================' print *,' FF 2.0, a package to evaluate one-loop integrals' print *,'written by G. J. van Oldenborgh, NIKHEF-H, Amsterdam' print *,'====================================================' print *,'for the algorithms used see preprint NIKHEF-H 89/17,' print *,'''New Algorithms for One-loop Integrals'', by G.J. van' print *,'Oldenborgh and J.A.M. Vermaseren, published in ' print *,'Zeitschrift fuer Physik C46(1990)425.' print *,'====================================================' * #] check: * #[ LoopTools stuff * * we do this here because loading block data is unreliable * call clearcache serial = 0 call getenv("LTMINMASS", env) minmass = 0 read(env, *, end=90, err=90) minmass print *, "using minmass =", minmass 90 continue call getenv("LTMAXDEV", env) maxdev = 1D-10 read(env, *, end=91, err=91) maxdev print *, "using maxdev =", maxdev 91 continue call getenv("LTCMPBITS", env) cmpbits = 62 + (KIND-1)*4 read(env, *, end=92, err=92) cmpbits print *, "using cmpbits =", cmpbits 92 continue call getenv("LTVERSION", env) versionkey = 0 read(env, *, end=93, err=93) versionkey print *, "using versionkey =", versionkey 93 continue call getenv("LTDEBUG", env) debugkey = 0 read(env, *, end=94, err=94) debugkey print *, "using debugkey =", debugkey 94 continue call getenv("LTRANGE", env) debugfrom = 0 debugto = 2**30 i = index(env, '-') if( i .eq. 0 ) then read(env, *, end=95, err=95) debugfrom debugto = debugfrom else read(env(1:i-1), *, end=951, err=951) debugfrom 951 read(env(i+1:), *, end=952, err=952) debugto 952 continue endif print *, "using debugrange =", debugfrom, debugto 95 continue call getenv("LTWARN", env) warndigits = 9 read(env, *, end=96, err=96) warndigits print *, "using warndigits =", warndigits 96 continue call getenv("LTERR", env) errdigits = 100 read(env, *, end=97, err=97) errdigits print *, "using errdigits =", errdigits 97 continue * * regularization parameters * call getenv("LTDELTA", env) delta = 0 read(env, *, end=100, err=100) delta print *, "using delta =", delta 100 continue call getenv("LTMUDIM", env) mudim = 1 read(env, *, end=101, err=101) mudim print *, "using mudim =", mudim 101 continue call getenv("LTLAMBDA", env) lambda = 1 read(env, *, end=102, err=102) lambda print *, "using lambda =", lambda 102 continue * * #] LoopTools stuff * #[ precision etc: nevent = -1 * * the loss of accuracy in any single subtraction at which * (timeconsuming) corrective action is to be taken is * xloss = 0.125D0 * * the precision to which real calculations are done is * precx = 1 sold = 0 do 1 i=1,1000 precx = precx/2 call ffset(s, 1 + precx) s = exp(log(s)) if ( s .eq. sold ) goto 2 sold = s 1 continue 2 continue precx = precx*8 * (take three bits for safety) * * the precision to which complex calculations are done is * precc = 1 sold = 0 do 3 i=1,1000 precc = precc/2 call ffset(s, 1 + precc) cs = exp(log(DCMPLX(s))) if ( DBLE(cs) .eq. sold ) goto 4 sold = DBLE(cs) 3 continue 4 continue precc = precc*8 * (take three bits for safety) * * for efficiency take them equal if they are not too different * if ( precx/precc .lt. 4 .and. precx/precc .gt. .25 ) then precx = max(precc,precx) precc = max(precc,precx) endif * * and the minimum value the logarithm accepts without complaining * about arguments zero is (DOUBLE PRECISION cq DOUBLE COMPLEX) * s = 1 xalogm = 1 do 5 i=1,10000 call ffset(s, s/2) if ( 2*s .ne. xalogm ) goto 6 xalogm = s 5 continue 6 continue if ( xalogm.eq.0 ) xalogm = 1d-307 s = 1 xclogm = abs(DCMPLX(s)) do 7 i=1,10000 call ffset(s, s/2) if ( 2*abs(DCMPLX(s)) .ne. xclogm ) goto 8 xclogm = abs(DCMPLX(s)) 7 continue 8 continue if ( xclogm.eq.0 ) xclogm = 1d-307 * * These values are for Absoft, Apollo fortran (68000): * xalogm = 1.D-308 * xclogm = 1.D-18 * These values are for VAX g_float * xalogm = 1.D-308 * xclogm = 1.D-308 * These values are for Gould fort (because of div_zz) * xalogm = 1.D-75 * xclogm = 1.D-36 xalog2 = sqrt(xalogm) xclog2 = sqrt(xclogm) * #] precision etc: * #[ constants: * * calculate the coefficients of the series expansion * li2(x) = sum bn*z^n/(n+1)!, z = -log(1-x), bn are the * bernouilli numbers (zero for odd n>1). * bf(1) = - 1.D+0/4.D+0 bf(2) = + 1.D+0/36.D+0 bf(3) = - 1.D+0/36.D+2 bf(4) = + 1.D+0/21168.D+1 bf(5) = - 1.D+0/108864.D+2 bf(6) = + 1.D+0/52690176.D+1 bf(7) = - 691.D+0/16999766784.D+3 bf(8) = + 1.D+0/1120863744.D+3 bf(9) = - 3617.D+0/18140058832896.D+4 bf(10) = + 43867.D+0/97072790126247936.D+3 bf(11) = - 174611.D+0/168600109166641152.D+5 bf(12) = + 77683.D+0/32432530090601152512.D+4 bf(13) = - 236364091.D+0/4234560341829359173632.D+7 bf(14) = + 657931.D+0/5025632054039239458816.D+6 bf(15) = - 3392780147.D+0/109890470493622010006470656.D+7 bf(16)=+172.3168255201D+0/2355349904102724211909.3102313472D+6 bf(17)=-770.9321041217D+0/4428491985594062112714.2791446528D+8 bf(18)=( 0.4157635644614046176D-28) bf(19)=(-0.9962148488284986022D-30) bf(20)=( 0.2394034424896265390D-31) * * inverses of integers: * do 10 i=1,30 xninv(i) = 1D0/i xn2inv(i) = 1D0/(i*i) 10 continue * * inverses of faculties of integers: * xinfac(1) = 1D0 do 20 i=2,30 xinfac(i) = xinfac(i-1)/i 20 continue * * inx: p(inx(i,j)) = isgn(i,j)*(s(i)-s(j)) * inx(1,1) = -9999 inx(2,1) = 5 inx(3,1) = 9 inx(4,1) = 8 inx(1,2) = 5 inx(2,2) = -9999 inx(3,2) = 6 inx(4,2) = 10 inx(1,3) = 9 inx(2,3) = 6 inx(3,3) = -9999 inx(4,3) = 7 inx(1,4) = 8 inx(2,4) = 10 inx(3,4) = 7 inx(4,4) = -9999 isgn(1,1) = -9999 isgn(2,1) = +1 isgn(3,1) = -1 isgn(4,1) = -1 isgn(1,2) = -1 isgn(2,2) = -9999 isgn(3,2) = +1 isgn(4,2) = +1 isgn(1,3) = +1 isgn(2,3) = -1 isgn(3,3) = -9999 isgn(4,3) = +1 isgn(1,4) = +1 isgn(2,4) = -1 isgn(3,4) = -1 isgn(4,4) = -9999 do 40 i=1,12 do 30 j=1,13 iold(j,i) = ioldp(j,i) 30 continue do 35 j=1,10 isgrot(j,i) = isgrop(j,i) 35 continue 40 continue inx5(1,1) = -9999 inx5(1,2) = 6 inx5(1,3) = 11 inx5(1,4) = 14 inx5(1,5) = 10 inx5(2,1) = 6 inx5(2,2) = -9999 inx5(2,3) = 7 inx5(2,4) = 12 inx5(2,5) = 15 inx5(3,1) = 11 inx5(3,2) = 7 inx5(3,3) = -9999 inx5(3,4) = 8 inx5(3,5) = 13 inx5(4,1) = 14 inx5(4,2) = 12 inx5(4,3) = 8 inx5(4,4) = -9999 inx5(4,5) = 9 inx5(5,1) = 10 inx5(5,2) = 15 inx5(5,3) = 13 inx5(5,4) = 9 inx5(5,5) = -9999 * isgn5 is not yet used. do i=1,5 do j=1,5 isgn5(i,j) = -9999 enddo enddo * inx6(1,1) = -9999 inx6(1,2) = 7 inx6(1,3) = 13 inx6(1,4) = 19 inx6(1,5) = 17 inx6(1,6) = 12 inx6(2,1) = 7 inx6(2,2) = -9999 inx6(2,3) = 8 inx6(2,4) = 14 inx6(2,5) = 20 inx6(2,6) = 18 inx6(3,1) = 13 inx6(3,2) = 8 inx6(3,3) = -9999 inx6(3,4) = 9 inx6(3,5) = 15 inx6(3,6) = 21 inx6(4,1) = 19 inx6(4,2) = 14 inx6(4,3) = 9 inx6(4,4) = -9999 inx6(4,5) = 10 inx6(4,6) = 16 inx6(5,1) = 17 inx6(5,2) = 20 inx6(5,3) = 15 inx6(5,4) = 10 inx6(5,5) = -9999 inx6(5,6) = 11 inx6(6,1) = 12 inx6(6,2) = 18 inx6(6,3) = 21 inx6(6,4) = 16 inx6(6,5) = 11 inx6(6,6) = -9999 * isgn6 is used. do i=1,6 do j=1,6 ji = j-i if ( ji.gt.+3 ) ji = ji - 6 if ( ji.lt.-3 ) ji = ji + 6 if ( ji.eq.0 ) then isgn6(j,i) = -9999 elseif ( abs(ji).eq.3 ) then if ( i.lt.0 ) then isgn6(j,i) = -1 else isgn6(j,i) = +1 endif elseif ( ji.gt.0 ) then isgn6(j,i) = +1 elseif ( ji.lt.0 ) then isgn6(j,i) = -1 else print *,'ffini: internal error in isgn6' stop endif enddo enddo * * #] constants: * #[ defaults for flags: nevent = 0 * * the debugging flags. * ldc3c4 = .FALSE. l4also = .FALSE. lmem = .FALSE. ldot = .FALSE. idot = 0 * * Specify which root to take in cases were two are possible * it may be advantageous to change this to -1 (debugging hook) * isgn34 = 1 isgnal = 1 * * the scheme used for the complex scalar functions: * * nschem = 1: do not use the complex mass at all * 2: only use the complex mass in linearly divergent terms * 3: also use the complex mass in divergent logs UNDEFINED * 4: use the complex mass in the C0 if there are * divergent logs * 5: include the almost-divergent threshold terms from * (m,m,0) vertices * 6: include the (s-m^2)*log(s-m^2) threshold terms from * (m1+m2),m1,m2) vertices * 7: full complex computation * (only in the ffz... functions): * onshel = .FALSE.: use the offshell p^2 everywhere * .TRUE.: use the onshell p^2 except in complex parts * nschem = 7 onshel = .TRUE. * * the precision wanted in the complex D0 (and hence E0) when * nschem=7, these are calculated via Taylor expansion in the real * one and hence expensive. * reqprc = 1.D-8 * * in some schemes, for onshel=.FALSE., * when |p^2-Re(m^2)| < nwidth*|Im(m^2)| special action is taken * nwidth = 5 * * a flag to indicate the validity of differences smuggled to the * IR routines in the C0 (ff internal only) * lsmug = .FALSE. * * #] defaults for flags: *###] ffini: end *###[ ffexi: subroutine ltexi ***#[*comment:*********************************************************** * check a lot of commonly-used constants in the common block * * /ffcnst/. * ***#]*comment:*********************************************************** * #[ declarations: implicit none integer i,ier #include "ff.h" * #] declarations: * #[ checks: * * calculate the coefficients of the series expansion * li2(x) = sum bn*z^n/(n+1)!, z = -log(1-x), bn are the * bernouilli numbers (zero for odd n>1). * if ( bf(1) .ne. - 1.D+0/4.D+0 ) + print *,'ffexi: error: bf(1) is corrupted' if ( bf(2) .ne. + 1.D+0/36.D+0 ) + print *,'ffexi: error: bf(2) is corrupted' if ( bf(3) .ne. - 1.D+0/36.D+2 ) + print *,'ffexi: error: bf(3) is corrupted' if ( bf(4) .ne. + 1.D+0/21168.D+1 ) + print *,'ffexi: error: bf(4) is corrupted' if ( bf(5) .ne. - 1.D+0/108864.D+2 ) + print *,'ffexi: error: bf(5) is corrupted' if ( bf(6) .ne. + 1.D+0/52690176.D+1 ) + print *,'ffexi: error: bf(6) is corrupted' if ( bf(7) .ne. - 691.D+0/16999766784.D+3 ) + print *,'ffexi: error: bf(7) is corrupted' if ( bf(8) .ne. + 1.D+0/1120863744.D+3 ) + print *,'ffexi: error: bf(8) is corrupted' if ( bf(9) .ne. - 3617.D+0/18140058832896.D+4 ) + print *,'ffexi: error: bf(9) is corrupted' if ( bf(10) .ne. + 43867.D+0/97072790126247936.D+3 ) + print *,'ffexi: error: bf(10) is corrupted' if ( bf(11) .ne. - 174611.D+0/168600109166641152.D+5 ) + print *,'ffexi: error: bf(11) is corrupted' if ( bf(12) .ne. + 77683.D+0/32432530090601152512.D+4 ) + print *,'ffexi: error: bf(12) is corrupted' if ( bf(13) .ne. - 236364091.D+0/4234560341829359173632.D+7 ) + print *,'ffexi: error: bf(13) is corrupted' if ( bf(14) .ne. + 657931.D+0/5025632054039239458816.D+6 ) + print *,'ffexi: error: bf(14) is corrupted' if ( bf(15) .ne. -3392780147.D+0/109890470493622010006470656.D+7 + ) print *,'ffexi: error: bf(15) is corrupted' if ( bf(16).ne.+172.3168255201D+0/2355349904102724211909.3102313 + 472D+6 ) + print *,'ffexi: error: bf(16) is corrupted' if ( bf(17).ne.-770.9321041217D+0/4428491985594062112714.2791446 + 528D+8 ) + print *,'ffexi: error: bf(17) is corrupted' if ( bf(18).ne.( 0.4157635644614046176D-28) ) + print *,'ffexi: error: bf(18) is corrupted' if ( bf(19).ne.(-0.9962148488284986022D-30) ) + print *,'ffexi: error: bf(19) is corrupted' if ( bf(20).ne.( 0.2394034424896265390D-31) ) + print *,'ffexi: error: bf(20) is corrupted' * * inverses of integers: * do 10 i=1,20 if ( abs(xninv(i)-1D0/i) .gt. precx*xninv(i) ) print *, + 'ffexi: error: xninv(',i,') is not 1/',i,': ', + xninv(i),xninv(i)-1D0/i 10 continue * * #] checks: * #[ print summary of errors and warning: ier = 0 call fferr(999,ier) * #] print summary of errors and warning: *###] ffexi: end *###[ fferr: subroutine fferr(nerr,ierr) ***#[*comment:*********************************************************** * * * generates an error message #nerr with severity 2 * * nerr=999 gives a frequency listing of all errors * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none integer nmax parameter (nmax=105) integer nerr,ierr integer noccur(nmax),i,inone,nnerr save error,noccur #include "ff.h" #include "fferr.h" * #] declarations: * #[ data: data noccur /nmax*0/ * #] data: * #[ nerr=999: if ( nerr .eq. 999 ) then * print out total numbers... print '(a)',' ' print '(a)','total number of errors and warnings' print '(a)','===================================' inone = 1 do 10 i = 1, nmax if ( noccur(i) .gt. 0 ) then print '(a,i5,a,a)','fferr: ',noccur(i), + ' times ',error(i) noccur(i) = 0 inone = 0 endif 10 continue if ( inone.eq.1 ) print '(a)','fferr: no errors' print '(a)',' ' return endif * #] nerr=999: * #[ print error: if ( nerr .lt. 1 .or. nerr .gt. nmax ) then nnerr = nmax else nnerr = nerr endif noccur(nnerr) = noccur(nnerr) + 1 ierr = ierr + 100 print '(a,a)', 'error in ', error(nnerr) * #] print error: *###] fferr: end *###[ ffwarn: subroutine ffwarn(nerr,ierr,som,xmax) ***#[*comment:*********************************************************** * * * The warning routine. A warning is aloss of precision greater * * than xloss (which is default set in ffini), whenever in a * * subtraction the result is smaller than xloss*max(operands) this * * routine is called. Now the strategy is to remember these * * warnings until a 998 message is obtained; then all warnings of * * the previous event are printed. The rationale is that one * * makes this call if too much preciasion is lost only. * * nerr=999 gives a frequency listing of all warnings * * * * Input: nerr integer the id of the warning message, see the * * file ffwarn.h or 998 or 999 * * ierr integer the usual error flag: number of digits * * lost so far * * som real the result of the addition * * xmax real the largest operand * * * * Output: ierr integer is raised by the number of digits lost * * the tolerated loss of xloss * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none integer nmax parameter (nmax=300) * * arguments * integer nerr,ierr DOUBLE PRECISION som,xmax * * local variables * integer memmax parameter (memmax = 1000) integer noccur(nmax),i,inone,nnerr,ilost, + nermem(memmax),losmem(memmax),idmem(memmax), + idsmem(memmax),laseve,imem DOUBLE PRECISION xlosti(nmax),xlost save warn,noccur,xlosti,nermem,losmem,idmem,idsmem, + laseve,imem * * common blocks * #include "ff.h" #include "ffwarn.h" * #] declarations: * #[ data: data noccur /nmax*0/ * #] data: * #[ nerr=999: if ( nerr.eq.999 ) then * print out total numbers... inone = 1 do 10 i=1,nmax if ( noccur(i) .gt. 0 ) then print '(a,i8,a,i3,a,a)','ffwarn: ',noccur(i), + ' times ',i,': ',warn(i) print '(a,g12.3,a)', + ' (lost at most a factor ',xlosti(i),')' noccur(i) = 0 xlosti(i) = 0 inone = 0 endif 10 continue if ( inone.eq.1 ) print '(a)','ffwarn: no warnings' return endif * #] nerr=999: * #[ print warning: if ( nerr .eq. 998 ) then if ( nevent .ne. laseve ) return do 20 i=1,imem-1 if ( nermem(i).ne.0 ) then print '(a,a)','warning in ',warn(nermem(i)) print '(a,i3,a)',' (lost ',losmem(i),' digits)' endif 20 continue imem = 1 return endif * #] print warning: * #[ collect warnings: * * bring in range * if ( nerr .lt. 1 .or. nerr .gt. nmax ) then nnerr = nmax else nnerr = nerr endif * * bookkeeping * noccur(nnerr) = noccur(nnerr) + 1 if ( som .ne. 0 ) then xlost = abs(xmax/som) elseif ( xmax .ne. 0 ) then xlost = 1/precx else xlost = 1 endif xlosti(nnerr) = max(xlosti(nnerr),xlost) if ( xlost*xloss .gt. xalogm ) then ilost = 1 + int(abs(log10(xlost*xloss))) else ilost = 0 endif ierr = ierr + ilost * * nice place to stop when debugging * if ( ilost.ge.10 ) then ilost = ilost + 1 endif * * add to memory * if ( laseve .ne. nevent ) then imem = 1 laseve = nevent endif if ( imem .le. memmax ) then idmem(imem) = id idsmem(imem) = idsub nermem(imem) = nerr losmem(imem) = ilost imem = imem + 1 endif * #] collect warnings: *###] ffwarn: end *###[ ffbnd: DOUBLE PRECISION function ffbnd(n1,n2,array) ************************************************************************* * * * calculate bound = (precx*|a(n1)/a(n1+n2)|^(1/n2) which is the * * maximum value of x in a series expansion sum_(i=n1)^(n1+n2) * * a(i)*x(i) to give a result of accuracy precx (actually of |next * * term| < prec * * * ************************************************************************* implicit none integer n1,n2 DOUBLE PRECISION array(n1+n2) #include "ff.h" if ( array(n1+n2) .eq. 0 ) then print *,'ffbnd: fatal: array not initialized; did you call ', + 'ffini?' stop endif ffbnd = (precx*abs(array(n1)/array(n1+n2)))**(1/DBLE(n2)) *###] ffbnd: end *###[ ffroot: subroutine ffroot(xm,xp,a,b,c,d,ier) ***#[*comment:*********************************************************** * * * Calculate the roots of the equation * * a*x^2 - 2*b*x + c = 0 * * given by * * x = (b +/- d )/a xp*xm = c/a * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ier DOUBLE PRECISION xm,xp,a,b,c,d * * common blocks: * #include "ff.h" * #] declarations: * #[ check input: if ( a .eq. 0 ) then call fferr(39,ier) if ( b.gt.0 .eqv. d.gt.0 ) then xp = 1/xalogm xm = c/(b+d) else xp = c/(b-d) xm = 1/xalogm endif return endif * #] check input: * #[ calculations: if ( d .eq. 0 ) then xm = b / a xp = xm elseif ( b .gt. 0 .eqv. d .gt. 0 ) then xp = ( b + d ) / a xm = c / (a*xp) else xm = ( b - d ) / a xp = c / (a*xm) endif * #] calculations: *###] ffroot: end *###[ ffcoot: subroutine ffcoot(xm,xp,a,b,c,d,ier) ***#[*comment:*********************************************************** * * * Calculate the roots of the equation * * a*x^2 - 2*b*x + c = 0 * * given by * * x = (b +/- d )/a xp*xm = c/a * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ier DOUBLE COMPLEX xm,xp,a,b,c,d * * local variables: * DOUBLE COMPLEX cc DOUBLE PRECISION absc * * common blocks: * #include "ff.h" * * statement function * absc(cc) = abs(DBLE(cc)) + abs(DIMAG(cc)) * #] declarations: * #[ check input: if ( a .eq. 0 ) then call fferr(38,ier) if ( DBLE(b).gt.0 .eqv. DBLE(d).gt.0 ) then xp = 1/xclogm xm = c/(b+d) else xp = c/(b-d) xm = 1/xclogm endif return endif * #] check input: * #[ calculations: cc = b+d if ( d .eq. 0 ) then xm = b / a xp = xm elseif ( absc(cc) .gt. xloss*absc(d) ) then xp = ( b + d ) / a xm = c / (a*xp) else xm = ( b - d ) / a xp = c / (a*xm) endif * #] calculations: *###] ffcoot: end *###[ ffxhck: subroutine ffxhck(xpi,dpipj,ns,ier) ***#[*comment:*********************************************************** * * * check whether the differences dpipj are compatible with xpi * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none integer ns,ier DOUBLE PRECISION xpi(ns),dpipj(ns,ns) integer i,j DOUBLE PRECISION xheck,rloss #include "ff.h" * #] declarations: * #[ calculations: if ( ier.lt.0 ) then print *,'ffxhck: error: ier < 0 ',ier ier=0 endif rloss = xloss**2*DBLE(10)**(-mod(ier,50)) do 20 i=1,ns do 10 j=1,ns xheck = dpipj(j,i) - xpi(j) + xpi(i) if ( rloss*abs(xheck) .gt. precx*max(abs(dpipj(j,i)), + abs(xpi(j)),abs(xpi(i))) ) then print *,'ffxhck: error: dpipj(',j,i,') <> xpi(',j, + ') - xpi(',i,'):',dpipj(j,i),xpi(j),xpi(i), + xheck,ier endif 10 continue 20 continue * #] calculations: *###] ffxhck: end *###[ ffchck: subroutine ffchck(cpi,cdpipj,ns,ier) ***#[*comment:*********************************************************** * * * check whether the differences cdpipj are compatible with cpi * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none integer ns,ier DOUBLE COMPLEX cpi(ns),cdpipj(ns,ns),c integer i,j DOUBLE COMPLEX check DOUBLE PRECISION absc,rloss #include "ff.h" absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ calculations: if ( ier.lt.0 ) then print *,'ffchck: error: ier < 0 ',ier ier=0 endif rloss = xloss**2*DBLE(10)**(-mod(ier,50)) do 20 i=1,ns do 10 j=1,ns check = cdpipj(j,i) - cpi(j) + cpi(i) if ( rloss*absc(check) .gt. precc*max(absc( + cdpipj(j,i)),absc(cpi(j)),absc(cpi(i))) ) then print *,'ffchck: error: cdpipj(',j,i,') <> cpi(',j, + ') - cpi(',i,'):',cdpipj(j,i),cpi(j),cpi(i), + check,ier endif 10 continue 20 continue * #] calculations: *###] ffchck: end *###[ nffeta: integer function nffeta(ca,cb,ier) ***#[*comment:*********************************************************** * calculates * * * * eta(a,b)/(2*i*pi) = ( thIm(-a)*thIm(-b)*thIm(a*b) * * - thIm(a)*thIm(b)*thIm(-a*b) ) * * * * with thIm(a) = theta(Im(a)) * ***#]*comment:*********************************************************** * #[ declarations: implicit none integer ier DOUBLE COMPLEX ca,cb DOUBLE PRECISION a,b,ab,rab #include "ff.h" * #] declarations: * #[ calculations: a = DIMAG(ca) b = DIMAG(cb) if ( a*b .lt. 0 ) then nffeta = 0 return endif rab = DBLE(ca)*DBLE(cb) - a*b ab = DBLE(ca)*b + a*DBLE(cb) if ( abs(ab) .lt. precc*abs(DBLE(ca)*b) ) then call fferr(32,ier) endif if ( a .lt. 0 .and. b .lt. 0 .and. ab .gt. 0 ) then nffeta = 1 elseif ( a .gt. 0 .and. b .gt. 0 .and. ab .lt. 0 ) then nffeta = -1 elseif ( a .eq. 0 .and. DBLE(ca) .le. 0 .or. + b .eq. 0 .and. DBLE(cb) .le. 0 .or. + ab .eq. 0 .and. rab .le. 0 ) then call fferr(32,ier) nffeta = 0 else nffeta = 0 endif * #] calculations: *###] nffeta: end *###[ nffet1: integer function nffet1(ca,cb,cc,ier) ***#[*comment:*********************************************************** * calculates the same eta with three input variables * * * * et1(a,b)/(2*i*pi) = ( thIm(-a)*thIm(-b)*thIm(c) * * - thIm(a)*thIm(b)*thIm(-c) ) * * * * with thIm(a) = theta(Im(a)) * ***#]*comment:*********************************************************** * #[ declarations: implicit none integer ier DOUBLE COMPLEX ca,cb,cc DOUBLE PRECISION a,b,ab #include "ff.h" * #] declarations: * #[ calculations: a = DIMAG(ca) b = DIMAG(cb) if ( a .gt. 0 .neqv. b .gt. 0 ) then nffet1 = 0 return endif ab = DIMAG(cc) if ( a .lt. 0 .and. b .lt. 0 .and. ab .gt. 0 ) then nffet1 = 1 elseif ( a .gt. 0 .and. b .gt. 0 .and. ab .lt. 0 ) then nffet1 = -1 elseif ( a .eq. 0 .and. DBLE(ca) .le. 0 .or. + b .eq. 0 .and. DBLE(cb) .le. 0 .or. + ab .eq. 0 .and. DBLE(cc) .le. 0 ) then call fferr(33,ier) nffet1 = 1 else nffet1 = 0 endif * #] calculations: *###] nffet1: end *###[ ffcayl: subroutine ffcayl(cs,z,coeff,n,ier) ***#[*comment:*********************************************************** * * * Do a Taylor expansion in z with real coefficients coeff(i) * * * * Input: z complex * * coeff(n) real * * n integer * * * * Output cs complex \sum_{i=1} z^i coeff(i) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer n,ier DOUBLE PRECISION coeff(n) DOUBLE COMPLEX z,cs * * local variables * integer i DOUBLE PRECISION absc DOUBLE COMPLEX c,zi,csi * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * #] declarations: * #[ work: cs = z*DBLE(coeff(1)) if ( absc(z) .lt. precc ) return zi = z do 10 i=2,n zi = zi*z csi = zi*DBLE(coeff(i)) cs = cs + csi if ( absc(csi) .lt. precc*absc(cs) ) goto 20 10 continue call ffwarn(9,ier,precc,absc(csi)) 20 continue * #] work: *###] ffcayl: end *###[ fftayl: subroutine fftayl(s,z,coeff,n,ier) ***#[*comment:*********************************************************** * * * Do a Taylor expansion in z with real coefficients coeff(i) * * * * Input: z real * * coeff(n) real * * n integer * * * * Output cs real \sum_{i=1} z^i coeff(i) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer n,ier DOUBLE PRECISION coeff(n),z,s * * local variables * integer i DOUBLE PRECISION zi,si * * common blocks * #include "ff.h" * * #] declarations: * #[ work: s = coeff(1)*z if ( abs(z) .lt. precx ) return zi = z do 10 i=2,n zi = zi*z si = coeff(i)*zi s = s + si if ( abs(si) .lt. precx*abs(s) ) goto 20 10 continue call ffwarn(9,ier,precx,si) 20 continue * #] work: *###] fftayl: end herwig++-2.6.0.orig/Looptools/util/ffcrr.F0000644000175000017500000004075711754474774021174 0ustar sylvestresylvestre#include "externals.h" *--#[ log: * $Id: ffcrr.f,v 1.5 1995/11/10 19:04:23 gj Exp $ * $Log: ffcrr.f,v $ c Revision 1.5 1995/11/10 19:04:23 gj c Added nicer logging header... c c Revision 1.4 1995/10/17 06:55:07 gj c Fixed ieps error in ffdcrr (ffcxs4.f), added real case in ffcrr, debugging c info in ffxd0, and warned against remaining errors for del2=0 in ffrot4 c (ffxd0h.f) c c Revision 1.3 1995/10/06 09:17:20 gj c Found stupid typo in ffxc0p which caused the result to be off by pi^2/3 in c some equal-mass cases. Added checks to ffcxs4.f ffcrr.f. c *--#] log: *###[ ffcrr: subroutine ffcrr(crr,ipi12,cy,cy1,cz,cz1,cdyz,ld2yzz,cd2yzz,czz, + czz1,isoort,ieps,ier) ***#[*comment:*********************************************************** * * * calculates R as defined in appendix b: * * * * /1 log(y-y1+ieps) - log(y0-y1+ieps) * * r(y0,y1,iesp) = \ dy -------------------------------- * * /0 y-y0 * * * * = li2(c1) - li2(c2) * * + eta(-y1,1/(y0-y1))*log(c1) * * - eta(1-y1,1/(y0-y1))*log(c2) * * with * * c1 = y0 / (y0-y1), c2 = (y0-1) / (y0-y1) * * * * the factors pi^2/12 are passed separately in the integer ipi12 * * ier is a status flag: 0=ok, 1=numerical problems, 2=error * * * * Input: cy (complex) * * cy1 (complex) 1-y * * cz (complex) * * cz1 (complex) 1-z * * cdyz (complex) y-z * * ieps (integer) denotes sign imaginary part of * * argument logs (0: don't care; * * +/-1: add -ieps to z; +/-2: * * direct in dilogs, no eta's) * * * * Output crr (complex) R modulo factors pi^2/12 * * ipi12 (integer) these factors * * ier (integer) lost ier digits, >100: error * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ipi12,isoort,ieps,ier logical ld2yzz,lreal DOUBLE COMPLEX crr(7),cy,cy1,cz,cz1,cdyz,cd2yzz,czz,czz1 * * local variables * DOUBLE COMPLEX cfact,cc1,cc2,cc1p,cc2p,carg1,carg2,carg3, + cli1,cli2,cli3,clo1,clo2,clo3,clog1p,clog2p,chill, + cd2,cd21,cd2n,cd21n1,cc1n,cterm,ctot,zfflo1,clog1,clog2, + cc,cli4,clo4 DOUBLE COMPLEX ctroep,zfflog DOUBLE PRECISION xa,xr,absc,xprec,bndtay,ffbnd DOUBLE PRECISION y,y1,z,z1,dyz,d2yzz,zz,zz1 integer i,nffeta,nffet1,iclas1,iclas2,n1,n2,n3,ntot, + i2pi,n3p external zfflog,zfflo1,ffbnd,nffeta,nffet1 save xprec,bndtay * * common blocks * #include "ff.h" * * statement function * absc(cc) = abs(DBLE(cc)) + abs(DIMAG(cc)) * #] declarations: * #[ initialisations: data xprec /-1D0/ if ( xprec .ne. precx ) then xprec = precx bndtay = ffbnd(2,18,xn2inv) * print *,'bndtay = ',bndtay endif * #] initialisations: * #[ real case: if ( DIMAG(cy).eq.0 .and. DIMAG(cy1).eq.0 .and. DIMAG(cz).eq.0 + .and. DIMAG(cz1).eq.0 ) then y = DBLE(cy) y1 = DBLE(cy1) z = DBLE(cz) z1 = DBLE(cz1) dyz = DBLE(cdyz) d2yzz = DBLE(cd2yzz) zz = DBLE(czz) zz1 = DBLE(czz1) call ffcxr(crr,ipi12,y,y1,z,z1,dyz,ld2yzz,d2yzz,zz,zz1, + .FALSE.,0D0,ieps,ier) return endif * #] real case: * #[ arguments: * * get the arguments * xa = absc(cdyz) if ( xa .eq. 0 ) then return * This line is for 68000 compilers that have a limited range for * complex division (Absoft, Apollo, Gould NP1): elseif ( DBLE(cdyz) .lt. xclogm .or. DIMAG(cdyz) .lt. xclogm + .or. 1/xa .lt. xclogm ) then ctroep = cdyz*DBLE(1/xa) cfact = 1/ctroep cfact = DBLE(1/xa)*cfact else cfact = 1/cdyz endif cc1 = cy * cfact cc2 = - cy1 * cfact * * see if we just need the real part * lreal = mod(isoort,5) .eq. 0 * #] arguments: * #[ which area?: * * determine the area: 1={|x|<=1,Re(x)<=1/2}, * 2={|1-x|<=1,Re(x)>1/2} * 3={|x|>1,|1-x|>1} * xr = DBLE(cc1) xa = absc(cc1) if ( xa .gt. 1 .and. xa .lt. 1+sqrt(2.) ) then * we need a more accurate estimate xa = xr**2 + DIMAG(cc1)**2 endif if ( ld2yzz .and. absc(cc1+1) .lt. xloss/2 ) then iclas1 = 4 cc1p = cc1 elseif ( xa .le. 1 .and. xr .le. 0.5 ) then iclas1 = 1 cc1p = cc1 elseif ( xa .lt. 1+sqrt(2.) .and. xa .lt. 2*xr ) then iclas1 = 2 cc1p = -cz * cfact if ( abs(DIMAG(cc1p)) .lt. precc*abs(DBLE(cc1p)) ) + cc1p = DBLE(cc1p) else iclas1 = 3 if ( 1/xa .lt. xclogm ) then ctroep = cc1*DBLE(1/xa) ctroep = 1/ctroep cc1p = ctroep*DBLE(1/xa) else cc1p = 1/cc1 endif endif xr = DBLE(cc2) xa = absc(cc2) if ( xa .gt. 1 .and. xa .lt. 1+sqrt(2.) ) then xa = xr**2 + DIMAG(cc2)**2 endif if ( ld2yzz .and. absc(cc2+1) .lt. xloss ) then iclas2 = 4 cc2p = cc2 elseif ( xa .le. 1 .and. xr .le. 0.5 ) then iclas2 = 1 cc2p = cc2 elseif ( xa .lt. 1+sqrt(2.) .and. xa .lt. 2*xr ) then iclas2 = 2 cc2p = cz1 * cfact if ( abs(DIMAG(cc2p)) .lt. precc*abs(DBLE(cc2p)) ) + cc2p = DBLE(cc2p) else iclas2 = 3 if ( 1/xa .lt. xclogm ) then ctroep = cc2*DBLE(1/xa) ctroep = 1/ctroep cc2p = ctroep*DBLE(1/xa) else cc2p = 1/cc2 endif endif * * throw together if they are close * if ( iclas1 .ne. iclas2 .and. absc(cc1-cc2) .lt. 2*xloss ) + then * we don't want trouble with iclasn = 4 if ( iclas1 .eq. 4 ) iclas1 = 1 if ( iclas2 .eq. 4 ) iclas2 = 1 if ( iclas1 .eq. iclas2 ) goto 5 * go on if ( iclas1 .le. iclas2 ) then iclas2 = iclas1 if ( iclas1 .eq. 1 ) then cc2p = cc2 else cc2p = cz1*cfact endif else iclas1 = iclas2 if ( iclas1 .eq. 1 ) then cc1p = cc1 else cc1p = -cz*cfact endif endif endif 5 continue * #] which area?: * #[ eta's: * * get eta1 and eta2 * if ( abs(ieps) .ge. 2 .or. isoort .eq. -2 ) then n1 = 0 n2 = 0 else if ( DIMAG(cz) .eq. 0 .or. DIMAG(cz1) .eq. 0 ) then if ( DIMAG(cz1) .eq. 0 ) then if ( DIMAG(cz) .eq. 0 ) then * cz is really real, the hard case: if ( cz .eq. 0 ) then * multiplied with log(1), so don't care: n1 = 0 * look at ieps for guidance * n2 = nffet1(DCMPLX(DBLE(0),DBLE(ieps)),cfact,cfact,ier) = 0 n2 = 0 elseif ( cz1 .eq. 0 ) then n1 = nffet1(DCMPLX(DBLE(0),DBLE(ieps)),cfact, + -cfact,ier) n2 = 0 else n1 = nffet1(DCMPLX(DBLE(0),DBLE(ieps)),cfact, + -cz*cfact,ier) n2 = nffet1(DCMPLX(DBLE(0),DBLE(ieps)),cfact, + cz1*cfact,ier) endif else n1 = nffet1(-cz,cfact,-cz*cfact,ier) n2 = nffet1(-cz,cfact,cz1*cfact,ier) endif else n1 = nffet1(cz1,cfact,-cz*cfact,ier) n2 = nffet1(cz1,cfact,cz1*cfact,ier) endif else * the imaginary part of cc1, cc1p is often very unstable. * make sure it agrees with the actual sign used. if ( iclas1 .eq. 2 ) then if ( DIMAG(cc1p) .eq. 0 ) then * if y (or y1 further on) is purely imaginary * give a random shift, this will also be used in * the transformation terms. Checked 7-mar-94 that it * is independent of the sign used. if ( DBLE(cy).eq.0 ) cy = cy + + isgnal*DBLE(precc)*DIMAG(cy) n1 = nffet1(-cz,cfact,DCMPLX(DBLE(0),ieps*DBLE(cy)), + ier) else n1 = nffet1(-cz,cfact,cc1p,ier) endif else if ( DIMAG(cc1) .eq. 0 ) then if ( DBLE(cy1).eq.0 ) cy1 = cy1 + + isgnal*DBLE(precc)*DIMAG(cy) n1 = nffet1(-cz,cfact,DCMPLX(DBLE(0), + -ieps*DBLE(cy1)),ier) else n1 = nffet1(-cz,cfact,-cc1,ier) endif endif if ( iclas2 .eq. 2 ) then if ( DIMAG(cc2p) .eq. 0 ) then if ( DBLE(cy).eq.0 ) cy = cy + + isgnal*DBLE(precc)*DIMAG(cy) n2 = nffet1(cz1,cfact,DCMPLX(DBLE(0),ieps*DBLE(cy)), + ier) else n2 = nffet1(cz1,cfact,cc2p,ier) endif else if ( DIMAG(cc2) .eq. 0 ) then if ( DBLE(cy1).eq.0 ) cy1 = cy1 + + isgnal*DBLE(precc)*DIMAG(cy) n2 = nffet1(cz1,cfact,DCMPLX(DBLE(0), + -ieps*DBLE(cy1)),ier) else n2 = nffet1(cz1,cfact,-cc2,ier) endif endif endif endif * #] eta's: * #[ calculations: * 3-oct-1995 changed code to only use second criterium if the * Taylor expansion is used - otherwise the Hill identity will * only make things worse if ( iclas1 .eq. iclas2 .and. isoort .ne. -2 .and. + ( absc(cc1p-cc2p) .lt. 2*xloss*absc(cc1p) + .or. lreal .and. abs(DBLE(cc1p-cc2p)) .lt. 2*xloss* + abs(DBLE(cc1p)) .and. (abs(DBLE(cc2p)) + + DIMAG(cc2p)**2/4) .lt. xloss .and. + abs(DIMAG(cc2p)) .lt. bndtay ) ) then * Close together: * -#[ handle dilog's: if ( .not. lreal .and. absc(cc2p) .gt. xloss + .or. lreal .and. ( (abs(DBLE(cc2p)) + DIMAG(cc2p)**2/4) + .gt. xloss .or. abs(DIMAG(cc2p)) .gt. bndtay ) ) + then *--#[ Hill identity: * * Use the Hill identity to get rid of the cancellations. * * * first get the arguments: * if ( iclas1 .eq. 1 .or. iclas1 .eq. 4 ) then carg1 = 1/cy carg2 = 1/cz1 carg3 = carg2/cc1p elseif ( iclas1 .eq. 2 ) then carg1 = 1/cz carg2 = 1/cy1 carg3 = carg2/cc1p elseif ( iclas1 .eq. 3 ) then carg1 = 1/cy1 carg3 = 1/cz1 carg2 = carg3*cc1p endif call ffzli2(cli1,clo1,carg1,ier) call ffzli2(cli2,clo2,carg2,ier) call ffzli2(cli3,clo3,carg3,ier) if ( absc(cc2p) .lt. xloss ) then clog2p = zfflo1(cc2p,ier) else clog2p = zfflog(1-cc2p,0,czero,ier) endif chill = clo1*clog2p *--#] Hill identity: else *--#[ Taylor expansion: * * if the points are close to zero do a Taylor * expansion of the first and last dilogarithm * * Li2(cc1p) - Li2(cc2p) * = sum cc1p^i ( 1-(1-cd2)^i ) /i^2 * * with cd2 = 1-cc2p/cc1p = ... * if ( iclas1 .eq. 1 .or. iclas1 .eq. 4 ) then cd2 = 1/cy elseif ( iclas1 .eq. 2 ) then cd2 = 1/cz elseif ( iclas1 .eq. 3 ) then cd2 = 1/cy1 endif cd21 = 1-cd2 cd21n1 = 1 cc1n = cc1p cd2n = cd2 ctot = cc1p*cd2 do 50 i=2,20 cc1n = cc1n*cc1p cd21n1 = cd21n1*cd21 cd2n = cd2n + cd2*cd21n1 cterm = cc1n*cd2n*DBLE(xn2inv(i)) ctot = ctot + cterm if ( absc(cterm) .le. precc*absc(ctot) .or. + lreal .and. abs(DBLE(cterm)) .le. precc* + abs(DBLE(ctot)) ) goto 51 50 continue 51 continue cli1 = ctot cli2 = 0 cli3 = 0 chill = 0 * for the eta+transformation section we also need if ( iclas1.ne.1 .or. n1.ne.0 .or. n2.ne.0 ) + clo1 = zfflo1(cd2,ier) if ( iclas1.eq.2 ) clo2 = zfflo1(1/cy1,ier) *--#] Taylor expansion: endif * * -#] handle dilog's: * -#[ handle eta + transformation terms: if ( iclas1.eq.1 .or. iclas1.eq.4 ) then *--#[ no transformation: * * no transformation was made. * * crr(5) = 0 if ( n1 .ne. n2 ) then if ( absc(cc1) .lt. xclogm ) then call fferr(23,ier) else * imaginary part not checked ier = ier + 50 crr(5) = (n1-n2)*c2ipi*zfflog(cc1,ieps,-cy,ier) endif endif * crr(6) = 0 * crr(7) = 0 if ( n2.ne.0 ) then crr(6) = - n2*c2ipi*clo1 n3 = nffeta(cc2,1/cc1,ier) if ( n3 .ne. 0 ) then crr(7) = n2*n3*c2ipi**2 * else * crr(7) = 0 endif endif *--#] no transformation: elseif ( iclas1 .eq. 2 ) then *--#[ transform 1-x: * * we tranformed to 1-x for both dilogs * if ( absc(cc1p) .lt. xloss ) then clog1 = zfflo1(cc1p,ier) else clog1 = zfflog(cc1,ieps,-cy,ier) endif if ( DIMAG(cc2p).eq.0 ) then if ( DIMAG(cc1p).eq.0 ) then * use the ieps instead n3 = 0 else n3 = nffet1(DCMPLX(DBLE(0),ieps*DBLE(cy)), + 1/cc1p,cc2p/cc1p,ier) endif else if ( DIMAG(cc1p).eq.0 ) then n3 =nffet1(cc2p,DCMPLX(DBLE(0),-ieps*DBLE(cy1)), + cc2p/cc1p,ier) else n3 = nffet1(cc2p,1/cc1p,cz,ier) endif endif ntot = n1-n2-n3 crr(5) = (ntot*c2ipi + clo1)*clog1 clog2p = zfflog(cc2p,ieps,cy,ier) crr(6) = clo2*(n2*c2ipi - clog2p) *--#] transform 1-x: elseif ( iclas1 .eq. 3 ) then *--#[ transform 1/x: * * we transformed to 1/x for both dilogs * clog2p = zfflog(-cc2p,ieps,cy1,ier) if ( DIMAG(cc2p).eq.0 .or. DIMAG(cc1).eq.0 ) then * we chose the eta's already equal, no worry. n3 = 0 n3p = 0 else n3 = nffet1(-cc2p,-cc1,-cy/cy1,ier) n3p = nffet1(cc2p,cc1,-cy/cy1,ier) endif if ( n3.ne.0 .or. n3p.ne.0 .or. n1.ne.n2 ) then * for the time being the normal terms, I'll have to think of * something smarter one day clog1p = zfflog(-cc1p,ieps,-cy,ier) crr(5) = -clog1p**2/2 crr(6) = +clog2p**2/2 crr(7) = (n1*zfflog(cc1,ieps,cy,ier) - + n2*zfflog(cc2,ieps,-cy1,ier))*c2ipi else crr(5) = clo1*(n2*c2ipi + clog2p - clo1/2) endif *--#] transform 1/x: endif * -#] handle eta + transformation terms: * -#[ add up: if ( iclas1 .eq. 1 .or. iclas1 .eq. 4 ) then crr(1) = cli1 crr(2) = cli2 crr(3) = - cli3 crr(4) = chill else crr(1) = - cli1 crr(2) = - cli2 crr(3) = cli3 crr(4) = - chill endif * -#] add up: else * Normal case: * -#[ handle dilogs: * * the dilogs will not come close together so just go on * only the special case cc1p ~ (-1,0) needs special attention * if ( iclas1 .ne. 4 .or. .not. ld2yzz ) then call ffzli2(cli1,clo1,cc1p,ier) else cd2 = cd2yzz + czz if ( absc(cd2) .lt. xloss*absc(cd2yzz) ) then cd2 = cy + cdyz endif cd2 = cd2/cdyz cfact = 1/(2-cd2) call ffzli2(cli1,clo1,cd2*cfact,ier) call ffzli2(cli3,clo3,-cd2*cfact,ier) call ffzli2(cli4,clo4,cd2,ier) endif if ( iclas2 .ne. 4 .or. .not. ld2yzz ) then call ffzli2(cli2,clo2,cc2p,ier) else if ( iclas1 .eq. 4 ) call fferr(26,ier) cd2 = cd2yzz - czz1 if ( absc(cd2) .lt. xloss*absc(cd2yzz) ) then cd2 = cdyz - cy1 endif cd2 = cd2/cdyz cfact = 1/(2-cd2) call ffzli2(cli2,clo2,cd2*cfact,ier) call ffzli2(cli3,clo3,-cd2*cfact,ier) call ffzli2(cli4,clo4,cd2,ier) endif * -#] handle dilogs: * -#[ handle eta terms: * * the eta's * if ( n1 .ne. 0 ) then if ( iclas1 .ne. 2 .or. absc(cc1p) .gt. xloss ) then if ( DBLE(cc1) .gt. -abs(DIMAG(cc1)) ) then clog1 = zfflog(cc1,ieps,cy,ier) else * take apart the factor i*pi^2 if ( iclas1 .eq. 4 ) then clog1 = zfflo1(cd2,ier) else clog1 = zfflog(-cc1,0,cy,ier) endif if ( DIMAG(cc1) .lt. 0 ) then i2pi = -1 elseif ( DIMAG(cc1) .gt. 0 ) then i2pi = +1 elseif ( DBLE(cy)*ieps .lt. 0 ) then i2pi = -1 elseif ( DBLE(cy)*ieps .gt. 0 ) then i2pi = +1 else call fferr(51,ier) i2pi = 0 endif ipi12 = ipi12 - n1*24*i2pi endif else clog1 = zfflo1(cc1p,ier) endif crr(5) = n1*c2ipi*clog1 * else * crr(5) = 0 endif if ( n2 .ne. 0 ) then if ( iclas2 .ne. 2 .or. absc(cc2p) .gt. xloss ) then if ( DBLE(cc2) .gt. -abs(DIMAG(cc2)) ) then clog2 = zfflog(cc2,ieps,cy,ier) else * take apart the factor i*pi^2 if ( iclas2 .eq. 4 ) then clog2 = zfflo1(cd2,ier) else clog2 = zfflog(-cc2,0,czero,ier) endif if ( DIMAG(cc2) .lt. 0 ) then i2pi = -1 elseif ( DIMAG(cc2) .gt. 0 ) then i2pi = +1 elseif ( DBLE(cy)*ieps .lt. 0 ) then i2pi = -1 elseif ( DBLE(cy)*ieps .gt. 0 ) then i2pi = +1 else call fferr(51,ier) i2pi = 0 endif ipi12 = ipi12 + n2*24*i2pi endif else clog2 = zfflo1(cc2p,ier) endif crr(6) = n2*c2ipi*clog2 * else * crr(6) = 0 endif * -#] handle eta terms: * -#[ handle transformation terms: * * transformation of cc1 * if ( iclas1 .eq. 1 ) then * crr(3) = 0 elseif( iclas1 .eq. 2 ) then cli1 = -cli1 ipi12 = ipi12 + 2 crr(3) = - clo1*zfflog(cc1p,ieps,cy,ier) elseif ( iclas1 .eq. 3 ) then cli1 = -cli1 ipi12 = ipi12 - 2 clog1p = zfflog(-cc1p,ieps,cy1,ier) crr(3) = - clog1p**2/2 elseif ( iclas1 .eq. 4 ) then * Note that this sum does not cause problems as d2<<1 crr(3) = -cli3 - cli4 + clo4*zfflog(cfact,0,czero,ier) ipi12 = ipi12 - 1 else call fferr(25,ier) endif * * transformation of cc2 * if ( iclas2 .eq. 1 ) then elseif( iclas2 .eq. 2 ) then cli2 = -cli2 ipi12 = ipi12 - 2 crr(4) = clo2*zfflog(cc2p,ieps,cy,ier) elseif ( iclas2 .eq. 3 ) then cli2 = -cli2 ipi12 = ipi12 + 2 clog2p = zfflog(-cc2p,ieps,cy1,ier) crr(4) = clog2p**2/2 elseif ( iclas2 .eq. 4 ) then * Note that this sum does not cause problems as d2<<1 crr(4) = cli3 + cli4 - clo4*zfflog(cfact,0,czero,ier) ipi12 = ipi12 + 1 else call fferr(27,ier) endif * -#] handle transformation terms: * -#[ sum: crr(1) = cli1 crr(2) = - cli2 crr(6) = - crr(6) * crr(7) = 0 * -#] sum: endif * #] calculations: *###] ffcrr: end herwig++-2.6.0.orig/Looptools/util/ffxxyz.F0000644000175000017500000005057511754474774021427 0ustar sylvestresylvestre#include "externals.h" *###[ ffxxyz: subroutine ffxxyz(y,z,dyz,d2yzz,dy2z,ivert,sdel2p,sdel2s,etalam, + etami,delps,xpi,dpipj,piDpj,isoort,ldel2s,ns,ier) ***#[*comment:*********************************************************** * * * calculate in a numerically stable way * * * * z(1,2) = (-p(ip1).p(is2) +/- sdel2s)/xpi(ip1) * * y(1,2) = (-p(ip1).p(is2) +/- sdisc)/xpi(ip1) * * disc = del2s + etaslam*xpi(ip1) * * * * y(3,4) = 1-y(1,2) * * z(3,4) = 1-z(1,2) * * dyz(i,j) = y(i) - z(j) * * d2yzz = y(2) - z(1) - z(2) * * dy2z(j) = y(2) - 2*z(j) * * * * Input: ivert (integer) defines the vertex * * sdel2p (real) sqrt(lam(p1,p2,p3))/2 * * sdel2s (real) sqrt(lam(p,ma,mb))/2 * * etalam (real) det(si.sj)/det(pi.pj) * * etami(6) (real) si.si - etalam * * xpi(ns) (real) standard * * piDpj(ns,ns) (real) standard * * ns (integer) dim of xpi,piDpj * * * * Output: y(4),z(4),dyz(4,4) (real) see above * * * * Calls: fferr,ffroot * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ivert,ns,ier,isoort(2) logical ldel2s DOUBLE PRECISION y(4),z(4),dyz(2,2),d2yzz,dy2z(4), + sdel2p,sdel2s,etalam,etami(6),delps,xpi(ns), + dpipj(ns,ns),piDpj(ns,ns) * * local variables: * integer i,j,n,ip1,ip2,ip3,is1,is2,is3,iwarn,ier1 DOUBLE PRECISION disc,hulp,s,smax,som(51),xmax DOUBLE PRECISION t1,t2,t4,t5,t8,t3,t7,t9,t12,t14,t21,t23,t24, + t28,t6,t35,t44,t42,t36,t55,t41,t19,t59,t25,t69,t82,t75,t84,t92, + t31,t98,t74,t101,t89,t106,t112,t113,t13,t117,t126,t127,t129, + t130,t133,t128,t132,t134,t137,t139,t146,t148,t149,t153,t131, + t160,t171,t169,t161,t182,t168,t144,t186,t150,t208,t201,t210, + t219,t156,t225,t200,t228,t215,t233,t239,t240,t138,t244 * * common blocks: * #include "ff.h" * #] declarations: * #[ set up pointers: if ( ldel2s .and. ivert .ne. 1 ) goto 100 is1 = ivert is2 = ivert+1 if ( is2 .eq. 4 ) is2 = 1 is3 = ivert-1 if ( is3 .eq. 0 ) is3 = 3 ip1 = is1 + 3 ip2 = is2 + 3 ip3 = is3 + 3 * #] set up pointers: * #[ xk = 0: if ( xpi(ip1) .eq. 0 ) then isoort(2) = 0 if ( piDpj(is1,ip1) .eq. 0 ) then isoort(1) = 0 return endif isoort(1) = 1 y(1) = etami(is2) / piDpj(is1,ip1) /2 y(2) = y(1) y(3) = - etami(is1) / piDpj(is1,ip1) /2 y(4) = y(3) z(1) = xpi(is2) / piDpj(is1,ip1) /2 z(2) = z(1) z(3) = - xpi(is1) / piDpj(is1,ip1) /2 z(4) = z(3) dyz(1,1) = - etalam / piDpj(is1,ip1) /2 dyz(1,2) = dyz(1,1) dyz(2,1) = dyz(1,1) dyz(2,2) = dyz(1,1) ier1 = ier do 10 i=1,3,2 dy2z(i) = y(i) - 2*z(i) smax = abs(y(i)) dy2z(i+1) = dy2z(i) 10 continue ier = ier1 return endif * #] xk = 0: * #[ get y(1,2),z(1,2): if ( sdel2s .eq. 0 ) then isoort(1) = 2 isoort(2) = 2 z(1) = piDpj(ip1,is2)/xpi(ip1) z(2) = z(1) else isoort(1) = 1 isoort(2) = 1 call ffroot(z(1),z(2),xpi(ip1),piDpj(ip1,is2),xpi(is2), + sdel2s,ier) endif disc = delps/sdel2p call ffroot(y(1),y(2),xpi(ip1),piDpj(ip1,is2),etami(is2),disc, + ier) * #] get y(1,2),z(1,2): * #[ get y(3,4),z(3,4): if ( isoort(1) .eq. 2 ) then z(3) = -piDpj(ip1,is1)/xpi(ip1) z(4) = z(3) else z(3) = 1-z(1) z(4) = 1-z(2) if ( abs(z(3)) .lt. xloss .or. abs(z(4)) .lt. xloss ) + call ffroot(z(4),z(3),xpi(ip1),-piDpj(ip1,is1), + xpi(is1),sdel2s,ier) endif y(3) = 1-y(1) y(4) = 1-y(2) if ( abs(y(3)) .lt. xloss .or. abs(y(4)) .lt. xloss ) then call ffroot(y(4),y(3),xpi(ip1),-piDpj(ip1,is1), + etami(is1),disc,ier) endif * #] get y(3,4),z(3,4): * #[ get dyz: * Note that dyz(i,j) only exists for i,j=1,2! if ( isoort(1) .eq. 2 ) then dyz(2,1) = disc/xpi(ip1) dyz(2,2) = dyz(2,1) elseif ( disc .gt. 0 .eqv. sdel2s .gt. 0 ) then dyz(2,1) = ( disc + sdel2s )/xpi(ip1) dyz(2,2) = etalam/(xpi(ip1)*dyz(2,1)) else dyz(2,2) = ( disc - sdel2s )/xpi(ip1) dyz(2,1) = etalam/(xpi(ip1)*dyz(2,2)) endif dyz(1,1) = -dyz(2,2) dyz(1,2) = -dyz(2,1) d2yzz = 2*disc/xpi(ip1) * * these are very rarely needed, but ... * iwarn = 0 ier1 = ier do 20 i=1,4 j = 2*((i+1)/2) dy2z(i) = y(j) - 2*z(i) smax = abs(y(j)) if ( abs(dy2z(i)) .lt. xloss*smax ) then if ( i/2 .eq. 1 ) then s = -y(j-1) - 2*sdel2s/xpi(ip1) else s = -y(j-1) + 2*sdel2s/xpi(ip1) endif if ( abs(y(j-1)) .lt. smax ) then dy2z(i) = s smax = abs(y(j-1)) endif if ( abs(dy2z(i)) .lt. xloss*smax ) then if ( iwarn .ne. 0 ) then else iwarn = i xmax = smax endif endif endif 20 continue if ( iwarn .ne. 0 ) then * * we should import the differences, but later... * if ( abs(dpipj(is3,ip1)) .lt. xloss*xpi(is3) + .and. abs(dpipj(is1,is2)) .lt. xloss*abs(xpi(ip1))) then * * give it another try - multiply roots (see dy2z.frm) * if ( iwarn.lt.3 ) then *prod1= * som(1)=+160*xpi(ip1)*xpi(ip2)*xpi(is2)*piDpj(ip1,ip2)**2* * + dpipj(is2,is1)**2 * som(2)=-40*xpi(ip1)*xpi(ip2)*piDpj(ip1,ip2)*piDpj(ip2, * + is2)*dpipj(is2,is1)**3 * som(3)=-32*xpi(ip1)*xpi(ip2)*piDpj(ip1,ip2)**2*dpipj(is2, * + is1)**3 * som(4)=+9*xpi(ip1)*xpi(ip2)**2*dpipj(is2,is1)**4 * som(5)=-128*xpi(ip1)*xpi(is2)*piDpj(ip1,ip2)**3*piDpj(ip2, * + is2)*dpipj(is2,is1) * som(6)=-128*xpi(ip1)*xpi(is2)*piDpj(ip1,ip2)**4*dpipj(is2, * + is1) * som(7)=+256*xpi(ip1)*xpi(is2)**2*piDpj(ip1,ip2)**4 * som(8)=-16*xpi(ip1)*piDpj(ip1,ip2)**2*piDpj(ip2,is2)**2* * + dpipj(is2,is1)**2 * som(9)=+96*xpi(ip1)*piDpj(ip1,ip2)**3*piDpj(ip2,is2)*dpipj(is2, * + is1)**2 * som(10)=+128*xpi(ip1)**2*xpi(ip2)*xpi(is2)*piDpj(ip1,ip2)*piDpj( * + ip2,is2)*dpipj(is2,is1) * som(11)=+320*xpi(ip1)**2*xpi(ip2)*xpi(is2)*piDpj(ip1,ip2)**2* * + dpipj(is2,is1) * som(12)=-512*xpi(ip1)**2*xpi(ip2)*xpi(is2)**2*piDpj(ip1,ip2)**2 * som(13)=-120*xpi(ip1)**2*xpi(ip2)*piDpj(ip1,ip2)*piDpj(ip2, * + is2)*dpipj(is2,is1)**2 * som(14)=-48*xpi(ip1)**2*xpi(ip2)*piDpj(ip1,ip2)**2*dpipj(is2, * + is1)**2 * som(15)=+40*xpi(ip1)**2*xpi(ip2)*piDpj(ip2,is2)**2*dpipj(is2, * + is1)**2 * som(16)=-96*xpi(ip1)**2*xpi(ip2)**2*xpi(is2)*dpipj(is2,is1)**2 * som(17)=+36*xpi(ip1)**2*xpi(ip2)**2*dpipj(is2,is1)**3 * som(18)=+128*xpi(ip1)**2*xpi(is2)*piDpj(ip1,ip2)**2*piDpj(ip2, * + is2)**2 * som(19)=-128*xpi(ip1)**2*xpi(is2)*piDpj(ip1,ip2)**3*piDpj(ip2, * + is2) * som(20)=-64*xpi(ip1)**2*xpi(is2)*piDpj(ip1,ip2)**4 * som(21)=-32*xpi(ip1)**2*piDpj(ip1,ip2)*piDpj(ip2,is2)**3* * + dpipj(is2,is1) * som(22)=-32*xpi(ip1)**2*piDpj(ip1,ip2)**2*piDpj(ip2,is2)**2* * + dpipj(is2,is1) * som(23)=+96*xpi(ip1)**2*piDpj(ip1,ip2)**3*piDpj(ip2,is2)* * + dpipj(is2,is1) * som(24)=+128*xpi(ip1)**3*xpi(ip2)*xpi(is2)*piDpj(ip1,ip2)*piDpj( * + ip2,is2) * som(25)=+160*xpi(ip1)**3*xpi(ip2)*xpi(is2)*piDpj(ip1,ip2)**2 * som(26)=-128*xpi(ip1)**3*xpi(ip2)*xpi(is2)*piDpj(ip2,is2)**2 * som(27)=+32*xpi(ip1)**3*xpi(ip2)*piDpj(ip1,ip2)*piDpj(ip2, * + is1)*piDpj(ip2,is2) * som(28)=-120*xpi(ip1)**3*xpi(ip2)*piDpj(ip1,ip2)*piDpj(ip2, * + is2)*dpipj(is2,is1) * som(29)=-32*xpi(ip1)**3*xpi(ip2)*piDpj(ip1,ip2)**2*dpipj(is2, * + is1) * som(30)=-16*xpi(ip1)**3*xpi(ip2)*piDpj(ip2,is1)*piDpj(ip2, * + is2)**2 * som(31)=+80*xpi(ip1)**3*xpi(ip2)*piDpj(ip2,is2)**2*dpipj(is2, * + is1) * som(32)=-192*xpi(ip1)**3*xpi(ip2)**2*xpi(is2)*dpipj(is2,is1) * som(33)=+256*xpi(ip1)**3*xpi(ip2)**2*xpi(is2)**2 * som(34)=+54*xpi(ip1)**3*xpi(ip2)**2*dpipj(is2,is1)**2 * som(35)=-16*xpi(ip1)**3*xpi(ip3)*piDpj(ip1,ip2)*piDpj(ip2, * + is1)*piDpj(ip2,is2) * som(36)=+8*xpi(ip1)**3*xpi(ip3)*piDpj(ip2,is1)*piDpj(ip2,is2)**2 * som(37)=+16*xpi(ip1)**3*xpi(is2)*piDpj(ip1,ip2)*piDpj(ip2, * + is1)*piDpj(ip2,is2) * som(38)=-8*xpi(ip1)**3*xpi(is2)*piDpj(ip2,is1)*piDpj(ip2,is2)**2 * som(39)=-16*xpi(ip1)**3*piDpj(ip1,ip2)*piDpj(ip2,is1)*piDpj(ip2, * + is2)*dpipj(is3,ip1) * som(40)=+8*xpi(ip1)**3*piDpj(ip2,is1)*piDpj(ip2,is2)**2* * + dpipj(is3,ip1) * som(41)=-40*xpi(ip1)**4*xpi(ip2)*piDpj(ip1,ip2)*piDpj(ip2,is2) * som(42)=-8*xpi(ip1)**4*xpi(ip2)*piDpj(ip1,ip2)**2 * som(43)=+40*xpi(ip1)**4*xpi(ip2)*piDpj(ip2,is2)**2 * som(44)=-96*xpi(ip1)**4*xpi(ip2)**2*xpi(is2) * som(45)=+36*xpi(ip1)**4*xpi(ip2)**2*dpipj(is2,is1) * som(46)=+9*xpi(ip1)**5*xpi(ip2)**2 * som(47)=-8*xpi(ip2)*piDpj(ip1,ip2)**2*dpipj(is2,is1)**4 * som(48)=-64*xpi(is2)*piDpj(ip1,ip2)**4*dpipj(is2,is1)**2 * som(49)=+32*piDpj(ip1,ip2)**3*piDpj(ip2,is2)*dpipj(is2,is1)**3 * print '(7g20.12)',(som(i),i=1,49) * * optimized by Maple (see ffxxyz.map) * t1 = xpi(ip1) t2 = xpi(ip2) t3 = t1*t2 t4 = xpi(is2) t5 = piDpj(ip1,ip2) t6 = t5**2 t7 = t4*t6 t8 = dpipj(is2,is1) t9 = t8**2 som(1) = 160*t3*t7*t9 t12 = piDpj(ip2,is2) t13 = t5*t12 t14 = t9*t8 som(2) = -40*t3*t13*t14 som(3) = -32*t3*t6*t14 t19 = t2**2 t21 = t9**2 som(4) = 9*t1*t19*t21 t23 = t1*t4 t24 = t6*t5 t25 = t24*t12 som(5) = -128*t23*t25*t8 t28 = t6**2 som(6) = -128*t23*t28*t8 t31 = t4**2 som(7) = 256*t1*t31*t28 t35 = t12**2 t36 = t35*t9 som(8) = -16*t1*t6*t36 som(9) = 96*t1*t24*t12*t9 t41 = t1**2 t42 = t41*t2 t44 = t13*t8 som(10) = 128*t42*t4*t44 som(11) = 320*t42*t7*t8 som(12) = -512*t42*t31*t6 som(13) = -120*t42*t13*t9 som(14) = -48*t42*t6*t9 som(15) = 40*t42*t36 t55 = t41*t19 som(16) = -96*t55*t4*t9 som(17) = 36*t55*t14 t59 = t41*t4 som(18) = 128*t59*t6*t35 som(19) = -128*t59*t25 som(20) = -64*t59*t28 som(21) = -32*t41*t5*t35*t12*t8 t69 = t35*t8 som(22) = -32*t41*t6*t69 som(23) = 96*t41*t24*t12*t8 t74 = t41*t1 t75 = t74*t2 som(24) = 128*t75*t4*t5*t12 som(25) = 160*t75*t7 som(26) = -128*t75*t4*t35 t82 = piDpj(ip2,is1) t84 = t5*t82*t12 som(27) = 32*t75*t84 som(28) = -120*t75*t44 som(29) = -32*t75*t6*t8 t89 = t82*t35 som(30) = -16*t75*t89 som(31) = 80*t75*t69 t92 = t74*t19 som(32) = -192*t92*t4*t8 som(33) = 256*t92*t31 som(34) = 54*t92*t9 t98 = t74*xpi(ip3) som(35) = -16*t98*t84 som(36) = 8*t98*t89 t101 = t74*t4 som(37) = 16*t101*t84 som(38) = -8*t101*t89 t106 = dpipj(is3,ip1) som(39) = -16*t74*t5*t82*t12*t106 som(40) = 8*t74*t82*t35*t106 t112 = t41**2 t113 = t112*t2 som(41) = -40*t113*t13 som(42) = -8*t113*t6 som(43) = 40*t113*t35 t117 = t112*t19 som(44) = -96*t117*t4 som(45) = 36*t117*t8 som(46) = 9*t112*t1*t19 som(47) = -8*t2*t6*t21 som(48) = -64*t4*t28*t9 som(49) = 32*t25*t14 * print '(7g20.12)',(som(i),i=1,49) n=49 else *prod3= * som(1)=+160*xpi(ip1)*xpi(ip2)*xpi(is2)*piDpj(ip1,ip2)**2* * + dpipj(is2,is1)**2 * som(2)=-40*xpi(ip1)*xpi(ip2)*piDpj(ip1,ip2)*piDpj(ip2, * + is2)*dpipj(is2,is1)**3 * som(3)=-88*xpi(ip1)*xpi(ip2)*piDpj(ip1,ip2)**2*dpipj(is2, * + is1)**3 * som(4)=+9*xpi(ip1)*xpi(ip2)**2*dpipj(is2,is1)**4 * som(5)=-128*xpi(ip1)*xpi(is2)*piDpj(ip1,ip2)**3*piDpj(ip2, * + is2)*dpipj(is2,is1) * som(6)=-256*xpi(ip1)*xpi(is2)*piDpj(ip1,ip2)**4*dpipj(is2,is1) * som(7)=+256*xpi(ip1)*xpi(is2)**2*piDpj(ip1,ip2)**4 * som(8)=-16*xpi(ip1)*piDpj(ip1,ip2)**2*piDpj(ip2,is2)**2*dpipj( * + is2,is1)**2 * som(9)=+64*xpi(ip1)*piDpj(ip1,ip2)**3*piDpj(ip2,is2)*dpipj(is2, * + is1)**2 * som(10)=+80*xpi(ip1)*piDpj(ip1,ip2)**4*dpipj(is2,is1)**2 * som(11)=+128*xpi(ip1)**2*xpi(ip2)*xpi(is2)*piDpj(ip1,ip2)*piDpj( * + ip2,is2)*dpipj(is2,is1) * som(12)=+576*xpi(ip1)**2*xpi(ip2)*xpi(is2)*piDpj(ip1,ip2)**2* * + dpipj(is2,is1) * som(13)=-512*xpi(ip1)**2*xpi(ip2)*xpi(is2)**2*piDpj(ip1,ip2)**2 * som(14)=-88*xpi(ip1)**2*xpi(ip2)*piDpj(ip1,ip2)*piDpj(ip2, * + is2)*dpipj(is2,is1)**2 * som(15)=-192*xpi(ip1)**2*xpi(ip2)*piDpj(ip1,ip2)**2*dpipj(is2, * + is1)**2 * som(16)=+40*xpi(ip1)**2*xpi(ip2)*piDpj(ip2,is2)**2*dpipj(is2, * + is1)**2 * som(17)=-96*xpi(ip1)**2*xpi(ip2)**2*xpi(is2)*dpipj(is2,is1)**2 * som(18)=+60*xpi(ip1)**2*xpi(ip2)**2*dpipj(is2,is1)**3 * som(19)=+128*xpi(ip1)**2*xpi(is2)*piDpj(ip1,ip2)**2*piDpj(ip2, * + is2)**2 * som(20)=-128*xpi(ip1)**2*xpi(is2)*piDpj(ip1,ip2)**3*piDpj(ip2, * + is2) * som(21)=-64*xpi(ip1)**2*xpi(is2)*piDpj(ip1,ip2)**4 * som(22)=-32*xpi(ip1)**2*piDpj(ip1,ip2)*piDpj(ip2,is2)**3* * + dpipj(is2,is1) * som(23)=+64*xpi(ip1)**2*piDpj(ip1,ip2)**3*piDpj(ip2,is2)* * + dpipj(is2,is1) * som(24)=+32*xpi(ip1)**2*piDpj(ip1,ip2)**4*dpipj(is2,is1) * som(25)=+128*xpi(ip1)**3*xpi(ip2)*xpi(is2)*piDpj(ip1,ip2)*piDpj( * + ip2,is2) * som(26)=+160*xpi(ip1)**3*xpi(ip2)*xpi(is2)*piDpj(ip1,ip2)**2 * som(27)=-128*xpi(ip1)**3*xpi(ip2)*xpi(is2)*piDpj(ip2,is2)**2 * som(28)=+32*xpi(ip1)**3*xpi(ip2)*piDpj(ip1,ip2)*piDpj(ip2, * + is1)*piDpj(ip2,is2) * som(29)=-88*xpi(ip1)**3*xpi(ip2)*piDpj(ip1,ip2)*piDpj(ip2, * + is2)*dpipj(is2,is1) * som(30)=-88*xpi(ip1)**3*xpi(ip2)*piDpj(ip1,ip2)**2*dpipj(is2, * + is1) * som(31)=-16*xpi(ip1)**3*xpi(ip2)*piDpj(ip2,is1)*piDpj(ip2, * + is2)**2 * som(32)=+48*xpi(ip1)**3*xpi(ip2)*piDpj(ip2,is2)**2*dpipj(is2, * + is1) * som(33)=-320*xpi(ip1)**3*xpi(ip2)**2*xpi(is2)*dpipj(is2,is1) * som(34)=+256*xpi(ip1)**3*xpi(ip2)**2*xpi(is2)**2 * som(35)=+118*xpi(ip1)**3*xpi(ip2)**2*dpipj(is2,is1)**2 * som(36)=-16*xpi(ip1)**3*xpi(ip3)*piDpj(ip1,ip2)*piDpj(ip2, * + is1)*piDpj(ip2,is2) * som(37)=+8*xpi(ip1)**3*xpi(ip3)*piDpj(ip2,is1)*piDpj(ip2,is2)**2 * som(38)=+16*xpi(ip1)**3*xpi(is2)*piDpj(ip1,ip2)*piDpj(ip2, * + is1)*piDpj(ip2,is2) * som(39)=-8*xpi(ip1)**3*xpi(is2)*piDpj(ip2,is1)*piDpj(ip2,is2)**2 * som(40)=-16*xpi(ip1)**3*piDpj(ip1,ip2)*piDpj(ip2,is1)*piDpj(ip2, * + is2)*dpipj(is3,ip1) * som(41)=+8*xpi(ip1)**3*piDpj(ip2,is1)*piDpj(ip2,is2)**2* * + dpipj(is3,ip1) * som(42)=-40*xpi(ip1)**4*xpi(ip2)*piDpj(ip1,ip2)*piDpj(ip2,is2) * som(43)=-8*xpi(ip1)**4*xpi(ip2)*piDpj(ip1,ip2)**2 * som(44)=+40*xpi(ip1)**4*xpi(ip2)*piDpj(ip2,is2)**2 * som(45)=-96*xpi(ip1)**4*xpi(ip2)**2*xpi(is2) * som(46)=+60*xpi(ip1)**4*xpi(ip2)**2*dpipj(is2,is1) * som(47)=+9*xpi(ip1)**5*xpi(ip2)**2 * som(48)=-8*xpi(ip2)*piDpj(ip1,ip2)**2*dpipj(is2,is1)**4 * som(49)=-64*xpi(is2)*piDpj(ip1,ip2)**4*dpipj(is2,is1)**2 * som(50)=+32*piDpj(ip1,ip2)**3*piDpj(ip2,is2)*dpipj(is2,is1)**3 * som(51)=+32*piDpj(ip1,ip2)**4*dpipj(is2,is1)**3 * print '(7g20.12)',(som(i),i=1,51) * * optimized by Maple (see ffxxyz.map) * t126 = xpi(ip1) t127 = xpi(ip2) t128 = t126*t127 t129 = xpi(is2) t130 = piDpj(ip1,ip2) t131 = t130**2 t132 = t129*t131 t133 = dpipj(is2,is1) t134 = t133**2 som(1) = 160*t128*t132*t134 t137 = piDpj(ip2,is2) t138 = t130*t137 t139 = t134*t133 som(2) = -40*t128*t138*t139 som(3) = -88*t128*t131*t139 t144 = t127**2 t146 = t134**2 som(4) = 9*t126*t144*t146 t148 = t126*t129 t149 = t131*t130 t150 = t149*t137 som(5) = -128*t148*t150*t133 t153 = t131**2 som(6) = -256*t148*t153*t133 t156 = t129**2 som(7) = 256*t126*t156*t153 t160 = t137**2 t161 = t160*t134 som(8) = -16*t126*t131*t161 som(9) = 64*t126*t149*t137*t134 som(10) = 80*t126*t153*t134 t168 = t126**2 t169 = t168*t127 t171 = t138*t133 som(11) = 128*t169*t129*t171 som(12) = 576*t169*t132*t133 som(13) = -512*t169*t156*t131 som(14) = -88*t169*t138*t134 som(15) = -192*t169*t131*t134 som(16) = 40*t169*t161 t182 = t168*t144 som(17) = -96*t182*t129*t134 som(18) = 60*t182*t139 t186 = t168*t129 som(19) = 128*t186*t131*t160 som(20) = -128*t186*t150 som(21) = -64*t186*t153 som(22) = -32*t168*t130*t160*t137*t133 som(23) = 64*t168*t149*t137*t133 som(24) = 32*t168*t153*t133 t200 = t168*t126 t201 = t200*t127 som(25) = 128*t201*t129*t130*t137 som(26) = 160*t201*t132 som(27) = -128*t201*t129*t160 t208 = piDpj(ip2,is1) t210 = t130*t208*t137 som(28) = 32*t201*t210 som(29) = -88*t201*t171 som(30) = -88*t201*t131*t133 t215 = t208*t160 som(31) = -16*t201*t215 som(32) = 48*t201*t160*t133 t219 = t200*t144 som(33) = -320*t219*t129*t133 som(34) = 256*t219*t156 som(35) = 118*t219*t134 t225 = t200*xpi(ip3) som(36) = -16*t225*t210 som(37) = 8*t225*t215 t228 = t200*t129 som(38) = 16*t228*t210 som(39) = -8*t228*t215 t233 = dpipj(is3,ip1) som(40) = -16*t200*t130*t208*t137*t233 som(41) = 8*t200*t208*t160*t233 t239 = t168**2 t240 = t239*t127 som(42) = -40*t240*t138 som(43) = -8*t240*t131 som(44) = 40*t240*t160 t244 = t239*t144 som(45) = -96*t244*t129 som(46) = 60*t244*t133 som(47) = 9*t239*t126*t144 som(48) = -8*t127*t131*t146 som(49) = -64*t129*t153*t134 som(50) = 32*t150*t139 som(51) = 32*t153*t139 * print '(7g20.12)',(som(i),i=1,51) n=51 endif * s = 0 smax = 0 do 30 j=1,n s = s + som(j) smax = max(smax,som(j)) 30 continue if ( iwarn .lt. 3 ) then hulp = 1/(16*xpi(ip1)**3*sdel2p**4*dy2z(3-iwarn)* + (y(1)-2*z(1))*(y(1)-2*z(2))) else hulp = 1/(16*xpi(ip1)**3*sdel2p**4*dy2z(7-iwarn)* + (y(3)-2*z(3))*(y(3)-2*z(4))) endif s = s*hulp smax = smax*hulp if ( smax .lt. xmax ) then dy2z(iwarn) = s xmax = smax endif else n=0 endif endif ier = ier1 * goto 200 * #] get dyz: * #[ special case, get indices: 100 continue if ( ivert.eq.2 ) then is1 = 2 ip1 = 5 else is1 = 1 ip1 = 6 endif * #] special case, get indices: * #[ xk = 0: if ( xpi(ip1) .eq. 0 ) then call fferr(88,ier) endif * #] xk = 0: * #[ get ypm,zpm: * * special case del2s = 0, hence the roots are not the real roots * but z_2'' = (z_2'-1)/delta, z''_3 = -z'_3/delta * hulp = sdel2s disc = delps/sdel2p if ( ivert .eq. 3 ) then hulp = -hulp disc = -disc endif if ( sdel2s .eq. 0 ) then isoort(1) = 102 isoort(2) = 102 z(1) = piDpj(is1,3)/xpi(3) z(2) = z(1) else isoort(1) = 101 isoort(2) = 101 call ffroot(z(1),z(2),xpi(3),piDpj(is1,3),xpi(is1),hulp,ier) endif call ffroot(y(1),y(2),xpi(3),piDpj(is1,3),etami(is1),disc,ier) * #] get ypm,zpm: * #[ get ypm1,zpm1: z(3) = 1 - z(1) z(4) = 1 - z(2) if ( abs(z(3)).lt.xloss .or. abs(z(4)).lt.xloss ) then if ( ivert.eq.2 ) then call ffroot(z(4),z(3),xpi(3),piDpj(ip1,3),xpi(ip1),hulp, + ier) else call ffroot(z(4),z(3),xpi(3),-piDpj(ip1,3),xpi(ip1),hulp + ,ier) endif endif y(3) = 1 - y(1) y(4) = 1 - y(2) if ( abs(y(3)) .lt. xloss .or. abs(y(4)) .lt. xloss ) then if ( ivert .eq. 2 ) then call ffroot(y(4),y(3),xpi(3),piDpj(ip1,3),etami(ip1), + disc,ier) else call ffroot(y(4),y(3),xpi(3),-piDpj(ip1,3),etami(ip1), + disc,ier) endif endif * #] get ypm1,zpm1: * #[ get dypzp, dypzm: if ( isoort(1) .eq. 2 ) then dyz(2,1) = disc/xpi(3) dyz(2,2) = dyz(2,1) elseif ( disc .gt. 0 .eqv. sdel2s .gt. 0 ) then dyz(2,1) = ( disc + hulp )/xpi(3) dyz(2,2) = etalam/(xpi(3)*dyz(2,1)) else dyz(2,2) = ( disc - hulp )/xpi(3) dyz(2,1) = etalam/(xpi(3)*dyz(2,2)) endif dyz(1,1) = -dyz(2,2) dyz(1,2) = -dyz(2,1) d2yzz = 2*disc/xpi(3) * * these are very rarely needed, but ... * do 220 i=1,4 j = 2*((i+1)/2) dy2z(i) = y(j) - 2*z(i) smax = abs(y(j)) 220 continue * #] get dypzp, dypzm: 200 continue *###] ffxxyz: end *###[ ffdwz: subroutine ffdwz(dwz,z,i1,j1,l,alpha,alph1,xpi,dpipj,piDpj, + sdel2i,ns,ier) ***#[*comment:*********************************************************** * * * Recalculate dwz(i1,j1) = w(i1) - z(j1) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer i1,j1,l,ns,ier DOUBLE PRECISION dwz(2,2),z(4) DOUBLE PRECISION alpha,alph1,xpi(ns),dpipj(ns,ns),piDpj(ns,ns), + sdel2i(3) * * local variables: * DOUBLE PRECISION s(8),sum,fac,xmax integer i * * common blocks: * #include "ff.h" * #] declarations: * #[ calculations: if ( l .eq. 1 ) then ier = ier + 100 elseif ( l .eq. 3 ) then if ( (i1.eq.2 .and. j1.eq.1) .or. (i1.eq.1 .and. j1.eq.2) ) + then fac = 1D0/(sdel2i(2) + sdel2i(3)) s(1) = dpipj(6,5)*z(j1) s(2) = -alph1*xpi(5)*z(j1+2) if ( max(abs(dpipj(2,1)),abs(dpipj(5,6))) .lt. + max(abs(dpipj(2,6)),abs(dpipj(5,1))) ) then s(3) = .5D0*dpipj(2,1) s(4) = .5D0*dpipj(5,6) else s(3) = .5D0*dpipj(2,6) s(4) = .5D0*dpipj(5,1) endif s(5) = piDpj(4,3)*piDpj(5,3)*fac s(6) = -piDpj(4,3)*piDpj(6,3)*fac s(7) = xpi(3)*dpipj(5,6)*fac if ( i1 .eq. 1 ) then sum = s(1)+s(2)+s(3)+s(4) - (s(5)+s(6)+s(7)) else sum = s(1)+s(2)+s(3)+s(4) + s(5)+s(6)+s(7) endif xmax = abs(s(1)) do 10 i=2,7 xmax = max(xmax,abs(s(i))) 10 continue if ( abs(sum) .lt. xloss*xmax ) then * this result is not used if it is not accurate (see * ffxc0p) ier = ier + 1 xmax = xmax/abs(alpha*xpi(5)) dwz(i1,j1) = sum/(alpha*xpi(5)) else dwz(i1,j1) = sum/(alpha*xpi(5)) endif else ier = ier + 100 endif endif * #] calculations: *###] ffdwz: end herwig++-2.6.0.orig/Looptools/util/solve-Eigen.F0000644000175000017500000001320011754474774022226 0ustar sylvestresylvestre* solve-Eigen.F * computation of the inverse and solution of a linear system * by diagonalizing the matrix with the Jacobi algorithm * code adapted from the "Handbook" routines for complex A * (Wilkinson, Reinsch: Handbook for Automatic Computation, p. 202) * this file is part of LoopTools * last modified 9 Dec 10 th #include "defs.h" * A matrix is considered diagonal if the sum of the squares * of the off-diagonal elements is less than EPS. #define EPS 2D0**(-102) ************************************************************************ ** XEigen diagonalizes a complex symmetric n-by-n matrix. ** Input: n, A = n-by-n matrix ** (only the upper triangle of A needs to be filled). ** Output: d = vector of eigenvalues, U = transformation matrix ** these fulfill diag(d) = U A U^T = U A U^-1 with U U^T = 1. subroutine XEigen(n, A,ldA, d, U,ldU) implicit none integer n, ldA, ldU QVAR A(ldA,*), U(ldU,*), d(*) integer p, q, j, sweep QREAL red, off, thresh QVAR delta, t, invc, s, x, y QVAR ev(2,MAXDIM) QREAL sq QVAR c sq(c) = QRE(c*QCC(c)) do p = 1, n ev(1,p) = 0 ev(2,p) = A(p,p) d(p) = ev(2,p) enddo do p = 1, n do q = 1, n U(q,p) = 0 enddo U(p,p) = 1 enddo red = .04D0/n**4 do sweep = 1, 50 off = 0 do q = 2, n do p = 1, q - 1 off = off + sq(A(p,q)) enddo enddo if( .not. off .gt. EPS ) return thresh = 0 if( sweep .lt. 4 ) thresh = off*red do q = 2, n do p = 1, q - 1 delta = A(p,q) off = sq(delta) if( sweep .gt. 4 .and. off .lt. & EPS*max(sq(ev(2,p)), sq(ev(2,q))) ) then A(p,q) = 0 else if( off .gt. thresh ) then x = .5D0*(ev(2,p) - ev(2,q)) y = sqrt(x**2 + delta**2) t = x - y s = x + y if( sq(t) .lt. sq(s) ) t = s t = delta/t delta = delta*t ev(1,p) = ev(1,p) + delta ev(2,p) = d(p) + ev(1,p) ev(1,q) = ev(1,q) - delta ev(2,q) = d(q) + ev(1,q) invc = sqrt(t**2 + 1) s = t/invc t = t/(invc + 1) do j = 1, p - 1 x = A(j,p) y = A(j,q) A(j,p) = x + s*(y - t*x) A(j,q) = y - s*(x + t*y) enddo do j = p + 1, q - 1 x = A(p,j) y = A(j,q) A(p,j) = x + s*(y - t*x) A(j,q) = y - s*(x + t*y) enddo do j = q + 1, n x = A(p,j) y = A(q,j) A(p,j) = x + s*(y - t*x) A(q,j) = y - s*(x + t*y) enddo A(p,q) = 0 do j = 1, n x = U(p,j) y = U(q,j) U(p,j) = x + s*(y - t*x) U(q,j) = y - s*(x + t*y) enddo endif enddo enddo do p = 1, n ev(1,p) = 0 d(p) = ev(2,p) enddo enddo print *, "Bad convergence in XEigen" end ************************************************************************ subroutine XDet(n, A,ldA, det) implicit none integer n, ldA QVAR A(ldA,*), det QVAR d(MAXDIM), U(MAXDIM,MAXDIM) integer p call XEigen(n, A,ldA, d, U,MAXDIM) det = 1 do p = 1, n det = det*d(p) enddo end ************************************************************************ ** XInverse forms the (pseudo)inverse of a symmetric n-by-n matrix. ** Input: n, A = n-by-n matrix, symmetric ** (only the upper triangle of A needs to be filled). ** Output: Ainv = (pseudo)inverse of A subroutine XInverse(n, A,ldA, Ainv,ldAinv) implicit none integer n, ldA, ldAinv QVAR A(ldA,*), Ainv(ldAinv,*) integer p, q, j QVAR U(MAXDIM,MAXDIM), d(MAXDIM), t #if 0 PRINT *, "SEigen" PRINT *, "A11=", A(1,1) PRINT *, "A12=", A(1,2) PRINT *, "A21=", A(2,1) PRINT *, "A22=", A(2,2) if( ldA .gt. 2 ) then PRINT *, "A13=", A(1,3), A(3,1) PRINT *, "A23=", A(2,3), A(3,2) PRINT *, "A33=", A(3,3) endif PRINT *, "-----------" #endif call XEigen(n, A,ldA, d, U,MAXDIM) * form (pseudo)inverse U^T d^-1 U do p = 1, n do q = 1, n t = 0 do j = 1, n if( abs(d(j)) .gt. EPS ) & t = t + U(j,q)*U(j,p)/d(j) enddo Ainv(q,p) = t enddo enddo #if 0 PRINT *, "d1=", d(1) PRINT *, "d2=", d(2) if( ldA .gt. 2 ) PRINT *, "d3=", d(3) PRINT *, "-----------" PRINT *, "U11=", U(1,1) PRINT *, "U12=", U(1,2) PRINT *, "U21=", U(2,1) PRINT *, "U22=", U(2,2) if( ldA .gt. 2 ) then PRINT *, "U13=", U(1,3) PRINT *, "U23=", U(2,3) PRINT *, "U31=", U(3,1) PRINT *, "U32=", U(3,2) PRINT *, "U33=", U(3,3) endif PRINT *, "-----------" PRINT *, "Ai11=", Ainv(1,1) PRINT *, "Ai12=", Ainv(1,2) PRINT *, "Ai21=", Ainv(2,1) PRINT *, "Ai22=", Ainv(2,2) if( ldA .gt. 2 ) then PRINT *, "Ai13=", Ainv(1,3) PRINT *, "Ai23=", Ainv(2,3) PRINT *, "Ai31=", Ainv(3,1) PRINT *, "Ai32=", Ainv(3,2) PRINT *, "Ai33=", Ainv(3,3) endif PRINT *, "-----------" #endif end ************************************************************************ subroutine XSolve(n, A,ldA, Ainv,ldAinv, b) implicit none integer n, ldA, ldAinv QVAR A(ldA,*), Ainv(ldAinv,*) double complex b(*) integer i, j double complex x(MAXDIM) #if defined(QUAD) && !defined(COMPLEXPARA) QVAR tr, ti do i = 1, n tr = 0 ti = 0 do j = 1, n tr = tr + Ainv(i,j)*DBLE(b(j)) ti = ti + Ainv(i,j)*DIMAG(b(j)) enddo x(i) = DCMPLX(tr, ti) enddo #else double complex delta(MAXDIM), t do i = 1, n t = 0 do j = 1, n t = t + Ainv(i,j)*b(j) enddo x(i) = t enddo * improve on x do i = 1, n t = 0 do j = 1, n t = t + A(i,j)*x(j) enddo delta(i) = b(i) - t enddo do i = 1, n t = 0 do j = 1, n t = t + Ainv(i,j)*delta(j) enddo x(i) = x(i) + t enddo #endif do i = 1, n b(i) = x(i) enddo end herwig++-2.6.0.orig/Looptools/util/ffdcxs.F0000644000175000017500000004141511754474774021337 0ustar sylvestresylvestre#include "externals.h" *--#[ log: * $Id: ffdcxs.f,v 1.7 1996/03/22 08:13:30 gj Exp $ * $Log: ffdcxs.f,v $ c Revision 1.7 1996/03/22 08:13:30 gj c Fixed bug in bugfix of ffdcxs.f c c Revision 1.6 1996/03/14 15:53:13 gj c Fixed bug in ffcb0: cp in C, cma=cmb=0 was computed incorrectly. c c Revision 1.5 1996/03/13 15:43:36 gj c Fixed bug, when ieps unknown already some things were computed and not zero'd. c Now I first check ieps, and then compute. c c Revision 1.4 1995/12/08 10:38:16 gj c Fixed too long line c *--#] log: *###[ ffdcxs: subroutine ffdcxs(cs3,ipi12,y,z,dyz,d2yzz,dy2z,dyzzy,xpi,piDpj, + ii,ns,isoort,ier) ***#[*comment:*********************************************************** * * * calculates the the difference of two S's with y(3,4),z(3,4) and * * y(4)z(3)-y(3)z(4) given. Note the difference with ffdcxs4, in * * which the y's are the same and only the z's different. Here * * both can be different. Also we skip an intermediate level. * * Note also that this routine is much less conservative than * * ffcxs3 in its expectations of the order of the roots: it knows * * that it is (z-,z+,1-z-,1-z+)! * * * * input: y(4,3:4) (real) y,1-y in S with s3,s4 * * z(4,3:4) (real) z,1-z in S with s3,s4 * * dyz(2,2,3:4) (real) y - z * * d2yzz(3:4) (real) 2*y - z+ - z- * * dy2z(4,3:4) (real) y - 2*z * * dyzzy(4) (real) y(i,4)*z(i,4)-y(i,3)*z(i,4) * * xpi(6,3:4) (real) usual * * piDpj(6,3:4) (real) usual * * cs3(40) (complex) assumed zero. * * * * output: cs3(40) (complex) mod factors pi^2/12, in array * * ipi12(6)(integer) these factors * * isoort(6)(integer) returns kind of action taken * * ier (integer) 0=ok 1=inaccurate 2=error * * * * calls: ffcrr,ffcxr,real/dble,DCMPLX,log,ffadd1,ffadd2,ffadd3 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX cs3(100) DOUBLE PRECISION y(4,3:4),z(4,3:4),dyz(2,2,3:4),d2yzz(3:4), + dy2z(4,3:4),dyzzy(4),xpi(6,3:4),piDpj(6,6,3:4) integer ipi12(10),ii,ns,isoort(10),ier * * local variables * integer i,j,k,l,m,iepsi(4),iepsj(2,2) logical normal DOUBLE PRECISION yy,zz,yy1,zz1,dyyzz,hulp3,hulp4,x00(3) save iepsi * * common blocks * #include "ff.h" * * data * data iepsi /-2,+2,+2,-2/ * * check constants * #] declarations: * #[ normal case: normal = .FALSE. 10 continue if ( normal .or. isoort(1) .ne. isoort(9) .or. isoort(1) .lt. + 10 ) then call ffcxs3(cs3( 1),ipi12(1),y(1,3),z(1,3),dyz(1,1,3), + d2yzz(3),dy2z(1,3),xpi(1,3),piDpj(1,1,3),ii,6, + isoort(1),ier) call ffcxs3(cs3(81),ipi12(9),y(1,4),z(1,4),dyz(1,1,4), + d2yzz(4),dy2z(1,4),xpi(1,4),piDpj(1,1,4),ii,6, + isoort(9),ier) return endif * #] normal case: * #[ rotate R's: if ( abs(y(2,3)) .lt. 1/xloss ) then do 102 i=1,2 do 101 j=1,2 * iepsi() = /-2,+2,+2,-2/ * BUT I AM NOT YET SURE OF THE SIGNS (29/6/89) k = 2*(i-1)+j if ( y(2*i,3) .gt. 0 ) then iepsj(j,i) = iepsi(k) else iepsj(j,i) = -iepsi(k) endif if ( y(2*i,3) .gt. 0 .neqv. y(2*i,4) .gt. 0 ) then * I have no clue to the ieps, take normal route * iepsj(j,i) = 0 normal = .TRUE. goto 10 endif 101 continue 102 continue * loop over y,z , 1-y,1-z do 120 i=1,2 * loop over z+ , z- do 110 j=1,2 if ( j .eq. 2 ) then * do not calculate if not there (isoort=0, one root) * (this is probably not needed as this case should * have been dealt with in ffdxc0) if ( isoort(9) .eq. 0 ) goto 110 * or if not needed (isoort=2, two equal roots) if ( mod(isoort(9),10) .eq. 2 ) then * we use that l still contains the correct value do 105 m=1,7 cs3(10*(l-1)+m) = 2*DBLE(cs3(10*(l-1)+m)) 105 continue ipi12(l) = 2*ipi12(l) goto 110 endif endif k = 2*(i-1)+j l = 8*(i-1)+j if ( dyzzy(k) .ne. 0 ) then * minus sign wrong in thesis (2.78) hulp3 = -dyz(2,j,3)/dyzzy(k) hulp4 = +dyz(2,j,4)/dyzzy(k) yy = y(2*i,3)*hulp4 yy1 = y(2*i,4)*hulp3 zz = z(k,3)*hulp4 zz1 = z(k,4)*hulp3 dyyzz = dyz(2,j,3)*hulp4 if ( i .eq. 2 ) then yy = -yy yy1 = -yy1 zz = -zz zz1 = -zz1 endif call ffcxr(cs3(10*l-9),ipi12(l),yy,yy1,zz,zz1,dyyzz, + .FALSE.,0D0,0D0,0D0,.FALSE.,x00,iepsj(j,i),ier) endif 110 continue 120 continue goto 800 endif * #] rotate R's: * #[ other cases (not ready): call ffcxs3(cs3( 1),ipi12(1),y(1,3),z(1,3),dyz(1,1,3), + d2yzz(3),dy2z(1,3),xpi(1,3),piDpj(1,1,3),ii,ns, + isoort(1),ier) call ffcxs3(cs3(81),ipi12(9),y(1,4),z(1,4),dyz(1,1,4), + d2yzz(4),dy2z(1,4),xpi(1,4),piDpj(1,1,4),ii,ns, + isoort(9),ier) return * #] other cases (not ready): 800 continue *###] ffdcxs: end *###[ ffdcs: subroutine ffdcs(cs3,ipi12,cy,cz,cdyz,cd2yzz,cdyzzy,cdyyzz, + cpi,cpiDpj,ii,ns,isoort,ier) ***#[*comment:*********************************************************** * * * calculates the the difference of two S's with cy(3,4),cz(3,4), * * cy(4)cz(3)-cy(3)cz(4) given. Note the difference with ffdcs4, * * in which the cy's are the same and only the cz's different. * * Here both can be different. Also we skip an intermediat * * level. * * * * input: cy(4,3:4) (complex) cy,1-cy in S with s3,s4 * * cz(4,3:4) (complex) cz,1-cz in S with s3,s4 * * cdyz(2,2,3:4)(complex) cy - cz * * cd2yzz(3:4) (complex) 2*cy - cz+ - cz- * * cdyzzy(4) (complex) cy(i,4)*cz(i,4)-cy(i,3)*cz(i,4) * * cdyyzz(2) (complex) cy(i,4)-cz(i,4)-cy(i,3)+cz(i,4) * * cpi(6,3:4) (complex) usual * * cpiDpj(6,3:4)(complex) usual * * cs3(40) (complex) assumed zero. * * * * output: cs3(40) (complex) mod factors pi^2/12, in array * * ipi12(6) (integer) these factors * * isoort(6) (integer) returns kind of action taken * * ier (integer) number of digits lost * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX cs3(100) DOUBLE COMPLEX cy(4,3:4),cz(4,3:4),cdyz(2,2,3:4),cd2yzz(3:4), + cdyzzy(4),cdyyzz(2),cpi(6,3:4),cpiDpj(6,6,3:4) integer ipi12(10),ii,ns,isoort(10),ier * * local variables * integer i,j,k,l,m,n,ieps,ni(4,3:4),ntot(3:4), + n1a,nffeta,nffet1,ip DOUBLE COMPLEX c,cc,clogy,zfflog, + zfflo1,cmip,yy,zz,yy1,zz1,dyyzz,hulp3,hulp4 DOUBLE PRECISION absc external nffeta,nffet1,zfflo1,zfflog * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) +abs(DIMAG(c)) * * check constants * #] declarations: * #[ normal case: if ( mod(isoort(1),5).ne.mod(isoort(9),5) .or. isoort(1).gt.-5 + ) then call ffcs3(cs3( 1),ipi12(1),cy(1,3),cz(1,3),cdyz(1,1,3), + cd2yzz(3),cpi(1,3),cpiDpj(1,1,3),ii,6,isoort(1),ier) call ffcs3(cs3(81),ipi12(9),cy(1,4),cz(1,4),cdyz(1,1,4), + cd2yzz(4),cpi(1,4),cpiDpj(1,1,4),ii,6,isoort(9),ier) return endif * #] normal case: * #[ rotate R's: if ( absc(cy(2,3)) .lt. 1/xloss .or. isoort(1) .le. -100 ) then * * loop over cy,cz , 1-cy,1-cz do 190 i=1,2 if ( isoort(1).le.-100 .and. i.eq.2 ) then * * special case del2s=0, a limit has been taken * if ( ii .eq. 2 ) then * * we took the wrong sign for the dilogs... * do 110 j=1,20 cs3(j) = -cs3(j) 110 continue ipi12(1) = -ipi12(1) ipi12(2) = -ipi12(2) endif * * now the remaining logs. take care to get the ieps * correct! * if ( i.eq.1 .eqv. DBLE(cy(2*i,3)).gt.0 ) then ieps = -3 else ieps = +3 endif call ffclg2(cs3(81),cdyz(2,1,3),cdyz(2,1,4), + cdyyzz(1),ieps,ier) if ( ii .eq. 2 ) then * we have the wrong sign do 120 j=81,83 cs3(j) = -cs3(j) 120 continue ipi12(9) = -ipi12(9) endif if ( mod(isoort(1),5).eq.0 .and. mod(isoort(9),5).eq.0 + ) then do 130 j=81,83 cs3(j) = 2*DBLE(cs3(j)) 130 continue ipi12(9) = 2*ipi12(9) else print *,'ffdcs: error: not yet tested' call ffclg2(cs3(91),cdyz(2,2,3),cdyz(2,2,4), + cdyyzz(2),-ieps,ier) if ( ii .eq. 2 ) then * we have the wrong sign do 140 j=91,93 cs3(j) = -cs3(j) 140 continue ipi12(10) = -ipi12(10) endif endif goto 190 endif * * loop over cz- , cz+ do 180 j=1,2 if ( j .eq. 2 ) then if ( isoort(9) .eq. 0 .or. isoort(1) .eq. 0 ) then * * (this is not correct as this case should * have been dealt with in ffdxc0,ffdcc0) * call fferr(79,ier) goto 180 elseif ( mod(isoort(9),5) .eq. 0 .and. + mod(isoort(1),5) .eq. 0 ) then * * or if not needed (isoort=-10, two conjugate roots) * * we use that l still contains the correct value do 150 m=1,9 cs3(10*(l-1)+m) = 2*DBLE(cs3(10*(l-1)+m)) 150 continue ipi12(l) = 2*ipi12(l) goto 180 elseif ( mod(isoort(9),10) .eq. 2 ) then * we use that l still contains the correct value do 160 m=1,9 cs3(10*(l-1)+m) = 2*cs3(10*(l-1)+m) 160 continue ipi12(l) = 2*ipi12(l) goto 180 endif endif k = 2*(i-1)+j l = 8*(i-1)+j if ( cdyzzy(k) .ne. 0 ) then hulp3 = -cdyz(2,j,3)/cdyzzy(k) hulp4 = cdyz(2,j,4)/cdyzzy(k) yy = cy(2*i,3)*hulp4 yy1 = cy(2*i,4)*hulp3 zz = cz(k,3)*hulp4 zz1 = cz(k,4)*hulp3 dyyzz = cdyz(2,j,3)*hulp4 if ( i .eq. 2 ) then yy = -yy yy1 = -yy1 zz = -zz zz1 = -zz1 endif * * ieps = 3 means: dear ffcrr, do not use eta terms, * they are calculated here. The sign gives the sign * of the imag. part of the argument of the dilog, not * y-z. * if ( i.eq.1 .eqv. j.eq.1 .eqv. DBLE(cy(2*i,3)).gt.0 + ) then ieps = -3 else ieps = +3 endif call ffcrr(cs3(10*l-9),ipi12(l),yy,yy1,zz,zz1,dyyzz, + .FALSE.,czero,czero,czero,isoort(j),ieps,ier) * * eta terms of the R's (eta(.)*log(c1)-eta(.)*log(c2)) * do 170 m=3,4 * no eta terms in the real case if ( DIMAG(cz(k,m)) .eq. 0 .and. + DIMAG(cdyz(2,j,m)) .eq. 0 ) then ni(k,m) = 0 elseif ( i .eq. 1 ) then ni(k,m) = nffeta(-cz(k,m),1/cdyz(2,j,m),ier) else ni(k,m) = nffeta(cz(k,m),1/cdyz(2,j,m),ier) endif 170 continue if ( ni(k,3) .ne. 0 .or. ni(k,4) .ne. 0 ) then if ( ni(k,3) .ne. ni(k,4) ) then do 175 m=3,4 c = cy(2*i,m)/cdyz(2,j,m) if ( i .eq. 2 ) c = -c cc = c-1 if ( absc(cc) .lt. xloss ) then c = cz(k,m)/cdyz(2,j,m) clogy = zfflo1(c,ier) else clogy = zfflog(c,0,czero,ier) endif n = 10*l + (m-3) - 2 if ( m .eq. 3 ) then cs3(n) = + ni(k,m)*c2ipi*clogy else cs3(n) = - ni(k,m)*c2ipi*clogy endif 175 continue else if ( i .eq. 1 ) then n1a = nffeta(cy(k,3)/cdyz(2,j,3), + cdyz(2,j,4)/cy(k,4),ier) else n1a = nffeta(-cy(k,3)/cdyz(2,j,3), + -cdyz(2,j,4)/cy(k,4),ier) endif if ( n1a .ne. 0 ) then call fferr(80,ier) endif c =cy(k,3)*cdyz(2,j,4)/(cdyz(2,j,3)*cy(k,4)) cc = c-1 if ( absc(cc) .lt. xloss ) then c = -cdyzzy(k)/(cdyz(2,j,3)*cy(k,4)) clogy = zfflo1(c,ier) else clogy = zfflog(c,0,czero,ier) endif n = 10*l - 2 if ( i .eq. 1 ) then cs3(n) = +ni(k,3)*c2ipi*clogy else cs3(n) = -ni(k,3)*c2ipi*clogy endif endif endif endif 180 continue 190 continue goto 700 endif * #] rotate R's: * #[ other cases (not ready): call ffcs3(cs3( 1),ipi12(1),cy(1,3),cz(1,3),cdyz(1,1,3), + cd2yzz(3),cpi(1,3),cpiDpj(1,1,3),ii,ns,isoort(1),ier) call ffcs3(cs3(81),ipi12(9),cy(1,4),cz(1,4),cdyz(1,1,4), + cd2yzz(4),cpi(1,4),cpiDpj(1,1,4),ii,ns,isoort(9),ier) return * #] other cases (not ready): * #[ get eta's: 700 continue ip = ii+3 do 740 k=3,4 l = 8*(k-3) + 1 if ( DIMAG(cpi(ip,k)) .eq. 0 ) then * * complex because of a complex root in y or z * if ( (mod(isoort(l),10).eq.-1 .or. mod(isoort(l),10).eq.-3) + .and. isoort(l+1) .ne. 0 ) then * * isoort = -1: y is complex, possibly z as well * isoort = -3: y,z complex, but (y-z-)(y-z+) real * isoort = 0: y is complex, one z root only * isoort = -10: y is real, z is complex * isoort = -5,-6: y,z both real * cmip = DCMPLX(0D0,-DBLE(cpi(ip,k))) if ( DIMAG(cz(1,k)) .eq. 0 ) then ni(1,k) = 0 else ni(1,k) = nffet1(-cz(1,k),-cz(2,k),cmip,ier) i = nffet1(cz(3,k),cz(4,k),cmip,ier) if ( i .ne. ni(1,k) ) call fferr(53,ier) endif ni(2,k) = 0 if ( DBLE(cd2yzz(k)).eq.0 .and. ( DIMAG(cz(1,k)).eq.0 .and. + DIMAG(cz(2,k)).eq.0 .or. DBLE(cdyz(2,1,k)).eq.0 .and. + DBLE(cdyz(2,2,k)) .eq. 0 ) ) then * follow the i*epsilon prescription as (y-z-)(y-z+) real if ( DBLE(cpi(ip,k)) .lt. 0 ) then ni(3,k) = -1 else ni(3,k) = 0 endif ni(4,k) = -nffet1(cdyz(2,1,k),cdyz(2,2,k),cmip,ier) else if ( DBLE(cpi(ip,k)) .lt. 0 .and. DIMAG(cdyz(2,1,k)* + cdyz(2,2,k)) .lt. 0 ) then ni(3,k) = -1 else ni(3,k) = 0 endif ni(4,k) = -nffeta(cdyz(2,1,k),cdyz(2,2,k),ier) endif elseif ( (mod(isoort(l),10).eq.-1 .or. mod(isoort(l),10).eq.-3) + .and. isoort(l+1).eq.0 ) then ni(1,k) = 0 if ( DIMAG(cz(1,k)) .ne. 0 ) then ni(2,k) = nffet1(-cpiDpj(ii,ip,k),-cz(1,k),DCMPLX(DBLE(0 + ),DBLE(-1)),ier) else ni(2,k) = nffet1(-cpiDpj(ii,ip,k),DCMPLX(DBLE(0), + DBLE(1)),DCMPLX(DBLE(0),DBLE(-1)),ier) endif ni(3,k) = 0 ni(4,k) = -nffeta(-cpiDpj(ii,ip,k),cdyz(2,1,k),ier) else if ( mod(isoort(l),5).ne.0 .and. mod(isoort(l),5).ne.-1 + .and. mod(isoort(l),5).ne.-3 ) then call fferr(81,ier) print *,'isoort(',l,') = ',isoort(l) endif ni(1,k) = 0 ni(2,k) = 0 ni(3,k) = 0 ni(4,k) = 0 endif else print *,'ffdcs: error: cpi complex should not occur' stop endif 740 continue * #] get eta's: * #[ add eta's: do 750 k=3,4 ntot(k) = ni(1,k)+ni(2,k)+ni(3,k)+ni(4,k) 750 continue do 760 k=3,4 if ( ntot(k) .ne. 0 ) call ffclgy(cs3(20+80*(k-3)), + ipi12(2+8*(k-3)),ni(1,k),cy(1,k),cz(1,k),cd2yzz(k),ier) 760 continue * #] add eta's: *###] ffdcs: end *###[ ffclg2: subroutine ffclg2(cs3,cdyz3,cdyz4,cdyyzz,ieps,ier) ***#[*comment:*********************************************************** * * * Calculate the finite part of the divergent dilogs in case * * del2s=0. These are given by * * * * log^2(-cdyz3)/2 - log^2(-cdyz4)/2 * * * * Note that often we only need the imaginary part, which may be * * very unstable even if the total is not. * * * * * * Input: cy3,cz3,cdyz3 (complex) y,z,diff in C with s3 * * cy4,cz4,cdyz4 (complex) y,z,diff in C with s4 * * cdyyzz (complex) y4 - z4 - y3 + z3 * * isort3,4 (integer) * * * * Output cs3(4) (complex) output * * ipi12 (integer) terms pi^2/12 * * ier (integer) error flag * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX cs3(3),cdyz3,cdyz4,cdyyzz integer ieps,ier * * local variables * integer n1,nffeta,nffet1,ipi3,ipi4 DOUBLE COMPLEX c,cc,clog3,clog4,clog1,zfflo1,cipi DOUBLE PRECISION absc external nffeta,nffet1,zfflo1 * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ calculations: cipi = DCMPLX(0D0,pi) if ( DBLE(cdyz3) .lt. 0 ) then clog3 = log(-cdyz3) ipi3 = 0 else clog3 = log(cdyz3) if ( DIMAG(cdyz3) .gt. 0 ) then ipi3 = -1 elseif ( DIMAG(cdyz3) .lt. 0 ) then ipi3 = +1 else ipi3 = sign(1,-ieps) endif endif if ( DBLE(cdyz4) .lt. 0 ) then clog4 = log(-cdyz4) ipi4 = 0 else clog4 = log(cdyz4) if ( DIMAG(cdyz4) .gt. 0 ) then ipi4 = -1 elseif ( DIMAG(cdyz4) .lt. 0 ) then ipi4 = +1 else ipi4 = sign(1,-ieps) endif endif cc = clog3-clog4 if ( absc(cc) .ge. xloss*absc(clog3) ) then cs3(1) = -(clog3+ipi3*cipi)**2/2 cs3(2) = +(clog4+ipi4*cipi)**2/2 else c = cdyyzz/cdyz4 clog1 = zfflo1(c,ier) * * notice that zfflog return log(a-ieps) (for compatibility * with the dilog) ^ * if ( DIMAG(cdyz3) .eq. 0 ) then n1 = nffet1(DCMPLX(DBLE(0),DBLE(-ieps)),-1/cdyz4,-c, + ier) elseif ( DIMAG(cdyz3) .eq. 0 ) then n1 = nffet1(-cdyz3,DCMPLX(DBLE(0),DBLE(ieps)),-c,ier) else n1 = nffeta(-cdyz3,-1/cdyz4,ier) endif if ( n1 .ne. 0 ) then clog1 = clog1 - n1*c2ipi endif cs3(1) = -clog3*clog1/2 cs3(2) = -clog4*clog1/2 cs3(3) = -(ipi3+ipi4)*cipi*clog1/2 * we could split off a factor 2*pi^2 if needed endif * ATTENTION: now (23-jul-1989) ffdcs assumes that only *3* cs are * set. Change ffdcs as well if this is no longer true! * #] calculations: *###] ffclg2: end herwig++-2.6.0.orig/Looptools/util/ff2dl2.F0000644000175000017500000003045211754474774021140 0ustar sylvestresylvestre#include "externals.h" *###[ ff2dl2: subroutine ff2dl2(del2d2,del2n,xpi,dpipj,piDpj, i, + j,k,kj,iskj,l, m,n,nm,isnm, ns, ier) ***#[*comment:*********************************************************** * * * Calculate * * * * si mu mu sl * * d d = si.sj*sk.sm*sl.sn - si.sk*sj.sm*sl.sn * * sj sk sm sn - si.sj*sk.sn*sl.sm + si.sk*sj.sn*sl.sm * * * * with p(kj) = iskj*(sk-sj) * * with p(nm) = isnm*(sn-sm) * * * * Input: xpi(ns) as usual * * dpipj(ns,ns) -"- * * piDpj(ns,ns) -"- * * i,j,k,kj,iskj see above * * l,m,n,nm,isnm -"- * * * * Output: del2d2 see above * * del2n it is needed in fftran anyway * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer i,j,k,kj,iskj,l,m,n,nm,isnm,ns,ier DOUBLE PRECISION del2d2,del2n,xpi(10),dpipj(10,10),piDpj(10,10) * * local variables: * integer isii,ii,ik,ij,im,in,ier0,ier1 DOUBLE PRECISION s(5),del2m,del2nm,som,xmax,smax * * common blocks: * #include "ff.h" * #] declarations: * #[ get del2n: * we need this in any case ! ier1 = ier if ( i .eq. n ) then del2n = 0 elseif ( i .le. 4 ) then ii = inx(n,i) isii = isgn(n,i) call ffdl2s(del2n,piDpj,i,n,ii,isii,j,k,kj,iskj,10) else call ffdl2t(del2n,piDpj,i,n,j,k,kj,iskj,+1,10) endif * #] get del2n: * #[ special cases: ier0 = ier if ( i .eq. l .and. j .eq. m .and. k .eq. n ) then call ffdl3m(s,.FALSE.,0D0,0D0,xpi,dpipj,piDpj,ns,j,k,kj, + i,1) del2d2 = -s(1) ier = max(ier0,ier1) return endif if ( k .eq. l .and. j .le. 4 ) then call ffdl2s(del2m,piDpj, j,l,inx(l,j),isgn(l,j), + m,n,nm,isnm, 10) del2d2 = -piDpj(i,k)*del2m ier = max(ier0,ier1) return endif * #] special cases: * #[ calculations: ier0 = ier if ( i .eq. m ) then del2m = 0 elseif ( i .le. 4 ) then ii = inx(m,i) isii = isgn(m,i) call ffdl2s(del2m,piDpj,i,m,ii,isii,j,k,kj,iskj,10) else call ffdl2t(del2m,piDpj,i,m,j,k,kj,iskj,+1,10) endif s(1) = del2m*piDpj(n,l) s(2) = del2n*piDpj(m,l) smax = abs(s(1))*DBLE(10)**(ier0-ier) del2d2 = s(1) - s(2) if ( abs(del2d2) .ge. xloss*smax ) goto 60 som = del2d2 xmax = smax ier0 = ier call ffdl2t(del2nm,piDpj,i,nm,j,k,kj,iskj,+1,10) s(1) = del2n*piDpj(nm,l) s(2) = del2nm*piDpj(n,l) del2d2 = isnm*(s(1) - s(2)) smax = abs(s(2))*DBLE(10)**(ier0-ier) if ( abs(del2d2) .ge. xloss*abs(s(1)) ) goto 60 if ( smax .lt. xmax ) then som = del2d2 xmax = smax endif s(1) = del2m*piDpj(nm,l) s(2) = del2nm*piDpj(m,l) del2d2 = isnm*(s(1) - s(2)) smax = abs(s(2))*DBLE(10)**(ier0-ier) if ( abs(del2d2) .ge. xloss*abs(s(1)) ) goto 60 if ( smax .lt. xmax ) then som = del2d2 xmax = smax endif * One more special case: if ( k .eq. m ) then isii = -1 ik = j ij = k im = m in = n elseif ( j .eq. m ) then isii = +1 ik = k ij = j im = m in = n elseif ( j .eq. n ) then isii = -1 ik = k ij = j im = n in = m elseif ( k .eq. n ) then isii = +1 ik = j ij = k im = n in = m else goto 50 endif if ( ij .eq. im .and. i .le. 4 .and. ij .le. 4 .and. in .le. 4 ) + then if ( inx(ij,i) .gt. 0 .and. inx(im,l) .gt. 0 ) then if ( abs(dpipj(i,inx(ij,i))) .lt. xloss*abs(xpi(ij)) + .and. abs(dpipj(l,inx(im,l))) .lt. xloss*abs(xpi(im)) ) + then s(1) = piDpj(l,in)*piDpj(ik,ij)*dpipj(i,inx(ij,i))/2 s(2) = isgn(ij,i)*piDpj(l,in)*xpi(ij)*piDpj(ik, + inx(ij,i))/2 s(3) = -piDpj(i,ij)*piDpj(ik,in)*piDpj(l,im) s(4) = piDpj(i,ik)*piDpj(im,in)*dpipj(l,inx(im,l))/2 s(5) = isgn(im,l)*piDpj(i,ik)*xpi(im)*piDpj(in, + inx(im,l))/2 del2d2 = s(1) + s(2) + s(3) + s(4) + s(5) if ( isii .lt. 0 ) del2d2 = -del2d2 smax = max(abs(s(1)),abs(s(2)),abs(s(3)),abs(s(4)), + abs(s(5))) if ( abs(del2d2) .ge. xloss**2*abs(smax) ) goto 60 if ( smax .lt. xmax ) then som = del2d2 xmax = smax endif endif endif endif 50 continue * * give up * del2d2 = som 60 continue * #] calculations: *###] ff2dl2: end *###[ ff2d22: subroutine ff2d22(dl2d22,xpi,dpipj,piDpj, i, j,k,kj,iskj, + m,n,nm,isnm) ***#[*comment:*********************************************************** * * * Calculate * * * * / si mu mu nu \2 * * |d d | * * \ sj sk sm sn / * * * * = si.sj^2*sk.sm^2*sn.sn * * - 2*si.sj^2*sk.sm*sk.sn*sm.sn * * + si.sj^2*sk.sn^2*sm.sm * * - 2*si.sj*si.sk*sj.sm*sk.sm*sn.sn * * + 2*si.sj*si.sk*sj.sm*sk.sn*sm.sn * * + 2*si.sj*si.sk*sj.sn*sk.sm*sm.sn * * - 2*si.sj*si.sk*sj.sn*sk.sn*sm.sm * * + si.sk^2*sj.sm^2*sn.sn * * - 2*si.sk^2*sj.sm*sj.sn*sm.sn * * + si.sk^2*sj.sn^2*sm.sm * * * * Input: xpi(ns) as usual * * dpipj(ns,ns) -"- * * piDpj(ns,ns) -"- * * i,j,k,kj,iskj see above * * m,n,nm,isnm -"- * * * * Output: dl2d22 see above * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer i,j,k,kj,iskj,m,n,nm,isnm DOUBLE PRECISION dl2d22,xpi(10),dpipj(10,10),piDpj(10,10) * * local variables: * integer ii,isii DOUBLE PRECISION s(10),del2s,del23,del24,del27,som,smax,xmax * * common blocks: * #include "ff.h" * #] declarations: * #[ special cases: if ( i .eq. n .or. i .eq. m ) then call ffdl2s(del2s,piDpj, j,k,kj,iskj, m,n,nm,isnm, 10) dl2d22 = xpi(i)*del2s**2 return endif * #] special cases: * #[ calculations: * We use the product form if ( i .eq. 3 ) then del23 = 0 elseif ( i .le. 4 ) then ii = inx(3,i) isii = isgn(3,i) call ffdl2s(del23,piDpj,i,3,ii,isii,j,k,kj,iskj,10) else call ffdl2t(del23,piDpj,i,3,j,k,kj,iskj,+1,10) endif if ( i .eq. 4 ) then del24 = 0 elseif ( i .le. 4 ) then ii = inx(n,i) isii = isgn(n,i) call ffdl2s(del24,piDpj,i,4,ii,isii,j,k,kj,iskj,10) else call ffdl2t(del24,piDpj,i,4,j,k,kj,iskj,+1,10) endif s(1) = xpi(4)*del23**2 s(2) = -2*piDpj(3,4)*del23*del24 s(3) = xpi(3)*del24**2 dl2d22 = s(1) + s(2) + s(3) smax = max(abs(s(1)),abs(s(2)),abs(s(3))) if ( abs(dl2d22) .ge. xloss*smax ) goto 110 som = dl2d22 xmax = smax * try the special case k=4 (for use in ee->mumu among others) if ( i .lt. 4 .and. k .eq. 4 .and. abs(s(3)) .lt. xloss*smax + .and. ( abs(dpipj(i,inx(4,i))) .lt. xloss*xpi(i) .or. + abs(piDpj(j,inx(4,i))) .lt. xloss*abs(piDpj(j,4)) ) ) + then s(1) = -del23*piDpj(i,4)*piDpj(j,3)*xpi(4) s(2) = del23*dpipj(i,inx(4,i))*piDpj(j,4)*piDpj(3,4) s(4) = del23*piDpj(3,4)*xpi(4)*piDpj(j,inx(4,i))*isgn(4,i) dl2d22 = s(1) + s(2) + s(3) + s(4) smax = max(abs(s(1)),abs(s(2)),abs(s(3)),abs(s(4))) if ( abs(dl2d22) .ge. xloss*smax ) goto 110 if ( smax .lt. xmax ) then som = dl2d22 xmax = smax endif endif call ffdl2t(del27,piDpj,i,7,j,k,kj,iskj,+1,10) s(1) = xpi(7)*del24**2 s(2) = -2*piDpj(4,7)*del24*del27 s(3) = xpi(4)*del27**2 dl2d22 = s(1) + s(2) + s(3) smax = max(abs(s(1)),abs(s(2)),abs(s(3))) if ( abs(dl2d22) .ge. xloss*smax ) goto 110 if ( smax .lt. xmax ) then som = dl2d22 xmax = smax endif s(1) = xpi(7)*del23**2 s(2) = -2*piDpj(3,7)*del23*del27 s(3) = xpi(3)*del27**2 dl2d22 = s(1) + s(2) + s(3) smax = max(abs(s(1)),abs(s(2)),abs(s(3))) if ( abs(dl2d22) .ge. xloss*smax ) goto 110 * * We'll have to think of something more intelligent ... * if ( smax .lt. xmax ) then som = dl2d22 xmax = smax endif dl2d22 = som 110 continue * #] calculations: *###] ff2d22: end *###[ ff3dl2: subroutine ff3dl2(del3d2,xpi,dpipj,piDpj, i, + j,k,kj,iskj, l,m,ml,isml, n, o,p,po,ispo, ier) ***#[*comment:*********************************************************** * * * Calculate * * * * si mu mu nu mu sn * * d d d = ... * * sj sk sl sm so sp * * * * with p(kj) = iskj*(sk-sj) * * p(ml) = isml*(sm-sl) * * p(po) = ispo*(sp-so) * * * * Input: xpi(ns) as usual * * dpipj(ns,ns) -"- * * piDpj(ns,ns) -"- * * i,j,k,kj,iskj see above * * l,m,ml,isml -"- * * n,o,p,po,ispo -"- * * * * Output: del3d2 see above * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer i,j,k,kj,iskj,l,m,ml,isml,n,o,p,po,ispo,ier DOUBLE PRECISION del3d2,xpi(10),dpipj(10,10),piDpj(10,10) * * local variables: * integer isii,ii DOUBLE PRECISION s(2),dl2il,dl2im,dl2ln,dl2mn,dl2iml,dl2mln DOUBLE PRECISION d2d2j,d2d2k,d2d2kj,dum,d2d2o,d2d2p,d2d2po DOUBLE PRECISION som,xmax * * common blocks: * #include "ff.h" * #] declarations: * #[ split up l,m: if ( i .eq. l ) then dl2il = 0 elseif ( i .le. 4 ) then ii = inx(l,i) isii = isgn(l,i) call ffdl2s(dl2il,piDpj,i,l,ii,isii,j,k,kj,iskj,10) else call ffdl2t(dl2il,piDpj,i,l,j,k,kj,iskj,+1,10) endif if ( m .eq. n ) then dl2mn = 0 elseif ( i .le. 4 ) then ii = inx(n,m) isii = isgn(n,m) call ffdl2s(dl2mn,piDpj,m,n,ii,isii,o,p,po,ispo,10) else call ffdl2t(dl2mn,piDpj,m,n,o,p,po,ispo,+1,10) endif s(1) = dl2il*dl2mn if ( i .eq. m ) then dl2im = 0 elseif ( i .le. 4 ) then ii = inx(m,i) isii = isgn(m,i) call ffdl2s(dl2im,piDpj,i,m,ii,isii,j,k,kj,iskj,10) else call ffdl2t(dl2im,piDpj,i,m,j,k,kj,iskj,+1,10) endif if ( l .eq. n ) then dl2ln = 0 elseif ( i .le. 4 ) then ii = inx(n,l) isii = isgn(n,l) call ffdl2s(dl2ln,piDpj,l,n,ii,isii,o,p,po,ispo,10) else call ffdl2t(dl2ln,piDpj,l,n,o,p,po,ispo,+1,10) endif s(2) = dl2im*dl2ln del3d2 = s(1) - s(2) if ( abs(del3d2) .ge. xloss*abs(s(1)) ) return som = del3d2 xmax = abs(s(1)) * * rotate l,m * call ffdl2t(dl2mln,piDpj,ml,n,o,p,po,ispo,+1,10) call ffdl2t(dl2iml,piDpj,i,ml,j,k,kj,iskj,+1,10) s(1) = dl2im*dl2mln s(2) = dl2iml*dl2mn del3d2 = isml*(s(1) - s(2)) if ( abs(del3d2) .ge. xloss*abs(s(1)) ) return if ( abs(s(1)) .lt. xmax ) then som = del3d2 xmax = abs(s(1)) endif s(1) = dl2il*dl2mln s(2) = dl2iml*dl2ln del3d2 = isml*(s(1) - s(2)) if ( abs(del3d2) .ge. xloss*abs(s(1)) ) return if ( abs(s(1)) .lt. xmax ) then som = del3d2 xmax = abs(s(1)) endif * #] split up l,m: * #[ split up j,k: call ff2dl2(d2d2k,dum,xpi,dpipj,piDpj, k, l,m,ml,isml, n, + o,p,po,ispo, 10, ier) call ff2dl2(d2d2j,dum,xpi,dpipj,piDpj, j, l,m,ml,isml, n, + o,p,po,ispo, 10, ier) s(1) = piDpj(i,j)*d2d2k s(2) = piDpj(i,k)*d2d2j del3d2 = s(1) - s(2) if ( abs(del3d2) .ge. xloss*abs(s(1)) ) return if ( abs(s(1)) .lt. xmax ) then som = del3d2 xmax = abs(s(1)) endif call ff2dl2(d2d2kj,dum,xpi,dpipj,piDpj, kj, l,m,ml,isml, n, + o,p,po,ispo, 10, ier) s(1) = piDpj(i,k)*d2d2kj s(2) = piDpj(i,kj)*d2d2k del3d2 = iskj*(s(1) - s(2)) if ( abs(del3d2) .ge. xloss*abs(s(1)) ) return if ( abs(s(1)) .lt. xmax ) then som = del3d2 xmax = abs(s(1)) endif s(1) = piDpj(i,j)*d2d2kj s(2) = piDpj(i,kj)*d2d2j del3d2 = iskj*(s(1) - s(2)) if ( abs(del3d2) .ge. xloss*abs(s(1)) ) return if ( abs(s(1)) .lt. xmax ) then som = del3d2 xmax = abs(s(1)) endif * #] split up j,k: * #[ split up o,p: call ff2dl2(d2d2o,dum,xpi,dpipj,piDpj, i, j,k,kj,iskj, o, + l,m,ml,isml, 10, ier) call ff2dl2(d2d2p,dum,xpi,dpipj,piDpj, i, j,k,kj,iskj, p, + l,m,ml,isml, 10, ier) s(1) = piDpj(p,n)*d2d2o s(2) = piDpj(o,n)*d2d2p del3d2 = s(1) - s(2) if ( abs(del3d2) .ge. xloss*abs(s(1)) ) return if ( abs(s(1)) .lt. xmax ) then som = del3d2 xmax = abs(s(1)) endif call ff2dl2(d2d2po,dum,xpi,dpipj,piDpj, i, j,k,kj,iskj, po, + l,m,ml,isml, 10, ier) s(1) = piDpj(po,n)*d2d2p s(2) = piDpj(p,n)*d2d2po del3d2 = ispo*(s(1) - s(2)) if ( abs(del3d2) .ge. xloss*abs(s(1)) ) return if ( abs(s(1)) .lt. xmax ) then som = del3d2 xmax = abs(s(1)) endif s(1) = piDpj(po,n)*d2d2o s(2) = piDpj(o,n)*d2d2po del3d2 = ispo*(s(1) - s(2)) if ( abs(del3d2) .ge. xloss*abs(s(1)) ) return if ( abs(s(1)) .lt. xmax ) then som = del3d2 xmax = abs(s(1)) endif * #] split up o,p: * #[ give up: del3d2 = som * #] give up: *###] ff3dl2: end herwig++-2.6.0.orig/Looptools/util/ffabcd.F0000644000175000017500000001355411754474774021272 0ustar sylvestresylvestre#include "externals.h" *###[ ffabcd: subroutine ffabcd(aijkl,xpi,dpipj,piDpj,del2s,sdel2s, + in,jn,jin,isji, kn,ln,lkn,islk, ifirst, ier) ***#[*comment:*********************************************************** * * * Calculate the a,b,c,d of the equation for qij.qkl * * * * a = s4.s4^2 * * * * si sj sk sl / sm sn sm sn sm sn mu ro\ * * -b/2 = d d |d d - d s4 s4 | * * mu nu nu ro \ mu s4 ro s4 sm sn / * * * * _ si sj sk sl / mu s4 ro mu s4 ro\ * * vD/2 = d d |d s4 + d s4 | * * mu nu nu ro \ s3 s4 s3 s4 / * * * * with sm = s3, sn = s4 * * p(jin) = isji*(sj-si) * * p(lkn) = islk*(sl-sk) * * * * Input: xpi(ns) as usual * * dpipj(ns,ns) -"- * * piDpj(ns,ns) -"- * * in,jn,jin,isjn see above * * kn,ln,lkn,islk see above * * * * Output: del4d2 see above * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer in,jn,jin,isji,kn,ln,lkn,islk,ifirst, + ier DOUBLE PRECISION aijkl,xpi(10),dpipj(10,10),piDpj(10,10),del2s DOUBLE PRECISION sdel2s * * local variables: * integer i,j,ji,k,l,lk,isii integer ii integer iii(6,2) save iii logical ldet(4) DOUBLE PRECISION xa,xb,xc,xd,s(24),del3(4),som,somb,somd, + smax,save,xmax,del2d2,dum,del2i,del2j, + del2ji,d2d2i,d2d2j,d2d2ji save del3,ldet * * common blocks: * #include "ff.h" * * data * data iii / 0,3,4,0,7,0, + 0,3,4,0,7,0/ * #] declarations: * #[ initialisaties: if ( ifirst .eq. 0 ) then ifirst = ifirst + 1 ldet(2) = .FALSE. ldet(3) = .FALSE. ldet(4) = .FALSE. endif xa = xpi(4)**2 * #] initialisaties: * #[ prepare input: i = in j = jn ji = jin k = kn l = ln lk = lkn * #] prepare input: * #[ special cases: if ( k .eq. 3 ) then xb = 0 xc = 0 xd = 0 goto 990 elseif ( j .ge. 3 .and. l .ge. 3 ) then * the whole thing collapses to factor*det3 * we have a good memory of things already calculated ... if ( .not.ldet(i+k) ) then ldet(i+k) = .TRUE. iii(1,1) = i iii(4,1) = isgn(3,i)*inx(3,i) iii(6,1) = isgn(i,4)*inx(i,4) iii(1,2) = k iii(4,2) = isgn(3,k)*inx(3,k) iii(6,2) = isgn(k,4)*inx(k,4) call ffdl3s(del3(i+k),piDpj,iii,10) endif if ( l .eq. 4 .and. j .eq. 4 ) then xb = xpi(4)**2*del3(i+k)/del2s xd = 0 xc = xb**2/xa elseif ( l .eq. 4 .or. j .eq. 4 ) then xb = piDpj(3,4)*xpi(4)*del3(i+k)/del2s xd = -xpi(4)*del3(i+k)/sdel2s xc = xpi(4)*xpi(3)*del3(i+k)**2/del2s**2 else * l .eq. 3 .and. j .eq. 3 xd = -2*piDpj(3,4)*del3(i+k)/sdel2s s(1) = xpi(3)*xpi(4) s(2) = 2*piDpj(3,4)**2 som = s(2) - s(1) xb = som*del3(i+k)/del2s xc = xpi(3)**2*del3(i+k)**2/del2s**2 endif goto 900 endif if ( j .eq. 2 .and. l .eq. 4 ) then call ff3dl2(s(1),xpi,dpipj,piDpj, 4, 1,2,5,+1, + k,3,inx(3,k),isgn(3,k), 4, 3,4,7,+1, ier) xb = -xpi(4)*s(1)/del2s iii(1,1) = 1 iii(2,1) = 2 iii(4,1) = 5 iii(5,1) = 10 iii(6,1) = 8 iii(1,2) = k iii(4,2) = isgn(3,k)*inx(3,k) iii(6,2) = isgn(k,4)*inx(k,4) call ffdl3s(s(1),piDpj,iii,10) * restore values for other users iii(2,1) = 3 iii(5,1) = 7 xd = -xpi(4)*s(1)/sdel2s goto 800 endif * #] special cases: * #[ normal case b: * * First term: * call ff2dl2(del2d2,dum,xpi,dpipj,piDpj, 4, + i,j,ji,isji, 4, k,l,lk,islk, 10, ier) s(1) = -del2d2*del2s * * Second and third term, split i,j * if ( i .eq. 4 ) then del2i = 0 else ii = inx(4,i) isii = isgn(4,i) call ffdl2s(del2i,piDpj,i,4,ii,isii,3,4,7,+1,10) endif if ( j .eq. 4 ) then del2j = 0 else ii = inx(4,j) isii = isgn(4,j) call ffdl2s(del2j,piDpj,j,4,ii,isii,3,4,7,+1,10) endif call ff2dl2(d2d2i,dum,xpi,dpipj,piDpj, i, k,l,lk,islk, 4, + 3,4,7,+1, 10, ier) call ff2dl2(d2d2j,dum,xpi,dpipj,piDpj, j, k,l,lk,islk, 4, + 3,4,7,+1, 10, ier) s(2) = +del2i*d2d2j s(3) = -del2j*d2d2i somb = s(1) + s(2) + s(3) smax = max(abs(s(1)),abs(s(2)),abs(s(3))) if ( abs(somb) .ge. xloss*smax ) goto 90 xmax = smax save = somb * if the first term is wrong ... forget about it if ( abs(somb) .lt. xloss*abs(s(1)) ) goto 80 call ffdl2t(del2ji,piDpj, ji,4, 3,4,7,+1,+1, 10) call ff2dl2(d2d2ji,dum,xpi,dpipj,piDpj, ji, k,l,lk,islk, 4, + 3,4,7,+1, 10, ier) s(2) = +del2j*d2d2ji s(3) = -del2ji*d2d2j somb = s(1) + isji*(s(2) + s(3)) smax = max(abs(s(1)),abs(s(2)),abs(s(3))) if ( abs(somb) .ge. xloss*smax ) goto 90 if ( smax .lt. xmax ) then save = somb xmax = smax endif s(2) = +del2i*d2d2ji s(3) = -del2ji*d2d2i somb = s(1) + isji*(s(2) + s(3)) smax = max(abs(s(1)),abs(s(2)),abs(s(3))) if ( abs(somb) .ge. xloss*max(abs(s(1)),abs(s(2)),abs(s(3))) ) + goto 90 if ( smax .lt. xmax ) then save = somb xmax = smax endif 80 continue * * give up: * somb = save 90 continue xb = somb/del2s * #] normal case b: * #[ normal case d: call ff3dl2(s(1),xpi,dpipj,piDpj, 4, i,j,ji,isji, k,l,lk,islk, + 4, 3,4,7,+1, ier) if ( i .eq. k .and. j .eq. l ) then somd = -2*s(1) else call ff3dl2(s(2),xpi,dpipj,piDpj, 4, k,l,lk,islk, + i,j,ji,isji, 4, 3,4,7,+1, ier) somd = - s(1) - s(2) endif xd = -somd/sdel2s * #] normal case d: * #[ normal case c: 800 continue s(1) = xb - xd s(2) = xb + xd *** vvv Added 11 Feb 08: smax = abs(abs(xb) - abs(xd)) xmax = xloss*max(abs(xb), abs(xd)) if( smax .lt. xmax .and. xmax .gt. 0 ) then if( smax .ne. 0 ) then ier = ier + int(log10(xmax/smax)) else ier = ier + int(log10(xmax/xclogm)) endif endif *** ^^^ som = s(1)*s(2) xc = som/xa * #] normal case c: 900 continue * #[ and the final answer: 990 continue call ffroot(dum,aijkl,xa,xb,xc,xd,ier) * #] and the final answer: *###] ffabcd: end herwig++-2.6.0.orig/Looptools/util/cache.c0000644000175000017500000000674511754474774021171 0ustar sylvestresylvestre/* cache.c caching of tensor coefficients in dynamically allocated memory this file is part of LoopTools last modified 9 Dec 10 th */ #include #include #include #define cachelookup_ ljcachelookup_ #define cachelookup cachelookup_ #define ltcache ltcache_ #ifndef BIGENDIAN #define BIGENDIAN 0 #endif #ifndef KIND #define KIND 1 #endif #if KIND == 2 #define MSB (1-BIGENDIAN) #else #define MSB 0 #endif typedef long long dblint; typedef unsigned long long udblint; typedef struct { dblint part[KIND]; } Real; typedef struct { Real re, im; } Complex; typedef long Integer; extern struct { long cmpbits; } ltcache; /* (a < 0) ? -1 : 0 */ #define NegQ(a) ((a) >> (sizeof(a)*8 - 1)) /* (a < 0) ? 0 : a */ #define IDim(a) ((a) & NegQ(-(a))) static int SignBit(const dblint i) { return (udblint)i >> (8*sizeof(i) - 1); } static Integer PtrDiff(const void *a, const void *b) { return (char *)a - (char *)b; } static dblint CmpPara(const Real *para1, const Real *para2, int n, const dblint mask) { while( n-- ) { const dblint c = (mask & para1->part[MSB]) - (mask & para2->part[MSB]); if( c ) return c; ++para1; ++para2; } return 0; } #if KIND == 2 static dblint CmpParaLo(const Real *para1, const Real *para2, int n, const dblint mask) { while( n-- ) { dblint c = para1->part[MSB] - para2->part[MSB]; if( c ) return c; c = (mask & para1->part[1-MSB]) - (mask & para2->part[1-MSB]); if( c ) return c; ++para1; ++para2; } return 0; } #endif Integer cachelookup(const Real *para, double *base, void (*calc)(const Real *, Real *, const long *), const int *pnpara, const int *pnval) { const long one = 1; const Integer C_size = sizeof(Complex); const int npara = *pnpara, nval = *pnval; typedef struct node { struct node *next[2], *succ; int serial; Real para[2]; } Node; #define base_valid (int *)&base[0] #define base_last (Node ***)&base[1] #define base_first (Node **)&base[2] const int valid = *base_valid; Node **last = *base_last; Node **next = base_first; Node *node; if( last == NULL ) last = next; if( ltcache.cmpbits > 0 ) { dblint mask = -(1ULL << IDim(64 - ltcache.cmpbits)); #if KIND == 2 dblint (*cmp)(const Real *, const Real *, int, const dblint) = CmpPara; if( ltcache.cmpbits >= 64 ) { mask = -(1ULL << IDim(128 - ltcache.cmpbits)); cmp = CmpParaLo; } #else #define cmp CmpPara #endif while( (node = *next) && node->serial < valid ) { const dblint i = cmp(para, node->para, npara, mask); if( i == 0 ) { goto found; } next = &node->next[SignBit(i)]; } } node = *last; if( node == NULL ) { /* The "Real para[2]" bit in Node is effectively an extra Complex for alignment so that node can be reached with an integer index into base */ node = malloc(sizeof(Node) + npara*sizeof(Real) + nval*sizeof(Complex)); if( node == NULL ) { fputs("Out of memory for LoopTools cache.\n", stderr); exit(1); } node = (Node *)((char *)node + (PtrDiff(base, &node->para[npara]) & (sizeof(Complex) - 1))); node->succ = NULL; node->serial = valid; *last = node; } *next = node; *base_last = &node->succ; *base_valid = valid + 1; node->next[0] = NULL; node->next[1] = NULL; memcpy(node->para, para, npara*sizeof(Real)); calc(node->para, &node->para[npara], &one); found: return PtrDiff(&node->para[npara], base)/C_size; } herwig++-2.6.0.orig/Looptools/util/ffcli2.F0000644000175000017500000003375411754474774021236 0ustar sylvestresylvestre#include "externals.h" *###[ ffzli2: subroutine ffzli2(zdilog,zlog,cx,ier) ***#[*comment:*********************************************************** * * * Computes the dilogarithm (Li2, Sp) for any (complex) cx * * to a precision precc. It assumes that cx is already in the * * area |cx|<=1, Re(cx)<=1/2. As it is available it also returns * * log(1-cx) = zlog. * * * * Input: cx (complex) * * * * Output: zdilog (complex) Li2(cx) * * zlog (complex) log(1-cx) = -Li1(cx) * * ier (integer) 0=OK,1=num,2=err * * * * Calls: log,zfflo1,(d/a)imag,real/dble * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX cx,zlog,zdilog * * local variables * DOUBLE PRECISION xprec,bdn02,bdn05,bdn10,bdn15, + xi,xr,xdilog,xlog,absc,xa,a,ffbnd DOUBLE COMPLEX cc,cz,cz2,zfflo1 external ffbnd,zfflo1 save xprec,bdn02,bdn05,bdn10,bdn15 * * common blocks * #include "ff.h" * * statement function * absc(cc) = abs(DBLE(cc)) + abs(DIMAG(cc)) * #] declarations: * #[ initialisations: data xprec /-1D0/ if ( xprec .ne. precc ) then xprec = precc bdn02 = ffbnd(1,2,bf) bdn05 = ffbnd(1,5,bf) bdn10 = ffbnd(1,10,bf) bdn15 = ffbnd(1,15,bf) * we don't have bf(21) ... endif * #] initialisations: * #[ exceptional cases: xi = DIMAG(cx) xr = DBLE(cx) if ( xi .eq. 0) then call ffxli2(xdilog,xlog,xr,ier) zdilog = xdilog zlog = xlog return endif xa = abs(xi) + abs(xr) if ( xa .lt. precc ) then zdilog = cx zlog = -cx return endif * #] exceptional cases: * #[ get log,dilog: if ( xa .lt. xloss**2 ) then zlog = zfflo1(cx,ier) else zlog = log(1-cx) endif cz = -zlog if ( absc(cz) .lt. xclog2 ) then zdilog = cz else cz2 = cz*cz a = xa**2 if ( a .gt. bdn15 ) then zdilog = cz2*(DBLE(bf(16)) + cz2*(DBLE(bf(17)) + + cz2*(DBLE(bf(18)) + cz2*(DBLE(bf(19)) + + cz2*(DBLE(bf(20))))))) else zdilog = 0 endif if ( a .gt. bdn10 ) then zdilog = cz2*(DBLE(bf(11)) + cz2*(DBLE(bf(12)) + + cz2*(DBLE(bf(13)) + cz2*(DBLE(bf(14)) + + cz2*(DBLE(bf(15)) + zdilog))))) endif if ( a .gt. bdn05 ) then zdilog = cz2*(DBLE(bf(6)) + cz2*(DBLE(bf(7)) + + cz2*(DBLE(bf(8)) + cz2*(DBLE(bf(9)) + + cz2*(DBLE(bf(10)) + zdilog))))) endif if ( a .gt. bdn02 ) then zdilog = cz2*(DBLE(bf(3)) + cz2*(DBLE(bf(4)) + + cz2*(DBLE(bf(5)) + zdilog))) endif * watch the powers of z. zdilog = cz + cz2*(DBLE(bf(1)) + cz*(DBLE(bf(2)) + zdilog)) endif * #] get log,dilog: *###] ffzli2: end *###[ ffzzdl: subroutine ffzzdl(zdilog,ipi12,zlog,cx,ier) ***#[*comment:*************************************************** * * * Computes the dilogarithm (Li2, Sp) for any (complex) cx * * to about 15 significant figures. This can be improved * * by adding more of the bf's. For real cx > 1 an error is * * generated as the imaginary part is undefined then. * * For use in ffcdbd zlog = log(1-cx) is also calculated * * * * Input: cx (complex) * * * * Output: zdilog (complex) Li2(cx) mod factors pi^2/12 * * ipi12 (integer) these factors * * zlog (complex) log(1-cx) * * * * Calls: log,zfflo1,(d/a)imag,real/dble * * * ***#]*comment:*************************************************** * #[ declarations: implicit none * * arguments * integer ipi12,ier DOUBLE COMPLEX zdilog,zlog,cx * * local variables * integer jsgn DOUBLE PRECISION xprec,bdn02,bdn05,bdn10,bdn15, + xi,xr,s1,s2,xa,a,absc,ffbnd DOUBLE COMPLEX cfact,cx1,cy,cz,cz2,zfflo1,c external ffbnd,zfflo1 save xprec,bdn02,bdn05,bdn10,bdn15 * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ initialisations: data xprec /-1D0/ if ( xprec .ne. precc ) then xprec = precc bdn02 = ffbnd(1,2,bf) bdn05 = ffbnd(1,5,bf) bdn10 = ffbnd(1,10,bf) bdn15 = ffbnd(1,15,bf) endif * #] initialisations: * #[ exceptional cases: xi = DIMAG(cx) xr = DBLE(cx) if ( xi .eq. 0 ) then if ( xr .gt. 1 ) call fferr(31,ier) call ffzxdl(zdilog,ipi12,zlog,xr,1,ier) return endif if ( abs(xi) .lt. xalog2 ) then s1 = 0 else s1 = xi**2 endif if ( abs(xr) .lt. xalog2 ) then s2 = 0 else s2 = xr**2 endif xa = sqrt(s1 + s2) if ( xa .lt. precc ) then zdilog = cx zlog = -cx ipi12 = 0 return endif * #] exceptional cases: * #[ transform to |x|<1, Re(x) < 0.5: if ( xr .le. .5D0) then if (xa .gt. 1) then if ( 1/xa .lt. xalogm ) then cfact = 0 elseif ( 1/xa .lt. xclogm ) then cx1 = cx*DBLE(1/xa) cfact = log(-cx1) + log(DBLE(xa)) else cfact = log(-cx) endif cy = - cfact**2/2 ipi12 = -2 if ( xa*xloss**2 .gt. 1) then if ( 1/xa .lt. xclogm ) then cx1 = cx*DBLE(1/xa) cx1 = 1/cx1 cx1 = cx1*DBLE(1/xa) else cx1 = 1/cx endif cz = -zfflo1(cx1,ier) else cz = -log(1-1/cx) endif zlog = log(1-cx) jsgn = -1 else cy = 0 ipi12 = 0 if ( xa .lt. xloss**2 ) then zlog = zfflo1(cx,ier) else zlog = log(1-cx) endif cz = -zlog jsgn = 1 endif else if (xa .le. sqrt(2*xr)) then cz = -log(cx) if ( abs(xr-1) + abs(xi) .lt. xclogm ) then cy = 0 else zlog = log(1-cx) cy = cz*zlog endif ipi12 = 2 jsgn = -1 else if ( 1/xa .lt. xalogm ) then cfact = 0 elseif ( 1/xa .lt. xclogm ) then cx1 = cx*DBLE(1/xa) cfact = log(-cx1) + log(DBLE(xa)) else cfact = log(-cx) endif cy = - cfact**2/2 ipi12 = -2 if ( xa*xloss .gt. 1) then if ( 1/xa .lt. xclogm ) then cx1 = cx*DBLE(1/xa) cx1 = 1/cx1 cx1 = cx1*DBLE(1/xa) else cx1 = 1/cx endif cz = -zfflo1(cx1,ier) else cz = -log(1-1/cx) endif zlog = log(1-cx) jsgn = -1 endif endif * #] transform to |x|<1, Re(x) < 0.5: * #[ get dilog: if ( absc(cz) .lt. xclogm ) then zdilog = cz else cz2 = cz*cz a = DBLE(cz)**2 + DIMAG(cz)**2 if ( a .gt. bdn15 ) then zdilog = cz2*(DBLE(bf(16)) + cz2*(DBLE(bf(17)) + + cz2*(DBLE(bf(18)) + cz2*(DBLE(bf(19)) + + cz2*(DBLE(bf(20))))))) else zdilog = 0 endif if ( a .gt. bdn10 ) then zdilog = cz2*(DBLE(bf(11)) + cz2*(DBLE(bf(12)) + + cz2*(DBLE(bf(13)) + cz2*(DBLE(bf(14)) + + cz2*(DBLE(bf(15)) + zdilog))))) endif if ( a .gt. bdn05 ) then zdilog = cz2*(DBLE(bf(6)) + cz2*(DBLE(bf(7)) + + cz2*(DBLE(bf(8)) + cz2*(DBLE(bf(9)) + + cz2*(DBLE(bf(10)) + zdilog))))) endif if ( a .gt. bdn02 ) then zdilog = cz2*(DBLE(bf(3)) + cz2*(DBLE(bf(4)) + + cz2*(DBLE(bf(5)) + zdilog))) endif * watch the powers of z. zdilog = cz + cz2*(DBLE(bf(1)) + cz*(DBLE(bf(2)) + zdilog)) endif if(jsgn.eq.1)then zdilog = zdilog + cy else zdilog = -zdilog + cy endif * #] get dilog: *###] ffzzdl: end *###[ zfflog: DOUBLE COMPLEX function zfflog(cx,ieps,cy,ier) ***#[*comment:*********************************************************** * * * Calculate the complex logarithm of cx. The following cases * * are treted separately: * * |cx| too small: give warning and return 0 * * (for Absoft, Apollo DN300) * * Im(cx) = 0, Re(cx) < 0: take sign according to ieps * * * ***#]*comment:*********************************************************** * #[ declarations: * * arguments * implicit none integer ieps,ier DOUBLE COMPLEX cx,cy * * local variables * DOUBLE COMPLEX c,ctroep DOUBLE PRECISION absc,xa,xlog1p * * common blocks, statement function * #include "ff.h" absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ calculations: xa = absc(cx) if ( xa .lt. xalogm ) then if ( cx .ne. 0 ) call fferr(23,ier) zfflog = 0 elseif ( DBLE(cx) .lt. 0 .and. DIMAG(cx) .eq. 0 ) then * + abs(DIMAG(cx)) .lt. precc*abs(DBLE(cx)) ) then xlog1p = log(-DBLE(cx)) * checked imaginary parts 19-May-1988 if ( abs(ieps) .eq. 1 ) then if ( ieps*DBLE(cy) .lt. 0 ) then zfflog = DCMPLX(xlog1p,-pi) elseif ( ieps*DBLE(cy) .gt. 0 ) then zfflog = DCMPLX(xlog1p,pi) else call fferr(51,ier) zfflog = DCMPLX(xlog1p,pi) endif elseif ( ieps .ge. 2 .and. ieps .le. 3 ) then zfflog = DCMPLX(xlog1p,-pi) elseif ( ieps .le. -2 .and. ieps .ge. -3 ) then zfflog = DCMPLX(xlog1p,pi) else call fferr(51,ier) zfflog = DCMPLX(xlog1p,pi) endif elseif ( xa .lt. xclogm .or. 1/xa .lt. xclogm ) then ctroep = cx*DBLE(1/xa) zfflog = log(ctroep) + DBLE(log(xa)) else * print *,'zfflog: neem log van ',cx zfflog = log(cx) endif * #] calculations: *###] zfflog: end *###[ zfflo1: DOUBLE COMPLEX function zfflo1(cx,ier) ***#[*comment:*************************************************** * calculates log(1-x) for |x|<.14 in a faster way to ~15 * * significant figures. * ***#]*comment:*************************************************** * #[ declarations: implicit none integer ier DOUBLE COMPLEX cx,c,zfflog DOUBLE PRECISION xprec,bdn01,bdn05,bdn10,bdn15,bdn19, + absc,xa,ffbnd external zfflog,ffbnd save xprec,bdn01,bdn05,bdn10,bdn15,bdn19 #include "ff.h" absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ initialisations: data xprec /-1D0/ if ( precc .ne. xprec ) then xprec = precc * determine the boundaries for 1,5,10,15 terms bdn01 = ffbnd(1,1,xninv) bdn05 = ffbnd(1,5,xninv) bdn10 = ffbnd(1,10,xninv) bdn15 = ffbnd(1,15,xninv) bdn19 = ffbnd(1,19,xninv) endif * #] initialisations: * #[ calculations: xa = absc(cx) if ( xa .gt. bdn19 ) then c = cx-1 xa = absc(c) zfflo1 = zfflog(1-cx,0,czero,ier) return endif if ( xa .gt. bdn15 ) then zfflo1 = cx*( DBLE(xninv(16)) + cx*( DBLE(xninv(17)) + + cx*( DBLE(xninv(18)) + cx*( DBLE(xninv(19)) + + cx*( DBLE(xninv(20)) ))))) else zfflo1 = 0 endif if ( xa .gt. bdn10 ) then zfflo1 = cx*( DBLE(xninv(11)) + cx*( DBLE(xninv(12)) + + cx*( DBLE(xninv(13)) + cx*( DBLE(xninv(14)) + + cx*( DBLE(xninv(15)) + zfflo1 ))))) endif if ( xa .gt. bdn05 ) then zfflo1 = cx*( DBLE(xninv(6)) + cx*( DBLE(xninv(7)) + + cx*( DBLE(xninv(8)) + cx*( DBLE(xninv(9)) + + cx*( DBLE(xninv(10)) + zfflo1 ))))) endif if ( xa .gt. bdn01 ) then zfflo1 = cx*( DBLE(xninv(2)) + cx*( DBLE(xninv(3)) + + cx*( DBLE(xninv(4)) + cx*( DBLE(xninv(5)) + + zfflo1 )))) endif zfflo1 = - cx*( DBLE(xninv(1)) + zfflo1 ) * #] calculations: *###] zfflo1: end *###[ zfflo2: DOUBLE COMPLEX function zfflo2(x,ier) ***#[*comment:*************************************************** * calculates log(1-x)+x for |x|<.14 in a faster way to * * ~15 significant figures. * ***#]*comment:*************************************************** * #[ declarations: implicit none integer ier DOUBLE COMPLEX x,zfflo1,cc DOUBLE PRECISION bdn01,bdn05,bdn10,bdn15,bdn18,xprec,xa, + ffbnd,absc external ffbnd,zfflo1 save xprec,bdn01,bdn05,bdn10,bdn15,bdn18 #include "ff.h" absc(cc) = abs(DBLE(cc)) + abs(DIMAG(cc)) * #] declarations: * #[ initialisation: data xprec /-1D0/ if ( xprec .ne. precc ) then xprec = precx precx = precc * determine the boundaries for 1,5,10,15 terms bdn01 = ffbnd(1,1,xninv(2)) bdn05 = ffbnd(1,5,xninv(2)) bdn10 = ffbnd(1,10,xninv(2)) bdn15 = ffbnd(1,15,xninv(2)) bdn18 = ffbnd(1,18,xninv(2)) precx = xprec xprec = precc endif * #] initialisation: * #[ calculations: xa = absc(x) if ( xa .gt. bdn18 ) then zfflo2 = zfflo1(x,ier) + x return endif if ( xa .gt. bdn15 ) then zfflo2 = x*( DBLE(xninv(17)) + x*( DBLE(xninv(18)) + + x*( DBLE(xninv(19)) + x*( DBLE(xninv(20)) )))) else zfflo2 = 0 endif if ( xa .gt. bdn10 ) then zfflo2 = x*( DBLE(xninv(12)) + x*( DBLE(xninv(13)) + + x*( DBLE(xninv(14)) + x*( DBLE(xninv(15)) + + x*( DBLE(xninv(16)) + zfflo2 ))))) endif if ( xa .gt. bdn05 ) then zfflo2 = x*( DBLE(xninv(7)) + x*( DBLE(xninv(8)) + + x*( DBLE(xninv(9)) +x*( DBLE(xninv(10)) + + x*( DBLE(xninv(11)) + zfflo2 ))))) endif if ( xa .gt. bdn01 ) then zfflo2 = x*( DBLE(xninv(3)) + x*( DBLE(xninv(4)) + + x*( DBLE(xninv(5)) + x*( DBLE(xninv(6)) + zfflo2 )))) endif zfflo2 = - x**2*( DBLE(xninv(2)) + zfflo2 ) * #] calculations: *###] zfflo2: end *###[ zfflo3: DOUBLE COMPLEX function zfflo3(x,ier) ***#[*comment:*************************************************** * calculates log(1-x)+x+x^2/2 for |x|<.14 in a faster * * way to ~15 significant figures. * ***#]*comment:*************************************************** * #[ declarations: implicit none integer ier DOUBLE COMPLEX x,zfflo2,cc DOUBLE PRECISION bdn01,bdn05,bdn10,bdn15,xprec,xa,ffbnd, + absc external zfflo2,ffbnd save xprec,bdn01,bdn05,bdn10,bdn15 #include "ff.h" absc(cc) = abs(DBLE(cc)) + abs(DIMAG(cc)) * #] declarations: * #[ initialisation: data xprec /-1D0/ if ( xprec .ne. precx ) then xprec = precx precx = precc * determine the boundaries for 1,5,10,15 terms bdn01 = ffbnd(1,1,xninv(3)) bdn05 = ffbnd(1,5,xninv(3)) bdn10 = ffbnd(1,10,xninv(3)) bdn15 = ffbnd(1,15,xninv(3)) precx = xprec xprec = precc endif * #] initialisation: * #[ calculations: xa = absc(x) if ( xa .gt. bdn15 ) then zfflo3 = zfflo2(x,ier) + x**2/2 return endif if ( xa .gt. bdn10 ) then zfflo3 = x*( DBLE(xninv(13)) + x*( DBLE(xninv(14)) + + x*( DBLE(xninv(15)) + x*( DBLE(xninv(16)) + + x*( DBLE(xninv(17)) ))))) else zfflo3 = 0 endif if ( xa .gt. bdn05 ) then zfflo3 = x*( DBLE(xninv(8)) + x*( DBLE(xninv(9)) + + x*( DBLE(xninv(10)) + x*( DBLE(xninv(11)) + + x*( DBLE(xninv(12)) + zfflo3 ))))) endif if ( xa .gt. bdn01 ) then zfflo3 = x*( DBLE(xninv(4)) + x*( DBLE(xninv(5)) + + x*( DBLE(xninv(6)) + x*( DBLE(xninv(7)) + zfflo3 )))) endif zfflo3 = - x**3*( DBLE(xninv(3)) + zfflo3 ) * #] calculations: *###] zfflo3: end herwig++-2.6.0.orig/Looptools/util/fftran.F0000644000175000017500000004662611754474774021353 0ustar sylvestresylvestre#include "externals.h" *###[ ffai: subroutine ffai(ai,daiaj,aai,laai,del2s,sdel2s,xpi,dpipj,piDpj, + ier) ***#[*comment:*********************************************************** * * * calculates the coefficients of the projective transformation * * * * xi = ai*ui / (som aj*uj ) * * * * such that the coefficients of z^2, z*x and z*y vanish: * * * * a2/a1 = ( lij +/- lam1/2(xp1,xm1,xm2) ) / (2*xm2) * * a3 = ( xm2*a2 - xm1*a1 ) / ( xl23*a2 - xl13*a1 ) * * a4 = ( xm2*a2 - xm1*a1 ) / ( xl24*a2 - xl14*a1 ) * * * * the differences ai-aj = daiaj(i,j) are also evaluated. * * * * Input: del2s real delta(s3,s4,s3,s4) * * sdel2s real sqrt(-del2s) * * xpi(10) real masses, momenta^2 * * dpipj(10,10 real xpi(i) - xpi(j) * * piDpj(10,10) real dotproducts * * * * Output: ai(4) real Ai of the transformation * * daiaj(4,4) real Ai-Aj * * aai(4) real the other roots * * laai logical if .TRUE. aai are defined * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier logical laai DOUBLE PRECISION ai(4),daiaj(4,4),aai(4),del2s,sdel2s,xpi(10), + dpipj(10,10),piDpj(10,10) * * local variables * integer i,j,ier0,ier1,ier2 DOUBLE PRECISION del2sa,del2sb,del3mi(2),aim(4),aaim(4),delps, + del3m(1),dum,da2a1m,da1a3m,da1a4m,da2a3m,da2a4m,da3a4m * for debugging purposes DOUBLE COMPLEX ca1m * * common blocks * #include "ff.h" * * #] declarations: * #[ get ai: * * A4: some arbitrary normalisation ... * ai(4) = 1 aai(4) = 1 ier2 = ier if ( del2s .ne. 0 ) then * * A3: simple solution of quadratic equation * ier0 = ier call ffroot(aaim(3),aim(3),xpi(4),piDpj(4,3),xpi(3), + sdel2s,ier0) ier2 = max(ier2,ier0) if ( aim(3) .eq. 0 ) then * choose the other root ier = ier + 100 return endif ai(3) = ai(4)/aim(3) if ( aaim(3) .ne. 0 ) then laai = .TRUE. aai(3) = aai(4)/aaim(3) else laai = .FALSE. endif * * A2: a bit more complicated quadratic equation * ier1 = ier ier0 = ier call ffdl2s(del2sa,piDpj, 2,4,10,1, 3,4,7,1, 10) ier1 = max(ier1,ier0) ier0 = ier call ffdl3m(del3mi(2),.FALSE.,0D0,0D0,xpi,dpipj,piDpj,10, + 3,4,7, 2,1) ier1 = max(ier1,ier0) call ffroot(aim(2),aaim(2),xpi(4),piDpj(4,2),del3mi(2)/del2s + ,del2sa/sdel2s,ier1) ier2 = max(ier2,ier1) if ( aim(2) .eq. 0 ) then ier = ier + 100 return endif ai(2) = ai(4)/aim(2) if ( laai ) then if ( aaim(2) .eq. 0 ) then laai = .FALSE. else aai(2) = aai(4)/aaim(2) endif endif * * A1: same as A2, except for the special nasty case. * if ( .not.lnasty ) then ier0 = ier ier1 = ier call ffdl2s(del2sb,piDpj, 1,4,8,-1, 3,4,7,1, 10) ier1 = max(ier1,ier0) ier0 = ier call ffdl3m(del3mi(1),.FALSE.,0D0,0D0,xpi,dpipj,piDpj,10, + 3,4,7, 1,1) ier1 = max(ier1,ier0) call ffroot(aim(1),aaim(1),xpi(4),piDpj(4,1),del3mi(1)/del2s + ,del2sb/sdel2s,ier1) ier2 = max(ier2,ier1) if ( aim(1) .eq. 0 ) then ier = ier + 100 return endif ai(1) = ai(4)/aim(1) if ( laai ) then if ( aaim(1) .eq. 0 ) then laai = .FALSE. else aai(1) = aai(4)/aaim(1) endif endif else laai = .FALSE. ca1m = (c2sisj(1,4) - (c2sisj(1,3)*DBLE(xpi(4)) - + c2sisj(1,4)*DBLE(piDpj(3,4)))/DBLE(sdel2s))/ + DBLE(2*xpi(4)) ca1 = DBLE(ai(4))/ca1m ai(1) = ai(4)/DBLE(ca1m) endif else * * the special case del2s=0 with xpi(3)=xpi(4),xpi(7)=0 * laai = .FALSE. ai(3) = ai(4) if ( piDpj(7,2) .eq. 0 .or. piDpj(7,1) .eq. 0 ) then call fferr(55,ier) return endif ai(2) = ai(4)*xpi(3)/piDpj(7,2) ai(1) = ai(4)*xpi(3)/piDpj(7,1) endif ier = ier2 * #] get ai: * #[ get daiaj: ier2 = ier do 120 i=1,4 daiaj(i,i) = 0 do 110 j=i+1,4 daiaj(j,i) = ai(j) - ai(i) if ( abs(daiaj(j,i)) .ge. xloss*abs(ai(i)) ) goto 105 if ( del2s .eq. 0 ) then * #[ del2s=0: if ( i .eq. 1 .and. j .eq. 2 ) then daiaj(2,1) = -ai(1)*ai(2)*piDpj(5,7)/xpi(3) goto 104 elseif ( i .eq. 3 .and. j .eq. 4 ) then daiaj(4,3) = 0 goto 104 endif ier1 = ier call ffwarn(146,ier1,daiaj(j,i),ai(i)) goto 105 * #] del2s=0: elseif ( lnasty .and. i.eq.1 ) then ier1 = ier call ffwarn(146,ier1,daiaj(j,i),ai(i)) goto 105 endif ier0 = ier if ( i .eq. 1 .and. j .eq. 2 ) then * #[ daiaj(2,1): * * some determinants (as usual) * * as the vertex p1,s4,? does not exist we use ffdl2t * call ffdl2t(delps,piDpj, 5,4, 3,4,7,1,+1, 10) ier1 = max(ier1,ier0) ier0 = ier call ffdl3m(del3m,.FALSE.,0D0,0D0,xpi,dpipj,piDpj, + 10, 3,4,7, 5,1) ier1 = max(ier1,ier0) call ffroot(dum,da2a1m,xpi(4),piDpj(4,5), + del3m(1)/del2s,-delps/sdel2s,ier1) daiaj(2,1) = -ai(1)*ai(2)*da2a1m goto 104 * #] daiaj(2,1): elseif ( i .eq. 1 .and. j .eq. 3 ) then * #[ daiaj(3,1): * * Again, the solution of a simple quadratic equation * call ffdl2t(delps,piDpj, 9,4, 3,4,7,1,+1, 10) ier1 = ier0 ier0 = ier call ffdl3m(del3m,.FALSE.,0D0,0D0,xpi,dpipj,piDpj, + 10, 3,4,7, 9,1) ier1 = max(ier1,ier0) call ffroot(dum,da1a3m,xpi(4),-piDpj(4,9), + del3m(1)/del2s,delps/sdel2s,ier1) daiaj(3,1) = -ai(1)*ai(3)*da1a3m goto 104 * #] daiaj(3,1): elseif ( i .eq. 1 .and. j .eq. 4 ) then * #[ daiaj(4,1): * * Again, the solution of a simple quadratic equation * call ffdl2s(delps,piDpj,4,1,8,1,3,4,7,1,10) ier1 = ier0 ier0 = ier call ffdl3m(del3m,.FALSE.,0D0,0D0,xpi,dpipj,piDpj, + 10, 3,4,7, 8,1) ier1 = max(ier0,ier1) call ffroot(dum,da1a4m,xpi(4),piDpj(4,8),del3m(1)/ + del2s,delps/sdel2s,ier1) daiaj(4,1) = ai(1)*ai(4)*da1a4m goto 104 * #] daiaj(4,1): elseif ( i .eq. 2 .and. j .eq. 3 ) then * #[ daiaj(3,2): * * Again, the solution of a simple quadratic equation * call ffdl2t(delps,piDpj, 6,4, 3,4,7,1,+1, 10) ier1 = ier0 ier0 = ier call ffdl3m(del3m,.FALSE.,0D0,0D0,xpi,dpipj,piDpj, + 10, 3,4,7, 6,1) ier1 = max(ier1,ier0) call ffroot(dum,da2a3m,xpi(4),-piDpj(4,6), + del3m(1)/del2s,delps/sdel2s,ier1) daiaj(3,2) = ai(2)*ai(3)*da2a3m goto 104 * #] daiaj(3,2): elseif ( i .eq. 2 .and. j .eq. 4 ) then * #[ daiaj(4,2): * * Again, the solution of a simple quadratic equation * call ffdl2s(delps,piDpj,2,4,10,1,3,4,7,1,10) ier1 = ier0 ier0 = ier call ffdl3m(del3m,.FALSE.,0D0,0D0,xpi,dpipj,piDpj, + 10, 3,4,7, 10,1) ier1 = max(ier0,ier1) call ffroot(dum,da2a4m,xpi(4),piDpj(4,10),del3m(1)/ + del2s,delps/sdel2s,ier1) daiaj(4,2) = -ai(2)*ai(4)*da2a4m goto 104 * #] daiaj(4,2): elseif ( i .eq. 3 .and. j .eq. 4 ) then * #[ daiaj(4,3): * * Again, the solution of a very simple quadratic equation * ier1 = ier call ffroot(dum,da3a4m,xpi(4),-piDpj(4,7), + xpi(7),sdel2s,ier1) daiaj(4,3) = ai(3)*ai(4)*da3a4m goto 104 * #] daiaj(4,3): endif 104 continue 105 continue daiaj(i,j) = -daiaj(j,i) ier2 = max(ier2,ier1) 110 continue 120 continue ier = ier2 * #] get daiaj: *###] ffai: end *###[ fftran: subroutine fftran(ai,daiaj,aai,laai,xqi,dqiqj,qiDqj, + del2s,sdel2s,xpi,dpipj,piDpj,ier) ***#[*comment:*********************************************************** * * * Transform the impulses according to * * * * ti = Ai*si * * qij = (Ai*si - Aj*sj) * * * * In case del2s=0 it calculates the same coefficients but for * * for A1,A2 leave out the delta with 2*delta = 1-xpi(4)/xpi(3) * * infinitesimal. * * * * Input: ai(4) ai * * daiaj(4,4) ai-aj * * del2s \delta^{s(3) s4}_{s(3) s4} * * sdel2s sqrt(del2s) * * xpi(10) masses = s1-s2-s(3)-s4 * * dpipj(10,10) differences * * piDpj(10,10) dotproducts * * * * Output: xqi(10) transformed momenta * * dqiqj(10,10) differences * * qiDqj(10,10) dotproducts * * ier (integer) 0=ok,1=inaccurate,2=error * * * * Calls: ffxlmb,... * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier logical laai DOUBLE PRECISION ai(4),daiaj(4,4),aai(4),xqi(10),dqiqj(10,10), + qiDqj(10,10),del2s,sdel2s,xpi(10),dpipj(10,10), + piDpj(10,10) * * local variables * integer i,j,ji,k,kj,l,lk,is,isgnji,isgnlk, + ifirst,i1,j1,k1,j2,kk,kkj,ier0,ier1,ier2 logical lgo DOUBLE PRECISION xmax,dum,delps,del2d2,dl2d22,aijk,aijkl, + smax,s(3),som * * common blocks * #include "ff.h" * ifirst = 0 * #] declarations: * #[ si.sj -> ti.tj: * * calculate the dotproducts of ti(i) = ai*si(i): no problems. * do 20 i=1,4 xqi(i) = ai(i)**2 * xpi(i) qiDqj(i,i) = xqi(i) do 10 j=i+1,4 qiDqj(j,i) = ai(j)*ai(i)*piDpj(j,i) qiDqj(i,j) = qiDqj(j,i) 10 continue 20 continue * * and the smuggled ones for the onshell complex D0 * if ( lsmug ) then do 40 j=1,3 do 30 i=i+1,4 c2sisj(i,j) = DBLE(ai(j)*ai(i))*c2sisj(i,j) c2sisj(j,i) = c2sisj(i,j) 30 continue 40 continue endif if ( lnasty ) then do 60 j=3,4 * * we also hide in this array the corresponding real value * in (j,2) and (2,j), and the untransformed in (j,j). * Not beuatiful, but we need these to get the correct * Riemann sheets. * c2sisj(j,j) = c2sisj(j,1) c2sisj(j,2) = ai(j)*ai(1)*DBLE(c2sisj(j,1)) c2sisj(2,j) = c2sisj(j,2) c2sisj(j,1) = DBLE(ai(j))*ca1*c2sisj(j,1) c2sisj(1,j) = c2sisj(j,1) * 60 continue endif * * #] si.sj -> ti.tj: * #[ si.pj -> ti.qj: * * The dotproducts ti.qjk are still not too bad * Notice that t3.p = t4.p, so qiDqj(3,5-10) = qiDqj(4,5-10) * ier2 = ier do 90 i=1,4 do 80 j=1,3 do 70 k=j+1,4 ier1 = ier kj = inx(k,j) is = isgn(k,j) if ( i.eq.4 .and. + (del2s.ne.0 .or. kj.eq.5 .or. kj.eq.7 )) then qiDqj(kj,4) = qiDqj(kj,3) goto 65 endif s(1) = qiDqj(k,i) s(2) = qiDqj(j,i) qiDqj(kj,i) = is*(s(1) - s(2)) if ( abs(qiDqj(kj,i)).ge.xloss*abs(s(1)) ) goto 65 ier0 = ier if ( del2s .eq. 0 ) then * * the special cases for del2s-0 * if ( kj .eq. 5 ) then call ffdl2t(delps,piDpj, 7,i, 1,2,5, 1,1,10) qiDqj(5,i) = ai(1)*ai(2)*ai(i)*delps/xpi(3) elseif ( kj .eq. 7 ) then qiDqj(kj,i) = ai(i)*ai(4)**2*piDpj(kj,i) else * * the pi has a mixed delta/no delta behaviour * call ffwarn(144,ier1,qiDqj(kj,i),s(1)) goto 65 endif goto 65 endif * * Normal case, from the quadratic equation ... * ier1 = ier0 ier0 = ier call ff2dl2(del2d2,delps,xpi,dpipj,piDpj, i, + j,k,kj,is, 4, 3,4,7,+1, 10, ier0) ier1 = max(ier1,ier0) ier0 = ier call ff2d22(dl2d22,xpi,dpipj,piDpj, i, j,k,kj,is, + 3,4,7,+1) ier1 = max(ier1,ier0) call ffroot(dum,aijk,xpi(4),delps,dl2d22/del2s, + -del2d2/sdel2s,ier1) * the minus sign is because we have aijk, not aikj. qiDqj(kj,i) = -is*aijk*ai(i)*ai(j)*ai(k) 65 continue qiDqj(i,kj) = qiDqj(kj,i) ier2 = max(ier2,ier1) 70 continue 80 continue 90 continue * #] si.pj -> ti.qj: * #[ pi.pj -> qi.qj: do 180 i=1,3 do 170 j=i+1,4 ji = inx(j,i) isgnji = isgn(j,i) do 160 k=i,3 do 150 l=k+1,4 if ( k .eq. i .and. l .lt. j ) goto 150 ier1 = ier lk = inx(l,k) isgnlk = isgn(l,k) * * Some are zero by definition, or equal to others * if ( del2s .ne. 0 .and. (ji.eq.7 .or. lk.eq.7) + .or. + del2s .eq. 0 .and. (ji.eq.7 .and. (lk.eq.7 + .or. lk.eq.5) .or. ji.eq.5 .and. lk.eq.7 + ) ) then qiDqj(lk,ji) = 0 goto 145 endif if ( j.eq.4 .and. (del2s.ne.0 .or. lk.eq.5) ) + then qiDqj(lk,ji) = isgnji*isgn(3,i)* + qiDqj(lk,inx(3,i)) goto 145 endif if ( l.eq.4 .and. (del2s.ne.0 .or. ji.eq.5) ) + then qiDqj(lk,ji) = isgnlk*isgn(3,k)* + qiDqj(inx(3,k),ji) goto 145 endif * * First normal try * if ( abs(qiDqj(k,ji)).le.abs(qiDqj(i,lk)) ) then s(1) = qiDqj(k,ji) s(2) = qiDqj(l,ji) is = isgnlk else s(1) = qiDqj(i,lk) s(2) = qiDqj(j,lk) is = isgnji endif qiDqj(lk,ji) = is*(s(2) - s(1)) if ( abs(qiDqj(lk,ji)) .ge. xloss**2*abs(s(1)) ) + goto 145 * * First the special case del2s=0 * if ( del2s .eq. 0 ) then if ( ji .eq. 5 .and. lk .eq. 5 ) then call ffdl3m(s(1),.FALSE.,0D0,0D0,xpi, + dpipj,piDpj, 10, 1,2,5, 7, 1) qiDqj(5,5) =ai(1)**2*ai(2)**2*s(1)/xpi(3 + )**2 else call ffwarn(145,ier1,qiDqj(lk,ji),s(1)) endif goto 145 endif * * Otherwise use determinants * call ffabcd(aijkl,xpi,dpipj,piDpj,del2s, + sdel2s, i,j,ji,isgnji, k,l,lk,isgnlk, + ifirst, ier1) qiDqj(lk,ji) = (isgnji*isgnlk)* + aijkl*ai(i)*ai(j)*ai(k)*ai(l) goto 145 * print *,'fftran: warning: numerical problems ', * + 'in qiDqj(',lk,ji,')' 145 continue if ( lk .ne. ji ) then qiDqj(ji,lk) = qiDqj(lk,ji) else xqi(ji) = qiDqj(lk,ji) endif ier2 = max(ier2,ier1) 150 continue 160 continue 170 continue 180 continue ier = ier2 * #] pi.pj -> qi.qj: * #[ si^2 - sj^2: * * the differences may be awkward * ier2 = ier do 140 i=1,4 dqiqj(i,i) = 0 do 130 j=i+1,4 ier0 = ier dqiqj(j,i) = xqi(j) - xqi(i) smax = abs(xqi(i)) if ( abs(dqiqj(j,i)) .ge. xloss*smax ) goto 125 if ( abs(daiaj(j,i)) .le. xloss*abs(ai(i)) ) + then s(1) = daiaj(j,i)*(ai(i)+ai(j))*xpi(j) s(2) = ai(i)**2*dpipj(j,i) som = s(1) + s(2) xmax = abs(s(1)) if ( xmax.lt.smax ) then dqiqj(j,i) = som smax = xmax endif if ( abs(dqiqj(j,i)) .ge. xloss*smax ) goto 125 endif * * give up * 125 continue dqiqj(i,j) = -dqiqj(j,i) ier2 = max(ier2,ier0) 130 continue 140 continue * #] si^2 - sj^2: * #[ si^2 - pj^2: do 210 i=1,4 do 200 j=1,4 do 190 kk=j+1,4 ier0 = ier k = kk kj = inx(k,j) kkj = kj * * Use that q_(i4)^2 = q_(i3)^2 * if ( del2s.ne.0 .and. k.eq.4 ) then if ( j .eq. 3 ) then dqiqj(7,i) = -xqi(i) else dqiqj(kj,i) = dqiqj(inx(j,3),i) endif goto 185 elseif ( kj .eq. 7 ) then dqiqj(7,i) = -xqi(i) goto 185 endif xmax = 0 181 continue som = xqi(kj) - xqi(i) if ( k.eq.kk .or. abs(xqi(i)).lt.xmax ) then dqiqj(kj,i) = som xmax = abs(xqi(i)) if ( abs(dqiqj(kj,i)) .ge. xloss*xmax ) goto 185 endif * * second try * we assume that qi.qj, i,j<=3 are known * if ( abs(dqiqj(k,i)) .lt. abs(dqiqj(j,i)) ) then j1 = k j2 = j else j2 = k j1 = j endif s(1) = dqiqj(j1,i) s(2) = xqi(j2) s(3) = -2*qiDqj(j1,j2) som = s(1) + s(2) + s(3) smax = max(abs(s(1)),abs(s(2)),abs(s(3))) if ( smax.lt.xmax ) then dqiqj(kj,i) = som xmax = smax if ( abs(dqiqj(kj,i)) .ge. xloss*xmax ) goto 185 endif * * third try: rearrange s(2),s(3) * this works if ai(j1)~ai(j2) * if ( abs(daiaj(j2,j1)) .lt. xloss*abs(ai(j1)) ) then s(2) = ai(j2)*daiaj(j2,j1)*xpi(j2) s(3) = ai(j2)*ai(j1)*dpipj(kj,j1) som = s(1) + s(2) + s(3) smax = max(abs(s(1)),abs(s(2)),abs(s(3))) if ( smax.lt.xmax ) then dqiqj(kj,i) = som xmax = smax if ( abs(dqiqj(kj,i)) .ge. xloss*xmax ) + goto 185 endif endif * * There is a trick involving the other root for j2=4 * Of course it also works for j2=3. * if ( laai .and. j2 .ge. 3 ) then s(2) = -ai(4)**2*(ai(j1)/aai(j1))*xpi(4) som = s(1) + s(2) smax = abs(s(1)) if ( smax.lt.xmax ) then dqiqj(kj,i) = som xmax = smax if ( abs(dqiqj(kj,i)) .ge. xloss*xmax ) + goto 185 endif endif * * If k = 3 we can also try with k = 4 -- should give * the same * if ( del2s.ne.0 .and. kk.eq.3 .and. k.eq.3 ) then k = 4 kj = inx(k,j) dqiqj(kj,i) = dqiqj(kkj,i) goto 181 endif if ( del2s.ne.0 .and. kk.eq.4 .and. k.eq.4 ) then k = 3 kj = inx(k,j) dqiqj(kj,i) = dqiqj(kkj,i) goto 181 endif * * give up * 185 continue if ( k .ne. kk ) then dqiqj(kkj,i) = dqiqj(kj,i) dqiqj(i,kkj) = -dqiqj(kj,i) else dqiqj(i,kj) = -dqiqj(kj,i) endif ier2 = max(ier2,ier0) 190 continue 200 continue 210 continue * #] si^2 - pj^2: * #[ pi^2 - pj^2: do 280 i=1,4 do 270 j=i+1,4 ji = inx(j,i) dqiqj(ji,ji) = 0 do 260 k=i,4 do 250 l=k+1,4 ier0 = ier if ( k .eq. i .and. l .le. j ) goto 250 lk = inx(l,k) if ( del2s .eq. 0 ) then * * special case: * if ( j.eq.4 .and. i.eq.3 ) then dqiqj(lk,7) = xqi(lk) goto 245 endif if ( l.eq.4 .and. k.eq.3 ) then dqiqj(7,ji) = -xqi(ji) goto 245 endif else * * Use that t_3.p_i = t_4.p_i * if ( k.eq.i .and. j.eq.3 .and. l.eq.4 ) then dqiqj(lk,ji) = 0 goto 245 endif if ( j.eq.4 ) then if ( i .eq. 3 ) then dqiqj(lk,7) = xqi(lk) else dqiqj(lk,ji) = dqiqj(lk,inx(i,3)) endif goto 245 endif if ( l.eq.4 ) then if ( k .eq. 3 ) then dqiqj(7,ji) = -xqi(ji) else dqiqj(lk,ji) = dqiqj(inx(k,3),ji) endif goto 245 endif endif * * We really have to calculate something * dqiqj(lk,ji) = xqi(lk) - xqi(ji) smax = abs(xqi(lk)) if ( abs(dqiqj(lk,ji)).ge.xloss*smax ) goto 245 * * First the special case j=k,l * i1 = i j1 = j k1 = k lgo = .FALSE. if ( j .eq. k ) then k1 = l lgo = .TRUE. elseif ( j .eq. l ) then lgo = .TRUE. elseif ( i .eq. k ) then i1 = j j1 = i k1 = l lgo = .TRUE. endif if ( lgo ) then s(1) = dqiqj(k1,i1) s(2) = 2*isgn(i1,k1)*qiDqj(j1,inx(i1,k1)) xmax = abs(s(1)) if ( xmax .lt. smax ) then smax = xmax dqiqj(lk,ji) = s(1) + s(2) if ( abs(dqiqj(lk,ji)).ge.xloss*smax ) + goto 245 endif endif * * Just some recombinations * if ( abs(dqiqj(l,ji)).lt.abs(dqiqj(k,ji)) ) then j1 = l j2 = k else j2 = l j1 = k endif s(1) = dqiqj(j1,ji) s(2) = xqi(j2) s(3) = -2*qiDqj(j1,j2) * only if this is an improvement xmax = max(abs(s(1)),abs(s(2)),abs(s(3))) if ( xmax .lt. smax ) then smax = xmax dqiqj(lk,ji) = s(1) + s(2) + s(3) if ( abs(dqiqj(lk,ji)) .ge. xloss*smax ) + goto 245 endif if ( abs(dqiqj(j,lk)).lt.abs(dqiqj(i,lk)) ) then j1 = j j2 = i else j2 = j j1 = i endif s(1) = -dqiqj(j1,lk) s(2) = -xqi(j2) s(3) = 2*qiDqj(j1,j2) * only if this is an improvement xmax = max(abs(s(1)),abs(s(2)),abs(s(3))) if ( xmax .lt. smax ) then dqiqj(lk,ji) = s(1) + s(2) + s(3) smax = xmax if ( abs(dqiqj(lk,ji)) .ge. xloss*smax ) + goto 245 endif * * give up * 245 continue dqiqj(ji,lk) = -dqiqj(lk,ji) ier2 = max(ier2,ier0) 250 continue 260 continue 270 continue 280 continue ier = ier2 * #] pi^2 - pj^2: *###] fftran: end herwig++-2.6.0.orig/Looptools/util/solve.F0000644000175000017500000000012011754474774021176 0ustar sylvestresylvestre#ifdef SOLVE_EIGEN #include "solve-Eigen.F" #else #include "solve-LU.F" #endif herwig++-2.6.0.orig/Looptools/util/ffcxs3.F0000644000175000017500000004234311754474774021257 0ustar sylvestresylvestre#include "externals.h" *###[ ffcxs3: subroutine ffcxs3(cs3,ipi12,y,z,dyz,d2yzz,dy2z,xpi,piDpj,ii,ns, + isoort,ier) ***#[*comment:*********************************************************** * * * calculates the s3 as defined in appendix b. * * (ip = ii+3, is1 = ii, is2 = ii+1) * * * * log( xk*y^2 + (-xk+xm1-xm2)*y + xm2 - i*eps ) * * /1 - log( ... ) |y=yi * * s3 = \ dy -------------------------------------------------- * * /0 y - yi * * * * = r(yi,y-,+) + r(yi,y+,-) * * * * with y+- the roots of the argument of the logarithm. * * the sign of the argument to the logarithms in r is passed * * in ieps * * * * input: y(4),z(4) (real) roots in form (z-,z+,1-z-,1-z+) * * dyz(2,2),d2yzz, (real) y() - z(), y+ - z- - z+ * * dy2z(4) (real) y() - 2z() * * xpi (real(ns)) p(i).p(i) (B&D metric) i=1,3 * * m(i)^2 = si.si i=4,6 * * ii (integer) xk = xpi(ii+3) etc * * ns (integer) size of arrays * * isoort (integer) returns kind of action taken * * cs3 (complex)(20) assumed zero. * * ccy (complex)(3) if i0 != 0: complex y * * * * output: cs3 (complex) mod factors pi^2/12, in array * * ipi12 (integer) these factors * * ier (integer) 0=ok 1=inaccurate 2=error * * * * calls: ffcrr,ffcxr,real/dble,DCMPLX,log,ffadd1,ffadd2,ffadd3 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ipi12(2),ii,ns,isoort(2),ier DOUBLE COMPLEX cs3(20) DOUBLE PRECISION y(4),z(4),dyz(2,2),d2yzz,dy2z(4), + xpi(ns),piDpj(ns,ns) * * local variables: * integer i,ip,ieps(2) DOUBLE PRECISION yy,yy1,zz,zz1,dyyzz,xdilog,xlog,x00(3) logical ld2yzz * * common blocks * #include "ff.h" * * #] declarations: * #[ get counters: ip = ii+3 if ( isoort(2) .ne. 0 ) then if ( (z(2).gt.z(1) .or. z(1).eq.z(2) .and. z(4).lt.z(3) ) + .eqv. xpi(ip) .gt. 0 ) then ieps(1) = +1 ieps(2) = -1 else ieps(1) = -1 ieps(2) = +1 endif else if ( piDpj(ip,ii) .gt. 0 ) then ieps(1) = +1 else ieps(1) = -1 endif endif * #] get counters: * #[ special case |z| >> |y|: if ( xpi(ip).lt.0 .and. max(abs(y(2)),abs(y(4))) .lt. + xloss*min(abs(z(1)), abs(z(2)))/2 ) then * * we will obtain cancellations of the type Li_2(x) + Li_2(-x) * with x small. * yy = dyz(2,1)/d2yzz yy1 = dyz(2,2)/d2yzz if ( y(2) .eq. 0 ) goto 10 zz = z(2)*yy/y(2) zz1 = 1-zz dyyzz = dyz(2,2)*yy/y(2) call ffcxr(cs3(1),ipi12(1),yy,yy1,zz,zz1,dyyzz,.FALSE., + 0D0,0D0,0D0,.FALSE.,x00,0,ier) 10 continue if ( y(4) .eq. 0 ) goto 30 zz = yy*z(4)/y(4) zz1 = 1-zz dyyzz = -yy*dyz(2,2)/y(4) call ffcxr(cs3(8),ipi12(2),yy,yy1,zz,zz1,dyyzz,.FALSE., + 0D0,0D0,0D0,.FALSE.,x00,0,ier) do 20 i=8,14 20 cs3(i) = -cs3(i) 30 continue * And now the remaining Li_2(x^2) terms call ffxli2(xdilog,xlog,(y(2)/dyz(2,1))**2,ier) cs3(15) = +xdilog/2 call ffxli2(xdilog,xlog,(y(4)/dyz(2,1))**2,ier) cs3(16) = -xdilog/2 goto 900 endif * #] special case |z| >> |y|: * #[ normal: if ( xpi(ip) .eq. 0 ) then ld2yzz = .FALSE. else ld2yzz = .TRUE. endif if ( isoort(1) .ne. 0 ) call ffcxr(cs3(1),ipi12(1),y(2),y(4), + z(1),z(3),dyz(2,1),ld2yzz,d2yzz,z(2),z(4),.TRUE.,dy2z(1), + ieps(1),ier) if ( isoort(2) .ne. 0 ) then if ( mod(isoort(2),10) .eq. 2 ) then * both roots are equal: multiply by 2 do 60 i=1,7 cs3(i) = 2*DBLE(cs3(i)) 60 continue ipi12(1) = 2*ipi12(1) else call ffcxr(cs3(8),ipi12(2),y(2),y(4),z(2),z(4),dyz(2,2), + ld2yzz,d2yzz,z(1),z(3),.TRUE.,dy2z(2),ieps(2),ier) endif endif * * #] normal: 900 continue *###] ffcxs3: end *###[ ffcs3: subroutine ffcs3(cs3,ipi12,cy,cz,cdyz,cd2yzz,cpi,cpiDpj,ii,ns, + isoort,ier) ***#[*comment:*********************************************************** * * * calculates the s3 as defined in appendix b. * * * * log( cpi(ii+3)*y^2 + (cpi(ii+3)+cpi(ii)-cpi(ii+1))*y * * /1 + cpi(ii+1)) - log( ... ) |y=cyi * * s3 = \ dy ---------------------------------------------------- * * /0 y - cyi * * * * = r(cyi,cy+) + r(cyi,cy-) + ( eta(-cy-,-cy+) - * * eta(1-cy-,1-cy+) - eta(...) )*log(1-1/cyi) * * * * with y+- the roots of the argument of the logarithm. * * * * input: cy(4) (complex) cy(1)=y^-,cy(2)=y^+,cy(i+2)=1-cy(1) * * cz(4) (complex) cz(1)=z^-,cz(2)=z^+,cz(i+2)=1-cz(1) * * cpi(6) (complex) masses & momenta (B&D) * * ii (integer) position of cp,cma,cmb in cpi * * ns (integer) size of arrays * * isoort(2)(integer) returns the kind of action taken * * cs3 (complex)(14) assumed zero. * * * * output: cs3 (complex) mod factors ipi12 * * ipi12(2) (integer) these factors * * ier (integer) 0=ok, 1=numerical problems, 2=error * * * * calls: ffcrr,DIMAG,DBLE,zfflog * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ipi12(2),ii,ns,isoort(2),ier DOUBLE COMPLEX cs3(20),cpi(ns),cpiDpj(ns,ns) DOUBLE COMPLEX cy(4),cz(4),cdyz(2,2),cd2yzz * * local variables: * integer i,ip,ieps(2),ieps0,ni(4),ntot logical ld2yzz DOUBLE COMPLEX c,zdilog,zlog,cyy,cyy1,czz,czz1,cdyyzz DOUBLE PRECISION absc,y,y1,z,z1,dyz,d2yzz,zz,zz1, + x00(3),sprec * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ get ieps: ip = ii+3 call ffieps(ieps,cz(1),cpi(ip),cpiDpj(ip,ii),isoort) * #] get ieps: * #[ special case |cz| >> |cy|: if ( isoort(2) .ne. 0 .and. max(absc(cy(2)),absc(cy(4))) .lt. + xloss*min(absc(cz(1)),absc(cz(2)))/2 ) then * * we will obtain cancellations of the type Li_2(x) + Li_2(-x) * with x small. * cyy = cdyz(2,1)/cd2yzz cyy1 = cdyz(2,2)/cd2yzz if ( absc(cy(2)) .lt. xclogm ) then if ( DIMAG(cy(2)) .eq. 0 .and. abs(DBLE(cy(2))) .gt. + xalogm ) then czz = cz(2)*cyy*DCMPLX(1/DBLE(cy(2))) cdyyzz = cyy*cdyz(2,2)*DCMPLX(1/DBLE(cy(2))) elseif ( cy(2) .eq. 0 .and. cz(2) .ne. 0 .and. cyy + .ne. 0 ) then * the answer IS zero goto 30 endif else czz = cz(2)*cyy/cy(2) cdyyzz = cyy*cdyz(2,2)/cy(2) endif czz1 = 1-czz if ( isoort(1) .eq. -10 ) then * no eta terms. ieps0 = 99 else * do not know the im part ieps0 = 0 endif call ffcrr(cs3(1),ipi12(1),cyy,cyy1,czz,czz1,cdyyzz,.FALSE., + czero,czero,czero,-1,ieps0,ier) 30 continue if ( absc(cy(4)) .lt. xclogm ) then if ( DIMAG(cy(4)) .eq. 0 .and. abs(DBLE(cy(4))) .gt. + xalogm ) then czz = cz(4)*cyy*DCMPLX(1/DBLE(cy(4))) cdyyzz = -cyy*cdyz(2,2)*DCMPLX(1/DBLE(cy(4))) elseif ( cy(4) .eq. 0 .and. cz(4) .ne. 0 .and. cyy + .ne. 0 ) then * the answer IS zero goto 50 endif else czz = cz(4)*cyy/cy(4) cdyyzz = -cyy*cdyz(2,2)/cy(4) endif czz1 = 1-czz call ffcrr(cs3(8),ipi12(2),cyy,cyy1,czz,czz1,cdyyzz,.FALSE., + czero,czero,czero,-1,ieps0,ier) do 40 i=8,14 cs3(i) = -cs3(i) 40 continue 50 continue * * And now the remaining Li_2(x^2) terms * stupid Gould NP1 * c = cy(2)*cy(2)/(cdyz(2,1)*cdyz(2,1)) call ffzli2(zdilog,zlog,c,ier) cs3(15) = +zdilog/2 * stupid Gould NP1 c = cy(4)*cy(4)/(cdyz(2,1)*cdyz(2,1)) call ffzli2(zdilog,zlog,c,ier) cs3(16) = -zdilog/2 goto 900 endif * #] special case |cz| >> |cy|: * #[ normal: if ( isoort(2) .eq. 0 ) then ld2yzz = .FALSE. else ld2yzz = .TRUE. endif if ( isoort(1) .eq. 0 ) then * do nothing elseif ( mod(isoort(1),10).eq.0 .or. mod(isoort(1),10).eq.-1 + .or. mod(isoort(1),10).eq.-3 ) then call ffcrr(cs3(1),ipi12(1),cy(2),cy(4),cz(1),cz(3), + cdyz(2,1),ld2yzz,cd2yzz,cz(2),cz(4),isoort(1), + ieps(1),ier) elseif ( mod(isoort(1),10) .eq. -5 .or. mod(isoort(1),10) .eq. + -6 ) then y = DBLE(cy(2)) y1 = DBLE(cy(4)) z = DBLE(cz(1)) z1 = DBLE(cz(3)) dyz = DBLE(cdyz(2,1)) d2yzz = DBLE(cd2yzz) zz = DBLE(cz(2)) zz1 = DBLE(cz(4)) sprec = precx precx = precc call ffcxr(cs3(1),ipi12(1),y,y1,z,z1,dyz,ld2yzz,d2yzz,zz,zz1 + ,.FALSE.,x00,ieps(1),ier) precx = sprec else call fferr(12,ier) endif if ( isoort(2) .eq. 0 ) then * do nothing elseif ( mod(isoort(2),5) .eq. 0 ) then do 100 i=1,7 100 cs3(i) = 2*DBLE(cs3(i)) ipi12(1) = 2*ipi12(1) elseif ( mod(isoort(2),10).eq.-1 .or. mod(isoort(1),10).eq.-3 ) + then call ffcrr(cs3(8),ipi12(2),cy(2),cy(4),cz(2),cz(4), + cdyz(2,2),ld2yzz,cd2yzz,cz(1),cz(3),isoort(2), + ieps(2),ier) elseif ( mod(isoort(2),10) .eq. -6 ) then y = DBLE(cy(2)) y1 = DBLE(cy(4)) z = DBLE(cz(2)) z1 = DBLE(cz(4)) dyz = DBLE(cdyz(2,2)) d2yzz = DBLE(cd2yzz) zz = DBLE(cz(1)) zz1 = DBLE(cz(3)) sprec = precx precx = precc call ffcxr(cs3(8),ipi12(2),y,y1,z,z1,dyz,ld2yzz,d2yzz,zz,zz1 + ,.FALSE.,x00,ieps(2),ier) precx = sprec else call fferr(13,ier) endif * #] normal: * #[ eta's: if ( mod(isoort(1),10).eq.-5 .or. mod(isoort(1),10).eq.-6 ) + then if ( mod(isoort(2),10).ne.-5 .and. mod(isoort(1),10).ne.-6 + ) then print *,'ffcxs3: error: I assumed both would be real!' ier = ier + 50 endif * we called ffcxr - no eta's elseif ( DIMAG(cpi(ip)).eq.0 ) then call ffgeta(ni,cz(1),cdyz(1,1), + cpi(ip),cpiDpj(ii,ip),ieps,isoort,ier) ntot = ni(1) + ni(2) + ni(3) + ni(4) if ( ntot .ne. 0 ) call ffclgy(cs3(15),ipi12(2),ntot, + cy(1),cz(1),cd2yzz,ier) else * * cpi(ip) is really complex (occurs in transformed * 4pointfunction) * print *,'THIS PART IS NOT READY ', + 'and should not be reached' stop endif * #] eta's: 900 continue *###] ffcs3: end *###[ ffclgy: subroutine ffclgy(cs3,ipi12,ntot,cy,cz,cd2yzz,ier) ***#[*comment:*********************************************************** * * * calculates the the difference of two S's with cy(3,4),cz(3,4), * * cy(4)cz(3)-cy(3)cz(4) given. Note the difference with ffdcs4, * * in which the cy's are the same and only the cz's different. * * Here both can be different. Also we skip an intermediat * * level. * * * * input: cy(4) (complex) cy,1-cy in S with s3,s4 * * cz(4) (complex) cz,1-cz in S with s3,s4 * * cdyz(2,2) (complex) cy - cz * * cd2yzz (complex) 2*cy - cz+ - cz- * * cdyzzy(4) (complex) cy(i,4)*cz(i,4)-cy(i,3)*cz(i,4) * * cpiDpj(6,6) (complex) usual * * cs3 (complex) assumed zero. * * * * output: cs3 (complex) mod factors pi^2/12, in array * * ipi12 (integer) these factors * * isoort (integer) returns kind of action taken * * ier (integer) number of digits lost * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX cs3 DOUBLE COMPLEX cy(4),cz(4),cd2yzz integer ipi12,ntot,ier * * local variables * integer ipi DOUBLE COMPLEX c,cc,clogy,c2y1,zfflog,zfflo1,csum DOUBLE PRECISION absc external zfflog,zfflo1 * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ calculations: ipi = 0 if ( 1 .lt. xloss*absc(cy(2)) ) then clogy = zfflo1(1/cy(2),ier) else if ( absc(cy(2)) .lt. xclogm .or. absc(cy(4)) .lt. xclogm ) + then if ( ntot .ne. 0 ) call fferr(15,ier) clogy = 0 else c = -cy(4)/cy(2) if ( DBLE(c) .gt. -abs(DIMAG(c)) ) then clogy = zfflog(c,0,czero,ier) else * take out the factor 2*pi^2 cc = c+1 if ( absc(cc) .lt. xloss ) then c2y1 = -cd2yzz - cz(1) + cz(4) if ( absc(c2y1) .lt. xloss*max(absc(cz(1)), + absc(cz(4))) ) then c2y1 = -cd2yzz - cz(2) + cz(3) endif csum = -c2y1/cy(2) clogy = zfflo1(csum,ier) else csum = 0 clogy = zfflog(-c,0,czero,ier) endif if ( DIMAG(c) .lt. -precc*absc(c) .or. + DIMAG(csum) .lt. -precc*absc(csum) ) then ipi = -1 elseif ( DIMAG(c) .gt. precc*absc(c) .or. + DIMAG(csum) .gt. precc*absc(csum) ) then ipi = +1 else call fferr(51,ier) ipi = 0 endif endif endif endif cs3 = cs3 + ntot*c2ipi*clogy if ( ipi .ne. 0 ) then ipi12 = ipi12 - 24*ntot*ipi endif * #] calculations: *###] ffclgy: end *###[ ffieps: subroutine ffieps(ieps,cz,cp,cpDs,isoort) ***#[*comment:*********************************************************** * * * Get the ieps prescription in such a way that it is compatible * * with the imaginary part of cz if non-zero, compatible with the * * real case if zero. * * * * Input: cz complex(4) the roots z-,z+,1-z-,1-z+ * * cp complex p^2 * * cpDs complex p.s * * isoort integer(2) which type of Ri * * * * Output: ieps integer(2) z -> z-ieps*i*epsilon * * will give correct im part * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ieps(2),isoort(2) DOUBLE COMPLEX cp,cpDs,cz(4) * * #] declarations: * #[ work: if ( DIMAG(cp) .ne. 0 ) then * do not calculate ANY eta terms, we'll do them ourselves. ieps(1) = 99 ieps(2) = 99 elseif ( isoort(2) .ne. 0 ) then if ( DIMAG(cz(1)) .lt. 0 ) then ieps(1) = +1 if ( DIMAG(cz(2)) .lt. 0 ) then ieps(2) = +1 else ieps(2) = -1 endif elseif ( DIMAG(cz(1)) .gt. 0 ) then ieps(1) = -1 if ( DIMAG(cz(2)) .le. 0 ) then ieps(2) = +1 else ieps(2) = -1 endif else if ( DIMAG(cz(2)) .lt. 0 ) then ieps(1) = -1 ieps(2) = +1 elseif ( DIMAG(cz(2)) .gt. 0 ) then ieps(1) = +1 ieps(2) = -1 else if ( (DBLE(cz(2)).gt.DBLE(cz(1)) + .or. (DBLE(cz(1)).eq.DBLE(cz(2)) + .and. DBLE(cz(4)).lt.DBLE(cz(3))) + ) .eqv. DBLE(cp).gt.0 ) then ieps(1) = +1 ieps(2) = -1 else ieps(1) = -1 ieps(2) = +1 endif endif endif else if ( DIMAG(cz(1)) .lt. 0 ) then ieps(1) = +1 elseif ( DIMAG(cz(1)) .gt. 0 ) then ieps(1) = -1 elseif ( DBLE(cpDs) .gt. 0 ) then ieps(1) = +1 else ieps(1) = -1 endif ieps(2) = -9999 endif * #] work: *###] ffieps: end *###[ ffgeta: subroutine ffgeta(ni,cz,cdyz,cp,cpDs,ieps,isoort,ier) ***#[*comment:*********************************************************** * * * Get the eta terms which arise from splitting up * * log(p2(x-z-)(x-z+)) - log(p2(y-z-)(y-z+)) * * * * Input: cz complex(4) the roots z-,z+,1-z-,1-z+ * * cdyz complex(2,2) y-z * * cd2yzz complex(2) 2y-(z-)-(z+) * * cp complex p^2 * * cpDs complex p.s * * ieps integer(2) the assumed im part if Im(z)=0 * * isoort integer(2) which type of Ri * * * * Output: ni integer(4) eta()/(2*pi*i) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ni(4),ieps(2),isoort(2),ier DOUBLE COMPLEX cp,cpDs,cz(4),cdyz(2,2) * * local variables * integer i,nffeta,nffet1 DOUBLE COMPLEX cmip external nffeta,nffet1 * * common * #include "ff.h" * * #] declarations: * #[ complex masses or imaginary roots: * * only complex because of complex roots in y or z * [checked and in agreement with ieps definition 23-sep-1991] * * isoort = +1: y is real, z is real * isoort = -1-n*10: y is complex, possibly z as well * isoort = -3-n*10: y,z complex, (y-z-)*(y-z+) real * isoort = 0: y is complex, one z root only * isoort = -10-n*10: y is real, z is complex * isoort = -5,6-n*10: y,z real * if ( isoort(1) .gt. 0 ) then * * really a real case * ni(1) = 0 ni(2) = 0 ni(3) = 0 ni(4) = 0 elseif ( mod(isoort(1),10) .ne. 0 .and. isoort(2) .ne. 0 ) then cmip = DCMPLX(0D0,-DBLE(cp)) * * ni(1) = eta(p2,(x-z-)(x-z+)) = 0 by definition (see ni(3)) * ni(2) = eta(x-z-,x-z+) * ni(1) = 0 if ( ieps(1) .gt. 0 .neqv. ieps(2) .gt. 0 ) then ni(2) = 0 else ni(2) = nffet1(-cz(1),-cz(2),cmip,ier) if ( cz(3).ne.0 .and. cz(4).ne.0 ) then i = nffet1(cz(3),cz(4),cmip,ier) if ( i .ne. ni(2) ) call fferr(53,ier) endif endif * * ni(3) compensates for whatever convention we chose in ni(1) * ni(4) = -eta(y-z-,y-z+) * if ( mod(isoort(1),10).eq.-3 ) then * follow the i*epsilon prescription as (y-z-)(y-z+) real ni(3) = 0 ni(4) = -nffet1(cdyz(2,1),cdyz(2,2),cmip,ier) else if ( DBLE(cp) .lt. 0 .and. DIMAG(cdyz(2,1)* + cdyz(2,2)) .lt. 0 ) then ni(3) = -1 else ni(3) = 0 endif ni(4) = -nffeta(cdyz(2,1),cdyz(2,2),ier) endif elseif ( (mod(isoort(1),10).eq.-1 .or. mod(isoort(1),10).eq.-3) + .and. isoort(2) .eq. 0 ) then ni(1) = 0 if ( DIMAG(cz(1)) .ne. 0 ) then ni(2) = nffet1(-cpDs,-cz(1),DCMPLX(DBLE(0), + DBLE(-1)),ier) else ni(2) = nffet1(-cpDs,DCMPLX(DBLE(0),DBLE(1)), + DCMPLX(DBLE(0),DBLE(-1)),ier) endif ni(3) = 0 ni(4) = -nffeta(-cpDs,cdyz(2,1),ier) else ni(1) = 0 ni(2) = 0 ni(3) = 0 ni(4) = 0 endif * #] complex masses or imaginary roots: *###] ffgeta: end herwig++-2.6.0.orig/Looptools/util/solve-LU.h0000644000175000017500000000041011754474774021560 0ustar sylvestresylvestre QVAR G(DIM,DIM), Gnorm(DIM) integer perm(DIM) #define XSetup(G) XLUDecompose(n, G,DIM, Gnorm, perm) #define IN(i) in(perm(i)) QVAR G(DIM,DIM), Ginv(DIM,DIM) #define XSetup(G) XLUDecompose(n, G,DIM, Ginv,DIM) #define IN(i) in(i) sign of permutation? herwig++-2.6.0.orig/Looptools/util/ffcxs4.F0000644000175000017500000005017311754474774021260 0ustar sylvestresylvestre#include "externals.h" * $Id: ffcxs4.f,v 1.3 1995/10/17 06:55:09 gj Exp $ * $Log: ffcxs4.f,v $ c Revision 1.3 1995/10/17 06:55:09 gj c Fixed ieps error in ffdcrr (ffcxs4.f), added real case in ffcrr, debugging c info in ffxd0, and warned against remaining errors for del2=0 in ffrot4 c (ffxd0h.f) c c Revision 1.2 1995/10/06 09:17:22 gj c Found stupid typo in ffxc0p which caused the result to be off by pi^2/3 in c some equal-mass cases. Added checks to ffcxs4.f ffcrr.f. c *###[ ffcxs4: subroutine ffcxs4(cs3,ipi12,w,y,z,dwy,dwz,dyz,d2yww,d2yzz, + xpi,piDpj,ii,ns,isoort,ier) ***#[*comment:*********************************************************** * * * Calculate the 8 Spence functions = 4 R's = 2 dR's * * * * * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ipi12(4),ii,ns,isoort(4),ier DOUBLE COMPLEX cs3(40) DOUBLE PRECISION w(4),y(4),z(4),dwy(2,2),dwz(2,2),dyz(2,2), + d2yww,d2yzz,xpi(ns),piDpj(ns,ns),x00(3) * * local variables: * integer iepz(2),iepw(2) logical ld2yzz,ld2yww * * common blocks * #include "ff.h" * #] declarations: * #[ groundwork: if ( isoort(2) .eq. 0 ) then ld2yzz = .FALSE. else ld2yzz = .TRUE. endif if ( isoort(4) .eq. 0 ) then ld2yww = .FALSE. else ld2yww = .TRUE. endif if ( isoort(2) .ne. 0 ) then if ( z(2) .gt. z(1) .eqv. xpi(ii+3) .gt. 0 ) then iepz(1) = +1 iepz(2) = -1 else iepz(1) = -1 iepz(2) = +1 endif else print *,'ffcxs4: error: untested algorithm' if ( piDpj(ii,ii+3) .gt. 0 ) then iepz(1) = +1 else iepz(1) = -1 endif endif if ( isoort(4) .ne. 0 ) then if ( w(2) .gt. w(1) .eqv. xpi(5) .gt. 0 ) then iepw(1) = 1 iepw(2) = -1 else iepw(1) = -1 iepw(2) = 1 endif else print *,'ffcxs4: error: untested algorithm' if ( piDpj(2,5) .gt. 0 ) then iepw(1) = +1 else iepw(1) = -1 endif endif * #] groundwork: * #[ zm and wp: if ( isoort(4) .eq. 0 ) then call ffcxr(cs3(1),ipi12(1),y(2),y(4),z(1),z(3),dyz(2,1), + ld2yzz,d2yzz,z(2),z(4),.FALSE.,x00,iepz(1),ier) else if ( .not. ( dwz(2,1).eq.0 .and. iepz(1).eq.iepw(2) ) ) + call ffdcxr(cs3( 1),ipi12(1),y(2),y(4),z(1),z(3), + z(2),z(4),d2yzz,w(2),w(4),w(1),w(3),d2yww, + dyz(2,1),dwy(2,2),dwz(2,1),iepz(1),iepw(2),ier) endif * #] zm and wp: * #[ zp and wm: if ( isoort(2) .eq. 0 ) then call ffcxr(cs3(1),ipi12(1),y(2),y(4),w(1),w(3),-dwy(1,2), + ld2yww,d2yww,w(2),w(4),.FALSE.,x00,iepw(1),ier) else if ( .not. ( dwz(1,2).eq.0 .and. iepz(2).eq.iepw(1) ) ) + call ffdcxr(cs3(21),ipi12(3),y(2),y(4),z(2),z(4), + z(1),z(3),d2yzz,w(1),w(3),w(2),w(4),d2yww, + dyz(2,2),dwy(1,2),dwz(1,2),iepz(2),iepw(1),ier) endif * #] zp and wm: *###] ffcxs4: end *###[ ffcs4: subroutine ffcs4(cs3,ipi12,cw,cy,cz,cdwy,cdwz,cdyz,cd2yww,cd2yzz + ,cpi,cpiDpj,cp2p,ii,ns,isoort,ier) ***#[*comment:*********************************************************** * * * Calculate the 8 Spence functions = 4 R's = 2 dR's * * * * * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ipi12(4),ii,ns,isoort(4),ier DOUBLE COMPLEX cs3(40) DOUBLE COMPLEX cw(4),cy(4),cz(4),cdwy(2,2),cdwz(2,2),cdyz(2,2) DOUBLE COMPLEX cd2yww,cd2yzz,cpi(ns),cp2p,cpiDpj(ns,ns) * * local variables: * logical ld2yzz,ld2yww integer i,j,ip,iepz(2),iepw(2),nz(4),nw(4),ntot,i2pi DOUBLE COMPLEX c,cc,clogy,c2y1,cdyw(2,2) DOUBLE COMPLEX zfflo1,zfflog DOUBLE PRECISION absc external zfflo1,zfflog * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ get counters: ip = ii+3 if ( isoort(2) .eq. 0 ) then ld2yzz = .FALSE. else ld2yzz = .TRUE. endif if ( isoort(4) .eq. 0 ) then ld2yww = .FALSE. else ld2yww = .TRUE. endif call ffieps(iepz,cz,cpi(ip),cpiDpj(ip,ii),isoort) call ffieps(iepw,cw,cp2p,cpiDpj(ip,ii),isoort(3)) if ( isoort(4) .eq. 0 ) then print *,'ffcs4: error: case not implemented' ier = ier + 50 endif * #] get counters: * #[ R's: if ( isoort(4) .eq. 0 ) then call ffcrr(cs3(1),ipi12(1),cy(2),cy(4),cz(1),cz(3),cdyz(2,1) + ,ld2yzz,cd2yzz,cz(2),cz(4),isoort(4),iepz(1),ier) else if ( .not. ( cdwz(2,1).eq.0 .and. iepz(1).eq.iepw(2) ) ) + call ffdcrr(cs3( 1),ipi12(1),cy(2),cy(4),cz(1),cz(3),cz(2), + cz(4),cd2yzz,cw(2),cw(4),cw(1),cw(3),cd2yww,cdyz(2,1), + cdwy(2,2),cdwz(2,1),isoort(4),iepz(1),iepw(2),ier) endif if ( isoort(2) .eq. 0 ) then call ffcrr(cs3(1),ipi12(1),cy(2),cy(4),cw(1),cw(3),-cdwy(1,2 + ),ld2yww,cd2yww,cw(2),cw(4),isoort(2),iepw(1),ier) else if ( .not. ( cdwz(1,2).eq.0 .and. iepz(2).eq.iepw(1) ) ) + call ffdcrr(cs3(21),ipi12(3),cy(2),cy(4),cz(2),cz(4),cz(1), + cz(3),cd2yzz,cw(1),cw(3),cw(2),cw(4),cd2yww,cdyz(2,2), + cdwy(1,2),cdwz(1,2),iepz(2),isoort(2),iepw(1),ier) endif * #] R's: * #[ eta's: if ( DIMAG(cpi(ip)) .eq. 0 ) then call ffgeta(nz,cz,cdyz, + cpi(ip),cpiDpj(ii,ip),iepz,isoort,ier) do 120 i=1,2 do 110 j=1,2 cdyw(i,j) = cdwy(j,i) 110 continue 120 continue call ffgeta(nw,cw,cdyw, + cp2p,cpiDpj(ii,ip),iepw,isoort(3),ier) else print *,'ffcs4: error: not ready for complex D0 yet' endif ntot = nz(1)+nz(2)+nz(3)+nz(4)-nw(1)-nw(2)-nw(3)-nw(4) if ( ntot .ne. 0 ) then i2pi = 0 if ( 1/absc(cy(2)) .lt. xloss ) then clogy = zfflo1(1/cy(2),ier) else c = -cy(4)/cy(2) if ( DBLE(c) .gt. -abs(DIMAG(c)) ) then clogy = zfflog(c,0,czero,ier) else * take out the factor 2*pi^2 cc = c+1 if ( absc(cc) .lt. xloss ) then c2y1 = -cd2yzz - cz(1) + cz(4) if ( absc(c2y1) .lt. xloss*max(absc(cz(1)), + absc(cz(4))) ) then c2y1 = -cd2yzz - cz(2) + cz(3) endif clogy = zfflo1(-c2y1/cy(2),ier) else clogy = zfflog(-c,0,czero,ier) endif if ( DIMAG(c) .lt. 0 ) then i2pi = -1 elseif ( DIMAG(c) .gt. 0 ) then i2pi = +1 else call fferr(51,ier) i2pi = 0 endif ipi12(2) = ipi12(2) - ntot*24*i2pi endif endif if ( cs3(40) .ne. 0 ) print *,'ffcs4: error: cs3(40) != 0' cs3(40) = ntot*c2ipi*clogy endif * #] eta's: *###] ffcs4: end *###[ ffdcxr: subroutine ffdcxr(cs3,ipi12,y,y1,z,z1,zp,zp1,d2yzz, + w,w1,wp,wp1,d2yww,dyz,dwy,dwz,iepsz,iepsw,ier) ***#[*comment:*********************************************************** * * * Calculate * * * * R(y,z,iepsz) - R(y,w,iepsw) * * * * Input: * * a = [yzw] (real) see definition * * a1 = 1 - a (real) * * dab = a - b (real) * * ieps[zw] (integer) sign of imaginary part * * of argument logarithm * * cs3(20) (complex) assumed zero * * * * Output: * * cs3(20) (complex) the results, not added * * ipi12(2) (integer) factors pi^2/12 * * * * Calls: ffcxr * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ipi12(2),iepsz,iepsw,ier DOUBLE COMPLEX cs3(20) DOUBLE PRECISION y,z,w,y1,z1,w1,dyz,dwy,dwz,zp,zp1,d2yzz,wp,wp1, + d2yww * * local variables: * integer i,ieps logical again DOUBLE PRECISION yy,yy1,zz,zz1,dyyzz,xx1,xx1n,term,tot,d2,d3, + d21,d31,d2n,d3n,d21n1,d31n1,dw,x00(3) DOUBLE COMPLEX chulp DOUBLE PRECISION dfflo1 external dfflo1 * * common blocks * #include "ff.h" * #] declarations: * #[ groundwork: if ( dwz .eq. 0 .and. iepsz .eq. iepsw ) return if ( dyz .eq. 0 ) then call fferr(75,ier) return endif xx1 = y/dyz dw = dwz/dyz if ( xx1 .le. .5D0 .or. xx1 .gt. 2 ) then d2 = 1/y dw = dw*y/w else d2 = 1/z1 endif again = .FALSE. 123 continue * #] groundwork: * #[ trivial case: if ( dw .eq. 0 ) then * #] trivial case: * #[ normal case: elseif ( abs(dw) .gt. xloss .or. again ) then * nothing's the matter call ffcxr(cs3( 1),ipi12(1),y,y1,z,z1,dyz, + .TRUE.,d2yzz,zp,zp1,.FALSE.,x00,iepsz,ier) call ffcxr(cs3(11),ipi12(2),y,y1,w,w1,-dwy, + .TRUE.,d2yww,wp,wp1,.FALSE.,x00,iepsw,ier) do 10 i=11,20 10 cs3(i) = -cs3(i) ipi12(2) = -ipi12(2) * #] normal case: * #[ only cancellations in w, not in y: elseif ( abs(d2) .gt. xloss ) then * there are no cancellations the other way: if ( iepsz .ne. iepsw .and. ( y/dyz .gt. 1 .or.-y/dwy .gt. + 1 ) ) then again = .TRUE. goto 123 endif yy = dwy/dwz zz = yy*z/y yy1 = dyz/dwz zz1 = yy1*w/y dyyzz = yy*dyz/y if ( y .lt. 0 ) then ieps = iepsz else ieps = -iepsz endif call ffcxr(cs3( 1),ipi12(1),yy,yy1,zz,zz1,dyyzz,.FALSE., + 0D0,0D0,0D0,.FALSE.,x00,2*ieps,ier) zz = yy*z1/y1 zz1 = yy1*w1/y1 dyyzz = -yy*dyz/y1 if ( y1 .gt. 0 ) then ieps = iepsz else ieps = -iepsz endif call ffcxr(cs3(11),ipi12(2),yy,yy1,zz,zz1,dyyzz,.FALSE., + 0D0,0D0,0D0,.FALSE.,x00,2*ieps,ier) do 20 i=11,20 cs3(i) = -cs3(i) 20 continue ipi12(2) = -ipi12(2) * #] only cancellations in w, not in y: * #[ Hill identity: elseif ( ( 1 .gt. xloss*abs(y) .or. abs(xx1) .gt. xloss ) + .and. ( 1 .gt. xloss*abs(z) .or. abs(z/dyz) .gt. xloss ) + .and. ( 1 .gt. xloss*abs(y) .or. abs(dyz/y) .gt. xloss ) + ) then * do a Hill identity on the y,y-1 direction yy = -y*w1/dwy yy1 = w*y1/dwy zz = -z*w1/dwz zz1 = w*z1/dwz dyyzz = -w*w1*(dyz/(dwy*dwz)) if ( y*dwz .gt. 0 .eqv. (y+dwz) .gt. 0 ) then ieps = 2*iepsw else ieps = -2*iepsw endif call ffcxr(cs3( 1),ipi12(1),yy,yy1,zz,zz1,dyyzz,.FALSE., + 0D0,0D0,0D0,.FALSE.,x00,ieps,ier) yy = w1 yy1 = w zz = -w1*z/dwz zz1 = w*z1/dwz dyyzz = w*w1/dwz call ffcxr(cs3( 9),ipi12(2),yy,yy1,zz,zz1,dyyzz,.FALSE., + 0D0,0D0,0D0,.FALSE.,x00,ieps,ier) do 30 i=9,16 30 cs3(i) = -cs3(i) ipi12(2) = -ipi12(2) * the extra logarithms ... if ( 1 .lt. xloss*abs(w) ) then chulp = dfflo1(1/w,ier) elseif ( w1 .lt. 0 .or. w .lt. 0 ) then chulp = log(-w1/w) else chulp = DCMPLX(DBLE(log(w1/w)),DBLE(-iepsw*pi)) endif cs3(20) = -DBLE(dfflo1(dwz/dwy,ier))*chulp * #] Hill identity: * #[ Taylor expansion: elseif ( (w.lt.0..or.w1.lt.0) .and. (z.lt.0..or.z1.lt.0) ) then * do a Taylor expansion if ( abs(xx1) .lt. xloss ) then d3 = dwz/dwy xx1n = xx1 d2n = d2 d3n = d3 d21 = 1-d2 d21n1 = 1 d31 = 1-d3 d31n1 = 1 tot = xx1*d2*d3 do 50 i=2,20 xx1n = xx1n*xx1 d21n1 = d21n1*d21 d31n1 = d31n1*d31 d2n = d2n + d2*d21n1 d3n = d3n + d3*d31n1 term = xx1n*d2n*d3n*xn2inv(i) tot = tot + term if ( abs(term) .le. precx*abs(tot) ) goto 51 50 continue 51 continue cs3(1) = tot elseif ( abs(z/dyz) .lt. xloss ) then call ffcxr(cs3( 1),ipi12(1),y,y1,z,z1,dyz, + .TRUE.,d2yzz,zp,zp1,.FALSE.,x00,iepsz,ier) call ffcxr(cs3(11),ipi12(2),y,y1,w,w1,-dwy, + .TRUE.,d2yww,wp,wp1,.FALSE.,x00,iepsw,ier) do 110 i=11,20 110 cs3(i) = -cs3(i) else call fferr(22,ier) return endif else call ffcxr(cs3( 1),ipi12(1),y,y1,z,z1,dyz,.FALSE., + 0D0,0D0,0D0,.FALSE.,x00,iepsz,ier) call ffcxr(cs3(11),ipi12(2),y,y1,w,w1,-dwy,.FALSE., + 0D0,0D0,0D0,.FALSE.,x00,iepsw,ier) do 40 i=11,20 40 cs3(i) = -cs3(i) ipi12(2) = -ipi12(2) endif * #] Taylor expansion: *###] ffdcxr: end *###[ ffdcrr: subroutine ffdcrr(cs3,ipi12,cy,cy1,cz,cz1,czp,czp1,cd2yzz,cw,cw1 + ,cwp,cwp1,cd2yww,cdyz,cdwy,cdwz,isoort,iepsz,iepsw,ier) ***#[*comment:*********************************************************** * * * Calculate * * * * R(cy,cz,iepsz) - R(cy,cw,iepsw) * * * * Input: * * a = [yzw] (real) see definition * * a1 = 1 - a (real) * * dab = a - b (real) * * ieps[zw] (integer) sign of imaginary part * * of argument logarithm * * cs3(20) (complex) assumed zero * * * * Output: * * cs3(20) (complex) the results, not added * * ipi12(2) (integer) factors pi^2/12 * * * * Calls: ffcrr * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ipi12(2),isoort,iepsz,iepsw,ier DOUBLE COMPLEX cs3(20) DOUBLE COMPLEX cy,cz,czp,cw,cwp,cy1,cz1,czp1,cw1,cwp1, + cdyz,cdwy,cdwz,cd2yzz,cd2yww * * local variables: * integer i,ieps,ieps1,ieps2, + nffeta,nffet1,n1,n2,n3,n4,n5,n6 logical ld2yyz DOUBLE COMPLEX cyy,cyy1,czz,czz1,cdyyzz,chulp,zfflo1,zfflog, + cc1,cdw,cc1n,cterm,ctot,cd2,cd3, + cd21,cd31,cd2n,cd3n,cd21n1,cd31n1, + cc2,cfactz,cfactw,czzp,czzp1,cd2yyz DOUBLE COMPLEX c DOUBLE PRECISION absc external nffeta,nffet1,zfflo1,zfflog * * common blocks * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ groundwork: if ( cdwz .eq. 0 ) then if ( abs(DIMAG(cz)) .gt. precc*abs(DBLE(cz)) .or. + iepsz .eq. iepsw ) return if ( DBLE(cz) .ge. 0 .and. DBLE(cz1) .ge. 0 ) return call fferr(76,ier) return endif if ( cdyz .eq. 0 ) then call fferr(77,ier) return endif cc1 = cy/cdyz cdw = cdwz/cdyz if ( DBLE(cc1) .le. .5D0 .or. abs(cc1-1) .gt. 1 ) then cd2 = 1/cy cdw = cdw*cy/cw else cd2 = 1/cz1 endif * #] groundwork: * #[ trivial case: if ( absc(cdw) .eq. 0 ) then * #] trivial case: * #[ normal case: * * if no cancellations are expected OR the imaginary signs differ * and are significant * elseif ( absc(cdw) .gt. xloss .or. (iepsz.ne.iepsw .and. + (DBLE(cy/cdyz).gt.1 .or. DBLE(-cy1/cdyz).gt.1) ) ) then * nothing's the matter * special case to avoid bug found 15-oct=1995 if ( iepsz.eq.iepsw ) then if ( DIMAG(cz).eq.0 .and. DIMAG(cz1).eq.0 ) then print *,'ffdcrr: flipping sign iepsz' iepsz = -iepsz elseif ( DIMAG(cw).eq.0 .and. DIMAG(cw1).eq.0 ) then print *,'ffdcrr: flipping sign iepsw' iepsw = -iepsw else print *,'ffdcrr: error: missing eta terms!' ier = ier + 100 endif endif call ffcrr(cs3(1),ipi12(1),cy,cy1,cz,cz1,cdyz,.TRUE., + cd2yzz,czp,czp1,isoort,iepsz,ier) call ffcrr(cs3(8),ipi12(2),cy,cy1,cw,cw1,-cdwy,.TRUE., + cd2yww,cwp,cwp1,isoort,iepsw,ier) do 10 i=8,14 cs3(i) = -cs3(i) 10 continue ipi12(2) = -ipi12(2) * #] normal case: * #[ only cancellations in cw, not in cy: elseif ( absc(cd2) .gt. xloss ) then * there are no cancellations the other way: cyy = cdwy/cdwz czz = cz*cyy/cy cyy1 = cdyz/cdwz czz1 = cyy1*cw/cy cdyyzz = cdyz*cyy/cy if ( DBLE(cy) .gt. 0 ) then ieps1 = -3*iepsz else ieps1 = +3*iepsz endif * Often 2y-z-z is relevant, but 2*yy-zz-zz is not, solve by * introducing zzp. czzp = czp*cyy/cy cd2yyz = cd2yzz*cyy/cy czzp1 = 1 - czzp if ( absc(czzp1) .lt. xloss ) then * later try more possibilities ld2yyz = .FALSE. else ld2yyz = .TRUE. endif call ffcrr(cs3(1),ipi12(1),cyy,cyy1,czz,czz1,cdyyzz, + ld2yyz,cd2yyz,czzp,czzp1,isoort,ieps1,ier) czz = cyy*cz1/cy1 czz1 = cyy1*cw1/cy1 if ( DBLE(-cy1) .gt. 0 ) then ieps2 = -3*iepsz else ieps2 = +3*iepsz endif cdyyzz = -cyy*cdyz/cy1 czzp = czp1*cyy/cy1 cd2yyz = -cd2yzz*cyy/cy1 czzp1 = 1 - czzp if ( absc(czzp1) .lt. xloss ) then * later try more possibilities ld2yyz = .FALSE. else ld2yyz = .TRUE. endif call ffcrr(cs3(8),ipi12(2),cyy,cyy1,czz,czz1,cdyyzz, + .TRUE.,cd2yyz,czzp,czzp1,isoort,ieps2,ier) do 20 i=8,14 cs3(i) = -cs3(i) 20 continue ipi12(2) = -ipi12(2) * eta terms (are not calculated in ffcrr as ieps = 3) cfactz = 1/cdyz if ( DIMAG(cz) .eq. 0 ) then if ( DIMAG(cy) .eq. 0 ) then n1 = 0 n2 = 0 else n1 = nffet1(DCMPLX(DBLE(0),DBLE(iepsz)),cfactz, + -cz*cfactz,ier) n2 = nffet1(DCMPLX(DBLE(0),DBLE(iepsz)),cfactz, + cz1*cfactz,ier) endif else n1 = nffeta(-cz,cfactz,ier) n2 = nffeta(cz1,cfactz,ier) endif cfactw = -1/cdwy if ( DIMAG(cw) .eq. 0 ) then if ( DIMAG(cy) .eq. 0 ) then n4 = 0 n5 = 0 else n4 = nffet1(DCMPLX(DBLE(0),DBLE(iepsw)),cfactw, + -cw*cfactw,ier) n5 = nffet1(DCMPLX(DBLE(0),DBLE(iepsw)),cfactw, + cw1*cfactw,ier) endif else n4 = nffeta(-cw,cfactw,ier) n5 = nffeta(cw1,cfactw,ier) endif * * we assume that cs3(15-17) are not used, this is always true * n3 = 0 n6 = 0 if ( n1.eq.n4 ) then if ( n1.eq.0 ) then * nothing to do else cc1 = cdwz/cdyz if ( absc(cc1) .lt. xloss ) then cs3(15) = n1*c2ipi*zfflo1(cc1,ier) else cc1 = -cdwy/cdyz cs3(15) = n1*c2ipi*zfflog(cc1,0,czero,ier) endif cc1 = cy*cfactz cc2 = cy*cfactw if ( DIMAG(cc1).eq.0 .or. DIMAG(cc2).eq.0 ) then n3 = 0 else n3 = nffeta(cc1,1/cc2,ier) endif if ( n3.ne.0 ) then print *,'ffdcrr: error: untested algorithm' ier = ier + 50 ipi12(1) = ipi12(1) + 4*12*n1*n3 endif endif else cc1 = cy*cfactz cc2 = cy*cfactw cs3(15) = (n1*zfflog(cc1,ieps1,czero,ier) + + n4*zfflog(cc2,ieps1,czero,ier))*c2ipi endif if ( n2.eq.n5 ) then if ( n2.eq.0 ) then * nothing to do else cc1 = cdwz/cdyz if ( absc(cc1) .lt. xloss ) then cs3(16) = n2*c2ipi*zfflo1(cc1,ier) else cc1 = -cdwy/cdyz cs3(16) = n2*c2ipi*zfflog(cc1,0,czero,ier) endif cc1 = -cy1*cfactz cc2 = -cy1*cfactw if ( DIMAG(cc1).eq.0 .or. DIMAG(cc2).eq.0 ) then n6 = 0 else n6 = nffeta(cc1,1/cc2,ier) endif if ( n6.ne.0 ) then print *,'ffdcrr: error: untested algorithm' ier = ier + 50 ipi12(2) = ipi12(2) + 4*12*n2*n6 endif endif else cc1 = -cy1*cfactz cc2 = -cy1*cfactw cs3(15) = (n2*zfflog(cc1,ieps2,czero,ier) + + n5*zfflog(cc2,ieps2,czero,ier))*c2ipi endif * #] only cancellations in cw, not in cy: * #[ Hill identity: elseif ( ( 1.gt.xloss*absc(cy) .or. absc(cc1).gt.xloss ) + .and. ( 1.gt.xloss*absc(cz) .or. absc(cz/cdyz).gt.xloss ) + .and. ( 1.gt.xloss*absc(cy) .or. absc(cdyz/cy).gt.xloss ) + ) then * do a Hill identity on the cy,cy-1 direction cyy = -cy*cw1/cdwy cyy1 = cw*cy1/cdwy czz = -cz*cw1/cdwz czz1 = cw*cz1/cdwz cdyyzz = -cw*cw1*(cdyz/(cdwy*cdwz)) ieps = -2*iepsz call ffcrr(cs3(1),ipi12(1),cyy,cyy1,czz,czz1,cdyyzz, + .FALSE.,czero,czero,czero,isoort,ieps,ier) cyy = cw1 cyy1 = cw czz = -cw1*cz/cdwz czz1 = cw*cz1/cdwz cdyyzz = cw*cw1/cdwz call ffcrr(cs3(8),ipi12(2),cyy,cyy1,czz,czz1,cdyyzz, + .FALSE.,czero,czero,czero,isoort,0,ier) do 30 i=8,14 30 cs3(i) = -cs3(i) ipi12(2) = -ipi12(2) * the extra logarithms ... if ( 1 .lt. xloss*absc(cw) ) then chulp = zfflo1(1/cw,ier) else chulp = zfflog(-cw1/cw,0,czero,ier) endif cs3(15) = -zfflo1(cdwz/cdwy,ier)*chulp * #] Hill identity: * #[ Taylor expansion: else * Do a Taylor expansion if ( absc(cc1) .lt. xloss ) then cd3 = cdwz/cdwy * isign = 1 cc1n = cc1 cd2n = cd2 cd3n = cd3 cd21 = 1-cd2 cd21n1 = 1 cd31 = 1-cd3 cd31n1 = 1 ctot = cc1*cd2*cd3 do 50 i=2,20 cc1n = cc1n*cc1 cd21n1 = cd21n1*cd21 cd31n1 = cd31n1*cd31 cd2n = cd2n + cd2*cd21n1 cd3n = cd3n + cd3*cd31n1 cterm = cc1n*cd2n*cd3n*DBLE(xn2inv(i)) ctot = ctot + cterm if ( absc(cterm) .lt. precc*absc(ctot) ) goto 51 50 continue 51 continue cs3(1) = ctot elseif ( absc(cz/cdyz) .lt. xloss ) then call ffcrr(cs3(1),ipi12(1),cy,cy1,cz,cz1,cdyz,.TRUE., + cd2yzz,czp,czp1,isoort,iepsz,ier) call ffcrr(cs3(8),ipi12(2),cy,cy1,cw,cw1,-cdwy,.TRUE., + cd2yww,cwp,cwp1,isoort,iepsw,ier) do 110 i=8,14 110 cs3(i) = -cs3(i) ipi12(2) = -ipi12(2) else call fferr(20,ier) return endif endif * #] Taylor expansion: *###] ffdcrr: end herwig++-2.6.0.orig/Looptools/Makefile.am0000644000175000017500000000576511754474774021042 0ustar sylvestresylvestrenoinst_LTLIBRARIES = libHwLooptoolsXFC.la libHwLooptoolsCFC.la noinst_LTLIBRARIES += libHwLooptools.la EXTRA_DIST = include/lt.h include/ftypes.h include/ff.h include/ffwarn.h \ include/fferr.h include/defs.h include/looptools.h include/ffperm5.h \ include/clooptools.h include/cexternals.h include/externals.h \ util/solve-LU.F util/solve-LU.h util/solve-Eigen.F theXFCSOURCES = \ A/A0.F A/A00.F A/ffxa0.F A/ffca0.F B/Bget.F \ B/Bcoeff.F B/BcoeffC.F B/Bcoeffa.F B/Bcoeffb.F B/ffxb0.F \ B/ffcb0.F B/ffxb1.F B/ffcb1.F B/ffxb2p.F B/ffcb2p.F \ B/ffxdb0.F B/ffcdb0.F B/ffxdb1.F B/ffdel2.F B/ffcel2.F \ C/C0.F C/C0C.F C/Cget.F C/ffxc0.F C/ffcc0.F \ C/ffxc0i.F C/ffxc0p.F C/ffxc0p0.F C/ffcc0p.F C/ffdxc0.F \ C/ffdel3.F C/ffcel3.F D/D0.F D/D0C.F D/Dget.F \ D/ffxd0.F D/ffxd0h.F D/ffxd0i.F D/ffxd0p.F D/ffxd0m0.F \ D/ffxd0tra.F D/ffxdbd.F D/ffdcc0.F D/ffdel4.F D/ffd0c.F \ D/ffTn.F D/ffT13.F D/ffS2.F D/ffS3n.F D/ffRn.F \ E/E0.F E/Eget.F E/Ecoeffa.F E/Ecoeffb.F E/ffxe0.F \ E/ffdel5.F util/ini.F util/auxCD.F util/solve.F util/Dump.F \ util/Li2.F util/ffinit.F util/ffxli2.F util/ffcli2.F util/ffxxyz.F \ util/ffcxyz.F util/ffcrr.F util/ffcxr.F util/fftran.F util/ffabcd.F \ util/ff2dl2.F util/ffcxs3.F util/ffcxs4.F util/ffdcxs.F util/ffbndc.F ## the following need -DCOMPLEXPARA theCFCSOURCES = \ A/A0.F A/A00.F B/Bget.F B/Bcoeffa.F C/Cget.F D/Dget.F E/E0.F \ E/Eget.F E/Ecoeffa.F E/Ecoeffb.F util/solve.F util/Dump.F util/Li2.F commonCPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/include libHwLooptoolsXFC_la_SOURCES = $(theXFCSOURCES) libHwLooptoolsXFC_la_CPPFLAGS = $(commonCPPFLAGS) libHwLooptoolsXFC_la_FCFLAGS = $(AM_FCFLAGS) -ffixed-line-length-none libHwLooptoolsXFC_la_FFLAGS = $(AM_FFLAGS) -ffixed-line-length-none libHwLooptoolsCFC_la_SOURCES = $(theCFCSOURCES) libHwLooptoolsCFC_la_CPPFLAGS = $(commonCPPFLAGS) -DCOMPLEXPARA libHwLooptoolsCFC_la_FCFLAGS = $(AM_FCFLAGS) -ffixed-line-length-none libHwLooptoolsCFC_la_FFLAGS = $(AM_FFLAGS) -ffixed-line-length-none ## installed already from "include/Makefile.am" ## noinst_HEADERS = include/clooptools.h ##if NEED_APPLE_FIXES ##libHwLooptoolsXFC_la_LDFLAGS = -Wl,-single_module ##libHwLooptoolsCFC_la_LDFLAGS = -Wl,-single_module ##endif libHwLooptools_la_SOURCES = util/cache.c clooptools.cc libHwLooptools_la_CXXFLAGS = $(AM_CXXFLAGS) -Wno-strict-aliasing libHwLooptools_la_CPPFLAGS = $(commonCPPFLAGS) libHwLooptools_la_CFLAGS = $(AM_CFLAGS) -std=c99 libHwLooptools_la_LIBADD = libHwLooptoolsXFC.la libHwLooptoolsCFC.la ## libHwLooptoolsHelper2_la_SOURCES = clooptools.cc EXTRA_PROGRAMS = tester tester_SOURCES = tester.cc tester_LDADD = libHwLooptools.la $(FCLIBS) $(THEPEGLDFLAGS) $(THEPEGLIB) herwig++-2.6.0.orig/Looptools/E/0000755000175000017500000000000011756464211017140 5ustar sylvestresylvestreherwig++-2.6.0.orig/Looptools/E/Ecoeffb.F0000644000175000017500000004140411754474774020620 0ustar sylvestresylvestre* Ecoeffb.F * the five-point tensor coefficients via Passarino-Veltman decomposition * this file is part of LoopTools * written by M. Rauch * last modified 29 Sep 10 th #include "defs.h" subroutine XEcoeffb(para, E, ldpara) implicit none integer ldpara DVAR para(ldpara,Pee) double complex E(Nee) #include "lt.h" integer XDget double complex XE0 external XDget, XE0 DVAR p1, p2, p3, p4, p5 DVAR p1p2, p2p3, p3p4, p4p5, p5p1 DVAR m1, m2, m3, m4, m5 DVAR f1, f2, f3, f4 double complex di, d0sum double complex d1i, d1sum, d2i, d2sum, dii double complex d1ii, d2ii, diii double complex d00sum, d22sum, d33sum double complex in(4) integer Di1, Di2, Di3, Di4, Di5 logical dump QVAR G(4,4), Ginv(4,4) common /XInvGramE/ Ginv #ifdef SOLVE_EIGEN #define SOLVE_SETUP XInverse(4, G,4, Ginv,4) #define SOLVE(b) XSolve(4, G,4, Ginv,4, b) #else integer perm(4) #define IN(i) in(perm(i)) #define SOLVE_SETUP XInverse(4, G,4, Ginv,4, perm) #define SOLVE(b) XSolve(4, G,4, b) #endif p1 = para(1,1) p2 = para(1,2) p3 = para(1,3) p4 = para(1,4) p5 = para(1,5) p1p2 = para(1,6) p2p3 = para(1,7) p3p4 = para(1,8) p4p5 = para(1,9) p5p1 = para(1,10) m1 = para(1,11) m2 = para(1,12) m3 = para(1,13) m4 = para(1,14) m5 = para(1,15) #ifdef COMPLEXPARA if( abs(DIMAG(para(1,1))) + & abs(DIMAG(para(1,2))) + & abs(DIMAG(para(1,3))) + & abs(DIMAG(para(1,4))) + & abs(DIMAG(para(1,5))) + & abs(DIMAG(para(1,6))) + & abs(DIMAG(para(1,7))) + & abs(DIMAG(para(1,8))) + & abs(DIMAG(para(1,9))) + & abs(DIMAG(para(1,10))) .gt. 0 ) & print *, "Warning: complex momenta not implemented" if( abs(DIMAG(para(1,11))) + & abs(DIMAG(para(1,12))) + & abs(DIMAG(para(1,13))) + & abs(DIMAG(para(1,14))) + & abs(DIMAG(para(1,15))) .eq. 0 ) then call Ecoeffb(para, E, 2) return endif #endif Di1 = XDget(p2, p3, p4, p5p1, p2p3, p3p4, m2, m3, m4, m5) Di2 = XDget(p1p2, p3, p4, p5, p4p5, p3p4, m1, m3, m4, m5) Di3 = XDget(p1, p2p3, p4, p5, p4p5, p5p1, m1, m2, m4, m5) Di4 = XDget(p1, p2, p3p4, p5, p1p2, p5p1, m1, m2, m3, m5) Di5 = XDget(p1, p2, p3, p4p5, p1p2, p2p3, m1, m2, m3, m4) serial = serial + 1 dump = ibits(debugkey, DebugE, 1) .ne. 0 .and. & serial .ge. debugfrom .and. serial .le. debugto if( dump ) call XDumpPara(5, para, ldpara) f1 = QPREC(m2) - QPREC(m1) - QPREC(p1) f2 = QPREC(m3) - QPREC(m1) - QPREC(p1p2) f3 = QPREC(m4) - QPREC(m1) - QPREC(p4p5) f4 = QPREC(m5) - QPREC(m1) - QPREC(p5) * build up G and calculate matrix decomposition and inverse Y G(1,1) = 2*QPREC(p1) G(2,2) = 2*QPREC(p1p2) G(3,3) = 2*QPREC(p4p5) G(4,4) = 2*QPREC(p5) G(1,2) = QPREC(p1) + QPREC(p1p2) - QPREC(p2) G(2,1) = G(1,2) G(1,3) = QPREC(p1) - QPREC(p2p3) + QPREC(p4p5) G(3,1) = G(1,3) G(1,4) = QPREC(p1) - QPREC(p5p1) + QPREC(p5) G(4,1) = G(1,4) G(2,3) = QPREC(p1p2) - QPREC(p3) + QPREC(p4p5) G(3,2) = G(2,3) G(2,4) = QPREC(p1p2) - QPREC(p3p4) + QPREC(p5) G(4,2) = G(2,4) G(3,4) = QPREC(p5) + QPREC(p4p5) - QPREC(p4) G(4,3) = G(3,4) call SOLVE_SETUP di = Dval(dd1,Di1) + Dval(dd2,Di1) + Dval(dd3,Di1) d0sum = Dval(dd0,Di1) + di d1i = Dval(dd11,Di1) + Dval(dd12,Di1) + Dval(dd13,Di1) d1sum = Dval(dd1,Di1) + d1i d2i = Dval(dd12,Di1) + Dval(dd22,Di1) + Dval(dd23,Di1) d2sum = Dval(dd2,Di1) + d2i dii = d1i + d2i + & Dval(dd13,Di1) + Dval(dd23,Di1) + Dval(dd33,Di1) d1ii = Dval(dd111,Di1) + Dval(dd122,Di1) + & Dval(dd133,Di1) + 2*(Dval(dd112,Di1) + & Dval(dd113,Di1) + Dval(dd123,Di1)) d2ii = Dval(dd112,Di1) + Dval(dd222,Di1) + & Dval(dd233,Di1) + 2*(Dval(dd122,Di1) + & Dval(dd123,Di1) + Dval(dd223,Di1)) diii = d1ii + d2ii + & Dval(dd113,Di1) + Dval(dd223,Di1) + & Dval(dd333,Di1) + 2*(Dval(dd123,Di1) + & Dval(dd133,Di1) + Dval(dd233,Di1)) d00sum = Dval(dd00,Di1) + & Dval(dd001,Di1) + Dval(dd002,Di1) + Dval(dd003,Di1) d22sum = Dval(dd22,Di1) + & Dval(dd122,Di1) + Dval(dd222,Di1) + Dval(dd223,Di1) d33sum = Dval(dd33,Di1) + & Dval(dd133,Di1) + Dval(dd233,Di1) + Dval(dd333,Di1) E(ee0) = XE0(p1, p2, p3, p4, p5, & p1p2, p2p3, p3p4, p4p5, p5p1, m1, m2, m3, m4, m5) IN(1) = f1*E(ee0) - Dval(dd0,Di1) + Dval(dd0,Di2) IN(2) = f2*E(ee0) - Dval(dd0,Di1) + Dval(dd0,Di3) IN(3) = f3*E(ee0) - Dval(dd0,Di1) + Dval(dd0,Di4) IN(4) = f4*E(ee0) - Dval(dd0,Di1) + Dval(dd0,Di5) call SOLVE(in) E(ee1) = in(1) E(ee2) = in(2) E(ee3) = in(3) E(ee4) = in(4) E(ee00) = 0 IN(1) = f1*E(ee1) + d0sum IN(2) = f2*E(ee1) + d0sum + Dval(dd1,Di3) IN(3) = f3*E(ee1) + d0sum + Dval(dd1,Di4) IN(4) = f4*E(ee1) + d0sum + Dval(dd1,Di5) call SOLVE(in) E(ee11) = in(1) E(ee12) = in(2) E(ee13) = in(3) E(ee14) = in(4) IN(1) = f1*E(ee2) - Dval(dd1,Di1) + Dval(dd1,Di2) IN(2) = f2*E(ee2) - Dval(dd1,Di1) IN(3) = f3*E(ee2) - Dval(dd1,Di1) + Dval(dd2,Di4) IN(4) = f4*E(ee2) - Dval(dd1,Di1) + Dval(dd2,Di5) call SOLVE(in) E(ee12) = .5D0*(E(ee12) + in(1)) E(ee22) = in(2) E(ee23) = in(3) E(ee24) = in(4) IN(1) = f1*E(ee3) - Dval(dd2,Di1) + Dval(dd2,Di2) IN(2) = f2*E(ee3) - Dval(dd2,Di1) + Dval(dd2,Di3) IN(3) = f3*E(ee3) - Dval(dd2,Di1) IN(4) = f4*E(ee3) - Dval(dd2,Di1) + Dval(dd3,Di5) call SOLVE(in) E(ee13) = .5D0*(E(ee13) + in(1)) E(ee23) = .5D0*(E(ee23) + in(2)) E(ee33) = in(3) E(ee34) = in(4) IN(1) = f1*E(ee4) - Dval(dd3,Di1) + Dval(dd3,Di2) IN(2) = f2*E(ee4) - Dval(dd3,Di1) + Dval(dd3,Di3) IN(3) = f3*E(ee4) - Dval(dd3,Di1) + Dval(dd3,Di4) IN(4) = f4*E(ee4) - Dval(dd3,Di1) call SOLVE(in) E(ee14) = .5D0*(E(ee14) + in(1)) E(ee24) = .5D0*(E(ee24) + in(2)) E(ee34) = .5D0*(E(ee34) + in(3)) E(ee44) = in(4) E(ee001) = 0 E(ee002) = 0 E(ee003) = 0 E(ee004) = 0 d0sum = d0sum + di + dii IN(1) = f1*E(ee11) - d0sum - & 2*Ginv(1,1)*(Dval(dd00,Di1) - Dval(dd00,Di2)) IN(2) = f2*E(ee11) - d0sum + Dval(dd11,Di3) - & 2*Ginv(1,1)*(Dval(dd00,Di1) - Dval(dd00,Di3)) IN(3) = f3*E(ee11) - d0sum + Dval(dd11,Di4) - & 2*Ginv(1,1)*(Dval(dd00,Di1) - Dval(dd00,Di4)) IN(4) = f4*E(ee11) - d0sum + Dval(dd11,Di5) - & 2*Ginv(1,1)*(Dval(dd00,Di1) - Dval(dd00,Di5)) call SOLVE(in) E(ee111) = in(1) E(ee112) = in(2) E(ee113) = in(3) E(ee114) = in(4) IN(1) = f1*E(ee22) - Dval(dd11,Di1) + Dval(dd11,Di2) - & 2*Ginv(2,2)*(Dval(dd00,Di1) - Dval(dd00,Di2)) IN(2) = f2*E(ee22) - Dval(dd11,Di1) - & 2*Ginv(2,2)*(Dval(dd00,Di1) - Dval(dd00,Di3)) IN(3) = f3*E(ee22) - Dval(dd11,Di1) + Dval(dd22,Di4) - & 2*Ginv(2,2)*(Dval(dd00,Di1) - Dval(dd00,Di4)) IN(4) = f4*E(ee22) - Dval(dd11,Di1) + Dval(dd22,Di5) - & 2*Ginv(2,2)*(Dval(dd00,Di1) - Dval(dd00,Di5)) call SOLVE(in) E(ee122) = in(1) E(ee222) = in(2) E(ee223) = in(3) E(ee224) = in(4) IN(1) = f1*E(ee33) - Dval(dd22,Di1) + Dval(dd22,Di2) - & 2*Ginv(3,3)*(Dval(dd00,Di1) - Dval(dd00,Di2)) IN(2) = f2*E(ee33) - Dval(dd22,Di1) + Dval(dd22,Di3) - & 2*Ginv(3,3)*(Dval(dd00,Di1) - Dval(dd00,Di3)) IN(3) = f3*E(ee33) - Dval(dd22,Di1) - & 2*Ginv(3,3)*(Dval(dd00,Di1) - Dval(dd00,Di4)) IN(4) = f4*E(ee33) - Dval(dd22,Di1) + Dval(dd33,Di5) - & 2*Ginv(3,3)*(Dval(dd00,Di1) - Dval(dd00,Di5)) call SOLVE(in) E(ee133) = in(1) E(ee233) = in(2) E(ee333) = in(3) E(ee334) = in(4) IN(1) = f1*E(ee44) - Dval(dd33,Di1) + Dval(dd33,Di2) - & 2*Ginv(4,4)*(Dval(dd00,Di1) - Dval(dd00,Di2)) IN(2) = f2*E(ee44) - Dval(dd33,Di1) + Dval(dd33,Di3) - & 2*Ginv(4,4)*(Dval(dd00,Di1) - Dval(dd00,Di3)) IN(3) = f3*E(ee44) - Dval(dd33,Di1) + Dval(dd33,Di4) - & 2*Ginv(4,4)*(Dval(dd00,Di1) - Dval(dd00,Di4)) IN(4) = f4*E(ee44) - Dval(dd33,Di1) - & 2*Ginv(4,4)*(Dval(dd00,Di1) - Dval(dd00,Di5)) call SOLVE(in) E(ee144) = in(1) E(ee244) = in(2) E(ee344) = in(3) E(ee444) = in(4) IN(1) = f1*E(ee12) + d1sum - & 2*Ginv(1,2)*(Dval(dd00,Di1) - Dval(dd00,Di2)) IN(2) = f2*E(ee12) + d1sum - & 2*Ginv(1,2)*(Dval(dd00,Di1) - Dval(dd00,Di3)) IN(3) = f3*E(ee12) + d1sum + Dval(dd12,Di4) - & 2*Ginv(1,2)*(Dval(dd00,Di1) - Dval(dd00,Di4)) IN(4) = f4*E(ee12) + d1sum + Dval(dd12,Di5) - & 2*Ginv(1,2)*(Dval(dd00,Di1) - Dval(dd00,Di5)) call SOLVE(in) E(ee112) = .5D0*(E(ee112) + in(1)) E(ee122) = .5D0*(E(ee122) + in(2)) E(ee123) = in(3) E(ee124) = in(4) IN(1) = f1*E(ee34) - Dval(dd23,Di1) + Dval(dd23,Di2) - & 2*Ginv(3,4)*(Dval(dd00,Di1) - Dval(dd00,Di2)) IN(2) = f2*E(ee34) - Dval(dd23,Di1) + Dval(dd23,Di3) - & 2*Ginv(3,4)*(Dval(dd00,Di1) - Dval(dd00,Di3)) IN(3) = f3*E(ee34) - Dval(dd23,Di1) - & 2*Ginv(3,4)*(Dval(dd00,Di1) - Dval(dd00,Di4)) IN(4) = f4*E(ee34) - Dval(dd23,Di1) - & 2*Ginv(3,4)*(Dval(dd00,Di1) - Dval(dd00,Di5)) call SOLVE(in) E(ee134) = in(1) E(ee234) = in(2) E(ee334) = .5D0*(E(ee334) + in(3)) E(ee344) = .5D0*(E(ee344) + in(4)) E(ee0000) = 0 E(ee0011) = 0 E(ee0012) = 0 E(ee0013) = 0 E(ee0014) = 0 E(ee0022) = 0 E(ee0023) = 0 E(ee0024) = 0 E(ee0033) = 0 E(ee0034) = 0 E(ee0044) = 0 d0sum = d0sum + di + 2*dii + diii IN(1) = f1*E(ee111) + d0sum + & 6*Ginv(1,1)*d00sum IN(2) = f2*E(ee111) + d0sum + Dval(dd111,Di3) + & 6*Ginv(1,1)*(d00sum + Dval(dd001,Di3)) IN(3) = f3*E(ee111) + d0sum + Dval(dd111,Di4) + & 6*Ginv(1,1)*(d00sum + Dval(dd001,Di4)) IN(4) = f4*E(ee111) + d0sum + Dval(dd111,Di5) + & 6*Ginv(1,1)*(d00sum + Dval(dd001,Di5)) call SOLVE(in) E(ee1111) = in(1) E(ee1112) = in(2) E(ee1113) = in(3) E(ee1114) = in(4) IN(1) = f1*E(ee222) - Dval(dd111,Di1) + Dval(dd111,Di2) - & 6*Ginv(2,2)*(Dval(dd001,Di1) - Dval(dd001,Di2)) IN(2) = f2*E(ee222) - Dval(dd111,Di1) - & 6*Ginv(2,2)*Dval(dd001,Di1) IN(3) = f3*E(ee222) - Dval(dd111,Di1) + Dval(dd222,Di4) - & 6*Ginv(2,2)*(Dval(dd001,Di1) - Dval(dd002,Di4)) IN(4) = f4*E(ee222) - Dval(dd111,Di1) + Dval(dd222,Di5) - & 6*Ginv(2,2)*(Dval(dd001,Di1) - Dval(dd002,Di5)) call SOLVE(in) E(ee1222) = in(1) E(ee2222) = in(2) E(ee2223) = in(3) E(ee2224) = in(4) IN(1) = f1*E(ee333) - Dval(dd222,Di1) + Dval(dd222,Di2) - & 6*Ginv(3,3)*(Dval(dd002,Di1) - Dval(dd002,Di2)) IN(2) = f2*E(ee333) - Dval(dd222,Di1) + Dval(dd222,Di3) - & 6*Ginv(3,3)*(Dval(dd002,Di1) - Dval(dd002,Di3)) IN(3) = f3*E(ee333) - Dval(dd222,Di1) - & 6*Ginv(3,3)*Dval(dd002,Di1) IN(4) = f4*E(ee333) - Dval(dd222,Di1) + Dval(dd333,Di5) - & 6*Ginv(3,3)*(Dval(dd002,Di1) - Dval(dd003,Di5)) call SOLVE(in) E(ee1333) = in(1) E(ee2333) = in(2) E(ee3333) = in(3) E(ee3334) = in(4) IN(1) = f1*E(ee444) - Dval(dd333,Di1) + Dval(dd333,Di2) - & 6*Ginv(4,4)*(Dval(dd003,Di1) - Dval(dd003,Di2)) IN(2) = f2*E(ee444) - Dval(dd333,Di1) + Dval(dd333,Di3) - & 6*Ginv(4,4)*(Dval(dd003,Di1) - Dval(dd003,Di3)) IN(3) = f3*E(ee444) - Dval(dd333,Di1) + Dval(dd333,Di4) - & 6*Ginv(4,4)*(Dval(dd003,Di1) - Dval(dd003,Di4)) IN(4) = f4*E(ee444) - Dval(dd333,Di1) - & 6*Ginv(4,4)*Dval(dd003,Di1) call SOLVE(in) E(ee1444) = in(1) E(ee2444) = in(2) E(ee3444) = in(3) E(ee4444) = in(4) d1sum = d1sum + d1i + d1ii IN(1) = f1*E(ee112) - d1sum - & 2*Ginv(1,1)*(Dval(dd001,Di1) - Dval(dd001,Di2)) + & 4*Ginv(1,2)*d00sum IN(2) = f2*E(ee112) - d1sum - & 2*Ginv(1,1)*Dval(dd001,Di1) + & 4*Ginv(1,2)*(d00sum + Dval(dd001,Di3)) IN(3) = f3*E(ee112) - d1sum + Dval(dd112,Di4) - & 2*Ginv(1,1)*(Dval(dd001,Di1) - Dval(dd002,Di4)) + & 4*Ginv(1,2)*(d00sum + Dval(dd001,Di4)) IN(4) = f4*E(ee112) - d1sum + Dval(dd112,Di5) - & 2*Ginv(1,1)*(Dval(dd001,Di1) - Dval(dd002,Di5)) + & 4*Ginv(1,2)*(d00sum + Dval(dd001,Di5)) call SOLVE(in) E(ee1112) = .5D0*(E(ee1112) + in(1)) E(ee1122) = in(2) E(ee1123) = in(3) E(ee1124) = in(4) IN(1) = f1*E(ee223) - Dval(dd112,Di1) + Dval(dd112,Di2) - & 2*Ginv(2,2)*(Dval(dd002,Di1) - Dval(dd002,Di2)) - & 4*Ginv(2,3)*(Dval(dd001,Di1) - Dval(dd001,Di2)) IN(2) = f2*E(ee223) - Dval(dd112,Di1) - & 2*Ginv(2,2)*(Dval(dd002,Di1) - Dval(dd002,Di3)) - & 4*Ginv(2,3)*Dval(dd001,Di1) IN(3) = f3*E(ee223) - Dval(dd112,Di1) - & 2*Ginv(2,2)*Dval(dd002,Di1) - & 4*Ginv(2,3)*(Dval(dd001,Di1) - Dval(dd002,Di4)) IN(4) = f4*E(ee223) - Dval(dd112,Di1) + Dval(dd223,Di5) - & 2*Ginv(2,2)*(Dval(dd002,Di1) - Dval(dd003,Di5)) - & 4*Ginv(2,3)*(Dval(dd001,Di1) - Dval(dd002,Di5)) call SOLVE(in) E(ee1223) = in(1) E(ee2223) = .5D0*(E(ee2223) + in(2)) E(ee2233) = in(3) E(ee2234) = in(4) IN(1) = f1*E(ee334) - Dval(dd223,Di1) + Dval(dd223,Di2) - & 2*Ginv(3,3)*(Dval(dd003,Di1) - Dval(dd003,Di2)) - & 4*Ginv(3,4)*(Dval(dd002,Di1) - Dval(dd002,Di2)) IN(2) = f2*E(ee334) - Dval(dd223,Di1) + Dval(dd223,Di3) - & 2*Ginv(3,3)*(Dval(dd003,Di1) - Dval(dd003,Di3)) - & 4*Ginv(3,4)*(Dval(dd002,Di1) - Dval(dd002,Di3)) IN(3) = f3*E(ee334) - Dval(dd223,Di1) - & 2*Ginv(3,3)*(Dval(dd003,Di1) - Dval(dd003,Di4)) - & 4*Ginv(3,4)*Dval(dd002,Di1) IN(4) = f4*E(ee334) - Dval(dd223,Di1) - & 2*Ginv(3,3)*Dval(dd003,Di1) - & 4*Ginv(3,4)*(Dval(dd002,Di1) - Dval(dd003,Di5)) call SOLVE(in) E(ee1334) = in(1) E(ee2334) = in(2) E(ee3334) = .5D0*(E(ee3334) + in(3)) E(ee3344) = in(4) IN(1) = f1*E(ee144) + d33sum - & 4*Ginv(1,4)*(Dval(dd003,Di1) - Dval(dd003,Di2)) + & 2*Ginv(4,4)*d00sum IN(2) = f2*E(ee144) + d33sum + Dval(dd133,Di3) - & 4*Ginv(1,4)*(Dval(dd003,Di1) - Dval(dd003,Di3)) + & 2*Ginv(4,4)*(d00sum + Dval(dd001,Di3)) IN(3) = f3*E(ee144) + d33sum + Dval(dd133,Di4) - & 4*Ginv(1,4)*(Dval(dd003,Di1) - Dval(dd003,Di4)) + & 2*Ginv(4,4)*(d00sum + Dval(dd001,Di4)) IN(4) = f4*E(ee144) + d33sum - & 4*Ginv(1,4)*Dval(dd003,Di1) + & 2*Ginv(4,4)*(d00sum + Dval(dd001,Di5)) call SOLVE(in) E(ee1144) = in(1) E(ee1244) = in(2) E(ee1344) = in(3) E(ee1444) = .5D0*(E(ee1444) + in(4)) d2sum = d2sum + d2i + d2ii IN(1) = f1*E(ee113) - d2sum - & 2*Ginv(1,1)*(Dval(dd002,Di1) - Dval(dd002,Di2)) + & 4*Ginv(1,3)*d00sum IN(2) = f2*E(ee113) - d2sum + Dval(dd112,Di3) - & 2*Ginv(1,1)*(Dval(dd002,Di1) - Dval(dd002,Di3)) + & 4*Ginv(1,3)*(d00sum + Dval(dd001,Di3)) IN(3) = f3*E(ee113) - d2sum - & 2*Ginv(1,1)*Dval(dd002,Di1) + & 4*Ginv(1,3)*(d00sum + Dval(dd001,Di4)) IN(4) = f4*E(ee113) - d2sum + Dval(dd113,Di5) - & 2*Ginv(1,1)*(Dval(dd002,Di1) - Dval(dd003,Di5)) + & 4*Ginv(1,3)*(d00sum + Dval(dd001,Di5)) call SOLVE(in) E(ee1113) = .5D0*(E(ee1113) + in(1)) E(ee1123) = .5D0*(E(ee1123) + in(2)) E(ee1133) = in(3) E(ee1134) = in(4) IN(1) = f1*E(ee224) - Dval(dd113,Di1) + Dval(dd113,Di2) - & 2*Ginv(2,2)*(Dval(dd003,Di1) - Dval(dd003,Di2)) - & 4*Ginv(2,4)*(Dval(dd001,Di1) - Dval(dd001,Di2)) IN(2) = f2*E(ee224) - Dval(dd113,Di1) - & 2*Ginv(2,2)*(Dval(dd003,Di1) - Dval(dd003,Di3)) - & 4*Ginv(2,4)*Dval(dd001,Di1) IN(3) = f3*E(ee224) - Dval(dd113,Di1) + Dval(dd223,Di4) - & 2*Ginv(2,2)*(Dval(dd003,Di1) - Dval(dd003,Di4)) - & 4*Ginv(2,4)*(Dval(dd001,Di1) - Dval(dd002,Di4)) IN(4) = f4*E(ee224) - Dval(dd113,Di1) - & 2*Ginv(2,2)*Dval(dd003,Di1) - & 4*Ginv(2,4)*(Dval(dd001,Di1) - Dval(dd002,Di5)) call SOLVE(in) E(ee1224) = in(1) E(ee2224) = .5D0*(E(ee2224) + in(2)) E(ee2234) = E(ee2234) + in(3) E(ee2244) = in(4) IN(1) = f1*E(ee234) - Dval(dd123,Di1) + Dval(dd123,Di2) - & 2*Ginv(2,3)*(Dval(dd003,Di1) - Dval(dd003,Di2)) - & 2*Ginv(3,4)*(Dval(dd001,Di1) - Dval(dd001,Di2)) - & 2*Ginv(2,4)*(Dval(dd002,Di1) - Dval(dd002,Di2)) IN(2) = f2*E(ee234) - Dval(dd123,Di1) - & 2*Ginv(2,3)*(Dval(dd003,Di1) - Dval(dd003,Di3)) - & 2*Ginv(3,4)*Dval(dd001,Di1) - & 2*Ginv(2,4)*(Dval(dd002,Di1) - Dval(dd002,Di3)) IN(3) = f3*E(ee234) - Dval(dd123,Di1) - & 2*Ginv(2,3)*(Dval(dd003,Di1) - Dval(dd003,Di4)) - & 2*Ginv(3,4)*(Dval(dd001,Di1) - Dval(dd002,Di4)) - & 2*Ginv(2,4)*Dval(dd002,Di1) IN(4) = f4*E(ee234) - Dval(dd123,Di1) - & 2*Ginv(2,3)*Dval(dd003,Di1) - & 2*Ginv(3,4)*(Dval(dd001,Di1) - Dval(dd002,Di5)) - & 2*Ginv(2,4)*(Dval(dd002,Di1) - Dval(dd003,Di5)) call SOLVE(in) E(ee1234) = in(1) E(ee2234) = 1/3D0*(E(ee2234) + in(2)) E(ee2334) = .5D0*(E(ee2334) + in(3)) E(ee2344) = in(4) IN(1) = f1*E(ee133) + d22sum - & 4*Ginv(1,3)*(Dval(dd002,Di1) - Dval(dd002,Di2)) + & 2*Ginv(3,3)*d00sum IN(2) = f2*E(ee133) + d22sum + Dval(dd122,Di3) - & 4*Ginv(1,3)*(Dval(dd002,Di1) - Dval(dd002,Di3)) + & 2*Ginv(3,3)*(d00sum + Dval(dd001,Di3)) IN(3) = f3*E(ee133) + d22sum - & 4*Ginv(1,3)*Dval(dd002,Di1) + & 2*Ginv(3,3)*(d00sum + Dval(dd001,Di4)) IN(4) = f4*E(ee133) + d22sum + Dval(dd133,Di5) - & 4*Ginv(1,3)*(Dval(dd002,Di1) - Dval(dd003,Di5)) + & 2*Ginv(3,3)*(d00sum + Dval(dd001,Di5)) call SOLVE(in) E(ee1133) = .5D0*(E(ee1133) + in(1)) E(ee1233) = in(2) E(ee1333) = .5D0*(E(ee1333) + in(3)) E(ee1334) = .5D0*(E(ee1334) + in(4)) if( dump ) call XDumpCoeff(5, E) end herwig++-2.6.0.orig/Looptools/E/Ecoeffa.F0000644000175000017500000017371511754474774020632 0ustar sylvestresylvestre* Ecoeffa.F * the five-point tensor coefficients * this file is part of LoopTools * written by M. Rauch * last modified 29 Sep 10 th #include "defs.h" subroutine XEcoeffa(para, E, ldpara) implicit none integer ldpara DVAR para(ldpara,Pee) double complex E(Nee) #include "lt.h" integer XDget double complex XE0 external XDget, XE0 DVAR p1, p2, p3, p4, p5 DVAR p1p2, p2p3, p3p4, p4p5, p5p1 DVAR m1, m2, m3, m4, m5 QVAR Y(5,5), Yi(5,5), Z(4,4), Zij(3,3) QVAR eta(5), zeta(4,4), detY, detZ double precision del, del4 integer i, j, k, l integer Di1, Di2, Di3, Di4, Di5 logical dump QVAR Yflat(25), Yiflat(25) equivalence (Y, Yflat) equivalence (Yi, Yiflat) double complex help1, help2, help3, help4 double complex dabbr41, dabbr48, dabbr65, dabbr60, dabbr55 double complex dabbr50, dabbr49, dabbr45, dabbr42, dabbr10 double complex dabbr84, dabbr91, dabbr81, dabbr52, dabbr88 double complex dabbr77, dabbr90, dabbr46, dabbr87, dabbr74 double complex dabbr80, dabbr71, dabbr83, dabbr76, dabbr79 double complex dabbr43, dabbr70, dabbr73, dabbr35, dabbr37 double complex dabbr39, dabbr27, dabbr31, dabbr24, dabbr20 double complex dabbr16, dabbr30, dabbr13, dabbr23, dabbr26 double complex dabbr5, dabbr7, dabbr9, dabbr33, dabbr92 double complex dabbr89, dabbr86, dabbr85, dabbr82, dabbr78 double complex dabbr75, dabbr72, dabbr69, dabbr68, dabbr38 double complex dabbr36, dabbr34, dabbr32, dabbr29, dabbr28 double complex dabbr25, dabbr22, dabbr21, dabbr3, dabbr8 double complex dabbr6, dabbr4, dabbr1, dabbr61, dabbr66 double complex dabbr57, dabbr47, dabbr51, dabbr64, dabbr44 double complex dabbr56, dabbr59, dabbr14, dabbr17, dabbr19 double complex dabbr67, dabbr63, dabbr62, dabbr58, dabbr54 double complex dabbr53, dabbr11, dabbr18, dabbr15, dabbr12 double complex dabbr2, dabbr40 #ifdef COMPLEXPARA if( abs(DIMAG(para(1,1))) + & abs(DIMAG(para(1,2))) + & abs(DIMAG(para(1,3))) + & abs(DIMAG(para(1,4))) + & abs(DIMAG(para(1,5))) + & abs(DIMAG(para(1,6))) + & abs(DIMAG(para(1,7))) + & abs(DIMAG(para(1,8))) + & abs(DIMAG(para(1,9))) + & abs(DIMAG(para(1,10))) .gt. 0 ) & print *, "Warning: complex momenta not implemented" if( abs(DIMAG(para(1,11))) + & abs(DIMAG(para(1,12))) + & abs(DIMAG(para(1,13))) + & abs(DIMAG(para(1,14))) + & abs(DIMAG(para(1,15))) .eq. 0 ) then call Ecoeffa(para, E, 2) return endif #endif p1 = para(1,1) p2 = para(1,2) p3 = para(1,3) p4 = para(1,4) p5 = para(1,5) p1p2 = para(1,6) p2p3 = para(1,7) p3p4 = para(1,8) p4p5 = para(1,9) p5p1 = para(1,10) m1 = para(1,11) m2 = para(1,12) m3 = para(1,13) m4 = para(1,14) m5 = para(1,15) Di1 = XDget(p2, p3, p4, p5p1, p2p3, p3p4, m2, m3, m4, m5) Di1 = XDget(p2, p3, p4, p5p1, p2p3, p3p4, m2, m3, m4, m5) Di2 = XDget(p1p2, p3, p4, p5, p4p5, p3p4, m1, m3, m4, m5) Di3 = XDget(p1, p2p3, p4, p5, p4p5, p5p1, m1, m2, m4, m5) Di4 = XDget(p1, p2, p3p4, p5, p1p2, p5p1, m1, m2, m3, m5) Di5 = XDget(p1, p2, p3, p4p5, p1p2, p2p3, m1, m2, m3, m4) serial = serial + 1 dump = ibits(debugkey, DebugE, 1) .ne. 0 .and. & serial .ge. debugfrom .and. serial .le. debugto if( dump ) call XDumpPara(5, para, ldpara, "Ecoeffa") Y(1,1) = 2*QPREC(m1) Y(2,2) = 2*QPREC(m2) Y(3,3) = 2*QPREC(m3) Y(4,4) = 2*QPREC(m4) Y(5,5) = 2*QPREC(m5) Y(1,2) = QPREC(m1) + QPREC(m2) - QPREC(p1) Y(2,1) = Y(1,2) Y(1,3) = QPREC(m1) + QPREC(m3) - QPREC(p1p2) Y(3,1) = Y(1,3) Y(1,4) = QPREC(m1) + QPREC(m4) - QPREC(p4p5) Y(4,1) = Y(1,4) Y(1,5) = QPREC(m1) + QPREC(m5) - QPREC(p5) Y(5,1) = Y(1,5) Y(2,3) = QPREC(m2) + QPREC(m3) - QPREC(p2) Y(3,2) = Y(2,3) Y(2,4) = QPREC(m2) + QPREC(m4) - QPREC(p2p3) Y(4,2) = Y(2,4) Y(2,5) = QPREC(m2) + QPREC(m5) - QPREC(p5p1) Y(5,2) = Y(2,5) Y(3,4) = QPREC(m3) + QPREC(m4) - QPREC(p3) Y(4,3) = Y(3,4) Y(3,5) = QPREC(m3) + QPREC(m5) - QPREC(p3p4) Y(5,3) = Y(3,5) Y(4,5) = QPREC(m4) + QPREC(m5) - QPREC(p4) Y(5,4) = Y(4,5) * calculate the Y(i), their determinants, and eta(i) do i = 1, 5 do j = 1, 25 Yiflat(j) = Yflat(j) enddo do j = 1, 5 Yi(j,i) = 1 enddo call XDet(5, Yi,5, eta(i)) enddo * Y is no longer needed, now calculate its determinant and * add the missing factor 1/detY to eta call XDet(5, Y,5, detY) do i = 1, 5 eta(i) = eta(i)/detY enddo Z(1,1) = 2*QPREC(p1) Z(2,2) = 2*QPREC(p1p2) Z(3,3) = 2*QPREC(p4p5) Z(4,4) = 2*QPREC(p5) Z(1,2) = QPREC(p1) + QPREC(p1p2) - QPREC(p2) Z(2,1) = Z(1,2) Z(1,3) = QPREC(p1) - QPREC(p2p3) + QPREC(p4p5) Z(3,1) = Z(1,3) Z(1,4) = QPREC(p1) - QPREC(p5p1) + QPREC(p5) Z(4,1) = Z(1,4) Z(2,3) = QPREC(p1p2) - QPREC(p3) + QPREC(p4p5) Z(3,2) = Z(2,3) Z(2,4) = QPREC(p1p2) - QPREC(p3p4) + QPREC(p5) Z(4,2) = Z(2,4) Z(3,4) = QPREC(p5) + QPREC(p4p5) - QPREC(p4) Z(4,3) = Z(3,4) * calculate the zeta(i,j) do i = 1, 4 do j = i, 4 * generate the submatrix Z_ij do l = 1, 3 do k = 1, 3 Zij(k,l) = Z(k + ibits(not(k - i), 3, 1), & l + ibits(not(l - j), 3, 1)) enddo enddo call XDet(3, Zij,3, detZ) zeta(i,j) = Sgn(i + j)*detZ/detY zeta(j,i) = zeta(i,j) enddo enddo call XDet(4, Z,4, detZ) del = (delta + log(mudim))/24D0 del4 = .25D0*del help1 = Dval(dd003,Di1) + 2*Dval(dd0033,Di1) + & Dval(dd00333,Di1) help2 = Dval(dd002,Di1) + 2*Dval(dd0023,Di1) + & Dval(dd00233,Di1) help3 = Dval(dd001,Di1) + 2*Dval(dd0013,Di1) + & Dval(dd00133,Di1) help4 = Dval(dd00,Di1) + 2*Dval(dd003,Di1) + & Dval(dd0033,Di1) dabbr41 = Dval(dd00223,Di1) + Dval(dd00233,Di1) dabbr48 = Dval(dd00113,Di1) + Dval(dd00133,Di1) dabbr65 = Dval(dd0023,Di1) + Dval(dd00123,Di1) dabbr60 = Dval(dd0013,Di1) + Dval(dd00123,Di1) dabbr55 = Dval(dd0012,Di1) + Dval(dd00123,Di1) dabbr50 = Dval(dd00112,Di1) + Dval(dd00122,Di1) dabbr49 = Dval(dd2233,Di1) + Dval(dd2333,Di1) dabbr45 = Dval(dd2223,Di1) + Dval(dd2233,Di1) dabbr42 = Dval(dd1223,Di1) + Dval(dd1233,Di1) dabbr10 = Dval(dd223,Di1) + Dval(dd233,Di1) dabbr84 = Dval(dd0033,Di1) + Dval(dd00233,Di1) + & Dval(dd00333,Di1) dabbr91 = Dval(dd0033,Di1) + Dval(dd00133,Di1) + & Dval(dd00333,Di1) dabbr81 = dabbr41 + Dval(dd0023,Di1) dabbr52 = Dval(dd0033,Di1) + Dval(dd00133,Di1) + & Dval(dd00233,Di1) dabbr88 = dabbr65 + Dval(dd00233,Di1) dabbr77 = Dval(dd0022,Di1) + Dval(dd00222,Di1) + & Dval(dd00223,Di1) dabbr90 = dabbr65 + Dval(dd00223,Di1) dabbr46 = Dval(dd0022,Di1) + Dval(dd00122,Di1) + & Dval(dd00223,Di1) dabbr87 = Dval(dd0022,Di1) + Dval(dd00122,Di1) + & Dval(dd00222,Di1) dabbr74 = dabbr60 + Dval(dd00133,Di1) dabbr80 = dabbr48 + Dval(dd0013,Di1) dabbr71 = dabbr55 + Dval(dd00122,Di1) dabbr83 = dabbr60 + Dval(dd00113,Di1) dabbr76 = dabbr55 + Dval(dd00112,Di1) dabbr79 = dabbr50 + Dval(dd0012,Di1) dabbr43 = Dval(dd0011,Di1) + Dval(dd00112,Di1) + & Dval(dd00113,Di1) dabbr70 = Dval(dd0011,Di1) + Dval(dd00111,Di1) + & Dval(dd00113,Di1) dabbr73 = Dval(dd0011,Di1) + Dval(dd00111,Di1) + & Dval(dd00112,Di1) dabbr35 = (Dval(dd0000,Di1) - del) + & (Dval(dd00002,Di1) + del4) + & (Dval(dd00003,Di1) + del4) dabbr37 = (Dval(dd0000,Di1) - del) + & (Dval(dd00001,Di1) + del4) + & (Dval(dd00003,Di1) + del4) dabbr39 = (Dval(dd0000,Di1) - del) + & (Dval(dd00001,Di1) + del4) + & (Dval(dd00002,Di1) + del4) dabbr27 = Dval(dd003,Di1) + Dval(dd0023,Di1) + & Dval(dd0033,Di1) dabbr31 = Dval(dd003,Di1) + Dval(dd0013,Di1) + & Dval(dd0033,Di1) dabbr24 = Dval(dd002,Di1) + Dval(dd0022,Di1) + & Dval(dd0023,Di1) dabbr20 = Dval(dd003,Di1) + Dval(dd0013,Di1) + & Dval(dd0023,Di1) dabbr16 = Dval(dd002,Di1) + Dval(dd0012,Di1) + & Dval(dd0023,Di1) dabbr30 = Dval(dd002,Di1) + Dval(dd0012,Di1) + & Dval(dd0022,Di1) dabbr13 = Dval(dd001,Di1) + Dval(dd0012,Di1) + & Dval(dd0013,Di1) dabbr23 = Dval(dd001,Di1) + Dval(dd0011,Di1) + & Dval(dd0013,Di1) dabbr26 = Dval(dd001,Di1) + Dval(dd0011,Di1) + & Dval(dd0012,Di1) dabbr5 = Dval(dd00,Di1) + Dval(dd002,Di1) + & Dval(dd003,Di1) dabbr7 = Dval(dd00,Di1) + Dval(dd001,Di1) + & Dval(dd003,Di1) dabbr9 = Dval(dd00,Di1) + Dval(dd001,Di1) + & Dval(dd002,Di1) dabbr33 = dabbr35 + (Dval(dd00001,Di1) + del4) dabbr92 = Dval(dd333,Di1) + Dval(dd1333,Di1) + & Dval(dd2333,Di1) + Dval(dd3333,Di1) dabbr89 = dabbr49 + Dval(dd233,Di1) + Dval(dd1233,Di1) dabbr86 = dabbr45 + Dval(dd223,Di1) + Dval(dd1223,Di1) dabbr85 = Dval(dd222,Di1) + Dval(dd1222,Di1) + & Dval(dd2222,Di1) + Dval(dd2223,Di1) dabbr82 = Dval(dd133,Di1) + Dval(dd1133,Di1) + & Dval(dd1233,Di1) + Dval(dd1333,Di1) dabbr78 = dabbr42 + Dval(dd123,Di1) + Dval(dd1123,Di1) dabbr75 = Dval(dd122,Di1) + Dval(dd1122,Di1) + & Dval(dd1222,Di1) + Dval(dd1223,Di1) dabbr72 = Dval(dd113,Di1) + Dval(dd1113,Di1) + & Dval(dd1123,Di1) + Dval(dd1133,Di1) dabbr69 = Dval(dd112,Di1) + Dval(dd1112,Di1) + & Dval(dd1122,Di1) + Dval(dd1123,Di1) dabbr68 = Dval(dd111,Di1) + Dval(dd1111,Di1) + & Dval(dd1112,Di1) + Dval(dd1113,Di1) dabbr38 = dabbr27 + Dval(dd0013,Di1) dabbr36 = dabbr24 + Dval(dd0012,Di1) dabbr34 = dabbr13 + Dval(dd0011,Di1) dabbr32 = Dval(dd33,Di1) + Dval(dd133,Di1) + & Dval(dd233,Di1) + Dval(dd333,Di1) dabbr29 = dabbr10 + Dval(dd23,Di1) + Dval(dd123,Di1) dabbr28 = Dval(dd22,Di1) + Dval(dd122,Di1) + & Dval(dd222,Di1) + Dval(dd223,Di1) dabbr25 = Dval(dd13,Di1) + Dval(dd113,Di1) + & Dval(dd123,Di1) + Dval(dd133,Di1) dabbr22 = Dval(dd12,Di1) + Dval(dd112,Di1) + & Dval(dd122,Di1) + Dval(dd123,Di1) dabbr21 = Dval(dd11,Di1) + Dval(dd111,Di1) + & Dval(dd112,Di1) + Dval(dd113,Di1) dabbr3 = dabbr5 + Dval(dd001,Di1) dabbr8 = Dval(dd3,Di1) + Dval(dd13,Di1) + & Dval(dd23,Di1) + Dval(dd33,Di1) dabbr6 = Dval(dd2,Di1) + Dval(dd12,Di1) + & Dval(dd22,Di1) + Dval(dd23,Di1) dabbr4 = Dval(dd1,Di1) + Dval(dd11,Di1) + & Dval(dd12,Di1) + Dval(dd13,Di1) dabbr1 = Dval(dd0,Di1) + Dval(dd1,Di1) + & Dval(dd2,Di1) + Dval(dd3,Di1) dabbr61 = help1 + 2*Dval(dd0023,Di1) + & Dval(dd00223,Di1) + 2*Dval(dd00233,Di1) dabbr66 = help1 + 2*Dval(dd0013,Di1) + & Dval(dd00113,Di1) + 2*Dval(dd00133,Di1) dabbr57 = help2 + 2*Dval(dd0022,Di1) + & Dval(dd00222,Di1) + 2*Dval(dd00223,Di1) dabbr47 = help2 + 2*Dval(dd0012,Di1) + & Dval(dd00112,Di1) + 2*Dval(dd00123,Di1) dabbr51 = Dval(dd003,Di1) + 2*Dval(dd0013,Di1) + & 2*Dval(dd0023,Di1) + Dval(dd00113,Di1) + & 2*Dval(dd00123,Di1) + Dval(dd00223,Di1) dabbr64 = Dval(dd002,Di1) + 2*Dval(dd0012,Di1) + & 2*Dval(dd0022,Di1) + Dval(dd00112,Di1) + & 2*Dval(dd00122,Di1) + Dval(dd00222,Di1) dabbr44 = help3 + 2*Dval(dd0012,Di1) + & Dval(dd00122,Di1) + 2*Dval(dd00123,Di1) dabbr56 = help3 + 2*Dval(dd0011,Di1) + & Dval(dd00111,Di1) + 2*Dval(dd00113,Di1) dabbr59 = Dval(dd001,Di1) + 2*Dval(dd0011,Di1) + & 2*Dval(dd0012,Di1) + Dval(dd00111,Di1) + & 2*Dval(dd00112,Di1) + Dval(dd00122,Di1) dabbr14 = help4 + 2*Dval(dd002,Di1) + & Dval(dd0022,Di1) + 2*Dval(dd0023,Di1) dabbr17 = help4 + 2*Dval(dd001,Di1) + & Dval(dd0011,Di1) + 2*Dval(dd0013,Di1) dabbr19 = Dval(dd00,Di1) + 2*Dval(dd001,Di1) + & 2*Dval(dd002,Di1) + Dval(dd0011,Di1) + & 2*Dval(dd0012,Di1) + Dval(dd0022,Di1) dabbr67 = Dval(dd33,Di1) + 2*Dval(dd133,Di1) + & 2*Dval(dd233,Di1) + 2*Dval(dd333,Di1) + & Dval(dd1133,Di1) + 2*Dval(dd1233,Di1) + & 2*Dval(dd1333,Di1) + Dval(dd2233,Di1) + & 2*Dval(dd2333,Di1) + Dval(dd3333,Di1) dabbr63 = Dval(dd23,Di1) + 2*Dval(dd123,Di1) + & 2*Dval(dd223,Di1) + 2*Dval(dd233,Di1) + & Dval(dd1123,Di1) + 2*Dval(dd1223,Di1) + & 2*Dval(dd1233,Di1) + Dval(dd2223,Di1) + & 2*Dval(dd2233,Di1) + Dval(dd2333,Di1) dabbr62 = Dval(dd22,Di1) + 2*Dval(dd122,Di1) + & 2*Dval(dd222,Di1) + 2*Dval(dd223,Di1) + & Dval(dd1122,Di1) + 2*Dval(dd1222,Di1) + & 2*Dval(dd1223,Di1) + Dval(dd2222,Di1) + & 2*Dval(dd2223,Di1) + Dval(dd2233,Di1) dabbr58 = Dval(dd13,Di1) + 2*Dval(dd113,Di1) + & 2*Dval(dd123,Di1) + 2*Dval(dd133,Di1) + & Dval(dd1113,Di1) + 2*Dval(dd1123,Di1) + & 2*Dval(dd1133,Di1) + Dval(dd1223,Di1) + & 2*Dval(dd1233,Di1) + Dval(dd1333,Di1) dabbr54 = Dval(dd12,Di1) + 2*Dval(dd112,Di1) + & 2*Dval(dd122,Di1) + 2*Dval(dd123,Di1) + & Dval(dd1112,Di1) + 2*Dval(dd1122,Di1) + & 2*Dval(dd1123,Di1) + Dval(dd1222,Di1) + & 2*Dval(dd1223,Di1) + Dval(dd1233,Di1) dabbr53 = Dval(dd11,Di1) + 2*Dval(dd111,Di1) + & 2*Dval(dd112,Di1) + 2*Dval(dd113,Di1) + & Dval(dd1111,Di1) + 2*Dval(dd1112,Di1) + & 2*Dval(dd1113,Di1) + Dval(dd1122,Di1) + & 2*Dval(dd1123,Di1) + Dval(dd1133,Di1) dabbr11 = dabbr14 + 2*Dval(dd001,Di1) + & Dval(dd0011,Di1) + 2*Dval(dd0012,Di1) + & 2*Dval(dd0013,Di1) dabbr18 = Dval(dd3,Di1) + 2*Dval(dd13,Di1) + & 2*Dval(dd23,Di1) + 2*Dval(dd33,Di1) + & Dval(dd113,Di1) + 2*Dval(dd123,Di1) + & 2*Dval(dd133,Di1) + Dval(dd223,Di1) + & 2*Dval(dd233,Di1) + Dval(dd333,Di1) dabbr15 = Dval(dd2,Di1) + 2*Dval(dd12,Di1) + & 2*Dval(dd22,Di1) + 2*Dval(dd23,Di1) + & Dval(dd112,Di1) + 2*Dval(dd122,Di1) + & 2*Dval(dd123,Di1) + Dval(dd222,Di1) + & 2*Dval(dd223,Di1) + Dval(dd233,Di1) dabbr12 = Dval(dd1,Di1) + 2*Dval(dd11,Di1) + & 2*Dval(dd12,Di1) + 2*Dval(dd13,Di1) + & Dval(dd111,Di1) + 2*Dval(dd112,Di1) + & 2*Dval(dd113,Di1) + Dval(dd122,Di1) + & 2*Dval(dd123,Di1) + Dval(dd133,Di1) dabbr2 = Dval(dd0,Di1) + 2*Dval(dd1,Di1) + & 2*Dval(dd2,Di1) + 2*Dval(dd3,Di1) + & Dval(dd11,Di1) + 2*Dval(dd12,Di1) + & 2*Dval(dd13,Di1) + Dval(dd22,Di1) + & 2*Dval(dd23,Di1) + Dval(dd33,Di1) dabbr40 = Dval(dd0,Di1) + 4*Dval(dd1,Di1) + & 4*Dval(dd2,Di1) + 4*Dval(dd3,Di1) + & 6*Dval(dd11,Di1) + 12*Dval(dd12,Di1) + & 12*Dval(dd13,Di1) + 6*Dval(dd22,Di1) + & 12*Dval(dd23,Di1) + 6*Dval(dd33,Di1) + & 4*Dval(dd111,Di1) + 12*Dval(dd112,Di1) + & 12*Dval(dd113,Di1) + 12*Dval(dd122,Di1) + & 24*Dval(dd123,Di1) + 12*Dval(dd133,Di1) + & 4*Dval(dd222,Di1) + 12*Dval(dd223,Di1) + & 12*Dval(dd233,Di1) + 4*Dval(dd333,Di1) + & Dval(dd1111,Di1) + 4*Dval(dd1112,Di1) + & 4*Dval(dd1113,Di1) + 6*Dval(dd1122,Di1) + & 12*Dval(dd1123,Di1) + 6*Dval(dd1133,Di1) + & 4*Dval(dd1222,Di1) + 12*Dval(dd1223,Di1) + & 12*Dval(dd1233,Di1) + 4*Dval(dd1333,Di1) + & Dval(dd2222,Di1) + 4*Dval(dd2223,Di1) + & 6*Dval(dd2233,Di1) + 4*Dval(dd2333,Di1) + & Dval(dd3333,Di1) E(ee0) = XE0(p1, p2, p3, p4, p5, p1p2, p2p3, p3p4, & p4p5, p5p1, m1, m2, m3, m4, m5) E(ee1) = dabbr1*eta(1) - eta(3)*Dval(dd1,Di3) - & eta(4)*Dval(dd1,Di4) - eta(5)*Dval(dd1,Di5) + & 2*(zeta(1,1)*Dval(dd00,Di2) + & zeta(1,2)*Dval(dd00,Di3) + & zeta(1,3)*Dval(dd00,Di4) + & zeta(1,4)*Dval(dd00,Di5) - & (zeta(1,1) + zeta(1,2) + zeta(1,3) + zeta(1,4))* & Dval(dd00,Di1)) E(ee2) = -(eta(2)*Dval(dd1,Di2)) - & eta(4)*Dval(dd2,Di4) - eta(5)*Dval(dd2,Di5) - & eta(1)*Dval(dd1,Di1) + & 2*zeta(1,2)*Dval(dd00,Di2) + & 2*zeta(2,2)*Dval(dd00,Di3) + & 2*zeta(2,3)*Dval(dd00,Di4) + & 2*zeta(2,4)*Dval(dd00,Di5) - & 2*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd00,Di1) E(ee3) = -(eta(2)*Dval(dd2,Di2)) - & eta(3)*Dval(dd2,Di3) - eta(5)*Dval(dd3,Di5) - & eta(1)*Dval(dd2,Di1) + & 2*zeta(1,3)*Dval(dd00,Di2) + & 2*zeta(2,3)*Dval(dd00,Di3) + & 2*zeta(3,3)*Dval(dd00,Di4) + & 2*zeta(3,4)*Dval(dd00,Di5) - & 2*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd00,Di1) E(ee4) = -(eta(2)*Dval(dd3,Di2)) - & eta(3)*Dval(dd3,Di3) - eta(4)*Dval(dd3,Di4) - & eta(1)*Dval(dd3,Di1) + & 2*zeta(1,4)*Dval(dd00,Di2) + & 2*zeta(2,4)*Dval(dd00,Di3) + & 2*zeta(3,4)*Dval(dd00,Di4) + & 2*zeta(4,4)*Dval(dd00,Di5) - & 2*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd00,Di1) E(ee00) = -(eta(2)*Dval(dd00,Di2)) - & eta(3)*Dval(dd00,Di3) - eta(4)*Dval(dd00,Di4) - & eta(5)*Dval(dd00,Di5) - eta(1)*Dval(dd00,Di1) E(ee11) = -(dabbr2*eta(1)) - eta(3)*Dval(dd11,Di3) - & eta(4)*Dval(dd11,Di4) - eta(5)*Dval(dd11,Di5) + & 4*(dabbr3*(zeta(1,1) + zeta(1,2) + zeta(1,3) + & zeta(1,4)) + zeta(1,2)*Dval(dd001,Di3) + & zeta(1,3)*Dval(dd001,Di4) + & zeta(1,4)*Dval(dd001,Di5)) E(ee12) = dabbr4*eta(1) - eta(4)*Dval(dd12,Di4) - & eta(5)*Dval(dd12,Di5) + & 2*(dabbr5*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) + zeta(1,1)*Dval(dd001,Di2) + & zeta(2,2)*Dval(dd001,Di3) + & zeta(2,3)*Dval(dd001,Di4) + & zeta(2,4)*Dval(dd001,Di5) + & zeta(1,3)*Dval(dd002,Di4) + & zeta(1,4)*Dval(dd002,Di5) - & (zeta(1,1) + zeta(1,3) + zeta(1,4) - zeta(2,2) - & zeta(2,3) - zeta(2,4))*Dval(dd001,Di1)) E(ee13) = dabbr6*eta(1) - eta(3)*Dval(dd12,Di3) - & eta(5)*Dval(dd13,Di5) + & 2*(dabbr7*(zeta(1,3) + zeta(2,3) + zeta(3,3) + & zeta(3,4)) + zeta(2,3)*Dval(dd001,Di3) + & zeta(3,3)*Dval(dd001,Di4) + & zeta(3,4)*Dval(dd001,Di5) + & zeta(1,1)*Dval(dd002,Di2) + & zeta(1,2)*Dval(dd002,Di3) + & zeta(1,4)*Dval(dd003,Di5) - & (zeta(1,1) + zeta(1,2) + zeta(1,4) - zeta(2,3) - & zeta(3,3) - zeta(3,4))*Dval(dd002,Di1)) E(ee14) = dabbr8*eta(1) - eta(3)*Dval(dd13,Di3) - & eta(4)*Dval(dd13,Di4) + & 2*(dabbr9*(zeta(1,4) + zeta(2,4) + zeta(3,4) + & zeta(4,4)) + zeta(2,4)*Dval(dd001,Di3) + & zeta(3,4)*Dval(dd001,Di4) + & zeta(4,4)*Dval(dd001,Di5) + & zeta(1,1)*Dval(dd003,Di2) + & zeta(1,2)*Dval(dd003,Di3) + & zeta(1,3)*Dval(dd003,Di4) - & (zeta(1,1) + zeta(1,2) + zeta(1,3) - zeta(2,4) - & zeta(3,4) - zeta(4,4))*Dval(dd003,Di1)) E(ee22) = -(eta(2)*Dval(dd11,Di2)) - & eta(4)*Dval(dd22,Di4) - eta(5)*Dval(dd22,Di5) - & eta(1)*Dval(dd11,Di1) + & 4*zeta(1,2)*Dval(dd001,Di2) + & 4*zeta(2,3)*Dval(dd002,Di4) + & 4*zeta(2,4)*Dval(dd002,Di5) - & 4*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd001,Di1) E(ee23) = -(eta(2)*Dval(dd12,Di2)) - & eta(5)*Dval(dd23,Di5) - eta(1)*Dval(dd12,Di1) + & 2*(zeta(1,3)*Dval(dd001,Di2) + & zeta(1,2)*Dval(dd002,Di2) + & zeta(2,2)*Dval(dd002,Di3) + & zeta(3,3)*Dval(dd002,Di4) + & zeta(3,4)*Dval(dd002,Di5) + & zeta(2,4)*Dval(dd003,Di5) - & (zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd001,Di1) - & (zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd002,Di1)) E(ee24) = -(eta(2)*Dval(dd13,Di2)) - & eta(4)*Dval(dd23,Di4) - eta(1)*Dval(dd13,Di1) + & 2*(zeta(1,4)*Dval(dd001,Di2) + & zeta(3,4)*Dval(dd002,Di4) + & zeta(4,4)*Dval(dd002,Di5) + & zeta(1,2)*Dval(dd003,Di2) + & zeta(2,2)*Dval(dd003,Di3) + & zeta(2,3)*Dval(dd003,Di4) - & (zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd001,Di1) - & (zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd003,Di1)) E(ee33) = -(eta(2)*Dval(dd22,Di2)) - & eta(3)*Dval(dd22,Di3) - eta(5)*Dval(dd33,Di5) - & eta(1)*Dval(dd22,Di1) + & 4*zeta(1,3)*Dval(dd002,Di2) + & 4*zeta(2,3)*Dval(dd002,Di3) + & 4*zeta(3,4)*Dval(dd003,Di5) - & 4*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd002,Di1) E(ee34) = -(eta(2)*Dval(dd23,Di2)) - & eta(3)*Dval(dd23,Di3) - eta(1)*Dval(dd23,Di1) + & 2*(zeta(1,4)*Dval(dd002,Di2) + & zeta(2,4)*Dval(dd002,Di3) + & zeta(1,3)*Dval(dd003,Di2) + & zeta(2,3)*Dval(dd003,Di3) + & zeta(3,3)*Dval(dd003,Di4) + & zeta(4,4)*Dval(dd003,Di5) - & (zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd002,Di1) - & (zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd003,Di1)) E(ee44) = -(eta(2)*Dval(dd33,Di2)) - & eta(3)*Dval(dd33,Di3) - eta(4)*Dval(dd33,Di4) - & eta(1)*Dval(dd33,Di1) + & 4*zeta(1,4)*Dval(dd003,Di2) + & 4*zeta(2,4)*Dval(dd003,Di3) + & 4*zeta(3,4)*Dval(dd003,Di4) - & 4*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd003,Di1) E(ee001) = dabbr3*eta(1) - eta(3)*Dval(dd001,Di3) - & eta(4)*Dval(dd001,Di4) - eta(5)*Dval(dd001,Di5) + & 2*(zeta(1,1)*(Dval(dd0000,Di2) - del) + & zeta(1,2)*(Dval(dd0000,Di3) - del) + & zeta(1,3)*(Dval(dd0000,Di4) - del) + & zeta(1,4)*(Dval(dd0000,Di5) - del) - & (zeta(1,1) + zeta(1,2) + zeta(1,3) + zeta(1,4))* & (Dval(dd0000,Di1) - del)) E(ee002) = -(eta(2)*Dval(dd001,Di2)) - & eta(4)*Dval(dd002,Di4) - eta(5)*Dval(dd002,Di5) - & eta(1)*Dval(dd001,Di1) + & 2*zeta(1,2)*(Dval(dd0000,Di2) - del) + & 2*zeta(2,2)*(Dval(dd0000,Di3) - del) + & 2*zeta(2,3)*(Dval(dd0000,Di4) - del) + & 2*zeta(2,4)*(Dval(dd0000,Di5) - del) - & 2*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & (Dval(dd0000,Di1) - del) E(ee003) = -(eta(2)*Dval(dd002,Di2)) - & eta(3)*Dval(dd002,Di3) - eta(5)*Dval(dd003,Di5) - & eta(1)*Dval(dd002,Di1) + & 2*zeta(1,3)*(Dval(dd0000,Di2) - del) + & 2*zeta(2,3)*(Dval(dd0000,Di3) - del) + & 2*zeta(3,3)*(Dval(dd0000,Di4) - del) + & 2*zeta(3,4)*(Dval(dd0000,Di5) - del) - & 2*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & (Dval(dd0000,Di1) - del) E(ee004) = -(eta(2)*Dval(dd003,Di2)) - & eta(3)*Dval(dd003,Di3) - eta(4)*Dval(dd003,Di4) - & eta(1)*Dval(dd003,Di1) + & 2*zeta(1,4)*(Dval(dd0000,Di2) - del) + & 2*zeta(2,4)*(Dval(dd0000,Di3) - del) + & 2*zeta(3,4)*(Dval(dd0000,Di4) - del) + & 2*zeta(4,4)*(Dval(dd0000,Di5) - del) - & 2*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & (Dval(dd0000,Di1) - del) E(ee111) = -6*dabbr11* & (zeta(1,1) + zeta(1,2) + zeta(1,3) + zeta(1,4)) - & eta(3)*Dval(dd111,Di3) - eta(4)*Dval(dd111,Di4) - & eta(5)*Dval(dd111,Di5) + & eta(1)*(3*dabbr10 + Dval(dd0,Di1) + & 3*Dval(dd1,Di1) + 3*Dval(dd2,Di1) + & 3*Dval(dd3,Di1) + 3*Dval(dd11,Di1) + & 6*Dval(dd12,Di1) + 6*Dval(dd13,Di1) + & 3*Dval(dd22,Di1) + 6*Dval(dd23,Di1) + & 3*Dval(dd33,Di1) + Dval(dd111,Di1) + & 3*Dval(dd112,Di1) + 3*Dval(dd113,Di1) + & 3*Dval(dd122,Di1) + 6*Dval(dd123,Di1) + & 3*Dval(dd133,Di1) + Dval(dd222,Di1) + & Dval(dd333,Di1)) + & 6*zeta(1,2)*Dval(dd0011,Di3) + & 6*zeta(1,3)*Dval(dd0011,Di4) + & 6*zeta(1,4)*Dval(dd0011,Di5) E(ee112) = -(dabbr12*eta(1)) - & 2*dabbr14*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) - eta(4)*Dval(dd112,Di4) - & eta(5)*Dval(dd112,Di5) + & 2*(2*dabbr13*(zeta(1,1) + zeta(1,3) + zeta(1,4) - & zeta(2,2) - zeta(2,3) - zeta(2,4)) + & zeta(2,2)*Dval(dd0011,Di3) + & zeta(2,3)*Dval(dd0011,Di4) + & zeta(2,4)*Dval(dd0011,Di5) + & 2*zeta(1,3)*Dval(dd0012,Di4) + & 2*zeta(1,4)*Dval(dd0012,Di5) + & (2*zeta(1,1) + zeta(1,2) + 2*zeta(1,3) + 2*zeta(1,4) - & zeta(2,2) - zeta(2,3) - zeta(2,4))* & Dval(dd0011,Di1)) E(ee113) = -(dabbr15*eta(1)) - & 2*dabbr17*(zeta(1,3) + zeta(2,3) + zeta(3,3) + & zeta(3,4)) - eta(3)*Dval(dd112,Di3) - & eta(5)*Dval(dd113,Di5) + & 2*(2*dabbr16*(zeta(1,1) + zeta(1,2) + zeta(1,4) - & zeta(2,3) - zeta(3,3) - zeta(3,4)) + & zeta(2,3)*Dval(dd0011,Di3) + & zeta(3,3)*Dval(dd0011,Di4) + & zeta(3,4)*Dval(dd0011,Di5) + & 2*zeta(1,2)*Dval(dd0012,Di3) + & 2*zeta(1,4)*Dval(dd0013,Di5) + & (2*zeta(1,1) + 2*zeta(1,2) + zeta(1,3) + 2*zeta(1,4) - & zeta(2,3) - zeta(3,3) - zeta(3,4))* & Dval(dd0022,Di1)) E(ee114) = -(dabbr18*eta(1)) - & 2*dabbr19*(zeta(1,4) + zeta(2,4) + zeta(3,4) + & zeta(4,4)) - eta(3)*Dval(dd113,Di3) - & eta(4)*Dval(dd113,Di4) + & 2*(2*dabbr20*(zeta(1,1) + zeta(1,2) + zeta(1,3) - & zeta(2,4) - zeta(3,4) - zeta(4,4)) + & zeta(2,4)*Dval(dd0011,Di3) + & zeta(3,4)*Dval(dd0011,Di4) + & zeta(4,4)*Dval(dd0011,Di5) + & 2*zeta(1,2)*Dval(dd0013,Di3) + & 2*zeta(1,3)*Dval(dd0013,Di4) + & (2*zeta(1,1) + 2*zeta(1,2) + 2*zeta(1,3) + zeta(1,4) - & zeta(2,4) - zeta(3,4) - zeta(4,4))* & Dval(dd0033,Di1)) E(ee122) = dabbr21*eta(1) - eta(4)*Dval(dd122,Di4) - & eta(5)*Dval(dd122,Di5) + & 2*(2*dabbr13*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) + zeta(1,1)*Dval(dd0011,Di2) + & 2*zeta(2,3)*Dval(dd0012,Di4) + & 2*zeta(2,4)*Dval(dd0012,Di5) + & zeta(1,3)*Dval(dd0022,Di4) + & zeta(1,4)*Dval(dd0022,Di5) - & (zeta(1,1) - zeta(1,2) + zeta(1,3) + zeta(1,4) - & 2*(zeta(2,2) + zeta(2,3) + zeta(2,4)))* & Dval(dd0011,Di1)) E(ee123) = dabbr22*eta(1) - eta(5)*Dval(dd123,Di5) + & 2*(dabbr24*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) + & dabbr23*(zeta(1,3) + zeta(2,3) + zeta(3,3) + & zeta(3,4)) + zeta(1,1)*Dval(dd0012,Di2) + & zeta(2,2)*Dval(dd0012,Di3) + & zeta(3,3)*Dval(dd0012,Di4) + & zeta(3,4)*Dval(dd0012,Di5) + & zeta(2,4)*Dval(dd0013,Di5) + & zeta(1,4)*Dval(dd0023,Di5) + & (-zeta(1,1) - zeta(1,4) + zeta(2,2) + 2*zeta(2,3) + & zeta(2,4) + zeta(3,3) + zeta(3,4))* & Dval(dd0012,Di1)) E(ee124) = dabbr25*eta(1) - eta(4)*Dval(dd123,Di4) + & 2*(dabbr27*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) + & dabbr26*(zeta(1,4) + zeta(2,4) + zeta(3,4) + & zeta(4,4)) + zeta(3,4)*Dval(dd0012,Di4) + & zeta(4,4)*Dval(dd0012,Di5) + & zeta(1,1)*Dval(dd0013,Di2) + & zeta(2,2)*Dval(dd0013,Di3) + & zeta(2,3)*Dval(dd0013,Di4) + & zeta(1,3)*Dval(dd0023,Di4) + & (-zeta(1,1) - zeta(1,3) + zeta(2,2) + zeta(2,3) + & 2*zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd0013,Di1)) E(ee133) = dabbr28*eta(1) - eta(3)*Dval(dd122,Di3) - & eta(5)*Dval(dd133,Di5) + & 2*(2*dabbr16*(zeta(1,3) + zeta(2,3) + zeta(3,3) + & zeta(3,4)) + 2*zeta(2,3)*Dval(dd0012,Di3) + & 2*zeta(3,4)*Dval(dd0013,Di5) + & zeta(1,1)*Dval(dd0022,Di2) + & zeta(1,2)*Dval(dd0022,Di3) + & zeta(1,4)*Dval(dd0033,Di5) - & (zeta(1,1) + zeta(1,2) - zeta(1,3) + zeta(1,4) - & 2*(zeta(2,3) + zeta(3,3) + zeta(3,4)))* & Dval(dd0022,Di1)) E(ee134) = dabbr29*eta(1) - eta(3)*Dval(dd123,Di3) + & 2*(dabbr31*(zeta(1,3) + zeta(2,3) + zeta(3,3) + & zeta(3,4)) + & dabbr30*(zeta(1,4) + zeta(2,4) + zeta(3,4) + & zeta(4,4)) + zeta(2,4)*Dval(dd0012,Di3) + & zeta(2,3)*Dval(dd0013,Di3) + & zeta(3,3)*Dval(dd0013,Di4) + & zeta(4,4)*Dval(dd0013,Di5) + & zeta(1,1)*Dval(dd0023,Di2) + & zeta(1,2)*Dval(dd0023,Di3) + & (-zeta(1,1) - zeta(1,2) + zeta(2,3) + zeta(2,4) + & zeta(3,3) + 2*zeta(3,4) + zeta(4,4))* & Dval(dd0023,Di1)) E(ee144) = dabbr32*eta(1) - eta(3)*Dval(dd133,Di3) - & eta(4)*Dval(dd133,Di4) + & 2*(2*dabbr20*(zeta(1,4) + zeta(2,4) + zeta(3,4) + & zeta(4,4)) + 2*zeta(2,4)*Dval(dd0013,Di3) + & 2*zeta(3,4)*Dval(dd0013,Di4) + & zeta(1,1)*Dval(dd0033,Di2) + & zeta(1,2)*Dval(dd0033,Di3) + & zeta(1,3)*Dval(dd0033,Di4) - & (zeta(1,1) + zeta(1,2) + zeta(1,3) - zeta(1,4) - & 2*(zeta(2,4) + zeta(3,4) + zeta(4,4)))* & Dval(dd0033,Di1)) E(ee222) = -(eta(2)*Dval(dd111,Di2)) - & eta(4)*Dval(dd222,Di4) - eta(5)*Dval(dd222,Di5) - & eta(1)*Dval(dd111,Di1) + & 6*zeta(1,2)*Dval(dd0011,Di2) + & 6*zeta(2,3)*Dval(dd0022,Di4) + & 6*zeta(2,4)*Dval(dd0022,Di5) - & 6*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd0011,Di1) E(ee223) = -(eta(2)*Dval(dd112,Di2)) - & eta(5)*Dval(dd223,Di5) - eta(1)*Dval(dd112,Di1) + & 2*zeta(1,3)*Dval(dd0011,Di2) + & 4*zeta(1,2)*Dval(dd0012,Di2) + & 2*zeta(3,3)*Dval(dd0022,Di4) + & 2*zeta(3,4)*Dval(dd0022,Di5) + & 4*zeta(2,4)*Dval(dd0023,Di5) - & 2*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd0011,Di1) - & 4*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd0012,Di1) E(ee224) = -(eta(2)*Dval(dd113,Di2)) - & eta(4)*Dval(dd223,Di4) - eta(1)*Dval(dd113,Di1) + & 2*zeta(1,4)*Dval(dd0011,Di2) + & 4*zeta(1,2)*Dval(dd0013,Di2) + & 2*zeta(3,4)*Dval(dd0022,Di4) + & 2*zeta(4,4)*Dval(dd0022,Di5) + & 4*zeta(2,3)*Dval(dd0023,Di4) - & 2*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd0011,Di1) - & 4*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd0013,Di1) E(ee233) = -(eta(2)*Dval(dd122,Di2)) - & eta(5)*Dval(dd233,Di5) - eta(1)*Dval(dd122,Di1) + & 4*zeta(1,3)*Dval(dd0012,Di2) + & 2*zeta(1,2)*Dval(dd0022,Di2) + & 2*zeta(2,2)*Dval(dd0022,Di3) + & 4*zeta(3,4)*Dval(dd0023,Di5) + & 2*zeta(2,4)*Dval(dd0033,Di5) - & 4*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd0012,Di1) - & 2*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd0022,Di1) E(ee234) = -(eta(2)*Dval(dd123,Di2)) - & eta(1)*Dval(dd123,Di1) + & 2*(zeta(1,4)*Dval(dd0012,Di2) + & zeta(1,3)*Dval(dd0013,Di2) + & zeta(1,2)*Dval(dd0023,Di2) + & zeta(2,2)*Dval(dd0023,Di3) + & zeta(3,3)*Dval(dd0023,Di4) + & zeta(4,4)*Dval(dd0023,Di5) - & (zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd0012,Di1) - & (zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd0013,Di1) - & (zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd0023,Di1)) E(ee244) = -(eta(2)*Dval(dd133,Di2)) - & eta(4)*Dval(dd233,Di4) - eta(1)*Dval(dd133,Di1) + & 4*zeta(1,4)*Dval(dd0013,Di2) + & 4*zeta(3,4)*Dval(dd0023,Di4) + & 2*zeta(1,2)*Dval(dd0033,Di2) + & 2*zeta(2,2)*Dval(dd0033,Di3) + & 2*zeta(2,3)*Dval(dd0033,Di4) - & 4*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd0013,Di1) - & 2*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd0033,Di1) E(ee333) = -(eta(2)*Dval(dd222,Di2)) - & eta(3)*Dval(dd222,Di3) - eta(5)*Dval(dd333,Di5) - & eta(1)*Dval(dd222,Di1) + & 6*zeta(1,3)*Dval(dd0022,Di2) + & 6*zeta(2,3)*Dval(dd0022,Di3) + & 6*zeta(3,4)*Dval(dd0033,Di5) - & 6*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd0022,Di1) E(ee334) = -(eta(2)*Dval(dd223,Di2)) - & eta(3)*Dval(dd223,Di3) - eta(1)*Dval(dd223,Di1) + & 2*zeta(1,4)*Dval(dd0022,Di2) + & 2*zeta(2,4)*Dval(dd0022,Di3) + & 4*zeta(1,3)*Dval(dd0023,Di2) + & 4*zeta(2,3)*Dval(dd0023,Di3) + & 2*zeta(4,4)*Dval(dd0033,Di5) - & 2*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd0022,Di1) - & 4*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd0023,Di1) E(ee344) = -(eta(2)*Dval(dd233,Di2)) - & eta(3)*Dval(dd233,Di3) - eta(1)*Dval(dd233,Di1) + & 4*zeta(1,4)*Dval(dd0023,Di2) + & 4*zeta(2,4)*Dval(dd0023,Di3) + & 2*zeta(1,3)*Dval(dd0033,Di2) + & 2*zeta(2,3)*Dval(dd0033,Di3) + & 2*zeta(3,3)*Dval(dd0033,Di4) - & 4*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd0023,Di1) - & 2*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd0033,Di1) E(ee444) = -(eta(2)*Dval(dd333,Di2)) - & eta(3)*Dval(dd333,Di3) - eta(4)*Dval(dd333,Di4) - & eta(1)*Dval(dd333,Di1) + & 6*zeta(1,4)*Dval(dd0033,Di2) + & 6*zeta(2,4)*Dval(dd0033,Di3) + & 6*zeta(3,4)*Dval(dd0033,Di4) - & 6*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd0033,Di1) E(ee0000) = (-(detZ/detY) - & 48*(eta(2)*(Dval(dd0000,Di2) - del) + & eta(3)*(Dval(dd0000,Di3) - del) + & eta(4)*(Dval(dd0000,Di4) - del) + & eta(5)*(Dval(dd0000,Di5) - del) + & eta(1)*(Dval(dd0000,Di1) - del)))/48D0 E(ee0011) = -(dabbr11*eta(1)) - & eta(3)*Dval(dd0011,Di3) - & eta(4)*Dval(dd0011,Di4) - & eta(5)*Dval(dd0011,Di5) + & 4*(dabbr33*(zeta(1,1) + zeta(1,2) + zeta(1,3) + & zeta(1,4)) + & zeta(1,2)*(Dval(dd00001,Di3) + del4) + & zeta(1,3)*(Dval(dd00001,Di4) + del4) + & zeta(1,4)*(Dval(dd00001,Di5) + del4)) E(ee0012) = dabbr34*eta(1) - & eta(4)*Dval(dd0012,Di4) - & eta(5)*Dval(dd0012,Di5) + & 2*(dabbr35*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) + & zeta(1,1)*(Dval(dd00001,Di2) + del4) + & zeta(2,2)*(Dval(dd00001,Di3) + del4) + & zeta(2,3)*(Dval(dd00001,Di4) + del4) + & zeta(2,4)*(Dval(dd00001,Di5) + del4) + & zeta(1,3)*(Dval(dd00002,Di4) + del4) + & zeta(1,4)*(Dval(dd00002,Di5) + del4) - & (zeta(1,1) + zeta(1,3) + zeta(1,4) - zeta(2,2) - & zeta(2,3) - zeta(2,4))* & (Dval(dd00001,Di1) + del4)) E(ee0013) = dabbr36*eta(1) - & eta(3)*Dval(dd0012,Di3) - & eta(5)*Dval(dd0013,Di5) + & 2*(dabbr37*(zeta(1,3) + zeta(2,3) + zeta(3,3) + & zeta(3,4)) + & zeta(2,3)*(Dval(dd00001,Di3) + del4) + & zeta(3,3)*(Dval(dd00001,Di4) + del4) + & zeta(3,4)*(Dval(dd00001,Di5) + del4) + & zeta(1,1)*(Dval(dd00002,Di2) + del4) + & zeta(1,2)*(Dval(dd00002,Di3) + del4) + & zeta(1,4)*(Dval(dd00003,Di5) + del4) - & (zeta(1,1) + zeta(1,2) + zeta(1,4) - zeta(2,3) - & zeta(3,3) - zeta(3,4))* & (Dval(dd00002,Di1) + del4)) E(ee0014) = dabbr38*eta(1) - & eta(3)*Dval(dd0013,Di3) - & eta(4)*Dval(dd0013,Di4) + & 2*(dabbr39*(zeta(1,4) + zeta(2,4) + zeta(3,4) + & zeta(4,4)) + & zeta(2,4)*(Dval(dd00001,Di3) + del4) + & zeta(3,4)*(Dval(dd00001,Di4) + del4) + & zeta(4,4)*(Dval(dd00001,Di5) + del4) + & zeta(1,1)*(Dval(dd00003,Di2) + del4) + & zeta(1,2)*(Dval(dd00003,Di3) + del4) + & zeta(1,3)*(Dval(dd00003,Di4) + del4) - & (zeta(1,1) + zeta(1,2) + zeta(1,3) - zeta(2,4) - & zeta(3,4) - zeta(4,4))* & (Dval(dd00003,Di1) + del4)) E(ee0022) = -(eta(2)*Dval(dd0011,Di2)) - & eta(4)*Dval(dd0022,Di4) - & eta(5)*Dval(dd0022,Di5) - & eta(1)*Dval(dd0011,Di1) + & 4*zeta(1,2)*(Dval(dd00001,Di2) + del4) + & 4*zeta(2,3)*(Dval(dd00002,Di4) + del4) + & 4*zeta(2,4)*(Dval(dd00002,Di5) + del4) - & 4*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & (Dval(dd00001,Di1) + del4) E(ee0023) = -(eta(2)*Dval(dd0012,Di2)) - & eta(5)*Dval(dd0023,Di5) - & eta(1)*Dval(dd0012,Di1) + & 2*(zeta(1,3)*(Dval(dd00001,Di2) + del4) + & zeta(1,2)*(Dval(dd00002,Di2) + del4) + & zeta(2,2)*(Dval(dd00002,Di3) + del4) + & zeta(3,3)*(Dval(dd00002,Di4) + del4) + & zeta(3,4)*(Dval(dd00002,Di5) + del4) + & zeta(2,4)*(Dval(dd00003,Di5) + del4) - & (zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & (Dval(dd00001,Di1) + del4) - & (zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & (Dval(dd00002,Di1) + del4)) E(ee0024) = -(eta(2)*Dval(dd0013,Di2)) - & eta(4)*Dval(dd0023,Di4) - & eta(1)*Dval(dd0013,Di1) + & 2*(zeta(1,4)*(Dval(dd00001,Di2) + del4) + & zeta(3,4)*(Dval(dd00002,Di4) + del4) + & zeta(4,4)*(Dval(dd00002,Di5) + del4) + & zeta(1,2)*(Dval(dd00003,Di2) + del4) + & zeta(2,2)*(Dval(dd00003,Di3) + del4) + & zeta(2,3)*(Dval(dd00003,Di4) + del4) - & (zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & (Dval(dd00001,Di1) + del4) - & (zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & (Dval(dd00003,Di1) + del4)) E(ee0033) = -(eta(2)*Dval(dd0022,Di2)) - & eta(3)*Dval(dd0022,Di3) - & eta(5)*Dval(dd0033,Di5) - & eta(1)*Dval(dd0022,Di1) + & 4*zeta(1,3)*(Dval(dd00002,Di2) + del4) + & 4*zeta(2,3)*(Dval(dd00002,Di3) + del4) + & 4*zeta(3,4)*(Dval(dd00003,Di5) + del4) - & 4*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & (Dval(dd00002,Di1) + del4) E(ee0034) = -(eta(2)*Dval(dd0023,Di2)) - & eta(3)*Dval(dd0023,Di3) - & eta(1)*Dval(dd0023,Di1) + & 2*(zeta(1,4)*(Dval(dd00002,Di2) + del4) + & zeta(2,4)*(Dval(dd00002,Di3) + del4) + & zeta(1,3)*(Dval(dd00003,Di2) + del4) + & zeta(2,3)*(Dval(dd00003,Di3) + del4) + & zeta(3,3)*(Dval(dd00003,Di4) + del4) + & zeta(4,4)*(Dval(dd00003,Di5) + del4) - & (zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & (Dval(dd00002,Di1) + del4) - & (zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & (Dval(dd00003,Di1) + del4)) E(ee0044) = -(eta(2)*Dval(dd0033,Di2)) - & eta(3)*Dval(dd0033,Di3) - & eta(4)*Dval(dd0033,Di4) - & eta(1)*Dval(dd0033,Di1) + & 4*zeta(1,4)*(Dval(dd00003,Di2) + del4) + & 4*zeta(2,4)*(Dval(dd00003,Di3) + del4) + & 4*zeta(3,4)*(Dval(dd00003,Di4) + del4) - & 4*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & (Dval(dd00003,Di1) + del4) E(ee1111) = -(dabbr40*eta(1)) - & eta(3)*Dval(dd1111,Di3) - & eta(4)*Dval(dd1111,Di4) - & eta(5)*Dval(dd1111,Di5) + & 8*zeta(1,2)*Dval(dd00111,Di3) + & 8*zeta(1,3)*Dval(dd00111,Di4) + & 8*zeta(1,4)*Dval(dd00111,Di5) + & 8*(zeta(1,1) + zeta(1,2) + zeta(1,3) + zeta(1,4))* & (3*dabbr41 + Dval(dd00,Di1) + & 3*Dval(dd001,Di1) + 3*Dval(dd002,Di1) + & 3*Dval(dd003,Di1) + 3*Dval(dd0011,Di1) + & 6*Dval(dd0012,Di1) + 6*Dval(dd0013,Di1) + & 3*Dval(dd0022,Di1) + 6*Dval(dd0023,Di1) + & 3*Dval(dd0033,Di1) + Dval(dd00111,Di1) + & 3*Dval(dd00112,Di1) + 3*Dval(dd00113,Di1) + & 3*Dval(dd00122,Di1) + 6*Dval(dd00123,Di1) + & 3*Dval(dd00133,Di1) + Dval(dd00222,Di1) + & Dval(dd00333,Di1)) E(ee1112) = -6*dabbr44* & (zeta(1,1) + zeta(1,3) + zeta(1,4) - zeta(2,2) - & zeta(2,3) - zeta(2,4)) - & 6*dabbr43*(2*zeta(1,1) + zeta(1,2) + 2*zeta(1,3) + & 2*zeta(1,4) - zeta(2,2) - zeta(2,3) - zeta(2,4)) - & eta(4)*Dval(dd1112,Di4) - & eta(5)*Dval(dd1112,Di5) + & eta(1)*(3*dabbr42 + Dval(dd1,Di1) + & 3*Dval(dd11,Di1) + 3*Dval(dd12,Di1) + & 3*Dval(dd13,Di1) + 3*Dval(dd111,Di1) + & 6*Dval(dd112,Di1) + 6*Dval(dd113,Di1) + & 3*Dval(dd122,Di1) + 6*Dval(dd123,Di1) + & 3*Dval(dd133,Di1) + Dval(dd1111,Di1) + & 3*Dval(dd1112,Di1) + 3*Dval(dd1113,Di1) + & 3*Dval(dd1122,Di1) + 6*Dval(dd1123,Di1) + & 3*Dval(dd1133,Di1) + Dval(dd1222,Di1) + & Dval(dd1333,Di1)) + & 2*(zeta(2,2)*Dval(dd00111,Di3) + & zeta(2,3)*Dval(dd00111,Di4) + & zeta(2,4)*Dval(dd00111,Di5) + & 3*zeta(1,3)*Dval(dd00112,Di4) + & 3*zeta(1,4)*Dval(dd00112,Di5) + & (-3*zeta(1,1) - 2*zeta(1,2) - 3*zeta(1,3) - & 3*zeta(1,4) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd00111,Di1)) + & 2*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & (3*dabbr41 + Dval(dd00,Di1) + & 3*Dval(dd002,Di1) + 3*Dval(dd003,Di1) + & 3*Dval(dd0022,Di1) + 6*Dval(dd0023,Di1) + & 3*Dval(dd0033,Di1) + Dval(dd00222,Di1) + & Dval(dd00333,Di1)) E(ee1113) = -6*dabbr47* & (zeta(1,1) + zeta(1,2) + zeta(1,4) - zeta(2,3) - & zeta(3,3) - zeta(3,4)) - & 6*dabbr46*(2*zeta(1,1) + 2*zeta(1,2) + zeta(1,3) + & 2*zeta(1,4) - zeta(2,3) - zeta(3,3) - zeta(3,4)) - & eta(3)*Dval(dd1112,Di3) - & eta(5)*Dval(dd1113,Di5) + & eta(1)*(3*dabbr45 + Dval(dd2,Di1) + & 3*Dval(dd12,Di1) + 3*Dval(dd22,Di1) + & 3*Dval(dd23,Di1) + 3*Dval(dd112,Di1) + & 6*Dval(dd122,Di1) + 6*Dval(dd123,Di1) + & 3*Dval(dd222,Di1) + 6*Dval(dd223,Di1) + & 3*Dval(dd233,Di1) + Dval(dd1112,Di1) + & 3*Dval(dd1122,Di1) + 3*Dval(dd1123,Di1) + & 3*Dval(dd1222,Di1) + 6*Dval(dd1223,Di1) + & 3*Dval(dd1233,Di1) + Dval(dd2222,Di1) + & Dval(dd2333,Di1)) + & 2*(zeta(2,3)*Dval(dd00111,Di3) + & zeta(3,3)*Dval(dd00111,Di4) + & zeta(3,4)*Dval(dd00111,Di5) + & 3*zeta(1,2)*Dval(dd00112,Di3) + & 3*zeta(1,4)*Dval(dd00113,Di5) + & (-3*zeta(1,1) - 3*zeta(1,2) - 2*zeta(1,3) - & 3*zeta(1,4) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd00222,Di1)) + & 2*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & (3*dabbr48 + Dval(dd00,Di1) + & 3*Dval(dd001,Di1) + 3*Dval(dd003,Di1) + & 3*Dval(dd0011,Di1) + 6*Dval(dd0013,Di1) + & 3*Dval(dd0033,Di1) + Dval(dd00111,Di1) + & Dval(dd00333,Di1)) E(ee1114) = -6*dabbr51* & (zeta(1,1) + zeta(1,2) + zeta(1,3) - zeta(2,4) - & zeta(3,4) - zeta(4,4)) - & 6*dabbr52*(2*zeta(1,1) + 2*zeta(1,2) + 2*zeta(1,3) + & zeta(1,4) - zeta(2,4) - zeta(3,4) - zeta(4,4)) - & eta(3)*Dval(dd1113,Di3) - & eta(4)*Dval(dd1113,Di4) + & eta(1)*(3*dabbr49 + Dval(dd3,Di1) + & 3*Dval(dd13,Di1) + 3*Dval(dd23,Di1) + & 3*Dval(dd33,Di1) + 3*Dval(dd113,Di1) + & 6*Dval(dd123,Di1) + 6*Dval(dd133,Di1) + & 3*Dval(dd223,Di1) + 6*Dval(dd233,Di1) + & 3*Dval(dd333,Di1) + Dval(dd1113,Di1) + & 3*Dval(dd1123,Di1) + 3*Dval(dd1133,Di1) + & 3*Dval(dd1223,Di1) + 6*Dval(dd1233,Di1) + & 3*Dval(dd1333,Di1) + Dval(dd2223,Di1) + & Dval(dd3333,Di1)) + & 2*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & (3*dabbr50 + Dval(dd00,Di1) + & 3*Dval(dd001,Di1) + 3*Dval(dd002,Di1) + & 3*Dval(dd0011,Di1) + 6*Dval(dd0012,Di1) + & 3*Dval(dd0022,Di1) + Dval(dd00111,Di1) + & Dval(dd00222,Di1)) + & 2*(zeta(2,4)*Dval(dd00111,Di3) + & zeta(3,4)*Dval(dd00111,Di4) + & zeta(4,4)*Dval(dd00111,Di5) + & 3*zeta(1,2)*Dval(dd00113,Di3) + & 3*zeta(1,3)*Dval(dd00113,Di4) + & (-3*zeta(1,1) - 3*zeta(1,2) - 3*zeta(1,3) - & 2*zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd00333,Di1)) E(ee1122) = -(dabbr53*eta(1)) - & 4*dabbr44*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) - eta(4)*Dval(dd1122,Di4) - & eta(5)*Dval(dd1122,Di5) + & 4*(-2*dabbr43*(zeta(2,2) + zeta(2,3) + zeta(2,4)) + & zeta(1,1)*Dval(dd0011,Di1) - & zeta(1,2)*Dval(dd0011,Di1) + & zeta(1,3)*Dval(dd0011,Di1) + & zeta(1,4)*Dval(dd0011,Di1) + & zeta(2,3)*Dval(dd00112,Di4) + & zeta(2,4)*Dval(dd00112,Di5) + & zeta(1,3)*Dval(dd00122,Di4) + & zeta(1,4)*Dval(dd00122,Di5) + & (zeta(1,1) + zeta(1,3) + zeta(1,4) - zeta(2,2) - & zeta(2,3) - zeta(2,4))*Dval(dd00111,Di1) + & zeta(1,1)*Dval(dd00112,Di1) - & zeta(1,2)*Dval(dd00112,Di1) + & zeta(1,3)*Dval(dd00112,Di1) + & zeta(1,4)*Dval(dd00112,Di1) + & (zeta(1,1) - zeta(1,2) + zeta(1,3) + zeta(1,4))* & Dval(dd00113,Di1)) E(ee1123) = -(dabbr54*eta(1)) - & 2*dabbr57*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) - 2*dabbr56* & (zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4)) - & eta(5)*Dval(dd1123,Di5) + & 2*(2*dabbr55*(zeta(1,1) + zeta(1,4) - zeta(2,2) - & 2*zeta(2,3) - zeta(2,4) - zeta(3,3) - zeta(3,4)) + & zeta(2,2)*Dval(dd00112,Di3) + & zeta(3,3)*Dval(dd00112,Di4) + & zeta(3,4)*Dval(dd00112,Di5) + & zeta(2,4)*Dval(dd00113,Di5) + & 2*zeta(1,4)*Dval(dd00123,Di5) + & (2*zeta(1,1) + zeta(1,2) + 2*zeta(1,4) - zeta(2,2) - & 3*zeta(2,3) - zeta(2,4) - 2*zeta(3,3) - 2*zeta(3,4)) & *Dval(dd00112,Di1) + & (2*zeta(1,1) + zeta(1,3) + 2*zeta(1,4) - 2*zeta(2,2) - & 3*zeta(2,3) - 2*zeta(2,4) - zeta(3,3) - zeta(3,4))* & Dval(dd00122,Di1)) E(ee1124) = -(dabbr58*eta(1)) - & 2*dabbr61*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) - 2*dabbr59* & (zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4)) - & eta(4)*Dval(dd1123,Di4) + & 2*(2*dabbr60*(zeta(1,1) + zeta(1,3) - zeta(2,2) - & zeta(2,3) - 2*zeta(2,4) - zeta(3,4) - zeta(4,4)) + & zeta(3,4)*Dval(dd00112,Di4) + & zeta(4,4)*Dval(dd00112,Di5) + & zeta(2,2)*Dval(dd00113,Di3) + & zeta(2,3)*Dval(dd00113,Di4) + & 2*zeta(1,3)*Dval(dd00123,Di4) + & (2*zeta(1,1) + zeta(1,2) + 2*zeta(1,3) - zeta(2,2) - & zeta(2,3) - 3*zeta(2,4) - 2*zeta(3,4) - 2*zeta(4,4)) & *Dval(dd00113,Di1) + & (2*zeta(1,1) + 2*zeta(1,3) + zeta(1,4) - 2*zeta(2,2) - & 2*zeta(2,3) - 3*zeta(2,4) - zeta(3,4) - zeta(4,4))* & Dval(dd00133,Di1)) E(ee1133) = -(dabbr62*eta(1)) - & 4*dabbr47*(zeta(1,3) + zeta(2,3) + zeta(3,3) + & zeta(3,4)) - eta(3)*Dval(dd1122,Di3) - & eta(5)*Dval(dd1133,Di5) + & 4*(-2*dabbr46*(zeta(2,3) + zeta(3,3) + zeta(3,4)) + & zeta(1,1)*Dval(dd0022,Di1) + & zeta(1,2)*Dval(dd0022,Di1) - & zeta(1,3)*Dval(dd0022,Di1) + & zeta(1,4)*Dval(dd0022,Di1) + & zeta(2,3)*Dval(dd00112,Di3) + & zeta(3,4)*Dval(dd00113,Di5) + & zeta(1,2)*Dval(dd00122,Di3) + & zeta(1,4)*Dval(dd00133,Di5) + & zeta(1,1)*Dval(dd00122,Di1) + & zeta(1,2)*Dval(dd00122,Di1) - & zeta(1,3)*Dval(dd00122,Di1) + & zeta(1,4)*Dval(dd00122,Di1) + & (zeta(1,1) + zeta(1,2) + zeta(1,4) - zeta(2,3) - & zeta(3,3) - zeta(3,4))*Dval(dd00222,Di1) + & (zeta(1,1) + zeta(1,2) - zeta(1,3) + zeta(1,4))* & Dval(dd00223,Di1)) E(ee1134) = -(dabbr63*eta(1)) - & 2*dabbr66*(zeta(1,3) + zeta(2,3) + zeta(3,3) + & zeta(3,4)) - 2*dabbr64* & (zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4)) - & eta(3)*Dval(dd1123,Di3) + & 2*(2*dabbr65*(zeta(1,1) + zeta(1,2) - zeta(2,3) - & zeta(2,4) - zeta(3,3) - 2*zeta(3,4) - zeta(4,4)) + & zeta(2,4)*Dval(dd00112,Di3) + & zeta(2,3)*Dval(dd00113,Di3) + & zeta(3,3)*Dval(dd00113,Di4) + & zeta(4,4)*Dval(dd00113,Di5) + & 2*zeta(1,2)*Dval(dd00123,Di3) + & (2*zeta(1,1) + 2*zeta(1,2) + zeta(1,3) - zeta(2,3) - & 2*zeta(2,4) - zeta(3,3) - 3*zeta(3,4) - 2*zeta(4,4)) & *Dval(dd00223,Di1) + & (2*zeta(1,1) + 2*zeta(1,2) + zeta(1,4) - 2*zeta(2,3) - & zeta(2,4) - 2*zeta(3,3) - 3*zeta(3,4) - zeta(4,4))* & Dval(dd00233,Di1)) E(ee1144) = -(dabbr67*eta(1)) - & 4*dabbr51*(zeta(1,4) + zeta(2,4) + zeta(3,4) + & zeta(4,4)) - eta(3)*Dval(dd1133,Di3) - & eta(4)*Dval(dd1133,Di4) + & 4*(-2*dabbr52*(zeta(2,4) + zeta(3,4) + zeta(4,4)) + & zeta(1,1)*Dval(dd0033,Di1) + & zeta(1,2)*Dval(dd0033,Di1) + & zeta(1,3)*Dval(dd0033,Di1) - & zeta(1,4)*Dval(dd0033,Di1) + & zeta(2,4)*Dval(dd00113,Di3) + & zeta(3,4)*Dval(dd00113,Di4) + & zeta(1,2)*Dval(dd00133,Di3) + & zeta(1,3)*Dval(dd00133,Di4) + & zeta(1,1)*Dval(dd00133,Di1) + & zeta(1,2)*Dval(dd00133,Di1) + & zeta(1,3)*Dval(dd00133,Di1) - & zeta(1,4)*Dval(dd00133,Di1) + & (zeta(1,1) + zeta(1,2) + zeta(1,3) - zeta(1,4))* & Dval(dd00233,Di1) + & (zeta(1,1) + zeta(1,2) + zeta(1,3) - zeta(2,4) - & zeta(3,4) - zeta(4,4))*Dval(dd00333,Di1)) E(ee1222) = dabbr68*eta(1) - & eta(4)*Dval(dd1222,Di4) - & eta(5)*Dval(dd1222,Di5) + & 2*(3*dabbr43*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) + zeta(1,1)*Dval(dd00111,Di2) + & 3*zeta(2,3)*Dval(dd00122,Di4) + & 3*zeta(2,4)*Dval(dd00122,Di5) + & zeta(1,3)*Dval(dd00222,Di4) + & zeta(1,4)*Dval(dd00222,Di5) - & (zeta(1,1) - 2*zeta(1,2) + zeta(1,3) + zeta(1,4) - & 3*(zeta(2,2) + zeta(2,3) + zeta(2,4)))* & Dval(dd00111,Di1)) E(ee1223) = dabbr69*eta(1) - & eta(5)*Dval(dd1223,Di5) + & 2*(2*dabbr71*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) + & dabbr70*(zeta(1,3) + zeta(2,3) + zeta(3,3) + & zeta(3,4)) + zeta(1,1)*Dval(dd00112,Di2) + & zeta(3,3)*Dval(dd00122,Di4) + & zeta(3,4)*Dval(dd00122,Di5) + & 2*zeta(2,4)*Dval(dd00123,Di5) + & zeta(1,4)*Dval(dd00223,Di5) + & (-zeta(1,1) + zeta(1,2) - zeta(1,4) + 2*zeta(2,2) + & 3*zeta(2,3) + 2*zeta(2,4) + zeta(3,3) + zeta(3,4))* & Dval(dd00112,Di1)) E(ee1224) = dabbr72*eta(1) - & eta(4)*Dval(dd1223,Di4) + & 2*(2*dabbr74*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) + & dabbr73*(zeta(1,4) + zeta(2,4) + zeta(3,4) + & zeta(4,4)) + zeta(1,1)*Dval(dd00113,Di2) + & zeta(3,4)*Dval(dd00122,Di4) + & zeta(4,4)*Dval(dd00122,Di5) + & 2*zeta(2,3)*Dval(dd00123,Di4) + & zeta(1,3)*Dval(dd00223,Di4) + & (-zeta(1,1) + zeta(1,2) - zeta(1,3) + 2*zeta(2,2) + & 2*zeta(2,3) + 3*zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd00113,Di1)) E(ee1233) = dabbr75*eta(1) - & eta(5)*Dval(dd1233,Di5) + & 2*(dabbr77*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) + & 2*dabbr76*(zeta(1,3) + zeta(2,3) + zeta(3,3) + & zeta(3,4)) + zeta(1,1)*Dval(dd00122,Di2) + & zeta(2,2)*Dval(dd00122,Di3) + & 2*zeta(3,4)*Dval(dd00123,Di5) + & zeta(2,4)*Dval(dd00133,Di5) + & zeta(1,4)*Dval(dd00233,Di5) + & (-zeta(1,1) + zeta(1,3) - zeta(1,4) + zeta(2,2) + & 3*zeta(2,3) + zeta(2,4) + 2*(zeta(3,3) + zeta(3,4))) & *Dval(dd00122,Di1)) E(ee1234) = dabbr78*eta(1) + & 2*(dabbr81*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) + & dabbr80*(zeta(1,3) + zeta(2,3) + zeta(3,3) + & zeta(3,4)) + & dabbr79*(zeta(1,4) + zeta(2,4) + zeta(3,4) + & zeta(4,4)) + zeta(1,1)*Dval(dd00123,Di2) + & zeta(2,2)*Dval(dd00123,Di3) + & zeta(3,3)*Dval(dd00123,Di4) + & zeta(4,4)*Dval(dd00123,Di5) + & (-zeta(1,1) + zeta(2,2) + 2*zeta(2,3) + 2*zeta(2,4) + & zeta(3,3) + 2*zeta(3,4) + zeta(4,4))* & Dval(dd00123,Di1)) E(ee1244) = dabbr82*eta(1) - & eta(4)*Dval(dd1233,Di4) + & 2*(dabbr84*(zeta(1,2) + zeta(2,2) + zeta(2,3) + & zeta(2,4)) + & 2*dabbr83*(zeta(1,4) + zeta(2,4) + zeta(3,4) + & zeta(4,4)) + 2*zeta(3,4)*Dval(dd00123,Di4) + & zeta(1,1)*Dval(dd00133,Di2) + & zeta(2,2)*Dval(dd00133,Di3) + & zeta(2,3)*Dval(dd00133,Di4) + & zeta(1,3)*Dval(dd00233,Di4) + & (-zeta(1,1) - zeta(1,3) + zeta(1,4) + zeta(2,2) + & zeta(2,3) + 3*zeta(2,4) + 2*(zeta(3,4) + zeta(4,4))) & *Dval(dd00133,Di1)) E(ee1333) = dabbr85*eta(1) - & eta(3)*Dval(dd1222,Di3) - & eta(5)*Dval(dd1333,Di5) + & 2*(3*dabbr46*(zeta(1,3) + zeta(2,3) + zeta(3,3) + & zeta(3,4)) + 3*zeta(2,3)*Dval(dd00122,Di3) + & 3*zeta(3,4)*Dval(dd00133,Di5) + & zeta(1,1)*Dval(dd00222,Di2) + & zeta(1,2)*Dval(dd00222,Di3) + & zeta(1,4)*Dval(dd00333,Di5) - & (zeta(1,1) + zeta(1,2) - 2*zeta(1,3) + zeta(1,4) - & 3*(zeta(2,3) + zeta(3,3) + zeta(3,4)))* & Dval(dd00222,Di1)) E(ee1334) = dabbr86*eta(1) - & eta(3)*Dval(dd1223,Di3) + & 2*(2*dabbr88*(zeta(1,3) + zeta(2,3) + zeta(3,3) + & zeta(3,4)) + & dabbr87*(zeta(1,4) + zeta(2,4) + zeta(3,4) + & zeta(4,4)) + zeta(2,4)*Dval(dd00122,Di3) + & 2*zeta(2,3)*Dval(dd00123,Di3) + & zeta(4,4)*Dval(dd00133,Di5) + & zeta(1,1)*Dval(dd00223,Di2) + & zeta(1,2)*Dval(dd00223,Di3) + & (-zeta(1,1) - zeta(1,2) + zeta(1,3) + 2*zeta(2,3) + & zeta(2,4) + 2*zeta(3,3) + 3*zeta(3,4) + zeta(4,4))* & Dval(dd00223,Di1)) E(ee1344) = dabbr89*eta(1) - & eta(3)*Dval(dd1233,Di3) + & 2*(dabbr91*(zeta(1,3) + zeta(2,3) + zeta(3,3) + & zeta(3,4)) + & 2*dabbr90*(zeta(1,4) + zeta(2,4) + zeta(3,4) + & zeta(4,4)) + 2*zeta(2,4)*Dval(dd00123,Di3) + & zeta(2,3)*Dval(dd00133,Di3) + & zeta(3,3)*Dval(dd00133,Di4) + & zeta(1,1)*Dval(dd00233,Di2) + & zeta(1,2)*Dval(dd00233,Di3) + & (-zeta(1,1) - zeta(1,2) + zeta(1,4) + zeta(2,3) + & 2*zeta(2,4) + zeta(3,3) + 3*zeta(3,4) + 2*zeta(4,4)) & *Dval(dd00233,Di1)) E(ee1444) = dabbr92*eta(1) - & eta(3)*Dval(dd1333,Di3) - & eta(4)*Dval(dd1333,Di4) + & 2*(3*dabbr52*(zeta(1,4) + zeta(2,4) + zeta(3,4) + & zeta(4,4)) + 3*zeta(2,4)*Dval(dd00133,Di3) + & 3*zeta(3,4)*Dval(dd00133,Di4) + & zeta(1,1)*Dval(dd00333,Di2) + & zeta(1,2)*Dval(dd00333,Di3) + & zeta(1,3)*Dval(dd00333,Di4) - & (zeta(1,1) + zeta(1,2) + zeta(1,3) - 2*zeta(1,4) - & 3*(zeta(2,4) + zeta(3,4) + zeta(4,4)))* & Dval(dd00333,Di1)) E(ee2222) = -(eta(2)*Dval(dd1111,Di2)) - & eta(4)*Dval(dd2222,Di4) - & eta(5)*Dval(dd2222,Di5) - & eta(1)*Dval(dd1111,Di1) + & 8*zeta(1,2)*Dval(dd00111,Di2) + & 8*zeta(2,3)*Dval(dd00222,Di4) + & 8*zeta(2,4)*Dval(dd00222,Di5) - & 8*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd00111,Di1) E(ee2223) = -(eta(2)*Dval(dd1112,Di2)) - & eta(5)*Dval(dd2223,Di5) - & eta(1)*Dval(dd1112,Di1) + & 2*zeta(1,3)*Dval(dd00111,Di2) + & 6*zeta(1,2)*Dval(dd00112,Di2) + & 2*zeta(3,3)*Dval(dd00222,Di4) + & 2*zeta(3,4)*Dval(dd00222,Di5) + & 6*zeta(2,4)*Dval(dd00223,Di5) - & 2*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd00111,Di1) - & 6*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd00112,Di1) E(ee2224) = -(eta(2)*Dval(dd1113,Di2)) - & eta(4)*Dval(dd2223,Di4) - & eta(1)*Dval(dd1113,Di1) + & 2*zeta(1,4)*Dval(dd00111,Di2) + & 6*zeta(1,2)*Dval(dd00113,Di2) + & 2*zeta(3,4)*Dval(dd00222,Di4) + & 2*zeta(4,4)*Dval(dd00222,Di5) + & 6*zeta(2,3)*Dval(dd00223,Di4) - & 2*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd00111,Di1) - & 6*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd00113,Di1) E(ee2233) = -(eta(2)*Dval(dd1122,Di2)) - & eta(5)*Dval(dd2233,Di5) - & eta(1)*Dval(dd1122,Di1) + & 4*(zeta(1,3)*Dval(dd00112,Di2) + & zeta(1,2)*Dval(dd00122,Di2) + & zeta(3,4)*Dval(dd00223,Di5) + & zeta(2,4)*Dval(dd00233,Di5) - & (zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd00112,Di1) - & (zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd00122,Di1)) E(ee2234) = -(eta(2)*Dval(dd1123,Di2)) - & eta(1)*Dval(dd1123,Di1) + & 2*(zeta(1,4)*Dval(dd00112,Di2) + & zeta(1,3)*Dval(dd00113,Di2) + & 2*zeta(1,2)*Dval(dd00123,Di2) + & zeta(3,3)*Dval(dd00223,Di4) + & zeta(4,4)*Dval(dd00223,Di5) - & (zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd00112,Di1) - & (zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd00113,Di1) - & 2*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd00123,Di1)) E(ee2244) = -(eta(2)*Dval(dd1133,Di2)) - & eta(4)*Dval(dd2233,Di4) - & eta(1)*Dval(dd1133,Di1) + & 4*(zeta(1,4)*Dval(dd00113,Di2) + & zeta(1,2)*Dval(dd00133,Di2) + & zeta(3,4)*Dval(dd00223,Di4) + & zeta(2,3)*Dval(dd00233,Di4) - & (zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd00113,Di1) - & (zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd00133,Di1)) E(ee2333) = -(eta(2)*Dval(dd1222,Di2)) - & eta(5)*Dval(dd2333,Di5) - & eta(1)*Dval(dd1222,Di1) + & 6*zeta(1,3)*Dval(dd00122,Di2) + & 2*zeta(1,2)*Dval(dd00222,Di2) + & 2*zeta(2,2)*Dval(dd00222,Di3) + & 6*zeta(3,4)*Dval(dd00233,Di5) + & 2*zeta(2,4)*Dval(dd00333,Di5) - & 6*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd00122,Di1) - & 2*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd00222,Di1) E(ee2334) = -(eta(2)*Dval(dd1223,Di2)) - & eta(1)*Dval(dd1223,Di1) + & 2*(zeta(1,4)*Dval(dd00122,Di2) + & 2*zeta(1,3)*Dval(dd00123,Di2) + & zeta(1,2)*Dval(dd00223,Di2) + & zeta(2,2)*Dval(dd00223,Di3) + & zeta(4,4)*Dval(dd00233,Di5) - & (zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd00122,Di1) - & 2*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd00123,Di1) - & (zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd00223,Di1)) E(ee2344) = -(eta(2)*Dval(dd1233,Di2)) - & eta(1)*Dval(dd1233,Di1) + & 2*(2*zeta(1,4)*Dval(dd00123,Di2) + & zeta(1,3)*Dval(dd00133,Di2) + & zeta(1,2)*Dval(dd00233,Di2) + & zeta(2,2)*Dval(dd00233,Di3) + & zeta(3,3)*Dval(dd00233,Di4) - & 2*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd00123,Di1) - & (zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd00133,Di1) - & (zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd00233,Di1)) E(ee2444) = -(eta(2)*Dval(dd1333,Di2)) - & eta(4)*Dval(dd2333,Di4) - & eta(1)*Dval(dd1333,Di1) + & 6*zeta(1,4)*Dval(dd00133,Di2) + & 6*zeta(3,4)*Dval(dd00233,Di4) + & 2*zeta(1,2)*Dval(dd00333,Di2) + & 2*zeta(2,2)*Dval(dd00333,Di3) + & 2*zeta(2,3)*Dval(dd00333,Di4) - & 6*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd00133,Di1) - & 2*(zeta(1,2) + zeta(2,2) + zeta(2,3) + zeta(2,4))* & Dval(dd00333,Di1) E(ee3333) = -(eta(2)*Dval(dd2222,Di2)) - & eta(3)*Dval(dd2222,Di3) - & eta(5)*Dval(dd3333,Di5) - & eta(1)*Dval(dd2222,Di1) + & 8*zeta(1,3)*Dval(dd00222,Di2) + & 8*zeta(2,3)*Dval(dd00222,Di3) + & 8*zeta(3,4)*Dval(dd00333,Di5) - & 8*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd00222,Di1) E(ee3334) = -(eta(2)*Dval(dd2223,Di2)) - & eta(3)*Dval(dd2223,Di3) - & eta(1)*Dval(dd2223,Di1) + & 2*zeta(1,4)*Dval(dd00222,Di2) + & 2*zeta(2,4)*Dval(dd00222,Di3) + & 6*zeta(1,3)*Dval(dd00223,Di2) + & 6*zeta(2,3)*Dval(dd00223,Di3) + & 2*zeta(4,4)*Dval(dd00333,Di5) - & 2*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd00222,Di1) - & 6*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd00223,Di1) E(ee3344) = -(eta(2)*Dval(dd2233,Di2)) - & eta(3)*Dval(dd2233,Di3) - & eta(1)*Dval(dd2233,Di1) + & 4*(zeta(1,4)*Dval(dd00223,Di2) + & zeta(2,4)*Dval(dd00223,Di3) + & zeta(1,3)*Dval(dd00233,Di2) + & zeta(2,3)*Dval(dd00233,Di3) - & (zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd00223,Di1) - & (zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd00233,Di1)) E(ee3444) = -(eta(2)*Dval(dd2333,Di2)) - & eta(3)*Dval(dd2333,Di3) - & eta(1)*Dval(dd2333,Di1) + & 6*zeta(1,4)*Dval(dd00233,Di2) + & 6*zeta(2,4)*Dval(dd00233,Di3) + & 2*zeta(1,3)*Dval(dd00333,Di2) + & 2*zeta(2,3)*Dval(dd00333,Di3) + & 2*zeta(3,3)*Dval(dd00333,Di4) - & 6*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd00233,Di1) - & 2*(zeta(1,3) + zeta(2,3) + zeta(3,3) + zeta(3,4))* & Dval(dd00333,Di1) E(ee4444) = -(eta(2)*Dval(dd3333,Di2)) - & eta(3)*Dval(dd3333,Di3) - & eta(4)*Dval(dd3333,Di4) - & eta(1)*Dval(dd3333,Di1) + & 8*zeta(1,4)*Dval(dd00333,Di2) + & 8*zeta(2,4)*Dval(dd00333,Di3) + & 8*zeta(3,4)*Dval(dd00333,Di4) - & 8*(zeta(1,4) + zeta(2,4) + zeta(3,4) + zeta(4,4))* & Dval(dd00333,Di1) if( dump ) call XDumpCoeff(5, E) end herwig++-2.6.0.orig/Looptools/E/ffxe0.F0000644000175000017500000004746311754474774020312 0ustar sylvestresylvestre#include "externals.h" * $Id: ffxe0.f,v 1.4 1996/01/10 15:36:51 gj Exp $ *###[ ffxe0: subroutine ffxe0(ce0,cd0i,xpi,ier) ***#[*comment:*********************************************************** * * * calculate * * * * 1 / / \-1* * e0= -----\dq |(q^2-m_1^2)((q+p_1)^2-m_2^2)...((q-p_5)^2-m_5^2| * * ipi^2/ \ / * * * * following the five four-point-function method in .... * * As an extra the five fourpoint function Di are also returned * * if ( ldot ) the dotproducts are left behind in fpij5(15,15) in * * /ffdot/ and the external determinants fdel4 and fdl3i(5) in * * /ffdel/. * * * * Input: xpi = m_i^2 (real) i=1,5 * * xpi = p_i.p_i (real) i=6,10 (note: B&D metric) * * xpi = (p_i+p_{i+1})^2 (r) i=11,15 * * xpi = (p_i+p_{i+2})^2 (r) i=16,20 OR 0 * * * * Output: ce0 (complex) * * cd0i(5) (complex) D0 with s_i missing * * ier (integr) 0=ok 1=inaccurate 2=error * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE PRECISION xpi(20) DOUBLE COMPLEX ce0,cd0i(5) integer ier * * local variables * integer i,j,NMIN,NMAX,ier0,i6,i7,i8,i9 parameter(NMIN=15,NMAX=20) DOUBLE PRECISION dpipj(NMIN,NMAX),xmax logical lp5(NMAX-NMIN) * * common blocks: * #include "ff.h" * #] declarations: * #[ get differences: * * simulate the differences in the masses etc.. * * first p16-p20 * do 5 i=1,5 if ( xpi(i+15) .eq. 0 ) then i6 = i+5 i7 = i6+1 if ( i7 .ge. 11 ) i7 = 6 i8 = i7+1 if ( i8 .ge. 11 ) i8 = 6 i9 = i8+1 if ( i9 .ge. 11 ) i9 = 6 xpi(i+15) = xpi(i6)+xpi(i7)+xpi(i8)-xpi(i6+5)-xpi(i7+5)+ + xpi(i9+5) xmax = max(abs(xpi(i6)),abs(xpi(i7)),abs(xpi(i8)),abs( + xpi(i6+5)),abs(xpi(i7+5)),abs(xpi(i9+5))) if ( abs(xpi(i+15)) .lt. xloss*xmax ) + call ffwarn(168,ier,xpi(i+15),xmax) lp5(i) = .TRUE. else lp5(i) = .FALSE. endif 5 continue * * next the differences * ier0 = 0 do 40 i=1,NMAX do 30 j=1,NMIN dpipj(j,i) = xpi(j) - xpi(i) 30 continue 40 continue * #] get differences: * #[ call ffxe0a: call ffxe0a(ce0,cd0i,xpi,dpipj,ier) * #] call ffxe0a: * #[ clean up: do 90 i=1,5 if ( lp5(i) ) then xpi(i+NMIN) = 0 endif 90 continue * #] clean up: *###] ffxe0: end *###[ ffxe0a: subroutine ffxe0a(ce0,cd0i,xpi,dpipj,ier) ***#[*comment:*********************************************************** * * * calculate * * * * 1 / / \-1* * e0= -----\dq |(q^2-m_1^2)((q+p_1)^2-m_2^2)...((q-p_5)^2-m_5^2| * * ipi^2/ \ / * * * * following the five four-point-function method in .... * * As an extra the five fourpoint function Di are also returned * * if ( ldot ) the dotproducts are left behind in fpij5(15,15) in * * /ffdot/ and the external determinants fdel4 and fdl3i(5) in * * /ffdel/. * * * * Input: xpi = m_i^2 (real) i=1,5 * * xpi = p_i.p_i (real) i=6,10 (note: B&D metric) * * xpi = (p_i+p_{i+1})^2 (r) i=11,15 * * xpi = (p_i+p_{i+2})^2 (r) i=16,20 * * dpipj(15,20) (real) = pi(i) - pi(j) * * * * Output: ce0 (complex) * * cd0i(5) (complex) D0 with s_i missing * * ier (integer) <50:lost # digits 100=error * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE COMPLEX ce0,cd0i(5) DOUBLE PRECISION xpi(20),dpipj(15,20) * * local variables * integer i,j,ii(10),ii4(6),ieri(5),ier0,imin,itype,ndiv,idone, + ier1 logical ldel2s DOUBLE COMPLEX c,cfac,cs,csum DOUBLE PRECISION dl5s,dl4p,xpi4(13),dpipj4(10,13),piDpj4(10,10), + absc,xmax,piDpj(15,15),xqi4(13),dqiqj4(10,13), + qiDqj4(10,10),del2s,xmx5(5),dl4ri(5) save ii4 * * common blocks: * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * * data * data ii4 /5,6,7,8,9,10/ * * #] declarations: * #[ initialisations: ndiv = 0 idsub = 0 ce0 = 0 do 1 i=1,5 cd0i(i) = 0 1 continue * #] initialisations: * #[ calculations: * idsub = idsub + 1 call ffdot5(piDpj,xpi,dpipj,ier) if ( ldot ) then do 6 i=1,15 do 5 j=1,15 fpij5(j,i) = piDpj(j,i) 5 continue 6 continue do 10 i=1,10 ii(i) = i+5 10 continue idsub = idsub + 1 ier0 = 0 call ffdl4p(dl4p,piDpj,ii) * if ( dl4p .lt. 0 ) then * call fferr(57,ier) * endif fdel4 = dl4p endif idsub = idsub + 1 call ffdel5(dl5s,xpi,piDpj) * do 40 i=1,5 ieri(i) = ier 40 continue * do 100 i=1,5 * * get the coefficient determinant * idsub = idsub + 1 call ffdl4r(dl4ri(i),piDpj,i) * * get four-point momenta * call ffpi54(xpi4,dpipj4,piDpj4,xpi,dpipj,piDpj,i) * * first try IR divergent function to avoid error messages from ffrot4 * ier1 = ieri(i) call ffxdir(cs,cfac,idone,xpi4,dpipj4,6,ndiv,ier1) if ( idone .gt. 0 ) then * done xmax = abs(cs)*10d0**(-mod((ier1-ieri(i)),50)) else * * rotate to calculable posistion * call ffrot4(irota4,del2s,xqi4,dqiqj4,qiDqj4,xpi4,dpipj4, + piDpj4,5,itype,ieri(i)) if ( itype .lt. 0 ) then print *,'ffxe0: error: Cannot handle this ', + ' 4point masscombination yet:' print *,(xpi(j),j=1,20) return endif if ( itype .eq. 1 ) then ldel2s = .TRUE. isgnal = +1 print *,'ffxe0a: Cannot handle del2s = 0 yet' stop else ldel2s = .FALSE. endif if ( itype .eq. 2 ) then print *,'ffxe0a: no doubly IR divergent yet' stop endif * * get fourpoint function * ier0 = ieri(i) call ffxd0e(cs,cfac,xmax, .FALSE.,ndiv,xqi4,dqiqj4, + qiDqj4,del2s,ldel2s,ieri(i)) if ( ieri(i).gt.10 ) then isgnal = -isgnal ieri(i) = ier0 call ffxd0e(cs,cfac,xmax, .TRUE.,ndiv,xqi4,dqiqj4, + qiDqj4,del2s,ldel2s,ieri(i)) isgnal = -isgnal endif endif * * Finally ... * cd0i(i) = cs*cfac xmx5(i) = xmax*absc(cfac) if ( ldot ) then call ffdl3p(fdl3i(i),piDpj4,10,ii4,ii4) * let's hope tha tthese have been set by ffxd0e... fdl4si(i) = fdel4s endif 100 continue * * #] calculations: * #[ add all up: * csum = 0 xmax = 0 imin = 1 do 200 i=1,5 imin = -imin csum = csum + imin*DBLE(dl4ri(i))*cd0i(i) if ( ieri(i) .gt. 50 ) then ieri(i) = mod(ieri(i),50) endif xmax = max(xmax,dl4ri(i)*xmx5(i)*DBLE(10)**mod(ieri(i),50)) 200 continue * * If the imaginary part is very small it most likely is zero * (can be removed, just esthetically more pleasing) * if ( abs(DIMAG(csum)) .lt. precc*abs(DBLE(csum)) ) + csum = DCMPLX(DBLE(csum)) * * Finally ... * ce0 = csum*(1/DBLE(2*dl5s)) * * #] add all up: *###] ffxe0a: end *###[ ffxe00: subroutine ffxe00(ce0,cd0i,dl4ri,xpi,piDpj) ***#[*comment:*********************************************************** * * * calculate * * * * 1 / / \-1* * e0= -----\dq |(q^2-m_1^2)((q+p_1)^2-m_2^2)...((q-p_5)^2-m_5^2| * * ipi^2/ \ / * * * * following the five four-point-function method in .... * * The four five fourpoint function Di are input in this version. * * * * Input: cd0i(5) (complex) D0 with s_i missing * * dl4ri(5) (real) coeff of D0 * * xpi = m_i^2 (real) i=1,5 * * xpi = p_i.p_i (real) i=6,10 (note: B&D metric) * * xpi = (p_i+p_{i+1})^2 (r) i=11,15 * * xpi = (p_i+p_{i+2})^2 (r) i=16,20 * * piDpj(15,15) (real) pi.pj * * * * Output: ce0 (complex) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * DOUBLE COMPLEX ce0,cd0i(5) DOUBLE PRECISION dl4ri(5),xpi(20),piDpj(15,15) * * local variables * integer i,ii(10),imin DOUBLE COMPLEX c,csum DOUBLE PRECISION dl5s,dl4p,absc,xmax * * common blocks: * #include "ff.h" * * statement function * absc(c) = abs(DBLE(c)) + abs(DIMAG(c)) * #] declarations: * #[ initialisations: * idsub = idsub + 1 ce0 = 0 * * #] initialisations: * #[ calculations: * if ( ldot ) then do 10 i=1,10 ii(i) = i+5 10 continue idsub = idsub + 1 call ffdl4p(dl4p,piDpj,ii) fdel4 = dl4p endif idsub = idsub + 1 call ffdel5(dl5s,xpi,piDpj) * * #] calculations: * #[ add all up: * csum = 0 xmax = 0 imin = 1 do 200 i=1,5 imin = -imin csum = csum + imin*DBLE(dl4ri(i))*cd0i(i) xmax = max(xmax,abs(dl4ri(i))*absc(cd0i(i))) 200 continue * * If the imaginary part is very small it most likely is zero * (can be removed, just esthetically more pleasing) * if ( abs(DIMAG(csum)) .lt. precc*abs(DBLE(csum)) ) + csum = DCMPLX(DBLE(csum)) * * Finally ... * ce0 = csum*(1/DBLE(2*dl5s)) * * #] add all up: *###] ffxe00: end *###[ ffdot5: subroutine ffdot5(piDpj,xpi,dpipj,ier) ***#[*comment:*********************************************************** * * * calculate the dotproducts pi.pj with * * * * xpi(i) = s_i i=1,5 * * xpi(i) = p_i i=6,10 * * xpi(i) = p_i+p_{i+1} i=11,15 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer ier DOUBLE PRECISION xpi(20),dpipj(15,20),piDpj(15,15) * * local variables * integer is1,is2,is3,is4,ip6,ip7,ip8,ip11,ip12,ip14, + itel,i1,i2,i3,i4,i5,i6,ierin * * common blocks * #include "ff.h" * * data * * #] declarations: * #[ indices: ierin = ier do 10 is1=1,5 is2 = is1 + 1 if ( is2 .eq. 6 ) is2 = 1 is3 = is2 + 1 if ( is3 .eq. 6 ) is3 = 1 ip6 = is1 + 5 ip7 = is2 + 5 ip11 = ip6 + 5 * * we have now defined a 3point function * * | -p11 * | * / \ * s1/ \s3 * ___/_____\___ * p6 s2 p7 * * #] indices: * #[ all in one vertex: * * pi.pi, si.si * piDpj(is1,is1) = xpi(is1) piDpj(ip6,ip6) = xpi(ip6) piDpj(ip11,ip11) = xpi(ip11) * * si.s(i+1) * if ( xpi(is2) .le. xpi(is1) ) then piDpj(is1,is2) = (dpipj(is1,ip6) + xpi(is2))/2 else piDpj(is1,is2) = (dpipj(is2,ip6) + xpi(is1))/2 endif piDpj(is2,is1) = piDpj(is1,is2) * * si.s(i+2) * if ( xpi(is1) .le. xpi(is3) ) then piDpj(is3,is1) = (dpipj(is3,ip11) + xpi(is1))/2 else piDpj(is3,is1) = (dpipj(is1,ip11) + xpi(is3))/2 endif piDpj(is1,is3) = piDpj(is3,is1) * * pi.si * if ( abs(xpi(ip6)) .le. xpi(is1) ) then piDpj(ip6,is1) = (dpipj(is2,is1) - xpi(ip6))/2 else piDpj(ip6,is1) = (dpipj(is2,ip6) - xpi(is1))/2 endif piDpj(is1,ip6) = piDpj(ip6,is1) * * pi.s(i+1) * if ( abs(xpi(ip6)) .le. xpi(is2) ) then piDpj(ip6,is2) = (dpipj(is2,is1) + xpi(ip6))/2 else piDpj(ip6,is2) = (dpipj(ip6,is1) + xpi(is2))/2 endif piDpj(is2,ip6) = piDpj(ip6,is2) * * p(i+2).s(i) * if ( abs(xpi(ip11)) .le. xpi(is1) ) then piDpj(ip11,is1) = -(dpipj(is1,is3) + xpi(ip11))/2 else piDpj(ip11,is1) = -(dpipj(ip11,is3) + xpi(is1))/2 endif piDpj(is1,ip11) = piDpj(ip11,is1) * * p(i+2).s(i+2) * if ( abs(xpi(ip11)) .le. xpi(is3) ) then piDpj(ip11,is3) = -(dpipj(is1,is3) - xpi(ip11))/2 else piDpj(ip11,is3) = -(dpipj(is1,ip11) - xpi(is3))/2 endif piDpj(is3,ip11) = piDpj(ip11,is3) * #] all in one vertex: * #[ all in one 3point: * * pi.s(i+2) * if ( min(abs(dpipj(is2,is1)),abs(dpipj(ip11,ip7))) .le. + min(abs(dpipj(ip11,is1)),abs(dpipj(is2,ip7))) ) then piDpj(ip6,is3) = (dpipj(ip11,ip7) + dpipj(is2,is1))/2 else piDpj(ip6,is3) = (dpipj(ip11,is1) + dpipj(is2,ip7))/2 endif piDpj(is3,ip6) = piDpj(ip6,is3) * * p(i+1).s(i) * if ( min(abs(dpipj(is3,is2)),abs(dpipj(ip6,ip11))) .le. + min(abs(dpipj(ip6,is2)),abs(dpipj(is3,ip11))) ) then piDpj(ip7,is1) = (dpipj(ip6,ip11) + dpipj(is3,is2))/2 else piDpj(ip7,is1) = (dpipj(ip6,is2) + dpipj(is3,ip11))/2 endif piDpj(is1,ip7) = piDpj(ip7,is1) * * p(i+2).s(i+1) * if ( min(abs(dpipj(is1,is3)),abs(dpipj(ip7,ip6))) .le. + min(abs(dpipj(ip7,is3)),abs(dpipj(is1,ip6))) ) then piDpj(ip11,is2) = -(dpipj(ip7,ip6) + dpipj(is1,is3))/2 else piDpj(ip11,is2) = -(dpipj(ip7,is3) + dpipj(is1,ip6))/2 endif piDpj(is2,ip11) = piDpj(ip11,is2) * #] all in one 3point: * #[ all external 3point: * * pi.p(i+1) * if ( abs(xpi(ip7)) .le. abs(xpi(ip6)) ) then piDpj(ip6,ip7) = (dpipj(ip11,ip6) - xpi(ip7))/2 else piDpj(ip6,ip7) = (dpipj(ip11,ip7) - xpi(ip6))/2 endif piDpj(ip7,ip6) = piDpj(ip6,ip7) * * p(i+1).p(i+2) * if ( abs(xpi(ip11)) .le. abs(xpi(ip7)) ) then piDpj(ip7,ip11) = -(dpipj(ip6,ip7) - xpi(ip11))/2 else piDpj(ip7,ip11) = -(dpipj(ip6,ip11) - xpi(ip7))/2 endif piDpj(ip11,ip7) = piDpj(ip7,ip11) * * p(i+2).p(i) * if ( abs(xpi(ip6)) .le. abs(xpi(ip11)) ) then piDpj(ip11,ip6) = -(dpipj(ip7,ip11) - xpi(ip6))/2 else piDpj(ip11,ip6) = -(dpipj(ip7,ip6) - xpi(ip11))/2 endif piDpj(ip6,ip11) = piDpj(ip11,ip6) * #] all external 3point: * #[ the other 3point: is4 = is3 + 1 if ( is4 .eq. 6 ) is4 = 1 ip8 = is3 + 5 ip14 = is4 + 10 * * we now work with the threepoint configuration * * | p14 * | * / \ * s1/ \s4 * ___/_____\___ * p11 s3 p8 * * s1.p8 * do 11 itel = 1,3 if ( itel .eq. 1 ) then i1 = is1 i2 = is3 i3 = is4 i4 = ip11 i5 = ip8 i6 = ip14 elseif ( itel .eq. 2 ) then i1 = is3 i2 = is4 i3 = is1 i4 = ip8 i5 = ip14 i6 = ip11 else i1 = is4 i2 = is1 i3 = is3 i4 = ip14 i5 = ip11 i6 = ip8 endif * * in one go: the opposite sides * if ( min(abs(dpipj(i3,i2)),abs(dpipj(i4,i6))) .le. + min(abs(dpipj(i4,i2)),abs(dpipj(i3,i6))) ) then piDpj(i5,i1) = (dpipj(i3,i2) + dpipj(i4,i6))/2 else piDpj(i5,i1) = (dpipj(i4,i2) + dpipj(i3,i6))/2 endif piDpj(i1,i5) = piDpj(i5,i1) * * and the remaining external ones * if ( abs(xpi(i5)) .le. abs(xpi(i4)) ) then piDpj(i4,i5) = (dpipj(i6,i4) - xpi(i5))/2 else piDpj(i4,i5) = (dpipj(i6,i5) - xpi(i4))/2 endif piDpj(i5,i4) = piDpj(i4,i5) 11 continue * #] the other 3point: * #[ 4point indices: ip12 = ip7+5 * * we now have the fourpoint configuration * * \p14 /p8 * \____/ * | s4 | * s1| |s3 * |____| * p6/ s2 \p7 * / \ * * * do 12 itel = 1,2 if ( itel .eq. 1 ) then i1 = ip6 i2 = ip8 i3 = ip7 i4 = ip14 else i1 = ip7 i2 = ip14 i3 = ip6 i4 = ip8 endif if ( min(abs(dpipj(i3,ip11)),abs(dpipj(i4,ip12))) .le. + min(abs(dpipj(i4,ip11)),abs(dpipj(i3,ip12))) ) then piDpj(i1,i2) = (dpipj(i3,ip11) + dpipj(i4,ip12))/2 else piDpj(i1,i2) = (dpipj(i4,ip11) + dpipj(i3,ip12))/2 endif piDpj(i2,i1) = piDpj(i1,i2) 12 continue * * we are only left with p11.p12 etc. * if ( min(abs(dpipj(ip14,ip8)),abs(dpipj(ip7,ip6))) .le. + min(abs(dpipj(ip7,ip8)),abs(dpipj(ip14,ip6))) ) then piDpj(ip11,ip12) = (dpipj(ip7,ip6) + dpipj(ip14,ip8))/2 else piDpj(ip11,ip12) = (dpipj(ip7,ip8) + dpipj(ip14,ip6))/2 endif piDpj(ip12,ip11) = piDpj(ip11,ip12) 10 continue * #] 4point indices: *###] ffdot5: end *###[ ffpi54: subroutine ffpi54(xpi4,dpipj4,piDpj4,xpi,dpipj,piDpj,inum) ***#[*comment:*********************************************************** * * * Gets the dotproducts pertaining to the fourpoint function with * * s_i missing out of the five point function dotproduct array. * * * * Input: xpi real(20) si.si,pi.pi * * dpipj real(15,20) xpi(i) - xpi(j) * * piDpj real(15,15) pi(i).pi(j) * * inum integer 1--5 * * * * Output: xpi4 real(13) * * dpipj4 real(10,13) * * piDpj4 real(10,10) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments * integer inum DOUBLE PRECISION xpi(20),dpipj(15,20),piDpj(15,15),xpi4(13), + dpipj4(10,13),piDpj4(10,10) * * local variables * integer i,j,iplace(11,5),isigns(11,5) save iplace,isigns * * common blocks * #include "ff.h" * * data * data iplace / + 2,3,4,5, 07,08,09,15, 12,13, 17, + 1,3,4,5, 11,08,09,10, 14,13, 18, + 1,2,4,5, 06,12,09,10, 14,15, 19, + 1,2,3,5, 06,07,13,10, 11,15, 20, + 1,2,3,4, 06,07,08,14, 11,12, 16/ * data isigns / + +1,+1,+1,+1, +1,+1,+1,+1, -1,+1, +1, + +1,+1,+1,+1, +1,+1,+1,+1, +1,+1, +1, + +1,+1,+1,+1, +1,+1,+1,+1, +1,-1, +1, + +1,+1,+1,+1, +1,+1,+1,+1, -1,-1, +1, + +1,+1,+1,+1, +1,+1,+1,+1, -1,+1, +1/ * #] declarations: * #[ distribute: * * copy p5-p11 * do 20 i=1,11 xpi4(i) = xpi(iplace(i,inum)) do 10 j=1,10 dpipj4(j,i) = dpipj(iplace(j,inum),iplace(i,inum)) 10 continue 20 continue * * these cannot be simply copied I think * xpi4(12) = -xpi4(5)+xpi4(6)-xpi4(7)+xpi4(8)+xpi4(9)+xpi4(10) xpi4(13) = xpi4(5)-xpi4(6)+xpi4(7)-xpi4(8)+xpi4(9)+xpi4(10) * * and the differences * do 40 i=12,13 do 30 j=1,10 dpipj4(j,i) = xpi4(j) - xpi4(i) 30 continue 40 continue * * copy the dotproducts (watch the signs of p9,p10!) * do 60 i=1,10 do 50 j=1,10 piDpj4(j,i) = isigns(j,inum)*isigns(i,inum)* + piDpj(iplace(j,inum),iplace(i,inum)) 50 continue 60 continue * #] distribute: *###] ffpi54: end *###[ ffxe0r: subroutine ffxe0r(ce0,cd0i,xpi,ier) ***#[*comment:*********************************************************** * * * Tries all 12 permutations of the 5pointfunction * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none integer ier,nrot parameter(nrot=12) DOUBLE PRECISION xpi(20),xqi(20) DOUBLE COMPLEX ce0,cd0i(5),ce0p,cd0ip(5),cd0ipp(5) integer inew(20,nrot),irota,ier1,i,j,k,icon,ialsav,init logical lcon parameter (icon=3) save inew,init,lcon #include "ff.h" data inew + /1,2,3,4,5, 6,7,8,9,10,11,12,13,14,15, 16,17,18,19,20, + 2,1,3,4,5, 6,11,8,9,15,7,14,13,12,10, 16,18,17,19,-20, + 1,3,2,4,5, 11,7,12,9,10,6,8,15,14,13, -16,17,19,18,20, + 1,2,4,3,5, 6,12,8,13,10,14,7,9,11,15, 16,-17,18,20,19, + 1,2,3,5,4, 6,7,13,9,14,11,15,8,10,12, 20,17,-18,19,16, + 5,2,3,4,1, 15,7,8,14,10,13,12,11,9,6, 17,16,18,-19,20, + 2,1,4,3,5, 6,14,8,13,15,12,11,9,7,10, 16,-18,17,20,-19, + 1,3,2,5,4, 11,7,15,9,14,6,13,12,10,8, -20,17,-19,18,16, + 5,2,4,3,1, 15,12,8,11,10,9,7,14,13,6, 17,-16,18,-20,19, + 2,1,3,5,4, 6,11,13,9,12,7,10,8,15,14, 20,18,-17,19,-16, + 5,3,2,4,1, 13,7,12,14,10,15,8,6,9,11, -17,16,19,-18,20, + 1,3,5,2,4, 11,13,15,12,14,10,7,9,6,8,-20,-17,-19,-16,-18/ data init /0/ * #] declarations: * #[ open console for some activity on screen: if ( init .eq. 0 ) then init = 1 lcon = .FALSE. endif * #] open console for some activity on screen: * #[ calculations: ce0 = 0 ier = 999 ialsav = isgnal do 30 j = -1,1,2 do 20 irota=1,nrot do 10 i=1,20 if ( inew(i,irota) .lt. 0 ) then xqi(-inew(i,irota)) = 0 else xqi(inew(i,irota)) = xpi(i) endif 10 continue print '(a,i2,a,i2)','---#[ rotation ',irota, + ': isgnal ',isgnal if (lcon) write(icon,'(a,i2,a,i2)') 'rotation ',irota, + ', isgnal ',isgnal ier1 = 0 ner = 0 id = id + 1 isgnal = ialsav call ffxe0(ce0p,cd0ip,xqi,ier1) ier1 = ier1 + ner print '(a,i1,a,i2)','---#] rotation ',irota,': isgnal ', + isgnal print '(a,2g28.16,i3)','e0 = ',ce0p,ier1 do 15 k=1,5 cd0ipp(k) = cd0ip(inew(k,irota)) print '(a,2g28.16,i3)','d0 = ',cd0ipp(k),k 15 continue if (lcon) write(icon,'(a,2g28.16,i3)')'e0 = ',ce0p,ier1 if ( ier1 .lt. ier ) then ce0 = ce0p do 19 k=1,5 cd0i(k) = cd0ipp(k) 19 continue ier = ier1 endif 20 continue ialsav = -ialsav 30 continue * #] calculations: *###] ffxe0r: end herwig++-2.6.0.orig/Looptools/E/E0.F0000644000175000017500000001001111754474774017521 0ustar sylvestresylvestre* E0.F * the scalar four-point function * this file is part of LoopTools * written by M. Rauch * last modified 8 Dec 10 th #include "defs.h" #ifdef COMPLEXPARA #undef E0b #define E0b E0C #else double complex function E0(p1, p2, p3, p4, p5, & p1p2, p2p3, p3p4, p4p5, p5p1, m1, m2, m3, m4, m5) implicit none DVAR p1, p2, p3, p4, p5 DVAR p1p2, p2p3, p3p4, p4p5, p5p1 DVAR m1, m2, m3, m4, m5 #include "lt.h" double complex E0b external E0b double complex res(0:1), d0(5) double precision xpi(20) integer key, ier key = ibits(versionkey, KeyE0, 2) if( key .ne. 0 ) then ier = 0 xpi(1) = m1 xpi(2) = m2 xpi(3) = m3 xpi(4) = m4 xpi(5) = m5 xpi(6) = p1 xpi(7) = p2 xpi(8) = p3 xpi(9) = p4 xpi(10) = p5 xpi(11) = p1p2 xpi(12) = p2p3 xpi(13) = p3p4 xpi(14) = p4p5 xpi(15) = p5p1 call ffxe0(res(1), d0, xpi, ier) if( ier .gt. warndigits ) key = ior(key, 2) endif if( key .ne. 1 ) then res(0) = E0b(p1, p2, p3, p4, p5, & p1p2, p2p3, p3p4, p4p5, p5p1, m1, m2, m3, m4, m5) if( key .gt. 1 .and. & abs(res(0) - res(1)) .gt. maxdev*abs(res(0)) ) then print *, "Discrepancy in E0:" print *, " p1 =", p1 print *, " p2 =", p2 print *, " p3 =", p3 print *, " p4 =", p4 print *, " p5 =", p5 print *, " p1p2 =", p1p2 print *, " p2p3 =", p2p3 print *, " p3p4 =", p3p4 print *, " p4p5 =", p4p5 print *, " p5p1 =", p5p1 print *, " m1 =", m1 print *, " m2 =", m2 print *, " m3 =", m3 print *, " m4 =", m4 print *, " m5 =", m5 print *, "E0 a =", res(0) print *, "E0 b =", res(1) endif endif E0 = res(iand(key, 1)) end #endif ************************************************************************ * adapter code for C++ subroutine XE0sub(res, p1, p2, p3, p4, p5, & p1p2, p2p3, p3p4, p4p5, p5p1, m1, m2, m3, m4, m5) implicit none double complex res DVAR p1, p2, p3, p4, p5 DVAR p1p2, p2p3, p3p4, p4p5, p5p1 DVAR m1, m2, m3, m4, m5 double complex XE0 external XE0 res = XE0(p1, p2, p3, p4, p5, & p1p2, p2p3, p3p4, p4p5, p5p1, m1, m2, m3, m4, m5) end ************************************************************************ double complex function E0b(p1, p2, p3, p4, p5, & p1p2, p2p3, p3p4, p4p5, p5p1, m1, m2, m3, m4, m5) implicit none DVAR p1, p2, p3, p4, p5 DVAR p1p2, p2p3, p3p4, p4p5, p5p1 DVAR m1, m2, m3, m4, m5 #include "lt.h" QVAR Y(5,5), Yi(5,5), eta(5), detY integer i, j QVAR Yflat(25), Yiflat(25) equivalence (Y, Yflat) equivalence (Yi, Yiflat) double complex XD0 external XD0 Y(1,1) = 2*QPREC(m1) Y(2,2) = 2*QPREC(m2) Y(3,3) = 2*QPREC(m3) Y(4,4) = 2*QPREC(m4) Y(5,5) = 2*QPREC(m5) Y(1,2) = QPREC(m1) + QPREC(m2) - QPREC(p1) Y(2,1) = Y(1,2) Y(1,3) = QPREC(m1) + QPREC(m3) - QPREC(p1p2) Y(3,1) = Y(1,3) Y(1,4) = QPREC(m1) + QPREC(m4) - QPREC(p4p5) Y(4,1) = Y(1,4) Y(1,5) = QPREC(m1) + QPREC(m5) - QPREC(p5) Y(5,1) = Y(1,5) Y(2,3) = QPREC(m2) + QPREC(m3) - QPREC(p2) Y(3,2) = Y(2,3) Y(2,4) = QPREC(m2) + QPREC(m4) - QPREC(p2p3) Y(4,2) = Y(2,4) Y(2,5) = QPREC(m2) + QPREC(m5) - QPREC(p5p1) Y(5,2) = Y(2,5) Y(3,4) = QPREC(m3) + QPREC(m4) - QPREC(p3) Y(4,3) = Y(3,4) Y(3,5) = QPREC(m3) + QPREC(m5) - QPREC(p3p4) Y(5,3) = Y(3,5) Y(4,5) = QPREC(m4) + QPREC(m5) - QPREC(p4) Y(5,4) = Y(4,5) do i = 1, 5 do j = 1, 25 Yiflat(j) = Yflat(j) enddo do j = 1, 5 Yi(j,i) = 1 enddo call XDet(5, Yi,5, eta(i)) enddo call XDet(5, Y,5, detY) E0b = -( & eta(1)*XD0(p2, p3, p4, p5p1, p2p3, p3p4, m2, m3, m4, m5) + & eta(2)*XD0(p1p2, p3, p4, p5, p4p5, p3p4, m1, m3, m4, m5) + & eta(3)*XD0(p1, p2p3, p4, p5, p4p5, p5p1, m1, m2, m4, m5) + & eta(4)*XD0(p1, p2, p3p4, p5, p1p2, p5p1, m1, m2, m3, m5) + & eta(5)*XD0(p1, p2, p3, p4p5, p1p2, p2p3, m1, m2, m3, m4) & )/detY end herwig++-2.6.0.orig/Looptools/E/ffdel5.F0000644000175000017500000004714411754474774020443 0ustar sylvestresylvestre#include "externals.h" *###[ ffdel5: subroutine ffdel5(del5,xpi,pDp) ***#[*comment:*********************************************************** * * * Calculate del5(pDp) = det(si.sj) with * * the momenta as follows: * * p(1-5) = s(i) * * p(5-10) = p(i) * * p(11-15) = p(i)+p(i+1) * * * * Input: xpi(15) (real) * * pDp(15,15) (real) * * * * Output: del5 (real) det(si.sj) * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * DOUBLE PRECISION del5,xpi(15),pDp(15,15) * * local variables: * integer mem,nperm,nsi parameter(mem=10,nperm=1296,nsi=73) integer i,j1,j2,j3,j4,j5,iperm(5,nperm), + imem,memarr(mem,3),memind,inow DOUBLE PRECISION s(nsi),xmax,del5p,xmaxp save iperm,memind,memarr,inow * * common blocks: * #include "ff.h" * #] declarations: * #[ data: data memind /0/ data memarr /mem*0,mem*0,mem*1/ data inow /1/ #include "ffperm5.h" * #] data: * #[ out of memory: * * see if we know were to start, if not: go on as last time * do 5 i=1,mem if ( id .eq. memarr(i,1) .and. idsub .eq. memarr(i,2) ) then inow = memarr(i,3) goto 6 endif 5 continue 6 continue * #] out of memory: * #[ calculations: imem = inow del5 = 0 xmax = 0 10 continue * * we only try the diagonal elements: top==bottom * j1 = iperm(1,inow) j2 = iperm(2,inow) j3 = iperm(3,inow) j4 = iperm(4,inow) j5 = iperm(5,inow) * * The following was generated with the Form program * V p1,p2,p3,p4,p5; * L f = (e_(p1,p2,p3,p4,p5))**2; * Contract; * print +s; * .end * plus the substituion //p#@1\./p#@2/=/pDp(j@1,j@2)/ * * #[ terms: s(1)=+ xpi(j1)*xpi(j2)*xpi(j3)*xpi(j4)*xpi(j5) s(2)=- xpi(j1)*xpi(j2)*xpi(j3)*pDp(j4,j5)**2 s(3)=- xpi(j1)*xpi(j2)*pDp(j3,j4)**2*xpi(j5) s(4)=+2*xpi(j1)*xpi(j2)*pDp(j3,j4)*pDp(j3,j5)*pDp(j4,j5) s(5)=- xpi(j1)*xpi(j2)*pDp(j3,j5)**2*xpi(j4) s(6)=- xpi(j1)*pDp(j2,j3)**2*xpi(j4)*xpi(j5) s(7)=+ xpi(j1)*pDp(j2,j3)**2*pDp(j4,j5)**2 s(8)=+2*xpi(j1)*pDp(j2,j3)*pDp(j2,j4)*pDp(j3,j4)*xpi(j5) s(9)=-2*xpi(j1)*pDp(j2,j3)*pDp(j2,j4)*pDp(j3,j5)*pDp(j4,j5) s(10)=-2*xpi(j1)*pDp(j2,j3)*pDp(j2,j5)*pDp(j3,j4)*pDp(j4,j5) s(11)=+2*xpi(j1)*pDp(j2,j3)*pDp(j2,j5)*pDp(j3,j5)*xpi(j4) s(12)=- xpi(j1)*pDp(j2,j4)**2*xpi(j3)*xpi(j5) s(13)=+ xpi(j1)*pDp(j2,j4)**2*pDp(j3,j5)**2 s(14)=+2*xpi(j1)*pDp(j2,j4)*pDp(j2,j5)*xpi(j3)*pDp(j4,j5) s(15)=-2*xpi(j1)*pDp(j2,j4)*pDp(j2,j5)*pDp(j3,j4)*pDp(j3,j5) s(16)=- xpi(j1)*pDp(j2,j5)**2*xpi(j3)*xpi(j4) s(17)=+ xpi(j1)*pDp(j2,j5)**2*pDp(j3,j4)**2 s(18)=- pDp(j1,j2)**2*xpi(j3)*xpi(j4)*xpi(j5) s(19)=+ pDp(j1,j2)**2*xpi(j3)*pDp(j4,j5)**2 s(20)=+ pDp(j1,j2)**2*pDp(j3,j4)**2*xpi(j5) s(21)=-2*pDp(j1,j2)**2*pDp(j3,j4)*pDp(j3,j5)*pDp(j4,j5) s(22)=+ pDp(j1,j2)**2*pDp(j3,j5)**2*xpi(j4) s(23)=+2*pDp(j1,j2)*pDp(j1,j3)*pDp(j2,j3)*xpi(j4)*xpi(j5) s(24)=-2*pDp(j1,j2)*pDp(j1,j3)*pDp(j2,j3)*pDp(j4,j5)**2 s(25)=-2*pDp(j1,j2)*pDp(j1,j3)*pDp(j2,j4)*pDp(j3,j4)*xpi(j5) s(26)=+2*pDp(j1,j2)*pDp(j1,j3)*pDp(j2,j4)*pDp(j3,j5)*pDp(j4,j5) s(27)=+2*pDp(j1,j2)*pDp(j1,j3)*pDp(j2,j5)*pDp(j3,j4)*pDp(j4,j5) s(28)=-2*pDp(j1,j2)*pDp(j1,j3)*pDp(j2,j5)*pDp(j3,j5)*xpi(j4) s(29)=-2*pDp(j1,j2)*pDp(j1,j4)*pDp(j2,j3)*pDp(j3,j4)*xpi(j5) s(30)=+2*pDp(j1,j2)*pDp(j1,j4)*pDp(j2,j3)*pDp(j3,j5)*pDp(j4,j5) s(31)=+2*pDp(j1,j2)*pDp(j1,j4)*pDp(j2,j4)*xpi(j3)*xpi(j5) s(32)=-2*pDp(j1,j2)*pDp(j1,j4)*pDp(j2,j4)*pDp(j3,j5)**2 s(33)=-2*pDp(j1,j2)*pDp(j1,j4)*pDp(j2,j5)*xpi(j3)*pDp(j4,j5) s(34)=+2*pDp(j1,j2)*pDp(j1,j4)*pDp(j2,j5)*pDp(j3,j4)*pDp(j3,j5) s(35)=+2*pDp(j1,j2)*pDp(j1,j5)*pDp(j2,j3)*pDp(j3,j4)*pDp(j4,j5) s(36)=-2*pDp(j1,j2)*pDp(j1,j5)*pDp(j2,j3)*pDp(j3,j5)*xpi(j4) s(37)=-2*pDp(j1,j2)*pDp(j1,j5)*pDp(j2,j4)*xpi(j3)*pDp(j4,j5) s(38)=+2*pDp(j1,j2)*pDp(j1,j5)*pDp(j2,j4)*pDp(j3,j4)*pDp(j3,j5) s(39)=+2*pDp(j1,j2)*pDp(j1,j5)*pDp(j2,j5)*xpi(j3)*xpi(j4) s(40)=-2*pDp(j1,j2)*pDp(j1,j5)*pDp(j2,j5)*pDp(j3,j4)**2 s(41)=- pDp(j1,j3)**2*xpi(j2)*xpi(j4)*xpi(j5) s(42)=+ pDp(j1,j3)**2*xpi(j2)*pDp(j4,j5)**2 s(43)=+ pDp(j1,j3)**2*pDp(j2,j4)**2*xpi(j5) s(44)=-2*pDp(j1,j3)**2*pDp(j2,j4)*pDp(j2,j5)*pDp(j4,j5) s(45)=+ pDp(j1,j3)**2*pDp(j2,j5)**2*xpi(j4) s(46)=+2*pDp(j1,j3)*pDp(j1,j4)*xpi(j2)*pDp(j3,j4)*xpi(j5) s(47)=-2*pDp(j1,j3)*pDp(j1,j4)*xpi(j2)*pDp(j3,j5)*pDp(j4,j5) s(48)=-2*pDp(j1,j3)*pDp(j1,j4)*pDp(j2,j3)*pDp(j2,j4)*xpi(j5) s(49)=+2*pDp(j1,j3)*pDp(j1,j4)*pDp(j2,j3)*pDp(j2,j5)*pDp(j4,j5) s(50)=+2*pDp(j1,j3)*pDp(j1,j4)*pDp(j2,j4)*pDp(j2,j5)*pDp(j3,j5) s(51)=-2*pDp(j1,j3)*pDp(j1,j4)*pDp(j2,j5)**2*pDp(j3,j4) s(52)=-2*pDp(j1,j3)*pDp(j1,j5)*xpi(j2)*pDp(j3,j4)*pDp(j4,j5) s(53)=+2*pDp(j1,j3)*pDp(j1,j5)*xpi(j2)*pDp(j3,j5)*xpi(j4) s(54)=+2*pDp(j1,j3)*pDp(j1,j5)*pDp(j2,j3)*pDp(j2,j4)*pDp(j4,j5) s(55)=-2*pDp(j1,j3)*pDp(j1,j5)*pDp(j2,j3)*pDp(j2,j5)*xpi(j4) s(56)=-2*pDp(j1,j3)*pDp(j1,j5)*pDp(j2,j4)**2*pDp(j3,j5) s(57)=+2*pDp(j1,j3)*pDp(j1,j5)*pDp(j2,j4)*pDp(j2,j5)*pDp(j3,j4) s(58)=- pDp(j1,j4)**2*xpi(j2)*xpi(j3)*xpi(j5) s(59)=+ pDp(j1,j4)**2*xpi(j2)*pDp(j3,j5)**2 s(60)=+ pDp(j1,j4)**2*pDp(j2,j3)**2*xpi(j5) s(61)=-2*pDp(j1,j4)**2*pDp(j2,j3)*pDp(j2,j5)*pDp(j3,j5) s(62)=+ pDp(j1,j4)**2*pDp(j2,j5)**2*xpi(j3) s(63)=+2*pDp(j1,j4)*pDp(j1,j5)*xpi(j2)*xpi(j3)*pDp(j4,j5) s(64)=-2*pDp(j1,j4)*pDp(j1,j5)*xpi(j2)*pDp(j3,j4)*pDp(j3,j5) s(65)=-2*pDp(j1,j4)*pDp(j1,j5)*pDp(j2,j3)**2*pDp(j4,j5) s(66)=+2*pDp(j1,j4)*pDp(j1,j5)*pDp(j2,j3)*pDp(j2,j4)*pDp(j3,j5) s(67)=+2*pDp(j1,j4)*pDp(j1,j5)*pDp(j2,j3)*pDp(j2,j5)*pDp(j3,j4) s(68)=-2*pDp(j1,j4)*pDp(j1,j5)*pDp(j2,j4)*pDp(j2,j5)*xpi(j3) s(69)=- pDp(j1,j5)**2*xpi(j2)*xpi(j3)*xpi(j4) s(70)=+ pDp(j1,j5)**2*xpi(j2)*pDp(j3,j4)**2 s(71)=+ pDp(j1,j5)**2*pDp(j2,j3)**2*xpi(j4) s(72)=-2*pDp(j1,j5)**2*pDp(j2,j3)*pDp(j2,j4)*pDp(j3,j4) s(73)=+ pDp(j1,j5)**2*pDp(j2,j4)**2*xpi(j3) * #] terms: * del5p = 0 xmaxp = 0 do 20 i=1,nsi del5p = del5p + s(i) xmaxp = max(xmaxp,abs(s(i))) 20 continue if ( abs(del5p) .lt. xloss**2*xmaxp ) then if ( inow .eq. imem .or. xmaxp .lt. xmax ) then del5 = del5p xmax = xmaxp endif inow = inow + 1 if ( inow .gt. nperm ) inow = 1 if ( inow .eq. imem ) goto 800 goto 10 endif del5 = del5p xmax = xmaxp * #] calculations: * #[ into memory: 800 continue memind = memind + 1 if ( memind .gt. mem ) memind = 1 memarr(memind,1) = id memarr(memind,2) = idsub memarr(memind,3) = inow * #] into memory: return *###] ffdel5: end *###[ ffdl4p: subroutine ffdl4p(dl4p,piDpj,ii) ***#[*comment:*********************************************************** * calculate in a numerically stable way * * * * p1 p2 p3 p4 * * delta * * p1 p2 p3 p4 * * * * with pn = xpi(ii(n)), n=1,4 * * p5 = -p1-p2-p3-p4 * * xpi(ii(n+5)) = pn+p(n+1), n=1,5 * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer ii(10) DOUBLE PRECISION dl4p,piDpj(15,15) * * local variables * integer i,j,k,jj(8),iperm(4,60) DOUBLE PRECISION s(24),som,xmax,smax * * common blocks * #include "ff.h" * * data (the permutations with 2 from each (1-5) and (6-10) are * still lacking) * data ((iperm(j,i),j=1,4),i=1,35) + /1,2,3,4, 2,3,4,5, 3,4,5,1, 4,5,1,2, 5,1,2,3, + 6,2,3,4, 4,5,6,2, 5,6,2,3, + 1,6,3,4, 4,5,1,6, 5,1,6,3, + 1,7,3,4, 7,3,4,5, 5,1,7,3, + 1,2,7,4, 2,7,4,5, 5,1,2,7, + 1,2,8,4, 2,8,4,5, 8,4,5,1, + 1,2,3,8, 2,3,8,5, 3,8,5,1, + 2,3,9,5, 3,9,5,1, 9,5,1,2, + 2,3,4,9, 3,4,9,1, 4,9,1,2, + 3,4,10,1, 4,10,1,2, 10,1,2,3, + 3,4,5,10, 4,5,10,2, 5,10,2,3/ data ((iperm(j,i),j=1,4),i=36,60) + / 8,9,1,6, 1,6,7,8, + 8,9,10,1, 10,1,7,8, + 2,7,8,9, 9,10,2,7, + 6,2,8,9, 9,10,6,2, + 3,8,9,10, 10,6,3,8, + 7,3,9,10, 10,6,7,3, + 6,7,4,9, 4,9,10,6, + 6,7,8,4, 8,4,10,6, + 7,8,5,10, 5,10,6,7, + 7,8,9,5, 9,5,6,7, + 6,7,8,9, 7,8,9,10, 8,9,10,6, 9,10,6,7, 10,6,7,8/ * #] declarations: * #[ calculations: * * for the time being we just try the (60) diagonal elemnts. * xmax = 0 do 100 i=1,60 jj(1) = ii(iperm(1,i)) jj(2) = ii(iperm(2,i)) jj(3) = ii(iperm(3,i)) jj(4) = ii(iperm(4,i)) s( 1) = +piDpj(jj(1),jj(1))*piDpj(jj(2),jj(2))* + piDpj(jj(3),jj(3))*piDpj(jj(4),jj(4)) s( 2) = +piDpj(jj(2),jj(1))*piDpj(jj(3),jj(2))* + piDpj(jj(1),jj(3))*piDpj(jj(4),jj(4)) s( 3) = s(2) * s( 3) = +piDpj(jj(3),jj(1))*piDpj(jj(1),jj(2))* * + piDpj(jj(2),jj(3))*piDpj(jj(4),jj(4)) s( 4) = -piDpj(jj(1),jj(1))*piDpj(jj(3),jj(2))* + piDpj(jj(2),jj(3))*piDpj(jj(4),jj(4)) s( 5) = -piDpj(jj(3),jj(1))*piDpj(jj(2),jj(2))* + piDpj(jj(1),jj(3))*piDpj(jj(4),jj(4)) s( 6) = -piDpj(jj(2),jj(1))*piDpj(jj(1),jj(2))* + piDpj(jj(3),jj(3))*piDpj(jj(4),jj(4)) s( 7) = -piDpj(jj(1),jj(1))*piDpj(jj(2),jj(2))* + piDpj(jj(4),jj(3))*piDpj(jj(3),jj(4)) s( 8) = -piDpj(jj(2),jj(1))*piDpj(jj(4),jj(2))* + piDpj(jj(1),jj(3))*piDpj(jj(3),jj(4)) s( 9) = -piDpj(jj(4),jj(1))*piDpj(jj(1),jj(2))* + piDpj(jj(2),jj(3))*piDpj(jj(3),jj(4)) s(10) = +piDpj(jj(1),jj(1))*piDpj(jj(4),jj(2))* + piDpj(jj(2),jj(3))*piDpj(jj(3),jj(4)) s(11) = +piDpj(jj(4),jj(1))*piDpj(jj(2),jj(2))* + piDpj(jj(1),jj(3))*piDpj(jj(3),jj(4)) s(12) = +piDpj(jj(2),jj(1))*piDpj(jj(1),jj(2))* + piDpj(jj(4),jj(3))*piDpj(jj(3),jj(4)) s(13) = -piDpj(jj(1),jj(1))*piDpj(jj(4),jj(2))* + piDpj(jj(3),jj(3))*piDpj(jj(2),jj(4)) s(14) = -piDpj(jj(4),jj(1))*piDpj(jj(3),jj(2))* + piDpj(jj(1),jj(3))*piDpj(jj(2),jj(4)) s(15) = s(8) * s(15) = -piDpj(jj(3),jj(1))*piDpj(jj(1),jj(2))* * + piDpj(jj(4),jj(3))*piDpj(jj(2),jj(4)) s(16) = s(10) * s(16) = +piDpj(jj(1),jj(1))*piDpj(jj(3),jj(2))* * + piDpj(jj(4),jj(3))*piDpj(jj(2),jj(4)) s(17) = +piDpj(jj(3),jj(1))*piDpj(jj(4),jj(2))* + piDpj(jj(1),jj(3))*piDpj(jj(2),jj(4)) s(18) = +piDpj(jj(4),jj(1))*piDpj(jj(1),jj(2))* + piDpj(jj(3),jj(3))*piDpj(jj(2),jj(4)) s(19) = -piDpj(jj(4),jj(1))*piDpj(jj(2),jj(2))* + piDpj(jj(3),jj(3))*piDpj(jj(1),jj(4)) s(20) = s(9) * s(20) = -piDpj(jj(2),jj(1))*piDpj(jj(3),jj(2))* * + piDpj(jj(4),jj(3))*piDpj(jj(1),jj(4)) s(21) = s(14) * s(21) = -piDpj(jj(3),jj(1))*piDpj(jj(4),jj(2))* * + piDpj(jj(2),jj(3))*piDpj(jj(1),jj(4)) s(22) = +piDpj(jj(4),jj(1))*piDpj(jj(3),jj(2))* + piDpj(jj(2),jj(3))*piDpj(jj(1),jj(4)) s(23) = s(11) * s(23) = +piDpj(jj(3),jj(1))*piDpj(jj(2),jj(2))* * + piDpj(jj(4),jj(3))*piDpj(jj(1),jj(4)) s(24) = s(18) * s(24) = +piDpj(jj(2),jj(1))*piDpj(jj(4),jj(2))* * + piDpj(jj(3),jj(3))*piDpj(jj(1),jj(4)) som = 0 smax = 0 do 80 k=1,24 som = som + s(k) smax = max(smax,abs(som)) 80 continue if ( i .eq. 1 .or. smax .lt. xmax ) then dl4p = som xmax = smax endif if ( abs(dl4p) .ge. xloss**2*smax ) goto 110 100 continue 110 continue * #] calculations: *###] ffdl4p: end *###[ ffdl4r: subroutine ffdl4r(dl4r,piDpj,miss) ***#[*comment:*********************************************************** * calculate in a numerically stable way * * * * s1 s2 s3 s4 * * delta * * p1 p2 p3 p4 * * * * with s(miss) NOT included * * * ***#]*comment:*********************************************************** * #[ declarations: implicit none * * arguments: * integer miss DOUBLE PRECISION dl4r,piDpj(15,15) * * local variables * integer i,j,k,ii(4),jj(4),ipermp(4,125),iperms(4,125), + iplace(11,5),minus(125),mem,msign parameter(mem=45) integer memarr(mem,4),inow,jnow,imem,jmem,memind DOUBLE PRECISION s(24),som,xmax,smax save ipermp,iperms,iplace,minus,memarr,inow,jnow,memind * * common blocks * #include "ff.h" * #] declarations: * #[ data: data memind /0/ data memarr /mem*0,mem*0,mem*1,mem*1/ data inow,jnow /1,1/ * * data (see getpermp.for) * data ipermp/ + 1,2,3,4,1,2,5,3,1,2,3,8,1,2,10,3,1,2,4,5,1,2,7,4,1,2,8,4,1,2,4, + 9,1,2,4,10,1,2,5,7,1,2,9,5,1,2,7,8,1,2,10,7,1,2,8,9,1,2,9,10,1, + 3,5,4,1,3,4,6,1,3,4,7,1,3,9,4,1,3,10,4,1,3,6,5,1,3,7,5,1,3,5,8, + 1,3,5,9,1,3,8,6,1,3,6,10,1,3,8,7,1,3,7,10,1,3,9,8,1,3,10,8,1,3, + 10,9,1,4,5,6,1,4,8,5,1,4,6,7,1,4,6,8,1,4,9,6,1,4,10,6,1,4,7,8,1, + 4,8,9,1,4,8,10,1,5,7,6,1,5,6,9,1,5,8,7,1,5,9,8,1,6,7,8,1,6,10,7, + 1,6,8,9,1,6,9,10,1,7,10,8,1,8,10,9,2,3,4,5,2,3,6,4,2,3,4,9,2,3, + 5,6,2,3,8,5,2,3,9,5,2,3,5,10,2,3,6,8,2,3,10,6,2,3,8,9,2,3,9,10, + 2,4,6,5,2,4,5,7,2,4,5,8,2,4,10,5,2,4,7,6,2,4,8,6,2,4,6,9,2,4,6, + 10,2,4,9,7,2,4,9,8,2,4,10,9,2,5,6,7,2,5,9,6,2,5,7,8,2,5,7,9,2,5, + 10,7,2,5,8,9,2,5,9,10,2,6,8,7,2,6,7,10,2,6,9,8,2,6,10,9,2,7,8,9, + 2,7,9,10,3,4,7,5,3,4,5,10,3,4,6,7,3,4,10,6,3,4,7,9,3,4,9,10,3,5, + 7,6,3,5,6,10,3,5,8,7,3,5,9,7,3,5,7,10,3,5,10,8,3,5,10,9,3,6,7,8, + 3,6,10,7,3,6,8,10,3,7,9,8,3,7,10,9,3,8,9,10,4,5,6,7,4,5,10,6,4, + 5,7,8,4,5,8,10,4,6,8,7,4,6,7,9,4,6,10,8,4,6,9,10,4,7,8,9,4,8,10, + 9,5,6,9,7,5,6,7,10,5,6,10,9,5,7,9,8,5,7,8,10,5,8,9,10,6,7,8,9,6, + 7,10,8,6,7,9,10,6,8,10,9,7,8,9,10/ data iperms/ + 1,2,3,4,1,2,3,7,1,2,8,3,1,2,3,10,1,2,6,4,1,2,4,7,1,2,4,9,1,2,6,7 + ,1,2,8,6,1,2,6,10,1,2,7,8,1,2,7,9,1,2,10,7,1,2,9,8,1,2,10,9,1,3, + 4,5,1,3,6,4,1,3,10,4,1,3,7,5,1,3,5,8,1,3,10,5,1,3,6,7,1,3,8,6,1, + 3,6,10,1,3,10,7,1,3,8,10,1,4,5,6,1,4,7,5,1,4,9,5,1,4,6,7,1,4,6,9 + ,1,4,6,10,1,4,10,7,1,4,10,9,1,5,6,7,1,5,8,6,1,5,6,10,1,5,7,8,1,5 + ,7,9,1,5,10,7,1,5,9,8,1,5,10,9,1,6,8,7,1,6,9,7,1,6,8,9,1,6,8,10, + 1,6,9,10,1,7,10,8,1,7,10,9,1,8,9,10,2,3,4,5,2,3,8,4,2,3,9,4,2,3, + 7,5,2,3,5,8,2,3,10,5,2,3,8,7,2,3,9,7,2,3,8,9,2,3,8,10,2,3,9,10,2 + ,4,5,6,2,4,7,5,2,4,9,5,2,4,6,8,2,4,6,9,2,4,8,7,2,4,9,7,2,4,8,9,2 + ,5,6,7,2,5,8,6,2,5,6,10,2,5,7,8,2,5,7,9,2,5,10,7,2,5,9,8,2,5,10, + 9,2,6,8,7,2,6,9,7,2,6,8,9,2,6,8,10,2,6,9,10,2,7,10,8,2,7,10,9,2, + 8,9,10,3,4,5,6,3,4,8,5,3,4,9,5,3,4,5,10,3,4,6,8,3,4,6,9,3,4,10,8 + ,3,4,10,9,3,5,6,7,3,5,8,6,3,5,6,10,3,5,7,8,3,5,7,9,3,5,10,7,3,5, + 9,8,3,5,10,9,3,6,8,7,3,6,9,7,3,6,8,9,3,6,8,10,3,6,9,10,3,7,10,8, + 3,7,10,9,3,8,9,10,4,5,6,7,4,5,8,6,4,5,6,10,4,5,7,8,4,5,7,9,4,5,1 + 0,7,4,5,9,8,4,5,10,9,4,6,8,7,4,6,9,7,4,6,8,9,4,6,8,10,4,6,9,10,4 + ,7,10,8,4,7,10,9,4,8,9,10/ data iplace / + 2,3,4,5, 07,08,09,15, +12,+13, 17, + 1,3,4,5, 11,08,09,10, -14,+13, 18, + 1,2,4,5, 06,12,09,10, -14,-15, 19, + 1,2,3,5, 06,07,13,10, +11,-15, 20, + 1,2,3,4, 06,07,08,14, +11,+12, 16/ data minus / + +1,+1,+1,+1,+1,+1,-1,+1,+1,+1,+1,-1,+1,-1,-1,+1, + +1,+1,+1,+1,+1,+1,+1,+1,+1,+1,+1,+1,-1,+1,-1,+1, + +1,-1,+1,+1,+1,+1,-1,+1,-1,-1,+1,-1,-1,+1,-1,+1, + -1,-1,+1,+1,-1,+1,+1,+1,+1,-1,-1,+1,-1,+1,+1,-1, + +1,-1,+1,-1,-1,+1,+1,+1,+1,-1,+1,-1,-1,+1,-1,-1, + +1,-1,+1,-1,-1,+1,+1,-1,+1,+1,-1,+1,-1,+1,+1,+1, + +1,-1,+1,-1,-1,+1,-1,-1,+1,-1,+1,-1,-1,+1,+1,+1, + +1,-1,+1,-1,-1,+1,-1,-1,+1,-1,+1,-1,-1/ * #] data: * #[ out of memory: * * see if we know were to start, if not: go on as last time * do 5 i=1,mem if ( id .eq. memarr(i,1) .and. idsub .eq. memarr(i,2) ) then inow = memarr(i,3) jnow = memarr(i,4) goto 6 endif 5 continue 6 continue * #] out of memory: * #[ calculations: * * loop over all permutations of the si and the pi - * we have 125*125 = a lot of possibilities before we give up .... * 15-feb-1993: well, let's only consider 25 at a time, otherwise * the time spent here becomes ludicrous * imem = inow jmem = jnow dl4r = 0 xmax = 0 * do 110 i=1,5 ii(1) = abs(iplace((iperms(1,inow)),miss)) ii(2) = abs(iplace((iperms(2,inow)),miss)) ii(3) = abs(iplace((iperms(3,inow)),miss)) ii(4) = abs(iplace((iperms(4,inow)),miss)) msign = sign(1,iplace((iperms(1,inow)),miss))* + sign(1,iplace((iperms(2,inow)),miss))* + sign(1,iplace((iperms(3,inow)),miss))* + sign(1,iplace((iperms(4,inow)),miss)) do 100 j=1,5 jj(1) = ipermp(1,jnow) + 5 jj(2) = ipermp(2,jnow) + 5 jj(3) = ipermp(3,jnow) + 5 jj(4) = ipermp(4,jnow) + 5 * s( 1) = +piDpj(ii(1),jj(1))*piDpj(ii(2),jj(2))* + piDpj(ii(3),jj(3))*piDpj(ii(4),jj(4)) s( 2) = +piDpj(ii(2),jj(1))*piDpj(ii(3),jj(2))* + piDpj(ii(1),jj(3))*piDpj(ii(4),jj(4)) s( 3) = +piDpj(ii(3),jj(1))*piDpj(ii(1),jj(2))* + piDpj(ii(2),jj(3))*piDpj(ii(4),jj(4)) s( 4) = -piDpj(ii(1),jj(1))*piDpj(ii(3),jj(2))* + piDpj(ii(2),jj(3))*piDpj(ii(4),jj(4)) s( 5) = -piDpj(ii(3),jj(1))*piDpj(ii(2),jj(2))* + piDpj(ii(1),jj(3))*piDpj(ii(4),jj(4)) s( 6) = -piDpj(ii(2),jj(1))*piDpj(ii(1),jj(2))* + piDpj(ii(3),jj(3))*piDpj(ii(4),jj(4)) * s( 7) = -piDpj(ii(1),jj(1))*piDpj(ii(2),jj(2))* + piDpj(ii(4),jj(3))*piDpj(ii(3),jj(4)) s( 8) = -piDpj(ii(2),jj(1))*piDpj(ii(4),jj(2))* + piDpj(ii(1),jj(3))*piDpj(ii(3),jj(4)) s( 9) = -piDpj(ii(4),jj(1))*piDpj(ii(1),jj(2))* + piDpj(ii(2),jj(3))*piDpj(ii(3),jj(4)) s(10) = +piDpj(ii(1),jj(1))*piDpj(ii(4),jj(2))* + piDpj(ii(2),jj(3))*piDpj(ii(3),jj(4)) s(11) = +piDpj(ii(4),jj(1))*piDpj(ii(2),jj(2))* + piDpj(ii(1),jj(3))*piDpj(ii(3),jj(4)) s(12) = +piDpj(ii(2),jj(1))*piDpj(ii(1),jj(2))* + piDpj(ii(4),jj(3))*piDpj(ii(3),jj(4)) * s(13) = -piDpj(ii(1),jj(1))*piDpj(ii(4),jj(2))* + piDpj(ii(3),jj(3))*piDpj(ii(2),jj(4)) s(14) = -piDpj(ii(4),jj(1))*piDpj(ii(3),jj(2))* + piDpj(ii(1),jj(3))*piDpj(ii(2),jj(4)) s(15) = -piDpj(ii(3),jj(1))*piDpj(ii(1),jj(2))* + piDpj(ii(4),jj(3))*piDpj(ii(2),jj(4)) s(16) = +piDpj(ii(1),jj(1))*piDpj(ii(3),jj(2))* + piDpj(ii(4),jj(3))*piDpj(ii(2),jj(4)) s(17) = +piDpj(ii(3),jj(1))*piDpj(ii(4),jj(2))* + piDpj(ii(1),jj(3))*piDpj(ii(2),jj(4)) s(18) = +piDpj(ii(4),jj(1))*piDpj(ii(1),jj(2))* + piDpj(ii(3),jj(3))*piDpj(ii(2),jj(4)) * s(19) = -piDpj(ii(4),jj(1))*piDpj(ii(2),jj(2))* + piDpj(ii(3),jj(3))*piDpj(ii(1),jj(4)) s(20) = -piDpj(ii(2),jj(1))*piDpj(ii(3),jj(2))* + piDpj(ii(4),jj(3))*piDpj(ii(1),jj(4)) s(21) = -piDpj(ii(3),jj(1))*piDpj(ii(4),jj(2))* + piDpj(ii(2),jj(3))*piDpj(ii(1),jj(4)) s(22) = +piDpj(ii(4),jj(1))*piDpj(ii(3),jj(2))* + piDpj(ii(2),jj(3))*piDpj(ii(1),jj(4)) s(23) = +piDpj(ii(3),jj(1))*piDpj(ii(2),jj(2))* + piDpj(ii(4),jj(3))*piDpj(ii(1),jj(4)) s(24) = +piDpj(ii(2),jj(1))*piDpj(ii(4),jj(2))* + piDpj(ii(3),jj(3))*piDpj(ii(1),jj(4)) * som = 0 smax = 0 do 80 k=1,24 som = som + s(k) smax = max(smax,abs(som)) 80 continue if ( ( inow .eq. imem .and. jnow .eq. jmem ) .or. + smax .lt. xmax ) then dl4r = msign*minus(inow)*som xmax = smax endif if ( abs(dl4r) .ge. xloss**2*smax ) goto 120 * increase with something that is relative prime to 125 so that * eventually we cover all possibilities, but with a good * scatter. jnow = jnow + 49 if ( jnow .gt. 125 ) jnow = jnow - 125 100 continue * again, a number relative prime to 125 and a few times smaller inow = inow + 49 if ( inow .gt. 125 ) inow = inow - 125 110 continue 120 continue * #] calculations: * #[ into memory: memind = memind + 1 if ( memind .gt. mem ) memind = 1 memarr(memind,1) = id memarr(memind,2) = idsub memarr(memind,3) = inow memarr(memind,4) = jnow * #] into memory: *###] ffdl4r: end herwig++-2.6.0.orig/Looptools/E/Eget.F0000644000175000017500000002461611754474774020161 0ustar sylvestresylvestre* Eget.F * retrieve the five-point tensor coefficients * this file is part of LoopTools * written by M. Rauch * last modified 24 Aug 09 th #include "defs.h" integer function XEget(p1, p2, p3, p4, p5, & p1p2, p2p3, p3p4, p4p5, p5p1, m1, m2, m3, m4, m5) implicit none DVAR p1, p2, p3, p4, p5 DVAR p1p2, p2p3, p3p4, p4p5, p5p1 DVAR m1, m2, m3, m4, m5 #include "lt.h" integer cachelookup external cachelookup, XEcoeff DVAR para(Pee) para(1) = p1 para(2) = p2 para(3) = p3 para(4) = p4 para(5) = p5 para(6) = p1p2 para(7) = p2p3 para(8) = p3p4 para(9) = p4p5 para(10) = p5p1 para(11) = m1 if( abs(para(11)) .lt. minmass ) para(11) = 0 para(12) = m2 if( abs(para(12)) .lt. minmass ) para(12) = 0 para(13) = m3 if( abs(para(13)) .lt. minmass ) para(13) = 0 para(14) = m4 if( abs(para(14)) .lt. minmass ) para(14) = 0 para(15) = m5 if( abs(para(15)) .lt. minmass ) para(15) = 0 XEget = cachelookup(para, Eval(1,0), XEcoeff, RC*Pee, Nee) end ************************************************************************ double complex function XE0i(i, p1, p2, p3, p4, p5, & p1p2, p2p3, p3p4, p4p5, p5p1, m1, m2, m3, m4, m5) implicit none integer i DVAR p1, p2, p3, p4, p5 DVAR p1p2, p2p3, p3p4, p4p5, p5p1 DVAR m1, m2, m3, m4, m5 #include "lt.h" integer XEget external XEget integer b b = XEget(p1, p2, p3, p4, p5, & p1p2, p2p3, p3p4, p4p5, p5p1, m1, m2, m3, m4, m5) XE0i = Eval(i,b) end ************************************************************************ subroutine XEcoeff(para, E, ldpara) implicit none integer ldpara DVAR para(ldpara,Pee) double complex E(Nee) #include "lt.h" double complex Ecmp(Nee) #ifdef COMPLEXPARA goto (1, 2, 3) ibits(versionkey, KeyEgetC, 2) #else goto (1, 2, 3) ibits(versionkey, KeyEget, 2) #endif call XEcoeffa(para, E, ldpara) return 1 call XEcoeffb(para, E, ldpara) return 2 call XEcheck(para, E, Ecmp, ldpara) return 3 call XEcheck(para, Ecmp, E, ldpara) end ************************************************************************ subroutine XEcheck(para, Ea, Eb, ldpara) implicit none integer ldpara DVAR para(ldpara,Pee) double complex Ea(Nee), Eb(Nee) #include "lt.h" double complex dE(Nee) integer i logical ini QVAR Ginv(4,4) common /XInvGramE/ Ginv character*8 coeffname(Nee,2:5) common /ltcoeffnames/ coeffname call XEcoeffa(para, Ea, ldpara) call XEcoeffb(para, Eb, ldpara) dE(ee0) = 0 dE(ee1) = 0 dE(ee2) = 0 dE(ee3) = 0 dE(ee4) = 0 dE(ee11) = -2*Ea(ee00)*Ginv(1,1) dE(ee12) = -2*Ea(ee00)*Ginv(1,2) dE(ee13) = -2*Ea(ee00)*Ginv(1,3) dE(ee14) = -2*Ea(ee00)*Ginv(1,4) dE(ee22) = -2*Ea(ee00)*Ginv(2,2) dE(ee23) = -2*Ea(ee00)*Ginv(2,3) dE(ee24) = -2*Ea(ee00)*Ginv(2,4) dE(ee33) = -2*Ea(ee00)*Ginv(3,3) dE(ee34) = -2*Ea(ee00)*Ginv(3,4) dE(ee44) = -2*Ea(ee00)*Ginv(4,4) dE(ee00) = Ea(ee00) dE(ee111) = -6*Ea(ee001)*Ginv(1,1) dE(ee112) = -2*(Ea(ee002)*Ginv(1,1) + & Ea(ee001)*(Ginv(1,2) + Ginv(2,1))) dE(ee113) = -2*(Ea(ee003)*Ginv(1,1) + & Ea(ee001)*(Ginv(1,3) + Ginv(3,1))) dE(ee114) = -2*(Ea(ee004)*Ginv(1,1) + & Ea(ee001)*(Ginv(1,4) + Ginv(4,1))) dE(ee122) = -2*(Ea(ee002)*(Ginv(1,2) + Ginv(2,1)) + & Ea(ee001)*Ginv(2,2)) dE(ee123) = -2*(Ea(ee003)*Ginv(1,2) + Ea(ee001)*Ginv(2,3) + & Ea(ee002)*Ginv(3,1)) dE(ee124) = -2*(Ea(ee004)*Ginv(1,2) + Ea(ee001)*Ginv(2,4) + & Ea(ee002)*Ginv(4,1)) dE(ee133) = -2*(Ea(ee003)*(Ginv(1,3) + Ginv(3,1)) + & Ea(ee001)*Ginv(3,3)) dE(ee134) = -2*(Ea(ee004)*Ginv(1,3) + Ea(ee001)*Ginv(3,4) + & Ea(ee003)*Ginv(4,1)) dE(ee144) = -2*(Ea(ee004)*(Ginv(1,4) + Ginv(4,1)) + & Ea(ee001)*Ginv(4,4)) dE(ee222) = -6*Ea(ee002)*Ginv(2,2) dE(ee223) = -2*(Ea(ee003)*Ginv(2,2) + & Ea(ee002)*(Ginv(2,3) + Ginv(3,2))) dE(ee224) = -2*(Ea(ee004)*Ginv(2,2) + & Ea(ee002)*(Ginv(2,4) + Ginv(4,2))) dE(ee233) = -2*(Ea(ee003)*(Ginv(2,3) + Ginv(3,2)) + & Ea(ee002)*Ginv(3,3)) dE(ee234) = -2*(Ea(ee004)*Ginv(2,3) + Ea(ee002)*Ginv(3,4) + & Ea(ee003)*Ginv(4,2)) dE(ee244) = -2*(Ea(ee004)*(Ginv(2,4) + Ginv(4,2)) + & Ea(ee002)*Ginv(4,4)) dE(ee333) = -6*Ea(ee003)*Ginv(3,3) dE(ee334) = -2*(Ea(ee004)*Ginv(3,3) + & Ea(ee003)*(Ginv(3,4) + Ginv(4,3))) dE(ee344) = -2*(Ea(ee004)*(Ginv(3,4) + Ginv(4,3)) + & Ea(ee003)*Ginv(4,4)) dE(ee444) = -6*Ea(ee004)*Ginv(4,4) dE(ee001) = Ea(ee001) dE(ee002) = Ea(ee002) dE(ee003) = Ea(ee003) dE(ee004) = Ea(ee004) dE(ee1111) = -12*Ginv(1,1)*(Ea(ee0011) + Ea(ee0000)*Ginv(1,1)) dE(ee1112) = -6*(Ea(ee0012)*Ginv(1,1) + & (Ea(ee0011) + 2*Ea(ee0000)*Ginv(1,1))*Ginv(1,2)) dE(ee1113) = -6*(Ea(ee0013)*Ginv(1,1) + & (Ea(ee0011) + 2*Ea(ee0000)*Ginv(1,1))*Ginv(1,3)) dE(ee1114) = -6*(Ea(ee0014)*Ginv(1,1) + & (Ea(ee0011) + 2*Ea(ee0000)*Ginv(1,1))*Ginv(1,4)) dE(ee1122) = -2*(Ea(ee0022)*Ginv(1,1) + & 4*Ginv(1,2)*(Ea(ee0012) + Ea(ee0000)*Ginv(1,2)) + & (Ea(ee0011) + 2*Ea(ee0000)*Ginv(1,1))*Ginv(2,2)) dE(ee1123) = -2*(Ea(ee0023)*Ginv(1,1) + & 2*Ea(ee0013)*Ginv(1,2) + & 2*(Ea(ee0012) + 2*Ea(ee0000)*Ginv(1,2))*Ginv(1,3) + & (Ea(ee0011) + 2*Ea(ee0000)*Ginv(1,1))*Ginv(2,3)) dE(ee1124) = -2*(Ea(ee0024)*Ginv(1,1) + & 2*Ea(ee0014)*Ginv(1,2) + & 2*(Ea(ee0012) + 2*Ea(ee0000)*Ginv(1,2))*Ginv(1,4) + & (Ea(ee0011) + 2*Ea(ee0000)*Ginv(1,1))*Ginv(2,4)) dE(ee1133) = -2*(Ea(ee0033)*Ginv(1,1) + & 4*Ginv(1,3)*(Ea(ee0013) + Ea(ee0000)*Ginv(1,3)) + & (Ea(ee0011) + 2*Ea(ee0000)*Ginv(1,1))*Ginv(3,3)) dE(ee1134) = -2*(Ea(ee0034)*Ginv(1,1) + & 2*Ea(ee0014)*Ginv(1,3) + & 2*(Ea(ee0013) + 2*Ea(ee0000)*Ginv(1,3))*Ginv(1,4) + & (Ea(ee0011) + 2*Ea(ee0000)*Ginv(1,1))*Ginv(3,4)) dE(ee1144) = -2*(Ea(ee0044)*Ginv(1,1) + & 4*Ginv(1,4)*(Ea(ee0014) + Ea(ee0000)*Ginv(1,4)) + & (Ea(ee0011) + 2*Ea(ee0000)*Ginv(1,1))*Ginv(4,4)) dE(ee1222) = -6*(Ea(ee0022)*Ginv(1,2) + & (Ea(ee0012) + 2*Ea(ee0000)*Ginv(1,2))*Ginv(2,2)) dE(ee1223) = -2*(2*Ea(ee0023)*Ginv(1,2) + & Ea(ee0022)*Ginv(1,3) + & (Ea(ee0013) + 2*Ea(ee0000)*Ginv(1,3))*Ginv(2,2) + & 2*(Ea(ee0012) + 2*Ea(ee0000)*Ginv(1,2))*Ginv(2,3)) dE(ee1224) = -2*(2*Ea(ee0024)*Ginv(1,2) + & Ea(ee0022)*Ginv(1,4) + & (Ea(ee0014) + 2*Ea(ee0000)*Ginv(1,4))*Ginv(2,2) + & 2*(Ea(ee0012) + 2*Ea(ee0000)*Ginv(1,2))*Ginv(2,4)) dE(ee1233) = -2*(Ea(ee0033)*Ginv(1,2) + & 2*Ea(ee0023)*Ginv(1,3) + & 2*(Ea(ee0013) + 2*Ea(ee0000)*Ginv(1,3))*Ginv(2,3) + & (Ea(ee0012) + 2*Ea(ee0000)*Ginv(1,2))*Ginv(3,3)) dE(ee1234) = -2*(Ea(ee0023)*Ginv(1,4) + & (Ea(ee0014) + 2*Ea(ee0000)*Ginv(1,4))*Ginv(2,3) + & Ea(ee0013)*Ginv(2,4) + & Ginv(1,3)*(Ea(ee0024) + 2*Ea(ee0000)*Ginv(2,4)) + & Ea(ee0012)*Ginv(3,4) + & Ginv(1,2)*(Ea(ee0034) + 2*Ea(ee0000)*Ginv(3,4))) dE(ee1244) = -2*(Ea(ee0044)*Ginv(1,2) + & 2*Ea(ee0024)*Ginv(1,4) + & 2*(Ea(ee0014) + 2*Ea(ee0000)*Ginv(1,4))*Ginv(2,4) + & (Ea(ee0012) + 2*Ea(ee0000)*Ginv(1,2))*Ginv(4,4)) dE(ee1333) = -6*(Ea(ee0033)*Ginv(1,3) + & (Ea(ee0013) + 2*Ea(ee0000)*Ginv(1,3))*Ginv(3,3)) dE(ee1334) = -2*(2*Ea(ee0034)*Ginv(1,3) + & Ea(ee0033)*Ginv(1,4) + & (Ea(ee0014) + 2*Ea(ee0000)*Ginv(1,4))*Ginv(3,3) + & 2*(Ea(ee0013) + 2*Ea(ee0000)*Ginv(1,3))*Ginv(3,4)) dE(ee1344) = -2*(Ea(ee0044)*Ginv(1,3) + & 2*Ea(ee0034)*Ginv(1,4) + & 2*(Ea(ee0014) + 2*Ea(ee0000)*Ginv(1,4))*Ginv(3,4) + & (Ea(ee0013) + 2*Ea(ee0000)*Ginv(1,3))*Ginv(4,4)) dE(ee1444) = -6*(Ea(ee0044)*Ginv(1,4) + & (Ea(ee0014) + 2*Ea(ee0000)*Ginv(1,4))*Ginv(4,4)) dE(ee2222) = -12*Ginv(2,2)*(Ea(ee0022) + Ea(ee0000)*Ginv(2,2)) dE(ee2223) = -6*(Ea(ee0023)*Ginv(2,2) + & (Ea(ee0022) + 2*Ea(ee0000)*Ginv(2,2))*Ginv(2,3)) dE(ee2224) = -6*(Ea(ee0024)*Ginv(2,2) + & (Ea(ee0022) + 2*Ea(ee0000)*Ginv(2,2))*Ginv(2,4)) dE(ee2233) = -2*(Ea(ee0033)*Ginv(2,2) + & 4*Ginv(2,3)*(Ea(ee0023) + Ea(ee0000)*Ginv(2,3)) + & (Ea(ee0022) + 2*Ea(ee0000)*Ginv(2,2))*Ginv(3,3)) dE(ee2234) = -2*(Ea(ee0034)*Ginv(2,2) + & 2*Ea(ee0024)*Ginv(2,3) + & 2*(Ea(ee0023) + 2*Ea(ee0000)*Ginv(2,3))*Ginv(2,4) + & (Ea(ee0022) + 2*Ea(ee0000)*Ginv(2,2))*Ginv(3,4)) dE(ee2244) = -2*(Ea(ee0044)*Ginv(2,2) + & 4*Ginv(2,4)*(Ea(ee0024) + Ea(ee0000)*Ginv(2,4)) + & (Ea(ee0022) + 2*Ea(ee0000)*Ginv(2,2))*Ginv(4,4)) dE(ee2333) = -6*(Ea(ee0033)*Ginv(2,3) + & (Ea(ee0023) + 2*Ea(ee0000)*Ginv(2,3))*Ginv(3,3)) dE(ee2334) = -2*(2*Ea(ee0034)*Ginv(2,3) + & Ea(ee0033)*Ginv(2,4) + & (Ea(ee0024) + 2*Ea(ee0000)*Ginv(2,4))*Ginv(3,3) + & 2*(Ea(ee0023) + 2*Ea(ee0000)*Ginv(2,3))*Ginv(3,4)) dE(ee2344) = -2*(Ea(ee0044)*Ginv(2,3) + & 2*Ea(ee0034)*Ginv(2,4) + & 2*(Ea(ee0024) + 2*Ea(ee0000)*Ginv(2,4))*Ginv(3,4) + & (Ea(ee0023) + 2*Ea(ee0000)*Ginv(2,3))*Ginv(4,4)) dE(ee2444) = -6*(Ea(ee0044)*Ginv(2,4) + & (Ea(ee0024) + 2*Ea(ee0000)*Ginv(2,4))*Ginv(4,4)) dE(ee3333) = -12*Ginv(3,3)*(Ea(ee0033) + Ea(ee0000)*Ginv(3,3)) dE(ee3334) = -6*(Ea(ee0034)*Ginv(3,3) + & (Ea(ee0033) + 2*Ea(ee0000)*Ginv(3,3))*Ginv(3,4)) dE(ee3344) = -2*(Ea(ee0044)*Ginv(3,3) + & 4*Ginv(3,4)*(Ea(ee0034) + Ea(ee0000)*Ginv(3,4)) + & (Ea(ee0033) + 2*Ea(ee0000)*Ginv(3,3))*Ginv(4,4)) dE(ee3444) = -6*(Ea(ee0044)*Ginv(3,4) + & (Ea(ee0034) + 2*Ea(ee0000)*Ginv(3,4))*Ginv(4,4)) dE(ee4444) = -12*Ginv(4,4)*(Ea(ee0044) + Ea(ee0000)*Ginv(4,4)) dE(ee0000) = Ea(ee0000) dE(ee0011) = Ea(ee0011) dE(ee0012) = Ea(ee0012) dE(ee0013) = Ea(ee0013) dE(ee0014) = Ea(ee0014) dE(ee0022) = Ea(ee0022) dE(ee0023) = Ea(ee0023) dE(ee0024) = Ea(ee0024) dE(ee0033) = Ea(ee0033) dE(ee0034) = Ea(ee0034) dE(ee0044) = Ea(ee0044) ini = .TRUE. do i = 1, Nee if( abs(Ea(i) - Eb(i) - dE(i)) .gt. & .5D0*maxdev*abs(Ea(i) + Eb(i)) ) then if( ini ) then #ifdef COMPLEXPARA print *, "Discrepancy in CEget:" #else print *, "Discrepancy in Eget:" #endif call XDumpPara(5, para, ldpara, " ") ini = .FALSE. endif print *, coeffname(i,5), " a =", Ea(i) print *, coeffname(i,5), " b =", Eb(i) + dE(i) endif enddo end herwig++-2.6.0.orig/Looptools/README0000644000175000017500000000151711754474774017655 0ustar sylvestresylvestreThis subdirectory is based on version 2.6 of the Looptools package available at http://www.feynarts.de/looptools/ From their website, it seems that Looptools is licensed under the LGPL, although the tarball itself does not contain a reference to it. For reference, we have added the LGPL in the file COPYING.Looptools. Note that this licence only applies to the Looptools subdirectory. Our changes to LoopTools-2.6.tar.gz are listed here: * removed unused 'tools' and 'frontend' directories * include/clooptools.h modified: definitions and 'extern' declarations moved to Herwig's clooptools.cc * fixed 64bit int -> long problem in cache.c * added Makefile.am; creates libHwLooptools.la to be linked into Herwig.so * added tester.cc: a quick test whether c++ linking works -- 2011-01-17 David Grellscheid herwig++-2.6.0.orig/aclocal.m40000644000175000017500000011435611756461673016645 0ustar sylvestresylvestre# generated automatically by aclocal 1.12 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, # Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.12' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.12], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.12])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # Copyright (C) 2011-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_AR([ACT-IF-FAIL]) # ------------------------- # Try to determine the archiver interface, and trigger the ar-lib wrapper # if it is needed. If the detection of archiver interface fails, run # ACT-IF-FAIL (default is to abort configure with a proper error message). AC_DEFUN([AM_PROG_AR], [AC_BEFORE([$0], [LT_INIT])dnl AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([ar-lib])dnl AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) : ${AR=ar} AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], [am_cv_ar_interface=ar AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([am_ar_try]) if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a ]) ]) case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) m4_default([$1], [AC_MSG_ERROR([could not determine $AR interface])]) ;; esac AC_SUBST([AR])dnl ]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 10 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 18 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 7 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Copyright (C) 2003-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # AM_PROG_MKDIR_P # --------------- # Check for 'mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of '-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/fastjet.m4]) m4_include([m4/herwig.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) herwig++-2.6.0.orig/PDT/0000755000175000017500000000000011756464203015412 5ustar sylvestresylvestreherwig++-2.6.0.orig/PDT/GenericWidthGenerator.h0000644000175000017500000002546211754474774022033 0ustar sylvestresylvestre// -*- C++ -*- // // GenericWidthGenerator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_GenericWidthGenerator_H #define HERWIG_GenericWidthGenerator_H // // This is the declaration of the GenericWidthGenerator class. // #include "ThePEG/PDT/WidthGenerator.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/DecayMode.h" #include "GenericWidthGenerator.fh" #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/Utilities/Interpolator.h" #include "GenericMassGenerator.h" #include namespace Herwig { using namespace ThePEG; /** * Typedef to define a DecayMoap */ typedef Selector DecayMap; /** \ingroup PDT * * The GenericWidthGenerator class is designed to automatically * calculate the running width for a given particle using information from * the decayModes and the Decayers to construct the running width. * * It also gives us the option of selecting the decay modes for a particle * based on the mass. * * @see WidthGenerator * @see DecayIntegrator * @see GenericMassGenerator */ class GenericWidthGenerator: public WidthGenerator { public: /** * A friend class so the off-shell matrix elements can be integrated. */ friend class TwoBodyAllOnCalculator; public: /** * Default constructor */ GenericWidthGenerator() : mass_(), prefactor_(1.), initialize_(false),BRnorm_(true),npoints_(50), BRminimum_(0.01), intOrder_(1) {} /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** * Return true if this width generator can handle the given particle type. * @param part The particle data pointer of the particle. * @return True if this class can handle the particle and false otherwise */ virtual bool accept(const ParticleData & part) const { if(!particle_) return false; return part.id() == particle_->id() || ( part.CC() && part.CC()->id() == particle_->id() ); } /** @name Members to calculate the width and decay modes. */ //@{ /** * Calculate the width. * @param part The particle data pointer of the particle. * @param m The scale for the width calculation * @return The width at the mass given. */ virtual Energy width(const ParticleData & part, Energy m) const; /** * Initialize the given decay map for the given particle type. * @param part The particle data pointer of the particle. * @return The decay map */ virtual DecayMap rate(const ParticleData & part) const { return part.decaySelector(); } /** * Return a decay map for a given particle instance. This allows us to * vary the branching ratios as a function of the particles mass. * @param part The particle instance * @return The decay map */ virtual DecayMap rate (const Particle & part); /** * The partial width for a given mode * @param m The mass, or scale, for the calculation * @param iloc The location of the mode in the list * @return The partial width for the mode. */ virtual Energy partialWidth(int iloc,Energy m) const; /** * Return the total width and the sum of the partial widths for * modes which are used */ virtual pair width(Energy, const ParticleData &) const; //@} /** * Output the initialisation info for the database * @param output The stream to output the information to * @param header output the header. **/ virtual void dataBaseOutput(ofstream & output, bool header=true); /** * Given a particle type and a mass and a width of an instance of * that particle type, generate a life time. */ virtual Length lifeTime(const ParticleData &, Energy m, Energy w) const; protected: /** * The \f$1\to2\f$ width for on-shell particles * @param q The mass, or scale, for the calculation * @param iloc The location of the mode in the list. * @return The partial width. */ Energy partial2BodyWidth(int iloc,Energy q) const { return partial2BodyWidth(iloc,q,MEmass1_[iloc],MEmass2_[iloc]); } /** * The \f$1\to2\f$ width for outgoing particles which can be off-shell. * @param iloc The location of the mode in the list. * @param m0 The mass of the decaying particle. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @return The partial width. */ virtual Energy partial2BodyWidth(int iloc,Energy m0,Energy m1,Energy m2) const; /** * Perform the set up for a mode in classes inheriting from this one * @param mode The decay mode * @param decayer The decayer for the mode. * @param imode The number of the mode. */ virtual void setupMode(tcDMPtr mode, tDecayIntegratorPtr decayer, unsigned int imode); /** * Access to the particle dat for inheriting classes */ tPDPtr particle() const {return particle_;} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans) ; /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} /** * Matrix element code for a given mode * @param imode The mode. */ int MEcode(int imode) const {return MEcode_[imode];} /** * Coupling for a given mode * @param imode The mode. */ double MEcoupling(int imode) const {return MEcoupling_[imode];} /** * The on-shell mass of the particle */ Energy mass() const {return mass_;} /** * Initialization option for use by the inheriting classes */ bool initialize() const {return initialize_;} /** * Access to the decay modes */ vector decayModes() const {return decayModes_;} private: /** * Helper function for the interface */ void setParticle(string); /** * Helper function for the interface */ string getParticle() const; private: /** * Describe a concrete class with persistent data. */ static ClassDescription initGenericWidthGenerator; /** * Private and non-existent assignment operator. */ GenericWidthGenerator & operator=(const GenericWidthGenerator &); private: /** * The pointer to the ParticleData object for the particle for this width generator. */ tPDPtr particle_; /** * The decaymodes */ vector decayModes_; /** * The tags for the DecayMode s */ vector decayTags_; /** * The minimum mass of the decaying particle for which this decay mode is possible */ vector minMass_; /** * The on-shell mass of the particle */ Energy mass_; /** * Prefactor to get the on-shell width */ double prefactor_; /** * The type of ME, whether it is fixed, calculated by this class or interpolation */ vector MEtype_; /** * The code for the matrix element */ vector MEcode_; /** * Mass of the first outgoing particle for the simple \f$1\to2\f$ ME's */ vector MEmass1_; /** * Mass of the second outgoing particle for the simple \f$1\to2\f$ ME's */ vector MEmass2_; /** * the coupling for a given me */ vector MEcoupling_; /** * is this mode used for the running width */ vector modeOn_; /** * storage of the massesto set up the interpolation tables */ vector interMasses_; /** * storage of the widths to set up the interpolation tables */ vector interWidths_; /** * the number of entries in the decay table for a particular mode */ vector noOfEntries_; /** * initialize the generator using the particle data object */ bool initialize_; /** * normalise the terms so that the partial widths for an on-shell particle are correct */ bool BRnorm_; /** * number of points to use for interpolation tables */ int npoints_; /** * intepolators for the running width */ vector::Ptr> interpolators_; /** * minimum branching ratio for the inclusion in the total running width */ double BRminimum_; /** * Order of the interpolation for the tables */ unsigned int intOrder_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of GenericWidthGenerator. */ template <> struct BaseClassTrait { /** Typedef of the base class of GenericWidthGenerator. */ typedef WidthGenerator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return the class name. */ static string className() { return "Herwig::GenericWidthGenerator"; } }; /** @endcond */ } #endif /* HERWIG_GenericWidthGenerator_H */ herwig++-2.6.0.orig/PDT/GenericMassGenerator.h0000644000175000017500000003032411754474774021650 0ustar sylvestresylvestre// -*- C++ -*- // // GenericMassGenerator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_GenericMassGenerator_H #define HERWIG_GenericMassGenerator_H // // This is the declaration of the GenericMassGenerator class. // #include "ThePEG/PDT/MassGenerator.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/WidthGenerator.h" #include "GenericMassGenerator.fh" #include "ThePEG/Repository/CurrentGenerator.h" namespace Herwig { using namespace ThePEG; /** \ingroup PDT * * The GenericMassGenerator class is a simple class for the * generation of particle masses in Herwig++. It inherits from the * MassGenerator class of ThePEG and implements a Breit-Wigner * using the width generator to give the running width. * * In general the width generator will be an instance of the * GenericWidthGenerator class which uses the Herwig++ decayers * based on the DecayIntegrator class to define the shape of the * running width. * * This class is designed so that the weight * * \f[\int dm^2 \frac{m\Gamma(m)}{(m^2-M^2)^2+m^2\Gamma^2(m)}\f] * * can be included in the production of the particle to take off-shell effects into * account. This is the default form of the weight. * The numerator and running of the width can * be changed using the BreitWignerShape interface. * * @see MassGenerator * @see DecayIntegrator * @see GenericWidthGenerator * */ class GenericMassGenerator: public MassGenerator { public: /** * Default constructor */ GenericMassGenerator() : maxWgt_(),BWShape_(0),nGenerate_(100), lowerMass_(),upperMass_(), mass_(),width_(),mass2_(),mWidth_(), nInitial_(1000), initialize_(false), widthOpt_(false) {} /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** * Return true if this mass generator can handle the given particle type. * @param part The particle data pointer of the particle. * @return True ig this class can handle the particle and false otherwise */ bool accept(const ParticleData & part) const; /** @name Members to generate the mass of a particle instance */ //@{ /** * Generate a mass using the default limits. * @param part The particle data pointer of the particle. * @return The mass of the particle instance. */ Energy mass(const ParticleData & part) const { return mass(part,lowerMass_,upperMass_); } /** * Generate a mass using specified limits * @param part The particle data pointer of the particle. * @param low The lower limit on the particle's mass. * @param upp The upper limit on the particle's mass. * @return The mass of the particle instance. */ Energy mass(const ParticleData & part, const Energy low,const Energy upp) const { if(uppmaxWgt_) maxWgt_=wgt; } while(maxWgt_*(UseRandom::rnd())>wgt&&ntry=nGenerate_) ? mass_ : output; } /** * Return a mass with the weight using the default limits. * @param part The particle data pointer of the particle. * @param wgt The weight for this mass. * @param r The random number used for the weight * @return The mass of the particle instance. */ Energy mass(double & wgt, const ParticleData & part, double r=UseRandom::rnd()) const { return mass(wgt,part,lowerMass_,upperMass_,r); } /** * Return a mass with the weight using the specified limits. * @param part The particle data pointer of the particle. * @param low The lower limit on the particle's mass. * @param upp The upper limit on the particle's mass. * @param wgt The weight for this mass. * @param r The random number used for the weight * @return The mass of the particle instance. */ Energy mass(double & wgt, const ParticleData & part, const Energy low,const Energy upp, double r=UseRandom::rnd()) const { return mass(wgt,part,low,upp,BWShape_,r); } /** * Weight for the factor. * @param q The mass of the instance * @return The weight. */ virtual double weight(Energy q) const { return weight(q,BWShape_); } /** * Return the full weight */ virtual InvEnergy2 BreitWignerWeight(Energy q) { return BreitWignerWeight(q,BWShape_); } //@} /** * Output the initialisation info for the database */ virtual void dataBaseOutput(ofstream &,bool); public: /** @name Access to particle properties */ //@{ /** * The running width. * @param q The mass for the calculation of the running width * @return The running width. */ Energy width(Energy q) const { return (BWShape_==1||!widthGen_) ? width_ : widthGen_->width(*particle_,q); } /** * Lower limit on the mass */ Energy lowerLimit() const {return lowerMass_;} /** * Upper limit on the mass */ Energy upperLimit() const {return upperMass_;} /** * Default mass */ Energy nominalMass() const {return mass_;} /** * Default Width */ Energy nominalWidth() const {return width_;} protected: /** * Return a mass with the weight using the specified limits. * @param low The lower limit on the particle's mass. * @param upp The upper limit on the particle's mass. * @param wgt The weight for this mass. * @param shape The type of shape to use * @param r The random number used for the weight * @return The mass of the particle instance. */ virtual Energy mass(double & wgt, const ParticleData & , const Energy low,const Energy upp, int shape, double r=UseRandom::rnd()) const { // calculate the mass square using fixed width BW Energy lo=max(low,lowerMass_),up=min(upp,upperMass_); double rhomin=atan2((lo*lo-mass2_),mWidth_); double rhomax=atan2((up*up-mass2_),mWidth_)-rhomin; double rho=rhomin+rhomax*r; Energy2 q2 = mass2_+mWidth_*tan(rho); Energy q = sqrt(q2); wgt = rhomax*weight(q,shape); // return the mass return q; } /** * Return a mass with the weight using the default limits. * @param part The particle data pointer of the particle. * @param wgt The weight for this mass. * @param shape The type of shape to use * @param r The random number used for the weight * @return The mass of the particle instance. */ Energy mass(double & wgt, const ParticleData & part, int shape, double r=UseRandom::rnd()) const { return mass(wgt,part,lowerMass_,upperMass_,shape,r); } /** * Weight for the factor. * @param q The mass of the instance * @param shape The type of shape to use as for the BreitWignerShape interface * @return The weight. */ inline virtual double weight(Energy q, int shape) const { Energy2 q2 = q*q; Energy4 sq=sqr(q2-mass2_); Energy gam=width(q); // finish the calculation of the width Energy2 num; if(shape==2) num = mass_*gam; else if(shape==3) num = mass_*width_; else num = q*gam; Energy4 den = (shape==2) ? sq+mass2_*gam*gam : sq+q2*gam*gam; return num/den*(sq+mWidth_*mWidth_)/Constants::pi/mWidth_; } /** * Return the full weight */ virtual InvEnergy2 BreitWignerWeight(Energy q, int shape) const { Energy2 q2 = q*q; Energy4 sq=sqr(q2-mass2_); Energy gam=width(q); // finish the calculation of the width Energy2 num; if(shape==2) num = mass_*gam; else if(shape==3) num = mass_*width_; else num = q*gam; Energy4 den = (shape==2) ? sq+mass2_*gam*gam : sq+q2*gam*gam; return num/den/Constants::pi; } /** * Accesss to the particle */ tcPDPtr particle() const {return particle_;} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans) ; /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription initGenericMassGenerator; /** * Private and non-existent assignment operator. */ GenericMassGenerator & operator=(const GenericMassGenerator &); private: /** * Helper function for the interface */ void setParticle(string); /** * Helper function for the interface */ string getParticle() const; private: /** * The maximum weight for unweighting when generating the mass. */ mutable double maxWgt_; /** * parameter controlling the shape of the Breit-Wigner */ int BWShape_; /** * Number of attempts to generate the mass. */ int nGenerate_; private: /** * Pointer to the particle */ tPDPtr particle_; /** * Lower limit on the particle's mass */ Energy lowerMass_; /** * Upper limit on the particle's mass */ Energy upperMass_; /** * Mass of the particle */ Energy mass_; /** * Width of the particle */ Energy width_; /** * Mass of the particle squared. */ Energy2 mass2_; /** * Mass of the particle times the width. */ Energy2 mWidth_; /** * Number of weights to generate when initializing */ int nInitial_; /** * Whether or not to initialize the GenericMassGenerator */ bool initialize_; /** * Pointer to the width generator */ WidthGeneratorPtr widthGen_; /** * Option for the treatment of the width */ bool widthOpt_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of GenericMassGenerator. */ template <> struct BaseClassTrait { /** Typedef of the base class of GenericMassGenerator. */ typedef MassGenerator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return the class name. */ static string className() { return "Herwig::GenericMassGenerator"; } }; /** @endcond */ } #endif /* HERWIG_GenericMassGenerator_H */ herwig++-2.6.0.orig/PDT/BaryonWidthGenerator.cc0000644000175000017500000002244211754474774022042 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the BaryonWidthGenerator class. // #include "BaryonWidthGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Decay/Baryon/Baryon1MesonDecayerBase.h" using namespace Herwig; using namespace ThePEG; void BaryonWidthGenerator::persistentOutput(PersistentOStream & os) const { os << _baryondecayers << _modeloc; } void BaryonWidthGenerator::persistentInput(PersistentIStream & is, int) { is >> _baryondecayers >> _modeloc; } ClassDescription BaryonWidthGenerator::initBaryonWidthGenerator; // Definition of the static class description member. void BaryonWidthGenerator::Init() { static ClassDocumentation documentation ("The BaryonWidthGenerator class is designed for the calculation of the" " running width for baryons."); static RefVector interfaceBaryonDecayers ("BaryonDecayers", "Pointers to the baryon decayers to get the couplings", &BaryonWidthGenerator::_baryondecayers, -1, false, false, true, true, false); static ParVector interfaceModeLocation ("ModeLocation", "The location of the mode in the decayer", &BaryonWidthGenerator::_modeloc, 0, -1, 0, 0, false, false, false); } void BaryonWidthGenerator::setupMode(tcDMPtr mode, tDecayIntegratorPtr decayer, unsigned int) { // cast the decayer tBaryon1MesonDecayerBasePtr baryon(dynamic_ptr_cast(decayer)); if(baryon) { int dmode(baryon->findMode(*mode)); if(dmode<0) { _baryondecayers.push_back(Baryon1MesonDecayerBasePtr()); _modeloc.push_back(-1); return; } else { _baryondecayers.push_back(baryon); _modeloc.push_back(dmode); } } else { _baryondecayers.push_back(Baryon1MesonDecayerBasePtr()); _modeloc.push_back(-1); } } void BaryonWidthGenerator::dataBaseOutput(ofstream & output, bool header) { if(header) output << "update Width_Generators set parameters=\""; // info from the base class GenericWidthGenerator::dataBaseOutput(output,false); // info from this class for(unsigned int ix=0;ix<_baryondecayers.size();++ix) { if(_baryondecayers[ix]) { output << "insert " << name() << ":BaryonDecayers " << ix << " " << _baryondecayers[ix]->fullName() << "\n"; } else { output << "insert " << name() << ":BaryonDecayers " << ix << " NULL \n"; } output << "insert " << name() << ":ModeLocation " << ix << " " << _modeloc[ix] << "\n"; } if(header) output << "\n\" where BINARY ThePEGName=\"" << name() << "\";" << endl; } Energy BaryonWidthGenerator::partial2BodyWidth(int imode, Energy q,Energy m1, Energy m2) const { using Constants::pi; Complex A1,A2,A3,B1,B2,B3; if(q 1/2 0 if(mecode==101) { _baryondecayers[imode]->halfHalfScalarCoupling(_modeloc[imode],q,m1,m2,A1,B1); double Afact1((A1*conj(A1)).real()),Bfact1((B1*conj(B1)).real()); gam = 0.125/pi/q2*pcm*(Afact1*fact1+Bfact1*fact2); /* Energy Qp(sqrt(pow(q+m1,2)-pow(m2,2))),Qm(sqrt(pow(q-m1,2)-pow(m2,2))); Complex h1(2.*Qp*A1),h2(-2.*Qm*B1); cout << "testing 1/2->1/2 0 " << gam << " " << real(h1*conj(h1)+h2*conj(h2))/32./pi*pcm/q2 << " " << real(h1*conj(h1)+h2*conj(h2))/32./pi*pcm/q2/gam << endl; */ } // 1/2 -> 1/2 1 else if(mecode==102) { _baryondecayers[imode]->halfHalfVectorCoupling(_modeloc[imode],q,m1,m2, A1,A2,B1,B2); double Afact1((A1*conj(A1)).real()),Afact2((A2*conj(A2)).real()), Bfact1((B1*conj(B1)).real()),Bfact2((B2*conj(B2)).real()), Afact4((A1*conj(A2)+A2*conj(A1)).real()), Bfact4((B1*conj(B2)+B2*conj(B1)).real()); Energy2 me(2.*(fact1*Bfact1+fact2*Afact1)); if(m2>1e-10*GeV) { me+=1./m22*(fact1*Bfact1*(q-m1)*(q-m1)-2.*q*pcm*Bfact4*q*pcm*(q-m1)/msum +fact2*q2*Bfact2*pcm2/msum/msum +fact2*Afact1*msum *msum +2.*q*pcm*Afact4*q*pcm +fact1*q2*Afact2*pcm2/msum/msum); } gam = pcm/8./pi/q2*me; // test of the matrix element /* Energy2 Qp(sqrt(pow(q+m1,2)-pow(m2,2))),Qm(sqrt(pow(q-m1,2)-pow(m2,2))); double r2(sqrt(2.)); Complex h1(2.*r2*Qp*B1),h2(-2.*r2*Qm*A1),h3(0.),h4(0.); if(m2>1e-10*GeV) { h3=2./m2*(Qp*(q-m1)*B1-Qm*q*B2*pcm/(q+m1)); h4=2./m2*(Qm*(q+m1)*A1+Qp*q*A2*pcm/(q+m1)); } cout << "testing 1/2->1/2 0 " << gam << " " << real(h1*conj(h1)+h2*conj(h2)+h3*conj(h3)+h4*conj(h4))/32./pi*pcm/q2 << " " << real(h1*conj(h1)+h2*conj(h2)+h3*conj(h3)+h4*conj(h4))/32./pi*pcm/q2/gam << endl; */ } // 1/2 -> 3/2 0 else if(mecode==103) { _baryondecayers[imode]->halfThreeHalfScalarCoupling(_modeloc[imode],q,m1,m2,A1,B1); double Afact1((A1*conj(A1)).real()),Bfact1((B1*conj(B1)).real()); gam = 0.25/pi/3./msum/msum/m12*pcm*pcm2*(Afact1*fact1+Bfact1*fact2); /* Energy2 Qp(sqrt(pow(q+m1,2)-pow(m2,2))),Qm(sqrt(pow(q-m1,2)-pow(m2,2))); double r23(sqrt(2./3.)); Complex h1(-2.*r23*pcm*q/m1*Qm*B1/(q+m1)),h2( 2.*r23*pcm*q/m1*Qp*A1/(q+m1)); cout << "testing 1/2->3/2 0 " << gam << " " << real(h1*conj(h1)+h2*conj(h2))/32./pi*pcm/q2 << " " << real(h1*conj(h1)+h2*conj(h2))/32./pi*pcm/q2/gam << endl; */ } // 1/2 -> 3/2 1 else if(mecode==104) { Energy Qp(sqrt(fact1)),Qm(sqrt(fact2)); double r2(sqrt(2.)),r3(sqrt(3.)); complex h1(-2.*Qp*A1),h2(2.*Qm*B1),h5(ZERO),h6(ZERO); complex h3(-2./r3*Qp*(A1-fact2/m1*A2/msum)); complex h4( 2./r3*Qm*(B1-fact1/m1*B2/msum)); if(m2>1e-10*GeV) { h5=-2.*r2/r3/m1/m2*Qp*(0.5*(q2-m12-m22)*A1+0.5*fact2*(q+m1)*A2/msum +q2*pcm*pcm*A3/sqr(msum)); h6= 2.*r2/r3/m1/m2*Qm*(0.5*(q2-m12-m22)*B1-0.5*fact1*(q-m1)*B2/msum +q2*pcm*pcm*B3/sqr(msum)); } gam=real(+h1*conj(h1)+h2*conj(h2)+h3*conj(h3) +h4*conj(h4)+h5*conj(h5)+h6*conj(h6))/32./pi*pcm/q2; } // 3/2 -> 1/2 0 else if(mecode==105) { _baryondecayers[imode]->threeHalfHalfScalarCoupling(_modeloc[imode],q,m1,m2,A1,B1); double Afact1((A1*conj(A1)).real()),Bfact1((B1*conj(B1)).real()); gam = 0.125/3./pi/msum/msum/q2*pcm*pcm2*(Afact1*fact1+Bfact1*fact2); /* Energy2 Qp(sqrt(pow(q+m1,2)-pow(m2,2))),Qm(sqrt(pow(q-m1,2)-pow(m2,2))); double r23(sqrt(2./3.)); Complex h1(-2.*r23*pcm*Qm*B1/(q+m1)), h2( 2.*r23*pcm*Qp*A1/(q+m1)); cout << "testing 3/2->1/2 0 " << gam << " " << real(h1*conj(h1)+h2*conj(h2))/64./pi*pcm/q2 << " " << real(h1*conj(h1)+h2*conj(h2))/64./pi*pcm/q2/gam << endl; */ } // 3/2 -> 1/2 1 else if(mecode==106) { _baryondecayers[imode]->threeHalfHalfVectorCoupling(_modeloc[imode],q,m1,m2, A1,A2,A3,B1,B2,B3); Energy Qp(sqrt(fact1)),Qm(sqrt(fact2)); double r2(sqrt(2.)),r3(sqrt(3.)); complex h1(-2.*Qp*A1),h2(2.*Qm*B1),h5(ZERO),h6(ZERO); complex h3(-2./r3*Qp*(A1-fact2/q*(A2/msum))); complex h4( 2./r3*Qm*(B1-fact1/q*(B2/msum))); if(m2>1e-10*GeV) { h5=-2.*r2/r3/q/m2*Qp*(0.5*(m12-q2-m22)*A1+0.5*fact2*(m1+q)*A2/msum +q2*pcm*pcm*(A3/sqr(msum))); h6= 2.*r2/r3/q/m2*Qm*(0.5*(m12-q2-m22)*B1-0.5*fact1*(m1-q)*(B2/msum) +q2*pcm*pcm*(B3/sqr(msum))); } gam=real(+h1*conj(h1)+h2*conj(h2)+h3*conj(h3) +h4*conj(h4)+h5*conj(h5)+h6*conj(h6))/64./pi*pcm/q2; } // 3/2 -> 3/2 0 else if(mecode==107) { _baryondecayers[imode]->threeHalfThreeHalfScalarCoupling(_modeloc[imode],q,m1,m2, A1,A2,B1,B2); complex A2byM2 = A2/sqr(msum); complex B2byM2 = B2/sqr(msum); double Afact1((A1*conj(A1)).real()); InvEnergy4 Afact2((A2byM2*conj(A2byM2)).real()); double Bfact1((B1*conj(B1)).real()); InvEnergy4 Bfact2((B2byM2*conj(B2byM2)).real()); InvEnergy2 Afact4((A1*conj(A2byM2)+A2byM2*conj(A1)).real()); InvEnergy2 Bfact4((B1*conj(B2byM2)+B2byM2*conj(B1)).real()); gam = pcm/36./pi/q2/q2/m12* ( fact1*(Afact2*q2*q2*pcm2*pcm2 +0.25*Afact1*(fact3*fact1+10.*q2*m12) +0.5*Afact4*q2*pcm*pcm*(fact3+q*m1))+ fact2*(Bfact2*q2*q2*pcm2*pcm2 +0.25*Bfact1*(fact3*fact2+10.*q2*m12) +0.5*Bfact4*q2*pcm*pcm*(fact3-q*m1))); } else { throw Exception() << "Unknown type of mode " << mecode << " in BaryonWidthGenerator::partial2BodyWidth() " << Exception::abortnow; } return gam*MEcoupling(imode)*MEcoupling(imode); } void BaryonWidthGenerator::doinit() { if(initialize()) { _baryondecayers.clear(); _modeloc.clear(); } GenericWidthGenerator::doinit(); } herwig++-2.6.0.orig/PDT/Makefile.in0000644000175000017500000005017011756461701017462 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = PDT DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwBaryonWidth_la_LIBADD = am_libHwBaryonWidth_la_OBJECTS = BaryonWidthGenerator.lo libHwBaryonWidth_la_OBJECTS = $(am_libHwBaryonWidth_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent libHwPDT_la_LIBADD = am_libHwPDT_la_OBJECTS = GenericMassGenerator.lo \ GenericWidthGenerator.lo OneOffShellCalculator.lo \ ScalarMassGenerator.lo TwoBodyAllOnCalculator.lo \ TwoOffShellCalculator.lo WidthCalculatorBase.lo \ StandardMatchers.lo SMHiggsWidthGenerator.lo \ SMHiggsMassGenerator.lo libHwPDT_la_OBJECTS = $(am_libHwPDT_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwBaryonWidth_la_SOURCES) $(libHwPDT_la_SOURCES) DIST_SOURCES = $(libHwBaryonWidth_la_SOURCES) $(libHwPDT_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ 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 libHwBaryonWidth_la_SOURCES = \ BaryonWidthGenerator.cc BaryonWidthGenerator.fh \ BaryonWidthGenerator.h all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu PDT/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu PDT/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwBaryonWidth.la: $(libHwBaryonWidth_la_OBJECTS) $(libHwBaryonWidth_la_DEPENDENCIES) $(EXTRA_libHwBaryonWidth_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwBaryonWidth_la_OBJECTS) $(libHwBaryonWidth_la_LIBADD) $(LIBS) libHwPDT.la: $(libHwPDT_la_OBJECTS) $(libHwPDT_la_DEPENDENCIES) $(EXTRA_libHwPDT_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwPDT_la_OBJECTS) $(libHwPDT_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BaryonWidthGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GenericMassGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GenericWidthGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OneOffShellCalculator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMHiggsMassGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMHiggsWidthGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ScalarMassGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StandardMatchers.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TwoBodyAllOnCalculator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TwoOffShellCalculator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/WidthCalculatorBase.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/PDT/TwoOffShellCalculator.h0000644000175000017500000001261711754474774022014 0ustar sylvestresylvestre// -*- C++ -*- // // TwoOffShellCalculator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TwoOffShellCalculator_H #define HERWIG_TwoOffShellCalculator_H // // This is the declaration of the TwoOffShellCalculator class. // #include "WidthCalculatorBase.h" #include "GenericMassGenerator.h" #include "TwoOffShellCalculator.fh" #include "OneOffShellCalculator.fh" #include "Herwig++/Utilities/GSLIntegrator.h" namespace Herwig { using namespace ThePEG; struct TwoOffShellIntegrand; /** \ingroup PDT * * Use WidthCalculatorBase objects to integrate over the mass of two * external particles which can be off-shell for running width calculations. * * @see WidthCalculatorBase * @see TwoOffShellIntegrand */ class TwoOffShellCalculator: public WidthCalculatorBase { /** * The TwoOffShellIntegrand class is a friend to allow access to the private * members for the integration. */ friend struct TwoOffShellIntegrand; public: /** * Constructor which should be used setting all the required members. * @param inloc The mass which is off-shell and to be integrated over. * @param inwidth Pointer to the WidthGeneratorBase object which calculates * the partial width for a given mass of the off-shell particle. This * should be a OneOffShellCalculator instance. * @param inmass Pointer to the GenericMassGenerator for the off-shell particle. * @param inmin1 The minimum mass for the first off-shell particle. * @param inmin2 The minimum mass for the second off-shell particle. */ TwoOffShellCalculator(int inloc, WidthCalculatorBasePtr inwidth, GenericMassGeneratorPtr inmass, Energy inmin2,Energy inmin1) : _themass(inloc),_minmass(inmin2),_mother(inmin1),_oneoffwidth(inwidth), _massptr(inmass) {} /** * member to calculate the partial width. * @param scale The mass squared for the decaying particle. * @return The partial width. */ Energy partialWidth(Energy2 scale) const; /** * Get the mass of one of the decay products. This must be * implemented in classes inheriting from this one. * @param imass The mass required. * @param mass The new value. * @return The mass required. */ void resetMass(int imass,Energy mass) { _oneoffwidth->resetMass(imass,mass); } /** * Get the mass of one of the decay products. This must be * implemented in classes inheriting from this one. * @param imass The mass required. * @return The mass required. */ Energy getMass(const int imass) const { return _oneoffwidth->getMass(imass); } /** * Get the masses of all bar the one specified. Used to get the limits * for integration. * @param imass The particle not needed * @return The sum of the other masses. */ Energy otherMass(const int imass) const { return _oneoffwidth->otherMass(imass); } protected: /** * The integrand. * @param mass The mass of the second off-shell particle, * @return The differential rate. */ Energy dGamma(Energy mass) const { _oneoffwidth->resetMass(_themass,mass); Energy wgt = (_oneoffwidth->partialWidth(_scale)); wgt*=(_massptr->weight(mass)); return wgt; } private: /** * Private and non-existent assignment operator. */ TwoOffShellCalculator & operator=(const TwoOffShellCalculator &); private: /** * The second mass which is offshell */ int _themass; /** * the minimum allowed mass */ Energy _minmass; /** * sum of the masses of the other decay products */ Energy _mother; /** * pointer to object calculating the width for one-off shell particle. */ WidthCalculatorBasePtr _oneoffwidth; /** * pointer to object calculating the mass of the particle */ GenericMassGeneratorPtr _massptr; /** * integrator */ GSLIntegrator _integrator; /** * the mass squared of the decaying particle */ mutable Energy2 _scale; }; /** \ingroup PDT * Class for the integrand of a matrix element where two of the outgoing * particles is off-shell. This class is used by the TwoOffShellCalculator class * to perform the integral. */ struct TwoOffShellIntegrand { /** * Constructor. * @param in Pointer to the OneOffShellCalculator class this is doing the * integration for. * @param m2 The mass squared of the off-shell particle for the Jacobian * transform. * @param mw The mass times width of the off-shell particle for the Jacobian * transform. */ TwoOffShellIntegrand(tcTwoOffShellCalculatorPtr in,Energy2 m2,Energy2 mw) : _integrand(in),_mass2(m2),_mwidth(mw) {} /** * Retreive function value */ Energy operator ()(double x) const { return _integrand->dGamma(sqrt(_mass2+_mwidth*tan(x))); } /** Argument type for the GSLIntegrator */ typedef double ArgType; /** Return type for the GSLIntegrator */ typedef Energy ValType; private: /** * pointer to the decay integrator */ cTwoOffShellCalculatorPtr _integrand; /** * The mass squared for the off-shell particle for the Jacobian transform. */ Energy2 _mass2; /** * The mass times width for the off-shell particle for the Jacobian transform. */ Energy2 _mwidth; }; } #endif /* HERWIG_TwoOffShellCalculator_H */ herwig++-2.6.0.orig/PDT/TwoBodyAllOnCalculator.fh0000644000175000017500000000052611754474774022277 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the TwoBodyAllOnCalculator class. // #ifndef HERWIG_TwoBodyAllOnCalculator_FH #define HERWIG_TwoBodyAllOnCalculator_FH namespace Herwig { using namespace ThePEG; class TwoBodyAllOnCalculator; ThePEG_DECLARE_CLASS_POINTERS(TwoBodyAllOnCalculator,TwoBodyAllOnCalculatorPtr); } #endif herwig++-2.6.0.orig/PDT/SMHiggsMassGenerator.h0000644000175000017500000001236411754474774021601 0ustar sylvestresylvestre// -*- C++ -*- // // SMHiggsMassGenerator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMHiggsMassGenerator_H #define HERWIG_SMHiggsMassGenerator_H // // This is the declaration of the SMHiggsMassGenerator class. // #include "GenericMassGenerator.h" #include "GenericWidthGenerator.h" namespace Herwig { using namespace ThePEG; /** * The SMHiggsMassGenerator class implements the generation * of the Higgs boson mass according to the prescription of hep-ph/9505211 * * @see \ref SMHiggsMassGeneratorInterfaces "The interfaces" * defined for SMHiggsMassGenerator. */ class SMHiggsMassGenerator: public GenericMassGenerator { public: /** * The default constructor. */ SMHiggsMassGenerator() : _shape(1) {} /** * Weight for the factor for an off-shell mass * @param q The off-shell mass * @param shape The type of shape to use as for the BreitWignerShape interface * @return The weight. */ virtual double weight(Energy q, int shape) const { Energy2 q2 = sqr(q); Energy2 mass2 = sqr(nominalMass()); Energy2 mwidth= nominalMass()*nominalWidth(); return BreitWignerWeight(q,shape)*(sqr(mass2-q2)+sqr(mwidth))/mwidth; } /** * Return true if this mass generator can handle the given particle type. * @param part The particle data pointer of the particle. * @return True ig this class can handle the particle and false otherwise */ bool accept(const ParticleData & part) const; /** * output for the database */ virtual void dataBaseOutput(ofstream &,bool); /** @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: /** * Weight for the factor for an off-shell mass * @param q The off-shell mass * @param shape The type of shape to use as for the BreitWignerShape interface * @return The weight. */ virtual InvEnergy2 BreitWignerWeight(Energy q,int shape) const { useMe(); pair widths = shape!=2 ? _hwidth->width(q,*particle()) : make_pair(nominalWidth(),nominalWidth()); Energy2 q2 = sqr(q); Energy4 sq=sqr(q2-sqr(nominalMass())); Energy2 num = widths.first*q; double fact = 1.; if(_shape==1) fact *= pow<4,1>(nominalMass()/q); if( shape==3) num=GeV2; return num*fact/Constants::pi/(sq+sqr(widths.second*q)*fact); } protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSMHiggsMassGenerator; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SMHiggsMassGenerator & operator=(const SMHiggsMassGenerator &); private: /** * Option for the line-shape */ unsigned int _shape; /** * The width generator */ GenericWidthGeneratorPtr _hwidth; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SMHiggsMassGenerator. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SMHiggsMassGenerator. */ typedef Herwig::GenericMassGenerator NthBase; }; /** This template specialization informs ThePEG about the name of * the SMHiggsMassGenerator class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SMHiggsMassGenerator"; } }; /** @endcond */ } #endif /* HERWIG_SMHiggsMassGenerator_H */ herwig++-2.6.0.orig/PDT/TwoBodyAllOnCalculator.h0000644000175000017500000000713111754474774022130 0ustar sylvestresylvestre// -*- C++ -*- // // TwoBodyAllOnCalculator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TwoBodyAllOnCalculator_H #define HERWIG_TwoBodyAllOnCalculator_H // This is the declaration of the TwoBodyAllOnCalculator class. #include "WidthCalculatorBase.h" #include "TwoBodyAllOnCalculator.fh" #include "GenericWidthGenerator.h" namespace Herwig { using namespace ThePEG; /** \ingroup PDT * * The TwoBodyAllOnCalculator class is a wrapped around the the * simple two body decay matrix elements in the GenericWidthGenerator * class and is designed to allow these matrix elements to be integrated * if the external particles can be off-shell. * * @see TwoBodyAllOnCalculator * */ class TwoBodyAllOnCalculator: public WidthCalculatorBase { public: /** * The GenericWidthGenerator class is a friend to allow easier access for the * integration of the two body partial widths. */ friend class GenericWidthGenerator; public: /** * Constructor. * @param inwidth Pointer to the GenericWidthGenerator class. * @param imode The mode in the GenericWidthGenerator class we are integrating * @param m1 The mass of the first particle. * @param m2 The mass of the second particle. */ TwoBodyAllOnCalculator(tGenericWidthGeneratorPtr inwidth,int imode, Energy m1,Energy m2) : _mode(imode),_mass1(m1),_mass2(m2),_widthgen(inwidth) {} /** * member to calculate the partial width. * @param scale The mass squared for the decaying particle. * @return The partial width. */ Energy partialWidth(Energy2 scale) const; /** * Get the mass of one of the decay products. This must be * implemented in classes inheriting from this one. * @param imass The mass required. * @param mass The new value. * @return The mass required. */ void resetMass(int imass,Energy mass) { if(imass==1) _mass1=mass; else if(imass==2) _mass2=mass; else throw Exception() << "Unknown particle in " << "TwoBodyAllOnCalculator::resetMass()" << Exception::runerror; } /** * Get the mass of one of the decay products. This must be * implemented in classes inheriting from this one. * @param imass The mass required. * @return The mass required. */ Energy getMass(const int imass) const { if(imass==1) return _mass1; else if(imass==2) return _mass2; else throw Exception() << "Unknown particle in " << "TwoBodyAllOnCalculator::getMass()" << Exception::runerror; } /** * Get the masses of all bar the one specified. Used to get the limits * for integration. * @param imass The particle not needed * @return The sum of the other masses. */ Energy otherMass(const int imass) const { if(imass==1) return _mass2; else if(imass==2) return _mass1; else throw Exception() << "Unknown particle in " << "TwoBodyAllOnCalculator::otherMass()" << Exception::runerror; } private: /** * Private and non-existent assignment operator. */ TwoBodyAllOnCalculator & operator=(const TwoBodyAllOnCalculator &); private: /** * the mode */ int _mode; /** * Mass of the first particle. */ Energy _mass1; /** * Mass of the second particle. */ Energy _mass2; /** * the width generator */ GenericWidthGeneratorPtr _widthgen; }; } #endif /* HERWIG_TwoBodyAllOnCalculator_H */ herwig++-2.6.0.orig/PDT/ScalarMassGenerator.h0000644000175000017500000001150511754474774021501 0ustar sylvestresylvestre// -*- C++ -*- // // ScalarMassGenerator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ScalarMassGenerator_H #define HERWIG_ScalarMassGenerator_H // This is the declaration of the ScalarMassGenerator class. #include "GenericMassGenerator.h" #include "ScalarMassGenerator.fh" #include "ThePEG/Config/Complex.h" namespace Herwig { using namespace ThePEG; /** \ingroup PDT * * The ScalarMassGenerator class is designed for the generation * of the masses of the \f$a_0\f$ and \f$f_0\f$ mesons which have \f$K\bar{K}\f$ * modes close to the on-shell mass of the particle. * * The form based on the Flatte parameterisation of PLB63, 224, we use a weight * \f[\frac{1}{\pi}\frac{m\Gamma(m)}{|M^2-m^2-i\sum_ig^2_i\rho_i|^2}\f], * where * - \f$g_i\f$ is the coupling for a given decay mode * - \f$\rho_i=2p_i/m\f$ is Lorentz-invariant phase-space where \f$p_i\f$ is the * momentum release in the decay, this analytically continued * below the threshold. * In this case the running width given by the sum of the running partial widths * \f[\Gamma_i(m) = 2g^2_i\frac{p_i}{m^2}\f], * and we differ from the Flatte approach in not analytically * continuing below the threshold for the numerator. * * @see MassGenerator * @see GenericMassGenerator * */ class ScalarMassGenerator: public GenericMassGenerator { 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** * Weight for the factor for an off-shell mass * @param mass The off-shell mass * @param shape The type of shape to use as for the BreitWignerShape interface * @return The weight. */ virtual double weight(Energy mass,int shape) const; /** * output for the database */ virtual void dataBaseOutput(ofstream &,bool); protected: /** * Return the full weight */ virtual InvEnergy2 BreitWignerWeight(Energy q, int shape) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription initScalarMassGenerator; /** * Private and non-existent assignment operator. */ ScalarMassGenerator & operator=(const ScalarMassGenerator &); private: /** * couplings for the decay channels */ vector _coupling; /** * The first outgoing mass for the channels */ vector _mass1; /** * The second outgoing mass for the channels */ vector _mass2; /** * calculated values to speed things up */ //@{ /** * Maximum mass squared */ vector _m2plus; /** * Minimum mass squared */ vector _m2minus; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ScalarMassGenerator. */ template <> struct BaseClassTrait { /** Typedef of the base class of ScalarMassGenerator. */ typedef Herwig::GenericMassGenerator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return the class name. */ static string className() { return "Herwig::ScalarMassGenerator"; } }; /** @endcond */ } #endif /* HERWIG_ScalarMassGenerator_H */ herwig++-2.6.0.orig/PDT/ThreeBodyAllOnCalculator.tcc0000644000175000017500000001243611754474774022754 0ustar sylvestresylvestre// -*- C++ -*- // // ThreeBodyAllOnCalculator.tcc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined templated member // functions of the ThreeBodyAllOnCalculator class. // using namespace Herwig; // shift the variables for the outer integrand and give limits for the inner one template void ThreeBodyAllOnCalculator::outerVariables(const double & x, Energy2 & low, Energy2 & upp) const { // first convert the value of x into the value of souter if(_mapping==0) { _souter = _channelmass[_thechannel]*(_channelmass[_thechannel]+ _channelwidth[_thechannel]*tan(x)); } else if(_mapping==1) { _souter = sqr(_channelmass[_thechannel])*(1.+1./x); } else { _souter = UnitRemoval::E2 * pow(x,1./(_channelpower[_thechannel]+1.)); } // now the limits of the inner integral Energy ea(ZERO),eb(ZERO); Energy rs=sqrt(_souter); Energy2 eam2(ZERO),ebm2(ZERO); switch(_channeltype[_thechannel]) { case 1: ea = 0.5*(_souter-_m2[1]+_m2[2])/rs; eam2 = sqr(ea)-_m2[2]; eb = 0.5*(_m2[0]-_souter-_m2[3])/rs; ebm2 = sqr(eb)-_m2[3]; break; case 2: ea = 0.5*(_souter-_m2[1]+_m2[3])/rs; eam2 = sqr(ea)-_m2[3]; eb = 0.5*(_m2[0]-_souter-_m2[2])/rs; ebm2 = sqr(eb)-_m2[2]; break; case 3: ea = 0.5*(_souter-_m2[2]+_m2[3])/rs; eam2 = sqr(ea)-_m2[3]; eb = 0.5*(_m2[0]-_souter-_m2[1])/rs; ebm2 = sqr(eb)-_m2[1]; break; default: assert(false); } Energy eam = sqrt(max(ZERO,eam2)); Energy ebm = sqrt(max(ZERO,ebm2)); Energy2 sum = sqr(ea+eb); // calculate the limits low = sum - sqr(eam+ebm); upp = sum - sqr(eam-ebm); } template Energy2 ThreeBodyAllOnCalculator::operator ()(Energy2 y) const { assert(!isnan(y/MeV2)); // set up the values of the s variables Energy2 s12(ZERO),s23(ZERO),s13(ZERO), m2sum(_m2[0]+_m2[1]+_m2[2]+_m2[3]); switch(_channeltype[_thechannel]) { case 1: s12 = _souter; s23 = y; s13 = m2sum-s12-s23; break; case 2: s23 = y; s13 = _souter; s12 = m2sum-s23-s13; break; case 3: s23 = _souter; s13 = y; s12 = m2sum-s23-s13; break; } // compute the jacobian // computer the denominator for the jacobian InvEnergy2 jacdem = ZERO; Energy2 sjac(ZERO); Energy2 rm2,rw2; for(unsigned int ix=0,N=_channeltype.size(); ix Energy ThreeBodyAllOnCalculator::partialWidth(Energy2 q2) const { Outer outer(this,_relerr); _m[0] = sqrt(q2); _m2[0]=q2; // check the decay is kinematically allowed if(_m[0]<_m[1]+_m[2]+_m[3]){return ZERO;} // perform the integrals for all the different channels Energy4 sum(ZERO); for(unsigned int ix=0,N=_channeltype.size(); ix ZERO) { if(_channelwidth[ix] > 1e-8*MeV) { rupp = atan2((upp-_channelmass[ix]*_channelmass[ix]), _channelmass[ix]*_channelwidth[ix]); rlow = atan2((low-_channelmass[ix]*_channelmass[ix]), _channelmass[ix]*_channelwidth[ix]); _mapping = 0; if(rupp/rlow>0.&&_channelwidth[ix]/_channelmass[ix]<1e-6) { _mapping = 1; Energy2 m2=sqr(_channelmass[ix]); rupp = m2/(low-m2); rlow = m2/(upp-m2); } } else { _mapping = 1; Energy2 m2=sqr(_channelmass[ix]); rupp = m2/(low-m2); rlow = m2/(upp-m2); } } else { _mapping = 2; rupp = pow(upp*UnitRemoval::InvE2, _channelpower[ix]+1.); rlow = pow(low*UnitRemoval::InvE2, _channelpower[ix]+1.); } // perform the integral using GSLIntegrator class _thechannel=ix; GSLIntegrator intb(1e-35,_relerr,1000); sum += _channelweights[ix] * intb.value(outer,rlow,rupp); } // final factors Energy3 fact = pow<3,1>(Constants::twopi * _m[0]); return sum/fact/32.; } herwig++-2.6.0.orig/PDT/GenericMassGenerator.cc0000644000175000017500000001645511754474774022017 0ustar sylvestresylvestre// -*- C++ -*- // // GenericMassGenerator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the GenericMassGenerator class. // #include "GenericMassGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Utilities/Rebinder.h" using namespace Herwig; using namespace ThePEG; void GenericMassGenerator::persistentOutput(PersistentOStream & os) const { os << particle_ << ounit(lowerMass_,GeV) << ounit(upperMass_,GeV) << maxWgt_ << BWShape_ << nGenerate_ << ounit(mass_,GeV) << ounit(width_,GeV) << ounit(mass2_,GeV2) << ounit(mWidth_,GeV2) << nInitial_ << initialize_ << widthGen_ << widthOpt_; } void GenericMassGenerator::persistentInput(PersistentIStream & is, int) { is >> particle_ >> iunit(lowerMass_,GeV) >> iunit(upperMass_,GeV) >> maxWgt_ >> BWShape_ >> nGenerate_ >> iunit(mass_,GeV) >> iunit(width_ ,GeV) >> iunit(mass2_,GeV2) >> iunit(mWidth_ ,GeV2) >> nInitial_ >> initialize_ >> widthGen_ >> widthOpt_; } ClassDescription GenericMassGenerator::initGenericMassGenerator; // Definition of the static class description member. void GenericMassGenerator::Init() { static ClassDocumentation documentation ("The GenericMassGenerator class is the main class for" " mass generation in Herwig++."); static Parameter interfaceParticle ("Particle", "The particle data object for this class", 0, "", true, false, &GenericMassGenerator::setParticle, &GenericMassGenerator::getParticle); static Switch interfaceInitialize ("Initialize", "Initialize the calculation of the maximum weight etc", &GenericMassGenerator::initialize_, false, false, false); static SwitchOption interfaceInitializeInitialization (interfaceInitialize, "Yes", "Do the initialization", true); static SwitchOption interfaceInitializeNoInitialization (interfaceInitialize, "No", "Don't do the initalization", false); static Switch interfaceBreitWignerShape ("BreitWignerShape", "Controls the shape of the mass distribution generated", &GenericMassGenerator::BWShape_, 0, false, false); static SwitchOption interfaceBreitWignerShapeDefault (interfaceBreitWignerShape, "Default", "Running width with q in numerator and denominator width factor", 0); static SwitchOption interfaceBreitWignerShapeFixedWidth (interfaceBreitWignerShape, "FixedWidth", "Use a fixed width", 1); static SwitchOption interfaceBreitWignerShapeNoq (interfaceBreitWignerShape, "Noq", "Use M rather than q in the numerator and denominator width factor", 2); static SwitchOption interfaceBreitWignerShapeNoNumerator (interfaceBreitWignerShape, "NoNumerator", "Neglect the numerator factors", 3); static Parameter interfaceMaximumWeight ("MaximumWeight", "The maximum weight for the unweighting", &GenericMassGenerator::maxWgt_, 1.0, 0.0, 1000.0, false, false, true); static Parameter interfaceNGenerate ("NGenerate", "The number of tries to generate the mass", &GenericMassGenerator::nGenerate_, 100, 0, 10000, false, false, true); static Parameter interfaceNInitial ("NInitial", "Number of tries for the initialisation", &GenericMassGenerator::nInitial_, 1000, 0, 100000, false, false, true); static Switch interfaceWidthOption ("WidthOption", "Which width to use", &GenericMassGenerator::widthOpt_, false, false, false); static SwitchOption interfaceWidthOptionNominalWidth (interfaceWidthOption, "NominalWidth", "Use the normal width from the particle data object", false); static SwitchOption interfaceWidthOptionPhysicalWidth (interfaceWidthOption, "PhysicalWidth", "Use the width calculated at the on-shell mass", true); } bool GenericMassGenerator::accept(const ParticleData & in) const { if(!particle_) return false; return in.id() == particle_->id() || ( particle_->CC() && particle_->CC()->id() == in.id() ); } void GenericMassGenerator::doinit() { MassGenerator::doinit(); // the width generator particle_->init(); widthGen_=particle_->widthGenerator(); if(widthGen_){widthGen_->init();} // local storage of particle properties for speed mass_=particle_->mass(); width_= widthOpt_ ? particle_->generateWidth(mass_) : particle_->width(); mass2_=mass_*mass_; mWidth_=mass_*width_; lowerMass_ = mass_-particle_->widthLoCut(); upperMass_ = mass_+particle_->widthUpCut(); // print out messagw if doing the initialisation if(initialize_) { // zero the maximum weight maxWgt_=0.; // storage of variables for the loop double wgt=0.,swgt=0.,sqwgt=0.; // perform the initialisation for(int ix=0;ixmaxWgt_) maxWgt_=wgt; } swgt=swgt/nInitial_; sqwgt=sqrt(max(0.,sqwgt/nInitial_-swgt*swgt)/nInitial_); } } void GenericMassGenerator::dataBaseOutput(ofstream & output, bool header) { if(header) output << "update Mass_Generators set parameters=\""; output << "newdef " << fullName() << ":BreitWignerShape " << BWShape_ << "\n"; output << "newdef " << fullName() << ":MaximumWeight " << maxWgt_ << "\n"; output << "newdef " << fullName() << ":NGenerate " << nGenerate_ << "\n"; output << "newdef " << fullName() << ":WidthOption " << widthOpt_ << "\n"; if(header) output << "\n\" where BINARY ThePEGFullName=\"" << fullName() << "\";" << endl; } void GenericMassGenerator::dofinish() { if(initialize_) { string fname = CurrentGenerator::current().filename() + string("-") + name() + string(".output"); ofstream output(fname.c_str()); dataBaseOutput(output,true); } MassGenerator::dofinish(); } void GenericMassGenerator::setParticle(string p) { if ( (particle_ = Repository::GetPtr(p)) ) return; particle_ = Repository::findParticle(StringUtils::basename(p)); if ( ! particle_ ) Throw() << "Could not set Particle interface " << "for the object \"" << name() << "\". Particle \"" << StringUtils::basename(p) << "\" not found." << Exception::runerror; } string GenericMassGenerator::getParticle() const { return particle_ ? particle_->fullName() : ""; } void GenericMassGenerator::rebind(const TranslationMap & trans) { particle_ = trans.translate(particle_); MassGenerator::rebind(trans); } IVector GenericMassGenerator::getReferences() { IVector ret = MassGenerator::getReferences(); ret.push_back(particle_); return ret; } herwig++-2.6.0.orig/PDT/TwoBodyAllOnCalculator.cc0000644000175000017500000000137411754474774022271 0ustar sylvestresylvestre// -*- C++ -*- // // TwoBodyAllOnCalculator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TwoBodyAllOnCalculator class. // #include "TwoBodyAllOnCalculator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "GenericWidthGenerator.h" namespace Herwig { using namespace ThePEG; Energy TwoBodyAllOnCalculator::partialWidth(Energy2 scale) const { return _widthgen->partial2BodyWidth(_mode,sqrt(scale),_mass1,_mass2); } } herwig++-2.6.0.orig/PDT/ScalarMassGenerator.fh0000644000175000017500000000050411754474774021644 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the ScalarMassGenerator class. // #ifndef HERWIG_ScalarMassGenerator_FH #define HERWIG_ScalarMassGenerator_FH namespace Herwig { using namespace ThePEG; class ScalarMassGenerator; ThePEG_DECLARE_CLASS_POINTERS(ScalarMassGenerator,ScalarMassGeneratorPtr); } #endif herwig++-2.6.0.orig/PDT/SMHiggsWidthGenerator.cc0000644000175000017500000003076011754474774022113 0ustar sylvestresylvestre// -*- C++ -*- // // SMHiggsWidthGenerator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMHiggsWidthGenerator class. // #include "SMHiggsWidthGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/StandardModel/StandardModelBase.h" using namespace Herwig; IBPtr SMHiggsWidthGenerator::clone() const { return new_ptr(*this); } IBPtr SMHiggsWidthGenerator::fullclone() const { return new_ptr(*this); } void SMHiggsWidthGenerator::persistentOutput(PersistentOStream & os) const { os << widthopt_ << offshell_ << ounit(mw_,GeV) << ounit(mz_,GeV) << ounit(gamw_,GeV) << ounit(gamz_,GeV) << ounit(qmass_,GeV) << ounit(lmass_,GeV) << sw2_ << ca_ << cf_ << locMap_; } void SMHiggsWidthGenerator::persistentInput(PersistentIStream & is, int) { is >> widthopt_ >> offshell_ >> iunit(mw_,GeV) >> iunit(mz_,GeV) >> iunit(gamw_,GeV) >> iunit(gamz_,GeV) >> iunit(qmass_,GeV) >> iunit(lmass_,GeV) >> sw2_ >> ca_ >> cf_ >> locMap_; } ClassDescription SMHiggsWidthGenerator::initSMHiggsWidthGenerator; // Definition of the static class description member. void SMHiggsWidthGenerator::Init() { static ClassDocumentation documentation ("The SMHiggsWidthGenerator class calculates the running Higgs width as in " "hep-ph/9505211.", "The Higgs width was calculated as in \\cite{Seymour:1995qg}.", "%\\cite{Seymour:1995qg}\n" "\\bibitem{Seymour:1995qg}\n" " M.~H.~Seymour,\n" " %``The Higgs boson line shape and perturbative unitarity,''\n" " Phys.\\ Lett.\\ B {\\bf 354}, 409 (1995)\n" " [arXiv:hep-ph/9505211].\n" " %%CITATION = PHLTA,B354,409;%%\n" ); static Switch interfaceWidthOption ("WidthScheme", "Option for the treatment of the Higss Width calculation", &SMHiggsWidthGenerator::widthopt_, 2, false, false); static SwitchOption interfaceFixedWidth (interfaceWidthOption, "Fixed", "Fixed Higgs width, taken from ThePEGParticles.in", 1); static SwitchOption interfaceNLLWidth (interfaceWidthOption, "NLLcorrected", "NLL corrected Higgs width (a-la FORTRAN HERWIG)", 2); static SwitchOption interfaceLOWidthOption (interfaceWidthOption, "LO", "LO Higgs width (formula taken from The \"Higgs Hunter's Guide\")", 3); static Parameter interfaceOffShell ("OffShell", "Number of times the width the Higgs is allowed to be off-shell", &SMHiggsWidthGenerator::offshell_, 10., 0.01, 100.0, false, false, Interface::limited); } Energy SMHiggsWidthGenerator::width(const ParticleData & in, Energy m) const { if(widthopt_==1) { return in.width(); } else if(widthopt_ <=3 ) { Energy higgswidth = ZERO; for (unsigned int i = 0; i < decayModes().size(); ++i) higgswidth += partialWidth(i,m); return higgswidth; } else throw Exception() << "Unknown width option in SMHiggsWidthGenerator::width()" << Exception::runerror; } DecayMap SMHiggsWidthGenerator::rate(const ParticleData & p) const { if(mw_==ZERO) return p.decaySelector(); else return branching(p.mass(),p); } DecayMap SMHiggsWidthGenerator::rate(const Particle & p) { return branching(p.mass(),p.data()); } DecayMap SMHiggsWidthGenerator::branching(Energy scale, const ParticleData & p) const { // if not using running width return original if(widthopt_==1) return p.decaySelector(); // calculate the partial widths vector partial; Energy total(ZERO); for(unsigned int ix=0;ixorderedProducts().size()!=2||!mode->on()) continue; double br = partial[ix]/total; // insert the mode into the new selector newdm.insert(br,mode); } return newdm; } // Taken from HERWIG 6510. Complex SMHiggsWidthGenerator::HwW2(double tau) const { using Constants::pi; if (tau > 1.0) { return sqr(asin(1.0/sqrt(tau))); } else if (tau < 1.0) { double FNsqr = sqrt(1-tau); double FNlog = log((1+FNsqr)/(1-FNsqr)); return Complex(-0.25 * (sqr(FNlog)-pi*pi),0.5*pi*FNlog); } else { return sqr(0.5*pi); } } Energy SMHiggsWidthGenerator::partialWidth(int iloc,Energy Mh) const { useMe(); using Constants::pi; if(Mh!=qlast_) { qlast_ = Mh; Energy2 q2 = sqr(qlast_); // couplings lambdaQCD_ = generator()->standardModel()->LambdaQCD(q2); alphaEM_ = generator()->standardModel()->alphaEM(); alphaS_ = generator()->standardModel()->alphaS(q2); // QCD correction factors for H -> f fbar double nflavour=0.; for (unsigned int i =1; i <= 6; ++i) if (2.0*qmass_[i] < Mh) nflavour+=1.; // All calculation are being done for Monte-Carlo QCD Lambda, except Higgs width... // not needed in C++ as should be normal lambda // MC only in shower //double bcoeff4=(11.*ca_-10.)/(12.*pi); //double kfac=ca_*(67./18.-sqr(pi)/6.)-25./9.; //lambdaQCD_ /= exp(kfac/(4.*pi*bcoeff4))/sqrt(2.); double k1 = 5./sqr(pi); double k0 = 3./(4.*sqr(pi)); beta0_ = (11.*ca_-2.0*nflavour)/3.; double beta1 = (34.*sqr(ca_)-(10.*ca_+6.*cf_)*nflavour)/3.; gam0_ = -8.; double gam1 = -404./3.+40.*nflavour/9.; double SClog = log(sqr(Mh/lambdaQCD_)); if(SClog<=0.) cd_ = 1.; else cd_ = 1.+(k1/k0-2.*gam0_+gam0_*beta1/sqr(beta0_)*log(SClog)+ (gam0_*beta1-gam1*beta0_)/sqr(beta0_))/(beta0_*SClog); gfermiinv_ = 8.*sw2_*sqr(mw_)/alphaEM_; } // output value Energy3 output(ZERO); // work out which mode map::const_iterator it = locMap_.find(iloc); if(it==locMap_.end()) return ZERO; int imode = it->second; // quark modes if(imode<=6) { Energy mf = qmass_[imode]; double xf = sqr(mf/Mh); if( xf >= 0.25 ) return ZERO; if(widthopt_==2) { if (mf > lambdaQCD_) mf *= pow(log(Mh/lambdaQCD_)/log(mf/lambdaQCD_), gam0_/(2.0*beta0_)); output = ca_*Mh*sqr(mf)*pow(1.0-4.0*xf,1.5)*cd_; } else { output = ca_*Mh*sqr(mf)*pow(1.0-4.0*xf,1.5); } } // lepton modes else if(imode<=9) { Energy mf = lmass_[imode-7]; double xf = sqr(mf/Mh); if (xf < 0.25) output = Mh*sqr(mf)*pow(1.0-4.0*xf,1.5); } // H->W*W* else if(imode==10) { if(widthopt_==2) { double xw = sqr(mw_/Mh); double yw = mw_*gamw_/sqr(Mh); output = pow<3,1>(Mh)*HwDoubleBW(xw,yw)/2.; } else { double xfw = sqr(mw_/Mh); if(2.0*mw_ < Mh) output = pow<3,1>(Mh)*sqrt(1-4.0*xfw)*(1-xfw+0.75*sqr(xfw))/2.; } } // H->Z*Z* else if(imode==11) { if(widthopt_==2) { double xz = sqr(mz_/Mh); double yz = mz_*gamz_/sqr(Mh); output = pow<3,1>(Mh)*HwDoubleBW(xz,yz)/4.; } else { double xfz = sqr(mz_/Mh); if (2.0*mz_ < Mh) output = pow<3,1>(Mh)*sqrt(1-4.0*xfz)*(1-xfz+0.75*sqr(xfz))/4.; } } // H->gamma gamma else if(imode==12) { double taut = sqr(2.0*qmass_[ParticleID::t]/Mh); double tauw = sqr(2.0*mw_/Mh); Complex ftaut = HwW2 (taut); Complex ftauw = HwW2 (tauw); double re = 4.0/3.0*(-2.0*taut*(1.0+(1.0-taut)*ftaut.real())) + (2.0+3.0*tauw*(1+(2.0-tauw)*ftauw.real())); double im = 4.0/3.0*(-2.0*taut*( (1.0-taut)*ftaut.imag())) + ( 3.0*tauw*( (2.0-tauw)*ftauw.imag())); output = sqr(alphaEM_/pi)*pow<3,1>(Mh)*(sqr(re)+ sqr(im))/32.; } // H -> gg else if(imode==13) { double tau = sqr(2.0*qmass_[ParticleID::t]/Mh); Complex ftau = HwW2(tau); double re = 1+(1.0-tau)*ftau.real(); double im = (1.0-tau)*ftau.imag(); output = sqr(alphaS_/pi)*pow<3,1>(Mh)*sqr(tau)*(sqr(re)+ sqr(im))/4.; } return output/gfermiinv_; } // Taken from HERWIG 6510. double SMHiggsWidthGenerator::HwDoubleBW(double x, double y) const { // Calculate the Double Breit-Wigner Integral // x=(mw/mh)**2, y=mw*gw/mh**2 double limit = 0.425; double nbin = 25; double itgerl = 0.0; if (y < 0.0) return itgerl; if (x > limit) { // Direct Integration double fac1 = 0.25/nbin; for (unsigned int i = 0; i < nbin; ++i) { double x1 = (i+0.5)*fac1; double fac2 = (sqr(1-sqrt(x1))-x1)/nbin; double sq = 1.0; int j = 0; while (j < nbin && 0.0 < sq) { double x2 = (j+0.5)*fac2+x1; sq = 1.0+x1*x1+x2*x2-2*(x1+x2+x1*x2); itgerl += 2.0*(sqr(1-x1-x2)+8.0*x1*x2)*sqrt(sq) /(sqr(x1-x)+y*y)*y/(sqr(x2-x)+y*y)*y*fac1*fac2; ++j; } } } else { // Integration using tan theta substitution double th1low = atan2 ((0.0-x),y); double th1high = atan2 ((1.0-x),y); double fac1 = (th1high-th1low)/nbin; for (unsigned int i = 0; i < nbin; ++i) { double th1 = (i+0.5)*fac1+th1low; double x1 = y*tan(th1)+x; double x2max = min(x1,sqr(1-sqrt(x1))); double th2low = atan2 ((0-x),y); double th2high = atan2 ((x2max-x),y); double fac2 = (th2high-th2low)/nbin; double sq = 1.0; int j = 0; while (j < nbin && 0.0 < sq) { double th2 = (j+0.5)*fac2+th2low; double x2 = y*tan(th2)+x; double sq = 1.0+x1*x1+x2*x2-2*(x1+x2+x1*x2); itgerl += 2.0*(sqr(1-x1-x2)+8*x1*x2)*sqrt(sq)*fac1*fac2; ++j; } } } itgerl *= 1/sqr(Constants::pi); return itgerl; } void SMHiggsWidthGenerator::doinit() { GenericWidthGenerator::doinit(); // extract W and Z mass and width tPDPtr w = getParticleData(ParticleID::Wplus); tPDPtr z = getParticleData(ParticleID::Z0); mw_ = w->mass(); mz_ = z->mass(); gamw_ = w->width(); gamz_ = z->width(); // quark masses for(int ix=1;ix<7;++ix) { tcPDPtr q = getParticleData(ix); qmass_[ix] = q->mass(); } // lepton masses for ( int ix=0; ix<3; ++ix ) { tcPDPtr lepton = getParticleData(11+2*ix); lmass_[ix] = lepton->mass(); } // sin2 theta_w sw2_ = generator()->standardModel()->sin2ThetaW(); // casmirs double ncolour = generator()->standardModel()->Nc(); ca_ = ncolour; cf_ = (sqr(ncolour)-1.0)/(2.0*ca_); // construct the map for(unsigned int ix=0;ixorderedProducts().size()!=2) continue; // particle antiparticle long id=abs(mode->orderedProducts()[0]->id()); if(mode->orderedProducts()[0]->id()==-mode->orderedProducts()[1]->id()) { // leptons if(id>=11&&id<=15&&(id-9)%2==0) id = (id+3)/2; // WW else if(id==ParticleID::Wplus) id = 10; // unknown mode else if(id>6) continue; } else if(mode->orderedProducts()[0]->id()==mode->orderedProducts()[1]->id()) { // gamma gamma if(id==ParticleID::Z0) id = 11; else if(id==ParticleID::gamma) id = 12; else if(id==ParticleID::g) id = 13; // unknown mode else continue; } // unknown mode else continue; // set pu the map locMap_[ix] = id; } // reset the width and set the limits if(particle()->id() != ParticleID::h0) throw Exception() << "Must be the Standard Model Higgs boson " << "in SMHiggsWidthGenerator::doinit()" << Exception::runerror; Energy wid = width(*particle(),particle()->mass()); particle()->width (wid); particle()->widthCut(offshell_*wid); } pair SMHiggsWidthGenerator::width(Energy scale, const ParticleData & p) const { if(widthopt_==1) return make_pair(p.width(),p.width()); // calculate the partial widths vector partial; Energy total(ZERO); for(unsigned int ix=0;ixon()||mode->orderedProducts().size()!=2) continue; partialon += partial[ix]; } return make_pair(partialon,total); } herwig++-2.6.0.orig/PDT/ThreeBodyAllOn1IntegralCalculator.h0000644000175000017500000001102111754474774024166 0ustar sylvestresylvestre// -*- C++ -*- // // ThreeBodyAllOn1IntegralCalculator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ThreeBodyAllOn1IntegralCalculator_H #define HERWIG_ThreeBodyAllOn1IntegralCalculator_H // This is the declaration of the ThreeBodyAllOn1IntegralCalculator class. #include "WidthCalculatorBase.h" #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/Utilities/GSLIntegrator.h" namespace Herwig { using namespace ThePEG; /** \ingroup PDT * * The ThreeBodyAllOn1IntegralCalculator class is designed to integrate * a function which gives \f$d\Gamma/dm^2_{ij}\f$ to give the partial width. * * @see WidthCalculatorBase * @see ThreeBodyAllOn1IntegralOuter */ template class ThreeBodyAllOn1IntegralCalculator: public WidthCalculatorBase { public: /** * Constructor with the \f$d\Gamma/ds\f$ as a function. * @param intype The types of the different integration channels. * @param inmass The mass for the Jacobian for the different channels. * @param inwidth The width for the Jacobian for the different channels. * @param inpow The power for the power-law smoothing function * @param indGamma The pointer to the function which gives \f$d\Gamma/ds\f$. * @param mode The mode to be calculated * @param m1 The mass of the first particle. * @param m2 The mass of the second particle. * @param m3 The mass of the third particle. */ ThreeBodyAllOn1IntegralCalculator(int intype, Energy inmass, Energy inwidth, double inpow, T indGamma,int mode, Energy m1,Energy m2,Energy m3) : _variabletype(intype),_intmass(inmass),_intwidth(inwidth), _intpower(inpow),_mode(mode), _theDgamma(indGamma) { _m .resize(4); _m2.resize(4); _m[1]=m1;_m[2]=m2;_m[3]=m3; for(int ix=1;ix<4;++ix)_m2[ix]=sqr(_m[ix]); } /** * calculate the width for a given mass * @param q2 The mass squared of the decaying particle. * @return The partial width. */ Energy partialWidth(Energy2 q2) const; /** * Get the mass of one of the decay products. This must be * implemented in classes inheriting from this one. * @param imass The mass required. * @param mass The new value. * @return The mass required. */ void resetMass(int imass,Energy mass) { assert(imass<4); _m[imass]=mass; _m2[imass]=mass*mass; } /** * Get the mass of one of the decay products. This must be * implemented in classes inheriting from this one. * @param imass The mass required. * @return The mass required. */ Energy getMass(const int imass) const { assert(imass<4); return _m[imass]; } /** * Get the masses of all bar the one specified. Used to get the limits * for integration. * @param imass The particle not needed * @return The sum of the other masses. */ Energy otherMass(const int imass) const { assert(imass>0&&imass<4); if(imass==1) return _m[2]+_m[3]; else if(imass==2) return _m[1]+_m[3]; else return _m[1]+_m[2]; } /** * The integrand for the inner integrand. * @param argument The mass squared for the inner integral * @return The value of the inner integrand. */ Energy operator ()(double argument) const; /** Argument type for the GSLIntegrator */ typedef double ArgType; /** Return type for the GSLIntegrator */ typedef Energy ValType; private: /** * Private and non-existent assignment operator. */ ThreeBodyAllOn1IntegralCalculator & operator=(const ThreeBodyAllOn1IntegralCalculator &); private: /** * which scale we are using */ int _variabletype; /** * The mass for the jacobian */ Energy _intmass; /** * The width for the jacobian */ Energy _intwidth; /** * The power for power-law smoothing */ double _intpower; /** * The mode to be integrated */ int _mode; /** * masses of the external particles */ mutable vector _m; /** * mass squareds of the external particles */ mutable vector _m2; /** * The function for the differential rate */ T _theDgamma; /** * the integrator */ GSLIntegrator _integrator; }; } #ifndef ThePEG_TEMPLATES_IN_CC_FILE #include "ThreeBodyAllOn1IntegralCalculator.tcc" #endif #endif /* HERWIG_ThreeBodyAllOn1IntegralCalculator_H */ herwig++-2.6.0.orig/PDT/WidthCalculatorBase.cc0000644000175000017500000000116311754474774021622 0ustar sylvestresylvestre// -*- C++ -*- // // WidthCalculatorBase.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the WidthCalculatorBase class. // #include "WidthCalculatorBase.h" #include "ThePEG/Interface/ClassDocumentation.h" namespace Herwig { using namespace ThePEG; WidthCalculatorBase::~WidthCalculatorBase() { } } herwig++-2.6.0.orig/PDT/Makefile.am0000644000175000017500000000201711754474774017462 0ustar sylvestresylvestre## 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 libHwBaryonWidth_la_SOURCES = \ BaryonWidthGenerator.cc BaryonWidthGenerator.fh \ BaryonWidthGenerator.h herwig++-2.6.0.orig/PDT/OneOffShellCalculator.cc0000644000175000017500000000242111754474774022112 0ustar sylvestresylvestre// -*- C++ -*- // // OneOffShellCalculator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the OneOffShellCalculator class. // #include "OneOffShellCalculator.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace Herwig; // calculate the width for a given mass Energy OneOffShellCalculator::partialWidth(Energy2 q2) const { OneOffShellIntegrand integrand(this,sqr(_massptr->nominalMass()), _massptr->nominalWidth()*_massptr->nominalMass()); _scale=q2; // the limits Energy upp=min(sqrt(q2)-otherMass(_themass),_massptr->upperLimit()); Energy low=max(_minmass,_massptr->lowerLimit()); if(low>upp){return ZERO;} // transform the limits of BW smoothing Energy2 mass2 =_massptr->nominalMass()*_massptr->nominalMass(); Energy2 mwidth =_massptr->nominalMass()*_massptr->nominalWidth(); double rhomin=atan2((low*low-mass2),mwidth); double rhomax=atan2((upp*upp-mass2),mwidth); return _integrator.value(integrand,rhomin,rhomax); } herwig++-2.6.0.orig/PDT/ThreeBodyAllOn1IntegralCalculator.tcc0000644000175000017500000000403111754474774024513 0ustar sylvestresylvestre// -*- C++ -*- // // ThreeBodyAllOn1IntegralCalculator.tcc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined templated member // functions of the ThreeBodyAllOn1IntegralCalculator class. // namespace Herwig{ using namespace ThePEG; template Energy ThreeBodyAllOn1IntegralCalculator::operator() (double x) const { Energy2 scale; if(_intmass>ZERO) scale = _intmass*(_intmass+_intwidth*tan(x)); else scale = UnitRemoval::E2 * pow(x,1./(_intpower + 1.)); InvEnergy output=_theDgamma.threeBodydGammads(_mode,_m2[0],scale,_m[1],_m[2],_m[3]); // the jacobian InvEnergy2 term; Energy2 rm2,rw2; if(_intmass>ZERO) { rm2 = sqr(_intmass); rw2 = sqr(_intwidth); term = _intmass*_intwidth / (sqr(scale-rm2) + rw2 * rm2); } else { term = UnitRemoval::InvE2 * (_intpower+1.)*pow(scale * UnitRemoval::InvE2, _intpower); } return output/term; } template Energy ThreeBodyAllOn1IntegralCalculator::partialWidth(Energy2 scale) const { _m2[0]=scale; _m[0]=sqrt(scale); // limits for the outer integral Energy2 upp=ZERO,low=ZERO; switch(_variabletype) { case 1: upp = (_m[0]-_m[3])*(_m[0]-_m[3]); low = (_m[1]+_m[2])*(_m[1]+_m[2]); break; case 2: upp = (_m[0]-_m[2])*(_m[0]-_m[2]); low = (_m[1]+_m[3])*(_m[1]+_m[3]); break; case 3: upp = (_m[0]-_m[1])*(_m[0]-_m[1]); low = (_m[2]+_m[3])*(_m[2]+_m[3]); break; } double rupp, rlow; // transform them if(_intmass>ZERO) { rupp = atan2((upp-_intmass*_intmass), _intmass*_intwidth); rlow = atan2((low-_intmass*_intmass), _intmass*_intwidth); } else { rupp = pow(upp * UnitRemoval::InvE2, _intpower+1.); rlow = pow(low * UnitRemoval::InvE2, _intpower+1.); } return _integrator.value(*this,rlow,rupp); } } herwig++-2.6.0.orig/PDT/OneOffShellCalculator.fh0000644000175000017500000000052011754474774022120 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the OneOffShellCalculator class. // #ifndef HERWIG_OneOffShellCalculator_FH #define HERWIG_OneOffShellCalculator_FH namespace Herwig { using namespace ThePEG; class OneOffShellCalculator; ThePEG_DECLARE_CLASS_POINTERS(OneOffShellCalculator,OneOffShellCalculatorPtr); } #endif herwig++-2.6.0.orig/PDT/WidthCalculatorBase.h0000644000175000017500000000421311754474774021463 0ustar sylvestresylvestre// -*- C++ -*- // // WidthCalculatorBase.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_WidthCalculatorBase_H #define HERWIG_WidthCalculatorBase_H // // This is the declaration of the WidthCalculatorBase class. // #include "ThePEG/Config/ThePEG.h" #include "ThePEG/Pointer/ReferenceCounted.h" #include "WidthCalculatorBase.fh" namespace Herwig { using namespace ThePEG; /** \ingroup PDT * The WidthCalculatorBase class is a base class to be used * by classes which calculate partial widths for the running width. * * @see DecayIntegrator * @see GenericWidthGenerator * */ class WidthCalculatorBase: public Pointer::ReferenceCounted { public: /** * Destructor */ virtual ~WidthCalculatorBase(); /** * Calculate the partial width. This must be implemented in classes inheriting from * this one. * @param scale The mass squared of the decaying particle. * @return The partial width. */ virtual Energy partialWidth(Energy2 scale) const =0; /** * Reset the mass of a particle (used to integrate over the mass.) This must be * implemented in classes inheriting from this one. * @param imass The mass to be reset. * @param mass The new mass. */ virtual void resetMass(int imass,Energy mass) =0; /** * Get the mass of one of the decay products. This must be * implemented in classes inheriting from this one. * @param imass The mass required. * @return The mass required. */ virtual Energy getMass(const int imass) const= 0; /** * Get the masses of all bar the one specified. Used to get the limits * for integration. * @param imass The particle not needed * @return The sum of the other masses. */ virtual Energy otherMass(const int imass) const=0; private: /** * Private and non-existent assignment operator. */ WidthCalculatorBase & operator=(const WidthCalculatorBase &); }; } #endif /* HERWIG_WidthCalculatorBase_H */ herwig++-2.6.0.orig/PDT/TwoOffShellCalculator.cc0000644000175000017500000000240611754474774022145 0ustar sylvestresylvestre// -*- C++ -*- // // TwoOffShellCalculator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TwoOffShellCalculator class. // #include "TwoOffShellCalculator.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace Herwig; // calculate the width for a given mass Energy TwoOffShellCalculator::partialWidth(Energy2 q2) const { TwoOffShellIntegrand integrand(this,sqr(_massptr->nominalMass()), _massptr->nominalWidth()*_massptr->nominalMass()); _scale=q2; // the limits Energy upp=min(sqrt(q2)-_mother,_massptr->upperLimit()); Energy low=max(_minmass,_massptr->lowerLimit()); if(low>upp) return ZERO; // transform the limits of BW smoothing Energy2 mass2 =_massptr->nominalMass()*_massptr->nominalMass(); Energy2 mwidth =_massptr->nominalMass()*_massptr->nominalWidth(); double rhomin=atan2((low*low-mass2),mwidth); double rhomax=atan2((upp*upp-mass2),mwidth); return _integrator.value(integrand,rhomin,rhomax); } herwig++-2.6.0.orig/PDT/StandardMatchers.h0000644000175000017500000001221111754474774021023 0ustar sylvestresylvestre// -*- C++ -*- // // StandardMatchers.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_StandardMatchers_H #define Herwig_StandardMatchers_H // This is the declaration of the AnyMatcher, #include "ThePEG/PDT/Matcher.h" #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/PDF/BeamParticleData.h" #include "ThePEG/PDT/EnumParticles.h" namespace Herwig { using namespace ThePEG; /** * * This file declare a set of standard matcher classes in addition to those * defined in ThePEG. The classes can be used by themselves (with * their static functions) or together with the Matcher class to * define Interfaced objects of the MatcherBase type to be used in the * Repository. Suitable typedefs are declared for the latter. * * @see Matcher * @see MatcherBase */ /** * A Matcher class which matches photons */ struct PhotonMatcher: public MatcherType { /** Typedef the class matching the complex conjugate particles. */ typedef PhotonMatcher CC; /** The main static function to check if a given particle type \a pd matches. */ static bool Check(const ParticleData & pd) { return pd.id()==ParticleID::gamma; } /** A simplified but unique class name. */ static string className() { return "Photon"; } }; /** * Gives a MatcherBase class based on PhotonMatcher. */ typedef Matcher MatchPhoton; /** * A Matcher class which matches top quarks */ struct TopMatcher: public MatcherType { /** Typedef the class matching the complex conjugate particles. */ typedef TopMatcher CC; /** The main static function to check if a given particle type \a pd matches. */ static bool Check(const ParticleData & pd) { return abs(pd.id())==ParticleID::t; } /** A simplified but unique class name. */ static string className() { return "Top"; } }; /** * Gives a MatcherBase class based on TopMatcher. */ typedef Matcher MatchTop; /** * A Matcher class which matches any hadron. */ struct HadronMatcher: public MatcherType { /** Typedef the class matching the complex conjugate particles. */ typedef HadronMatcher CC; /** The main static function to check if a given particle type \a pd matches. */ static bool Check(const ParticleData & pd) { if (pd.id() != ParticleID::gamma) return Check(pd.id()); else { Ptr::const_pointer beam = dynamic_ptr_cast< Ptr::const_pointer>(&pd); return beam && beam->pdf(); } } /** The main static function to check if a given particle with type \a id matches. */ static bool Check(long id) { bool hadron = (id/10)%10 && (id/100)%10; if(hadron) return true; // special for gamma when acting like a hadron if (id != ParticleID::gamma) return false; tcPDPtr gamma = CurrentGenerator::current().getParticleData(ParticleID::gamma); Ptr::const_pointer beam = dynamic_ptr_cast< Ptr::const_pointer>(gamma); return beam && beam->pdf(); } /** A simplified but unique class name. */ static string className() { return "Hadron"; } }; /** Gives a MatcherBase class based on HadronMatcher. */ typedef Matcher MatchHadron; /** * A Matcher class which matches W bosons */ struct WBosonMatcher: public MatcherType { /** Typedef the class matching the complex conjugate particles. */ typedef WBosonMatcher CC; /** The main static function to check if a given particle type \a pd matches. */ static bool Check(const ParticleData & pd) { return abs(pd.id())==ParticleID::Wplus; } /** A simplified but unique class name. */ static string className() { return "WBoson"; } }; /** * Gives a MatcherBase class based on WBosonMatcher. */ typedef Matcher MatchWBoson; /** * A Matcher class which matches Z bosons */ struct ZBosonMatcher: public MatcherType { /** Typedef the class matching the complex conjugate particles. */ typedef ZBosonMatcher CC; /** The main static function to check if a given particle type \a pd matches. */ static bool Check(const ParticleData & pd) { return abs(pd.id())==ParticleID::Z0; } /** A simplified but unique class name. */ static string className() { return "ZBoson"; } }; /** * Gives a MatcherBase class based on ZBosonMatcher. */ typedef Matcher MatchZBoson; /** * A Matcher class which matches Higgs bosons */ struct HiggsBosonMatcher: public MatcherType { /** Typedef the class matching the complex conjugate particles. */ typedef HiggsBosonMatcher CC; /** The main static function to check if a given particle type \a pd matches. */ static bool Check(const ParticleData & pd) { return abs(pd.id())==ParticleID::h0; } /** A simplified but unique class name. */ static string className() { return "HiggsBoson"; } }; /** * Gives a MatcherBase class based on HiggsBosonMatcher. */ typedef Matcher MatchHiggsBoson; } #endif /* Herwig_StandardMatchers_H */ herwig++-2.6.0.orig/PDT/SMHiggsMassGenerator.cc0000644000175000017500000000577211754474774021744 0ustar sylvestresylvestre// -*- C++ -*- // // SMHiggsMassGenerator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMHiggsMassGenerator class. // #include "SMHiggsMassGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void SMHiggsMassGenerator::persistentOutput(PersistentOStream & os) const { os << _shape << _hwidth; } void SMHiggsMassGenerator::persistentInput(PersistentIStream & is, int) { is >> _shape >> _hwidth; } ClassDescription SMHiggsMassGenerator::initSMHiggsMassGenerator; // Definition of the static class description member. void SMHiggsMassGenerator::Init() { static ClassDocumentation documentation ("The SMHiggsMassGenerator class implements the mass distribution for the" " Higgs boson as in hep-ph/9505211.", "The Higgs mass was distributed as in \\cite{Seymour:1995qg}.", "%\\cite{Seymour:1995qg}\n" "\\bibitem{Seymour:1995qg}\n" " M.~H.~Seymour,\n" " %``The Higgs boson line shape and perturbative unitarity,''\n" " Phys.\\ Lett.\\ B {\\bf 354}, 409 (1995)\n" " [arXiv:hep-ph/9505211].\n" " %%CITATION = PHLTA,B354,409;%%\n" ); static Switch interfaceHiggsShape ("HiggsShape", "The distribution for the Higgs mass", &SMHiggsMassGenerator::_shape, 1, false, false); static SwitchOption interfaceHiggsShapeNormal (interfaceHiggsShape, "Normal", "The standard running width distribution", 0); static SwitchOption interfaceHiggsShapeImproved (interfaceHiggsShape, "Improved", "The improved shape of hep-ph/9505211", 1); } bool SMHiggsMassGenerator::accept(const ParticleData & part) const { if(part.id()!=ParticleID::h0) return false; return GenericMassGenerator::accept(part); } void SMHiggsMassGenerator::doinit() { if(particle()->massGenerator()==this) { if(particle()->widthGenerator()) { _hwidth=dynamic_ptr_cast(particle()->widthGenerator()); } if(!_hwidth) throw InitException() << "Must be using the Herwig::GenericWidthGenerator in " << "SMHiggsMassGenerator::doinit()" << Exception::runerror; } GenericMassGenerator::doinit(); } void SMHiggsMassGenerator::dataBaseOutput(ofstream & output,bool header) { if(header) output << "update Mass_Generators set parameters=\""; output << "newdef " << fullName() << ":BreitWignerShape " << _shape << "\n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } herwig++-2.6.0.orig/PDT/BaryonWidthGenerator.h0000644000175000017500000001141611754474774021703 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_BaryonWidthGenerator_H #define HERWIG_BaryonWidthGenerator_H // // This is the declaration of the BaryonWidthGenerator class. // #include "GenericWidthGenerator.h" #include "BaryonWidthGenerator.fh" #include "Herwig++/Decay/Baryon/Baryon1MesonDecayerBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup PDT * The BaryonWidthGenerator class is designed to automatically calculate the running * width for a given particle using information from the decayModes and the * Baryon1MesonDecayer to construct the running width. * * It inherits from the GenericWidthGenerator. * * @see GenericWidthGenerator * @see GenericMassGenerator * */ class BaryonWidthGenerator: public GenericWidthGenerator { 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: /** * Output the initialisation info for the database * @param output The stream to output the information to * @param header output the header. **/ virtual void dataBaseOutput(ofstream & output,bool header=true); /** * The \f$1\to2\f$ width for outgoing particles which can be off-shell. * @param iloc The location of the mode in the list. * @param m0 The mass of the decaying particle. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @return The partial width. */ virtual Energy partial2BodyWidth(int iloc,Energy m0,Energy m1,Energy m2) const; protected: /** * Perform the set up for a mode, this is called by the base class * @param mode The decay mode * @param decayer The decayer for the mode. * @param imode The number of the mode. */ virtual void setupMode(tcDMPtr mode, tDecayIntegratorPtr decayer, unsigned int imode); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initBaryonWidthGenerator; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BaryonWidthGenerator & operator=(const BaryonWidthGenerator &); private: /** * vector of pointers to the decayers */ vector _baryondecayers; /** * Location of the decay mode in the decayer */ vector _modeloc; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of BaryonWidthGenerator. */ template <> struct BaseClassTrait { /** Typedef of the first base class of BaryonWidthGenerator. */ typedef Herwig::GenericWidthGenerator NthBase; }; /** This template specialization informs ThePEG about the name of * the BaryonWidthGenerator class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::BaryonWidthGenerator"; } /** Return the name of the shared library be loaded to get * access to the BaryonWidthGenerator class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_BaryonWidthGenerator_H */ herwig++-2.6.0.orig/PDT/GenericWidthGenerator.fh0000644000175000017500000000052011754474774022165 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the GenericWidthGenerator class. // #ifndef ThePEG_GenericWidthGenerator_FH #define ThePEG_GenericWidthGenerator_FH namespace Herwig { using namespace ThePEG; class GenericWidthGenerator; ThePEG_DECLARE_CLASS_POINTERS(GenericWidthGenerator,GenericWidthGeneratorPtr); } #endif herwig++-2.6.0.orig/PDT/ThreeBodyAllOnCalculator.h0000644000175000017500000001621111754474774022425 0ustar sylvestresylvestre// -*- C++ -*- // // ThreeBodyAllOnCalculator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ThreeBodyAllOnCalculator_H #define HERWIG_ThreeBodyAllOnCalculator_H // This is the declaration of the ThreeBodyAllOnCalculator class. #include "WidthCalculatorBase.h" #include "Herwig++/Utilities/GSLIntegrator.h" #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" namespace Herwig { using namespace ThePEG; template class ThreeBodyAllOnCalculator; /** \ingroup PDT * * The ThreeBodyAllOnCalculator class is designed to integrate * a three-body matrix element in which all the outgoing particles are * on-shell to give the partial width. A multi-channel type approach is * used together with a GSL integration subroutine. * * @see GSLIntegrator * @see ThreeBodyAllOnOuter * @see ThreeBodyAllOnIner * */ template class ThreeBodyAllOnCalculator: public WidthCalculatorBase { /** \ingroup PDT * The class for the outer integrand of the integral of a three body decay matrix * element. This class is used by the ThreeBodyAllOnCalculator * to perform the outer integral. * * @see ThreeBodyAllOnCalculator * @see ThreeBodyAllOnInner */ struct Outer { /** * Constructor with a pointer to the ThreeBodyAllOnCalculator */ Outer(typename Ptr >::const_pointer in, double relerr) : _integrand(in), _integrator(1e-35,relerr,1000) {} /** * Retreive function value */ Energy4 operator ()(double x) const { Energy2 low, upp; _integrand->outerVariables(x,low,upp); return _integrator.value(*_integrand,low,upp); } /** Argument type for the GSLIntegrator */ typedef double ArgType; /** Return type for the GSLIntegrator */ typedef Energy4 ValType; /** * pointer to the decay integrator */ typename Ptr >::const_pointer _integrand; /** * GSL integration class */ GSLIntegrator _integrator; }; public: /** * The ThreeBodyAllOnOuter class is a friend so it can access the private * members and perform the integral. */ friend struct ThreeBodyAllOnOuter; public: /** * Constructor with all the parameters * @param inweights The weights for the different integration channels * @param intype The types of the different integration channels. * @param inmass The mass for the Jacobian for the different channels. * @param inwidth The width for the Jacobian for the different channels. * @param inpow the power for power-law smoothing for a given channel * @param inme The pointer to the function which gives the matrix element. * @param mode The mode to be integrated * @param m1 The mass of the first particle. * @param m2 The mass of the second particle. * @param m3 The mass of the third particle. */ ThreeBodyAllOnCalculator(vector inweights, vector intype, vector inmass, vector inwidth, vector inpow, T inme, int mode, Energy m1,Energy m2,Energy m3, double relerr=1e-3) : _channelweights(inweights),_channeltype(intype),_channelmass(inmass), _channelwidth(inwidth),_channelpower(inpow),_theME(inme),_mode(mode), _thechannel(0),_souter(ZERO), _integrator(1e-35,relerr,1000), _relerr(relerr) { _m.resize(4); _m[1]=m1;_m[2]=m2;_m[3]=m3; _m2.resize(4); for(int ix=1;ix<4;++ix) { _m2[ix]=sqr(_m[ix]); } } /** * calculate the width for a given mass * @param q2 The mass squared of the decaying particle. * @return The partial width. */ Energy partialWidth(Energy2 q2) const; /** * Get the mass of one of the decay products. This must be * implemented in classes inheriting from this one. * @param imass The mass required. * @param mass The new value. * @return The mass required. */ void resetMass(int imass,Energy mass) { assert(imass<4); _m[imass]=mass; _m2[imass]=mass*mass; } /** * Get the mass of one of the decay products. This must be * implemented in classes inheriting from this one. * @param imass The mass required. * @return The mass required. */ Energy getMass(const int imass) const { assert(imass>=0&&imass<4); return _m[imass]; } /** * Get the masses of all bar the one specified. Used to get the limits * for integration. * @param imass The particle not needed * @return The sum of the other masses. */ Energy otherMass(const int imass) const { assert(imass>0&&imass<4); if(imass==1) return _m[2]+_m[3]; else if(imass==2) return _m[1]+_m[3]; else return _m[1]+_m[2]; } /** * The integrand for the inner integrand. * @param argument The mass squared for the inner integral * @return The value of the inner integrand. */ Energy2 operator ()(Energy2 argument) const; /** Argument type for the GSLIntegrator */ typedef Energy2 ArgType; /** Return type for the GSLIntegrator */ typedef Energy2 ValType; protected: /** * shift the variables for the outer integrand and give limits for the inner one. * This member sets the value of the _souter member for the mass squared of the * outer integral and calculates the limits on the mass squared of the inner * integral. * @param x The integration variable * @param low The lower limit for the inner integral. * @param upp The upper limit for the inner integral. */ void outerVariables(const double & x, Energy2 & low, Energy2 & upp) const; private: /** * Private and non-existent assignment operator. */ ThreeBodyAllOnCalculator & operator=(const ThreeBodyAllOnCalculator &); private: /** * weights for the different channels */ vector _channelweights; /** * the types for the different channels */ vector _channeltype; /** * the mass of the resonance for a given channel */ vector _channelmass; /** * the width of the resonance for a given channel */ vector _channelwidth; /** * the power for power-law smoothing for a given channel */ vector _channelpower; /** * Function giving the matrix element as a function of s12,s13,s23 */ T _theME; /** * The mode */ int _mode; /** * the channel currently being integrated */ mutable int _thechannel; /** * The mapping currently in used */ mutable int _mapping; /** * the value of s for the outer integral */ mutable Energy2 _souter; /** * masses of the external particles */ mutable vector _m; /** * mass squareds of the external particles */ mutable vector _m2; /** * member to do the integration */ GSLIntegrator _integrator; /** * Relative error for the integration */ double _relerr; }; } #ifndef ThePEG_TEMPLATES_IN_CC_FILE #include "ThreeBodyAllOnCalculator.tcc" #endif #endif /* HERWIG_ThreeBodyAllOnCalculator_H */ herwig++-2.6.0.orig/PDT/GenericMassGenerator.fh0000644000175000017500000000051211754474774022012 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the GenericMassGenerator class. // #ifndef HERWIG_GenericMassGenerator_FH #define HERWIG_GenericMassGenerator_FH namespace Herwig { using namespace ThePEG; class GenericMassGenerator; ThePEG_DECLARE_CLASS_POINTERS(GenericMassGenerator,GenericMassGeneratorPtr); } #endif herwig++-2.6.0.orig/PDT/OneOffShellCalculator.h0000644000175000017500000001224311754474774021757 0ustar sylvestresylvestre// -*- C++ -*- // // OneOffShellCalculator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_OneOffShellCalculator_H #define HERWIG_OneOffShellCalculator_H // // This is the declaration of the OneOffShellCalculator class. // #include "GenericMassGenerator.h" #include "WidthCalculatorBase.h" #include "OneOffShellCalculator.fh" #include "Herwig++/Utilities/GSLIntegrator.h" namespace Herwig { using namespace ThePEG; struct OneOffShellIntegrand; /** \ingroup PDT * * Use another WidthCalculatorBase object to integrate over the * mass of on of the external particles which can be off-shell for running * width calculations. * * @see WidthCalculatorBase * @see OneOffShellIntegrand * */ class OneOffShellCalculator: public WidthCalculatorBase { public: /** * The OneOffShellIntegrand is a friend to allow access to the members needed * for the integration without making the members public. */ friend struct OneOffShellIntegrand; public: /** * Constructor which should be used setting all the required members. * @param inloc The mass which is off-shell and to be integrated over. * @param inwidth Pointer to the WidthGeneratorBase object which calculates * the partial width for a given mass of the off-shell particle. * @param inmass Pointer to the GenericMassGenerator for the off-shell particle. * @param inmin The minimum mass for the off-shell particle. */ OneOffShellCalculator(int inloc,WidthCalculatorBasePtr inwidth, GenericMassGeneratorPtr inmass, Energy inmin) : _themass(inloc), _minmass(inmin),_onshellwidth(inwidth),_massptr(inmass) {} /** * member to calculate the partial width. * @param scale The mass squared for the decaying particle. * @return The partial width. */ Energy partialWidth(Energy2 scale) const; /** * Get the mass of one of the decay products. This must be * implemented in classes inheriting from this one. * @param imass The mass required. * @param mass The new value. * @return The mass required. */ void resetMass(int imass,Energy mass) { _onshellwidth->resetMass(imass,mass); } /** * Get the mass of one of the decay products. This must be * implemented in classes inheriting from this one. * @param imass The mass required. * @return The mass required. */ Energy getMass(const int imass) const { return _onshellwidth->getMass(imass); } /** * Get the masses of all bar the one specified. Used to get the limits * for integration. * @param imass The particle not needed * @return The sum of the other masses. */ Energy otherMass(const int imass) const { return _onshellwidth->otherMass(imass); } protected: /** * The integrand. * @param min The mass of the off-shell particle, * @return The differential rate. */ Energy dGamma(Energy min) const { _onshellwidth->resetMass(_themass,min); Energy wgt = (_onshellwidth->partialWidth(_scale)); wgt*=(_massptr->weight(min)); return wgt; } private: /** * Private and non-existent assignment operator. */ OneOffShellCalculator & operator=(const OneOffShellCalculator &); private: /** * which mass is offshell. */ int _themass; /** * the minimum allowed mass. */ Energy _minmass; /** * pointer to object calculating the on-shell width. */ WidthCalculatorBasePtr _onshellwidth; /** * pointer to object calculating the mass of the particle. */ GenericMassGeneratorPtr _massptr; /** * integrator */ GSLIntegrator _integrator; /** * the mass squared of the decaying particle */ mutable Energy2 _scale; }; /** \ingroup PDT * Class for the integrand of a matrix element where one of the outgoing * particles is off-shell.This class is used by the OneOffShellCalculator class * to perform the integral. * * @see OneOffShellCalculator */ struct OneOffShellIntegrand { /** * Constructor. * @param in Pointer to the OneOffShellCalculator class this is doing the * integration for. * @param m2 The mass squared of the off-shell particle for the Jacobian * transform. * @param mw The mass times width of the off-shell particle for the Jacobian * transform. */ OneOffShellIntegrand(tcOneOffShellCalculatorPtr in,Energy2 m2,Energy2 mw) : _integrand(in),_mass2(m2),_mwidth(mw) {} /** * return the value */ Energy operator ()(double x) const { return _integrand->dGamma(sqrt(_mass2+_mwidth*tan(x))); } /** Argument type for the GSLIntegrator */ typedef double ArgType; /** Return type for the GSLIntegrator */ typedef Energy ValType; /** * pointer to the decay integrator */ tcOneOffShellCalculatorPtr _integrand; /** * The mass squared for the off-shell particle for the Jacobian transform. */ Energy2 _mass2; /** * The mass times width for the off-shell particle for the Jacobian transform. */ Energy2 _mwidth; }; } #endif /* HERWIG_OneOffShellCalculator_H */ herwig++-2.6.0.orig/PDT/TwoOffShellCalculator.fh0000644000175000017500000000052011754474774022150 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the TwoOffShellCalculator class. // #ifndef HERWIG_TwoOffShellCalculator_FH #define HERWIG_TwoOffShellCalculator_FH namespace Herwig { using namespace ThePEG; class TwoOffShellCalculator; ThePEG_DECLARE_CLASS_POINTERS(TwoOffShellCalculator,TwoOffShellCalculatorPtr); } #endif herwig++-2.6.0.orig/PDT/StandardMatchers.cc0000644000175000017500000000142111754474774021162 0ustar sylvestresylvestre// -*- C++ -*- // // StandardMatchers.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // Ensures the StandardMatchers get created // #include "ThePEG/PDT/Matcher.h" #include "ThePEG/PDT/StandardMatchers.h" #include "StandardMatchers.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE #include "Matcher.tcc" #endif using namespace Herwig; using namespace ThePEG; namespace { void dummy() { static MatchPhoton m00; static MatchTop m01; static MatchHadron m02; static MatchWBoson m03; static MatchZBoson m04; static MatchHiggsBoson m05; } } herwig++-2.6.0.orig/PDT/BaryonWidthGenerator.fh0000644000175000017500000000055111754474774022047 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the BaryonWidthGenerator class. // #ifndef HERWIG_BaryonWidthGenerator_FH #define HERWIG_BaryonWidthGenerator_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; class BaryonWidthGenerator; ThePEG_DECLARE_POINTERS(BaryonWidthGenerator,BaryonWidthGeneratorPtr); } #endif herwig++-2.6.0.orig/PDT/SMHiggsWidthGenerator.h0000644000175000017500000001546011754474774021755 0ustar sylvestresylvestre// -*- C++ -*- // // SMHiggsWidthGenerator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMHiggsWidthGenerator_H #define HERWIG_SMHiggsWidthGenerator_H // // This is the declaration of the SMHiggsWidthGenerator class. // #include "GenericWidthGenerator.h" namespace Herwig { using namespace ThePEG; /** * The SMHiggsWidthGenerator class calculates the width for the Standard Model * Higgs boson * * @see \ref SMHiggsWidthGeneratorInterfaces "The interfaces" * defined for SMHiggsWidthGenerator. */ class SMHiggsWidthGenerator: public GenericWidthGenerator { public: /** * The default constructor. */ SMHiggsWidthGenerator() : widthopt_(2), offshell_(10.), mw_(ZERO), mz_(ZERO), gamw_(ZERO), gamz_(ZERO), qmass_(7,ZERO), lmass_(3,ZERO), sw2_(0.), ca_(0.), cf_(0.), qlast_(ZERO) {} private: /** @name Virtual functions to be overridden from based class */ //@{ /** * 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; /** * Return a decay map for a given Particle instance. */ virtual DecayMap rate(const Particle &); //@} /** * Return the total width and the sum of the partial widths for * modes which are used */ virtual pair width(Energy, const ParticleData &) const; /** * Calculate the partial width for a given mode * @param mH The Higgs masses * @param imode The decay mode */ Energy partialWidth(int imode, Energy mH) 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(); 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 Routines to calculate Higgs width. */ //@{ /** * Calculates the double Breit-Wigner Integral a-la FORTRAN HERWIG. * It is used in NLL corrected Higgs width for H->WW/ZZ, * x = (M_V/M_H)^2, y=M_V*G_V/(M_H)^2, where M_V/G_V - V-boson mass/width * @return the integral value. */ double HwDoubleBW(double x, double y) const; /** * Calculate a loop function for the triangle vertex GGH/AAH * @return the loop function value as a complex number */ Complex HwW2(double tau) const; //@} /** * Return the branching ratios at the given scale * @param scale The off shell-mass of the Higgs */ DecayMap branching(Energy scale, const ParticleData &) 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initSMHiggsWidthGenerator; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SMHiggsWidthGenerator & operator=(const SMHiggsWidthGenerator &); private: /** * Type of the Higgs width used (options: fixed, LO running, NLL corrected running) */ unsigned int widthopt_; /** * Number of times the width the Higgs is allowed to be off-shell */ double offshell_; /** * Particle properties extracted at initialization */ //@{ /** * Mass of the W boson */ Energy mw_; /** * Mass of the Z boson */ Energy mz_; /** * Width of the W boson */ Energy gamw_; /** * Width of the Z boson */ Energy gamz_; /** * Masses of the quarks */ vector qmass_; /** * Masses of the leptons */ vector lmass_; /** * \f$\sin^2\theta_W\f$ */ double sw2_; /** * The \f$C_A\f$ colour factor */ double ca_; /** * The \f$C_F\f$ colour factor */ double cf_; //@} /** * Storage of parameters for speed */ //@{ /** * The last scale */ mutable Energy qlast_; /** * \f$\Lambda_{\rm QCD}\f$ */ mutable Energy lambdaQCD_; /** * The electromagnetic coupling */ mutable double alphaEM_; /** * The strong coupling */ mutable double alphaS_; /** * Correction factor for \f$H\to q\bar{q}\f$ */ mutable double cd_; /** * Fermi constant */ mutable Energy2 gfermiinv_; /** * The anomalous dimension for \f$H\to q\bar{q}\f$ */ mutable double gam0_; /** * The \f$\beta\f$ function coefficient for \f$H\to q\bar{q}\f$ */ mutable double beta0_; //@} /** * Map between location in decay modes vector and code here */ map locMap_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SMHiggsWidthGenerator. */ template <> struct BaseClassTrait { /** Typedef of the first base class of SMHiggsWidthGenerator. */ typedef GenericWidthGenerator NthBase; }; /** This template specialization informs ThePEG about the name of * the SMHiggsWidthGenerator class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::SMHiggsWidthGenerator"; } }; /** @endcond */ } #endif /* HERWIG_SMHiggsWidthGenerator_H */ herwig++-2.6.0.orig/PDT/GenericWidthGenerator.cc0000644000175000017500000007105411754474774022167 0ustar sylvestresylvestre// -*- C++ -*- // // GenericWidthGenerator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the GenericWidthGenerator class. // #include "GenericWidthGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "TwoBodyAllOnCalculator.h" #include "OneOffShellCalculator.h" #include "TwoOffShellCalculator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/Repository.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Utilities/StringUtils.h" using namespace Herwig; void GenericWidthGenerator::persistentOutput(PersistentOStream & os) const { os << particle_ << ounit(mass_,GeV) << prefactor_ << MEtype_ << MEcode_ << ounit(MEmass1_,GeV) << ounit(MEmass2_,GeV) << MEcoupling_ << modeOn_ << ounit(interMasses_,GeV) << ounit(interWidths_,GeV) << noOfEntries_ << initialize_ << BRnorm_ << npoints_ << decayModes_ << decayTags_ << ounit(minMass_,GeV) << BRminimum_ << intOrder_ << interpolators_; } void GenericWidthGenerator::persistentInput(PersistentIStream & is, int) { is >> particle_ >> iunit(mass_,GeV) >> prefactor_ >> MEtype_ >> MEcode_ >> iunit(MEmass1_,GeV) >> iunit(MEmass2_,GeV) >> MEcoupling_ >>modeOn_ >> iunit(interMasses_,GeV) >> iunit(interWidths_,GeV) >> noOfEntries_ >> initialize_ >> BRnorm_ >> npoints_ >> decayModes_ >> decayTags_ >> iunit(minMass_,GeV) >> BRminimum_ >> intOrder_ >> interpolators_; } ClassDescription > initInterpolatorEE; ClassDescription GenericWidthGenerator::initGenericWidthGenerator; // Definition of the static class description member. void GenericWidthGenerator::setParticle(string p) { if ( (particle_ = Repository::GetPtr(p)) ) return; particle_ = Repository::findParticle(StringUtils::basename(p)); if ( ! particle_ ) Throw() << "Could not set Particle interface " << "for the object \"" << name() << "\". Particle \"" << StringUtils::basename(p) << "\" not found." << Exception::runerror; } string GenericWidthGenerator::getParticle() const { return particle_ ? particle_->fullName() : ""; } void GenericWidthGenerator::Init() { static ClassDocumentation documentation ("The GenericWidthGenerator class is the base class for running widths"); static Parameter interfaceParticle ("Particle", "The particle for which this is the width generator", 0, "", true, false, &GenericWidthGenerator::setParticle, &GenericWidthGenerator::getParticle); static Switch interfaceInitialize ("Initialize", "Initialize the width using the particle data object", &GenericWidthGenerator::initialize_, false, false, false); static SwitchOption interfaceInitializeInitialization (interfaceInitialize, "Yes", "Do the initialization", true); static SwitchOption interfaceInitializeNoInitialization (interfaceInitialize, "No", "Don't do the initalization", false); static ParVector interfacemetype ("MEtype", "The type of matrix element either 2-body from this class or higher from" " class inheriting from this", &GenericWidthGenerator::MEtype_, 0, 0, 0, 0, 3, false, false, true); static ParVector interfacemecode ("MEcode", "The code of matrix element either 2-body from this class or higher from" " class inheriting from this", &GenericWidthGenerator::MEcode_, 0, 0, 0, -1, 200, false, false, true); static ParVector interfaceMinimumMasses ("MinimumMasses", "The minimum mass of the decay products", &GenericWidthGenerator::minMass_, GeV, 0, ZERO, ZERO, 1.E12*GeV, false, false, true); static ParVector interfaceMEcoupling ("MEcoupling", "The coupling for a given ME", &GenericWidthGenerator::MEcoupling_, 0, 0, 0, 0, 1.E12, false, false, true); static ParVector interfaceModeOn ("ModeOn", "Is this mode included in the total width calculation", &GenericWidthGenerator::modeOn_, 0, 0, 0, 0, 1, false, false, true); static ParVector interfaceMEmass1 ("MEmass1", "The mass for first particle in a two body mode", &GenericWidthGenerator::MEmass1_, GeV, 0, ZERO, ZERO, 1.E12*GeV, false, false, true); static ParVector interfaceMEmass2 ("MEmass2", "The mass for second particle in a two body mode", &GenericWidthGenerator::MEmass2_, GeV, 0, ZERO, ZERO, 1.E12*GeV, false, false, true); static ParVector interfaceInterpolationMasses ("InterpolationMasses", "The masses for interpolation table", &GenericWidthGenerator::interMasses_, GeV, 0, ZERO, ZERO, 1E12*GeV, false, false, true); static ParVector interfaceInterpolationWidths ("InterpolationWidths", "The widths for interpolation table", &GenericWidthGenerator::interWidths_, GeV, 0, ZERO, ZERO, 1E12*GeV, false, false, true); static ParVector interfacenoofenteries ("NumberofEntries", "The number of entries in the table after this mode", &GenericWidthGenerator::noOfEntries_, 0, 0, 0, 0, 100000000, false, false, true); static Switch interfaceBRNormalize ("BRNormalize", "Normalize the partial widths so that they have the value BR*Total Width" " for an on-shell particle", &GenericWidthGenerator::BRnorm_, false, false, false); static SwitchOption interfaceBRNormalizeNormalize (interfaceBRNormalize, "Yes", "Perform the normalization", true); static SwitchOption interfaceBRNormalizeNoNormalisation (interfaceBRNormalize, "No", "Do not perform the normalization", false); static Parameter interfaceBRMinimum ("BRMinimum", "Minimum branching ratio for inclusion in the running width calculation.", &GenericWidthGenerator::BRminimum_, 0.01, 0.0, 1.0, false, false, true); static Parameter interfacePrefactor ("Prefactor", "The prefactor to get the correct on-shell width", &GenericWidthGenerator::prefactor_, 1.0, 0., 1000., false, false, false); static Parameter interfacePoints ("Points", "Number of points to use for interpolation tables when needed", &GenericWidthGenerator::npoints_, 50, 5, 1000, false, false, true); static ParVector interfaceDecayModes ("DecayModes", "The tags for the decay modes used in the width generator", &GenericWidthGenerator::decayTags_, -1, "", "", "", false, false, Interface::nolimits); static Parameter interfaceInterpolationOrder ("InterpolationOrder", "The interpolation order for the tables", &GenericWidthGenerator::intOrder_, 1, 1, 5, false, false, Interface::limited); } Energy GenericWidthGenerator::width(const ParticleData &, Energy m) const { Energy gamma= ZERO; for(unsigned int ix =0;ixinit(); tDecayIntegratorPtr decayer; // mass of the decaying particle mass_ = particle_->mass(); if(initialize_) { // the initial prefactor prefactor_=1.; // resize all the storage vectors MEtype_.clear(); MEcode_.clear(); MEmass1_.clear(); MEmass2_.clear(); MEcoupling_.clear(); modeOn_.clear(); minMass_.clear(); interMasses_.clear(); interWidths_.clear(); noOfEntries_.clear(); decayTags_.clear(); // integrators that we may need WidthCalculatorBasePtr widthptr; // get the list of decay modes as a decay selector DecayMap modes=particle_->decaySelector(); DecayMap::const_iterator start=modes.begin(); DecayMap::const_iterator end=modes.end(); tPDPtr part1,part2; tGenericMassGeneratorPtr massgen1,massgen2; // loop over the decay modes to get the partial widths for(;start!=end;++start) { // the decay mode tcDMPtr mode=(*start).second; decayModes_.push_back(const_ptr_cast(mode)); decayTags_.push_back(decayModes_.back()->tag()); ParticleMSet::const_iterator pit(mode->products().begin()); // minimum mass for the decaymode Energy minmass = ZERO; for(;pit!=mode->products().end();++pit) { (**pit).init(); minmass+=(**pit).massMin(); } minMass_.push_back(minmass); pit=mode->products().begin(); // its decayer decayer=dynamic_ptr_cast(mode->decayer()); if(decayer) decayer->init(); // if there's no decayer then set the partial width to the br times the // on-shell value if(!decayer) { MEtype_.push_back(0); MEcode_.push_back(0); MEcoupling_.push_back(mode->brat()); MEmass1_.push_back(ZERO); MEmass2_.push_back(ZERO); noOfEntries_.push_back(interMasses_.size()); modeOn_.push_back(mode->brat()>BRminimum_); setupMode(mode,decayer,MEtype_.size()-1); } else if(mode->products().size()==2) { // the outgoing particles ParticleMSet::const_iterator pit = mode->products().begin(); part1=*pit;++pit; part2=*pit; // mass generators if( part1->stable() || part1->massGenerator()) massgen1=dynamic_ptr_cast(part1->massGenerator()); else massgen1=tGenericMassGeneratorPtr(); if(part2->stable() || part2->massGenerator()) massgen2=dynamic_ptr_cast(part2->massGenerator()); else massgen2=tGenericMassGeneratorPtr(); if(massgen1) massgen1->init(); if(massgen2) massgen2->init(); double coupling(0.); int mecode(-1); bool order(decayer->twoBodyMEcode(*mode,mecode,coupling)); MEcode_.push_back(mecode); MEcoupling_.push_back(coupling); modeOn_.push_back(mode->brat()>BRminimum_); if(order) { MEmass1_.push_back(part1->mass()); MEmass2_.push_back(part2->mass()); } else { MEmass1_.push_back(part2->mass()); MEmass2_.push_back(part1->mass()); } // perform setup in the inheriting class setupMode(mode,decayer,MEcode_.size()-1); // both particles on shell if(!massgen1&&!massgen2) { MEtype_.push_back(1); noOfEntries_.push_back(interMasses_.size()); if(BRnorm_) { if(mass_>MEmass1_[MEtype_.size()-1]+MEmass2_[MEtype_.size()-1]) { Energy gamma(partial2BodyWidth(MEtype_.size()-1,mass_)); double ratio(mode->brat()*mode->parent()->width()/gamma); ratio=sqrt(ratio); MEcoupling_.back() *=ratio; } } } else { // one off-shell particle if(!massgen1||!massgen2) { // create the width calculator tGenericWidthGeneratorPtr ttthis(const_ptr_cast(this)); WidthCalculatorBasePtr twobody (new_ptr(TwoBodyAllOnCalculator(ttthis,MEcode_.size()-1, MEmass1_[MEcode_.size()-1], MEmass2_[MEcode_.size()-1]))); int ioff = ((part1->massGenerator()&&!order)|| (part2->massGenerator()&&order)) ? 2 : 1; if(massgen1) widthptr=new_ptr(OneOffShellCalculator(ioff,twobody,massgen1,ZERO)); else widthptr=new_ptr(OneOffShellCalculator(ioff,twobody,massgen2,ZERO)); } else { int ioff = order ? 1 : 2; int iother = order ? 2 : 1; // create the width calculator tGenericWidthGeneratorPtr ttthis(const_ptr_cast(this)); // this is the both on-shell case WidthCalculatorBasePtr twobody (new_ptr(TwoBodyAllOnCalculator(ttthis,MEcode_.size()-1, MEmass1_[MEcode_.size()-1], MEmass2_[MEcode_.size()-1]))); // this is the first off-shell WidthCalculatorBasePtr widthptr2= new_ptr(OneOffShellCalculator(ioff,twobody,massgen1,ZERO)); widthptr=new_ptr(TwoOffShellCalculator(iother,widthptr2,massgen2, ZERO,massgen1->lowerLimit())); } // set up the interpolation table Energy test(part1->massMin()+part2->massMin()); Energy min(max(particle_->massMin(),test)),upp(particle_->massMax()); Energy step((upp-min)/(npoints_-1)); Energy moff(min); Energy2 moff2; // additional points to improve the interpolation if(min==test) { interMasses_.push_back(moff-2.*step);interWidths_.push_back(ZERO); interMasses_.push_back(moff- step);interWidths_.push_back(ZERO); interMasses_.push_back(moff );interWidths_.push_back(ZERO); double fact(exp(0.1*log(1.+step/moff))); for(unsigned int ix=0;ix<10;++ix) { moff*=fact; moff2=sqr(moff); interMasses_.push_back(moff); interWidths_.push_back(widthptr->partialWidth(moff2)); } moff+=step; } else if(test>min-2.*step) { interMasses_.push_back(moff-2.*step);interWidths_.push_back(ZERO); interMasses_.push_back(test );interWidths_.push_back(ZERO); } else { interMasses_.push_back(moff-2.*step); interWidths_.push_back(widthptr->partialWidth((moff-2.*step)* (moff-2.*step))); interMasses_.push_back(moff- step); interWidths_.push_back(widthptr->partialWidth((moff- step)* (moff- step))); } for(; moffpartialWidth(moff2)); } coupling=1.; if(BRnorm_) { double ratio(1.); if((massgen1&&massgen2&& mass_>massgen1->lowerLimit()+massgen2->lowerLimit())|| (massgen1&&!massgen2&& mass_>massgen1->lowerLimit()+part2->mass())|| (massgen2&&!massgen1&& mass_>massgen2->lowerLimit()+part1->mass())|| (!massgen1&&!massgen2&& mass_>part1->mass()+part2->mass())) { Energy gamma(widthptr->partialWidth(mass_*mass_)); ratio=mode->brat()*mode->parent()->width()/gamma; } MEcoupling_.back()=ratio; } else MEcoupling_.back()=1.; MEtype_.push_back(2); MEcode_.back()=0; noOfEntries_.push_back(interMasses_.size()); interpolators_.resize(MEtype_.size()); // get the vectors we will need vector::iterator istart= interMasses_.begin(); if(MEtype_.size()>1){istart+=noOfEntries_[MEtype_.size()-2];} vector::iterator iend=interMasses_.end(); vector masses(istart,iend); istart= interWidths_.begin(); if(MEtype_.size()>1){istart+=noOfEntries_[MEtype_.size()-2];} iend=interWidths_.end(); vector widths(istart,iend); interpolators_.back() = make_InterpolatorPtr(widths,masses,intOrder_); } } // higher multiplicities else { setupMode(mode,decayer,MEcode_.size()); widthptr=decayer->threeBodyMEIntegrator(*mode); if(!widthptr) { MEtype_.push_back(0); MEcode_.push_back(0); MEcoupling_.push_back(mode->brat()); MEmass1_.push_back(ZERO); MEmass2_.push_back(ZERO); noOfEntries_.push_back(interMasses_.size()); modeOn_.push_back(mode->brat()>BRminimum_); } else { Energy step((particle_->widthUpCut()+particle_->widthLoCut())/ (npoints_-1)); Energy moff(particle_->massMin()),upp(particle_->massMax()); for( ; moffpartialWidth(moff2); interMasses_.push_back(moff); interWidths_.push_back(wtemp); } double coupling(1.); if(BRnorm_) { Energy gamma = ZERO; gamma=widthptr->partialWidth(mass_*mass_); double ratio(mode->brat()*mode->parent()->width()/gamma); coupling *=ratio; } MEtype_.push_back(2); MEcode_.push_back(0); MEcoupling_.push_back(coupling); MEmass1_.push_back(ZERO); MEmass2_.push_back(ZERO); modeOn_.push_back(mode->brat()>BRminimum_); noOfEntries_.push_back(interMasses_.size()); interpolators_.resize(MEtype_.size()); // get the vectors we will need vector::iterator istart( interMasses_.begin()), iend(interMasses_.end()); if(MEtype_.size()>1){istart+=noOfEntries_[MEtype_.size()-2];} vector masses(istart,iend); istart= interWidths_.begin(); if(MEtype_.size()>1){istart+=noOfEntries_[MEtype_.size()-2];} iend=interWidths_.end(); vector widths(istart,iend); interpolators_.back() = make_InterpolatorPtr(widths,masses,intOrder_); } } } // now check the overall normalisation of the running width Energy gamma = width(*particle_,mass_); if(gamma>ZERO) prefactor_ = particle_->width()/gamma; // output the info so it can be read back in } else { // get the decay modes from the tags if(decayTags_.size()!=0) { decayModes_.clear(); for(unsigned int ix=0;ixlog() << "Error in GenericWidthGenerator::doinit() " << "Failed to find DecayMode for tag" << decayTags_[ix] << "\n"; } } // otherwise just use the modes from the selector else { DecaySet modes(particle_->decayModes()); DecaySet::const_iterator start(modes.begin()),end(modes.end()); tcDMPtr mode; for(;start!=end;++start) { decayModes_.push_back(const_ptr_cast(*start)); } } // set up the interpolators interpolators_.resize(MEtype_.size()); vector::iterator estart(interMasses_.begin()),eend; vector::iterator wstart(interWidths_.begin()),wend; vector masses,widths; for(unsigned int ix=0;ixinit(); decayer=dynamic_ptr_cast(decayModes_[ix]->decayer()); if(!decayer) continue; decayer->init(); decayer->setPartialWidth(*decayModes_[ix],ix); } // code to output plots // string fname = CurrentGenerator::current().filename() + // string("-") + name() + string(".top"); // ofstream output(fname.c_str()); // Energy step = (particle_->massMax()-particle_->massMin())/100.; // output << "SET FONT DUPLEX\n"; // output << "TITLE TOP \"Width for " << particle_->name() << "\"\n"; // output << "TITLE BOTTOM \"m/GeV\"\n"; // output << "TITLE LEFT \"G/GeV\"\n"; // output << "CASE \"F \"\n"; // output << "SET LIMITS X " // << (particle_->massMin()-10.*step)/GeV << " " // << particle_->massMax()/GeV << "\n"; // Energy upper(ZERO); // for(Energy etest=particle_->massMin();etestmassMax();etest+=step) { // Energy gamma=width(*particle_,etest); // upper = max(gamma,upper); // output << etest/GeV << "\t" << gamma/GeV << "\n"; // } // output << "SET LIMITS Y 0. " << upper/GeV << "\n"; // output << "JOIN\n"; // output << (particle_->massMin()-9.*step)/GeV << "\t" // << upper*(MEcode_.size()+1)/(MEcode_.size()+2)/GeV << "\n"; // output << (particle_->massMin()-7.*step)/GeV << "\t" // << upper*(MEcode_.size()+1)/(MEcode_.size()+2)/GeV << "\n"; // output << "JOIN\n"; // output << "TITLE DATA " // << (particle_->massMin()-6.*step)/GeV << "\t" // << upper*(MEcode_.size()+1)/(MEcode_.size()+2)/GeV // << " \"total\"\n"; // for(unsigned int ix=0;ixmassMin();etestmassMax();etest+=step) { // output << etest/GeV << "\t" << partialWidth(ix,etest)*prefactor_/GeV << "\n"; // } // switch(ix) { // case 0: output << "join red\n" ; break; // case 1: output << "join blue\n" ; break; // case 2: output << "join green\n" ; break; // case 3: output << "join yellow\n" ; break; // case 4: output << "join magenta\n"; break; // case 5: output << "join cyan\n" ; break; // case 6: output << "join dashes\n" ; break; // case 7: output << "join dotted\n" ; break; // case 8: output << "join dotdash\n"; break; // default: output << "join daashes space\n"; break; // } // output << (particle_->massMin()-9.*step)/GeV << "\t" // << upper*(MEcode_.size()-ix)/(MEcode_.size()+2)/GeV << "\n"; // output << (particle_->massMin()-7.*step)/GeV << "\t" // << upper*(MEcode_.size()-ix)/(MEcode_.size()+2)/GeV << "\n"; // switch(ix) { // case 0: output << "join red\n" ; break; // case 1: output << "join blue\n" ; break; // case 2: output << "join green\n" ; break; // case 3: output << "join yellow\n" ; break; // case 4: output << "join magenta\n"; break; // case 5: output << "join cyan\n" ; break; // case 6: output << "join dashes\n" ; break; // case 7: output << "join dotted\n" ; break; // case 8: output << "join dotdash\n"; break; // default: output << "join daashes space\n"; break; // } // output << "TITLE DATA " // << (particle_->massMin()-6.*step)/GeV << "\t" // << upper*(MEcode_.size()-ix)/(MEcode_.size()+2)/GeV // << " \"" << decayTags_[ix] << "\"\n"; // } } void GenericWidthGenerator::dataBaseOutput(ofstream & output, bool header) { if(header) output << "update Width_Generators set parameters=\""; // prefactor and general switiches output << "newdef " << name() << ":Prefactor " << prefactor_ << "\n"; output << "newdef " << name() << ":BRNormalize " << BRnorm_ << "\n"; output << "newdef " << name() << ":BRMinimum " << BRminimum_ << "\n"; output << "newdef " << name() << ":Points " << npoints_ << "\n"; output << "newdef " << name() << ":InterpolationOrder " << intOrder_ << "\n"; // the type of the matrix element for(unsigned int ix=0;ixvariableRatio()) return p.data().decaySelector(); // use the running widths to generate the branching ratios Energy scale(p.mass()); DecayMap dm; Energy width = particle_->width(); for(unsigned int ix=0;ixid() ? decayModes_[ix] : decayModes_[ix]->CC()); } return dm; } void GenericWidthGenerator::setupMode(tcDMPtr, tDecayIntegratorPtr, unsigned int) {} Energy GenericWidthGenerator::partialWidth(int imode,Energy q) const { if(qwidth(); } else if(MEtype_[imode]==1) { gamma=partial2BodyWidth(imode,q); } else if(MEtype_[imode]==2) { gamma=MEcoupling_[imode]*(*interpolators_[imode])(q); } else { throw Exception() << "Unknown type of mode " << MEtype_[imode] << "in GenericWidthGenerator::partialWidth()" << Exception::runerror; } return max(gamma,ZERO); } void GenericWidthGenerator::dofinish() { if(initialize_) { string fname = CurrentGenerator::current().filename() + string("-") + name() + string(".output"); ofstream output(fname.c_str()); dataBaseOutput(output,true); } WidthGenerator::dofinish(); } void GenericWidthGenerator::rebind(const TranslationMap & trans) { particle_ = trans.translate(particle_); WidthGenerator::rebind(trans); } IVector GenericWidthGenerator::getReferences() { IVector ret = WidthGenerator::getReferences(); ret.push_back(particle_); return ret; } Length GenericWidthGenerator::lifeTime(const ParticleData &, Energy m, Energy w) const { if(mmassMin()) w = width(*particle_,particle_->massMin()); else if(m>particle_->massMax()) w = width(*particle_,particle_->massMax()); return UseRandom::rndExp(hbarc/w); } Energy GenericWidthGenerator::partial2BodyWidth(int imode, Energy q,Energy m1, Energy m2) const { using Constants::pi; if(qwidth(); Energy pcm(sqrt(pcm2)); double gam(0.); switch(MEcode_[imode]) { // V -> P P case 0: gam = pcm2/6./q2; break; // V -> P V case 1: gam = pcm2/12./m02; break; // V -> f fbar case 2: gam = 1./12.*(q2*(2.*q2-m12-m22+6.*m1*m2) -(m12-m22)*(m12-m22))/q2/q2; break; // P -> VV case 3: gam = 0.25*pcm2/m02; break; // A -> VP case 4: gam = (2.*pcm2+3.*m12)/24./m02; break; // V -> VV case 5: gam = pcm2/3./q2*(1.+m12/q2+m22/q2); break; // S -> SS case 6: gam = 0.125/q2*m02; break; // T -> PP case 7: gam = pcm2*pcm2/60./q2/m02; break; // T -> VP case 8: gam = pcm2*pcm2/40./m02/m02; break; // T -> VV case 9: gam = 1./30./q2/q2/m02* (3.*q2*(8.*pcm2*pcm2+5.*(m12*m22+pcm2*(m12+m22))) -5.*(m12-m22)*(m12-m22)*pcm2); break; // P -> PV case 10: gam = 0.5*pcm2/m22; break; // P -> PT case 11: gam = sqr(pcm2)/12.*q2/m12/m12/m02; break; // S -> VV case 12: gam = 0.125*(2.*pcm2+3.*m12*m22/q2)/m02; break; // unknown default: throw Exception() << "Unknown type of mode " << MEcode_[imode] << " in GenericWidthGenerator::partial2BodyWidth() " << Exception::abortnow; } return gam*pcm*sqr(MEcoupling_[imode])/pi; } pair GenericWidthGenerator::width(Energy m, const ParticleData & ) const { pair gamma(make_pair(ZERO,ZERO)); for(unsigned int ix=0;ixon()) gamma.first += partial; } } gamma.first *= prefactor_; gamma.second *= prefactor_; return gamma; } herwig++-2.6.0.orig/PDT/WidthCalculatorBase.fh0000644000175000017500000000050411754474774021630 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the WidthCalculatorBase class. // #ifndef HERWIG_WidthCalculatorBase_FH #define HERWIG_WidthCalculatorBase_FH namespace Herwig { using namespace ThePEG; class WidthCalculatorBase; ThePEG_DECLARE_CLASS_POINTERS(WidthCalculatorBase,WidthCalculatorBasePtr); } #endif herwig++-2.6.0.orig/PDT/ScalarMassGenerator.cc0000644000175000017500000001427211754474774021643 0ustar sylvestresylvestre// -*- C++ -*- // // ScalarMassGenerator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ScalarMassGenerator class. // #include "ScalarMassGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void ScalarMassGenerator::persistentOutput(PersistentOStream & os) const { os << ounit(_coupling,GeV) << ounit(_mass1,GeV) << ounit(_mass2,GeV) << ounit(_m2plus,GeV2) << ounit(_m2minus,GeV2); } void ScalarMassGenerator::persistentInput(PersistentIStream & is, int) { is >> iunit(_coupling,GeV) >> iunit(_mass1,GeV) >> iunit(_mass2,GeV) >> iunit(_m2plus,GeV2) >> iunit(_m2minus,GeV2); } ClassDescription ScalarMassGenerator::initScalarMassGenerator; // Definition of the static class description member. void ScalarMassGenerator::Init() { static ClassDocumentation documentation ("The ScalarMassGenerator class inherits from the " "GenericMassGenerator class and includes finite width effects " "for the scalar f_0 and a_0 mesons.", "Finite width effects for the scalar $f_0$ and $a_0$ mesons follow \\cite{Flatte:1976xu}.", "%\\cite{Flatte:1976xu}\n" "\\bibitem{Flatte:1976xu}\n" " S.~M.~Flatte,\n" " ``Coupled - Channel Analysis Of The Pi Eta And K Anti-K Systems Near K Anti-K\n" " Threshold,''\n" " Phys.\\ Lett.\\ B {\\bf 63}, 224 (1976).\n" " %%CITATION = PHLTA,B63,224;%%\n" ); static ParVector interfacecoupling ("Coupling", "The coupling", &ScalarMassGenerator::_coupling, GeV, 0, ZERO, ZERO, Constants::MaxEnergy, false, false, true); static ParVector interfacemass1 ("Mass1", "The mass for first particle", &ScalarMassGenerator::_mass1, GeV, 0, ZERO, ZERO, Constants::MaxEnergy, false, false, true); static ParVector interfacemass2 ("Mass2", "The mass for second particle", &ScalarMassGenerator::_mass2, GeV, 0, ZERO, ZERO, Constants::MaxEnergy, false, false, true); } void ScalarMassGenerator::dataBaseOutput(ofstream & output,bool header) { if(header) output << "update Mass_Generators set parameters=\""; GenericMassGenerator::dataBaseOutput(output,false); for(unsigned int ix=0;ix<_coupling.size();++ix) output << "insert " << fullName() << ":Coupling " << ix << " " << _coupling[ix]/GeV << "\n"; for(unsigned int ix=0;ix<_mass1.size();++ix) output << "insert " << fullName() << ":Mass1 " << ix << " " << _mass1[ix]/GeV << "\n"; for(unsigned int ix=0;ix<_mass2.size();++ix) output << "insert " << fullName() << ":Mass2 " << ix << " " << _mass2[ix]/GeV << "\n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } void ScalarMassGenerator::doinit() { if(_coupling.size()!=_mass1.size()|| _coupling.size()!=_mass2.size()) throw InitException() << "Parameter vectors have inconsistent sizes in " << "ScalarMassGenerator::doinit()" << Exception::runerror; // initialise the local variables for(unsigned int ix=0;ix<_mass1.size();++ix) { _m2plus .push_back(sqr(_mass1[ix]+_mass2[ix])); _m2minus.push_back(sqr(_mass1[ix]-_mass2[ix])); } // rest of the initialisation is handled in the base class GenericMassGenerator::doinit(); } double ScalarMassGenerator::weight(Energy q,int shape) const { useMe(); Energy2 q2 = sqr(q); Energy2 mass2 = sqr(nominalMass()); Energy2 mwidth= nominalMass()*nominalWidth(); Energy2 gamma[2]={0.*MeV2,ZERO}; if(shape==1) { for(unsigned int ix=0;ix<_coupling.size();++ix) { double lambda = (mass2-_m2plus[ix])*(mass2-_m2minus[ix])/sqr(mass2); if(lambda>=0.) gamma[0]+=sqr(_coupling[ix])*sqrt( lambda)*q/nominalMass(); else gamma[1]+=sqr(_coupling[ix])*sqrt(-lambda)*q/nominalMass(); } } else { for(unsigned int ix=0;ix<_coupling.size();++ix) { double lambda = (q2-_m2plus[ix])*(q2-_m2minus[ix])/sqr(q2); if(lambda>=0.) gamma[0]+=sqr(_coupling[ix])*sqrt( lambda); else gamma[1]+=sqr(_coupling[ix])*sqrt(-lambda); } } Energy2 numer(ZERO); if(shape==2) numer = nominalMass()*gamma[0]/q; else if(shape==3) numer = nominalMass()*nominalWidth(); else numer = gamma[0]; complex denom = (shape==2) ? mass2 - q2 +mass2/q2*complex(gamma[1],-gamma[0]) : mass2 - q2 +complex(gamma[1],-gamma[0]); // complex denominantor Energy4 den = real(denom*conj(denom)); return numer/den*(sqr(mass2-q2)+sqr(mwidth))/Constants::pi/mwidth; } InvEnergy2 ScalarMassGenerator::BreitWignerWeight(Energy q, int shape) const { useMe(); Energy2 q2 = sqr(q); Energy2 mass2 = sqr(nominalMass()); Energy2 gamma[2]={0.*MeV2,ZERO}; if(shape==1) { for(unsigned int ix=0;ix<_coupling.size();++ix) { double lambda = (mass2-_m2plus[ix])*(mass2-_m2minus[ix])/sqr(mass2); if(lambda>=0.) gamma[0]+=sqr(_coupling[ix])*sqrt( lambda)*q/nominalMass(); else gamma[1]+=sqr(_coupling[ix])*sqrt(-lambda)*q/nominalMass(); } } else { for(unsigned int ix=0;ix<_coupling.size();++ix) { double lambda = (q2-_m2plus[ix])*(q2-_m2minus[ix])/sqr(q2); if(lambda>=0.) gamma[0]+=sqr(_coupling[ix])*sqrt( lambda); else gamma[1]+=sqr(_coupling[ix])*sqrt(-lambda); } } Energy2 numer(ZERO); if(shape==2) numer = nominalMass()*gamma[0]/q; else if(shape==3) numer = nominalMass()*nominalWidth(); else numer = gamma[0]; complex denom = (shape==2) ? mass2 - q2 +mass2/q2*complex(gamma[1],-gamma[0]) : mass2 - q2 +complex(gamma[1],-gamma[0]); // complex denominantor Energy4 den = real(denom*conj(denom)); return numer/den/Constants::pi; } herwig++-2.6.0.orig/Contrib/0000755000175000017500000000000011756464211016362 5ustar sylvestresylvestreherwig++-2.6.0.orig/Contrib/make_makefiles.sh.in0000644000175000017500000000220111754474774022270 0ustar sylvestresylvestre#!/bin/bash # script to put the HERWIG and THEPEG paths into the simple makefiles, # for everything else the user is on their own! # loop over all the files THEPEGINCLUDE="@THEPEGINCLUDE@" GSLINCLUDE="@GSLINCLUDE@" FASTJETINCLUDE="@FASTJETINCLUDE@" HERWIGINCLUDE=-I@prefix@/include/ FC="@FC@" FCLIBS="@FCLIBS@" CXX="@CXX@" CXXFLAGS="@CXXFLAGS@" LDFLAGS="@LDFLAGS@" SHARED_FLAG="@SHARED_FLAG@" for i in * do # if a directory if [ -d $i ]; then # check input files exists file=$i/Makefile.in if [ -e $file ]; then file2=`echo $file | sed s!\.in!!` echo 'Making ' $file2 sed "s!THEPEGINCLUDE *\=!THEPEGINCLUDE=$THEPEGINCLUDE!" < $file | \ sed "s!FC *\=!FC=$FC!" | \ sed "s!FCLIBS *\=!FCLIBS=$FCLIBS!" | \ sed "s!CXX *\=!CXX=$CXX!" | \ sed "s!SHARED_FLAG *\=!SHARED_FLAG=$SHARED_FLAG!" | \ sed "s!LDFLAGS *\=!LDFLAGS=$LDFLAGS!" | \ sed "s!CXXFLAGS *\=!CXXFLAGS=$CXXFLAGS!" | \ sed "s!HERWIGINCLUDE *\=!HERWIGINCLUDE=$HERWIGINCLUDE!" | \ sed "s!GSLINCLUDE *\=!GSLINCLUDE=$GSLINCLUDE!" | \ sed "s!FASTJETINCLUDE *\=!FASTJETINCLUDE=$FASTJETINCLUDE!" > $file2 fi fi done herwig++-2.6.0.orig/Contrib/Makefile.in0000644000175000017500000003010211756461675020436 0ustar sylvestresylvestre# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Contrib DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/make_makefiles.sh.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = make_makefiles.sh CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = \ AcerDetInterface \ Analysis2 \ AnomalousHVV \ DecayAnalysis \ LeptonME \ PGSInterface \ RadiativeZPrime \ TauAnalysis \ AlpGen all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Contrib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Contrib/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): make_makefiles.sh: $(top_builddir)/config.status $(srcdir)/make_makefiles.sh.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ dist-hook distclean distclean-generic distclean-libtool \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am dist-hook: rm -rf `find $(distdir) -name '.svn' -or -name 'Makefile'` all: bash make_makefiles.sh # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: herwig++-2.6.0.orig/Contrib/AcerDetInterface/0000755000175000017500000000000011756464211021512 5ustar sylvestresylvestreherwig++-2.6.0.orig/Contrib/AcerDetInterface/LHC.in0000644000175000017500000000355411754474774022474 0ustar sylvestresylvestre################################################## # Example generator based on LHC parameters # usage: Herwig++ read LHC.in ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 ################################################## # LHC physics parameters (override defaults here) ################################################## set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV ################################################## # Matrix Elements for hadron-hadron collisions # (by default only gamma/Z switched on) ################################################## cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEqq2gZ2ff set MEqq2gZ2ff:Process Electron cd /Herwig/Generators library HwAcerDet.so create Herwig::ZAnalysis /Herwig/Analysis/ZAnalysis ZAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/ZAnalysis ################################################## # Save run for later usage with 'Herwig++ run' ################################################## saverun LHC LHCGenerator ################################################## # uncomment this section for an example batch run # of two repeats with different parameters # # Note that a separate call of 'Herwig run' # is not required in this case ################################################## # set LHCGenerator:NumberOfEvents 10 # run LHC-full LHCGenerator # # set LHCGenerator:EventHandler:LuminosityFunction:Energy 900.0 # run LHC-initial LHCGenerator herwig++-2.6.0.orig/Contrib/AcerDetInterface/acerdet.dat0000755000175000017500000000713711754474774023643 0ustar sylvestresylvestreC------ flags and switches --------------- 10000 --- LPAR(1) ....id for histograms 1 --- LPAR(2) ....smearing on=1, off=0 1 --- LPAR(3) ....B-field on=1, off=0 66 --- LPAR(4) ....code for SUSY LSP particle 1 --- LPAR(5) ....b- and c-jets labeling on=1, off=0 1 --- LPAR(6) ....tau-jets labeling on=1, off=0 1 --- LPAR(7) ....jet calibration on=1, off=0 C------ parameters for ACDCEL --------------- 5.000 --- YPAR(1) ....rapidity coverage 0.500 --- YPAR(2) ....min p_T for B-field 0.000 --- YPAR(3) ....min E_T for cell 3.200 --- YPAR(4) ....eta transition in cells granularity 0.100 --- YPAR(5) ....granularity in eta (within YPAR(17)), 2x outside 0.100 --- YPAR(6) ....granularity in phi (within YPAR(17)), 2x outside C------ parameters for ACDCLU --------------- 5.000 --- YPAR(10) ....minimum E_T for cluster 0.400 --- YPAR(11) ....cone R for clustering 5.000 --- YPAR(12) ....rapidity coverage 1.500 --- YPAR(13) ....min E_T for cluster initiator C------ parameters for ACDMUO --------------- 6.000 --- YPAR(20) ....minimum muon-momenta to be detected 2.500 --- YPAR(21) ....maximum muon eta to be detected 0.400 --- YPAR(27) ....min R_lj for muon-isolation 0.200 --- YPAR(28) ....R_cone for energy deposition 10.000 --- YPAR(29) ....max energy deposition for isol C------ parameters for ACDPHO --------------- 5.000 --- YPAR(30) ....minimum photon-momenta to be isol 2.500 --- YPAR(31) ....maximum photon eta to be isol 0.150 --- YPAR(35) ....min R_lj for photon-jet 0.400 --- YPAR(37) ....min R_lj for photon-isolation 0.200 --- YPAR(38) ....R_cone for energy deposition 10.000 --- YPAR(39) ....max energy deposition for isol C------ parameters for ACDELE --------------- 5.000 --- YPAR(40) ....minimum electron-momenta to be isol 2.500 --- YPAR(41) ....maximum electron eta to be isol 0.150 --- YPAR(45) ....min R_lj for electron-jet 0.400 --- YPAR(47) ....min R_lj for electron-isolation 0.200 --- YPAR(48) ....R_cone for energy deposition 10.000 --- YPAR(49) ....max energy deposition for isol C------ parameters for ACDJET --------------- 10.000 --- YPAR(51) ....jets energy_min threshold 5.000 --- YPAR(52) ....rapidity coverage for jets C------ parameters for ACDBJE --------------- 5.000 --- YPAR(61) ....minimum b-quark pT (after FSR) momenta for b-jet label 2.500 --- YPAR(62) ....maximum b-quark eta for b-jet label 0.200 --- YPAR(63) ....max R_bj for b-jet label C------ parameters for ACDCJE --------------- 5.000 --- YPAR(71) ....minimum c-quark pT (after FSR) momenta for c-jet label 2.500 --- YPAR(72) ....maximum c-quark eta for c-jet label 0.200 --- YPAR(73) ....max R_cj for c-jet label C------ parameters for ACDTAU --------------- 10.000 --- YPAR(90) ....minimum tau-had pT for tau-jet label 2.500 --- YPAR(91) ....maximum tau-eta for tau-jet label 0.300 --- YPAR(92) ....max R_tauj for tau-jet 0.900 --- YPAR(93) ....max R_tauj for tau-jet C------ parameters for ACDMIS --------------- 0.000 --- YPAR(80) ....min E_T for energy in cell to count unused cell C------ end of data files --------------- herwig++-2.6.0.orig/Contrib/AcerDetInterface/Makefile.in0000644000175000017500000000261611754474774023601 0ustar sylvestresylvestre# -*- Makefile -*- (for emacs) # # This Makefile is intended for compiling Herwig++ plugins # You can find plugins here: INSERT URL # # This Makefile received very little testing, # any bug reports are very welcome! # # location of include files THEPEGINCLUDE = GSLINCLUDE = HERWIGINCLUDE = FC = FCLIBS = LDFLAGS = SHARED_FLAG = HEPMCLIBS = -L/scratch/richardn/montecarlo/utilities/lib ACERDETPATH = /scratch/richardn/montecarlo/detector/AcerDET-1.0 ACERDETINCLUDE = -I$(ACERDETPATH)/acerdet_inc ACERDETLIB = -L$(ACERDETPATH)/acerdet_lib -lacerdet CERNPATH = /scratch/richardn/montecarlo/detector/lib CERNLIB = -L$(CERNPATH) -lpacklib -lmathlib -lkernlib -lphtools -lnsl -lcrypt -ldl INCLUDE = $(THEPEGINCLUDE) $(GSLINCLUDE) $(HERWIGINCLUDE) # # C++ flags # CXX = CXXFLAGS = ALLCCFILES=$(shell echo *.cc) default : HwAcerDet.so ZAnalysis.so HwAcerDet.so : AcerDet.cc AcerDet.h AcerDet_files.o $(CXX) -fPIC $(INCLUDE) $(CXXFLAGS) $(SHARED_FLAG) $(LDFLAGS) \ AcerDet_files.o AcerDet.cc -o HwAcerDet.so \ $(ACERDETLIB) $(CERNLIB) $(HEPMCLIBS) -lHepMC -lHepMCfio $(FCLIBS) ZAnalysis.so : ZAnalysis.cc ZAnalysis.h $(CXX) -fPIC $(INCLUDE) $(CXXFLAGS) $(SHARED_FLAG) $(LDFLAGS) \ ZAnalysis.cc -o ZAnalysis.so \ $(ACERDETLIB) $(CERNLIB) $(HEPMCLIBS) -lHepMC -lHepMCfio $(FCLIBS) AcerDet_files.o: AcerDet_files.f $(FC) $(ACERDETINCLUDE) -c -fno-second-underscore AcerDet_files.f clean: rm -f *.o *.soherwig++-2.6.0.orig/Contrib/AcerDetInterface/AcerDet_files.f0000755000175000017500000000074011754474774024373 0ustar sylvestresylvestre subroutine acerdet_files implicit none integer nwpawc real hmemor PARAMETER (NWPAWC = 5 000 000) COMMON /PAWC/ HMEMOR(NWPAWC) INCLUDE "acdnout.inc" C--unit numbers for the inpt and output files NINP = 16 NOUT = 11 C--open the files OPEN(NINP ,file='acerdet.dat',status='old') OPEN(NOUT ,file='acerdet.out') C--hbook CALL HLIMIT(NWPAWC) C------initialize histo output CALL HOUTPU(NOUT) end herwig++-2.6.0.orig/Contrib/AcerDetInterface/AcerDet.cc0000644000175000017500000001070611754474774023351 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the AcerDet class. // #include "AcerDet.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Config/HepMCHelper.h" using namespace Herwig; // maximum number of leptons in the common block const int acdleptt_maxlept = 12; // maximum number of photons in the common block const int acdphot_maxphot = 12; // maximum number of jets in the common block const int acdjets_maxjet = 20; extern "C" { // main AcerDet driving routine void acerdet_(int*); // convert from HEPEVT to internal format void acdherwig6_(); // open the files for input/output void acerdet_files_(); // common block for reconstructed leptons extern struct { int nlept; int kflept[acdleptt_maxlept]; float pxlept[acdleptt_maxlept]; float pylept[acdleptt_maxlept]; float pzlept[acdleptt_maxlept]; float eelept[acdleptt_maxlept]; } acdleptt_; // common block for reconstructed photons extern struct { int nphot; int kfphot[acdphot_maxphot]; float pxphot[acdphot_maxphot]; float pyphot[acdphot_maxphot]; float pzphot[acdphot_maxphot]; float eephot[acdphot_maxphot]; } acdphot_; // common block for reconstructed jets extern struct { int njets; int kfjets[acdjets_maxjet]; float pxjets[acdjets_maxjet]; float pyjets[acdjets_maxjet]; float pzjets[acdjets_maxjet]; float eejets[acdjets_maxjet]; } acdjets_; // common block for reconstructed etmiss extern struct { float pxmiss; float pymiss; float pxnues; float pynues; float pxcalo; float pycalo; } acdmiss_; } void AcerDet::analyze(tEventPtr event, long ieve, int loop, int state) { // check energy unit if(HepMC::Units::default_momentum_unit()!=HepMC::Units::GEV) throw Exception() << "Must be using GeV in HepMC if using AcerDet" << " in AcerDet::analyze()" << Exception::runerror; // clear storage _nphoton=0; _photonMomentum.clear(); _nlepton=0; _leptonMomentum.clear(); _leptonID; _njet=0; _jetMomentum.clear(); _jetID; // convert the event to HepMC HepMC::GenEvent * hepmc = HepMCConverter::convert(*event); // convert the event from HepMC to HEPEVT HepMC::HEPEVT_Wrapper::set_max_number_entries(4000); _converter->write_event(hepmc); // convert the event to AcerDet internal format acdherwig6_(); int imode=0; acerdet_(&imode); // number of photons and momenta _nphoton = acdphot_.nphot; for(int ix=0;ix<_nphoton;++ix) { _photonMomentum.push_back(LorentzMomentum(acdphot_.pxphot[ix]*GeV, acdphot_.pyphot[ix]*GeV, acdphot_.pzphot[ix]*GeV, acdphot_.eephot[ix]*GeV)); } // number of leptons, momenta and PDG codes _nlepton = acdleptt_.nlept; for(int ix=0;ix<_nlepton;++ix) { _leptonMomentum.push_back(LorentzMomentum(acdleptt_.pxlept[ix]*GeV, acdleptt_.pylept[ix]*GeV, acdleptt_.pzlept[ix]*GeV, acdleptt_.eelept[ix]*GeV)); _leptonID.push_back(acdleptt_.kflept[ix]); } // number of jets, momenta and PDG codes _njet = acdjets_.njets; for(int ix=0;ix<_njet;++ix) { _jetMomentum.push_back(LorentzMomentum(acdjets_.pxjets[ix]*GeV, acdjets_.pyjets[ix]*GeV, acdjets_.pzjets[ix]*GeV, acdjets_.eejets[ix]*GeV)); _jetID.push_back(acdjets_.kfjets[ix]); } // missing ET _etcalo = make_pair(acdmiss_.pxcalo*GeV,acdmiss_.pycalo*GeV); _etneutrino = make_pair(acdmiss_.pxnues*GeV,acdmiss_.pynues*GeV); _etstable = make_pair(acdmiss_.pxmiss*GeV,acdmiss_.pymiss*GeV); delete hepmc; } NoPIOClassDescription AcerDet::initAcerDet; // Definition of the static class description member. void AcerDet::Init() { static ClassDocumentation documentation ("The AcerDet class provides an interface to the AcerDet fast" " dectector simulation."); } void AcerDet::dofinish() { AnalysisHandler::dofinish(); // delete the converter from HepMC to HEPEVT delete _converter; int imode=1; acerdet_(&imode); } void AcerDet::doinitrun() { AnalysisHandler::doinitrun(); // create the converter from HepMC to HEPEVT _converter = new HepMC::IO_HEPEVT(); // initialise AcerDet int mode=-1; generator()->log() << "testing in init run \n"; acerdet_files_(); generator()->log() << "testing read files\n"; acerdet_(&mode); } herwig++-2.6.0.orig/Contrib/AcerDetInterface/ZAnalysis.h0000644000175000017500000001015211754474774023614 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_ZAnalysis_H #define HERWIG_ZAnalysis_H // // This is the declaration of the ZAnalysis class. // #include "AcerDet.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * The ZAnalysis class is a simple example of using the interface * to AcerDet to look at the Z mass at the hadron and detector levels * * @see \ref ZAnalysisInterfaces "The interfaces" * defined for ZAnalysis. */ class ZAnalysis: public AcerDet { public: /** * The default constructor. */ ZAnalysis(); /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription initZAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ZAnalysis & operator=(const ZAnalysis &); private: /** * Z mass at the hadron level */ Histogram ZmassHadron_; /** * Z mass at the detector level */ Histogram ZmassDetector_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ZAnalysis. */ template <> struct BaseClassTrait { /** Typedef of the first base class of ZAnalysis. */ typedef Herwig::AcerDet NthBase; }; /** This template specialization informs ThePEG about the name of * the ZAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::ZAnalysis"; } /** * The name of a file containing the dynamic library where the class * ZAnalysis is implemented. It may also include several, space-separated, * libraries if the class ZAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwAcerDet.so ZAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_ZAnalysis_H */ herwig++-2.6.0.orig/Contrib/AcerDetInterface/AcerDet.h0000644000175000017500000001512711754474774023215 0ustar sylvestresylvestre// -*- C++ -*- #ifndef HERWIG_AcerDet_H #define HERWIG_AcerDet_H // // This is the declaration of the AcerDet class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "HepMC/GenEvent.h" #include "HepMC/IO_HEPEVT.h" namespace Herwig { using namespace ThePEG; /** * The AcerDet class is designed to interface Herwig++ with the * AcerDet fast detector simulation * * @see \ref AcerDetInterfaces "The interfaces" * defined for AcerDet. */ class AcerDet: public AnalysisHandler { public: /** * The default constructor. */ inline AcerDet() {} /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * Members to analyse the information from AcerDet */ //@{ /** * Number of photons */ inline unsigned int numberOfPhotons() const {return _nphoton;} /** * Momenta of the photons */ inline const vector & photonMomentum() const {return _photonMomentum;} /** * Number of leptons */ inline unsigned int numberOfLeptons() const {return _nlepton;} /** * Momenta of the leptons */ inline const vector & leptonMomentum() const {return _leptonMomentum;} /** * PDG codes for the leptons */ inline const vector & leptonID() const {return _leptonID;} /** * Number of jets */ inline unsigned int numberOfJets() const {return _njet;} /** * Momenta of the jets */ inline const vector & jetMomentum() const {return _jetMomentum;} /** * PDG codes for the jets (0 for light 5 for bottom) * probably not very relible */ inline const vector & jetID() const {return _jetID;} /** * The missing \f$E_T\f$ from the calorimeter * @return \f$p_x\f$, \f$p_y\f$ */ inline const pair & missingETCalorimeter() const {_etcalo;} /** * The missing \f$E_T\f$ from the neutrinos * @return \f$p_x\f$, \f$p_y\f$ */ inline const pair & missingETNeutrino() const {_etneutrino;} /** * The missing \f$E_T\f$ from the user identified stable neutral particles * @return \f$p_x\f$, \f$p_y\f$ */ inline const pair & missingETStable() const {_etstable;} //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription initAcerDet; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ AcerDet & operator=(const AcerDet &); private: /** * Converter from HepMC to HEPEVT */ HepMC::IO_HEPEVT * _converter; /** * Number of photons */ unsigned int _nphoton; /** * Momenta of the photons */ vector _photonMomentum; /** * Number of leptons */ unsigned int _nlepton; /** * Momenta of the leptons */ vector _leptonMomentum; /** * PDG codes for the leptons */ vector _leptonID; /** * Number of jets */ unsigned int _njet; /** * Momenta of the jets */ vector _jetMomentum; /** * PDG codes for the jets */ vector _jetID; /** * The missing \f$E_T\f$ from the calorimeter */ pair _etcalo; /** * The missing \f$E_T\f$ from the neutrinos */ pair _etneutrino; /** * The missing \f$E_T\f$ from the user identified stable neutral particles */ pair _etstable; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of AcerDet. */ template <> struct BaseClassTrait { /** Typedef of the first base class of AcerDet. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the AcerDet class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Herwig::AcerDet"; } /** * The name of a file containing the dynamic library where the class * AcerDet is implemented. It may also include several, space-separated, * libraries if the class AcerDet depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwAcerDet.so"; } }; /** @endcond */ } #endif /* HERWIG_AcerDet_H */ herwig++-2.6.0.orig/Contrib/AcerDetInterface/ZAnalysis.cc0000644000175000017500000000456511754474774023765 0ustar sylvestresylvestre// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the ZAnalysis class. // #include "ZAnalysis.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/EnumParticles.h" using namespace Herwig; ZAnalysis::ZAnalysis() : ZmassHadron_(82.,102.,100), ZmassDetector_(82.,102.,100) {} void ZAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { AcerDet::analyze(event, ieve, loop, state); // detector level // require 2 leptons if(numberOfLeptons()!=2) return; // require opposite sign if(leptonID()[0]!=-leptonID()[1]) return; Lorentz5Momentum pz = leptonMomentum()[0]+leptonMomentum()[1]; double mz = pz.m()/GeV; ZmassDetector_ += mz; // hadron level StepVector::const_iterator sit =event->primaryCollision()->steps().begin(); StepVector::const_iterator stest =event->primaryCollision()->steps().end(); StepVector::const_iterator send=sit; ++send; if(send==stest) --send; ++send; if(send==stest) --send; ++send; pz = LorentzMomentum(); for(;sit!=send;++sit) { ParticleSet part=(**sit).all(); ParticleSet::const_iterator iter = part.begin(), end = part.end(); for( ;iter!=end;++iter) { if((**iter).children().size()!=2) continue; if((**iter).id()==ParticleID::Z0||(**iter).id()==ParticleID::gamma) { pz=(*iter)->momentum(); double mz = pz.mass()/GeV; ZmassHadron_ += mz; } } } } IBPtr ZAnalysis::clone() const { return new_ptr(*this); } IBPtr ZAnalysis::fullclone() const { return new_ptr(*this); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). NoPIOClassDescription ZAnalysis::initZAnalysis; // Definition of the static class description member. void ZAnalysis::Init() { static ClassDocumentation documentation ("There is no documentation for the ZAnalysis class"); } void ZAnalysis::dofinish() { string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); string title; using namespace HistogramOptions; ZmassHadron_ .topdrawOutput(outfile,Frame,"BLACK","Z mass"); ZmassDetector_.topdrawOutput(outfile,None,"RED"); outfile.close(); AcerDet::dofinish(); } herwig++-2.6.0.orig/Contrib/Analysis2/0000755000175000017500000000000011756464211020227 5ustar sylvestresylvestreherwig++-2.6.0.orig/Contrib/Analysis2/Makefile.in0000644000175000017500000000000011756461505022265 0ustar sylvestresylvestreherwig++-2.6.0.orig/Contrib/Analysis2/config/0000755000175000017500000000000011756464211021474 5ustar sylvestresylvestreherwig++-2.6.0.orig/Contrib/Analysis2/NEWS0000644000175000017500000000000011754474774020731 0ustar sylvestresylvestreherwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/0000755000175000017500000000000011756464211022074 5ustar sylvestresylvestreherwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/EventExtractor.h0000644000175000017500000001131711754474774025242 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #ifndef Analysis2_EventExtractor_H #define Analysis2_EventExtractor_H // // This is the declaration of the EventExtractor class. // #include "ThePEG/Interface/Interfaced.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Vectors/Lorentz5Vector.h" namespace Analysis2 { using namespace ThePEG; /**\ingroup Analysis2 * * @author Simon Plaetzer * * @see \ref EventExtractorInterfaces "The interfaces" * defined for EventExtractor. */ class EventExtractor: public Interfaced { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline EventExtractor() : _lastEvent(), _ok(false), _doneEvent(false), _lastMomenta(), _lastWeight(0.) {} /** * The destructor. */ virtual ~EventExtractor(); //@} public: virtual void prepare (); inline void use (tcEventPtr ev) { _lastEvent = ev; prepare(); } inline tcEventPtr lastEvent() const { return _lastEvent; } public: virtual inline EventExtractor& operator >> (pair,double> & ev) { if (_doneEvent) { _ok = false; return *this; } ev = make_pair(_lastMomenta,_lastWeight); _doneEvent = true; return *this; } public: inline operator bool () const { return _ok; } inline bool operator ! () const { return !_ok; } protected: inline bool& ok () { return _ok; } 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const { return new_ptr(*this); } //@} private: /// the event to be analysed tcEventPtr _lastEvent; /// stream state bool _ok; bool _doneEvent; /// last final state momenta vector _lastMomenta; /// last weight double _lastWeight; /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static ClassDescription initEventExtractor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ EventExtractor & operator=(const EventExtractor &); }; } #include "ThePEG/Utilities/ClassTraits.h" #include "ThePEG/Config/Pointers.h" namespace ThePEG { ThePEG_DECLARE_POINTERS(Analysis2::EventExtractor,EventExtractorPtr); /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of EventExtractor. */ template <> struct BaseClassTrait { /** Typedef of the first base class of EventExtractor. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the EventExtractor class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Analysis2::EventExtractor"; } /** * The name of a file containing the dynamic library where the class * EventExtractor is implemented. It may also include several, space-separated, * libraries if the class EventExtractor depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "Analysis2.so"; } }; /** @endcond */ } #ifndef ThePEG_TEMPLATES_IN_CC_FILE // #include "EventExtractor.tcc" #endif #endif /* Analysis2_EventExtractor_H */ herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/FastJetFinder.icc0000644000175000017500000001006311754474774025261 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de namespace Analysis2 { inline FastJetFinder::FastJetFinder() : _jetFinder(fastjet::kt_algorithm), _strategy(fastjet::Best), _recombinationScheme(fastjet::E_scheme) {} inline FastJetFinder::FastJetFinder (const FastJetFinder& x) : JetFinder(x), _jetFinder(x._jetFinder), _strategy(x._strategy), _recombinationScheme(x._recombinationScheme) {} inline IBPtr FastJetFinder::clone() const { return new_ptr(*this); } inline IBPtr FastJetFinder::fullclone() const { return new_ptr(*this); } inline int FastJetFinder::jetFinder () const { return _jetFinder; } inline int FastJetFinder::recombinationScheme () const { return _recombinationScheme; } inline int FastJetFinder::strategy () const { return _strategy; } inline const fastjet::JetDefinition& FastJetFinder::jetDefintion () const { return _jetDefinition; } inline const vector& FastJetFinder::lastPseudojets () const { return _lastPseudojets; } inline const fastjet::ClusterSequence& FastJetFinder::lastClusterSequence () const { return *_lastClusterSequence; } inline void FastJetFinder::findJets () { convert(_lastClusterSequence->inclusive_jets()); } inline void FastJetFinder::findJetsN (unsigned int nJets) { int inJets = (int)nJets; convert(_lastClusterSequence->exclusive_jets(inJets)); } inline void FastJetFinder::findJetsD () { convert(_lastClusterSequence->exclusive_jets(sqr(dCut()/GeV))); } inline void FastJetFinder::findJetsY (double y) { Energy2 res; if (y < 0.) res = yCut()*_E2vis; else res = y*_E2vis; convert(_lastClusterSequence->exclusive_jets(res/GeV2)); } inline Energy FastJetFinder::getDMerge (unsigned int nJets) const { int inJets = (int)nJets; return sqrt(_lastClusterSequence->exclusive_dmerge(inJets))*GeV; } inline double FastJetFinder::getYMerge (unsigned int nJets) const { int inJets = (int)nJets; Energy dn = getDMerge (inJets); return sqr(dn)/_E2vis; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). inline void FastJetFinder::doinitrun() { JetFinder::doinitrun(); fastjet::JetFinder theJetFinder = fastjet::kt_algorithm; switch(_jetFinder) { case 0: theJetFinder = fastjet::kt_algorithm; break; case 1: theJetFinder = fastjet::cambridge_algorithm;; break; case 99: throw Exception() << "FastJet plugins not yet supported by FastJet interface"; } fastjet::RecombinationScheme theRecombinationScheme = fastjet::E_scheme; switch(_recombinationScheme) { case 0: theRecombinationScheme = fastjet::E_scheme; break; case 1: theRecombinationScheme = fastjet::pt_scheme; break; case 2: theRecombinationScheme = fastjet::pt2_scheme; break; case 3: theRecombinationScheme = fastjet::Et_scheme; break; case 4: theRecombinationScheme = fastjet::Et2_scheme; break; case 5: theRecombinationScheme = fastjet::BIpt_scheme; break; case 6: theRecombinationScheme = fastjet::BIpt2_scheme; break; case 99: throw Exception() << "FastJet user defined recombination not yet supported by FastJet interface"; } fastjet::Strategy theStrategy = fastjet::Best; switch(_strategy) { case -4: theStrategy = fastjet::N2MinHeapTiled; break; case -3: theStrategy = fastjet::N2Tiled; break; case -2: theStrategy = fastjet::N2PoorTiled; break; case -1: theStrategy = fastjet::N2Plain; break; case 0: theStrategy = fastjet::N3Dumb; break; case 1: theStrategy = fastjet::Best; break; case 2: theStrategy = fastjet::NlnN; break; case 3: theStrategy = fastjet::NlnN3pi; break; case 4: theStrategy = fastjet::NlnN4pi; break; case 14: theStrategy = fastjet::NlnNCam4pi; break; case 13: theStrategy = fastjet::NlnNCam2pi2R; break; case 12: theStrategy = fastjet::NlnNCam; break; case 999: throw Exception() << "FastJet plugins not yet supported by FastJet interface"; } _jetDefinition = fastjet::JetDefinition(theJetFinder,R(),theRecombinationScheme,theStrategy); } inline void FastJetFinder::dofinish() { JetFinder::dofinish(); } } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/FourJetCorrelations.icc0000644000175000017500000000330011754474774026530 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de namespace Analysis2 { inline FourJetCorrelations::FourJetCorrelations() : _cosAlpha34(""), _cosChiBZ(""), _cosPhiKSW(""), _cosThetaNR("") {} inline IBPtr FourJetCorrelations::clone() const { return new_ptr(*this); } inline IBPtr FourJetCorrelations::fullclone() const { return new_ptr(*this); } inline double FourJetCorrelations::cosChiBZ(const vector& p) { if (p.size() == 4) { ThreeVector v1 = p[0].vect().cross(p[1].vect()); ThreeVector v2 = p[2].vect().cross(p[3].vect()); return cos(v1.angle(v2)); } else return 123; } inline double FourJetCorrelations::cosPhiKSW(const vector& p) { if (p.size() == 4) { ThreeVector v1 = p[0].vect().cross(p[3].vect()); ThreeVector v2 = p[1].vect().cross(p[2].vect()); double alpha1 = v1.angle(v2); v1 = p[0].vect().cross(p[2].vect()); v2 = p[1].vect().cross(p[3].vect()); double alpha2 = v1.angle(v2); return cos((alpha1+alpha2)/2.); } else return 123; } inline double FourJetCorrelations::cosThetaNR(const vector& p) { if (p.size() == 4) { ThreeVector v1 = p[0].vect() - p[1].vect(); ThreeVector v2 = p[2].vect() - p[3].vect(); return cos(v1.angle(v2)); } else return 123; } inline double FourJetCorrelations::cosAlpha34(const vector& p) { if (p.size() == 4) return cos(p[2].vect().angle(p[3].vect())); else return 123; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/FourJetCorrelations.cc0000644000175000017500000000617711754474774026376 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #include "FourJetCorrelations.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Utilities/Throw.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "FourJetCorrelations.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Analysis2; FourJetCorrelations::~FourJetCorrelations() {} void FourJetCorrelations::persistentOutput(PersistentOStream & os) const { // *** ATTENTION *** os << ; // Add all member variable which should be written persistently here. os << _cosAlpha34 << _cosChiBZ << _cosPhiKSW << _cosThetaNR; } void FourJetCorrelations::persistentInput(PersistentIStream & is, int) { // *** ATTENTION *** is >> ; // Add all member variable which should be read persistently here. is >> _cosAlpha34 >> _cosChiBZ >> _cosPhiKSW >> _cosThetaNR; } ClassDescription FourJetCorrelations::initFourJetCorrelations; // Definition of the static class description member. void FourJetCorrelations::Init() { static ClassDocumentation documentation ("Four jet correlations at e+e- colliders (preferably LEP)"); static Parameter interfaceCosAlpha34 ("CosAlpha34", "Options for CosAlpha34", &FourJetCorrelations::_cosAlpha34, "", false, false); static Parameter interfaceCosChiBZ ("CosChiBZ", "Options for CosChiBZ", &FourJetCorrelations::_cosChiBZ, "", false, false); static Parameter interfaceCosPhiKSW ("CosPhiKSW", "Options for CosPhiKSW", &FourJetCorrelations::_cosPhiKSW, "", false, false); static Parameter interfaceCosThetaNR ("CosThetaNR", "Options for CosThetaNR", &FourJetCorrelations::_cosThetaNR, "", false, false); } void FourJetCorrelations::doinit() throw(InitException) { Analysis2Base::doinit(); if (!jetFinder()) Throw() << "YMerge : No JetFinder has been set, giving up."; int plotFlags = HistogramOutput::Frame | HistogramOutput::Errorbars; Histogram2Options options (plotFlags); insert("CosAlpha34",_cosAlpha34,options); insert("CosChiBZ",_cosChiBZ,options); insert("CosPhiKSW",_cosPhiKSW,options); insert("CosThetaNR",_cosThetaNR,options); } void FourJetCorrelations::analyze(const tPVector &) { pair,double> ev; while (*eventExtractor() >> ev) { jetFinder()->use(ev.first); jetFinder()->findJetsY(); if (jetFinder()->getNJets() != 4) continue; jetFinder()->sortEnergy(); book(cosAlpha34(jetFinder()->jets()),"CosAlpha34",ev.second); book(abs(cosChiBZ(jetFinder()->jets())),"CosChiBZ",ev.second); book(cosPhiKSW(jetFinder()->jets()),"CosPhiKSW",ev.second); book(abs(cosThetaNR(jetFinder()->jets())),"CosThetaNR",ev.second); } } void FourJetCorrelations::dofinish() { finish("CosAlpha34"); finish("CosChiBZ"); finish("CosPhiKSW"); finish("CosThetaNR"); Analysis2Base::dofinish(); } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/YMerge.cc0000644000175000017500000000564011754474774023615 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #include "YMerge.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Command.h" #include "ThePEG/Utilities/StringUtils.h" #include "ThePEG/Utilities/Throw.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "YMerge.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Analysis2; YMerge::~YMerge() {} void YMerge::persistentOutput(PersistentOStream & os) const { // *** ATTENTION *** os << ; // Add all member variable which should be written persistently here. os << _nMax << _options << _yn; } void YMerge::persistentInput(PersistentIStream & is, int) { // *** ATTENTION *** is >> ; // Add all member variable which should be read persistently here. is >> _nMax >> _options >> _yn; } ClassDescription YMerge::initYMerge; // Definition of the static class description member. void YMerge::Init() { static ClassDocumentation documentation ("Analysis for jet merging scales"); static Parameter interfaceNMax ("NMax", "Maximum n up to which y(n,n+1) should be booked", &YMerge::_nMax, 5, 2, 0, false, false, Interface::lowerlim); static Command interfaceY ("Y", "Insert options for given n.", &YMerge::Y, false); } string YMerge::Y (string in) { istringstream m (StringUtils::car(in)); unsigned int mult; m >> mult; if (mult < 2 || mult > _nMax) { Throw () << "YMerge : n must be between 2 and nMax"; } if (_options.size() < _nMax+1) { _options.resize(_nMax+1,""); } _options[mult] = StringUtils::cdr(in); return ""; } void YMerge::doinit() throw(InitException) { Analysis2Base::doinit(); _yn.clear(); if (!jetFinder()) Throw() << "YMerge : No JetFinder has been set, giving up."; if (_options.size() < 3) Throw() << "YMerge : Need at least options for y_{2,3}"; if (_options.size() < _nMax+1) Throw() << "YMerge : It seems that no options where set."; int plotFlags = HistogramOutput::Xlog | HistogramOutput::Ylog | HistogramOutput::Frame | HistogramOutput::Errorbars; Histogram2Options options (plotFlags); _yn.resize(_nMax+1,""); for (unsigned int i=2; i<=_nMax; ++i) { ostringstream name(""); name << "y_" << i << "_" << (i+1); _yn[i] = name.str(); insert(name.str(),_options[i],options); } } void YMerge::analyze(const tPVector &) { pair,double> ev; while (*eventExtractor() >> ev) { jetFinder()->use(ev.first); for (unsigned int i =2; i<=_nMax; ++i) { book(jetFinder()->getYMerge(i),_yn[i],ev.second); } } } void YMerge::dofinish() { for (unsigned int i =2; i<=_nMax; ++i) { finish(_yn[i]); } Analysis2Base::dofinish(); } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Analysis2Base.fh0000644000175000017500000000052311754474774025070 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the Analysis2Base class. // #ifndef Analysis2_Analysis2Base_FH #define Analysis2_Analysis2Base_FH #include "ThePEG/Config/Pointers.h" namespace Analysis2 { class Analysis2Base; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Analysis2::Analysis2Base,Analysis2BasePtr); } #endif herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Analysis2Base.h0000644000175000017500000002772211754474774024734 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #ifndef Analysis2_Analysis2Base_H #define Analysis2_Analysis2Base_H // // This is the declaration of the Analysis2Base class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Analysis2Base.fh" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Handlers/EventHandler.h" #include "ThePEG/Utilities/StringUtils.h" #include "Analysis2/Histogram2/Histogram2.h" #include "Analysis2/Histogram2/Histogram2Output.h" #include "EventExtractor.h" #include "JetFinder.h" namespace Analysis2 { using namespace ThePEG; /**\ingroup Analysis2 * * Analysis2 is the base class for all Analysis2 * AnalysisHandlers. It uses the Histogram2 class * for histogramming and statistics and provides * helpers for setting up parallel runs. * * @see \ref Analysis2BaseInterfaces "The interfaces" * defined for Analysis2Base. */ class Analysis2Base: public AnalysisHandler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline Analysis2Base(); /** * The destructor. */ virtual ~Analysis2Base(); //@} public: /** * Insert an observable by building it from * a data file or a given bin range and bin number. * instring is taken to be a XML tag: * * or * * Output options are set accordingly. */ void insert (const string& name, const string& instring, Histogram2Options&); /** * Insert an observable. * * If not present, this will insert a channel named * Analysis2++ into the histogram. Events are booked to this * channel by default. */ inline void insertObservable (const string& name, Histogram2Ptr, const Histogram2Options& = Histogram2Options()); /** * Insert an observable by building it from a * data file. A channel Analysis2++ is inserted. */ inline void insertObservable (const string& name, const string& dataName, const string& dataFile, const Histogram2Options& = Histogram2Options()); /** * Return the histogram for the given * observable. */ inline tcHistogram2Ptr histogram (const string&) const; /** * Book an event for the given observable. * The weight is looked up from the * event generator. The channel it is booked * to is named Analysis2++ */ void book (double evt, const string& name, double weight); /** * Normalization modes */ enum NormalisationMode { FromMap = -1, NoNormalisation = 0, NormaliseToUnity = 1, NormaliseToXSec = 2, NormaliseToData = 3 }; /** * Finish an observable. * * If a channel Analysis2++ is found, this is normalized * depending on the normalization flag (see above). * If normalization to data is requested, but no data * channel is indicated, it is normalized to cross section. * * If we are counting per subprocess, * channels named Analysis2++-[Multiplicity] are summed up * to a channel named "Analysis2++", which is in turn normalized * as a single Analysis2++ channel. * * If a data channel name is indicated, the ratio * and chi2 are computed taking Analysis2++ as prediction. * The chi2/DOF, indexed by the observable's name, is written * to generator()->log(). * */ void finish (const string& name, int normMode = FromMap, bool combined = false); /** * Insert an observable by combining multiple runs. * @see Histogram2::combine */ void combineObservable (const string& prefix, const string& name, unsigned int numRuns, int normMode = FromMap); /** * A command indicating that we start combining * observables from parallel runs. */ inline string startCombine (string); /** * A command to combine an observable from multiple * runs. Arguments need to be given as follows: * * [run prefix] [number of runs] [observable name] \ * {normalization mode : none, unity, xsec, data} * * If observable = *, all present observables are * combined. */ string combine (string); /** * A command indicating that we finished combining * observables from parallel runs. */ inline string finishCombine (string); /** * Return the Histogram2Output object */ inline tcHistogram2OutputPtr output () const; /** * Return the JetFinder */ inline tcJetFinderPtr jetFinder () const; /** * Return the event extractor */ inline tcEventExtractorPtr eventExtractor () const { return _eventExtractor; } protected: /** * Access the histogram for the given * observable. */ inline tHistogram2Ptr histogram (const string&); /** * Access the Histogram2Output object */ inline tHistogram2OutputPtr output (); /** * Return the last presented event */ inline tcEventPtr lastEvent () const; /** * Return the minimum over the presented * subprocess multiplicities. */ inline unsigned int minMult () const; /** * Return the maximum over the presented * subprocess multiplicities. */ inline unsigned int maxMult () const; /** * Access the JetFinder */ inline tJetFinderPtr jetFinder (); /** * Access the event extractor */ inline tEventExtractorPtr eventExtractor () { return _eventExtractor; } public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Transform the event to the desired Lorentz frame and return the * corresponding LorentzRotation. * @param event a pointer to the Event to be transformed. * @return the LorentzRotation used in the transformation. */ virtual LorentzRotation transform(tEventPtr event) const; /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). public: /** * Finalize the analysis. Called by dofinish. * Dumps the histograms to h2 files for later recovery. */ inline void finalize (); protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ inline virtual void dofinish(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ inline virtual void rebind(const TranslationMap & trans) throw(RebindException); /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ inline virtual IVector getReferences(); //@} private: /** * The output used for histograms */ Histogram2OutputPtr _output; /** * The observables mapped by their name. */ map _histograms; /** * The observables mapped to their output * options. */ map _outputOptions; /** * Observables mapped to data channels */ map _datachannels; /** * Observables mapped to normalisation mode */ map _normalisation; /** * Wether we should book a channel per * hard subprocess multiplitiplicity. */ bool _bookPerSubprocess; /** * The last presented events. */ tcEventPtr _lastEvent; /** * The minimum multiplicity of the * hard processes presented. */ unsigned int _minMult; /** * The maximum multiplicity of the * hard processes presented. */ unsigned int _maxMult; /** * Wether or not we're part of a parallel run. */ bool _parallel; /** * The jet finder to be used */ JetFinderPtr _jetFinder; /** * The event extractor to be used */ EventExtractorPtr _eventExtractor; /** * Backup parallel flag */ bool _backParallel; /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription initAnalysis2Base; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Analysis2Base & operator=(const Analysis2Base &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Analysis2Base. */ template <> struct BaseClassTrait { /** Typedef of the first base class of Analysis2Base. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the Analysis2Base class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Analysis2::Analysis2Base"; } /** * The name of a file containing the dynamic library where the class * Analysis2Base is implemented. It may also include several, space-separated, * libraries if the class Analysis2Base depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "Analysis2.so"; } }; /** @endcond */ } #include "Analysis2Base.icc" #ifndef ThePEG_TEMPLATES_IN_CC_FILE // #include "Analysis2Base.tcc" #endif #endif /* Analysis2_Analysis2Base_H */ herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/FourJetCorrelations.fh0000644000175000017500000000055311754474774026376 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the FourJetCorrelations class. // #ifndef HERWIG_FourJetCorrelations_FH #define HERWIG_FourJetCorrelations_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class FourJetCorrelations; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::FourJetCorrelations,FourJetCorrelationsPtr); } #endif herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/FourJetCorrelations.h0000644000175000017500000001252311754474774026230 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #ifndef HERWIG_FourJetCorrelations_H #define HERWIG_FourJetCorrelations_H // // This is the declaration of the FourJetCorrelations class. // #include "Analysis2Base.h" #include "FourJetCorrelations.fh" namespace Analysis2 { using namespace ThePEG; /**\ingroup Analysis2 * * Four jet correlations at e+e- colliders (preferably LEP) * * @see \ref FourJetCorrelationsInterfaces "The interfaces" * defined for FourJetCorrelations. */ class FourJetCorrelations: public Analysis2::Analysis2Base { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline FourJetCorrelations(); /** * The destructor. */ virtual ~FourJetCorrelations(); //@} public: /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); 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. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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() throw(InitException); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} protected: /** * Methods to compute the four jet angles, assumes the jets are energy ordered */ //@{ /** * Compute \f$\cos\chi_{BZ}\f$ */ inline double cosChiBZ(const vector&); /** * Compute \f$\cos\Phi_{KSW}\f$. */ inline double cosPhiKSW(const vector&); /** * Compute \f$\cos\Theta_{NR}\f$ */ inline double cosThetaNR(const vector&); /** * Compute \f$\cos\alpha_{34}\f$ */ inline double cosAlpha34(const vector&); //@} private: /** * Options string for CosAlpha34 */ string _cosAlpha34; /** * Options string for CosChiBZ */ string _cosChiBZ; /** * Options string for CosPhiKSW */ string _cosPhiKSW; /** * Options string for CosThetaNR */ string _cosThetaNR; /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initFourJetCorrelations; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FourJetCorrelations & operator=(const FourJetCorrelations &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FourJetCorrelations. */ template <> struct BaseClassTrait { /** Typedef of the first base class of FourJetCorrelations. */ typedef Analysis2::Analysis2Base NthBase; }; /** This template specialization informs ThePEG about the name of * the FourJetCorrelations class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Analysis2::FourJetCorrelations"; } /** * The name of a file containing the dynamic library where the class * FourJetCorrelations is implemented. It may also include several, space-separated, * libraries if the class FourJetCorrelations depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "Analysis2.so"; } }; /** @endcond */ } #include "FourJetCorrelations.icc" #ifndef ThePEG_TEMPLATES_IN_CC_FILE // #include "FourJetCorrelations.tcc" #endif #endif /* HERWIG_FourJetCorrelations_H */ herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Makefile.in0000644000175000017500000000000011756461505024132 0ustar sylvestresylvestreherwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/GnuplotOutput.cc0000644000175000017500000002663711754474774025307 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #include "GnuplotOutput.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "GnuplotOutput.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Analysis2; GnuplotOutput::~GnuplotOutput() {} void GnuplotOutput::persistentOutput(PersistentOStream & os) const { // *** ATTENTION *** os << ; // Add all member variable which should be written persistently here. os << _subproMult << _ratio << _chi2 << _gnuplot; } void GnuplotOutput::persistentInput(PersistentIStream & is, int) { // *** ATTENTION *** is >> ; // Add all member variable which should be read persistently here. is >> _subproMult >> _ratio >> _chi2 >> _gnuplot; } ClassDescription GnuplotOutput::initGnuplotOutput; // Definition of the static class description member. void GnuplotOutput::Init() { static ClassDocumentation documentation ("Histogram2 output to gnuplot"); static Parameter interfaceMultiplicityRange ("MultiplicityRange", "The range of hard jet multiplicities to plot seperatly", &GnuplotOutput::_subproMult, "", false, false); static Switch interfacePlotRatio ("Ratio", "Wether or not to include a ratio plot", &GnuplotOutput::_ratio, true, false, false); static SwitchOption interfacePlotRatioOn (interfacePlotRatio, "On", "Include a ratio plot, if available", true); static SwitchOption interfacePlotRatioOff (interfacePlotRatio, "Off", "Do not include a ratio plot", false); static Switch interfaceChi2Plot ("Chi2", "Wether or not include a chi^2 plot", &GnuplotOutput::_chi2, true, false, false); static SwitchOption interfaceChi2PlotOn (interfaceChi2Plot, "On", "Include a chi^2 plot, if available", true); static SwitchOption interfaceChi2PlotOff (interfaceChi2Plot, "Off", "Do not include a chi^2 plot", false); static Parameter interfaceGnuplot ("Gnuplot", "Location of the gnuplot program, e.g. /usr/bin/gnuplot", &GnuplotOutput::_gnuplot, "gnuplot", false, false); } void GnuplotOutput::put (Histogram2Ptr histo, const Histogram2Options& out, const string& datachannel) { if (!histo->haveChannel("MC")) return; // initialize to the histogram's name Histogram2Output::initialize(histo->name() + ".dat"); // open a gnuplot file ofstream gpfile ((prefix() + histo->name() + ".gp").c_str()); // get the multiplicity range istringstream mrange_in (_subproMult); pair mrange; mrange_in >> mrange.first >> mrange.second; bool havedata = (datachannel != ""); if (!histo->haveChannel(datachannel)) havedata = false; bool errorbars = (out.plotFlags & HistogramOutput::Errorbars) == HistogramOutput::Errorbars; bool xlog = (out.plotFlags & HistogramOutput::Xlog) == HistogramOutput::Xlog; bool ylog = (out.plotFlags & HistogramOutput::Ylog) == HistogramOutput::Ylog; string ratiochannel = ""; string chi2channel = ""; bool ratio = _ratio; bool chi2 = _chi2; if (!havedata) { ratio = false; chi2 = false; } else { // figure out the ratio and chi2 channel names vector allchannels = histo->channels(); for (vector::iterator ch = allchannels.begin(); ch != allchannels.end(); ++ch) { if ((*ch).find("delta") != string::npos && ratiochannel == "") ratiochannel = *ch; if ((*ch).find("chi2") != string::npos && chi2channel == "") chi2channel = *ch; } if (ratiochannel == "") { ratio = false; chi2 = false; } if (chi2channel == "") { chi2 = false; } } bool wantmult = (mrange.first != mrange.second); gpfile << "set terminal epslatex color;" << endl << "set output '" << histo->name() << ".eps';" << endl << "set size .6,1.1;" << endl << "set title '" << out.title << "';" << endl << "set lmargin .2;" << endl; if (ratio || chi2) gpfile << "set multiplot;" << endl; if (ratio && chi2) gpfile << "set origin 0,.35;" << endl << "set size .6,.75;" << endl; if (ratio && !chi2) gpfile << "set origin 0,.3;" << endl << "set size .6,.8;" << endl; if (xlog) gpfile << "set log x;" << endl; if (ylog) gpfile << "set log y;" << endl; gpfile << "set key samplen .7;" << endl << "set label 1 '{\\definecolor{Gray}{gray}{.5}\\textcolor{Gray}{\\sffamily\\bfseries " << "MC" << "}}' at graph .14,.94 back;" << endl << "set label 2 '" << out.ylabel << "' at graph -.2,.8 rotate by 90 left front;" << endl; gpfile << "set label 3 '{\\definecolor{Gray}{gray}{.5}\\textcolor{Gray}{\\tiny\\sffamily " << "Analysis2 powered" << "}}' rotate by 90 at graph -.2,.4 left front;"; gpfile << "set bars small;" << endl; if (ratio || chi2) gpfile << "set format x \"\";" << endl; if (!ratio && !chi2) gpfile << "set xlabel '" << out.xlabel << "';" << endl; // main plot histo->output(currentOStream(),"MC"); currentOStream() << endl << endl; if (mctitle() != "") gpfile << "plot '" << histo->name() << ".dat' index 0 u (($1+$2)/2):3:($2-$1) " <<"title '" << mctitle() << "' w boxes lt rgbcolor \"#EFEF00\" fillstyle solid 0.5 noborder\\" << endl; else gpfile << "plot '" << histo->name() << ".dat' index 0 u (($1+$2)/2):3:($2-$1) " <<"notitle w boxes lt rgbcolor \"#EFEF00\" fillstyle solid 0.5 noborder\\" << endl; if (errorbars) gpfile << ", '" << histo->name() << ".dat' index 0 u (($1+$2)/2):3:($3-$4):($3+$4) " << "notitle w errorbars pt -1 lt -1 lc rgbcolor \"#A0A0A0\" lw 1\\" << endl; unsigned int currentindex = 0; if (wantmult) { vector > putthem; for (unsigned int i = mrange.first; i < mrange.second; ++i) { ostringstream multname; multname << "MC-" << i; ostringstream key; key << "$+" << (i-mrange.first) << "\\ {\\rm jet"; if (i-mrange.first != 1) key << "s"; key << "}$"; if (histo->haveChannel(multname.str())) { putthem.push_back(make_pair(multname.str(),key.str())); } else { } } // check for higher multiplicities and add them together ostringstream checkchannel; checkchannel << "MC-" << (mrange.second + 1); bool havehigher = histo->haveChannel(checkchannel.str()); if (!havehigher) { ostringstream multname; multname << "MC-" << mrange.second; ostringstream key; key << "$+" << (mrange.second-mrange.first) << "\\ {\\rm jets}$"; if (histo->haveChannel(multname.str())) putthem.push_back(make_pair(multname.str(),key.str())); } else { for(unsigned int i = mrange.second; i < 11; ++i) { ostringstream multname; multname << "MC-" << i; if (i==mrange.second) { histo->insertChannel("MC-largerthanmax",histo->channel(multname.str())); } else { if (histo->haveChannel(multname.str())) histo->channel("MC-largerthanmax") += histo->channel(multname.str()); } } ostringstream key; key << "$+ \\ge" << (mrange.second-mrange.first) << "\\ {\\rm jets}$"; putthem.push_back(make_pair("MC-largerthanmax",key.str())); } unsigned int count = 1; for (vector >::iterator ch = putthem.begin(); ch != putthem.end(); ++ch) { histo->output(currentOStream(),ch->first); currentOStream() << endl << endl; currentindex += 1; count += 1; gpfile << ", '" << histo->name() << ".dat' index " << currentindex << " u (($1+$2)/2):3 title '" << ch->second << "' w histeps lt " << count << " lc rgbcolor \"#000000\"\\" << endl; } } int dataindex = -1; if (havedata) { currentindex += 1; dataindex = currentindex; histo->output(currentOStream(),datachannel); currentOStream() << endl << endl; if (out.datatitle != "") gpfile << ", '" << histo->name() << ".dat' index " << currentindex << " u (($1+$2)/2):3:1:2:($3-$4):($3+$4) w xyerrorbars title '" << out.datatitle << "' lt -1 lw 2 pt 7\\" << endl; else gpfile << ", '" << histo->name() << ".dat' index " << currentindex << " u (($1+$2)/2):3:1:2:($3-$4):($3+$4) w xyerrorbars notitle" << " lt -1 lw 2 pt 7\\" << endl; } gpfile << ";" << endl; // ratio plot if (ratio) { bool havechi2 = (chi2channel != ""); double thechi2 = 0.; if (havechi2) { thechi2 = histo->channel(chi2channel).average(histo->binning()).first; } currentindex += 1; histo->output(currentOStream(),ratiochannel); currentOStream() << endl << endl; if (chi2) { gpfile << "set origin 0,.2;" << endl << "set size .6,.246;" << endl << "set yrange [-.2:.2];" << endl << "set ytics -.1,.1,.1;" << endl; } else { gpfile << "set origin 0,.0;" << endl << "set size .6,.397;" << endl << "set yrange [-.3:.3];" << endl << "set ytics -.2,.1,.2;" << endl; } if (ylog) gpfile << "unset log y;" << endl; gpfile << "unset title;" << endl; if (chi2) { gpfile << "set format x \"\";" << endl; } else { gpfile << "set format x;" << endl; gpfile << "set xlabel '" << out.xlabel << "';" << endl; } gpfile << "unset label 1;" << endl << "unset label 2;" << endl << "unset label 3;" << endl;; if (havechi2) { gpfile << "set label 1 '{\\tiny $\\chi^2/{\\rm DOF}=" << thechi2 << "$}' at graph .2,.87 left front;" << endl; } gpfile << "plot '" << histo->name() << ".dat' index " << dataindex << " u (($1+$2)/2):($4/$3):($2-$1) notitle w boxes lt rgbcolor \"#00EF40\" fillstyle solid 0.5 noborder, \\" << endl << "'" << histo->name() << ".dat' index " << dataindex << " u (($1+$2)/2):(-$4/$3):($2-$1) notitle w boxes lt rgbcolor \"#00EF40\" fillstyle solid 0.5 noborder,\\" << endl << "'" << histo->name() << ".dat' index 0 u (($1+$2)/2):(0):1:2 notitle w xerrorbars" << " pt -1 lt -1 lc rgbcolor \"#A0A0A0\" lw 1\\" << endl; if (errorbars) { gpfile << ", '" << histo->name() << ".dat' index 0 u (($1+$2)/2):($4/$3) notitle" << " w histeps lt 3 lc rgbcolor \"#000000\", \\" << endl << "'" << histo->name() << ".dat' index 0 u (($1+$2)/2):(-$4/$3) notitle" << " w histeps lt 3 lc rgbcolor \"#000000\"\\" << endl; } gpfile << ", '" << histo->name() << ".dat' index " << currentindex << " u (($1+$2)/2):3 notitle w histeps lt -1 lc rgbcolor \"#000000\";" << endl; } // chi2 plot if (chi2) { currentindex += 1; histo->output(currentOStream(),chi2channel); currentOStream() << endl << endl; gpfile << "set origin 0,0;" << endl << "set size .6,.296;" << endl << "set format x;" << endl << "unset label 1;" << endl << "set xlabel '" << out.xlabel << "';" << endl << "set yrange [0:10];" << endl << "set ytics 0,4,8;" << endl << "plot '" << histo->name() << ".dat' index " << currentindex << " u (($1+$2)/2):3:($2-$1) notitle w boxes lt rgbcolor \"#A0A0A0\" fillstyle solid 0.8 noborder;" << endl; } gpfile << "reset;" << endl; if (ratio || chi2) gpfile << "unset multiplot;" << endl << "reset;" << endl; _allHistos += 1; _TeXfile << "\\input{" << histo->name() << "}"; if (_allHistos % 2 == 0) _TeXfile << endl << endl; else _TeXfile << "\\hfill"; _makefile << "\t" << _gnuplot << " " << histo->name() << ".gp" << endl; } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Analysis2Base.icc0000644000175000017500000000732511754474774025240 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #include "ThePEG/Utilities/Rebinder.h" namespace Analysis2 { inline Analysis2Base::Analysis2Base() : _output(Histogram2OutputPtr()), _histograms(map()), _outputOptions(map()), _datachannels(map()), _normalisation(map()), _bookPerSubprocess(false), _lastEvent(tcEventPtr()), _minMult(0), _maxMult(0), _parallel(false), _jetFinder(JetFinderPtr()), _eventExtractor() {} inline void Analysis2Base::insertObservable (const string& name, Histogram2Ptr histo, const Histogram2Options& options) { // overwrite the histogram, but do not change any options // to properly handle parallel runs _histograms[name] = histo; _outputOptions.insert(make_pair(name,options)); histo->setName(name); if (!histo->haveChannel("MC")) histo->insertChannel("MC",HistogramChannel(histo->numberOfBins())); } inline void Analysis2Base::insertObservable (const string& name, const string& dataName, const string& dataFile, const Histogram2Options& options) { _histograms.insert(make_pair(name,new_ptr(Histogram2(dataFile,dataName)))); _outputOptions.insert(make_pair(name,options)); _datachannels.insert(make_pair(name,dataName)); _histograms.find(name)->second->setName(name); _histograms.find(name)->second->insertChannel("MC"); } inline tcHistogram2Ptr Analysis2Base::histogram (const string& name) const { map::const_iterator h = _histograms.find(name); if (h != _histograms.end()) return h->second; return tcHistogram2Ptr(); } inline tcHistogram2OutputPtr Analysis2Base::output () const { return _output; } inline tHistogram2Ptr Analysis2Base::histogram (const string& name) { map::iterator h = _histograms.find(name); if (h != _histograms.end()) return h->second; return tHistogram2Ptr(); } inline tHistogram2OutputPtr Analysis2Base::output () { return _output; } inline tcJetFinderPtr Analysis2Base::jetFinder () const { return _jetFinder; } inline tJetFinderPtr Analysis2Base::jetFinder () { return _jetFinder; } inline tcEventPtr Analysis2Base::lastEvent () const { return _lastEvent; } inline unsigned int Analysis2Base::minMult () const { return _minMult; } inline unsigned int Analysis2Base::maxMult () const { return _maxMult; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). inline void Analysis2Base::finalize() { for(map::iterator h = _histograms.begin(); h != _histograms.end(); ++h) { h->second->xSec(generator()->currentEventHandler()->histogramScale()); h->second->store(h->first); } } inline void Analysis2Base::dofinish() { AnalysisHandler::dofinish(); finalize(); } inline void Analysis2Base::rebind(const TranslationMap & trans) throw(RebindException) { // dummy = trans.translate(dummy); for(map::iterator h = _histograms.begin(); h != _histograms.end(); ++h) h->second = trans.translate(h->second); AnalysisHandler::rebind(trans); } inline IVector Analysis2Base::getReferences() { IVector ret = AnalysisHandler::getReferences(); // ret.push_back(dummy); for(map::iterator h = _histograms.begin(); h != _histograms.end(); ++h) ret.push_back(h->second); return ret; } inline string Analysis2Base::startCombine (string) { doinit (); _output->initialize (); _backParallel = _parallel; _parallel = false; return ""; } inline string Analysis2Base::finishCombine (string) { _output->finalize(); _parallel = _backParallel; return ""; } } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/KtJetFinder.icc0000644000175000017500000000373211754474774024747 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de namespace Analysis2 { inline KtJetFinder::KtJetFinder() : _collisionType(1), _distanceScheme(1), _recombinationScheme(1), _lastKtEvent () {} inline KtJetFinder::KtJetFinder(const KtJetFinder & x) : JetFinder(x), _collisionType(x._collisionType), _distanceScheme(x._distanceScheme), _recombinationScheme(x._recombinationScheme), _lastKtEvent () {} inline IBPtr KtJetFinder::clone() const { return new_ptr(*this); } inline IBPtr KtJetFinder::fullclone() const { return new_ptr(*this); } inline void KtJetFinder::findJets () { convert(_lastKtEvent->getJets()); } inline void KtJetFinder::findJetsN (unsigned int nJets) { int inJets = (int)nJets; _lastKtEvent->findJetsN(inJets); convert(_lastKtEvent->getJets()); } inline void KtJetFinder::findJetsD () { _lastKtEvent->findJetsD(sqr(dCut()/GeV)); convert(_lastKtEvent->getJets()); } inline void KtJetFinder::findJetsY (double y) { if (y < 0.) _lastKtEvent->findJetsY(yCut()); else _lastKtEvent->findJetsY(y); convert(_lastKtEvent->getJets()); } inline Energy KtJetFinder::getDMerge (unsigned int nJets) const { int inJets = (int)nJets; return sqrt(_lastKtEvent->getDMerge(inJets))*GeV; } inline double KtJetFinder::getYMerge (unsigned int nJets) const { int inJets = (int)nJets; return _lastKtEvent->getYMerge(inJets); } inline int KtJetFinder::collisionType () const { return _collisionType; } inline int KtJetFinder::distanceScheme () const { return _distanceScheme; } inline int KtJetFinder::recombinationScheme () const { return _recombinationScheme; } inline const vector& KtJetFinder::lastMomenta () const { return _lastMomenta; } inline const KtJet::KtEvent& KtJetFinder::lastKtEvent () const { return *_lastKtEvent; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/EventShapes2.fh0000644000175000017500000000051511754474774024740 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the EventShapes2 class. // #ifndef Analysis2_EventShapes2_FH #define Analysis2_EventShapes2_FH #include "ThePEG/Config/Pointers.h" namespace Analysis2 { class EventShapes2; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Analysis2::EventShapes2,EventShapes2Ptr); } #endif herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/FastJetFinder.fh0000644000175000017500000000052311754474774025120 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the FastJetFinder class. // #ifndef Analysis2_FastJetFinder_FH #define Analysis2_FastJetFinder_FH #include "ThePEG/Config/Pointers.h" namespace Analysis2 { class FastJetFinder; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Analysis2::FastJetFinder,FastJetFinderPtr); } #endif herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/FastJetFinder.h0000644000175000017500000001525311754474774024760 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #ifndef Analysis2_FastJetFinder_H #define Analysis2_FastJetFinder_H // // This is the declaration of the FastJetFinder class. // #include "JetFinder.h" #include "FastJetFinder.fh" #include "fastjet/JetDefinition.hh" #include "fastjet/PseudoJet.hh" #include "fastjet/ClusterSequence.hh" #include namespace Analysis2 { using namespace ThePEG; /**\ingroup Analysis2 * * A jet finder using the FastJetFinder library. * See the FastJet * homepage for details. * * @author Simon Plaetzer * * @see \ref FastJetFinderInterfaces "The interfaces" * defined for FastJetFinder. */ class FastJetFinder: public JetFinder { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline FastJetFinder(); /** * The copy constructor */ inline FastJetFinder (const FastJetFinder&); /** * The destructor. */ virtual ~FastJetFinder(); //@} public: /** * Set the event to be analysed. */ virtual void use (const vector&,bool); /**@name Jet finding */ //@{ /** * Do inclusive jet finding */ virtual inline void findJets (); /** * Do exclusive jet-finding for nJets jets */ virtual inline void findJetsN (unsigned int nJets); /** * Do jet-finding up to the resolution scale */ virtual inline void findJetsD (); /** * Do exclusive jet-finding up to dimensionless resolution */ virtual inline void findJetsY (double y = -1.); /** * Resolution scale where n+1 jets merged to n */ virtual inline Energy getDMerge (unsigned int nJets) const; /** * Dimensionless scale where n+1 jets merged to n */ virtual inline double getYMerge (unsigned int nJets) const; //@} public: /**@name FastJet options */ //@{ /** * Get the jet finder */ inline int jetFinder () const; /** * Get the recombination scheme */ inline int recombinationScheme () const; /** * Get the startegy */ inline int strategy () const; /** * Get the jet definition */ inline const fastjet::JetDefinition& jetDefintion () const; //@} protected: /** * Convert event to FastJet pseudojet vector */ void convert (); /** * Convert pseudojet vector to vector of Lorentz5Momenta */ void convert (const vector&); /** * Perform clustering */ void cluster (); /** * Return the vector of pseudojets from * given event. */ inline const vector& lastPseudojets () const; /** * Return the last cluster sequence obtained. */ inline const fastjet::ClusterSequence& lastClusterSequence () 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ inline virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ inline virtual void dofinish(); //@} private: /** * The jet finder */ int _jetFinder; /** * The strategy used for jet finding */ int _strategy; /** * The recombination scheme */ int _recombinationScheme; /** * The last pseudojet vector */ vector _lastPseudojets; /** * The last obtained cluster sequence. */ std::auto_ptr _lastClusterSequence; /** * The fastjet::JetDefinition to be used */ fastjet::JetDefinition _jetDefinition; /** * The visible energy squared as obtained by * squaring the sum of final state momenta. */ Energy2 _E2vis; /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initFastJetFinder; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FastJetFinder & operator=(const FastJetFinder &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FastJetFinder. */ template <> struct BaseClassTrait { /** Typedef of the first base class of FastJetFinder. */ typedef Analysis2::JetFinder NthBase; }; /** This template specialization informs ThePEG about the name of * the FastJetFinder class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Analysis2::FastJetFinder"; } /** * The name of a file containing the dynamic library where the class * FastJetFinder is implemented. It may also include several, space-separated, * libraries if the class FastJetFinder depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "FastJetFinder.so Analysis2.so"; } }; /** @endcond */ } #include "FastJetFinder.icc" #ifndef ThePEG_TEMPLATES_IN_CC_FILE // #include "FastJetFinder.tcc" #endif #endif /* Analysis2_FastJetFinder_H */ herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/YJetRates.cc0000644000175000017500000000674311754474774024304 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #include "YJetRates.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Command.h" #include "ThePEG/Utilities/StringUtils.h" #include "ThePEG/Utilities/Throw.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "YJetRates.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Analysis2; YJetRates::~YJetRates() {} void YJetRates::persistentOutput(PersistentOStream & os) const { // *** ATTENTION *** os << ; // Add all member variable which should be written persistently here. os << _nMax << _options << _yn; } void YJetRates::persistentInput(PersistentIStream & is, int) { // *** ATTENTION *** is >> ; // Add all member variable which should be read persistently here. is >> _nMax >> _options >> _yn; } ClassDescription YJetRates::initYJetRates; // Definition of the static class description member. void YJetRates::Init() { static ClassDocumentation documentation ("Analysis for jet rates"); static Parameter interfaceNMax ("NMax", "Maximum n up to which y(n,n+1) should be booked", &YJetRates::_nMax, 5, 2, 0, false, false, Interface::lowerlim); static Command interfaceY ("R", "Insert options for given n.", &YJetRates::R, false); } string YJetRates::R (string in) { istringstream m (StringUtils::car(in)); unsigned int mult; m >> mult; if (mult < 2 || mult > _nMax) { Throw () << "YJetRates : n must be between 2 and nMax"; } if (_options.size() < _nMax+1) { _options.resize(_nMax+1,""); } _options[mult] = StringUtils::cdr(in); return ""; } void YJetRates::doinit() throw(InitException) { Analysis2Base::doinit(); _yn.clear(); if (!jetFinder()) Throw() << "YJetRates : No JetFinder has been set, giving up."; if (_options.size() < 3) Throw() << "YJetRates : Need at least options for R_2"; if (_options.size() < _nMax+1) Throw() << "YJetRates : It seems that no options where set."; int plotFlags = HistogramOutput::Frame | HistogramOutput::Errorbars; Histogram2Options options (plotFlags); options.differential = false; _yn.resize(_nMax+1,""); for (unsigned int i=2; i<=_nMax; ++i) { ostringstream name(""); name << "R_" << i; _yn[i] = name.str(); insert(name.str(),_options[i],options); } } void YJetRates::analyze(const tPVector &) { pair,double> ev; while (*eventExtractor() >> ev) { jetFinder()->use(ev.first); vector mergings (_nMax+1,0.); for (unsigned int i=2; i<=_nMax; ++i) mergings[i] = jetFinder()->getYMerge(i); tcHistogram2Ptr refhisto = histogram(_yn[2]); assert(refhisto); _sumWeights += ev.second; for (vector >::const_iterator b = refhisto->binning().begin(); b != refhisto->binning().end(); ++b) { double y = (b->first+b->second)/2.; unsigned int mult = _nMax; while (mult > 1) { if (mergings[mult] > y) break; --mult; } if (++mult > _nMax) continue; book(y,_yn[mult],ev.second); } } } void YJetRates::dofinish() { for (unsigned int i =2; i<=_nMax; ++i) { histogram(_yn[i])->rescale(1./_sumWeights); finish(_yn[i]); } Analysis2Base::dofinish(); } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Analysis2Base.cc0000644000175000017500000003475611754474774025077 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #include "Analysis2Base.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/Repository.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Command.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "Analysis2Base.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/EventRecord/SubProcess.h" #include "ThePEG/Utilities/StringUtils.h" #include using namespace Analysis2; Analysis2Base::~Analysis2Base() {} void Analysis2Base::analyze(tEventPtr event, long ieve, int loop, int state) { _lastEvent = event; if (_minMult == 0) _minMult = _lastEvent->primarySubProcess()->outgoing().size(); else if (_lastEvent->primarySubProcess()->outgoing().size() < _minMult) _minMult = _lastEvent->primarySubProcess()->outgoing().size(); if (_maxMult == 0) _maxMult = _lastEvent->primarySubProcess()->outgoing().size(); else if (_lastEvent->primarySubProcess()->outgoing().size() > _maxMult) _maxMult = _lastEvent->primarySubProcess()->outgoing().size(); _eventExtractor->use(event); AnalysisHandler::analyze(event, ieve, loop, state); } LorentzRotation Analysis2Base::transform(tEventPtr) const { return LorentzRotation(); // Return the Rotation to the frame in which you want to perform the analysis. } void Analysis2Base::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void Analysis2Base::analyze(tPPtr) {} void Analysis2Base::persistentOutput(PersistentOStream & os) const { // *** ATTENTION *** os << ; // Add all member variable which should be written persistently here. os << _output << _histograms << _outputOptions << _datachannels << _normalisation << _bookPerSubprocess << _lastEvent << _minMult << _maxMult << _parallel << _jetFinder << _eventExtractor; } void Analysis2Base::persistentInput(PersistentIStream & is, int) { // *** ATTENTION *** is >> ; // Add all member variable which should be read persistently here. is >> _output >> _histograms >> _outputOptions >> _datachannels >> _normalisation >> _bookPerSubprocess >> _lastEvent >> _minMult >> _maxMult >> _parallel >> _jetFinder >> _eventExtractor; } AbstractClassDescription Analysis2Base::initAnalysis2Base; // Definition of the static class description member. void Analysis2Base::Init() { static ClassDocumentation documentation ("Analysis2Base is the base class for all analysis handlers" " used by Analysis2"); static Reference interfaceHistogramOutput ("HistogramOutput", "Set the HistogramOutput object", &Analysis2Base::_output, false, false, true, false, false); static Reference interfaceJetFinder ("JetFinder", "Set the JetFinder object", &Analysis2Base::_jetFinder, false, false, true, true, false); static Reference interfaceEventExtractor ("EventExtractor", "Set the EventExtractor object", &Analysis2Base::_eventExtractor, false, false, true, true, false); static Switch interfaceBookPerSubprocess ("BookPerSubprocess", "Book events per subprocess multiplicity", &Analysis2Base::_bookPerSubprocess, false, false, false); static SwitchOption interfaceBookPerSubprocessOn (interfaceBookPerSubprocess, "Yes", "Book per subprocess multiplicity", true); static SwitchOption interfaceBookPerSubprocessOff (interfaceBookPerSubprocess, "No", "Do not book per subprocess multiplicity", false); static Switch interfaceParallel ("Parallel", "Wether or not his analysis is carried out as part of a parallel run.", &Analysis2Base::_parallel, false, false, false); static SwitchOption interfaceParallelOn (interfaceParallel, "Yes", "This analysis is carried out on part of a parallel run.", true); static SwitchOption interfaceParallelOff (interfaceParallel, "No", "This analysis is carried out on a serial run", false); static Command interfaceStartCombine ("StartCombine", "Start combining parallel runs", &Analysis2Base::startCombine, false); static Command interfaceCombine ("Combine", "Combine parallel runs", &Analysis2Base::combine, false); static Command interfaceFinishCombine ("FinishCombine", "Finish combining parallel runs", &Analysis2Base::finishCombine, false); } void Analysis2Base::insert (const string& name, const string& instring, Histogram2Options& options) { string theinstring = StringUtils::stripws(instring); string error = "Analysis2Base::insert : warning : " + instring + " is not a valid options tag.\nNo events for the observable " + name + " will be booked.\n"; if (instring.find(" attributes = StringUtils::xmlAttributes("options",theinstring); if (attributes.find("title") != attributes.end()) options.title = attributes.find("title")->second; else options.title = ""; if (attributes.find("xlabel") != attributes.end()) options.xlabel = attributes.find("xlabel")->second; else options.xlabel = ""; if (attributes.find("ylabel") != attributes.end()) options.ylabel = attributes.find("ylabel")->second; else options.ylabel = ""; string norm = ""; if (attributes.find("norm") != attributes.end()) norm = attributes.find("norm")->second; int normMode = NormaliseToXSec; if (norm == "none") normMode = NoNormalisation; else if (norm == "unity") normMode = NormaliseToUnity; else if (norm == "xsec") normMode = NormaliseToXSec; else if (norm == "data") normMode = NormaliseToData; else { Repository::clog() << error; return; } string dataname = ""; string datafile = ""; string blow = ""; string bhigh = ""; string nbins = ""; if (attributes.find("datafile") != attributes.end()) datafile = attributes.find("datafile")->second; if (attributes.find("dataname") != attributes.end()) { dataname = attributes.find("dataname")->second; } if (attributes.find("lowerbound") != attributes.end()) blow = attributes.find("lowerbound")->second; if (attributes.find("upperbound") != attributes.end()) bhigh = attributes.find("upperbound")->second; if (attributes.find("numbins") != attributes.end()) nbins = attributes.find("numbins")->second; bool fromdata = true; if (blow != "" && bhigh != "" && nbins != "") { fromdata=false; if (datafile != "" || dataname != "") { Repository::clog() << error; return; } } if (fromdata && datafile == "") { Repository::clog() << error; return; } bool log = false; if (attributes.find("log") != attributes.end()) if (attributes.find("log")->second == "true") log = true; if (!fromdata) { istringstream inblow (blow); istringstream inbhigh (bhigh); istringstream innbins (nbins); double binlower; inblow >> binlower; double binhigher; inbhigh >> binhigher; unsigned int numbins; innbins >> numbins; if (binhigher <= binlower || numbins <= 0) { Repository::clog() << error; return; } if (!log) insertObservable(name,new_ptr(Histogram2(binlower,binhigher,numbins,"MC")),options); else { if (binlower == 0) { Repository::clog() << error; return; } double c = log10(binhigher/binlower)/numbins; vector > binning; double bi = binlower; for(unsigned int i = 0; i< numbins; ++i) { binning.push_back(make_pair(bi*pow(10.,c*i),bi*pow(10.,c*(i+1)))); } insertObservable(name,new_ptr(Histogram2(binning,"MC")),options); } } else { options.datatitle = dataname; insertObservable(name,dataname,datafile,options); } _normalisation.insert(make_pair(name,normMode)); } void Analysis2Base::book (double evt, const string& name, double weight) { map::iterator h = _histograms.find(name); if (h != _histograms.end()) { assert(h->second); assert(lastEvent()); if (!_bookPerSubprocess) { h->second->book("MC",evt,weight); } else { // figure out the final state multiplicity unsigned int mult = lastEvent()->primarySubProcess()->outgoing().size(); ostringstream chName; chName << "MC-" << mult; if (!h->second->haveChannel(chName.str())) { // insert the channel h->second->insertChannel(chName.str(),HistogramChannel(h->second->numberOfBins())); } h->second->book(chName.str(),evt,weight); } } } void Analysis2Base::finish (const string& name, int norm, bool combined) { Histogram2Ptr theHisto; if (_histograms.find(name) != _histograms.end()) { theHisto = _histograms.find(name)->second; } else { generator()->log() << "Analysis2Base::finish : could not finish " << name << " : No such observable." << endl; return; } string data = ""; if (_datachannels.find(name) != _datachannels.end()) data = _datachannels.find(name)->second; vector allchannels = theHisto->channels(); for (vector::iterator c = allchannels.begin(); c != allchannels.end(); ++c) if (*c != data) theHisto->finish(*c); // return here, if part of a parallel run if (_parallel) return; int normMode = NormaliseToXSec; if (norm == FromMap) { if (_normalisation.find(name) != _normalisation.end()) normMode = _normalisation.find(name)->second; } else { normMode = norm; } if (!combined) { theHisto->xSec(generator()->currentEventHandler()->histogramScale()); } if (_outputOptions[name].differential) for (vector::iterator c = allchannels.begin(); c != allchannels.end(); ++c) if (*c != data) theHisto->differential(*c); // normalize if (!_bookPerSubprocess) { if (theHisto->haveChannel("MC") && normMode != NoNormalisation) { if (normMode == NormaliseToData && !theHisto->haveChannel(data)) normMode = NormaliseToXSec; switch (normMode) { case NormaliseToUnity: theHisto->normalise("MC"); break; case NormaliseToXSec: theHisto->normaliseToCrossSection("MC"); break; case NormaliseToData: theHisto->normalise("MC",data); break; } } } else { // booking per subprocess // sum up the channels HistogramChannel sum (theHisto->numberOfBins()); for (unsigned int i = minMult(); i<= maxMult(); ++i) { ostringstream chName; chName << "MC-" << i; sum += theHisto->channel(chName.str()); } theHisto->removeChannel("MC"); theHisto->insertChannel("MC", sum); // normalize // booking per subprocess needs to know the normalisation factor if (normMode != NoNormalisation) { pair fromIntegral; pair toIntegral; fromIntegral = theHisto->integrate("MC"); if (normMode == NormaliseToData && !theHisto->haveChannel(data)) normMode = NormaliseToXSec; switch (normMode) { case NormaliseToUnity: toIntegral = make_pair(1.,0.); break; case NormaliseToXSec: toIntegral = make_pair(generator()->currentEventHandler()->histogramScale()/nanobarn,0.); break; case NormaliseToData: toIntegral = theHisto->integrate(data); break; } theHisto->channel("MC") /= fromIntegral; theHisto->channel("MC") *= toIntegral; for (unsigned int i = minMult(); i<= maxMult(); ++i) { ostringstream chName; chName << "MC-" << i; theHisto->channel(chName.str()) /= fromIntegral; theHisto->channel(chName.str()) *= toIntegral; } } } // compute statistical tests, if data present if (theHisto->haveChannel("MC") && theHisto->haveChannel(data)) { // ratio theHisto->insertChannel("delta (MC,"+data+")",theHisto->channel("MC").delta(theHisto->channel(data))); // chi2 theHisto->insertChannel("chi2 (MC,"+data+")",theHisto->channel("MC").chi2(theHisto->channel(data))); if (!combined) generator()->log() << name << " : chi2/DOF (MC,"+data+") = " << theHisto->channel("chi2 (MC,"+data+")").average(theHisto->binning()).first << endl; else Repository::clog() << name << " : chi2/DOF (MC,"+data+") = " << theHisto->channel("chi2 (MC,"+data+")").average(theHisto->binning()).first << endl; } // output to plot file if (_outputOptions.find(name) == _outputOptions.end()) output()->put(theHisto,Histogram2Options(),data); else output()->put(theHisto,_outputOptions.find(name)->second,data); } void Analysis2Base::combineObservable (const string& prefix, const string& name, unsigned int numRuns, int norm) { int normMode = NormaliseToXSec; if (norm == -1) { if (_normalisation.find(name) != _normalisation.end()) normMode = _normalisation.find(name)->second; } string dataChannel = ""; if(_datachannels.find(name) != _datachannels.end()) dataChannel = _datachannels.find(name)->second; Histogram2Ptr sum = new_ptr(Histogram2()); sum->combine(prefix,name,numRuns,dataChannel,"MC"); insertObservable(name,sum); finish(name,normMode,true); _histograms.find(name)->second->store(name); } string Analysis2Base::combine (string argstring) { string usage = "Combine [run prefix] [number of runs] [observable name] \\\n" " {normalization mode : none, unity, xsec, data}"; StringUtils::StringVector args = StringUtils::split(argstring," "); if (args.size() < 3) return usage; string prefix = args[0]; Repository::clog() << prefix << endl; istringstream nrunin (args[1]); unsigned int nruns; nrunin >> nruns; string name = args[2]; int normMode = FromMap; if (args.size() == 4) { if (args[3] == "none") normMode = NoNormalisation; else if (args[3] == "unity") normMode = NormaliseToUnity; else if (args[3] == "xsec") normMode = NormaliseToXSec; else if (args[3] == "data") normMode = NormaliseToData; else normMode = FromMap; } if (name == "*") { for (map::iterator obs = _histograms.begin(); obs != _histograms.end(); ++obs) combineObservable(prefix,obs->first,nruns,normMode); } else combineObservable(prefix,name,nruns,normMode); return ""; } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/JetFinder.fh0000644000175000017500000000047311754474774024306 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the JetFinder class. // #ifndef Analysis2_JetFinder_FH #define Analysis2_JetFinder_FH #include "ThePEG/Config/Pointers.h" namespace Analysis2 { class JetFinder; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Analysis2::JetFinder,JetFinderPtr); } #endif herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/JetFinder.cc0000644000175000017500000000327111754474774024275 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #include "JetFinder.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "JetFinder.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Analysis2; JetFinder::~JetFinder() {} void JetFinder::persistentOutput(PersistentOStream & os) const { // *** ATTENTION *** os << ; // Add all member variable which should be written persistently here. os << ounit(_dCut,GeV) << _yCut << _R; } void JetFinder::persistentInput(PersistentIStream & is, int) { // *** ATTENTION *** is >> ; // Add all member variable which should be read persistently here. is >> iunit(_dCut,GeV) >> _yCut >> _R; } AbstractClassDescription JetFinder::initJetFinder; // Definition of the static class description member. void JetFinder::Init() { static ClassDocumentation documentation ("JetFinder is the base class for all jet finders " "used by the Analysis2 analysis code."); static Parameter interfacedCut ("dCut", "Set the dimensionful resolution parameter", &JetFinder::_dCut, GeV, 10.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); static Parameter interfaceyCut ("yCut", "Set the dimensionless resolution parameter", &JetFinder::_yCut, 0.1, 0.0, 1.0, false, false, Interface::limited); static Parameter interfaceR ("R", "Set the optional cone radius.", &JetFinder::_R, 0.7, 0.0, 0, false, false, Interface::lowerlim); } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/EventShapes2.icc0000644000175000017500000001317411754474774025106 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de // Copyright (C) 2002-2007 The Herwig Collaboration namespace Analysis2 { inline EventShapes2::EventShapes2() : _omthr(""), _maj(""), _min(""), _obl(""), _sph(""), _apl(""), _pla(""), _c(""), _d(""), _mhi(""), _mlo(""), _mdiff(""), _bmax(""), _bmin(""), _bsum(""), _bdiff("") {} inline IBPtr EventShapes2::clone() const { return new_ptr(*this); } inline IBPtr EventShapes2::fullclone() const { return new_ptr(*this); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). inline double EventShapes2::thrust() { checkThrust(); return _thrust[0]; } inline double EventShapes2::thrustMajor() { checkThrust(); return _thrust[1]; } inline double EventShapes2::thrustMinor() { checkThrust(); return _thrust[2]; } inline double EventShapes2::oblateness() { checkThrust(); return _thrust[1]-_thrust[2]; } inline Axis EventShapes2::thrustAxis() { checkThrust(); return _thrustAxis[0]; } inline Axis EventShapes2::majorAxis() { checkThrust(); return _thrustAxis[1]; } inline Axis EventShapes2::minorAxis() { checkThrust(); return _thrustAxis[2]; } inline void EventShapes2::reset(const vector &part) { _pv = part; _thrustDone = false; _spherDone = false; _linTenDone = false; _hemDone = false; _useCmBoost = false; } inline double EventShapes2::sphericity() { checkSphericity(); return 3./2.*(_spher[1]+_spher[2]); } inline double EventShapes2::aplanarity() { checkSphericity(); return 3./2.*_spher[2]; } inline double EventShapes2::planarity() { checkSphericity(); return _spher[1]-_spher[2]; } inline Axis EventShapes2::sphericityAxis() { checkSphericity(); return _spherAxis[0]; } inline vector EventShapes2::sphericityEigenValues() { checkSphericity(); return _spher; } inline vector EventShapes2::sphericityEigenVectors() { checkSphericity(); return _spherAxis; } inline vector EventShapes2::linTenEigenValues() { checkLinTen(); return _linTen; } inline vector EventShapes2::linTenEigenVectors() { checkLinTen(); return _linTenAxis; } inline double EventShapes2::CParameter() { checkLinTen(); return 3.*(_linTen[0]*_linTen[1]+_linTen[1]*_linTen[2] +_linTen[2]*_linTen[0]); } inline double EventShapes2::DParameter() { checkLinTen(); return 27.*(_linTen[0]*_linTen[1]*_linTen[2]); } inline double EventShapes2::Mhigh2() { checkHemispheres(); return _mPlus; } inline double EventShapes2::Mlow2() { checkHemispheres(); return _mMinus; } inline double EventShapes2::Mdiff2() { checkHemispheres(); return _mPlus-_mMinus; } inline double EventShapes2::Bmax() { checkHemispheres(); return _bPlus; } inline double EventShapes2::Bmin() { checkHemispheres(); return _bMinus; } inline double EventShapes2::Bsum() { checkHemispheres(); return _bPlus+_bMinus; } inline double EventShapes2::Bdiff() { checkHemispheres(); return _bPlus-_bMinus; } inline void EventShapes2::checkLinTen() { if (!_linTenDone) { _linTenDone = true; diagonalizeTensors(true, _useCmBoost); } } inline void EventShapes2::checkSphericity() { if (!_spherDone) { _spherDone = true; diagonalizeTensors(false, _useCmBoost); } } inline void EventShapes2::checkThrust() { if (!_thrustDone) { _thrustDone = true; calculateThrust(); } } inline void EventShapes2::checkHemispheres() { if (!_hemDone) { _hemDone = true; calcHemisphereMasses(); } } inline void EventShapes2::calcHemisphereMasses() { Lorentz5Momentum pos, neg; Energy pden(0.*MeV),epos(0.*MeV),eneg(0.*MeV); for(unsigned int ix=0;ix<_pv.size();++ix) { if(_pv[ix].vect() * thrustAxis() > 0.*MeV) { pos += _pv[ix]; epos += _pv[ix].perp(thrustAxis()); } else { neg += _pv[ix]; eneg += _pv[ix].perp(thrustAxis()); } pden += _pv[ix].vect().mag(); } // denominator and masses Energy2 den(sqr(pos.e()+neg.e())); _mPlus = pos.m2()/den; _mMinus = neg.m2()/den; if (_mPlus < _mMinus) swap(_mPlus, _mMinus); // jet broadening _bPlus = 0.5*epos/pden; _bMinus = 0.5*eneg/pden; if (_bPlus < _bMinus) swap(_bPlus, _bMinus); } inline double EventShapes2::getX(const Lorentz5Momentum & p, const Energy & Ebeam) { return(Ebeam > 0*MeV ? double(p.vect().mag()/Ebeam) : -1.); } inline double EventShapes2::getXi(const Lorentz5Momentum & p, const Energy & Ebeam) { return((Ebeam > 0*MeV && p.vect().mag() > 0*MeV) ? log(Ebeam/p.vect().mag()) : -1.); } inline Energy EventShapes2::getPt(const Lorentz5Momentum & p) { return p.perp(); } inline double EventShapes2::getRapidity(const Lorentz5Momentum & p) { return (p.t() > p.z() ? p.rapidity() : 1e99); } inline Energy EventShapes2::ptInT(const Lorentz5Momentum & p) { checkThrust(); return p.vect()*_thrustAxis[1]; } inline Energy EventShapes2::ptOutT(const Lorentz5Momentum & p) { checkThrust(); return p.vect()*_thrustAxis[2]; } inline double EventShapes2::yT(const Lorentz5Momentum & p) { checkThrust(); return (p.t() > p.vect()*_thrustAxis[0] ? p.rapidity(_thrustAxis[0]) : 1e99); } inline Energy EventShapes2::ptInS(const Lorentz5Momentum & p) { checkSphericity(); return p.vect()*_spherAxis[1]; } inline Energy EventShapes2::ptOutS(const Lorentz5Momentum & p) { checkSphericity(); return p.vect()*_spherAxis[2]; } inline double EventShapes2::yS(const Lorentz5Momentum & p) { checkSphericity(); return (p.t() > p.vect()*_spherAxis[0] ? p.rapidity(_spherAxis[0]) : 1e99); } } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/EventShapes2.h0000644000175000017500000003344711754474774024604 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de // Copyright (C) 2002-2007 The Herwig Collaboration #ifndef Analysis2_EventShapes2_H #define Analysis2_EventShapes2_H // // This is the declaration of the EventShapes2 class. // #include "Analysis2Base.h" #include "ThePEG/Vectors/Lorentz5Vector.h" #include "ThePEG/Vectors/ThreeVector.h" #include "ThePEG/EventRecord/Particle.h" #include "EventShapes2.fh" namespace Analysis2 { using namespace ThePEG; /**\ingroup Analysis2 * * Class to analyse event shapes * * @see \ref EventShapes2Interfaces "The interfaces" * defined for EventShapes2. */ class EventShapes2: public Analysis2Base { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline EventShapes2(); /** * The destructor. */ virtual ~EventShapes2(); //@} public: /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); 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. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} protected: /** * Member to reset the particles to be considered */ inline void reset(const vector &part); /** * Member functions to return thrust related shapes */ //@{ /** * The thrust */ inline double thrust(); /** * The major */ inline double thrustMajor(); /** * The minor */ inline double thrustMinor(); /** * The oblateness */ inline double oblateness(); /** * The thrust axis */ inline Axis thrustAxis(); /** * The major axis */ inline Axis majorAxis(); /** * The minor axis */ inline Axis minorAxis(); //@} /** * Linear momentum tensor related event shapes */ //@{ /** * The C parameter */ inline double CParameter(); /** * The D parameter */ inline double DParameter(); /** * The eigenvalues in descending order */ inline vector linTenEigenValues(); /** * The eigenvectors in order of descending eigenvalue */ inline vector linTenEigenVectors(); //@} /** * Quadratic momentum tensor related variables */ //@{ /** * The sphericity */ inline double sphericity(); /** * The aplanarity */ inline double aplanarity(); /** * The planarity */ inline double planarity(); /** * The sphericity axis */ inline Axis sphericityAxis(); /** * The sphericity eigenvalues */ inline vector sphericityEigenValues(); /** * The sphericity eigenvectors */ inline vector sphericityEigenVectors(); //@} /** * Jet mass related event shapes */ //@{ /** * The high hemishpere mass squared divided by the visible energy squared */ inline double Mhigh2(); /** * The low hemishpere mass squared divided by the visible energy squared */ inline double Mlow2(); /** * The difference between the * hemishpere masses squared divided by the visible energy squared */ inline double Mdiff2(); //@} /** * Jet broadening related event shapes */ //@{ /** * The wide jet broadening */ inline double Bmax(); /** * The narrow jet broadening */ inline double Bmin(); /** * The sum of the jet broadenings */ inline double Bsum(); /** * The difference of the jet broadenings */ inline double Bdiff(); //@} /** * Single particle variables which do not depend on event shapes axes */ //@{ /** * Ratio of momentum to beam momentum */ inline double getX(const Lorentz5Momentum & p, const Energy & Ebeam); /** * The scaled momentum \f$\xi=-\log\left( p/E_{\rm beam}\right)\f$. */ inline double getXi(const Lorentz5Momentum & p, const Energy & Ebeam); /** * Transverse momentum with respect to the beam */ inline Energy getPt(const Lorentz5Momentum & p); /** * Rapidity with respect to the beam direction */ inline double getRapidity(const Lorentz5Momentum & p); //@} /** * Single particle variables related to one of the shape axis. */ //@{ /** * Transverse momentum with respect to the thrust axis in the event plane */ inline Energy ptInT(const Lorentz5Momentum & p); /** * Transverse momentum with respect to the thrust axis out of the event plane */ inline Energy ptOutT(const Lorentz5Momentum & p); /** * Rapidity with respect to the thrust axis */ inline double yT(const Lorentz5Momentum & p); /** * Transverse momentum with respect to the sphericity axis in the event plane */ inline Energy ptInS(const Lorentz5Momentum & p); /** * Transverse momentum with respect to the sphericity axis out of the event plane */ inline Energy ptOutS(const Lorentz5Momentum & p); /** * Rapidity with respect to the sphericity axis */ inline double yS(const Lorentz5Momentum & p); //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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() throw(InitException); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); private: /** * Check whether the initialization of a certain class of event shapes * has been calculated and if not do so */ //@{ /** * Check if thrust related variables have been calculated and if not do so */ inline void checkThrust(); /** * Check if the linear tensor related variables have been calculated and if not do so */ inline void checkLinTen(); /** * Check if the quadratic tensor related variables have been calculated and if not do so */ inline void checkSphericity(); /** * Check if the hemisphere mass variables and jet broadenings * have been calculated and if not do so */ inline void checkHemispheres(); //@} /** * Methods that actually calculate the event shapes */ //@{ /** * Calculate the hemisphere masses and jet broadenings */ inline void calcHemisphereMasses(); /** * Calculate the thrust and related axes */ void calculateThrust(); /** * Diagonalize the tensors * @param linear switch between diagonalization of linear/quadratic tensor. * @param cmboost tells whether to boost into cm frame of all * momenta first, or not (default off, and no interface to this). */ void diagonalizeTensors(bool linear, bool cmboost); /** * Quite general diagonalization of a symmetric Matrix T, given as * an array of doubles. The symmetry is not checked explicitly as * this is clear in the context. It uses an explicit generic * solution of the eigenvalue problem and no numerical * approximation, based on Cardano's formula. * @param T Matrix to be diagonalised */ vector eigenvalues(const double T[3][3]); /** * The eigenvector of @param T to a given eigenvalue @param lam */ Axis eigenvector(const double T[3][3], const double &lam); /** * The eigenvectors of @param T corresponding to the eigenvectors * @param lam . The ordering of the vectors corresponds to the * ordering of the eigenvalues. */ vector eigenvectors(const double T[3][3], const vector &lam); /** * Member to calculate the thrust * @param p The three vectors * @param t The thrust-squared (up to an Energy scale factor) * @param taxis The thrust axis */ void calcT(const vector &p, Energy2 &t, Axis &taxis); /** * Member to calculate the major * @param p The three vectors * @param m The major-squared (up to an Energy scale factor) * @param maxis The major axis */ void calcM(const vector &p, Energy2 &m, Axis &maxis); //@} private: /** * Vector of particle momenta to be analysed */ vector _pv; /** * Various event shape axes */ //@{ /** * The thrust related axes */ vector _thrustAxis; /** * The sphericity related axes */ vector _spherAxis; /** * The linearised tensor axes */ vector _linTenAxis; //@} /** * Values of axis related event shapes */ //@{ /** * Values of thrust related variables */ vector _thrust; /** * Values of sphericity related variables */ vector _spher; /** * Values of linearized tensor related variables */ vector _linTen; //@} /** * Whether or not certain event axes have been calculated */ //@{ /** * Whether or not the thrust is calculated */ bool _thrustDone; /** * Whether or not the sphericity is calculated */ bool _spherDone; /** * Whether or not the linearizes tensor is calculated */ bool _linTenDone; /** * Whether or not the hemisphere masses have been calculated */ bool _hemDone; //@} /** * Whether ot not to boost to the CMS frame for the tensor diagonalizations */ bool _useCmBoost; /** * Hemisphere masses */ //@{ /** * The high hemisphere mass */ double _mPlus; /** * The low hemisphere mass */ double _mMinus; //@} /** * The jet broadenings */ //@{ /** * The wide jet broadening */ double _bPlus; /** * The narrow jet broadening */ double _bMinus; //@} private: /** * Output option strings for \f$1-T\f$ distribution. */ string _omthr; /** * Output option strings for the major distribution */ string _maj; /** * Output option strings for the minor distribution */ string _min; /** *Output option strings for the oblateness distribution */ string _obl; /** * Output option strings for the sphericity distribution */ string _sph; /** * Output option strings for the aplanarity distribution */ string _apl; /** * Output option strings for the planarity distribution */ string _pla; /** * Output option strings for the C distribution */ string _c; /** * Output option strings for the D distribution */ string _d; /** * Output option strings for the \f$M_{\rm high}\f$ distribution */ string _mhi; /** * Output option strings for the \f$M_{\rm low}\f$ distribution */ string _mlo; /** * Output option strings for the \f$M_{\rm high}-M_{\rm low}\f$ distribution */ string _mdiff; /** * Output option strings for the \f$B_{\rm max}\f$ distribution */ string _bmax; /** * Output option strings for the \f$B_{\rm min}\f$ distribution */ string _bmin; /** * Output option strings for the \f$B_{\rm max}+B_{\rm min}\f$ distribution */ string _bsum; /** * Output option strings for the \f$B_{\rm max}-B_{\rm min}\f$ distribution */ string _bdiff; /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initEventShapes2; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ EventShapes2 & operator=(const EventShapes2 &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of EventShapes2. */ template <> struct BaseClassTrait { /** Typedef of the first base class of EventShapes2. */ typedef Analysis2::Analysis2Base NthBase; }; /** This template specialization informs ThePEG about the name of * the EventShapes2 class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Analysis2::EventShapes2"; } /** * The name of a file containing the dynamic library where the class * EventShapes2 is implemented. It may also include several, space-separated, * libraries if the class EventShapes2 depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "Analysis2.so"; } }; /** @endcond */ } #include "EventShapes2.icc" #ifndef ThePEG_TEMPLATES_IN_CC_FILE // #include "EventShapes2.tcc" #endif #endif /* Analysis2_EventShapes2_H */ herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/JetFinder.h0000644000175000017500000001604211754474774024137 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #ifndef Analysis2_JetFinder_H #define Analysis2_JetFinder_H // // This is the declaration of the JetFinder class. // #include "ThePEG/Interface/Interfaced.h" #include "JetFinder.fh" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Vectors/Lorentz5Vector.h" namespace Analysis2 { using namespace ThePEG; /**\ingroup Analysis2 * * A general interface to a jet finder which * may be used by an Analysis2 handler. * * @author Simon Plaetzer * * @see \ref JetFinderInterfaces "The interfaces" * defined for JetFinder. */ class JetFinder: public Interfaced { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline JetFinder(); /** * The destructor. */ virtual ~JetFinder(); //@} public: /**@name Resolution parameters */ //@{ /** * Get the resolution scale */ inline Energy dCut () const; /** * Get the dimensionless resolution parameter. */ inline double yCut () const; /** * Get the optional cone radius. */ inline double R () const; //@} public: /** * Set the event to be analysed. * The implementation of this method may * also do some conversion. */ virtual inline void use (const vector&, bool inclusive = false); /** * Get the event to be analysed */ inline const vector& lastEvent () const; /** * Return the jets resolved */ inline const vector& jets () const; public: /**@name Jet finding */ //@{ /** * Do inclusive jet finding */ virtual void findJets () = 0; /** * Do exclusive jet-finding for nJets jets */ virtual void findJetsN (unsigned int nJets) = 0; /** * Do jet-finding up to the resolution scale */ virtual void findJetsD () = 0; /** * Do exclusive jet-finding up to dimensionless resolution */ virtual void findJetsY (double y = -1.) = 0; /** * Get the number of final state jets */ inline unsigned int getNJets () const; /** * Resolution scale where n+1 jets merged to n */ virtual Energy getDMerge (unsigned int nJets) const = 0; /** * Dimensionless scale where n+1 jets merged to n */ virtual double getYMerge (unsigned int nJets) const = 0; //@} public: /**@name Jet sorting */ //@{ /** * Sort the jets in decreasing energy. */ virtual inline void sortEnergy (); /** * Sort the jets in decreasing transverse energy. */ virtual inline void sortEt (); /** * Sort the jets in decreasing transverse momentum. */ virtual inline void sortPt (); /** * Sort the jets in decreasing rapidity. */ virtual inline void sortY (); /** * Sort the jets in decreasing pseudorapidity. */ virtual inline void sortEta (); //@} protected: /**@name Binary predicats for jet sorting. */ //@{ /** * Sort in energy */ struct GreaterInEnergy { /** * Return true, if less in energy */ inline bool operator () (const Lorentz5Momentum& a, const Lorentz5Momentum& b) { return a.e() > b.e(); } }; /** * Sort in transverse energy */ struct GreaterInEt { /** * Return true, if less in transverse energy */ inline bool operator () (const Lorentz5Momentum& a, const Lorentz5Momentum& b) { return a.et() > b.et(); } }; /** * Sort in pt */ struct GreaterInPt { /** * Return true, if less in pt */ inline bool operator () (const Lorentz5Momentum& a, const Lorentz5Momentum& b) { return a.perp() > b.perp(); } }; /** * Sort in y */ struct GreaterInY { /** * Return true, if less in y */ inline bool operator () (const Lorentz5Momentum& a, const Lorentz5Momentum& b) { return a.rapidity() > b.rapidity(); } }; /** * Sort in eta */ struct GreaterInEta { /** * Return true, if less in eta */ inline bool operator () (const Lorentz5Momentum& a, const Lorentz5Momentum& b) { return a.eta() > b.eta(); } }; //@} protected: /** * Set the result from jet finding */ inline void jets (const vector&); 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The dimensionful resolution parameter */ Energy _dCut; /** * The dimensionless resolution parameter */ double _yCut; /** * The optional cone radius. */ double _R; /** * The event to be analysed. */ vector _lastEvent; /** * The jets resolved. */ vector _jets; /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription initJetFinder; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ JetFinder & operator=(const JetFinder &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of JetFinder. */ template <> struct BaseClassTrait { /** Typedef of the first base class of JetFinder. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the JetFinder class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Analysis2::JetFinder"; } /** * The name of a file containing the dynamic library where the class * JetFinder is implemented. It may also include several, space-separated, * libraries if the class JetFinder depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "Analysis2.so"; } }; /** @endcond */ } #include "JetFinder.icc" #ifndef ThePEG_TEMPLATES_IN_CC_FILE // #include "JetFinder.tcc" #endif #endif /* Analysis2_JetFinder_H */ herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/JetFinder.icc0000644000175000017500000000274411754474774024452 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #include namespace Analysis2 { inline JetFinder::JetFinder() : _dCut(10.*GeV), _yCut(0.1), _R(0.7), _lastEvent(vector()), _jets(vector()) {} inline Energy JetFinder::dCut () const { return _dCut; } inline double JetFinder::yCut () const { return _yCut; } inline double JetFinder::R () const { return _R; } inline void JetFinder::use (const vector& evt,bool) { _lastEvent = evt; } inline const vector& JetFinder::lastEvent () const { return _lastEvent; } inline unsigned int JetFinder::getNJets () const { return _jets.size(); } inline const vector& JetFinder::jets () const { return _jets; } inline void JetFinder::jets (const vector& jets) { _jets.clear(); _jets = jets; } inline void JetFinder::sortEnergy () { sort(_jets.begin(),_jets.end(),GreaterInEnergy()); } inline void JetFinder::sortEt () { sort(_jets.begin(),_jets.end(),GreaterInEt()); } inline void JetFinder::sortPt () { sort(_jets.begin(),_jets.end(),GreaterInPt()); } inline void JetFinder::sortY () { sort(_jets.begin(),_jets.end(),GreaterInY()); } inline void JetFinder::sortEta () { sort(_jets.begin(),_jets.end(),GreaterInEta()); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Makefile.am0000644000175000017500000000260411754474774024147 0ustar sylvestresylvestreSUBDIRS = Data pkglib_LTLIBRARIES = Analysis2.la Analysis2_la_LDFLAGS = -module -version-info 0:0:0 Analysis2_la_CPPFLAGS = $(AM_CPPFLAGS) Analysis2_la_LIBADD = $(top_builddir)/Histogram2/libHistogram2.la Analysis2_la_SOURCES = \ EventExtractor.h EventExtractor.cc \ JetFinder.h JetFinder.fh JetFinder.icc JetFinder.cc \ Analysis2Base.h Analysis2Base.fh Analysis2Base.icc Analysis2Base.cc \ GnuplotOutput.h GnuplotOutput.fh GnuplotOutput.icc GnuplotOutput.cc \ EventShapes2.h EventShapes2.fh EventShapes2.icc EventShapes2.cc \ YMerge.h YMerge.fh YMerge.icc YMerge.cc \ YJetRates.h YJetRates.cc \ FourJetCorrelations.h FourJetCorrelations.fh \ FourJetCorrelations.icc FourJetCorrelations.cc # the fastjet interface # if WITH_LIBFASTJET # pkglib_LTLIBRARIES += FastJetFinder.la # FastJetFinder_la_LDFLAGS = -module -version-info 3:0:0 # FastJetFinder_la_CPPFLAGS = $(AM_CPPFLAGS) $(FASTJETINCLUDE) # FastJetFinder_la_LIBADD = $(FASTJETLIBS) # FastJetFinder_la_SOURCES = \ # FastJetFinder.h FastJetFinder.fh FastJetFinder.icc FastJetFinder.cc # endif # the ktjet interface if WITH_LIBKTJET pkglib_LTLIBRARIES += KtJetFinder.la KtJetFinder_la_LDFLAGS = -module -version-info 3:0:0 KtJetFinder_la_CPPFLAGS = $(AM_CPPFLAGS) $(KTJETINCLUDE) -I$(KTJETPATH) KtJetFinder_la_LIBADD = $(KTJETLIBS) -L$(CLHEPPATH) $(CLHEPLIB) KtJetFinder_la_SOURCES = \ KtJetFinder.h KtJetFinder.fh KtJetFinder.icc KtJetFinder.cc endif herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/GnuplotOutput.h0000644000175000017500000001206611754474774025140 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #ifndef Analysis2_GnuplotOutput_H #define Analysis2_GnuplotOutput_H // // This is the declaration of the GnuplotOutput class. // #include "Analysis2/Histogram2/Histogram2Output.h" #include "GnuplotOutput.fh" namespace Analysis2 { using namespace ThePEG; /**\ingroup Analysis2 * * Gnuplot output of Histogram2 * * @see \ref GnuplotOutputInterfaces "The interfaces" * defined for GnuplotOutput. */ class GnuplotOutput: public Histogram2Output { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline GnuplotOutput(); /** * The copy constructor. */ inline GnuplotOutput(const GnuplotOutput&); /** * The destructor. */ virtual ~GnuplotOutput(); //@} public: /** * Output the given histogram. * The default just dumps to an ascii file. */ virtual void put (Histogram2Ptr, const Histogram2Options&, const string&); 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. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). public: /** * Initialize. Similar to doinitrun, * in fact called by doinitrun, but * should _not_ call generator(), as it * may be used 'offline' to combine * parallel runs. */ virtual inline void initialize (); /** * Finalize. Similar to dofinish, * in fact called by dofinish, but * should _not_ call generator(), as it * may be used 'offline' to combine * parallel runs. */ virtual inline void finalize (); private: /** * The range of subprocess multiplicities * to plot, separated by a blank. If empty, * no subprocess multiplicity channels are * plotted. */ string _subproMult; /** * Count the histograms already put. */ unsigned int _allHistos; /** * Wether or not to plot the ratio * (if available) */ bool _ratio; /** * Wether or not to plot the chi2 * (if available) */ bool _chi2; /** * The gnuplot program */ string _gnuplot; /** * The TeX file containing the plots */ ofstream _TeXfile; /** * The Makefile */ ofstream _makefile; /** * Wether or not initialilzation has been done. */ bool _doneInitialize; /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initGnuplotOutput; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GnuplotOutput & operator=(const GnuplotOutput &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of GnuplotOutput. */ template <> struct BaseClassTrait { /** Typedef of the first base class of GnuplotOutput. */ typedef Analysis2::Histogram2Output NthBase; }; /** This template specialization informs ThePEG about the name of * the GnuplotOutput class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Analysis2::GnuplotOutput"; } /** * The name of a file containing the dynamic library where the class * GnuplotOutput is implemented. It may also include several, space-separated, * libraries if the class GnuplotOutput depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "Analysis2.so"; } }; /** @endcond */ } #include "GnuplotOutput.icc" #ifndef ThePEG_TEMPLATES_IN_CC_FILE // #include "GnuplotOutput.tcc" #endif #endif /* Analysis2_GnuplotOutput_H */ herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/KtJetFinder.cc0000644000175000017500000001026111754474774024571 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #include "KtJetFinder.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "KtJetFinder.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Analysis2; KtJetFinder::~KtJetFinder() {} void KtJetFinder::persistentOutput(PersistentOStream & os) const { // *** ATTENTION *** os << ; // Add all member variable which should be written persistently here. os << _collisionType << _distanceScheme << _recombinationScheme; } void KtJetFinder::persistentInput(PersistentIStream & is, int) { // *** ATTENTION *** is >> ; // Add all member variable which should be read persistently here. is >> _collisionType >> _distanceScheme >> _recombinationScheme; } ClassDescription KtJetFinder::initKtJetFinder; // Definition of the static class description member. void KtJetFinder::Init() { static ClassDocumentation documentation ("Interface to KtJet"); static Switch interfaceCollisionType ("CollisionType", "Set the collision type used by KtJet", &KtJetFinder::_collisionType, 1, false, false); static SwitchOption interfaceCollisionTypeee (interfaceCollisionType, "ee", "ee", 1); static SwitchOption interfaceCollisionTypeeP (interfaceCollisionType, "eP", "eP", 2); static SwitchOption interfaceCollisionTypePe (interfaceCollisionType, "Pe", "Pe", 3); static SwitchOption interfaceCollisionTypePP (interfaceCollisionType, "PP", "PP", 4); static Switch interfaceDistanceScheme ("DistanceScheme", "Set the distance scheme (\"angle\") used by KtJet", &KtJetFinder::_distanceScheme, 1, false, false); static SwitchOption interfaceDistanceSchemeangular (interfaceDistanceScheme, "angular", "angular", 1); static SwitchOption interfaceDistanceSchemedeltaR (interfaceDistanceScheme, "deltaR", "deltaR", 2); static SwitchOption interfaceDistanceSchemeQCD (interfaceDistanceScheme, "QCD", "QCD", 3); static Switch interfaceRecombinationScheme ("RecombinationScheme", "Set the recombination scheme used by KtJet", &KtJetFinder::_recombinationScheme, 1, false, false); static SwitchOption interfaceRecombinationSchemeE (interfaceRecombinationScheme, "E", "E", 1); static SwitchOption interfaceRecombinationSchemePt (interfaceRecombinationScheme, "Pt", "Pt", 2); static SwitchOption interfaceRecombinationSchemePt2 (interfaceRecombinationScheme, "Pt2", "Pt2", 3); static SwitchOption interfaceRecombinationSchemeEt (interfaceRecombinationScheme, "Et", "Et", 4); static SwitchOption interfaceRecombinationSchemeEt2 (interfaceRecombinationScheme, "Et2", "Et2", 5); } void KtJetFinder::use (const vector& evt, bool inclusive) { JetFinder::use(evt, inclusive); convert(); if (inclusive) clusterInclusive(); else cluster(); } void KtJetFinder::convert () { _lastMomenta.clear(); for(vector::const_iterator p = lastEvent().begin(); p != lastEvent().end(); ++p) { _lastMomenta.push_back(KtJet::KtLorentzVector(p->x()/GeV, p->y()/GeV, p->z()/GeV, p->t()/GeV )); } } void KtJetFinder::convert (const vector& ktvectors) { vector tmp; for(vector::const_iterator p =ktvectors.begin(); p != ktvectors.end(); ++p) { tmp.push_back(Lorentz5Momentum((*p).px()*GeV,(*p).py()*GeV,(*p).pz()*GeV,(*p).e()*GeV)); } jets(tmp); } void KtJetFinder::cluster () { _lastKtEvent = std::auto_ptr (new KtJet::KtEvent(_lastMomenta,_collisionType,_distanceScheme,_recombinationScheme)); } void KtJetFinder::clusterInclusive () { _lastKtEvent = std::auto_ptr (new KtJet::KtEvent(_lastMomenta,_collisionType,_distanceScheme,_recombinationScheme)); } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/YJetRates.h0000644000175000017500000001144011754474774024134 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #ifndef Analysis2_YJetRates_H #define Analysis2_YJetRates_H // // This is the declaration of the YJetRates class. // #include "Analysis2Base.h" namespace Analysis2 { using namespace ThePEG; /**\ingroup Analysis2 * * Analysis for jet rates * * @author Simon Plaetzer * * @see \ref YJetRatesInterfaces "The interfaces" * defined for YJetRates. */ class YJetRates: public Analysis2Base { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline YJetRates() : _nMax(5), _options(6,""), _yn(), _sumWeights(0.) {} /** * The destructor. */ virtual ~YJetRates(); //@} public: /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Insert options for a given n */ string R (string); 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 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() throw(InitException); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const { return new_ptr(*this); } //@} private: /** * The maximum n up to which rates should * be booked, starting from n=2 */ unsigned int _nMax; /** * A vector of option strings, one for each n * The convention is that element 0,1 are ignored, * 2 gives options for R2, ... */ vector _options; /** * Vector of the observable names */ vector _yn; /** * Sum of all weights booked into * jet rates */ double _sumWeights; /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription initYJetRates; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ YJetRates & operator=(const YJetRates &); }; } #include "ThePEG/Utilities/ClassTraits.h" #include "ThePEG/Config/Pointers.h" namespace ThePEG { ThePEG_DECLARE_POINTERS(Analysis2::YJetRates,YJetRatesPtr); /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of YJetRates. */ template <> struct BaseClassTrait { /** Typedef of the first base class of YJetRates. */ typedef Analysis2::Analysis2Base NthBase; }; /** This template specialization informs ThePEG about the name of * the YJetRates class and the shared object where it is defined. */ template <> struct ClassTraits : public ClassTraitsBase { /** Return a platform-independent class name */ static string className() { return "Analysis2::YJetRates"; } /** * The name of a file containing the dynamic library where the class * YJetRates is implemented. It may also include several, space-separated, * libraries if the class YJetRates depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "Analysis2.so"; } }; /** @endcond */ } #ifndef ThePEG_TEMPLATES_IN_CC_FILE // #include "YJetRates.tcc" #endif #endif /* Analysis2_YJetRates_H */ herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/GnuplotOutput.icc0000644000175000017500000000265611754474774025453 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de namespace Analysis2 { inline GnuplotOutput::GnuplotOutput() : _subproMult(""), _allHistos(0), _ratio(true), _chi2(true), _gnuplot("gnuplot"), _TeXfile(), _makefile(), _doneInitialize(false) {} inline GnuplotOutput::GnuplotOutput(const GnuplotOutput& x) : Histogram2Output(x), _subproMult(x._subproMult), _allHistos(x._allHistos), _ratio(x._ratio), _chi2(x._chi2), _gnuplot(x._gnuplot), _TeXfile(), _makefile(), _doneInitialize(false) {} inline IBPtr GnuplotOutput::clone() const { return new_ptr(*this); } inline IBPtr GnuplotOutput::fullclone() const { return new_ptr(*this); } inline void GnuplotOutput::initialize () { if (_doneInitialize) return; _TeXfile.open((prefix() + "plots.tex").c_str()); _TeXfile << "\\documentclass{article}" << endl << "\\usepackage{graphicx,color,amsmath,amsfonts}" << endl << "\\usepackage[left=2cm,right=2cm,top=1cm,bottom=1.5cm]{geometry}" << endl << "\\begin{document}" << endl; _makefile.open((prefix()+"Makefile").c_str()); _makefile << "plots: finishtex gnuplots ps" << endl; _makefile << "finishtex:" << endl << "\techo \"\\\\end{document}\" >> plots.tex" << endl; _makefile << "ps:" << endl << "\tlatex plots.tex" << endl << "\tdvips plots.dvi" << endl; _makefile << "gnuplots:" << endl; _doneInitialize = true; } inline void GnuplotOutput::finalize () { } } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/YMerge.fh0000644000175000017500000000045111754474774023620 0ustar sylvestresylvestre// -*- C++ -*- // // This is the forward declaration of the YMerge class. // #ifndef Analysis2_YMerge_FH #define Analysis2_YMerge_FH #include "ThePEG/Config/Pointers.h" namespace Analysis2 { class YMerge; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Analysis2::YMerge,YMergePtr); } #endif herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/EventExtractor.cc0000644000175000017500000000247411754474774025404 0ustar sylvestresylvestre// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #include "EventExtractor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "EventExtractor.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Analysis2; EventExtractor::~EventExtractor() {} void EventExtractor::persistentOutput(PersistentOStream & ) const { // *** ATTENTION *** os << ; // Add all member variable which should be written persistently here. } void EventExtractor::persistentInput(PersistentIStream &, int) { // *** ATTENTION *** is >> ; // Add all member variable which should be read persistently here. } ClassDescription EventExtractor::initEventExtractor; // Definition of the static class description member. void EventExtractor::Init() { static ClassDocumentation documentation ("EventExtractor"); } void EventExtractor::prepare() { _lastWeight = lastEvent()->weight(); _lastMomenta.clear(); tPVector parts = lastEvent()->getFinalState(); for (tPVector::const_iterator p = parts.begin(); p != parts.end(); ++p) _lastMomenta.push_back((**p).momentum()); _ok = true; _doneEvent = false; } herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/0000755000175000017500000000000011756464211022745 5ustar sylvestresylvestreherwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/OPAL.y34.dat0000644000175000017500000000332211754474774024625 0ustar sylvestresylvestre#HEPDATA Reaction Database # # # PFEIFENSCNEIDER 99 EPJ C17,19 # Differential distributions in Ynm (the minimum YCUT for the separation inton an # d m(=n+1) jets) # RE(Q=HAD) E+ E- --&gt; HADRONS # RE(Q=2JET) E+ E- --&gt; 2JET X # RE(Q=3JET) E+ E- --&gt; 3JET X # RE(Q=4JET) E+ E- --&gt; 4JET X # RE(Q=5JET) E+ E- --&gt; 5JET X # RE(Q=.GE.6JET) E+ E- --&gt; .GE.6JET X # SQRT(S) IN GEV 91 # x = Ynm # y = D(SIG)/DY34 # x1 TO x2 y dy +- dsys 2.37E-05 3.16E-05 5.910 1.837 3.084 3.16E-05 4.22E-05 7.934 1.577 2.557 4.22E-05 5.62E-05 14.89 1.77 4.84 5.62E-05 7.50E-05 34.42 2.40 8.66 7.50E-05 1.00E-04 64.74 2.79 20.29 1.00E-04 1.33E-04 138.3 3.8 38.3 1.33E-04 1.78E-04 242.9 4.4 50.2 1.78E-04 2.37E-04 369.6 4.7 60.3 2.37E-04 3.16E-04 492.9 4.7 66.6 3.16E-04 4.22E-04 571.7 4.3 59.8 4.22E-04 5.62E-04 580.0 3.7 45.1 5.62E-04 7.50E-04 535.1 3.0 30.5 7.50E-04 1.00E-03 448.7 2.3 18.1 1.00E-03 1.33E-03 333.2 1.7 11.6 1.33E-03 1.78E-03 234.0 1.2 10.0 1.78E-03 2.37E-03 149.3 0.8 9.0 2.37E-03 3.16E-03 88.43 0.52 7.43 3.16E-03 4.22E-03 50.04 0.34 5.09 4.22E-03 5.62E-03 28.38 0.22 2.94 5.62E-03 7.50E-03 15.95 0.15 1.75 7.50E-03 1.00E-02 9.092 0.096 1.052 1.00E-02 1.33E-02 5.181 0.064 0.580 1.33E-02 1.78E-02 2.848 0.042 0.313 1.78E-02 2.37E-02 1.479 0.026 0.166 2.37E-02 3.16E-02 0.727 0.016 0.098 3.16E-02 4.22E-02 0.338 0.010 0.053 4.22E-02 5.62E-02 0.134 0.005 0.026 5.62E-02 7.50E-02 0.045 0.003 0.014 7.50E-02 1.00E-01 0.011 0.001 0.007 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.Planarity.dat���������������������������0000644�0001750�0001750�00000001655�11754474774�026372� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # Planarity distribution # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = PLANARITY # y = (1/N)*D(N)/DPLANARITY # x1 TO x2 y +- dy +- dsys 0.000 0.005 68.69 0.19 0.74 0.005 0.010 31.66 0.12 0.35 0.010 0.015 17.091 0.088 0.188 0.015 0.020 11.370 0.072 0.127 0.020 0.025 8.417 0.062 0.095 0.025 0.030 6.578 0.055 0.075 0.030 0.035 5.479 0.050 0.063 0.035 0.040 4.493 0.045 0.052 0.040 0.050 3.610 0.029 0.042 0.050 0.060 2.749 0.025 0.033 0.060 0.080 1.987 0.015 0.024 0.080 0.100 1.362 0.012 0.017 0.100 0.120 1.008 0.011 0.013 0.120 0.160 0.6676 0.0061 0.0093 0.160 0.200 0.4248 0.0048 0.0063 0.200 0.250 0.2692 0.0034 0.0042 0.250 0.300 0.1742 0.0028 0.0029 0.300 0.350 0.1042 0.0021 0.0019 0.350 0.400 0.0566 0.0015 0.0011 0.400 0.500 0.0145 0.0006 0.0003 �����������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.ThrustMajor.dat�������������������������0000644�0001750�0001750�00000002021�11754474774�026675� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # Thrust Major distribution # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = MAJOR # y = (1/N)*D(N)/DMAJOR # x1 TO x2 y +- dy +- dsys 0.000 0.020 0.00040 0.00090 0.00005 0.020 0.040 0.0590 0.0030 0.0058 0.040 0.050 0.642 0.013 0.028 0.050 0.060 2.178 0.024 0.086 0.060 0.070 4.303 0.034 0.155 0.070 0.080 5.849 0.039 0.192 0.080 0.100 6.889 0.030 0.194 0.100 0.120 6.342 0.028 0.143 0.120 0.140 4.890 0.024 0.085 0.140 0.160 3.900 0.021 0.050 0.160 0.200 2.960 0.013 0.030 0.200 0.240 2.124 0.011 0.021 0.240 0.280 1.5562 0.0095 0.0156 0.280 0.320 1.1807 0.0083 0.0118 0.320 0.360 0.8693 0.0071 0.0087 0.360 0.400 0.6493 0.0061 0.0065 0.400 0.440 0.4820 0.0052 0.0048 0.440 0.480 0.3493 0.0044 0.0055 0.480 0.520 0.2497 0.0037 0.0065 0.520 0.560 0.1489 0.0028 0.0058 0.560 0.600 0.0714 0.0019 0.0038 0.600 0.640 0.0203 0.0010 0.0014 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.BMin.dat��������������������������������0000644�0001750�0001750�00000001140�11754474774�025241� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # Narrow Hemisphere Broadening, BMIN # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = BMIN # y = (1/N)*D(N)/DBMIN # x1 TO x2 y +- dy +- dsys 0.000 0.010 0.645 0.010 0.096 0.010 0.020 11.169 0.045 1.006 0.020 0.030 28.908 0.082 1.823 0.030 0.040 25.972 0.083 1.478 0.040 0.050 14.119 0.061 0.860 0.050 0.060 7.500 0.044 0.494 0.060 0.080 3.405 0.021 0.233 0.080 0.100 1.320 0.013 0.089 0.100 0.120 0.5448 0.0082 0.0328 0.120 0.150 0.1916 0.0040 0.0104 0.150 0.180 0.0366 0.0017 0.0034 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.ThrustMinor.dat�������������������������0000644�0001750�0001750�00000001360�11754474774�026716� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # Thrust Minor distribution # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = MINOR # y = (1/N)*D(N)/DMINOR # x1 TO x2 y +- dy +- dsys 0.000 0.020 0.0156 0.0017 0.0036 0.020 0.040 1.236 0.013 0.066 0.040 0.050 5.706 0.037 0.073 0.050 0.060 9.714 0.048 0.125 0.060 0.070 12.015 0.054 0.155 0.070 0.080 12.437 0.055 0.161 0.080 0.100 10.404 0.036 0.136 0.100 0.120 6.918 0.029 0.092 0.120 0.140 4.250 0.023 0.058 0.140 0.160 2.517 0.017 0.035 0.160 0.200 1.2561 0.0086 0.0187 0.200 0.240 0.4895 0.0054 0.0080 0.240 0.280 0.2112 0.0036 0.0039 0.280 0.320 0.0879 0.0023 0.0018 0.320 0.400 0.0250 0.0009 0.0006 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.BMax.dat��������������������������������0000644�0001750�0001750�00000001364�11754474774�025253� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # Wide Hemisphere Broadening, BMAX # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = BMAX # y = (1/N)*D(N)/DBMAX # x1 TO x2 y +- dy +- dsys 0.010 0.020 0.6707 0.0096 0.1077 0.020 0.030 7.538 0.038 0.809 0.030 0.040 14.690 0.058 0.745 0.040 0.050 13.942 0.057 0.592 0.050 0.060 11.298 0.053 0.379 0.060 0.070 9.065 0.048 0.266 0.070 0.080 7.387 0.043 0.222 0.080 0.100 5.445 0.026 0.176 0.100 0.120 3.796 0.022 0.127 0.120 0.140 2.670 0.018 0.087 0.140 0.170 1.756 0.012 0.051 0.170 0.200 1.0580 0.0092 0.0218 0.200 0.240 0.5288 0.0056 0.0053 0.240 0.280 0.1460 0.0028 0.0071 0.280 0.320 0.0029 0.0004 0.0003 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.Aplanarity.dat��������������������������0000644�0001750�0001750�00000001431�11754474774�026523� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # Aplanarity distribution # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = APLANARITY # y = (1/N)*D(N)/DAPLANARITY # x1 TO x2 y +- dy +- dsys 0.000 0.005 75.10 0.19 0.75 0.005 0.010 55.31 0.17 0.55 0.010 0.015 26.03 0.11 0.28 0.015 0.020 13.927 0.079 0.176 0.020 0.030 6.768 0.038 0.098 0.030 0.040 3.014 0.025 0.056 0.040 0.060 1.281 0.012 0.035 0.060 0.080 0.5181 0.0075 0.0188 0.080 0.100 0.2619 0.0054 0.0118 0.100 0.120 0.1461 0.0041 0.0079 0.120 0.140 0.0758 0.0029 0.0043 0.140 0.160 0.0467 0.0023 0.0027 0.160 0.200 0.0234 0.0011 0.0014 0.200 0.250 0.00884 0.00061 0.00052 0.250 0.300 0.00310 0.00040 0.00018 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.MDiff.dat�������������������������������0000644�0001750�0001750�00000001305�11754474774�025404� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # Difference in Hemisphere Masses # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = M(C=DIFF)**2/EVIS**2 # y = (1/N)*D(N)/D(M**2/EVIS**2) # x1 TO x2 y +- dy +- dsys 0.000 0.010 35.393 0.092 0.354 0.010 0.020 20.745 0.071 0.207 0.020 0.030 11.426 0.052 0.114 0.030 0.040 7.170 0.041 0.072 0.040 0.060 4.344 0.023 0.043 0.060 0.080 2.605 0.017 0.026 0.080 0.120 1.4238 0.0092 0.0142 0.120 0.160 0.7061 0.0064 0.0071 0.160 0.200 0.3831 0.0046 0.0044 0.200 0.250 0.1836 0.0028 0.0032 0.250 0.300 0.0579 0.0015 0.0018 0.300 0.350 0.0075 0.0006 0.0006 0.350 0.400 0.0003 0.0002 0.0001 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/Makefile.in������������������������������������0000644�0001750�0001750�00000000000�11756461505�025003� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.CParameter.dat��������������������������0000644�0001750�0001750�00000002027�11754474774�026444� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # C-Parameter distribution # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = C-PARAMETER # y = (1/N)*D(N)/DC-PARAMETER # x1 TO x2 y +- dy +- dsys 0.000 0.040 0.0881 0.0030 0.0067 0.040 0.080 1.5383 0.0100 0.0831 0.080 0.120 3.909 0.016 0.142 0.120 0.160 3.833 0.016 0.088 0.160 0.200 2.835 0.013 0.040 0.200 0.240 2.164 0.012 0.022 0.240 0.280 1.716 0.010 0.017 0.280 0.320 1.3860 0.0092 0.0139 0.320 0.360 1.1623 0.0084 0.0116 0.360 0.400 0.9720 0.0077 0.0097 0.400 0.440 0.8349 0.0072 0.0083 0.440 0.480 0.7161 0.0066 0.0072 0.480 0.520 0.6205 0.0061 0.0062 0.520 0.560 0.5441 0.0057 0.0054 0.560 0.600 0.4844 0.0054 0.0050 0.600 0.640 0.4209 0.0050 0.0063 0.640 0.680 0.3699 0.0046 0.0079 0.680 0.720 0.3286 0.0044 0.0099 0.720 0.760 0.2813 0.0040 0.0129 0.760 0.800 0.2178 0.0033 0.0151 0.800 0.840 0.1287 0.0026 0.0130 0.840 0.880 0.0542 0.0016 0.0076 0.880 0.920 0.0212 0.0009 0.0040 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.BSum.dat��������������������������������0000644�0001750�0001750�00000001565�11754474774�025275� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # Total Hemisphere Broadening, BSUM # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = BSUM # y = (1/N)*D(N)/DBSUM # x1 TO x2 y +- dy +- dsys 0.020 0.030 0.2030 0.0055 0.0383 0.030 0.040 1.628 0.015 0.183 0.040 0.050 4.999 0.031 0.463 0.050 0.060 8.190 0.041 0.644 0.060 0.070 9.887 0.047 0.661 0.070 0.080 9.883 0.049 0.564 0.080 0.090 9.007 0.047 0.443 0.090 0.100 7.746 0.044 0.332 0.100 0.110 6.714 0.041 0.255 0.110 0.130 5.393 0.026 0.180 0.130 0.150 3.998 0.023 0.125 0.150 0.170 2.980 0.019 0.098 0.170 0.190 2.294 0.017 0.085 0.190 0.210 1.747 0.015 0.075 0.210 0.240 1.242 0.010 0.063 0.240 0.270 0.8125 0.0080 0.0469 0.270 0.300 0.4974 0.0062 0.0296 0.300 0.330 0.2285 0.0041 0.0119 0.330 0.360 0.0732 0.0024 0.0007 �������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.CosThetaNR.dat��������������������������0000644�0001750�0001750�00000001431�11754474774�026371� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# modififed NR angle from DELPHI 0.00 0.05 0.06131 0.00119 0.00281 0.05 0.10 0.05888 0.00114 0.00252 0.10 0.15 0.05937 0.00115 0.00272 0.15 0.20 0.06104 0.00118 0.00281 0.20 0.25 0.05949 0.00115 0.00271 0.25 0.30 0.06317 0.00121 0.00292 0.30 0.35 0.06632 0.00125 0.00321 0.35 0.40 0.06712 0.00125 0.00324 0.40 0.45 0.07040 0.00129 0.00343 0.45 0.50 0.07274 0.00131 0.00354 0.50 0.55 0.07605 0.00135 0.00377 0.55 0.60 0.07707 0.00135 0.00376 0.60 0.65 0.08350 0.00142 0.00422 0.65 0.70 0.08779 0.00147 0.00436 0.70 0.75 0.08856 0.00145 0.00431 0.75 0.80 0.09567 0.00154 0.00503 0.80 0.85 0.09632 0.00154 0.00505 0.85 0.90 0.10124 0.00160 0.00534 0.90 0.95 0.10139 0.00158 0.00506 0.95 1.00 0.12596 0.00178 0.00630 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.Sphericity.dat��������������������������0000644�0001750�0001750�00000001672�11754474774�026551� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # Sphericity distribution # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = SPHERICITY # y = (1/N)*D(N)/DSPHERICITY # x1 TO x2 y +- dy +- dsys 0.000 0.010 16.198 0.067 0.208 0.010 0.020 20.008 0.072 0.246 0.020 0.030 12.896 0.056 0.153 0.030 0.040 8.237 0.043 0.094 0.040 0.050 5.885 0.037 0.065 0.050 0.060 4.458 0.032 0.048 0.060 0.080 3.272 0.019 0.034 0.080 0.100 2.290 0.016 0.023 0.100 0.120 1.699 0.014 0.017 0.120 0.160 1.2018 0.0082 0.0120 0.160 0.200 0.7988 0.0067 0.0080 0.200 0.250 0.5610 0.0050 0.0063 0.250 0.300 0.3926 0.0042 0.0051 0.300 0.350 0.2810 0.0035 0.0043 0.350 0.400 0.2099 0.0030 0.0037 0.400 0.500 0.1441 0.0018 0.0032 0.500 0.600 0.0842 0.0013 0.0023 0.600 0.700 0.04160 0.00092 0.00129 0.700 0.850 0.00758 0.00032 0.00024 ����������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.CosChiBZ.dat����������������������������0000644�0001750�0001750�00000001457�11754474774�026033� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Bengtsson Zerwas angle from DELPHI # x0 x1 y dy1 dy2 0.00 0.05 0.05455 0.00115 0.00288 0.05 0.10 0.05346 0.00113 0.00287 0.10 0.15 0.05450 0.00115 0.00289 0.15 0.20 0.05782 0.00120 0.00306 0.20 0.25 0.05730 0.00120 0.00310 0.25 0.30 0.05880 0.00121 0.00314 0.30 0.35 0.05734 0.00118 0.00299 0.35 0.40 0.05973 0.00121 0.00311 0.40 0.45 0.06074 0.00122 0.00319 0.45 0.50 0.06387 0.00125 0.00330 0.50 0.55 0.06483 0.00126 0.00340 0.55 0.60 0.06781 0.00128 0.00332 0.60 0.65 0.07144 0.00131 0.00358 0.65 0.70 0.07206 0.00129 0.00329 0.70 0.75 0.07887 0.00136 0.00365 0.75 0.80 0.08601 0.00148 0.00412 0.80 0.85 0.09318 0.00146 0.00406 0.85 0.90 0.09865 0.00147 0.00401 0.90 0.95 0.11785 0.00159 0.00432 0.95 1.00 0.24115 0.00244 0.01276 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/OPAL.y45.dat�����������������������������������0000644�0001750�0001750�00000003364�11754474774�024635� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#<html><head><title>HEPDATA Reaction Database</title></head> #<body bgcolor="#ffffff"> #<xmp> # PFEIFENSCNEIDER 99 EPJ C17,19 # Differential distributions in Ynm (the minimum YCUT for the separation inton an # d m(=n+1) jets) # RE(Q=HAD) E+ E- --&gt; HADRONS # RE(Q=2JET) E+ E- --&gt; 2JET X # RE(Q=3JET) E+ E- --&gt; 3JET X # RE(Q=4JET) E+ E- --&gt; 4JET X # RE(Q=5JET) E+ E- --&gt; 5JET X # RE(Q=.GE.6JET) E+ E- --&gt; .GE.6JET X # SQRT(S) IN GEV 91 # x = Ynm # y = D(SIG)/DY45 # x1 TO x2 y dy +- dsys 1.00E-05 1.33E-05 17.50 8.19 10.58 1.33E-05 1.78E-05 18.42 5.57 10.58 1.78E-05 2.37E-05 19.98 3.46 7.51 2.37E-05 3.16E-05 28.13 3.06 8.89 3.16E-05 4.22E-05 56.68 3.75 10.54 4.22E-05 5.62E-05 113.1 4.6 19.5 5.62E-05 7.50E-05 233.0 6.1 48.8 7.50E-05 1.00E-04 446.7 7.7 90.5 1.00E-04 1.33E-04 711.5 8.6 138.9 1.33E-04 1.78E-04 1018.6 9.1 169.5 1.78E-04 2.37E-04 1197.7 8.4 156.2 2.37E-04 3.16E-04 1236.0 7.2 106.5 3.16E-04 4.22E-04 1108.2 5.7 52.8 4.22E-04 5.62E-04 907.8 4.3 28.5 5.62E-04 7.50E-04 658.8 3.1 25.0 7.50E-04 1.00E-03 439.2 2.1 23.3 1.00E-03 1.33E-03 269.8 1.4 20.0 1.33E-03 1.78E-03 150.1 0.9 15.7 1.78E-03 2.37E-03 76.52 0.55 10.60 2.37E-03 3.16E-03 36.67 0.33 6.24 3.16E-03 4.22E-03 16.23 0.19 3.15 4.22E-03 5.62E-03 7.154 0.112 1.43 5.62E-03 7.50E-03 3.150 0.067 0.63 7.50E-03 1.00E-02 1.267 0.037 0.28 1.00E-02 1.33E-02 0.537 0.023 0.11 1.33E-02 1.78E-02 0.179 0.011 0.04 1.78E-02 2.37E-02 0.064 0.006 0.01 2.37E-02 3.16E-02 0.014 0.003 0.00 3.16E-02 4.22E-02 0.003 0.001 0.00 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.MHigh.dat�������������������������������0000644�0001750�0001750�00000001501�11754474774�025411� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # Heavy-Hemisphere-Mass distribution # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = M(C=HEAVY-HEMISPHERE)**2/EVIS**2 # y = (1/N)*D(N)/D(M**2/EVIS**2) # x1 TO x2 y +- dy +- dsys 0.000 0.010 1.994 0.027 0.166 0.010 0.020 18.580 0.065 0.709 0.020 0.030 20.678 0.076 0.729 0.030 0.040 13.377 0.060 0.412 0.040 0.050 8.965 0.049 0.239 0.050 0.060 6.558 0.041 0.151 0.060 0.080 4.515 0.024 0.082 0.080 0.100 2.914 0.019 0.037 0.100 0.120 1.991 0.016 0.020 0.120 0.140 1.406 0.013 0.014 0.140 0.160 1.010 0.011 0.010 0.160 0.200 0.6319 0.0063 0.0063 0.200 0.250 0.3085 0.0039 0.0051 0.250 0.300 0.1115 0.0022 0.0039 0.300 0.350 0.0184 0.0008 0.0012 0.350 0.400 0.0008 0.0002 0.0001 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/OPAL.y23.dat�����������������������������������0000644�0001750�0001750�00000003525�11754474774�024630� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#<html><head><title>HEPDATA Reaction Database</title></head> #<body bgcolor="#ffffff"> #<xmp> # PFEIFENSCNEIDER 99 EPJ C17,19 # Differential distributions in Ynm (the minimum YCUT for the separation inton an # d m(=n+1) jets) # RE(Q=HAD) E+ E- --&gt; HADRONS # RE(Q=2JET) E+ E- --&gt; 2JET X # RE(Q=3JET) E+ E- --&gt; 3JET X # RE(Q=4JET) E+ E- --&gt; 4JET X # RE(Q=5JET) E+ E- --&gt; 5JET X # RE(Q=.GE.6JET) E+ E- --&gt; .GE.6JET X # SQRT(S) IN GEV 91 # x = Ynm # y = D(SIG)/DY23 # x1 TO x2 y +- dy +- dsys 3.16E-05 4.22E-05 2.672 2.248 2.296 4.22E-05 5.62E-05 2.984 1.821 2.024 5.62E-05 7.50E-05 2.482 0.662 1.502 7.50E-05 1.00E-04 5.199 0.867 2.085 1.00E-04 1.33E-04 11.11 1.05 4.56 1.33E-04 1.78E-04 24.82 1.45 6.57 1.78E-04 2.37E-04 43.76 1.56 10.18 2.37E-04 3.16E-04 80.73 1.93 15.48 3.16E-04 4.22E-04 121.9 2.1 19.2 4.22E-04 5.62E-04 166.2 2.1 23.3 5.62E-04 7.50E-04 195.5 2.0 25.6 7.50E-04 1.00E-03 203.8 1.7 21.5 1.00E-03 1.33E-03 189.7 1.4 14.3 1.33E-03 1.78E-03 162.3 1.1 8.6 1.78E-03 2.37E-03 126.6 0.8 5.2 2.37E-03 3.16E-03 91.87 0.56 4.43 3.16E-03 4.22E-03 63.59 0.40 3.77 4.22E-03 5.62E-03 42.77 0.28 2.50 5.62E-03 7.50E-03 30.13 0.20 1.38 7.50E-03 1.00E-02 20.75 0.15 0.92 1.00E-02 1.33E-02 14.93 0.11 0.65 1.33E-02 1.78E-02 10.56 0.08 0.44 1.78E-02 2.37E-02 7.318 0.057 0.321 2.37E-02 3.16E-02 5.045 0.041 0.270 3.16E-02 4.22E-02 3.483 0.030 0.209 4.22E-02 5.62E-02 2.289 0.020 0.146 5.62E-02 7.50E-02 1.521 0.015 0.104 7.50E-02 1.00E-01 0.942 0.010 0.077 1.00E-01 1.33E-01 0.583 0.007 0.046 1.33E-01 1.78E-01 0.336 0.004 0.022 1.78E-01 2.37E-01 0.170 0.003 0.009 2.37E-01 3.16E-01 0.058 0.002 0.011 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.CosAlpha34.dat��������������������������0000644�0001750�0001750�00000001473�11754474774�026266� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# cos alpha34 from DELPHI -1.0 -0.9 0.05279 0.00079 0.00267 -0.9 -0.8 0.04785 0.00075 0.00236 -0.8 -0.7 0.04541 0.00073 0.00229 -0.7 -0.6 0.04407 0.00073 0.00227 -0.6 -0.5 0.04461 0.00074 0.00237 -0.5 -0.4 0.04225 0.00072 0.00224 -0.4 -0.3 0.04163 0.00071 0.00214 -0.3 -0.2 0.04166 0.00071 0.00225 -0.2 -0.1 0.04106 0.00071 0.00215 -0.1 0.0 0.04180 0.00072 0.00221 0.0 0.1 0.04171 0.00071 0.00213 0.1 0.2 0.04197 0.00071 0.00212 0.2 0.3 0.04193 0.00071 0.00208 0.3 0.4 0.04280 0.00072 0.00207 0.4 0.5 0.04245 0.00071 0.00196 0.5 0.6 0.04412 0.00074 0.00207 0.6 0.7 0.03966 0.00068 0.00163 0.7 0.8 0.03199 0.00058 0.00113 0.8 0.9 0.01450 0.00036 0.00033 0.9 1.0 0.000417 0.000062 0.000022 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.OneMinusThrust.dat����������������������0000644�0001750�0001750�00000001654�11754474774�027375� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # 1-Thrust distribution # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = 1-THRUST # y = (1/N)*D(N)/D(1-THRUST) # x1 TO x2 y +- dy +- dsys 0.000 0.010 1.030 0.019 0.076 0.010 0.020 10.951 0.051 0.527 0.020 0.030 17.645 0.066 0.547 0.030 0.040 14.192 0.061 0.292 0.040 0.050 10.009 0.050 0.152 0.050 0.060 7.572 0.044 0.101 0.060 0.070 5.760 0.038 0.076 0.070 0.080 4.619 0.034 0.062 0.080 0.090 3.792 0.031 0.051 0.090 0.100 3.176 0.028 0.042 0.100 0.120 2.456 0.018 0.032 0.120 0.140 1.825 0.015 0.022 0.140 0.160 1.401 0.013 0.016 0.160 0.180 1.074 0.011 0.011 0.180 0.200 0.8262 0.0100 0.0083 0.200 0.250 0.5525 0.0051 0.0065 0.250 0.300 0.3030 0.0038 0.0058 0.300 0.350 0.1312 0.0025 0.0044 0.350 0.400 0.0238 0.0012 0.0014 0.400 0.500 0.0007 0.0002 0.0001 ������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/Makefile.am������������������������������������0000644�0001750�0001750�00000001227�11754474774�025020� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������analysis2datadir = $(pkgdatadir)/Data LEPEVENTSHAPES = \ DELPHI.Aplanarity.dat \ DELPHI.BDiff.dat \ DELPHI.BMax.dat \ DELPHI.BMin.dat \ DELPHI.BSum.dat \ DELPHI.CParameter.dat \ DELPHI.DParameter.dat \ DELPHI.MDiff.dat \ DELPHI.MHigh.dat \ DELPHI.MLow.dat \ DELPHI.Oblateness.dat \ DELPHI.OneMinusThrust.dat \ DELPHI.Planarity.dat \ DELPHI.Sphericity.dat \ DELPHI.ThrustMajor.dat \ DELPHI.ThrustMinor.dat LEPYMERGE = \ OPAL.y23.dat \ OPAL.y34.dat \ OPAL.y45.dat \ OPAL.y56.dat LEPFOURJETS = \ DELPHI.CosAlpha34.dat \ DELPHI.CosPhiKSW.dat \ DELPHI.CosChiBZ.dat \ DELPHI.CosThetaNR.dat dist_analysis2data_DATA = \ $(LEPEVENTSHAPES) $(LEPYMERGE) $(LEPFOURJETS) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.DParameter.dat��������������������������0000644�0001750�0001750�00000002005�11754474774�026441� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # D-Parameter distribution # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = D-PARAMETER # y = (1/N)*D(N)/DD-PARAMETER # x1 TO x2 y +- dy +- dsys 0.000 0.008 22.228 0.082 0.868 0.008 0.016 22.766 0.085 0.440 0.016 0.030 12.107 0.047 0.150 0.030 0.044 6.879 0.035 0.079 0.044 0.066 4.284 0.022 0.053 0.066 0.088 2.727 0.018 0.036 0.088 0.112 1.909 0.014 0.028 0.112 0.136 1.415 0.012 0.022 0.136 0.162 1.051 0.010 0.018 0.162 0.188 0.7977 0.0089 0.0145 0.188 0.218 0.6155 0.0073 0.0117 0.218 0.248 0.4566 0.0063 0.0089 0.248 0.284 0.3341 0.0049 0.0065 0.284 0.320 0.2452 0.0042 0.0049 0.320 0.360 0.1774 0.0033 0.0037 0.360 0.400 0.1234 0.0028 0.0028 0.400 0.450 0.0902 0.0021 0.0023 0.450 0.500 0.0603 0.0017 0.0018 0.500 0.560 0.0368 0.0012 0.0013 0.560 0.620 0.0222 0.0009 0.0009 0.620 0.710 0.0128 0.0006 0.0006 0.710 0.800 0.0052 0.0004 0.0003 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.MLow.dat��������������������������������0000644�0001750�0001750�00000001072�11754474774�025276� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # Light-Hemisphere-Mass distribution # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = M(C=LIGHT-HEMISPHERE)**2/EVIS**2 # y = (1/N)*D(N)/D(M**2/EVIS**2) # x1 TO x2 y +- dy +- dsys 0.000 0.010 23.414 0.074 1.595 0.010 0.020 39.12 0.11 2.65 0.020 0.030 18.080 0.081 1.215 0.030 0.040 7.704 0.052 0.514 0.040 0.050 3.922 0.036 0.260 0.050 0.060 2.128 0.026 0.140 0.060 0.080 1.013 0.013 0.066 0.080 0.100 0.3748 0.0079 0.0241 0.100 0.120 0.1412 0.0050 0.0089 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.Oblateness.dat��������������������������0000644�0001750�0001750�00000001437�11754474774�026524� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # Oblateness distribution # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = OBLATENESS # y = (1/N)*D(N)/DOBLATENESS # x1 TO x2 y +- dy +- dsys 0.000 0.020 9.357 0.036 0.178 0.020 0.040 11.508 0.038 0.140 0.040 0.060 7.215 0.029 0.072 0.060 0.080 4.736 0.023 0.047 0.080 0.100 3.477 0.020 0.035 0.100 0.120 2.696 0.018 0.027 0.120 0.140 2.106 0.016 0.021 0.140 0.160 1.690 0.014 0.017 0.160 0.200 1.2648 0.0085 0.0126 0.200 0.240 0.8403 0.0069 0.0087 0.240 0.280 0.5674 0.0056 0.0065 0.280 0.320 0.3842 0.0046 0.0050 0.320 0.360 0.2573 0.0037 0.0043 0.360 0.400 0.1594 0.0029 0.0037 0.400 0.440 0.0836 0.0020 0.0030 0.440 0.520 0.0221 0.0007 0.0015 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.BDiff.dat�������������������������������0000644�0001750�0001750�00000001516�11754474774�025375� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ABREU 96 ZP C73,11 # Difference of the Hemisphere Broadening, BDIFF # E+ E- --> (CHARGED + NEUTRAL) X # SQRT(S) IN GEV 91.2 # x = BDIFF # y = (1/N)*D(N)/DBDIFF # x1 TO x2 y +- dy +- dsys 0.000 0.010 26.630 0.081 0.459 0.010 0.020 18.684 0.066 0.292 0.020 0.030 12.343 0.054 0.186 0.030 0.040 8.819 0.046 0.134 0.040 0.050 6.688 0.040 0.106 0.050 0.060 5.111 0.035 0.084 0.060 0.070 4.071 0.031 0.068 0.070 0.080 3.271 0.028 0.054 0.080 0.090 2.681 0.025 0.043 0.090 0.100 2.233 0.023 0.035 0.100 0.120 1.647 0.014 0.026 0.120 0.140 1.111 0.011 0.019 0.140 0.160 0.7618 0.0095 0.0144 0.160 0.180 0.5138 0.0078 0.0119 0.180 0.200 0.3167 0.0062 0.0098 0.200 0.240 0.1265 0.0026 0.0056 0.240 0.280 0.0117 0.0008 0.0008 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/DELPHI.CosPhiKSW.dat���������������������������0000644�0001750�0001750�00000001422�11754474774�026171� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# cos Phi KSW from DELPHI -1.0 -0.9 0.06378 0.00091 0.00362 -0.9 -0.8 0.03897 0.00066 0.00161 -0.8 -0.7 0.03558 0.00062 0.00143 -0.7 -0.6 0.03637 0.00065 0.00158 -0.6 -0.5 0.03597 0.00065 0.00157 -0.5 -0.4 0.03759 0.00067 0.00172 -0.4 -0.3 0.03696 0.00065 0.00165 -0.3 -0.2 0.03886 0.00068 0.00177 -0.2 -0.1 0.03801 0.00065 0.00157 -0.1 0.0 0.03783 0.00064 0.00143 0.0 0.1 0.03342 0.00060 0.00130 0.1 0.2 0.03096 0.00059 0.00141 0.2 0.3 0.03033 0.00060 0.00154 0.3 0.4 0.02974 0.00060 0.00158 0.4 0.5 0.02976 0.00061 0.00172 0.5 0.6 0.02979 0.00061 0.00172 0.6 0.7 0.03068 0.00062 0.00172 0.7 0.8 0.03399 0.00065 0.00191 0.8 0.9 0.04234 0.00072 0.00224 0.9 1.0 0.09341 0.00109 0.00560 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/Data/OPAL.y56.dat�����������������������������������0000644�0001750�0001750�00000003175�11754474774�024637� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#<html><head><title>HEPDATA Reaction Database</title></head> #<body bgcolor="#ffffff"> #<xmp> # PFEIFENSCNEIDER 99 EPJ C17,19 # Differential distributions in Ynm (the minimum YCUT for the separation inton an # d m(=n+1) jets) # RE(Q=HAD) E+ E- --&gt; HADRONS # RE(Q=2JET) E+ E- --&gt; 2JET X # RE(Q=3JET) E+ E- --&gt; 3JET X # RE(Q=4JET) E+ E- --&gt; 4JET X # RE(Q=5JET) E+ E- --&gt; 5JET X # RE(Q=.GE.6JET) E+ E- --&gt; .GE.6JET X # SQRT(S) IN GEV 91 # x = Ynm # y = D(SIG)/DY56 # x1 TO x2 y dy +- dsys 1.00E-05 1.33E-05 42.43 7.35 14.5 1.33E-05 1.78E-05 44.80 5.01 12.8 1.78E-05 2.37E-05 78.16 5.56 16.0 2.37E-05 3.16E-05 155.9 7.0 20. 3.16E-05 4.22E-05 309.6 8.9 44. 4.22E-05 5.62E-05 619.9 11.7 103. 5.62E-05 7.50E-05 1055.3 13.8 195. 7.50E-05 1.00E-04 1586.5 15.0 280. 1.00E-04 1.33E-04 2003.2 14.5 307. 1.33E-04 1.78E-04 2204.6 13.0 256. 1.78E-04 2.37E-04 2072.6 10.5 154. 2.37E-04 3.16E-04 1715.4 8.0 84. 3.16E-04 4.22E-04 1255.9 5.7 61. 4.22E-04 5.62E-04 841.2 4.0 51. 5.62E-04 7.50E-04 503.6 2.6 44. 7.50E-04 1.00E-03 273.2 1.6 33. 1.00E-03 1.33E-03 133.7 1.0 21. 1.33E-03 1.78E-03 58.54 0.55 12.1 1.78E-03 2.37E-03 23.36 0.30 6.2 2.37E-03 3.16E-03 8.336 0.157 2.86 3.16E-03 4.22E-03 2.735 0.080 1.24 4.22E-03 5.62E-03 0.874 0.042 0.49 5.62E-03 7.50E-03 0.253 0.020 0.19 7.50E-03 1.00E-02 0.084 0.012 0.07 1.00E-02 1.33E-02 0.012 0.003 0.02 1.33E-02 1.78E-02 0.003 0.002 0.01 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/KtJetFinder.h���������������������������������������0000644�0001750�0001750�00000013637�11754474774�024445� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #ifndef Analysis2_KtJetFinder_H #define Analysis2_KtJetFinder_H // // This is the declaration of the KtJetFinder class. // #include "JetFinder.h" #include "KtJetFinder.fh" #include "KtJet/KtEvent.h" #include <memory> namespace Analysis2 { using namespace ThePEG; /**\ingroup Analysis2 * * Interface to KtJet * * @author Simon Plaetzer * * @see \ref KtJetFinderInterfaces "The interfaces" * defined for KtJetFinder. */ class KtJetFinder: public JetFinder { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline KtJetFinder(); /** * The copy constructor. */ inline KtJetFinder(const KtJetFinder &); /** * The destructor. */ virtual ~KtJetFinder(); //@} public: /** * Set the event to be analysed. * The implementation of this method may * also do some conversion. */ virtual void use (const vector<Lorentz5Momentum>&, bool); /**@name Jet finding */ //@{ /** * Do inclusive jet finding */ virtual inline void findJets (); /** * Do exclusive jet-finding for nJets jets */ virtual inline void findJetsN (unsigned int nJets); /** * Do jet-finding up to the resolution scale */ virtual inline void findJetsD (); /** * Do exclusive jet-finding up to dimensionless resolution */ virtual inline void findJetsY (double y = -1.); /** * Resolution scale where n+1 jets merged to n */ virtual inline Energy getDMerge (unsigned int nJets) const; /** * Dimensionless scale where n+1 jets merged to n */ virtual inline double getYMerge (unsigned int nJets) const; //@} public: /**@name KtJet options */ //@{ /** * Get the collision type */ inline int collisionType () const; /** * Get the distance scheme */ inline int distanceScheme () const; /** * Get the recombination scheme */ inline int recombinationScheme () const; //@} protected: /** * Convert event to KtLorentzVector vector */ void convert (); /** * Convert KtLorenztVector vector to vector * of Lorentz5Momenta */ void convert (const vector<KtJet::KtLorentzVector>&); /** * Perform clustering in exclusive mode. */ void cluster (); /** * Perform clustering in inclusive mode. */ void clusterInclusive (); /** * Return the vector of KtLorenztVector's obtained * from the last event. */ inline const vector<KtJet::KtLorentzVector>& lastMomenta () const; /** * Return the last KtEvent obtained. */ inline const KtJet::KtEvent& lastKtEvent () 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The collision type */ int _collisionType; /** * The distance scheme */ int _distanceScheme; /** * The recombination scheme */ int _recombinationScheme; /** * KtLorentzVector's from last event */ vector<KtJet::KtLorentzVector> _lastMomenta; /** * Last KtEvent obtained */ std::auto_ptr<KtJet::KtEvent> _lastKtEvent; /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<KtJetFinder> initKtJetFinder; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ KtJetFinder & operator=(const KtJetFinder &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of KtJetFinder. */ template <> struct BaseClassTrait<Analysis2::KtJetFinder,1> { /** Typedef of the first base class of KtJetFinder. */ typedef Analysis2::JetFinder NthBase; }; /** This template specialization informs ThePEG about the name of * the KtJetFinder class and the shared object where it is defined. */ template <> struct ClassTraits<Analysis2::KtJetFinder> : public ClassTraitsBase<Analysis2::KtJetFinder> { /** Return a platform-independent class name */ static string className() { return "Analysis2::KtJetFinder"; } /** * The name of a file containing the dynamic library where the class * KtJetFinder is implemented. It may also include several, space-separated, * libraries if the class KtJetFinder depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "KtJetFinder.so Analysis2.so"; } }; /** @endcond */ } #include "KtJetFinder.icc" #ifndef ThePEG_TEMPLATES_IN_CC_FILE // #include "KtJetFinder.tcc" #endif #endif /* Analysis2_KtJetFinder_H */ �������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/GnuplotOutput.fh������������������������������������0000644�0001750�0001750�00000000523�11754474774�025301� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the GnuplotOutput class. // #ifndef Analysis2_GnuplotOutput_FH #define Analysis2_GnuplotOutput_FH #include "ThePEG/Config/Pointers.h" namespace Analysis2 { class GnuplotOutput; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Analysis2::GnuplotOutput,GnuplotOutputPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/EventShapes2.cc�������������������������������������0000644�0001750�0001750�00000034536�11754474774�024742� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de // Copyright (C) 2002-2007 The Herwig Collaboration #include "EventShapes2.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "EventShapes2.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Analysis2; EventShapes2::~EventShapes2() {} void EventShapes2::persistentOutput(PersistentOStream & os) const { // *** ATTENTION *** os << ; // Add all member variable which should be written persistently here. os << _omthr << _maj << _min << _obl << _sph << _apl << _pla << _c << _d << _mhi << _mlo << _mdiff << _bmax << _bmin << _bsum << _bdiff; } void EventShapes2::persistentInput(PersistentIStream & is, int) { // *** ATTENTION *** is >> ; // Add all member variable which should be read persistently here. is >> _omthr >> _maj >> _min >> _obl >> _sph >> _apl >> _pla >> _c >> _d >> _mhi >> _mlo >> _mdiff >> _bmax >> _bmin >> _bsum >> _bdiff; } ClassDescription<EventShapes2> EventShapes2::initEventShapes2; // Definition of the static class description member. void EventShapes2::Init() { static ClassDocumentation<EventShapes2> documentation ("Analyse event shapes"); static Parameter<EventShapes2,string> interfaceOneMinusThrust ("OneMinusThrust", "Options for 1-T", &EventShapes2::_omthr, "", false, false); static Parameter<EventShapes2,string> interfaceThrustMajor ("ThrustMajor", "Options for thrust major", &EventShapes2::_maj, "", false, false); static Parameter<EventShapes2,string> interfaceThrustMinor ("ThrustMinor", "Options for thrust minor", &EventShapes2::_min, "", false, false); static Parameter<EventShapes2,string> interfaceOblateness ("Oblateness", "Options for Oblateness", &EventShapes2::_obl, "", false, false); static Parameter<EventShapes2,string> interfaceSphericity ("Sphericity", "Options for Sphericity", &EventShapes2::_sph, "", false, false); static Parameter<EventShapes2,string> interfaceAplanarity ("Aplanarity", "Options for Aplanarity", &EventShapes2::_apl, "", false, false); static Parameter<EventShapes2,string> interfacePlanarity ("Planarity", "Options for Planarity", &EventShapes2::_pla, "", false, false); static Parameter<EventShapes2,string> interfaceCParameter ("CParameter", "Options for C parameter", &EventShapes2::_c, "", false, false); static Parameter<EventShapes2,string> interfaceDParameter ("DParameter", "Options for D parameter", &EventShapes2::_d, "", false, false); static Parameter<EventShapes2,string> interfaceMHigh ("MHigh", "Options for high hemisphere mass", &EventShapes2::_mhi, "", false, false); static Parameter<EventShapes2,string> interfaceMLow ("MLow", "Options for low hemisphere mass", &EventShapes2::_mlo, "", false, false); static Parameter<EventShapes2,string> interfaceMDiff ("MDiff", "Options for difference in hemisphere masses", &EventShapes2::_mdiff, "", false, false); static Parameter<EventShapes2,string> interfaceBMax ("BMax", "Options for wide jet broadening", &EventShapes2::_bmax, "", false, false); static Parameter<EventShapes2,string> interfaceBMin ("BMin", "Options for narrow jet broadening", &EventShapes2::_bmin, "", false, false); static Parameter<EventShapes2,string> interfaceBSum ("BSum", "Options for sum of jet broadening measures", &EventShapes2::_bsum, "", false, false); static Parameter<EventShapes2,string> interfaceBDiff ("BDiff", "Options for difference of jet broadening measures", &EventShapes2::_bdiff, "", false, false); } inline void EventShapes2::dofinish() { finish("OneMinusThrust"); finish("ThrustMajor"); finish("ThrustMinor"); finish("Oblateness"); finish("Sphericity"); finish("Aplanarity"); finish("Planarity"); finish("CParameter"); finish("DParameter"); finish("MHigh"); finish("MLow"); finish("MDiff"); finish("BMax"); finish("BMin"); finish("BSum"); finish("BDiff"); Analysis2Base::dofinish(); } inline void EventShapes2::doinit() throw(InitException) { Analysis2Base::doinit(); int plotFlags = HistogramOutput::Ylog | HistogramOutput::Frame | HistogramOutput::Errorbars; Histogram2Options options (plotFlags); insert("OneMinusThrust", _omthr,options); insert("ThrustMajor", _maj,options); insert("ThrustMinor", _min,options); insert("Oblateness", _obl,options); insert("Sphericity", _sph,options); insert("Aplanarity", _apl,options); insert("Planarity", _pla,options); insert("CParameter", _c,options); insert("DParameter", _d,options); insert("MHigh", _mhi,options); insert("MLow", _mlo,options); insert("MDiff", _mdiff,options); insert("BMax", _bmax,options); insert("BMin", _bmin,options); insert("BSum", _bsum,options); insert("BDiff", _bdiff,options); } void EventShapes2::analyze(const tPVector &) { pair<vector<Lorentz5Momentum>,double> ev; while (*eventExtractor() >> ev) { reset(ev.first); book(1.-thrust(), "OneMinusThrust", ev.second); book(thrustMajor(), "ThrustMajor", ev.second); book(thrustMinor(), "ThrustMinor", ev.second); book(oblateness(), "Oblateness", ev.second); book(CParameter(), "CParameter", ev.second); book(DParameter(), "DParameter", ev.second); book(sphericity(), "Sphericity", ev.second); book(aplanarity(), "Aplanarity", ev.second); book(planarity(), "Planarity", ev.second); book(Mhigh2(), "MHigh", ev.second); book(Mlow2(), "MLow", ev.second); book(Mdiff2(), "MDiff", ev.second); book(Bmax(), "BMax", ev.second); book(Bmin(), "BMin", ev.second); book(Bsum(), "BSum", ev.second); book(Bdiff(), "BDiff", ev.second); } } vector<double> EventShapes2::eigenvalues(const double T[3][3]) { vector<double> lambda; if (_pv.size() > 2) { // b, c, d are the coefficients of the characteristic polynomial, // a lambda^3 + b lambda^2 + c lambda + d // where a is chosen to be +1. double t11, t12, t13, t22, t23, t33; t11 = T[0][0]; t12 = T[0][1]; t13 = T[0][2]; t22 = T[1][1]; t23 = T[1][2]; t33 = T[2][2]; double b = -(t11 + t22 + t33); double c = t11*t22 + t11*t33 + t22*t33 - sqr(t12) - sqr(t13) - sqr(t23); double d = - t11*t22*t33 - 2.*t12*t23*t13 + t11*sqr(t23) + t22*sqr(t13) + t33*sqr(t12); // use Cardano's formula to compute the zeros double p = (3.*c - sqr(b))/3.; double q = (2.*sqr(b)*b - 9.*b*c + 27.*d)/27.; // check diskriminant if (4.*p*sqr(p) + 27.*sqr(q) > 0) { for (unsigned int i=0; i<3; i++) { lambda.push_back(-1.); } cout << flush << "EventShapes2::eigenvalues: found D > 0! \n" << "Matrix doesn't have real Eigenvalues in this case\n" << "(event with " << _pv.size() << " final state particles)\n"; cout << flush << "| " << T[0][0] << " " << T[0][1] << " " << T[0][2] << " |\n" << "| " << T[1][0] << " " << T[1][1] << " " << T[1][2] << " |\n" << "| " << T[2][0] << " " << T[2][1] << " " << T[2][2] << " |\n" << flush; } else { // get solutions double alpha = acos(-q/2.*sqrt(-27./(p*p*p)))/3.; double w = sqrt(-4.*p/3.); lambda.push_back(w*cos(alpha) - b/3.); lambda.push_back(-w*cos(alpha+M_PI/3.) - b/3.); lambda.push_back(-w*cos(alpha-M_PI/3.) - b/3.); } } else { // linear and sphericity coincide for ideal back-to-back // as q_i q_j/(2 q^2) where q = p_1 = -p_2 // eigenvalues trivial to get double mag2 = _pv[0].vect().mag2() / MeV2; double q1 = _pv[0].vect().x() / MeV; double q2 = _pv[0].vect().y() / MeV; double q3 = _pv[0].vect().z() / MeV; lambda.resize(3); lambda[0] = sqr(q1)/(2.*mag2); lambda[1] = sqr(q2)/(2.*mag2); lambda[2] = sqr(q3)/(2.*mag2); } // sort according to size of eigenvalues // such that lambda[0] > lambda[1] > lambda[2] if (lambda[0] < lambda[1]) { swap(lambda[0], lambda[1]); } if (lambda[0] < lambda[2]) { swap(lambda[0], lambda[2]); } if (lambda[1] < lambda[2]) { swap(lambda[1], lambda[2]); } return lambda; } Axis EventShapes2::eigenvector(const double T[3][3], const double &lam) { // set up matrix of system to be solved double a11, a12, a13, a23, a33; a11 = T[0][0] - lam; a12 = T[0][1]; a13 = T[0][2]; a23 = T[1][2]; a33 = T[2][2] - lam; // intermediate steps from gauss type algorithm double b1, b2, b4; b1 = a11*a33 - sqr(a13); b2 = a12*a33 - a13*a23; b4 = a11*a23 - a12*a13; // eigenvector Axis u(b2, -b1, b4); return u.unit(); } vector<Axis> EventShapes2:: eigenvectors(const double T[3][3], const vector<double> &lam) { vector<Axis> n; for (unsigned int i=0; i<3; i++) { n.push_back(eigenvector(T, lam[i])); } return n; } void EventShapes2::diagonalizeTensors(bool linear, bool cmboost) { // initialize double Theta[3][3]; for(int i=0; i<3; i++) { for(int j=0; j<3; j++) { Theta[i][j] = 0.0; } } double sum = 0.; Momentum3 sumvec; vector<double> lam; vector<Axis> n; // get cm-frame Lorentz5Momentum pcm = Lorentz5Momentum(); Boost beta; if (cmboost) { for(unsigned int ix=0;ix<_pv.size();++ix) { pcm += _pv[ix]; } beta = pcm.findBoostToCM(); } // get Theta_ij for(unsigned int ix=0;ix<_pv.size();++ix) { Lorentz5Momentum dum(_pv[ix]); if (cmboost) { dum.boost( beta ); } Momentum3 pvec = dum.vect(); double pvec_MeV[3] = {pvec.x()/MeV, pvec.y()/MeV, pvec.z()/MeV}; if (pvec.mag() > 0*MeV) { sumvec += pvec; if (linear) { sum += pvec.mag()*UnitRemoval::InvE; } else { sum += pvec.mag2()*UnitRemoval::InvE2; } for(int i=0; i<3; i++) { for(int j=i; j<3; j++) { if (linear) { Theta[i][j] += (pvec_MeV[i])*(pvec_MeV[j])*MeV/(pvec.mag()); } else { Theta[i][j] += (pvec_MeV[i])*(pvec_MeV[j]); } } } } } for(int i=0; i<3; i++) { for(int j=0; j<3; j++) { Theta[i][j] /= sum; } } // diagonalize it lam = eigenvalues(Theta); n = eigenvectors(Theta, lam); if (linear) { _linTen = lam; _linTenAxis = n; } else { _spher = lam; _spherAxis = n; } } void EventShapes2::calculateThrust() { // explicitly calculate in units of MeV // algorithm based on Brandt/Dahmen Z Phys C1 (1978) // and 'tasso' code from HERWIG // assumes all momenta in cm system, no explicit boost performed here! // unlike for C and D _thrust.clear(); _thrustAxis.clear(); if (_pv.size() < 2) { for (int i=0; i<3; i++) { _thrust.push_back(-1); _thrustAxis.push_back(Axis()); } return; } // thrust vector<Momentum3> p; Energy psum = 0.0*MeV; for(unsigned int l=0; l<_pv.size(); l++) { p.push_back(_pv[l].vect()); psum += p.back().mag(); } Axis axis; if (p.size() == 2) { _thrust.push_back(1.0); _thrust.push_back(0.0); _thrust.push_back(0.0); axis = p[0].unit(); if (axis.z() < 0) axis = -axis; _thrustAxis.push_back(axis); _thrustAxis.push_back(axis.orthogonal()); axis = _thrustAxis[0].cross(_thrustAxis[1]); return; } if (p.size() == 3) { if (p[0].mag2() < p[1].mag2()) swap(p[0], p[1]); if (p[0].mag2() < p[2].mag2()) swap(p[0], p[2]); if (p[1].mag2() < p[2].mag2()) swap(p[1], p[2]); // thrust axis = p[0].unit(); if (axis.z() < 0) axis = -axis; _thrust.push_back(2.*p[0].mag()/psum); _thrustAxis.push_back(axis); // major axis = (p[1] - (axis*p[1])*axis).unit(); if (axis.x() < 0) axis = -axis; _thrust.push_back((abs(p[1]*axis) + abs(p[2]*axis))/psum); _thrustAxis.push_back(axis); // minor _thrust.push_back(0.0); axis = _thrustAxis[0].cross(_thrustAxis[1]); _thrustAxis.push_back(axis); return; } // ACHTUNG special case with >= 4 coplanar particles will still fail. // probably not too important... Energy2 val; calcT(p, val, axis); _thrust.push_back(sqrt(val)/psum); if (axis.z() < 0) axis = -axis; _thrustAxis.push_back(axis.unit()); //major Momentum3 par; for (unsigned int l=0; l<_pv.size(); l++) { par = (p[l]*axis.unit())*axis.unit(); p[l] = p[l] - par; } calcM(p, val, axis); _thrust.push_back(sqrt(val)/psum); if (axis.x() < 0) axis = -axis; _thrustAxis.push_back(axis.unit()); // minor if (_thrustAxis[0]*_thrustAxis[1] < 1e-10) { Energy eval = 0.*MeV; axis = _thrustAxis[0].cross(_thrustAxis[1]); _thrustAxis.push_back(axis); for (unsigned int l=0; l<_pv.size(); l++) eval += abs(axis*_pv[l].vect()); _thrust.push_back(eval/psum); } else { _thrust.push_back(-1.0); _thrustAxis.push_back(Axis()); } } void EventShapes2::calcT(const vector<Momentum3> &p, Energy2 &t, Axis &taxis) { Energy2 tval; t = 0.0*MeV2; ThreeVector<Energy2> tv; Momentum3 ptot; vector<Momentum3> cpm; for (unsigned int k=1; k < p.size(); k++) { for (unsigned int j=0; j<k; j++) { tv = p[j].cross(p[k]); ptot = Momentum3(); for (unsigned int l=0; l<p.size(); l++) { if (l!=j && l!=k) { if (p[l]*tv > 0.0*MeV*MeV2) { ptot += p[l]; } else { ptot -= p[l]; } } } cpm.clear(); cpm.push_back(ptot-p[j]-p[k]); cpm.push_back(ptot-p[j]+p[k]); cpm.push_back(ptot+p[j]-p[k]); cpm.push_back(ptot+p[j]+p[k]); for (vector<Momentum3>::iterator it = cpm.begin(); it != cpm.end(); it++) { tval = it->mag2(); if (tval > t) { t = tval; taxis = it->unit(); } } } } } void EventShapes2::calcM(const vector<Momentum3> &p, Energy2 &m, Axis &maxis) { Energy2 mval; m = 0.0 * MeV2; Momentum3 tv, ptot; vector<Momentum3> cpm; for (unsigned int j=0; j < p.size(); j++) { tv = p[j]; ptot = Momentum3(); for (unsigned int l=0; l<p.size(); l++) { if (l!=j) { if (p[l]*tv > 0.0*MeV2) { ptot += p[l]; } else { ptot -= p[l]; } } } cpm.clear(); cpm.push_back(ptot-p[j]); cpm.push_back(ptot+p[j]); for (vector<Momentum3>::iterator it = cpm.begin(); it != cpm.end(); it++) { mval = it->mag2(); if (mval > m) { m = mval; maxis = it->unit(); } } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/YMerge.icc������������������������������������������0000644�0001750�0001750�00000000710�11754474774�023757� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de namespace Analysis2 { inline YMerge::YMerge() : _nMax(5), _options(6,""), _yn() {} inline IBPtr YMerge::clone() const { return new_ptr(*this); } inline IBPtr YMerge::fullclone() const { return new_ptr(*this); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). } ��������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/KtJetFinder.fh��������������������������������������0000644�0001750�0001750�00000000507�11754474774�024603� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the KtJetFinder class. // #ifndef Analysis2_KtJetFinder_FH #define Analysis2_KtJetFinder_FH #include "ThePEG/Config/Pointers.h" namespace Analysis2 { class KtJetFinder; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Analysis2::KtJetFinder,KtJetFinderPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/YMerge.h��������������������������������������������0000644�0001750�0001750�00000011306�11754474774�023453� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #ifndef Analysis2_YMerge_H #define Analysis2_YMerge_H // // This is the declaration of the YMerge class. // #include "Analysis2Base.h" #include "YMerge.fh" namespace Analysis2 { using namespace ThePEG; /**\ingroup Analysis2 * * Analysis for jet merging scales, * divided by visible energy from n+1 to n jets. * * @author Simon Plaetzer * * @see \ref YMergeInterfaces "The interfaces" * defined for YMerge. */ class YMerge: public Analysis2Base { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline YMerge(); /** * The destructor. */ virtual ~YMerge(); //@} public: /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Insert options for a given n */ string Y (string); 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. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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() throw(InitException); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The maximum n up to which rates should * be booked (remember y_{n,n+1} !), * starting from n=2 */ unsigned int _nMax; /** * A vector of option strings, one for each n * The convention is that element 0,1 are ignored, * 2 gives options for y23, ... */ vector<string> _options; /** * Vector of the observable names */ vector<string> _yn; /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<YMerge> initYMerge; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ YMerge & operator=(const YMerge &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of YMerge. */ template <> struct BaseClassTrait<Analysis2::YMerge,1> { /** Typedef of the first base class of YMerge. */ typedef Analysis2::Analysis2Base NthBase; }; /** This template specialization informs ThePEG about the name of * the YMerge class and the shared object where it is defined. */ template <> struct ClassTraits<Analysis2::YMerge> : public ClassTraitsBase<Analysis2::YMerge> { /** Return a platform-independent class name */ static string className() { return "Analysis2::YMerge"; } /** * The name of a file containing the dynamic library where the class * YMerge is implemented. It may also include several, space-separated, * libraries if the class YMerge depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "Analysis2.so"; } }; /** @endcond */ } #include "YMerge.icc" #ifndef ThePEG_TEMPLATES_IN_CC_FILE // #include "YMerge.tcc" #endif #endif /* Analysis2_YMerge_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Analysis2/FastJetFinder.cc������������������������������������0000644�0001750�0001750�00000011747�11754474774�025122� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #include "FastJetFinder.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "FastJetFinder.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Analysis2; FastJetFinder::~FastJetFinder() {} void FastJetFinder::persistentOutput(PersistentOStream & os) const { // *** ATTENTION *** os << ; // Add all member variable which should be written persistently here. os << _jetFinder << _strategy << _recombinationScheme; } void FastJetFinder::persistentInput(PersistentIStream & is, int) { // *** ATTENTION *** is >> ; // Add all member variable which should be read persistently here. is >> _jetFinder >> _strategy >> _recombinationScheme; } ClassDescription<FastJetFinder> FastJetFinder::initFastJetFinder; // Definition of the static class description member. void FastJetFinder::Init() { static ClassDocumentation<FastJetFinder> documentation ("JetFinder using the FastJetFinder library."); static Switch<FastJetFinder,int> interfaceJetFinder ("JetFinder", "Set the jet finder type", &FastJetFinder::_jetFinder, 0, false, false); static SwitchOption interfaceJetFinderkt_algorithm (interfaceJetFinder, "kt_algorithm", "kt_algorithm", 0); static SwitchOption interfaceJetFindercambridge_algorithm (interfaceJetFinder, "cambridge_algorithm", "cambridge_algorithm", 1); static Switch<FastJetFinder,int> interfaceStrategy ("Strategy", "The strategy used by FastJetFinder", &FastJetFinder::_strategy, 1, false, false); static SwitchOption interfaceStrategyN2MinHeapTiled (interfaceStrategy, "N2MinHeapTiled", "N2MinHeapTiled", -4); static SwitchOption interfaceStrategyN2Tiled (interfaceStrategy, "N2Tiled", "N2Tiled", -3); static SwitchOption interfaceStrategyN2PoorTiled (interfaceStrategy, "N2PoorTiled", "N2PoorTiled", -2); static SwitchOption interfaceStrategyN2Plain (interfaceStrategy, "N2Plain", "N2Plain", -1); static SwitchOption interfaceStrategyN3Dumb (interfaceStrategy, "N3Dumb", "N3Dumb", 0); static SwitchOption interfaceStrategyBest (interfaceStrategy, "Best", "Best", 1); static SwitchOption interfaceStrategyNlnN (interfaceStrategy, "NlnN", "NlnN", 2); static SwitchOption interfaceStrategyNlnN3pi (interfaceStrategy, "NlnN3pi", "NlnN3pi", 3); static SwitchOption interfaceStrategyNlnN4pi (interfaceStrategy, "NlnN4pi", "NlnN4pi", 4); static Switch<FastJetFinder,int> interfaceRecombinationScheme ("RecombinationScheme", "The recombination scheme to be used", &FastJetFinder::_recombinationScheme, 0, false, false); static SwitchOption interfaceRecombinationSchemeE_scheme (interfaceRecombinationScheme, "E_scheme", "E_scheme", 0); static SwitchOption interfaceRecombinationSchemept_scheme (interfaceRecombinationScheme, "pt_scheme", "pt_scheme", 1); static SwitchOption interfaceRecombinationSchemept2_scheme (interfaceRecombinationScheme, "pt2_scheme", "pt2_scheme", 2); static SwitchOption interfaceRecombinationSchemeEt_scheme (interfaceRecombinationScheme, "Et_scheme", "Et_scheme", 3); static SwitchOption interfaceRecombinationSchemeEt2_scheme (interfaceRecombinationScheme, "Et2_scheme", "Et2_scheme", 4); static SwitchOption interfaceRecombinationSchemeBIpt_scheme (interfaceRecombinationScheme, "BIpt_scheme", "BIpt_scheme", 5); static SwitchOption interfaceRecombinationSchemeBIpt2_scheme (interfaceRecombinationScheme, "BIpt2_scheme", "BIpt2_scheme", 6); } void FastJetFinder::convert () { _lastPseudojets.clear(); Lorentz5Momentum sum = Lorentz5Momentum (0.*GeV,0.*GeV,0.*GeV,0.*GeV); for(vector<Lorentz5Momentum>::const_iterator p = lastEvent().begin(); p != lastEvent().end(); ++p) { sum = sum + (*p).momentum(); _lastPseudojets.push_back(fastjet::PseudoJet((*p).momentum().x()/GeV, (*p).momentum().y()/GeV, (*p).momentum().z()/GeV, (*p).momentum().t()/GeV )); } _E2vis = sum.m2(); } void FastJetFinder::convert (const vector<fastjet::PseudoJet>& pv) { list<Lorentz5Momentum> tmp; for(vector<fastjet::PseudoJet>::const_iterator p =pv.begin(); p != pv.end(); ++p) { tmp.push_back(Lorentz5Momentum((*p).px()*GeV,(*p).py()*GeV,(*p).pz()*GeV,(*p).e()*GeV)); } jets(tmp); } void FastJetFinder::cluster () { _lastClusterSequence = std::auto_ptr<fastjet::ClusterSequence> (new fastjet::ClusterSequence(_lastPseudojets,_jetDefinition)); } void FastJetFinder::use (const vector<Lorentz5Momentum>& evt, bool) { JetFinder::use(evt); _lastPseudojets.clear(); convert(); cluster(); } �������������������������herwig++-2.6.0.orig/Contrib/Analysis2/include/������������������������������������������������������0000755�0001750�0001750�00000000000�11756464211�021652� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/include/Makefile.in�������������������������������������������0000644�0001750�0001750�00000000000�11756461505�023710� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/include/Makefile.am�������������������������������������������0000644�0001750�0001750�00000001046�11754474774�023724� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BUILT_SOURCES = done-all-links AUTOMAKE_OPTIONS = -Wno-portability DIRLINKS = \ $(top_srcdir)/Histogram2 \ $(top_srcdir)/Analysis2 CLEANFILES = done-all-links done-all-links: $(DIRLINKS) mkdir -p Analysis2 $(LN_S) -f $(addprefix ../, $(DIRLINKS)) Analysis2 touch done-all-links install-data-local: find Analysis2 -follow \( -name '*.h' -or -name '*.cc' -or -name '*.tcc' \) \ -exec $(install_sh_DATA) \{\} $(DESTDIR)$(includedir)/\{\} \; uninstall-local: rm -rf $(DESTDIR)$(includedir)/Analysis2 clean-local: rm -rf Analysis2 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Makefile.am���������������������������������������������������0000644�0001750�0001750�00000000112�11754474774�022272� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������SUBDIRS = include \ Histogram2 \ Analysis2 \ src ACLOCAL_AMFLAGS = -I m4 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/configure.ac��������������������������������������������������0000644�0001750�0001750�00000002452�11754474774�022535� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.59]) AC_INIT([Analysis2],[SVN],[sp@particle.uni-karlsruhe.de],[Analysis2]) AC_CONFIG_SRCDIR([Histogram2/Histogram2.h]) AC_CONFIG_AUX_DIR([config]) AC_CONFIG_MACRO_DIR([m4]) AC_CANONICAL_HOST case "${host}" in *-darwin[[0156]].*) AC_MSG_ERROR([Analysis2 requires OS X 10.3 or later]) ;; *-darwin7.*) if test "x$MACOSX_DEPLOYMENT_TARGET" != "x10.3"; then AC_MSG_ERROR( [Please add 'MACOSX_DEPLOYMENT_TARGET=10.3' to the configure line.]) fi ;; esac dnl === disable debug symbols by default ===== if test "x$CXXFLAGS" = "x"; then CXXFLAGS=-O3 fi if test "x$CFLAGS" = "x"; then CFLAGS=-O3 fi dnl ========================================== AC_LANG([C++]) AM_INIT_AUTOMAKE([1.9 gnu dist-bzip2 -Wall]) dnl Checks for programs. AC_PROG_CXX AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_LN_S AC_PROG_LIBTOOL dnl LT_PREREQ([2.2]) dnl LT_INIT([disable-static dlopen pic-only]) ANALYSIS2_CHECK_GSL ANALYSIS2_CHECK_THEPEG ANALYSIS2_CHECK_CLHEP ANALYSIS2_CHECK_KTJET ANALYSIS2_CHECK_FASTJET ANALYSIS2_COMPILERFLAGS AC_CONFIG_FILES([Histogram2/Makefile Analysis2/Makefile Analysis2/Data/Makefile src/Makefile include/Makefile Makefile]) ANALYSIS2_OVERVIEW AC_OUTPUT ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Histogram2/���������������������������������������������������0000755�0001750�0001750�00000000000�11756464211�022246� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Histogram2/Makefile.in����������������������������������������0000644�0001750�0001750�00000000000�11756461505�024304� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Histogram2/Histogram2Output.cc��������������������������������0000644�0001750�0001750�00000004334�11754474774�026036� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #include "Histogram2Output.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "Histogram2Output.tcc" #endif using namespace Analysis2; Histogram2Output::~Histogram2Output() {} void Histogram2Output::persistentOutput(PersistentOStream & os) const { // *** ATTENTION *** os << ; // Add all member variable which should be written persistently here. os << _prefix << _mctitle; } void Histogram2Output::persistentInput(PersistentIStream & is, int) { // *** ATTENTION *** is >> ; // Add all member variable which should be read persistently here. is >> _prefix >> _mctitle; } ClassDescription<Histogram2Output> Histogram2Output::initHistogram2Output; // Definition of the static class description member. void Histogram2Output::Init() { static ClassDocumentation<Histogram2Output> documentation ("Histogram2Output is the base class for all output options" " for Histogram2 objects."); static Parameter<Histogram2Output,string> interfacePrefix ("Prefix", "Set the output file or prefix.", &Histogram2Output::_prefix, "", false, false); static Parameter<Histogram2Output,string> interfaceMcTitle ("MCModel", "Set the name for the MC model used.", &Histogram2Output::_mctitle, "", false, false); } void Histogram2Output::initialize (const string& name) { if (_out.is_open()) _out.close(); _out.open((prefix()+name+".dat").c_str()); } void Histogram2Output::put (Histogram2Ptr histo, const Histogram2Options& options, const string&) { initialize(histo->name()); currentOStream () << "# The following histograms have been produced by\n" << "# by Analysis2 " << "\n" << "# unless a channel is explictly marked as data.\n" << "# A model used is refered to " << _mctitle << "\n" << endl; vector<string> channels = histo->channels(); for (vector<string>::iterator c = channels.begin(); c != channels.end(); ++c) { histo->output(currentOStream(),*c, options.channelFlags); currentOStream() << endl << endl; } } ostream& Histogram2Output::currentOStream () { return _out; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Histogram2/Histogram2.fh��������������������������������������0000644�0001750�0001750�00000000501�11754474774�024615� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the Histogram2 class. // #ifndef Analysis2_Histogram2_FH #define Analysis2_Histogram2_FH #include "ThePEG/Config/Pointers.h" namespace Analysis2 { class Histogram2; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Analysis2::Histogram2,Histogram2Ptr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Histogram2/Histogram2Output.icc�������������������������������0000644�0001750�0001750�00000003070�11754474774�026203� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de namespace Analysis2 { inline Histogram2Output::Histogram2Output() : _prefix(""), _mctitle(""), _out() {} inline Histogram2Output::Histogram2Output(const Histogram2Output & x) : Interfaced(x), _prefix(x._prefix), _mctitle(x._mctitle), _out() {} inline IBPtr Histogram2Output::clone() const { return new_ptr(*this); } inline IBPtr Histogram2Output::fullclone() const { return new_ptr(*this); } inline string Histogram2Output::prefix () const { return _prefix; } inline string Histogram2Output::mctitle () const { return _mctitle; } inline void Histogram2Output::initialize () { } inline void Histogram2Output::finalize () { } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). inline void Histogram2Output::dofinish() { Interfaced::dofinish(); finalize(); } inline void Histogram2Output::doinitrun() { Interfaced::doinitrun(); initialize(); } inline PersistentOStream& operator << (PersistentOStream& os, const Histogram2Options& options) { os << options.plotFlags << options.channelFlags << options.title << options.datatitle << options.xlabel << options.ylabel << options.differential; return os; } inline PersistentIStream& operator >> (PersistentIStream& is, Histogram2Options& options) { is >> options.plotFlags >> options.channelFlags >> options.title >> options.datatitle >> options.xlabel >> options.ylabel >> options.differential; return is; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Histogram2/Makefile.am����������������������������������������0000644�0001750�0001750�00000000315�11754474774�024316� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHistogram2.la libHistogram2_la_SOURCES = \ Histogram2.h Histogram2.fh Histogram2.icc Histogram2.cc \ Histogram2Output.h Histogram2Output.fh Histogram2Output.icc Histogram2Output.cc �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Histogram2/Histogram2.icc�������������������������������������0000644�0001750�0001750�00000022611�11754474774�024764� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de // workaround for OS X bug where isnan() and isinf() are hidden // when <iostream> is included extern "C" int isnan(double) throw(); extern "C" int isinf(double) throw(); namespace Analysis2 { inline PersistentOStream& operator << (PersistentOStream& os, const HistogramChannel& h) { h.persistentOutput(os); return os; } inline PersistentIStream& operator >> (PersistentIStream& is, HistogramChannel& h) { h.persistentInput(is); return is; } inline string getNextTag (istream& is) { string line = ""; while (line == "") { if (!is) return ""; getline(is,line); line = StringUtils::stripws(line); if (line.length() && line[0] != '<') { line = ""; continue; } if (line.length() && line[0] == '<') { string::size_type a = line.find_first_of("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/"); if (a != 1) { line = ""; continue; } } } return line; } inline HistogramChannel::HistogramChannel () : _isCountingChannel(true), _bins(vector<pair<double,double> >()), _binEntries(vector<unsigned long>()), _outOfRange(make_pair(0.,0.)), _visible(0), _total(0), _nanEvents(0), _nanWeights(vector<unsigned long>()), _finished(false) {} inline HistogramChannel::HistogramChannel (unsigned int bins, bool counting) : _isCountingChannel(counting), _bins(bins,make_pair(0.,0.)), _binEntries(bins,0), _outOfRange(make_pair(0.,0.)), _visible(0), _total(0), _nanEvents(0), _nanWeights(bins,0), _finished(false) {} inline HistogramChannel::HistogramChannel (const vector<pair<double,double> >& bins, double underflow, double overflow) : _isCountingChannel(false), _bins(bins), _binEntries(bins.size(),0), _outOfRange(make_pair(underflow,overflow)), _visible(0), _total(0), _nanEvents(0), _nanWeights(bins.size(),0), _finished(false) {} inline void HistogramChannel::book (unsigned int bin, double weight) { if (isnan(weight) || isinf(weight)) { ++_nanWeights[bin]; return; } _bins[bin].first += weight; _bins[bin].second += sqr(weight); ++_binEntries[bin]; ++_visible; ++_total; } inline void HistogramChannel::bookUnderflow (double weight) { _outOfRange.first += weight; ++_total; } inline void HistogramChannel::bookOverflow (double weight) { _outOfRange.second += weight; ++_total; } inline void HistogramChannel::nanEvent () { ++_nanEvents; } inline HistogramChannel& HistogramChannel::operator /= (double a) { return this->operator *= (1/a); } inline bool HistogramChannel::isCountingChannel () const { return _isCountingChannel; } inline vector<pair<double,double> > HistogramChannel::bins () const { return _bins; } inline pair<double,double> HistogramChannel::bin (unsigned int bin) const { return _bins[bin]; } inline void HistogramChannel::bin (unsigned int bin, pair<double,double> val, unsigned long entries) { _bins[bin] = val; if (entries > 0) { _visible = _visible - _binEntries[bin] + entries; _binEntries[bin] = entries; } } inline vector<unsigned long> HistogramChannel::binEntries () const { return _binEntries; } inline unsigned long HistogramChannel::binEntries (unsigned int bin) const { return _binEntries[bin]; } inline pair<double,double> HistogramChannel::outOfRange () const { return _outOfRange; } inline unsigned long HistogramChannel::visible () const { return _visible; } inline unsigned long HistogramChannel::total () const { return _total; } inline vector<unsigned long> HistogramChannel::nanWeights () const { return _nanWeights; } inline unsigned long HistogramChannel::nanEvents () const { return _nanEvents; } inline void HistogramChannel::finish () { if (_finished) return; _finished = true; } inline double HistogramChannel::binVariance (unsigned int bin) const { return _bins[bin].second; } inline double HistogramChannel::weightMean (unsigned int bin) const { return _binEntries[bin] > 0 ? _bins[bin].first/_binEntries[bin] : 0.; } inline double HistogramChannel::weightVariance (unsigned int bin) const { return _binEntries[bin] > 1 ? (_bins[bin].second-sqr(_bins[bin].first)/_binEntries[bin])/(_binEntries[bin] - 1) : 0.; } inline pair<double,double> HistogramChannel::binAverage () const { return make_pair(binSum().first/_bins.size(),binSum().second/(_bins.size()*_bins.size())); } inline HistogramChannel operator + (const HistogramChannel& a, const HistogramChannel& b) { HistogramChannel c(a); c += b; return c; } inline HistogramChannel operator - (const HistogramChannel& a, const HistogramChannel& b) { HistogramChannel c(a); c -= b; return c; } inline HistogramChannel operator * (const HistogramChannel& a, const HistogramChannel& b) { HistogramChannel c(a); c *= b; return c; } inline HistogramChannel operator / (const HistogramChannel& a, const HistogramChannel& b) { HistogramChannel c(a); c /= b; return c; } inline Histogram2::Histogram2 () : _binning(), _binhash(), _channels(), _xSec(0.*nanobarn) { } inline void Histogram2::setName (const string& name) { Named::name(name); } inline bool Histogram2::haveChannel (const string& name) const { return _channels.find(name) != _channels.end(); } inline HistogramChannel& Histogram2::channel (const string& name) { return _channels.find(name)->second; } inline HistogramChannel Histogram2::channel (const string& name) const { map<string,HistogramChannel>::const_iterator c = _channels.find(name); if (c != _channels.end()) return c->second; return HistogramChannel (0); } inline void Histogram2::insertChannel (const string& name, const HistogramChannel& c) { _channels.insert(make_pair(name,c)); } inline void Histogram2::insertChannel (const string& name) { _channels.insert(make_pair(name,HistogramChannel(_binning.size()))); } inline HistogramChannel Histogram2::removeChannel (const string& name) { map<string,HistogramChannel>::iterator c = _channels.find(name); if (c != _channels.end()) { HistogramChannel rem (c->second); _channels.erase(c); return rem; } return HistogramChannel(0); } inline const vector<pair<double,double> >& Histogram2::binning () const { return _binning; } inline const map<double,unsigned int>& Histogram2::binhash () const { return _binhash; } inline pair<double,double> Histogram2::range () const { return _range; } inline CrossSection Histogram2::xSec () const { return _xSec; } inline void Histogram2::xSec (CrossSection xs) { _xSec = xs; } inline void Histogram2::finish (const string& name) { map<string,HistogramChannel>::iterator c = _channels.find(name); if (c != _channels.end()) { c->second.finish(); } } inline void Histogram2::differential (const string& name) { map<string,HistogramChannel>::iterator c = _channels.find(name); if (c != _channels.end()) { c->second.differential(_binning); } } inline pair<double,double> Histogram2::integrate (const string& name) const { pair<double,double> integral = make_pair(0.,0.); map<string,HistogramChannel>::const_iterator c = _channels.find(name); if (c != _channels.end()) { integral = c->second.integrate(_binning); } return integral; } inline void Histogram2::normalise (const string& name) { map<string,HistogramChannel>::iterator c = _channels.find(name); if (c != _channels.end()) { c->second /= integrate(name); } } inline void Histogram2::rescale (const string& name, double x) { map<string,HistogramChannel>::iterator c = _channels.find(name); if (c != _channels.end()) { c->second *= x; } } inline void Histogram2::rescale (double x) { for (map<string,HistogramChannel>::iterator c = _channels.begin(); c != _channels.end(); ++c) { c->second *= x; } } inline void Histogram2::normalise (const string& name, const string& data) { pair<double,double> norm = integrate(data); map<string,HistogramChannel>::iterator c = _channels.find(name); if (norm.first == 0. || c == _channels.end()) return; c->second /= c->second.integrate(_binning); c->second *= norm; } inline pair<double,double> Histogram2::chi2perDOF (const string& hyp, const string& dat, double minfrac) const { map<string,HistogramChannel>::const_iterator hypothesis = _channels.find(hyp); map<string,HistogramChannel>::const_iterator data = _channels.find(dat); pair<double,double> chi2 = make_pair(0.,0.); if (hypothesis != _channels.end() && data != _channels.end()) { chi2 = hypothesis->second.chi2(data->second,minfrac).average(_binning); } return chi2; } inline void Histogram2::operator+=(double event) { book("mc",event); } inline void Histogram2::addWeighted(double event, double weight) { book("mc",event,weight); } inline unsigned int Histogram2::numberOfBins() const { return _binning.size(); } inline void Histogram2::normaliseToData() { normalise("mc","data"); } inline void Histogram2::normaliseToCrossSection(const string& name) { normalise(name); channel(name) *= _xSec/nanobarn; } inline void Histogram2::chiSquared(double & chisq, unsigned int & ndegrees, double minfrac) const { ndegrees = _binning.size(); chisq = chi2perDOF("mc","data",minfrac).first; } inline IBPtr Histogram2::clone() const { return new_ptr(*this); } inline IBPtr Histogram2::fullclone() const { return new_ptr(*this); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). } �����������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Histogram2/Histogram2.cc��������������������������������������0000644�0001750�0001750�00000053245�11754474774�024622� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the Histogram2 class. // #include "Histogram2.h" #include "ThePEG/Interface/ClassDocumentation.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "Histogram2.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Utilities/Throw.h" using namespace Analysis2; void HistogramChannel::persistentOutput(PersistentOStream & os) const { os << _isCountingChannel << _bins << _binEntries << _outOfRange << _visible << _total << _nanEvents << _nanWeights << _finished; } void HistogramChannel::persistentInput(PersistentIStream & is) { is >> _isCountingChannel >> _bins >> _binEntries >> _outOfRange >> _visible >> _total >> _nanEvents >> _nanWeights >> _finished; } HistogramChannel& HistogramChannel::operator += (const HistogramChannel& c) { if (!c.isCountingChannel()) _isCountingChannel = false; for (unsigned int i = 0; i < _bins.size(); ++i) { _bins[i].first += c.bin(i).first; _bins[i].second += c.bin(i).second; } // uppon addition of a counting channel it remains a counting channel if (_isCountingChannel) { for (unsigned int i = 0; i < _bins.size(); ++i) { _binEntries[i] += c.binEntries()[i]; _nanWeights[i] += c.nanWeights()[i]; } _outOfRange.first += c.outOfRange().first; _outOfRange.second += c.outOfRange().second; _total += c.total(); _visible += c.visible(); _nanEvents += c.nanEvents(); } return *this; } HistogramChannel& HistogramChannel::operator -= (const HistogramChannel& c) { for (unsigned int i = 0; i < _bins.size(); ++i) { _bins[i].first -= c.bin(i).first; _bins[i].second += c.bin(i).second; } _isCountingChannel = false; return *this; } HistogramChannel& HistogramChannel::operator *= (const HistogramChannel& c) { for (unsigned int i = 0; i < _bins.size(); ++i) { _bins[i].first *= c.bin(i).first; _bins[i].second = _bins[i].second*sqr(c.bin(i).first)+c.bin(i).second*sqr(_bins[i].first); } _isCountingChannel = false; return *this; } HistogramChannel& HistogramChannel::operator *= (double factor) { for (vector<pair<double,double> >::iterator b = _bins.begin(); b != _bins.end(); ++b) { b->first *= factor; b->second *= sqr(factor); } _isCountingChannel = false; return *this; } HistogramChannel& HistogramChannel::operator += (double off) { for (vector<pair<double,double> >::iterator b = _bins.begin(); b != _bins.end(); ++b) { b->first += off; } _isCountingChannel = false; return *this; } HistogramChannel& HistogramChannel::operator *= (pair<double,double> factor) { for (vector<pair<double,double> >::iterator b = _bins.begin(); b != _bins.end(); ++b) { b->first *= factor.first; b->second = b->first*factor.second + b->second*sqr(factor.first); } _isCountingChannel = false; return *this; } HistogramChannel& HistogramChannel::operator /= (pair<double,double> factor) { for (vector<pair<double,double> >::iterator b = _bins.begin(); b != _bins.end(); ++b) { if (factor.first != 0.) { b->first /= factor.first; if (b->first != 0.) b->second = sqr(b->first/factor.first)*(b->second/sqr(b->first) + factor.second/sqr(factor.first)); else b->second = 0.; } else { b->first = 0.; b->second = 0.; } } _isCountingChannel = false; return *this; } HistogramChannel& HistogramChannel::operator /= (const HistogramChannel& c) { for (unsigned int i = 0; i < _bins.size(); ++i) { if (c.bin(i).first != 0. && _bins[i].first != 0.) { _bins[i].first /= c.bin(i).first; _bins[i].second = sqr(_bins[i].first/c.bin(i).first)* (_bins[i].second/sqr(_bins[i].first)+c.bin(i).second/sqr(c.bin(i).first)); } else { _bins[i].first = 0.; _bins[i].second = 0.; } } _isCountingChannel = false; return *this; } unsigned long HistogramChannel::nanWeightEvents () const { unsigned long all = 0; for (vector<unsigned long>::const_iterator n = _nanWeights.begin(); n != _nanWeights.end(); ++n) all += *n; return all; } void HistogramChannel::differential (const vector<pair<double,double> >& binning) { for (unsigned int i=0; i<binning.size(); ++i) { _bins[i].first /= (binning[i].second-binning[i].first); _bins[i].second /= (binning[i].second-binning[i].first); } } pair<double,double> HistogramChannel::binSum () const { pair<double,double> s = make_pair(0.,0.); for (vector<pair<double,double> >::const_iterator b = _bins.begin(); b != _bins.end(); ++b) { s.first += b->first; s.second += b->second; } return s; } pair<double,double> HistogramChannel::integrate (const vector<pair<double,double> >& binning) const { pair<double,double> integral = make_pair(0.,0.); for (unsigned int i = 0; i< _bins.size(); ++i) { integral.first += (binning[i].second-binning[i].first)*_bins[i].first; integral.second += sqr(binning[i].second-binning[i].first)*_bins[i].second; } return integral; } pair<double,double> HistogramChannel::average (const vector<pair<double,double> >& binning) const { pair<double,double> integral = make_pair(0.,0.); double volume = 0.; for (unsigned int i = 0; i< _bins.size(); ++i) { volume += (binning[i].second-binning[i].first); integral.first += (binning[i].second-binning[i].first)*_bins[i].first; integral.second += sqr(binning[i].second-binning[i].first)*_bins[i].second; } integral.first /= volume; integral.second /= sqr(volume); return integral; } HistogramChannel HistogramChannel::delta (const HistogramChannel& channel) const { HistogramChannel c(*this); c /= channel; c += -1.; return c; } HistogramChannel HistogramChannel::chi2 (const HistogramChannel& channel, double minfrac) const { HistogramChannel chi2 (*this); chi2 -= channel; chi2 *= chi2; for (unsigned int i = 0; i<_bins.size(); ++i) { double var = 0.; if (channel.bin(i).second/sqr(channel.bin(i).first) < minfrac) var = sqr(minfrac*channel.bin(i).first); else var = channel.bin(i).second; if (var != 0) chi2.bin(i,make_pair(chi2.bin(i).first/var,chi2.bin(i).second/var)); else chi2.bin(i,make_pair(0,0)); } return chi2; } Histogram2::Histogram2 (double low, double high, unsigned int bins, const string& name) { // get the bin length double length = (high-low)/(double)(bins); _range = make_pair(low,high); for (unsigned int i = 0; i<bins; ++i) { _binning.push_back(make_pair(low+i*length,low+(i+1)*length)); _binhash.insert(make_pair(low+(i+1)*length,i)); } if (!name.empty()) insertChannel(name); } Histogram2::Histogram2 (const vector<pair<double,double> >& binning, const string& name) { _range = make_pair(binning.begin()->first,binning.end()->second); _binning = binning; for (unsigned int i = 0; i<_binning.size(); ++i) { _binhash.insert(make_pair(_binning[i].second,i)); } _range = make_pair(_binning.front().first,_binning.back().second); if (!name.empty()) insertChannel(name); } Histogram2::Histogram2 (const string& dataFile, const string& dataName) { ifstream data (dataFile.c_str()); if (!data) { Throw<InitException>() << "Histogram2::Histogram2 : Building from datafile, but cannot open " << dataFile; } vector<pair<double,double> > dataCache; double low, high, dataval, errstat, errsys; double sigma2; string in; while (getline(data,in)) { in = StringUtils::stripws(in); if (in[0] == '#') continue; if (in == "") continue; istringstream theIn (in); theIn >> low >> high >> dataval >> errstat >> errsys; _binning.push_back(make_pair(low,high)); sigma2 = sqr(errstat) + sqr(errsys); dataCache.push_back(make_pair(dataval,sigma2)); } for (unsigned int i = 0; i<_binning.size(); ++i) { _binhash.insert(make_pair(_binning[i].second,i)); } _range = make_pair(_binning.front().first,_binning.back().second); HistogramChannel theData (dataCache); insertChannel(dataName,theData); } void Histogram2::book (const string& name, double event, double weight) { map<string,HistogramChannel>::iterator c = _channels.find(name); if (c != _channels.end()) { if (isnan(event) || isinf(event)) c->second.nanEvent(); else { if (event < range().first) { c->second.bookUnderflow(weight); return; } if (event > range().second) { c->second.bookOverflow(weight); return; } unsigned int bin = _binhash.upper_bound(event)->second; c->second.book(bin,weight); } } } vector<string> Histogram2::channels () const { vector<string> all; for (map<string,HistogramChannel>::const_iterator c = _channels.begin(); c != _channels.end(); ++c) all.push_back(c->first); return all; } void Histogram2::output (ostream& os, const string& name, unsigned int flags, char comment) const { bool bincenters = (flags & ChannelOutput::Bincenters) == ChannelOutput::Bincenters; bool noerrorbars = (flags & ChannelOutput::NoErrorbars) == ChannelOutput::NoErrorbars; bool nanevents = (flags & ChannelOutput::NanEvents) == ChannelOutput::NanEvents; bool statistics = (flags & ChannelOutput::Statistics) == ChannelOutput::Statistics; map<string,HistogramChannel>::const_iterator c = _channels.find(name); if (c == _channels.end()) return; os << comment << " channel = " << name << endl; if(statistics) { os << comment << " total entries = " << c->second.total() << " , visible entries = " << c->second.visible() << endl; if (c->second.isCountingChannel()) os << comment << " underflow = " << c->second.outOfRange().first << " , overflow = " << c->second.outOfRange().second << endl; if (c->second.nanEvents() > 0) os << comment << " nan events = " << c->second.nanEvents(); if (c->second.nanWeightEvents() > 0) os << " , nan weight events = " << c->second.nanWeightEvents() << endl; } for (unsigned int i = 0; i<_binning.size(); ++i) { if (bincenters) { os << (_binning[i].first+_binning[i].second)/2. << "\t"; } else { os << _binning[i].first << "\t" << _binning[i].second << "\t"; } os << c->second.bin(i).first; if (!noerrorbars) { os << "\t" << sqrt(c->second.bin(i).second); } if (nanevents) { os << "\t" << c->second.nanWeights()[i]; } os << endl; } } HistogramChannel HistogramChannel::profile () const { HistogramChannel temp (_bins.size(),false); for (unsigned int i = 0; i< _bins.size(); ++i) { pair<double,double> prof; // mean of weights prof.first = weightMean(i); // varaince of mean prof.second = binEntries(i) > 0 ? weightVariance(i)/binEntries(i) : 0; temp.bin(i,prof,binEntries(i)); } return temp; } void HistogramChannel::write (ostream& os, const string& name) { finish(); os << "<channel" << " name=\"" << name << "\"" << " counting=\"" << _isCountingChannel << "\""; if (_isCountingChannel) { os << " underflow=\"" << _outOfRange.first << "\"" << " overflow=\"" << _outOfRange.second << "\"" << " visible=\"" << _visible << "\"" << " total=\"" << _total << "\""; } if (_nanEvents != 0) os << " nanevents=\"" << _nanEvents << "\""; os << ">" << endl; os << "<bins>" << endl; for (unsigned int b = 0; b < _bins.size(); ++b) { os << "<bincontent sumweights=\"" << _bins[b].first << "\" sumsquaredweights=\"" << _bins[b].second << "\" entries=\"" << _binEntries[b] << "\"/>" << endl; } os << "</bins>" << endl; os << "<nanweights>" << endl; // only write out, if at least happend for one event if (nanWeightEvents() > 0) for (vector<unsigned long>::const_iterator n = _nanWeights.begin(); n != _nanWeights.end(); ++n) os << "<bincontent entries=\"" << *n << "\"/>" << endl; os << "</nanweights>" << endl; os << "</channel>" << endl; } string HistogramChannel::read (istream& is) { _finished = true; string tag; string name; map<string,string> attributes; map<string,string>::iterator atit; if (!is) return ""; // parse the channel tag tag = getNextTag(is); if (tag.find("<channel") == string::npos) return ""; attributes = StringUtils::xmlAttributes("channel",tag); atit = attributes.find("name"); if (atit == attributes.end()) return ""; name = atit->second; atit = attributes.find("counting"); if (atit == attributes.end()) return ""; fromString(atit->second,_isCountingChannel); atit = attributes.find("underflow"); if (atit == attributes.end() && _isCountingChannel) return ""; if (_isCountingChannel) fromString(atit->second,_outOfRange.first); atit = attributes.find("overflow"); if (atit == attributes.end() && _isCountingChannel) return ""; if (_isCountingChannel) fromString(atit->second,_outOfRange.second); atit = attributes.find("visible"); if (atit == attributes.end() && _isCountingChannel) return ""; if (_isCountingChannel) fromString(atit->second,_visible); atit = attributes.find("total"); if (atit == attributes.end() && _isCountingChannel) return ""; if (_isCountingChannel) fromString(atit->second,_total); atit = attributes.find("nanevents"); if (atit != attributes.end()) fromString(atit->second,_nanEvents); // read in the bin contents tag = getNextTag(is); if (tag != "<bins>") return ""; for (unsigned int i = 0; i < _bins.size(); ++i) { tag = getNextTag(is); if (tag.find("<bincontent") == string::npos) return ""; attributes = StringUtils::xmlAttributes("bincontent",tag); atit = attributes.find("sumweights"); if (atit == attributes.end()) return ""; fromString(atit->second,_bins[i].first); atit = attributes.find("sumsquaredweights"); if (atit == attributes.end()) return ""; fromString(atit->second,_bins[i].second); atit = attributes.find("entries"); if (atit == attributes.end()) return ""; fromString(atit->second,_binEntries[i]); } tag = getNextTag(is); if (tag != "</bins>") return ""; // read in the nan weight histogram tag = getNextTag(is); if (tag != "<nanweights>") return ""; bool nanweights = true; for (unsigned int i = 0; i < _bins.size(); ++i) { tag = getNextTag(is); if (tag == "</nanweights>") { nanweights = false; break; } if (tag.find("<bincontent") == string::npos) return ""; attributes = StringUtils::xmlAttributes("bincontent",tag); atit = attributes.find("entries"); if (atit == attributes.end()) return ""; fromString(atit->second,_nanWeights[i]); } if (nanweights) tag = getNextTag(is); if (tag != "</nanweights>") return ""; tag = getNextTag(is); if (tag != "</channel>") return ""; return name; } void Histogram2::store (const string& name) { ofstream os ((name+".h2").c_str()); if (!os) return; os << "<?xml version=\"1.0\"?>" << endl; os << "<Analysis2Histogram version=\"1.0\"" << " AnalysisName=\"" << Named::name() << "\">" << endl; os << "<!--" << endl << " WARNING" << endl << " Though this is valid XML, the Histogram2 class will" << endl << " not be able to parse arbitraty, XML-valid changes" << endl << " to this file!" << endl << "-->" << endl; os << "<xsec unit=\"nanobarn\" value=\"" << _xSec/nanobarn << "\"/>" << endl; os << "<binning>" << endl; for (vector<pair<double,double> >::const_iterator b = _binning.begin(); b != _binning.end(); ++b) { os << "<bin lower=\"" << b->first << "\" upper=\"" << b->second << "\"/>" << endl; } os << "</binning>" << endl; os << "<channels size=\"" << _channels.size() << "\">" << endl; for(map<string,HistogramChannel>::iterator c = _channels.begin(); c != _channels.end(); ++c) { c->second.write(os,c->first); } os << "</channels>" << endl; os << "</Analysis2Histogram>" << endl; } bool Histogram2::load (const string& fname) { ifstream is ((fname+".h2").c_str()); if (!is) return false; string tag = getNextTag(is); if (tag.find("<Analysis2Histogram") == string::npos) return false; string name; map<string,string> attributes = StringUtils::xmlAttributes("Analysis2Histogram",tag); map<string,string>::iterator atit = attributes.find("name"); if (atit == attributes.end()) return false; Named::name(atit->second); // get the cross section tag = getNextTag(is); if (tag.find("<xsec") == string::npos) return false; attributes = StringUtils::xmlAttributes("xsec",tag); atit = attributes.find("unit"); if (atit == attributes.end()) return false; if (atit->second != "nanobarn") return false; // switch units in a future version atit = attributes.find("value"); if (atit == attributes.end()) return false; double theXsec; fromString(atit->second,theXsec); _xSec = theXsec * nanobarn; // get the binning tag = getNextTag(is); if (tag != "<binning>") return false; tag = getNextTag(is); double binlower, binupper; while (tag != "</binning>") { if (tag.find("<bin") == string::npos && tag != "</binning>") return false; attributes = StringUtils::xmlAttributes("bin",tag); atit = attributes.find("lower"); if (atit == attributes.end()) return false; fromString(atit->second,binlower); atit = attributes.find("upper"); if (atit == attributes.end()) return false; fromString(atit->second,binupper); _binning.push_back(make_pair(binlower,binupper)); tag = getNextTag(is); } if (!_binning.size()) return false; for (unsigned int i = 0; i<_binning.size(); ++i) { _binhash.insert(make_pair(_binning[i].second,i)); } _range = make_pair(_binning.front().first,_binning.back().second); // get the channels tag = getNextTag(is); if (tag.find("<channels") == string::npos) return false; attributes = StringUtils::xmlAttributes("channels",tag); atit = attributes.find("size"); if (atit == attributes.end()) return false; unsigned int numchannels; fromString(atit->second,numchannels); for (unsigned int i = 0; i<numchannels; ++i) { HistogramChannel ch (_binning.size()); name = ch.read(is); if (name != "") _channels.insert(make_pair(name,ch)); } // there has to be at least one channel if (!_channels.size()) return false; tag = getNextTag(is); if (tag != "</channels>") return false; tag = getNextTag(is); if (tag != "</Analysis2Histogram>") return false; return true; } Histogram2Ptr Histogram2::loadToHistogram (const string& name) const { Histogram2Ptr histo = new_ptr(Histogram2()); bool ok = histo->load(name); if (!ok) histo = Histogram2Ptr(); return histo; } void Histogram2::combine (const string& prefix, const string& name, unsigned int numRuns, const string& dataChannel, const string& mcChannel) { vector<Histogram2Ptr> inHistos; for (unsigned int i = 0; i<numRuns; ++i) { ostringstream fname (""); fname << prefix << "." << i << "/" << name; Histogram2Ptr in = loadToHistogram (fname.str()); if (in) { inHistos.push_back(in); } } // get the total cross section CrossSection all = 0.*nanobarn; unsigned long allEvents = 0; for(vector<Histogram2Ptr>::iterator h = inHistos.begin(); h != inHistos.end(); ++h) { if ((**h).haveChannel(mcChannel)) { all += (**h).xSec() * (**h).channel(mcChannel).total(); allEvents += (**h).channel(mcChannel).total(); } } all /= allEvents; xSec (all); if (!inHistos.size()) return; vector<string> channels = inHistos[0]->channels(); _binning = inHistos[0]->binning(); _range = inHistos[0]->range(); _binhash = inHistos[0]->binhash(); unsigned int numBins = _binning.size(); for (vector<string>::iterator c = channels.begin(); c != channels.end(); ++c) { if (*c == dataChannel && inHistos[0]->haveChannel(dataChannel)) { _channels.insert(make_pair(dataChannel,HistogramChannel(inHistos[0]->channel(dataChannel)))); continue; } HistogramChannel ch (numBins); for (vector<Histogram2Ptr>::iterator h = inHistos.begin(); h != inHistos.end(); ++h) { if ((**h).haveChannel(*c)) { ch += (**h).channel(*c); } } _channels.insert(make_pair(*c,ch)); } } Histogram2::Histogram2 (vector<double> limits) { for (unsigned int i = 0; i < limits.size()-1; ++i) _binning.push_back(make_pair(limits[i],limits[i+1])); for (unsigned int i = 0; i<_binning.size(); ++i) { _binhash.insert(make_pair(_binning[i].second,i)); } _range = make_pair(_binning.front().first,_binning.back().second); insertChannel("mc"); } Histogram2::Histogram2 (vector<double> limits, vector<double> data, vector<double> dataerror) { vector<pair<double,double> > dataCache; for (unsigned int i = 0; i < limits.size(); ++i) { if (i<limits.size()-1) _binning.push_back(make_pair(limits[i],limits[i+1])); dataCache.push_back(make_pair(data[i],sqr(dataerror[i]))); } for (unsigned int i = 0; i<_binning.size(); ++i) { _binhash.insert(make_pair(_binning[i].second,i)); } _range = make_pair(_binning.front().first,_binning.back().second); insertChannel("mc"); insertChannel("data",HistogramChannel(dataCache)); } Histogram2 Histogram2::ratioWith(const Histogram2& h2) const { Histogram2 tmp (*this); tmp.channel("mc") /= h2.channel("mc"); return tmp; } Histogram2::~Histogram2() {} void Histogram2::persistentOutput(PersistentOStream & os) const { // *** ATTENTION *** os << ; // Add all member variable which should be written persistently here. os << _binning << _range << _binhash << _channels << ounit(_xSec,nanobarn); } void Histogram2::persistentInput(PersistentIStream & is, int) { // *** ATTENTION *** is >> ; // Add all member variable which should be read persistently here. is >> _binning >> _range >> _binhash >> _channels >> iunit(_xSec,nanobarn); } ClassDescription<Histogram2> Histogram2::initHistogram2; // Definition of the static class description member. void Histogram2::Init() { static ClassDocumentation<Histogram2> documentation ("Histogram2 provides advanced histogramming."); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Histogram2/Histogram2Output.h���������������������������������0000644�0001750�0001750�00000016725�11754474774�025707� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #ifndef Analysis2_Histogram2Output_H #define Analysis2_Histogram2Output_H // // This is the declaration of the Histogram2Output class. // #include "ThePEG/Interface/Interfaced.h" #include "Histogram2Output.fh" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Histogram2.h" namespace Analysis2 { using namespace ThePEG; /**\ingroup Analysis2 * * Options for histogram output. * They can be combined using the '|' operator, e.g. 'Frame | Ylog' */ namespace HistogramOutput { /** Default behaviour */ const unsigned int Default = 0; /** Frame */ const unsigned int Frame = 1; /** Errorbars */ const unsigned int Errorbars = 1 << 1; /** Log x axis */ const unsigned int Xlog = 1 << 2; /** Log y axis */ const unsigned int Ylog = 1 << 3; /** Smooth */ const unsigned int Smooth = 1 << 4; /** Rawcount */ const unsigned int Rawcount = 1 << 5; } /**\ingroup Analysis2 * Simple struct to contain options for plotting * output of an observable. */ struct Histogram2Options { /** * Default constructor */ inline Histogram2Options () : plotFlags(0), channelFlags(0), title(""), datatitle(""), xlabel(""), ylabel (""), differential(true) {} /** * Constructor giving initial values */ inline Histogram2Options (int pFlags, int cFlags = 0, string t = "", string dt = "", string x = "", string y = "", bool diff = true) : plotFlags(pFlags), channelFlags(cFlags), title(t), datatitle(dt), xlabel(x), ylabel (y), differential(diff) {} /** Flags for plotting */ int plotFlags; /** Flags for channel output */ int channelFlags; /** Title of the histogram */ string title; /** Title of data, if present */ string datatitle; /** X label */ string xlabel; /** Y label */ string ylabel; /** wether or not this is a differential observable */ bool differential; }; /**\ingroup Analysis2 * Base class for Histogram2 output. * * @author Simon Plaetzer * * @see \ref Histogram2OutputInterfaces "The interfaces" * defined for Histogram2Output. */ class Histogram2Output: public Interfaced { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline Histogram2Output(); /** * The copy constructor. */ inline Histogram2Output(const Histogram2Output &); /** * The destructor. */ virtual ~Histogram2Output(); //@} public: /** * Initialize the curret ostream to point * to name. This is a helper only, it has * to be called by either the implemented AnalysisHandler * or the out method. */ void initialize (const string& name); /** * Output the given histogram. * The default just dumps to an ascii file. */ virtual void put (Histogram2Ptr, const Histogram2Options&, const string& dataChannel); /** * Initialize. Similar to doinitrun, * in fact called by doinitrun, but * should _not_ call generator(), as it * may be used 'offline' to combine * parallel runs. */ virtual inline void initialize (); /** * Finalize. Similar to dofinish, * in fact called by dofinish, but * should _not_ call generator(), as it * may be used 'offline' to combine * parallel runs. */ virtual inline void finalize (); protected: /** * Return the currently used ostream */ virtual ostream& currentOStream (); /** * Get the output prefix or filename */ inline string prefix () const; /** * Get the model name */ inline string mctitle () 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ inline virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ inline virtual void dofinish(); //@} private: /** * The prefix */ string _prefix; /** * The MC model used */ string _mctitle; /** * Pointer to currently used ostream */ ofstream _out; /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<Histogram2Output> initHistogram2Output; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Histogram2Output & operator=(const Histogram2Output &); }; /**\ingroup Analysis2 * Persistent output of histogram options */ inline PersistentOStream& operator << (PersistentOStream& os, const Histogram2Options& options); /**\ingroup Analysis2 * Persistent input of histogram options */ inline PersistentIStream& operator >> (PersistentIStream& is, Histogram2Options& options); } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Histogram2Output. */ template <> struct BaseClassTrait<Analysis2::Histogram2Output,1> { /** Typedef of the first base class of Histogram2Output. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the Histogram2Output class and the shared object where it is defined. */ template <> struct ClassTraits<Analysis2::Histogram2Output> : public ClassTraitsBase<Analysis2::Histogram2Output> { /** Return a platform-independent class name */ static string className() { return "Analysis2::Histogram2Output"; } /** * The name of a file containing the dynamic library where the class * Analysis2Base is implemented. It may also include several, space-separated, * libraries if the class Analysis2Base depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "Analysis2.so"; } }; /** @endcond */ } #include "Histogram2Output.icc" #ifndef ThePEG_TEMPLATES_IN_CC_FILE // #include "Histogram2Output.tcc" #endif #endif /* Analysis2_Histogram2Output_H */ �������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Histogram2/Histogram2Output.fh��������������������������������0000644�0001750�0001750�00000000545�11754474774�026046� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the Histogram2Output class. // #ifndef Analysis2_Histogram2Output_FH #define Analysis2_Histogram2Output_FH #include "ThePEG/Config/Pointers.h" namespace Analysis2 { class Histogram2Output; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Analysis2::Histogram2Output,Histogram2OutputPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/Histogram2/Histogram2.h���������������������������������������0000644�0001750�0001750�00000046537�11754474774�024472� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // (C) 2007-2009 Simon Plaetzer -- sp@particle.uni-karlsruhe.de #ifndef Analysis2_Histogram2_H #define Analysis2_Histogram2_H // // This is the declaration of the Histogram2 class. // #include <cassert> #include "ThePEG/Interface/Interfaced.h" #include "Histogram2.fh" #include "ThePEG/Utilities/StringUtils.h" namespace Analysis2 { using namespace ThePEG; /**\ingroup Analysis2 * A channel in a histogram. * * @author Simon Plaetzer */ class HistogramChannel { public: /**@name Constructors */ //@{ /** * Default constructor */ inline HistogramChannel (); /** * Construct giving the number of bins. */ inline explicit HistogramChannel (unsigned int bins, bool counting = true); /** * Construct giving contents of bins. */ inline explicit HistogramChannel (const vector<pair<double,double> >&, double underflow = 0., double overflow = 0.); //@} public: /**@name Methods to book events */ //@{ /** * Book the weight into the bin with * the given index. */ inline void book (unsigned int bin, double weight = 1.); /** * Book the weight into the underflow */ inline void bookUnderflow (double weight = 1.); /** * Book the weight into the overflow */ inline void bookOverflow (double weight = 1.); /** * Signal a numerical indefinite event */ inline void nanEvent (); //@} public: /**@name Channel algebra. It takes care of properly computing uncertainties. */ //@{ /** * Add another channel. */ HistogramChannel& operator += (const HistogramChannel&); /** * Subtract another channel. */ HistogramChannel& operator -= (const HistogramChannel&); /** * Multiply by another channel. */ HistogramChannel& operator *= (const HistogramChannel&); /** * Multiply the channel by a factor. */ HistogramChannel& operator *= (double); /** * Add a constant to each bin. */ HistogramChannel& operator += (double); /** * Multiply the channel by a factor * including uncertainties. */ HistogramChannel& operator *= (pair<double,double>); /** * Divide two channels. */ HistogramChannel& operator /= (const HistogramChannel&); /** * Divide the channel by a factor. */ inline HistogramChannel& operator /= (double); /** * Divide the channel by a factor * including uncertainties. */ HistogramChannel& operator /= (pair<double,double>); //@} public: /**@name Access channel statistics. */ //@{ /** * Return true, if this is a counting channel. */ inline bool isCountingChannel () const; /** * Return the bins. */ inline vector<pair<double,double> > bins () const; /** * Return the bin content for the * given index. The first entry is * the sum of weights, the second * the sum of squared weights. */ inline pair<double,double> bin (unsigned int) const; /** * Return the bin entries. */ inline vector<unsigned long> binEntries () const; /** * Return the bin entries for the * given index. */ inline unsigned long binEntries (unsigned int) const; /** * Explicitly set the content of the * bin with given index. */ inline void bin (unsigned int, pair<double,double>, unsigned long en = 0); /** * Return under- and overflow */ inline pair<double,double> outOfRange () const; /** * Return the visible entries */ inline unsigned long visible () const; /** * Return the total entries */ inline unsigned long total () const; /** * Return the histogram of numerical * indefinite weights */ inline vector<unsigned long> nanWeights () const; /** * Return the total number of events with * indefinite weights. */ unsigned long nanWeightEvents () const; /** * Return the number of numerical indefinite events */ inline unsigned long nanEvents () const; //@} public: /**@name Normalization and statistics */ //@{ /** * Finish this channel. Provided for future * use. */ inline void finish (); /** * Return the variance of the bin * content for the given bin. */ inline double binVariance (unsigned int) const; /** * Return the mean of weights * in the given bin. */ inline double weightMean (unsigned int) const; /** * Return the variance of weights * in the given bin. */ inline double weightVariance (unsigned int) const; /** * This channel is a differential distribution: * divide each bin by its width. */ void differential (const vector<pair<double,double> >&); /** * Return the summed visible bin content */ pair<double,double> binSum () const; /** * Return the average visible bin content */ inline pair<double,double> binAverage () const; /** * Return the visible integral of the channel * using the given binning. */ pair<double,double> integrate (const vector<pair<double,double> >&) const; /** * Return the weighted average visible bin content */ pair<double,double> average (const vector<pair<double,double> >&) const; /** * Return a channel containing this/channel - 1 */ HistogramChannel delta (const HistogramChannel& channel) const; /** * Return a channel containing the \f$\chi^2\f$ taking * this as hypothesis and the given channel as data. * Rescale the data error to data*minfrac, if * data error/data < minfrac. */ HistogramChannel chi2 (const HistogramChannel& channel, double minfrac = .0) const; /** * Generate a channel containing * the profile histogram obtained from this * channel, i.e. a channel containing * the mean of weights and its variance * as content/content square values */ HistogramChannel profile () const; //@} public: /**@name Utilities for store/load */ //@{ /** * Write out the channel */ void write (ostream&, const string&); /** * Read in the channel */ string read (istream&); //@} 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. */ void persistentInput(PersistentIStream & is); //@} private: /** * Wether or not the number of entries * is meaningfull. */ bool _isCountingChannel; /** * The contents and uncertainties squared, * to be accessed by the bin id. */ vector<pair<double,double> > _bins; /** * The number of entries in each bin, * to be accessed by the bin id. */ vector<unsigned long> _binEntries; /** * The contents of under- and overflow */ pair<double,double> _outOfRange; /** * The number of visible entries */ unsigned long _visible; /** * The number of total entries */ unsigned long _total; /** * The number of numerical indefinite * events. */ unsigned long _nanEvents; /** * A histogram of the number of * indefinite weights. */ vector<unsigned long> _nanWeights; /** * Has finish() already been called? */ bool _finished; }; /**\ingroup Analysis2 * Persistent output of histogram channel */ inline PersistentOStream& operator << (PersistentOStream& os, const HistogramChannel&); /**\ingroup Analysis2 * Persistent input of histogram channel */ inline PersistentIStream& operator >> (PersistentIStream& is, HistogramChannel&); /** * Add two histogram channels */ inline HistogramChannel operator + (const HistogramChannel& a, const HistogramChannel& b); /** * Subtract two histogram channels */ inline HistogramChannel operator - (const HistogramChannel& a, const HistogramChannel& b); /** * Multiply two histogram channels */ inline HistogramChannel operator * (const HistogramChannel& a, const HistogramChannel& b); /** * Divide two histogram channels */ inline HistogramChannel operator / (const HistogramChannel& a, const HistogramChannel& b); /** * Get the next xml tag from a stream, * i.e. everything not being a blank line and starting * (module white-spaces) with '<' followed by * an alphabetical character or / */ inline string getNextTag (istream&); /** * Convert a string to the template * type by reading is in from an istringstream. */ template<class T> inline void fromString (const string& str, T& result) { istringstream buffer (str); buffer >> result; } /**\ingroup Analysis2 * Options for channel output */ namespace ChannelOutput { /** * Default output: bin_low bin_high content error */ const unsigned int Default = 0; /** * Instead of bin_low _bin_high put a single * column (bin_low+bin_high)/2 */ const unsigned int Bincenters = 1; /** * Do not output uncertainties */ const unsigned int NoErrorbars = 1 << 1; /** * Output the histogram of events * with numerical indefinite weights */ const unsigned int NanEvents = 1 << 2; /** * Output global statistics in a comment */ const unsigned int Statistics = 1 << 3; } /**\ingroup Analysis2 * A more sophisticated histogram. It is almost completely * compatible to Histogram, but will use a different * way to actually dump the histogram for use with * the favorite plotting program. * * @see \ref Histogram2Interfaces "The interfaces" * defined for Histogram2. */ class Histogram2: public Interfaced { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline Histogram2 (); /** * The destructor. */ virtual ~Histogram2(); //@} public: /**@name Constructors */ //@{ /** * Construct giving the range and a number of * bins and insert a counting channel with name. * If name is empty, no channel is inserted. * Default name is given for backward compatibility. */ explicit Histogram2 (double low, double high, unsigned int bins, const string& name = "mc"); /** * Construct giving a binning and insert a counting * channel with name. * If name is empty, no channel is inserted. */ explicit Histogram2 (const vector<pair<double,double> >&, const string& name); /** * Construct giving a name of a data file * and a name for the resulting channel. * The data file is assumed to be in the format * bin_low bin_high data error */ explicit Histogram2 (const string& dataFile, const string& dataName); /** * Set a name for the histogram */ inline void setName (const string&); //@} public: /** * Book an event into the given channel */ void book (const string& name, double event, double weight = 1.); /**@name Channel administration */ //@{ /** * Return true, if a channel by that name * exists. */ inline bool haveChannel (const string&) const; /** * Access a channel */ inline HistogramChannel& channel (const string&); /** * Access a channel */ inline HistogramChannel channel (const string&) const; /** * Insert a new channel */ inline void insertChannel (const string&, const HistogramChannel&); /** * Insert a new counting channel */ inline void insertChannel (const string&); /** * Remove a channel */ inline HistogramChannel removeChannel (const string&); //@} public: /**@name Access the binning */ //@{ /** * Return the binning */ inline const vector<pair<double,double> >& binning () const; /** * Return the bin hash map */ inline const map<double,unsigned int>& binhash () const; /** * Return the range */ inline pair<double,double> range () const; //@} public: /**@name Normalisation and statistical tests */ //@{ /** * Finish the given channel */ inline void finish (const string&); /** * The given channel is a differential distribution, * dvidie each bin by its bin width. */ inline void differential (const string&); /** * Return the integral of the given channel */ inline pair<double,double> integrate (const string&) const; /** * Normalise the given channel to unity */ inline void normalise (const string&); /** * Normalise the given channel to the * integral of another one. */ inline void normalise (const string&, const string&); /** * Rescale the given channel */ inline void rescale (const string&, double); /** * Rescale the all channels */ inline void rescale (double); /** * Normalise a channel to the total cross section. * Default argument for backwards compatibility. */ inline void normaliseToCrossSection(const string& name = "mc"); /** * Return the \f$\chi^2\f$ per DOF taking the first * channel as hypotheses and the second one as data/ */ inline pair<double,double> chi2perDOF (const string&, const string&, double minfrac = .0) const; //@} public: /**@name Support for histogram output */ //@{ /** * Return the list of all channels * in this histogram */ vector<string> channels () const; /** * Output a channel to the given * ostream as a ascii table. */ void output (ostream&, const string& name, unsigned int flags = 0, char comment = '#') const; //@} public: /*@name Support for parallel runs */ //@{ /** * Write out the histogram to a file * name.h2 */ void store (const string& name); /** * Read in the histogram from a file * name.h2 . Return false, if something * did go wrong. */ bool load (const string& name); /** * Read in the histogram from a file * name.h2 into a new histogram. It returns * null, if reading failed. */ Histogram2Ptr loadToHistogram (const string& name) const; /** * Combine histograms. Each run is assumed * to be in a subdirectory prefix.runId, * having written the histogram to a file * prefix.runId/name.h2 * * runId is assumed to range from 0 to numRuns-1 * * dataChannel indicates a channel which is * to be included only once. * * All other channels are added into this * histogram. If a mcChannel is given, * this is used to compute the total cross section * for the combined histogram. */ void combine (const string& prefix, const string& name, unsigned int numRuns, const string& dataChannel = "", const string& mcChannel = "MC"); /** * Return the cross section accumulated in this histogram. */ inline CrossSection xSec () const; /** * Set the cross section accumulated in this histogram. */ inline void xSec (CrossSection); //@} public: /**@name Backward compatibility to Histogram. Note that prefactor is * is not supported (instead use multiplication operator and/or * the normalise methods for the channel(s) to be considered). */ //@{ /** * Construct from vector of lower limits and * upper limit of last bin and insert an initial counting * channel mc. */ explicit Histogram2 (vector<double> limits); /** * Construct giving the lower limits, followed by the * upper limit of the last bin. Inserts channels data * and mc */ explicit Histogram2 (vector<double> limits, vector<double> data, vector<double> dataerror); /** * Operator to add a point to the histogrma with unit weight. */ inline void operator+=(double); /** * Function to add a weighted point to the histogram. */ inline void addWeighted(double data, double weight); /** * Number of bins (not counting the overflow) */ inline unsigned int numberOfBins() const; /** * Normalise the distributions to the data. */ inline void normaliseToData(); /** * Return the chi squared * It assumes two channels to be present: * mc and data. This is not checked! */ inline void chiSquared(double & chisq, unsigned int & ndegrees, double minfrac=0.) const; /** * Returns a new histogram containing bin-by-bin * ratios of two histograms */ Histogram2 ratioWith(const Histogram2& h2) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The binning. This identifies bin ids as the * vector indices. */ vector<pair<double,double> > _binning; /** * Seperatly keep the lowest bins lower and the highest * bins uper bound to identify events ind under-/overflow. */ pair<double,double> _range; /** * Bin hashing: Map each bins upper bound * to the bin id. */ map<double, unsigned int> _binhash; /** * Map channels by their name */ map<string,HistogramChannel> _channels; /** * The cross section this histogram accumulated * according to the event generator. */ CrossSection _xSec; /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class without persistent data. */ static ClassDescription<Histogram2> initHistogram2; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Histogram2 & operator=(const Histogram2 &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Histogram2. */ template <> struct BaseClassTrait<Analysis2::Histogram2,1> { /** Typedef of the first base class of Histogram2. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the Histogram2 class and the shared object where it is defined. */ template <> struct ClassTraits<Analysis2::Histogram2> : public ClassTraitsBase<Analysis2::Histogram2> { /** Return a platform-independent class name */ static string className() { return "Analysis2::Histogram2"; } /** * The name of a file containing the dynamic library where the class * Analysis2Base is implemented. It may also include several, space-separated, * libraries if the class Analysis2Base depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "Analysis2.so"; } }; /** @endcond */ } #include "Histogram2.icc" #ifndef ThePEG_TEMPLATES_IN_CC_FILE // #include "Histogram2.tcc" #endif #endif /* Analysis2_Histogram2_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/m4/�����������������������������������������������������������0000755�0001750�0001750�00000000000�11756464211�020547� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/m4/Analysis2.m4�����������������������������������������������0000644�0001750�0001750�00000023024�11754474774�022674� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������dnl ##### THEPEG ##### AC_DEFUN([ANALYSIS2_CHECK_THEPEG], [ AC_MSG_CHECKING([for libThePEG in]) AC_ARG_WITH(thepeg, AC_HELP_STRING([--with-thepeg=DIR],[location of ThePEG installation]), [], [with_thepeg="${prefix}"]) AC_MSG_RESULT([$with_thepeg]) if test "x$with_thepeg" = "xno"; then AC_MSG_ERROR([Cannot build Analysis2 without ThePEG. Please set --with-thepeg.]) fi THEPEGLDFLAGS="-L${with_thepeg}/lib/ThePEG" THEPEGPATH="${with_thepeg}" oldldflags="$LDFLAGS" oldlibs="$LIBS" LDFLAGS=$THEPEGLDFLAGS AC_CHECK_LIB([ThePEG],[debugThePEG],[], [AC_MSG_ERROR([No ThePEG libraries in $THEPEGLDFLAGS. Please set --with-thepeg.])]) AC_SUBST([THEPEGLIB],[-lThePEG]) AC_SUBST(THEPEGLDFLAGS) AC_SUBST(THEPEGPATH) LIBS="$oldlibs" LDFLAGS="$oldldflags" AC_MSG_CHECKING([for ThePEG headers in]) AC_ARG_WITH([thepeg-headers], AC_HELP_STRING([--with-thepeg-headers=DIR],[location of ThePEG include directory]), [], [with_thepeg_headers="${with_thepeg}/include"]) AC_MSG_RESULT([$with_thepeg_headers]) if test "x$with_thepeg_headers" = "xno"; then AC_MSG_ERROR([Cannot build Analysis2 without ThePEG headers. Please set --with-thepeg-headers.]) fi THEPEGINCLUDE="-I$with_thepeg_headers" oldcppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $THEPEGINCLUDE" AC_CHECK_HEADER([ThePEG/Config/ThePEG.h],[], [AC_MSG_ERROR([No ThePEG headers in $with_thepeg_headers. Please set --with-thepeg-headers.])]) CPPFLAGS="$oldcppflags" AC_SUBST(THEPEGINCLUDE) ]) dnl ###### GSL ###### AC_DEFUN([ANALYSIS2_CHECK_GSL], [ AC_MSG_CHECKING([for gsl location]) GSLINCLUDE="" GSLLIBS="" AC_ARG_WITH(gsl, AC_HELP_STRING([--with-gsl=DIR],[location of gsl installation @<:@default=system libs@:>@]), [], [with_gsl=system]) if test "x$with_gsl" = "xno"; then AC_MSG_ERROR([libgsl is required. Please install the GNU scientific library and header files.]) fi if test "x$with_gsl" = "xsystem"; then AC_MSG_RESULT([in system libraries]) oldlibs="$LIBS" AC_CHECK_LIB(m,main) AC_CHECK_LIB(gslcblas,main) AC_CHECK_LIB(gsl,main,[], [ AC_MSG_ERROR([Cannot find libgsl. Please install the GNU scientific library and header files or use --with-gsl=.]) ] ) GSLLIBS="$LIBS" LIBS=$oldlibs else if test "`uname -m`" = "x86_64" -a -e "$with_gsl/lib64/libgsl.a" -a -d "$with_gsl/include/gsl"; then AC_MSG_RESULT([found in $with_gsl]) GSLLIBS="-L$with_gsl/lib64 -R$with_gsl/lib64 -lgslcblas -lgsl" GSLINCLUDE="-I$with_gsl/include" elif test -e "$with_gsl/lib/libgsl.a" -a -d "$with_gsl/include/gsl"; then AC_MSG_RESULT([found in $with_gsl]) GSLLIBS="-L$with_gsl/lib -R$with_gsl/lib -lgslcblas -lgsl" GSLINCLUDE="-I$with_gsl/include" else AC_MSG_RESULT([not found]) AC_MSG_ERROR([Can't find $with_gsl/lib/libgsl.a or the headers in $with_gsl/include]) fi fi AC_SUBST(GSLINCLUDE) AC_SUBST(GSLLIBS) ]) dnl ##### COMPILERFLAGS ##### AC_DEFUN([ANALYSIS2_COMPILERFLAGS], [ AC_REQUIRE([ANALYSIS2_CHECK_THEPEG]) AM_CPPFLAGS="-I\$(top_builddir)/include $THEPEGINCLUDE \$(GSLINCLUDE) \$(BOOSTINCLUDE)" AC_MSG_CHECKING([for debugging mode]) AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug],[debug mode, use --enable-debug=slow for additional options that slow down the run.]), [], [enable_debug=no] ) AC_MSG_RESULT([$enable_debug]) if test "x$enable_debug" = "xno"; then AM_CPPFLAGS="$AM_CPPFLAGS -DNDEBUG" else debugflags="-g" fi dnl -Wfloat-equal -fvisibility-inlines-hidden -Wctor-dtor-privacy -Weffc++ if test -n "$GCC"; then warnflags="-ansi -pedantic -Wall -W" if test "x$enable_debug" = "xslow"; then debugflags="$debugflags -fno-inline" AM_CPPFLAGS="$AM_CPPFLAGS -D_GLIBCXX_DEBUG" fi fi AC_SUBST(AM_CPPFLAGS) AC_SUBST(AM_CFLAGS, ["$warnflags $debugflags"]) AC_SUBST(AM_CXXFLAGS,["$warnflags $debugflags"]) AC_SUBST(AM_FCFLAGS, ["$debugflags"]) AC_SUBST(AM_LDFLAGS) ]) dnl ##### CLHEP ##### AC_DEFUN([ANALYSIS2_CHECK_CLHEP], [ AC_MSG_CHECKING([for CLHEP]) AC_ARG_WITH(clhep, AC_HELP_STRING([--with-clhep=DIR],[location of CLHEP installation]), [], [with_clhep=no]) AC_MSG_RESULT([$with_clhep]) CLHEPINCLUDE="" CLHEPPATH="" CLHEPLIB="" if test "x$with_clhep" != "xno"; then CLHEPPATH=$with_clhep AC_MSG_CHECKING([for CLHEPLIB]) if test -z "$CLHEPLIB"; then for filename in $CLHEPPATH/lib/libCLHEP-?.?.?.?.{so,dylib} $CLHEPPATH/lib/libCLHEP.{so,dylib} do if test -e $filename; then CLHEPLIB=`basename $filename | sed -e 's/^lib/-l/' -e 's/\.so//' -e 's/\.dylib//'` fi done if test -z "$CLHEPLIB"; then AC_MSG_RESULT([none]) AC_MSG_ERROR([Cannot find libCLHEP at $CLHEPPATH/lib.]) fi fi CLHEPLDFLAGS="-L$CLHEPPATH/lib -R$CLHEPPATH/lib" AC_MSG_RESULT([$CLHEPLIB]) AC_MSG_CHECKING([for CLHEPINCLUDE]) if test -z "$CLHEPINCLUDE"; then CLHEPINCLUDE=-I$CLHEPPATH/include fi AC_MSG_RESULT([$CLHEPINCLUDE]) # Now lets see if the libraries work properly oldLIBS="$LIBS" oldLDFLAGS="$LDFLAGS" oldCPPFLAGS="$CPPFLAGS" LIBS="$LIBS $CLHEPLIB" LDFLAGS="$LDFLAGS `echo $CLHEPLDFLAGS | sed -e 's!-R.* ! !'`" CPPFLAGS="$CPPFLAGS $CLHEPINCLUDE" # check CLHEP first AC_MSG_CHECKING([that CLHEP works]) AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <CLHEP/Random/Random.h>]],[[using namespace CLHEP; HepRandom r; r.flat();]])],[AC_MSG_RESULT([yes])],[AC_MSG_RESULT([no]) AC_MSG_ERROR([CLHEP not OK. See 'config.log' for details.]) ]) LIBS="$oldLIBS" LDFLAGS="$oldLDFLAGS" CPPFLAGS="$oldCPPFLAGS" AC_SUBST(CLHEPLIB) AC_SUBST(CLHEPLDFLAGS) AC_SUBST(CLHEPINCLUDE) fi ]) dnl ##### KTJET ##### AC_DEFUN([ANALYSIS2_CHECK_KTJET],[ AC_REQUIRE([ANALYSIS2_CHECK_CLHEP]) KTJETPATH="" KTJETLIBS="" KTJETINCLUDE="" LOAD_KTJET="" CREATE_KTJET="#create" AC_MSG_CHECKING([for KtJet]) AC_ARG_WITH(ktjet, AC_HELP_STRING([--with-ktjet=DIR],[location of KtJet installation]), [], [with_ktjet=no]) if test "x$with_ktjet" = "xno"; then AC_MSG_RESULT([not required]) else if test -z "$CLHEPINCLUDE"; then AC_MSG_RESULT([need CLHEP]) AC_MSG_ERROR([KtJet needs CLHEP headers. Please set --with-clhep.]) fi AC_MSG_RESULT([required]) KTJETPATH="$with_ktjet" AC_MSG_CHECKING([KtJet library name is]) if test -f "$KTJETPATH/lib/libKtJet.a"; then ktjetname=KtJet AC_MSG_RESULT([KtJet]) elif test -f "$KTJETPATH/lib/libKtEvent.a"; then ktjetname=KtEvent AC_MSG_RESULT([KtEvent]) else AC_MSG_RESULT([?]) AC_MSG_ERROR([No KtJet library found in $KTJETPATH/lib.]) fi ktjetrpath="" if test -e "$KTJETPATH/lib/lib$ktjetname.so"; then ktjetrpath="-R$KTJETPATH/lib" fi oldlibs=$LIBS oldcxxflags=$CXXFLAGS LIBS="" CXXFLAGS="-L$KTJETPATH/lib -l$ktjetname $CLHEPLDFLAGS" AC_CHECK_LIB([$ktjetname],[abort], [], [ AC_MSG_ERROR([lib$ktjename not working. See 'config.log' for details.]) ], [$CLHEPLIB]) KTJETLIBS="$CXXFLAGS $LIBS" LIBS=$oldlibs CXXFLAGS=$oldcxxflags AC_SUBST(KTJETLIBS) AC_MSG_CHECKING([KtJet headers]) if test -f "$KTJETPATH/include/KtJet/KtJet.h"; then KTJETINCLUDE="-I$KTJETPATH/include" elif test -f "$KTJETPATH/KtJet/KtJet.h"; then KTJETINCLUDE="-I$KTJETPATH" else AC_MSG_RESULT([not found.]) AC_MSG_ERROR([No KtJet headers. Please set KTJETINCLUDE explicitly.]) fi AC_MSG_RESULT([$KTJETINCLUDE]) KTJETINCLUDE="$KTJETINCLUDE $CLHEPINCLUDE" oldcppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $KTJETINCLUDE" AC_CHECK_HEADER([KtJet/KtJet.h],[], [AC_MSG_ERROR([Problem with KtJet headers in $KTJETINCLUDE.])]) CPPFLAGS="$oldcppflags" AC_SUBST(KTJETINCLUDE) LOAD_KTJET="read KtJetAnalysis.in" CREATE_KTJET="create" AC_SUBST(LOAD_KTJET) AC_SUBST(CREATE_KTJET) fi AM_CONDITIONAL(WITH_LIBKTJET,[test ! -z "$KTJETPATH"]) ]) dnl ##### FastJet ##### AC_DEFUN([ANALYSIS2_CHECK_FASTJET],[ FASTJETPATH="" FASTJETLIBS="" FASTJETINCLUDE="" LOAD_FASTJET="" AC_MSG_CHECKING([for FastJet]) AC_ARG_WITH(fastjet, AC_HELP_STRING([--with-fastjet=DIR],[location of FastJet installation]), [], [with_fastjet=no]) if test "x$with_fastjet" = "xno"; then AC_MSG_RESULT([not required]) else AC_MSG_RESULT([required]) FASTJETPATH="$with_fastjet" # check for libraries AC_MSG_CHECKING([for FastJet library]) if test -z "$FASTJETLIB" ; then FASTJETLIB="$FASTJETPATH/lib" fi if test -e "$FASTJETLIB/libfastjet.a"; then AC_MSG_RESULT([found static library]) AC_MSG_CHECKING([for FastJet dynamic library]) if test ! -e "$FASTJETLIB/libfastjet.so"; then AC_MSG_RESULT([not found, please create libfastjet.so from $FASTJETLIB/libfastjet.a]) AC_MSG_ERROR([No FastJet library found in $FASTJETLIB.]) fi AC_MSG_RESULT([$FASTJETLIB/libfastjet.so]) else AC_MSG_RESULT([?]) AC_MSG_ERROR([No FastJet library found in $FASTJETLIB.]) fi FASTJETLIBS="-L$FASTJETLIB -lfastjet" AC_SUBST(FASTJETLIBS) # check for headers AC_MSG_CHECKING([for FastJet headers]) if test -z "$FASTJETINCLUDE" ; then FASTJETINCLUDE="$FASTJETPATH/include" fi if test -f "$FASTJETINCLUDE/fastjet/ClusterSequence.hh"; then FASTJETINCLUDE="-I$FASTJETINCLUDE" else AC_MSG_RESULT([not found.]) AC_MSG_ERROR([No FastJet headers.]) fi AC_MSG_RESULT([$FASTJETINCLUDE]) AC_SUBST(FASTJETINCLUDE) fi AM_CONDITIONAL(WITH_LIBFASTJET,[test ! -z "$FASTJETPATH"]) ]) AC_DEFUN([ANALYSIS2_OVERVIEW], [ echo "=== $PACKAGE_STRING configuration summary ===========" echo "" echo " Analysis2 debug mode: $enable_debug" echo "" echo " gsl: $with_gsl" echo "" echo " ThePEG: $with_thepeg" echo " ThePEG headers: $with_thepeg_headers" echo "" echo " CLHEP: $with_clhep" echo " KtJet: $with_ktjet" echo "" echo "=====================================================" ]) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/AUTHORS�������������������������������������������������������0000644�0001750�0001750�00000000050�11754474774�021307� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Simon Platzer -- simon.plaetzer@desy.de ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/ChangeLog�����������������������������������������������������0000644�0001750�0001750�00000000000�11754474774�022004� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/src/����������������������������������������������������������0000755�0001750�0001750�00000000000�11756464211�021016� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/src/Analysis2.in����������������������������������������������0000644�0001750�0001750�00000034465�11754474774�023244� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################################################ # Analysis2 setup ################################################################################ mkdir /Analysis2 cd /Analysis2 library Analysis2.so create Analysis2::EventExtractor EventExtractor ## Analysis2 handlers ########################################################## # # Analysis2 based AnalysisHandlers support the following interfaces: # # HistogramOutput # - set the object to output histograms # # JetFinder # - set the Jetfinder to be used # # BookPerSubprocess # - Keep independent histograms for each hard subprocess final state # multiplicity. This is useful for matching/merging approaches # # Typically, Analysis2 analyses have interfaces directly by the names # of the observables they contain. These interfaces are used to set # options in the form of an XML tag as follows: # # set myAnalysis:myObservable <options [attributes]/> # - where [attributes] is a space-separated list of the following statements: # # title="..." xlabel="..." ylabel="..." # - specify title, x- and y-axis labels for plotting # # norm="..." , where ... is either none, unity, xsec or data # - specify how to normalise the histogram # # and either: # # datafile="..." dataname="..." # - specify a data file to read binning and data from, and a name # for the data given # # or # # lowerbound="..." upperbound="..." numbins="..." # - create a histogram from lowerbound to upperbound using # numbins bins for the observable # # ################################################################################ ## Comparison with data ######################################################## # # To comapre to data, we provide some standard data files from HEPDATA. # You can compare to any data you like, by inserting a data file into # your analysis. For the default data, and how to compare to your own data # see the [Collider]Analysis2.in files. The data files are assumed to be # in an ASCII table format: # # bin_low bin_high content error(stat) error(sys) # # where comments may be indicated by a hash '#' . # ################################################################################ ## Parallel runs ############################################################### # # Suppose there are nrun statistically independent runs for the same # observable. Let the output of each of these runs be in prefix.0, ..., # prefix.[nrun-1] . Then Analysis2 based AnalysisHandlers support this # parallelization: # # Create the Analysis as usual (or take one from the repository). Then indicate # that this is part of a parallel run: # # set myAnalysis:Parallel On # # Perform the runs. If all runs are finished, create a small .in file # containing the following: # # - setup your analysis handler again, if not already in the repository. # # Hint: During the read phase, you may save changes to the repository using # the command # # save HerwigDefaults.rpo # - to save the defaults repository # # save myRepository.rpo # - to save to another repository # # - Indicate that combination of parallel runs will start: # # set myAnalysis:startCombine # # - Combine any observable, say myObservable, contained in the # Analysis: # # set myAnalysis:combine prefix nruns myObservable norm # - where norm is either: none, unity, xsec or data . # norm is optional and usually taken from the options # set for the specific observable. # # - Indicate that all observables of interest have been combined: # # set myAnalysis:finishCombine # # ################################################################################ ## Output of histograms ######################################################## # # The internal Histogram2 class can be dumped for use with your favorite # plotting program. For this purpose, a Histogram2Output class has to be # implemented. # # Currently we provide output to simple ASCII tables and for # gnuplot (v 4.2 and above). # # In addition, each histogram is written to a XML file, which can be # processed further. # ################################################################################ mkdir Output cd Output ## This creates a simple output to ASCII tables create Analysis2::Histogram2Output Simple ## Specify a path where to store the output set Simple:Prefix ./ ## Optionally, a name for the model used can be given # set Simple:MCModel ME+PS ## This creates output processed by gnuplot. It will put a Makefile in ## the path specified. When finished, just say: ## make plots create Analysis2::GnuplotOutput Gnuplot ## Specify a path where to store the output set Gnuplot:Prefix ./ ## Optionally, a name for the model used can be given # set Gnuplot:MCModel ME+PS ## If a data channel is in the histogram, include a ratio plot with ## data and Monte Carlo uncertainties set Gnuplot:Ratio On ## If a data channel is in the histogram, include a plot of the chi^2 per bin set Gnuplot:Chi2 Off ## For ME+PS merging it is interesting to look at the contribution from ## independent jet multiplicities of the hard processes. ## This specifies, which range of hard process multiplicities to plot in ## addition to the full ME+PS result. # set Gnuplot:MultiplicityRange 2 5 ## The gnuplot program location may be specified ## if non-standard (default is 'gnuplot') # set Gnuplot:Gnuplot $(MYOPT)/gnuplot/4.2.1/bin/gnuplot cd /Analysis2 ## Selection of jet finder ##################################################### # # Two jet finders are currently provided. As these depend on the mode Herwig++ # has been built, we only give commented examples here. # ################################################################################ mkdir JetFinders cd JetFinders ## FastJet ####################### ## For the various options of FastJet see the documentation for the interfaces ## of FastJetFinder and JetFinder # library FastJetFinder.so # create Analysis2::FastJetFinder FastJet ## KtJet ######################### ## For the various options of KtJet see the documentation for the interfaces of ## KtJetFinder and JetFinder # library KtJetFinder.so # create Analysis2::KtJetFinder KtJet cd /Analysis2 ## Analysis for e+e- colliders ################################################# # # A set of analyses suited to look at in e+e- collisions # ################################################################################ ## Event shapes ################################################################ ## Create event shapes analysis create Analysis2::EventShapes2 EventShapes set EventShapes:EventExtractor EventExtractor ## set the output object set EventShapes:HistogramOutput /Analysis2/Output/Simple ## enable booking per hard subprocess multiplicity (default is Off) # set EventShapes:BookPerSubprocess On ## indicate, tat part of parallel runs (default is Off) # set EventShapes:Parallel On # now set options for the various observables set EventShapes:OneMinusThrust <options \ xlabel="$1-T$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}(1-T)}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.5" \ numbins="100" \ /> # to build histograms from a data file use, e.g. # set EventShapes:OneMinusThrust <options \ # xlabel="$$" \ # ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}}$" \ # norm="data" \ # datafile="myData/DELPHI_OneMinusThrust.dat" \ # dataname="DELPHI data" \ # /> set EventShapes:ThrustMajor <options \ xlabel="$T_{maj}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}T_{maj}}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.64" \ numbins="100" \ /> set EventShapes:ThrustMinor <options \ xlabel="$T_{min}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}T_{min}}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.4" \ numbins="100" \ /> set EventShapes:Oblateness <options \ xlabel="$O$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}O}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.52" \ numbins="100" \ /> set EventShapes:Sphericity <options \ xlabel="$S$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}S}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.85" \ numbins="100" \ /> set EventShapes:Aplanarity <options \ xlabel="$A$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}A}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.3" \ numbins="100" \ /> set EventShapes:Planarity <options \ xlabel="$P$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}P}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.5" \ numbins="100" \ /> set EventShapes:CParameter <options \ xlabel="$C$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}C}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.92" \ numbins="100" \ /> set EventShapes:DParameter <options \ xlabel="$D$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}D}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.8" \ numbins="100" \ /> set EventShapes:MHigh <options \ xlabel="$\rho_{high}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}\rho_{high}}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.4" \ numbins="100" \ /> set EventShapes:MLow <options \ xlabel="$\rho_{low}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}\rho_{low}}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.12" \ numbins="100" \ /> set EventShapes:MDiff <options \ xlabel="$\rho_{diff}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}\rho_{diff}}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.4" \ numbins="100" \ /> set EventShapes:BMax <options \ xlabel="$B_{max}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}B_{max}}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.32" \ numbins="100" \ /> set EventShapes:BMin <options \ xlabel="$B_{min}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}B_{min}}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.18" \ numbins="100" \ /> set EventShapes:BSum <options \ xlabel="$B_{sum}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}B_{sum}}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.36" \ numbins="100" \ /> set EventShapes:BDiff <options \ xlabel="$D_{diff}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}B_{diff}}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="0.28" \ numbins="100" \ /> ## y-merge distribution ######################################################## create Analysis2::YMerge YMerge set YMerge:HistogramOutput /Analysis2/Output/Simple ## here we need a jet finder. Commented out, as depends ## on your build. Note that, for e+e- colliders only KtJet ## is a suitable choice, as FastJet (by now) does only provide ## the longitudinal invariant kt version # set YMerge:JetFinder /Analysis2/JetFinders/KtJet set YMerge:EventExtractor EventExtractor ## set the maximum n set YMerge:NMax 5 ## set options ## options for y_{23} and so on set YMerge:Y 2 <options \ xlabel="$y_{23}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}y_{23}}$" \ norm="unity" \ log="true" \ lowerbound="1.e-6" \ upperbound="1.0" \ numbins="100" \ /> set YMerge:Y 3 <options \ xlabel="$y_{34}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}y_{34}}$" \ norm="unity" \ log="true" \ lowerbound="1.e-6" \ upperbound="1.0" \ numbins="100" \ /> set YMerge:Y 4 <options \ xlabel="$y_{45}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}y_{45}}$" \ norm="unity" \ log="true" \ lowerbound="1.e-6" \ upperbound="1.0" \ numbins="100" \ /> set YMerge:Y 5 <options \ xlabel="$y_{56}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}y_{56}}$" \ norm="unity" \ log="true" \ lowerbound="1.e-6" \ upperbound="1.0" \ numbins="100" \ /> ## jet rates depending on y ######################################################## create Analysis2::YJetRates YJetRates set YJetRates:HistogramOutput /Analysis2/Output/Simple ## here we need a jet finder. Commented out, as depends ## on your build. Note that, for e+e- colliders only KtJet ## is a suitable choice, as FastJet (by now) does only provide ## the longitudinal invariant kt version # set YJetRates:JetFinder /Analysis2/JetFinders/KtJet set YJetRates:EventExtractor EventExtractor ## set the maximum n set YJetRates:NMax 5 ## set options ## options for R_2 and so on set YJetRates:R 2 <options \ xlabel="$y$" \ ylabel="$R_2(y)$" \ norm="none" \ log="false" \ lowerbound="0." \ upperbound="1.0" \ numbins="100" \ /> set YJetRates:R 3 <options \ xlabel="$y$" \ ylabel="$R_3(y)$" \ norm="none" \ log="false" \ lowerbound="0." \ upperbound="1.0" \ numbins="100" \ /> set YJetRates:R 4 <options \ xlabel="$y$" \ ylabel="$R_4(y)$" \ norm="none" \ log="false" \ lowerbound="0." \ upperbound="1.0" \ numbins="100" \ /> set YJetRates:R 5 <options \ xlabel="$y$" \ ylabel="$R_5(y)$" \ norm="none" \ log="false" \ lowerbound="0." \ upperbound="1.0" \ numbins="100" \ /> ## Four-jet correlations ####################################################### create Analysis2::FourJetCorrelations FourJetCorrelations set FourJetCorrelations:HistogramOutput /Analysis2/Output/Simple ## here we need a jet finder. Commented out, as depends ## on your build. Note that, for e+e- colliders only KtJet ## is a suitable choice, as FastJet (by now) does only provide ## the longitudinal invariant kt version # cd /Analysis2/JetFinders # cp KtJet KtJetFourJets # set KtJetFourJets:yCut 0.008 # cd /Analysis2 # set FourJetCorrelations:JetFinder /Analysis2/JetFinders/KtJetFourJets set FourJetCorrelations:EventExtractor EventExtractor set FourJetCorrelations:CosAlpha34 <options \ xlabel="$\cos (\alpha_{34})$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}\cos (\alpha_{34})}$" \ norm="unity" \ lowerbound="-1.0" \ upperbound="1.0" \ numbins="100" \ /> set FourJetCorrelations:CosChiBZ <options \ xlabel="$|\cos (\chi_{BZ})|$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}|\cos (\chi_{BZ})|}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="1.0" \ numbins="100" \ /> set FourJetCorrelations:CosPhiKSW <options \ xlabel="$\cos (\Phi_{KSW})$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}\cos (\Phi_{KSW})}$" \ norm="unity" \ lowerbound="-1.0" \ upperbound="1.0" \ numbins="100" \ /> set FourJetCorrelations:CosThetaNR <options \ xlabel="$|\cos (\theta_{NR}^*)|$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}|\cos (\theta_{NR}^*)}$" \ norm="unity" \ lowerbound="0.0" \ upperbound="1.0" \ numbins="100" \ /> �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/src/Makefile.in�����������������������������������������������0000644�0001750�0001750�00000000000�11756461505�023054� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/src/LEPAnalysis2.in�������������������������������������������0000644�0001750�0001750�00000015100�11754474774�023566� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################################################ # Analysis of various observables at LEP 1 ################################################################################ cd /Analysis2 cp EventShapes LEPEventShapes cp YMerge LEPYMerge cp FourJetCorrelations LEPFourJets ################################################################################ # Analysis handlers to be used by the LEP generator ################################################################################ ## y-merge distribution ######################################################## ## enable KtJet in Analysis2.in ! # cd /Analysis2/JetFinders # set KtJet:CollisionType ee # set KtJet:DistanceScheme angular # set KtJet:RecombinationScheme E # cd /Analysis2 # set LEPYMerge:JetFinder /Analysis2/JetFinders/KtJet ## Four-jet correlations ####################################################### ## enable KtJet in Analysis2.in ! # cd /Analysis2/JetFinders # cp KtJet KtJetFourJets # set KtJetFourJets:yCut 0.008 # set KtJetFourJets:CollisionType ee # set KtJetFourJets:DistanceScheme angular # set KtJetFourJets:RecombinationScheme E # cd /Analysis2 # set LEPFourJets:JetFinder /Analysis2/JetFinders/KtJetFourJets ################################################################################ # Set the data files to compare to ################################################################################ ## Event shapes ################################################################ set LEPEventShapes:OneMinusThrust <options \ xlabel="$1-T$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}(1-T)}$" \ norm="data" \ datafile="Data/DELPHI.OneMinusThrust.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:ThrustMajor <options \ xlabel="$T_{maj}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}T_{maj}}$" \ norm="data" \ datafile="Data/DELPHI.ThrustMajor.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:ThrustMinor <options \ xlabel="$T_{min}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}T_{min}}$" \ norm="data" \ datafile="Data/DELPHI.ThrustMinor.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:Oblateness <options \ xlabel="$O$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}O}$" \ norm="data" \ datafile="Data/DELPHI.Oblateness.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:Sphericity <options \ xlabel="$S$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}S}$" \ norm="data" \ datafile="Data/DELPHI.Sphericity.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:Aplanarity <options \ xlabel="$A$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}A}$" \ norm="data" \ datafile="Data/DELPHI.Aplanarity.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:Planarity <options \ xlabel="$P$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}P}$" \ norm="data" \ datafile="Data/DELPHI.Planarity.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:CParameter <options \ xlabel="$C$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}C}$" \ norm="data" \ datafile="Data/DELPHI.CParameter.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:DParameter <options \ xlabel="$D$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}D}$" \ norm="data" \ datafile="Data/DELPHI.DParameter.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:MHigh <options \ xlabel="$\rho_{high}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}\rho_{high}}$" \ norm="data" \ datafile="Data/DELPHI.MHigh.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:MLow <options \ xlabel="$\rho_{low}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}\rho_{low}}$" \ norm="data" \ datafile="Data/DELPHI.MLow.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:MDiff <options \ xlabel="$\rho_{diff}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}\rho_{diff}}$" \ norm="data" \ datafile="Data/DELPHI.MDiff.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:BMax <options \ xlabel="$B_{max}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}B_{max}}$" \ norm="data" \ datafile="Data/DELPHI.BMax.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:BMin <options \ xlabel="$B_{min}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}B_{min}}$" \ norm="data" \ datafile="Data/DELPHI.BMin.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:BSum <options \ xlabel="$B_{sum}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}B_{sum}}$" \ norm="data" \ datafile="Data/DELPHI.BSum.dat" \ dataname="DELPHI 1996" \ /> set LEPEventShapes:BDiff <options \ xlabel="$D_{diff}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}B_{diff}}$" \ norm="data" \ datafile="Data/DELPHI.BDiff.dat" \ dataname="DELPHI 1996" \ /> ## y-merge distribution ######################################################## set LEPYMerge:Y 2 <options \ xlabel="$y_{23}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}y_{23}}$" \ norm="data" \ datafile="Data/OPAL.y23.dat" \ dataname="OPAL 1999" \ /> set LEPYMerge:Y 3 <options \ xlabel="$y_{34}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}y_{34}}$" \ norm="data" \ datafile="Data/OPAL.y34.dat" \ dataname="OPAL 1999" \ /> set LEPYMerge:Y 4 <options \ xlabel="$y_{45}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}y_{45}}$" \ norm="data" \ datafile="Data/OPAL.y45.dat" \ dataname="OPAL 1999" \ /> set LEPYMerge:Y 5 <options \ xlabel="$y_{56}$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}y_{56}}$" \ norm="data" \ datafile="Data/OPAL.y56.dat" \ dataname="OPAL 1999" \ /> ## Four-jet correlations ####################################################### set LEPFourJets:CosAlpha34 <options \ xlabel="$\cos (\alpha_{34})$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}\cos (\alpha_{34})}$" \ norm="data" \ datafile="Data/DELPHI.CosAlpha34.dat" \ dataname="DELPHI" \ /> set LEPFourJets:CosChiBZ <options \ xlabel="$|\cos (\chi_{BZ})|$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}|\cos (\chi_{BZ})|}$" \ norm="data" \ datafile="Data/DELPHI.CosChiBZ.dat" \ dataname="DELPHI" \ /> set LEPFourJets:CosPhiKSW <options \ xlabel="$\cos (\Phi_{KSW})$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}\cos (\Phi_{KSW})}$" \ norm="data" \ datafile="Data/DELPHI.CosPhiKSW.dat" \ dataname="DELPHI" \ /> set LEPFourJets:CosThetaNR <options \ xlabel="$|\cos (\theta_{NR}^*)|$" \ ylabel="$\frac{1}{\sigma}\frac{{\rm d}\sigma}{{\rm d}|\cos (\theta_{NR}^*)}$" \ norm="data" \ datafile="Data/DELPHI.CosThetaNR.dat" \ dataname="DELPHI" \ /> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/src/Makefile.am�����������������������������������������������0000644�0001750�0001750�00000000150�11754474774�023063� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������infiledir = $(pkgdatadir) INFILES = \ Analysis2.in \ LEPAnalysis2.in dist_infile_DATA = \ $(INFILES) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/Analysis2/README��������������������������������������������������������0000644�0001750�0001750�00000000000�11754474774�021112� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AnomalousHVV/�����������������������������������������������������������0000755�0001750�0001750�00000000000�11756464211�020704� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AnomalousHVV/LHC.in�����������������������������������������������������0000644�0001750�0001750�00000004137�11754474774�021664� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator based on LHC parameters # usage: Herwig++ read LHC.in ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 set LHCGenerator:EventHandler:CascadeHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set /Herwig/Particles/h0:Stable 1 set /Herwig/Cuts/JetKtCut:MinKT 20.0*GeV set /Herwig/Cuts/JetKtCut:MinEta -4.5 set /Herwig/Cuts/JetKtCut:MaxEta 4.5 ################################################## # LHC physics parameters (override defaults here) ################################################## set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 ################################################## # Matrix Elements for hadron-hadron collisions # (by default only gamma/Z switched on) ################################################## cd /Herwig/MatrixElements/ create Herwig::MEPP2HiggsVBF MEPP2HiggsVBF set MEPP2HiggsVBF:Process 1 set MEPP2HiggsVBF:MaxFlavour 2 insert SimpleQCD:MatrixElements[0] MEPP2HiggsVBF create Herwig::AnomalousWWHVertex /Herwig/Vertices/AnonWWHVertex AnomalousHVV.so set /Herwig/Vertices/AnonWWHVertex:InteractionType SM set /Herwig/Model:Vertex/WWH /Herwig/Vertices/AnonWWHVertex cd /Herwig/Generators ################################################## # Useful analysis handlers for hadron-hadron physics ################################################## # analysis of W/Z events set /Herwig/Analysis/Basics:CheckQuark 0 create Herwig::SimpleVBFAnalysis /Herwig/Analysis/VBF AnomalousWWHVertex.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/VBF ################################################## # Save run for later usage with 'Herwig++ run' ################################################## saverun LHC LHCGenerator ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AnomalousHVV/SimpleVBFAnalysis.h����������������������������������������0000644�0001750�0001750�00000011275�11754474774�024373� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_SimpleVBFAnalysis_H #define HERWIG_SimpleVBFAnalysis_H // // This is the declaration of the SimpleVBFAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the SimpleVBFAnalysis class. * * @see \ref SimpleVBFAnalysisInterfaces "The interfaces" * defined for SimpleVBFAnalysis. */ class SimpleVBFAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} 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. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription<SimpleVBFAnalysis> initSimpleVBFAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SimpleVBFAnalysis & operator=(const SimpleVBFAnalysis &); private: /** * Histogram for \f$\Delta\phi\f$ */ HistogramPtr _deltaPhi; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SimpleVBFAnalysis. */ template <> struct BaseClassTrait<Herwig::SimpleVBFAnalysis,1> { /** Typedef of the first base class of SimpleVBFAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the SimpleVBFAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SimpleVBFAnalysis> : public ClassTraitsBase<Herwig::SimpleVBFAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::SimpleVBFAnalysis"; } /** * The name of a file containing the dynamic library where the class * SimpleVBFAnalysis is implemented. It may also include several, space-separated, * libraries if the class SimpleVBFAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "AnomalousHVV.so"; } }; /** @endcond */ } #endif /* HERWIG_SimpleVBFAnalysis_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AnomalousHVV/AnomalousWWHVertex.h���������������������������������������0000644�0001750�0001750�00000011551�11754474774�024617� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_AnomalousWWHVertex_H #define HERWIG_AnomalousWWHVertex_H // // This is the declaration of the AnomalousWWHVertex class. // #include "ThePEG/Helicity/Vertex/Scalar/GeneralVVSVertex.h" namespace Herwig { using namespace ThePEG; /** * The AnomalousWWHVertex class implements the option of an anomalous * coupling in the \f$h^0W^+W^+\f$ and \f$h^0Z^0Z^0\f$ vertices. * * The options of using either the exact Standard Model, a CP-odd * \f[\frac1{\Lambda}J_1^\mu J_2^\nu\epsilon^{\mu\nu\alpha\beta}q_{1\alpha}q_{2\beta},\f] * or CP-even * \f[\frac1{\Lambda}J_1^\mu J_2^\nu * \left[g_{\mu\nu}q_1 \cdot q_2-q_{1\nu}q_{2\mu}\right],\f] * form, where \f$\Lambda\f$ is the scale of the new operator. * * @see \ref AnomalousWWHVertexInterfaces "The interfaces" * defined for AnomalousWWHVertex. */ class AnomalousWWHVertex: public Helicity::GeneralVVSVertex { public: /** * The default constructor. */ AnomalousWWHVertex(); /** * Calculate coupling. * @param q2 Scale at which to evaluate couplings * @param part1 ParticleDataPointer to first particle * @param part2 ParticleDataPointer to second particle * @param part3 ParticleDataPointer to third particle */ virtual void setCoupling(Energy2 q2,tcPDPtr part1, tcPDPtr part2, tcPDPtr part3); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<AnomalousWWHVertex> initAnomalousWWHVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ AnomalousWWHVertex & operator=(const AnomalousWWHVertex &); /** * Switch for the type of interaction */ unsigned int interactionType_; /** * The scale \f$\Lambda\f$ */ Energy Lambda_; /** * Storage of the couplings. */ //@{ /** * The last value of the electroweak coupling calculated. */ Complex couplast_; /** * The scale \f$q^2\f$ at which the coupling was last evaluated. */ Energy2 q2last_; /** * The mass of the \f$W\f$ boson. */ Energy mw_; /** * The factor for the \f$Z\f$ vertex. */ double zfact_; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of AnomalousWWHVertex. */ template <> struct BaseClassTrait<Herwig::AnomalousWWHVertex,1> { /** Typedef of the first base class of AnomalousWWHVertex. */ typedef Helicity::GeneralVVSVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the AnomalousWWHVertex class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::AnomalousWWHVertex> : public ClassTraitsBase<Herwig::AnomalousWWHVertex> { /** Return a platform-independent class name */ static string className() { return "Herwig::AnomalousWWHVertex"; } /** * The name of a file containing the dynamic library where the class * AnomalousWWHVertex is implemented. It may also include several, space-separated, * libraries if the class AnomalousWWHVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "AnomalousHVV.so"; } }; /** @endcond */ } #endif /* HERWIG_AnomalousWWHVertex_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AnomalousHVV/Makefile.in������������������������������������������������0000644�0001750�0001750�00000001407�11754474774�022770� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*- Makefile -*- (for emacs) # # This Makefile is intended for compiling Herwig++ plugins # # This Makefile received very little testing, # any bug reports are very welcome! # # location of include files THEPEGINCLUDE = HERWIGINCLUDE = GSLINCLUDE = LDFLAGS = SHARED_FLAG = INCLUDE = $(THEPEGINCLUDE) $(HERWIGINCLUDE) $(GSLINCLUDE) # # C++ flags # CXX = CXXFLAGS = ALLCCFILES=$(shell echo *.cc) default : AnomalousHVV.so %.o : %.cc %.h $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) -c -shared $< -o $@ AnomalousHVV.so : AnomalousWWHVertex.o SimpleVBFAnalysis.o $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) $(SHARED_FLAG) $(LDFLAGS) \ AnomalousWWHVertex.o SimpleVBFAnalysis.o -o AnomalousHVV.so clean: rm -f $(ALLCCFILES:.cc=.o) RadiativeZPrime.so���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AnomalousHVV/AnomalousWWHVertex.cc��������������������������������������0000644�0001750�0001750�00000007324�11754474774�024760� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the AnomalousWWHVertex class. // #include "AnomalousWWHVertex.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Models/StandardModel/StandardModel.h" using namespace Herwig; using namespace ThePEG::Helicity; AnomalousWWHVertex::AnomalousWWHVertex() : interactionType_(0), Lambda_(1000.*GeV), couplast_(0.), q2last_(ZERO), mw_(ZERO), zfact_(0.) { // particles addToList(24,-24,25); addToList(23,23,25); // calculate the kinematic invariants needed kinematics(true); } IBPtr AnomalousWWHVertex::clone() const { return new_ptr(*this); } IBPtr AnomalousWWHVertex::fullclone() const { return new_ptr(*this); } void AnomalousWWHVertex::doinit() { // parameters mw_ = getParticleData(ThePEG::ParticleID::Wplus)->mass(); zfact_ = 1./(1.-generator()->standardModel()->sin2ThetaW()); // order in the couplings orderInGem(1); orderInGs(0); // base class GeneralVVSVertex::doinit(); } void AnomalousWWHVertex::persistentOutput(PersistentOStream & os) const { os << interactionType_ << ounit(mw_,GeV) << zfact_ << ounit(Lambda_,GeV); } void AnomalousWWHVertex::persistentInput(PersistentIStream & is, int) { is >> interactionType_ >> iunit(mw_,GeV) >> zfact_ >> iunit(Lambda_,GeV); } ClassDescription<AnomalousWWHVertex> AnomalousWWHVertex::initAnomalousWWHVertex; // Definition of the static class description member. void AnomalousWWHVertex::Init() { static ClassDocumentation<AnomalousWWHVertex> documentation ("The AnomalousWWHVertex class implemenets the Higgs coupling to two electroweak" " vector bosons including the option of anomalous couplings."); static Switch<AnomalousWWHVertex,unsigned int> interfaceInteractionType ("InteractionType", "The type of interaction", &AnomalousWWHVertex::interactionType_, 0, false, false); static SwitchOption interfaceInteractionTypeSM (interfaceInteractionType, "SM", "Use the standard model form", 0); static SwitchOption interfaceInteractionTypeCPOdd (interfaceInteractionType, "CPOdd", "Use a CP odd form", 1); static SwitchOption interfaceInteractionTypeCPEven (interfaceInteractionType, "CPEven", "Use a CP even form", 2); static Parameter<AnomalousWWHVertex,Energy> interfaceLambda ("Lambda", "The scale of new physics", &AnomalousWWHVertex::Lambda_, GeV, 1000.0*GeV, ZERO, 1000000.0*GeV, false, false, Interface::limited); } void AnomalousWWHVertex::setCoupling(Energy2 q2,tcPDPtr a,tcPDPtr, tcPDPtr) { int ibos=abs(a->id()); a00(0.); a11(0.); a12(0.); a21(0.); a22(0.); aEp(0.); switch(interactionType_) { case 0: // first the overall normalisation if(q2!=q2last_) { couplast_ = weakCoupling(q2) * UnitRemoval::InvE * mw_; q2last_ = q2; } if(ibos==24) norm(couplast_ ); else if(ibos==23) norm(couplast_ * zfact_ ); else throw HelicityConsistencyError() << "AnomalousWWHVertex::setCoupling " << "Invalid particles in WWH Vertex" << Exception::runerror; a00(double(UnitRemoval::E2/invariant(1,2))); break; case 1: norm(double(UnitRemoval::E/Lambda_)); aEp(1.); break; case 2: norm(double(UnitRemoval::E/Lambda_)); a00( 1.); a21(-1.); break; default: throw HelicityConsistencyError() << "AnomalousWWHVertex::setCoupling " << "Unknown type of interaction" << Exception::runerror; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AnomalousHVV/SimpleVBFAnalysis.cc���������������������������������������0000644�0001750�0001750�00000004441�11754474774�024526� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SimpleVBFAnalysis class. // #include "SimpleVBFAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/Event.h" using namespace Herwig; void SimpleVBFAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). tPVector part = event->getFinalState(); tPVector jets; for(tPVector::const_iterator iter = part.begin(), end = part.end(); iter!=end;++iter) { if((**iter).id()==ParticleID::h0) continue; if((**iter).momentum().perp()<20.*GeV) continue; if(abs((**iter).momentum().eta())>4.5) continue; jets.push_back(*iter); } if(jets.size()!=2) return; double eta[2]={jets[0]->momentum().eta(), jets[1]->momentum().eta()}; if(eta[0]*eta[1]>0.) return; if(abs(eta[0]-eta[1])<4.2) return; double deltaPhi = jets[0]->momentum().phi()-jets[1]->momentum().phi(); if(deltaPhi<-Constants::pi) deltaPhi+=Constants::twopi; if(deltaPhi> Constants::pi) deltaPhi-=Constants::twopi; *_deltaPhi += abs(deltaPhi); } IBPtr SimpleVBFAnalysis::clone() const { return new_ptr(*this); } IBPtr SimpleVBFAnalysis::fullclone() const { return new_ptr(*this); } NoPIOClassDescription<SimpleVBFAnalysis> SimpleVBFAnalysis::initSimpleVBFAnalysis; // Definition of the static class description member. void SimpleVBFAnalysis::Init() { static ClassDocumentation<SimpleVBFAnalysis> documentation ("There is no documentation for the SimpleVBFAnalysis class"); } void SimpleVBFAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace HistogramOptions; _deltaPhi->topdrawOutput(outfile,Frame,"BLACK","Delta Phi"); outfile.close(); } void SimpleVBFAnalysis::doinitrun() { AnalysisHandler::doinitrun(); _deltaPhi = new_ptr(Histogram(0,Constants::pi,200)); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AlpGen/�����������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464211�017530� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AlpGen/BasicLesHouchesFileReader.h��������������������������������������0000644�0001750�0001750�00000021160�11754474774�024645� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // BasicLesHouchesFileReader.h is a part of Herwig++ - A multi-purpose // Monte Carlo event generator. // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the BasicLesHouchesFileReader class. // #ifndef HERWIG_BasicLesHouchesFileReader_H #define HERWIG_BasicLesHouchesFileReader_H // This is the declaration of the BasicLesHouchesFileReader class. #include "ThePEG/LesHouches/LesHouchesReader.h" #include "BasicLesHouchesFileReader.fh" #include "ThePEG/PDT/Decayer.h" #include "ThePEG/Utilities/CFileLineReader.h" #include <stdio.h> namespace Herwig { using namespace ThePEG; /** * BasicLesHouchesFileReader derives from the LesHouchesReader base class * to be used for objects which read event files from matrix element * generators. It extends LesHouchesReader by defining a file handle to be * read from, which is opened and closed by the open() and close() * functions. Note that the file handle is a standard C filehandle and * not a C++ stream. This is because there is no standard way in C++ * to connect a pipe to a stream for reading eg. gzipped files. This * class is able to read plain event files conforming to the Les * Houches Event File accord. * * @see \ref BasicLesHouchesFileReaderInterfaces "The interfaces" * defined for BasicLesHouchesFileReader. * @see LesHouchesReader * @see BasicLesHouchesFileReader */ class BasicLesHouchesFileReader: public LesHouchesReader { public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor. */ BasicLesHouchesFileReader() : neve(0), ieve(0) {} /** * Copy-constructor. Note that a file which is opened in the object * copied from will have to be reopened in this. */ BasicLesHouchesFileReader(const BasicLesHouchesFileReader &); /** * Destructor. */ virtual ~BasicLesHouchesFileReader(); //@} public: /** @name Virtual functions specified by the LesHouchesReader base class. */ //@{ /** * Initialize. This function is called by the LesHouchesEventHandler * to which this object is assigned. */ virtual void initialize(LesHouchesEventHandler & eh); /** * Calls readEvent() or uncacheEvent() to read information into the * LesHouches common block variables. This function is called by the * LesHouchesEventHandler if this reader has been selectod to * produce an event. * * @return the weight asociated with this event. If negative weights * are allowed it should be between -1 and 1, otherwise between 0 * and 1. If outside these limits the previously estimated maximum * is violated. Note that the estimated maximum then should be * updated from the outside. */ virtual double getEvent(); /** * Calls doReadEvent() and performs pre-defined reweightings. A * sub-class overrides this function it must make sure that the * corresponding reweightings are done. */ virtual bool readEvent(); /** * Skip \a n events. Used by LesHouchesEventHandler to make sure * that a file is scanned an even number of times in case the events * are not ramdomly distributed in the file. */ virtual void skip(long n); /** * Scan the file or stream to obtain information about cross section * weights and particles etc. This function should fill the * variables corresponding to the /HEPRUP/ common block. The * function returns the number of events scanned. */ virtual long scan(); /** * Open a file with events. Derived classes should overwrite it and * first calling it before reading in the run information into the * corresponding protected variables. */ virtual void open(); /** * Close the file from which events have been read. */ virtual void close(); /** * Read the next event from the file or stream into the * corresponding protected variables. Return false if there is no * more events or if this was not a LHF event file. */ virtual bool doReadEvent(); //@} /** * Return the name of the file from where to read events. */ string filename() const { return theFileName; } 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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; //@} /** @name Standard (and non-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(); /** * Return true if this object needs to be initialized before all * other objects because it needs to extract PDFs from the event file. */ virtual bool preInitialize() const; //@ protected: /** * The wrapper around the C FILE stream from which to read */ CFileLineReader cfile; protected: /** * The number of events in this file. */ long neve; /** * The current event number. */ long ieve; /** * If the file is a standard Les Houches formatted file (LHF) this * is its version number. If empty, this is not a Les Houches * formatted file */ string LHFVersion; /** * If LHF. All lines (since the last open() or readEvent()) outside * the header, init and event tags. */ string outsideBlock; /** * If LHF. All lines from the header block. */ string headerBlock; /** * If LHF. Additional comments found in the init block. */ string initComments; /** * If LHF. Map of attributes (name-value pairs) found in the init * tag. */ map<string,string> initAttributes; /** * If LHF. Additional comments found with the last read event. */ string eventComments; /** * If LHF. Map of attributes (name-value pairs) found in the last * event tag. */ map<string,string> eventAttributes; private: /** * The name of the file from where to read events. */ string theFileName; /** * Determines whether events in the LH file are or are not read * more than once in order to generate the requested number of * events. */ bool overSampling_; private: /** * Describe an abstract base class with persistent data. */ static ClassDescription<BasicLesHouchesFileReader> initBasicLesHouchesFileReader; /** * Private and non-existent assignment operator. */ BasicLesHouchesFileReader & operator=(const BasicLesHouchesFileReader &); public: /** @cond EXCEPTIONCLASSES */ /** Exception class used by BasicLesHouchesFileReader if reading the file * fails. */ class LesHouchesFileError: public Exception {}; /** @endcond */ }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the * base class of BasicLesHouchesFileReader. */ template <> struct BaseClassTrait<Herwig::BasicLesHouchesFileReader,1> { /** Typedef of the base class of BasicLesHouchesFileReader. */ typedef LesHouchesReader NthBase; }; /** * This template specialization informs ThePEG about the name of the * BasicLesHouchesFileReader class and the shared object where it is * defined. */ template <> struct ClassTraits<Herwig::BasicLesHouchesFileReader> : public ClassTraitsBase<Herwig::BasicLesHouchesFileReader> { /** * Return the class name. */ static string className() { return "Herwig::BasicLesHouchesFileReader"; } /** * Return the name of the shared library to be loaded to get access * to the BasicLesHouchesFileReader class and every other class it uses * (except the base class). */ static string library() { return "BasicLesHouchesFileReader.so"; } }; /** @endcond */ } #endif /* HERWIG_BasicLesHouchesFileReader_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AlpGen/BasicLesHouchesFileReader.fh�������������������������������������0000644�0001750�0001750�00000000617�11754474774�025017� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the BasicLesHouchesFileReader class. // #ifndef HERWIG_BasicLesHouchesFileReader_FH #define HERWIG_BasicLesHouchesFileReader_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class BasicLesHouchesFileReader; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::BasicLesHouchesFileReader,BasicLesHouchesFileReaderPtr); } #endif �����������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AlpGen/AlpGenHandler.cc�������������������������������������������������0000644�0001750�0001750�00000151403�11754474774�022524� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include "AlpGenHandler.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Shower/Base/PartnerFinder.h" #include "Herwig++/PDF/HwRemDecayer.h" #include <queue> #include "ThePEG/Utilities/Throw.h" #include "Herwig++/Shower/Base/KinematicsReconstructor.h" #include "fastjet/PseudoJet.hh" #include "fastjet/ClusterSequence.hh" #include "gsl/gsl_rng.h" #include "gsl/gsl_randist.h" using namespace Herwig; bool recordEntry(PPtr i,PPtr j) { return (i->number()<j->number()); } bool pTsortFunction(PPtr i,PPtr j) { return (i->momentum().perp2()>j->momentum().perp2()); } bool ETsortFunction(pair<Energy, Lorentz5Momentum> i,pair<Energy, Lorentz5Momentum> j) { return (i.first>j.first); } bool isMomLessThanEpsilon(Lorentz5Momentum p,Energy epsilon) { return (abs(p.x())<epsilon&&abs(p.y())<epsilon&& abs(p.z())<epsilon&&abs(p.t())<epsilon); } AlpGenHandler::AlpGenHandler() : ncy_(100),ncphi_(60),ihvy_(-999),nph_(-999),nh_(-999), etclusmean_(20*GeV),rclus_(0.4),etaclmax_(5.0),rclusfactor_(1.5), ihrd_(-999),njets_(-999),drjmin_(-999), highestMultiplicity_(false), ycmax_(5.4),ycmin_(-5.4),jetAlgorithm_(2),vetoIsTurnedOff_(false), inputIsNLO_(false),highestNLOMultiplicity_(false),etclusfixed_(true),epsetclus_(2.5*GeV) {} void AlpGenHandler::doinitrun() { ShowerHandler::doinitrun(); // et_ holds the ET deposited in the (ncy_ x ncphi_) calorimeter cells. et_.resize(ncy_); for(unsigned int ixx=0; ixx<et_.size(); ixx++) et_[ixx].resize(ncphi_); // jetIdx_ for a given calorimeter cell this holds the index of the jet // that the cell was clustered into. jetIdx_.resize(ncy_); for(unsigned int ixx=0; ixx<jetIdx_.size(); ixx++) jetIdx_[ixx].resize(ncphi_); } IBPtr AlpGenHandler::clone() const { return new_ptr(*this); } IBPtr AlpGenHandler::fullclone() const { return new_ptr(*this); } void AlpGenHandler::persistentOutput(PersistentOStream & os) const { os << alphaS_ << ncy_ << ncphi_ << ihvy_ << nph_ << nh_ << ounit(etclusmean_,GeV) << rclus_ << etaclmax_ << rclusfactor_ << ihrd_ << njets_ << drjmin_ << highestMultiplicity_ << ycmax_ << ycmin_ << jetAlgorithm_ << vetoIsTurnedOff_ << inputIsNLO_ << highestNLOMultiplicity_ << etclusfixed_ << cphcal_ << sphcal_ << cthcal_ << sthcal_ << ounit(epsetclus_,GeV); } void AlpGenHandler::persistentInput(PersistentIStream & is, int) { is >> alphaS_ >> ncy_ >> ncphi_ >> ihvy_ >> nph_ >> nh_ >> iunit(etclusmean_,GeV) >> rclus_ >> etaclmax_ >> rclusfactor_ >> ihrd_ >> njets_ >> drjmin_ >> highestMultiplicity_ >> ycmax_ >> ycmin_ >> jetAlgorithm_ >> vetoIsTurnedOff_ >> inputIsNLO_ >> highestNLOMultiplicity_ >> etclusfixed_ >> cphcal_ >> sphcal_ >> cthcal_ >> sthcal_ >> iunit(epsetclus_,GeV); } ClassDescription<AlpGenHandler> AlpGenHandler::initAlpGenHandler; // Definition of the static class description member. void AlpGenHandler::Init() { static ClassDocumentation<AlpGenHandler> documentation ("The AlpGenHandler class performs MEPS merging " "using the MLM procedure."); static Reference<AlpGenHandler,ShowerAlpha> interfaceShowerAlpha ("ShowerAlpha", "The object calculating the strong coupling constant", &AlpGenHandler::alphaS_, false, false, true, false, false); static Parameter<AlpGenHandler,unsigned int> interfaceNoCellsInRapidity ("NoCellsInRapidity", "The number of cells spanning the rapidity interval of " "the calorimeter", &AlpGenHandler::ncy_, 100, 1, 10000, false, false, Interface::limited); static Parameter<AlpGenHandler,unsigned int> interfaceNoCellsInPhi ("NoCellsInPhi", "The number of cells spanning the phi interval of " "the calorimeter", &AlpGenHandler::ncphi_, 60, 1, 10000, false, false, Interface::limited); static Parameter<AlpGenHandler,int> interfaceihvy ("ihvy", "heavy flavour in WQQ,ZQQ,2Q etc (4=c, 5=b, 6=t)", &AlpGenHandler::ihvy_, -999, -999, 7, false, false, Interface::limited); static Parameter<AlpGenHandler,int> interfacenph ("nph", "Number of photons in the AlpGen process", &AlpGenHandler::nph_, -999, -999, 7, false, false, Interface::limited); static Parameter<AlpGenHandler,int> interfacenh ("nh", "Number of higgses in the AlpGen process", &AlpGenHandler::nph_, -999, -999, 7, false, false, Interface::limited); static Parameter<AlpGenHandler,Energy> interfaceETClus ("ETClus", "The ET threshold defining a jet in the merging procedure", &AlpGenHandler::etclusmean_, GeV, 20*GeV, 0*GeV, 14000*GeV, false, false, Interface::limited); static Parameter<AlpGenHandler,double> interfaceRClus ("RClus", "The cone size used to define a jet in the merging procedure", &AlpGenHandler::rclus_, 0.4, 0.0, 4.0, false, false, Interface::limited); static Parameter<AlpGenHandler,double> interfaceEtaClusMax ("EtaClusMax", "The maximum |eta| used to define a jet in the merging procedure", &AlpGenHandler::etaclmax_, 5.0, 0.0, 15.0, false, false, Interface::limited); static Parameter<AlpGenHandler,double> interfaceRClusFactor ("RClusFactor", "The prefactor for RClus used to define the jet-parton matching " "distance", &AlpGenHandler::rclusfactor_, 1.5, 0.0, 4.0, false, false, Interface::limited); static Parameter<AlpGenHandler,int> interfaceihrd ("ihrd", "The AlpGen hard process code", &AlpGenHandler::ihrd_, -999, 0, 10000, false, false, Interface::limited); static Parameter<AlpGenHandler,int> interfacenjets ("njets", "The number of light jets in the AlpGen process (i.e. the " "extra ones)", &AlpGenHandler::njets_, -999, 0, 10000, false, false, Interface::limited); static Parameter<AlpGenHandler,double> interfacedrjmin ("drjmin", "Mimimum parton-parton R-sep used for generation.", &AlpGenHandler::drjmin_, 0.7, 0.0, 4.0, false, false, Interface::limited); static Parameter<AlpGenHandler,bool> interfacehighestMultiplicity ("highestMultiplicity", "If true it indicates that this is the highest multiplicity input " "ME-level configuration to be processed.", &AlpGenHandler::highestMultiplicity_, 0, 0, 1, false, false, Interface::limited); static Parameter<AlpGenHandler,bool> interfacehighestNLOMultiplicity ("highestNLOMultiplicity", "If true it indicates that this is the highest NLO multiplicity input " "ME-level configuration to be processed.", &AlpGenHandler::highestNLOMultiplicity_, 0, 0, 1, false, false, Interface::limited); static Parameter<AlpGenHandler,bool> interfaceETClusFixed ("ETClusFixed", "If false, indicates that the jet merging scale, etclus_ is allowed to vary" "according to epsetclus_", &AlpGenHandler::etclusfixed_, 1, 0, 1, false, false, Interface::limited); static Parameter<AlpGenHandler,Energy> interfaceEpsilonETClus ("EpsilonETClus", "The ET threshold defining a jet in the merging procedure", &AlpGenHandler::epsetclus_, GeV, 2.5*GeV, 0*GeV, 100.0*GeV, false, false, Interface::limited); static Switch<AlpGenHandler,int> interfaceJetAlgorithm ("JetAlgorithm", "Determines the jet algorithm for finding jets in parton-jet " "matching in the MLM procedure.", &AlpGenHandler::jetAlgorithm_, 2, false, false); static SwitchOption AntiKt (interfaceJetAlgorithm, "AntiKt", "The anti-kt jet algorithm.", -1); static SwitchOption CambridgeAachen (interfaceJetAlgorithm, "CambridgeAachen", "The Cambridge-Aachen jet algorithm.", 0); static SwitchOption Kt (interfaceJetAlgorithm, "Kt", "The Kt jet algorithm.", 1); static SwitchOption GetJet (interfaceJetAlgorithm, "GetJet", "Calorimeter-based GetJet algorithm (default).", 2); static Switch<AlpGenHandler,bool> interfaceVetoIsTurnedOff ("VetoIsTurnedOff", "Allows the vetoing mechanism to be switched off.", &AlpGenHandler::vetoIsTurnedOff_, false, false, false); static SwitchOption VetoingIsOn (interfaceVetoIsTurnedOff, "VetoingIsOn", "The MLM merging veto mechanism is switched ON.", false); static SwitchOption VetoingIsOff (interfaceVetoIsTurnedOff, "VetoingIsOff", "The MLM merging veto mechanism is switched OFF.", true); static Switch<AlpGenHandler,bool> interfaceInputIsNLO ("InputIsNLO", "Signals whether the input LH file is tree-level accurate " "or contains NLO (Powheg) events.", &AlpGenHandler::inputIsNLO_, false, false, false); static SwitchOption InputIsNotNLO (interfaceInputIsNLO, "InputIsNotNLO", "The input LH events have tree-level accuracy.", false); static SwitchOption InputIsNLO (interfaceInputIsNLO, "InputIsNLO", "The input LH events have NLO accuracy.", true); } void AlpGenHandler::dofinish() { ShowerHandler::dofinish(); } void AlpGenHandler::doinit() { //print error if HardProcID is not set in input file if(ihrd_ == -999) { cout << "Error: AlpGenHandler:ihrd not set!" << endl; exit(1); } ShowerHandler::doinit(); // Compute calorimeter edges in rapidity for GetJet algorithm. ycmax_=etaclmax_+rclus_; ycmin_=-ycmax_; // Initialise calorimeter. calini_m(); } // Throws a veto according to MLM strategy ... when we finish writing it. bool AlpGenHandler::showerHardProcessVeto() { if(vetoIsTurnedOff_) return false; // Skip veto for processes in which merging is not implemented: if(ihrd_==7||ihrd_==8||ihrd_==13) { ostringstream wstring; wstring << "AlpGenHandler::showerHardProcessVeto() - warning." << "MLM merging not implemented for AlpGen " << "processes 4Q (ihrd=7), QQh (ihrd=8), " << "(single) top (ihrd=13) \n"; generator()->logWarning( Exception(wstring.str(), Exception::warning) ); return false; } // Fill preshowerISPs_ pair and preshowerFSPs_ particle pointer vector. getPreshowerParticles(); // Fill showeredISHs_, showeredISPs and showeredRems pairs, as well as // showeredFSPs_ particle pointer vector. getShoweredParticles(); // Turn on some screen output debugging: 0 = none ---> 5 = very verbose. doSanityChecks(0); // Dimensions of each calorimter cell in y and phi. dely_ = (ycmax_-ycmin_)/double(ncy_); delphi_ = 2*M_PI/double(ncphi_); // Fill partonsToMatch_ with only those pre-shower partons intended to // used in jet-parton matching and fill particlesToCluster_ using only // those final state particles (post-shower) which are supposed to go // in the jet clustering used to do merging. partonsToMatch_ = preshowerFSPs_; particlesToCluster_ = showeredFSPs_ ; // <--- TO DO: add remnants in here ??? // Filter out all but the 'extra' light-parton progenitors and their // associated final state particles. caldel_m(); double prob(1); //if etclusfixed_ then set the etclus_ to the fixed chosen value if(etclusfixed_) { etclus_ = etclusmean_; } else { //else, if we wish to vary etclus_, we use the probability distribution //choose a probability between 0 and 1 prob = rnd(); etclus_ = etclusran_(prob); } if(jetAlgorithm_==2) { // If using GetJet fill the calorimeter cells now from particlesToCluster_ calsim_m(); // Make jets from the calorimeter blobs. getjet_m(rclus_,etclus_,etaclmax_); } else { // Cluster particlesToCluster_ into jets with FastJet. getFastJets(rclus_,etclus_,etaclmax_); } // If there are less jets than partons then parton-jet matching is // bound to fail: reject the event already. Also, if the input is // an NLO event file it will 99.5% of the time contain a number of // light partons in the F.S. equal to that in the real emission // process in the NLO calculation, moreover, it has already // effectively merged njets_-1 and njets jet events. So in that // case we do not reject events on the grounds they have jet // multiplicity less than partonsToMatch_.size() but rather less // jets than partonsToMatch.size()-1; such events are better // described by the lower-by-one-unit (partonsToMatch_.size()-1) // of multiplicity NLO event file, or the lower-by-two-units // (partonsToMatch_.size()-2) of multiplicity LO event file. // If it is not jet production apply rejection criterion as above. if(ihrd_!=9) { if(!inputIsNLO_) { if(pjet_.size() < partonsToMatch_.size()) return true; } else { if(pjet_.size() < partonsToMatch_.size()-1) return true; } // Otherwise, in the case of jet production allow the lowest // contributing multiplicity process (just at NLO), namely, // dijet production, to give rise to 1-jet and even 0-jet // events, since these can contribute to, for example, the // inclusive jet cross section i.e. in this case the rejection // is only applied in the case of the next-to-lowest multiplicity // processes (>2 parton events at LO and >3 parton events at NLO). } else { if(!inputIsNLO_) { // KH - March 5th // Removed the following line giving special treatment // also to the LO events, to maintain consistency with // the fortran algorithm, at least for now. So now jet // production at LO is being treated the same as all // other processes. // if(partonsToMatch_.size()==2 && pjet_.size()<2) return false; if(pjet_.size() < partonsToMatch_.size()) return true; } else { if(partonsToMatch_.size()<=3 && pjet_.size()<2) return false; if(pjet_.size() < partonsToMatch_.size()-1) return true; } } // Sort partonsToMatch_ from high to low pT. sort(partonsToMatch_.begin(),partonsToMatch_.end(),pTsortFunction); // Match light progenitors to jets. vector<int> jetToPartonMap(pjet_.size(),-999); Energy etmin(777e100*GeV); // If the input is NLO events then don't do any jet-parton matching! if(!inputIsNLO_) { // For each parton, starting with the hardest one ... for(unsigned int ixx=0; ixx<partonsToMatch_.size(); ixx++) { // ... loop over all jets not already matched. double DRmin(777e100); int jetIndexForDRmin(-999); for(unsigned int jxx=0; jxx<pjet_.size(); jxx++) { // ... and tag closest of the remaining ones double DRpartonJet(partonJetDeltaR(partonsToMatch_[ixx],pjet_[jxx])); if(jetToPartonMap[jxx]<0&&DRpartonJet<DRmin) { DRmin=DRpartonJet; jetIndexForDRmin=jxx; } } // If the parton-jet distance is less than the matching // distance, the parton and jet match. if(DRmin<rclus_*rclusfactor_&&jetIndexForDRmin>=0) { jetToPartonMap[jetIndexForDRmin]=ixx; if(ixx==0||etjet_[jetIndexForDRmin]<etmin) etmin=etjet_[jetIndexForDRmin]; // Otherwise this parton is not matched so veto the event. } else return true; } } // Veto events with larger jet multiplicity from exclusive sample. if(!highestMultiplicity_&&pjet_.size()>partonsToMatch_.size() && !inputIsNLO_) return true; if(inputIsNLO_) { if(!highestNLOMultiplicity_) { if(pjet_.size()>partonsToMatch_.size()-1) return true; } else { if(!highestMultiplicity_&&pjet_.size()>partonsToMatch_.size()) return true; } } // Veto events where matched jets are softer than non-matched ones, // in the inclusive (highestMultiplicity_ = true) mode, unless we // are dealing with NLO input events. if(highestMultiplicity_ && !inputIsNLO_ ) { for(unsigned int ixx=0; ixx<pjet_.size(); ixx++) if(jetToPartonMap[ixx]<0&&etmin<etjet_[ixx]) return true; } // **************************************************************** // // * Now look to the non-light partons for heavy quark processes. * // // **************************************************************** // if(ihrd_<=2||ihrd_==6||ihrd_==10||ihrd_==15||ihrd_==16) { // Extract heavy quark progenitors and the radiation they // produce and put it in the calorimeter. caldel_hvq(); if(jetAlgorithm_==2) { // If using GetJet fill the calorimeter cells now from particlesToCluster_ calsim_m(); // Make jets from the calorimeter blobs. getjet_m(rclus_,etclus_,etaclmax_); } else { // Cluster particlesToCluster_ into jets with FastJet. getFastJets(rclus_,etclus_,etaclmax_); } // If the radiation from the heavy quarks does not give rise // to any jets we accept event. if(pjet_.size() == 0) return false; // If extra jets emerge from the jet clustering we only // accept events where the jets formed by radiation from // b and c quarks lies within drjmin_ of the heavy quark // progenitor. int nmjet(pjet_.size()); for(unsigned int ixx=0; ixx<pjet_.size(); ixx++) { for(unsigned int jxx=0; jxx<partonsToMatch_.size(); jxx++) { if(!(abs(partonsToMatch_[jxx]->id())==4||abs(partonsToMatch_[jxx]->id())==5)) continue; if(partonJetDeltaR(partonsToMatch_[jxx],pjet_[ixx])<drjmin_) { nmjet--; // Decrease the number of unmatched jets. etjet_[ixx]=0*GeV; // Set jet ET to zero to indicate it is 'matched'. } } } // If every jet matched to _at_least_one_ progenitor accept the event. if(nmjet<=0) return false; else { // If unmatched jets remain, reject the event if highestMultiplicity_!=1 if(!highestMultiplicity_) return true; else { // If unmatched jets remain and highestMultiplicity is true then check // that these are softer than all the matched ones (from the light-parton // matching round). Energy etmax(0.*GeV); for(unsigned int ixx=0; ixx<pjet_.size(); ixx++) etmax=max(etjet_[ixx],etmax); if(etmax>etmin) return true; } } } // Otherwise we accept the event ... return false; } /* Function that returns the R distance between a particle and a jet. */ double AlpGenHandler::partonJetDeltaR(ThePEG::tPPtr partonptr, LorentzMomentum jetmom) { LorentzMomentum partonmom(partonptr->momentum()); // Calculate DY, DPhi and then DR double DY(partonmom.eta()-jetmom.eta()); double DPhi(partonmom.phi()-jetmom.phi()); if(DPhi>M_PI) DPhi=2*M_PI-DPhi; double DR(sqrt(sqr(DY)+sqr(DPhi))); return DR; } // Initialize calorimeter for calsim_m and getjet_m. Note that // because initialization is separte calsim_m can be called more // than once to simulate pileup of several events. void AlpGenHandler::calini_m() { // Making sure arrays are clear before filling; cphcal_.clear(); sphcal_.clear(); cthcal_.clear(); sthcal_.clear(); // Fill array holding phi values of calorimeter cell centres. double deltaPhi(2*M_PI/ncphi_); for(unsigned int iphi=1; iphi<=ncphi_; iphi++) { double phi(deltaPhi*(iphi-0.5)); // Goes phi~=0 to phi~=2*pi (iphi=0--->ncphi). cphcal_.push_back(cos(phi)); // ==> goes from +1 ---> +1 (iphi=0--->ncphi). sphcal_.push_back(sin(phi)); // ==> goes 0 -> 1 -> 0 -> -1 -> 0 (iphi=0--->ncphi). } // Fill array holding theta values of calorimeter cell centres in Y. double deltaY((ycmax_-ycmin_)/double(ncy_)); for(unsigned int iy=1; iy<=ncy_; iy++) { double Y(deltaY*(iy-0.5)+ycmin_); double th(2*atan(exp(-Y))); // Goes bwds th~=pi to fwds th~=0 (iy=0--->ncy). cthcal_.push_back(cos(th)); // ==> goes from -1 ---> +1 (iy=0--->ncy). sthcal_.push_back(sin(th)); // ==> goes from 0 ---> +1 ---> 0 (iy=0--->ncy). } return; } // Get FastJets void AlpGenHandler::getFastJets(double rjet, Energy ejcut, double etajcut) { vector<fastjet::PseudoJet> particlesToCluster; for(unsigned int ipar=0; ipar<particlesToCluster_.size(); ipar++) { double y(particlesToCluster_[ipar]->momentum().eta()); if(y>=ycmin_&&y<=ycmax_) { int absId(abs(particlesToCluster_[ipar]->id())); // If it's not a lepton / top / photon it may go in the jet finder. if(!(absId>=11&&absId<=16) && absId!=6 && absId!=22) { // input particles into fastjet pseudojet fastjet::PseudoJet p(particlesToCluster_[ipar]->momentum().x()/GeV, particlesToCluster_[ipar]->momentum().y()/GeV, particlesToCluster_[ipar]->momentum().z()/GeV, particlesToCluster_[ipar]->momentum().e()/GeV); p.set_user_index(ipar); particlesToCluster.push_back(p); } } } fastjet::RecombinationScheme recombinationScheme = fastjet::E_scheme; fastjet::Strategy strategy = fastjet::Best; double R(rjet); fastjet::JetDefinition theJetDefinition; switch (jetAlgorithm_) { case -1: theJetDefinition=fastjet::JetDefinition(fastjet::antikt_algorithm, R, recombinationScheme, strategy); break; case 0: theJetDefinition=fastjet::JetDefinition(fastjet::cambridge_algorithm, R, recombinationScheme, strategy); break; case 1: theJetDefinition=fastjet::JetDefinition(fastjet::kt_algorithm, R, recombinationScheme, strategy); break; default: theJetDefinition=fastjet::JetDefinition(fastjet::cambridge_algorithm, R, recombinationScheme, strategy); break; } fastjet::ClusterSequence fastjetEvent(particlesToCluster,theJetDefinition); vector<fastjet::PseudoJet> inclusiveJets = fastjetEvent.inclusive_jets(); inclusiveJets = fastjet::sorted_by_pt(inclusiveJets); // Fill the array of jet momenta for the rest of the veto procedure. pjet_.clear(); pjet_.resize(inclusiveJets.size()); etjet_.clear(); etjet_.resize(inclusiveJets.size()); for(unsigned int ffj=0; ffj<pjet_.size();ffj++) { pjet_[ffj] = Lorentz5Momentum(inclusiveJets[ffj].px()*GeV, inclusiveJets[ffj].py()*GeV, inclusiveJets[ffj].pz()*GeV, inclusiveJets[ffj].e()*GeV); pjet_[ffj].rescaleMass(); etjet_[ffj] = pjet_[ffj].et(); } // Throw the jet away if it's outside required eta region or // has transverse energy below ejcut. for(unsigned int fj=0; fj<pjet_.size(); fj++) if(etjet_[fj]<ejcut||fabs(pjet_[fj].eta())>etajcut) { pjet_.erase(pjet_.begin()+fj); etjet_.erase(etjet_.begin()+fj); fj--; } // Sort jets from high to low ET. vector<pair<Energy, Lorentz5Momentum> > etjet_pjet; for(unsigned int ixx=0; ixx<etjet_.size(); ixx++) etjet_pjet.push_back(make_pair(etjet_[ixx],pjet_[ixx])); sort(etjet_pjet.begin(),etjet_pjet.end(),ETsortFunction); for(unsigned int ixx=0; ixx<etjet_.size(); ixx++) { etjet_[ixx]=etjet_pjet[ixx].first; pjet_[ixx]=etjet_pjet[ixx].second; } return; } // Simple calorimeter simulation - assume uniform Y and phi bins. void AlpGenHandler::calsim_m() { // Reset transverse energies of all calorimter cells ready for new fill. for(unsigned int ixx=0; ixx<et_.size(); ixx++) for(unsigned int iyy=0; iyy<et_[ixx].size(); iyy++) et_[ixx][iyy]=0*GeV; // Assign ET to each calorimeter cell (mostly 0's). for(unsigned int ipar=0; ipar<particlesToCluster_.size(); ipar++) { double y(particlesToCluster_[ipar]->momentum().eta()); if(y>=ycmin_&&y<=ycmax_) { int absId(abs(particlesToCluster_[ipar]->id())); // If it's not a lepton / top / photon it goes in the calorimeter. if(!(absId>=11&&absId<=16) && absId!=6 && absId!=22) { double phi(atan2(particlesToCluster_[ipar]->momentum().y()/GeV, particlesToCluster_[ipar]->momentum().x()/GeV)); if(phi<0) phi+=2*M_PI; unsigned int iy(int((y-ycmin_)/dely_)); unsigned int iphi(int(phi/delphi_)); et_[iy][iphi]+=particlesToCluster_[ipar]->momentum().e()*sthcal_[iy]; } } } return; } // Find highest remaining cell > etstop and sum surrounding cells // with -- delta(y)^2+delta(phi)^2 < Rjet^2 , ET>eccut. Keep sets // with ET>ejcut and abs(eta)<etacut. void AlpGenHandler::getjet_m(double rjet, Energy ejcut, double etajcut) { // Minimum ET the calorimeter can "see". Energy eccut(0.1*GeV); // So long as the cell remaining with the highest ET has // ET < etstop we try to cluster the surrounding cells into // it to potentially form a jet. Energy etstop(1.5*GeV); // Reset the vector holding the jet-index each calo cell // was clustered into. for(unsigned int iy=0; iy<ncy_; iy++) for(unsigned int iphi=0; iphi<ncphi_; iphi++) jetIdx_[iy][iphi]=-777; // Reset the vector that will hold the jet momenta. pjet_.clear(); // # cells spanned by cone radius in phi dir., _rounded_down_. unsigned int nphi1(rjet/delphi_); // # cells spanned by cone radius in eta dir., _rounded_down_. unsigned int ny1(rjet/dely_); // Vector to hold the "ET" of each jet, where here ET really means // the scalar sum of ETs in each calo cell clustered into the jet. // Note that this is _not_ the same as the ET you would compute from // the final momentum worked out for each jet. etjet_.clear(); // The ET of the highest ET cell found. Energy etmax(777e100*GeV); // Counter for number of highest ET calo cells found. unsigned int ipass(0); // Start finding jets. while(etmax>=etstop) { // Find the cell with the highest ET from // those not already assigned to a jet. etmax=0*GeV; int iymx(0), iphimx(0); for(unsigned int iphi=0; iphi<ncphi_; iphi++) for(unsigned int iy=0; iy<ncy_; iy++) if(et_[iy][iphi]>etmax&&jetIdx_[iy][iphi]<0) { etmax = et_[iy][iphi]; iymx = iy; iphimx = iphi; } // If the remaining cell with the highest ET has ET < etstop, stop. if(etmax<etstop) break; // You cannot have more cells with the highest ET // so far than you have cells in the calorimeter. ipass++; if(ipass>(ncy_*ncphi_)) { cout << "AlpGenHandler::getjet_m() - Fatal error." << endl; cout << "We found " << ipass << " calo cells with the highest ET so" << "far\nbut the calorimeter only has " << ncy_*ncphi_ << " " << "cells in it!" << endl; exit(10); } // Add a jet vector (may get deleted if jet fails ET / eta cuts). etjet_.push_back(0*GeV); pjet_.push_back(Lorentz5Momentum(0.*GeV,0.*GeV,0.*GeV,0.*GeV,0.*GeV)); // Loop over all calo cells in range iphimx +/- nphi1 (inclusive) // wrapping round in azimuth if required. for(unsigned int iphi1=0; iphi1<=2*nphi1; iphi1++) { int iphix(iphimx-nphi1+iphi1); if(iphix<0) iphix += ncphi_; if(iphix>=int(ncphi_)) iphix -= ncphi_; // Loop over all calo cells in range iymx +/- ny1 (inclusive). for(unsigned int iy1=0; iy1<=2*ny1; iy1++) { int iyx(iymx-ny1+iy1); // If the cell is outside the calorimeter OR if it was already // associated to a jet then skip to the next loop. if(iyx>=0&&iyx<int(ncy_)&&jetIdx_[iyx][iphix]<0) { // N.B. iyx-iymx = iy1-ny1 and iphix-iphimx = iphi1-nphi1 // hence the following is the distance in R between the // centre of the cell we are looking at and the one // with the highest ET. double r2(sqr( dely_*(double(iy1) -double(ny1) )) +sqr(delphi_*(double(iphi1)-double(nphi1)))); if(r2<sqr(rjet)&&et_[iyx][iphix]>=eccut) { Energy ECell(et_[iyx][iphix]/sthcal_[iyx]); pjet_.back()+=LorentzMomentum(ECell*sthcal_[iyx]*cphcal_[iphix], // px ECell*sthcal_[iyx]*sphcal_[iphix], // py ECell*cthcal_[iyx],ECell); // pz, E. // N.B. This is the same reln as in ThePEG between phi and x,y. etjet_.back()+=et_[iyx][iphix]; jetIdx_[iyx][iphix] = pjet_.size()-1; // Identify cell with this jet. } } } } // Compute the current jet's mass. pjet_.back().rescaleMass(); // Throw the jet away if it's ET is less than ejcut. if(etjet_.back()<ejcut||fabs(pjet_.back().eta())>etajcut) { pjet_.pop_back(); etjet_.pop_back(); } } // Sort jets from high to low ET. vector<pair<Energy, Lorentz5Momentum> > etjet_pjet; for(unsigned int ixx=0; ixx<etjet_.size(); ixx++) etjet_pjet.push_back(make_pair(etjet_[ixx],pjet_[ixx])); sort(etjet_pjet.begin(),etjet_pjet.end(),ETsortFunction); for(unsigned int ixx=0; ixx<etjet_.size(); ixx++) { etjet_[ixx]=etjet_pjet[ixx].first; pjet_[ixx]=etjet_pjet[ixx].second; } return; } // Deletes particles from partonsToMatch_ and particlesToCluster_ // vectors so that these contain only the partons to match to the // jets and the particles used to build jets respectively. By and // large the candidates for deletion are: vector bosons and their // decay products, Higgs bosons, photons as well as _primary_, i.e. // present in the lowest multiplicity process, heavy quarks and // any related decay products. void AlpGenHandler::getDescendents(PPtr theParticle) { ParticleVector theChildren(theParticle->children()); for (unsigned int ixx=0; ixx<theChildren.size(); ixx++) if(theChildren[ixx]->children().size()==0) tmpList_.push_back(theChildren[ixx]); else getDescendents(theChildren[ixx]); return; } void AlpGenHandler::caldel_m() { preshowerFSPsToDelete_.clear(); showeredFSPsToDelete_.clear(); for(unsigned int ixx=0; ixx<preshowerFSPs_.size(); ixx++) { tmpList_.clear(); if(ihrd_<=2) { /* wqq... , zqq... */ /* Exclude the heavy quarks and any children they may have produced as well as the v.boson and any children it may have produced from the jet parton matching. */ if(abs(preshowerFSPs_[ixx]->parents()[0]->id())==23|| abs(preshowerFSPs_[ixx]->parents()[0]->id())==24) { preshowerFSPsToDelete_.push_back(preshowerFSPs_[ixx]); getDescendents(preshowerFSPs_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); } if(abs(preshowerFSPs_[ixx]->id())==ihvy_&&ixx<2) { preshowerFSPsToDelete_.push_back(preshowerFSPs_[ixx]); getDescendents(preshowerFSPs_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); } if(ixx==preshowerFSPs_.size()-1&&preshowerFSPsToDelete_.size()!=4) { throw Exception() << "AlpGenHandler::caldel_m() - ERROR!\n" << "wqq / zqq process should have 4 particles to omit from" << "jet-parton matching for ihvy=" << ihvy_ << "." << Exception::eventerror; } } else if(ihrd_<=4) { /* zjet... */ /* Exclude the v.boson and any children it may have produced from the jet parton matching. */ if(abs(preshowerFSPs_[ixx]->parents()[0]->id())==23|| abs(preshowerFSPs_[ixx]->parents()[0]->id())==24) { preshowerFSPsToDelete_.push_back(preshowerFSPs_[ixx]); getDescendents(preshowerFSPs_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); } if(ixx==preshowerFSPs_.size()-1&&preshowerFSPsToDelete_.size()!=2) { throw Exception() << "AlpGenHandler::caldel_m() - ERROR!\n" << "zjet process should have 2 particles to omit from" << "jet-parton matching." << Exception::eventerror; } } else if(ihrd_==5) { /* vbjet... */ /* Exclude the v.bosons and any children they may have produced from the jet parton matching. */ if(abs(preshowerFSPs_[ixx]->parents()[0]->id())==23|| abs(preshowerFSPs_[ixx]->parents()[0]->id())==24|| abs(preshowerFSPs_[ixx]->id())==22|| abs(preshowerFSPs_[ixx]->id())==25) { preshowerFSPsToDelete_.push_back(preshowerFSPs_[ixx]); getDescendents(preshowerFSPs_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); } } else if(ihrd_==6) { /* 2Q... */ /* Exclude the heavy quarks and any children they may have produced from the jet parton matching. */ if(ihvy_==6) { if(abs(preshowerFSPs_[ixx]->parents()[0]->id())==6|| abs(preshowerFSPs_[ixx]->parents()[0]->id())==24) { preshowerFSPsToDelete_.push_back(preshowerFSPs_[ixx]); } if(abs(preshowerFSPs_[ixx]->parents()[0]->id())==6) { getDescendents(preshowerFSPs_[ixx]->parents()[0]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); } if(ixx==preshowerFSPs_.size()-1&&preshowerFSPsToDelete_.size()!=6) { throw Exception() << "AlpGenHandler::caldel_m() - ERROR!\n" << "2Q process should have 6 particles to omit from" << "jet-parton matching for ihvy=" << ihvy_ << "." << Exception::eventerror; } } else { if(abs(preshowerFSPs_[ixx]->id())==ihvy_&&ixx<2) { preshowerFSPsToDelete_.push_back(preshowerFSPs_[ixx]); getDescendents(preshowerFSPs_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); } if(ixx==preshowerFSPs_.size()-1&&preshowerFSPsToDelete_.size()!=2) { throw Exception() << "AlpGenHandler::caldel_m() - ERROR!\n" << "2Q process should have 2 particles to omit from" << "jet-parton matching for ihvy=" << ihvy_ << "." << Exception::eventerror; } } } else if(ihrd_==7) { /* 4Q... */ /* There are no light jets for this process, so nothing to match. */ } else if(ihrd_==9) { /* Njet... */ } else if(ihrd_==10) { /* wcjet... */ /* Exclude the charm quark and any children it may have produced as well as the v.boson and any children it may have produced from the jet parton matching. */ if((abs(preshowerFSPs_[ixx]->id())==4&&ixx<1)|| abs(preshowerFSPs_[ixx]->parents()[0]->id())==24) { preshowerFSPsToDelete_.push_back(preshowerFSPs_[ixx]); getDescendents(preshowerFSPs_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); } if(ixx==preshowerFSPs_.size()-1&&preshowerFSPsToDelete_.size()!=3) { throw Exception() << "AlpGenHandler::caldel_m() - ERROR!\n" << "wcjet process should have 3 particles to omit from" << "jet-parton matching." << Exception::eventerror; } } else if(ihrd_==11) { /* phjet... */ /* Exclude the hard photons from the jet parton matching. */ if(abs(preshowerFSPs_[ixx]->id())==22) { preshowerFSPsToDelete_.push_back(preshowerFSPs_[ixx]); getDescendents(preshowerFSPs_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); } unsigned int tmpUnsignedInt(nph_); if(ixx==preshowerFSPs_.size()-1&&preshowerFSPsToDelete_.size()!=tmpUnsignedInt) { throw Exception() << "AlpGenHandler::caldel_m() - ERROR!\n" << "phjet process should have " << nph_ << " particles to omit from" << "jet-parton matching." << Exception::eventerror; } } else if(ihrd_==12) { /* hjet... */ /* Exclude the higgs and any children it may have produced from the jet parton matching. */ if(abs(preshowerFSPs_[ixx]->id())==25) { preshowerFSPsToDelete_.push_back(preshowerFSPs_[ixx]); getDescendents(preshowerFSPs_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); } if(ixx==preshowerFSPs_.size()-1&&preshowerFSPsToDelete_.size()!=1) { throw Exception() << "AlpGenHandler::caldel_m() - ERROR!\n" << "hjet process should have 1 particle to omit from" << "jet-parton matching." << Exception::eventerror; } } else if(ihrd_==14) { /* wphjet... */ /* Exclude the v.boson and any children it may have produced from the jet parton matching. */ // AND WHAT ABOUT THE PHOTON? <--- CHECK THIS WITH AlpGen GUYs. if(abs(preshowerFSPs_[ixx]->id())==22|| abs(preshowerFSPs_[ixx]->parents()[0]->id())==24) { preshowerFSPsToDelete_.push_back(preshowerFSPs_[ixx]); getDescendents(preshowerFSPs_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); } unsigned int tmpUnsignedInt(2+nph_); if(ixx==preshowerFSPs_.size()-1&&preshowerFSPsToDelete_.size()!=tmpUnsignedInt) { throw Exception() << "AlpGenHandler::caldel_m() - ERROR!\n" << "wphjet process should have " << 2+nph_ << " particles to omit from" << "jet-parton matching." << Exception::eventerror; } } else if(ihrd_==15) { /* wphqq... <--- N.B. if q = top, it is not decayed. */ /* Exclude the heavy quarks and any children they may have produced as well as the v.boson and any children it may have produced from the jet parton matching. */ // AND WHAT ABOUT THE PHOTON? <--- CHECK THIS WITH AlpGen GUYs. if(abs(preshowerFSPs_[ixx]->id())==22|| (abs(preshowerFSPs_[ixx]->id())==ihvy_&&ixx==(preshowerFSPs_.size()-(2+nph_+1)))|| (abs(preshowerFSPs_[ixx]->id())==ihvy_&&ixx==(preshowerFSPs_.size()-(2+nph_+2)))|| abs(preshowerFSPs_[ixx]->parents()[0]->id())==24) { preshowerFSPsToDelete_.push_back(preshowerFSPs_[ixx]); getDescendents(preshowerFSPs_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); } unsigned int tmpUnsignedInt(4+nph_); if(ixx==preshowerFSPs_.size()-1&&preshowerFSPsToDelete_.size()!=tmpUnsignedInt) { throw Exception() << "AlpGenHandler::caldel_m() - ERROR!\n" << "wphjet process should have " << 4+nph_ << " particles to omit from" << "jet-parton matching." << Exception::eventerror; } } else if(ihrd_==16) { /* 2Qph... <--- if Q is a top it will decay. */ /* Exclude the hard photons and any children they may have produced from the jet parton matching as well as the heavy quarks and any children it may have produced. */ // AND WHAT ABOUT THE PHOTON? if(ihvy_==6) { if(abs(preshowerFSPs_[ixx]->id())==22|| abs(preshowerFSPs_[ixx]->parents()[0]->id())==6|| abs(preshowerFSPs_[ixx]->parents()[0]->id())==24) { preshowerFSPsToDelete_.push_back(preshowerFSPs_[ixx]); getDescendents(preshowerFSPs_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); } unsigned int tmpUnsignedInt(6+nph_); if(ixx==preshowerFSPs_.size()-1&&preshowerFSPsToDelete_.size()!=tmpUnsignedInt) { throw Exception() << "AlpGenHandler::caldel_m() - ERROR!\n" << "wphjet process should have " << 6+nph_ << " particles to omit from" << "jet-parton matching for ihvy=" << ihvy_ << "." << Exception::eventerror; } } else { if(abs(preshowerFSPs_[ixx]->id())==22|| (abs(preshowerFSPs_[ixx]->id())==ihvy_&&ixx<2)) { preshowerFSPsToDelete_.push_back(preshowerFSPs_[ixx]); getDescendents(preshowerFSPs_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); } unsigned int tmpUnsignedInt(2+nph_); if(ixx==preshowerFSPs_.size()-1&&preshowerFSPsToDelete_.size()!=tmpUnsignedInt) { throw Exception() << "AlpGenHandler::caldel_m() - ERROR!\n" << "wphjet process should have " << 2+nph_ << " particles to omit from" << "jet-parton matching for ihvy=" << ihvy_ << "." << Exception::eventerror; } } } } for(unsigned int ixx=0; ixx<preshowerFSPsToDelete_.size(); ixx++) { for(unsigned int jxx=0; jxx<partonsToMatch_.size(); jxx++) { if(preshowerFSPsToDelete_[ixx]==partonsToMatch_[jxx]) { partonsToMatch_.erase(partonsToMatch_.begin()+jxx); break; } } } for(unsigned int ixx=0; ixx<showeredFSPsToDelete_.size(); ixx++) { for(unsigned int jxx=0; jxx<particlesToCluster_.size(); jxx++) { if(showeredFSPsToDelete_[ixx]==particlesToCluster_[jxx]) { particlesToCluster_.erase(particlesToCluster_.begin()+jxx); break; } } } // Sanity check! if(partonsToMatch_.size()>particlesToCluster_.size()) { throw Exception() << "AlpGenHandler::caldel_m() - ERROR!\n" << "No. of ME level partons to be matched to jets = " << partonsToMatch_.size() << "\n" << "No. of showered particles to build jets from = " << particlesToCluster_.size() << "\n" << "There should be at least as many partons to\n" << "cluster as there are partons to match to.\n" << Exception::eventerror; } // Acid test. unsigned int tmpUnsignedInt(njets_); if(!inputIsNLO_&&partonsToMatch_.size()!=tmpUnsignedInt) { for(unsigned int ixx=0; ixx<partonsToMatch_.size(); ixx++) { if(abs(partonsToMatch_[ixx]->id())>=6&& abs(partonsToMatch_[ixx]->id())!=21) throw Exception() << "AlpGenHandler::caldel_m() - ERROR!\n" << "Found a parton to match to which is not a quark or gluon!" << *partonsToMatch_[ixx] << "\n" << Exception::eventerror; } throw Exception() << "AlpGenHandler::caldel_m() - ERROR!\n" << "No. of ME level partons to be matched to jets = " << partonsToMatch_.size() << "\n" << "No. of light jets (njets) in AlpGen process = " << njets_ << "\n" << "These should be equal." << "\n" << Exception::eventerror; } return; } // This looks for all descendents of a top up to but not including // the W and b children. void AlpGenHandler::getTopRadiation(PPtr theParticle) { ParticleVector theChildren(theParticle->children()); for (unsigned int ixx=0; ixx<theChildren.size(); ixx++) if(theChildren[ixx]->children().size()==0) tmpList_.push_back(theChildren[ixx]); else if(abs(theChildren[ixx]->id())==5||abs(theChildren[ixx]->id())==24) return; else getTopRadiation(theChildren[ixx]); return; } void AlpGenHandler::caldel_hvq() { // Fill partonsToMatch_ with only those pre-shower partons intended to // be used in heavy-quark-jet matching and fill particlesToCluster_ using // only those final state particles (post-shower) which are supposed // in the heavy-quark-jet clustering used to do merging. To begin with // these are made from the corresponding sets of particles that were // omitted from the initial jet-parton matching run. partonsToMatch_ = preshowerFSPsToDelete_; particlesToCluster_.resize(showeredFSPsToDelete_.size()); for(unsigned int ixx=0; ixx<showeredFSPsToDelete_.size(); ixx++) particlesToCluster_[ixx] = showeredFSPsToDelete_[ixx]; // Reset the arrays of particles to delete so that the partonsToMatch_ // and particlesToCluster_ vectors can undergo further filtering. preshowerFSPsToDelete_.clear(); showeredFSPsToDelete_.clear(); // Determine further particles in partonsToMatch_ and particlesToCluster_ // for deletion. for(unsigned int ixx=0; ixx<partonsToMatch_.size(); ixx++) { // If the progenitor particle is not a heavy // quark we delete it and its descendents. if(abs(partonsToMatch_[ixx]->id())<4||abs(partonsToMatch_[ixx]->id())>6) { preshowerFSPsToDelete_.push_back(partonsToMatch_[ixx]); tmpList_.clear(); getDescendents(partonsToMatch_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); // If the progenitor is a b quark from a top decay drop // it & it's descendents too! } else if(abs(partonsToMatch_[ixx]->id())==5&& partonsToMatch_[ixx]->parents().size()>0&& abs(partonsToMatch_[ixx]->parents()[0]->id())==6) { preshowerFSPsToDelete_.push_back(partonsToMatch_[ixx]); tmpList_.clear(); getDescendents(partonsToMatch_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); // If (it's a hvy quark not from a top decay and) it has a W/Z/H // as a parent [ditto]. } else if(partonsToMatch_[ixx]->parents().size()>0&& (abs(partonsToMatch_[ixx]->parents()[0]->id())==23|| abs(partonsToMatch_[ixx]->parents()[0]->id())==24|| abs(partonsToMatch_[ixx]->parents()[0]->id())==25)) { preshowerFSPsToDelete_.push_back(partonsToMatch_[ixx]); tmpList_.clear(); getDescendents(partonsToMatch_[ixx]); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) showeredFSPsToDelete_.push_back(tmpList_[jxx]); } } // Now do the necessary deleting from partonsToMatch_ and // particlesToCluster_. for(unsigned int ixx=0; ixx<preshowerFSPsToDelete_.size(); ixx++) { for(unsigned int jxx=0; jxx<partonsToMatch_.size(); jxx++) { if(preshowerFSPsToDelete_[ixx]==partonsToMatch_[jxx]) { partonsToMatch_.erase(partonsToMatch_.begin()+jxx); break; } } } for(unsigned int ixx=0; ixx<showeredFSPsToDelete_.size(); ixx++) { for(unsigned int jxx=0; jxx<particlesToCluster_.size(); jxx++) { if(showeredFSPsToDelete_[ixx]==particlesToCluster_[jxx]) { particlesToCluster_.erase(particlesToCluster_.begin()+jxx); break; } } } // Now we return to get the decaying top quarks and any // radiation they produced. ParticleVector intermediates(lastXCombPtr()->subProcess()->intermediates()); for(unsigned int ixx=0; ixx<intermediates.size(); ixx++) { if(abs(intermediates[ixx]->id())==6) { partonsToMatch_.push_back(intermediates[ixx]); tmpList_.clear(); getTopRadiation(partonsToMatch_.back()); for(unsigned int jxx=0; jxx<tmpList_.size(); jxx++) particlesToCluster_.push_back(tmpList_[jxx]); } } // If there are any heavy quark progenitors we have to remove // the final (showered) instance of them from particlesToCluster. ParticleVector evolvedHeavyQuarks; for(unsigned int ixx=0; ixx<partonsToMatch_.size(); ixx++) { if(abs(partonsToMatch_[ixx]->id())>=4&&abs(partonsToMatch_[ixx]->id())<=6) { theProgenitor = partonsToMatch_[ixx]; // Follow the heavy quark line down to where it stops branching. while(theProgenitor->children().size()>0) { theLastProgenitor = theProgenitor; for(unsigned int jxx=0; jxx<theProgenitor->children().size(); jxx++) { if(theProgenitor->children()[jxx]->id()==theProgenitor->id()) theProgenitor=theProgenitor->children()[jxx]; } // If the progenitor had children but none of them had // the same particle id as it, then it must have undergone // a decay rather than a branching, i.e. it is the end of // the evolution line, so, if(theProgenitor==theLastProgenitor) break; } evolvedHeavyQuarks.push_back(theProgenitor); } } // Now delete the evolved heavy quark from the particlesToCluster. for(unsigned int ixx=0; ixx<evolvedHeavyQuarks.size(); ixx++) { for(unsigned int jxx=0; jxx<particlesToCluster_.size(); jxx++) { if(evolvedHeavyQuarks[ixx]==particlesToCluster_[jxx]) { particlesToCluster_.erase(particlesToCluster_.begin()+jxx); break; } } } return; } void AlpGenHandler::getPreshowerParticles() { // LH file initial-state partons: preshowerISPs_ = lastXCombPtr()->subProcess()->incoming(); // LH file final-state partICLEs: preshowerFSPs_ = lastXCombPtr()->subProcess()->outgoing(); return; } void AlpGenHandler::getShoweredParticles() { // Post-shower initial-state hadrons: showeredISHs_ = eventHandler()->currentEvent()->incoming(); // Post-shower initial-state partons: for(unsigned int ixx=0; ixx<(showeredISHs_.first)->children().size(); ixx++) if(((showeredISHs_.first)->children()[ixx]->id())<6|| ((showeredISHs_.first)->children()[ixx]->id())==21) showeredISPs_.first=(showeredISHs_.first)->children()[ixx]; for(unsigned int ixx=0; ixx<(showeredISHs_.second)->children().size(); ixx++) if(((showeredISHs_.second)->children()[ixx]->id())<6|| ((showeredISHs_.second)->children()[ixx]->id())==21) showeredISPs_.second=(showeredISHs_.second)->children()[ixx]; // Post-shower final-state partICLEs plus remnants (to be removed later): showeredFSPs_ = eventHandler()->currentEvent()->getFinalState(); // Post-shower final-state remnants: for(unsigned int ixx=0; ixx<showeredFSPs_.size(); ixx++) { if(showeredFSPs_[ixx]->PDGName()=="Rem:p+"|| showeredFSPs_[ixx]->PDGName()=="Rem:pbar-") { if(showeredFSPs_[ixx]->parents()[0]->parents()[0]== showeredISHs_.first) showeredRems_.first=showeredFSPs_[ixx]; else if(showeredFSPs_[ixx]->parents()[0]->parents()[0]== showeredISHs_.second) showeredRems_.second=showeredFSPs_[ixx]; } } // Now delete found remnants from the showeredFSPs vector for consistency. for(unsigned int ixx=0; ixx<showeredFSPs_.size(); ixx++) if(showeredFSPs_[ixx]->PDGName()=="Rem:p+") showeredFSPs_.erase(showeredFSPs_.begin()+ixx); for(unsigned int ixx=0; ixx<showeredFSPs_.size(); ixx++) if(showeredFSPs_[ixx]->PDGName()=="Rem:pbar-") showeredFSPs_.erase(showeredFSPs_.begin()+ixx); sort(showeredFSPs_.begin(),showeredFSPs_.end(),recordEntry); return; } void AlpGenHandler::doSanityChecks(int debugLevel) { // When checking momentum conservation in the form // p_in - p_out, any momentum component bigger / less // than + / - epsilon will result in the p_in - p_out // vector being flagged as "non-null", triggering a // warning that momentum conservation is violated. Energy epsilon(0.5*GeV); if(debugLevel>=5) epsilon=1e-9*GeV; // Print out what was found for the incoming and outgoing // partons in the lastXCombPtr regardless. if(debugLevel>=5) { cout << "\n\n\n\n"; cout << "****************************************************" << endl; cout << " The following are the hard subprocess momenta from " << "\n" << " lastXCombPtr and should be basically identical to " << "\n" << " the input LH file momenta." << "\n\n"; cout << " Incoming particles:" << "\n" << *(preshowerISPs_.first) << "\n" << *(preshowerISPs_.second) << endl; cout << " Outgoing particles:" << endl; for(unsigned int ixx=0; ixx<preshowerFSPs_.size(); ixx++) cout << *(preshowerFSPs_[ixx]) << endl; } // Print out what was found for the incoming and outgoing // partons after the shower. if(debugLevel>=5) { cout << "\n\n"; cout << "****************************************************" << endl; cout << " The following are the particles left at the end of" << "\n" << " the showering step." << "\n\n"; cout << " Incoming hadrons:" << "\n" << *(showeredISHs_.first) << "\n" << *(showeredISHs_.second) << endl; cout << " Incoming partons:" << "\n" << *(showeredISPs_.first) << "\n" << *(showeredISPs_.second) << endl; cout << " Outgoing partons:" << endl; for(unsigned int ixx=0; ixx<showeredFSPs_.size(); ixx++) cout << *(showeredFSPs_[ixx]) << endl; cout << " Outgoing remnants:" << "\n" << *(showeredRems_.first) << "\n" << *(showeredRems_.second) << endl; } // Check if we correctly identified all initial and final-state // particles by testing momentum is conserved. if(debugLevel>=4) { Lorentz5Momentum tmpMom; tmpMom += showeredISPs_.first->momentum(); tmpMom += showeredISPs_.second->momentum(); for(unsigned int ixx=0; ixx<showeredFSPs_.size(); ixx++) tmpMom -= showeredFSPs_[ixx]->momentum(); if(!isMomLessThanEpsilon(tmpMom,epsilon)) cout << "Total parton mom.in - total parton mom.out = " << tmpMom/GeV << endl; tmpMom = showeredISHs_.first->momentum() - showeredRems_.first->momentum() -showeredISPs_.first->momentum(); if(!isMomLessThanEpsilon(tmpMom,epsilon)) cout << "First p_hadron-p_remnant-p_incoming " << tmpMom/GeV << endl; tmpMom = showeredISHs_.second->momentum() - showeredRems_.second->momentum()-showeredISPs_.second->momentum(); if(!isMomLessThanEpsilon(tmpMom,epsilon)) cout << "Second p_hadron-p_remnant-p_incoming " << tmpMom/GeV << endl; } // Check if what we found to be the remnant is consistent with // what we identified as the parent incoming hadron i.e. p+ // goes with Rem:p+ and pbar- goes with Rem:pbar-. if(debugLevel>=0) { string tmpString; tmpString=showeredRems_.first->PDGName(); tmpString=tmpString.substr(tmpString.find_first_of(":")+1, string::npos); if(showeredISHs_.first->PDGName()!=tmpString) { cout << "AlpGenHandler::showerHardProcessVeto" << "\n" << "Fatal error in pairing of remnant and parent hadron." << "\n" << "Remnant = " << *(showeredRems_.first) << "\n" << "Parent hadron = " << *(showeredISHs_.first) << endl; cout << showeredISHs_.first->PDGName() << endl; cout << tmpString << endl; } tmpString=showeredRems_.second->PDGName(); tmpString=tmpString.substr(tmpString.find_first_of(":")+1, string::npos); if(showeredISHs_.second->PDGName()!=tmpString) { cout << "AlpGenHandler::showerHardProcessVeto" << "\n" << "Fatal error in pairing of remnant and parent hadron." << "\n" << "Remnant = " << *(showeredRems_.second) << "\n" << "Parent hadron = " << *(showeredISHs_.second) << endl; cout << showeredISHs_.second->PDGName() << endl; cout << tmpString << endl; } } return; } void AlpGenHandler::printMomVec(vector<Lorentz5Momentum> momVec) { cout << "\n\n"; // Label columns. printf("%5s %9s %9s %9s %9s %9s %9s %9s %9s %9s\n", "jet #", "px","py","pz","E", "eta","phi","pt","et","mass"); // Print out the details for each jet for (unsigned int ixx=0; ixx<momVec.size(); ixx++) { printf("%5u %9.2f %9.2f %9.2f %9.2f %9.2f %9.2f %9.2f %9.2f %9.2f\n", ixx, double(momVec[ixx].x()/GeV),double(momVec[ixx].y()/GeV), double(momVec[ixx].z()/GeV),double(momVec[ixx].t()/GeV), double(momVec[ixx].eta()) ,double(momVec[ixx].phi()), double(momVec[ixx].perp()/GeV), double(momVec[ixx].et()/GeV), double(momVec[ixx].m()/GeV)); } } Energy AlpGenHandler::etclusran_(double petc) { return (((2 * epsetclus_)/M_PI) * asin(2 * petc - 1) + etclusmean_); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AlpGen/Makefile.in������������������������������������������������������0000644�0001750�0001750�00000003427�11754474774�021620� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*- Makefile -*- (for emacs) # # This Makefile is intended for compiling Herwig++ plugins # # This Makefile received very little testing, # any bug reports are very welcome! # # Location of include files THEPEGINCLUDE = HERWIGINCLUDE = GSLINCLUDE = FASTJETINCLUDE = # Messy hack, not guaranteed to work: FASTJETLIB = `echo $(FASTJETINCLUDE) | sed "s/-I//" | sed "s/ //"`/../lib/ LDFLAGS = -L$(FASTJETLIB) -lfastjet SHARED_FLAG = INCLUDE = $(THEPEGINCLUDE) $(HERWIGINCLUDE) $(GSLINCLUDE) $(FASTJETINCLUDE) # C++ flags CXX = CXXFLAGS = ALLCCFILES=$(shell echo *.cc) default : BasicLesHouchesFileReader.so AlpGenHandler.so AlpGenToLH.exe MLMHistogram.so MLMAnalysis.so %.o : %.cc %.h $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) -c -shared $< -o $@ BasicLesHouchesFileReader.so : BasicLesHouchesFileReader.o $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) $(SHARED_FLAG) $(LDFLAGS) \ -Wl,-undefined -Wl,dynamic_lookup \ BasicLesHouchesFileReader.o -o BasicLesHouchesFileReader.so AlpGenHandler.so : AlpGenHandler.o $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) $(SHARED_FLAG) $(LDFLAGS) \ -Wl,-undefined -Wl,dynamic_lookup \ AlpGenHandler.o -o AlpGenHandler.so AlpGenToLH.exe : AlpGenToLH.o $(CXX) AlpGenToLH.o -o AlpGenToLH.exe MLMHistogram.so : Validation/MLMHistogram.o $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) $(SHARED_FLAG) $(LDFLAGS) \ -Wl,-undefined -Wl,dynamic_lookup \ Validation/MLMHistogram.o -o MLMHistogram.so MLMAnalysis.so : Validation/MLMAnalysis.o $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) $(SHARED_FLAG) $(LDFLAGS) \ -Wl,-undefined -Wl,dynamic_lookup \ MLMHistogram.so Validation/MLMAnalysis.o -o MLMAnalysis.so clean: rm -f $(ALLCCFILES:.cc=.o) \ BasicLesHouchesFileReader.so AlpGenHandler.so AlpGenToLH.exe MLMAnalysis.so MLMHistogram.so�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AlpGen/BasicLesHouchesFileReader.cc�������������������������������������0000644�0001750�0001750�00000036213�11754474774�025010� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // BasicLesHouchesFileReader.cc is a part of Herwig++ - A multi-purpose // Monte Carlo event generator. // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the BasicLesHouchesFileReader class. // #include "BasicLesHouchesFileReader.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDF/PartonExtractor.h" #include "ThePEG/PDF/NoPDF.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/EventRecord/TmpTransform.h" #include "ThePEG/Utilities/UtilityBase.h" using namespace Herwig; BasicLesHouchesFileReader:: BasicLesHouchesFileReader(const BasicLesHouchesFileReader & x) : LesHouchesReader(x), neve(x.neve), ieve(0), LHFVersion(x.LHFVersion), outsideBlock(x.outsideBlock), headerBlock(x.headerBlock), initComments(x.initComments), initAttributes(x.initAttributes), eventComments(x.eventComments), eventAttributes(x.eventAttributes), theFileName(x.theFileName),overSampling_(x.overSampling_) {} BasicLesHouchesFileReader::~BasicLesHouchesFileReader() {} IBPtr BasicLesHouchesFileReader::clone() const { return new_ptr(*this); } IBPtr BasicLesHouchesFileReader::fullclone() const { return new_ptr(*this); } bool BasicLesHouchesFileReader::preInitialize() const { return true; } void BasicLesHouchesFileReader::doinit() { LesHouchesReader::doinit(); } void BasicLesHouchesFileReader::initialize(LesHouchesEventHandler & eh) { LesHouchesReader::initialize(eh); if ( LHFVersion.empty() ) Throw<LesHouchesFileError>() << "The file associated with '" << name() << "' does not contain a " << "proper formatted Les Houches event file. The events may not be " << "properly sampled." << Exception::warning; } long BasicLesHouchesFileReader::scan() { open(); // Shall we write the events to a cache file for fast reading? If so // we write to a temporary file if the caches events should be // randomized. if ( cacheFileName().length() ) openWriteCacheFile(); // Keep track of the number of events scanned. long neve = 0; long cuteve = 0; bool negw = false; // If the open() has not already gotten information about subprocesses // and cross sections we have to scan through the events. if ( !heprup.NPRUP || cacheFile() || abs(heprup.IDWTUP) != 1 ) { // why scan if IDWTUP != 1? HoldFlag<> isScanning(scanning); double oldsum = 0.0; vector<int> lprup; vector<double> newmax; vector<long> oldeve; vector<long> neweve; for ( int i = 0; ( maxScan() < 0 || i < maxScan() ) && readEvent(); ++i ) { if ( !checkPartonBin() ) Throw<LesHouchesInitError>() << "Found event in LesHouchesReader '" << name() << "' which cannot be handeled by the assigned PartonExtractor '" << partonExtractor()->name() << "'." << Exception::runerror; vector<int>::iterator idit = find(lprup.begin(), lprup.end(), hepeup.IDPRUP); int id = lprup.size(); if ( idit == lprup.end() ) { lprup.push_back(hepeup.IDPRUP); newmax.push_back(0.0); neweve.push_back(0); oldeve.push_back(0); } else { id = idit - lprup.begin(); } ++neve; ++oldeve[id]; oldsum += hepeup.XWGTUP; if ( cacheFile() ) { if ( eventWeight() == 0.0 ) { ++cuteve; continue; } cacheEvent(); } ++neweve[id]; newmax[id] = max(newmax[id], abs(eventWeight())); if ( eventWeight() < 0.0 ) negw = true; } xSecWeights.resize(oldeve.size(), 1.0); for ( int i = 0, N = oldeve.size(); i < N; ++i ) if ( oldeve[i] ) xSecWeights[i] = double(neweve[i])/double(oldeve[i]); if ( maxScan() < 0 || neve > NEvents() ) NEvents(neve - cuteve); if ( lprup.size() == heprup.LPRUP.size() ) { for ( int id = 0, N = lprup.size(); id < N; ++id ) { vector<int>::iterator idit = find(heprup.LPRUP.begin(), heprup.LPRUP.end(), hepeup.IDPRUP); if ( idit == heprup.LPRUP.end() ) { Throw<LesHouchesInitError>() << "When scanning events, the LesHouschesReader '" << name() << "' found undeclared processes." << Exception::warning; heprup.NPRUP = 0; break; } int idh = idit - heprup.LPRUP.begin(); heprup.XMAXUP[idh] = newmax[id]; } } if ( heprup.NPRUP == 0 ) { // No heprup block was supplied or something went wrong. heprup.NPRUP = lprup.size(); heprup.LPRUP.resize(lprup.size()); heprup.XMAXUP.resize(lprup.size()); for ( int id = 0, N = lprup.size(); id < N; ++id ) { heprup.LPRUP[id] = lprup[id]; heprup.XMAXUP[id] = newmax[id]; } } else if ( abs(heprup.IDWTUP) != 1 ) { // Try to fix things if abs(heprup.IDWTUP) != 1. double sumxsec = 0.0; for ( int id = 0; id < heprup.NPRUP; ++id ) sumxsec += heprup.XSECUP[id]; weightScale = picobarn*neve*sumxsec/oldsum; } } if ( cacheFile() ) closeCacheFile(); if ( negw ) heprup.IDWTUP = min(-abs(heprup.IDWTUP), -1); return neve; } void BasicLesHouchesFileReader::open() { if ( filename().empty() ) throw LesHouchesFileError() << "No Les Houches file name. " << "Use 'set " << name() << ":FileName'." << Exception::runerror; cfile.open(filename()); if ( !cfile ) throw LesHouchesFileError() << "The BasicLesHouchesFileReader '" << name() << "' could not open the " << "event file called '" << theFileName << "'." << Exception::runerror; cfile.readline(); if ( !cfile.find("<LesHouchesEvents") ) return; map<string,string> attributes = StringUtils::xmlAttributes("LesHouchesEvents", cfile.getline()); LHFVersion = attributes["version"]; if ( LHFVersion.empty() ) return; bool readingHeader = false; bool readingInit = false; headerBlock = ""; // Loop over all lines until we hit the </init> tag. while ( cfile.readline() && !cfile.find("</init>") ) { if ( cfile.find("<header") ) { // We have hit the header block, so we should dump this and all // following lines to headerBlock until we hit the end of it. readingHeader = true; headerBlock = cfile.getline() + "\n"; } else if ( cfile.find("<init") ) { // We have hit the init block, so we should expect to find the // standard information in the following. But first check for // attributes. initAttributes = StringUtils::xmlAttributes("init", cfile.getline()); readingInit = true; cfile.readline(); if ( !( cfile >> heprup.IDBMUP.first >> heprup.IDBMUP.second >> heprup.EBMUP.first >> heprup.EBMUP.second >> heprup.PDFGUP.first >> heprup.PDFGUP.second >> heprup.PDFSUP.first >> heprup.PDFSUP.second >> heprup.IDWTUP >> heprup.NPRUP ) ) { heprup.NPRUP = -42; LHFVersion = ""; return; } heprup.resize(); for ( int i = 0; i < heprup.NPRUP; ++i ) { cfile.readline(); if ( !( cfile >> heprup.XSECUP[i] >> heprup.XERRUP[i] >> heprup.XMAXUP[i] >> heprup.LPRUP[i] ) ) { heprup.NPRUP = -42; LHFVersion = ""; return; } } } else if ( cfile.find("</header") ) { readingHeader = false; headerBlock += cfile.getline() + "\n"; } else if ( readingHeader ) { // We are in the process of reading the header block. Dump the // line to headerBlock. headerBlock += cfile.getline() + "\n"; } else if ( readingInit ) { // Here we found a comment line. Dump it to initComments. initComments += cfile.getline() + "\n"; } else { // We found some other stuff outside the standard tags. outsideBlock += cfile.getline() + "\n"; } } if ( !cfile ) { heprup.NPRUP = -42; LHFVersion = ""; return; } } bool BasicLesHouchesFileReader::readEvent() { reset(); if ( !doReadEvent() ) return false; // If we are just skipping event we do not need to reweight or do // anything fancy. if ( skipping ) return true; if ( cacheFile() && !scanning ) return true; // Reweight according to the re- and pre-weights objects in the // LesHouchesReader base class. lastweight = reweight(); if ( !reweightPDF && !cutEarly() ) return true; // We should try to reweight the PDFs or make early cuts here. fillEvent(); double x1 = incoming().first->momentum().plus()/ beams().first->momentum().plus(); if ( reweightPDF && inPDF.first && outPDF.first && inPDF.first != outPDF.first ) { if ( hepeup.XPDWUP.first <= 0.0 ) hepeup.XPDWUP.first = inPDF.first->xfx(inData.first, incoming().first->dataPtr(), sqr(hepeup.SCALUP*GeV), x1); double xf = outPDF.first->xfx(inData.first, incoming().first->dataPtr(), sqr(hepeup.SCALUP*GeV), x1); lastweight *= xf/hepeup.XPDWUP.first; hepeup.XPDWUP.first = xf; } double x2 = incoming().second->momentum().minus()/ beams().second->momentum().minus(); if ( reweightPDF && inPDF.second && outPDF.second && inPDF.second != outPDF.second ) { if ( hepeup.XPDWUP.second <= 0.0 ) hepeup.XPDWUP.second = inPDF.second->xfx(inData.second, incoming().second->dataPtr(), sqr(hepeup.SCALUP*GeV), x2); double xf = outPDF.second->xfx(inData.second, incoming().second->dataPtr(), sqr(hepeup.SCALUP*GeV), x2); lastweight *= xf/hepeup.XPDWUP.second; hepeup.XPDWUP.second = xf; } if ( cutEarly() ) { if ( !cuts().initSubProcess((incoming().first->momentum() + incoming().second->momentum()).m2(), 0.5*log(x1/x2)) ) lastweight = 0.0; tSubProPtr sub = getSubProcess(); TmpTransform<tSubProPtr> tmp(sub, Utilities::getBoostToCM(sub->incoming())); if ( !cuts().passCuts(*sub) ) lastweight = 0.0; } return true; } double BasicLesHouchesFileReader::getEvent() { if ( cacheFile() ) { if (overSampling_) { if ( !uncacheEvent() ) reopen(); } else { if ( !uncacheEvent() || stats.attempts()==NEvents() ) throw LesHouchesReopenWarning() << "More events requested than available in LesHouchesReader " << name() << Exception::runerror; } } else { if (overSampling_) { if ( !readEvent() ) reopen(); } else { if ( !readEvent() || stats.attempts()==NEvents() ) throw LesHouchesReopenWarning() << "More events requested than available in LesHouchesReader " << name() << Exception::runerror; } } ++position; double max = maxWeights[hepeup.IDPRUP]*maxFactor; return max != 0.0? eventWeight()/max: 0.0; } void BasicLesHouchesFileReader::skip(long n) { HoldFlag<> skipflag(skipping); if(overSampling_) while ( n-- ) getEvent(); } bool BasicLesHouchesFileReader::doReadEvent() { if ( !cfile ) return false; if ( LHFVersion.empty() ) return false; if ( heprup.NPRUP < 0 ) return false; eventComments = ""; outsideBlock = ""; hepeup.NUP = 0; hepeup.XPDWUP.first = hepeup.XPDWUP.second = 0.0; // Keep reading lines until we hit the next event or the end of // the event block. Save any inbetween lines. Exit if we didn't // find an event. while ( cfile.readline() && !cfile.find("<event") ) outsideBlock += cfile.getline() + "\n"; // We found an event. First scan for attributes. eventAttributes = StringUtils::xmlAttributes("event", cfile.getline()); if ( !cfile.readline() ) return false; // The first line determines how many subsequent particle lines we // have. if ( !( cfile >> hepeup.NUP >> hepeup.IDPRUP >> hepeup.XWGTUP >> hepeup.SCALUP >> hepeup.AQEDUP >> hepeup.AQCDUP ) ) return false; hepeup.resize(); // Read all particle lines. for ( int i = 0; i < hepeup.NUP; ++i ) { if ( !cfile.readline() ) return false; if ( !( cfile >> hepeup.IDUP[i] >> hepeup.ISTUP[i] >> hepeup.MOTHUP[i].first >> hepeup.MOTHUP[i].second >> hepeup.ICOLUP[i].first >> hepeup.ICOLUP[i].second >> hepeup.PUP[i][0] >> hepeup.PUP[i][1] >> hepeup.PUP[i][2] >> hepeup.PUP[i][3] >> hepeup.PUP[i][4] >> hepeup.VTIMUP[i] >> hepeup.SPINUP[i] ) ) return false; if(isnan(hepeup.PUP[i][0])||isnan(hepeup.PUP[i][1])|| isnan(hepeup.PUP[i][2])||isnan(hepeup.PUP[i][3])|| isnan(hepeup.PUP[i][4])) throw Exception() << "nan's as momenta in Les Houches file " << Exception::eventerror; } // Now read any additional comments. while ( cfile.readline() && !cfile.find("</event>") ) eventComments += cfile.getline() + "\n"; if ( !cfile ) return false; return true; } void BasicLesHouchesFileReader::close() { cfile.close(); } void BasicLesHouchesFileReader::persistentOutput(PersistentOStream & os) const { os << neve << LHFVersion << outsideBlock << headerBlock << initComments << initAttributes << eventComments << eventAttributes << theFileName << overSampling_; } void BasicLesHouchesFileReader::persistentInput(PersistentIStream & is, int) { is >> neve >> LHFVersion >> outsideBlock >> headerBlock >> initComments >> initAttributes >> eventComments >> eventAttributes >> theFileName >> overSampling_; ieve = 0; } ClassDescription<BasicLesHouchesFileReader> BasicLesHouchesFileReader::initBasicLesHouchesFileReader; // Definition of the static class description member. void BasicLesHouchesFileReader::Init() { static ClassDocumentation<BasicLesHouchesFileReader> documentation ("Herwig::BasicLesHouchesFileReader is an base class to be used for objects " "which reads event files from matrix element generators. This class is " "able to read plain event files conforming to the Les Houches Event File " "accord."); static Parameter<BasicLesHouchesFileReader,string> interfaceFileName ("FileName", "The name of a file containing events conforming to the Les Houches " "protocol to be read into ThePEG. A file name ending in " "<code>.gz</code> will be read from a pipe which uses " "<code>zcat</code>. If a file name ends in <code>|</code> the " "preceeding string is interpreted as a command, the output of which " "will be read through a pipe.", &BasicLesHouchesFileReader::theFileName, "", false, false); static Switch<BasicLesHouchesFileReader,bool> interfaceOverSampling ("OverSampling", "Allow / Forbid reading of LH events more than once by the " "LH reader, allowing / protecting against statistical problems.", &BasicLesHouchesFileReader::overSampling_, true, false, false); static SwitchOption AllowOverSampling (interfaceOverSampling, "AllowOverSampling", "The reader will read events in the file more than once if more " "events are needed to generate the requested number than that in " "the LH file.", true); static SwitchOption ForbidOverSampling (interfaceOverSampling, "ForbidOverSampling", "The reader will NOT read events in the file more than once if more " "events are needed to generate the requested number than that in " "the LH file - instead it will stop when all have been read.", false); interfaceFileName.fileType(); interfaceFileName.rank(11); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AlpGen/AlpGenHandler.h��������������������������������������������������0000644�0001750�0001750�00000034244�11754474774�022371� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_AlpGenHandler_H #define HERWIG_AlpGenHandler_H // // This is the declaration of the AlpGenHandler class. // #include "Herwig++/Shower/ShowerHandler.h" #include "Herwig++/Shower/Base/Evolver.h" #include "ThePEG/Config/Pointers.h" #include "Herwig++/Shower/Couplings/ShowerAlpha.h" #include "fastjet/PseudoJet.hh" #include "fastjet/ClusterSequence.hh" namespace Herwig { class AlpGenHandler; } //declaration of thepeg ptr namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::AlpGenHandler,AlpGenHandlerPtr); } namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the AlpGenHandler class. * * @see \ref AlpGenHandlerInterfaces "The interfaces" * defined for AlpGenHandler. */ class AlpGenHandler: public ShowerHandler { public: /** * The default constructor. */ AlpGenHandler(); 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 Standard Interfaced functions. */ //@{ /** * Finalize the object */ virtual void dofinish(); /** * 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} public: /** * Hook to allow vetoing of event after showering hard sub-process * as in e.g. MLM merging. */ virtual bool showerHardProcessVeto(); 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: /* * Run MLM jet-parton matching on the 'extra' jets. */ bool lightJetPartonVeto(); /* * Function that calculates deltaR between a parton and a jet */ double partonJetDeltaR(ThePEG::tPPtr partonptr, LorentzMomentum jetmom); /** * c++ translation of subroutine of same name from alpsho.f. * Initialize calorimeter for calsim_m and getjet_m. Note that * because initialization is separte calsim_m can be called more * than once to simulate pileup of several events. */ void calini_m(); /** * c++ translation of subroutine of same name from alpsho.f. * Simple calorimeter simulation - assume uniform Y and phi bins. */ void calsim_m(); /** * Find jets using the FastJet package on particlesToCluster_. */ void getFastJets(double rjet, Energy ejcut, double etajcut); /** * c++ translation of subroutine of same name from alpsho.f. * Simple jet-finding algorithm (similar to UA1). Find highest * remaining cell > ETSTOP and sum surrounding cells with -- * DELTA(Y)**2+DELTA(PHI)**2 < RJET**2 , ET>ECCUT. * Keep sets with ET>EJCUT and ABS(ETA)<ETACUT. The UA1 * parameters are RJET=1.0 and EJCUT=5.0. */ void getjet_m(double rjet, Energy ejcut, double etajcut); /** * Deletes particles from partonsToMatch_ and particlesToCluster_ * vectors so that these contain only the partons to match to the * jets and the particles used to build jets respectively. By and * large the candidates for deletion are: vector bosons and their * decay products, Higgs bosons, photons as well as _primary_, i.e. * present in the lowest multiplicity process, heavy quarks and * any related decay products. */ void caldel_m(); /** * c++ translation of subroutine of same name from alpsho.f. * Label all particles with status between ISTLO and ISTHI * (until a particle with status ISTOP is found) as final-state, * call calsim_m and then put labels back to normal. This * version keeps only all IST=1 particles rejected by caldel as * daughters of vetoed heavy-quark mothers: jets complementary * to those reconstructed by caldel. */ void caldel_hvq(); /** * Get the particles from lastXCombPtr filling the pair * preshowerISPs_ and particle pointer vector preshowerFSPs_. */ void getPreshowerParticles(); /** * Get the particles from eventHandler()->currentEvent()->... * filling the particle pairs showeredISHs_, showeredISPs_, * showeredRems_ and the particle pointer vector showeredFSPs_. */ void getShoweredParticles(); /** * Allows printing of debug output and sanity checks like * total momentum consrvation to be carried out. * debugLevel = -1, 0, ...5 * = no debugging, minimal debugging, ... verbose. */ void doSanityChecks(int debugLevel); /** * Given a pointer to a particle this finds all its final state * descendents. */ void getDescendents(PPtr theParticle); /** * Accumulates all descendents of tops down to the b and W * but not including them. */ void getTopRadiation(PPtr theParticle); /** * Sorts a given vector of particles by descending pT or ETJET */ ParticleVector pTsort(ParticleVector unsortedVec); pair< vector<Energy>, vector<Lorentz5Momentum> > ETsort(vector<Energy> unsortedetjet, vector<Lorentz5Momentum> unsortedVec); /* * A function that prints a vector of Lorentz5Momenta in a fancy way */ void printMomVec(vector<Lorentz5Momentum> momVec); /* * A probability function for varying etclus_ about the mean value */ Energy etclusran_(double petc); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<AlpGenHandler> initAlpGenHandler; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ AlpGenHandler & operator=(const AlpGenHandler &); private: /** * Initial-state incoming partons prior to showering * (i.e. from lastXCombPtr). */ PPair preshowerISPs_; /** * Final-state outgoing partICLEs prior to showering * (i.e. from lastXCombPtr). */ ParticleVector preshowerFSPs_; /** * Final-state outgoing partICLEs prior to showering _to_be_removed_ * from preShowerFSPs_ prior to the light-parton-light-jet matching * step. This same list is the starting point for determining * partonsToMatch_ for the case of merging in heavy quark production. */ ParticleVector preshowerFSPsToDelete_; /** * Initial-state incoming hadrons after shower of hard process * (eventHandler()->currentEvent()->incoming()). */ PPair showeredISHs_; /** * Initial-state incoming partons after shower of hard process * (look for partonic children of showeredISHs_). */ PPair showeredISPs_; /** * Final-state outgoing partICLEs after shower of hard process * (eventHandler()->currentEvent()->getFinalState()). */ tPVector showeredFSPs_; /** * Final-state outgoing partICLEs after shower of hard process * _to_be_removed_ from showeredFSPs_ prior to the * light-parton-light-jet matching step. This same list is the * starting point for determining particlesToCluster_ for the * case of merging in heavy quark production. */ ParticleVector showeredFSPsToDelete_; /** * ONLY the final-state partons from preshowerFSPs_ that are * supposed to enter the jet-parton matching. */ ParticleVector partonsToMatch_; /* * The shower progenitors */ PPtr theProgenitor; PPtr theLastProgenitor; /** * ONLY the final-state particles from showeredFSPs_ (and maybe * also showeredRems_) that are supposed to go for jet clustering. */ tPVector particlesToCluster_; /** * Final-state remnants after shower of hard process * (look for remnants initially in showeredFSPs_). */ PPair showeredRems_; /** * Pointer to the object calculating the strong coupling */ ShowerAlphaPtr alphaS_; /** * Information extracted from the XComb object */ //@{ /** * The fixed factorization scale used in the MEs. */ Energy pdfScale_; /** * Centre of mass energy */ Energy2 sHat_; /** * Constant alphaS used to generate LH events - if not already * using CKKW scale (ickkw = 1 in AlpGen for example). */ double alphaSME_; //@} /* * Number of rapidity segments of the calorimeter. */ unsigned int ncy_; /* * Number of phi segments of the calorimeter. */ unsigned int ncphi_; /* * Heavy flavour in WQQ,ZQQ,2Q etc (4=c, 5=b, 6=t). */ int ihvy_; /* * Number of photons in the AlpGen process. */ int nph_; /* * Number of higgses in the AlpGen process. */ int nh_; /* * Jet ET cut to apply in jet clustering (in merging). */ Energy etclus_; /* * Mean Jet ET cut to apply in jet clustering (in merging). */ Energy etclusmean_; /* * maximum deviation from mean Jet ET cut to apply in jet clustering (in merging). */ Energy epsetclus_; /* * Cone size used in jet clustering (in merging). */ double rclus_; /* * Max |eta| for jets in clustering (in merging). */ double etaclmax_; /* * Default 1.5 factor used to decide if a jet matches a parton * in merging: if DR(parton,jet)<rclusfactor*rclus the parton * and jet are said to have been matched. */ double rclusfactor_; /* * The AlpGen hard process code. Relation to the AlpGen process names: * 1: wqq, 2: zqq, 3: wjet, 4: zjet, 5: vbjet, 6: 2Q, 8: QQh, 9: Njet, * 10: wcjet, 11: phjet, 12: hjet, 13: top, 14: wphjet, 15: wphqq, * 16: 2Qph. */ int ihrd_; /* * The number of light jets in the AlpGen process (i.e. the 'extra' ones). */ int njets_; /* * Mimimum parton-parton R-sep used for generation (used for hvq merging). */ double drjmin_; /* * This flags that the highest multiplicity ME-level process is * being processed. */ bool highestMultiplicity_; /* * This flags that the highest NLO multiplicity ME-level process is * being processed. */ bool highestNLOMultiplicity_; /* * This flags whether the etclus_ (merging scale) should be fixed or variable according to a prob. distribution around the mean */ bool etclusfixed_; /* * The forwards rapidity span of the calorimeter. */ double ycmax_; /* * The backwards rapidity span of the calorimeter. */ double ycmin_; /* * The jet algorithm used for parton-jet matching in the MLM procedure. */ int jetAlgorithm_; /* * Allows the vetoing to be turned off completely - just for convenience. */ bool vetoIsTurnedOff_; /* * Signals that the LH file being read-in is a NLO (Powheg one). */ bool inputIsNLO_; /* * Cosine of phi values of calorimeter cell centres. * Goes phi~=0 to phi~=2*pi (index = 0 ---> ncphi). * ==> Cosine goes from +1 ---> +1 (index = 0 ---> ncphi). */ vector<double> cphcal_; /* * Sine of phi values of calorimeter cell centres. * Goes phi~=0 to phi~=2*pi (index = 0 ---> ncphi). * ==> Sine goes 0 -> 1 -> 0 -> -1 -> 0 (index = 0 ---> ncphi). */ vector<double> sphcal_; /* * Cosine of theta values of calorimeter cell centres in Y. * Goes bwds th~=pi to fwds th~=0 (index = 0 ---> ncy). * ==> Cosine goes from -1 ---> +1 (index = 0 ---> ncy). */ vector<double> cthcal_; /* * Sine of theta values of calorimeter cell centres in Y. * Goes bwds th~=pi to fwds th~=0 (index = 0 ---> ncy). * ==> Sine goes from 0 ---> +1 ---> 0 (index = 0 ---> ncy). */ vector<double> sthcal_; /* * Transverse energy deposit in a given calorimeter cell. * First array index corresponds to rapidity index of cell, * second array index corresponds to phi cell index. */ vector<vector<Energy> > et_; /* * For a given calorimeter cell this holds the index of the jet * that the cell was clustered into. */ vector<vector<int> > jetIdx_; /* * Vector holding the Lorentz 5 momenta of each jet. */ vector<Lorentz5Momentum> pjet_; /* * Vector holding the list of FS particles resulting from * the particle input to getDescendents. */ ParticleVector tmpList_; /* * Variables for the C++ translation of the calini_m(), calsim_m(), * getjet_m(...) and caldel_m() functions */ vector<Energy> etjet_; double dely_, delphi_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of AlpGenHandler. */ template <> struct BaseClassTrait<Herwig::AlpGenHandler,1> { /** Typedef of the first base class of AlpGenHandler. */ typedef Herwig::ShowerHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the AlpGenHandler class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::AlpGenHandler> : public ClassTraitsBase<Herwig::AlpGenHandler> { /** Return a platform-independent class name */ static string className() { return "Herwig::AlpGenHandler"; } /** * The name of a file containing the dynamic library where the class * AlpGenHandler is implemented. It may also include several, space-separated, * libraries if the class AlpGenHandler depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "AlpGenHandler.so"; } }; /** @endcond */ } #endif /* HERWIG_AlpGenHandler_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/AlpGen/AlpGenToLH.cc����������������������������������������������������0000644�0001750�0001750�00000170773�11754474774�021770� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������//A few standard headers #include <iostream> #include <sstream> #include <cstring> #include <fstream> #include <cmath> #include <string> #include <stdio.h> #include <stdlib.h> #include <vector> #include <iomanip> using namespace std; double sqr(double x); inline int nInt(double x) { int theCeiling=int(ceil(x)); int theFloor=int(floor(x)); if((theCeiling-theFloor!=1&&theCeiling!=theFloor) ||theCeiling-x>1.0||x-theFloor>1.0||x<theFloor||x>theCeiling) { cout << "nInt:\n" << "Fatal double to integer conversion error.\n" << "input double = " << x << "\n" << "integer ceiling = " << theCeiling << "\n" << "integer floor = " << theFloor << "\n" << "Quitting ..."; exit(1); } return (theCeiling-x) < (x-theFloor) ? theCeiling : theFloor; } int ndnsToLHAPDF(int ndns); double parstrToparval(string varName, vector<string> * parstrPtr, vector<double> * parvalPtr); void doIndividualHardProcessAssignments(int ihrd , double * nup, vector<double> * idup , vector<double> * istup, vector<double> * mothup1, vector<double> * mothup2, vector<double> * icolup1, vector<double> * icolup2, vector<vector<double> > * pup, vector<double> masses , int itopprc); //*****************************// //*****************************// //*****************************// // // // ATTENTION!!!! // // ATTENTION!!!! // // ATTENTION!!!! // // // // Remember to uncomment all // // of the currently commented // // commands outputting to // // the HW++ input file for // // the variables not yet // // declared and interfaced // // in the AlpGenHandler!! // // These should only be the // // ones commented out by _4_ // // consecutive forward slashes // // '////' in the function // // writeHWPPinFile(...) // // // // These are only commented // // as the AlpGenHandler isn't // // ready for them yet! // // // //*****************************// //*****************************// //*****************************// void writeHWPPinFile(string prefix, int ihrd, int unwev, int lhapdf, int idbmup0, int idbmup1, int idwtup, double aqcdup, int nloop, vector<double> * massesPtr, vector<double> * parvalPtr, vector<string> * parstrPtr); string trim(string theString); int main(int argc, char *argv[]) { bool usePowhegBoxConventions(true); // Control int debugging(3); // To validate cout << "\n"; cout << "------------------------------------------------------------------\n"; cout << " AlpGenToLH: Convert Alpgen Les Houches to Herwig++ Les Houches \n"; cout << " v2.0-beta \n"; cout << "------------------------------------------------------------------\n"; cout << "\n"; char* prefix; if(argv[1]) { prefix = argv[1]; } else { cout << "Use: ./AlpGenToLH [input string] [number of events (optional)]\n"; exit(1); cout << "Note: As of version 2, the .stat and _unw.par files are " << "required to read the generation parameters.\n"; } int maxevents(0); int eventcount(0); if(argc>2) { maxevents=(atoi(argv[2])); } string lheFilename = string(prefix) + string(".lhe"); string unwFilename = string(prefix) + string(".unw"); string unwparFilename = string(prefix) + string("_unw.par"); string statFilename = string(prefix) + string(".stat"); cout << "Opening input files ...\n"; cout << "-----------------------\n"; cout << "Unweighted events in " << unwFilename << ".\n" << "Generation settings in " << unwparFilename << " and " << statFilename << ".\n\n"; ifstream unwStream; ifstream unwparStream; ifstream statStream; ofstream lheStream; unwStream.open(unwFilename.c_str()); unwparStream.open(unwparFilename.c_str()); statStream.open(statFilename.c_str()); lheStream.open(lheFilename.c_str()); if(!unwStream) { cerr << "error: Failed to open input file " << unwFilename << "\n"; exit(1); } if(!unwparStream) { cerr << "error: Failed to open input file " << unwparFilename << "\n"; exit(1); } if(!statStream) { cerr << "error: Failed to open input file " << statFilename << "\n"; exit(1); } // ******************************************************************** // // Dump the AlpGen *_unw.par file into the LH header (it's not so big). // // ******************************************************************** // string tmpString; lheStream << "<LesHouchesEvents version =\"1.0\">\n"; lheStream << "<!--\n"; lheStream << "File generated using AlpGen and converted with AlpGenToLH \n"; while(unwparStream) { getline(unwparStream,tmpString); lheStream << tmpString << "\n"; } lheStream << "\n\n\n" << "-->\n"; unwparStream.close(); // ***************************************** // // Read in all relevant info from *_unw.par. // // ***************************************** // int ihrd; // AlpGen convention hard process code. double mc,mb,mt,mw,mz,mh; // C, B, Top, W, Z & Higgs mass from *_unw.par double avgwgt,errwgt; // Average weight and its error. int unwev; // Number of unweighted events. double totlum; // Effective luminosity. vector<double> parval(200,-999.0); // AlpGen parameters. vector<string> parstr(200,"----"); // AlpGen parameter (variable) names. vector<double> alpgenParticleMasses; unwparStream.open(unwparFilename.c_str()); while(unwparStream) { getline(unwparStream,tmpString); if(tmpString.find("hard process code") != string::npos) { tmpString=tmpString.substr(0,tmpString.find("!")); tmpString=trim(tmpString); ihrd=atoi(tmpString.c_str()); } if(tmpString.find("mc,mb,mt,mw,mz,mh") != string::npos) { tmpString=trim(tmpString.substr(0,tmpString.find("!"))); mc=atof((tmpString.substr(0,tmpString.find_first_of(" "))).c_str()); alpgenParticleMasses.push_back(mc); tmpString=trim(tmpString.substr(tmpString.find_first_of(" "))); mb=atof((tmpString.substr(0,tmpString.find_first_of(" "))).c_str()); alpgenParticleMasses.push_back(mb); tmpString=trim(tmpString.substr(tmpString.find_first_of(" "))); mt=atof((tmpString.substr(0,tmpString.find_first_of(" "))).c_str()); alpgenParticleMasses.push_back(mt); tmpString=trim(tmpString.substr(tmpString.find_first_of(" "))); mw=atof((tmpString.substr(0,tmpString.find_first_of(" "))).c_str()); alpgenParticleMasses.push_back(mw); tmpString=trim(tmpString.substr(tmpString.find_first_of(" "))); mz=atof((tmpString.substr(0,tmpString.find_first_of(" "))).c_str()); alpgenParticleMasses.push_back(mz); tmpString=trim(tmpString.substr(tmpString.find_first_of(" "))); mh=atof((tmpString.substr(0,tmpString.find_first_of(" "))).c_str()); alpgenParticleMasses.push_back(mh); } if(tmpString.find("Crosssection +- error (pb)") != string::npos) { tmpString=trim(tmpString.substr(0,tmpString.find("!"))); avgwgt=atof(trim(tmpString.substr(0,tmpString.find(" "))).c_str()); errwgt=atof(trim(tmpString.substr(tmpString.find(" "))).c_str()); } if(tmpString.find("unwtd events, lum (pb-1)") != string::npos) { tmpString=trim(tmpString.substr(0,tmpString.find("!"))); unwev=atoi(trim(tmpString.substr(0,tmpString.find(" "))).c_str()); totlum=atof(trim(tmpString.substr(tmpString.find(" "))).c_str()); } } if(maxevents > unwev) { cout << "-------------------------------\n"; cout << "requested " << maxevents << " > " << unwev << " (contained in file), will use all events.\n"; maxevents = 0; } if(debugging>=4) { cout << "\nDebugging initial reading of *_unw.par:\n"; cout << "ihrd = " << ihrd << "\n"; cout << "mc,mb,mt,mw,mz,mh = " << mc << " " << mb << " " << mt << " " << mw << " " << mz << " " << mh << "\n"; cout << "Cross section +/- error = " << avgwgt << " +/- " << errwgt << "\n"; cout << "Number of unweighted events = " << unwev << "\n"; cout << "Effective luminosity = " << totlum << "\n"; } unwparStream.close(); unwparStream.open(unwparFilename.c_str()); int index; while(unwparStream) { getline(unwparStream,tmpString); if(tmpString.find("!")==string::npos|| tmpString.find("hard process code")!=string::npos|| tmpString.find("mc,mb,mt,mw,mz,mh")!=string::npos|| tmpString.find("Crosssection +- error (pb)")!=string::npos|| tmpString.find("unwtd events, lum (pb-1)")!=string::npos) continue; tmpString=trim(tmpString); if(debugging>=4) cout << "\nDebugging reading paramters in *_unw.par:\n"; if(debugging>=4) cout << "File says: " << tmpString << "\n"; index = atoi((tmpString.substr(0,tmpString.find_first_of(" "))).c_str()); tmpString=trim(tmpString.substr(tmpString.find_first_of(" "))); parval[index]=atof((tmpString.substr(0,tmpString.find_first_of(" "))).c_str()); tmpString=trim(tmpString.substr(tmpString.find_first_of("!")+1)); parstr[index]=tmpString; if(debugging>=4) cout << "We say: " << index << " " << parval[index] << " " << parstr[index] << "\n\n\n\n\n"; } unwparStream.close(); // Variables defined in parval array read from *_unw.par: // PDG codes for the beam particles. int idbmup[2]={0,0}; if(parstrToparval("ih1",&parstr,&parval)==1) idbmup[0] = 2212; else if(parstrToparval("ih1",&parstr,&parval)==-1) idbmup[0] = -2212; else idbmup[0] = 2212; if(parstrToparval("ih2",&parstr,&parval)==1) idbmup[1] = 2212; else if(parstrToparval("ih2",&parstr,&parval)==-1) idbmup[1] = -2212; else idbmup[1] = 2212; // Energies of the beam particles --- implementation implicitly assumes // these are equal! double ebmup[2]={0,0}; ebmup[0]=parstrToparval("ebeam",&parstr,&parval); ebmup[1]=ebmup[0]; // LH accord pdf info variables for <init> block: int pdfgup[2]; pdfgup[0]=-1; // Simply set to 1 as in POWHEG-BOX. pdfgup[1]=-1; int pdfsup[2]; // LHAPDF index: (note in POWHEG-BOX it is set to just -1). pdfsup[0]=ndnsToLHAPDF(int(parstrToparval("ndns",&parstr,&parval))); pdfsup[1]=pdfsup[0]; // LH accord flag defining weight scheme: // N.B. AlpGen alpsho.f UPINIT uses idwtup = 3 (this is likely better from the // point of view of combining events of diff multiplicity together in real life // i.e. in ATLAS - so we should probably use it!). int idwtup( 3); // As in POWHEG-BOX withnegweights 0 mode: unit wgts +1 only. // int idwtup(-4); // As in POWHEG-BOX withnegweights 1 mode: +/- |xsecup| wgts only. // Number of processes in the file (assume all one process as // with alpsho.f UPINIT). int nprup(1); // Cross section, it's error, the maximum weight in the file. double xsecup,xerrup,xmaxup; xsecup = avgwgt; xerrup = errwgt; xmaxup = xsecup; // Process id code (to be augmented by jet multiplicity - see just below). int lprup(ihrd*100); // We augment the process code (for the LH file only) by the number of // (light) jets, just in case we end up connecting many different files // to the shower MC in parallel (otherwise it likely won't distinguish // between X+0,1,2,3,...,n jet processes). int njets(int(parstrToparval("njets",&parstr,&parval))); lprup+=njets; // Write out some bits of info to the screen. cout << "No. of jets: " << njets << "\n"; cout << "Total xsec in pb (all processes): " << scientific << xsecup << " +/- " << xerrup << "\n\n"; // NOW write out <init> block: lheStream << "<init>\n"; lheStream << setw(9) << idbmup[0]; lheStream << setw(9) << idbmup[1]; lheStream << scientific << setprecision(5) << setw(13) << ebmup[0]; lheStream << scientific << setprecision(5) << setw(13) << ebmup[1]; lheStream << setw(7) << pdfgup[0]; lheStream << setw(7) << pdfgup[1]; if(usePowhegBoxConventions) { lheStream << setw(7) << -1; lheStream << setw(7) << -1; } else { lheStream << setw(7) << pdfsup[0]; lheStream << setw(7) << pdfsup[1]; } lheStream << setw(7) << idwtup; lheStream << setw(7) << nprup << "\n"; lheStream << scientific << setprecision(5) << setw(13) << xsecup; lheStream << scientific << setprecision(5) << setw(13) << xerrup; if(usePowhegBoxConventions) lheStream << scientific << setprecision(5) << setw(13) << 1.0; else // else put in more info (xmaxup=xsecup). lheStream << scientific << setprecision(5) << setw(13) << xmaxup; lheStream << setw(7) << lprup << "\n"; lheStream << "</init>\n"; // ************************************************* // // All done with the init section of the LH file! // // ************************************************* // // ***************************************************************** // // To write the HW++ .in file we have everything we could possibly // // want except maybe the QCD coupling and no. of loops for running. // // These are the only numbers we get / use from *.stat now. // // ***************************************************************** // double aqedup(-999),aqedStat(-999); double aqcdup(-999),aqcdStat(-999); int nloop(-999); // Fish around for the QCD and QED alphas in .stat. while(statStream) { getline(statStream,tmpString); if(tmpString.find("as(MZ)") != string::npos) { aqcdup=atof(trim(tmpString.substr(tmpString.find_last_of("=")+1, tmpString.length())).c_str()); tmpString=trim(tmpString.substr(tmpString.find_first_of("nloop="))); tmpString=trim(tmpString.substr(tmpString.find_first_of(" "))); tmpString=trim(tmpString.substr(0,tmpString.find_first_of("]"))); nloop=atoi(tmpString.c_str()); } if(tmpString.find("aem(mZ)") != string::npos) { tmpString=tmpString.substr(tmpString.find("aem(mZ)=")); tmpString=tmpString.substr(tmpString.find_first_of(" ")); tmpString=trim(tmpString); aqedup=atof(tmpString.c_str()); aqedup=1/aqedup; } } statStream.close(); aqedStat=aqedup; aqcdStat=aqcdup; // Write out a couple more bits of info to the screen. cout << "aqcdup [as(MZ)] from stat file: " << aqcdup << "\n"; cout << "nloop for as from stat file : " << nloop << "\n"; cout << "aqedup [inverse] from stat file: " << 1/aqedup << "\n"; cout << "\n"; writeHWPPinFile(prefix,ihrd,unwev,pdfsup[0], idbmup[0], idbmup[1], idwtup, aqcdup,nloop, &alpgenParticleMasses, &parval,&parstr); // *********************************************************** // // All done writing the HW++ .in file! // // *********************************************************** // // *********************************************************** // // Start reading AlpGen events and writing them as LH events: // // *********************************************************** // int nupMax(20); // First line of an event contains: double nup(0),idprup(0),xwgtup(0),scalup(0); // Subsequent lines for particle content contain: vector<double> idup,istup; vector<double> mothup1,mothup2; // WARNING: not implemented ... YET! vector<double> icolup1,icolup2; vector<double> vtimup,spinup; // WARNING: not implemented (but safe). vector<vector<double> > pup; pup.resize(5); for (int ixx = 0; ixx <= 4; ++ixx) pup[ixx].resize(nupMax); // Initialise pup matrix (not really necessary): for(unsigned int jup=0; jup < nupMax; jup++) for(unsigned int ixx=0; ixx<5; ixx++) pup[ixx][jup]=0; // Control reading AlpGen file: int iup(0); int counter(0); bool readInWholeEvent(false),beginNewEvent(true); double stringdoub; // Needed as input to doIndividualHardProcessAssignments only: int itopprc(nInt(parstrToparval("itopprc",&parstr,&parval))); while(unwStream && (eventcount < maxevents || maxevents==0)) { // So long as we haven't hit the EOF do ... if(beginNewEvent) { // Rest / set control variables: beginNewEvent=false; readInWholeEvent=false; counter=0; iup=0; // Reset variables for first line of LH event: nup=0; idprup=0; xwgtup=0; scalup=0; aqedup=0; aqcdup=0; // Reset variables for all individual particles in LH event: idup.clear() ; istup.clear(); mothup1.clear(); mothup2.clear(); icolup1.clear(); icolup2.clear(); vtimup.clear() ; spinup.clear(); for(unsigned int jup=0; jup < nupMax; jup++) for(unsigned int ixx=0; ixx<5; ixx++) pup[ixx][jup]=0; } // Read in next thing starting from last position in // the file (int/real) as a double unwStream >> stringdoub; // counter counts the number of numbers read-in for a given // event. On starting to read a new event counter will be 0. counter++; switch (counter) { case 1: if(int(stringdoub)!=0) { // if(int(stringdoub)%100==0) // cout << "Processed " << fixed << setprecision(0) // << stringdoub/unwev*100 // << " % of events ..." << "\r" << flush; } break; case 2: idprup = stringdoub; break; case 3: nup = stringdoub; break; case 4: xwgtup = stringdoub; break; case 5: scalup = stringdoub; break; // N.B. There are no aqedup / aqcdup variables from AlpGen. // Initial state particle +z direction: case 6: idup.push_back(stringdoub) ; istup.push_back(-1); break; case 7: icolup1.push_back(stringdoub); mothup1.push_back(0); break; // ATTENTION: not given by AlpGen case 8: icolup2.push_back(stringdoub); mothup2.push_back(0); break; // ATTENTION: not given by AlpGen case 9: pup[2][iup]=stringdoub ; pup[3][iup]=fabs(stringdoub) ; iup++ ; break; // Initial state particle -z direction: case 10: idup.push_back(stringdoub) ; istup.push_back(-1); break; case 11: icolup1.push_back(stringdoub); mothup1.push_back(0); break; // ATTENTION: not given by AlpGen case 12: icolup2.push_back(stringdoub); mothup2.push_back(0); break; // ATTENTION: not given by AlpGen case 13: pup[2][iup]=stringdoub; pup[3][iup]=fabs(stringdoub) ; iup++ ; break; } if(debugging<5) idprup=lprup; if(counter<14) continue; // Final state particles: if(counter==0+7*iup) idup.push_back(stringdoub); // istup gets assigned later on to just -1/+1 (I.S. / F.S.). if(counter==1+7*iup) { icolup1.push_back(stringdoub); mothup1.push_back(1.); } // ATTENTION: not given by AlpGen if(counter==2+7*iup) { icolup2.push_back(stringdoub); mothup2.push_back(2.); } // ATTENTION: not given by AlpGen if(counter==3+7*iup) pup[0][iup] = stringdoub; if(counter==4+7*iup) pup[1][iup] = stringdoub; if(counter==5+7*iup) pup[2][iup] = stringdoub; if(counter==6+7*iup) pup[4][iup] = stringdoub; if(counter==6+7*iup) istup.push_back(1.); if(counter==6+7*iup) iup+=1; if(counter==7*nup-1) readInWholeEvent = true; for(int jup = 0; jup < nup; jup++) { pup[3][jup] = sqrt( sqr(pup[4][jup]) + sqr(pup[0][jup]) + sqr(pup[1][jup]) + sqr(pup[2][jup]) ); vtimup.push_back(0.); // ATTENTION: not implemented - so taking spinup.push_back(9.); // POWHEG-BOX default values (should be v.safe). } // ***************************************************************** // // Now consider assignments specific to individual hard processes: // // ***************************************************************** // if(readInWholeEvent) doIndividualHardProcessAssignments(ihrd, &nup, &idup, &istup, &mothup1 , &mothup2, &icolup1 , &icolup2, &pup , alpgenParticleMasses, itopprc); if(readInWholeEvent) { lheStream << "<event>\n"; if(debugging>=5) { lheStream << nup << "\t" << idprup << "\t" << xwgtup << "\t" << scalup << "\t" << "0.007297352" << "\t" << "0.118\n"; } else { // Bit about signing of xwgtup here is redundant as // AlpGen only gives +ve weight events ... double signOfXwgtup = xwgtup >= 0 ? 1 : -1; xwgtup = idwtup==3 ? 1 : xsecup*signOfXwgtup; // N.B. There are no aqedup / aqcdup variables from AlpGen // events only the stat file has related information. aqedup=aqedStat; aqcdup=aqcdStat; if(usePowhegBoxConventions) aqedup=-1; lheStream << setw(7) << int(nup); lheStream << setw(7) << int(idprup); lheStream << scientific << setprecision(5) << setw(13) << xwgtup; lheStream << scientific << setprecision(5) << setw(13) << scalup; lheStream << scientific << setprecision(5) << setw(13) << aqedup; lheStream << scientific << setprecision(5) << setw(13) << aqcdup; lheStream << "\n"; } for(int jup = 0; jup < nup; jup++) { if(debugging>=5) { lheStream << idup[jup] << "\t" << istup[jup] << "\t" << mothup1[jup] << "\t" << mothup2[jup] << "\t" << icolup1[jup] << "\t" << icolup2[jup] << "\t"; lheStream << pup[0][jup] << "\t" << pup[1][jup] << "\t" << pup[2][jup] << "\t" << pup[3][jup] << "\t" << pup[4][jup] << "\t"; lheStream << "0" << "\t" << "1\n"; } else { if(icolup1[jup]!=0) icolup1[jup]+=500; if(icolup2[jup]!=0) icolup2[jup]+=500; lheStream << setw(8) << int(idup[jup]); lheStream << setw(6) << int(istup[jup]) << setw(6) << int(mothup1[jup]) << setw(6) << int(mothup2[jup]) << setw(6) << int(icolup1[jup]) << setw(6) << int(icolup2[jup]); lheStream << scientific << setprecision(9) << setw(17) << pup[0][jup]; lheStream << scientific << setprecision(9) << setw(17) << pup[1][jup]; lheStream << scientific << setprecision(9) << setw(17) << pup[2][jup]; lheStream << scientific << setprecision(9) << setw(17) << pup[3][jup]; lheStream << scientific << setprecision(9) << setw(17) << pup[4][jup]; lheStream << scientific << setprecision(5) << setw(13) << vtimup[jup]; lheStream << scientific << setprecision(3) << setw(11) << vtimup[jup]; lheStream << "\n"; } } lheStream << "</event>\n"; eventcount++; cout << "Processed " << eventcount << " events ..." << "\r" << flush; beginNewEvent=true; } } cout << "\n\n"; if( maxevents!=0 ) { cout << "All done (" << maxevents << " out of " << unwev << " events).\n"; } else { cout << "All done (" << eventcount << " events).\n"; } cout << "\n\n" << "Wrote a LH event file " << lheFilename << " and a HW++ MLM merging input file " << prefix+string(".in") << ".\n\n"; return 0; } inline double sqr(double x) { return x*x; } int ndnsToLHAPDF(int ndns) { // The information in this function is based on // subroutine PRNTSF from alplib/alppdf.f, LHAPDF's // PDFsets.index and, finally, the .stat output that // results when the relevant ndns value is entered // in the input file. string Set("no PDF set found"); double Lambda_4(0),Lambda_5_2loop(0); string Scheme("no PDF scheme"); int LHAPDFindex(-999); string tmpString(""); if(ndns==1) { Set = "CTEQ4M" ; Lambda_4 = 0.298 ; Lambda_5_2loop = 0.202 ; Scheme = "MS" ; LHAPDFindex = 19150; } else if(ndns==2) { Set = "CTEQ4L" ; Lambda_4 = 0.298 ; Lambda_5_2loop = 0.202 ; Scheme = "MS" ; LHAPDFindex = 19170; } else if(ndns==3) { Set = "CTEQ4HJ" ; Lambda_4 = 0.298 ; Lambda_5_2loop = 0.202 ; Scheme = "MS" ; LHAPDFindex = -99999; } else if(ndns==4) { Set = "CTEQ5M" ; Lambda_4 = 0.326 ; Lambda_5_2loop = 0.226 ; Scheme = "MS" ; LHAPDFindex = 19050; } else if(ndns==5) { Set = "CTEQ5L" ; Lambda_4 = 0.192 ; Lambda_5_2loop = 0.144 ; Scheme = "MS" ; LHAPDFindex = 19070; } else if(ndns==6) { Set = "CTEQ5HJ" ; Lambda_4 = 0.326 ; Lambda_5_2loop = 0.226 ; Scheme = "MS" ; LHAPDFindex = -99999; } else if(ndns==7) { Set = "CTEQ6M" ; Lambda_4 = 0.326 ; Lambda_5_2loop = 0.226 ; Scheme = "MS" ; LHAPDFindex= 10050; } else if(ndns==8) { Set = "CTEQ6L" ; Lambda_4 = 0.326 ; Lambda_5_2loop = 0.226 ; Scheme = "MS" ; LHAPDFindex = 10041; } else if(ndns==9) { Set = "CTEQ6L1" ; Lambda_4 = 0.215 ; Lambda_5_2loop = 0.167 ; Scheme = "MS" ; LHAPDFindex = 10042; } else if(ndns>=10&&ndns<=50) { Set = "CTEQ6xx" ; Lambda_4 = 0.326 ; Lambda_5_2loop = 0.226 ; Scheme = "MS" ; LHAPDFindex = 10150+(ndns-10); } else if(ndns==101) { Set = "MRST99" ; Lambda_4 = 0.321 ; Lambda_5_2loop = 0.220 ; Scheme = "MS" ; LHAPDFindex = -99999; } else if(ndns==102) { Set = "MRST01" ; Lambda_4 = 0.342 ; Lambda_5_2loop = 0.239 ; Scheme = "MS" ; LHAPDFindex = -99999; } else if(ndns==103) { Set = "MRST01" ; Lambda_4 = 0.310 ; Lambda_5_2loop = 0.214 ; Scheme = "MS" ; LHAPDFindex = -99999; } else if(ndns==104) { Set = "MRST01" ; Lambda_4 = 0.378 ; Lambda_5_2loop = 0.267 ; Scheme = "MS" ; LHAPDFindex = -99999; } else if(ndns==105) { Set = "MRST01J" ; Lambda_4 = 0.378 ; Lambda_5_2loop = 0.267 ; Scheme = "MS" ; LHAPDFindex = -99999; } else if(ndns==106) { Set = "MRST02LO" ; Lambda_4 = 0.215 ; Lambda_5_2loop = 0.167 ; Scheme = "MS" ; LHAPDFindex = -99999; } else if(ndns==201) { Set = "MSTW2008lo" ; Lambda_4 = 0.322 ; Lambda_5_2loop = 0.255 ; Scheme = "MS" ; LHAPDFindex = 21000; } else if(ndns==202) { Set = "MSTW2008nlo" ; Lambda_4 = 0.365 ; Lambda_5_2loop = 0.255 ; Scheme = "MS" ; LHAPDFindex = 21100; } else if(ndns>=203&&ndns<=242) { Set = "MSTW2008lo68cl"; Lambda_4 = 0.322 ; Lambda_5_2loop = 0.255 ; Scheme = "MS" ; LHAPDFindex = 21000+(ndns-202); } else if(ndns==243) { Set = "MRST LO*" ; Lambda_4 = 0.365 ; Lambda_5_2loop = 0.255 ; Scheme = "MS" ; LHAPDFindex = 20650; } else if(ndns==244) { Set = "MRST LO**" ; Lambda_4 = 0.280 ; Lambda_5_2loop = 0.190 ; Scheme = "MS" ; LHAPDFindex = 20651; } else if(ndns==301 ) { Set = "CTQ6.6" ; Lambda_4 = 0.326 ; Lambda_5_2loop = 0.226 ; Scheme = "MS" ; LHAPDFindex = 10550; } else if(ndns>=302&&ndns<=345) { Set = "CTQ66" ; Lambda_4 = 0.326 ; Lambda_5_2loop = 0.226 ; Scheme = "MS" ; LHAPDFindex = 10550+(ndns-301); } else if(ndns==346) { Set = "CT09MC1" ; Lambda_4 = 0.215 ; Lambda_5_2loop = 0.167 ; Scheme = "MS" ; LHAPDFindex = 10771; } else if(ndns==347) { Set = "CT09MC2" ; Lambda_4 = 0.326 ; Lambda_5_2loop = 0.226 ; Scheme = "MS" ; LHAPDFindex = 10772; } cout << "-------------------------------\n"; cout << "ndnsToLHAPDF found: \n"; cout << "PDF set = " << Set << "\n"; cout << "ndns index = " << ndns << "\n"; cout << "LHAPDF index = " << LHAPDFindex << "\n"; cout << "-------------------------------\n\n"; return LHAPDFindex; } double parstrToparval(string varName, vector<string> * parstrPtr, vector<double> * parvalPtr) { for(unsigned int index=0; index<parvalPtr->size(); index++) if(varName==parstrPtr->at(index)) return parvalPtr->at(index); return -999.0; } string trim(string theString) { int endStr = theString.find_last_not_of(" "); int beginStr = theString.find_first_not_of(" "); if(beginStr==0&&endStr==theString.length()-1) return theString; // No lead / trail spaces. theString = theString.substr(beginStr,endStr-beginStr+1); return theString; } void writeHWPPinFile(string prefix, int ihrd, int unwev, int lhapdf, int idbmup0, int idbmup1, int idwtup, double aqcdup, int nloop, vector<double> * massesPtr, vector<double> * parvalPtr, vector<string> * parstrPtr) { ofstream hwpp; hwpp.open(string(prefix+".in").c_str()); hwpp << "#############################################################\n"; hwpp << "# Create an event generator taking the default LHCGenerator #\n"; hwpp << "# as the starting point ... #\n"; hwpp << "#############################################################\n"; hwpp << "cd /Herwig/Generators\n"; hwpp << "# Copy the default LHCGenerator with its settings to a new \n"; hwpp << "# which will be the basis of the one we use for showering: \n"; hwpp << "cp LHCGenerator theGenerator\n"; hwpp << "\n"; hwpp << "#############################################################\n"; hwpp << "# Create a LH event handler (set up & assigned below) ... #\n"; hwpp << "#############################################################\n"; hwpp << "cd /Herwig/EventHandlers\n"; hwpp << "library LesHouches.so\n"; hwpp << "create ThePEG::LesHouchesEventHandler theLesHouchesHandler\n"; hwpp << "\n"; hwpp << "#############################################################\n"; hwpp << "# Create a LH reader (set up & assigned below) ... #\n"; hwpp << "#############################################################\n"; hwpp << "cd /Herwig/EventHandlers\n"; hwpp << "library BasicLesHouchesFileReader.so\n"; hwpp << "create Herwig::BasicLesHouchesFileReader theLHReader\n"; hwpp << "\n"; hwpp << "#############################################################\n"; hwpp << "# Create an AlpGenHandler (set up & assigned below) ... #\n"; hwpp << "#############################################################\n"; hwpp << "cd /Herwig/Shower\n"; hwpp << "library AlpGenHandler.so\n"; hwpp << "create Herwig::AlpGenHandler AlpGenHandler\n"; hwpp << "\n"; hwpp << "#############################################################\n"; hwpp << "# Create an LHAPDF (set up & assigned below) ... #\n"; hwpp << "#############################################################\n"; hwpp << "cd /Herwig/Partons\n"; hwpp << "create ThePEG::LHAPDF thePDFset ThePEGLHAPDF.so\n"; hwpp << "\n"; hwpp << "############################################################\n"; hwpp << "# Create a cuts object ... #\n"; hwpp << "############################################################\n"; hwpp << "cd /Herwig/EventHandlers\n"; hwpp << "create ThePEG::Cuts /Herwig/Cuts/NoCuts\n"; hwpp << "\n"; hwpp << "#############################################################\n"; hwpp << "# Setup the LH event handler ... #\n"; hwpp << "#############################################################\n"; hwpp << "cd /Herwig/EventHandlers\n"; hwpp << "insert theLesHouchesHandler:LesHouchesReaders 0 theLHReader\n"; if(idwtup==3) { hwpp << "set theLesHouchesHandler:WeightOption UnitWeight\n"; } else if(idwtup==-3) { hwpp << "set theLesHouchesHandler:WeightOption NegUnitWeight\n"; } else if(idwtup==4) { hwpp << "set theLesHouchesHandler:WeightOption VarWeight\n"; } else { hwpp << "set theLesHouchesHandler:WeightOption VarNegWeight\n"; } hwpp << "set theLesHouchesHandler:PartonExtractor " << "/Herwig/Partons/QCDExtractor\n"; hwpp << "set theLesHouchesHandler:CascadeHandler " << "/Herwig/Shower/AlpGenHandler\n"; hwpp << "set theLesHouchesHandler:HadronizationHandler " << "/Herwig/Hadronization/ClusterHadHandler\n"; hwpp << "set theLesHouchesHandler:DecayHandler " << "/Herwig/Decays/DecayHandler\n"; hwpp << "\n"; hwpp << "#############################################################\n"; hwpp << "# Set up the Evolver to veto hard emissions > scalup ... #\n"; hwpp << "#############################################################\n"; hwpp << "cd /Herwig/Shower\n"; hwpp << "# MaxTry 100 sets the maximum number of times to try \n"; hwpp << "# showering a given shower tree to 100. \n"; hwpp << "# HardVetoMode Yes to veto emissions with pT greater than pT_max.\n"; hwpp << "# HardVetoScaleSource Read means pT_max comes from hepeup.SCALUP.\n"; hwpp << "# This is what you need to set _along_with_ HardVetoMode Yes in \n"; hwpp << "# the case of Powheg external events _AND_ mc@nlo (we know this \n"; hwpp << "# from looking at the *MCinput file that mc@nlo generates). \n"; hwpp << "# MeCorrMode No turns off ME corrs. IntrinsicPtGaussian 2.2*GeV \n"; hwpp << "# is the RMS of intrinsic pT of Gaussian distribution: \n"; hwpp << "# 2*(1-Beta)*exp(-sqr(intrinsicpT/RMS))/sqr(RMS) \n"; hwpp << "set Evolver:MaxTry 100\n"; hwpp << "set Evolver:HardVetoMode Yes\n"; hwpp << "set Evolver:HardVetoScaleSource Read\n"; hwpp << "set Evolver:HardVetoReadOption PrimaryCollision\n"; hwpp << "set Evolver:MECorrMode No\n"; hwpp << "# Intrinsic pT etc should be set as part of a tune i.e. it \n"; hwpp << "# should either be left alone (default) or set by reading in \n"; hwpp << "# one of the tunes before theGenerator is created by copying \n"; hwpp << "# LHCGenerator (second line of this file). The following \n"; hwpp << "# settings were extracted from LHC-UE-EE-3-CTEQ6L1.in - In \n"; hwpp << "# light of some bad experience with MPI we prefer to set \n"; hwpp << "# these here manually rather than read try to read that .in. \n"; if(idbmup0 == 2212 && idbmup1 == -2212) { hwpp << "set /Herwig/UnderlyingEvent/KtCut:MinKT 2.26 \n"; hwpp << "set /Herwig/UnderlyingEvent/UECuts:MHatMin 4.52 \n"; hwpp << "set /Herwig/Shower/Evolver:IntrinsicPtGaussian 1.9*GeV \n"; } else { hwpp << "set /Herwig/UnderlyingEvent/KtCut:MinKT 2.752 \n"; hwpp << "set /Herwig/UnderlyingEvent/UECuts:MHatMin 5.504 \n"; hwpp << "set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.34*GeV \n"; } hwpp << "# Colour reconnection (re)settings \n"; hwpp << "set /Herwig/Hadronization/ColourReconnector:ColourReconnection Yes \n"; hwpp << "set /Herwig/Hadronization/ColourReconnector:ReconnectionProbability 0.61\n"; hwpp << "# Colour Disrupt settings \n"; hwpp << "set /Herwig/Partons/RemnantDecayer:colourDisrupt 0.75 \n"; hwpp << "# Inverse hadron radius \n"; hwpp << "set /Herwig/UnderlyingEvent/MPIHandler:InvRadius 1.35 \n"; hwpp << "set /Herwig/UnderlyingEvent/MPIHandler:softInt Yes \n"; hwpp << "set /Herwig/UnderlyingEvent/MPIHandler:twoComp Yes \n"; hwpp << "set /Herwig/UnderlyingEvent/MPIHandler:DLmode 2 \n"; hwpp << "\n"; hwpp << "#############################################################\n"; hwpp << "# Set up kinematics reconstructor (relevant only to mc@nlo) #\n"; hwpp << "#############################################################\n"; hwpp << "# Options for QTildeReconstructor - not needed for Powheg but\n"; hwpp << "# critical for mc@nlo. If using Powheg you may either leave \n"; hwpp << "# the next two settings as they are or comment them out as \n"; hwpp << "# you wish, for mc@nlo though you must leave them as they \n"; hwpp << "# are! ReconstructionOption General was the old default, it \n"; hwpp << "# ignores the colour structure for all processes - mc@nlo \n"; hwpp << "# will give you garbage unless you set this! \n"; hwpp << "# ReconstructionOption Colour is the new default - use the \n"; hwpp << "# colour structure of the process to determine the \n"; hwpp << "# reconstruction procedure. InitialInitialBoostOption \n"; hwpp << "# determines how the boost from the system before ISR to that\n"; hwpp << "# after ISR is applied. mc@nlo requires the old kinematics \n"; hwpp << "# reconstruction method: \n"; hwpp << "# InitialInitialBoostOption LongTransBoost - first apply a \n"; hwpp << "# longitudinal and then a transverse boost. Whereas the \n"; hwpp << "# default method now is InitialInitialBoostOption OneBoost - \n"; hwpp << "# apply one boost from old CMS to new CMS. Both options \n"; hwpp << "# should work with Powheg but probably it's best to use the \n"; hwpp << "# defaults in that case by simply commenting this setting. \n"; hwpp << "set KinematicsReconstructor:ReconstructionOption General \n"; hwpp << "set KinematicsReconstructor:InitialInitialBoostOption LongTransBoost\n"; hwpp << "\n"; hwpp << "#############################################################\n"; hwpp << "# Set up the AlpGenHandler ... #\n"; hwpp << "#############################################################\n"; hwpp << "cd /Herwig/Shower\n"; hwpp << "set AlpGenHandler:MPIHandler /Herwig/UnderlyingEvent/MPIHandler\n"; hwpp << "set AlpGenHandler:RemDecayer /Herwig/Partons/RemnantDecayer\n"; hwpp << "set AlpGenHandler:Evolver Evolver\n"; hwpp << "set AlphaQCD:AlphaMZ " << aqcdup << "\n"; hwpp << "set AlphaQCD:NumberOfLoops " << nloop << "\n"; hwpp << "set AlpGenHandler:ShowerAlpha AlphaQCD\n"; hwpp << "# Calorimeter granularity settings used by GetJet algorithm\n"; hwpp << "set AlpGenHandler:NoCellsInRapidity 100\n"; hwpp << "set AlpGenHandler:NoCellsInPhi 60\n"; // AlpGen hard process code. hwpp << "# AlpGen hard process code.\n"; hwpp << "set AlpGenHandler:ihrd " << ihrd << "\n"; // Number of (light) jets. int njets(int(parstrToparval("njets",parstrPtr,parvalPtr))); hwpp << "# No. of light jets in AlpGen process (the \"extra\" ones).\n"; hwpp << "set AlpGenHandler:njets " << njets << "\n"; // Mimimum jet pT use for generation. double ptjmin(parstrToparval("ptjmin",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:ptjmin " << ptjmin << "*GeV\n"; // Mimimum parton-parton R-sep used for generation. double drjmin(parstrToparval("drjmin",parstrPtr,parvalPtr)); hwpp << "# Mimimum parton-parton R-sep used for generation.\n"; hwpp << "set AlpGenHandler:drjmin " << drjmin << "\n"; // Max |eta| for partons in generation. double etajmax(parstrToparval("etajmax",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:etajmax " << etajmax << "\n"; // Also probably want these variables fed to AlpGenHandler too --- // they get set in the alpsho.f AHspar routine (note the list below // does not include some variables from AHspar because they are already // included in the above eg the PDFs are already handled so I removed // ndns and also ptjmin drjmin are written out for the AlpGenHandler above). int ickkw(int(parstrToparval("ickkw",parstrPtr,parvalPtr))); //// hwpp << "set AlpGenHandler:ickkw " << ickkw << "\n"; int ihvy(int(parstrToparval("ihvy",parstrPtr,parvalPtr))); hwpp << "# heavy flavour in WQQ,ZQQ,2Q etc (4=c, 5=b, 6=t):\n"; hwpp << "set AlpGenHandler:ihvy " << ihvy << "\n"; int ihvy2(int(parstrToparval("ihvy2",parstrPtr,parvalPtr))); //// hwpp << "set AlpGenHandler:ihvy2 " << ihvy2 << "\n"; int itopprc(nInt(parstrToparval("itopprc",parstrPtr,parvalPtr))); //// hwpp << "set AlpGenHandler:itopprc " << itopprc << "\n"; int nw(int(parstrToparval("nw",parstrPtr,parvalPtr))); if(ihrd==13) { nw=1; // N.B. nw is reassigned in this way if(itopprc>=3) nw=2; // by UPEVNT (after UPINIT). } //// hwpp << "set AlpGenHandler:nw " << nw << "\n"; int nz(int(parstrToparval("nz",parstrPtr,parvalPtr))); //// hwpp << "set AlpGenHandler:nz " << nz << "\n"; int nh(int(parstrToparval("nh",parstrPtr,parvalPtr))); hwpp << "# Number of Higgses in the AlpGen process:\n"; hwpp << "set AlpGenHandler:nh " << nh << "\n"; int nph(int(parstrToparval("nph",parstrPtr,parvalPtr))); hwpp << "# Number of photons in the AlpGen process:\n"; hwpp << "set AlpGenHandler:nph " << nph << "\n"; double ptbmin(parstrToparval("ptbmin",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:ptbmin " << ptbmin << "\n"; double ptcmin(parstrToparval("ptcmin",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:ptcmin " << ptcmin << "\n"; double ptlmin(parstrToparval("ptlmin",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:ptlmin " << ptlmin << "\n"; double metmin(parstrToparval("metmin",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:metmin " << metmin << "\n"; double ptphmin(parstrToparval("ptphmin",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:ptphmin " << ptphmin << "\n"; double etabmax(parstrToparval("etabmax",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:etabmax " << etabmax << "\n"; double etacmax(parstrToparval("etacmax",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:etacmax " << etacmax << "\n"; double etalmax(parstrToparval("etalmax",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:etalmax " << etalmax << "\n"; double etaphmax(parstrToparval("etaphmax",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:etaphmax " << etaphmax << "\n"; double drbmin(parstrToparval("drbmin",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:drbmin " << drbmin << "\n"; double drcmin(parstrToparval("drcmin",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:drcmin " << drcmin << "\n"; double drlmin(parstrToparval("drlmin",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:drlmin " << drlmin << "\n"; double drphjmin(parstrToparval("drphjmin",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:drphjmin " << drphjmin << "\n"; double drphlmin(parstrToparval("drphlmin",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:drphlmin " << drphlmin << "\n"; double drphmin(parstrToparval("drphmin",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:drphmin " << drphmin << "\n"; double mllmin(parstrToparval("mllmin",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:mllmin " << mllmin << "\n"; double mllmax(parstrToparval("mllmax",parstrPtr,parvalPtr)); //// hwpp << "set AlpGenHandler:mllmax " << mllmax << "\n"; hwpp << "\n"; hwpp << "#############################################################\n"; hwpp << "# Set up the LH reader ... #\n"; hwpp << "#############################################################\n"; hwpp << "cd /Herwig/EventHandlers\n"; hwpp << "set theLHReader:WeightWarnings false\n"; hwpp << "# Input event file name:\n"; hwpp << "set theLHReader:FileName " << prefix << ".lhe\n"; hwpp << "set theLHReader:MomentumTreatment RescaleEnergy\n"; hwpp << "# set theLHReader:IgnoreIDPRUP Yes\n"; hwpp << "set theLHReader:Cuts /Herwig/Cuts/NoCuts\n"; hwpp << "set theLHReader:OverSampling ForbidOverSampling\n"; hwpp << "\n"; hwpp << "#############################################################\n"; hwpp << "# Set up the LHAPDF ... #\n"; hwpp << "#############################################################\n"; hwpp << "cd /Herwig/Partons\n"; hwpp << "# Don't try and find PDF index out from the LH file ...\n"; hwpp << "set /Herwig/EventHandlers/theLHReader:InitPDFs false\n"; hwpp << "# Instead set them explicitly here:\n"; hwpp << "set thePDFset:PDFNumber " << lhapdf << "\n"; hwpp << "set thePDFset:RemnantHandler HadronRemnants\n"; hwpp << "set /Herwig/EventHandlers/theLHReader:PDFA thePDFset\n"; hwpp << "set /Herwig/EventHandlers/theLHReader:PDFB thePDFset\n"; hwpp << "set /Herwig/Particles/p+:PDF thePDFset\n"; hwpp << "set /Herwig/Particles/pbar-:PDF thePDFset\n"; hwpp << "# The PDF for beam particles A/B - overrides particle's own " << "PDF above\n"; hwpp << "set /Herwig/Shower/AlpGenHandler:PDFA thePDFset\n"; hwpp << "set /Herwig/Shower/AlpGenHandler:PDFB thePDFset\n"; hwpp << "set /Herwig/Shower/ShowerHandler:PDFA thePDFset\n"; hwpp << "set /Herwig/Shower/ShowerHandler:PDFB thePDFset\n"; hwpp << "\n"; hwpp << "####################################################\n"; hwpp << "# Set up the generator ... #\n"; hwpp << "####################################################\n"; hwpp << "cd /Herwig/Generators\n"; hwpp << "set theGenerator:EventHandler " << "/Herwig/EventHandlers/theLesHouchesHandler\n"; hwpp << "set theGenerator:NumberOfEvents " << unwev << "\n"; hwpp << "set theGenerator:RandomNumberGenerator:Seed 31122001\n"; hwpp << "set theGenerator:PrintEvent 10\n"; hwpp << "set theGenerator:MaxErrors 10000\n"; hwpp << "\n"; hwpp << "###################################################################\n"; hwpp << "# ReDefine particle data like it is in the AlpGen parameter file. #\n"; hwpp << "###################################################################\n"; hwpp << "\ncd /Herwig/Particles/ \n"; // 'if' statements needed here to protect against mc<ms (i.e. if AlpGen has mc=0 // for example). If this occurs then the QCD coupling can't initialise and the // HW++ read step fails (due to matching at flavour thresholds etc). if(massesPtr->at(0)>1.0) { hwpp << "set c:NominalMass " << massesPtr->at(0) << "*GeV\n"; hwpp << "set cbar:NominalMass " << massesPtr->at(0) << "*GeV\n"; } // Ditto. if(massesPtr->at(0)>4.0) { hwpp << "set b:NominalMass " << massesPtr->at(1) << "*GeV\n"; hwpp << "set bbar:NominalMass " << massesPtr->at(1) << "*GeV\n"; } hwpp << "set t:NominalMass " << massesPtr->at(2) << "*GeV\n"; hwpp << "set tbar:NominalMass " << massesPtr->at(2) << "*GeV\n"; hwpp << "set W+:NominalMass " << massesPtr->at(3) << "*GeV\n"; hwpp << "set W-:NominalMass " << massesPtr->at(3) << "*GeV\n"; hwpp << "set Z0:NominalMass " << massesPtr->at(4) << "*GeV\n"; hwpp << "set h0:NominalMass " << massesPtr->at(5) << "*GeV\n"; hwpp << "\n\n\n\n\n"; hwpp << "######################################################### \n"; hwpp << "######################################################### \n"; hwpp << "## # \n"; hwpp << "## --- USER SERVICEABLE PART BELOW HERE ONLY ! --- # \n"; hwpp << "## # \n"; hwpp << "######################################################### \n"; hwpp << "######################################################### \n"; hwpp << "\n\n\n\n\n"; hwpp << "######################################################### \n"; hwpp << "# Option to off shower / hadronization / decays / MPI. # \n"; hwpp << "######################################################### \n"; hwpp << "cd /Herwig/EventHandlers \n"; hwpp << "# set theLesHouchesHandler:CascadeHandler NULL \n"; hwpp << "set theLesHouchesHandler:HadronizationHandler NULL \n"; hwpp << "set theLesHouchesHandler:DecayHandler NULL \n"; hwpp << "# The handler for multiple parton interactions \n"; hwpp << "set /Herwig/Shower/AlpGenHandler:MPIHandler NULL \n"; hwpp << "\n\n"; hwpp << "######################################################### \n"; hwpp << "# Recommended key MLM merging parameters below - change # \n"; hwpp << "# for systematic error studies and / or at your peril. # \n"; hwpp << "######################################################### \n"; hwpp << "cd /Herwig/Shower\n"; hwpp << "# Is this the highest multiplicity ME in merging? \n"; hwpp << "# 0 = no, 1 = yes . \n"; hwpp << "set AlpGenHandler:highestMultiplicity 0 \n"; hwpp << "# Jet ET cut to apply in jet clustering in merging.\n"; double etclus(max(ptjmin+5,1.2*ptjmin)); hwpp << "set AlpGenHandler:ETClus " << etclus << "*GeV\n"; hwpp << "# Cone size used in clustering in merging.\n"; double rclus(drjmin); hwpp << "set AlpGenHandler:RClus " << rclus << "\n"; hwpp << "# Max |eta| for jets in clustering in merging.\n"; double etaclmax(etajmax); hwpp << "set AlpGenHandler:EtaClusMax " << etaclmax << "\n"; hwpp << "# Default 1.5 factor used to decide if a jet matches a parton\n"; hwpp << "# in merging: if DR(parton,jet)<rclusfactor*rclus the parton \n"; hwpp << "# and jet are said to have been matched.\n"; double rclusfactor(1.5); hwpp << "set AlpGenHandler:RClusFactor " << rclusfactor << "\n"; hwpp << "\n\n"; hwpp << "################ \n"; hwpp << "# Save the run # \n"; hwpp << "################ \n"; hwpp << "cd /Herwig/Generators \n"; hwpp << "saverun " << prefix << " theGenerator\n"; } // Now consider assignments specific to individual hard processes: void doIndividualHardProcessAssignments(int ihrd , double * nup, vector<double> * idup , vector<double> * istup, vector<double> * mothup1, vector<double> * mothup2, vector<double> * icolup1, vector<double> * icolup2, vector<vector<double> > * pup, vector<double> masses , int itopprc) { int iwch(0); // W/Z/gamma b bbar + jets ( wcjet*, ihrd=10 / wphjet*, ihrd=14 / wphqq*, // ihrd=15 ), or W/Z + jets ( wjet*, ihrd=3 / zjet*, ihrd=4 ): // In this case we add to the list of particles the single intermediate // boson (at the end of the list) appropriately, and assign the relevant // parent-daughter and colour flow indices. if (ihrd<=4||ihrd==10||ihrd==14||ihrd==15) { iwch=0; // <--- used to determine type: W/Z/gamma for(int iup=int(*nup)-2; iup<int(*nup); iup++) { (*mothup1)[iup]=*nup+1; // Assigning, to-be-added boson, as (*mothup2)[iup]=0; // the parent of each decay prod. if(ihrd!=2) iwch = iwch - (int((*idup)[iup])%2); // electron+nubar -> 11 + (-12) => -(1)+0 = -1 => W- // positron+nu -> -11+ 12 => -(-1)+0 = -1 => W+ // u dbar -> 2 -1 => 0 -(-1) = 1 => W+ // c dbar -> 4 -1 => W+ // etc. } // Now we start adding the intermediate boson entry: int iup=nInt(*nup); if(iwch>0) (*idup).push_back( 24); else if(iwch<0) (*idup).push_back(-24); else (*idup).push_back( 23); (*istup).push_back(2); (*mothup1).push_back(1); (*mothup2).push_back(2); (*pup).push_back(vector<double>(5)); double tmp = (*pup)[3][iup-2]+(*pup)[3][iup-1]; // Vector boson energy. (*pup)[3][iup] = tmp; tmp = sqr(tmp); for(unsigned int ixx=0; ixx<=2; ixx++) { (*pup)[ixx][iup] = (*pup)[ixx][iup-2]+(*pup)[ixx][iup-1]; tmp = tmp-sqr((*pup)[ixx][iup]); // Vector boson mass^2 when loop ends. } (*pup)[4][iup] = sqrt(tmp); // Set vector boson mass. (*icolup1).push_back(0); // Set 1st colour line for vector boson. (*icolup2).push_back(0); // Set 2nd colour line for vector boson. (*nup) = (*nup)+1; // Increment number of particles to be read in the event. } // nW + mZ + kH + jets ( vbjet* / ihrd=5 ): else if(ihrd==5) { unsigned int ivstart(0),ivend(0); // Identify the range of the Z and W bosons in the event (AlpGen conventions). // Note the Z's and W's are the only things that decay - Higgs's and photons // do not. vector<unsigned int> bosonIndex; for(unsigned int ixx=0; ixx<(*nup); ixx++) if(abs((*idup)[ixx])==24||(*idup)[ixx]==23) { (*istup)[ixx]=2; // Set the W/Z boson status to intermediate. bosonIndex.push_back(ixx+1); // W/Z boson index in LH event record (1->nup). } unsigned int bosonCounter(nInt(*nup)-2*bosonIndex.size()); for(unsigned int ixx=0; ixx<bosonIndex.size(); ixx++) { (*mothup1)[bosonCounter]=bosonIndex[ixx]; (*mothup2)[bosonCounter]=0; bosonCounter++; (*mothup1)[bosonCounter]=bosonIndex[ixx]; (*mothup2)[bosonCounter]=0; bosonCounter++; } } // t tbar + jets [ + photons ] ( 2Q*, ihrd=6 [ 2Qph*, ihrd=16 ] ): else if ((ihrd==6||ihrd==16)&&abs((*idup)[2])==6) { // Redefine the tops as intermediates in the event record. (*istup)[2]=2; (*istup)[3]=2; unsigned int it(3),itb(4); // Index of t & tbar in evt.record (LH index). if((*idup)[2]!=6) swap(it,itb); // Reconstruct intermediate W's from the decay products. for(unsigned int ixx=0; ixx<4;ixx++) { (*idup).push_back(0); (*istup).push_back(0); (*mothup1).push_back(0); (*mothup2).push_back(0); (*icolup1).push_back(0); (*icolup2).push_back(0); (*pup).push_back(vector<double>(5)); } for(unsigned int iw=1; iw<=2; iw++) { int iwdec(nInt(*nup)-5+2*iw); // First of decay products for this W (iw). int iwup(nInt(*nup)+iw); // Where the reco. W will go in evt.record (LH index). int ibup(iwup+2); // Where the reco. b will go in evt.record (under the Ws). int iwch(0); for(unsigned int iup=iwdec; iup<=iwdec+1; iup++) { (*mothup1)[iup-1]=iwup; (*mothup2)[iup-1]=0; iwch=iwch-int((*idup)[iup-1])%2; // iwch = charge of W boson. // electron+nubar -> 11 + (-12) = -1 => W- // d + ubar -> 1 + (-2) = -1 => W- // positron+nu -> -11+ 12 = 1 => W+ // u + dbar -> 2 + (-1) = 1 => W+ } // Make space for the b and W: // Fill in b and W LH record entries: if(iwch>0) { (*idup)[iwup-1]=24; (*idup)[ibup-1]=5; (*mothup1)[iwup-1]=it; (*mothup2)[iwup-1]=0; (*mothup1)[ibup-1]=it; (*mothup2)[ibup-1]=0; } else if (iwch<0) { (*idup)[iwup-1]=-24; (*idup)[ibup-1]=-5; (*mothup1)[iwup-1]=itb; (*mothup2)[iwup-1]=0; (*mothup1)[ibup-1]=itb; (*mothup2)[ibup-1]=0; } (*istup)[iwup-1]=2; // The W is an intermediate and the (*istup)[ibup-1]=1; // b is a final-state particle. // Now reconstruct W boson momentum double tmp=(*pup)[3][iwdec-1]+(*pup)[3][iwdec]; (*pup)[3][iwup-1]=tmp; // W energy. tmp=sqr(tmp); for(unsigned int ixx=0; ixx<=2; ixx++) { (*pup)[ixx][iwup-1] = (*pup)[ixx][iwdec-1] // W's 3-mom. + (*pup)[ixx][iwdec]; tmp=tmp-sqr((*pup)[ixx][iwup-1]); // Equals m^2 at the end of the loop. } (*pup)[4][iwup-1]=sqrt(tmp); // W mass. // Reconstruct b momentum int itmp(nInt((*mothup1)[iwup-1])); tmp=(*pup)[3][itmp-1]-(*pup)[3][iwup-1]; (*pup)[3][ibup-1]=tmp; // b energy. tmp=sqr(tmp); for(unsigned int ixx=0; ixx<=2; ixx++) { (*pup)[ixx][ibup-1] = (*pup)[ixx][nInt((*mothup1)[iwup-1])-1] // b's 3mom. - (*pup)[ixx][iwup-1]; tmp=tmp-sqr((*pup)[ixx][ibup-1]); // Equals m^2 at the end of the loop. } (*pup)[4][ibup-1]=sqrt(tmp); // b mass. (*icolup1)[iwup-1]=0; // W has no colour (*icolup2)[iwup-1]=0; // lines. (*icolup1)[ibup-1]=(*icolup1)[nInt((*mothup1)[iwup-1])-1]; // b shares top (*icolup2)[ibup-1]=(*icolup2)[nInt((*mothup1)[iwup-1])-1]; // colour line. } (*nup)+=4; } // H t tbar + jets ( QQh*, ihrd=8 ): else if (ihrd==8&&abs((*idup)[3])==6) { // Redefine the tops as intermediates in the event record. (*istup)[3]=2; (*istup)[4]=2; unsigned int it(4),itb(5); // Index of t & tbar in evt.record (LH index). if((*idup)[3]!=6) swap(it,itb); // Reconstruct intermediate W's from the decay products. for(unsigned int ixx=0; ixx<4;ixx++) { (*idup).push_back(0); (*istup).push_back(0); (*mothup1).push_back(0); (*mothup2).push_back(0); (*icolup1).push_back(0); (*icolup2).push_back(0); (*pup).push_back(vector<double>(5)); } for(unsigned int iw=1; iw<=2; iw++) { int iwdec(nInt(*nup)-5+2*iw); // First of decay products for this W (iw). int iwup(nInt(*nup)+iw); // Where the reco. W will go in evt.record (LH index). int ibup(iwup+2); // Where the reco. b will go in evt.record (under the Ws). int iwch(0); for(unsigned int iup=iwdec; iup<=iwdec+1; iup++) { (*mothup1)[iup-1]=iwup; (*mothup2)[iup-1]=0; iwch=iwch-int((*idup)[iup-1])%2; // iwch = charge of W boson. // electron+nubar -> 11 + (-12) = -1 => W- // d + ubar -> 1 + (-2) = -1 => W- // positron+nu -> -11+ 12 = 1 => W+ // u + dbar -> 2 + (-1) = 1 => W+ } if(iwch>0) { (*idup)[iwup-1]=24; (*idup)[ibup-1]=5; (*mothup1)[iwup-1]=it; (*mothup2)[iwup-1]=0; (*mothup1)[ibup-1]=it; (*mothup2)[ibup-1]=0; } else if (iwch<0) { (*idup)[iwup-1]=-24; (*idup)[ibup-1]=-5; (*mothup1)[iwup-1]=itb; (*mothup2)[iwup-1]=0; (*mothup1)[ibup-1]=itb; (*mothup2)[ibup-1]=0; } (*istup)[iwup-1]=2; // The W is an intermediate and the (*istup)[ibup-1]=1; // b is a final-state particle. // Now reconstruct W boson momentum double tmp=(*pup)[3][iwdec-1]+(*pup)[3][iwdec]; (*pup)[3][iwup-1]=tmp; // W energy. tmp=sqr(tmp); for(unsigned int ixx=0; ixx<=2; ixx++) { (*pup)[ixx][iwup-1] = (*pup)[ixx][iwdec-1] // W's 3-mom. + (*pup)[ixx][iwdec]; tmp=tmp-sqr((*pup)[ixx][iwup-1]); // Equals m^2 at the end of the loop. } (*pup)[4][iwup-1]=sqrt(tmp); // W mass. // Reconstruct b momentum tmp=(*pup)[3][nInt((*mothup1)[iwup-1])-1]-(*pup)[3][iwup-1]; (*pup)[3][ibup-1]=tmp; // b energy. tmp=sqr(tmp); for(unsigned int ixx=0; ixx<=2; ixx++) { (*pup)[ixx][ibup-1] = (*pup)[ixx][nInt((*mothup1)[iwup-1])-1] // b's 3mom. - (*pup)[ixx][iwup-1]; tmp=tmp-sqr((*pup)[ixx][ibup-1]); // Equals m^2 at the end of the loop. } (*pup)[4][ibup-1]=sqrt(tmp); // b mass. (*icolup1)[iwup-1]=0; // W has no colour (*icolup2)[iwup-1]=0; // lines. (*icolup1)[ibup-1]=(*icolup1)[nInt((*mothup1)[iwup-1])-1]; // b shares top (*icolup2)[ibup-1]=(*icolup2)[nInt((*mothup1)[iwup-1])-1]; // colour line. } (*nup)+=4; } // Single top production ( top*, ihrd=13): else if (ihrd==13) { int nw=1; if(itopprc>=3) nw=2; // Assign a mass to the incoming bottom quark, if there is one, // rescaling the energy to accommodate the mass. for(unsigned int ixx=1; ixx<=2; ixx++) { if(abs((*idup)[ixx-1])==5) { (*pup)[4][ixx-1]=masses[1]; (*pup)[3][ixx-1]=sqrt(sqr((*pup)[2][ixx-1])+sqr((*pup)[4][ixx-1])); } } // Set the top status to that of an intermediate. (*istup)[2]=2; // Get the index of the t / tbar in the evt. record (LH convention: 1->nup). unsigned int it=0; unsigned itb=0; if((*idup)[2]==6) it=3; else if((*idup)[2]==-6) itb=3; else { cout << "doIndividualHardProcessAssignments:\n" << "wrong assumption about top position.\n" << "Quitting ..."; exit(1); } // Reconstruct intermediate W's from the decay products. // iwdec is the index of the first W decay product unsigned int iwdec(nInt(*nup)-1); // LH conventions: 1->nup. if(nw==2) iwdec=nInt(*nup)-3; // The W and b will go at the end of the record. unsigned int iwup(nInt(*nup)+1); unsigned int ibup(nInt(*nup)+2); int iwch(0); for(unsigned int iup=iwdec; iup<=iwdec+1; iup++) { (*mothup1)[iup-1]=iwup; (*mothup2)[iup-1]=0; iwch=iwch-int((*idup)[iup-1])%2; // iwch = charge of W boson. // electron+nubar -> 11 + (-12) = -1 => W- // d + ubar -> 1 + (-2) = -1 => W- // positron+nu -> -11+ 12 = 1 => W+ // u + dbar -> 2 + (-1) = 1 => W+ } for(unsigned int ixx=0; ixx<2;ixx++) { (*idup).push_back(0); (*istup).push_back(0); (*mothup1).push_back(0); (*mothup2).push_back(0); (*icolup1).push_back(0); (*icolup2).push_back(0); (*pup).push_back(vector<double>(5)); } if(iwch>0) { (*idup)[iwup-1]=24; (*idup)[ibup-1]=5; (*mothup1)[iwup-1]=it; (*mothup2)[iwup-1]=0; (*mothup1)[ibup-1]=it; (*mothup2)[ibup-1]=0; } else if (iwch<0) { (*idup)[iwup-1]=-24; (*idup)[ibup-1]=-5; (*mothup1)[iwup-1]=itb; (*mothup2)[iwup-1]=0; (*mothup1)[ibup-1]=itb; (*mothup2)[ibup-1]=0; } (*istup)[iwup-1]=2; (*istup)[ibup-1]=1; // Now reconstruct W boson momentum double tmp=(*pup)[3][iwdec-1]+(*pup)[3][iwdec]; (*pup)[3][iwup-1]=tmp; // W energy. tmp=sqr(tmp); for(unsigned int ixx=0; ixx<=2; ixx++) { (*pup)[ixx][iwup-1] = (*pup)[ixx][iwdec-1] // W's 3-mom. + (*pup)[ixx][iwdec]; tmp=tmp-sqr((*pup)[ixx][iwup-1]); // Equals m^2 at the end of the loop. } (*pup)[4][iwup-1]=sqrt(tmp); // W mass. // Reconstruct b momentum tmp=(*pup)[3][nInt((*mothup1)[iwup-1])-1]-(*pup)[3][iwup-1]; (*pup)[3][ibup-1]=tmp; // b energy. tmp=sqr(tmp); for(unsigned int ixx=0; ixx<=2; ixx++) { (*pup)[ixx][ibup-1] = (*pup)[ixx][nInt((*mothup1)[iwup-1])-1] // b's 3mom. - (*pup)[ixx][iwup-1]; tmp=tmp-sqr((*pup)[ixx][ibup-1]); // Equals m^2 at the end of the loop. } (*pup)[4][ibup-1]=sqrt(tmp); // b mass. (*icolup1)[iwup-1]=0; (*icolup2)[iwup-1]=0; (*icolup1)[ibup-1]=(*icolup1)[nInt((*mothup1)[iwup-1])-1]; (*icolup2)[ibup-1]=(*icolup2)[nInt((*mothup1)[iwup-1])-1]; (*nup)=(*nup)+2; if(nw==2) { // W DECAY // iwdec is the index of the first W decay product. iwdec=nInt(*nup)-3; // iwup is the index of the W in the event record (LH conventions: 1->nup). iwup=nInt(*nup)-6; iwch=0; int iwch(0); for(unsigned int iup=iwdec; iup<=iwdec+1; iup++) { (*mothup1)[iup-1]=iwup; (*mothup2)[iup-1]=0; iwch=iwch-int((*idup)[iup-1])%2; // iwch = charge of W boson. // electron+nubar -> 11 + (-12) = -1 => W- // d + ubar -> 1 + (-2) = -1 => W- // positron+nu -> -11+ 12 = 1 => W+ // u + dbar -> 2 + (-1) = 1 => W+ } (*istup)[iwup-1]=2; (*icolup1)[iwup-1]=0; (*icolup2)[iwup-1]=0; } } return; } �����herwig++-2.6.0.orig/Contrib/Makefile.am�������������������������������������������������������������0000644�0001750�0001750�00000000367�11755214130�020414� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������EXTRA_DIST = \ AcerDetInterface \ Analysis2 \ AnomalousHVV \ DecayAnalysis \ LeptonME \ PGSInterface \ RadiativeZPrime \ TauAnalysis \ AlpGen dist-hook: rm -rf `find $(distdir) -name '.svn' -or -name 'Makefile'` all: bash make_makefiles.sh �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/PGSInterface/�����������������������������������������������������������0000755�0001750�0001750�00000000000�11756464211�020634� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/PGSInterface/LHC.in�����������������������������������������������������0000644�0001750�0001750�00000003562�11754474774�021615� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator based on LHC parameters # usage: Herwig++ read LHC.in ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 ################################################## # LHC physics parameters (override defaults here) ################################################## set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV ################################################## # Matrix Elements for hadron-hadron collisions # (by default only gamma/Z switched on) ################################################## cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEqq2gZ2ff set MEqq2gZ2ff:Process Electron cd /Herwig/Generators library HwPGSInterface.so create Herwig::ZAnalysis /Herwig/Analysis/ZAnalysis ZAnalysis.so insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/ZAnalysis ################################################## # Save run for later usage with 'Herwig++ run' ################################################## saverun LHC LHCGenerator ################################################## # uncomment this section for an example batch run # of two repeats with different parameters # # Note that a separate call of 'Herwig run' # is not required in this case ################################################## # set LHCGenerator:NumberOfEvents 10 # run LHC-full LHCGenerator # # set LHCGenerator:EventHandler:LuminosityFunction:Energy 900.0 # run LHC-initial LHCGenerator ����������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/PGSInterface/PGSInterface.f���������������������������������������������0000755�0001750�0001750�00000000506�11754474774�023276� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������c dummy routines to make linker happy subroutine pgs_user_herwig(process) print *,'pgs_user_herwig called' stop end subroutine pgs_user_pythia print *,'pgs_user_pythia called' stop end subroutine pgs_user_event print *,'pgs_user_event called' stop end ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/PGSInterface/Makefile.in������������������������������������������������0000644�0001750�0001750�00000002347�11754474774�022724� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*- Makefile -*- (for emacs) # # This Makefile is intended for compiling Herwig++ plugins # You can find plugins here: INSERT URL # # This Makefile received very little testing, # any bug reports are very welcome! # # location of include files (etc) THEPEGINCLUDE = GSLINCLUDE = HERWIGINCLUDE = FC = FCLIBS = LDFLAGS = SHARED_FLAG = HEPMCLIBS = -L/scratch/richardn/montecarlo/utilities/lib PGSPATH = /scratch/richardn/montecarlo/detector/PGS/ PGSLIB = -L$(PGSPATH)/lib -lpgslib -lstdhep -lFmcfio -lpythia -ltauola -lherwig INCLUDE = $(THEPEGINCLUDE) $(GSLINCLUDE) $(HERWIGINCLUDE) # # C++ flags # CXX = CXXFLAGS = ALLCCFILES=$(shell echo *.cc) default : HwPGSInterface.so ZAnalysis.so HwPGSInterface.so : PGSInterface.cc PGSInterface.h PGSInterface.o $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) $(SHARED_FLAG) $(LDFLAGS) \ PGSInterface.o PGSInterface.cc -o HwPGSInterface.so \ $(PGSLIB) $(HEPMCLIBS) -lHepMC -lHepMCfio $(FCLIBS) ZAnalysis.so : ZAnalysis.cc ZAnalysis.h $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) $(SHARED_FLAG) $(LDFLAGS) \ ZAnalysis.cc -o ZAnalysis.so \ $(PGSLIB) $(HEPMCLIBS) -lHepMC -lHepMCfio $(FCLIBS) PGSInterface.o: PGSInterface.f $(FC) -c -fno-second-underscore PGSInterface.f clean: rm -f *.o *.so �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/PGSInterface/mass_width_2004.mc�����������������������������������������0000644�0001750�0001750�00000074334�11754474774�024014� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������* * MASSES, WIDTHS, AND MC ID NUMBERS FROM 2004 EDITION OF RPP * * The following values were generated on 22-Jun-2004 by the Berkeley Particle * Data Group from the Review of Particle Properties database and are intended * for use in Monte Carlo programs. * * For questions regarding distribution or content of this file, contact * the Particle Data Group at pdg@lbl.gov. * * To process the images in this file: * 1) ignore documentation lines that begin with an asterisk * 2) in a FORTRAN program, process data lines with * FORMAT (BN, A1, 4I8, 1X, E15.0, 2(1X, E8.0), 1X, A21) * 3) column 1 contains either "M" or "W" indicating mass or width * 2 - 9 \ Monte Carlo particle numbers as described in the "Review of * 10 - 17 | Particle Properties". Charge states appear, as appropriate, * 18 - 25 | from left-to-right in the order -, 0, +, ++. * 26 - 33 / * 34 blank * 35 - 49 central value of the mass or width (double precision) * 50 blank * 51 - 58 positive error * 59 blank * 60 - 67 negative error * 68 blank * 69 - 89 particle name left-justified in the field and * charge states right-justified in the field. * This field is for ease of visual examination of the file and * should not be taken as a standardized presentation of * particle names. * * Particle ID(s) Value (GeV) Errors (GeV) Name Charges M 22 0.E+00 +0.0E+00 -0.0E+00 gamma 0 W 22 0.E+00 +0.0E+00 -0.0E+00 gamma 0 M 24 8.042E+01 +4.0E-02 -4.0E-02 W + W 24 2.12E+00 +4.0E-02 -4.0E-02 W + M 23 9.11876E+01 +2.1E-03 -2.1E-03 Z 0 W 23 2.4952E+00 +2.3E-03 -2.3E-03 Z 0 W 11 0.E+00 +0.0E+00 -0.0E+00 e - M 11 5.1099892E-04 +4.0E-11 -4.0E-11 e - M 13 1.05658369E-01 +9.0E-09 -9.0E-09 mu - W 13 2.99591E-19 +5.0E-24 -5.0E-24 mu - M 15 1.77699E+00 +2.9E-04 -2.6E-04 tau - W 15 2.265E-12 +9.0E-15 -9.0E-15 tau - M 12 0.E+00 +0.0E+00 -0.0E+00 nu(e) 0 W 12 0.E+00 +0.0E+00 -0.0E+00 nu(e) 0 M 14 0.E+00 +0.0E+00 -0.0E+00 nu(mu) 0 W 14 0.E+00 +0.0E+00 -0.0E+00 nu(mu) 0 M 16 0.E+00 +0.0E+00 -0.0E+00 nu(tau) 0 W 16 0.E+00 +0.0E+00 -0.0E+00 nu(tau) 0 M 6 1.74E+02 +5.0E+00 -5.0E+00 t 2/3 M 211 1.3957018E-01 +3.5E-07 -3.5E-07 pi + W 211 2.5284E-17 +5.0E-21 -5.0E-21 pi + M 111 1.349766E-01 +6.0E-07 -6.0E-07 pi 0 W 111 7.8E-09 +6.0E-10 -5.0E-10 pi 0 M 221 5.4775E-01 +1.2E-04 -1.2E-04 eta 0 W 221 1.29E-06 +7.0E-08 -7.0E-08 eta 0 M 113 213 7.758E-01 +5.0E-04 -5.0E-04 rho(770) 0,+ W 113 213 1.503E-01 +1.6E-03 -1.6E-03 rho(770) 0,+ M 223 7.8259E-01 +1.1E-04 -1.1E-04 omega(782) 0 W 223 8.49E-03 +8.0E-05 -8.0E-05 omega(782) 0 M 331 9.5778E-01 +1.4E-04 -1.4E-04 eta'(958) 0 W 331 2.02E-04 +1.6E-05 -1.6E-05 eta'(958) 0 M 9010221 9.80E-01 +1.0E-02 -1.0E-02 f(0)(980) 0 M 9000111 9000211 9.847E-01 +1.2E-03 -1.2E-03 a(0)(980) 0,+ M 333 1.019456E+00 +2.0E-05 -2.0E-05 phi(1020) 0 W 333 4.26E-03 +5.0E-05 -5.0E-05 phi(1020) 0 M 10223 1.170E+00 +2.0E-02 -2.0E-02 h(1)(1170) 0 W 10223 3.6E-01 +4.0E-02 -4.0E-02 h(1)(1170) 0 M 10113 10213 1.2295E+00 +3.2E-03 -3.2E-03 b(1)(1235) 0,+ W 10113 10213 1.42E-01 +9.0E-03 -9.0E-03 b(1)(1235) 0,+ M 20113 20213 1.23E+00 +4.0E-02 -4.0E-02 a(1)(1260) 0,+ M 225 1.2754E+00 +1.2E-03 -1.2E-03 f(2)(1270) 0 W 225 1.851E-01 +3.5E-03 -2.6E-03 f(2)(1270) 0 M 20223 1.2818E+00 +6.0E-04 -6.0E-04 f(1)(1285) 0 W 20223 2.41E-02 +1.1E-03 -1.1E-03 f(1)(1285) 0 M 100221 1.294E+00 +4.0E-03 -4.0E-03 eta(1295) 0 W 100221 5.5E-02 +5.0E-03 -5.0E-03 eta(1295) 0 M 100111 100211 1.30E+00 +1.0E-01 -1.0E-01 pi(1300) 0,+ M 115 215 1.3183E+00 +6.0E-04 -6.0E-04 a(2)(1320) 0,+ W 115 215 1.07E-01 +5.0E-03 -5.0E-03 a(2)(1320) 0,+ M 9000113 9000213 1.376E+00 +1.7E-02 -1.7E-02 pi(1)(1400) 0,+ W 9000113 9000213 3.0E-01 +4.0E-02 -4.0E-02 pi(1)(1400) 0,+ M 9020221 1.4103E+00 +2.6E-03 -2.6E-03 eta(1405) 0 W 9020221 5.1E-02 +4.0E-03 -4.0E-03 eta(1405) 0 M 20333 1.4263E+00 +9.0E-04 -9.0E-04 f(1)(1420) 0 W 20333 5.49E-02 +2.6E-03 -2.6E-03 f(1)(1420) 0 M 10111 10211 1.474E+00 +1.9E-02 -1.9E-02 a(0)(1450) 0,+ W 10111 10211 2.65E-01 +1.3E-02 -1.3E-02 a(0)(1450) 0,+ M 100113 100213 1.465E+00 +2.5E-02 -2.5E-02 rho(1450) 0,+ W 100113 100213 4.0E-01 +6.0E-02 -6.0E-02 rho(1450) 0,+ M 100331 1.476E+00 +4.0E-03 -4.0E-03 eta(1475) 0 W 100331 8.7E-02 +9.0E-03 -9.0E-03 eta(1475) 0 M 9030221 1.507E+00 +5.0E-03 -5.0E-03 f(0)(1500) 0 W 9030221 1.09E-01 +7.0E-03 -7.0E-03 f(0)(1500) 0 M 335 1.525E+00 +5.0E-03 -5.0E-03 f(2)'(1525) 0 W 335 7.3E-02 +6.0E-03 -5.0E-03 f(2)'(1525) 0 M 9010113 9010213 1.596E+00 +2.5E-02 -1.4E-02 pi(1)(1600) 0,+ W 9010113 9010213 3.12E-01 +6.4E-02 -2.4E-02 pi(1)(1600) 0,+ M 10225 1.617E+00 +5.0E-03 -5.0E-03 eta(2)(1645) 0 W 10225 1.81E-01 +1.1E-02 -1.1E-02 eta(2)(1645) 0 M 30223 1.670E+00 +3.0E-02 -3.0E-02 omega(1650) 0 W 30223 3.15E-01 +3.5E-02 -3.5E-02 omega(1650) 0 M 227 1.667E+00 +4.0E-03 -4.0E-03 omega(3)(1670) 0 W 227 1.68E-01 +1.0E-02 -1.0E-02 omega(3)(1670) 0 M 10115 10215 1.6724E+00 +3.2E-03 -3.2E-03 pi(2)(1670) 0,+ W 10115 10215 2.59E-01 +9.0E-03 -9.0E-03 pi(2)(1670) 0,+ M 100333 1.680E+00 +2.0E-02 -2.0E-02 phi(1680) 0 W 100333 1.5E-01 +5.0E-02 -5.0E-02 phi(1680) 0 M 117 217 1.6888E+00 +2.1E-03 -2.1E-03 rho(3)(1690) 0,+ W 117 217 1.61E-01 +1.0E-02 -1.0E-02 rho(3)(1690) 0,+ M 30113 30213 1.720E+00 +2.0E-02 -2.0E-02 rho(1700) 0,+ W 30113 30213 2.5E-01 +1.0E-01 -1.0E-01 rho(1700) 0,+ M 10331 1.714E+00 +5.0E-03 -5.0E-03 f(0)(1710) 0 W 10331 1.40E-01 +1.0E-02 -1.0E-02 f(0)(1710) 0 M 9010111 9010211 1.812E+00 +1.4E-02 -1.4E-02 pi(1800) 0,+ W 9010111 9010211 2.07E-01 +1.3E-02 -1.3E-02 pi(1800) 0,+ M 337 1.854E+00 +7.0E-03 -7.0E-03 phi(3)(1850) 0 W 337 8.7E-02 +2.8E-02 -2.3E-02 phi(3)(1850) 0 M 9050225 1.945E+00 +1.3E-02 -1.3E-02 f(2)(1950) 0 W 9050225 4.75E-01 +1.9E-02 -1.9E-02 f(2)(1950) 0 M 9060225 2.01E+00 +6.0E-02 -8.0E-02 f(2)(2010) 0 W 9060225 2.0E-01 +6.0E-02 -6.0E-02 f(2)(2010) 0 M 119 219 2.010E+00 +1.2E-02 -1.2E-02 a(4)(2040) 0,+ W 119 219 3.5E-01 +4.0E-02 -4.0E-02 a(4)(2040) 0,+ M 229 2.034E+00 +1.1E-02 -1.1E-02 f(4)(2050) 0 W 229 2.22E-01 +1.9E-02 -1.9E-02 f(4)(2050) 0 M 9080225 2.297E+00 +2.8E-02 -2.8E-02 f(2)(2300) 0 W 9080225 1.5E-01 +4.0E-02 -4.0E-02 f(2)(2300) 0 M 9090225 2.34E+00 +6.0E-02 -6.0E-02 f(2)(2340) 0 W 9090225 3.2E-01 +8.0E-02 -7.0E-02 f(2)(2340) 0 M 321 4.93677E-01 +1.6E-05 -1.6E-05 K + W 321 5.315E-17 +1.0E-19 -1.0E-19 K + M 311 4.97648E-01 +2.2E-05 -2.2E-05 K 0 M 310 4.97648E-01 +2.2E-05 -2.2E-05 K(S) 0 M 130 4.97648E-01 +2.2E-05 -2.2E-05 K(L) 0 W 310 7.352E-15 +5.0E-18 -5.0E-18 K(S) 0 W 130 1.272E-17 +1.0E-19 -1.0E-19 K(L) 0 M 323 8.9166E-01 +2.6E-04 -2.6E-04 K*(892) + M 313 8.9610E-01 +2.7E-04 -2.7E-04 K*(892) 0 W 323 5.08E-02 +9.0E-04 -9.0E-04 K*(892) + W 313 5.07E-02 +6.0E-04 -6.0E-04 K*(892) 0 M 10313 10323 1.272E+00 +7.0E-03 -7.0E-03 K(1)(1270) 0,+ W 10313 10323 9.0E-02 +2.0E-02 -2.0E-02 K(1)(1270) 0,+ M 20313 20323 1.402E+00 +7.0E-03 -7.0E-03 K(1)(1400) 0,+ W 20313 20323 1.74E-01 +1.3E-02 -1.3E-02 K(1)(1400) 0,+ M 100313 100323 1.414E+00 +1.5E-02 -1.5E-02 K*(1410) 0,+ W 100313 100323 2.32E-01 +2.1E-02 -2.1E-02 K*(1410) 0,+ M 10311 10321 1.412E+00 +6.0E-03 -6.0E-03 K(0)*(1430) 0,+ W 10311 10321 2.94E-01 +2.3E-02 -2.3E-02 K(0)*(1430) 0,+ M 325 1.4256E+00 +1.5E-03 -1.5E-03 K(2)*(1430) + M 315 1.4324E+00 +1.3E-03 -1.3E-03 K(2)*(1430) 0 W 325 9.85E-02 +2.7E-03 -2.7E-03 K(2)*(1430) + W 315 1.09E-01 +5.0E-03 -5.0E-03 K(2)*(1430) 0 M 30313 30323 1.717E+00 +2.7E-02 -2.7E-02 K*(1680) 0,+ W 30313 30323 3.2E-01 +1.1E-01 -1.1E-01 K*(1680) 0,+ M 10315 10325 1.773E+00 +8.0E-03 -8.0E-03 K(2)(1770) 0,+ W 10315 10325 1.86E-01 +1.4E-02 -1.4E-02 K(2)(1770) 0,+ M 317 327 1.776E+00 +7.0E-03 -7.0E-03 K(3)*(1780) 0,+ W 317 327 1.59E-01 +2.1E-02 -2.1E-02 K(3)*(1780) 0,+ M 20315 20325 1.816E+00 +1.3E-02 -1.3E-02 K(2)(1820) 0,+ W 20315 20325 2.76E-01 +3.5E-02 -3.5E-02 K(2)(1820) 0,+ M 319 329 2.045E+00 +9.0E-03 -9.0E-03 K(4)*(2045) 0,+ W 319 329 1.98E-01 +3.0E-02 -3.0E-02 K(4)*(2045) 0,+ M 411 1.8694E+00 +5.0E-04 -5.0E-04 D + W 411 6.33E-13 +4.0E-15 -4.0E-15 D + M 421 1.8646E+00 +5.0E-04 -5.0E-04 D 0 W 421 1.604E-12 +6.0E-15 -6.0E-15 D 0 M 423 2.0067E+00 +5.0E-04 -5.0E-04 D*(2007) 0 M 413 2.0100E+00 +5.0E-04 -5.0E-04 D*(2010) + W 413 9.6E-05 +2.2E-05 -2.2E-05 D*(2010) + M 10423 2.4222E+00 +1.8E-03 -1.8E-03 D(1)(2420) 0 W 10423 1.89E-02 +4.6E-03 -3.5E-03 D(1)(2420) 0 M 425 2.4589E+00 +2.0E-03 -2.0E-03 D(2)*(2460) 0 W 425 2.3E-02 +5.0E-03 -5.0E-03 D(2)*(2460) 0 M 415 2.459E+00 +4.0E-03 -4.0E-03 D(2)*(2460) + W 415 2.5E-02 +8.0E-03 -7.0E-03 D(2)*(2460) + M 431 1.9683E+00 +5.0E-04 -5.0E-04 D(s) + W 431 1.342E-12 +2.6E-14 -2.6E-14 D(s) + M 433 2.1121E+00 +7.0E-04 -7.0E-04 D(s)* + M 10431 2.3174E+00 +9.0E-04 -9.0E-04 D(sJ)(2317) + M 20433 2.4593E+00 +1.3E-03 -1.3E-03 D(sJ)(2460) + M 10433 2.5353E+00 +6.0E-04 -6.0E-04 D(s1)(2536) + M 435 2.5724E+00 +1.5E-03 -1.5E-03 D(s2)(2573) + W 435 1.5E-02 +5.0E-03 -4.0E-03 D(s2)(2573) + M 521 5.2790E+00 +5.0E-04 -5.0E-04 B + W 521 3.94E-13 +4.0E-15 -4.0E-15 B + M 511 5.2794E+00 +5.0E-04 -5.0E-04 B 0 W 511 4.29E-13 +4.0E-15 -4.0E-15 B 0 M 513 523 5.3250E+00 +6.0E-04 -6.0E-04 B* 0,+ M 531 5.3696E+00 +2.4E-03 -2.4E-03 B(s) 0 W 531 4.51E-13 +1.8E-14 -1.8E-14 B(s) 0 M 541 6.4E+00 +4.0E-01 -4.0E-01 B(c) + W 541 1.4E-12 +8.0E-13 -4.0E-13 B(c) + M 441 2.9796E+00 +1.2E-03 -1.2E-03 eta(c)(1S) 0 W 441 1.73E-02 +2.7E-03 -2.5E-03 eta(c)(1S) 0 M 443 3.096916E+00 +1.1E-05 -1.1E-05 J/psi(1S) 0 W 443 9.10E-05 +3.2E-06 -3.2E-06 J/psi(1S) 0 M 10441 3.41519E+00 +3.4E-04 -3.4E-04 chi(c0)(1P) 0 W 10441 1.01E-02 +8.0E-04 -8.0E-04 chi(c0)(1P) 0 M 20443 3.51059E+00 +1.0E-04 -1.0E-04 chi(c1)(1P) 0 W 20443 9.1E-04 +1.3E-04 -1.3E-04 chi(c1)(1P) 0 M 445 3.55626E+00 +1.1E-04 -1.1E-04 chi(c2)(1P) 0 W 445 2.11E-03 +1.6E-04 -1.6E-04 chi(c2)(1P) 0 M 100443 3.686093E+00 +3.4E-05 -3.4E-05 psi(2S) 0 W 100443 2.81E-04 +1.7E-05 -1.7E-05 psi(2S) 0 M 30443 3.7700E+00 +2.4E-03 -2.4E-03 psi(3770) 0 W 30443 2.36E-02 +2.7E-03 -2.7E-03 psi(3770) 0 M 9000443 4.040E+00 +1.0E-02 -1.0E-02 psi(4040) 0 W 9000443 5.2E-02 +1.0E-02 -1.0E-02 psi(4040) 0 M 9010443 4.159E+00 +2.0E-02 -2.0E-02 psi(4160) 0 W 9010443 7.8E-02 +2.0E-02 -2.0E-02 psi(4160) 0 M 9020443 4.415E+00 +6.0E-03 -6.0E-03 psi(4415) 0 W 9020443 4.3E-02 +1.5E-02 -1.5E-02 psi(4415) 0 M 553 9.46030E+00 +2.6E-04 -2.6E-04 Upsilon(1S) 0 W 553 5.30E-05 +1.5E-06 -1.5E-06 Upsilon(1S) 0 M 10551 9.8599E+00 +1.0E-03 -1.0E-03 chi(b0)(1P) 0 M 20553 9.8927E+00 +6.0E-04 -6.0E-04 chi(b1)(1P) 0 M 555 9.9126E+00 +5.0E-04 -5.0E-04 chi(b2)(1P) 0 M 100553 1.002326E+01 +3.1E-04 -3.1E-04 Upsilon(2S) 0 W 100553 4.3E-05 +6.0E-06 -6.0E-06 Upsilon(2S) 0 M 110551 1.02321E+01 +6.0E-04 -6.0E-04 chi(b0)(2P) 0 M 120553 1.02552E+01 +5.0E-04 -5.0E-04 chi(b1)(2P) 0 M 100555 1.02685E+01 +4.0E-04 -4.0E-04 chi(b2)(2P) 0 M 200553 1.03552E+01 +5.0E-04 -5.0E-04 Upsilon(3S) 0 W 200553 2.63E-05 +3.4E-06 -3.4E-06 Upsilon(3S) 0 M 300553 1.05800E+01 +3.5E-03 -3.5E-03 Upsilon(4S) 0 W 300553 2.0E-02 +4.0E-03 -4.0E-03 Upsilon(4S) 0 M 9000553 1.0865E+01 +8.0E-03 -8.0E-03 Upsilon(10860) 0 W 9000553 1.10E-01 +1.3E-02 -1.3E-02 Upsilon(10860) 0 M 9010553 1.1019E+01 +8.0E-03 -8.0E-03 Upsilon(11020) 0 W 9010553 7.9E-02 +1.6E-02 -1.6E-02 Upsilon(11020) 0 W 2212 0.E+00 +0.0E+00 -0.0E+00 p + M 2212 9.3827203E-01 +8.0E-08 -8.0E-08 p + M 2112 9.3956536E-01 +8.0E-08 -8.0E-08 n 0 W 2112 7.431E-28 +7.0E-31 -7.0E-31 n 0 M 12112 12212 1.440E+00 +3.0E-02 -1.0E-02 N(1440) 0,+ W 12112 12212 3.5E-01 +1.0E-01 -1.0E-01 N(1440) 0,+ M 1214 2124 1.520E+00 +1.0E-02 -5.0E-03 N(1520) 0,+ W 1214 2124 1.20E-01 +1.5E-02 -1.0E-02 N(1520) 0,+ M 22112 22212 1.535E+00 +2.0E-02 -1.5E-02 N(1535) 0,+ W 22112 22212 1.5E-01 +5.0E-02 -5.0E-02 N(1535) 0,+ M 32112 32212 1.650E+00 +3.0E-02 -1.0E-02 N(1650) 0,+ W 32112 32212 1.50E-01 +4.0E-02 -5.0E-03 N(1650) 0,+ M 2116 2216 1.675E+00 +1.0E-02 -5.0E-03 N(1675) 0,+ W 2116 2216 1.50E-01 +3.0E-02 -1.0E-02 N(1675) 0,+ M 12116 12216 1.680E+00 +1.0E-02 -5.0E-03 N(1680) 0,+ W 12116 12216 1.30E-01 +1.0E-02 -1.0E-02 N(1680) 0,+ M 21214 22124 1.70E+00 +5.0E-02 -5.0E-02 N(1700) 0,+ W 21214 22124 1.0E-01 +5.0E-02 -5.0E-02 N(1700) 0,+ M 42112 42212 1.710E+00 +3.0E-02 -3.0E-02 N(1710) 0,+ W 42112 42212 1.0E-01 +1.5E-01 -5.0E-02 N(1710) 0,+ M 31214 32124 1.720E+00 +3.0E-02 -7.0E-02 N(1720) 0,+ W 31214 32124 1.5E-01 +5.0E-02 -5.0E-02 N(1720) 0,+ M 1218 2128 2.190E+00 +1.0E-02 -9.0E-02 N(2190) 0,+ W 1218 2128 4.5E-01 +1.0E-01 -1.0E-01 N(2190) 0,+ M 1114 2114 2214 2224 1.2320E+00 +2.0E-03 -2.0E-03 Delta(1232) -,0,+,++ W 1114 2114 2214 2224 1.20E-01 +5.0E-03 -5.0E-03 Delta(1232) -,0,+,++ M 31114 32114 32214 32224 1.60E+00 +1.0E-01 -5.0E-02 Delta(1600) -,0,+,++ W 31114 32114 32214 32224 3.5E-01 +1.0E-01 -1.0E-01 Delta(1600) -,0,+,++ M 1112 1212 2122 2222 1.620E+00 +6.0E-02 -5.0E-03 Delta(1620) -,0,+,++ W 1112 1212 2122 2222 1.50E-01 +3.0E-02 -3.0E-02 Delta(1620) -,0,+,++ M 11114 12114 12214 12224 1.700E+00 +7.0E-02 -3.0E-02 Delta(1700) -,0,+,++ W 11114 12114 12214 12224 3.0E-01 +1.0E-01 -1.0E-01 Delta(1700) -,0,+,++ M 1116 1216 2126 2226 1.905E+00 +1.5E-02 -3.5E-02 Delta(1905) -,0,+,++ W 1116 1216 2126 2226 3.5E-01 +9.0E-02 -7.0E-02 Delta(1905) -,0,+,++ M 21112 21212 22122 22222 1.910E+00 +1.0E-02 -4.0E-02 Delta(1910) -,0,+,++ W 21112 21212 22122 22222 2.50E-01 +2.0E-02 -6.0E-02 Delta(1910) -,0,+,++ M 21114 22114 22214 22224 1.920E+00 +5.0E-02 -2.0E-02 Delta(1920) -,0,+,++ W 21114 22114 22214 22224 2.0E-01 +1.0E-01 -5.0E-02 Delta(1920) -,0,+,++ M 11116 11216 12126 12226 1.930E+00 +4.0E-02 -1.0E-02 Delta(1930) -,0,+,++ W 11116 11216 12126 12226 3.5E-01 +1.0E-01 -1.0E-01 Delta(1930) -,0,+,++ M 1118 2118 2218 2228 1.950E+00 +1.0E-02 -1.0E-02 Delta(1950) -,0,+,++ W 1118 2118 2218 2228 3.00E-01 +5.0E-02 -1.0E-02 Delta(1950) -,0,+,++ M 9221132 1.5392E+00 +1.6E-03 -1.6E-03 Theta(1540) + W 9221132 9.0E-04 +3.0E-04 -3.0E-04 Theta(1540) + M 3122 1.115683E+00 +6.0E-06 -6.0E-06 Lambda 0 W 3122 2.501E-15 +1.9E-17 -1.9E-17 Lambda 0 M 13122 1.407E+00 +4.0E-03 -4.0E-03 Lambda(1405) 0 W 13122 5.00E-02 +2.0E-03 -2.0E-03 Lambda(1405) 0 M 3124 1.5195E+00 +1.0E-03 -1.0E-03 Lambda(1520) 0 W 3124 1.56E-02 +1.0E-03 -1.0E-03 Lambda(1520) 0 M 23122 1.60E+00 +1.0E-01 -4.0E-02 Lambda(1600) 0 W 23122 1.5E-01 +1.0E-01 -1.0E-01 Lambda(1600) 0 M 33122 1.670E+00 +1.0E-02 -1.0E-02 Lambda(1670) 0 W 33122 3.5E-02 +1.5E-02 -1.0E-02 Lambda(1670) 0 M 13124 1.690E+00 +5.0E-03 -5.0E-03 Lambda(1690) 0 W 13124 6.0E-02 +1.0E-02 -1.0E-02 Lambda(1690) 0 M 43122 1.80E+00 +5.0E-02 -8.0E-02 Lambda(1800) 0 W 43122 3.0E-01 +1.0E-01 -1.0E-01 Lambda(1800) 0 M 53122 1.81E+00 +4.0E-02 -6.0E-02 Lambda(1810) 0 W 53122 1.5E-01 +1.0E-01 -1.0E-01 Lambda(1810) 0 M 3126 1.820E+00 +5.0E-03 -5.0E-03 Lambda(1820) 0 W 3126 8.0E-02 +1.0E-02 -1.0E-02 Lambda(1820) 0 M 13126 1.830E+00 +0.0E+00 -2.0E-02 Lambda(1830) 0 W 13126 9.5E-02 +1.5E-02 -3.5E-02 Lambda(1830) 0 M 23124 1.890E+00 +2.0E-02 -4.0E-02 Lambda(1890) 0 W 23124 1.0E-01 +1.0E-01 -4.0E-02 Lambda(1890) 0 M 3128 2.100E+00 +1.0E-02 -1.0E-02 Lambda(2100) 0 W 3128 2.0E-01 +5.0E-02 -1.0E-01 Lambda(2100) 0 M 23126 2.110E+00 +3.0E-02 -2.0E-02 Lambda(2110) 0 W 23126 2.0E-01 +5.0E-02 -5.0E-02 Lambda(2110) 0 M 3222 1.18937E+00 +7.0E-05 -7.0E-05 Sigma + W 3222 8.209E-15 +2.7E-17 -2.7E-17 Sigma + M 3212 1.192642E+00 +2.4E-05 -2.4E-05 Sigma 0 W 3212 8.9E-06 +9.0E-07 -8.0E-07 Sigma 0 M 3112 1.197449E+00 +3.0E-05 -3.0E-05 Sigma - W 3112 4.450E-15 +3.2E-17 -3.2E-17 Sigma - M 3224 1.3828E+00 +4.0E-04 -4.0E-04 Sigma(1385) + M 3214 1.3837E+00 +1.0E-03 -1.0E-03 Sigma(1385) 0 M 3114 1.3872E+00 +5.0E-04 -5.0E-04 Sigma(1385) - W 3224 3.58E-02 +8.0E-04 -8.0E-04 Sigma(1385) + W 3214 3.6E-02 +5.0E-03 -5.0E-03 Sigma(1385) 0 W 3114 3.94E-02 +2.1E-03 -2.1E-03 Sigma(1385) - M 13112 13212 13222 1.660E+00 +3.0E-02 -3.0E-02 Sigma(1660) -,0,+ W 13112 13212 13222 1.0E-01 +1.0E-01 -6.0E-02 Sigma(1660) -,0,+ M 13114 13214 13224 1.670E+00 +1.5E-02 -5.0E-03 Sigma(1670) -,0,+ W 13114 13214 13224 6.0E-02 +2.0E-02 -2.0E-02 Sigma(1670) -,0,+ M 23112 23212 23222 1.750E+00 +5.0E-02 -2.0E-02 Sigma(1750) -,0,+ W 23112 23212 23222 9.0E-02 +7.0E-02 -3.0E-02 Sigma(1750) -,0,+ M 3116 3216 3226 1.775E+00 +5.0E-03 -5.0E-03 Sigma(1775) -,0,+ W 3116 3216 3226 1.20E-01 +1.5E-02 -1.5E-02 Sigma(1775) -,0,+ M 13116 13216 13226 1.915E+00 +2.0E-02 -1.5E-02 Sigma(1915) -,0,+ W 13116 13216 13226 1.2E-01 +4.0E-02 -4.0E-02 Sigma(1915) -,0,+ M 23114 23214 23224 1.940E+00 +1.0E-02 -4.0E-02 Sigma(1940) -,0,+ W 23114 23214 23224 2.2E-01 +8.0E-02 -7.0E-02 Sigma(1940) -,0,+ M 3118 3218 3228 2.030E+00 +1.0E-02 -5.0E-03 Sigma(2030) -,0,+ W 3118 3218 3228 1.80E-01 +2.0E-02 -3.0E-02 Sigma(2030) -,0,+ M 3322 1.31483E+00 +2.0E-04 -2.0E-04 Xi 0 W 3322 2.27E-15 +7.0E-17 -7.0E-17 Xi 0 M 3312 1.32131E+00 +1.3E-04 -1.3E-04 Xi - W 3312 4.02E-15 +4.0E-17 -4.0E-17 Xi - M 3324 1.53180E+00 +3.2E-04 -3.2E-04 Xi(1530) 0 M 3314 1.5350E+00 +6.0E-04 -6.0E-04 Xi(1530) - W 3324 9.1E-03 +5.0E-04 -5.0E-04 Xi(1530) 0 W 3314 9.9E-03 +1.7E-03 -1.9E-03 Xi(1530) - M 13314 13324 1.823E+00 +5.0E-03 -5.0E-03 Xi(1820) -,0 W 13314 13324 2.4E-02 +1.5E-02 -1.0E-02 Xi(1820) -,0 M 3334 1.67245E+00 +2.9E-04 -2.9E-04 Omega - W 3334 8.02E-15 +1.1E-16 -1.1E-16 Omega - M 4122 2.2849E+00 +6.0E-04 -6.0E-04 Lambda(c) + W 4122 3.30E-12 +9.0E-14 -9.0E-14 Lambda(c) + M 14122 2.5939E+00 +8.0E-04 -8.0E-04 Lambda(c)(2593) + W 14122 3.6E-03 +2.0E-03 -1.3E-03 Lambda(c)(2593) + M 4222 2.4525E+00 +6.0E-04 -6.0E-04 Sigma(c)(2455) ++ M 4212 2.4513E+00 +7.0E-04 -7.0E-04 Sigma(c)(2455) + M 4112 2.4522E+00 +6.0E-04 -6.0E-04 Sigma(c)(2455) 0 W 4222 2.23E-03 +3.0E-04 -3.0E-04 Sigma(c)(2455) ++ W 4112 2.2E-03 +4.0E-04 -4.0E-04 Sigma(c)(2455) 0 M 4232 2.4663E+00 +1.4E-03 -1.4E-03 Xi(c) + W 4232 1.49E-12 +9.0E-14 -9.0E-14 Xi(c) + M 4132 2.4718E+00 +1.4E-03 -1.4E-03 Xi(c) 0 W 4132 5.9E-12 +6.0E-13 -6.0E-13 Xi(c) 0 M 4322 2.5741E+00 +3.3E-03 -3.3E-03 Xi(c)' + M 4312 2.5788E+00 +3.2E-03 -3.2E-03 Xi(c)' 0 M 4332 2.6975E+00 +2.6E-03 -2.6E-03 Omega(c) 0 W 4332 9.6E-12 +2.1E-12 -1.4E-12 Omega(c) 0 M 5122 5.624E+00 +9.0E-03 -9.0E-03 Lambda(b) 0 W 5122 5.36E-13 +3.7E-14 -3.3E-14 Lambda(b) 0 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/PGSInterface/PGSInterface.cc��������������������������������������������0000755�0001750�0001750�00000024171�11754474774�023442� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the PGSInterface class. // #include "PGSInterface.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Config/HepMCHelper.h" #include "HepMC/HEPEVT_Wrapper.h" using namespace Herwig; extern "C" { // initialize PGS void pgs_initialize_(); // call PGS trigger code void pgs_trigger_(); // call PGS reconstruction code void pgs_recon_(); // common block for PGS input parameters extern struct { int numarg; // number of arguments supplied to program char pgs_args[10][40]; // list of arguments (char*80) int nevpgs; // number of events to generate/read int target_lum; // target luminosity (in pb-1) int nprpgs; // number of events to print out int pgs_iseed,pgs_jseed; // seeds for pgs_ranmar int pgs_log_unit; // log file unit number char optpgs[6]; // type of run: 'PYTHIA', 'ISAJET', 'FILE', char evtlum[6]; // number of events ('events') or luminosity ('pb-1') char pgs_input_file[80]; // input file char pgs_output_file[80]; // output file char pgs_log_file[80]; // log file char pgs_param_file[80]; // detector parameter file char pgs_isajet_decay[80];// ISAJET decay table file name char pgs_isajet_cards[80];// ISAJET card file name char pgs_pythia_cards[80];// PYTHIA card file name int pgs_herwig_proc; // HERWIG process to generate char pgs_herwig_susy[80]; // HERWIG SUSY data file char pgs_alpgen_stem[80]; // ALPGEN unweighted events file stem } pgsevt_; // common block for PGS reconstructed objects const int pgsrec_nojmx = 500; extern struct { int numobj,dumobj; // number of reconstructed objects int indobj[pgsrec_nojmx]; // index to HEPEVT particle (where relevant) int typobj[pgsrec_nojmx]; // reconstructed type double pobj[pgsrec_nojmx][4]; // four vector of reconstructed object double qobj[pgsrec_nojmx]; // charge of reconstructed object double vecobj[pgsrec_nojmx][10]; // interesting object quantities int unique[pgsrec_nojmx]; // true for object if it is uniquely identified // and passes cuts in pgs_object_cuts } pgsrec_; const int pgsnetamax=600; const int pgsnphimax=600; extern struct { double ecal[pgsnetamax][pgsnphimax]; // electromagnetic energy in each tower double hcal[pgsnetamax][pgsnphimax]; // hadronic energy in each tower double met_cal; // calorimeter missing ET double phi_met_cal; // calorimeter missing ET phi double met_cor; // missing ET corrected for muons double phi_met_cor; // corrected missing ET phi } pgscal_; } void PGSInterface::persistentOutput(PersistentOStream & os) const { os << _pgs_param_file; } void PGSInterface::persistentInput(PersistentIStream & is, int) { is >> _pgs_param_file; } ClassDescription<PGSInterface> PGSInterface::initPGSInterface; // Definition of the static class description member. void PGSInterface::Init() { static ClassDocumentation<PGSInterface> documentation ("The PGSInterface class is designed to allow the PGS detector" " simulation to be used as an analysis handler in Herwig++"); } void PGSInterface::dofinish() { AnalysisHandler::dofinish(); // delete the converter from HepMC to HEPEVT delete _converter; } void PGSInterface::doinitrun() { AnalysisHandler::doinitrun(); // create the converter from HepMC to HEPEVT _converter = new HepMC::IO_HEPEVT(); // convert variables and pass to PGS // name of detector parameters file const char *temp; temp = _pgs_param_file.c_str(); for(unsigned int ix=0;ix<80;++ix) { if(temp[ix]=='\0') break; pgsevt_.pgs_param_file[ix]=temp[ix]; } // initialize PGS pgs_initialize_(); } void PGSInterface::analyze(tEventPtr event, long ieve, int loop, int state) { // check energy unit if(HepMC::Units::default_momentum_unit()!=HepMC::Units::GEV) throw Exception() << "Must be using GeV in HepMC if using PGS" << " in PGSInterface::analyze()" << Exception::runerror; // convert the event to HepMC HepMC::GenEvent * hepmc = HepMCConverter<HepMC::GenEvent>::convert(*event); HepMC::HEPEVT_Wrapper::set_max_number_entries(4000); // convert to HEPEVT _converter->write_event(hepmc); // call PGS trigger code pgs_trigger_(); // call PGS reconstruction code pgs_recon_(); // convert the unique reconstructed objects _objects.clear(); for(int ix=0;ix<pgsrec_.numobj;++ix) { if(!pgsrec_.unique[ix]) continue; _objects.push_back(ReconstructedObject()); // set the type _objects.back().type = ObjectType(pgsrec_.typobj[ix]); // set the momentum _objects.back().momentum = Lorentz5Momentum(pgsrec_.pobj[ix][0]*GeV, pgsrec_.pobj[ix][1]*GeV, pgsrec_.pobj[ix][2]*GeV, pgsrec_.pobj[ix][3]*GeV); // by default mass is calculated from momentum _objects.back().momentum.rescaleMass(); // set the charge _objects.back().charge = pgsrec_.qobj[ix]; // the electromagentic energy _objects.back().emenergy = pgsrec_.vecobj[ix][0]*GeV; // the hadronic energy _objects.back().hadenergy = pgsrec_.vecobj[ix][1]*GeV; // energy of the tracks _objects.back().trackenergy = pgsrec_.vecobj[ix][2]*GeV; // the number of tracks _objects.back().numtracks = int(pgsrec_.vecobj[ix][3]); // now stuff which differs depending on the type of object // default is no B tagging _objects.back().btagging = None; // ET from momentum is the default _objects.back().ET = _objects.back().momentum.et(); // isolation energy (zero by default) _objects.back().isolationET = Energy(); // Transverse momentum in the isolation cone (zero by default) _objects.back().isolationpT = Energy(); // Ratio of hadronic to electromagentic energy (zero by default) _objects.back().hadronicem = 0.; // Ratio of electromagnetic energy to track momentum (zero by default) _objects.back().ep = 0.; // track isolation energy (zero by default) _objects.back().trkisoEnergy = Energy(); // Number of pi0 in cone for tau (zero by default) _objects.back().npi0 = 0; // Sum of pt of pi0 not in cone for tau (zero by default) _objects.back().taupTpi0 = Energy(); // Sum of pt of tracks not in cone for tau (zero by default) _objects.back().taupTtracks = Energy(); // cluster width (zero by default) _objects.back().clusterWidth = Energy(); // pT of highest track (zero by default) _objects.back().ptHightestTrack = Energy(); // for photons if(_objects.back().type==Photon) { // PDG code _objects.back().PDGcode=ParticleID::gamma; // ET _objects.back().ET = pgsrec_.vecobj[ix][5]*GeV; // energy in the isolation cone _objects.back().isolationET = pgsrec_.vecobj[ix][6]*GeV; // pt in isolation cone _objects.back().isolationpT = pgsrec_.vecobj[ix][7]*GeV; // Ratio of hadronic to electromagentic energy _objects.back().hadronicem = pgsrec_.vecobj[ix][8]; // Ratio of electromagnetic energy to track momentum _objects.back().ep = pgsrec_.vecobj[ix][9]; } // for electrons else if(_objects.back().type==Electron) { // PDG code _objects.back().PDGcode = _objects.back().charge<0. ? ParticleID::eminus : ParticleID::eplus; // ET _objects.back().ET = pgsrec_.vecobj[ix][5]*GeV; // energy in the isolation cone _objects.back().isolationET = pgsrec_.vecobj[ix][6]*GeV; // pt in isolation cone _objects.back().isolationpT = pgsrec_.vecobj[ix][7]*GeV; // Ratio of hadronic to electromagentic energy _objects.back().hadronicem = pgsrec_.vecobj[ix][8]; // Ratio of electromagnetic energy to track momentum _objects.back().ep = pgsrec_.vecobj[ix][9]; } // for muons else if(_objects.back().type==Muon) { // PDG code _objects.back().PDGcode = _objects.back().charge<0. ? ParticleID::muminus : ParticleID::muplus; // pt in isolation cone _objects.back().isolationpT = pgsrec_.vecobj[ix][5]*GeV; // track isolation energy _objects.back().trkisoEnergy = pgsrec_.vecobj[ix][4]*GeV; } // for taus else if(_objects.back().type==Tau) { // PDG code _objects.back().PDGcode = _objects.back().charge<0. ? ParticleID::tauminus : ParticleID::tauplus; // set the mass _objects.back().momentum.setMass(pgsrec_.vecobj[ix][5]*GeV); // Number of pi0 in cone for tau _objects.back().npi0 =int(pgsrec_.vecobj[ix][8]); // Sum of pt of pi0 not in cone for tau _objects.back().taupTpi0 = pgsrec_.vecobj[ix][9]*GeV; // Sum of pt of tracks not in cone for tau _objects.back().taupTtracks = pgsrec_.vecobj[ix][7]*GeV; // cluster width _objects.back().clusterWidth = pgsrec_.vecobj[ix][4]*GeV; // pT of highest track _objects.back().ptHightestTrack = pgsrec_.vecobj[ix][6]*GeV; } // for jets else if(_objects.back().type==Jet) { // PDG code _objects.back().PDGcode = int(pgsrec_.vecobj[ix][5]); // b-tagging if(pgsrec_.vecobj[ix][6]>0.001&&pgsrec_.vecobj[ix][7]>0.001) _objects.back().btagging = Both; else if(pgsrec_.vecobj[ix][6]>0.001) _objects.back().btagging = Loose; else if(pgsrec_.vecobj[ix][7]>0.001) _objects.back().btagging = Tight; else _objects.back().btagging = None; // cluster width _objects.back().clusterWidth = pgsrec_.vecobj[ix][4]*GeV; } // heavy charged else { _objects.back().PDGcode = 0; } } // missing ET _calorimeterMET = make_pair(pgscal_.met_cal*GeV,pgscal_.phi_met_cal); _muonMET = make_pair(pgscal_.met_cor*GeV,pgscal_.phi_met_cor); // delete the HepMC event delete hepmc; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/PGSInterface/ZAnalysis.h������������������������������������������������0000644�0001750�0001750�00000010172�11754474774�022740� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_ZAnalysis_H #define HERWIG_ZAnalysis_H // // This is the declaration of the ZAnalysis class. // #include "PGSInterface.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * The ZAnalysis class is a simple example of using the interface * to PGS to look at the Z mass at the hadron and detector levels * * @see \ref ZAnalysisInterfaces "The interfaces" * defined for ZAnalysis. */ class ZAnalysis: public PGSInterface { public: /** * The default constructor. */ ZAnalysis(); /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<ZAnalysis> initZAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ZAnalysis & operator=(const ZAnalysis &); private: /** * Z mass at the hadron level */ Histogram ZmassHadron_; /** * Z mass at the detector level */ Histogram ZmassDetector_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ZAnalysis. */ template <> struct BaseClassTrait<Herwig::ZAnalysis,1> { /** Typedef of the first base class of ZAnalysis. */ typedef Herwig::PGSInterface NthBase; }; /** This template specialization informs ThePEG about the name of * the ZAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ZAnalysis> : public ClassTraitsBase<Herwig::ZAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::ZAnalysis"; } /** * The name of a file containing the dynamic library where the class * ZAnalysis is implemented. It may also include several, space-separated, * libraries if the class ZAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwPGSInterface.so ZAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_ZAnalysis_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/PGSInterface/lhc.par����������������������������������������������������0000644�0001750�0001750�00000002334�11754474774�022125� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������LHC ! parameter set name 320 ! eta cells in calorimeter 200 ! phi cells in calorimeter 0.0314159 ! eta width of calorimeter cells |eta| < 5 0.0314159 ! phi width of calorimeter cells 0.0044 ! electromagnetic calorimeter resolution const 0.024 ! electromagnetic calorimeter resolution * sqrt(E) 0.8 ! hadronic calolrimeter resolution * sqrt(E) 0.2 ! MET resolution 0.01 ! calorimeter cell edge crack fraction cone ! jet finding algorithm (cone or ktjet) 5.0 ! calorimeter trigger cluster finding seed threshold (GeV) 1.0 ! calorimeter trigger cluster finding shoulder threshold (GeV) 0.5 ! calorimeter kt cluster finder cone size (delta R) 2.0 ! outer radius of tracker (m) 4.0 ! magnetic field (T) 0.000013 ! sagitta resolution (m) 0.98 ! track finding efficiency 1.00 ! minimum track pt (GeV/c) 3.0 ! tracking eta coverage 3.0 ! e/gamma eta coverage 2.4 ! muon eta coverage 2.0 ! tau eta coverage ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/PGSInterface/ZAnalysis.cc�����������������������������������������������0000644�0001750�0001750�00000005756�11754474774�023112� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the ZAnalysis class. // #include "ZAnalysis.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/EnumParticles.h" using namespace Herwig; ZAnalysis::ZAnalysis() : ZmassHadron_(82.,102.,100), ZmassDetector_(82.,102.,100) {} void ZAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { PGSInterface::analyze(event, ieve, loop, state); // detector level // require two opposite sign same flavour leptons unsigned int neminus(0),neplus(0),nmuminus(0),nmuplus(0); Lorentz5Momentum pz; for(unsigned int ix=0;ix<reconstructedObjects().size();++ix) { if(reconstructedObjects()[ix].type==Electron) { pz += reconstructedObjects()[ix].momentum; if(reconstructedObjects()[ix].PDGcode<0) ++neplus; else ++neminus; } else if(reconstructedObjects()[ix].type==Muon) { pz += reconstructedObjects()[ix].momentum; if(reconstructedObjects()[ix].PDGcode<0) ++nmuplus; else ++nmuminus; } } // require 2 leptons if(neminus+neplus+nmuminus+nmuplus!=2) return; // require opposite sign if(neminus!=neplus||nmuminus!=nmuplus) return; double mz = pz.m()/GeV; ZmassDetector_ += mz; // hadron level StepVector::const_iterator sit =event->primaryCollision()->steps().begin(); StepVector::const_iterator stest =event->primaryCollision()->steps().end(); StepVector::const_iterator send=sit; ++send; if(send==stest) --send; ++send; if(send==stest) --send; ++send; pz = LorentzMomentum(); for(;sit!=send;++sit) { ParticleSet part=(**sit).all(); ParticleSet::const_iterator iter = part.begin(), end = part.end(); for( ;iter!=end;++iter) { if((**iter).children().size()!=2) continue; if((**iter).id()==ParticleID::Z0||(**iter).id()==ParticleID::gamma) { pz=(*iter)->momentum(); double mz = pz.mass()/GeV; ZmassHadron_ += mz; } } } } IBPtr ZAnalysis::clone() const { return new_ptr(*this); } IBPtr ZAnalysis::fullclone() const { return new_ptr(*this); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). NoPIOClassDescription<ZAnalysis> ZAnalysis::initZAnalysis; // Definition of the static class description member. void ZAnalysis::Init() { static ClassDocumentation<ZAnalysis> documentation ("There is no documentation for the ZAnalysis class"); } void ZAnalysis::dofinish() { string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); string title; using namespace HistogramOptions; ZmassHadron_ .topdrawOutput(outfile,Frame,"BLACK","Z mass"); ZmassDetector_.topdrawOutput(outfile,HistogramOptions::None,"RED"); outfile.close(); PGSInterface::dofinish(); } ������������������herwig++-2.6.0.orig/Contrib/PGSInterface/PGSInterface.h���������������������������������������������0000755�0001750�0001750�00000017130�11754474774�023301� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_PGSInterface_H #define HERWIG_PGSInterface_H // // This is the declaration of the PGSInterface class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "ThePEG/Vectors/Lorentz5Vector.h" #include "HepMC/GenEvent.h" #include "HepMC/IO_HEPEVT.h" namespace Herwig { using namespace ThePEG; /** * Enumeration for the different types of reconstructed objects */ enum ObjectType { Photon=0, /**< Photons */ Electron, /**< Electrons */ Muon, /**< Muons */ Tau, /**< Taus */ Jet, /**< Jets */ HeavyCharged /**< Heavy Charged Objects */ }; /** * Enumeration for the type of b-tag */ enum bTag { None=0, /**< No b-tag */ Loose, /**< Loose b-tag */ Tight, /**< Tight b-tag */ Both , /**< Both loose and tight b-tag */ }; /** * Struct to store the properties of the reconstructed objects */ struct ReconstructedObject { /** * Type of object */ ObjectType type; /** * Momentum of the object */ Lorentz5Momentum momentum; /** * Charge of the particle */ double charge; /** * Electromagnetic energy */ Energy emenergy; /** * Hadronic energy */ Energy hadenergy; /** * Track energy */ Energy trackenergy; /** * Number of tracks */ int numtracks; /** * PDG Code for the particle */ int PDGcode; /** * Whether it is a loose or tight b-tag */ bTag btagging; /** * Transverse energy */ Energy ET; /** * Transverse energy in the isolation cone */ Energy isolationET; /** * Transverse momentum in the isolation cone */ Energy isolationpT; /** * Ratio of hadronic to electromagentic energy */ double hadronicem; /** * Ratio of electromagnetic energy to track momentum */ double ep; /** * track isolation energy */ Energy trkisoEnergy; /** * Number of pi0 in cone for tau */ int npi0; /** * Sum of pt of pi0 not in cone for tau */ Energy taupTpi0; /** * Sum of pt of tracks not in cone for tau */ Energy taupTtracks; /** * pT of highest track in tau decays */ Energy ptHightestTrack; /** * Cluster width */ Energy clusterWidth; }; /** * Here is the documentation of the PGSInterface class. * * @see \ref PGSInterfaceInterfaces "The interfaces" * defined for PGSInterface. */ class PGSInterface: public AnalysisHandler { public: /** * The default constructor. */ inline PGSInterface() : _pgs_param_file("lhc.par") {} /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} /** * Public access to the reconstructed objects */ inline vector<ReconstructedObject> reconstructedObjects() const { return _objects; } /** * Missing transverse energy in calorimeter and azimuthal angle */ inline pair<Energy,double> missingETCalorimeter() const { return _calorimeterMET; } /** * Missing transverse energy after muon correction and azimuthal angle */ inline pair<Energy,double> missingETCorrected() const { return _muonMET; } 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<PGSInterface> initPGSInterface; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ PGSInterface & operator=(const PGSInterface &); private: /** * Converter from HepMC to HEPEVT */ HepMC::IO_HEPEVT * _converter; /** * file name for the PGS parameters */ string _pgs_param_file; /** * The reconstructed objects after PGS */ vector<ReconstructedObject> _objects; /** * missing ET measured in calorimeter */ pair <Energy,double> _calorimeterMET; /** * missing ET aftrer muon correction */ pair <Energy,double> _muonMET; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of PGSInterface. */ template <> struct BaseClassTrait<Herwig::PGSInterface,1> { /** Typedef of the first base class of PGSInterface. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the PGSInterface class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::PGSInterface> : public ClassTraitsBase<Herwig::PGSInterface> { /** Return a platform-independent class name */ static string className() { return "Herwig::PGSInterface"; } /** * The name of a file containing the dynamic library where the class * PGSInterface is implemented. It may also include several, space-separated, * libraries if the class PGSInterface depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwPGSInterface.so"; } }; /** @endcond */ } #endif /* HERWIG_PGSInterface_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/LeptonME/���������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464211�020045� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/LeptonME/MEee2Z.h�������������������������������������������������������0000644�0001750�0001750�00000015677�11754474774�021302� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEee2Z.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEee2Z_H #define HERWIG_MEee2Z_H // // This is the declaration of the <!id>MEee2Z<!!id> class. // #include "ThePEG/MatrixElement/ME2to2Base.h" #include "ThePEG/MatrixElement/MEBase.h" #include "Herwig++/Models/RSModel/RSModel.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Utilities/Rebinder.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" namespace Herwig { using namespace ThePEG; using Helicity::SpinorWaveFunction; using Helicity::SpinorBarWaveFunction; using Helicity::VectorWaveFunction; /** * The MEee2Z class implements the matrix element for \f$e^+e^-\to Z\f$ for * the testing of spin correlations */ class MEee2Z: public MEBase { public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); /** * The number of internal degreed of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given 'nDim()' uniform * random numbers in the interval ]0,1[. To help the phase space * generator, the 'dSigHatDR()' should be a smooth function of these * numbers, although this is not strictly necessary. Return * false if the chosen points failed the kinematical cuts. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(). Uses * me(). */ virtual CrossSection dSigHatDR() 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The matrix element * @param fin The spinors for the incoming fermion * @param ain The spinors for the incoming antifermion * @param vout The polarization vectors for the outgoing Z * @param me The spin averaged matrix element */ ProductionMatrixElement HelicityME(vector<SpinorWaveFunction> fin, vector<SpinorBarWaveFunction> ain, vector<VectorWaveFunction> vout,double& me) const; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEee2Z> initMEee2Z; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEee2Z & operator=(const MEee2Z &); private: /** * Pointer to the Z vertex */ AbstractFFVVertexPtr _theFFZVertex; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEee2Z. */ template <> struct BaseClassTrait<Herwig::MEee2Z,1> { /** Typedef of the first base class of MEee2Z. */ typedef MEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEee2Z class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEee2Z> : public ClassTraitsBase<Herwig::MEee2Z> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEee2Z"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the MEee2Z class and any other class on which it depends * (except the base class). */ static string library() { return "LeptonME.so"; } }; /** @endcond */ } #endif /* HERWIG_MEee2Z_H */ �����������������������������������������������������������������herwig++-2.6.0.orig/Contrib/LeptonME/Makefile.in����������������������������������������������������0000644�0001750�0001750�00000001412�11754474774�022125� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*- Makefile -*- (for emacs) # # This Makefile is intended for compiling Herwig++ plugins # You can find plugins here: INSERT URL # # This Makefile received very little testing, # any bug reports are very welcome! # # location of include files THEPEGINCLUDE= HERWIGINCLUDE= GSLINCLUDE= LDFLAGS = SHARED_FLAG = INCLUDE = $(THEPEGINCLUDE) $(HERWIGINCLUDE) $(GSLINCLUDE) # # C++ flags # CXX = CXXFLAGS = ALLCCFILES=$(shell echo *.cc) default : LeptonME.so %.o : %.cc %.h $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) -c -shared $< -o $@ LeptonME.so: MEee2Higgs2SM.o MEee2Z.o $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) \ MEee2Higgs2SM.o MEee2VectorMeson.o MEee2Z.o $(SHARED_FLAG) $(LDFLAGS) -o LeptonME.so clean: rm -f $(ALLCCFILES:.cc=.o) LeptonME.so ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/LeptonME/MEee2Higgs2SM.h������������������������������������������������0000644�0001750�0001750�00000016443�11754474774�022444� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEee2Higgs2SM.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEee2Higgs2SM_H #define HERWIG_MEee2Higgs2SM_H // // This is the declaration of the MEee2Higgs2SM class. // #include "ThePEG/MatrixElement/ME2to2Base.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" namespace Herwig { using namespace ThePEG; /** * The MEee2Higgs2SM class implements the production of an \f$s\f$-channel * Higgs in \f$e^+e^-\f$ collisions in order to allow easy tests of Higgs * decays. It should not be used for physics studies. * * @see \ref MEee2Higgs2SMInterfaces "The interfaces" * defined for MEee2Higgs2SM. */ class MEee2Higgs2SM: public ME2to2Base { public: /** * The default constructor. */ inline MEee2Higgs2SM() : _allowed(0) {} /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * set up the spin correlations */ virtual void constructVertex(tSubProPtr sub); //@} 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans) ; /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} private: /** * The matrix element * @param fin The incoming spinor wavefunction * @param ain The incoming spinorbar wavefunction * @param fout The outgoing spinor bar wavefunction * @param aout The outgoing spinor wavefunction * @param me The spin averaged matrix element */ ProductionMatrixElement HelicityME(vector<SpinorWaveFunction> fin, vector<SpinorBarWaveFunction> ain, vector<SpinorBarWaveFunction> fout, vector<SpinorWaveFunction> aout,double& me) const; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEee2Higgs2SM> initMEee2Higgs2SM; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEee2Higgs2SM & operator=(const MEee2Higgs2SM &); private: /** * Pointer to the Higgs vertex */ AbstractFFSVertexPtr _theFFHVertex; /** * Allowed outgoing particles */ int _allowed; /** * Pointer to the Higgs ParticleData object */ PDPtr _h0; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEee2Higgs2SM. */ template <> struct BaseClassTrait<Herwig::MEee2Higgs2SM,1> { /** Typedef of the first base class of MEee2Higgs2SM. */ typedef ME2to2Base NthBase; }; /** This template specialization informs ThePEG about the name of * the MEee2Higgs2SM class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEee2Higgs2SM> : public ClassTraitsBase<Herwig::MEee2Higgs2SM> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEee2Higgs2SM"; } /** * The name of a file containing the dynamic library where the class * MEee2Higgs2SM is implemented. It may also include several, space-separated, * libraries if the class MEee2Higgs2SM depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "LeptonME.so"; } }; /** @endcond */ } #endif /* HERWIG_MEee2Higgs2SM_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/LeptonME/MEee2Z.cc������������������������������������������������������0000644�0001750�0001750�00000013664�11754474774�021432� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEee2Z.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEee2Z class. // #include "MEee2Z.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Helicity/FermionSpinInfo.h" #include "ThePEG/Helicity/VectorSpinInfo.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Cuts/Cuts.h" using namespace Herwig; using namespace ThePEG; using namespace ThePEG::Helicity; void MEee2Z::getDiagrams() const { tcPDPtr Z0 = getParticleData(ParticleID::Z0); tcPDPtr em = getParticleData(ParticleID::eminus); tcPDPtr ep = getParticleData(ParticleID::eplus); add(new_ptr((Tree2toNDiagram(2), em, ep, 1, Z0,-1))); } Energy2 MEee2Z::scale() const { return sHat(); } int MEee2Z::nDim() const { return 1; } bool MEee2Z::generateKinematics(const double *) { // Here you can use nDim() random numbers in the vector provided // to generate the internal kinematics. Note that sHat() has // already been given from the outside. meMomenta()[2]=meMomenta()[0]+meMomenta()[1]; meMomenta()[2].rescaleMass(); jacobian(1.0); // check passes all the cuts vector<LorentzMomentum> out(1,meMomenta()[2]); tcPDVector tout(1,mePartonData()[2]); // return true if passes the cuts return lastCuts().passCuts(tout, out, mePartonData()[0], mePartonData()[1]); } double MEee2Z::me2() const { double aver=0.; // the arrays for the wavefunction to be passed to the matrix element vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> vin; SpinorWaveFunction fwave(meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction awave(meMomenta()[1],mePartonData()[1],incoming); for(unsigned int ihel=0;ihel<2;++ihel) { fwave.reset(ihel);fin.push_back(fwave); awave.reset(ihel);ain.push_back(awave); } VectorWaveFunction vwave(meMomenta()[2],mePartonData()[2],outgoing); for(unsigned int ihel=0;ihel<3;++ihel) { vwave.reset(ihel); vin.push_back(vwave); } ProductionMatrixElement temp=HelicityME(fin,ain,vin,aver); // add the Breit-Wigner factors Energy width=mePartonData()[2]->width(); Energy mass =mePartonData()[2]->mass(); InvEnergy2 fact = width*mass/(sqr(sHat()-mass*mass)+sqr(mass*width)); return aver*fact*sHat(); } CrossSection MEee2Z::dSigHatDR() const { return (me2()*jacobian()/sHat())*sqr(hbarc); } unsigned int MEee2Z::orderInAlphaS() const { return 0; } unsigned int MEee2Z::orderInAlphaEW() const { return 1; } Selector<MEBase::DiagramIndex> MEee2Z::diagrams(const DiagramVector &) const { Selector<DiagramIndex> sel; sel.insert(1.0, 0); return sel; } Selector<const ColourLines *> MEee2Z::colourGeometries(tcDiagPtr) const { static const ColourLines neutral ( " " ); Selector<const ColourLines *> sel; sel.insert(1.,&neutral); return sel; } void MEee2Z::persistentOutput(PersistentOStream & os) const { os << _theFFZVertex; } void MEee2Z::persistentInput(PersistentIStream & is, int) { is >> _theFFZVertex; } ClassDescription<MEee2Z> MEee2Z::initMEee2Z; // Definition of the static class description member. void MEee2Z::Init() { static ClassDocumentation<MEee2Z> documentation ("The MEee2Z class implements the e+e- -> Z as a 1->2 process for testing" " of spin correlations etc.."); } void MEee2Z::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first);hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); if(hard[0]->id()<hard[1]->id()) swap(hard[0],hard[1]); vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> vin; SpinorWaveFunction( fin,hard[0],incoming,false,true); SpinorBarWaveFunction(ain,hard[1],incoming,false,true); VectorWaveFunction (vin,hard[2],outgoing,true,false,true); double dummy; ProductionMatrixElement prodme=HelicityME(fin,ain,vin,dummy); // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(prodme); // set the pointers to and from the vertex for(unsigned int ix=0;ix<3;++ix) { (hard[ix]->spinInfo())-> productionVertex(hardvertex); } } // the helicity amplitude matrix element ProductionMatrixElement MEee2Z::HelicityME(vector<SpinorWaveFunction> fin, vector<SpinorBarWaveFunction> ain, vector<VectorWaveFunction> vout, double & aver) const { ProductionMatrixElement output(PDT::Spin1Half,PDT::Spin1Half,PDT::Spin1); Complex product; // sum over helicities to get the matrix element unsigned int inhel1,inhel2,outhel1; double me(0.); LorentzPolarizationVector vec; Complex ii(0.,1.); for(inhel1=0;inhel1<2;++inhel1) { for(inhel2=0;inhel2<2;++inhel2) { for(outhel1=0;outhel1<3;++outhel1) { product=_theFFZVertex->evaluate(sHat(),fin[inhel1],ain[inhel2], vout[outhel1]); output(inhel1,inhel2,outhel1)=product; me+=real(product*conj(product)); } } } aver=me/4.; return output; } void MEee2Z::doinit() { MEBase::doinit(); tcHwSMPtr hwsm=ThePEG::dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(hwsm) { _theFFZVertex = hwsm->vertexFFZ();} else {throw InitException();} } ����������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/LeptonME/MEee2Higgs2SM.cc�����������������������������������������������0000644�0001750�0001750�00000020733�11754474774�022577� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEee2Higgs2SM.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEee2Higgs2SM class. // #include "MEee2Higgs2SM.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "ThePEG/PDT/EnumParticles.h" using namespace Herwig; void MEee2Higgs2SM::doinit() { ME2to2Base::doinit(); _h0 = getParticleData(ThePEG::ParticleID::h0); tcHwSMPtr hwsm=ThePEG::dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(hwsm) { _theFFHVertex = hwsm->vertexFFH(); } else { throw InitException() << "Must have Herwig++ StandardModel object in " << "MEee2Higgs2SM::doinit()" << Exception::runerror; } } Energy2 MEee2Higgs2SM::scale() const { return sHat(); } unsigned int MEee2Higgs2SM::orderInAlphaS() const { return 0; } unsigned int MEee2Higgs2SM::orderInAlphaEW() const { return 2; } void MEee2Higgs2SM::getDiagrams() const { // specific the diagrams tcPDPtr ep = getParticleData(ParticleID::eplus ); tcPDPtr em = getParticleData(ParticleID::eminus); // outgoing quarks for(int i=1;i<=5;++i) { if(_allowed==0 || _allowed==1 || _allowed==i+2) { tcPDPtr lm = getParticleData(i); tcPDPtr lp = lm->CC(); add(new_ptr((Tree2toNDiagram(2), em, ep, 1, _h0, 3, lm, 3, lp, -1))); } } // outgoing leptons for( int i =11;i<=16;i+=2) { if(_allowed==0 || _allowed==2 || _allowed==(i+7)/2) { tcPDPtr lm = getParticleData(i); tcPDPtr lp = lm->CC(); add(new_ptr((Tree2toNDiagram(2), em, ep, 1, _h0, 3, lm, 3, lp, -1))); } } } double MEee2Higgs2SM::me2() const { double aver=0.; // get the order right int ielectron(0),ipositron(1),ilp(2),ilm(3); if(mePartonData()[0]->id()!=11) swap(ielectron,ipositron); if(mePartonData()[2]->id()>mePartonData()[3]->id()) swap(ilp,ilm); // the arrays for the wavefunction to be passed to the matrix element vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; for(unsigned int ihel=0;ihel<2;++ihel) { fin .push_back(SpinorWaveFunction(meMomenta()[ielectron], mePartonData()[ielectron],ihel,incoming)); ain .push_back(SpinorBarWaveFunction(meMomenta()[ipositron], mePartonData()[ipositron],ihel,incoming)); fout.push_back(SpinorBarWaveFunction(meMomenta()[ilm], mePartonData()[ilm],ihel,outgoing)); aout.push_back(SpinorWaveFunction(meMomenta()[ilp], mePartonData()[ilp],ihel,outgoing)); } HelicityME(fin,ain,fout,aout,aver); if(mePartonData()[ilm]->id()<=6) aver*=3.; return aver; } // the helicity amplitude matrix element ProductionMatrixElement MEee2Higgs2SM::HelicityME(vector<SpinorWaveFunction> fin, vector<SpinorBarWaveFunction> ain, vector<SpinorBarWaveFunction> fout, vector<SpinorWaveFunction> aout, double & aver) const { // the particles should be in the order // for the incoming // 0 incoming fermion (u spinor) // 1 incoming antifermion (vbar spinor) // for the outgoing // 0 outgoing fermion (ubar spinor) // 1 outgoing antifermion (v spinor) // me to be returned ProductionMatrixElement output(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); // wavefunctions for the intermediate particles ScalarWaveFunction interh; // temporary storage of the different diagrams Complex diag; aver=0.; // sum over helicities to get the matrix element unsigned int inhel1,inhel2,outhel1,outhel2; for(inhel1=0;inhel1<2;++inhel1) { for(inhel2=0;inhel2<2;++inhel2) { interh = _theFFHVertex->evaluate(sHat(),1,_h0,fin[inhel1],ain[inhel2]); for(outhel1=0;outhel1<2;++outhel1) { for(outhel2=0;outhel2<2;++outhel2) { diag = _theFFHVertex->evaluate(sHat(),aout[outhel2], fout[outhel1],interh); output(inhel1,inhel2,outhel1,outhel2)=diag; aver +=real(diag*conj(diag)); } } } } return output; } Selector<MEBase::DiagramIndex> MEee2Higgs2SM::diagrams(const DiagramVector &) const { Selector<DiagramIndex> sel;sel.insert(1.0, 0); return sel; } Selector<const ColourLines *> MEee2Higgs2SM::colourGeometries(tcDiagPtr diag) const { static ColourLines neutral ( " " ); static ColourLines quarks ( "-5 4"); Selector<const ColourLines *> sel; int id = abs((diag->partons()[2])->id()); if (id<=6 ) sel.insert(1.0, &quarks); else sel.insert(1.0, &neutral); return sel; } void MEee2Higgs2SM::persistentOutput(PersistentOStream & os) const { os << _theFFHVertex << _h0 << _allowed; } void MEee2Higgs2SM::persistentInput(PersistentIStream & is, int) { is >> _theFFHVertex >> _h0 >>_allowed; } ClassDescription<MEee2Higgs2SM> MEee2Higgs2SM::initMEee2Higgs2SM; // Definition of the static class description member. void MEee2Higgs2SM::Init() { static ClassDocumentation<MEee2Higgs2SM> documentation ("The MEee2Higgs2SM class implements the matrix element for e+e- to" " SM particle via Higgs exchnage and is designed to be a process to test" " things involving scalar particles. "); static Switch<MEee2Higgs2SM,int> interfaceallowed ("Allowed", "Allowed outgoing particles", &MEee2Higgs2SM::_allowed, 0, false, false); static SwitchOption interfaceallowedAll (interfaceallowed, "All", "All SM particles allowed", 0); static SwitchOption interfaceallowed1 (interfaceallowed, "Quarks", "Only the quarks allowed", 1); static SwitchOption interfaceallowed2 (interfaceallowed, "Leptons", "Only the leptons allowed", 2); static SwitchOption interfacealloweddown (interfaceallowed, "Down", "Only d dbar allowed", 3); static SwitchOption interfaceallowedup (interfaceallowed, "Up", "Only u ubar allowed", 4); static SwitchOption interfaceallowedstrange (interfaceallowed, "Strange", "Only s sbar allowed", 5); static SwitchOption interfaceallowedcharm (interfaceallowed, "Charm", "Only c cbar allowed", 6); static SwitchOption interfaceallowedbottom (interfaceallowed, "Bottom", "Only b bbar allowed", 7); static SwitchOption interfaceallowedtop (interfaceallowed, "Top", "Only t tbar allowed", 8); static SwitchOption interfaceallowedelectron (interfaceallowed, "Electron", "Only e+e- allowed", 9); static SwitchOption interfaceallowedMuon (interfaceallowed, "Muon", "Only mu+mu- allowed", 10); static SwitchOption interfaceallowedTau (interfaceallowed, "Tau", "Only tau+tau- allowed", 11); } void MEee2Higgs2SM::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first);hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]);hard.push_back(sub->outgoing()[1]); if(hard[0]->id()<hard[1]->id()) swap(hard[0],hard[1]); if(hard[2]->id()<hard[3]->id()) swap(hard[2],hard[3]); vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; SpinorWaveFunction( fin ,hard[0],incoming,false,true); SpinorBarWaveFunction(ain ,hard[1],incoming,false,true); SpinorBarWaveFunction(fout,hard[2],outgoing,true ,true); SpinorWaveFunction( aout,hard[3],outgoing,true ,true); // calculate the matrix element double me; ProductionMatrixElement prodme=HelicityME(fin,ain,fout,aout,me); // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(prodme); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) { (hard[ix]->spinInfo())->productionVertex(hardvertex); } } void MEee2Higgs2SM::rebind(const TranslationMap & trans) { // dummy = trans.translate(dummy); _theFFHVertex = trans.translate(_theFFHVertex); _h0 = trans.translate(_h0); ME2to2Base::rebind(trans); } IVector MEee2Higgs2SM::getReferences() { IVector ret = ME2to2Base::getReferences(); ret.push_back(_theFFHVertex); ret.push_back(_h0); return ret; } �������������������������������������herwig++-2.6.0.orig/Contrib/TauAnalysis/������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464211�020617� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/TauAnalysis/TauTo3MesonAnalysis.cc��������������������������������������0000644�0001750�0001750�00000053455�11754474774�025004� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the TauTo3MesonAnalysis class. // #include "TauTo3MesonAnalysis.h" #include "Herwig++/Utilities/Histogram.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace Herwig; void TauTo3MesonAnalysis::doinitrun() { AnalysisHandler::doinitrun(); for(unsigned int ix=0;ix<4;++ix) { _m3pippimpim .push_back(new_ptr(Histogram(0.,1.8,200))); _m3pi0pi0pim .push_back(new_ptr(Histogram(0.,1.8,200))); _m3kmpimkp .push_back(new_ptr(Histogram(0.,1.8,200))); _m3k0pimk0 .push_back(new_ptr(Histogram(0.,1.8,200))); _m3kmpi0k0 .push_back(new_ptr(Histogram(0.,1.8,200))); _m3pi0pi0km .push_back(new_ptr(Histogram(0.,1.8,200))); _m3kmpimpip .push_back(new_ptr(Histogram(0.,1.8,200))); _m3pimk0pi0 .push_back(new_ptr(Histogram(0.,1.8,200))); _m3pimpi0eta .push_back(new_ptr(Histogram(0.,1.8,200))); _m3pimpi0gamma .push_back(new_ptr(Histogram(0.,1.8,200))); _m3kspimks .push_back(new_ptr(Histogram(0.,1.8,200))); _m3klpimkl .push_back(new_ptr(Histogram(0.,1.8,200))); _m3kspimkl .push_back(new_ptr(Histogram(0.,1.8,200))); } } void TauTo3MesonAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; _m3pippimpim[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3P2-3P2-3 mass in T2-3RN0T1P2+3P2-3P2-3", "GX XGX XGX X GX XWGXGXGX XGX XGX X", "1/SdS/dm0P2+3P2-3P2-31/GeV2-13", " G G XGX XGX XGX XX X X", "m0P2+3P2-3P2-31/GeV", " XGX XGX XGX XX "); _m3pippimpim[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P2-3 mass in T2-3RN0T1P2+3P2-3P2-3", "GX XGX X GX XWGXGXGX XGX XGX X", "1/SdS/dm0P2-3P2-31/GeV2-13", " G G XGX XGX XX X X", "m0P2-3P2-31/GeV", " XGX XGX XX "); _m3pippimpim[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3P2-3 mass in T2-3RN0T1P2+3P2-3P2-3", "GX XGX X GX XWGXGXGX XGX XGX X", "1/SdS/dm0P2+3P2-31/GeV2-13", " G G XGX XGX XX X X", "m0P2+3P2-31/GeV", " XGX XGX XX "); _m3pi0pi0pim[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P203P203 mass in T2-3RN0T1P2-3P203P203", "GX XGX XGX X GX XWGXGXGX XGX XGX X", "1/SdS/dm0P2-3P203P2031/GeV2-13", " G G XGX XGX XGX XX X X", "m0P2-3P203P2031/GeV", " XGX XGX XGX XX "); _m3pi0pi0pim[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P203 mass in T2-3RN0T1P2-3P203P203", "GX XGX X GX XWGXGXGX XGX XGX X", "1/SdS/dm0P203P2031/GeV2-13", " G G XGX XGX XX X X", "m0P203P2031/GeV", " XGX XGX XX "); _m3pi0pi0pim[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P203 mass in T2-3RN0T1P2-3P203P203", "GX XGX X GX XWGXGXGX XGX XGX X", "1/SdS/dm0P2-3P2031/GeV2-13", " G G XGX XGX XX X X", "m0P2-3P2031/GeV", " XGX XGX XX "); _m3kmpimkp[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2-3P2-3K2+3 mass in T2-3RN0T1K2-3P2-3K2+3", " X XGX X X X GX XWGXGX X XGX X X X", "1/SdS/dm0K2-3P2-3K2+31/GeV2-13", " G G X X XGX X X XX X X", "m0K2-3P2-3K2+31/GeV", " X X XGX X X XX "); _m3kmpimkp[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2-3P2-3 mass in T2-3RN0T1K2-3P2-3K2+3", " X XGX X GX XWGXGX X XGX X X X", "1/SdS/dm0K2-3P2-31/GeV2-13", " G G X X XGX XX X X", "m0K2-3P2-31/GeV", " X X XGX XX "); _m3kmpimkp[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2-3K2+3 mass in T2-3RN0T1K2-3P2-3K2+3", " X X X X GX XWGXGX X XGX X X X", "1/SdS/dm0K2-3K2+31/GeV2-13", " G G X X X X XX X X", "m0K2-3K2+31/GeV", " X X X X XX "); _m3kmpimkp[3]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3K2+3 mass in T2-3RN0T1K2-3P2-3K2+3", "GX X X X GX XWGXGX X XGX X X X", "1/SdS/dm0P2-3K2+31/GeV2-13", " G G XGX X X XX X X", "m0P2-3K2+31/GeV", " XGX X X XX "); _m3k0pimk0[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K203P2-3K0O203 mass in T2-3RN0T1K203P2-3K0O203", " X XGX X UDX X GX XWGXGX X XGX X UDX X", "1/SdS/dm0K203P2-3K0O2031/GeV2-13", " G G X X XGX X UDX XX X X", "m0K203P2-3K0O2031/GeV", " X X XGX X UDX XX "); _m3k0pimk0[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K203P2-3 mass in T2-3RN0T1K203P2-3K0O2033", " X XGX X GX XWGXGX X XGX X UDX XX", "1/SdS/dm0K203P2-31/GeV2-13", " G G X X XGX XX X X", "m0K203P2-31/GeV", " X X XGX XX "); _m3k0pimk0[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K203K0O203 mass in T2-3RN0T1K203P2-3K0O203", " X X UDX X GX XWGXGX X XGX X UDX X", "1/SdS/dm0K203K0O2031/GeV2-13", " G G X X X UDX XX X X", "m0K203K0O2031/GeV", " X X X UDX XX "); _m3k0pimk0[3]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3K0O203 mass in T2-3RN0T1K203P2-3K0O203", "GX X UDX X GX XWGXGX X XGX X UDX X", "1/SdS/dm0P2-3K0O2031/GeV2-13", " G G XGX X UDX XX X X", "m0P2-3K0O2031/GeV", " XGX X UDX XX "); _m3kmpi0k0[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2-3P203K203 mass in T2-3RN0T1K2-3P203K203", " X XGX X X X GX XWGXGX X XGX X X X", "1/SdS/dm0K2-3P203K2031/GeV2-13", " G G X X XGX X X XX X X", "m0K2-3P203K2031/GeV", " X X XGX X X XX "); _m3kmpi0k0[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2-3P203 mass in T2-3RN0T1K2-3P203K203", " X XGX X GX XWGXGX X XGX X X X", "1/SdS/dm0K2-3P2031/GeV2-13", " G G X X XGX XX X X", "m0K2-3P2031/GeV", " X X XGX XX "); _m3kmpi0k0[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2-3K203 mass in T2-3RN0T1K2-3P203K203", " X X X X GX XWGXGX X XGX X X X", "1/SdS/dm0K2-3K2031/GeV2-13", " G G X X X X XX X X", "m0K2-3K2031/GeV", " X X X X XX "); _m3kmpi0k0[3]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203K203 mass in T2-3RN0T1K2-3P203K203", "GX X X X GX XWGXGX X XGX X X X", "1/SdS/dm0P203K2031/GeV2-13", " G G XGX X X XX X X", "m0P203K2031/GeV", " XGX X X XX "); _m3pi0pi0km[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P203K2-3 mass in T2-3RN0T1P203P203K2-3", "GX XGX X X X GX XWGXGXGX XGX X X X", "1/SdS/dm0P203P203K2-31/GeV2-13", " G G XGX XGX X X XX X X", "m0P203P203K2-31/GeV", " XGX XGX X X XX "); _m3pi0pi0km[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P203 mass in T2-3RN0T1P203P203K2-3", "GX XGX X GX XWGXGXGX XGX X X X", "1/SdS/dm0P203P2031/GeV2-13", " G G XGX XGX XX X X", "m0P203P2031/GeV", " XGX XGX XX "); _m3pi0pi0km[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203K2-3 mass in T2-3RN0T1P203P203K2-3", "GX X X X GX XWGXGXGX XGX X X X", "1/SdS/dm0P203K2-31/GeV2-13", " G G XGX X X XX X X", "m0P203K2-31/GeV", " XGX X X XX "); _m3kmpimpip[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2-3P2-3P2+3 mass in T2-3RN0T1K2-3P2-3P2+3", " X XGX XGX X GX XWGXGX X XGX XGX X", "1/SdS/dm0K2-3P2-3P2+31/GeV2-13", " G G X X XGX XGX XX X X", "m0K2-3P2-3P2+31/GeV", " X X XGX XGX XX "); _m3kmpimpip[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2-3P2-3 mass in T2-3RN0T1K2-3P2-3P2+3", " X XGX X GX XWGXGX X XGX XGX X", "1/SdS/dm0K2-3P2-31/GeV2-13", " G G X X XGX XX X X", "m0K2-3P2-31/GeV", " X X XGX XX "); _m3kmpimpip[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2-3P2+3 mass in T2-3RN0T1K2-3P2-3P2+3", " X XGX X GX XWGXGX X XGX XGX X", "1/SdS/dm0P2-3P2+31/GeV2-13", " G G XGX XGX XX X X", "m0K2-3P2+31/GeV", " X X XGX XX "); _m3kmpimpip[3]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P2+3 mass in T2-3RN0T1K2-3P2-3P2+3", "GX XGX X GX XWGXGX X XGX XGX X", "1/SdS/dm0P2-3P2+31/GeV2-13", " G G XGX XGX XX X X", "m0P2-3P2+31/GeV", " XGX XGX XX "); _m3pimk0pi0[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P203K0O203 mass in T2-3RN0T1P2-3P203K0O203", "GX XGX X UDX X GX XWGXGXGX XGX X UDX X", "1/SdS/dm0P2-3P203K0O2031/GeV2-13", " G G XGX XGX X UDX XX X X", "m0P2-3P203K0O2031/GeV", " XGX XGX X UDX XX "); _m3pimk0pi0[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3K0O203 mass in T2-3RN0T1P2-3P203K0O203", "GX X UDX X GX XWGXGXGX XGX X UDX X", "1/SdS/dm0P2-3K0O2031/GeV2-13", " G G XGX X UDX XX X X", "m0P2-3K0O2031/GeV", " XGX X UDX XX "); _m3pimk0pi0[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P203 mass in T2-3RN0T1P2-3P203K0O203", "GX XGX X GX XWGXGXGX XGX X UDX X", "1/SdS/dm0P2-3P2031/GeV2-13", " G G XGX XGX XX X X", "m0P2-3P2031/GeV", " XGX XGX XX "); _m3pimk0pi0[3]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203K0O203 mass in T2-3RN0T1P2-3P203K0O203", "GX X UDX X GX XWGXGXGX XGX X UDX X", "1/SdS/dm0P203K0O2031/GeV2-13", " G G XGX X UDX XX X X", "m0P203K0O2031/GeV", " XGX X UDX XX "); _m3pimpi0eta[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P203H mass in T2-3RN0T1P2-3P203H", "GX XGX XG GX XWGXGXGX XGX XG", "1/SdS/dm0P2-3P203H1/GeV2-13", " G G XGX XGX XGX X X", "m0P2-3P203H1/GeV", " XGX XGX XGX "); _m3pimpi0eta[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P203 mass in T2-3RN0T1P2-3P203H", "GX XGX X GX XWGXGXGX XGX XG", "1/SdS/dm0P2-3P2031/GeV2-13", " G G XGX XGX XX X X", "m0P2-3P2031/GeV", " XGX XGX XX "); _m3pimpi0eta[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3H mass in T2-3RN0T1P2-3P203H", "GX XG GX XWGXGXGX XGX XG", "1/SdS/dm0P2-3H1/GeV2-13", " G G XGX XGX X X", "m0P2-3H1/GeV", " XGX XGX "); _m3pimpi0eta[3]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203H mass in T2-3RN0T1P2-3P203H", "GX XG GX XWGXGXGX XGX XG", "1/SdS/dm0P203H1/GeV2-13", " G G XGX XGX X X", "m0P203H1/GeV", " XGX XGX "); _m3pimpi0gamma[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P203G mass in T2-3RN0T1P2-3P203G", "GX XGX XG GX XWGXGXGX XGX XG", "1/SdS/dm0P2-3P203G1/GeV2-13", " G G XGX XGX XGX X X", "m0P2-3P203G1/GeV", " XGX XGX XGX "); _m3pimpi0gamma[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P203 mass in T2-3RN0T1P2-3P203G", "GX XGX X GX XWGXGXGX XGX XG", "1/SdS/dm0P2-3P2031/GeV2-13", " G G XGX XGX XX X X", "m0P2-3P2031/GeV", " XGX XGX XX "); _m3pimpi0gamma[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3G mass in T2-3RN0T1P2-3P203G", "GX XG GX XWGXGXGX XGX XG", "1/SdS/dm0P2-3G1/GeV2-13", " G G XGX XGX X X", "m0P2-3G1/GeV", " XGX XGX "); _m3pimpi0gamma[3]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203G mass in T2-3RN0T1P2-3P203G", "GX XG GX XWGXGXGX XGX XG", "1/SdS/dm0P203G1/GeV2-13", " G G XGX XGX X X", "m0P203G1/GeV", " XGX XGX "); _m3kspimks[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2030S1P2-3K2030S1 mass in T2-3RN0T1K2030S1P2-3K2030S1", " X XX XGX X X XX X GX XWGXGX X XX XGX X X XX X", "1/SdS/dm0K2030S1P2-3K2030S11/GeV2-13", " G G X X XX XGX X X XX XX X X", "m0K2030S1P2-3K2030S11/GeV", " X X XX XGX X X XX XX "); _m3kspimks[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2030S1P2-3 mass in T2-3RN0T1K2030S1P2-3K2030S1", " X XX XGX X GX XWGXGX X XX XGX X X XX X", "1/SdS/dm0K2030S1P2-31/GeV2-13", " G G X X XX XGX XX X X", "m0K2030S1P2-31/GeV", " X X XX XGX XX "); _m3kspimks[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2030S1K2030S1 mass in T2-3RN0T1K2030S1P2-3K2030S1", " X XX X X XX X GX XWGXGX X XX XGX X X XX X", "1/SdS/dm0K2030S1K2030S11/GeV2-13", " G G X X XX X X XX XX X X", "m0K2030S1K2030S11/GeV", " X X XX X X XX XX "); _m3klpimkl[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2030L1P2-3K2030L1 mass in T2-3RN0T1K2030L1P2-3K2030L1", " X XX XGX X X XX X GX XWGXGX X XX XGX X X XX X", "1/SdS/dm0K2030L1P2-3K2030L11/GeV2-13", " G G X X XX XGX X X XX XX X X", "m0K2030L1P2-3K2030L11/GeV", " X X XX XGX X X XX XX "); _m3klpimkl[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2030L1P2-3 mass in T2-3RN0T1K2030L1P2-3K2030L1", " X XX XGX X GX XWGXGX X XX XGX X X XX X", "1/SdS/dm0K2030L1P2-31/GeV2-13", " G G X X XX XGX XX X X", "m0K2030L1P2-31/GeV", " X X XX XGX XX "); _m3klpimkl[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2030L1K2030L1 mass in T2-3RN0T1K2030L1P2-3K2030L1", " X XX X X XX X GX XWGXGX X XX XGX X X XX X", "1/SdS/dm0K2030L1K2030L11/GeV2-13", " G G X X XX X X XX XX X X", "m0K2030L1K2030L11/GeV", " X X XX X X XX XX "); _m3kspimkl[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2030S1P2-3K0L1 mass in T2-3RN0T1K2030S1P2-3K0L1", " X XX XGX X X X GX XWGXGX X XX XGX X X X", "1/SdS/dm0K2030S1P2-3K0L11/GeV2-13", " G G X X XX XGX X X XX X X", "m0K2030S1P2-3K0L11/GeV", " X X XX XGX X X XX "); _m3kspimkl[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2030S1P2-3 mass in T2-3RN0T1K2030S1P2-3K0L1", " X XX XGX X GX XWGXGX X XX XGX X X X", "1/SdS/dm0K2030S1P2-31/GeV2-13", " G G X X XX XGX XX X X", "m0K2030S1P2-31/GeV", " X X XX XGX XX "); _m3kspimkl[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2030S1K0L1 mass in T2-3RN0T1K2030S1K0L1", " X XX X X X GX XWGXGX X XX X X X", "1/SdS/dm0K2030S1K0L11/GeV2-13", " G G X X XX X X XX X X", "m0K2030S1K0L11/GeV", " X X XX X X XX "); _m3kspimkl[3]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "1P2-3K0L1 mass in T2-3RN0T1K2030S1P2-3K0L1", "XGX X X X GX XWGXGX X XX XGX X X X", "1/SdS/dm0P2-3K0L11/GeV2-13", " G G XGX X X XX X X", "m0P2-3K0L11/GeV", " XGX X X XX "); } void TauTo3MesonAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). tPVector hadrons=event->getFinalState(); map<tPPtr,ParticleVector> taus; for(unsigned int ix=0;ix<hadrons.size();++ix) { PPtr mother=hadrons[ix]; do { if(!mother->parents().empty()) mother=mother->parents()[0]; else mother=tPPtr(); } while(mother&&abs(mother->id())!=ParticleID::tauminus); if(mother&&abs(mother->id())==ParticleID::tauminus) { if(taus.find(mother)==taus.end()) { taus.insert(make_pair(mother,ParticleVector())); } taus[mother].push_back(hadrons[ix]); } } map<tPPtr,ParticleVector>::const_iterator tit; for(tit=taus.begin();tit!=taus.end();++tit) { if(tit->second.size()!=4) continue; ParticleVector decay=tit->second; int tsign=tit->first->id()/abs(tit->first->id()); vector<Lorentz5Momentum> ppi0,ppip,ppim,pkp,pkm,pk0,pk0bar,peta,pgamma,pkl,pks; Lorentz5Momentum ptotal; for(unsigned int ix=0;ix<decay.size();++ix) { long id = decay[ix]->id()*tsign; if(abs(id)!=ParticleID::nu_tau) ptotal+=decay[ix]->momentum(); if(id==ParticleID::piplus) ppip .push_back(decay[ix]->momentum()); else if(id==ParticleID::piminus) ppim .push_back(decay[ix]->momentum()); else if(abs(id)==ParticleID::pi0) ppi0 .push_back(decay[ix]->momentum()); else if(id==ParticleID::Kplus) pkp .push_back(decay[ix]->momentum()); else if(id==ParticleID::Kminus) pkm .push_back(decay[ix]->momentum()); else if(id==ParticleID::K0) pk0 .push_back(decay[ix]->momentum()); else if(id==ParticleID::Kbar0) pk0bar.push_back(decay[ix]->momentum()); else if(id==ParticleID::eta) peta .push_back(decay[ix]->momentum()); else if(id==ParticleID::gamma) pgamma.push_back(decay[ix]->momentum()); else if(abs(id)==ParticleID::K_S0) pks .push_back(decay[ix]->momentum()); else if(abs(id)==ParticleID::K_L0) pkl .push_back(decay[ix]->momentum()); } if(ppim.size()==2&&ppip.size()==1) { *_m3pippimpim[0] += ptotal.m()/GeV; *_m3pippimpim[1] += (ppim[0]+ppim[1]).m()/GeV; *_m3pippimpim[2] += (ppim[0]+ppip[0]).m()/GeV; *_m3pippimpim[2] += (ppim[1]+ppip[0]).m()/GeV; } else if(ppim.size()==1&&ppi0.size()==2) { *_m3pi0pi0pim[0] += ptotal.m()/GeV; *_m3pi0pi0pim[1] += (ppi0[0]+ppi0[1]).m()/GeV; *_m3pi0pi0pim[2] += (ppi0[0]+ppim[0]).m()/GeV; *_m3pi0pi0pim[2] += (ppi0[1]+ppim[0]).m()/GeV; } else if(pkm.size()==1&&pkp.size()==1&&ppim.size()==1) { *_m3kmpimkp[0] += ptotal.m()/GeV; *_m3kmpimkp[1] += (pkm[0]+ppim[0]).m()/GeV; *_m3kmpimkp[2] += (pkm[0]+ pkp[0]).m()/GeV; *_m3kmpimkp[3] += (pkp[0]+ppim[0]).m()/GeV; } else if(pk0.size()==1&&pk0bar.size()==1&&ppim.size()==1) { *_m3k0pimk0[0] += ptotal.m()/GeV; *_m3k0pimk0[1] += (pk0[0] +ppim[0] ).m()/GeV; *_m3k0pimk0[2] += (pk0[0] +pk0bar[0]).m()/GeV; *_m3k0pimk0[3] += (pk0bar[0]+ppim[0] ).m()/GeV; } else if(pk0.size()==1&&pkm.size()==1&&ppi0.size()==1) { *_m3kmpi0k0[0] += ptotal.m()/GeV; *_m3kmpi0k0[1] += (pkm[0]+ppi0[0]).m()/GeV; *_m3kmpi0k0[2] += (pkm[0]+pk0[0] ).m()/GeV; *_m3kmpi0k0[3] += (pk0[0]+ppi0[0]).m()/GeV; } else if(ppi0.size()==2&&pkm.size()==1) { *_m3pi0pi0km[0] += ptotal.m()/GeV; *_m3pi0pi0km[1] += (ppi0[0]+ppi0[1]).m()/GeV; *_m3pi0pi0km[2] += (ppi0[0]+pkm[0] ).m()/GeV; *_m3pi0pi0km[3] += (ppi0[1]+pkm[0] ).m()/GeV; } else if(pkm.size()==1&&ppim.size()==1&&ppip.size()==1) { *_m3kmpimpip[0] += ptotal.m()/GeV; *_m3kmpimpip[1] += (pkm[0]+ppim[0]).m()/GeV; *_m3kmpimpip[2] += (pkm[0]+ppip[0] ).m()/GeV; *_m3kmpimpip[3] += (ppip[0]+ppim[0] ).m()/GeV; } else if(ppim.size()==1&&pk0bar.size()==1&&ppi0.size()==1) { *_m3pimk0pi0[0] += ptotal.m()/GeV; *_m3pimk0pi0[1] += (ppim[0]+pk0bar[0]).m()/GeV; *_m3pimk0pi0[2] += (ppim[0]+ppi0[0] ).m()/GeV; *_m3pimk0pi0[3] += (pk0bar[0]+ppi0[0]).m()/GeV; } else if(ppim.size()==1&&ppi0.size()==1&&peta.size()==1) { *_m3pimpi0eta[0] += ptotal.m()/GeV; *_m3pimpi0eta[1] += (ppim[0]+ppi0[0]).m()/GeV; *_m3pimpi0eta[2] += (ppim[0]+peta[0]).m()/GeV; *_m3pimpi0eta[3] += (ppi0[0]+peta[0]).m()/GeV; } else if(ppim.size()==1&&ppi0.size()==1&&pgamma.size()==1) { *_m3pimpi0gamma[0] += ptotal.m()/GeV; *_m3pimpi0gamma[1] += (ppim[0]+ppi0[0]).m()/GeV; *_m3pimpi0gamma[2] += (ppim[0]+pgamma[0]).m()/GeV; *_m3pimpi0gamma[3] += (ppi0[0]+pgamma[0]).m()/GeV; } else if(pks.size()==2&&ppim.size()==1) { *_m3kspimks[0] += ptotal.m()/GeV; *_m3kspimks[1] += (ppim[0]+pks[0]).m()/GeV; *_m3kspimks[1] += (ppim[0]+pks[1]).m()/GeV; *_m3kspimks[2] += (pks [0]+pks[1]).m()/GeV; } else if(pkl.size()==2&&ppim.size()==1) { *_m3klpimkl[0] += ptotal.m()/GeV; *_m3klpimkl[1] += (ppim[0]+pkl[0]).m()/GeV; *_m3klpimkl[1] += (ppim[0]+pkl[1]).m()/GeV; *_m3klpimkl[2] += (pkl [0]+pkl[1]).m()/GeV; } else if(pks.size()==1&&pkl.size()==1&&ppim.size()==1) { *_m3kspimkl[0] += ptotal.m()/GeV; *_m3kspimkl[1] += (ppim[0]+pks[0]).m()/GeV; *_m3kspimkl[2] += (pks[0] +pkl[0]).m()/GeV; *_m3kspimkl[3] += (ppim[0]+pkl[0]).m()/GeV; } } } NoPIOClassDescription<TauTo3MesonAnalysis> TauTo3MesonAnalysis::initTauTo3MesonAnalysis; // Definition of the static class description member. void TauTo3MesonAnalysis::Init() { static ClassDocumentation<TauTo3MesonAnalysis> documentation ("The TauTo2MesonAnalysis class plots the mass distributions of tau decays to" "three mesons."); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/TauAnalysis/TauCorrelationAnalysis.cc�����������������������������������0000644�0001750�0001750�00000017310�11754474774�025604� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the TauCorrelationAnalysis class. // #include "TauCorrelationAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/Event.h" #include <ThePEG/PDT/EnumParticles.h> using namespace Herwig; void TauCorrelationAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; _phi->topdrawOutput(output,Frame|Errorbars, "RED", "F2*3 in h203RT2+3T2-3 with TRPN0T1", "GX X X XWGX XGX X GWGGXGX", "1/GdG/dF2*3", " F F GX X", "F2*3", "GX X"); _delta->topdrawOutput(output,Frame|Errorbars, "RED", "D2*3 in h203RT2+3T2-3 with TRPN0T1", "GX X X XWGX XGX X GWGGXGX", "1/GdG/dD2*3", " F F GX X", "D2*3", "GX X"); _rhoangle1->topdrawOutput(output,Frame|Errorbars, "RED", "F2*3 in h203RT2+3T2-3 with TRRN0T1 and y011y021>0", "GX X X XWGX XGX X GWGGXGX X X X X ", "1/GdG/dF2*3", " F F GX X", "F2*3", "GX X"); _rhoangle2->topdrawOutput(output,Frame|Errorbars, "RED", "F2*3 in h203RT2+3T2-3 with TRRN0T1 and y011y021<0", "GX X X XWGX XGX X GWGGXGX X X X X ", "1/GdG/dF2*3", " F F GX X", "F2*3", "GX X"); } void TauCorrelationAnalysis::doinitrun() { AnalysisHandler::doinitrun(); using Constants::pi; _phi = new_ptr(Histogram(0.,pi,100)); _delta = new_ptr(Histogram(3.,pi,100)); _rhoangle1 = new_ptr(Histogram(0.,pi,100)); _rhoangle2 = new_ptr(Histogram(0.,pi,100)); } void TauCorrelationAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // find all higgs bosons particles tPVector particles; for(unsigned int ix=0, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part=event->primaryCollision()->step(ix)->all(); ThePEG::ParticleSet::iterator iter=part.begin(); ThePEG::ParticleSet::iterator end=part.end(); for( ;iter!=end;++iter) { if((**iter).id()==ParticleID::h0) particles.push_back(*iter); } } // analyse them analyze(particles); } void TauCorrelationAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void TauCorrelationAnalysis::analyze(tPPtr part) { // check the number of children of the particle if(part->children().size()!=2) return; // and they are tau's if(abs(part->children()[0]->id())!=ParticleID::tauminus|| abs(part->children()[1]->id())!=ParticleID::tauminus) return; // and number of children if(!((part->children()[0]->children().size()==2|| part->children()[0]->children().size()==3)&& (part->children()[1]->children().size()==2|| part->children()[1]->children().size()==3))) return; // call rho and pi specific analysis analyzePi(part); analyzeRho(part); } NoPIOClassDescription<TauCorrelationAnalysis> TauCorrelationAnalysis::initTauCorrelationAnalysis; // Definition of the static class description member. void TauCorrelationAnalysis::Init() { static ClassDocumentation<TauCorrelationAnalysis> documentation ("The TauCorrelationAnalysis class performs the analysis of correlation effects" " in the decays of tau's produced in Higgs decay"); } void TauCorrelationAnalysis::analyzePi(tPPtr part) { if(part->children()[0]->children().size()!=2|| part->children()[1]->children().size()!=2) return; // now examine the decay products tPPtr taup,taum,pim,pip,nu,nub; for(unsigned int ix=0;ix<2;++ix) { if(part->children()[ix]->id()==ParticleID::tauminus) { taum=part->children()[ix]; for(unsigned int ix=0;ix<2;++ix) { if(taum->children()[ix]->id()==ParticleID::piminus) { pim=taum->children()[ix]; } else if(taum->children()[ix]->id()==ParticleID::nu_tau) { nu=taum->children()[ix]; } } } else { taup=part->children()[ix]; for(unsigned int ix=0;ix<2;++ix) { if(taup->children()[ix]->id()==ParticleID::piplus) { pip=taup->children()[ix]; } else if(taup->children()[ix]->id()==ParticleID::nu_taubar) { nub=taup->children()[ix]; } } } } if(!taup||!taum||!pim||!pip||!nu||!nub){return;} Boost bv(-part->momentum().boostVector()); Lorentz5Momentum ptaup(taup->momentum());ptaup.boost(bv); Lorentz5Momentum ptaum(taum->momentum());ptaum.boost(bv); Lorentz5Momentum ppim( pim->momentum() );ppim.boost(bv); Lorentz5Momentum ppip( pip->momentum() );ppip.boost(bv); Lorentz5Momentum pnu( nu->momentum() );pnu.boost(bv); Lorentz5Momentum pnub( nub->momentum() );pnub.boost(bv); ThreeVector<Energy2> norm1(ppip.vect().cross(pnub.vect())); ThreeVector<Energy2> norm2(ppim.vect().cross(pnu.vect())); double phi=norm1.angle(norm2); *_phi +=phi; *_delta +=ppip.vect().angle(ppim.vect()); } void TauCorrelationAnalysis::analyzeRho(tPPtr part) { // now examine the decay products tPPtr taup,taum,pim,pip,nu,nub,pi0a,pi0b,rhop,rhom; int idtemp; for(unsigned int ix=0;ix<2;++ix) { if(part->children()[ix]->id()==ParticleID::tauminus) { taum=part->children()[ix]; for(unsigned int iz=0;iz<taum->children().size();++iz) { idtemp=taum->children()[iz]->id(); if(idtemp==-213||idtemp==-100213||idtemp==-30213) { tPPtr rhom=taum->children()[iz]; if(rhom->children().size()!=2) return; for(unsigned int iy=0;iy<2;++iy) { int idb=rhom->children()[iy]->id(); if(idb==ParticleID::piminus) pim=rhom->children()[iy]; else if(idb==ParticleID::pi0) pi0a=rhom->children()[iy]; } } else if(idtemp==ParticleID::nu_tau) { nu=taum->children()[iz]; } else if(idtemp==ParticleID::piminus) pim =taum->children()[iz]; else if(idtemp==ParticleID::pi0) pi0a=taum->children()[iz]; } } else { taup=part->children()[ix]; for(unsigned int iz=0;iz<taup->children().size();++iz) { idtemp=taup->children()[iz]->id(); if(idtemp==213||idtemp==100213||idtemp==30213) { tPPtr rhop=taup->children()[iz]; if(rhop->children().size()!=2) return; for(unsigned int iy=0;iy<2;++iy) { int idb=rhop->children()[iy]->id(); if(idb==ParticleID::piplus) pip=rhop->children()[iy]; else if(idb==ParticleID::pi0) pi0b=rhop->children()[iy]; } } else if(idtemp==ParticleID::nu_taubar) { nub=taup->children()[iz]; } else if(idtemp==ParticleID::piplus) pip = taup->children()[iz]; else if(idtemp==ParticleID::pi0) pi0b = taup->children()[iz]; } } } if(!taup||!taum||!pim||!pip||!pi0a||!pi0b||!nu||!nub) return; LorentzMomentum prest(pim ->momentum()+pip ->momentum()+ pi0a->momentum()+pi0b->momentum()); Boost bv(-prest.boostVector()); Lorentz5Momentum ppim( pim->momentum() );ppim.boost(bv); Lorentz5Momentum ppip( pip->momentum() );ppip.boost(bv); Lorentz5Momentum ppi0a( pi0a->momentum() );ppi0a.boost(bv); Lorentz5Momentum ppi0b( pi0b->momentum() );ppi0b.boost(bv); ThreeVector<Energy2> norm1(ppip.vect().cross(ppi0b.vect())); ThreeVector<Energy2> norm2(ppim.vect().cross(ppi0a.vect())); double phi=norm1.angle(norm2); Lorentz5Momentum ptaup(taup->momentum()); Lorentz5Momentum ptaum(taum->momentum()); bv = -ptaum.boostVector(); ppim =pim->momentum();ppim.boost(bv); ppi0a=pi0a->momentum();ppi0a.boost(bv); bv = -ptaup.boostVector(); ppip =pip->momentum();ppip.boost(bv); ppi0b=pi0b->momentum();ppi0b.boost(bv); double y1=(ppip.e()-ppi0b.e())/(ppip.e()+ppi0b.e()); double y2=(ppim.e()-ppi0a.e())/(ppim.e()+ppi0a.e()); if(y1*y2>0) *_rhoangle1+=phi; else *_rhoangle2+=phi; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/TauAnalysis/TauCorrelationAnalysis.h������������������������������������0000644�0001750�0001750�00000013555�11754474774�025455� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_TauCorrelationAnalysis_H #define HERWIG_TauCorrelationAnalysis_H // // This is the declaration of the TauCorrelationAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * The documentation of the TauCorrelationAnalysis class is designed to * perform some analysis of the distributions of tau decay products in * Higgs decays. * * The analysis of the pion decays is based on hep-ph/0202007 and the * rho decays is based on hep-ph/0204292. * * @see \ref TauCorrelationAnalysisInterfaces "The interfaces" * defined for TauCorrelationAnalysis. */ class TauCorrelationAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} protected: /** * Methods to perform the analysis */ //@{ /** * Analyze the given particle for correlations with pi. * @param particle pointer to the particle to be analyzed. */ void analyzePi(tPPtr particle); /** * Analyze the given particle for correlations with rho. * @param particle pointer to the particle to be analyzed. */ void analyzeRho(tPPtr particle); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<TauCorrelationAnalysis> initTauCorrelationAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TauCorrelationAnalysis & operator=(const TauCorrelationAnalysis &); private: /** * Histogram of the \f$\phi\f$ angle in * \f$H\to\tau^+\tau^-\to\pi^+\bar{\nu}_tau\pi^-\nu_tau\f$ */ HistogramPtr _phi; /** * Histogram of the \f$\delta\f$ angle in * \f$H\to\tau^+\tau^-\to\pi^+\bar{\nu}_tau\pi^-\nu_tau\f$ */ HistogramPtr _delta; /** * Histogram of the \f$\phi\f$ angle in * \f$H\to\tau^+\tau^-\to\rho^+\bar{\nu}_tau\rho^-\nu_tau\f$ */ //@{ /** * First angle */ HistogramPtr _rhoangle1; /** * Second angle */ HistogramPtr _rhoangle2; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of TauCorrelationAnalysis. */ template <> struct BaseClassTrait<Herwig::TauCorrelationAnalysis,1> { /** Typedef of the first base class of TauCorrelationAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the TauCorrelationAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::TauCorrelationAnalysis> : public ClassTraitsBase<Herwig::TauCorrelationAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::TauCorrelationAnalysis"; } /** * The name of a file containing the dynamic library where the class * TauCorrelationAnalysis is implemented. It may also include several, space-separated, * libraries if the class TauCorrelationAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwTauAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_TauCorrelationAnalysis_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/TauAnalysis/Makefile.in�������������������������������������������������0000644�0001750�0001750�00000002051�11754474774�022677� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*- Makefile -*- (for emacs) # # This Makefile is intended for compiling Herwig++ plugins # You can find plugins here: INSERT URL # # This Makefile received very little testing, # any bug reports are very welcome! # # location of include files THEPEGINCLUDE = GSLINCLUDE = HERWIGINCLUDE = INCLUDE = $(THEPEGINCLUDE) $(GSLINCLUDE) $(HERWIGINCLUDE) # # C++ flags # CXX = CXXFLAGS = LDFLAGS = SHARED_FLAG = ALLCCFILES=$(shell echo *.cc) default : HwTauAnalysis.so %.o : %.cc %.h $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) -c -shared $< -o $@ HwTauAnalysis.so: Tau5Pion.o TauTo2MesonAnalysis.o TauTo4MesonAnalysis.o \ TauCorrelationAnalysis.o TauTo3MesonAnalysis.o \ TauToLeptonsAnalysis.o $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) \ Tau5Pion.o TauTo2MesonAnalysis.o TauTo4MesonAnalysis.o \ TauCorrelationAnalysis.o TauTo3MesonAnalysis.o \ TauToLeptonsAnalysis.o $(SHARED_FLAG) $(LDFLAGS) -o HwTauAnalysis.so clean: rm -f $(ALLCCFILES:.cc=.o) HwTauAnalysis.so ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/TauAnalysis/TauTo4MesonAnalysis.h���������������������������������������0000644�0001750�0001750�00000011174�11754474774�024637� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_TauTo4MesonAnalysis_H #define HERWIG_TauTo4MesonAnalysis_H // // This is the declaration of the TauTo4MesonAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the TauTo4MesonAnalysis class. * * @see \ref TauTo4MesonAnalysisInterfaces "The interfaces" * defined for TauTo4MesonAnalysis. */ class TauTo4MesonAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); using AnalysisHandler::analyze; //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<TauTo4MesonAnalysis> initTauTo4MesonAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TauTo4MesonAnalysis & operator=(const TauTo4MesonAnalysis &); private: /** * Histograms for the \f$\pi\pi\f$ mass distributions */ vector<HistogramPtr> _mpipi; /** * Histograms for the \f$\pi\pi\pi\f$ mass distributions */ vector<HistogramPtr> _mpipipi; /** * Histograms for the \f$\pi\pi\pi\pi\f$ mass distributions */ vector<HistogramPtr> _mpipipipi; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of TauTo4MesonAnalysis. */ template <> struct BaseClassTrait<Herwig::TauTo4MesonAnalysis,1> { /** Typedef of the first base class of TauTo4MesonAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the TauTo4MesonAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::TauTo4MesonAnalysis> : public ClassTraitsBase<Herwig::TauTo4MesonAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::TauTo4MesonAnalysis"; } /** * The name of a file containing the dynamic library where the class * TauTo4MesonAnalysis is implemented. It may also include several, space-separated, * libraries if the class TauTo4MesonAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwTauAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_TauTo4MesonAnalysis_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/TauAnalysis/TauToLeptonsAnalysis.cc�������������������������������������0000644�0001750�0001750�00000005615�11754474774�025257� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the TauToLeptonsAnalysis class. // #include "TauToLeptonsAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" using namespace Herwig; void TauToLeptonsAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); tPVector hadrons=event->getFinalState(); map<tPPtr,ParticleVector> taus; for(unsigned int ix=0;ix<hadrons.size();++ix) { PPtr mother=hadrons[ix]; do { if(!mother->parents().empty()) mother=mother->parents()[0]; else mother=tPPtr(); } while(mother&&abs(mother->id())!=ParticleID::tauminus); if(mother&&abs(mother->id())==ParticleID::tauminus) { if(taus.find(mother)==taus.end()) { taus.insert(make_pair(mother,ParticleVector())); } taus[mother].push_back(hadrons[ix]); } } map<tPPtr,ParticleVector>::const_iterator tit; for(tit=taus.begin();tit!=taus.end();++tit) { if(tit->second.size()!=3) continue; vector<Lorentz5Momentum> pdecay; int type(0); ParticleVector decay=tit->second; for(unsigned int ix=0;ix<decay.size();++ix) { long id = abs(decay[ix]->id()); if(id>=11&&id<=14) { pdecay.push_back(decay[ix]->momentum()); if(id==11) type=1; else if(id==13) type=2; } } if(pdecay.size()==2&&type!=0) { Lorentz5Momentum pw=pdecay[0]+pdecay[1]; pw.rescaleMass(); if(type==1) { *_emode+=pw.mass()/GeV; } else if(type==2) { *_mmode+=pw.mass()/GeV; } } } } NoPIOClassDescription<TauToLeptonsAnalysis> TauToLeptonsAnalysis::initTauToLeptonsAnalysis; // Definition of the static class description member. void TauToLeptonsAnalysis::Init() { static ClassDocumentation<TauToLeptonsAnalysis> documentation ("There is no documentation for the TauToLeptonsAnalysis class"); } void TauToLeptonsAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; _emode->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "e2-3N0O0e1 mass for T2-3RN0T1e2-3N0O0e1", " X XGUDX X GX XWGXGX X XGUDX X", "1/SdS/dm0e2-3N0O0e11/GeV2-13", " G G X X XGUDX XX X X", "m0e2-3N0O0e11/GeV", " X X XGUDX XX "); _mmode->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "M2-3N0O0M1 mass for T2-3RN0T1M2-3N0O0M1", "GX XGUDXGX GX XWGXGXGX XGUDXGX", "1/SdS/dm0M2-3N0O0M11/GeV2-13", " G G XGX XGUDXGXX X X", "m0M2-3N0O0M11/GeV", " XGX XGUDXGXX "); } void TauToLeptonsAnalysis::doinitrun() { AnalysisHandler::doinitrun(); _emode=new_ptr(Histogram(0.,1.8,200)); _mmode=new_ptr(Histogram(0.,1.8,200)); } �������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/TauAnalysis/TauTo2MesonAnalysis.cc��������������������������������������0000644�0001750�0001750�00000025602�11754474774�024774� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the TauTo2MesonAnalysis class. // #include "TauTo2MesonAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/PDT/EnumParticles.h" using namespace Herwig; inline void TauTo2MesonAnalysis::doinitrun() { AnalysisHandler::doinitrun(); // BELLE data for the pipi distribution double valsBELLE[]={0.076,0.100,0.150,0.200,0.250,0.300,0.350,0.400,0.450,0.500, 0.550,0.600,0.650,0.700,0.750,0.800,0.850,0.900,0.950,1.000, 1.050,1.100,1.150,1.200,1.250,1.300,1.350,1.400,1.450,1.500, 1.550,1.600,1.650,1.700,1.750,1.800,1.850,1.900,1.950,2.000, 2.050,2.100,2.150,2.200,2.250,2.300,2.350,2.400,2.450,2.500, 2.550,2.600,2.650,2.700,2.750,2.800,2.850,2.900,2.950,3.000, 3.050,3.100,3.150}; double dvalBELLE[]={ 10.3, 64.5, 123.2, 191.2, 284.3, 443.5, 690.8,1113.9,1781.8,2716.5, 3260.2,2765.4,1879.6,1222.8, 816.7, 590.1, 424.4, 324.9, 259.1, 202.0, 175.7, 147.9, 122.6, 110.6, 97.3, 82.1, 74.0, 63.2, 55.7, 49.3, 43.2,331.93,298.43,263.91,198.85, 176.86,145.50,110.07, 81.40, 64.57, 43.10, 27.46, 20.27, 14.58, 8.89, 3.77, 0.31, -0.69, 0.07, 1.52, 2.62, 3.64, 4.17, 3.85, 3.16, 3.44, 1.96, 1.86, 1.55, 0.89, 0.32, 0.04}; double errorstatBELLE[]={ 5.0 , 3.0 , 3.0 , 3.4 , 4.3 , 5.9 , 8.6 ,13.3 ,20.8 ,31.1 , 37.2 ,31.7 ,21.9 ,14.6 ,10.1 , 7.7 , 5.9 , 4.9 , 4.2 , 3.6 , 3.3 , 3.0 , 2.7 , 2.5 , 2.3 , 2.1 , 1.9 , 1.7 , 1.5 , 1.4 , 1.3 ,11.43, 9.26, 8.89, 8.09, 6.14, 5.35, 4.61, 3.76, 3.45, 2.76, 2.53, 2.17, 2.03, 1.82, 1.58, 1.42, 1.34, 1.26, 1.05, 0.97, 1.01, 2.95, 1.12, 1.32, 0.99, 0.60, 0.61, 0.43, 0.42, 0.11, 0.01}; double errorsystBELLE[]={ 4.1 , 4.6 , 3.8 , 3.8 , 3.6 , 3.8 , 3.8 , 4.0 , 4.6 , 4.1 , 3.8 , 3.1 , 2.3 , 1.8 , 1.3 , 1.1 , 1.0 , 0.8 , 0.9 , 0.6 , 0.8 , 0.5 , 0.7 , 0.4 , 0.5 , 0.4 , 0.4 , 0.4 , 0.3 , 0.4 , 0.3 , 2.33, 2.12, 2.54, 3.16, 2.85, 2.74, 2.11, 1.76, 1.78, 1.87, 1.93, 2.11, 2.17, 2.21, 1.98, 1.45, 1.18, 1.27, 1.41, 1.55, 1.81, 1.89, 1.66, 1.30, 1.37, 0.76, 0.71, 0.57, 0.32, 0.12, 0.01}; double evalBELLE[62]; for(unsigned int ix=0;ix<62;++ix) { evalBELLE[ix]=sqrt(sqr(errorstatBELLE[ix])+sqr(errorsystBELLE[ix])); if(ix<31) { dvalBELLE[ix]*=1e-3; evalBELLE[ix]*=1e-3; } else { dvalBELLE[ix]*=1e-4; evalBELLE[ix]*=1e-4; } } vector<double> bins(valsBELLE ,valsBELLE +63); vector<double> data = vector<double>(dvalBELLE ,dvalBELLE +62); vector<double> error = vector<double>(evalBELLE ,evalBELLE +62); _m2pipiBELLE= new_ptr(Histogram(bins,data,error)); double valsCLEO[]={0.275,0.300,0.325,0.350,0.375,0.400,0.425,0.450,0.475,0.500, 0.525,0.550,0.575,0.600,0.625,0.650,0.675,0.700,0.725,0.750, 0.775,0.800,0.825,0.850,0.875,0.900,0.925,0.950,0.975,1.000, 1.050,1.100,1.150,1.200,1.250,1.300,1.350,1.400,1.450,1.500, 1.550,1.600,1.650,1.700}; double dvalCLEO[]={ 1.5 , 8.0 , 6.0 , 8.5 , 15.6 , 16.2 , 24.9 , 41.4 , 50.6 , 60.9 , 79.8 , 107.4 , 144.3 , 204.5 , 269.1 , 385.8 , 571.5 , 826.8 ,1078.4 , 1228.1 , 1114.7 , 878.1 , 629.3 , 446.7 , 326.2 , 262.1 , 207.3 , 158.8 , 129.6 , 202.8 , 151.0 , 111.0 , 87.0 , 63.9 , 42.7 , 29.2 , 18.1 , 6.98, 2.91, 0.71, 0.59, 0.68, 0.28}; double evalCLEO[]={ 1.4 , 2.5 , 2.6 , 2.3 , 2.6 , 2.9 , 3.1 , 3.4 , 3.7 , 4.0 , 4.4 , 4.7 , 5.2 , 5.9 , 6.5 , 7.5 , 8.7 ,10.1 ,11.3 ,11.8 , 11.0 , 9.6 , 7.9 , 6.6 , 5.5 , 4.9 , 4.3 , 3.7 , 3.4 , 4.8 , 4.1 , 3.4 , 3.0 , 2.5 , 2.0 , 1.7 , 1.3 , 0.84, 0.59, 0.32, 0.25, 0.26, 0.21}; for(unsigned int ix=0;ix<43;++ix) { if(ix<29) { dvalCLEO[ix]*=1e-4/0.025; evalCLEO[ix]*=1e-4/0.025; } else { dvalCLEO[ix]*=1e-4/0.05; evalCLEO[ix]*=1e-4/0.05; } } bins = vector<double>(valsCLEO ,valsCLEO +44); data = vector<double>(dvalCLEO ,dvalCLEO +43); error = vector<double>(evalCLEO ,evalCLEO +43); _mpipiCLEO= new_ptr(Histogram(bins,data,error)); _m2KpiA=new_ptr(Histogram(0.,3.15,200)); _mKpiA =new_ptr(Histogram(0.,1.8,200)); _m2KpiB=new_ptr(Histogram(0.,3.15,200)); _mKpiB =new_ptr(Histogram(0.,1.8,200)); _m2KpiC=new_ptr(Histogram(0.,3.15,200)); _m2KpiD=new_ptr(Histogram(0.,3.15,200)); _m2Keta=new_ptr(Histogram(0.,3.15,200)); _mKeta =new_ptr(Histogram(0.,1.8,200)); _m2KK =new_ptr(Histogram(0.,3.15,200)); _mKK =new_ptr(Histogram(0.,1.8,200)); } void TauTo2MesonAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); tPVector hadrons=event->getFinalState(); map<tPPtr,ParticleVector> taus; for(unsigned int ix=0;ix<hadrons.size();++ix) { PPtr mother=hadrons[ix]; do { if(!mother->parents().empty()) mother=mother->parents()[0]; else mother=tPPtr(); } while(mother&&abs(mother->id())!=ParticleID::tauminus); if(mother&&abs(mother->id())==ParticleID::tauminus) { if(taus.find(mother)==taus.end()) { taus.insert(make_pair(mother,ParticleVector())); } taus[mother].push_back(hadrons[ix]); } } map<tPPtr,ParticleVector>::const_iterator tit; for(tit=taus.begin();tit!=taus.end();++tit) { if(tit->second.size()!=3) continue; ParticleVector decay=tit->second; using Constants::pi; unsigned int npi0(0),npip(0),nkp(0),nk0(0),neta(0); Lorentz5Momentum pdecay; for(unsigned int ix=0;ix<decay.size();++ix) { long id = abs(decay[ix]->id()); if(id!=ParticleID::nu_tau) pdecay+=decay[ix]->momentum(); if(id==ParticleID::pi0) ++npi0; else if(id==ParticleID::piplus) ++npip; else if(id==ParticleID::Kplus) ++nkp; else if(id==ParticleID::K0) ++nk0; else if(id==ParticleID::eta) ++neta; } double mass2 = pdecay.m2()/GeV2; double mass = sqrt(mass2); if(npi0==1&&npip==1) { *_m2pipiBELLE+=mass2; *_mpipiCLEO+=mass; } else if(nkp==1&&npi0==1) { *_m2KpiA+=mass2; *_mKpiA+=mass; double mtau=getParticleData(ParticleID::tauminus)->mass()/GeV; double m1=getParticleData(ParticleID::Kplus)->mass()/GeV; double m2=getParticleData(ParticleID::pi0)->mass()/GeV; double q=0.5*sqrt((sqr(mass2-sqr(m1)-sqr(m2))-4*sqr(m1*m2))/mass2); double fact = sqr(mtau*mtau-mass2)*q/mass2/mass/mtau* (2.*mass2+sqr(mtau))/3./sqr(mtau) *generator()->standardModel()->CKM(0,1)/pow(2.,8)/pow(pi,3)*sqr(1.16637e-5/GeV2) /(2.26501e-11*MeV)*GeV2*GeV2*GeV; _m2KpiC->addWeighted(mass2,1./fact); } else if(nk0==1&&npip==1) { *_m2KpiB+=mass2; *_mKpiB+=mass; double mtau=getParticleData(ParticleID::tauminus)->mass()/GeV; double m1=getParticleData(ParticleID::K0)->mass()/GeV; double m2=getParticleData(ParticleID::piplus)->mass()/GeV; double q=0.5*sqrt((sqr(mass2-sqr(m1)-sqr(m2))-4*sqr(m1*m2))/mass2); double fact = sqr(mtau*mtau-mass2)*q/mass2/mass/mtau* (2.*mass2+sqr(mtau))/3./sqr(mtau) *generator()->standardModel()->CKM(0,1)/pow(2.,8)/pow(pi,3)*sqr(1.16637e-5/GeV2) /(2.26501e-11*MeV)*GeV2*GeV2*GeV; _m2KpiD->addWeighted(mass2,1./fact); } else if(neta==1&&nkp==1) { *_m2Keta+=mass2; *_mKeta+=mass; } else if(nkp==1&&nk0==1) { *_m2KK +=mass2; *_mKK +=mass; } } } NoPIOClassDescription<TauTo2MesonAnalysis> TauTo2MesonAnalysis::initTauTo2MesonAnalysis; // Definition of the static class description member. void TauTo2MesonAnalysis::Init() { static ClassDocumentation<TauTo2MesonAnalysis> documentation ("The TauTo2MesonAnalysis class plots the mass distributions of tau decays to" "two mesons."); } void TauTo2MesonAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; _m2pipiBELLE->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3P203 mass", "GX XGX X ", "1/SdS/dm2230P2+3P2031/GeV2-23", " G G X XXGX XGX XX X X", "m2230P2+3P2031/GeV223", " X XXGX XGX XX X X"); _mpipiCLEO->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3P203 mass", "GX XGX X ", "1/SdS/dm0P2+3P2031/GeV2-13", " G G XGX XGX XX X X", "m0P2+3P2031/GeV", " XGX XGX XX "); _m2KpiA->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2+3P203 mass", " X XGX X ", "1/SdS/dm2230K2+3P2031/GeV2-23", " G G X XX X XGX XX X X", "m2230K2+3P2031/GeV223", " X XX X XGX XX X X"); _mKpiA->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2+3P203 mass", " X XGX X ", "1/SdS/dm0K2+3P2031/GeV2-13", " G G X X XGX XX X X", "m0K2+3P2031/GeV", " X X XGX XX "); _m2KpiC->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2+3P203 mass", " X XGX X ", "1/SdS/dm2230K2+3P2031/GeV2-23", " G G X XX X XGX XX X X", "m2230K2+3P2031/GeV223", " X XX X XGX XX X X"); _m2KpiB->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3K203 mass", "GX X X X ", "1/SdS/dm2230P2+3K2031/GeV2-23", " G G X XXGX X X XX X X", "m2230P2+3K2031/GeV223", " X XXGX X X XX X X"); _mKpiB->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3K203 mass", "GX X X X ", "1/SdS/dm0P2+3K2031/GeV2-13", " G G XGX X X XX X X", "m0P2+3K2031/GeV", " XGX X X XX "); _m2KpiD->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3K203 mass", "GX X X X ", "1/SdS/dm2230P2+3K2031/GeV2-23", " G G X XXGX X X XX X X", "m2230P2+3K2031/GeV223", " X XXGX X X XX X X"); _m2Keta->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2+3H mass", " X XG ", "1/SdS/dm2230K2+3H1/GeV2-23", " G G X XX X XGX X X", "m2230K2+3H1/GeV223", " X XX X XGX X X"); _mKeta->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2+3H mass", " X XG ", "1/SdS/dm0K2+3H1/GeV2-13", " G G X X XGX X X", "m0K2+3H1/GeV", " X X XGX "); _m2KK->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2+3K203 mass", " X X X X ", "1/SdS/dm2230K2+3K2031/GeV2-23", " G G X XX X X X XX X X", "m2230K2+3K2031/GeV223", " X XX X X X XX X X"); _mKK->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "K2+3K203 mass", " X X X X ", "1/SdS/dm0K2+3K2031/GeV2-13", " G G X X X X XX X X", "m0K2+3K2031/GeV", " X X X X XX "); } ������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/TauAnalysis/TauToLeptonsAnalysis.h��������������������������������������0000644�0001750�0001750�00000010761�11754474774�025117� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_TauToLeptonsAnalysis_H #define HERWIG_TauToLeptonsAnalysis_H // // This is the declaration of the TauToLeptonsAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the TauToLeptonsAnalysis class. * * @see \ref TauToLeptonsAnalysisInterfaces "The interfaces" * defined for TauToLeptonsAnalysis. */ class TauToLeptonsAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); using AnalysisHandler::analyze; //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<TauToLeptonsAnalysis> initTauToLeptonsAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TauToLeptonsAnalysis & operator=(const TauToLeptonsAnalysis &); private: /** * Histogram for the electron final state */ HistogramPtr _emode; /** * Histogram for the muon final state */ HistogramPtr _mmode; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of TauToLeptonsAnalysis. */ template <> struct BaseClassTrait<Herwig::TauToLeptonsAnalysis,1> { /** Typedef of the first base class of TauToLeptonsAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the TauToLeptonsAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::TauToLeptonsAnalysis> : public ClassTraitsBase<Herwig::TauToLeptonsAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::TauToLeptonsAnalysis"; } /** * The name of a file containing the dynamic library where the class * TauToLeptonsAnalysis is implemented. It may also include several, space-separated, * libraries if the class TauToLeptonsAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwTauAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_TauToLeptonsAnalysis_H */ ���������������herwig++-2.6.0.orig/Contrib/TauAnalysis/Tau5Pion.h��������������������������������������������������0000644�0001750�0001750�00000012751�11754474774�022457� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_Tau5Pion_H #define HERWIG_Tau5Pion_H // // This is the declaration of the Tau5Pion class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the Tau5Pion class. * * @see \ref Tau5PionInterfaces "The interfaces" * defined for Tau5Pion. */ class Tau5Pion: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); using AnalysisHandler::analyze; //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<Tau5Pion> initTau5Pion; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Tau5Pion & operator=(const Tau5Pion &); private: /** * Histograms for the \f$\pi\pi\f$ masses */ //@{ /** * Histograms for the \f$2\pi^02\pi^-\pi^+\f$ decay */ vector<HistogramPtr> _pipi1; /** * Histograms for the \f$4\pi^02\pi^-\f$ decay */ vector<HistogramPtr> _pipi2; /** * Histograms for the \f$3\pi^-2\pi^+\f$ decay */ vector<HistogramPtr> _pipi3; //@} /** * Histograms for the \f$\pi\pi\pi\f$ masses */ //@{ /** * Histograms for the \f$2\pi^02\pi^-\pi^+\f$ decay */ vector<HistogramPtr> _pipipi1; /** * Histograms for the \f$4\pi^02\pi^-\f$ decay */ vector<HistogramPtr> _pipipi2; /** * Histograms for the \f$3\pi^-2\pi^+\f$ decay */ vector<HistogramPtr> _pipipi3; //@} /** * Histograms for the \f$\pi\pi\pi\pi\f$ masses */ //@{ /** * Histograms for the \f$2\pi^02\pi^-\pi^+\f$ decay */ vector<HistogramPtr> _pipipipi1; /** * Histograms for the \f$4\pi^02\pi^-\f$ decay */ vector<HistogramPtr> _pipipipi2; /** * Histograms for the \f$3\pi^-2\pi^+\f$ decay */ vector<HistogramPtr> _pipipipi3; //@} /** * Histograms for the total hadronic mass */ //@{ /** * Histograms for the \f$2\pi^02\pi^-\pi^+\f$ decay */ HistogramPtr _q1; /** * Histograms for the \f$4\pi^02\pi^-\f$ decay */ HistogramPtr _q2; /** * Histograms for the \f$3\pi^-2\pi^+\f$ decay */ HistogramPtr _q3; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Tau5Pion. */ template <> struct BaseClassTrait<Herwig::Tau5Pion,1> { /** Typedef of the first base class of Tau5Pion. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the Tau5Pion class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::Tau5Pion> : public ClassTraitsBase<Herwig::Tau5Pion> { /** Return a platform-independent class name */ static string className() { return "Herwig::Tau5Pion"; } /** * The name of a file containing the dynamic library where the class * Tau5Pion is implemented. It may also include several, space-separated, * libraries if the class Tau5Pion depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwTauAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_Tau5Pion_H */ �����������������������herwig++-2.6.0.orig/Contrib/TauAnalysis/TauTo2MesonAnalysis.h���������������������������������������0000644�0001750�0001750�00000012236�11754474774�024635� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_TauTo2MesonAnalysis_H #define HERWIG_TauTo2MesonAnalysis_H // // This is the declaration of the TauTo2MesonAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * The TauTo2MesonAnalysis class is designed to perform the analysis of the * mass distribution of the hadronic decay products of the \f$\tau\f$ in the decays * \f$\tau^\pm\to\nu_\tau\{\pi^\pm\pi^0,K^\pm\pi^0,K^0\pi^\pm,K^\pm\eta,K^\pm K^0\}\f$. * In order to work the \f$\pi^0\f$, \f$K^0\f$, \f$K^\pm\f$ and \f$\eta\f$ should be * set stable. * * The mass spectrum of the \f$pi^\pm\pi^0\f$ final state is compared to CLEO and * BELLE data. * * @see \ref TauTo2MesonAnalysisInterfaces "The interfaces" * defined for TauTo2MesonAnalysis. */ class TauTo2MesonAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); using AnalysisHandler::analyze; //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class. */ static NoPIOClassDescription<TauTo2MesonAnalysis> initTauTo2MesonAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TauTo2MesonAnalysis & operator=(const TauTo2MesonAnalysis &); private: /** * Histograms for the mass plots */ //@{ /** * Mass of the pions in \f$\tau\pm\to\nu_\tau\pi^0\pi^\pm\f$ compared to BELLE * and CLEO data. */ HistogramPtr _m2pipiBELLE,_mpipiCLEO; /** * Mass of the Kaons and pions in \f$\tau\to K\pi\f$ */ HistogramPtr _m2KpiA,_m2KpiB,_mKpiA,_mKpiB,_m2KpiC,_m2KpiD; /** * Mass of the \f$K\eta\f$ */ HistogramPtr _m2Keta,_mKeta; /** * Mass of the \f$KK\f$ */ HistogramPtr _m2KK,_mKK; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of TauTo2MesonAnalysis. */ template <> struct BaseClassTrait<Herwig::TauTo2MesonAnalysis,1> { /** Typedef of the first base class of TauTo2MesonAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the TauTo2MesonAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::TauTo2MesonAnalysis> : public ClassTraitsBase<Herwig::TauTo2MesonAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::TauTo2MesonAnalysis"; } /** * The name of a file containing the dynamic library where the class * TauTo2MesonAnalysis is implemented. It may also include several, space-separated, * libraries if the class TauTo2MesonAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwTauAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_TauTo2MesonAnalysis_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/TauAnalysis/TauTo3MesonAnalysis.h���������������������������������������0000644�0001750�0001750�00000014427�11754474774�024642� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_TauTo3MesonAnalysis_H #define HERWIG_TauTo3MesonAnalysis_H // // This is the declaration of the TauTo3MesonAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * The TauTo3MesonAnalysis class is designed to perform the analysis of the * mass distribution of the hadronic decay products of the \f$\tau\f$ in the decays * - \f$\tau^-\to\nu_tau \pi^+\pi^-\pi^- \f$ * - \f$\tau^-\to\nu_tau \pi^0\pi^0\pi^- \f$ * - \f$\tau^-\to\nu_tau K^-K^+\pi^- \f$ * - \f$\tau^-\to\nu_tau K^0\bar{K}^0\pi^-\f$ * - \f$\tau^-\to\nu_tau K^-K^0\pi^0 \f$ * - \f$\tau^-\to\nu_tau \pi^0-\pi^0K^- \f$ * - \f$\tau^-\to\nu_tau K^-\pi^-\pi^+ \f$ * - \f$\tau^-\to\nu_tau \pi^-K^0\pi^0 \f$ * - \f$\tau^-\to\nu_tau \pi^-\pi^0\eta \f$ * - \f$\tau^-\to\nu_tau \pi^-\pi^0\gamma \f$ * * @see \ref TauTo3MesonAnalysisInterfaces "The interfaces" * defined for TauTo3MesonAnalysis. */ class TauTo3MesonAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); using AnalysisHandler::analyze; //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<TauTo3MesonAnalysis> initTauTo3MesonAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TauTo3MesonAnalysis & operator=(const TauTo3MesonAnalysis &); private: /** * Histograms for \f$\tau^-\to\nu_tau \pi^+\pi^-\pi^- \f$ */ vector<HistogramPtr> _m3pippimpim; /** * Histograms for \f$\tau^-\to\nu_tau \pi^0\pi^0\pi^- \f$ */ vector<HistogramPtr> _m3pi0pi0pim; /** * Histograms for \f$\tau^-\to\nu_tau K^-K^+\pi^- \f$ */ vector<HistogramPtr> _m3kmpimkp; /** * Histograms for \f$\tau^-\to\nu_tau K^0\bar{K}^0\pi^-\f$ */ vector<HistogramPtr> _m3k0pimk0; /** * Histograms for \f$\tau^-\to\nu_tau K^-K^0\pi^0 \f$ */ vector<HistogramPtr> _m3kmpi0k0; /** * Histograms for \f$\tau^-\to\nu_tau \pi^0\pi^0K^- \f$ */ vector<HistogramPtr> _m3pi0pi0km; /** * Histograms for \f$\tau^-\to\nu_tau K^-\pi^-\pi^+ \f$ */ vector<HistogramPtr> _m3kmpimpip; /** * Histograms for \f$\tau^-\to\nu_tau \pi^-K^0\pi^0 \f$ */ vector<HistogramPtr> _m3pimk0pi0; /** * Histograms for \f$\tau^-\to\nu_tau \pi^-\pi^0\eta \f$ */ vector<HistogramPtr> _m3pimpi0eta; /** * Histograms for \f$\tau^-\to\nu_tau \pi^-\pi^0\gamma \f$ */ vector<HistogramPtr> _m3pimpi0gamma; /** * Histograms for \f$\tau^-\to\nu_tau K^0_SK^0_S\pi^-\f$ */ vector<HistogramPtr> _m3kspimks; /** * Histograms for \f$\tau^-\to\nu_tau K^0_LK^0_L\pi^-\f$ */ vector<HistogramPtr> _m3klpimkl; /** * Histograms for \f$\tau^-\to\nu_tau K^0_SK^0_L\pi^-\f$ */ vector<HistogramPtr> _m3kspimkl; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of TauTo3MesonAnalysis. */ template <> struct BaseClassTrait<Herwig::TauTo3MesonAnalysis,1> { /** Typedef of the first base class of TauTo3MesonAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the TauTo3MesonAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::TauTo3MesonAnalysis> : public ClassTraitsBase<Herwig::TauTo3MesonAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::TauTo3MesonAnalysis"; } /** * The name of a file containing the dynamic library where the class * TauTo3MesonAnalysis is implemented. It may also include several, space-separated, * libraries if the class TauTo3MesonAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwTauAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_TauTo3MesonAnalysis_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/TauAnalysis/TauTo4MesonAnalysis.cc��������������������������������������0000644�0001750�0001750�00000021111�11754474774�024765� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the TauTo4MesonAnalysis class. // #include "TauTo4MesonAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/EventRecord/Event.h" using namespace Herwig; void TauTo4MesonAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). tPVector hadrons=event->getFinalState(); map<tPPtr,ParticleVector> taus; for(unsigned int ix=0;ix<hadrons.size();++ix) { PPtr mother=hadrons[ix]; do { if(!mother->parents().empty()) mother=mother->parents()[0]; else mother=tPPtr(); } while(mother&&abs(mother->id())!=ParticleID::tauminus); if(mother&&abs(mother->id())==ParticleID::tauminus) { if(taus.find(mother)==taus.end()) { taus.insert(make_pair(mother,ParticleVector())); } taus[mother].push_back(hadrons[ix]); } } map<tPPtr,ParticleVector>::const_iterator tit; for(tit=taus.begin();tit!=taus.end();++tit) { if(tit->second.size()!=5) continue; ParticleVector decay=tit->second; int tsign=tit->first->id()/abs(tit->first->id()); vector<Lorentz5Momentum> ppi0,ppip,ppim,pkp,pkm,pk0,pk0bar,peta,pgamma; Lorentz5Momentum ptotal; for(unsigned int ix=0;ix<decay.size();++ix) { long id = decay[ix]->id()*tsign; if(abs(id)!=ParticleID::nu_tau) ptotal+=decay[ix]->momentum(); if( id ==ParticleID::piplus) ppip .push_back(decay[ix]->momentum()); else if( id ==ParticleID::piminus) ppim .push_back(decay[ix]->momentum()); else if(abs(id)==ParticleID::pi0) ppi0 .push_back(decay[ix]->momentum()); else if( id ==ParticleID::Kplus) pkp .push_back(decay[ix]->momentum()); else if( id ==ParticleID::Kminus) pkm .push_back(decay[ix]->momentum()); else if( id ==ParticleID::K0) pk0 .push_back(decay[ix]->momentum()); else if( id ==ParticleID::Kbar0) pk0bar.push_back(decay[ix]->momentum()); else if(abs(id)==ParticleID::eta) peta .push_back(decay[ix]->momentum()); else if(abs(id)==ParticleID::gamma) pgamma.push_back(decay[ix]->momentum()); } if(ppi0.size()==3&&ppim.size()==1) { *_mpipi[0] += (ppi0[0]+ppim[0]).m()/GeV; *_mpipi[0] += (ppi0[1]+ppim[0]).m()/GeV; *_mpipi[0] += (ppi0[2]+ppim[0]).m()/GeV; *_mpipi[1] += (ppi0[0]+ppi0[1]).m()/GeV; *_mpipi[1] += (ppi0[0]+ppi0[2]).m()/GeV; *_mpipi[1] += (ppi0[1]+ppi0[2]).m()/GeV; *_mpipipi[0] += (ppi0[0]+ppi0[1]+ppi0[2]).m()/GeV; *_mpipipi[1] += (ppi0[0]+ppi0[1]+ppim[0]).m()/GeV; *_mpipipi[1] += (ppi0[0]+ppi0[2]+ppim[0]).m()/GeV; *_mpipipi[1] += (ppi0[1]+ppi0[2]+ppim[0]).m()/GeV; *_mpipipipi[0] += (ppi0[0]+ppi0[1]+ppi0[2]+ppim[0]).m()/GeV; } else if(ppi0.size()==1&&ppip.size()==1&&ppim.size()==2) { *_mpipi[2] +=(ppi0[0]+ppip[0]).m()/GeV; *_mpipi[3] +=(ppi0[0]+ppim[0]).m()/GeV; *_mpipi[3] +=(ppi0[0]+ppim[1]).m()/GeV; *_mpipi[4] +=(ppip[0]+ppim[0]).m()/GeV; *_mpipi[4] +=(ppip[0]+ppim[1]).m()/GeV; *_mpipi[5] +=(ppim[0]+ppim[1]).m()/GeV; *_mpipipi[2] += (ppi0[0]+ppip[0]+ppim[0]).m()/GeV; *_mpipipi[2] += (ppi0[0]+ppip[0]+ppim[1]).m()/GeV; *_mpipipi[3] += (ppip[0]+ppim[0]+ppim[1]).m()/GeV; *_mpipipi[4] += (ppi0[0]+ppim[0]+ppim[1]).m()/GeV; *_mpipipipi[1] += (ppi0[0]+ppip[0]+ppim[0]+ppim[1]).m()/GeV; } } } NoPIOClassDescription<TauTo4MesonAnalysis> TauTo4MesonAnalysis::initTauTo4MesonAnalysis; // Definition of the static class description member. void TauTo4MesonAnalysis::Init() { static ClassDocumentation<TauTo4MesonAnalysis> documentation ("There is no documentation for the TauTo4MesonAnalysis class"); } inline void TauTo4MesonAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; _mpipi[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P2-3 mass in T2-3RN0T1P203P203P203P2-3", "GX XGX X GX XWGXGXGX XGX XGX XGX X", "1/SdS/dm0P203P2-31/GeV2-13", " G G XGX XGX XX X X", "m0P203P2-31/GeV", " XGX XGX XX "); _mpipi[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P203 mass in T2-3RN0T1P203P203P203P2-3", "GX XGX X GX XWGXGXGX XGX XGX XGX X", "1/SdS/dm0P203P2031/GeV2-13", " G G XGX XGX XX X X", "m0P203P2031/GeV", " XGX XGX XX "); _mpipipi[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P203P203 mass in T2-3RN0T1P203P203P203P2-3", "GX XGX XGX X GX XWGXGXGX XGX XGX XGX X", "1/SdS/dm0P203P203P2031/GeV2-13", " G G XGX XGX XGX XX X X", "m0P203P203P2031/GeV", " XGX XGX XGX XX "); _mpipipi[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P203P2-3 mass in T2-3RN0T1P203P203P203P2-3", "GX XGX XGX X GX XWGXGXGX XGX XGX XGX X", "1/SdS/dm0P203P203P2-31/GeV2-13", " G G XGX XGX XGX XX X X", "m0P203P203P2-31/GeV", " XGX XGX XGX XX "); _mpipipipi[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P203P203P2-3 mass in T2-3RN0T1P203P203P203P2-3", "GX XGX XGX XGX X GX XWGXGXGX XGX XGX XGX X", "1/SdS/dm0P203P203P203P2-31/GeV2-13", " G G XGX XGX XGX XGX XX X X", "m0P203P203P203P2-31/GeV", " XGX XGX XGX XGX XX "); _mpipi[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P2+3 mass in T2-3RN0T1P203P2+3P2-3P2-3", "GX XGX X GX XWGXGXGX XGX XGX XGX X", "1/SdS/dm0P203P2+31/GeV2-13", " G G XGX XGX XX X X", "m0P203P2+31/GeV", " XGX XGX XX "); _mpipi[3]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P2-3 mass in T2-3RN0T1P203P2+3P2-3P2-3", "GX XGX X GX XWGXGXGX XGX XGX XGX X", "1/SdS/dm0P203P2-31/GeV2-13", " G G XGX XGX XX X X", "m0P203P2-31/GeV", " XGX XGX XX "); _mpipi[4]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3P2-3 mass in T2-3RN0T1P203P2+3P2-3P2-3", "GX XGX X GX XWGXGXGX XGX XGX XGX X", "1/SdS/dm0P2+3P2-31/GeV2-13", " G G XGX XGX XX X X", "m0P2+3P2-31/GeV", " XGX XGX XX "); _mpipi[5]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P2-3 mass in T2-3RN0T1P203P2+3P2-3P2-3", "GX XGX X GX XWGXGXGX XGX XGX XGX X", "1/SdS/dm0P2-3P2-31/GeV2-13", " G G XGX XGX XX X X", "m0P2-3P2-31/GeV", " XGX XGX XX "); _mpipipi[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P2+3P2-3 mass in T2-3RN0T1P203P2+3P2-3P2-3", "GX XGX XGX X GX XWGXGXGX XGX XGX XGX X", "1/SdS/dm0P203P2+3P2-31/GeV2-13", " G G XGX XGX XGX XX X X", "m0P203P2+3P2-31/GeV", " XGX XGX XGX XX "); _mpipipi[3]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3P2-3P2-3 mass in T2-3RN0T1P203P2+3P2-3P2-3", "GX XGX XGX X GX XWGXGXGX XGX XGX XGX X", "1/SdS/dm0P2+3P2-3P2-31/GeV2-13", " G G XGX XGX XGX XX X X", "m0P2+3P2-3P2-31/GeV", " XGX XGX XGX XX "); _mpipipi[4]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P2-3P2-3 mass in T2-3RN0T1P203P2+3P2-3P2-3", "GX XGX XGX X GX XWGXGXGX XGX XGX XGX X", "1/SdS/dm0P203P2-3P2-31/GeV2-13", " G G XGX XGX XGX XX X X", "m0P203P2-3P2-31/GeV", " XGX XGX XGX XX "); _mpipipipi[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P2+3P2-3P2-3 mass in T2-3RN0T1P203P2+3P2-3P2-3", "GX XGX XGX XGX X GX XWGXGXGX XGX XGX XGX X", "1/SdS/dm0P203P2+3P2-3P2-31/GeV2-13", " G G XGX XGX XGX XGX XX X X", "m0P203P2+3P2-3P2-31/GeV", " XGX XGX XGX XGX XX "); } inline void TauTo4MesonAnalysis::doinitrun() { AnalysisHandler::doinitrun(); for(unsigned int ix=0;ix<5;++ix) { _mpipi .push_back(new_ptr(Histogram(0.,1.8,200))); _mpipipi.push_back(new_ptr(Histogram(0.,1.8,200))); } _mpipi .push_back(new_ptr(Histogram(0.,1.8,200))); for(unsigned int ix=0;ix<2;++ix) { _mpipipipi.push_back(new_ptr(Histogram(0.,1.8,200))); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/TauAnalysis/Tau5Pion.cc�������������������������������������������������0000644�0001750�0001750�00000041025�11754474774�022611� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the Tau5Pion class. // #include "Tau5Pion.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace Herwig; void Tau5Pion::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). tPVector hadrons=event->getFinalState(); map<tPPtr,ParticleVector> taus; for(unsigned int ix=0;ix<hadrons.size();++ix) { PPtr mother=hadrons[ix]; do { if(!mother->parents().empty()) mother=mother->parents()[0]; else mother=tPPtr(); } while(mother&&abs(mother->id())!=ParticleID::tauminus); if(mother&&abs(mother->id())==ParticleID::tauminus) { if(taus.find(mother)==taus.end()) { taus.insert(make_pair(mother,ParticleVector())); } taus[mother].push_back(hadrons[ix]); } } map<tPPtr,ParticleVector>::const_iterator tit; for(tit=taus.begin();tit!=taus.end();++tit) { if(tit->second.size()!=6) continue; ParticleVector decay=tit->second; int tsign=tit->first->id()/abs(tit->first->id()); vector<Lorentz5Momentum> ppi0,ppip,ppim,pkp,pkm,pk0,pk0bar,peta,pgamma; Lorentz5Momentum ptotal; for(unsigned int ix=0;ix<decay.size();++ix) { long id = decay[ix]->id()*tsign; if(abs(id)!=ParticleID::nu_tau) ptotal+=decay[ix]->momentum(); if( id ==ParticleID::piplus) ppip .push_back(decay[ix]->momentum()); else if( id ==ParticleID::piminus) ppim .push_back(decay[ix]->momentum()); else if(abs(id)==ParticleID::pi0) ppi0 .push_back(decay[ix]->momentum()); else if( id ==ParticleID::Kplus) pkp .push_back(decay[ix]->momentum()); else if( id ==ParticleID::Kminus) pkm .push_back(decay[ix]->momentum()); else if( id ==ParticleID::K0) pk0 .push_back(decay[ix]->momentum()); else if( id ==ParticleID::Kbar0) pk0bar.push_back(decay[ix]->momentum()); else if(abs(id)==ParticleID::eta) peta .push_back(decay[ix]->momentum()); else if(abs(id)==ParticleID::gamma) pgamma.push_back(decay[ix]->momentum()); } if(ppi0.size()==2&&ppim.size()==2&&ppip.size()==1) { *_pipi1[0]+=(ppim[0]+ppim[1]).m()/GeV; *_pipi1[1]+=(ppim[0]+ppip[0]).m()/GeV; *_pipi1[2]+=(ppim[0]+ppi0[0]).m()/GeV; *_pipi1[2]+=(ppim[0]+ppi0[1]).m()/GeV; *_pipi1[1]+=(ppim[1]+ppip[0]).m()/GeV; *_pipi1[2]+=(ppim[1]+ppi0[0]).m()/GeV; *_pipi1[2]+=(ppim[1]+ppi0[1]).m()/GeV; *_pipi1[3]+=(ppip[0]+ppi0[0]).m()/GeV; *_pipi1[3]+=(ppip[0]+ppi0[1]).m()/GeV; *_pipi1[4]+=(ppi0[0]+ppi0[1]).m()/GeV; *_pipipi1[0]+=(ppim[0]+ppim[1]-ptotal).m()/GeV; *_pipipi1[1]+=(ppim[0]+ppip[0]-ptotal).m()/GeV; *_pipipi1[2]+=(ppim[0]+ppi0[0]-ptotal).m()/GeV; *_pipipi1[2]+=(ppim[0]+ppi0[1]-ptotal).m()/GeV; *_pipipi1[1]+=(ppim[1]+ppip[0]-ptotal).m()/GeV; *_pipipi1[2]+=(ppim[1]+ppi0[0]-ptotal).m()/GeV; *_pipipi1[2]+=(ppim[1]+ppi0[1]-ptotal).m()/GeV; *_pipipi1[3]+=(ppip[0]+ppi0[0]-ptotal).m()/GeV; *_pipipi1[3]+=(ppip[0]+ppi0[1]-ptotal).m()/GeV; *_pipipi1[4]+=(ppi0[0]+ppi0[1]-ptotal).m()/GeV; *_pipipipi1[0]+=(ptotal-ppim[0]).m()/GeV; *_pipipipi1[0]+=(ptotal-ppim[1]).m()/GeV; *_pipipipi1[1]+=(ptotal-ppip[0]).m()/GeV; *_pipipipi1[2]+=(ptotal-ppi0[0]).m()/GeV; *_pipipipi1[2]+=(ptotal-ppi0[1]).m()/GeV; *_q1+=ptotal.m()/GeV; } else if(ppi0.size()==4&&ppim.size()==1) { *_pipi2[0]+=(ppim[0]+ppi0[0]).m()/GeV; *_pipi2[0]+=(ppim[0]+ppi0[1]).m()/GeV; *_pipi2[0]+=(ppim[0]+ppi0[2]).m()/GeV; *_pipi2[0]+=(ppim[0]+ppi0[3]).m()/GeV; *_pipi2[1]+=(ppi0[0]+ppi0[1]).m()/GeV; *_pipi2[1]+=(ppi0[0]+ppi0[2]).m()/GeV; *_pipi2[1]+=(ppi0[0]+ppi0[3]).m()/GeV; *_pipi2[1]+=(ppi0[1]+ppi0[2]).m()/GeV; *_pipi2[1]+=(ppi0[1]+ppi0[3]).m()/GeV; *_pipi2[1]+=(ppi0[2]+ppi0[3]).m()/GeV; *_pipipi2[0]+=(ppim[0]+ppi0[0]-ptotal).m()/GeV; *_pipipi2[0]+=(ppim[0]+ppi0[1]-ptotal).m()/GeV; *_pipipi2[0]+=(ppim[0]+ppi0[2]-ptotal).m()/GeV; *_pipipi2[0]+=(ppim[0]+ppi0[3]-ptotal).m()/GeV; *_pipipi2[1]+=(ppi0[0]+ppi0[1]-ptotal).m()/GeV; *_pipipi2[1]+=(ppi0[0]+ppi0[2]-ptotal).m()/GeV; *_pipipi2[1]+=(ppi0[0]+ppi0[3]-ptotal).m()/GeV; *_pipipi2[1]+=(ppi0[1]+ppi0[2]-ptotal).m()/GeV; *_pipipi2[1]+=(ppi0[1]+ppi0[3]-ptotal).m()/GeV; *_pipipi2[1]+=(ppi0[2]+ppi0[3]-ptotal).m()/GeV; *_pipipipi2[0]+=(ptotal-ppim[0]).m()/GeV; *_pipipipi2[1]+=(ptotal-ppi0[0]).m()/GeV; *_pipipipi2[1]+=(ptotal-ppi0[1]).m()/GeV; *_pipipipi2[1]+=(ptotal-ppi0[2]).m()/GeV; *_pipipipi2[1]+=(ptotal-ppi0[3]).m()/GeV; *_q2+=ptotal.m()/GeV; } else if(ppim.size()==3&&ppip.size()==2) { *_pipi3[0]+=(ppip[0]+ppip[1]).m()/GeV; *_pipi3[1]+=(ppim[0]+ppip[0]).m()/GeV; *_pipi3[1]+=(ppim[0]+ppip[1]).m()/GeV; *_pipi3[1]+=(ppim[1]+ppip[0]).m()/GeV; *_pipi3[1]+=(ppim[1]+ppip[1]).m()/GeV; *_pipi3[1]+=(ppim[2]+ppip[0]).m()/GeV; *_pipi3[1]+=(ppim[2]+ppip[1]).m()/GeV; *_pipi3[2]+=(ppim[0]+ppim[1]).m()/GeV; *_pipi3[2]+=(ppim[0]+ppim[2]).m()/GeV; *_pipi3[2]+=(ppim[1]+ppim[2]).m()/GeV; *_pipipi3[0]+=(ppip[0]+ppip[1]-ptotal).m()/GeV; *_pipipi3[1]+=(ppim[0]+ppip[0]-ptotal).m()/GeV; *_pipipi3[1]+=(ppim[0]+ppip[1]-ptotal).m()/GeV; *_pipipi3[1]+=(ppim[1]+ppip[0]-ptotal).m()/GeV; *_pipipi3[1]+=(ppim[1]+ppip[1]-ptotal).m()/GeV; *_pipipi3[1]+=(ppim[2]+ppip[0]-ptotal).m()/GeV; *_pipipi3[1]+=(ppim[2]+ppip[1]-ptotal).m()/GeV; *_pipipi3[2]+=(ppim[0]+ppim[1]-ptotal).m()/GeV; *_pipipi3[2]+=(ppim[0]+ppim[2]-ptotal).m()/GeV; *_pipipi3[2]+=(ppim[1]+ppim[2]-ptotal).m()/GeV; *_pipipipi3[0]+=(ptotal-ppim[0]).m()/GeV; *_pipipipi3[0]+=(ptotal-ppim[1]).m()/GeV; *_pipipipi3[0]+=(ptotal-ppim[2]).m()/GeV; *_pipipipi3[1]+=(ptotal-ppip[0]).m()/GeV; *_pipipipi3[1]+=(ptotal-ppip[1]).m()/GeV; *_q3+=ptotal.m()/GeV; } } } NoPIOClassDescription<Tau5Pion> Tau5Pion::initTau5Pion; // Definition of the static class description member. void Tau5Pion::Init() { static ClassDocumentation<Tau5Pion> documentation ("There is no documentation for the Tau5Pion class"); } void Tau5Pion::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; _pipi1[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P2-3 mass in T2-3RN0T12P2-3P2+32P203", "GX XGX X GX XWGXGX GX XGX X GX X", "1/SdS/dm0P2-3P2-31/GeV2-13", " G G XGX XGX XX X X", "m0P2-3P2-31/GeV", " XGX XGX XX "); _pipi1[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P2+3 mass in T2-3RN0T12P2-3P2+32P203", "GX XGX X GX XWGXGX GX XGX X GX X", "1/SdS/dm0P2-3P2+31/GeV2-13", " G G XGX XGX XX X X", "m0P2-3P2+31/GeV", " XGX XGX XX "); _pipi1[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P203 mass in T2-3RN0T12P2-3P2+32P203", "GX XGX X GX XWGXGX GX XGX X GX X", "1/SdS/dm0P2-3P2031/GeV2-13", " G G XGX XGX XX X X", "m0P2-3P2031/GeV", " XGX XGX XX "); _pipi1[3]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3P203 mass in T2-3RN0T12P2-3P2+32P203", "GX XGX X GX XWGXGX GX XGX X GX X", "1/SdS/dm0P2+3P2031/GeV2-13", " G G XGX XGX XX X X", "m0P2+3P2031/GeV", " XGX XGX XX "); _pipi1[4]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P203 mass in T2-3RN0T12P2-3P2+32P203", "GX XGX X GX XWGXGX GX XGX X GX X", "1/SdS/dm0P203P2031/GeV2-13", " G G XGX XGX XX X X", "m0P203P2031/GeV", " XGX XGX XX "); _pipipi1[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3P203P203 mass in T2-3RN0T12P2-3P2+32P203", "GX XGX XGX X GX XWGXGX GX XGX X GX X", "1/SdS/dm0P2+3P203P2031/GeV2-13", " G G XGX XGX XGX XX X X", "m0P2+3P203P2031/GeV", " XGX XGX XGX XX "); _pipipi1[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P203P203 mass in T2-3RN0T12P2-3P2+32P203", "GX XGX XGX X GX XWGXGX GX XGX X GX X", "1/SdS/dm0P2-3P203P2031/GeV2-13", " G G XGX XGX XGX XX X X", "m0P2-3P203P2031/GeV", " XGX XGX XGX XX "); _pipipi1[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3P2-3P203 mass in T2-3RN0T12P2-3P2+32P203", "GX XGX XGX X GX XWGXGX GX XGX X GX X", "1/SdS/dm0P2+3P2-3P2031/GeV2-13", " G G XGX XGX XGX XX X X", "m0P2+3P2-3P2031/GeV", " XGX XGX XGX XX "); _pipipi1[3]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P2-3P203 mass in T2-3RN0T12P2-3P2+32P203", "GX XGX XGX X GX XWGXGX GX XGX X GX X", "1/SdS/dm0P2-3P2-3P2031/GeV2-13", " G G XGX XGX XGX XX X X", "m0P2-3P2-3P2031/GeV", " XGX XGX XGX XX "); _pipipi1[4]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3P2-3P2-3 mass in T2-3RN0T12P2-3P2+32P203", "GX XGX XGX X GX XWGXGX GX XGX X GX X", "1/SdS/dm0P2+3P2-3P2-31/GeV2-13", " G G XGX XGX XGX XX X X", "m0P2+3P2-3P2-31/GeV", " XGX XGX XGX XX "); _pipipipi1[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P2+32P203 mass in T2-3RN0T12P2-3P2+32P203", "GX XGX X GX X GX XWGXGX GX XGX X GX X", "1/SdS/dm0P2-3P2+32P2031/GeV2-13", " G G XGX XGX X GX XX X X", "m0P2-3P2+32P2031/GeV", " XGX XGX X GX XX "); _pipipipi1[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "2P2-32P203 mass in T2-3RN0T12P2-3P2+32P203", " GX X GX X GX XWGXGX GX XGX X GX X", "1/SdS/dm02P2-32P2031/GeV2-13", " G G X GX X GX XX X X", "m02P2-32P2031/GeV", " X GX X GX XX "); _pipipipi1[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "2P2-3P2+3P203 mass in T2-3RN0T12P2-3P2+32P203", " GX XGX XGX X GX XWGXGX GX XGX X GX X", "1/SdS/dm02P2-3P2+3P2031/GeV2-13", " G G X GX XGX XGX XX X X", "m02P2-3P2+3P2031/GeV", " X GX XGX XGX XX "); _q1->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "2P2-3P2+32P203 mass in T2-3RN0T12P2-3P2+32P203", " GX XGX X GX X GX XWGXGX GX XGX X GX X", "1/SdS/dm02P2-3P2+32P2031/GeV2-13", " G G X GX XGX X GX XX X X", "m02P2-3P2+32P2031/GeV", " X GX XGX X GX XX "); _pipi2[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P203 mass in T2-3RN0T1P2-34P203", "GX XGX X GX XWGXGXGX X GX X", "1/SdS/dm0P2-3P2031/GeV2-13", " G G XGX XGX XX X X", "m0P2-3P2031/GeV", " XGX XGX XX "); _pipi2[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P203 mass in T2-3RN0T1P2-34P203", "GX XGX X GX XWGXGXGX X GX X", "1/SdS/dm0P203P2031/GeV2-13", " G G XGX XGX XX X X", "m0P203P2031/GeV", " XGX XGX XX "); _pipipi2[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P203P203 mass in T2-3RN0T1P2-34P203", "GX XGX XGX X GX XWGXGXGX X GX X", "1/SdS/dm0P203P203P2031/GeV2-13", " G G XGX XGX XGX XX X X", "m0P203P203P2031/GeV", " XGX XGX XGX XX "); _pipipi2[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P203P203 mass in T2-3RN0T1P2-34P203", "GX XGX XGX X GX XWGXGXGX X GX X", "1/SdS/dm0P2-3P203P2031/GeV2-13", " G G XGX XGX XGX XX X X", "m0P2-3P203P2031/GeV", " XGX XGX XGX XX "); _pipipipi2[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P203P203P203P203 mass in T2-3RN0T1P2-34P203", "GX XGX XGX XGX X GX XWGXGXGX X GX X", "1/SdS/dm0P203P203P203P2031/GeV2-13", " G G XGX XGX XGX XGX XX X X", "m0P203P203P203P2031/GeV", " XGX XGX XGX XGX XX "); _pipipipi2[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P203P203P203 mass in T2-3RN0T1P2-34P203", "GX XGX XGX XGX X GX XWGXGXGX X GX X", "1/SdS/dm0P2-3P203P203P2031/GeV2-13", " G G XGX XGX XGX XGX XX X X", "m0P2-3P203P203P2031/GeV", " XGX XGX XGX XGX XX "); _q2->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", " mass in T2-3RN0T1P2-34P203", " GX XWGXGXGX X GX X", "1/SdS/dm0P2-34P2031/GeV2-13", " G G XGX X GX XX X X", "m0P2-34P2031/GeV", " XGX X GX XX "); _pipi3[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3P2+3 mass in T2-3RN0T13P2-32P2+3", "GX XGX X GX XWGXGX GX X GX X", "1/SdS/dm0P2+3P2+31/GeV2-13", " G G XGX XGX XX X X", "m0P2+3P2+31/GeV", " XGX XGX XX "); _pipi3[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2+3P2-3 mass in T2-3RN0T13P2-32P2+3", "GX XGX X GX XWGXGX GX X GX X", "1/SdS/dm0P2+3P2-31/GeV2-13", " G G XGX XGX XX X X", "m0P2+3P2-31/GeV", " XGX XGX XX "); _pipi3[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P2-3 mass in T2-3RN0T13P2-32P2+3", "GX XGX X GX XWGXGX GX X GX X", "1/SdS/dm0P2-3P2-31/GeV2-13", " G G XGX XGX XX X X", "m0P2-3P2-31/GeV", " XGX XGX XX "); _pipipi3[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P2-3P2-3 mass in T2-3RN0T13P2-32P2+3", "GX XGX XGX X GX XWGXGX GX X GX X", "1/SdS/dm0P2-3P2-3P2-31/GeV2-13", " G G XGX XGX XGX XX X X", "m0P2-3P2-3P2-31/GeV", " XGX XGX XGX XX "); _pipipi3[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P2-3P2+3 mass in T2-3RN0T13P2-32P2+3", "GX XGX XGX X GX XWGXGX GX X GX X", "1/SdS/dm0P2-3P2-3P2+31/GeV2-13", " G G XGX XGX XGX XX X X", "m0P2-3P2-3P2+31/GeV", " XGX XGX XGX XX "); _pipipi3[2]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P2+3P2+3 mass in T2-3RN0T13P2-32P2+3", "GX XGX XGX X GX XWGXGX GX X GX X", "1/SdS/dm0P2-3P2+3P2+31/GeV2-13", " G G XGX XGX XGX XX X X", "m0P2-3P2+3P2+31/GeV", " XGX XGX XGX XX "); _pipipipi3[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P2-3P2+3P2+3 mass in T2-3RN0T13P2-32P2+3", "GX XGX XGX XGX X GX XWGXGX GX X GX X", "1/SdS/dm0P2-3P2-3P2+3P2+31/GeV2-13", " G G XGX XGX XGX XGX XX X X", "m0P2-3P2-3P2+3P2+31/GeV", " XGX XGX XGX XGX XX "); _pipipipi3[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "P2-3P2-3P2-3P2+3 mass in T2-3RN0T13P2-32P2+3", "GX XGX XGX XGX X GX XWGXGX GX X GX X", "1/SdS/dm0P2-3P2-3P2-3P2+31/GeV2-13", " G G XGX XGX XGX XGX XX X X", "m0P2-3P2-3P2-3P2+31/GeV", " XGX XGX XGX XGX XX "); _q3->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", " mass in T2-3RN0T13P2-32P2+3", " GX XWGXGX GX X GX X", "1/SdS/dm03P2-32P2+1/GeV2-13", " G G X GX X GX X X X", "m03P2-32P2+1/GeV", " X GX X GX X "); } void Tau5Pion::doinitrun() { AnalysisHandler::doinitrun(); for(unsigned int ix=0;ix<5;++ix) { _pipi1 .push_back(new_ptr(Histogram(0.,1.8,200))); _pipipi1.push_back(new_ptr(Histogram(0.,1.8,200))); } for(unsigned int ix=0;ix<3;++ix) { _pipipipi1.push_back(new_ptr(Histogram(0.,1.8,200))); _pipi3.push_back(new_ptr(Histogram(0.,1.8,200))); _pipipi3.push_back(new_ptr(Histogram(0.,1.8,200))); } for(unsigned int ix=0;ix<2;++ix) { _pipi2.push_back(new_ptr(Histogram(0.,1.8,200))); _pipipi2.push_back(new_ptr(Histogram(0.,1.8,200))); _pipipipi2.push_back(new_ptr(Histogram(0.,1.8,200))); _pipipipi3.push_back(new_ptr(Histogram(0.,1.8,200))); } _q1=new_ptr(Histogram(0.,1.8,200)); _q2=new_ptr(Histogram(0.,1.8,200)); _q3=new_ptr(Histogram(0.,1.8,200)); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/��������������������������������������������������������0000755�0001750�0001750�00000000000�11756464211�021421� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/FFZPrimeVertex.h����������������������������������������0000644�0001750�0001750�00000010254�11754474774�024431� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef RADIATIVEZPRIME_FFZPrimeVertex_H #define RADIATIVEZPRIME_FFZPrimeVertex_H // // This is the declaration of the FFZPrimeVertex class. // #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" namespace RadiativeZPrime { using namespace ThePEG; /** * Here is the documentation of the FFZPrimeVertex class. * * @see \ref FFZPrimeVertexInterfaces "The interfaces" * defined for FFZPrimeVertex. */ class FFZPrimeVertex: public Helicity::FFVVertex { public: /** * The default constructor. */ inline FFZPrimeVertex(); /** * Calculate the couplings. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FFZPrimeVertex> initFFZPrimeVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFZPrimeVertex & operator=(const FFZPrimeVertex &); /** * Storage of the couplings. */ //@{ /** * The left couplings of the Standard Model fermions. */ vector<double> _gl; /** * The right couplings of the Standard Model fermions. */ vector<double> _gr; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FFZPrimeVertex. */ template <> struct BaseClassTrait<RadiativeZPrime::FFZPrimeVertex,1> { /** Typedef of the first base class of FFZPrimeVertex. */ typedef Helicity::FFVVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the FFZPrimeVertex class and the shared object where it is defined. */ template <> struct ClassTraits<RadiativeZPrime::FFZPrimeVertex> : public ClassTraitsBase<RadiativeZPrime::FFZPrimeVertex> { /** Return a platform-independent class name */ static string className() { return "RadiativeZPrime::FFZPrimeVertex"; } /** * The name of a file containing the dynamic library where the class * FFZPrimeVertex is implemented. It may also include several, space-separated, * libraries if the class FFZPrimeVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "RadiativeZPrime.so"; } }; /** @endcond */ } #endif /* RADIATIVEZPRIME_FFZPrimeVertex_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/GammaZPrimeZVertex.cc�����������������������������������0000644�0001750�0001750�00000003222�11754474774�025445� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the GammaZPrimeZVertex class. // #include "GammaZPrimeZVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "RadiativeZPrimeModel.h" using namespace RadiativeZPrime; void GammaZPrimeZVertex::persistentOutput(PersistentOStream & os) const { os << _coup; } void GammaZPrimeZVertex::persistentInput(PersistentIStream & is, int) { is >> _coup; } ClassDescription<GammaZPrimeZVertex> GammaZPrimeZVertex::initGammaZPrimeZVertex; // Definition of the static class description member. void GammaZPrimeZVertex::Init() { static ClassDocumentation<GammaZPrimeZVertex> documentation ("The GammaZPrimeZVertex class implements the anomalous Z Z' gamma" " vertex in the radiativeZPrimeModel"); } void GammaZPrimeZVertex::setCoupling(Energy2, tcPDPtr ,tcPDPtr,tcPDPtr) { norm(_coup); } GammaZPrimeZVertex::GammaZPrimeZVertex() { // PDG codes for the particles addToList(22,32,23); } void GammaZPrimeZVertex::doinit() { tcSMPtr sm = generator()->standardModel(); tcRadiativeZPrimeModelPtr model = dynamic_ptr_cast<tcRadiativeZPrimeModelPtr>(generator()->standardModel()); // calculate the coupling double F=0.5*(2./3.+1./3.); Energy2 scale = sqr(getParticleData(32)->mass()); double sw = sqrt(model->sin2ThetaW()); double cw = sqrt(1.-model->sin2ThetaW()); _coup = 1./16/sqr(Constants::pi)*4.*Constants::pi*model->alphaEM(scale)/sw/cw* model->gZprime()*F; orderInGem(3); orderInGs(0); AbstractVVVVertex::doinit(); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/RadiativeZPrimeModel.h����������������������������������0000644�0001750�0001750�00000014420�11754474774�025630� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef RADIATIVEZPRIME_RadiativeZPrimeModel_H #define RADIATIVEZPRIME_RadiativeZPrimeModel_H // // This is the declaration of the RadiativeZPrimeModel class. // #include "Herwig++/Models/StandardModel/StandardModel.h" namespace RadiativeZPrime { using namespace ThePEG; /** * The RadiativeZPrimeModel class is the main class for the radiative * \f$Z'\f$ model of hep-ph/0501154. * * @see \ref RadiativeZPrimeModelInterfaces "The interfaces" * defined for RadiativeZPrimeModel. */ class RadiativeZPrimeModel: public Herwig::StandardModel { public: /** * The default constructor. */ inline RadiativeZPrimeModel() : _gZprime(1.), _useZcouplings(true), _vnu(1.0), _ve(-0.072), _vu(0.3813), _vd(-0.6907), _anu(1.0), _ae(-1.0), _au(1.0), _ad(-1.0) {} /** * The coupling of the \f$Z'\f$ */ inline double gZprime() const {return _gZprime;} /** * The vector neutrino-\f$Z^0\f$ coupling. */ inline double zPrimevnu() const {return _vnu;} /** * The vector charged lepton-\f$Z^0\f$ coupling. */ inline double zPrimeve() const {return _ve;} /** * The vector up-type-\f$Z^0\f$ coupling. */ inline double zPrimevu() const {return _vu;} /** * The vector down-type-\f$Z^0\f$ coupling. */ inline double zPrimevd() const {return _vd;} /** * The axial neutrino-\f$Z^0\f$ coupling. */ inline double zPrimeanu() const {return _anu;} /** * The axial charged lepton-\f$Z^0\f$ coupling. */ inline double zPrimeae() const {return _ae;} /** * The axial up-type-\f$Z^0\f$ coupling. */ inline double zPrimeau() const {return _au;} /** * The axial down-type-\f$Z^0\f$ coupling. */ inline double zPrimead() const {return _ad;} /** * The \f$f\bar{f}Z'\f$ vertex */ inline AbstractFFVVertexPtr vertexFFZPrime() const {return _ffZPrimeVertex;} /** * The \f$\gamma Z'Z\f$ vertex */ inline AbstractVVVVertexPtr vertexGammaZPrimeZ() const {return _gammaZPrimeZVertex;} 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<RadiativeZPrimeModel> initRadiativeZPrimeModel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ RadiativeZPrimeModel & operator=(const RadiativeZPrimeModel &); 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 free coupling \f$g_{Z'}\f$ */ double _gZprime; /** * Switch to control the setting of the \f$Z'\f$ couplings to fermions */ bool _useZcouplings; /** * Vector coupling between a fundamental fermion and \f$Z'\f$. */ double _vnu; /** * Vector coupling between a fundamental fermion and \f$Z'\f$. */ double _ve; /** * Vector coupling between a fundamental fermion and \f$Z'\f$. */ double _vu; /** * Vector coupling between a fundamental fermion and \f$Z'\f$. */ double _vd; /** * Axial coupling between a fundamental fermions and \f$Z'\f$. */ double _anu; /** * Axial coupling between a fundamental fermions and \f$Z'\f$. */ double _ae; /** * Axial coupling between a fundamental fermions and \f$Z'\f$. */ double _au; /** * Axial coupling between a fundamental fermions and \f$Z'\f$. */ double _ad; /** * The \f$f\bar{f}\f$ vertex */ AbstractFFVVertexPtr _ffZPrimeVertex; /** * The \f$\gamma Z'Z\f$ vertex */ AbstractVVVVertexPtr _gammaZPrimeZVertex; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of RadiativeZPrimeModel. */ template <> struct BaseClassTrait<RadiativeZPrime::RadiativeZPrimeModel,1> { /** Typedef of the first base class of RadiativeZPrimeModel. */ typedef Herwig::StandardModel NthBase; }; /** This template specialization informs ThePEG about the name of * the RadiativeZPrimeModel class and the shared object where it is defined. */ template <> struct ClassTraits<RadiativeZPrime::RadiativeZPrimeModel> : public ClassTraitsBase<RadiativeZPrime::RadiativeZPrimeModel> { /** Return a platform-independent class name */ static string className() { return "RadiativeZPrime::RadiativeZPrimeModel"; } /** * The name of a file containing the dynamic library where the class * RadiativeZPrimeModel is implemented. It may also include several, space-separated, * libraries if the class RadiativeZPrimeModel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "RadiativeZPrime.so"; } }; ThePEG_DECLARE_POINTERS(RadiativeZPrime::RadiativeZPrimeModel,RadiativeZPrimeModelPtr); /** @endcond */ } #endif /* RADIATIVEZPRIME_RadiativeZPrimeModel_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/Makefile.in���������������������������������������������0000644�0001750�0001750�00000002143�11754474774�023503� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*- Makefile -*- (for emacs) # # This Makefile is intended for compiling Herwig++ plugins # You can find plugins here: INSERT URL # # This Makefile received very little testing, # any bug reports are very welcome! # # location of include files THEPEGINCLUDE = GSLINCLUDE = HERWIGINCLUDE = LDFLAGS = SHARED_FLAG = INCLUDE = $(THEPEGINCLUDE) $(GSLINCLUDE) $(HERWIGINCLUDE) # # C++ flags # CXX = CXXFLAGS = ALLCCFILES=$(shell echo *.cc) default : RadiativeZPrime.so %.o : %.cc %.h $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) -c -shared $< -o $@ RadiativeZPrime.so : AnomalousVVVVertex.o RadiativeZPrimeModel.o FFZPrimeVertex.o\ GammaZPrimeZVertex.o MEqq2ZPrime2ff.o MEqq2ZPrime2ZGamma.o\ MEqq2ZPrime2ZGamma2ffGamma.o SimpleZPrimeAnalysis.o $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) $(SHARED_FLAG) $(LDFLAGS) AnomalousVVVVertex.o \ RadiativeZPrimeModel.o FFZPrimeVertex.o GammaZPrimeZVertex.o \ MEqq2ZPrime2ZGamma2ffGamma.o MEqq2ZPrime2ZGamma.o MEqq2ZPrime2ff.o \ SimpleZPrimeAnalysis.o -o RadiativeZPrime.so clean: rm -f $(ALLCCFILES:.cc=.o) RadiativeZPrime.so �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/MEqq2ZPrime2ff.cc���������������������������������������0000644�0001750�0001750�00000027701�11754474774�024426� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEqq2ZPrime2ff class. // #include "MEqq2ZPrime2ff.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "RadiativeZPrimeModel.h" using namespace RadiativeZPrime; MEqq2ZPrime2ff::MEqq2ZPrime2ff() : _maxflavour(5), _gammaZ(0), _process(0) { massOption(vector<unsigned int>(2,1)); } void MEqq2ZPrime2ff::doinit() { HwMEBase::doinit(); _zPrime = getParticleData(32); _z0 = getParticleData(ThePEG::ParticleID::Z0); _gamma = getParticleData(ThePEG::ParticleID::gamma); tcSMPtr sm = generator()->standardModel(); tcRadiativeZPrimeModelPtr model = dynamic_ptr_cast<tcRadiativeZPrimeModelPtr>(generator()->standardModel()); if(!model) throw Exception() << "Must be using the RadiativeZPrimeModel in " << "MEqq2ZPrime2ff::doinit()" << Exception::abortnow; _theFFZVertex = model->vertexFFZ(); _theFFPVertex = model->vertexFFP(); _theFFZPrimeVertex = model->vertexFFZPrime(); } void MEqq2ZPrime2ff::getDiagrams() const { // which intermediates to include bool gamma = _gammaZ==0 || _gammaZ==1; bool Z0 = _gammaZ==0 || _gammaZ==2; bool Zprime = _gammaZ==0 || _gammaZ==3; // loop over the processes we need for(unsigned int ix=1;ix<17;++ix) { // increment counter to switch between quarks and leptons if(ix==7) ix+=4; // is it a valid quark process bool quark = ix<=6 && (_process==0 || _process==1 || _process-10==ix); // is it a valid lepton process bool lepton= ix>=11 && ix<=16 && (_process==0 || _process==2 || (_process==3 && ix%2==1) || (_process==4 && ix%2==0) || (ix%2==0 && (ix-10)/2==_process-7) || (ix%2==1 && (ix-9)/2 ==_process-4) ); // if not a valid process continue if(!(quark||lepton)) continue; tcPDPtr lm = getParticleData(long(ix)); tcPDPtr lp = lm->CC(); for(unsigned int i = 1; i <= _maxflavour; ++i) { tcPDPtr q = getParticleData(long(i)); tcPDPtr qb = q->CC(); if(Z0) add(new_ptr((Tree2toNDiagram(2), q, qb, 1, _z0 , 3, lm, 3, lp, -1))); if(gamma) add(new_ptr((Tree2toNDiagram(2), q, qb, 1, _gamma , 3, lm, 3, lp, -2))); if(Zprime) add(new_ptr((Tree2toNDiagram(2), q, qb, 1, _zPrime, 3, lm, 3, lp, -3))); } } } Energy2 MEqq2ZPrime2ff::scale() const { return sHat(); } double MEqq2ZPrime2ff::me2() const { vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; SpinorWaveFunction q(meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction qbar(meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction f(meMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction fbar(meMomenta()[3],mePartonData()[3],outgoing); for(unsigned int ix=0;ix<2;++ix) { q.reset(ix) ; fin.push_back(q); qbar.reset(ix); ain.push_back(qbar); f.reset(ix) ;fout.push_back(f); fbar.reset(ix);aout.push_back(fbar); } return qqME(fin,ain,fout,aout,false); } unsigned int MEqq2ZPrime2ff::orderInAlphaS() const { return 0; } unsigned int MEqq2ZPrime2ff::orderInAlphaEW() const { return 2; } Selector<MEBase::DiagramIndex> MEqq2ZPrime2ff::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if ( diags[i]->id() == -1 ) sel.insert(meInfo()[0], i); else if ( diags[i]->id() == -2 ) sel.insert(meInfo()[1], i); else if ( diags[i]->id() == -3 ) sel.insert(meInfo()[2], i); } return sel; } Selector<const ColourLines *> MEqq2ZPrime2ff::colourGeometries(tcDiagPtr diag) const { static const ColourLines c1("1 -2"); static const ColourLines c2("1 -2,4 -5"); Selector<const ColourLines *> sel; if(abs(mePartonData()[2]->id())<=6) sel.insert(1.0, &c2); else sel.insert(1.0, &c1); return sel; } void MEqq2ZPrime2ff::persistentOutput(PersistentOStream & os) const { os << _theFFZPrimeVertex << _theFFZVertex << _theFFPVertex << _zPrime << _z0 << _gamma << _maxflavour << _gammaZ << _process; } void MEqq2ZPrime2ff::persistentInput(PersistentIStream & is, int) { is >> _theFFZPrimeVertex >> _theFFZVertex >> _theFFPVertex >> _zPrime >> _z0 >> _gamma >> _maxflavour >> _gammaZ >> _process; } ClassDescription<MEqq2ZPrime2ff> MEqq2ZPrime2ff::initMEqq2ZPrime2ff; // Definition of the static class description member. void MEqq2ZPrime2ff::Init() { static ClassDocumentation<MEqq2ZPrime2ff> documentation ("The MEqq2ZPrime2ff class provides the matrix elements for " "q qbar -> f fbar in the RadiativeZPrimeModel including the option" " of interference with the photon and Z"); static Parameter<MEqq2ZPrime2ff,unsigned int> interfaceMaxFlavour ("MaxFlavour", "The heaviest incoming quark flavour this matrix element is allowed to handle", &MEqq2ZPrime2ff::_maxflavour, 5, 1, 6, false, false, Interface::limited); static Switch<MEqq2ZPrime2ff,unsigned int> interfaceGammaZ ("GammaZ", "Which terms to include", &MEqq2ZPrime2ff::_gammaZ, 3, false, false); static SwitchOption interfaceGammaZAll (interfaceGammaZ, "All", "Include both gamma, Z and Z' terms", 0); static SwitchOption interfaceGammaZGamma (interfaceGammaZ, "Gamma", "Only include the photon", 1); static SwitchOption interfaceGammaZZ (interfaceGammaZ, "Z", "Only include the Z", 2); static SwitchOption interfaceGammaZZPrime (interfaceGammaZ, "ZPrime", "Only include the Z'", 3); static Switch<MEqq2ZPrime2ff,unsigned int> interfaceProcess ("Process", "Which process to included", &MEqq2ZPrime2ff::_process, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all SM fermions as outgoing particles", 0); static SwitchOption interfaceProcessQuarks (interfaceProcess, "Quarks", "All include the quarks as outgoing particles", 1); static SwitchOption interfaceProcessLeptons (interfaceProcess, "Leptons", "Only include the leptons as outgoing particles", 2); static SwitchOption interfaceProcessChargedLeptons (interfaceProcess, "ChargedLeptons", "Only include the charged leptons as outgoing particles", 3); static SwitchOption interfaceProcessNeutrinos (interfaceProcess, "Neutrinos", "Only include the neutrinos as outgoing particles", 4); static SwitchOption interfaceProcessElectron (interfaceProcess, "Electron", "Only include e+e- as outgoing particles", 5); static SwitchOption interfaceProcessMuon (interfaceProcess, "Muon", "Only include mu+mu- as outgoing particles", 6); static SwitchOption interfaceProcessTau (interfaceProcess, "Tau", "Only include tau+tau- as outgoing particles", 7); static SwitchOption interfaceProcessNu_e (interfaceProcess, "Nu_e", "Only include nu_e ne_ebar as outgoing particles", 8); static SwitchOption interfaceProcessnu_mu (interfaceProcess, "Nu_mu", "Only include nu_mu nu_mubar as outgoing particles", 9); static SwitchOption interfaceProcessnu_tau (interfaceProcess, "Nu_tau", "Only include nu_tau nu_taubar as outgoing particles", 10); static SwitchOption interfaceProcessDown (interfaceProcess, "Down", "Only include d dbar as outgoing particles", 11); static SwitchOption interfaceProcessUp (interfaceProcess, "Up", "Only include u ubar as outgoing particles", 12); static SwitchOption interfaceProcessStrange (interfaceProcess, "Strange", "Only include s sbar as outgoing particles", 13); static SwitchOption interfaceProcessCharm (interfaceProcess, "Charm", "Only include c cbar as outgoing particles", 14); static SwitchOption interfaceProcessBottom (interfaceProcess, "Bottom", "Only include b bbar as outgoing particles", 15); static SwitchOption interfaceProcessTop (interfaceProcess, "Top", "Only include t tbar as outgoing particles", 16); } double MEqq2ZPrime2ff::qqME(vector<SpinorWaveFunction> & fin , vector<SpinorBarWaveFunction> & ain , vector<SpinorBarWaveFunction> & fout, vector<SpinorWaveFunction> & aout, bool calc) const { // scale Energy2 mb2(scale()); // matrix element to be stored ProductionMatrixElement menew(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); // which intermediates to include bool gamma = _gammaZ==0 || _gammaZ==1; bool Z0 = _gammaZ==0 || _gammaZ==2; bool Zprime = _gammaZ==0 || _gammaZ==3; // declare the variables we need unsigned int ihel1,ihel2,ohel1,ohel2; VectorWaveFunction inter[3]; double me[4]={0.,0.,0.,0.}; Complex diag[3]; // sum over helicities to get the matrix element for(ihel1=0;ihel1<2;++ihel1) { for(ihel2=0;ihel2<2;++ihel2) { // intermediate for Z if(Z0) inter[0]=_theFFZVertex -> evaluate(mb2,1,_z0 ,fin[ihel1],ain[ihel2]); // intermediate for photon if(gamma) inter[1]=_theFFPVertex -> evaluate(mb2,1,_gamma ,fin[ihel1],ain[ihel2]); // intermediate for Z' if(Zprime) inter[2]=_theFFZPrimeVertex-> evaluate(mb2,1,_zPrime,fin[ihel1],ain[ihel2]); for(ohel1=0;ohel1<2;++ohel1) { for(ohel2=0;ohel2<2;++ohel2) { // first the Z exchange diagram diag[0] = Z0 ? _theFFZVertex->evaluate(mb2,aout[ohel2],fout[ohel1],inter[0]) : 0.; // first the photon exchange diagram diag[1] = gamma ? _theFFPVertex->evaluate(mb2,aout[ohel2],fout[ohel1],inter[1]) : 0.; // then the Z' diagram diag[2] = Zprime ? _theFFZPrimeVertex->evaluate(mb2,aout[ohel2],fout[ohel1],inter[2]) : 0.; // add up squares of individual terms for(unsigned int ix=0;ix<3;++ix) me[ix+1] = norm(diag[ix]); // the full thing including interference diag[0]+=diag[1]+diag[2]; me[0] += norm(diag[0]); if(calc) menew(ihel1,ihel2,ohel1,ohel2) = diag[0]; } } } } // spin and colour factor double colspin=1./12.; if(abs(fout[0].id())<=6) colspin*=3.; // results // factor 12 from 4 helicity and 3 colour for(int ix=0;ix<3;++ix) me[ix]*=colspin; DVector save; save.push_back(me[1]); save.push_back(me[2]); save.push_back(me[3]); meInfo(save); if(calc) _me.reset(menew); return me[0]; } void MEqq2ZPrime2ff::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); hard.push_back(sub->outgoing()[1]); // order of particles unsigned int order[4]={0,1,2,3}; if(hard[0]->id()<0) swap(order[0],order[1]); if(hard[2]->id()<0) swap(order[2],order[3]); vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; SpinorWaveFunction( fin ,hard[order[0]],incoming,false,true); SpinorBarWaveFunction(ain ,hard[order[1]],incoming,false,true); SpinorBarWaveFunction(fout,hard[order[2]],outgoing,true ,true); SpinorWaveFunction( aout,hard[order[3]],outgoing,true ,true); qqME(fin,ain,fout,aout,true); // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(_me); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) hard[order[ix]]->spinInfo()->productionVertex(hardvertex); } ���������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/MEqq2ZPrime2ff.h����������������������������������������0000644�0001750�0001750�00000016414�11754474774�024267� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef RADIATIVEZPRIME_MEqq2ZPrime2ff_H #define RADIATIVEZPRIME_MEqq2ZPrime2ff_H // // This is the declaration of the MEqq2ZPrime2ff class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" namespace RadiativeZPrime { using namespace ThePEG; using namespace Herwig; /** * The MEqq2ZPrime2ff class implements the matrix element for * \f$q\bar{q}\to Z'\to f \bar{f}\f$ * * @see \ref MEqq2ZPrime2ffInterfaces "The interfaces" * defined for MEqq2ZPrime2ff. */ class MEqq2ZPrime2ff: public HwMEBase { public: /** * The default constructor. */ MEqq2ZPrime2ff(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Matrix element for \f$q\bar{q}\to \gamma/Z \to f\bar{f}\f$. * @param fin Spinors for incoming quark * @param ain Spinors for incoming antiquark * @param fout Spinors for incoming quark * @param aout Spinors for incoming antiquark * @param me Whether or not to calculate the matrix element for spin correlations */ double qqME(vector<SpinorWaveFunction> & fin , vector<SpinorBarWaveFunction> & ain , vector<SpinorBarWaveFunction> & fout, vector<SpinorWaveFunction> & aout, bool me) 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEqq2ZPrime2ff> initMEqq2ZPrime2ff; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEqq2ZPrime2ff & operator=(const MEqq2ZPrime2ff &); private: /** * Pointer to the vertices for the helicity calculations */ //@{ /** * Pointer to the \f$Z'\f$ vertex */ AbstractFFVVertexPtr _theFFZPrimeVertex; /** * Pointer to the Z vertex */ AbstractFFVVertexPtr _theFFZVertex; /** * Pointer to the photon vertex */ AbstractFFVVertexPtr _theFFPVertex; //@} /** * Pointers to the intermediate resonances */ //@{ /** * Pointer to the \f$Z'\f$ ParticleData object */ tcPDPtr _zPrime; /** * Pointer to the Z ParticleData object */ tcPDPtr _z0; /** * Pointer to the photon ParticleData object */ tcPDPtr _gamma; //@} /** * Switches to control the particles in the hard process */ //@{ /** * Allowed flavours for the incoming quarks */ unsigned int _maxflavour; /** * Whether to include both \f$Z^0\f$ and \f$\gamma\f$ or only one */ unsigned int _gammaZ; /** * Which processes to include */ unsigned int _process; //@} /** * Matrix element for spin correlations */ ProductionMatrixElement _me; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEqq2ZPrime2ff. */ template <> struct BaseClassTrait<RadiativeZPrime::MEqq2ZPrime2ff,1> { /** Typedef of the first base class of MEqq2ZPrime2ff. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEqq2ZPrime2ff class and the shared object where it is defined. */ template <> struct ClassTraits<RadiativeZPrime::MEqq2ZPrime2ff> : public ClassTraitsBase<RadiativeZPrime::MEqq2ZPrime2ff> { /** Return a platform-independent class name */ static string className() { return "RadiativeZPrime::MEqq2ZPrime2ff"; } /** * The name of a file containing the dynamic library where the class * MEqq2ZPrime2ff is implemented. It may also include several, space-separated, * libraries if the class MEqq2ZPrime2ff depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "RadiativeZPrime.so"; } }; /** @endcond */ } #endif /* RADIATIVEZPRIME_MEqq2ZPrime2ff_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/LHC-RadiativeZPrime.in����������������������������������0000644�0001750�0001750�00000007764�11754474774�025447� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator for the Raditative Z' model # in hadron collisions # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read RadiativeZPrime.model # # Other parameters for run # main run parameters cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 # these switch off the shower and hadronization #set LHCGenerator:EventHandler:CascadeHandler NULL #set LHCGenerator:EventHandler:HadronizationHandler NULL # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 5.7*GeV # # Cuts on jets and photons # set /Herwig/Cuts/JetKtCut:MinKT 0.*GeV set /Herwig/Cuts/PhotonKtCut:MinKT 0.*GeV set /Herwig/Cuts/PhotonKtCut:MinEta -10 set /Herwig/Cuts/PhotonKtCut:MaxEta 10 # # switch off Z decay modes if needed # #set /Herwig/Particles/Z0/Z0->b,bbar;:OnOff Off #set /Herwig/Particles/Z0/Z0->c,cbar;:OnOff Off #set /Herwig/Particles/Z0/Z0->d,dbar;:OnOff Off #set /Herwig/Particles/Z0/Z0->e-,e+;:OnOff Off #set /Herwig/Particles/Z0/Z0->mu-,mu+;:OnOff Off #set /Herwig/Particles/Z0/Z0->nu_e,nu_ebar;:OnOff Off #set /Herwig/Particles/Z0/Z0->nu_mu,nu_mubar;:OnOff Off #set /Herwig/Particles/Z0/Z0->nu_tau,nu_taubar;:OnOff Off #set /Herwig/Particles/Z0/Z0->s,sbar;:OnOff Off #set /Herwig/Particles/Z0/Z0->tau-,tau+;:OnOff Off #set /Herwig/Particles/Z0/Z0->u,ubar;:OnOff Off # switch off spin correlations in 2-2 process if needed #set /Herwig/Particles/Z0/Z0->e-,e+;:Decayer /Herwig/Decays/DecayME0 ################################################## # # This section contains the user defined settings # ################################################## cd /Herwig/NewPhysics # calculate decays for Z' insert NewModel:DecayParticles 0 /Herwig/Particles/Z'0 # set coupling set RadiativeZPrime/Model:gZPrime 1. # use this to get the normal Herwig++ automatic process generation # incoming particles insert ResConstructor:Incoming 0 /Herwig/Particles/d insert ResConstructor:Incoming 1 /Herwig/Particles/dbar insert ResConstructor:Incoming 2 /Herwig/Particles/u insert ResConstructor:Incoming 3 /Herwig/Particles/ubar insert ResConstructor:Incoming 4 /Herwig/Particles/s insert ResConstructor:Incoming 5 /Herwig/Particles/sbar insert ResConstructor:Incoming 6 /Herwig/Particles/c insert ResConstructor:Incoming 7 /Herwig/Particles/cbar insert ResConstructor:Incoming 8 /Herwig/Particles/b insert ResConstructor:Incoming 9 /Herwig/Particles/bbar # resonance insert ResConstructor:Intermediates 0 /Herwig/Particles/Z'0 # resonance decay products #insert ResConstructor:Outgoing 0 /Herwig/Particles/e+ insert ResConstructor:Outgoing 0 /Herwig/Particles/gamma # # of use hand-coded matrix elements # cd /Herwig/MatrixElements # # q qbar -> Z' -> f f'bar # #create RadiativeZPrime::MEqq2ZPrime2ff MEqq2ZPrime2ff RadiativeZPrime.so #set MEqq2ZPrime2ff:Process Electron #set MEqq2ZPrime2ff:GammaZ ZPrime #insert SimpleQCD:MatrixElements[0] MEqq2ZPrime2ff # # q qbar -> Z' > Z gamma (2 -> 2 process) # #create RadiativeZPrime::MEqq2ZPrime2ZGamma MEqq2ZPrime2ZGamma #insert SimpleQCD:MatrixElements[0] MEqq2ZPrime2ZGamma # # q qbar -> Z' -> Z gamma -> f f bar gamma (2 -> 3 process ) # #create RadiativeZPrime::MEqq2ZPrime2ZGamma2ffGamma MEqq2ZPrime2ZGamma2ffGamma #insert SimpleQCD:MatrixElements[0] MEqq2ZPrime2ZGamma2ffGamma # # Analysis options # cd /Herwig/Generators # don't warn if final-state quarks, needed if shower switched off set /Herwig/Analysis/Basics:CheckQuark 0 # # Simple analysis of Z' events # create RadiativeZPrime::SimpleZPrimeAnalysis /Herwig/Analysis/SimpleZPrime insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/SimpleZPrime # # save the run # saverun LHC-RadiativeZPrime LHCGenerator ������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/MEqq2ZPrime2ZGamma.cc�����������������������������������0000644�0001750�0001750�00000014655�11754474774�025213� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEqq2ZPrime2ZGamma class. // #include "MEqq2ZPrime2ZGamma.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "RadiativeZPrimeModel.h" #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "AnomalousVVVVertex.h" using namespace RadiativeZPrime; MEqq2ZPrime2ZGamma::MEqq2ZPrime2ZGamma() : _maxflavour(5) { vector<unsigned int> mopt(2,1); mopt[0]=2; massOption(mopt); rescalingOption(2); } void MEqq2ZPrime2ZGamma::doinit() { HwMEBase::doinit(); _zPrime = getParticleData(32); tcSMPtr sm = generator()->standardModel(); tcRadiativeZPrimeModelPtr model = dynamic_ptr_cast<tcRadiativeZPrimeModelPtr>(generator()->standardModel()); if(!model) throw Exception() << "Must be using the RadiativeZPrimeModel in " << "MEqq2ZPrime2ZGamma::doinit()" << Exception::abortnow; _theFFZPrimeVertex = model->vertexFFZPrime(); _theGammaZPrimeZVertex = model->vertexGammaZPrimeZ(); } void MEqq2ZPrime2ZGamma::getDiagrams() const { tcPDPtr Z0 = getParticleData(ParticleID::Z0); tcPDPtr gamma = getParticleData(ParticleID::gamma); for(unsigned int i = 1; i <= _maxflavour; ++i) { tcPDPtr q = getParticleData(long(i)); tcPDPtr qb = q->CC(); add(new_ptr((Tree2toNDiagram(2), q, qb, 1, _zPrime, 3, Z0, 3, gamma, -1))); } } Energy2 MEqq2ZPrime2ZGamma::scale() const { return sHat(); } double MEqq2ZPrime2ZGamma::me2() const { vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> gammaout,Zout; SpinorWaveFunction q(meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction qbar(meMomenta()[1],mePartonData()[1],incoming); VectorWaveFunction Zwave(meMomenta()[2],mePartonData()[2],outgoing); VectorWaveFunction Gwave(meMomenta()[3],mePartonData()[3],outgoing); for(unsigned int ix=0;ix<3;++ix) { if(ix!=1) { Gwave.reset(ix); gammaout.push_back(Gwave); } if(ix!=2) { q.reset(ix) ; fin.push_back(q); qbar.reset(ix); ain.push_back(qbar); } Zwave.reset(ix); Zout.push_back(Zwave); } return qqME(fin,ain,Zout,gammaout,false); } unsigned int MEqq2ZPrime2ZGamma::orderInAlphaS() const { return 0; } unsigned int MEqq2ZPrime2ZGamma::orderInAlphaEW() const { return 4; } Selector<MEBase::DiagramIndex> MEqq2ZPrime2ZGamma::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) sel.insert(1., i); return sel; } Selector<const ColourLines *> MEqq2ZPrime2ZGamma::colourGeometries(tcDiagPtr diag) const { static const ColourLines c1("1 -2"); Selector<const ColourLines *> sel; sel.insert(1.0, &c1); return sel; } void MEqq2ZPrime2ZGamma::persistentOutput(PersistentOStream & os) const { os << _theFFZPrimeVertex << _theGammaZPrimeZVertex << _zPrime << _maxflavour; } void MEqq2ZPrime2ZGamma::persistentInput(PersistentIStream & is, int) { is >> _theFFZPrimeVertex >> _theGammaZPrimeZVertex >> _zPrime >> _maxflavour; } ClassDescription<MEqq2ZPrime2ZGamma> MEqq2ZPrime2ZGamma::initMEqq2ZPrime2ZGamma; // Definition of the static class description member. void MEqq2ZPrime2ZGamma::Init() { static ClassDocumentation<MEqq2ZPrime2ZGamma> documentation ("The MEqq2ZPrime2ZGamma class implements the matrix element for q qbar -> Z gamma" " via a resonant Z' in the RadiativeZPrime Model"); static Parameter<MEqq2ZPrime2ZGamma,unsigned int> interfaceMaxFlavour ("MaxFlavour", "The heaviest incoming quark flavour this matrix element is allowed to handle", &MEqq2ZPrime2ZGamma::_maxflavour, 5, 1, 6, false, false, Interface::limited); } double MEqq2ZPrime2ZGamma::qqME(vector<SpinorWaveFunction> & fin , vector<SpinorBarWaveFunction> & ain , vector<VectorWaveFunction> & Zout, vector<VectorWaveFunction> & gammaout, bool calc) const { // scale Energy2 mb2(scale()); // matrix element to be stored ProductionMatrixElement menew(PDT::Spin1Half,PDT::Spin1Half,PDT::Spin1,PDT::Spin1); // declare the variables we need unsigned int ihel1,ihel2,ohel1,ohel2; VectorWaveFunction inter; double me(0.); Complex diag; // sum over helicities to get the matrix element for(ihel1=0;ihel1<2;++ihel1) { for(ihel2=0;ihel2<2;++ihel2) { // intermediate for Z' inter=_theFFZPrimeVertex->evaluate(mb2,1,_zPrime,fin[ihel1],ain[ihel2]); for(ohel1=0;ohel1<3;++ohel1) { for(ohel2=0;ohel2<2;++ohel2) { diag = _theGammaZPrimeZVertex->evaluate(mb2,gammaout[ohel2],inter,Zout[ohel1]); me += norm(diag); if(calc) menew(ihel1,ihel2,ohel1,2*ohel2) = diag; } } } } if(calc) _me.reset(menew); // spin and colour factor return me/12.; } void MEqq2ZPrime2ZGamma::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); hard.push_back(sub->outgoing()[1]); // order of particles unsigned int order[4]={0,1,2,3}; if(hard[0]->id()<0) swap(order[0],order[1]); if(hard[2]->id()==ParticleID::gamma) swap(order[2],order[3]); vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> gammaout,Zout; SpinorWaveFunction( fin ,hard[order[0]],incoming,false,true); SpinorBarWaveFunction(ain ,hard[order[1]],incoming,false,true); VectorWaveFunction(Zout ,hard[order[2]],outgoing,true,false,true); VectorWaveFunction(gammaout,hard[order[3]],outgoing,true,true ,true); gammaout[1]=gammaout[2]; qqME(fin,ain,Zout,gammaout,true); // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(_me); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) hard[order[ix]]->spinInfo()->productionVertex(hardvertex); } �����������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/RadiativeZPrimeModel.cc���������������������������������0000644�0001750�0001750�00000010662�11754474774�025772� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the RadiativeZPrimeModel class. // #include "RadiativeZPrimeModel.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace RadiativeZPrime; void RadiativeZPrimeModel::persistentOutput(PersistentOStream & os) const { os << _gZprime << _useZcouplings << _vnu << _ve << _vu << _vd << _anu << _ae << _au << _ad << _ffZPrimeVertex << _gammaZPrimeZVertex; } void RadiativeZPrimeModel::persistentInput(PersistentIStream & is, int) { is >> _gZprime >> _useZcouplings >> _vnu >> _ve >> _vu >> _vd >> _anu >> _ae >> _au >> _ad >> _ffZPrimeVertex >> _gammaZPrimeZVertex; } ClassDescription<RadiativeZPrimeModel> RadiativeZPrimeModel::initRadiativeZPrimeModel; // Definition of the static class description member. void RadiativeZPrimeModel::Init() { static ClassDocumentation<RadiativeZPrimeModel> documentation ("The RadiativeZPrimeModel class"); static Switch<RadiativeZPrimeModel,bool> interfaceUseZCouplings ("UseZCouplings", "Set the fermion couplings to the Z prime to be the same as for the Z", &RadiativeZPrimeModel::_useZcouplings, true, false, false); static SwitchOption interfaceUseZCouplingsYes (interfaceUseZCouplings, "Yes", "Set Z' couplings to Z couplings", true); static SwitchOption interfaceUseZCouplingsNo (interfaceUseZCouplings, "No", "Z' couplings are inputted", false); static Parameter<RadiativeZPrimeModel,double> interfacegZPrime ("gZPrime", "The coupling of the Z'", &RadiativeZPrimeModel::_gZprime, 1.0, 0.0, 10.0, false, false, Interface::limited); static Parameter<RadiativeZPrimeModel,double> interfaceZPrimeVnu ("Zprimev_nu", "The vector coupling between a neutrino and a Z'. ", &RadiativeZPrimeModel::_vnu, 1.0, 0, 0, false, false, Interface::nolimits); static Parameter<RadiativeZPrimeModel,double> interfaceZPrimeVe ("Zprimev_e", "The vector coupling between a charged lepton and a Z'. ", &RadiativeZPrimeModel::_ve, -0.072, 0.0, 0.0, false, false, false); static Parameter<RadiativeZPrimeModel,double> interfaceZPrimeVu ("Zprimev_u", "The vector coupling between an up-type quark and a Z'. ", &RadiativeZPrimeModel::_vu, 0.3813, 0.0, 0.0, false, false, false); static Parameter<RadiativeZPrimeModel,double> interfaceZPrimeVd ("Zprimev_d", "The vector coupling between a down-type quark and a Z'. ", &RadiativeZPrimeModel::_vd, -0.6907, 0.0, 0.0, false, false, false); static Parameter<RadiativeZPrimeModel,double> interfaceZPrimeAnu ("Zprimea_nu", "The axial coupling between a neutrino and a Z'. ", &RadiativeZPrimeModel::_anu, 1.0, 0.0, 0.0, false, false, false); static Parameter<RadiativeZPrimeModel,double> interfaceZPrimeAe ("Zprimea_e", "The axial coupling between a charged lepton and a Z'. ", &RadiativeZPrimeModel::_ae, -1.0, 0.0, 0.0, false, false, false); static Parameter<RadiativeZPrimeModel,double> interfaceZPrimeAu ("Zprimea_u", "The axial coupling between an up-type quark and a Z'. ", &RadiativeZPrimeModel::_au, 1.0, 0.0, 0.0, false, false, false); static Parameter<RadiativeZPrimeModel,double> interfaceZPrimeAd ("Zprimea_d", "The axial coupling between a down-type quark and a Z'. ", &RadiativeZPrimeModel::_ad, -1.0, 0.0, 0.0, false, false, false); static Reference<RadiativeZPrimeModel,ThePEG::Helicity::AbstractFFVVertex> interfaceVertexFFZ ("Vertex/FFZPrime", "Reference to the Standard Model FFZ Vertex", &RadiativeZPrimeModel::_ffZPrimeVertex, false, false, true, false); static Reference<RadiativeZPrimeModel,ThePEG::Helicity::AbstractVVVVertex> interfaceVertexGammaZPrimeZ ("Vertex/GammaZPrimeZ", "Reference to the gamma-Z'-Z vertex", &RadiativeZPrimeModel::_gammaZPrimeZVertex, false, false, true, false, false); } void RadiativeZPrimeModel::doinit() { if(_useZcouplings) { _vnu = vnu(); _ve = ve() ; _vu = vu() ; _vd = vd() ; _anu = anu(); _ae = ae() ; _au = au() ; _ad = ad() ; } StandardModel::doinit(); addVertex(_ffZPrimeVertex); addVertex(_gammaZPrimeZVertex); } ������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/MEqq2ZPrime2ZGamma2ffGamma.cc���������������������������0000644�0001750�0001750�00000031501�11754474774�026541� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEqq2ZPrime2ZGamma2ffGamma class. // #include "MEqq2ZPrime2ZGamma2ffGamma.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "RadiativeZPrimeModel.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "ThePEG/PDT/DecayMode.h" using namespace RadiativeZPrime; void MEqq2ZPrime2ZGamma2ffGamma::doinit() { MEBase::doinit(); _z0 = getParticleData(ParticleID::Z0); _zPrime = getParticleData(32); tcSMPtr sm = generator()->standardModel(); tcRadiativeZPrimeModelPtr model = dynamic_ptr_cast<tcRadiativeZPrimeModelPtr>(generator()->standardModel()); if(!model) throw Exception() << "Must be using the RadiativeZPrimeModel in " << "MEqq2ZPrime2ZGamma::doinit()" << Exception::abortnow; _theFFZPrimeVertex = model->vertexFFZPrime(); _theGammaZPrimeZVertex = model->vertexGammaZPrimeZ(); _theFFZVertex = model->vertexFFZ(); } void MEqq2ZPrime2ZGamma2ffGamma::getDiagrams() const { // find possible Z decays typedef Selector<tDMPtr> DecaySelector; DecaySelector Zdec = _z0->decaySelector(); vector<PDPair> Zdecays; for(DecaySelector::const_iterator cit=Zdec.begin();cit!=Zdec.end();++cit) { if(cit->second->orderedProducts().size()!=2) continue; if(cit->second->orderedProducts()[0]->id()>0) Zdecays.push_back(make_pair(cit->second->orderedProducts()[0], cit->second->orderedProducts()[1])); else Zdecays.push_back(make_pair(cit->second->orderedProducts()[1], cit->second->orderedProducts()[0])); } tcPDPtr gamma = getParticleData(ParticleID::gamma); for(unsigned int i = 1; i <= _maxflavour; ++i) { tcPDPtr q = getParticleData(long(i)); tcPDPtr qb = q->CC(); for(unsigned int iz=0;iz<Zdecays.size();++iz) { add(new_ptr((Tree2toNDiagram(2), q, qb, 1, _zPrime, 3, gamma, 3, _z0, 5, Zdecays[iz].first,5, Zdecays[iz].second, -1))); } } } Energy2 MEqq2ZPrime2ZGamma2ffGamma::scale() const { return sHat(); } int MEqq2ZPrime2ZGamma2ffGamma::nDim() const { return 5; } bool MEqq2ZPrime2ZGamma2ffGamma::generateKinematics(const double * r) { // initialize jacobian jacobian(1.); // cms energy Energy ecm=sqrt(sHat()); // first generate the mass of the off-shell gauge boson // minimum mass of the tcPDVector ptemp; ptemp.push_back(mePartonData()[3]); ptemp.push_back(mePartonData()[4]); Energy2 minMass2 = max(lastCuts().minSij(mePartonData()[3],mePartonData()[4]), lastCuts().minS(ptemp)); // minimum pt of the jet Energy ptmin = max(lastCuts().minKT(mePartonData()[2]), lastCuts().minKT(_z0)); // maximum mass of the gauge boson so pt is possible Energy2 maxMass2 = min(ecm*(ecm-2.*ptmin),lastCuts().maxS(ptemp)); if(maxMass2<=ZERO||minMass2<ZERO) return false; // also impose the limits from the ParticleData object minMass2 = max(minMass2,sqr(_z0->massMin())); maxMass2 = min(maxMass2,sqr(_z0->massMax())); // also impose the limits from the ParticleData object if(maxMass2<minMass2) return false; // generation of the mass Energy M(_z0->mass()),Gamma(_z0->width()); Energy2 M2(sqr(M)),MG(M*Gamma); double rhomin = atan2((minMass2-M2),MG); double rhomax = atan2((maxMass2-M2),MG); _mz2=M2+MG*tan(rhomin+r[1]*(rhomax-rhomin)); Energy mz=sqrt(_mz2); InvEnergy2 emjac = MG/(rhomax-rhomin)/(sqr(_mz2-M2)+sqr(MG)); // jacobian jacobian(jacobian()/sHat()/emjac); // set the masses of the outgoing particles to 2-2 scattering meMomenta()[2].setMass(ZERO); Lorentz5Momentum pz(mz); // generate the polar angle of the hard scattering double ctmin(-1.0), ctmax(1.0); Energy q(ZERO); try { q = SimplePhaseSpace::getMagnitude(sHat(), meMomenta()[2].mass(),mz); } catch ( ImpossibleKinematics ) { return false; } Energy2 pq = sqrt(sHat())*q; if ( ptmin > ZERO ) { double ctm = 1.0 - sqr(ptmin/q); if ( ctm <= 0.0 ) return false; ctmin = max(ctmin, -sqrt(ctm)); ctmax = min(ctmax, sqrt(ctm)); } if ( ctmin >= ctmax ) return false; double cth = getCosTheta(ctmin, ctmax, r[0]); Energy pt = q*sqrt(1.0-sqr(cth)); double phi = 2.0*Constants::pi*r[2]; meMomenta()[2].setVect(Momentum3( pt*sin(phi), pt*cos(phi), q*cth)); pz.setVect( Momentum3(-pt*sin(phi),-pt*cos(phi),-q*cth)); meMomenta()[2].rescaleEnergy(); pz.rescaleEnergy(); // generate the momenta of the Z decay products meMomenta()[3].setMass(mePartonData()[3]->mass()); meMomenta()[4].setMass(mePartonData()[4]->mass()); Energy q2 = ZERO; try { q2 = SimplePhaseSpace::getMagnitude(_mz2, meMomenta()[3].mass(), meMomenta()[4].mass()); } catch ( ImpossibleKinematics ) { return false; } double cth2 =-1.+2.*r[3]; double phi2=Constants::twopi*r[4]; Energy pt2 =q2*sqrt(1.-sqr(cth2)); Lorentz5Momentum pl[2]={Lorentz5Momentum( pt2*cos(phi2), pt2*sin(phi2), q2*cth2,ZERO, meMomenta()[3].mass()), Lorentz5Momentum(-pt2*cos(phi2),-pt2*sin(phi2),-q2*cth2,ZERO, meMomenta()[4].mass())}; pl[0].rescaleEnergy(); pl[1].rescaleEnergy(); Boost boostv(pz.boostVector()); pl[0].boost(boostv); pl[1].boost(boostv); meMomenta()[3] = pl[0]; meMomenta()[4] = pl[1]; // check passes all the cuts vector<LorentzMomentum> out(3); tcPDVector tout(3); for(unsigned int ix=0;ix<3;++ix) { out[ ix] = meMomenta()[ix+2]; tout[ix] = mePartonData()[ix+2]; } if ( !lastCuts().passCuts(tout, out, mePartonData()[0], mePartonData()[1]) ) return false; // jacobian jacobian((pq/sHat())*Constants::pi*jacobian()/8./sqr(Constants::pi)*q2/mz); return true; } double MEqq2ZPrime2ZGamma2ffGamma::me2() const { InvEnergy2 output(ZERO); // construct spinors for the leptons vector<SpinorBarWaveFunction> lm; vector<SpinorWaveFunction> lp; SpinorBarWaveFunction lmout(meMomenta()[3],mePartonData()[3],outgoing); SpinorWaveFunction lpout(meMomenta()[4],mePartonData()[4],outgoing); for(unsigned int ix=0;ix<2;++ix) { lmout.reset(ix);lm.push_back(lmout); lpout.reset(ix);lp.push_back(lpout); } vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> gout; SpinorWaveFunction qin (meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction qbin(meMomenta()[1],mePartonData()[1],incoming); VectorWaveFunction glout(meMomenta()[2],mePartonData()[2],outgoing); for(unsigned int ix=0;ix<2;++ix) { qin.reset(ix) ; fin.push_back(qin); qbin.reset(ix) ; ain.push_back(qbin); glout.reset(2*ix); gout.push_back(glout); } output=qqbarME(fin,ain,gout,lm,lp); return output*sHat(); } CrossSection MEqq2ZPrime2ZGamma2ffGamma::dSigHatDR() const { return me2()*jacobian()/(16.0*sqr(Constants::pi)*sHat())*sqr(hbarc); } unsigned int MEqq2ZPrime2ZGamma2ffGamma::orderInAlphaS() const { return 0; } unsigned int MEqq2ZPrime2ZGamma2ffGamma::orderInAlphaEW() const { return 4; } Selector<MEBase::DiagramIndex> MEqq2ZPrime2ZGamma2ffGamma::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) sel.insert(1., i); return sel; } Selector<const ColourLines *> MEqq2ZPrime2ZGamma2ffGamma::colourGeometries(tcDiagPtr diag) const { static const ColourLines c1=ColourLines("1 -2"); static const ColourLines c2=ColourLines("1 -2, 6 -7"); Selector<const ColourLines *> sel; if(mePartonData()[3]->coloured()) sel.insert(1.0,&c2); else sel.insert(1.0,&c1); return sel; } void MEqq2ZPrime2ZGamma2ffGamma::persistentOutput(PersistentOStream & os) const { os << _theFFZVertex << _theFFZPrimeVertex << _theGammaZPrimeZVertex << _z0 << _zPrime << _maxflavour; } void MEqq2ZPrime2ZGamma2ffGamma::persistentInput(PersistentIStream & is, int) { is >> _theFFZVertex >> _theFFZPrimeVertex >> _theGammaZPrimeZVertex >> _z0 >> _zPrime >> _maxflavour; } ClassDescription<MEqq2ZPrime2ZGamma2ffGamma> MEqq2ZPrime2ZGamma2ffGamma::initMEqq2ZPrime2ZGamma2ffGamma; // Definition of the static class description member. void MEqq2ZPrime2ZGamma2ffGamma::Init() { static ClassDocumentation<MEqq2ZPrime2ZGamma2ffGamma> documentation ("There is no documentation for the MEqq2ZPrime2ZGamma2ffGamma class"); static Parameter<MEqq2ZPrime2ZGamma2ffGamma,unsigned int> interfaceMaxFlavour ("MaxFlavour", "The heaviest incoming quark flavour this matrix element is allowed to handle", &MEqq2ZPrime2ZGamma2ffGamma::_maxflavour, 5, 1, 6, false, false, Interface::limited); } double MEqq2ZPrime2ZGamma2ffGamma:: getCosTheta(double ctmin, double ctmax, const double r) { double cth = 0.0; double zmin = 0.5*(1.0 - ctmax); double zmax = 0.5*(1.0 - ctmin); if ( zmin <= 0.0 || zmax >= 1.0 ) { jacobian((ctmax - ctmin)*jacobian()); cth = ctmin + r*(ctmax-ctmin); } else { double A1 = (2.0*zmax - 1.0)/(zmax*(1.0-zmax)); double A0 = (2.0*zmin - 1.0)/(zmin*(1.0-zmin)); double A = r*(A1 - A0) + A0; double z = A < 2.0? 2.0/(sqrt(sqr(A) + 4.0) + 2 - A): 0.5*(A - 2.0 + sqrt(sqr(A) + 4.0))/A; cth = 1.0 - 2.0*z; jacobian((2.0*(A1 - A0)*sqr(z)*sqr(1.0 - z)/(sqr(z) + sqr(1.0 - z)))*jacobian()); } return cth; } InvEnergy2 MEqq2ZPrime2ZGamma2ffGamma::qqbarME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, vector<VectorWaveFunction> & gout, vector<SpinorBarWaveFunction> & lm, vector<SpinorWaveFunction> & lp, bool calc) const { // scale Energy2 mb2(scale()); // if calculation spin corrections construct the me if(calc) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1Half, PDT::Spin1Half)); // some integers unsigned int ihel1,ihel2,ohel1,ohel2,ohel3; // compute the leptonic Z currents for speed VectorWaveFunction bcurr[2][2]; for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { bcurr[ohel2][ohel3]= _theFFZVertex->evaluate(_mz2,1,_z0,lp[ohel3],lm[ohel2]); } } // compute the matrix elements double me=0.; Complex diag; VectorWaveFunction inter; for(ihel1=0;ihel1<2;++ihel1) { for(ihel2=0;ihel2<2;++ihel2) { // intermediate for Z' inter=_theFFZPrimeVertex->evaluate(mb2,1,_zPrime,fin[ihel1],ain[ihel2]); for(ohel1=0;ohel1<2;++ohel1) { for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { diag = _theGammaZPrimeZVertex->evaluate(mb2,gout[ohel1],inter, bcurr[ohel2][ohel3]); me += norm(diag); if(calc) _me(ihel1,ihel2,2*ohel1,ohel2,ohel3) = diag; } } } } } // results // initial state spin and colour average double colspin = 1./3./4.; // and for Z decay products if(mePartonData()[3]->coloured()) colspin *= 3.; me *= colspin; return me*UnitRemoval::InvE2; } void MEqq2ZPrime2ZGamma2ffGamma::constructVertex(tSubProPtr sub) { // // extract the particles in the hard process // ParticleVector hard(5); // // incoming // hard[0]=sub->incoming().first; // hard[1]=sub->incoming().second; // if(hard[0]->id()<0) swap(hard[0],hard[1]); // // outgoing // for(unsigned int ix=0;ix<3;++ix) { // unsigned int iloc; // PPtr mother=sub->outgoing()[ix]->parents()[0]; // if(mother&&(mother->id()==ParticleID::gamma||mother->id()==ParticleID::Z0)) { // if(sub->outgoing()[ix]->id()>0) iloc=3; // else iloc=4; // } // else iloc=2; // hard[iloc]=sub->outgoing()[ix]; // } // // wavefunctions for the Z decay products // vector<SpinorBarWaveFunction> lm; // vector<SpinorWaveFunction> lp; // SpinorBarWaveFunction(lm,hard[3],outgoing,true,true); // SpinorWaveFunction (lp,hard[4],outgoing,true,true); // vector<SpinorWaveFunction> fin; // vector<SpinorBarWaveFunction> ain; // vector<VectorWaveFunction> gout; // SpinorWaveFunction (fin ,hard[0],incoming,false,true); // SpinorBarWaveFunction(ain ,hard[1],incoming,false,true); // VectorWaveFunction (gout,hard[2],outgoing,true ,true,true); // gout[1]=gout[2]; // qqbarME(fin,ain,gout,lm,lp,true); // // construct the vertex // HardVertexPtr hardvertex=new_ptr(HardVertex()); // // set the matrix element for the vertex // hardvertex->ME(_me); // // set the pointers and to and from the vertex // for(unsigned int ix=0;ix<5;++ix) // (hard[ix]->spinInfo())->productionVertex(hardvertex); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/MEqq2ZPrime2ZGamma2ffGamma.h����������������������������0000644�0001750�0001750�00000021307�11754474774�026406� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef RADIATIVEZPRIME_MEqq2ZPrime2ZGamma2ffGamma_H #define RADIATIVEZPRIME_MEqq2ZPrime2ZGamma2ffGamma_H // // This is the declaration of the MEqq2ZPrime2ZGamma2ffGamma class. // #include "ThePEG/MatrixElement/MEBase.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.fh" namespace RadiativeZPrime { using namespace ThePEG; using namespace Herwig; /** * The MEqq2ZPrime2ZGamma2ffGamma class simulates \f$q\bar{q}\to Z'\to Z\gamma\f$ * including the decay of the Z boson. * * @see \ref MEqq2ZPrime2ZGamma2ffGammaInterfaces "The interfaces" * defined for MEqq2ZPrime2ZGamma2ffGamma. */ class MEqq2ZPrime2ZGamma2ffGamma: public MEBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline MEqq2ZPrime2ZGamma2ffGamma() :_maxflavour(5) {} /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Used internally by generateKinematics, after calculating the * limits on cos(theta). */ double getCosTheta(double cthmin, double cthmax, const double r); /** * Matrix elements for the different subprocesses */ //@{ /** * Matrix element for \f$q\bar{q}\to Z/\gamma g\f$. * @param fin Spinors for incoming quark * @param ain Spinors for incoming antiquark * @param gout Polarization vectors for the outgoing photon * @param lm Spinors for outgoing lepton * @param lp Spinors for outgoing antilepton * @param me Whether or not to calculate the matrix element for spin correlations **/ InvEnergy2 qqbarME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, vector<VectorWaveFunction> & gout, vector<SpinorBarWaveFunction> & lm, vector<SpinorWaveFunction> & lp, bool me=false) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEqq2ZPrime2ZGamma2ffGamma> initMEqq2ZPrime2ZGamma2ffGamma; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEqq2ZPrime2ZGamma2ffGamma & operator=(const MEqq2ZPrime2ZGamma2ffGamma &); private: /** * Vertices for the helicity amplitude calculation */ //@{ /** * Pointer to the Z vertex */ AbstractFFVVertexPtr _theFFZVertex; /** * Pointer to the \f$Z'\f$ vertex */ AbstractFFVVertexPtr _theFFZPrimeVertex; /** * Pointer to the \f$\gamma Z' Z vertex\f$ */ AbstractVVVVertexPtr _theGammaZPrimeZVertex; //@} /** * @name Pointers to the \f$Z^0\f$ and \f$Z'\f$ ParticleData objects */ //@{ /** * Pointer to the Z ParticleData object */ tcPDPtr _z0; /** * Pointer to the \f$Z'\f$ ParticleData object */ tcPDPtr _zPrime; //@} /** * Switches to control the particles in the hard process */ //@{ /** * Allowed flavours for the incoming quarks */ unsigned int _maxflavour; //@} /** * Matrix element for spin correlations */ ProductionMatrixElement _me; /** * Storage of the off-shell Z mass to avoid the need to recalculate */ Energy2 _mz2; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEqq2ZPrime2ZGamma2ffGamma. */ template <> struct BaseClassTrait<RadiativeZPrime::MEqq2ZPrime2ZGamma2ffGamma,1> { /** Typedef of the first base class of MEqq2ZPrime2ZGamma2ffGamma. */ typedef MEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEqq2ZPrime2ZGamma2ffGamma class and the shared object where it is defined. */ template <> struct ClassTraits<RadiativeZPrime::MEqq2ZPrime2ZGamma2ffGamma> : public ClassTraitsBase<RadiativeZPrime::MEqq2ZPrime2ZGamma2ffGamma> { /** Return a platform-independent class name */ static string className() { return "RadiativeZPrime::MEqq2ZPrime2ZGamma2ffGamma"; } /** * The name of a file containing the dynamic library where the class * MEqq2ZPrime2ZGamma2ffGamma is implemented. It may also include several, space-separated, * libraries if the class MEqq2ZPrime2ZGamma2ffGamma depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "RadiativeZPrime.so"; } }; /** @endcond */ } #endif /* RADIATIVEZPRIME_MEqq2ZPrime2ZGamma2ffGamma_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/FFZPrimeVertex.cc���������������������������������������0000644�0001750�0001750�00000004513�11754474774�024570� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the FFZPrimeVertex class. // #include "FFZPrimeVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "RadiativeZPrimeModel.h" using namespace RadiativeZPrime; void FFZPrimeVertex::persistentOutput(PersistentOStream & os) const { os << _gl << _gr; } void FFZPrimeVertex::persistentInput(PersistentIStream & is, int) { is >> _gl >> _gr; } ClassDescription<FFZPrimeVertex> FFZPrimeVertex::initFFZPrimeVertex; // Definition of the static class description member. void FFZPrimeVertex::Init() { static ClassDocumentation<FFZPrimeVertex> documentation ("There is no documentation for the FFZPrimeVertex class"); } void FFZPrimeVertex::setCoupling(Energy2 q2,tcPDPtr a,tcPDPtr,tcPDPtr) { norm(1.); // the left and right couplings int iferm=abs(a->id()); if((iferm>=1 && iferm<=6)||(iferm>=11 &&iferm<=16)) { left(_gl[iferm]); right(_gr[iferm]); } else throw HelicityConsistencyError() << "FFZPrimeVertex::setCoupling " << "Unknown particle in Z vertex" << Exception::runerror; } FFZPrimeVertex::FFZPrimeVertex() : _gl(17,0.0), _gr(17,0.0) { // PDG codes for the particles // the quarks for(unsigned int ix=1;ix<7;++ix) { addToList(-ix,ix,32); } // the leptons for(unsigned int ix=11;ix<17;++ix) { addToList(-ix,ix,32); } } void FFZPrimeVertex::doinit() { tcSMPtr sm = generator()->standardModel(); tcRadiativeZPrimeModelPtr model = dynamic_ptr_cast<tcRadiativeZPrimeModelPtr>(generator()->standardModel()); double fact = 0.25*model->gZprime(); for(int ix=1;ix<4;++ix) { _gl[2*ix-1] = fact*(model->zPrimevd() + model->zPrimead() ); _gl[2*ix ] = fact*(model->zPrimevu() + model->zPrimeau() ); _gl[2*ix+9 ] = fact*(model->zPrimeve() + model->zPrimeae() ); _gl[2*ix+10] = fact*(model->zPrimevnu() + model->zPrimeanu()); _gr[2*ix-1] = fact*(model->zPrimevd() - model->zPrimead() ); _gr[2*ix ] = fact*(model->zPrimevu() - model->zPrimeau() ); _gr[2*ix+9 ] = fact*(model->zPrimeve() - model->zPrimeae() ); _gr[2*ix+10] = fact*(model->zPrimevnu() - model->zPrimeanu()); } orderInGem(1); orderInGs(0); FFVVertex::doinit(); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/SimpleZPrimeAnalysis.cc���������������������������������0000644�0001750�0001750�00000010414�11754474774�026031� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SimpleZPrimeAnalysis class. // #include "SimpleZPrimeAnalysis.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace RadiativeZPrime; using Herwig::Histogram; void SimpleZPrimeAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). tPVector particles=event->getFinalState(); PPtr ep,em,gamma; for(unsigned int ix=0;ix<particles.size();++ix) { if(particles[ix]->id()==ParticleID::eminus) em = particles[ix]; else if(particles[ix]->id()==ParticleID::eplus) ep = particles[ix]; if(particles[ix]->id()==ParticleID::gamma) gamma = particles[ix]; } if(!ep||!em||!gamma) return; Lorentz5Momentum pz=ep->momentum()+em->momentum(); *_ptZ += pz.perp()/GeV; *_rapZ += pz.rapidity(); *_phiZ += pz.phi()+Constants::pi; *_ptgamma += gamma->momentum().perp()/GeV; *_rapgamma += gamma->momentum().rapidity(); *_phigamma += gamma->momentum().phi()+Constants::pi; *_ptep += ep->momentum().perp()/GeV; *_rapep += ep->momentum().rapidity(); *_phiep += ep->momentum().phi()+Constants::pi; *_ptem += em->momentum().perp()/GeV; *_rapem += em->momentum().rapidity(); *_phiem += em->momentum().phi()+Constants::pi; *_masspair += (pz+gamma->momentum()).m()/GeV; *_massZ += pz.m()/GeV; *_massgammaep += (ep->momentum()+gamma->momentum()).m()/GeV; *_massgammaem += (em->momentum()+gamma->momentum()).m()/GeV; } NoPIOClassDescription<SimpleZPrimeAnalysis> SimpleZPrimeAnalysis::initSimpleZPrimeAnalysis; // Definition of the static class description member. void SimpleZPrimeAnalysis::Init() { static ClassDocumentation<SimpleZPrimeAnalysis> documentation ("There is no documentation for the SimpleZPrimeAnalysis class"); } void SimpleZPrimeAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); using namespace Herwig::HistogramOptions; _ptZ ->topdrawOutput(outfile,Frame,"BLACK","Z pt"); _rapZ ->topdrawOutput(outfile,Frame,"BLACK","Z rapidity"); _phiZ ->topdrawOutput(outfile,Frame,"BLACK","Z azimuth"); _ptgamma ->topdrawOutput(outfile,Frame,"BLACK","Photon pt"); _rapgamma ->topdrawOutput(outfile,Frame,"BLACK","Photon rapidity"); _phigamma ->topdrawOutput(outfile,Frame,"BLACK","Photon azimuth"); _ptep ->topdrawOutput(outfile,Frame,"BLACK","e+ pt"); _rapep ->topdrawOutput(outfile,Frame,"BLACK","e+ rapidity"); _phiep ->topdrawOutput(outfile,Frame,"BLACK","e+ azimuth"); _ptem ->topdrawOutput(outfile,Frame,"BLACK","e- pt"); _rapem ->topdrawOutput(outfile,Frame,"BLACK","e- rapidity"); _phiem ->topdrawOutput(outfile,Frame,"BLACK","e- azimuth"); _masspair ->topdrawOutput(outfile,Frame,"BLACK","Mass of Z+gamma"); _massZ ->topdrawOutput(outfile,Frame,"BLACK","Mass of Z"); _massgammaep ->topdrawOutput(outfile,Frame,"BLACK","Mass of e+gamma"); _massgammaem ->topdrawOutput(outfile,Frame,"BLACK","Mass of e-gamma"); } void SimpleZPrimeAnalysis::doinitrun() { AnalysisHandler::doinitrun(); _ptZ = new_ptr(Histogram( 0.,1000.,100)); _rapZ = new_ptr(Histogram(-10., 10.,100)); _phiZ = new_ptr(Histogram(0.,Constants::twopi,100)); _ptgamma = new_ptr(Histogram( 0.,1000.,100)); _rapgamma = new_ptr(Histogram(-10., 10.,100)); _phigamma = new_ptr(Histogram(0.,Constants::twopi,100)); _ptep = new_ptr(Histogram( 0.,1000.,100)); _rapep = new_ptr(Histogram(-10., 10.,100)); _phiep = new_ptr(Histogram(0.,Constants::twopi,100)); _ptem = new_ptr(Histogram( 0.,1000.,100)); _rapem = new_ptr(Histogram(-10., 10.,100)); _phiem = new_ptr(Histogram(0.,Constants::twopi,100)); _masspair = new_ptr(Histogram(0.,1000.,100)); _massZ = new_ptr(Histogram(70.,100.,100)); _massgammaep = new_ptr(Histogram(0.,1000.,100)); _massgammaem = new_ptr(Histogram(0.,1000.,100)); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/AnomalousVVVVertex.h������������������������������������0000644�0001750�0001750�00000011061�11754474774�025344� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef RADIATIVEZPRIME_AnomalousVVVVertex_H #define RADIATIVEZPRIME_AnomalousVVVVertex_H // // This is the declaration of the AnomalousVVVVertex class. // #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" namespace RadiativeZPrime { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The AnomalousVVVVertex class implements the anomalous Vector-Vector-Vector vertex. * * Only the member which evaluates the matrix element is implemented. The vertex * is defined to be * \[ i\epsilon_{\mu\nu\alpha\beta} * \varepsilon^\mu_1 \varepsilon^\nu_2 \varepsilon^\alpha_2 p_1^\beta\] * * * @see \ref AnomalousVVVVertexInterfaces "The interfaces" * defined for AnomalousVVVVertex. */ class AnomalousVVVVertex: public AbstractVVVVertex { public: /** * Members to calculate the helicity amplitude expressions for vertices * and off-shell particles. */ //@{ /** * Evaluate the vertex. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param vec1 The wavefunction for the first vector. * @param vec2 The wavefunction for the second vector. * @param vec3 The wavefunction for the third vector. */ virtual Complex evaluate(Energy2 q2, const VectorWaveFunction & vec1, const VectorWaveFunction & vec2, const VectorWaveFunction & vec3); /** * Evaluate the off-shell vector coming from the vertex. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param iopt Option of the shape of the Breit-Wigner for the off-shell vector. * @param out The ParticleData pointer for the off-shell vector. * @param vec2 The wavefunction for the second vector. * @param vec3 The wavefunction for the third vector. * @param mass The mass of the off-shell particle if not taken from the ParticleData * object * @param width The width of the off-shell particle if not taken from the ParticleData * object */ virtual VectorWaveFunction evaluate(Energy2 q2,int iopt, tcPDPtr out, const VectorWaveFunction & vec2, const VectorWaveFunction & vec3, Energy mass=-GeV, Energy width=-GeV); //@} /** * Calculate the couplings. This method is virtual and must be implemented in * classes inheriting from this. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3)=0; public: /** * 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(); private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class without persistent data. */ static AbstractNoPIOClassDescription<AnomalousVVVVertex> initAnomalousVVVVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ AnomalousVVVVertex & operator=(const AnomalousVVVVertex &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of AnomalousVVVVertex. */ template <> struct BaseClassTrait<RadiativeZPrime::AnomalousVVVVertex,1> { /** Typedef of the first base class of AnomalousVVVVertex. */ typedef Helicity::AbstractVVVVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the AnomalousVVVVertex class and the shared object where it is defined. */ template <> struct ClassTraits<RadiativeZPrime::AnomalousVVVVertex> : public ClassTraitsBase<RadiativeZPrime::AnomalousVVVVertex> { /** Return a platform-independent class name */ static string className() { return "RadiativeZPrime::AnomalousVVVVertex"; } /** * The name of a file containing the dynamic library where the class * AnomalousVVVVertex is implemented. It may also include several, space-separated, * libraries if the class AnomalousVVVVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "RadiativeZPrime.so"; } }; /** @endcond */ } #endif /* RADIATIVEZPRIME_AnomalousVVVVertex_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/SimpleZPrimeAnalysis.h����������������������������������0000644�0001750�0001750�00000013143�11754474774�025675� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef RADIATIVEZPRIME_SimpleZPrimeAnalysis_H #define RADIATIVEZPRIME_SimpleZPrimeAnalysis_H // // This is the declaration of the SimpleZPrimeAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace RadiativeZPrime { using namespace ThePEG; using Herwig::HistogramPtr; /** * Here is the documentation of the SimpleZPrimeAnalysis class. * * @see \ref SimpleZPrimeAnalysisInterfaces "The interfaces" * defined for SimpleZPrimeAnalysis. */ class SimpleZPrimeAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<SimpleZPrimeAnalysis> initSimpleZPrimeAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SimpleZPrimeAnalysis & operator=(const SimpleZPrimeAnalysis &); private: /** * Histogram for the Z \f$p_T\f$ */ HistogramPtr _ptZ; /** * Histogram for the Z rapidity */ HistogramPtr _rapZ; /** * Histogram for the Z azimuth */ HistogramPtr _phiZ; /** * Histogram for the photon \f$p_T\f$ */ HistogramPtr _ptgamma; /** * Histogram for the photon rapidity */ HistogramPtr _rapgamma; /** * Histogram for the photon azimuth */ HistogramPtr _phigamma; /** * Histogram for the \f$e^+\f$ \f$p_T\f$ */ HistogramPtr _ptep; /** * Histogram for the \f$e^+\f$ rapidity */ HistogramPtr _rapep; /** * Histogram for the \f$e^+\f$ azimuth */ HistogramPtr _phiep; /** * Histogram for the \f$e^-\f$ \f$p_T\f$ */ HistogramPtr _ptem; /** * Histogram for the \f$e^-\f$ rapidity */ HistogramPtr _rapem; /** * Histogram for the \f$e^-\f$ azimuth */ HistogramPtr _phiem; /** * Histogram for the mass of the photon and Z */ HistogramPtr _masspair; /** * Histgram for the mass of the Z */ HistogramPtr _massZ; /** * Histogram for the mass of the photon and \f$e^+\f$ */ HistogramPtr _massgammaep; /** * Histogram for the mass of the photon and \f$e^-\f$ */ HistogramPtr _massgammaem; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SimpleZPrimeAnalysis. */ template <> struct BaseClassTrait<RadiativeZPrime::SimpleZPrimeAnalysis,1> { /** Typedef of the first base class of SimpleZPrimeAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the SimpleZPrimeAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<RadiativeZPrime::SimpleZPrimeAnalysis> : public ClassTraitsBase<RadiativeZPrime::SimpleZPrimeAnalysis> { /** Return a platform-independent class name */ static string className() { return "RadiativeZPrime::SimpleZPrimeAnalysis"; } /** * The name of a file containing the dynamic library where the class * SimpleZPrimeAnalysis is implemented. It may also include several, space-separated, * libraries if the class SimpleZPrimeAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "RadiativeZPrime.so"; } }; /** @endcond */ } #endif /* RADIATIVEZPRIME_SimpleZPrimeAnalysis_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/MEqq2ZPrime2ZGamma.h������������������������������������0000644�0001750�0001750�00000016053�11754474774�025047� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef RADIATIVEZPRIME_MEqq2ZPrime2ZGammma_H #define RADIATIVEZPRIME_MEqq2ZPrime2ZGamma_H // // This is the declaration of the MEqq2ZPrime2ZGamma class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.fh" namespace RadiativeZPrime { using namespace ThePEG; using namespace Herwig; /** * The MEqq2ZPrime2ZGamma class implements the matrix element for * \f$q\bar{q}\to Z'\to Z\gamma\f$. * * @see \ref MEqq2ZPrime2ZGammaInterfaces "The interfaces" * defined for MEqq2ZPrime2ZGamma. */ class MEqq2ZPrime2ZGamma: public HwMEBase { public: /** * The default constructor. */ MEqq2ZPrime2ZGamma(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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. */ inline virtual IBPtr clone() const { return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const { return new_ptr(*this);} //@} protected: /** * Matrix element for \f$q\bar{q}\to \gamma/Z \to f\bar{f}\f$. * @param fin Spinors for incoming quark * @param ain Spinors for incoming antiquark * @param Zout Polarization vectors for outgoing Z * @param gammaout Polarization vectors for the the outgoing photon * @param me Whether or not to calculate the matrix element for spin correlations */ double qqME(vector<SpinorWaveFunction> & fin , vector<SpinorBarWaveFunction> & ain , vector<VectorWaveFunction> & Zout, vector<VectorWaveFunction> & gammaout, bool me) 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEqq2ZPrime2ZGamma> initMEqq2ZPrime2ZGamma; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEqq2ZPrime2ZGamma & operator=(const MEqq2ZPrime2ZGamma &); private: /** * Pointer to the vertices for the helicity calculations */ //@{ /** * Pointer to the \f$Z'\f$ vertex */ AbstractFFVVertexPtr _theFFZPrimeVertex; /** * Pointer to the \f$\gamma Z' Z vertex\f$ */ AbstractVVVVertexPtr _theGammaZPrimeZVertex; //@} /** * Pointer to the \f$Z'\f$ ParticleData object */ tcPDPtr _zPrime; /** * Switches to control the particles in the hard process */ //@{ /** * Allowed flavours for the incoming quarks */ unsigned int _maxflavour; //@} /** * Matrix element for spin correlations */ ProductionMatrixElement _me; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEqq2ZPrime2ZGamma. */ template <> struct BaseClassTrait<RadiativeZPrime::MEqq2ZPrime2ZGamma,1> { /** Typedef of the first base class of MEqq2ZPrime2ZGamma. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEqq2ZPrime2ZGamma class and the shared object where it is defined. */ template <> struct ClassTraits<RadiativeZPrime::MEqq2ZPrime2ZGamma> : public ClassTraitsBase<RadiativeZPrime::MEqq2ZPrime2ZGamma> { /** Return a platform-independent class name */ static string className() { return "RadiativeZPrime::MEqq2ZPrime2ZGamma"; } /** * The name of a file containing the dynamic library where the class * MEqq2ZPrime2ZGamma is implemented. It may also include several, space-separated, * libraries if the class MEqq2ZPrime2ZGamma depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "RadiativeZPrime.so"; } }; /** @endcond */ } #endif /* RADIATIVEZPRIME_MEqq2ZPrime2ZGamma_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/GammaZPrimeZVertex.h������������������������������������0000644�0001750�0001750�00000010336�11754474774�025313� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef RADIATIVEZPRIME_GammaZPrimeZVertex_H #define RADIATIVEZPRIME_GammaZPrimeZVertex_H // // This is the declaration of the GammaZPrimeZVertex class. // #include "AnomalousVVVVertex.h" namespace RadiativeZPrime { using namespace ThePEG; /** * Here is the documentation of the GammaZPrimeZVertex class. * * @see \ref GammaZPrimeZVertexInterfaces "The interfaces" * defined for GammaZPrimeZVertex. */ class GammaZPrimeZVertex: public AnomalousVVVVertex { public: /** * The default constructor. */ inline GammaZPrimeZVertex(); /** * Calculate the couplings. This method is virtual and must be implemented in * classes inheriting from this. * @param q2 The scale \f$q^2\f$ for the coupling at the vertex. * @param part1 The ParticleData pointer for the first particle. * @param part2 The ParticleData pointer for the second particle. * @param part3 The ParticleData pointer for the third particle. */ virtual void setCoupling(Energy2 q2,tcPDPtr part1,tcPDPtr part2,tcPDPtr part3); 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<GammaZPrimeZVertex> initGammaZPrimeZVertex; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GammaZPrimeZVertex & operator=(const GammaZPrimeZVertex &); private: /** * Storage of the coupling */ double _coup; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of GammaZPrimeZVertex. */ template <> struct BaseClassTrait<RadiativeZPrime::GammaZPrimeZVertex,1> { /** Typedef of the first base class of GammaZPrimeZVertex. */ typedef RadiativeZPrime::AnomalousVVVVertex NthBase; }; /** This template specialization informs ThePEG about the name of * the GammaZPrimeZVertex class and the shared object where it is defined. */ template <> struct ClassTraits<RadiativeZPrime::GammaZPrimeZVertex> : public ClassTraitsBase<RadiativeZPrime::GammaZPrimeZVertex> { /** Return a platform-independent class name */ static string className() { return "RadiativeZPrime::GammaZPrimeZVertex"; } /** * The name of a file containing the dynamic library where the class * GammaZPrimeZVertex is implemented. It may also include several, space-separated, * libraries if the class GammaZPrimeZVertex depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "RadiativeZPrime.so"; } }; /** @endcond */ } #endif /* RADIATIVEZPRIME_GammaZPrimeZVertex_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/AnomalousVVVVertex.cc�����������������������������������0000644�0001750�0001750�00000003327�11754474774�025510� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the AnomalousVVVVertex class. // #include "AnomalousVVVVertex.h" #include "ThePEG/Helicity/epsilon.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/EnumParticles.h" using namespace RadiativeZPrime; AbstractNoPIOClassDescription<AnomalousVVVVertex> AnomalousVVVVertex::initAnomalousVVVVertex; // Definition of the static class description member. void AnomalousVVVVertex::Init() { static ClassDocumentation<AnomalousVVVVertex> documentation ("There is no documentation for the AnomalousVVVVertex class"); } // evaluate the vertex Complex AnomalousVVVVertex::evaluate(Energy2 q2, const VectorWaveFunction & vec1, const VectorWaveFunction & vec2, const VectorWaveFunction & vec3) { // calculate the coupling setCoupling(q2,vec1.particle(),vec2.particle(),vec3.particle()); LorentzPolarizationVector eps = epsilon(vec1.wave(),vec2.wave(),vec3.wave()); if(vec1.particle()->id()==ParticleID::gamma) return norm()*Complex(0.,1.)*(eps*vec1.momentum())*UnitRemoval::InvE; else if(vec2.particle()->id()==ParticleID::gamma) return norm()*Complex(0.,1.)*(eps*vec2.momentum())*UnitRemoval::InvE; else return norm()*Complex(0.,1.)*(eps*vec3.momentum())*UnitRemoval::InvE; } // off-shell vector VectorWaveFunction AnomalousVVVVertex::evaluate(Energy2, int, tcPDPtr, const VectorWaveFunction & , const VectorWaveFunction &, Energy, Energy) { throw Exception() << "AnomalousVVVVertex::evaluate() only implemented " << "for the evaluation of the vertex, not for the " << "evaluation of the off-shell vector wavefunction" << Exception::runerror; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/RadiativeZPrime/RadiativeZPrime.model�����������������������������������0000644�0001750�0001750�00000005453�11754474774�025526� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Common setup for Randall-Sundrum models # # This file does not contain anything that # users need to touch. User settings are in # LHC-RadiativeZPrime.in # ################################################### # # Particle Data object for the Zprime # ################################################### cd /Herwig/Particles create /ThePEG/ParticleData Z'0 setup Z'0 32 Z'0 500.0 0.0 0.0 0.0 0 0 3 0 defaultparticle Z'0 ################################################### # # Main directory and model object # ################################################### mkdir /Herwig/NewPhysics/RadiativeZPrime cd /Herwig/NewPhysics/RadiativeZPrime create RadiativeZPrime::RadiativeZPrimeModel Model RadiativeZPrime.so # SM couplings set Model:QCD/RunningAlphaS /Herwig/AlphaS set Model:EW/RunningAlphaEM /Herwig/AlphaEM set Model:EW/CKM /Herwig/CKM set Model:RunningMass /Herwig/RunningMass ################################################### # # Vertices # ################################################### # create vertices mkdir /Herwig/Vertices/RadiativeZPrime cd /Herwig/Vertices/RadiativeZPrime create RadiativeZPrime::GammaZPrimeZVertex RZ_GammaZPrimeZVertex create RadiativeZPrime::FFZPrimeVertex RZ_FFZPrimeVertex cd /Herwig/NewPhysics/RadiativeZPrime # 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/HPP /Herwig/Vertices/HPPVertex # Z' vertices set Model:Vertex/FFZPrime /Herwig/Vertices/RadiativeZPrime/RZ_FFZPrimeVertex set Model:Vertex/GammaZPrimeZ /Herwig/Vertices/RadiativeZPrime/RZ_GammaZPrimeZVertex ################################################### # # Setting to ensure spin correlations # and generation of processes and decays # ################################################### cd /Herwig/NewPhysics insert /Herwig/EventHandlers/LEPHandler:PreCascadeHandlers 0 DecayHandler insert /Herwig/EventHandlers/LHCHandler:PreCascadeHandlers 0 DecayHandler # Set up the model framework set RadiativeZPrime/Model:ModelGenerator NewModel ################################################### # # Choose RadiativeZPrimeModel over SM # ################################################### cd /Herwig/Generators set LEPGenerator:StandardModelParameters /Herwig/NewPhysics/RadiativeZPrime/Model set LHCGenerator:StandardModelParameters /Herwig/NewPhysics/RadiativeZPrime/Model ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/����������������������������������������������������������0000755�0001750�0001750�00000000000�11756464211�021113� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/EtaDecayAnalysis.cc���������������������������������������0000644�0001750�0001750�00000031232�11754474774�024623� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the EtaDecayAnalysis class. // #include "EtaDecayAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/EventRecord/Event.h" using namespace Herwig; void EtaDecayAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). // find all eta and eta' particles tPVector particles; for(unsigned int ix=0, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part=event->primaryCollision()->step(ix)->all(); ThePEG::ParticleSet::iterator iter=part.begin(); ThePEG::ParticleSet::iterator end=part.end(); for( ;iter!=end;++iter) {if((**iter).id()==ParticleID::eta||(**iter).id()==ParticleID::etaprime) {particles.push_back(*iter);}} } // analyse them analyze(particles); } void EtaDecayAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void EtaDecayAnalysis::analyze(tPPtr part) { // ensure 2 or 3 decay products if(part->children().size()!=3&&part->children().size()!=2) return; int imeson; if(part->id()==ParticleID::eta) imeson=0; else if(part->id()==ParticleID::etaprime) imeson=1; else return; // pi0 gamma gamma analysis if(part->children().size()==3&& part->children()[0]->id()==ParticleID::pi0&& part->children()[1]->id()==ParticleID::gamma&& part->children()[2]->id()==ParticleID::gamma) { Lorentz5Momentum ptemp= part->children()[1]->momentum()+part->children()[2]->momentum(); ptemp.rescaleMass(); *_mgammagamma[imeson] +=ptemp.mass()/MeV; ptemp=part->children()[0]->momentum()+part->children()[1]->momentum(); ptemp.rescaleMass(); *_mpi0gamma[imeson] +=ptemp.mass()/MeV; ptemp=part->children()[0]->momentum()+part->children()[2]->momentum(); ptemp.rescaleMass(); *_mpi0gamma[imeson] +=ptemp.mass()/MeV; } // pi+pi-gamma analysis else if((part->children().size()==3&& part->children()[0]->id()==ParticleID::piplus&& part->children()[1]->id()==ParticleID::piminus&& part->children()[2]->id()==ParticleID::gamma)|| (part->children().size()==2&& part->children()[0]->id()==ParticleID::rho0&& part->children()[1]->id()==ParticleID::gamma)) { Lorentz5Momentum pout[3]; if(part->children().size()==2) { pout[0]=part->children()[0]->children()[0]->momentum(); pout[1]=part->children()[0]->children()[1]->momentum(); pout[2]=part->children()[1]->momentum(); } else { pout[0]=part->children()[0]->momentum(); pout[1]=part->children()[1]->momentum(); pout[2]=part->children()[2]->momentum(); } Lorentz5Momentum ptemp=pout[0]+pout[1]; ptemp.rescaleMass(); *_mpippim[imeson]+=ptemp.mass()/MeV; Energy egamma = 0.5*(part->mass()*part->mass()-ptemp.mass()*ptemp.mass())/part->mass(); *_photonenergy[imeson]+=egamma/MeV; ptemp=pout[imeson]+pout[2];ptemp.rescaleMass(); *_mpipgamma[imeson]+=ptemp.mass()/MeV; ptemp=pout[1]+pout[2];ptemp.rescaleMass(); *_mpimgamma[imeson]+=ptemp.mass()/MeV; } else { vector<Lorentz5Momentum> ppim,ppip,ppi0,peta; for(unsigned int ix=0;ix<part->children().size();++ix) { long id = part->children()[ix]->id(); if(id==ParticleID::piplus) ppip .push_back(part->children()[ix]->momentum()); else if(id==ParticleID::piminus) ppim .push_back(part->children()[ix]->momentum()); else if(id==ParticleID::pi0) ppi0 .push_back(part->children()[ix]->momentum()); else if(id==ParticleID::eta) peta .push_back(part->children()[ix]->momentum()); } if(ppi0.size()==3) { *_dpi0pi0[imeson]+=(ppi0[0]+ppi0[1]).m()/MeV; *_dpi0pi0[imeson]+=(ppi0[0]+ppi0[2]).m()/MeV; *_dpi0pi0[imeson]+=(ppi0[1]+ppi0[2]).m()/MeV; } else if(ppip.size()==1&&ppim.size()==1&&ppi0.size()==1) { *_dpi0pip[imeson]+=(ppi0[0]+ppip[0]).m()/MeV; *_dpi0pim[imeson]+=(ppi0[0]+ppim[0]).m()/MeV; *_dpippim[imeson]+=(ppip[0]+ppim[0]).m()/MeV; } else if(ppi0.size()==2&&peta.size()==1) { *_dpi0pi0[2]+=(ppi0[0]+ppi0[1]).m()/MeV; *_dpi0eta[0]+=(ppi0[0]+peta[0]).m()/MeV; *_dpi0eta[0]+=(ppi0[1]+peta[0]).m()/MeV; } else if(ppip.size()==1&&ppim.size()==1&&peta.size()==1) { *_dpippim[2]+=(ppip[0]+ppim[0]).m()/MeV; *_dpipeta[0]+=(ppip[0]+peta[0]).m()/MeV; *_dpimeta[0]+=(ppim[0]+peta[0]).m()/MeV; } } } NoPIOClassDescription<EtaDecayAnalysis> EtaDecayAnalysis::initEtaDecayAnalysis; // Definition of the static class description member. void EtaDecayAnalysis::Init() { static ClassDocumentation<EtaDecayAnalysis> documentation ("The EtaDecayAnalysis class performs the analysis of the decays of eta and eta\'" " mesons"); } void EtaDecayAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; _mgammagamma[0]->topdrawOutput(output,Frame|Errorbars, "RED", "GG mass in HRP203GG", "GG GWGX XGG", "1/GdG/dm0GG1/MeV2-13", " F F XGGX X X", "m0GG1/MeV", " XGGX "); _mpi0gamma[0]->topdrawOutput(output,Frame|Errorbars, "RED", "P203G mass in HRP203GG", "GX XG GWGX XGG", "1/GdG/dm0P203G1/MeV2-13", " F F XGX XGX X X", "m0P203G1/MeV", " XGX XGX "); _mgammagamma[1]->topdrawOutput(output,Frame|Errorbars, "RED", "GG mass in H'RP203GG", "GG G WGX XGG", "1/GdG/dm0GG1/MeV2-13", " F F XGGX X X", "m0GG1/MeV", " XGGX "); _mpi0gamma[1]->topdrawOutput(output,Frame|Errorbars, "RED", "P203G mass in H'RP203GG", "GX XG G WGX XGG", "1/GdG/dm0P203G1/MeV2-13", " F F XGX XGX X X", "m0P203G1/MeV", " XGX XGX "); _mpipgamma[0]->topdrawOutput(output,Frame|Errorbars, "RED", "P2+3G mass in HRP2+3P2-3G", "GX XG GWGX XGX XG", "1/GdG/dm0P2+3G1/MeV2-13", " F F XGX XGX X X", "m0P2+3G1/MeV", " XGX XGX "); _mpimgamma[0]->topdrawOutput(output,Frame|Errorbars, "RED", "P2-3G mass in HRP2+3P2-3G", "GX XG GWGX XGX XG", "1/GdG/dm0P2-3G1/MeV2-13", " F F XGX XGX X X", "m0P2-3G1/MeV", " XGX XGX "); _photonenergy[0]->topdrawOutput(output,Frame|Errorbars, "RED", "G Energy in HRP2+3P2-3G", "G GWGX XGX XG", "1/GdG/dE0G1/MeV2-13", " F F XGX X X", "E0G1/MeV", " XGX "); _mpippim[0]->topdrawOutput(output,Frame|Errorbars, "RED", "P2-3P2+3 mass in HRP2+3P2-3G", "GX XGX X GWGX XGX XG", "1/GdG/dm0P2-3P2+31/MeV2-13", " F F 0GX XGX X1 X X", "m0P2-3P2+31/MeV", " XGX XGX XX "); _mpipgamma[1]->topdrawOutput(output,Frame|Errorbars, "RED", "P2+3G mass in H'RP2+3P2-3G", "GX XG G WGX XGX XG", "1/GdG/dm0P2+3G1/MeV2-13", " F F XGX XGX X X", "m0P2+3G1/MeV", " XGX XGX "); _mpimgamma[1]->topdrawOutput(output,Frame|Errorbars, "RED", "P2-3G mass in H'RP2+3P2-3G", "GX XG G WGX XGX XG", "1/GdG/dm0P2-3G1/MeV2-13", " F F XGX XGX X X", "m0P2-3G1/MeV", " XGX XGX "); _photonenergy[1]->topdrawOutput(output,Frame|Errorbars, "RED", "G Energy in H'RP2+3P2-3G", "G G WGX XGX XG", "1/GdG/dE0G1/MeV2-13", " F F XGX X X", "E0G1/MeV", " XGX "); _mpippim[1]->topdrawOutput(output,Frame|Errorbars, "RED", "P2-3P2+3 mass in H'RP2+3P2-3G", "GX XGX X G WGX XGX XG", "1/GdG/dm0P2-3P2+31/MeV2-13", " F F XGX XGX XX X X", "m0P2-3P2+31/MeV", " XGX XGX XX "); _dpi0pi0[0]->topdrawOutput(output,Frame|Errorbars, "RED", "P203P203 mass in HRP203P203P203", "GX XGX X GWGX XGX XGX X", "1/GdG/dm0P203P2031/MeV2-13", " F F XGX XGX XX X X", "m0P203P2031/MeV", " XGX XGX XX "); _dpi0pi0[1]->topdrawOutput(output,Frame|Errorbars, "RED", "P203P203 mass in H'RP203P203P203", "GX XGX X G WGX XGX XGX X", "1/GdG/dm0P203P2031/MeV2-13", " F F XGX XGX XX X X", "m0P203P2031/MeV", " XGX XGX XX "); _dpippim[0]->topdrawOutput(output,Frame|Errorbars, "RED", "P2-3P2+3 mass in HRP2+3P2-3P203", "GX XGX X GWGX XGX XGX X", "1/GdG/dm0P2-3P2+31/MeV2-13", " F F XGX XGX XX X X", "m0P2-3P2+31/MeV", " XGX XGX XX "); _dpi0pip[0]->topdrawOutput(output,Frame|Errorbars, "RED", "P203P2+3 mass in HRP2+3P2-3P203", "GX XGX X GWGX XGX XGX X", "1/GdG/dm0P203P2+31/MeV2-13", " F F XGX XGX XX X X", "m0P203P2+31/MeV", " XGX XGX XX "); _dpi0pim[0]->topdrawOutput(output,Frame|Errorbars, "RED", "P203P2-3 mass in HRP2+3P2-3P203", "GX XGX X GWGX XGX XGX X", "1/GdG/dm0P203P2-31/MeV2-13", " F F XGX XGX XX X X", "m0P203P2-31/MeV", " XGX XGX XX "); _dpi0pim[1]->topdrawOutput(output,Frame|Errorbars, "RED", "P203P2-3 mass in H'RP2+3P2-3P203", "GX XGX X G WGX XGX XGX X", "1/GdG/dm0P203P2-31/MeV2-13", " F F XGX XGX XX X X", "m0P203P2-31/MeV", " XGX XGX XX "); _dpi0pip[1]->topdrawOutput(output,Frame|Errorbars, "RED", "P203P2+3 mass in H'RP2+3P2-3P203", "GX XGX X G WGX XGX XGX X", "1/GdG/dm0P203P2+31/MeV2-13", " F F XGX XGX XX X X", "m0P203P2+31/MeV", " XGX XGX XX "); _dpippim[1]->topdrawOutput(output,Frame|Errorbars, "RED", "P2-3P2+3 mass in H'RP2+3P2-3P203", "GX XGX X G WGX XGX XGX X", "1/GdG/dm0P2-3P2+31/MeV2-13", " F F XGX XGX XX X X", "m0P2-3P2+31/MeV", " XGX XGX XX "); _dpippim[2]->topdrawOutput(output,Frame|Errorbars, "RED", "P2-3P2+3 mass in H'RP2+3P2-3H", "GX XGX X G WGX XGX XG", "1/GdG/dm0P2-3P2+31/MeV2-13", " F F XGX XGX XX X X", "m0P2-3P2+31/MeV", " XGX XGX XX "); _dpipeta[0]->topdrawOutput(output,Frame|Errorbars, "RED", "HP2+3 mass in H'RP2+3P2-3H", "GGX X G WGX XGX XG", "1/GdG/dm0HP2+31/MeV2-13", " F F XGGX XX X X", "m0HP2+31/MeV", " XGGX XX "); _dpimeta[0]->topdrawOutput(output,Frame|Errorbars, "RED", "HP2-3 mass in H'RP2+3P2-3H", "GGX X G WGX XGX XG", "1/GdG/dm0HP2-31/MeV2-13", " F F XGGX XX X X", "m0HP2-31/MeV", " XGGX XX "); _dpi0pi0[2]->topdrawOutput(output,Frame|Errorbars, "RED", "P203P203 mass in H'RP203P203H", "GX XGX X G WGX XGX XG", "1/GdG/dm0P203P2031/MeV2-13", " F F XGX XGX XX X X", "m0P203P2031/MeV", " XGX XGX XX "); _dpi0eta[0]->topdrawOutput(output,Frame|Errorbars, "RED", "HP203 mass in H'RP203P203H", "GGX X G WGX XGX XG", "1/GdG/dm0HP2031/MeV2-13", " F F XGGX XX X X", "m0HP2031/MeV", " XGGX XX "); } void EtaDecayAnalysis::doinitrun() { AnalysisHandler::doinitrun(); double meta[2]={547.45, 957.78}; for(unsigned int ix=0;ix<2;++ix) { _mgammagamma .push_back(new_ptr(Histogram(0.,meta[ix],200))); _mpi0gamma .push_back(new_ptr(Histogram(0.,meta[ix],200))); _mpipgamma .push_back(new_ptr(Histogram(0.,meta[ix],200))); _mpimgamma .push_back(new_ptr(Histogram(0.,meta[ix],200))); _photonenergy.push_back(new_ptr(Histogram(0.,meta[ix],200))); _mpippim .push_back(new_ptr(Histogram(0.,meta[ix],200))); _dpippim .push_back(new_ptr(Histogram(200.,meta[ix],200))); _dpi0pi0 .push_back(new_ptr(Histogram(200.,meta[ix],200))); _dpi0pip .push_back(new_ptr(Histogram(200.,meta[ix],200))); _dpi0pim .push_back(new_ptr(Histogram(200.,meta[ix],200))); } _dpi0pi0.push_back(new_ptr(Histogram(200.,500.,200))); _dpippim.push_back(new_ptr(Histogram(200.,500.,200))); _dpipeta.push_back(new_ptr(Histogram(500.,meta[1],200))); _dpimeta.push_back(new_ptr(Histogram(500.,meta[1],200))); _dpi0eta.push_back(new_ptr(Histogram(500.,meta[1],200))); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/SemiLeptonicDecayAnalysis.cc������������������������������0000644�0001750�0001750�00000011072�11754474774�026505� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SemiLeptonicDecayAnalysis class. // #include "SemiLeptonicDecayAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/Event.h" using namespace Herwig; void SemiLeptonicDecayAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { // Rotate to CMS, extract final state particles and call analyze(particles). AnalysisHandler::analyze(event, ieve, loop, state); tPVector particles; for(unsigned int ix=0, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part=event->primaryCollision()->step(ix)->all(); ThePEG::ParticleSet::iterator iter=part.begin(); ThePEG::ParticleSet::iterator end=part.end(); for( ;iter!=end;++iter) { if((**iter).dataPtr()->iSpin()==PDT::Spin0&& (**iter).children().size()>=2&&(**iter).children().size()<=3) { particles.push_back(*iter); } } } // analyse them analyze(particles); } void SemiLeptonicDecayAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void SemiLeptonicDecayAnalysis::analyze(tPPtr part) { // check the number of children of the particle // check this is a decay tPPtr lep[2]; if(part->children().size()==2&& abs(part->children()[1]->id())==24&&part->children()[1]->children().size()==2) { lep[0]=part->children()[1]->children()[0]; lep[1]=part->children()[1]->children()[1]; } else if(part->children().size()==3&& abs(part->children()[1]->id())>=11&&abs(part->children()[1]->id())<=16&& abs(part->children()[2]->id())>=11&&abs(part->children()[2]->id())<=16) { lep[0]=part->children()[1]; lep[1]=part->children()[2]; } else { return; } // find the ids of the lepton and the neutrino int id1(abs(lep[0]->id())),id2(abs(lep[1]->id())); unsigned int ilep(0),inu(0),loce(1),locn(1); if(id1%2==0&&id1>11&&id1<17){inu=(id1-10)/2;locn=0;} else if(id2%2==0&&id2>11&&id2<17){inu=(id2-10)/2;locn=1;} if(id1%2==1&&id1>10&&id1<16){ilep=(id1-9)/2;loce=0;} else if(id2%2==1&&id2>10&&id2<16){ilep=(id2-9)/2;loce=1;} if(ilep==0||inu==0){return;} unsigned int ix=0; bool found(false); while(!found&&ix<_incoming.size()) { if(_incoming[ix]==part->id()&&_outgoing[ix]==part->children()[0]->id()&& ilep==_outgoingL[ix]){found=true;} else{++ix;} } if(!found) { ix=_incoming.size(); _incoming.push_back(part->id()); _outgoing.push_back(part->children()[0]->id()); _outgoingL.push_back(ilep); _energy.push_back(new_ptr(Histogram(0.0, (part->mass()-part->children()[0]->mass())/MeV, 200))); _scale.push_back(new_ptr(Histogram(0.0, (part->mass()-part->children()[0]->mass())/MeV, 200))); } // add the results to the histogram Lorentz5Momentum ptemp; ptemp = lep[0]->momentum()+lep[1]->momentum(); ptemp.rescaleMass(); *_scale[ix] += ptemp.mass()/MeV; ptemp = part->children()[0]->momentum()+lep[locn]->momentum(); ptemp.rescaleMass(); Energy ee = 1./2./part->mass()* ( part->mass()*part->mass()-ptemp.mass()*ptemp.mass() +lep[loce]->mass()*lep[loce]->mass()); *_energy[ix] += ee/MeV; } NoPIOClassDescription<SemiLeptonicDecayAnalysis> SemiLeptonicDecayAnalysis::initSemiLeptonicDecayAnalysis; // Definition of the static class description member. void SemiLeptonicDecayAnalysis::Init() { static ClassDocumentation<SemiLeptonicDecayAnalysis> documentation ("There is no documentation for the SemiLeptonicDecayAnalysis class"); } void SemiLeptonicDecayAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); string title,temp; for(unsigned int ix=0;ix<_incoming.size();++ix) { title= getParticleData(_incoming[ix])->PDGName() + " -> " + getParticleData(_outgoing[ix])->PDGName()+ " " + getParticleData(9+2*_outgoingL[ix])->PDGName() + " " + getParticleData(10+2*_outgoingL[ix])->PDGName(); temp = "Mass for l nu in " +title; using namespace HistogramOptions; _scale[ix]->topdrawOutput(output,Frame|Errorbars, "RED",temp,"", "1/GdG/dm0lN1/MeV2-13", " F F X GX X X", "m0lN1/MeV", " X GX "); temp = "Lepton energy for in " +title; _energy[ix]->topdrawOutput(output,Frame|Errorbars, "RED",temp,"", "1/GdG/dE0l1/MeV2-13", " F F X X X X", "E0l1/MeV", " X X "); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/BranchingRatioAnalysis.h����������������������������������0000644�0001750�0001750�00000012615�11754474774�025704� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef THEPEG_BranchingRatioAnalysis_H #define THEPEG_BranchingRatioAnalysis_H // // This is the declaration of the BranchingRatioAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/DecayMode.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the BranchingRatioAnalysis class. * * @see \ref BranchingRatioAnalysisInterfaces "The interfaces" * defined for BranchingRatioAnalysis. */ class BranchingRatioAnalysis: public AnalysisHandler { public: /** * Constructor */ inline BranchingRatioAnalysis() : _total(101,0.) {}; public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<BranchingRatioAnalysis> initBranchingRatioAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BranchingRatioAnalysis & operator=(const BranchingRatioAnalysis &); private: /** * The particle for whihc we are performing the analysis */ PDPtr _particle; /** * The various decay modes */ map<tDMPtr,vector<double> > _points; /** * Total entry */ vector<double> _total; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of BranchingRatioAnalysis. */ template <> struct BaseClassTrait<Herwig::BranchingRatioAnalysis,1> { /** Typedef of the first base class of BranchingRatioAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the BranchingRatioAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::BranchingRatioAnalysis> : public ClassTraitsBase<Herwig::BranchingRatioAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::BranchingRatioAnalysis"; } /** * The name of a file containing the dynamic library where the class * BranchingRatioAnalysis is implemented. It may also include several, space-separated, * libraries if the class BranchingRatioAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* THEPEG_BranchingRatioAnalysis_H */ �������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/BeamCorrelationAnalysis.cc��������������������������������0000644�0001750�0001750�00000004575�11754474774�026224� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the BeamCorrelationAnalysis class. // #include "BeamCorrelationAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/EventRecord/Event.h" using namespace Herwig; void BeamCorrelationAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); PPair beam=event->primaryCollision()->primarySubProcess()->incoming(); ParticleVector incoming=event->primaryCollision()->primarySubProcess()->outgoing(); if(incoming.size()!=1) return; ParticleVector outgoing=incoming[0]->children(); if(outgoing.size()!=2) return; int id0=incoming[0]->id(); int id1=abs(outgoing[0]->id()); int iloc(-1); for(unsigned int ix=0;ix<_incoming.size();++ix) { if(id0==_incoming[ix]&&id1==_outgoing[ix]) { iloc=ix; break; } } if(iloc<0) { iloc=_incoming.size(); _incoming.push_back(id0); _outgoing.push_back(id1); _angle.push_back(new_ptr(Histogram(Histogram(0.,Constants::pi,200)))); } tPPtr in = beam.first->id()>0 ? beam.first : beam.second; tPPtr out; for(unsigned int ix=0;ix<outgoing.size();++ix) { if(outgoing[ix]->id()>0) out=outgoing[ix]; } if(!in||!out) return; _angle[iloc]->addWeighted(in->momentum().angle(out->momentum()), event->weight()); } NoPIOClassDescription<BeamCorrelationAnalysis> BeamCorrelationAnalysis::initBeamCorrelationAnalysis; // Definition of the static class description member. void BeamCorrelationAnalysis::Init() { static ClassDocumentation<BeamCorrelationAnalysis> documentation ("There is no documentation for the BeamCorrelationAnalysis class"); } inline void BeamCorrelationAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); for(unsigned int ix=0;ix<_incoming.size();++ix) { string title= "Angle for " + getParticleData(_incoming[ix])->PDGName() + " -> " + getParticleData(_outgoing[ix])->PDGName() + getParticleData(-_outgoing[ix])->PDGName(); using namespace HistogramOptions; _angle[ix]->topdrawOutput(output,Frame|Errorbars, "RED",title,"", "1/SdS/dQ", " G G G", "Q", "G"); } } �����������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/OmegaPhi3PionAnalysis.cc����������������������������������0000644�0001750�0001750�00000017234�11754474774�025554� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the OmegaPhi3PionAnalysis class. // #include "OmegaPhi3PionAnalysis.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; void OmegaPhi3PionAnalysis::analyze(tEventPtr event,long , int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; transform(event); // find all omega and phi particles tPVector particles; for(unsigned int ix=0, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part=event->primaryCollision()->step(ix)->all(); ThePEG::ParticleSet::iterator iter=part.begin(); ThePEG::ParticleSet::iterator end=part.end(); for( ;iter!=end;++iter) { if((**iter).id()==ParticleID::omega||(**iter).id()==ParticleID::phi) { particles.push_back(*iter); } } } // analyse them analyze(particles); } void OmegaPhi3PionAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void OmegaPhi3PionAnalysis::analyze(tPPtr part) { Lorentz5Momentum pip,pim,pi0; unsigned int imode; bool allowed(false); // reorder the particles ParticleVector children=part->children(); if(children.size()==2) { // vector first if(abs(children[1]->id())%10==3) swap(children[0],children[1]); if((children[0]->id()==113||abs(children[0]->id())==213)&& (children[1]->id()==111||abs(children[1]->id())==211)) { allowed=true; vector<tPPtr> temp; temp.push_back(children[1]); temp.push_back(children[0]->children()[0]); temp.push_back(children[0]->children()[1]); for(unsigned int ix=0;ix<3;++ix) { if(temp[ix]->id()== 111) pi0=temp[ix]->momentum(); if(temp[ix]->id()== 211) pip=temp[ix]->momentum(); if(temp[ix]->id()==-211) pim=temp[ix]->momentum(); } } } else if(children.size()==3) { // neutral pion first if(children[1]->id()==111) swap(children[0],children[1]); if(children[2]->id()==111) swap(children[0],children[2]); // postive pion second if(children[2]->id()==211) swap(children[1],children[2]); if(children[0]->id()== 111&&children[1]->id()==211&& children[2]->id()==-211) { allowed=true; pi0=children[0]->momentum(); pip=children[1]->momentum(); pim=children[2]->momentum(); } } if(!allowed) return; if(part->id()==ParticleID::omega) imode=0; else if(part->id()==ParticleID::phi) imode=1; else return; Boost boostv(-part->momentum().boostVector()); pi0.boost(boostv); pip.boost(boostv); pim.boost(boostv); Lorentz5Momentum ptemp; ptemp = pi0+pip;ptemp.rescaleMass(); *_mplus[imode]+=ptemp.mass()/MeV; ptemp = pi0+pim;ptemp.rescaleMass(); *_mminus[imode]+=ptemp.mass()/MeV; ptemp = pip+pim;ptemp.rescaleMass(); *_m0[imode]+=ptemp.mass()/MeV; Energy x = pip.e()-pim.e(); Energy y = pi0.e()-pi0.m(); *_xhist[imode]+=x/MeV; *_yhist[imode]+=y/MeV; if(_xvalue[imode].size()<_nmax) { _xvalue[imode].push_back(x); _yvalue[imode].push_back(y); } } NoPIOClassDescription<OmegaPhi3PionAnalysis> OmegaPhi3PionAnalysis::initOmegaPhi3PionAnalysis; // Definition of the static class description member. void OmegaPhi3PionAnalysis::Init() { static ClassDocumentation<OmegaPhi3PionAnalysis> documentation ("There is no documentation for the OmegaPhi3PionAnalysis class"); static Parameter<OmegaPhi3PionAnalysis,unsigned int> interfaceNMax ("MaxPoints", "Maximum number of points for the Dalitz plots", &OmegaPhi3PionAnalysis::_nmax, 50000, 100, 1000000, false, false, Interface::limited); } void OmegaPhi3PionAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; _xhist[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "x distribution in WRP2+3P2-3P203", " GWGX XGX XGX X", "1/SdS/dx/GeV2-13", " G G X X", "x/MeV", " "); _yhist[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "y distribution in WRP2+3P2-3P203", " GWGX XGX XGX X", "1/SdS/dy/GeV2-13", " G G X X", "y/MeV", " "); _mplus[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "R2+3 mass in WRP2+3P2-3P203", "GX X GWGX XGX XGX X", "1/SdS/dm0R2+31/GeV2-13", " G G XGX XX X X", "m0R2+31/MeV", " XGX XX "); _mminus[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "R2-3 mass in WRP2+3P2-3P203", "GX X GWGX XGX XGX X", "1/SdS/dm0R2-31/GeV2-13", " G G XGX XX X X", "m0R2-31/MeV", " XGX XX "); _m0[0]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "R203 mass in WRP2+3P2-3P203", "GX X GWGX XGX XGX X", "1/SdS/dm0R2031/GeV2-13", " G G XGX XX X X", "m0R2031/MeV", " XGX XX "); output << "new frame\n"; output << "set font duplex\n"; output << "set limits x -250 250 y 0 250\n"; output << "set order x y \n"; output << "title top \"Dalitz plot for W\"\n"; output << "case \" G\"\n"; for(unsigned int ix=0;ix<_xvalue[0].size();++ix) { output << ounit(_xvalue[0][ix],MeV) << " " << ounit(_yvalue[0][ix],MeV) << "\n"; } output << "plot\n"; _xhist[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "x distribution in FRP2+3P2-3P203", " GWGX XGX XGX X", "1/SdS/dx/GeV2-13", " G G X X", "x/MeV", " "); _yhist[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "y distribution in FRP2+3P2-3P203", " GWGX XGX XGX X", "1/SdS/dy/GeV2-13", " G G X X", "y/MeV", " "); _mplus[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "R2+3 mass in FRP2+3P2-3P203", "GX X GWGX XGX XGX X", "1/SdS/dm0R2+31/GeV2-13", " G G XGX XX X X", "m0R2+31/MeV", " XGX XX "); _mminus[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "R2-3 mass in FRP2+3P2-3P203", "GX X GWGX XGX XGX X", "1/SdS/dm0R2-31/GeV2-13", " G G XGX XX X X", "m0R2-31/MeV", " XGX XX "); _m0[1]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "R203 mass in FRP2+3P2-3P203", "GX X GWGX XGX XGX X", "1/SdS/dm0R2031/GeV2-13", " G G XGX XX X X", "m0R2031/MeV", " XGX XX "); output << "new frame\n"; output << "set font duplex\n"; output << "set limits x -400 400 y 0 400\n"; output << "set order x y \n"; output << "title top \"Dalitz plot for F\"\n"; output << "case \" G\"\n"; for(unsigned int ix=0;ix<_xvalue[1].size();++ix) { output << _xvalue[1][ix]/MeV << " " << _yvalue[1][ix]/MeV << "\n"; } output << "plot\n"; } void OmegaPhi3PionAnalysis::doinitrun() { AnalysisHandler::doinitrun(); for(unsigned int ix=0;ix<2;++ix) { _xhist .push_back(new_ptr(Histogram(-400.,400. ,200))); _yhist .push_back(new_ptr(Histogram(0. ,400. ,200))); _mplus .push_back(new_ptr(Histogram(0. ,1000.,200))); _mminus .push_back(new_ptr(Histogram(0. ,1000.,200))); _m0 .push_back(new_ptr(Histogram(0. ,1000.,200))); } _xvalue.resize(2); _yvalue.resize(2); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/a1DecayAnalysis.cc����������������������������������������0000644�0001750�0001750�00000013237�11754474774�024420� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the a1DecayAnalysis class. // #include "a1DecayAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/EventRecord/Event.h" using namespace Herwig; void a1DecayAnalysis::analyze(tEventPtr event, long, int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; transform(event); // find all omega and phi particles tPVector particles; for(unsigned int ix=0, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part=event->primaryCollision()->step(ix)->all(); ThePEG::ParticleSet::iterator iter=part.begin(); ThePEG::ParticleSet::iterator end=part.end(); for( ;iter!=end;++iter) { int id=abs((**iter).id()); if(id==ParticleID::a_10||id==ParticleID::a_1plus) particles.push_back(*iter); } } // analyse them analyze(particles); } void a1DecayAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void a1DecayAnalysis::analyze(tPPtr part) { // find the pions ParticleVector pions; findPions(part,pions); if(pions.size()!=3) return; vector<Lorentz5Momentum> pip,pim,pi0; long idp = part->id()>0 ? 211 : -211; for(unsigned int ix=0;ix<pions.size();++ix) { if(pions[ix]->id()==idp) pip.push_back(pions[ix]->momentum()); else if(pions[ix]->id()==111) pi0.push_back(pions[ix]->momentum()); else if(pions[ix]->id()==-idp) pim.push_back(pions[ix]->momentum()); } // a_1+ -> pi+pi+pi- if(pip.size()==2&&pim.size()==1) { *_hist3A += (pip[0]+pip[1]).m()/MeV; *_hist3B += (pip[0]+pim[0]).m()/MeV; *_hist3B += (pip[1]+pim[0]).m()/MeV; } // a_1+ -> pi0pi0pi+ else if(pip.size()==1&&pi0.size()==2) { *_hist1A +=(pi0[0]+pi0[1]).m()/MeV; *_hist1B +=(pip[0]+pi0[0]).m()/MeV; *_hist1B +=(pip[0]+pi0[1]).m()/MeV; } // a_10 -> pi0pi0pi0 else if(pi0.size()==3) { *_hist0 +=(pi0[0]+pi0[1]).m()/MeV; *_hist0 +=(pi0[0]+pi0[2]).m()/MeV; *_hist0 +=(pi0[1]+pi0[2]).m()/MeV; } // a_10 -> pi+pi-pi0 else if(pi0.size()==1&&pip.size()==1&&pim.size()==1) { *_hist2A +=(pim[0]+pip[0]).m()/MeV; *_hist2B +=(pip[0]+pi0[0]).m()/MeV; *_hist2C +=(pim[0]+pi0[0]).m()/MeV; } } NoPIOClassDescription<a1DecayAnalysis> a1DecayAnalysis::inita1DecayAnalysis; // Definition of the static class description member. void a1DecayAnalysis::Init() { static ClassDocumentation<a1DecayAnalysis> documentation ("There is no documentation for the a1DecayAnalysis class"); } void a1DecayAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; _hist0->topdrawOutput(output,Frame|Errorbars,"RED", "P203P203 mass in A011203RP203P203P203", "GX XGX X X XX XWGX XGX XGX X", "1/GdG/dm0P203P2031/MeV2-13", " F F XGX XGX XX X X", "m0P203P2031/MeV", " XGX XGX XX "); _hist1A->topdrawOutput(output,Frame|Errorbars,"RED", "P203P203 mass in A0112+3RP203P203P2+3", "GX XGX X X XX XWGX XGX XGX X", "1/GdG/dm0P203P2031/MeV2-13", " F F XGX XGX XX X X", "m0P203P2031/MeV", " XGX XGX XX "); _hist1B->topdrawOutput(output,Frame|Errorbars,"RED", "P203P2+3 mass in A0112+3RP203P203P2+3", "GX XGX X X XX XWGX XGX XGX X", "1/GdG/dm0P203P2+31/MeV2-13", " F F XGX XGX XX X X", "m0P203P2+31/MeV", " XGX XGX XX "); _hist2A->topdrawOutput(output,Frame|Errorbars,"RED", "P2+3P2-3 mass in A011203RP2+3P2-3P203", "GX XGX X X XX XWGX XGX XGX X", "1/GdG/dm0P2+3P2-31/MeV2-13", " F F XGX XGX XX X X", "m0P2+3P2-31/MeV", " XGX XGX XX "); _hist2B->topdrawOutput(output,Frame|Errorbars,"RED", "P2+3P203 mass in A011203RP2+3P2-3P203", "GX XGX X X XX XWGX XGX XGX X", "1/GdG/dm0P2+3P2031/MeV2-13", " F F XGX XGX XX X X", "m0P2+3P2031/MeV", " XGX XGX XX "); _hist2C->topdrawOutput(output,Frame|Errorbars,"RED", "P2-3P203 mass in A011203RP2+3P2-3P203", "GX XGX X X XX XWGX XGX XGX X", "1/GdG/dm0P2-3P2031/MeV2-13", " F F XGX XGX XX X X", "m0P2-3P2031/MeV", " XGX XGX XX "); _hist3A->topdrawOutput(output,Frame|Errorbars,"RED", "P2+3P2+3 mass in A0112+3RP2+3P2+3P2-3", "GX XGX X X XX XWGX XGX XGX X", "1/GdG/dm0P2+3P2+31/MeV2-13", " F F XGX XGX XX X X", "m0P2+3P2+31/MeV", " XGX XGX XX "); _hist3B->topdrawOutput(output,Frame|Errorbars,"RED", "P2+3P2-3 mass in A0112+3RP2+3P2+3P2-3", "GX XGX X X XX XWGX XGX XGX X", "1/GdG/dm0P2+3P2-31/MeV2-13", " F F XGX XGX XX X X", "m0P2+3P2-31/MeV", " XGX XGX XX "); } void a1DecayAnalysis::doinitrun() { AnalysisHandler::doinitrun(); _hist0 = new_ptr(Histogram(0.,1500.,200)); _hist1A = new_ptr(Histogram(0.,1500.,200)); _hist1B = new_ptr(Histogram(0.,1500.,200)); _hist2A = new_ptr(Histogram(0.,1500.,200)); _hist2B = new_ptr(Histogram(0.,1500.,200)); _hist2C = new_ptr(Histogram(0.,1500.,200)); _hist3A = new_ptr(Histogram(0.,1500.,200)); _hist3B = new_ptr(Histogram(0.,1500.,200)); } void a1DecayAnalysis::findPions(tPPtr part,ParticleVector & pions) { if(abs(part->id())==ParticleID::piplus||part->id()==ParticleID::pi0) { pions.push_back(part); return; } else if(!part->children().empty()) { for(unsigned int ix=0;ix<part->children().size();++ix) { findPions(part->children()[ix],pions); } } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/a1DecayAnalysis.h�����������������������������������������0000644�0001750�0001750�00000012767�11754474774�024271� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_a1DecayAnalysis_H #define HERWIG_a1DecayAnalysis_H // // This is the declaration of the a1DecayAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the a1DecayAnalysis class. * * @see \ref a1DecayAnalysisInterfaces "The interfaces" * defined for a1DecayAnalysis. */ class a1DecayAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * find the pions produced in the decay */ void findPions(tPPtr part,ParticleVector & pions); private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<a1DecayAnalysis> inita1DecayAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ a1DecayAnalysis & operator=(const a1DecayAnalysis &); private: /** * Histograms for \f$a_1^0\to\pi^0\pi^0\pi^0\f$ */ HistogramPtr _hist0; /** * Histograms for \f$a_1^+\to\pi^0\pi^0\pi^+\f$ */ //@{ /** * Mass of the \f$\pi^0\pi^0\f$ pair */ HistogramPtr _hist1A; /** * Mass of the \f$\pi^0\pi^+\f$ pair */ HistogramPtr _hist1B; //@} /** * Histograms for \f$a_1^0\to\pi^+\pi^-\pi^0\f$ */ //@{ /** * Mass of the \f$\pi^+\pi^-\f$ pair */ HistogramPtr _hist2A; /** * Mass of the \f$\pi^+\pi^0\f$ pair */ HistogramPtr _hist2B; /** * Mass of the \f$\pi^-\pi^0\f$ pair */ HistogramPtr _hist2C; //@} /** * Histograms for \f$a_1^+\to\pi^+\pi^+\pi^-\f$ */ //@{ /** * Mass of the \f$\pi^+\pi^+\f$ pair */ HistogramPtr _hist3A; /** * Mass of the \f$\pi^+\pi^-\f$ pair */ HistogramPtr _hist3B; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of a1DecayAnalysis. */ template <> struct BaseClassTrait<Herwig::a1DecayAnalysis,1> { /** Typedef of the first base class of a1DecayAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the a1DecayAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::a1DecayAnalysis> : public ClassTraitsBase<Herwig::a1DecayAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::a1DecayAnalysis"; } /** * The name of a file containing the dynamic library where the class * a1DecayAnalysis is implemented. It may also include several, space-separated, * libraries if the class a1DecayAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_a1DecayAnalysis_H */ ���������herwig++-2.6.0.orig/Contrib/DecayAnalysis/DDalitzAnalysis.h�����������������������������������������0000644�0001750�0001750�00000017525�11754474774�024352� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_DDalitzAnalysis_H #define HERWIG_DDalitzAnalysis_H // // This is the declaration of the DDalitzAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" #include "ThePEG/EventRecord/Particle.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the DDalitzAnalysis class. * * @see \ref DDalitzAnalysisInterfaces "The interfaces" * defined for DDalitzAnalysis. */ class DDalitzAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Transform the event to the desired Lorentz frame and return the * corresponding LorentzRotation. * @param event a pointer to the Event to be transformed. * @return the LorentzRotation used in the transformation. */ virtual LorentzRotation transform(tEventPtr event) const; /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} 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: /** * Find the stable decay products */ void findChildren(tPPtr,ParticleVector &); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<DDalitzAnalysis> initDDalitzAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DDalitzAnalysis & operator=(const DDalitzAnalysis &); private: /** * Histograms for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ //@{ /** * \f$m^2_+\f$ */ HistogramPtr _m2plus1; /** * \f$m^2_+\f$ */ HistogramPtr _m2minus1; /** * \f$m^2_{\pi\pi}\f$ */ HistogramPtr _m2pipi1; /** * Vectors for the Dalitz plot */ vector<pair<Energy2,Energy2> > _points1; //@} /** * Histograms for \f$D^0\to K^-\pi^+\pi^0\f$ */ //@{ /** * Histogram for the \f$K^-\pi^+\f$ mass */ HistogramPtr _m2minus2; /** * Histogram for the \f$\pi^+\pi^0\f$ mass */ HistogramPtr _m2pipi2; /** * Histogram for the \f$K^-\pi^0\f$ mass */ HistogramPtr _m2neutral2; /** * Vectors for the Dalitz plot */ vector<pair<Energy2,Energy2> > _points2; //@} /** * Histograms for \f$D^+\to K^-\pi^+\pi^+\f$ */ //@{ /** * Histogram for \f$K^-\pi^+\f$ low */ HistogramPtr _mKpilow3; /** * Histogram for \f$K^-\pi^+\f$ high */ HistogramPtr _mKpihigh3; /** * Histogram for \f$K^-\pi^+\f$ all */ HistogramPtr _mKpiall3; /** * Histogram for \f$\pi^+\pi^-\f$ */ HistogramPtr _mpipi3; /** * Vectors for the Dalitz plot */ vector<pair<Energy2,Energy2> > _points3; //@} /** * Histograms for \f$D^+\to\bar{K}^0\pi^+\pi^0\f$ */ //@{ /** * Histogram for the \f$\bar{K}^0\pi^+\f$ mass */ HistogramPtr _m2Kpip4; /** * Histogram for the \f$\pi^+\pi^0\f$ mass */ HistogramPtr _m2pipi4; /** * Histogram for the \f$\bar{K}^0\pi^0\f$ mass */ HistogramPtr _m2Kpi04; /** * Vectors for the Dalitz plot */ vector<pair<Energy2,Energy2> > _points4; //@} /** * Histograms for \f$D^+\to K^+\pi^-\pi^+\f$ */ //@{ /** * Histogram for \f$K^+\pi^-\f$ */ HistogramPtr _mkppim5; /** * Histogram for \f$K^+\pi^+\f$ */ HistogramPtr _mkppip5; /** * Histogram for \f$\pi^+\pi^-\f$ */ HistogramPtr _mpippim5; /** * Vectors for the Dalitz plot */ vector<pair<Energy2,Energy2> > _points5; //@} /** * Histograms for \f$D_s^+\to K^+\pi^-\pi^+\f$ */ //@{ /** * Histogram for \f$K^+\pi^-\f$ */ HistogramPtr _mkppim6; /** * Histogram for \f$K^+\pi^+\f$ */ HistogramPtr _mkppip6; /** * Histogram for \f$\pi^+\pi^-\f$ */ HistogramPtr _mpippim6; /** * Vectors for the Dalitz plot */ vector<pair<Energy2,Energy2> > _points6; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DDalitzAnalysis. */ template <> struct BaseClassTrait<Herwig::DDalitzAnalysis,1> { /** Typedef of the first base class of DDalitzAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the DDalitzAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DDalitzAnalysis> : public ClassTraitsBase<Herwig::DDalitzAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::DDalitzAnalysis"; } /** * The name of a file containing the dynamic library where the class * DDalitzAnalysis is implemented. It may also include several, space-separated, * libraries if the class DDalitzAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_DDalitzAnalysis_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/Makefile.in�����������������������������������������������0000644�0001750�0001750�00000003443�11754474774�023201� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*- Makefile -*- (for emacs) # # This Makefile is intended for compiling Herwig++ plugins # You can find plugins here: INSERT URL # # This Makefile received very little testing, # any bug reports are very welcome! # # location of include files THEPEGINCLUDE= HERWIGINCLUDE= GSLINCLUDE= LDFLAGS = SHARED_FLAG = INCLUDE = $(THEPEGINCLUDE) $(HERWIGINCLUDE) $(GSLINCLUDE) # # C++ flags # CXX = CXXFLAGS = ALLCCFILES=$(shell echo *.cc) default : HwDecayAnalysis.so %.o : %.cc %.h $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) -c -shared $< -o $@ HwDecayAnalysis.so: a1DecayAnalysis.o PScalarVectorFermionsAnalysis.o\ BabarBDecayAnalysis.o SemiLeptonicDecayAnalysis.o\ BeamCorrelationAnalysis.o SemiLeptonicDPiAnalysis.o\ BranchingRatioAnalysis.o Upsilon4SMultiplicityCount.o\ BtoSGammaAnalysis.o Upsilon4SSpectrumAnalysis.o\ DDalitzAnalysis.o VectorPScalarFermionsAnalysis.o\ EtaDecayAnalysis.o VffGammaAnalysis.o VPPGammaAnalysis.o\ OmegaPhi3PionAnalysis.o OniumToOniumPiPiAnalysis.o\ ZPhotonsAnalysis.o Pi4ElectronAnalysis.o $(CXX) -fPIC $(CPPFLAGS) $(INCLUDE) $(CXXFLAGS) \ a1DecayAnalysis.o PScalarVectorFermionsAnalysis.o\ BabarBDecayAnalysis.o SemiLeptonicDecayAnalysis.o\ BeamCorrelationAnalysis.o SemiLeptonicDPiAnalysis.o\ BranchingRatioAnalysis.o Upsilon4SMultiplicityCount.o\ BtoSGammaAnalysis.o Upsilon4SSpectrumAnalysis.o\ DDalitzAnalysis.o VectorPScalarFermionsAnalysis.o\ EtaDecayAnalysis.o VffGammaAnalysis.o VPPGammaAnalysis.o\ OmegaPhi3PionAnalysis.o OniumToOniumPiPiAnalysis.o\ ZPhotonsAnalysis.o Pi4ElectronAnalysis.o $(SHARED_FLAG) $(LDFLAGS) -o HwDecayAnalysis.so clean: rm -f $(ALLCCFILES:.cc=.o) HwDecayAnalysis.so �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/BabarBDecayAnalysis.cc������������������������������������0000644�0001750�0001750�00000012207�11754474774�025224� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the BabarBDecayAnalysis class. // #include "BabarBDecayAnalysis.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace Herwig; IBPtr BabarBDecayAnalysis::clone() const { return new_ptr(*this); } IBPtr BabarBDecayAnalysis::fullclone() const { return new_ptr(*this); } void BabarBDecayAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). set<tcPPtr> particles; StepVector steps = event->primaryCollision()->steps(); if (steps.size() > 2) { for ( StepVector::const_iterator it = steps.begin()+2; it != steps.end(); ++it ) { (**it).select(inserter(particles), ThePEG::AllSelector()); } } for(set<tcPPtr>::const_iterator it=particles.begin(); it!=particles.end();++it) { long id = (**it).id(); if(!(abs(id)==ParticleID::B0||abs(id)==ParticleID::Bplus)) continue; map <long,long> count; vector<tcPPtr> charmed; findCharm(*it,charmed); for(unsigned int ix=0;ix<charmed.size();++ix) { long idc = id > 0 ? charmed[ix]->id() : -charmed[ix]->id(); if(abs(id)==ParticleID::B0) { if (_b0data.find(idc) != _b0data.end()) ++count[idc]; } else { if (_bplusdata.find(idc) != _bplusdata.end()) ++count[idc]; } } if(abs(id)==ParticleID::B0) { // store info for(map<long,MultiplicityInfo>::iterator it = _b0data.begin(); it != _b0data.end(); ++it) { long currentcount = count.find(it->first) == count.end() ? 0 : count[it->first]; it->second.count += currentcount; } } else { // store info for(map<long,MultiplicityInfo>::iterator it = _bplusdata.begin(); it != _bplusdata.end(); ++it) { long currentcount = count.find(it->first) == count.end() ? 0 : count[it->first]; it->second.count += currentcount; } } } } NoPIOClassDescription<BabarBDecayAnalysis> BabarBDecayAnalysis::initBabarBDecayAnalysis; // Definition of the static class description member. void BabarBDecayAnalysis::Init() { static ClassDocumentation<BabarBDecayAnalysis> documentation ("There is no documentation for the BabarBDecayAnalysis class"); } void BabarBDecayAnalysis::dofinish() { AnalysisHandler::dofinish(); string filename = generator()->filename() + ".Bdecaymult"; string dec="B0->"; ofstream outfile(filename.c_str()); outfile << "\nParticle multiplicities (compared to Upsilon(4s) data):\n" " ID Name simMult obsMult obsErr Sigma\n"; for (map<long,MultiplicityInfo>::const_iterator it = _b0data.begin(); it != _bplusdata.end(); ++it) { if(it==_b0data.end()) { it=_bplusdata.begin(); dec="B+->"; } MultiplicityInfo multiplicity = it->second; string name = dec+generator()->getParticleData(it->first)->PDGName(); ios::fmtflags oldFlags = outfile.flags(); outfile << std::scientific << std::showpoint << std::setprecision(3) << setw(7) << it->first << ' ' << setw(17) << name << ' ' << setw(2) << multiplicity.simMultiplicity() << " | " << setw(2) << multiplicity.obsMultiplicity << " +/- " << setw(2) << multiplicity.obsError << ' ' << std::showpos << std::setprecision(1) << multiplicity.nSigma() << ' ' << multiplicity.bargraph() << std::noshowpos; outfile << '\n'; outfile.flags(oldFlags); } outfile.close(); } void BabarBDecayAnalysis::doinitrun() { AnalysisHandler::doinitrun(); // B0 multiplicities _b0data[ 421 ] = MultiplicityInfo( 0.081,0.015, other); _b0data[-421 ] = MultiplicityInfo( 0.474,0.028, other); _b0data[ 411 ] = MultiplicityInfo( 0.023,0.013, other); _b0data[-411 ] = MultiplicityInfo( 0.369,0.033, other); _b0data[ 431 ] = MultiplicityInfo( 0.079,0.014, other); _b0data[-431 ] = MultiplicityInfo( 0.103,0.021, other); _b0data[ 4122] = MultiplicityInfo( 0.016,0.011, other); _b0data[-4122] = MultiplicityInfo( 0.050,0.021, other); // B+ multiplicities _bplusdata[ 421 ] = MultiplicityInfo( 0.086,0.007, other); _bplusdata[-421 ] = MultiplicityInfo( 0.790,0.040, other); _bplusdata[ 411 ] = MultiplicityInfo( 0.025,0.005, other); _bplusdata[-411 ] = MultiplicityInfo( 0.099,0.012, other); _bplusdata[ 431 ] = MultiplicityInfo( 0.079,0.014, other); _bplusdata[-431 ] = MultiplicityInfo( 0.011,0.004, other); _bplusdata[ 4122] = MultiplicityInfo( 0.021,0.009, other); _bplusdata[-4122] = MultiplicityInfo( 0.028,0.011, other); } void BabarBDecayAnalysis::findCharm(tcPPtr parent,vector<tcPPtr> & charmed) { if(parent->children().empty()) return; for(unsigned int ix=0;ix<parent->children().size();++ix) { long id = abs(parent->children()[ix]->id()); if(id==ParticleID::Dplus || id==ParticleID::D0 || id==ParticleID::D_splus || id==ParticleID::Lambda_cplus) { charmed.push_back(parent->children()[ix]); } findCharm(parent->children()[ix],charmed); } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/PScalarVectorFermionsAnalysis.h���������������������������0000644�0001750�0001750�00000012574�11754474774�027231� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_PScalarVectorFermionsAnalysis_H #define HERWIG_PScalarVectorFermionsAnalysis_H // // This is the declaration of the PScalarVectorFermionsAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the PScalarVectorFermionsAnalysis class. * * @see \ref PScalarVectorFermionsAnalysisInterfaces "The interfaces" * defined for PScalarVectorFermionsAnalysis. */ class PScalarVectorFermionsAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ inline virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<PScalarVectorFermionsAnalysis> initPScalarVectorFermionsAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ PScalarVectorFermionsAnalysis & operator=(const PScalarVectorFermionsAnalysis &); private: /** * PDG codes for the incoming particles */ vector<long> _incoming; /** * PDG codes for the outgoing vector meson */ vector<long> _outgoingV; /** * PDG code for the outgoing fermions */ vector<int> _outgoingf; /** * Histograms for the mass of the fermion-antifermion pair */ vector<HistogramPtr> _mffa; /** * Histograms for the mass of the fermion-antifermion pair */ vector<HistogramPtr> _mffb; /** * Histograms for the masses of the vector and the fermion */ vector<HistogramPtr> _mVf; /** * Histograms for the masses of the vector and the antifermion */ vector<HistogramPtr> _mVfbar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of PScalarVectorFermionsAnalysis. */ template <> struct BaseClassTrait<Herwig::PScalarVectorFermionsAnalysis,1> { /** Typedef of the first base class of PScalarVectorFermionsAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the PScalarVectorFermionsAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::PScalarVectorFermionsAnalysis> : public ClassTraitsBase<Herwig::PScalarVectorFermionsAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::PScalarVectorFermionsAnalysis"; } /** * The name of a file containing the dynamic library where the class * PScalarVectorFermionsAnalysis is implemented. It may also include several, space-separated, * libraries if the class PScalarVectorFermionsAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_PScalarVectorFermionsAnalysis_H */ ������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/VectorPScalarFermionsAnalysis.h���������������������������0000644�0001750�0001750�00000012611�11754474774�027221� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_VectorPScalarFermionsAnalysis_H #define HERWIG_VectorPScalarFermionsAnalysis_H // // This is the declaration of the VectorPScalarFermionsAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the VectorPScalarFermionsAnalysis class. * * @see \ref VectorPScalarFermionsAnalysisInterfaces "The interfaces" * defined for VectorPScalarFermionsAnalysis. */ class VectorPScalarFermionsAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<VectorPScalarFermionsAnalysis> initVectorPScalarFermionsAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VectorPScalarFermionsAnalysis & operator=(const VectorPScalarFermionsAnalysis &); private: /** * PDG codes of the incoming particles */ vector<long> _incoming; /** * PDG codes of the outgoing pseudoscalar mesons */ vector<long> _outgoingP; /** * PDG codes of the outgoing fermion */ vector<long> _outgoingf; /** * Histograms for the mass of the fermion-antifermion pair */ vector<HistogramPtr> _mffa; /** * Histograms for the mass of the fermion-antifermion pair */ vector<HistogramPtr> _mffb; /** * Histograms for the masses of the pseudoscalar and the fermion */ vector<HistogramPtr> _mPf; /** * Histograms for the masses of the pseudoscalar and the antifermion */ vector<HistogramPtr> _mPfbar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of VectorPScalarFermionsAnalysis. */ template <> struct BaseClassTrait<Herwig::VectorPScalarFermionsAnalysis,1> { /** Typedef of the first base class of VectorPScalarFermionsAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the VectorPScalarFermionsAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VectorPScalarFermionsAnalysis> : public ClassTraitsBase<Herwig::VectorPScalarFermionsAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::VectorPScalarFermionsAnalysis"; } /** * The name of a file containing the dynamic library where the class * VectorPScalarFermionsAnalysis is implemented. It may also include several, space-separated, * libraries if the class VectorPScalarFermionsAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_VectorPScalarFermionsAnalysis_H */ �����������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/BranchingRatioAnalysis.cc���������������������������������0000644�0001750�0001750�00000007617�11754474774�026050� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the BranchingRatioAnalysis class. // #include "BranchingRatioAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; void BranchingRatioAnalysis::analyze(tEventPtr event, long , int , int ) { // find all vector particles tPVector particles; for(unsigned int ix=0, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part=event->primaryCollision()->step(ix)->all(); ThePEG::ParticleSet::iterator iter=part.begin(); ThePEG::ParticleSet::iterator end=part.end(); for( ;iter!=end;++iter) { if((**iter).id()==_particle->id()) particles.push_back(*iter); } } // analyse them analyze(particles); } void BranchingRatioAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void BranchingRatioAnalysis::analyze(tPPtr part) { tDMPtr mode=part->decayMode(); if(!mode) return; if(_points.find(mode)==_points.end()) { _points[mode]=vector<double>(101,0.); } if(part->mass()>=part->dataPtr()->massMin()&& part->mass()<=part->dataPtr()->massMax()) { int ibin = int((part->mass() -part->dataPtr()->massMin())/ (part->dataPtr()->massMax()-part->dataPtr()->massMin())*100.); if(ibin>=0&&ibin<100) { _points[mode][ibin]+=1.; _total[ibin]+=1.; _points[mode][100]+=1.; _total[100]+=1.; } } } void BranchingRatioAnalysis::persistentOutput(PersistentOStream & os) const { os << _particle; } void BranchingRatioAnalysis::persistentInput(PersistentIStream & is, int) { is >> _particle; } ClassDescription<BranchingRatioAnalysis> BranchingRatioAnalysis::initBranchingRatioAnalysis; // Definition of the static class description member. void BranchingRatioAnalysis::Init() { static ClassDocumentation<BranchingRatioAnalysis> documentation ("There is no documentation for the BranchingRatioAnalysis class"); static Reference<BranchingRatioAnalysis,ParticleData> interfaceParticle ("Particle", "The particle for which the analysis is being perform", &BranchingRatioAnalysis::_particle, false, false, true, false, false); } void BranchingRatioAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); map<tDMPtr,vector<double> >::const_iterator it; Energy step = (_particle->massMax()-_particle->massMin())/100.; for(it=_points.begin();it!=_points.end();++it) { output << "NEW FRAME\n"; output << "SET FONT DUPLEX\n"; output << "TITLE TOP \"BR for " << it->first->tag() << "Total = " << it->second[100]/_total[100] << "\"\n"; output << "SET LIMITS X " << _particle->massMin()/GeV << " " << _particle->massMax()/GeV << "\n"; Energy mass = _particle->massMin()-0.5*step; for(unsigned int ix=0;ix<it->second.size()-1;++ix) { mass+=step; if(_total[ix]>0.) { output << mass/GeV << "\t" << it->second[ix]/_total[ix] << "\n"; } else { output << mass/GeV << "\t 0. \n"; } } output << "HIST\n"; output << "NEW FRAME\n"; output << "SET FONT DUPLEX\n"; output << "TITLE TOP \"Mass distribution for " << it->first->tag() << "\"\n"; mass = _particle->massMin()-0.5*step; for(unsigned int ix=0;ix<it->second.size()-1;++ix) { mass+=step; if(_total[ix]>0.) { output << mass/GeV << "\t" << it->second[ix]/it->second[100]*GeV/step << "\n"; } else { output << mass/GeV << "\t 0. \n"; } } output << "HIST\n"; } } �����������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/ZPhotonsAnalysis.cc���������������������������������������0000644�0001750�0001750�00000016443�11754474774�024737� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the ZPhotonsAnalysis class. // #include "ZPhotonsAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; void ZPhotonsAnalysis::analyze(tEventPtr event, long, int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; transform(event); tPVector particles; // Rotate to CMS, extract final state particles and call analyze(particles). for(unsigned int ix=1, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part(event->primaryCollision()->step(ix)->all()); ThePEG::ParticleSet::iterator iter(part.begin()),end(part.end()); for( ;iter!=end;++iter) { if((**iter).id()==ParticleID::Z0&&(**iter).children().size()>=2) { particles.push_back(*iter); } } } // analyse them analyze(particles); } void ZPhotonsAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void ZPhotonsAnalysis::analyze(tPPtr part) { // check we have the right decay if(abs(part->children()[0]->id())!=_iferm) return; if(abs(part->children()[1]->id())!=_iferm) return; // pphoton is the total momentum of all photons, mult is the multiplicity, // ix/emax is the index/energy of the most energetic photon emitted: Lorentz5Momentum pphoton; unsigned int mult=0; Energy emax=ZERO; int imax=-1; // loop over the non-fermionic children i.e. the photons: for(unsigned int ix=2;ix<part->children().size();++ix) { if(part->children()[ix]->id()!=ParticleID::gamma) return; pphoton+=part->children()[ix]->momentum(); *_etotal[4]+=part->children()[ix]->momentum().e()/MeV; if(part->children()[ix]->momentum().e()>emax) { emax=part->children()[ix]->momentum().e(); imax=ix; } Lorentz5Momentum pf(part->children()[0]->momentum()); Lorentz5Momentum pfb(part->children()[1]->momentum()); if(part->children()[0]->id()<0&&part->children()[1]>0) swap(pf,pfb); pf.boost(-part->momentum().boostVector()); pfb.boost(-part->momentum().boostVector()); // bin the cosine of the angle between each photon and the fermion Lorentz5Momentum pphot(part->children()[ix]->momentum()); pphot.boost(-part->momentum().boostVector()); *_cphoton+=pf.vect().cosTheta(pphot.vect()); ++mult; } // boost the combined fermion momentum and the total photon momentum // to the Z/gamma rest framefermion rest frame: Lorentz5Momentum pferm(part->children()[0]->momentum()+ part->children()[1]->momentum()); pferm.boost(-part->momentum().boostVector()); pphoton.boost(-part->momentum().boostVector()); pferm.rescaleMass(); pphoton.rescaleMass(); // bin the photon multiplicity of this decay: *_nphoton+=mult; for(unsigned int ix=0;ix<3;++ix) { // bin the invariant mass of the fermions and the total photon energy // in histograms of varying ranges (ix): *_masstotal[ix]+=pferm.mass()/MeV; if(mult>0) *_etotal[ix]+=pphoton.e()/MeV; } // bin the energy of the most energetic photon: if(imax>0) *_etotal[3]+=part->children()[imax]->momentum().e()/MeV; if(mult<20) { // bin the difermion invariant mass and the total photon energy // according to multiplicity: *_mphoton[mult]+=pferm.mass()/MeV; *_ephoton[mult]+=pphoton.e()/MeV; } } ClassDescription<ZPhotonsAnalysis> ZPhotonsAnalysis::initZPhotonsAnalysis; // Definition of the static class description member. void ZPhotonsAnalysis::Init() { static ClassDocumentation<ZPhotonsAnalysis> documentation ("There is no documentation for the ZPhotonsAnalysis class"); static Parameter<ZPhotonsAnalysis,int> interfaceFermion ("Fermion", "Id code of fermion", &ZPhotonsAnalysis::_iferm, 11, 11, 15, false, false, Interface::limited); } inline void ZPhotonsAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; _nphoton->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Photon Multiplicity", " ", "1/SdS/dN0G1", " G G XGX", "N0G1", " XGX"); for(unsigned int ix=0;ix<3;++ix) { _masstotal[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Fermion mass for all events", " ", "1/SdS/d/GeV2-13", " G G X X", "m0l2+3l2-31/GeV", " X X X X XX "); _etotal[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Photon Energy for all events", " ", "1/SdS/dE0G1/GeV2-13", " G G XGX X X", "E0G1/GeV", " XGX "); } _etotal[3]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Photon Energy for all events", " ", "1/SdS/dE0G1/GeV2-13", " G G XGX X X", "E0G1/GeV", " XGX "); _etotal[4]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Photon Energy for all events", " ", "1/SdS/dE0G1/GeV2-13", " G G XGX X X", "E0G1/GeV", " XGX "); _cphoton->topdrawOutput(output,Frame|Errorbars|Ylog, "RED","Photon cosine wrt fermion","", "1/SdS/dc0G1", " G G XGX", "c0G1", " XGX "); for(unsigned int ix=0;ix<20;++ix) { ostringstream titlea; titlea << "Fermion mass for " << ix << " photons " << flush; _mphoton[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",titlea.str(),"", "1/SdS/d/GeV2-13", " G G X X", "m0l2+3l2-31/GeV", " X X X X XX "); ostringstream titleb; titleb << "photon energy for " << ix << " photons " << flush; _ephoton[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",titleb.str(),"", "1/SdS/dE0G1/GeV2-13", " G G XGX X X", "E0G1/GeV", " XGX ");; } } inline void ZPhotonsAnalysis::doinitrun() { AnalysisHandler::doinitrun(); _masstotal.push_back(new_ptr(Histogram(0.,92000.,400))); _etotal .push_back(new_ptr(Histogram(0.,92000.,400))); _masstotal.push_back(new_ptr(Histogram(0.,80000.,200))); _etotal .push_back(new_ptr(Histogram(0.,10000.,200))); _masstotal.push_back(new_ptr(Histogram(80000.,92000.,200))); _etotal .push_back(new_ptr(Histogram(10000.,92000.,200))); for(unsigned int ix=0;ix<20;++ix) { _mphoton.push_back(new_ptr(Histogram(0.,92000.,400))); _ephoton.push_back(new_ptr(Histogram(0.,92000.,400))); } _cphoton=new_ptr(Histogram(-1.,1.,100)); _etotal.push_back(new_ptr(Histogram(0.,92000.,400))); _etotal.push_back(new_ptr(Histogram(0.,92000.,400))); _nphoton=new_ptr(Histogram(-0.5,100.5,101)); } void ZPhotonsAnalysis::persistentOutput(PersistentOStream & os) const { os <<_iferm; } void ZPhotonsAnalysis::persistentInput(PersistentIStream & is, int) { is >> _iferm; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/VPPGammaAnalysis.cc���������������������������������������0000644�0001750�0001750�00000015716�11754474774�024565� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the VPPGammaAnalysis class. // #include "VPPGammaAnalysis.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; VPPGammaAnalysis::VPPGammaAnalysis() { _id.push_back(ParticleID::rho0); _outgoing1.push_back(ParticleID::piplus); _outgoing2.push_back(ParticleID::piminus); _id.push_back(ParticleID::phi); _outgoing1.push_back(ParticleID::piplus); _outgoing2.push_back(ParticleID::piminus); _id.push_back(ParticleID::Jpsi); _outgoing1.push_back(ParticleID::piplus); _outgoing2.push_back(ParticleID::piminus); _id.push_back(ParticleID::phi); _outgoing1.push_back(ParticleID::Kplus); _outgoing2.push_back(ParticleID::Kminus); _id.push_back(ParticleID::Jpsi); _outgoing1.push_back(ParticleID::Kplus); _outgoing2.push_back(ParticleID::Kminus); _id.push_back(ParticleID::Kstar0); _outgoing1.push_back(ParticleID::Kplus); _outgoing2.push_back(ParticleID::piminus); } void VPPGammaAnalysis::analyze(tEventPtr event, long, int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; transform(event); // find all decaying particles tPVector particles; int id; for(unsigned int ix=0, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part=event->primaryCollision()->step(ix)->all(); ThePEG::ParticleSet::iterator iter=part.begin(); ThePEG::ParticleSet::iterator end=part.end(); for( ;iter!=end;++iter) { id=abs((**iter).id()); if((**iter).children().size()>=2&& find(_id.begin(),_id.end(),id)!=_id.end()) particles.push_back(*iter); } } } void VPPGammaAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void VPPGammaAnalysis::analyze(tPPtr part) { int imode(-1); long id [3]={part->id(),part->children()[0]->id(),part->children()[1]->id()}; long idb[3]; if(part->dataPtr()->CC()) idb[0]=part->dataPtr()->CC()->id(); else idb[0]=id[0]; for(unsigned int ix=0;ix<2;++ix) { if(part->children()[ix]->dataPtr()->CC()) idb[ix+1]=part->children()[ix]->dataPtr()->CC()->id(); else idb[ix+1]=id[ix+1]; } for(unsigned int ix=0;ix<_id.size();++ix) { if(id[0]==_id[ix]) { if((_outgoing1[ix]==id[1]&&_outgoing2[ix]==id[2])|| (_outgoing1[ix]==id[2]&&_outgoing2[ix]==id[1])) { imode=ix; } } else if(idb[0]==_id[ix]) { if((_outgoing1[ix]==idb[1]&&_outgoing2[ix]==idb[2])|| (_outgoing1[ix]==idb[2]&&_outgoing2[ix]==idb[1])) { imode=ix; } } if(imode>0) break; } Lorentz5Momentum pphoton; unsigned int mult=0; Energy emax=ZERO; int imax=-1; Lorentz5Momentum pferm(part->children()[0]->momentum()+ part->children()[1]->momentum()); pferm.boost(-part->momentum().boostVector()); pferm.rescaleMass(); *_masstotal[imode] += pferm.mass()/MeV; if(part->children().size()==2) { *_etotal[ imode]+=0.; *_esingle[imode]+=0.; *_eall[ imode]+=0.; *_nphoton[imode]+=0.; return; } Lorentz5Momentum ptemp; for(unsigned int ix=2;ix<part->children().size();++ix) { if(part->children()[ix]->id()!=ParticleID::gamma){return;} pphoton+=part->children()[ix]->momentum(); ptemp=part->children()[ix]->momentum(); ptemp.boost(-part->momentum().boostVector()); *_eall[imode]+=ptemp.e()/MeV; if(part->children()[ix]->momentum().e()>emax) { emax=part->children()[ix]->momentum().e(); imax=ix; } ++mult; } pphoton.boost(-part->momentum().boostVector()); pphoton.rescaleMass(); *_etotal[imode]+=pphoton.e()/MeV; ptemp=part->children()[imax]->momentum(); ptemp.boost(-part->momentum().boostVector()); *_esingle[imode]+=ptemp.e()/MeV; *_nphoton[imode]+=mult; } NoPIOClassDescription<VPPGammaAnalysis> VPPGammaAnalysis::initVPPGammaAnalysis; // Definition of the static class description member. void VPPGammaAnalysis::Init() { static ClassDocumentation<VPPGammaAnalysis> documentation ("There is no documentation for the VPPGammaAnalysis class"); static ParVector<VPPGammaAnalysis,long> interfaceIncoming ("Incoming", "The PDG code of the incoming particle", &VPPGammaAnalysis::_id, -1, long(0), 0, 0, false, false, Interface::nolimits); static ParVector<VPPGammaAnalysis,long> interfaceOutgoing1 ("Outgoing1", "The PDG code of the first outgoing particle", &VPPGammaAnalysis::_outgoing1, -1, long(0), 0, 0, false, false, Interface::nolimits); static ParVector<VPPGammaAnalysis,long> interfaceOutgoing2 ("Outgoing2", "The PDG code of the second outgoing particle", &VPPGammaAnalysis::_outgoing2, -1, long(0), 0, 0, false, false, Interface::nolimits); } void VPPGammaAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); string titlea,titleb; for(unsigned int ix=0;ix<_id.size();++ix) { titlea = " for decay " + getParticleData(_id[ix])->PDGName() + " -> " + getParticleData(_outgoing1[ix])->PDGName() + " " + getParticleData(_outgoing2[ix])->PDGName(); // number of photons titleb = "Photon multiplicity " +titlea; using namespace HistogramOptions; _nphoton[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",titleb,"" "1/SdS/dN0G1", " G G XGX", "N0G1", " XGX"); // fermion masses titleb = "Mass of the charged decay products "+titlea; _masstotal[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",titleb,"" "1/SdS/dm0l2+3l2-31/GeV2-13", " G G X X X X XX X X", "m0l2+3l2-31", " X X X X XX"); // total photon energy _masstotal[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",titleb,"" "1/SdS/dE0G1/GeV2-13", " G G XGX X X", "E0G1", " XGX"); titleb="Single photon energy for all events"+titlea; _esingle[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",titleb,"" "1/SdS/dE0G1/GeV2-13", " G G XGX X X", "E0G1", " XGX"); // all photon titleb="All photon energy for all events"+titlea; _eall[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",titleb,"" "1/SdS/dE0G1/GeV2-13", " G G XGX X X", "E0G1", " XGX"); } } void VPPGammaAnalysis::doinitrun() { AnalysisHandler::doinitrun(); for(unsigned int ix=0;ix<_id.size();++ix) { double mass = getParticleData(_id[ix])->mass()/MeV; for(unsigned iy=0;iy<3;++iy) { _masstotal.push_back(new_ptr(Histogram(0.,mass,1000))); _etotal.push_back(new_ptr(Histogram(0.,mass,1000))); _eall.push_back(new_ptr(Histogram(0.,mass,1000))); _esingle.push_back(new_ptr(Histogram(0.,mass,1000))); _nphoton.push_back(new_ptr(Histogram(-0.5,20.5,21))); } } } ��������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/ZPhotonsAnalysis.h����������������������������������������0000644�0001750�0001750�00000013261�11754474774�024574� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_ZPhotonsAnalysis_H #define HERWIG_ZPhotonsAnalysis_H // // This is the declaration of the ZPhotonsAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the ZPhotonsAnalysis class. * * @see \ref ZPhotonsAnalysisInterfaces "The interfaces" * defined for ZPhotonsAnalysis. */ class ZPhotonsAnalysis: public AnalysisHandler { public: /** * Default constructor */ ZPhotonsAnalysis() : _iferm(11) {} /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static ClassDescription<ZPhotonsAnalysis> initZPhotonsAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ZPhotonsAnalysis & operator=(const ZPhotonsAnalysis &); private: /** * id of the fermions to look at */ int _iferm; /** * histogram for the mass */ vector<HistogramPtr> _masstotal; /** * histogram for the energy */ vector<HistogramPtr> _etotal; /** * histogram for the mass */ vector<HistogramPtr> _mphoton; /** * histograms for the energies of different photons */ vector<HistogramPtr> _ephoton; /** * histograms for the cos thetas of different photons */ HistogramPtr _cphoton; /** * histogram for the photon multiplicity */ HistogramPtr _nphoton; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ZPhotonsAnalysis. */ template <> struct BaseClassTrait<Herwig::ZPhotonsAnalysis,1> { /** Typedef of the first base class of ZPhotonsAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the ZPhotonsAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ZPhotonsAnalysis> : public ClassTraitsBase<Herwig::ZPhotonsAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::ZPhotonsAnalysis"; } /** * The name of a file containing the dynamic library where the class * ZPhotonsAnalysis is implemented. It may also include several, space-separated, * libraries if the class ZPhotonsAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_ZPhotonsAnalysis_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/OniumToOniumPiPiAnalysis.cc�������������������������������0000644�0001750�0001750�00000010676�11754474774�026341� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the OniumToOniumPiPiAnalysis class. // #include "OniumToOniumPiPiAnalysis.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; void OniumToOniumPiPiAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { // Rotate to CMS, extract final state particles and call analyze(particles). AnalysisHandler::analyze(event, ieve, loop, state); tPVector particles; for(unsigned int ix=0, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part=event->primaryCollision()->step(ix)->all(); ThePEG::ParticleSet::iterator iter=part.begin(); ThePEG::ParticleSet::iterator end=part.end(); for( ;iter!=end;++iter) { if(((**iter).id()%1000==443||(**iter).id()%1000==553)&& (**iter).children().size()==3) particles.push_back(*iter); } } // analyse them analyze(particles); } void OniumToOniumPiPiAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void OniumToOniumPiPiAnalysis::analyze(tPPtr part) { tPPtr out; Lorentz5Momentum q,pip; unsigned int npi0(0),npip(0),npim(0); for(unsigned int ix=0;ix<part->children().size();++ix) { if(part->children()[ix]->id()==ParticleID::piplus) { ++npip; pip=part->children()[ix]->momentum(); q+=part->children()[ix]->momentum(); } else if(part->children()[ix]->id()==ParticleID::piminus) { ++npim; q+=part->children()[ix]->momentum(); } else if(part->children()[ix]->id()==ParticleID::pi0) { ++npi0; q+=part->children()[ix]->momentum(); pip=part->children()[ix]->momentum(); } else { out = part->children()[ix]; } } // require pi+pi- or pi0pi0 if(!(npi0==2||(npim==1&&npim==1))) return; // require incoming and outgoing onium if(part->id()%1000!=out->id()%1000) return; unsigned int ix=0; bool found(false); while(!found&&ix<_incoming.size()) { if(_incoming[ix]==part->id()&&_outgoing[ix]==out->id()) found=true; else ++ix; } if(!found) { Energy twompi=2.*getParticleData(ParticleID::piplus)->mass(); Energy upp = part->nominalMass()+part->dataPtr()->widthUpCut()- out ->nominalMass()+out->dataPtr()->widthLoCut(); ix=_incoming.size(); _incoming.push_back(part->id()); _outgoing.push_back(out ->id()); _mpipi.push_back(make_pair(new_ptr(Histogram(twompi/GeV,upp/GeV,200)), new_ptr(Histogram(twompi/GeV,upp/GeV,200)))); _hel .push_back(make_pair(new_ptr(Histogram(-1.,1.,200)), new_ptr(Histogram( 0.,1.,200)))); } // calculate the mass q.rescaleMass(); Energy mq=q.mass(); // calculate the helicity angle Boost boost = -q.boostVector(); Lorentz5Momentum qp=out->momentum(); Lorentz5Momentum ppi=pip; qp.boost(boost); q.boost(boost); ppi.boost(boost); double cX=-ppi.vect().unit()*qp.vect().unit(); if(npi0==2) { *_mpipi[ix].second+=mq/GeV; *_hel[ix].second+=abs(cX); } else { *_mpipi[ix].first+=mq/GeV; *_hel[ix].first+=cX; } } NoPIOClassDescription<OniumToOniumPiPiAnalysis> OniumToOniumPiPiAnalysis::initOniumToOniumPiPiAnalysis; // Definition of the static class description member. void OniumToOniumPiPiAnalysis::Init() { static ClassDocumentation<OniumToOniumPiPiAnalysis> documentation ("There is no documentation for the OniumToOniumPiPiAnalysis class"); } void OniumToOniumPiPiAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); for(unsigned int ix=0;ix<_incoming.size();++ix) { string title= getParticleData(_incoming[ix])->PDGName() + " -> " + getParticleData(_outgoing[ix])->PDGName(); string temp = "Mass distrubtion for pi+pi- in " + title; using namespace HistogramOptions; _mpipi[ix].first->topdrawOutput(output,Frame,"BLACK",temp); temp = "Mass distrubtion for pi0pi0 in " + title; _mpipi[ix].second->topdrawOutput(output,Frame,"BLACK",temp); temp = "Helicity angle for pi+pi- in " + title; _hel[ix].first->topdrawOutput(output,Frame,"BLACK",temp); temp = "Helicity angle for pi0pi0 in " + title; _hel[ix].second->topdrawOutput(output,Frame,"BLACK",temp); } } ������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/Upsilon4SMultiplicityCount.h������������������������������0000644�0001750�0001750�00000010646�11754474774�026572� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_Upsilon4SMultiplicityCount_H #define HERWIG_Upsilon4SMultiplicityCount_H // // This is the declaration of the Upsilon4SMultiplicityCount class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Analysis/MultiplicityInfo.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the Upsilon4SMultiplicityCount class. * * @see \ref Upsilon4SMultiplicityCountInterfaces "The interfaces" * defined for Upsilon4SMultiplicityCount. */ class Upsilon4SMultiplicityCount: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<Upsilon4SMultiplicityCount> initUpsilon4SMultiplicityCount; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Upsilon4SMultiplicityCount & operator=(const Upsilon4SMultiplicityCount &); private: /** * Map of PDG codes to multiplicity info */ map<long,MultiplicityInfo> _data; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Upsilon4SMultiplicityCount. */ template <> struct BaseClassTrait<Herwig::Upsilon4SMultiplicityCount,1> { /** Typedef of the first base class of Upsilon4SMultiplicityCount. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the Upsilon4SMultiplicityCount class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::Upsilon4SMultiplicityCount> : public ClassTraitsBase<Herwig::Upsilon4SMultiplicityCount> { /** Return a platform-independent class name */ static string className() { return "Herwig::Upsilon4SMultiplicityCount"; } /** * The name of a file containing the dynamic library where the class * Upsilon4SMultiplicityCount is implemented. It may also include several, space-separated, * libraries if the class Upsilon4SMultiplicityCount depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_Upsilon4SMultiplicityCount_H */ ������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/Pi4ElectronAnalysis.h�������������������������������������0000644�0001750�0001750�00000011345�11754474774�025141� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_Pi4ElectronAnalysis_H #define HERWIG_Pi4ElectronAnalysis_H // // This is the declaration of the Pi4ElectronAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the Pi4ElectronAnalysis class. * * @see \ref Pi4ElectronAnalysisInterfaces "The interfaces" * defined for Pi4ElectronAnalysis. */ class Pi4ElectronAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ inline virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ inline virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<Pi4ElectronAnalysis> initPi4ElectronAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Pi4ElectronAnalysis & operator=(const Pi4ElectronAnalysis &); private: /** * Histogram for the mass distribution */ vector<HistogramPtr> _mffbar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Pi4ElectronAnalysis. */ template <> struct BaseClassTrait<Herwig::Pi4ElectronAnalysis,1> { /** Typedef of the first base class of Pi4ElectronAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the Pi4ElectronAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::Pi4ElectronAnalysis> : public ClassTraitsBase<Herwig::Pi4ElectronAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::Pi4ElectronAnalysis"; } /** * The name of a file containing the dynamic library where the class * Pi4ElectronAnalysis is implemented. It may also include several, space-separated, * libraries if the class Pi4ElectronAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_Pi4ElectronAnalysis_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/VffGammaAnalysis.cc���������������������������������������0000644�0001750�0001750�00000014046�11754474774�024634� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the VffGammaAnalysis class. // #include "VffGammaAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; VffGammaAnalysis::VffGammaAnalysis() { // c cbar mesons _id.push_back(443);_id.push_back(100443);_id.push_back(30443); // b bbar mesons _id.push_back(553);_id.push_back(100553); _id.push_back(200553);_id.push_back(300553); } void VffGammaAnalysis::analyze(tEventPtr event, long , int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; transform(event); // find all particles tPVector particles; unsigned int idtemp[2]; for(unsigned int ix=0, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part=event->primaryCollision()->step(ix)->all(); ThePEG::ParticleSet::iterator iter=part.begin(); ThePEG::ParticleSet::iterator end=part.end(); for( ;iter!=end;++iter) { if((**iter).children().size()>=2) { idtemp[0]=abs((**iter).children()[0]->id()); idtemp[1]=abs((**iter).children()[1]->id()); if(idtemp[0]>10&&idtemp[0]<17&&idtemp[0]%2==1&& idtemp[1]>10&&idtemp[1]<17&&idtemp[1]%2==1) { for(unsigned int iy=0;iy<_id.size();++iy) { if((**iter).id()==_id[iy]){particles.push_back(*iter); } } } } } } // analyse them analyze(particles); } void VffGammaAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void VffGammaAnalysis::analyze(tPPtr part) { // find the decaying particle int imode(-1),id(part->id()); unsigned int ix(0); do { if(id==_id[ix]){imode=ix;} ++ix; } while(imode<0&&ix<_id.size()); if(imode<0) return; // find the type of lepton imode = 3*imode+(abs(part->children()[0]->id())-11)/2; Lorentz5Momentum pphoton; unsigned int mult(0); Energy emax(ZERO); int imax=-1; Lorentz5Momentum pferm(part->children()[0]->momentum()+ part->children()[1]->momentum()); pferm.boost(-part->momentum().boostVector()); pferm.rescaleMass(); *_masstotal[imode] += pferm.mass()/MeV; if(part->children().size()==2) { *_etotal[ imode]+=0.; *_esingle[imode]+=0.; *_eall[ imode]+=0.; *_nphoton[imode]+=0.; return; } Lorentz5Momentum ptemp; for(unsigned int ix=2;ix<part->children().size();++ix) { if(part->children()[ix]->id()!=ParticleID::gamma){return;} pphoton+=part->children()[ix]->momentum(); ptemp=part->children()[ix]->momentum(); ptemp.boost(-part->momentum().boostVector()); *_eall[imode]+=ptemp.e()/MeV; if(part->children()[ix]->momentum().e()>emax) { emax=part->children()[ix]->momentum().e(); imax=ix; } ++mult; } pphoton.boost(-part->momentum().boostVector()); pphoton.rescaleMass(); *_etotal[imode]+=pphoton.e()/MeV; ptemp=part->children()[imax]->momentum(); ptemp.boost(-part->momentum().boostVector()); *_esingle[imode]+=ptemp.e()/MeV; *_nphoton[imode]+=mult; } NoPIOClassDescription<VffGammaAnalysis> VffGammaAnalysis::initVffGammaAnalysis; // Definition of the static class description member. void VffGammaAnalysis::Init() { static ClassDocumentation<VffGammaAnalysis> documentation ("There is no documentation for the VffGammaAnalysis class"); static ParVector<VffGammaAnalysis,long> interfaceId ("Id", "PDG codes of the particles to be analysed", &VffGammaAnalysis::_id, -1, long(0), 0, 0, false, false, Interface::nolimits); } inline void VffGammaAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); string titlea,titleb,titlec; for(unsigned int ix=0;ix<_id.size();++ix) { titlea = " for decay " + getParticleData(_id[ix])->PDGName() + " -> "; for(unsigned int iy=0;iy<3;++iy) { if(iy==0){titleb = titlea + "e+ e-";} else if(iy==1){titleb = titlea + "mu+ mu-";} else if(iy==2){titleb = titlea + "tau+ tau-";} // number of photons titlec = "Photon multiplicity " +titleb; using namespace HistogramOptions; _nphoton[3*ix+iy]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",titlec,"" "1/SdS/dN0G1", " G G XGX", "N0G1", " XGX"); // fermion masses titlec = "Mass of the charged decay products "+titleb; _masstotal[3*ix+iy]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",titlec,"" "1/SdS/dm0l2+3l2-31/GeV2-13", " G G X X X X XX X X", "m0l2+3l2-31", " X X X X XX"); // total photon energy _masstotal[3*ix+iy]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",titlec,"" "1/SdS/dE0G1/GeV2-13", " G G XGX X X", "E0G1", " XGX"); titlec="Single photon energy for all events"+titleb; _esingle[3*ix+iy]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",titlec,"" "1/SdS/dE0G1/GeV2-13", " G G XGX X X", "E0G1", " XGX"); // all photon titlec="All photon energy for all events"+titleb; _eall[3*ix+iy]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",titlec,"" "1/SdS/dE0G1/GeV2-13", " G G XGX X X", "E0G1", " XGX"); } } } inline void VffGammaAnalysis::doinitrun() { AnalysisHandler::doinitrun(); for(unsigned int ix=0;ix<_id.size();++ix) { double mass = getParticleData(_id[ix])->mass()/MeV; for(unsigned iy=0;iy<3;++iy) { _masstotal.push_back(new_ptr(Histogram(0.,mass,1000))); _etotal.push_back(new_ptr(Histogram(0.,mass,1000))); _eall.push_back(new_ptr(Histogram(0.,mass,1000))); _esingle.push_back(new_ptr(Histogram(0.,mass,1000))); _nphoton.push_back(new_ptr(Histogram(-0.5,20.5,21))); } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/DDalitzAnalysis.cc����������������������������������������0000644�0001750�0001750�00000042467�11754474774�024513� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the DDalitzAnalysis class. // #include "DDalitzAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/EventRecord/Event.h" using namespace Herwig; void DDalitzAnalysis:: findChildren(tPPtr part,ParticleVector & prod) { if(part->children().empty()) { prod.push_back(part); } else { for(unsigned ix=0;ix<part->children().size();++ix) { findChildren(part->children()[ix],prod); } } } void DDalitzAnalysis::analyze(tEventPtr event, long , int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; transform(event); // find all D0/Dbar0 and D+/- tPVector particles; for(unsigned int ix=0, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part=event->primaryCollision()->step(ix)->all(); ThePEG::ParticleSet::iterator iter=part.begin(); ThePEG::ParticleSet::iterator end=part.end(); for( ;iter!=end;++iter) { if(abs((**iter).id())==ParticleID::D0|| abs((**iter).id())==ParticleID::Dplus|| abs((**iter).id())==ParticleID::D_splus) { particles.push_back(*iter); } } } // analyse them analyze(particles); } LorentzRotation DDalitzAnalysis::transform(tEventPtr ) const { return LorentzRotation(); // Return the Rotation to the frame in which you want to perform the analysis. } void DDalitzAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void DDalitzAnalysis::analyze(tPPtr part) { // find the stable decay products ParticleVector products; findChildren(part,products); vector<Lorentz5Momentum> ppim,ppip,pk0,pkp,pkm,ppi0; if(products.size()!=3) return; for(unsigned int ix=0;ix<products.size();++ix) { int id0=products[ix]->id(); if(id0==ParticleID::piplus) ppip.push_back(products[ix]->momentum()); else if(id0==ParticleID::piminus) ppim.push_back(products[ix]->momentum()); else if(id0==ParticleID::pi0) ppi0.push_back(products[ix]->momentum()); else if(abs(id0)==ParticleID::K0) pk0 .push_back(products[ix]->momentum()); else if(id0==ParticleID::K_L0) pk0 .push_back(products[ix]->momentum()); else if(id0==ParticleID::K_S0) pk0 .push_back(products[ix]->momentum()); else if(id0==ParticleID::Kplus) pkp.push_back(products[ix]->momentum()); else if(id0==ParticleID::Kminus) pkm.push_back(products[ix]->momentum()); } Energy2 mplus,mminus,mpipi,mneut; if(ppim.size()==1&&ppip.size()==1&&pk0.size()==1) { if(part->id()==ParticleID::D0) { mminus = (ppim.back()+pk0.back() ).m2(); mplus = (ppip.back()+pk0.back() ).m2(); mpipi = (ppip.back()+ppim.back()).m2(); } else { mminus = (ppip.back()+pk0.back()).m2(); mplus = (ppim.back()+pk0.back()).m2(); mpipi = (ppip.back()+ppim.back()).m2(); } *_m2plus1 +=mplus/GeV2; *_m2minus1 +=mminus/GeV2; *_m2pipi1 +=mpipi/GeV2; if(_points1.size()<200000) { _points1.push_back(make_pair(mplus,mminus)); } } else if ((ppim.size()==1&&pkp.size()==1&&ppi0.size()==1)|| (ppip.size()==1&&pkm.size()==1&&ppi0.size()==1)) { if(part->id()==ParticleID::D0) { mneut =(pkm .back()+ppip.back()).m2(); mminus=(pkm .back()+ppi0.back()).m2(); mpipi =(ppip.back()+ppi0.back()).m2(); } else { mneut =(pkp .back()+ppim.back()).m2(); mminus=(pkp .back()+ppi0.back()).m2(); mpipi =(ppim.back()+ppi0.back()).m2(); } *_m2neutral2 +=mneut/GeV2; *_m2minus2 +=mminus/GeV2; *_m2pipi2 +=mpipi/GeV2; if(_points2.size()<200000) { _points2.push_back(make_pair(mminus,mneut)); } } else if ((ppip.size()==2&&pkm.size()==1)|| (ppim.size()==2&&pkp.size()==1)) { if(part->id()==ParticleID::Dplus) { mplus = (pkm[0] +ppip[0]).m2(); mminus = (pkm[0] +ppip[1]).m2(); mpipi = (ppip[0]+ppip[1]).m2(); } else { mplus = (pkp[0] +ppim[0]).m2(); mminus = (pkp[0] +ppim[1]).m2(); mpipi = (ppim[0]+ppim[1]).m2(); } if(mplus<mminus) swap(mplus,mminus); *_mKpilow3 += mminus/GeV2; *_mKpihigh3+= mplus/GeV2; *_mKpiall3 += mminus/GeV2; *_mKpiall3 += mplus/GeV2; *_mpipi3 += mpipi/GeV2; if(_points3.size()<200000) { _points3.push_back(make_pair(mminus,mpipi)); } } else if ((ppip.size()==1&&ppi0.size()==1&&pk0.size()==1)|| (ppim.size()==1&&ppi0.size()==1&&pk0.size()==1)) { if(part->id()==ParticleID::Dplus) { mminus = (pk0[0]+ppip[0]).m2(); mplus = (pk0[0]+ppi0[0]).m2(); mpipi = (ppip[0]+ppi0[0]).m2(); } else { mminus = (pk0[0]+ppim[0]).m2(); mplus = (pk0[0]+ppi0[0]).m2(); mpipi = (ppim[0]+ppi0[0]).m2(); } *_m2Kpip4 += mminus/GeV2; *_m2pipi4 += mpipi /GeV2; *_m2Kpi04 += mplus /GeV2; if(_points4.size()<200000) { _points4.push_back(make_pair(mplus,mpipi)); } } else if ((ppim.size()==1&&pkp.size()==1&&ppip.size()==1)|| (ppim.size()==1&&pkm.size()==1&&ppip.size()==1)) { unsigned int itype(0); if(part->id()==ParticleID::Dplus) { itype=1; mplus = (pkp [0]+ppip[0]).m2(); mminus = (pkp [0]+ppim[0]).m2(); mpipi = (ppip[0]+ppim[0]).m2(); } else if(part->id()==ParticleID::Dminus) { itype=1; mplus = (pkm [0]+ppim[0]).m2(); mminus = (pkm [0]+ppip[0]).m2(); mpipi = (ppip[0]+ppim[0]).m2(); } else if(part->id()==ParticleID::D_splus) { itype=2; mplus = (pkp [0]+ppip[0]).m2(); mminus = (pkp [0]+ppim[0]).m2(); mpipi = (ppip[0]+ppim[0]).m2(); } else if(part->id()==ParticleID::D_sminus) { itype=2; mplus = (pkm [0]+ppim[0]).m2(); mminus = (pkm [0]+ppip[0]).m2(); mpipi = (ppip[0]+ppim[0]).m2(); } else return; if(itype==1) { *_mkppim5 +=mminus/GeV2; *_mkppip5 +=mplus /GeV2; *_mpippim5+=mpipi /GeV2; _points5.push_back(make_pair(mminus,mpipi)); } else { *_mkppim6 +=mminus/GeV2; *_mkppip6 +=mplus /GeV2; *_mpippim6+=mpipi /GeV2; _points6.push_back(make_pair(mminus,mpipi)); } } } void DDalitzAnalysis::persistentOutput(PersistentOStream & ) const { } void DDalitzAnalysis::persistentInput(PersistentIStream & , int) { } ClassDescription<DDalitzAnalysis> DDalitzAnalysis::initDDalitzAnalysis; // Definition of the static class description member. void DDalitzAnalysis::Init() { static ClassDocumentation<DDalitzAnalysis> documentation ("There is no documentation for the DDalitzAnalysis class"); } void DDalitzAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; _m2plus1->topdrawOutput(output,Frame|Errorbars,"RED", "m0+1223 for D203RK203P2+3P2-3", " X XX X X XW X XGX XGX X", "1/GdG/m0+1223/GeV2-23", " F F X XX X X X", "m0+1223/GeV223", " X XX X X X"); _m2minus1->topdrawOutput(output,Frame|Errorbars,"RED", "m0-1223 for D203RK203P2+3P2-3", " X XX X X XW X XGX XGX X", "1/GdG/m0-1223/GeV2-23", " F F X XX X X X", "m0-1223/GeV223", " X XX X X X"); _m2pipi1->topdrawOutput(output,Frame|Errorbars,"RED", "m0PP1223 for D203RK203P2+3P2-3", " XGGXX X X XW X XGX XGX X", "1/GdG/m0PP1223/GeV2-23", " F F XGGXX X X X", "m0PP1223/GeV223", " XGGXX X X X"); _m2minus2->topdrawOutput(output,Frame|Errorbars,"RED", "m0K2-3P2031223 for D203RK2-3P2+3P203", " X X XGX XXX X X XW X XGX XGX X", "1/GdG/m0K2-3P2031223/GeV2-23", " F F X X XGX XXX X X X", "m0K2-3P2031223/GeV223", " X X XGX XXX X X X"); _m2neutral2->topdrawOutput(output,Frame|Errorbars,"RED", "m0K2-3P2+31223 for D203RK2-3P2+3P203", " X X XGX XXX X X XW X XGX XGX X", "1/GdG/m0K2-3P2+31223/GeV2-23", " F F X X XGX XXX X X X", "m0K2-3P2+31223/GeV223", " X X XGX XXX X X X"); _m2pipi2->topdrawOutput(output,Frame|Errorbars,"RED", "m0PP1223 for D203RK2-3P2+3P203", " XGGXX X X XW X XGX XGX X", "1/GdG/m0PP1223/GeV2-23", " F F XGGXX X X X", "m0PP1223/GeV223", " XGGXX X X X"); _mKpilow3->topdrawOutput(output,Frame|Errorbars,"RED", "m0K2-3P2+31223 for D2+3RK2-3P2+3P2+3 low", " X X XGX XXX X X XW X XGX XGX X ", "1/GdG/m0K2-3P2+31223/GeV2-23", " F F X X XGX XXX X X X", "m0K2-3P2+31223/GeV223", " X X XGX XXX X X X"); _mKpihigh3->topdrawOutput(output,Frame|Errorbars,"RED", "m0K2-3P2+31223 for D2+3RK2-3P2+3P2+3 high", " X X XGX XXX X X XW X XGX XGX X ", "1/GdG/m0K2-3P2+31223/GeV2-23", " F F X X XGX XXX X X X", "m0K2-3P2+31223/GeV223", " X X XGX XXX X X X"); _mKpiall3->topdrawOutput(output,Frame|Errorbars,"RED", "m0K2-3P2+31223 for D2+3RK2-3P2+3P2+3 all", " X X XGX XXX X X XW X XGX XGX X ", "1/GdG/m0K2-3P2+31223/GeV2-23", " F F X X XGX XXX X X X", "m0K2-3P2+31223/GeV223", " X X XGX XXX X X X"); _mpipi3->topdrawOutput(output,Frame|Errorbars,"RED", "m0P2+3P2+31223 for D2+3RK2-3P2+3P2+3 all", " XGX XGX XXX X X XW X XGX XGX X ", "1/GdG/m0P2+3P2+31223/GeV2-23", " F F XGX XGX XXX X X X", "m0P2+3P2+31223/GeV223", " XGX XGX XXX X X X"); _m2Kpip4->topdrawOutput(output,Frame|Errorbars,"RED", "m0K203P2+31223 for D2+3RK203P2+3P203", " X X XGX XXX X X XW X XGX XGX X", "1/GdG/m0K203P2+31223/GeV2-23", " F F X X XGX XXX X X X", "m0K203P2+31223/GeV223", " X X XGX XXX X X X"); _m2pipi4->topdrawOutput(output,Frame|Errorbars,"RED", "m0P203P2+31223 for D2+3RK203P2+3P203", " XGX XGX XXX X X XW X XGX XGX X", "1/GdG/m0P203P2+31223/GeV2-23", " F F XGX XGX XXX X X X", "m0P203P2+31223/GeV223", " XGX XGX XXX X X X"); _m2Kpi04->topdrawOutput(output,Frame|Errorbars,"RED", "m0K203P2-31223 for D2+3RK203P2+3P203", " X X XGX XXX X X XW X XGX XGX X", "1/GdG/m0K203P2-31223/GeV2-23", " F F X X XGX XXX X X X", "m0K203P2-31223/GeV223", " X X XGX XXX X X X"); _mkppim5->topdrawOutput(output,Frame|Errorbars,"RED", "m0K2+3P2-31223 for D2+3RK2+3P2-3P2+3", " X X XGX XXX X X XW X XGX XGX X", "1/GdG/m0K2+3P2-31223/GeV2-23", " F F X X XGX XXX X X X", "m0K2+3P2-31223/GeV223", " X X XGX XXX X X X"); _mkppip5->topdrawOutput(output,Frame|Errorbars,"RED", "m0K2+3P2+31223 for D2+3RK2+3P2-3P2+3", " X X XGX XXX X X XW X XGX XGX X", "1/GdG/m0K2+3P2+31223/GeV2-23", " F F X X XGX XXX X X X", "m0K2+3P2+31223/GeV223", " X X XGX XXX X X X"); _mpippim5->topdrawOutput(output,Frame|Errorbars,"RED", "m0P2+3P2-31223 for D2+3RK2+3P2-3P2+3", " XGX XGX XXX X X XW X XGX XGX X", "1/GdG/m0P2+3P2-31223/GeV2-23", " F F XGX XGX XXX X X X", "m0P2+3P2-31223/GeV223", " XGX XGX XXX X X X"); _mkppim6->topdrawOutput(output,Frame|Errorbars,"RED", "m0K2+3P2-31223 for D0s12+3RK2+3P2-3P2+3", " X X XGX XXX X X XX XW X XGX XGX X", "1/GdG/m0K2+3P2-31223/GeV2-23", " F F X X XGX XXX X X X", "m0K2+3P2-31223/GeV223", " X X XGX XXX X X X"); _mkppip6->topdrawOutput(output,Frame|Errorbars,"RED", "m0K2+3P2+31223 for D0s12+3RK2+3P2-3P2+3", " X X XGX XXX X X XX XW X XGX XGX X", "1/GdG/m0K2+3P2+31223/GeV2-23", " F F X X XGX XXX X X X", "m0K2+3P2+31223/GeV223", " X X XGX XXX X X X"); _mpippim6->topdrawOutput(output,Frame|Errorbars,"RED", "m0P2+3P2-31223 for D0s12+3RK2+3P2-3P2+3", " XGX XGX XXX X X XX XW X XGX XGX X", "1/GdG/m0P2+3P2-31223/GeV2-23", " F F XGX XGX XXX X X X", "m0P2+3P2-31223/GeV223", " XGX XGX XXX X X X"); if(!_points1.empty()) { output << "new frame\n"; output << "set font duplex\n"; output << "set limits x 0 3 y 0 3\n"; output << "set order x y \n"; output << "title top \"Dalitz plot for D203RK203P2+3P2-3\"\n"; output << "case \" X XW X XGX XGX X\"\n"; output << "title left \"m0-1223/GeV223\"\n"; output << "case \" X XX X X X\"\n"; output << "title bottom \"m0+1223/GeV223\"\n"; output << "case \" X XX X X X\"\n"; for(unsigned int ix=0;ix<_points1.size();++ix) { output << _points1[ix].first /GeV2 << " " << _points1[ix].second/GeV2 << "\n"; if(ix%50000==0) output << "plot\n"; } output << "plot\n"; } if(!_points2.empty()) { output << "new frame\n"; output << "set font duplex\n"; output << "set limits x 0 3 y 0 3\n"; output << "set order x y \n"; output << "title top \"Dalitz plot for D203RK2-3P2+3P203\"\n"; output << "case \" X XW X XGX XGX X\"\n"; output << "title left \"m0-1223/GeV223\"\n"; output << "case \" X XX X X X\"\n"; output << "title bottom \"m0+1223/GeV223\"\n"; output << "case \" X XX X X X\"\n"; for(unsigned int ix=0;ix<_points2.size();++ix) { output << _points2[ix].first /GeV2 << " " << _points2[ix].second/GeV2 << "\n"; if(ix%50000==0) output << "plot\n"; } output << "plot\n"; } if(!_points3.empty()) { output << "new frame\n"; output << "set font duplex\n"; output << "set limits x 0 3 y 0 3\n"; output << "set order x y \n"; output << "title top \"Dalitz plot for D2+3RK2-3P2+3P2+3\"\n"; output << "case \" X XW X XGX XGX X\"\n"; output << "title left \"m0K2-3P2+31223\"\n"; output << "case \" X X XGX XXX X\"\n"; output << "title bottom \"m0P2+3P2+31223\"\n"; output << "case \" XGX XGX XXX X\"\n"; for(unsigned int ix=0;ix<_points3.size();++ix) { output << _points3[ix].first /GeV2 << " " << _points3[ix].second/GeV2 << "\n"; if(ix%50000==0) output << "plot\n"; } output << "plot\n"; } if(!_points4.empty()) { output << "new frame\n"; output << "set font duplex\n"; output << "set limits x 0 3 y 0 3\n"; output << "set order x y \n"; output << "title top \"Dalitz plot for D2+3RK203P2+3P203\"\n"; output << "case \" X XW X XGX XGX X\"\n"; output << "title left \"m0P2+3P2031223\"\n"; output << "case \" XGX XGX XXX X\"\n"; output << "title bottom \"m0K203P2031223\"\n"; output << "case \" X X XGX XXX X\"\n"; for(unsigned int ix=0;ix<_points4.size();++ix) { output << _points4[ix].first /GeV2 << " " << _points4[ix].second/GeV2 << "\n"; if(ix%50000==0) output << "plot\n"; } output << "plot\n"; } if(!_points5.empty()) { output << "new frame\n"; output << "set font duplex\n"; output << "set limits x 0 3 y 0 3\n"; output << "set order x y \n"; output << "title top \"Dalitz plot for D2+3RK2+3P2-3P2+3\"\n"; output << "case \" X XW X XGX XGX X\"\n"; output << "title left \"m0P2+3P2-31223\"\n"; output << "case \" XGX XGX XXX X\"\n"; output << "title bottom \"m0K2+3P2-31223\"\n"; output << "case \" X X XGX XXX X\"\n"; for(unsigned int ix=0;ix<_points5.size();++ix) { output << _points5[ix].first /GeV2 << " " << _points5[ix].second/GeV2 << "\n"; if(ix%50000==0) output << "plot\n"; } output << "plot\n"; } if(!_points6.empty()) { output << "new frame\n"; output << "set font duplex\n"; output << "set limits x 0 3.5 y 0 2.5\n"; output << "set order x y \n"; output << "title top \"Dalitz plot for D0s12+3RK2+3P2-3P2+3\"\n"; output << "case \" X XX XW X XGX XGX X\"\n"; output << "title left \"m0P2+3P2-31223\"\n"; output << "case \" XGX XGX XXX X\"\n"; output << "title bottom \"m0K2+3P2-31223\"\n"; output << "case \" X X XGX XXX X\"\n"; for(unsigned int ix=0;ix<_points6.size();++ix) { output << _points6[ix].first /GeV2 << " " << _points6[ix].second/GeV2 << "\n"; if(ix%50000==0) output << "plot\n"; } output << "plot\n"; } } void DDalitzAnalysis::doinitrun() { AnalysisHandler::doinitrun(); _m2plus1 = new_ptr(Histogram(0.,3.,200)); _m2minus1 = new_ptr(Histogram(0.,3.,200)); _m2pipi1 = new_ptr(Histogram(0.,2.,200)); _m2minus2 = new_ptr(Histogram(0.,3.,200)); _m2neutral2 = new_ptr(Histogram(0.,3.,200)); _m2pipi2 = new_ptr(Histogram(0.,2.,200)); _mKpilow3 = new_ptr(Histogram(0.,3.,200)); _mKpihigh3 = new_ptr(Histogram(0.,3.,200)); _mKpiall3 = new_ptr(Histogram(0.,3.,200)); _mpipi3 = new_ptr(Histogram(0.,2.,200)); _m2Kpip4 = new_ptr(Histogram(0.,3.,200)); _m2pipi4 = new_ptr(Histogram(0.,2.,200)); _m2Kpi04 = new_ptr(Histogram(0.,3.,200)); _mkppim5 = new_ptr(Histogram(0.,3.,200)); _mkppip5 = new_ptr(Histogram(0.,3.,200)); _mpippim5 = new_ptr(Histogram(0.,3.,200)); _mkppim6 = new_ptr(Histogram(0.,3.5,200)); _mkppip6 = new_ptr(Histogram(0.,3.5,200)); _mpippim6 = new_ptr(Histogram(0.,3.,200)); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/SemiLeptonicDecayAnalysis.h�������������������������������0000644�0001750�0001750�00000012112�11754474774�026343� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_SemiLeptonicDecayAnalysis_H #define HERWIG_SemiLeptonicDecayAnalysis_H // // This is the declaration of the SemiLeptonicDecayAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the SemiLeptonicDecayAnalysis class. * * @see \ref SemiLeptonicDecayAnalysisInterfaces "The interfaces" * defined for SemiLeptonicDecayAnalysis. */ class SemiLeptonicDecayAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<SemiLeptonicDecayAnalysis> initSemiLeptonicDecayAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SemiLeptonicDecayAnalysis & operator=(const SemiLeptonicDecayAnalysis &); private: /** * PDG codes of the decaying mesons */ vector<long> _incoming; /** * PDG codes of the decay products */ vector<long> _outgoing; /** * Identidies of the leptons */ vector<long> _outgoingL; /** * Histograms */ //@{ /** * The lepton energy */ vector<HistogramPtr> _energy; /** * The \f$q\f$ value */ vector<HistogramPtr> _scale; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SemiLeptonicDecayAnalysis. */ template <> struct BaseClassTrait<Herwig::SemiLeptonicDecayAnalysis,1> { /** Typedef of the first base class of SemiLeptonicDecayAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the SemiLeptonicDecayAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SemiLeptonicDecayAnalysis> : public ClassTraitsBase<Herwig::SemiLeptonicDecayAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::SemiLeptonicDecayAnalysis"; } /** * The name of a file containing the dynamic library where the class * SemiLeptonicDecayAnalysis is implemented. It may also include several, space-separated, * libraries if the class SemiLeptonicDecayAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_SemiLeptonicDecayAnalysis_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/Upsilon4SMultiplicityCount.cc�����������������������������0000644�0001750�0001750�00000012543�11754474774�026726� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the Upsilon4SMultiplicityCount class. // #include "Upsilon4SMultiplicityCount.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/EventRecord/Event.h" using namespace Herwig; inline IBPtr Upsilon4SMultiplicityCount::clone() const { return new_ptr(*this); } inline IBPtr Upsilon4SMultiplicityCount::fullclone() const { return new_ptr(*this); } void Upsilon4SMultiplicityCount::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). set<tcPPtr> particles; StepVector steps = event->primaryCollision()->steps(); if (steps.size() > 2) { for ( StepVector::const_iterator it = steps.begin()+2; it != steps.end(); ++it ) { (**it).select(inserter(particles), ThePEG::AllSelector()); } } if(particles.empty()) return; map <long,long> eventcount; // get most multiplicities for(set<tcPPtr>::const_iterator it = particles.begin(); it != particles.end(); ++it) { long ID = abs((*it)->id()); // sort out neutral kaons if(ID==ParticleID::K0) continue; if(ID==ParticleID::K_L0||ID==ParticleID::K_S0) ID=ParticleID::K0; // otherwise add to count if (_data.find(ID) != _data.end()) ++eventcount[ID]; } // final-state charged particles particles.clear(); event->selectFinalState(inserter(particles)); for(set<tcPPtr>::const_iterator it = particles.begin(); it != particles.end(); ++it) { if((*it)->dataPtr()->charged()) ++eventcount[0]; } // store info for(map<long,MultiplicityInfo>::iterator it = _data.begin(); it != _data.end(); ++it) { long currentcount = eventcount.find(it->first) == eventcount.end() ? 0 : eventcount[it->first]; it->second.count += currentcount; } } NoPIOClassDescription<Upsilon4SMultiplicityCount> Upsilon4SMultiplicityCount::initUpsilon4SMultiplicityCount; // Definition of the static class description member. void Upsilon4SMultiplicityCount::Init() { static ClassDocumentation<Upsilon4SMultiplicityCount> documentation ("There is no documentation for the Upsilon4SMultiplicityCount class"); } void Upsilon4SMultiplicityCount::dofinish() { AnalysisHandler::dofinish(); string filename = generator()->filename() + ".mult"; ofstream outfile(filename.c_str());outfile << "\nParticle multiplicities (compared to Upsilon(4s) data):\n" " ID Name simMult obsMult obsErr Sigma\n"; for (map<long,MultiplicityInfo>::const_iterator it = _data.begin(); it != _data.end(); ++it) { MultiplicityInfo multiplicity = it->second; string name = it->first==0 ? "All chgd" : generator()->getParticleData(it->first)->PDGName(); ios::fmtflags oldFlags = outfile.flags(); outfile << std::scientific << std::showpoint << std::setprecision(3) << setw(7) << it->first << ' ' << setw(9) << name << ' ' << setw(2) << multiplicity.simMultiplicity() << " | " << setw(2) << multiplicity.obsMultiplicity << " +/- " << setw(2) << multiplicity.obsError << ' ' << std::showpos << std::setprecision(1) << multiplicity.nSigma() << ' ' << multiplicity.bargraph() << std::noshowpos; outfile << '\n'; outfile.flags(oldFlags); } outfile.close(); } void Upsilon4SMultiplicityCount::doinitrun() { AnalysisHandler::doinitrun(); // all charged _data[0] = MultiplicityInfo(10.71,0.18, lightMeson); // kaons _data[321] = MultiplicityInfo( 2.*0.789 , 2.*0.025 , strangeMeson); _data[311] = MultiplicityInfo( 2.*0.64 , 2.*0.04 , strangeMeson); _data[323] = MultiplicityInfo( 2.*0.18 , 2.*0.06 , strangeMeson); _data[313] = MultiplicityInfo( 2.*0.146 , 2.*0.026 , strangeMeson); // light mesons _data[211] = MultiplicityInfo( 2.*3.58 , 2.*0.07 , lightMeson); _data[111] = MultiplicityInfo( 2.*2.35 , 2.*0.11 , lightMeson); _data[221] = MultiplicityInfo( 2.*0.176 , 2.*0.016 , lightMeson); _data[113] = MultiplicityInfo( 2.*0.21 , 2.*0.05 , lightMeson); _data[333] = MultiplicityInfo( 2.*0.0342 , 2.*0.0013 , lightMeson); // baryons _data[2212] = MultiplicityInfo( 2.*0.08 , 2.*0.004 , lightBaryon); _data[3122] = MultiplicityInfo( 2.*0.04 , 2.*0.005 , lightBaryon); _data[3312] = MultiplicityInfo( 2.*0.0027 , 2.*0.006 , lightBaryon); _data[4122] = MultiplicityInfo( 2.*0.045 , 2.*0.012 , other); _data[4112] = MultiplicityInfo( 4.*0.0046 , 4.*0.0024 , other); _data[4222] = MultiplicityInfo( 4.*0.0042 , 4.*0.0024 , other); // charmonium _data[443] = MultiplicityInfo( 2.*0.01094, 2.*0.00032, other); _data[100443] = MultiplicityInfo( 2.*0.00307, 2.*0.00021, other); _data[20443] = MultiplicityInfo( 2.*0.00386, 2.*0.00027, other); _data[445] = MultiplicityInfo( 2.*0.0013 , 2.*0.0004 , other); // D+, D0, D_s+ _data[411] = MultiplicityInfo( 2.*0.228, 2.*0.014, other); _data[421] = MultiplicityInfo( 2.*0.637, 2.*0.03 , other); _data[431] = MultiplicityInfo( 2.*0.083, 2.*0.008, other); _data[413] = MultiplicityInfo( 2.*0.225, 2.*0.015, other); _data[423] = MultiplicityInfo( 2.*0.260, 2.*0.027, other); _data[433] = MultiplicityInfo( 2.*0.063, 2.*0.006, other); } �������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/OmegaPhi3PionAnalysis.h�����������������������������������0000644�0001750�0001750�00000013007�11754474774�025410� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_OmegaPhi3PionAnalysis_H #define HERWIG_OmegaPhi3PionAnalysis_H // // This is the declaration of the OmegaPhi3PionAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the OmegaPhi3PionAnalysis class. * * @see \ref OmegaPhi3PionAnalysisInterfaces "The interfaces" * defined for OmegaPhi3PionAnalysis. */ class OmegaPhi3PionAnalysis: public AnalysisHandler { public: /** * Default Constructor */ inline OmegaPhi3PionAnalysis() : _nmax(50000) {} /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<OmegaPhi3PionAnalysis> initOmegaPhi3PionAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ OmegaPhi3PionAnalysis & operator=(const OmegaPhi3PionAnalysis &); private: /** * Histogram for the \f$x\f$-values */ vector<HistogramPtr> _xhist; /** * Histogram for the \f$y\f$-values */ vector<HistogramPtr> _yhist; /** * Histograms for the masses */ //@{ /** * The mass of the \f$\rho^+\f$ */ vector<HistogramPtr> _mplus; /** * The mass of the \f$\rho^-\f$ */ vector<HistogramPtr> _mminus; /** * The mass of the \f$\rho^0\f$ */ vector<HistogramPtr> _m0; //@} /** * Vectors to store the \f$x\f$ and\f$y\f$ values for */ //@{ /** * The \f$x\f$ value */ vector<vector<Energy> > _xvalue; /** * The \f$y\f$ value */ vector<vector<Energy> > _yvalue; //@} /** * Maximum number of points for the Dalitz plots */ unsigned int _nmax; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of OmegaPhi3PionAnalysis. */ template <> struct BaseClassTrait<Herwig::OmegaPhi3PionAnalysis,1> { /** Typedef of the first base class of OmegaPhi3PionAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the OmegaPhi3PionAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::OmegaPhi3PionAnalysis> : public ClassTraitsBase<Herwig::OmegaPhi3PionAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::OmegaPhi3PionAnalysis"; } /** * The name of a file containing the dynamic library where the class * OmegaPhi3PionAnalysis is implemented. It may also include several, space-separated, * libraries if the class OmegaPhi3PionAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_OmegaPhi3PionAnalysis_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/PScalarVectorFermionsAnalysis.cc��������������������������0000644�0001750�0001750�00000011654�11754474774�027365� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the PScalarVectorFermionsAnalysis class. // #include "PScalarVectorFermionsAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include <ThePEG/EventRecord/Event.h> #include <ThePEG/PDT/EnumParticles.h> #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; void PScalarVectorFermionsAnalysis::analyze(tEventPtr event, long, int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; transform(event); // find all scalar particles with three children and first // decay product is a vector tPVector particles; for(unsigned int ix=0, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part=event->primaryCollision()->step(ix)->all(); ThePEG::ParticleSet::iterator iter=part.begin(); ThePEG::ParticleSet::iterator end=part.end(); for( ;iter!=end;++iter) { if((**iter).dataPtr()->iSpin()==PDT::Spin0&&(**iter).children().size()==3) { particles.push_back(*iter); } } } // analyse them analyze(particles); } void PScalarVectorFermionsAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void PScalarVectorFermionsAnalysis::analyze(tPPtr part) { ParticleVector children=part->children(); // ensure photon first if(children[1]->id()==ParticleID::gamma) swap(children[0],children[1]); if(children[2]->id()==ParticleID::gamma) swap(children[0],children[2]); // and lepton next if(children[1]->id()<0) swap(children[1],children[2]); int id[3]={children[0]->id(),children[1]->id(), children[2]->id()}; // id's of the fermions if(id[0]!=ParticleID::gamma) return; if(abs(id[1])!=abs(id[2])) return; if(abs(id[1])!=11&&abs(id[1])!=13) return; // check if we already have this decay unsigned int ix=0; bool found(false); while(!found&&ix<_incoming.size()) { if(_incoming[ix]==part->id()&&_outgoingV[ix]==id[0]&&_outgoingf[ix]==abs(id[1])) found=true; else ++ix; } // create a new graph if needed if(!found) { ix=_incoming.size(); _incoming.push_back(part->id()); _outgoingV.push_back(id[0]); _outgoingf.push_back(abs(id[1])); _mffa.push_back(new_ptr(Histogram(0.0, (part->nominalMass()+part->dataPtr()->widthUpCut())/MeV, 200))); _mffb.push_back(new_ptr(Histogram(0.0,20,200))); _mVf.push_back(new_ptr(Histogram(0.0, (part->nominalMass()+part->dataPtr()->widthUpCut())/MeV, 200))); _mVfbar.push_back(new_ptr(Histogram(0.0, (part->nominalMass()+part->dataPtr()->widthUpCut())/MeV, 200))); } // add the results to the histogram Lorentz5Momentum ptemp; ptemp=children[1]->momentum()+children[2]->momentum(); ptemp.rescaleMass(); *_mffa[ix]+=ptemp.mass()/MeV; *_mffb[ix]+=ptemp.mass()/MeV; ptemp=children[0]->momentum()+children[1]->momentum(); ptemp.rescaleMass(); *_mVf[ix]+=ptemp.mass()/MeV; ptemp=children[0]->momentum()+children[2]->momentum(); ptemp.rescaleMass(); *_mVfbar[ix]+=ptemp.mass()/MeV; } NoPIOClassDescription<PScalarVectorFermionsAnalysis> PScalarVectorFermionsAnalysis::initPScalarVectorFermionsAnalysis; // Definition of the static class description member. void PScalarVectorFermionsAnalysis::Init() { static ClassDocumentation<PScalarVectorFermionsAnalysis> documentation ("There is no documentation for the PScalarVectorFermionsAnalysis class"); } void PScalarVectorFermionsAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); string title,temp; for(unsigned int ix=0;ix<_incoming.size();++ix) { title= getParticleData(_incoming[ix])->PDGName() + " -> " + getParticleData(_outgoingV[ix])->PDGName()+ " " + getParticleData(_outgoingf[ix])->PDGName() + " " + getParticleData(-_outgoingf[ix])->PDGName(); temp = "Mass for f fbar in " +title; using namespace HistogramOptions; _mffa[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",temp,"", "1/SdS/dm0l2+3l2-31/GeV2-13", " G G X X X X XX X X", "m0l2+3l2-31", " X X X X XX"); _mffb[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",temp,"", "1/SdS/dm0l2+3l2-31/GeV2-13", " G G X X X X XX X X", "m0l2+3l2-31", " X X X X XX"); temp = "Mass for vector fermion mass in " +title; _mVf[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",temp,"", "1/SdS/dm0Vl2-31/GeV2-13", " G G X X XX X X", "m0Vl2-31", " X X XX"); temp = "Mass for vector fbar mass in " +title; _mVfbar[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",temp,"", "1/SdS/dm0Vl2+31/GeV2-13", " G G X X XX X X", "m0Vl2+31", " X X XX"); } } ������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/BtoSGammaAnalysis.cc��������������������������������������0000644�0001750�0001750�00000007104�11754474774�024757� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the BtoSGammaAnalysis class. // #include "BtoSGammaAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; void BtoSGammaAnalysis::analyze(tEventPtr event, long, int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; transform(event); // find all three body B decays tPVector particles; for(unsigned int ix=1, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part(event->primaryCollision()->step(ix)->all()); ThePEG::ParticleSet::iterator iter(part.begin()),end(part.end()); for( ;iter!=end;++iter) { if((abs((**iter).id())==ParticleID::Bplus||abs((**iter).id())==ParticleID::B0)) particles.push_back(*iter); } } // analyse them analyze(particles); } void BtoSGammaAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void BtoSGammaAnalysis::analyze(tPPtr part) { Lorentz5Momentum phad; Lorentz5Momentum pgamma; unsigned int ngamma(0); for(unsigned int ix=0;ix<part->children().size();++ix) { if(part->children()[ix]->id()==ParticleID::gamma) { ++ngamma; pgamma+=part->children()[ix]->momentum(); } else { phad+=part->children()[ix]->momentum(); } } if(ngamma!=1) return; int id(part->id()); unsigned int imode; if(id==ParticleID::B0) imode=0; else if(id==ParticleID::Bbar0) imode=1; else if(id==ParticleID::Bplus) imode=2; else if(id==ParticleID::Bminus) imode=3; else return; // calculate the hadronic mass phad.rescaleMass(); *_hadmass[imode] += phad.mass()/MeV; pgamma.boost(-part->momentum().boostVector()); *_spectrum[imode]+=pgamma.e()/MeV; } NoPIOClassDescription<BtoSGammaAnalysis> BtoSGammaAnalysis::initBtoSGammaAnalysis; // Definition of the static class description member. void BtoSGammaAnalysis::Init() { static ClassDocumentation<BtoSGammaAnalysis> documentation ("There is no documentation for the BtoSGammaAnalysis class"); } void BtoSGammaAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); // output the histograms string title,temp[2],tcase; for(unsigned int ix=0;ix<4;++ix) { if(ix==0) { title="B203"; tcase=" X X"; } else if(ix==1) { title="B0O203"; tcase=" UDX X"; } else if(ix==2) { title="B2+3"; tcase=" X X"; } else if(ix==3) { title="B2-3"; tcase=" X X"; } temp[0] = "Hadronic Mass for " + title; temp[1] = " " + tcase; using namespace HistogramOptions; _hadmass[ix]->topdrawOutput(output,Frame|Errorbars, "RED", temp[0],temp[1], "1/SdS/dm/GeV2-13", " G G X X", "m/GeV", " "); temp[0]= "Photon spectrum for " + title; temp[1]= " " + tcase; _spectrum[ix]->topdrawOutput(output,Frame|Errorbars, "RED", temp[0],temp[1], "1/SdS/dE0G1/GeV2-13", " G G XGX X X", "E0G1/GeV", " XGX "); } } void BtoSGammaAnalysis::doinitrun() { AnalysisHandler::doinitrun(); for(unsigned int ix=0;ix<4;++ix) { _hadmass.push_back(new_ptr(Histogram(850.,4500.,100))); _spectrum.push_back(new_ptr(Histogram(0.,2800.,100))); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/VectorPScalarFermionsAnalysis.cc��������������������������0000644�0001750�0001750�00000011345�11754474774�027362� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the VectorPScalarFermionsAnalysis class. // #include "VectorPScalarFermionsAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; void VectorPScalarFermionsAnalysis::analyze(tEventPtr event, long, int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; transform(event); // find all vector particles tPVector particles; for(unsigned int ix=0, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part=event->primaryCollision()->step(ix)->all(); ThePEG::ParticleSet::iterator iter=part.begin(); ThePEG::ParticleSet::iterator end=part.end(); for( ;iter!=end;++iter) { if((**iter).dataPtr()->iSpin()==PDT::Spin1&&(**iter).id()!=ParticleID::gamma&& (**iter).children().size()==3) { if((**iter).children()[0]->dataPtr()->iSpin()==PDT::Spin0) particles.push_back(*iter); } } } // analyse them analyze(particles); } void VectorPScalarFermionsAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void VectorPScalarFermionsAnalysis::analyze(tPPtr part) { int id[3]={part->children()[0]->id(),part->children()[1]->id(), part->children()[2]->id()}; // id's of the fermions if(abs(id[1])!=abs(id[2])){return;} if(abs(id[1])!=11&&abs(id[1])!=13){return;} // check if we already have this decay unsigned int ix=0; bool found(false); while(!found&&ix<_incoming.size()) { if(_incoming[ix]==part->id()&&_outgoingP[ix]==id[0]&&_outgoingf[ix]==abs(id[1])) { found=true; } else { ++ix; } } // create a new graph if needed if(!found) { ix=_incoming.size(); _incoming.push_back(part->id()); _outgoingP.push_back(id[0]); _outgoingf.push_back(abs(id[1])); _mffa.push_back(new_ptr(Histogram(0.0, (part->nominalMass()+part->dataPtr()->widthUpCut())/MeV, 200))); _mffb.push_back(new_ptr(Histogram(0.0,20,200))); _mPf.push_back(new_ptr(Histogram(0.0, (part->nominalMass()+part->dataPtr()->widthUpCut())/MeV, 200))); _mPfbar.push_back(new_ptr(Histogram(0.0, (part->nominalMass()+part->dataPtr()->widthUpCut())/MeV, 200))); } // add the results to the histogram Lorentz5Momentum ptemp; ptemp=part->children()[1]->momentum()+part->children()[2]->momentum(); ptemp.rescaleMass(); *_mffa[ix]+=ptemp.mass()/MeV; *_mffb[ix]+=ptemp.mass()/MeV; ptemp=part->children()[0]->momentum()+part->children()[1]->momentum(); ptemp.rescaleMass(); *_mPf[ix]+=ptemp.mass()/MeV; ptemp=part->children()[0]->momentum()+part->children()[2]->momentum(); ptemp.rescaleMass(); *_mPfbar[ix]+=ptemp.mass()/MeV; } NoPIOClassDescription<VectorPScalarFermionsAnalysis> VectorPScalarFermionsAnalysis::initVectorPScalarFermionsAnalysis; // Definition of the static class description member. void VectorPScalarFermionsAnalysis::Init() { static ClassDocumentation<VectorPScalarFermionsAnalysis> documentation ("There is no documentation for the VectorPScalarFermionsAnalysis class"); } void VectorPScalarFermionsAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); string title,temp; for(unsigned int ix=0;ix<_incoming.size();++ix) { title= getParticleData(_incoming[ix])->PDGName() + " -> " + getParticleData(_outgoingP[ix])->PDGName()+ " " + getParticleData(_outgoingf[ix])->PDGName() + " " + getParticleData(-_outgoingf[ix])->PDGName(); temp = "Mass for f fbar in " +title; using namespace HistogramOptions; _mffa[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",temp,"", "1/SdS/dm0l2+3l2-31/GeV2-13", " G G X X X X XX X X", "m0l2+3l2-31", " X X X X XX"); _mffb[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",temp,"", "1/SdS/dm0l2+3l2-31/GeV2-13", " G G X X X X XX X X", "m0l2+3l2-31", " X X X X XX"); temp = "Mass for vector fermion mass in " +title; _mPf[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",temp,"", "1/SdS/dm0Pl2-31/GeV2-13", " G G X X XX X X", "m0Pl2-31", " X X XX"); temp = "Mass for vector fbar mass in " +title; _mPfbar[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED",temp,"", "1/SdS/dm0Pl2+31/GeV2-13", " G G X X XX X X", "m0Pl2+31", " X X XX"); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/BtoSGammaAnalysis.h���������������������������������������0000644�0001750�0001750�00000011373�11754474774�024624� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_BtoSGammaAnalysis_H #define HERWIG_BtoSGammaAnalysis_H // // This is the declaration of the BtoSGammaAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the BtoSGammaAnalysis class. * * @see \ref BtoSGammaAnalysisInterfaces "The interfaces" * defined for BtoSGammaAnalysis. */ class BtoSGammaAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<BtoSGammaAnalysis> initBtoSGammaAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BtoSGammaAnalysis & operator=(const BtoSGammaAnalysis &); private: /** * Histograms for the hadronic mass */ vector<HistogramPtr> _hadmass; /** * Histograms for the spectrum */ vector<HistogramPtr> _spectrum; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of BtoSGammaAnalysis. */ template <> struct BaseClassTrait<Herwig::BtoSGammaAnalysis,1> { /** Typedef of the first base class of BtoSGammaAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the BtoSGammaAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::BtoSGammaAnalysis> : public ClassTraitsBase<Herwig::BtoSGammaAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::BtoSGammaAnalysis"; } /** * The name of a file containing the dynamic library where the class * BtoSGammaAnalysis is implemented. It may also include several, space-separated, * libraries if the class BtoSGammaAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_BtoSGammaAnalysis_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/EtaDecayAnalysis.h����������������������������������������0000644�0001750�0001750�00000014225�11754474774�024470� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_EtaDecayAnalysis_H #define HERWIG_EtaDecayAnalysis_H // // This is the declaration of the EtaDecayAnalysis class. // #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * The EtaDecayAnalysis class performs the analysis of the decays of * the \f$\eta\f$ and \f$\eta'\f$ mesons. * * @see \ref EtaDecayAnalysisInterfaces "The interfaces" * defined for EtaDecayAnalysis. */ class EtaDecayAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<EtaDecayAnalysis> initEtaDecayAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ EtaDecayAnalysis & operator=(const EtaDecayAnalysis &); private: /** * Histograms for the decay \f$\eta\to\pi^0\gamma\gamma\f$ */ //@{ /** * Histogram for the mass of \f$\gamma\gamma\f$ */ vector<HistogramPtr> _mgammagamma; /** * Histogrma for the mass of \f$\pi^0\gamma\f$ */ vector<HistogramPtr> _mpi0gamma; //@} /** * Histograms for the decay \f$\eta\to\pi^+\pi^-\gamma\f$ */ //@{ /** * Histogram for the mass of \f$\pi^+\gamma\f$ */ vector<HistogramPtr> _mpipgamma; /** * Histogram for the mass of \f$\pi^-\gamma\f$ */ vector<HistogramPtr> _mpimgamma; /** * Histogram for the mass of \f$\pi^+\pi^-\f$ */ vector<HistogramPtr> _mpippim; /** * Histogram for the photon energy */ vector<HistogramPtr> _photonenergy; //@} /** * Histograms for the decay \f$\eta\pi\pi\pi\f$ and \f$\eta'\to\eta\pi\pi\f$. */ //@{ /** * Histogram for the mass of \f$\pi^+\pi^-\f$ */ vector<HistogramPtr> _dpippim; /** * Histogram for the mass of \f$\pi^0\pi^0\f$ */ vector<HistogramPtr> _dpi0pi0; /** * Histogram for the mass of \f$\pi^0\pi^+\f$ */ vector<HistogramPtr> _dpi0pip; /** * Histogram for the mass of \f$\pi^0\pi^-\f$ */ vector<HistogramPtr> _dpi0pim; /** * Histogram for the mass of \f$\pi^+\eta\f$ */ vector<HistogramPtr> _dpipeta; /** * Histogram for the mass of \f$\pi^-\eta\f$ */ vector<HistogramPtr> _dpimeta; /** * Histogram for the mass of \f$\pi^0\eta\f$ */ vector<HistogramPtr> _dpi0eta; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of EtaDecayAnalysis. */ template <> struct BaseClassTrait<Herwig::EtaDecayAnalysis,1> { /** Typedef of the first base class of EtaDecayAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the EtaDecayAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::EtaDecayAnalysis> : public ClassTraitsBase<Herwig::EtaDecayAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::EtaDecayAnalysis"; } /** * The name of a file containing the dynamic library where the class * EtaDecayAnalysis is implemented. It may also include several, space-separated, * libraries if the class EtaDecayAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_EtaDecayAnalysis_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/BabarBDecayAnalysis.h�������������������������������������0000644�0001750�0001750�00000010642�11754474774�025067� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef THEPEG_BabarBDecayAnalysis_H #define THEPEG_BabarBDecayAnalysis_H // // This is the declaration of the BabarBDecayAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Analysis/MultiplicityInfo.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the BabarBDecayAnalysis class. * * @see \ref BabarBDecayAnalysisInterfaces "The interfaces" * defined for BabarBDecayAnalysis. */ class BabarBDecayAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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: /** * Member to find the charmed children of a B meson */ void findCharm(tcPPtr,vector<tcPPtr> & charmed); 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. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<BabarBDecayAnalysis> initBabarBDecayAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BabarBDecayAnalysis & operator=(const BabarBDecayAnalysis &); private: /** * Map of PDG codes to multiplicity info */ map<long,MultiplicityInfo> _b0data,_bplusdata; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of BabarBDecayAnalysis. */ template <> struct BaseClassTrait<Herwig::BabarBDecayAnalysis,1> { /** Typedef of the first base class of BabarBDecayAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the BabarBDecayAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::BabarBDecayAnalysis> : public ClassTraitsBase<Herwig::BabarBDecayAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::BabarBDecayAnalysis"; } /** * The name of a file containing the dynamic library where the class * BabarBDecayAnalysis is implemented. It may also include several, space-separated, * libraries if the class BabarBDecayAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* THEPEG_BabarBDecayAnalysis_H */ ����������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/BeamCorrelationAnalysis.h���������������������������������0000644�0001750�0001750�00000011040�11754474774�026047� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_BeamCorrelationAnalysis_H #define HERWIG_BeamCorrelationAnalysis_H // // This is the declaration of the BeamCorrelationAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * The documentation of the BeamCorrelationAnalysis class * is designed to plot the angle in the lab frame of an outgoing particle * w.r.t to an incoming particle to test the spin correlations. * * @see \ref BeamCorrelationAnalysisInterfaces "The interfaces" * defined for BeamCorrelationAnalysis. */ class BeamCorrelationAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<BeamCorrelationAnalysis> initBeamCorrelationAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BeamCorrelationAnalysis & operator=(const BeamCorrelationAnalysis &); private: /** * PDG code of the outgoing particle */ vector<int> _outgoing; /** * PDG code of the incoming particle */ vector<int> _incoming; /** * Histograms */ vector<HistogramPtr> _angle; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of BeamCorrelationAnalysis. */ template <> struct BaseClassTrait<Herwig::BeamCorrelationAnalysis,1> { /** Typedef of the first base class of BeamCorrelationAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the BeamCorrelationAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::BeamCorrelationAnalysis> : public ClassTraitsBase<Herwig::BeamCorrelationAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::BeamCorrelationAnalysis"; } /** * The name of a file containing the dynamic library where the class * BeamCorrelationAnalysis is implemented. It may also include several, space-separated, * libraries if the class BeamCorrelationAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_BeamCorrelationAnalysis_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/Upsilon4SSpectrumAnalysis.cc������������������������������0000644�0001750�0001750�00000041013�11754474774�026525� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the Upsilon4SSpectrumAnalysis class. // #include "Upsilon4SSpectrumAnalysis.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace Herwig; IBPtr Upsilon4SSpectrumAnalysis::clone() const { return new_ptr(*this); } IBPtr Upsilon4SSpectrumAnalysis::fullclone() const { return new_ptr(*this); } void Upsilon4SSpectrumAnalysis::analyze(tEventPtr event, long ieve, int loop, int state) { AnalysisHandler::analyze(event, ieve, loop, state); // Rotate to CMS, extract final state particles and call analyze(particles). set<tPPtr> particles; event->select(inserter(particles),ThePEG::AllSelector()); set<tPPtr> finalState; event->selectFinalState(inserter(finalState)); for(set<tPPtr>::const_iterator it=finalState.begin();it!=finalState.end();++it) { double p = (**it).momentum().vect().mag()/GeV; switch (abs((**it).id())) { case ParticleID::piplus: if(abs((**it).parents()[0]->id())!=ParticleID::Lambda0&& abs((**it).parents()[0]->id())!=ParticleID::K_S0) if(p>=0.075&&p<=2.8) *_spectrumpipNo += p; if(p>=0.075&&p<=2.8) *_spectrumpipAll += p; break; case ParticleID::Kplus: if(p>=0.175&&p<=2.8) *_spectrumKpA +=p; if(p>=0.2 &&p<=2.8) *_spectrumKpB +=p; break; case ParticleID::pplus: if(abs((**it).parents()[0]->id())!=ParticleID::Lambda0) if(p>=0.3&&p<=2.2) *_spectrumprotonNo += p; if(p>=0.3&&p<=2.2) *_spectrumprotonAll += p; case ParticleID::K_L0: if(p>=0.2&&p<=2.7) *_spectrumK0 += p; } } for(set<tPPtr>::const_iterator it=particles.begin();it!=particles.end();++it) { if(!(**it).children().empty()&&(**it).children()[0]->id()==(**it).id()) continue; double p = (**it).momentum().vect().mag()/GeV; switch (abs((**it).id())) { case ParticleID::pi0: if(p<=3.) *_spectrumpi0 += p; // case ParticleID::K_S0: // if(p>=0.2&&p<=2.7) *_spectrumK0 += p; } } } NoPIOClassDescription<Upsilon4SSpectrumAnalysis> Upsilon4SSpectrumAnalysis::initUpsilon4SSpectrumAnalysis; // Definition of the static class description member. void Upsilon4SSpectrumAnalysis::Init() { static ClassDocumentation<Upsilon4SSpectrumAnalysis> documentation ("There is no documentation for the Upsilon4SSpectrumAnalysis class"); } void Upsilon4SSpectrumAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); // output chi sq to log file for analysis double chisq=0.,minfrac=0.05; unsigned int ndegrees; _spectrumpipNo->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for ARGUS pi+ distribution " << "excluding K_S0 and Lambda decay products\n"; _spectrumpipAll->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for ARGUS pi+ distribution " << "including K_S0 and Lambda decay products\n"; _spectrumpi0->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for Belle pi0 distribution\n"; _spectrumKpA->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for ARGUS K+ distribution\n"; _spectrumKpB->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for ARGUS K+ decay in flight" << "distribution\n"; _spectrumprotonNo->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for ARGUS proton distribution " << "excluding Lambda decay products\n"; _spectrumprotonAll->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for ARGUS proton distribution " << "including Lambda decay products\n"; _spectrumK0->chiSquared(chisq,ndegrees,minfrac); generator()->log() << "Chi Square = " << chisq << " for " << ndegrees << " degrees of freedom for ARGUS K0 distribution\n"; // output the histograms using namespace HistogramOptions; _spectrumpipNo->topdrawOutput(output,Frame|Errorbars,"RED", "P2+3 excluding K2030S1 and L decay products (ARGUS)", "GXMX X XX X F ", "1/SdS/dp/GeV2-13"," G G X X", "p/GeV"," "); _spectrumpipAll->topdrawOutput(output,Frame|Errorbars,"RED", "P2+3 including K2030S1 and L decay products (ARGUS)", "GX X X XX X F ", "1/SdS/dp/GeV2-13"," G G X X", "p/GeV"," "); _spectrumpi0->topdrawOutput(output,Frame|Errorbars,"RED", "P203 (Belle)", "GX X ", "1/SdS/dp/GeV2-13"," G G X X", "p/GeV"," "); _spectrumKpA->topdrawOutput(output,Frame|Errorbars,"RED", "K2+3 (ARGUS)", " XMX", "1/SdS/dp/GeV2-13"," G G X X", "p/GeV"," "); _spectrumKpB->topdrawOutput(output,Frame|Errorbars,"RED", "K2+3 decay in flight (ARGUS)", " XMX", "1/SdS/dp/GeV2-13"," G G X X", "p/GeV"," "); _spectrumprotonNo->topdrawOutput(output,Frame|Errorbars,"RED", "proton excluding L decay products (ARGUS)", " F ", "1/SdS/dp/GeV2-13"," G G X X", "p/GeV"," "); _spectrumprotonAll->topdrawOutput(output,Frame|Errorbars,"RED", "proton including L decay products (ARGUS)", " F ", "1/SdS/dp/GeV2-13"," G G X X", "p/GeV"," "); _spectrumK0->topdrawOutput(output,Frame|Errorbars,"RED", "K203 (ARGUS)", " X X ", "1/SdS/dp/GeV2-13"," G G X X", "p/GeV"," "); } void Upsilon4SSpectrumAnalysis::doinitrun() { AnalysisHandler::doinitrun(); // ARGUS pi+ spectrum excluding K^0_S and Lambda decays double x1[]={0.075,0.100,0.125,0.150,0.175,0.200,0.225,0.250,0.275,0.300, 0.325,0.350,0.375,0.400,0.425,0.450,0.475,0.500,0.525,0.550, 0.575,0.600,0.625,0.650,0.675,0.700,0.725,0.750,0.775,0.800, 0.900,1.000,1.100,1.200,1.300,1.400,1.500,1.600,1.700,1.800, 1.900,2.000,2.100,2.200,2.300,2.400,2.500,2.600,2.700,2.800}; double y1[]={ 8.104, 9.439, 9.967,11.238,11.217,12.208,12.153,12.148,12.194,11.811, 11.650,11.010,10.085,10.160, 9.378, 8.957, 8.198, 7.801, 6.806, 6.175, 6.222, 5.380, 5.309, 5.096, 4.193, 3.882, 3.939, 3.785, 3.370, 2.732, 1.861, 1.160, 0.811, 0.622, 0.433, 0.454, 0.208, 0.141, 0.175, 0.102, 0.090, 0.123, 0.066, 0.140, 0.010, 0.021, 0.026,-0.015,-0.011}; double st1[]={0.255,0.273,0.283,0.310,0.335,0.351,0.365,0.369,0.367,0.363, 0.358,0.351,0.344,0.335,0.325,0.317,0.307,0.301,0.293,0.284, 0.273,0.267,0.258,0.251,0.247,0.238,0.232,0.224,0.222,0.112, 0.105,0.105,0.110,0.115,0.110,0.096,0.080,0.071,0.064,0.059, 0.053,0.049,0.044,0.038,0.035,0.031,0.027,0.025,0.024}; double sy1[]={0.332,0.239,0.385,0.376,0.307,0.337,0.292,0.293,0.366,0.248, 0.325,0.286,0.232,0.188,0.182,0.231,0.145,0.262,0.103,0.056, 0.151,0.073,0.091,0.105,0.129,0.215,0.134,0.148,0.116,0.098, 0.072,0.089,0.089,0.136,0.064,0.075,0.072,0.058,0.043,0.028, 0.029,0.029,0.033,0.017,0.027,0.034,0.014,0.025,0.016}; double total=0.0; for(unsigned int ix=0;ix<49;++ix) { total+=y1[ix]*(x1[ix+1]-x1[ix]); st1[ix] = sqrt(sqr(st1[ix])+sqr(sy1[ix])); } vector<double> bins,data,error; bins = vector<double>( x1, x1+50); data = vector<double>( y1, y1+49); error = vector<double>(st1,st1+49); for(unsigned int ix=0;ix<data.size();++ix) { data[ix]/=total; error[ix]/=total; } _spectrumpipNo = new_ptr(Histogram(bins,data,error)); // ARGUS pi+ spectrum including K^0_s and Lambda decays double y2[]={ 9.356,11.121,12.036,13.575,13.772,14.786,14.514,14.268,14.179,13.658, 13.367,12.649,11.562,11.514,10.650,10.112, 9.271, 8.762, 7.645, 6.957, 6.924, 6.021, 5.877, 5.636, 4.671, 4.315, 4.341, 4.157, 3.689, 2.983, 2.042, 1.280, 0.891, 0.676, 0.473, 0.477, 0.223, 0.150, 0.181, 0.105, 0.091, 0.125, 0.067, 0.140, 0.010, 0.021, 0.026,-0.015,-0.011}; double st2[]={0.255,0.273,0.283,0.310,0.335,0.351,0.365,0.369,0.367,0.363, 0.358,0.351,0.344,0.335,0.325,0.317,0.307,0.301,0.293,0.284, 0.273,0.267,0.258,0.251,0.247,0.238,0.232,0.224,0.222,0.112, 0.105,0.105,0.110,0.115,0.110,0.096,0.080,0.071,0.064,0.059, 0.053,0.049,0.044,0.038,0.035,0.031,0.027,0.025,0.024}; double sy2[]={0.383,0.281,0.465,0.455,0.377,0.408,0.348,0.344,0.426,0.286, 0.373,0.328,0.266,0.213,0.207,0.261,0.164,0.294,0.116,0.063, 0.168,0.082,0.100,0.116,0.144,0.239,0.147,0.162,0.127,0.107, 0.079,0.099,0.098,0.148,0.070,0.079,0.077,0.061,0.045,0.029, 0.030,0.030,0.033,0.017,0.027,0.034,0.014,0.025,0.016}; total=0.0; for(unsigned int ix=0;ix<49;++ix) { total+=y2[ix]*(x1[ix+1]-x1[ix]); st2[ix] = sqrt(sqr(st2[ix])+sqr(sy2[ix])); } bins = vector<double>( x1, x1+50); data = vector<double>( y2, y2+49); error = vector<double>(st2,st2+49); for(unsigned int ix=0;ix<data.size();++ix) { data[ix]/=total; error[ix]/=total; } _spectrumpipAll = new_ptr(Histogram(bins,data,error)); // ARGUS K+- spectrum double x3[]={0.175,0.200,0.225,0.250,0.275,0.300,0.325,0.350,0.375,0.400, 0.425,0.450,0.475,0.500,0.525,0.550,0.575,0.600,0.625,0.650, 0.675,0.700,0.725,0.750,0.775,0.800,0.900,1.000,1.100,1.200, 1.300,1.400,1.500,1.600,1.700,1.800,1.900,2.000,2.100,2.200, 2.300,2.400,2.500,2.600,2.700,2.800}; double y3[]={ 0.678, 1.032, 1.240, 1.386, 1.423, 1.501, 1.611, 1.893, 1.834, 2.083, 2.009, 2.000, 2.130, 1.952, 1.887, 1.822, 1.809, 1.904, 1.732, 1.571, 1.521, 1.405, 1.392, 1.379, 1.200, 0.917, 0.957, 0.659, 0.403, 0.572, 0.535, 0.208, 0.312, 0.160, 0.124, 0.013, 0.065,-0.062,-0.026, 0.024, -0.021, 0.014,-0.032, 0.040, 0.046}; double st3[]={0.081,0.086,0.087,0.087,0.093,0.092,0.094,0.098,0.100,0.099, 0.103,0.103,0.104,0.106,0.107,0.108,0.108,0.109,0.111,0.113, 0.112,0.113,0.114,0.112,0.118,0.060,0.066,0.079,0.094,0.103, 0.101,0.084,0.067,0.056,0.049,0.044,0.039,0.039,0.037,0.035, 0.033,0.036,0.033,0.034,0.037}; double sy3[]={0.097,0.095,0.108,0.071,0.126,0.071,0.096,0.084,0.057,0.075, 0.068,0.056,0.084,0.094,0.086,0.086,0.072,0.071,0.086,0.063, 0.060,0.133,0.091,0.156,0.115,0.051,0.054,0.092,0.063,0.131, 0.029,0.074,0.042,0.019,0.024,0.030,0.011,0.021,0.010,0.027, 0.023,0.023,0.023,0.011,0.022}; total=0.0; for(unsigned int ix=0;ix<45;++ix) { total+=y3[ix]*(x3[ix+1]-x3[ix]); st3[ix] = sqrt(sqr(st3[ix])+sqr(sy3[ix])); } bins = vector<double>( x3, x3+46); data = vector<double>( y3, y3+45); error = vector<double>(st3,st3+45); for(unsigned int ix=0;ix<data.size();++ix) { data[ix]/=total; error[ix]/=total; } _spectrumKpA = new_ptr(Histogram(bins,data,error)); // kaon decay in flight double x4[]={0.200,0.300,0.400,0.500,0.600,0.700,0.800,0.900,1.000,1.100, 1.200,1.300,1.400,1.500,1.600,1.700,1.800,1.900,2.000,2.100, 2.200,2.300,2.400,2.500,2.600,2.700,2.800}; double y4[]={ 1.21, 1.71, 1.75, 2.01, 1.45, 1.20, 0.98, 0.97, 0.64, 0.13, 0.56, 0.23, 0.09, 0.15, 0.09,-0.11, 0.01,-0.07,-0.03, 0.19, 0.27, 0.15,-0.11,-0.06, 0.04, 0.02}; double st4[]={0.09,0.12,0.15,0.18,0.18,0.18,0.18,0.20,0.17,0.17, 0.16,0.17,0.13,0.15,0.13,0.17,0.15,0.09,0.09,0.19, 0.29,0.19,0.16,0.14,0.09,0.04}; double sy4[]={0.13,0.17,0.17,0.20,0.14,0.12,0.09,0.09,0.06,0.06, 0.05,0.03,0.02,0.02,0.01,0.03,0.02,0.01,0.01,0.02, 0.04,0.01,0.01,0.01,0.00,0.02}; total=0.0; for(unsigned int ix=0;ix<26;++ix) { total+=y4[ix]*(x4[ix+1]-x4[ix]); st4[ix] = sqrt(sqr(st4[ix])+sqr(sy4[ix])); } bins = vector<double>( x4, x4+27); data = vector<double>( y4, y4+26); error = vector<double>(st4,st4+26); for(unsigned int ix=0;ix<data.size();++ix) { data[ix]/=total; error[ix]/=total; } _spectrumKpB = new_ptr(Histogram(bins,data,error)); // proton excluding lambda products double x5[]={0.300,0.400,0.500,0.600,0.700,0.800,0.900,1.000,1.100,1.200, 1.300,1.400,1.500,1.600,1.700,1.800,1.900,2.000,2.100,2.200}; double y5[]={ 0.117, 0.115, 0.201, 0.120, 0.125, 0.088, 0.112, 0.054, 0.060,-0.012, 0.010,-0.021,-0.021,-0.011,-0.016, 0.034,-0.020, 0.031,-0.003}; double st5[]={0.025,0.032,0.033,0.035,0.034,0.033,0.031,0.031,0.030,0.022, 0.022,0.023,0.025,0.027,0.029,0.032,0.033,0.038,0.038}; double sy5[]={0.012,0.002,0.005,0.008,0.010,0.011,0.001,0.009,0.003,0.019, 0.029,0.013,0.014,0.013,0.014,0.016,0.027,0.015,0.025}; total=0.0; for(unsigned int ix=0;ix<19;++ix) { total+=y5[ix]*(x5[ix+1]-x5[ix]); st5[ix] = sqrt(sqr(st5[ix])+sqr(sy5[ix])); } bins = vector<double>( x5, x5+20); data = vector<double>( y5, y5+19); error = vector<double>(st5,st5+19); for(unsigned int ix=0;ix<data.size();++ix) { data[ix]/=total; error[ix]/=total; } _spectrumprotonNo = new_ptr(Histogram(bins,data,error)); // proton including lambda products double y6[]={ 0.172, 0.188, 0.274, 0.190, 0.175, 0.124, 0.136, 0.077, 0.072,-0.004, 0.014,-0.018,-0.020,-0.010,-0.016, 0.034,-0.020, 0.031,-0.003}; double st6[]={0.025,0.032,0.033,0.035,0.034,0.033,0.031,0.031,0.030,0.022, 0.022,0.023,0.025,0.027,0.029,0.032,0.033,0.038,0.038}; double sy6[]={0.017,0.003,0.007,0.013,0.013,0.016,0.001,0.012,0.003,0.019, 0.040,0.013,0.014,0.013,0.014,0.016,0.027,0.015,0.025}; total=0.0; for(unsigned int ix=0;ix<19;++ix) { total+=y6[ix]*(x5[ix+1]-x5[ix]); st6[ix] = sqrt(sqr(st6[ix])+sqr(sy6[ix])); } bins = vector<double>( x5, x5+20); data = vector<double>( y6, y6+19); error = vector<double>(st6,st6+19); for(unsigned int ix=0;ix<data.size();++ix) { data[ix]/=total; error[ix]/=total; } _spectrumprotonAll = new_ptr(Histogram(bins,data,error)); // neutral kaons double x7[]={0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1, 1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.2,2.7}; double y7[]={26.1E-03,37.2E-03,41.7E-03,39.0E-03,33.3E-03, 28.8E-03,23.4E-03,17.9E-03,13.3E-03,10.4E-03, 9.4E-03, 6.9E-03, 4.6E-03, 2.9E-03, 3.2E-03, 1.6E-03, 1.4E-03, 1.0E-03, 2.0E-03, 0.7E-03}; double st7[]={1.6E-03,1.8E-03,1.7E-03,1.6E-03,1.4E-03, 1.3E-03,1.2E-03,1.1E-03,0.9E-03,0.9E-03, 0.7E-03,0.7E-03,0.6E-03,0.6E-03,0.5E-03, 0.5E-03,0.5E-03,0.4E-03,0.6E-03,1.0E-03}; double sy7[]={1.8E-03,2.5E-03,2.8E-03,2.6E-03,2.2E-03, 1.9E-03,1.6E-03,1.2E-03,0.9E-03,0.7E-03, 0.7E-03,0.5E-03,0.4E-03,0.3E-03,0.3E-03, 0.2E-03,0.2E-03,0.1E-03,0.3E-03,0.6E-03}; total=0.0; for(unsigned int ix=0;ix<20;++ix) { y7[ix]/=(x7[ix+1]-x7[ix]); total+=y7[ix]*(x7[ix+1]-x7[ix]); st7[ix] = sqrt(sqr(st7[ix])+sqr(sy7[ix])); st7[ix]/=(x7[ix+1]-x7[ix]); } bins = vector<double>( x7, x7+21); data = vector<double>( y7, y7+20); error = vector<double>(st7,st7+20); for(unsigned int ix=0;ix<data.size();++ix) { data[ix]/=total; error[ix]/=total; } _spectrumK0 = new_ptr(Histogram(bins,data,error)); // pi0 spectrum double x8[]={0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9, 1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9, 2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0}; double y8[]={4.483, 8.893, 8.106, 6.635, 5.245, 3.749, 2.780, 1.942, 1.370, 1.017, 0.701, 0.535, 0.402, 0.294, 0.223, 0.152, 0.129, 0.101, 0.084, 0.061, 0.059, 0.044, 0.027,-0.003, 0.002, 0.005,-0.003, 0.002,-0.003,-0.001}; double sy8[]={0.143,0.297,0.182,0.117,0.083,0.062,0.048,0.039,0.031,0.026, 0.018,0.015,0.013,0.012,0.011,0.009,0.008,0.007,0.006,0.006, 0.005,0.005,0.005,0.005,0.004,0.004,0.004,0.004,0.004,0.004}; double st8[]={0.644,1.182,1.012,0.836,0.699,0.506,0.377,0.290,0.209,0.161, 0.125,0.095,0.076,0.059,0.049,0.039,0.031,0.026,0.022,0.018, 0.017,0.014,0.011,0.011,0.009,0.007,0.007,0.006,0.005,0.005}; total=0.0; for(unsigned int ix=0;ix<30;++ix) { total+=y8[ix]*(x8[ix+1]-x8[ix]); st8[ix] = sqrt(sqr(st8[ix])+sqr(sy8[ix])); } bins = vector<double>( x8, x8+31); data = vector<double>( y8, y8+30); error = vector<double>(st8,st8+30); for(unsigned int ix=0;ix<data.size();++ix) { data[ix]/=total; error[ix]/=total; } _spectrumpi0 = new_ptr(Histogram(bins,data,error)); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/VffGammaAnalysis.h����������������������������������������0000644�0001750�0001750�00000012175�11754474774�024477� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_VffGammaAnalysis_H #define HERWIG_VffGammaAnalysis_H // // This is the declaration of the VffGammaAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the VffGammaAnalysis class. * * @see \ref VffGammaAnalysisInterfaces "The interfaces" * defined for VffGammaAnalysis. */ class VffGammaAnalysis: public AnalysisHandler { public: /** * The default constructor. */ VffGammaAnalysis(); /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription<VffGammaAnalysis> initVffGammaAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VffGammaAnalysis & operator=(const VffGammaAnalysis &); private: /** * id's of the vector mesons to consider */ vector<long> _id; /** * histogram for the mass */ vector<HistogramPtr> _masstotal; /** * Histograms for the energies */ /** * Total photon energy */ vector<HistogramPtr> _etotal; /** * Energy of all the photons */ vector<HistogramPtr> _eall; /** * Single photon energy */ vector<HistogramPtr> _esingle; //@} /** * Histogram for the multiplicities */ vector<HistogramPtr> _nphoton; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of VffGammaAnalysis. */ template <> struct BaseClassTrait<Herwig::VffGammaAnalysis,1> { /** Typedef of the first base class of VffGammaAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the VffGammaAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VffGammaAnalysis> : public ClassTraitsBase<Herwig::VffGammaAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::VffGammaAnalysis"; } /** * The name of a file containing the dynamic library where the class * VffGammaAnalysis is implemented. It may also include several, space-separated, * libraries if the class VffGammaAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_VffGammaAnalysis_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/Pi4ElectronAnalysis.cc������������������������������������0000644�0001750�0001750�00000006063�11754474774�025300� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the Pi4ElectronAnalysis class. // #include "Pi4ElectronAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/Event.h" #include <ThePEG/EventRecord/Event.h> #include <ThePEG/PDT/EnumParticles.h> #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; void Pi4ElectronAnalysis::analyze(tEventPtr event, long , int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; transform(event); // find all the decaying neutral pions tPVector particles; for(unsigned int ix=0, nstep=event->primaryCollision()->steps().size(); ix<nstep;++ix) { ThePEG::ParticleSet part=event->primaryCollision()->step(ix)->all(); ThePEG::ParticleSet::iterator iter=part.begin(); ThePEG::ParticleSet::iterator end=part.end(); for( ;iter!=end;++iter) { if((**iter).id()==ParticleID::pi0) { particles.push_back(*iter); } } } // analyse them analyze(particles); } void Pi4ElectronAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void Pi4ElectronAnalysis::analyze(tPPtr part) { // check the number of children of the particle if(part->children().size()!=4) return; Lorentz5Momentum pe[2],pp[2]; unsigned int ne(0),np(0); int id; // find the particles unsigned int ix,iy; for(ix=0;ix<part->children().size();++ix) { id=part->children()[ix]->id(); if(id==ParticleID::eplus){pe[ne]=part->children()[ix]->momentum();++ne;} else if(id==ParticleID::eminus){pp[np]=part->children()[ix]->momentum();++np;} } if(ne!=2||np!=2){return;} // find the invariant masses Lorentz5Momentum ptemp; for(ix=0;ix<2;++ix) { for(iy=0;iy<2;++iy) { ptemp=pe[ix]+pp[iy]; ptemp.rescaleMass(); for(unsigned int iz=0;iz<_mffbar.size();++iz) { *_mffbar[iz]+=ptemp.mass()/MeV; } } } } NoPIOClassDescription<Pi4ElectronAnalysis> Pi4ElectronAnalysis::initPi4ElectronAnalysis; // Definition of the static class description member. void Pi4ElectronAnalysis::Init() { static ClassDocumentation<Pi4ElectronAnalysis> documentation ("There is no documentation for the Pi4ElectronAnalysis class"); } void Pi4ElectronAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream output(fname.c_str()); using namespace HistogramOptions; for(unsigned int ix=0;ix<_mffbar.size();++ix) { _mffbar[ix]->topdrawOutput(output,Frame|Errorbars|Ylog, "RED", "Mass of the e2+3e2-3 pair in P203Re2+3e2-3e2+3e2-3", " X X X X GX XW X X X X X X X X", "1/SdS/dm0e2+3e2-31/GeV2-13", " G G X X X X XX X X", "m0e2+3e2-31", " X X X X XX"); } } void Pi4ElectronAnalysis::doinitrun() { AnalysisHandler::doinitrun(); _mffbar.push_back(new_ptr(Histogram(0.0,140.0,1000))); _mffbar.push_back(new_ptr(Histogram(0.0, 20.0,100 ))); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/VPPGammaAnalysis.h����������������������������������������0000644�0001750�0001750�00000012571�11754474774�024423� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_VPPGammaAnalysis_H #define HERWIG_VPPGammaAnalysis_H // // This is the declaration of the VPPGammaAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" #include "ThePEG/PDT/EnumParticles.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the VPPGammaAnalysis class. * * @see \ref VPPGammaAnalysisInterfaces "The interfaces" * defined for VPPGammaAnalysis. */ class VPPGammaAnalysis: public AnalysisHandler { public: /** * The default constructor. */ VPPGammaAnalysis(); /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<VPPGammaAnalysis> initVPPGammaAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VPPGammaAnalysis & operator=(const VPPGammaAnalysis &); private: /** * id's of the vector mesons to consider */ vector<long> _id; /** * id's of the outgoing decay products */ //@{ /** * First outgoing particle */ vector<long> _outgoing1; /** * Second outgoing particle */ vector<long> _outgoing2; //@} /** * histogram for the mass */ vector<HistogramPtr> _masstotal; /** * Histograms for the energies */ /** * Total photon energy */ vector<HistogramPtr> _etotal; /** * Energy of all the photons */ vector<HistogramPtr> _eall; /** * Single photon energy */ vector<HistogramPtr> _esingle; //@} /** * histograms for the multiplicities */ vector<HistogramPtr> _nphoton; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of VPPGammaAnalysis. */ template <> struct BaseClassTrait<Herwig::VPPGammaAnalysis,1> { /** Typedef of the first base class of VPPGammaAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the VPPGammaAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VPPGammaAnalysis> : public ClassTraitsBase<Herwig::VPPGammaAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::VPPGammaAnalysis"; } /** * The name of a file containing the dynamic library where the class * VPPGammaAnalysis is implemented. It may also include several, space-separated, * libraries if the class VPPGammaAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_VPPGammaAnalysis_H */ ���������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/Upsilon4SSpectrumAnalysis.h�������������������������������0000644�0001750�0001750�00000011760�11754474774�026375� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_Upsilon4SSpectrumAnalysis_H #define HERWIG_Upsilon4SSpectrumAnalysis_H // // This is the declaration of the Upsilon4SSpectrumAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the Upsilon4SSpectrumAnalysis class. * * @see \ref Upsilon4SSpectrumAnalysisInterfaces "The interfaces" * defined for Upsilon4SSpectrumAnalysis. */ class Upsilon4SSpectrumAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); //@} public: /** * 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. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<Upsilon4SSpectrumAnalysis> initUpsilon4SSpectrumAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Upsilon4SSpectrumAnalysis & operator=(const Upsilon4SSpectrumAnalysis &); private: /** * The \f$\pi^\pm\f$ spectrum without \f$K^0_S\f$ and \f$\Lambda^0\f$ decay products */ HistogramPtr _spectrumpipNo; /** * The \f$\pi^\pm\f$ spectrum with \f$K^0_S\f$ and \f$\Lambda^0\f$ decay products */ HistogramPtr _spectrumpipAll; /** * The \f$\pi^0\f$ spectrum */ HistogramPtr _spectrumpi0; /** * The \f$K^\pm\f$ spectrum */ HistogramPtr _spectrumKpA,_spectrumKpB; /** * The proton spectrum without \f$\Lambda^0\f$ decay products */ HistogramPtr _spectrumprotonNo; /** * The proton spectrum with \f$\Lambda^0\f$ decay products */ HistogramPtr _spectrumprotonAll; /** * \f$K_0^S\f$ spectrum */ HistogramPtr _spectrumK0; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Upsilon4SSpectrumAnalysis. */ template <> struct BaseClassTrait<Herwig::Upsilon4SSpectrumAnalysis,1> { /** Typedef of the first base class of Upsilon4SSpectrumAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the Upsilon4SSpectrumAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::Upsilon4SSpectrumAnalysis> : public ClassTraitsBase<Herwig::Upsilon4SSpectrumAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::Upsilon4SSpectrumAnalysis"; } /** * The name of a file containing the dynamic library where the class * Upsilon4SSpectrumAnalysis is implemented. It may also include several, space-separated, * libraries if the class Upsilon4SSpectrumAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_Upsilon4SSpectrumAnalysis_H */ ����������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/SemiLeptonicDPiAnalysis.cc��������������������������������0000644�0001750�0001750�00000012611�11754474774�026134� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SemiLeptonicDPiAnalysis class. // #include "SemiLeptonicDPiAnalysis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; using namespace ThePEG; void SemiLeptonicDPiAnalysis::findChildren(tPPtr part,ParticleVector & prod) { if(part->children().empty()) { prod.push_back(part); } else { for(unsigned ix=0;ix<part->children().size();++ix) { findChildren(part->children()[ix],prod); } } } void SemiLeptonicDPiAnalysis::analyze(tEventPtr event, long, int loop, int state) { if ( loop > 0 || state != 0 || !event ) return; transform(event); tPVector particles; // find B mesons for(unsigned int ix=0; ix<event->primaryCollision()->steps().size();++ix) { ThePEG::ParticleSet part=event->primaryCollision()->step(ix)->all(); ThePEG::ParticleSet::iterator iter=part.begin(); ThePEG::ParticleSet::iterator end=part.end(); for( ;iter!=end;++iter) { if((**iter).children().empty()) continue; int id=abs((**iter).id()); if(id==ParticleID::B0||id==ParticleID::Bplus) particles.push_back(*iter); } } // analyse them analyze(particles); } LorentzRotation SemiLeptonicDPiAnalysis::transform(tEventPtr) const { return LorentzRotation(); // Return the Rotation to the frame in which you want to perform the analysis. } void SemiLeptonicDPiAnalysis::analyze(const tPVector & particles) { AnalysisHandler::analyze(particles); // Calls analyze() for each particle. } void SemiLeptonicDPiAnalysis::analyze(tPPtr part) { // find the stable decay products ParticleVector products; findChildren(part,products); // check them if(products.size()!=4) return; // find the particles int ipi=-1,idm=-1,il=-1,inu=-1,id; for(unsigned int ix=0;ix<products.size();++ix) { id=abs(products[ix]->id()); if(id==ParticleID::piplus||id==ParticleID::pi0) ipi=ix; else if(id==ParticleID::eminus||id==ParticleID::muminus|| id==ParticleID::tauminus) il=ix; else if(id==ParticleID::nu_e||id==ParticleID::nu_mu|| id==ParticleID::nu_tau) inu=ix; else if(id==ParticleID::Dplus||id==ParticleID::D0|| id==ParticleID::Dstarplus||id==ParticleID::Dstar0) idm=ix; } // check we have everything if(ipi<0||idm<0||il<0||inu<0) return; tPPtr lep[2]={products[il],products[inu]}; unsigned int lid=(abs(lep[0]->id())-9)/2; unsigned int ix=0; bool found(false); while(!found&&ix<_incoming.size()) { if(_incoming[ix]==part->id()&& _outgoingD[ix]==products[idm]->id()&& _outgoingP[ix]==products[ipi]->id()&& lid==_outgoingL[ix]) { found=true; break; } else { ++ix; } } if(!found) { ix=_incoming.size(); _incoming.push_back(part->id()); _outgoingD.push_back(products[idm]->id()); _outgoingP.push_back(products[ipi]->id()); _outgoingL.push_back(lid); _energy.push_back(new_ptr(Histogram(0.0, (part->nominalMass()+part->dataPtr()->widthUpCut() -products[idm]->nominalMass() +products[idm]->dataPtr()->widthLoCut())/GeV,200))); _scale.push_back(new_ptr(Histogram(0.0, (part->nominalMass()+part->dataPtr()->widthUpCut() -products[ipi]->nominalMass() +products[ipi]->dataPtr()->widthLoCut())/GeV,200))); _mDpi.push_back(new_ptr(Histogram(4.0,25.,200))); } // add the results to the histogram Lorentz5Momentum ptemp; ptemp = lep[0]->momentum()+lep[1]->momentum(); ptemp.rescaleMass(); *_scale[ix]+=ptemp.mass()/GeV; ptemp = products[idm]->momentum()+lep[1]->momentum(); ptemp.rescaleMass(); Energy ee = 1./2./part->mass()* (part->mass()*part->mass()-ptemp.mass()*ptemp.mass()+lep[1]->mass()*lep[1]->mass()); *_energy[ix]+=ee/GeV; double mdpi=(products[idm]->momentum()+ products[ipi]->momentum()).m2()/GeV2; *_mDpi[ix]+=mdpi; } void SemiLeptonicDPiAnalysis::persistentOutput(PersistentOStream &) const {} void SemiLeptonicDPiAnalysis::persistentInput(PersistentIStream &, int) {} ClassDescription<SemiLeptonicDPiAnalysis> SemiLeptonicDPiAnalysis::initSemiLeptonicDPiAnalysis; // Definition of the static class description member. void SemiLeptonicDPiAnalysis::Init() { static ClassDocumentation<SemiLeptonicDPiAnalysis> documentation ("There is no documentation for the SemiLeptonicDPiAnalysis class"); } void SemiLeptonicDPiAnalysis::dofinish() { AnalysisHandler::dofinish(); string fname = generator()->filename() + string("-") + name() + string(".top"); ofstream outfile(fname.c_str()); string title,temp; for(unsigned int ix=0;ix<_incoming.size();++ix) { title= getParticleData(_incoming[ix])->PDGName() + " -> " + getParticleData(_outgoingD[ix])->PDGName()+ " " + getParticleData(_outgoingP[ix])->PDGName()+ " " + getParticleData(9+2*_outgoingL[ix])->PDGName() + " " + getParticleData(10+2*_outgoingL[ix])->PDGName(); temp = "Mass for l nu in " +title; using namespace HistogramOptions; _scale[ix]->topdrawOutput(outfile,Frame,"BLACK",temp); temp = "Lepton energy for in " +title; _energy[ix]->topdrawOutput(outfile,Frame,"BLACK",temp); temp = "D(*) pi mass in " +title; _mDpi[ix]->topdrawOutput(outfile,Frame,"BLACK",temp); } } �����������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/SemiLeptonicDPiAnalysis.h���������������������������������0000644�0001750�0001750�00000014062�11754474774�026000� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_SemiLeptonicDPiAnalysis_H #define HERWIG_SemiLeptonicDPiAnalysis_H // // This is the declaration of the SemiLeptonicDPiAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" #include "ThePEG/EventRecord/Event.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the SemiLeptonicDPiAnalysis class. * * @see \ref SemiLeptonicDPiAnalysisInterfaces "The interfaces" * defined for SemiLeptonicDPiAnalysis. */ class SemiLeptonicDPiAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Transform the event to the desired Lorentz frame and return the * corresponding LorentzRotation. * @param event a pointer to the Event to be transformed. * @return the LorentzRotation used in the transformation. */ virtual LorentzRotation transform(tEventPtr event) const; /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} protected: /** * Find the stable decay products */ void findChildren(tPPtr,ParticleVector &); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<SemiLeptonicDPiAnalysis> initSemiLeptonicDPiAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SemiLeptonicDPiAnalysis & operator=(const SemiLeptonicDPiAnalysis &); private: /** * The PDG code of the incoming particle */ vector<int> _incoming; /** * The PDG code of the outgoing D meson */ vector<int> _outgoingD; /** * The PDG code of the outgoing pion */ vector<int> _outgoingP; /** * The PDG code of the outgoing lepton */ vector<long> _outgoingL; /** * The energy of the leptons */ vector<HistogramPtr> _energy; /** * The mass of the lepton-neutrino pair */ vector<HistogramPtr> _scale; /** * the mass of the D pi system */ vector<HistogramPtr> _mDpi; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SemiLeptonicDPiAnalysis. */ template <> struct BaseClassTrait<Herwig::SemiLeptonicDPiAnalysis,1> { /** Typedef of the first base class of SemiLeptonicDPiAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the SemiLeptonicDPiAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SemiLeptonicDPiAnalysis> : public ClassTraitsBase<Herwig::SemiLeptonicDPiAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::SemiLeptonicDPiAnalysis"; } /** * The name of a file containing the dynamic library where the class * SemiLeptonicDPiAnalysis is implemented. It may also include several, space-separated, * libraries if the class SemiLeptonicDPiAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_SemiLeptonicDPiAnalysis_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Contrib/DecayAnalysis/OniumToOniumPiPiAnalysis.h��������������������������������0000644�0001750�0001750�00000012065�11754474774�026175� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_OniumToOniumPiPiAnalysis_H #define HERWIG_OniumToOniumPiPiAnalysis_H // // This is the declaration of the OniumToOniumPiPiAnalysis class. // #include "ThePEG/Handlers/AnalysisHandler.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** \ingroup Analysis * * The OniumToOniumPiPiAnalysis class performs the analysis of the decays * of bottom and charmonium resonances to lighter resonances and \f$\pi\pi\f$. * * @see \ref OniumToOniumPiPiAnalysisInterfaces "The interfaces" * defined for OniumToOniumPiPiAnalysis. */ class OniumToOniumPiPiAnalysis: public AnalysisHandler { public: /** @name Virtual functions required by the AnalysisHandler class. */ //@{ /** * Analyze a given Event. Note that a fully generated event * may be presented several times, if it has been manipulated in * between. The default version of this function will call transform * to make a lorentz transformation of the whole event, then extract * all final state particles and call analyze(tPVector) of this * analysis object and those of all associated analysis objects. The * default version will not, however, do anything on events which * have not been fully generated, or have been manipulated in any * way. * @param event pointer to the Event to be analyzed. * @param ieve the event number. * @param loop the number of times this event has been presented. * If negative the event is now fully generated. * @param state a number different from zero if the event has been * manipulated in some way since it was last presented. */ virtual void analyze(tEventPtr event, long ieve, int loop, int state); /** * Analyze the given vector of particles. The default version calls * analyze(tPPtr) for each of the particles. * @param particles the vector of pointers to particles to be analyzed */ virtual void analyze(const tPVector & particles); /** * Analyze the given particle. * @param particle pointer to the particle to be analyzed. */ virtual void analyze(tPPtr particle); //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<OniumToOniumPiPiAnalysis> initOniumToOniumPiPiAnalysis; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ OniumToOniumPiPiAnalysis & operator=(const OniumToOniumPiPiAnalysis &); private: /** * Incoming onium states */ vector<long> _incoming; /** * Outgoing onium states */ vector<long> _outgoing; /** * Histograms for the \f$\pi^+\pi^-\f$ masses */ vector<pair<HistogramPtr,HistogramPtr> > _mpipi; /** * Histmgrams for the helicity angles */ vector<pair<HistogramPtr,HistogramPtr> > _hel; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of OniumToOniumPiPiAnalysis. */ template <> struct BaseClassTrait<Herwig::OniumToOniumPiPiAnalysis,1> { /** Typedef of the first base class of OniumToOniumPiPiAnalysis. */ typedef AnalysisHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the OniumToOniumPiPiAnalysis class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::OniumToOniumPiPiAnalysis> : public ClassTraitsBase<Herwig::OniumToOniumPiPiAnalysis> { /** Return a platform-independent class name */ static string className() { return "Herwig::OniumToOniumPiPiAnalysis"; } /** * The name of a file containing the dynamic library where the class * OniumToOniumPiPiAnalysis is implemented. It may also include several, space-separated, * libraries if the class OniumToOniumPiPiAnalysis depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDecayAnalysis.so"; } }; /** @endcond */ } #endif /* HERWIG_OniumToOniumPiPiAnalysis_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/����������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464203�016736� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/GSLHelper.h�����������������������������������������������������������0000644�0001750�0001750�00000003526�11754474775�020717� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // GSLHelper.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_GSLHelper_H #define HERWIG_GSLHelper_H // // This is the declaration of the GSLHelper class. // namespace Herwig { using namespace ThePEG; /** \ingroup Utilities This class can be used to inherit data structures * from, which can then be used by the GSL algorithms that need a * pointer to a function and don't know about Units. This class defines * the necessary typedefs and forces you to define the "()" operator. In * addition it implements the vUnit and aUnit static methods which can * be overwritten if the corresponding base unit is too far from the * actual used unit. This removes the numerical problem that arises once * the base unit is several orders of magnitude away from the used unit. */ template <typename V, typename T> struct GSLHelper { public: /** * Constructor */ GSLHelper() {} /** * Destructor */ virtual ~GSLHelper() {} /** * Typedef for Agrument type */ typedef T ArgType; /** * Typedef for Value type */ typedef V ValType; /** * Value type */ virtual V vUnit() const {return TypeTraits<V>::baseunit;} /** * Agrument type */ virtual T aUnit() const {return TypeTraits<T>::baseunit;} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GSLHelper & operator=(const GSLHelper &); }; } namespace { template <class T> struct GSLparam { //The function to find root for const T & function; }; } #endif /* HERWIG_GSLHelper_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/GaussianIntegrator.cc�������������������������������������������������0000644�0001750�0001750�00000010731�11754474775�023075� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // GaussianIntegrator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the GaussianIntegrator class. // #include "GaussianIntegrator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/CurrentGenerator.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE #include "GaussianIntegrator.tcc" #endif using namespace Herwig; // initialisation void GaussianIntegrator::Init() { // the constants as arrays // first the weights double order6wgt []={.4679139346,.3607615730,.1713244924}; double order12wgt[]={.2491470458,.2334925365,.2031674267, .1600783285,.1069393260,.0471753364}; double order24wgt[]={.1279381953,.1258374563,.1216704729, .1155056681,.1074442701,.0976186521, .0861901615,.0733464814,.0592985849, .0442774388,.0285313886,.0123412298}; double order48wgt[]={.0647376968,.0644661644,.0639242386, .0631141923,.0620394232,.0607044392, .0591148397,.0572772921,.0551995037, .0528901894,.0503590356,.0476166585, .0446745609,.0415450829,.0382413511, .0347772226,.0311672278,.0274265097, .0235707608,.0196161605,.0155793157, .0114772346,.0073275539,.0031533461,}; double order96wgt[]={.0325506145,.0325161187,.0324471637, .0323438226,.0322062048,.0320344562, .0318287589,.0315893308,.0313164256, .0310103326,.0306713761,.0302999154, .0298963441,.0294610900,.0289946142, .0284974111,.0279700076,.0274129627, .0268268667,.0262123407,.0255700360, .0249006332,.0242048418,.0234833991, .0227370697,.0219666444,.0211729399, .0203567972,.0195190811,.0186606796, .0177825023,.0168854799,.0159705629, .0150387210,.0140909418,.0131282296, .0121516047,.0111621020,.0101607705, .0091486712,.0081268769,.0070964708, .0060585455,.0050142027,.0039645543, .0029107318,.0018539608,.0007967921}; // and the abscissae double order6abs []={.2386191860,.6612093865,.9324695142}; double order12abs[]={.1252334085,.3678314990,.5873179543, .7699026742,.9041172563,.9815606342}; double order24abs[]={.0640568929,.1911188675,.3150426797, .4337935076,.5454214714,.6480936519, .7401241916,.8200019860,.8864155270, .9382745520,.9747285560,.9951872200}; double order48abs[]={.0323801710,.0970046992,.1612223561, .2247637903,.2873624873,.3487558863, .4086864820,.4669029048,.5231609747, .5772247261,.6288673968,.6778723796, .7240341309,.7671590325,.8070662040, .8435882616,.8765720203,.9058791367, .9313866907,.9529877032,.9705915925, .9841245837,.9935301723,.9987710073}; double order96abs[]={.0162767488,.0488129851,.0812974955, .1136958501,.1459737146,.1780968824, .2100313105,.2417431561,.2731988126, .3043649444,.3352085229,.3656968614, .3957976498,.4254789884,.4547094222, .4834579739,.5116941772,.5393881083, .5665104186,.5930323648,.6189258401, .6441634037,.6687183100,.6925645366, .7156768123,.7380306437,.7596023411, .7803690438,.8003087441,.8194003107, .8376235112,.8549590334,.8713885059, .8868945174,.9014606353,.9150714231, .9277124567,.9393703398,.9500327178, .9596882914,.9683268285,.9759391746, .9825172636,.9880541263,.9925439003, .9959818430,.9983643759,.9996895039}; // setup the integration constants // 6th order _weights.push_back(vector<double>(order6wgt,order6wgt+3)); _abscissae.push_back(vector<double>(order6abs,order6abs+3)); // 12th order _weights.push_back(vector<double>(order12wgt,order12wgt+6)); _abscissae.push_back(vector<double>(order12abs,order12abs+6)); // 24th order _weights.push_back(vector<double>(order24wgt,order24wgt+12)); _abscissae.push_back(vector<double>(order24abs,order24abs+12)); // 48th order _weights.push_back(vector<double>(order48wgt,order48wgt+24)); _abscissae.push_back(vector<double>(order48abs,order48abs+24)); // 96th order _weights.push_back(vector<double>(order96wgt,order96wgt+48)); _abscissae.push_back(vector<double>(order96abs,order96abs+48)); } ���������������������������������������herwig++-2.6.0.orig/Utilities/StandardSelectors.cc��������������������������������������������������0000644�0001750�0001750�00000003036�11754474775�022710� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // StandardSelectors.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions for the Herwig++ StandardSelectors // #include "StandardSelectors.h" using namespace Herwig; bool WeakBHadronSelector::check(const Particle & p) const { long id = abs(p.id()); if (!( ( id > 510 && id < 532 ) || ( id > 5121 && id < 5555 ) ) ) return false; if ( p.children().size()==1 && abs(p.children()[0]->id()) == id ) return false; switch(id) { case 511: // B0 case 521: // B+ case 531: // B_s0 case 5122: // Lambda_b0 case 5132: // Xi_b- case 5142: // Xi_bc0 case 5232: // Xi_b0 case 5242: // Xi_bc+ case 5332: // Omega_b case 5342: // Omega_bc0 case 5412: // Xi'_bc0 case 5414: // Xi*_bc0 case 5422: // Xi'_bc+ case 5424: // Xi*_bc+ case 5432: // Omega'_bc0 case 5434: // Omega*_bc0 case 5442: // Omega_bcc+ case 5444: // Omega*_bcc+ case 5512: // Xi_bb- case 5514: // Xi*_bb- case 5522: // Xi_bb0 case 5524: // Xi*_bb0 case 5532: // Omega_bb- case 5534: // Omega*_bb- case 5542: // Omega_bbc0 case 5544: // Omega*_bbc0 case 5554: // Omega*_bbb- return true; break; default: return false; } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/GSLIntegrator.h�������������������������������������������������������0000644�0001750�0001750�00000006365�11754474775�021622� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // GSLIntegrator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_GSLIntegrator_H #define HERWIG_GSLIntegrator_H // // This is the declaration of the GSLIntegrator class. // #include "ThePEG/Pointer/ReferenceCounted.h" #include "ThePEG/Repository/CurrentGenerator.h" #include "gsl/gsl_integration.h" #include "gsl/gsl_errno.h" namespace Herwig { using namespace ThePEG; /** \ingroup Utilities * This class is designed to integrate a given function between * 2 limits using the gsl QAGS integration subroutine. * * The function is supplied using a templated class that must define * operator(argument). The units of the argument ArgType and return * type ValType must be supplied in the integrand class using a typedef * i.e. <br> * <code> struct integrand { </code><br> * <code> ... </code> <BR> * <code>Energy operator(double arg) const;</code><BR> * <code>typedef double ArgType</code><BR> * <code>typedef Energy ValType</code><BR> * <code> ... </code> <BR> * <code>}</code> <BR> */ class GSLIntegrator : public Pointer::ReferenceCounted { public: /** @name Standard constructors and destructors. */ //@{ /** * Default Constructor uses values in GSL manual as parameters **/ GSLIntegrator() : _abserr(1.0E-35), _relerr(1.0E-3), _nbins(1000) {} /** * Specify all the parameters. * @param abserr Absolute error. * @param relerr Relative error. * @param nbins Number of bins */ GSLIntegrator(double abserr, double relerr, int nbins) : _abserr(abserr), _relerr(relerr), _nbins(nbins) {} //@} /** * The value of the integral * @param function The integrand class that defines operator() * @param lower The lower limit of integration. * @param upper The upper limit of integration. */ template <class T> inline typename BinaryOpTraits<typename T::ValType, typename T::ArgType>::MulT value(const T & function, const typename T::ArgType lower, const typename T::ArgType upper) const; /** * The value of the integral * @param function The integrand class that defines operator() * @param lower The lower limit of integration. * @param upper The upper limit of integration. * @param error Returns the estimated error of the integral */ template <class T> inline typename BinaryOpTraits<typename T::ValType, typename T::ArgType>::MulT value(const T & function, const typename T::ArgType lower, const typename T::ArgType upper, typename BinaryOpTraits<typename T::ValType, typename T::ArgType>::MulT & error) const; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GSLIntegrator & operator=(const GSLIntegrator &); private: /** * The parameters controlling the absolute error. */ double _abserr; /** * The parameters controlling the relative error. */ double _relerr; /** * The maximum number of intervals to use. */ int _nbins; }; } #include "GSLIntegrator.tcc" #endif /* HERWIG_GSLIntegrator_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/Makefile.am.versionstring���������������������������������������������0000644�0001750�0001750�00000001723�11754474775�023725� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������########## SVN version string. Only use in cc files! #################### EXTRA_DIST = versionstring.h.in BUILT_SOURCES = versionstring.h if USE_SVNVERSION # # # # # # version: @svnversion -n $(top_srcdir) > version.tmp.new version.tmp: version @if ! diff -q version.tmp{.new,}; then mv -f version.tmp{.new,}; fi versionstring.h: version.tmp versionstring.h.in @echo "creating versionstring.h" @sed s%@HERWIGVERSIONSTRING@%"$(PACKAGE_STRING) `cd $(top_srcdir); svn info | grep URL | sed -e 's@.*herwig/@@' -e 's@branches/@@'` r`cat version.tmp`"% \ $(srcdir)/versionstring.h.in > versionstring.h else # # # # # # # # # # # # # versionstring.h: @echo "creating versionstring.h" @sed s%@HERWIGVERSIONSTRING@%"$(PACKAGE_STRING)"% \ $(srcdir)/versionstring.h.in > versionstring.h @touch versionstring.h endif # # # # # # # # # # # # # ######################################################################## CLEANFILES += versionstring.h version.tmp version.tmp.new ���������������������������������������������herwig++-2.6.0.orig/Utilities/Statistic.h�����������������������������������������������������������0000644�0001750�0001750�00000005156�11754474775�021102� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Statistic.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_Statistic_H #define HERWIG_Statistic_H #include <cmath> // // This is the declaration of the Statistic class. // namespace Herwig { /** * The Statistic class is a simple class designed to * store a variable for statistical analysis */ class Statistic { public: /** * The default constructor. */ Statistic() : _n(0), _xsum(0.), _x2sum(0.), _min(-1e100), _max(1e100) {} /** * The minimum value */ double minimum() const { return _min; } /** * The maximum value */ double maximum() const { return _max; } /** * Operator to add another point */ void operator+=(double input) { ++_n; _xsum += input; _x2sum += input * input; if (_min > input) _min = input; if (_max < input) _max = input; } /** * Number of points */ unsigned int numberOfPoints() const { return _n; } /** * Mean */ double mean() const { return _n > 0 ? _xsum / _n : 0.; } /** * Error on the mean estimate. Needed for example for Profile * histograms, where this should be used to compute a chi2 * or significance level of deviation to data, rather than stdDeV. * This is obvious because the error on the estimate should go to * zero for N -> infinity. */ double mean_stdDev() const { return std::sqrt(mean_var()); } /** * Variance on the mean estimate. Needed for example for Profile * histograms, where this should be used to compute a chi2 * or significance level of deviation to data, rather than stdDeV * This is obvious because the error on the estimate should go to * zero for N -> infinity. */ double mean_var() const { return _n > 1 ? var() / _n : 0.; } /** * Standard Deviation */ double stdDev() const { return std::sqrt(var()); } /** * Variance */ double var() const { return _n > 1 ? ( _x2sum - _xsum*_xsum/_n ) / ( _n - 1 ) : 0.; } /** * Total entry */ double total() const { return _xsum; } private: /** * Number of entries */ unsigned int _n; /** * Sum of the values */ double _xsum; /** * Sum of the squares of the values */ double _x2sum; /** * The minimum value */ double _min; /** * The maximum value */ double _max; }; } #endif /* HERWIG_Statistic_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/Interpolator.h��������������������������������������������������������0000644�0001750�0001750�00000014717�11754474775�021620� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Interpolator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_Interpolator_H #define HERWIG_Interpolator_H // // This is the declaration of the Interpolator class. // #include "ThePEG/Interface/Interfaced.h" #include <cassert> namespace Herwig { using namespace ThePEG; /** \ingroup Utilities * \author Peter Richardson * * This class implments a polynominal interpolation of a table of values, it is * based on the interpolation code in FORTRAN HERWIG. * */ template <typename ValT, typename ArgT> class Interpolator: public Interfaced { public: /** * Pointer to an Interpolator */ typedef typename Ptr<Interpolator<ValT,ArgT> >::pointer Ptr; /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ Interpolator() : _order(3), _copyx(5),_copyfun(5) {} /** * Constructor with data as vectors. */ Interpolator(const vector<ValT> & f, const vector<ArgT> & x, unsigned int order) : _fun(f.size(),0.0),_xval(x.size(),0.0),_order(order), _funit(TypeTraits<ValT>::baseunit), _xunit(TypeTraits<ArgT>::baseunit), _copyx(order+2),_copyfun(order+2) { assert(_order>0); assert(x.size() == f.size()); for (size_t i = 0; i < f.size(); ++i) { _fun [i] = f[i] / _funit; _xval[i] = x[i] / _xunit; } } //@} /** * Constructor from bare arrays */ Interpolator(size_t size, const double f[], ValT funit, const double x[], ArgT xunit, unsigned int order) : _fun(size,0.0),_xval(size,0.0),_order(order), _funit(funit),_xunit(xunit), _copyx(order+2),_copyfun(order+2) { assert(_order>0); for (size_t i = 0; i < size; ++i) { _fun [i] = f[i]; _xval[i] = x[i]; } } //@} /** * Return the interpolated value */ ValT operator () (ArgT) const; /** Return type for GaussianIntegrator */ typedef ValT ValType; /** Argument type for GaussianIntegrator */ typedef ArgT ArgType; 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 { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<Interpolator<ValT,ArgT> > initInterpolator; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Interpolator & operator=(const Interpolator &); private: /** * the function values. */ vector<double> _fun; /** * The x values. */ vector<double> _xval; /** * the order of interpolation. */ unsigned int _order; /** * The Unit of the function values */ ValT _funit; /** * The Unit of the argument values */ ArgT _xunit; /** * Temporary storage vector */ mutable vector<double> _copyx; /** * Temporary storage vector */ mutable vector<double> _copyfun; }; /** * helper function to create InterpolatorPtr easily * (analogous to make_pair() ) */ template <typename ValT, typename ArgT> inline typename Interpolator<ValT,ArgT>::Ptr make_InterpolatorPtr(size_t size, const double f[], ValT funit, const double x[], ArgT xunit, unsigned int order) { return new_ptr(Interpolator<ValT,ArgT>(size, f,funit, x,xunit, order)); } /** * helper function to create InterpolatorPtr easily * (analogous to make_pair() ) */ template <typename ValT, typename ArgT> inline typename Interpolator<ValT,ArgT>::Ptr make_InterpolatorPtr(const typename std::vector<ValT> & f, const typename std::vector<ArgT> & x, unsigned int order) { return new_ptr(Interpolator<ValT,ArgT>(f,x,order)); } } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Interpolator. */ template <typename ValT, typename ArgT> struct BaseClassTrait<Herwig::Interpolator<ValT,ArgT>,1> { /** Typedef of the first base class of Interpolator. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the Interpolator class and the shared object where it is defined. */ template <typename ValT, typename ArgT> struct ClassTraits<Herwig::Interpolator<ValT,ArgT> > : public ClassTraitsBase<Herwig::Interpolator<ValT,ArgT> > { /** Return a platform-independent class name */ static string className() { return "Herwig::Interpolator<" + ClassTraits<ValT>::className() + "," + ClassTraits<ArgT>::className() + ">"; } /** * The name of a file containing the dynamic library where the class * Interpolator is implemented. It may also include several, space-separated, * libraries if the class Interpolator depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "libHwUtils.so"; } }; /** @endcond */ } #ifndef ThePEG_TEMPLATES_IN_CC_FILE #include "Interpolator.tcc" #endif #endif /* HERWIG_Interpolator_H */ �������������������������������������������������herwig++-2.6.0.orig/Utilities/Kinematics.h����������������������������������������������������������0000644�0001750�0001750�00000011605�11754474775�021216� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Kinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // #ifndef HERWIG_Kinematics_H #define HERWIG_Kinematics_H // This is the declaration of the Kinematics class. #include <ThePEG/Config/ThePEG.h> #include "ThePEG/Vectors/ThreeVector.h" #include "ThePEG/Vectors/LorentzRotation.h" #include "ThePEG/Repository/UseRandom.h" #include <ThePEG/Vectors/Lorentz5Vector.h> namespace Herwig { using namespace ThePEG; /** \ingroup Utilities * This is a pure static class which provides some useful methods * for kinematics computation, as the two body decays. * * NB) For other useful kinematical methods (and probably even those * implemented in Kinematics class!): * @see UtilityBase */ class Kinematics { public: /** * Calculate the momenta for a two body decay * The return value indicates success or failure. * @param p The momentum of the decaying particle * @param m1 The mass of the first decay product * @param m2 The mass of the seocnd decay product * @param unitDir1 Direction for the products in the rest frame of * the decaying particle * @param p1 The momentum of the first decay product * @param p2 The momentum of the second decay product */ static bool twoBodyDecay(const Lorentz5Momentum & p, const Energy m1, const Energy m2, const Axis & unitDir1, Lorentz5Momentum & p1, Lorentz5Momentum & p2) { Energy min=p.mass(); if ( min >= m1 + m2 && m1 >= ZERO && m2 >= ZERO ) { Momentum3 pstarVector = unitDir1 * pstarTwoBodyDecay(min,m1,m2); p1 = Lorentz5Momentum(m1, pstarVector); p2 = Lorentz5Momentum(m2,-pstarVector); // boost from CM to LAB Boost bv=p.boostVector(); p1.boost( bv ); p2.boost( bv ); return true; } return false; } /** * Calculate the momenta for a two body decay * The return value indicates success or failure. * @param p The momentum of the decaying particle * @param m1 The mass of the first decay product * @param m2 The mass of the second decay product * @param cosThetaStar1 Polar angle in rest frame * @param phiStar1 Azimuthal angle in rest frame * @param p1 The momentum of the first decay product * @param p2 The momentum of the second decay product */ static bool twoBodyDecay(const Lorentz5Momentum & p, const Energy m1, const Energy m2, const double cosThetaStar1, const double phiStar1, Lorentz5Momentum & p1, Lorentz5Momentum & p2) { return twoBodyDecay(p,m1,m2,unitDirection(cosThetaStar1,phiStar1),p1,p2); } /** * As the name implies, this takes the momentum p0 and does a flat three * body decay into p1..p3. The argument fcn is used to add additional * weights. If it is not used, the default is just flat in phasespace. * The return value indicates success or failure. */ static bool threeBodyDecay(Lorentz5Momentum p0, Lorentz5Momentum &p1, Lorentz5Momentum &p2, Lorentz5Momentum &p3, double (*fcn)(Energy2,Energy2,Energy2,InvEnergy4) = NULL); /** * For the two body decay M -> m1 + m2 it gives the module of the * 3-momentum of the decay product in the rest frame of M. */ static Energy pstarTwoBodyDecay(const Energy M, const Energy m1, const Energy m2) { return ( M > ZERO && m1 >=ZERO && m2 >= ZERO && M > m1+m2 ? Energy(sqrt(( sqr(M) - sqr(m1+m2) )*( sqr(M) - sqr(m1-m2) )) / (2.0*M) ) : ZERO); } /** * It returns the unit 3-vector with the given cosTheta and phi. */ static Axis unitDirection(const double cosTheta, const double phi) { return ( fabs( cosTheta ) <= 1.0 ? Axis( cos(phi)*sqrt(1.0-cosTheta*cosTheta) , sin(phi)*sqrt(1.0-cosTheta*cosTheta) , cosTheta) : Axis() ); } /** * This just generates angles. First flat -1..1, second flat 0..2Pi */ static void generateAngles(double & ct, double & az) { ct = UseRandom::rnd()*2.0 - 1.0; // Flat from -1..1 az = UseRandom::rnd()*2.0*Constants::pi; } private: /** * Pure static class so default constructor private */ Kinematics(); /** * Pure static class so copy constructor private */ Kinematics(const Kinematics & x); /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Kinematics & operator=(const Kinematics & x); /** * Maximum number of attempts to generate a 3, 4 or 5 body decay. */ static const unsigned int _ntry=100; }; } #endif /* HERWIG_Kinematics_H */ ���������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/Maths.cc��������������������������������������������������������������0000644�0001750�0001750�00000005662�11754474775�020347� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Maths.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #include <iostream> #include "Maths.h" namespace Herwig { namespace Math { using ThePEG::Complex; using std::cout; using std::endl; namespace { inline Complex Li2Prod(Complex y,Complex y2) { static const double a1 =-0.250000000000000e0,a2 =-0.111111111111111e0; static const double a3 =-0.010000000000000e0,a4 =-0.017006802721088e0; static const double a5 =-0.019444444444444e0,a6 =-0.020661157024793e0; static const double a7 =-0.021417300648069e0,a8 =-0.021948866377231e0; static const double a9 =-0.022349233811171e0,a10 =-0.022663689135191e0; return y*(1.+a1*y*(1.+a2*y*(1.+a3*y2*(1.+a4*y2*(1.+a5*y2* (1.+a6*y2*(1.+a7*y2*(1.+a8*y2*(1.+a9*y2*(1.+a10*y2)))))))))); } inline long double Li2Prod(long double y,long double y2) { static const long double a1 =-0.250000000000000e0,a2 =-0.111111111111111e0; static const long double a3 =-0.010000000000000e0,a4 =-0.017006802721088e0; static const long double a5 =-0.019444444444444e0,a6 =-0.020661157024793e0; static const long double a7 =-0.021417300648069e0,a8 =-0.021948866377231e0; static const long double a9 =-0.022349233811171e0,a10 =-0.022663689135191e0; return y*(1.+a1*y*(1.+a2*y*(1.+a3*y2*(1.+a4*y2*(1.+a5*y2* (1.+a6*y2*(1.+a7*y2*(1.+a8*y2*(1.+a9*y2*(1.+a10*y2)))))))))); } } Complex Li2(Complex x) { Complex z; static double zeta2= 1.644934066848226e0; double xr(real(x)),xi(imag(x)),r2(xr*xr+xi*xi); if(r2>1.&&xr/r2>0.5) { z=-log(1./x); return Li2Prod(z,z*z)+zeta2-log(x)*log(1.-x)+0.5*log(x)*log(x); } else if (r2>1.&&(xr/r2)<=0.5) { z=-log(1.-1./x); return -Li2Prod(z,z*z)-zeta2-0.5*pow(log(-x),2); } else if(r2==1.&&xi==0.) { if(xr>0){return zeta2;} else{return -0.5*zeta2;} } else if(r2<=1.&&xr>0.5) { z=-log(x); return -Li2Prod(z,z*z)+zeta2-log(x)*log(1.-x); } else { z=-log(1.-x); return Li2Prod(z,z*z); } } long double ReLi2(long double x) { long double z; static long double zeta2= 1.644934066848226e0; long double output; if(x>1.&&x<2.) { z=-log(1./x); output= Li2Prod(z,z*z)+zeta2-log(x)*log(x-1.)+0.5*log(x)*log(x); } else if (x>1.||x<-1.) { z=-log(1.-1./x); if(x<-1){output= -Li2Prod(z,z*z)-zeta2-0.5*pow(log(-x),2);} else{output= -Li2Prod(z,z*z)-0.5*pow(log(x),2)+2.*zeta2;} } else if(x== 1.){output= zeta2;} else if(x==-1.){output= -0.5*zeta2;} else if(x>0.5) { z=-log(x); output= -Li2Prod(z,z*z)+zeta2-log(x)*log(1.-x); } else { z=-log(1.-x); output= Li2Prod(z,z*z); } return output; } } } ������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/GaussianIntegrator.h��������������������������������������������������0000644�0001750�0001750�00000006224�11754474775�022741� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // GaussianIntegrator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_GaussianIntegrator_H #define HERWIG_GaussianIntegrator_H // // This is the declaration of the GaussianIntegrator class. // #include "ThePEG/Pointer/ReferenceCounted.h" #include "ThePEG/Repository/CurrentGenerator.h" #include <vector> namespace Herwig { using namespace ThePEG; /** \ingroup Utilities * \author Peter Richardson * This class is designed to perform the integral of a function * using Gaussian quadrature.The method is adaptive based on using 6th,12th, * 24th,48th, or 96th order Gaussian quadrature combined with * subdivision of the integral if this is insufficient. * * The class is templated on a simple class which should provide a * T::operator () (double) const which provides the integrand for the function. */ class GaussianIntegrator : public Pointer::ReferenceCounted { public: /** @name Standard constructors and destructors. */ //@{ /** * Default Constructor */ GaussianIntegrator() : _abserr(1.E-35), _relerr(5.E-5), _binwidth(1.E-5), _maxint(100), _maxeval(100000) { // setup the weights and abscissae Init(); } /** * Specify all the parameters. * @param abserr Absolute error. * @param relerr Relative error. * @param binwidth Width of the bin as a fraction of the integration region. * @param maxint Maximum number of intervals * @param maxeval Maximum number of function evaluations */ GaussianIntegrator(double abserr, double relerr, double binwidth, int maxint, int maxeval) : _abserr(abserr), _relerr(relerr), _binwidth(binwidth), _maxint(maxint), _maxeval(maxeval) { // setup the weights and abscissae Init(); } /** * The value of the integral * @param lower The lower limit of integration. * @param upper The upper limit of integration. */ template <class T> inline typename BinaryOpTraits<typename T::ValType, typename T::ArgType>::MulT value(const T &, const typename T::ArgType lower, const typename T::ArgType upper) const; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GaussianIntegrator & operator=(const GaussianIntegrator &); /** * Initialise the weights and abscissae. */ void Init(); private: /** * The weights for the gaussian quadrature. */ std::vector< std::vector<double> > _weights; /** * The abscissae. */ std::vector< std::vector <double> > _abscissae; /** * The parameters controlling the error. */ double _abserr,_relerr; /** * The minimum width of a bin as a fraction of the integration region. */ double _binwidth; /** * Maximum number of bins. */ int _maxint; /** * Maximum number of function evaluations. */ int _maxeval; }; } #include "GaussianIntegrator.tcc" #endif /* HERWIG_GaussianIntegrator_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/Makefile.in�����������������������������������������������������������0000644�0001750�0001750�00000050262�11756461701�021010� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ DIST_COMMON = $(srcdir)/Makefile.am \ $(srcdir)/Makefile.am.versionstring $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp subdir = Utilities ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwUtils_la_LIBADD = am_libHwUtils_la_OBJECTS = Kinematics.lo Smearing.lo Maths.lo \ StandardSelectors.lo Histogram.lo GaussianIntegrator.lo \ HerwigStrategy.lo libHwUtils_la_OBJECTS = $(am_libHwUtils_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwUtils_la_SOURCES) DIST_SOURCES = $(libHwUtils_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwUtils.la libHwUtils_la_SOURCES = \ EnumParticles.h \ Interpolator.tcc Interpolator.h \ Kinematics.cc Kinematics.h \ Smearing.cc Smearing.h \ Maths.h Maths.cc \ StandardSelectors.cc StandardSelectors.h\ Histogram.cc Histogram.fh Histogram.h \ GaussianIntegrator.cc GaussianIntegrator.h \ GaussianIntegrator.tcc \ Statistic.h HerwigStrategy.cc HerwigStrategy.h \ GSLIntegrator.h GSLIntegrator.tcc \ GSLBisection.h GSLBisection.tcc GSLHelper.h ######################################################################## CLEANFILES = versionstring.h version.tmp version.tmp.new ########## SVN version string. Only use in cc files! #################### EXTRA_DIST = versionstring.h.in BUILT_SOURCES = versionstring.h all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Makefile.am.versionstring $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Utilities/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Utilities/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(srcdir)/Makefile.am.versionstring: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwUtils.la: $(libHwUtils_la_OBJECTS) $(libHwUtils_la_DEPENDENCIES) $(EXTRA_libHwUtils_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwUtils_la_OBJECTS) $(libHwUtils_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GaussianIntegrator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HerwigStrategy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Histogram.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Kinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Maths.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Smearing.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StandardSelectors.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: all check install install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am @USE_SVNVERSION_TRUE@version: @USE_SVNVERSION_TRUE@ @svnversion -n $(top_srcdir) > version.tmp.new @USE_SVNVERSION_TRUE@version.tmp: version @USE_SVNVERSION_TRUE@ @if ! diff -q version.tmp{.new,}; then mv -f version.tmp{.new,}; fi @USE_SVNVERSION_TRUE@versionstring.h: version.tmp versionstring.h.in @USE_SVNVERSION_TRUE@ @echo "creating versionstring.h" @USE_SVNVERSION_TRUE@ @sed s%@HERWIGVERSIONSTRING@%"$(PACKAGE_STRING) `cd $(top_srcdir); svn info | grep URL | sed -e 's@.*herwig/@@' -e 's@branches/@@'` r`cat version.tmp`"% \ @USE_SVNVERSION_TRUE@ $(srcdir)/versionstring.h.in > versionstring.h @USE_SVNVERSION_FALSE@versionstring.h: @USE_SVNVERSION_FALSE@ @echo "creating versionstring.h" @USE_SVNVERSION_FALSE@ @sed s%@HERWIGVERSIONSTRING@%"$(PACKAGE_STRING)"% \ @USE_SVNVERSION_FALSE@ $(srcdir)/versionstring.h.in > versionstring.h @USE_SVNVERSION_FALSE@ @touch versionstring.h # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/Smearing.h������������������������������������������������������������0000644�0001750�0001750�00000003010�11754474775�020663� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Smearing.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // #ifndef HERWIG_Smearing_H #define HERWIG_Smearing_H // // This is the declaration of the Smearing class. namespace Herwig { /** \ingroup Utilities * * This is a pure static class which provides some useful methods for smearing. */ class Smearing { public: /** * It returns true if succeed in drawing a value (x) drawn from a * gaussian of specified mean and sigma, false otherwise. * Indeed, it generates uncorrelated pairs and throws one of them away. */ static bool gaussianSmearing( const double mean, const double sigma, double & x ); /** * It returns true if it succeed in drawing a rotated 2-vector * (vx,vy) of given length r , false otherwise. */ static bool azimuthalSmearing( const double r, double & vx, double & vy ); private: /** * Pure static class so no default constructor */ Smearing(); /** * Pure static class so no copy constructor */ Smearing(const Smearing & x); /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Smearing & operator=(const Smearing & x); }; } #endif /* HERWIG_Smearing_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/EnumParticles.h�������������������������������������������������������0000644�0001750�0001750�00000000737�11754474775�021706� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#ifndef HERWIG_EnumParticles_H #define HERWIG_EnumParticles_H #include <ThePEG/PDT/EnumParticles.h> namespace ThePEG { /** * The ParticleID namespace defines the ParticleCodes enumeration. */ namespace ParticleID { /** \ingroup Utilities * Enumeration to give identifiers to PDG codes for special Herwig++ particles */ enum HerwigCodes { Cluster = 81, /**< Herwig++ Cluster for Hadronization*/ Remnant = 82 /**< Herwig++ beam Remnant */ }; } } #endif ���������������������������������herwig++-2.6.0.orig/Utilities/Maths.h���������������������������������������������������������������0000644�0001750�0001750�00000003126�11754474775�020202� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Maths.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_Math_H #define HERWIG_Math_H #include <cmath> #include <vector> #include "ThePEG/Config/Complex.h" #include "ThePEG/Utilities/Maths.h" namespace Herwig { using ThePEG::Complex; using std::complex; /** The Math namespace includes the declaration of some useful * mathematical functions. */ namespace Math { /** * The dilog function taken from FORTRAN Herwig */ Complex Li2(Complex); /** * The real part of the dilog function taken from FORTRAN Herwig */ long double ReLi2(long double); /** * Fold angles into the range (0,2 Pi) */ inline double angleZeroTo2Pi(double angle) { double ret = fmod(angle, 2 * M_PI); if (ret < 0) ret += 2 * M_PI; return ret; } /** * Fold angles into the range (-Pi,Pi) */ inline double angleMinusPiToPi(double angle) { double ret = angleZeroTo2Pi(angle); if (ret > M_PI) ret -= 2 * M_PI; return ret; } /** * Calculates the (lower) median of a vector of T objects. T has to be * comparable, i.e. T::operator< must be defined. */ template <typename T> inline T median(std::vector<T> v) { if (v.empty()) return T(); sort ( v.begin(), v.end() ); const size_t N = v.size(); return (N % 2) ? v.at((N+1)/2 - 1) : v.at(N/2 - 1); } } } #endif /* HERWIG_Math_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/Kinematics.cc���������������������������������������������������������0000644�0001750�0001750�00000005636�11754474775�021363� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Kinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the Kinematics class. // #include "Kinematics.h" #include <ThePEG/Vectors/Lorentz5Vector.h> #include <ThePEG/Vectors/LorentzVector.h> #include <ThePEG/Vectors/LorentzRotation.h> #include <ThePEG/Repository/EventGenerator.h> #include <ThePEG/Repository/CurrentGenerator.h> #include <ThePEG/EventRecord/Event.h> using namespace Herwig; using namespace ThePEG; /***** * This function, as the name implies, performs a three body decay. The decay * products are distributed uniformly in all three directions. ****/ bool Kinematics::threeBodyDecay(Lorentz5Momentum p0, Lorentz5Momentum &p1, Lorentz5Momentum &p2, Lorentz5Momentum &p3, double (*fcn)(Energy2,Energy2,Energy2,InvEnergy4)) { // Variables needed in calculation...named same as fortran version Energy a = p0.mass() + p1.mass(); Energy b = p0.mass() - p1.mass(); Energy c = p2.mass() + p3.mass(); if(b < c) { CurrentGenerator::log() << "Kinematics::threeBodyDecay() phase space problem\n" << p0.mass()/GeV << " -> " << p1.mass()/GeV << ' ' << p2.mass()/GeV << ' ' << p3.mass()/GeV << '\n'; return false; } Energy d = abs(p2.mass()-p3.mass()); Energy2 aa = sqr(a); Energy2 bb = sqr(b); Energy2 cc = sqr(c); Energy2 dd = sqr(d); Energy2 ee = (b-c)*(a-d); Energy2 a1 = 0.5 * (aa+bb); Energy2 b1 = 0.5 * (cc+dd); InvEnergy4 c1 = 4./(sqr(a1-b1)); Energy2 ff; double ww; Energy4 pp,qq,rr; // Choose mass of subsystem 23 with prescribed distribution unsigned int ntry=0; do { // ff is the mass squared of the 23 subsystem ff = UseRandom::rnd()*(cc-bb)+bb; // pp is ((m0+m1)^2 - m23^2)((m0-m1)^2-m23) pp = (aa-ff)*(bb-ff); // qq is ((m2+m3)^2 - m23^2)(|m2-m3|^2-m23^2) qq = (cc-ff)*(dd-ff); // weight ww = (fcn != NULL) ? (*fcn)(ff,a1,b1,c1) : 1.0; ww = sqr(ww); rr = ee*ff*UseRandom::rnd(); ++ntry; } while(pp*qq*ww < rr*rr && ntry < _ntry ); if(ntry >= _ntry) { CurrentGenerator::log() << "Kinematics::threeBodyDecay can't generate momenta" << " after " << _ntry << " attempts\n"; return false; } // ff is the mass squared of subsystem 23 // do 2 body decays 0->1+23, 23->2+3 double CosAngle, AzmAngle; Lorentz5Momentum p23; p23.setMass(sqrt(ff)); generateAngles(CosAngle,AzmAngle); bool status = twoBodyDecay(p0,p1.mass(),p23.mass(),CosAngle,AzmAngle,p1,p23); generateAngles(CosAngle,AzmAngle); status &= twoBodyDecay(p23,p2.mass(),p3.mass(),CosAngle,AzmAngle,p2,p3); return status; } ��������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/GSLBisection.tcc������������������������������������������������������0000644�0001750�0001750�00000005174�11754474775�021742� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // GSLBisection.tcc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined templated member // functions of the GSLBisection class. // using namespace Herwig; using namespace ThePEG; namespace { template<class T> double func(double x , void * p) { //Units of the argument and return type const typename T::ValType ValUnit = ((struct GSLparam<T> *)p)->function.vUnit(); const typename T::ArgType ArgUnit = ((struct GSLparam<T> *)p)->function.aUnit(); const T & f = ((struct GSLparam<T> *)p)->function; return f(x * ArgUnit ) / ValUnit; } } namespace Herwig { using namespace ThePEG; template <class T> inline typename T::ArgType GSLBisection::value(const T & fn, const typename T::ArgType lower, const typename T::ArgType upper) const { typedef typename T::ArgType ArgType; const ArgType ArgUnit = fn.aUnit(); //use own error handler gsl_error_handler_t *old_handler = gsl_set_error_handler(& GSLsubstHandler); int status(0), iter(0); const gsl_root_fsolver_type *solverType; gsl_root_fsolver *solver; double result(0); double x_lo(lower/ArgUnit), x_hi(upper/ArgUnit); GSLparam<T> parameters = { fn }; gsl_function F; F.function = & func<T>; F.params = &parameters; solverType = gsl_root_fsolver_brent; solver = gsl_root_fsolver_alloc (solverType); try{ gsl_root_fsolver_set (solver, &F, x_lo, x_hi); }catch(GSLerror){ cerr << "GSLBisection: initial interval does not contain zero\n"; throw IntervalError(); } /* printf ("Root finding is using %s method\n", gsl_root_fsolver_name (solver)); printf ("%5s [%9s, %9s] %9s %10s\n", "iter", "lower", "upper", "root", "err"); */ do{ iter++; status = gsl_root_fsolver_iterate (solver); result = gsl_root_fsolver_root (solver); x_lo = gsl_root_fsolver_x_lower (solver); x_hi = gsl_root_fsolver_x_upper (solver); status = gsl_root_test_interval (x_lo, x_hi, abserr_, relerr_); /* if (status == GSL_SUCCESS) printf ("Converged:\n"); printf ("%5d [%.7f, %.7f] %.7f %.7f\n", iter, x_lo, x_hi, result, x_hi - x_lo); */ } while (status == GSL_CONTINUE && iter < maxPoints_); gsl_root_fsolver_free (solver); //use default GSL error handler again gsl_set_error_handler(old_handler); //fix units and return return result * ArgUnit; } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/versionstring.h.in����������������������������������������������������0000644�0001750�0001750�00000000276�11754474775�022452� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// versionstring.h. Generated from versionstring.h.in by Makefile.am // only useful for inclusion in HerwigStrategy.cc std::string Herwig::HerwigStrategy::version = "@HERWIGVERSIONSTRING@"; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/StandardSelectors.h���������������������������������������������������0000644�0001750�0001750�00000002104�11754474775�022545� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // StandardSelectors.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_StandardSelectors_H #define HERWIG_StandardSelectors_H /** * This file contains declarations of * standard selector classes for Herwig++ in addition to those of ThePEG. * The classes contain only static * functions and are assumed to be used as template arguments to the * ParticleSelector class. */ #include "ThePEG/EventRecord/SelectorBase.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/ParticleTraits.h" namespace Herwig { using namespace ThePEG; /** * Selector to select weakly decaying B hadrons */ struct WeakBHadronSelector: public SelectorBase { /** * Return true if the particle should be extracted. */ virtual bool check(const Particle & p) const; }; } #endif /* HERWIG_StandardSelectors_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/Histogram.fh����������������������������������������������������������0000644�0001750�0001750�00000000445�11754474775�021232� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the Histogram class. // #ifndef HERWIG_Histogram_FH #define HERWIG_Histogram_FH #include "ThePEG/Config/ThePEG.h" namespace Herwig { using namespace ThePEG; class Histogram; ThePEG_DECLARE_POINTERS(Histogram,HistogramPtr); } #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/GSLBisection.h��������������������������������������������������������0000644�0001750�0001750�00000007313�11754474775�021415� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // GSLBisection.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_GSLBisection_H #define HERWIG_GSLBisection_H // // This is the declaration of the GSLBisection class. // #include "ThePEG/Pointer/ReferenceCounted.h" #include "Herwig++/Utilities/GSLHelper.h" #include <gsl/gsl_errno.h> #include <gsl/gsl_math.h> #include <gsl/gsl_roots.h> namespace Herwig { using namespace ThePEG; /** \ingroup Utilities * This class is designed to find the root of a given function between * 2 limits using bisection methods. * * \author Manuel B\"ahr * * The function is supplied using a templated class that must define * operator(argument). The units of the argument ArgType and return type * ValType must be supplied in the integrand class using a typedef. In * addition the baseunit should be supplied by static methods vUnit() * and aUnit() to avoid numerical problems that arise when the centrally * defined baseunit is several orders of magnitude off the one you * need. As an example see: <br> * <code> struct integrand { </code><br> * <code> ... </code> <BR> * <code>Energy operator(CrossSection arg) const;</code><BR> * <code>typedef CrossSection ArgType</code><BR> * <code>typedef Energy ValType</code><BR> * <code>static ArgType aUnit(){return 1.*millibarn;} </code> <BR> * <code>static ValType vUnit(){return 1.*MeV;} </code> <BR> * <code> ... </code> <BR> * <code>}</code> <BR> * This can be facilitated by deriving from the GSLHelper struct. Which * implents the vUnit() and aUnit() methods using the baseunit static * method. Also the typedefs are written there. */ class GSLBisection : public Pointer::ReferenceCounted { public: /** * Struct that is used to throw and catch GSL errors */ struct GSLerror {}; /** * Struct that is used to throw and catch GSL errors */ struct IntervalError {}; /** @name Standard constructors and destructors. */ //@{ /** * Default Constructor */ GSLBisection() : abserr_(0), relerr_(1.E-8), maxPoints_(100) {} /** * Specify all the parameters. * @param abserr Absolute error. * @param relerr Relative error. * @param max Maximum number of intervals */ inline GSLBisection(double abserr, double relerr, int max) : abserr_(abserr), relerr_(relerr), maxPoints_(max) {} //@} /** * Function to overwrite the default GSL error handling */ static void GSLsubstHandler(const char * reason, const char * file, int line, int gsl_errno){ cerr << "GSL error: " << reason << " in file: " << file << " , line: " << line << ", error code " << gsl_errno << endl; throw GSLerror(); } /** * The result of the root finding. * @param function The integrand class that defines operator() * @param lower The lower limit of integration. * @param upper The upper limit of integration. */ template <class T> inline typename T::ArgType value(const T & function, const typename T::ArgType lower, const typename T::ArgType upper) const; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GSLBisection & operator=(const GSLBisection &); private: /** * The parameters controlling the absolute error. */ double abserr_; /** * The parameters controlling the relatve error. */ double relerr_; /** * The maximum number of evaluations to use. */ int maxPoints_; }; } #include "GSLBisection.tcc" #endif /* HERWIG_GSLBisection_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/Makefile.am�����������������������������������������������������������0000644�0001750�0001750�00000001014�11754474775�021003� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwUtils.la libHwUtils_la_SOURCES = \ EnumParticles.h \ Interpolator.tcc Interpolator.h \ Kinematics.cc Kinematics.h \ Smearing.cc Smearing.h \ Maths.h Maths.cc \ StandardSelectors.cc StandardSelectors.h\ Histogram.cc Histogram.fh Histogram.h \ GaussianIntegrator.cc GaussianIntegrator.h \ GaussianIntegrator.tcc \ Statistic.h HerwigStrategy.cc HerwigStrategy.h \ GSLIntegrator.h GSLIntegrator.tcc \ GSLBisection.h GSLBisection.tcc GSLHelper.h CLEANFILES= include $(srcdir)/Makefile.am.versionstring ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/Histogram.h�����������������������������������������������������������0000644�0001750�0001750�00000027367�11754474775�021100� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Histogram.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_Histogram_H #define HERWIG_Histogram_H // // This is the declaration of the Histogram class. // #include "Histogram.fh" #include "ThePEG/Interface/Interfaced.h" #include "Statistic.h" #include <string> namespace Herwig { using namespace ThePEG; /** * Options for histogram output. * They can be combined using the '|' operator, e.g. 'Frame | Ylog' */ namespace HistogramOptions { const unsigned int None = 0; /**< No options */ const unsigned int Frame = 1; /**< Plot on new frame */ const unsigned int Errorbars = 1 << 1; /**< Plot error bars */ const unsigned int Xlog = 1 << 2; /**< log scale for x-axis */ const unsigned int Ylog = 1 << 3; /**< log scale for y-axis */ const unsigned int Smooth = 1 << 4; /**< smooth the line */ const unsigned int Rawcount = 1 << 5; /**< don't normalize to unit area */ } /** * The Histogram class is a simple histogram for the Analysis handlers. * * @see \ref HistogramInterfaces "The interfaces" * defined for Histogram. */ class Histogram: public Interfaced { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. * @param lower The lower limit of the histogram * @param upper The upper limit of the histogram * @param nbin Number of bins */ Histogram(double lower=0., double upper=0., unsigned int nbin=0) : _globalStats(), _havedata(false), _bins(nbin+2),_prefactor(1.),_total(0.) { if (upper<lower) swap(upper,lower); _bins[0].limit=-1.e100; double limit(lower); double width((upper-lower)/nbin); for(unsigned int ix=1; ix <= nbin; ++ix) { _bins[ix].limit=limit; limit += width; } _bins.back().limit=limit; } /** * Constructor for variable width bins * @param limits The lower limits for the bins followed by the upper limit of the last bin */ Histogram(vector<double> limits) : _globalStats(), _havedata(false), _bins(limits.size()+1), _prefactor(1.),_total(0.) { _bins[0].limit=-1.e100; for (size_t i=1; i<=limits.size(); ++i) _bins[i].limit=limits[i-1]; } /** * Constructor with data included * @param limits The lower limits for the bins followed by the upper limit of the last bin * @param data The data * @param dataerror The errors on the data */ Histogram(vector<double> limits, vector<double> data, vector<double> dataerror) : _globalStats(), _havedata(true), _bins(limits.size()+1), _prefactor(1.),_total(0.) { _bins[0].limit=-1.e100; for (size_t i=1; i<=limits.size(); ++i) _bins[i].limit=limits[i-1]; // no data goes into _bins[0] or _bins.back()! for (size_t i=1; i<=min(limits.size()-1,data.size()); ++i) _bins[i].data=data[i-1]; for (size_t i=1; i<=min(limits.size()-1,dataerror.size()); ++i) _bins[i].dataerror=dataerror[i-1]; } //@} public: /** * Operator to add a point to the histogrma with unit weight */ void operator += (double input) { addWeighted(input,1.0); } /** * Function to add a weighted point to the histogram */ void addWeighted(double input, double weight) { if(isnan(input)) return; unsigned int ibin; for(ibin=1; ibin<_bins.size(); ++ibin) { if(input<_bins[ibin].limit) break; } _bins[ibin-1].contents += weight; _bins[ibin-1].contentsSq += sqr(weight); _globalStats += weight * input; _total += weight; } /** * Number of bins (not counting the overflow) */ unsigned int numberOfBins() const { return _bins.size()-2; } /** * Get the prefactor */ double prefactor() const { return _prefactor; } /** * Set the prefactor */ void prefactor(double in ) { _prefactor=in; } /** * Access to the statistics on the total entry of the histogram */ const Statistic & globalStatistics() const { return _globalStats; } /** * Normalise the distributions to the data */ void normaliseToData(); /** * Normalise the distributions to the total cross section */ void normaliseToCrossSection(); /** * Return the chi squared * @param chisq The chi squared * @param ndegrees The number of points * @param minfrac The minimum fractional error on the data point */ void chiSquared(double & chisq, unsigned int & ndegrees, double minfrac=0.) const; /** * @brief Output as file ready for usage with flat2aida and other Rivet tools * @param out The output stream * @param histogramname The histogram name identifying the histogram. Required * for comparisons (e.g. with rivet-mkhtml or with * compare-histos) * @param analysisname The analysis name * @param title The title for the top of the plot in LaTeX format * @param xlabel The x label in LaTeX format * @param ylabel The y label in LaTeX format * @param rawcount Don't normalise to unit area. * @param multiplicator Factor the histogram is multiplied with. * N.B. Experimental data is not output. */ void rivetOutput(ostream & out, string histogramname = string("default"), string analysisname = string("default"), string title = string(), string xlabel = string(), string ylabel = string(), bool rawcount = false, double multiplicator = 1.0) const; /** * Output as a topdrawer file. The histogram is normalised to unit area * @param out The output stream * @param flags A bitmask of flags from HistogramOptions, e.g. Frame|Ylog * @param colour The colour for the line * @param title The title for the top of the plot * @param titlecase topdraw format for the title * @param left Left axis lable * @param leftcase topdraw format for left axis label * @param bottom Bottom axis lable * @param bottomcase Bottom axis lable ofr topdraw * N.B. in td smoothing only works for histograms with uniform binning. */ void topdrawOutput(ostream & out, unsigned int flags = 0, string colour = string("BLACK"), string title = string(), string titlecase = string(), string left = string(), string leftcase = string(), string bottom = string(), string bottomcase = string() ) const; void topdrawMCatNLO(ostream & out, unsigned int flags =0 , string colour = string("BLACK"), string title = string() ) const; /** * Output as a topdrawer file. A bin by bin average is taken. * @param out The output stream * @param frame output on a new graph * @param errorbars output data points with error bars * @param xlog log scale on x axis * @param ylog log scale on y axis * @param colour The colour for the line * @param title The title for the top of the plot * @param titlecase topdraw format for the title * @param left Left axis lable * @param leftcase topdraw format for left axis label * @param bottom Bottom axis lable * @param bottomcase Bottom axis lable ofr topdraw */ void topdrawOutputAverage(ostream & out, bool frame, bool errorbars, bool xlog, bool ylog, string colour=string("BLACK"), string title=string(), string titlecase =string(), string left=string(), string leftcase =string(), string bottom=string(), string bottomcase =string()) const; /** * get the number of visible entries (all entries without those in the * under- and overflow bins) in the histogram. This assumes integer * entries, ie it gives wrong results for weighted histograms. */ unsigned int visibleEntries() const; /** * Compute the normalisation of the data. */ double dataNorm() const; /** * Output into a simple ascii file, easily readable by gnuplot. */ void simpleOutput(ostream & out, bool errorbars, bool normdata=false); /** * Dump bin data into a vector */ vector<double> dumpBins() const; /** * Returns a new histogram containing bin-by-bin ratios of two histograms */ Histogram ratioWith(const Histogram & h2) const; /** * @brief Returns limits for bins with exponentially increasing widths. * For usage with the variable-bin-width Histogram constructor. * @param xmin Lower limit of the first bin, needs to be > 0 * @param nbins Number of bins * @param base The base, needs to be > 1 */ static vector<double> LogBins(double xmin, unsigned nbins, double base = 10.0); public: /** * 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; //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription<Histogram> initHistogram; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Histogram & operator=(const Histogram &); private: /** * Global statistics of all data that went into the histogram. */ Statistic _globalStats; /** * Set to true if there is experimental data available */ bool _havedata; /** * One bin of the histogram. limit is the _lower_ bound of the bin. */ struct Bin { /** * Default constructor */ Bin() : contents(0.0), contentsSq(0.0), limit(0.0), data(0.0), dataerror(0.0), points(0) {} /** * Contents of the bin */ double contents; /** * Contents squared for the error */ double contentsSq; /** * The limit for the bin */ double limit; /** * The experimental value for the bin */ double data; /** * The error on the experimental value for the bin */ double dataerror; /** * The number of points in the bin */ long points; }; /** * The histogram bins. _bins[0] is the underflow, _bins.back() the overflow */ vector<Bin> _bins; /** * Prefactors to multiply the output by */ double _prefactor; /** * Total entry */ double _total; public: /** * The vector of bins */ vector<Bin> bins() const { return _bins; } }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Histogram. */ template <> struct BaseClassTrait<Herwig::Histogram,1> { /** Typedef of the first base class of Histogram. */ typedef Herwig::Statistic NthBase; }; /** This template specialization informs ThePEG about the name of * the Histogram class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::Histogram> : public ClassTraitsBase<Herwig::Histogram> { /** Return a platform-independent class name */ static string className() { return "Herwig::Histogram"; } }; /** @endcond */ } #endif /* HERWIG_Histogram_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/Histogram.cc����������������������������������������������������������0000644�0001750�0001750�00000050474�11754721363�021215� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Histogram.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the Histogram class. // #include "Histogram.h" #include "HerwigStrategy.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Handlers/EventHandler.h" using namespace Herwig; IBPtr Histogram::clone() const { return new_ptr(*this); } IBPtr Histogram::fullclone() const { return new_ptr(*this); } NoPIOClassDescription<Histogram> Histogram::initHistogram; // Definition of the static class description member. void Histogram::Init() { static ClassDocumentation<Histogram> documentation ("The Histogram class implements a simple histogram include data" " points for comparision with experimental results."); } void Histogram::rivetOutput(ostream & out, string histogramname, string analysisname, string title, string xlabel, string ylabel, bool rawcount, double multiplicator) const { // total number of histogram entries double numPoints = static_cast<double>(_total); if (numPoints == 0) numPoints += 1.0; // collect y values and errors vector<double> yvalues; vector<double> yerrors; const unsigned int lastBinIndex = _bins.size() - 2; for (size_t ix = 1; ix <= lastBinIndex; ++ix) { const double delta = _bins[ix+1].limit - _bins[ix].limit; double factor = rawcount ? _prefactor * multiplicator : _prefactor * multiplicator / (numPoints * delta); const double value = factor * _bins[ix].contents; const double error = factor * sqrt(_bins[ix].contentsSq); yvalues.push_back(value); yerrors.push_back(error); } // file header out << "## " << numPoints << " entries, mean +- sigma = " << _globalStats.mean() << " +- " << _globalStats.stdDev() << "\n"; out << "## xlo xhi y yerr\n" ; out << "##\n"; out << "# BEGIN HISTOGRAM /" << analysisname << "/" << histogramname << "\n"; out << "AidaPath=/" << analysisname << "/" << histogramname << "\n"; if ( title != string() ) out << "Title=" << title << "\n"; if ( xlabel != string() ) out << "XLabel=" << xlabel << "\n"; if ( ylabel != string() ) out << "YLabel=" << ylabel << "\n"; // histogram data for (size_t i = 0; i < yvalues.size(); ++i) { out << _bins[i+1].limit << "\t" << _bins[i+2].limit << "\t" << yvalues[i] << "\t" << yerrors[i] << "\n"; } // footer out << "# END HISTOGRAM\n"; out << "\n"; } void Histogram::topdrawOutput(ostream & out, unsigned int flags, string colour, string title, string titlecase, string left, string leftcase, string bottom, string bottomcase ) const { using namespace HistogramOptions; bool frame = ( flags & Frame ) == Frame; bool errorbars = ( flags & Errorbars ) == Errorbars; bool xlog = ( flags & Xlog ) == Xlog; bool ylog = ( flags & Ylog ) == Ylog; bool smooth = ( flags & Smooth ) == Smooth; bool rawcount = ( flags & Rawcount ) == Rawcount; // output the title info if needed if(frame) { out << "NEW FRAME\n"; if(_havedata) out << "SET WINDOW X 1.6 8 Y 3.5 9\n"; else out << "SET WINDOW X 1.6 8 Y 1.6 9\n"; out << "SET FONT DUPLEX\n"; out << "TITLE TOP \"" << title << "\"\n"; out << "CASE \"" << titlecase << "\"\n"; out << "TITLE LEFT \"" << left << "\"\n"; out << "CASE \"" << leftcase << "\"\n"; out << (errorbars ? "SET ORDER X Y DX DY \n" : "SET ORDER X Y DX\n"); if (HerwigStrategy::version != "") { out << "TITLE RIGHT \"" << HerwigStrategy::version << "\"\n"; out << "CASE \"\"\n"; } if(_havedata) out << "SET AXIS BOTTOM OFF\n"; else { out << "TITLE BOTTOM \"" << bottom << "\"\n"; out << "CASE \"" << bottomcase << "\"\n"; } } // scales if(xlog && frame) out << "SET SCALE X LOG " << endl; if(ylog && frame) out << "SET SCALE Y LOG " << endl; // set the x limits const unsigned int lastDataBinIndx = _bins.size()-2; if (frame) { out << "SET LIMITS X " << _bins[1].limit << " " << _bins[lastDataBinIndx+1].limit << endl; } // work out the y points vector<double> yout; double ymax=-9.8765e34,ymin=9.8765e34; double numPoints = _total; if (numPoints == 0) numPoints += 1.; for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { double delta = 0.5*(_bins[ix+1].limit-_bins[ix].limit); double factor = rawcount ? _prefactor : 0.5 * _prefactor / (numPoints * delta); double value = factor*_bins[ix].contents; yout.push_back(value); ymax=max(ymax, max(value, _bins[ix].data+_bins[ix].dataerror) ); if(yout.back()>0.) ymin=min(ymin,value); if(_bins[ix].data>0) ymin=min(ymin,_bins[ix].data); } if (ymin > 1e34) ymin = 1e-34; if (ymax < 1e-33) ymax = 1e-33; if (ymax < 10*ymin) ymin = 0.1*ymax; // make the y range slightly larger double fac=pow(ymax/ymin,0.1); ymax *= fac; ymin /= fac; if (ylog && frame) { out << "SET LIMITS Y " << ymin << " " << ymax << endl; } // the histogram from the event generator for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { double delta = 0.5*(_bins[ix+1].limit-_bins[ix].limit); double factor = rawcount ? _prefactor : 0.5 * _prefactor / (numPoints * delta); out << _bins[ix].limit+delta << '\t' << yout[ix-1] << '\t' << delta; if (errorbars) { out << '\t' << factor*sqrt(_bins[ix].contentsSq); } out << '\n'; } // N.B. in td smoothing only works for histograms with uniform binning. if(!smooth) { out << "HIST " << colour << endl; } else { out << "SMOOTH Y LEVEL 2 " << endl; out << "JOIN " << colour << endl; } if (_havedata) { // the real experimental data for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { double delta = 0.5*(_bins[ix+1].limit-_bins[ix].limit); out << _bins[ix].limit+delta << '\t' << _bins[ix].data << '\t' << delta; if (errorbars) out << '\t' << _bins[ix].dataerror; out << '\n'; } out << "PLOT " << endl; out << "SET WINDOW X 1.6 8 Y 2.5 3.5\n"; out << "SET LIMITS X " << _bins[1].limit << " " << _bins[lastDataBinIndx+1].limit << "\n"; double ymax=0.; out << _bins[1].limit << "\t" << _bins[1].dataerror/_bins[1].data << "\n"; for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { double delta = 0.5*(_bins[ix+1].limit-_bins[ix].limit); if(_bins[ix].data!=0.) { if(_bins[ix].dataerror/_bins[ix].data>ymax) ymax=_bins[ix].dataerror/_bins[ix].data; out << _bins[ix].limit+delta << '\t' << _bins[ix].dataerror/_bins[ix].data << '\n'; } else { out << _bins[ix].limit+delta << '\t' << 1. << '\n'; } } if(_bins[lastDataBinIndx].data!=0.) { out << _bins[lastDataBinIndx+1].limit << "\t" << _bins[lastDataBinIndx].dataerror/_bins[lastDataBinIndx].data << "\n"; out << _bins[lastDataBinIndx+1].limit << "\t" <<-_bins[lastDataBinIndx].dataerror/_bins[lastDataBinIndx].data << "\n"; } else { out << _bins[lastDataBinIndx+1].limit << "\t" << 1. << "\n"; out << _bins[lastDataBinIndx+1].limit << "\t" << -1. << "\n"; } for(unsigned int ix=lastDataBinIndx;ix>=1;--ix) { double delta = 0.5*(_bins[ix+1].limit-_bins[ix].limit); if(_bins[ix].data!=0.) { out << _bins[ix].limit+delta << '\t' << -_bins[ix].dataerror/_bins[ix].data << '\n'; } else { out << _bins[ix].limit+delta << '\t' << -1. << '\n'; } } if(_bins[1].data!=0.) { out << _bins[1].limit << "\t" << -_bins[1].dataerror/_bins[1].data << "\n"; } else { out << _bins[1].limit << "\t" << -1. << "\n"; } out << "set scale y lin\n"; out << "set limits y " << -ymax << " " << ymax << "\n"; out << "set fill full\n"; out << "join yellow fill yellow\n"; for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { double delta = 0.5*(_bins[ix+1].limit-_bins[ix].limit); if(_bins[ix].data!=0.) { out << _bins[ix].limit+delta << "\t" << (yout[ix-1]-_bins[ix].data)/_bins[ix].data << "\n"; } else if(_bins[ix].dataerror!=0.) { out << _bins[ix].limit+delta << "\t" << (yout[ix-1]-_bins[ix].data)/_bins[ix].dataerror << "\n"; } else { out << _bins[ix].limit+delta << "\t" << 0. << "\n"; } } out << "join\n"; out << "SET WINDOW X 1.6 8 Y 1.6 2.5\n"; out << "SET LIMITS X " << _bins[1].limit << " " << _bins[lastDataBinIndx+1].limit << "\n"; out << "SET AXIS BOTTOM ON\n"; out << "TITLE BOTTOM \"" << bottom << "\"\n"; out << "CASE \"" << bottomcase << "\"\n"; ymax =0.; double ymin=0.; for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { double delta = 0.5*(_bins[ix+1].limit-_bins[ix].limit); double error = sqrt(sqr(0.5*sqrt(_bins[ix].contentsSq)/(delta*numPoints))+ sqr(_bins[ix].dataerror)); double point=(yout[ix-1]-_bins[ix].data)/error; if(point<ymin) ymin=point; if(point>ymax) ymax=point; out << _bins[ix].limit+delta << '\t' << point << '\n'; } out << "set limits y " << ymin << " " << ymax << "\n"; out << "JOIN" << endl; } } double Histogram::dataNorm() const { double norm(0.0); if (_havedata) { const unsigned int lastDataBinIndx = _bins.size()-2; for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { double delta = _bins[ix+1].limit-_bins[ix].limit; double value = _bins[ix].data; norm += delta*value; } } else { norm = -1.0; } return norm; } unsigned int Histogram::visibleEntries() const { unsigned int numPoints(0); const unsigned int lastDataBinIndx = _bins.size()-2; for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { numPoints += static_cast<unsigned int>( _bins[ix].contents ); } return numPoints; } void Histogram::simpleOutput(ostream & out, bool errorbars, bool normdata) { // simple ascii output (eg for gnuplot) // work out the y points vector<double> yout; unsigned int numPoints = visibleEntries(); if (numPoints == 0) ++numPoints; double datanorm(1.0); double chisq(0.0), minfrac(0.05); unsigned int ndof(0); if (_havedata) { if (normdata) datanorm = dataNorm(); normaliseToData(); chiSquared(chisq, ndof, minfrac); } prefactor(1.0); const unsigned int lastDataBinIndx = _bins.size()-2; for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { double delta = 0.5*(_bins[ix+1].limit-_bins[ix].limit); double value = 0.5*_prefactor*_bins[ix].contents / (delta*numPoints); yout.push_back(value); } out << "# " << numPoints << " entries, mean +- sigma = " << _globalStats.mean() << " +- " << _globalStats.stdDev() << "\n"; if (_havedata) { out << "# chi^2/dof = " << chisq << "/" << ndof << " = " << chisq/double(ndof) << " (min err = " << minfrac << ")\n"; if (datanorm) { out << "# data normalised by factor " << datanorm << "\n"; } } out << "# xlo xhi ynorm " << (errorbars ? "ynorm_err " : "") << (_havedata ? "data " : "") << (_havedata && errorbars ? "dataerr " : "") << "y_entr\n"; // the histogram from the event generator for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { double delta = 0.5*(_bins[ix+1].limit-_bins[ix].limit); out << _bins[ix].limit << " " << _bins[ix+1].limit << " " << yout[ix-1]; if (errorbars) { out << " " << 0.5*sqrt(_bins[ix].contentsSq)/(delta*numPoints); } if (_havedata) { out << " " << _bins[ix].data/datanorm; if (errorbars) out << " " << _bins[ix].dataerror/datanorm; } out << " " << _bins[ix].contents << '\n'; } } vector<double> Histogram::dumpBins() const { vector<double> bincontents(_bins.size()); for (size_t i=0; i < _bins.size(); ++i) bincontents[i] = _bins[i].contents; return bincontents; } Histogram Histogram::ratioWith(const Histogram & h2) const { const size_t numBins = _bins.size(); assert( numBins > 2 && numBins == h2._bins.size()); Histogram ratio(*this); for (size_t i=0; i < numBins; ++i) { assert(_bins[i].limit == h2._bins[i].limit); if (h2._bins[i].contents > 0.0) ratio._bins[i].contents /= h2._bins[i].contents; else ratio._bins[i].contents = 0.0; } return ratio; } void Histogram::normaliseToData() { double numer(0.),denom(0.); double numPoints = _total; for(unsigned int ix=1;ix<_bins.size()-1;++ix) { double delta = 0.5*(_bins[ix+1].limit-_bins[ix].limit); double value = 0.5*_bins[ix].contents / (delta*numPoints); if(_bins[ix].dataerror>0.) { double var = sqr(_bins[ix].dataerror); numer += _bins[ix].data * value/var; denom += sqr(value)/var; } } _prefactor = numer/denom; } void Histogram::chiSquared(double & chisq, unsigned int & ndegrees, double minfrac) const { chisq =0.; ndegrees=0; double numPoints = _total; for(unsigned int ix=1;ix<_bins.size()-1;++ix) { double delta = 0.5*(_bins[ix+1].limit-_bins[ix].limit); double value = 0.5*_prefactor*_bins[ix].contents / (delta*numPoints); double error = _bins[ix].dataerror; if(error>0.) { if(abs(error/_bins[ix].data) < minfrac) error = minfrac*_bins[ix].data; double var=sqr(error) + _bins[ix].contentsSq * sqr(0.5*_prefactor / (delta*numPoints)); chisq += sqr(_bins[ix].data - value) / var; ++ndegrees; } } } void Histogram::normaliseToCrossSection() { double numPoints = _total; if (numPoints == 0) numPoints += 1.; _prefactor=CurrentGenerator::current().eventHandler()->histogramScale()* numPoints/nanobarn; } void Histogram::topdrawOutputAverage(ostream & out, bool frame, bool errorbars, bool xlog, bool ylog, string colour, string title, string titlecase, string left, string leftcase, string bottom, string bottomcase) const { // output the title info if needed if(frame) { out << "NEW FRAME\n"; out << "SET FONT DUPLEX\n"; out << "TITLE TOP \"" << title << "\"\n"; out << "CASE \"" << titlecase << "\"\n"; out << "TITLE LEFT \"" << left << "\"\n"; out << "CASE \"" << leftcase << "\"\n"; out << "TITLE BOTTOM \"" << bottom << "\"\n"; out << "CASE \"" << bottomcase << "\"\n"; if (errorbars) out << "SET ORDER X Y DX DY \n"; else out << "SET ORDER X Y DX\n"; } // scales if(xlog && frame) out << "SET SCALE X LOG " << endl; if(ylog && frame) out << "SET SCALE Y LOG " << endl; // set the x limits const unsigned int lastDataBinIndx = _bins.size()-2; if (xlog && frame) { out << "SET LIMITS X " << _bins[1].limit << " " << _bins[lastDataBinIndx+1].limit << endl; } // work out the y points vector<double> yout; double ymax=-9.8765e34,ymin=9.8765e34; unsigned int numPoints = _globalStats.numberOfPoints(); if (numPoints == 0) ++numPoints; for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { double value = _prefactor*_bins[ix].contents / _bins[ix].points; yout.push_back(value); ymax=max(ymax, max(value, _bins[ix].data+_bins[ix].dataerror) ); if(yout.back()>0.) ymin=min(ymin,value); if(_bins[ix].data>0) ymin=min(ymin,_bins[ix].data); } if (ymin > 1e34) ymin = 1e-34; if (ymax < 1e-33) ymax = 1e-33; if (ymax < 10*ymin) ymin = 0.1*ymax; if (ylog && frame) { out << "SET LIMITS Y " << ymin << " " << ymax << endl; } // the histogram from the event generator for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { double delta = 0.5*(_bins[ix+1].limit-_bins[ix].limit); out << _bins[ix].limit+delta << '\t' << yout[ix-1] << '\t' << delta; if (errorbars) { out << '\t' << 0.5*sqrt(_bins[ix].contentsSq)/(delta*numPoints); } out << '\n'; } out << "HIST " << colour << endl; if (_havedata) { // the real experimental data for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { double delta = 0.5*(_bins[ix+1].limit-_bins[ix].limit); out << _bins[ix].limit+delta << '\t' << _bins[ix].data << '\t' << delta; if (errorbars) { out << '\t' << _bins[ix].dataerror; } out << '\n'; } out << "PLOT " << endl; } } vector<double> Histogram::LogBins(double xmin, unsigned nbins, double base) { vector<double> limits; for (unsigned e = 0; e <= nbins; e++) limits.push_back(xmin * pow(base, (int)e)); return limits; } void Histogram::topdrawMCatNLO(ostream & out, unsigned int flags, string, string title ) const { using namespace HistogramOptions; // bool frame = ( flags & Frame ) == Frame; bool errorbars = ( flags & Errorbars ) == Errorbars; // bool xlog = ( flags & Xlog ) == Xlog; bool ylog = ( flags & Ylog ) == Ylog; // bool smooth = ( flags & Smooth ) == Smooth; // bool rawcount = ( flags & Rawcount ) == Rawcount; double myFactor = _prefactor / _total * 1000.; // output the title info if needed out << " ( 22-Apr-10 18:28\n\n"; out << " NEW PLOT\n\n\n"; out << " ( SET FONT DUPLEX\n"; out << " SET TITLE SIZE 2\n"; out << " TITLE 12.8 9 ANGLE -90 \" MLM 22-Apr-10 18:28\"\n"; out << " ( SET FONT DUPLEX\n"; out << " SET TITLE SIZE -1.2247\n"; out << " SET LABEL SIZE -1.2247\n"; out << " SET TICKS TOP OFF SIZE 0.0245\n"; out << " SET WINDOW X 1.5000 TO 12.000\n"; out << " SET WINDOW Y 1.0000 TO 8.7917\n"; out << " TITLE 1.5000 8.9617 \" "<<title<<"\"\n"; out << " TITLE 9.8719 8.6217 \" INT= "<<visibleEntries()*myFactor<<"\"\n"; out << " TITLE 9.8719 8.4517 \" ENT= "<<visibleEntries()<<"\"\n"; out << " TITLE 9.8719 8.2817 \" OFL= 2.258E+01\"\n"; out << " SET ORD X Y \n"; out << " 9.8719 8.1117\n"; out << " 12.000 8.1117\n"; out << " JOIN TEXT\n"; out << " 9.8719 8.1117\n"; out << " 9.8719 8.7917\n"; out << " JOIN TEXT\n"; out << " SET TITLE SIZE -1.8371\n"; out << " TITLE BOTTOM \""<<title<<"\"\n"; out << " TITLE 0.42188 7.37500 ANGLE 90 \" \"\n"; if (ylog) { out << " SET SCALE Y LOG\n"; } else { out << " SET SCALE Y LIN\n"; } out << " SET TICKS TOP OFF\n"; // set the x limits const unsigned int lastDataBinIndx = _bins.size()-2; out << " SET LIMITS X " << _bins[1].limit << " " << _bins[lastDataBinIndx+1].limit << endl; // work out the y points vector<double> yout; double ymax=-9.8765e34,ymin=9.8765e34; double numPoints = _total; if (numPoints == 0) numPoints += 1.; for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { // no differential dist & in pb double factor = _prefactor / numPoints *1000.; double value = factor*_bins[ix].contents; yout.push_back(value); ymax=max(ymax, max(value, _bins[ix].data+_bins[ix].dataerror) ); if(yout.back()>0.) ymin=min(ymin,value); if(_bins[ix].data>0) ymin=min(ymin,_bins[ix].data); } if (ymin > 1e34) ymin = 1e-34; if (ymax < 1e-33) ymax = 1e-33; if (ymax < 10*ymin) ymin = 0.1*ymax; // make the y range slightly larger double fac=pow(ymax/ymin,0.1); ymax *= fac; ymin /= fac; //if (ylog) { // out << " SET LIMITS Y " << ymin << " " << ymax << endl; //} out << " SET LIMITS Y " << ymin << " " << ymax << endl; out << " SET ORDER X Y DY\n"; out << " ( "<<title<<"\n"; out << " ( INT= "<<visibleEntries()*myFactor<<" ENTRIES= "<<visibleEntries()*myFactor<<"\n"; // the histogram from the event generator for(unsigned int ix=1; ix<=lastDataBinIndx; ++ix) { double delta = 0.5*(_bins[ix+1].limit-_bins[ix].limit); //double factor = rawcount ? _prefactor : 0.5 * _prefactor / (numPoints * delta); // no differential distributions and in pb double factor = _prefactor / numPoints * 1000.; out << " "<<_bins[ix].limit+delta << " " << yout[ix-1] << " " << delta; if (errorbars) { out << " " << factor*sqrt(_bins[ix].contentsSq); } out << '\n'; } out << " HIST SOLID\n"; out << " PLOT\n"; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/GaussianIntegrator.tcc������������������������������������������������0000644�0001750�0001750�00000007124�11754474775�023263� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // GaussianIntegrator.tcc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined templated member // functions of the GaussianIntegrator class. // namespace Herwig { using namespace ThePEG; template <class T> inline typename BinaryOpTraits<typename T::ValType, typename T::ArgType>::MulT GaussianIntegrator::value(const T & function, const typename T::ArgType lower, const typename T::ArgType upper) const { typedef typename T::ValType ValType; typedef typename T::ArgType ArgType; const ValType ValUnit = TypeTraits<ValType>::baseunit; const ArgType ArgUnit = TypeTraits<ArgType>::baseunit; // vector for the limits of the bin vector<double> lowerlim,upperlim; // start with the whole interval as 1 bin lowerlim.push_back(lower/ArgUnit);upperlim.push_back(upper/ArgUnit); // set the minimum bin width double xmin=_binwidth*abs(upper-lower)/ArgUnit; // counters for the number of function evals int neval=0; // and number of bad intervals int nbad=0; // the output value double output=0.; // the loop for the evaluation double mid,wid; unsigned int ibin,ix=0,iorder; double testvalue,value,tolerance; do { // the bin we are doing (always the last one in the list) ibin = lowerlim.size()-1; // midpoint and width of the bin mid=0.5*(upperlim[ibin]+lowerlim[ibin]); wid=0.5*(upperlim[ibin]-lowerlim[ibin]); value=0.; iorder=0; // compute a trail value using sixth order GQ for(ix=0;ix<_weights[0].size();++ix) { value+=_weights[0][ix] *( function((mid+wid*_abscissae[0][ix])*ArgUnit) +function((mid-wid*_abscissae[0][ix])*ArgUnit) )/ValUnit; ++neval; if(neval>_maxeval) CurrentGenerator::log() << "Error in Gaussian Integrator: Setting to zero" << endl; } value *=wid; // compute more accurate answers using higher order GQ do { // use the next order of quadrature testvalue=value; ++iorder; value=0.; for(ix=0;ix<_weights[iorder].size();++ix) { value+=_weights[iorder][ix]* ( function((mid+wid*_abscissae[iorder][ix])*ArgUnit) +function((mid-wid*_abscissae[iorder][ix])*ArgUnit) )/ValUnit; ++neval; if(neval>_maxeval) CurrentGenerator::log() << "Error in Gaussian Integrator: Setting to zero" << endl; } value *=wid; tolerance=max(_abserr,_relerr*abs(value)); } // keep going if possible and not accurate enough while(iorder<_weights.size()-1&&abs(testvalue-value)>tolerance); // now decide what to do // accept this value if(abs(testvalue-value)<tolerance) { output+=value; lowerlim.pop_back();upperlim.pop_back(); } // bin too small to redivide contribution set to zero else if(wid<xmin) { ++nbad; lowerlim.pop_back(); upperlim.pop_back(); } // otherwise split the bin into two else { // reset the limits for the bin upperlim[ibin]=mid; // set up a new bin lowerlim.push_back(mid); upperlim.push_back(mid+wid); } } // keep going if there's still some bins to evaluate while(lowerlim.size()>0); // output an error message if needed if(nbad!=0) CurrentGenerator::log() << "Error in GaussianIntegrator: Bad Convergence for " << nbad << "intervals" << endl; // return the answer return output * ValUnit * ArgUnit; } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/HerwigStrategy.h������������������������������������������������������0000644�0001750�0001750�00000004625�11754474775�022103� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HerwigStrategy.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2008-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_HerwigStrategy_H #define Herwig_HerwigStrategy_H // This is the declaration of the HerwigStrategy class. #include "ThePEG/Repository/Strategy.h" #include <string> namespace Herwig { using namespace ThePEG; /** * The HerwigStrategy class is a sub-class of the Strategy class, * simply implementing the correct citation for Herwig in the * ClassDocumentation interface. * * @see Strategy * */ class HerwigStrategy: public ThePEG::Strategy { public: /** * Standard Init function used to initialize the interface. */ static void Init(); /** * Freeform version string */ static std::string version; /** * Version string */ virtual const std::string versionstring() const { return version; } 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: /** * Describe concrete class without persistent data. */ static NoPIOClassDescription<HerwigStrategy> initHerwigStrategy; /** * Private and non-existent assignment operator. */ HerwigStrategy & operator=(const HerwigStrategy &); }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the base classes * of HerwigStrategy. */ template <> struct BaseClassTrait<Herwig::HerwigStrategy,1>: public ClassTraitsType { /** Typedef of the first base class of HerwigStrategy. */ typedef Strategy NthBase; }; /** This template specialization informs ThePEG about the name of the * HerwigStrategy class and the shared object where it is * defined. */ template <> struct ClassTraits<Herwig::HerwigStrategy>: public ClassTraitsBase<Herwig::HerwigStrategy> { /** Return a platform-independent class name */ static string className() { return "Herwig::HerwigStrategy"; } }; /** @endcond */ } #endif /* Herwig_HerwigStrategy_H */ �����������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/Interpolator.tcc������������������������������������������������������0000644�0001750�0001750�00000011724�11754474775�022135� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Interpolator.tcc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the Interpolator class. // #include "Interpolator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; template <typename ValT, typename ArgT> void Interpolator<ValT,ArgT>::persistentOutput(PersistentOStream & os) const { os << _xval << _fun << _order << ounit(_funit,TypeTraits<ValT>::baseunit) << ounit(_xunit,TypeTraits<ArgT>::baseunit); } template <typename ValT, typename ArgT> void Interpolator<ValT,ArgT>::persistentInput(PersistentIStream & is, int) { is >> _xval >> _fun >> _order >> iunit(_funit,TypeTraits<ValT>::baseunit) >> iunit(_xunit,TypeTraits<ArgT>::baseunit); } #define HERWIG_INTERPOLATOR_CLASSDESC(ValT,ArgT) \ /** \ * This template specialization registers the Interpolator with ThePEG \ */ \ template <> \ ClassDescription<Interpolator<ValT,ArgT> > \ Interpolator<ValT,ArgT>::initInterpolator \ = ClassDescription<Interpolator<ValT,ArgT> >(); \ template <typename ValT, typename ArgT> void Interpolator<ValT,ArgT>::Init() { static ClassDocumentation<Interpolator<ValT,ArgT> > documentation ("The Interpolator class is design to interpolate a table of values"); static Parameter<Interpolator<ValT,ArgT>,unsigned int> interfaceOrder ("Order", "Order of the interpolation", &Interpolator::_order, 3, 1, 10, false, false, Interface::limited); static ParVector<Interpolator<ValT,ArgT>,double> interfaceXValues ("XValues", "The x values for the interpolation", &Interpolator::_xval, -1, 0., 0, 0, false, false, Interface::nolimits); static ParVector<Interpolator<ValT,ArgT>,double> interfaceFunctionValues ("FunctionValues", "The function values for the interpolation", &Interpolator::_fun, -1, 0., 0, 0, false, false, Interface::nolimits); static Parameter<Interpolator<ValT,ArgT>,ValT> interfaceValueType ("ValueType", "The unit of the function values", &Interpolator<ValT,ArgT>::_funit, TypeTraits<ValT>::baseunit, 1.0*TypeTraits<ValT>::baseunit, 0*TypeTraits<ValT>::baseunit, 0*TypeTraits<ValT>::baseunit, false, true, Interface::nolimits); static Parameter<Interpolator<ValT,ArgT>,ArgT> interfaceArgType ("ArgType", "The unit of the function arguments", &Interpolator<ValT,ArgT>::_xunit, TypeTraits<ArgT>::baseunit, 1.0*TypeTraits<ArgT>::baseunit, 0*TypeTraits<ArgT>::baseunit, 0*TypeTraits<ArgT>::baseunit, false, true, Interface::nolimits); } template <typename ValT, typename ArgT> ValT Interpolator<ValT,ArgT>::operator ()(ArgT xpt) const { const double xpoint = xpt / _xunit; // size of the vectors unsigned int isize(_xval.size()); // workout the numer of points we need unsigned int m(std::min(_order,isize)),mp(m+1),ix,iy; // search for the point if the function increases int mid,iupp=isize,ilow=0; if(_xval[0]>_xval[_xval.size()-1]) { do { mid=(iupp+ilow)/2; if(xpoint>_xval[mid]){iupp=mid;} else{ilow=mid;} } while(iupp-ilow>1); } // search for the point if the function decreases else { do { mid=(iupp+ilow)/2; if(xpoint<_xval[mid]){iupp=mid;} else{ilow=mid;} } while(iupp-ilow>1); } // ilow is now the midpoint mid=ilow; // copy the re-ordered interpolation points // number of points unsigned int npoints(_order+2-_order%2),icopy,j(0); int iloc(0),i(0); do { icopy=mid+iloc; if(icopy>isize-1) npoints=mp; else { _copyx[j] = _xval[icopy]; _copyfun[j] = _fun [icopy]; ++j; } iloc=-iloc; if(iloc>=0){++iloc;} } while(j<npoints); // do this interpolation bool extra(npoints!=mp); for(ix=0;ix<m;++ix) { if(extra) { icopy=m-ix-1; _copyfun[m+1]=(_copyfun[m+1]-_copyfun[m-1])/(_copyx[m+1]-_copyx[icopy]); } i=m; for(iy=ix;iy<m;++iy) { icopy=i-ix-1; _copyfun[i]=(_copyfun[i]-_copyfun[i-1])/(_copyx[i]-_copyx[icopy]); --i; } } double sum(_copyfun[m]); if(extra) sum=0.5*(sum+_copyfun[m+1]); i=m-1; for(ix=0;ix<m;++ix) { sum=_copyfun[i]+(xpoint-_copyx[i])*sum; --i; } return sum * _funit; } ��������������������������������������������herwig++-2.6.0.orig/Utilities/GSLIntegrator.tcc�����������������������������������������������������0000644�0001750�0001750�00000006651�11754474775�022142� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // GSLIntegrator.tcc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined templated member // functions of the GSLIntegrator class. // using namespace Herwig; using namespace ThePEG; namespace { template <class T> struct param { //The integrand function const T & function; }; template<class T> double integrand(double x , void * p) { //Units of the argument and return type const typename T::ValType ValUnit = TypeTraits<typename T::ValType>::baseunit; const typename T::ArgType ArgUnit = TypeTraits<typename T::ArgType>::baseunit; const T & f = ((struct param<T> *)p)->function; return f(x * ArgUnit ) / ValUnit; } } namespace Herwig { using namespace ThePEG; template <class T> inline typename BinaryOpTraits<typename T::ValType, typename T::ArgType>::MulT GSLIntegrator::value(const T & fn, const typename T::ArgType lower, const typename T::ArgType upper) const { typename BinaryOpTraits<typename T::ValType, typename T::ArgType>::MulT error; return value(fn,lower,upper,error); } template <class T> inline typename BinaryOpTraits<typename T::ValType, typename T::ArgType>::MulT GSLIntegrator::value(const T & fn, const typename T::ArgType lower, const typename T::ArgType upper, typename BinaryOpTraits<typename T::ValType, typename T::ArgType>::MulT & error) const { typedef typename T::ValType ValType; typedef typename T::ArgType ArgType; const ValType ValUnit = TypeTraits<ValType>::baseunit; const ArgType ArgUnit = TypeTraits<ArgType>::baseunit; double result(0.), error2(0.); param<T> parameters = { fn }; gsl_function integrationFunction; integrationFunction.function = &integrand<T>; integrationFunction.params = &parameters; gsl_integration_workspace * workspace = gsl_integration_workspace_alloc(_nbins); //do integration //Want to check error messages ourselves gsl_error_handler_t * oldhandler = gsl_set_error_handler_off(); int status = gsl_integration_qags(&integrationFunction, lower/ArgUnit, upper/ArgUnit, _abserr, _relerr, _nbins, workspace, &result, &error2); if( status > 0 ) { CurrentGenerator::log() << "An error occurred in the GSL " "integration subroutine:\n"; switch( status ) { case GSL_EMAXITER: CurrentGenerator::log() << "The maximum number of subdivisions " "was exceeded.\n"; break; case GSL_EROUND: CurrentGenerator::log() << "Cannot reach tolerance because of " "roundoff error, or roundoff error was detected in the " "extrapolation table.\n"; break; case GSL_ESING: CurrentGenerator::log() << "A non-integrable singularity or " "other bad integrand behavior was found in the integration " "interval.\n"; break; case GSL_EDIVERGE: break; default: CurrentGenerator::log() << "A general error occurred with code " << status << '\n'; } result = 0.; } gsl_set_error_handler(oldhandler); gsl_integration_workspace_free(workspace); //fix units and return error = error2* ValUnit * ArgUnit; return result * ValUnit * ArgUnit; } } ���������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/Smearing.cc�����������������������������������������������������������0000644�0001750�0001750�00000002223�11754474775�021026� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Smearing.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the Smearing class. // #include "Smearing.h" #include "ThePEG/Repository/UseRandom.h" using namespace ThePEG; using namespace Herwig; bool Smearing::gaussianSmearing(const double mean, const double sigma, double & x ) { double xN01, trash; if ( ! azimuthalSmearing( -2.0*log( UseRandom::rnd() ), xN01, trash ) ) return false; x = mean + sigma*xN01; return true; } bool Smearing::azimuthalSmearing(const double rho, double & vx, double & vy ) { double cosine = 2.0 * UseRandom::rnd() - 1.0; double sine = 2.0 * UseRandom::rnd() - 1.0; double cs = sqr(cosine) + sqr(sine); if ( cs > 1.0 || cs <= 0.0 ) return false; vx = ( sqr(cosine) - sqr(sine) ) * rho/cs; vy = 2.0 * cosine * sine * rho/cs; return true; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Utilities/HerwigStrategy.cc�����������������������������������������������������0000644�0001750�0001750�00000002474�11754474775�022241� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HerwigStrategy.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2008-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // This is the implementation of the non-inlined, non-templated member // functions of the HerwigStrategy class. // #include "HerwigStrategy.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/ParticleData.h" // sets the static version info string 'HerwigStrategy::version' #include "versionstring.h" using namespace Herwig; IBPtr HerwigStrategy::clone() const { return new_ptr(*this); } IBPtr HerwigStrategy::fullclone() const { return new_ptr(*this); } NoPIOClassDescription<HerwigStrategy> HerwigStrategy::initHerwigStrategy; void HerwigStrategy::Init() { static ClassDocumentation<HerwigStrategy> interfaceDescription ("The default strategy for Herwig.", "Herwig++~\\cite{Bahr:2008pv}", "%\\cite{Bahr:2008pv}\n" "\\bibitem{Bahr:2008pv}\n" " M.~Bahr {\\it et al.},\n" " ``Herwig++ Physics and Manual,''\n" " Eur.\\ Phys.\\ J.\\ C {\\bf 58} (2008) 639\n" " [arXiv:0803.0883 [hep-ph]].\n" " %%CITATION = EPHJA,C58,639;%%\n" ); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Config/�������������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464203�016170� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Config/missing������������������������������������������������������������������0000755�0001750�0001750�00000023703�11756461675�017606� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2012-01-06.18; # UTC # Copyright (C) 1996-2012 Free Software Foundation, Inc. # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, 'missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle 'PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file 'aclocal.m4' autoconf touch file 'configure' autoheader touch file 'config.h.in' autom4te touch the output file, or create a stub one automake touch all 'Makefile.in' files bison create 'y.tab.[ch]', if possible, from existing .[ch] flex create 'lex.yy.c', if possible, from existing .c help2man touch the output file lex create 'lex.yy.c', if possible, from existing .c makeinfo touch the output file yacc create 'y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to <bug-automake@gnu.org>." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running '$TOOL --version' or '$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: '$1' is $msg. You should only need it if you modified 'acinclude.m4' or '${configure_ac}'. You might want to install the Automake and Perl packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: '$1' is $msg. You should only need it if you modified '${configure_ac}'. You might want to install the Autoconf and GNU m4 packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: '$1' is $msg. You should only need it if you modified 'acconfig.h' or '${configure_ac}'. You might want to install the Autoconf and GNU m4 packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: '$1' is $msg. You should only need it if you modified 'Makefile.am', 'acinclude.m4' or '${configure_ac}'. You might want to install the Automake and Perl packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: '$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get '$1' as part of Autoconf from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: '$1' $msg. You should only need it if you modified a '.y' file. You may need the Bison package in order for those modifications to take effect. You can get Bison from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: '$1' is $msg. You should only need it if you modified a '.l' file. You may need the Flex package in order for those modifications to take effect. You can get Flex from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: '$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the Help2man package in order for those modifications to take effect. You can get Help2man from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: '$1' is $msg. You should only need it if you modified a '.texi' or '.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy 'make' (AIX, DU, IRIX). You might want to install the Texinfo package or the GNU make package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; *) echo 1>&2 "\ WARNING: '$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the 'README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing '$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: �������������������������������������������������������������herwig++-2.6.0.orig/Config/depcomp������������������������������������������������������������������0000755�0001750�0001750�00000050552�11756461702�017555� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2012-03-27.16; # UTC # Copyright (C) 1999-2012 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to <bug-automake@gnu.org>. EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # A tabulation character. tab=' ' # A newline character. nl=' ' if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' "$nl" < "$tmpdepfile" | ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependent.h'. # Do two passes, one to just change these to # '$object: dependent.h' and one to simply 'dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. # However on # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\': # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... # tcc 0.9.26 (FIXME still under development at the moment of writing) # will emit a similar output, but also prepend the continuation lines # with horizontal tabulation characters. "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form 'foo.o: dependent.h', # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. # Do two passes, one to just change these to # '$object: dependent.h' and one to simply 'dependent.h:'. sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ < "$tmpdepfile" > "$depfile" sed ' s/[ '"$tab"'][ '"$tab"']*/ /g s/^ *// s/ *\\*$// s/^[^:]*: *// /^$/d /:$/d s/$/ :/ ' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test "$stat" = 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' "$nl" < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: ������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Config/ar-lib�������������������������������������������������������������������0000755�0001750�0001750�00000013302�11756461675�017275� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Wrapper for Microsoft lib.exe me=ar-lib scriptversion=2012-03-01.08; # UTC # Copyright (C) 2010-2012 Free Software Foundation, Inc. # Written by Peter Rosin <peda@lysator.liu.se>. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to <bug-automake@gnu.org> or send patches to # <automake-patches@gnu.org>. # func_error message func_error () { echo "$me: $1" 1>&2 exit 1 } file_conv= # func_file_conv build_file # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv in mingw) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin) file=`cygpath -m "$file" || echo "$file"` ;; wine) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_at_file at_file operation archive # Iterate over all members in AT_FILE performing OPERATION on ARCHIVE # for each of them. # When interpreting the content of the @FILE, do NOT use func_file_conv, # since the user would need to supply preconverted file names to # binutils ar, at least for MinGW. func_at_file () { operation=$2 archive=$3 at_file_contents=`cat "$1"` eval set x "$at_file_contents" shift for member do $AR -NOLOGO $operation:"$member" "$archive" || exit $? done } case $1 in '') func_error "no command. Try '$0 --help' for more information." ;; -h | --h*) cat <<EOF Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...] Members may be specified in a file named with @FILE. EOF exit $? ;; -v | --v*) echo "$me, version $scriptversion" exit $? ;; esac if test $# -lt 3; then func_error "you must specify a program, an action and an archive" fi AR=$1 shift while : do if test $# -lt 2; then func_error "you must specify a program, an action and an archive" fi case $1 in -lib | -LIB \ | -ltcg | -LTCG \ | -machine* | -MACHINE* \ | -subsystem* | -SUBSYSTEM* \ | -verbose | -VERBOSE \ | -wx* | -WX* ) AR="$AR $1" shift ;; *) action=$1 shift break ;; esac done orig_archive=$1 shift func_file_conv "$orig_archive" archive=$file # strip leading dash in $action action=${action#-} delete= extract= list= quick= replace= index= create= while test -n "$action" do case $action in d*) delete=yes ;; x*) extract=yes ;; t*) list=yes ;; q*) quick=yes ;; r*) replace=yes ;; s*) index=yes ;; S*) ;; # the index is always updated implicitly c*) create=yes ;; u*) ;; # TODO: don't ignore the update modifier v*) ;; # TODO: don't ignore the verbose modifier *) func_error "unknown action specified" ;; esac action=${action#?} done case $delete$extract$list$quick$replace,$index in yes,* | ,yes) ;; yesyes*) func_error "more than one action specified" ;; *) func_error "no action specified" ;; esac if test -n "$delete"; then if test ! -f "$orig_archive"; then func_error "archive not found" fi for member do case $1 in @*) func_at_file "${1#@}" -REMOVE "$archive" ;; *) func_file_conv "$1" $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $? ;; esac done elif test -n "$extract"; then if test ! -f "$orig_archive"; then func_error "archive not found" fi if test $# -gt 0; then for member do case $1 in @*) func_at_file "${1#@}" -EXTRACT "$archive" ;; *) func_file_conv "$1" $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $? ;; esac done else $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member do $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $? done fi elif test -n "$quick$replace"; then if test ! -f "$orig_archive"; then if test -z "$create"; then echo "$me: creating $orig_archive" fi orig_archive= else orig_archive=$archive fi for member do case $1 in @*) func_file_conv "${1#@}" set x "$@" "@$file" ;; *) func_file_conv "$1" set x "$@" "$file" ;; esac shift shift done if test -n "$orig_archive"; then $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $? else $AR -NOLOGO -OUT:"$archive" "$@" || exit $? fi elif test -n "$list"; then if test ! -f "$orig_archive"; then func_error "archive not found" fi $AR -NOLOGO -LIST "$archive" || exit $? fi ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Config/config.sub���������������������������������������������������������������0000755�0001750�0001750�00000105176�11756461675�020177� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. timestamp='2012-02-10' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see <http://www.gnu.org/licenses/>. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to <config-patches@gnu.org>. Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to <config-patches@gnu.org>." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ | open8 \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i386-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Config/install-sh���������������������������������������������������������������0000755�0001750�0001750�00000033255�11756461675�020216� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Config/config.h.in��������������������������������������������������������������0000644�0001750�0001750�00000003636�11756461674�020234� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* Config/config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the <dlfcn.h> header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the <inttypes.h> header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `gsl' library (-lgsl). */ #undef HAVE_LIBGSL /* Define to 1 if you have the `gslcblas' library (-lgslcblas). */ #undef HAVE_LIBGSLCBLAS /* Define to 1 if you have the `m' library (-lm). */ #undef HAVE_LIBM /* Define to 1 if you have the `ThePEG' library (-lThePEG). */ #undef HAVE_LIBTHEPEG /* Define to 1 if you have the <memory.h> header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the <stdlib.h> header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the <strings.h> header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the <string.h> header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the <sys/stat.h> header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the <sys/types.h> header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION ��������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Config/ltmain.sh����������������������������������������������������������������0000644�0001750�0001750�00001051522�11756461671�020024� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� # libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) # --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages # --version print version information # -h, --help, --help-all print short, long, or detailed help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. When passed as first option, # `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.4.2 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to <bug-libtool@gnu.org>. # GNU libtool home page: <http://www.gnu.org/software/libtool/>. # General help using GNU software: <http://www.gnu.org/gethelp/>. PROGRAM=libtool PACKAGE=libtool VERSION=2.4.2 TIMESTAMP="" package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # NLS nuisances: We save the old values to restore during execute mode. lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done LC_ALL=C LANGUAGE=C export LANGUAGE LC_ALL $lt_unset CDPATH # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_dirname may be replaced by extended shell implementation # func_basename file func_basename () { func_basename_result=`$ECHO "${1}" | $SED "$basename"` } # func_basename may be replaced by extended shell implementation # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` } # func_dirname_and_basename may be replaced by extended shell implementation # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname may be replaced by extended shell implementation # These SED scripts presuppose an absolute path with a trailing slash. pathcar='s,^/\([^/]*\).*$,\1,' pathcdr='s,^/[^/]*,,' removedotparts=':dotsl s@/\./@/@g t dotsl s,/\.$,/,' collapseslashes='s@/\{1,\}@/@g' finalslash='s,/*$,/,' # func_normal_abspath PATH # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. # value returned in "$func_normal_abspath_result" func_normal_abspath () { # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` while :; do # Processed it all yet? if test "$func_normal_abspath_tpath" = / ; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result" ; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_relative_path SRCDIR DSTDIR # generates a relative path from SRCDIR to DSTDIR, with a trailing # slash if non-empty, suitable for immediately appending a filename # without needing to append a separator. # value returned in "$func_relative_path_result" func_relative_path () { func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=${func_dirname_result} if test "x$func_relative_path_tlibdir" = x ; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test "x$func_stripname_result" != x ; then func_relative_path_result=${func_relative_path_result}/${func_stripname_result} fi # Normalisation. If bindir is libdir, return empty string, # else relative path ending with a slash; either way, target # file name can be directly appended. if test ! -z "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result/" func_relative_path_result=$func_stripname_result fi } # The name of this program: func_dirname_and_basename "$progpath" progname=$func_basename_result # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' # Sed substitution that converts a w32 file name or path # which contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname: ${opt_mode+$opt_mode: }$*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` done my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "$my_tmpdir" } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "$1" | $SED \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_tr_sh # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_version # Echo version message to standard output and exit. func_version () { $opt_debug $SED -n '/(C)/!b go :more /\./!{ N s/\n# / / b more } :go /^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $opt_debug $SED -n '/^# Usage:/,/^# *.*--help/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" echo $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help [NOEXIT] # Echo long help message to standard output and exit, # unless 'noexit' is passed as argument. func_help () { $opt_debug $SED -n '/^# Usage:/,/# Report bugs to/ { :print s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } /^# .* home page:/b print /^# General help using/b print ' < "$progpath" ret=$? if test -z "$1"; then exit $ret fi } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $opt_debug func_error "missing argument for $1." exit_cmd=exit } # func_split_short_opt shortopt # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. func_split_short_opt () { my_sed_short_opt='1s/^\(..\).*$/\1/;q' my_sed_short_rest='1s/^..\(.*\)$/\1/;q' func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` } # func_split_short_opt may be replaced by extended shell implementation # func_split_long_opt longopt # Set func_split_long_opt_name and func_split_long_opt_arg shell # variables after splitting LONGOPT at the `=' sign. func_split_long_opt () { my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^--[^=]*=//' func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` } # func_split_long_opt may be replaced by extended shell implementation exit_cmd=: magic="%%%MAGIC variable%%%" magic_exe="%%%MAGIC EXE variable%%%" # Global variables. nonopt= preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "${1}=\$${1}\${2}" } # func_append may be replaced by extended shell implementation # func_append_quoted var value # Quote VALUE and append to the end of shell variable VAR, separated # by a space. func_append_quoted () { func_quote_for_eval "${2}" eval "${1}=\$${1}\\ \$func_quote_for_eval_result" } # func_append_quoted may be replaced by extended shell implementation # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "${@}"` } # func_arith may be replaced by extended shell implementation # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` } # func_len may be replaced by extended shell implementation # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` } # func_lo2o may be replaced by extended shell implementation # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` } # func_xform may be replaced by extended shell implementation # func_fatal_configuration arg... # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_error ${1+"$@"} func_error "See the $PACKAGE documentation for more information." func_fatal_error "Fatal configuration error." } # func_config # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # Display the features supported by this script. func_features () { echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag tagname # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname="$1" re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf="/$re_begincf/,/$re_endcf/p" # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Option defaults: opt_debug=: opt_dry_run=false opt_config=false opt_preserve_dup_deps=false opt_features=false opt_finish=false opt_help=false opt_help_all=false opt_silent=: opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false # Parse options once, thoroughly. This comes as soon as possible in the # script to make things like `--version' happen as quickly as we can. { # this just eases exit handling while test $# -gt 0; do opt="$1" shift case $opt in --debug|-x) opt_debug='set -x' func_echo "enabling shell trace mode" $opt_debug ;; --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) opt_config=: func_config ;; --dlopen|-dlopen) optarg="$1" opt_dlopen="${opt_dlopen+$opt_dlopen }$optarg" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) opt_features=: func_features ;; --finish) opt_finish=: set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help_all=: opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_mode="$optarg" case $optarg in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_silent=false func_append preserve_args " $opt" ;; --no-warning|--no-warn) opt_warning=false func_append preserve_args " $opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" ;; --silent|--quiet) opt_silent=: func_append preserve_args " $opt" opt_verbose=false ;; --verbose|-v) opt_verbose=: func_append preserve_args " $opt" opt_silent=false ;; --tag) test $# = 0 && func_missing_arg $opt && break optarg="$1" opt_tag="$optarg" func_append preserve_args " $opt $optarg" func_enable_tag "$optarg" shift ;; -\?|-h) func_usage ;; --help) func_help ;; --version) func_version ;; # Separate optargs to long options: --*=*) func_split_long_opt "$opt" set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-n*|-v*) func_split_short_opt "$opt" set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) set dummy "$opt" ${1+"$@"}; shift; break ;; esac done # Validate options: # save first non-option argument if test "$#" -gt 0; then nonopt="$opt" shift fi # preserve --debug test "$opt_debug" = : || func_append preserve_args " --debug" case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test "$opt_mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$opt_mode' for more information." } # Bail if the options were screwed $exit_cmd $EXIT_FAILURE } ## ----------- ## ## Main. ## ## ----------- ## # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case "$lt_sysroot:$1" in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result="=$func_stripname_result" ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T <<EOF # $write_libobj - a libtool object file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # Name of the PIC object. pic_object=$write_lobj # Name of the non-PIC object non_pic_object=$write_oldobj EOF $MV "${write_libobj}T" "${write_libobj}" } } ################################################## # FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # ################################################## # func_convert_core_file_wine_to_w32 ARG # Helper function used by file name conversion functions when $build is *nix, # and $host is mingw, cygwin, or some other w32 environment. Relies on a # correctly configured wine environment available, with the winepath program # in $build's $PATH. # # ARG is the $build file name to be converted to w32 format. # Result is available in $func_convert_core_file_wine_to_w32_result, and will # be empty on error (or when ARG is empty) func_convert_core_file_wine_to_w32 () { $opt_debug func_convert_core_file_wine_to_w32_result="$1" if test -n "$1"; then # Unfortunately, winepath does not exit with a non-zero error code, so we # are forced to check the contents of stdout. On the other hand, if the # command is not found, the shell will set an exit code of 127 and print # *an error message* to stdout. So we must check for both error code of # zero AND non-empty stdout, which explains the odd construction: func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$lt_sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $opt_debug # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result="" if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result" ; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $opt_debug if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $opt_debug # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $opt_debug if test -z "$2" && test -n "$1" ; then func_error "Could not determine host file name corresponding to" func_error " \`$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result="$1" fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $opt_debug if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " \`$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result="$3" fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $opt_debug case $4 in $1 ) func_to_host_path_result="$3$func_to_host_path_result" ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via `$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $opt_debug $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $opt_debug case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result="$1" } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result="$func_convert_core_msys_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $opt_debug func_to_host_file_result="$1" if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result="$func_cygpath_result" fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via `$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $opt_debug if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd="func_convert_path_${func_stripname_result}" fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $opt_debug func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result="$1" } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_msys_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $opt_debug func_to_host_path_result="$1" if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result="$func_cygpath_result" func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_mode_compile arg... func_mode_compile () { $opt_debug # Get the compilation command and the source file. base_compile= srcfile="$nonopt" # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg="$arg" arg_mode=normal ;; target ) libobj="$arg" arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify \`-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" func_append_quoted lastarg "$arg" done IFS="$save_ifs" func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg="$srcfile" srcfile="$arg" ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj="$func_basename_result" } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$opt_mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$opt_mode'" ;; esac echo $ECHO "Try \`$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test "$opt_help" = :; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | sed -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | sed '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$opt_mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "\`$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument \`$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and \`=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test "$opt_mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test "x$prev" = x-m && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$opt_mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename="" if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname" ; then func_basename "$dlprefile_dlname" dlprefile_dlbasename="$func_basename_result" else # no lafile. user explicitly requested -dlpreopen <import library>. $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename" ; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 </dev/null >/dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $opt_debug sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $opt_debug match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive which possess that section. Heuristic: eliminate # all those which have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $opt_debug func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $opt_debug if func_cygming_gnu_implib_p "$1" ; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1" ; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result="" fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" if test "$lock_old_archive_extraction" = yes; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test "$lock_old_archive_extraction" = yes; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ which is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options which match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat <<EOF /* $cwrappersource - temporary wrapper executable for $objdir/$outputname Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION The $output program cannot be directly executed until all the libtool libraries that it depends on are installed. This wrapper executable should never be moved out of the build directory. If it is, it will not operate correctly. */ EOF cat <<"EOF" #ifdef _MSC_VER # define _CRT_SECURE_NO_DEPRECATE 1 #endif #include <stdio.h> #include <stdlib.h> #ifdef _MSC_VER # include <direct.h> # include <process.h> # include <io.h> #else # include <unistd.h> # include <stdint.h> # ifdef __CYGWIN__ # include <io.h> # endif #endif #include <malloc.h> #include <stdarg.h> #include <assert.h> #include <string.h> #include <ctype.h> #include <errno.h> #include <fcntl.h> #include <sys/stat.h> /* declarations of non-ANSI functions */ #if defined(__MINGW32__) # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined(__CYGWIN__) # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined (other platforms) ... */ #endif /* portability defines, excluding path handling macros */ #if defined(_MSC_VER) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC # ifndef _INTPTR_T_DEFINED # define _INTPTR_T_DEFINED # define intptr_t int # endif #elif defined(__MINGW32__) # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined(__CYGWIN__) # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined (other platforms) ... */ #endif #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #if defined(LT_DEBUGWRAPPER) static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <<EOF volatile const char * MAGIC_EXE = "$magic_exe"; const char * LIB_PATH_VARNAME = "$shlibpath_var"; EOF if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then func_to_host_path "$temp_rpath" cat <<EOF const char * LIB_PATH_VALUE = "$func_to_host_path_result"; EOF else cat <<"EOF" const char * LIB_PATH_VALUE = ""; EOF fi if test -n "$dllsearchpath"; then func_to_host_path "$dllsearchpath:" cat <<EOF const char * EXE_PATH_VARNAME = "PATH"; const char * EXE_PATH_VALUE = "$func_to_host_path_result"; EOF else cat <<"EOF" const char * EXE_PATH_VARNAME = ""; const char * EXE_PATH_VALUE = ""; EOF fi if test "$fast_install" = yes; then cat <<EOF const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ EOF else cat <<EOF const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ EOF fi cat <<"EOF" #define LTWRAPPER_OPTION_PREFIX "--lt-" static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; int main (int argc, char *argv[]) { char **newargz; int newargc; char *tmp_pathspec; char *actual_cwrapper_path; char *actual_cwrapper_name; char *target_name; char *lt_argv_zero; intptr_t rval = 127; int i; program_name = (char *) xstrdup (base_name (argv[0])); newargz = XMALLOC (char *, argc + 1); /* very simple arg parsing; don't want to rely on getopt * also, copy all non cwrapper options to newargz, except * argz[0], which is handled differently */ newargc=0; for (i = 1; i < argc; i++) { if (strcmp (argv[i], dumpscript_opt) == 0) { EOF case "$host" in *mingw* | *cygwin* ) # make stdout use "unix" line endings echo " setmode(1,_O_BINARY);" ;; esac cat <<"EOF" lt_dump_script (stdout); return 0; } if (strcmp (argv[i], debug_opt) == 0) { lt_debug = 1; continue; } if (strcmp (argv[i], ltwrapper_option_prefix) == 0) { /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX namespace, but it is not one of the ones we know about and have already dealt with, above (inluding dump-script), then report an error. Otherwise, targets might begin to believe they are allowed to use options in the LTWRAPPER_OPTION_PREFIX namespace. The first time any user complains about this, we'll need to make LTWRAPPER_OPTION_PREFIX a configure-time option or a configure.ac-settable value. */ lt_fatal (__FILE__, __LINE__, "unrecognized %s option: '%s'", ltwrapper_option_prefix, argv[i]); } /* otherwise ... */ newargz[++newargc] = xstrdup (argv[i]); } newargz[++newargc] = NULL; EOF cat <<EOF /* The GNU banner must be the first non-error debug message */ lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); EOF cat <<"EOF" lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); tmp_pathspec = find_executable (argv[0]); if (tmp_pathspec == NULL) lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); lt_debugprintf (__FILE__, __LINE__, "(main) found exe (before symlink chase) at: %s\n", tmp_pathspec); actual_cwrapper_path = chase_symlinks (tmp_pathspec); lt_debugprintf (__FILE__, __LINE__, "(main) found exe (after symlink chase) at: %s\n", actual_cwrapper_path); XFREE (tmp_pathspec); actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); strendzap (actual_cwrapper_path, actual_cwrapper_name); /* wrapper name transforms */ strendzap (actual_cwrapper_name, ".exe"); tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); XFREE (actual_cwrapper_name); actual_cwrapper_name = tmp_pathspec; tmp_pathspec = 0; /* target_name transforms -- use actual target program name; might have lt- prefix */ target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); strendzap (target_name, ".exe"); tmp_pathspec = lt_extend_str (target_name, ".exe", 1); XFREE (target_name); target_name = tmp_pathspec; tmp_pathspec = 0; lt_debugprintf (__FILE__, __LINE__, "(main) libtool target name: %s\n", target_name); EOF cat <<EOF newargz[0] = XMALLOC (char, (strlen (actual_cwrapper_path) + strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); strcpy (newargz[0], actual_cwrapper_path); strcat (newargz[0], "$objdir"); strcat (newargz[0], "/"); EOF cat <<"EOF" /* stop here, and copy so we don't have to do this twice */ tmp_pathspec = xstrdup (newargz[0]); /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ strcat (newargz[0], actual_cwrapper_name); /* DO want the lt- prefix here if it exists, so use target_name */ lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); XFREE (tmp_pathspec); tmp_pathspec = NULL; EOF case $host_os in mingw*) cat <<"EOF" { char* p; while ((p = strchr (newargz[0], '\\')) != NULL) { *p = '/'; } while ((p = strchr (lt_argv_zero, '\\')) != NULL) { *p = '/'; } } EOF ;; esac cat <<"EOF" XFREE (target_name); XFREE (actual_cwrapper_path); XFREE (actual_cwrapper_name); lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ lt_setenv ("DUALCASE", "1"); /* for MSK sh */ /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) because on Windows, both *_VARNAMEs are PATH but uninstalled libraries must come first. */ lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", nonnull (lt_argv_zero)); for (i = 0; i < newargc; i++) { lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", i, nonnull (newargz[i])); } EOF case $host_os in mingw*) cat <<"EOF" /* execv doesn't actually work on mingw as expected on unix */ newargz = prepare_spawn (newargz); rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); if (rval == -1) { /* failed to start process */ lt_debugprintf (__FILE__, __LINE__, "(main) failed to launch target \"%s\": %s\n", lt_argv_zero, nonnull (strerror (errno))); return 127; } return rval; EOF ;; *) cat <<"EOF" execv (lt_argv_zero, newargz); return rval; /* =127, but avoids unused variable warning */ EOF ;; esac cat <<"EOF" } void * xmalloc (size_t num) { void *p = (void *) malloc (num); if (!p) lt_fatal (__FILE__, __LINE__, "memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL; } const char * base_name (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha ((unsigned char) name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return base; } int check_executable (const char *path) { struct stat st; lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if ((stat (path, &st) >= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $opt_debug case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir="$arg" prev= continue ;; dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test "$prev" = dlfiles; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps ; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." else echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test "$prefer_static_libs" = yes || test "$prefer_static_libs,$installed" = "built,no"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib="$l" done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$lt_sysroot$libdir" absdir="$lt_sysroot$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later func_append notinst_path " $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi case "$host" in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test "$installed" = no; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then echo if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$opt_mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$opt_mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system can not link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs="$temp_deplibs" fi func_append newlib_search_path " $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps ; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path="$deplib" ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|qnx|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. func_append verstring ":${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" func_append libobjs " $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$opt_mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c <<EOF int main() { return 0; } EOF $opt_dry_run || $RM conftest if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then ldd_output=`ldd conftest` for i in $deplibs; do case $i in -l*) func_stripname -l '' "$i" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $i "*) func_append newdeplibs " $i" i="" ;; esac fi if test -n "$i" ; then libname=`eval "\\$ECHO \"$libname_spec\""` deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` set dummy $deplib_matches; shift deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then func_append newdeplibs " $i" else droppeddeps=yes echo $ECHO "*** Warning: dynamic linker does not accept needed library $i." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which I believe you do not have" echo "*** because a test_compile did reveal that the linker did not use it for" echo "*** its dynamic dependency list that programs get resolved with at runtime." fi fi ;; *) func_append newdeplibs " $i" ;; esac done else # Error occurred in the first compile. Let's try to salvage # the situation: Compile a separate program for each library. for i in $deplibs; do case $i in -l*) func_stripname -l '' "$i" name=$func_stripname_result $opt_dry_run || $RM conftest if $LTCC $LTCFLAGS -o conftest conftest.c $i; then ldd_output=`ldd conftest` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $i "*) func_append newdeplibs " $i" i="" ;; esac fi if test -n "$i" ; then libname=`eval "\\$ECHO \"$libname_spec\""` deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` set dummy $deplib_matches; shift deplib_match=$1 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then func_append newdeplibs " $i" else droppeddeps=yes echo $ECHO "*** Warning: dynamic linker does not accept needed library $i." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because a test_compile did reveal that the linker did not use this one" echo "*** as a dynamic dependency that programs can get resolved with at runtime." fi fi else droppeddeps=yes echo $ECHO "*** Warning! Library $i is needed by this library but I was not able to" echo "*** make it link in! You will probably need to install it or some" echo "*** library that it depends on before this library will be fully" echo "*** functional. Installing it before continuing would be even better." fi ;; *) func_append newdeplibs " $i" ;; esac done fi ;; file_magic*) set dummy $deplibs_check_method; shift file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` if test -n "$file_magic_glob"; then libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` else libnameglob=$libname fi test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do if test "$want_nocaseglob" = yes; then shopt -s nocaseglob potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Remove ${wl} instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$opt_mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd1 in $cmds; do IFS="$save_ifs" # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test "$try_normal_branch" = yes \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=${output_objdir}/${output_la}.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\${concat_cmds}$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$opt_mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$opt_mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` else gentop="$output_objdir/${obj}x" func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " ${wl}-bind_at_load" func_append finalize_command " ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs="$new_libs" func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=no ;; *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then func_append oldobjs " $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" func_resolve_sysroot "$deplib" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test "x$bindir" != x ; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$opt_mode" = link || test "$opt_mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) func_append RM " $arg"; rmforce=yes ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then odir="$objdir" else odir="$dir/$objdir" fi func_basename "$file" name="$func_basename_result" test "$opt_mode" = uninstall && odir="$dir" # Remember odir for removal later, being careful to avoid duplicates if test "$opt_mode" = clean; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case "$opt_mode" in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test "$opt_mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name" ; then func_append rmfiles " $odir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$opt_mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Config/config.guess�������������������������������������������������������������0000755�0001750�0001750�00000127432�11756461675�020533� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. timestamp='2012-02-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see <http://www.gnu.org/licenses/>. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner. Please send patches (context # diff format) to <config-patches@gnu.org> and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to <config-patches@gnu.org>." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include <stdio.h> /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include <sys/systemcfg.h> main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include <stdlib.h> #include <unistd.h> int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include <unistd.h> int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-gnueabi else echo ${UNAME_MACHINE}-unknown-linux-gnueabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` echo ${UNAME_MACHINE}-pc-isc$UNAME_REL elif /bin/uname -X 2>/dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says <Richard.M.Bartel@ccMail.Census.GOV> echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes <hewes@openmarket.com>. # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c <<EOF #ifdef _SEQUENT_ # include <sys/types.h> # include <sys/utsname.h> #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include <sys/param.h> printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include <sys/param.h> # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 <<EOF $0: unable to guess system type This script, last modified $timestamp, has failed to recognize the operating system you are using. It is advised that you download the most up to date version of the config scripts from http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD and http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD If the version you run ($0) is already up to date, please send the following data and any information you think might be pertinent to <config-patches@gnu.org> in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Makefile.am���������������������������������������������������������������������0000644�0001750�0001750�00000001226�11754474776�017036� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������SUBDIRS = include \ Utilities PDT Decay PDF Models \ Shower DipoleShower Hadronization MatrixElement \ UnderlyingEvent Analysis Looptools Exsample2 \ lib src Doc Contrib Tests EXTRA_DIST = GUIDELINES DISTCHECK_CONFIGURE_FLAGS = --enable-debug --with-thepeg=$(THEPEGPATH) ACLOCAL_AMFLAGS = -I m4 DISTCLEANFILES = config.herwig libclean: find . -name '*.la' -print0 | xargs -0 rm -rf cd lib && $(MAKE) $(AM_MAKEFLAGS) clean cd src && $(MAKE) $(AM_MAKEFLAGS) clean tests: cd Tests && $(MAKE) $(AM_MAKEFLAGS) tests ## ThePEG registration unregister: cd src && $(MAKE) $(AM_MAKEFLAGS) unregister register: cd src && $(MAKE) $(AM_MAKEFLAGS) register ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/configure�����������������������������������������������������������������������0000755�0001750�0001750�00002643513�11756461674�016721� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for Herwig++ 2.6.0. # # Report bugs to <herwig@projects.hepforge.org>. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: herwig@projects.hepforge.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 </dev/null exec 6>&1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Herwig++' PACKAGE_TARNAME='Herwig++' PACKAGE_VERSION='2.6.0' PACKAGE_STRING='Herwig++ 2.6.0' PACKAGE_BUGREPORT='herwig@projects.hepforge.org' PACKAGE_URL='' ac_unique_file="Utilities/HerwigStrategy.cc" # Factoring default headers for most tests. ac_includes_default="\ #include <stdio.h> #ifdef HAVE_SYS_TYPES_H # include <sys/types.h> #endif #ifdef HAVE_SYS_STAT_H # include <sys/stat.h> #endif #ifdef STDC_HEADERS # include <stdlib.h> # include <stddef.h> #else # ifdef HAVE_STDLIB_H # include <stdlib.h> # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include <memory.h> # endif # include <string.h> #endif #ifdef HAVE_STRINGS_H # include <strings.h> #endif #ifdef HAVE_INTTYPES_H # include <inttypes.h> #endif #ifdef HAVE_STDINT_H # include <stdint.h> #endif #ifdef HAVE_UNISTD_H # include <unistd.h> #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS SHARED_FLAG APPLE_DSO_FLAGS NEED_APPLE_FIXES_FALSE NEED_APPLE_FIXES_TRUE WANT_ZPRIME_FALSE WANT_ZPRIME_TRUE WANT_TTBA_FALSE WANT_TTBA_TRUE WANT_SEXTET_FALSE WANT_SEXTET_TRUE WANT_ADD_FALSE WANT_ADD_TRUE WANT_TRP_FALSE WANT_TRP_TRUE WANT_Leptoquark_FALSE WANT_Leptoquark_TRUE WANT_RS_FALSE WANT_RS_TRUE WANT_UED_FALSE WANT_UED_TRUE WANT_NMSSM_FALSE WANT_NMSSM_TRUE WANT_MSSM_FALSE WANT_MSSM_TRUE LOAD_ZPRIME LOAD_TTBA LOAD_SEXTET LOAD_LEPTOQUARKS LOAD_ADD LOAD_UED LOAD_TRP LOAD_SUSY LOAD_RS LOAD_NMSSM USE_SVNVERSION_FALSE USE_SVNVERSION_TRUE have_svnversion WANT_LIBFASTJET_FALSE WANT_LIBFASTJET_TRUE FASTJETLIBS LOAD_FASTJET CREATE_FASTJET FASTJETINCLUDE fjconfig HERWIG_PDF_POMERON HERWIG_PDF_NLO HERWIG_PDF_DEFAULT WANT_LOCAL_PDF_FALSE WANT_LOCAL_PDF_TRUE FLIBS AM_FFLAGS FFLAGS F77 FCLIBS AM_LDFLAGS AM_FCFLAGS AM_CXXFLAGS AM_CFLAGS AM_CPPFLAGS BOOSTINCLUDE CREATE_HEPMC THEPEGINCLUDE THEPEGPATH THEPEGLDFLAGS THEPEGLIB GSLLIBS GSLINCLUDE PERL CXXCPP CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB DLLTOOL OBJDUMP NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC LIBTOOL ac_ct_FC FCFLAGS FC LN_S am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX ac_ct_AR AR AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_static with_pic enable_shared enable_fast_install with_gnu_ld with_sysroot enable_libtool_lock with_gsl with_thepeg with_thepeg_headers with_boost enable_debug with_pdf with_fastjet enable_models ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC FC FCFLAGS CC CFLAGS CPP CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures Herwig++ 2.6.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/Herwig++] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of Herwig++ 2.6.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-static[=PKGS] build static libraries [default=no] --enable-shared[=PKGS] build shared libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-debug debug mode, use --enable-debug=slow for additional options that slow down the run. --enable-models=LIST Comma-separated list of BSM models to enable. Options are (mssm nmssm ued rs trp add leptoquarks sextet) or --disable-models to turn them all off. Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-gsl=DIR location of gsl installation [default=system libs] --with-thepeg=DIR location of ThePEG installation --with-thepeg-headers=DIR location of ThePEG include directory --with-boost=DIR location of boost --with-pdf=DIR installation path of Herwig++PDF data tarball --with-fastjet=dir Assume the given directory for FastJet Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a nonstandard directory <lib dir> LIBS libraries to pass to the linker, e.g. -l<library> CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir> FC Fortran compiler command FCFLAGS Fortran compiler flags CC C compiler command CFLAGS C compiler flags CPP C preprocessor CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to <herwig@projects.hepforge.org>. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Herwig++ configure 2.6.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_fc_try_compile LINENO # --------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_fc_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_fc_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_fc_try_compile # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case <limits.h> declares $2. For example, HP-UX 11i <limits.h> declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer <limits.h> to <assert.h> if __STDC__ is defined, since <limits.h> exists even on freestanding compilers. */ #ifdef __STDC__ # include <limits.h> #else # include <assert.h> #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_fc_try_link LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_fc_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_fc_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_fc_try_link # ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_cxx_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ------------------------------------------- ## ## Report this to herwig@projects.hepforge.org ## ## ------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_mongrel # ac_fn_cxx_try_run LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_cxx_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_run cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Herwig++ $as_me 2.6.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in Config "$srcdir"/Config; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in Config \"$srcdir\"/Config" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ac_config_headers="$ac_config_headers Config/config.h" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac case "${host}" in *-darwin[0156].*) as_fn_error $? "Herwig++ requires OS X 10.3 or later" "$LINENO" 5 ;; *-darwin7.*) if test "x$MACOSX_DEPLOYMENT_TARGET" != "x10.3"; then as_fn_error $? "Please add 'MACOSX_DEPLOYMENT_TARGET=10.3' to the configure line." "$LINENO" 5 fi ;; esac if test "x$CXXFLAGS" = "x"; then CXXFLAGS=-O3 fi if test "x$CFLAGS" = "x"; then CFLAGS=-O3 fi if test "x$FCFLAGS" = "x"; then FCFLAGS=-O0 fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu am__api_version='1.12' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='Herwig++' VERSION='2.6.0' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdio.h> int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test -n "$ac_tool_prefix"; then for ac_prog in ar lib "link -lib" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar lib "link -lib" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} { $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 $as_echo_n "checking the archiver ($AR) interface... " >&6; } if ${am_cv_ar_interface+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_ar_interface=ar cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int some_variable = 0; _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=ar else am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 (eval $am_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then am_cv_ar_interface=lib else am_cv_ar_interface=unknown fi fi rm -f conftest.lib libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 $as_echo "$am_cv_ar_interface" >&6; } case $am_cv_ar_interface in ar) ;; lib) # Microsoft lib, so override with the ar-lib wrapper script. # FIXME: It is wrong to rewrite AR. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__AR in this case, # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something # similar. AR="$am_aux_dir/ar-lib $AR" ;; unknown) as_fn_error $? "could not determine $AR interface" "$LINENO" 5 ;; esac ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in gfortran g95 g77 do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_FC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$FC"; then ac_cv_prog_FC="$FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_FC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi FC=$ac_cv_prog_FC if test -n "$FC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FC" >&5 $as_echo "$FC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$FC" && break done fi if test -z "$FC"; then ac_ct_FC=$FC for ac_prog in gfortran g95 g77 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_FC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_FC"; then ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_FC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_FC=$ac_cv_prog_ac_ct_FC if test -n "$ac_ct_FC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FC" >&5 $as_echo "$ac_ct_FC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_FC" && break done if test "x$ac_ct_FC" = x; then FC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac FC=$ac_ct_FC fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done rm -f a.out # If we don't use `.F' as extension, the preprocessor is not run on the # input file. (Note that this only needs to work for GNU compilers.) ac_save_ext=$ac_ext ac_ext=F { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU Fortran compiler" >&5 $as_echo_n "checking whether we are using the GNU Fortran compiler... " >&6; } if ${ac_cv_fc_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main #ifndef __GNUC__ choke me #endif end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_fc_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_compiler_gnu" >&5 $as_echo "$ac_cv_fc_compiler_gnu" >&6; } ac_ext=$ac_save_ext ac_test_FCFLAGS=${FCFLAGS+set} ac_save_FCFLAGS=$FCFLAGS FCFLAGS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $FC accepts -g" >&5 $as_echo_n "checking whether $FC accepts -g... " >&6; } if ${ac_cv_prog_fc_g+:} false; then : $as_echo_n "(cached) " >&6 else FCFLAGS=-g cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : ac_cv_prog_fc_g=yes else ac_cv_prog_fc_g=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_g" >&5 $as_echo "$ac_cv_prog_fc_g" >&6; } if test "$ac_test_FCFLAGS" = set; then FCFLAGS=$ac_save_FCFLAGS elif test $ac_cv_prog_fc_g = yes; then if test "x$ac_cv_fc_compiler_gnu" = xyes; then FCFLAGS="-g -O2" else FCFLAGS="-g" fi else if test "x$ac_cv_fc_compiler_gnu" = xyes; then FCFLAGS="-O2" else FCFLAGS= fi fi if test $ac_compiler_gnu = yes; then GFC=yes else GFC= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the Fortran compiler ($FC) works" >&5 $as_echo_n "checking if the Fortran compiler ($FC) works... " >&6; } cat > conftest.$ac_ext <<_ACEOF program main print *,"Hello" end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "A Fortran compiler is required to build Herwig++." "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.2' macro_revision='1.3337' ltmain="$ac_aux_dir/ltmain.sh" # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case "$ECHO" in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdarg.h> #include <stdio.h> struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$lt_save_ifs" else lt_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$lt_cv_path_LD" if test -n "$LD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) lt_cv_prog_gnu_ld=yes ;; *) lt_cv_prog_gnu_ld=no ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 $as_echo "${with_sysroot}" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since # <limits.h> exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include <limits.h> #else # include <assert.h> #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since # <limits.h> exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include <limits.h> #else # include <assert.h> #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdlib.h> #include <stdarg.h> #include <string.h> #include <float.h> int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <string.h> _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <stdlib.h> _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <ctype.h> #include <stdlib.h> #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf # Set options # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=no fi enable_dlopen=yes # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac else pic_mode=default fi test -z "$pic_mode" && pic_mode=yes enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach <jrb3@best.com> says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='${wl}--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test x"$lt_cv_prog_compiler__b" = xyes; then archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([A-Za-z]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib<name>.so # instead of lib<name>.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include <dlfcn.h> #endif #include <stdio.h> #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include <dlfcn.h> #endif #include <stdio.h> #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu CC="$lt_save_CC" if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since # <limits.h> exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include <limits.h> #else # include <assert.h> #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since # <limits.h> exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include <limits.h> #else # include <assert.h> #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <ac_nonexistent.h> _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$lt_save_ifs" else lt_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$lt_cv_path_LD" if test -n "$LD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) lt_cv_prog_gnu_ld=yes ;; *) lt_cv_prog_gnu_ld=no ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach <jrb3@best.com> says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib<name>.so # instead of lib<name>.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi archive_cmds_need_lc_FC=no allow_undefined_flag_FC= always_export_symbols_FC=no archive_expsym_cmds_FC= export_dynamic_flag_spec_FC= hardcode_direct_FC=no hardcode_direct_absolute_FC=no hardcode_libdir_flag_spec_FC= hardcode_libdir_separator_FC= hardcode_minus_L_FC=no hardcode_automatic_FC=no inherit_rpath_FC=no module_cmds_FC= module_expsym_cmds_FC= link_all_deplibs_FC=unknown old_archive_cmds_FC=$old_archive_cmds reload_flag_FC=$reload_flag reload_cmds_FC=$reload_cmds no_undefined_flag_FC= whole_archive_flag_spec_FC= enable_shared_with_static_runtimes_FC=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o objext_FC=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu compiler_FC=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` if test -n "$compiler"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } GCC_FC="$ac_cv_fc_compiler_gnu" LD_FC="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_FC= postdep_objects_FC= predeps_FC= postdeps_FC= compiler_lib_search_path_FC= cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_FC"; then compiler_lib_search_path_FC="${prev}${p}" else compiler_lib_search_path_FC="${compiler_lib_search_path_FC} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_FC"; then postdeps_FC="${prev}${p}" else postdeps_FC="${postdeps_FC} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_FC"; then predep_objects_FC="$p" else predep_objects_FC="$predep_objects_FC $p" fi else if test -z "$postdep_objects_FC"; then postdep_objects_FC="$p" else postdep_objects_FC="$postdep_objects_FC $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling FC test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case " $postdeps_FC " in *" -lc "*) archive_cmds_need_lc_FC=no ;; esac compiler_lib_search_dirs_FC= if test -n "${compiler_lib_search_path_FC}"; then compiler_lib_search_dirs_FC=`echo " ${compiler_lib_search_path_FC}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_FC= lt_prog_compiler_pic_FC= lt_prog_compiler_static_FC= if test "$GCC" = yes; then lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_static_FC='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_FC='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_FC='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_FC='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_FC='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_FC='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_FC= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic_FC='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared_FC=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_FC='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_FC=-Kconform_pic fi ;; *) lt_prog_compiler_pic_FC='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl_FC='-Xlinker ' if test -n "$lt_prog_compiler_pic_FC"; then lt_prog_compiler_pic_FC="-Xcompiler $lt_prog_compiler_pic_FC" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl_FC='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_FC='-Bstatic' else lt_prog_compiler_static_FC='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_FC='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl_FC='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_FC='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static_FC='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl_FC='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static_FC='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fPIC' lt_prog_compiler_static_FC='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='--shared' lt_prog_compiler_static_FC='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl_FC='-Wl,-Wl,,' lt_prog_compiler_pic_FC='-PIC' lt_prog_compiler_static_FC='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fpic' lt_prog_compiler_static_FC='-Bstatic' ;; ccc*) lt_prog_compiler_wl_FC='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static_FC='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-qpic' lt_prog_compiler_static_FC='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' lt_prog_compiler_wl_FC='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' lt_prog_compiler_wl_FC='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' lt_prog_compiler_wl_FC='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fPIC' lt_prog_compiler_static_FC='-static' ;; *Portland\ Group*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-fpic' lt_prog_compiler_static_FC='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_FC='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl_FC='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static_FC='-non_shared' ;; rdos*) lt_prog_compiler_static_FC='-non_shared' ;; solaris*) lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl_FC='-Qoption ld ';; *) lt_prog_compiler_wl_FC='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl_FC='-Qoption ld ' lt_prog_compiler_pic_FC='-PIC' lt_prog_compiler_static_FC='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic_FC='-Kconform_pic' lt_prog_compiler_static_FC='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_pic_FC='-KPIC' lt_prog_compiler_static_FC='-Bstatic' ;; unicos*) lt_prog_compiler_wl_FC='-Wl,' lt_prog_compiler_can_build_shared_FC=no ;; uts4*) lt_prog_compiler_pic_FC='-pic' lt_prog_compiler_static_FC='-Bstatic' ;; *) lt_prog_compiler_can_build_shared_FC=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_FC= ;; *) lt_prog_compiler_pic_FC="$lt_prog_compiler_pic_FC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_FC=$lt_prog_compiler_pic_FC fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_FC" >&5 $as_echo "$lt_cv_prog_compiler_pic_FC" >&6; } lt_prog_compiler_pic_FC=$lt_cv_prog_compiler_pic_FC # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_FC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_FC works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_FC works... " >&6; } if ${lt_cv_prog_compiler_pic_works_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_FC=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_FC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_FC=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_FC" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_FC" >&6; } if test x"$lt_cv_prog_compiler_pic_works_FC" = xyes; then case $lt_prog_compiler_pic_FC in "" | " "*) ;; *) lt_prog_compiler_pic_FC=" $lt_prog_compiler_pic_FC" ;; esac else lt_prog_compiler_pic_FC= lt_prog_compiler_can_build_shared_FC=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_FC eval lt_tmp_static_flag=\"$lt_prog_compiler_static_FC\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_FC=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_FC=yes fi else lt_cv_prog_compiler_static_works_FC=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_FC" >&5 $as_echo "$lt_cv_prog_compiler_static_works_FC" >&6; } if test x"$lt_cv_prog_compiler_static_works_FC" = xyes; then : else lt_prog_compiler_static_FC= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_FC=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_FC=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5 $as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_FC+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_FC=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_FC=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_FC" >&5 $as_echo "$lt_cv_prog_compiler_c_o_FC" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_FC" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag_FC= always_export_symbols_FC=no archive_cmds_FC= archive_expsym_cmds_FC= compiler_needs_object_FC=no enable_shared_with_static_runtimes_FC=no export_dynamic_flag_spec_FC= export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic_FC=no hardcode_direct_FC=no hardcode_direct_absolute_FC=no hardcode_libdir_flag_spec_FC= hardcode_libdir_separator_FC= hardcode_minus_L_FC=no hardcode_shlibpath_var_FC=unsupported inherit_rpath_FC=no link_all_deplibs_FC=unknown module_cmds_FC= module_expsym_cmds_FC= old_archive_from_new_cmds_FC= old_archive_from_expsyms_cmds_FC= thread_safe_flag_spec_FC= whole_archive_flag_spec_FC= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms_FC= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms_FC='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs_FC=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_FC='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_FC="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_FC= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs_FC=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_FC='' ;; m68k) archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_FC=unsupported # Joseph Beckenbach <jrb3@best.com> says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_FC='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_FC=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, FC) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_FC='-L$libdir' export_dynamic_flag_spec_FC='${wl}--export-all-symbols' allow_undefined_flag_FC=unsupported always_export_symbols_FC=no enable_shared_with_static_runtimes_FC=yes export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_FC='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_FC='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_FC=no fi ;; haiku*) archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' link_all_deplibs_FC=yes ;; interix[3-9]*) hardcode_direct_FC=no hardcode_shlibpath_var_FC=no hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir' export_dynamic_flag_spec_FC='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_FC='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec_FC= tmp_sharedflag='--shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec_FC='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_FC=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec_FC='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_FC=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds_FC='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec_FC='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir' archive_cmds_FC='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_FC='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs_FC=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_FC='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs_FC=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_FC=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs_FC=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir' archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_FC=no fi ;; esac ;; sunos4*) archive_cmds_FC='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs_FC=no fi ;; esac if test "$ld_shlibs_FC" = no; then runpath_var= hardcode_libdir_flag_spec_FC= export_dynamic_flag_spec_FC= whole_archive_flag_spec_FC= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag_FC=unsupported always_export_symbols_FC=yes archive_expsym_cmds_FC='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L_FC=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct_FC=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_FC='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_FC='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_FC='' hardcode_direct_FC=yes hardcode_direct_absolute_FC=yes hardcode_libdir_separator_FC=':' link_all_deplibs_FC=yes file_list_spec_FC='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_FC=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_FC=yes hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_libdir_separator_FC= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec_FC='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols_FC=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_FC='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__FC+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__FC fi hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_FC='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_FC='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_FC="-z nodefs" archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__FC+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__FC=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__FC"; then lt_cv_aix_libpath__FC="/usr/lib:/lib" fi fi aix_libpath=$lt_cv_aix_libpath__FC fi hardcode_libdir_flag_spec_FC='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_FC=' ${wl}-bernotok' allow_undefined_flag_FC=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_FC='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_FC='$convenience' fi archive_cmds_need_lc_FC=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds_FC="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_FC='' ;; m68k) archive_cmds_FC='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec_FC=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec_FC=' ' allow_undefined_flag_FC=unsupported always_export_symbols_FC=yes file_list_spec_FC='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_FC='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' archive_expsym_cmds_FC='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, FC)='true' enable_shared_with_static_runtimes_FC=yes exclude_expsyms_FC='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds_FC='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds_FC='chmod 644 $oldlib' postlink_cmds_FC='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec_FC=' ' allow_undefined_flag_FC=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds_FC='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds_FC='true' # FIXME: Should let the user specify the lib program. old_archive_cmds_FC='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes_FC=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_FC=no hardcode_direct_FC=no hardcode_automatic_FC=yes hardcode_shlibpath_var_FC=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec_FC='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' compiler_needs_object_FC=yes else whole_archive_flag_spec_FC='' fi link_all_deplibs_FC=yes allow_undefined_flag_FC="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all archive_cmds_FC="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_FC="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_FC="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_FC="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs_FC=no fi ;; dgux*) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_shlibpath_var_FC=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=yes hardcode_minus_L_FC=yes hardcode_shlibpath_var_FC=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds_FC='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds_FC='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir' hardcode_libdir_separator_FC=: hardcode_direct_FC=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_FC=yes export_dynamic_flag_spec_FC='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir' hardcode_libdir_separator_FC=: hardcode_direct_FC=yes hardcode_direct_absolute_FC=yes export_dynamic_flag_spec_FC='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_FC=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds_FC='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_FC='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_FC='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec_FC='${wl}+b ${wl}$libdir' hardcode_libdir_separator_FC=: case $host_cpu in hppa*64*|ia64*) hardcode_direct_FC=no hardcode_shlibpath_var_FC=no ;; *) hardcode_direct_FC=yes hardcode_direct_absolute_FC=yes export_dynamic_flag_spec_FC='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L_FC=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat > conftest.$ac_ext <<_ACEOF subroutine foo end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test "$lt_cv_irix_exported_symbol" = yes; then archive_expsym_cmds_FC='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else archive_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_FC='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc_FC='no' hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_FC=: inherit_rpath_FC=yes link_all_deplibs_FC=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds_FC='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no ;; newsos6) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=yes hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_FC=: hardcode_shlibpath_var_FC=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_FC=yes hardcode_shlibpath_var_FC=no hardcode_direct_absolute_FC=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir' export_dynamic_flag_spec_FC='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds_FC='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_FC='-R$libdir' ;; *) archive_cmds_FC='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec_FC='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs_FC=no fi ;; os2*) hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_minus_L_FC=yes allow_undefined_flag_FC=unsupported archive_cmds_FC='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds_FC='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag_FC=' -expect_unresolved \*' archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc_FC='no' hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_FC=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag_FC=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_FC='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_FC='${wl}-rpath ${wl}$libdir' else allow_undefined_flag_FC=' -expect_unresolved \*' archive_cmds_FC='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_FC='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec_FC='-rpath $libdir' fi archive_cmds_need_lc_FC='no' hardcode_libdir_separator_FC=: ;; solaris*) no_undefined_flag_FC=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds_FC='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds_FC='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds_FC='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec_FC='-R$libdir' hardcode_shlibpath_var_FC=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec_FC='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec_FC='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs_FC=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds_FC='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_direct_FC=yes hardcode_minus_L_FC=yes hardcode_shlibpath_var_FC=no ;; sysv4) case $host_vendor in sni) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds_FC='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds_FC='$CC -r -o $output$reload_objs' hardcode_direct_FC=no ;; motorola) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct_FC=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var_FC=no ;; sysv4.3*) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_FC=no export_dynamic_flag_spec_FC='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var_FC=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs_FC=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_FC='${wl}-z,text' archive_cmds_need_lc_FC=no hardcode_shlibpath_var_FC=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_FC='${wl}-z,text' allow_undefined_flag_FC='${wl}-z,nodefs' archive_cmds_need_lc_FC=no hardcode_shlibpath_var_FC=no hardcode_libdir_flag_spec_FC='${wl}-R,$libdir' hardcode_libdir_separator_FC=':' link_all_deplibs_FC=yes export_dynamic_flag_spec_FC='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds_FC='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds_FC='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_FC='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds_FC='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec_FC='-L$libdir' hardcode_shlibpath_var_FC=no ;; *) ld_shlibs_FC=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec_FC='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_FC" >&5 $as_echo "$ld_shlibs_FC" >&6; } test "$ld_shlibs_FC" = no && can_build_shared=no with_gnu_ld_FC=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_FC" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_FC=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_FC in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_FC+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_FC pic_flag=$lt_prog_compiler_pic_FC compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_FC allow_undefined_flag_FC= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_FC 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_FC=no else lt_cv_archive_cmds_need_lc_FC=yes fi allow_undefined_flag_FC=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_FC" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_FC" >&6; } archive_cmds_need_lc_FC=$lt_cv_archive_cmds_need_lc_FC ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib<name>.so # instead of lib<name>.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_FC\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_FC\"" cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_FC= if test -n "$hardcode_libdir_flag_spec_FC" || test -n "$runpath_var_FC" || test "X$hardcode_automatic_FC" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_FC" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, FC)" != no && test "$hardcode_minus_L_FC" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_FC=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_FC=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_FC=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_FC" >&5 $as_echo "$hardcode_action_FC" >&6; } if test "$hardcode_action_FC" = relink || test "$inherit_rpath_FC" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PERL+:} false; then : $as_echo_n "(cached) " >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 $as_echo "$PERL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gsl location" >&5 $as_echo_n "checking for gsl location... " >&6; } GSLINCLUDE="" GSLLIBS="" # Check whether --with-gsl was given. if test "${with_gsl+set}" = set; then : withval=$with_gsl; else with_gsl=system fi if test "x$with_gsl" = "xno"; then as_fn_error $? "libgsl is required. Please install the GNU scientific library and header files." "$LINENO" 5 fi if test "x$with_gsl" = "xsystem"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: in system libraries" >&5 $as_echo "in system libraries" >&6; } oldlibs="$LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lm" >&5 $as_echo_n "checking for main in -lm... " >&6; } if ${ac_cv_lib_m_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_m_main=yes else ac_cv_lib_m_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_main" >&5 $as_echo "$ac_cv_lib_m_main" >&6; } if test "x$ac_cv_lib_m_main" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBM 1 _ACEOF LIBS="-lm $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lgslcblas" >&5 $as_echo_n "checking for main in -lgslcblas... " >&6; } if ${ac_cv_lib_gslcblas_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgslcblas $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_gslcblas_main=yes else ac_cv_lib_gslcblas_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gslcblas_main" >&5 $as_echo "$ac_cv_lib_gslcblas_main" >&6; } if test "x$ac_cv_lib_gslcblas_main" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBGSLCBLAS 1 _ACEOF LIBS="-lgslcblas $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lgsl" >&5 $as_echo_n "checking for main in -lgsl... " >&6; } if ${ac_cv_lib_gsl_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_gsl_main=yes else ac_cv_lib_gsl_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gsl_main" >&5 $as_echo "$ac_cv_lib_gsl_main" >&6; } if test "x$ac_cv_lib_gsl_main" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBGSL 1 _ACEOF LIBS="-lgsl $LIBS" else as_fn_error $? "Cannot find libgsl. Please install the GNU scientific library and header files or use --with-gsl=." "$LINENO" 5 fi GSLLIBS="$LIBS" LIBS=$oldlibs else if test "`uname -m`" = "x86_64" -a -e "$with_gsl/lib64/libgsl.a" -a -d "$with_gsl/include/gsl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $with_gsl" >&5 $as_echo "found in $with_gsl" >&6; } GSLLIBS="-L$with_gsl/lib64 -R$with_gsl/lib64 -lgslcblas -lgsl" GSLINCLUDE="-I$with_gsl/include" elif test -e "$with_gsl/lib/libgsl.a" -a -d "$with_gsl/include/gsl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $with_gsl" >&5 $as_echo "found in $with_gsl" >&6; } GSLLIBS="-L$with_gsl/lib -R$with_gsl/lib -lgslcblas -lgsl" GSLINCLUDE="-I$with_gsl/include" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } as_fn_error $? "Can't find $with_gsl/lib/libgsl.a or the headers in $with_gsl/include" "$LINENO" 5 fi fi defaultlocation="${prefix}" test "x$defaultlocation" = xNONE && defaultlocation="${ac_default_prefix}" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libThePEG in" >&5 $as_echo_n "checking for libThePEG in... " >&6; } # Check whether --with-thepeg was given. if test "${with_thepeg+set}" = set; then : withval=$with_thepeg; else with_thepeg="${defaultlocation}" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_thepeg" >&5 $as_echo "$with_thepeg" >&6; } if test "x$with_thepeg" = "xno"; then as_fn_error $? "Cannot build Herwig++ without ThePEG. Please set --with-thepeg." "$LINENO" 5 fi THEPEGLDFLAGS="-L${with_thepeg}/lib/ThePEG" if test "${host_cpu}" == "x86_64" -a -e ${with_thepeg}/lib64/ThePEG/libThePEG.so ; then THEPEGLDFLAGS="-L${with_thepeg}/lib64/ThePEG" fi THEPEGPATH="${with_thepeg}" oldldflags="$LDFLAGS" oldlibs="$LIBS" LDFLAGS="$LDFLAGS $THEPEGLDFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for debugThePEG in -lThePEG" >&5 $as_echo_n "checking for debugThePEG in -lThePEG... " >&6; } if ${ac_cv_lib_ThePEG_debugThePEG+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lThePEG $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char debugThePEG (); int main () { return debugThePEG (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_ThePEG_debugThePEG=yes else ac_cv_lib_ThePEG_debugThePEG=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ThePEG_debugThePEG" >&5 $as_echo "$ac_cv_lib_ThePEG_debugThePEG" >&6; } if test "x$ac_cv_lib_ThePEG_debugThePEG" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBTHEPEG 1 _ACEOF LIBS="-lThePEG $LIBS" else as_fn_error $? "No ThePEG libraries in $THEPEGLDFLAGS. Please set --with-thepeg." "$LINENO" 5 fi THEPEGLIB=-lThePEG LIBS="$oldlibs" LDFLAGS="$oldldflags" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ThePEG headers in" >&5 $as_echo_n "checking for ThePEG headers in... " >&6; } # Check whether --with-thepeg-headers was given. if test "${with_thepeg_headers+set}" = set; then : withval=$with_thepeg_headers; else with_thepeg_headers="${with_thepeg}/include" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_thepeg_headers" >&5 $as_echo "$with_thepeg_headers" >&6; } if test "x$with_thepeg_headers" = "xno"; then as_fn_error $? "Cannot build Herwig++ without ThePEG headers. Please set --with-thepeg-headers." "$LINENO" 5 fi THEPEGINCLUDE="-I$with_thepeg_headers" oldcppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $THEPEGINCLUDE" ac_fn_cxx_check_header_mongrel "$LINENO" "ThePEG/Config/ThePEG.h" "ac_cv_header_ThePEG_Config_ThePEG_h" "$ac_includes_default" if test "x$ac_cv_header_ThePEG_Config_ThePEG_h" = xyes; then : else as_fn_error $? "No ThePEG headers in $with_thepeg_headers. Please set --with-thepeg-headers." "$LINENO" 5 fi CPPFLAGS="$oldcppflags" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HepMCAnalysis.so in ThePEG" >&5 $as_echo_n "checking for HepMCAnalysis.so in ThePEG... " >&6; } if test -x "$THEPEGPATH/lib/ThePEG/HepMCAnalysis.so" ; then CREATE_HEPMC="create" { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 $as_echo "found" >&6; } else CREATE_HEPMC="# create" { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for boost headers" >&5 $as_echo_n "checking for boost headers... " >&6; } BOOSTINCLUDE="" # Check whether --with-boost was given. if test "${with_boost+set}" = set; then : withval=$with_boost; else with_boost=system fi if test "x$with_boost" = "xno"; then as_fn_error $? "boost headers are required. Please specify boost installation with --with-boost." "$LINENO" 5 fi boostpath=$with_boost if test "x$with_boost" == "xsystem" ; then if test -e "/usr/include/boost/array.hpp"; then boostpath="/usr" elif test -e "/usr/local/include/boost/array.hpp"; then boostpath="/usr/local" elif test -e "/opt/include/boost/array.hpp"; then boostpath="/opt" elif test -e "/opt/local/include/boost/array.hpp"; then boostpath="/opt/local" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } as_fn_error $? "boost headers are required. Please install boost." "$LINENO" 5 fi fi if test -e "$boostpath/include/boost/array.hpp"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $boostpath" >&5 $as_echo "found in $boostpath" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } as_fn_error $? "boost headers are required. Please install boost." "$LINENO" 5 fi BOOSTINCLUDE="-I$boostpath/include" AM_CPPFLAGS="-I\$(top_builddir)/include $THEPEGINCLUDE \$(GSLINCLUDE) \$(BOOSTINCLUDE)" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for debugging mode" >&5 $as_echo_n "checking for debugging mode... " >&6; } # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; else enable_debug=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_debug" >&5 $as_echo "$enable_debug" >&6; } if test "x$enable_debug" = "xno"; then AM_CPPFLAGS="$AM_CPPFLAGS -DNDEBUG" else debugflags="-g" fi if test -n "$GCC"; then warnflags="-ansi -pedantic -Wall -W" if test "x$enable_debug" = "xslow"; then debugflags="$debugflags -fno-inline" AM_CPPFLAGS="$AM_CPPFLAGS -D_GLIBCXX_DEBUG" fi fi case "${host}" in *-darwin*) ;; *) AM_LDFLAGS="-Wl,--enable-new-dtags" ;; esac AM_CFLAGS="$warnflags $debugflags" AM_CXXFLAGS="$warnflags $debugflags" AM_FCFLAGS="$debugflags" ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to get verbose linking output from $FC" >&5 $as_echo_n "checking how to get verbose linking output from $FC... " >&6; } if ${ac_cv_prog_fc_v+:} false; then : $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : ac_cv_prog_fc_v= # Try some options frequently used verbose output for ac_verb in -v -verbose --verbose -V -\#\#\#; do cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF # Compile and link our simple test program by passing a flag (argument # 1 to this macro) to the Fortran compiler in order to get # "verbose" output that we can then parse for the Fortran linker # flags. ac_save_FCFLAGS=$FCFLAGS FCFLAGS="$FCFLAGS $ac_verb" eval "set x $ac_link" shift $as_echo "$as_me:${as_lineno-$LINENO}: $*" >&5 # gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH, # LIBRARY_PATH; skip all such settings. ac_fc_v_output=`eval $ac_link 5>&1 2>&1 | sed '/^Driving:/d; /^Configured with:/d; '"/^[_$as_cr_Letters][_$as_cr_alnum]*=/d"` $as_echo "$ac_fc_v_output" >&5 FCFLAGS=$ac_save_FCFLAGS rm -rf conftest* # On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where # /foo, /bar, and /baz are search directories for the Fortran linker. # Here, we change these into -L/foo -L/bar -L/baz (and put it first): ac_fc_v_output="`echo $ac_fc_v_output | grep 'LPATH is:' | sed 's|.*LPATH is\(: *[^ ]*\).*|\1|;s|: */| -L/|g'` $ac_fc_v_output" # FIXME: we keep getting bitten by quoted arguments; a more general fix # that detects unbalanced quotes in FLIBS should be implemented # and (ugh) tested at some point. case $ac_fc_v_output in # With xlf replace commas with spaces, # and remove "-link" and closing parenthesis. *xlfentry*) ac_fc_v_output=`echo $ac_fc_v_output | sed ' s/,/ /g s/ -link / /g s/) *$// ' ` ;; # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted # $LIBS confuse us, and the libraries appear later in the output anyway). *mGLOB_options_string*) ac_fc_v_output=`echo $ac_fc_v_output | sed 's/"-mGLOB[^"]*"/ /g'` ;; # Portland Group compiler has singly- or doubly-quoted -cmdline argument # Singly-quoted arguments were reported for versions 5.2-4 and 6.0-4. # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2". *-cmdline\ * | *-ignore\ * | *-def\ *) ac_fc_v_output=`echo $ac_fc_v_output | sed "\ s/-cmdline *'[^']*'/ /g; s/-cmdline *\"[^\"]*\"/ /g s/-ignore *'[^']*'/ /g; s/-ignore *\"[^\"]*\"/ /g s/-def *'[^']*'/ /g; s/-def *\"[^\"]*\"/ /g"` ;; # If we are using fort77 (the f2c wrapper) then filter output and delete quotes. *fort77*f2c*gcc*) ac_fc_v_output=`echo "$ac_fc_v_output" | sed -n ' /:[ ]\+Running[ ]\{1,\}"gcc"/{ /"-c"/d /[.]c"*/d s/^.*"gcc"/"gcc"/ s/"//gp }'` ;; # If we are using Cray Fortran then delete quotes. *cft90*) ac_fc_v_output=`echo $ac_fc_v_output | sed 's/"//g'` ;; esac # look for -l* and *.a constructs in the output for ac_arg in $ac_fc_v_output; do case $ac_arg in [\\/]*.a | ?:[\\/]*.a | -[lLRu]*) ac_cv_prog_fc_v=$ac_verb break 2 ;; esac done done if test -z "$ac_cv_prog_fc_v"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine how to obtain linking information from $FC" >&5 $as_echo "$as_me: WARNING: cannot determine how to obtain linking information from $FC" >&2;} fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compilation failed" >&5 $as_echo "$as_me: WARNING: compilation failed" >&2;} fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_fc_v" >&5 $as_echo "$ac_cv_prog_fc_v" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran libraries of $FC" >&5 $as_echo_n "checking for Fortran libraries of $FC... " >&6; } if ${ac_cv_fc_libs+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$FCLIBS" != "x"; then ac_cv_fc_libs="$FCLIBS" # Let the user override the test. else cat > conftest.$ac_ext <<_ACEOF program main end _ACEOF # Compile and link our simple test program by passing a flag (argument # 1 to this macro) to the Fortran compiler in order to get # "verbose" output that we can then parse for the Fortran linker # flags. ac_save_FCFLAGS=$FCFLAGS FCFLAGS="$FCFLAGS $ac_cv_prog_fc_v" eval "set x $ac_link" shift $as_echo "$as_me:${as_lineno-$LINENO}: $*" >&5 # gfortran 4.3 outputs lines setting COLLECT_GCC_OPTIONS, COMPILER_PATH, # LIBRARY_PATH; skip all such settings. ac_fc_v_output=`eval $ac_link 5>&1 2>&1 | sed '/^Driving:/d; /^Configured with:/d; '"/^[_$as_cr_Letters][_$as_cr_alnum]*=/d"` $as_echo "$ac_fc_v_output" >&5 FCFLAGS=$ac_save_FCFLAGS rm -rf conftest* # On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where # /foo, /bar, and /baz are search directories for the Fortran linker. # Here, we change these into -L/foo -L/bar -L/baz (and put it first): ac_fc_v_output="`echo $ac_fc_v_output | grep 'LPATH is:' | sed 's|.*LPATH is\(: *[^ ]*\).*|\1|;s|: */| -L/|g'` $ac_fc_v_output" # FIXME: we keep getting bitten by quoted arguments; a more general fix # that detects unbalanced quotes in FLIBS should be implemented # and (ugh) tested at some point. case $ac_fc_v_output in # With xlf replace commas with spaces, # and remove "-link" and closing parenthesis. *xlfentry*) ac_fc_v_output=`echo $ac_fc_v_output | sed ' s/,/ /g s/ -link / /g s/) *$// ' ` ;; # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted # $LIBS confuse us, and the libraries appear later in the output anyway). *mGLOB_options_string*) ac_fc_v_output=`echo $ac_fc_v_output | sed 's/"-mGLOB[^"]*"/ /g'` ;; # Portland Group compiler has singly- or doubly-quoted -cmdline argument # Singly-quoted arguments were reported for versions 5.2-4 and 6.0-4. # Doubly-quoted arguments were reported for "PGF90/x86 Linux/x86 5.0-2". *-cmdline\ * | *-ignore\ * | *-def\ *) ac_fc_v_output=`echo $ac_fc_v_output | sed "\ s/-cmdline *'[^']*'/ /g; s/-cmdline *\"[^\"]*\"/ /g s/-ignore *'[^']*'/ /g; s/-ignore *\"[^\"]*\"/ /g s/-def *'[^']*'/ /g; s/-def *\"[^\"]*\"/ /g"` ;; # If we are using fort77 (the f2c wrapper) then filter output and delete quotes. *fort77*f2c*gcc*) ac_fc_v_output=`echo "$ac_fc_v_output" | sed -n ' /:[ ]\+Running[ ]\{1,\}"gcc"/{ /"-c"/d /[.]c"*/d s/^.*"gcc"/"gcc"/ s/"//gp }'` ;; # If we are using Cray Fortran then delete quotes. *cft90*) ac_fc_v_output=`echo $ac_fc_v_output | sed 's/"//g'` ;; esac ac_cv_fc_libs= # Save positional arguments (if any) ac_save_positional="$@" set X $ac_fc_v_output while test $# != 1; do shift ac_arg=$1 case $ac_arg in [\\/]*.a | ?:[\\/]*.a) ac_exists=false for ac_i in $ac_cv_fc_libs; do if test x"$ac_arg" = x"$ac_i"; then ac_exists=true break fi done if test x"$ac_exists" = xtrue; then : else ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg" fi ;; -bI:*) ac_exists=false for ac_i in $ac_cv_fc_libs; do if test x"$ac_arg" = x"$ac_i"; then ac_exists=true break fi done if test x"$ac_exists" = xtrue; then : else if test "$ac_compiler_gnu" = yes; then for ac_link_opt in $ac_arg; do ac_cv_fc_libs="$ac_cv_fc_libs -Xlinker $ac_link_opt" done else ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg" fi fi ;; # Ignore these flags. -lang* | -lcrt*.o | -lc | -lgcc* | -lSystem | -libmil | -little \ |-LANG:=* | -LIST:* | -LNO:* | -link) ;; -lkernel32) case $host_os in *cygwin*) ;; *) ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg" ;; esac ;; -[LRuYz]) # These flags, when seen by themselves, take an argument. # We remove the space between option and argument and re-iterate # unless we find an empty arg or a new option (starting with -) case $2 in "" | -*);; *) ac_arg="$ac_arg$2" shift; shift set X $ac_arg "$@" ;; esac ;; -YP,*) for ac_j in `$as_echo "$ac_arg" | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do ac_exists=false for ac_i in $ac_cv_fc_libs; do if test x"$ac_j" = x"$ac_i"; then ac_exists=true break fi done if test x"$ac_exists" = xtrue; then : else ac_arg="$ac_arg $ac_j" ac_cv_fc_libs="$ac_cv_fc_libs $ac_j" fi done ;; -[lLR]*) ac_exists=false for ac_i in $ac_cv_fc_libs; do if test x"$ac_arg" = x"$ac_i"; then ac_exists=true break fi done if test x"$ac_exists" = xtrue; then : else ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg" fi ;; -zallextract*| -zdefaultextract) ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg" ;; # Ignore everything else. esac done # restore positional arguments set X $ac_save_positional; shift # We only consider "LD_RUN_PATH" on Solaris systems. If this is seen, # then we insist that the "run path" must be an absolute path (i.e. it # must begin with a "/"). case `(uname -sr) 2>/dev/null` in "SunOS 5"*) ac_ld_run_path=`$as_echo "$ac_fc_v_output" | sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'` test "x$ac_ld_run_path" != x && if test "$ac_compiler_gnu" = yes; then for ac_link_opt in $ac_ld_run_path; do ac_cv_fc_libs="$ac_cv_fc_libs -Xlinker $ac_link_opt" done else ac_cv_fc_libs="$ac_cv_fc_libs $ac_ld_run_path" fi ;; esac fi # test "x$[]_AC_LANG_PREFIX[]LIBS" = "x" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_libs" >&5 $as_echo "$ac_cv_fc_libs" >&6; } FCLIBS="$ac_cv_fc_libs" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Looptools build works" >&5 $as_echo_n "checking if Looptools build works... " >&6; } enable_looptools=yes if test "x$GCC" = "xyes"; then case "${host}" in x86_64-*|*-darwin1*) AM_FCFLAGS="$AM_FCFLAGS -fdefault-integer-8" ;; esac ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu oldFCFLAGS="$FCFLAGS" FCFLAGS="$AM_FCFLAGS" cat > conftest.$ac_ext <<_ACEOF program main print *,"Hello" end _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "needs gfortran on 64bit machines" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext FCFLAGS="$oldFCFLAGS" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_looptools" >&5 $as_echo "$enable_looptools" >&6; } F77=$FC FFLAGS=$FCFLAGS AM_FFLAGS=$AM_FCFLAGS FLIBS=$FCLIBS { $as_echo "$as_me:${as_lineno-$LINENO}: checking which Herwig++ PDF data to use" >&5 $as_echo_n "checking which Herwig++ PDF data to use... " >&6; } # Check whether --with-pdf was given. if test "${with_pdf+set}" = set; then : withval=$with_pdf; else with_pdf=${prefix} fi HERWIG_PDF_PREFIX=${with_pdf}/share/Herwig++PDF if test -f "${HERWIG_PDF_PREFIX}/mrst/2008/mrstMCal.dat"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_pdf" >&5 $as_echo "$with_pdf" >&6; } localPDFneeded=false else { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using built-in PDF data set. For other data sets, set --with-pdf." >&5 $as_echo "Using built-in PDF data set. For other data sets, set --with-pdf." >&6; } HERWIG_PDF_PREFIX=PDF localPDFneeded=true fi HERWIG_PDF_DEFAULT=${HERWIG_PDF_PREFIX}/mrst/2008/mrstMCal.dat HERWIG_PDF_NLO=${HERWIG_PDF_PREFIX}/mrst/2002/mrst2002nlo.dat HERWIG_PDF_POMERON=${HERWIG_PDF_PREFIX}/diffraction/ if test "x$localPDFneeded" = "xtrue"; then WANT_LOCAL_PDF_TRUE= WANT_LOCAL_PDF_FALSE='#' else WANT_LOCAL_PDF_TRUE='#' WANT_LOCAL_PDF_FALSE= fi # Check whether --with-fastjet was given. if test "${with_fastjet+set}" = set; then : withval=$with_fastjet; fi if test "$with_fastjet" = ""; then # Extract the first word of "fastjet-config", so it can be a program name with args. set dummy fastjet-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_fjconfig+:} false; then : $as_echo_n "(cached) " >&6 else case $fjconfig in [\\/]* | ?:[\\/]*) ac_cv_path_fjconfig="$fjconfig" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_fjconfig="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_fjconfig" && ac_cv_path_fjconfig="no" ;; esac fi fjconfig=$ac_cv_path_fjconfig if test -n "$fjconfig"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fjconfig" >&5 $as_echo "$fjconfig" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else # Extract the first word of "fastjet-config", so it can be a program name with args. set dummy fastjet-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_fjconfig+:} false; then : $as_echo_n "(cached) " >&6 else case $fjconfig in [\\/]* | ?:[\\/]*) ac_cv_path_fjconfig="$fjconfig" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in ${with_fastjet}/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_fjconfig="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_fjconfig" && ac_cv_path_fjconfig="no" ;; esac fi fjconfig=$ac_cv_path_fjconfig if test -n "$fjconfig"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fjconfig" >&5 $as_echo "$fjconfig" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi LOAD_FASTJET="" CREATE_FASTJET="#create" if test "${fjconfig}" = "no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking FastJet" >&5 $as_echo_n "checking FastJet... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; else save_CXXFLAGS="$CXXFLAGS" save_LIBS="$LIBS" CXXFLAGS="${CXXFLAGS} `${fjconfig} --cxxflags`" LIBS="${LIBS} `${fjconfig} --libs --plugins`" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if FastJet is functional" >&5 $as_echo_n "checking if FastJet is functional... " >&6; } ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <fastjet/ClusterSequence.hh> int main () { fastjet::PseudoJet pj=fastjet::PtYPhiM(10.0,0.5,1.0,0.0); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : fjok='yes' else fjok='no' fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fjok" >&5 $as_echo "$fjok" >&6; } ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu CXXFLAGS="$save_CXXFLAGS" LIBS="$save_LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking FastJet" >&5 $as_echo_n "checking FastJet... " >&6; } if test "${fjok}" = "yes"; then FASTJET_CXXFLAGS="`${fjconfig} --cxxflags`" FASTJET_LIBS="`${fjconfig} --libs --plugins`" LOAD_FASTJET="library HwLEPJetAnalysis.so" CREATE_FASTJET="create" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fjcheckver=`${fjconfig} --version | sed s/'\.'//g` fjprefix=`${fjconfig} --prefix` if test "${host_cpu}" == "x86_64" -a $fjcheckver -le 301 -a -e `${fjconfig} --prefix`/lib64 ; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *************************************************************************** FastJet <= 3.0.1 has been recognized. The FastJet libraries are located in $fjprefix/lib64 which is not properly communicated by fastjet-config. Consider to configure FastJet with --libdir=$fjprefix/lib *************************************************************************** " >&5 $as_echo "$as_me: WARNING: *************************************************************************** FastJet <= 3.0.1 has been recognized. The FastJet libraries are located in $fjprefix/lib64 which is not properly communicated by fastjet-config. Consider to configure FastJet with --libdir=$fjprefix/lib *************************************************************************** " >&2;} fi fi FASTJETINCLUDE=$FASTJET_CXXFLAGS FASTJETLIBS=${FASTJET_LIBS/-Wl,-rpath,/-R} if test "x$CREATE_FASTJET" = "xcreate"; then WANT_LIBFASTJET_TRUE= WANT_LIBFASTJET_FALSE='#' else WANT_LIBFASTJET_TRUE='#' WANT_LIBFASTJET_FALSE= fi if test -d $srcdir/.svn; then # Extract the first word of "svnversion", so it can be a program name with args. set dummy svnversion; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_have_svnversion+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$have_svnversion"; then ac_cv_prog_have_svnversion="$have_svnversion" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_have_svnversion="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_have_svnversion" && ac_cv_prog_have_svnversion="no" fi fi have_svnversion=$ac_cv_prog_have_svnversion if test -n "$have_svnversion"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_svnversion" >&5 $as_echo "$have_svnversion" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test "x$have_svnversion" = "xyes"; then USE_SVNVERSION_TRUE= USE_SVNVERSION_FALSE='#' else USE_SVNVERSION_TRUE='#' USE_SVNVERSION_FALSE= fi if test "$GCC" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc abs bug" >&5 $as_echo_n "checking for gcc abs bug... " >&6; } if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (int i) { return -2 * __builtin_abs(i - 2); } int main () { if ( foo(1) != -2 || foo(3) != -2 ) return 1; ; return 0; } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found. Compiler is ok." >&5 $as_echo "not found. Compiler is ok." >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found. Builtin abs() is buggy." >&5 $as_echo "found. Builtin abs() is buggy." >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -fno-builtin-abs works" >&5 $as_echo_n "checking if -fno-builtin-abs works... " >&6; } oldcxxflags=$CXXFLAGS CXXFLAGS="$CXXFLAGS -fno-builtin-abs" if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <cstdlib> int foo (int i) { return -2 * std::abs(i - 2); } int main () { if (foo(1) != -2 || foo(3) != -2) return 1; ; return 0; } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes. Setting -fno-builtin-abs." >&5 $as_echo "yes. Setting -fno-builtin-abs." >&6; } AM_CXXFLAGS="$AM_CXXFLAGS -fno-builtin-abs" AM_CFLAGS="$AM_CFLAGS -fno-builtin-abs" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no. Setting -fno-builtin." >&5 $as_echo "no. Setting -fno-builtin." >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ***************************************************************************** For this version of gcc, -fno-builtin-abs alone did not work to avoid the gcc abs() bug. Instead, all gcc builtin functions are now disabled. Update gcc if possible. *****************************************************************************" >&5 $as_echo "$as_me: WARNING: ***************************************************************************** For this version of gcc, -fno-builtin-abs alone did not work to avoid the gcc abs() bug. Instead, all gcc builtin functions are now disabled. Update gcc if possible. *****************************************************************************" >&2;} AM_CXXFLAGS="$AM_CXXFLAGS -fno-builtin" AM_CFLAGS="$AM_CFLAGS -fno-builtin" fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CXXFLAGS=$oldcxxflags fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSM models to include" >&5 $as_echo_n "checking for BSM models to include... " >&6; } LOAD_RS="" LOAD_SUSY="" LOAD_NMSSM="" LOAD_TRP="" LOAD_UED="" LOAD_ADD="" LOAD_SEXTET="" LOAD_TTBA="" LOAD_ZPRIME="" # Check whether --enable-models was given. if test "${enable_models+set}" = set; then : enableval=$enable_models; else enable_models=all fi if test "x$enable_models" = "xyes" -o "x$enable_models" = "xall"; then all=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_models" >&5 $as_echo "$enable_models" >&6; } if test ! "$all"; then oldIFS="$IFS" IFS="," for i in $enable_models; do declare $i=yes done IFS="$oldIFS" fi if test "$nmssm" -o "$all"; then LOAD_NMSSM="library HwNMSSM.so" mssm=yes fi if test "$rs" -o "$all" ; then LOAD_RS="library HwRSModel.so" fi if test "$mssm" -o "$all"; then LOAD_SUSY="library HwSusy.so" fi if test "$trp" -o "$all"; then LOAD_TRP="library HwTransplanck.so" fi if test "$ued" -o "$all"; then LOAD_UED="library HwUED.so" fi if test "$add" -o "$all"; then LOAD_ADD="library HwADDModel.so" fi if test "$leptoquarks" -o "$all"; then LOAD_LEPTOQUARKS="library HwLeptoquarkModel.so" fi if test "$sextet" -o "$all"; then LOAD_SEXTET="library HwSextetModel.so" fi if test "$ttba" -o "$all"; then LOAD_TTBA="library HwTTbAModel.so" fi if test "$zprime" -o "$all"; then LOAD_SEXTET="library HwZprimeModel.so" fi if test "$mssm" -o "$all"; then WANT_MSSM_TRUE= WANT_MSSM_FALSE='#' else WANT_MSSM_TRUE='#' WANT_MSSM_FALSE= fi if test "$nmssm" -o "$all"; then WANT_NMSSM_TRUE= WANT_NMSSM_FALSE='#' else WANT_NMSSM_TRUE='#' WANT_NMSSM_FALSE= fi if test "$ued" -o "$all"; then WANT_UED_TRUE= WANT_UED_FALSE='#' else WANT_UED_TRUE='#' WANT_UED_FALSE= fi if test "$rs" -o "$all"; then WANT_RS_TRUE= WANT_RS_FALSE='#' else WANT_RS_TRUE='#' WANT_RS_FALSE= fi if test "$leptoquarks" -o "$all"; then WANT_Leptoquark_TRUE= WANT_Leptoquark_FALSE='#' else WANT_Leptoquark_TRUE='#' WANT_Leptoquark_FALSE= fi if test "$trp" -o "$all"; then WANT_TRP_TRUE= WANT_TRP_FALSE='#' else WANT_TRP_TRUE='#' WANT_TRP_FALSE= fi if test "$add" -o "$all"; then WANT_ADD_TRUE= WANT_ADD_FALSE='#' else WANT_ADD_TRUE='#' WANT_ADD_FALSE= fi if test "$sextet" -o "$all"; then WANT_SEXTET_TRUE= WANT_SEXTET_FALSE='#' else WANT_SEXTET_TRUE='#' WANT_SEXTET_FALSE= fi if test "$ttba" -o "$all"; then WANT_TTBA_TRUE= WANT_TTBA_FALSE='#' else WANT_TTBA_TRUE='#' WANT_TTBA_FALSE= fi if test "$zprime" -o "$all"; then WANT_ZPRIME_TRUE= WANT_ZPRIME_FALSE='#' else WANT_ZPRIME_TRUE='#' WANT_ZPRIME_FALSE= fi SHARED_FLAG=-shared if test "xx${host/darwin/foundit}xx" != "xx${host}xx"; then NEED_APPLE_FIXES_TRUE= NEED_APPLE_FIXES_FALSE='#' else NEED_APPLE_FIXES_TRUE='#' NEED_APPLE_FIXES_FALSE= fi if test "xx${host/darwin/foundit}xx" != "xx${host}xx"; then APPLE_DSO_FLAGS=-Wl,-undefined,dynamic_lookup SHARED_FLAG=-bundle fi ac_config_files="$ac_config_files UnderlyingEvent/Makefile Models/Makefile Models/StandardModel/Makefile Models/RSModel/Makefile Models/General/Makefile Models/Susy/Makefile Models/Susy/NMSSM/Makefile Models/UED/Makefile Models/Transplanckian/Makefile Models/Leptoquarks/Makefile Models/Zprime/Makefile Models/TTbAsymm/Makefile Models/ADD/Makefile Models/Sextet/Makefile Decay/Makefile Decay/FormFactors/Makefile Decay/Tau/Makefile Decay/Baryon/Makefile Decay/VectorMeson/Makefile Decay/Perturbative/Makefile Decay/ScalarMeson/Makefile Decay/TensorMeson/Makefile Decay/WeakCurrents/Makefile Decay/Partonic/Makefile Decay/General/Makefile Decay/Radiation/Makefile Doc/refman.conf Doc/refman.h PDT/Makefile PDF/Makefile MatrixElement/Makefile MatrixElement/General/Makefile MatrixElement/Lepton/Makefile MatrixElement/Hadron/Makefile MatrixElement/DIS/Makefile MatrixElement/Powheg/Makefile MatrixElement/Gamma/Makefile MatrixElement/Matchbox/Makefile MatrixElement/Matchbox/Base/Makefile MatrixElement/Matchbox/Utility/Makefile MatrixElement/Matchbox/Phasespace/Makefile MatrixElement/Matchbox/Dipoles/Makefile MatrixElement/Matchbox/InsertionOperators/Makefile MatrixElement/Matchbox/Powheg/Makefile MatrixElement/Matchbox/Builtin/Makefile MatrixElement/Matchbox/Builtin/Processes/Makefile Exsample2/Makefile Shower/SplittingFunctions/Makefile Shower/Default/Makefile Shower/Base/Makefile Shower/Makefile DipoleShower/Makefile DipoleShower/Base/Makefile DipoleShower/Kernels/Makefile DipoleShower/Kinematics/Makefile DipoleShower/Utility/Makefile DipoleShower/AlphaS/Makefile Utilities/Makefile Hadronization/Makefile lib/Makefile include/Makefile src/Makefile src/defaults/Makefile src/herwig-config Doc/Makefile Doc/HerwigDefaults.in Looptools/Makefile Analysis/Makefile src/Makefile-UserModules src/defaults/Analysis.in Contrib/Makefile Contrib/make_makefiles.sh Tests/Makefile Makefile" ac_config_files="$ac_config_files Doc/fixinterfaces.pl" FCSTRING=`$FC --version | head -1` CXXSTRING=`$CXX --version | head -1` CCSTRING=`$CC --version | head -1` cat << _HW_EOF_ > config.herwig ***************************************************** *** $PACKAGE_STRING configuration summary *** Please include this information in bug reports! ***-------------------------------------------------- *** Prefix: $prefix *** *** BSM models: $enable_models *** Herwig debug mode: $enable_debug *** *** GSL: $with_gsl *** *** ThePEG: $with_thepeg *** ThePEG headers: $with_thepeg_headers *** *** boost: $with_boost *** *** Fastjet: ${fjconfig} *** *** Host: $host *** CXX: $CXXSTRING *** FC: $FCSTRING *** CC: $CCSTRING ***************************************************** _HW_EOF_ ac_config_commands="$ac_config_commands summary" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WANT_LOCAL_PDF_TRUE}" && test -z "${WANT_LOCAL_PDF_FALSE}"; then as_fn_error $? "conditional \"WANT_LOCAL_PDF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WANT_LIBFASTJET_TRUE}" && test -z "${WANT_LIBFASTJET_FALSE}"; then as_fn_error $? "conditional \"WANT_LIBFASTJET\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${USE_SVNVERSION_TRUE}" && test -z "${USE_SVNVERSION_FALSE}"; then as_fn_error $? "conditional \"USE_SVNVERSION\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WANT_MSSM_TRUE}" && test -z "${WANT_MSSM_FALSE}"; then as_fn_error $? "conditional \"WANT_MSSM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WANT_NMSSM_TRUE}" && test -z "${WANT_NMSSM_FALSE}"; then as_fn_error $? "conditional \"WANT_NMSSM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WANT_UED_TRUE}" && test -z "${WANT_UED_FALSE}"; then as_fn_error $? "conditional \"WANT_UED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WANT_RS_TRUE}" && test -z "${WANT_RS_FALSE}"; then as_fn_error $? "conditional \"WANT_RS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WANT_Leptoquark_TRUE}" && test -z "${WANT_Leptoquark_FALSE}"; then as_fn_error $? "conditional \"WANT_Leptoquark\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WANT_TRP_TRUE}" && test -z "${WANT_TRP_FALSE}"; then as_fn_error $? "conditional \"WANT_TRP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WANT_ADD_TRUE}" && test -z "${WANT_ADD_FALSE}"; then as_fn_error $? "conditional \"WANT_ADD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WANT_SEXTET_TRUE}" && test -z "${WANT_SEXTET_FALSE}"; then as_fn_error $? "conditional \"WANT_SEXTET\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WANT_TTBA_TRUE}" && test -z "${WANT_TTBA_FALSE}"; then as_fn_error $? "conditional \"WANT_TTBA\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WANT_ZPRIME_TRUE}" && test -z "${WANT_ZPRIME_FALSE}"; then as_fn_error $? "conditional \"WANT_ZPRIME\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NEED_APPLE_FIXES_TRUE}" && test -z "${NEED_APPLE_FIXES_FALSE}"; then as_fn_error $? "conditional \"NEED_APPLE_FIXES\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by Herwig++ $as_me 2.6.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to <herwig@projects.hepforge.org>." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ Herwig++ config.status 2.6.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' LD_FC='`$ECHO "$LD_FC" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_FC='`$ECHO "$reload_flag_FC" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_FC='`$ECHO "$reload_cmds_FC" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_FC='`$ECHO "$old_archive_cmds_FC" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' compiler_FC='`$ECHO "$compiler_FC" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' GCC_FC='`$ECHO "$GCC_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_FC='`$ECHO "$lt_prog_compiler_no_builtin_flag_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_FC='`$ECHO "$lt_prog_compiler_pic_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_FC='`$ECHO "$lt_prog_compiler_wl_FC" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_FC='`$ECHO "$lt_prog_compiler_static_FC" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_FC='`$ECHO "$lt_cv_prog_compiler_c_o_FC" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_FC='`$ECHO "$archive_cmds_need_lc_FC" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_FC='`$ECHO "$enable_shared_with_static_runtimes_FC" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_FC='`$ECHO "$export_dynamic_flag_spec_FC" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_FC='`$ECHO "$whole_archive_flag_spec_FC" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_FC='`$ECHO "$compiler_needs_object_FC" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_FC='`$ECHO "$old_archive_from_new_cmds_FC" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_FC='`$ECHO "$old_archive_from_expsyms_cmds_FC" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_FC='`$ECHO "$archive_cmds_FC" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_FC='`$ECHO "$archive_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_FC='`$ECHO "$module_cmds_FC" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_FC='`$ECHO "$module_expsym_cmds_FC" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_FC='`$ECHO "$with_gnu_ld_FC" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_FC='`$ECHO "$allow_undefined_flag_FC" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_FC='`$ECHO "$no_undefined_flag_FC" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_FC='`$ECHO "$hardcode_libdir_flag_spec_FC" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_FC='`$ECHO "$hardcode_libdir_separator_FC" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_FC='`$ECHO "$hardcode_direct_FC" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_FC='`$ECHO "$hardcode_direct_absolute_FC" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_FC='`$ECHO "$hardcode_minus_L_FC" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_FC='`$ECHO "$hardcode_shlibpath_var_FC" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_FC='`$ECHO "$hardcode_automatic_FC" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_FC='`$ECHO "$inherit_rpath_FC" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_FC='`$ECHO "$link_all_deplibs_FC" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_FC='`$ECHO "$always_export_symbols_FC" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_FC='`$ECHO "$export_symbols_cmds_FC" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_FC='`$ECHO "$exclude_expsyms_FC" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_FC='`$ECHO "$include_expsyms_FC" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_FC='`$ECHO "$prelink_cmds_FC" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_FC='`$ECHO "$postlink_cmds_FC" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_FC='`$ECHO "$file_list_spec_FC" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_FC='`$ECHO "$hardcode_action_FC" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_FC='`$ECHO "$compiler_lib_search_dirs_FC" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_FC='`$ECHO "$predep_objects_FC" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_FC='`$ECHO "$postdep_objects_FC" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' predeps_FC='`$ECHO "$predeps_FC" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_FC='`$ECHO "$postdeps_FC" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_FC='`$ECHO "$compiler_lib_search_path_FC" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ nm_file_list_spec \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ LD_FC \ reload_flag_CXX \ reload_flag_FC \ compiler_CXX \ compiler_FC \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_no_builtin_flag_FC \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_pic_FC \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_wl_FC \ lt_prog_compiler_static_CXX \ lt_prog_compiler_static_FC \ lt_cv_prog_compiler_c_o_CXX \ lt_cv_prog_compiler_c_o_FC \ export_dynamic_flag_spec_CXX \ export_dynamic_flag_spec_FC \ whole_archive_flag_spec_CXX \ whole_archive_flag_spec_FC \ compiler_needs_object_CXX \ compiler_needs_object_FC \ with_gnu_ld_CXX \ with_gnu_ld_FC \ allow_undefined_flag_CXX \ allow_undefined_flag_FC \ no_undefined_flag_CXX \ no_undefined_flag_FC \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_FC \ hardcode_libdir_separator_CXX \ hardcode_libdir_separator_FC \ exclude_expsyms_CXX \ exclude_expsyms_FC \ include_expsyms_CXX \ include_expsyms_FC \ file_list_spec_CXX \ file_list_spec_FC \ compiler_lib_search_dirs_CXX \ compiler_lib_search_dirs_FC \ predep_objects_CXX \ predep_objects_FC \ postdep_objects_CXX \ postdep_objects_FC \ predeps_CXX \ predeps_FC \ postdeps_CXX \ postdeps_FC \ compiler_lib_search_path_CXX \ compiler_lib_search_path_FC; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ reload_cmds_CXX \ reload_cmds_FC \ old_archive_cmds_CXX \ old_archive_cmds_FC \ old_archive_from_new_cmds_CXX \ old_archive_from_new_cmds_FC \ old_archive_from_expsyms_cmds_CXX \ old_archive_from_expsyms_cmds_FC \ archive_cmds_CXX \ archive_cmds_FC \ archive_expsym_cmds_CXX \ archive_expsym_cmds_FC \ module_cmds_CXX \ module_cmds_FC \ module_expsym_cmds_CXX \ module_expsym_cmds_FC \ export_symbols_cmds_CXX \ export_symbols_cmds_FC \ prelink_cmds_CXX \ prelink_cmds_FC \ postlink_cmds_CXX \ postlink_cmds_FC; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "Config/config.h") CONFIG_HEADERS="$CONFIG_HEADERS Config/config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "UnderlyingEvent/Makefile") CONFIG_FILES="$CONFIG_FILES UnderlyingEvent/Makefile" ;; "Models/Makefile") CONFIG_FILES="$CONFIG_FILES Models/Makefile" ;; "Models/StandardModel/Makefile") CONFIG_FILES="$CONFIG_FILES Models/StandardModel/Makefile" ;; "Models/RSModel/Makefile") CONFIG_FILES="$CONFIG_FILES Models/RSModel/Makefile" ;; "Models/General/Makefile") CONFIG_FILES="$CONFIG_FILES Models/General/Makefile" ;; "Models/Susy/Makefile") CONFIG_FILES="$CONFIG_FILES Models/Susy/Makefile" ;; "Models/Susy/NMSSM/Makefile") CONFIG_FILES="$CONFIG_FILES Models/Susy/NMSSM/Makefile" ;; "Models/UED/Makefile") CONFIG_FILES="$CONFIG_FILES Models/UED/Makefile" ;; "Models/Transplanckian/Makefile") CONFIG_FILES="$CONFIG_FILES Models/Transplanckian/Makefile" ;; "Models/Leptoquarks/Makefile") CONFIG_FILES="$CONFIG_FILES Models/Leptoquarks/Makefile" ;; "Models/Zprime/Makefile") CONFIG_FILES="$CONFIG_FILES Models/Zprime/Makefile" ;; "Models/TTbAsymm/Makefile") CONFIG_FILES="$CONFIG_FILES Models/TTbAsymm/Makefile" ;; "Models/ADD/Makefile") CONFIG_FILES="$CONFIG_FILES Models/ADD/Makefile" ;; "Models/Sextet/Makefile") CONFIG_FILES="$CONFIG_FILES Models/Sextet/Makefile" ;; "Decay/Makefile") CONFIG_FILES="$CONFIG_FILES Decay/Makefile" ;; "Decay/FormFactors/Makefile") CONFIG_FILES="$CONFIG_FILES Decay/FormFactors/Makefile" ;; "Decay/Tau/Makefile") CONFIG_FILES="$CONFIG_FILES Decay/Tau/Makefile" ;; "Decay/Baryon/Makefile") CONFIG_FILES="$CONFIG_FILES Decay/Baryon/Makefile" ;; "Decay/VectorMeson/Makefile") CONFIG_FILES="$CONFIG_FILES Decay/VectorMeson/Makefile" ;; "Decay/Perturbative/Makefile") CONFIG_FILES="$CONFIG_FILES Decay/Perturbative/Makefile" ;; "Decay/ScalarMeson/Makefile") CONFIG_FILES="$CONFIG_FILES Decay/ScalarMeson/Makefile" ;; "Decay/TensorMeson/Makefile") CONFIG_FILES="$CONFIG_FILES Decay/TensorMeson/Makefile" ;; "Decay/WeakCurrents/Makefile") CONFIG_FILES="$CONFIG_FILES Decay/WeakCurrents/Makefile" ;; "Decay/Partonic/Makefile") CONFIG_FILES="$CONFIG_FILES Decay/Partonic/Makefile" ;; "Decay/General/Makefile") CONFIG_FILES="$CONFIG_FILES Decay/General/Makefile" ;; "Decay/Radiation/Makefile") CONFIG_FILES="$CONFIG_FILES Decay/Radiation/Makefile" ;; "Doc/refman.conf") CONFIG_FILES="$CONFIG_FILES Doc/refman.conf" ;; "Doc/refman.h") CONFIG_FILES="$CONFIG_FILES Doc/refman.h" ;; "PDT/Makefile") CONFIG_FILES="$CONFIG_FILES PDT/Makefile" ;; "PDF/Makefile") CONFIG_FILES="$CONFIG_FILES PDF/Makefile" ;; "MatrixElement/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/Makefile" ;; "MatrixElement/General/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/General/Makefile" ;; "MatrixElement/Lepton/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/Lepton/Makefile" ;; "MatrixElement/Hadron/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/Hadron/Makefile" ;; "MatrixElement/DIS/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/DIS/Makefile" ;; "MatrixElement/Powheg/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/Powheg/Makefile" ;; "MatrixElement/Gamma/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/Gamma/Makefile" ;; "MatrixElement/Matchbox/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/Matchbox/Makefile" ;; "MatrixElement/Matchbox/Base/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/Matchbox/Base/Makefile" ;; "MatrixElement/Matchbox/Utility/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/Matchbox/Utility/Makefile" ;; "MatrixElement/Matchbox/Phasespace/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/Matchbox/Phasespace/Makefile" ;; "MatrixElement/Matchbox/Dipoles/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/Matchbox/Dipoles/Makefile" ;; "MatrixElement/Matchbox/InsertionOperators/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/Matchbox/InsertionOperators/Makefile" ;; "MatrixElement/Matchbox/Powheg/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/Matchbox/Powheg/Makefile" ;; "MatrixElement/Matchbox/Builtin/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/Matchbox/Builtin/Makefile" ;; "MatrixElement/Matchbox/Builtin/Processes/Makefile") CONFIG_FILES="$CONFIG_FILES MatrixElement/Matchbox/Builtin/Processes/Makefile" ;; "Exsample2/Makefile") CONFIG_FILES="$CONFIG_FILES Exsample2/Makefile" ;; "Shower/SplittingFunctions/Makefile") CONFIG_FILES="$CONFIG_FILES Shower/SplittingFunctions/Makefile" ;; "Shower/Default/Makefile") CONFIG_FILES="$CONFIG_FILES Shower/Default/Makefile" ;; "Shower/Base/Makefile") CONFIG_FILES="$CONFIG_FILES Shower/Base/Makefile" ;; "Shower/Makefile") CONFIG_FILES="$CONFIG_FILES Shower/Makefile" ;; "DipoleShower/Makefile") CONFIG_FILES="$CONFIG_FILES DipoleShower/Makefile" ;; "DipoleShower/Base/Makefile") CONFIG_FILES="$CONFIG_FILES DipoleShower/Base/Makefile" ;; "DipoleShower/Kernels/Makefile") CONFIG_FILES="$CONFIG_FILES DipoleShower/Kernels/Makefile" ;; "DipoleShower/Kinematics/Makefile") CONFIG_FILES="$CONFIG_FILES DipoleShower/Kinematics/Makefile" ;; "DipoleShower/Utility/Makefile") CONFIG_FILES="$CONFIG_FILES DipoleShower/Utility/Makefile" ;; "DipoleShower/AlphaS/Makefile") CONFIG_FILES="$CONFIG_FILES DipoleShower/AlphaS/Makefile" ;; "Utilities/Makefile") CONFIG_FILES="$CONFIG_FILES Utilities/Makefile" ;; "Hadronization/Makefile") CONFIG_FILES="$CONFIG_FILES Hadronization/Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/defaults/Makefile") CONFIG_FILES="$CONFIG_FILES src/defaults/Makefile" ;; "src/herwig-config") CONFIG_FILES="$CONFIG_FILES src/herwig-config" ;; "Doc/Makefile") CONFIG_FILES="$CONFIG_FILES Doc/Makefile" ;; "Doc/HerwigDefaults.in") CONFIG_FILES="$CONFIG_FILES Doc/HerwigDefaults.in" ;; "Looptools/Makefile") CONFIG_FILES="$CONFIG_FILES Looptools/Makefile" ;; "Analysis/Makefile") CONFIG_FILES="$CONFIG_FILES Analysis/Makefile" ;; "src/Makefile-UserModules") CONFIG_FILES="$CONFIG_FILES src/Makefile-UserModules" ;; "src/defaults/Analysis.in") CONFIG_FILES="$CONFIG_FILES src/defaults/Analysis.in" ;; "Contrib/Makefile") CONFIG_FILES="$CONFIG_FILES Contrib/Makefile" ;; "Contrib/make_makefiles.sh") CONFIG_FILES="$CONFIG_FILES Contrib/make_makefiles.sh" ;; "Tests/Makefile") CONFIG_FILES="$CONFIG_FILES Tests/Makefile" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "Doc/fixinterfaces.pl") CONFIG_FILES="$CONFIG_FILES Doc/fixinterfaces.pl" ;; "summary") CONFIG_COMMANDS="$CONFIG_COMMANDS summary" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' <conf$$subs.awk | sed ' /^[^""]/{ N s/\n// } ' >>$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' <confdefs.h | sed ' s/'"$ac_delim"'/"\\\ "/g' >>$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="CXX FC " # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and in which our libraries should be installed. lt_sysroot=$lt_sysroot # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) if test x"$xsi_shell" = xyes; then sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ func_dirname ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ } # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_basename ()$/,/^} # func_basename /c\ func_basename ()\ {\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ func_dirname_and_basename ()\ {\ \ case ${1} in\ \ */*) func_dirname_result="${1%/*}${2}" ;;\ \ * ) func_dirname_result="${3}" ;;\ \ esac\ \ func_basename_result="${1##*/}"\ } # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ func_stripname ()\ {\ \ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ \ # positional parameters, so assign one to ordinary parameter first.\ \ func_stripname_result=${3}\ \ func_stripname_result=${func_stripname_result#"${1}"}\ \ func_stripname_result=${func_stripname_result%"${2}"}\ } # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ func_split_long_opt ()\ {\ \ func_split_long_opt_name=${1%%=*}\ \ func_split_long_opt_arg=${1#*=}\ } # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ func_split_short_opt ()\ {\ \ func_split_short_opt_arg=${1#??}\ \ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ } # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ func_lo2o ()\ {\ \ case ${1} in\ \ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ \ *) func_lo2o_result=${1} ;;\ \ esac\ } # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_xform ()$/,/^} # func_xform /c\ func_xform ()\ {\ func_xform_result=${1%.*}.lo\ } # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_arith ()$/,/^} # func_arith /c\ func_arith ()\ {\ func_arith_result=$(( $* ))\ } # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_len ()$/,/^} # func_len /c\ func_len ()\ {\ func_len_result=${#1}\ } # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$lt_shell_append" = xyes; then sed -e '/^func_append ()$/,/^} # func_append /c\ func_append ()\ {\ eval "${1}+=\\${2}"\ } # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ func_append_quoted ()\ {\ \ func_quote_for_eval "${2}"\ \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ } # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 $as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} fi mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: FC # The linker used to build libraries. LD=$lt_LD_FC # How to create reloadable object files. reload_flag=$lt_reload_flag_FC reload_cmds=$lt_reload_cmds_FC # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_FC # A language specific compiler. CC=$lt_compiler_FC # Is the compiler the GNU compiler? with_gcc=$GCC_FC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_FC # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_FC # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_FC # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_FC # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_FC # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_FC # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_FC # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_FC # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_FC # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_FC # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_FC # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_FC # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_FC archive_expsym_cmds=$lt_archive_expsym_cmds_FC # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_FC module_expsym_cmds=$lt_module_expsym_cmds_FC # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_FC # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_FC # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_FC # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_FC # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_FC # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_FC # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_FC # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_FC # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_FC # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_FC # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_FC # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_FC # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_FC # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_FC # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_FC # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_FC # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_FC # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_FC # Specify filename containing input files. file_list_spec=$lt_file_list_spec_FC # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_FC # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_FC # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_FC postdep_objects=$lt_postdep_objects_FC predeps=$lt_predeps_FC postdeps=$lt_postdeps_FC # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_FC # ### END LIBTOOL TAG CONFIG: FC _LT_EOF ;; "Doc/fixinterfaces.pl":F) chmod +x Doc/fixinterfaces.pl ;; "summary":C) cat config.herwig ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/�������������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464206�016235� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/UEBase.h�����������������������������������������������������������������0000644�0001750�0001750�00000010302�11754474775�017520� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_UEBase_H #define HERWIG_UEBase_H // // This is the declaration of the UEBase class. // #include "ThePEG/Interface/Interfaced.h" #include "ThePEG/Handlers/StandardXComb.fh" #include "UEBase.fh" namespace Herwig { using namespace ThePEG; /** * Abstract base class used to minimize the dependence between * MPIHandler and all Shower classes. * * \author Manuel B\"ahr * * @see \ref UEBaseInterfaces "The interfaces" * defined for UEBase. */ class UEBase: public Interfaced { public: /** * 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(); /** @name Virtual functions used for the generation of additional interactions . */ //@{ /** * Some initialization code eventually. */ virtual void initialize() {} /** * Return true or false depending on the generator setup. */ virtual bool beamOK() const = 0; /** * Return true or false depending on whether soft interactions are enabled. */ virtual bool softInt() const {return false;} /** * Return the value of the pt cutoff. */ virtual Energy Ptmin() const = 0; /** * Return the slope of the soft pt spectrum. Only necessary when the * soft part is modelled. */ virtual InvEnergy2 beta() const {return ZERO;} /** * Some finalize code eventually. */ virtual void finalize() {} /** * Return the number of different hard processes. Use 0 as default to * not require implementation. */ virtual unsigned int additionalHardProcs() const {return 0;} /** * return the hard multiplicity of process i. Can't be constant in my * case because drawing from the probability distribution also * specifies the soft multiplicity that has to be stored.... */ virtual unsigned int multiplicity(unsigned int i=0) = 0; /** * Generate a additional interaction for ProcessHandler sel. Method * can't be const because it saves the state of the underlying XComb * object on it's way. */ virtual tStdXCombPtr generate(unsigned int sel=0) = 0; /** * Return the type of algorithm. */ virtual int Algorithm() const = 0; /** * Return the value of the hard Process pt cutoff for vetoing. */ virtual Energy PtForVeto() const = 0; /** * Return the fraction of colour disrupted subprocesses. Use default 0 * so that it is not required to implement. */ virtual double colourDisrupt() const {return 0.0;} /** * Return the soft multiplicity. Use 0 as default to not require * implementation. */ virtual unsigned int softMultiplicity() const {return 0;} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<UEBase> initUEBase; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ UEBase & operator=(const UEBase &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of UEBase. */ template <> struct BaseClassTrait<Herwig::UEBase,1> { /** Typedef of the first base class of UEBase. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the UEBase class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::UEBase> : public ClassTraitsBase<Herwig::UEBase> { /** Return a platform-independent class name */ static string className() { return "Herwig::UEBase"; } /** * The name of a file containing the dynamic library where the class * UEBase is implemented. It may also include several, space-separated, * libraries if the class UEBase depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_UEBase_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Makefile.in��������������������������������������������������������������0000644�0001750�0001750�00000117640�11756461701�020310� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Shower DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES) HwShower_la_DEPENDENCIES = Default/libHwDefaultShower.la \ $(top_builddir)/Shower/SplittingFunctions/libHwSplitting.la \ $(top_builddir)/Shower/Base/libHwShowerBase.la \ $(top_builddir)/PDF/libHwRemDecayer.la \ $(top_builddir)/PDF/libHwMPIPDF.la am_HwShower_la_OBJECTS = UEBase.lo ShowerAlphaQCD.lo ShowerHandler.lo HwShower_la_OBJECTS = $(am_HwShower_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwShower_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(HwShower_la_LDFLAGS) $(LDFLAGS) -o $@ libHwShower_la_LIBADD = am_libHwShower_la_OBJECTS = ShowerParticle.lo ShowerKinematics.lo \ ShowerTree.lo HardTree.lo SudakovFormFactor.lo \ HardBranching.lo ShowerAlpha.lo SplittingGenerator.lo \ SplittingFunction.lo libHwShower_la_OBJECTS = $(am_libHwShower_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwShower_la_SOURCES) $(libHwShower_la_SOURCES) DIST_SOURCES = $(HwShower_la_SOURCES) $(libHwShower_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = SplittingFunctions Default Base . pkglib_LTLIBRARIES = HwShower.la HwShower_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 15:0:0 HwShower_la_LIBADD = Default/libHwDefaultShower.la \ $(top_builddir)/Shower/SplittingFunctions/libHwSplitting.la \ $(top_builddir)/Shower/Base/libHwShowerBase.la \ $(top_builddir)/PDF/libHwRemDecayer.la \ $(top_builddir)/PDF/libHwMPIPDF.la HwShower_la_SOURCES = \ UEBase.h UEBase.cc UEBase.fh \ Couplings/ShowerAlphaQCD.h Couplings/ShowerAlphaQCD.cc \ ShowerHandler.h ShowerHandler.fh ShowerHandler.cc noinst_LTLIBRARIES = libHwShower.la libHwShower_la_SOURCES = ShowerConfig.h \ Base/Branching.h \ Base/ShowerParticle.cc Base/ShowerParticle.fh Base/ShowerParticle.h \ Base/ShowerKinematics.fh Base/ShowerKinematics.h Base/ShowerKinematics.cc \ Base/ShowerTree.h Base/ShowerTree.fh Base/ShowerTree.cc \ Base/ShowerProgenitor.fh Base/ShowerProgenitor.h \ Base/HardTree.h Base/HardTree.fh Base/HardTree.cc\ Base/SudakovFormFactor.cc Base/SudakovFormFactor.h Base/SudakovFormFactor.fh \ Base/HardBranching.h Base/HardBranching.fh Base/HardBranching.cc\ Couplings/ShowerAlpha.h Couplings/ShowerAlpha.cc Couplings/ShowerAlpha.fh\ SplittingFunctions/SplittingGenerator.cc SplittingFunctions/SplittingGenerator.h\ SplittingFunctions/SplittingGenerator.fh \ SplittingFunctions/SplittingFunction.h SplittingFunctions/SplittingFunction.fh \ SplittingFunctions/SplittingFunction.cc all: all-recursive .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Shower/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Shower/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwShower.la: $(HwShower_la_OBJECTS) $(HwShower_la_DEPENDENCIES) $(EXTRA_HwShower_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwShower_la_LINK) -rpath $(pkglibdir) $(HwShower_la_OBJECTS) $(HwShower_la_LIBADD) $(LIBS) libHwShower.la: $(libHwShower_la_OBJECTS) $(libHwShower_la_DEPENDENCIES) $(EXTRA_libHwShower_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwShower_la_OBJECTS) $(libHwShower_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HardBranching.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HardTree.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShowerAlpha.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShowerAlphaQCD.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShowerHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShowerKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShowerParticle.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShowerTree.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SplittingFunction.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SplittingGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SudakovFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UEBase.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< ShowerAlphaQCD.lo: Couplings/ShowerAlphaQCD.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ShowerAlphaQCD.lo -MD -MP -MF $(DEPDIR)/ShowerAlphaQCD.Tpo -c -o ShowerAlphaQCD.lo `test -f 'Couplings/ShowerAlphaQCD.cc' || echo '$(srcdir)/'`Couplings/ShowerAlphaQCD.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ShowerAlphaQCD.Tpo $(DEPDIR)/ShowerAlphaQCD.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Couplings/ShowerAlphaQCD.cc' object='ShowerAlphaQCD.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ShowerAlphaQCD.lo `test -f 'Couplings/ShowerAlphaQCD.cc' || echo '$(srcdir)/'`Couplings/ShowerAlphaQCD.cc ShowerParticle.lo: Base/ShowerParticle.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ShowerParticle.lo -MD -MP -MF $(DEPDIR)/ShowerParticle.Tpo -c -o ShowerParticle.lo `test -f 'Base/ShowerParticle.cc' || echo '$(srcdir)/'`Base/ShowerParticle.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ShowerParticle.Tpo $(DEPDIR)/ShowerParticle.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Base/ShowerParticle.cc' object='ShowerParticle.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ShowerParticle.lo `test -f 'Base/ShowerParticle.cc' || echo '$(srcdir)/'`Base/ShowerParticle.cc ShowerKinematics.lo: Base/ShowerKinematics.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ShowerKinematics.lo -MD -MP -MF $(DEPDIR)/ShowerKinematics.Tpo -c -o ShowerKinematics.lo `test -f 'Base/ShowerKinematics.cc' || echo '$(srcdir)/'`Base/ShowerKinematics.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ShowerKinematics.Tpo $(DEPDIR)/ShowerKinematics.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Base/ShowerKinematics.cc' object='ShowerKinematics.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ShowerKinematics.lo `test -f 'Base/ShowerKinematics.cc' || echo '$(srcdir)/'`Base/ShowerKinematics.cc ShowerTree.lo: Base/ShowerTree.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ShowerTree.lo -MD -MP -MF $(DEPDIR)/ShowerTree.Tpo -c -o ShowerTree.lo `test -f 'Base/ShowerTree.cc' || echo '$(srcdir)/'`Base/ShowerTree.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ShowerTree.Tpo $(DEPDIR)/ShowerTree.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Base/ShowerTree.cc' object='ShowerTree.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ShowerTree.lo `test -f 'Base/ShowerTree.cc' || echo '$(srcdir)/'`Base/ShowerTree.cc HardTree.lo: Base/HardTree.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HardTree.lo -MD -MP -MF $(DEPDIR)/HardTree.Tpo -c -o HardTree.lo `test -f 'Base/HardTree.cc' || echo '$(srcdir)/'`Base/HardTree.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HardTree.Tpo $(DEPDIR)/HardTree.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Base/HardTree.cc' object='HardTree.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HardTree.lo `test -f 'Base/HardTree.cc' || echo '$(srcdir)/'`Base/HardTree.cc SudakovFormFactor.lo: Base/SudakovFormFactor.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SudakovFormFactor.lo -MD -MP -MF $(DEPDIR)/SudakovFormFactor.Tpo -c -o SudakovFormFactor.lo `test -f 'Base/SudakovFormFactor.cc' || echo '$(srcdir)/'`Base/SudakovFormFactor.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/SudakovFormFactor.Tpo $(DEPDIR)/SudakovFormFactor.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Base/SudakovFormFactor.cc' object='SudakovFormFactor.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SudakovFormFactor.lo `test -f 'Base/SudakovFormFactor.cc' || echo '$(srcdir)/'`Base/SudakovFormFactor.cc HardBranching.lo: Base/HardBranching.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT HardBranching.lo -MD -MP -MF $(DEPDIR)/HardBranching.Tpo -c -o HardBranching.lo `test -f 'Base/HardBranching.cc' || echo '$(srcdir)/'`Base/HardBranching.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/HardBranching.Tpo $(DEPDIR)/HardBranching.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Base/HardBranching.cc' object='HardBranching.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o HardBranching.lo `test -f 'Base/HardBranching.cc' || echo '$(srcdir)/'`Base/HardBranching.cc ShowerAlpha.lo: Couplings/ShowerAlpha.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ShowerAlpha.lo -MD -MP -MF $(DEPDIR)/ShowerAlpha.Tpo -c -o ShowerAlpha.lo `test -f 'Couplings/ShowerAlpha.cc' || echo '$(srcdir)/'`Couplings/ShowerAlpha.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ShowerAlpha.Tpo $(DEPDIR)/ShowerAlpha.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Couplings/ShowerAlpha.cc' object='ShowerAlpha.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ShowerAlpha.lo `test -f 'Couplings/ShowerAlpha.cc' || echo '$(srcdir)/'`Couplings/ShowerAlpha.cc SplittingGenerator.lo: SplittingFunctions/SplittingGenerator.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SplittingGenerator.lo -MD -MP -MF $(DEPDIR)/SplittingGenerator.Tpo -c -o SplittingGenerator.lo `test -f 'SplittingFunctions/SplittingGenerator.cc' || echo '$(srcdir)/'`SplittingFunctions/SplittingGenerator.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/SplittingGenerator.Tpo $(DEPDIR)/SplittingGenerator.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='SplittingFunctions/SplittingGenerator.cc' object='SplittingGenerator.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SplittingGenerator.lo `test -f 'SplittingFunctions/SplittingGenerator.cc' || echo '$(srcdir)/'`SplittingFunctions/SplittingGenerator.cc SplittingFunction.lo: SplittingFunctions/SplittingFunction.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SplittingFunction.lo -MD -MP -MF $(DEPDIR)/SplittingFunction.Tpo -c -o SplittingFunction.lo `test -f 'SplittingFunctions/SplittingFunction.cc' || echo '$(srcdir)/'`SplittingFunctions/SplittingFunction.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/SplittingFunction.Tpo $(DEPDIR)/SplittingFunction.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='SplittingFunctions/SplittingFunction.cc' object='SplittingFunction.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SplittingFunction.lo `test -f 'SplittingFunctions/SplittingFunction.cc' || echo '$(srcdir)/'`SplittingFunctions/SplittingFunction.cc mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done cscopelist-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ clean-pkglibLTLIBRARIES mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \ cscopelist-recursive ctags-recursive install-am install-strip \ tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES cscopelist \ cscopelist-recursive ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkglibLTLIBRARIES \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/������������������������������������������������������0000755�0001750�0001750�00000000000�11756464206�022103� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/HalfOneHalfSplitFn.h����������������������������������0000644�0001750�0001750�00000014116�11754474775�025700� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HalfOneHalfSplitFn.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_HalfOneHalfSplitFn_H #define HERWIG_HalfOneHalfSplitFn_H // // This is the declaration of the HalfOneHalfSplitFn class. // #include "SplittingFunction.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * * This classs provides the concrete implementation of the exact leading-order * splitting function for \f$\frac12\to 1\frac12\f$. * * In this case the splitting function is given by * \f[P(z,t) = C\left(\frac{2(1-z)+z^2}{z}-2\frac{m^2_q}t\right),\f] * where \f$C\f$ is the corresponding colour factor. * Our choice for the overestimate is * \f[P_{\rm over}(z) = 2C\frac1z,\f] * therefore the integral is * \f[\int P_{\rm over}(z) {\rm d}z = 2C\ln z,\f] * and its inverse is * \f[\exp\left(\frac{r}{2C}\right).\f] * * @see SplittingFunction */ class HalfOneHalfSplitFn: public SplittingFunction { public: /** * The default constructor. */ inline HalfOneHalfSplitFn() : SplittingFunction(1) {} /** * Concrete implementation of the method to determine whether this splitting * function can be used for a given set of particles. * @param ids The PDG codes for the particles in the splitting. */ virtual bool accept(const IdList & ids) const; /** * Methods to return the splitting function. */ //@{ /** * The concrete implementation of the splitting function, \f$P(z,t)\f$. * @param z The energy fraction. * @param t The scale. * @param ids The PDG codes for the particles in the splitting. * @param mass Whether or not to include the mass dependent terms */ virtual double P(const double z, const Energy2 t, const IdList & ids, const bool mass) const; /** * The concrete implementation of the overestimate of the splitting function, * \f$P_{\rm over}\f$. * @param z The energy fraction. * @param ids The PDG codes for the particles in the splitting. */ virtual double overestimateP(const double z, const IdList & ids) const; /** * The concrete implementation of the * the ratio of the splitting function to the overestimate, i.e. * \f$P(z,t)/P_{\rm over}(z)\f$. * @param z The energy fraction. * @param t The scale. * @param ids The PDG codes for the particles in the splitting. * @param mass Whether or not to include the mass dependent terms */ virtual double ratioP(const double z, const Energy2 t, const IdList & ids, const bool mass) const; /** * The concrete implementation of the indefinite integral of the * overestimated splitting function, \f$P_{\rm over}\f$. * @param z The energy fraction. * @param ids The PDG codes for the particles in the splitting. * @param PDFfactor Which additional factor to include for the PDF * 0 is no additional factor, * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ */ virtual double integOverP(const double z, const IdList & ids, unsigned int PDFfactor=0) const; /** * The concrete implementation of the inverse of the indefinite integral. * @param r Value of the splitting function to be inverted * @param ids The PDG codes for the particles in the splitting. * @param PDFfactor Which additional factor to include for the PDF * 0 is no additional factor, * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ */ virtual double invIntegOverP(const double r, const IdList & ids, unsigned int PDFfactor=0) const; //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<HalfOneHalfSplitFn> initHalfOneHalfSplitFn; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ HalfOneHalfSplitFn & operator=(const HalfOneHalfSplitFn &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of HalfOneHalfSplitFn. */ template <> struct BaseClassTrait<Herwig::HalfOneHalfSplitFn,1> { /** Typedef of the first base class of HalfOneHalfSplitFn. */ typedef Herwig::SplittingFunction NthBase; }; /** This template specialization informs ThePEG about the name of * the HalfOneHalfSplitFn class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::HalfOneHalfSplitFn> : public ClassTraitsBase<Herwig::HalfOneHalfSplitFn> { /** Return a platform-independent class name */ static string className() { return "Herwig::HalfOneHalfSplitFn"; } /** * The name of a file containing the dynamic library where the class * HalfOneHalfSplitFn is implemented. It may also include several, space-separated, * libraries if the class HalfOneHalfSplitFn depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_HalfOneHalfSplitFn_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/SplittingGenerator.h����������������������������������0000644�0001750�0001750�00000026104�11754474775�026115� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SplittingGenerator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SplittingGenerator_H #define HERWIG_SplittingGenerator_H // // This is the declaration of the SplittingGenerator class. // #include "ThePEG/Interface/Interfaced.h" #include "Herwig++/Shower/Base/Branching.h" #include "Herwig++/Shower/Base/SudakovFormFactor.h" #include "SplittingGenerator.fh" #include "Herwig++/Shower/Base/ShowerKinematics.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * * This class is responsible for creating, at the beginning of the Run, * all the SplittingFunction objects and the corresponding * SudakovFormFactor objects, and then of the generation of splittings * (radiation emissions) during the event. * Many switches are defined in this class which allowed the user to turn on/off: * - each type of interaction (QCD, QED, EWK,...); * - initial- and final-state radiation for all type of interactions; * - initial- and final-state radiation for each type of interaction; * - each type of splitting (\f$u\to ug\f$, \f$d\to dg\f$, \f$\ldots\f$, * \f$g\to gg\f$, \f$g\to u\bar{u}\f$, \f$\ldots\f$). * * These switches are useful mainly for debugging, but eventually can * also be used for a "quick and dirty" estimation of systematic errors. * * In the future it should be possible to implement in this class * * - the \f$1\to2\f$ azimuthal correlations for soft emission due to QCD coherence * using the ShowerParticle object provided in the input. * - Similarly having the \f$\rho-D\f$ matrix and the SplittingFunction pointer * it should be possible to implement the spin correlations. * * @see SudakovFormFactor * @see SplitFun * * @see \ref SplittingGeneratorInterfaces "The interfaces" * defined for SplittingGenerator. */ class SplittingGenerator: public Interfaced { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ SplittingGenerator() : _isr_Mode(1), _fsr_Mode(1) {} //@} public: /** * Methods to select the next branching and reconstruct the kinematics */ //@{ /** * Choose a new forward branching for a time-like particle * The method returns: * - a pointer to a ShowerKinematics object, which * contains the information about the new scale and all other * kinematics variables that need to be generated simultaneously; * - a pointer to the SudakovFormFactor object associated * with the chosen emission. * - The PDG codes of the particles in the branching, * as a Branching struct. * * In the case no branching has been generated, both the returned * pointers are null ( ShoKinPtr() , tSudakovFFPtr() ). * * @param particle The particle to be evolved * @param enhance The factor by which to ehnace the emission of radiation * @param type The type of interaction to generate * @return The Branching struct for the branching */ Branching chooseForwardBranching(ShowerParticle & particle, double enhance, ShowerInteraction::Type type) const; /** * Select the next branching of a particles for the initial-state shower * in the particle's decay. * @param particle The particle being showerwed * @param maxscale The maximum scale * @param minmass Minimum mass of the particle after the branching * @param enhance The factor by which to ehnace the emission of radiation * @param type The type of interaction to generate * @return The Branching struct for the branching */ Branching chooseDecayBranching(ShowerParticle & particle, Energy maxscale, Energy minmass,double enhance, ShowerInteraction::Type type) const; /** * Choose a new backward branching for a space-like particle. * The method returns: * - a pointer to a ShowerKinematics object, which * contains the information about the new scale and all other * kinematics variables that need to be generated simultaneously; * - a pointer to the SudakovFormFactor object associated * with the chosen emission. * - The PDG codes of the particles in the branching, * as a Branching struct. * * In the case no branching has been generated, both the returned * pointers are null ( ShoKinPtr() , tSudakovFFPtr() ). * * @param particle The particle to be evolved * @param enhance The factor by which to ehnace the emission of radiation * @param beamparticle The beam particle * @param beam The BeamParticleData object * @param type The type of interaction to generate * @return The Branching struct for the branching */ Branching chooseBackwardBranching(ShowerParticle & particle, PPtr beamparticle, double enhance, Ptr<BeamParticleData>::transient_const_pointer beam, ShowerInteraction::Type type, tcPDFPtr , Energy ) const; //@} public: /** * Access to the switches */ //@{ /** * It returns true/false if the initial-state radiation is on/off. */ bool isISRadiationON() const { return _isr_Mode; } /** * It returns true/false if the final-state radiation is on/off. */ bool isFSRadiationON() const { return _fsr_Mode; } //@} /** * Methods to parse the information from the input files to create the * branchings */ //@{ /** * Add a final-state splitting */ string addFinalSplitting(string arg) { return addSplitting(arg,true); } /** * Add an initial-state splitting */ string addInitialSplitting(string arg) { return addSplitting(arg,false); } /** * Add a final-state splitting */ string deleteFinalSplitting(string arg) { return deleteSplitting(arg,true); } /** * Add an initial-state splitting */ string deleteInitialSplitting(string arg) { return deleteSplitting(arg,false); } //@} /** * Access to the splittings */ //@{ /** * Access the final-state branchings */ const BranchingList & finalStateBranchings() const { return _fbranchings; } /** * Access the initial-state branchings */ const BranchingList & initialStateBranchings() const { return _bbranchings; } //@} 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. */ //@{ /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans) ; /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} private: /** * Add a branching to the map * @param ids PDG coeds of the particles in the branching * @param sudakov The SudakovFormFactor for the branching * @param final Whether this is an initial- or final-state branching */ void addToMap(const IdList & ids, const SudakovPtr & sudakov, bool final); /** * Remove a branching to the map * @param ids PDG coeds of the particles in the branching * @param sudakov The SudakovFormFactor for the branching * @param final Whether this is an initial- or final-state branching */ void deleteFromMap(const IdList & ids, const SudakovPtr & sudakov, bool final); /** * Obtain the reference vectors for a final-state particle * @param particle The particle * @param p The p reference vector * @param n The n reference vector */ void finalStateBasisVectors(ShowerParticle particle, Lorentz5Momentum & p, Lorentz5Momentum & n) const; /** * Add a splitting * @param in string to be parsed * @param final Whether this is an initial- or final-state branching */ string addSplitting(string in ,bool final); /** * Delete a splitting * @param in string to be parsed * @param final Whether this is an initial- or final-state branching */ string deleteSplitting(string in ,bool final); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<SplittingGenerator> initSplittingGenerator; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SplittingGenerator & operator=(const SplittingGenerator &); private: /** * Switches to control the radiation */ //@{ /** * Is inqitial-state radiation on/off */ bool _isr_Mode; /** * Is final-state radiation on/off */ bool _fsr_Mode; //@} /** * List of the branchings and the appropriate Sudakovs for forward branchings */ BranchingList _fbranchings; /** * Lists of the branchings and the appropriate Sudakovs for backward branchings. */ BranchingList _bbranchings; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SplittingGenerator. */ template <> struct BaseClassTrait<Herwig::SplittingGenerator,1> { /** Typedef of the first base class of SplittingGenerator. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the SplittingGenerator class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SplittingGenerator> : public ClassTraitsBase<Herwig::SplittingGenerator> { /** Return a platform-independent class name */ static string className() { return "Herwig::SplittingGenerator"; } }; /** @endcond */ } #endif /* HERWIG_SplittingGenerator_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/SplittingGenerator.fh���������������������������������0000644�0001750�0001750�00000000545�11754474775�026264� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the SplittingGenerator class. // #ifndef HERWIG_SplittingGenerator_FH #define HERWIG_SplittingGenerator_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class SplittingGenerator; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::SplittingGenerator,SplittingGeneratorPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/ZeroZeroOneSplitFn.h����������������������������������0000644�0001750�0001750�00000014175�11754474775�026017� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ZeroZeroOneSplitFn.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ZeroZeroOneSplitFn_H #define HERWIG_ZeroZeroOneSplitFn_H // // This is the declaration of the ZeroZeroOneSplitFn class. // #include "SplittingFunction.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * This class provides the concrete implementation of the exact leading-order * splitting function for \f$\phi\to \phi g\f$. * * In this case the splitting function is given by * \f[P(z,t) = 2C\left(\frac{z}{1-z}-\frac{m^2_\phi}{t}\right),\f] * where \f$C\f$ is the corresponding colour factor. * Our choice for the overestimate is * \f[P_{\rm over}(z) = \frac{2C}{1-z},\f] * therefore the integral is * \f[\int P_{\rm over}(z) {\rm d}z = -2C\ln(1-z),\f] * and its inverse is * \f[1-\exp\left(\frac{r}{2C}\right).\f] * * @see \ref ZeroZeroOneSplitFnInterfaces "The interfaces" * defined for ZeroZeroOneSplitFn. */ class ZeroZeroOneSplitFn: public SplittingFunction { public: /** * The default constructor. */ inline ZeroZeroOneSplitFn() : SplittingFunction(1) {} /** * Concrete implementation of the method to determine whether this splitting * function can be used for a given set of particles. * @param ids The PDG codes for the particles in the splitting. */ virtual bool accept(const IdList & ids) const; /** * Methods to return the splitting function. */ //@{ /** * The concrete implementation of the splitting function, \f$P\f$. * @param z The energy fraction. * @param t The scale. * @param ids The PDG codes for the particles in the splitting. * @param mass Whether or not to include the mass dependent terms */ virtual double P(const double z, const Energy2 t, const IdList & ids, bool mass) const; /** * The concrete implementation of the overestimate of the splitting function, * \f$P_{\rm over}\f$. * @param z The energy fraction. * @param ids The PDG codes for the particles in the splitting. */ virtual double overestimateP(const double z, const IdList & ids) const; /** * The concrete implementation of the * the ratio of the splitting function to the overestimate, i.e. * \f$P(z,\tilde{q}^2)/P_{\rm over}(z)\f$. * @param z The energy fraction. * @param t The scale. * @param ids The PDG codes for the particles in the splitting. * @param mass Whether or not to include the mass dependent terms */ virtual double ratioP(const double z, const Energy2 t, const IdList & ids, bool mass) const; /** * The concrete implementation of the indefinite integral of the * overestimated splitting function, \f$P_{\rm over}\f$. * @param z The energy fraction. * @param ids The PDG codes for the particles in the splitting. * @param PDFfactor Which additional factor to include for the PDF * 0 is no additional factor, * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ */ virtual double integOverP(const double z, const IdList & ids, unsigned int PDFfactor=0) const; /** * The concrete implementation of the inverse of the indefinite integral. * @param r Value of the splitting function to be inverted * @param ids The PDG codes for the particles in the splitting. * @param PDFfactor Which additional factor to include for the PDF * 0 is no additional factor, * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ */ virtual double invIntegOverP(const double r, const IdList & ids, unsigned int PDFfactor=0) const; //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription<ZeroZeroOneSplitFn> initZeroZeroOneSplitFn; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ZeroZeroOneSplitFn & operator=(const ZeroZeroOneSplitFn &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ZeroZeroOneSplitFn. */ template <> struct BaseClassTrait<Herwig::ZeroZeroOneSplitFn,1> { /** Typedef of the first base class of ZeroZeroOneSplitFn. */ typedef Herwig::SplittingFunction NthBase; }; /** This template specialization informs ThePEG about the name of * the ZeroZeroOneSplitFn class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ZeroZeroOneSplitFn> : public ClassTraitsBase<Herwig::ZeroZeroOneSplitFn> { /** Return a platform-independent class name */ static string className() { return "Herwig::ZeroZeroOneSplitFn"; } /** * The name of a file containing the dynamic library where the class * ZeroZeroOneSplitFn is implemented. It may also include several, space-separated, * libraries if the class ZeroZeroOneSplitFn depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_ZeroZeroOneSplitFn_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/ZeroZeroOneSplitFn.cc���������������������������������0000644�0001750�0001750�00000005417�11754474775�026154� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PhitoPhiGSplitFn.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ZeroZeroOneSplitFn class. // #include "ZeroZeroOneSplitFn.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include <cassert> using namespace Herwig; NoPIOClassDescription<ZeroZeroOneSplitFn> ZeroZeroOneSplitFn::initZeroZeroOneSplitFn; // Definition of the static class description member. void ZeroZeroOneSplitFn::Init() { static ClassDocumentation<ZeroZeroOneSplitFn> documentation ("The ZeroZeroOneSplitFn class implements the splitting function for the " "radiation of a gluon by a scalar coloured particle"); } double ZeroZeroOneSplitFn::P(const double z, const Energy2 t, const IdList &ids, const bool mass) const { double val = z/(1.-z); if(mass) { Energy m = getParticleData(ids[0])->mass(); val-= sqr(m)/t; } return 2.*colourFactor()*val; } double ZeroZeroOneSplitFn::overestimateP(const double z, const IdList &) const { return 2.*colourFactor()/(1.-z); } double ZeroZeroOneSplitFn::ratioP(const double z, const Energy2 t, const IdList &ids,const bool mass) const { double val = z; if(mass) { Energy m = getParticleData(ids[0])->mass(); val-=sqr(m)*(1.-z)/t; } return val; } double ZeroZeroOneSplitFn::integOverP(const double z, const IdList & , unsigned int PDFfactor) const { switch(PDFfactor) { case 0: return -2.*colourFactor()*log(1.-z); case 1: case 2: case 3: default: throw Exception() << "ZeroZeroOneSplitFn::integOverP() invalid PDFfactor = " << PDFfactor << Exception::runerror; } } double ZeroZeroOneSplitFn::invIntegOverP(const double r, const IdList & , unsigned int PDFfactor) const { switch(PDFfactor) { case 0: return 1. - exp(- 0.5*r/colourFactor()); case 1: case 2: case 3: default: throw Exception() << "ZeroZeroOneSplitFn::integOverP() invalid PDFfactor = " << PDFfactor << Exception::runerror; } } bool ZeroZeroOneSplitFn::accept(const IdList &ids) const { if(ids.size()!=3) return false; if(ids[0]!=ids[1]) return false; tcPDPtr q=getParticleData(ids[0]); tcPDPtr g=getParticleData(ids[2]); if(q->iSpin()!=PDT::Spin0 || g->iSpin()!=PDT::Spin1) return false; return checkColours(ids); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/SplittingFunction.cc����������������������������������0000644�0001750�0001750�00000053617�11754474775�026123� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SplittingFunction.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SplittingFunction class. // #include "SplittingFunction.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Utilities/EnumIO.h" #include "Herwig++/Shower/Base/ShowerParticle.h" using namespace Herwig; AbstractClassDescription<SplittingFunction> SplittingFunction::initSplittingFunction; // Definition of the static class description member. void SplittingFunction::Init() { static ClassDocumentation<SplittingFunction> documentation ("The SplittingFunction class is the based class for 1->2 splitting functions" " in Herwig++"); static Switch<SplittingFunction,ColourStructure> interfaceColourStructure ("ColourStructure", "The colour structure for the splitting function", &SplittingFunction::_colourStructure, Undefined, false, false); static SwitchOption interfaceColourStructureTripletTripletOctet (interfaceColourStructure, "TripletTripletOctet", "3 -> 3 8", TripletTripletOctet); static SwitchOption interfaceColourStructureOctetOctetOctet (interfaceColourStructure, "OctetOctetOctet", "8 -> 8 8", OctetOctetOctet); static SwitchOption interfaceColourStructureOctetTripletTriplet (interfaceColourStructure, "OctetTripletTriplet", "8 -> 3 3bar", OctetTripletTriplet); static SwitchOption interfaceColourStructureTripletOctetTriplet (interfaceColourStructure, "TripletOctetTriplet", "3 -> 8 3", TripletOctetTriplet); static SwitchOption interfaceColourStructureSextetSextetOctet (interfaceColourStructure, "SextetSextetOctet", "6 -> 6 8", SextetSextetOctet); static Switch<SplittingFunction,ShowerInteraction::Type> interfaceInteractionType ("InteractionType", "Type of the interaction", &SplittingFunction::_interactionType, ShowerInteraction::UNDEFINED, false, false); static SwitchOption interfaceInteractionTypeQCD (interfaceInteractionType, "QCD","QCD",ShowerInteraction::QCD); static Switch<SplittingFunction,int> interfaceSplittingColourMethod ("SplittingColourMethod", "Choice of assigning colour in 8->88 splittings.", &SplittingFunction::_splittingColourMethod, 0, false, false); static SwitchOption interfaceSplittingColourMethodRandom (interfaceSplittingColourMethod, "Random", "Choose colour assignments randomly.", 0); static SwitchOption interfaceSplittingColourMethodCorrectLines (interfaceSplittingColourMethod, "CorrectLines", "Choose correct lines for colour.", 1); static SwitchOption interfaceSplittingColourMethodRandomRecord (interfaceSplittingColourMethod, "RandomRecord", "Choose colour assignments randomly and record the result.", 2); } void SplittingFunction::persistentOutput(PersistentOStream & os) const { using namespace ShowerInteraction; os << oenum(_interactionType) << _interactionorder << oenum(_colourStructure) << _colourFactor << _splittingColourMethod; } void SplittingFunction::persistentInput(PersistentIStream & is, int) { using namespace ShowerInteraction; is >> ienum(_interactionType) >> _interactionorder >> ienum(_colourStructure) >> _colourFactor >> _splittingColourMethod; } void SplittingFunction::colourConnection(tShowerParticlePtr parent, tShowerParticlePtr first, tShowerParticlePtr second, const bool back) const { if(_colourStructure==TripletTripletOctet) { if(!back) { ColinePair cparent = ColinePair(parent->colourLine(), parent->antiColourLine()); // ensure input consistency assert((!cparent.first && cparent.second) || ( cparent.first && !cparent.second)); // q -> q g if(cparent.first) { ColinePtr newline=new_ptr(ColourLine()); cparent.first->addColoured(second); newline->addColoured ( first); newline->addAntiColoured (second); } // qbar -> qbar g else { ColinePtr newline=new_ptr(ColourLine()); cparent.second->addAntiColoured(second); newline->addColoured(second); newline->addAntiColoured(first); } // Set progenitor first->setProgenitor(parent->progenitor()); second->setProgenitor(parent->progenitor()); // Random radiation choice first->setRadiationLine(0); second->setRadiationLine(0); } else { ColinePair cfirst = ColinePair(first->colourLine(), first->antiColourLine()); // ensure input consistency assert(( cfirst.first && !cfirst.second) || (!cfirst.first && cfirst.second)); // q -> q g if(cfirst.first) { ColinePtr newline=new_ptr(ColourLine()); cfirst.first->addAntiColoured(second); newline->addColoured(second); newline->addColoured(parent); } // qbar -> qbar g else { ColinePtr newline=new_ptr(ColourLine()); cfirst.second->addColoured(second); newline->addAntiColoured(second); newline->addAntiColoured(parent); } // Set progenitor parent->setProgenitor(first->progenitor()); second->setProgenitor(first->progenitor()); // Random radiation choice parent->setRadiationLine(0); second->setRadiationLine(0); } } else if(_colourStructure==OctetOctetOctet) { if(!back) { ColinePair cparent = ColinePair(parent->colourLine(), parent->antiColourLine()); // ensure input consistency assert(cparent.first&&cparent.second); // The choice of colour line is determined by the // radiation line of the parent. // If the radiation line is non-zero and the // scale of the parent is above the second scale of the // progenitor it will only radiate from the chosen radiation // line. Otherwise the parent will radiate randomly. // Initializing radiation lines first->setRadiationLine(0); second->setRadiationLine(0); // Switch to choose random or non-random choice of lines bool randomchoice = 0; // Radiation line int radiationLine = 0; if (_splittingColourMethod == 1){ // Choose the appropriate colour lines if ((parent->radiationLine() == 1 || parent->radiationLine() == 2) && parent->progenitor() ) { if (parent->evolutionScale() > parent->progenitor()->evolutionScale2()){ // Parent has a radiation line, so the line which should // radiate, and therefore the choice of which colour line // to pass onto which child, is already determined. randomchoice = 1; if(parent->radiationLine() == 2) { // The anti-colour line is radiating ColinePtr newline=new_ptr(ColourLine()); cparent.first->addColoured(first); cparent.second->addAntiColoured(second); newline->addColoured(second); newline->addAntiColoured(first); // Set the radiation line for the children radiationLine = parent->radiationLine(); } else { // The colour line is radiating ColinePtr newline=new_ptr(ColourLine()); cparent.first->addColoured(second); cparent.second->addAntiColoured(first); newline->addColoured(first); newline->addAntiColoured(second); // Set the radiation line for the children radiationLine = parent->radiationLine(); } } } } if (randomchoice == 0) { // Randomly decide which of the two gluon products take the // colour line passing for the colour of the parent gluon // (the other will take the one passing for the anticolour of // the parent gluon). if(UseRandom::rndbool()) { ColinePtr newline=new_ptr(ColourLine()); cparent.first->addColoured(first); cparent.second->addAntiColoured(second); newline->addColoured(second); newline->addAntiColoured(first); if (_splittingColourMethod == 1 || _splittingColourMethod == 2){ if (parent->radiationLine() == 1 || parent->radiationLine() == 2){ // Record which line radiates radiationLine = 2; } } } else { ColinePtr newline=new_ptr(ColourLine()); cparent.first->addColoured(second); cparent.second->addAntiColoured(first); newline->addColoured(first); newline->addAntiColoured(second); if (_splittingColourMethod == 1 || _splittingColourMethod == 2){ if (parent->radiationLine() == 1 || parent->radiationLine() == 2){ // Record which line radiates radiationLine = 1; } } } } if (_splittingColourMethod == 1 || _splittingColourMethod == 2){ if (parent->radiationLine() == 1 || parent->radiationLine() == 2){ // Set the radiation line for the children first->setRadiationLine(radiationLine); second->setRadiationLine(0); // Set the progenitors for the children first->setProgenitor(parent->progenitor()); second->setProgenitor(parent->progenitor()); } } } else { ColinePair cfirst = ColinePair(first->colourLine(), first->antiColourLine()); // ensure input consistency assert(cfirst.first&&cfirst.second); // The choice of colour line is determined by the // radiation line of the parent. // If the radiation line is non-zero and the // scale of the parent is above the second scale of the // progenitor it will only radiate from the chosen radiation // line. Otherwise the parent will radiate randomly. // Initializing radiation lines parent->setRadiationLine(0); second->setRadiationLine(0); // Switch to choose random or non-random choice of lines bool randomchoice = 0; // Radiation line int radiationLine = 0; if (_splittingColourMethod == 1){ // Choose the appropriate colour lines if ((first->radiationLine() == 1 || first->radiationLine() == 2) && first->progenitor()) { if (first->evolutionScale() > first->progenitor()->evolutionScale2()){ // Parent has a radiation line, so the line which should // radiate, and therefore the choice of which colour line // to pass onto which child, is already determined. randomchoice = 1; if (first->radiationLine() == 2) { // The anti-colour line is radiating ColinePtr newline=new_ptr(ColourLine()); cfirst.first->addColoured(parent); cfirst.second->addColoured(second); newline->addAntiColoured(second); newline->addAntiColoured(parent); // Set the radiation line for the children radiationLine = first->radiationLine(); } else { // The colour line is radiating ColinePtr newline=new_ptr(ColourLine()); cfirst.first->addAntiColoured(second); cfirst.second->addAntiColoured(parent); newline->addColoured(parent); newline->addColoured(second); // Set the radiation line for the children radiationLine = first->radiationLine(); } } } } if (randomchoice == 0) { // Randomly decide which of the two gluon products take the // colour line passing for the colour of the parent gluon // (the other will take the one passing for the anticolour of // the parent gluon). if (UseRandom::rndbool()) { ColinePtr newline=new_ptr(ColourLine()); cfirst.first->addColoured(parent); cfirst.second->addColoured(second); newline->addAntiColoured(second); newline->addAntiColoured(parent); if (_splittingColourMethod == 1 || _splittingColourMethod == 2){ if (first->radiationLine() == 1 || first->radiationLine() == 2){ // Record which line radiates radiationLine = 2; } } } else { ColinePtr newline=new_ptr(ColourLine()); cfirst.first->addAntiColoured(second); cfirst.second->addAntiColoured(parent); newline->addColoured(parent); newline->addColoured(second); if (_splittingColourMethod == 1 || _splittingColourMethod == 2){ if (first->radiationLine() == 1 || first->radiationLine() == 2){ // Record which line radiates radiationLine = 1; } } } } if (_splittingColourMethod == 1 || _splittingColourMethod == 2){ if (first->radiationLine() == 1 || first->radiationLine() == 2){ // Set the radiation line for the children parent->setRadiationLine(radiationLine); second->setRadiationLine(0); // Set the progenitors for the children parent->setProgenitor(first->progenitor()); second->setProgenitor(first->progenitor()); } } } } else if(_colourStructure == OctetTripletTriplet) { if(!back) { ColinePair cparent = ColinePair(parent->colourLine(), parent->antiColourLine()); // ensure input consistency assert(cparent.first&&cparent.second); cparent.first ->addColoured ( first); cparent.second->addAntiColoured(second); // Set progenitor first->setProgenitor(parent->progenitor()); second->setProgenitor(parent->progenitor()); // Random radiation choice first->setRadiationLine(0); second->setRadiationLine(0); } else { ColinePair cfirst = ColinePair(first->colourLine(), first->antiColourLine()); // ensure input consistency assert(( cfirst.first && !cfirst.second) || (!cfirst.first && cfirst.second)); // g -> q qbar if(cfirst.first) { ColinePtr newline=new_ptr(ColourLine()); cfirst.first->addColoured(parent); newline->addAntiColoured(second); newline->addAntiColoured(parent); } // g -> qbar q else { ColinePtr newline=new_ptr(ColourLine()); cfirst.second->addAntiColoured(parent); newline->addColoured(second); newline->addColoured(parent); } // Set progenitor parent->setProgenitor(first->progenitor()); second->setProgenitor(first->progenitor()); // Random radiation choice parent->setRadiationLine(0); second->setRadiationLine(0); } } else if(_colourStructure == TripletOctetTriplet) { if(!back) { ColinePair cparent = ColinePair(parent->colourLine(), parent->antiColourLine()); // ensure input consistency assert(( cparent.first && !cparent.second) || (!cparent.first && cparent.second)); // q -> g q if(cparent.first) { ColinePtr newline=new_ptr(ColourLine()); cparent.first->addColoured(first); newline->addColoured (second); newline->addAntiColoured( first); } // qbar -> g qbar else { ColinePtr newline=new_ptr(ColourLine()); cparent.second->addAntiColoured(first); newline->addColoured ( first); newline->addAntiColoured(second); } // Set progenitor first->setProgenitor(parent->progenitor()); second->setProgenitor(parent->progenitor()); // Random radiation choice first->setRadiationLine(0); second->setRadiationLine(0); } else { ColinePair cfirst = ColinePair(first->colourLine(), first->antiColourLine()); // ensure input consistency assert(cfirst.first&&cfirst.second); // q -> g q if(parent->id()>0) { cfirst.first ->addColoured(parent); cfirst.second->addColoured(second); } else { cfirst.first ->addAntiColoured(second); cfirst.second->addAntiColoured(parent); } // Set progenitor parent->setProgenitor(first->progenitor()); second->setProgenitor(first->progenitor()); // Random radiation choice parent->setRadiationLine(0); second->setRadiationLine(0); } } else if(_colourStructure==SextetSextetOctet) { //make sure we're not doing backward evolution assert(!back); //make sure something sensible assert(parent->colourLine() || parent->antiColourLine()); //get the colour lines or anti-colour lines bool isAntiColour=true; ColinePair cparent; if(parent->colourLine()) { cparent = ColinePair(const_ptr_cast<tColinePtr>(parent->colourInfo()->colourLines()[0]), const_ptr_cast<tColinePtr>(parent->colourInfo()->colourLines()[1])); isAntiColour=false; } else { cparent = ColinePair(const_ptr_cast<tColinePtr>(parent->colourInfo()->antiColourLines()[0]), const_ptr_cast<tColinePtr>(parent->colourInfo()->antiColourLines()[1])); } //check for sensible input // assert(cparent.first && cparent.second); // sextet has 2 colour lines if(!isAntiColour) { //pick at random which of the colour topolgies to take double topology = UseRandom::rnd(); if(topology < 0.25) { ColinePtr newline=new_ptr(ColourLine()); cparent.first->addColoured(second); cparent.second->addColoured(first); newline->addColoured(first); newline->addAntiColoured(second); } else if(topology >=0.25 && topology < 0.5) { ColinePtr newline=new_ptr(ColourLine()); cparent.first->addColoured(first); cparent.second->addColoured(second); newline->addColoured(first); newline->addAntiColoured(second); } else if(topology >= 0.5 && topology < 0.75) { ColinePtr newline=new_ptr(ColourLine()); cparent.first->addColoured(second); cparent.second->addColoured(first); newline->addColoured(first); newline->addAntiColoured(second); } else { ColinePtr newline=new_ptr(ColourLine()); cparent.first->addColoured(first); cparent.second->addColoured(second); newline->addColoured(first); newline->addAntiColoured(second); } } // sextet has 2 anti-colour lines else { double topology = UseRandom::rnd(); if(topology < 0.25){ ColinePtr newline=new_ptr(ColourLine()); cparent.first->addAntiColoured(second); cparent.second->addAntiColoured(first); newline->addAntiColoured(first); newline->addColoured(second); } else if(topology >=0.25 && topology < 0.5) { ColinePtr newline=new_ptr(ColourLine()); cparent.first->addAntiColoured(first); cparent.second->addAntiColoured(second); newline->addAntiColoured(first); newline->addColoured(second); } else if(topology >= 0.5 && topology < 0.75) { ColinePtr newline=new_ptr(ColourLine()); cparent.first->addAntiColoured(second); cparent.second->addAntiColoured(first); newline->addAntiColoured(first); newline->addColoured(second); } else { ColinePtr newline=new_ptr(ColourLine()); cparent.first->addAntiColoured(first); cparent.second->addAntiColoured(second); newline->addAntiColoured(first); newline->addColoured(second); } } } else { assert(false); } } void SplittingFunction::doinit() { Interfaced::doinit(); assert(_interactionType!=ShowerInteraction::UNDEFINED); if(_colourFactor>0.) return; // compute the colour factors if need if(_colourStructure==TripletTripletOctet) { _colourFactor = 4./3.; } else if(_colourStructure==OctetOctetOctet) { _colourFactor = 3.; } else if(_colourStructure==OctetTripletTriplet) { _colourFactor = 0.5; } else if(_colourStructure==TripletOctetTriplet) { _colourFactor = 4./3.; } else if(_colourStructure==SextetSextetOctet) { _colourFactor = 10./3.; } else { assert(false); } } bool SplittingFunction::checkColours(const IdList & ids) const { tcPDPtr pd[3]={getParticleData(ids[0]), getParticleData(ids[1]), getParticleData(ids[2])}; if(_colourStructure==TripletTripletOctet) { if(ids[0]!=ids[1]) return false; if((pd[0]->iColour()==PDT::Colour3||pd[0]->iColour()==PDT::Colour3bar) && pd[2]->iColour()==PDT::Colour8) return true; return false; } else if(_colourStructure==OctetOctetOctet) { for(unsigned int ix=0;ix<3;++ix) { if(pd[ix]->iColour()!=PDT::Colour8) return false; } return true; } else if(_colourStructure==OctetTripletTriplet) { if(pd[0]->iColour()!=PDT::Colour8) return false; if(pd[1]->iColour()==PDT::Colour3&&pd[2]->iColour()==PDT::Colour3bar) return true; if(pd[1]->iColour()==PDT::Colour3bar&&pd[2]->iColour()==PDT::Colour3) return true; return false; } else if(_colourStructure==TripletOctetTriplet) { if(ids[0]!=ids[2]) return false; if((pd[0]->iColour()==PDT::Colour3||pd[0]->iColour()==PDT::Colour3bar) && pd[1]->iColour()==PDT::Colour8) return true; return false; } else if(_colourStructure==SextetSextetOctet) { if(ids[0]!=ids[1]) return false; if((pd[0]->iColour()==PDT::Colour6 || pd[0]->iColour()==PDT::Colour6bar) && pd[2]->iColour()==PDT::Colour8) return true; return false; } else { assert(false); } return false; } �����������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/OneHalfHalfSplitFn.cc���������������������������������0000644�0001750�0001750�00000005572�11754474775�026044� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // OneHalfHalfSplitFn.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the OneHalfHalfSplitFn class. // #include "OneHalfHalfSplitFn.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include <cassert> using namespace Herwig; NoPIOClassDescription<OneHalfHalfSplitFn> OneHalfHalfSplitFn::initOneHalfHalfSplitFn; // Definition of the static class description member. void OneHalfHalfSplitFn::Init() { static ClassDocumentation<OneHalfHalfSplitFn> documentation ("The OneHalfHalfSplitFn class implements the splitting function for g->q qbar"); } double OneHalfHalfSplitFn::P(const double z, const Energy2 t, const IdList &ids, const bool mass) const { double zz = z*(1.-z); double val=1.-2.*zz; if(mass) { Energy m = getParticleData(ids[1])->mass(); val +=2.*sqr(m)/t; } return colourFactor()*val; } double OneHalfHalfSplitFn::overestimateP(const double, const IdList &) const { return colourFactor(); } double OneHalfHalfSplitFn::ratioP(const double z, const Energy2 t, const IdList &ids, const bool mass) const { double zz = z*(1.-z); double val = 1.-2.*zz; if(mass) { Energy m = getParticleData(ids[1])->mass(); val+= 2.*sqr(m)/t; } return val; } double OneHalfHalfSplitFn::integOverP(const double z, const IdList & , unsigned int PDFfactor) const { switch(PDFfactor) { case 0: return colourFactor()*z; case 1: return colourFactor()*log(z); case 2: return -colourFactor()*log(1.-z); case 3: return colourFactor()*log(z/(1.-z)); default: throw Exception() << "OneHalfHalfSplitFn::integOverP() invalid PDFfactor = " << PDFfactor << Exception::runerror; } } double OneHalfHalfSplitFn::invIntegOverP(const double r, const IdList & , unsigned int PDFfactor) const { switch(PDFfactor) { case 0: return r/colourFactor(); case 1: return exp(r/colourFactor()); case 2: return 1.-exp(-r/colourFactor()); case 3: return 1./(1.+exp(-r/colourFactor())); default: throw Exception() << "OneHalfHalfSplitFn::integOverP() invalid PDFfactor = " << PDFfactor << Exception::runerror; } } bool OneHalfHalfSplitFn::accept(const IdList &ids) const { if(ids.size()!=3) return false; if(ids[1]!=-ids[2]) return false; tcPDPtr q=getParticleData(ids[1]); if(q->iSpin()!=PDT::Spin1Half) return false; tcPDPtr g=getParticleData(ids[0]); if(g->iSpin()!=PDT::Spin1) return false; return checkColours(ids); } ��������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/HalfHalfOneSplitFn.cc���������������������������������0000644�0001750�0001750�00000005541�11754474775�026040� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HalfHalfOneSplitFn.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the HalfHalfOneSplitFn class. // #include "HalfHalfOneSplitFn.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include <cassert> using namespace Herwig; NoPIOClassDescription<HalfHalfOneSplitFn> HalfHalfOneSplitFn::initHalfHalfOneSplitFn; // Definition of the static class description member. void HalfHalfOneSplitFn::Init() { static ClassDocumentation<HalfHalfOneSplitFn> documentation ("The HalfHalfOneSplitFn class implements the q -> qg splitting function"); } double HalfHalfOneSplitFn::P(const double z, const Energy2 t, const IdList &ids, const bool mass) const { double val = (1. + sqr(z))/(1.-z); if(mass) { Energy m = getParticleData(ids[0])->mass(); val -= 2.*sqr(m)/t; } return colourFactor()*val; } double HalfHalfOneSplitFn::overestimateP(const double z, const IdList &) const { return 2.*colourFactor()/(1.-z); } double HalfHalfOneSplitFn::ratioP(const double z, const Energy2 t, const IdList &ids, const bool mass) const { double val = 1. + sqr(z); if(mass) { Energy m = getParticleData(ids[0])->mass(); val -= 2.*sqr(m)*(1.-z)/t; } return 0.5*val; } double HalfHalfOneSplitFn::integOverP(const double z, const IdList & , unsigned int PDFfactor) const { switch (PDFfactor) { case 0: return -2.*colourFactor()*log(1.-z); case 1: return 2.*colourFactor()*log(z/(1.-z)); case 2: return 2.*colourFactor()/(1.-z); case 3: default: throw Exception() << "HalfHalfOneSplitFn::integOverP() invalid PDFfactor = " << PDFfactor << Exception::runerror; } } double HalfHalfOneSplitFn::invIntegOverP(const double r, const IdList & , unsigned int PDFfactor) const { switch (PDFfactor) { case 0: return 1. - exp(- 0.5*r/colourFactor()); case 1: return 1./(1.-exp(-0.5*r/colourFactor())); case 2: return 1.-2.*colourFactor()/r; case 3: default: throw Exception() << "HalfHalfOneSplitFn::invIntegOverP() invalid PDFfactor = " << PDFfactor << Exception::runerror; } } bool HalfHalfOneSplitFn::accept(const IdList &ids) const { // 3 particles and in and out fermion same if(ids.size()!=3 || ids[0]!=ids[1]) return false; tcPDPtr q=getParticleData(ids[0]); tcPDPtr g=getParticleData(ids[2]); if(q->iSpin()!=PDT::Spin1Half || g->iSpin()!=PDT::Spin1) return false; return checkColours(ids); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/Makefile.in�������������������������������������������0000644�0001750�0001750�00000044756�11756461701�024165� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Shower/SplittingFunctions DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwSplitting_la_LIBADD = am_libHwSplitting_la_OBJECTS = HalfHalfOneSplitFn.lo \ OneOneOneSplitFn.lo ZeroZeroOneSplitFn.lo \ OneHalfHalfSplitFn.lo HalfOneHalfSplitFn.lo libHwSplitting_la_OBJECTS = $(am_libHwSplitting_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwSplitting_la_SOURCES) DIST_SOURCES = $(libHwSplitting_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwSplitting.la libHwSplitting_la_SOURCES = \ HalfHalfOneSplitFn.h HalfHalfOneSplitFn.cc\ OneOneOneSplitFn.h OneOneOneSplitFn.cc\ ZeroZeroOneSplitFn.h ZeroZeroOneSplitFn.cc\ OneHalfHalfSplitFn.h OneHalfHalfSplitFn.cc\ HalfOneHalfSplitFn.h HalfOneHalfSplitFn.cc all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Shower/SplittingFunctions/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Shower/SplittingFunctions/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwSplitting.la: $(libHwSplitting_la_OBJECTS) $(libHwSplitting_la_DEPENDENCIES) $(EXTRA_libHwSplitting_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwSplitting_la_OBJECTS) $(libHwSplitting_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HalfHalfOneSplitFn.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HalfOneHalfSplitFn.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OneHalfHalfSplitFn.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OneOneOneSplitFn.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ZeroZeroOneSplitFn.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/SplittingFunction.h�����������������������������������0000644�0001750�0001750�00000024123�11754474775�025753� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SplittingFunction.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SplittingFunction_H #define HERWIG_SplittingFunction_H // // This is the declaration of the SplittingFunction class. // #include "ThePEG/Interface/Interfaced.h" #include "Herwig++/Shower/ShowerConfig.h" #include "ThePEG/EventRecord/ColourLine.h" #include "SplittingFunction.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * Enum to define the possible types of colour structure which can occur in * the branching. */ enum ColourStructure {Undefined=-1,TripletTripletOctet=0,OctetOctetOctet=1, OctetTripletTriplet=2,TripletOctetTriplet=3,SextetSextetOctet=4}; /** \ingroup Shower * * This is an abstract class which defines the common interface * for all \f$1\to2\f$ splitting functions, for both initial-state * and final-state radiation. * * The SplittingFunction class contains a number of purely virtual members * which must be implemented in the inheriting classes. The class also stores * the interaction type of the spltting function. * * The inheriting classes need to specific the splitting function * \f$P(z,2p_j\cdot p_k)\f$, in terms of the energy fraction \f$z\f$ and * the evolution scale. In order to allow the splitting functions to be used * with different choices of evolution functions the scale is given by * \f[2p_j\cdot p_k=(p_j+p_k)^2-m_{jk}^2=Q^2-(p_j+p_k)^2=z(1-z)\tilde{q}^2= * \frac{p_T^2}{z(1-z)}-m_{jk}^2+\frac{m_j^2}{z}+\frac{m_k^2}{1-z},\f] * where \f$Q^2\f$ is the virtuality of the branching particle, * $p_T$ is the relative transverse momentum of the branching products and * \f$\tilde{q}^2\f$ is the angular variable described in hep-ph/0310083. * * In addition an overestimate of the * splitting function, \f$P_{\rm over}(z)\f$ which only depends upon \f$z\f$, * the integral, inverse of the integral for this overestimate and * ratio of the true splitting function to the overestimate must be provided * as they are necessary for the veto alogrithm used to implement the evolution. * * @see \ref SplittingFunctionInterfaces "The interfaces" * defined for SplittingFunction. */ class SplittingFunction: public Interfaced { public: /** * The default constructor. * @param b All splitting functions must have an interaction order */ SplittingFunction(unsigned int b) : Interfaced(), _interactionType(ShowerInteraction::UNDEFINED), _interactionorder(b), _colourStructure(Undefined), _colourFactor(-1.), _splittingColourMethod(0) {} public: /** * Methods to return the interaction type and order for the splitting function */ //@{ /** * Return the type of the interaction */ ShowerInteraction::Type interactionType() const {return _interactionType;} /** * Return the order of the splitting function in the interaction */ unsigned int interactionOrder() const {return _interactionorder;} /** * Return the colour structure */ ColourStructure colourStructure() const {return _colourStructure;} /** * Return the colour factor */ double colourFactor() const {return _colourFactor;} //@} /** * Purely virtual method which should determine whether this splitting * function can be used for a given set of particles. * @param ids The PDG codes for the particles in the splitting. */ virtual bool accept(const IdList & ids) const = 0; /** * Method to check the colours are correct */ virtual bool checkColours(const IdList & ids) const; /** * Methods to return the splitting function. */ //@{ /** * Purely virtual method which should return the exact value of the splitting function, * \f$P\f$ evaluated in terms of the energy fraction, \f$z\f$, and the evolution scale \f$\tilde{q}^2\f$. * @param z The energy fraction. * @param t The scale \f$t=2p_j\cdot p_k\f$. * @param ids The PDG codes for the particles in the splitting. * @param mass Whether or not to include the mass dependent terms */ virtual double P(const double z, const Energy2 t, const IdList & ids, const bool mass) const = 0; /** * Purely virtual method which should return * an overestimate of the splitting function, * \f$P_{\rm over}\f$ such that the result \f$P_{\rm over}\geq P\f$. This function * should be simple enough that it does not depend on the evolution scale. * @param z The energy fraction. * @param ids The PDG codes for the particles in the splitting. */ virtual double overestimateP(const double z, const IdList & ids) const = 0; /** * Purely virtual method which should return * the ratio of the splitting function to the overestimate, i.e. * \f$P(z,\tilde{q}^2)/P_{\rm over}(z)\f$. * @param z The energy fraction. * @param t The scale \f$t=2p_j\cdot p_k\f$. * @param ids The PDG codes for the particles in the splitting. * @param mass Whether or not to include the mass dependent terms */ virtual double ratioP(const double z, const Energy2 t, const IdList & ids, const bool mass) const = 0; /** * Purely virtual method which should return the indefinite integral of the * overestimated splitting function, \f$P_{\rm over}\f$. * @param z The energy fraction. * @param ids The PDG codes for the particles in the splitting. * @param PDFfactor Which additional factor to include for the PDF * 0 is no additional factor, * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ * */ virtual double integOverP(const double z, const IdList & ids, unsigned int PDFfactor=0) const = 0; /** * Purely virtual method which should return the inverse of the * indefinite integral of the * overestimated splitting function, \f$P_{\rm over}\f$ which is used to * generate the value of \f$z\f$. * @param r Value of the splitting function to be inverted * @param ids The PDG codes for the particles in the splitting. * @param PDFfactor Which additional factor to include for the PDF * 0 is no additional factor, * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ */ virtual double invIntegOverP(const double r, const IdList & ids, unsigned int PDFfactor=0) const = 0; //@} /** * Purely virtual method which should make the proper colour connection * between the emitting parent and the branching products. * @param parent The parent for the branching * @param first The first branching product * @param second The second branching product * @param back Whether this is foward or backward evolution. */ virtual void colourConnection(tShowerParticlePtr parent, tShowerParticlePtr first, tShowerParticlePtr second, const bool back) 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(); 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(); //@} protected: /** * Set the colour factor */ void colourFactor(double in) {_colourFactor=in;} private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class without persistent data. */ static AbstractClassDescription<SplittingFunction> initSplittingFunction; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SplittingFunction & operator=(const SplittingFunction &); private: /** * The interaction type for the splitting function. */ ShowerInteraction::Type _interactionType; /** * The order of the splitting function in the coupling */ unsigned int _interactionorder; /** * The colour structure */ ColourStructure _colourStructure; /** * The colour factor */ double _colourFactor; /** * The method for assigning colour * The default, 0, will assign colour lines for octets * randomly without keeping a record of which lines radiate. * For option 1 only the "correct" lines will radiate until * the lowest scale is reached. * For option 2 there will be random radiation, but the * line which radiates is recorded */ int _splittingColourMethod; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SplittingFunction. */ template <> struct BaseClassTrait<Herwig::SplittingFunction,1> { /** Typedef of the first base class of SplittingFunction. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the SplittingFunction class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SplittingFunction> : public ClassTraitsBase<Herwig::SplittingFunction> { /** Return a platform-independent class name */ static string className() { return "Herwig::SplittingFunction"; } }; /** @endcond */ } #endif /* HERWIG_SplittingFunction_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/HalfOneHalfSplitFn.cc���������������������������������0000644�0001750�0001750�00000005470�11754474775�026041� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HalfOneHalfSplitFn.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the HalfOneHalfSplitFn class. // #include "HalfOneHalfSplitFn.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include <cassert> using namespace Herwig; NoPIOClassDescription<HalfOneHalfSplitFn> HalfOneHalfSplitFn::initHalfOneHalfSplitFn; // Definition of the static class description member. void HalfOneHalfSplitFn::Init() { static ClassDocumentation<HalfOneHalfSplitFn> documentation ("The HalfOneHalfSplitFn class implements the splitting function for q -> g q"); } double HalfOneHalfSplitFn::P(const double z, const Energy2 t, const IdList &ids, const bool mass) const { double val=(2.*(1.-z)+sqr(z))/z; if(mass) { Energy m = getParticleData(ids[0])->mass(); val-=2.*sqr(m)/t; } return colourFactor()*val; } double HalfOneHalfSplitFn::overestimateP(const double z, const IdList &) const { return 2.*colourFactor()/z; } double HalfOneHalfSplitFn::ratioP(const double z, const Energy2 t, const IdList &ids,const bool mass) const { double val=2.*(1.-z)+sqr(z); if(mass) { Energy m=getParticleData(ids[0])->mass(); val -=2.*sqr(m)*z/t; } return 0.5*val; } double HalfOneHalfSplitFn::integOverP(const double z, const IdList & , unsigned int PDFfactor) const { switch(PDFfactor) { case 0: return 2.*colourFactor()*log(z); case 1: return -2.*colourFactor()/z; case 2: return 2.*colourFactor()*log(z/(1.-z)); case 3: default: throw Exception() << "HalfOneHalfSplitFn::integOverP() invalid PDFfactor = " << PDFfactor << Exception::runerror; } } double HalfOneHalfSplitFn::invIntegOverP(const double r, const IdList & , unsigned int PDFfactor) const { switch(PDFfactor) { case 0: return exp(0.5*r/colourFactor()); case 1: return -2.*colourFactor()/r; case 2: return 1./(1.+exp(-0.5*r/colourFactor())); case 3: default: throw Exception() << "HalfOneHalfSplitFn::integOverP() invalid PDFfactor = " << PDFfactor << Exception::runerror; } } bool HalfOneHalfSplitFn::accept(const IdList &ids) const { // 3 particles and in and out fermion same if(ids.size()!=3 || ids[0]!=ids[2]) return false; tcPDPtr q=getParticleData(ids[0]); tcPDPtr g=getParticleData(ids[1]); if(q->iSpin()!=PDT::Spin1Half || g->iSpin()!=PDT::Spin1) return false; return checkColours(ids); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/HalfHalfOneSplitFn.h����������������������������������0000644�0001750�0001750�00000014224�11754474775�025700� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HalfHalfOneSplitFn.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_HalfHalfOneSplitFn_H #define HERWIG_HalfHalfOneSplitFn_H // // This is the declaration of the HalfHalfOneSplitFn class. // #include "SplittingFunction.h" namespace Herwig { using namespace ThePEG; /**\ingroup Shower * * This class provides the concrete implementation of the exact leading-order * splitting function for \f$\frac12\to q\frac12 1\f$. * * In this case the splitting function is given by * \f[P(z,t) =C\left(\frac{1+z^2}{1-z}-2\frac{m^2_q}{t}\right),\f] * where \f$C\f$ is the corresponding colour factor. * Our choice for the overestimate is * \f[P_{\rm over}(z) = \frac{2C}{1-z},\f] * therefore the integral is * \f[\int P_{\rm over}(z) {\rm d}z = -2C\ln(1-z),\f] * and its inverse is * \f[1-\exp\left(\frac{r}{2C}\right).\f] * * @see \ref HalfHalfOneSplitFnInterfaces "The interfaces" * defined for HalfHalfOneSplitFn. */ class HalfHalfOneSplitFn: public SplittingFunction { public: /** * The default constructor. */ inline HalfHalfOneSplitFn() : SplittingFunction(1) {} /** * Concrete implementation of the method to determine whether this splitting * function can be used for a given set of particles. * @param ids The PDG codes for the particles in the splitting. */ virtual bool accept(const IdList & ids) const; /** * Methods to return the splitting function. */ //@{ /** * The concrete implementation of the splitting function, \f$P(z,t)\f$. * @param z The energy fraction. * @param t The scale. * @param ids The PDG codes for the particles in the splitting. * @param mass Whether or not to include the mass dependent terms */ virtual double P(const double z, const Energy2 t, const IdList & ids, const bool mass) const; /** * The concrete implementation of the overestimate of the splitting function, * \f$P_{\rm over}\f$. * @param z The energy fraction. * @param ids The PDG codes for the particles in the splitting. */ virtual double overestimateP(const double z, const IdList & ids) const; /** * The concrete implementation of the * the ratio of the splitting function to the overestimate, i.e. * \f$P(z,t)/P_{\rm over}(z)\f$. * @param z The energy fraction. * @param t The scale. * @param ids The PDG codes for the particles in the splitting. * @param mass Whether or not to include the mass dependent terms */ virtual double ratioP(const double z, const Energy2 t, const IdList & ids, const bool mass) const; /** * The concrete implementation of the indefinite integral of the * overestimated splitting function, \f$P_{\rm over}\f$. * @param z The energy fraction. * @param ids The PDG codes for the particles in the splitting. * @param PDFfactor Which additional factor to include for the PDF * 0 is no additional factor, * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ */ virtual double integOverP(const double z, const IdList & ids, unsigned int PDFfactor=0) const; /** * The concrete implementation of the inverse of the indefinite integral. * @param r Value of the splitting function to be inverted * @param ids The PDG codes for the particles in the splitting. * @param PDFfactor Which additional factor to include for the PDF * 0 is no additional factor, * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ */ virtual double invIntegOverP(const double r, const IdList & ids, unsigned int PDFfactor=0) const; //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<HalfHalfOneSplitFn> initHalfHalfOneSplitFn; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ HalfHalfOneSplitFn & operator=(const HalfHalfOneSplitFn &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of HalfHalfOneSplitFn. */ template <> struct BaseClassTrait<Herwig::HalfHalfOneSplitFn,1> { /** Typedef of the first base class of HalfHalfOneSplitFn. */ typedef Herwig::SplittingFunction NthBase; }; /** This template specialization informs ThePEG about the name of * the HalfHalfOneSplitFn class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::HalfHalfOneSplitFn> : public ClassTraitsBase<Herwig::HalfHalfOneSplitFn> { /** Return a platform-independent class name */ static string className() { return "Herwig::HalfHalfOneSplitFn"; } /** * The name of a file containing the dynamic library where the class * HalfHalfOneSplitFn is implemented. It may also include several, space-separated, * libraries if the class HalfHalfOneSplitFn depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_HalfHalfOneSplitFn_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/OneOneOneSplitFn.h������������������������������������0000644�0001750�0001750�00000014250�11754474775�025415� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // OneOneOneSplitFn.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_OneOneOneSplitFn_H #define HERWIG_OneOneOneSplitFn_H // // This is the declaration of the OneOneOneSplitFn class. // #include "SplittingFunction.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * * This class provides the concrete implementation of the exact leading-order * splitting function for \f$1\to 11\f$. * * In this case the splitting function is given by * \f[P(z) =2C*\left(\frac{z}{1-z}+\frac{1-z}{z}+z(1-z)\right),\f] * where \f$C=\f$ is the corresponding colour factor. * Our choice for the overestimate is * \f[P_{\rm over}(z) = 2C\left(\frac1z+\frac1{1-z}\right),\f] * therefore the integral is * \f[\int P_{\rm over}(z) {\rm d}z =2C\ln\left(\frac{z}{1-z}\right),\f] * and its inverse is * \f[\frac{\exp\left(\frac{r}{2C}\right)}{(1+\exp\left(\frac{r}{2C}\right)}\f] * * * @see \ref OneOneOneSplitFnInterfaces "The interfaces" * defined for OneOneOneSplitFn. */ class OneOneOneSplitFn: public SplittingFunction { public: /** * The default constructor. */ inline OneOneOneSplitFn() : SplittingFunction(1) {} /** * Concrete implementation of the method to determine whether this splitting * function can be used for a given set of particles. * @param ids The PDG codes for the particles in the splitting. */ virtual bool accept(const IdList & ids) const; /** * Methods to return the splitting function. */ //@{ /** * The concrete implementation of the splitting function, \f$P(z,t)\f$. * @param z The energy fraction. * @param t The scale. * @param ids The PDG codes for the particles in the splitting. * @param mass Whether or not to include the mass dependent terms */ virtual double P(const double z, const Energy2 t, const IdList & ids, const bool mass) const; /** * The concrete implementation of the overestimate of the splitting function, * \f$P_{\rm over}\f$. * @param z The energy fraction. * @param ids The PDG codes for the particles in the splitting. */ virtual double overestimateP(const double z, const IdList & ids) const; /** * The concrete implementation of the * the ratio of the splitting function to the overestimate, i.e. * \f$P(z,t)/P_{\rm over}(z)\f$. * @param z The energy fraction. * @param t The scale. * @param ids The PDG codes for the particles in the splitting. * @param mass Whether or not to include the mass dependent terms */ virtual double ratioP(const double z, const Energy2 t, const IdList & ids, const bool mass) const; /** * The concrete implementation of the indefinite integral of the * overestimated splitting function, \f$P_{\rm over}\f$. * @param z The energy fraction. * @param ids The PDG codes for the particles in the splitting. * @param PDFfactor Which additional factor to include for the PDF * 0 is no additional factor, * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ */ virtual double integOverP(const double z, const IdList & ids, unsigned int PDFfactor=0) const; /** * The concrete implementation of the inverse of the indefinite integral. * @param r Value of the splitting function to be inverted * @param ids The PDG codes for the particles in the splitting. * @param PDFfactor Which additional factor to include for the PDF * 0 is no additional factor, * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ */ virtual double invIntegOverP(const double r, const IdList & ids, unsigned int PDFfactor=0) const; //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<OneOneOneSplitFn> initOneOneOneSplitFn; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ OneOneOneSplitFn & operator=(const OneOneOneSplitFn &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of OneOneOneSplitFn. */ template <> struct BaseClassTrait<Herwig::OneOneOneSplitFn,1> { /** Typedef of the first base class of OneOneOneSplitFn. */ typedef Herwig::SplittingFunction NthBase; }; /** This template specialization informs ThePEG about the name of * the OneOneOneSplitFn class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::OneOneOneSplitFn> : public ClassTraitsBase<Herwig::OneOneOneSplitFn> { /** Return a platform-independent class name */ static string className() { return "Herwig::OneOneOneSplitFn"; } /** * The name of a file containing the dynamic library where the class * OneOneOneSplitFn is implemented. It may also include several, space-separated, * libraries if the class OneOneOneSplitFn depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_OneOneOneSplitFn_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/Makefile.am�������������������������������������������0000644�0001750�0001750�00000000512�11754474775�024147� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������## libHwSplitting.la will go into HwShower.so noinst_LTLIBRARIES = libHwSplitting.la libHwSplitting_la_SOURCES = \ HalfHalfOneSplitFn.h HalfHalfOneSplitFn.cc\ OneOneOneSplitFn.h OneOneOneSplitFn.cc\ ZeroZeroOneSplitFn.h ZeroZeroOneSplitFn.cc\ OneHalfHalfSplitFn.h OneHalfHalfSplitFn.cc\ HalfOneHalfSplitFn.h HalfOneHalfSplitFn.cc ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/SplittingFunction.fh����������������������������������0000644�0001750�0001750�00000000531�11754474775�026116� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the SplittingFunction class. // #ifndef HERWIG_SplittingFunction_FH #define HERWIG_SplittingFunction_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class SplittingFunction; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::SplittingFunction,SplittingFnPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/OneHalfHalfSplitFn.h����������������������������������0000644�0001750�0001750�00000014145�11754474775�025702� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // OneHalfHalfSplitFn.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_OneHalfHalfSplitFn_H #define HERWIG_OneHalfHalfSplitFn_H // // This is the declaration of the OneHalfHalfSplitFn class. // #include "SplittingFunction.h" namespace Herwig { using namespace ThePEG; /**\ingroup Shower * * This class provides the concrete implementation of the exact leading-order * splitting function for \f$1\to \frac12\frac12\f$. * * In this case the splitting function is given by * \f[P(z,t) =C\left(1-2z(1-z)+2\frac{m_q^2}{t}\right),\f] * where \f$C\f$ is the corresponding colour factor * Our choice for the overestimate is * \f[P_{\rm over}(z) = C,\f] * therefore the integral is * \f[\int P_{\rm over}(z) {\rm d}z =Cz,\f] * and its inverse is * \f[\frac{r}{C}\f] * * @see \ref OneHalfHalfSplitFnInterfaces "The interfaces" * defined for OneHalfHalfSplitFn. */ class OneHalfHalfSplitFn: public SplittingFunction { public: /** * The default constructor. */ inline OneHalfHalfSplitFn() : SplittingFunction(1) {} /** * Concrete implementation of the method to determine whether this splitting * function can be used for a given set of particles. * @param ids The PDG codes for the particles in the splitting. */ virtual bool accept(const IdList & ids) const; /** * Methods to return the splitting function. */ //@{ /** * The concrete implementation of the splitting function, \f$P\f$. * @param z The energy fraction. * @param t The scale. * @param ids The PDG codes for the particles in the splitting. * @param mass Whether or not to include the mass dependent terms */ virtual double P(const double z, const Energy2 t, const IdList & ids, const bool mass) const; /** * The concrete implementation of the overestimate of the splitting function, * \f$P_{\rm over}\f$. * @param z The energy fraction. * @param ids The PDG codes for the particles in the splitting. */ virtual double overestimateP(const double z, const IdList & ids) const; /** * The concrete implementation of the * the ratio of the splitting function to the overestimate, i.e. * \f$P(z,\tilde{q}^2)/P_{\rm over}(z)\f$. * @param z The energy fraction. * @param t The scale. * @param ids The PDG codes for the particles in the splitting. * @param mass Whether or not to include the mass dependent terms */ virtual double ratioP(const double z, const Energy2 t, const IdList & ids, const bool mass) const; /** * The concrete implementation of the indefinite integral of the * overestimated splitting function, \f$P_{\rm over}\f$. * @param z The energy fraction. * @param ids The PDG codes for the particles in the splitting. * @param PDFfactor Which additional factor to include for the PDF * 0 is no additional factor, * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ */ virtual double integOverP(const double z, const IdList & ids, unsigned int PDFfactor=0) const; /** * The concrete implementation of the inverse of the indefinite integral. * @param r Value of the splitting function to be inverted * @param ids The PDG codes for the particles in the splitting. * @param PDFfactor Which additional factor to include for the PDF * 0 is no additional factor, * 1 is \f$1/z\f$, 2 is \f$1/(1-z)\f$ and 3 is \f$1/z/(1-z)\f$ */ virtual double invIntegOverP(const double r, const IdList & ids, unsigned int PDFfactor=0) const; //@} public: /** * 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<OneHalfHalfSplitFn> initOneHalfHalfSplitFn; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ OneHalfHalfSplitFn & operator=(const OneHalfHalfSplitFn &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of OneHalfHalfSplitFn. */ template <> struct BaseClassTrait<Herwig::OneHalfHalfSplitFn,1> { /** Typedef of the first base class of OneHalfHalfSplitFn. */ typedef Herwig::SplittingFunction NthBase; }; /** This template specialization informs ThePEG about the name of * the OneHalfHalfSplitFn class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::OneHalfHalfSplitFn> : public ClassTraitsBase<Herwig::OneHalfHalfSplitFn> { /** Return a platform-independent class name */ static string className() { return "Herwig::OneHalfHalfSplitFn"; } /** * The name of a file containing the dynamic library where the class * OneHalfHalfSplitFn is implemented. It may also include several, space-separated, * libraries if the class OneHalfHalfSplitFn depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_OneHalfHalfSplitFn_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/OneOneOneSplitFn.cc�����������������������������������0000644�0001750�0001750�00000005010�11754474775�025545� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // OneOneOneSplitFn.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the OneOneOneSplitFn class. // #include "OneOneOneSplitFn.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include <cassert> using namespace Herwig; NoPIOClassDescription<OneOneOneSplitFn> OneOneOneSplitFn::initOneOneOneSplitFn; // Definition of the static class description member. void OneOneOneSplitFn::Init() { static ClassDocumentation<OneOneOneSplitFn> documentation ("The OneOneOneSplitFn class implements the g -> gg splitting function"); } double OneOneOneSplitFn::P(const double z, const Energy2, const IdList &, const bool)const { // (this is historically important! the first physics - two years // after the birth of the project - in the Herwig++ shower! Alberto // & Stefan, 25/04/2002). return colourFactor()*sqr(1.-z*(1.-z))/(z*(1.-z)); } double OneOneOneSplitFn::overestimateP(const double z, const IdList &) const { return colourFactor()*(1/z + 1/(1.-z)); } double OneOneOneSplitFn::ratioP(const double z, const Energy2, const IdList &, const bool) const { return sqr(1.-z*(1.-z)); } double OneOneOneSplitFn::invIntegOverP(const double r, const IdList & , unsigned int PDFfactor) const { switch(PDFfactor) { case 0: return 1./(1.+exp(-r/colourFactor())); case 1: case 2: case 3: default: throw Exception() << "OneOneOneSplitFn::integOverP() invalid PDFfactor = " << PDFfactor << Exception::runerror; } } double OneOneOneSplitFn::integOverP(const double z, const IdList & , unsigned int PDFfactor) const { switch(PDFfactor) { case 0: return colourFactor()*log(z/(1.-z)); case 1: case 2: case 3: default: throw Exception() << "OneOneOneSplitFn::integOverP() invalid PDFfactor = " << PDFfactor << Exception::runerror; } } bool OneOneOneSplitFn::accept(const IdList & ids) const { if(ids.size()!=3) return false; for(unsigned int ix=0;ix<ids.size();++ix) { tcPDPtr part = getParticleData(ids[ix]); if(part->iSpin()!=PDT::Spin1) return false; } return checkColours(ids); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/SplittingFunctions/SplittingGenerator.cc���������������������������������0000644�0001750�0001750�00000031507�11754474775�026256� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SplittingGenerator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SplittingGenerator class. // #include "SplittingGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Command.h" #include "ThePEG/Utilities/StringUtils.h" #include "ThePEG/Repository/Repository.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include "Herwig++/Shower/ShowerHandler.h" #include "ThePEG/Utilities/Rebinder.h" #include <cassert> using namespace Herwig; IBPtr SplittingGenerator::clone() const { return new_ptr(*this); } IBPtr SplittingGenerator::fullclone() const { return new_ptr(*this); } void SplittingGenerator::persistentOutput(PersistentOStream & os) const { os << _isr_Mode << _fsr_Mode << _bbranchings << _fbranchings; } void SplittingGenerator::persistentInput(PersistentIStream & is, int) { is >> _isr_Mode >> _fsr_Mode >> _bbranchings >> _fbranchings; } ClassDescription<SplittingGenerator> SplittingGenerator::initSplittingGenerator; // Definition of the static class description member. void SplittingGenerator::Init() { static ClassDocumentation<SplittingGenerator> documentation ("There class is responsible for initializing the Sudakov form factors ", "and generating splittings."); static Switch<SplittingGenerator, bool> interfaceISRMode ("ISR", "Include initial-state radiation?", &SplittingGenerator::_isr_Mode, 1, false, false); static SwitchOption interfaceISRMode0 (interfaceISRMode,"No","ISR (Initial State Radiation) is OFF", 0); static SwitchOption interfaceISRMode1 (interfaceISRMode,"Yes","ISR (Initial State Radiation) is ON", 1); static Switch<SplittingGenerator, bool> interfaceFSRMode ("FSR", "Include final-state radiation?", &SplittingGenerator::_fsr_Mode, 1, false, false); static SwitchOption interfaceFSRMode0 (interfaceFSRMode,"No","FSR (Final State Radiation) is OFF", 0); static SwitchOption interfaceFSRMode1 (interfaceFSRMode,"Yes","FSR (Final State Radiation) is ON", 1); static Command<SplittingGenerator> interfaceAddSplitting ("AddFinalSplitting", "Adds another splitting to the list of splittings considered " "in the shower. Command is a->b,c; Sudakov", &SplittingGenerator::addFinalSplitting); static Command<SplittingGenerator> interfaceAddInitialSplitting ("AddInitialSplitting", "Adds another splitting to the list of initial splittings to consider " "in the shower. Command is a->b,c; Sudakov. Here the particle a is the " "particle that is PRODUCED by the splitting. b is the initial state " "particle that is splitting in the shower.", &SplittingGenerator::addInitialSplitting); static Command<SplittingGenerator> interfaceDeleteSplitting ("DeleteFinalSplitting", "Deletes a splitting from the list of splittings considered " "in the shower. Command is a->b,c; Sudakov", &SplittingGenerator::deleteFinalSplitting); static Command<SplittingGenerator> interfaceDeleteInitialSplitting ("DeleteInitialSplitting", "Deletes a splitting from the list of initial splittings to consider " "in the shower. Command is a->b,c; Sudakov. Here the particle a is the " "particle that is PRODUCED by the splitting. b is the initial state " "particle that is splitting in the shower.", &SplittingGenerator::deleteInitialSplitting); } string SplittingGenerator::addSplitting(string arg, bool final) { string partons = StringUtils::car(arg); string sudakov = StringUtils::cdr(arg); vector<tPDPtr> products; string::size_type next = partons.find("->"); if(next == string::npos) return "Error: Invalid string for splitting " + arg; if(partons.find(';') == string::npos) return "Error: Invalid string for splitting " + arg; tPDPtr parent = Repository::findParticle(partons.substr(0,next)); partons = partons.substr(next+2); do { next = min(partons.find(','), partons.find(';')); tPDPtr pdp = Repository::findParticle(partons.substr(0,next)); partons = partons.substr(next+1); if(pdp) products.push_back(pdp); else return "Error: Could not create splitting from " + arg; } while(partons[0] != ';' && partons.size()); SudakovPtr s; s = dynamic_ptr_cast<SudakovPtr>(Repository::TraceObject(sudakov)); if(!s) return "Error: Could not load Sudakov " + sudakov + '\n'; IdList ids; ids.push_back(parent->id()); for(vector<tPDPtr>::iterator it = products.begin(); it!=products.end(); ++it) ids.push_back((*it)->id()); // check splitting can handle this if(!s->splittingFn()->accept(ids)) return "Error: Sudakov " + sudakov + "can't handle particles\n"; // add to map addToMap(ids,s,final); return ""; } string SplittingGenerator::deleteSplitting(string arg, bool final) { string partons = StringUtils::car(arg); string sudakov = StringUtils::cdr(arg); vector<tPDPtr> products; string::size_type next = partons.find("->"); if(next == string::npos) return "Error: Invalid string for splitting " + arg; if(partons.find(';') == string::npos) return "Error: Invalid string for splitting " + arg; tPDPtr parent = Repository::findParticle(partons.substr(0,next)); partons = partons.substr(next+2); do { next = min(partons.find(','), partons.find(';')); tPDPtr pdp = Repository::findParticle(partons.substr(0,next)); partons = partons.substr(next+1); if(pdp) products.push_back(pdp); else return "Error: Could not create splitting from " + arg; } while(partons[0] != ';' && partons.size()); SudakovPtr s; s = dynamic_ptr_cast<SudakovPtr>(Repository::TraceObject(sudakov)); if(!s) return "Error: Could not load Sudakov " + sudakov + '\n'; IdList ids; ids.push_back(parent->id()); for(vector<tPDPtr>::iterator it = products.begin(); it!=products.end(); ++it) ids.push_back((*it)->id()); // check splitting can handle this if(!s->splittingFn()->accept(ids)) return "Error: Sudakov " + sudakov + "can't handle particles\n"; // delete from map deleteFromMap(ids,s,final); return ""; } void SplittingGenerator::addToMap(const IdList &ids, const SudakovPtr &s, bool final) { if(isISRadiationON() && !final) { _bbranchings.insert(BranchingInsert(ids[1],BranchingElement(s,ids))); s->addSplitting(ids); } if(isFSRadiationON() && final) { _fbranchings.insert(BranchingInsert(ids[0],BranchingElement(s,ids))); s->addSplitting(ids); } } void SplittingGenerator::deleteFromMap(const IdList &ids, const SudakovPtr &s, bool final) { if(isISRadiationON() && !final) { pair<BranchingList::iterator,BranchingList::iterator> range = _bbranchings.equal_range(ids[1]); for(BranchingList::iterator it=range.first;it!=range.second&&it->first==ids[1];++it) { if(it->second.first==s&&it->second.second==ids) _bbranchings.erase(it); } s->removeSplitting(ids); } if(isFSRadiationON() && final) { pair<BranchingList::iterator,BranchingList::iterator> range = _fbranchings.equal_range(ids[0]); for(BranchingList::iterator it=range.first;it!=range.second&&it->first==ids[0];++it) { if(it->second.first==s&&it->second.second==ids) _fbranchings.erase(it); } s->removeSplitting(ids); } } Branching SplittingGenerator::chooseForwardBranching(ShowerParticle &particle, double enhance, ShowerInteraction::Type type) const { Energy newQ = ZERO; ShoKinPtr kinematics = ShoKinPtr(); SudakovPtr sudakov=SudakovPtr(); IdList ids; // First, find the eventual branching, corresponding to the highest scale. long index = abs(particle.data().id()); // if no branchings return empty branching struct if(_fbranchings.find(index) == _fbranchings.end()) return Branching(ShoKinPtr(), IdList(),SudakovPtr()); // otherwise select branching for(BranchingList::const_iterator cit = _fbranchings.lower_bound(index); cit != _fbranchings.upper_bound(index); ++cit) { if(type!=cit->second.first->interactionType()) continue; // check size of scales beforehand... ShoKinPtr newKin= cit->second.first-> generateNextTimeBranching(particle.evolutionScale(), cit->second.second,particle.id()!=cit->first, enhance); if(!newKin) continue; // select highest scale if(newKin->scale() > newQ && newKin->scale() <= particle.evolutionScale()) { kinematics=newKin; newQ = newKin->scale(); ids = cit->second.second; sudakov=cit->second.first; } } // return empty branching if nothing happened if(!kinematics) return Branching(ShoKinPtr(), IdList(),SudakovPtr()); // If a branching has been selected initialize it kinematics->initialize(particle,PPtr()); // and return it return Branching(kinematics, ids,sudakov); } Branching SplittingGenerator:: chooseDecayBranching(ShowerParticle &particle, Energy stoppingScale, Energy minmass, double enhance, ShowerInteraction::Type type) const { Energy newQ = Constants::MaxEnergy; ShoKinPtr kinematics; SudakovPtr sudakov; IdList ids; // First, find the eventual branching, corresponding to the lowest scale. long index = abs(particle.data().id()); // if no branchings return empty branching struct if(_fbranchings.find(index) == _fbranchings.end()) return Branching(ShoKinPtr(), IdList(),SudakovPtr()); // otherwise select branching for(BranchingList::const_iterator cit = _fbranchings.lower_bound(index); cit != _fbranchings.upper_bound(index); ++cit) { if(type!=cit->second.first->interactionType()) continue; ShoKinPtr newKin; if(particle.evolutionScale() < stoppingScale) newKin = cit->second.first-> generateNextDecayBranching(particle.evolutionScale(), stoppingScale,minmass, cit->second.second, particle.id()!=cit->first,enhance); if(!newKin) continue; if(newKin->scale() < newQ && newKin->scale() > particle.evolutionScale()) { newQ = newKin->scale(); ids = cit->second.second; kinematics=newKin; sudakov=cit->second.first; } } // return empty branching if nothing happened if(!kinematics) return Branching(ShoKinPtr(), IdList(),SudakovPtr()); // initialize the branching kinematics->initialize(particle,PPtr()); // and return it return Branching(kinematics, ids,sudakov); } Branching SplittingGenerator:: chooseBackwardBranching(ShowerParticle &particle,PPtr beamparticle, double enhance, Ptr<BeamParticleData>::transient_const_pointer beam, ShowerInteraction::Type type, tcPDFPtr pdf, Energy freeze) const { Energy newQ=ZERO; ShoKinPtr kinematics=ShoKinPtr(); SudakovPtr sudakov; IdList ids; // First, find the eventual branching, corresponding to the highest scale. long index = abs(particle.id()); // if no possible branching return if(_bbranchings.find(index) == _bbranchings.end()) return Branching(ShoKinPtr(), IdList(),sudakov); // select the branching for(BranchingList::const_iterator cit = _bbranchings.lower_bound(index); cit != _bbranchings.upper_bound(index); ++cit ) { if(type!=cit->second.first->interactionType()) continue; cit->second.first->setPDF(pdf,freeze); ShoKinPtr newKin=cit->second.first-> generateNextSpaceBranching(particle.evolutionScale(), cit->second.second, particle.x(), particle.id()!=cit->first,enhance,beam); if(!newKin) continue; if(newKin->scale() > newQ) { newQ = newKin->scale(); kinematics=newKin; ids = cit->second.second; sudakov=cit->second.first; } } // return empty branching if nothing happened if(!kinematics) return Branching(ShoKinPtr(), IdList(),SudakovPtr()); // initialize the ShowerKinematics // and return it kinematics->initialize(particle,beamparticle); // return the answer return Branching(kinematics, ids,sudakov); } void SplittingGenerator::rebind(const TranslationMap & trans) { BranchingList::iterator cit; for(cit=_fbranchings.begin();cit!=_fbranchings.end();++cit) {(cit->second).first=trans.translate((cit->second).first);} for(cit=_bbranchings.begin();cit!=_bbranchings.end();++cit) {(cit->second).first=trans.translate((cit->second).first);} Interfaced::rebind(trans); } IVector SplittingGenerator::getReferences() { IVector ret = Interfaced::getReferences(); BranchingList::iterator cit; for(cit=_fbranchings.begin();cit!=_fbranchings.end();++cit) {ret.push_back((cit->second).first);} for(cit=_bbranchings.begin();cit!=_bbranchings.end();++cit) {ret.push_back((cit->second).first);} return ret; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/�����������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464206�017621� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/QTildeShowerKinematics1to2.cc������������������������������������0000644�0001750�0001750�00000006420�11754474775�025234� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // QTildeShowerKinematics1to2.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the QTildeShowerKinematics1to2 class. // #include "QTildeShowerKinematics1to2.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace Herwig; vector<Lorentz5Momentum> QTildeShowerKinematics1to2::getBasis() const { vector<Lorentz5Momentum> dum; dum.push_back( _pVector ); dum.push_back( _nVector ); return dum; } void QTildeShowerKinematics1to2::setBasis(const Lorentz5Momentum &p, const Lorentz5Momentum & n) { _pVector=p; _nVector=n; } Lorentz5Momentum QTildeShowerKinematics1to2:: sudakov2Momentum(double alpha, double beta, Energy px, Energy py,unsigned int iopt) const { if(isnan(beta)||isinf(beta)) throw Exception() << "beta infinite in " << "QTildeShowerKinematics1to2::sudakov2Momentum()" << Exception::eventerror; Lorentz5Momentum dq; if(iopt==0) { const Boost beta_bb = -(_pVector + _nVector).boostVector(); Lorentz5Momentum p_bb = _pVector; Lorentz5Momentum n_bb = _nVector; p_bb.boost( beta_bb ); n_bb.boost( beta_bb ); // set first in b2b frame along z-axis (assuming that p and n are // b2b as checked above) dq=Lorentz5Momentum(ZERO, ZERO, (alpha - beta)*p_bb.vect().mag(), alpha*p_bb.t() + beta*n_bb.t()); // add transverse components dq.setX(px); dq.setY(py); // rotate to have z-axis parallel to p // this rotation changed by PR to a different rotation with the same effect // but different azimuthal angle to make implementing spin correlations easier // dq.rotateUz( unitVector(p_bb.vect()) ); Axis axis(p_bb.vect().unit()); if(axis.perp2()>0.) { LorentzRotation rot; double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); rot.setRotate(acos(axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); dq.transform(rot); } else if(axis.z()<0.) { dq.setZ(-dq.z()); } // boost back dq.boost( -beta_bb ); dq.rescaleMass(); // return the momentum } else { const Boost beta_bb = -pVector().boostVector(); Lorentz5Momentum p_bb = pVector(); Lorentz5Momentum n_bb = nVector(); p_bb.boost( beta_bb ); n_bb.boost( beta_bb ); // set first in b2b frame along z-axis (assuming that p and n are // b2b as checked above) dq=Lorentz5Momentum (ZERO, ZERO, 0.5*beta*pVector().mass(), alpha*pVector().mass() + 0.5*beta*pVector().mass()); // add transverse components dq.setX(px); dq.setY(py); // changed to be same as other case // dq.rotateUz( unitVector(n_bb.vect()) ); Axis axis(n_bb.vect().unit()); if(axis.perp2()>0.) { LorentzRotation rot; double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); rot.setRotate(acos(axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); dq.transform(rot); } else if(axis.z()<0.) { dq.setZ(-dq.z()); } // boost back dq.boost( -beta_bb ); dq.rescaleMass(); } return dq; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/QTildeShowerKinematics1to2.fh������������������������������������0000644�0001750�0001750�00000000625�11754474775�025245� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the QTildeShowerKinematics1to2 class. // #ifndef HERWIG_QTildeShowerKinematics1to2_FH #define HERWIG_QTildeShowerKinematics1to2_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class QTildeShowerKinematics1to2; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::QTildeShowerKinematics1to2,QTildeShowerKinematics1to2Ptr); } #endif �����������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/IS_QTildeShowerKinematics1to2.h����������������������������������0000644�0001750�0001750�00000007566�11754474775�025505� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IS_QTildeShowerKinematics1to2.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IS_QTildeShowerKinematics1to2_H #define HERWIG_IS_QTildeShowerKinematics1to2_H // // This is the declaration of the IS_QTildeShowerKinematics1to2 class. // #include "QTildeShowerKinematics1to2.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * * This (concrete) class provides the specific Intial State shower * kinematics information. * * @see QTildeShowerKinematics1to2 * @see FS_QTildeShowerKinematics1to2 * @see Decay_QTildeShowerKinematics1to2 * @see KinematicsReconstructor */ class IS_QTildeShowerKinematics1to2: public QTildeShowerKinematics1to2 { public: /** @name Standard constructors and destructors. */ //@{ /** * Construct in terms of the basis states */ inline IS_QTildeShowerKinematics1to2() {} //@} public: /** * The updateChildren, updateParent and updateLast * members to update the values of the \f$\alpha\f$ and * \f$p_\perp\f$ variables during the shower evolution. */ //@{ /** * Along with the showering evolution --- going forward for * time-like (forward) evolution, and going backward for space-like * (backward) evolution --- the kinematical variables of the * branching products are calculated and updated from the knowledge * of the parent kinematics. This method is used by the * ForwardShowerEvolver. * ***ACHTUNG*** Might be extended to update colour connections as well. * @param theParent The branching particle * @param theChildren The particles produced in the branching * @param angularOrder Whether or not to apply angular ordering */ virtual void updateChildren( const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren, bool angularOrder) const; /** * Update the parent Kinematics from the knowledge of the kinematics * of the children. This method will be used by the * KinematicsReconstructor. * @param theParent The branching particle * @param theChildren The particles produced in the branching * @param angularOrder Whether or not to apply angular ordering */ virtual void updateParent( const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren, bool angularOrder ) const; /** * Update the parent Kinematics from the knowledge of the kinematics * of the children. This method will be used by the * KinematicsReconstructor. */ virtual void reconstructParent( const tShowerParticlePtr theParent, const ParticleVector & theChildren ) const; /** * Update the kinematical data of a particle when a reconstruction * fixpoint was found. This will highly depend on the kind of * kinematics chosen and will be defined in the inherited concrete * classes. This method will be used by the KinematicsReconstructor. * @param theLast The particle. * @param px The \f$x\f$ component of the \f$p_T\f$. * @param py The \f$y\f$ component of the \f$p_T\f$. */ virtual void updateLast(const tShowerParticlePtr theLast, Energy px, Energy py) const; /** * Perform any initial calculations needed after the branching has been selected * @param particle The branching particle * @param parent The bema particle for the jet if needed */ virtual void initialize(ShowerParticle & particle,PPtr parent); //@} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IS_QTildeShowerKinematics1to2 & operator=(const IS_QTildeShowerKinematics1to2 &); }; } #endif /* HERWIG_IS_QTildeShowerKinematics1to2_H */ ������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/Makefile.in������������������������������������������������������0000644�0001750�0001750�00000046153�11756461701�021674� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Shower/Default DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwDefaultShower_la_LIBADD = am_libHwDefaultShower_la_OBJECTS = QTildeSudakov.lo QTildeModel.lo \ Decay_QTildeShowerKinematics1to2.lo \ IS_QTildeShowerKinematics1to2.lo \ FS_QTildeShowerKinematics1to2.lo QTildeShowerKinematics1to2.lo \ QTildeFinder.lo QTildeReconstructor.lo libHwDefaultShower_la_OBJECTS = $(am_libHwDefaultShower_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwDefaultShower_la_SOURCES) DIST_SOURCES = $(libHwDefaultShower_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwDefaultShower.la libHwDefaultShower_la_SOURCES = \ QTildeSudakov.cc QTildeSudakov.h\ QTildeModel.cc QTildeModel.h\ Decay_QTildeShowerKinematics1to2.cc Decay_QTildeShowerKinematics1to2.h \ IS_QTildeShowerKinematics1to2.cc IS_QTildeShowerKinematics1to2.h \ FS_QTildeShowerKinematics1to2.cc FS_QTildeShowerKinematics1to2.h \ QTildeShowerKinematics1to2.cc QTildeShowerKinematics1to2.fh\ QTildeShowerKinematics1to2.h \ QTildeFinder.cc QTildeFinder.h\ QTildeReconstructor.cc QTildeReconstructor.h all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Shower/Default/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Shower/Default/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwDefaultShower.la: $(libHwDefaultShower_la_OBJECTS) $(libHwDefaultShower_la_DEPENDENCIES) $(EXTRA_libHwDefaultShower_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwDefaultShower_la_OBJECTS) $(libHwDefaultShower_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Decay_QTildeShowerKinematics1to2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FS_QTildeShowerKinematics1to2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IS_QTildeShowerKinematics1to2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QTildeFinder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QTildeModel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QTildeReconstructor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QTildeShowerKinematics1to2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QTildeSudakov.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/QTildeShowerKinematics1to2.h�������������������������������������0000644�0001750�0001750�00000006137�11754474775�025103� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // QTildeShowerKinematics1to2.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_QTildeShowerKinematics1to2_H #define HERWIG_QTildeShowerKinematics1to2_H // // This is the declaration of the QTildeShowerKinematics1to2 class. // #include "Herwig++/Shower/Base/ShowerKinematics.h" #include "ThePEG/Vectors/Lorentz5Vector.h" #include "QTildeShowerKinematics1to2.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * * This abstract class describes the common features for initial and final * state radiation kinematics for \f$1\to2\f$ branchings and for * the choice of \f$\tilde{q}\f$ as evolution variable. * * @see ShowerKinematics * @see IS_QTildeShowerKinematics1to2 * @see FS_QTildeShowerKinematics1to2 * @see KinematicsReconstructor */ class QTildeShowerKinematics1to2: public ShowerKinematics { public: /** * Implementation of the virtual function returning a set of basis vectors, specific to * the type of evolution. This function will be used by the * ForwardShowerEvolver in order to access \f$p\f$ * and \f$n\f$. */ virtual vector<Lorentz5Momentum> getBasis() const; /** * Access to the \f$p\f$ vector used to describe the kinematics. */ const Lorentz5Momentum & pVector() const {return _pVector;} /** * Access to the \f$n\f$ vector used to describe the kinematics. */ const Lorentz5Momentum & nVector() const {return _nVector;} /** * Dot product of thew basis vectors */ Energy2 p_dot_n() const {return _pVector*_nVector;} /** * Converts a Sudakov parametrization of a momentum w.r.t. the given * basis \f$p\f$ and \f$n\f$ into a 5 momentum. * @param alpha The \f$\alpha\f$ parameter of the Sudakov parameterisation * @param beta The \f$\beta\f$ parameter of the Sudakov parameterisation * @param px The \f$x\f$-component of the transverse momentum in the Sudakov * parameterisation * @param py The \f$x\f$-component of the transverse momentum in the Sudakov * parameterisation * @param iopt The option for the momentum reconstruction * - 0 is in the rest frame of the pair of reference vectors * - 1 is in the rest frame of the p vector */ Lorentz5Momentum sudakov2Momentum(double alpha, double beta, Energy px, Energy py, unsigned int iopt) const; protected: /** * Set the basis vectors */ void setBasis(const Lorentz5Momentum &p, const Lorentz5Momentum & n); private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ QTildeShowerKinematics1to2 & operator=(const QTildeShowerKinematics1to2 &); private: /** * The \f$p\f$ reference vector */ Lorentz5Momentum _pVector; /** * The \f$n\f$ reference vector */ Lorentz5Momentum _nVector; }; } #endif /* HERWIG_QTildeShowerKinematics1to2_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/QTildeModel.cc���������������������������������������������������0000644�0001750�0001750�00000004076�11754474775�022314� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // QTildeModel.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the QTildeModel class. // #include "QTildeModel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "QTildeReconstructor.h" #include "QTildeFinder.h" #include "QTildeSudakov.h" #include "ThePEG/Utilities/Throw.h" #include "Herwig++/Shower/Base/Evolver.h" using namespace Herwig; IBPtr QTildeModel::clone() const { return new_ptr(*this); } IBPtr QTildeModel::fullclone() const { return new_ptr(*this); } NoPIOClassDescription<QTildeModel> QTildeModel::initQTildeModel; // Definition of the static class description member. void QTildeModel::Init() { static ClassDocumentation<QTildeModel> documentation ("The QTildeModel class is the ShowerModel object for the Herwig++ shower."); } void QTildeModel::checkConsistency() { // check KinematicsReconstructor if(!dynamic_ptr_cast<Ptr<QTildeReconstructor>::pointer>(kinematicsReconstructor())) Throw<InitException>() << "KinematicsReconstructor must be either " << "QTildeKinematicsReconstructor or a class inheriting from it" << "in QTildeModel::checkConsistency()"; // check PartnerFinder if(!dynamic_ptr_cast<Ptr<QTildeFinder>::pointer>(partnerFinder())) Throw<InitException>() << "PartnerFinder must be either " << "QTildeFinder or a class inheriting from it" << "in QTildeModel::checkConsistency()"; // Sudakov form factors vector<SudakovPtr>::const_iterator sit; for(sit=sudakovFormFactors().begin();sit!=sudakovFormFactors().end();++sit) { if(!dynamic_ptr_cast<Ptr<QTildeSudakov>::pointer>(*sit)) Throw<InitException>() << "SudakovFormFactors must be either " << "QTildeSudakov or a class inheriting from it" << "in QTildeModel::checkConsistency()"; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/QTildeFinder.h���������������������������������������������������0000644�0001750�0001750�00000016036�11754474775�022324� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // QTildeFinder.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_QTildeFinder_H #define HERWIG_QTildeFinder_H // // This is the declaration of the QTildeFinder class. // #include "Herwig++/Shower/Base/PartnerFinder.h" #include "Herwig++/Shower/ShowerConfig.h" #include "ThePEG/Interface/Interfaced.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * * The QTildeFinder class is responsible for finding the partners and * setting the initial evolution scales for the shower evolution described * in JHEP 0312:045,2003. * * @see \ref QTildeFinderInterfaces "The interfaces" * defined for QTildeFinder. */ class QTildeFinder: public PartnerFinder { public: /** * The default constructor. */ QTildeFinder() : _finalFinalConditions(0), _initialFinalDecayConditions(0), _initialInitialConditions(0) {} /** @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: /** * Given a pair of particles, supposedly partners w.r.t. an interaction, * this method returns their initial evolution scales as a pair. * If something wrong happens, it returns the null (ZERO,ZERO) pair. * This method is used by the above setXXXInitialEvolutionScales * methods. */ //@{ /** * Calculate the initial evolution scales for two final-state particles */ virtual pair<Energy,Energy> calculateFinalFinalScales(const ShowerPPair &); /** * Calculate the initial evolution scales for two initial-state particles */ virtual pair<Energy,Energy> calculateInitialInitialScales(const ShowerPPair &); /** * Calculate the initial evolution scales for one initial * and one final-state particles */ virtual pair<Energy,Energy> calculateInitialFinalScales(const ShowerPPair &, const bool isDecayCase); //@} /** * Access function for the initial conditions for the shower */ //@{ /** * Initial conditions for the shower of a final-final colour connection * - 0 is the symmetric choice * - 1 is maximal emmision from the coloured particle * - 2 is maximal emmision from the anticoloured particle * - 3 is randomly selected maximal emmision */ unsigned int finalFinalConditions() const {return _finalFinalConditions;} /** * Initial conditions for the shower of an initial-final decay colour connection * - 0 is the symmetric choice * - 1 is maximal emission from the decay product * - 2 is the smooth choice */ unsigned int initialFinalDecayConditions() const {return _initialFinalDecayConditions;} //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<QTildeFinder> initQTildeFinder; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ QTildeFinder & operator=(const QTildeFinder &); private: /** * Flags controlling the initial conditions for the shower */ //@{ /** * Initial conditions for the shower with a final-final colour * connection */ unsigned int _finalFinalConditions; /** * Initial conditions for the shower with an initial-final decay colour * connection. This is done according to the top decay colour * connection calculation in JHEP12(2003)_045. The options act as follows: * 0: This is the default 'symmetric' choice which more or less divides * the phase space evenly between the parent and its charged child. * 1: This 'maximal' choice maximises the phase space available for * gluons emitted from the charged child. * 2: This (experimental) 'smooth' choice does not suffer from * a discontinuity at the boundary between the region populated by * emissions from the charged child and the region populated by emissions * from the parent. This does, however, mean that the phase space * available for emissions from the charged child is fairly minimal. */ unsigned int _initialFinalDecayConditions; /** * Initial conditions for the shower with an initial-initial colour * connection. This is done according to the colour connection * calculation in JHEP12(2003)_045. The options act as follows: * 0: This is the default 'symmetric' choice which more or less divides * the phase space evenly between the two incoming partons. * 1: This increases the phase space for emission from "parton b". * 2: This increases the phase space for emission from "parton c". */ unsigned int _initialInitialConditions; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of QTildeFinder. */ template <> struct BaseClassTrait<Herwig::QTildeFinder,1> { /** Typedef of the first base class of QTildeFinder. */ typedef Herwig::PartnerFinder NthBase; }; /** This template specialization informs ThePEG about the name of * the QTildeFinder class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::QTildeFinder> : public ClassTraitsBase<Herwig::QTildeFinder> { /** Return a platform-independent class name */ static string className() { return "Herwig::QTildeFinder"; } /** * The name of a file containing the dynamic library where the class * QTildeFinder is implemented. It may also include several, space-separated, * libraries if the class QTildeFinder depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_QTildeFinder_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/Decay_QTildeShowerKinematics1to2.h�������������������������������0000644�0001750�0001750�00000006606�11754474775�026211� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Decay_QTildeShowerKinematics1to2.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_Decay_QTildeShowerKinematics1to2_H #define HERWIG_Decay_QTildeShowerKinematics1to2_H // // This is the declaration of the Decay_QTildeShowerKinematics1to2 class. // #include "QTildeShowerKinematics1to2.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * * This (concrete) class provides the specific decay shower * kinematics information. * * @see QTildeShowerKinematics1to2 * @see IS_QTildeShowerKinematics1to2 * @see FS_QTildeShowerKinematics1to2 * @see KinematicsReconstructor * */ class Decay_QTildeShowerKinematics1to2: public QTildeShowerKinematics1to2 { public: /** * The updateChildren, updateParent and updateLast * members to update the values of the \f$\alpha\f$ and * \f$p_\perp\f$ variables during the shower evolution. */ //@{ /** * Along with the showering evolution --- going forward for * time-like (forward) evolution, and going backward for space-like * (backward) evolution --- the kinematical variables of the * branching products are calculated and updated from the knowledge * of the parent kinematics. This method is used by the * ForwardShowerEvolver. * ***ACHTUNG*** Might be extended to update colour connections as well. * @param theParent The branching particle * @param theChildren The particles produced in the branching * @param angularOrder Whether or not to apply angular ordering */ virtual void updateChildren( const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren, bool angularOrder ) const; /** * Update the parent Kinematics from the knowledge of the kinematics * of the children. This method will be used by the * KinematicsReconstructor. */ virtual void reconstructParent( const tShowerParticlePtr theParent, const ParticleVector & theChildren ) const; /** * Update the kinematical data of a particle when a reconstruction * fixpoint was found. This will highly depend on the kind of * kinematics chosen and will be defined in the inherited concrete * classes. This method will be used by the KinematicsReconstructor. * @param theLast The particle to update * @param iopt The option for the momentum reconstruction * - 0 is in the rest frame of the pair of reference vectors * - 1 is in the rest frame of the p vector * @param mass The mass to be used, if less than zero on-shell */ virtual void reconstructLast(const tShowerParticlePtr theLast, unsigned int iopt, Energy mass=-1.*GeV) const; /** * Perform any initial calculations needed after the branching has been selected * @param particle The branching particle * @param parent The bema particle for the jet if needed */ virtual void initialize(ShowerParticle & particle,PPtr parent); //@} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Decay_QTildeShowerKinematics1to2 & operator=(const Decay_QTildeShowerKinematics1to2 &); }; } #endif /* HERWIG_Decay_QTildeShowerKinematics1to2_H */ ��������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/QTildeModel.h����������������������������������������������������0000644�0001750�0001750�00000006177�11754474775�022162� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // QTildeModel.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_QTildeModel_H #define HERWIG_QTildeModel_H // // This is the declaration of the QTildeModel class. // #include "Herwig++/Shower/Base/ShowerModel.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * The QTildeModel class inherits from the ShowerModel class and implements the * checkConsistency member for the default Herwig++ Shower. * * @see \ref QTildeModelInterfaces "The interfaces" * defined for QTildeModel. */ class QTildeModel: public ShowerModel { public: /** * 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: /** * The implementation of the virtual member from the base class to * check that the correct objects are loaded */ virtual void checkConsistency(); 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 static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<QTildeModel> initQTildeModel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ QTildeModel & operator=(const QTildeModel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of QTildeModel. */ template <> struct BaseClassTrait<Herwig::QTildeModel,1> { /** Typedef of the first base class of QTildeModel. */ typedef Herwig::ShowerModel NthBase; }; /** This template specialization informs ThePEG about the name of * the QTildeModel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::QTildeModel> : public ClassTraitsBase<Herwig::QTildeModel> { /** Return a platform-independent class name */ static string className() { return "Herwig::QTildeModel"; } /** * The name of a file containing the dynamic library where the class * QTildeModel is implemented. It may also include several, space-separated, * libraries if the class QTildeModel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_QTildeModel_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/FS_QTildeShowerKinematics1to2.h����������������������������������0000644�0001750�0001750�00000010004�11754474775�025457� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FS_QTildeShowerKinematics1to2.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FS_QTildeShowerKinematics1to2_H #define HERWIG_FS_QTildeShowerKinematics1to2_H // // This is the declaration of the FS_QTildeShowerKinematics1to2 class. // #include "QTildeShowerKinematics1to2.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * * This (concrete) class provides the specific Final State shower * kinematics information. * * @see QTildeShowerKinematics1to2 * @see IS_QTildeShowerKinematics1to2 * @see Decay_QTildeShowerKinematics1to2 * @see KinematicsReconstructor */ class FS_QTildeShowerKinematics1to2: public QTildeShowerKinematics1to2 { public: /** * Default constructor */ inline FS_QTildeShowerKinematics1to2() {} /** * The updateChildren, updateParent and updateLast * members to update the values of the \f$\alpha\f$ and * \f$p_\perp\f$ variables during the shower evolution. */ //@{ /** * Along with the showering evolution --- going forward for * time-like (forward) evolution, and going backward for space-like * (backward) evolution --- the kinematical variables of the * branching products are calculated and updated from the knowledge * of the parent kinematics. This method is used by the * ForwardShowerEvolver. * ***ACHTUNG*** Might be extended to update colour connections as well. * @param theParent The branching particle * @param theChildren The particles produced in the branching * @param angularOrder Whether or not to apply angular ordering */ virtual void updateChildren( const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren, bool angularOrder) const; virtual void resetChildren( const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren) const; /** * Update the parent Kinematics from the knowledge of the kinematics * of the children. This method will be used by the KinematicsReconstructor. * @param theParent The parent * @param theChildren The children * @param angularOrder Whether or not to apply angular ordering */ virtual void updateParent(const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren, bool angularOrder) const; /** * Update the parent Kinematics from the knowledge of the kinematics * of the children. This method will be used by the * KinematicsReconstructor. */ virtual void reconstructParent( const tShowerParticlePtr theParent, const ParticleVector & theChildren ) const; /** * Update the kinematical data of a particle when a reconstruction * fixpoint was found. This will highly depend on the kind of * kinematics chosen and will be defined in the inherited concrete * classes. This method will be used by the KinematicsReconstructor. * @param theLast The particle to update * @param iopt The option for the momentum reconstruction * - 0 is in the rest frame of the pair of reference vectors * - 1 is in the rest frame of the p vector * @param mass The mass to be used, if less than zero on-shell */ virtual void reconstructLast(const tShowerParticlePtr theLast, unsigned int iopt, Energy mass=-1.*GeV) const; /** * Perform any initial calculations needed after the branching has been selected * @param particle The branching particle * @param parent The bema particle for the jet if needed */ virtual void initialize(ShowerParticle & particle,PPtr parent); //@} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FS_QTildeShowerKinematics1to2 & operator=(const FS_QTildeShowerKinematics1to2 &); }; } #endif /* HERWIG_FS_QTildeShowerKinematics1to2_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/QTildeSudakov.h��������������������������������������������������0000644�0001750�0001750�00000021511�11754474775�022523� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // QTildeSudakov.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_QTildeSudakov_H #define HERWIG_QTildeSudakov_H // // This is the declaration of the QTildeSudakov class. // #include "Herwig++/Shower/Base/SudakovFormFactor.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * * The QTildeSudakov class implements the Sudakov form factor for evolution in * \f$\tilde{q}^2\f$ using the veto algorithm. * * @see \ref QTildeSudakovInterfaces "The interfaces" * defined for QTildeSudakov. */ class QTildeSudakov: public SudakovFormFactor { public: /** * The default constructor. */ inline QTildeSudakov() {} /** * Members to generate the scale of the next branching */ //@{ /** * Return the scale of the next time-like branching. If there is no * branching then it returns ZERO. * @param startingScale starting scale for the evolution * @param ids The PDG codes of the particles in the splitting * @param cc Whether this is the charge conjugate of the branching * defined. * @param enhance The radiation enhancement factor */ virtual ShoKinPtr generateNextTimeBranching(const Energy startingScale, const IdList &ids,const bool cc, double enhance); /** * Return the scale of the next space-like decay branching. If there is no * branching then it returns ZERO. * @param startingScale starting scale for the evolution * @param stoppingScale stopping scale for the evolution * @param minmass The minimum mass allowed for the spake-like particle. * @param ids The PDG codes of the particles in the splitting * @param cc Whether this is the charge conjugate of the branching * defined. * @param enhance The radiation enhancement factor */ virtual ShoKinPtr generateNextDecayBranching(const Energy startingScale, const Energy stoppingScale, const Energy minmass, const IdList &ids, const bool cc, double enhance); /** * Return the scale of the next space-like branching. If there is no * branching then it returns ZERO. * @param startingScale starting scale for the evolution * @param ids The PDG codes of the particles in the splitting * @param x The fraction of the beam momentum * @param cc Whether this is the charge conjugate of the branching * defined. * @param enhance The radiation enhancement factor * @param beam The beam particle */ virtual ShoKinPtr generateNextSpaceBranching(const Energy startingScale, const IdList &ids,double x, const bool cc, double enhance, tcBeamPtr beam); //@} /** * Method to return the evolution scale given the * transverse momentum, \f$p_T\f$ and \f$z\f$. */ virtual Energy calculateScale(double z, Energy pt, IdList ids,unsigned int iopt); /** * Method to create the ShowerKinematics object for a final-state branching */ virtual ShoKinPtr createFinalStateBranching(Energy scale,double z, double phi, Energy pt); /** * Method to create the ShowerKinematics object for an initial-state branching */ virtual ShoKinPtr createInitialStateBranching(Energy scale,double z, double phi, Energy pt); /** * Method to create the ShowerKinematics object for a decay branching */ virtual ShoKinPtr createDecayBranching(Energy scale,double z, double phi, Energy pt); 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: /** * Methods to provide the next value of the scale before the vetos * are applied. */ //@{ /** * Value of the energy fraction and scale for time-like branching * @param t The scale * @param tmin The minimum scale * @param enhance The radiation enhancement factor * @return False if scale less than minimum, true otherwise */ bool guessTimeLike(Energy2 &t, Energy2 tmin, double enhance); /** * Value of the energy fraction and scale for time-like branching * @param t The scale * @param tmax The maximum scale * @param minmass The minimum mass of the particle after the branching * @param enhance The radiation enhancement factor */ bool guessDecay(Energy2 &t, Energy2 tmax,Energy minmass, double enhance); /** * Value of the energy fraction and scale for space-like branching * @param t The scale * @param tmin The minimum scale * @param x Fraction of the beam momentum. * @param enhance The radiation enhancement factor */ bool guessSpaceLike(Energy2 &t, Energy2 tmin, const double x, double enhance); //@} /** * Initialize the values of the cut-offs and scales * @param tmin The minimum scale * @param ids The ids of the partics in the branching * @param cc Whether this is the charge conjugate of the branching */ void initialize(const IdList & ids,Energy2 &tmin, const bool cc); /** * Phase Space veto member to implement the \f$\Theta\f$ function as a veto * so that the emission is within the allowed phase space. * @param t The scale * @return true if vetoed */ bool PSVeto(const Energy2 t); /** * Compute the limits on \f$z\f$ for time-like branching * @param scale The scale of the particle * @return True if lower limit less than upper, otherwise false */ bool computeTimeLikeLimits(Energy2 & scale); /** * Compute the limits on \f$z\f$ for space-like branching * @param scale The scale of the particle * @param x The energy fraction of the parton * @return True if lower limit less than upper, otherwise false */ bool computeSpaceLikeLimits(Energy2 & scale, double x); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class with persistent data. */ static NoPIOClassDescription<QTildeSudakov> initQTildeSudakov; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ QTildeSudakov & operator=(const QTildeSudakov &); private: /** * The evolution scale, \f$\tilde{q}\f$. */ Energy q_; /** * The Ids of the particles in the current branching */ IdList ids_; /** * The masses of the particles in the current branching */ vector<Energy> masses_; /** * The mass squared of the particles in the current branching */ vector<Energy2> masssquared_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of QTildeSudakov. */ template <> struct BaseClassTrait<Herwig::QTildeSudakov,1> { /** Typedef of the first base class of QTildeSudakov. */ typedef Herwig::SudakovFormFactor NthBase; }; /** This template specialization informs ThePEG about the name of * the QTildeSudakov class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::QTildeSudakov> : public ClassTraitsBase<Herwig::QTildeSudakov> { /** Return a platform-independent class name */ static string className() { return "Herwig::QTildeSudakov"; } /** * The name of a file containing the dynamic library where the class * QTildeSudakov is implemented. It may also include several, space-separated, * libraries if the class QTildeSudakov depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_QTildeSudakov_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/Makefile.am������������������������������������������������������0000644�0001750�0001750�00000001101�11754474775�021660� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������## libHwDefaultShower.la will go into HwShower.so noinst_LTLIBRARIES = libHwDefaultShower.la libHwDefaultShower_la_SOURCES = \ QTildeSudakov.cc QTildeSudakov.h\ QTildeModel.cc QTildeModel.h\ Decay_QTildeShowerKinematics1to2.cc Decay_QTildeShowerKinematics1to2.h \ IS_QTildeShowerKinematics1to2.cc IS_QTildeShowerKinematics1to2.h \ FS_QTildeShowerKinematics1to2.cc FS_QTildeShowerKinematics1to2.h \ QTildeShowerKinematics1to2.cc QTildeShowerKinematics1to2.fh\ QTildeShowerKinematics1to2.h \ QTildeFinder.cc QTildeFinder.h\ QTildeReconstructor.cc QTildeReconstructor.h ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/Decay_QTildeShowerKinematics1to2.cc������������������������������0000644�0001750�0001750�00000011151�11754474775�026336� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Decay_QTildeShowerKinematics1to2.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the Decay_QTildeShowerKinematics1to2 class. // #include "Decay_QTildeShowerKinematics1to2.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/Shower/SplittingFunctions/SplittingFunction.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include <cassert> using namespace Herwig; void Decay_QTildeShowerKinematics1to2:: updateChildren(const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren, bool angularOrder ) const { if(theChildren.size() != 2) throw Exception() << "Decay_QTildeShowerKinematics1to2::updateChildren() " << "Warning! too many children!" << Exception::eventerror; // copy scales etc Energy dqtilde = scale(); double dz = z(); double dphi = phi(); // set the values if(theParent->showerVariables().empty()) { theParent->showerVariables().resize(3); theParent->showerParameters().resize(2); theParent->showerParameters()[0]=1.; } for(unsigned int ix=0;ix<2;++ix) { theChildren[ix]->showerVariables() .resize(3); theChildren[ix]->showerParameters().resize(2); } if(angularOrder) { theChildren[0]->setEvolutionScale( dqtilde); theChildren[1]->setEvolutionScale((1.-dz)*dqtilde); } else { theChildren[0]->setEvolutionScale( dqtilde); theChildren[1]->setEvolutionScale( dqtilde); } // determine alphas of children according to interpretation of z theChildren[0]->showerParameters()[0]= dz *theParent->showerParameters()[0]; theChildren[1]->showerParameters()[0]=(1.-dz)*theParent->showerParameters()[0]; theChildren[0]->showerVariables()[0]= pT()*cos(dphi) + dz *theParent->showerVariables()[0]; theChildren[0]->showerVariables()[1]= pT()*sin(dphi) + dz *theParent->showerVariables()[1]; theChildren[1]->showerVariables()[0]= - pT()*cos(dphi) + (1.-dz)*theParent->showerVariables()[0]; theChildren[1]->showerVariables()[1]= - pT()*sin(dphi) + (1.-dz)*theParent->showerVariables()[1]; for(unsigned int ix=0;ix<2;++ix) theChildren[ix]->showerVariables()[2]= sqrt(sqr(theChildren[ix]->showerVariables()[0])+ sqr(theChildren[ix]->showerVariables()[1])); // set up the colour connections splittingFn()->colourConnection(theParent,theChildren[0],theChildren[1],false); // make the products children of the parent theParent->addChild(theChildren[0]); theParent->addChild(theChildren[1]); } void Decay_QTildeShowerKinematics1to2:: reconstructParent( const tShowerParticlePtr, const ParticleVector &) const { throw Exception() << "Decay_QTildeShowerKinematics1to2::updateParent not implemented" << Exception::abortnow; } void Decay_QTildeShowerKinematics1to2:: reconstructLast(const tShowerParticlePtr theLast, unsigned int iopt,Energy mass) const { // set beta component and consequently all missing data from that, // using the nominal (i.e. PDT) mass. Energy theMass = mass>ZERO ? mass : theLast->data().constituentMass(); theLast->showerParameters()[1]= (sqr(theMass) + sqr(theLast->showerVariables()[2]) - sqr( theLast->showerParameters()[0] )*pVector().m2()) / ( 2.*theLast->showerParameters()[0]*p_dot_n() ); // set that new momentum theLast->set5Momentum( sudakov2Momentum( theLast->showerParameters()[0], theLast->showerParameters()[1], theLast->showerVariables()[0], theLast->showerVariables()[1],iopt)); } void Decay_QTildeShowerKinematics1to2::initialize(ShowerParticle & particle,PPtr) { Lorentz5Momentum p, n, ppartner, pcm; assert(particle.perturbative()!=1); // this is for the initial decaying particle if(particle.perturbative()==2) { p = particle.momentum(); ShowerParticlePtr partner=particle.partner(); Lorentz5Momentum ppartner(partner->momentum()); // reomved to make inverse recon work properly //if(partner->getThePEGBase()) ppartner=partner->getThePEGBase()->momentum(); pcm=ppartner; Boost boost(p.findBoostToCM()); pcm.boost(boost); n = Lorentz5Momentum( ZERO,0.5*p.mass()*pcm.vect().unit()); n.boost( -boost); } else { tShoKinPtr kin=dynamic_ptr_cast<ShowerParticlePtr>(particle.parents()[0]) ->showerKinematics(); p = kin->getBasis()[0]; n = kin->getBasis()[1]; } setBasis(p,n); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/QTildeReconstructor.h��������������������������������������������0000644�0001750�0001750�00000045365�11754474775�024000� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // QTildeReconstructor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_QTildeReconstructor_H #define HERWIG_QTildeReconstructor_H // // This is the declaration of the QTildeReconstructor class. // #include "ThePEG/EventRecord/ColourLine.h" #include "Herwig++/Shower/Base/KinematicsReconstructor.h" #include "ThePEG/Repository/UseRandom.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * A simple struct to store the information we need on the * showering */ struct JetKinStruct { /** * Parent particle of the jet */ tShowerParticlePtr parent; /** * Momentum of the particle before reconstruction */ Lorentz5Momentum p; /** * Momentum of the particle after reconstruction */ Lorentz5Momentum q; }; /** * typedef for a vector of JetKinStruct */ typedef vector<JetKinStruct> JetKinVect; /** \ingroup Shower * * This class is responsible for the kinematical reconstruction * after each showering step, and also for the necessary Lorentz boosts * in order to preserve energy-momentum conservation in the overall collision, * and also the invariant mass and the rapidity of the hard subprocess system. * In the case of multi-step showering, there will be not unnecessary * kinematical reconstructions. * * There is also the option of taking a set of momenta for the particles * and inverting the reconstruction to give the evolution variables for the * shower. * * Notice: * - although we often use the term "jet" in either methods or variables names, * or in comments, which could appear applicable only for QCD showering, * there is indeed no "dynamics" represented in this class: only kinematics * is involved, as the name of this class remainds. Therefore it can be used * for any kind of showers (QCD-,QED-,EWK-,... bremsstrahlung). * * @see ShowerParticle * @see ShowerKinematics * @see \ref QTildeReconstructorInterfaces "The interfaces" * defined for QTildeReconstructor. */ class QTildeReconstructor: public KinematicsReconstructor { public: /** * Default constructor */ QTildeReconstructor() : _reconopt(0), _initialBoost(0), _minQ(MeV) {}; /** * Methods to reconstruct the kinematics of a scattering or decay process */ //@{ /** * Given in input a vector of the particles which initiated the showers * the method does the reconstruction of such jets, * including the appropriate boosts (kinematics reshufflings) * needed to conserve the total energy-momentum of the collision * and preserving the invariant mass and the rapidity of the * hard subprocess system. */ virtual bool reconstructHardJets(ShowerTreePtr hard, const map<tShowerProgenitorPtr, pair<Energy,double> > & pt) const; /** * Given in input a vector of the particles which initiated the showers * the method does the reconstruction of such jets, * including the appropriate boosts (kinematics reshufflings) * needed to conserve the total energy-momentum of the collision * and preserving the invariant mass and the rapidity of the * hard subprocess system. */ virtual bool reconstructDecayJets(ShowerTreePtr decay) const; //@} /** * Methods to invert the reconstruction of the shower for * a scattering or decay process and calculate * the variables used to generate the * shower given the particles produced. * This is needed for the CKKW and POWHEG approaches */ //@{ /** * Given the particles, with a history which we wish to interpret * as a shower reconstruct the variables used to generate the * shower */ virtual bool deconstructDecayJets(HardTreePtr, cEvolverPtr, ShowerInteraction::Type) const; /** * Given the particles, with a history which we wish to interpret * as a shower reconstruct the variables used to generate the shower * for a hard process */ virtual bool deconstructHardJets(HardTreePtr, cEvolverPtr, ShowerInteraction::Type) 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(); protected: /** * Methods to reconstruct the kinematics of individual jets */ //@{ /** * Given the particle (ShowerParticle object) that * originates a forward (time-like) jet, this method reconstructs the kinematics * of the jet. That is, by starting from the final grand-children (which * originates directly or indirectly from particleJetParent, * and which don't have children), and moving "backwards" (in a physical * time picture), towards the particleJetParent, the * ShowerKinematics objects associated with the various particles, * which have been created during the showering, are now completed. * In particular, at the end, we get the mass of the jet, which is the * main information we want. * This methods returns false if there was no radiation or rescaling required */ virtual bool reconstructTimeLikeJet(const tShowerParticlePtr particleJetParent, unsigned int iopt) const; /** * Exactly similar to the previous one, but for a space-like jet. * Also in this case we start from the final grand-children (which * are childless) of the particle which originates the jet, but in * this case we proceed "forward" (in the physical time picture) * towards the particleJetParent. * This methods returns false if there was no radiation or rescaling required */ bool reconstructSpaceLikeJet(const tShowerParticlePtr particleJetParent) const; /** * Exactly similar to the previous one, but for a decay jet * This methods returns false if there was no radiation or rescaling required */ bool reconstructDecayJet(const tShowerParticlePtr particleJetParent) const; //@} /** * Methods to perform the reconstruction of various types of colour * singlet systems */ //@{ /** * Perform the reconstruction of a system with one incoming and at least one * outgoing particle */ void reconstructInitialFinalSystem(vector<ShowerProgenitorPtr>) const; /** * Perform the reconstruction of a system with only final-state * particles */ void reconstructFinalStateSystem(bool applyBoost, const LorentzRotation & toRest, const LorentzRotation & fromRest, vector<ShowerProgenitorPtr>) const; /** * Reconstruction of a general coloured system */ void reconstructGeneralSystem(vector<ShowerProgenitorPtr> & ShowerHardJets) const; /** * Perform the reconstruction of a system with only final-state * particles */ void reconstructInitialInitialSystem(bool & applyBoost, LorentzRotation & toRest, LorentzRotation & fromRest, vector<ShowerProgenitorPtr>) const; //@} /** * Methods to perform the inverse reconstruction of various types of * colour singlet systems */ //@{ /** * Perform the inverse reconstruction of a system with only final-state * particles */ void deconstructFinalStateSystem(const LorentzRotation & toRest, const LorentzRotation & fromRest, HardTreePtr, vector<HardBranchingPtr>, cEvolverPtr, ShowerInteraction::Type) const; /** * Perform the inverse reconstruction of a system with only initial-state * particles */ void deconstructInitialInitialSystem(bool & applyBoost, LorentzRotation & toRest, LorentzRotation & fromRest, HardTreePtr, vector<HardBranchingPtr>, ShowerInteraction::Type ) const; /** * Perform the inverse reconstruction of a system with only initial-state * particles */ void deconstructInitialFinalSystem(HardTreePtr, vector<HardBranchingPtr>, cEvolverPtr, ShowerInteraction::Type ) const; bool deconstructGeneralSystem(HardTreePtr, cEvolverPtr, ShowerInteraction::Type) const; //@} /** * Various methods for the Lorentz transforms needed to do the * rescalings */ //@{ /** * Compute the boost to get from the the old momentum to the new */ LorentzRotation solveBoost(const double k, const Lorentz5Momentum & newq, const Lorentz5Momentum & oldp) const; /** * Compute the boost to get from the the old momentum to the new */ LorentzRotation solveBoost(const Lorentz5Momentum & newq, const Lorentz5Momentum & oldq) const; /** * Compute the boost to get from the the old momentum to the new */ LorentzRotation solveBoostZ(const Lorentz5Momentum & newq, const Lorentz5Momentum & oldq) const; /** * Recursively boost the initial-state shower * @param p The particle * @param bv The boost * @param parent The parent of the chain */ void boostChain(tPPtr p, const LorentzRotation & bv, tPPtr & parent) const; /** * Given a 5-momentum and a scale factor, the method returns the * Lorentz boost that transforms the 3-vector vec{momentum} ---> * k*vec{momentum}. The method returns the null boost in the case no * solution exists. This will only work in the case where the * outgoing jet-momenta are parallel to the momenta of the particles * leaving the hard subprocess. */ Boost solveBoostBeta( const double k, const Lorentz5Momentum & newq, const Lorentz5Momentum & oldp); /** * Compute boost parameter along z axis to get (Ep, any perp, qp) * from (E, same perp, q). */ double getBeta(const double E, const double q, const double Ep, const double qp) const {return (q*E-qp*Ep)/(sqr(qp)+sqr(E));} //@} /** * Methods to calculate the various scaling factors */ //@{ /** * Given a vector of 5-momenta of jets, where the 3-momenta are the initial * ones before showering and the masses are reconstructed after the showering, * this method returns the overall scaling factor for the 3-momenta of the * vector of particles, vec{P}_i -> k * vec{P}_i, such to preserve energy- * momentum conservation, i.e. after the rescaling the center of mass 5-momentum * is equal to the one specified in input, cmMomentum. * The method returns 0 if such factor cannot be found. * @param root_s Centre-of-mass energy * @param jets The jets */ double solveKfactor( const Energy & root_s, const JetKinVect & jets ) const; /** * Calculate the rescaling factors for the jets in a particle decay where * there was initial-state radiation * @param mb The mass of the decaying particle * @param n The reference vector for the initial state radiation * @param pjet The momentum of the initial-state jet * @param jetKinematics The JetKinStruct objects for the jets * @param partner The colour partner * @param ppartner The momentum of the colour partner of the decaying particle * before and after radiation * @param k1 The rescaling parameter for the partner * @param k2 The rescaling parameter for the outgoing singlet * @param qt The transverse momentum vector */ bool solveDecayKFactor(Energy mb, const Lorentz5Momentum & n, const Lorentz5Momentum & pjet, const JetKinVect & jetKinematics, ShowerParticlePtr partner, Lorentz5Momentum ppartner[2], double & k1, double & k2, Lorentz5Momentum & qt) const; /** * Compute the momentum rescaling factor needed to invert the shower * @param pout The momenta of the outgoing particles * @param mon The on-shell masses * @param roots The mass of the decaying particle */ double inverseRescalingFactor(vector<Lorentz5Momentum> pout, vector<Energy> mon,Energy roots) const; /** * Compute the momentum rescaling factor needed to invert the shower * @param pout The momenta of the outgoing particles * @param mon The on-shell masses * @param roots The mass of the decaying particle * @param ppartner The momentum of the colour partner * @param mbar The mass of the decaying particle * @param k1 The first scaling factor * @param k2 The second scaling factor */ bool inverseDecayRescalingFactor(vector<Lorentz5Momentum> pout, vector<Energy> mon,Energy roots, Lorentz5Momentum ppartner, Energy mbar, double & k1, double & k2) const; /** * Check the rescaling conserves momentum * @param k The rescaling * @param root_s The centre-of-mass energy * @param jets The jets */ Energy momConsEq(const double & k, const Energy & root_s, const JetKinVect & jets) const; //@} /** * Find the colour partners of a particle to identify the colour singlet * systems for the reconstruction. */ vector<unsigned int> findPartners(unsigned int ,vector<ShowerProgenitorPtr>) const; /** * Find the colour partners for as branching to identify the colour singlet * systems for the inverse reconstruction. */ void findPartners(HardBranchingPtr branch,set<HardBranchingPtr> & done, const set<HardBranchingPtr> & branchings, vector<HardBranchingPtr> & jets) const; /** * Add the intrinsic \f$p_T\f$ to the system if needed */ bool addIntrinsicPt(vector<ShowerProgenitorPtr>) const; /** * Apply a transform to the particle and any child, including child ShowerTree * objects * @param particle The particle * @param r The Lorentz transformation * @param match Whether or not to look at children etc * @param original The original particle */ void deepTransform(PPtr particle,const LorentzRotation & r, bool match=true,PPtr original=PPtr()) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static ClassDescription<QTildeReconstructor> initQTildeReconstructor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ QTildeReconstructor & operator=(const QTildeReconstructor &); private: /** * Return colour line progenitor pointer for ShowerProgenitor */ Ptr<ThePEG::ColourLine>::transient_pointer CL(ShowerProgenitorPtr a, unsigned int index=0) const { return const_ptr_cast<ThePEG::tColinePtr>(a->progenitor()->colourInfo()->colourLines()[index]); } /** * Return progenitor colour line size for ShowerProgenitor */ unsigned int CLSIZE(ShowerProgenitorPtr a) const { return a->progenitor()->colourInfo()->colourLines().size(); } /** * Return anti-colour line progenitor pointer for ShowerProgenitor */ Ptr<ThePEG::ColourLine>::transient_pointer ACL(ShowerProgenitorPtr a, unsigned int index=0) const { return const_ptr_cast<ThePEG::tColinePtr>(a->progenitor()->colourInfo()->antiColourLines()[index]); } /** * Return progenitor anti-colour line size for ShowerProgenitor */ unsigned int ACLSIZE(ShowerProgenitorPtr a) const { return a->progenitor()->colourInfo()->antiColourLines().size(); } /** * Return colour line size */ unsigned int CLSIZE(set<HardBranchingPtr>::const_iterator & a) const { return (*a)->branchingParticle()->colourInfo()->colourLines().size(); } /** * Return anti-colour line size */ unsigned int ACLSIZE(set<HardBranchingPtr>::const_iterator & a) const { return (*a)->branchingParticle()->colourInfo()->antiColourLines().size(); } /** * Option for handling the reconstruction */ unsigned int _reconopt; /** * Option for the boost for initial-initial reconstruction */ unsigned int _initialBoost; /** * Minimum invariant mass for initial-final dipoles to allow the * reconstruction */ Energy _minQ; /** * The progenitor of the jet currently being reconstructed */ mutable tShowerParticlePtr _progenitor; /** * Storage of the intrinsic \f$p_T\f$ */ mutable map<tShowerProgenitorPtr,pair<Energy,double> > _intrinsic; /** * Current ShowerTree */ mutable tShowerTreePtr _currentTree; /** * Particles which shouldn't have their masses rescaled as * vector for the interface */ PDVector _noRescaleVector; /** * Particles which shouldn't have their masses rescaled as * set for quick access */ set<cPDPtr> _noRescale; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of QTildeReconstructor. */ template <> struct BaseClassTrait<Herwig::QTildeReconstructor,1> { /** Typedef of the first base class of QTildeReconstructor. */ typedef Herwig::KinematicsReconstructor NthBase; }; /** This template specialization informs ThePEG about the name of * the QTildeReconstructor class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::QTildeReconstructor> : public ClassTraitsBase<Herwig::QTildeReconstructor> { /** Return a platform-independent class name */ static string className() { return "Herwig::QTildeReconstructor"; } /** * The name of a file containing the dynamic library where the class * QTildeReconstructor is implemented. It may also include several, space-separated, * libraries if the class QTildeReconstructor depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_QTildeReconstructor_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/FS_QTildeShowerKinematics1to2.cc���������������������������������0000644�0001750�0001750�00000020122�11754474775�025617� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FS_QTildeShowerKinematics1to2.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FS_QTildeShowerKinematics1to2 class. // #include "FS_QTildeShowerKinematics1to2.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/Shower/SplittingFunctions/SplittingFunction.h" #include "Herwig++/Shower/Base/ShowerParticle.h" using namespace Herwig; void FS_QTildeShowerKinematics1to2:: updateChildren(const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren, bool angularOrder) const { if(theChildren.size() != 2) throw Exception() << "FS_QTildeShowerKinematics1to2::updateChildren() " << "Warning! too many children!" << Exception::eventerror; // copy scales etc Energy dqtilde = scale(); // resize the parameter vectors if(theParent->showerVariables().empty()) { theParent->showerVariables().resize(3); theParent->showerParameters().resize(2); theParent->showerParameters()[0]=1.; } theChildren[0]->showerVariables() .resize(3); theChildren[0]->showerParameters().resize(2); theChildren[1]->showerVariables() .resize(3); theChildren[1]->showerParameters().resize(2); // note that 1st child gets z, 2nd gets (1-z) by our convention. if(angularOrder) { theChildren[0]->setEvolutionScale(z()*dqtilde); theChildren[1]->setEvolutionScale((1.-z())*dqtilde); } else { theChildren[0]->setEvolutionScale(dqtilde); theChildren[1]->setEvolutionScale(dqtilde); } // determine alphas of children according to interpretation of z theChildren[0]->showerParameters()[0]= z() *theParent->showerParameters()[0]; theChildren[1]->showerParameters()[0]= (1.-z())*theParent->showerParameters()[0]; // set the values theChildren[0]->showerVariables()[0]= pT()*cos(phi()) + z() *theParent->showerVariables()[0]; theChildren[0]->showerVariables()[1]= pT()*sin(phi()) + z() *theParent->showerVariables()[1]; theChildren[1]->showerVariables()[0]= - pT()*cos(phi()) + (1.-z())*theParent->showerVariables()[0]; theChildren[1]->showerVariables()[1]= - pT()*sin(phi()) + (1.-z())*theParent->showerVariables()[1]; for(unsigned int ix=0;ix<2;++ix) theChildren[ix]->showerVariables()[2]= sqrt(sqr(theChildren[ix]->showerVariables()[0])+ sqr(theChildren[ix]->showerVariables()[1])); // set up the colour connections splittingFn()->colourConnection(theParent,theChildren[0],theChildren[1],false); // make the products children of the parent theParent->addChild(theChildren[0]); theParent->addChild(theChildren[1]); } void FS_QTildeShowerKinematics1to2:: reconstructParent(const tShowerParticlePtr theParent, const ParticleVector & theChildren ) const { if(theChildren.size() != 2) throw Exception() << "FS_QTildeShowerKinematics1to2::updateParent() " << "Warning! too many children!" << Exception::eventerror; ShowerParticlePtr c1 = dynamic_ptr_cast<ShowerParticlePtr>(theChildren[0]); ShowerParticlePtr c2 = dynamic_ptr_cast<ShowerParticlePtr>(theChildren[1]); theParent->showerParameters()[1]= c1->showerParameters()[1] + c2->showerParameters()[1]; theParent->set5Momentum( c1->momentum() + c2->momentum() ); } void FS_QTildeShowerKinematics1to2::reconstructLast(const tShowerParticlePtr theLast, unsigned int iopt, Energy mass) const { // set beta component and consequently all missing data from that, // using the nominal (i.e. PDT) mass. Energy theMass = mass > ZERO ? mass : theLast->data().constituentMass(); theLast->showerParameters()[1]= (sqr(theMass) + sqr(theLast->showerVariables()[2]) - sqr( theLast->showerParameters()[0] )*pVector().m2()) / ( 2.*theLast->showerParameters()[0]*p_dot_n() ); // set that new momentum theLast->set5Momentum(sudakov2Momentum( theLast->showerParameters()[0], theLast->showerParameters()[1], theLast->showerVariables()[0], theLast->showerVariables()[1],iopt)); } void FS_QTildeShowerKinematics1to2::initialize(ShowerParticle & particle,PPtr) { // set the basis vectors Lorentz5Momentum p,n; if(particle.perturbative()!=0) { // find the partner and its momentum ShowerParticlePtr partner=particle.partner(); Lorentz5Momentum ppartner(partner->momentum()); // momentum of the emitting particle p = particle.momentum(); Lorentz5Momentum pcm; // if the partner is a final-state particle then the reference // vector is along the partner in the rest frame of the pair if(partner->isFinalState()) { Boost boost=(p + ppartner).findBoostToCM(); pcm = ppartner; pcm.boost(boost); n = Lorentz5Momentum(ZERO,pcm.vect()); n.boost( -boost); } else if(!partner->isFinalState()) { // if the partner is an initial-state particle then the reference // vector is along the partner which should be massless if(particle.perturbative()==1) {n = Lorentz5Momentum(ZERO,ppartner.vect());} // if the partner is an initial-state decaying particle then the reference // vector is along the backwards direction in rest frame of decaying particle else { Boost boost=ppartner.findBoostToCM(); pcm = p; pcm.boost(boost); n = Lorentz5Momentum( ZERO, -pcm.vect()); n.boost( -boost); } } } else if(particle.initiatesTLS()) { tShoKinPtr kin=dynamic_ptr_cast<ShowerParticlePtr> (particle.parents()[0]->children()[0])->showerKinematics(); p = kin->getBasis()[0]; n = kin->getBasis()[1]; } else { tShoKinPtr kin=dynamic_ptr_cast<ShowerParticlePtr>(particle.parents()[0]) ->showerKinematics(); p = kin->getBasis()[0]; n = kin->getBasis()[1]; } // set the basis vectors setBasis(p,n); } void FS_QTildeShowerKinematics1to2::updateParent(const tShowerParticlePtr parent, const ShowerParticleVector & children, bool) const { IdList ids(3); ids[0] = parent->id(); ids[1] = children[0]->id(); ids[2] = children[1]->id(); vector<Energy> virtualMasses = SudakovFormFactor()->virtualMasses(ids); if(children[0]->children().empty()) children[0]->setVirtualMass(virtualMasses[1]); if(children[1]->children().empty()) children[1]->setVirtualMass(virtualMasses[2]); // compute the new pT of the branching Energy2 pt2=sqr(z()*(1.-z()))*sqr(scale()) - sqr(children[0]->virtualMass())*(1.-z()) - sqr(children[1]->virtualMass())* z() ; if(ids[0]!=ParticleID::g) pt2 += z()*(1.-z())*sqr(virtualMasses[0]); Energy2 q2 = sqr(children[0]->virtualMass())/z() + sqr(children[1]->virtualMass())/(1.-z()) + pt2/z()/(1.-z()); if(pt2<ZERO) { parent->setVirtualMass(ZERO); } else { parent->setVirtualMass(sqrt(q2)); pT(sqrt(pt2)); } } void FS_QTildeShowerKinematics1to2:: resetChildren(const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren) const { // set the values theChildren[0]->showerVariables()[0]= pT()*cos(phi()) + z() *theParent->showerVariables()[0]; theChildren[0]->showerVariables()[1]= pT()*sin(phi()) + z() *theParent->showerVariables()[1]; theChildren[1]->showerVariables()[0]= - pT()*cos(phi()) + (1.-z())*theParent->showerVariables()[0]; theChildren[1]->showerVariables()[1]= - pT()*sin(phi()) + (1.-z())*theParent->showerVariables()[1]; for(unsigned int ix=0;ix<2;++ix) theChildren[ix]->showerVariables()[2]= sqrt(sqr(theChildren[ix]->showerVariables()[0])+ sqr(theChildren[ix]->showerVariables()[1])); for(unsigned int ix=0;ix<theChildren.size();++ix) { if(theChildren[ix]->children().empty()) continue; ShowerParticleVector children; for(unsigned int iy=0;iy<theChildren[ix]->children().size();++iy) children.push_back(dynamic_ptr_cast<ShowerParticlePtr> (theChildren[ix]->children()[iy])); theChildren[ix]->showerKinematics()->resetChildren(theChildren[ix],children); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/QTildeFinder.cc��������������������������������������������������0000644�0001750�0001750�00000023515�11754474775�022462� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // QTildeFinder.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the QTildeFinder class. // #include "QTildeFinder.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include "ThePEG/Repository/UseRandom.h" using namespace Herwig; ClassDescription<QTildeFinder> QTildeFinder::initQTildeFinder; // Definition of the static class description member. void QTildeFinder::persistentOutput(PersistentOStream & os) const { os << _finalFinalConditions << _initialFinalDecayConditions << _initialInitialConditions; } void QTildeFinder::persistentInput(PersistentIStream & is, int) { is >> _finalFinalConditions >> _initialFinalDecayConditions >>_initialInitialConditions; } void QTildeFinder::Init() { static ClassDocumentation<QTildeFinder> documentation ("This class is responsible for finding the partners for each interaction types ", "and within the evolution scale range specified by the ShowerVariables ", "then to determine the initial evolution scales for each pair of partners."); static Switch<QTildeFinder,unsigned int> interfaceFinalFinalConditions ("FinalFinalConditions", "The initial conditions for the shower of a final-final colour connection", &QTildeFinder::_finalFinalConditions, 0, false, false); static SwitchOption interfaceFinalFinalConditionsSymmetric (interfaceFinalFinalConditions, "Symmetric", "The symmetric choice", 0); static SwitchOption interfaceFinalFinalConditionsColoured (interfaceFinalFinalConditions, "Coloured", "Maximal radiation from the coloured particle", 1); static SwitchOption interfaceFinalFinalConditionsAntiColoured (interfaceFinalFinalConditions, "AntiColoured", "Maximal emission from the anticoloured particle", 2); static SwitchOption interfaceFinalFinalConditionsRandom (interfaceFinalFinalConditions, "Random", "Randomly selected maximal emission from one of the particles", 3); static Switch<QTildeFinder,unsigned int> interfaceInitialFinalDecayConditions ("InitialFinalDecayConditions", "The initial conditions for the shower of an initial-final" " decay colour connection.", &QTildeFinder::_initialFinalDecayConditions, 0, false, false); static SwitchOption interfaceInitialFinalDecayConditionsSymmetric (interfaceInitialFinalDecayConditions, "Symmetric", "The symmetric choice", 0); static SwitchOption interfaceInitialFinalDecayConditionsMaximal (interfaceInitialFinalDecayConditions, "Maximal", "Maximal radiation from the decay product", 1); static SwitchOption interfaceInitialFinalDecayConditionsSmooth (interfaceInitialFinalDecayConditions, "Smooth", "Smooth matching in the soft limit", 2); static Switch<QTildeFinder,unsigned int> interfaceInitialInitialConditions ("InitialInitialConditions", "The initial conditions for the shower of an initial-initial" " colour connection.", &QTildeFinder::_initialInitialConditions, 0, false, false); static SwitchOption interfaceInitialInitialConditionsSymmetric (interfaceInitialInitialConditions, "Symmetric", "The symmetric choice", 0); static SwitchOption interfaceInitialInitialConditionsMaximiseB (interfaceInitialInitialConditions, "MaximiseB", "Maximal radiation from parton b", 1); static SwitchOption interfaceInitialInitialConditionsMaximiseC (interfaceInitialInitialConditions, "MaximiseC", "Maximal radiation from parton c", 2); } pair<Energy,Energy> QTildeFinder:: calculateInitialFinalScales(const ShowerPPair &ppair, const bool isDecayCase) { Lorentz5Momentum pb = ppair.first->momentum(); Lorentz5Momentum pc = ppair.second->momentum(); if(!isDecayCase) { // In this case from JHEP 12(2003)045 we find the conditions // ktilde_b = (1+c) and ktilde_c = (1+2c) // We also find that c = m_c^2/Q^2. The process is a+b->c where // particle a is not colour connected (considered as a colour singlet). // Therefore we simply find that q_b = sqrt(Q^2+m_c^2) and // q_c = sqrt(Q^2+2 m_c^2) // We also assume that the first particle in the pair is the initial // state particle and the second is the final state one c Energy2 mc2 = sqr(ppair.second->mass()); Energy2 Q2 = -(pb-pc).m2(); return pair<Energy,Energy>(sqrt(Q2+mc2), sqrt(Q2+2*mc2)); } else { // In this case from JHEP 12(2003)045 we find, for the decay // process b->c+a(neutral), the condition // (ktilde_b-1)*(ktilde_c-c)=(1/4)*sqr(1-a+c+lambda). // We also assume that the first particle in the pair is the initial // state particle (b) and the second is the final state one (c). // - We find maximal phase space coverage through emissions from // c if we set ktilde_c = 4.*(sqr(1.-sqrt(a))-c) // - We find the most 'symmetric' way to populate the phase space // occurs for (ktilde_b-1)=(ktilde_c-c)=(1/2)*(1-a+c+lambda) // - We find the most 'smooth' way to populate the phase space // occurs for... Energy2 mb2(sqr(ppair.first->mass())); double a=(pb-pc).m2()/mb2; double c=sqr(ppair.second->mass())/mb2; double lambda = sqrt(1. + a*a + c*c - 2.*a - 2.*c - 2.*a*c); double PROD = 0.25*sqr(1. - a + c + lambda); double ktilde_b, ktilde_c,cosi(0.); switch(initialFinalDecayConditions()) { case 0: // the 'symmetric' choice ktilde_c = 0.5*(1-a+c+lambda) + c ; ktilde_b = 1.+PROD/(ktilde_c-c) ; break; case 1: // the 'maximal' choice ktilde_c = 4.0*(sqr(1.-sqrt(a))-c); ktilde_b = 1.+PROD/(ktilde_c-c) ; break; case 2: // the 'smooth' choice // c is a problem if very small here use 1GeV as minimum c = max(c,1.*GeV2/mb2); cosi = (sqr(1-sqrt(c))-a)/lambda; ktilde_b = 2.0/(1.0-cosi); ktilde_c = (1.0-a+c+lambda)*(1.0+c-a-lambda*cosi)/(2.0*(1.0+cosi)); break; default: throw Exception() << "Invalid option for decay shower's phase space" << " QTildeFinder::calculateInitialFinalScales" << Exception::abortnow; } return pair<Energy,Energy>(sqrt(mb2*ktilde_b),sqrt(mb2*ktilde_c)); } } pair<Energy,Energy> QTildeFinder:: calculateInitialInitialScales(const ShowerPPair &ppair) { // This case is quite simple. From JHEP 12(2003)045 we find the condition // that ktilde_b = ktilde_c = 1. In this case we have the process // b+c->a so we need merely boost to the CM frame of the two incoming // particles and then qtilde is equal to the energy in that frame Lorentz5Momentum p(ppair.first->momentum()+ppair.second->momentum()); p.boost(p.findBoostToCM()); Energy Q = sqrt(p.m2()); if(_initialInitialConditions==1) { return pair<Energy,Energy>(sqrt(2.0)*Q,sqrt(0.5)*Q); } else if(_initialInitialConditions==2) { return pair<Energy,Energy>(sqrt(0.5)*Q,sqrt(2.0)*Q); } else { return pair<Energy,Energy>(Q,Q); } } pair<Energy,Energy> QTildeFinder:: calculateFinalFinalScales(const ShowerPPair &particlePair) { static const double eps=1e-8; // Using JHEP 12(2003)045 we find that we need ktilde = 1/2(1+b-c+lambda) // ktilde = qtilde^2/Q^2 therefore qtilde = sqrt(ktilde*Q^2) // find momenta in rest frame of system Lorentz5Momentum p1= particlePair.first->momentum(); Lorentz5Momentum p2 = particlePair.second->momentum(); Lorentz5Momentum p12(p1+p2); Boost boostv=p12.findBoostToCM(); p1.boost(boostv); p2.boost(boostv); // calculate quantities for the scales Energy2 Q2 = p12.m2(); double b = p1.mass2()/Q2; double c = p2.mass2()/Q2; if(b<0.) { if(b<-eps) throw Exception() << "Negative Mass sqaured b = " << b << "in QTildeFinder::calculateFinalFinalScales()" << Exception::eventerror; b = 0.; } if(c<0.) { if(c<-eps) throw Exception() << "Negative Mass sqaured c = " << c << "in QTildeFinder::calculateFinalFinalScales()" << Exception::eventerror; c = 0.; } // KMH & PR - 16 May 2008 - swapped lambda calculation from // double lam=2.*p1.vect().mag()/Q; to sqrt(kallen(1,b,c)), // which should be identical for p1 & p2 onshell in their COM // but in the inverse construction for the Nason method, this // was not the case, leading to misuse. double lam=sqrt((1.+sqrt(b)+sqrt(c))*(1.-sqrt(b)-sqrt(c)) *(sqrt(b)-1.-sqrt(c))*(sqrt(c)-1.-sqrt(b))); // symmetric case unsigned int iopt=finalFinalConditions(); Energy firstQ,secondQ; if(iopt==0) { firstQ = sqrt(0.5*Q2*(1.+b-c+lam)); secondQ = sqrt(0.5*Q2*(1.-b+c+lam)); } // assymetric choice else { double kappab,kappac; // find if first particle is coloured bool colouredFirst=particlePair.first->colourLine()&& particlePair.first->colourLine()==particlePair.second->antiColourLine(); // calculate kappa with coloured line getting maximum if((iopt==1&&colouredFirst)|| // first particle coloured+maximal for coloured (iopt==2&&!colouredFirst)|| // first particle anticoloured+maximal for acoloured (iopt==3&&UseRandom::rndbool(0.5))) { // random choice kappab=4.*(1.-2.*sqrt(c)-b+c); kappac=c+0.25*sqr(1.-b-c+lam)/(kappab-b); } else { kappac=4.*(1.-2.*sqrt(b)-c+b); kappab=b+0.25*sqr(1.-b-c+lam)/(kappac-c); } // calculate the scales firstQ = sqrt(Q2*kappab); secondQ = sqrt(Q2*kappac); } return pair<Energy,Energy>(firstQ, secondQ); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/QTildeReconstructor.cc�������������������������������������������0000644�0001750�0001750�00000230730�11754474775�024126� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // QTildeReconstructor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the QTildeReconstructor class. // #include "QTildeReconstructor.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/RefVector.h" #include "Herwig++/Shower/Base/Evolver.h" #include "Herwig++/Shower/Base/PartnerFinder.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Shower/SplittingFunctions/SplittingFunction.h" #include <cassert> using namespace Herwig; namespace { enum SystemType { UNDEFINED=-1, II, IF, F ,I }; struct ColourSingletSystem { ColourSingletSystem() : type(UNDEFINED) {} ColourSingletSystem(SystemType intype,ShowerProgenitorPtr inpart) : type(intype),jets(1,inpart) {} /** * The type of system */ SystemType type; /** * The jets in the system */ vector<ShowerProgenitorPtr> jets; }; struct ColourSingletShower { ColourSingletShower() : type(UNDEFINED) {} ColourSingletShower(SystemType intype,HardBranchingPtr inpart) : type(intype),jets(1,inpart) {} /** * The type of system */ SystemType type; /** * The jets in the system */ vector<HardBranchingPtr> jets; }; } void QTildeReconstructor::persistentOutput(PersistentOStream & os) const { os << _reconopt << _initialBoost << ounit(_minQ,GeV) << _noRescale << _noRescaleVector; } void QTildeReconstructor::persistentInput(PersistentIStream & is, int) { is >> _reconopt >> _initialBoost >> iunit(_minQ,GeV) >> _noRescale >> _noRescaleVector; } ClassDescription<QTildeReconstructor> QTildeReconstructor::initQTildeReconstructor; // Definition of the static class description member. void QTildeReconstructor::Init() { static ClassDocumentation<QTildeReconstructor> documentation ( "This class is responsible for the kinematics reconstruction of the showering,", " including the kinematics reshuffling necessary to compensate for the recoil" "of the emissions." ); static Switch<QTildeReconstructor,unsigned int> interfaceReconstructionOption ("ReconstructionOption", "Option for the kinematics reconstruction", &QTildeReconstructor::_reconopt, 0, false, false); static SwitchOption interfaceReconstructionOptionGeneral (interfaceReconstructionOption, "General", "Use the general solution which ignores the colour structure for all processes", 0); static SwitchOption interfaceReconstructionOptionColour (interfaceReconstructionOption, "Colour", "Use the colour structure of the process to determine the reconstruction procedure.", 1); static Parameter<QTildeReconstructor,Energy> interfaceMinimumQ2 ("MinimumQ2", "The minimum Q2 for the reconstruction of initial-final systems", &QTildeReconstructor::_minQ, GeV, 0.001*GeV, 1e-6*GeV, 10.0*GeV, false, false, Interface::limited); static RefVector<QTildeReconstructor,ParticleData> interfaceNoRescale ("NoRescale", "Particles which shouldn't be rescaled to be on shell by the shower", &QTildeReconstructor::_noRescaleVector, -1, false, false, true, false, false); static Switch<QTildeReconstructor,unsigned int> interfaceInitialInitialBoostOption ("InitialInitialBoostOption", "Option for how the boost from the system before ISR to that after ISR is applied.", &QTildeReconstructor::_initialBoost, 0, false, false); static SwitchOption interfaceInitialInitialBoostOptionOneBoost (interfaceInitialInitialBoostOption, "OneBoost", "Apply one boost from old CMS to new CMS", 0); static SwitchOption interfaceInitialInitialBoostOptionLongTransBoost (interfaceInitialInitialBoostOption, "LongTransBoost", "First apply a longitudinal and then a transverse boost", 1); } void QTildeReconstructor::doinit() { KinematicsReconstructor::doinit(); _noRescale = set<cPDPtr>(_noRescaleVector.begin(),_noRescaleVector.end()); } bool QTildeReconstructor:: reconstructTimeLikeJet(const tShowerParticlePtr particleJetParent, unsigned int iopt) const { assert(particleJetParent); bool emitted=true; // if this is not a fixed point in the reconstruction if( !particleJetParent->isReconstructionFixedPoint() ) { // if not a reconstruction fixpoint, dig deeper for all children: for ( ParticleVector::const_iterator cit = particleJetParent->children().begin(); cit != particleJetParent->children().end(); ++cit ) reconstructTimeLikeJet(dynamic_ptr_cast<ShowerParticlePtr>(*cit),iopt); } // it is a reconstruction fixpoint, ie kinematical data has to be available else { // check if the parent was part of the shower ShowerParticlePtr jetGrandParent; if(!particleJetParent->parents().empty()) jetGrandParent= dynamic_ptr_cast<ShowerParticlePtr> (particleJetParent->parents()[0]); // update if so if (jetGrandParent) { if (jetGrandParent->showerKinematics()) { if(particleJetParent->id()==_progenitor->id()&& !_progenitor->data().stable()) { jetGrandParent->showerKinematics()->reconstructLast(particleJetParent,iopt, _progenitor->mass()); } else { jetGrandParent->showerKinematics()->reconstructLast(particleJetParent,iopt); } } } // otherwise else { Energy dm = particleJetParent->data().constituentMass(); if (abs(dm-particleJetParent->momentum().m())>0.001*MeV &&particleJetParent->dataPtr()->stable() &&particleJetParent->id()!=ParticleID::gamma &&_noRescale.find(particleJetParent->dataPtr())==_noRescale.end()) { Lorentz5Momentum dum = particleJetParent->momentum(); if(dm>dum.e()) throw KinematicsReconstructionVeto(); dum.setMass(dm); dum.rescaleRho(); particleJetParent->set5Momentum(dum); } else { emitted=false; } } } // recursion has reached an endpoint once, ie we can reconstruct the // kinematics from the children. if( !(particleJetParent->isReconstructionFixedPoint()) ) particleJetParent->showerKinematics() ->reconstructParent( particleJetParent, particleJetParent->children() ); return emitted; } bool QTildeReconstructor:: reconstructHardJets(ShowerTreePtr hard, const map<tShowerProgenitorPtr, pair<Energy,double> > & intrinsic) const { _currentTree = hard; _intrinsic=intrinsic; // extract the particles from the ShowerTree vector<ShowerProgenitorPtr> ShowerHardJets=hard->extractProgenitors(); try { // old recon method, using new member functions if(_reconopt==0) { reconstructGeneralSystem(ShowerHardJets); } // reconstruction based on coloured systems else { // identify the colour singlet systems vector<ColourSingletSystem> systems; vector<bool> done(ShowerHardJets.size(),false); for(unsigned int ix=0;ix<ShowerHardJets.size();++ix) { // if not treated create new system if(done[ix]) continue; systems.push_back(ColourSingletSystem(UNDEFINED,ShowerHardJets[ix])); done[ix] = true; if(!ShowerHardJets[ix]->progenitor()->coloured()) continue; // now find the colour connected particles vector<unsigned int> iloc(1,ix); do { vector<unsigned int> temp=findPartners(iloc.back(),ShowerHardJets); iloc.pop_back(); for(unsigned int iy=0;iy<temp.size();++iy) { if(!done[temp[iy]]) { done[temp[iy]] = true; iloc.push_back(temp[iy]); systems.back().jets.push_back(ShowerHardJets[temp[iy]]); } } } while(!iloc.empty()); } // catagorize the systems unsigned int nnun(0),nnii(0),nnif(0),nnf(0),nni(0); for(unsigned int ix=0;ix<systems.size();++ix) { unsigned int ni(0),nf(0); for(unsigned int iy=0;iy<systems[ix].jets.size();++iy) { if(systems[ix].jets[iy]->progenitor()->isFinalState()) ++nf; else ++ni; } // type // initial-initial if(ni==2&&nf==0) { systems[ix].type = II; ++nnii; } // initial only else if(ni==1&&nf==0) { systems[ix].type = I; ++nni; } // initial-final else if(ni==1&&nf>0) { systems[ix].type = IF; ++nnif; } // final only else if(ni==0&&nf>0) { systems[ix].type = F; ++nnf; } // otherwise unknown else { systems[ix].type = UNDEFINED; ++nnun; } } // now decide what to do // initial-initial connection and final-state colour singlet systems LorentzRotation toRest,fromRest; bool applyBoost(false); bool general(false); // Drell-Yan type if(nnun==0&&nnii==1&&nnif==0&&nnf>0&&nni==0) { // reconstruct initial-initial system for(unsigned int ix=0;ix<systems.size();++ix) { if(systems[ix].type==II) reconstructInitialInitialSystem(applyBoost,toRest,fromRest, systems[ix].jets); } } // DIS and VBF type else if(nnun==0&&nnii==0&&((nnif==1&&nnf>0&&nni==1)|| (nnif==2&& nni==0))) { // check these systems can be reconstructed for(unsigned int ix=0;ix<systems.size();++ix) { // compute q^2 if(systems[ix].type!=IF) continue; Lorentz5Momentum q; for(unsigned int iy=0;iy<systems[ix].jets.size();++iy) { if(systems[ix].jets[iy]->progenitor()->isFinalState()) q += systems[ix].jets[iy]->progenitor()->momentum(); else q -= systems[ix].jets[iy]->progenitor()->momentum(); } q.rescaleMass(); // check above cut if(abs(q.m())>=_minQ) continue; if(nnif==1&&nni==1) { throw KinematicsReconstructionVeto(); } else { general = true; break; } } if(!general) { for(unsigned int ix=0;ix<systems.size();++ix) { if(systems[ix].type==IF) reconstructInitialFinalSystem(systems[ix].jets); } } } // e+e- type else if(nnun==0&&nnii==0&&nnif==0&&nnf>0&&nni==2) { // only FS needed } // general type else { general = true; } // final-state systems except for general recon if(!general) { for(unsigned int ix=0;ix<systems.size();++ix) { if(systems[ix].type==F) reconstructFinalStateSystem(applyBoost,toRest,fromRest, systems[ix].jets); } } else { reconstructGeneralSystem(ShowerHardJets); } } } catch(KinematicsReconstructionVeto) { _progenitor=tShowerParticlePtr(); _intrinsic.clear(); _currentTree = tShowerTreePtr(); return false; } _progenitor=tShowerParticlePtr(); _intrinsic.clear(); // ensure x<1 for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=hard->incomingLines().begin();cit!=hard->incomingLines().end();++cit) { tPPtr parent = cit->first->progenitor(); while (!parent->parents().empty()) { parent = parent->parents()[0]; } tPPtr hadron; if ( cit->first->original()->parents().empty() ) { hadron = cit->first->original(); } else { hadron = cit->first->original()->parents()[0]; } if( ! (hadron->id() == parent->id() && hadron->children().size() <= 1) && parent->momentum().rho() > hadron->momentum().rho()) { _currentTree = tShowerTreePtr(); return false; } } _currentTree = tShowerTreePtr(); return true; } double QTildeReconstructor::solveKfactor(const Energy & root_s, const JetKinVect & jets) const { Energy2 s = sqr(root_s); // must be at least two jets if ( jets.size() < 2) throw KinematicsReconstructionVeto(); // sum of jet masses must be less than roots if(momConsEq( 0.0, root_s, jets )>ZERO) throw KinematicsReconstructionVeto(); // if two jets simple solution if ( jets.size() == 2 ) { static const Energy2 eps = 1.0e-4 * MeV2; if ( sqr(jets[0].p.x()+jets[1].p.x()) < eps && sqr(jets[0].p.y()+jets[1].p.y()) < eps && sqr(jets[0].p.z()+jets[1].p.z()) < eps ) { Energy test = (jets[0].p+jets[1].p).vect().mag(); if(test > 1.0e-4 * MeV) throw KinematicsReconstructionVeto(); Energy2 m1sq(jets[0].q.m2()),m2sq(jets[1].q.m2()); return sqrt( ( sqr(s - m1sq - m2sq) - 4.*m1sq*m2sq ) /(4.*s*jets[0].p.vect().mag2()) ); } else throw KinematicsReconstructionVeto(); } // i.e. jets.size() > 2, numerically // check convergence, if it's a problem maybe use Newton iteration? else { double k1 = 0.,k2 = 1.,k = 0.; if ( momConsEq( k1, root_s, jets ) < ZERO ) { while ( momConsEq( k2, root_s, jets ) < ZERO ) { k1 = k2; k2 *= 2; } while ( fabs( (k1 - k2)/(k1 + k2) ) > 1.e-10 ) { if( momConsEq( k2, root_s, jets ) == ZERO ) { return k2; } else { k = (k1+k2)/2.; if ( momConsEq( k, root_s, jets ) > ZERO ) { k2 = k; } else { k1 = k; } } } return k1; } else throw KinematicsReconstructionVeto(); } throw KinematicsReconstructionVeto(); } bool QTildeReconstructor:: reconstructSpaceLikeJet( const tShowerParticlePtr p) const { bool emitted = true; tShowerParticlePtr child; tShowerParticlePtr parent; if(!p->parents().empty()) parent = dynamic_ptr_cast<ShowerParticlePtr>(p->parents()[0]); if(parent) { emitted=true; reconstructSpaceLikeJet(parent); } // if branching reconstruct time-like child if(p->children().size()==2) child = dynamic_ptr_cast<ShowerParticlePtr>(p->children()[1]); if(p->perturbative()==0 && child) { dynamic_ptr_cast<ShowerParticlePtr>(p->children()[0])-> showerKinematics()->reconstructParent(p,p->children()); if(!child->children().empty()) { _progenitor=child; reconstructTimeLikeJet(child,0); // calculate the momentum of the particle Lorentz5Momentum pnew=p->momentum()-child->momentum(); pnew.rescaleMass(); p->children()[0]->set5Momentum(pnew); } } return emitted; } Boost QTildeReconstructor:: solveBoostBeta( const double k, const Lorentz5Momentum & newq, const Lorentz5Momentum & oldp ) { // try something different, purely numerical first: // a) boost to rest frame of newq, b) boost with kp/E Energy q = newq.vect().mag(); Energy2 qs = sqr(q); Energy2 Q2 = newq.m2(); Energy kp = k*(oldp.vect().mag()); Energy2 kps = sqr(kp); // usually we take the minus sign, since this boost will be smaller. // we only require |k \vec p| = |\vec q'| which leaves the sign of // the boost open but the 'minus' solution gives a smaller boost // parameter, i.e. the result should be closest to the previous // result. this is to be changed if we would get many momentum // conservation violations at the end of the shower from a hard // process. double betam = (q*sqrt(qs + Q2) - kp*sqrt(kps + Q2))/(kps + qs + Q2); // move directly to 'return' Boost beta = -betam*(k/kp)*oldp.vect(); // note that (k/kp)*oldp.vect() = oldp.vect()/oldp.vect().mag() but cheaper. // leave this out if it's running properly! if ( betam >= 0 ) return beta; else return Boost(0., 0., 0.); } bool QTildeReconstructor:: reconstructDecayJets(ShowerTreePtr decay) const { _currentTree = decay; try { // extract the particles from the ShowerTree vector<ShowerProgenitorPtr> ShowerHardJets=decay->extractProgenitors(); bool radiated[2]={false,false}; // find the decaying particle and check if particles radiated ShowerProgenitorPtr initial; for(unsigned int ix=0;ix<ShowerHardJets.size();++ix) { // only consider initial-state jets if(ShowerHardJets[ix]->progenitor()->isFinalState()) { radiated[1] |=ShowerHardJets[ix]->hasEmitted(); } else { initial=ShowerHardJets[ix]; radiated[0]|=ShowerHardJets[ix]->hasEmitted(); } } // find boost to the rest frame if needed Boost boosttorest=-initial->progenitor()->momentum().boostVector(); double gammarest = initial->progenitor()->momentum().e()/ initial->progenitor()->momentum().mass(); // check if need to boost to rest frame bool gottaBoost = (boosttorest.mag() > 1e-12); // if initial state radiation reconstruct the jet and set up the basis vectors Lorentz5Momentum pjet; Lorentz5Momentum nvect; // find the partner ShowerParticlePtr partner = initial->progenitor()->partner(); Lorentz5Momentum ppartner[2]; if(partner) ppartner[0]=partner->momentum(); // get the n reference vector if(partner) { if(initial->progenitor()->showerKinematics()) { nvect = initial->progenitor()->showerKinematics()->getBasis()[1]; } else { Lorentz5Momentum ppartner=initial->progenitor()->partner()->momentum(); if(gottaBoost) ppartner.boost(boosttorest,gammarest); nvect = Lorentz5Momentum( ZERO,0.5*initial->progenitor()->mass()* ppartner.vect().unit()); nvect.boost(-boosttorest,gammarest); } } // if ISR if(radiated[0]) { // reconstruct the decay jet reconstructDecayJet(initial->progenitor()); // momentum of decaying particle after ISR pjet=initial->progenitor()->momentum() -decay->incomingLines().begin()->second->momentum(); pjet.rescaleMass(); } // boost initial state jet and basis vector if needed if(gottaBoost) { pjet.boost(boosttorest,gammarest); nvect.boost(boosttorest,gammarest); ppartner[0].boost(boosttorest,gammarest); } // loop over the final-state particles and do the reconstruction JetKinVect possiblepartners; JetKinVect jetKinematics; bool atLeastOnce = radiated[0]; LorentzRotation restboost(boosttorest,gammarest); Energy inmass(ZERO); for(unsigned int ix=0;ix<ShowerHardJets.size();++ix) { // only consider final-state jets if(!ShowerHardJets[ix]->progenitor()->isFinalState()) { inmass=ShowerHardJets[ix]->progenitor()->mass(); continue; } // do the reconstruction JetKinStruct tempJetKin; tempJetKin.parent = ShowerHardJets[ix]->progenitor(); if(ShowerHardJets.size()==2) { Lorentz5Momentum dum=ShowerHardJets[ix]->progenitor()->momentum(); dum.setMass(inmass); dum.rescaleRho(); tempJetKin.parent->set5Momentum(dum); } tempJetKin.p = ShowerHardJets[ix]->progenitor()->momentum(); if(gottaBoost) tempJetKin.p.boost(boosttorest,gammarest); _progenitor=tempJetKin.parent; atLeastOnce |= reconstructTimeLikeJet(tempJetKin.parent,0); if(gottaBoost) deepTransform(tempJetKin.parent,restboost); tempJetKin.q = ShowerHardJets[ix]->progenitor()->momentum(); jetKinematics.push_back(tempJetKin); } if(partner) ppartner[1]=partner->momentum(); // calculate the rescaling parameters double k1,k2; Lorentz5Momentum qt; if(!solveDecayKFactor(initial->progenitor()->mass(),nvect,pjet, jetKinematics,partner,ppartner,k1,k2,qt)) { _currentTree = tShowerTreePtr(); return false; } // apply boosts and rescalings to final-state jets for(JetKinVect::iterator it = jetKinematics.begin(); it != jetKinematics.end(); ++it) { LorentzRotation Trafo = LorentzRotation(); if(it->parent!=partner) { // boost for rescaling if(atLeastOnce) { map<tShowerTreePtr,pair<tShowerProgenitorPtr, tShowerParticlePtr> >::const_iterator tit; for(tit = _currentTree->treelinks().begin(); tit != _currentTree->treelinks().end();++tit) { if(tit->second.first && tit->second.second==it->parent) break; } if(it->parent->children().empty()&&!it->parent->spinInfo() && tit==_currentTree->treelinks().end()) { Lorentz5Momentum pnew(k2*it->p.vect(), sqrt(sqr(k2*it->p.vect().mag())+it->q.mass2()), it->q.mass()); it->parent->set5Momentum(pnew); } else { Trafo = solveBoost(k2, it->q, it->p); } } if(gottaBoost) Trafo.boost(-boosttorest,gammarest); if(atLeastOnce || gottaBoost) deepTransform(it->parent,Trafo); } else { Lorentz5Momentum pnew=ppartner[0]; pnew *=k1; pnew-=qt; pnew.setMass(ppartner[1].mass()); pnew.rescaleEnergy(); LorentzRotation Trafo=solveBoost(1.,ppartner[1],pnew); if(gottaBoost) Trafo.boost(-boosttorest,gammarest); deepTransform(partner,Trafo); } } } catch(KinematicsReconstructionVeto) { _currentTree = tShowerTreePtr(); return false; } _currentTree = tShowerTreePtr(); return true; } bool QTildeReconstructor:: reconstructDecayJet( const tShowerParticlePtr p) const { if(p->children().empty()) return false; tShowerParticlePtr child; // if branching reconstruct time-like child child = dynamic_ptr_cast<ShowerParticlePtr>(p->children()[1]); if(child) { _progenitor=child; reconstructTimeLikeJet(child,1); // calculate the momentum of the particle Lorentz5Momentum pnew=p->momentum()-child->momentum(); pnew.rescaleMass(); p->children()[0]->set5Momentum(pnew); child=dynamic_ptr_cast<ShowerParticlePtr>(p->children()[0]); reconstructDecayJet(child); return true; } return false; } bool QTildeReconstructor:: solveDecayKFactor(Energy mb, const Lorentz5Momentum & n, const Lorentz5Momentum & pjet, const JetKinVect & jetKinematics, ShowerParticlePtr partner, Lorentz5Momentum ppartner[2], double & k1, double & k2, Lorentz5Momentum & qt) const { Energy2 pjn = partner ? pjet.vect()*n.vect() : ZERO; Energy2 pcn = partner ? ppartner[0].vect()*n.vect() : 1.*MeV2; Energy2 nmag = n.vect().mag2(); Lorentz5Momentum pn = partner ? (pjn/nmag)*n : Lorentz5Momentum(); qt=pjet-pn; qt.setE(ZERO); Energy2 pt2=qt.vect().mag2(); Energy Ejet = pjet.e(); // magnitudes of the momenta for fast access vector<Energy2> pmag; Energy total(Ejet); Lorentz5Momentum ptest; for(unsigned int ix=0;ix<jetKinematics.size();++ix) { pmag.push_back(jetKinematics[ix].p.vect().mag2()); total+=jetKinematics[ix].q.mass(); ptest+=jetKinematics[ix].p; } // return if no possible solution if(total>mb) return false; Energy2 pcmag=ppartner[0].vect().mag2(); // used newton-raphson to get the rescaling static const Energy eps=1e-8*GeV; long double d1(1.),d2(1.); Energy roots, ea, ec, ds; unsigned int ix=0; do { ++ix; d2 = d1 + pjn/pcn; roots = Ejet; ds = ZERO; for(unsigned int iy=0;iy<jetKinematics.size();++iy) { if(jetKinematics[iy].parent==partner) continue; ea = sqrt(sqr(d2)*pmag[iy]+jetKinematics[iy].q.mass2()); roots += ea; ds += d2/ea*pmag[iy]; } if(partner) { ec = sqrt(sqr(d1)*pcmag + pt2 + ppartner[1].mass2()); roots += ec; ds += d1/ec*pcmag; } d1 += (mb-roots)/ds; d2 = d1 + pjn/pcn; } while(abs(mb-roots)>eps && ix<100); k1=d1; k2=d2; // return true if N-R succeed, otherwise false return ix<100; } bool QTildeReconstructor:: deconstructDecayJets(HardTreePtr decay, cEvolverPtr, ShowerInteraction::Type) const { // extract the momenta of the particles vector<Lorentz5Momentum> pin; vector<Lorentz5Momentum> pout; // on-shell masses of the decay products vector<Energy> mon; Energy mbar(-GeV); // the hard branchings of the particles set<HardBranchingPtr>::iterator cit; set<HardBranchingPtr> branchings=decay->branchings(); // properties of the incoming particle bool ISR = false; HardBranchingPtr initial; Lorentz5Momentum qisr; // find the incoming particle, both before and after // any ISR for(cit=branchings.begin();cit!=branchings.end();++cit){ if((*cit)->status()==HardBranching::Incoming|| (*cit)->status()==HardBranching::Decay) { // search back up isr if needed HardBranchingPtr branch = *cit; while(branch->parent()) branch=branch->parent(); initial=branch; // momentum or original parent pin.push_back(branch->branchingParticle()->momentum()); // ISR? ISR = !branch->branchingParticle()->children().empty(); // ISR momentum qisr = pin.back()-(**cit).branchingParticle()->momentum(); qisr.rescaleMass(); } } assert(pin.size()==1); // compute boost to rest frame Boost boostv=-pin[0].boostVector(); // partner for ISR ShowerParticlePtr partner; Lorentz5Momentum ppartner; if(initial->branchingParticle()->partner()) { partner=initial->branchingParticle()->partner(); ppartner=partner->momentum(); } // momentum of the decay products for(cit=branchings.begin();cit!=branchings.end();++cit) { if((*cit)->status()!=HardBranching::Outgoing) continue; // find the mass of the particle // including special treatment for off-shell resonances // to preserve off-shell mass Energy mass; if(!(**cit).branchingParticle()->dataPtr()->stable()) { HardBranchingPtr branch=*cit; while(!branch->children().empty()) { for(unsigned int ix=0;ix<branch->children().size();++ix) { if(branch->children()[ix]->branchingParticle()->id()== (**cit).branchingParticle()->id()) { branch = branch->children()[ix]; continue; } } }; mass = branch->branchingParticle()->mass(); } else { mass = (**cit).branchingParticle()->dataPtr()->mass(); } // if not evolution partner of decaying particle if((*cit)->branchingParticle()!=partner) { pout.push_back((*cit)->branchingParticle()->momentum()); mon.push_back(mass); } // evolution partner of decaying particle else { mbar = mass; } } // boost all the momenta to the rest frame of the decaying particle for(unsigned int ix=0;ix<pout.size();++ix) pout[ix].boost(boostv); if(initial->branchingParticle()->partner()) { ppartner.boost(boostv); qisr.boost(boostv); } // compute the rescaling factors double k1,k2; if(!ISR) { if(partner) { pout.push_back(ppartner); mon.push_back(mbar); } k1=k2=inverseRescalingFactor(pout,mon,pin[0].mass()); if(partner) { pout.pop_back(); mon.pop_back(); } } else { if(!inverseDecayRescalingFactor(pout,mon,pin[0].mass(), ppartner,mbar,k1,k2)) return false; } // now calculate the p reference vectors unsigned int ifinal=0; for(cit=branchings.begin();cit!=branchings.end();++cit) { if((**cit).status()!=HardBranching::Outgoing) continue; // for partners other than colour partner of decaying particle if((*cit)->branchingParticle()!=partner) { Lorentz5Momentum pvect = (*cit)->branchingParticle()->momentum(); pvect.boost(boostv); pvect /= k1; pvect.setMass(mon[ifinal]); ++ifinal; pvect.rescaleEnergy(); pvect.boost(-boostv); (*cit)->pVector(pvect); (*cit)->showerMomentum(pvect); } // for colour partner of decaying particle else { Lorentz5Momentum pvect = (*cit)->branchingParticle()->momentum(); pvect.boost(boostv); Lorentz5Momentum qtotal; for(unsigned int ix=0;ix<pout.size();++ix) qtotal+=pout[ix]; Lorentz5Momentum qperp = qisr-(qisr.vect()*qtotal.vect())/(qtotal.vect().mag2())*qtotal; pvect +=qperp; pvect /=k2; pvect.setMass(mbar); pvect.rescaleEnergy(); pvect.boost(-boostv); (*cit)->pVector(pvect); (*cit)->showerMomentum(pvect); } } // // find the evolution partners // ShowerParticleVector particles; // particles.push_back((**decay->incoming().begin()).branchingParticle()); // for(cit=branchings.begin();cit!=branchings.end();++cit) { // if((**cit).status()==HardBranching::Outgoing) // particles.push_back((*cit)->branchingParticle()); // } // // partners should // evolver->showerModel()->partnerFinder() // ->setInitialEvolutionScales(particles,true,type,false); // For initial-state if needed if(initial) { tShowerParticlePtr newPartner=initial->branchingParticle()->partner(); if(newPartner) { tHardBranchingPtr branch; for( set<HardBranchingPtr>::iterator clt = branchings.begin(); clt != branchings.end(); ++clt ) { if((**clt).branchingParticle()==newPartner) { initial->colourPartner(*clt); branch=*clt; break; } } Lorentz5Momentum pvect = initial->branchingParticle()->momentum(); initial->pVector(pvect); Lorentz5Momentum ptemp = branch->pVector(); ptemp.boost(boostv); Lorentz5Momentum nvect = Lorentz5Momentum( ZERO, 0.5*initial->branchingParticle()->mass()* ptemp.vect().unit()); nvect.boost(-boostv); initial->nVector(nvect); } } // calculate the reference vectors, then for outgoing particles for(cit=branchings.begin();cit!=branchings.end();++cit){ if((**cit).status()!=HardBranching::Outgoing) continue; // find the partner branchings tShowerParticlePtr newPartner=(*cit)->branchingParticle()->partner(); if(!newPartner) continue; tHardBranchingPtr branch; for( set<HardBranchingPtr>::iterator clt = branchings.begin(); clt != branchings.end(); ++clt ) { if(cit==clt) continue; if((**clt).branchingParticle()==newPartner) { (**cit).colourPartner(*clt); branch=*clt; break; } } if((**decay->incoming().begin()).branchingParticle()==newPartner) { (**cit).colourPartner(*decay->incoming().begin()); branch = *decay->incoming().begin(); } // final-state colour partner if(branch->status()==HardBranching::Outgoing) { Boost boost=((*cit)->pVector()+branch->pVector()).findBoostToCM(); Lorentz5Momentum pcm = branch->pVector(); pcm.boost(boost); Lorentz5Momentum nvect = Lorentz5Momentum(ZERO,pcm.vect()); nvect.boost( -boost); (*cit)->nVector(nvect); } // initial-state colour partner else { Boost boost=branch->pVector().findBoostToCM(); Lorentz5Momentum pcm = (*cit)->pVector(); pcm.boost(boost); Lorentz5Momentum nvect = Lorentz5Momentum( ZERO, -pcm.vect()); nvect.boost( -boost); (*cit)->nVector(nvect); } } // now compute the new momenta // and calculate the shower variables for(cit=branchings.begin();cit!=branchings.end();++cit) { if((**cit).status()!=HardBranching::Outgoing) continue; LorentzRotation B=LorentzRotation(-boostv); LorentzRotation A=LorentzRotation(boostv),R; if((*cit)->branchingParticle()==partner) { Lorentz5Momentum qnew; Energy2 dot=(*cit)->pVector()*(*cit)->nVector(); double beta = 0.5*((*cit)->branchingParticle()->momentum().m2() -sqr((*cit)->pVector().mass()))/dot; qnew=(*cit)->pVector()+beta*(*cit)->nVector(); qnew.rescaleMass(); // compute the boost R=B*solveBoost(A*qnew,A*(*cit)->branchingParticle()->momentum())*A; } else { Lorentz5Momentum qnew; if((*cit)->branchingParticle()->partner()) { Energy2 dot=(*cit)->pVector()*(*cit)->nVector(); double beta = 0.5*((*cit)->branchingParticle()->momentum().m2() -sqr((*cit)->pVector().mass()))/dot; qnew=(*cit)->pVector()+beta*(*cit)->nVector(); qnew.rescaleMass(); } else { qnew = (*cit)->pVector(); } // compute the boost R=B*solveBoost(A*qnew,A*(*cit)->branchingParticle()->momentum())*A; } // reconstruct the momenta (*cit)->setMomenta(R,1.0,Lorentz5Momentum()); } if(initial) { initial->setMomenta(LorentzRotation(),1.0,Lorentz5Momentum()); } return true; } double QTildeReconstructor:: inverseRescalingFactor(vector<Lorentz5Momentum> pout, vector<Energy> mon, Energy roots) const { double lambda=1.; if(pout.size()==2) { double mu_q1(pout[0].m()/roots), mu_q2(pout[1].m()/roots); double mu_p1(mon[0]/roots) , mu_p2(mon[1]/roots); lambda = ((1.+mu_q1+mu_q2)*(1.-mu_q1-mu_q2)*(mu_q1-1.-mu_q2)*(mu_q2-1.-mu_q1))/ ((1.+mu_p1+mu_p2)*(1.-mu_p1-mu_p2)*(mu_p1-1.-mu_p2)*(mu_p2-1.-mu_p1)); if(lambda<0.) throw Exception() << "Rescaling factor is imaginary in QTildeReconstructor::" << "inverseRescalingFactor lambda^2= " << lambda << Exception::eventerror; lambda = sqrt(lambda); } else { unsigned int ntry=0; // compute magnitudes once for speed vector<Energy2> pmag; for(unsigned int ix=0;ix<pout.size();++ix) { pmag.push_back(pout[ix].vect().mag2()); } // Newton-Raphson for the rescaling vector<Energy> root; root.resize(pout.size()); do { // compute new energies Energy sum(ZERO); for(unsigned int ix=0;ix<pout.size();++ix) { root[ix] = sqrt(pmag[ix]/sqr(lambda)+sqr(mon[ix])); sum+=root[ix]; } // if accuracy reached exit if(abs(sum/roots-1.)<1e-10) break; // use Newton-Raphson to compute new guess for lambda Energy numer(ZERO),denom(ZERO); for(unsigned int ix=0;ix<pout.size();++ix) { numer +=root[ix]; denom +=pmag[ix]/root[ix]; } numer-=roots; double fact = 1.+sqr(lambda)*numer/denom; if(fact<0.) fact=0.5; lambda *=fact; ++ntry; } while(ntry<100); } if(isnan(lambda)) throw Exception() << "Rescaling factor is nan in QTildeReconstructor::" << "inverseRescalingFactor " << Exception::eventerror; return lambda; } bool QTildeReconstructor:: deconstructGeneralSystem(HardTreePtr tree, cEvolverPtr evolver, ShowerInteraction::Type type) const { // extract incoming and outgoing particles ColourSingletShower in,out; for(set<HardBranchingPtr>::const_iterator it=tree->branchings().begin(); it!=tree->branchings().end();++it) { if((**it).status()==HardBranching::Incoming) in .jets.push_back(*it); else out.jets.push_back(*it); } // do the initial-state reconstruction LorentzRotation toRest,fromRest; bool applyBoost(false); deconstructInitialInitialSystem(applyBoost,toRest,fromRest, tree,in.jets,type); // do the final-state reconstruction deconstructFinalStateSystem(toRest,fromRest,tree, out.jets,evolver,type); // only at this point that we can be sure all the reference vectors // are correct for(set<HardBranchingPtr>::const_iterator it=tree->branchings().begin(); it!=tree->branchings().end();++it) { if((**it).status()==HardBranching::Incoming) continue; if((**it).branchingParticle()->coloured()) (**it).setMomenta(LorentzRotation(),1.,Lorentz5Momentum(),false); } for(set<HardBranchingPtr>::const_iterator it=tree->incoming().begin(); it!=tree->incoming().end();++it) { (**it).setMomenta(LorentzRotation(),1.,Lorentz5Momentum(),false); } return true; } bool QTildeReconstructor::deconstructHardJets(HardTreePtr tree, cEvolverPtr evolver, ShowerInteraction::Type type) const { // inverse of old recon method if(_reconopt==0) { return deconstructGeneralSystem(tree,evolver,type); } // inverse of reconstruction based on coloured systems else { // identify the colour singlet systems vector<ColourSingletShower> systems; set<HardBranchingPtr> done; for(set<HardBranchingPtr>::const_iterator it=tree->branchings().begin(); it!=tree->branchings().end();++it) { // if not treated create new system if(done.find(*it)!=done.end()) continue; done.insert(*it); systems.push_back(ColourSingletShower(UNDEFINED,*it)); if(!(**it).branchingParticle()->coloured()) continue; // now find the colour connected particles findPartners(*it,done,tree->branchings(),systems.back().jets); } // catagorize the systems unsigned int nnun(0),nnii(0),nnif(0),nnf(0),nni(0); for(unsigned int ix=0;ix<systems.size();++ix) { unsigned int ni(0),nf(0); for(unsigned int iy=0;iy<systems[ix].jets.size();++iy) { if(systems[ix].jets[iy]->status()==HardBranching::Outgoing) ++nf; else ++ni; } // type // initial-initial if(ni==2&&nf==0) { systems[ix].type = II; ++nnii; } // initial only else if(ni==1&&nf==0) { systems[ix].type = I; ++nni; } // initial-final else if(ni==1&&nf>0) { systems[ix].type = IF; ++nnif; } // final only else if(ni==0&&nf>0) { systems[ix].type = F; ++nnf; } // otherwise unknown else { systems[ix].type = UNDEFINED; ++nnun; } } // now decide what to do LorentzRotation toRest,fromRest; bool applyBoost(false); bool general(false); // initial-initial connection and final-state colour singlet systems // Drell-Yan type if(nnun==0&&nnii==1&&nnif==0&&nnf>0&&nni==0) { // reconstruct initial-initial system for(unsigned int ix=0;ix<systems.size();++ix) { if(systems[ix].type==II) deconstructInitialInitialSystem(applyBoost,toRest,fromRest,tree, systems[ix].jets,type); } } // DIS and VBF type else if(nnun==0&&nnii==0&&((nnif==1&&nnf>0&&nni==1)|| (nnif==2&& nni==0))) { for(unsigned int ix=0;ix<systems.size();++ix) { if(systems[ix].type==IF) deconstructInitialFinalSystem(tree,systems[ix].jets,evolver,type); } } // e+e- type else if(nnun==0&&nnii==0&&nnif==0&&nnf>0&&nni==2) { // only FS needed // but need to boost to rest frame if QED ISR Lorentz5Momentum ptotal; for(unsigned int ix=0;ix<systems.size();++ix) { if(systems[ix].type==I) ptotal += systems[ix].jets[0]->branchingParticle()->momentum(); } toRest = LorentzRotation(ptotal.findBoostToCM()); fromRest = toRest; fromRest.invert(); } // general type else { general = true; } // final-state systems except for general recon if(!general) { for(unsigned int ix=0;ix<systems.size();++ix) { if(systems[ix].type==F) deconstructFinalStateSystem(toRest,fromRest,tree, systems[ix].jets,evolver,type); } } else { return deconstructGeneralSystem(tree,evolver,type); } return true; } } vector<unsigned int> QTildeReconstructor:: findPartners(unsigned int iloc , vector<ShowerProgenitorPtr> jets) const { vector<unsigned int> output; for(unsigned int iy=0;iy<jets.size();++iy) { if(!jets[iy]->progenitor()->data().coloured()||iy==iloc) continue; bool isPartner = false; // both in either initial or final state if(jets[iloc]->progenitor()->isFinalState()!=jets[iy]->progenitor()->isFinalState()) { //loop over all the colours of both for(unsigned int ix=0; ix<CLSIZE(jets[iloc]); ++ix){ for(unsigned int jx=0; jx<CLSIZE(jets[iy]); ++jx){ if(CL(jets[iloc],ix) && CL(jets[iloc],ix)==CL(jets[iy],jx)) isPartner = true; } } if(!isPartner){ //loop over anti colours of both for(unsigned int ix=0; ix<ACLSIZE(jets[iloc]); ++ix){ for(unsigned int jx=0; jx<ACLSIZE(jets[iy]); ++jx){ if(ACL(jets[iloc],ix) && ACL(jets[iloc],ix)==ACL(jets[iy],jx)) isPartner = true; } } } } else{ //loop over the colours of the first and the anti-colours of the other for(unsigned int ix=0; ix<CLSIZE(jets[iloc]); ++ix){ for(unsigned int jx=0; jx<ACLSIZE(jets[iy]); ++jx){ if(CL(jets[iloc],ix) && CL(jets[iloc],ix)==ACL(jets[iy],jx)) isPartner = true; } } if(!isPartner){ //loop over the anti-colours of the first and the colours of the other for(unsigned int ix=0; ix<ACLSIZE(jets[iloc]); ++ix){ for(unsigned int jx=0; jx<CLSIZE(jets[iy]); jx++){ if(ACL(jets[iloc],ix) && ACL(jets[iloc],ix)==CL(jets[iy],jx)) isPartner = true; } } } } // special for sources/sinks if(jets[iloc]->progenitor()->colourLine()) { if(jets[iloc]->progenitor()->colourLine()->sourceNeighbours().first) { tColinePair lines = jets[iloc]->progenitor()->colourLine()->sourceNeighbours(); if(lines.first == jets[iy]->progenitor()-> colourLine() || lines.first == jets[iy]->progenitor()-> colourLine() || lines.second == jets[iy]->progenitor()->antiColourLine() || lines.second == jets[iy]->progenitor()->antiColourLine()) isPartner = true; } if(jets[iloc]->progenitor()->colourLine()->sinkNeighbours().first) { tColinePair lines = jets[iloc]->progenitor()->colourLine()->sinkNeighbours(); if(lines.first == jets[iy]->progenitor()-> colourLine() || lines.first == jets[iy]->progenitor()-> colourLine() || lines.second == jets[iy]->progenitor()->antiColourLine() || lines.second == jets[iy]->progenitor()->antiColourLine()) isPartner = true; } } if(jets[iloc]->progenitor()->antiColourLine()) { if(jets[iloc]->progenitor()->antiColourLine()->sourceNeighbours().first) { tColinePair lines = jets[iloc]->progenitor()->antiColourLine()->sourceNeighbours(); if(lines.first == jets[iy]->progenitor()-> colourLine() || lines.first == jets[iy]->progenitor()-> colourLine() || lines.second == jets[iy]->progenitor()->antiColourLine() || lines.second == jets[iy]->progenitor()->antiColourLine()) isPartner = true; } if(jets[iloc]->progenitor()->antiColourLine()->sinkNeighbours().first) { tColinePair lines = jets[iloc]->progenitor()->antiColourLine()->sinkNeighbours(); if(lines.first == jets[iy]->progenitor()-> colourLine() || lines.first == jets[iy]->progenitor()-> colourLine() || lines.second == jets[iy]->progenitor()->antiColourLine() || lines.second == jets[iy]->progenitor()->antiColourLine()) isPartner = true; } } if(isPartner) output.push_back(iy); } return output; } void QTildeReconstructor:: reconstructInitialFinalSystem(vector<ShowerProgenitorPtr> jets) const { Lorentz5Momentum pin[2],pout[2]; bool atLeastOnce(false); for(unsigned int ix=0;ix<jets.size();++ix) { // final-state parton if(jets[ix]->progenitor()->isFinalState()) { pout[0] +=jets[ix]->progenitor()->momentum(); _progenitor = jets[ix]->progenitor(); atLeastOnce |= reconstructTimeLikeJet(jets[ix]->progenitor(),0); } // initial-state parton else { pin[0] +=jets[ix]->progenitor()->momentum(); atLeastOnce |= reconstructSpaceLikeJet(jets[ix]->progenitor()); assert(!jets[ix]->original()->parents().empty()); } } // add intrinsic pt if needed atLeastOnce |= addIntrinsicPt(jets); // momenta after showering for(unsigned int ix=0;ix<jets.size();++ix) { if(jets[ix]->progenitor()->isFinalState()) pout[1] += jets[ix]->progenitor()->momentum(); else pin[1] += jets[ix]->progenitor()->momentum(); } // work out the boost to the Breit frame Lorentz5Momentum pa = pout[0]-pin[0]; Lorentz5Momentum pb = pin[0]; Axis axis(pa.vect().unit()); LorentzRotation rot; double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); rot.setRotate(-acos(axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); rot.rotateX(Constants::pi); rot.boostZ( pa.e()/pa.vect().mag()); Lorentz5Momentum ptemp=rot*pb; Boost trans = -1./ptemp.e()*ptemp.vect(); trans.setZ(0.); rot.boost(trans); pa *=rot; // project and calculate rescaling // reference vectors Lorentz5Momentum n1(ZERO,ZERO,-pa.z(),-pa.z()); Lorentz5Momentum n2(ZERO,ZERO, pa.z(),-pa.z()); Energy2 n1n2 = n1*n2; // decompose the momenta Lorentz5Momentum qbp=rot*pin[1],qcp= rot*pout[1]; double a[2],b[2]; a[0] = n2*qbp/n1n2; b[0] = n1*qbp/n1n2; Lorentz5Momentum qperp = qbp-a[0]*n1-b[0]*n2; a[1] = 0.5*(qcp.m2()-qperp.m2())/n1n2; b[1] = 1.; double A(0.5*a[0]),B(b[0]*a[0]-a[1]*b[1]-0.25),C(-0.5*b[0]); if(sqr(B)-4.*A*C<0.) throw KinematicsReconstructionVeto(); double kb = 0.5*(-B+sqrt(sqr(B)-4.*A*C))/A; double kc = (a[0]*kb-0.5)/a[1]; if(kc==0.) throw KinematicsReconstructionVeto(); Lorentz5Momentum pnew[2] = { a[0]*kb*n1+b[0]/kb*n2+qperp, a[1]*kc*n1+b[1]/kc*n2+qperp}; LorentzRotation rotinv=rot.inverse(); LorentzRotation transb=rotinv*solveBoostZ(pnew[0],qbp)*rot; LorentzRotation transc=rotinv*solveBoost(pnew[1],qcp)*rot; for(unsigned int ix=0;ix<jets.size();++ix) { if(jets[ix]->progenitor()->isFinalState()) deepTransform(jets[ix]->progenitor(),transc); else { tPPtr parent; boostChain(jets[ix]->progenitor(),transb,parent); } } } bool QTildeReconstructor::addIntrinsicPt(vector<ShowerProgenitorPtr> jets) const { bool added=false; // add the intrinsic pt if needed for(unsigned int ix=0;ix<jets.size();++ix) { // only for initial-state particles which haven't radiated if(jets[ix]->progenitor()->isFinalState()|| jets[ix]->hasEmitted()) continue; if(_intrinsic.find(jets[ix])==_intrinsic.end()) continue; pair<Energy,double> pt=_intrinsic[jets[ix]]; Energy etemp = jets[ix]->original()->parents()[0]->momentum().z(); Lorentz5Momentum p_basis(ZERO, ZERO, etemp, abs(etemp)), n_basis(ZERO, ZERO,-etemp, abs(etemp)); double alpha = jets[ix]->progenitor()->x(); double beta = 0.5*(sqr(jets[ix]->progenitor()->data().mass())+ sqr(pt.first))/alpha/(p_basis*n_basis); Lorentz5Momentum pnew=alpha*p_basis+beta*n_basis; pnew.setX(pt.first*cos(pt.second)); pnew.setY(pt.first*sin(pt.second)); pnew.rescaleMass(); jets[ix]->progenitor()->set5Momentum(pnew); added = true; } return added; } LorentzRotation QTildeReconstructor:: solveBoost(const double k, const Lorentz5Momentum & newq, const Lorentz5Momentum & oldp ) const { Energy q = newq.vect().mag(); Energy2 qs = sqr(q); Energy2 Q2 = newq.mass2(); Energy kp = k*(oldp.vect().mag()); Energy2 kps = sqr(kp); double betam = (q*newq.e() - kp*sqrt(kps + Q2))/(kps + qs + Q2); Boost beta = -betam*(k/kp)*oldp.vect(); // note that (k/kp)*oldp.vect() = oldp.vect()/oldp.vect().mag() but cheaper. ThreeVector<Energy2> ax = newq.vect().cross( oldp.vect() ); double delta = newq.vect().angle( oldp.vect() ); LorentzRotation R; using Constants::pi; if ( ax.mag2()/GeV2/MeV2 > 1e-16 ) { R.rotate( delta, unitVector(ax) ).boost( beta ); } else if(abs(delta-pi)/pi < 0.001) { double phi=2.*pi*UseRandom::rnd(); Axis axis(cos(phi),sin(phi),0.); axis.rotateUz(newq.vect().unit()); R.rotate(delta,axis).boost( beta ); } else { R.boost( beta ); } return R; } LorentzRotation QTildeReconstructor::solveBoost(const Lorentz5Momentum & q, const Lorentz5Momentum & p ) const { Energy modp = p.vect().mag(); Energy modq = q.vect().mag(); double betam = (p.e()*modp-q.e()*modq)/(sqr(modq)+sqr(modp)+p.mass2()); Boost beta = -betam*q.vect().unit(); ThreeVector<Energy2> ax = p.vect().cross( q.vect() ); double delta = p.vect().angle( q.vect() ); LorentzRotation R; using Constants::pi; if ( ax.mag2()/GeV2/MeV2 > 1e-16 ) { R.rotate( delta, unitVector(ax) ).boost( beta ); } else { R.boost( beta ); } return R; } LorentzRotation QTildeReconstructor::solveBoostZ(const Lorentz5Momentum & q, const Lorentz5Momentum & p ) const { static const Energy2 eps2 = 1e-8*GeV2; static const Energy eps = 1e-4 *GeV; LorentzRotation R; double beta; Energy2 den = (p.t()*q.t()-p.z()*q.z()); Energy2 num = -(p.z()*q.t()-q.z()*p.t()); if(abs(den)<eps2||abs(num)<eps2) { if(abs(p.t()-abs(p.z()))<eps&&abs(q.t()-abs(q.z()))<eps) { double ratio = sqr(q.t()/p.t()); beta = -(1.-ratio)/(1.+ratio); } else { beta=0.; } } else { beta = num/den; } R.boostZ(beta); Lorentz5Momentum ptest = R*p; if(ptest.z()/q.z() < 0. || ptest.t()/q.t() < 0. ) { throw KinematicsReconstructionVeto(); } return R; } void QTildeReconstructor:: reconstructFinalStateSystem(bool applyBoost, const LorentzRotation & toRest, const LorentzRotation & fromRest, vector<ShowerProgenitorPtr> jets) const { // special for case of individual particle if(jets.size()==1) { LorentzRotation trans(toRest); trans.transform(fromRest); deepTransform(jets[0]->progenitor(),trans); return; } bool radiated(false); // find the hard process centre-of-mass energy Lorentz5Momentum pcm; // check if radiated and calculate total momentum for(unsigned int ix=0;ix<jets.size();++ix) { radiated |=jets[ix]->hasEmitted(); pcm += jets[ix]->progenitor()->momentum(); } // check if in CMF frame Boost beta_cm = pcm.findBoostToCM(); bool gottaBoost = (beta_cm.mag() > 1e-12); // collection of pointers to initial hard particle and jet momenta // for final boosts JetKinVect jetKinematics; vector<ShowerProgenitorPtr>::const_iterator cit; for(cit = jets.begin(); cit != jets.end(); cit++) { JetKinStruct tempJetKin; tempJetKin.parent = (*cit)->progenitor(); if(gottaBoost) { tempJetKin.parent->boost(beta_cm); map<tShowerTreePtr,pair<tShowerProgenitorPtr, tShowerParticlePtr> >::const_iterator tit; for(tit = _currentTree->treelinks().begin(); tit != _currentTree->treelinks().end();++tit) { if(tit->second.first && tit->second.second==tempJetKin.parent) tit->first->transform(LorentzRotation(beta_cm),false); } } tempJetKin.p = (*cit)->progenitor()->momentum(); _progenitor=tempJetKin.parent; radiated |= reconstructTimeLikeJet((*cit)->progenitor(),0); tempJetKin.q = (*cit)->progenitor()->momentum(); jetKinematics.push_back(tempJetKin); } // find the rescaling factor double k = 0.0; if(radiated) { k = solveKfactor(pcm.m(), jetKinematics); } // perform the rescaling and boosts for(JetKinVect::iterator it = jetKinematics.begin(); it != jetKinematics.end(); ++it) { LorentzRotation Trafo = LorentzRotation(); if(radiated) Trafo = solveBoost(k, it->q, it->p); if(gottaBoost) Trafo.boost(-beta_cm); if(applyBoost) { Trafo.transform( toRest); Trafo.transform(fromRest); } if(radiated || gottaBoost || applyBoost) deepTransform(it->parent,Trafo); } } void QTildeReconstructor:: reconstructInitialInitialSystem(bool & applyBoost, LorentzRotation & toRest, LorentzRotation & fromRest, vector<ShowerProgenitorPtr> jets) const { bool radiated = false; Lorentz5Momentum pcm; // check whether particles radiated and calculate total momentum for( unsigned int ix = 0; ix < jets.size(); ++ix ) { radiated |= jets[ix]->hasEmitted(); pcm += jets[ix]->progenitor()->momentum(); } // check if intrinsic pt to be added radiated |= !_intrinsic.empty(); // if no radiation return if(!radiated) return; // initial state shuffling applyBoost=false; vector<Lorentz5Momentum> p, pq, p_in; for(unsigned int ix=0;ix<jets.size();++ix) { // at momentum to vector p_in.push_back(jets[ix]->progenitor()->momentum()); // reconstruct the jet radiated |= reconstructSpaceLikeJet(jets[ix]->progenitor()); assert(!jets[ix]->original()->parents().empty()); Energy etemp = jets[ix]->original()->parents()[0]->momentum().z(); Lorentz5Momentum ptemp = Lorentz5Momentum(ZERO, ZERO, etemp, abs(etemp)); pq.push_back(ptemp); } // add the intrinsic pt if needed radiated |=addIntrinsicPt(jets); for(unsigned int ix=0;ix<jets.size();++ix) { p.push_back(jets[ix]->progenitor()->momentum()); } double x1 = p_in[0].z()/pq[0].z(); double x2 = p_in[1].z()/pq[1].z(); Energy MDY = (p_in[0] + p_in[1]).m(); Energy2 S = (pq[0]+pq[1]).m2(); // if not need don't apply boosts if(!(radiated && p.size() == 2 && pq.size() == 2)) return; applyBoost=true; // find alphas and betas in terms of desired basis Energy2 p12 = pq[0]*pq[1]; double a[2] = {p[0]*pq[1]/p12,p[1]*pq[1]/p12}; double b[2] = {p[0]*pq[0]/p12,p[1]*pq[0]/p12}; Lorentz5Momentum p1p = p[0] - a[0]*pq[0] - b[0]*pq[1]; Lorentz5Momentum p2p = p[1] - a[1]*pq[0] - b[1]*pq[1]; // compute kappa Energy2 A = a[0]*b[1]*S; Energy2 B = Energy2(sqr(MDY)) - (a[0]*b[0]+a[1]*b[1])*S - (p1p+p2p).m2(); Energy2 C = a[1]*b[0]*S; double rad = 1.-4.*A*C/sqr(B); if(rad < 0.) throw KinematicsReconstructionVeto(); double kp = B/(2.*A)*(1.+sqrt(rad)); // now compute k1, k2 rad = kp*(b[0]+kp*b[1])/(kp*a[0]+a[1])*(x1/x2); if(rad <= 0.) throw KinematicsReconstructionVeto(); double k1 = sqrt(rad); double k2 = kp/k1; double beta[2] = {getBeta((a[0]+b[0]), (a[0]-b[0]), (k1*a[0]+b[0]/k1), (k1*a[0]-b[0]/k1)), getBeta((a[1]+b[1]), (a[1]-b[1]), (a[1]/k2+k2*b[1]), (a[1]/k2-k2*b[1]))}; if (pq[0].z() > ZERO) { beta[0] = -beta[0]; beta[1] = -beta[1]; } // apply the boosts Lorentz5Momentum newcmf; for(unsigned int ix=0;ix<jets.size();++ix) { tPPtr toBoost = jets[ix]->progenitor(); Boost betaboost(0, 0, beta[ix]); tPPtr parent; boostChain(toBoost, LorentzRotation(betaboost),parent); if(parent->momentum().e()/pq[ix].e()>1.|| parent->momentum().z()/pq[ix].z()>1.) throw KinematicsReconstructionVeto(); newcmf+=toBoost->momentum(); } if(newcmf.m()<ZERO||newcmf.e()<ZERO) throw KinematicsReconstructionVeto(); // do one boost toRest = LorentzRotation(pcm.findBoostToCM()); if(_initialBoost==0) { fromRest = LorentzRotation(newcmf.boostVector()); } else if(_initialBoost==1) { // first apply longitudinal boost double beta = newcmf.z()/sqrt(newcmf.m2()+sqr(newcmf.z())); fromRest=LorentzRotation(Boost(0.,0.,beta)); // then transverse one Energy pT = sqrt(sqr(newcmf.x())+sqr(newcmf.y())); beta = pT/newcmf.t(); fromRest.boost(Boost(beta*newcmf.x()/pT,beta*newcmf.y()/pT,0.)); } else assert(false); } void QTildeReconstructor:: deconstructInitialInitialSystem(bool & applyBoost, LorentzRotation & toRest, LorentzRotation & fromRest, HardTreePtr tree, vector<HardBranchingPtr> jets, ShowerInteraction::Type) const { // get the momenta of the particles vector<Lorentz5Momentum> pin; vector<Lorentz5Momentum> pq; vector<HardBranchingPtr>::iterator cit; for(cit=jets.begin();cit!=jets.end();++cit) { pin.push_back((*cit)->branchingParticle()->momentum()); Energy etemp = (*cit)->beam()->momentum().z(); pq.push_back(Lorentz5Momentum(ZERO, ZERO,etemp, abs(etemp))); } bool order = (*tree->incoming().begin())->beam()->momentum().z()/pq[0].z()<0.; assert(pin.size()==2); // decompose the momenta double alpha[2],beta[2]; Energy2 p12=pq[0]*pq[1]; Lorentz5Momentum pt[2]; for(unsigned int ix=0;ix<2;++ix) { alpha[ix] = pin[ix]*pq[1]/p12; beta [ix] = pin[ix]*pq[0]/p12; pt[ix] = pin[ix]-alpha[ix]*pq[0]-beta[ix]*pq[1]; } // parton level centre-of-mass Lorentz5Momentum pcm=pin[0]+pin[1]; pcm.rescaleMass(); double rap=pcm.rapidity(); // hadron level cmf Energy2 s = (pq[0] +pq[1] ).m2(); // calculate the x values double x[2]={sqrt(pcm.mass2()/s*exp(2.*rap)),pcm.mass2()/s/x[0]}; if(pq[0].z()<ZERO) swap(x[0],x[1]); double k1=alpha[0]/x[0],k2=beta[1]/x[1]; double alphanew[2]={alpha[0]/k1,alpha[1]*k2}; double betanew [2]={beta [0]*k1,beta [1]/k2}; double boost[2]; for(unsigned int ix=0;ix<2;++ix) { boost[ix] = getBeta(alpha [ix]+beta [ix], alpha[ix] -beta [ix], alphanew[ix]+betanew[ix], alphanew[ix]-betanew[ix]); if (pq[0].z() > ZERO) beta[ix]*=-1.; } // apply the boost the the particles // first incoming particle if(order) swap(pq[0],pq[1]); // now apply the boosts Boost betaboost(0.,0.,-boost[0]); LorentzRotation R; R.boost(betaboost); set<HardBranchingPtr>::const_iterator cjt=tree->incoming().begin(); (*cjt)->pVector(pq[0]); (*cjt)->nVector(pq[1]); (*cjt)->setMomenta(R,1.,Lorentz5Momentum()); // second incoming particle betaboost = Boost(0.,0.,-boost[1]); R=LorentzRotation(betaboost); ++cjt; (*cjt)->pVector(pq[1]); (*cjt)->nVector(pq[0]); (*cjt)->setMomenta(R,1.,Lorentz5Momentum()); jets[0]->showerMomentum(x[0]*jets[0]->pVector()); jets[1]->showerMomentum(x[1]*jets[1]->pVector()); // and calculate the boosts applyBoost=true; // do one boost if(_initialBoost==0) { toRest = LorentzRotation(-pcm.boostVector()); } else if(_initialBoost==1) { // first the transverse boost Energy pT = sqrt(sqr(pcm.x())+sqr(pcm.y())); double beta = -pT/pcm.t(); toRest=LorentzRotation(Boost(beta*pcm.x()/pT,beta*pcm.y()/pT,0.)); // the longitudinal beta = pcm.z()/sqrt(pcm.m2()+sqr(pcm.z())); toRest.boost(Boost(0.,0.,-beta)); } else assert(false); fromRest = LorentzRotation((jets[0]->showerMomentum()+ jets[1]->showerMomentum()).boostVector()); } void QTildeReconstructor:: deconstructFinalStateSystem(const LorentzRotation & toRest, const LorentzRotation & fromRest, HardTreePtr tree, vector<HardBranchingPtr> jets, cEvolverPtr evolver, ShowerInteraction::Type type) const { if(jets.size()==1) { LorentzRotation R(toRest); R.transform(fromRest); // \todo What does this do? tree->showerRot( R ); jets[0]->original(R*jets[0]->branchingParticle()->momentum()); jets[0]->showerMomentum(R*jets[0]->branchingParticle()->momentum()); // find the colour partners ShowerParticleVector particles; vector<Lorentz5Momentum> ptemp; set<HardBranchingPtr>::const_iterator cjt; for(cjt=tree->branchings().begin();cjt!=tree->branchings().end();++cjt) { ptemp.push_back((**cjt).branchingParticle()->momentum()); (**cjt).branchingParticle()->set5Momentum((**cjt).showerMomentum()); particles.push_back((**cjt).branchingParticle()); } evolver->showerModel()->partnerFinder() ->setInitialEvolutionScales(particles,false,type,false); // calculate the reference vectors unsigned int iloc(0); set<HardBranchingPtr>::iterator clt; for(cjt=tree->branchings().begin();cjt!=tree->branchings().end();++cjt) { // reset the momentum (**cjt).branchingParticle()->set5Momentum(ptemp[iloc]); ++iloc; // sort out the partners tShowerParticlePtr partner = (*cjt)->branchingParticle()->partner(); if(!partner) continue; for(clt=tree->branchings().begin();clt!=tree->branchings().end();++clt) { if((**clt).branchingParticle()==partner) { (**cjt).colourPartner(*clt); break; } } tHardBranchingPtr branch; for(clt=tree->branchings().begin();clt!=tree->branchings().end();++clt) { if(clt==cjt) continue; if((*clt)->branchingParticle()==partner) { branch=*clt; break; } } } return; } vector<HardBranchingPtr>::iterator cit; vector<Lorentz5Momentum> pout; vector<Energy> mon; for(cit=jets.begin();cit!=jets.end();++cit) { pout.push_back((*cit)->branchingParticle()->momentum()); // KH - 230909 - If the particle has no children then it will // not have showered and so it should be "on-shell" so we can // get it's mass from it's momentum. This means that the // inverseRescalingFactor doesn't give any nans or do things // it shouldn't if it gets e.g. two Z bosons generated with // off-shell masses. This is for sure not the best solution. // PR 1/1/10 modification to previous soln if((*cit)->branchingParticle()->children().size()==0 || (!(*cit)->branchingParticle()->dataPtr()->coloured() && !(*cit)->branchingParticle()->dataPtr()->stable()) ) mon.push_back(pout.back().mass()); else mon.push_back((*cit)->branchingParticle()->dataPtr()->mass()); } // boost all the momenta to the rest frame of the decaying particle Lorentz5Momentum pin; for(unsigned int ix=0;ix<pout.size();++ix) { pout[ix].transform(toRest); pin += pout[ix]; } pin.rescaleMass(); // rescaling factor double lambda=inverseRescalingFactor(pout,mon,pin.mass()); // now calculate the p reference vectors for(cit=jets.begin();cit!=jets.end();++cit){ Lorentz5Momentum pvect = (*cit)->branchingParticle()->momentum(); pvect.transform(toRest); pvect /= lambda; if((*cit)->branchingParticle()->children().size()==0 || (!(*cit)->branchingParticle()->dataPtr()->coloured() && !(*cit)->branchingParticle()->dataPtr()->stable()) ) pvect.setMass((*cit)->branchingParticle()->momentum().mass()); else pvect.setMass((*cit)->branchingParticle()->dataPtr()->mass()); pvect.rescaleEnergy(); pvect.transform(fromRest); (*cit)->pVector(pvect); (*cit)->showerMomentum(pvect); } // find the colour partners ShowerParticleVector particles; vector<Lorentz5Momentum> ptemp; set<HardBranchingPtr>::const_iterator cjt; for(cjt=tree->branchings().begin();cjt!=tree->branchings().end();++cjt) { ptemp.push_back((**cjt).branchingParticle()->momentum()); (**cjt).branchingParticle()->set5Momentum((**cjt).showerMomentum()); particles.push_back((**cjt).branchingParticle()); } evolver->showerModel()->partnerFinder() ->setInitialEvolutionScales(particles,false,type,false); // calculate the reference vectors unsigned int iloc(0); set<HardBranchingPtr>::iterator clt; for(cjt=tree->branchings().begin();cjt!=tree->branchings().end();++cjt) { // reset the momentum (**cjt).branchingParticle()->set5Momentum(ptemp[iloc]); ++iloc; } for(cjt=tree->branchings().begin();cjt!=tree->branchings().end();++cjt) { // sort out the partners tShowerParticlePtr partner = (*cjt)->branchingParticle()->partner(); if(!partner) continue; for(clt=tree->branchings().begin();clt!=tree->branchings().end();++clt) { if((**clt).branchingParticle()==partner) { (**cjt).colourPartner(*clt); break; } } tHardBranchingPtr branch; for(clt=tree->branchings().begin();clt!=tree->branchings().end();++clt) { if(clt==cjt) continue; if((*clt)->branchingParticle()==partner) { branch=*clt; break; } } // compute the reference vectors // both incoming, should all ready be done if((**cjt).status()==HardBranching::Incoming && (**clt).status()==HardBranching::Incoming) { continue; } // both outgoing else if(!(**cjt).status()==HardBranching::Incoming&& branch->status()==HardBranching::Outgoing) { Boost boost=((*cjt)->pVector()+branch->pVector()).findBoostToCM(); Lorentz5Momentum pcm = branch->pVector(); pcm.boost(boost); Lorentz5Momentum nvect = Lorentz5Momentum(ZERO,pcm.vect()); nvect.boost( -boost); (**cjt).nVector(nvect); } else if((**cjt).status()==HardBranching::Incoming) { Lorentz5Momentum pa = -(**cjt).showerMomentum()+branch->showerMomentum(); Lorentz5Momentum pb = (**cjt).showerMomentum(); Axis axis(pa.vect().unit()); LorentzRotation rot; double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); rot.setRotate(-acos(axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); rot.rotateX(Constants::pi); rot.boostZ( pa.e()/pa.vect().mag()); pb*=rot; Boost trans = -1./pb.e()*pb.vect(); trans.setZ(0.); rot.boost(trans); Energy scale=(**cjt).beam()->momentum().e(); Lorentz5Momentum pbasis(ZERO,(**cjt).beam()->momentum().vect().unit()*scale); Lorentz5Momentum pcm = rot*pbasis; rot.invert(); (**cjt).nVector(rot*Lorentz5Momentum(ZERO,-pcm.vect())); tHardBranchingPtr branch2 = *cjt;; while (branch2->parent()) { branch2=branch2->parent(); branch2->nVector(rot*Lorentz5Momentum(ZERO,-pcm.vect())); } } else if(branch->status()==HardBranching::Incoming) { (**cjt).nVector(Lorentz5Momentum(ZERO,branch->showerMomentum().vect())); } } // now compute the new momenta for(cjt=tree->branchings().begin();cjt!=tree->branchings().end();++cjt) { if(!(*cjt)->branchingParticle()->isFinalState()) continue; Lorentz5Momentum qnew; if((*cjt)->branchingParticle()->partner()) { Energy2 dot=(*cjt)->pVector()*(*cjt)->nVector(); double beta = 0.5*((*cjt)->branchingParticle()->momentum().m2() -sqr((*cjt)->pVector().mass()))/dot; qnew=(*cjt)->pVector()+beta*(*cjt)->nVector(); qnew.rescaleMass(); } else { qnew = (*cjt)->pVector(); } // qnew is the unshuffled momentum in the rest frame of the p basis vectors, // for the simple case Z->q qbar g this was checked against analytic formulae. // compute the boost LorentzRotation R=solveBoost(qnew, toRest*(*cjt)->branchingParticle()->momentum())*toRest; (*cjt)->setMomenta(R,1.0,Lorentz5Momentum()); } } Energy QTildeReconstructor::momConsEq(const double & k, const Energy & root_s, const JetKinVect & jets) const { static const Energy2 eps=1e-8*GeV2; Energy dum = ZERO; for(JetKinVect::const_iterator it = jets.begin(); it != jets.end(); ++it) { Energy2 dum2 = (it->q).m2() + sqr(k)*(it->p).vect().mag2(); if(dum2 < ZERO) { if(dum2 < -eps) throw KinematicsReconstructionVeto(); dum2 = ZERO; } dum += sqrt(dum2); } return dum - root_s; } void QTildeReconstructor::boostChain(tPPtr p, const LorentzRotation &bv, tPPtr & parent) const { if(!p->parents().empty()) boostChain(p->parents()[0], bv,parent); else parent=p; p->transform(bv); if(p->children().size()==2) { if(dynamic_ptr_cast<ShowerParticlePtr>(p->children()[1])) deepTransform(p->children()[1],bv); } } void QTildeReconstructor:: reconstructGeneralSystem(vector<ShowerProgenitorPtr> & ShowerHardJets) const { // general recon, all initial-state in one system and final-state // in another ColourSingletSystem in,out; for(unsigned int ix=0;ix<ShowerHardJets.size();++ix) { if(ShowerHardJets[ix]->progenitor()->isFinalState()) out.jets.push_back(ShowerHardJets[ix]); else in.jets.push_back(ShowerHardJets[ix]); } // reconstruct initial-initial system LorentzRotation toRest,fromRest; bool applyBoost(false); reconstructInitialInitialSystem(applyBoost,toRest,fromRest,in.jets); // reconstruct the final-state systems reconstructFinalStateSystem(applyBoost,toRest,fromRest,out.jets); } bool QTildeReconstructor:: inverseDecayRescalingFactor(vector<Lorentz5Momentum> pout, vector<Energy> mon,Energy roots, Lorentz5Momentum ppartner, Energy mbar, double & k1, double & k2) const { ThreeVector<Energy> qtotal; vector<Energy2> pmag; for(unsigned int ix=0;ix<pout.size();++ix) { pmag.push_back(pout[ix].vect().mag2()); qtotal+=pout[ix].vect(); } Energy2 dot1 = qtotal*ppartner.vect(); Energy2 qmag2=qtotal.mag2(); double a = -dot1/qmag2; static const Energy eps=1e-10*GeV; unsigned int itry(0); Energy numer(ZERO),denom(ZERO); k1=1.; do { ++itry; numer=denom=0.*GeV; double k12=sqr(k1); for(unsigned int ix=0;ix<pout.size();++ix) { Energy en = sqrt(pmag[ix]/k12+sqr(mon[ix])); numer += en; denom += pmag[ix]/en; } Energy en = sqrt(qmag2/k12+sqr(mbar)); numer += en-roots; denom += qmag2/en; k1 += numer/denom*k12*k1; if(abs(k1)>1e10) return false; } while (abs(numer)>eps&&itry<100); k1 = abs(k1); k2 = a*k1; return itry<100; } void QTildeReconstructor:: findPartners(HardBranchingPtr branch,set<HardBranchingPtr> & done, const set<HardBranchingPtr> & branchings, vector<HardBranchingPtr> & jets) const { tShowerParticlePtr part=branch->branchingParticle(); unsigned int partNumColourLines = branch->branchingParticle()->colourInfo()-> colourLines().size(); unsigned int partNumAColourLines = branch->branchingParticle()->colourInfo()->antiColourLines().size(); for(set<HardBranchingPtr>::const_iterator cit=branchings.begin(); cit!=branchings.end();++cit) { if(done.find(*cit)!=done.end()||!(**cit).branchingParticle()->coloured()) continue; bool isPartner = false; // one initial and one final if(branch->status()!=(**cit).status()) { if(part->colourLine()) { for(unsigned int ix=0; ix<partNumColourLines; ++ix){ for(unsigned int jx=0; jx<CLSIZE(cit); ++jx){ if(part->colourInfo()->colourLines()[ix] == (**cit).branchingParticle()->colourInfo()->colourLines()[jx]){ isPartner = true; break; } } } } if(part->antiColourLine()) { for(unsigned int ix=0; ix<partNumAColourLines; ++ix){ for(unsigned int jx=0; jx<ACLSIZE(cit); ++jx){ if(part->colourInfo()->antiColourLines()[ix] == (**cit).branchingParticle()->colourInfo()->antiColourLines()[jx]){ isPartner = true; break; } } } } } // both in either initial or final state else { if(part->colourLine()) { for(unsigned int ix=0; ix<partNumColourLines; ++ix) { for(unsigned int jx=0; jx<ACLSIZE(cit); ++jx) { if(part->colourInfo()->colourLines()[ix] == (**cit).branchingParticle()->colourInfo()->antiColourLines()[jx]){ isPartner = true; break; } } } } if(part->antiColourLine()) { for(unsigned int ix=0; ix<partNumAColourLines; ++ix){ for(unsigned int jx=0; jx<CLSIZE(cit); ++jx){ if(part->colourInfo()->antiColourLines()[ix] == (**cit).branchingParticle()->colourInfo()->colourLines()[jx]){ isPartner = true; break; } } } } } if(isPartner) { jets.push_back(*cit); done.insert(*cit); findPartners(*cit,done,branchings,jets); } } } void QTildeReconstructor:: deconstructInitialFinalSystem(HardTreePtr tree,vector<HardBranchingPtr> jets, cEvolverPtr evolver, ShowerInteraction::Type type) const { HardBranchingPtr incoming; Lorentz5Momentum pin[2],pout[2],pbeam; HardBranchingPtr initial; Energy mc(ZERO); for(unsigned int ix=0;ix<jets.size();++ix) { // final-state parton if(jets[ix]->status()==HardBranching::Outgoing) { pout[0] += jets[ix]->branchingParticle()->momentum(); mc = jets[ix]->branchingParticle()->getThePEGBase() ? jets[ix]->branchingParticle()->getThePEGBase()->mass() : jets[ix]->branchingParticle()->dataPtr()->mass(); } // initial-state parton else { pin[0] += jets[ix]->branchingParticle()->momentum(); initial = jets[ix]; pbeam = jets[ix]->beam()->momentum(); Energy scale=pbeam.t(); pbeam = Lorentz5Momentum(ZERO,pbeam.vect().unit()*scale); incoming = jets[ix]; while(incoming->parent()) incoming = incoming->parent(); } } if(jets.size()>2) { pout[0].rescaleMass(); mc = pout[0].mass(); } // work out the boost to the Breit frame Lorentz5Momentum pa = pout[0]-pin[0]; Axis axis(pa.vect().unit()); LorentzRotation rot; double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); if(axis.perp2()>0.) { rot.setRotate(-acos(axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); rot.rotateX(Constants::pi); rot.boostZ( pa.e()/pa.vect().mag()); } // transverse part Lorentz5Momentum paxis=rot*pbeam; Boost trans = -1./paxis.e()*paxis.vect(); trans.setZ(0.); rot.boost(trans); pa *= rot; // reference vectors Lorentz5Momentum n1(ZERO,ZERO,-pa.z(),-pa.z()); Lorentz5Momentum n2(ZERO,ZERO, pa.z(),-pa.z()); Energy2 n1n2 = n1*n2; // decompose the momenta Lorentz5Momentum qbp=rot*pin[0],qcp= rot*pout[0]; double a[2],b[2]; a[0] = n2*qbp/n1n2; b[0] = n1*qbp/n1n2; a[1] = n2*qcp/n1n2; b[1] = n1*qcp/n1n2; Lorentz5Momentum qperp = qbp-a[0]*n1-b[0]*n2; // before reshuffling Energy Q = abs(pa.z()); double c = sqr(mc/Q); Lorentz5Momentum pb(ZERO,ZERO,0.5*Q*(1.+c),0.5*Q*(1.+c)); Lorentz5Momentum pc(ZERO,ZERO,0.5*Q*(c-1.),0.5*Q*(1.+c)); double anew[2],bnew[2]; anew[0] = pb*n2/n1n2; bnew[0] = 0.5*(qbp.m2()-qperp.m2())/n1n2/anew[0]; bnew[1] = pc*n1/n1n2; anew[1] = 0.5*qcp.m2()/bnew[1]/n1n2; Lorentz5Momentum qnewb = (anew[0]*n1+bnew[0]*n2+qperp); Lorentz5Momentum qnewc = (anew[1]*n1+bnew[1]*n2); // initial-state boost LorentzRotation rotinv=rot.inverse(); LorentzRotation transb=rotinv*solveBoostZ(qnewb,qbp)*rot; // final-state boost LorentzRotation transc=rotinv*solveBoost(qnewc,qcp)*rot; // this will need changing for more than one outgoing particle // set the pvectors for(unsigned int ix=0;ix<jets.size();++ix) { if(jets[ix]->status()==HardBranching::Incoming) { jets[ix]->pVector(pbeam); jets[ix]->showerMomentum(rotinv*pb); incoming->pVector(jets[ix]->pVector()); } else { jets[ix]->pVector(rotinv*pc); jets[ix]->showerMomentum(jets[ix]->pVector()); } } // find the colour partners ShowerParticleVector particles; vector<Lorentz5Momentum> ptemp; set<HardBranchingPtr>::const_iterator cjt; for(cjt=tree->branchings().begin();cjt!=tree->branchings().end();++cjt) { ptemp.push_back((**cjt).branchingParticle()->momentum()); (**cjt).branchingParticle()->set5Momentum((**cjt).showerMomentum()); particles.push_back((**cjt).branchingParticle()); } evolver->showerModel()->partnerFinder() ->setInitialEvolutionScales(particles,false,type,false); unsigned int iloc(0); for(cjt=tree->branchings().begin();cjt!=tree->branchings().end();++cjt) { // reset the momentum (**cjt).branchingParticle()->set5Momentum(ptemp[iloc]); ++iloc; } for(vector<HardBranchingPtr>::const_iterator cjt=jets.begin(); cjt!=jets.end();++cjt) { // sort out the partners tShowerParticlePtr partner = (*cjt)->branchingParticle()->partner(); if(!partner) continue; tHardBranchingPtr branch; for(set<HardBranchingPtr>::const_iterator clt=tree->branchings().begin();clt!=tree->branchings().end();++clt) { if((**clt).branchingParticle()==partner) { (**cjt).colourPartner(*clt); branch=*clt; break; } } // compute the reference vectors // both incoming, should all ready be done if((**cjt).status()==HardBranching::Incoming && branch->status()==HardBranching::Incoming) { Energy etemp = (*cjt)->beam()->momentum().z(); Lorentz5Momentum nvect(ZERO, ZERO,-etemp, abs(etemp)); tHardBranchingPtr branch2 = *cjt; (**cjt).nVector(nvect); while (branch2->parent()) { branch2=branch2->parent(); branch2->nVector(nvect); } } // both outgoing else if((**cjt).status()==HardBranching::Outgoing&& branch->status()==HardBranching::Outgoing) { Boost boost=((*cjt)->pVector()+branch->pVector()).findBoostToCM(); Lorentz5Momentum pcm = branch->pVector(); pcm.boost(boost); Lorentz5Momentum nvect = Lorentz5Momentum(ZERO,pcm.vect()); nvect.boost( -boost); (**cjt).nVector(nvect); } else if((**cjt).status()==HardBranching::Incoming) { Lorentz5Momentum pa = -(**cjt).showerMomentum()+branch->showerMomentum(); Lorentz5Momentum pb = (**cjt).showerMomentum(); Axis axis(pa.vect().unit()); LorentzRotation rot; double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); if(axis.perp2()>1e-20) { rot.setRotate(-acos(axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); rot.rotateX(Constants::pi); } if(abs(1.-pa.e()/pa.vect().mag())>1e-6) rot.boostZ( pa.e()/pa.vect().mag()); pb*=rot; Boost trans = -1./pb.e()*pb.vect(); trans.setZ(0.); rot.boost(trans); Energy scale=(**cjt).beam()->momentum().t(); Lorentz5Momentum pbasis(ZERO,(**cjt).beam()->momentum().vect().unit()*scale); Lorentz5Momentum pcm = rot*pbasis; rot.invert(); Lorentz5Momentum nvect = rot*Lorentz5Momentum(ZERO,-pcm.vect()); (**cjt).nVector(nvect); tHardBranchingPtr branch2 = *cjt; while (branch2->parent()) { branch2=branch2->parent(); branch2->nVector(nvect); } } else if(branch->status()==HardBranching::Incoming) { Lorentz5Momentum nvect=Lorentz5Momentum(ZERO,branch->showerMomentum().vect()); (**cjt).nVector(nvect); } } // now compute the new momenta for(vector<HardBranchingPtr>::const_iterator cjt=jets.begin(); cjt!=jets.end();++cjt) { if((**cjt).status()==HardBranching::Outgoing) { (**cjt).setMomenta(transc,1.,Lorentz5Momentum()); } } incoming->setMomenta(transb,1.,Lorentz5Momentum()); } void QTildeReconstructor::deepTransform(PPtr particle, const LorentzRotation & r, bool match, PPtr original) const { Lorentz5Momentum porig = particle->momentum(); if(!original) original = particle; for ( int i = 0, N = particle->children().size(); i < N; ++i ) { deepTransform(particle->children()[i],r, particle->children()[i]->id()==original->id()&&match,original); } particle->transform(r); if ( particle->next() ) deepTransform(particle->next(),r,match,original); if(!match) return; if(!particle->children().empty()) return; // check if there's a daughter tree which also needs boosting map<tShowerTreePtr,pair<tShowerProgenitorPtr,tShowerParticlePtr> >::const_iterator tit; for(tit = _currentTree->treelinks().begin(); tit != _currentTree->treelinks().end();++tit) { // if there is, boost it if(tit->second.first && tit->second.second==original) { Lorentz5Momentum pnew = tit->first->incomingLines().begin() ->first->progenitor()->momentum(); pnew *= tit->first->transform(); Lorentz5Momentum pdiff = porig-pnew; Energy2 test = sqr(pdiff.x()) + sqr(pdiff.y()) + sqr(pdiff.z()) + sqr(pdiff.t()); LorentzRotation rot; if(test>1e-6*GeV2) rot = solveBoost(porig,pnew); tit->first->transform(r*rot,false); } } } ����������������������������������������herwig++-2.6.0.orig/Shower/Default/QTildeSudakov.cc�������������������������������������������������0000644�0001750�0001750�00000025573�11754474775�022675� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // QTildeSudakov.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the QTildeSudakov class. // #include "QTildeSudakov.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/Shower/Default/FS_QTildeShowerKinematics1to2.h" #include "Herwig++/Shower/Default/IS_QTildeShowerKinematics1to2.h" #include "Herwig++/Shower/Default/Decay_QTildeShowerKinematics1to2.h" using namespace Herwig; NoPIOClassDescription<QTildeSudakov> QTildeSudakov::initQTildeSudakov; // Definition of the static class description member. void QTildeSudakov::Init() { static ClassDocumentation<QTildeSudakov> documentation ("The QTildeSudakov class implements the Sudakov form factor for ordering it" " qtilde"); } bool QTildeSudakov::guessTimeLike(Energy2 &t,Energy2 tmin,double enhance) { Energy2 told = t; // calculate limits on z and if lower>upper return if(!computeTimeLikeLimits(t)) return false; // guess values of t and z t = guesst(told,0,ids_,enhance,ids_[1]==ids_[2]); z(guessz(0,ids_)); // actual values for z-limits if(!computeTimeLikeLimits(t)) return false; if(t<tmin) { t=-1.0*GeV2; return false; } else return true; } bool QTildeSudakov::guessSpaceLike(Energy2 &t, Energy2 tmin, const double x, double enhance) { Energy2 told = t; // calculate limits on z if lower>upper return if(!computeSpaceLikeLimits(t,x)) return false; // guess values of t and z t = guesst(told,1,ids_,enhance,ids_[1]==ids_[2]); z(guessz(1,ids_)); // actual values for z-limits if(!computeSpaceLikeLimits(t,x)) return false; if(t<tmin) { t=-1.0*GeV2; return false; } else return true; } bool QTildeSudakov::PSVeto(const Energy2 t) { // still inside PS, return true if outside // check vs overestimated limits if(z() < zLimits().first || z() > zLimits().second) return true; // compute the pts Energy2 pt2=sqr(z()*(1.-z()))*t-masssquared_[1]*(1.-z())-masssquared_[2]*z(); if(ids_[0]!=ParticleID::g) pt2+=z()*(1.-z())*masssquared_[0]; // if pt2<0 veto if(pt2<pT2min()) return true; // otherwise calculate pt and return pT(sqrt(pt2)); return false; } ShoKinPtr QTildeSudakov::generateNextTimeBranching(const Energy startingScale, const IdList &ids,const bool cc, double enhance) { // First reset the internal kinematics variables that can // have been eventually set in the previous call to the method. q_ = ZERO; z(0.); phi(0.); // perform initialization Energy2 tmax(sqr(startingScale)),tmin; initialize(ids,tmin,cc); // check max > min if(tmax<=tmin) return ShoKinPtr(); // calculate next value of t using veto algorithm Energy2 t(tmax); do { if(!guessTimeLike(t,tmin,enhance)) break; } while(PSVeto(t) || SplittingFnVeto(z()*(1.-z())*t,ids,true) || alphaSVeto(sqr(z()*(1.-z()))*t)); if(t > ZERO) q_ = sqrt(t); else q_ = -1.*MeV; phi(Constants::twopi*UseRandom::rnd()); if(q_ < ZERO) return ShoKinPtr(); // return the ShowerKinematics object return createFinalStateBranching(q_,z(),phi(),pT()); } ShoKinPtr QTildeSudakov:: generateNextSpaceBranching(const Energy startingQ, const IdList &ids, double x,bool cc, double enhance, Ptr<BeamParticleData>::transient_const_pointer beam) { // First reset the internal kinematics variables that can // have been eventually set in the previous call to the method. q_ = ZERO; z(0.); phi(0.); // perform the initialization Energy2 tmax(sqr(startingQ)),tmin; initialize(ids,tmin,cc); // check max > min if(tmax<=tmin) return ShoKinPtr(); // extract the partons which are needed for the PDF veto // Different order, incoming parton is id = 1, outgoing are id=0,2 tcPDPtr parton0 = getParticleData(ids[0]); tcPDPtr parton1 = getParticleData(ids[1]); if(cc) { if(parton0->CC()) parton0 = parton0->CC(); if(parton1->CC()) parton1 = parton1->CC(); } // calculate next value of t using veto algorithm Energy2 t(tmax),pt2(ZERO); do { if(!guessSpaceLike(t,tmin,x,enhance)) break; pt2=sqr(1.-z())*t-z()*masssquared_[2]; } while(z() > zLimits().second || SplittingFnVeto((1.-z())*t/z(),ids,true) || alphaSVeto(sqr(1.-z())*t) || PDFVeto(t,x,parton0,parton1,beam) || pt2 < pT2min() ); if(t > ZERO && zLimits().first < zLimits().second) q_ = sqrt(t); else return ShoKinPtr(); phi(Constants::twopi*UseRandom::rnd()); pT(sqrt(pt2)); // create the ShowerKinematics and return it return createInitialStateBranching(q_,z(),phi(),pT()); } void QTildeSudakov::initialize(const IdList & ids, Energy2 & tmin,const bool cc) { ids_=ids; if(cc) { for(unsigned int ix=0;ix<ids.size();++ix) { if(getParticleData(ids[ix])->CC()) ids_[ix]*=-1; } } tmin = cutOffOption() != 2 ? ZERO : 4.*pT2min(); masses_ = virtualMasses(ids); masssquared_.clear(); for(unsigned int ix=0;ix<masses_.size();++ix) { masssquared_.push_back(sqr(masses_[ix])); if(ix>0) tmin=max(masssquared_[ix],tmin); } } ShoKinPtr QTildeSudakov::generateNextDecayBranching(const Energy startingScale, const Energy stoppingScale, const Energy minmass, const IdList &ids, const bool cc, double enhance) { // First reset the internal kinematics variables that can // have been eventually set in the previous call to this method. q_ = Constants::MaxEnergy; z(0.); phi(0.); // perform initialisation Energy2 tmax(sqr(stoppingScale)),tmin; initialize(ids,tmin,cc); tmin=sqr(startingScale); // check some branching possible if(tmax<=tmin) return ShoKinPtr(); // perform the evolution Energy2 t(tmin),pt2(-MeV2); do { if(!guessDecay(t,tmax,minmass,enhance)) break; pt2 = sqr(1.-z())*(t-masssquared_[0])-z()*masssquared_[2]; } while(SplittingFnVeto((1.-z())*t/z(),ids,true)|| alphaSVeto(sqr(1.-z())*t) || pt2<pT2min() || t*(1.-z())>masssquared_[0]-sqr(minmass)); if(t > ZERO) { q_ = sqrt(t); pT(sqrt(pt2)); } else return ShoKinPtr(); phi(Constants::twopi*UseRandom::rnd()); // create the ShowerKinematics object return createDecayBranching(q_,z(),phi(),pT()); } bool QTildeSudakov::guessDecay(Energy2 &t,Energy2 tmax, Energy minmass, double enhance) { // previous scale Energy2 told = t; // overestimated limits on z if(tmax<masssquared_[0]) { t=-1.0*GeV2; return false; } Energy2 tm2 = tmax-masssquared_[0]; Energy tm = sqrt(tm2); pair<double,double> limits=make_pair(sqr(minmass/masses_[0]), 1.-sqrt(masssquared_[2]+pT2min()+ 0.25*sqr(masssquared_[2])/tm2)/tm +0.5*masssquared_[2]/tm2); zLimits(limits); if(zLimits().second<zLimits().first) { t=-1.0*GeV2; return false; } // guess values of t and z t = guesst(told,2,ids_,enhance,ids_[1]==ids_[2]); z(guessz(2,ids_)); // actual values for z-limits if(t<masssquared_[0]) { t=-1.0*GeV2; return false; } tm2 = t-masssquared_[0]; tm = sqrt(tm2); limits=make_pair(sqr(minmass/masses_[0]), 1.-sqrt(masssquared_[2]+pT2min()+ 0.25*sqr(masssquared_[2])/tm2)/tm +0.5*masssquared_[2]/tm2); zLimits(limits); if(t>tmax||zLimits().second<zLimits().first) { t=-1.0*GeV2; return false; } else return true; } bool QTildeSudakov::computeTimeLikeLimits(Energy2 & t) { if (t < 1e-20 * GeV2) { t=-1.*GeV2; return false; } // special case for gluon radiating pair<double,double> limits; if(ids_[0]==ParticleID::g) { // no emission possible if(t<16.*masssquared_[1]) { t=-1.*GeV2; return false; } // overestimate of the limits limits.first = 0.5*(1.-sqrt(1.-4.*sqrt((masssquared_[1]+pT2min())/t))); limits.second = 1.-limits.first; } // special case for radiated particle is gluon else if(ids_[2]==ParticleID::g) { limits.first = sqrt((masssquared_[1]+pT2min())/t); limits.second = 1.-sqrt((masssquared_[2]+pT2min())/t); } else if(ids_[1]==ParticleID::g) { limits.second = sqrt((masssquared_[2]+pT2min())/t); limits.first = 1.-sqrt((masssquared_[1]+pT2min())/t); } else { limits.first = (masssquared_[1]+pT2min())/t; limits.second = 1.-(masssquared_[2]+pT2min())/t; } if(limits.first>=limits.second) { t=-1.*GeV2; return false; } zLimits(limits); return true; } bool QTildeSudakov::computeSpaceLikeLimits(Energy2 & t, double x) { if (t < 1e-20 * GeV2) { t=-1.*GeV2; return false; } pair<double,double> limits; // compute the limits limits.first = x; double yy = 1.+0.5*masssquared_[2]/t; limits.second = yy - sqrt(sqr(yy)-1.+pT2min()/t); // return false if lower>upper zLimits(limits); if(limits.second<limits.first) { t=-1.*GeV2; return false; } else return true; } Energy QTildeSudakov::calculateScale(double zin, Energy pt, IdList ids, unsigned int iopt) { Energy2 tmin; initialize(ids,tmin,false); // final-state branching if(iopt==0) { Energy2 scale=(sqr(pt)+masssquared_[1]*(1.-zin)+masssquared_[2]*zin); if(ids[0]!=ParticleID::g) scale -= zin*(1.-zin)*masssquared_[0]; scale /= sqr(zin*(1-zin)); return scale<=ZERO ? sqrt(tmin) : sqrt(scale); } else if(iopt==1) { Energy2 scale=(sqr(pt)+zin*masssquared_[2])/sqr(1.-zin); return scale<=ZERO ? sqrt(tmin) : sqrt(scale); } else if(iopt==2) { Energy2 scale = (sqr(pt)+zin*masssquared_[2])/sqr(1.-zin)+masssquared_[0]; return scale<=ZERO ? sqrt(tmin) : sqrt(scale); } else { throw Exception() << "Unknown option in QTildeSudakov::calculateScale() " << "iopt = " << iopt << Exception::runerror; } } ShoKinPtr QTildeSudakov::createFinalStateBranching(Energy scale,double z, double phi, Energy pt) { ShoKinPtr showerKin = new_ptr(FS_QTildeShowerKinematics1to2()); showerKin->scale(scale); showerKin->z(z); showerKin->phi(phi); showerKin->pT(pt); showerKin->SudakovFormFactor(this); return showerKin; } ShoKinPtr QTildeSudakov::createInitialStateBranching(Energy scale,double z, double phi, Energy pt) { ShoKinPtr showerKin = new_ptr(IS_QTildeShowerKinematics1to2()); showerKin->scale(scale); showerKin->z(z); showerKin->phi(phi); showerKin->pT(pt); showerKin->SudakovFormFactor(this); return showerKin; } ShoKinPtr QTildeSudakov::createDecayBranching(Energy scale,double z, double phi, Energy pt) { ShoKinPtr showerKin = new_ptr(Decay_QTildeShowerKinematics1to2()); showerKin->scale(scale); showerKin->z(z); showerKin->phi(phi); showerKin->pT(pt); showerKin->SudakovFormFactor(this); return showerKin; } �������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Default/IS_QTildeShowerKinematics1to2.cc���������������������������������0000644�0001750�0001750�00000014310�11754474775�025624� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IS_QTildeShowerKinematics1to2.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IS_QTildeShowerKinematics1to2 class. // #include "IS_QTildeShowerKinematics1to2.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include <cassert> using namespace Herwig; void IS_QTildeShowerKinematics1to2:: updateChildren( const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren, bool ) const { theChildren[1]->showerVariables().resize(3); theChildren[1]->showerParameters().resize(2); theChildren[1]->showerParameters()[0]= (1.-z())*theParent->showerParameters()[0]; double cphi = cos(phi()),sphi = sin(phi()); theChildren[1]->showerVariables()[0] = (1.-z())*theParent->showerVariables()[0] - cphi*pT(); theChildren[1]->showerVariables()[1]= (1.-z())*theParent->showerVariables()[1] - sphi*pT(); theChildren[1]->showerVariables()[2]= sqrt(sqr(theChildren[1]->showerVariables()[0])+ sqr(theChildren[1]->showerVariables()[1])); // space-like child theChildren[0]->showerParameters()[0] = theParent->showerParameters()[0] - theChildren[1]->showerParameters()[0]; theChildren[0]->showerParameters()[1] = theParent->showerParameters()[1] - theChildren[1]->showerParameters()[1]; theChildren[0]->showerVariables()[0]= theParent->showerVariables()[0] - theChildren[1]->showerVariables()[0]; theChildren[0]->showerVariables()[1]= theParent->showerVariables()[1] - theChildren[1]->showerVariables()[1]; } void IS_QTildeShowerKinematics1to2:: updateParent(const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren, bool angularOrder) const { // no z for angular ordering in backward branchings theParent->setEvolutionScale(scale()); if(angularOrder) theChildren[1]->setEvolutionScale((1.-z())*scale()); else theChildren[1]->setEvolutionScale(scale()); // set proper colour connections splittingFn()->colourConnection(theParent,theChildren[0],theChildren[1],true); // set proper parent/child relationships theParent->addChild(theChildren[0]); theParent->addChild(theChildren[1]); theParent->x(theChildren[0]->x()/z()); // create the storage for the shower variables theParent->showerVariables().resize(3); theParent->showerParameters().resize(2); if(theChildren[0]->showerVariables().empty()) { theChildren[0]->showerVariables().resize(3); theChildren[0]->showerParameters().resize(2); } } void IS_QTildeShowerKinematics1to2:: reconstructParent(const tShowerParticlePtr theParent, const ParticleVector & theChildren ) const { ShowerParticlePtr c1 = dynamic_ptr_cast<ShowerParticlePtr>(theChildren[0]); ShowerParticlePtr c2 = dynamic_ptr_cast<ShowerParticlePtr>(theChildren[1]); // get shower variables from 1st child in order to keep notation // parent->(c1, c2) clean even though the splitting was initiated // from c1. The name updateParent is still referring to the // timelike branching though. // on-shell child c2->showerParameters()[1]= 0.5*(sqr(c2->data().constituentMass())+sqr(c2->showerVariables()[2])) /(c2->showerParameters()[0]*p_dot_n()); c2->set5Momentum(sudakov2Momentum(c2->showerParameters()[0], c2->showerParameters()[1], c2->showerVariables()[0], c2->showerVariables()[1],0)); // spacelike child Lorentz5Momentum pc1(theParent->momentum() - c2->momentum()); pc1.rescaleMass(); c1->set5Momentum(pc1); } void IS_QTildeShowerKinematics1to2:: updateLast( const tShowerParticlePtr theLast,Energy px,Energy py) const { if(theLast->isFinalState()) return; Energy2 pt2=sqr(px)+sqr(py); theLast->showerParameters()[0]=theLast->x(); theLast->showerParameters()[1]=0.5*pt2/ theLast->showerParameters()[0]/p_dot_n(); theLast->showerVariables().resize(3); theLast->showerParameters().resize(2); for(unsigned int ix=0;ix<3;++ix) theLast->showerVariables()[ix]=ZERO; // momentum Lorentz5Momentum ntemp=Lorentz5Momentum(ZERO,-pVector().vect()); double beta = 0.5*pt2/ theLast->showerParameters()[0]/(pVector()*ntemp); Lorentz5Momentum plast = Lorentz5Momentum(pVector().z()>ZERO ? px : -px ,py,ZERO,ZERO) +theLast->x()*pVector()+beta*ntemp; plast.rescaleMass(); theLast->set5Momentum(plast); } void IS_QTildeShowerKinematics1to2::initialize(ShowerParticle & particle, PPtr parent) { // For the time being we are considering only 1->2 branching Lorentz5Momentum p, n, pthis, pcm; assert(particle.perturbative()!=2); if(particle.perturbative()==1) { // find the partner and its momentum ShowerParticlePtr partner=particle.partner(); if(partner->isFinalState()) { Lorentz5Momentum pa = -particle.momentum()+partner->momentum(); Lorentz5Momentum pb = particle.momentum(); Energy scale=parent->momentum().t(); Lorentz5Momentum pbasis(ZERO,parent->momentum().vect().unit()*scale); Axis axis(pa.vect().unit()); LorentzRotation rot; double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); if(axis.perp2()>1e-20) { rot.setRotate(-acos(axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); rot.rotateX(Constants::pi); } if(abs(1.-pa.e()/pa.vect().mag())>1e-6) rot.boostZ( pa.e()/pa.vect().mag()); pb *= rot; if(pb.perp2()/GeV2>1e-20) { Boost trans = -1./pb.e()*pb.vect(); trans.setZ(0.); rot.boost(trans); } pbasis *=rot; rot.invert(); n = rot*Lorentz5Momentum(ZERO,-pbasis.vect()); p = rot*Lorentz5Momentum(ZERO, pbasis.vect()); } else { pcm = parent->momentum(); p = Lorentz5Momentum(ZERO, pcm.vect()); n = Lorentz5Momentum(ZERO, -pcm.vect()); } } else { p = dynamic_ptr_cast<ShowerParticlePtr>(particle.children()[0]) ->showerKinematics()->getBasis()[0]; n = dynamic_ptr_cast<ShowerParticlePtr>(particle.children()[0]) ->showerKinematics()->getBasis()[1]; } setBasis(p,n); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/ShowerHandler.h����������������������������������������������������������0000644�0001750�0001750�00000027333�11754474775�021175� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerHandler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ShowerHandler_H #define HERWIG_ShowerHandler_H // // This is the declaration of the ShowerHandler class. // #include "ThePEG/Handlers/EventHandler.h" #include "ThePEG/Handlers/CascadeHandler.h" #include "Herwig++/Shower/UEBase.h" #include "Herwig++/Shower/Base/Evolver.fh" #include "Herwig++/Shower/Base/ShowerParticle.fh" #include "Herwig++/Shower/Base/ShowerTree.fh" #include "Herwig++/Shower/Base/HardTree.fh" #include "Herwig++/PDF/HwRemDecayer.fh" #include "ThePEG/EventRecord/RemnantParticle.fh" #include "ShowerHandler.fh" namespace Herwig { /** * Typedef for the ShowerTree for the decays */ typedef multimap<Energy,ShowerTreePtr,std::greater<Energy> > ShowerDecayMap; using namespace ThePEG; /** \ingroup Shower * * This class is the main driver of the shower: it is responsible for * the proper handling of all other specific collaborating classes * and for the storing of the produced particles in the event record. * * @see \ref ShowerHandlerInterfaces "The interfaces" * * @see ThePEG::CascadeHandler * @see MPIHandler * @see HwRemDecayer */ class ShowerHandler: public CascadeHandler { public: /** Typedef for a pair of ThePEG::RemnantParticle pointers. */ typedef pair<tRemPPtr, tRemPPtr> RemPair; /** * The default constructor. */ ShowerHandler(); /** * Destructor */ virtual ~ShowerHandler(); public: /** * The main method which manages the multiple interactions and starts * the shower by calling cascade(sub, lastXC). */ virtual void cascade(); /** * Hook to allow vetoing of event after showering hard sub-process * as in e.g. MLM merging. */ virtual bool showerHardProcessVeto() { return false; }; /** * It returns true if the particle with the specified id * is in the list of those that should be decayed during the showering * showering. */ bool decaysInShower(const long id) const { return ( particlesDecayInShower_.find( abs(id) ) != particlesDecayInShower_.end() ); } public: /**@name Methods related to PDF freezing */ //@{ /** * Get the PDF freezing scale */ Energy pdfFreezingScale() const {return pdfFreezingScale_;} //@} 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: /** @name Functions to access information. */ //@{ /** * Return true if currently the primary subprocess is showered. */ bool firstInteraction() const { return ( subProcess_ == eventHandler()->currentCollision()->primarySubProcess() ); } /** * Return the currently used SubProcess. */ tSubProPtr currentSubProcess() const { assert(subProcess_); return subProcess_; } /** * Return true if multiple parton interactions are switched on * and can be used for this beam setup. */ bool isMPIOn() const { return MPIHandler_ && MPIHandler_->beamOK(); } /** * Return the remnant decayer. */ tHwRemDecPtr remnantDecayer() const { return remDec_; } //@} /** * Access to the Evolver */ tEvolverPtr evolver() const {return evolver_;} /** * Generate hard emissions for CKKW etc */ virtual HardTreePtr generateCKKW(ShowerTreePtr tree) const; 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: /** * Prepare to shower the given subprocess */ void prepareCascade(tSubProPtr sub); /** * The main method which manages the showering of a subprocess. */ virtual tPPair cascade(tSubProPtr sub, XCPtr xcomb); /** * Return the maximum number of attempts for showering * a given subprocess. */ unsigned int maxtry() const { return maxtry_; } /** * At the end of the Showering, transform ShowerParticle objects * into ThePEG particles and fill the event record with them. * Notice that the parent/child relationships and the * transformation from ShowerColourLine objects into ThePEG * ColourLine ones must be properly handled. */ void fillEventRecord(); /** * Identify the particles in the hard process and decayed particles * which need to be showered */ void findShoweringParticles(); /** * Find the final unstable time-like parent of a particle * @param parent The ultimate parent for the decaying particle * @param isHard Whether nay particles in chain are from the hard process * @param outgoing The outgoing particles from the hard process */ PPtr findParent(PPtr parent, bool & isHard, set<PPtr> outgoing) const; /** * Find the parton extracted from the incoming particle after ISR */ PPtr findFirstParton(tPPtr seed) const; /** * Fix Remnant connections after ISR */ tPPair remakeRemnant(tPPair oldp); /** * Get the remnants from the ThePEG::PartonBinInstance es and * do some checks. */ RemPair getRemnants(PBIPair incbins); /** * Make the remnant after the shower */ void makeRemnants(); /** * Reset the PDF's after the hard collision has been showered */ void setMPIPDFs(); /** * Test for decay products */ bool decayProduct(tPPtr) const; /** * Boost all the particles in the collision so that the collision always occurs * in the rest frame with the incoming particles along the z axis */ void boostCollision(bool boost); /** * Is a beam particle where hadronic structure is resolved */ bool isResolvedHadron(tPPtr); 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Called at the end of the run phase. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<ShowerHandler> initShowerHandler; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ShowerHandler & operator=(const ShowerHandler &); private: /** * Access function for the MPIHandler, it should only be called after * checking with isMPIOn. */ tUEBasePtr getMPIHandler() const { assert(MPIHandler_); return MPIHandler_; } private: /** * a MPIHandler to administer the creation of several (semihard) * partonic interactions. */ UEBasePtr MPIHandler_; /** * Pointer to the evolver */ EvolverPtr evolver_; /** * Pointer to the HwRemDecayer */ HwRemDecPtr remDec_; /** * The PDF for beam particle A. Overrides the particle's own PDF setting. */ PDFPtr PDFA_; /** * The PDF for beam particle B. Overrides the particle's own PDF setting. */ PDFPtr PDFB_; /** * The PDF freezing scale */ Energy pdfFreezingScale_; /** * Maximum number of attempts for the * main showering loop */ unsigned int maxtry_; /** * Maximum number of attempts for the regeneration of an additional * scattering, before the number of scatters is reduced. */ unsigned int maxtryMPI_; /** * Maximum number of attempts for the regeneration of an additional * hard scattering, before this event is vetoed. */ unsigned int maxtryDP_; /** * PDG codes of the particles which decay during showering * this is fast storage for use during running */ set<long> particlesDecayInShower_; /** * PDG codes of the particles which decay during showering * this is a vector that is interfaced so they can be changed */ vector<long> inputparticlesDecayInShower_; /** * The ShowerTree for the hard process */ ShowerTreePtr hard_; /** * The incoming beam particles for the current collision */ tPPair incoming_; /** * The ShowerTree for the decays */ ShowerDecayMap decay_; /** * The ShowerTrees for which the initial shower */ vector<ShowerTreePtr> done_; /** * Const pointer to the current step */ tcStepPtr current_; /** * Const pointer to the currently handeled ThePEG::SubProcess */ tSubProPtr subProcess_; /** * pointer to "this", the current ShowerHandler. */ static ShowerHandler * currentHandler_; /** * Boost to get back to the lab */ LorentzRotation boost_; /** * The MPI PDF's to be used for secondary scatters. */ pair <PDFPtr, PDFPtr> mpipdfs_; public: /** * struct that is used to catch exceptions which are thrown * due to energy conservation issues of additional scatters */ struct ExtraScatterVeto {}; /** * struct that is used to catch exceptions which are thrown * due to fact that the Shower has been invoked more than * a defined threshold on a certain configuration */ struct ShowerTriesVeto { /** variable to store the number of attempts */ const int tries; /** constructor */ ShowerTriesVeto(int t) : tries(t) {} }; /** * pointer to "this", the current ShowerHandler. */ static const ShowerHandler * currentHandler() { assert(currentHandler_); return currentHandler_; } protected: /** * Set the current handler */ void setCurrentHandler() { currentHandler_ = this; } }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ShowerHandler. */ template <> struct BaseClassTrait<Herwig::ShowerHandler,1> { /** Typedef of the first base class of ShowerHandler. */ typedef CascadeHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the ShowerHandler class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ShowerHandler> : public ClassTraitsBase<Herwig::ShowerHandler> { /** Return a platform-independent class name */ static string className() { return "Herwig::ShowerHandler"; } /** * The name of a file containing the dynamic library where the class * ShowerHandler is implemented. It may also include several, space-separated, * libraries if the class ShowerHandler depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_ShowerHandler_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/ShowerHandler.cc���������������������������������������������������������0000644�0001750�0001750�00000064173�11755204203�021310� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerHandler.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ShowerHandler class. // #include "ShowerHandler.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/PDF/PartonExtractor.h" #include "ThePEG/PDF/PartonBinInstance.h" #include "Herwig++/PDT/StandardMatchers.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Utilities/Throw.h" #include "Herwig++/Shower/Base/Evolver.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/Utilities/EnumParticles.h" #include "Herwig++/PDF/MPIPDF.h" #include "Herwig++/PDF/MinBiasPDF.h" #include "ThePEG/Handlers/EventHandler.h" #include "Herwig++/Shower/Base/ShowerTree.h" #include "Herwig++/Shower/Base/HardTree.h" #include "Herwig++/Shower/Base/KinematicsReconstructor.h" #include "Herwig++/Shower/Base/PartnerFinder.h" #include "Herwig++/PDF/HwRemDecayer.h" #include <cassert> using namespace Herwig; ShowerHandler::~ShowerHandler() {} ShowerHandler * ShowerHandler::currentHandler_ = 0; void ShowerHandler::doinit() { CascadeHandler::doinit(); // copy particles to decay before showering from input vector to the // set used in the simulation particlesDecayInShower_.insert(inputparticlesDecayInShower_.begin(), inputparticlesDecayInShower_.end()); // \todo DG: Disabled here because of momentum-violation problems // ShowerTree::_decayInShower = particlesDecayInShower_; } IBPtr ShowerHandler::clone() const { return new_ptr(*this); } IBPtr ShowerHandler::fullclone() const { return new_ptr(*this); } ShowerHandler::ShowerHandler() : pdfFreezingScale_(2.5*GeV), maxtry_(10),maxtryMPI_(10),maxtryDP_(10), subProcess_() { inputparticlesDecayInShower_.push_back( 6 ); // top inputparticlesDecayInShower_.push_back( 23 ); // Z0 inputparticlesDecayInShower_.push_back( 24 ); // W+/- inputparticlesDecayInShower_.push_back( 25 ); // h0 } void ShowerHandler::doinitrun(){ CascadeHandler::doinitrun(); //can't use isMPIOn here, because the EventHandler is not set at that stage if(MPIHandler_){ MPIHandler_->initialize(); if(MPIHandler_->softInt()) remDec_->initSoftInteractions(MPIHandler_->Ptmin(), MPIHandler_->beta()); } // \todo DG: Disabled here because of momentum-violation problems // Must set pre-cascade-handler to NewPhysics/DecayHandler instead // ShowerTree::_decayInShower = particlesDecayInShower_; } void ShowerHandler::dofinish(){ CascadeHandler::dofinish(); if(MPIHandler_) MPIHandler_->finalize(); } void ShowerHandler::persistentOutput(PersistentOStream & os) const { os << evolver_ << remDec_ << ounit(pdfFreezingScale_,GeV) << maxtry_ << maxtryMPI_ << maxtryDP_ << inputparticlesDecayInShower_ << particlesDecayInShower_ << MPIHandler_ << PDFA_ << PDFB_; } void ShowerHandler::persistentInput(PersistentIStream & is, int) { is >> evolver_ >> remDec_ >> iunit(pdfFreezingScale_,GeV) >> maxtry_ >> maxtryMPI_ >> maxtryDP_ >> inputparticlesDecayInShower_ >> particlesDecayInShower_ >> MPIHandler_ >> PDFA_ >> PDFB_; } ClassDescription<ShowerHandler> ShowerHandler::initShowerHandler; // Definition of the static class description member. void ShowerHandler::Init() { static ClassDocumentation<ShowerHandler> documentation ("Main driver class for the showering.", "The Shower evolution was performed using an algorithm described in " "\\cite{Marchesini:1983bm,Marchesini:1987cf,Gieseke:2003rz,Bahr:2008pv}.", "%\\cite{Marchesini:1983bm}\n" "\\bibitem{Marchesini:1983bm}\n" " G.~Marchesini and B.~R.~Webber,\n" " ``Simulation Of QCD Jets Including Soft Gluon Interference,''\n" " Nucl.\\ Phys.\\ B {\\bf 238}, 1 (1984).\n" " %%CITATION = NUPHA,B238,1;%%\n" "%\\cite{Marchesini:1987cf}\n" "\\bibitem{Marchesini:1987cf}\n" " G.~Marchesini and B.~R.~Webber,\n" " ``Monte Carlo Simulation of General Hard Processes with Coherent QCD\n" " Radiation,''\n" " Nucl.\\ Phys.\\ B {\\bf 310}, 461 (1988).\n" " %%CITATION = NUPHA,B310,461;%%\n" "%\\cite{Gieseke:2003rz}\n" "\\bibitem{Gieseke:2003rz}\n" " S.~Gieseke, P.~Stephens and B.~Webber,\n" " ``New formalism for QCD parton showers,''\n" " JHEP {\\bf 0312}, 045 (2003)\n" " [arXiv:hep-ph/0310083].\n" " %%CITATION = JHEPA,0312,045;%%\n" ); static Reference<ShowerHandler,Evolver> interfaceEvolver("Evolver", "A reference to the Evolver object", &Herwig::ShowerHandler::evolver_, false, false, true, false); static Reference<ShowerHandler,HwRemDecayer> interfaceRemDecayer("RemDecayer", "A reference to the Remnant Decayer object", &Herwig::ShowerHandler::remDec_, false, false, true, false); static Parameter<ShowerHandler,Energy> interfacePDFFreezingScale ("PDFFreezingScale", "The PDF freezing scale", &ShowerHandler::pdfFreezingScale_, GeV, 2.5*GeV, 2.0*GeV, 10.0*GeV, false, false, Interface::limited); static Parameter<ShowerHandler,unsigned int> interfaceMaxTry ("MaxTry", "The maximum number of attempts for the main showering loop", &ShowerHandler::maxtry_, 10, 1, 100, false, false, Interface::limited); static Parameter<ShowerHandler,unsigned int> interfaceMaxTryMPI ("MaxTryMPI", "The maximum number of regeneration attempts for an additional scattering", &ShowerHandler::maxtryMPI_, 10, 0, 100, false, false, Interface::limited); static Parameter<ShowerHandler,unsigned int> interfaceMaxTryDP ("MaxTryDP", "The maximum number of regeneration attempts for an additional hard scattering", &ShowerHandler::maxtryDP_, 10, 0, 100, false, false, Interface::limited); static ParVector<ShowerHandler,long> interfaceDecayInShower ("DecayInShower", "PDG codes of the particles to be decayed in the shower", &ShowerHandler::inputparticlesDecayInShower_, -1, 0l, -10000000l, 10000000l, false, false, Interface::limited); static Reference<ShowerHandler,UEBase> interfaceMPIHandler ("MPIHandler", "The object that administers all additional scatterings.", &ShowerHandler::MPIHandler_, false, false, true, true); static Reference<ShowerHandler,PDFBase> interfacePDFA ("PDFA", "The PDF for beam particle A. Overrides the particle's own PDF setting.", &ShowerHandler::PDFA_, false, false, true, true, false); static Reference<ShowerHandler,PDFBase> interfacePDFB ("PDFB", "The PDF for beam particle B. Overrides the particle's own PDF setting.", &ShowerHandler::PDFB_, false, false, true, true, false); } void ShowerHandler::cascade() { tcPDFPtr first = firstPDF().pdf(); tcPDFPtr second = secondPDF().pdf(); if ( PDFA_ ) first = PDFA_; if ( PDFB_ ) second = PDFB_; resetPDFs(make_pair(first,second)); // get the incoming partons tPPair incomingPartons = eventHandler()->currentCollision()->primarySubProcess()->incoming(); // and the parton bins PBIPair incomingBins = make_pair(lastExtractor()->partonBinInstance(incomingPartons.first), lastExtractor()->partonBinInstance(incomingPartons.second)); // and the incoming hadrons tPPair incomingHadrons = eventHandler()->currentCollision()->incoming(); remDec_->setHadronContent(incomingHadrons); // check if incoming hadron == incoming parton // and get the incoming hadron if exists or parton otherwise incoming_ = make_pair(incomingBins.first ? incomingBins.first ->particle() : incomingPartons.first, incomingBins.second ? incomingBins.second->particle() : incomingPartons.second); // check the collision is of the beam particles // and if not boost collision to the right frame // i.e. the hadron-hadron CMF of the collision bool btotal(false); LorentzRotation rtotal; if(incoming_.first != incomingHadrons.first || incoming_.second != incomingHadrons.second ) { btotal = true; boostCollision(false); } // set the current ShowerHandler currentHandler_ = this; // first shower the hard process useMe(); try { SubProPtr sub = eventHandler()->currentCollision()->primarySubProcess(); incomingPartons = cascade(sub,lastXCombPtr()); } catch(ShowerTriesVeto &veto){ throw Exception() << "Failed to generate the shower after " << veto.tries << " attempts in ShowerHandler::cascade()" << Exception::eventerror; } if(showerHardProcessVeto()) throw Veto(); // if a non-hadron collision return (both incoming non-hadronic) if( ( !incomingBins.first|| !isResolvedHadron(incomingBins.first ->particle()))&& ( !incomingBins.second|| !isResolvedHadron(incomingBins.second->particle()))) { // boost back to lab if needed if(btotal) boostCollision(true); // unset the current ShowerHandler currentHandler_ = 0; return; } // get the remnants for hadronic collision pair<tRemPPtr,tRemPPtr> remnants(getRemnants(incomingBins)); // set the starting scale of the forced splitting to the PDF freezing scale remDec_->initialize(remnants, incoming_, *currentStep(), pdfFreezingScale()); // do the first forcedSplitting try { remDec_->doSplit(incomingPartons, make_pair(firstPDF() .pdf(), secondPDF().pdf()), true); } catch (ExtraScatterVeto) { throw Exception() << "Remnant extraction failed in " << "ShowerHandler::cascade() from primary interaction" << Exception::eventerror; } // if no MPI return if( !isMPIOn() ) { remDec_->finalize(); // boost back to lab if needed if(btotal) boostCollision(true); // unset the current ShowerHandler currentHandler_ = 0; return; } // generate the multiple scatters use modified pdf's now: setMPIPDFs(); // additional "hard" processes unsigned int tries(0); // This is the loop over additional hard scatters (most of the time // only one, but who knows...) for(unsigned int i=1; i <= getMPIHandler()->additionalHardProcs(); i++){ //counter for regeneration unsigned int multSecond = 0; // generate the additional scatters while( multSecond < getMPIHandler()->multiplicity(i) ) { // generate the hard scatter tStdXCombPtr lastXC = getMPIHandler()->generate(i); SubProPtr sub = lastXC->construct(); // add to the Step newStep()->addSubProcess(sub); // increment the counters tries++; multSecond++; if(tries == maxtryDP_) throw Exception() << "Failed to establish the requested number " << "of additional hard processes. If this error " << "occurs often, your selection of additional " << "scatter is probably unphysical" << Exception::eventerror; // Generate the shower. If not possible veto the event try { incomingPartons = cascade(sub,lastXC); } catch(ShowerTriesVeto &veto){ throw Exception() << "Failed to generate the shower of " << "a secondary hard process after " << veto.tries << " attempts in Evolver::showerHardProcess()" << Exception::eventerror; } try { // do the forcedSplitting remDec_->doSplit(incomingPartons, make_pair(firstPDF().pdf(), secondPDF().pdf()), false); } catch(ExtraScatterVeto){ //remove all particles associated with the subprocess newStep()->removeParticle(incomingPartons.first); newStep()->removeParticle(incomingPartons.second); //remove the subprocess from the list newStep()->removeSubProcess(sub); //regenerate the scattering multSecond--; continue; } // connect with the remnants but don't set Remnant colour, // because that causes problems due to the multiple colour lines. if ( !remnants.first ->extract(incomingPartons.first , false) || !remnants.second->extract(incomingPartons.second, false) ) throw Exception() << "Remnant extraction failed in " << "ShowerHandler::cascade() for additional scatter" << Exception::runerror; } } // the underlying event processes unsigned int ptveto(1), veto(0); unsigned int max(getMPIHandler()->multiplicity()); for(unsigned int i=0; i<max; i++) { // check how often this scattering has been regenerated if(veto > maxtryMPI_) break; //generate PSpoint tStdXCombPtr lastXC = getMPIHandler()->generate(); SubProPtr sub = lastXC->construct(); //If Algorithm=1 additional scatters of the signal type // with pt > ptmin have to be vetoed //with probability 1/(m+1), where m is the number of occurances in this event if( getMPIHandler()->Algorithm() == 1 ){ //get the pT Energy pt = sub->outgoing().front()->momentum().perp(); if(pt > getMPIHandler()->PtForVeto() && UseRandom::rnd() < 1./(ptveto+1) ){ ptveto++; i--; continue; } } // add to the SubProcess to the step newStep()->addSubProcess(sub); // Run the Shower. If not possible veto the scattering try { incomingPartons = cascade(sub,lastXC); } // discard this extra scattering, but try the next one catch(ShowerTriesVeto) { newStep()->removeSubProcess(sub); //regenerate the scattering veto++; i--; continue; } try{ //do the forcedSplitting remDec_->doSplit(incomingPartons, make_pair(firstPDF().pdf(), secondPDF().pdf()), false); } catch (ExtraScatterVeto) { //remove all particles associated with the subprocess newStep()->removeParticle(incomingPartons.first); newStep()->removeParticle(incomingPartons.second); //remove the subprocess from the list newStep()->removeSubProcess(sub); //regenerate the scattering veto++; i--; continue; } //connect with the remnants but don't set Remnant colour, //because that causes problems due to the multiple colour lines. if ( !remnants.first ->extract(incomingPartons.first , false) || !remnants.second->extract(incomingPartons.second, false) ) throw Exception() << "Remnant extraction failed in " << "ShowerHandler::cascade() for MPI hard scattering" << Exception::runerror; //reset veto counter veto = 0; } // finalize the remnants remDec_->finalize(getMPIHandler()->colourDisrupt(), getMPIHandler()->softMultiplicity()); // boost back to lab if needed if(btotal) boostCollision(true); // unset the current ShowerHandler currentHandler_ = 0; } void ShowerHandler::fillEventRecord() { // create a new step StepPtr pstep = newStep(); assert(!done_.empty()); assert(done_[0]->isHard()); // insert the steps for(unsigned int ix=0;ix<done_.size();++ix) { done_[ix]->fillEventRecord(pstep, evolver_->isISRadiationON(), evolver_->isFSRadiationON()); } } void ShowerHandler::findShoweringParticles() { // clear the storage hard_=ShowerTreePtr(); decay_.clear(); done_.clear(); // temporary storage of the particles set<PPtr> hardParticles; // outgoing particles from the hard process PVector outgoing = currentSubProcess()->outgoing(); set<PPtr> outgoingset(outgoing.begin(),outgoing.end()); // loop over the tagged particles tPVector thetagged; if( firstInteraction() ){ thetagged = tagged(); } else{ thetagged.insert(thetagged.end(), outgoing.begin(),outgoing.end()); } bool isHard=false; for (tParticleVector::const_iterator taggedP = thetagged.begin(); taggedP != thetagged.end(); ++taggedP) { // if a remnant don't consider if(eventHandler()->currentCollision()->isRemnant(*taggedP)) continue; // find the parent and whether its a colourless s-channel resonance bool isDecayProd=false; tPPtr parent; if(!(*taggedP)->parents().empty()) { parent = (*taggedP)->parents()[0]; // check if from s channel decaying colourless particle isDecayProd = decayProduct(parent); } // add to list of outgoing hard particles if needed isHard |=(outgoingset.find(*taggedP) != outgoingset.end()); if(isDecayProd) hardParticles.insert(findParent(parent,isHard,outgoingset)); else hardParticles.insert(*taggedP); } // there must be something to shower if(hardParticles.empty()) throw Exception() << "No particles to shower in " << "ShowerHandler::fillShoweringParticles" << Exception::eventerror; if(!isHard) throw Exception() << "Starting on decay not yet implemented in " << "ShowerHandler::findShoweringParticles()" << Exception::runerror; // create the hard process ShowerTree ParticleVector out(hardParticles.begin(),hardParticles.end()); hard_=new_ptr(ShowerTree(currentSubProcess()->incoming(),out, decay_)); hard_->setParents(); } void ShowerHandler::prepareCascade(tSubProPtr sub) { current_ = currentStep(); subProcess_ = sub; } tPPair ShowerHandler::cascade(tSubProPtr sub, XCPtr xcomb) { prepareCascade(sub); // start of the try block for the whole showering process unsigned int countFailures=0; while (countFailures<maxtry_) { try { // find the particles in the hard process and the decayed particles to shower findShoweringParticles(); // if no hard process if(!hard_) throw Exception() << "Shower starting with a decay" << "is not implemented" << Exception::runerror; // perform the shower for the hard process evolver_->showerHardProcess(hard_,xcomb); done_.push_back(hard_); hard_->updateAfterShower(decay_); // if no decaying particles to shower break out of the loop if(decay_.empty()) break; // shower the decay products while(!decay_.empty()) { // find particle whose production process has been showered ShowerDecayMap::iterator dit = decay_.begin(); while(!dit->second->parent()->hasShowered() && dit!=decay_.end()) ++dit; assert(dit!=decay_.end()); // get the particle ShowerTreePtr decayingTree = dit->second; // remove it from the multimap decay_.erase(dit); // make sure the particle has been decayed decayingTree->decay(decay_); // now shower the decay evolver_->showerDecay(decayingTree); done_.push_back(decayingTree); decayingTree->updateAfterShower(decay_); } // suceeded break out of the loop break; } catch (KinematicsReconstructionVeto) { ++countFailures; } } // if loop exited because of too many tries, throw event away if (countFailures >= maxtry_) { hard_=ShowerTreePtr(); decay_.clear(); done_.clear(); throw Exception() << "Too many tries for main while loop " << "in ShowerHandler::cascade()." << Exception::eventerror; } //enter the particles in the event record fillEventRecord(); // clear storage hard_=ShowerTreePtr(); decay_.clear(); done_.clear(); // non hadronic case return if (!isResolvedHadron(incoming_.first ) && !isResolvedHadron(incoming_.second) ) return incoming_; // remake the remnants (needs to be after the colours are sorted // out in the insertion into the event record) if ( firstInteraction() ) return remakeRemnant(sub->incoming()); //Return the new pair of incoming partons. remakeRemnant is not //necessary here, because the secondary interactions are not yet //connected to the remnants. return make_pair(findFirstParton(sub->incoming().first ), findFirstParton(sub->incoming().second)); } PPtr ShowerHandler::findParent(PPtr original, bool & isHard, set<PPtr> outgoingset) const { PPtr parent=original; isHard |=(outgoingset.find(original) != outgoingset.end()); if(!original->parents().empty()) { PPtr orig=original->parents()[0]; if(current_->find(orig)&&decayProduct(orig)) { parent=findParent(orig,isHard,outgoingset); } } return parent; } ShowerHandler::RemPair ShowerHandler::getRemnants(PBIPair incomingBins) { RemPair remnants; // first beam particle if(incomingBins.first&&!incomingBins.first->remnants().empty()) { remnants.first = dynamic_ptr_cast<tRemPPtr>(incomingBins.first->remnants()[0] ); if(remnants.first) { ParticleVector children=remnants.first->children(); for(unsigned int ix=0;ix<children.size();++ix) { if(children[ix]->dataPtr()==remnants.first->dataPtr()) remnants.first = dynamic_ptr_cast<RemPPtr>(children[ix]); } //remove existing colour lines from the remnants if(remnants.first->colourLine()) remnants.first->colourLine()->removeColoured(remnants.first); if(remnants.first->antiColourLine()) remnants.first->antiColourLine()->removeAntiColoured(remnants.first); } } // seconnd beam particle if(incomingBins.second&&!incomingBins. second->remnants().empty()) { remnants.second = dynamic_ptr_cast<tRemPPtr>(incomingBins.second->remnants()[0] ); if(remnants.second) { ParticleVector children=remnants.second->children(); for(unsigned int ix=0;ix<children.size();++ix) { if(children[ix]->dataPtr()==remnants.second->dataPtr()) remnants.second = dynamic_ptr_cast<RemPPtr>(children[ix]); } //remove existing colour lines from the remnants if(remnants.second->colourLine()) remnants.second->colourLine()->removeColoured(remnants.second); if(remnants.second->antiColourLine()) remnants.second->antiColourLine()->removeAntiColoured(remnants.second); } } assert(remnants.first || remnants.second); return remnants; } tPPair ShowerHandler::remakeRemnant(tPPair oldp){ // get the parton extractor PartonExtractor & pex = *lastExtractor(); // get the new partons tPPair newp = make_pair(findFirstParton(oldp.first ), findFirstParton(oldp.second)); // if the same do nothing if(newp == oldp) return oldp; // Creates the new remnants and returns the new PartonBinInstances PBIPair newbins = pex.newRemnants(oldp, newp, newStep()); newStep()->addIntermediate(newp.first); newStep()->addIntermediate(newp.second); // return the new partons return newp; } PPtr ShowerHandler::findFirstParton(tPPtr seed) const{ if(seed->parents().empty()) return seed; tPPtr parent = seed->parents()[0]; //if no parent there this is a loose end which will //be connected to the remnant soon. if(!parent || parent == incoming_.first || parent == incoming_.second ) return seed; else return findFirstParton(parent); } bool ShowerHandler::decayProduct(tPPtr particle) const { // must be time-like and not incoming if(particle->momentum().m2()<=ZERO|| particle == currentSubProcess()->incoming().first|| particle == currentSubProcess()->incoming().second) return false; // if only 1 outgoing and this is it if(currentSubProcess()->outgoing().size()==1 && currentSubProcess()->outgoing()[0]==particle) return true; // must not be the s-channel intermediate otherwise if(find(currentSubProcess()->incoming().first->children().begin(), currentSubProcess()->incoming().first->children().end(),particle)!= currentSubProcess()->incoming().first->children().end()&& find(currentSubProcess()->incoming().second->children().begin(), currentSubProcess()->incoming().second->children().end(),particle)!= currentSubProcess()->incoming().second->children().end()&& currentSubProcess()->incoming().first ->children().size()==1&& currentSubProcess()->incoming().second->children().size()==1) return false; // if non-coloured this is enough if(!particle->dataPtr()->coloured()) return true; // if coloured must be unstable if(particle->dataPtr()->stable()) return false; // must not have same particle type as a child int id = particle->id(); for(unsigned int ix=0;ix<particle->children().size();++ix) if(particle->children()[ix]->id()==id) return false; // otherwise its a decaying particle return true; } namespace { void addChildren(tPPtr in,set<tPPtr> & particles) { particles.insert(in); for(unsigned int ix=0;ix<in->children().size();++ix) addChildren(in->children()[ix],particles); } } void ShowerHandler::boostCollision(bool boost) { // calculate boost from lab to rest if(!boost) { Lorentz5Momentum ptotal=incoming_.first ->momentum()+incoming_.second->momentum(); boost_ = LorentzRotation(-ptotal.boostVector()); Axis axis((boost_*incoming_.first ->momentum()).vect().unit()); if(axis.perp2()>0.) { double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); boost_.rotate(acos(-axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); } } // first call performs the boost and second inverse // get the particles to be boosted set<tPPtr> particles; addChildren(incoming_.first,particles); addChildren(incoming_.second,particles); // apply the boost for(set<tPPtr>::const_iterator cit=particles.begin(); cit!=particles.end();++cit) { (*cit)->transform(boost_); } if(!boost) boost_.invert(); } void ShowerHandler::setMPIPDFs() { if ( !mpipdfs_.first ) { // first have to check for MinBiasPDF tcMinBiasPDFPtr first = dynamic_ptr_cast<tcMinBiasPDFPtr>(firstPDF().pdf()); if(first) mpipdfs_.first = new_ptr(MPIPDF(first->originalPDF())); else mpipdfs_.first = new_ptr(MPIPDF(firstPDF().pdf())); } if ( !mpipdfs_.second ) { tcMinBiasPDFPtr second = dynamic_ptr_cast<tcMinBiasPDFPtr>(secondPDF().pdf()); if(second) mpipdfs_.second = new_ptr(MPIPDF(second->originalPDF())); else mpipdfs_.second = new_ptr(MPIPDF(secondPDF().pdf())); } // reset the PDFs stored in the base class resetPDFs(mpipdfs_); } bool ShowerHandler::isResolvedHadron(tPPtr particle) { if(!HadronMatcher::Check(particle->data())) return false; for(unsigned int ix=0;ix<particle->children().size();++ix) { if(particle->children()[ix]->id()==ParticleID::Remnant) return true; } return false; } HardTreePtr ShowerHandler::generateCKKW(ShowerTreePtr ) const { return HardTreePtr(); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Couplings/���������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464206�020200� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Couplings/ShowerAlpha.fh�������������������������������������������������0000644�0001750�0001750�00000000473�11754474775�022752� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the ShowerAlpha class. // #ifndef HERWIG_ShowerAlpha_FH #define HERWIG_ShowerAlpha_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ShowerAlpha; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ShowerAlpha,ShowerAlphaPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Couplings/ShowerAlphaQCD.cc����������������������������������������������0000644�0001750�0001750�00000030113�11754474775�023264� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerAlphaQCD.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ShowerAlphaQCD class. // #include "ShowerAlphaQCD.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Command.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Utilities/Throw.h" using namespace Herwig; IBPtr ShowerAlphaQCD::clone() const { return new_ptr(*this); } IBPtr ShowerAlphaQCD::fullclone() const { return new_ptr(*this); } void ShowerAlphaQCD::persistentOutput(PersistentOStream & os) const { os << _asType << _asMaxNP << ounit(_qmin,GeV) << _nloop << _lambdaopt << _thresopt << ounit(_lambdain,GeV) << _alphain << _inopt << _tolerance << _maxtry << _alphamin << ounit(_thresholds,GeV) << ounit(_lambda,GeV); } void ShowerAlphaQCD::persistentInput(PersistentIStream & is, int) { is >> _asType >> _asMaxNP >> iunit(_qmin,GeV) >> _nloop >> _lambdaopt >> _thresopt >> iunit(_lambdain,GeV) >> _alphain >> _inopt >> _tolerance >> _maxtry >> _alphamin >> iunit(_thresholds,GeV) >> iunit(_lambda,GeV); } ClassDescription<ShowerAlphaQCD> ShowerAlphaQCD::initShowerAlphaQCD; // Definition of the static class description member. void ShowerAlphaQCD::Init() { static ClassDocumentation<ShowerAlphaQCD> documentation ("This (concrete) class describes the QCD alpha running."); static Switch<ShowerAlphaQCD, int> intAsType ("NPAlphaS", "Behaviour of AlphaS in the NP region", &ShowerAlphaQCD::_asType, 1, false, false); static SwitchOption intAsTypeZero (intAsType, "Zero","zero below Q_min", 1); static SwitchOption intAsTypeConst (intAsType, "Const","const as(qmin) below Q_min", 2); static SwitchOption intAsTypeLin (intAsType, "Linear","growing linearly below Q_min", 3); static SwitchOption intAsTypeQuad (intAsType, "Quadratic","growing quadratically below Q_min", 4); static SwitchOption intAsTypeExx1 (intAsType, "Exx1", "quadratic from AlphaMaxNP down to as(Q_min)", 5); static SwitchOption intAsTypeExx2 (intAsType, "Exx2", "const = AlphaMaxNP below Q_min", 6); // default such that as(qmin) = 1 in the current parametrization. // min = Lambda3 static Parameter<ShowerAlphaQCD,Energy> intQmin ("Qmin", "Q < Qmin is treated with NP parametrization as of (unit [GeV])", &ShowerAlphaQCD::_qmin, GeV, 0.630882*GeV, 0.330445*GeV, 100.0*GeV,false,false,false); static Parameter<ShowerAlphaQCD,double> interfaceAlphaMaxNP ("AlphaMaxNP", "Max value of alpha in NP region, only relevant if NPAlphaS = 5,6", &ShowerAlphaQCD::_asMaxNP, 1.0, 0., 100.0, false, false, Interface::limited); static Parameter<ShowerAlphaQCD,unsigned int> interfaceNumberOfLoops ("NumberOfLoops", "The number of loops to use in the alpha_S calculation", &ShowerAlphaQCD::_nloop, 3, 1, 3, false, false, Interface::limited); static Switch<ShowerAlphaQCD,bool> interfaceLambdaOption ("LambdaOption", "Option for the calculation of the Lambda used in the simulation from the input" " Lambda_MSbar", &ShowerAlphaQCD::_lambdaopt, false, false, false); static SwitchOption interfaceLambdaOptionfalse (interfaceLambdaOption, "Same", "Use the same value", false); static SwitchOption interfaceLambdaOptionConvert (interfaceLambdaOption, "Convert", "Use the conversion to the Herwig scheme from NPB349, 635", true); static Parameter<ShowerAlphaQCD,Energy> interfaceLambdaQCD ("LambdaQCD", "Input value of Lambda_MSBar", &ShowerAlphaQCD::_lambdain, MeV, 0.208364*GeV, 100.0*MeV, 500.0*MeV, false, false, Interface::limited); static Parameter<ShowerAlphaQCD,double> interfaceAlphaMZ ("AlphaMZ", "The input value of the strong coupling at the Z mass ", &ShowerAlphaQCD::_alphain, 0.118, 0.1, 0.2, false, false, Interface::limited); static Switch<ShowerAlphaQCD,bool> interfaceInputOption ("InputOption", "Option for inputing the initial value of the coupling", &ShowerAlphaQCD::_inopt, true, false, false); static SwitchOption interfaceInputOptionAlphaMZ (interfaceInputOption, "AlphaMZ", "Use the value of alpha at MZ to calculate the coupling", true); static SwitchOption interfaceInputOptionLambdaQCD (interfaceInputOption, "LambdaQCD", "Use the input value of Lambda to calculate the coupling", false); static Parameter<ShowerAlphaQCD,double> interfaceTolerance ("Tolerance", "The tolerance for discontinuities in alphaS at thresholds.", &ShowerAlphaQCD::_tolerance, 1e-10, 1e-20, 1e-4, false, false, Interface::limited); static Parameter<ShowerAlphaQCD,unsigned int> interfaceMaximumIterations ("MaximumIterations", "The maximum number of iterations for the Newton-Raphson method to converge.", &ShowerAlphaQCD::_maxtry, 100, 10, 1000, false, false, Interface::limited); static Switch<ShowerAlphaQCD,bool> interfaceThresholdOption ("ThresholdOption", "Whether to use the consistuent or normal masses for the thresholds", &ShowerAlphaQCD::_thresopt, true, false, false); static SwitchOption interfaceThresholdOptionCurrent (interfaceThresholdOption, "Current", "Use the current masses", true); static SwitchOption interfaceThresholdOptionConstituent (interfaceThresholdOption, "Constituent", "Use the constitent masses.", false); static Command<ShowerAlphaQCD> interfaceValue ("Value", "", &ShowerAlphaQCD::value, false); } void ShowerAlphaQCD::doinit() { ShowerAlpha::doinit(); // calculate the value of 5-flavour lambda // evaluate the initial // value of Lambda from alphas if needed using Newton-Raphson if(_inopt) {_lambda[2]=computeLambda(getParticleData(ParticleID::Z0)->mass(),_alphain,5);} // otherwise it was an input parameter else{_lambda[2]=_lambdain;} // convert lambda to the Monte Carlo scheme if needed using Constants::pi; if(_lambdaopt){_lambda[2] *=exp(0.5*(67.-3.*sqr(pi)-50./3.)/23.)/sqrt(2.);} // compute the threshold matching // top threshold for(int ix=1;ix<4;++ix) { if(_thresopt) _thresholds[ix]=getParticleData(ix+3)->mass(); else _thresholds[ix]=getParticleData(ix+3)->constituentMass(); } // compute 6 flavour lambda by matching at top mass using Newton Raphson _lambda[3]=computeLambda(_thresholds[3],alphaS(_thresholds[3],_lambda[2],5),6); // bottom threshold // compute 4 flavour lambda by matching at bottom mass using Newton Raphson _lambda[1]=computeLambda(_thresholds[2],alphaS(_thresholds[2],_lambda[2],5),4); // charm threshold // compute 3 flavour lambda by matching at charm mass using Newton Raphson _lambda[0]=computeLambda(_thresholds[1],alphaS(_thresholds[1],_lambda[1],4),3); // final threshold is qmin _thresholds[0]=_qmin; // compute the maximum value of as if ( _asType < 5 ) _alphamin = value(sqr(_qmin)+1.0e-8*sqr(MeV)); // approx as = 1 else _alphamin = max(_asMaxNP, value(sqr(_qmin)+1.0e-8*sqr(MeV))); // check consistency lambda_3 < qmin if(_lambda[0]>_qmin) Throw<InitException>() << "The value of Qmin is less than Lambda_3 in" << " ShowerAlphaQCD::doinit " << Exception::abortnow; } double ShowerAlphaQCD::value(const Energy2 scale) const { pair<short,Energy> nflam; Energy q = sqrt(scale); double val(0.); // special handling if the scale is less than Qmin if (q < _qmin) { nflam = getLamNfTwoLoop(_qmin); double val0 = alphaS(_qmin, nflam.second, nflam.first); switch (_asType) { case 1: // flat, zero; the default type with no NP effects. val = 0.; break; case 2: // flat, non-zero alpha_s = alpha_s(q2min). val = val0; break; case 3: // linear in q val = val0*q/_qmin; break; case 4: // quadratic in q val = val0*sqr(q/_qmin); break; case 5: // quadratic in q, starting off at asMaxNP, ending on as(qmin) val = (val0 - _asMaxNP)*sqr(q/_qmin) + _asMaxNP; break; case 6: // just asMaxNP and constant val = _asMaxNP; break; } } else { // the 'ordinary' case nflam = getLamNfTwoLoop(q); val = alphaS(q, nflam.second, nflam.first); } return scaleFactor() * val; } double ShowerAlphaQCD::overestimateValue() const { return scaleFactor() * _alphamin; } double ShowerAlphaQCD::ratio(const Energy2 scale) const { pair<short,Energy> nflam; Energy q = sqrt(scale); double val(0.); // special handling if the scale is less than Qmin if (q < _qmin) { nflam = getLamNfTwoLoop(_qmin); double val0 = alphaS(_qmin, nflam.second, nflam.first); switch (_asType) { case 1: // flat, zero; the default type with no NP effects. val = 0.; break; case 2: // flat, non-zero alpha_s = alpha_s(q2min). val = val0; break; case 3: // linear in q val = val0*q/_qmin; break; case 4: // quadratic in q val = val0*sqr(q/_qmin); break; case 5: // quadratic in q, starting off at asMaxNP, ending on as(qmin) val = (val0 - _asMaxNP)*sqr(q/_qmin) + _asMaxNP; break; case 6: // just asMaxNP and constant val = _asMaxNP; break; } } else { // the 'ordinary' case nflam = getLamNfTwoLoop(q); val = alphaS(q, nflam.second, nflam.first); } // denominator return val/_alphamin; } string ShowerAlphaQCD::value (string scale) { istringstream readscale(scale); double inScale; readscale >> inScale; Energy theScale = inScale * GeV; initialize(); ostringstream showvalue (""); showvalue << "alpha_s (" << theScale/GeV << " GeV) = " << value (sqr(theScale)); return showvalue.str(); } pair<short, Energy> ShowerAlphaQCD::getLamNfTwoLoop(Energy q) const { short nf = 6; // get lambda and nf according to the thresholds if (q < _thresholds[1]) nf = 3; else if (q < _thresholds[2]) nf = 4; else if (q < _thresholds[3]) nf = 5; return pair<short,Energy>(nf, _lambda[nf-3]); } Energy ShowerAlphaQCD::computeLambda(Energy match, double alpha, unsigned int nflav) const { Energy lamtest=200.0*MeV; double xtest; unsigned int ntry=0; do { ++ntry; xtest=log(sqr(match/lamtest)); xtest+= (alpha-alphaS(match,lamtest,nflav))/derivativealphaS(match,lamtest,nflav); lamtest=match/exp(0.5*xtest); } while(abs(alpha-alphaS(match,lamtest,nflav)) > _tolerance && ntry < _maxtry); return lamtest; } double ShowerAlphaQCD::derivativealphaS(Energy q, Energy lam, int nf) const { using Constants::pi; double lx = log(sqr(q/lam)); double b0 = 11. - 2./3.*nf; double b1 = 51. - 19./3.*nf; double b2 = 2857. - 5033./9.*nf + 325./27.*sqr(nf); if(_nloop==1) return -4.*pi/(b0*sqr(lx)); else if(_nloop==2) return -4.*pi/(b0*sqr(lx))*(1.-2.*b1/sqr(b0)/lx*(1.-2.*log(lx))); else return -4.*pi/(b0*sqr(lx))*(1. - 2.*b1/sqr(b0)/lx*(1.-2.*log(lx)) + 4.*sqr(b1)/(sqr(sqr(b0))*sqr(lx))* (1. - 2.*log(lx) + 3.*(sqr(log(lx) - 0.5)+b2*b0/(8.*sqr(b1))-1.25) ) ); } double ShowerAlphaQCD::alphaS(Energy q, Energy lam, int nf) const { using Constants::pi; double lx(log(sqr(q/lam))); double b0 = 11. - 2./3.*nf; double b1 = 51. - 19./3.*nf; double b2 = 2857. - 5033./9.*nf + 325./27.*sqr(nf); // one loop if(_nloop==1) {return 4.*pi/(b0*lx);} // two loop else if(_nloop==2) { return 4.*pi/(b0*lx)*(1.-2.*b1/sqr(b0)*log(lx)/lx); } // three loop else {return 4.*pi/(b0*lx)*(1.-2.*b1/sqr(b0)*log(lx)/lx + 4.*sqr(b1)/(sqr(sqr(b0))*sqr(lx))* (sqr(log(lx) - 0.5) + b2*b0/(8.*sqr(b1)) - 5./4.));} } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Couplings/ShowerAlpha.h��������������������������������������������������0000644�0001750�0001750�00000012251�11754474775�022601� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerAlpha.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ShowerAlpha_H #define HERWIG_ShowerAlpha_H // // This is the declaration of the ShowerAlpha class. // #include "ThePEG/Interface/Interfaced.h" #include "ShowerAlpha.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * * This class is the abstract class from which all types of running couplings * used in the Showering derive from. * The main purpose of this class, and the ones that derive from it, is * to allow systematic uncertainties for the initial-state radiation and, * independently, the final-state radiation effects, to be evaluated. * * This is achieved by allowing a multiplicative factor, * which is 1.0 for the "central value", * for the scale argument, \f$\mu^2\f$, of the running coupling. This * factor, \f$f\f$ is given by the scaleFactor() member and the coupling * returned by the value() member is such that * \f[\alpha(\mu^2)\to \alpha(f\times\mu^2).\f] * This scale factor is a parameter which is settable by the user, via the * interface. * Although, of course, it is not clear my how much we should scale * in order to get a \f$1\sigma\f$ systematic error (but factors: * 1/2 and 2 are quite common), this method provides a double side error, * and it appears more sensible than the rough and one-sided evaluation * obtained * via turning off the I.S.R. and/or F.S.R. (possibilities which are, * anyway, provided by Herwig++). * * @see \ref ShowerAlphaInterfaces "The interfaces" * defined for ShowerAlpha. */ class ShowerAlpha: public Interfaced { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline ShowerAlpha() : _scaleFactor( 1.0 ) {} //@} public: /** * Methods to return the coupling and the scaleFactor */ //@{ /** * Pure virtual method that is supposed to return the * running alpha value evaluated at the input scale. * @param scale The scale * @return The coupling */ virtual double value(const Energy2 scale) const = 0; /** * Virtual method, which * should be overridden in a derived class to provide an * overestimate approximation of the alpha value. */ virtual double overestimateValue() const = 0; /** * Virtual method which returns the ratio of the running alpha * value at the input scale to the overestimated value. * @param scale The scale * @return The ratio */ virtual double ratio(const Energy2 scale) const = 0; /** * It returns the factor that multiplies the * scale argument, \f$\mu^2\f$, of the running coupling. * This is supposed to be <I>1.0</I> in normal conditions (central values) * whereas different values can be useful for systematics evaluation * for Initial State radiation or Final State radiation effects. */ inline double scaleFactor() const {return _scaleFactor;} /** * Initialize this coupling. */ virtual inline void initialize () {} //@} 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(); private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<ShowerAlpha> initShowerAlpha; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ShowerAlpha & operator=(const ShowerAlpha &); private: /** * The scale factor */ double _scaleFactor; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ShowerAlpha. */ template <> struct BaseClassTrait<Herwig::ShowerAlpha,1> { /** Typedef of the first base class of ShowerAlpha. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the ShowerAlpha class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ShowerAlpha> : public ClassTraitsBase<Herwig::ShowerAlpha> { /** Return a platform-independent class name */ static string className() { return "Herwig::ShowerAlpha"; } }; /** @endcond */ } #endif /* HERWIG_ShowerAlpha_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Couplings/ShowerAlphaQCD.h�����������������������������������������������0000644�0001750�0001750�00000017517�11754474775�023143� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerAlphaQCD.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ShowerAlphaQCD_H #define HERWIG_ShowerAlphaQCD_H // // This is the declaration of the ShowerAlphaQCD class. // #include "ShowerAlpha.h" #include "ThePEG/Config/Constants.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * * This concrete class provides the definition of the * pure virtual function value() and overestimateValue() for the * strong coupling. * * A number of different options for the running of the coupling * and its initial definition are supported. * * @see \ref ShowerAlphaQCDInterfaces "The interfaces" * defined for ShowerAlphaQCD. */ class ShowerAlphaQCD: public ShowerAlpha { public: /** * The default constructor. */ ShowerAlphaQCD() : ShowerAlpha(), _qmin(0.630882*GeV), _asType(1), _asMaxNP(1.0), _thresholds(4), _lambda(4), _nloop(3),_lambdaopt(false),_thresopt(false), _lambdain(0.208364*GeV),_alphain(0.118),_inopt(true),_tolerance(1e-10), _maxtry(100),_alphamin(0.) {} public: /** * Methods to return the coupling */ //@{ /** * It returns the running coupling value evaluated at the input scale * multiplied by the scale factor scaleFactor(). * @param scale The scale * @return The coupling */ virtual double value(const Energy2 scale) const; /** * It returns the running coupling value evaluated at the input scale * multiplied by the scale factor scaleFactor(). */ virtual double overestimateValue() const; /** * Return the ratio of the coupling at the scale to the overestimated value */ virtual double ratio(const Energy2 scale) const; /** * Initialize this coupling. */ virtual void initialize() { doinit(); } /** * A command to initialize the coupling and write * its value at the scale given by the argument (in GeV) */ string value(string); //@} /** * Get the value of \f$\Lambda_{\rm QCd}\f$ * @param nf number of flavours */ Energy lambdaQCD(unsigned int nf) { if (nf <= 3) return _lambda[0]; else if (nf==4 || nf==5) return _lambda[nf-3]; else return _lambda[3]; } 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: /** * Member functions which calculate the coupling */ //@{ /** * The 1,2,3-loop parametrization of \f$\alpha_S\f$. * @param q The scale * @param lam \f$\Lambda_{\rm QCD}\f$ * @param nf The number of flavours */ double alphaS(Energy q, Energy lam, int nf) const; /** * The derivative of \f$\alpha_S\f$ with respect to \f$\ln(Q^2/\Lambda^2)\f$ * @param q The scale * @param lam \f$\Lambda_{\rm QCD}\f$ * @param nf The number of flavours */ double derivativealphaS(Energy q, Energy lam, int nf) const; /** * Compute the value of \f$Lambda\f$ needed to get the input value of * the strong coupling at the scale given for the given number of flavours * using the Newton-Raphson method * @param match The scale for the coupling * @param alpha The input coupling * @param nflav The number of flavours */ Energy computeLambda(Energy match, double alpha, unsigned int nflav) const; /** * Return the value of \f$\Lambda\f$ and the number of flavours at the scale. * @param q The scale * @return The number of flavours at the scale and \f$\Lambda\f$. */ pair<short, Energy> getLamNfTwoLoop(Energy q) const; //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<ShowerAlphaQCD> initShowerAlphaQCD; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ShowerAlphaQCD & operator=(const ShowerAlphaQCD &); private: /** * Minimum value of the scale */ Energy _qmin; /** * Parameter controlling the behaviour of \f$\alpha_S\f$ in the * non-perturbative region. */ int _asType; /** * Another parameter, a possible (maximum) value of alpha in the * non-perturbative region. */ double _asMaxNP; /** * Thresholds for the different number of flavours */ vector<Energy> _thresholds; /** * \f$\Lambda\f$ for the different number of flavours */ vector<Energy> _lambda; /** * Option for the number of loops */ unsigned int _nloop; /** * Option for the translation between \f$\Lambda_{\bar{MS}}\f$ and * \f$\Lambda_{\rm Herwig}\f$ */ bool _lambdaopt; /** * Option for the threshold masses */ bool _thresopt; /** * Input value of Lambda */ Energy _lambdain; /** * Input value of \f$alpha_S(M_Z)\f$ */ double _alphain; /** * Option for the calculation of Lambda from input parameters */ bool _inopt; /** * Tolerance for discontinuities at the thresholds */ double _tolerance; /** * Maximum number of iterations for the Newton-Raphson method to converge */ unsigned int _maxtry; /** * The minimum value of the coupling */ double _alphamin; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ShowerAlphaQCD. */ template <> struct BaseClassTrait<Herwig::ShowerAlphaQCD,1> { /** Typedef of the first base class of ShowerAlphaQCD. */ typedef Herwig::ShowerAlpha NthBase; }; /** This template specialization informs ThePEG about the name of * the ShowerAlphaQCD class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ShowerAlphaQCD> : public ClassTraitsBase<Herwig::ShowerAlphaQCD> { /** Return a platform-independent class name */ static string className() { return "Herwig::ShowerAlphaQCD"; } /** * The name of a file containing the dynamic library where the class * ShowerAlphaQCD is implemented. It may also include several, * space-separated, libraries if the class ShowerAlphaQCD depends on * other classes (base classes excepted). In this case the listed * libraries will be dynamically linked in the order they are * specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_ShowerAlphaQCD_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Couplings/ShowerAlpha.cc�������������������������������������������������0000644�0001750�0001750�00000002710�11754474775�022736� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerAlpha.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ShowerAlpha class. // #include "ShowerAlpha.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "ShowerAlpha.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void ShowerAlpha::persistentOutput(PersistentOStream & os) const { os << _scaleFactor; } void ShowerAlpha::persistentInput(PersistentIStream & is, int) { is >> _scaleFactor; } AbstractClassDescription<ShowerAlpha> ShowerAlpha::initShowerAlpha; // Definition of the static class description member. void ShowerAlpha::Init() { static ClassDocumentation<ShowerAlpha> documentation ("This is the abstract class from which the various types of running alphas.", "inherit from."); static Parameter<ShowerAlpha,double> interfaceShowerAlpha ("ScaleFactor", "Factor that multiplies the scale argument, mu, " "of the running alpha.", &ShowerAlpha::_scaleFactor, 0, 1.0 , 0.0 , 10.0,false,false,false); } ��������������������������������������������������������herwig++-2.6.0.orig/Shower/ShowerHandler.fh���������������������������������������������������������0000644�0001750�0001750�00000000507�11754474775�021335� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the ShowerHandler class. // #ifndef HERWIG_ShowerHandler_FH #define HERWIG_ShowerHandler_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ShowerHandler; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ShowerHandler,ShowerHandlerPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Makefile.am��������������������������������������������������������������0000644�0001750�0001750�00000002616�11755413611�020267� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������SUBDIRS = SplittingFunctions Default Base . pkglib_LTLIBRARIES = HwShower.la HwShower_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 15:0:0 HwShower_la_LIBADD = Default/libHwDefaultShower.la \ $(top_builddir)/Shower/SplittingFunctions/libHwSplitting.la \ $(top_builddir)/Shower/Base/libHwShowerBase.la \ $(top_builddir)/PDF/libHwRemDecayer.la \ $(top_builddir)/PDF/libHwMPIPDF.la HwShower_la_SOURCES = \ UEBase.h UEBase.cc UEBase.fh \ Couplings/ShowerAlphaQCD.h Couplings/ShowerAlphaQCD.cc \ ShowerHandler.h ShowerHandler.fh ShowerHandler.cc noinst_LTLIBRARIES = libHwShower.la libHwShower_la_SOURCES = ShowerConfig.h \ Base/Branching.h \ Base/ShowerParticle.cc Base/ShowerParticle.fh Base/ShowerParticle.h \ Base/ShowerKinematics.fh Base/ShowerKinematics.h Base/ShowerKinematics.cc \ Base/ShowerTree.h Base/ShowerTree.fh Base/ShowerTree.cc \ Base/ShowerProgenitor.fh Base/ShowerProgenitor.h \ Base/HardTree.h Base/HardTree.fh Base/HardTree.cc\ Base/SudakovFormFactor.cc Base/SudakovFormFactor.h Base/SudakovFormFactor.fh \ Base/HardBranching.h Base/HardBranching.fh Base/HardBranching.cc\ Couplings/ShowerAlpha.h Couplings/ShowerAlpha.cc Couplings/ShowerAlpha.fh\ SplittingFunctions/SplittingGenerator.cc SplittingFunctions/SplittingGenerator.h\ SplittingFunctions/SplittingGenerator.fh \ SplittingFunctions/SplittingFunction.h SplittingFunctions/SplittingFunction.fh \ SplittingFunctions/SplittingFunction.cc ������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/ShowerConfig.h�����������������������������������������������������������0000644�0001750�0001750�00000004104�11754474775�021014� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerConfig.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ShowerConfig_H #define HERWIG_ShowerConfig_H // // This is the declaration of the ShowerConfig class. #include "ThePEG/Config/ThePEG.h" #include "Base/ShowerParticle.fh" #include "Base/ShowerKinematics.fh" #include "Base/SudakovFormFactor.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * * Handy header file to be included in all Shower classes. * It contains only some useful typedefs. */ /** * Pointer to a ColourLine */ typedef Ptr<ThePEG::ColourLine>::pointer ColinePtr; /** * Transient Pointer to a ColourLine */ typedef Ptr<ThePEG::ColourLine>::transient_pointer tColinePtr; /** * A pair of ColourLine pointers */ typedef pair<ColinePtr,ColinePtr> ColinePair; /** * A pair of transient ColourLine pointers */ typedef pair<tColinePtr,tColinePtr> tColinePair; /** * A Vector of ShowerParticle pointers */ typedef vector<ShowerParticlePtr> ShowerParticleVector; /** * A Vector of transient ShowerParticle pointers */ typedef vector<tShowerParticlePtr> tShowerParticleVector; /** * Definition of the IdList for branchings */ typedef vector<long> IdList; namespace ShowerInteraction { /** * Enum for the type of interaction */ enum Type { UNDEFINED=-1, QCD, QED }; } /** * typedef to pair the SudakovFormFactor and the particles in a branching */ typedef pair<SudakovPtr,IdList> BranchingElement; /** * typedef to pair the PDG code of the particle and the BranchingElement */ typedef multimap<long,BranchingElement> BranchingList; /** * typedef to create a structure which can be inserted into a BranchingList */ typedef pair<long, BranchingElement> BranchingInsert; } #endif // HERWIG_ShowerConfig_H ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/��������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464206�017107� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/KinematicsReconstructor.h�������������������������������������������0000644�0001750�0001750�00000013345�11754474775�024164� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // KinematicsReconstructor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_KinematicsReconstructor_H #define HERWIG_KinematicsReconstructor_H // // This is the declaration of the KinematicsReconstructor class. // #include "ThePEG/Interface/Interfaced.h" #include "ShowerParticle.h" #include "ShowerProgenitor.h" #include "ShowerTree.h" #include "HardTree.h" #include "Evolver.fh" #include "KinematicsReconstructor.fh" #include <cassert> namespace Herwig { using namespace ThePEG; /**\ingroup Shower * Exception class * used to communicate failure of kinematics * reconstruction. */ struct KinematicsReconstructionVeto {}; /** \ingroup Shower * * This class is responsible for the kinematical reconstruction * after each showering step, and also for the necessary Lorentz boosts * in order to preserve energy-momentum conservation in the overall collision, * and also the invariant mass and the rapidity of the hard subprocess system. * In the case of multi-step showering, there will be not unnecessary * kinematical reconstructions. * * Notice: * - although we often use the term "jet" in either methods or variables names, * or in comments, which could appear applicable only for QCD showering, * there is indeed no "dynamics" represented in this class: only kinematics * is involved, as the name of this class remainds. Therefore it can be used * for any kind of showers (QCD-,QED-,EWK-,... bremsstrahlung). * * @see \ref KinematicsReconstructorInterfaces "The interfaces" * defined for KinematicsReconstructor. */ class KinematicsReconstructor: public Interfaced { /** * The Evolver is a friend to allow the setting of _showerVariables */ friend class Evolver; public: /** * Methods to reconstruct the kinematics of a scattering or decay process */ //@{ /** * Given the ShowerTree for the shower from a hard process * the method does the reconstruction of the jets, * including the appropriate boosts (kinematics reshufflings) * needed to conserve the total energy-momentum of the collision * and preserving the invariant mass and the rapidity of the * hard subprocess system. */ virtual bool reconstructHardJets(ShowerTreePtr hard, const map<tShowerProgenitorPtr, pair<Energy,double> > & pt) const=0; /** * Given the ShowerTree for a decay shower * the method does the reconstruction of the jets, * including the appropriate boosts (kinematics reshufflings) * needed to conserve the total energy-momentum of the collision * and preserving the invariant mass and the rapidity of the * hard subprocess system. */ virtual bool reconstructDecayJets(ShowerTreePtr decay) const=0; //@} /** * Methods to invert the reconstruction of the shower for * a scattering or decay process and calculate * the variables used to generate the * shower given the particles produced. * This is needed for the CKKW and POWHEG approaches */ //@{ /** * Given the particles, with a history which we wish to interpret * as a shower reconstruct the variables used to generate the * shower for a decay process */ virtual bool deconstructDecayJets(HardTreePtr decay,cEvolverPtr, ShowerInteraction::Type) const=0; /** * Given the particles, with a history which we wish to interpret * as a shower reconstruct the variables used to generate the shower * for a hard process */ virtual bool deconstructHardJets(HardTreePtr hard,cEvolverPtr, ShowerInteraction::Type) const=0; //@} public: /** * 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(); private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static AbstractNoPIOClassDescription<KinematicsReconstructor> initKinematicsReconstructor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ KinematicsReconstructor & operator=(const KinematicsReconstructor &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of KinematicsReconstructor. */ template <> struct BaseClassTrait<Herwig::KinematicsReconstructor,1> { /** Typedef of the first base class of KinematicsReconstructor. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the KinematicsReconstructor class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::KinematicsReconstructor> : public ClassTraitsBase<Herwig::KinematicsReconstructor> { /** Return a platform-independent class name */ static string className() { return "Herwig::KinematicsReconstructor"; } /** * The name of a file containing the dynamic library where the class * KinematicsReconstructor is implemented. It may also include several, space-separated, * libraries if the class KinematicsReconstructor depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_KinematicsReconstructor_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerModel.h�������������������������������������������������������0000644�0001750�0001750�00000012204�11754474775�021521� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerModel.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ShowerModel_H #define HERWIG_ShowerModel_H // // This is the declaration of the ShowerModel class. // #include "ThePEG/Interface/Interfaced.h" #include "KinematicsReconstructor.fh" #include "PartnerFinder.fh" #include "SudakovFormFactor.fh" #include "ShowerModel.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * * The ShowerModel class is a container for all the objects needed to implement a * specific model of the shower evolution, as opposed to those which are independent * of the evolution. * * In general there are four types of object * - The KinematicsReconstructor object which is responsible for reconstruction * of the shower kinematics after the evolution. * - The PartnerFinder which is responsible for finding the partner and setting the * initial evolution scale * - A vector of SudakovFormFactor objects which will usually all be instances * of a class implementing the SudakovFormFactor for a specific model with * different splitting functions for different branchings * * For each model the checkConsistency member must be implemented to check that * the correct objects for the model are used. * * @see \ref ShowerModelInterfaces "The interfaces" * defined for ShowerModel. */ class ShowerModel: public Interfaced { public: /** * Access methods to access the objects */ //@{ /** * Access to the KinematicsReconstructor object */ tKinematicsReconstructorPtr kinematicsReconstructor() const { return _reconstructor; } /** * Access to the PartnerFinder object */ tPartnerFinderPtr partnerFinder() const { return _partnerfinder; } /** * Access to the SudakovFormFactor objects */ const vector<SudakovPtr> & sudakovFormFactors() const { return _sudakovs; } //@} 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: /** * The checkConsitency member which must be implemented in classes * inheriting from this one. */ virtual void checkConsistency() =0; /** @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 static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<ShowerModel> initShowerModel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ShowerModel & operator=(const ShowerModel &); private: /** * Pointer to the various objects */ //@{ /** * Pointer to the KinematicsReconstructor object */ KinematicsReconstructorPtr _reconstructor; /** * Pointer to the PartnerFinder object */ PartnerFinderPtr _partnerfinder; /** * Pointers to the SudakovFormFactor objects */ vector<SudakovPtr> _sudakovs; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ShowerModel. */ template <> struct BaseClassTrait<Herwig::ShowerModel,1> { /** Typedef of the first base class of ShowerModel. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the ShowerModel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ShowerModel> : public ClassTraitsBase<Herwig::ShowerModel> { /** Return a platform-independent class name */ static string className() { return "Herwig::ShowerModel"; } /** * The name of a file containing the dynamic library where the class * ShowerModel is implemented. It may also include several, space-separated, * libraries if the class ShowerModel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_ShowerModel_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/PartnerFinder.fh����������������������������������������������������0000644�0001750�0001750�00000000507�11754474775�022205� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the PartnerFinder class. // #ifndef HERWIG_PartnerFinder_FH #define HERWIG_PartnerFinder_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class PartnerFinder; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::PartnerFinder,PartnerFinderPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/HardBranching.h�����������������������������������������������������0000644�0001750�0001750�00000014410�11754474775�021764� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_HardBranching_H #define HERWIG_HardBranching_H // // This is the declaration of the HardBranching class. // #include "ThePEG/Config/ThePEG.h" #include "Herwig++/Shower/Base/ShowerProgenitor.h" #include "Herwig++/Shower/Base/ShowerTree.h" #include "Herwig++/Shower/Base/SudakovFormFactor.h" #include "HardBranching.fh" #include "HardTree.fh" namespace Herwig { using namespace ThePEG; /** * The HardBranching class is designed to contain the information needed for * an individual branching in the POWHEG approach */ class HardBranching : public Base { /** * The HardTree is friend */ friend class HardTree; public: /** * Enum for the status */ enum Status {Outgoing=0,Incoming,Decay}; public: /** * The default constructor * @param particle The particle which is branching * @param sudakov The Sudakov form factor for the branching * @param parent The parent for the branching * @param status Whether the particle is incoming or outgoing */ HardBranching(ShowerParticlePtr particle, SudakovPtr sudakov, tHardBranchingPtr parent,Status status); /** * Add a child of the branching * @param child The child of the branching */ void addChild(HardBranchingPtr child) {_children.push_back(child);} /** * Clear the children */ void clearChildren() { _children.clear(); } /** * Set the momenta of the particles */ void setMomenta(LorentzRotation R, double alpha, Lorentz5Momentum pt, bool setMomentum=true); /** * Use the Sudakov to fix the colours */ void fixColours(); /** * Set and get members for the private member variables */ //@{ /** * Return the branching particle. */ tShowerParticlePtr branchingParticle() const {return _particle;} /** * Set the branching particle */ void branchingParticle(ShowerParticlePtr in) {_particle=in;} /** * Get the original momentum */ const Lorentz5Momentum & original() const {return _original;} /** * Set the original momentum */ void original(const Lorentz5Momentum & in) {_original=in;} /** * Get the p reference vector */ const Lorentz5Momentum & pVector() const {return _p;} /** * Set the p reference vector */ void pVector(const Lorentz5Momentum & in) {_p=in;} /** * Get the n reference vector */ const Lorentz5Momentum & nVector() const {return _n;} /** * Set the n reference vector */ void nVector(const Lorentz5Momentum & in) {_n=in;} /** * Get the transverse momentum vector */ const Lorentz5Momentum & qPerp() const {return _qt;} /** * Set the transverse momentum vector */ void qPerp(const Lorentz5Momentum & in) {_qt=in;} /** * Get the momentum the particle should have as the start of a shower */ const Lorentz5Momentum & showerMomentum() const {return _shower;} /** * Set the momentum the particle should have as the start of a shower */ void showerMomentum(const Lorentz5Momentum & in ) {_shower=in;} /** * Get the transverse momentum */ Energy pT() const {return _pt;} /** * Set the transverse momentum */ void pT(Energy in) { _pt=in;} /** * Get the fraction of beam momentum x */ double x_frac() const {return _x_frac;} /** * Set the fraction of beam momentum x */ void x_frac( double x ) { _x_frac = x; } /** * Get whether the branching is incoming, outgoing or decay */ Status status() const {return _status;} /** * Set whether the branching is incoming, outgoing or decay */ void status(Status in) {_status=in;} /** * The parent of the branching */ tHardBranchingPtr parent() const {return _parent;} /** * Set the parent of the branching */ void parent(tHardBranchingPtr in) {_parent=in;} /** * The Sudakov form-factor */ SudakovPtr sudakov() const {return _sudakov;} /** * The Sudakov form-factor */ void sudakov(SudakovPtr in) {_sudakov=in;} /** * Get the beam particle */ PPtr beam() const {return _beam;} /** * Set the beam particle */ void beam(PPtr in) {_beam=in;} /** * The children */ vector<HardBranchingPtr> & children() {return _children;} //@} /** * Information on the Shower variables for the branching */ //@{ /** * Get the evolution scale */ Energy scale() const {return _scale;} /** * The evolution scale */ void scale(Energy in) {_scale=in;} /** * The energy fraction */ double z() const {return _z;} /** * The energy fraction */ void z(double in) {_z=in;} /** * The azimthual angle */ double phi() const {return _phi;} /** * The azimthual angle */ void phi(double in) {_phi=in;} //@} /** * Colour partners */ //@{ /** * Get the colour partner */ tHardBranchingPtr colourPartner() const {return _partner;} /** * The colour partner of the branching */ void colourPartner(tHardBranchingPtr in) {_partner=in;} //@} private: /** * The branching particle */ ShowerParticlePtr _particle; /** * The rescaled momentum */ Lorentz5Momentum _original; /** * The \f$p\f$ reference vector */ Lorentz5Momentum _p; /** * The \f$n\f$ reference vector */ Lorentz5Momentum _n; /** * The transverse momentum vector */ Lorentz5Momentum _qt; /** * The momentum the particle should have as the start of a shower */ Lorentz5Momentum _shower; /** * The transverse momentum */ Energy _pt; /** * The beam momentum fraction carried by an incoming parton x */ double _x_frac; /** * Whether the branching is incoming, outgoing or a decay */ Status _status; /** * Information on the Shower variables for the branching */ //@{ /** * The evolution scale */ Energy _scale; /** * The energy fraction */ double _z; /** * The azimthual angle */ double _phi; //@} /** * The parent of the branching */ tHardBranchingPtr _parent; /** * The Sudakov form-factor */ SudakovPtr _sudakov; /** * The children */ vector<HardBranchingPtr> _children; /** * The beam particle */ PPtr _beam; /** * The colour partner */ tHardBranchingPtr _partner; }; } #endif /* HERWIG_HardBranching_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerVeto.h��������������������������������������������������������0000644�0001750�0001750�00000010520�11754474775�021375� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerVeto.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ShowerVeto_H #define HERWIG_ShowerVeto_H // // This is the declaration of the ShowerVeto class. // #include "ThePEG/Interface/Interfaced.h" #include "ShowerVeto.fh" #include "Herwig++/Shower/SplittingFunctions/SplittingGenerator.h" #include "Herwig++/Shower/ShowerConfig.h" #include "ShowerTree.fh" #include "ShowerProgenitor.fh" namespace Herwig { using namespace ThePEG; /**\ingroup Shower * Exception class for vetoing a showering */ struct VetoShower { }; /**\ingroup Shower * ShowerVeto is a general interface for performing * vetoes during showering. * * @see \ref ShowerVetoInterfaces "The interfaces" * defined for ShowerVeto. */ class ShowerVeto: public Interfaced { public: /** * Define types of ShowerVetoes */ enum ShowerVetoType { /** * Throw away emission, if veto encountered. Set the scale to * the scale of vetoed emission. */ Emission = 1, /** * Throw away showering */ Shower, /** * Throw away event */ Event }; public: /** * Constructor giving the behaviour of this veto */ ShowerVeto (ShowerVetoType vetoType) : _vetoType(vetoType) {} /** * Return the type of this veto */ ShowerVetoType vetoType () const {return _vetoType;} 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: /** * Return true, if the selected emission off the given * particle and progenitor is vetoed. */ virtual bool vetoTimeLike (tcShowerProgenitorPtr, tcShowerParticlePtr, const Branching&) = 0; /** * Return true, if the selected emission off the given * particle and progenitor is vetoed. */ virtual bool vetoSpaceLike (tcShowerProgenitorPtr, tcShowerParticlePtr, const Branching&) = 0; private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<ShowerVeto> initShowerVeto; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ShowerVeto & operator=(const ShowerVeto &); private: /** * The type of this veto. */ ShowerVetoType _vetoType; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ShowerVeto. */ template <> struct BaseClassTrait<Herwig::ShowerVeto,1> { /** Typedef of the first base class of ShowerVeto. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the ShowerVeto class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ShowerVeto> : public ClassTraitsBase<Herwig::ShowerVeto> { /** Return a platform-independent class name */ static string className() { return "Herwig::ShowerVeto"; } /** * The name of a file containing the dynamic library where the class * ShowerVeto is implemented. It may also include several, space-separated, * libraries if the class ShowerVeto depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_ShowerVeto_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/Evolver.cc����������������������������������������������������������0000644�0001750�0001750�00000174224�11755204203�021036� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Evolver.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the Evolver class. // #include "Evolver.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include "ShowerKinematics.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Handlers/EventHandler.h" #include "ThePEG/Utilities/Throw.h" #include "ShowerTree.h" #include "ShowerProgenitor.h" #include "KinematicsReconstructor.h" #include "PartnerFinder.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/PDT/DecayMode.h" #include "Herwig++/Shower/ShowerHandler.h" using namespace Herwig; IBPtr Evolver::clone() const { return new_ptr(*this); } IBPtr Evolver::fullclone() const { return new_ptr(*this); } void Evolver::persistentOutput(PersistentOStream & os) const { os << _model << _splittingGenerator << _maxtry << _meCorrMode << _hardVetoMode << _hardVetoRead << _hardVetoReadOption << _limitEmissions << ounit(_iptrms,GeV) << _beta << ounit(_gamma,GeV) << ounit(_iptmax,GeV) << _vetoes << _hardonly << _trunc_Mode << _hardEmissionMode << _colourEvolutionMethod << _reconOpt; } void Evolver::persistentInput(PersistentIStream & is, int) { is >> _model >> _splittingGenerator >> _maxtry >> _meCorrMode >> _hardVetoMode >> _hardVetoRead >> _hardVetoReadOption >> _limitEmissions >> iunit(_iptrms,GeV) >> _beta >> iunit(_gamma,GeV) >> iunit(_iptmax,GeV) >> _vetoes >> _hardonly >> _trunc_Mode >> _hardEmissionMode >> _colourEvolutionMethod >> _reconOpt; } ClassDescription<Evolver> Evolver::initEvolver; // Definition of the static class description member. void Evolver::Init() { static ClassDocumentation<Evolver> documentation ("This class is responsible for carrying out the showering,", "including the kinematics reconstruction, in a given scale range," "including the option of the POWHEG approach to simulated next-to-leading order" " radiation\\cite{Nason:2004rx}.", "%\\cite{Nason:2004rx}\n" "\\bibitem{Nason:2004rx}\n" " P.~Nason,\n" " ``A new method for combining NLO QCD with shower Monte Carlo algorithms,''\n" " JHEP {\\bf 0411} (2004) 040\n" " [arXiv:hep-ph/0409146].\n" " %%CITATION = JHEPA,0411,040;%%\n"); static Reference<Evolver,SplittingGenerator> interfaceSplitGen("SplittingGenerator", "A reference to the SplittingGenerator object", &Herwig::Evolver::_splittingGenerator, false, false, true, false); static Reference<Evolver,ShowerModel> interfaceShowerModel ("ShowerModel", "The pointer to the object which defines the shower evolution model.", &Evolver::_model, false, false, true, false, false); static Parameter<Evolver,unsigned int> interfaceMaxTry ("MaxTry", "The maximum number of attempts to generate the shower from a" " particular ShowerTree", &Evolver::_maxtry, 100, 1, 1000, false, false, Interface::limited); static Switch<Evolver, unsigned int> ifaceMECorrMode ("MECorrMode", "Choice of the ME Correction Mode", &Evolver::_meCorrMode, 1, false, false); static SwitchOption off (ifaceMECorrMode,"No","MECorrections off", 0); static SwitchOption on (ifaceMECorrMode,"Yes","hard+soft on", 1); static SwitchOption hard (ifaceMECorrMode,"Hard","only hard on", 2); static SwitchOption soft (ifaceMECorrMode,"Soft","only soft on", 3); static Switch<Evolver, unsigned int> ifaceHardVetoMode ("HardVetoMode", "Choice of the Hard Veto Mode", &Evolver::_hardVetoMode, 1, false, false); static SwitchOption HVoff (ifaceHardVetoMode,"No","hard vetos off", 0); static SwitchOption HVon (ifaceHardVetoMode,"Yes","hard vetos on", 1); static SwitchOption HVIS (ifaceHardVetoMode,"Initial", "only IS emissions vetoed", 2); static SwitchOption HVFS (ifaceHardVetoMode,"Final","only FS emissions vetoed", 3); static Switch<Evolver, unsigned int> ifaceHardVetoRead ("HardVetoScaleSource", "If hard veto scale is to be read", &Evolver::_hardVetoRead, 0, false, false); static SwitchOption HVRcalc (ifaceHardVetoRead,"Calculate","Calculate from hard process", 0); static SwitchOption HVRread (ifaceHardVetoRead,"Read","Read from XComb->lastScale", 1); static Switch<Evolver, bool> ifaceHardVetoReadOption ("HardVetoReadOption", "Apply read-in scale veto to all collisions or just the primary one?", &Evolver::_hardVetoReadOption, false, false, false); static SwitchOption AllCollisions (ifaceHardVetoReadOption, "AllCollisions", "Read-in pT veto applied to primary and secondary collisions.", false); static SwitchOption PrimaryCollision (ifaceHardVetoReadOption, "PrimaryCollision", "Read-in pT veto applied to primary but not secondary collisions.", true); static Parameter<Evolver, Energy> ifaceiptrms ("IntrinsicPtGaussian", "RMS of intrinsic pT of Gaussian distribution:\n" "2*(1-Beta)*exp(-sqr(intrinsicpT/RMS))/sqr(RMS)", &Evolver::_iptrms, GeV, ZERO, ZERO, 1000000.0*GeV, false, false, Interface::limited); static Parameter<Evolver, double> ifacebeta ("IntrinsicPtBeta", "Proportion of inverse quadratic distribution in generating intrinsic pT.\n" "(1-Beta) is the proportion of Gaussian distribution", &Evolver::_beta, 0, 0, 1, false, false, Interface::limited); static Parameter<Evolver, Energy> ifacegamma ("IntrinsicPtGamma", "Parameter for inverse quadratic:\n" "2*Beta*Gamma/(sqr(Gamma)+sqr(intrinsicpT))", &Evolver::_gamma,GeV, ZERO, ZERO, 100000.0*GeV, false, false, Interface::limited); static Parameter<Evolver, Energy> ifaceiptmax ("IntrinsicPtIptmax", "Upper bound on intrinsic pT for inverse quadratic", &Evolver::_iptmax,GeV, ZERO, ZERO, 100000.0*GeV, false, false, Interface::limited); static RefVector<Evolver,ShowerVeto> ifaceVetoes ("Vetoes", "The vetoes to be checked during showering", &Evolver::_vetoes, -1, false,false,true,true,false); static Switch<Evolver,unsigned int> interfaceLimitEmissions ("LimitEmissions", "Limit the number and type of emissions for testing", &Evolver::_limitEmissions, 0, false, false); static SwitchOption interfaceLimitEmissionsNoLimit (interfaceLimitEmissions, "NoLimit", "Allow an arbitrary number of emissions", 0); static SwitchOption interfaceLimitEmissionsOneInitialStateEmission (interfaceLimitEmissions, "OneInitialStateEmission", "Allow one emission in the initial state and none in the final state", 1); static SwitchOption interfaceLimitEmissionsOneFinalStateEmission (interfaceLimitEmissions, "OneFinalStateEmission", "Allow one emission in the final state and none in the initial state", 2); static SwitchOption interfaceLimitEmissionsHardOnly (interfaceLimitEmissions, "HardOnly", "Only allow radiation from the hard ME correction", 3); static Switch<Evolver,bool> interfaceHardOnly ("HardOnly", "Only generate the emission supplied by the hardest emission" " generator, for testing only.", &Evolver::_hardonly, false, false, false); static SwitchOption interfaceHardOnlyNo (interfaceHardOnly, "No", "Generate full shower", false); static SwitchOption interfaceHardOnlyYes (interfaceHardOnly, "Yes", "Only the hardest emission", true); static Switch<Evolver,bool> interfaceTruncMode ("TruncatedShower", "Include the truncated shower?", &Evolver::_trunc_Mode, 1, false, false); static SwitchOption interfaceTruncMode0 (interfaceTruncMode,"No","Truncated Shower is OFF", 0); static SwitchOption interfaceTruncMode1 (interfaceTruncMode,"Yes","Truncated Shower is ON", 1); static Switch<Evolver,unsigned int> interfaceHardEmissionMode ("HardEmissionMode", "Whether to use ME corrections or POWHEG for the hardest emission", &Evolver::_hardEmissionMode, 0, false, false); static SwitchOption interfaceHardEmissionModeMECorrection (interfaceHardEmissionMode, "MECorrection", "Old fashioned ME correction", 0); static SwitchOption interfaceHardEmissionModePOWHEG (interfaceHardEmissionMode, "POWHEG", "Powheg style hard emission", 1); static Switch<Evolver,int> interfaceColourEvolutionMethod ("ColourEvolutionMethod", "Choice of method for choosing the colour factor in gluon evolution", &Evolver::_colourEvolutionMethod, 0, false, false); static SwitchOption interfaceColourEvolutionMethodDefault (interfaceColourEvolutionMethod, "Default", "Colour factor is CA for all scales", 0); static SwitchOption interfaceColourEvolutionMethodHalfCA (interfaceColourEvolutionMethod, "HalfCA", "Only use half the normal radiation until second scale is reached", 1); static Switch<Evolver,unsigned int> interfaceReconstructionOption ("ReconstructionOption", "Treatment of the reconstruction of the transverse momentum of " "a branching from the evolution scale.", &Evolver::_reconOpt, 0, false, false); static SwitchOption interfaceReconstructionOptionCutOff (interfaceReconstructionOption, "CutOff", "Use the cut-off masses in the calculation", 0); static SwitchOption interfaceReconstructionOptionOffShell (interfaceReconstructionOption, "OffShell", "Use the off-shell masses in the calculation", 1); } void Evolver::generateIntrinsicpT(vector<ShowerProgenitorPtr> particlesToShower) { _intrinsic.clear(); if ( !ipTon() || !isISRadiationON() ) return; // don't do anything for the moment for secondary scatters if( !ShowerHandler::currentHandler()->firstInteraction() ) return; // generate intrinsic pT for(unsigned int ix=0;ix<particlesToShower.size();++ix) { // only consider initial-state particles if(particlesToShower[ix]->progenitor()->isFinalState()) continue; if(!particlesToShower[ix]->progenitor()->dataPtr()->coloured()) continue; Energy ipt; if(UseRandom::rnd() > _beta) { ipt=_iptrms*sqrt(-log(UseRandom::rnd())); } else { ipt=_gamma*sqrt(pow(1.+sqr(_iptmax/_gamma), UseRandom::rnd())-1.); } pair<Energy,double> pt = make_pair(ipt,UseRandom::rnd(Constants::twopi)); _intrinsic[particlesToShower[ix]] = pt; } } void Evolver::setupMaximumScales(ShowerTreePtr hard, vector<ShowerProgenitorPtr> p) { // find out if hard partonic subprocess. bool isPartonic(false); map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit = _currenttree->incomingLines().begin(); Lorentz5Momentum pcm; for(; cit!=hard->incomingLines().end(); ++cit) { pcm += cit->first->progenitor()->momentum(); isPartonic |= cit->first->progenitor()->coloured(); } // find maximum pt from hard process, the maximum pt from all outgoing // coloured lines (this is simpler and more general than // 2stu/(s^2+t^2+u^2)). Maximum scale for scattering processes will // be transverse mass. Energy ptmax = -1.0*GeV; // general case calculate the scale if (!hardVetoXComb()|| (hardVetoReadOption()&& !ShowerHandler::currentHandler()->firstInteraction())) { // scattering process if(hard->isHard()) { // coloured incoming particles if (isPartonic) { map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt = hard->outgoingLines().begin(); for(; cjt!=hard->outgoingLines().end(); ++cjt) { if (cjt->first->progenitor()->coloured()) ptmax = max(ptmax,cjt->first->progenitor()->momentum().mt()); } } if (ptmax < ZERO) ptmax = pcm.m(); if(hardVetoXComb()&&hardVetoReadOption()&& !ShowerHandler::currentHandler()->firstInteraction()) { ptmax=min(ptmax,sqrt(ShowerHandler::currentHandler() ->lastXCombPtr()->lastScale())); } } // decay, incoming() is the decaying particle. else { ptmax = hard->incomingLines().begin()->first ->progenitor()->momentum().mass(); } } // hepeup.SCALUP is written into the lastXComb by the // LesHouchesReader itself - use this by user's choice. // Can be more general than this. else { ptmax = sqrt( ShowerHandler::currentHandler() ->lastXCombPtr()->lastScale() ); } // set maxHardPt for all progenitors. For partonic processes this // is now the max pt in the FS, for non-partonic processes or // processes with no coloured FS the invariant mass of the IS vector<ShowerProgenitorPtr>::const_iterator ckt = p.begin(); for (; ckt != p.end(); ckt++) (*ckt)->maxHardPt(ptmax); } void Evolver::showerHardProcess(ShowerTreePtr hard, XCPtr xcomb) { _hardme = HwMEBasePtr(); // extract the matrix element tStdXCombPtr lastXC = dynamic_ptr_cast<tStdXCombPtr>(xcomb); if(lastXC) { _hardme = dynamic_ptr_cast<HwMEBasePtr>(lastXC->matrixElement()); } _decayme = HwDecayerBasePtr(); // set the current tree currentTree(hard); // zero number of emissions _nis = _nfs = 0; // extract particles to shower vector<ShowerProgenitorPtr> particlesToShower=setupShower(true); // setup the maximum scales for the shower, given by the hard process if (hardVetoOn()) setupMaximumScales(currentTree(), particlesToShower); // generate the intrinsic p_T once and for all generateIntrinsicpT(particlesToShower); // main shower loop unsigned int ntry(0); do { // clear results of last attempt if needed if(ntry!=0) { currentTree()->clear(); setEvolutionPartners(true,ShowerInteraction::QCD); _nis = _nfs = 0; } // generate the shower // pick random starting point unsigned int istart=UseRandom::irnd(particlesToShower.size()); unsigned int istop = particlesToShower.size(); // loop over particles with random starting point for(unsigned int ix=istart;ix<=istop;++ix) { if(ix==particlesToShower.size()) { if(istart!=0) { istop = istart-1; ix=0; } else break; } // set the progenitor _progenitor=particlesToShower[ix]; // initial-state if(!_progenitor->progenitor()->isFinalState()) { if(!isISRadiationON()) continue; // get the PDF setBeamParticle(_progenitor->beam()); assert(beamParticle()); // perform the shower // set the beam particle tPPtr beamparticle=progenitor()->original(); if(!beamparticle->parents().empty()) beamparticle=beamparticle->parents()[0]; // generate the shower progenitor()->hasEmitted(startSpaceLikeShower(beamparticle, ShowerInteraction::QCD)); } // final-state else { if(!isFSRadiationON()) continue; // perform shower progenitor()->hasEmitted(startTimeLikeShower(ShowerInteraction::QCD)); } } } while(!showerModel()->kinematicsReconstructor()-> reconstructHardJets(hard,intrinsicpT())&& maximumTries()>++ntry); _hardme=HwMEBasePtr(); _hardtree=HardTreePtr(); if(_maxtry==ntry) throw ShowerHandler::ShowerTriesVeto(ntry); // the tree has now showered _currenttree->hasShowered(true); } void Evolver::hardMatrixElementCorrection(bool hard) { // set the initial enhancement factors for the soft correction _initialenhance = 1.; _finalenhance = 1.; // if hard matrix element switched off return if(!MECOn()) return; // see if we can get the correction from the matrix element // or decayer if(hard) { if(_hardme&&_hardme->hasMECorrection()) { _hardme->initializeMECorrection(_currenttree, _initialenhance,_finalenhance); if(hardMEC()) _hardme->applyHardMatrixElementCorrection(_currenttree); } } else { if(_decayme&&_decayme->hasMECorrection()) { _decayme->initializeMECorrection(_currenttree, _initialenhance,_finalenhance); if(hardMEC()) _decayme->applyHardMatrixElementCorrection(_currenttree); } } } double Evolver::getReductionFactor(tShowerParticlePtr particle) { // octet -> octet octet reduction factor if ( _colourEvolutionMethod == 1 ) { // Determine which colour factor to use for octet->octet octet // There are three possibilities. // 1) Radiation is emitted from a hard parton, or the primary emission // of a hard parton, at a scale above the progenitor's second // scale, and we have half as much radiation. // 2) Radiation is emitted from a hard parton, or the primary emission // of a hard parton, at a scale below the progenitor's second // scale, and we have the normal amount of radiation // 3) Radiation is emitted from a secondary emission of a hard parton, // and we have the normal amount of radiation if (getParticleData(particle->id())->iColour()==PDT::Colour8) { // Particle is an octet if (particle->radiationLine() == 1 || particle->radiationLine() == 2) { // Particle is connected along hard progenitor's radiation line if (particle->evolutionScale() > particle->progenitor()->evolutionScale2() ) { // Particle radiaties with half strength return 0.5; } } } } return 1.0; } bool Evolver::timeLikeShower(tShowerParticlePtr particle, ShowerInteraction::Type type, bool first) { // don't do anything if not needed if(_limitEmissions == 1 || _limitEmissions == 3 || ( _limitEmissions == 2 && _nfs != 0) ) return false; // octet -> octet octet reduction factor double reduction = getReductionFactor(particle); ShowerParticleVector theChildren; int ntry=0; do { ++ntry; // generate the emission Branching fb; while (true) { fb=_splittingGenerator->chooseForwardBranching(*particle,reduction*_finalenhance,type); // no emission return if(!fb.kinematics) return false; // if emission OK break if(!timeLikeVetoed(fb,particle)) break; // otherwise reset scale and continue - SO IS involved in veto algorithm particle->setEvolutionScale(fb.kinematics->scale()); } // has emitted // Assign the shower kinematics to the emitting particle. particle->setShowerKinematics(fb.kinematics); // Assign the splitting function to the emitting particle. // For the time being we are considering only 1->2 branching // Create the ShowerParticle objects for the two children of // the emitting particle; set the parent/child relationship // if same as definition create particles, otherwise create cc tcPDPtr pdata[2]; for(unsigned int ix=0;ix<2;++ix) pdata[ix]=getParticleData(fb.ids[ix+1]); if(particle->id()!=fb.ids[0]) { for(unsigned int ix=0;ix<2;++ix) { tPDPtr cc(pdata[ix]->CC()); if(cc) pdata[ix]=cc; } } theChildren.push_back(new_ptr(ShowerParticle(pdata[0],true))); theChildren.push_back(new_ptr(ShowerParticle(pdata[1],true))); // update the children particle->showerKinematics()->updateChildren(particle, theChildren,true); // update number of emissions ++_nfs; if(_limitEmissions!=0) return true; // shower the first particle timeLikeShower(theChildren[0],type,false); // shower the second particle timeLikeShower(theChildren[1],type,false); // that's if for old approach if(_reconOpt==0) break; // branching has happened particle->showerKinematics()->updateParent(particle, theChildren,true); // clean up the vetoed emission if(particle->virtualMass()==ZERO) { particle->setShowerKinematics(ShoKinPtr()); for(unsigned int ix=0;ix<theChildren.size();++ix) particle->abandonChild(theChildren[ix]); theChildren.clear(); } } while(particle->virtualMass()==ZERO&&ntry<50); if(first) particle->showerKinematics()->resetChildren(particle,theChildren); return true; } bool Evolver::spaceLikeShower(tShowerParticlePtr particle, PPtr beam, ShowerInteraction::Type type) { //using the pdf's associated with the ShowerHandler assures, that //modified pdf's are used for the secondary interactions via //CascadeHandler::resetPDFs(...) tcPDFPtr pdf; if(ShowerHandler::currentHandler()->firstPDF().particle() == _beam) pdf = ShowerHandler::currentHandler()->firstPDF().pdf(); if(ShowerHandler::currentHandler()->secondPDF().particle() == _beam) pdf = ShowerHandler::currentHandler()->secondPDF().pdf(); Energy freeze = ShowerHandler::currentHandler()->pdfFreezingScale(); // don't do anything if not needed if(_limitEmissions == 2 || _limitEmissions == 3 || ( _limitEmissions == 1 && _nis != 0 ) ) return false; // octet -> octet octet reduction factor double reduction = getReductionFactor(particle); Branching bb; // generate branching while (true) { bb=_splittingGenerator->chooseBackwardBranching(*particle,beam, reduction*_initialenhance, _beam,type, pdf,freeze); // return if no emission if(!bb.kinematics) return false; // if not vetoed break if(!spaceLikeVetoed(bb,particle)) break; // otherwise reset scale and continue particle->setEvolutionScale(bb.kinematics->scale()); } // assign the splitting function and shower kinematics particle->setShowerKinematics(bb.kinematics); // For the time being we are considering only 1->2 branching // particles as in Sudakov form factor tcPDPtr part[2]={getParticleData(bb.ids[0]), getParticleData(bb.ids[2])}; if(particle->id()!=bb.ids[1]) { if(part[0]->CC()) part[0]=part[0]->CC(); if(part[1]->CC()) part[1]=part[1]->CC(); } // Now create the actual particles, make the otherChild a final state // particle, while the newParent is not ShowerParticlePtr newParent=new_ptr(ShowerParticle(part[0],false)); ShowerParticlePtr otherChild = new_ptr(ShowerParticle(part[1],true,true)); ShowerParticleVector theChildren; theChildren.push_back(particle); theChildren.push_back(otherChild); //this updates the evolution scale particle->showerKinematics()->updateParent(newParent, theChildren,true); // update the history if needed _currenttree->updateInitialStateShowerProduct(_progenitor,newParent); _currenttree->addInitialStateBranching(particle,newParent,otherChild); // for the reconstruction of kinematics, parent/child // relationships are according to the branching process: // now continue the shower ++_nis; bool emitted = _limitEmissions==0 ? spaceLikeShower(newParent,beam,type) : false; // now reconstruct the momentum if(!emitted) { if(_intrinsic.find(_progenitor)==_intrinsic.end()) { bb.kinematics->updateLast(newParent,ZERO,ZERO); } else { pair<Energy,double> kt=_intrinsic[_progenitor]; bb.kinematics->updateLast(newParent, kt.first*cos(kt.second), kt.first*sin(kt.second)); } } particle->showerKinematics()->updateChildren(newParent, theChildren,true); if(_limitEmissions!=0) return true; // perform the shower of the final-state particle timeLikeShower(otherChild,type,true); // return the emitted return true; } void Evolver::showerDecay(ShowerTreePtr decay) { _decayme = HwDecayerBasePtr(); _hardme = HwMEBasePtr(); // find the decayer // try the normal way if possible tDMPtr dm = decay->incomingLines().begin()->first->original() ->decayMode(); if(!dm) dm = decay->incomingLines().begin()->first->copy() ->decayMode(); if(!dm) dm = decay->incomingLines().begin()->first->progenitor()->decayMode(); // otherwise make a string and look it up if(!dm) { string tag = decay->incomingLines().begin()->first->original()->dataPtr()->name() + "->"; for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator it=decay->outgoingLines().begin();it!=decay->outgoingLines().end();++it) { if(it!=decay->outgoingLines().begin()) tag += ","; tag += it->first->original()->dataPtr()->name(); } tag += ";"; dm = generator()->findDecayMode(tag); } if(dm) _decayme = dynamic_ptr_cast<HwDecayerBasePtr>(dm->decayer()); // set the ShowerTree to be showered currentTree(decay); decay->applyTransforms(); // extract particles to be shower, set scales and // perform hard matrix element correction vector<ShowerProgenitorPtr> particlesToShower=setupShower(false); setupMaximumScales(currentTree(), particlesToShower); // compute the minimum mass of the final-state Energy minmass(ZERO), mIn(ZERO); for(unsigned int ix=0;ix<particlesToShower.size();++ix) { if(particlesToShower[ix]->progenitor()->isFinalState()) { minmass += max( particlesToShower[ix]->progenitor()->mass(), particlesToShower[ix]->progenitor()->dataPtr()->constituentMass() ); } else { mIn = particlesToShower[ix]->progenitor()->mass(); } } if ( minmass > mIn ) { throw Exception() << "Evolver.cc: Mass of decaying particle is " << "below constituent masses of decay products." << Exception::eventerror; } // main showering loop unsigned int ntry(0); do { // clear results of last attempt if(ntry!=0) { currentTree()->clear(); setEvolutionPartners(false,ShowerInteraction::QCD); } unsigned int istart=UseRandom::irnd(particlesToShower.size()); unsigned int istop = particlesToShower.size(); // loop over particles with random starting point for(unsigned int ix=istart;ix<=istop;++ix) { if(ix==particlesToShower.size()) { if(istart!=0) { istop = istart-1; ix=0; } else break; } // extract the progenitor progenitor(particlesToShower[ix]); // final-state radiation if(progenitor()->progenitor()->isFinalState()) { if(!isFSRadiationON()) continue; // perform shower progenitor()->hasEmitted(startTimeLikeShower(ShowerInteraction::QCD)); } // initial-state radiation else { if(!isISRadiationON()) continue; // perform shower // set the scales correctly. The current scale is the maximum scale for // emission not the starting scale Energy maxscale=progenitor()->progenitor()->evolutionScale(); Energy startScale=progenitor()->progenitor()->mass(); progenitor()->progenitor()->setEvolutionScale(startScale); // perform the shower progenitor()->hasEmitted(startSpaceLikeDecayShower(maxscale,minmass, ShowerInteraction::QCD)); } } } while(!showerModel()->kinematicsReconstructor()->reconstructDecayJets(decay)&& maximumTries()>++ntry); _decayme = HwDecayerBasePtr(); if(maximumTries()==ntry) throw Exception() << "Failed to generate the shower after " << ntry << " attempts in Evolver::showerDecay()" << Exception::eventerror; // tree has now showered _currenttree->hasShowered(true); } bool Evolver::spaceLikeDecayShower(tShowerParticlePtr particle, Energy maxscale, Energy minmass,ShowerInteraction::Type type) { // octet -> octet octet reduction factor double reduction = getReductionFactor(particle); Branching fb; while (true) { fb=_splittingGenerator->chooseDecayBranching(*particle,maxscale,minmass, reduction*_initialenhance,type); // return if no radiation if(!fb.kinematics) return false; // if not vetoed break if(!spaceLikeDecayVetoed(fb,particle)) break; // otherwise reset scale and continue particle->setEvolutionScale(fb.kinematics->scale()); } // has emitted // Assign the shower kinematics to the emitting particle. particle->setShowerKinematics(fb.kinematics); // For the time being we are considering only 1->2 branching // Create the ShowerParticle objects for the two children of // the emitting particle; set the parent/child relationship // if same as definition create particles, otherwise create cc tcPDPtr pdata[2]; for(unsigned int ix=0;ix<2;++ix) pdata[ix]=getParticleData(fb.ids[ix+1]); if(particle->id()!=fb.ids[0]) { for(unsigned int ix=0;ix<2;++ix) { tPDPtr cc(pdata[ix]->CC()); if(cc) pdata[ix]=cc; } } ShowerParticleVector theChildren; theChildren.push_back(new_ptr(ShowerParticle(pdata[0],true))); theChildren.push_back(new_ptr(ShowerParticle(pdata[1],true))); // some code moved to updateChildren particle->showerKinematics()->updateChildren(particle, theChildren,true); // In the case of splittings which involves coloured particles, // set properly the colour flow of the branching. // update the history if needed _currenttree->updateInitialStateShowerProduct(_progenitor,theChildren[0]); _currenttree->addInitialStateBranching(particle,theChildren[0],theChildren[1]); // shower the first particle spaceLikeDecayShower(theChildren[0],maxscale,minmass,type); // shower the second particle timeLikeShower(theChildren[1],type,true); // branching has happened return true; } vector<ShowerProgenitorPtr> Evolver::setupShower(bool hard) { // generate POWHEG hard emission if needed if(_hardEmissionMode==1) hardestEmission(hard); // set the initial colour partners setEvolutionPartners(hard,ShowerInteraction::QCD); // get the particles to be showered map<ShowerProgenitorPtr, ShowerParticlePtr>::const_iterator cit; map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt; // generate hard me if needed if(_hardEmissionMode==0) hardMatrixElementCorrection(hard); // get the particles to be showered vector<ShowerProgenitorPtr> particlesToShower; // incoming particles for(cit=currentTree()->incomingLines().begin(); cit!=currentTree()->incomingLines().end();++cit) particlesToShower.push_back((*cit).first); assert((particlesToShower.size()==1&&!hard)|| (particlesToShower.size()==2&&hard)); // outgoing particles for(cjt=currentTree()->outgoingLines().begin(); cjt!=currentTree()->outgoingLines().end();++cjt) particlesToShower.push_back(((*cjt).first)); // remake the colour partners if needed if(_hardEmissionMode==0 && _currenttree->hardMatrixElementCorrection()) { setEvolutionPartners(hard,ShowerInteraction::QCD); _currenttree->resetShowerProducts(); } return particlesToShower; } void Evolver::setEvolutionPartners(bool hard,ShowerInteraction::Type ) { map<ShowerProgenitorPtr, ShowerParticlePtr>::const_iterator cit; map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt; vector<ShowerParticlePtr> particles; // match the particles in the ShowerTree and hardTree if(hardTree() && !hardTree()->connect(currentTree())) throw Exception() << "Can't match trees in " << "Evolver::setEvolutionPartners()" << Exception::eventerror; // sort out the colour partners for(cit=currentTree()->incomingLines().begin(); cit!=currentTree()->incomingLines().end();++cit) particles.push_back(cit->first->progenitor()); assert((particles.size()==1&&!hard)||(particles.size()==2&&hard)); // outgoing particles for(cjt=currentTree()->outgoingLines().begin(); cjt!=currentTree()->outgoingLines().end();++cjt) particles.push_back(cjt->first->progenitor()); if(hardTree()) { // find the partner for(unsigned int ix=0;ix<particles.size();++ix) { tHardBranchingPtr partner = hardTree()->particles()[particles[ix]]->colourPartner(); if(!partner) continue; for(map<ShowerParticlePtr,tHardBranchingPtr>::const_iterator it=hardTree()->particles().begin(); it!=hardTree()->particles().end();++it) { if(it->second==partner) particles[ix]->setPartner(it->first); } if(!particles[ix]->partner()) throw Exception() << "Can't match partners in " << "Evolver::setEvolutionPartners()" << Exception::eventerror; } } // Set the initial evolution scales showerModel()->partnerFinder()-> setInitialEvolutionScales(particles,!hard,ShowerInteraction::QCD,!_hardtree); } void Evolver::updateHistory(tShowerParticlePtr particle) { if(!particle->children().empty()) { ShowerParticleVector theChildren; for(unsigned int ix=0;ix<particle->children().size();++ix) { ShowerParticlePtr part = dynamic_ptr_cast<ShowerParticlePtr> (particle->children()[ix]); theChildren.push_back(part); } // update the history if needed if(particle==_currenttree->getFinalStateShowerProduct(_progenitor)) _currenttree->updateFinalStateShowerProduct(_progenitor, particle,theChildren); _currenttree->addFinalStateBranching(particle,theChildren); for(unsigned int ix=0;ix<theChildren.size();++ix) updateHistory(theChildren[ix]); } } bool Evolver::startTimeLikeShower(ShowerInteraction::Type type) { if(hardTree()) { map<ShowerParticlePtr,tHardBranchingPtr>::const_iterator eit=hardTree()->particles().end(), mit = hardTree()->particles().find(progenitor()->progenitor()); if( mit != eit && !mit->second->children().empty() ) { bool output=truncatedTimeLikeShower(progenitor()->progenitor(), mit->second ,type); if(output) updateHistory(progenitor()->progenitor()); return output; } } bool output = hardOnly() ? false : timeLikeShower(progenitor()->progenitor() ,type,true) ; if(output) updateHistory(progenitor()->progenitor()); return output; } bool Evolver::startSpaceLikeShower(PPtr parent, ShowerInteraction::Type type) { if(hardTree()) { map<ShowerParticlePtr,tHardBranchingPtr>::const_iterator eit =hardTree()->particles().end(), mit = hardTree()->particles().find(progenitor()->progenitor()); if( mit != eit && mit->second->parent() ) { return truncatedSpaceLikeShower( progenitor()->progenitor(), parent, mit->second->parent(), type ); } } return hardOnly() ? false : spaceLikeShower(progenitor()->progenitor(),parent,type); } bool Evolver::startSpaceLikeDecayShower(Energy maxscale,Energy minimumMass, ShowerInteraction::Type type) { if(hardTree()) { map<ShowerParticlePtr,tHardBranchingPtr>::const_iterator eit =hardTree()->particles().end(), mit = hardTree()->particles().find(progenitor()->progenitor()); if( mit != eit && mit->second->parent() ) { HardBranchingPtr branch=mit->second; while(branch->parent()) branch=branch->parent(); return truncatedSpaceLikeDecayShower(progenitor()->progenitor(),maxscale, minimumMass, branch ,type); } } return hardOnly() ? false : spaceLikeDecayShower(progenitor()->progenitor(),maxscale,minimumMass,type); } bool Evolver::timeLikeVetoed(const Branching & fb, ShowerParticlePtr particle) { // check whether emission was harder than largest pt of hard subprocess if ( hardVetoFS() && fb.kinematics->pT() > _progenitor->maxHardPt() ) return true; // soft matrix element correction veto if( softMEC()) { if(_hardme && _hardme->hasMECorrection()) { if(_hardme->softMatrixElementVeto(_progenitor,particle,fb)) return true; } else if(_decayme && _decayme->hasMECorrection()) { if(_decayme->softMatrixElementVeto(_progenitor,particle,fb)) return true; } } // veto on maximum pt if(fb.kinematics->pT()>_progenitor->maximumpT()) return true; // general vetos if (fb.kinematics && !_vetoes.empty()) { bool vetoed=false; for (vector<ShowerVetoPtr>::iterator v = _vetoes.begin(); v != _vetoes.end(); ++v) { bool test = (**v).vetoTimeLike(_progenitor,particle,fb); switch((**v).vetoType()) { case ShowerVeto::Emission: vetoed |= test; break; case ShowerVeto::Shower: if(test) throw VetoShower(); break; case ShowerVeto::Event: if(test) throw Veto(); break; } } if(vetoed) return true; } return false; } bool Evolver::spaceLikeVetoed(const Branching & bb,ShowerParticlePtr particle) { // check whether emission was harder than largest pt of hard subprocess if (hardVetoIS() && bb.kinematics->pT() > _progenitor->maxHardPt()) return true; // apply the soft correction if( softMEC() && _hardme && _hardme->hasMECorrection() ) { if(_hardme->softMatrixElementVeto(_progenitor,particle,bb)) return true; } // the more general vetos // check vs max pt for the shower if(bb.kinematics->pT()>_progenitor->maximumpT()) return true; if (!_vetoes.empty()) { bool vetoed=false; for (vector<ShowerVetoPtr>::iterator v = _vetoes.begin(); v != _vetoes.end(); ++v) { bool test = (**v).vetoSpaceLike(_progenitor,particle,bb); switch ((**v).vetoType()) { case ShowerVeto::Emission: vetoed |= test; break; case ShowerVeto::Shower: if(test) throw VetoShower(); break; case ShowerVeto::Event: if(test) throw Veto(); break; } } if (vetoed) return true; } return false; } bool Evolver::spaceLikeDecayVetoed( const Branching & fb, ShowerParticlePtr particle ) { // apply the soft correction if( softMEC() && _decayme && _decayme->hasMECorrection() ) { if(_decayme->softMatrixElementVeto(_progenitor,particle,fb)) return true; } // veto on hardest pt in the shower if(fb.kinematics->pT()> _progenitor->maximumpT()) return true; // general vetos if (!_vetoes.empty()) { bool vetoed=false; for (vector<ShowerVetoPtr>::iterator v = _vetoes.begin(); v != _vetoes.end(); ++v) { bool test = (**v).vetoSpaceLike(_progenitor,particle,fb); switch((**v).vetoType()) { case ShowerVeto::Emission: vetoed |= test; break; case ShowerVeto::Shower: if(test) throw VetoShower(); break; case ShowerVeto::Event: if(test) throw Veto(); break; } if (vetoed) return true; } } return false; } void Evolver::hardestEmission(bool hard) { if( ( _hardme && _hardme->hasPOWHEGCorrection()) || (_decayme && _decayme->hasPOWHEGCorrection())) { if(_hardme) _hardtree = _hardme->generateHardest( currentTree() ); else _hardtree = _decayme->generateHardest( currentTree() ); if(!_hardtree) return; // join up the two tree connectTrees(currentTree(),_hardtree,hard); } else { _hardtree = ShowerHandler::currentHandler()->generateCKKW(currentTree()); } } bool Evolver::truncatedTimeLikeShower(tShowerParticlePtr particle, HardBranchingPtr branch, ShowerInteraction::Type type) { int ntry=0; do { ++ntry; Branching fb; unsigned int iout=0; tcPDPtr pdata[2]; while (true) { // no truncated shower break if(!isTruncatedShowerON()||hardOnly()) break; // generate emission fb=splittingGenerator()->chooseForwardBranching(*particle,1.,type); // no emission break if(!fb.kinematics) break; // check haven't evolved too far if(fb.kinematics->scale() < branch->scale()) { fb=Branching(); break; } // get the particle data objects for(unsigned int ix=0;ix<2;++ix) pdata[ix]=getParticleData(fb.ids[ix+1]); if(particle->id()!=fb.ids[0]) { for(unsigned int ix=0;ix<2;++ix) { tPDPtr cc(pdata[ix]->CC()); if(cc) pdata[ix]=cc; } } // find the truncated line iout=0; if(pdata[0]->id()!=pdata[1]->id()) { if(pdata[0]->id()==particle->id()) iout=1; else if (pdata[1]->id()==particle->id()) iout=2; } else if(pdata[0]->id()==particle->id()) { if(fb.kinematics->z()>0.5) iout=1; else iout=2; } // apply the vetos for the truncated shower // no flavour changing branchings if(iout==0) { particle->setEvolutionScale(fb.kinematics->scale()); continue; } double zsplit = iout==1 ? fb.kinematics->z() : 1-fb.kinematics->z(); // only if same interaction for forced branching // and evolution if(type==branch->sudakov()->interactionType()) { if(zsplit < 0.5 || // hardest line veto fb.kinematics->scale()*zsplit < branch->scale() ) { // angular ordering veto particle->setEvolutionScale(fb.kinematics->scale()); continue; } } // pt veto if(fb.kinematics->pT() > progenitor()->maximumpT()) { particle->setEvolutionScale(fb.kinematics->scale()); continue; } // should do base class vetos as well if(timeLikeVetoed(fb,particle)) { particle->setEvolutionScale(fb.kinematics->scale()); continue; } break; } // if no branching force trunctaed emission if(!fb.kinematics) { // construct the kinematics for the hard emission ShoKinPtr showerKin= branch->sudakov()->createFinalStateBranching(branch->scale(), branch->children()[0]->z(), branch->phi(), branch->children()[0]->pT()); particle->setEvolutionScale(branch->scale() ); showerKin->initialize( *particle,PPtr() ); IdList idlist(3); idlist[0] = particle->id(); idlist[1] = branch->children()[0]->branchingParticle()->id(); idlist[2] = branch->children()[1]->branchingParticle()->id(); fb = Branching( showerKin, idlist, branch->sudakov() ); // Assign the shower kinematics to the emitting particle. particle->setShowerKinematics( fb.kinematics ); // Assign the splitting function to the emitting particle. // For the time being we are considering only 1->2 branching // Create the ShowerParticle objects for the two children of // the emitting particle; set the parent/child relationship // if same as definition create particles, otherwise create cc ShowerParticleVector theChildren; theChildren.push_back(new_ptr(ShowerParticle(branch->children()[0]-> branchingParticle()->dataPtr(),true))); theChildren.push_back(new_ptr(ShowerParticle(branch->children()[1]-> branchingParticle()->dataPtr(),true))); particle->showerKinematics()-> updateChildren(particle, theChildren,type==branch->sudakov()->interactionType()); // shower the first particle if( branch->children()[0]->children().empty() ) { if( ! hardOnly() ) timeLikeShower(theChildren[0],type,false); } else { truncatedTimeLikeShower( theChildren[0],branch->children()[0],type); } // shower the second particle if( branch->children()[1]->children().empty() ) { if( ! hardOnly() ) timeLikeShower( theChildren[1] , type,false); } else { truncatedTimeLikeShower( theChildren[1],branch->children()[1] ,type); } // that's if for old approach if(_reconOpt==0) return true; // branching has happened particle->showerKinematics()->updateParent(particle, theChildren,true); // clean up the vetoed emission if(particle->virtualMass()==ZERO) { particle->setShowerKinematics(ShoKinPtr()); for(unsigned int ix=0;ix<theChildren.size();++ix) particle->abandonChild(theChildren[ix]); theChildren.clear(); } else return true; } // has emitted // Assign the shower kinematics to the emitting particle. particle->setShowerKinematics(fb.kinematics); // Assign the splitting function to the emitting particle. // For the time being we are considering only 1->2 branching // Create the ShowerParticle objects for the two children of // the emitting particle; set the parent/child relationship // if same as definition create particles, otherwise create cc ShowerParticleVector theChildren; theChildren.push_back( new_ptr( ShowerParticle( pdata[0], true ) ) ); theChildren.push_back( new_ptr( ShowerParticle( pdata[1], true ) ) ); particle->showerKinematics()-> updateChildren( particle, theChildren , true); // shower the first particle if( iout == 1 ) truncatedTimeLikeShower( theChildren[0], branch , type ); else timeLikeShower( theChildren[0] , type,false); // shower the second particle if( iout == 2 ) truncatedTimeLikeShower( theChildren[1], branch , type ); else timeLikeShower( theChildren[1] , type,false); // that's if for old approach if(_reconOpt==0) return true; // branching has happened particle->showerKinematics()->updateParent(particle, theChildren,true); // clean up the vetoed emission if(particle->virtualMass()==ZERO) { particle->setShowerKinematics(ShoKinPtr()); for(unsigned int ix=0;ix<theChildren.size();++ix) particle->abandonChild(theChildren[ix]); theChildren.clear(); } else return true; } while(ntry<50); return false; } bool Evolver::truncatedSpaceLikeShower(tShowerParticlePtr particle, PPtr beam, HardBranchingPtr branch, ShowerInteraction::Type type) { tcPDFPtr pdf; if(ShowerHandler::currentHandler()->firstPDF().particle() == beamParticle()) pdf = ShowerHandler::currentHandler()->firstPDF().pdf(); if(ShowerHandler::currentHandler()->secondPDF().particle() == beamParticle()) pdf = ShowerHandler::currentHandler()->secondPDF().pdf(); Energy freeze = ShowerHandler::currentHandler()->pdfFreezingScale(); Branching bb; // generate branching tcPDPtr part[2]; while (true) { if( !isTruncatedShowerON() || hardOnly() ) break; bb = splittingGenerator()->chooseBackwardBranching( *particle, beam, 1., beamParticle(), type , pdf,freeze); if( !bb.kinematics || bb.kinematics->scale() < branch->scale() ) { bb = Branching(); break; } // particles as in Sudakov form factor part[0] = getParticleData( bb.ids[0] ); part[1] = getParticleData( bb.ids[2] ); //is emitter anti-particle if( particle->id() != bb.ids[1]) { if( part[0]->CC() ) part[0] = part[0]->CC(); if( part[1]->CC() ) part[1] = part[1]->CC(); } double zsplit = bb.kinematics->z(); // apply the vetos for the truncated shower // if doesn't carry most of momentum if(type==branch->sudakov()->interactionType() && zsplit < 0.5) { particle->setEvolutionScale(bb.kinematics->scale() ); continue; } // others if( part[0]->id() != particle->id() || // if particle changes type bb.kinematics->pT() > progenitor()->maximumpT() || // pt veto bb.kinematics->scale() < branch->scale()) { // angular ordering veto particle->setEvolutionScale(bb.kinematics->scale() ); continue; } // and those from the base class if(spaceLikeVetoed(bb,particle)) { particle->setEvolutionScale(bb.kinematics->scale() ); continue; } break; } if( !bb.kinematics ) { //do the hard emission double z(0.); HardBranchingPtr timelike; for( unsigned int ix = 0; ix < branch->children().size(); ++ix ) { if( branch->children()[ix]->status() ==HardBranching::Outgoing) { timelike = branch->children()[ix]; } if( branch->children()[ix]->status() ==HardBranching::Incoming ) z = branch->children()[ix]->z(); } ShoKinPtr kinematics = branch->sudakov()->createInitialStateBranching( branch->scale(), z, branch->phi(), branch->children()[0]->pT() ); kinematics->initialize( *particle, beam ); // assign the splitting function and shower kinematics particle->setShowerKinematics( kinematics ); // For the time being we are considering only 1->2 branching // Now create the actual particles, make the otherChild a final state // particle, while the newParent is not ShowerParticlePtr newParent = new_ptr( ShowerParticle( branch->branchingParticle()->dataPtr(), false ) ); ShowerParticlePtr otherChild = new_ptr( ShowerParticle( timelike->branchingParticle()->dataPtr(), true, true ) ); ShowerParticleVector theChildren; theChildren.push_back( particle ); theChildren.push_back( otherChild ); particle->showerKinematics()-> updateParent( newParent, theChildren, type==branch->sudakov()->interactionType() ); // update the history if needed currentTree()->updateInitialStateShowerProduct( progenitor(), newParent ); currentTree()->addInitialStateBranching( particle, newParent, otherChild ); // for the reconstruction of kinematics, parent/child // relationships are according to the branching process: // now continue the shower bool emitted=false; if(!hardOnly()) { if( branch->parent() ) { emitted = truncatedSpaceLikeShower( newParent, beam, branch->parent() , type); } else { emitted = spaceLikeShower( newParent, beam , type); } } if( !emitted ) { if( intrinsicpT().find( progenitor() ) == intrinsicpT().end() ) { kinematics->updateLast( newParent, ZERO, ZERO ); } else { pair<Energy,double> kt = intrinsicpT()[progenitor()]; kinematics->updateLast( newParent, kt.first*cos( kt.second ), kt.first*sin( kt.second ) ); } } particle->showerKinematics()-> updateChildren( newParent, theChildren, type==branch->sudakov()->interactionType() ); if(hardOnly()) return true; // perform the shower of the final-state particle if( timelike->children().empty() ) { timeLikeShower( otherChild , type,true); } else { truncatedTimeLikeShower( otherChild, timelike , type); } // return the emitted return true; } // assign the splitting function and shower kinematics particle->setShowerKinematics( bb.kinematics ); // For the time being we are considering only 1->2 branching // Now create the actual particles, make the otherChild a final state // particle, while the newParent is not ShowerParticlePtr newParent = new_ptr( ShowerParticle( part[0], false ) ); ShowerParticlePtr otherChild = new_ptr( ShowerParticle( part[1], true, true ) ); ShowerParticleVector theChildren; theChildren.push_back( particle ); theChildren.push_back( otherChild ); particle->showerKinematics()->updateParent( newParent, theChildren , true); // update the history if needed currentTree()->updateInitialStateShowerProduct( progenitor(), newParent ); currentTree()->addInitialStateBranching( particle, newParent, otherChild ); // for the reconstruction of kinematics, parent/child // relationships are according to the branching process: // now continue the shower bool emitted = truncatedSpaceLikeShower( newParent, beam, branch,type); // now reconstruct the momentum if( !emitted ) { if( intrinsicpT().find( progenitor() ) == intrinsicpT().end() ) { bb.kinematics->updateLast( newParent, ZERO, ZERO ); } else { pair<Energy,double> kt = intrinsicpT()[ progenitor() ]; bb.kinematics->updateLast( newParent, kt.first*cos( kt.second ), kt.first*sin( kt.second ) ); } } particle->showerKinematics()->updateChildren( newParent, theChildren , true); // perform the shower of the final-state particle timeLikeShower( otherChild , type,true); // return the emitted return true; } bool Evolver:: truncatedSpaceLikeDecayShower(tShowerParticlePtr particle, Energy maxscale, Energy minmass, HardBranchingPtr branch, ShowerInteraction::Type type) { Branching fb; unsigned int iout=0; tcPDPtr pdata[2]; while (true) { // no truncated shower break if(!isTruncatedShowerON()||hardOnly()) break; fb=splittingGenerator()->chooseDecayBranching(*particle,maxscale,minmass,1.,type); // return if no radiation if(!fb.kinematics) break; // check haven't evolved too far if(fb.kinematics->scale() < branch->scale()) { fb=Branching(); break; } // get the particle data objects for(unsigned int ix=0;ix<2;++ix) pdata[ix]=getParticleData(fb.ids[ix+1]); if(particle->id()!=fb.ids[0]) { for(unsigned int ix=0;ix<2;++ix) { tPDPtr cc(pdata[ix]->CC()); if(cc) pdata[ix]=cc; } } // find the truncated line iout=0; if(pdata[0]->id()!=pdata[1]->id()) { if(pdata[0]->id()==particle->id()) iout=1; else if (pdata[1]->id()==particle->id()) iout=2; } else if(pdata[0]->id()==particle->id()) { if(fb.kinematics->z()>0.5) iout=1; else iout=2; } // apply the vetos for the truncated shower // no flavour changing branchings if(iout==0) { particle->setEvolutionScale(fb.kinematics->scale()); continue; } double zsplit = iout==1 ? fb.kinematics->z() : 1-fb.kinematics->z(); if(type==branch->sudakov()->interactionType()) { if(zsplit < 0.5 || // hardest line veto fb.kinematics->scale()*zsplit < branch->scale() ) { // angular ordering veto particle->setEvolutionScale(fb.kinematics->scale()); continue; } } // pt veto if(fb.kinematics->pT() > progenitor()->maximumpT()) { particle->setEvolutionScale(fb.kinematics->scale()); continue; } // should do base class vetos as well // if not vetoed break if(!spaceLikeDecayVetoed(fb,particle)) break; // otherwise reset scale and continue particle->setEvolutionScale(fb.kinematics->scale()); } // if no branching set decay matrix and return if(!fb.kinematics) { // construct the kinematics for the hard emission ShoKinPtr showerKin= branch->sudakov()->createDecayBranching(branch->scale(), branch->children()[0]->z(), branch->phi(), branch->children()[0]->pT()); particle->setEvolutionScale(branch->scale() ); showerKin->initialize( *particle,PPtr() ); IdList idlist(3); idlist[0] = particle->id(); idlist[1] = branch->children()[0]->branchingParticle()->id(); idlist[2] = branch->children()[1]->branchingParticle()->id(); fb = Branching( showerKin, idlist, branch->sudakov() ); // Assign the shower kinematics to the emitting particle. particle->setShowerKinematics( fb.kinematics ); // Assign the splitting function to the emitting particle. // For the time being we are considering only 1->2 branching // Create the ShowerParticle objects for the two children of // the emitting particle; set the parent/child relationship // if same as definition create particles, otherwise create cc ShowerParticleVector theChildren; theChildren.push_back(new_ptr(ShowerParticle(branch->children()[0]-> branchingParticle()->dataPtr(),true))); theChildren.push_back(new_ptr(ShowerParticle(branch->children()[1]-> branchingParticle()->dataPtr(),true))); particle->showerKinematics()-> updateChildren(particle, theChildren, type==branch->sudakov()->interactionType()); if(theChildren[0]->id()==particle->id()) { // update the history if needed currentTree()->updateInitialStateShowerProduct(progenitor(),theChildren[0]); currentTree()->addInitialStateBranching(particle,theChildren[0],theChildren[1]); // shower the space-like particle if( branch->children()[0]->children().empty() ) { if( ! hardOnly() ) spaceLikeDecayShower(theChildren[0],maxscale,minmass,type); } else { truncatedSpaceLikeDecayShower( theChildren[0],maxscale,minmass, branch->children()[0],type); } // shower the second particle if( branch->children()[1]->children().empty() ) { if( ! hardOnly() ) timeLikeShower( theChildren[1] , type,true); } else { truncatedTimeLikeShower( theChildren[1],branch->children()[1] ,type); } } else { // update the history if needed currentTree()->updateInitialStateShowerProduct(progenitor(),theChildren[1]); currentTree()->addInitialStateBranching(particle,theChildren[0],theChildren[1]); // shower the space-like particle if( branch->children()[1]->children().empty() ) { if( ! hardOnly() ) spaceLikeDecayShower(theChildren[1],maxscale,minmass,type); } else { truncatedSpaceLikeDecayShower( theChildren[1],maxscale,minmass, branch->children()[1],type); } // shower the second particle if( branch->children()[0]->children().empty() ) { if( ! hardOnly() ) timeLikeShower( theChildren[0] , type,true); } else { truncatedTimeLikeShower( theChildren[0],branch->children()[0] ,type); } } return true; } // has emitted // Assign the shower kinematics to the emitting particle. particle->setShowerKinematics(fb.kinematics); // For the time being we are considering only 1->2 branching // Create the ShowerParticle objects for the two children of // the emitting particle; set the parent/child relationship // if same as definition create particles, otherwise create cc ShowerParticleVector theChildren; theChildren.push_back(new_ptr(ShowerParticle(pdata[0],true))); theChildren.push_back(new_ptr(ShowerParticle(pdata[1],true))); particle->showerKinematics()->updateChildren(particle, theChildren,true); // In the case of splittings which involves coloured particles, // set properly the colour flow of the branching. // update the history if needed currentTree()->updateInitialStateShowerProduct(progenitor(),theChildren[0]); currentTree()->addInitialStateBranching(particle,theChildren[0],theChildren[1]); // shower the first particle truncatedSpaceLikeDecayShower(theChildren[0],maxscale,minmass,branch,type); // shower the second particle timeLikeShower(theChildren[1],type,true); // branching has happened return true; } void Evolver::connectTrees(ShowerTreePtr showerTree, HardTreePtr hardTree, bool hard ) const { ShowerParticleVector particles; // find the Sudakovs for(set<HardBranchingPtr>::iterator cit=hardTree->branchings().begin(); cit!=hardTree->branchings().end();++cit) { // Sudakovs for ISR if((**cit).parent()&&(**cit).status()==HardBranching::Incoming) { IdList br(3); br[0] = (**cit).parent()->branchingParticle()->id(); br[1] = (**cit). branchingParticle()->id(); br[2] = (**cit).parent()->children()[0]==*cit ? (**cit).parent()->children()[1]->branchingParticle()->id() : (**cit).parent()->children()[0]->branchingParticle()->id(); BranchingList branchings = splittingGenerator()->initialStateBranchings(); if(br[1]<0&&br[0]==br[1]) { br[0] = abs(br[0]); br[1] = abs(br[1]); } else if(br[1]<0) { br[1] = -br[1]; br[2] = -br[2]; } long index = abs(br[1]); SudakovPtr sudakov; for(BranchingList::const_iterator cjt = branchings.lower_bound(index); cjt != branchings.upper_bound(index); ++cjt ) { IdList ids = cjt->second.second; if(ids[0]==br[0]&&ids[1]==br[1]&&ids[2]==br[2]) { sudakov=cjt->second.first; break; } } if(!sudakov) throw Exception() << "Can't find Sudakov for the hard emission in " << "Evolver::connectTrees() for ISR" << Exception::runerror; (**cit).parent()->sudakov(sudakov); } // Sudakovs for FSR else if(!(**cit).children().empty()) { IdList br(3); br[0] = (**cit) .branchingParticle()->id(); br[1] = (**cit).children()[0]->branchingParticle()->id(); br[2] = (**cit).children()[1]->branchingParticle()->id(); BranchingList branchings = splittingGenerator()->finalStateBranchings(); if(br[0]<0) { br[0] = abs(br[0]); br[1] = abs(br[1]); br[2] = abs(br[2]); } long index = br[0]; SudakovPtr sudakov; for(BranchingList::const_iterator cjt = branchings.lower_bound(index); cjt != branchings.upper_bound(index); ++cjt ) { IdList ids = cjt->second.second; if(ids[0]==br[0]&&ids[1]==br[1]&&ids[2]==br[2]) { sudakov=cjt->second.first; break; } } if(!sudakov) throw Exception() << "Can't find Sudakov for the hard emission in " << "Evolver::connectTrees()" << Exception::runerror; (**cit).sudakov(sudakov); } } // calculate the evolution scale for(set<HardBranchingPtr>::iterator cit=hardTree->branchings().begin(); cit!=hardTree->branchings().end();++cit) { particles.push_back((*cit)->branchingParticle()); } showerModel()->partnerFinder()-> setInitialEvolutionScales(particles,!hard,hardTree->interaction(),true); // inverse reconstruction if(hard) showerModel()->kinematicsReconstructor()-> deconstructHardJets(hardTree,ShowerHandler::currentHandler()->evolver(), hardTree->interaction()); else showerModel()->kinematicsReconstructor()-> deconstructDecayJets(hardTree,ShowerHandler::currentHandler()->evolver(), hardTree->interaction()); // now reset the momenta of the showering particles vector<ShowerProgenitorPtr> particlesToShower; for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=showerTree->incomingLines().begin(); cit!=showerTree->incomingLines().end();++cit ) particlesToShower.push_back(cit->first); // extract the showering particles for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit=showerTree->outgoingLines().begin(); cit!=showerTree->outgoingLines().end();++cit ) particlesToShower.push_back(cit->first); // match them vector<bool> matched(particlesToShower.size(),false); for(set<HardBranchingPtr>::const_iterator cit=hardTree->branchings().begin(); cit!=hardTree->branchings().end();++cit) { Energy2 dmin( 1e30*GeV2 ); int iloc(-1); for(unsigned int ix=0;ix<particlesToShower.size();++ix) { if(matched[ix]) continue; if( (**cit).branchingParticle()->id() != particlesToShower[ix]->progenitor()->id() ) continue; if( (**cit).branchingParticle()->isFinalState() != particlesToShower[ix]->progenitor()->isFinalState() ) continue; Energy2 dtest = sqr( particlesToShower[ix]->progenitor()->momentum().x() - (**cit).showerMomentum().x() ) + sqr( particlesToShower[ix]->progenitor()->momentum().y() - (**cit).showerMomentum().y() ) + sqr( particlesToShower[ix]->progenitor()->momentum().z() - (**cit).showerMomentum().z() ) + sqr( particlesToShower[ix]->progenitor()->momentum().t() - (**cit).showerMomentum().t() ); // add mass difference for identical particles (e.g. Z0 Z0 production) dtest += 1e10*sqr(particlesToShower[ix]->progenitor()->momentum().m()- (**cit).showerMomentum().m()); if( dtest < dmin ) { iloc = ix; dmin = dtest; } } if(iloc<0) throw Exception() << "Failed to match shower and hard trees in Evolver::hardestEmission" << Exception::eventerror; particlesToShower[iloc]->progenitor()->set5Momentum((**cit).showerMomentum()); matched[iloc] = true; } // correction boosts for daughter trees for(map<tShowerTreePtr,pair<tShowerProgenitorPtr,tShowerParticlePtr> >::const_iterator tit = showerTree->treelinks().begin(); tit != showerTree->treelinks().end();++tit) { ShowerTreePtr decayTree = tit->first; map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit = decayTree->incomingLines().begin(); // reset the momentum of the decay particle Lorentz5Momentum oldMomentum = cit->first->progenitor()->momentum(); Lorentz5Momentum newMomentum = tit->second.second->momentum(); LorentzRotation boost( oldMomentum.findBoostToCM(),oldMomentum.e()/oldMomentum.mass()); boost.boost (-newMomentum.findBoostToCM(),newMomentum.e()/newMomentum.mass()); decayTree->transform(boost,true); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/Makefile.in���������������������������������������������������������0000644�0001750�0001750�00000044711�11756461701�021160� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Shower/Base DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwShowerBase_la_LIBADD = am_libHwShowerBase_la_OBJECTS = KinematicsReconstructor.lo \ ShowerModel.lo PartnerFinder.lo Evolver.lo ShowerVeto.lo libHwShowerBase_la_OBJECTS = $(am_libHwShowerBase_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwShowerBase_la_SOURCES) DIST_SOURCES = $(libHwShowerBase_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwShowerBase.la libHwShowerBase_la_SOURCES = \ KinematicsReconstructor.cc KinematicsReconstructor.h KinematicsReconstructor.fh \ ShowerModel.cc ShowerModel.h ShowerModel.fh \ PartnerFinder.h PartnerFinder.fh PartnerFinder.cc \ Evolver.h Evolver.fh Evolver.cc \ ShowerVeto.h ShowerVeto.fh ShowerVeto.cc all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Shower/Base/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Shower/Base/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwShowerBase.la: $(libHwShowerBase_la_OBJECTS) $(libHwShowerBase_la_DEPENDENCIES) $(EXTRA_libHwShowerBase_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwShowerBase_la_OBJECTS) $(libHwShowerBase_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Evolver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/KinematicsReconstructor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PartnerFinder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShowerModel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShowerVeto.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: �������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/SudakovFormFactor.cc������������������������������������������������0000644�0001750�0001750�00000023616�11754474775�023037� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SudakovFormFactor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SudakovFormFactor class. // #include "SudakovFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ShowerKinematics.h" using namespace Herwig; void SudakovFormFactor::persistentOutput(PersistentOStream & os) const { os << splittingFn_ << alpha_ << pdfmax_ << particles_ << pdffactor_ << a_ << b_ << ounit(c_,GeV) << ounit(kinCutoffScale_,GeV) << cutOffOption_ << ounit(vgcut_,GeV) << ounit(vqcut_,GeV) << ounit(pTmin_,GeV) << ounit(pT2min_,GeV2); } void SudakovFormFactor::persistentInput(PersistentIStream & is, int) { is >> splittingFn_ >> alpha_ >> pdfmax_ >> particles_ >> pdffactor_ >> a_ >> b_ >> iunit(c_,GeV) >> iunit(kinCutoffScale_,GeV) >> cutOffOption_ >> iunit(vgcut_,GeV) >> iunit(vqcut_,GeV) >> iunit(pTmin_,GeV) >> iunit(pT2min_,GeV2); } AbstractClassDescription<SudakovFormFactor> SudakovFormFactor::initSudakovFormFactor; // Definition of the static class description member. void SudakovFormFactor::Init() { static ClassDocumentation<SudakovFormFactor> documentation ("The SudakovFormFactor class is the base class for the implementation of Sudakov" " form factors in Herwig++"); static Reference<SudakovFormFactor,SplittingFunction> interfaceSplittingFunction("SplittingFunction", "A reference to the SplittingFunction object", &Herwig::SudakovFormFactor::splittingFn_, false, false, true, false); static Reference<SudakovFormFactor,ShowerAlpha> interfaceAlpha("Alpha", "A reference to the Alpha object", &Herwig::SudakovFormFactor::alpha_, false, false, true, false); static Parameter<SudakovFormFactor,double> interfacePDFmax ("PDFmax", "Maximum value of PDF weight. ", &SudakovFormFactor::pdfmax_, 35.0, 1.0, 100000.0, false, false, Interface::limited); static Switch<SudakovFormFactor,unsigned int> interfacePDFFactor ("PDFFactor", "Include additional factors in the overestimate for the PDFs", &SudakovFormFactor::pdffactor_, 0, false, false); static SwitchOption interfacePDFFactorOff (interfacePDFFactor, "Off", "Don't include any factors", 0); static SwitchOption interfacePDFFactorOverZ (interfacePDFFactor, "OverZ", "Include an additional factor of 1/z", 1); static SwitchOption interfacePDFFactorOverOneMinusZ (interfacePDFFactor, "OverOneMinusZ", "Include an additional factor of 1/(1-z)", 2); static SwitchOption interfacePDFFactorOverZOneMinusZ (interfacePDFFactor, "OverZOneMinusZ", "Include an additional factor of 1/z/(1-z)", 3); static Switch<SudakovFormFactor,unsigned int> interfaceCutOffOption ("CutOffOption", "The type of cut-off to use to end the shower", &SudakovFormFactor::cutOffOption_, 0, false, false); static SwitchOption interfaceCutOffOptionDefault (interfaceCutOffOption, "Default", "Use the standard Herwig++ cut-off on virtualities with the minimum" " virtuality depending on the mass of the branching particle", 0); static SwitchOption interfaceCutOffOptionFORTRAN (interfaceCutOffOption, "FORTRAN", "Use a FORTRAN-like cut-off on virtualities", 1); static SwitchOption interfaceCutOffOptionpT (interfaceCutOffOption, "pT", "Use a cut on the minimum allowed pT", 2); static Parameter<SudakovFormFactor,double> interfaceaParameter ("aParameter", "The a parameter for the kinematic cut-off", &SudakovFormFactor::a_, 0.3, -10.0, 10.0, false, false, Interface::limited); static Parameter<SudakovFormFactor,double> interfacebParameter ("bParameter", "The b parameter for the kinematic cut-off", &SudakovFormFactor::b_, 2.3, -10.0, 10.0, false, false, Interface::limited); static Parameter<SudakovFormFactor,Energy> interfacecParameter ("cParameter", "The c parameter for the kinematic cut-off", &SudakovFormFactor::c_, GeV, 0.3*GeV, 0.1*GeV, 10.0*GeV, false, false, Interface::limited); static Parameter<SudakovFormFactor,Energy> interfaceKinScale ("cutoffKinScale", "kinematic cutoff scale for the parton shower phase" " space (unit [GeV])", &SudakovFormFactor::kinCutoffScale_, GeV, 2.3*GeV, 0.001*GeV, 10.0*GeV,false,false,false); static Parameter<SudakovFormFactor,Energy> interfaceGluonVirtualityCut ("GluonVirtualityCut", "For the FORTRAN cut-off option the minimum virtuality of the gluon", &SudakovFormFactor::vgcut_, GeV, 0.85*GeV, 0.1*GeV, 10.0*GeV, false, false, Interface::limited); static Parameter<SudakovFormFactor,Energy> interfaceQuarkVirtualityCut ("QuarkVirtualityCut", "For the FORTRAN cut-off option the minimum virtuality added to" " the mass for particles other than the gluon", &SudakovFormFactor::vqcut_, GeV, 0.85*GeV, 0.1*GeV, 10.0*GeV, false, false, Interface::limited); static Parameter<SudakovFormFactor,Energy> interfacepTmin ("pTmin", "The minimum pT if using a cut-off on the pT", &SudakovFormFactor::pTmin_, GeV, 1.0*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); } bool SudakovFormFactor:: PDFVeto(const Energy2 t, const double x, const tcPDPtr parton0, const tcPDPtr parton1, Ptr<BeamParticleData>::transient_const_pointer beam) const { assert(pdf_); Energy2 theScale = t; if (theScale < sqr(freeze_)) theScale = sqr(freeze_); double newpdf(0.0), oldpdf(0.0); //different treatment of MPI ISR is done via CascadeHandler::resetPDFs() newpdf=pdf_->xfx(beam,parton0,theScale,x/z()); oldpdf=pdf_->xfx(beam,parton1,theScale,x); if(newpdf<=0.) return true; if(oldpdf<=0.) return false; double ratio = newpdf/oldpdf; double maxpdf(pdfmax_); switch (pdffactor_) { case 1: maxpdf /= z(); break; case 2: maxpdf /= 1.-z(); break; case 3: maxpdf /= (z()*(1.-z())); break; } // ratio / PDFMax must be a probability <= 1.0 if (ratio > maxpdf) { generator()->log() << "PDFVeto warning: Ratio > " << name() << ":PDFmax (by a factor of " << ratio/maxpdf <<") for " << parton0->PDGName() << " to " << parton1->PDGName() << "\n"; } return ratio < UseRandom::rnd()*maxpdf; } void SudakovFormFactor::addSplitting(const IdList & in) { bool add=true; for(unsigned int ix=0;ix<particles_.size();++ix) { if(particles_[ix].size()==in.size()) { bool match=true; for(unsigned int iy=0;iy<in.size();++iy) { if(particles_[ix][iy]!=in[iy]) { match=false; break; } } if(match) { add=false; break; } } } if(add) particles_.push_back(in); } void SudakovFormFactor::removeSplitting(const IdList & in) { for(vector<IdList>::iterator it=particles_.begin(); it!=particles_.end();++it) { if(it->size()==in.size()) { bool match=true; for(unsigned int iy=0;iy<in.size();++iy) { if((*it)[iy]!=in[iy]) { match=false; break; } } if(match) { vector<IdList>::iterator itemp=it; --itemp; particles_.erase(it); it = itemp; } } } } Energy2 SudakovFormFactor::guesst(Energy2 t1,unsigned int iopt, const IdList &ids, double enhance,bool ident) const { unsigned int pdfopt = iopt!=1 ? 0 : pdffactor_; double c = 1./((splittingFn_->integOverP(zlimits_.second,ids,pdfopt) - splittingFn_->integOverP(zlimits_.first ,ids,pdfopt))* alpha_->overestimateValue()/Constants::twopi*enhance); assert(iopt<=2); if(iopt==1) { c/=pdfmax_; if(ident) c*=0.5; } else if(iopt==2) c*=-1.; if(splittingFn_->interactionOrder()==1) { return t1*pow(UseRandom::rnd(),c); } else { assert(false && "Units are dubious here."); int nm(splittingFn()->interactionOrder()-1); c/=Math::powi(alpha_->overestimateValue()/Constants::twopi,nm); return t1 / pow (1. - nm*c*log(UseRandom::rnd()) * Math::powi(t1*UnitRemoval::InvE2,nm) ,1./double(nm)); } } double SudakovFormFactor::guessz (unsigned int iopt, const IdList &ids) const { unsigned int pdfopt = iopt!=1 ? 0 : pdffactor_; double lower = splittingFn_->integOverP(zlimits_.first,ids,pdfopt); return splittingFn_->invIntegOverP (lower + UseRandom::rnd()*(splittingFn_->integOverP(zlimits_.second,ids,pdfopt) - lower),ids,pdfopt); } void SudakovFormFactor::doinit() { Interfaced::doinit(); pT2min_ = cutOffOption()==2 ? sqr(pTmin_) : ZERO; } vector<Energy> SudakovFormFactor::virtualMasses(const IdList & ids) { vector<Energy> output; if(cutOffOption() == 0) { for(unsigned int ix=0;ix<ids.size();++ix) output.push_back(getParticleData(ids[ix])->mass()); Energy kinCutoff= kinematicCutOff(kinScale(),*std::max_element(output.begin(),output.end())); for(unsigned int ix=0;ix<output.size();++ix) output[ix]=max(kinCutoff,output[ix]); } else if(cutOffOption() == 1) { for(unsigned int ix=0;ix<ids.size();++ix) { output.push_back(getParticleData(ids[ix])->mass()); output.back() += ids[ix]==ParticleID::g ? vgCut() : vqCut(); } } else if(cutOffOption() == 2) { for(unsigned int ix=0;ix<ids.size();++ix) output.push_back(getParticleData(ids[ix])->mass()); } else { throw Exception() << "Unknown option for the cut-off" << " in SudakovFormFactor::virtualMasses()" << Exception::runerror; } return output; } ������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerModel.cc������������������������������������������������������0000644�0001750�0001750�00000004214�11754474775�021661� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerModel.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ShowerModel class. // #include "ShowerModel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "KinematicsReconstructor.h" #include "PartnerFinder.h" #include "Evolver.h" #include "SudakovFormFactor.h" using namespace Herwig; void ShowerModel::persistentOutput(PersistentOStream & os) const { os << _reconstructor << _partnerfinder << _sudakovs; } void ShowerModel::persistentInput(PersistentIStream & is, int) { is >> _reconstructor >> _partnerfinder >> _sudakovs; } void ShowerModel::doinit() { Interfaced::doinit(); checkConsistency(); } AbstractClassDescription<ShowerModel> ShowerModel::initShowerModel; // Definition of the static class description member. void ShowerModel::Init() { static ClassDocumentation<ShowerModel> documentation ("The ShowerModel class contains the references for the classes which" " are specific to the shower evolution scheme."); static Reference<ShowerModel,KinematicsReconstructor> interfaceKinematicsReconstructor ("KinematicsReconstructor", "Reference to the KinematicsReconstructor object", &ShowerModel::_reconstructor, false, false, true, false, false); static Reference<ShowerModel,PartnerFinder> interfacePartnerFinder ("PartnerFinder", "Reference to the PartnerFinder object", &ShowerModel::_partnerfinder, false, false, true, false, false); static RefVector<ShowerModel,SudakovFormFactor> interfaceSudakovFormFactors ("SudakovFormFactors", "Vector of references to the SudakovFormFactor objects", &ShowerModel::_sudakovs, -1, false, false, true, false, false); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerTree.h��������������������������������������������������������0000644�0001750�0001750�00000025470�11754474775�021371� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerTree.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ShowerTree_H #define HERWIG_ShowerTree_H #include "ThePEG/Config/ThePEG.h" #include "Herwig++/Shower/ShowerHandler.fh" #include "Herwig++/Shower/ShowerConfig.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include "ShowerProgenitor.h" #include "ThePEG/EventRecord/Step.h" #include <cassert> #include "ShowerTree.fh" namespace Herwig { /** * Typedef for map of ShowerTrees for decays */ typedef multimap<Energy,ShowerTreePtr,std::greater<Energy> > ShowerDecayMap; using namespace ThePEG; /** \ingroup Shower * * The ShowerTree class stores the basic information needed for * each hard interaction, either a scattering process or decay, which * needs to be showered. * */ class ShowerTree : public Base { public: /** * Constructors and Destructors */ //@{ /** * Constructor for a scattering process * @param incoming The incoming particles * @param out The outgoing particles * @param decay Map into which the trees for any unstable particles are inserted */ ShowerTree(const PPair incoming, const ParticleVector & out, ShowerDecayMap & decay); /** * Constructor for a decay * @param in The decaying particle * @param decay Map into which the trees for any unstable particles are inserted */ ShowerTree(PPtr in, ShowerDecayMap & decay); //@} public: /** * Insert the tree into the event record * @param pstep The step into which the particles should be inserted * @param ISR Whether or not ISR is switched on * @param FSR Whether or not FSR is switched on */ void fillEventRecord(StepPtr pstep,bool ISR,bool FSR) { if(_wasHard) insertHard(pstep,ISR,FSR); else insertDecay(pstep,ISR,FSR); } /** * Set the parent tree to this tree for trees which come from this one. * This needs to be run after the constructor. */ void setParents(); /** * Perform the decay for a tree starting with an unstable particle * @param decay The map of widths and ShowerTrees for the decays so that * any unstable decay products can be added. */ void decay(ShowerDecayMap & decay); /** * Access methods for the type of interaction */ //@{ /** * Whether or not this is a scattering process */ bool isHard() const { return _wasHard; } /** * Whether or not this is a decay. */ bool isDecay() const { return !_wasHard; } //@} /** * Flags relating to the application of the hard matrix element correction */ //@{ /** * Was the hard matrix element correction applied */ bool hardMatrixElementCorrection() const { return _hardMECorrection; } /** * Set whether or not the hard matrix element correction was applied */ void hardMatrixElementCorrection(bool in) { _hardMECorrection=in; } //@} /** * Get the incoming shower particles */ map<ShowerProgenitorPtr,ShowerParticlePtr> & incomingLines() { return _incomingLines; } /** * Get the outgoing shower particles */ map<ShowerProgenitorPtr,tShowerParticlePtr> & outgoingLines() { return _outgoingLines; } /** * Update the shower product for a final-state particle */ void updateFinalStateShowerProduct(ShowerProgenitorPtr progenitor, ShowerParticlePtr parent, const ShowerParticleVector & children); /** * Update the shower product for an initial-state particle */ void updateInitialStateShowerProduct(ShowerProgenitorPtr progenitor, ShowerParticlePtr newParent); /** * Get the current final shower product for a final-state particle */ tShowerParticlePtr getFinalStateShowerProduct(ShowerProgenitorPtr progenitor) { return _outgoingLines.find(progenitor)==_outgoingLines.end() ? tShowerParticlePtr() : _outgoingLines[progenitor]; } /** * Add a final-state branching. This method removes the parent of the branching * from the list of particles at the end of the shower and inserts the children * @param parent The parent for the branching * @param children The outgoing particles in the branching */ void addFinalStateBranching(ShowerParticlePtr parent, const ShowerParticleVector & children); /** * Add an initial-state branching. This method removes the oldParent of the * branching and inserts the result of the backward evolution and the * outgoing particle into the relevant lists. * @param oldParent The particle being backward evolved * @param newParent The initial-state particle resulting from the backward evolution * @param otherChild The final-state particle produced in the evolution. */ void addInitialStateBranching(ShowerParticlePtr oldParent, ShowerParticlePtr newParent, ShowerParticlePtr otherChild); /** * Member called at the end of the shower of a tree to perform a number of * updates. * @param decay The map of widths and ShowerTrees for the decays so that * any unstable decay products can be added. */ void updateAfterShower(ShowerDecayMap & decay); /** * Access and set the flag for whether this tree has been showered */ //@{ /** * Access the flag */ bool hasShowered() const { return _hasShowered; } /** * Set the flag */ void hasShowered(bool in) { _hasShowered=in; } //@} /** * Access the parent tree */ ShowerTreePtr parent() const { return _parent; } /** * Clear all the shower products so that the event can be reshowered * if the first attempt fail */ void clear(); /** * Reset the particles resulting from the shower to those which started * the shower */ void resetShowerProducts(); /** * Extract the progenitors for the reconstruction */ vector<ShowerProgenitorPtr> extractProgenitors(); /** * Access to the outgoing particles */ const set<tShowerParticlePtr> & forwardParticles() const { return _forward; } /** * Map of particles in this Tree which are the initial particles in other * trees */ const map<tShowerTreePtr,pair<tShowerProgenitorPtr,tShowerParticlePtr> > & treelinks() const {return _treelinks;} /** * Update the link between shower particle and tree */ void updateLink(tShowerTreePtr tree, pair<tShowerProgenitorPtr,tShowerParticlePtr> in) { _treelinks[tree] = in; } /** * Transform the tree */ void transform(const LorentzRotation & rot, bool applyNow); /** * Apply any postphoned transformations */ void applyTransforms(); /** * Clear any postphoned transformations */ void clearTransforms(); /** * Transform which needs to be applied */ const LorentzRotation & transform() {return _transforms;} protected: /** * Functions to add the shower to the event record. */ //@{ /** * Insert a hard process * @param pstep The step into which the particles should be inserted * @param ISR Whether or not ISR is switched on * @param FSR Whether or not FSR is switched on */ void insertHard(StepPtr pstep,bool ISR,bool FSR); /** * Insert a decay process * @param pstep The step into which the particles should be inserted * @param ISR Whether or not ISR is switched on * @param FSR Whether or not FSR is switched on */ void insertDecay(StepPtr pstep,bool ISR,bool FSR); /** * Recursively add the final-state shower from the particle to the event record. * @param particle The final-state particle * @param step The step */ void addFinalStateShower(PPtr particle, StepPtr step); /** * Add the initial-state shwoer from the particle to the step * @param particle The final-state particle * @param hadron The incoming hadron * @param step The step * @param addchildren Add the children of the particle */ void addInitialStateShower(PPtr particle, PPtr hadron, StepPtr step, bool addchildren=true); /** * Update the colour information of a particle prior to insertion into the * event record. * @param particle The particle for which the colour is updated. */ void updateColour(PPtr particle); /** * Map the colours for a given particle */ void mapColour(PPtr original, PPtr copy); //@} /** * Isolate the colour of the process from the rest of the event. * Called in the constructor * @param original The original particles * @param copy The colour isolated copies */ void colourIsolate(const vector<PPtr> & original, const vector<PPtr> & copy); /** * Isolate a specific colour line */ void isolateLine(vector<PPair>::const_iterator cit, vector<PPair> & particles, tcColinePtr oldline, tColinePtr newline); /** * After the creatation of a ShowerParticle make sure it is properly attached * to its ColourLine * @param part The particle */ void fixColour(tShowerParticlePtr part); private: /** * Incoming partons for the hard process */ PPair _incoming; /** * The incoming ShowerParticles connected to the interaction * as the index of a map with the particle the shower backward evolves * them to as the value */ map<ShowerProgenitorPtr,ShowerParticlePtr> _incomingLines; /** * The outgoing ShowerParticles connected to the interaction * as the index of a map with the particle the shower * evolves them to as the value */ map<ShowerProgenitorPtr,tShowerParticlePtr> _outgoingLines; /** * The outgoing ShowerParticles at the end of the final-state shower */ set<tShowerParticlePtr> _forward; /** * The incoming ShowerParticles at the end of the initial-state shower */ set<tShowerParticlePtr> _backward; /** * Was the hard matrix element correction applied */ bool _hardMECorrection; /** * Was this a scattering process or a decay */ bool _wasHard; /** * Map of colour lines used to reset colours when inserted into the event */ map<ColinePtr,ColinePtr> _colour; /** * Map of particles in this Tree which are the initial particles in other * trees */ map<tShowerTreePtr,pair<tShowerProgenitorPtr,tShowerParticlePtr> > _treelinks; /** * The parent tree */ tShowerTreePtr _parent; /** * Has this tree showered */ bool _hasShowered; /** * The transforms which still need to be applied */ LorentzRotation _transforms; private: /** * Copy of decay in shower from ShowerHandler */ static set<long> _decayInShower; /** * Check if a particle decays in the shower * @param id The PDG code for the particle */ static bool decaysInShower(long id) { return ( _decayInShower.find( abs(id) ) != _decayInShower.end() ); } }; } #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/Evolver.fh����������������������������������������������������������0000644�0001750�0001750�00000000443�11754474775�021063� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the Evolver class. // #ifndef HERWIG_Evolver_FH #define HERWIG_Evolver_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class Evolver; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::Evolver,EvolverPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerVeto.fh�������������������������������������������������������0000644�0001750�0001750�00000000465�11754474775�021552� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the ShowerVeto class. // #ifndef HERWIG_ShowerVeto_FH #define HERWIG_ShowerVeto_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ShowerVeto; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ShowerVeto,ShowerVetoPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerParticle.cc���������������������������������������������������0000644�0001750�0001750�00000001604�11754474775�022364� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerParticle.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ShowerParticle class. // #include "ShowerParticle.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; PPtr ShowerParticle::clone() const { return new_ptr(*this); } PPtr ShowerParticle::fullclone() const { return new_ptr(*this); } ClassDescription<ShowerParticle> ShowerParticle::initShowerParticle; // Definition of the static class description member. ����������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/Branching.h���������������������������������������������������������0000644�0001750�0001750�00000002440�11754474775�021165� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_Branching_H #define HERWIG_Branching_H // // This is the declaration of the Branching struct. // #include "Herwig++/Shower/ShowerConfig.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * The branching struct is used to store information on the branching. * The kinematics variable is a pointer to the ShowerKinematics for the branching * The sudakov variable is a pointer to the SudakovFormFactor for the branching * The ids variable is the list of particles in the branching */ struct Branching { /** * Pointer to the ShowerKinematics object for the branching */ ShoKinPtr kinematics; /** * PDG codes of the particles in the branching */ IdList ids; /** * The SudakovFormFactor for the branching */ tSudakovPtr sudakov; /** * Constructor for the struct * @param a pointer to the ShowerKinematics object for the branching * @param c PDG codes of the particles in the branching * @param d The SudakovFormFactor for the branching */ Branching(ShoKinPtr a, IdList c,tSudakovPtr d) : kinematics(a), ids(c), sudakov(d) {} /** * Default constructor */ Branching() {} }; } #endif /* HERWIG_Branching_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/SudakovFormFactor.fh������������������������������������������������0000644�0001750�0001750�00000000525�11754474775�023041� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the SudakovFormFactor class. // #ifndef HERWIG_SudakovFormFactor_FH #define HERWIG_SudakovFormFactor_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class SudakovFormFactor; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::SudakovFormFactor,SudakovPtr); } #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerKinematics.fh�������������������������������������������������0000644�0001750�0001750�00000000517�11754474775�022722� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the ShowerKinematics class. // #ifndef HERWIG_ShowerKinematics_FH #define HERWIG_ShowerKinematics_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ShowerKinematics; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ShowerKinematics,ShoKinPtr); } #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/HardBranching.cc����������������������������������������������������0000644�0001750�0001750�00000007300�11754474775�022122� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the HardTree class. // #include "HardBranching.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; void HardBranching::setMomenta(LorentzRotation R,double aparent, Lorentz5Momentum ptparent, bool setMomentum) { if(setMomentum) _original=R*_particle->momentum(); // compute the shower variables Energy2 dot = _n*_p; if(dot==ZERO) return; double alpha = (_original*_n)/dot; //set x for incoming partons if( status() == HardBranching::Incoming ) x_frac( alpha ); _z=alpha/aparent; double beta = ((_original*_p)-alpha*sqr(_p.mass()))/dot; _qt = _original - alpha*_p - beta*_n - _z*ptparent; _pt=sqrt(max(-_qt*_qt,ZERO)); // reconstruct children for(unsigned int ix=0;ix<_children.size();++ix) { _children[ix]->_p=_p; _children[ix]->_n=_n; _children[ix]->setMomenta( R, alpha, _qt + _z*ptparent, setMomentum); } // calculate the evolution scale and phi if(!_children.empty()) { IdList ids(3); ids[0]=_particle->id(); ids[1]=_children[0]->_particle->id(); ids[2]=_children[1]->_particle->id(); double z; Energy pt; Lorentz5Momentum vect; if( _status==Outgoing || ( (_status==Incoming || _status==Decay ) && _children[1]->_status == Outgoing ) ) { z = _children[0]->_z ; pt = _children[0]->_pt; vect=_children[0]->_qt; } else { z = _children[1]->_z ; pt = _children[1]->_pt; swap(ids[1],ids[2]); vect=_children[1]->_qt; } _scale=_sudakov->calculateScale(z,pt,ids,_status); // get the pt vector if(_status!=Decay) { Boost beta_bb = -(_p+ _n).boostVector(); Lorentz5Momentum p_bb = _p; vect.boost(beta_bb); p_bb.boost( beta_bb ); Axis axis(p_bb.vect().unit()); LorentzRotation rot; if(axis.perp2()>0.) { double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); rot.setRotate(-acos(axis.z()), Axis(-axis.y()/sinth,axis.x()/sinth,0.)); vect.transform(rot); } else if(axis.z()<0.) { vect.setZ(vect.z()); } _phi= atan2(vect.y(),vect.x()); if(_phi<0.) _phi+=Constants::twopi; } else { const Boost beta_bb = -pVector().boostVector(); Lorentz5Momentum p_bb = pVector(); Lorentz5Momentum n_bb = nVector(); p_bb.boost( beta_bb ); n_bb.boost( beta_bb ); vect.boost( beta_bb); Axis axis(n_bb.vect().unit()); LorentzRotation rot; if(axis.perp2()>0.) { double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); rot.setRotate(-acos(axis.z()), Axis(-axis.y()/sinth,axis.x()/sinth,0.)); vect.transform(rot); } else if(axis.z()<0.) { vect.setZ(vect.z()); } _phi= atan2(vect.y(),vect.x()); if(_phi<0) _phi+=Constants::twopi; } } } HardBranching::HardBranching(ShowerParticlePtr particle, SudakovPtr sudakov, tHardBranchingPtr parent,Status status) : _particle(particle), _original(), _p(particle->momentum()), _n(), _qt(), _shower(particle->momentum()), _pt(ZERO), _x_frac(0.), _status(status), _scale(ZERO), _z(0.),_phi(0.), _parent(parent), _sudakov(sudakov) {} void HardBranching::fixColours() { if(_status!=Incoming && !_sudakov) return; if(_status==Outgoing && _children.empty()) return; if(_status==Incoming && !_parent) return; if(_status==Incoming) _parent->sudakov()->splittingFn()-> colourConnection(_parent->_particle,_particle, _parent->children()[1]->_particle,true); else _sudakov->splittingFn()-> colourConnection(_particle,_children[0]->_particle, _children[1]->_particle,false); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerTree.fh�������������������������������������������������������0000644�0001750�0001750�00000000465�11754474775�021534� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the ShowerTree class. // #ifndef HERWIG_ShowerTree_FH #define HERWIG_ShowerTree_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ShowerTree; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ShowerTree,ShowerTreePtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/Makefile.am���������������������������������������������������������0000644�0001750�0001750�00000000570�11754474775�021157� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������## libHwShowerBase.la will go into HwShower.so noinst_LTLIBRARIES = libHwShowerBase.la libHwShowerBase_la_SOURCES = \ KinematicsReconstructor.cc KinematicsReconstructor.h KinematicsReconstructor.fh \ ShowerModel.cc ShowerModel.h ShowerModel.fh \ PartnerFinder.h PartnerFinder.fh PartnerFinder.cc \ Evolver.h Evolver.fh Evolver.cc \ ShowerVeto.h ShowerVeto.fh ShowerVeto.cc ����������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerModel.fh������������������������������������������������������0000644�0001750�0001750�00000000473�11754474775�021674� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the ShowerModel class. // #ifndef HERWIG_ShowerModel_FH #define HERWIG_ShowerModel_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ShowerModel; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ShowerModel,ShowerModelPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/HardBranching.fh����������������������������������������������������0000644�0001750�0001750�00000000507�11754474775�022134� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the HardBranching class. // #ifndef HERWIG_HardBranching_FH #define HERWIG_HardBranching_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class HardBranching; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::HardBranching,HardBranchingPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/Evolver.h�����������������������������������������������������������0000644�0001750�0001750�00000041275�11754474775�020725� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Evolver.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_Evolver_H #define HERWIG_Evolver_H // // This is the declaration of the Evolver class. // #include "ThePEG/Interface/Interfaced.h" #include "Herwig++/Shower/SplittingFunctions/SplittingGenerator.h" #include "ShowerModel.h" #include "ThePEG/PDF/BeamParticleData.h" #include "ShowerTree.h" #include "ShowerProgenitor.fh" #include "Herwig++/Shower/ShowerHandler.fh" #include "Branching.h" #include "ShowerVeto.h" #include "HardTree.h" #include "ThePEG/Handlers/XComb.h" #include "Evolver.fh" #include "Herwig++/MatrixElement/HwMEBase.h" #include "Herwig++/Decay/HwDecayerBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * The Evolver class class performs the sohwer evolution of hard scattering * and decay processes in Herwig++. * * @see \ref EvolverInterfaces "The interfaces" * defined for Evolver. */ class Evolver: public Interfaced { /** * The ShowerHandler is a friend to set some parameters at initialisation */ friend class ShowerHandler; public: /** * Pointer to an XComb object */ typedef Ptr<XComb>::pointer XCPtr; public: /** * Default Constructor */ Evolver() : _maxtry(100), _meCorrMode(1), _hardVetoMode(1), _hardVetoRead(0), _reconOpt(0), _hardVetoReadOption(false), _iptrms(ZERO), _beta(0.), _gamma(ZERO), _iptmax(), _limitEmissions(0), _initialenhance(1.), _finalenhance(1.), _hardonly(false), _trunc_Mode(true), _hardEmissionMode(0), _colourEvolutionMethod(0) {} /** * Members to perform the shower */ //@{ /** * Perform the shower of the hard process */ virtual void showerHardProcess(ShowerTreePtr,XCPtr); /** * Perform the shower of a decay */ virtual void showerDecay(ShowerTreePtr); //@} /** * Access to the flags and shower variables */ //@{ /** * Is there any showering switched on */ bool showeringON() const { return isISRadiationON() || isFSRadiationON(); } /** * It returns true/false if the initial-state radiation is on/off. */ bool isISRadiationON() const { return _splittingGenerator->isISRadiationON(); } /** * It returns true/false if the final-state radiation is on/off. */ bool isFSRadiationON() const { return _splittingGenerator->isFSRadiationON(); } /** * Get the ShowerModel */ ShowerModelPtr showerModel() const {return _model;} /** * Get the SplittingGenerator */ tSplittingGeneratorPtr splittingGenerator() const { return _splittingGenerator; } //@} /** * Connect the Hard and Shower trees */ virtual void connectTrees(ShowerTreePtr showerTree, HardTreePtr hardTree, bool hard )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(); protected: /** * Generate the hard matrix element correction */ virtual void hardMatrixElementCorrection(bool); /** * Generate the hardest emission */ virtual void hardestEmission(bool hard); /** * Extract the particles to be showered, set the evolution scales * and apply the hard matrix element correction * @param hard Whether this is a hard process or decay * @return The particles to be showered */ virtual vector<ShowerProgenitorPtr> setupShower(bool hard); /** * set the colour partners */ virtual void setEvolutionPartners(bool hard,ShowerInteraction::Type); /** * Methods to perform the evolution of an individual particle, including * recursive calling on the products */ //@{ /** * It does the forward evolution of the time-like input particle * (and recursively for all its radiation products). * accepting only emissions which conforms to the showerVariables * and soft matrix element correction. * If at least one emission has occurred then the method returns true. * @param particle The particle to be showered */ virtual bool timeLikeShower(tShowerParticlePtr particle, ShowerInteraction::Type, bool first); /** * It does the backward evolution of the space-like input particle * (and recursively for all its time-like radiation products). * accepting only emissions which conforms to the showerVariables. * If at least one emission has occurred then the method returns true * @param particle The particle to be showered * @param beam The beam particle */ virtual bool spaceLikeShower(tShowerParticlePtr particle,PPtr beam, ShowerInteraction::Type); /** * If does the forward evolution of the input on-shell particle * involved in a decay * (and recursively for all its time-like radiation products). * accepting only emissions which conforms to the showerVariables. * @param particle The particle to be showered * @param maxscale The maximum scale for the shower. * @param minimumMass The minimum mass of the final-state system */ virtual bool spaceLikeDecayShower(tShowerParticlePtr particle, Energy maxscale, Energy minimumMass, ShowerInteraction::Type); /** * Truncated shower from a time-like particle */ virtual bool truncatedTimeLikeShower(tShowerParticlePtr particle, HardBranchingPtr branch, ShowerInteraction::Type type); /** * Truncated shower from a space-like particle */ virtual bool truncatedSpaceLikeShower(tShowerParticlePtr particle,PPtr beam, HardBranchingPtr branch, ShowerInteraction::Type type); /** * Truncated shower from a time-like particle */ virtual bool truncatedSpaceLikeDecayShower(tShowerParticlePtr particle, Energy maxscale, Energy minimumMass, HardBranchingPtr branch, ShowerInteraction::Type type); //@} /** * Switches for matrix element corrections */ //@{ /** * Any ME correction? */ bool MECOn() const { return _meCorrMode > 0 && _hardEmissionMode==0; } /** * Any hard ME correction? */ bool hardMEC() const { return (_meCorrMode == 1 || _meCorrMode == 2) && _hardEmissionMode==0; } /** * Any soft ME correction? */ bool softMEC() const { return (_meCorrMode == 1 || _meCorrMode > 2) && _hardEmissionMode==0; } //@} /** * Is the truncated shower on? */ bool isTruncatedShowerON() const {return _trunc_Mode;} /** * Switch for intrinsic pT */ //@{ /** * Any intrinsic pT? */ bool ipTon() const { return _iptrms != ZERO || ( _beta == 1.0 && _gamma != ZERO && _iptmax !=ZERO ); } //@} /**@name Additional shower vetoes */ //@{ /** * Insert a veto. */ void addVeto (ShowerVetoPtr v) { _vetoes.push_back(v); } /** * Remove a veto. */ void removeVeto (ShowerVetoPtr v) { vector<ShowerVetoPtr>::iterator vit = find(_vetoes.begin(),_vetoes.end(),v); if (vit != _vetoes.end()) _vetoes.erase(vit); } //@} /** * Switches for vetoing hard emissions */ //@{ /** * Vetos on? */ bool hardVetoOn() const { return _hardVetoMode > 0; } /** * veto hard emissions in IS shower? */ bool hardVetoIS() const { return _hardVetoMode == 1 || _hardVetoMode == 2; } /** * veto hard emissions in FS shower? */ bool hardVetoFS() const { return _hardVetoMode == 1 || _hardVetoMode > 2; } /** * veto hard emissions according to lastScale from XComb? */ bool hardVetoXComb() const {return (_hardVetoRead == 1);} /** * Returns true if the hard veto read-in is to be applied to only * the primary collision and false otherwise. */ bool hardVetoReadOption() const {return _hardVetoReadOption;} //@} /** * Enhancement factors for radiation needed to generate the soft matrix * element correction. */ //@{ /** * Access the enhancement factor for initial-state radiation */ double initialStateRadiationEnhancementFactor() const { return _initialenhance; } /** * Access the enhancement factor for final-state radiation */ double finalStateRadiationEnhancementFactor() const { return _finalenhance; } /** * Set the enhancement factor for initial-state radiation */ void initialStateRadiationEnhancementFactor(double in) { _initialenhance=in; } /** * Set the enhancement factor for final-state radiation */ void finalStateRadiationEnhancementFactor(double in) { _finalenhance=in; } //@} /** * Access to set/get the HardTree currently beinging showered */ //@{ /** * The HardTree currently being showered */ tHardTreePtr hardTree() {return _hardtree;} /** * The HardTree currently being showered */ void hardTree(tHardTreePtr in) {_hardtree = in;} //@} /** * Access/set the beam particle for the current initial-state shower */ //@{ /** * Get the beam particle data */ Ptr<BeamParticleData>::const_pointer beamParticle() const { return _beam; } /** * Set the beam particle data */ void setBeamParticle(Ptr<BeamParticleData>::const_pointer in) { _beam=in; } //@} /** * Set/Get the current tree being evolverd for inheriting classes */ //@{ /** * Get the tree */ tShowerTreePtr currentTree() { return _currenttree; } /** * Set the tree */ void currentTree(tShowerTreePtr tree) { _currenttree=tree; } //@} /** * Access the maximum number of attempts to generate the shower */ unsigned int maximumTries() const { return _maxtry; } /** * Set/Get the ShowerProgenitor for the current shower */ //@{ /** * Access the progenitor */ ShowerProgenitorPtr progenitor() { return _progenitor; } /** * Set the progenitor */ void progenitor(ShowerProgenitorPtr in) { _progenitor=in; } //@} /** * Calculate the intrinsic \f$p_T\f$. */ virtual void generateIntrinsicpT(vector<ShowerProgenitorPtr>); /** * Access to the intrinsic \f$p_T\f$ for inheriting classes */ map<tShowerProgenitorPtr,pair<Energy,double> > & intrinsicpT() { return _intrinsic; } /** * find the maximally allowed pt acc to the hard process. */ void setupMaximumScales(ShowerTreePtr, vector<ShowerProgenitorPtr>); protected: /** * Start the shower of a timelike particle */ virtual bool startTimeLikeShower(ShowerInteraction::Type); /** * Update of the time-like stuff */ void updateHistory(tShowerParticlePtr particle); /** * Start the shower of a spacelike particle */ virtual bool startSpaceLikeShower(PPtr,ShowerInteraction::Type); /** * Start the shower of a spacelike particle */ virtual bool startSpaceLikeDecayShower(Energy maxscale,Energy minimumMass, ShowerInteraction::Type); /** * Vetos for the timelike shower */ virtual bool timeLikeVetoed(const Branching &,ShowerParticlePtr); /** * Vetos for the spacelike shower */ virtual bool spaceLikeVetoed(const Branching &,ShowerParticlePtr); /** * Vetos for the spacelike shower */ virtual bool spaceLikeDecayVetoed(const Branching &,ShowerParticlePtr); /** * Only generate the hard emission, for testing only. */ bool hardOnly() const {return _hardonly;} 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: /** * Get the octet -> octet octet reduction factor. */ double getReductionFactor(tShowerParticlePtr particle); /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<Evolver> initEvolver; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Evolver & operator=(const Evolver &); private: /** * Pointer to the model for the shower evolution model */ ShowerModelPtr _model; /** * Pointer to the splitting generator */ SplittingGeneratorPtr _splittingGenerator; /** * Maximum number of tries to generate the shower of a particular tree */ unsigned int _maxtry; /** * Matrix element correction switch */ unsigned int _meCorrMode; /** * Hard emission veto switch */ unsigned int _hardVetoMode; /** * Hard veto to be read switch */ unsigned int _hardVetoRead; /** * Control of the reconstruction option */ unsigned int _reconOpt; /** * If hard veto pT scale is being read-in this determines * whether the read-in value is applied to primary and * secondary (MPI) scatters or just the primary one, with * the usual computation of the veto being performed for * the secondary (MPI) scatters. */ bool _hardVetoReadOption; /** * rms intrinsic pT of Gaussian distribution */ Energy _iptrms; /** * Proportion of inverse quadratic intrinsic pT distribution */ double _beta; /** * Parameter for inverse quadratic: 2*Beta*Gamma/(sqr(Gamma)+sqr(intrinsicpT)) */ Energy _gamma; /** * Upper bound on intrinsic pT for inverse quadratic */ Energy _iptmax; /** * Limit the number of emissions for testing */ unsigned int _limitEmissions; /** * The progenitor of the current shower */ ShowerProgenitorPtr _progenitor; /** * Matrix element */ HwMEBasePtr _hardme; /** * Decayer */ HwDecayerBasePtr _decayme; /** * The ShowerTree currently being showered */ ShowerTreePtr _currenttree; /** * The HardTree currently being showered */ HardTreePtr _hardtree; /** * Radiation enhancement factors for use with the veto algorithm * if needed by the soft matrix element correction */ //@{ /** * Enhancement factor for initial-state radiation */ double _initialenhance; /** * Enhancement factor for final-state radiation */ double _finalenhance; //@} /** * The beam particle data for the current initial-state shower */ Ptr<BeamParticleData>::const_pointer _beam; /** * Storage of the intrinsic \f$p_t\f$ of the particles */ map<tShowerProgenitorPtr,pair<Energy,double> > _intrinsic; /** * Vetoes */ vector<ShowerVetoPtr> _vetoes; /** * number of IS emissions */ unsigned int _nis; /** * Number of FS emissions */ unsigned int _nfs; /** * Only generate the emission from the hardest emission * generate for testing only */ bool _hardonly; /** * Truncated shower switch */ bool _trunc_Mode; /** * Count of the number of truncated emissions */ unsigned int _truncEmissions; /** * Mode for the hard emissions */ unsigned int _hardEmissionMode; /** * Colour evolution method */ int _colourEvolutionMethod; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Evolver. */ template <> struct BaseClassTrait<Herwig::Evolver,1> { /** Typedef of the first base class of Evolver. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the Evolver class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::Evolver> : public ClassTraitsBase<Herwig::Evolver> { /** Return a platform-independent class name */ static string className() { return "Herwig::Evolver"; } /** * The name of a file containing the dynamic library where the class * Evolver is implemented. It may also include several, space-separated, * libraries if the class Evolver depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_Evolver_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/PartnerFinder.h�����������������������������������������������������0000644�0001750�0001750�00000015776�11754474775�022055� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PartnerFinder.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PartnerFinder_H #define HERWIG_PartnerFinder_H // // This is the declaration of the PartnerFinder class. // #include "Herwig++/Shower/ShowerConfig.h" #include "ThePEG/Interface/Interfaced.h" #include "Evolver.fh" #include "PartnerFinder.fh" namespace Herwig { using namespace ThePEG; /** * typedef of a pair of particle for calculating the evolution scales */ typedef pair<tShowerParticlePtr,tShowerParticlePtr> ShowerPPair; /** \ingroup Shower * * This class is responsible of two related tasks: * - it finds the partners * - for each pair of partners (and interaction therefore) * it sets the initial evolution scales of both of them. * * In general the finding of the partners is performed by this class but * the calculation of the initial evolution scales should be implemented * for different shower evolution models in classes inheriting from this one. * Notice that a given particle has, in general, a different partner * for each different interaction; however, given a partner, its * initial evolution scale, Q, is purely a kinematical relationship * between the pair, without dependence on the dynamics (i.e. type of interaction). * * @see \ref PartnerFinderInterfaces "The interfaces" * defined for PartnerFinder. */ class PartnerFinder: public Interfaced { public: /** * The default constructor. */ PartnerFinder() : _approach(0), _partnerMethod(0) {} /** * Given in input a collection of particles (ShowerParticle objects), * each of these methods set the initial evolution scales of those particles, * between the ones given in input, that do not have yet their * evolution scale set. * The input collection of particles can be either the full collection of * showering particles (kept in the main class ShowerHandler, * in the case isDecayCase is false, or simply, in the case isDecayCase * is true, the decaying particle and its decay products. * The methods returns true, unless something wrong (inconsistencies, * or undefined values) happens. * * These methods are virtual but in most cases inheriting classes should not * need to overide them as they simply find the relevant partner and call * one of the calculateScale members to calculate the scale. */ //@{ /** * Set the initial scales * @param particles The particles to be considered * @param isDecayCase Whether or not this is a decay * @param setPartners Whether to set the colour partners or just the scales */ virtual bool setInitialEvolutionScales(const ShowerParticleVector &particles, const bool isDecayCase, ShowerInteraction::Type, const bool setPartners=true); //@} 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: /** * Members to set the scales for different interactions */ //@{ /** * Set initial scales for a QCD interaction */ virtual bool setInitialQCDEvolutionScales(const ShowerParticleVector &particles, const bool isDecayCase, const bool setPartners=true); //@} /** * Given a pair of particles, supposedly partners w.r.t. an interaction, * this method returns their initial evolution scales as a pair. * If something wrong happens, it returns the null (ZERO,ZERO) pair. * This method is used by the above setXXXInitialEvolutionScales * methods. * These methods must be overiden in inheriting classes */ //@{ /** * General method to calculate the initial evolution scales */ virtual pair<Energy,Energy> calculateInitialEvolutionScales(const ShowerPPair &, const bool isDecayCase); /** * Calculate the initial evolution scales for two final-state particles */ virtual pair<Energy,Energy> calculateFinalFinalScales(const ShowerPPair &)=0; /** * Calculate the initial evolution scales for two initial-state particles */ virtual pair<Energy,Energy> calculateInitialInitialScales(const ShowerPPair &)=0; /** * Calculate the initial evolution scales for one initial * and one final-state particles */ virtual pair<Energy,Energy> calculateInitialFinalScales(const ShowerPPair &, const bool isDecayCase)=0; //@} /** * The approach for the colour partners */ bool approach() const {return _approach;} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static AbstractClassDescription<PartnerFinder> initPartnerFinder; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ PartnerFinder & operator=(const PartnerFinder &); private: /** * Approach to use for setting the colour partners in the random approach */ int _approach; /** * Method for choosing colour partner */ int _partnerMethod; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of PartnerFinder. */ template <> struct BaseClassTrait<Herwig::PartnerFinder,1> { /** Typedef of the first base class of PartnerFinder. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the PartnerFinder class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::PartnerFinder> : public ClassTraitsBase<Herwig::PartnerFinder> { /** Return a platform-independent class name */ static string className() { return "Herwig::PartnerFinder"; } /** * The name of a file containing the dynamic library where the class * PartnerFinder is implemented. It may also include several, space-separated, * libraries if the class PartnerFinder depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_PartnerFinder_H */ ��herwig++-2.6.0.orig/Shower/Base/HardTree.fh���������������������������������������������������������0000644�0001750�0001750�00000000463�11754474775�021141� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the HardTree class. // #ifndef HERWIG_HardTree_FH #define HERWIG_HardTree_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class HardTree; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::HardTree ,HardTreePtr ); } #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/HardTree.h����������������������������������������������������������0000644�0001750�0001750�00000005152�11754474775�020773� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_HardTree_H #define HERWIG_HardTree_H // // This is the declaration of the HardTree class. // #include "ThePEG/Config/ThePEG.h" #include "Herwig++/Shower/Base/ShowerProgenitor.h" #include "Herwig++/Shower/Base/ShowerTree.h" #include "Herwig++/Shower/Base/SudakovFormFactor.h" #include "HardBranching.h" #include "HardTree.fh" namespace Herwig { using namespace ThePEG; /** * The HardTree class is designed to contain the information required * to implement the POWHEG approach for Monte Carlo at next-to-leading order. */ class HardTree : public Base { /** * Output operator for testing */ friend ostream & operator << (ostream &, const HardTree & ); public: /** * The default constructor. */ HardTree(vector<HardBranchingPtr>, vector<HardBranchingPtr>, ShowerInteraction::Type); /** * Match particles in the ShowerTree to branchings in the HardTree */ bool connect(ShowerParticlePtr particle, HardBranchingPtr branching) { if(branchings_.find(branching)==branchings_.end()) return false; particles_[particle]=branching; return true; } /** * Match the prticles in the ShowerTree to the branchings in the HardTree */ bool connect(ShowerTreePtr); /** * Access the map between the ShowerParticle and the HardBranching */ map<ShowerParticlePtr,tHardBranchingPtr> & particles() {return particles_;} /** * Access the set of branchings */ set<HardBranchingPtr> & branchings() {return branchings_;} /** * Access the incoming branchings */ set<HardBranchingPtr> & incoming() {return spacelike_;} /** * Type of interaction */ ShowerInteraction::Type interaction() {return interaction_;} /** * Get the Rotation to be applied to the tree */ LorentzRotation showerRot() { return showerRot_; } /** * Set the Rotation to be applied to the tree */ void showerRot( LorentzRotation r ) { showerRot_ = r; } private: /** * Type of interaction */ ShowerInteraction::Type interaction_; /** * The ShowerTree */ ShowerTreePtr _tree; /** * Map from the particles in the ShowerTree to the HardBranchings */ map<ShowerParticlePtr,tHardBranchingPtr> particles_; /** * The HardBranchings in the hard process */ set<HardBranchingPtr> branchings_; /** * The HardBranchings which initiate the space-like showers */ set<HardBranchingPtr> spacelike_; /** * Rotation to shower frame */ LorentzRotation showerRot_; }; /** * Output operator for testing */ ostream & operator << (ostream &, const HardTree & ); } #endif /* HERWIG_HardTree_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/KinematicsReconstructor.fh������������������������������������������0000644�0001750�0001750�00000000603�11754474775�024323� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the KinematicsReconstructor class. // #ifndef HERWIG_KinematicsReconstructor_FH #define HERWIG_KinematicsReconstructor_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class KinematicsReconstructor; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::KinematicsReconstructor,KinematicsReconstructorPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerKinematics.h��������������������������������������������������0000644�0001750�0001750�00000022411�11754474775�022551� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ShowerKinematics_H #define HERWIG_ShowerKinematics_H // // This is the declaration of the ShowerKinematics class. // #include "Herwig++/Shower/ShowerConfig.h" #include "ThePEG/Config/ThePEG.h" #include "Herwig++/Shower/Base/SudakovFormFactor.h" #include "ShowerKinematics.fh" namespace Herwig { using namespace ThePEG; /**\ingroup Shower * * This is the abstract base class from which all other shower * kinematics classes derive. The main purpose of the * shower kinematics classes is to allow the reconstruction * of jet masses, at the end of the showering (indeed, for * multi-scale showering, at the end of each scale-range evolution). * This is necessary for the kinematics reshuffling * in order to compensate the recoil of the emissions. * The KinematicsReconstructor class is in * charge of this job, and which is the main "user" of * ShowerKinematics and its derived classes. * How this is done depends on the choice of kinematics variables * and whether the jet is time-like (forward evolved) or * space-like (backward evolved), whereas the class ShowerKinematics * describes only the common features which are independent by them. * * In general there are a number of methods specific to a shower approach * * @see KinematicsReconstructor */ class ShowerKinematics: public Base { public: /** * The default constructor. */ ShowerKinematics() : Base(), _isTheJetStartingPoint( false ), _scale(), _z( 0.0 ), _phi( 0.0 ), _pt(), _sudakov() {} /** * The updateChildren and updateParent * members to update the values of the \f$\alpha\f$ and * \f$p_\perp\f$ variables during the shower evolution. */ //@{ /** * Along with the showering evolution --- going forward for * time-like (forward) evolution, and going backward for space-like * (backward) evolution --- the kinematical variables of the * branching products are calculated and updated from the knowledge * of the parent kinematics. * @param theParent The parent * @param theChildren The children * @param angularOrder Whether or not to apply angular ordering */ virtual void updateChildren(const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren, bool angularOrder) const; virtual void resetChildren( const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren) const; /** * Update the parent Kinematics from the knowledge of the kinematics * of the children. This method will be used by the KinematicsReconstructor. * @param theParent The parent * @param theChildren The children * @param angularOrder Whether or not to apply angular ordering */ virtual void updateParent(const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren, bool angularOrder) const; /** * Update the kinematical data of a particle when a reconstruction * fixpoint was found. This will highly depend on the kind of * kinematics chosen and will be defined in the inherited concrete * classes. This method will be used by the KinematicsReconstructor. * @param theLast The particle. * @param px The \f$x\f$ component of the \f$p_T\f$. * @param py The \f$y\f$ component of the \f$p_T\f$. */ virtual void updateLast(const tShowerParticlePtr theLast, Energy px, Energy py) const; //@} /** * The reconstructLast, reconstructChildren and reconstructParent members * are used during the reconstruction */ //@{ /** * Along with the showering evolution --- going forward for * time-like (forward) evolution, and going backward for space-like * (backward) evolution --- the kinematical variables of the * branching products are calculated and updated from the knowledge * of the parent kinematics. * @param theParent The parent * @param theChildren The children */ virtual void reconstructChildren(const tShowerParticlePtr theParent, const ShowerParticleVector & theChildren) const; /** * Reconstruct the parent Kinematics from the knowledge of the kinematics * of the children. This method will be used by the KinematicsReconstructor. * @param theParent The parent * @param theChildren The children */ virtual void reconstructParent(const tShowerParticlePtr theParent, const ParticleVector & theChildren) const; /** * Update the kinematical data of a particle when a reconstruction * fixpoint was found. This will highly depend on the kind of * kinematics chosen and will be defined in the inherited concrete * classes. This method will be used by the KinematicsReconstructor. * @param theLast The particle. * @param iopt The option for the momentum reconstruction * - 0 is in the rest frame of the pair of reference vectors * - 1 is in the rest frame of the p vector * @param mass The mass to be used, if less than zero on-shell */ virtual void reconstructLast(const tShowerParticlePtr theLast, unsigned int iopt, Energy mass=-1.*GeV) const; /** * Perform any initial calculations needed after the branching has been selected * @param particle The branching particle * @param parent The bema particle for the jet if needed */ virtual void initialize(ShowerParticle & particle,PPtr parent); //@} public: /** * Set/access the flag that tells whether or not this ShowerKinematics * object is associated to the starting particle of the jet: only in this * case it is sensible to use the two main virtual methods below. */ //@{ /** * Set the starting point flag */ void isTheJetStartingPoint(const bool ); /** * Get the starting point flag */ bool isTheJetStartingPoint() const; //@} /** * Virtual function to return a set of basis vectors, specific to * the type of evolution. This function will be used by the * ForwardShowerEvolver in order to access \f$p\f$ and \f$n\f$, * which in turn are members of the concrete class QTildeShowerKinematics1to2. */ virtual vector<Lorentz5Momentum> getBasis() const = 0; /** * Set/Get methods for the kinematic variables */ //@{ /** * Access the scale of the splitting. */ Energy scale() const { return _scale; } /** * Set the scale of the splitting. */ void scale(const Energy in) { _scale=in; } /** * Access the energy fraction, \f$z\f$. */ double z() const { return _z; } /** * Set the energy fraction, \f$z\f$. */ void z(const double in) { _z=in; } /** * Access the azimuthal angle, \f$\phi\f$. */ double phi() const { return _phi; } /** * Set the azimuthal angle, \f$\phi\f$. */ void phi(const double in) { _phi=in; } /** * Access the relative \f$p_T\f$ for the branching */ Energy pT() const { return _pt; } /** * Set the relative \f$p_T\f$ for the branching */ void pT(const Energy in) const { _pt=in; } //@} /** * Set and get methods for the SplittingFunction object */ //@{ /** * Access the SplittingFunction object responsible of the * eventual branching of this particle. */ tSplittingFnPtr splittingFn() const { return _sudakov-> splittingFn(); } //@} /** * Set and get methods for the SudakovFormFactor object */ /** * Access the SudakovFormFactor object responsible of the * eventual branching of this particle. */ tSudakovPtr SudakovFormFactor() const { return _sudakov; } /** * Set the SudakovFormFactor object responsible of the * eventual branching of this particle. */ void SudakovFormFactor(const tSudakovPtr sud) { _sudakov=sud; } //@} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ShowerKinematics & operator=(const ShowerKinematics &); private: /** * Is this the starting point of the jet */ bool _isTheJetStartingPoint; /** * The \f$\tilde{q}\f$ evolution variable. */ Energy _scale; /** * The energy fraction, \f$z\f$ */ double _z; /** * The azimuthal angle, \f$\phi\f$. */ double _phi; /** * The relative \f$p_T\f$ */ mutable Energy _pt; /** * The splitting function for the branching of the particle */ tSudakovPtr _sudakov; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ShowerKinematics. */ template <> struct BaseClassTrait<Herwig::ShowerKinematics,1> { /** Typedef of the first base class of ShowerKinematics. */ typedef Base NthBase; }; /** This template specialization informs ThePEG about the name of * the ShowerKinematics class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ShowerKinematics> : public ClassTraitsBase<Herwig::ShowerKinematics> { /** Return a platform-independent class name */ static string className() { return "Herwig::ShowerKinematics"; } }; /** @endcond */ } #endif /* HERWIG_ShowerKinematics_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/HardTree.cc���������������������������������������������������������0000644�0001750�0001750�00000011056�11754474775�021131� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the HardTree class. // #include "HardTree.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; HardTree::HardTree(vector<HardBranchingPtr> branchings, vector<HardBranchingPtr> spacelike, ShowerInteraction::Type type) : interaction_(type), branchings_(branchings.begin(),branchings.end()), spacelike_ (spacelike .begin(),spacelike .end()) {} bool HardTree::connect(ShowerTreePtr shower) { particles_.clear(); // extract the progenitors from the ShowerTree vector<ShowerProgenitorPtr> progenitors = shower->extractProgenitors(); // KMH - 120809 - Added boolean vector to hold on to which progenitors have // already been connected to a branching. If connectedProgenitors[ix] = true // it means progenitors[ix] was already connected to something and so it is // skipped in the loop over progenitors. This guards against the possiblility // of using the same progenitor twice. This can, wrongly, cause events to fail. // This was noticed at a rate of around 1 event in 20 for Powheg ZZ production // - both Z's would sometimes get associated with the same progenitor. There // is still no doubt room for further improvement but using this bool vector // already seemed like a good start. vector<bool> connectedProgenitors(progenitors.size(),false); // connect the trees up for( set<HardBranchingPtr>::iterator it = branchings().begin(); it != branchings().end(); ++it) { Energy2 dmin( 1e30*GeV2 ); tShowerParticlePtr partner; unsigned int progenitorsIndex(999); for( unsigned int ix = 0; ix < progenitors.size(); ++ix ) { if( connectedProgenitors[ix] ) continue; if( (**it).branchingParticle()->id() != progenitors[ix]->progenitor()->id() ) continue; if( (**it).branchingParticle()->isFinalState() != progenitors[ix]->progenitor()->isFinalState() ) continue; Energy2 dtest = sqr( progenitors[ix]->progenitor()->momentum().x() - (**it).showerMomentum().x() ) + sqr( progenitors[ix]->progenitor()->momentum().y() - (**it).showerMomentum().y() ) + sqr( progenitors[ix]->progenitor()->momentum().z() - (**it).showerMomentum().z() ) + sqr( progenitors[ix]->progenitor()->momentum().t() - (**it).showerMomentum().t() ); if( dtest < dmin ) { partner = progenitors[ix]->progenitor(); progenitorsIndex = ix; dmin = dtest; } } if( !partner ) return false; connectedProgenitors[progenitorsIndex] = true; connect( partner, *it ); if( (**it).status() == HardBranching::Incoming ) { double z( (**it).z() ); tHardBranchingPtr parent = (**it).parent(); while (parent) { z *= parent->z(); parent = parent->parent(); } partner->x(z); } } assert( particles().size() == progenitors.size() ); return true; } ostream & Herwig::operator<<(ostream & os, const HardTree & x) { os << "Output of HardTree " << &x << "\n"; for(set<HardBranchingPtr>::const_iterator it=x.branchings_.begin(); it!=x.branchings_.end();++it) { os << "Hard Particle: " << *(**it).branchingParticle() << " has Sudakov " << (**it).sudakov() << " pT = " << (**it).pT()/GeV << " scale = " << (**it).scale()/GeV << "\n"; os << "It's colour lines are " << (**it).branchingParticle()->colourLine() << "\t" << (**it).branchingParticle()->antiColourLine() << "\n"; for(unsigned int iy=0;iy<(**it).children().size();++iy) { os << "\t Children : " << *(**it).children()[iy]->branchingParticle() << "\n"; os << "It's colour lines are " << (**it).children()[iy]->branchingParticle()->colourLine() << "\t" << (**it).children()[iy]->branchingParticle()->antiColourLine() << "\n"; } } for(set<HardBranchingPtr>::const_iterator it=x.spacelike_.begin(); it!=x.spacelike_.end();++it) { os << "SpaceLike: " << *(**it).branchingParticle() << " has Sudakov" << (**it).sudakov() << " pT = " << (**it).pT()/GeV << " scale = " << (**it).scale()/GeV << "\n"; os << "It's colour lines are " << (**it).branchingParticle()->colourLine() << "\t" << (**it).branchingParticle()->antiColourLine() << "\n"; for(unsigned int iy=0;iy<(**it).children().size();++iy) { os << "\t Children: " << *(**it).children()[iy]->branchingParticle() << "\n"; os << "It's colour lines are " << (**it).children()[iy]->branchingParticle()->colourLine() << "\t" << (**it).children()[iy]->branchingParticle()->antiColourLine() << "\n"; } } return os; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerKinematics.cc�������������������������������������������������0000644�0001750�0001750�00000005141�11754474775�022710� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ShowerKinematics class. // #include "ShowerKinematics.h" using namespace Herwig; void ShowerKinematics::updateChildren(const tShowerParticlePtr, const ShowerParticleVector &, bool ) const { throw Exception() << "Base class ShowerKinematics::updateChildren called," << " should have been overriden in an inheriting class" << Exception::runerror; } void ShowerKinematics::resetChildren(const tShowerParticlePtr, const ShowerParticleVector &) const { throw Exception() << "Base class ShowerKinematics::resetChildren called," << " should have been overriden in an inheriting class" << Exception::runerror; } void ShowerKinematics::updateParent(const tShowerParticlePtr, const ShowerParticleVector &, bool) const { throw Exception() << "Base class ShowerKinematics::updateParent called," << " should have been overriden in an inheriting class" << Exception::runerror; } void ShowerKinematics::reconstructChildren(const tShowerParticlePtr, const ShowerParticleVector &) const { throw Exception() << "Base class ShowerKinematics::reconstructChildren called," << " should have been overriden in an inheriting class" << Exception::runerror; } void ShowerKinematics::reconstructParent(const tShowerParticlePtr, const ParticleVector &) const { throw Exception() << "Base class ShowerKinematics::reconstructParent called," << " should have been overriden in an inheriting class" << Exception::runerror; } void ShowerKinematics::reconstructLast(const tShowerParticlePtr, unsigned int,Energy) const { throw Exception() << "Base class ShowerKinematics::reconstructLast called," << " should have been overriden in an inheriting class" << Exception::runerror; } void ShowerKinematics::updateLast(const tShowerParticlePtr, Energy,Energy) const { throw Exception() << "Base class ShowerKinematics::updatetLast called," << " should have been overriden in an inheriting class" << Exception::runerror; } void ShowerKinematics::initialize(ShowerParticle &,PPtr) { throw Exception() << "Base class ShowerKinematics::initialize called " << Exception::runerror; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/KinematicsReconstructor.cc������������������������������������������0000644�0001750�0001750�00000002025�11754474775�024313� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // KinematicsReconstructor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the KinematicsReconstructor class. // #include "KinematicsReconstructor.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace Herwig; AbstractNoPIOClassDescription<KinematicsReconstructor> KinematicsReconstructor::initKinematicsReconstructor; // Definition of the static class description member. void KinematicsReconstructor::Init() { static ClassDocumentation<KinematicsReconstructor> documentation ( "This class is responsible for the kinematics reconstruction of the showering,", " including the kinematics reshuffling necessary to compensate for the recoil" "of the emissions." ); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerVeto.cc�������������������������������������������������������0000644�0001750�0001750�00000002232�11754474775�021534� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerVeto.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ShowerVeto class. // #include "ShowerVeto.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Utilities/EnumIO.h" using namespace Herwig; void ShowerVeto::persistentOutput(PersistentOStream & os) const { os << oenum(_vetoType); } void ShowerVeto::persistentInput(PersistentIStream & is, int) { is >> ienum(_vetoType); } AbstractClassDescription<ShowerVeto> ShowerVeto::initShowerVeto; // Definition of the static class description member. void ShowerVeto::Init() { static ClassDocumentation<ShowerVeto> documentation ("ShowerVeto is the base class for all vetoes on showering other than " "from matrix element corrections."); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerTree.cc�������������������������������������������������������0000644�0001750�0001750�00000116145�11754474775�021527� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerTree.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #include "ShowerProgenitor.h" #include "ThePEG/EventRecord/MultiColour.h" #include "ThePEG/Repository/EventGenerator.h" #include "ShowerTree.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Handlers/EventHandler.h" #include "ThePEG/Handlers/XComb.h" #include "KinematicsReconstructor.h" #include <cassert> #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; using namespace ThePEG; set<long> ShowerTree::_decayInShower = set<long>(); namespace { void findBeam(tPPtr & beam, PPtr incoming) { while(!beam->children().empty()) { bool found=false; for(unsigned int ix=0;ix<beam->children().size();++ix) { if(beam->children()[ix]==incoming) { found = true; break; } } if(found) break; beam = beam->children()[0]; } } } // constructor from hard process ShowerTree::ShowerTree(const PPair incoming, const ParticleVector & out, ShowerDecayMap& decay) : _hardMECorrection(false), _wasHard(true), _parent(), _hasShowered(false) { tPPair beam = CurrentGenerator::current().currentEvent()->incoming(); findBeam(beam.first ,incoming.first ); findBeam(beam.second,incoming.second); _incoming = incoming; double x1(_incoming.first ->momentum().rho()/beam.first ->momentum().rho()); double x2(_incoming.second->momentum().rho()/beam.second->momentum().rho()); // must have two incoming particles assert(_incoming.first && _incoming.second); // set the parent tree _parent=ShowerTreePtr(); // temporary vectors to contain all the particles before insertion into // the data structure vector<PPtr> original,copy; vector<ShowerParticlePtr> shower; // create copies of ThePEG particles for the incoming particles original.push_back(_incoming.first); copy.push_back(new_ptr(Particle(*_incoming.first))); original.push_back(_incoming.second); copy.push_back(new_ptr(Particle(*_incoming.second))); // and same for outgoing map<PPtr,ShowerTreePtr> trees; for (ParticleVector::const_iterator it = out.begin(); it != out.end(); ++it) { // if decayed or should be decayed in shower make the tree PPtr orig = *it; if(!orig->children().empty() || (decaysInShower(orig->id())&&!orig->dataPtr()->stable())) { ShowerTreePtr newtree=new_ptr(ShowerTree(orig,decay)); newtree->setParents(); trees.insert(make_pair(orig,newtree)); Energy width=orig->dataPtr()->generateWidth(orig->mass()); decay.insert(make_pair(width,newtree)); } original.push_back(orig); copy.push_back(new_ptr(Particle(*orig))); } // colour isolate the hard process colourIsolate(original,copy); // now create the Shower particles // create ShowerParticles for the incoming particles assert(original.size() == copy.size()); for(unsigned int ix=0;ix<original.size();++ix) { ShowerParticlePtr temp=new_ptr(ShowerParticle(*copy[ix],1,ix>=2)); fixColour(temp); // incoming if(ix<2) { temp->x(ix==0 ? x1 : x2); _incomingLines.insert(make_pair(new_ptr(ShowerProgenitor(original[ix], copy[ix],temp)),temp)); _backward.insert(temp); } // outgoing else { _outgoingLines.insert(make_pair(new_ptr(ShowerProgenitor(original[ix], copy[ix],temp)),temp)); _forward.insert(temp); } } // set up the map of daughter trees map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator mit; for(mit=_outgoingLines.begin();mit!=_outgoingLines.end();++mit) { map<PPtr,ShowerTreePtr>::const_iterator tit=trees.find(mit->first->original()); if(tit!=trees.end()) _treelinks.insert(make_pair(tit->second, make_pair(mit->first,mit->first->progenitor()))); } } ShowerTree::ShowerTree(PPtr in, ShowerDecayMap& decay) : _hardMECorrection(false), _wasHard(false), _hasShowered(false) { // there must be an incoming particle assert(in); // temporary vectors to contain all the particles before insertion into // the data structure vector<PPtr> original,copy; // insert place holder for incoming particle original.push_back(in); copy.push_back(PPtr()); // we need to deal with the decay products if decayed map<PPtr,ShowerTreePtr> trees; if(!in->children().empty()) { ParticleVector children=in->children(); for(unsigned int ix=0;ix<children.size();++ix) { // if decayed or should be decayed in shower make the tree PPtr orig=children[ix]; in->abandonChild(orig); if(!orig->children().empty()|| (decaysInShower(orig->id())&&!orig->dataPtr()->stable())) { ShowerTreePtr newtree=new_ptr(ShowerTree(orig,decay)); trees.insert(make_pair(orig,newtree)); Energy width=orig->dataPtr()->generateWidth(orig->mass()); decay.insert(make_pair(width,newtree)); newtree->setParents(); newtree->_parent=this; } original.push_back(orig); copy.push_back(new_ptr(Particle(*orig))); } } // create the incoming particle copy[0] = new_ptr(Particle(*in)); // isolate the colour colourIsolate(original,copy); // create the parent ShowerParticlePtr sparent(new_ptr(ShowerParticle(*copy[0],2,false))); fixColour(sparent); _incomingLines.insert(make_pair(new_ptr(ShowerProgenitor(original[0],copy[0],sparent)) ,sparent)); // return if not decayed if(original.size()==1) return; // create the children assert(copy.size() == original.size()); for (unsigned int ix=1;ix<original.size();++ix) { ShowerParticlePtr stemp= new_ptr(ShowerParticle(*copy[ix],2,true)); fixColour(stemp); _outgoingLines.insert(make_pair(new_ptr(ShowerProgenitor(original[ix],copy[ix], stemp)), stemp)); _forward.insert(stemp); } // set up the map of daughter trees map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator mit; for(mit=_outgoingLines.begin();mit!=_outgoingLines.end();++mit) { map<PPtr,ShowerTreePtr>::const_iterator tit=trees.find(mit->first->original()); if(tit!=trees.end()) _treelinks.insert(make_pair(tit->second, make_pair(mit->first,mit->first->progenitor()))); } } void ShowerTree::updateFinalStateShowerProduct(ShowerProgenitorPtr progenitor, ShowerParticlePtr parent, const ShowerParticleVector & children) { assert(children.size()==2); bool matches[2]; for(unsigned int ix=0;ix<2;++ix) { matches[ix] = children[ix]->id()==progenitor->id(); } ShowerParticlePtr newpart; if(matches[0]&&matches[1]) { if(parent->showerKinematics()->z()>0.5) newpart=children[0]; else newpart=children[1]; } else if(matches[0]) newpart=children[0]; else if(matches[1]) newpart=children[1]; _outgoingLines[progenitor]=newpart; } void ShowerTree::updateInitialStateShowerProduct(ShowerProgenitorPtr progenitor, ShowerParticlePtr newParent) { _incomingLines[progenitor]=newParent; } void ShowerTree::isolateLine(vector<PPair>::const_iterator cit, vector<PPair> & particles, tcColinePtr oldline, tColinePtr newline) { // loop over particles for(vector<PPair>::const_iterator cjt=particles.begin(); cjt!=particles.end();++cjt) { if(cjt==cit) continue; // if particle has colour line if((*cjt).second->colourLine()) { // if only one check if current line and reset if(int((*cjt).second->colourInfo()->colourLines().size())==1) { if((*cjt).second->colourLine()==oldline) newline->addColoured((*cjt).first); } // if more than one check if each line current line and reset else { Ptr<MultiColour>::pointer colour1 = dynamic_ptr_cast<Ptr<MultiColour>::pointer> ((*cjt).second->colourInfo()); Ptr<MultiColour>::pointer colour2 = dynamic_ptr_cast<Ptr<MultiColour>::pointer> ((*cjt).first ->colourInfo()); for(unsigned int ix=0;ix<colour1->colourLines().size();++ix) { if(colour1->colourLines()[ix]==oldline) colour2->colourLine(newline,int(ix)+1); } } } // if particle has anticolour line if((*cjt).second->antiColourLine()) { // if only one check if current line and reset if(int((*cjt).second->colourInfo()->antiColourLines().size())==1) { if((*cjt).second->antiColourLine()==oldline) newline->addColoured((*cjt).first,true); } // if more than one check if each line current line and reset else { Ptr<MultiColour>::pointer colour1 = dynamic_ptr_cast<Ptr<MultiColour>::pointer> ((*cjt).second->colourInfo()); Ptr<MultiColour>::pointer colour2 = dynamic_ptr_cast<Ptr<MultiColour>::pointer> ((*cjt).first ->colourInfo()); for(unsigned int ix=0;ix<colour1->antiColourLines().size();++ix) { if(colour1->antiColourLines()[ix]==oldline) colour2->antiColourLine(newline, int(ix)+1); } } } } } void ShowerTree::colourIsolate(const vector<PPtr> & original, const vector<PPtr> & copy) { // vectors must have same size assert(original.size()==copy.size()); // create a temporary map with all the particles to make looping easier vector<PPair> particles; particles.reserve(original.size()); for(unsigned int ix=0;ix<original.size();++ix) particles.push_back(make_pair(copy[ix],original[ix])); // reset the colour of the copies vector<PPair>::const_iterator cit; // make the colour connections of the copies for(cit=particles.begin();cit!=particles.end();++cit) { if((*cit).first->colourInfo()) { if((*cit).first->dataPtr()->iColour() == PDT::Colour6 || (*cit).first->dataPtr()->iColour() == PDT::Colour6bar) (*cit).first->colourInfo(new_ptr(MultiColour())); else (*cit).first->colourInfo(new_ptr(ColourBase())); } } map<tcColinePtr,tColinePtr> cmap; // make the colour connections of the copies // loop over the particles for(cit=particles.begin();cit!=particles.end();++cit) { // if particle has at least one colour line if((*cit).second->colourLine()) { // one and only one line if(int((*cit).second->colourInfo()->colourLines().size())==1) { // if not already change if(!(*cit).first->colourLine()) { // make new line tcColinePtr oldline=(*cit).second->colourLine(); ColinePtr newline=ColourLine::create((*cit).first); cmap[oldline]=newline; isolateLine(cit,particles,oldline,newline); } } // more than one line else { Ptr<MultiColour>::pointer colour1 = dynamic_ptr_cast<Ptr<MultiColour>::pointer> ((*cit).second->colourInfo()); vector<tcColinePtr> lines1 = colour1->colourLines(); Ptr<MultiColour>::pointer colour2 = dynamic_ptr_cast<Ptr<MultiColour>::pointer> ((*cit).first->colourInfo()); vector<tcColinePtr> lines2 = colour2->colourLines(); // loop over lines for(unsigned int ix=0;ix<lines1.size();++ix) { if( (lines2.size()>ix && !lines2[ix]) || lines2.size()<=ix) { tcColinePtr oldline = lines1[ix]; ColinePtr newline = new_ptr(ColourLine()); cmap[oldline]=newline; colour2->colourLine(newline, int(ix)+1); isolateLine(cit,particles,oldline,newline); } } } } // if anticolour line if((*cit).second->antiColourLine()) { // one and only one line if(int((*cit).second->colourInfo()->antiColourLines().size())==1) { // if not already change if(!(*cit).first->antiColourLine()) { // make new line tcColinePtr oldline=(*cit).second->antiColourLine(); ColinePtr newline=ColourLine::create((*cit).first, true); cmap[oldline]=newline; isolateLine(cit,particles,oldline,newline); } } // more than one line else { Ptr<MultiColour>::pointer colour1 = dynamic_ptr_cast<Ptr<MultiColour>::pointer> ((*cit).second->colourInfo()); vector<tcColinePtr> lines1 = colour1->antiColourLines(); Ptr<MultiColour>::pointer colour2 = dynamic_ptr_cast<Ptr<MultiColour>::pointer> ((*cit).first->colourInfo()); vector<tcColinePtr> lines2 = colour2->antiColourLines(); // loop over lines for(unsigned int ix=0;ix<lines1.size();++ix) { if( (lines2.size()>ix && !lines2[ix]) || lines2.size()<=ix) { tcColinePtr oldline = lines1[ix]; ColinePtr newline = new_ptr(ColourLine()); cmap[oldline]=newline; colour2->antiColourLine(newline, int(ix)+1); isolateLine(cit,particles,oldline,newline); } } } } } // sort out sinks and sources for(cit=particles.begin();cit!=particles.end();++cit) { tColinePtr cline[2]; tColinePair cpair; for(unsigned int ix=0;ix<4;++ix) { cline[0] = ix<2 ? cit->second->colourLine() : cit->second->antiColourLine(); cline[1] = ix<2 ? cit->first ->colourLine() : cit->first ->antiColourLine(); if(cline[0]) { switch (ix) { case 0: case 2: cpair = cline[0]->sinkNeighbours(); break; case 1: case 3: cpair = cline[0]->sourceNeighbours(); break; }; } else { cpair = make_pair(tColinePtr(),tColinePtr()); } if(cline[0]&&cpair.first) { map<tcColinePtr,tColinePtr>::const_iterator mit[2] = {cmap.find(cpair.first),cmap.find(cpair.second)}; if(mit[0]!=cmap.end()&&mit[1]!=cmap.end()) { if(ix==0||ix==2) { cline[1]->setSinkNeighbours(mit[0]->second,mit[1]->second); } else { cline[1]->setSourceNeighbours(mit[0]->second,mit[1]->second); } } } } } } void ShowerTree::mapColour(PPtr original, PPtr copy) { // has colour line if(copy->colourLine()) { // one and only one if(copy->colourInfo()->colourLines().size()==1) { _colour.insert(make_pair(copy->colourLine(), original->colourLine())); } // more than one else { Ptr<MultiColour>::pointer colour1 = dynamic_ptr_cast<Ptr<MultiColour>::pointer>(copy->colourInfo()); vector<tcColinePtr> lines1 = colour1->colourLines(); Ptr<MultiColour>::pointer colour2 = dynamic_ptr_cast<Ptr<MultiColour>::pointer>(original->colourInfo()); vector<tcColinePtr> lines2 = colour2->colourLines(); for(unsigned int ix=0;ix<lines1.size();++ix) _colour.insert(make_pair(const_ptr_cast<ColinePtr>(lines1[ix]), const_ptr_cast<ColinePtr>(lines2[ix]))); } } // has anticolour line if(copy->antiColourLine()) { // one and only one if(copy->colourInfo()->antiColourLines().size()==1) { _colour.insert(make_pair(copy->antiColourLine(), original->antiColourLine())); } // more than one else { Ptr<MultiColour>::pointer colour1 = dynamic_ptr_cast<Ptr<MultiColour>::pointer>(copy->colourInfo()); vector<tcColinePtr> lines1 = colour1->antiColourLines(); Ptr<MultiColour>::pointer colour2 = dynamic_ptr_cast<Ptr<MultiColour>::pointer>(original->colourInfo()); vector<tcColinePtr> lines2 = colour2->antiColourLines(); for(unsigned int ix=0;ix<lines1.size();++ix) _colour.insert(make_pair(const_ptr_cast<ColinePtr>(lines1[ix]), const_ptr_cast<ColinePtr>(lines2[ix]))); } } } void ShowerTree::insertHard(StepPtr pstep, bool ISR, bool) { assert(_incomingLines.size()==2); _colour.clear(); map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit; // construct the map of colour lines for hard process for(cit=_incomingLines.begin();cit!=_incomingLines.end();++cit) { if(!cit->first->perturbative()) continue; mapColour(cit->first->original(),cit->first->copy()); } map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt; for(cjt=_outgoingLines.begin();cjt!=_outgoingLines.end();++cjt) { if(!cjt->first->perturbative()) continue; mapColour(cjt->first->original(),cjt->first->copy()); } // initial-state radiation if(ISR) { for(cit=incomingLines().begin();cit!=incomingLines().end();++cit) { ShowerParticlePtr init=(*cit).first->progenitor(); assert(init->getThePEGBase()); PPtr original = (*cit).first->original(); if(original->parents().empty()) continue; PPtr hadron= original->parents()[0]; assert(!original->children().empty()); PPtr copy=cit->first->copy(); ParticleVector intermediates=original->children(); for(unsigned int ix=0;ix<intermediates.size();++ix) { init->abandonChild(intermediates[ix]); copy->abandonChild(intermediates[ix]); } // if not from a matrix element correction if(cit->first->perturbative()) { // break mother/daugther relations init->addChild(original); hadron->abandonChild(original); // if particle showers add shower if(cit->first->hasEmitted()) { addInitialStateShower(init,hadron,pstep,false); } // no showering for this particle else { updateColour(init); hadron->addChild(init); pstep->addIntermediate(init); } } // from matrix element correction else { // break mother/daugther relations hadron->abandonChild(original); copy->addChild(original); updateColour(copy); init->addChild(copy); pstep->addIntermediate(copy); // if particle showers add shower if(cit->first->hasEmitted()) { addInitialStateShower(init,hadron,pstep,false); } // no showering for this particle else { updateColour(init); hadron->addChild(init); pstep->addIntermediate(init); } } } } else { for(cit=incomingLines().begin();cit!=incomingLines().end();++cit) { ShowerParticlePtr init=(*cit).first->progenitor(); assert(init->getThePEGBase()); PPtr original = (*cit).first->original(); if(original->parents().empty()) continue; PPtr hadron= original->parents()[0]; assert(!original->children().empty()); PPtr copy=cit->first->copy(); ParticleVector intermediates=original->children(); for(unsigned int ix=0;ix<intermediates.size();++ix) { init->abandonChild(intermediates[ix]); copy->abandonChild(intermediates[ix]); } // break mother/daugther relations init->addChild(original); hadron->abandonChild(original); // no showering for this particle updateColour(init); hadron->addChild(init); pstep->addIntermediate(init); } } // final-state radiation for(cjt=outgoingLines().begin();cjt!=outgoingLines().end();++cjt) { ShowerParticlePtr init=(*cjt).first->progenitor(); assert(init->getThePEGBase()); // if not from a matrix element correction if(cjt->first->perturbative()) { // register the shower particle as a // copy of the one from the hard process tParticleVector parents=init->parents(); for(unsigned int ix=0;ix<parents.size();++ix) parents[ix]->abandonChild(init); (*cjt).first->original()->addChild(init); pstep->addDecayProduct(init); } // from a matrix element correction else { if(cjt->first->original()==_incoming.first|| cjt->first->original()==_incoming.second) { updateColour((*cjt).first->copy()); (*cjt).first->original()->parents()[0]-> addChild((*cjt).first->copy()); pstep->addDecayProduct((*cjt).first->copy()); (*cjt).first->copy()->addChild(init); pstep->addDecayProduct(init); } else { updateColour((*cjt).first->copy()); (*cjt).first->original()->addChild((*cjt).first->copy()); pstep->addDecayProduct((*cjt).first->copy()); (*cjt).first->copy()->addChild(init); pstep->addDecayProduct(init); } } updateColour(init); // insert shower products addFinalStateShower(init,pstep); } _colour.clear(); } void ShowerTree::addFinalStateShower(PPtr p, StepPtr s) { if(p->children().empty()) return; ParticleVector::const_iterator child; for(child=p->children().begin(); child != p->children().end(); ++child) { updateColour(*child); s->addDecayProduct(*child); addFinalStateShower(*child,s); } } void ShowerTree::updateColour(PPtr particle) { // if attached to a colour line if(particle->colourLine()) { // one and only one if(particle->colourInfo()->colourLines().size()==1) { bool reset=false; // if colour line from hard process reconnect ColinePtr c1=particle->colourLine(); if(_colour.find(c1)!=_colour.end()) { c1->removeColoured(particle); _colour[c1]->addColoured(particle); reset=true; } // ensure properly connected to the line if(!reset) { ColinePtr c1=particle->colourLine(); c1->removeColoured(particle); c1->addColoured(particle); } } else { Ptr<MultiColour>::pointer colour = dynamic_ptr_cast<Ptr<MultiColour>::pointer>(particle->colourInfo()); vector<tcColinePtr> lines = colour->colourLines(); for(unsigned int ix=0;ix<lines.size();++ix) { ColinePtr c1 = const_ptr_cast<ColinePtr>(lines[ix]); if(_colour.find(c1)!=_colour.end()) { colour->colourLine(_colour[c1],int(ix)+1); c1->removeColoured(particle); } } } } // if attached to an anticolour line if(particle->antiColourLine()) { bool reset=false; // one and only one if(particle->colourInfo()->antiColourLines().size()==1) { // if anti colour line from hard process reconnect ColinePtr c1=particle->antiColourLine(); if(_colour.find(c1)!=_colour.end()) { c1->removeColoured(particle,true); _colour[c1]->addColoured(particle,true); reset=true; } if(!reset) { ColinePtr c1=particle->antiColourLine(); c1->removeColoured(particle,true); c1->addColoured(particle,true); } } else { Ptr<MultiColour>::pointer colour = dynamic_ptr_cast<Ptr<MultiColour>::pointer>(particle->colourInfo()); vector<tcColinePtr> lines = colour->antiColourLines(); for(unsigned int ix=0;ix<lines.size();++ix) { ColinePtr c1 = const_ptr_cast<ColinePtr>(lines[ix]); if(_colour.find(c1)!=_colour.end()) { colour->antiColourLine(_colour[c1],int(ix)+1); c1->removeColoured(particle,true); } } } } } void ShowerTree::addInitialStateShower(PPtr p, PPtr hadron, StepPtr s, bool addchildren) { // Each parton here should only have one parent if(!p->parents().empty()) { if(p->parents().size()!=1) throw Exception() << "Particle must only have one parent in ShowerTree" << "::addInitialStateShower" << Exception::runerror; addInitialStateShower(p->parents()[0],hadron,s); } else { hadron->addChild(p); s->addIntermediate(p); } updateColour(p); ParticleVector::const_iterator child; // if not adding children return if(!addchildren) return; // add children for(child = p->children().begin(); child != p->children().end(); ++child) { // if a final-state particle update the colour ShowerParticlePtr schild = dynamic_ptr_cast<ShowerParticlePtr>(*child); if(schild && schild->isFinalState()) updateColour(*child); // if there are grandchildren of p if(!(*child)->children().empty()) { // Add child as intermediate s->addIntermediate(*child); // If child is shower particle and final-state, add children if(schild && schild->isFinalState()) addFinalStateShower(schild,s); } else s->addDecayProduct(*child); } } void ShowerTree::decay(ShowerDecayMap & decay) { // must be one incoming particle assert(_incomingLines.size()==1); // if already decayed return if(!_outgoingLines.empty()) return; // otherwise decay it // now we need to replace the particle with a new copy after the shower // find particle after the shower ShowerParticlePtr newparent=_parent->_treelinks[this].second; // now make the new progenitor vector<PPtr> original,copy; original.push_back(newparent); copy.push_back(new_ptr(Particle(*newparent))); // reisolate the colour colourIsolate(original,copy); // make the new progenitor ShowerParticlePtr stemp=new_ptr(ShowerParticle(*copy[0],2,false)); fixColour(stemp); ShowerProgenitorPtr newprog=new_ptr(ShowerProgenitor(original[0],copy[0],stemp)); _incomingLines.clear(); _incomingLines.insert(make_pair(newprog,stemp)); // now we need to decay the copy PPtr parent=copy[0]; unsigned int ntry = 0; while (true) { // exit if fails if (++ntry>=200) throw Exception() << "Failed to perform decay in ShowerTree::decay()" << " after " << 200 << " attempts for " << parent->PDGName() << Exception::eventerror; // select decay mode tDMPtr dm(parent->data().selectMode(*parent)); if(!dm) throw Exception() << "Failed to select decay mode in ShowerTree::decay()" << "for " << newparent->PDGName() << Exception::eventerror; if(!dm->decayer()) throw Exception() << "No Decayer for selected decay mode " << " in ShowerTree::decay()" << Exception::runerror; // start of try block try { ParticleVector children = dm->decayer()->decay(*dm, *parent); // if no children have another go if(children.empty()) continue; // set up parent parent->decayMode(dm); // add children for (unsigned int i = 0, N = children.size(); i < N; ++i ) { children[i]->setLabVertex(parent->labDecayVertex()); parent->addChild(children[i]); parent->scale(ZERO); } // if succeeded break out of loop break; } catch(KinematicsReconstructionVeto) {} } // insert the trees from the children ParticleVector children=parent->children(); map<PPtr,ShowerTreePtr> trees; for(unsigned int ix=0;ix<children.size();++ix) { PPtr orig=children[ix]; parent->abandonChild(orig); // if particle has children or decays in shower if(!orig->children().empty()|| (decaysInShower(orig->id())&&!orig->dataPtr()->stable())) { ShowerTreePtr newtree=new_ptr(ShowerTree(orig,decay)); trees.insert(make_pair(orig,newtree)); Energy width=orig->dataPtr()->generateWidth(orig->mass()); decay.insert(make_pair(width,newtree)); } // now create the shower progenitors PPtr ncopy=new_ptr(Particle(*orig)); //copy[0]->addChild(ncopy); ShowerParticlePtr nshow=new_ptr(ShowerParticle(*ncopy,2,true)); fixColour(nshow); ShowerProgenitorPtr prog=new_ptr(ShowerProgenitor(children[ix], ncopy,nshow)); _outgoingLines.insert(make_pair(prog,nshow)); } // set up the map of daughter trees map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator mit; for(mit=_outgoingLines.begin();mit!=_outgoingLines.end();++mit) { map<PPtr,ShowerTreePtr>::const_iterator tit=trees.find(mit->first->original()); if(tit!=trees.end()) { _treelinks.insert(make_pair(tit->second, make_pair(mit->first, mit->first->progenitor()))); tit->second->_parent=this; } } } void ShowerTree::insertDecay(StepPtr pstep,bool ISR, bool) { assert(_incomingLines.size()==1); _colour.clear(); // find final particle from previous tree PPtr final; if(_parent&&!_parent->_treelinks.empty()) final = _parent->_treelinks[this].second; else final=_incomingLines.begin()->first->original(); // construct the map of colour lines PPtr copy=_incomingLines.begin()->first->copy(); mapColour(final,copy); // initial-state radiation if(ISR&&!_incomingLines.begin()->first->progenitor()->children().empty()) { ShowerParticlePtr init=_incomingLines.begin()->first->progenitor(); updateColour(init); final->addChild(init); pstep->addDecayProduct(init); // insert shower products addFinalStateShower(init,pstep); // sort out colour final=_incomingLines.begin()->second; _colour.clear(); mapColour(final,copy); } // get the decaying particles // make the copy tColinePair cline=make_pair(copy->colourLine(),copy->antiColourLine()); updateColour(copy); // sort out sinks and sources if needed if(cline.first) { if(cline.first->sourceNeighbours().first) { copy->colourLine()->setSourceNeighbours(cline.first->sourceNeighbours().first, cline.first->sourceNeighbours().second); } else if (cline.first->sinkNeighbours().first) { copy->colourLine()->setSinkNeighbours(cline.first->sinkNeighbours().first, cline.first->sinkNeighbours().second); } } if(cline.second) { if(cline.second->sourceNeighbours().first) { copy->antiColourLine()->setSourceNeighbours(cline.second->sourceNeighbours().first, cline.second->sourceNeighbours().second); } else if (cline.second->sinkNeighbours().first) { copy->antiColourLine()->setSinkNeighbours(cline.second->sinkNeighbours().first, cline.second->sinkNeighbours().second); } } // copy of the one from the hard process tParticleVector dpar=copy->parents(); for(unsigned int ix=0;ix<dpar.size();++ix) dpar[ix]->abandonChild(copy); final->addChild(copy); pstep->addDecayProduct(copy); // final-state radiation map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit; for(cit=outgoingLines().begin();cit!=outgoingLines().end();++cit) { ShowerParticlePtr init=cit->first->progenitor(); if(!init->getThePEGBase()) throw Exception() << "Final-state particle must have a ThePEGBase" << " in ShowerTree::insertDecay()" << Exception::runerror; // if not from matrix element correction if(cit->first->perturbative()) { // add the child updateColour(cit->first->copy()); PPtr orig=cit->first->original(); copy->addChild(orig); pstep->addDecayProduct(orig); orig->addChild(cit->first->copy()); pstep->addDecayProduct(cit->first->copy()); // register the shower particle as a // copy of the one from the hard process tParticleVector parents=init->parents(); for(unsigned int ix=0;ix<parents.size();++ix) {parents[ix]->abandonChild(init);} (*cit).first->copy()->addChild(init); pstep->addDecayProduct(init); updateColour(init); } // from a matrix element correction else { if(copy->children().end()== find(copy->children().begin(),copy->children().end(), cit->first->original())) { updateColour(cit->first->original()); copy->addChild(cit->first->original()); pstep->addDecayProduct(cit->first->original()); } updateColour(cit->first->copy()); cit->first->original()->addChild(cit->first->copy()); pstep->addDecayProduct(cit->first->copy()); // register the shower particle as a // copy of the one from the hard process tParticleVector parents=init->parents(); for(unsigned int ix=0;ix<parents.size();++ix) {parents[ix]->abandonChild(init);} (*cit).first->copy()->addChild(init); pstep->addDecayProduct(init); updateColour(init); } // insert shower products addFinalStateShower(init,pstep); } _colour.clear(); } void ShowerTree::clear() { // reset the has showered flag _hasShowered=false; // clear the colour map _colour.clear(); map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit; map<ShowerProgenitorPtr, ShowerParticlePtr>::const_iterator cjt; // abandon the children of the outgoing particles for(cit=_outgoingLines.begin();cit!=_outgoingLines.end();++cit) { ShowerParticlePtr orig=cit->first->progenitor(); orig->set5Momentum(cit->first->copy()->momentum()); ParticleVector children=orig->children(); for(unsigned int ix=0;ix<children.size();++ix) orig->abandonChild(children[ix]); _outgoingLines[cit->first]=orig; cit->first->hasEmitted(false); } // forward products _forward.clear(); for(cit=_outgoingLines.begin();cit!=_outgoingLines.end();++cit) _forward.insert(cit->first->progenitor()); // if a decay if(!_wasHard) { ShowerParticlePtr orig=_incomingLines.begin()->first->progenitor(); orig->set5Momentum(_incomingLines.begin()->first->copy()->momentum()); ParticleVector children=orig->children(); for(unsigned int ix=0;ix<children.size();++ix) orig->abandonChild(children[ix]); } // if a hard process else { for(cjt=_incomingLines.begin();cjt!=_incomingLines.end();++cjt) { tPPtr parent = cjt->first->original()->parents().empty() ? tPPtr() : cjt->first->original()->parents()[0]; ShowerParticlePtr temp= new_ptr(ShowerParticle(*cjt->first->copy(), cjt->first->progenitor()->perturbative(), cjt->first->progenitor()->isFinalState())); fixColour(temp); temp->x(cjt->first->progenitor()->x()); cjt->first->hasEmitted(false); if(!(cjt->first->progenitor()==cjt->second)&&cjt->second&&parent) parent->abandonChild(cjt->second); cjt->first->progenitor(temp); _incomingLines[cjt->first]=temp; } } // reset the particles at the end of the shower _backward.clear(); // if hard process backward products if(_wasHard) for(cjt=_incomingLines.begin();cjt!=_incomingLines.end();++cjt) _backward.insert(cjt->first->progenitor()); clearTransforms(); } void ShowerTree::resetShowerProducts() { map<ShowerProgenitorPtr, ShowerParticlePtr>::const_iterator cit; map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt; _backward.clear(); _forward.clear(); for(cit=_incomingLines.begin();cit!=_incomingLines.end();++cit) _backward.insert(cit->second); for(cjt=_outgoingLines.begin();cjt!=_outgoingLines.end();++cjt) _forward.insert(cjt->second); } void ShowerTree::updateAfterShower(ShowerDecayMap & decay) { // update the links map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator mit; map<tShowerTreePtr,pair<tShowerProgenitorPtr,tShowerParticlePtr> >::iterator tit; for(tit=_treelinks.begin();tit!=_treelinks.end();++tit) { if(tit->second.first) { mit=_outgoingLines.find(tit->second.first); if(mit!=_outgoingLines.end()) tit->second.second=mit->second; } } // get the particles coming from those in the hard process set<tShowerParticlePtr> hard; for(mit=_outgoingLines.begin();mit!=_outgoingLines.end();++mit) hard.insert(mit->second); // find the shower particles which should be decayed in the // shower but didn't come from the hard process set<tShowerParticlePtr>::const_iterator cit; for(cit=_forward.begin();cit!=_forward.end();++cit) { if(decaysInShower((**cit).id())&& hard.find(*cit)==hard.end()) { ShowerTreePtr newtree=new_ptr(ShowerTree(*cit,decay)); newtree->setParents(); newtree->_parent=this; Energy width=(**cit).dataPtr()->generateWidth((**cit).mass()); decay.insert(make_pair(width,newtree)); _treelinks.insert(make_pair(newtree, make_pair(tShowerProgenitorPtr(),*cit))); } } } void ShowerTree::addFinalStateBranching(ShowerParticlePtr parent, const ShowerParticleVector & children) { assert(children.size()==2); _forward.erase(parent); for(unsigned int ix=0; ix<children.size(); ++ix) { _forward.insert(children[ix]); } } void ShowerTree::addInitialStateBranching(ShowerParticlePtr oldParent, ShowerParticlePtr newParent, ShowerParticlePtr otherChild) { _backward.erase(oldParent); _backward.insert(newParent); _forward.insert(otherChild); } void ShowerTree::setParents() { // set the parent tree of the children map<tShowerTreePtr,pair<tShowerProgenitorPtr,tShowerParticlePtr> >::const_iterator tit; for(tit=_treelinks.begin();tit!=_treelinks.end();++tit) tit->first->_parent=this; } vector<ShowerProgenitorPtr> ShowerTree::extractProgenitors() { // extract the particles from the ShowerTree map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator mit; vector<ShowerProgenitorPtr> ShowerHardJets; for(mit=incomingLines().begin();mit!=incomingLines().end();++mit) ShowerHardJets.push_back((*mit).first); map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator mjt; for(mjt=outgoingLines().begin();mjt!=outgoingLines().end();++mjt) ShowerHardJets.push_back((*mjt).first); return ShowerHardJets; } void ShowerTree::transform(const LorentzRotation & boost, bool applyNow) { if(applyNow) { // now boost all the particles map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit; // incoming for(cit=_incomingLines.begin();cit!=_incomingLines.end();++cit) { cit->first->progenitor()->deepTransform(boost); cit->first->copy()->deepTransform(boost); } // outgoing map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt; for(cjt=_outgoingLines.begin();cjt!=_outgoingLines.end();++cjt) { cjt->first->progenitor()->deepTransform(boost); cjt->first->copy()->deepTransform(boost); } } else { Lorentz5Momentum ptemp1 = _incomingLines.begin()->first->progenitor()->momentum(); Lorentz5Momentum ptemp2 = ptemp1; ptemp1 *= _transforms; ptemp1 *= boost; _transforms.transform(boost); ptemp2 *= _transforms; } // child trees for(map<tShowerTreePtr,pair<tShowerProgenitorPtr,tShowerParticlePtr> >::const_iterator tit=_treelinks.begin();tit!=_treelinks.end();++tit) tit->first->transform(boost,applyNow); } void ShowerTree::applyTransforms() { // now boost all the particles map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit; // incoming for(cit=_incomingLines.begin();cit!=_incomingLines.end();++cit) { cit->first->progenitor()->deepTransform(_transforms); cit->first->copy()->deepTransform(_transforms); } // outgoing map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt; for(cjt=_outgoingLines.begin();cjt!=_outgoingLines.end();++cjt) { cjt->first->progenitor()->deepTransform(_transforms); cjt->first->copy()->deepTransform(_transforms); } // child trees for(map<tShowerTreePtr,pair<tShowerProgenitorPtr,tShowerParticlePtr> >::const_iterator tit=_treelinks.begin();tit!=_treelinks.end();++tit) tit->first->applyTransforms(); _transforms = LorentzRotation(); } void ShowerTree::clearTransforms() { _transforms = LorentzRotation(); // child trees for(map<tShowerTreePtr,pair<tShowerProgenitorPtr,tShowerParticlePtr> >::const_iterator tit=_treelinks.begin();tit!=_treelinks.end();++tit) tit->first->clearTransforms(); } void ShowerTree::fixColour(tShowerParticlePtr part) { if(!part->colourInfo()->colourLines().empty()) { if(part->colourInfo()->colourLines().size()==1) { ColinePtr line=part->colourLine(); if(line) { line->removeColoured(part); line->addColoured(part); } } else { Ptr<MultiColour>::pointer colour = dynamic_ptr_cast<Ptr<MultiColour>::pointer>(part->colourInfo()); vector<tcColinePtr> lines = colour->colourLines(); for(unsigned int ix=0;ix<lines.size();++ix) { ColinePtr line = const_ptr_cast<ColinePtr>(lines[ix]); if(line) { line->removeColoured(part); line->addColoured(part); } } } } if(!part->colourInfo()->antiColourLines().empty()) { if(part->colourInfo()->antiColourLines().size()==1) { ColinePtr line=part->antiColourLine(); if(line) { line->removeAntiColoured(part); line->addAntiColoured(part); } } else { Ptr<MultiColour>::pointer colour = dynamic_ptr_cast<Ptr<MultiColour>::pointer>(part->colourInfo()); vector<tcColinePtr> lines = colour->antiColourLines(); for(unsigned int ix=0;ix<lines.size();++ix) { ColinePtr line = const_ptr_cast<ColinePtr>(lines[ix]); if(line) { line->removeAntiColoured(part); line->addAntiColoured(part); } } } } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/SudakovFormFactor.h�������������������������������������������������0000644�0001750�0001750�00000045116�11754474775�022700� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SudakovFormFactor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SudakovFormFactor_H #define HERWIG_SudakovFormFactor_H // // This is the declaration of the SudakovFormFactor class. // #include "ThePEG/Interface/Interfaced.h" #include "Herwig++/Shower/SplittingFunctions/SplittingFunction.h" #include "Herwig++/Shower/Couplings/ShowerAlpha.h" #include "Herwig++/Shower/SplittingFunctions/SplittingGenerator.fh" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/PDF/BeamParticleData.h" #include <cassert> #include "ShowerKinematics.fh" #include "SudakovFormFactor.fh" namespace Herwig { using namespace ThePEG; /** * A typedef for the BeamParticleData */ typedef Ptr<BeamParticleData>::transient_const_pointer tcBeamPtr; /** \ingroup Shower * * This is the definition of the Sudakov form factor class. In general this * is the base class for the implementation of Sudakov form factors in Herwig++. * The methods generateNextTimeBranching(), generateNextDecayBranching() and * generateNextSpaceBranching need to be implemented in classes inheriting from this * one. * * In addition a number of methods are implemented to assist with the calculation * of the form factor using the veto algorithm in classes inheriting from this one. * * In general the Sudakov form-factor, for final-state radiation, is given * by * \f[\Delta_{ba}(\tilde{q}_{i+1},\tilde{q}_i)= * \exp\left\{ * -\int^{\tilde{q}^2_i}_{\tilde{q}^2_{i+1}} * \frac{{\rm d}\tilde{q}^2}{\tilde{q}^2} * \int\frac{\alpha_S(z,\tilde{q})}{2\pi} * P_{ba}(z,\tilde{q})\Theta(p_T) * \right\}. * \f] * We can solve this to obtain the next value of the scale \f$\tilde{q}_{i+1}\f$ * given the previous value \f$\tilde{q}_i\f$ * in the following way. First we obtain a simplified form of the integrand * which is greater than or equal to the true integrand for all values of * \f$\tilde{q}\f$. * * In practice it is easiest to obtain this over estimate in pieces. The ShowerAlpha * object contains an over estimate for \f$\alpha_S\f$, the splitting function * contains both an over estimate of the spltting function and its integral * which is needed to compute the over estimate of the \f$\tilde{q}\f$ integrand, * together with an over estimate of the limit of the \f$z\f$ integral. * * This gives an overestimate of the integrand * \f[g(\tilde{q}^2) = \frac{c}{\tilde{q}^2}, \f] * where because the over estimates are chosen to be independent of \f$\tilde{q}\f$ the * parameter * \f[c = \frac{\alpha_{\rm over}}{2\pi}\int^{z_1}_{z_0}P_{\rm over}(z),\f] * is a constant independent of \f$\tilde{q}\f$. * * The guesst() member can then be used to generate generate the value of * \f$\tilde{q}^2\f$ according to this result. This is done by solving the Sudakov * form factor, with the over estimates, is equal to a random number * \f$r\f$ in the interval \f$[0,1]\f$. This gives * \f[\tilde{q}^2_{i+1}=G^{-1}\left[G(\tilde{q}^2_i)+\ln r\right],\f] * where \f$G(\tilde{q}^2)=c\ln(\tilde{q}^2)\f$ is the infinite integral * of \f$g(\tilde{q}^2)\f$ and \f$G^{-1}(x)=\exp\left(\frac{x}c\right)\f$ * is its inverse. * It this case we therefore obtain * \f[\tilde{q}^2_{i+1}=\tilde{q}^2_ir^{\frac1c}.\f] * The value of \f$z\f$ can then be calculated in a similar way * \f[z = I^{-1}\left[I(z_0)+r\left(I(z_1)-I(z_0)\right)\right],\f] * using the guessz() member, * where \f$I=\int P(z){\rm d}z\f$ and \f$I^{-1}\f$ is its inverse. * * The veto algorithm then uses rejection using the ratio of the * true value to the overestimated one to obtain the original distribution. * This is accomplished using the * - alphaSVeto() member for the \f$\alpha_S\f$ veto * - SplittingFnVeto() member for the veto on the value of the splitting function. * in general there must also be a chech that the emission is in the allowed * phase space but this is left to the inheriting classes as it will depend * on the ordering variable. * * The Sudakov form factor for the initial-scale shower is different because * it must include the PDF which guides the backward evolution. * It is given by * \f[\Delta_{ba}(\tilde{q}_{i+1},\tilde{q}_i)= * \exp\left\{ * -\int^{\tilde{q}^2_i}_{\tilde{q}^2_{i+1}} * \frac{{\rm d}\tilde{q}^2}{\tilde{q}^2} * \int\frac{\alpha_S(z,\tilde{q})}{2\pi} * P_{ba}(z,\tilde{q})\frac{x'f_a(\frac{x}z,\tilde{q}^2)}{xf_b(x,\tilde{q^2})} * \right\}, * \f] * where \f$x\f$ is the fraction of the beam momentum the parton \f$b\f$ had before * the backward evolution. * This can be solve in the same way as for the final-state branching but the constant * becomes * \f[c = \frac{\alpha_{\rm over}}{2\pi}\int^{z_1}_{z_0}P_{\rm over}(z)PDF_{\rm max},\f] * where * \f[PDF_{\rm max}=\max\frac{x'f_a(\frac{x}z,\tilde{q}^2)}{xf_b(x,\tilde{q^2})},\f] * which can be set using an interface. * In addition the PDFVeto() member then is needed to implement the relevant veto. * * @see SplittingGenerator * @see SplittingFunction * @see ShowerAlpha * @see \ref SudakovFormFactorInterfaces "The interfaces" * defined for SudakovFormFactor. */ class SudakovFormFactor: public Interfaced { /** * The SplittingGenerator is a friend to insert the particles in the * branchings at initialisation */ friend class SplittingGenerator; public: /** * The default constructor. */ SudakovFormFactor() : pdfmax_(35.0), pdffactor_(0), cutOffOption_(0), a_(0.3), b_(2.3), c_(0.3*GeV), kinCutoffScale_( 2.3*GeV ), vgcut_(0.85*GeV), vqcut_(0.85*GeV), pTmin_(1.*GeV), pT2min_(ZERO), z_( 0.0 ),phi_(0.0), pT_() {} /** * Members to generate the scale of the next branching */ //@{ /** * Return the scale of the next time-like branching. If there is no * branching then it returns ZERO. * @param startingScale starting scale for the evolution * @param ids The PDG codes of the particles in the splitting * @param cc Whether this is the charge conjugate of the branching * @param enhance The radiation enhancement factor * defined. */ virtual ShoKinPtr generateNextTimeBranching(const Energy startingScale, const IdList &ids,const bool cc, double enhance)=0; /** * Return the scale of the next space-like decay branching. If there is no * branching then it returns ZERO. * @param startingScale starting scale for the evolution * @param stoppingScale stopping scale for the evolution * @param minmass The minimum mass allowed for the spake-like particle. * @param ids The PDG codes of the particles in the splitting * @param cc Whether this is the charge conjugate of the branching * defined. * @param enhance The radiation enhancement factor */ virtual ShoKinPtr generateNextDecayBranching(const Energy startingScale, const Energy stoppingScale, const Energy minmass, const IdList &ids, const bool cc, double enhance)=0; /** * Return the scale of the next space-like branching. If there is no * branching then it returns ZERO. * @param startingScale starting scale for the evolution * @param ids The PDG codes of the particles in the splitting * @param x The fraction of the beam momentum * @param cc Whether this is the charge conjugate of the branching * defined. * @param beam The beam particle * @param enhance The radiation enhancement factor */ virtual ShoKinPtr generateNextSpaceBranching(const Energy startingScale, const IdList &ids,double x, const bool cc,double enhance, tcBeamPtr beam)=0; //@} /** * Methods to provide public access to the private member variables */ //@{ /** * Return the pointer to the SplittingFunction object. */ tSplittingFnPtr splittingFn() const { return splittingFn_; } /** * Return the pointer to the ShowerAlpha object. */ tShowerAlphaPtr alpha() const { return alpha_; } /** * The type of interaction */ inline ShowerInteraction::Type interactionType() const {return splittingFn_->interactionType();} //@} public: /** * Methods to access the kinematic variables for the branching */ //@{ /** * The energy fraction */ double z() const { return z_; } /** * The azimuthal angle */ double phi() const { return phi_; } /** * The transverse momentum */ Energy pT() const { return pT_; } //@} /** * Access the maximum weight for the PDF veto */ double pdfMax() const { return pdfmax_;} /** * Method to return the evolution scale given the * transverse momentum, \f$p_T\f$ and \f$z\f$. */ virtual Energy calculateScale(double z, Energy pt, IdList ids,unsigned int iopt)=0; /** * Method to create the ShowerKinematics object for a final-state branching */ virtual ShoKinPtr createFinalStateBranching(Energy scale,double z, double phi, Energy pt)=0; /** * Method to create the ShowerKinematics object for an initial-state branching */ virtual ShoKinPtr createInitialStateBranching(Energy scale,double z, double phi, Energy pt)=0; /** * Method to create the ShowerKinematics object for a decay branching */ virtual ShoKinPtr createDecayBranching(Energy scale,double z, double phi, Energy pt)=0; 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 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(); //@} protected: /** * Methods to implement the veto algorithm to generate the scale of * the next branching */ //@{ /** * Value of the energy fraction for the veto algorithm * @param iopt The option for calculating z * @param ids The PDG codes of the particles in the splitting * - 0 is final-state * - 1 is initial-state for the hard process * - 2 is initial-state for particle decays */ double guessz (unsigned int iopt, const IdList &ids) const; /** * Value of the scale for the veto algorithm * @param t1 The starting valoe of the scale * @param iopt The option for calculating t * @param ids The PDG codes of the particles in the splitting * - 0 is final-state * - 1 is initial-state for the hard process * - 2 is initial-state for particle decays * @param enhance The radiation enhancement factor * @param identical Whether or not the outgoing particles are identical */ Energy2 guesst (Energy2 t1,unsigned int iopt, const IdList &ids, double enhance, bool identical) const; /** * Veto on the PDF for the initial-state shower * @param t The scale * @param x The fraction of the beam momentum * @param parton0 Pointer to the particleData for the * new parent (this is the particle we evolved back to) * @param parton1 Pointer to the particleData for the * original particle * @param beam The BeamParticleData object */ bool PDFVeto(const Energy2 t, const double x, const tcPDPtr parton0, const tcPDPtr parton1, tcBeamPtr beam) const; /** * The veto on the splitting function. * @param t The scale * @param ids The PDG codes of the particles in the splitting * @param mass Whether or not to use the massive splitting functions * @return true if vetoed */ bool SplittingFnVeto(const Energy2 t, const IdList &ids, const bool mass) const { return UseRandom::rnd()>splittingFn_->ratioP(z_, t, ids,mass); } /** * The veto on the coupling constant * @param pt2 The value of ther transverse momentum squared, \f$p_T^2\f$. * @return true if vetoed */ bool alphaSVeto(const Energy2 pt2) const {return UseRandom::rnd() > ThePEG::Math::powi(alpha_->ratio(pt2), splittingFn_->interactionOrder());} //@} /** * Methods to set the kinematic variables for the branching */ //@{ /** * The energy fraction */ void z(double in) { z_=in; } /** * The azimuthal angle */ void phi(double in) { phi_=in; } /** * The transverse momentum */ void pT(Energy in) { pT_=in; } //@} /** * Set/Get the limits on the energy fraction for the splitting */ //@{ /** * Get the limits */ pair<double,double> zLimits() const { return zlimits_;} /** * Set the limits */ void zLimits(pair<double,double> in) { zlimits_=in; } //@} /** * Set the particles in the splittings */ void addSplitting(const IdList &); /** * Delete the particles in the splittings */ void removeSplitting(const IdList &); /** * Access the potential branchings */ vector<IdList> particles() const { return particles_; } /** * Methods to set the member variables for inheriting classes */ //@{ /** * Method to set the SplittingFunction */ void splittingFn(tSplittingFnPtr in) { splittingFn_ = in;} /** * Method to set the coupling */ void alpha(tShowerAlphaPtr in) { alpha_ = in; } /** * Method to set the maximum PDF weight */ void pdfMax(double in) { pdfmax_ = in;} /** * Get the option for the PDF factor */ unsigned int PDFFactor() const { return pdffactor_; } //@} public: /** * @name Methods for the cut-off */ //@{ /** * The option being used */ unsigned int cutOffOption() const { return cutOffOption_; } /** * The kinematic scale */ Energy kinScale() const {return kinCutoffScale_;} /** * The virtuality cut-off on the gluon \f$Q_g=\frac{\delta-am_q}{b}\f$ * @param scale The scale \f$\delta\f$ * @param mq The quark mass \f$m_q\f$. */ Energy kinematicCutOff(Energy scale, Energy mq) const {return max((scale -a_*mq)/b_,c_);} /** * The virtualilty cut-off for gluons */ Energy vgCut() const { return vgcut_; } /** * The virtuality cut-off for everything else */ Energy vqCut() const { return vqcut_; } /** * The minimum \f$p_T\f$ for the branching */ Energy pTmin() const { return pTmin_; } /** * The square of the minimum \f$p_T\f$ */ Energy2 pT2min() const { return pT2min_; } /** * Calculate the virtual masses for a branchings */ vector<Energy> virtualMasses(const IdList & ids); //@} /** * Set the PDF */ void setPDF(tcPDFPtr pdf, Energy scale) { pdf_ = pdf; freeze_ = scale; } private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<SudakovFormFactor> initSudakovFormFactor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SudakovFormFactor & operator=(const SudakovFormFactor &); private: /** * Pointer to the splitting function for this Sudakov form factor */ SplittingFnPtr splittingFn_; /** * Pointer to the coupling for this Sudakov form factor */ ShowerAlphaPtr alpha_; /** * Maximum value of the PDF weight */ double pdfmax_; /** * List of the particles this Sudakov is used for to aid in setting up * interpolation tables if needed */ vector<IdList> particles_; /** * Option for the inclusion of a factor \f$1/(1-z)\f$ in the PDF estimate */ unsigned pdffactor_; private: /** * Option for the type of cut-off to be applied */ unsigned int cutOffOption_; /** * Parameters for the default Herwig++ cut-off option, i.e. the parameters for * the \f$Q_g=\max(\frac{\delta-am_q}{b},c)\f$ kinematic cut-off */ //@{ /** * The \f$a\f$ parameter */ double a_; /** * The \f$b\f$ parameter */ double b_; /** * The \f$c\f$ parameter */ Energy c_; /** * Kinematic cutoff used in the parton shower phase space. */ Energy kinCutoffScale_; //@} /** * Parameters for the FORTRAN-like cut-off */ //@{ /** * The virtualilty cut-off for gluons */ Energy vgcut_; /** * The virtuality cut-off for everything else */ Energy vqcut_; //@} /** * Parameters for the \f$p_T\f$ cut-off */ //@{ /** * The minimum \f$p_T\f$ for the branching */ Energy pTmin_; /** * The square of the minimum \f$p_T\f$ */ Energy2 pT2min_; //@} private: /** * Member variables to keep the shower kinematics information * generated by a call to generateNextTimeBranching or generateNextSpaceBranching */ //@{ /** * The energy fraction */ double z_; /** * The azimuthal angle */ double phi_; /** * The transverse momentum */ Energy pT_; //@} /** * The limits of \f$z\f$ in the splitting */ pair<double,double> zlimits_; /** * Stuff for the PDFs */ //@{ /** * PDf */ tcPDFPtr pdf_; /** * Freezing scale */ Energy freeze_; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SudakovFormFactor. */ template <> struct BaseClassTrait<Herwig::SudakovFormFactor,1> { /** Typedef of the first base class of SudakovFormFactor. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the SudakovFormFactor class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SudakovFormFactor> : public ClassTraitsBase<Herwig::SudakovFormFactor> { /** Return a platform-independent class name */ static string className() { return "Herwig::SudakovFormFactor"; } }; /** @endcond */ } #endif /* HERWIG_SudakovFormFactor_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerParticle.fh���������������������������������������������������0000644�0001750�0001750�00000000515�11754474775�022374� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the ShowerParticle class. // #ifndef HERWIG_ShowerParticle_FH #define HERWIG_ShowerParticle_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ShowerParticle; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ShowerParticle,ShowerParticlePtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/PartnerFinder.cc����������������������������������������������������0000644�0001750�0001750�00000036447�11754474775�022211� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PartnerFinder.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PartnerFinder class. // #include "PartnerFinder.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ShowerParticle.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Interface/Switch.h" using namespace Herwig; // some useful functions to avoid using #define namespace { // return bool if final-state particle inline bool FS(const tShowerParticlePtr a) { return a->isFinalState(); } // return colour line pointer inline Ptr<ThePEG::ColourLine>::transient_pointer CL(const ShowerParticleVector::const_iterator & a, unsigned int index=0) { return (*a)->colourInfo()->colourLines().empty() ? ThePEG::tColinePtr() : const_ptr_cast<ThePEG::tColinePtr>((*a)->colourInfo()->colourLines()[index]); } // return colour line size inline unsigned int CLSIZE(const ShowerParticleVector::const_iterator & a) { return (*a)->colourInfo()->colourLines().size(); } inline Ptr<ThePEG::ColourLine>::transient_pointer ACL(const ShowerParticleVector::const_iterator & a, unsigned int index=0) { return (*a)->colourInfo()->antiColourLines().empty() ? ThePEG::tColinePtr() : const_ptr_cast<ThePEG::tColinePtr>((*a)->colourInfo()->antiColourLines()[index]); } inline unsigned int ACLSIZE(const ShowerParticleVector::const_iterator & a) { return (*a)->colourInfo()->antiColourLines().size(); } } void PartnerFinder::persistentOutput(PersistentOStream & os) const { os << _approach << _partnerMethod; } void PartnerFinder::persistentInput(PersistentIStream & is, int) { is >> _approach >> _partnerMethod; } AbstractClassDescription<PartnerFinder> PartnerFinder::initPartnerFinder; // Definition of the static class description member. void PartnerFinder::Init() { static ClassDocumentation<PartnerFinder> documentation ("This class is responsible for finding the partners for each interaction types ", "and within the evolution scale range specified by the ShowerVariables ", "then to determine the initial evolution scales for each pair of partners."); static Parameter<PartnerFinder,int> approach ("Approximation", "This is a test variable to consider the different approaches of " "which colour dipoles of a hard process will shower.", &PartnerFinder::_approach, 0, 1, 0,false,false,false); static Switch<PartnerFinder,int> interfacePartnerMethod ("PartnerMethod", "Choice of partner finding method for gluon evolution.", &PartnerFinder::_partnerMethod, 0, false, false); static SwitchOption interfacePartnerMethodRandom (interfacePartnerMethod, "Random", "Choose partners of a gluon randomly.", 0); static SwitchOption interfacePartnerMethodMaximum (interfacePartnerMethod, "Maximum", "Choose partner of gluon with largest angle.", 1); } bool PartnerFinder::setInitialEvolutionScales(const ShowerParticleVector &particles, const bool isDecayCase, #ifndef NDEBUG ShowerInteraction::Type type, #else ShowerInteraction::Type, #endif const bool setPartners) { assert(type==ShowerInteraction::QCD); return setInitialQCDEvolutionScales(particles,isDecayCase,setPartners); } bool PartnerFinder::setInitialQCDEvolutionScales(const ShowerParticleVector &particles, const bool isDecayCase, const bool setPartners) { // set the partners and the scales if(setPartners) { // Loop over particles and consider only coloured particles which don't // have already their colour partner fixed and that don't have children // (the latter requirement is relaxed in the case isDecayCase is true). // Build a map which has as key one of these particles (i.e. a pointer // to a ShowerParticle object) and as a corresponding value the vector // of all its possible *normal* candidate colour partners, defined as follows: // --- have colour, and no children (this is not required in the case // isDecayCase is true); // --- if both are initial (incoming) state particles, then the (non-null) colourLine() // of one of them must match the (non-null) antiColourLine() of the other. // --- if one is an initial (incoming) state particle and the other is // a final (outgoing) state particle, then both must have the // same (non-null) colourLine() or the same (non-null) antiColourLine(); // Notice that this definition exclude the special case of baryon-violating // processes (as in R-parity Susy), which will show up as particles // without candidate colour partners, and that we will be treated a part later // (this means that no modifications of the following loop is needed!) ShowerParticleVector::const_iterator cit, cjt; // Define variables needed for angular and radiation line analysis double angle[2] = { 0.0, 0.0 }; int radiationLine[2] = { 0, 0 }; int ait = 0; for(cit = particles.begin(); cit != particles.end(); ++cit) { if(!(*cit)->data().coloured()) continue; // We now have a coloured particle tShowerParticleVector partners; if (_partnerMethod == 1){ // Angular analysis need to be reset for each particle angle[0] = 0; angle[1] = 0; radiationLine[0] = 0; radiationLine[1] = 0; ait = 0; } for(cjt = particles.begin(); cjt != particles.end(); ++cjt) { if(!(*cjt)->data().coloured()||cit==cjt) continue; bool isPartner = false; if(FS(*cit) != FS(*cjt)){ //loop over all the colours of both particles for(unsigned int ix=0; ix<CLSIZE(cit); ++ix){ for(unsigned int jx=0; jx<CLSIZE(cjt); ++jx){ if((CL(cit,ix) && CL(cit,ix)==CL(cjt,jx))) { isPartner = true; } } } if(!isPartner){ //loop over all the anti-colours of both particles for(unsigned int ix=0; ix<ACLSIZE(cit); ++ix){ for(unsigned int jx=0; jx<ACLSIZE(cjt); ++jx){ if((ACL(cit,ix) && ACL(cit,ix)==ACL(cjt,jx))) { isPartner = true; } } } } } else { //loop over the colours of the first particle and the anti-colours of the other for(unsigned int ix=0; ix<CLSIZE(cit); ++ix){ for(unsigned int jx=0; jx<ACLSIZE(cjt); ++jx){ if(CL(cit,ix) && CL(cit,ix)==ACL(cjt,jx)) { isPartner = true; } } } if(!isPartner){ //loop over the anti-colours of the first particle and the colours of the other for(unsigned int ix=0; ix<ACLSIZE(cit); ++ix){ for(unsigned int jx=0; jx<CLSIZE(cjt); jx++){ if(ACL(cit,ix) && ACL(cit,ix)==CL(cjt,jx)) { isPartner = true; } } } } } if(isPartner) { if (_partnerMethod == 1 && ACLSIZE(cit)<=1&&CLSIZE(cjt)<=1) { // Find the angle to the potential partner angle[ait] = (*cit)->momentum().vect().angle((*cjt)->momentum().vect()); // Find out which colour line is connected to the partner // Colour line has value 1, anti-colour line has value 2 if( CL(cit) == CL(cjt) || CL(cit) == ACL(cjt)) radiationLine[ait] = 1; if(ACL(cit) == CL(cjt) || ACL(cit) == ACL(cjt)) radiationLine[ait] = 2; ait++; } partners.push_back(*cjt); } } if (partners.empty()) { // special for RPV tColinePtr col = CL(cit); if(FS(*cit)&&col&&col->sourceNeighbours().first) { tColinePair cpair = col->sourceNeighbours(); for(cjt=particles.begin();cjt!=particles.end();++cjt) { if(( FS(*cjt) && ( CL(cjt) == cpair.first || CL(cjt) == cpair.second))|| (!FS(*cjt) && (ACL(cjt) == cpair.first || ACL(cjt) == cpair.second ))) { partners.push_back(*cjt); } } } else if(col&&col->sinkNeighbours().first) { tColinePair cpair = col->sinkNeighbours(); for(cjt=particles.begin();cjt!=particles.end();++cjt) { if(( FS(*cjt) && (ACL(cjt) == cpair.first || ACL(cjt) == cpair.second))|| (!FS(*cjt) && ( CL(cjt) == cpair.first || CL(cjt) == cpair.second))) { partners.push_back(*cjt); } } } col = ACL(cit); if(FS(*cit)&&col&&col->sinkNeighbours().first) { tColinePair cpair = col->sinkNeighbours(); for(cjt=particles.begin();cjt!=particles.end();++cjt) { if(( FS(*cjt) && (ACL(cjt) == cpair.first || ACL(cjt) == cpair.second))|| (!FS(*cjt) && ( CL(cjt) == cpair.first || CL(cjt) == cpair.second ))) { partners.push_back(*cjt); } } } else if(col&&col->sourceNeighbours().first) { tColinePair cpair = col->sourceNeighbours(); for(cjt=particles.begin();cjt!=particles.end();++cjt) { if(( FS(*cjt) && ( CL(cjt) == cpair.first || CL(cjt) == cpair.second))|| (!FS(*cjt) && (ACL(cjt) == cpair.first ||ACL(cjt) == cpair.second))) { partners.push_back(*cjt); } } } } if(partners.empty()) { throw Exception() << "`Failed to make colour connections in " << "PartnerFinder::setQCDInitialEvolutionScales" << (**cit) << Exception::eventerror; } // In the case of more than one candidate colour partners, // there are now two approaches to choosing the partner. The // first method is based on two assumptions: // 1) the choice of which is the colour partner is done // *randomly* between the available candidates. // 2) the choice of which is the colour partner is done // *independently* from each particle: in other words, // if for a particle "i" its selected colour partner is // the particle "j", then the colour partner of "j" // does not have to be necessarily "i". // The second method always chooses the furthest partner // for hard gluons and gluinos. // First make a random choice of partner int position = UseRandom::irnd(partners.size()); // Set the scale from the random partner pair<Energy,Energy> pairScales = calculateInitialEvolutionScales(ShowerPPair(*cit,partners[position]), isDecayCase); pair<Energy,Energy> pairScales2; if (_partnerMethod == 1){ // Override choice of partner if ((*cit)->perturbative() == 1 && getParticleData((*cit)->id())->iColour()==PDT::Colour8){ // Parton is a hard octet // Determine largest angle if (angle[1]>0 && angle[0]<angle[1]) position=1; else position=0; } // Override scale for hard octet if (position==1){ pairScales = calculateInitialEvolutionScales(ShowerPPair(*cit,partners[1]), isDecayCase); if (getParticleData((*cit)->id())->iColour()==PDT::Colour8){ // Set the second scale for hard octets pairScales2 = calculateInitialEvolutionScales(ShowerPPair(*cit,partners[0]), isDecayCase); } } else { pairScales = calculateInitialEvolutionScales(ShowerPPair(*cit,partners[0]), isDecayCase); if (getParticleData((*cit)->id())->iColour()==PDT::Colour8){ // Set the second scale for hard octets pairScales2 = calculateInitialEvolutionScales(ShowerPPair(*cit,partners[1]), isDecayCase); } } if ((*cit)->perturbative() == 1 && getParticleData((*cit)->id())->iColour()==PDT::Colour8){ // Set radiation lines for hard octets (*cit)->setRadiationLine(radiationLine[position]); if( !(*cit)->progenitor() ){ // Set the hard partons to be the progenitors of the shower (*cit)->setProgenitor(*cit); // Set the second evolution scale of the progenitor (*cit)->setEvolutionScale2(pairScales2.first); } } else if ((*cit)->perturbative() == 1 && (getParticleData((*cit)->id())->iColour()==PDT::Colour3 || getParticleData((*cit)->id())->iColour()==PDT::Colour3bar)){ // Set radiation lines for hard triplets if( !(*cit)->progenitor() ){ // Set the hard partons to be the progenitors of the shower (*cit)->setProgenitor(*cit); // Set the second evolution scale of the progenitor (*cit)->setEvolutionScale2(pairScales2.first); // Set the radiation line (*cit)->setRadiationLine(0); } } } switch(_approach) { case 0: // Totally random (unless chosen above) (*cit)->setEvolutionScale(pairScales.first); (*cit)->setPartner(partners[position]); break; case 1: // Partner is also set, if it has already been set, pick 50/50 if(!(*cit)->partner() || UseRandom::rndbool()) { (*cit)->setEvolutionScale(pairScales.first); (*cit)->setPartner(partners[position]); } if(!partners[position]->partner() || UseRandom::rndbool()) { partners[position]->setEvolutionScale(pairScales.second); partners[position]->setPartner(*cit); } break; default: throw Exception() << "Invalid approach for setting colour partner in" << " PartnerFinder::setQCDInitialEvolutionScale()" << Exception::abortnow; } } } // partners all ready set only do the scales else { for(ShowerParticleVector::const_iterator cit = particles.begin(); cit != particles.end(); ++cit) { if(!(**cit).dataPtr()->coloured()) continue; tShowerParticlePtr partner = (**cit).partner(); pair<Energy,Energy> pairScales = calculateInitialEvolutionScales(ShowerPPair(*cit,partner), isDecayCase); (*cit)->setEvolutionScale(pairScales.first); } } return true; } pair<Energy,Energy> PartnerFinder:: calculateInitialEvolutionScales(const ShowerPPair &particlePair, const bool isDecayCase) { bool FS1=FS(particlePair.first),FS2= FS(particlePair.second); if(FS1 && FS2) return calculateFinalFinalScales(particlePair); else if(FS1 && !FS2) { ShowerPPair a(particlePair.second, particlePair.first); pair<Energy,Energy> rval = calculateInitialFinalScales(a,isDecayCase); return pair<Energy,Energy>(rval.second,rval.first); } else if(!FS1 &&FS2) return calculateInitialFinalScales(particlePair,isDecayCase); else return calculateInitialInitialScales(particlePair); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerProgenitor.fh�������������������������������������������������0000644�0001750�0001750�00000000531�11754474775�022757� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the ShowerProgenitor class. // #ifndef HERWIG_ShowerProgenitor_FH #define HERWIG_ShowerProgenitor_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ShowerProgenitor; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ShowerProgenitor,ShowerProgenitorPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerProgenitor.h��������������������������������������������������0000644�0001750�0001750�00000011254�11754474775�022615� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerProgenitor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ShowerProgenitor_H #define HERWIG_ShowerProgenitor_H // // This is the declaration of the ShowerProgenitor struct. // #include "ThePEG/Config/ThePEG.h" #include "Herwig++/Shower/ShowerConfig.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include "ShowerProgenitor.fh" #include "ThePEG/PDF/BeamParticleData.h" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * A struct to store information on the perturbative particle which * initiates a shower */ class ShowerProgenitor : public Base { /** * Typedef for the BeamParticleData objects */ typedef Ptr<BeamParticleData>::transient_const_pointer tcBeamPtr; public: /** * Constructor for the class * @param original The original particle * @param copy The colour isolated copy * @param particle The ShowerPArticle copy * @param pT The \f$p_t\f$ of the hardest emission * @param emitted Whether or not the particle has radiated */ ShowerProgenitor(PPtr original,PPtr copy, ShowerParticlePtr particle, Energy pT=ZERO,bool emitted=false) : _original(original), _copy(copy), _perturbative(true), _particle(particle), _highestpT(pT), _maxpT(Constants::MaxEnergy), _maxHardPt(ZERO), _hasEmitted(emitted) { // get the BeamParticleData object if ( original->parents().empty() ) { _beam=dynamic_ptr_cast<tcBeamPtr>(original->dataPtr()); } else { _beam=dynamic_ptr_cast<tcBeamPtr>(original->parents()[0]->dataPtr()); } } /** * Access to the particle */ ShowerParticlePtr progenitor() const { return _particle; } /** * Set the particle */ void progenitor(ShowerParticlePtr in) { _particle=in; } /** * Access to the original particle */ PPtr original() const { return _original; } /** * Access to the colour isolated copy */ PPtr copy() const { return _copy; } /** * Set the copy */ void copy(PPtr in) { _copy=in; } /** * Whether the particle came from the hard process or was added by * the matrix element correction */ bool perturbative() const { return _perturbative; } /** * Whether the particle came from the hard process or was added by * the matrix element correction */ void perturbative(bool in) { _perturbative=in; } /** * Set/Get methods for the hardest \f$p_T\f$ so far */ //@{ /** * Access the \f$p_T\f$ of the hardest emission so far */ Energy highestpT() const { return _highestpT; } /** * Set the \f$p_T\f$ of the hardest emission so far */ void highestpT(Energy in) { _highestpT=in; } //@} /** * Set/Get methods for the maximum \f$p_T\f$ */ //@{ /** * Access the maximum \f$p_T\f$ for radiation */ Energy maximumpT() const { return _maxpT; } /** * Set the maximum \f$p_T\f$ for radiation */ void maximumpT(Energy in) { _maxpT=in; } //@} /** * Set/Get methods for whether the particle has radiated */ //@{ /** * Access the maximum hard \f$p_T\f$, given by the hard process */ Energy maxHardPt() const { return _maxHardPt; } /** * Set the maximum hard \f$p_T\f$, given by the hard process */ void maxHardPt(Energy in) { _maxHardPt = in; } /** * Has this particle radiated */ bool hasEmitted() const { return _hasEmitted; } /** * Set whether or not this particle has radiated */ void hasEmitted(bool in) { _hasEmitted=in; } //@} /** * The id of the particle */ long id() const { return _particle->id(); } /** * The BeamParticleData object */ tcBeamPtr beam() { return _beam; } private: /** * Pointer to the original particle */ PPtr _original; /** * Pointer to the colour isolated copy of the original particle */ PPtr _copy; /** * Whether the particle came from the hard process or was added by * the matrix element correction */ bool _perturbative; /** * Pointer to the ShowerParticle */ ShowerParticlePtr _particle; /** * Highest \f$p_T\f$ emitted in the shower from this particle */ Energy _highestpT; /** * Maximum allowed \f$p_T\f$ for emission from this particle */ Energy _maxpT; /** * maximum hard \f$p_T\f$ from the hard process */ Energy _maxHardPt; /** * Has there been radiation */ bool _hasEmitted; /** * The BeamParticleData object */ tcBeamPtr _beam; }; } #endif /* HERWIG_ShowerProgenitor_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/Base/ShowerParticle.h����������������������������������������������������0000644�0001750�0001750�00000025632�11754474775�022235� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ShowerParticle.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ShowerParticle_H #define HERWIG_ShowerParticle_H // // This is the declaration of the ShowerParticle class. // #include "ThePEG/EventRecord/Particle.h" #include "Herwig++/Shower/SplittingFunctions/SplittingFunction.fh" #include "Herwig++/Shower/ShowerConfig.h" #include "ShowerKinematics.h" #include "ShowerParticle.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Shower * This class represents a particle in the showering process. * It inherits from the Particle class of ThePEG and has some * specifics information useful only during the showering process. * * Notice that: * - for forward evolution, it is clear what is meant by parent/child; * for backward evolution, however, it depends whether we want * to keep a physical picture or a Monte-Carlo effective one. * In the former case, an incoming particle (emitting particle) * splits into an emitted particle and the emitting particle after * the emission: the latter two are then children of the * emitting particle, the parent. In the Monte-Carlo effective * picture, we have that the particle close to the hard subprocess, * with higher (space-like) virtuality, splits into an emitted particle * and the emitting particle at lower virtuality: the latter two are, * in this case, the children of the first one, the parent. However we * choose a more physical picture where the new emitting particle is the * parented of the emitted final-state particle and the original emitting * particle. * - the pointer to a SplitFun object is set only in the case * that the particle has undergone a shower emission. This is similar to * the case of the decay of a normal Particle where * the pointer to a Decayer object is set only in the case * that the particle has undergone to a decay. * In the case of particle connected directly to the hard subprocess, * there is no pointer to the hard subprocess, but there is a method * isFromHardSubprocess() which returns true only in this case. * * @see Particle * @see ShowerConfig * @see ShowerKinematics */ class ShowerParticle: public Particle { public: /** @name Construction and descruction functions. */ //@{ /** * Standard Constructor. Note that the default constructor is * private - there is no particle without a pointer to a * ParticleData object. * @param x the ParticleData object * @param fs Whether or not the particle is an inital or final-state particle * @param tls Whether or not the particle initiates a time-like shower */ ShowerParticle(tcEventPDPtr x, bool fs, bool tls=false) : Particle(x), _isFinalState(fs), _reconstructionFixedPoint( false ), _perturbative(0), _initiatesTLS(tls), _x(1.0), _showerKinematics(), _scale(ZERO), _vMass(ZERO), _thePEGBase(), _evolutionScale2(), _radiationLine() {} /** * Copy constructor from a ThePEG Particle * @param x ThePEG particle * @param pert Where the particle came from * @param fs Whether or not the particle is an inital or final-state particle * @param tls Whether or not the particle initiates a time-like shower */ ShowerParticle(const Particle & x, unsigned int pert, bool fs, bool tls=false) : Particle(x), _isFinalState(fs), _reconstructionFixedPoint( false ), _perturbative(pert), _initiatesTLS(tls), _x(1.0), _showerKinematics(), _scale(ZERO), _vMass(ZERO), _thePEGBase(&x), _evolutionScale2(), _radiationLine() {} //@} public: /** * Access/Set various flags about the state of the particle */ //@{ /** * Access the flag that tells if the particle is final state * or initial state. */ bool isFinalState() const { return _isFinalState; } /** * Access the flag that tells if the particle is initiating a * time like shower when it has been emitted in an initial state shower. */ bool initiatesTLS() const { return _initiatesTLS; } /** * Access the flag which tells us where the particle came from * This is 0 for a particle produced in the shower, 1 if the particle came * from the hard sub-process and 2 is it came from a decay. */ unsigned int perturbative() const { return _perturbative; } //@} /** * Set/Get the momentum fraction for initial-state particles */ //@{ /** * For an initial state particle get the fraction of the beam momentum */ void x(double x) { _x = x; } /** * For an initial state particle set the fraction of the beam momentum */ double x() const { return _x; } //@} /** * Set/Get methods for the ShowerKinematics objects */ //@{ /** * Access/ the ShowerKinematics object. */ const ShoKinPtr & showerKinematics() const { return _showerKinematics; } /** * Set the ShowerKinematics object. */ void setShowerKinematics(const ShoKinPtr in) { _showerKinematics = in; } //@} /** * Members relating to the initial evolution scale and partner for the particle */ //@{ /** * Return the evolution scale \f$\tilde{q}\f$ */ Energy evolutionScale() const { return _scale; } /** * Set the evolution \f$\tilde{q}\f$ scale */ void setEvolutionScale(Energy scale) { _scale = scale; } /** * Return the virtual mass\f$ */ Energy virtualMass() const { return _vMass; } /** * Set the virtual mass */ void setVirtualMass(Energy mass) { _vMass = mass; } /** * Return the partner */ tShowerParticlePtr partner() const { return _partner; } /** * Set the partner */ void setPartner(const tShowerParticlePtr partner) { _partner = partner; } /** * Return the evolution scale \f$\tilde{q}\f$ belonging to the second partner */ Energy evolutionScale2() const { return _evolutionScale2; } /** * Set the evolution \f$\tilde{q}\f$ scale of the second partner for gluon */ void setEvolutionScale2(Energy evolutionScale2) { _evolutionScale2 = evolutionScale2; } /** * Return the radiation line of a gluon * This is 0 for a particle with random radiation choice, 1 for the colour * line and 2 for the anti-colour line. */ int radiationLine() { return _radiationLine; } /** * Set the radiation line of a gluon */ void setRadiationLine(int radiationLine) { _radiationLine = radiationLine; } /** * Return the progenitor of the shower */ tShowerParticlePtr progenitor() const { return _progenitor; } /** * Set the progenitor of the shower */ void setProgenitor(const tShowerParticlePtr progenitor) { _progenitor = progenitor; } //@} /** * Access/Set the flag that tells if the particle should be * treated in a special way during the kinematics reconstruction * (see KinematicsReconstructor class). * In practice, it returns true when either the particle is childless, * or is a on-shell decaying particle (in which case we have to set the flag to * true before the showering of this particle: it is not enough to check * if decayer() is not null, because if it emits radiation * the decays products will be "transferred" to the particle * instance after the showering). */ //@{ /** * Get the flag */ bool isReconstructionFixedPoint() const { return _reconstructionFixedPoint || children().empty(); } /** * Set the flag */ void setReconstructionFixedPoint(const bool in) { _reconstructionFixedPoint = in; } //@} /** * Members to store and provide access to variables for a specific * shower evolution scheme */ //@{ /** * Set the vector containing dimensionless variables */ vector<double> & showerParameters() { return _parameters; } /** * Set the vector containing dimensionful variables */ vector<Energy> & showerVariables() { return _variables; } //@} /** * If this particle came from the hard process get a pointer to ThePEG particle * it came from */ const tcPPtr getThePEGBase() const { return _thePEGBase; } protected: /** * Standard clone function. */ virtual PPtr clone() const; /** * Standard clone function. */ virtual PPtr fullclone() const; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<ShowerParticle> initShowerParticle; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ShowerParticle & operator=(const ShowerParticle &); private: /** * Whether the particle is in the final or initial state */ bool _isFinalState; /** * Whether the particle is a reconstruction fixed point */ bool _reconstructionFixedPoint; /** * Whether the particle came from */ unsigned int _perturbative; /** * Does a particle produced in the backward shower initiate a time-like shower */ bool _initiatesTLS; /** * Dimensionless parameters */ vector<double> _parameters; /** * Dimensionful parameters */ vector<Energy> _variables; /** * The beam energy fraction for particle's in the initial state */ double _x; /** * The shower kinematics for the particle */ ShoKinPtr _showerKinematics; /** * Evolution scales */ Energy _scale; /** * Virtual mass */ Energy _vMass; /** * Partners */ tShowerParticlePtr _partner; /** * Pointer to ThePEG Particle this ShowerParticle was created from */ const tcPPtr _thePEGBase; /** * Second evolution scale */ Energy _evolutionScale2; /** * Radiation Line */ int _radiationLine; /** * Progenitor */ tShowerParticlePtr _progenitor; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ShowerParticle. */ template <> struct BaseClassTrait<Herwig::ShowerParticle,1> { /** Typedef of the first base class of ShowerParticle. */ typedef Particle NthBase; }; /** This template specialization informs ThePEG about the name of * the ShowerParticle class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ShowerParticle> : public ClassTraitsBase<Herwig::ShowerParticle> { /** Return a platform-independent class name */ static string className() { return "Herwig::ShowerParticle"; } /** Create a Event object. */ static TPtr create() { return TPtr::Create(Herwig::ShowerParticle(tcEventPDPtr(),true)); } }; /** @endcond */ } #endif /* HERWIG_ShowerParticle_H */ ������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/UEBase.cc����������������������������������������������������������������0000644�0001750�0001750�00000001205�11754474775�017660� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the UEBase class. // #include "UEBase.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; AbstractClassDescription<UEBase> UEBase::initUEBase; // Definition of the static class description member. void UEBase::Init() { static ClassDocumentation<UEBase> documentation ("The UEBase class is an abstract base class used to minimize the" " dependence between the MPIHandler and all Shower classes"); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Shower/UEBase.fh����������������������������������������������������������������0000644�0001750�0001750�00000000471�11754474775�017674� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the UEBase class. // #ifndef HERWIG_UEBase_FH #define HERWIG_UEBase_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; //create typedefs for c, t, tc, UEBasePtr's: ThePEG_DECLARE_CLASS_POINTERS(UEBase,UEBasePtr); } #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/configure.ac��������������������������������������������������������������������0000644�0001750�0001750�00000011367�11755415234�017260� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.59]) AC_INIT([Herwig++],[2.6.0],[herwig@projects.hepforge.org],[Herwig++]) AC_CONFIG_SRCDIR([Utilities/HerwigStrategy.cc]) AC_CONFIG_AUX_DIR([Config]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([Config/config.h]) dnl AC_PRESERVE_HELP_ORDER AC_CANONICAL_HOST case "${host}" in *-darwin[[0156]].*) AC_MSG_ERROR([Herwig++ requires OS X 10.3 or later]) ;; *-darwin7.*) if test "x$MACOSX_DEPLOYMENT_TARGET" != "x10.3"; then AC_MSG_ERROR( [Please add 'MACOSX_DEPLOYMENT_TARGET=10.3' to the configure line.]) fi ;; esac dnl === disable debug symbols by default ===== if test "x$CXXFLAGS" = "x"; then CXXFLAGS=-O3 fi if test "x$CFLAGS" = "x"; then CFLAGS=-O3 fi dnl Looptools manual requires optimization off if test "x$FCFLAGS" = "x"; then FCFLAGS=-O0 fi dnl ========================================== AC_LANG([C++]) AM_INIT_AUTOMAKE([1.9 gnu dist-bzip2 -Wall]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) dnl Checks for programs. AC_PROG_CXX([g++]) AC_PROG_INSTALL AC_PROG_MAKE_SET AC_PROG_LN_S dnl modified search order AC_PROG_FC([gfortran g95 g77]) dnl xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn xlf90 f90 pgf90 pghpf epcf90 xlf f77 frt pgf77 cf77 fort77 fl32 af77]) AC_LANG_PUSH([Fortran]) AC_MSG_CHECKING([if the Fortran compiler ($FC) works]) AC_COMPILE_IFELSE( AC_LANG_PROGRAM([],[ print *[,]"Hello"]), [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) AC_MSG_ERROR([A Fortran compiler is required to build Herwig++.]) ] ) AC_LANG_POP([Fortran]) LT_PREREQ([2.2]) LT_INIT([disable-static dlopen pic-only]) dnl #################################### dnl #################################### dnl for Doc/fixinterfaces.pl AC_PATH_PROG(PERL, perl) HERWIG_CHECK_GSL HERWIG_CHECK_THEPEG HERWIG_CHECK_BOOST HERWIG_COMPILERFLAGS HERWIG_LOOPTOOLS HERWIG_PDF_PATH FASTJET_CHECK_FASTJET HERWIG_VERSIONSTRING HERWIG_CHECK_ABS_BUG HERWIG_ENABLE_MODELS SHARED_FLAG=-shared AM_CONDITIONAL(NEED_APPLE_FIXES, [test "xx${host/darwin/foundit}xx" != "xx${host}xx"]) if test "xx${host/darwin/foundit}xx" != "xx${host}xx"; then APPLE_DSO_FLAGS=-Wl,-undefined,dynamic_lookup SHARED_FLAG=-bundle fi AC_SUBST([APPLE_DSO_FLAGS]) AC_SUBST([SHARED_FLAG]) AC_CONFIG_FILES([UnderlyingEvent/Makefile Models/Makefile Models/StandardModel/Makefile Models/RSModel/Makefile Models/General/Makefile Models/Susy/Makefile Models/Susy/NMSSM/Makefile Models/UED/Makefile Models/Transplanckian/Makefile Models/Leptoquarks/Makefile Models/Zprime/Makefile Models/TTbAsymm/Makefile Models/ADD/Makefile Models/Sextet/Makefile Decay/Makefile Decay/FormFactors/Makefile Decay/Tau/Makefile Decay/Baryon/Makefile Decay/VectorMeson/Makefile Decay/Perturbative/Makefile Decay/ScalarMeson/Makefile Decay/TensorMeson/Makefile Decay/WeakCurrents/Makefile Decay/Partonic/Makefile Decay/General/Makefile Decay/Radiation/Makefile Doc/refman.conf Doc/refman.h PDT/Makefile PDF/Makefile MatrixElement/Makefile MatrixElement/General/Makefile MatrixElement/Lepton/Makefile MatrixElement/Hadron/Makefile MatrixElement/DIS/Makefile MatrixElement/Powheg/Makefile MatrixElement/Gamma/Makefile MatrixElement/Matchbox/Makefile MatrixElement/Matchbox/Base/Makefile MatrixElement/Matchbox/Utility/Makefile MatrixElement/Matchbox/Phasespace/Makefile MatrixElement/Matchbox/Dipoles/Makefile MatrixElement/Matchbox/InsertionOperators/Makefile MatrixElement/Matchbox/Powheg/Makefile MatrixElement/Matchbox/Builtin/Makefile MatrixElement/Matchbox/Builtin/Processes/Makefile Exsample2/Makefile Shower/SplittingFunctions/Makefile Shower/Default/Makefile Shower/Base/Makefile Shower/Makefile DipoleShower/Makefile DipoleShower/Base/Makefile DipoleShower/Kernels/Makefile DipoleShower/Kinematics/Makefile DipoleShower/Utility/Makefile DipoleShower/AlphaS/Makefile Utilities/Makefile Hadronization/Makefile lib/Makefile include/Makefile src/Makefile src/defaults/Makefile src/herwig-config Doc/Makefile Doc/HerwigDefaults.in Looptools/Makefile Analysis/Makefile src/Makefile-UserModules src/defaults/Analysis.in Contrib/Makefile Contrib/make_makefiles.sh Tests/Makefile Makefile]) AC_CONFIG_FILES([Doc/fixinterfaces.pl],[chmod +x Doc/fixinterfaces.pl]) HERWIG_OVERVIEW AC_CONFIG_COMMANDS([summary],[cat config.herwig]) AC_OUTPUT �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464207�017600� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/Hw64Selector.cc���������������������������������������������������0000644�0001750�0001750�00000007101�11754474775�022350� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Hw64Selector.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the Hw64Selector class. // #include "Hw64Selector.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/UseRandom.h" #include "CheckId.h" #include "Herwig++/Utilities/Kinematics.h" #include <ThePEG/Utilities/DescribeClass.h> using namespace Herwig; DescribeNoPIOClass<Hw64Selector,HadronSelector> describeHw64Selector("Herwig::Hw64Selector",""); IBPtr Hw64Selector::clone() const { return new_ptr(*this); } IBPtr Hw64Selector::fullclone() const { return new_ptr(*this); } void Hw64Selector::Init() { static ClassDocumentation<Hw64Selector> documentation ("There is no documentation for the Hw64Selector class"); } pair<tcPDPtr,tcPDPtr> Hw64Selector::chooseHadronPair(const Energy cluMass,tcPDPtr par1, tcPDPtr par2,tcPDPtr) { bool diquark = !(DiquarkMatcher::Check(par1->id()) || DiquarkMatcher::Check(par2->id())); pair<tcPDPtr,tcPDPtr> lighthad = lightestHadronPair(par1, par2); if(!lighthad.first || !lighthad.second) throw Exception() << "Hw64Selector::chooseHadronPair " << "We have 0's! First id = " << par1->id() << " second = " << par2->id() << ". This is probably a problem with either" << " undecayed heavy particles or colour connections" << Exception::eventerror; // calculate maximum momentum Energy PCMax = Kinematics::pstarTwoBodyDecay(cluMass,lighthad.first->mass(), lighthad.second->mass()); tcPDPtr had1 = tcPDPtr(); tcPDPtr had2 = tcPDPtr(); int ntry = 0; tcPDPtr quark = tcPDPtr(); const int nmax = 5000; Energy p; do { quark = partons()[UseRandom::irnd(partons().size())]; if(diquark && DiquarkMatcher::Check(quark->id())) continue; KupcoData::const_iterator it1,it2; if(pwt(quark) <= UseRandom::rnd()) continue; pair<long,long> pid(abs(par1->id()),quark->id()); do { it1 = table()[pid].begin(); advance(it1,int(double(table()[pid].size())*UseRandom::rnd())); } while(it1 != table()[pid].end() && it1->overallWeight < UseRandom::rnd()); had1 = it1->ptrData; pid = make_pair(quark->id(),abs(par2->id())); do { it2 = table()[pid].begin(); advance(it2,int(double(table()[pid].size())*UseRandom::rnd())); } while(it2 != table()[pid].end() && it2->overallWeight < UseRandom::rnd()); had2 = it2->ptrData; if(had1 && had2) { p = Kinematics::pstarTwoBodyDecay(cluMass, it1->mass, it2->mass); if(p/PCMax < UseRandom::rnd()) { had1 = had2 = tcPDPtr(); ntry++; } } } while((!had1|| !had2) && ntry < nmax); if(ntry >= nmax) return lighthad; int signHad1 = 0; int signHad2 = 0; if(CheckId::canBeHadron(par1,quark->CC()) && CheckId::canBeHadron(quark,par2)) { signHad1 = signHadron(par1, quark->CC(), had1); signHad2 = signHadron(par2, quark, had2); } else if(CheckId::canBeHadron(par1,quark) && CheckId::canBeHadron(quark->CC(),par2)) { signHad1 = signHadron(par1, quark, had1); signHad2 = signHadron(par2, quark->CC(), had2); } else throw Exception() << "Hw64Selector::chooseHadronPair()" << Exception::abortnow; return make_pair( signHad1 > 0 ? had1 : tcPDPtr(had1->CC()), signHad2 > 0 ? had2 : tcPDPtr(had2->CC())); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/ClusterDecayer.h��������������������������������������������������0000644�0001750�0001750�00000010530�11754474775�022677� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ClusterDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ClusterDecayer_H #define HERWIG_ClusterDecayer_H #include <ThePEG/Interface/Interfaced.h> #include <ThePEG/EventRecord/Step.h> #include "CluHadConfig.h" #include "HadronSelector.h" #include "ClusterDecayer.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Hadronization * \class ClusterDecayer * \brief This class decays the "normal" clusters * \author Philip Stephens * \author Alberto Ribon * * This class decays the "normal" clusters, e.g. ones that are not heavy * enough for fission, and not too light to decay into one hadron. * * This class is directs the production of hadrons via 2-body cluster decays. * The selection of the hadron flavours is given by Herwig::HadronSelector. * * @see HadronSelector * @see \ref ClusterDecayerInterfaces "The interfaces" * defined for ClusterDecayer. */ class ClusterDecayer: public Interfaced { public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor. */ ClusterDecayer(); //@} /** Decays all remaining clusters into hadrons. * This routine decays the clusters that are left after * Herwig::ClusterFissioner::fission and * Herwig::LightClusterDecayer::decay have been called. These are all * the "normal" clusters which are not forced into hadrons by * the other functions. */ void decay(const ClusterVector & clusters, tPVector & finalhadrons) ; public: /** * Standard ThePEG function for writing a persistent stream. */ void persistentOutput(PersistentOStream &) const; /** * Standard ThePEG function for reading from a persistent stream. */ void persistentInput(PersistentIStream &, int); /** * Standard Init function used to initialize the interfaces. */ 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; //@} private: /** * Private and non-existent assignment operator. */ ClusterDecayer & operator=(const ClusterDecayer &); public: /** Decays the cluster into two hadrons. * * This routine is used to take a given cluster and decay it into * two hadrons which are returned. If one of the constituents is from * the perturbative regime then the direction of the perturbative parton * is remembered and the decay is preferentially in that direction. The * direction of the decay is given by * \f[ \cos \theta = 1 + S \log r_1 \f] * where \f$ S \f$ is a parameter of the model and \f$ r_1 \f$ is a random * number [0,1]. */ pair<PPtr,PPtr> decayIntoTwoHadrons(tClusterPtr ptr); private: /** Compute the positions of the new hadrons based on the clusters position. * * This method calculates the positions of the children hadrons by a * call to Herwig::Smearing::gaussianSmearing with width inversely * proportional to the cluster mass, around the parent cluster position. */ void calculatePositions( const Lorentz5Momentum &, const LorentzPoint &, const Lorentz5Momentum &, const Lorentz5Momentum &, LorentzPoint &, LorentzPoint &) const; /** * Pointer to a Herwig::HadronSelector for choosing decay types */ Ptr<HadronSelector>::pointer _hadronsSelector; //@{ /** * Whether a cluster decays along the perturbative parton direction. */ bool _clDirLight; bool _clDirBottom; bool _clDirCharm; bool _clDirExotic; /** * The S parameter from decayIntoTwoHadrons */ double _clSmrLight; double _clSmrBottom; double _clSmrCharm; double _clSmrExotic; //@} /** * Whether or not the hadrons produced should be on-shell * or generated used the MassGenerator */ bool _onshell; /** * Number of tries to generate the masses of the decay products */ unsigned int _masstry; }; } #endif /* HERWIG_ClusterDecayer_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/ColourReconnector.fh����������������������������������������������0000644�0001750�0001750�00000000537�11754474775�023602� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the ColourReconnector class. // #ifndef HERWIG_ColourReconnector_FH #define HERWIG_ColourReconnector_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ColourReconnector; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ColourReconnector,ColourReconnectorPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/Hw64Selector.fh���������������������������������������������������0000644�0001750�0001750�00000000501�11754474775�022355� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the Hw64Selector class. // #ifndef HERWIG_Hw64Selector_FH #define HERWIG_Hw64Selector_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class Hw64Selector; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::Hw64Selector,Hw64SelectorPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/ClusterFinder.cc��������������������������������������������������0000644�0001750�0001750�00000032333�11754474775�022675� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ClusterFinder.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ClusterFinder class. // #include "ClusterFinder.h" #include <ThePEG/Interface/ClassDocumentation.h> #include <ThePEG/PDT/StandardMatchers.h> #include <ThePEG/PDT/EnumParticles.h> #include <ThePEG/Repository/EventGenerator.h> #include <ThePEG/EventRecord/Collision.h> #include "CheckId.h" #include "Herwig++/Utilities/EnumParticles.h" #include "Cluster.h" #include <ThePEG/Utilities/DescribeClass.h> using namespace Herwig; DescribeNoPIOClass<ClusterFinder,Interfaced> describeClusterFinder("Herwig::ClusterFinder",""); IBPtr ClusterFinder::clone() const { return new_ptr(*this); } IBPtr ClusterFinder::fullclone() const { return new_ptr(*this); } void ClusterFinder::Init() { static ClassDocumentation<ClusterFinder> documentation ("This class is responsible of finding clusters."); } ClusterVector ClusterFinder::formClusters(const PVector & partons) { set<tPPtr> examinedSet; // colour particles already included in a cluster map<tColinePtr, pair<tPPtr,tPPtr> > quarkQuark; // quark quark map<tColinePtr, pair<tPPtr,tPPtr> > aQuarkQuark; // anti quark anti quark ParticleSet inputParticles(partons.begin(),partons.end()); ClusterVector clusters; // Loop over all current particles. for(PVector::const_iterator pit=partons.begin();pit!=partons.end();++pit){ // Skip to the next particle if it is not coloured or already examined. assert(*pit); assert((*pit)->dataPtr()); if(!(**pit).data().coloured() || examinedSet.find(*pit) != examinedSet.end()) { continue; } // We assume that a cluster is made of, at most, 3 constituents although // in most cases the number will be 2; however, for baryon violating decays // (for example in Susy model without R parity conservation) we can have 3 // constituents. In the latter case, a quark (antiquark) do not have an // anticolour (colour) partner as usual, but its colour line either stems // from a colour source, or ends in a colour sink. In the case of double // baryon violating decays, but with overall baryon conservation // ( for instance: // tilde_u_R -> dbar_1 + dbar_2 // tilde_u_R_star -> d1 + d2 // where tilde_u_R and tilde_u_R_star are colour connected ) // a special treatment is needed, because first we have to process all // partons in the current step, and then for each left pair of quarks which // stem from a colour source we have to find the corresponding pair of // anti-quarks which ends in a colour sink and is connected with the // above colour source. These special pairs are kept into the maps: // spec/CluHadConfig.hialQuarkQuarkMap and specialAntiQuarkAntiQuarkMap. tParticleVector connected(3); int iElement = 0; connected[iElement++] = *pit; bool specialCase = false; if((*pit)->hasColour()) { tPPtr partner = (*pit)->colourLine()->getColouredParticle(partons.begin(), partons.end(), true); if(partner) { connected[iElement++]= partner; } // colour source : baryon-violating process else { if((*pit)->colourLine()->sourceNeighbours() != tColinePair()) { tColinePair sourcePair = (*pit)->colourLine()->sourceNeighbours(); tColinePtr intCL = tColinePtr(); for(int i = 0; i < 2; ++i) { tColinePtr pLine = i==0 ? sourcePair.first : sourcePair.second; int saveNumElements = iElement; for(tPVector::const_iterator cit = pLine->coloured().begin(); cit != pLine->coloured().end(); ++cit ) { ParticleSet::const_iterator cjt = inputParticles.find(*cit); if(cjt!=inputParticles.end()) connected[iElement++]= (*cit); } if(iElement == saveNumElements) intCL = pLine; } if(intCL && iElement == 2) { specialCase = true; pair<tPPtr,tPPtr> qp=pair<tPPtr,tPPtr>(connected[0],connected[1]); quarkQuark.insert(pair<tColinePtr,pair<tPPtr,tPPtr> >(intCL,qp)); } else if(iElement != 3) { throw Exception() << "Colour connections fail in the hadronization for " << **pit << "in ClusterFinder::formClusters" << " for a coloured particle." << " Failed to find particles from a source" << Exception::runerror; } } else { throw Exception() << "Colour connections fail in the hadronization for " << **pit << "in ClusterFinder::formClusters for" << " a coloured particle" << Exception::runerror; } } } if((*pit)->hasAntiColour()) { tPPtr partner = (*pit)->antiColourLine()->getColouredParticle(partons.begin(), partons.end(), false); if(partner) { connected[iElement++]=partner; } // colour sink : baryon-violating process else { if((*pit)->antiColourLine()->sinkNeighbours() != tColinePair()) { tColinePair sinkPair = (*pit)->antiColourLine()->sinkNeighbours(); tColinePtr intCL = tColinePtr(); for(int i = 0; i < 2; ++i) { tColinePtr pLine = i==0 ? sinkPair.first : sinkPair.second; int saveNumElements = iElement; for(tPVector::const_iterator cit = pLine->antiColoured().begin(); cit != pLine->antiColoured().end(); ++cit ) { ParticleSet::const_iterator cjt = inputParticles.find(*cit); if(cjt!=inputParticles.end()) connected[iElement++]= (*cit); } if(iElement == saveNumElements) intCL = pLine; } if(intCL && iElement == 2) { specialCase = true; pair<tPPtr,tPPtr> aqp=pair<tPPtr,tPPtr>(connected[0],connected[1]); aQuarkQuark.insert(pair<tColinePtr,pair<tPPtr,tPPtr> >(intCL,aqp)); } else if( iElement !=3) { throw Exception() << "Colour connections fail in the hadronization for " << **pit << "in ClusterFinder::formClusters for" << " an anti-coloured particle." << " Failed to find particles from a sink" << Exception::runerror; } } else { throw Exception() << "Colour connections fail in the hadronization for " << **pit << "in ClusterFinder::formClusters for" << " an anti-coloured particle" << Exception::runerror; } } } if(!specialCase) { // Tag the components of the found cluster as already examined. for (int i=0; i<iElement; ++i) examinedSet.insert(connected[i]); // Create the cluster object with the colour connected particles ClusterPtr cluPtr = new_ptr(Cluster(connected[0],connected[1], connected[2])); // add to the step connected[0]->addChild(cluPtr); connected[1]->addChild(cluPtr); if(connected[2]) connected[2]->addChild(cluPtr); clusters.push_back(cluPtr); // Check if any of the components is a beam remnant, and if this // is the case then inform the cluster. // this will only work for baryon collisions for (int i=0; i<iElement; ++i) { if(!connected[i]->parents().empty()&& connected[i]->parents()[0]->id()==ParticleID::Remnant&& DiquarkMatcher::Check(connected[i]->id())) cluPtr->isBeamCluster(connected[i]); } } } // Treat now the special cases, if any. The idea is to find for each pair // of quarks coming from a common colour source the corresponding pair of // antiquarks coming from a common colour sink, connected to the above // colour source via the same colour line. Then, randomly couple one of // the two quarks with one of the two antiquarks, and do the same with the // quark and antiquark left. for(map<tColinePtr, pair<tPPtr,tPPtr> >::const_iterator cit = quarkQuark.begin(); cit != quarkQuark.end(); ++cit ) { tColinePtr coline = cit->first; pair<tPPtr,tPPtr> quarkPair = cit->second; if(aQuarkQuark.find( coline ) != aQuarkQuark.end()) { pair<tPPtr,tPPtr> antiQuarkPair = aQuarkQuark.find(coline)->second; ClusterPtr cluPtr1, cluPtr2; if ( UseRandom::rndbool() ) { cluPtr1 = new_ptr(Cluster(quarkPair.first , antiQuarkPair.first)); cluPtr2 = new_ptr(Cluster(quarkPair.second , antiQuarkPair.second)); quarkPair.first->addChild(cluPtr1); antiQuarkPair.first->addChild(cluPtr1); quarkPair.second->addChild(cluPtr2); antiQuarkPair.second->addChild(cluPtr2); } else { cluPtr1 = new_ptr(Cluster(quarkPair.first , antiQuarkPair.second)); cluPtr2 = new_ptr(Cluster(quarkPair.second , antiQuarkPair.first)); quarkPair.second->addChild(cluPtr2); antiQuarkPair.first->addChild(cluPtr2); quarkPair.first->addChild(cluPtr1); antiQuarkPair.second->addChild(cluPtr1); } clusters.push_back(cluPtr1); clusters.push_back(cluPtr2); } else { throw Exception() << "ClusterFinder::formClusters : " << "***Skip event: unable to match pairs in " << "Baryon-violating processes***" << Exception::eventerror; } } return clusters; } void ClusterFinder::reduceToTwoComponents(ClusterVector & clusters) { // In order to preserve all of the information, we do not modify the // directly the 3-component clusters, but instead we define new clusters, // which are related to the original ones by a child-parent relationship, // by considering two randomly chosen components as a diquark (or anti-diquark). // These new clusters are first added to the vector vecNewRedefinedCluPtr, // and at the end, when all input clusters have been examined, the elements of // this vector will be copied in collecCluPtr (the reason is that it is not // allowed to modify a STL container while iterating over it). vector<tClusterPtr> redefinedClusters; tParticleVector vec(3); for(ClusterVector::iterator cluIter = clusters.begin() ; cluIter != clusters.end() ; ++cluIter) { if ( ! (*cluIter)->isAvailable() || (*cluIter)->numComponents() != 3 ) continue; for(int i = 0; i<(*cluIter)->numComponents(); i++) vec[i] = (*cluIter)->particle(i); // Randomly selects two components to be considered as a (anti)diquark // and place them as the second and third element of vec. int choice = UseRandom::rnd3(1.0, 1.0, 1.0); switch (choice) { case 0: break; case 1: swap(vec[0],vec[1]); break; case 2: swap(vec[0],vec[2]); break; } tcPDPtr temp1 = vec[1]->dataPtr(); tcPDPtr temp2 = vec[2]->dataPtr(); tcPDPtr dataDiquark = CheckId::makeDiquark(temp1,temp2); if(!dataDiquark) throw Exception() << "Could not make a diquark from" << temp1->PDGName() << " and " << temp2->PDGName() << " in ClusterFinder::reduceToTwoComponents()" << Exception::eventerror; // Create the new cluster (with two components) and assign to it the same // momentum and position of the original (with three components) one. // Furthermore, assign to the diquark component a momentum given by the // sum of the two original components from which has been formed; for the // position, we are assuming, very simply, that the diquark position is // the average positions of the two original components. // Notice that the mass (5-th component of the 5-momentum) of the diquark // is set by hand to the constituent mass of the diquark (which is equal // to the sum of the constituent masses of the two quarks which form the // diquark) because the sum of 5-component vectors do add only the "normal" // 4-components, not the 5-th one. After that, the 5-momentum of the diquark // is in an inconsistent state, because the mass (5-th component) is not // equal to the invariant mass obtained from the 4-momemtum. This is not // unique to this kind of component (all perturbative components are in // a similar situation), but it is not harmful. PPtr diquark = dataDiquark->produceParticle(); vec[1]->addChild(diquark); vec[2]->addChild(diquark); ClusterPtr nclus = new_ptr(Cluster(vec[0],diquark)); //vec[0]->addChild(nclus); //diquark->addChild(nclus); (*cluIter)->addChild(nclus); nclus->set5Momentum((*cluIter)->momentum()); nclus->setVertex((*cluIter)->vertex()); for(int i = 0; i<nclus->numComponents(); i++) { if(nclus->particle(i)->id() == dataDiquark->id()) { nclus->particle(i)->set5Momentum(Lorentz5Momentum(vec[1]->momentum() + vec[2]->momentum(), dataDiquark->constituentMass())); nclus->particle(i)->setVertex(0.5*(vec[1]->vertex() + vec[2]->vertex())); } } // Set the parent/children relationship between the original cluster // (the one with three components) with the new one (the one with two components) // and add the latter to the vector of new redefined clusters. //(*cluIter)->addChild(nclus); redefinedClusters.push_back(nclus); } // Add to collecCluPtr all of the redefined new clusters (indeed the // pointers to them are added) contained in vecNewRedefinedCluPtr. /// \todo why do we keep the original of the redefined clusters? for (tClusterVector::const_iterator it = redefinedClusters.begin(); it != redefinedClusters.end(); ++it) { clusters.push_back(*it); } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/CluHadConfig.h����������������������������������������������������0000644�0001750�0001750�00000002236�11754474775�022253� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // CluHadConfig.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_CluHadConfig_H #define HERWIG_CluHadConfig_H #include "ThePEG/Config/ThePEG.h" #include "Cluster.fh" #include "ClusterDecayer.fh" #include "ClusterFissioner.fh" #include "HadronSelector.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Hadronization * \brief This file contains the typedef declarations used in Hadronization * \author Philip Stephens * \author Alberto Ribon * * This is the declaration of the CluHadConfig.h header file. * * Handy header file to be included in all Hadronization classes. <BR> * It contains only some useful typedefs. * * See also: * Herwig.h */ /** * Typedef for a vector of ClusterPtr */ typedef vector<ClusterPtr> ClusterVector; /** * Typedef for a vector of tClusterPtr */ typedef vector<tClusterPtr> tClusterVector; } #endif // HERWIG_CluHadConfig_H ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/Makefile.in�������������������������������������������������������0000644�0001750�0001750�00000047146�11756461677�021671� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Hadronization DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwHadronization_la_LIBADD = am_libHwHadronization_la_OBJECTS = CheckId.lo Cluster.lo \ ClusterDecayer.lo ClusterFinder.lo ClusterFissioner.lo \ ClusterHadronizationHandler.lo ColourReconnector.lo \ HadronSelector.lo Hw64Selector.lo HwppSelector.lo \ LightClusterDecayer.lo PartonSplitter.lo libHwHadronization_la_OBJECTS = $(am_libHwHadronization_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwHadronization_la_SOURCES) DIST_SOURCES = $(libHwHadronization_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwHadronization.la libHwHadronization_la_SOURCES = \ CheckId.cc CheckId.h \ CluHadConfig.h \ Cluster.h Cluster.cc Cluster.fh \ ClusterDecayer.cc ClusterDecayer.h ClusterDecayer.fh \ ClusterFinder.cc ClusterFinder.h ClusterFinder.fh \ ClusterFissioner.cc ClusterFissioner.h ClusterFissioner.fh \ ClusterHadronizationHandler.cc ClusterHadronizationHandler.h \ ClusterHadronizationHandler.fh \ ColourReconnector.cc ColourReconnector.h ColourReconnector.fh\ HadronSelector.cc HadronSelector.h HadronSelector.fh\ Hw64Selector.cc Hw64Selector.h Hw64Selector.fh\ HwppSelector.cc HwppSelector.h HwppSelector.fh\ LightClusterDecayer.cc LightClusterDecayer.h LightClusterDecayer.fh \ PartonSplitter.cc PartonSplitter.h PartonSplitter.fh all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Hadronization/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Hadronization/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwHadronization.la: $(libHwHadronization_la_OBJECTS) $(libHwHadronization_la_DEPENDENCIES) $(EXTRA_libHwHadronization_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwHadronization_la_OBJECTS) $(libHwHadronization_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CheckId.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Cluster.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ClusterDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ClusterFinder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ClusterFissioner.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ClusterHadronizationHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ColourReconnector.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HadronSelector.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Hw64Selector.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwppSelector.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LightClusterDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PartonSplitter.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/PartonSplitter.h��������������������������������������������������0000644�0001750�0001750�00000007010�11754474775�022752� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PartonSplitter.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PartonSplitter_H #define HERWIG_PartonSplitter_H #include "CluHadConfig.h" #include <ThePEG/Interface/Interfaced.h> #include <ThePEG/Utilities/Selector.h> #include "PartonSplitter.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Hadronization * \class PartonSplitter * \brief This class splits the gluons from the end of the shower. * \author Philip Stephens * \author Alberto Ribon * * This class does all of the nonperturbative parton splittings needed * immediately after the end of the showering (both initial and final), * as very first step of the cluster hadronization. * * \todo change so quark weights can be varied and quarks other * than u and d can be produced * * * @see \ref PartonSplitterInterfaces "The interfaces" * defined for PartonSplitter. */ class PartonSplitter: public Interfaced { public: /** * This method does the nonperturbative splitting of: * time-like gluons. At the end of the shower the gluons should be * on a "physical" mass shell and should therefore be time-like. * @param tagged The tagged particles to be split * @return The particles which were not split and the products of splitting. */ void split(PVector & tagged); 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: /** * Private and non-existent assignment operator. */ PartonSplitter & operator=(const PartonSplitter &); /** * Non-perturbatively split a time-like gluon, * if something goes wrong null pointers are returned. * @param gluon The gluon to be split * @param quark The quark produced in the splitting * @param anti The antiquark produced in the splitting */ void splitTimeLikeGluon(tcPPtr gluon, PPtr & quark, PPtr & anti); private: /** * The selector to pick the type of quark */ Selector<PDPtr,double> _quarkSelector; }; } #endif /* HERWIG_PartonSplitter_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/Hw64Selector.h����������������������������������������������������0000644�0001750�0001750�00000005523�11754474775�022220� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Hw64Selector.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_Hw64Selector_H #define HERWIG_Hw64Selector_H // // This is the declaration of the Hw64Selector class. // #include "HadronSelector.h" #include "Hw64Selector.fh" namespace Herwig { using namespace ThePEG; /** \ingroup hadronization * The Hw64Selector class selects the hadrons produced in cluster decay using * the FORTRAN HERWIG variant of the cluster model. * * @see \ref Hw64SelectorInterfaces "The interfaces" * defined for Hw64Selector. */ class Hw64Selector: public HadronSelector { public: /** * The default constructor. */ Hw64Selector() : HadronSelector(0) {} /** * Method to return a pair of hadrons given the PDG codes of * two or three constituents * @param cluMass The mass of the cluster * @param par1 The particle pointer of the first constituent * @param par2 The particle pointer of the second constituent * @param par3 The particle pointer of the third constituent */ virtual pair<tcPDPtr,tcPDPtr> chooseHadronPair(const Energy cluMass,tcPDPtr par1, tcPDPtr par2,tcPDPtr par3 = PDPtr()) ; 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Hw64Selector & operator=(const Hw64Selector &); }; } #endif /* HERWIG_Hw64Selector_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/ClusterHadronizationHandler.cc������������������������������������0000644�0001750�0001750�00000025622�11754474775�025600� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ClusterHadronizationHandler.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ClusterHadronizationHandler class. // #include "ClusterHadronizationHandler.h" #include <ThePEG/Interface/ClassDocumentation.h> #include <ThePEG/Persistency/PersistentOStream.h> #include <ThePEG/Persistency/PersistentIStream.h> #include <ThePEG/Interface/Parameter.h> #include <ThePEG/Interface/Reference.h> #include <ThePEG/Handlers/EventHandler.h> #include <ThePEG/Handlers/Hint.h> #include <ThePEG/PDT/ParticleData.h> #include <ThePEG/EventRecord/Particle.h> #include <ThePEG/EventRecord/Step.h> #include <ThePEG/PDT/PDT.h> #include <ThePEG/PDT/EnumParticles.h> #include <ThePEG/Utilities/Throw.h> #include "Herwig++/Utilities/EnumParticles.h" #include "CluHadConfig.h" #include "Cluster.h" #include <ThePEG/Utilities/DescribeClass.h> using namespace Herwig; DescribeClass<ClusterHadronizationHandler,HadronizationHandler> describeClusterHadronizationHandler("Herwig::ClusterHadronizationHandler",""); IBPtr ClusterHadronizationHandler::clone() const { return new_ptr(*this); } IBPtr ClusterHadronizationHandler::fullclone() const { return new_ptr(*this); } void ClusterHadronizationHandler::persistentOutput(PersistentOStream & os) const { os << _partonSplitter << _clusterFinder << _colourReconnector << _clusterFissioner << _lightClusterDecayer << _clusterDecayer << ounit(_minVirtuality2,GeV2) << ounit(_maxDisplacement,mm) << _underlyingEventHandler; } void ClusterHadronizationHandler::persistentInput(PersistentIStream & is, int) { is >> _partonSplitter >> _clusterFinder >> _colourReconnector >> _clusterFissioner >> _lightClusterDecayer >> _clusterDecayer >> iunit(_minVirtuality2,GeV2) >> iunit(_maxDisplacement,mm) >> _underlyingEventHandler; } void ClusterHadronizationHandler::Init() { static ClassDocumentation<ClusterHadronizationHandler> documentation ("This is the main handler class for the Cluster Hadronization", "The hadronization was performed using the cluster model of \\cite{Webber:1983if}.", "%\\cite{Webber:1983if}\n" "\\bibitem{Webber:1983if}\n" " B.~R.~Webber,\n" " ``A QCD Model For Jet Fragmentation Including Soft Gluon Interference,''\n" " Nucl.\\ Phys.\\ B {\\bf 238}, 492 (1984).\n" " %%CITATION = NUPHA,B238,492;%%\n" // main manual ); static Reference<ClusterHadronizationHandler,PartonSplitter> interfacePartonSplitter("PartonSplitter", "A reference to the PartonSplitter object", &Herwig::ClusterHadronizationHandler::_partonSplitter, false, false, true, false); static Reference<ClusterHadronizationHandler,ClusterFinder> interfaceClusterFinder("ClusterFinder", "A reference to the ClusterFinder object", &Herwig::ClusterHadronizationHandler::_clusterFinder, false, false, true, false); static Reference<ClusterHadronizationHandler,ColourReconnector> interfaceColourReconnector("ColourReconnector", "A reference to the ColourReconnector object", &Herwig::ClusterHadronizationHandler::_colourReconnector, false, false, true, false); static Reference<ClusterHadronizationHandler,ClusterFissioner> interfaceClusterFissioner("ClusterFissioner", "A reference to the ClusterFissioner object", &Herwig::ClusterHadronizationHandler::_clusterFissioner, false, false, true, false); static Reference<ClusterHadronizationHandler,LightClusterDecayer> interfaceLightClusterDecayer("LightClusterDecayer", "A reference to the LightClusterDecayer object", &Herwig::ClusterHadronizationHandler::_lightClusterDecayer, false, false, true, false); static Reference<ClusterHadronizationHandler,ClusterDecayer> interfaceClusterDecayer("ClusterDecayer", "A reference to the ClusterDecayer object", &Herwig::ClusterHadronizationHandler::_clusterDecayer, false, false, true, false); static Parameter<ClusterHadronizationHandler,Energy2> interfaceMinVirtuality2 ("MinVirtuality2", "Minimum virtuality^2 of partons to use in calculating distances (unit [GeV2]).", &ClusterHadronizationHandler::_minVirtuality2, GeV2, 0.1*GeV2, ZERO, 10.0*GeV2,false,false,false); static Parameter<ClusterHadronizationHandler,Length> interfaceMaxDisplacement ("MaxDisplacement", "Maximum displacement that is allowed for a particle (unit [millimeter]).", &ClusterHadronizationHandler::_maxDisplacement, mm, 1.0e-10*mm, 0.0*mm, 1.0e-9*mm,false,false,false); static Reference<ClusterHadronizationHandler,StepHandler> interfaceUnderlyingEventHandler ("UnderlyingEventHandler", "Pointer to the handler for the Underlying Event. " "Set to NULL to disable.", &ClusterHadronizationHandler::_underlyingEventHandler, false, false, true, true, false); } void ClusterHadronizationHandler::doinitrun() { HadronizationHandler::doinitrun(); // The run initialization is used here to all Cluster to have access to the // ClusterHadronizationHandler class instance, via a static pointer. Cluster::setPointerClusterHadHandler(this); } namespace { void extractChildren(tPPtr p, set<PPtr> & all) { if (p->children().empty()) return; for (PVector::const_iterator child = p->children().begin(); child != p->children().end(); ++child) { all.insert(*child); extractChildren(*child, all); } } } void ClusterHadronizationHandler:: handle(EventHandler & ch, const tPVector & tagged, const Hint &) { useMe(); PVector currentlist(tagged.begin(),tagged.end()); // set the scale for coloured particles to just above the gluon mass squared // if less than this so they are classed as perturbative Energy2 Q02 = 1.01*sqr(getParticleData(ParticleID::g)->constituentMass()); for(unsigned int ix=0;ix<currentlist.size();++ix) { if(currentlist[ix]->scale()<Q02) currentlist[ix]->scale(Q02); } // split the gluons _partonSplitter->split(currentlist); // form the clusters ClusterVector clusters = _clusterFinder->formClusters(currentlist); _clusterFinder->reduceToTwoComponents(clusters); // perform colour reconnection if needed and then // decay the clusters into one hadron bool lightOK = false; short tried = 0; const ClusterVector savedclusters = clusters; tPVector finalHadrons; // only needed for partonic decayer while (!lightOK && tried++ < 10) { // no colour reconnection with baryon-number-violating (BV) clusters ClusterVector CRclusters, BVclusters; CRclusters.reserve( clusters.size() ); BVclusters.reserve( clusters.size() ); for (size_t ic = 0; ic < clusters.size(); ++ic) { ClusterPtr cl = clusters.at(ic); bool hasClusterParent = false; for (unsigned int ix=0; ix < cl->parents().size(); ++ix) { if (cl->parents()[ix]->id() == ParticleID::Cluster) { hasClusterParent = true; break; } } if (cl->numComponents() > 2 || hasClusterParent) BVclusters.push_back(cl); else CRclusters.push_back(cl); } // colour reconnection _colourReconnector->rearrange(CRclusters); // tag new clusters as children of the partons to hadronize _setChildren(CRclusters); // recombine vectors of (possibly) reconnected and BV clusters clusters.clear(); clusters.insert( clusters.end(), CRclusters.begin(), CRclusters.end() ); clusters.insert( clusters.end(), BVclusters.begin(), BVclusters.end() ); // fission of heavy clusters // NB: during cluster fission, light hadrons might be produced straight away finalHadrons = _clusterFissioner->fission(clusters,isSoftUnderlyingEventON()); lightOK = _lightClusterDecayer->decay(clusters,finalHadrons); // if the decay of the light clusters was not successful, undo the cluster // fission and decay steps and revert to the original state of the event // record if (!lightOK) { clusters = savedclusters; for_each(clusters.begin(), clusters.end(), mem_fun(&Particle::undecay)); } } if (!lightOK) throw Exception("CluHad::handle(): tried LightClusterDecayer 10 times!", Exception::eventerror); // decay the remaining clusters _clusterDecayer->decay(clusters,finalHadrons); // ***************************************** // ***************************************** // ***************************************** StepPtr pstep = newStep(); set<PPtr> allDecendants; for (tPVector::const_iterator it = tagged.begin(); it != tagged.end(); ++it) { extractChildren(*it, allDecendants); } for(set<PPtr>::const_iterator it = allDecendants.begin(); it != allDecendants.end(); ++it) { // this is a workaround because the set sometimes // re-orders parents after their children if ((*it)->children().empty()) pstep->addDecayProduct(*it); else { pstep->addDecayProduct(*it); pstep->addIntermediate(*it); } } // ***************************************** // ***************************************** // ***************************************** // soft underlying event if needed if (isSoftUnderlyingEventON()) { assert(_underlyingEventHandler); ch.performStep(_underlyingEventHandler,Hint::Default()); } // zero all positions // extract all particles from the event tEventPtr event=ch.currentEvent(); vector<tPPtr> particles; particles.reserve(256); event->select(back_inserter(particles), ThePEG::AllSelector()); // and the final-state particles set<tPPtr> finalstate; event->selectFinalState(inserter(finalstate)); for(vector<tPPtr>::const_iterator pit=particles.begin(); pit!=particles.end();++pit) { // if a final-state particle just zero production if(finalstate.find(*pit)!=finalstate.end()) { (**pit).setVertex(LorentzPoint()); } // if not zero the lot else { (**pit).setVertex(LorentzPoint()); (**pit).setLifeLength(LorentzDistance()); } } } void ClusterHadronizationHandler::_setChildren(ClusterVector clusters) const { // erase existing information about the partons' children tPVector partons; for (ClusterVector::const_iterator cl = clusters.begin(); cl != clusters.end(); cl++) { partons.push_back( (*cl)->colParticle() ); partons.push_back( (*cl)->antiColParticle() ); } for_each(partons.begin(), partons.end(), mem_fun(&Particle::undecay)); // give new parents to the clusters: their constituents for (ClusterVector::iterator cl = clusters.begin(); cl != clusters.end(); cl++) { (*cl)->colParticle()->addChild(*cl); (*cl)->antiColParticle()->addChild(*cl); } } ��������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/CheckId.h���������������������������������������������������������0000644�0001750�0001750�00000013574�11754474775�021266� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // CheckId.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // #ifndef HERWIG_CheckId_H #define HERWIG_CheckId_H // // This is the declaration of the CheckId class. #include "ThePEG/PDT/StandardMatchers.h" #include "ThePEG/PDT/ParticleData.h" #include <ThePEG/PDT/EnumParticles.h> #include "ThePEG/Repository/CurrentGenerator.h" namespace Herwig { using namespace ThePEG; /** \ingroup Hadronization * * This is a pure static class which provides some useful methods * for checking the PDG id of particles. * Notice that the name "quark" in the methods below means any of * the following: * d , u , s , c , b anti-d , anti-u , anti-s , anti-c , anti-b * that is we do not distinguish between particle or antiparticle * ( because can be done directly by the user: * id > 0 for particles ; id < 0 for anti-particles ) * and we do not include t (and anti-t ) because we are interested * in components of mesons and baryons. * Similarly for the name "diquark" which include all diquarks (id > 0) * and anti-diquarks (id < 0) not made with t ( anti-t ) component. * * NB) For Other useful methods (even some implemented in CheckId class!) * @see StandardMatchers */ class CheckId { public: /** * Return the particle data of the diquark (anti-diquark) made by the two * quarks (antiquarks) par1, par2. * @param par1 (anti-)quark data pointer * @param par2 (anti-)quark data pointer */ static PDPtr makeDiquark(tcPDPtr par1, tcPDPtr par2) { long id1 = par1->id(); long id2 = par2->id(); long idnew = makeDiquarkID(id1,id2); assert(!CurrentGenerator::isVoid()); return CurrentGenerator::current().getParticleData(idnew); } /** * Return the id of the diquark (anti-diquark) made by the two * quarks (antiquarks) of id specified in input (id1, id2). * Caller must ensure that id1 and id2 are quarks. */ static long makeDiquarkID(long id1, long id2); /** * Return true if the two particles in input can be the components of a meson; *false otherwise. */ static bool canBeMeson(tcPDPtr par1,tcPDPtr par2) { assert(par1 && par2); long id1 = par1->id(); long id2 = par2->id(); // a Meson must not have any diquarks if(DiquarkMatcher::Check(id1) || DiquarkMatcher::Check(id2)) return false; return ( abs(int(par1->iColour()))== 3 && abs(int(par2->iColour())) == 3 && id1*id2 < 0); } /** * Return true if the two or three particles in input can be the components * of a baryon; false otherwise. */ static bool canBeBaryon(tcPDPtr par1, tcPDPtr par2 , tcPDPtr par3 = PDPtr()) { assert(par1 && par2); long id1 = par1->id(), id2 = par2->id(); if (!par3) { if( id1*id2 < 0) return false; if(DiquarkMatcher::Check(id1)) return abs(int(par2->iColour())) == 3 && !DiquarkMatcher::Check(id2); if(DiquarkMatcher::Check(id2)) return abs(int(par1->iColour())) == 3; return false; } else { // In this case, to be a baryon, all three components must be (anti-)quarks // and with the same sign. return (par1->iColour() == 3 && par2->iColour() == 3 && par3->iColour() == 3) || (par1->iColour() == -3 && par2->iColour() == -3 && par3->iColour() == -3); } } /** * Return true if the two or three particles in input can be the components * of a hadron; false otherwise. */ static bool canBeHadron(tcPDPtr par1, tcPDPtr par2 , tcPDPtr par3 = PDPtr()) { return (canBeMeson(par1,par2) && !par3) || canBeBaryon(par1,par2,par3); } /** * Return true if any of the possible three input particles has * b-flavour; * false otherwise. In the case that only the first particle is specified, * it can be: an (anti-)quark, an (anti-)diquark * an (anti-)meson, an (anti-)baryon; in the other cases, each pointer * is assumed to be either (anti-)quark or (anti-)diquark. */ static bool hasBottom(tcPDPtr par1, tcPDPtr par2 = PDPtr(), tcPDPtr par3 = PDPtr()); /** * Return true if any of the possible three input particles has * c-flavour; * false otherwise.In the case that only the first pointer is specified, * it can be: a (anti-)quark, a (anti-)diquark * a (anti-)meson, a (anti-)baryon; in the other cases, each pointer * is assumed to be either (anti-)quark or (anti-)diquark. */ static bool hasCharm(tcPDPtr par1, tcPDPtr par2 = PDPtr(), tcPDPtr par3 = PDPtr()); /** * Return true, if any of the possible input particle pointer is an exotic quark, e.g. Susy quark; * false otherwise. */ static bool isExotic(tcPDPtr par1, tcPDPtr par2 = PDPtr(), tcPDPtr par3 = PDPtr()); private: /** * Return true if the particle pointer corresponds to a diquark * or anti-diquark carrying b flavour; false otherwise. */ static bool isDiquarkWithB(tcPDPtr par1) { if (!par1) return false; long id1 = par1->id(); return DiquarkMatcher::Check(id1) && (abs(id1)/1000)%10 == ParticleID::b; } /** * Return true if the particle pointer corresponds to a diquark * or anti-diquark carrying c flavour; false otherwise. */ static bool isDiquarkWithC(tcPDPtr par1) { if (!par1) return false; long id1 = par1->id(); return ( DiquarkMatcher::Check(id1) && ( (abs(id1)/1000)%10 == ParticleID::c || (abs(id1)/100)%10 == ParticleID::c ) ); } private: /** * Pure static class so default constructor is private */ CheckId(); /** * Pure static class so copy constructor is private */ CheckId(const CheckId & x); /** * Assignmet is private as static */ CheckId & operator=(const CheckId & x); }; } #endif /* HERWIG_CheckId_H */ ������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/ClusterFinder.h���������������������������������������������������0000644�0001750�0001750�00000006405�11754474775�022540� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ClusterFinder.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ClusterFinder_H #define HERWIG_ClusterFinder_H #include <ThePEG/Interface/Interfaced.h> #include "CluHadConfig.h" #include "ClusterFinder.fh" namespace Herwig { using namespace ThePEG; /*! \ingroup Hadronization * \class ClusterFinder * \brief This class forms clusters from the partons produced in the Shower. * \author Philip Stephens * \author Alberto Ribon * * This class scans through the particles in the event and produces a * collection of clusters, defined as a colour-singlet combinations of * colour-connected particles. There are no assumptions about the type * (i.e. quark or diquark) or number of the component particles of the * cluster; however, most of the time clusters are formed by quark-antiquark * pairs. In special situations, such as baryon-violating processes in * R-nonconserved Susy, three quarks (or three antiquarks) could form a * cluster. Because at the moment we don't know how to handle 3-component * clusters (i.e. how to fission heavy ones, or how to decay clusters), we * provide also a separate method, reduceToTwoComponents, which * does the job of redefining these 3-component clusters as "normal" * 2-component ones, simply by randomly considering two (anti-) quarks as a * (anti-) diquark. Notice that if in the future the method * reduceToTwoComponents is modified or even eliminated, the * main method for finding clusters, formClusters, will not need * any change. * * @see \ref ClusterFinderInterfaces "The interfaces" * defined for ClusterFinder. */ class ClusterFinder: public Interfaced { public: /** * This routine forms the clusters of the event. * * Form clusters starting from the list of partons given. * It also checks if the cluster is a beam cluster, that is if * at least one of its components is a beam remnant. */ ClusterVector formClusters(const PVector & partons) ; /** * Reduces three component clusters into two components. * * For the eventual clusters that have three components * (quark, quark, quark) or (antiquark, antiquark, antiquark), * it redefines them as "normal" clusters with two components: * (quark,diquark) or (antiquark,antidiquark), by a random drawing. * This could be eliminated or changed in the future. */ void reduceToTwoComponents(ClusterVector&) ; public: /** * Standard Init function used to initialize the interfaces. */ 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; //@} private: /** * Private and non-existent assignment operator. */ ClusterFinder & operator=(const ClusterFinder &); }; } #endif /* HERWIG_ClusterFinder_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/PartonSplitter.fh�������������������������������������������������0000644�0001750�0001750�00000000515�11754474775�023123� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the PartonSplitter class. // #ifndef HERWIG_PartonSplitter_FH #define HERWIG_PartonSplitter_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class PartonSplitter; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::PartonSplitter,PartonSplitterPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/Cluster.cc��������������������������������������������������������0000644�0001750�0001750�00000015604�11754474775�021547� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Cluster.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the Cluster class. // #include "Cluster.h" #include <ThePEG/Repository/UseRandom.h> #include <ThePEG/Repository/CurrentGenerator.h> #include <ThePEG/PDT/ParticleData.h> #include "ClusterHadronizationHandler.h" #include <ThePEG/Utilities/DescribeClass.h> using namespace Herwig; DescribeNoPIOClass<Cluster,Particle> describeCluster("Herwig::Cluster",""); PPtr Cluster::clone() const { return new_ptr(*this); } PPtr Cluster::fullclone() const { return clone(); } tcCluHadHdlPtr Cluster::_clusterHadHandler = tcCluHadHdlPtr(); Energy2 Cluster::_mg2 = ZERO; Cluster::Cluster() : Particle(CurrentGenerator::current(). getParticleData(long(ParticleID::Cluster))), _isAvailable(true), _hasReshuffled(false), _component(), _original(), _isBeamRemnant(), _isPerturbative(), _numComp(0), _id(0) {} Cluster::Cluster(tPPtr p1, tPPtr p2, tPPtr p3) : Particle(CurrentGenerator::current(). getParticleData(long(ParticleID::Cluster))), _isAvailable(true), _hasReshuffled(false) { if(!dataPtr()) { cerr << "Cluster Particle Data not defined. Cannot complete Hadronization " << "without ParticleData for id " << ParticleID::Cluster << '\n'; } _component.push_back(new_ptr(Particle(*p1))); _component.push_back(new_ptr(Particle(*p2))); if(p3) _component.push_back(new_ptr(Particle(*p3))); _original.push_back(p1); _original.push_back(p2); if(p3) _original.push_back(p3); _isPerturbative.push_back(initPerturbative(p1)); _isPerturbative.push_back(initPerturbative(p2)); if(p3) _isPerturbative.push_back(initPerturbative(p3)); else _isPerturbative.push_back(false); for(int i = 0; i<3; i++) _isBeamRemnant.push_back(false); if(p3) { _numComp = 3; _id = 100*abs(p1->id()) + 10*abs(p2->id()) + abs(p3->id()); } else { _numComp = 2; if(p2->id() > 10) _id = 10*abs(p2->id()/100) + abs(p1->id()); else if(p1->id() > 10) _id = 10*abs(p1->id()/100) + abs(p2->id()); else _id = 10*abs(p1->id()) + abs(p2->id()); } calculateP(); calculateX(); } Cluster::Cluster(tcEventPDPtr x) : Particle(x), _isAvailable(false), _hasReshuffled(false), _component(), _original(), _isBeamRemnant(), _isPerturbative(), _numComp(0), _id(0) {} Cluster::Cluster(const Particle &x) : Particle(x), _isAvailable(false), _hasReshuffled(false), _component(), _original(), _isBeamRemnant(), _isPerturbative(), _numComp(0), _id(0) {} Energy Cluster::sumConstituentMasses() const { if(_numComp == 3) { return _component[0]->mass() + _component[1]->mass() + _component[2]->mass(); } else if(_numComp == 2) return _component[0]->mass() + _component[1]->mass(); else return ZERO; } void Cluster::calculateP() { Lorentz5Momentum m; for(int i = 0; i<_numComp; i++) m += _component[i]->momentum(); m.rescaleMass(); set5Momentum(m); } void Cluster::calculateX() { if ( _numComp != 2 ) { // Only in the case of two components we have a definition of cluster // position in terms of the two components. setVertex(LorentzPoint()); } else { // Get the needed parameters. assert(_clusterHadHandler); Energy2 vmin2 = _clusterHadHandler->minVirtuality2(); Length dmax = _clusterHadHandler->maxDisplacement(); // Get the positions and displacements of the two components (Lab frame). LorentzPoint pos1 = _component[0]->vertex(); Lorentz5Momentum p1 = _component[0]->momentum(); LorentzDistance displace1 = -log( UseRandom::rnd() ) * hbarc * p1 * (1 / sqrt(sqr(p1.m2() - p1.mass2()) + sqr(vmin2))); if ( abs( displace1.m() ) > dmax ) { displace1 *= dmax / abs( displace1.m() ); } LorentzPoint pos2 = _component[1]->vertex(); Lorentz5Momentum p2 = _component[1]->momentum(); LorentzDistance displace2 = -log( UseRandom::rnd() ) * hbarc * p2 * (1 / sqrt(sqr(p2.m2() - p2.mass2()) + sqr(vmin2))); if ( abs( displace2.m() ) > dmax ) { displace2 *= dmax / abs( displace2.m() ); } double s1 = 0.0, s2 = 0.0; Lorentz5Momentum pcl = p1 + p2; if ( abs( pcl.vect().dot( displace1.vect() ) ) > 1.0e-20*MeV*mm && abs( pcl.vect().dot( displace2.vect() ) ) > 1.0e-20*MeV*mm ) { // The displacement with the smallest projection along pcl.vect() // is scaled up such that both displacements have equal projections // along pcl.vect(). double ratio = ( abs( pcl.vect().dot( displace1.vect() ) ) / abs( pcl.vect().dot( displace2.vect() ) ) ); if ( pcl.vect().dot(displace1.vect()) * pcl.vect().dot(displace2.vect()) < 0.0*sqr(MeV*mm) ) { ratio *= -1; } if ( abs( ratio ) > 1.0 ) { displace2 *= ratio; } else { displace1 *= ratio; } // Now determine the s1 and s2 values. double s1minusS2 = ( pcl.vect().dot( pos2.vect() - pos1.vect() ) / pcl.vect().dot( displace1.vect() ) ); if ( s1minusS2 < 0 ) { s1 = 1.0; s2 = s1 - s1minusS2; } else if ( s1minusS2 > 0 ) { s2 = 1; s1 = s2 + s1minusS2; } } // Now, finally, determine the cluster position setVertex(0.5 * (pos1 + pos2 + s1*displace1 + s2*displace2)); } // end else part of if ( _collecCompPtr.size() != 2 ) } bool Cluster::isBeamCluster() const { for(int i = 0; i<_numComp; i++) if(_isBeamRemnant[i]) return true; return false; } void Cluster::isBeamCluster(tPPtr part) { for(int i = 0; i<_numComp; i++) { if(_original[i] == part) { _isBeamRemnant[i] = true; break; } } } bool Cluster::isStatusFinal() const { int s = children().size(); for(unsigned int i = 0; i<children().size(); i++) if(children()[i]->PDGName() == "Cluster") s--; return ( s > 0); } tPPtr Cluster::particle(int i) const { return (i < _numComp) ? _component[i] : PPtr(); } tPPtr Cluster::colParticle(bool anti) const { if ( _numComp != 2 ) return PPtr(); if ( _original[0]->hasColour(anti) ) return _original[0]; else if ( _original[1]->hasColour(anti) ) return _original[1]; else return PPtr(); } tPPtr Cluster::antiColParticle() const { return colParticle(true); } bool Cluster::isPerturbative(int i) const { return _isPerturbative[i]; } bool Cluster::isBeamRemnant(int i) const { return _isBeamRemnant[i]; } void Cluster::setBeamRemnant(int i, bool b) { if(i < _numComp) _isBeamRemnant[i] = b; } void Cluster::setPointerClusterHadHandler(tcCluHadHdlPtr gp) { _clusterHadHandler = gp; _mg2=sqr(_clusterHadHandler-> getParticleData(ParticleID::g)->constituentMass()); } ����������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/Cluster.h���������������������������������������������������������0000644�0001750�0001750�00000021623�11754474775�021407� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Cluster.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_Cluster_H #define HERWIG_Cluster_H #include <ThePEG/EventRecord/Particle.h> #include "Herwig++/Utilities/EnumParticles.h" #include "CluHadConfig.h" #include "ClusterHadronizationHandler.fh" #include "Cluster.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Hadronization * \class Cluster * \brief This class describes a cluster object. * \author Philip Stephens * \author Alberto Ribon * * This class represents a cluster, which is a colour singlet made usually * of two components (quark-antiquark, quark-diquark, antiquark-antidiquark) * or rarely by three components (quark-quark-quark, antiquark-antiquark- * antiquark). A reference to the container with the pointers to its * Components is provided. * * The class provides access to the pointers which point to: * * - The cluster parent. In the case that the cluster it is a fission * product of a heavy cluster the parent is a cluster. If the cluster * is formed from the perturbative partons then the parents will be * the colour connected partons that formed the cluster. * - The children (usually two). In the case the cluster is a * heavy cluster that undergoes fission the children are clusters. * Occasionally the cluster has been "redefined" (re-interpreted). For * example in the case that three quark or anti-quark components * have been redefined as two components (quark+diquark, or antiquark+ * antidiquark). * - The (eventual) reshuffling partner, necessary for energy-momentum * conservation when light clusters are decayed into single hadron. Not * all clusters will have a reshuffling partner. * * Notice that in order to determine the cluster position from the positions * of the components, the Cluster class needs some parameters. * Because the Cluster class is neither interfaced nor persistent, * a static pointer to the ClusterHadronizationHandler class instance, * where the parameters are, is used. This static pointer is * set via the method setPointerClusterHadHandler(), during the * run initialization, doinitrun() of ClusterHadronizationHandler. * * @see ClusterHadronizationHandler */ class Cluster : public Particle { public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor. */ Cluster(); /** * Constructor with a particleData pointer */ Cluster(tcEventPDPtr); /** * This creates a cluster from 2 (or 3) partons. */ Cluster(tPPtr part1, tPPtr part2, tPPtr part3 = tPPtr()); /** * Also a constructor where a particle is given not a cluster. */ Cluster(const Particle &); //@} /** * Set the static pointer to the ClusterHadronizationHandler object. * The pointer is set in ClusterHadronizationHandler::doinitrun(). */ static void setPointerClusterHadHandler(tcCluHadHdlPtr gp); /** * Number of quark (diquark) constituents (normally two). */ int numComponents() const { return _numComp; } /** * Sum of the constituent masses of the components of the cluster. */ Energy sumConstituentMasses() const; /** * Returns the ith constituent. */ tPPtr particle(int i) const; /** * Returns the original constituent carrying colour */ tPPtr colParticle(bool anti = false) const; /** * Returns the original constituent carrying anticolour */ tPPtr antiColParticle() const; /** * Returns whether the ith constituent is from a perturbative process. */ bool isPerturbative(int) const; /** * Indicates whether the ith constituent is a beam remnant. */ bool isBeamRemnant(int) const; /** * Sets whether the ith constituent is a beam remnant. */ void setBeamRemnant(int,bool); /** * Returns the clusters id, not the same as the PDG id. */ int clusterId() const { return _id; } public: /** * Returns true when a constituent is a beam remnant. */ bool isBeamCluster() const; /** * Set the pointer to the reshuffling partner cluster. */ void flagAsReshuffled() { _hasReshuffled = true; } /** * Sets the component (if any) that points to "part" as a beam remnant. */ void isBeamCluster(tPPtr part); /** * Returns true if this cluster is to be handled by the hadronization. */ bool isAvailable() const { return _isAvailable; } /** * Sets the value of availability. */ void isAvailable(bool inputAvailable) { _isAvailable = inputAvailable; } /** * Return true if the cluster does not have cluster parent. */ bool isStatusInitial() const { return parents().empty(); } /** * Return true if the cluster does not have cluster children and * it is not already decayed (i.e. it does not have hadron children) * (to be used only after the fission of heavy clusters). */ bool isReadyToDecay() const { return children().empty(); } /** * Return true if the cluster has one and only one cluster children * and no hadron children: that means either that its three quarks or * anti-quarks components have been redefined as two components * (quark+diquark, or antiquark+antidiquark), or that the cluster * has been used as a partner for the momentum reshuffling necessary * to conserve energy-momentum when a light cluster is decayed into * a single hadron (notice that this latter light cluster has * isRedefined() false, because it has an hadron child). * In both cases, the unique cluster children is the new redefined * cluster. The two cases can be distinguish by the next method. */ bool isRedefined() const { return ( children().size() == 1 && children()[0]->id() == ParticleID::Cluster ); } /** * Return true when it has a reshuffling partner. * Notice that a cluster can have hasBeenReshuffled() true but * isRedefined() false: this is the case of a light cluster * that decays into a single hadron. */ bool hasBeenReshuffled() const { return _hasReshuffled; } /** * Return true if the cluster has hadron children. */ bool isStatusFinal() const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual PPtr 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 PPtr fullclone() const; //@} private: /** * Private and non-existent assignment operator. */ Cluster & operator=(const Cluster &); /** * Calculate the 5-momentum vector of the cluster * The 5-momentum of the cluster is given by * \f[ P = \sum_i p_i \f] * and the mass of the cluster is \f$m^2 = P^2\f$ */ void calculateP(); /** * Calculate the 4-position vector of the cluster * Displacement of the ith constituent given by momentum \f$p_i\f$ * vertex \f$x_i\f$ and mass \f$m_i\f$ is * \f[ D_i = -C \log(r) \frac{p_i}{\sqrt{(p_i^2 - m_i^2)^2 + v^4}} \f] * where \f$r\f$ is a random number [0,1], * \f$v\f$ is the minimum virtuality and \f$C\f$ is * a conversion factor from GeV to millimeters. We can then find the * difference in \f$s\f$ factors as * \f[ (s_1-s_2) = \frac{(\vec{p}_1 + \vec{p}_2) \cdot (\vec{x}_2 - * \vec{x}_1)}{(\vec{p}_1 + \vec{p}_2) \cdot \vec{D}_1}. * \f] * if \f$s_2>s_1\f$ then \f$s_1 = 1.0\f$ otherwise \f$s_2 = 1.0\f$. * These are then used to determine the value of the clusters vertex as * \f[ X = \frac{1}{2} ( x_1 +x_2 + s_1 D_1 + s_2 D_2). \f] */ void calculateX(); /** * Determines whether constituent p is perturbative or not. */ bool initPerturbative(tPPtr p) { return p->scale() > _mg2; } /** * This is needed to determine if a cluster is from a perturbative quark. */ static tcCluHadHdlPtr _clusterHadHandler; /** * The gluon mass is needed to determine if a cluster is from a perturbative quark */ static Energy2 _mg2; bool _isAvailable; //!< Whether the cluster is hadronizing bool _hasReshuffled; //!< Whether the cluster has been reshuffled ParticleVector _component; //!< The constituent partons tParticleVector _original; //!< The original components vector<bool> _isBeamRemnant; //!< Whether a parton is a beam remnant vector<bool> _isPerturbative; //!< Whether a parton is perturbative int _numComp; //!< The number of constituents long _id; //!< The id of this cluster }; } // end namespace Herwig #endif // HERWIG_Cluster_H �������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/HadronSelector.cc�������������������������������������������������0000644�0001750�0001750�00000074741�11754722467�023043� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HadronSelector.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the HadronSelector class. // #include "HadronSelector.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include <ThePEG/PDT/EnumParticles.h> #include <ThePEG/Repository/EventGenerator.h> #include <ThePEG/Repository/CurrentGenerator.h> #include <ThePEG/Repository/Repository.h> #include "CheckId.h" #include <ThePEG/Utilities/DescribeClass.h> using namespace Herwig; DescribeAbstractClass<HadronSelector,Interfaced> describeHadronSelector("Herwig::HadronSelector",""); namespace { // // debug helper // void dumpTable(const HadronSelector::HadronTable & tbl) { // typedef HadronSelector::HadronTable::const_iterator TableIter; // for (TableIter it = tbl.begin(); it != tbl.end(); ++it) { // cerr << it->first.first << ' ' // << it->first.second << '\n'; // for (HadronSelector::KupcoData::const_iterator jt = it->second.begin(); // jt != it->second.end(); ++jt) { // cerr << '\t' << *jt << '\n'; // } // } // } bool weightIsLess (pair<tcPDPtr,double> a, pair<tcPDPtr,double> b) { return a.second < b.second; } } ostream & Herwig::operator<< (ostream & os, const HadronSelector::HadronInfo & hi ) { os << std::scientific << std::showpoint << std::setprecision(4) << setw(2) << hi.id << '\t' // << hi.ptrData << ' ' << hi.swtef << '\t' << hi.wt << '\t' << hi.overallWeight << '\t' << ounit(hi.mass,GeV); return os; } HadronSelector::HadronSelector(unsigned int opt) : _pwtDquark( 1.0 ),_pwtUquark( 1.0 ),_pwtSquark( 1.0 ),_pwtCquark( 1.0 ), _pwtBquark( 1.0 ),_pwtDIquark( 1.0 ), _weight1S0(Nmax,1.),_weight3S1(Nmax,1.),_weight1P1(Nmax,1.),_weight3P0(Nmax,1.), _weight3P1(Nmax,1.),_weight3P2(Nmax,1.),_weight1D2(Nmax,1.),_weight3D1(Nmax,1.), _weight3D2(Nmax,1.),_weight3D3(Nmax,1.), _repwt(Lmax,vector<vector<double> >(Jmax,vector<double>(Nmax))), _sngWt( 1.0 ),_decWt( 1.0 ), _topt(opt),_trial(0) { // The mixing angles // the ideal mixing angle const double idealAngleMix = atan( sqrt(0.5) ) * 180.0 / Constants::pi; // \eta-\eta' mixing angle _etamix = -23.0; // phi-omega mixing angle _phimix = +36.0; // h_1'-h_1 mixing angle _h1mix = idealAngleMix; // f_0(1710)-f_0(1370) mixing angle _f0mix = idealAngleMix; // f_1(1420)-f_1(1285)\f$ mixing angle _f1mix = idealAngleMix; // f'_2-f_2\f$ mixing angle _f2mix = +26.0; // eta_2(1870)-eta_2(1645) mixing angle _eta2mix = idealAngleMix; // phi(???)-omega(1650) mixing angle _omhmix = idealAngleMix; // phi_3-omega_3 mixing angle _ph3mix = +28.0; // eta(1475)-eta(1295) mixing angle _eta2Smix = idealAngleMix; // phi(1680)-omega(1420) mixing angle _phi2Smix = idealAngleMix; } void HadronSelector::persistentOutput(PersistentOStream & os) const { os << _partons << _pwtDquark << _pwtUquark << _pwtSquark << _pwtCquark << _pwtBquark << _pwtDIquark << _etamix << _phimix << _h1mix << _f0mix << _f1mix << _f2mix << _eta2mix << _omhmix << _ph3mix << _eta2Smix << _phi2Smix << _weight1S0 << _weight3S1 << _weight1P1 << _weight3P0 << _weight3P1 << _weight3P2 << _weight1D2 << _weight3D1 << _weight3D2 << _weight3D3 << _forbidden << _sngWt << _decWt << _repwt << _pwt << _table; } void HadronSelector::persistentInput(PersistentIStream & is, int) { is >> _partons >> _pwtDquark >> _pwtUquark >> _pwtSquark >> _pwtCquark >> _pwtBquark >> _pwtDIquark>> _etamix >> _phimix >> _h1mix >> _f0mix >> _f1mix >> _f2mix >> _eta2mix >> _omhmix >> _ph3mix >> _eta2Smix >> _phi2Smix >> _weight1S0 >> _weight3S1 >> _weight1P1 >> _weight3P0 >> _weight3P1 >> _weight3P2 >> _weight1D2 >> _weight3D1 >> _weight3D2 >> _weight3D3 >> _forbidden >> _sngWt >> _decWt >> _repwt >> _pwt >> _table; } void HadronSelector::Init() { static ClassDocumentation<HadronSelector> documentation ("There is no documentation for the HadronSelector class"); static Parameter<HadronSelector,double> interfacePwtDquark("PwtDquark","Weight for choosing a quark D", &HadronSelector::_pwtDquark, 0, 1.0, 0.0, 10.0, false,false,false); static Parameter<HadronSelector,double> interfacePwtUquark("PwtUquark","Weight for choosing a quark U", &HadronSelector::_pwtUquark, 0, 1.0, 0.0, 10.0, false,false,false); static Parameter<HadronSelector,double> interfacePwtSquark("PwtSquark","Weight for choosing a quark S", &HadronSelector::_pwtSquark, 0, 1.0, 0.0, 10.0, false,false,false); static Parameter<HadronSelector,double> interfacePwtCquark("PwtCquark","Weight for choosing a quark C", &HadronSelector::_pwtCquark, 0, 1.0, 0.0, 10.0, false,false,false); static Parameter<HadronSelector,double> interfacePwtBquark("PwtBquark","Weight for choosing a quark B", &HadronSelector::_pwtBquark, 0, 1.0, 0.0, 10.0, false,false,false); static Parameter<HadronSelector,double> interfacePwtDIquark("PwtDIquark","Weight for choosing a DIquark", &HadronSelector::_pwtDIquark, 0, 1.0, 0.0, 100.0, false,false,false); static Parameter<HadronSelector,double> interfaceSngWt("SngWt","Weight for singlet baryons", &HadronSelector::_sngWt, 0, 1.0, 0.0, 10.0, false,false,false); static Parameter<HadronSelector,double> interfaceDecWt("DecWt","Weight for decuplet baryons", &HadronSelector::_decWt, 0, 1.0, 0.0, 10.0, false,false,false); static RefVector<HadronSelector,ParticleData> interfacePartons ("Partons", "The partons which are to be considered as the consistuents of the hadrons.", &HadronSelector::_partons, -1, false, false, true, false, false); static RefVector<HadronSelector,ParticleData> interfaceForbidden ("Forbidden", "The PDG codes of the particles which cannot be produced in the hadronization.", &HadronSelector::_forbidden, -1, false, false, true, false, false); // // mixing angles // // the ideal mixing angle const double idealAngleMix = atan( sqrt(0.5) ) * 180.0 / Constants::pi; static Parameter<HadronSelector,double> interface11S0Mixing ("11S0Mixing", "The mixing angle for the I=0 mesons from the 1 1S0 multiplet," " i.e. eta and etaprime.", &HadronSelector::_etamix, -23., -180., 180., false, false, Interface::limited); static Parameter<HadronSelector,double> interface13S1Mixing ("13S1Mixing", "The mixing angle for the I=0 mesons from the 1 3S1 multiplet," " i.e. phi and omega.", &HadronSelector::_phimix, +36., -180., 180., false, false, Interface::limited); static Parameter<HadronSelector,double> interface11P1Mixing ("11P1Mixing", "The mixing angle for the I=0 mesons from the 1 1P1 multiplet," " i.e. h_1' and h_1.", &HadronSelector::_h1mix, idealAngleMix, -180., 180., false, false, Interface::limited); static Parameter<HadronSelector,double> interface13P0Mixing ("13P0Mixing", "The mixing angle for the I=0 mesons from the 1 3P0 multiplet," " i.e. f_0(1710) and f_0(1370).", &HadronSelector::_f0mix, idealAngleMix, -180., 180., false, false, Interface::limited); static Parameter<HadronSelector,double> interface13P1Mixing ("13P1Mixing", "The mixing angle for the I=0 mesons from the 1 3P1 multiplet," " i.e. f_1(1420) and f_1(1285).", &HadronSelector::_f1mix, idealAngleMix, -180., 180., false, false, Interface::limited); static Parameter<HadronSelector,double> interface13P2Mixing ("13P2Mixing", "The mixing angle for the I=0 mesons from the 1 3P2 multiplet," " i.e. f'_2 and f_2.", &HadronSelector::_f2mix, 26.0, -180., 180., false, false, Interface::limited); static Parameter<HadronSelector,double> interface11D2Mixing ("11D2Mixing", "The mixing angle for the I=0 mesons from the 1 1D2 multiplet," " i.e. eta_2(1870) and eta_2(1645).", &HadronSelector::_eta2mix, idealAngleMix, -180., 180., false, false, Interface::limited); static Parameter<HadronSelector,double> interface13D0Mixing ("13D0Mixing", "The mixing angle for the I=0 mesons from the 1 3D0 multiplet," " i.e. eta_2(1870) phi(?) and omega(1650).", &HadronSelector::_omhmix, idealAngleMix, -180., 180., false, false, Interface::limited); static Parameter<HadronSelector,double> interface13D1Mixing ("13D1Mixing", "The mixing angle for the I=0 mesons from the 1 3D1 multiplet," " i.e. phi_3 and omega_3.", &HadronSelector::_ph3mix, 28.0, -180., 180., false, false, Interface::limited); static Parameter<HadronSelector,double> interface21S0Mixing ("21S0Mixing", "The mixing angle for the I=0 mesons from the 2 1S0 multiplet," " i.e. eta(1475) and eta(1295).", &HadronSelector::_eta2Smix, idealAngleMix, -180., 180., false, false, Interface::limited); static Parameter<HadronSelector,double> interface23S1Mixing ("23S1Mixing", "The mixing angle for the I=0 mesons from the 1 3S1 multiplet," " i.e. phi(1680) and omega(1420).", &HadronSelector::_phi2Smix, idealAngleMix, -180., 180., false, false, Interface::limited); // // the meson weights // static ParVector<HadronSelector,double> interface1S0Weights ("1S0Weights", "The weights for the 1S0 multiplets start with n=1.", &HadronSelector::_weight1S0, Nmax, 1.0, 0.0, 100.0, false, false, Interface::limited); static ParVector<HadronSelector,double> interface3S1Weights ("3S1Weights", "The weights for the 3S1 multiplets start with n=1.", &HadronSelector::_weight3S1, Nmax, 1.0, 0.0, 100.0, false, false, Interface::limited); static ParVector<HadronSelector,double> interface1P1Weights ("1P1Weights", "The weights for the 1P1 multiplets start with n=1.", &HadronSelector::_weight1P1, Nmax, 1.0, 0.0, 100.0, false, false, Interface::limited); static ParVector<HadronSelector,double> interface3P0Weights ("3P0Weights", "The weights for the 3P0 multiplets start with n=1.", &HadronSelector::_weight3P0, Nmax, 1.0, 0.0, 100.0, false, false, Interface::limited); static ParVector<HadronSelector,double> interface3P1Weights ("3P1Weights", "The weights for the 3P1 multiplets start with n=1.", &HadronSelector::_weight3P1, Nmax, 1.0, 0.0, 100.0, false, false, Interface::limited); static ParVector<HadronSelector,double> interface3P2Weights ("3P2Weights", "The weights for the 3P2 multiplets start with n=1.", &HadronSelector::_weight3P2, Nmax, 1.0, 0.0, 100.0, false, false, Interface::limited); static ParVector<HadronSelector,double> interface1D2Weights ("1D2Weights", "The weights for the 1D2 multiplets start with n=1.", &HadronSelector::_weight1D2, Nmax, 1.0, 0.0, 100.0, false, false, Interface::limited); static ParVector<HadronSelector,double> interface3D1Weights ("3D1Weights", "The weights for the 3D1 multiplets start with n=1.", &HadronSelector::_weight3D1, Nmax, 1.0, 0.0, 100.0, false, false, Interface::limited); static ParVector<HadronSelector,double> interface3D2Weights ("3D2Weights", "The weights for the 3D2 multiplets start with n=1.", &HadronSelector::_weight3D2, Nmax, 1.0, 0.0, 100.0, false, false, Interface::limited); static ParVector<HadronSelector,double> interface3D3Weights ("3D3Weights", "The weights for the 3D3 multiplets start with n=1.", &HadronSelector::_weight3D3, Nmax, 1.0, 0.0, 100.0, false, false, Interface::limited); static Switch<HadronSelector,unsigned int> interfaceTrial ("Trial", "A Debugging option to only produce certain types of hadrons", &HadronSelector::_trial, 0, false, false); static SwitchOption interfaceTrialAll (interfaceTrial, "All", "Produce all the hadrons", 0); static SwitchOption interfaceTrialPions (interfaceTrial, "Pions", "Only produce pions", 1); static SwitchOption interfaceTrialSpin2 (interfaceTrial, "Spin2", "Only mesons with spin less than or equal to two are produced", 2); static SwitchOption interfaceTrialSpin3 (interfaceTrial, "Spin3", "Only hadrons with spin less tan or equal to three are produced", 3); } double HadronSelector::mixingStateWeight(long id) { switch(id) { case ParticleID::eta: return 0.5*probabilityMixing(_etamix ,1); case ParticleID::etaprime: return 0.5*probabilityMixing(_etamix ,2); case ParticleID::phi: return 0.5*probabilityMixing(_phimix ,1); case ParticleID::omega: return 0.5*probabilityMixing(_phimix ,2); case ParticleID::hprime_1: return 0.5*probabilityMixing(_h1mix ,1); case ParticleID::h_1: return 0.5*probabilityMixing(_h1mix ,2); case 10331: return 0.5*probabilityMixing(_f0mix ,1); case 10221: return 0.5*probabilityMixing(_f0mix ,2); case ParticleID::fprime_1: return 0.5*probabilityMixing(_f1mix ,1); case ParticleID::f_1: return 0.5*probabilityMixing(_f1mix ,2); case ParticleID::fprime_2: return 0.5*probabilityMixing(_f2mix ,1); case ParticleID::f_2: return 0.5*probabilityMixing(_f2mix ,2); case 10335: return 0.5*probabilityMixing(_eta2mix ,1); case 10225: return 0.5*probabilityMixing(_eta2mix ,2); // missing phi member of 13D1 should be here case 30223: return 0.5*probabilityMixing(_omhmix ,2); case 337: return 0.5*probabilityMixing(_ph3mix ,1); case 227: return 0.5*probabilityMixing(_ph3mix ,2); case 100331: return 0.5*probabilityMixing(_eta2mix ,1); case 100221: return 0.5*probabilityMixing(_eta2mix ,2); case 100333: return 0.5*probabilityMixing(_phi2Smix,1); case 100223: return 0.5*probabilityMixing(_phi2Smix,2); default: return 1./3.; } } void HadronSelector::doinit() { Interfaced::doinit(); // the default partons allowed // the quarks for ( int ix=1; ix<=5; ++ix ) { _partons.push_back(getParticleData(ix)); } // the diquarks for(unsigned int ix=1;ix<=5;++ix) { for(unsigned int iy=1; iy<=ix;++iy) { _partons.push_back(getParticleData(CheckId::makeDiquarkID(ix,iy))); } } // set the weights for the various excited mesons // set all to one to start with for (int l = 0; l < Lmax; ++l ) { for (int j = 0; j < Jmax; ++j) { for (int n = 0; n < Nmax; ++n) { _repwt[l][j][n] = 1.0; } } } // set the others from the relevant vectors for( int ix=0;ix<max(int(_weight1S0.size()),int(Nmax));++ix) _repwt[0][0][ix]=_weight1S0[ix]; for( int ix=0;ix<max(int(_weight3S1.size()),int(Nmax));++ix) _repwt[0][1][ix]=_weight3S1[ix]; for( int ix=0;ix<max(int(_weight1P1.size()),int(Nmax));++ix) _repwt[1][1][ix]=_weight1P1[ix]; for( int ix=0;ix<max(int(_weight3P0.size()),int(Nmax));++ix) _repwt[1][0][ix]=_weight3P0[ix]; for( int ix=0;ix<max(int(_weight3P1.size()),int(Nmax));++ix) _repwt[1][1][ix]=_weight3P1[ix]; for( int ix=0;ix<max(int(_weight3P2.size()),int(Nmax));++ix) _repwt[1][2][ix]=_weight3P2[ix]; for( int ix=0;ix<max(int(_weight1D2.size()),int(Nmax));++ix) _repwt[2][2][ix]=_weight1D2[ix]; for( int ix=0;ix<max(int(_weight3D1.size()),int(Nmax));++ix) _repwt[2][1][ix]=_weight3D1[ix]; for( int ix=0;ix<max(int(_weight3D2.size()),int(Nmax));++ix) _repwt[2][2][ix]=_weight3D2[ix]; for( int ix=0;ix<max(int(_weight3D3.size()),int(Nmax));++ix) _repwt[2][3][ix]=_weight3D3[ix]; // weights for the different quarks etc for(unsigned int ix=0; ix<_partons.size(); ++ix) { _pwt[_partons[ix]]=1.; } _pwt[getParticleData(1)] = _pwtDquark; _pwt[getParticleData(2)] = _pwtUquark; _pwt[getParticleData(3)] = _pwtSquark; _pwt[getParticleData(4)] = _pwtCquark; _pwt[getParticleData(5)] = _pwtBquark; _pwt[getParticleData(1103)] = _pwtDIquark * _pwtDquark * _pwtDquark; _pwt[getParticleData(2101)] = 0.5 * _pwtDIquark * _pwtUquark * _pwtDquark; _pwt[getParticleData(2203)] = _pwtDIquark * _pwtUquark * _pwtUquark; _pwt[getParticleData(3101)] = 0.5 * _pwtDIquark * _pwtSquark * _pwtDquark; _pwt[getParticleData(3201)] = 0.5 * _pwtDIquark * _pwtSquark * _pwtUquark; _pwt[getParticleData(3303)] = _pwtDIquark * _pwtSquark * _pwtSquark; // Commenting out heavy di-quark weights _pwt[getParticleData(4101)] = 0.0; _pwt[getParticleData(4201)] = 0.0; _pwt[getParticleData(4301)] = 0.0; _pwt[getParticleData(4403)] = 0.0; _pwt[getParticleData(5101)] = 0.0; _pwt[getParticleData(5201)] = 0.0; _pwt[getParticleData(5301)] = 0.0; _pwt[getParticleData(5401)] = 0.0; _pwt[getParticleData(5503)] = 0.0; // find the maximum map<tcPDPtr,double>::iterator pit = max_element(_pwt.begin(),_pwt.end(),weightIsLess); double pmax = pit->second; for(pit=_pwt.begin(); pit!=_pwt.end(); ++pit) { pit->second/=pmax; } // construct the hadron tables constructHadronTable(); // for debugging // dumpTable(table()); } void HadronSelector::constructHadronTable() { // initialise the table _table.clear(); for(unsigned int ix=0; ix<_partons.size(); ++ix) { for(unsigned int iy=0; iy<_partons.size(); ++iy) { if (!(DiquarkMatcher::Check(_partons[ix]->id()) && DiquarkMatcher::Check(_partons[iy]->id()))) _table[make_pair(_partons[ix]->id(),_partons[iy]->id())] = KupcoData(); } } // get the particles from the event generator ParticleMap particles = generator()->particles(); // loop over the particles double maxdd(0.),maxss(0.),maxrest(0.); for(ParticleMap::iterator it=particles.begin(); it!=particles.end(); ++it) { long pid = it->first; tPDPtr particle = it->second; int pspin = particle->iSpin(); // Don't include hadrons which are explicitly forbidden if(find(_forbidden.begin(),_forbidden.end(),particle)!=_forbidden.end()) continue; // Don't include non-hadrons or antiparticles if(pid < 100) continue; // remove diffractive particles if(pspin == 0) continue; // K_0S and K_0L not made make K0 and Kbar0 if(pid==ParticleID::K_S0||pid==ParticleID::K_L0) continue; // Debugging options // Only include those with 2J+1 less than...5 if(_trial==2 && pspin >= 5) continue; // Only include those with 2J+1 less than...7 if(_trial==3 && pspin >= 7) continue; // Only include pions if(_trial==1 && pid!=111 && pid!=211) continue; // shouldn't be coloured if(particle->coloured()) continue; // Get the flavours const int x4 = (pid/1000)%10; const int x3 = (pid/100 )%10; const int x2 = (pid/10 )%10; const int x7 = (pid/1000000)%10; const bool wantSusy = x7 == 1 || x7 == 2; int flav1; int flav2; // Skip non-hadrons (susy particles, etc...) if(x3 == 0 || x2 == 0) continue; else if(x4 == 0) { // meson flav1 = x2; flav2 = x3; } else { // baryon flav1 = CheckId::makeDiquarkID(x2,x3); flav2 = x4; } if (wantSusy) flav2 += 1000000 * x7; HadronInfo a(pid, particle, specialWeight(pid), particle->mass()); // set the weight to the number of spin states a.overallWeight = pspin; // identical light flavours if(flav1 == flav2 && flav1<=3) { // ddbar> uubar> admixture states if(flav1==1) { if(_topt != 0) a.overallWeight *= 0.5*a.swtef; _table[make_pair(1,1)].insert(a); _table[make_pair(2,2)].insert(a); if(_topt == 0 && a.overallWeight > maxdd) maxdd = a.overallWeight; } // load up ssbar> uubar> ddbar> admixture states else { a.wt = mixingStateWeight(pid); a.overallWeight *= a.wt; if(_topt != 0) a.overallWeight *= a.swtef; _table[make_pair(1,1)].insert(a); _table[make_pair(2,2)].insert(a); if(_topt == 0 && a.overallWeight > maxdd) maxdd = a.overallWeight; a.wt = (_topt != 0) ? 1.- 2.*a.wt : 1 - a.wt; if(a.wt > 0) { a.overallWeight = a.wt * a.swtef * pspin; _table[make_pair(3,3)].insert(a); if(_topt == 0 && a.overallWeight > maxss) maxss = a.overallWeight; } } } // light baryons with all quarks identical else if((flav1 == 1 && flav2 == 1103) || (flav1 == 1103 && flav2 == 1) || (flav1 == 2 && flav2 == 2203) || (flav1 == 2203 && flav2 == 2) || (flav1 == 3 && flav2 == 3303) || (flav1 == 3303 && flav2 == 3)) { if(_topt != 0) a.overallWeight *= 1.5*a.swtef; _table[make_pair(flav1,flav2)].insert(a); _table[make_pair(flav2,flav1)].insert(a); if(_topt == 0 && a.overallWeight > maxrest) maxrest = a.overallWeight; } // all other cases else { if(_topt != 0) a.overallWeight *=a.swtef; _table[make_pair(flav1,flav2)].insert(a); if(flav1 != flav2) _table[make_pair(flav2,flav1)].insert(a); if(_topt == 0 && a.overallWeight > maxrest) maxrest = a.overallWeight; } } // Account for identical combos of diquark/quarks and symmetrical elements // e.g. U UD = D UU HadronTable::iterator tit; for(tit=_table.begin();tit!=_table.end();++tit) { if(tit->first.first>ParticleID::c) continue; if(!DiquarkMatcher::Check(tit->first.second)) continue; long k, l, sub; if(tit->first.second>=ParticleID::bd_0) { k = ParticleID::b; sub = ParticleID::bd_0/100; } else if(tit->first.second>=ParticleID::cd_0) { k = ParticleID::c; sub = ParticleID::cd_0/100; } else if(tit->first.second>=ParticleID::sd_0) { k = ParticleID::s; sub = ParticleID::sd_0/100; } else if(tit->first.second>=ParticleID::ud_0) { k = ParticleID::u; sub = ParticleID::ud_0/100; } else if(tit->first.second==ParticleID::dd_1) { k = ParticleID::d; sub = ParticleID::dd_1/100; } else continue; sub=tit->first.second/100-sub+1; if(sub > tit->first.first) { l = 1000*sub+100*tit->first.first+1; } else if(sub==tit->first.first) { l = 1000*sub+ 100*tit->first.first+3; } else { l = 100*sub +1000*tit->first.first+1; } if(tit->second.empty()) { pair<long,long> newpair(k,l); tit->second=_table[newpair]; newpair=make_pair(tit->first.second,tit->first.first); _table[newpair]=tit->second; }; } // normalise weights to one for first option if(_topt == 0) { HadronTable::const_iterator tit; KupcoData::iterator it; for(tit=_table.begin();tit!=_table.end();++tit) { double weight; if(tit->first.first==tit->first.second) { if(tit->first.first==1||tit->first.first==2) weight=1./maxdd; else if (tit->first.first==3) weight=1./maxss; else weight=1./maxrest; } else weight=1./maxrest; for(it = tit->second.begin(); it!=tit->second.end(); ++it) { it->rescale(weight); } } } } double HadronSelector::specialWeight(long id) { int pspin = id % 10; // Only K0L and K0S have pspin == 0 if(pspin == 0) pspin = 1; // Baryon : J = 1/2 or 3/2 else if(pspin == 2 || pspin == 4) { if(pspin == 2) { // Singlet (Lambda-like) baryon if( (id/100)%10 < (id/10 )%10 ) return sqr(_sngWt); // octet else return 1.; } // Decuplet baryon else return sqr(_decWt); } // Meson else if(pspin % 2 == 1) { // Total angular momentum int j = (pspin - 1) / 2; // related to Orbital angular momentum l int nl = (id/10000 )%10; int l = -999; int n = (id/100000)%10; // Radial excitation if(j == 0) l = nl; else if(nl == 0) l = j - 1; else if(nl == 1 || nl == 2) l = j; else if(nl == 3) l = j + 1; // Angular or Radial excited meson if((l||j||n) && l>=0 && l<Lmax && j<Jmax && n<Nmax) { return sqr(_repwt[l][j][n]); } } return 1.0; } int HadronSelector::signHadron(tcPDPtr idQ1, tcPDPtr idQ2, tcPDPtr hadron) const { // This method receives in input three PDG ids, whose the // first two have proper signs (corresponding to particles, id > 0, // or antiparticles, id < 0 ), whereas the third one must // be always positive (particle not antiparticle), // corresponding to: // --- quark-antiquark, or antiquark-quark, or // quark-diquark, or diquark-quark, or // antiquark-antidiquark, or antidiquark-antiquark // for the first two input (idQ1, idQ2); // --- meson or baryon for the third input (idHad): // The method returns: // --- + 1 if the two partons (idQ1, idQ2) are exactly // the constituents for the hadron idHad; // --- - 1 if the two partons (idQ1, idQ2) are exactly // the constituents for the anti-hadron -idHad; // --- + 0 otherwise. // The method it is therefore useful to decide the // sign of the id of the produced hadron as appeared // in the vector _vecHad (where only hadron idHad > 0 are present) // given the two constituent partons. int sign = 0; long idHad = hadron->id(); assert(idHad > 0); int chargeIn = idQ1->iCharge() + idQ2->iCharge(); int chargeOut = hadron->iCharge(); // same charge if( chargeIn == chargeOut && chargeIn !=0 ) sign = +1; else if(chargeIn == -chargeOut && chargeIn !=0 ) sign = -1; else if(chargeIn == 0 && chargeOut == 0 ) { // In the case of same null charge, there are four cases: // i) K0-like mesons, B0-like mesons, Bs-like mesons // the PDG convention is to consider them "antiparticle" (idHad < 0) // if the "dominant" (heavier) flavour (respectively, s, b) // is a quark (idQ > 0): for instance, B0s = (b, sbar) has id < 0 // Remember that there is an important exception for K0L (id=130) and // K0S (id=310): they don't have antiparticles, therefore idHad > 0 // always. We use below the fact that K0L and K0S are the unique // hadrons having 0 the first (less significant) digit of their id. // 2) D0-like mesons: the PDG convention is to consider them "particle" // (idHad > 0) if the charm flavour is carried by a c: (c,ubar) has id>0 // 3) the remaining mesons should not have antiparticle, therefore their // sign is always positive. // 4) for baryons, that is when one of idQ1 and idQ2 is a (anti-) quark and // the other one is a (anti-) diquark the sign is negative when both // constituents are "anti", that is both with id < 0; positive otherwise. // meson if(abs(int(idQ1->iColour()))== 3 && abs(int(idQ2->iColour())) == 3 && !DiquarkMatcher::Check(idQ1->id()) && !DiquarkMatcher::Check(idQ2->id())) { int idQa = abs(idQ1->id()); int idQb = abs(idQ2->id()); int dominant = idQ2->id(); if(idQa > idQb) { swap(idQa,idQb); dominant = idQ1->id(); } if((idQa==ParticleID::d && idQb==ParticleID::s) || (idQa==ParticleID::d && idQb==ParticleID::b) || (idQa==ParticleID::s && idQb==ParticleID::b)) { // idHad%10 is zero for K0L,K0S if (dominant < 0 || idHad%10 == 0) sign = +1; else if(dominant > 0) sign = -1; } else if((idQa==ParticleID::u && idQb==ParticleID::c) || (idQa==ParticleID::u && idQb==ParticleID::t) || (idQa==ParticleID::c && idQb==ParticleID::t)) { if (dominant > 0) sign = +1; else if(dominant < 0) sign = -1; } else if(idQa==idQb) sign = +1; // sets sign for Susy particles else sign = (dominant > 0) ? +1 : -1; } // baryon else if(DiquarkMatcher::Check(idQ1->id()) || DiquarkMatcher::Check(idQ2->id())) { if (idQ1->id() > 0 && idQ2->id() > 0) sign = +1; else if(idQ1->id() < 0 && idQ2->id() < 0) sign = -1; } } if (sign == 0) { cerr << "Could not work out sign for " << idQ1->PDGName() << ' ' << idQ2->PDGName() << " => " << hadron->PDGName() << '\n'; assert(false); } return sign; } pair<tcPDPtr,tcPDPtr> HadronSelector::lightestHadronPair(tcPDPtr ptr1, tcPDPtr ptr2, tcPDPtr ptr3) const { // throw exception of id3!=0 as doesn't work if ( ptr3 ) throw Exception() << "ptr3!=0 not yet implemented in HadronSelector::lightestHadronPair" << Exception::abortnow; // charge int totalcharge = ptr1->iCharge() + ptr2->iCharge(); if ( ptr3 ) totalcharge += ptr3->iCharge(); tcPDPtr vIdHad1[2]={tcPDPtr(),tcPDPtr()},vIdHad2[2]={tcPDPtr(),tcPDPtr()}; bool vOk[2] = {false, false}; Energy vMassPair[2] = { ZERO, ZERO }; for (int i = 0; i < 2; i++) { tcPDPtr idPartner = i==0 ? getParticleData(ParticleID::d) : getParticleData(ParticleID::u); // Change sign to idPartner (transform it into a anti-quark) if it is not // possible to form a meson or a baryon. assert (ptr1 && idPartner); if (!CheckId::canBeHadron(ptr1, idPartner)) idPartner = idPartner->CC(); vIdHad1[i] = lightestHadron(ptr1, idPartner); vIdHad2[i] = lightestHadron(ptr2, idPartner->CC()); if ( vIdHad1[i] && vIdHad2[i] && vIdHad1[i]->iCharge() + vIdHad2[i]->iCharge() == totalcharge ) { vOk[i] = true; vMassPair[i] = vIdHad1[i]->mass() + vIdHad2[i]->mass(); } } // Take the lightest pair compatible with charge conservation. if ( vOk[0] && ( ! vOk[1] || vMassPair[0] <= vMassPair[1] ) ) { return make_pair(vIdHad1[0],vIdHad2[0]); } else if ( vOk[1] && ( ! vOk[0] || vMassPair[1] < vMassPair[0] ) ) { return make_pair(vIdHad1[1],vIdHad2[1]); } else { return make_pair(tcPDPtr(),tcPDPtr()); } } Energy HadronSelector::massLightestBaryonPair(tcPDPtr ptr1, tcPDPtr ptr2) const { // Make sure that we don't have any diquarks as input, return arbitrarily // large value if we do Energy currentSum = Constants::MaxEnergy; for(unsigned int ix=0; ix<_partons.size(); ++ix) { if(!DiquarkMatcher::Check(_partons[ix]->id())) continue; HadronTable::const_iterator tit1=_table.find(make_pair(abs(ptr1->id()),_partons[ix]->id())), tit2=_table.find(make_pair(_partons[ix]->id(),abs(ptr2->id()))); if( tit1==_table.end() || tit2==_table.end()) continue; if(tit1->second.empty()||tit2->second.empty()) continue; Energy s = tit1->second.begin()->mass + tit2->second.begin()->mass; if(currentSum > s) currentSum = s; } return currentSum; } �������������������������������herwig++-2.6.0.orig/Hadronization/ClusterDecayer.cc�������������������������������������������������0000644�0001750�0001750�00000043000�11754474775�023033� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ClusterDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ClusterDecayer class. // #include "ClusterDecayer.h" #include <ThePEG/Interface/ClassDocumentation.h> #include <ThePEG/Interface/Reference.h> #include <ThePEG/Interface/Parameter.h> #include <ThePEG/Interface/Switch.h> #include <ThePEG/Persistency/PersistentOStream.h> #include <ThePEG/Persistency/PersistentIStream.h> #include <ThePEG/PDT/EnumParticles.h> #include <ThePEG/Repository/EventGenerator.h> #include "Herwig++/Utilities/Kinematics.h" #include "CheckId.h" #include "Herwig++/Utilities/Smearing.h" #include "Cluster.h" #include <ThePEG/Utilities/DescribeClass.h> using namespace Herwig; DescribeClass<ClusterDecayer,Interfaced> describeClusterDecayer("Herwig::ClusterDecayer",""); ClusterDecayer::ClusterDecayer() : _clDirLight(1), _clDirBottom(1), _clDirCharm(1), _clDirExotic(1), _clSmrLight(0.0), _clSmrBottom(0.0), _clSmrCharm(0.0), _clSmrExotic(0.0), _onshell(false), _masstry(20) {} IBPtr ClusterDecayer::clone() const { return new_ptr(*this); } IBPtr ClusterDecayer::fullclone() const { return new_ptr(*this); } void ClusterDecayer::persistentOutput(PersistentOStream & os) const { os << _hadronsSelector << _clDirLight << _clDirBottom << _clDirCharm << _clDirExotic << _clSmrLight << _clSmrBottom << _clSmrCharm << _clSmrExotic << _onshell << _masstry; } void ClusterDecayer::persistentInput(PersistentIStream & is, int) { is >> _hadronsSelector >> _clDirLight >> _clDirBottom >> _clDirCharm >> _clDirExotic >> _clSmrLight >> _clSmrBottom >> _clSmrCharm >> _clSmrExotic >> _onshell >> _masstry; } void ClusterDecayer::Init() { static ClassDocumentation<ClusterDecayer> documentation ("This class is responsible for the two-body decays of normal clusters"); static Reference<ClusterDecayer,HadronSelector> interfaceHadronSelector("HadronSelector", "A reference to the HadronSelector object", &Herwig::ClusterDecayer::_hadronsSelector, false, false, true, false); //ClDir for light, Bottom, Charm and exotic (e.g Susy) quarks static Switch<ClusterDecayer,bool> interfaceClDirLight ("ClDirLight", "Cluster direction for light quarks", &ClusterDecayer::_clDirLight, true, false, false); static SwitchOption interfaceClDirLightPreserve (interfaceClDirLight, "Preserve", "Preserve the direction of the quark from the perturbative stage" " as the direction of the meson produced from it", true); static SwitchOption interfaceClDirLightIsotropic (interfaceClDirLight, "Isotropic", "Assign the direction of the meson randomly", false); static Switch<ClusterDecayer,bool> interfaceClDirBottom ("ClDirBottom", "Cluster direction for bottom quarks", &ClusterDecayer::_clDirBottom, true, false, false); static SwitchOption interfaceClDirBottomPreserve (interfaceClDirBottom, "Preserve", "Preserve the direction of the quark from the perturbative stage" " as the direction of the meson produced from it", true); static SwitchOption interfaceClDirBottomIsotropic (interfaceClDirBottom, "Isotropic", "Assign the direction of the meson randomly", false); static Switch<ClusterDecayer,bool> interfaceClDirCharm ("ClDirCharm", "Cluster direction for charm quarks", &ClusterDecayer::_clDirCharm, true, false, false); static SwitchOption interfaceClDirCharmPreserve (interfaceClDirCharm, "Preserve", "Preserve the direction of the quark from the perturbative stage" " as the direction of the meson produced from it", true); static SwitchOption interfaceClDirCharmIsotropic (interfaceClDirCharm, "Isotropic", "Assign the direction of the meson randomly", false); static Switch<ClusterDecayer,bool> interfaceClDirExotic ("ClDirExotic", "Cluster direction for exotic quarks", &ClusterDecayer::_clDirExotic, true, false, false); static SwitchOption interfaceClDirExoticPreserve (interfaceClDirExotic, "Preserve", "Preserve the direction of the quark from the perturbative stage" " as the direction of the meson produced from it", true); static SwitchOption interfaceClDirExoticIsotropic (interfaceClDirExotic, "Isotropic", "Assign the direction of the meson randomly", false); // ClSmr for ligth, Bottom, Charm and exotic (e.g. Susy) quarks static Parameter<ClusterDecayer,double> interfaceClSmrLight ("ClSmrLight", "cluster direction Gaussian smearing for light quark", &ClusterDecayer::_clSmrLight, 0, 0.0 , 0.0 , 2.0,false,false,false); static Parameter<ClusterDecayer,double> interfaceClSmrBottom ("ClSmrBottom", "cluster direction Gaussian smearing for b quark", &ClusterDecayer::_clSmrBottom, 0, 0.0 , 0.0 , 2.0,false,false,false); static Parameter<ClusterDecayer,double> interfaceClSmrCharm ("ClSmrCharm", "cluster direction Gaussian smearing for c quark", &ClusterDecayer::_clSmrCharm, 0, 0.0 , 0.0 , 2.0,false,false,false); static Parameter<ClusterDecayer,double> interfaceClSmrExotic ("ClSmrExotic", "cluster direction Gaussian smearing for exotic quark", &ClusterDecayer::_clSmrExotic, 0, 0.0 , 0.0 , 2.0,false,false,false); static Switch<ClusterDecayer,bool> interfaceOnShell ("OnShell", "Whether or not the hadrons produced should by on shell or generated using the" " mass generator.", &ClusterDecayer::_onshell, false, false, false); static SwitchOption interfaceOnShellOnShell (interfaceOnShell, "Yes", "Produce the hadrons on shell", true); static SwitchOption interfaceOnShellOffShell (interfaceOnShell, "No", "Generate the masses using the mass generator.", false); static Parameter<ClusterDecayer,unsigned int> interfaceMassTry ("MassTry", "The number attempts to generate the masses of the hadrons produced" " in the cluster decay.", &ClusterDecayer::_masstry, 20, 1, 50, false, false, Interface::limited); } void ClusterDecayer::decay(const ClusterVector & clusters, tPVector & finalhadrons) { // Loop over all clusters, and if they are not too heavy (that is // intermediate clusters that have undergone to fission) or not // too light (that is final clusters that have been already decayed // into single hadron) then decay them into two hadrons. for (ClusterVector::const_iterator it = clusters.begin(); it != clusters.end(); ++it) { if ((*it)->isAvailable() && !(*it)->isStatusFinal() && (*it)->isReadyToDecay()) { pair<PPtr,PPtr> prod = decayIntoTwoHadrons(*it); (*it)->addChild(prod.first); (*it)->addChild(prod.second); finalhadrons.push_back(prod.first); finalhadrons.push_back(prod.second); } } } pair<PPtr,PPtr> ClusterDecayer::decayIntoTwoHadrons(tClusterPtr ptr) { using Constants::pi; using Constants::twopi; // To decay the cluster into two hadrons one must distinguish between // constituent quarks (or diquarks) that originate from perturbative // processes (hard process or parton shower) from those that are generated // by the non-perturbative gluon splitting or from fission of heavy clusters. // In the latter case the two body decay is assumed to be *isotropic*. // In the former case instead, if proper flag are activated, the two body // decay is assumed to "remember" the direction of the constituents inside // the cluster, in the cluster frame. The actual smearing of the hadron // directions around the direction of the constituents, in the cluster // frame, can be different between non-b hadrons and b-hadrons, but is given // by the same functional form: // cosThetaSmearing = 1 + smearFactor * log( rnd() ) // (repeated until cosThetaSmearing > -1) // where the factor smearFactor is different between b- and non-b hadrons. // // We need to require (at least at the moment, maybe in the future we // could change it) that the cluster has exactly two components. // If this is not the case, then send a warning because it is not suppose // to happen, and then return. if ( ptr->numComponents() != 2 ) { generator()->logWarning( Exception("ClusterDecayer::decayIntoTwoHadrons " "***Still cluster with not exactly 2 components*** ", Exception::warning) ); return pair<PPtr,PPtr>(); } // Extract the id and particle pointer of the two components of the cluster. tPPtr ptr1 = ptr->particle(0); tPPtr ptr2 = ptr->particle(1); tcPDPtr ptr1data = ptr1->dataPtr(); tcPDPtr ptr2data = ptr2->dataPtr(); bool isHad1FlavSpecial = false; bool cluDirHad1 = _clDirLight; double cluSmearHad1 = _clSmrLight; bool isHad2FlavSpecial = false; bool cluDirHad2 = _clDirLight; double cluSmearHad2 = _clSmrLight; if (CheckId::isExotic(ptr1data)) { isHad1FlavSpecial = true; cluDirHad1 = _clDirExotic; cluSmearHad1 = _clSmrExotic; } else if (CheckId::hasBottom(ptr1data)) { isHad1FlavSpecial = true; cluDirHad1 = _clDirBottom; cluSmearHad1 = _clSmrBottom; } else if (CheckId::hasCharm(ptr1data)) { isHad1FlavSpecial = true; cluDirHad1 = _clDirCharm; cluSmearHad1 = _clSmrCharm; } if (CheckId::isExotic(ptr2data)) { isHad2FlavSpecial = true; cluDirHad2 = _clDirExotic; cluSmearHad2 = _clSmrExotic; } else if (CheckId::hasBottom(ptr2data)) { isHad2FlavSpecial = true; cluDirHad2 = _clDirBottom; cluSmearHad2 = _clSmrBottom; } else if (CheckId::hasCharm(ptr2data)) { isHad2FlavSpecial = true; cluDirHad2 = _clDirCharm; cluSmearHad2 = _clSmrCharm; } bool isOrigin1Perturbative = ptr->isPerturbative(0); bool isOrigin2Perturbative = ptr->isPerturbative(1); // We have to decide which, if any, of the two hadrons will have // the momentum, in the cluster parent frame, smeared around the // direction of its constituent (for Had1 is the one pointed by // ptr1, and for Had2 is the one pointed by ptr2). // This happens only if the flag _ClDirX is 1 and the constituent is // perturbative (that is not coming from nonperturbative gluon splitting // or cluster fission). In the case that both the hadrons satisfy this // two requirements (of course only one must be treated, because the other // one will have the momentum automatically fixed by the momentum // conservation) then more priority is given in the case of a b-hadron. // Finally, in the case that the two hadrons have same priority, then // we choose randomly, with equal probability, one of the two. int priorityHad1 = 0; if ( cluDirHad1 && isOrigin1Perturbative ) { priorityHad1 = isHad1FlavSpecial ? 2 : 1; } int priorityHad2 = 0; if ( cluDirHad2 && isOrigin2Perturbative ) { priorityHad2 = isHad2FlavSpecial ? 2 : 1; } if ( priorityHad2 && priorityHad1 == priorityHad2 && UseRandom::rndbool() ) { priorityHad2 = 0; } Lorentz5Momentum pClu = ptr->momentum(); bool secondHad = false; Axis uSmear_v3; if ( priorityHad1 || priorityHad2 ) { double cluSmear; Lorentz5Momentum pQ; if ( priorityHad1 > priorityHad2 ) { pQ = ptr1->momentum(); cluSmear = cluSmearHad1; } else { pQ = ptr2->momentum(); cluSmear = cluSmearHad2; secondHad = true; } // To find the momenta of the two hadrons in the parent cluster frame // we proceed as follows. First, we determine the unit vector parallel // to the direction of the constituent in the cluster frame. Then we // have to smear such direction using the following prescription: // --- in theta angle w.r.t. such direction (not the z-axis), // the drawing of the cosine of such angle is done via: // 1.0 + cluSmear*log( rnd() ) // (repeated until it gives a value above -1.0) // --- in phi angle w.r.t. such direction, the drawing is simply flat. // Then, given the direction in the parent cluster frame of one of the // two hadrons, it is straighforward to get the momenta of both hadrons // (always in the same parent cluster frame). pQ.boost( -pClu.boostVector() ); // boost from Lab to Cluster frame uSmear_v3 = pQ.vect().unit(); // skip if cluSmear is too small if ( cluSmear > 0.001 ) { // generate the smearing angle double cosSmear; do cosSmear = 1.0 + cluSmear*log( UseRandom::rnd() ); while ( cosSmear < -1.0 ); double sinSmear = sqrt( 1.0 - sqr(cosSmear) ); // calculate rotation to z axis LorentzRotation rot; double sinth(sqrt(1.-sqr(uSmear_v3.z()))); if(abs(uSmear_v3.perp2()/uSmear_v3.z())>1e-10) rot.setRotate(-acos(uSmear_v3.z()), Axis(-uSmear_v3.y()/sinth,uSmear_v3.x()/sinth,0.)); // + random azimuthal rotation rot.rotateZ(UseRandom::rnd()*twopi); // set direction in rotated frame Lorentz5Vector<double> ltemp(0.,sinSmear,cosSmear,0.); // rotate back rot.invert(); ltemp *= rot; uSmear_v3 = ltemp.vect(); } } else { // Isotropic decay: flat in cosTheta and phi. uSmear_v3 = Axis(1.0, 0.0, 0.0); // just to set the rho to 1 uSmear_v3.setTheta( acos( UseRandom::rnd( -1.0 , 1.0 ) ) ); uSmear_v3.setPhi( UseRandom::rnd( -pi , pi ) ); } pair<tcPDPtr,tcPDPtr> dataPair = _hadronsSelector->chooseHadronPair(ptr->mass(), ptr1data, ptr2data); if(dataPair.first == tcPDPtr() || dataPair.second == tcPDPtr()) return pair<PPtr,PPtr>(); // Create the two hadron particle objects with the specified id. PPtr ptrHad1,ptrHad2; // produce the hadrons on mass shell if(_onshell) { ptrHad1 = dataPair.first ->produceParticle(dataPair.first ->mass()); ptrHad2 = dataPair.second->produceParticle(dataPair.second->mass()); } // produce the hadrons with mass given by the mass generator else { unsigned int ntry(0); do { ptrHad1 = dataPair.first ->produceParticle(); ptrHad2 = dataPair.second->produceParticle(); ++ntry; } while(ntry<_masstry&&ptrHad1->mass()+ptrHad2->mass()>ptr->mass()); // if fails produce on shell and issue warning (should never happen??) if( ptrHad1->mass() + ptrHad2->mass() > ptr->mass() ) { generator()->log() << "Failed to produce off-shell hadrons in " << "ClusterDecayer::decayIntoTwoHadrons producing hadrons " << "on-shell" << endl; ptrHad1 = dataPair.first ->produceParticle(dataPair.first ->mass()); ptrHad2 = dataPair.second->produceParticle(dataPair.second->mass()); } } if (!ptrHad1 || !ptrHad2) { ostringstream s; s << "ClusterDecayer::decayIntoTwoHadrons ***Cannot create the two hadrons***" << dataPair.first ->PDGName() << " and " << dataPair.second->PDGName(); cerr << s.str() << endl; generator()->logWarning( Exception(s.str(), Exception::warning) ); } else { Lorentz5Momentum pHad1, pHad2; // 5-momentum vectors that we have to determine if ( secondHad ) uSmear_v3 *= -1.0; if (pClu.m() < ptrHad1->mass()+ptrHad2->mass() ) { throw Exception() << "Impossible Kinematics in ClusterDecayer::decayIntoTwoHadrons()" << Exception::eventerror; } Kinematics::twoBodyDecay(pClu,ptrHad1->mass(),ptrHad2->mass(),uSmear_v3, pHad1,pHad2); ptrHad1->set5Momentum(pHad1); ptrHad2->set5Momentum(pHad2); // Determine the positions of the two children clusters. LorentzPoint positionHad1 = LorentzPoint(); LorentzPoint positionHad2 = LorentzPoint(); calculatePositions(pClu, ptr->vertex(), pHad1, pHad2, positionHad1, positionHad2); ptrHad1->setLabVertex(positionHad1); ptrHad2->setLabVertex(positionHad2); } return pair<PPtr,PPtr>(ptrHad1,ptrHad2); } void ClusterDecayer:: calculatePositions(const Lorentz5Momentum &pClu, const LorentzPoint &positionClu, const Lorentz5Momentum &, const Lorentz5Momentum &, LorentzPoint &positionHad1, LorentzPoint &positionHad2 ) const { // First, determine the relative positions of the children hadrons // with respect to their parent cluster, in the cluster reference frame, // assuming gaussian smearing with width inversely proportional to the // parent cluster mass. Length smearingWidth = hbarc / pClu.m(); LorentzDistance distanceHad1, distanceHad2; for ( int i = 0; i < 2; i++ ) { // i==0 is the first hadron; i==1 is the second one for ( int j = 0; j < 4; j++ ) { // the four components of the LorentzDistance double delta; while ( ! Smearing::gaussianSmearing( 0.0, smearingWidth/mm, delta ) ) { } if ( i == 0 ) { // DGRELL fudge! distanceHad1 = LorentzDistance(0*mm,0*mm,delta*mm,0*mm); } else { distanceHad2 = LorentzDistance(0*mm,0*mm,delta*mm,0*mm); } } } // Then, boost such relative positions of the children hadrons, // with respect to their parent cluster, // from the cluster reference frame to the Lab frame. distanceHad1.boost(pClu.boostVector()); distanceHad2.boost(pClu.boostVector()); // Finally, determine the absolute positions of the children hadrons // in the Lab frame. positionHad1 = distanceHad1 + positionClu; positionHad2 = distanceHad2 + positionClu; } herwig++-2.6.0.orig/Hadronization/ClusterDecayer.fh�������������������������������������������������0000644�0001750�0001750�00000000515�11754474775�023047� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the ClusterDecayer class. // #ifndef HERWIG_ClusterDecayer_FH #define HERWIG_ClusterDecayer_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ClusterDecayer; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ClusterDecayer,ClusterDecayerPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/HadronSelector.h��������������������������������������������������0000644�0001750�0001750�00000054710�11754474775�022705� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HadronSelector.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_HadronSelector_H #define HERWIG_HadronSelector_H // // This is the declaration of the HadronSelector class. // #include "ThePEG/Interface/Interfaced.h" #include <ThePEG/Persistency/PersistentOStream.h> #include <ThePEG/Persistency/PersistentIStream.h> #include <ThePEG/PDT/ParticleData.h> #include <ThePEG/PDT/StandardMatchers.h> #include <ThePEG/Repository/EventGenerator.h> #include "HadronSelector.fh" namespace Herwig { using namespace ThePEG; /**\ingroup Hadronization * \class HadronSelector * \brief This class selects the hadron flavours of a cluster decay. * \author Philip Stephens * \author Alberto Ribon * \author Peter Richardson * * This is the base class for the selection of either a pair of hadrons, or * in some cases a single hadron. The different approaches which were * previously implemented in this class are now implemented in the * HwppSelector and Hw64Selector which inherit from this class. * * This class implements a number of methods which are needed by all models * and in addition contains the weights for the different meson multiplets and * mixing of the light \f$I=0\f$ mesons. * * @see \ref HadronSelectorInterfaces "The interfaces" * defined for HadronSelector. * @see HwppSelector * @see Hw64Selector */ class HadronSelector: public Interfaced { public: /** \ingroup Hadronization * \class HadronInfo * \brief Class used to store all the hadron information for easy access. * \author Philip Stephens * * Note that: * - the hadrons in _table can be filled in any ordered * w.r.t. the mass value, and flavours for different * groups (for instance, (u,s) hadrons don't need to * be placed after (d,s) or any other flavour), but * all hadrons with the same flavours must be consecutive * ( for instance you cannot alternate hadrons of type * (d,s) with those of flavour (u,s) ). * Furthermore, it is assumed that particle and antiparticle * have the same weights, and therefore only one of them * must be entered in the table: we have chosen to refer * to the particle, defined as PDG id > 0, although if * an anti-particle is provided in input it is automatically * transform to its particle, simply by taking the modulus * of its id. */ class HadronInfo { public: /** * Constructor * @param idin The PDG code of the hadron * @param datain The pointer to the ParticleData object * @param swtin The singlet/decuplet/orbital factor * @param massin The mass of the hadron */ HadronInfo(long idin=0, tPDPtr datain=tPDPtr(), double swtin=1., Energy massin=ZERO) : id(idin), ptrData(datain), swtef(swtin), wt(1.0), overallWeight(0.0), mass(massin) {} /** * Comparision operator on mass */ bool operator<(const HadronInfo &x) const { if(mass!=x.mass) return mass < x.mass; else return id < x.id; } /** * The hadrons id. */ long id; /** * pointer to ParticleData, to get the spin, etc... */ tPDPtr ptrData; /** * singlet/decuplet/orbital factor */ double swtef; /** * mixing factor */ double wt; /** * (2*J+1)*wt*swtef */ double overallWeight; /** * The hadrons mass */ Energy mass; /** * Rescale the weight for a given hadron */ void rescale(double x) const { const_cast<HadronInfo*>(this)->overallWeight *= x; } /** * Friend method used to print the value of a table element. */ friend PersistentOStream & operator<< (PersistentOStream & os, const HadronInfo & hi ) { os << hi.id << hi.ptrData << hi.swtef << hi.wt << hi.overallWeight << ounit(hi.mass,GeV); return os; } /** * debug output */ friend ostream & operator<< (ostream & os, const HadronInfo & hi ); /** * Friend method used to read in the value of a table element. */ friend PersistentIStream & operator>> (PersistentIStream & is, HadronInfo & hi ) { is >> hi.id >> hi.ptrData >> hi.swtef >> hi.wt >> hi.overallWeight >> iunit(hi.mass,GeV); return is; } }; /** \ingroup Hadronization * \class Kupco * \brief Class designed to make STL routines easy to use. * \author Philip Stephens * * This class is used to generate a list of the hadron pairs which can * be produced that allows easy traversal and quick access. */ class Kupco { public: /** * Constructor * @param inidQ PDG code of the quark drawn from the vacuum. * @param inhad1 ParticleData for the first hadron produced. * @param inhad2 ParticleData for the second hadron produced. * @param inwgt The weight for the hadron pair */ Kupco(tcPDPtr inidQ,tcPDPtr inhad1,tcPDPtr inhad2, Energy inwgt) : idQ(inidQ),hadron1(inhad1),hadron2(inhad2),weight(inwgt) {} /** * id of the quark drawn from the vacuum. */ tcPDPtr idQ; /** * The ParticleData object for the first hadron produced. */ tcPDPtr hadron1; /** * The ParticleData object for the second hadron produced. */ tcPDPtr hadron2; /** * Weight factor of this componation. */ Energy weight; }; public: /** * The helper classes */ //@{ /** * The type is used to contain all the hadrons info of a given flavour. */ typedef set<HadronInfo> KupcoData; //@} /** * The hadron table type. */ typedef map<pair<long,long>,KupcoData> HadronTable; public: /** * The default constructor. */ HadronSelector(unsigned int); /** * Method to return a pair of hadrons given the PDG codes of * two or three constituents * @param cluMass The mass of the cluster * @param par1 The first constituent * @param par2 The second constituent * @param par3 The third constituent */ virtual pair<tcPDPtr,tcPDPtr> chooseHadronPair(const Energy cluMass, tcPDPtr par1, tcPDPtr par2,tcPDPtr par3 = PDPtr()) = 0; /** * This returns the lightest pair of hadrons given by the flavours. * * Given the two (or three) constituents of a cluster, it returns * the two lightest hadrons with proper flavour numbers. * Furthermore, the first of the two hadrons must have the constituent with * par1, and the second must have the constituent with par2. * \todo At the moment it does *nothing* in the case that also par3 is present. * * The method is implemented by calling twice lightestHadron, * once with (par1,quarktopick->CC()) ,and once with (par2,quarktopick) * where quarktopick is either the pointer to * d or u quarks . In fact, the idea is that whatever the flavour of par1 * and par2, no matter if (anti-)quark or (anti-)diquark, the lightest * pair of hadrons containing flavour par1 and par2 will have either * flavour d or u, being the lightest quarks. * The method returns the pair (PDPtr(),PDPtr()) if anything goes wrong. * * \todo The method assumes par3 == PDPtr() (otherwise we don't know how to proceed: a * possible, trivial way would be to randomly select two of the three * (anti-)quarks and treat them as a (anti-)diquark, reducing the problem * to two components as treated below. * In the normal (two components) situation, the strategy is the following: * treat in the same way the two possibilities: (d dbar) (i=0) and * (u ubar) (i=1) as the pair quark-antiquark necessary to form a * pair of hadrons containing the input flavour par1 and par2; finally, * select the one that produces the lightest pair of hadrons, compatible * with the charge conservation constraint. */ pair<tcPDPtr,tcPDPtr> lightestHadronPair(tcPDPtr ptr1, tcPDPtr ptr2, tcPDPtr ptr3 = PDPtr ()) const; /** * Returns the mass of the lightest pair of hadrons with the given particles * @param ptr1 is the first constituent * @param ptr2 is the second constituent * @param ptr3 is the third constituent */ Energy massLightestHadronPair(tcPDPtr ptr1, tcPDPtr ptr2, tcPDPtr ptr3 = PDPtr ()) const { pair<tcPDPtr,tcPDPtr> pairData = lightestHadronPair(ptr1, ptr2, ptr3); if ( ! pairData.first || ! pairData.second ) return ZERO; return ( pairData.first->mass() + pairData.second->mass() ); } /** * Returns the lightest hadron formed by the given particles. * * Given the id of two (or three) constituents of a cluster, it returns * the lightest hadron with proper flavour numbers. * At the moment it does *nothing* in the case that also 'ptr3' present. * @param ptr1 is the first constituent * @param ptr2 is the second constituent * @param ptr3 is the third constituent */ tcPDPtr lightestHadron(tcPDPtr ptr1, tcPDPtr ptr2, #ifndef NDEBUG tcPDPtr ptr3 = PDPtr ()) const { #else tcPDPtr = PDPtr ()) const { #endif // The method assumes ptr3 == 0 // rest not implemented assert(ptr1 && ptr2 && !ptr3); // find entry in the table pair<long,long> ids = make_pair(abs(ptr1->id()),abs(ptr2->id())); HadronTable::const_iterator tit=_table.find(ids); // throw exception if flavours wrong if (tit==_table.end()) throw Exception() << "Could not find " << ids.first << ' ' << ids.second << " in _table. " << "In HadronSelector::lightestHadron()" << Exception::eventerror; if(tit->second.empty()) throw Exception() << "HadronSelector::lightestHadron " << "could not find any hadrons containing " << ptr1->id() << ' ' << ptr2->id() << '\n' << tit->first.first << ' ' << tit->first.second << Exception::eventerror; // find the lightest hadron int sign = signHadron(ptr1,ptr2,tit->second.begin()->ptrData); tcPDPtr candidate = sign > 0 ? tit->second.begin()->ptrData : tit->second.begin()->ptrData->CC(); // \todo 20 GeV limit is temporary fudge to let SM particles go through. // \todo Use isExotic instead? if (candidate->mass() > 20*GeV && candidate->mass() < ptr1->constituentMass() + ptr2->constituentMass()) { generator()->log() << "HadronSelector::lightestHadron: " << "chosen candidate " << candidate->PDGName() << " is lighter than its constituents " << ptr1->PDGName() << ", " << ptr2->PDGName() << '\n' << candidate->mass()/GeV << " < " << ptr1->constituentMass()/GeV << " + " << ptr2->constituentMass()/GeV << '\n' << "Check your particle data tables.\n"; assert(false); } return candidate; } /** * Return the nominal mass of the hadron returned by lightestHadron() * @param ptr1 is the first constituent * @param ptr2 is the second constituent * @param ptr3 is the third constituent */ Energy massLightestHadron(tcPDPtr ptr1, tcPDPtr ptr2, #ifndef NDEBUG tcPDPtr ptr3 = PDPtr ()) const { #else tcPDPtr = PDPtr ()) const { #endif // The method assumes ptr3 == empty assert(!(ptr3)); // find entry in the table pair<long,long> ids(abs(ptr1->id()),abs(ptr2->id())); HadronTable::const_iterator tit=_table.find(ids); // throw exception if flavours wrong if(tit==_table.end()||tit->second.empty()) throw Exception() << "HadronSelector::massLightestHadron " << "failed for particle" << ptr1->id() << " " << ptr2->id() << Exception::eventerror; // return the mass return tit->second.begin()->mass; } /** * Returns the mass of the lightest pair of baryons. * @param ptr1 is the first constituent * @param ptr2 is the second constituent */ Energy massLightestBaryonPair(tcPDPtr ptr1, tcPDPtr ptr2) const; /** * Return the weights for the different quarks and diquarks */ //@{ /** * The down quark weight. */ double pwtDquark() const { return _pwtDquark; } /** * The up quark weight. */ double pwtUquark() const { return _pwtUquark; } /** * The strange quark weight. */ double pwtSquark() const { return _pwtSquark; } /** * The charm quark weight. */ double pwtCquark() const { return _pwtCquark; } /** * The bottom quark weight. */ double pwtBquark() const { return _pwtBquark; } /** * The diquark weight. */ double pwtDIquark() const { return _pwtDIquark; } //@} 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 Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * * The array _repwt is initialized using the interfaces to set different * weights for different meson multiplets and the constructHadronTable() * method called to complete the construction of the hadron tables. * * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} protected: /** * Construct the table of hadron data * This is the main method to initialize the hadron data (mainly the * weights associated to each hadron, taking into account its spin, * eventual isoscalar-octect mixing, singlet-decuplet factor). This is * the method that one should update when new or updated hadron data is * available. * * This class implements the construction of the basic table but can be * overridden if needed in inheriting classes. * * The rationale for factors used for diquarks involving different quarks can * be can be explained by taking a prototype example that in the exact SU(2) limit, * in which: * \f[m_u=m_d\f] * \f[M_p=M_n=M_\Delta\f] * and we will have equal numbers of u and d quarks produced. * Suppose that we weight 1 the diquarks made of the same * quark and 1/2 those made of different quarks, the fractions * of u and d baryons (p, n, Delta) we get are the following: * - \f$\Delta^{++}\f$: 1 possibility only u uu with weight 1 * - \f$\Delta^- \f$: 1 possibility only d dd with weight 1 * - \f$p,\Delta^+ \f$: 2 possibilities u ud with weight 1/2 * d uu with weight 1 * - \f$n,\Delta^0 \f$: 2 possibilities d ud with weight 1/2 * u dd with weight 1 * In the latter two cases, we have to take into account the * fact that p and n have spin 1/2 whereas Delta+ and Delta0 * have spin 3/2 therefore from phase space we get a double weight * for Delta+ and Delta0 relative to p and n respectively. * Therefore the relative amount of these baryons that is * produced is the following: * # p = # n = ( 1/2 + 1 ) * 1/3 = 1/2 * # Delta++ = # Delta- = 1 = ( 1/2 + 1) * 2/3 # Delta+ = # Delta0 * which is correct, and therefore the weight 1/2 for the * diquarks of different types of quarks is justified (at least * in this limit of exact SU(2) ). */ virtual void constructHadronTable(); /** * Access to the table of hadrons */ HadronTable & table() { return _table; } /** * Access to the list of partons */ vector<PDPtr> & partons() { return _partons; } /** * Access the parton weights */ double pwt(tcPDPtr p) { assert(p); if ( p->id() < 0 ) p = p->CC(); map<tcPDPtr,double>::iterator it = _pwt.find(p); assert( it != _pwt.end() ); return it->second; } /** * Methods for the mixing of \f$I=0\f$ mesons */ //@{ /** * Return the probability of mixing for Octet-Singlet isoscalar mixing, * the probability of the * \f$\frac1{\sqrt{2}}(|u\bar{u}\rangle + |d\bar{d}\rangle)\f$ component * is returned. * @param angleMix The mixing angle in degrees (not radians) * @param order is 0 for no mixing, 1 for the first resonance of a pair, * 2 for the second one. * The mixing is defined so that for example with \f$\eta-\eta'\f$ mixing where * the mixing angle is \f$\theta=-23^0$ with $\eta\f$ as the first particle * and \f$\eta'\f$ the second one. * The convention used is * \f[\eta = \cos\theta|\eta_{\rm octet }\rangle * -\sin\theta|\eta_{\rm singlet}\rangle\f] * \f[\eta' = \sin\theta|\eta_{\rm octet }\rangle * -\cos\theta|\eta_{\rm singlet}\rangle\f] * with * \f[|\eta_{\rm singlet}\rangle = \frac1{\sqrt{3}} * \left[|u\bar{u}\rangle + |d\bar{d}\rangle + |s\bar{s}\rangle\right]\f] * \f[|\eta_{\rm octet }\rangle = \frac1{\sqrt{6}} * \left[|u\bar{u}\rangle + |d\bar{d}\rangle - 2|s\bar{s}\rangle\right]\f] */ double probabilityMixing(const double angleMix, const int order) { static double convert=Constants::pi/180.0; if (order == 1) return sqr( cos( angleMix*convert + atan( sqrt(2.0) ) ) ); else if (order == 2) return sqr( sin( angleMix*convert + atan( sqrt(2.0) ) ) ); else return 1.; } /** * Returns the weight of given mixing state. * @param id The PDG code of the meson */ virtual double mixingStateWeight(long id); //@} /** * Calculates a special weight specific to a given hadron. * @param id The PDG code of the hadron */ double specialWeight(long id); /** * This method returns the proper sign ( > 0 hadron; < 0 anti-hadron ) * for the input PDG id idHad > 0, suppose to be made by the * two constituent particle pointers: par1 and par2 (both with proper sign). */ int signHadron(tcPDPtr ptr1, tcPDPtr ptr2, tcPDPtr hadron) const; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ HadronSelector & operator=(const HadronSelector &); private: /** * The PDG codes of the constituent particles allowed */ vector<PDPtr> _partons; /** * The PDG codes of the hadrons which cannot be produced in the hadronization */ vector<PDPtr> _forbidden; /** * The weights for the different quarks and diquarks */ //@{ /** * The probability of producting a down quark. */ double _pwtDquark; /** * The probability of producting an up quark. */ double _pwtUquark; /** * The probability of producting a strange quark. */ double _pwtSquark; /** * The probability of producting a charm quark. */ double _pwtCquark; /** * The probability of producting a bottom quark. */ double _pwtBquark; /** * The probability of producting a diquark. */ double _pwtDIquark; /** * Weights for quarks and diquarks. */ map<tcPDPtr,double> _pwt; //@} /** * The mixing angles for the \f$I=0\f$ mesons containing light quarks */ //@{ /** * The \f$\eta-\eta'\f$ mixing angle */ double _etamix; /** * The \f$\phi-\omega\f$ mixing angle */ double _phimix; /** * The \f$h_1'-h_1\f$ mixing angle */ double _h1mix; /** * The \f$f_0(1710)-f_0(1370)\f$ mixing angle */ double _f0mix; /** * The \f$f_1(1420)-f_1(1285)\f$ mixing angle */ double _f1mix; /** * The \f$f'_2-f_2\f$ mixing angle */ double _f2mix; /** * The \f$\eta_2(1870)-\eta_2(1645)\f$ mixing angle */ double _eta2mix; /** * The \f$\phi(???)-\omega(1650)\f$ mixing angle */ double _omhmix; /** * The \f$\phi_3-\omega_3\f$ mixing angle */ double _ph3mix; /** * The \f$\eta(1475)-\eta(1295)\f$ mixing angle */ double _eta2Smix; /** * The \f$\phi(1680)-\omega(1420)\f$ mixing angle */ double _phi2Smix; //@} /** * The weights for the various meson multiplets to be used to supress the * production of particular states */ //@{ /** * The weights for the \f$\phantom{1}^1S_0\f$ multiplets */ vector<double> _weight1S0; /** * The weights for the \f$\phantom{1}^3S_1\f$ multiplets */ vector<double> _weight3S1; /** * The weights for the \f$\phantom{1}^1P_1\f$ multiplets */ vector<double> _weight1P1; /** * The weights for the \f$\phantom{1}^3P_0\f$ multiplets */ vector<double> _weight3P0; /** * The weights for the \f$\phantom{1}^3P_1\f$ multiplets */ vector<double> _weight3P1; /** * The weights for the \f$\phantom{1}^3P_2\f$ multiplets */ vector<double> _weight3P2; /** * The weights for the \f$\phantom{1}^1D_2\f$ multiplets */ vector<double> _weight1D2; /** * The weights for the \f$\phantom{1}^3D_1\f$ multiplets */ vector<double> _weight3D1; /** * The weights for the \f$\phantom{1}^3D_2\f$ multiplets */ vector<double> _weight3D2; /** * The weights for the \f$\phantom{1}^3D_3\f$ multiplets */ vector<double> _weight3D3; //@} /** * The weights for the excited meson multiplets */ vector<vector<vector<double> > > _repwt; /** * Singlet and Decuplet weights */ //@{ /** * The singlet weight */ double _sngWt; /** * The decuplet weight */ double _decWt; //@} /** * The table of hadron data */ HadronTable _table; /** * Enums so arrays can be statically allocated */ //@{ /** * Defines values for array sizes. L,J,N max values for excited mesons. */ enum MesonMultiplets { Lmax = 3, Jmax = 4, Nmax = 4}; //@} /** * Option for the construction of the tables */ unsigned int _topt; /** * Which particles to produce for debugging purposes */ unsigned int _trial; }; } #endif /* HERWIG_HadronSelector_H */ ��������������������������������������������������������herwig++-2.6.0.orig/Hadronization/HwppSelector.fh���������������������������������������������������0000644�0001750�0001750�00000000501�11754474775�022543� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the HwppSelector class. // #ifndef HERWIG_HwppSelector_FH #define HERWIG_HwppSelector_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class HwppSelector; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::HwppSelector,HwppSelectorPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/Makefile.am�������������������������������������������������������0000644�0001750�0001750�00000001360�11754474775�021645� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwHadronization.la libHwHadronization_la_SOURCES = \ CheckId.cc CheckId.h \ CluHadConfig.h \ Cluster.h Cluster.cc Cluster.fh \ ClusterDecayer.cc ClusterDecayer.h ClusterDecayer.fh \ ClusterFinder.cc ClusterFinder.h ClusterFinder.fh \ ClusterFissioner.cc ClusterFissioner.h ClusterFissioner.fh \ ClusterHadronizationHandler.cc ClusterHadronizationHandler.h \ ClusterHadronizationHandler.fh \ ColourReconnector.cc ColourReconnector.h ColourReconnector.fh\ HadronSelector.cc HadronSelector.h HadronSelector.fh\ Hw64Selector.cc Hw64Selector.h Hw64Selector.fh\ HwppSelector.cc HwppSelector.h HwppSelector.fh\ LightClusterDecayer.cc LightClusterDecayer.h LightClusterDecayer.fh \ PartonSplitter.cc PartonSplitter.h PartonSplitter.fh ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/HadronSelector.fh�������������������������������������������������0000644�0001750�0001750�00000000515�11754474775�023045� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the HadronSelector class. // #ifndef HERWIG_HadronSelector_FH #define HERWIG_HadronSelector_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class HadronSelector; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::HadronSelector,HadronSelectorPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/HwppSelector.cc���������������������������������������������������0000644�0001750�0001750�00000013653�11754722440�022530� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HwppSelector.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the HwppSelector class. // #include "HwppSelector.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/Utilities/Selector.h" #include "ThePEG/Repository/UseRandom.h" #include "CheckId.h" #include <cassert> #include <ThePEG/Utilities/DescribeClass.h> using namespace Herwig; DescribeClass<HwppSelector,HadronSelector> describeHwppSelector("Herwig::HwppSelector",""); IBPtr HwppSelector::clone() const { return new_ptr(*this); } IBPtr HwppSelector::fullclone() const { return new_ptr(*this); } void HwppSelector::doinit() { HadronSelector::doinit(); } void HwppSelector::persistentOutput(PersistentOStream & os) const { os << _mode; } void HwppSelector::persistentInput(PersistentIStream & is, int) { is >> _mode; } void HwppSelector::Init() { static ClassDocumentation<HwppSelector> documentation ("The HwppSelector class implements the Herwig++ algorithm for selecting" " the hadrons", "The hadronization used the selection algorithm described in \\cite{Kupco:1998fx}.", "%\\cite{Kupco:1998fx}\n" "\\bibitem{Kupco:1998fx}\n" " A.~Kupco,\n" " ``Cluster hadronization in HERWIG 5.9,''\n" " arXiv:hep-ph/9906412.\n" " %%CITATION = HEP-PH/9906412;%%\n" ); // put useMe() only in correct place! static Switch<HwppSelector,unsigned int> interfaceMode ("Mode", "Which algorithm to use", &HwppSelector::_mode, 1, false, false); static SwitchOption interfaceModeKupco (interfaceMode, "Kupco", "Use the Kupco approach", 0); static SwitchOption interfaceModeHwpp (interfaceMode, "Hwpp", "Use the Herwig++ approach", 1); } pair<tcPDPtr,tcPDPtr> HwppSelector::chooseHadronPair(const Energy cluMass,tcPDPtr par1, tcPDPtr par2,tcPDPtr ) { // if either of the input partons is a diquark don't allow diquarks to be // produced bool diquark = !(DiquarkMatcher::Check(par1->id()) || DiquarkMatcher::Check(par2->id())); bool quark = true; // if the Herwig++ algorithm if(_mode ==1) { if(cluMass > massLightestBaryonPair(par1,par2) && UseRandom::rnd() > 1./(1.+pwtDIquark())) { diquark = true; quark = false; } else { useMe(); diquark = false; quark = true; } } // weights for the different possibilities Energy weight, wgtsum(ZERO); // loop over all hadron pairs with the allowed flavours vector<Kupco> hadrons; for(unsigned int ix=0;ix<partons().size();++ix) { tcPDPtr quarktopick = partons()[ix]; if(!quark && abs(int(quarktopick->iColour())) == 3 && !DiquarkMatcher::Check(quarktopick->id())) continue; if(!diquark && abs(int(quarktopick->iColour())) == 3 && DiquarkMatcher::Check(quarktopick->id())) continue; HadronTable::const_iterator tit1 = table().find(make_pair(abs(par1->id()),quarktopick->id())); HadronTable::const_iterator tit2 = table().find(make_pair(quarktopick->id(),abs(par2->id()))); // If not in table skip if(tit1 == table().end()||tit2==table().end()) continue; // tables empty skip if(tit1->second.empty()||tit2->second.empty()) continue; // if too massive skip if(cluMass <= tit1->second.begin()->mass + tit2->second.begin()->mass) continue; // loop over the hadrons KupcoData::iterator H1,H2; for(H1 = tit1->second.begin();H1 != tit1->second.end(); ++H1) { for(H2 = tit2->second.begin();H2 != tit2->second.end(); ++H2) { // break if cluster too light if(cluMass < H1->mass + H2->mass) break; // calculate the weight weight = pwt(quarktopick) * H1->overallWeight * H2->overallWeight * Kinematics::pstarTwoBodyDecay(cluMass, H1->mass, H2->mass ); int signQ = 0; assert (par1 && quarktopick); assert (par2); assert(quarktopick->CC()); if(CheckId::canBeHadron(par1, quarktopick->CC()) && CheckId::canBeHadron(quarktopick, par2)) signQ = +1; else if(CheckId::canBeHadron(par1, quarktopick) && CheckId::canBeHadron(quarktopick->CC(), par2)) signQ = -1; else { cerr << "Could not make sign for" << par1->id()<< " " << quarktopick->id() << " " << par2->id() << "\n"; assert(false); } if (signQ == -1) quarktopick = quarktopick->CC(); // construct the object with the info Kupco a(quarktopick, H1->ptrData, H2->ptrData, weight); hadrons.push_back(a); wgtsum += weight; } } } if (hadrons.empty()) return make_pair(tcPDPtr(),tcPDPtr()); // select the hadron wgtsum *= UseRandom::rnd(); unsigned int ix=0; do { wgtsum-= hadrons[ix].weight; ++ix; } while(wgtsum > ZERO && ix < hadrons.size()); if(ix == hadrons.size() && wgtsum > ZERO) return make_pair(tcPDPtr(),tcPDPtr()); --ix; assert(hadrons[ix].idQ); int signHad1 = signHadron(par1, hadrons[ix].idQ->CC(), hadrons[ix].hadron1); int signHad2 = signHadron(par2, hadrons[ix].idQ, hadrons[ix].hadron2); assert(!( signHad1 == 0 || signHad2 == 0)); // throw Exception() << "HwppSelector::selectPair " // << "***Inconsistent Hadron " // << hadrons[ix].idQ->id() << " " // << hadrons[ix].hadron1->id() << " " // << hadrons[ix].hadron2->id() << " " // << signHad1 << " " << signHad2 // << Exception::runerror; return make_pair ( signHad1 > 0 ? hadrons[ix].hadron1 : tcPDPtr(hadrons[ix].hadron1->CC()), signHad2 > 0 ? hadrons[ix].hadron2 : tcPDPtr(hadrons[ix].hadron2->CC())); } �������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/ColourReconnector.cc����������������������������������������������0000644�0001750�0001750�00000027572�11754474775�023602� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ColourReconnector.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ColourReconnector class. // #include "ColourReconnector.h" #include "Cluster.h" #include "Herwig++/Utilities/Maths.h" #include <ThePEG/Interface/Switch.h> #include "ThePEG/Interface/Parameter.h" #include <ThePEG/Persistency/PersistentOStream.h> #include <ThePEG/Persistency/PersistentIStream.h> #include <ThePEG/Repository/UseRandom.h> #include <algorithm> #include <ThePEG/Utilities/DescribeClass.h> using namespace Herwig; typedef ClusterVector::const_iterator CluVecIt; DescribeClass<ColourReconnector,Interfaced> describeColourReconnector("Herwig::ColourReconnector",""); IBPtr ColourReconnector::clone() const { return new_ptr(*this); } IBPtr ColourReconnector::fullclone() const { return new_ptr(*this); } void ColourReconnector::rearrange(ClusterVector & clusters) { if (_clreco == 0) return; // need at least two clusters if (clusters.size() < 2) return; // do the colour reconnection switch (_algorithm) { case 0: _doRecoPlain(clusters); break; case 1: _doRecoStatistical(clusters); break; } return; } Energy2 ColourReconnector::_clusterMassSum(const PVector q, const PVector aq) const { const size_t nclusters = q.size(); assert (aq.size() == nclusters); Energy2 sum = ZERO; for (size_t i = 0; i < nclusters; i++) sum += ( q.at(i)->momentum() + aq.at(i)->momentum() ).m2(); return sum; } bool ColourReconnector::_containsColour8(const ClusterVector cv, const vector<size_t> P) const { assert (P.size() == cv.size()); for (size_t i = 0; i < cv.size(); i++) { tcPPtr p = cv.at(i)->colParticle(); tcPPtr q = cv.at(P[i])->antiColParticle(); if (isColour8(p, q)) return true; } return false; } void ColourReconnector::_doRecoStatistical(ClusterVector & cv) const { const size_t nclusters = cv.size(); // initially, enumerate (anti)quarks as given in the cluster vector ParticleVector q, aq; for (size_t i = 0; i < nclusters; i++) { q.push_back( cv.at(i)->colParticle() ); aq.push_back( cv.at(i)->antiColParticle() ); } // annealing scheme Energy2 t, delta; Energy2 lambda = _clusterMassSum(q,aq); const unsigned _ntries = _triesPerStepFactor * nclusters; // find appropriate starting temperature by measuring the largest lambda // difference in some dry-run random rearrangements { vector<Energy2> typical; for (int i = 0; i < 10; i++) { const pair <int,int> toswap = _shuffle(q,aq,5); ParticleVector newaq = aq; swap (newaq[toswap.first], newaq[toswap.second]); Energy2 newlambda = _clusterMassSum(q,newaq); typical.push_back( abs(newlambda - lambda) ); } t = _initTemp * Math::median(typical); } // anneal in up to _annealingSteps temperature steps for (unsigned step = 0; step < _annealingSteps; step++) { // For this temperature step, try to reconnect _ntries times. Stop the // algorithm if no successful reconnection happens. unsigned nSuccess = 0; for (unsigned it = 0; it < _ntries; it++) { // make a random rearrangement const unsigned maxtries = 10; const pair <int,int> toswap = _shuffle(q,aq,maxtries); const int i = toswap.first; const int j = toswap.second; // stop here if we cannot find any allowed reconfiguration if (i == -1) break; // create a new antiquark vector with the two partons swapped ParticleVector newaq = aq; swap (newaq[i], newaq[j]); // Check if lambda would decrease. If yes, accept the reconnection. If no, // accept it only with a probability given by the current Boltzmann // factor. In the latter case we set p = 0 if the temperature is close to // 0, to avoid division by 0. Energy2 newlambda = _clusterMassSum(q,newaq); delta = newlambda - lambda; double prob = 1.0; if (delta > ZERO) prob = ( abs(t) < 1e-8*MeV2 ) ? 0.0 : exp(-delta/t); if (UseRandom::rnd() < prob) { lambda = newlambda; swap (newaq, aq); nSuccess++; } } if (nSuccess == 0) break; // reduce temperature t *= _annealingFactor; } // construct the new cluster vector ClusterVector newclusters; for (size_t i = 0; i < nclusters; i++) { ClusterPtr cl = new_ptr( Cluster( q.at(i), aq.at(i) ) ); newclusters.push_back(cl); } swap(newclusters,cv); return; } void ColourReconnector::_doRecoPlain(ClusterVector & cv) const { ClusterVector newcv = cv; // try to avoid systematic errors by randomising the reconnection order long (*p_irnd)(long) = UseRandom::irnd; random_shuffle( newcv.begin(), newcv.end(), p_irnd ); // iterate over all clusters for (CluVecIt cit = newcv.begin(); cit != newcv.end(); cit++) { // find the cluster which, if reconnected with *cit, would result in the // smallest sum of cluster masses // NB this method returns *cit if no reconnection partner can be found ClusterPtr candidate = _findRecoPartner(*cit, newcv); // skip this cluster if no possible reshuffling partner can be found if (candidate == *cit) continue; // accept the reconnection with probability _preco. if (UseRandom::rnd() < _preco) { pair <ClusterPtr,ClusterPtr> reconnected = _reconnect(*cit, candidate); // Replace the clusters in the ClusterVector. The order of the // colour-triplet partons in the cluster vector is retained here. // replace *cit by reconnected.first replace( newcv.begin(), newcv.end(), *cit, reconnected.first ); // replace candidate by reconnected.second replace( newcv.begin(), newcv.end(), candidate, reconnected.second ); } } swap(cv,newcv); return; } ClusterPtr ColourReconnector::_findRecoPartner(ClusterPtr cl, ClusterVector cv) const { ClusterPtr candidate = cl; Energy minMass = 1*TeV; for (CluVecIt cit=cv.begin(); cit != cv.end(); ++cit) { // don't allow colour octet clusters if ( isColour8( cl->colParticle(), (*cit)->antiColParticle() ) || isColour8( (*cit)->colParticle(), cl->antiColParticle() ) ) { continue; } // momenta of the old clusters Lorentz5Momentum p1 = cl->colParticle()->momentum() + cl->antiColParticle()->momentum(); Lorentz5Momentum p2 = (*cit)->colParticle()->momentum() + (*cit)->antiColParticle()->momentum(); // momenta of the new clusters Lorentz5Momentum p3 = cl->colParticle()->momentum() + (*cit)->antiColParticle()->momentum(); Lorentz5Momentum p4 = (*cit)->colParticle()->momentum() + cl->antiColParticle()->momentum(); Energy oldMass = abs( p1.m() ) + abs( p2.m() ); Energy newMass = abs( p3.m() ) + abs( p4.m() ); if ( newMass < oldMass && newMass < minMass ) { minMass = newMass; candidate = *cit; } } return candidate; } pair <ClusterPtr,ClusterPtr> ColourReconnector::_reconnect(ClusterPtr c1, ClusterPtr c2) const { // choose the other possibility to form two clusters from the given // constituents ClusterPtr newCluster1 = new_ptr( Cluster( c1->colParticle(), c2->antiColParticle() ) ); ClusterPtr newCluster2 = new_ptr( Cluster( c2->colParticle(), c1->antiColParticle() ) ); return pair <ClusterPtr,ClusterPtr> (newCluster1, newCluster2); } pair <int,int> ColourReconnector::_shuffle (const PVector q, const PVector aq, unsigned maxtries) const { const size_t nclusters = q.size(); assert (nclusters > 1); assert (aq.size() == nclusters); int i, j; unsigned tries = 0; bool octet; do { // find two different random integers in the range [0, nclusters) i = UseRandom::irnd( nclusters ); do { j = UseRandom::irnd( nclusters ); } while (i == j); // check if one of the two potential clusters would be a colour octet state octet = isColour8( q.at(i), aq.at(j) ) || isColour8( q.at(j), aq.at(i) ) ; tries++; } while (octet && tries < maxtries); if (octet) i = j = -1; return make_pair(i,j); } bool ColourReconnector::isColour8(cPPtr p, cPPtr q) { bool octet = false; // make sure we have a triplet and an anti-triplet if ( ( p->hasColour() && q->hasAntiColour() ) || ( p->hasAntiColour() && q->hasColour() ) ) { if ( !p->parents().empty() && !q->parents().empty() ) { // true if p and q are originated from a colour octet octet = ( p->parents()[0] == q->parents()[0] ) && ( p->parents()[0]->data().iColour() == PDT::Colour8 ); } } return octet; } void ColourReconnector::persistentOutput(PersistentOStream & os) const { os << _clreco << _preco << _algorithm << _initTemp << _annealingFactor << _annealingSteps << _triesPerStepFactor; } void ColourReconnector::persistentInput(PersistentIStream & is, int) { is >> _clreco >> _preco >> _algorithm >> _initTemp >> _annealingFactor >> _annealingSteps >> _triesPerStepFactor; } void ColourReconnector::Init() { static ClassDocumentation<ColourReconnector> documentation ("This class is responsible of the colour reconnection."); static Switch<ColourReconnector,int> interfaceColourReconnection ("ColourReconnection", "Colour reconnections", &ColourReconnector::_clreco, 0, true, false); static SwitchOption interfaceColourReconnectionOff (interfaceColourReconnection, "No", "Colour reconnections off", 0); static SwitchOption interfaceColourReconnectionOn (interfaceColourReconnection, "Yes", "Colour reconnections on", 1); static Parameter<ColourReconnector,double> interfaceMtrpAnnealingFactor ("AnnealingFactor", "The annealing factor is the ratio of the temperatures in two successive " "temperature steps.", &ColourReconnector::_annealingFactor, 0.9, 0.0, 1.0, false, false, Interface::limited); static Parameter<ColourReconnector,unsigned> interfaceMtrpAnnealingSteps ("AnnealingSteps", "Number of temperature steps in the statistical annealing algorithm", &ColourReconnector::_annealingSteps, 50, 1, 10000, false, false, Interface::limited); static Parameter<ColourReconnector,double> interfaceMtrpTriesPerStepFactor ("TriesPerStepFactor", "The number of reconnection tries per temperature steps is the number of " "clusters times this factor.", &ColourReconnector::_triesPerStepFactor, 5.0, 0.0, 100.0, false, false, Interface::limited); static Parameter<ColourReconnector,double> interfaceMtrpInitialTemp ("InitialTemperature", "Factor used to determine the initial temperature from the median of the " "energy change in a few random rearrangements.", &ColourReconnector::_initTemp, 0.1, 0.00001, 100.0, false, false, Interface::limited); static Parameter<ColourReconnector,double> interfaceRecoProb ("ReconnectionProbability", "Probability that a found reconnection possibility is actually accepted", &ColourReconnector::_preco, 0.5, 0.0, 1.0, false, false, Interface::limited); static Switch<ColourReconnector,int> interfaceAlgorithm ("Algorithm", "Specifies the colour reconnection algorithm", &ColourReconnector::_algorithm, 0, true, false); static SwitchOption interfaceAlgorithmPlain (interfaceAlgorithm, "Plain", "Plain colour reconnection as in Herwig++ 2.5.0", 0); static SwitchOption interfaceAlgorithmStatistical (interfaceAlgorithm, "Statistical", "Statistical colour reconnection using simulated annealing", 1); } ��������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/ClusterFissioner.h������������������������������������������������0000644�0001750�0001750�00000030414�11754474775�023267� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ClusterFissioner.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ClusterFissioner_H #define HERWIG_ClusterFissioner_H #include <ThePEG/Interface/Interfaced.h> #include "CluHadConfig.h" #include "HadronSelector.h" #include "ClusterFissioner.fh" namespace Herwig { using namespace ThePEG; //class Cluster; // forward declaration /** \ingroup Hadronization * \class ClusterFissioner * \brief This class handles clusters which are too heavy. * \author Philip Stephens * \author Alberto Ribon * \author Stefan Gieseke * * This class does the job of chopping up either heavy clusters or beam * clusters in two lighter ones. The procedure is repeated recursively until * all of the cluster children have masses below some threshold values. * * For the beam remnant clusters, at the moment what is done is the following. * In the case that the soft underlying event is switched on, the * beam remnant clusters are tagged as not available, * therefore they will not be treated at all during the hadronization. * In the case instead that the soft underlying event is switched off, * then the beam remnant clusters are treated exactly as "normal" clusters, * with the only exception of the mass spectrum used to generate the * cluster children masses. For non-beam clusters, the masses of the cluster * children are draw from a power-like mass distribution; for beam clusters, * according to the value of the flag _IOpRem, either both * children masses are draw from a fast-decreasing exponential mass * distribution (case _IOpRem == 0, or, indendently by * _IOpRem, in the special case that the beam cluster contains two * beam remnants), or one mass from the exponential distribution (corresponding * of the cluster child with the beam remnant) and the other with the usual * power-like distribution (case _IOpRem == 1, which is the * default one, as in Herwig 6.3). * * The reason behind the use of a fast-decreasing exponential distribution * is that to avoid a large transverse energy from the many sequential * fissions that would otherwise occur due to the typical large cluster * mass of beam clusters. Using instead an exponential distribution * the masses of the two cluster children will be very small (order of * GeV). * * The rationale behind the implementation of the splitting of clusters * has been to preserve *all* of the information about such splitting * process. More explicitly a ThePEG::Step class is passed in and the * new clusters are added to the step as the decay products of the * heavy cluster. This approach has the twofold * advantage to provide all of the information that could be needed * (expecially in future developments), without any information loss, * and furthermore it allows a better debugging. * * @see HadronSelector * @see \ref ClusterFissionerInterfaces "The interfaces" * defined for ClusterFissioner. */ class ClusterFissioner: public Interfaced { public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor. */ ClusterFissioner(); //@} /** Splits the clusters which are too heavy. * * Split either heavy clusters or beam clusters recursively until all * children have mass below some threshold. Heavy clusters are those that * satisfy the condition * \f[ M^P > C^P + S^P \f] * where \f$ M \f$ is the clusters mass, \f$ P \f$ is the parameter * ClPow, \f$ C \f$ is the parameter ClMax and \f$ S \f$ is the * sum of the clusters constituent partons. * For beam clusters, they are split only if the soft underlying event * is switched off, otherwise these clusters will be tagged as unavailable * and they will not be treated by the hadronization altogether. * In the case beam clusters will be split, the procedure is exactly * the same as for normal non-beam clusters, with the only exception * of the mass spectrum from which to draw the masses of the two * cluster children (see method drawChildrenMasses for details). */ tPVector fission(ClusterVector & clusters, bool softUEisOn); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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; //@} private: /** * Private and non-existent assignment operator. */ ClusterFissioner & operator=(const ClusterFissioner &); /** * This method directs the splitting of the heavy clusters * * This method does the splitting of the clusters and all of its cluster * children, if heavy. All of these new children clusters are added to the * collection of clusters. The method works as follows. * Initially the vector contains just the stack of input pointers to the * clusters to be split. Then it will be filled recursively by all * of the cluster's children that are heavy enough to require * to be split. In each loop, the last element of the vector is * considered (only once because it is then removed from the vector). * * \todo is the following still true? * For normal, non-beam clusters, a power-like mass distribution * is used, whereas for beam clusters a fast-decreasing exponential mass * distribution is used instead. This avoids many iterative splitting which * could produce an unphysical large transverse energy from a supposed * soft beam remnant process. */ void cut(stack<ClusterPtr> &, ClusterVector&, tPVector & finalhadrons, bool softUEisOn); public: /** * Definition for easy passing of two particles. */ typedef pair<PPtr,PPtr> PPair; /** * Definition for use in the cut function. */ typedef pair<PPair,PPair> cutType; /** * Splits the input cluster. * * Split the input cluster (which can be either an heavy non-beam * cluster or a beam cluster). The result is two pairs of particles. The * first element of each pair is new cluster/hadron, while the second * element of each pair is the particle drawn from the vacuum to create * the new cluster/hadron. * Notice that this method treats also beam clusters by using a different * mass spectrum used to generate the cluster child masses (see method * drawChildMass). */ virtual cutType cut(ClusterPtr &, tPVector & finalhadrons, bool softUEisOn); public: /** * Produces a hadron and returns the flavour drawn from the vacuum. * * This routine produces a new hadron from the partons ptrQ and newPtr. It * also sets the momentum and vertex to the values given. */ PPair produceHadron(tcPDPtr ptrQ, tPPtr newPtr, const Lorentz5Momentum &a, const LorentzPoint &b) const; protected: /** * Produces a cluster from the flavours passed in. * * This routine produces a new cluster with the flavours given by ptrQ and newPtr. * The new 5 momentum is a and the parent momentum are c and d. C is for the * ptrQ and d is for the new particle newPtr. rem specifies whether the existing * particle is a beam remnant or not. */ PPair produceCluster(tPPtr & ptrQ, tPPtr newPtr, Lorentz5Momentum &a, LorentzPoint &b, Lorentz5Momentum &c, Lorentz5Momentum &d, const bool rem) const; /** * Returns the new quark-antiquark pair * needed for fission of a heavy cluster. Equal probabilities * are assumed for producing u, d, or s pairs. */ void drawNewFlavour(PPtr& newPtrPos,PPtr& newPtrNeg) const; /** * Produces the mass of a child cluster. * * Draw the masses \f$M'\f$ of the the cluster child produced * by the fission of an heavy cluster (of mass M). m1, m2 are the masses * of the constituents of the cluster; m is the mass of the quark extract * from the vacuum (together with its antiparticle). The algorithm produces * the mass of the cluster formed with consituent m1. * Two mass distributions can be used for the child cluster mass: * -# power-like mass distribution ("normal" mass) with power exp * \f[ M' = {\rm rnd}((M-m_1-m_2-m)^P, m^p)^{1/P} + m_1 \f] * where \f$ P \f$ is a parameter of the model and \f$ \rm{rnd} \f$ is * the function: * \f[ \rm{rnd}(a,b) = (1-r)a + r b \f] * and here \f$ r \f$ is a random number [0,1]. * -# fast-decreasing exponential mass distribution ("soft" mass) with * rmin. rmin is given by * \f[ r_{\rm min} = \exp(-b (M - m_1 - m_2 - 2 m)) \f] * where \f$ b \f$ is a parameter of the model. The generated mass is * given by * \f[ M' = m_1 + m - \frac{\log\left( * {\rm rnd}(r_{\rm min}, 1-r_{\rm min})\right)}{b} \f]. * * The choice of which mass distribution should be used for each of the two * cluster children is dictated by the parameter soft. */ Energy drawChildMass(const Energy M, const Energy m1, const Energy m2, const Energy m, const double exp, const bool soft) const; /** * Determines the kinematics of a heavy cluster decay C->C1 + C2 */ void calculateKinematics(const Lorentz5Momentum &pClu, const Lorentz5Momentum &p0Q1, const bool toHadron1, const bool toHadron2, Lorentz5Momentum &pClu1, Lorentz5Momentum &pClu2, Lorentz5Momentum &pQ1, Lorentz5Momentum &pQb, Lorentz5Momentum &pQ2, Lorentz5Momentum &pQ2b) const; /** * Determine the positions of the two children clusters. * * This routine generates the momentum of the decay products. It also * generates the momentum in the lab frame of the partons drawn out of * the vacuum. */ void calculatePositions(const Lorentz5Momentum &pClu, const LorentzPoint & positionClu, const Lorentz5Momentum & pClu1, const Lorentz5Momentum & pClu2, LorentzPoint & positionClu1, LorentzPoint & positionClu2 ) const; protected: /** @name Access members for child classes. */ //@{ HadronSelectorPtr hadronsSelector() const {return _hadronsSelector;} Energy btClM() const {return _btClM;} double pSplitLight() const {return _pSplitLight;} double pSplitBottom() const {return _pSplitBottom;} double pSplitCharm() const {return _pSplitCharm;} double pSplitExotic() const {return _pSplitExotic;} //@} private: /** * Check if a cluster is heavy enough to split again */ bool isHeavy(tcClusterPtr ); /** * A pointer to a Herwig::HadronSelector object for generating hadrons. */ HadronSelectorPtr _hadronsSelector; /** * @name The Cluster max mass,dependant on which quarks are involved, used to determine when * fission will occur. */ //@{ Energy _clMaxLight; Energy _clMaxBottom; Energy _clMaxCharm; Energy _clMaxExotic; //@} /** * @name The power used to determine when cluster fission will occur. */ //@{ double _clPowLight; double _clPowBottom; double _clPowCharm; double _clPowExotic; //@} /** * @name The power, dependant on whic quarks are involved, used in the cluster mass generation. */ //@{ double _pSplitLight; double _pSplitBottom; double _pSplitCharm; double _pSplitExotic; //@} /** * Parameter used (2/b) for the beam cluster mass generation. * Currently hard coded value. */ Energy _btClM; /** * Flag used to determine what distributions to use for the cluster masses. */ int _iopRem; /** * The string constant */ Tension _kappa; }; } #endif /* HERWIG_ClusterFissioner_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/CheckId.cc��������������������������������������������������������0000644�0001750�0001750�00000005771�11754474775�021424� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // CheckId.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the CheckId class. // #include "CheckId.h" #include <cassert> using namespace Herwig; long CheckId::makeDiquarkID(long id1, long id2) { assert( id1 * id2 > 0 && QuarkMatcher::Check(id1) && QuarkMatcher::Check(id2)) ; long ida = abs(id1); long idb = abs(id2); if (ida < idb) swap(ida,idb); long idnew = ida*1000 + idb*100 + 1; // Diquarks made of quarks of the same type: uu, dd, ss, cc, bb, // have spin 1, and therefore the less significant digit (which // corresponds to 2*J+1) is 3 rather than 1 as all other Diquarks. if (id1 == id2) idnew += 2; return id1 > 0 ? idnew : -idnew; } bool CheckId::hasBottom(tcPDPtr par1, tcPDPtr par2, tcPDPtr par3) { long id1 = par1 ? par1->id() : 0; if ( !par2 && !par3 ) { return abs(id1) == ThePEG::ParticleID::b || isDiquarkWithB(par1) || ( MesonMatcher::Check(id1) && (abs(id1)/100)%10 == ThePEG::ParticleID::b ) || ( BaryonMatcher::Check(id1) && (abs(id1)/1000)%10 == ThePEG::ParticleID::b ); } else { long id2 = par2 ? par2->id() : 0; long id3 = par3 ? par3->id() : 0; return abs(id1) == ThePEG::ParticleID::b || isDiquarkWithB(par1) || abs(id2) == ThePEG::ParticleID::b || isDiquarkWithB(par2) || abs(id3) == ThePEG::ParticleID::b || isDiquarkWithB(par3); } } bool CheckId::hasCharm(tcPDPtr par1, tcPDPtr par2, tcPDPtr par3) { long id1 = par1 ? par1->id(): 0; if (!par2 && !par3) { return abs(id1) == ThePEG::ParticleID::c || isDiquarkWithC(par1) || ( MesonMatcher::Check(id1) && ((abs(id1)/100)%10 == ThePEG::ParticleID::c || (abs(id1)/10)%10 == ThePEG::ParticleID::c) ) || ( BaryonMatcher::Check(id1) && ((abs(id1)/1000)%10 == ThePEG::ParticleID::c || (abs(id1)/100)%10 == ThePEG::ParticleID::c || (abs(id1)/10)%10 == ThePEG::ParticleID::c) ); } else { long id2 = par2 ? par1->id(): 0; long id3 = par3 ? par1->id(): 0; return abs(id1) == ThePEG::ParticleID::c || isDiquarkWithC(par1) || abs(id2) == ThePEG::ParticleID::c || isDiquarkWithC(par2) || abs(id3) == ThePEG::ParticleID::c || isDiquarkWithC(par3); } } bool CheckId::isExotic(tcPDPtr par1, tcPDPtr par2, tcPDPtr par3) { /// \todo make this more general long id1 = par1 ? par1->id(): 0; long id2 = par2 ? par2->id(): 0; long id3 = par3 ? par3->id(): 0; return ( (id1/1000000)% 10 != 0 && (id1/1000000)% 10 != 9 ) || ( (id2/1000000)% 10 != 0 && (id2/1000000)% 10 != 9 ) || ( (id3/1000000)% 10 != 0 && (id3/1000000)% 10 != 9 ) || abs(id1)==6||abs(id2)==6; } �������herwig++-2.6.0.orig/Hadronization/ClusterFissioner.fh�����������������������������������������������0000644�0001750�0001750�00000000531�11754474775�023432� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the ClusterFissioner class. // #ifndef HERWIG_ClusterFissioner_FH #define HERWIG_ClusterFissioner_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ClusterFissioner; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ClusterFissioner,ClusterFissionerPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/LightClusterDecayer.h���������������������������������������������0000644�0001750�0001750�00000011424�11754474775�023672� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // LightClusterDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_LightClusterDecayer_H #define HERWIG_LightClusterDecayer_H #include <ThePEG/Interface/Interfaced.h> #include "CluHadConfig.h" #include "HadronSelector.h" #include "LightClusterDecayer.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Hadronization * \class LightClusterDecayer * \brief This class performs the decay of light clusters into a single hadron. * \author Philip Stephens * \author Alberto Ribon * * This is the class that performs the decay of light clusters into * only one hadron. The major difficulty is that a kinematical reshuffling * is necessary, between the cluster under consideration and its * "neighbouring" clusters, to conserve energy-momentum in one-body decay. * Notice that, differently from what happens in Fortran Herwig, * light (that is below the threshold for the production of the lightest * pair of hadrons with the proper flavours) fission products, produced * by the fission of heavy clusters in ClusterFissioner * have been already "decayed" into single hadron (the lightest one * with proper flavour) by the same latter class, without require * any reshuffling. Therefore the light clusters that are treated in * this LightClusterDecayer class are produced directly * (originally) by the ClusterFinder. * * Notice: * - The choice of the candidate cluster with whom to reshuffle momentum * is based on the minimal space-time distance from the light cluster. * - An alternate choice of what is considered a "neighbour" could be * implemented but was not considered for Herwig++. * * @see HadronSelector * @see \ref LightClusterDecayerInterfaces "The interfaces" * defined for LightClusterDecayer. */ class LightClusterDecayer: public Interfaced { public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor. */ LightClusterDecayer() : _limBottom(), _limCharm(), _limExotic() {} //@} /** * This method does the decay of light hadron in one hadron. * * This method requires a kinematical reshuffling for energy-momentum * conservation. This is done explicitly by the (private) method * reshuffling(). */ bool decay(ClusterVector & clusters, tPVector & finalhadrons); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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; //@} private: /** * Private and non-existent assignment operator. */ LightClusterDecayer & operator=(const LightClusterDecayer &); /** * This (private) method, called by decay(), takes care of the kinematical * reshuffling necessary for energy-momentum conservation. */ bool reshuffling( const tcPDPtr, tClusterPtr, tClusterPtr, tClusterVector &, tPVector & finalhadrons) ; /** * This (private) method, called by decay(), performs reshuffling in the * special case of a semileptonic partonic b/c decay * @param hadron The hadron to be produced * @param cluster The cluster to be reshuffled * @param finalhadrons The vector of outgoing hadrons */ bool partonicReshuffle(const tcPDPtr hadron,const PPtr cluster, tPVector & finalhadrons); /** * A pointer to a Herwig::HadronSelector object used for producing hadrons. */ Ptr<HadronSelector>::pointer _hadronSelector; /** * @name A parameter used for determining when clusters are too light. * * This parameter is used for setting the lower threshold, \f$ t \f$ as * \f[ t' = t(1 + r B^1_{\rm lim}) \f] * where \f$ r \f$ is a random number [0,1]. */ //@{ double _limBottom; double _limCharm; double _limExotic; //@} }; } #endif /* HERWIG_LightClusterDecayer_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/Cluster.fh��������������������������������������������������������0000644�0001750�0001750�00000000443�11754474775�021552� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the Cluster class. // #ifndef HERWIG_Cluster_FH #define HERWIG_Cluster_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class Cluster; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::Cluster,ClusterPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/PartonSplitter.cc�������������������������������������������������0000644�0001750�0001750�00000010706�11754474775�023116� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PartonSplitter.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PartonSplitter class. // #include "PartonSplitter.h" #include <ThePEG/Interface/ClassDocumentation.h> #include <ThePEG/Interface/Reference.h> #include <ThePEG/Persistency/PersistentOStream.h> #include <ThePEG/Persistency/PersistentIStream.h> #include <ThePEG/PDT/EnumParticles.h> #include <ThePEG/EventRecord/Step.h> #include <ThePEG/Repository/EventGenerator.h> #include <ThePEG/Repository/CurrentGenerator.h> #include "Herwig++/Utilities/Kinematics.h" #include <ThePEG/Utilities/DescribeClass.h> using namespace Herwig; IBPtr PartonSplitter::clone() const { return new_ptr(*this); } IBPtr PartonSplitter::fullclone() const { return new_ptr(*this); } void PartonSplitter::persistentOutput(PersistentOStream & os) const { os << _quarkSelector; } void PartonSplitter::persistentInput(PersistentIStream & is, int) { is >> _quarkSelector; } DescribeClass<PartonSplitter,Interfaced> describePartonSplitter("Herwig::PartonSplitter",""); void PartonSplitter::Init() { static ClassDocumentation<PartonSplitter> documentation ("This class is reponsible of the nonperturbative splitting of partons"); } void PartonSplitter::split(PVector & tagged) { PVector newtag; Energy2 Q02 = 0.99*sqr(getParticleData(ParticleID::g)->constituentMass()); // Loop over all of the particles in the event. for(PVector::const_iterator pit = tagged.begin(); pit!=tagged.end(); ++pit) { // only considering gluons so add other particles to list of particles if( (**pit).data().id() != ParticleID::g ) { newtag.push_back(*pit); continue; } // should not have been called for massless or space-like gluons if((**pit).momentum().m2() <= 0.0*sqr(MeV) ) { throw Exception() << "Spacelike or massless gluon m2= " << (**pit).momentum().m2()/GeV2 << "GeV2 in PartonSplitter::split()" << Exception::eventerror; } // time like gluon gets split PPtr ptrQ = PPtr(); PPtr ptrQbar = PPtr(); splitTimeLikeGluon(*pit,ptrQ,ptrQbar); ptrQ->scale(Q02); ptrQbar->scale(Q02); (*pit)->colourLine()->addColoured(ptrQ); (*pit)->addChild(ptrQ); newtag.push_back(ptrQ); (*pit)->antiColourLine()->addAntiColoured(ptrQbar); (*pit)->addChild(ptrQbar); newtag.push_back(ptrQbar); } swap(tagged,newtag); } void PartonSplitter::splitTimeLikeGluon(tcPPtr ptrGluon, PPtr & ptrQ, PPtr & ptrQbar){ // select the quark flavour tPDPtr quark = _quarkSelector.select(UseRandom::rnd()); // Solve the kinematics of the two body decay G --> Q + Qbar Lorentz5Momentum momentumQ; Lorentz5Momentum momentumQbar; double cosThetaStar = UseRandom::rnd( -1.0 , 1.0 ); using Constants::pi; double phiStar = UseRandom::rnd( -pi , pi ); Energy constituentQmass = quark->constituentMass(); if (ptrGluon->momentum().m() < 2.0*constituentQmass) { throw Exception() << "Impossible Kinematics in PartonSplitter::splitTimeLikeGluon()" << Exception::eventerror; } Kinematics::twoBodyDecay(ptrGluon->momentum(), constituentQmass, constituentQmass, cosThetaStar, phiStar, momentumQ, momentumQbar ); // Create quark and anti-quark particles of the chosen flavour // and set they 5-momentum (the mass is the constituent one). ptrQ = new_ptr(Particle(quark )); ptrQbar = new_ptr(Particle(quark->CC())); ptrQ ->set5Momentum( momentumQ ); ptrQbar ->set5Momentum( momentumQbar ); } void PartonSplitter::doinit() { Interfaced::doinit(); // calculate the probabilties for the gluon to branch into each quark type // based on the available phase-space, as in fortran. Energy mg=getParticleData(ParticleID::g)->constituentMass(); for( int ix=1; ix<6; ++ix ) { PDPtr quark = getParticleData(ix); Energy pcm = Kinematics::pstarTwoBodyDecay(mg,quark->constituentMass(), quark->constituentMass()); if(pcm>ZERO) _quarkSelector.insert(pcm/GeV,quark); } if(_quarkSelector.empty()) throw InitException() << "At least one quark must have constituent mass less " << "then the constituent mass of the gluon in " << "PartonSplitter::doinit()" << Exception::runerror; } ����������������������������������������������������������herwig++-2.6.0.orig/Hadronization/LightClusterDecayer.fh��������������������������������������������0000644�0001750�0001750�00000000553�11754474775�024041� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the LightClusterDecayer class. // #ifndef HERWIG_LightClusterDecayer_FH #define HERWIG_LightClusterDecayer_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class LightClusterDecayer; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::LightClusterDecayer,LightClusterDecayerPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/ColourReconnector.h�����������������������������������������������0000644�0001750�0001750�00000015102�11754474775�023426� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ColourReconnector.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ColourReconnector_H #define HERWIG_ColourReconnector_H #include <ThePEG/Interface/Interfaced.h> #include "CluHadConfig.h" #include "ColourReconnector.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Hadronization * \class ColourReconnector * \brief Class for changing colour reconnections of partons. * \author Alberto Ribon, Christian Roehr * * This class does the nonperturbative colour rearrangement, after the * nonperturbative gluon splitting and the "normal" cluster formation. * It uses the list of particles in the event record, and the collections of * "usual" clusters which is passed to the main method. If the colour * reconnection is actually accepted, then the previous collections of "usual" * clusters is first deleted and then the new one is created. * * * @see \ref ColourReconnectorInterfaces "The interfaces" * defined for ColourReconnector. */ class ColourReconnector: public Interfaced { public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor. */ ColourReconnector() : _algorithm(0), _annealingFactor(0.9), _annealingSteps(50), _clreco(0), _initTemp(0.1), _preco(0.5), _triesPerStepFactor(5.0) {} //@} /** * Does the colour rearrangement, starting out from the list of particles in * the event record and the collection of "usual" clusters passed as * arguments. If the actual rearrangement is accepted, the initial collection of * clusters is overridden by the old ones. */ void rearrange(ClusterVector & clusters); private: /** PRIVATE MEMBER FUNCTIONS */ /** * @brief Calculates the sum of the squared cluster masses. * @arguments q, aq vectors containing the quarks and antiquarks respectively * @return Sum of cluster squared masses M^2_{q[i],aq[i]}. */ Energy2 _clusterMassSum(const PVector q, const PVector aq) const; /** * @brief Examines whether the cluster vector (under the given permutation of * the antiquarks) contains colour-octet clusters * @param cv Cluster vector * @param P Permutation, a vector of permutated indices from 0 to * cv.size()-1 */ bool _containsColour8(const ClusterVector cv, const vector<size_t> P) const; /** * @brief A Metropolis-type algorithm which finds a local minimum in the * total sum of cluster masses * @arguments cv cluster vector */ void _doRecoStatistical(ClusterVector & cv) const; /** * @brief Plain colour reconnection as used in Herwig++ 2.5.0 * @arguments cv cluster vector */ void _doRecoPlain(ClusterVector & cv) const; /** * @brief Finds the cluster in cv which, if reconnected with the given * cluster cl, would result in the smallest sum of cluster masses. * If no reconnection partner can be found, a pointer to the * original Cluster cl is returned. * @arguments cv cluster vector * cl cluster which wants to have a reconnection partner * @return pointer to the found cluster, or the original cluster pointer if * no mass-reducing combination can be found */ ClusterPtr _findRecoPartner(ClusterPtr cl, ClusterVector cv) const; /** * @brief Reconnects the constituents of the given clusters to the (only) * other possible cluster combination. * @return pair of pointers to the two new clusters */ pair <ClusterPtr,ClusterPtr> _reconnect(ClusterPtr c1, ClusterPtr c2) const; /** * @brief At random, swap two antiquarks, if not excluded by the * constraint that there must not be any colour-octet clusters. * @arguments q, aq vectors containing the quarks and antiquarks respectively * maxtries maximal number of tries to find a non-colour-octet * reconfiguration * @return Pair of ints indicating the indices of the antiquarks to be * swapped. Returns (-1,-1) if no valid reconfiguration could be * found after maxtries trials */ pair <int,int> _shuffle(const PVector q, const PVector aq, unsigned maxtries = 10) const; /** DATA MEMBERS */ /** * Specifies the colour reconnection algorithm to be used. */ int _algorithm; /** * The annealing factor is the ratio of two successive temperature steps: * T_n = _annealingFactor * T_(n-1) */ double _annealingFactor; /** * Number of temperature steps in the statistical annealing algorithm */ unsigned _annealingSteps; /** * Do we do colour reconnections? */ int _clreco; /** * Factor used to determine the initial temperature according to * InitialTemperature = _initTemp * median {energy changes in a few random * rearrangements} */ double _initTemp; /** * Probability that a found reconnection possibility is actually accepted. */ double _preco; /** * The number of tries per temperature steps is the number of clusters times * this factor. */ double _triesPerStepFactor; /** * @return true, if the two partons are splitting products of the same * gluon */ static bool isColour8(cPPtr p, cPPtr q); 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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; //@} private: /** * Private and non-existent assignment operator. */ ColourReconnector & operator=(const ColourReconnector &); }; } #endif /* HERWIG_ColourReconnector_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/ClusterFinder.fh��������������������������������������������������0000644�0001750�0001750�00000000507�11754474775�022703� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the ClusterFinder class. // #ifndef HERWIG_ClusterFinder_FH #define HERWIG_ClusterFinder_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ClusterFinder; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ClusterFinder,ClusterFinderPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/ClusterHadronizationHandler.h�������������������������������������0000644�0001750�0001750�00000012647�11754474775�025445� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ClusterHadronizationHandler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ClusterHadronizationHandler_H #define HERWIG_ClusterHadronizationHandler_H #include <ThePEG/Handlers/HadronizationHandler.h> #include "PartonSplitter.h" #include "ClusterFinder.h" #include "ColourReconnector.h" #include "ClusterFissioner.h" #include "LightClusterDecayer.h" #include "ClusterDecayer.h" #include "ClusterHadronizationHandler.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Hadronization * \class ClusterHadronizationHandler * \brief Class that controls the cluster hadronization algorithm. * \author Philip Stephens // cerr << *ch.currentEvent() << '\n'; cerr << finalHadrons.size() << '\n'; cerr << "Finished hadronizing \n"; * \author Alberto Ribon * * This class is the main driver of the cluster hadronization: it is * responsible for the proper handling of all other specific collaborating * classes PartonSplitter, ClusterFinder, ColourReconnector, ClusterFissioner, * LightClusterDecayer, ClusterDecayer; * and for the storing of the produced particles in the Event record. * * @see PartonSplitter * @see ClusterFinder * @see ColourReconnector * @see ClusterFissioner * @see LightClusterDecayer * @see ClusterDecayer * @see Cluster * @see \ref ClusterHadronizationHandlerInterfaces "The interfaces" * defined for ClusterHadronizationHandler. */ class ClusterHadronizationHandler: public HadronizationHandler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ ClusterHadronizationHandler() : _minVirtuality2( 0.1*GeV2 ), _maxDisplacement( 1.0e-10*mm ) {} //@} public: /** * The main method which manages the all cluster hadronization. * * This routine directs "traffic". It determines which function is called * and on which particles/clusters. This function also handles the * situation of vetos on the hadronization. */ virtual void handle(EventHandler & ch, const tPVector & tagged, const Hint & hint); /** * It returns minimum virtuality^2 of partons to use in calculating * distances. It is used both in the Showering and Hadronization. */ Energy2 minVirtuality2() const { return _minVirtuality2; } /** * It returns the maximum displacement that is allowed for a particle * (used to determine the position of a cluster with two components). */ Length maxDisplacement() const { return _maxDisplacement; } /** * It returns true/false according if the soft underlying model * is switched on/off. */ bool isSoftUnderlyingEventON() const { return _underlyingEventHandler; } 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 at the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Private and non-existent assignment operator. */ ClusterHadronizationHandler & operator=(const ClusterHadronizationHandler &); /** * This is a pointer to a Herwig::PartonSplitter object. */ PartonSplitterPtr _partonSplitter; /** * This is a pointer to a Herwig::ClusterFinder object. */ ClusterFinderPtr _clusterFinder; /** * This is a pointer to a Herwig::ColourReconnector object. */ ColourReconnectorPtr _colourReconnector; /** * This is a pointer to a Herwig::ClusterFissioner object. */ ClusterFissionerPtr _clusterFissioner; /** * This is a pointer to a Herwig::LightClusterDecayer object. */ LightClusterDecayerPtr _lightClusterDecayer; /** * This is a pointer to a Herwig::ClusterDecayer object. */ ClusterDecayerPtr _clusterDecayer; /** * The minimum virtuality^2 of partons to use in calculating * distances. */ Energy2 _minVirtuality2; /** * The maximum displacement that is allowed for a particle * (used to determine the position of a cluster with two components). */ Length _maxDisplacement; /** * The pointer to the Underlying Event handler. */ StepHdlPtr _underlyingEventHandler; /** * Tag the constituents of the clusters as their parents */ void _setChildren(ClusterVector clusters) const; }; } #endif /* HERWIG_ClusterHadronizationHandler_H */ �����������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/ClusterFissioner.cc�����������������������������������������������0000644�0001750�0001750�00000076576�11754474775�023450� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ClusterFissioner.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // Thisk is the implementation of the non-inlined, non-templated member // functions of the ClusterFissioner class. // #include "ClusterFissioner.h" #include <ThePEG/Interface/ClassDocumentation.h> #include <ThePEG/Interface/Reference.h> #include <ThePEG/Interface/Parameter.h> #include <ThePEG/Interface/Switch.h> #include <ThePEG/Persistency/PersistentOStream.h> #include <ThePEG/Persistency/PersistentIStream.h> #include <ThePEG/PDT/EnumParticles.h> #include "Herwig++/Utilities/Kinematics.h" #include "CheckId.h" #include "Cluster.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Repository/EventGenerator.h" #include <ThePEG/Utilities/DescribeClass.h> using namespace Herwig; DescribeClass<ClusterFissioner,Interfaced> describeClusterFissioner("Herwig::ClusterFissioner",""); ClusterFissioner::ClusterFissioner() : _clMaxLight(3.35*GeV), _clMaxBottom(3.35*GeV), _clMaxCharm(3.35*GeV), _clMaxExotic(3.35*GeV), _clPowLight(2.0), _clPowBottom(2.0), _clPowCharm(2.0), _clPowExotic(2.0), _pSplitLight(1.0), _pSplitBottom(1.0), _pSplitCharm(1.0), _pSplitExotic(1.0), _btClM(1.0*GeV), _iopRem(1), _kappa(1.0e15*GeV/meter) {} IBPtr ClusterFissioner::clone() const { return new_ptr(*this); } IBPtr ClusterFissioner::fullclone() const { return new_ptr(*this); } void ClusterFissioner::persistentOutput(PersistentOStream & os) const { os << _hadronsSelector << ounit(_clMaxLight,GeV) << ounit(_clMaxBottom,GeV) << ounit(_clMaxCharm,GeV) << ounit(_clMaxExotic,GeV) << _clPowLight << _clPowBottom << _clPowCharm << _clPowExotic << _pSplitLight << _pSplitBottom << _pSplitCharm << _pSplitExotic << ounit(_btClM,GeV) << _iopRem << ounit(_kappa, GeV/meter); } void ClusterFissioner::persistentInput(PersistentIStream & is, int) { is >> _hadronsSelector >> iunit(_clMaxLight,GeV) >> iunit(_clMaxBottom,GeV) >> iunit(_clMaxCharm,GeV) >> iunit(_clMaxExotic,GeV) >> _clPowLight >> _clPowBottom >> _clPowCharm >> _clPowExotic >> _pSplitLight >> _pSplitBottom >> _pSplitCharm >> _pSplitExotic >> iunit(_btClM,GeV) >> _iopRem >> iunit(_kappa, GeV/meter); } void ClusterFissioner::Init() { static ClassDocumentation<ClusterFissioner> documentation ("Class responsibles for chopping up the clusters"); static Reference<ClusterFissioner,HadronSelector> interfaceHadronSelector("HadronSelector", "A reference to the HadronSelector object", &Herwig::ClusterFissioner::_hadronsSelector, false, false, true, false); // ClMax for light, Bottom, Charm and exotic (e.g. Susy) quarks static Parameter<ClusterFissioner,Energy> interfaceClMaxLight ("ClMaxLight","cluster max mass for light quarks (unit [GeV])", &ClusterFissioner::_clMaxLight, GeV, 3.35*GeV, ZERO, 10.0*GeV, false,false,false); static Parameter<ClusterFissioner,Energy> interfaceClMaxBottom ("ClMaxBottom","cluster max mass for b quarks (unit [GeV])", &ClusterFissioner::_clMaxBottom, GeV, 3.35*GeV, ZERO, 10.0*GeV, false,false,false); static Parameter<ClusterFissioner,Energy> interfaceClMaxCharm ("ClMaxCharm","cluster max mass for c quarks (unit [GeV])", &ClusterFissioner::_clMaxCharm, GeV, 3.35*GeV, ZERO, 10.0*GeV, false,false,false); static Parameter<ClusterFissioner,Energy> interfaceClMaxExotic ("ClMaxExotic","cluster max mass for exotic quarks (unit [GeV])", &ClusterFissioner::_clMaxExotic, GeV, 3.35*GeV, ZERO, 10.0*GeV, false,false,false); // ClPow for light, Bottom, Charm and exotic (e.g. Susy) quarks static Parameter<ClusterFissioner,double> interfaceClPowLight ("ClPowLight","cluster mass exponent for light quarks", &ClusterFissioner::_clPowLight, 0, 2.0, 0.0, 10.0,false,false,false); static Parameter<ClusterFissioner,double> interfaceClPowBottom ("ClPowBottom","cluster mass exponent for b quarks", &ClusterFissioner::_clPowBottom, 0, 2.0, 0.0, 10.0,false,false,false); static Parameter<ClusterFissioner,double> interfaceClPowCharm ("ClPowCharm","cluster mass exponent for c quarks", &ClusterFissioner::_clPowCharm, 0, 2.0, 0.0, 10.0,false,false,false); static Parameter<ClusterFissioner,double> interfaceClPowExotic ("ClPowExotic","cluster mass exponent for exotic quarks", &ClusterFissioner::_clPowExotic, 0, 2.0, 0.0, 10.0,false,false,false); // PSplit for light, Bottom, Charm and exotic (e.g. Susy) quarks static Parameter<ClusterFissioner,double> interfacePSplitLight ("PSplitLight","cluster mass splitting param for light quarks", &ClusterFissioner::_pSplitLight, 0, 1.0, 0.0, 10.0,false,false,false); static Parameter<ClusterFissioner,double> interfacePSplitBottom ("PSplitBottom","cluster mass splitting param for b quarks", &ClusterFissioner::_pSplitBottom, 0, 1.0, 0.0, 10.0,false,false,false); static Parameter<ClusterFissioner,double> interfacePSplitCharm ("PSplitCharm","cluster mass splitting param for c quarks", &ClusterFissioner::_pSplitCharm, 0, 1.0, 0.0, 10.0,false,false,false); static Parameter<ClusterFissioner,double> interfacePSplitExotic ("PSplitExotic","cluster mass splitting param for exotic quarks", &ClusterFissioner::_pSplitExotic, 0, 1.0, 0.0, 10.0,false,false,false); static Switch<ClusterFissioner,int> interfaceRemnantOption ("RemnantOption", "Option for the treatment of remnant clusters", &ClusterFissioner::_iopRem, 1, false, false); static SwitchOption interfaceRemnantOptionSoft (interfaceRemnantOption, "Soft", "Both clusters produced in the fission of the beam cluster" " are treated as soft clusters.", 0); static SwitchOption interfaceRemnantOptionHard (interfaceRemnantOption, "Hard", "Only the cluster containing the remnant is treated as a soft cluster.", 1); static Parameter<ClusterFissioner,Energy> interfaceBTCLM ("SoftClusterFactor", "Parameter for the mass spectrum of remnant clusters", &ClusterFissioner::_btClM, GeV, 1.*GeV, 0.1*GeV, 10.0*GeV, false, false, Interface::limited); static Parameter<ClusterFissioner,Tension> interfaceStringTension ("StringTension", "String tension used in vertex displacement calculation", &ClusterFissioner::_kappa, GeV/meter, 1.0e15*GeV/meter, ZERO, ZERO, false, false, Interface::lowerlim); } tPVector ClusterFissioner::fission(ClusterVector & clusters, bool softUEisOn) { if (clusters.empty()) return tPVector(); /***************** * Loop over the (input) collection of cluster pointers, and store in * the vector splitClusters all the clusters that need to be split * (these are beam clusters, if soft underlying event is off, and * heavy non-beam clusters). ********************/ stack<ClusterPtr> splitClusters; for(ClusterVector::iterator it = clusters.begin() ; it != clusters.end() ; ++it) { /************** * Skip 3-component clusters that have been redefined (as 2-component * clusters) or not available clusters. The latter check is indeed * redundant now, but it is used for possible future extensions in which, * for some reasons, some of the clusters found by ClusterFinder are tagged * straight away as not available. **************/ if((*it)->isRedefined() || !(*it)->isAvailable()) continue; // if the cluster is a beam cluster add it to the vector of clusters // to be split or if it is heavy if((*it)->isBeamCluster() || isHeavy(*it)) splitClusters.push(*it); } tPVector finalhadrons; cut(splitClusters, clusters, finalhadrons, softUEisOn); return finalhadrons; } void ClusterFissioner::cut(stack<ClusterPtr> & clusterStack, ClusterVector &clusters, tPVector & finalhadrons, bool softUEisOn) { /************************************************** * This method does the splitting of the cluster pointed by cluPtr * and "recursively" by all of its cluster children, if heavy. All of these * new children clusters are added (indeed the pointers to them) to the * collection of cluster pointers collecCluPtr. The method works as follows. * Initially the vector vecCluPtr contains just the input pointer to the * cluster to be split. Then it will be filled "recursively" by all * of the cluster's children that are heavy enough to require, in their turn, * to be split. In each loop, the last element of the vector vecCluPtr is * considered (only once because it is then removed from the vector). * This approach is conceptually recursive, but avoid the overhead of * a concrete recursive function. Furthermore it requires minimal changes * in the case that the fission of an heavy cluster could produce more * than two cluster children as assumed now. * * Draw the masses: for normal, non-beam clusters a power-like mass dist * is used, whereas for beam clusters a fast-decreasing exponential mass * dist is used instead (to avoid many iterative splitting which could * produce an unphysical large transverse energy from a supposed soft beam * remnant process). ****************************************/ // Here we recursively loop over clusters in the stack and cut them while (!clusterStack.empty()) { // take the last element of the vector ClusterPtr iCluster = clusterStack.top(); clusterStack.pop(); // split it cutType ct = cut(iCluster, finalhadrons, softUEisOn); // There are cases when we don't want to split, even if it fails mass test if(!ct.first.first || !ct.second.first) { // if an unsplit beam cluster leave if for the underlying event if(iCluster->isBeamCluster() && softUEisOn) iCluster->isAvailable(false); continue; } // check if clusters ClusterPtr one = dynamic_ptr_cast<ClusterPtr>(ct.first.first); ClusterPtr two = dynamic_ptr_cast<ClusterPtr>(ct.second.first); // is a beam cluster must be split into two clusters if(iCluster->isBeamCluster() && (!one||!two) && softUEisOn) { iCluster->isAvailable(false); continue; } // There should always be a intermediate quark(s) from the splitting assert(ct.first.second && ct.second.second); /// \todo sort out motherless quark pairs here. Watch out for 'quark in final state' errors iCluster->addChild(ct.first.first); // iCluster->addChild(ct.first.second); // ct.first.second->addChild(ct.first.first); iCluster->addChild(ct.second.first); // iCluster->addChild(ct.second.second); // ct.second.second->addChild(ct.second.first); // Sometimes the clusters decay C -> H + C' rather then C -> C' + C'' if(one) { clusters.push_back(one); if(one->isBeamCluster() && softUEisOn) one->isAvailable(false); if(isHeavy(one) && one->isAvailable()) clusterStack.push(one); } if(two) { clusters.push_back(two); if(two->isBeamCluster() && softUEisOn) two->isAvailable(false); if(isHeavy(two) && two->isAvailable()) clusterStack.push(two); } } } namespace { bool cantMakeHadron(tcPPtr p1, tcPPtr p2) { return ! CheckId::canBeHadron(p1->dataPtr(), p2->dataPtr()); } } ClusterFissioner::cutType ClusterFissioner::cut(ClusterPtr & cluster, tPVector & finalhadrons, bool softUEisOn) { // need to make sure only 2-cpt clusters get here assert(cluster->numComponents() == 2); tPPtr ptrQ1 = cluster->particle(0); tPPtr ptrQ2 = cluster->particle(1); Energy Mc = cluster->mass(); assert(ptrQ1); assert(ptrQ2); // And check if those particles are from a beam remnant bool rem1 = cluster->isBeamRemnant(0); bool rem2 = cluster->isBeamRemnant(1); // workout which distribution to use bool soft1 = rem1 || (_iopRem==0 && rem2); bool soft2 = rem2 || (_iopRem==0 && rem1); // Initialization for the exponential ("soft") mass distribution. static const int max_loop = 1000; int counter = 0; Energy Mc1 = ZERO, Mc2 = ZERO,m1=ZERO,m2=ZERO,m=ZERO; bool toHadron1(false), toHadron2(false); PPtr newPtr1 = PPtr (); PPtr newPtr2 = PPtr (); bool succeeded = false; do { succeeded = false; ++counter; drawNewFlavour(newPtr1,newPtr2); // check for right ordering assert (ptrQ2); assert (newPtr2); assert (ptrQ2->dataPtr()); assert (newPtr2->dataPtr()); if(cantMakeHadron(ptrQ1, newPtr1) || cantMakeHadron(ptrQ2, newPtr2)) { swap(newPtr1, newPtr2); // check again if(cantMakeHadron(ptrQ1, newPtr1) || cantMakeHadron(ptrQ2, newPtr2)) { throw Exception() << "ClusterFissioner cannot split the cluster (" << ptrQ1->PDGName() << ' ' << ptrQ2->PDGName() << ") into hadrons.\n" << Exception::runerror; } } // Check that new clusters can produce particles and there is enough // phase space to choose the drawn flavour m1 = ptrQ1->data().constituentMass(); m2 = ptrQ2->data().constituentMass(); m = newPtr1->data().constituentMass(); // Do not split in the case there is no phase space available if(Mc < m1+m + m2+m) continue; // power for splitting double exp1=_pSplitLight; double exp2=_pSplitLight; if (CheckId::isExotic(ptrQ1->dataPtr())) exp1 = _pSplitExotic; else if(CheckId::hasBottom(ptrQ1->dataPtr()))exp1 = _pSplitBottom; else if(CheckId::hasCharm(ptrQ1->dataPtr())) exp1 = _pSplitCharm; if (CheckId::isExotic(ptrQ2->dataPtr())) exp2 = _pSplitExotic; else if(CheckId::hasBottom(ptrQ2->dataPtr())) exp2 = _pSplitBottom; else if(CheckId::hasCharm(ptrQ2->dataPtr())) exp2 = _pSplitCharm; // If, during the drawing of candidate masses, too many attempts fail // (because the phase space available is tiny) /// \todo run separate loop here? Mc1 = drawChildMass(Mc,m1,m2,m,exp1,soft1); Mc2 = drawChildMass(Mc,m2,m1,m,exp2,soft2); if(Mc1 < m1+m || Mc2 < m+m2 || Mc1+Mc2 > Mc) continue; /************************** * New (not present in Fortran Herwig): * check whether the fragment masses Mc1 and Mc2 are above the * threshold for the production of the lightest pair of hadrons with the * right flavours. If not, then set by hand the mass to the lightest * single hadron with the right flavours, in order to solve correctly * the kinematics, and (later in this method) create directly such hadron * and add it to the children hadrons of the cluster that undergoes the * fission (i.e. the one pointed by iCluPtr). Notice that in this special * case, the heavy cluster that undergoes the fission has one single * cluster child and one single hadron child. We prefer this approach, * rather than to create a light cluster, with the mass set equal to * the lightest hadron, and let then the class LightClusterDecayer to do * the job to decay it to that single hadron, for two reasons: * First, because the sum of the masses of the two constituents can be, * in this case, greater than the mass of that hadron, hence it would * be impossible to solve the kinematics for such two components, and * therefore we would have a cluster whose components are undefined. * Second, the algorithm is faster, because it avoids the reshuffling * procedure that would be necessary if we used LightClusterDecayer * to decay the light cluster to the lightest hadron. ****************************/ toHadron1 = false; if(Mc1 < _hadronsSelector->massLightestHadronPair(ptrQ1->dataPtr(), newPtr1->dataPtr())) { Mc1 = _hadronsSelector->massLightestHadron(ptrQ1->dataPtr(), newPtr1->dataPtr()); toHadron1 = true; } toHadron2 = false; if(Mc2 < _hadronsSelector->massLightestHadronPair(ptrQ2->dataPtr(), newPtr2->dataPtr())) { Mc2 = _hadronsSelector->massLightestHadron(ptrQ2->dataPtr(), newPtr2->dataPtr()); toHadron2 = true; } // if a beam cluster not allowed to decay to hadrons if(cluster->isBeamCluster() && (toHadron1||toHadron2) && softUEisOn) continue; // Check if the decay kinematics is still possible: if not then // force the one-hadron decay for the other cluster as well. if(Mc1 + Mc2 > Mc) { if(!toHadron1) { Mc1 = _hadronsSelector->massLightestHadron(ptrQ1->dataPtr(), newPtr1->dataPtr()); toHadron1 = true; } else if(!toHadron2) { Mc2 = _hadronsSelector->massLightestHadron(ptrQ2->dataPtr(), newPtr2->dataPtr()); toHadron2 = true; } } succeeded = (Mc >= Mc1+Mc2); } while (!succeeded && counter < max_loop); if(counter >= max_loop) { static const PPtr null = PPtr(); return cutType(PPair(null,null),PPair(null,null)); } // Determined the (5-components) momenta (all in the LAB frame) Lorentz5Momentum pClu = cluster->momentum(); // known Lorentz5Momentum p0Q1 = ptrQ1->momentum(); // known (mom Q1 before fission) Lorentz5Momentum pClu1, pClu2, pQ1, pQone, pQtwo, pQ2; //unknown pClu1.setMass(Mc1); pClu2.setMass(Mc2); pQ1.setMass(m1); pQ2.setMass(m2); pQone.setMass(m); pQtwo.setMass(m); calculateKinematics(pClu,p0Q1,toHadron1,toHadron2, pClu1,pClu2,pQ1,pQone,pQtwo,pQ2); // out /****************** * The previous methods have determined the kinematics and positions * of C -> C1 + C2. * In the case that one of the two product is light, that means either * decayOneHadronClu1 or decayOneHadronClu2 is true, then the momenta * of the components of that light product have not been determined, * and a (light) cluster will not be created: the heavy father cluster * decays, in this case, into a single (not-light) cluster and a * single hadron. In the other, "normal", cases the father cluster * decays into two clusters, each of which has well defined components. * Notice that, in the case of components which point to particles, the * momenta of the components is properly set to the new values, whereas * we do not change the momenta of the pointed particles, because we * want to keep all of the information (that is the new momentum of a * component after the splitting, which is contained in the _momentum * member of the Component class, and the (old) momentum of that component * before the splitting, which is contained in the momentum of the * pointed particle). Please not make confusion of this only apparent * inconsistency! ********************/ LorentzPoint posC,pos1,pos2; posC = cluster->labVertex(); calculatePositions(pClu, posC, pClu1, pClu2, pos1, pos2); cutType rval; if(toHadron1) { rval.first = produceHadron(ptrQ1->dataPtr(), newPtr1, pClu1, pos1); finalhadrons.push_back(rval.first.first); } else { rval.first = produceCluster(ptrQ1, newPtr1, pClu1, pos1, pQ1, pQone, rem1); } if(toHadron2) { rval.second = produceHadron(ptrQ2->dataPtr(), newPtr2, pClu2, pos2); finalhadrons.push_back(rval.second.first); } else { rval.second = produceCluster(ptrQ2, newPtr2, pClu2, pos2, pQ2, pQtwo, rem2); } return rval; } ClusterFissioner::PPair ClusterFissioner::produceHadron(tcPDPtr ptrQ, tPPtr newPtr, const Lorentz5Momentum &a, const LorentzPoint &b) const { PPair rval; rval.first =( _hadronsSelector->lightestHadron(ptrQ,newPtr->dataPtr()))->produceParticle(); rval.second = newPtr; rval.first->set5Momentum(a); rval.first->setLabVertex(b); return rval; } ClusterFissioner::PPair ClusterFissioner::produceCluster(tPPtr & ptrQ, tPPtr newPtr, Lorentz5Momentum & a, LorentzPoint & b, Lorentz5Momentum & c, Lorentz5Momentum & d, bool isRem) const { PPair rval; rval.second = newPtr; ClusterPtr cluster = new_ptr(Cluster(ptrQ,rval.second)); rval.first = cluster; rval.first->set5Momentum(a); rval.first->setLabVertex(b); if(cluster->particle(0)->id() == ptrQ->id()) { cluster->particle(0)->set5Momentum(c); cluster->particle(1)->set5Momentum(d); cluster->setBeamRemnant(0,isRem); } else { cluster->particle(0)->set5Momentum(d); cluster->particle(1)->set5Momentum(c); cluster->setBeamRemnant(1,isRem); } return rval; } void ClusterFissioner::drawNewFlavour(PPtr& newPtrPos,PPtr& newPtrNeg) const { // Flavour is assumed to be only u, d, s, with weights // (which are not normalized probabilities) given // by the same weights as used in HadronsSelector for // the decay of clusters into two hadrons. double prob_d = _hadronsSelector->pwtDquark(); double prob_u = _hadronsSelector->pwtUquark(); double prob_s = _hadronsSelector->pwtSquark(); int choice = UseRandom::rnd3(prob_u, prob_d, prob_s); long idNew = 0; switch (choice) { case 0: idNew = ThePEG::ParticleID::u; break; case 1: idNew = ThePEG::ParticleID::d; break; case 2: idNew = ThePEG::ParticleID::s; break; } newPtrPos = getParticle(idNew); newPtrNeg = getParticle(-idNew); assert (newPtrPos); assert(newPtrNeg); assert (newPtrPos->dataPtr()); assert(newPtrNeg->dataPtr()); } Energy ClusterFissioner::drawChildMass(const Energy M, const Energy m1, const Energy m2, const Energy m, const double expt, const bool soft) const { /*************************** * This method, given in input the cluster mass Mclu of an heavy cluster C, * made of consituents of masses m1 and m2, draws the masses Mclu1 and Mclu2 * of, respectively, the children cluster C1, made of constituent masses m1 * and m, and cluster C2, of mass Mclu2 and made of constituent masses m2 * and m. The mass is extracted from one of the two following mass * distributions: * --- power-like ("normal" distribution) * d(Prob) / d(M^exponent) = const * where the exponent can be different from the two children C1 (exp1) * and C2 (exponent2). * --- exponential ("soft" distribution) * d(Prob) / d(M^2) = exp(-b*M) * where b = 2.0 / average. * Such distributions are limited below by the masses of * the constituents quarks, and above from the mass of decaying cluster C. * The choice of which of the two mass distributions to use for each of the * two cluster children is dictated by iRemnant (see below). * If the number of attempts to extract a pair of mass values that are * kinematically acceptable is above some fixed number (max_loop, see below) * the method gives up and returns false; otherwise, when it succeeds, it * returns true. * * These distributions have been modified from HERWIG: * Before these were: * Mclu1 = m1 + (Mclu - m1 - m2)*pow( rnd(), 1.0/exponent1 ); * The new one coded here is a more efficient version, same density * but taking into account 'in phase space from' beforehand ***************************/ // hard cluster if(!soft) { return pow(UseRandom::rnd(pow((M-m1-m2-m)*UnitRemoval::InvE, expt), pow(m*UnitRemoval::InvE, expt)), 1./expt )*UnitRemoval::E + m1; } // Otherwise it uses a soft mass distribution else { static const InvEnergy b = 2.0 / _btClM; Energy max = M-m1-m2-2.0*m; double rmin = b*max; rmin = ( rmin < 50 ) ? exp(-rmin) : 0.; double r1; do { r1 = UseRandom::rnd(rmin, 1.0) * UseRandom::rnd(rmin, 1.0); } while (r1 < rmin); return m1 + m - log(r1)/b; } } void ClusterFissioner::calculateKinematics(const Lorentz5Momentum & pClu, const Lorentz5Momentum & p0Q1, const bool toHadron1, const bool toHadron2, Lorentz5Momentum & pClu1, Lorentz5Momentum & pClu2, Lorentz5Momentum & pQ1, Lorentz5Momentum & pQbar, Lorentz5Momentum & pQ, Lorentz5Momentum & pQ2bar) const { /****************** * This method solves the kinematics of the two body cluster decay: * C (Q1 Q2bar) ---> C1 (Q1 Qbar) + C2 (Q Q2bar) * In input we receive the momentum of C, pClu, and the momentum * of the quark Q1 (constituent of C), p0Q1, both in the LAB frame. * Furthermore, two boolean variables inform whether the two fission * products (C1, C2) decay immediately into a single hadron (in which * case the cluster itself is identify with that hadron) and we do * not have to solve the kinematics of the components (Q1,Qbar) for * C1 and (Q,Q2bar) for C2. * The output is given by the following momenta (all 5-components, * and all in the LAB frame): * pClu1 , pClu2 respectively of C1 , C2 * pQ1 , pQbar respectively of Q1 , Qbar in C1 * pQ , pQ2bar respectively of Q , Q2 in C2 * The assumption, suggested from the string model, is that, in C frame, * C1 and its constituents Q1 and Qbar are collinear, and collinear to * the direction of Q1 in C (that is before cluster decay); similarly, * (always in the C frame) C2 and its constituents Q and Q2bar are * collinear (and therefore anti-collinear with C1,Q1,Qbar). * The solution is then obtained by using Lorentz boosts, as follows. * The kinematics of C1 and C2 is solved in their parent C frame, * and then boosted back in the LAB. The kinematics of Q1 and Qbar * is solved in their parent C1 frame and then boosted back in the LAB; * similarly, the kinematics of Q and Q2bar is solved in their parent * C2 frame and then boosted back in the LAB. In each of the three * "two-body decay"-like cases, we use the fact that the direction * of the motion of the decay products is known in the rest frame of * their parent. This is obvious for the first case in which the * parent rest frame is C; but it is also true in the other two cases * where the rest frames are C1 and C2. This is because C1 and C2 * are boosted w.r.t. C in the same direction where their components, * respectively (Q1,Qbar) and (Q,Q2bar) move in C1 and C2 rest frame * respectively. * Of course, although the notation used assumed that C = (Q1 Q2bar) * where Q1 is a quark and Q2bar an antiquark, indeed everything remain * unchanged also in all following cases: * Q1 quark, Q2bar antiquark; --> Q quark; * Q1 antiquark , Q2bar quark; --> Q antiquark; * Q1 quark, Q2bar diquark; --> Q quark * Q1 antiquark, Q2bar anti-diquark; --> Q antiquark * Q1 diquark, Q2bar quark --> Q antiquark * Q1 anti-diquark, Q2bar antiquark; --> Q quark **************************/ // Calculate the unit three-vector, in the C frame, along which // all of the constituents and children clusters move. Lorentz5Momentum u(p0Q1); u.boost( -pClu.boostVector() ); // boost from LAB to C // the unit three-vector is then u.vect().unit() // Calculate the momenta of C1 and C2 in the (parent) C frame first, // where the direction of C1 is u.vect().unit(), and then boost back in the // LAB frame. if (pClu.m() < pClu1.mass() + pClu2.mass() ) { throw Exception() << "Impossible Kinematics in ClusterFissioner::calculateKinematics() (A)" << Exception::eventerror; } Kinematics::twoBodyDecay(pClu, pClu1.mass(), pClu2.mass(), u.vect().unit(), pClu1, pClu2); // In the case that cluster1 does not decay immediately into a single hadron, // calculate the momenta of Q1 (as constituent of C1) and Qbar in the // (parent) C1 frame first, where the direction of Q1 is u.vect().unit(), // and then boost back in the LAB frame. if(!toHadron1) { if (pClu1.m() < pQ1.mass() + pQbar.mass() ) { throw Exception() << "Impossible Kinematics in ClusterFissioner::calculateKinematics() (B)" << Exception::eventerror; } Kinematics::twoBodyDecay(pClu1, pQ1.mass(), pQbar.mass(), u.vect().unit(), pQ1, pQbar); } // In the case that cluster2 does not decay immediately into a single hadron, // Calculate the momenta of Q and Q2bar (as constituent of C2) in the // (parent) C2 frame first, where the direction of Q is u.vect().unit(), // and then boost back in the LAB frame. if(!toHadron2) { if (pClu2.m() < pQ.mass() + pQ2bar.mass() ) { throw Exception() << "Impossible Kinematics in ClusterFissioner::calculateKinematics() (C)" << Exception::eventerror; } Kinematics::twoBodyDecay(pClu2, pQ.mass(), pQ2bar.mass(), u.vect().unit(), pQ, pQ2bar); } } void ClusterFissioner::calculatePositions(const Lorentz5Momentum & pClu, const LorentzPoint & positionClu, const Lorentz5Momentum & pClu1, const Lorentz5Momentum & pClu2, LorentzPoint & positionClu1, LorentzPoint & positionClu2) const { // Determine positions of cluster children. // See Marc Smith's thesis, page 127, formulas (4.122) and (4.123). Energy Mclu = pClu.m(); Energy Mclu1 = pClu1.m(); Energy Mclu2 = pClu2.m(); // Calculate the unit three-vector, in the C frame, along which // children clusters move. Lorentz5Momentum u(pClu1); u.boost( -pClu.boostVector() ); // boost from LAB to C frame // the unit three-vector is then u.vect().unit() Energy pstarChild = Kinematics::pstarTwoBodyDecay(Mclu,Mclu1,Mclu2); // First, determine the relative positions of the children clusters // in the parent cluster reference frame. Length x1 = ( 0.25*Mclu + 0.5*( pstarChild + (sqr(Mclu2) - sqr(Mclu1))/(2.0*Mclu)))/_kappa; Length t1 = Mclu/_kappa - x1; LorentzDistance distanceClu1( x1 * u.vect().unit(), t1 ); Length x2 = (-0.25*Mclu + 0.5*(-pstarChild + (sqr(Mclu2) - sqr(Mclu1))/(2.0*Mclu)))/_kappa; Length t2 = Mclu/_kappa + x2; LorentzDistance distanceClu2( x2 * u.vect().unit(), t2 ); // Then, transform such relative positions from the parent cluster // reference frame to the Lab frame. distanceClu1.boost( pClu.boostVector() ); distanceClu2.boost( pClu.boostVector() ); // Finally, determine the absolute positions in the Lab frame. positionClu1 = positionClu + distanceClu1; positionClu2 = positionClu + distanceClu2; } bool ClusterFissioner::isHeavy(tcClusterPtr clu) { // default double clpow = _clPowLight; Energy clmax = _clMaxLight; // particle data for constituents tcPDPtr cptr[3]={tcPDPtr(),tcPDPtr(),tcPDPtr()}; for(int ix=0;ix<min(clu->numComponents(),3);++ix) { cptr[ix]=clu->particle(ix)->dataPtr(); } // different parameters for exotic, bottom and charm clusters if(CheckId::isExotic(cptr[0],cptr[1],cptr[1])) { clpow = _clPowExotic; clmax = _clMaxExotic; } else if(CheckId::hasBottom(cptr[0],cptr[1],cptr[1])) { clpow = _clPowBottom; clmax = _clMaxBottom; } else if(CheckId::hasCharm(cptr[0],cptr[1],cptr[1])) { clpow = _clPowCharm; clmax = _clMaxCharm; } bool aboveCutoff = ( pow(clu->mass()*UnitRemoval::InvE , clpow) > pow(clmax*UnitRemoval::InvE, clpow) + pow(clu->sumConstituentMasses()*UnitRemoval::InvE, clpow) ); // required test for SUSY clusters, since aboveCutoff alone // cannot guarantee (Mc > m1 + m2 + 2*m) in cut() static const Energy minmass = getParticleData(ParticleID::d)->constituentMass(); bool canSplitMinimally = clu->mass() > clu->sumConstituentMasses() + 2.0 * minmass; return aboveCutoff && canSplitMinimally; } ����������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/LightClusterDecayer.cc��������������������������������������������0000644�0001750�0001750�00000044715�11754474775�024041� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // LightClusterDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the LightClusterDecayer class. // #include "LightClusterDecayer.h" #include <ThePEG/Interface/ClassDocumentation.h> #include <ThePEG/Interface/Parameter.h> #include <ThePEG/Interface/Reference.h> #include <ThePEG/Persistency/PersistentOStream.h> #include <ThePEG/Persistency/PersistentIStream.h> #include <ThePEG/PDT/EnumParticles.h> #include <ThePEG/Repository/EventGenerator.h> #include "Cluster.h" #include "CheckId.h" #include "Herwig++/Utilities/Kinematics.h" #include <ThePEG/Utilities/DescribeClass.h> using namespace Herwig; DescribeClass<LightClusterDecayer,Interfaced> describeLightClusterDecayer("Herwig::LightClusterDecayer",""); IBPtr LightClusterDecayer::clone() const { return new_ptr(*this); } IBPtr LightClusterDecayer::fullclone() const { return new_ptr(*this); } void LightClusterDecayer::persistentOutput(PersistentOStream & os) const { os << _hadronSelector << _limBottom << _limCharm << _limExotic; } void LightClusterDecayer::persistentInput(PersistentIStream & is, int) { is >> _hadronSelector >> _limBottom >> _limCharm >> _limExotic ; } void LightClusterDecayer::Init() { static ClassDocumentation<LightClusterDecayer> documentation ("There is the class responsible for the one-hadron decay of light clusters"); static Reference<LightClusterDecayer,HadronSelector> interfaceHadronSelector("HadronSelector", "A reference to the HadronSelector object", &Herwig::LightClusterDecayer::_hadronSelector, false, false, true, false); static Parameter<LightClusterDecayer,double> interfaceSingleHadronLimitBottom ("SingleHadronLimitBottom","threshold for one-hadron decay of b-cluster", &LightClusterDecayer::_limBottom, 0, 0.0, 0.0, 100.0,false,false,false); static Parameter<LightClusterDecayer,double> interfaceSingleHadronLimitCharm ("SingleHadronLimitCharm","threshold for one-hadron decay of c-cluster", &LightClusterDecayer::_limCharm, 0, 0.0, 0.0, 100.0,false,false,false); static Parameter<LightClusterDecayer,double> interfaceSingleHadronLimitExotic ("SingleHadronLimitExotic","threshold for one-hadron decay of exotic cluster", &LightClusterDecayer::_limExotic, 0, 0.0, 0.0, 100.0,false,false,false); } bool LightClusterDecayer::decay(ClusterVector & clusters, tPVector & finalhadrons) { // Loop over all clusters, and for those that were not heavy enough // to undergo to fission, check if they are below the threshold // for normal two-hadron decays. If this is the case, then the cluster // should be decayed into a single hadron: this can happen only if // it is possible to reshuffle momenta between the cluster and // another one; in the rare occasions in which such exchange of momenta // is not possible (because all of the clusters are too light) then // the event is skipped. // Notice that, differently from what happens in Fortran Herwig, // light (that is below the threshold for the production of the lightest // pair of hadrons with the proper flavours) fission products, produced // by the fission of heavy clusters in class ClusterFissioner // have been already "decayed" into single hadron (the lightest one // with proper flavour) by the same latter class, without requiring // any reshuffling. Therefore the light clusters that are treated in // this LightClusterDecayer class are produced directly // (originally) by the class ClusterFinder. // To preserve all of the information, the cluster partner with which // the light cluster (that decays into a single hadron) exchanges // momentum in the reshuffling procedure is redefined and inserted // in the vector vecNewRedefinedCluPtr. Only at the end, when all // light clusters have been examined, the elements this vector will be // copied in collecCluPtr (the reason is that it is not allowed to // modify a STL container while iterating over it. At the same time, // this ensures that a cluster can be redefined only once, which seems // sensible although not strictly necessary). // Notice that the cluster reshuffling partner is normally redefined // and inserted in the vector vecNewRedefinedCluPtr, but not always: // in the case it is also light, then it is also decayed immediately // into a single hadron, without redefining it (the reason being that, // otherwise, the would-be redefined cluster could have undefined // components). vector<tClusterPtr> redefinedClusters; for (ClusterVector::const_iterator it = clusters.begin(); it != clusters.end(); ++it) { // Skip the clusters that are not available or that are // heavy, intermediate, clusters that have undergone to fission, if ( ! (*it)->isAvailable() || ! (*it)->isReadyToDecay() ) continue; // We need to require (at least at the moment, maybe in the future we // could change it) that the cluster has exactly two components, // because otherwise we don't know how to deal with the kinematics. // If this is not the case, then send a warning because it is not suppose // to happen, and then do nothing with (ignore) such cluster. if ( (*it)->numComponents() != 2 ) { generator()->logWarning( Exception("LightClusterDecayer::decay " "***Still cluster with not exactly" " 2 components*** ", Exception::warning) ); continue; } // Extract the particle pointer of the two components of the cluster. tPPtr ptrQ1 = (*it)->particle(0); tPPtr ptrQ2 = (*it)->particle(1); tcPDPtr par1 = ptrQ1->dataPtr(); tcPDPtr par2 = ptrQ2->dataPtr(); // Determine the sum of the nominal masses of the two lightest hadrons // with the right flavour numbers as the cluster under consideration. // Notice that we don't need real masses (drawn by a Breit-Wigner // distribution) because the lightest pair of hadrons does not involve // any broad resonance. Energy threshold = _hadronSelector->massLightestHadronPair(par1,par2); // Special: it allows one-hadron decays also above threshold. if (CheckId::isExotic(par1,par2)) threshold *= (1.0 + UseRandom::rnd()*_limExotic); else if (CheckId::hasBottom(par1,par2)) threshold *= (1.0 + UseRandom::rnd()*_limBottom); else if (CheckId::hasCharm(par1,par2)) threshold *= (1.0 + UseRandom::rnd()*_limCharm); // only do one hadron decay is mass less than the threshold if((*it)->mass()>=threshold) continue; tcPDPtr hadron= _hadronSelector->lightestHadron(par1,par2); // We assume that the candidate reshuffling cluster partner, // with whom the light cluster can exchange momenta, // is chosen as the closest in space-time between the available // clusters. Notice that an alternative, sensible approach // could be to consider instead the "closeness" in the colour // structure... // Notice that nor a light cluster (which decays into a single hadron) // neither its cluster reshuffling partner (which either has a // redefined cluster or also decays into a single hadron) can be // a reshuffling partner of another light cluster. // This because we are requiring that the considered candidate cluster // reshuffling partner has the status "isAvailable && isReadyToDecay" true; // furthermore, the new redefined clusters are not added to the collection // of cluster before the end of the entire reshuffling procedure, avoiding // in this way that the redefined cluster of a cluster reshuffling partner // is used again later. Needless to say, this is just an assumption, // although reasonable, but nothing more than that! // Build a multimap of available reshuffling cluster partners, // with key given by the module of the invariant space-time distance // w.r.t. the light cluster, so that this new collection is automatically // ordered in increasing distance values. // We use a multimap, rather than a map, just for precaution against not properly // defined cluster positions which could produce all identical (null) distances. multimap<Length,tClusterPtr> candidates; for ( ClusterVector::iterator jt = clusters.begin(); jt != clusters.end(); ++jt ) { if ((*jt)->isAvailable() && (*jt)->isReadyToDecay() && jt != it) { Length distance = abs (((*it)->vertex() - (*jt)->vertex()).m()); candidates.insert(pair<Length,tClusterPtr>(distance,*jt)); } } // Loop sequentially the multimap. multimap<Length,tClusterPtr>::const_iterator mmapIt = candidates.begin(); bool found = false; while (!found && mmapIt != candidates.end()) { found = reshuffling(hadron, *it, (*mmapIt).second, redefinedClusters, finalhadrons); if (!found) ++mmapIt; } if (!found) return partonicReshuffle(hadron,*it,finalhadrons); } // end loop over collecCluPtr // Add to collecCluPtr all of the redefined new clusters (indeed the // pointers to them are added) contained in vecNewRedefinedCluPtr. for (tClusterVector::const_iterator it = redefinedClusters.begin(); it != redefinedClusters.end(); ++it) { clusters.push_back(*it); } return true; } bool LightClusterDecayer::reshuffling(const tcPDPtr pdata1, tClusterPtr cluPtr1, tClusterPtr cluPtr2, tClusterVector & redefinedClusters, tPVector & finalhadrons) { // don't reshuffle with beam clusters if(cluPtr2->isBeamCluster()) return false; // This method does the reshuffling of momenta between the cluster "1", // that must decay into a single hadron (with id equal to idhad1), and // the candidate cluster "2". It returns true if the reshuffling succeed, // false otherwise. PPtr ptrhad1 = pdata1->produceParticle(); if ( ! ptrhad1 ) { generator()->logWarning( Exception("LightClusterDecayer::reshuffling" "***Cannot create a particle with specified id***", Exception::warning) ); return false; } Energy mhad1 = ptrhad1->mass(); // Let's call "3" and "4" the two constituents of the second cluster tPPtr part3 = cluPtr2->particle(0); tPPtr part4 = cluPtr2->particle(1); // Check if the system of the two clusters can kinematically be replaced by // an hadron of mass mhad1 (which is the lightest single hadron with the // same flavour numbers as the first cluster) and the second cluster. // If not, then try to replace the second cluster with the lightest hadron // with the same flavour numbers; if it still fails, then give up! Lorentz5Momentum pSystem = cluPtr1->momentum() + cluPtr2->momentum(); pSystem.rescaleMass(); // set the mass as the invariant of the quadri-vector Energy mSystem = pSystem.mass(); Energy mclu2 = cluPtr2->mass(); bool singleHadron = false; Energy mLHP2 = _hadronSelector->massLightestHadronPair(part3->dataPtr(),part4->dataPtr()); Energy mLH2 = _hadronSelector->massLightestHadron(part3->dataPtr(),part4->dataPtr()); if(mSystem > mhad1 + mclu2 && mclu2 > mLHP2) { singleHadron = false; } else if(mSystem > mhad1 + mLH2) { singleHadron = true; mclu2 = mLH2; } else return false; // Let's call from now on "Sys" the system of the two clusters, and // had1 (of mass mhad1) the lightest hadron in which the first // cluster decays, and clu2 (of mass mclu2) either the second // cluster or the lightest hadron in which it decays (depending // which one is kinematically allowed, see above). // The idea behind the reshuffling is to replace the system of the // two clusters by the system of the hadron had1 and (cluster or hadron) clu2, // but leaving the overall system unchanged. Furthermore, the motion // of had1 and clu2 in the Sys frame is assumed to be parallel to, respectively, // those of the original cluster1 and cluster2 in the same Sys frame. // Calculate the unit three-vector, in the frame "Sys" along which the // two initial clusters move. Lorentz5Momentum u( cluPtr1->momentum() ); u.boost( - pSystem.boostVector() ); // boost from LAB to Sys // Calculate the momenta of had1 and clu2 in the Sys frame first, // and then boost back in the LAB frame. Lorentz5Momentum phad1, pclu2; if (pSystem.m() < mhad1 + mclu2 ) { throw Exception() << "Impossible Kinematics in LightClusterDecayer::reshuffling()" << Exception::eventerror; } Kinematics::twoBodyDecay(pSystem, mhad1, mclu2, u.vect().unit(), phad1, pclu2); ptrhad1->set5Momentum( phad1 ); // set momentum of first hadron. ptrhad1->setLabVertex(cluPtr1->vertex()); // set hadron vertex position to the // parent cluster position. cluPtr1->addChild(ptrhad1); finalhadrons.push_back(ptrhad1); cluPtr1->flagAsReshuffled(); cluPtr2->flagAsReshuffled(); if(singleHadron) { // In the case that also the cluster reshuffling partner is light // it is decayed into a single hadron, *without* creating the // redefined cluster (this choice is justified in order to avoid // clusters that could have undefined components). PPtr ptrhad2 = _hadronSelector->lightestHadron(part3->dataPtr(),part4->dataPtr()) ->produceParticle(); ptrhad2->set5Momentum( pclu2 ); ptrhad2->setLabVertex( cluPtr2->vertex() ); // set hadron vertex position to the // parent cluster position. cluPtr2->addChild(ptrhad2); finalhadrons.push_back(ptrhad2); } else { // Create the new cluster which is the redefinitions of the cluster // partner (cluster "2") used in the reshuffling procedure of the // light cluster (cluster "1"). // The rationale of this is to preserve completely all of the information. ClusterPtr cluPtr2new = ClusterPtr(); if(part3 && part4) cluPtr2new = new_ptr(Cluster(part3,part4)); cluPtr2new->set5Momentum( pclu2 ); cluPtr2new->setVertex( cluPtr2->vertex() ); cluPtr2->addChild( cluPtr2new ); redefinedClusters.push_back( cluPtr2new ); // Set consistently the momenta of the two components of the second cluster // after the reshuffling. To do that we first calculate the momenta of the // constituents in the initial cluster rest frame; then we boost them back // in the lab but using this time the new cluster rest frame. Finally we store // these information in the new cluster. Notice that we do *not* set // consistently also the momenta of the (eventual) particles pointed by the // two components: that's because we do not need to do so, being the momentum // an explicit private member of the class Component (which is set equal // to the momentum of the eventual particle pointed only in the constructor, // but then later should not necessary be the same), and furthermore it allows // us not to loose any information, in the sense that we can always, later on, // to find the original momenta of the two components before the reshuffling. Lorentz5Momentum p3 = part3->momentum(); //p3new->momentum(); p3.boost( - (cluPtr2->momentum()).boostVector() ); // from LAB to clu2 (old) frame p3.boost( pclu2.boostVector() ); // from clu2 (new) to LAB frame Lorentz5Momentum p4 = part4->momentum(); //p4new->momentum(); p4.boost( - (cluPtr2->momentum()).boostVector() ); // from LAB to clu2 (old) frame p4.boost( pclu2.boostVector() ); // from clu2 (new) to LAB frame cluPtr2new->particle(0)->set5Momentum(p3); cluPtr2new->particle(1)->set5Momentum(p4); } // end of if (singleHadron) return true; } bool LightClusterDecayer::partonicReshuffle(const tcPDPtr had, const PPtr cluster, tPVector & finalhadrons) { tPPtr meson(cluster); if(!meson->parents().empty()) meson=meson->parents()[0]; if(!meson->parents().empty()) meson=meson->parents()[0]; // check b/c hadron decay int ptype(abs(meson->id())%10000); bool heavy = (ptype/1000 == 5 || ptype/1000 ==4 ); heavy |= (ptype/100 == 5 || ptype/100 ==4 ); heavy |= (ptype/10 == 5 || ptype/10 ==4 ); if(!heavy) return false; // find the leptons tPVector leptons; for(unsigned int ix=0;ix<meson->children().size();++ix) { if(!(meson->children()[ix]->dataPtr()->coloured())) { leptons.push_back(meson->children()[ix]); } } if(leptons.size()==1) { tPPtr w=leptons[0]; leptons.pop_back(); for(unsigned int ix=0;ix<w->children().size();++ix) { if(!w->children()[ix]->dataPtr()->coloured()) { leptons.push_back(w->children()[ix]); } } } if(leptons.size()!=2) return false; // get momentum of leptonic system and the its minimum possible mass Energy mmin(ZERO); Lorentz5Momentum pw; for(unsigned int ix=0;ix<leptons.size();++ix) { pw+=leptons[ix]->momentum(); mmin+=leptons[ix]->mass(); } pw.rescaleMass(); // check we can do the reshuffling PPtr ptrhad = had->produceParticle(); // total momentum fo the system Lorentz5Momentum pSystem = pw + cluster->momentum(); pSystem.rescaleMass(); // normal case get additional energy by rescaling momentum in rest frame of // system if(pSystem.mass()>ptrhad->mass()+pw.mass()&&pw.mass()>mmin) { // Calculate the unit three-vector, in the frame "Sys" along which the // two initial clusters move. Lorentz5Momentum u(cluster->momentum()); u.boost( - pSystem.boostVector() ); // Calculate the momenta of had1 and clu2 in the Sys frame first, // and then boost back in the LAB frame. Lorentz5Momentum phad1, pclu2; Kinematics::twoBodyDecay(pSystem, ptrhad->mass(), pw.mass(), u.vect().unit(), phad1, pclu2); // set momentum of first hadron. ptrhad->set5Momentum( phad1 ); // set hadron vertex position to the parent cluster position. ptrhad->setLabVertex(cluster->vertex()); // add hadron cluster->addChild(ptrhad); finalhadrons.push_back(ptrhad); // reshuffle the leptons // boost the leptons to the rest frame of the system Boost boost1(-pw.boostVector()); Boost boost2( pclu2.boostVector()); for(unsigned int ix=0;ix<leptons.size();++ix) { leptons[ix]->deepBoost(boost1); leptons[ix]->deepBoost(boost2); } return true; } else { return false; } } ���������������������������������������������������herwig++-2.6.0.orig/Hadronization/ClusterHadronizationHandler.fh������������������������������������0000644�0001750�0001750�00000000611�11754474775�025577� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the ClusterHadronizationHandler class. // #ifndef HERWIG_ClusterHadronizationHandler_FH #define HERWIG_ClusterHadronizationHandler_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class ClusterHadronizationHandler; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::ClusterHadronizationHandler,CluHadHdlPtr); } #endif �����������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/HwppSelector.h����������������������������������������������������0000644�0001750�0001750�00000010170�11754474775�022400� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HwppSelector.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_HwppSelector_H #define HERWIG_HwppSelector_H // // This is the declaration of the HwppSelector class. // #include "HadronSelector.h" #include "HwppSelector.fh" namespace Herwig { using namespace ThePEG; /** \ingroup hadronization * The HwppSelector class selects the hadrons produced in cluster decay using * the Herwig++ variant of the cluster model. * * @see \ref HwppSelectorInterfaces "The interfaces" * defined for HwppSelector. */ class HwppSelector: public HadronSelector { public: /** * The default constructor. */ HwppSelector() : HadronSelector(1), _mode(1) {} /** * * This method is used to choose a pair of hadrons. * * Given the mass of a cluster and the particle pointers of its * two (or three) constituents, this returns the pair of particle pointers of * the two hadrons with proper flavour numbers. * Furthermore, the first of the two hadron must have the * constituent with par1, and the second must have the constituent with par2. * At the moment it does *nothing* in the case that also par3 is present. * * Kupco's method is used, rather than one used in FORTRAN HERWIG * The idea is to build on the fly a table of all possible pairs * of hadrons (Had1,Had2) (that we can call "cluster decay channels") * which are kinematically above threshold and have flavour * Had1=(par1,quarktopick->CC()), Had2=(quarktopick,par2), where quarktopick * is the poniter of: * --- d, u, s, c, b * if either par1 or par2 is a diquark; * --- d, u, s, c, b, dd, ud, uu, sd, su, ss, * cd, cu, cs, cc, bd, bu, bs, bc, bb * if both par1 and par2 are quarks. * The weight associated with each channel is given by the product * of: the phase space available including the spin factor 2*J+1, * the constant weight factor for chosen idQ, * the octet-singlet isoscalar mixing factor, and finally * the singlet-decuplet weight factor. */ pair<tcPDPtr,tcPDPtr> chooseHadronPair(const Energy cluMass,tcPDPtr par1, tcPDPtr par2,tcPDPtr par3 = PDPtr()) ; 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. */ HwppSelector & operator=(const HwppSelector &); private: /** * Which algorithm to use */ unsigned int _mode; }; } #endif /* HERWIG_HwppSelector_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Hadronization/README������������������������������������������������������������0000644�0001750�0001750�00000006126�11754474775�020476� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� (Last update: 16-Apr-2002) THIS FILE CONTAINS SOME INFORMATION ABOUT THE CLASS STRUCTURE IN THIS DIRECTORY, AND SOME NOTES ABOUT THE CLASSES. --- Class Structure. The main class is *ClusterHadronizationHandler* It interacts with the following classes: *PartonSplitter* *ClusterFinder* *ColourReconnector* *ClusterFissioner* *LightClusterDecayer* *ClusterDecayer* all of these classes uses the fundamental (low-level) classes: *Cluster* *Component* Furthermore *ClusterFissioner*, *LightClusterDecayer*, and *ClusterDecayer* use the class *HadronsSelector*. --- Class: *PartonSplitter* has still empty methods for the splitting of space-like and/or space-like with sea quark. --- Beam clusters: all the clusters are contained in the container _collecCluPtr in the main driver class ClusterHadronizationHandler, including the beam clusters (defined as clusters having at least one beam remnant between their components) which can be identified by the logical method Cluster::isBeamCluster(). These beam clusters are properly treated in the Cluster Hadronization if the soft underlying event is switched off. In the case it is switched on, the beam clusters are tagged as not available (that is the logical method Cluster::isAvailable() returns false), and are ignored during the hadronization (although present in _collecCluPtr). When, in the future, the soft underlying event is implemented, it will be necessary, in some way, to pass these beam clusters from ClusterHadronizationHandler to the class responsible for the soft underlying event. It should be quite straightforward! --- Class: *LightClusterDecayer* the choice of the candidate reshuffling partner cluster, with whom the light cluster exchanged momenta, is based on the minimal space-time distance from the light cluster, between the available clusters. --- Extensive debugging information on the full Cluster Hadronization are produced by running with the switch -dHw10 for example: runHerwig.exe -dHw10 SimpleLEP.run (or even more with: -dHw100) The debugging information are then in SimpleLEP.log. Notice that you can also control the number of events (max default is 10000) with -N , for example: runHerwig.exe -N 100 -dHw 10 SimpleLEP.run --- The class *HadronsSelector* , which implements Kupco's method for the selection of a pair of hadrons giving the flavour of the cluster, contains all hadrons as in PDG 2000. However, because at the moment Pythia7 does not include many of them, you can either comment out the lines corresponding to the missing particles, or uncomment (use) them, but in the latter case you will get a (single) warning during initialization ( which means when running: $ setupHewig.exe SimpleLEP.in ) saying that such particles are not found in Pythia7 and therefore they will not be produced (i.e. their overall weights are set to zero). ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/��������������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464204�016011� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/DecayMatrixElement.cc�����������������������������������������������������0000644�0001750�0001750�00000011233�11754474774�022057� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DecayMatrixElement.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DecayMatrixElement class. // // Author: Peter Richardson // #include "DecayMatrixElement.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace Herwig; using namespace ThePEG; NoPIOClassDescription<DecayMatrixElement> DecayMatrixElement::initDecayMatrixElement; // Definition of the static class description member. void DecayMatrixElement::Init() { static ClassDocumentation<DecayMatrixElement> documentation ("The DecayMatrixElement class is designed to store the helicity " "amplitude expression for the matrix element of a decay."); } // calculate the decay matrix for this decay RhoDMatrix DecayMatrixElement::calculateDMatrix(const vector<RhoDMatrix> & rhoout) const { // vectors for the helicities vector<int> ihel1(_outspin.size()+1),ihel2(_outspin.size()+1); // rhomatrix to be returned RhoDMatrix output(_inspin, false); // loop over all helicity components of the matrix element // outer loop Complex temp; unsigned int ix,iy,iz; int ixa,iya; for(ix=0;ix<_matrixelement.size();++ix) { // map the vector index to the helicities for(ixa=_outspin.size();ixa>=0;--ixa) ihel1[ixa]=(ix%_constants[ixa])/_constants[ixa+1]; // inner loop for(iy=0;iy<_matrixelement.size();++iy) { // map the vector index to the helicities for(iya=_outspin.size();iya>=0;--iya) ihel2[iya]=(iy%_constants[iya])/_constants[iya+1]; // matrix element piece temp=_matrixelement[ix]*conj(_matrixelement[iy]); // spin density matrices for the outgoing particles for(iz=0;iz<_outspin.size();++iz) temp*=rhoout[iz](ihel1[iz+1],ihel2[iz+1]); output(ihel1[0],ihel2[0])+=temp; } } // ensure unit trace for the matrix output.normalize(); // return the answer return output; } // calculate the rho matrix for a given outgoing particle RhoDMatrix DecayMatrixElement:: calculateRhoMatrix(int id,const RhoDMatrix & rhoin, const vector<RhoDMatrix> & rhoout) const { // vectors for the helicities vector<int> ihel1(_outspin.size()+1),ihel2(_outspin.size()+1); // rhomatrix to be returned RhoDMatrix output(_outspin[id], false); // loop over all helicity components of the matrix element // outer loop Complex temp; unsigned int ix,iy,iz; int ixa,iya; for(ix=0;ix<_matrixelement.size();++ix) { // map the vector index to the helicities for(ixa=_outspin.size();ixa>=0;--ixa) ihel1[ixa]=(ix%_constants[ixa])/_constants[ixa+1]; // inner loop for(iy=0;iy<_matrixelement.size();++iy) { // map the vector index to the helicities for(iya=_outspin.size();iya>=0;--iya) ihel2[iya]=(iy%_constants[iya])/_constants[iya+1]; // matrix element piece temp=_matrixelement[ix]*conj(_matrixelement[iy]); // spin denisty matrix for the incoming particle temp *= rhoin(ihel1[0],ihel2[0]); // spin density matrix for the outgoing particles for(iz=0;iz<_outspin.size()-1;++iz) { if(int(iz)<id) temp*=rhoout[iz](ihel1[iz+1],ihel2[iz+1]); else temp*=rhoout[iz](ihel1[iz+2],ihel2[iz+2]); } // add to the rho matrix output(ihel1[id+1],ihel2[id+1])+=temp; } } // return the answer output.normalize(); return output; } // contract the matrix element with the rho matrix of the incoming particle Complex DecayMatrixElement::contract(const RhoDMatrix & in) const { unsigned int ispin(abs(int(_inspin))); Complex me=0.; for(unsigned int ix=0;ix<_constants[1];++ix) { for(unsigned int inhel1=0;inhel1<ispin;++inhel1) { for(unsigned int inhel2=0;inhel2<ispin;++inhel2) { // compute the term me+=_matrixelement[inhel1*_constants[1]+ix]* conj(_matrixelement[inhel2*_constants[1]+ix])*in(inhel1,inhel2); } } } return me; } // contract the matrix element with the rho matrix of the incoming particle Complex DecayMatrixElement::contract(const DecayMatrixElement & con, const RhoDMatrix & in) { unsigned int ispin(abs(int(_inspin))); Complex me=0.; unsigned int ix,inhel1,inhel2; for(ix=0;ix<_constants[1];++ix) { for(inhel1=0;inhel1<ispin;++inhel1) { for(inhel2=0;inhel2<ispin;++inhel2) { // compute the term me+=_matrixelement[inhel1*_constants[1]+ix]* conj(con._matrixelement[inhel2*_constants[1]+ix])*in(inhel1,inhel2); } } } return me; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/��������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464203�020235� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BaryonThreeQuarkModelFormFactor.h�����������������������������0000644�0001750�0001750�00000023252�11754474773�026617� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_BaryonThreeQuarkModelFormFactor_H #define HERWIG_BaryonThreeQuarkModelFormFactor_H // // This is the declaration of the BaryonThreeQuarkModelFormFactor class. // #include "BaryonFormFactor.h" #include "ThePEG/PDT/ParticleData.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The BaryonThreeQuarkModelFormFactor class implements the * form factors for the semi-leptonic decay of baryons containing a heavy quark * from the relativistic three-quark model calculation of PRD56, 348. * * As the only formulae in the paper are for the heavy-to-heavy i.e. bottom * to charm decay this there are the only modes included, although the paper * also includes charm decays and bottom decays to light quarks. * * The form factors are calculated by numerical computing the integrals from * PRD56, 348 to obtain the coefficients for the expansion of the form factors. * * @see BaryonFormFactor */ class BaryonThreeQuarkModelFormFactor: public BaryonFormFactor { public: /** * Default constructor */ BaryonThreeQuarkModelFormFactor(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} public: /** @name Form Factors */ //@{ /** * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a * spin \f$\frac12\f$ baryon. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming baryon. * @param id1 The PDG code of the outgoing baryon. * @param m0 The mass of the incoming baryon. * @param m1 The mass of the outgoing baryon. * @param f1v The form factor \f$F^V_1\f$. * @param f2v The form factor \f$F^V_2\f$. * @param f3v The form factor \f$F^V_3\f$. * @param f1a The form factor \f$F^A_1\f$. * @param f2a The form factor \f$F^A_2\f$. * @param f3a The form factor \f$F^A_3\f$. */ virtual void SpinHalfSpinHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, Energy m0, Energy m1, Complex & f1v,Complex & f2v,Complex & f3v, Complex & f1a,Complex & f2a,Complex & f3a); /** * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a * spin \f$\frac32\f$ baryon. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming baryon. * @param id1 The PDG code of the outgoing baryon. * @param m0 The mass of the incoming baryon. * @param m1 The mass of the outgoing baryon. * @param g1v The form factor \f$G^V_1\f$. * @param g2v The form factor \f$G^V_2\f$. * @param g3v The form factor \f$G^V_3\f$. * @param g4v The form factor \f$G^V_4\f$. * @param g1a The form factor \f$G^A_1\f$. * @param g2a The form factor \f$G^A_2\f$. * @param g3a The form factor \f$G^A_3\f$. * @param g4a The form factor \f$G^A_4\f$. */ virtual void SpinHalfSpinThreeHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, Energy m0, Energy m1, Complex & g1v,Complex & g2v,Complex & g3v, Complex & g4v,Complex & g1a,Complex & g2a, Complex & g3a,Complex & g4a); //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; /** * The integrand for the coefficients of the expansion. This is a function of the * integration variable \f$x\f$ which is chosen to transform the integrand over \f$y\f$ * which is from \f$0\f$ to \f$\infty\f$ to an integral between 0 and 1. This means * that \f$y=\frac{1-x}{x}\f$. * @param x The integration variable. */ double operator ()(double x) const; /** Argument type for GaussianIntegrator */ typedef double ArgType; /** Return type for GaussianIntegrator */ typedef double ValType; /** * The integrand for the semi-analytic calculation of the semi-leptonic width. * This is included for testing purposes. * @param omega The \f$\omega\f$ parameter of the heavy quark form-factors. * @param m0 The mass of the incoming baryon. * @param m1 The mass of the outgoing baryon. * @param type The type of the decay * @param imass The baryonic mass parameter to use. * @param id0 PDG code for the decaying particle * @param id1 PDG code for the decay product */ Energy widthIntegrand(double omega,Energy m0, Energy m1, int type, int imass, int id0,int id1); protected: /** @name Function needed to calculate the form factors */ //@{ /** * Returns the function \f$\Phi_N\f$ function of PRD56, 348 as a function * of \f$\omega\f$. */ vector<double> phiFunction(double); /** * The integral of a power of the the \f$S\f$ function of PRD56, 348 with respect * to \f$\theta\f$. This is used to * calculate the coefficients of the expansion to compute the form factors. * The integral is calculated by computing a low power of the integrand and then * using recursion relations to calculate the pwoer requested. * @param y The \f$y\f$ variable of the function which is integrate over numerically. * @param N The power to which the integrand is raised. * @param SNm2 The integral with the function raised to the power \f$N/2-1\f$. * @param SN The integral with the function raised to the power \f$N\f$. */ void SN(double y,int N,double & SNm2,double & SN) const; //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe an abstract base class with persistent data. */ static ClassDescription<BaryonThreeQuarkModelFormFactor> initBaryonThreeQuarkModelFormFactor; /** * Private and non-existent assignment operator. */ BaryonThreeQuarkModelFormFactor & operator=(const BaryonThreeQuarkModelFormFactor &); private: /** @name Parameters for the form factors */ //@{ /** * Initialization of the expansion coefficients */ bool _initialize; /** * Order of the expansion for the form factors. */ unsigned int _order; /** * Mass of the light quarks used in the calculation of the form factors. */ Energy _mlight; /** * Mass of the strange quark used in the calculation of the form factors. */ Energy _mstrange; /** * The heavy quark \f$\Lambda_Q\f$ parameter for the calculation of the form factors. */ Energy _LambdaQ; /** * The \f$\Lambda_{qq}\f$ parameter for the calculation of the form factors. */ Energy _Lambdaqq; /** * The \f$\Lambda_{sq}\f$ parameter for the calculation of the form factors. */ Energy _Lambdasq; /** * The \f$\Lambda_{ss}\f$ parameter for the calculation of the form factors. */ Energy _Lambdass; /** * Coefficients for the expansion of the \f$\xi(\omega)\f$ form factor. */ vector<double> _C0; /** * Coefficients for the expansion of the \f$\xi_1(\omega)\f$ form factor. */ vector<double> _C1; /** * Coefficients for the expansion of the \f$\xi_2(\omega)\f$ form factor. */ vector<double> _C2; /** * Coefficient of the first term in the integrand for the coefficient calculation. */ double _a; /** * Coefficient of the second term in the integrand for the coefficient calculation. */ double _b; /** * The \f$\mu^2\f$ parameter for the coefficient calculation. */ double _mu2; /** * the order of the coefficient being calculated. */ int _N; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * BaryonThreeQuarkModelFormFactor. */ template <> struct BaseClassTrait<Herwig::BaryonThreeQuarkModelFormFactor,1> { /** Typedef of the base class of BaryonThreeQuarkModelFormFactor. */ typedef Herwig::BaryonFormFactor NthBase; }; /** * This template specialization informs ThePEG about the name of the * BaryonThreeQuarkModelFormFactor class. */ template <> struct ClassTraits<Herwig::BaryonThreeQuarkModelFormFactor> : public ClassTraitsBase<Herwig::BaryonThreeQuarkModelFormFactor> { /** Return the class name. */ static string className() { return "Herwig::BaryonThreeQuarkModelFormFactor"; } /** Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_BaryonThreeQuarkModelFormFactor_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BallZwickyVectorFormFactor.h����������������������������������0000644�0001750�0001750�00000021147�11754474773�025647� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // BallZwickyVectorFormFactor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_BallZwickyVectorFormFactor_H #define HERWIG_BallZwickyVectorFormFactor_H // // This is the declaration of the BallZwickyVectorFormFactor class. // #include "ScalarFormFactor.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The BallZwickyVectorFormFactor class implements the form-factors * of hep-ph/0412079 for the B meson to light vector mesons. * * This class is one of the few which includes the penguin form factors in addition * to the standard weak decay form factors. * * @see ScalarFormFactor * @see BallZwickyScalarFormFactor */ class BallZwickyVectorFormFactor: public ScalarFormFactor { public: /** * Default constructor */ BallZwickyVectorFormFactor(); /** @name Form-Factors */ //@{ /** * The form factor for the weak decay of a scalar to a vector. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param A0 The form factor \f$A_0\f$ * @param A1 The form factor \f$A_1\f$ * @param A2 The form factor \f$A_2\f$ * @param V The form factor \f$V\f$ */ void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1, Energy m0, Energy m1,Complex & A0, Complex & A1,Complex & A2, Complex & V) const; /** * The form factor for the weak penguin decay of a scalar meson to a vector meson. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param T1 The form factor \f$T_1\f$. * @param T2 The form factor \f$T_2\f$. * @param T3 The form factor \f$T_3\f$. */ void ScalarVectorSigmaFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0, Energy m1, Complex & T1, Complex & T2, Complex & T3) const; //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<BallZwickyVectorFormFactor> initBallZwickyVectorFormFactor; /** * Private and non-existent assignment operator. */ BallZwickyVectorFormFactor & operator=(const BallZwickyVectorFormFactor &); private: /** @name Coefficients for the form factors.*/ //@{ /** * The coefficient \f$r_1\f$ for the \f$V(q^2)\f$ form factor. */ vector<double> _Vr1; /** * The coefficient \f$r_2\f$ for the \f$V(q^2)\f$ form factor. */ vector<double> _Vr2; /** * The coefficient \f$r_1\f$ for the \f$A_0(q^2)\f$ form factor. */ vector<double> _A0r1; /** * The coefficient \f$r_2\f$ for the \f$A_0(q^2)\f$ form factor. */ vector<double> _A0r2; /** * The coefficient \f$r_1\f$ for the \f$A_1(q^2)\f$ form factor. */ vector<double> _A1r1; /** * The coefficient \f$r_2\f$ for the \f$A_1(q^2)\f$ form factor. */ vector<double> _A1r2; /** * The coefficient \f$r_1\f$ for the \f$A_2(q^2)\f$ form factor. */ vector<double> _A2r1; /** * The coefficient \f$r_2\f$ for the \f$A_2(q^2)\f$ form factor. */ vector<double> _A2r2; /** * The coefficient \f$r_1\f$ for the \f$T_1(q^2)\f$ form factor. */ vector<double> _T1r1; /** * The coefficient \f$r_2\f$ for the \f$T_1(q^2)\f$ form factor. */ vector<double> _T1r2; /** * The coefficient \f$r_1\f$ for the \f$T_2(q^2)\f$ form factor. */ vector<double> _T2r1; /** * The coefficient \f$r_2\f$ for the \f$T_2(q^2)\f$ form factor. */ vector<double> _T2r2; /** * The coefficient \f$r_1\f$ for the \f$\tilde{T}_3(q^2)\f$ form factor. */ vector<double> _T3r1; /** * The coefficient \f$r_2\f$ for the \f$\tilde{T}_3(q^2)\f$ form factor. */ vector<double> _T3r2; // the constants for the form-factors //@} /** @name Masses for the form factors.*/ //@{ /** * The mass \f$m_R^2\f$ for the \f$V(q^2)\f$ form factor. */ vector<Energy2> _VmR2; /** * The mass \f$m_{\rm fit}^2\f$ for the \f$V(q^2)\f$ form factor. */ vector<Energy2> _Vmfit2; /** * The mass \f$m_R^2\f$ for the \f$A_0(q^2)\f$ form factor. */ vector<Energy2> _A0mR2; /** * The mass \f$m_{\rm fit}^2\f$ for the \f$A_0(q^2)\f$ form factor. */ vector<Energy2> _A0mfit2; /** * The mass \f$m_R^2\f$ for the \f$A_1(q^2)\f$ form factor. */ vector<Energy2> _A1mR2; /** * The mass \f$m_{\rm fit}^2\f$ for the \f$A_1(q^2)\f$ form factor. */ vector<Energy2> _A1mfit2; /** * The mass \f$m_R^2\f$ for the \f$A_2(q^2)\f$ form factor. */ vector<Energy2> _A2mR2; /** * The mass \f$m_{\rm fit}^2\f$ for the \f$A_2(q^2)\f$ form factor. */ vector<Energy2> _A2mfit2; /** * The mass \f$m_R^2\f$ for the \f$T_1(q^2)\f$ form factor. */ vector<Energy2> _T1mR2; /** * The mass \f$m_{\rm fit}^2\f$ for the \f$T_1(q^2)\f$ form factor. */ vector<Energy2> _T1mfit2; /** * The mass \f$m_R^2\f$ for the \f$T_2(q^2)\f$ form factor. */ vector<Energy2> _T2mR2; /** * The mass \f$m_{\rm fit}^2\f$ for the \f$T_2(q^2)\f$ form factor. */ vector<Energy2> _T2mfit2; /** * The mass \f$m_R^2\f$ for the \f$\tilde{T}_3(q^2)\f$ form factor. */ vector<Energy2> _T3mR2; /** * The mass \f$m_{\rm fit}^2\f$ for the \f$\tilde{T}_3(q^2)\f$ form factor. */ vector<Energy2> _T3mfit2; // the masses for the form-factors //@} /** * Cut-off parameter for the switch to a small \f$q^2\f$ expansion for the \f$T_3\f$ * form factor. */ Energy2 _cutoff; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * BallZwickyVectorFormFactor. */ template <> struct BaseClassTrait<Herwig::BallZwickyVectorFormFactor,1> { /** Typedef of the base class of BallZwickyVectorFormFactor. */ typedef Herwig::ScalarFormFactor NthBase; }; /** * This template specialization informs ThePEG about the name of the * BallZwickyVectorFormFactor class. */ template <> struct ClassTraits<Herwig::BallZwickyVectorFormFactor> : public ClassTraitsBase<Herwig::BallZwickyVectorFormFactor> { /** Return the class name. */ static string className() { return "Herwig::BallZwickyVectorFormFactor"; } /** Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_BallZwickyVectorFormFactor_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/SingletonFormFactor.h�����������������������������������������0000644�0001750�0001750�00000012370�11754474773�024351� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_SingletonFormFactor_H #define HERWIG_SingletonFormFactor_H // // This is the declaration of the SingletonFormFactor class. // #include "BaryonFormFactor.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/ParticleData.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The SingletonFormFactor class implements the form-factors from * PRD43, 2939 for the decay of spin-1/2 baryons containing bottom and charm * quarks. * * @see BaryonFormFactor * */ class SingletonFormFactor: public BaryonFormFactor { public: /** * Default constructor */ SingletonFormFactor(); 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** @name Form Factors */ //@{ /** * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a * spin \f$\frac12\f$ baryon. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming baryon. * @param id1 The PDG code of the outgoing baryon. * @param m0 The mass of the incoming baryon. * @param m1 The mass of the outgoing baryon. * @param f1v The form factor \f$F^V_1\f$. * @param f2v The form factor \f$F^V_2\f$. * @param f3v The form factor \f$F^V_3\f$. * @param f1a The form factor \f$F^A_1\f$. * @param f2a The form factor \f$F^A_2\f$. * @param f3a The form factor \f$F^A_3\f$. */ virtual void SpinHalfSpinHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, Energy m0, Energy m1, Complex & f1v,Complex & f2v,Complex & f3v, Complex & f1a,Complex & f2a,Complex & f3a); //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<SingletonFormFactor> initSingletonFormFactor; /** * Private and non-existent assignment operator. */ SingletonFormFactor & operator=(const SingletonFormFactor &); private: /** * The charm quark mass. */ Energy _mcharm; /** * The strange quark mass. */ Energy _mstrange; /** * The mixing angle for the \f$\Lambda\f$. */ double _thetalambda; /** * The mixing angle for the \f$\Sigma\f$. */ double _thetasigma; /** * The mixing angle for the \f$\Xi\f$. */ double _thetaxi; /** * The mixing angle for the \f$\Xi'\f$. */ double _thetaxip; /** * The pole masses for the \f$q^2\f$ dependence of the form factors. */ vector<Energy> _polemass; /** * The \f$\xi\f$ parameter for the form factors. */ vector<double> _xi; /** * The normalisation factor, \f$N_{mM}\f$, for the form factors. */ vector<double> _nmM; /** * The mass of the quark for the form factor. */ vector<Energy> _mquark; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * BaryonThreeQuarkModelFormFactor. */ template <> struct BaseClassTrait<Herwig::SingletonFormFactor,1> { /** Typedef of the base class of BaryonThreeQuarkModelFormFactor. */ typedef Herwig::BaryonFormFactor NthBase; }; /** * This template specialization informs ThePEG about the name of the * BaryonThreeQuarkModelFormFactor class. */ template <> struct ClassTraits<Herwig::SingletonFormFactor> : public ClassTraitsBase<Herwig::SingletonFormFactor> { /** Return the class name. */ static string className() { return "Herwig::SingletonFormFactor"; } /** Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class).*/ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_SingletonFormFactor_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BtoSGammaHadronicMass.cc��������������������������������������0000644�0001750�0001750�00000004526�11754474773�024674� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // BtoSGammaHadronicMass.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the BtoSGammaHadronicMass class. // #include "BtoSGammaHadronicMass.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void BtoSGammaHadronicMass::persistentOutput(PersistentOStream & os) const { os << ounit(_minMass,GeV) << ounit(_maxMass,GeV); } void BtoSGammaHadronicMass::persistentInput(PersistentIStream & is, int) { is >> iunit(_minMass,GeV) >> iunit(_maxMass,GeV); } AbstractClassDescription<BtoSGammaHadronicMass> BtoSGammaHadronicMass::initBtoSGammaHadronicMass; // Definition of the static class description member. void BtoSGammaHadronicMass::Init() { static ClassDocumentation<BtoSGammaHadronicMass> documentation ("The BtoSGammaHadronicMass class is the base class for the implementation" " of models of the hadronic spectrum in B to s gamma decays."); static Parameter<BtoSGammaHadronicMass,Energy> interfaceMinimumMass ("MinimumMass", "The minimum value of the hadronic mass", &BtoSGammaHadronicMass::_minMass, GeV, 0.825*GeV, 0.825*GeV, 5.300*GeV, false, false, Interface::limited); static Parameter<BtoSGammaHadronicMass,Energy> interfaceMaximumMass ("MaximumMass", "The maximum value of the hadronic mass", &BtoSGammaHadronicMass::_maxMass, GeV, 5.300*GeV, 0.825*GeV, 5.300*GeV, false, false, Interface::limited); } void BtoSGammaHadronicMass::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::BtoSGammaHadronicMass " << name() << " \n"; output << "newdef " << name() << ":MinimumMass " << _minMass/GeV << " \n"; output << "newdef " << name() << ":MaximumMass " << _maxMass/GeV << " \n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/SingletonFormFactor.cc����������������������������������������0000644�0001750�0001750�00000021334�11754474773�024507� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SingletonFormFactor class. // #include "SingletonFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/EventGenerator.h" using namespace Herwig; SingletonFormFactor::SingletonFormFactor() { // the charm and strange quark masses _mcharm = 1.80*GeV; _mstrange = 0.51*GeV; // mixing angles using Constants::pi; _thetalambda = 0.25*pi; _thetasigma = 0.25*pi; _thetaxi = 0.25*pi; _thetaxip = 0.25*pi; // the particles handled and the masses for them // lambda_b addFormFactor(5122,4122,2,2,1,2,5,4);_polemass.push_back(6.0*GeV); // sigma_b addFormFactor(5112,4112,2,2,1,1,5,4);_polemass.push_back(6.0*GeV); addFormFactor(5212,4212,2,2,2,1,5,4);_polemass.push_back(6.0*GeV); addFormFactor(5222,4222,2,2,2,2,5,4);_polemass.push_back(6.0*GeV); // omega_b addFormFactor(5332,4332,2,2,3,3,5,4);_polemass.push_back(6.4*GeV); // xi_b addFormFactor(5232,4232,2,2,2,3,5,4);_polemass.push_back(6.0*GeV); addFormFactor(5132,4132,2,2,1,3,5,4);_polemass.push_back(6.0*GeV); // lambda_c addFormFactor(4122,3122,2,2,1,2,4,3);_polemass.push_back(2.5*GeV); // sigma_c addFormFactor(4112,3112,2,2,1,1,4,3);_polemass.push_back(2.8*GeV); addFormFactor(4212,3212,2,2,2,1,4,3);_polemass.push_back(2.8*GeV); addFormFactor(4222,3222,2,2,2,2,4,3);_polemass.push_back(2.8*GeV); // xi_c addFormFactor(4232,3322,2,2,2,3,4,3);_polemass.push_back(2.8*GeV); addFormFactor(4132,3312,2,2,1,3,4,3);_polemass.push_back(2.8*GeV); // set the inital number of form factors initialModes(numberOfFactors()); } void SingletonFormFactor::doinit() { BaryonFormFactor::doinit(); if(numberOfFactors()!=_polemass.size()) throw InitException() << "Inconsistent parameters in SingletonFormFactor::doinit()" << Exception::abortnow; // calculate the constants for the form-factors int id0,id1; _xi.clear(); _nmM.clear(); _mquark.clear(); for(unsigned int ix=0;ix<numberOfFactors();++ix) { // id codes for the particles particleID(ix,id0,id1); if((abs(id0)==5122&&abs(id1)==4122)||(abs(id0)==5132&&abs(id1)==4132)|| (abs(id0)==5232&&abs(id1)==4232)) { _mquark.push_back(_mcharm); _xi.push_back(1.); _nmM.push_back(1.); } else if((abs(id0)==5222&&abs(id1)==4222)||(abs(id0)==5212&&abs(id1)==4212)|| (abs(id0)==5112&&abs(id1)==4112)||(abs(id0)==5332&&abs(id1)==4332)|| (abs(id0)==5312&&abs(id1)==4312)||(abs(id0)==5322&&abs(id1)==4322)) { _mquark.push_back(_mcharm); _xi.push_back(-1./3.); _nmM.push_back(1.); } else if(abs(id0)==4122&&abs(id1)==3122) { _mquark.push_back(_mstrange); _xi.push_back(1.); _nmM.push_back(sqrt(2./3.)*sin(_thetalambda)); } else if((abs(id0)==4222&&abs(id1)==3222)||(abs(id0)==4212&&abs(id1)==3212)|| (abs(id0)==4112&&abs(id1)==3112)) { _mquark.push_back(_mstrange); _xi.push_back(-1./3.); _nmM.push_back(sqrt(2./3.)*cos(_thetasigma)); } else if((abs(id0)==4132&&abs(id1)==3312)||(abs(id0)==4232&&abs(id1)==3322)) { _mquark.push_back(_mstrange); _xi.push_back(1.); _nmM.push_back(1./sqrt(2.)*sin(_thetaxi)); } else if((abs(id0)==4312&&abs(id1)==3322)||(abs(id0)==4322&&abs(id1)==3312)) { _mquark.push_back(_mstrange); _xi.push_back(-1./3.); _nmM.push_back(1./sqrt(6.)*cos(_thetaxip)); } else throw InitException() << "Unknown mode in SingletonFormFactor::doinit()" << Exception::abortnow; } } void SingletonFormFactor::persistentOutput(PersistentOStream & os) const { os << ounit(_mcharm,GeV) << ounit(_mstrange,GeV) << _thetalambda << _thetasigma << _thetaxi << _thetaxip << ounit(_polemass,GeV) << _xi << _nmM << ounit(_mquark,GeV); } void SingletonFormFactor::persistentInput(PersistentIStream & is, int) { is >> iunit(_mcharm,GeV) >> iunit(_mstrange,GeV) >> _thetalambda >> _thetasigma >> _thetaxi >> _thetaxip >> iunit(_polemass,GeV) >> _xi >> _nmM >> iunit(_mquark,GeV); } ClassDescription<SingletonFormFactor> SingletonFormFactor::initSingletonFormFactor; // Definition of the static class description member. void SingletonFormFactor::Init() { static ClassDocumentation<SingletonFormFactor> documentation ("The SingletonFormFactor class implements the" " form-factors of PRD43, 2939 for the decay of spin-1/2 baryons" " containing one heavy quark.", "Spin-1/2 baryons with one heavy quark were decayed using " "the form factors in \\cite{Singleton:1990ye}.", "%\\cite{Singleton:1990ye}\n" "\\bibitem{Singleton:1990ye}\n" " R.~L.~Singleton,\n" " %``Semileptonic baryon decays with a heavy quark,''\n" " Phys.\\ Rev.\\ D {\\bf 43} (1991) 2939.\n" " %%CITATION = PHRVA,D43,2939;%%\n" ); static Parameter<SingletonFormFactor,Energy> interfaceCharmMass ("CharmMass", "The mass of the charm quark", &SingletonFormFactor::_mcharm, GeV, 1.8*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<SingletonFormFactor,Energy> interfaceStrangeMass ("StrangeMass", "The mass of the strange quark", &SingletonFormFactor::_mstrange, GeV, 0.51*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<SingletonFormFactor,double> interfaceThetaLambda ("ThetaLambda", "The mixing angle for the Lambda", &SingletonFormFactor::_thetalambda, 0.785398163, 0.0, 6.28318507, false, false, true); static Parameter<SingletonFormFactor,double> interfaceThetaSigma ("ThetaSigma", "The mixing angle for the Sigma", &SingletonFormFactor::_thetasigma, 0.785398163, 0.0, 6.28318507, false, false, true); static Parameter<SingletonFormFactor,double> interfaceThetaXi ("ThetaXi", "The mixing angle for the Xi", &SingletonFormFactor::_thetaxi, 0.785398163, 0.0, 6.28318507, false, false, true); static Parameter<SingletonFormFactor,double> interfaceThetaXiPrime ("ThetaXiPrime", "The mixing angle for the Xi'", &SingletonFormFactor::_thetaxip, 0.785398163, 0.0, 6.28318507, false, false, true); static ParVector<SingletonFormFactor,Energy> interfacePoleMass ("PoleMass", "The mass for the energy dependence of the form-factors.", &SingletonFormFactor::_polemass, 1.*GeV, 0, ZERO, -10.*GeV, 10.*GeV, false, false, true); } // form factor for spin-1/2 to spin-1/2 void SingletonFormFactor:: SpinHalfSpinHalfFormFactor(Energy2 q2,int iloc,int, int, Energy m0, Energy m1, Complex & f1v,Complex & f2v,Complex & f3v, Complex & f1a,Complex & f2a,Complex & f3a) { useMe(); InvEnergy ratio(0.5/m0); // all factors divided by sqrt(4.*m0*m1) normalisation double gbar(m1*_xi[iloc]*_nmM[iloc]/_mquark[iloc]); double abar(_xi[iloc]*_nmM[iloc]); InvEnergy apbar(-ratio*(m1/_mquark[iloc]-1.)*_xi[iloc]*_nmM[iloc]); InvEnergy ambar(apbar); InvEnergy gpbar(-ratio*_nmM[iloc]*((_xi[iloc]*m1/_mquark[iloc]-1.) +0.5*(m1-m0)/_mquark[iloc]*(1.-_xi[iloc]))); InvEnergy gmbar(-ratio*_nmM[iloc]*((_xi[iloc]*m1/_mquark[iloc]-1.) +0.5*(m1+m0)/_mquark[iloc]*(1.-_xi[iloc]))); // energy dependence double ymax(sqr(1.-m1/m0)); double yres(sqr(_polemass[iloc]/m0)); double y(q2/sqr(m0)),efact((ymax-yres)/(y-yres)); f1v = efact*(gbar+(m0+m1)*gpbar); f2v = efact*gpbar*(m0+m1); f3v = efact*gmbar*(m0+m1); f1a = efact*(-abar+(m0-m1)*apbar); f2a =-efact*apbar*(m0+m1); f3a =-efact*ambar*(m0+m1); } void SingletonFormFactor::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::SingletonFormFactor " << name() << " \n"; output << "newdef " << name() << ":CharmMass " << _mcharm/GeV << " \n"; output << "newdef " << name() << ":StrangeMass " << _mstrange/GeV << " \n"; output << "newdef " << name() << ":ThetaLambda " << _thetalambda << " \n"; output << "newdef " << name() << ":ThetaSigma " << _thetasigma << " \n"; output << "newdef " << name() << ":ThetaXi " << _thetaxi << " \n"; output << "newdef " << name() << ":ThetaXiPrime " << _thetaxip << " \n"; for(unsigned int ix=0;ix<_polemass.size();++ix) { if(ix<initialModes()) { output << "newdef " << name() << ":PoleMass " << ix << " " << _polemass[ix]/GeV << endl; } else { output << "insert " << name() << ":PoleMass "<< ix << " " << _polemass[ix]/GeV << endl; } } BaryonFormFactor::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/Makefile.in���������������������������������������������������0000644�0001750�0001750�00000061064�11756461675�022323� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Decay/FormFactors DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES) HwFormFactors_la_LIBADD = am_HwFormFactors_la_OBJECTS = BallZwickyScalarFormFactor.lo \ BallZwickyVectorFormFactor.lo BaryonSimpleFormFactor.lo \ BaryonThreeQuarkModelFormFactor.lo \ ChengHeavyBaryonFormFactor.lo ISGW2FormFactor.lo \ ISGWFormFactor.lo LambdabExcitedLambdacSumRuleFormFactor.lo \ LightBaryonQuarkModelFormFactor.lo SingletonFormFactor.lo \ WSBFormFactor.lo KiselevBcFormFactor.lo MelikhovFormFactor.lo \ MelikhovStechFormFactor.lo BtoSGammaFlatEnergy.lo \ BtoSGammaKagan.lo HQETFormFactor.lo HwFormFactors_la_OBJECTS = $(am_HwFormFactors_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwFormFactors_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwFormFactors_la_LDFLAGS) \ $(LDFLAGS) -o $@ libHwFormFactor_la_LIBADD = am_libHwFormFactor_la_OBJECTS = BaryonFormFactor.lo \ ScalarFormFactor.lo BtoSGammaHadronicMass.lo libHwFormFactor_la_OBJECTS = $(am_libHwFormFactor_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwFormFactors_la_SOURCES) $(libHwFormFactor_la_SOURCES) DIST_SOURCES = $(HwFormFactors_la_SOURCES) \ $(libHwFormFactor_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwFormFactor.la pkglib_LTLIBRARIES = HwFormFactors.la libHwFormFactor_la_SOURCES = \ BaryonFormFactor.cc BaryonFormFactor.fh \ BaryonFormFactor.h \ ScalarFormFactor.cc ScalarFormFactor.fh \ ScalarFormFactor.h \ BtoSGammaHadronicMass.h \ BtoSGammaHadronicMass.cc BtoSGammaHadronicMass.fh HwFormFactors_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:0:0 HwFormFactors_la_SOURCES = \ BallZwickyScalarFormFactor.cc BallZwickyScalarFormFactor.h \ BallZwickyVectorFormFactor.cc BallZwickyVectorFormFactor.h \ BaryonSimpleFormFactor.cc BaryonSimpleFormFactor.h \ BaryonThreeQuarkModelFormFactor.cc BaryonThreeQuarkModelFormFactor.h \ ChengHeavyBaryonFormFactor.cc ChengHeavyBaryonFormFactor.h \ ISGW2FormFactor.cc ISGW2FormFactor.h \ ISGWFormFactor.cc ISGWFormFactor.h \ LambdabExcitedLambdacSumRuleFormFactor.cc \ LambdabExcitedLambdacSumRuleFormFactor.h \ LightBaryonQuarkModelFormFactor.cc LightBaryonQuarkModelFormFactor.h \ SingletonFormFactor.cc SingletonFormFactor.h\ WSBFormFactor.cc WSBFormFactor.h\ KiselevBcFormFactor.cc KiselevBcFormFactor.h\ MelikhovFormFactor.cc MelikhovFormFactor.h \ MelikhovStechFormFactor.cc MelikhovStechFormFactor.h \ BtoSGammaFlatEnergy.h BtoSGammaFlatEnergy.cc \ BtoSGammaKagan.h BtoSGammaKagan.cc\ HQETFormFactor.h HQETFormFactor.cc all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Decay/FormFactors/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Decay/FormFactors/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwFormFactors.la: $(HwFormFactors_la_OBJECTS) $(HwFormFactors_la_DEPENDENCIES) $(EXTRA_HwFormFactors_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwFormFactors_la_LINK) -rpath $(pkglibdir) $(HwFormFactors_la_OBJECTS) $(HwFormFactors_la_LIBADD) $(LIBS) libHwFormFactor.la: $(libHwFormFactor_la_OBJECTS) $(libHwFormFactor_la_DEPENDENCIES) $(EXTRA_libHwFormFactor_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwFormFactor_la_OBJECTS) $(libHwFormFactor_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BallZwickyScalarFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BallZwickyVectorFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BaryonFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BaryonSimpleFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BaryonThreeQuarkModelFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BtoSGammaFlatEnergy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BtoSGammaHadronicMass.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BtoSGammaKagan.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ChengHeavyBaryonFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HQETFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ISGW2FormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ISGWFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/KiselevBcFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LambdabExcitedLambdacSumRuleFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LightBaryonQuarkModelFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MelikhovFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MelikhovStechFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ScalarFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SingletonFormFactor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/WSBFormFactor.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ clean-pkglibLTLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES \ cscopelist ctags distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BtoSGammaKagan.cc���������������������������������������������0000644�0001750�0001750�00000052042�11754474773�023336� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // BtoSGammaKagan.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the BtoSGammaKagan class. // #include "BtoSGammaKagan.h" #include "Herwig++/Utilities/Maths.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Utilities/GaussianIntegrator.h" using namespace Herwig; using Herwig::Math::Li2; BtoSGammaKagan::BtoSGammaKagan() : _initialize(false),_mt(175.*GeV),_mb(4.8*GeV), _mc(1.392*GeV),_ms(ZERO),_msovermb(1./50.),_zratio(0.), _lambda2(0.12*GeV2),_mw(80.425*GeV),_mz(91.1876*GeV), _MB(5279.4*MeV),_c20(0.),_c70(0.),_c80(0.), _beta0(23./3.),_beta1(116./3.),_alpha(1./137.036), _alphaSZ(0.118),_mub(4.8*GeV),_alphaSM(0.), _ckm(0.976),_delta(0.),_spectmax(0.00025/GeV),_maxtry(100), _fermilambda(ZERO),_fermia(0.),_ferminorm(1./GeV), _fermilambda1(-0.3*GeV2),_ycut(0.9999999999), _y(0.),_deltacut(0.9),_nsfunct(100),_nspect(100),_iopt(9999) { Energy mHin[100]={0*GeV,0.0505907*GeV,0.101181*GeV,0.151772*GeV,0.202363*GeV, 0.252953*GeV,0.303544*GeV,0.354135*GeV,0.404726*GeV,0.455316*GeV, 0.505907*GeV,0.556498*GeV,0.607088*GeV,0.657679*GeV,0.70827*GeV, 0.75886*GeV,0.809451*GeV,0.860042*GeV,0.910632*GeV,0.961223*GeV, 1.01181*GeV,1.0624*GeV,1.113*GeV,1.16359*GeV,1.21418*GeV, 1.26477*GeV,1.31536*GeV,1.36595*GeV,1.41654*GeV,1.46713*GeV, 1.51772*GeV,1.56831*GeV,1.6189*GeV,1.66949*GeV,1.72008*GeV, 1.77067*GeV,1.82126*GeV,1.87186*GeV,1.92245*GeV,1.97304*GeV, 2.02363*GeV,2.07422*GeV,2.12481*GeV,2.1754*GeV,2.22599*GeV, 2.27658*GeV,2.32717*GeV,2.37776*GeV,2.42835*GeV,2.47894*GeV, 2.52953*GeV,2.58013*GeV,2.63072*GeV,2.68131*GeV,2.7319*GeV, 2.78249*GeV,2.83308*GeV,2.88367*GeV,2.93426*GeV,2.98485*GeV, 3.03544*GeV,3.08603*GeV,3.13662*GeV,3.18721*GeV,3.2378*GeV, 3.2884*GeV,3.33899*GeV,3.38958*GeV,3.44017*GeV,3.49076*GeV, 3.54135*GeV,3.59194*GeV,3.64253*GeV,3.69312*GeV,3.74371*GeV, 3.7943*GeV,3.84489*GeV,3.89548*GeV,3.94607*GeV,3.99666*GeV, 4.04726*GeV,4.09785*GeV,4.14844*GeV,4.19903*GeV,4.24962*GeV, 4.30021*GeV,4.3508*GeV,4.40139*GeV,4.45198*GeV,4.50257*GeV, 4.55316*GeV,4.60375*GeV,4.65434*GeV,4.70493*GeV,4.75553*GeV, 4.80612*GeV,4.85671*GeV,4.9073*GeV,4.95789*GeV,5.00848*GeV}; InvEnergy spin[100]={0./GeV,3.40885e-10/GeV,1.06258e-08/GeV,7.30539e-08/GeV, 2.75462e-07/GeV,7.49796e-07/GeV,1.66662e-06/GeV,3.22116e-06/GeV, 5.62241e-06/GeV,9.06604e-06/GeV,1.37419e-05/GeV,1.98035e-05/GeV, 2.73352e-05/GeV,3.6404e-05/GeV,4.69896e-05/GeV,5.90282e-05/GeV, 7.23334e-05/GeV,8.67468e-05/GeV,0.000101999/GeV,0.000117792/GeV, 0.000133824/GeV,0.0001497/GeV,0.000165089/GeV,0.000179618/GeV, 0.000193034/GeV,0.000205017/GeV,0.000215324/GeV,0.000223761/GeV, 0.000230224/GeV,0.00023456/GeV,0.000236774/GeV,0.000236858/GeV, 0.000234965/GeV,0.000231179/GeV,0.00022566/GeV,0.000218597/GeV, 0.000210199/GeV,0.000200691/GeV,0.000190323/GeV,0.000179277/GeV, 0.000167797/GeV,0.000156088/GeV,0.000144322/GeV,0.000132705/GeV, 0.000121364/GeV,0.00011042/GeV,9.99745e-05/GeV,9.01017e-05/GeV, 8.08564e-05/GeV,7.22729e-05/GeV,6.43679e-05/GeV,5.71471e-05/GeV, 5.05892e-05/GeV,4.46771e-05/GeV,3.93802e-05/GeV,3.46595e-05/GeV, 3.04797e-05/GeV,2.67948e-05/GeV,2.3561e-05/GeV,2.07344e-05/GeV, 1.82726e-05/GeV,1.61351e-05/GeV,1.42839e-05/GeV,1.26838e-05/GeV, 1.13031e-05/GeV,1.01119e-05/GeV,9.08476e-06/GeV,8.19854e-06/GeV, 7.43307e-06/GeV,6.77062e-06/GeV,6.19614e-06/GeV,5.69634e-06/GeV, 5.26005e-06/GeV,4.87775e-06/GeV,4.54138e-06/GeV,4.24416e-06/GeV, 3.9805e-06/GeV,3.74572e-06/GeV,3.53602e-06/GeV,3.34835e-06/GeV, 3.18023e-06/GeV,3.02972e-06/GeV,2.89566e-06/GeV,2.77756e-06/GeV, 2.67492e-06/GeV,2.58796e-06/GeV,2.52423e-06/GeV,2.51738e-06/GeV, 2.58615e-06/GeV,2.72927e-06/GeV,2.94112e-06/GeV,3.22002e-06/GeV, 3.57015e-06/GeV,4.00189e-06/GeV,4.53288e-06/GeV,5.19051e-06/GeV, 6.0167e-06/GeV,7.0773e-06/GeV,8.4804e-06/GeV,1.04156e-05/GeV}; _mHinter=vector<Energy>(mHin,mHin+100); _spectrum=vector<InvEnergy>(spin,spin+100); } void BtoSGammaKagan::doinitrun() { BtoSGammaHadronicMass::doinitrun(); _pmHinter = new_ptr(Interpolator<InvEnergy,Energy>(_spectrum,_mHinter,3)); } void BtoSGammaKagan::persistentOutput(PersistentOStream & os) const { os << ounit(_mt,GeV) << ounit(_mb,GeV) << ounit(_mc,GeV) << ounit(_ms,GeV) << _msovermb << _zratio << ounit(_lambda2,GeV2) << ounit(_mw,GeV) << ounit(_mz,GeV) << ounit(_MB,GeV) << _c20 << _c70 << _c80 << _beta0 << _beta1 << _alpha << _alphaSZ << ounit(_mub,GeV) << _alphaSM << _ckm << _delta << ounit(_mHinter,GeV) << ounit(_spectrum,1./GeV) << ounit(_spectmax,1./GeV) << ounit(_fermilambda,GeV) << _fermia << ounit(_ferminorm,1./GeV) << ounit(_fermilambda1,GeV2) <<_ycut << _deltacut << _nsfunct << _nspect << _maxtry << _initialize; } void BtoSGammaKagan::persistentInput(PersistentIStream & is, int) { is >> iunit(_mt,GeV) >> iunit(_mb,GeV) >> iunit(_mc,GeV) >> iunit(_ms,GeV) >> _msovermb >> _zratio >> iunit(_lambda2,GeV2) >> iunit(_mw,GeV) >> iunit(_mz,GeV) >> iunit(_MB,GeV) >> _c20 >> _c70 >> _c80 >> _beta0 >> _beta1 >> _alpha >> _alphaSZ >> iunit(_mub,GeV) >> _alphaSM >> _ckm >> _delta >> iunit(_mHinter,GeV) >> iunit(_spectrum,1./GeV) >> iunit(_spectmax,1./GeV) >> iunit(_fermilambda,GeV) >> _fermia >> iunit(_ferminorm,1./GeV) >> iunit(_fermilambda1,GeV2) >>_ycut >> _deltacut >> _nsfunct >> _nspect >> _maxtry >> _initialize; } ClassDescription<BtoSGammaKagan> BtoSGammaKagan::initBtoSGammaKagan; // Definition of the static class description member. void BtoSGammaKagan::Init() { static ClassDocumentation<BtoSGammaKagan> documentation ("The BtoSGammaKagan class implements the calculation of hep-ph/9805303 for the" " hadronic mass spectrum in b to s gamma decays.", "The decay $b\\to s\\gamma$ was simulated using the hadronic mass spectrum from" "\\cite{Kagan:1998ym}.\n", "\\bibitem{Kagan:1998ym} A.~L.~Kagan and M.~Neubert,\n" "Eur.\\ Phys.\\ J.\\ C {\\bf 7} (1999) 5 [arXiv:hep-ph/9805303].\n" "%%CITATION = EPHJA,C7,5;%%\n"); static Switch<BtoSGammaKagan,bool> interfaceInitialize ("Initialize", "Initialize the interpolation tables for the hadronic mass", &BtoSGammaKagan::_initialize, false, false, false); static SwitchOption interfaceInitializeInitialize (interfaceInitialize, "Yes", "Perform initialization", true); static SwitchOption interfaceInitializeNoInitialization (interfaceInitialize, "No", "No initialization is performed", false); static Parameter<BtoSGammaKagan,Energy> interfaceTopMass ("TopMass", "The mass of the top quark", &BtoSGammaKagan::_mt, GeV, 175.*GeV, 100.0*GeV, 200.0*GeV, false, false, Interface::limited); static Parameter<BtoSGammaKagan,Energy> interfaceBottomMass ("BottomMass", "The mass of the bottom quark", &BtoSGammaKagan::_mb, GeV, 4.8*GeV, 1.0*GeV, 10.0*GeV, false, false, Interface::limited); static Parameter<BtoSGammaKagan,Energy> interfaceCharmMass ("CharmMass", "The mass of the charm quark", &BtoSGammaKagan::_mc, GeV, 1.392*GeV, 1.0*GeV, 2.0*GeV, false, false, Interface::limited); static Parameter<BtoSGammaKagan,double> interfaceStrangeMassRatio ("StrangeMassRatio", "The ratio of the strange quark mass to that of the bottom", &BtoSGammaKagan::_msovermb, 1./50., 0.001, 0.1, false, false, Interface::limited); static Parameter<BtoSGammaKagan,Energy> interfaceWMass ("WMass", "The mass of the W boson", &BtoSGammaKagan::_mw, GeV, 80.425*GeV, 75.*GeV, 85.*GeV, false, false, Interface::limited); static Parameter<BtoSGammaKagan,Energy> interfaceZMass ("ZMass", "The mass of the Z boson", &BtoSGammaKagan::_mz, GeV, 91.1876*GeV, 85.*GeV, 95.*GeV, false, false, Interface::limited); static Parameter<BtoSGammaKagan,Energy2> interfaceLambda2 ("Lambda2", "Hadronic parameter from hep-ph/9805303", &BtoSGammaKagan::_lambda2, GeV2, 0.12*GeV2, ZERO, 10.0*GeV2, false, false, Interface::limited); static Parameter<BtoSGammaKagan,Energy> interfaceBMesonMass ("BMesonMass", "The mass of the decaying B meson", &BtoSGammaKagan::_MB, GeV, 5.2794*GeV, 5.0*GeV, 10.0*GeV, false, false, Interface::limited); static Parameter<BtoSGammaKagan,Energy> interfaceMu ("Mu", "The renormalisation scale", &BtoSGammaKagan::_mub, GeV, 4.8*GeV, 3.0*GeV, 10.0*GeV, false, false, Interface::limited); static Parameter<BtoSGammaKagan,double> interfaceDelta ("Delta", "The cut off on the photon energy", &BtoSGammaKagan::_deltacut, 0.9, 0.0, 1.0, false, false, Interface::limited); static Parameter<BtoSGammaKagan,Energy2> interfaceLambda1 ("Lambda1", "Hadronic scale for the fermi motion function", &BtoSGammaKagan::_fermilambda1, GeV2, -0.3*GeV2, -10.0*GeV2, 10.0*GeV2, false, false, Interface::limited); static Parameter<BtoSGammaKagan,double> interfacealpha ("alpha", "The fine structure constant", &BtoSGammaKagan::_alpha, 1./137.036, 0.005, 0.01, false, false, Interface::limited); static Parameter<BtoSGammaKagan,double> interfacealphaSZ ("alphaSZ", "The strong coupling at the Z mass", &BtoSGammaKagan::_alphaSZ, 0.118, 0.1, 0.3, false, false, Interface::limited); static Parameter<BtoSGammaKagan,double> interfaceCKM ("CKM", "The CKM prefactor for the decay", &BtoSGammaKagan::_ckm, 0.976, 0, 0, false, false, Interface::nolimits); static ParVector<BtoSGammaKagan,Energy> interfacemHValues ("mHValues", "The mH values for the interpolation of the spectrum", &BtoSGammaKagan::_mHinter, GeV, -1, 1.*GeV, ZERO, 10.*GeV, false, false, Interface::limited); static ParVector<BtoSGammaKagan,InvEnergy> interfaceSpectrum ("Spectrum", "Values of the spectrum for interpolation", &BtoSGammaKagan::_spectrum, 1./GeV, -1, ZERO, ZERO, 1./GeV, false, false, Interface::limited); static Parameter<BtoSGammaKagan,InvEnergy> interfaceFermiNormalisation ("FermiNormalisation", "The normalisation for the fermi motion function", &BtoSGammaKagan::_ferminorm, 1./GeV, 1./GeV, 0*1./GeV, 0*1./GeV, false, false, Interface::nolimits); static Parameter<BtoSGammaKagan,unsigned int> interfaceMaximumTries ("MaximumTries", "Maximum number of attempts to unweight the spectrum", &BtoSGammaKagan::_maxtry, 100, 10, 10000, false, false, Interface::limited); static Parameter<BtoSGammaKagan,InvEnergy> interfaceSpectrumMaximum ("SpectrumMaximum", "The maximum value of the spectrum for unweighting", &BtoSGammaKagan::_spectmax, 1./GeV, 1./GeV, ZERO, 10000.0/GeV, false, false, Interface::limited); static Parameter<BtoSGammaKagan,double> interfaceycut ("ycut", "Limit of the value of y to avoid singualarities in integrals", &BtoSGammaKagan::_ycut, 0.9999999999, 0.999, 1., false, false, Interface::limited); static Parameter<BtoSGammaKagan,unsigned int> interfaceNSpectrum ("NSpectrum", "Number of spectrum points to calculate for interpolation", &BtoSGammaKagan::_nspect, 100, 10, 1000, false, false, Interface::limited); } void BtoSGammaKagan::calculateWilsonCoefficients() { // strong coupling at various scales double alphaSMW(alphaS(_mw)),alphaSMT(alphaS(_mt)); _alphaSM=alphaS(_mub); // coupling running top mass and ratio to W mass Energy mtbar=_mt*pow(alphaSMW/alphaSMT,12./23.)* (1.+12./23.*(253./72.-58./56.)/pi*(alphaSMW-alphaSMT)-4./3.*alphaSMT/pi); double xt(mtbar/_mw);xt*=xt; // leading order coefficients double eta(alphaSMW/_alphaSM); _c20=0.5*(pow(eta,-12./23.)+pow(eta,6./23.)); double c7w=1./pow(xt-1.,3)*(0.25*xt*xt*(3.*xt-2.)/(xt-1)*log(xt) +xt/24.*(7.-5.*xt-8.*xt*xt)); double c8w=0.25*xt/pow(xt-1.,3)*(-3.*xt/(xt-1.)*log(xt)+0.5*(2.+5.*xt-xt*xt)); // corrections double c7c=626126./272277.*pow(eta,14./23.)-56281./51730.*pow(eta,16./23.) -3./7.*pow(eta,6./23.)-1./14.*pow(eta,-12./23.)-0.6494*pow(eta,0.4086) -0.0380*pow(eta,-.4230)-0.0186*pow(eta,-0.8994)-0.0057*pow(eta,0.1456); double c8c=313063./363036.*pow(eta,14./23.)-0.9135*pow(eta,0.4086) +0.0873*pow(eta,-0.4230)-0.0571*pow(eta,-0.8994)+0.0209*pow(eta,0.1456); // total _c70=pow(eta,16./23.)*c7w+8./3.*(pow(eta,14./23.)-pow(eta,16./23.))*c8w+c7c; _c80=pow(eta,14./23.)*c8w+c8c; // corrections double sp(real(Li2(Complex(1.-1./xt)))); double xt2(xt*xt),xt3(xt2*xt),xt4(xt3*xt),xt5(xt4*xt); double c71w=1./pow(xt-1.,4)*( sp/9.*xt*(-8.+80.*xt-122.*xt2-16.*xt3) +pow(log(xt),2)/3./(xt-1.)*xt2*(-28.+46.*xt+6.*xt2) +log(xt)/81./(xt-1.)*(208.-1364.*xt+3244.*xt2 -2262.*xt3-588.*xt4-102.*xt5) +1./486.*(-436.+2509.*xt-10740.*xt2+12205.*xt3+1646.*xt4) ); double c81w=1./pow(xt-1.,4)*(sp/6.*(xt+41.*xt2+40.*xt3-4.*xt4) +0.5*pow(log(xt),2)/(xt-1.)*(-17.*xt3-31.*xt2) +log(xt)/216./(xt-1.)*(280.-1994.*xt+2857.*xt2 +4893.*xt3+1086.*xt4-210.*xt5) +1./1296.*(-508.+610.*xt-28209.*xt2-14102.*xt3+737.*xt4)); // coefficients for the series in eta double ai[8]={14./23.,16./23.,6./23.,-12./23.,0.4086,-0.4230,-0.8994,0.1456}; double ei[8]={4661194./816831.,-8516./2217.,0.,0.,-1.9043,-0.1008,0.1216,0.0183}; double fi[8]={-17.3023,8.5027,4.5508,0.7519,2.0040,0.7476,-0.5385,0.0914}; double gi[8]={14.8088,-10.8090,-0.8740,0.4218,-2.9347,0.3971,0.1600,0.0225}; double Ex=-2./3.*log(xt)+log(xt)/6./pow(1.-xt,4)*xt2*(15.-16.*xt+4.*xt2) +xt/12./pow(1.-xt,3)*(18.-11.*xt-xt2); double c71c=(297664./14283.*pow(eta,16./23.)-7164416./357075.*pow(eta,14./23.) +256868./14283.*pow(eta,37./23.)-6698884./357075.*pow(eta,39./23.))*c8w +37208./4761.*(pow(eta,39./23.)-pow(eta,16./23.))*c7w; for(unsigned int ix=0;ix<8;++ix) { c71c+=(ei[ix]*eta*Ex+fi[ix]+gi[ix]*eta)*pow(eta,ai[ix]); } // total correction double c71(pow(eta,39./23.)*c71w+8./3.*(pow(eta,37./23.)-pow(eta,39./23.))*c81w+c71c); // electromagnetic corrections double c7em= (32./75.*pow(eta,-9./23.)-40./69.*pow(eta,-7./23.)+88./575.*pow(eta,16./23.))*c7w +(-32./575.*pow(eta,-9./23.)+32./1449.*pow(eta,-7./23.)+640./1449.*pow(eta,14./23.) -704./1725.*pow(eta,16./23.))*c8w -190./8073.*pow(eta,-35./23.)-359./3105.*pow(eta,-17./23.) +4276./121095.*pow(eta,-12./23.)+350531./1009125.*pow(eta,-9./23.) +2./4347.*pow(eta,-7./23.)-5956./15525.*pow(eta,6./23.) +38380./169533.*pow(eta,14./23.)-748./8625.*pow(eta,16./23.); // nlo correction to semi-leptonic decay double kSL(12./23.*(1./eta -1.)); // corrections double r7(-10./3.-8.*pi*pi/9.),gam27(416./81.),gam77(32./3.),gam87(-32./9.); double fz(semiLeptonicf()); double kappa(3.382-4.14*(sqrt(_zratio)-0.29)); double realr2(-4.092+12.78*(sqrt(_zratio)-0.29)); double realr8(44./9.-8.*pi*pi/27.); // correction to the various terms (get multiplied by Delta(y)) double delta77=1.+0.5*_alphaSM/pi*(r7+gam77*log(_mb/_mub)-16./3.) +(pow(1.-_zratio,4)/fz-1.)*6.*_lambda2/_mb/_mb +0.5*_alphaSM/pi*kappa; double delta27=0.5*_alphaSM/pi*(realr2+gam27*log(_mb/_mub))-_lambda2/9./_mc/_mc; double delta78=0.5*_alphaSM/pi*(realr8+gam87*log(_mb/_mub)); // combination for the genuine NLO terms _delta = delta77*_c70*_c70+delta27*_c20*_c70+delta78*_c70*_c80 +0.5*_alphaSM/pi*c71*_c70 +_alpha/_alphaSM*(2.*c7em*_c70-kSL*_c70*_c70); } void BtoSGammaKagan::doinit() { BtoSGammaHadronicMass::doinit(); // quark masses _ms=_msovermb*_mb; _zratio=sqr(_mc/_mb); // parameters for the fermi motion function _fermilambda=_MB-_mb; _fermia=-3.*sqr(_fermilambda)/_fermilambda1-1.; if(_initialize) { // calculate the wilson coefficients etc. calculateWilsonCoefficients(); // calculate the interpolation tables for the s functions vector<double> sfunct,yvalues; // s_22 function sfunct.push_back(0.),yvalues.push_back(0.); double step(1./_nsfunct); _y=-0.5*step; // perform the integrals GaussianIntegrator integrator; _iopt=0; for(unsigned int ix=0;ix<_nsfunct;++ix) { _y+=step; yvalues.push_back(_y); sfunct.push_back(integrator.value(*this,0.,_y)); } _s22inter = new_ptr(Interpolator<double,double>(sfunct,yvalues,3)); // s_27 function; _iopt=1; sfunct.clear();yvalues.clear(); sfunct.push_back(0.),yvalues.push_back(0.); _y=-0.5*step; // perform integrals for(unsigned int ix=0;ix<_nsfunct;++ix) { _y+=step; yvalues.push_back(_y); sfunct.push_back(integrator.value(*this,0.,_y)); } _s27inter = new_ptr(Interpolator<double,double>(sfunct,yvalues,3)); // compute the normalisation constant KaganIntegrand integrand(this); _iopt=0; _ferminorm*=1./integrator.value(integrand,_MB*(1.-_deltacut)-_mb,_MB-_mb); // now for the spectrum _mHinter.clear(); _spectrum.clear(); _spectmax=ZERO; // limits on the mass Energy minegamma(0.5*_MB*(1. - _deltacut)),maxegamma(0.5*_MB); Energy minhadronmass(max(minMass(),sqrt(_MB*_MB-2.*_MB*maxegamma))); Energy maxhadronmass(min(maxMass(),sqrt(_MB*_MB-2.*_MB*minegamma))); Energy hstep=(maxhadronmass-minhadronmass)/(_nspect-1); Energy mhadron(minhadronmass); // function to be integrated _iopt=1; // prefactor InvEnergy2 pre(6.*0.105*2./_MB/_MB*_alpha/pi/semiLeptonicf()*_ckm*_ckm); // compute the table for(unsigned int ix=0;ix<_nspect;++ix) { // calculate y _y=1.-mhadron*mhadron/_MB/_MB; // perform the integral _spectrum.push_back(pre*mhadron*integrator.value(integrand,_MB*_y-_mb,_MB-_mb)); _spectmax=max(_spectmax,_spectrum.back()); _mHinter.push_back(mhadron); // increment the loop mhadron+=hstep; } } } Energy BtoSGammaKagan::hadronicMass(Energy mb,Energy mquark) { useMe(); Energy minmass(max(minMass(),mquark)),maxmass(min(maxMass(),mb)),mass; Energy minegamma(0.5*_MB*(1. - _deltacut)),maxegamma(0.5*_MB); minmass=max(minmass,sqrt(_MB*_MB-2.*_MB*maxegamma)); maxmass=min(maxmass,sqrt(_MB*_MB-2.*_MB*minegamma)); unsigned int ntry(0); double rand; do { rand=UseRandom::rnd(); mass = minmass*(1.-rand)+rand*maxmass; ++ntry; } while(ntry<_maxtry&&(*_pmHinter)(mass)<UseRandom::rnd()*_spectmax); if(ntry>=_maxtry) throw Exception() << "Unweighting failed in BtoSGammaKagan::hadronicMass()" << Exception::eventerror; return mass; } void BtoSGammaKagan::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::BtoSGammaKagan " << name() << " \n"; output << "newdef " << name() << ":TopMass " << _mt/GeV << " \n"; output << "newdef " << name() << ":BottomMass " << _mb/GeV << " \n"; output << "newdef " << name() << ":CharmMass " << _mc/GeV << " \n"; output << "newdef " << name() << ":StrangeMassRatio " << _msovermb << " \n"; output << "newdef " << name() << ":WMass " << _mw/GeV << " \n"; output << "newdef " << name() << ":ZMass " << _mz/GeV << " \n"; output << "newdef " << name() << ":Lambda2 " << _lambda2/GeV2 << " \n"; output << "newdef " << name() << ":BMesonMass " << _MB/GeV << " \n"; output << "newdef " << name() << ":Mu " << _mub/GeV << " \n"; output << "newdef " << name() << ":Delta " << _deltacut << " \n"; output << "newdef " << name() << ":Lambda1 " << _fermilambda1/GeV2 << " \n"; output << "newdef " << name() << ":alpha " << _alpha << " \n"; output << "newdef " << name() << ":CKM " << _ckm << " \n"; output << "newdef " << name() << ":FermiNormalisation " << _ferminorm*GeV << " \n"; output << "newdef " << name() << ":MaximumTries " << _maxtry << " \n"; output << "newdef " << name() << ":ycut " << _ycut << " \n"; output << "newdef " << name() << ":NSpectrum " << _nspect << " \n"; for(unsigned int ix=0;ix<_mHinter.size();++ix) { if(ix<100) output << "newdef " << name() << ":mHValues " << ix << " " << _mHinter[ix]/GeV << " \n"; else output << "insert " << name() << ":mHValues " << ix << " " << _mHinter[ix]/GeV << " \n"; } for(unsigned int ix=0;ix<_spectrum.size();++ix) { if(ix<100) output << "newdef " << name() << ":Spectrum " << ix << " " << _spectrum[ix]*GeV << " \n"; else output << "insert " << name() << ":Spectrum " << ix << " " << _spectrum[ix]*GeV << " \n"; } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BtoSGammaFlatEnergy.cc����������������������������������������0000644�0001750�0001750�00000003360�11754474773�024354� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // BtoSGammaFlatEnergy.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the BtoSGammaFlatEnergy class. // #include "BtoSGammaFlatEnergy.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; NoPIOClassDescription<BtoSGammaFlatEnergy> BtoSGammaFlatEnergy::initBtoSGammaFlatEnergy; // Definition of the static class description member. void BtoSGammaFlatEnergy::Init() { static ClassDocumentation<BtoSGammaFlatEnergy> documentation ("The BtoSGammaFlatEnergy class implements a model of the hadronic mass" " in B to s gamma decays designed to give a flat energy spectrum for" " testing purposes."); } Energy BtoSGammaFlatEnergy::hadronicMass(Energy mb,Energy mquark) { Energy upper(min(mb,maxMass())),lower(max(minMass(),mquark)); double rand(UseRandom::rnd()); return sqrt(upper*upper*rand+(1.-rand)*lower*lower); } void BtoSGammaFlatEnergy::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::BtoSGammaFlatEnergy " << name() << " \n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BtoSGammaKagan.h����������������������������������������������0000644�0001750�0001750�00000031467�11754474773�023210� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // BtoSGammaKagan.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_BtoSGammaKagan_H #define HERWIG_BtoSGammaKagan_H // // This is the declaration of the BtoSGammaKagan class. // #include "Herwig++/Utilities/Interpolator.h" #include "BtoSGammaHadronicMass.h" #include "ThePEG/Config/Complex.h" #include "ThePEG/Config/Constants.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Constants; /** \ingroup Decay * * The BtoSGammaKagan class implements the model of hep-ph/9805303 for the * hadronic mass spectrum in \f$b\to s \gamma\f$ decays. */ class BtoSGammaKagan: public BtoSGammaHadronicMass { /** * Class for the integration is a friend to access private members */ friend struct KaganIntegrand; public: /** * The default constructor. */ BtoSGammaKagan(); /** * Returns the hadronic mass. * @param mb The mass of the decaying B meson * @param mquark The minimum mass of the hadronic system based on the consistuent quark * masses. * @return The hadronic mass */ virtual Energy hadronicMass(Energy mb,Energy mquark); /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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(); public: /** * Members which return integrands */ //@{ /** * Operator to return the integrand for the \f$s_{22}(y)\f$ function * or \f$s_{27}(y)\f$ functions of hep-ph/9805303 * depending on the value of _iopt to be integrated */ double operator ()(double x) const { if(_iopt==0) { double reg(realG(x/_zratio)),img(imagG(x/_zratio)); return 16./27.*(1.-x)*(_zratio*_zratio/x/x*(sqr(reg)+sqr(img))+_zratio/x*reg+0.25); } else { return -8./9.*_zratio*(realG(x/_zratio)+0.5*x/_zratio); } } typedef double ValType; typedef double ArgType; /** * Operator to return the integrand of the smeared function or * Fermi function depending on the value of _iopt to be integrated */ InvEnergy smeared(Energy kp) const { InvEnergy fermi = exponentialFermiFunction(kp,_fermilambda,_fermia, _ferminorm,_fermilambda1); if(_iopt==1) fermi *=KNLO(_MB*_y/(_mb+kp))*_MB/(_mb+kp); return fermi; } //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<BtoSGammaKagan> initBtoSGammaKagan; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BtoSGammaKagan & operator=(const BtoSGammaKagan &); private: /** @name Functions to calculate the mass spectrum */ //@{ /** * The derivative of the Sudakov form-factor from hep-ph/9805303 * @param y Ratio \f$E_\gamma/E^{\rm max}_\gamma\f$. * @param alphaS The strong coupling, \f$\alpha_S\f$. */ double Delta(double y, double alphaS) const { if(y>_ycut) return 0.; double ln(log(1.-y)); return -4./3./pi/(1.-y)*alphaS*(ln+1.75)*exp(-2.*alphaS/3./pi*ln*(ln+3.5)); } /** * Kinematic function from semi-leptonic decay for normaalisation */ double semiLeptonicf() const { double z2=sqr(_zratio); return 1.-8.*_zratio*(1.-z2)-sqr(z2)-12.*z2*log(_zratio); } /** * \f$s_{22}(y)\f$ function from hep-ph/9805303. Due to the integration * required this function is computed by interpolation. * @param y Ratio \f$E_\gamma/E^{\rm max}_\gamma\f$. */ double s22(double y) const {return (*_s22inter)(y);} /** * \f$s_{27}(y)\f$ function from hep-ph/9805303. Due to the integration * required this function is computed by interpolation. * @param y Ratio \f$E_\gamma/E^{\rm max}_\gamma\f$. */ double s27(double y) const {return (*_s27inter)(y);} /** * \f$s_{77}(y)\f$ function from hep-ph/9805303 * @param y Ratio \f$E_\gamma/E^{\rm max}_\gamma\f$. */ double s77(double y) const { if(y>_ycut) y=_ycut; return 1./3.*(7.+y*(1.-2.*y)-2.*(1.+y)*log(1.-y)); } /** * \f$s_{78}(y)\f$ function from hep-ph/9805303 * @param y Ratio \f$E_\gamma/E^{\rm max}_\gamma\f$. */ double s78(double y) const { if(y>_ycut) y=_ycut; return 8./9.*((1.-y)/y*log(1.-y)+1.+0.25*y*y); } /** * \f$s_{88}(y)\f$ function from hep-ph/9805303 * @param y Ratio \f$E_\gamma/E^{\rm max}_\gamma\f$. */ double s88(double y) const { double ratio(_mb/_ms),y2(sqr(y)); if(y>_ycut) y=_ycut; return 1./27.*(2.*(2.-2.*y+y2)/y*(log(1.-y)+2.*log(ratio))-2.*y2-y-8.*(1.-y)/y); } /** * The real part of the \f$G(t)\f$ function from hep-ph/9805303 */ double realG(double t) const { if(t<4.) { double at(atan(sqrt(t/(4.-t)))); return -2.*sqr(at); } else { double ln(log(0.5*(sqrt(t)+sqrt(t-4.)))); return 2.*(sqr(ln)-0.25*sqr(pi)); } } /** * The imaginary part of the \f$G(t)\f$ function from hep-ph/9805303 */ double imagG(double t) const { if(t<4.) return 0.; else return -2.*pi*log(0.5*(sqrt(t)+sqrt(t-4.))); } /** * Strong coupling \f$\alpha_S\f$ at the scale \f$Q\f$ * @param Q The scale. */ double alphaS(Energy Q) { double lo(1.-0.5*_beta0*_alphaSZ/pi*log(_mz/Q)); return _alphaSZ/lo*(1.-0.25*_beta1/_beta0*_alphaSZ/pi*log(lo)/lo); } /** * Calculate the wilson coefficients we need */ void calculateWilsonCoefficients(); /** * The \f$K'_{NLO}(1-y)\f$ function at parton level from hep-ph/9805303 */ double KNLO(double y) const { return _delta*Delta(y,_alphaSM) +_alphaSM/pi*(s22(y)*sqr(_c20)+s77(y)*sqr(_c70) +s88(y)*sqr(_c80)+s78(y)*_c70*_c80 +s27(y)*_c20*(_c70-_c80/3.)); } //@} private: /** * Initialisation of mass spectrum */ bool _initialize; /** * Quark masses and related parameters */ //@{ /** * The top quark mass */ Energy _mt; /** * bottom quark mass */ Energy _mb; /** * charm quark mass */ Energy _mc; /** * strange quark mass */ Energy _ms; /** * Ratio of the strange quark mass to the bottom quark mass */ double _msovermb; /** * The ratio of the charm to bottom quark masses squared, \f$(m_c/m_b)^2\f$ */ double _zratio; //@} /** * The hadronic \f$\lambda_2\f$ parameter from hep-ph/9805303. */ Energy2 _lambda2; /** * Masses of other particles */ //@{ /** * The W mass */ Energy _mw; /** * the Z mass */ Energy _mz; /** * Mass of the decaying B meson. */ Energy _MB; //@} /** @name Wilson coefficients, couplings and \f$\beta\f$-function coefficients*/ //@{ /** * The leading order \f$c_2\f$ coefficient. */ double _c20; /** * The leading order \f$c_7\f$ coefficient. */ double _c70; /** * The leading order \f$c_8\f$ coefficient. */ double _c80; /** * First \f$\beta\f$-function coefficient */ double _beta0; /** * Second \f$\beta\f$-function coefficient */ double _beta1; /** * The electromagentic coupling */ double _alpha; /** * The strong coupling at the Z mass */ double _alphaSZ; /** * The renormalisation scale */ Energy _mub; /** * the strong coupling at the renormalisation scale \f$\mu_b\f$. */ double _alphaSM; /** * The CKM perfactor for the decay */ double _ckm; /** * Pre-factor for the correction term involving \f$\Delta(y)\f$. */ double _delta; //@} /** * Interpolators for the integrate functions and related parameters */ //@{ /** * Interpolator for the \f$s_{22}\f$ function */ Interpolator<double,double>::Ptr _s22inter; /** * Interpolator for the \f$s_{27}\f$ function */ Interpolator<double,double>::Ptr _s27inter; /** * Interpolator for the spectrum */ Interpolator<InvEnergy,Energy>::Ptr _pmHinter; /** * Values of \f$m_H\f$ for the interpolation of the spectrum */ vector<Energy> _mHinter; /** * Values of the differential rate for the interpolation of the spectrum */ vector<InvEnergy> _spectrum; /** * Maximum value of the spectrum for unweighting */ InvEnergy _spectmax; /** * Maximum number of tries for unweighting */ unsigned int _maxtry; //@} /** * Parameters for the Fermi function */ //@{ /** * The \f$\bar{\Lambda}\f$ parameter from hep-ph/9805303. */ Energy _fermilambda; /** * The power from from hep-ph/9805303. */ double _fermia; /** * The normalisation from hep-ph/9805303. */ InvEnergy _ferminorm; /** * \f$\lambda_1\f$ scale related to the kinetic energy of the b quark. */ Energy2 _fermilambda1; //@} /** * Techincal parameters for the integration of the spectrum */ //@{ /** * Cut-off parameter to avoid the singularity at y=1 */ double _ycut; /** * Value of the energy fraction for which the integral is being performed */ double _y; /** * Cut-off on the photon energies */ double _deltacut; /** * Number of points for the interpolation of the s functions */ unsigned int _nsfunct; /** * Number of points for the interpolation of the spectrum */ unsigned int _nspect; /** * The function currently being integrated */ unsigned int _iopt; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of BtoSGammaKagan. */ template <> struct BaseClassTrait<Herwig::BtoSGammaKagan,1> { /** Typedef of the first base class of BtoSGammaKagan. */ typedef Herwig::BtoSGammaHadronicMass NthBase; }; /** This template specialization informs ThePEG about the name of * the BtoSGammaKagan class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::BtoSGammaKagan> : public ClassTraitsBase<Herwig::BtoSGammaKagan> { /** Return a platform-independent class name */ static string className() { return "Herwig::BtoSGammaKagan"; } /** Return the name of the shared library be loaded to get * access to the BtoSGammaKagan class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } namespace Herwig { /** * A struct for the integrand which can access the dimensional value * member of the BtoSGammaKagan class */ struct KaganIntegrand { /** * The constructor */ KaganIntegrand(Ptr<BtoSGammaKagan>::pointer in) : _kagan(in) {}; /** * Get the function value */ InvEnergy operator ()(Energy arg) const {return _kagan->smeared(arg);} /** Return type for GaussianIntegrator */ typedef InvEnergy ValType; /** Argument type for GaussianIntegrator */ typedef Energy ArgType; /** * A pointer to the form factor to supply the integrand. */ Ptr<BtoSGammaKagan>::pointer _kagan; }; } #endif /* HERWIG_BtoSGammaKagan_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/KiselevBcFormFactor.cc����������������������������������������0000644�0001750�0001750�00000027274�11754474773�024425� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // KiselevBcFormFactor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the KiselevBcFormFactor class. // #include "KiselevBcFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; KiselevBcFormFactor::KiselevBcFormFactor() : _fp (16,0. ), _fm (16,0. ), _FV( 16,ZERO), _F0A (16,ZERO), _FpA (16,ZERO), _FmA (16,ZERO), _Mfp (16,ZERO), _Mfm (16,ZERO), _MFV (16,ZERO), _MF0A(16,ZERO), _MFpA(16,ZERO), _MFmA(16,ZERO) { // B_c to B_s addFormFactor(541,531,0,-5,4,3); _fp[0] = 1.30 ;_Mfp[0] = 1.8*GeV; _fm[0] = -5.80 ;_Mfm[0] = 1.8*GeV; // B_c to B_s* addFormFactor(541,533,1,-5,4,3); _FV[1] = 1.10/GeV;_MFV[1] = 1.8*GeV; _F0A[1] = 8.10*GeV;_MF0A[1] = 1.8*GeV; _FpA[1] = 0.20/GeV;_MFpA[1] = 1.8*GeV; _FmA[1] = 1.80/GeV;_MFmA[1] = 1.8*GeV; // B_c to B addFormFactor(541,511,0,-5,4,1); addFormFactor(541,521,0,-5,4,2); for(unsigned int ix=2;ix<4;++ix) { _fp[ix] = 1.27 ;_Mfp[ix] = 1.7*GeV; _fm[ix] = -7.30 ;_Mfm[ix] = 1.7*GeV; } // B_c to B* addFormFactor(541,513,1,-5,4,1); addFormFactor(541,523,1,-5,4,2); for(unsigned int ix=4;ix<6;++ix) { _FV[ix] = 1.35/GeV; _MFV[ix] = 2.2*GeV; _F0A[ix] = 9.80*GeV; _MF0A[ix] = 3.2*GeV; _FpA[ix] = 0.35/GeV; _MFpA[ix] = 2.2*GeV; _FmA[ix] = 2.50/GeV; _MFmA[ix] = 3.2*GeV; } // B_c to D addFormFactor(-541,-411,0,-4,5,1); addFormFactor(-541,-421,0,-4,5,2); for(unsigned int ix=6;ix<8;++ix) { _fp[ix] = 0.32 ; _Mfp[ix] = 5.0*GeV; _fm[ix] = -0.34 ; _Mfm[ix] = 5.0*GeV; } // B_c to D* addFormFactor(-541,-413,1,-4,5,1); addFormFactor(-541,-423,1,-4,5,2); for(unsigned int ix=8;ix<10;++ix) { _FV[ix] = 0.20 /GeV; _MFV[ix] = 6.2*GeV; _F0A[ix] = 3.60 *GeV; _MF0A[ix] = -1.0*GeV; _FpA[ix] = -0.062/GeV; _MFpA[ix] = 6.2*GeV; _FmA[ix] = 0.10 /GeV; _MFmA[ix] = 6.2*GeV; } // B_c to D_s addFormFactor(-541,-431,0,-4,5,3); _fp[10] = 0.45 ; _Mfp[10] = 5.0*GeV; _fm[10] = -0.43 ; _Mfm[10] = 5.0*GeV; // B_c to D_s addFormFactor(-541,-433,1,-4,5,3); _FV[11] = 0.24 /GeV; _MFV[11] = 6.2*GeV; _F0A[11] = 4.70 *GeV; _MF0A[11] = -1.0*GeV; _FpA[11] = -0.077/GeV; _MFpA[11] = 6.2*GeV; _FmA[11] = 0.13 /GeV; _MFmA[11] = 6.2*GeV; // B_c to eta_c addFormFactor(-541,441,0,-4,5,4); _fp[12] = 0.66 ; _Mfp[12] = 4.5*GeV; _fm[12] = -0.36 ; _Mfm[12] = 4.5*GeV; // B_c to J/psi addFormFactor(-541,443,1,-4,5,4); _FV[13] = 0.11 /GeV; _MFV[13] = 5.5*GeV; _F0A[13] = 5.90 *GeV; _MF0A[13] = 5.5*GeV; _FpA[13] = -0.074/GeV; _MFpA[13] = 5.5*GeV; _FmA[13] = 0.12 /GeV; _MFmA[13] = 5.5*GeV; // B_c to eta_c(2S) addFormFactor(-541,100441,0,-4,5,4); _fp[14] = 0.17 ; _Mfp[14] = 4.5*GeV; _fm[14] = -0.16 ; _Mfm[14] = 4.5*GeV; // B_c to J/psi(2S) addFormFactor(-541,100443,1,-4,5,4); _FV[15] = 0.035/GeV; _MFV[15] = 4.2*GeV; _F0A[15] = 1.686*GeV; _MF0A[15] = 4.2*GeV; _FpA[15] = -0.015/GeV; _MFpA[15] = 4.2*GeV; _FmA[15] = 0.052/GeV; _MFmA[15] = 4.2*GeV; // set the inital number of modes initialModes(numberOfFactors()); } void KiselevBcFormFactor::doinit() { ScalarFormFactor::doinit(); unsigned int isize(numberOfFactors()); if(isize!=_fp.size() ||isize!=_fm.size() ||isize!=_FV.size() ||isize!=_F0A.size()|| isize!=_FpA.size()||isize!=_FmA.size() ||isize!=_Mfp.size() ||isize!=_Mfm.size()|| isize!=_MFV.size()||isize!=_MF0A.size()||isize!=_MFpA.size()||isize!=_MFmA.size()) throw InitException() << "Inconsistent parameters in KiselevBcFormFactor::doinit()" << Exception::abortnow; } void KiselevBcFormFactor::persistentOutput(PersistentOStream & os) const { os << _fp << _fm << ounit(_FV,1/GeV) << ounit(_F0A,GeV) << ounit(_FpA,1/GeV) << ounit(_FmA,1/GeV) << ounit(_Mfp,GeV) << ounit(_Mfm,GeV) << ounit(_MFV,GeV) << ounit(_MF0A,GeV) << ounit(_MFpA,GeV) << ounit(_MFmA,GeV); } void KiselevBcFormFactor::persistentInput(PersistentIStream & is, int) { is >> _fp >> _fm >> iunit(_FV,1/GeV) >> iunit(_F0A,GeV) >> iunit(_FpA,1/GeV) >> iunit(_FmA,1/GeV) >> iunit(_Mfp,GeV) >> iunit(_Mfm,GeV) >> iunit(_MFV,GeV) >> iunit(_MF0A,GeV) >> iunit(_MFpA,GeV) >> iunit(_MFmA,GeV); } ClassDescription<KiselevBcFormFactor> KiselevBcFormFactor::initKiselevBcFormFactor; // Definition of the static class description member. void KiselevBcFormFactor::Init() { static ClassDocumentation<KiselevBcFormFactor> documentation ("The KiselevBcFormFactor class implements the form factors from hep-ph/0211021" " for the decay of the B_c", "The form factors of \\cite{Kiselev:2002vz} for the decay of the $B_c$ meson" " were used.", "\\bibitem{Kiselev:2002vz} V.~V.~Kiselev, arXiv:hep-ph/0211021.\n" "%%CITATION = HEP-PH/0211021;%%"); static ParVector<KiselevBcFormFactor,double> interfaceFplus ("Fplus", "The value of the f_+ form factor at q^2=0", &KiselevBcFormFactor::_fp, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<KiselevBcFormFactor,double> interfaceFminus ("Fminus", "The value of the f_- form factor at q^2=0", &KiselevBcFormFactor::_fm, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<KiselevBcFormFactor,InvEnergy> interfaceFV ("FV", "The value of the F_V form factor at q^2=0", &KiselevBcFormFactor::_FV, 1./GeV, -1, ZERO, -10./GeV, 10./GeV, false, false, true); static ParVector<KiselevBcFormFactor,Energy> interfaceF0A ("F0A", "The value of the F_0^A form factor at q^2=0", &KiselevBcFormFactor::_F0A, 1.*GeV, -1, ZERO, -10.*GeV, 10.*GeV, false, false, true); static ParVector<KiselevBcFormFactor,InvEnergy> interfaceFpA ("FplusA", "The value of the F_+^A form factor at q^2=0", &KiselevBcFormFactor::_FpA, 1./GeV, -1, ZERO, -10./GeV, 10./GeV, false, false, true); static ParVector<KiselevBcFormFactor,InvEnergy> interfaceFmA ("FminusA", "The value of the F_-^A form factor at q^2=0", &KiselevBcFormFactor::_FmA, 1./GeV, -1, ZERO, -10./GeV, 10./GeV, false, false, true); static ParVector<KiselevBcFormFactor,Energy> interfaceMpoleFplus ("MpoleFplus", "The pole mass for the f_+ form factor", &KiselevBcFormFactor::_Mfp, GeV, -1, ZERO, -2.0*GeV, 10.0*GeV, false, false, true); static ParVector<KiselevBcFormFactor,Energy> interfaceMpoleFminus ("MpoleFminus", "The pole mass for the f_- form factor", &KiselevBcFormFactor::_Mfm, GeV, -1, ZERO, -2.0*GeV, 10.0*GeV, false, false, true); static ParVector<KiselevBcFormFactor,Energy> interfaceMpoleFV ("MpoleFV", "The pole mass for the f_V form factor", &KiselevBcFormFactor::_MFV, GeV, -1, ZERO, -2.0*GeV, 10.0*GeV, false, false, true); static ParVector<KiselevBcFormFactor,Energy> interfaceMpoleF0A ("MpoleF0A", "The pole mass for the f_0^A form factor", &KiselevBcFormFactor::_MF0A, GeV, -1, ZERO, -2.0*GeV, 10.0*GeV, false, false, true); static ParVector<KiselevBcFormFactor,Energy> interfaceMpoleFpA ("MpoleFplusA", "The pole mass for the f_+^A form factor", &KiselevBcFormFactor::_MFpA, GeV, -1, ZERO, -2.0*GeV, 10.0*GeV, false, false, true); static ParVector<KiselevBcFormFactor,Energy> interfaceMpoleFmA ("MpoleFminusA", "The pole mass for the f_-^A form factor", &KiselevBcFormFactor::_MFmA, GeV, -1, ZERO, -2.0*GeV, 10.0*GeV, false, false, true); } void KiselevBcFormFactor::ScalarScalarFormFactor(Energy2 q2,unsigned int iloc, int,int,Energy m0,Energy m1, Complex & f0,Complex & fp) const { useMe(); fp = _fp[iloc]/(1.-q2/_Mfp[iloc]/_Mfp[iloc]); f0 = Complex(q2/(m0+m1)/(m0-m1)*_fm[iloc]/(1.-q2/_Mfm[iloc]/_Mfm[iloc]))+fp; } void KiselevBcFormFactor::ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int, int,Energy m0, Energy m1, Complex & A0,Complex & A1,Complex & A2, Complex & V) const { useMe(); InvEnergy fv,fp,fm; Energy f0; if(_MFV[iloc]>ZERO) fv = _FV[iloc]/(1.-q2/_MFV[iloc]/_MFV[iloc]); else fv = _FV[iloc]; if(_MFmA[iloc]>ZERO) fm = _FmA[iloc]/(1.-q2/_MFmA[iloc]/_MFmA[iloc]); else fm = _FmA[iloc]; if(_MFpA[iloc]>ZERO) fp = _FpA[iloc]/(1.-q2/_MFpA[iloc]/_MFpA[iloc]); else fp = _FpA[iloc]; if(_MF0A[iloc]>ZERO) f0 = _F0A[iloc]/(1.-q2/_MF0A[iloc]/_MF0A[iloc]); else f0 = _F0A[iloc]; Energy msum(m0+m1); V = fv*msum; A1 =-f0/msum; A2 = fp*msum; A0 =-0.5/m1*(f0+msum*(m0-m1)*fp+q2*fm); } void KiselevBcFormFactor::dataBaseOutput(ofstream & output, bool header,bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::KiselevBcFormFactor " << name() << " \n"; for(unsigned int ix=0;ix<numberOfFactors();++ix) { if(ix<initialModes()) { output << "newdef " << name() << ":Fplus " << ix << " " << _fp[ix] << "\n"; output << "newdef " << name() << ":Fminus " << ix << " " << _fm[ix] << "\n"; output << "newdef " << name() << ":FV " << ix << " " << _FV[ix]*GeV << "\n"; output << "newdef " << name() << ":F0A " << ix << " " << _F0A[ix]/GeV << "\n"; output << "newdef " << name() << ":FplusA " << ix << " " << _FpA[ix]*GeV << "\n"; output << "newdef " << name() << ":FminusA " << ix << " " << _FmA[ix]*GeV << "\n"; output << "newdef " << name() << ":MpoleFplus " << ix << " " << _Mfp[ix]/GeV << "\n"; output << "newdef " << name() << ":MpoleFminus " << ix << " " << _Mfm[ix]/GeV << "\n"; output << "newdef " << name() << ":MpoleFV " << ix << " " << _MFV[ix]/GeV << "\n"; output << "newdef " << name() << ":MpoleF0A " << ix << " " << _MF0A[ix]/GeV << "\n"; output << "newdef " << name() << ":MpoleFplusA " << ix << " " << _MFpA[ix]/GeV << "\n"; output << "newdef " << name() << ":MpoleFminusA " << ix << " " << _MFmA[ix]/GeV << "\n"; } else { output << "insert " << name() << ":Fplus " << ix << " " << _fp[ix] << "\n"; output << "insert " << name() << ":Fminus " << ix << " " << _fm[ix] << "\n"; output << "insert " << name() << ":FV " << ix << " " << _FV[ix]*GeV << "\n"; output << "insert " << name() << ":F0A " << ix << " " << _F0A[ix]/GeV << "\n"; output << "insert " << name() << ":FplusA " << ix << " " << _FpA[ix]*GeV << "\n"; output << "insert " << name() << ":FminusA " << ix << " " << _FmA[ix]*GeV << "\n"; output << "insert " << name() << ":MpoleFplus " << ix << " " << _Mfp[ix]/GeV << "\n"; output << "insert " << name() << ":MpoleFminus " << ix << " " << _Mfm[ix]/GeV << "\n"; output << "insert " << name() << ":MpoleFV " << ix << " " << _MFV[ix]/GeV << "\n"; output << "insert " << name() << ":MpoleF0A " << ix << " " << _MF0A[ix]/GeV << "\n"; output << "insert " << name() << ":MpoleFplusA " << ix << " " << _MFpA[ix]/GeV << "\n"; output << "insert " << name() << ":MpoleFminusA " << ix << " " << _MFmA[ix]/GeV << "\n"; } } ScalarFormFactor::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BallZwickyVectorFormFactor.cc���������������������������������0000644�0001750�0001750�00000066263�11754474773�026015� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // BallZwickyVectorFormFactor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the BallZwickyVectorFormFactor class. // #include "BallZwickyVectorFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/ParticleData.h" using namespace Herwig; BallZwickyVectorFormFactor::BallZwickyVectorFormFactor() : _Vr1(9), _Vr2(9), _A0r1(9), _A0r2(9), _A1r1(9), _A1r2(9), _A2r1(9), _A2r2(9), _T1r1(9), _T1r2(9), _T2r1(9), _T2r2(9), _T3r1(9), _T3r2(9), _VmR2(9), _Vmfit2(9), _A0mR2(9), _A0mfit2(9), _A1mR2(9), _A1mfit2(9), _A2mR2(9), _A2mfit2(9), _T1mR2(9), _T1mfit2(9), _T2mR2(9), _T2mfit2(9), _T3mR2(9), _T3mfit2(9) { double ort(1./sqrt(2.)); // parameters for the different form-factors // B to rho addFormFactor(-521, 113,1,-2,5,2); addFormFactor(-511, 113,1,-2,5,1); addFormFactor(-511, 213,1,-2,5,2); addFormFactor(-521, 213,1,-2,5,1); for(unsigned int ix=0;ix<4;++ix) { _Vr1[ix] = 1.045 ; _Vr2[ix] = -0.721; _VmR2[ix] = sqr(5.32)*GeV2; _Vmfit2[ix] = 38.34*GeV2; _A0r1[ix] = 1.527 ; _A0r2[ix] = -1.220; _A0mR2[ix] = sqr(5.28)*GeV2; _A0mfit2[ix] = 33.36*GeV2; _A1r1[ix] = 0.240 ; _A1r2[ix] = 0.; _A1mR2[ix] = -1.0*GeV2 ; _A1mfit2[ix] = 37.51*GeV2; _A2r1[ix] = 0.009 ; _A2r2[ix] = 0.212; _A2mR2[ix] = -1.0*GeV2 ; _A2mfit2[ix] = 40.82*GeV2; _T1r1[ix] = 0.897 ; _T1r2[ix] = -0.629; _T1mR2[ix] = sqr(5.32)*GeV2; _T1mfit2[ix] = 38.04*GeV2; _T2r1[ix] = 0.267 ; _T2r2[ix] = 0.; _T2mR2[ix] = -1.0*GeV2 ; _T2mfit2[ix] = 38.59*GeV2; _T3r1[ix] = 0.022 ; _T3r2[ix] = 0.245; _T3mR2[ix] = -1.0*GeV2 ; _T3mfit2[ix] = 40.88*GeV2; } for(unsigned int ix=0;ix<2;++ix) { double fact = ix==0 ? ort : -ort; _Vr1[ix] *= fact; _Vr2[ix] *= fact; _A0r1[ix] *= fact; _A0r2[ix] *= fact; _A1r1[ix] *= fact; _A1r2[ix] *= fact; _A2r1[ix] *= fact; _A2r2[ix] *= fact; _T1r1[ix] *= fact; _T1r2[ix] *= fact; _T2r1[ix] *= fact; _T2r2[ix] *= fact; _T3r1[ix] *= fact; _T3r2[ix] *= fact; } // parameters for the B to K form-factors addFormFactor(-521,-323,1,-2,5,3); addFormFactor(-511,-313,1,-2,5,3); for(unsigned int ix=4;ix<6;++ix) { _Vr1[ix] = 0.923 ; _Vr2[ix] = -0.511; _VmR2[ix] = sqr(5.32)*GeV2; _Vmfit2[ix] = 49.40*GeV2; _A0r1[ix] = 1.364 ; _A0r2[ix] = -0.990; _A0mR2[ix] = sqr(5.28)*GeV2; _A0mfit2[ix] = 36.78*GeV2; _A1r1[ix] = 0.290 ; _A1r2[ix] = 0.0; _A1mR2[ix] = -1.0*GeV2 ; _A1mfit2[ix] = 40.38*GeV2; _A2r1[ix] = -0.084 ; _A2r2[ix] = 0.342; _A2mR2[ix] = -1.0*GeV2 ; _A2mfit2[ix] = 52.00*GeV2; _T1r1[ix] = 0.823 ; _T1r2[ix] = -0.491; _T1mR2[ix] = sqr(5.32)*GeV2; _T1mfit2[ix] = 46.31*GeV2; _T2r1[ix] = 0.333 ; _T2r2[ix] = 0.; _T2mR2[ix] = -1.0*GeV2 ; _T2mfit2[ix] = 41.41*GeV2; _T3r1[ix] = -0.036 ; _T3r2[ix] = 0.369; _T3mR2[ix] = -1.0*GeV2 ; _T3mfit2[ix] = 48.10*GeV2; } // B to omega addFormFactor(-521,223,1,-2,5,2); _Vr1[6] = 1.006*ort ; _Vr2[6] = -0.713*ort; _VmR2[6] = 5.32*5.32*GeV2; _Vmfit2[6] = 37.45*GeV2; _A0r1[6] = 1.321*ort ; _A0r2[6] = -1.040*ort; _A0mR2[6] = 5.28*5.28*GeV2; _A0mfit2[6] = 34.47*GeV2; _A1r1[6] = 0.217*ort ; _A1r2[6] = 0.; _A1mR2[6] = -1.0*GeV2 ; _A1mfit2[6] = 37.01*GeV2; _A2r1[6] = 0.006*ort ; _A2r2[6] = 0.192*ort; _A2mR2[6] = -1.0*GeV2 ; _A2mfit2[6] = 41.24*GeV2; _T1r1[6] = 0.865*ort ; _T1r2[6] = -0.622*ort; _T1mR2[6] = 5.32*5.32*GeV2; _T1mfit2[6] = 37.19*GeV2; _T2r1[6] = 0.242*ort ; _T2r2[6] = 0.; _T2mR2[6] = -1.0*GeV2 ; _T2mfit2[6] = 37.95*GeV2; _T3r1[6] = 0.023*ort ; _T3r2[6] = 0.219*ort; _T3mR2[6] = -1.0*GeV2 ; _T3mfit2[6] = 40.87*GeV2; // B_s to K* addFormFactor(-531,323,1,-3,5,2); _Vr1[7] = 2.351 ; _Vr2[7] = -2.039; _VmR2[7] = sqr(5.42)*GeV2; _Vmfit2[7] = 33.10*GeV2; _A0r1[7] = 2.813 ; _A0r2[7] = -2.450; _A0mR2[7] = sqr(5.37)*GeV2; _A0mfit2[7] = 31.58*GeV2; _A1r1[7] = 0.231 ; _A1r2[7] = 0.; _A1mR2[7] = -1.0*GeV2 ; _A1mfit2[7] = 32.94*GeV2; _A2r1[7] = -0.011 ; _A2r2[7] = 0.192; _A2mR2[7] = -1.0*GeV2 ; _A2mfit2[7] = 40.14*GeV2; _T1r1[7] = 2.047 ; _T1r2[7] = -1.787; _T1mR2[7] = sqr(5.42)*GeV2; _T1mfit2[7] = 32.83*GeV2; _T2r1[7] = 0.260 ; _T2r2[7] = 0.; _T2mR2[7] = -1.0*GeV2 ; _T2mfit2[7] = 33.01*GeV2; _T3r1[7] = 0.043 ; _T3r2[7] = 0.217; _T3mR2[7] = -1.0*GeV2 ; _T3mfit2[7] = 39.38*GeV2; // B_s to phi addFormFactor(-531,333,1,-3,5,3); _Vr1[8] = 1.484 ; _Vr2[8] = -1.049; _VmR2[8] = sqr(5.42)*GeV2; _Vmfit2[8] = 39.52*GeV2; _A0r1[8] = 3.310 ; _A0r2[8] = -2.835; _A0mR2[8] = sqr(5.37)*GeV2; _A0mfit2[8] = 31.57*GeV2; _A1r1[8] = 0.308 ; _A1r2[8] = 0.; _A1mR2[8] = -1.0*GeV2 ; _A1mfit2[8] = 36.54*GeV2; _A2r1[8] = -0.054 ; _A2r2[8] = 0.288; _A2mR2[8] = -1.0*GeV2 ; _A2mfit2[8] = 48.94*GeV2; _T1r1[8] = 1.303 ; _T1r2[8] = -0.954; _T1mR2[8] = sqr(5.42)*GeV2; _T1mfit2[8] = 38.28*GeV2; _T2r1[8] = 0.349 ; _T2r2[8] = 0.; _T2mR2[8] = -1.0*GeV2 ; _T2mfit2[8] = 37.21*GeV2; _T3r1[8] = 0.027 ; _T3r2[8] = 0.322; _T3mR2[8] = -1.0*GeV2 ; _T3mfit2[8] = 45.56*GeV2; initialModes(numberOfFactors()); // cut-off parameter _cutoff=0.01*GeV2; } void BallZwickyVectorFormFactor::doinit() { ScalarFormFactor::doinit(); unsigned int isize(numberOfFactors()); if(isize!=_Vr1.size()||isize!=_Vr2.size()||isize!=_A0r1.size()||isize!=_A0r2.size()|| isize!=_A1r1.size()||isize!=_A1r2.size()||isize!=_A2r1.size()||isize!=_A2r2.size()|| isize!=_T1r1.size()||isize!=_T1r2.size()||isize!=_T2r1.size()||isize!=_T2r2.size()|| isize!=_T3r1.size()||isize!=_T3r2.size()||isize!=_VmR2.size()|| isize!=_Vmfit2.size()||isize!=_A0mR2.size()||isize!=_A0mfit2.size()|| isize!=_A1mR2.size()||isize!=_A1mfit2.size()||isize!=_A2mR2.size()|| isize!=_A2mfit2.size()||isize!=_T1mR2.size()||isize!=_T1mfit2.size()|| isize!=_T2mR2.size()||isize!=_T2mfit2.size()||isize!=_T3mR2.size()|| isize!=_T3mfit2.size()) throw InitException() << "Inconsistent parameters in " << "BallZwickyScalarFormFactor::doinit()" << Exception::abortnow; // output some graphs to check the answers // int id0,id1; // unsigned int iz; // Energy m0,m1; // Energy2 q2,step(14./100.*GeV2); // tcPDPtr in,out; // Complex A0,A1,A2,V; // ofstream output("Ball.top"); // for(unsigned int ix=0;ix<numberOfFactors();++ix) { // particleID(ix,id0,id1); // in = getParticleData(id0); // m0=in->mass(); // out= getParticleData(id1); // m1=out->mass(); // output << "new frame " << endl; // output << "newdef font duplex" << endl; // output << "title top \"" << in->PDGName() << " to " << out->PDGName() // << " vector form factors \"" << endl; // output << "newdef limits x 0 14. y 0 1" << endl; // double rt(sqrt(2.)); // for(iz=0;iz<4;++iz) { // q2=ZERO; // for( ;q2<14.*GeV2+step;q2+=step) { // ScalarVectorFormFactor(q2,ix,id0,id1,m0,m1,A0,A1,A2,V); // if(id1==113||id1==223) { // if((abs(id0)%100)/10==1) { // A0*=-rt; // A1*=-rt; // A2*=-rt; // V *=-rt; // } // else { // A0*=rt; // A1*=rt; // A2*=rt; // V*=rt; // } // } // if(iz==0) output << q2/GeV2 << " " << A0.real() << endl; // else if(iz==1) output << q2/GeV2 << " " << A1.real() << endl; // else if(iz==2) output << q2/GeV2 << " " << A2.real() << endl; // else if(iz==3) output << q2/GeV2 << " " << V.real() << endl; // } // if(iz==0) output << "join red" << endl; // else if(iz==1) output << "join blue" << endl; // else if(iz==2) output << "join green" << endl; // else if(iz==3) output << "join yellow" << endl; // } // output << "new frame " << endl; // output << "newdef font duplex" << endl; // output << "title top \"" << in->PDGName() << " to " << out->PDGName() // << " penguin form factors\" " << endl; // output << "newdef limits x 0 14. y 0 1" << endl; // for(iz=0;iz<3;++iz) { // q2=ZERO; // for( ;q2<14.*GeV2+step;q2+=step) { // ScalarVectorSigmaFormFactor(q2,ix,id0,id1,m0,m1,A0,A1,A2); // if(id1==113||id1==223) { // if((abs(id0)%100)/10==1) { // A0*=-rt; // A1*=-rt; // A2*=-rt; // } // else { // A0*=rt; // A1*=rt; // A2*=rt; // } // } // if(iz==0) output << q2/GeV2 << " " << A0.real() << endl; // else if(iz==1) output << q2/GeV2 << " " << A1.real() << endl; // else if(iz==2) output << q2/GeV2 << " " << A2.real() << endl; // } // if(iz==0){output << "join red" << endl;} // else if(iz==1){output << "join blue" << endl;} // else if(iz==2){output << "join green" << endl;} // } // } } void BallZwickyVectorFormFactor::persistentOutput(PersistentOStream & os) const { os << _Vr1 << _Vr2 << _A0r1 << _A0r2 << _A1r1 << _A1r2 << _A2r1 << _A2r2 << _T1r1 << _T1r2 << _T2r1 << _T2r2 << _T3r1 << _T3r2 << ounit(_VmR2,GeV2) << ounit(_Vmfit2,GeV2) << ounit(_A0mR2,GeV2) << ounit(_A0mfit2,GeV2) << ounit(_A1mR2,GeV2) << ounit(_A1mfit2,GeV2) << ounit(_A2mR2,GeV2) << ounit(_A2mfit2,GeV2) << ounit(_T1mR2,GeV2) << ounit(_T1mfit2,GeV2) << ounit(_T2mR2,GeV2) << ounit(_T2mfit2,GeV2) << ounit(_T3mR2,GeV2) << ounit(_T3mfit2,GeV2) << ounit(_cutoff,GeV2); } void BallZwickyVectorFormFactor::persistentInput(PersistentIStream & is, int) { is >> _Vr1 >> _Vr2 >> _A0r1 >> _A0r2 >> _A1r1 >> _A1r2 >> _A2r1 >> _A2r2 >> _T1r1 >> _T1r2 >> _T2r1 >> _T2r2 >> _T3r1 >> _T3r2 >> iunit(_VmR2,GeV2) >> iunit(_Vmfit2,GeV2) >> iunit(_A0mR2 ,GeV2) >> iunit(_A0mfit2,GeV2) >> iunit(_A1mR2,GeV2) >> iunit(_A1mfit2,GeV2) >> iunit(_A2mR2,GeV2) >> iunit(_A2mfit2,GeV2) >> iunit(_T1mR2,GeV2) >> iunit(_T1mfit2,GeV2) >> iunit(_T2mR2,GeV2) >> iunit(_T2mfit2,GeV2) >> iunit(_T3mR2,GeV2) >> iunit(_T3mfit2,GeV2) >> iunit(_cutoff,GeV2); } ClassDescription<BallZwickyVectorFormFactor> BallZwickyVectorFormFactor::initBallZwickyVectorFormFactor; // Definition of the static class description member. void BallZwickyVectorFormFactor::Init() { static ClassDocumentation<BallZwickyVectorFormFactor> documentation ("The BallZwickyVectorFormFactor class implements the vector form" " factors of hep-ph/0412079 for the form-factor for the decay of a B-meson to a" " light pseudoscalar meson", "The form factors of \\cite{Ball:2004rg} for $B_{d,s}\\to\\rho,\\omega,K^*,\\phi$" " were used.", "\\bibitem{Ball:2004rg} P.~Ball and R.~Zwicky, \n" "Phys.\\ Rev.\\ D {\\bf 71} (2005) 014029 [arXiv:hep-ph/0412079].\n" "%%CITATION = PHRVA,D71,014029;%%\n"); static ParVector<BallZwickyVectorFormFactor,double> interfaceVr_1 ("Vr_1", "The r_1 coefficient for the V form-factor", &BallZwickyVectorFormFactor::_Vr1, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyVectorFormFactor,double> interfaceVr_2 ("Vr_2", "The r_2 coefficient for the V form-factor", &BallZwickyVectorFormFactor::_Vr2, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyVectorFormFactor,double> interfaceA0r_1 ("A0r_1", "The r_1 coefficient for the A_0 form-factor", &BallZwickyVectorFormFactor::_A0r1, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyVectorFormFactor,double> interfaceA0r_2 ("A0r_2", "The r_2 coefficient for the A_0 form-factor", &BallZwickyVectorFormFactor::_A0r2, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyVectorFormFactor,double> interfaceA1r_1 ("A1r_1", "The r_1 coefficient for the A_1 form-factor", &BallZwickyVectorFormFactor::_A1r1, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyVectorFormFactor,double> interfaceA1r_2 ("A1r_2", "The r_2 coefficient for the A_1 form-factor", &BallZwickyVectorFormFactor::_A1r2, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyVectorFormFactor,double> interfaceA2r_1 ("A2r_1", "The r_1 coefficient for the A_2 form-factor", &BallZwickyVectorFormFactor::_A2r1, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyVectorFormFactor,double> interfaceA2r_2 ("A2r_2", "The r_2 coefficient for the A_2 form-factor", &BallZwickyVectorFormFactor::_A2r2, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyVectorFormFactor,double> interfaceT1r_1 ("T1r_1", "The r_1 coefficient for the T_1 form-factor", &BallZwickyVectorFormFactor::_T1r1, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyVectorFormFactor,double> interfaceT1r_2 ("T1r_2", "The r_2 coefficient for the T_1 form-factor", &BallZwickyVectorFormFactor::_T1r2, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyVectorFormFactor,double> interfaceT2r_1 ("T2r_1", "The r_1 coefficient for the T_2 form-factor", &BallZwickyVectorFormFactor::_T2r1, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyVectorFormFactor,double> interfaceT2r_2 ("T2r_2", "The r_2 coefficient for the T_2 form-factor", &BallZwickyVectorFormFactor::_T2r2, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyVectorFormFactor,double> interfaceT3r_1 ("T3r_1", "The r_1 coefficient for the T_3 form-factor", &BallZwickyVectorFormFactor::_T3r1, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyVectorFormFactor,double> interfaceT3r_2 ("T3r_2", "The r_2 coefficient for the T_3 form-factor", &BallZwickyVectorFormFactor::_T3r2, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyVectorFormFactor,Energy2> interfaceVmR2 ("VmR2", "The value of m_R^2 for the V form-factor", &BallZwickyVectorFormFactor::_VmR2, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyVectorFormFactor,Energy2> interfaceVmfit2 ("Vmfit2", "The value of m_fit^2 for the V form-factor", &BallZwickyVectorFormFactor::_Vmfit2, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyVectorFormFactor,Energy2> interfaceA0mR2 ("A0mR2", "The value of m_R^2 for the A_0 form-factor", &BallZwickyVectorFormFactor::_A0mR2, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyVectorFormFactor,Energy2> interfaceA0mfit2 ("A0mfit2", "The value of m_fit^2 for the A_0 form-factor", &BallZwickyVectorFormFactor::_A0mfit2, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyVectorFormFactor,Energy2> interfaceA1mR2 ("A1mR2", "The value of m_R^2 for the A_1 form-factor", &BallZwickyVectorFormFactor::_A1mR2, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyVectorFormFactor,Energy2> interfaceA1mfit2 ("A1mfit2", "The value of m_fit^2 for the A_1 form-factor", &BallZwickyVectorFormFactor::_A1mfit2, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyVectorFormFactor,Energy2> interfaceA2mR2 ("A2mR2", "The value of m_R^2 for the A_2 form-factor", &BallZwickyVectorFormFactor::_A2mR2, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyVectorFormFactor,Energy2> interfaceA2mfit2 ("A2mfit2", "The value of m_fit^2 for the A_2 form-factor", &BallZwickyVectorFormFactor::_A2mfit2, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyVectorFormFactor,Energy2> interfaceT1mR2 ("T1mR2", "The value of m_R^2 for the T_1 form-factor", &BallZwickyVectorFormFactor::_T1mR2, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyVectorFormFactor,Energy2> interfaceT1mfit2 ("T1mfit2", "The value of m_fit^2 for the T_1 form-factor", &BallZwickyVectorFormFactor::_T1mfit2, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyVectorFormFactor,Energy2> interfaceT2mR2 ("T2mR2", "The value of m_R^2 for the T_2 form-factor", &BallZwickyVectorFormFactor::_T2mR2, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyVectorFormFactor,Energy2> interfaceT2mfit2 ("T2mfit2", "The value of m_fit^2 for the T_2 form-factor", &BallZwickyVectorFormFactor::_T2mfit2, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyVectorFormFactor,Energy2> interfaceT3mR2 ("T3mR2", "The value of m_R^2 for the T_3 form-factor", &BallZwickyVectorFormFactor::_T3mR2, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyVectorFormFactor,Energy2> interfaceT3mfit2 ("T3mfit2", "The value of m_fit^2 for the T_3 form-factor", &BallZwickyVectorFormFactor::_T3mfit2, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static Parameter<BallZwickyVectorFormFactor,Energy2> interfaceCutOff ("CutOff", "Parameter controlling the value of q^2 where we switch from the fit " "to a small q^2 expansion for numerical stability.", &BallZwickyVectorFormFactor::_cutoff, GeV2, 2.0*GeV2, ZERO, 10.0*GeV2, false, false, true); } // form-factor for scalar to vector void BallZwickyVectorFormFactor::ScalarVectorFormFactor(Energy2 q2,unsigned int mode, int,int,Energy, Energy, Complex & A0,Complex & A1, Complex & A2,Complex & V) const { useMe(); // the form-factors // A_0 if(_A0mR2[mode]<ZERO) { A0 = (_A0r1[mode]+_A0r2[mode]/(1.-q2/_A0mfit2[mode]))/(1.-q2/_A0mfit2[mode]); } else { A0 = _A0r1[mode]/(1.-q2/_A0mR2[mode])+_A0r2[mode]/(1.-q2/_A0mfit2[mode]); } // A_1 if(_A1mR2[mode]<ZERO) { A1 = (_A1r1[mode]+_A1r2[mode]/(1.-q2/_A1mfit2[mode]))/(1.-q2/_A1mfit2[mode]); } else { A1 = _A1r1[mode]/(1.-q2/_A1mR2[mode])+_A1r2[mode]/(1.-q2/_A1mfit2[mode]); } // A_2 if(_A2mR2[mode]<ZERO) { A2 = (_A2r1[mode]+_A2r2[mode]/(1.-q2/_A2mfit2[mode]))/(1.-q2/_A2mfit2[mode]); } else { A2 = _A2r1[mode]/(1.-q2/_A2mR2[mode])+_A2r2[mode]/(1.-q2/_A2mfit2[mode]); } // V if(_VmR2[mode]<ZERO) { V = (_Vr1[mode]+_Vr2[mode]/(1.-q2/_Vmfit2[mode]))/(1.-q2/_Vmfit2[mode]); } else { V = _Vr1[mode]/(1.-q2/_VmR2[mode])+_Vr2[mode]/(1.-q2/_Vmfit2[mode]); } } void BallZwickyVectorFormFactor::ScalarVectorSigmaFormFactor(Energy2 q2, unsigned int mode,int, int,Energy m0,Energy m1, Complex & T1,Complex & T2, Complex & T3) const { useMe(); // T_1 if(_T1mR2[mode]<ZERO) { T1 = (_T1r1[mode]+_T1r2[mode]/(1.-q2/_T1mfit2[mode]))/(1.-q2/_T1mfit2[mode]); } else { T1 = _T1r1[mode]/(1.-q2/_T1mR2[mode])+_T1r2[mode]/(1.-q2/_T1mfit2[mode]); } // T_2 if(_T2mR2[mode]<ZERO) { T2 = (_T2r1[mode]+_T2r2[mode]/(1.-q2/_T2mfit2[mode]))/(1.-q2/_T2mfit2[mode]); } else { T2 = _T2r1[mode]/(1.-q2/_T2mR2[mode])+_T2r2[mode]/(1.-q2/_T2mfit2[mode]); } // T_3 if(q2>_cutoff) { if(_T3mR2[mode]<ZERO) { T3 = (_T3r1[mode]+_T3r2[mode]/(1.-q2/_T3mfit2[mode]))/(1.-q2/_T3mfit2[mode]); } else { T3 = _T3r1[mode]/(1.-q2/_T3mR2[mode])+_T3r2[mode]/(1.-q2/_T3mfit2[mode]); } // convert for T_3tilde to T_3 T3 = (m0*m0-m1*m1)/q2*(T3-T2); } else { InvEnergy2 smallT2,smallT3; if(_T2mR2[mode]<ZERO) { double a(q2/_T2mfit2[mode]); smallT2=1./_T2mfit2[mode]* (_T2r1[mode]+2.*_T2r2[mode]+a*(_T2r1[mode]+3.*_T2r2[mode]+ a*(_T2r1[mode]+4.*_T2r2[mode]+ a*(_T2r1[mode]+5.*_T2r2[mode])))); } else { smallT2=(_T2r1[mode]/_T2mR2[mode]+_T2r2[mode]/_T2mfit2[mode]) +q2*(+_T2r1[mode]/_T2mR2[mode]/_T2mR2[mode] +_T2r2[mode]/_T2mfit2[mode]/_T2mfit2[mode]) +q2*q2*(+_T2r1[mode]/_T2mR2[mode]/_T2mR2[mode]/_T2mR2[mode] +_T2r2[mode]/_T2mfit2[mode]/_T2mfit2[mode]/_T2mfit2[mode]); } if(_T3mR2[mode]<ZERO) { double a(q2/_T3mfit2[mode]); smallT3=1./_T3mfit2[mode]* (_T3r1[mode]+2.*_T3r2[mode]+a*(_T3r1[mode]+3.*_T3r2[mode]+ a*(_T3r1[mode]+4.*_T3r2[mode]+ a*(_T3r1[mode]+5.*_T3r2[mode])))); } else { smallT3=(_T3r1[mode]/_T3mR2[mode]+_T3r2[mode]/_T3mfit2[mode]) +q2*(+_T3r1[mode]/_T3mR2[mode]/_T3mR2[mode] +_T3r2[mode]/_T3mfit2[mode]/_T3mfit2[mode]) +q2*q2*(+_T3r1[mode]/_T3mR2[mode]/_T3mR2[mode]/_T3mR2[mode] +_T3r2[mode]/_T3mfit2[mode]/_T3mfit2[mode]/_T3mfit2[mode]); } T3 = (m0+m1)*(m0-m1)*(smallT3-smallT2); } } void BallZwickyVectorFormFactor::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::BallZwickyVectorFormFactor " << name() << " \n"; output << "newdef " << name() << ":CutOff " << _cutoff/GeV2 << "\n"; for(unsigned int ix=0;ix<_Vr1.size();++ix) { if(ix<initialModes()) { output << "newdef " << name() << ":Vr_1 " << ix << " " << _Vr1[ix] << "\n"; output << "newdef " << name() << ":Vr_2 " << ix << " " << _Vr2[ix] << "\n"; output << "newdef " << name() << ":A0r_1 " << ix << " " << _A0r1[ix] << "\n"; output << "newdef " << name() << ":A0r_2 " << ix << " " << _A0r2[ix] << "\n"; output << "newdef " << name() << ":A1r_1 " << ix << " " << _A1r1[ix] << "\n"; output << "newdef " << name() << ":A1r_2 " << ix << " " << _A1r2[ix] << "\n"; output << "newdef " << name() << ":A2r_1 " << ix << " " << _A2r1[ix] << "\n"; output << "newdef " << name() << ":A2r_2 " << ix << " " << _A2r2[ix] << "\n"; output << "newdef " << name() << ":T1r_1 " << ix << " " << _T1r1[ix] << "\n"; output << "newdef " << name() << ":T1r_2 " << ix << " " << _T1r2[ix] << "\n"; output << "newdef " << name() << ":T2r_1 " << ix << " " << _T2r1[ix] << "\n"; output << "newdef " << name() << ":T2r_2 " << ix << " " << _T2r2[ix] << "\n"; output << "newdef " << name() << ":T3r_1 " << ix << " " << _T3r1[ix] << "\n"; output << "newdef " << name() << ":T3r_2 " << ix << " " << _T3r2[ix] << "\n"; output << "newdef " << name() << ":VmR2 " << ix << " " << _VmR2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":Vmfit2 " << ix << " " << _Vmfit2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":A0mR2 " << ix << " " << _A0mR2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":A0mfit2 " << ix << " " << _A0mfit2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":A1mR2 " << ix << " " << _A1mR2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":A1mfit2 " << ix << " " << _A1mfit2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":A2mR2 " << ix << " " << _A2mR2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":A2mfit2 " << ix << " " << _A2mfit2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":T1mR2 " << ix << " " << _T1mR2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":T1mfit2 " << ix << " " << _T1mfit2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":T2mR2 " << ix << " " << _T2mR2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":T2mfit2 " << ix << " " << _T2mfit2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":T3mR2 " << ix << " " << _T3mR2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":T3mfit2 " << ix << " " << _T3mfit2[ix]/GeV2 << "\n"; } else { output << "newdef " << name() << ":Vr_1 " << ix << " " << _Vr1[ix] << "\n"; output << "newdef " << name() << ":Vr_2 " << ix << " " << _Vr2[ix] << "\n"; output << "newdef " << name() << ":A0r_1 " << ix << " " << _A0r1[ix] << "\n"; output << "newdef " << name() << ":A0r_2 " << ix << " " << _A0r2[ix] << "\n"; output << "newdef " << name() << ":A1r_1 " << ix << " " << _A1r1[ix] << "\n"; output << "newdef " << name() << ":A1r_2 " << ix << " " << _A1r2[ix] << "\n"; output << "newdef " << name() << ":A2r_1 " << ix << " " << _A2r1[ix] << "\n"; output << "newdef " << name() << ":A2r_2 " << ix << " " << _A2r2[ix] << "\n"; output << "newdef " << name() << ":T1r_1 " << ix << " " << _T1r1[ix] << "\n"; output << "newdef " << name() << ":T1r_2 " << ix << " " << _T1r2[ix] << "\n"; output << "newdef " << name() << ":T2r_1 " << ix << " " << _T2r1[ix] << "\n"; output << "newdef " << name() << ":T2r_2 " << ix << " " << _T2r2[ix] << "\n"; output << "newdef " << name() << ":T3r_1 " << ix << " " << _T3r1[ix] << "\n"; output << "newdef " << name() << ":T3r_2 " << ix << " " << _T3r2[ix] << "\n"; output << "newdef " << name() << ":VmR2 " << ix << " " << _VmR2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":Vmfit2 " << ix << " " << _Vmfit2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":A0mR2 " << ix << " " << _A0mR2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":A0mfit2 " << ix << " " << _A0mfit2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":A1mR2 " << ix << " " << _A1mR2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":A1mfit2 " << ix << " " << _A1mfit2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":A2mR2 " << ix << " " << _A2mR2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":A2mfit2 " << ix << " " << _A2mfit2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":T1mR2 " << ix << " " << _T1mR2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":T1mfit2 " << ix << " " << _T1mfit2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":T2mR2 " << ix << " " << _T2mR2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":T2mfit2 " << ix << " " << _T2mfit2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":T3mR2 " << ix << " " << _T3mR2[ix]/GeV2 << "\n"; output << "newdef " << name() << ":T3mfit2 " << ix << " " << _T3mfit2[ix]/GeV2 << "\n"; } } ScalarFormFactor::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/MelikhovFormFactor.h������������������������������������������0000644�0001750�0001750�00000015172�11754474773�024170� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MelikhovFormFactor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MelikhovFormFactor_H #define HERWIG_MelikhovFormFactor_H // // This is the declaration of the MelikhovFormFactor class. // #include "ScalarFormFactor.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The MelikhovFormFactor class implements the model of Phys. Lett. B 380 (1996) 363 * for the form factors for \f$B\to\pi,\rho\f$. * * @see ScalarFormFactor * */ class MelikhovFormFactor: public ScalarFormFactor { public: /** * The default constructor. */ MelikhovFormFactor(); /** @name Form-Factors */ //@{ /** * The form factor for the weak decay of a scalar to a scalar. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param f0 The form-factor \f$f_0\f$. * @param fp The form-factor \f$f_+\f$. */ virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0,Energy m1, Complex & f0,Complex & fp) const; /** * The form factor for the weak decay of a scalar to a vector. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param V The form-factor \f$V\f$ * @param A0 The form-factor \f$A_0\f$ * @param A1 The form-factor \f$A_1\f$ * @param A2 The form-factor \f$A_2\f$ */ virtual void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1, Energy m0, Energy m1, Complex & V, Complex & A0,Complex & A1,Complex & A2) const; //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MelikhovFormFactor> initMelikhovFormFactor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MelikhovFormFactor & operator=(const MelikhovFormFactor &); private: /** @name Parameters for the form factors */ //@{ /** * The set of fit parameters to use */ unsigned int _ifit; /** * The value of \f$R_+(0)\f$ for the \f$B\to\pi\f$ form factor. */ double _Rplus0; /** * The value of \f$M_+\f$ for the \f$B\to\pi\f$ form factor. */ Energy _Mplus; /** * The value of \f$n_+\f$ for the \f$B\to\pi\f$ form factor. */ double _nplus; /** * The value of \f$R_V(0)\f$ for the \f$B\to\rho\f$ form factor. */ double _RV0; /** * The value of \f$M_V\f$ for the \f$B\to\rho\f$ form factor. */ Energy _MV; /** * The value of \f$n_V\f$ for the \f$B\to\rho\f$ form factor. */ double _nV; /** * The value of \f$R_1(0)\f$ for the \f$B\to\rho\f$ form factor. */ double _R10; /** * The value of \f$M_1\f$ for the \f$B\to\rho\f$ form factor. */ Energy _M1; /** * The value of \f$n_1\f$ for the \f$B\to\rho\f$ form factor. */ double _n1; /** * The value of \f$R_2(0)\f$ for the \f$B\to\rho\f$ form factor. */ double _R20; /** * The value of \f$M_2\f$ for the \f$B\to\rho\f$ form factor. */ Energy _M2; /** * The value of \f$n_2\f$ for the \f$B\to\rho\f$ form factor. */ double _n2; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MelikhovFormFactor. */ template <> struct BaseClassTrait<Herwig::MelikhovFormFactor,1> { /** Typedef of the first base class of MelikhovFormFactor. */ typedef Herwig::ScalarFormFactor NthBase; }; /** This template specialization informs ThePEG about the name of * the MelikhovFormFactor class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MelikhovFormFactor> : public ClassTraitsBase<Herwig::MelikhovFormFactor> { /** Return a platform-independent class name */ static string className() { return "Herwig::MelikhovFormFactor"; } /** Return the name of the shared library be loaded to get * access to the MelikhovFormFactor class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_MelikhovFormFactor_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/ScalarFormFactor.fh�������������������������������������������0000644�0001750�0001750�00000000462�11754474773�023761� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the ScalarFormFactor class. // #ifndef HERWIG_ScalarFormFactor_FH #define HERWIG_ScalarFormFactor_FH namespace Herwig { using namespace ThePEG; class ScalarFormFactor; ThePEG_DECLARE_CLASS_POINTERS(ScalarFormFactor,ScalarFormFactorPtr); } #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BallZwickyScalarFormFactor.cc���������������������������������0000644�0001750�0001750�00000033430�11754474773�025746� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // BallZwickyScalarFormFactor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the BallZwickyScalarFormFactor class. // #include "BallZwickyScalarFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/Repository/EventGenerator.h" using namespace Herwig; BallZwickyScalarFormFactor::BallZwickyScalarFormFactor() : _r10(7), _r20(7), _r1plus(7), _r2plus(7), _r1T(7), _r2T(7), _m120(7), _mfit20(7), _m12plus(7), _mfit2plus(7), _m12T(7), _mfit2T(7) { // parameters for the B to pi form-factors for(unsigned int ix=0;ix<4;++ix) { _r10[ix] = 0. ; _r20[ix] = 0.258; _m120[ix] = -1.*GeV2 ; _mfit20[ix] = 33.81*GeV2; _r1plus[ix] = 0.744 ; _r2plus[ix] = -0.486; _m12plus[ix] = sqr(5.32)*GeV2; _mfit2plus[ix] = 40.73*GeV2; _r1T[ix] = 1.387 ; _r2T[ix] = -1.134; _m12T[ix] = sqr(5.32)*GeV2; _mfit2T[ix] = 32.22*GeV2; } addFormFactor(-521, 111,0,-2,5,2); addFormFactor(-511, 111,0,-2,5,1); addFormFactor(-511, 211,0,-2,5,2); addFormFactor(-521, 211,0,-2,5,1); for(unsigned int ix=0;ix<2;++ix) { double fact(sqrt(0.5)); if(ix==1) fact *= -1.; _r20[ix] *= fact; _r1plus[ix] *= fact; _r2plus[ix] *= fact; _r1T[ix] *= fact; _r2T[ix] *= fact; } // parameters for the B to K form-factors addFormFactor(-521,-321,0,-2,5,3); addFormFactor(-511,-311,0,-2,5,3); for(unsigned int ix=4;ix<6;++ix) { _r10[ix] = 0. ; _r20[ix] = 0.330; _m120[ix] = -1.*GeV2 ; _mfit20[ix] = 37.46*GeV2; _r1plus[ix] = 0.162 ; _r2plus[ix] = 0.173; _m12plus[ix] = sqr(5.41)*GeV2; _mfit2plus[ix] = -1.*GeV2; _r1T[ix] = 0.161 ; _r2T[ix] = 0.198; _m12T[ix] = sqr(5.41)*GeV2; _mfit2T[ix] = -1.*GeV2; } // parameters for the B to eta form-factors addFormFactor(521,221,0,2,-5,-2); _r10[6] = 0. ; _r20[6] = 0.273; _m120[6] = -1.*GeV2 ; _mfit20[6] = 31.03*GeV2; _r1plus[6] = 0.122 ; _r2plus[6] = 0.155; _m12plus[6] = sqr(5.32)*GeV2; _mfit2plus[6] = -1.*GeV2; _r1T[6] = 0.111 ; _r2T[6] = 0.175; _m12T[6] = sqr(5.32)*GeV2; _mfit2T[6] = -1.*GeV2; // initial number of modes initialModes(numberOfFactors()); // eta-eta' mixing angle _thetaeta = -Constants::pi/9.; } void BallZwickyScalarFormFactor::doinit() { ScalarFormFactor::doinit(); // check all the vectors have the same size unsigned int isize=numberOfFactors(); if(isize!=_r10.size()||isize!=_r20.size()||isize!=_r1plus.size()|| isize!=_r2plus.size()||isize!=_r1T.size()|| isize!=_r2T.size()||isize!=_m120.size()||isize!=_mfit20.size()|| isize!=_m12plus.size()||isize!=_mfit2plus.size()|| isize!=_m12T.size()||isize!=_mfit2T.size()) throw InitException() << "Inconsistent parameters in " << "BallZwickyScalarFormFactor::doinit()" << Exception::abortnow; // output some graphs to check the answers // int id0,id1; // unsigned int iz; // Energy m0,m1; // Energy2 q2,step(14./100.*GeV2); // tcPDPtr in,out; // Complex f0,fp,ft; // ofstream output("Ball.top"); // for(unsigned int ix=0;ix<numberOfFactors();++ix) { // particleID(ix,id0,id1); // in = getParticleData(id0); // m0=in->mass(); // out= getParticleData(id1); // m1=out->mass(); // output << "new frame " << endl; // output << "newdef font duplex" << endl; // output << "title top \"" << in->PDGName() << " to " << out->PDGName() // << " scalar form factors \"" << endl; // output << "newdef limits x 0 14. y 0 1" << endl; // double rt(sqrt(2.)); // for(iz=0;iz<3;++iz) { // q2=ZERO; // for( ;q2<14.*GeV2+step;q2+=step) { // ScalarScalarFormFactor(q2,ix,id0,id1,m0,m1,f0,fp); // ScalarScalarSigmaFormFactor(q2,ix,id0,id1,m0,m1,ft); // if(id1==111) { // if((abs(id0)%100)/10==1) { // f0*=-rt; // fp*=-rt; // ft*=-rt; // } // else { // f0*=rt; // fp*=rt; // ft*=rt; // } // } // else if(id1==221) { // double fact(cos(_thetaeta)/sqrt(6.)-sin(_thetaeta)/sqrt(3.)); // f0/=fact; // fp/=fact; // ft/=fact; // } // if(iz==0) output << q2/GeV2 << " " << f0.real() << "\n"; // else if(iz==1) output << q2/GeV2 << " " << fp.real() << "\n"; // else if(iz==2) output << q2/GeV2 << " " << ft.real() << "\n"; // } // if(iz==0) output << "join red \n"; // else if(iz==1) output << "join blue \n"; // else if(iz==2) output << "join green\n"; // } // } } void BallZwickyScalarFormFactor::persistentOutput(PersistentOStream & os) const { os << _r10 << _r20 << _r1plus << _r2plus << _r1T << _r2T << ounit(_m120,GeV2) << ounit(_mfit20,GeV2) << ounit(_m12plus,GeV2) << ounit(_mfit2plus,GeV2) << ounit(_m12T,GeV2) << ounit(_mfit2T,GeV2) << _thetaeta; } void BallZwickyScalarFormFactor::persistentInput(PersistentIStream & is, int) { is >> _r10 >> _r20 >> _r1plus >> _r2plus >> _r1T >> _r2T >> iunit(_m120,GeV2) >> iunit(_mfit20,GeV2) >> iunit(_m12plus,GeV2) >> iunit(_mfit2plus,GeV2) >> iunit(_m12T,GeV2) >> iunit(_mfit2T,GeV2) >> _thetaeta; } ClassDescription<BallZwickyScalarFormFactor> BallZwickyScalarFormFactor::initBallZwickyScalarFormFactor; // Definition of the static class description member. void BallZwickyScalarFormFactor::Init() { static ClassDocumentation<BallZwickyScalarFormFactor> documentation ("The BallZwickyScalarFormFactor class implements the form-factors" " of PRD71 014015 (2005) for the form-factor for the decay of a B-meson to a" " light pseudoscalar meson", "The form factors of \\cite{Ball:2004ye} for $B\\to\\pi, K, \\eta$ were used.", "\\bibitem{Ball:2004ye} P.~Ball and R.~Zwicky,\n " "Phys.\\ Rev.\\ D {\\bf 71} (2005) 014015 [arXiv:hep-ph/0406232].\n" "%%CITATION = PHRVA,D71,014015;%%\n"); static ParVector<BallZwickyScalarFormFactor,double> interfacer_10 ("r_10", "The r_1 coefficient for the f_0 form-factor", &BallZwickyScalarFormFactor::_r10, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyScalarFormFactor,double> interfacer_20 ("r_20", "The r_2 coefficient for the f_0 form-factor", &BallZwickyScalarFormFactor::_r20, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyScalarFormFactor,double> interfacer_1plus ("r_1plus", "The r_1 coefficient for the f_+ form-factor", &BallZwickyScalarFormFactor::_r1plus, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyScalarFormFactor,double> interfacer_2plus ("r_2plus", "The r_2 coefficient for the f_+ form-factor", &BallZwickyScalarFormFactor::_r2plus, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyScalarFormFactor,double> interfacer_1T ("r_1T", "The r_1 coefficient for the f_T form-factor", &BallZwickyScalarFormFactor::_r1T, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyScalarFormFactor,double> interfacer_2T ("r_2T", "The r_2 coefficient for the f_T form-factor", &BallZwickyScalarFormFactor::_r2T, 0, 0, 0, -10., 10., false, false, true); static ParVector<BallZwickyScalarFormFactor,Energy2> interfacem120 ("m_120", "The value of m_1^2 for the f_0 form-factor", &BallZwickyScalarFormFactor::_m120, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyScalarFormFactor,Energy2> interfacemfit20 ("mfit20", "The value of m_fit^2 for the f_0 form-factor", &BallZwickyScalarFormFactor::_mfit20, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyScalarFormFactor,Energy2> interfacem12plus ("m_12plus", "The value of m_1^2 for the f_+ form-factor", &BallZwickyScalarFormFactor::_m12plus, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyScalarFormFactor,Energy2> interfacemfit2plus ("mfit2plus", "The value of m_fit^2 for the f_+ form-factor", &BallZwickyScalarFormFactor::_mfit2plus, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyScalarFormFactor,Energy2> interfacem12T ("m_12T", "The value of m_1^2 for the f_T form-factor", &BallZwickyScalarFormFactor::_m12T, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static ParVector<BallZwickyScalarFormFactor,Energy2> interfacemfit2T ("mfit2T", "The value of m_fit^2 for the f_T form-factor", &BallZwickyScalarFormFactor::_mfit2T, GeV2, -1, 25.*GeV2, -2.*GeV2, 100.*GeV2, false, false, true); static Parameter<BallZwickyScalarFormFactor,double> interfaceThetaEtaEtaPrime ("ThetaEtaEtaPrime", "The eta-eta' mixing angle", &BallZwickyScalarFormFactor::_thetaeta, -Constants::pi/9., -Constants::pi, Constants::pi, false, false, true); } // form-factor for scalar to scalar void BallZwickyScalarFormFactor:: ScalarScalarFormFactor(Energy2 q2,unsigned int mode, int, int id1, Energy, Energy, Complex & f0, Complex & fp) const { useMe(); // the F_0 form-factor if(_m120[mode]<ZERO) { f0=_r20[mode]/(1.-q2/_mfit20[mode]); } else if(_mfit20[mode]<ZERO) { f0=(_r10[mode]+_r20[mode]/(1.-q2/_m120[mode]))/(1.-q2/_m120[mode]); } else { f0=_r10[mode]/(1.-q2/_m120[mode])+_r20[mode]/(1.-q2/_mfit20[mode]); } // the F_1 form-factor if(_m12plus[mode]<ZERO) { fp = _r2plus[mode]/(1.-q2/_mfit2plus[mode]); } else if(_mfit2plus[mode]<ZERO) { fp = (_r1plus[mode]+_r2plus[mode]/(1.-q2/_m12plus[mode]))/(1.-q2/_m12plus[mode]); } else { fp =_r1plus[mode]/(1.-q2/_m12plus[mode])+_r2plus[mode]/(1.-q2/_mfit2plus[mode]); } if(id1==ParticleID::eta) { double fact(cos(_thetaeta)/sqrt(6.)-sin(_thetaeta)/sqrt(3.)); fp *= fact; f0 *= fact; } } void BallZwickyScalarFormFactor::ScalarScalarSigmaFormFactor(Energy2 q2, unsigned int mode,int, int id1,Energy, Energy, Complex & fT) const { useMe(); // the F_T form-factor if(_m12T[mode]<ZERO) { fT = _r2T[mode]/(1.-q2/_mfit2T[mode]); } else if(_mfit2T[mode]<ZERO) { fT = (_r1T[mode]+_r2T[mode]/(1.-q2/_m12T[mode]))/(1.-q2/_m12T[mode]); } else { fT =_r1T[mode]/(1.-q2/_m12T[mode])+_r2T[mode]/(1.-q2/_mfit2T[mode]); } if(id1==ParticleID::eta) { fT *=cos(_thetaeta)/sqrt(6.)-sin(_thetaeta)/sqrt(3.); } } void BallZwickyScalarFormFactor::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::BallZwickyScalarFormFactor " << name() << " \n"; output << "newdef " << name() << ":ThetaEtaEtaPrime " << _thetaeta << "\n"; for(unsigned int ix=0;ix<numberOfFactors();++ix) { if(ix<initialModes()) { output << "newdef " << name() << ":r_10 " << ix << " " << _r10[ix] << "\n"; output << "newdef " << name() << ":r_20 " << ix << " " << _r20[ix] << "\n"; output << "newdef " << name() << ":r_1plus " << ix << " " << _r1plus[ix] << "\n"; output << "newdef " << name() << ":r_2plus " << ix << " " << _r2plus[ix] << "\n"; output << "newdef " << name() << ":r_1T " << ix << " " << _r1T[ix] << "\n"; output << "newdef " << name() << ":r_2T " << ix << " " << _r2T[ix] << "\n"; output << "newdef " << name() << ":m_120 " << ix << " " << _m120[ix]/GeV2 << "\n"; output << "newdef " << name() << ":mfit20 " << ix << " " << _mfit20[ix]/GeV2 << "\n"; output << "newdef " << name() << ":m_12plus " << ix << " " << _m12plus[ix]/GeV2 << "\n"; output << "newdef " << name() << ":mfit2plus " << ix << " " << _mfit2plus[ix]/GeV2 << "\n"; output << "newdef " << name() << ":m_12T " << ix << " " << _m12T[ix]/GeV2 << "\n"; output << "newdef " << name() << ":mfit2T " << ix << " " << _mfit2T[ix]/GeV2 << "\n"; } else { output << "insert " << name() << ":r_10 " << ix << " " << _r10[ix] << "\n"; output << "insert " << name() << ":r_20 " << ix << " " << _r20[ix] << "\n"; output << "insert " << name() << ":r_1plus " << ix << " " << _r1plus[ix] << "\n"; output << "insert " << name() << ":r_2plus " << ix << " " << _r2plus[ix] << "\n"; output << "insert " << name() << ":r_1T " << ix << " " << _r1T[ix] << "\n"; output << "insert " << name() << ":r_2T " << ix << " " << _r2T[ix] << "\n"; output << "insert " << name() << ":m_120 " << ix << " " << _m120[ix]/GeV2 << "\n"; output << "insert " << name() << ":mfit20 " << ix << " " << _mfit20[ix]/GeV2 << "\n"; output << "insert " << name() << ":m_12plus " << ix << " " << _m12plus[ix]/GeV2 << "\n"; output << "insert " << name() << ":mfit2plus " << ix << " " << _mfit2plus[ix]/GeV2 << "\n"; output << "insert " << name() << ":m_12T " << ix << " " << _m12T[ix]/GeV2 << "\n"; output << "insert " << name() << ":mfit2T " << ix << " " << _mfit2T[ix]/GeV2 << "\n"; } } ScalarFormFactor::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BaryonFormFactor.h��������������������������������������������0000644�0001750�0001750�00000032445�11754474773�023646� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_BaryonFormFactor_H #define HERWIG_BaryonFormFactor_H // // This is the declaration of the BaryonFormFactor class. // #include "ThePEG/Interface/Interfaced.h" #include "BaryonFormFactor.fh" #include "ThePEG/Config/Complex.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * The BaryonFormFactor class is the base class for the implementation * of the form-factors for the weak decay of a baryon. * * This is designed so that the form factors can be used for both the semi-leptonic * decays and using factorization for hadronic weak decays. * * The form factors are given below for the decay \f$X(p_0)\to Y(p_1)\f$ with * \f$q_\mu=(p_0-p_1)_\mu\f$. * * * The form-factors are defined to be * * \f[\bar{u}(p_1) \left[ \gamma^\mu \left(F^V_1+F^A_1 \gamma_5\right) * +\frac{i}{(m_0+m_1)}\sigma_{\mu\nu}q^\nu\left(F^V_2+F^A_2\gamma_5\right) * +\frac1{(m_0+m_1)}q^\mu\left(F^V_3+F^A_3\gamma_5\right)\right] u(p_0) \f] * * for the \f$\frac12\to\frac12\f$ transition and * * \f[\bar{u}^\alpha(p_1) \left[ g_{\alpha\mu}\left(G^V_1+G^A_1 \gamma_5\right) * +\frac1{(m_0+m_1)}p_{0\alpha}\gamma_\mu\left(G^V_2+G^A_2\gamma_5\right) * +\frac1{(m_0+m_1)^2}p_{0\alpha}p_{1\mu}\left(G^V_3+G^A_3\gamma_5\right)\right.\f] * \f[ \left. * +\frac1{(m_0+m_1)^2}p_{0\alpha}q_\mu\left(G^V_4+G^A_4\gamma_5\right)\right] * \gamma_5 u(p_0) * \f] * for the \f$\frac12\to\frac32\f$ transition. * * These definitions differ from those in the liturature because we have divided some * terms by the sum of the baryon masses to ensure that the form-factors are all * dimensionless. * * In many applications, particularly for the decay of baryons containing a heavy * quark, an alternative version of the form factors in terms of the velocities * of the baryons is used. This form is * * \f[\bar{u}(v') \left[ \gamma^\mu \left(F_1-G_1 \gamma_5\right) * v^\mu \left(F_2-G_2 \gamma_5\right) * {v'}^\mu \left(F_3-G_3\gamma_5\right)\right] u(v) \f] * * for the \f$\frac12\to\frac12\f$ transition and * * \f[\bar{u}^\alpha(v') \left[ v_\alpha\gamma_\mu\left(N_1-K_1 \gamma_5\right) * +v_\alpha v^\mu \left(N_2-K_2 \gamma_5\right) * +v_\alpha {v'}^\mu \left(N_3-K_3 \gamma_5\right) * +g_\alpha^\mu \left(N_4-K_4 \gamma_5\right)\right] * \gamma_5 u(v) * \f] * for the \f$\frac12\to\frac32\f$ transition. * * In terms of these form factors the form factors we use are * * \f[F^V_1= F_1+\frac12(m_0+m_1)\left(\frac{F_2}{m_0}+\frac{F_3}{m_1}\right)\f] * \f[F^V_2=\frac12(m_0+m_1)\left(\frac{F_2}{m_0}+\frac{F_3}{m_1}\right)\f] * \f[F^V_3=\frac12(m_0+m_1)\left(\frac{F_2}{m_0}-\frac{F_3}{m_1}\right)\f] * \f[F^A_1=-G_1+\frac12(m_0-m_1)\left(\frac{G_2}{m_0}+\frac{G_3}{m_1}\right)\f] * \f[F^A_2=-\frac12(m_0+m_1)\left(\frac{G_2}{m_0}+\frac{G_3}{m_1}\right)\f] * \f[F^A_3=\frac12(m_0+m_1)\left(-\frac{G_2}{m_0}+\frac{G_3}{m_1}\right)\f] * * for the \f$\frac12\to\frac12\f$ transition and * * \f[G_1^V = N_4\f] * \f[G_2^V = N_1\frac{(m_0+m_1)}{m_0}\f] * \f[G_3^V = \frac{(m_0+m_1)^2}{m_0}\left(\frac{N_2}{m_0}+\frac{N_3}{m_1}\right)\f] * \f[G_4^V = N_2\frac{(m_0+m_1)^2}{m^2_0}\f] * \f[G_1^A =-K_4\f] * \f[G_2^A =-K_1\frac{(m_0+m_1)}{m_0}\f] * \f[G_3^A =-\frac{(m_0+m_1)^2}{m_0}\left(\frac{K_2}{m_0}+\frac{K_3}{m_1}\right)\f] * \f[G_4^A =-K_2\frac{(m_0+m_1)^2}{m^2_0}\f] * * for the \f$\frac12\to\frac32\f$ transition. * * * @see ScalarFormFactor * */ class BaryonFormFactor: public Interfaced { public: /** * Default constructor */ BaryonFormFactor() : _numbermodes() {} /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} public: /** @name Functions to give information about the form factors available. */ //@{ /** * Find the location for a given pair of particle. * \param in PDG code for the incoming baryon. * \param out PDG code for the outgoing baryon. * \param cc particles or charge conjugates stored in form factor. * @return The location in the vectors storing the data. */ int formFactorNumber(int in,int out,bool & cc) const { int output(-1); unsigned int ix(0); if(_incomingid.size()==0){return output;} do { if(_incomingid[ix]== in && _outgoingid[ix]== out) { cc=false; output=ix; } else if (_incomingid[ix]==-in && _outgoingid[ix]==-out) { cc=true; output=ix; } ++ix; } while(ix<_incomingid.size()&&output<0); return output; } /** * Get the particle ids for an entry. * @param iloc The location in the list. * @param id0 The PDG code for the incoming baryon. * @param id1 The PDG code for the outgoing baryon. */ void particleID(int iloc,int& id0,int& id1) { id0=_incomingid[iloc]; id1=_outgoingid[iloc]; } /** * Information on the form factor. * @param iloc The location in the list. * @param ispin The spin of the incoming baryon. * @param ospin The spin of the outgoing baryon. * @param spect1 The PDG code of the first spectator quark. * @param spect2 The PDG code of the second spectator quark. * @param inquark The PDG code for decaying incoming quark. * @param outquark The PDG code for the outgoing quark produced in the decay. */ void formFactorInfo(int iloc,int & ispin,int & ospin,int & spect1, int & spect2, int & inquark,int & outquark) { ispin = _incomingJ[iloc]; ospin = _outgoingJ[iloc]; spect1 = _spectator1[iloc]; spect2 = _spectator2[iloc]; inquark = _inquark[iloc]; outquark = _outquark[iloc]; } /** * Information on the form factor. * @param in The PDG code of the incoming baryon. * @param out The PDG code of the outgoing baryon. * @param ispin The spin of the incoming baryon. * @param ospin The spin of the outgoing baryon. * @param spect1 The PDG code of the first spectator quark. * @param spect2 The PDG code of the second spectator quark. * @param inquark The PDG code for decaying incoming quark. * @param outquark The PDG code for the outgoing quark produced in the decay. */ void formFactorInfo(int in,int out,int & ispin,int & ospin,int & spect1, int & spect2, int & inquark,int & outquark) { bool dummy; unsigned int ix=formFactorNumber(in,out,dummy); formFactorInfo(ix,ispin,ospin,spect1,spect2,inquark,outquark); } /** * number of form factors */ unsigned int numberOfFactors() const {return _incomingid.size();} //@} public: /** @name Form Factors */ //@{ /** * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a * spin \f$\frac12\f$ baryon. * This method is virtual and must be implementented in classes * inheriting from this which include spin\f$\frac12\f$ to spin \f$\frac12\f$ * form factors. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming baryon. * @param id1 The PDG code of the outgoing baryon. * @param m0 The mass of the incoming baryon. * @param m1 The mass of the outgoing baryon. * @param f1v The form factor \f$F^V_1\f$. * @param f2v The form factor \f$F^V_2\f$. * @param f3v The form factor \f$F^V_3\f$. * @param f1a The form factor \f$F^A_1\f$. * @param f2a The form factor \f$F^A_2\f$. * @param f3a The form factor \f$F^A_3\f$. */ virtual void SpinHalfSpinHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, Energy m0, Energy m1, Complex & f1v,Complex & f2v,Complex & f3v, Complex & f1a,Complex & f2a,Complex & f3a); /** * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a * spin \f$\frac32\f$ baryon. * This method is virtual and must be implementented in classes * inheriting from this which include spin\f$\frac12\f$ to spin \f$\frac32\f$ * form factors. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming baryon. * @param id1 The PDG code of the outgoing baryon. * @param m0 The mass of the incoming baryon. * @param m1 The mass of the outgoing baryon. * @param g1v The form factor \f$G^V_1\f$. * @param g2v The form factor \f$G^V_2\f$. * @param g3v The form factor \f$G^V_3\f$. * @param g4v The form factor \f$G^V_4\f$. * @param g1a The form factor \f$G^A_1\f$. * @param g2a The form factor \f$G^A_2\f$. * @param g3a The form factor \f$G^A_3\f$. * @param g4a The form factor \f$G^A_4\f$. */ virtual void SpinHalfSpinThreeHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, Energy m0, Energy m1, Complex & g1v,Complex & g2v,Complex & g3v, Complex & g4v,Complex & g1a,Complex & g2a, Complex & g3a,Complex & g4a); //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; protected: /** * Add a form factor to the list. * @param in The PDG code of the incoming baryon. * @param out The PDG code of the outgoing baryon. * @param inspin The spin of the incoming baryon. * @param outspin The spin of the outgoing baryon. * @param spect1 The PDG code of the first spectator quark. * @param spect2 The PDG code of the second spectator quark. * @param inquark The PDG code for decaying incoming quark. * @param outquark The PDG code for the outgoing quark produced in the decay. */ void addFormFactor(int in,int out,int inspin, int outspin, int spect1, int spect2, int inquark,int outquark) { _incomingid.push_back(in); _outgoingid.push_back(out); _incomingJ.push_back(inspin); _outgoingJ.push_back(outspin); _spectator1.push_back(spect1); _spectator2.push_back(spect2); _inquark.push_back(inquark); _outquark.push_back(outquark); } /** * Set initial number of modes * @param nmodes The number of modes. */ void initialModes(unsigned int nmodes) {_numbermodes=nmodes;} /** * Get the initial number of modes */ unsigned int initialModes() const {return _numbermodes;} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe an abstract base class with persistent data. */ static AbstractClassDescription<BaryonFormFactor> initBaryonFormFactor; /** * Private and non-existent assignment operator. */ BaryonFormFactor & operator=(const BaryonFormFactor &); private: /** * the id's of the incoming particles */ vector<int> _incomingid; /** * the id's of the outgoing particles */ vector<int> _outgoingid; /** * spin of the incoming particle */ vector<int> _incomingJ; /** * spin of the outgoing particle */ vector<int> _outgoingJ; /** * the id of the first spectator quark */ vector<int> _spectator1; /** * the id of the second spectator quark */ vector<int> _spectator2; /** * the id of the decaying quark */ vector<int> _inquark; /** * the id of the outgoing quark */ vector<int> _outquark; /** * The initial number of modes */ unsigned int _numbermodes; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * BaryonFormFactor. */ template <> struct BaseClassTrait<Herwig::BaryonFormFactor,1> { /** Typedef of the base class of BaryonFormFactor. */ typedef Interfaced NthBase; }; /** * This template specialization informs ThePEG about the name of the * BaryonFormFactor class. */ template <> struct ClassTraits<Herwig::BaryonFormFactor> : public ClassTraitsBase<Herwig::BaryonFormFactor> { /** Return the class name. */ static string className() { return "Herwig::BaryonFormFactor"; } }; /** @endcond */ } #endif /* HERWIG_BaryonFormFactor_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/ScalarFormFactor.h��������������������������������������������0000644�0001750�0001750�00000034773�11754474773�023627� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ScalarFormFactor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ScalarFormFactor_H #define HERWIG_ScalarFormFactor_H // // This is the declaration of the ScalarFormFactor class. // #include "ThePEG/Interface/Interfaced.h" #include "ScalarFormFactor.fh" #include "ThePEG/Config/Complex.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The ScalarFormFactor class is the base class for the form factors * for the weak decay of scalar to scalar, vector and tensor mesons. * * This is designed so that the form factors can be used for both the semi-leptonic * decays and using factorization for hadronic weak decays. It also includes the * necessary form factors for the weak-radiative decays \f$B\to K\gamma\f$ * and \f$B\to K \ell^+\ell^-\f$. * * The form factors are given below for the decay \f$X(p_X)\to Y(p_Y)\f$ with * \f$q_\mu=(p_X-p_Y)_\mu\f$. * * The scalar-scalar form factor is defined by * * \f[ \langle Y(p_Y)|(V-A)_\mu|X(p_X)\rangle = * \left\{(p_X+p_Y)_\mu-\frac{m_X^2-m_Y^2}{q^2}q_\mu\right\}f_+(q^2) * +\left\{\frac{m_X^2-m_Y^2}{q^2}q_\mu\right\}f_0(q^2). \f] * * This is the form factor for the standard weak current. For the weak radiative * decays we also need the penguin current. * * \f[ \langle Y(p_Y)|J^\sigma_\mu|X(p_X)\rangle = \frac{i}{m_X+m_Y} * \left\{q^2(p_X+p_Y)_\mu-(m_X^2-m_Y^2)q_\mu\right\}f_T(q^2)\f] * * * The scalar-vector form factors are defined so that * * \f[ \langle Y(p_Y)|(V-A)_\mu|X(p_X)\rangle = -i\epsilon^*_\mu(m_X+m_Y)A_1(q^2) * +i(p_X+p_Y)_\mu\epsilon^*\cdot q \frac{A_2(q^2)}{m_X+m_Y}\f] *\f[\phantom{\langle Y(p_Y)|(V-A)_\mu|X(p_X)\rangle =} * +iq_\mu\epsilon^*\cdot q \frac{2m_Y}{q^2}\left(A_3(q^2)-A_0(q^2)\right) * +\epsilon_{\mu\nu\rho\sigma}\epsilon^{*\nu}p_X^\rho p_Y^\sigma \frac{2V(q^2)}{m_X+m_Y}, * \f] * * where the form factor \f$A_3(q^2)\f$ can be defined in terms of \f$A_1\f$ * and \f$A_2\f$ using * * \f[ A_3(q^2) = \frac{m_X+m_Y}{2m_Y}A_1(q^2)-\frac{m_X-m_Y}{2m_Y}A_2(q^2)\f] * * and \f$A_0(0)=A_3(0)\f$. * * As with the scalar to scalar currents this is the form factor for the standard * weak current. We also need the penguin current * * \f[ \langle Y(p_Y)|J^\sigma_\mu|X(p_X)\rangle = * i\epsilon_{\mu\nu\rho\sigma}\epsilon^{*\nu}p_X^\rho p_Y^\sigma2T_1(q^2) * +T_2(q^2)\left\{\epsilon^*_\mu(m_X^2-m^2_Y)-\epsilon^*\cdot q (p_X+p_Y)_\mu\right\} * \f]\f[\phantom{\langle Y(p_Y)|J^\sigma_\mu|X(p_X)\rangle = } * +T_3(q^2)\epsilon^*\cdot q\left\{q_\mu-\frac{q^2}{m^2_X-m^2_Y}(p_X+p_Y)_\mu\right\}, * \f] * * with \f$T_1(0)=T_2(0)\f$. * * The scalar-tensor form factors are defined as * * \f[ \langle Y(p_Y)|(V-A)_\mu|X(p_x)\rangle = * i h(q^2) \epsilon_{\mu\nu\lambda\rho} \epsilon^{*\nu\alpha} p_{Y\alpha} * (p_X+p_Y)^\lambda(p_X-p_Y)^\rho * -k(q^2)\epsilon^*_{\mu\nu}p_Y^\nu * \f]\f[\phantom{\langle Y(p_Y)|(V-A)_mu|X(p_x)\rangle =} * -b_+(q^2)\epsilon^*_{\alpha\beta}p_X^\alpha p_X^\beta(p_X+p_Y)_\mu * -b_-(q^2)\epsilon^*_{\alpha\beta}p_X^\alpha p_X^\beta(p_X-p_Y)_\mu. * \f] * * This is the base class and contains virtual methods which should return * the form factors described above. This class stores information on the * incoming and outgoing particles for a given form factor, the spin of the * outgoing particle and the id's of the quarks. * * Classes inheriting from this class should specify which combinations of * particles etc are allowed using the addFormFactor member. * * @see BaryonFormFactor */ class ScalarFormFactor: public Interfaced { public: /** * Default constructor */ ScalarFormFactor() : _numbermodes(0) {} 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} public: /** @name Functions to give information about the form factors available. */ //@{ /** * Find the location for a given pair of particle. * \param in PDG code for the incoming meson. * \param out PDG code for the outgoing meson. * \param cc particles or charge conjugates stored in form factor. * @return The location in the vectors storing the data. */ int formFactorNumber(int in,int out,bool & cc) const { if(_incomingid.size()==0) return -1; int output(-1);unsigned int ix(0); do { if(_incomingid[ix]== in && _outgoingid[ix]== out) { cc=false; output=ix; } else if (_incomingid[ix]==-in && _outgoingid[ix]==-out) { cc=true; output=ix; } else if(_incomingid[ix]==-in && _outgoingid[ix]==out && (abs(_outgoingid[ix])/100)%10==(abs(_outgoingid[ix])/10)%10) { cc=true; output=ix; } ++ix; } while(ix<_incomingid.size()&&output<0); return output; } /** * Get the particle ids for an entry. * @param iloc The location in the list. * @param id0 The PDG code for the incoming meson. * @param id1 The PDG code for the outgoing meson. */ void particleID(unsigned int iloc,int& id0,int& id1) const { id0=_incomingid[iloc]; id1=_outgoingid[iloc]; } /** * Information on the form factor. * @param iloc The location in the list. * @param ispin The spin of the outgoing meson. * @param spect The PDG code of the spectator quark. * @param inquark The PDG code for decaying incoming quark. * @param outquark The PDG code for the outgoing quark produced in the decay. */ void formFactorInfo(unsigned int & iloc,int & ispin,int & spect, int & inquark, int & outquark) const { ispin = _outgoingJ[iloc]; spect = _spectator[iloc]; inquark = _inquark[iloc]; outquark = _outquark[iloc]; } /** * Information on the form factor. * @param in The PDG code of the incoming meson. * @param out The PDG code of the outgoing meson. * @param ispin The spin of the outgoing meson. * @param spect The PDG code of the spectator quark. * @param inquark The PDG code for decaying incoming quark. * @param outquark The PDG code for the outgoing quark produced in the decay. */ void formFactorInfo(int in,int out,int & ispin, int & spect,int & inquark, int & outquark) const { bool dummy; unsigned int ix(formFactorNumber(in,out,dummy)); formFactorInfo(ix,ispin,spect,inquark,outquark); } /** * number of form factors */ unsigned int numberOfFactors() const {return _incomingid.size();} //@} public: /** @name Form Factors */ //@{ /** * The form factor for the weak decay of a scalar to a scalar. * This method is virtual and must be implementented in classes * inheriting from this which include scalar to scalar form factors. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param f0 The form factor \f$f_0\f$. * @param fp The form factor \f$f_+\f$. */ virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0,Energy m1,Complex & f0, Complex & fp) const; /** * The form factor for the weak decay of a scalar to a vector. This method is virtual * and must be implemented in classes inheriting from this which include scalar to * vector form factors. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param A0 The form factor \f$A_0\f$ * @param A1 The form factor \f$A_1\f$ * @param A2 The form factor \f$A_2\f$ * @param V The form factor \f$V\f$ */ virtual void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1, Energy m0, Energy m1,Complex & A0, Complex & A1,Complex & A2, Complex & V) const; /** * The form factor for the weak decay of a scalar to a tensor. This method is virtual * and must be implemented in classes inheriting from this which include scalar to * tensor form factors. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param h The form factor \f$h\f$. * @param k The form factor \f$k\f$. * @param bp The form factor \f$b_+\f$. * @param bm The form factor \f$b_-\f$. */ virtual void ScalarTensorFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0, Energy m1, complex<InvEnergy2> & h, Complex & k, complex<InvEnergy2> & bp, complex<InvEnergy2> & bm) const; /** * The form factor for the weak penguin decay of a scalar meson to a scalar meson. * This method is virtual * and must be implemented in classes inheriting from this which include scalar to * scalar penguin form factors. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param fT The form factor \f$f_T\f$. */ virtual void ScalarScalarSigmaFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0, Energy m1,Complex & fT) const; /** * The form factor for the weak penguin decay of a scalar meson to a vector meson. * This method is virtual * and must be implemented in classes inheriting from this which include scalar to * vector penguin form factors. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param T1 The form factor \f$T_1\f$. * @param T2 The form factor \f$T_2\f$. * @param T3 The form factor \f$T_3\f$. */ virtual void ScalarVectorSigmaFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0, Energy m1, Complex & T1, Complex & T2, Complex & T3) const; //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; protected: /** * Add a form factor to the list. * @param in The PDG code of the incoming meson. * @param out The PDG code of the outgoing meson. * @param spin The spin of the outgoing meson. * @param spect The PDG code of the spectator quark. * @param inquark The PDG code for decaying incoming quark. * @param outquark The PDG code for the outgoing quark produced in the decay. */ void addFormFactor(int in,int out,int spin, int spect, int inquark, int outquark) { _incomingid.push_back(in); _outgoingid.push_back(out); _outgoingJ.push_back(spin); _spectator.push_back(spect); _inquark.push_back(inquark); _outquark.push_back(outquark); } /** * Set initial number of modes * @param nmodes The number of modes. */ void initialModes(unsigned int nmodes) {_numbermodes=nmodes;} /** * Get the initial number of modes */ unsigned int initialModes() const {return _numbermodes;} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe an abstract base class with persistent data. */ static AbstractClassDescription<ScalarFormFactor> initScalarFormFactor; /** * Private and non-existent assignment operator. */ ScalarFormFactor & operator=(const ScalarFormFactor &); private: /** * the id's of the incoming particles */ vector<int> _incomingid; /** * the id's of the outgoing particles */ vector<int> _outgoingid; /** * spin of the outgoing particle */ vector<int> _outgoingJ; /** * the id of the spectator quark */ vector<int> _spectator; /** * the id of the decaying quark */ vector<int> _inquark; /** * the id of the outgoing quark */ vector<int> _outquark; /** * The initial number of modes */ unsigned int _numbermodes; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * ScalarFormFactor. */ template <> struct BaseClassTrait<Herwig::ScalarFormFactor,1> { /** Typedef of the base class of ScalarFormFactor. */ typedef Interfaced NthBase; }; /** * This template specialization informs ThePEG about the name of the * ScalarFormFactor class. */ template <> struct ClassTraits<Herwig::ScalarFormFactor> : public ClassTraitsBase<Herwig::ScalarFormFactor> { /** Return the class name. */ static string className() { return "Herwig::ScalarFormFactor"; } }; /** @endcond */ } #endif /* HERWIG_ScalarFormFactor_H */ �����herwig++-2.6.0.orig/Decay/FormFactors/LambdabExcitedLambdacSumRuleFormFactor.cc���������������������0000644�0001750�0001750�00000011150�11754474773�030151� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the LambdabExcitedLambdacSumRuleFormFactor class. // #include "LambdabExcitedLambdacSumRuleFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; LambdabExcitedLambdacSumRuleFormFactor::LambdabExcitedLambdacSumRuleFormFactor() { _xi1=0.29; _rho2=2.01; // modes handled by this form-factor // lambda_b to lambda_c1 addFormFactor(5122,14122,2,2,1,2,5,4); // lambda_b to lambda_c1* addFormFactor(5122,4124 ,2,4,1,2,5,4); } void LambdabExcitedLambdacSumRuleFormFactor:: persistentOutput(PersistentOStream & os) const { os << _xi1 << _rho2; } void LambdabExcitedLambdacSumRuleFormFactor:: persistentInput(PersistentIStream & is, int) { is >> _xi1 >> _rho2; } ClassDescription<LambdabExcitedLambdacSumRuleFormFactor> LambdabExcitedLambdacSumRuleFormFactor::initLambdabExcitedLambdacSumRuleFormFactor; // Definition of the static class description member. void LambdabExcitedLambdacSumRuleFormFactor::Init() { static ClassDocumentation<LambdabExcitedLambdacSumRuleFormFactor> documentation ("The LambdabExcitedLambdacSumRuleFormFactor class implements the" " form-factors for Lambda_b to Lambda_c1(*) from hep-ph/0012114.", "Lambda_b to Lambda_c1(*) used the formfactors from \\cite{Huang:2000xw}.", "%\\cite{Huang:2000xw}\n" "\\bibitem{Huang:2000xw}\n" " M.~Q.~Huang, J.~P.~Lee, C.~Liu and H.~S.~Song,\n" " %``Leading Isgur-Wise form factor of Lambda/b to Lambda/c1 transition using\n" " %QCD sum rules,''\n" " Phys.\\ Lett.\\ B {\\bf 502}, 133 (2001)\n" " [arXiv:hep-ph/0012114].\n" " %%CITATION = PHLTA,B502,133;%%\n" ); static Parameter<LambdabExcitedLambdacSumRuleFormFactor,double> interfaceXi ("Xi", "The intercept for the Isgur-Wise form-factor", &LambdabExcitedLambdacSumRuleFormFactor::_xi1, 0.29, 0.0, 10.0, false, false, true); static Parameter<LambdabExcitedLambdacSumRuleFormFactor,double> interfaceRho2 ("Rho2", "The slope parameter for the form-factor.", &LambdabExcitedLambdacSumRuleFormFactor::_rho2, 2.01, -10.0, 10.0, false, false, true); } void LambdabExcitedLambdacSumRuleFormFactor:: SpinHalfSpinHalfFormFactor(Energy2 q2,int,int,int,Energy m0,Energy m1, Complex & f1v,Complex & f2v,Complex & f3v, Complex & f1a,Complex & f2a,Complex & f3a) { useMe(); double omega(.5/m0/m1*(m0*m0+m1*m1-q2)),orr(1./sqrt(3.)); // the universal form-factor double xi=_xi1*(1.-_rho2*(omega-1.)); // the couplings in the velocity form Complex g1v,g1a,g2v,g2a,g3a,g3v; g1v = orr*(omega-1.)*xi; g1a = orr*(omega+1.)*xi; g2v =-2.*orr*xi; g3v = 0.; g2a =-2.*orr*xi; g3a = 0.; // convert to our form f1a = g1v-0.5*(m0-m1)*(g2v/m0+g3v/m1); f1v =-g1a-0.5*(m0+m1)*(g2a/m0+g3a/m1); f2a = 0.5*(m0+m1)*( g2v/m0+g3v/m1); f2v =-0.5*(m0+m1)*( g2a/m0+g3a/m1); f3a = 0.5*(m0+m1)*( g2v/m0-g3v/m1); f3v = 0.5*(m0+m1)*(-g2a/m0+g3a/m1); } void LambdabExcitedLambdacSumRuleFormFactor:: SpinHalfSpinThreeHalfFormFactor(Energy2 q2,int,int,int,Energy m0,Energy m1, Complex & f1v,Complex & f2v, Complex & f3v,Complex & f4v, Complex & f1a,Complex & f2a, Complex & f3a,Complex & f4a ) { useMe(); // the omega value double omega(.5/m0/m1*(m0*m0+m1*m1-q2)); // the universal form-factor double xi(_xi1*(1.-_rho2*(omega-1.))); // calculate the form factor // the couplings in the velocity form Complex N1,N2,N3,N4,K1,K2,K3,K4; Energy msum(m0+m1);Energy2 msum2(msum*msum); // in the form of the heavy quark papers N1 = xi; K1 = xi; N2 = 0.; K2 = 0.; N3 = 0.; K3 = 0.; N4 = 0.; K4 = 0.; // convert to our form f1v =-N4; f1a = K4; f2v =-N1*msum/m0; f2a = K1*msum/m0; f3v =-msum2/m0*(N2/m0+N3/m1); f3a = msum2/m0*(K2/m0+K3/m1); f4v =-msum2/m0/m0*N2; f4a = msum2/m0/m0*K2; } void LambdabExcitedLambdacSumRuleFormFactor::dataBaseOutput(ofstream & output, bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::LambdabExcitedLambdacSumRuleFormFactor " << name() << " \n"; output << "newdef " << name() << ":Xi " << _xi1 << " \n"; output << "newdef " << name() << ":Rho2 " << _rho2 << " \n"; BaryonFormFactor::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BaryonThreeQuarkModelFormFactor.cc����������������������������0000644�0001750�0001750�00000056315�11754474773�026763� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the BaryonThreeQuarkModelFormFactor class. // #include "BaryonThreeQuarkModelFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Utilities/GaussianIntegrator.h" #include "ThePEG/StandardModel/StandardModelBase.h" using namespace Herwig; // function for the integral of the partial width namespace { using namespace Herwig; struct BaryonCMatrixElement { typedef ThePEG::Ptr<BaryonThreeQuarkModelFormFactor>::pointer BaryonThreeQuarkModelFormFactorPtr; BaryonCMatrixElement(BaryonThreeQuarkModelFormFactorPtr in, Energy m0, Energy m1, int type, int mass, int id0,int id1) { _formFactor=in; _m0=m0; _m1=m1; _type=type; _mass=mass; _id0=id0; _id1=id1; } // calculate the integrand Energy operator() (double x) const { return _formFactor->widthIntegrand(x,_m0,_m1,_type,_mass,_id0,_id1); } /** Argument type for GaussianIntegrator */ typedef double ArgType; /** Return type for GaussianIntegrator */ typedef Energy ValType; private: // private variables BaryonThreeQuarkModelFormFactorPtr _formFactor; Energy _m0,_m1; int _type,_mass; int _id0,_id1; }; } BaryonThreeQuarkModelFormFactor::BaryonThreeQuarkModelFormFactor() : _initialize(false), _order(50),_mlight(420*MeV),_mstrange(570*MeV), _LambdaQ(2.5*GeV),_Lambdaqq(0.71*GeV),_Lambdasq(850*MeV),_Lambdass(1.0*GeV) { // modes handled by this form factor // lambda_b addFormFactor(5122,4122,2,2,1,2,5,4); // xi_b addFormFactor(5232,4232,2,2,2,3,5,4); addFormFactor(5132,4132,2,2,1,3,5,4); // sigma_b addFormFactor(5112,4112,2,2,1,1,5,4); addFormFactor(5212,4212,2,2,2,1,5,4); addFormFactor(5222,4222,2,2,2,2,5,4); // omega_b addFormFactor(5332,4332,2,2,3,3,5,4); // sigma_b-> sigma_c* addFormFactor(5112,4114,2,4,1,1,5,4); addFormFactor(5212,4214,2,4,2,1,5,4); addFormFactor(5222,4224,2,4,2,2,5,4); // omega_b -> omega_c* addFormFactor(5332,4334,2,4,3,3,5,4); // set the inital number of form factors initialModes(numberOfFactors()); } void BaryonThreeQuarkModelFormFactor::doinit() { BaryonFormFactor::doinit(); // initialization in needed if(_initialize) { GaussianIntegrator integrator; _C0.clear();_C1.clear();_C2.clear(); double pre(0.),root(2.*sqrt(6.)); double gamma1(1),gamma2(1),gamma3(sqrt(acos(-1.))); unsigned int ix,iy; for(iy=0;iy<2;++iy) { _mu2 = iy==0 ? sqr(_mlight /_LambdaQ) : sqr(_mstrange/_LambdaQ); for(ix=0;ix<=_order;++ix) { if(ix>0) gamma1*=ix; if(ix%2==1) gamma2*=(ix+1)/2.0;gamma3*=ix/2.0; if(ix%2==0) pre=pow(root,double(ix))/12.*gamma2/gamma1; else pre=pow(root,double(ix))/12.*gamma3/gamma1; // for the xi_0 function _a=_mu2;_b=2.;_N=ix; _C0.push_back(pre*integrator.value(*this,0.,1.)); // for the xi_1 function _a=_mu2;_b=1.; _C1.push_back(pre*integrator.value(*this,0.,1.)); // for the xi_2 function _a=0.; _b=0.; _C2.push_back(pre*integrator.value(*this,0.,1.)); } } generator()->log() << "Checking results of BaryonThreeQuarkModelFormFactor" << "vs results from the original paper\n"; // first matrix element Energy m0=getParticleData(5122)->mass(); Energy m1=getParticleData(4122)->mass(); double omegamax=0.5*(m0*m0+m1*m1)/m0/m1; BaryonCMatrixElement int1(this,m0,m1,1,0,5122,4122); Energy width = integrator.value(int1,1.,omegamax); generator()->log() << "Lambda_b0->Lambda_c+ decay" << width/6.582119E-22/MeV << "\n"; // second matrix element m0=getParticleData(5222)->mass(); m1=getParticleData(4222)->mass(); omegamax=0.5*(m0*m0+m1*m1)/m0/m1; int1 = BaryonCMatrixElement(this,m0,m1,2,0,5222,4222); width = integrator.value(int1,1.,omegamax); generator()->log() << "Sigma_b+->Sigma_c++ decay" << width/6.582119E-22/MeV << "\n"; // third matrix element m0=getParticleData(5232)->mass(); m1=getParticleData(4232)->mass(); omegamax=0.5*(m0*m0+m1*m1)/m0/m1; int1 = BaryonCMatrixElement(this,m0,m1,1,1,5232,4232); width = integrator.value(int1,1.,omegamax); generator()->log() << "Xi_b0->Xi_c+ decay" << width/6.582119E-22/MeV << "\n"; // fourth matrix element m0=getParticleData(5332)->mass(); m1=getParticleData(4332)->mass(); omegamax=0.5*(m0*m0+m1*m1)/m0/m1; int1 = BaryonCMatrixElement(this,m0,m1,2,2,5332,4332); width = integrator.value(int1,1.,omegamax); generator()->log() << "Omega_b-->Omega_c0 decay" << width/6.582119E-22/MeV << "\n"; // fifth matrix element m0=getParticleData(5222)->mass(); m1=getParticleData(4224)->mass(); omegamax=0.5*(m0*m0+m1*m1)/m0/m1; int1 = BaryonCMatrixElement(this,m0,m1,3,0,5222,4224); width = integrator.value(int1,1.,omegamax); generator()->log() << "Sigma_vb+->Sigma_c*++ decay" << width/6.582119E-22/MeV << "\n"; // fourth matrix element m0=getParticleData(5332)->mass(); m1=getParticleData(4334)->mass(); omegamax=0.5*(m0*m0+m1*m1)/m0/m1; int1 = BaryonCMatrixElement(this,m0,m1,3,2,5332,4334); width = integrator.value(int1,1.,omegamax); generator()->log() << "Omega_b-->Omega_c*0 decay" << width/6.582119E-22/MeV << "\n"; // output some plots for testing double lambdabar = -999.999; ofstream output("ThreeQuark.top"); output << "newdef font duplex" << endl; output << "title top \"Figure 3 from paper \"" << endl; output << "newdef limits x 1 1.44 y 0.5 1" << endl; for(unsigned int ix=0;ix<5;++ix) { double omegamin(1.),omegamax(1.44), step((omegamax-omegamin)/100.),omega(1.),xi; unsigned int ioff(0); if(ix==0){lambdabar=600*MeV/_LambdaQ;} else if(ix==1){lambdabar=650*MeV/_LambdaQ;} else if(ix==2){lambdabar=710*MeV/_LambdaQ;} else if(ix==3){lambdabar=750*MeV/_LambdaQ;} else if(ix==4){lambdabar=800*MeV/_LambdaQ;} for(;omega<omegamax;omega+=step) { vector<double> phi(phiFunction(omega)); double power(1.),numer(0.),denom(0.); for(unsigned int iy=0;iy<=_order;++iy) { numer+=phi[iy]*power*_C0[iy+ioff]; denom+=power*_C0[iy+ioff]; power*=lambdabar; } xi=numer/denom; output << omega << " " << xi << endl; } if(ix==0){output << "join red" << endl;} else if(ix==1){output << "join green" << endl;} else if(ix==2){output << "join blue" << endl;} else if(ix==3){output << "join cyan" << endl;} else if(ix==4){output << "join magenta" << endl;} } output << "new frame " << endl; output << "newdef font duplex" << endl; output << "title top \"Figure 6 from paper \"" << endl; output << "newdef limits x 1 1.4 y 0.5 1" << endl; for(unsigned int ix=0;ix<5;++ix) { double omegamin(1.),omegamax(1.45),step((omegamax-omegamin)/100.),omega(1.); unsigned int ioff(0); if(ix==0){lambdabar=600*MeV/_LambdaQ;} else if(ix==1){lambdabar=650*MeV/_LambdaQ;} else if(ix==2){lambdabar=710*MeV/_LambdaQ;} else if(ix==3){lambdabar=750*MeV/_LambdaQ;} else if(ix==4){lambdabar=800*MeV/_LambdaQ;} for(;omega<omegamax;omega+=step) { vector<double> phi(phiFunction(omega)); double power(1.),numer[2]={0.,0.},denom(0.); for(unsigned int iy=0;iy<=_order;++iy) { numer[0]+=phi[iy]*power*_C1[iy+ioff]; denom+=power*_C1[iy+ioff]; numer[1]+=power*_C2[iy+ioff]*(phi[iy]-phi[iy+2]); power*=lambdabar; } numer[1]/=(omega-1.); double xi1(numer[0]/denom); output << omega << " " << xi1 << endl; } if(ix==0){output << "join red" << endl;} else if(ix==1){output << "join green" << endl;} else if(ix==2){output << "join blue" << endl;} else if(ix==3){output << "join cyan" << endl;} else if(ix==4){output << "join magenta" << endl;} } output << "new frame " << endl; output << "newdef font duplex" << endl; output << "title top \"Figure 7 from paper \"" << endl; output << "newdef limits x 1 1.33 y 0.4 1" << endl; for(unsigned int ix=0;ix<5;++ix) { double omegamin(1.),omegamax(1.45),step((omegamax-omegamin)/100.),omega(1.); unsigned int ioff(_order+1); if(ix==0){lambdabar=800*MeV/_LambdaQ;} else if(ix==1){lambdabar=900*MeV/_LambdaQ;} else if(ix==2){lambdabar=1000*MeV/_LambdaQ;} else if(ix==3){lambdabar=1050*MeV/_LambdaQ;} else if(ix==4){lambdabar=1100*MeV/_LambdaQ;} for(;omega<omegamax;omega+=step) { vector<double> phi(phiFunction(omega)); double power(1.),numer[2]={0.,0.},denom(0.); for(unsigned int iy=0;iy<=_order;++iy) { numer[0]+=phi[iy]*power*_C1[iy+ioff]; denom+=power*_C1[iy+ioff]; numer[1]+=power*_C2[iy+ioff]*(phi[iy]-phi[iy+2]); power*=lambdabar; } numer[1]/=(omega-1.); double xi1(numer[0]/denom); output << omega << " " << xi1 << endl; } if(ix==0){output << "join red" << endl;} else if(ix==1){output << "join green" << endl;} else if(ix==2){output << "join blue" << endl;} else if(ix==3){output << "join cyan" << endl;} else if(ix==4){output << "join magenta" << endl;} } } } void BaryonThreeQuarkModelFormFactor::persistentOutput(PersistentOStream & os) const { os << _initialize << _order << ounit(_mlight,MeV) << ounit(_mstrange,MeV) << ounit(_LambdaQ,MeV) << ounit(_Lambdaqq,MeV) << ounit(_Lambdasq,MeV) << ounit(_Lambdass,MeV) << _C0 << _C1 << _C2;} void BaryonThreeQuarkModelFormFactor::persistentInput(PersistentIStream & is, int) { is >> _initialize >> _order >> iunit(_mlight,MeV) >> iunit(_mstrange,MeV) >> iunit(_LambdaQ,MeV) >> iunit(_Lambdaqq,MeV) >> iunit(_Lambdasq,MeV) >> iunit(_Lambdass,MeV) >> _C0 >> _C1 >> _C2;} ClassDescription<BaryonThreeQuarkModelFormFactor> BaryonThreeQuarkModelFormFactor::initBaryonThreeQuarkModelFormFactor; // Definition of the static class description member. void BaryonThreeQuarkModelFormFactor::Init() { static ClassDocumentation<BaryonThreeQuarkModelFormFactor> documentation ("The BaryonThreeQuarkModelFormFactor class implements" " the form-factors for semi-leptonic decay of baryon containing a" " heavy quark from PRD56, 348.", "The form factors from \\cite{Ivanov:1996fj} were used.", "%\\cite{Ivanov:1996fj}\n" "\\bibitem{Ivanov:1996fj}\n" " M.~A.~Ivanov, V.~E.~Lyubovitskij, J.~G.~Korner and P.~Kroll,\n" " ``Heavy baryon transitions in a relativistic three-quark model,''\n" " Phys.\\ Rev.\\ D {\\bf 56} (1997) 348\n" " [arXiv:hep-ph/9612463].\n" " %%CITATION = PHRVA,D56,348;%%\n" ); static Parameter<BaryonThreeQuarkModelFormFactor,unsigned int> interfaceOrder ("Order", "The order of terms to include in the series expansion of the form-factor.", &BaryonThreeQuarkModelFormFactor::_order, 10, 0, 1000, false, false, true); static Parameter<BaryonThreeQuarkModelFormFactor,Energy> interfaceLightMass ("LightMass", "The mass of the light quark", &BaryonThreeQuarkModelFormFactor::_mlight, GeV, .42*GeV, ZERO, 2.0*GeV, false, false, true); static Parameter<BaryonThreeQuarkModelFormFactor,Energy> interfaceStrangeMass ("StrangeMass", "The mass of the strange quark", &BaryonThreeQuarkModelFormFactor::_mstrange, GeV, .57*GeV, ZERO, 2.0*GeV, false, false, true); static Parameter<BaryonThreeQuarkModelFormFactor,Energy> interfaceLambdaQ ("LambdaQ", "Heavy Baryon Size Parameter", &BaryonThreeQuarkModelFormFactor::_LambdaQ, GeV, 2.5*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<BaryonThreeQuarkModelFormFactor,Energy> interfaceLambdaqq ("Lambdaqq", "The size parameter for light quarks", &BaryonThreeQuarkModelFormFactor::_Lambdaqq, GeV, 0.71*GeV, ZERO, 2.0*GeV, false, false, true); static Parameter<BaryonThreeQuarkModelFormFactor,Energy> interfaceLambdasq ("Lambdasq", "The size parameter for one strange quark", &BaryonThreeQuarkModelFormFactor::_Lambdasq, GeV, 0.85*GeV, ZERO, 2.0*GeV, false, false, true); static Parameter<BaryonThreeQuarkModelFormFactor,Energy> interfaceLambdass ("Lambdass", "The size parameter with two strange quarks.", &BaryonThreeQuarkModelFormFactor::_Lambdass, GeV, 1.0*GeV, ZERO, 2.0*GeV, false, false, true); static ParVector<BaryonThreeQuarkModelFormFactor,double> interfaceC0 ("C0", "The coefficient of the expansion for xi_0.", &BaryonThreeQuarkModelFormFactor::_C0, 0, 0, 0, -1E20, 1E20, false, false, true); static ParVector<BaryonThreeQuarkModelFormFactor,double> interfaceC1 ("C1", "The coefficient of the expansion for xi_1.", &BaryonThreeQuarkModelFormFactor::_C1, 0, 0, 0, -1E20, 1E20, false, false, true); static ParVector<BaryonThreeQuarkModelFormFactor,double> interfaceC2 ("C2", "The coefficient of the expansion for xi_2.", &BaryonThreeQuarkModelFormFactor::_C2, 0, 0, 0, -1E20, 1E20, false, false, true); static Switch<BaryonThreeQuarkModelFormFactor,bool> interfaceInitialize ("Initialize", "Initialize the coefficient for the expansion of the form-factor", &BaryonThreeQuarkModelFormFactor::_initialize, false, false, false); static SwitchOption interfaceInitializeInitialize (interfaceInitialize, "Yes", "Perform the initialize", true); static SwitchOption interfaceInitializeNoInitialize (interfaceInitialize, "No", "No initialization", false); } void BaryonThreeQuarkModelFormFactor:: SpinHalfSpinHalfFormFactor(Energy2 q2,int,int id0,int id1,Energy m0,Energy m1, Complex & f1v,Complex & f2v,Complex & f3v, Complex & f1a,Complex & f2a,Complex & f3a) { useMe(); // this model is based on heavy quark theory // therefore most of the factors are zero Complex g1v(0.),g1a(0.),g2v(0.),g2a(0.),g3a(0.),g3v(0.); // work out which light quark constant to use double lambdabar;unsigned int ioff(0); if(abs(id1)==4332) { lambdabar=_Lambdass/_LambdaQ; ioff=_order+1; } else if(abs(id1)==4232||abs(id1)==4132) { lambdabar=_Lambdasq/_LambdaQ; ioff=_order+1; } else { lambdabar=_Lambdaqq/_LambdaQ; } // the omega value double omega = 0.5/m0/m1*(m0*m0+m1*m1-q2); // calculate the form factor // the phi functions vector<double> phi(phiFunction(omega)); // use the xi0 functions if(abs(id0)==5122||abs(id0)==5232||abs(id0)==5132) { double power(1.),numer(0.),denom(0.); for(unsigned int ix=0;ix<=_order;++ix) { numer+=phi[ix]*power*_C0[ix+ioff]; denom+=power*_C0[ix+ioff]; power*=lambdabar; } g1v=numer/denom; g1a=g1v; } else { double power(1.),numer[2]={0.,0.},denom(0.); for(unsigned int ix=0;ix<=_order;++ix) { numer[0]+=phi[ix]*power*_C1[ix+ioff]; denom+=power*_C1[ix+ioff]; numer[1]+=power*_C2[ix+ioff]*(phi[ix]-phi[ix+2]); power*=lambdabar; } numer[1]/=(omega-1.); double xi1(numer[0]/denom),xi2(numer[1]/denom); // the couplings in the velocity form g1v = -(omega*xi1-(sqr(omega)-1.)*xi2)/3.; g1a = g1v; g2v = 2./3.*(xi1-(omega-1.)*xi2); g3v = g2v; g2a = 2./3.*(xi1-(omega+1.)*xi2); g3a =-g2a; } // convert to our form f1v = g1v+Complex(0.5*(m0+m1)*(g2v/m0+g3v/m1)); f1a =-g1a+Complex(0.5*(m0-m1)*(g2a/m0+g3a/m1)); f2v = 0.5*(m0+m1)*( g2v/m0+g3v/m1); f3v = 0.5*(m0+m1)*( g2v/m0-g3v/m1); f2a =-0.5*(m0+m1)*( g2a/m0+g3a/m1); f3a = 0.5*(m0+m1)*(-g2a/m0+g3a/m1); } void BaryonThreeQuarkModelFormFactor:: SpinHalfSpinThreeHalfFormFactor(Energy2 q2,int,int,int id1,Energy m0, Energy m1, Complex & f1v,Complex & f2v, Complex & f3v,Complex & f4v,Complex & f1a, Complex & f2a,Complex & f3a,Complex & f4a ) { useMe(); // work out which light quark constant to use double lambdabar;unsigned int ioff(0); if(abs(id1)==4334) { lambdabar=_Lambdass/_LambdaQ; ioff=_order+1; } else if(abs(id1)==4234||abs(id1)==4134||abs(id1)==3324) { lambdabar=_Lambdasq/_LambdaQ; ioff=_order+1; } else { lambdabar=_Lambdaqq/_LambdaQ; } // the omega value double omega=0.5/m0/m1*(m0*m0+m1*m1-q2); // calculate the form factor // the phi functions vector<double> phi=phiFunction(omega); double power(1.),numer[2]={0.,0.},denom(0.); for(unsigned int ix=0;ix<=_order;++ix) { numer[0]+=phi[ix]*power*_C1[ix+ioff]; denom+=power*_C1[ix+ioff]; numer[1]+=power*_C2[ix+ioff]*(phi[ix]-phi[ix+2]); power*=lambdabar; } numer[1]/=(omega-1.); double xi1=numer[0]/denom; double xi2=numer[1]/denom; // couplings in the velocity form Complex g1v,g2v,g3v,g4v,g1a,g2a,g3a,g4a; double orr(1./sqrt(3.)); Energy msum(m0+m1); Energy2 msum2(msum*msum); g1v = 2.*orr*xi1; g1a = -g1v; g2v = orr*(xi1-(omega-1)*xi2); g2a = orr*(xi1-(omega+1)*xi2); g3v = 0.; g3a = 0.; g4v = -2.*orr*xi2; g4a = -g4v; // convert to our form f1v = g1v; f1a =-g1a; f2v = g2v*msum/m0; f2a =-g2a*msum/m0; f3v = msum2/m0*(g3v/m0+g4v/m1); f3a =-msum2/m0*(g3a/m0+g4a/m1); f4v = msum2/m0/m0*g3v; f4a =-msum2/m0/m0*g3a; } void BaryonThreeQuarkModelFormFactor::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::BaryonThreeQuarkModelFormFactor " << name() << " \n"; output << "newdef " << name() << ":Order " << _order << " \n"; output << "newdef " << name() << ":LightMass " << _mlight/GeV << " \n"; output << "newdef " << name() << ":StrangeMass " << _mstrange/GeV << " \n"; output << "newdef " << name() << ":LambdaQ " << _LambdaQ/GeV << " \n"; output << "newdef " << name() << ":Lambdaqq " << _Lambdaqq/GeV << " \n"; output << "newdef " << name() << ":Lambdasq " << _Lambdasq/GeV << " \n"; output << "newdef " << name() << ":Lambdass " << _Lambdass/GeV << " \n"; // the number of terms to include in the sum for the form-factors for(unsigned int ix=0;ix<_C0.size();++ix) output << "insert " << name() << ":C0 " << ix << " " << _C0[ix] << " \n"; for(unsigned int ix=0;ix<_C1.size();++ix) output << "insert " << name() << ":C1 " << ix << " " << _C1[ix] << " \n"; for(unsigned int ix=0;ix<_C2.size();++ix) output << "insert " << name() << ":C2 " << ix << " " << _C2[ix] << " \n"; BaryonFormFactor::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } double BaryonThreeQuarkModelFormFactor::operator ()(double x) const { // convert the integration variable double y=(1.-x)/x; double output =exp(-24.*_mu2*y)*y; // the integrals double I,Im2; SN(y,_N,Im2,I); double Nfact=0.5*_N+1.0; output *= (_a+Nfact/24./(1.+y))*I+1./12./(1.+y)*(_b-Nfact)*Im2; return output; } void BaryonThreeQuarkModelFormFactor::SN(double y, int N, double & SNm2, double & SN) const { // special cases for the low lying values if(N==0) { double root=sqrt((1.+y)*(3.+y)); SN = 0.5/y*sqrt((1.+y)/(3.+y))*log((root+y)/(root-y)); SNm2 = 0.5/(y+3.)*(SN+(1.+y)/(3.+4.*y)); } else if(N==1) { SN = sqrt(1.+y)/y*asin(y/sqrt(1.+y)/sqrt(3.+y)); SNm2 = 1./(3.+y)*sqrt((1.+y)/(3.+4.*y)); } else if(N==2) { double root=sqrt((1.+y)*(3.+y)); SN = 1.; SNm2 = 0.5/y*sqrt((1.+y)/(3.+y))*log((root+y)/(root-y)); } // the general case else { int ix; double root; if(N%2==0) { SN=1.; ix=2; root=1.; } else { SN = sqrt(1.+y)/y*asin(y/sqrt(1.+y)/sqrt(3.+y)); ix=1; root=sqrt((1.+y)/(3.+4.*y)); } do { SNm2=SN; ix+=2; root*=(3.+4.*y)/(1.+y); SN=1.0/(ix-1.0)*(root+(ix-2.0)*(y+3.)*SNm2); } while(ix<N); } } // return the phi_N functions calculated using recursion vector<double> BaryonThreeQuarkModelFormFactor::phiFunction(double omega) { vector<double> output; double root(sqrt(omega*omega-1.)); output.push_back(1./root*log(omega+root)); if(omega<1.00001) output.back()=1.; if(_order>0) output.push_back(2./(omega+1.)); if(_order<2) return output; for(unsigned int ix=2;ix<=_order+2;++ix) { output.push_back(2./ix/(omega+1.)*(1.+(ix-1)*output[ix-2])); } return output; } Energy BaryonThreeQuarkModelFormFactor::widthIntegrand(double omega,Energy m0, Energy m1, int type, int ,int id0, int id1) { // prefactors double omegamax=0.5*(m0*m0+m1*m1)/m0/m1; double pi=acos(-1.); InvEnergy kw=sqr(generator()->standardModel()->fermiConstant()) /8./pi/pi/pi*m1*m1*m1/6.*(omegamax-omega)*sqrt(omega*omega-1.); Energy2 q2 = sqr(m0)+sqr(m1)-2.*m0*m1*omega; if(type<=2) { Complex f1v,f2v,f3v,f1a,f2a,f3a; SpinHalfSpinHalfFormFactor(q2,0,id0,id1,m0,m1,f1v,f2v,f3v,f1a,f2a,f3a); Complex left =f1v-f1a-f2v-double((m0-m1)/(m0+m1))*f2a; Complex right =f1v+f1a-f2v+double((m0-m1)/(m0+m1))*f2a; double g1v = 0.5*( left+right).real(); double g2v = m0*(f2v+f3v).real()/(m0+m1); double g3v = m1*(f2v-f3v).real()/(m0+m1); double g1a = -0.5*(+right-left).real(); double g2a = -m0*(f2a+f3a).real()/(m0+m1); double g3a = -m1*(f2a-f3a).real()/(m0+m1); Energy Hpp = -2.*sqrt(m0*m1*(omega-1.))*g1v+2.*sqrt(m0*m1*(omega+1))*g1a; Energy Hmm = -2.*sqrt(m0*m1*(omega-1.))*g1v-2.*sqrt(m0*m1*(omega+1))*g1a; Energy Hp0 = (sqrt(2.*m0*m1*(omega-1))*((m0+m1)*g1v+m1*(omega+1)*g2v+m0*(omega+1)*g3v)- sqrt(2.*m0*m1*(omega+1))*((m0-m1)*g1a-m1*(omega-1)*g2a-m0*(omega-1)*g3a))/sqrt(q2); Energy Hm0 = (sqrt(2.*m0*m1*(omega-1))*((m0+m1)*g1v+m1*(omega+1)*g2v+m0*(omega+1)*g3v)+ sqrt(2.*m0*m1*(omega+1))*((m0-m1)*g1a-m1*(omega-1)*g2a-m0*(omega-1)*g3a))/sqrt(q2); return kw*sqr(0.04)*(sqr(Hpp)+sqr(Hmm)+sqr(Hp0)+sqr(Hm0)); } else { Complex f1v,f2v,f3v,f4v,f1a,f2a,f3a,f4a; double g1v,g2v,g3v,g4v,g1a,g2a,g3a,g4a; SpinHalfSpinThreeHalfFormFactor(q2,0,id0,id1,m0,m1, f1v,f2v,f3v,f4v, f1a,f2a,f3a,f4a); g1v = f1v.real(); g1a = -f1a.real(); g2v = m0/(m0+m1)*f2v.real(); g2a =-m0/(m0+m1)*f2a.real(); g3v = sqr(m0/(m0+m1))*f4v.real(); g3a =-sqr(m0/(m0+m1))*f4a.real(); g4v = m0*m1/sqr(m0+m1)*(f3v.real()-f4v.real()); g4a =-m0*m1/sqr(m0+m1)*(f3a.real()-f4a.real()); Energy HppC = +sqrt(2./3.)*sqrt(m0*m1*(omega-1))*(g1v-2.*(omega+1)*g2v) -sqrt(2./3.)*sqrt(m0*m1*(omega+1))*(g1a-2.*(omega-1)*g2a); Energy HmmC = -sqrt(2./3.)*sqrt(m0*m1*(omega-1))*(g1v-2.*(omega+1)*g2v) -sqrt(2./3.)*sqrt(m0*m1*(omega+1))*(g1a-2.*(omega-1)*g2a); Energy HppbC = -sqrt(2.*m0*m1*(omega-1))*g1v -sqrt(2.*m0*m1*(omega+1))*g1a; Energy HmmbC = sqrt(2.*m0*m1*(omega-1))*g1v -sqrt(2.*m0*m1*(omega+1))*g1a; Energy Hp0C = ( -2./sqrt(3.)*sqrt(m0*m1*(omega-1))* ((m0*omega-m1)*g1v-(m0-m1)*(omega+1)*g2v+m1*(sqr(omega)-1)*g3v+m0*(sqr(omega)-1)*g4v) -2./sqrt(3.)*sqrt(m0*m1*(omega+1))* ((m0*omega-m1)*g1a+(m0+m1)*(omega-1)*g2a+m1*(sqr(omega)-1)*g3a+m0*(sqr(omega)-1)*g4a))/sqrt(q2); Energy Hm0C = ( +2./sqrt(3.)*sqrt(m0*m1*(omega-1))* ((m0*omega-m1)*g1v-(m0-m1)*(omega+1)*g2v+m1*(sqr(omega)-1)*g3v+m0*(sqr(omega)-1)*g4v) -2./sqrt(3.)*sqrt(m0*m1*(omega+1))* ((m0*omega-m1)*g1a+(m0+m1)*(omega-1)*g2a+m1*(sqr(omega)-1)*g3a+m0*(sqr(omega)-1)*g4a))/sqrt(q2); return kw*sqr(0.04)*(sqr(HppC)+sqr(HmmC)+sqr(HppbC)+sqr(HmmbC)+sqr(Hp0C)+sqr(Hm0C)); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/ISGWFormFactor.cc���������������������������������������������0000644�0001750�0001750�00000050112�11754474773�023312� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ISGWFormFactor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ISGWFormFactor class. // #include "ISGWFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; ISGWFormFactor::ISGWFormFactor() { // default values of the parameters // fudge factor _kappa=0.7; // quark masses _mdown =0.33*GeV; _mup =0.33*GeV; _mstrange=0.55*GeV; _mcharm =1.82*GeV; _mbottom =5.12*GeV; // beta values _betaSud = 0.31*GeV; _betaSus = 0.34*GeV; _betaSuc = 0.39*GeV; _betaSub = 0.41*GeV; _betaPud = 0.27*GeV; _betaPus = 0.30*GeV; _betaPuc = 0.34*GeV; // the mixing for eta/eta' _thetaeta=-Constants::pi/18.; // B_u decays to d ubar addFormFactor(-521,-211 ,0,-2, 5, 1); addFormFactor(-521,-213 ,1,-2, 5, 1); addFormFactor(-521,-215 ,2,-2, 5, 1); addFormFactor(-521,-10213,1,-2, 5, 1); addFormFactor(-521,-20213,1,-2, 5, 1); addFormFactor(-521,-10211,0,-2, 5, 1); // B_u to uu (I=0) addFormFactor(-521, 221 ,0,-2, 5, 2); addFormFactor(-521, 331 ,0,-2, 5, 2); addFormFactor(-521, 223 ,1,-2, 5, 2); addFormFactor(-521, 225 ,2,-2, 5, 2); addFormFactor(-521, 10223,1,-2, 5, 2); addFormFactor(-521, 20223,1,-2, 5, 2); addFormFactor(-521, 10221,0,-2, 5, 2); // B_u to uu (I=1) addFormFactor(-521, 111 ,0,-2, 5, 2); addFormFactor(-521, 113 ,1,-2, 5, 2); addFormFactor(-521, 115 ,2,-2, 5, 2); addFormFactor(-521, 10113,1,-2, 5, 2); addFormFactor(-521, 20113,1,-2, 5, 2); addFormFactor(-521, 10111,0,-2, 5, 2); // B_u decays to d ubar addFormFactor(-521,-321 ,0,-2, 5, 3); addFormFactor(-521,-323 ,1,-2, 5, 3); addFormFactor(-521,-325 ,2,-2, 5, 3); addFormFactor(-521,-10323,1,-2, 5, 3); addFormFactor(-521,-20323,1,-2, 5, 3); addFormFactor(-521,-10321,0,-2, 5, 3); // B_u decays to c ubar addFormFactor(-521, 421 ,0,-2, 5, 4); addFormFactor(-521, 423 ,1,-2, 5, 4); addFormFactor(-521, 425 ,2,-2, 5, 4); addFormFactor(-521, 10423,1,-2, 5, 4); addFormFactor(-521, 20423,1,-2, 5, 4); addFormFactor(-521, 10421,0,-2, 5, 4); // B_d to d dbar (I=0) addFormFactor(-511, 221 ,0, 1,-5,-1); addFormFactor(-511, 331 ,0, 1,-5,-1); addFormFactor(-511, 223 ,1, 1,-5,-1); addFormFactor(-511, 225 ,2, 1,-5,-1); addFormFactor(-511, 10223,1, 1,-5,-1); addFormFactor(-511, 20223,1, 1,-5,-1); addFormFactor(-511, 10221,0, 1,-5,-1); // B_d to d dbar (I=1) addFormFactor(-511, 111 ,0, 1,-5,-1); addFormFactor(-511, 113 ,1, 1,-5,-1); addFormFactor(-511, 115 ,2, 1,-5,-1); addFormFactor(-511, 10113,1, 1,-5,-1); addFormFactor(-511, 20113,1, 1,-5,-1); addFormFactor(-511, 10111,0, 1,-5,-1); // B_d to u dbar addFormFactor(-511, 211 ,0, 1,-5,-2); addFormFactor(-511, 213 ,1, 1,-5,-2); addFormFactor(-511, 215 ,2, 1,-5,-2); addFormFactor(-511, 10213,1, 1,-5,-2); addFormFactor(-511, 20213,1, 1,-5,-2); addFormFactor(-511, 10211,0, 1,-5,-2); // B_d to s dbar addFormFactor(-511, 311 ,0, 1,-5,-3); addFormFactor(-511, 313 ,1, 1,-5,-3); addFormFactor(-511, 315 ,2, 1,-5,-3); addFormFactor(-511, 10313,1, 1,-5,-3); addFormFactor(-511, 20313,1, 1,-5,-3); addFormFactor(-511, 10311,0, 1,-5,-3); // B_d decays to c dbar addFormFactor(-511, 411 ,0, 1,-5,-4); addFormFactor(-511, 413 ,1, 1,-5,-4); addFormFactor(-511, 415 ,2, 1,-5,-4); addFormFactor(-511, 10413,1, 1,-5,-4); addFormFactor(-511, 20413,1, 1,-5,-4); addFormFactor(-511, 10411,0, 1,-5,-4); // D0 to d ubar addFormFactor( 421,-211 ,0,-2, 4, 1); addFormFactor( 421,-213 ,1,-2, 4, 1); addFormFactor( 421,-215 ,2,-2, 4, 1); addFormFactor( 421,-10213,1,-2, 4, 1); addFormFactor( 421,-20213,1,-2, 4, 1); addFormFactor( 421,-10211,0,-2, 4, 1); // D0 to d ubar (I=1) addFormFactor( 421, 111 ,0,-2, 4, 2); addFormFactor( 421, 113 ,1,-2, 4, 2); addFormFactor( 421, 115 ,2,-2, 4, 2); addFormFactor( 421, 10113,1,-2, 4, 2); addFormFactor( 421, 20113,1,-2, 4, 2); addFormFactor( 421, 10111,0,-2, 4, 2); // D0 to d ubar (I=0) addFormFactor( 421, 221 ,0,-2, 4, 2); addFormFactor( 421, 331 ,0,-2, 4, 2); addFormFactor( 421, 223 ,1,-2, 4, 2); addFormFactor( 421, 225 ,2,-2, 4, 2); addFormFactor( 421, 10223,1,-2, 4, 2); addFormFactor( 421, 20223,1,-2, 4, 2); addFormFactor( 421, 10221,0,-2, 4, 2); // D0 to s ubar addFormFactor( 421,-321 ,0,-2, 4, 3); addFormFactor( 421,-323 ,1,-2, 4, 3); addFormFactor( 421,-325 ,2,-2, 4, 3); addFormFactor( 421,-10323,1,-2, 4, 3); addFormFactor( 421,-20323,1,-2, 4, 3); addFormFactor( 421,-10321,0,-2, 4, 3); // D+ to d dbar I=0 addFormFactor( 411, 221 ,0,-1, 4, 1); addFormFactor( 411, 331 ,0,-1, 4, 1); addFormFactor( 411, 223 ,1,-1, 4, 1); addFormFactor( 411, 225 ,2,-1, 4, 1); addFormFactor( 411, 10223,1,-1, 4, 1); addFormFactor( 411, 20223,1,-1, 4, 1); addFormFactor( 411, 10221,0,-1, 4, 1); // D+ to d dbar I=1 addFormFactor( 411, 111 ,0,-1, 4, 1); addFormFactor( 411, 113 ,1,-1, 4, 1); addFormFactor( 411, 115 ,2,-1, 4, 1); addFormFactor( 411, 10113,1,-1, 4, 1); addFormFactor( 411, 20113,1,-1, 4, 1); addFormFactor( 411, 10111,0,-1, 4, 1); // D+ to u dbar addFormFactor( 411, 211 ,0,-1, 4, 2); addFormFactor( 411, 213 ,1,-1, 4, 2); addFormFactor( 411, 215 ,2,-1, 4, 2); addFormFactor( 411, 10213,1,-1, 4, 2); addFormFactor( 411, 20213,1,-1, 4, 2); addFormFactor( 411, 10211,0,-1, 4, 2); // D+ to s dbar addFormFactor( 411,-311 ,0,-1, 4, 3); addFormFactor( 411,-313 ,1,-1, 4, 3); addFormFactor( 411,-315 ,2,-1, 4, 3); addFormFactor( 411,-10313,1,-1, 4, 3); addFormFactor( 411,-20313,1,-1, 4, 3); addFormFactor( 411,-10311,0,-1, 4, 3); // set the initial number of modes initialModes(numberOfFactors()); } void ISGWFormFactor::doinit() { ScalarFormFactor::doinit(); // set up the quark masses _mquark.resize(5); _mquark[0]=_mdown; _mquark[1]=_mup; _mquark[2]=_mstrange; _mquark[3]=_mcharm; _mquark[4]=_mbottom; // and the beta values _betaS.resize(5,vector<Energy>(5)); _betaP.resize(5,vector<Energy>(5)); _betaS[0][0] = _betaSud;_betaP[0][0] = _betaPud; _betaS[1][0] = _betaSud;_betaP[1][0] = _betaPud; _betaS[2][0] = _betaSus;_betaP[2][0] = _betaPus; _betaS[3][0] = _betaSuc;_betaP[3][0] = _betaPuc; _betaS[4][0] = _betaSub;_betaP[4][0] = ZERO ; _betaS[0][1] = _betaSud;_betaP[0][1] = _betaPud; _betaS[1][1] = _betaSud;_betaP[1][1] = _betaPud; _betaS[2][1] = _betaSus;_betaP[2][1] = _betaPus; _betaS[3][1] = _betaSuc;_betaP[3][1] = _betaPuc; _betaS[4][1] = _betaSub;_betaP[4][1] = ZERO ; _betaS[0][2] = _betaSus;_betaP[0][2] = _betaPus; _betaS[1][2] = _betaSus;_betaP[1][2] = _betaPus; _betaS[2][2] = ZERO ;_betaP[2][2] = ZERO ; _betaS[3][2] = ZERO ;_betaP[3][2] = ZERO ; _betaS[4][2] = ZERO ;_betaP[4][2] = ZERO ; _betaS[0][3] = _betaSuc;_betaP[0][3] = _betaPuc; _betaS[1][3] = _betaSuc;_betaP[1][3] = _betaPuc; _betaS[2][3] = ZERO ;_betaP[2][3] = ZERO ; _betaS[3][3] = ZERO ;_betaP[3][3] = ZERO ; _betaS[4][3] = ZERO ;_betaP[4][3] = ZERO ; _betaS[0][4] = ZERO ;_betaP[0][4] = ZERO ; _betaS[1][4] = ZERO ;_betaP[1][4] = ZERO ; _betaS[2][4] = ZERO ;_betaP[2][4] = ZERO ; _betaS[3][4] = ZERO ;_betaP[3][4] = ZERO ; _betaS[4][4] = ZERO ;_betaP[4][4] = ZERO ; } void ISGWFormFactor::persistentOutput(PersistentOStream & os) const { os << _kappa << ounit(_mdown,GeV) << ounit(_mup,GeV) << ounit(_mstrange,GeV) << ounit(_mcharm,GeV) << ounit(_mbottom,GeV) << ounit(_betaSud,GeV) << ounit(_betaSus,GeV) << ounit(_betaSuc,GeV) << ounit(_betaSub,GeV) << ounit(_betaPud,GeV) << ounit(_betaPus,GeV) << ounit(_betaPuc,GeV) << _thetaeta << ounit(_mquark,GeV) << ounit(_betaS,GeV) << ounit(_betaP,GeV); } void ISGWFormFactor::persistentInput(PersistentIStream & is, int) { is >> _kappa >> iunit(_mdown,GeV) >> iunit(_mup,GeV) >> iunit(_mstrange,GeV) >> iunit(_mcharm,GeV) >> iunit(_mbottom,GeV) >> iunit(_betaSud,GeV) >> iunit(_betaSus,GeV) >> iunit(_betaSuc,GeV) >> iunit(_betaSub,GeV) >> iunit(_betaPud,GeV) >> iunit(_betaPus,GeV) >> iunit(_betaPuc,GeV) >> _thetaeta >> iunit(_mquark,GeV) >> iunit(_betaS,GeV) >> iunit(_betaP,GeV); } ClassDescription<ISGWFormFactor> ISGWFormFactor::initISGWFormFactor; // Definition of the static class description member. void ISGWFormFactor::Init() { static ClassDocumentation<ISGWFormFactor> documentation ("The ISGWFormFactor class implements the ISGW model of" "Phys. Rev. D39, 799 (1989) for the scalar meson form-factors.", "The form factor model of ISGW \\cite{Isgur:1988gb} together with the" "form factors for the term which are supressed by the lepton mass from" "\\cite{Scora:1989ys,Isgur:1990jf}", "\\bibitem{Isgur:1988gb} N.~Isgur, D.~Scora, B.~Grinstein and M.~B.~Wise,\n" "Phys.\\ Rev.\\ D {\\bf 39} (1989) 799.\n" "%%CITATION = PHRVA,D39,799;%%\n" "\\bibitem{Scora:1989ys} D.~Scora and N.~Isgur, \n" "Phys.\\ Rev.\\ D {\\bf 40} (1989) 1491.\n" "%%CITATION = PHRVA,D40,1491;%%\n" "\\bibitem{Isgur:1990jf} N.~Isgur and M.~B.~Wise,\n" "Phys.\\ Rev.\\ D {\\bf 43} (1991) 819.\n" "%%CITATION = PHRVA,D43,819;%%\n"); static Parameter<ISGWFormFactor,double> interfaceKappa ("Kappa", "The relavistic compensation factor of the ISGW model", &ISGWFormFactor::_kappa, 0.7, 0.0, 1.0, false, false, true); static Parameter<ISGWFormFactor,Energy> interfaceDownMass ("DownMass", "The mass of the down quark in the ISGW model (this is a consituent mass)", &ISGWFormFactor::_mdown, GeV, 0.33*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ISGWFormFactor,Energy> interfaceUpMass ("UpMass", "The mass of the up quark in the ISGW model (this is a consituent mass)", &ISGWFormFactor::_mup, GeV, 0.33*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ISGWFormFactor,Energy> interfaceStrangeMass ("StrangeMass", "The mass of the strange quark in the ISGW model (this is a consituent mass)", &ISGWFormFactor::_mstrange, GeV, 0.55*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ISGWFormFactor,Energy> interfaceCharmMass ("CharmMass", "The mass of the charm quark in the ISGW model (this is a consituent mass)", &ISGWFormFactor::_mcharm, GeV, 1.82*GeV, ZERO, 3.0*GeV, false, false, true); static Parameter<ISGWFormFactor,Energy> interfaceBottomMass ("BottomMass", "The mass of the bottom quark in the ISGW model (this is a consituent mass)", &ISGWFormFactor::_mbottom, GeV, 5.12*GeV, 3.0*GeV, 10.0*GeV, false, false, true); static Parameter<ISGWFormFactor,Energy> interfaceBetaSud ("BetaSud", "The variational parameter for s-wave ud mesons", &ISGWFormFactor::_betaSud, GeV, 0.31*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ISGWFormFactor,Energy> interfaceBetaSus ("BetaSus", "The variational parameter for s-wave us mesons", &ISGWFormFactor::_betaSus, GeV, 0.34*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ISGWFormFactor,Energy> interfaceBetaSuc ("BetaSuc", "The variational parameter for s-wave uc mesons", &ISGWFormFactor::_betaSuc, GeV, 0.39*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ISGWFormFactor,Energy> interfaceBetaSub ("BetaSub", "The variational parameter for s-wave ub mesons", &ISGWFormFactor::_betaSub, GeV, 0.41*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ISGWFormFactor,Energy> interfaceBetaPud ("BetaPud", "The variational parameter for p-wave ud mesons", &ISGWFormFactor::_betaPud, GeV, 0.27*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ISGWFormFactor,Energy> interfaceBetaPus ("BetaPus", "The variational parameter for p-wave us mesons", &ISGWFormFactor::_betaPus, GeV, 0.30*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ISGWFormFactor,Energy> interfaceBetaPuc ("BetaPuc", "The variational parameter for p-wave uc mesons", &ISGWFormFactor::_betaPuc, GeV, 0.34*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ISGWFormFactor,double> interfaceThetaEtaEtaPrime ("ThetaEtaEtaPrime", "The eta-eta' mixing angle", &ISGWFormFactor::_thetaeta, -Constants::pi/18., -Constants::pi, Constants::pi, false, false, true); } // form-factor for scalar to scalar void ISGWFormFactor::ScalarScalarFormFactor(Energy2 q2, unsigned int iloc,int id0, int id1,Energy mY,Energy mX, Complex & f0,Complex & fp) const { Complex d1(0.),d2(0.); formFactor(q2,iloc,id0,id1,mY,mX,f0,fp,d1,d2); } // form-factor for scalar to vector void ISGWFormFactor::ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1,Energy mY, Energy mX, Complex & A0,Complex & A1, Complex & A2,Complex & V) const { formFactor(q2,iloc,id0,id1,mY,mX,A0,A1,A2,V); } // form-factor for scalar to tensor void ISGWFormFactor::ScalarTensorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1, Energy mY, Energy mX, complex<InvEnergy2> & h,Complex & k, complex<InvEnergy2> & bp, complex<InvEnergy2> & bm) const { Complex f1,f2,f3,f4; formFactor(q2,iloc,id0,id1,mY,mX,f1,f2,f3,f4); Energy msum(mX+mY); h = f1/sqr(msum); k = f2; bp = f3/sqr(msum); bm = f4/sqr(msum); } // member which does the work void ISGWFormFactor::formFactor(Energy2 q2, unsigned int iloc, int, int id1, Energy mY,Energy mX, Complex & f1,Complex & f2, Complex & f3, Complex & f4) const { useMe(); // work out the flavour of the heavy quarks etc int jspin,spect,inquark,outquark; formFactorInfo(iloc,jspin,spect,inquark,outquark); int ifl0(abs(inquark)),ifl1(abs(outquark)),ifls(abs(spect)); // determine the multiplet int ispin(abs(id1)/1000); // masses of the quarks Energy mQ(_mquark[ifl0-1]),mq(_mquark[ifl1-1]),ms(_mquark[ifls-1]); Energy mtildeX(mq+ms),mtildeY(mQ+ms); // wavefunction parameters for the mesons Energy betaX(ZERO),betaY(_betaS[ifl0-1][ifls-1]); // spin-0 outgoing mesons if(ispin==0&&jspin<2) { betaX=_betaS[ifl1-1][ifls-1]; } else { betaX=_betaP[ifl1-1][ifls-1]; } // compute the F_n function we will need Energy2 beta2XY(0.5*(betaX*betaX+betaY*betaY)),tm((mY-mX)*(mY-mX)); double betar(betaX*betaY/beta2XY),kappa2(_kappa*_kappa), slope((tm-q2)/(kappa2*beta2XY)); Energy mup(mq*mQ/(mQ+mq)),mum(mq*mQ/(mQ-mq)); double fn(sqrt(mtildeX/mtildeY)*betar*sqrt(betar)* exp(-0.25*ms*ms/(mtildeX*mtildeY)*slope)); // now we can compute the form-factors // for scalars if(jspin==0) { Complex fp,fm; // 1 1S0 if(ispin==0) { double yratio(ms/mtildeX*betaY*betaY/beta2XY); fp = fn*(1.+0.5*mQ/mum-0.25*mQ*mq/mup/mum*yratio); fm = fn*(1.-(mtildeX+mtildeY)*(0.5/mq-0.25/mup*yratio)); } // 1 3P0 else if(ispin<100) { // extra power of beta factors fn*=betar; fp = fn*ms*mQ*mq/sqrt(6.)/betaY/mtildeX/mum; fm =-fn*ms/betaY/sqrt(6.)*(mtildeX+mtildeY)/mtildeX; } // 2 1S0 else { throw Exception() << "ISGWFormFactor::formFactor" << " 2S not implemented" << Exception::abortnow; } // convert to the standard form f1 = Complex(q2/(mY*mY-mX*mX)*fm)+fp; f2 = fp; } // for vectors else if(jspin==1) { complex<Energy> f; complex<InvEnergy> g,ap,am; Energy2 betaX2(betaX*betaX),betaY2(betaY*betaY); // 1 3S1 if(ispin==0) { f = 2.*mtildeY*fn; g = 0.5*fn*(1./mq-0.5/mum*ms/mtildeX*betaY2/beta2XY); ap =-0.5*fn/mtildeX*(1.+ms/mQ*(betaY2-betaX2)/(betaX2+betaY2) -0.25*ms*ms/mum/mtildeY*betaX2*betaX2/beta2XY/beta2XY); am = 0.5*fn/mtildeX*(1.+ms/mQ+ms*ms/mq/mQ*betaX2/beta2XY* (1.-0.25*(mtildeX+mtildeY)/mtildeY*betaX2/beta2XY)); } // 1 3P1 else if(ispin==20) { fn*=betar; f =-fn*mtildeY*betaY*(1./mum+0.5*ms/mtildeY*beta2XY*slope/betaY2* (1./mq-0.5/mum*ms/mtildeX*betaY2/beta2XY)); g = 0.5*fn*ms/mtildeX/betaY; ap = 0.25*fn*ms*mQ/mtildeY/betaY/mum*(1.-0.5*ms*mq/mtildeX/mum*betaY2/beta2XY); am = -0.25*fn*ms*(mtildeX+mtildeY)/mq/betaY/mtildeY* (1.-0.5*ms*mq/mtildeX/mum*betaY2/beta2XY); } // 1 1P1 else if(ispin==10) { fn*=betar; double ort(1./sqrt(2.)); f = fn*ort*mtildeY*betaY/mup; g = 0.25*fn*mtildeY*betaY*ort/mq/mQ/mtildeX; Energy msum(mtildeX+mtildeY); ap = fn*ms*ort/betaY/mtildeY*(1.+0.5*mQ/mum -0.25*mq*mQ*ms/mum/mup/mtildeX*betaY2/beta2XY); am = fn*ms*ort/betaY/mtildeY*(1.-0.5/mq*msum +0.25*ms*betaY2/mup/beta2XY*msum/mtildeX); } // 2 1S0 else { throw Exception() << "ISGWFormFactor::formFactor" << " 2S not implemented" << Exception::abortnow; } // convert to the standard notation Energy msum(mX+mY),mdiff(mY-mX); Complex ii(0.,1.); f2 = -ii*f/msum; f3 = +ii*ap*msum; f1 = -ii*0.5/mX*(am*q2+ii*msum*f2-ii*mdiff*f3); f4 = ii*g*msum; } // for tensors else if(jspin==2) { Energy msum(mX+mY); fn *=betar/sqrt(2.); double betaXb2(betaX*betaX/beta2XY); // 1 3P2 if(ispin==0) { f1 = 0.5*fn*ms/mtildeY/betaY*(1./mq -0.5*ms/mtildeX/mum*betaY*betaY/beta2XY)*sqr(msum); f2 = 2.*fn*ms/betaY; f3 =-0.5*fn*ms/mtildeX/mQ/betaY* (1.-0.5*ms*mQ/mup/mtildeY*betaXb2 +0.25*ms*mQ/mtildeY/mum*betaXb2*(1.-0.5*ms*betaXb2/mtildeY))* sqr(msum); f4 = 0.5*fn*ms/mtildeX/mQ/betaY* (1.-0.5*ms*mQ/mup/mtildeY*betaXb2+ 0.25*ms*betaXb2/mq*(mtildeX+mtildeY)/mtildeY*(1.-0.5*ms*betaXb2/mtildeY))* sqr(msum); } } else { throw Exception() << "ISGWFormFactor::FormFactor spin = " << jspin << " but spins higher than 2 not implemented" << Exception::runerror; } // special for mixing double fact(1.); if(id1==ParticleID::eta) { if(ifl1==3&&ifls==3) fact = -2.*cos(_thetaeta)/sqrt(6.) - sin(_thetaeta)/sqrt(3.); else fact = cos(_thetaeta)/sqrt(6.) - sin(_thetaeta)/sqrt(3.); } else if(id1==ParticleID::etaprime) { if(ifl1==3&&ifls==3) fact = -2.*sin(_thetaeta)/sqrt(6.) + cos(_thetaeta)/sqrt(3.); else fact = sin(_thetaeta)/sqrt(6.) + cos(_thetaeta)/sqrt(3.); } else if(ifl1==ifls&&ifl1<3) { if(abs(ifl1)==1&&int(id1/10)%100==1) fact = -sqrt(0.5); else fact = sqrt(0.5); } f1*=fact; f2*=fact; f3*=fact; f4*=fact; } void ISGWFormFactor::dataBaseOutput(ofstream & output,bool header,bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::ISGWFormFactor " << name() << "\n"; output << "newdef " << name() << ":Kappa " << _kappa << "\n"; output << "newdef " << name() << ":DownMass " << _mdown/GeV << "\n"; output << "newdef " << name() << ":UpMass " << _mup/GeV << "\n"; output << "newdef " << name() << ":StrangeMass " << _mstrange/GeV << "\n"; output << "newdef " << name() << ":CharmMass " << _mcharm/GeV << "\n"; output << "newdef " << name() << ":BottomMass " << _mbottom/GeV << "\n"; output << "newdef " << name() << ":BetaSud " << _betaSud/GeV << "\n"; output << "newdef " << name() << ":BetaSus " << _betaSus/GeV << "\n"; output << "newdef " << name() << ":BetaSuc " << _betaSuc/GeV << "\n"; output << "newdef " << name() << ":BetaSub " << _betaSub/GeV << "\n"; output << "newdef " << name() << ":BetaPud " << _betaPud/GeV << "\n"; output << "newdef " << name() << ":BetaPus " << _betaPus/GeV << "\n"; output << "newdef " << name() << ":BetaPuc " << _betaPuc/GeV << "\n"; output << "newdef " << name() << ":ThetaEtaEtaPrime " << _thetaeta << "\n"; ScalarFormFactor::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/ScalarFormFactor.cc�������������������������������������������0000644�0001750�0001750�00000014412�11754474773�023751� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ScalarFormFactor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ScalarFormFactor class. // #include "ScalarFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void ScalarFormFactor::doinit() { Interfaced::doinit(); // check the consistency of the parameters unsigned int isize=_incomingid.size(); if(isize!=_outgoingid.size() || isize!=_outgoingJ.size()|| isize!=_spectator.size() || isize!=_inquark.size()|| isize!=_outquark.size()) throw InitException() << "Inconsistent parameters in ScalarFormFactor::doinit() " << Exception::abortnow; } void ScalarFormFactor::persistentOutput(PersistentOStream & os) const { os << _incomingid << _outgoingid << _outgoingJ << _spectator << _inquark << _outquark << _numbermodes; } void ScalarFormFactor::persistentInput(PersistentIStream & is, int) { is >> _incomingid >> _outgoingid >> _outgoingJ >> _spectator >> _inquark >> _outquark >> _numbermodes; } AbstractClassDescription<ScalarFormFactor> ScalarFormFactor::initScalarFormFactor; // Definition of the static class description member. void ScalarFormFactor::Init() { static ClassDocumentation<ScalarFormFactor> documentation ("The ScalarFormFactor class is the base class for" " the implementation of the form factors for weak decays of scalar mesons."); static ParVector<ScalarFormFactor,int> interfaceIncoming ("Incoming", "The id of the incoming mesons.", &ScalarFormFactor::_incomingid, 0, 0, 0, -1000000, 1000000, false, false, true); static ParVector<ScalarFormFactor,int> interfaceOutgoing ("Outgoing", "The id of the outgoing mesons.", &ScalarFormFactor::_outgoingid, 0, 0, 0, -1000000, 1000000, false, false, true); static ParVector<ScalarFormFactor,int> interfaceSpin ("Spin", "The spin of the outgoing mesons to decide which form factors to use.", &ScalarFormFactor::_outgoingJ, 0, 0, 0, 0, 2, false, false, true); static ParVector<ScalarFormFactor,int> interfaceSpectator ("Spectator", "The PDG code for the spectator quark.", &ScalarFormFactor::_spectator, 0, 0, 0, -6, 6, false, false, true); static ParVector<ScalarFormFactor,int> interfaceInQuark ("InQuark", "The PDG code for the decaying quark.", &ScalarFormFactor::_inquark, 0, 0, 0, -6, 6, false, false, true); static ParVector<ScalarFormFactor,int> interfaceOutQuark ("OutQuark", "The PDG code for the quark produced in the decay.", &ScalarFormFactor::_outquark, 0, 0, 0, -6, 6, false, false, true); } // form-factor for scalar to scalar void ScalarFormFactor::ScalarScalarFormFactor(Energy2,unsigned int,int,int,Energy,Energy, Complex &,Complex &) const { throw Exception() << "Error in ScalarFormFactor::ScalarScalarFormFactor" << " not implemented" << Exception::abortnow; } // form-factor for scalar to vector void ScalarFormFactor::ScalarVectorFormFactor(Energy2,unsigned int,int,int,Energy,Energy, Complex &,Complex &, Complex &,Complex &) const { throw Exception() << "Error in ScalarFormFactor::ScalarVectorFormFactor" << " not implemented" << Exception::abortnow; } // form-factor for scalar to tensor void ScalarFormFactor::ScalarTensorFormFactor(Energy2,unsigned int,int,int,Energy,Energy, complex<InvEnergy2> & , Complex &, complex<InvEnergy2> &, complex<InvEnergy2> &) const { throw Exception() << "Error in ScalarFormFactor::ScalarTensorFormFactor" << " not implemented" << Exception::abortnow; } // form-factor for scalar to scalar (sigma) void ScalarFormFactor::ScalarScalarSigmaFormFactor(Energy2,unsigned int,int, int,Energy, Energy, Complex &) const { throw Exception() << "Error in ScalarFormFactor::ScalarScalarSigmaFormFactor" << " not implemented" << Exception::abortnow; } // form-factor for scalar to vector (sigma) void ScalarFormFactor::ScalarVectorSigmaFormFactor(Energy2,unsigned int,int,int, Energy, Energy, Complex &, Complex &, Complex &) const { throw Exception() << "Error in ScalarFormFactor::ScalarVectorSigmaFormFactor" << " not implemented" << Exception::abortnow; } void ScalarFormFactor::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::ScalarFormFactor " << name() << " \n"; for(unsigned int ix=0;ix<_incomingid.size();++ix) { if(ix<_numbermodes) { output << "newdef " << name() << ":Incoming " << ix << " " << _incomingid[ix] << "\n"; output << "newdef " << name() << ":Outgoing " << ix << " " << _outgoingid[ix] << "\n"; output << "newdef " << name() << ":Spin " << ix << " " << _outgoingJ[ix] << "\n"; output << "newdef " << name() << ":Spectator " << ix << " " << _spectator[ix] << "\n"; output << "newdef " << name() << ":InQuark " << ix << " " << _inquark[ix] << "\n"; output << "newdef " << name() << ":OutQuark " << ix << " " << _outquark[ix]<< "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incomingid[ix] << "\n"; output << "insert " << name() << ":Outgoing " << ix << " " << _outgoingid[ix] << "\n"; output << "insert " << name() << ":Spin " << ix << " " << _outgoingJ[ix] << "\n"; output << "insert " << name() << ":Spectator " << ix << " " << _spectator[ix] << "\n"; output << "insert " << name() << ":InQuark " << ix << " " << _inquark[ix] << "\n"; output << "insert " << name() << ":OutQuark " << ix << " " << _outquark[ix]<< "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/ISGW2FormFactor.cc��������������������������������������������0000644�0001750�0001750�00000144143�11754474773�023404� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ISGW2FormFactor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ISGW2FormFactor class. // #include "ISGW2FormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; ISGW2FormFactor::ISGW2FormFactor() { // include the a(omega) piece (off by default) _includeaW = false; // values of a_S at matching scale _alphamuQM=0.6; // the quark masses _mdown = 0.33*GeV; _mup = 0.33*GeV; _mstrange = 0.55*GeV; _mcharm = 1.82*GeV; _mbottom = 5.20*GeV; // 1 1S0 parameters // the wavefunction parameters _beta1S0ud = 0.41*GeV; _beta1S0us = 0.44*GeV; _beta1S0ss = 0.53*GeV; _beta1S0cu = 0.45*GeV; _beta1S0cs = 0.56*GeV; _beta1S0ub = 0.43*GeV; _beta1S0sb = 0.54*GeV; _beta1S0cc = 0.88*GeV; _beta1S0bc = 0.92*GeV; // 1 3S1 parameters // the wavefunction parameters _beta3S1ud = 0.30*GeV; _beta3S1us = 0.33*GeV; _beta3S1ss = 0.37*GeV; _beta3S1cu = 0.38*GeV; _beta3S1cs = 0.44*GeV; _beta3S1ub = 0.40*GeV; _beta3S1sb = 0.49*GeV; _beta3S1cc = 0.62*GeV; _beta3S1bc = 0.75*GeV; // 1P parameters // the wavefunction parameters _beta1Pud = 0.28*GeV; _beta1Pus = 0.30*GeV; _beta1Pss = 0.33*GeV; _beta1Pcu = 0.33*GeV; _beta1Pcs = 0.38*GeV; _beta1Pub = 0.35*GeV; _beta1Psb = 0.41*GeV; _beta1Pcc = 0.52*GeV; _beta1Pbc = 0.60*GeV; // relativistic correction factors _CfDrho = 0.889; _CfDKstar = 0.928; _CfDsKstar = 0.873; _CfDsphi = 0.911; _CfBrho = 0.905; _CfBDstar = 0.989; _CfBsKstar = 0.892; _CfBsDstar = 0.984; _CfBcDstar = 0.868; _CfBcpsi = 0.967; _CfBcBsstar = 1.0; _CfBcBstar = 1.0; // eta-eta' mixing angle _thetaeta = -Constants::pi/9.; // B_c to d cbar addFormFactor(-541,-411 ,0,-4, 5, 1); addFormFactor(-541,-413 ,1,-4, 5, 1); addFormFactor(-541,-415 ,2,-4, 5, 1); addFormFactor(-541, 10413,1,-2, 5, 1); addFormFactor(-541,-20413,1,-4, 5, 1); addFormFactor(-541, 10411,0, 4, 5, 1); // B_c to u cbar addFormFactor(-541,-421 ,0,-4, 5, 2); addFormFactor(-541,-423 ,1,-4, 5, 2); addFormFactor(-541,-425 ,2,-4, 5, 2); addFormFactor(-541,-10423,1,-4, 5, 2); addFormFactor(-541,-20423,1,-4, 5, 2); addFormFactor(-541,-10421,0,-4, 5, 2); // B_c to s cbar addFormFactor(-541,-431 ,0,-4, 5, 3); addFormFactor(-541,-433 ,1,-4, 5, 3); addFormFactor(-541,-435 ,2,-4, 5, 3); addFormFactor(-541,-10433,1,-4, 5, 3); addFormFactor(-541,-20433,1,-4, 5, 3); addFormFactor(-541,-10431,0, 4, 5, 3); // B_c decays to c cbar addFormFactor(-541, 441 ,0,-4, 5, 4); addFormFactor(-541, 443 ,1,-4, 5, 4); addFormFactor(-541, 445 ,2,-4, 5, 4); addFormFactor(-541, 10443,1,-4, 5, 4); addFormFactor(-541, 20443,1,-4, 5, 4); addFormFactor(-541, 10441,0, 4, 5, 4); // B_c to b dbar addFormFactor( 541, 511 ,0, 5,-4,-1); addFormFactor( 541, 513 ,1, 5,-4,-1); addFormFactor( 541, 515 ,2, 5,-4,-1); addFormFactor( 541, 10513,1, 5,-4,-1); addFormFactor( 541, 20513,1, 5,-4,-1); addFormFactor( 541, 10511,0, 5,-4,-1); // B_c to b ubar addFormFactor( 541, 521 ,0, 5,-4,-2); addFormFactor( 541, 523 ,1, 5,-4,-2); addFormFactor( 541, 525 ,2, 5,-4,-2); addFormFactor( 541, 10523,1, 5,-4,-2); addFormFactor( 541, 20523,1, 5,-4,-2); addFormFactor( 541, 10521,0, 5,-4,-2); // B_c decays to s bbar addFormFactor( 541, 531 ,0, 5,-4,-3); addFormFactor( 541, 533 ,1, 5,-4,-3); addFormFactor( 541, 535 ,2, 5,-4,-3); addFormFactor( 541, 10533,1, 5,-4,-3); addFormFactor( 541, 20533,1, 5,-4,-3); addFormFactor( 541, 10531,0, 5,-4,-3); // B_s to d sbar addFormFactor(-531, 311 ,0, 3,-5,-1); addFormFactor(-531, 313 ,1, 3,-5,-1); addFormFactor(-531, 315 ,2, 3,-5,-1); addFormFactor(-531, 10313,1, 3,-5,-1); addFormFactor(-531, 20313,1, 3,-5,-1); addFormFactor(-531, 10311,0, 3,-5,-1); // B_s to u sbar addFormFactor(-531, 321 ,0, 3,-5,-2); addFormFactor(-531, 323 ,1, 3,-5,-2); addFormFactor(-531, 325 ,2, 3,-5,-2); addFormFactor(-531, 10323,1, 3,-5,-2); addFormFactor(-531, 20323,1, 3,-5,-2); addFormFactor(-531, 10321,0, 3,-5,-2); // B_s to s sbar addFormFactor(-531, 221 ,0, 3,-5,-3); addFormFactor(-531, 331 ,0, 3,-5,-3); addFormFactor(-531, 333 ,1, 3,-5,-3); addFormFactor(-531, 335 ,2, 3,-5,-3); addFormFactor(-531, 10333,1, 3,-5,-3); addFormFactor(-531, 20333,1, 3,-5,-3); addFormFactor(-531, 10331,0, 3,-5,-3); // B_s decays to c sbar addFormFactor(-531, 431 ,0, 3,-5,-4); addFormFactor(-531, 433 ,1, 3,-5,-4); addFormFactor(-531, 435 ,2, 3,-5,-4); addFormFactor(-531, 10433,1, 3,-5,-4); addFormFactor(-531, 20433,1, 3,-5,-4); addFormFactor(-531, 10431,0, 3,-5,-4); // B_u decays to d ubar addFormFactor(-521,-211 ,0,-2, 5, 1); addFormFactor(-521,-213 ,1,-2, 5, 1); addFormFactor(-521,-215 ,2,-2, 5, 1); addFormFactor(-521,-10213,1,-2, 5, 1); addFormFactor(-521,-20213,1,-2, 5, 1); addFormFactor(-521,-10211,0,-2, 5, 1); // B_u to uu (I=0) addFormFactor(-521, 221 ,0,-2, 5, 2); addFormFactor(-521, 331 ,0,-2, 5, 2); addFormFactor(-521, 223 ,1,-2, 5, 2); addFormFactor(-521, 225 ,2,-2, 5, 2); addFormFactor(-521, 10223,1,-2, 5, 2); addFormFactor(-521, 20223,1,-2, 5, 2); addFormFactor(-521, 10221,0,-2, 5, 2); // B_u to uu (I=1) addFormFactor(-521, 111 ,0,-2, 5, 2); addFormFactor(-521, 113 ,1,-2, 5, 2); addFormFactor(-521, 115 ,2,-2, 5, 2); addFormFactor(-521, 10113,1,-2, 5, 2); addFormFactor(-521, 20113,1,-2, 5, 2); addFormFactor(-521, 10111,0,-2, 5, 2); // B_u decays to s ubar addFormFactor(-521,-321 ,0,-2, 5, 3); addFormFactor(-521,-323 ,1,-2, 5, 3); addFormFactor(-521,-325 ,2,-2, 5, 3); addFormFactor(-521,-10323,1,-2, 5, 3); addFormFactor(-521,-20323,1,-2, 5, 3); addFormFactor(-521,-10321,0,-2, 5, 3); // B_u decays to c ubar addFormFactor(-521, 421 ,0,-2, 5, 4); addFormFactor(-521, 423 ,1,-2, 5, 4); addFormFactor(-521, 425 ,2,-2, 5, 4); addFormFactor(-521, 10423,1,-2, 5, 4); addFormFactor(-521, 20423,1,-2, 5, 4); addFormFactor(-521, 10421,0,-2, 5, 4); // B_d decays to d dbar (I=0) addFormFactor(-511, 221 ,0, 1,-5,-1); addFormFactor(-511, 331 ,0, 1,-5,-1); addFormFactor(-511, 223 ,1, 1,-5,-1); addFormFactor(-511, 225 ,2, 1,-5,-1); addFormFactor(-511, 10223,1, 1,-5,-1); addFormFactor(-511, 20223,1, 1,-5,-1); addFormFactor(-511, 10221,0, 1,-5,-1); // B_d decays to d dbar (I=1) addFormFactor(-511, 111 ,0, 1,-5,-1); addFormFactor(-511, 113 ,1, 1,-5,-1); addFormFactor(-511, 115 ,2, 1,-5,-1); addFormFactor(-511, 10113,1, 1,-5,-1); addFormFactor(-511, 20113,1, 1,-5,-1); addFormFactor(-511, 10111,0, 1,-5,-1); // B_d decays to u dbar addFormFactor(-511, 211 ,0, 1,-5,-2); addFormFactor(-511, 213 ,1, 1,-5,-2); addFormFactor(-511, 215 ,2, 1,-5,-2); addFormFactor(-511, 10213,1, 1,-5,-2); addFormFactor(-511, 20213,1, 1,-5,-2); addFormFactor(-511, 10211,0, 1,-5,-2); // B_d decays to s dbar addFormFactor(-511, 311 ,0, 1,-5,-3); addFormFactor(-511, 313 ,1, 1,-5,-3); addFormFactor(-511, 315 ,2, 1,-5,-3); addFormFactor(-511, 10313,1, 1,-5,-3); addFormFactor(-511, 20313,1, 1,-5,-3); addFormFactor(-511, 10311,0, 1,-5,-3); // B_d decays to c dbar addFormFactor(-511, 411 ,0, 1,-5,-4); addFormFactor(-511, 413 ,1, 1,-5,-4); addFormFactor(-511, 415 ,2, 1,-5,-4); addFormFactor(-511, 10413,1, 1,-5,-4); addFormFactor(-511, 20413,1, 1,-5,-4); addFormFactor(-511, 10411,0, 1,-5,-4); // D_s to d sbar addFormFactor( 431, 311,0,-3, 4, 1); addFormFactor( 431, 313,1,-3, 4, 1); addFormFactor( 431, 315,2,-3, 4, 1); addFormFactor( 431, 10313,1,-3, 4, 1); addFormFactor( 431, 20313,1,-3, 4, 1); addFormFactor( 431, 10311,0,-3, 4, 1); // D_s to u sbar addFormFactor( 431, 321,0,-3, 4, 2); addFormFactor( 431, 323,1,-3, 4, 2); addFormFactor( 431, 325,2,-3, 4, 2); addFormFactor( 431, 10323,1,-3, 4, 2); addFormFactor( 431, 20323,1,-3, 4, 2); addFormFactor( 431, 10321,0,-3, 4, 2); // D_s to s sbar addFormFactor( 431, 221 ,0,-3, 4, 3); addFormFactor( 431, 331 ,0,-3, 4, 3); addFormFactor( 431, 333 ,1,-3, 4, 3); addFormFactor( 431, 335 ,2,-3, 4, 3); addFormFactor( 431, 10333,1,-3, 4, 3); addFormFactor( 431, 20333,1,-3, 4, 3); addFormFactor( 431, 10331,0,-3, 4, 3); // D0 to d ubar addFormFactor( 421,-211 ,0,-2, 4, 1); addFormFactor( 421,-213 ,1,-2, 4, 1); addFormFactor( 421,-215 ,2,-2, 4, 1); addFormFactor( 421,-10213,1,-2, 4, 1); addFormFactor( 421,-20213,1,-2, 4, 1); addFormFactor( 421,-10211,0,-2, 4, 1); // D0 to u ubar (I=1) addFormFactor( 421, 111 ,0,-2, 4, 2); addFormFactor( 421, 113 ,1,-2, 4, 2); addFormFactor( 421, 115 ,2,-2, 4, 2); addFormFactor( 421, 10113,1,-2, 4, 2); addFormFactor( 421, 20113,1,-2, 4, 2); addFormFactor( 421, 10111,0,-2, 4, 2); // D0 to u ubar (I=0) addFormFactor( 421, 221 ,0,-2, 4, 2); addFormFactor( 421, 331 ,0,-2, 4, 2); addFormFactor( 421, 223 ,1,-2, 4, 2); addFormFactor( 421, 225 ,2,-2, 4, 2); addFormFactor( 421, 10223,1,-2, 4, 2); addFormFactor( 421, 20223,1,-2, 4, 2); addFormFactor( 421, 10221,0,-2, 4, 2); // D0 to s ubar addFormFactor( 421,-321 ,0,-2, 4, 3); addFormFactor( 421,-323 ,1,-2, 4, 3); addFormFactor( 421,-325 ,2,-2, 4, 3); addFormFactor( 421,-10323,1,-2, 4, 3); addFormFactor( 421,-20323,1,-2, 4, 3); addFormFactor( 421,-10321,0,-2, 4, 3); // D+ to d dbar I=0 addFormFactor( 411, 221 ,0,-1, 4, 1); addFormFactor( 411, 331 ,0,-1, 4, 1); addFormFactor( 411, 223 ,1,-1, 4, 1); addFormFactor( 411, 225 ,2,-1, 4, 1); addFormFactor( 411, 10223,1,-1, 4, 1); addFormFactor( 411, 20223,1,-1, 4, 1); addFormFactor( 411, 10221,0,-1, 4, 1); // D+ to d dbar I=1 addFormFactor( 411, 111 ,0,-1, 4, 1); addFormFactor( 411, 113 ,1,-1, 4, 1); addFormFactor( 411, 115 ,2,-1, 4, 1); addFormFactor( 411, 10113,1,-1, 4, 1); addFormFactor( 411, 20113,1,-1, 4, 1); addFormFactor( 411, 10111,0,-1, 4, 1); // D+ to u dbar addFormFactor( 411, 211 ,0,-1, 4, 2); addFormFactor( 411, 213 ,1,-1, 4, 2); addFormFactor( 411, 215 ,2,-1, 4, 2); addFormFactor( 411, 10213,1,-1, 4, 2); addFormFactor( 411, 20213,1,-1, 4, 2); addFormFactor( 411, 10211,0,-1, 4, 2); // D+ to s dbar addFormFactor( 411,-311 ,0,-1, 4, 3); addFormFactor( 411,-313 ,1,-1, 4, 3); addFormFactor( 411,-315 ,2,-1, 4, 3); addFormFactor( 411,-10313,1,-1, 4, 3); addFormFactor( 411,-20313,1,-1, 4, 3); addFormFactor( 411,-10311,0,-1, 4, 3); // set the initial number of modes initialModes(numberOfFactors()); } void ISGW2FormFactor::doinit() { ScalarFormFactor::doinit(); // set up the quark masses _mquark.resize(5); _mquark[0]=_mdown; _mquark[1]=_mup; _mquark[2]=_mstrange; _mquark[3]=_mcharm; _mquark[4]=_mbottom; // value of alpha_S at the quark masses _alphaQ.resize(5); for(unsigned int ix=0;ix<5;++ix) { _alphaQ[ix]=alphaS(_mquark[ix],sqr(_mquark[ix])); } _beta1S0.resize(5,vector<Energy>(5)); _mass1S0.resize(5,vector<Energy>(5)); _beta3S1.resize(5,vector<Energy>(5)); _beta1P .resize(5,vector<Energy>(5)); _massPoh.resize(5,vector<Energy>(5)); _massPth.resize(5,vector<Energy>(5)); // set up the beta values _beta1S0[0][0] = _beta1S0ud;_beta3S1[0][0] = _beta3S1ud;_beta1P[0][0] = _beta1Pud; _beta1S0[1][0] = _beta1S0ud;_beta3S1[1][0] = _beta3S1ud;_beta1P[1][0] = _beta1Pud; _beta1S0[2][0] = _beta1S0us;_beta3S1[2][0] = _beta3S1us;_beta1P[2][0] = _beta1Pus; _beta1S0[3][0] = _beta1S0cu;_beta3S1[3][0] = _beta3S1cu;_beta1P[3][0] = _beta1Pcu; _beta1S0[4][0] = _beta1S0ub;_beta3S1[4][0] = _beta3S1ub;_beta1P[4][0] = _beta1Pub; _beta1S0[0][1] = _beta1S0ud;_beta3S1[0][1] = _beta3S1ud;_beta1P[0][1] = _beta1Pud; _beta1S0[1][1] = _beta1S0ud;_beta3S1[1][1] = _beta3S1ud;_beta1P[1][1] = _beta1Pud; _beta1S0[2][1] = _beta1S0us;_beta3S1[2][1] = _beta3S1us;_beta1P[2][1] = _beta1Pus; _beta1S0[3][1] = _beta1S0cu;_beta3S1[3][1] = _beta3S1cu;_beta1P[3][1] = _beta1Pcu; _beta1S0[4][1] = _beta1S0ub;_beta3S1[4][1] = _beta3S1ub;_beta1P[4][1] = _beta1Pub; _beta1S0[0][2] = _beta1S0us;_beta3S1[0][2] = _beta3S1us;_beta1P[0][2] = _beta1Pus; _beta1S0[1][2] = _beta1S0us;_beta3S1[1][2] = _beta3S1us;_beta1P[1][2] = _beta1Pus; _beta1S0[2][2] = _beta1S0ss;_beta3S1[2][2] = _beta3S1ss;_beta1P[2][2] = _beta1Pss; _beta1S0[3][2] = _beta1S0cs;_beta3S1[3][2] = _beta3S1cs;_beta1P[3][2] = _beta1Pcs; _beta1S0[4][2] = _beta1S0sb;_beta3S1[4][2] = _beta3S1sb;_beta1P[4][2] = _beta1Psb; _beta1S0[0][3] = _beta1S0cu;_beta3S1[0][3] = _beta3S1cu;_beta1P[0][3] = _beta1Pcu; _beta1S0[1][3] = _beta1S0cu;_beta3S1[1][3] = _beta3S1cu;_beta1P[1][3] = _beta1Pcu; _beta1S0[2][3] = _beta1S0cs;_beta3S1[2][3] = _beta3S1cs;_beta1P[2][3] = _beta1Pcs; _beta1S0[3][3] = _beta1S0cc;_beta3S1[3][3] = _beta3S1cc;_beta1P[3][3] = _beta1Pcc; _beta1S0[4][3] = _beta1S0bc;_beta3S1[4][3] = _beta3S1bc;_beta1P[4][3] = _beta1Pbc; _beta1S0[0][4] = _beta1S0ub;_beta3S1[0][4] = _beta3S1ub;_beta1P[0][4] = _beta1Pub; _beta1S0[1][4] = _beta1S0ub;_beta3S1[1][4] = _beta3S1ub;_beta1P[1][4] = _beta1Pub; _beta1S0[2][4] = _beta1S0sb;_beta3S1[2][4] = _beta3S1sb;_beta1P[2][4] = _beta1Psb; _beta1S0[3][4] = _beta1S0bc;_beta3S1[3][4] = _beta3S1bc;_beta1P[3][4] = _beta1Pbc; _beta1S0[4][4] = ZERO ;_beta3S1[4][4] = ZERO ;_beta1P[4][4] = ZERO ; // set up the values of mbar // get the particle data objects tcPDPtr p1S0[5][5],p3S1[5][5]; p1S0[0][0] = getParticleData(111); p3S1[0][0] = getParticleData(113); p1S0[1][0] = getParticleData(211); p3S1[1][0] = getParticleData(213); p1S0[2][0] = getParticleData(311); p3S1[2][0] = getParticleData(313); p1S0[3][0] = getParticleData(411); p3S1[3][0] = getParticleData(413); p1S0[4][0] = getParticleData(511); p3S1[4][0] = getParticleData(513); p1S0[0][1] = getParticleData(211); p3S1[0][1] = getParticleData(213); p1S0[1][1] = getParticleData(111); p3S1[1][1] = getParticleData(113); p1S0[2][1] = getParticleData(321); p3S1[2][1] = getParticleData(323); p1S0[3][1] = getParticleData(421); p3S1[3][1] = getParticleData(423); p1S0[4][1] = getParticleData(521); p3S1[4][1] = getParticleData(523); p1S0[0][2] = getParticleData(311); p3S1[0][2] = getParticleData(313); p1S0[1][2] = getParticleData(321); p3S1[1][2] = getParticleData(323); p1S0[2][2] = getParticleData(331); p3S1[2][2] = getParticleData(333); p1S0[3][2] = getParticleData(431); p3S1[3][2] = getParticleData(433); p1S0[4][2] = getParticleData(531); p3S1[4][2] = getParticleData(533); p1S0[0][3] = getParticleData(411); p3S1[0][3] = getParticleData(413); p1S0[1][3] = getParticleData(421); p3S1[1][3] = getParticleData(423); p1S0[2][3] = getParticleData(431); p3S1[2][3] = getParticleData(433); p1S0[3][3] = getParticleData(441); p3S1[3][3] = getParticleData(443); p1S0[4][3] = getParticleData(541); p3S1[4][3] = getParticleData(543); p1S0[0][4] = getParticleData(511); p3S1[0][4] = getParticleData(513); p1S0[1][4] = getParticleData(521); p3S1[1][4] = getParticleData(523); p1S0[2][4] = getParticleData(531); p3S1[2][4] = getParticleData(533); p1S0[3][4] = getParticleData(541); p3S1[3][4] = getParticleData(543); p1S0[4][4] = getParticleData(551); p3S1[4][4] = getParticleData(553); tcPDPtr p3P0[5][5],p3P1[5][5],p3P2[5][5],p1P1[5][5]; p3P0[0][0] = getParticleData(10111); p3P1[0][0] = getParticleData(20113); p3P0[1][0] = getParticleData(10211); p3P1[1][0] = getParticleData(20213); p3P0[2][0] = getParticleData(10311); p3P1[2][0] = getParticleData(20313); p3P0[3][0] = getParticleData(10411); p3P1[3][0] = getParticleData(20413); p3P0[4][0] = getParticleData(10511); p3P1[4][0] = getParticleData(20513); p3P0[0][1] = getParticleData(10211); p3P1[0][1] = getParticleData(20213); p3P0[1][1] = getParticleData(10111); p3P1[1][1] = getParticleData(20113); p3P0[2][1] = getParticleData(10321); p3P1[2][1] = getParticleData(20323); p3P0[3][1] = getParticleData(10421); p3P1[3][1] = getParticleData(20423); p3P0[4][1] = getParticleData(10521); p3P1[4][1] = getParticleData(20523); p3P0[0][2] = getParticleData(10311); p3P1[0][2] = getParticleData(20313); p3P0[1][2] = getParticleData(10321); p3P1[1][2] = getParticleData(20323); p3P0[2][2] = getParticleData(10331); p3P1[2][2] = getParticleData(20333); p3P0[3][2] = getParticleData(10431); p3P1[3][2] = getParticleData(20433); p3P0[4][2] = getParticleData(10531); p3P1[4][2] = getParticleData(20533); p3P0[0][3] = getParticleData(10411); p3P1[0][3] = getParticleData(20413); p3P0[1][3] = getParticleData(10421); p3P1[1][3] = getParticleData(20423); p3P0[2][3] = getParticleData(10431); p3P1[2][3] = getParticleData(20433); p3P0[3][3] = getParticleData(10441); p3P1[3][3] = getParticleData(20443); p3P0[4][3] = getParticleData(10541); p3P1[4][3] = getParticleData(20543); p3P0[0][4] = getParticleData(10511); p3P1[0][4] = getParticleData(20513); p3P0[1][4] = getParticleData(10521); p3P1[1][4] = getParticleData(20523); p3P0[2][4] = getParticleData(10531); p3P1[2][4] = getParticleData(20533); p3P0[3][4] = getParticleData(10541); p3P1[3][4] = getParticleData(20543); p3P0[4][4] = getParticleData(10551); p3P1[4][4] = getParticleData(20553); p1P1[0][0]=getParticleData(10113); p3P2[0][0]=getParticleData(115); p1P1[1][0]=getParticleData(10213); p3P2[1][0]=getParticleData(215); p1P1[2][0]=getParticleData(10313); p3P2[2][0]=getParticleData(315); p1P1[3][0]=getParticleData(10413); p3P2[3][0]=getParticleData(415); p1P1[4][0]=getParticleData(10513); p3P2[4][0]=getParticleData(515); p1P1[0][1]=getParticleData(10213); p3P2[0][1]=getParticleData(215); p1P1[1][1]=getParticleData(10113); p3P2[1][1]=getParticleData(115); p1P1[2][1]=getParticleData(10323); p3P2[2][1]=getParticleData(325); p1P1[3][1]=getParticleData(10423); p3P2[3][1]=getParticleData(425); p1P1[4][1]=getParticleData(10523); p3P2[4][1]=getParticleData(525); p1P1[0][2]=getParticleData(10313); p3P2[0][2]=getParticleData(315); p1P1[1][2]=getParticleData(10323); p3P2[1][2]=getParticleData(325); p1P1[2][2]=getParticleData(10333); p3P2[2][2]=getParticleData(335); p1P1[3][2]=getParticleData(10433); p3P2[3][2]=getParticleData(435); p1P1[4][2]=getParticleData(10533); p3P2[4][2]=getParticleData(535); p1P1[0][3]=getParticleData(10413); p3P2[0][3]=getParticleData(415); p1P1[1][3]=getParticleData(10423); p3P2[1][3]=getParticleData(425); p1P1[2][3]=getParticleData(10433); p3P2[2][3]=getParticleData(435); p1P1[3][3]=getParticleData(10443); p3P2[3][3]=getParticleData(445); p1P1[4][3]=getParticleData(10543); p3P2[4][3]=getParticleData(545); p1P1[0][4]=getParticleData(10513); p3P2[0][4]=getParticleData(515); p1P1[1][4]=getParticleData(10523); p3P2[1][4]=getParticleData(525); p1P1[2][4]=getParticleData(10533); p3P2[2][4]=getParticleData(535); p1P1[3][4]=getParticleData(10543); p3P2[3][4]=getParticleData(545); p1P1[4][4]=getParticleData(10553); p3P2[4][4]=getParticleData(555); // calculate the masses for(unsigned int ix=0;ix<5;++ix) { for(unsigned int iy=0;iy<5;++iy) { Energy m1S0,m3S1,m3P0,m3P1,m3P2,m1P1; if(!p1S0[ix][iy]) { generator()->log() << "Error in ISGW2FormFactor::doinit don't have " << "ParticleData object for 1S0 " << ix << " " << iy << " setting mass to zero\n"; m1S0 = ZERO; } else { m1S0 = p1S0[ix][iy]->mass(); } if(!p3S1[ix][iy]) { generator()->log() << "Error in ISGW2FormFactor::doinit don't have " << "ParticleData object for 3S1 " << ix << " " << iy << " setting mass to zero\n"; m3S1 = ZERO; } else { m3S1 = p3S1[ix][iy]->mass(); } if(!p3P0[ix][iy]) { generator()->log() << "Error in ISGW2FormFactor::doinit don't have " << "ParticleData object for 3P0 " << ix << " " << iy << " setting mass to zero\n"; m3P0 = ZERO; } else { m3P0 = p3P0[ix][iy]->mass(); } if(!p3P1[ix][iy]) { generator()->log() << "Error in ISGW2FormFactor::doinit don't have " << "ParticleData object for 3P1 " << ix << " " << iy << " setting mass to zero\n"; m3P1 = ZERO; } else { m3P1 = p3P1[ix][iy]->mass(); } if(!p3P2[ix][iy]) { generator()->log() << "Error in ISGW2FormFactor::doinit don't have " << "ParticleData object for 3P2 " << ix << " " << iy << " setting mass to zero\n"; m3P2 = ZERO; } else { m3P2 = p3P2[ix][iy]->mass(); } if(!p1P1[ix][iy]) { generator()->log() << "Error in ISGW2FormFactor::doinit don't have " << "ParticleData object for 1P1 " << ix << " " << iy << " setting mass to zero\n"; m1P1 = ZERO; } else { m1P1 = p1P1[ix][iy]->mass(); } // 1S0 _mass1S0[ix][iy] = 0.75 *m3S1+0.25 *m1S0; // 1p 1/2 _massPoh[ix][iy] = 0.75 *m3P1+0.25 *m3P0; // 1p 3/2 _massPth[ix][iy] = 0.625*m3P2+0.375*m1P1; } } for(unsigned int ix=0;ix<3;++ix) { for(unsigned int iy=0;iy<3;++iy) { Energy mtemp = (4.*_massPoh[ix][iy]+8.*_massPth[ix][iy])/12.; _massPoh[ix][iy]=mtemp; _massPth[ix][iy]=mtemp; } } } void ISGW2FormFactor::persistentOutput(PersistentOStream & os) const { os << ounit(_mdown,GeV) << ounit(_mup,GeV) << ounit(_mstrange,GeV) << ounit(_mcharm,GeV) << ounit(_mbottom,GeV) << ounit(_beta1S0ud,GeV) << ounit(_beta1S0us,GeV) << ounit(_beta1S0ss,GeV) << ounit(_beta1S0cu,GeV) << ounit(_beta1S0cs,GeV) << ounit(_beta1S0ub,GeV) << ounit(_beta1S0sb,GeV) << ounit(_beta1S0cc,GeV) << ounit(_beta1S0bc,GeV) << ounit(_beta3S1ud,GeV) << ounit(_beta3S1us,GeV) << ounit(_beta3S1ss,GeV) << ounit(_beta3S1cu,GeV) << ounit(_beta3S1cs,GeV) << ounit(_beta3S1ub,GeV) << ounit(_beta3S1sb,GeV) << ounit(_beta3S1cc,GeV) << ounit(_beta3S1bc,GeV) << ounit(_beta1Pud ,GeV) << ounit(_beta1Pus ,GeV) << ounit(_beta1Pss ,GeV) << ounit(_beta1Pcu ,GeV) << ounit(_beta1Pcs ,GeV) << ounit(_beta1Pub ,GeV) << ounit(_beta1Psb ,GeV) << ounit(_beta1Pcc ,GeV) << ounit(_beta1Pbc ,GeV) << _alphamuQM << _CfDrho << _CfDKstar << _CfDsKstar << _CfDsphi << _CfBrho << _CfBDstar << _CfBsKstar << _CfBsDstar << _CfBcDstar << _CfBcpsi << _CfBcBsstar << _CfBcBstar << _thetaeta << ounit(_mquark,GeV) << _alphaQ << ounit(_beta1S0,GeV) << ounit(_mass1S0,GeV) << ounit(_beta3S1,GeV) << ounit(_beta1P,GeV) << ounit(_massPoh,GeV) << ounit(_massPth,GeV) << _includeaW; } void ISGW2FormFactor::persistentInput(PersistentIStream & is, int) { is >> iunit(_mdown,GeV) >> iunit(_mup,GeV) >> iunit(_mstrange,GeV) >> iunit(_mcharm,GeV) >> iunit(_mbottom,GeV) >> iunit(_beta1S0ud,GeV) >> iunit(_beta1S0us,GeV) >> iunit(_beta1S0ss,GeV) >> iunit(_beta1S0cu,GeV) >> iunit(_beta1S0cs,GeV) >> iunit(_beta1S0ub,GeV) >> iunit(_beta1S0sb,GeV) >> iunit(_beta1S0cc,GeV) >> iunit(_beta1S0bc,GeV) >> iunit(_beta3S1ud,GeV) >> iunit(_beta3S1us,GeV) >> iunit(_beta3S1ss,GeV) >> iunit(_beta3S1cu,GeV) >> iunit(_beta3S1cs,GeV) >> iunit(_beta3S1ub,GeV) >> iunit(_beta3S1sb,GeV) >> iunit(_beta3S1cc,GeV) >> iunit(_beta3S1bc,GeV) >> iunit(_beta1Pud ,GeV) >> iunit(_beta1Pus ,GeV) >> iunit(_beta1Pss ,GeV) >> iunit(_beta1Pcu ,GeV) >> iunit(_beta1Pcs ,GeV) >> iunit(_beta1Pub ,GeV) >> iunit(_beta1Psb ,GeV) >> iunit(_beta1Pcc ,GeV) >> iunit(_beta1Pbc ,GeV) >> _alphamuQM >> _CfDrho >> _CfDKstar >> _CfDsKstar >> _CfDsphi >> _CfBrho >> _CfBDstar >> _CfBsKstar >> _CfBsDstar >> _CfBcDstar >> _CfBcpsi >> _CfBcBsstar >> _CfBcBstar >> _thetaeta >> iunit(_mquark,GeV) >> _alphaQ >> iunit(_beta1S0,GeV) >> iunit(_mass1S0,GeV) >> iunit(_beta3S1,GeV) >> iunit(_beta1P,GeV) >> iunit(_massPoh,GeV) >> iunit(_massPth,GeV) >> _includeaW; } ClassDescription<ISGW2FormFactor> ISGW2FormFactor::initISGW2FormFactor; // Definition of the static class description member. void ISGW2FormFactor::Init() { static ClassDocumentation<ISGW2FormFactor> documentation ("The ISGW2FormFactor class implements the ISGW2 model of " "PRD52, 2783.", "The ISGW2 form factor model \\cite{Scora:1995ty} was used.", "\\bibitem{Scora:1995ty} D.~Scora and N.~Isgur," "Phys.\\ Rev.\\ D {\\bf 52} (1995) 2783 [arXiv:hep-ph/9503486].\n" "%%CITATION = PHRVA,D52,2783;%%\n"); static Parameter<ISGW2FormFactor,Energy> interfaceDownMass ("DownMass", "The mass of the down quark in the ISGW model (this is a consituent mass)", &ISGW2FormFactor::_mdown, GeV, 0.33*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceUpMass ("UpMass", "The mass of the up quark in the ISGW model (this is a consituent mass)", &ISGW2FormFactor::_mup, GeV, 0.33*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceStrangeMass ("StrangeMass", "The mass of the strange quark in the ISGW model (this is a consituent mass)", &ISGW2FormFactor::_mstrange, GeV, 0.55*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceCharmMass ("CharmMass", "The mass of the charm quark in the ISGW model (this is a consituent mass)", &ISGW2FormFactor::_mcharm, GeV, 1.82*GeV, ZERO, 3.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBottomMass ("BottomMass", "The mass of the bottom quark in the ISGW model (this is a consituent mass)", &ISGW2FormFactor::_mbottom, GeV, 5.20*GeV, 3.0*GeV, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1S0ud ("Beta1S0ud", "The beta wavefunction parameter for the ud meson in the 1 1S0 level", &ISGW2FormFactor::_beta1S0ud, GeV, 0.41*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1S0us ("Beta1S0us", "The beta wavefunction parameter for the us meson in the 1 1S0 level", &ISGW2FormFactor::_beta1S0us, GeV, 0.44*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1S0ss ("Beta1S0ss", "The beta wavefunction parameter for the ss meson in the 1 1S0 level", &ISGW2FormFactor::_beta1S0ss, GeV, 0.53*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1S0cu ("Beta1S0cu", "The beta wavefunction parameter for the cu meson in the 1 1S0 level", &ISGW2FormFactor::_beta1S0cu, GeV, 0.45*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1S0cs ("Beta1S0cs", "The beta wavefunction parameter for the cs meson in the 1 1S0 level", &ISGW2FormFactor::_beta1S0cs, GeV, 0.56*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1S0ub ("Beta1S0ub", "The beta wavefunction parameter for the ub meson in the 1 1S0 level", &ISGW2FormFactor::_beta1S0ub, GeV, 0.43*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1S0sb ("Beta1S0sb", "The beta wavefunction parameter for the sb meson in the 1 1S0 level", &ISGW2FormFactor::_beta1S0sb, GeV, 0.54*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1S0cc ("Beta1S0cc", "The beta wavefunction parameter for the cc meson in the 1 1S0 level", &ISGW2FormFactor::_beta1S0cc, GeV, 0.88*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1S0bc ("Beta1S0bc", "The beta wavefunction parameter for the bc meson in the 1 1S0 level", &ISGW2FormFactor::_beta1S0bc, GeV, 0.92*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1Pud ("Beta1Pud", "The beta wavefunction parameter for the ud meson in the 1P level", &ISGW2FormFactor::_beta1Pud, GeV, 0.28*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1Pus ("Beta1Pus", "The beta wavefunction parameter for the us meson in the 1P level", &ISGW2FormFactor::_beta1Pus, GeV, 0.30*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1Pss ("Beta1Pss", "The beta wavefunction parameter for the ss meson in the 1P level", &ISGW2FormFactor::_beta1Pss, GeV, 0.33*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1Pcu ("Beta1Pcu", "The beta wavefunction parameter for the cu meson in the 1P level", &ISGW2FormFactor::_beta1Pcu, GeV, 0.33*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1Pcs ("Beta1Pcs", "The beta wavefunction parameter for the cs meson in the 1P level", &ISGW2FormFactor::_beta1Pcs, GeV, 0.38*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1Pub ("Beta1Pub", "The beta wavefunction parameter for the ub meson in the 1P level", &ISGW2FormFactor::_beta1Pub, GeV, 0.35*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1Psb ("Beta1Psb", "The beta wavefunction parameter for the sb meson in the 1P level", &ISGW2FormFactor::_beta1Psb, GeV, 0.41*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1Pcc ("Beta1Pcc", "The beta wavefunction parameter for the cc meson in the 1P level", &ISGW2FormFactor::_beta1Pcc, GeV, 0.52*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta1Pbc ("Beta1Pbc", "The beta wavefunction parameter for the bc meson in the 1P level", &ISGW2FormFactor::_beta1Pbc, GeV, 0.60*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta3S1ud ("Beta3S1ud", "The beta wavefunction parameter for the ud meson in the 3S1 level", &ISGW2FormFactor::_beta3S1ud, GeV, 0.30*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta3S1us ("Beta3S1us", "The beta wavefunction parameter for the us meson in the 3S1 level", &ISGW2FormFactor::_beta3S1us, GeV, 0.33*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta3S1ss ("Beta3S1ss", "The beta wavefunction parameter for the ss meson in the 3S1 level", &ISGW2FormFactor::_beta3S1ss, GeV, 0.37*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta3S1cu ("Beta3S1cu", "The beta wavefunction parameter for the cu meson in the 3S1 level", &ISGW2FormFactor::_beta3S1cu, GeV, 0.38*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta3S1cs ("Beta3S1cs", "The beta wavefunction parameter for the cs meson in the 3S1 level", &ISGW2FormFactor::_beta3S1cs, GeV, 0.44*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta3S1ub ("Beta3S1ub", "The beta wavefunction parameter for the ub meson in the 3S1 level", &ISGW2FormFactor::_beta3S1ub, GeV, 0.40*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta3S1sb ("Beta3S1sb", "The beta wavefunction parameter for the sb meson in the 3S1 level", &ISGW2FormFactor::_beta3S1sb, GeV, 0.49*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta3S1cc ("Beta3S1cc", "The beta wavefunction parameter for the cc meson in the 3S1 level", &ISGW2FormFactor::_beta3S1cc, GeV, 0.62*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,Energy> interfaceBeta3S1bc ("Beta3S1bc", "The beta wavefunction parameter for the bc meson in the 3S1 level", &ISGW2FormFactor::_beta3S1bc, GeV, 0.75*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ISGW2FormFactor,double> interfaceAlphaCutOff ("AlphaCutOff", "The value of the strong coupling constnat at the cut-off", &ISGW2FormFactor::_alphamuQM, 0.6, 0.0, 10.0, false, false, true); static Parameter<ISGW2FormFactor,double> interfaceCfDrho ("CfDrho", "The relativistic correction factor for D -> rho", &ISGW2FormFactor::_CfDrho, 0.889, 0.0, 1.0, false, false, true); static Parameter<ISGW2FormFactor,double> interfaceCfDKstar ("CfDKstar", "The relativistic correction factor for D -> Kstar", &ISGW2FormFactor::_CfDKstar, 0.928, 0.0, 1.0, false, false, true); static Parameter<ISGW2FormFactor,double> interfaceCfDsKstar ("CfDsKstar", "The relativistic correction factor for Ds -> Kstar", &ISGW2FormFactor::_CfDsKstar, 0.873, 0.0, 1.0, false, false, true); static Parameter<ISGW2FormFactor,double> interfaceCfDsphi ("CfDsphi", "The relativistic correction factor for Ds -> phi", &ISGW2FormFactor::_CfDsphi, 0.911, 0.0, 1.0, false, false, true); static Parameter<ISGW2FormFactor,double> interfaceCfBrho ("CfBrho", "The relativistic correction factor for B -> rho", &ISGW2FormFactor::_CfBrho, 0.905, 0.0, 1.0, false, false, true); static Parameter<ISGW2FormFactor,double> interfaceCfBDstar ("CfBDstar", "The relativistic correction factor for B -> Dstar", &ISGW2FormFactor::_CfBDstar, 0.989, 0.0, 1.0, false, false, true); static Parameter<ISGW2FormFactor,double> interfaceCfBsKstar ("CfBsKstar", "The relativistic correction factor for Bs -> Kstar", &ISGW2FormFactor::_CfBsKstar, 0.892, 0.0, 1.0, false, false, true); static Parameter<ISGW2FormFactor,double> interfaceCfBsDstar ("CfBsDstar", "The relativistic correction factor for Bs -> Dstar", &ISGW2FormFactor::_CfBsDstar, 0.984, 0.0, 1.0, false, false, true); static Parameter<ISGW2FormFactor,double> interfaceCfBcDstar ("CfBcDstar", "The relativistic correction factor for Bc -> Dstar", &ISGW2FormFactor::_CfBcDstar, 0.868, 0.0, 1.0, false, false, true); static Parameter<ISGW2FormFactor,double> interfaceCfBcpsi ("CfBcpsi", "The relativistic correction factor for Bc -> psi", &ISGW2FormFactor::_CfBcpsi, 0.967, 0.0, 1.0, false, false, true); static Parameter<ISGW2FormFactor,double> interfaceCfBcBsstar ("CfBcBsstar", "The relativistic correction factor for Bc -> Bsstar", &ISGW2FormFactor::_CfBcBsstar, 1.000, 0.0, 1.0, false, false, true); static Parameter<ISGW2FormFactor,double> interfaceCfBcBstar ("CfBcBstar", "The relativistic correction factor for Bc -> Bstar", &ISGW2FormFactor::_CfBcBstar, 1.000, 0.0, 1.0, false, false, true); static Parameter<ISGW2FormFactor,double> interfaceThetaEtaEtaPrime ("ThetaEtaEtaPrime", "The eta-eta' mixing angle", &ISGW2FormFactor::_thetaeta, -Constants::pi/9., -Constants::pi, Constants::pi, false, false, true); static Switch<ISGW2FormFactor,bool> interfaceIncludeaW ("IncludeaW", "Include the a(omega) piece of the Cji factor", &ISGW2FormFactor::_includeaW, true, false, false); static SwitchOption interfaceIncludeaWInclude (interfaceIncludeaW, "Yes", "Include the factor", true); static SwitchOption interfaceIncludeaWDoNot (interfaceIncludeaW, "No", "Do not include the factor", false); } // member which does the work void ISGW2FormFactor::formFactor(Energy2 q2, unsigned int iloc, int, int id1, Energy mY, Energy mX, Complex & f1,Complex & f2,Complex & f3, Complex & f4) const { useMe(); // get the flavours of the quarks etc int jspin,spect,inquark,outquark; formFactorInfo(iloc,jspin,spect,inquark,outquark); int ifl0(abs(inquark)),ifl1(abs(outquark)),ifls(abs(spect)); // determine the multiplet int ispin(abs(id1)/1000); // masses of the quarks Energy mQ(_mquark[ifl0-1]),mq(_mquark[ifl1-1]),ms(_mquark[ifls-1]); // of the mesons Energy mtildeX(mq+ms),mtildeY(mQ+ms),mup(mq*mQ/(mQ+mq)),mum(mq*mQ/(mQ-mq)); // wavefunction parameters for the mesons Energy betaX(ZERO),mbarX(ZERO), betaY(_beta1S0[ifl0-1][ifls-1]),mbarY(_mass1S0[ifl0-1][ifls-1]); double Cf(1.); // the wavefunction parameter for the outgoing meson // 1S0 if(ispin==0&&jspin==0) { betaX=_beta1S0[ifl1-1][ifls-1]; mbarX=_mass1S0[ifl1-1][ifls-1]; } // 3S1 else if(ispin==0&&jspin==1) { betaX = _beta3S1[ifl1-1][ifls-1]; mbarX = _mass1S0[ifl1-1][ifls-1]; // set the relativistic correction parameter // decaying b if(ifl0==5) { if(ifls<3) Cf = ifl1<3 ? _CfBrho : _CfBDstar; else if(ifls==3) Cf = ifl1==4 ? _CfBsDstar : _CfBsKstar; else if(ifls==4) Cf = ifl1==4 ? _CfBcpsi : _CfBcDstar; } // decaying D else if(ifl0==4) { if(ifls<3) Cf = ifl1<3 ? _CfDrho : _CfDKstar; else if(ifls==3) Cf = ifl1<3 ? _CfDsKstar : _CfDsphi; else if(ifls==5) Cf = ifl1<3 ? _CfBcBstar : _CfBcBsstar; } } else if(ispin==10&&jspin==0) { betaX=_beta1P[ifl1-1][ifls-1]; mbarX=_massPoh[ifl1-1][ifls-1]; } // 1 3/2 P 1 (1 P1) else if((ispin==0&&jspin==2)||(ispin==10&&jspin==1)) { betaX = _beta1P[ifl1-1][ifls-1]; mbarX=_massPth[ifl1-1][ifls-1]; } // 1 1/2 P1 ( 3 P1) else if(ispin==20&&jspin==1) { betaX = _beta1P[ifl1-1][ifls-1]; mbarX=_massPoh[ifl1-1][ifls-1]; } else { throw Exception() << "ISGWS2FormFactor::formFactor" << " unknown multiplet" << Exception::abortnow; } Energy2 beta2XY(0.5*(betaX*betaX+betaY*betaY)); // number of active flavours int Nf = ifl0-1; int Nfp = ifl1==2 ? 0 : ifl1-1; // first piece of the f_n function double betar(betaX*betaY/beta2XY),fn(sqrt(mtildeX/mtildeY)*betar*sqrt(betar)); // q dependent piece Energy2 tm((mY-mX)*(mY-mX)),tmmt(tm-q2); // radius parameter InvEnergy2 r2(0.75/mQ/mq+1.5*ms*ms/mbarX/mbarY/beta2XY +16./mbarX/mbarY/(33.-2.*Nfp)*log(_alphamuQM/_alphaQ[ifl1-1])); // the parameters for the form-factor depenedent piece double rmbmtY(sqrt(mbarY/mtildeY)),rmbmtX(sqrt(mbarX/mtildeX)); // work out wtilde double wt(1.+0.5*tmmt/mbarX/mbarY); // storage of the form factors Energy f(ZERO); InvEnergy g(ZERO),appam(ZERO),apmam(ZERO); InvEnergy2 h(ZERO),bp(ZERO),bm(ZERO); double fpmfm(0.),fppfm(0.),k(0.); // scalar and vector from 1S levels if(ispin==0) { // parameters for the beta functions double asopi(alphaS(mq,mq*mQ)/Constants::pi),w(1.+0.5*tmmt/mX/mY); double aI(-6./(33.-2.*Nf)),rw(1./sqrt(w*w-1)*log(w+sqrt(w*w-1.))); double aLw(8./(33.-2.*Nfp)*(w*rw-1.)); double cji(pow(_alphaQ[ifl0-1]/_alphaQ[ifl1-1],aI)); if(_includeaW) cji*=pow(_alphaQ[ifl1-1]/_alphamuQM,aLw); double zji(mq/mQ); double gamji(-2.*zji/(1.-zji)*log(zji)-2.),chiji(-1.-gamji/(1.-zji)); // scalar if(jspin==0) { double fact((1.+1./12.*r2*tmmt)); fn/=(fact*fact); fact = (1.-0.5*ms*mq/mup/mtildeX*betaY*betaY/beta2XY); fppfm = fn*rmbmtX/rmbmtY*cji*(1.+asopi*(gamji-2./3.*chiji))* (2.-mtildeX/mq*fact); fpmfm = fn*rmbmtY/rmbmtX*cji*(1.+asopi*(gamji+2./3.*chiji))*mtildeY/mq*fact; } else if(jspin==1) { // factors for the F and R functions double fact((1.+1./12.*r2*tmmt)); fn/=(fact*fact); double betaapmam=1./3.-4./3./(1-zji)-chiji +gamji*(1.-2./3.*(1.+zji)/(1.-zji)/(1.-zji)); double ftemp = Cf*fn*rmbmtX*rmbmtY*cji*(1.+asopi*(-2./3.+gamji)); double gtemp = fn/rmbmtX/rmbmtY*cji*(1.+asopi*( 2./3.+gamji)); double aptemp = fn*rmbmtX/(rmbmtY*rmbmtY*rmbmtY)*cji; double amtemp = fn/rmbmtX/rmbmtY*cji*(1.+asopi*betaapmam); // rest of the calculation f = ftemp*mtildeY*(1.+wt+0.5*ms*(wt-1.)/mup); g =0.5*gtemp*(1./mq-0.5*ms*betaY*betaY/mum/mtildeX/beta2XY); appam = aptemp*(ms*betaX*betaX/(1.+wt)/mq/mQ/beta2XY* (1.-0.5*ms*betaX*betaX/mtildeY/beta2XY) +asopi/mtildeY*(-1.-chiji+4./3./(1.-zji) +2./3.*(1.+zji)/sqr(1.-zji)*gamji)); apmam =-amtemp/mtildeX*(mtildeY/mQ -0.5*ms*betaX*betaX/mup/beta2XY +wt*ms*mtildeY*betaX*betaX/(wt+1.)/mq/mQ/beta2XY* (1.-0.5*ms/mtildeY*betaX*betaX/beta2XY)); } else if(jspin==2) { // factors for the F function double fact((1.+1./18.*r2*tmmt)); fn*=betar/(fact*fact*fact); double htemp = fn/rmbmtX/(rmbmtY*rmbmtY*rmbmtY); double ktemp = fn*rmbmtX/rmbmtY; double bptemp(fn*rmbmtX/(rmbmtY*rmbmtY*rmbmtY*rmbmtY*rmbmtY)); double bmtemp(fn/rmbmtX/(rmbmtY*rmbmtY*rmbmtY)); // functions themselves double or2(sqrt(0.5)); h = 0.5*htemp*ms*or2/mtildeY/betaY*(1./mq-0.5*ms*betaY*betaY/mum/mtildeX/beta2XY); k = or2*ktemp*ms/betaY*(1.+wt); InvEnergy2 bppbm = 0.25*bptemp*or2*ms*ms/mq/mQ/mtildeY/betaY*betaX*betaX/beta2XY* (1.-0.5*ms/mtildeY*betaX*betaX/beta2XY); InvEnergy2 bpmbm = -or2*bmtemp*ms/mQ/mtildeX/betaY* (1.-0.5*ms*mQ/mup/mtildeY*betaX*betaX/beta2XY +0.25*ms/mq*betaX*betaX/beta2XY*(1.-0.5*ms/mtildeY*betaX*betaX/beta2XY)); // conversion bp = 0.5*(bppbm+bpmbm); bm = 0.5*(bppbm-bpmbm); } } // 1 3P0 else if(ispin==10&&jspin==0) { fn*=betar; double fact=(1.+1./18.*r2*tmmt); fn/=(fact*fact*fact); fn *= sqrt(2./3.)*ms/betaY; fppfm =-fn*rmbmtX/rmbmtY; fpmfm = fn*rmbmtY/rmbmtX*mtildeY/mtildeX; } // 1 3/2 P1 ( 1 P1) else if(ispin==10&&jspin==1) { // factors for the F and R functions double fact=(1.+1./18.*r2*tmmt); fn*=betar/(fact*fact*fact); double ftemp = fn*rmbmtX*rmbmtY; double gtemp = fn/rmbmtX/rmbmtY; double aptemp = fn*rmbmtX/(rmbmtY*rmbmtY*rmbmtY); double amtemp = fn/rmbmtX/rmbmtY; // light meson or onium if((ifls<3&&ifl1<3)||(ifls==ifl1)) { double oor2(sqrt(0.5)); f = oor2*ftemp*mtildeY*betaY*(1./mup +ms*mtildeX/3./mq/betaY/betaY*(wt-1.)*(wt-1.)); g = oor2*gtemp *(0.25*mtildeY*betaY/mQ/mq/mtildeX+(wt-1.)*ms/6./mtildeX/betaY); appam = oor2*aptemp*ms/mtildeY/betaY*(1.-ms/mq+0.5*ms/mup*betaY*betaY/beta2XY); apmam = oor2*amtemp*ms/mq/betaY*((4.-wt)/3. -0.5*ms*mq/mtildeX/mup*betaY*betaY/beta2XY); } // heavy meson else { double oor3(1./sqrt(3.)); f =-2.*ftemp*oor3*mtildeY*betaY* (1./mq+0.5*mtildeX*ms*(wt-1.)/betaY/betaY* (0.5*(wt+1.)/mq-0.5*ms*betaY*betaY/mum/mtildeX/beta2XY)); g =-0.5*gtemp*oor3*(0.5*(1.+wt)+0.5*betaY*betaY*mtildeY/ms/mq/mQ)*ms /betaY/mtildeX; appam =-0.5*aptemp/oor3*ms/betaY/mtildeY* (1.-ms/3./mq-ms/3.*betaY*betaY/beta2XY* (0.5/mum-1./mup)); apmam =-0.5*amtemp*oor3*ms/betaY/mtildeX* ((2.-wt)*mtildeX/mq+ms*betaY*betaY/beta2XY*(0.5/mum-1./mup)); } } // 1 1/2 P 1 (3 P1) else if(ispin==20&&jspin==1) { // factors for the F and R functions double fact=(1.+1./18.*r2*tmmt); fn*=betar/(fact*fact*fact); double ftemp = fn*rmbmtX*rmbmtY; double gtemp = fn/rmbmtX/rmbmtY; double aptemp = fn*rmbmtX/(rmbmtY*rmbmtY*rmbmtY); double amtemp = fn/rmbmtX/rmbmtY; // light meson if( ( ifls<3 && ifl1<3 ) || ( ifl1==ifls ) ) { f =-ftemp *mtildeY*betaY*(1./mum +ms*mtildeX*(wt-1.)/betaY/betaY* ((5.+wt)/6./mq-0.5/mum*ms/mtildeX* betaY*betaY/beta2XY)); g =-gtemp *0.5*ms/mtildeX/betaY*(5.+wt)/6.; appam =-aptemp*0.5*ms*mtildeX/mq/mtildeY/betaY* (1.-0.5*ms*mq/mtildeX/mum*betaY*betaY/beta2XY); apmam = amtemp*0.5*ms/mq/betaY*((wt+2.)/3. -0.5*ms*mq/mtildeX/mum*betaY*betaY/beta2XY); } // heavy meson else { double r2o3(sqrt(2./3.)); f = ftemp*r2o3*mtildeY*betaY*(0.5/mq-1.5/mQ+ms*mtildeX*(wt-1.)/betaY/betaY* (1./mq-0.5*ms*betaY*betaY/mum/mtildeX/beta2XY)); g = gtemp *0.5*r2o3*ms/betaY/mtildeX*(1.-0.25*betaY*betaY*mtildeY/ms/mq/mQ); appam = aptemp*0.5*r2o3*ms*ms*betaX*betaX/mtildeY/mq/betaY/beta2XY; apmam = -amtemp*r2o3*ms/mtildeX/betaY*(1.+0.5*ms*betaX*betaX/mq/beta2XY); } } else { throw Exception() << "ISGWS2FormFactor::formFactor" << " unknown multiplet" << Exception::abortnow; } // the final manipulations if(jspin==0) { double fp,fm; fp = 0.5*(fppfm+fpmfm); fm = 0.5*(fppfm-fpmfm); // convert to the standard form f1 = q2/(mY*mY-mX*mX)*fm+fp; f2 = fp; } else if(jspin==1) { InvEnergy ap(0.5*(appam+apmam)),am(0.5*(appam-apmam)); // convert to the standard notation Energy msum(mX+mY),mdiff(mY-mX); Complex ii(0.,1.); f2 = -ii*f/msum; f3 = +ii*ap*msum; f1 = -ii*0.5/mX*(am*q2+ii*msum*f2-ii*mdiff*f3); f4 = ii*g*msum; } else if(jspin==2) { Energy msum(mX+mY); f1 = h*sqr(msum); f2 = k; f3 = bp*sqr(msum); f4 = bm*sqr(msum); } // special for mixing double fact; if(id1==ParticleID::eta) { if(ifl1==3&&ifls==3){fact=-2.*cos(_thetaeta)/sqrt(6.)-sin(_thetaeta)/sqrt(3.);} else{fact=cos(_thetaeta)/sqrt(6.)-sin(_thetaeta)/sqrt(3.);} f1*=fact;f2*=fact;f3*=fact;f4*=fact; } else if(id1==ParticleID::etaprime) { if(ifl1==3&&ifls==3){fact=-2.*sin(_thetaeta)/sqrt(6.)+cos(_thetaeta)/sqrt(3.);} else{fact=sin(_thetaeta)/sqrt(6.)+cos(_thetaeta)/sqrt(3.);} f1*=fact;f2*=fact;f3*=fact;f4*=fact; } else if(ifl1==ifls&&ifl1<3) { if(abs(ifl1)==1&&int(id1/10)%100==1){fact=-sqrt(0.5);} else{fact=sqrt(0.5);} f1*=fact;f2*=fact;f3*=fact;f4*=fact; } } // form-factor for scalar to scalar void ISGW2FormFactor::ScalarScalarFormFactor(Energy2 q2, unsigned int iloc,int id0, int id1, Energy mY, Energy mX, Complex & f0,Complex & fp) const { Complex d1(0.),d2(0.); formFactor(q2,iloc,id0,id1,mY,mX,f0,fp,d1,d2); } // form-factor for scalar to vector void ISGW2FormFactor::ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1, Energy mY, Energy mX, Complex & A0,Complex & A1, Complex & A2,Complex & V) const { formFactor(q2,iloc,id0,id1,mY,mX,A0,A1,A2,V); } // form-factor for scalar to tensor void ISGW2FormFactor:: ScalarTensorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1, Energy mY, Energy mX, complex<InvEnergy2> & h, Complex & k,complex<InvEnergy2> & bp, complex<InvEnergy2> & bm) const { Complex f1,f2,f3,f4; formFactor(q2,iloc,id0,id1,mY,mX,f1,f2,f3,f4); Energy msum(mX+mY); h = f1/sqr(msum); k = f2; bp = f3/sqr(msum); bm = f4/sqr(msum); } void ISGW2FormFactor::dataBaseOutput(ofstream & output,bool header,bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::ISGW2FormFactor " << name() << "\n"; output << "newdef " << name() << ":DownMass " << _mdown/GeV << "\n"; output << "newdef " << name() << ":UpMass " << _mup/GeV << "\n"; output << "newdef " << name() << ":StrangeMass " << _mstrange/GeV << "\n"; output << "newdef " << name() << ":CharmMass " << _mcharm/GeV << "\n"; output << "newdef " << name() << ":BottomMass " << _mbottom/GeV << "\n"; output << "newdef " << name() << ":Beta1S0ud " << _beta1S0ud/GeV << "\n"; output << "newdef " << name() << ":Beta1S0us " << _beta1S0us/GeV << "\n"; output << "newdef " << name() << ":Beta1S0ss " << _beta1S0ss/GeV << "\n"; output << "newdef " << name() << ":Beta1S0cu " << _beta1S0cu/GeV << "\n"; output << "newdef " << name() << ":Beta1S0cs " << _beta1S0cs/GeV << "\n"; output << "newdef " << name() << ":Beta1S0ub " << _beta1S0ub/GeV << "\n"; output << "newdef " << name() << ":Beta1S0sb " << _beta1S0sb/GeV << "\n"; output << "newdef " << name() << ":Beta1S0cc " << _beta1S0cc/GeV << "\n"; output << "newdef " << name() << ":Beta1S0bc " << _beta1S0bc/GeV << "\n"; output << "newdef " << name() << ":Beta1Pud " << _beta1Pud/GeV << "\n"; output << "newdef " << name() << ":Beta1Pus " << _beta1Pus/GeV << "\n"; output << "newdef " << name() << ":Beta1Pss " << _beta1Pss/GeV << "\n"; output << "newdef " << name() << ":Beta1Pcu " << _beta1Pcu/GeV << "\n"; output << "newdef " << name() << ":Beta1Pcs " << _beta1Pcs/GeV << "\n"; output << "newdef " << name() << ":Beta1Pub " << _beta1Pub/GeV << "\n"; output << "newdef " << name() << ":Beta1Psb " << _beta1Psb/GeV << "\n"; output << "newdef " << name() << ":Beta1Pcc " << _beta1Pcc/GeV << "\n"; output << "newdef " << name() << ":Beta1Pbc " << _beta1Pbc/GeV << "\n"; output << "newdef " << name() << ":Beta3S1ud " << _beta3S1ud/GeV << "\n"; output << "newdef " << name() << ":Beta3S1us " << _beta3S1us/GeV << "\n"; output << "newdef " << name() << ":Beta3S1ss " << _beta3S1ss/GeV << "\n"; output << "newdef " << name() << ":Beta3S1cu " << _beta3S1cu/GeV << "\n"; output << "newdef " << name() << ":Beta3S1cs " << _beta3S1cs/GeV << "\n"; output << "newdef " << name() << ":Beta3S1ub " << _beta3S1ub/GeV << "\n"; output << "newdef " << name() << ":Beta3S1sb " << _beta3S1sb/GeV << "\n"; output << "newdef " << name() << ":Beta3S1cc " << _beta3S1cc/GeV << "\n"; output << "newdef " << name() << ":Beta3S1bc " << _beta3S1bc/GeV << "\n"; output << "newdef " << name() << ":AlphaCutOff " << _alphamuQM << "\n"; output << "newdef " << name() << ":CfDrho " << _CfDrho << "\n"; output << "newdef " << name() << ":CfDKstar " << _CfDKstar << "\n"; output << "newdef " << name() << ":CfDsKstar " << _CfDsKstar << "\n"; output << "newdef " << name() << ":CfDsphi " << _CfDsphi << "\n"; output << "newdef " << name() << ":CfBrho " << _CfBrho << "\n"; output << "newdef " << name() << ":CfBDstar " << _CfBDstar << "\n"; output << "newdef " << name() << ":CfBsKstar " << _CfBsKstar << "\n"; output << "newdef " << name() << ":CfBsDstar " << _CfBsDstar << "\n"; output << "newdef " << name() << ":CfBcDstar " << _CfBcDstar << "\n"; output << "newdef " << name() << ":CfBcpsi " << _CfBcpsi << "\n"; output << "newdef " << name() << ":CfBcBsstar " << _CfBcBsstar << "\n"; output << "newdef " << name() << ":CfBcBstar " << _CfBcBstar << "\n"; output << "newdef " << name() << ":ThetaEtaEtaPrime " << _thetaeta << "\n"; ScalarFormFactor::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BaryonSimpleFormFactor.h��������������������������������������0000644�0001750�0001750�00000012606�11754474773�025015� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_BaryonSimpleFormFactor_H #define HERWIG_BaryonSimpleFormFactor_H // // This is the declaration of the BaryonSimpleFormFactor class. // #include "BaryonFormFactor.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The BaryonSimpleFormFactor class is a simple model for the form-factors * for the semi-leptonic decay of the light (i.e. uds) baryons. The form-factors * are assumed to be constant and are taken from the quark model results * of PRD25, 206 (1982). * * @ see BaryonFormFactor */ class BaryonSimpleFormFactor: public BaryonFormFactor { public: /** * Default constructor */ BaryonSimpleFormFactor(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** @name Form Factors */ //@{ /** * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a * spin \f$\frac12\f$ baryon. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming baryon. * @param id1 The PDG code of the outgoing baryon. * @param m0 The mass of the incoming baryon. * @param m1 The mass of the outgoing baryon. * @param f1v The form factor \f$F^V_1\f$. * @param f2v The form factor \f$F^V_2\f$. * @param f3v The form factor \f$F^V_3\f$. * @param f1a The form factor \f$F^A_1\f$. * @param f2a The form factor \f$F^A_2\f$. * @param f3a The form factor \f$F^A_3\f$. */ virtual void SpinHalfSpinHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, Energy m0, Energy m1, Complex & f1v,Complex & f2v,Complex & f3v, Complex & f1a,Complex & f2a,Complex & f3a); //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<BaryonSimpleFormFactor> initBaryonSimpleFormFactor; /** * Private and non-existent assignment operator. */ BaryonSimpleFormFactor & operator=(const BaryonSimpleFormFactor &); private: /** * The axial vector coupling in \f$\beta\f$ decay. */ double _gA; /** * The \f$\frac{D}{D+F}\f$ ratio. */ double _alphaD; /** * The \f$\eta_V\f$ \f$SU(3)\f$ breaking parameter. */ double _etaV; /** * The \f$\eta_V\f$ \f$SU(3)\f$ breaking parameter. */ double _etaA; /** * The \f$\rho_E\f$ \f$SU(3)\f$ breaking parameter for the electic dipole moment. */ double _rhoE; /** * The \f$\rho_M\f$ \f$SU(3)\f$ breaking parameter for the electic dipole moment. */ double _rhoM; /** * The calculated constants for the \f$f_1\f$ form factor. */ vector<double> _f1; /** * The calculated constants for the \f$f_2\f$ form factor. */ vector<double> _f2; /** * The calculated constants for the \f$g_1\f$ form factor. */ vector<double> _g1; /** * The calculated constants for the \f$g_2\f$ form factor. */ vector<double> _g2; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * BaryonSimpleFormFactor. */ template <> struct BaseClassTrait<Herwig::BaryonSimpleFormFactor,1> { /** Typedef of the base class of BaryonSimpleFormFactor. */ typedef Herwig::BaryonFormFactor NthBase; }; /** * This template specialization informs ThePEG about the name of the * BaryonSimpleFormFactor class. */ template <> struct ClassTraits<Herwig::BaryonSimpleFormFactor> : public ClassTraitsBase<Herwig::BaryonSimpleFormFactor> { /** Return the class name. */ static string className() { return "Herwig::BaryonSimpleFormFactor"; } /** Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_BaryonSimpleFormFactor_H */ ��������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/Makefile.am���������������������������������������������������0000644�0001750�0001750�00000002424�11754474773�022306� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwFormFactor.la pkglib_LTLIBRARIES = HwFormFactors.la libHwFormFactor_la_SOURCES = \ BaryonFormFactor.cc BaryonFormFactor.fh \ BaryonFormFactor.h \ ScalarFormFactor.cc ScalarFormFactor.fh \ ScalarFormFactor.h \ BtoSGammaHadronicMass.h \ BtoSGammaHadronicMass.cc BtoSGammaHadronicMass.fh HwFormFactors_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:0:0 HwFormFactors_la_SOURCES = \ BallZwickyScalarFormFactor.cc BallZwickyScalarFormFactor.h \ BallZwickyVectorFormFactor.cc BallZwickyVectorFormFactor.h \ BaryonSimpleFormFactor.cc BaryonSimpleFormFactor.h \ BaryonThreeQuarkModelFormFactor.cc BaryonThreeQuarkModelFormFactor.h \ ChengHeavyBaryonFormFactor.cc ChengHeavyBaryonFormFactor.h \ ISGW2FormFactor.cc ISGW2FormFactor.h \ ISGWFormFactor.cc ISGWFormFactor.h \ LambdabExcitedLambdacSumRuleFormFactor.cc \ LambdabExcitedLambdacSumRuleFormFactor.h \ LightBaryonQuarkModelFormFactor.cc LightBaryonQuarkModelFormFactor.h \ SingletonFormFactor.cc SingletonFormFactor.h\ WSBFormFactor.cc WSBFormFactor.h\ KiselevBcFormFactor.cc KiselevBcFormFactor.h\ MelikhovFormFactor.cc MelikhovFormFactor.h \ MelikhovStechFormFactor.cc MelikhovStechFormFactor.h \ BtoSGammaFlatEnergy.h BtoSGammaFlatEnergy.cc \ BtoSGammaKagan.h BtoSGammaKagan.cc\ HQETFormFactor.h HQETFormFactor.cc ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/HQETFormFactor.h����������������������������������������������0000644�0001750�0001750�00000013700�11754474773�023146� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HQETFormFactor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_HQETFormFactor_H #define HERWIG_HQETFormFactor_H // // This is the declaration of the HQETFormFactor class. // #include "ScalarFormFactor.h" namespace Herwig { using namespace ThePEG; /** * The HQETFormFactor class implements the form factors for the decay of * B mesons into D and \f$D^*\f$ mesons using form factors based on Heavy Quark * Effective theory of the parameterisation of hep-ph/9712417 away from the * heavy quark limit. * * @see \ref HQETFormFactorInterfaces "The interfaces" * defined for HQETFormFactor. */ class HQETFormFactor: public ScalarFormFactor { public: /** * The default constructor. */ HQETFormFactor(); /** @name Form Factors */ //@{ /** * The form factor for the weak decay of a scalar to a scalar. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param f0 The form factor \f$f_0\f$. * @param fp The form factor \f$f_+\f$. */ virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0,Energy m1,Complex & f0, Complex & fp) const; /** * The form factor for the weak decay of a scalar to a vector. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param A0 The form factor \f$A_0\f$ * @param A1 The form factor \f$A_1\f$ * @param A2 The form factor \f$A_2\f$ * @param V The form factor \f$V\f$ */ virtual void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1, Energy m0, Energy m1,Complex & A0, Complex & A1,Complex & A2, Complex & V) const; //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<HQETFormFactor> initHQETFormFactor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ HQETFormFactor & operator=(const HQETFormFactor &); private: /** * The normalisation parameter for the scalar form factors */ double _f1scalar; /** * The normalisation parameter for the vector form factors */ double _f1vector; /** * The form factor \f$R_1(\omega)\f$ at \f$\omega=1\f$. */ double _r1; /** * The form factor \f$R_2(\omega)\f$ at \f$\omega=1\f$. */ double _r2; /** * The slope parameter \f$\rho^2\f$ for the scalar form factors */ double _rho2scalar; /** * The slope parameter \f$\rho^2\f$ for the vector form factors */ double _rho2vector; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of HQETFormFactor. */ template <> struct BaseClassTrait<Herwig::HQETFormFactor,1> { /** Typedef of the first base class of HQETFormFactor. */ typedef Herwig::ScalarFormFactor NthBase; }; /** This template specialization informs ThePEG about the name of * the HQETFormFactor class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::HQETFormFactor> : public ClassTraitsBase<Herwig::HQETFormFactor> { /** Return a platform-independent class name */ static string className() { return "Herwig::HQETFormFactor"; } /** * The name of a file containing the dynamic library where the class * HQETFormFactor is implemented. It may also include several, space-separated, * libraries if the class HQETFormFactor depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_HQETFormFactor_H */ ����������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/MelikhovStechFormFactor.cc������������������������������������0000644�0001750�0001750�00000076715�11754474773�025327� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MelikhovStechFormFactor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MelikhovStechFormFactor class. // #include "MelikhovStechFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/ParticleData.h" using namespace Herwig; MelikhovStechFormFactor::MelikhovStechFormFactor() : _fplus0(42,0.),_sigma1fp(42,0.),_sigma2fp(42,0.), _f00 (42,0.),_sigma1f0(42,0.),_sigma2f0(42,0.), _fT0 (42,0.),_sigma1fT(42,0.),_sigma2fT(42,0.), _V0 (42,0.),_sigma1V0(42,0.),_sigma2V0(42,0.), _A00 (42,0.),_sigma1A0(42,0.),_sigma2A0(42,0.), _A10 (42,0.),_sigma1A1(42,0.),_sigma2A1(42,0.), _A20 (42,0.),_sigma1A2(42,0.),_sigma2A2(42,0.), _T10 (42,0.),_sigma1T1(42,0.),_sigma2T1(42,0.), _T20 (42,0.),_sigma1T2(42,0.),_sigma2T2(42,0.), _T30 (42,0.),_sigma1T3(42,0.),_sigma2T3(42,0.), _massP(42,ZERO), _massV(42,ZERO) { // form factors for D to K addFormFactor(421,-321,0,-2,4,3); addFormFactor(411,-311,0,-1,4,3); for(unsigned int ix=0;ix<2;++ix) { _fplus0[ix] = 0.78 ; _sigma1fp[ix] = 0.24 ;_sigma2fp[ix] = 0.00; _f00[ix] = 0.78 ; _sigma1f0[ix] = 0.38 ;_sigma2f0[ix] = 0.46; _fT0[ix] = 0.75 ; _sigma1fT[ix] = 0.27 ;_sigma2fT[ix] = 0.00; _massP[ix] = 1.97*GeV; _massV[ix] = 2.11*GeV; } // form factors for D to K* addFormFactor(421,-323,1,-2,4,3); addFormFactor(411,-313,1,-1,4,3); for(unsigned int ix=2;ix<4;++ix) { _V0[ix] = 1.03 ; _sigma1V0[ix] = 0.27 ; _sigma2V0[ix] = 0.00; _A00[ix] = 0.76 ; _sigma1A0[ix] = 0.17 ; _sigma2A0[ix] = 0.00; _A10[ix] = 0.66 ; _sigma1A1[ix] = 0.30 ; _sigma2A1[ix] = 0.20; _A20[ix] = 0.49 ; _sigma1A2[ix] = 0.67 ; _sigma2A2[ix] = 0.16; _T10[ix] = 0.78 ; _sigma1T1[ix] = 0.25 ; _sigma2T1[ix] = 0.00; _T20[ix] = 0.78 ; _sigma1T2[ix] = 0.02 ; _sigma2T2[ix] = 1.80; _T30[ix] = 0.45 ; _sigma1T3[ix] = 1.23 ; _sigma2T3[ix] = 0.34; _massP[ix] = 1.97*GeV; _massV[ix] = 2.11*GeV; } // form factors for D to pi addFormFactor(421,-211,0,-2,4,1); addFormFactor(421, 111,0,-2,4,2); addFormFactor(411, 111,0,-1,4,1); addFormFactor(411, 211,0,-1,4,2); for(unsigned int ix=4;ix<8;++ix) { _fplus0[ix] = 0.69 ; _sigma1fp[ix] = 0.30; _sigma2fp[ix] = 0.00; _f00[ix] = 0.69 ; _sigma1f0[ix] = 0.54; _sigma2f0[ix] = 0.32; _fT0[ix] = 0.60 ; _sigma1fT[ix] = 0.34; _sigma2fT[ix] = 0.00; _massP[ix] = 1.87*GeV; _massV[ix] = 2.01*GeV; } // form factors for D to rho addFormFactor(421,-213,1,-2,4,1); addFormFactor(421, 113,1,-2,4,2); addFormFactor(411, 113,1,-1,4,1); addFormFactor(411, 213,1,-1,4,2); for(unsigned int ix=8;ix<12;++ix) { _V0[ix] = 0.90; _sigma1V0[ix] = 0.46; _sigma2V0[ix] = 0.00; _A00[ix] = 0.66; _sigma1A0[ix] = 0.36; _sigma2A0[ix] = 0.00; _A10[ix] = 0.59; _sigma1A1[ix] = 0.50; _sigma2A1[ix] = 0.00; _A20[ix] = 0.49; _sigma1A2[ix] = 0.89; _sigma2A2[ix] = 0.00; _T10[ix] = 0.66; _sigma1T1[ix] = 0.44; _sigma2T1[ix] = 0.00; _T20[ix] = 0.66; _sigma1T2[ix] = 0.38; _sigma2T2[ix] = 0.50; _T30[ix] = 0.31; _sigma1T3[ix] = 1.10; _sigma2T3[ix] = 0.17; _massP[ix] = 1.87*GeV; _massV[ix] = 2.01*GeV; } // B to D addFormFactor(-521,421,0,-2,5,4); addFormFactor(-511,411,0,-2,5,4); for(unsigned int ix=12;ix<14;++ix) { _fplus0[ix] = 0.67; _sigma1fp[ix] = 0.57; _sigma2fp[ix] = 0.00; _f00[ix] = 0.67; _sigma1f0[ix] = 0.78; _sigma2f0[ix] = 0.00; _fT0[ix] = 0.69; _sigma1fT[ix] = 0.56; _sigma2fT[ix] = 0.00; _massP[ix] = 6.4*GeV; _massV[ix] = 6.4*GeV; } // B to D* addFormFactor(-521,423,1,-2,5,4); addFormFactor(-511,413,1,-1,5,4); for(unsigned int ix=14;ix<16;++ix) { _V0[ix] = 0.76; _sigma1V0[ix] = 0.57; _sigma2V0[ix] = 0.00; _A00[ix] = 0.69; _sigma1A0[ix] = 0.58; _sigma2A0[ix] = 0.00; _A10[ix] = 0.66; _sigma1A1[ix] = 0.78; _sigma2A1[ix] = 0.00; _A20[ix] = 0.62; _sigma1A2[ix] = 1.40; _sigma2A2[ix] = 0.41; _T10[ix] = 0.68; _sigma1T1[ix] = 0.57; _sigma2T1[ix] = 0.00; _T20[ix] = 0.68; _sigma1T2[ix] = 0.64; _sigma2T2[ix] = 0.00; _T30[ix] = 0.33; _sigma1T3[ix] = 1.46; _sigma2T3[ix] = 0.50; _massP[ix] = 6.4*GeV; _massV[ix] = 6.4*GeV; } // B to K addFormFactor(-521,-321,0,-2,5,3); addFormFactor(-511,-311,0,-1,5,3); for(unsigned int ix=16;ix<18;++ix) { _fplus0[ix] = 0.36; _sigma1fp[ix] = 0.43; _sigma2fp[ix] = 0.00; _f00[ix] = 0.36; _sigma1f0[ix] = 0.70; _sigma2f0[ix] = 0.27; _fT0[ix] = 0.35; _sigma1fT[ix] = 0.43; _sigma2fT[ix] = 0.00; _massP[ix] = 5.37*GeV; _massV[ix] = 5.42*GeV; } // B to K* addFormFactor(-521,-323,1,-2,5,3); addFormFactor(-511,-313,1,-1,5,3); for(unsigned int ix=18;ix<20;++ix) { _V0[ix] = 0.44; _sigma1V0[ix] = 0.45; _sigma2V0[ix] = 0.00; _A00[ix] = 0.45; _sigma1A0[ix] = 0.46; _sigma2A0[ix] = 0.00; _A10[ix] = 0.36; _sigma1A1[ix] = 0.64; _sigma2A1[ix] = 0.36; _A20[ix] = 0.32; _sigma1A2[ix] = 1.23; _sigma2A2[ix] = 0.38; _T10[ix] = 0.39; _sigma1T1[ix] = 0.45; _sigma2T1[ix] = 0.00; _T20[ix] = 0.39; _sigma1T2[ix] = 0.72; _sigma2T2[ix] = 0.62; _T30[ix] = 0.27; _sigma1T3[ix] = 1.31; _sigma2T3[ix] = 0.41; _massP[ix] = 5.37*GeV; _massV[ix] = 5.42*GeV; } // B to pi addFormFactor(-521, 111,0,-2,5,2); addFormFactor(-511, 211,0,-1,5,2); addFormFactor(-521,-211,0,-2,5,1); addFormFactor(-511, 111,0,-1,5,1); for(unsigned int ix=20;ix<24;++ix) { _fplus0[ix] = 0.29; _sigma1fp[ix] = 0.48; _sigma2fp[ix] = 0.00; _f00[ix] = 0.29; _sigma1f0[ix] = 0.76; _sigma2f0[ix] = 0.28; _fT0[ix] = 0.28; _sigma1fT[ix] = 0.48; _sigma2fT[ix] = 0.00; _massP[ix] = 5.27*GeV; _massV[ix] = 5.32*GeV; } // B to rho addFormFactor(-521, 113,1,-2,5,2); addFormFactor(-511, 213,1,-1,5,2); addFormFactor(-521,-213,1,-2,5,1); addFormFactor(-511, 113,1,-1,5,1); for(unsigned int ix=24;ix<28;++ix) { _V0[ix] = 0.31; _sigma1V0[ix] = 0.59; _sigma2V0[ix] = 0.00; _A00[ix] = 0.30; _sigma1A0[ix] = 0.54; _sigma2A0[ix] = 0.00; _A10[ix] = 0.26; _sigma1A1[ix] = 0.73; _sigma2A1[ix] = 0.10; _A20[ix] = 0.24; _sigma1A2[ix] = 1.40; _sigma2A2[ix] = 0.50; _T10[ix] = 0.27; _sigma1T1[ix] = 0.60; _sigma2T1[ix] = 0.00; _T20[ix] = 0.27; _sigma1T2[ix] = 0.74; _sigma2T2[ix] = 0.19; _T30[ix] = 0.19; _sigma1T3[ix] = 1.42; _sigma2T3[ix] = 0.51; _massP[ix] = 5.27*GeV; _massV[ix] = 5.32*GeV; } // D_s to K addFormFactor(431,311,0,-3,4,1); addFormFactor(431,321,0,-3,4,2); for(unsigned int ix=28;ix<30;++ix) { _fplus0[ix] = 0.72; _sigma1fp[ix] = 0.20; _sigma2fp[ix] = 0.00; _f00[ix] = 0.72; _sigma1f0[ix] = 0.41; _sigma2f0[ix] = 0.70; _fT0[ix] = 0.77; _sigma1fT[ix] = 0.24; _sigma2fT[ix] = 0.00; _massP[ix] = 1.87*GeV; _massV[ix] = 2.01*GeV; } // D_s to K* addFormFactor(431,313,1,-3,4,1); addFormFactor(431,323,1,-3,4,2); for(unsigned int ix=30;ix<32;++ix) { _V0[ix] = 1.04; _sigma1V0[ix] = 0.24; _sigma2V0[ix] = 0.00; _A00[ix] = 0.67; _sigma1A0[ix] = 0.20; _sigma2A0[ix] = 0.00; _A10[ix] = 0.57; _sigma1A1[ix] = 0.29; _sigma2A1[ix] = 0.42; _A20[ix] = 0.42; _sigma1A2[ix] = 0.58; _sigma2A2[ix] = 0.00; _T10[ix] = 0.71; _sigma1T1[ix] = 0.22; _sigma2T1[ix] = 0.00; _T20[ix] = 0.71; _sigma1T2[ix] = -0.06; _sigma2T2[ix] = 0.44; _T30[ix] = 0.45; _sigma1T3[ix] = 1.08; _sigma2T3[ix] = 0.68; _massP[ix] = 1.87*GeV; _massV[ix] = 2.01*GeV; } // D_s to eta addFormFactor(431,221,0,-3,4,3); _fplus0[32] = 0.78; _sigma1fp[32] = 0.23; _sigma2fp[32] = 0.00; _f00[32] = 0.78; _sigma1f0[32] = 0.33; _sigma2f0[32] = 0.38; _fT0[32] = 0.80; _sigma1fT[32] = 0.24; _sigma2fT[32] = 0.00; _massP[32] = 1.97*GeV; _massV[32] = 2.11*GeV; // D_s to eta' addFormFactor(431,331,0,-3,4,3); _fplus0[33] = 0.78; _sigma1fp[33] = 0.23; _sigma2fp[33] = 0.00; _f00[33] = 0.78; _sigma1f0[33] = 0.21; _sigma2f0[33] = 0.76; _fT0[33] = 0.94; _sigma1fT[33] = 0.24; _sigma2fT[33] = 0.00; _massP[33] = 1.97*GeV; _massV[33] = 2.11*GeV; // D_s to phi addFormFactor(431,333,1,-3,4,3); _V0[34] = 1.10; _sigma1V0[34] = 0.26; _sigma2V0[34] = 0.00; _A00[34] = 0.73; _sigma1A0[34] = 0.10; _sigma2A0[34] = 0.00; _A10[34] = 0.64; _sigma1A1[34] = 0.29; _sigma2A1[34] = 0.00; _A20[34] = 0.47; _sigma1A2[34] = 0.63; _sigma2A2[34] = 0.00; _T10[34] = 0.77; _sigma1T1[34] = 0.25; _sigma2T1[34] = 0.00; _T20[34] = 0.77; _sigma1T2[34] = 0.02; _sigma2T2[34] = 2.01; _T30[34] = 0.46; _sigma1T3[34] = 1.34; _sigma2T3[34] = 0.45; _massP[34] = 1.97*GeV; _massV[34] = 2.11*GeV; // B_s to K addFormFactor(-531, 311 ,0,-3,5,1); addFormFactor(-531, 321 ,0,-3,5,2); for(unsigned int ix=35;ix<37;++ix) { _fplus0[ix] = 0.31; _sigma1fp[ix] = 0.63; _sigma2fp[ix] = 0.33; _f00[ix] = 0.31; _sigma1f0[ix] = 0.93; _sigma2f0[ix] = 0.70; _fT0[ix] = 0.31; _sigma1fT[ix] = 0.61; _sigma2fT[ix] = 0.30; _massP[ix] = 5.27*GeV; _massV[ix] = 5.32*GeV; } // B_s to K* addFormFactor(-531, 313 ,1,-3,5,1); addFormFactor(-531, 323 ,1,-3,5,2); for(unsigned int ix=37;ix<39;++ix) { _V0[ix] = 0.38; _sigma1V0[ix] = 0.66; _sigma2V0[ix] = 0.30; _A00[ix] = 0.37; _sigma1A0[ix] = 0.60; _sigma2A0[ix] = 0.16; _A10[ix] = 0.29; _sigma1A1[ix] = 0.86; _sigma2A1[ix] = 0.60; _A20[ix] = 0.26; _sigma1A2[ix] = 1.32; _sigma2A2[ix] = 0.54; _T10[ix] = 0.32; _sigma1T1[ix] = 0.66; _sigma2T1[ix] = 0.31; _T20[ix] = 0.32; _sigma1T2[ix] = 0.98; _sigma2T2[ix] = 0.90; _T30[ix] = 0.23; _sigma1T3[ix] = 1.42; _sigma2T3[ix] = 0.62; _massP[ix] = 5.27*GeV; _massV[ix] = 5.32*GeV; } // B_s to eta addFormFactor(-531, 221 ,0,-3,5,3); _fplus0[39] = 0.36; _sigma1fp[39] = 0.60; _sigma2fp[39] = 0.20; _f00[39] = 0.36; _sigma1f0[39] = 0.80; _sigma2f0[39] = 0.40; _fT0[39] = 0.36; _sigma1fT[39] = 0.58; _sigma2fT[39] = 0.18; _massP[39] = 5.37*GeV; _massV[39] = 5.42*GeV; // B_s to eta' addFormFactor(-531, 331 ,0,-3,5,3); _fplus0[40] = 0.36; _sigma1fp[40] = 0.60; _sigma2fp[40] = 0.20; _f00[40] = 0.36; _sigma1f0[40] = 0.80; _sigma2f0[40] = 0.45; _fT0[40] = 0.39; _sigma1fT[40] = 0.58; _sigma2fT[40] = 0.18; _massP[40] = 5.37*GeV; _massV[40] = 5.42*GeV; // B_s to phi addFormFactor(-531, 333 ,1,-3,5,3); _V0[41] = 0.44; _sigma1V0[41] = 0.62; _sigma2V0[41] = 0.20; _A00[41] = 0.42; _sigma1A0[41] = 0.55; _sigma2A0[41] = 0.12; _A10[41] = 0.34; _sigma1A1[41] = 0.73; _sigma2A1[41] = 0.42; _A20[41] = 0.31; _sigma1A2[41] = 1.30; _sigma2A2[41] = 0.52; _T10[41] = 0.38; _sigma1T1[41] = 0.62; _sigma2T1[41] = 0.20; _T20[41] = 0.38; _sigma1T2[41] = 0.83; _sigma2T2[41] = 0.71; _T30[41] = 0.26; _sigma1T3[41] = 1.41; _sigma2T3[41] = 0.57; _massP[41] = 5.37*GeV; _massV[41] = 5.42*GeV; // set the initial number of modes initialModes(numberOfFactors()); // eta-eta' mixing angle _thetaeta = 2./9.*Constants::pi; } void MelikhovStechFormFactor::doinit() { ScalarFormFactor::doinit(); unsigned int isize(numberOfFactors()); if(isize!=_fplus0.size()||isize!=_sigma1fp.size()||isize!=_sigma2fp.size()|| isize!=_f00.size() ||isize!=_sigma1f0.size()||isize!=_sigma2f0.size()|| isize!=_fT0.size() ||isize!=_sigma1fT.size()||isize!=_sigma2fT.size()|| isize!=_V0.size() ||isize!=_sigma1V0.size()||isize!=_sigma2V0.size()|| isize!=_A00.size() ||isize!=_sigma1A0.size()||isize!=_sigma2A0.size()|| isize!=_A10.size() ||isize!=_sigma1A1.size()||isize!=_sigma2A1.size()|| isize!=_A20.size() ||isize!=_sigma1A2.size()||isize!=_sigma2A2.size()|| isize!=_T10.size() ||isize!=_sigma1T1.size()||isize!=_sigma2T1.size()|| isize!=_T20.size() ||isize!=_sigma1T2.size()||isize!=_sigma2T2.size()|| isize!=_T30.size() ||isize!=_sigma1T3.size()||isize!=_sigma2T3.size()|| isize!=_massP.size() ||isize!=_massV.size()) throw InitException() << "Inconsistent parameters in " << "MelikhovStechFormFactor::doinit()" << Exception::abortnow; } void MelikhovStechFormFactor::persistentOutput(PersistentOStream & os) const { os << _fplus0 << _sigma1fp << _sigma2fp << _f00 << _sigma1f0 << _sigma2f0 << _fT0 << _sigma1fT << _sigma2fT << _V0 << _sigma1V0 << _sigma2V0 << _A00 << _sigma1A0 << _sigma2A0 << _A10 << _sigma1A1 << _sigma2A1 << _A20 << _sigma1A2 << _sigma2A2 << _T10 << _sigma1T1 << _sigma2T1 << _T20 << _sigma1T2 << _sigma2T2 << _T30 << _sigma1T3 << _sigma2T3 << ounit(_massP,GeV) << ounit(_massV,GeV) << _thetaeta; } void MelikhovStechFormFactor::persistentInput(PersistentIStream & is, int) { is >> _fplus0 >> _sigma1fp >> _sigma2fp >> _f00 >> _sigma1f0 >> _sigma2f0 >> _fT0 >> _sigma1fT >> _sigma2fT >> _V0 >> _sigma1V0 >> _sigma2V0 >> _A00 >> _sigma1A0 >> _sigma2A0 >> _A10 >> _sigma1A1 >> _sigma2A1 >> _A20 >> _sigma1A2 >> _sigma2A2 >> _T10 >> _sigma1T1 >> _sigma2T1 >> _T20 >> _sigma1T2 >> _sigma2T2 >> _T30 >> _sigma1T3 >> _sigma2T3 >> iunit(_massP,GeV) >> iunit(_massV,GeV) >> _thetaeta; } ClassDescription<MelikhovStechFormFactor> MelikhovStechFormFactor::initMelikhovStechFormFactor; // Definition of the static class description member. void MelikhovStechFormFactor::Init() { static ClassDocumentation<MelikhovStechFormFactor> documentation ("The MelikhovStechFormFactor class is the implementation of the" " form factors from Phys. Rev. D62 014006 (2000).", "The form factors of \\cite{Melikhov:2000yu} were used.", "\\bibitem{Melikhov:2000yu} D.~Melikhov and B.~Stech,\n" "Phys.\\ Rev.\\ D {\\bf 62} (2000) 014006 [arXiv:hep-ph/0001113].\n" "%%CITATION = PHRVA,D62,014006;%%\n"); static ParVector<MelikhovStechFormFactor,double> interfaceFPlus0 ("FPlus0", "The value of the F_+ form factor at q^2=0", &MelikhovStechFormFactor::_fplus0, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceFpsigma_1 ("F+sigma_1", "The value of sigma_1 for the F_+ form factor", &MelikhovStechFormFactor::_sigma1fp, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceFpsigma_2 ("F+sigma_2", "The value of sigma_2 for the F_+ form factor", &MelikhovStechFormFactor::_sigma2fp, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceF00 ("F00", "The value of the F_0 form factor at q^2=0", &MelikhovStechFormFactor::_f00, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceF0sigma_1 ("F0sigma_1", "The value of sigma_1 for the F_0 form factor", &MelikhovStechFormFactor::_sigma1f0, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceF0sigma_2 ("F0sigma_2", "The value of sigma_2 for the F_0 form factor", &MelikhovStechFormFactor::_sigma2f0, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceFT0 ("FT0", "The value of the F_T form factor at q^2=0", &MelikhovStechFormFactor::_fT0, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceFTsigma_1 ("FTsigma_1", "The value of sigma_1 for the F_T form factor", &MelikhovStechFormFactor::_sigma1fT, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceFTsigma_2 ("FTsigma_2", "The value of sigma_2 for the F_T form factor", &MelikhovStechFormFactor::_sigma2fT, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceV00 ("V00", "The value of the V_0 form factor at q^2=0", &MelikhovStechFormFactor::_V0, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceV0sigma_1 ("V0sigma_1", "The value of sigma_1 for the V_0 form factor", &MelikhovStechFormFactor::_sigma1V0, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceV0sigma_2 ("V0sigma_2", "The value of sigma_2 for the V_0 form factor", &MelikhovStechFormFactor::_sigma2V0, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceA00 ("A00", "The value of the A_0 form factor at q^2=0", &MelikhovStechFormFactor::_A00, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceA0sigma_1 ("A0sigma_1", "The value of sigma_1 for the A_0 form factor", &MelikhovStechFormFactor::_sigma1A0, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceA0sigma_2 ("A0sigma_2", "The value of sigma_2 for the A_0 form factor", &MelikhovStechFormFactor::_sigma2A0, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceA10 ("A10", "The value of the A_1 form factor at q^2=0", &MelikhovStechFormFactor::_A10, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceA1sigma_1 ("A1sigma_1", "The value of sigma_1 for the A_1 form factor", &MelikhovStechFormFactor::_sigma1A1, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceA1sigma_2 ("A1sigma_2", "The value of sigma_2 for the A_1 form factor", &MelikhovStechFormFactor::_sigma2A1, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceA20 ("A20", "The value of the A_2 form factor at q^2=0", &MelikhovStechFormFactor::_A20, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceA2sigma_1 ("A2sigma_1", "The value of sigma_1 for the A_2 form factor", &MelikhovStechFormFactor::_sigma1A2, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceA2sigma_2 ("A2sigma_2", "The value of sigma_2 for the A_2 form factor", &MelikhovStechFormFactor::_sigma2A2, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceT10 ("T10", "The value of the T_1 form factor at q^2=0", &MelikhovStechFormFactor::_T10, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceT1sigma_1 ("T1sigma_1", "The value of sigma_1 for the T_1 form factor", &MelikhovStechFormFactor::_sigma1T1, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceT1sigma_2 ("T1sigma_2", "The value of sigma_2 for the T_1 form factor", &MelikhovStechFormFactor::_sigma2T1, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceT20 ("T20", "The value of the T_2 form factor at q^2=0", &MelikhovStechFormFactor::_T20, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceT2sigma_1 ("T2sigma_1", "The value of sigma_1 for the T_2 form factor", &MelikhovStechFormFactor::_sigma1T2, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceT2sigma_2 ("T2sigma_2", "The value of sigma_2 for the T_2 form factor", &MelikhovStechFormFactor::_sigma2T2, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceT30 ("T30", "The value of the T_3 form factor at q^2=0", &MelikhovStechFormFactor::_T30, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceT3sigma_1 ("T3sigma_1", "The value of sigma_1 for the T_3 form factor", &MelikhovStechFormFactor::_sigma1T3, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,double> interfaceT3sigma_2 ("T3sigma_2", "The value of sigma_2 for the T_3 form factor", &MelikhovStechFormFactor::_sigma2T3, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<MelikhovStechFormFactor,Energy> interfaceMassP ("MassP", "The mass of the pseudoscalar for the q^2 dependence of the form factors.", &MelikhovStechFormFactor::_massP, GeV, -1, ZERO, ZERO, 10.*GeV, false, false, false); static ParVector<MelikhovStechFormFactor,Energy> interfaceMassV ("MassV", "The mass of the vector for the q^2 dependence of the form factors.", &MelikhovStechFormFactor::_massV, GeV, -1, ZERO, ZERO, 10.*GeV, false, false, false); static Parameter< MelikhovStechFormFactor,double> interfaceThetaEtaEtaPrime ("ThetaEtaEtaPrime", "The eta-eta' mixing angle", & MelikhovStechFormFactor::_thetaeta, 2.*Constants::pi/9., -Constants::pi, Constants::pi, false, false, true); } // form-factor for scalar to scalar void MelikhovStechFormFactor::ScalarScalarFormFactor(Energy2 q2,unsigned int mode, int,int id1, Energy, Energy,Complex & f0, Complex & fp) const { useMe(); double ratio(q2/sqr(_massV[mode])); fp = _fplus0[mode]/(1.-ratio)/(1.-ratio*(_sigma1fp[mode]-_sigma2fp[mode]*ratio)); f0 = _f00[mode] /(1.-ratio*(_sigma1f0[mode]-_sigma2f0[mode]*ratio)); int jspin,spect,inquark,outquark; formFactorInfo(mode,jspin,spect,inquark,outquark); if(abs(outquark)!=abs(spect)) return; if(abs(spect)>3) return; double fact; if(id1==ParticleID::eta) { if(abs(outquark)==3) fact =-sin(_thetaeta); else fact = cos(_thetaeta)*sqrt(0.5); } else if(id1==ParticleID::etaprime) { if(abs(outquark)==3) fact=cos(_thetaeta); else fact=sin(_thetaeta); } else if(id1==ParticleID::pi0&&abs(outquark)==1) fact=-sqrt(0.5); else fact= sqrt(0.5); f0 *= fact; fp *= fact; } void MelikhovStechFormFactor::ScalarScalarSigmaFormFactor(Energy2 q2,unsigned int mode, int,int id1, Energy, Energy, Complex & fT) const { useMe(); double ratio(q2/sqr(_massV[mode])); fT = _fT0[mode]/(1.-ratio)/(1.-ratio*(_sigma1fT[mode]-_sigma2fT[mode]*ratio)); int jspin,spect,inquark,outquark; formFactorInfo(mode,jspin,spect,inquark,outquark); if(abs(outquark)!=abs(spect)) return; if(abs(spect)>3) return; double fact; if(id1==ParticleID::eta) { if(abs(outquark)==3) fact = -sin(_thetaeta); else fact = cos(_thetaeta)*sqrt(0.5); } else if(id1==ParticleID::etaprime) { if(abs(outquark)==3) fact = cos(_thetaeta); else fact = sin(_thetaeta); } else if(id1==ParticleID::pi0&&abs(outquark)==1) fact=-sqrt(0.5); else fact= sqrt(0.5); fT*=fact; } void MelikhovStechFormFactor::ScalarVectorFormFactor(Energy2 q2, unsigned int mode, int, int id1, Energy, Energy,Complex & A0, Complex & A1,Complex & A2, Complex & V) const { useMe(); double ratio(q2/sqr(_massV[mode])),ratioP(q2/sqr(_massP[mode])); A0= _A00[mode]/(1.-ratioP)/(1.-ratioP*(_sigma1A0[mode]-_sigma2A0[mode]*ratioP)); A1= _A10[mode] /(1.-ratio *(_sigma1A1[mode]-_sigma2A1[mode]*ratio)); A2= _A20[mode] /(1.-ratio *(_sigma1A2[mode]-_sigma2A2[mode]*ratio)); V =-_V0[mode] /(1.-ratio )/(1.-ratio *(_sigma1V0[mode]-_sigma2V0[mode]*ratio )); int jspin,spect,inquark,outquark; formFactorInfo(mode,jspin,spect,inquark,outquark); if(abs(outquark)!=abs(spect)) return; if(abs(spect)>2) return; double fact(sqrt(0.5)); if(id1==ParticleID::rho0&&abs(outquark)==1) fact=-fact; A0 *= fact; A1 *= fact; A2 *= fact; V *= fact; } void MelikhovStechFormFactor::ScalarVectorSigmaFormFactor(Energy2 q2,unsigned int mode, int,int id1, Energy, Energy, Complex & T1,Complex & T2, Complex & T3) const { useMe(); double ratio(q2/sqr(_massV[mode])); T1= _T10[mode]/(1.-ratio)/(1.-ratio*(_sigma1T1[mode]-_sigma2T1[mode]*ratio)); T2= _T20[mode] /(1.-ratio*(_sigma1T2[mode]-_sigma2T2[mode]*ratio)); T3= _T30[mode] /(1.-ratio*(_sigma1T3[mode]-_sigma2T3[mode]*ratio)); int jspin,spect,inquark,outquark; formFactorInfo(mode,jspin,spect,inquark,outquark); if(abs(outquark)!=abs(spect)) return; if(abs(spect)>2) return; double fact(sqrt(0.5)); if(id1==ParticleID::rho0&&abs(outquark)==1){fact=-fact;} T1 *= fact; T2 *= fact; T3 *= fact; } void MelikhovStechFormFactor::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::MelikhovStechFormFactor " << name() << " \n"; output << "newdef " << name() << ":ThetaEtaEtaPrime " << _thetaeta << "\n"; for(unsigned int ix=0;ix<numberOfFactors();++ix) { if(ix<initialModes()) { output << "newdef " << name() << ":FPlus0 " << ix << " " << _fplus0[ix] << "\n"; output << "newdef " << name() << ":F+sigma_1 " << ix << " " << _sigma1fp[ix] << "\n"; output << "newdef " << name() << ":F+sigma_2 " << ix << " " << _sigma2fp[ix] << "\n"; output << "newdef " << name() << ":F00 " << ix << " " << _f00[ix] << "\n"; output << "newdef " << name() << ":F0sigma_1 " << ix << " " << _sigma1f0[ix] << "\n"; output << "newdef " << name() << ":F0sigma_2 " << ix << " " << _sigma2f0[ix] << "\n"; output << "newdef " << name() << ":FT0 " << ix << " " << _fT0[ix] << "\n"; output << "newdef " << name() << ":FTsigma_1 " << ix << " " << _sigma1fT[ix] << "\n"; output << "newdef " << name() << ":FTsigma_2 " << ix << " " << _sigma2fT[ix] << "\n"; output << "newdef " << name() << ":V00 " << ix << " " << _V0[ix] << "\n"; output << "newdef " << name() << ":V0sigma_1 " << ix << " " << _sigma1V0[ix] << "\n"; output << "newdef " << name() << ":V0sigma_2 " << ix << " " << _sigma2V0[ix] << "\n"; output << "newdef " << name() << ":A00 " << ix << " " << _A00[ix] << "\n"; output << "newdef " << name() << ":A0sigma_1 " << ix << " " << _sigma1A0[ix] << "\n"; output << "newdef " << name() << ":A0sigma_2 " << ix << " " << _sigma2A0[ix] << "\n"; output << "newdef " << name() << ":A10 " << ix << " " << _A10[ix] << "\n"; output << "newdef " << name() << ":A1sigma_1 " << ix << " " << _sigma1A1[ix] << "\n"; output << "newdef " << name() << ":A1sigma_2 " << ix << " " << _sigma2A1[ix] << "\n"; output << "newdef " << name() << ":A20 " << ix << " " << _A20[ix] << "\n"; output << "newdef " << name() << ":A2sigma_1 " << ix << " " << _sigma1A2[ix] << "\n"; output << "newdef " << name() << ":A2sigma_2 " << ix << " " << _sigma2A2[ix] << "\n"; output << "newdef " << name() << ":T10 " << ix << " " << _T10[ix] << "\n"; output << "newdef " << name() << ":T1sigma_1 " << ix << " " << _sigma1T1[ix] << "\n"; output << "newdef " << name() << ":T1sigma_2 " << ix << " " << _sigma2T1[ix] << "\n"; output << "newdef " << name() << ":T20 " << ix << " " << _T20[ix] << "\n"; output << "newdef " << name() << ":T2sigma_1 " << ix << " " << _sigma1T2[ix] << "\n"; output << "newdef " << name() << ":T2sigma_2 " << ix << " " << _sigma2T2[ix] << "\n"; output << "newdef " << name() << ":T30 " << ix << " " << _T30[ix] << "\n"; output << "newdef " << name() << ":T3sigma_1 " << ix << " " << _sigma1T3[ix] << "\n"; output << "newdef " << name() << ":T3sigma_2 " << ix << " " << _sigma2T3[ix] << "\n"; output << "newdef " << name() << ":MassP " << ix << " " << _massP[ix]/GeV << "\n"; output << "newdef " << name() << ":MassV " << ix << " " << _massV[ix]/GeV << "\n"; } else { output << "insert " << name() << ":FPlus0 " << ix << " " << _fplus0[ix] << "\n"; output << "insert " << name() << ":F+sigma_1 " << ix << " " << _sigma1fp[ix] << "\n"; output << "insert " << name() << ":F+sigma_2 " << ix << " " << _sigma2fp[ix] << "\n"; output << "insert " << name() << ":F00 " << ix << " " << _f00[ix] << "\n"; output << "insert " << name() << ":F0sigma_1 " << ix << " " << _sigma1f0[ix] << "\n"; output << "insert " << name() << ":F0sigma_2 " << ix << " " << _sigma2f0[ix] << "\n"; output << "insert " << name() << ":FT0 " << ix << " " << _fT0[ix] << "\n"; output << "insert " << name() << ":FTsigma_1 " << ix << " " << _sigma1fT[ix] << "\n"; output << "insert " << name() << ":FTsigma_2 " << ix << " " << _sigma2fT[ix] << "\n"; output << "insert " << name() << ":V00 " << ix << " " << _V0[ix] << "\n"; output << "insert " << name() << ":V0sigma_1 " << ix << " " << _sigma1V0[ix] << "\n"; output << "insert " << name() << ":V0sigma_2 " << ix << " " << _sigma2V0[ix] << "\n"; output << "insert " << name() << ":A00 " << ix << " " << _A00[ix] << "\n"; output << "insert " << name() << ":A0sigma_1 " << ix << " " << _sigma1A0[ix] << "\n"; output << "insert " << name() << ":A0sigma_2 " << ix << " " << _sigma2A0[ix] << "\n"; output << "insert " << name() << ":A10 " << ix << " " << _A10[ix] << "\n"; output << "insert " << name() << ":A1sigma_1 " << ix << " " << _sigma1A1[ix] << "\n"; output << "insert " << name() << ":A1sigma_2 " << ix << " " << _sigma2A1[ix] << "\n"; output << "insert " << name() << ":A20 " << ix << " " << _A20[ix] << "\n"; output << "insert " << name() << ":A2sigma_1 " << ix << " " << _sigma1A2[ix] << "\n"; output << "insert " << name() << ":A2sigma_2 " << ix << " " << _sigma2A2[ix] << "\n"; output << "insert " << name() << ":T10 " << ix << " " << _T10[ix] << "\n"; output << "insert " << name() << ":T1sigma_1 " << ix << " " << _sigma1T1[ix] << "\n"; output << "insert " << name() << ":T1sigma_2 " << ix << " " << _sigma2T1[ix] << "\n"; output << "insert " << name() << ":T20 " << ix << " " << _T20[ix] << "\n"; output << "insert " << name() << ":T2sigma_1 " << ix << " " << _sigma1T2[ix] << "\n"; output << "insert " << name() << ":T2sigma_2 " << ix << " " << _sigma2T2[ix] << "\n"; output << "insert " << name() << ":T30 " << ix << " " << _T30[ix] << "\n"; output << "insert " << name() << ":T3sigma_1 " << ix << " " << _sigma1T3[ix] << "\n"; output << "insert " << name() << ":T3sigma_2 " << ix << " " << _sigma2T3[ix] << "\n"; output << "insert " << name() << ":MassP " << ix << " " << _massP[ix]/GeV << "\n"; output << "insert " << name() << ":MassV " << ix << " " << _massV[ix]/GeV << "\n"; } } ScalarFormFactor::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ���������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/MelikhovStechFormFactor.h�������������������������������������0000644�0001750�0001750�00000024606�11754474773�025161� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MelikhovStechFormFactor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MelikhovStechFormFactor_H #define HERWIG_MelikhovStechFormFactor_H // // This is the declaration of the MelikhovStechFormFactor class. // #include "ScalarFormFactor.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The MelikhovStechFormFactor class is the implementation of the form factors * from Phys. Rev. D62 014006 (2000). * * @see ScalarFormFactor */ class MelikhovStechFormFactor: public ScalarFormFactor { public: /** * The default constructor. */ MelikhovStechFormFactor(); /** @name Form-Factors */ //@{ /** * The form factor for the weak decay of a scalar to a scalar. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param f0 The form-factor \f$f_0\f$. * @param fp The form-factor \f$f_+\f$. */ virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0,Energy m1, Complex & f0,Complex & fp) const; /** * The form factor for the weak decay of a scalar to a vector. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param V The form-factor \f$V\f$ * @param A0 The form-factor \f$A_0\f$ * @param A1 The form-factor \f$A_1\f$ * @param A2 The form-factor \f$A_2\f$ */ virtual void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1, Energy m0, Energy m1, Complex & V, Complex & A0,Complex & A1,Complex & A2) const; /** * The form factor for the weak penguin decay of a scalar meson to a scalar meson. * This method is virtual * and must be implemented in classes inheriting from this which include scalar to * scalar penguin form factors. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param fT The form factor \f$f_T\f$. */ virtual void ScalarScalarSigmaFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0, Energy m1,Complex & fT) const; /** * The form factor for the weak penguin decay of a scalar meson to a vector meson. * This method is virtual * and must be implemented in classes inheriting from this which include scalar to * vector penguin form factors. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param T1 The form factor \f$T_1\f$. * @param T2 The form factor \f$T_2\f$. * @param T3 The form factor \f$T_3\f$. */ virtual void ScalarVectorSigmaFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0, Energy m1, Complex & T1, Complex & T2, Complex & T3) const; //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MelikhovStechFormFactor> initMelikhovStechFormFactor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MelikhovStechFormFactor & operator=(const MelikhovStechFormFactor &); private: /** @name Parameters for the scalar to scalar form factors */ //@{ /** * The value of \f$F_+(0)\f$ for the form factors. */ vector<double> _fplus0; /** * The \f$\sigma_1\f$ parameter for the \f$F_+\f$ form factor. */ vector<double> _sigma1fp; /** * The \f$\sigma_2\f$ parameter for the \f$F_+\f$ form factor. */ vector<double> _sigma2fp; /** * The value of \f$F_0(0)\f$ for the form factors. */ vector<double> _f00; /** * The \f$\sigma_1\f$ parameter for the \f$F_0\f$ form factor. */ vector<double> _sigma1f0; /** * The \f$\sigma_2\f$ parameter for the \f$F_0\f$ form factor. */ vector<double> _sigma2f0; /** * The value of \f$F_T(0)\f$ for the form factors. */ vector<double> _fT0; /** * The \f$\sigma_1\f$ parameter for the \f$F_T\f$ form factor. */ vector<double> _sigma1fT; /** * The \f$\sigma_2\f$ parameter for the \f$F_T\f$ form factor. */ vector<double> _sigma2fT; //@} /** @name Parameters for the scalar to vector form factors */ //@{ /** * The value of \f$V(0)\f$ for the form factors */ vector<double> _V0; /** * The \f$\sigma_1\f$ parameter for the \f$V_0\f$ form factor. */ vector<double> _sigma1V0; /** * The \f$\sigma_2\f$ parameter for the \f$V_0\f$ form factor. */ vector<double> _sigma2V0; /** * The value of \f$A_0(0)\f$ for the form factors */ vector<double> _A00; /** * The \f$\sigma_1\f$ parameter for the \f$A_0\f$ form factor. */ vector<double> _sigma1A0; /** * The \f$\sigma_2\f$ parameter for the \f$A_0\f$ form factor. */ vector<double> _sigma2A0; /** * The value of \f$A_1(0)\f$ for the form factors */ vector<double> _A10; /** * The \f$\sigma_1\f$ parameter for the \f$A_1\f$ form factor. */ vector<double> _sigma1A1; /** * The \f$\sigma_2\f$ parameter for the \f$A_1\f$ form factor. */ vector<double> _sigma2A1; /** * The value of \f$A_2(0)\f$ for the form factors */ vector<double> _A20; /** * The \f$\sigma_1\f$ parameter for the \f$A_2\f$ form factor. */ vector<double> _sigma1A2; /** * The \f$\sigma_2\f$ parameter for the \f$A_2\f$ form factor. */ vector<double> _sigma2A2; /** * The value of \f$T_1(0)\f$ for the form factors */ vector<double> _T10; /** * The \f$\sigma_1\f$ parameter for the \f$T_1\f$ form factor. */ vector<double> _sigma1T1; /** * The \f$\sigma_2\f$ parameter for the \f$T_1\f$ form factor. */ vector<double> _sigma2T1; /** * The value of \f$T_2(0)\f$ for the form factors */ vector<double> _T20; /** * The \f$\sigma_1\f$ parameter for the \f$T_2\f$ form factor. */ vector<double> _sigma1T2; /** * The \f$\sigma_2\f$ parameter for the \f$T_2\f$ form factor. */ vector<double> _sigma2T2; /** * The value of \f$T_3(0)\f$ for the form factors */ vector<double> _T30; /** * The \f$\sigma_1\f$ parameter for the \f$T_2\f$ form factor. */ vector<double> _sigma1T3; /** * The \f$\sigma_2\f$ parameter for the \f$T_2\f$ form factor. */ vector<double> _sigma2T3; //@} /** * The scalar mass for the \f$q^2\f$ dependence of the form factor. */ vector<Energy> _massP; /** * The vector mass for the \f$q^2\f$ dependence of the form factor. */ vector<Energy> _massV; /** * The \f$\eta-\eta'\f$ mixing angle */ double _thetaeta; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MelikhovStechFormFactor. */ template <> struct BaseClassTrait<Herwig::MelikhovStechFormFactor,1> { /** Typedef of the first base class of MelikhovStechFormFactor. */ typedef Herwig::ScalarFormFactor NthBase; }; /** This template specialization informs ThePEG about the name of * the MelikhovStechFormFactor class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MelikhovStechFormFactor> : public ClassTraitsBase<Herwig::MelikhovStechFormFactor> { /** Return a platform-independent class name */ static string className() { return "Herwig::MelikhovStechFormFactor"; } /** Return the name of the shared library be loaded to get * access to the MelikhovStechFormFactor class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_MelikhovStechFormFactor_H */ ��������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/MelikhovFormFactor.cc�����������������������������������������0000644�0001750�0001750�00000012747�11754474773�024333� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MelikhovFormFactor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MelikhovFormFactor class. // #include "MelikhovFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/LorentzTensor.h" #include "ThePEG/PDT/ParticleData.h" using namespace Herwig; MelikhovFormFactor::MelikhovFormFactor() : _ifit(1), _Rplus0(0), _Mplus(ZERO), _nplus(0), _RV0(0), _MV(ZERO), _nV(0), _R10(0), _M1(ZERO), _n1(0), _R20(0), _M2(ZERO), _n2(0) { // the possible modes // B to rho addFormFactor(-521, 113,1,2,5,2); addFormFactor(-511, 213,1,1,5,2); addFormFactor(-521,-213,1,2,5,1); addFormFactor(-511, 113,1,1,5,1); // B to pi addFormFactor(-521, 111,0,2,5,2); addFormFactor(-511, 211,0,1,5,2); addFormFactor(-521,-211,0,2,5,1); addFormFactor(-511, 111,0,1,5,1); // set the initial number of modes initialModes(numberOfFactors()); } void MelikhovFormFactor::doinit() { ScalarFormFactor::doinit(); // the parameters for the different fits double Rplus0[4]={0.29 ,0.20 ,0.21 ,0.26 }; Energy Mplus[4] ={6.29*GeV,6.22*GeV,5.90*GeV,5.44*GeV}; double nplus[4] ={2.35 ,2.45 ,2.33 ,1.72 }; double RV[4] ={0.30 ,0.20 ,0.21 ,0.29 }; Energy MV[4] ={6.28*GeV,6.22*GeV,5.90*GeV,5.46*GeV}; double nv[4] ={2.36 ,2.46 ,2.35 ,1.73 }; double R10[4] ={0.27 ,0.20 ,0.21 ,0.29 }; Energy M1[4] ={7.07*GeV,6.78*GeV,6.50*GeV,5.68*GeV}; double n1[4] ={2.65 ,2.65 ,2.70 ,1.67 }; double R20[4] ={0.25 ,0.19 ,0.20 ,0.28 }; Energy M2[4] ={6.13*GeV,6.00*GeV,5.90*GeV,5.36*GeV}; double n2[4] ={2.17 ,2.34 ,2.45 ,1.67 }; // set the values _Rplus0=Rplus0[_ifit-1]; _Mplus=Mplus[_ifit-1]; _nplus=nplus[_ifit-1]; _RV0=RV[_ifit-1]; _MV=MV[_ifit-1]; _nV=nv[_ifit-1]; _R10=R10[_ifit-1]; _M1=M1[_ifit-1]; _n1=n1[_ifit-1]; _R20=R20[_ifit-1]; _M2=M2[_ifit-1]; _n2=n2[_ifit-1]; } void MelikhovFormFactor::persistentOutput(PersistentOStream & os) const { os << _ifit << _Rplus0 << ounit(_Mplus,GeV) << _nplus << _RV0 << ounit(_MV,GeV) << _nV << _R10 << ounit(_M1,GeV) << _n1 << _R20 << ounit(_M2,GeV) << _n2; } void MelikhovFormFactor::persistentInput(PersistentIStream & is, int) { is >> _ifit >> _Rplus0 >> iunit(_Mplus,GeV) >> _nplus >> _RV0 >> iunit(_MV,GeV) >> _nV >> _R10 >> iunit(_M1,GeV) >> _n1 >> _R20 >> iunit(_M2,GeV) >> _n2; } ClassDescription<MelikhovFormFactor> MelikhovFormFactor::initMelikhovFormFactor; // Definition of the static class description member. void MelikhovFormFactor::Init() { static ClassDocumentation<MelikhovFormFactor> documentation ("The MelikhovFormFactor class implements the form factors from" " Phys. Lett. B 380 (1996) 363 for B to pi,rho", "The form factors of \\cite{Melikhov:1996ge} were used for $B\\to \\pi,\\rho$.", "\\bibitem{Melikhov:1996ge} D.~Melikhov, Phys.\\ Lett.\\ B {\\bf 380} (1996) 363\n" "[arXiv:hep-ph/9603340]. %%CITATION = PHLTA,B380,363;%%\n"); static Parameter<MelikhovFormFactor,unsigned int> interfaceFit ("Fit", "Which of the fits from hep-ph/9603340 to use", &MelikhovFormFactor::_ifit, 1, 1, 4, false, false, true); } // form-factor for scalar to scalar void MelikhovFormFactor::ScalarScalarFormFactor(Energy2 q2,unsigned int mode, int,int id1, Energy, Energy,Complex & f0, Complex & fp) const { useMe(); fp = _Rplus0/pow((1.-q2/_Mplus/_Mplus),_nplus); f0 = fp; int jspin,spect,inquark,outquark; formFactorInfo(mode,jspin,spect,inquark,outquark); if(abs(outquark)==abs(spect)) { double fact = (id1==ParticleID::pi0&&abs(outquark)==1) ? -sqrt(0.5) : sqrt(0.5); f0 *= fact; fp *= fact; } } void MelikhovFormFactor::ScalarVectorFormFactor(Energy2 q2,unsigned int mode, int, int id1, Energy mY, Energy mX, Complex & A0,Complex & A1,Complex & A2, Complex & V) const { useMe(); // constants double r(mX/mY),y(q2/mY/mY); // V form-factor V =-double((1.+r)*_RV0/pow((1.-q2/_MV/_MV),_nV)); // A_1 form-factor A1 = (1.+r*r-y)/(1.+r)*_R10/pow((1.-q2/_M1/_M1),_n1); // A_2 form-factor A2 = (1.+r)*(1.-r*r-y)/((1.+r)*(1.+r)-y)*_R20/pow((1.-q2/_M2/_M2),_n2); // set the a_- factor to zero // A0 = 0.5/mX*((mY+mX)*A1-(mY-mX)*A2); A0 = 0.; int jspin,spect,inquark,outquark; formFactorInfo(mode,jspin,spect,inquark,outquark); if(abs(outquark)==abs(spect)&&abs(spect)<3) { double fact = (id1==ParticleID::rho0&&abs(outquark)==1) ? -sqrt(0.5) : sqrt(0.5); A0 *= fact; A1 *= fact; A2 *= fact; V *= fact; } } void MelikhovFormFactor::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::MelikhovFormFactor " << name() << " \n"; output << "newdef " << name() << ":Fit " << _ifit << " \n"; ScalarFormFactor::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �������������������������herwig++-2.6.0.orig/Decay/FormFactors/BaryonFormFactor.fh�������������������������������������������0000644�0001750�0001750�00000000462�11754474773�024006� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the BaryonFormFactor class. // #ifndef HERWIG_BaryonFormFactor_FH #define HERWIG_BaryonFormFactor_FH namespace Herwig { using namespace ThePEG; class BaryonFormFactor; ThePEG_DECLARE_CLASS_POINTERS(BaryonFormFactor,BaryonFormFactorPtr); } #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BaryonSimpleFormFactor.cc�������������������������������������0000644�0001750�0001750�00000017241�11754474773�025153� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the BaryonSimpleFormFactor class. // #include "BaryonSimpleFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; BaryonSimpleFormFactor::BaryonSimpleFormFactor() { // axial vector coupling in beta decay _gA=1.25; // SU(3) breaking paramters // D/(D+F) ratio _alphaD=0.6; // eta_V parameter _etaV=0.970; // eta_A parameter _etaA=1.080; // SU(3) breaking factors for the electric dipole moment _rhoE=0.094; // SU(3) breaking factors for the magnetic dipole moment _rhoM=0.860; // the various decay modes handled by the model addFormFactor(2112,2212,2,2,2,1,1,2); addFormFactor(3222,3122,2,2,3,2,1,2); addFormFactor(3112,3122,2,2,3,1,1,2); addFormFactor(3112,3212,2,2,3,1,1,2); addFormFactor(3212,3222,2,2,3,2,1,2); addFormFactor(3312,3322,2,2,3,3,1,2); addFormFactor(3122,2212,2,2,2,1,3,2); addFormFactor(3212,2212,2,2,2,1,3,2); addFormFactor(3112,2112,2,2,1,1,3,2); addFormFactor(3312,3122,2,2,3,1,3,2); addFormFactor(3312,3212,2,2,3,1,3,2); addFormFactor(3322,3222,2,2,3,2,3,2); // set the inital number of form factors initialModes(numberOfFactors()); } void BaryonSimpleFormFactor::doinit() { BaryonFormFactor::doinit(); _f1.clear(); _f2.clear(); _g1.clear(); _g2.clear(); _f1.resize(numberOfFactors()); _f2.resize(numberOfFactors()); _g1.resize(numberOfFactors()); _g2.resize(numberOfFactors()); // calculate the couplings for the different modes int id0,id1; double root23(sqrt(2./3.)),root2(sqrt(2.)),root32(sqrt(3./2.)); for(unsigned int ix=0;ix<numberOfFactors();++ix) { // get the particle ids for the mode particleID(ix,id0,id1); // work out the couplings // neutron beta decay if(id0==2112&&id1==2212) { _f1[ix] = 1. ; _g1[ix] = _gA; _f2[ix] = 3.7*_gA-1.0; _g2[ix] = 0.; } // sigma+ to Lambda else if(id0==3222&&id1==3122) { _f1[ix] = 0.; _g1[ix] = _gA*root23*_alphaD; _f2[ix] = 4.55*_g1[ix]-1.0*_f1[ix]; _g2[ix] = -0.03*_g1[ix]; } // sigma else if(id0==3112&&id1==3122) { _f1[ix] = 0.; _g1[ix] = _gA*root23*_alphaD; _f2[ix] = 4.55*_g1[ix]-1.0*_f1[ix]; _g2[ix] = -0.03*_g1[ix]; } else if(id0==3112&&id1==3212) { _f1[ix] = root2; _g1[ix] = _gA*root2*(1.-_alphaD); _f2[ix] = 4.69*_g1[ix]-_f1[ix]; _g2[ix] = 0.; } else if(id0==3212&&id1==3222) { _f1[ix] = -root2; _g1[ix] = -_gA*root2*(1.-_alphaD); _f2[ix] = 4.69*_g1[ix]-_f1[ix]; _g2[ix] = 0.; } else if(id0==3312&&id1==3322) { _f1[ix] = -1.; _g1[ix] = -_gA*(1.-2.*_alphaD); _f2[ix] = 5.21*_g1[ix]-_f1[ix]; _g2[ix] = 0.; } else if(id0==3122&&id1==2212) { _f1[ix] = -root32*_etaV; _g1[ix] = -_gA*root32*_etaA*(1.-2.*_alphaD/3.); _f2[ix] = 4.05*_rhoM*_g1[ix]-1.01*_f1[ix]; _g2[ix] = (4.05*_rhoE-0.09)*_g1[ix]; } else if(id0==3212&&id1==2212) { _f1[ix] = -_etaV/root2; _g1[ix] = -_gA/root2*_etaA*(1.-2.*_alphaD); _f2[ix] = 4.2*_rhoM*_g1[ix]-1.03*_f1[ix]; _g2[ix] = (4.2*_rhoE-0.12)*_g1[ix]; } else if(id0==3112&&id1==2112) { _f1[ix] = -_etaV; _g1[ix] = -_gA*_etaA*(1.-2.*_alphaD); _f2[ix] = 4.2*_rhoM*_g1[ix]-1.03*_f1[ix]; _g2[ix] = (4.2*_rhoE-0.12)*_g1[ix]; } else if(id0==3312&&id1==3122) { _f1[ix] = root32*_etaV; _g1[ix] = _gA*root32*_etaA*(1.-4./3.*_alphaD); _f2[ix] = 4.8*_rhoM*_g1[ix]-1.01*_f1[ix]; _g2[ix] = (4.8*_rhoE-0.08)*_g1[ix]; } else if(id0==3312&&id1==3212) { _f1[ix] = _etaV/root2; _g1[ix] = _gA*_etaA/root2; _f2[ix] = 4.95*_rhoM*_g1[ix]-1.*_f1[ix]; _g2[ix] = (4.95*_rhoE-0.05)*_g1[ix]; } else if(id0==3322&&id1==3222) { _f1[ix] = _etaV; _g1[ix] = _gA*_etaA; _f2[ix] = 4.95*_rhoM*_g1[ix]-1.*_f1[ix]; _g2[ix] = (4.95*_rhoE-0.05)*_g1[ix]; } else { throw InitException() << "Mode not recognised in BaryonSimpleFormFactor " << id0 << " " << id1 << Exception::abortnow; } } } void BaryonSimpleFormFactor::persistentOutput(PersistentOStream & os) const { os << _gA << _alphaD << _etaV << _etaA << _rhoE << _rhoM << _f1 << _f2 << _g1 << _g2;} void BaryonSimpleFormFactor::persistentInput(PersistentIStream & is, int) { is >> _gA >> _alphaD >> _etaV >> _etaA >> _rhoE >> _rhoM >> _f1 >> _f2 >> _g1 >> _g2;} ClassDescription<BaryonSimpleFormFactor> BaryonSimpleFormFactor::initBaryonSimpleFormFactor; // Definition of the static class description member. void BaryonSimpleFormFactor::Init() { static ClassDocumentation<BaryonSimpleFormFactor> documentation ("The BaryonSimpleFormFactor class implements the" " quark model calculation of the form-factors from PRD25, 206", "The BaryonSimpleFormFactor class which implements the results" " of \\cite{Donoghue:1981uk}was used for the weak decays of the light baryons.", "\\bibitem{Donoghue:1981uk}\n" "J.~F.~Donoghue and B.~R.~Holstein,\n" "Phys.\\ Rev.\\ D {\\bf 25} (1982) 206.\n" "%%CITATION = PHRVA,D25,206;%%\n"); static Parameter<BaryonSimpleFormFactor,double> interfaceg_A ("g_A", "The axial-vector coupling in neutron beta decay.", &BaryonSimpleFormFactor::_gA, 1.25, 0.0, 10.0, false, false, true); static Parameter<BaryonSimpleFormFactor,double> interfacealpha_D ("alpha_D", "SU(3) breaking parameter which is the ratio D/(D+F). ", &BaryonSimpleFormFactor::_alphaD, 0.6, 0.0, 1.0, false, false, true); static Parameter<BaryonSimpleFormFactor,double> interfaceeta_V ("eta_V", "The eta_V SU(3) breaking parameter", &BaryonSimpleFormFactor::_etaV, .97, 0.0, 10.0, false, false, true); static Parameter<BaryonSimpleFormFactor,double> interfaceeta_A ("eta_A", "The eta_A SU(3) breaking parameter", &BaryonSimpleFormFactor::_etaA, 1.08, 0.0, 10.0, false, false, true); static Parameter<BaryonSimpleFormFactor,double> interfacerho_E ("rho_E", "The SU(3) breaking parameter for the electric dipole moment.", &BaryonSimpleFormFactor::_rhoE, 0.094, 0.0, 10.0, false, false, true); static Parameter<BaryonSimpleFormFactor,double> interfacerho_M ("rho_M", "The SU(3) breaking parameter for the magentic dipole moment.", &BaryonSimpleFormFactor::_rhoM, 0.860, 0.0, 10.0, false, false, true); } void BaryonSimpleFormFactor:: SpinHalfSpinHalfFormFactor(Energy2,int iloc, int,int,Energy,Energy, Complex & f1v,Complex & f2v,Complex & f3v, Complex & f1a,Complex & f2a,Complex & f3a) { useMe(); f1v = _f1[iloc]; f1a = -_g1[iloc]; f2v = -_f2[iloc]; f2a = _g2[iloc]; f3v = 0.; f3a = 0.; } void BaryonSimpleFormFactor::dataBaseOutput(ofstream& output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::BaryonSimpleFormFactor " << name() << " \n"; output << "newdef " << name() << ":g_A " << _gA << " \n"; output << "newdef " << name() << ":alpha_D " << _alphaD << " \n"; output << "newdef " << name() << ":eta_V " << _etaV << " \n"; output << "newdef " << name() << ":eta_A " << _etaA << " \n"; output << "newdef " << name() << ":rho_E " << _rhoE << " \n"; output << "newdef " << name() << ":rho_M " << _rhoM << " \n"; BaryonFormFactor::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/LightBaryonQuarkModelFormFactor.h�����������������������������0000644�0001750�0001750�00000012664�11754474773�026624� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_LightBaryonQuarkModelFormFactor_H #define HERWIG_LightBaryonQuarkModelFormFactor_H // This is the declaration of the LightBaryonQuarkModelFormFactor class. #include "BaryonFormFactor.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>LightBaryonQuarkModelFormFactor</code> class implements the * quark model calculation of hep-ph/9409272 for the form-factors for * the decay of baryons containing the light quarks. This can be adapted for * other models. * * @see BaryonFormFactor * */ class LightBaryonQuarkModelFormFactor: public BaryonFormFactor { public: /** * Default constructor */ LightBaryonQuarkModelFormFactor(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} public: /** @name Form Factors */ //@{ /** * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a * spin \f$\frac12\f$ baryon. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming baryon. * @param id1 The PDG code of the outgoing baryon. * @param m0 The mass of the incoming baryon. * @param m1 The mass of the outgoing baryon. * @param f1v The form factor \f$F^V_1\f$. * @param f2v The form factor \f$F^V_2\f$. * @param f3v The form factor \f$F^V_3\f$. * @param f1a The form factor \f$F^A_1\f$. * @param f2a The form factor \f$F^A_2\f$. * @param f3a The form factor \f$F^A_3\f$. */ virtual void SpinHalfSpinHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, Energy m0, Energy m1, Complex & f1v,Complex & f2v,Complex & f3v, Complex & f1a,Complex & f2a,Complex & f3a); //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<LightBaryonQuarkModelFormFactor> initLightBaryonQuarkModelFormFactor; /** * Private and non-existent assignment operator. */ LightBaryonQuarkModelFormFactor & operator=(const LightBaryonQuarkModelFormFactor &); private: /** * The form-factor \f$f_1\f$ at \f$q^2=0\f$. */ vector<double> _f1; /** * The form-factor \f$f_2\f$ at \f$q^2=0\f$. */ vector<InvEnergy> _f2; /** * The form-factor \f$g_1\f$ at \f$q^2=0\f$. */ vector<double> _g1; /** * The form-factor \f$g_2\f$ at \f$q^2=0\f$. */ vector<InvEnergy> _g2; /** * The mass for the energy dependence of the \f$f_1\f$ form factor. */ vector<Energy> _Lambdaf1; /** * The mass for the energy dependence of the \f$f_2\f$ form factor. */ vector<Energy> _Lambdaf2; /** * The mass for the energy dependence of the \f$g_1\f$ form factor. */ vector<Energy> _Lambdag1; /** * The mass for the energy dependence of the \f$g_2\f$ form factor. */ vector<Energy> _Lambdag2; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of LightBaryonQuarkModelFormFactor. */ template <> struct BaseClassTrait<Herwig::LightBaryonQuarkModelFormFactor,1> { /** Typedef of the base class of LightBaryonQuarkModelFormFactor. */ typedef Herwig::BaryonFormFactor NthBase; }; template <> /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ struct ClassTraits<Herwig::LightBaryonQuarkModelFormFactor> : public ClassTraitsBase<Herwig::LightBaryonQuarkModelFormFactor> { /** Return the class name. */ static string className() { return "Herwig::LightBaryonQuarkModelFormFactor"; } /** * Return the class name. * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_LightBaryonQuarkModelFormFactor_H */ ����������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BallZwickyScalarFormFactor.h����������������������������������0000644�0001750�0001750�00000015101�11754474773�025603� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // BallZwickyScalarFormFactor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_BallZwickyScalarFormFactor_H #define HERWIG_BallZwickyScalarFormFactor_H // // This is the declaration of the BallZwickyScalarFormFactor class. // #include "ScalarFormFactor.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * This class is the implementation of the form-factors of PRD71 014015 (2005) for * the form-factor for the decay of a B-meson to a light pseudoscalar meson. * * This class is one of the few which includes the penguin form factors in addition * to the standard weak decay form factors. * * @see ScalarFormFactor * @see BallZwickyVectorFormFactor */ class BallZwickyScalarFormFactor: public ScalarFormFactor { public: /** * Default constructor */ BallZwickyScalarFormFactor(); /** @name Form-Factors */ //@{ /** * The form factor for the weak decay of a scalar to a scalar. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param f0 The form-factor \f$f_0\f$. * @param fp The form-factor \f$f_+\f$. */ virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0, int id1, Energy m0, Energy m1, Complex & f0,Complex & fp) const; /** * The form factor for the weak penguin decay of a scalar meson to a scalar meson. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param fT The form factor \f$f_T\f$. */ void ScalarScalarSigmaFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0, Energy m1,Complex & fT) const; //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<BallZwickyScalarFormFactor> initBallZwickyScalarFormFactor; /** * Private and non-existent assignment operator. */ BallZwickyScalarFormFactor & operator=(const BallZwickyScalarFormFactor &); private: /** @name Coefficients for the form factors.*/ //@{ /** * The coefficient \f$r_1\f$ for the \f$f_0(q^2)\f$ form factor. */ vector<double> _r10; /** * The coefficient \f$r_2\f$ for the \f$f_0(q^2)\f$ form factor. */ vector<double> _r20; /** * The coefficient \f$r_1\f$ for the \f$f_+(q^2)\f$ form factor. */ vector<double> _r1plus; /** * The coefficient \f$r_2\f$ for the \f$f_+(q^2)\f$ form factor. */ vector<double> _r2plus; /** * The coefficient \f$r_1\f$ for the \f$f_T(q^2)\f$ form factor. */ vector<double> _r1T; /** * The coefficient \f$r_2\f$ for the \f$f_T(q^2)\f$ form factor. */ vector<double> _r2T; //@} /** @name Masses for the form factors.*/ //@{ /** * The mass \f$(m_1)^2\f$ \f$f_0(q^2)\f$ form factor. */ vector<Energy2> _m120; /** * The mass \f$m_{\rm fit}^2\f$ \f$f_0(q^2)\f$ form factor. */ vector<Energy2> _mfit20; /** * The mass \f$(m_1)^2\f$ \f$f_+(q^2)\f$ form factor. */ vector<Energy2> _m12plus; /** * The mass \f$m_{\rm fit}^2\f$ \f$f_+(q^2)\f$ form factor. */ vector<Energy2> _mfit2plus; /** * The mass \f$(m_1)^2\f$ \f$f_T(q^2)\f$ form factor. */ vector<Energy2> _m12T; /** * The mass \f$m_{\rm fit}^2\f$ \f$f_T(q^2)\f$ form factor. */ vector<Energy2> _mfit2T; //@} /** * The \f$\eta-\eta'\f$ mixing angle */ double _thetaeta; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * BallZwickyScalarFormFactor. */ template <> struct BaseClassTrait<Herwig::BallZwickyScalarFormFactor,1> { /** Typedef of the base class of BallZwickyScalarFormFactor. */ typedef Herwig::ScalarFormFactor NthBase; }; /** * This template specialization informs ThePEG about the name of the * BallZwickyScalarFormFactor class. */ template <> struct ClassTraits<Herwig::BallZwickyScalarFormFactor> : public ClassTraitsBase<Herwig::BallZwickyScalarFormFactor> { /** Return the class name. */ static string className() { return "Herwig::BallZwickyScalarFormFactor"; } /** Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_BallZwickyScalarFormFactor_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BaryonFormFactor.cc�������������������������������������������0000644�0001750�0001750�00000013743�11754474773�024004� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the BaryonFormFactor class. // #include "BaryonFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" namespace Herwig { using namespace ThePEG; void BaryonFormFactor::doinit() { Interfaced::doinit(); // check the consistency of the parameters unsigned int isize(_incomingid.size()); if(isize!=_outgoingid.size() || isize!=_incomingJ.size()||isize!=_outgoingJ.size()|| isize!=_spectator1.size()|| isize!=_spectator2.size()|| isize!=_inquark.size()|| isize!=_outquark.size()) {throw InitException() << "Inconsistent parameters in BaryonFormFactor::doinit() " << Exception::abortnow;} } void BaryonFormFactor::persistentOutput(PersistentOStream & os) const { os << _incomingid << _outgoingid << _incomingJ << _outgoingJ << _spectator1 << _spectator2 << _inquark << _outquark << _numbermodes; } void BaryonFormFactor::persistentInput(PersistentIStream & is, int) { is >> _incomingid >> _outgoingid >> _incomingJ >> _outgoingJ >> _spectator1 >> _spectator2 >> _inquark >> _outquark >> _numbermodes; } AbstractClassDescription<BaryonFormFactor> BaryonFormFactor::initBaryonFormFactor; // Definition of the static class description member. void BaryonFormFactor::Init() { static ClassDocumentation<BaryonFormFactor> documentation ("The BaryonFormFactor class is the base class for" " the implementation of the form factors for weak decays of baryon."); static ParVector<BaryonFormFactor,int> interfaceIncoming ("Incoming", "The id of the incoming baryons.", &BaryonFormFactor::_incomingid, 0, 0, 0, 0, 1000000, false, false, true); static ParVector<BaryonFormFactor,int> interfaceOutgoing ("Outgoing", "The id of the outgoing baryons.", &BaryonFormFactor::_outgoingid, 0, 0, 0, 0, 1000000, false, false, true); static ParVector<BaryonFormFactor,int> interfaceInSpin ("InSpin", "The spin of the incoming baryons to decide which form factors to use.", &BaryonFormFactor::_incomingJ, 0, 0, 0, 0, 2, false, false, true); static ParVector<BaryonFormFactor,int> interfaceOutSpin ("OutSpin", "The spin of the outgoing baryons to decide which form factors to use.", &BaryonFormFactor::_outgoingJ, 0, 0, 0, 0, 4, false, false, true); static ParVector<BaryonFormFactor,int> interfaceSpectator1 ("Spectator1", "The first specator quark.", &BaryonFormFactor::_spectator1, 0, 0, 0, 0, 5, false, false, true); static ParVector<BaryonFormFactor,int> interfaceSpectator2 ("Spectator2", "The second specator quark.", &BaryonFormFactor::_spectator2, 0, 0, 0, 0, 5, false, false, true); static ParVector<BaryonFormFactor,int> interfaceInQuark ("InQuark", "The PDG code for the decaying quark.", &BaryonFormFactor::_inquark, 0, 0, 0, 0, 5, false, false, true); static ParVector<BaryonFormFactor,int> interfaceOutQuark ("OutQuark", "The PDG code for the quark produced in the decay.", &BaryonFormFactor::_outquark, 0, 0, 0, 0, 5, false, false, true); } // form factor for spin-1/2 to spin-1/2 void BaryonFormFactor::SpinHalfSpinHalfFormFactor(Energy2,int,int,int,Energy,Energy, Complex &,Complex &,Complex &, Complex &,Complex &,Complex &) { throw Exception() << "Error in BaryonFormFactor::SpinHalfSpinHalfFormFactor" << " not implemented" << Exception::abortnow; } void BaryonFormFactor::SpinHalfSpinThreeHalfFormFactor(Energy2,int,int,int,Energy, Energy,Complex &,Complex &, Complex &,Complex &,Complex &, Complex &,Complex &,Complex &) { throw Exception() << "Error in BaryonFormFactor::SpinHalfSpinThreeHalfFormFactor" << " not implemented" << Exception::abortnow; } // output the information for the database void BaryonFormFactor::dataBaseOutput(ofstream & output,bool header,bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::BaryonFormFactor " << name() << " \n"; for(unsigned int ix=0;ix<_incomingid.size();++ix) { if(ix<_numbermodes) { output << "newdef " << name() << ":Incoming " << ix << " " << _incomingid[ix] << endl; output << "newdef " << name() << ":Outgoing " << ix << " " << _outgoingid[ix] << endl; output << "newdef " << name() << ":InSpin " << ix << " " << _incomingJ[ix] << endl; output << "newdef " << name() << ":OutSpin " << ix << " " << _outgoingJ[ix] << endl; output << "newdef " << name() << ":Spectator1 " << ix << " " << _spectator1[ix] << endl; output << "newdef " << name() << ":Spectator2 " << ix << " " << _spectator2[ix] << endl; output << "newdef " << name() << ":InQuark " << ix << " " << _inquark[ix] << endl; output << "newdef " << name() << ":OutQuark " << ix << " " << _outquark[ix]<< endl; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incomingid[ix] << endl; output << "insert " << name() << ":Outgoing " << ix << " " << _outgoingid[ix] << endl; output << "insert " << name() << ":InSpin " << ix << " " << _incomingJ[ix] << endl; output << "insert " << name() << ":OutSpin " << ix << " " << _outgoingJ[ix] << endl; output << "insert " << name() << ":Spectator1 " << ix << " " << _spectator1[ix] << endl; output << "insert " << name() << ":Spectator2 " << ix << " " << _spectator2[ix] << endl; output << "insert " << name() << ":InQuark " << ix << " " << _inquark[ix] << endl; output << "insert " << name() << ":OutQuark " << ix << " " << _outquark[ix]<< endl; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } } �����������������������������herwig++-2.6.0.orig/Decay/FormFactors/HQETFormFactor.cc���������������������������������������������0000644�0001750�0001750�00000013267�11754474773�023314� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HQETFormFactor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the HQETFormFactor class. // #include "HQETFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; HQETFormFactor::HQETFormFactor() { // parameters from arXiv:0705.4008 // F(1) from F(1)V_cb and our value of V_cb _f1scalar = 1.0269328; _f1vector = 0.84; // slope _rho2scalar = 1.17; _rho2vector = 1.179; // R_1(1) _r1 = 1.417; // R_2(1) _r2 = 0.836; // allowed form factors addFormFactor(-521, 421 ,0,-2, 5, 4); addFormFactor(-521, 423 ,1,-2, 5, 4); addFormFactor(-511, 411 ,0, 1, 5, 4); addFormFactor(-511, 413 ,1, 1, 5, 4); // set the initial number of modes initialModes(numberOfFactors()); } void HQETFormFactor::persistentOutput(PersistentOStream & os) const { os << _f1scalar << _f1vector << _r1 << _r2 << _rho2scalar << _rho2vector; } void HQETFormFactor::persistentInput(PersistentIStream & is, int) { is >> _f1scalar >> _f1vector >> _r1 >> _r2 >> _rho2scalar >> _rho2vector; } ClassDescription<HQETFormFactor> HQETFormFactor::initHQETFormFactor; // Definition of the static class description member. void HQETFormFactor::Init() { static ClassDocumentation<HQETFormFactor> documentation ("The HQETFormFactor class uses the parameterisation of hep-ph/9712417" " of the form factor in the heavy quark limit.", "The parameterisation of \\cite{Caprini:1997mu} was used for the " "$B\\to D^{(*)}$ form factors together with the parameters from" "\\cite{Snyder:2007qn} for the $D$ and \\cite{Aubert:2007rs}" " for the $D^*$", "\\bibitem{Caprini:1997mu} I.~Caprini, L.~Lellouch and M.~Neubert," "Nucl.\\ Phys.\\ B {\\bf 530} (1998) 153 [arXiv:hep-ph/9712417].\n" "%%CITATION = NUPHA,B530,153;%%\n" "\\bibitem{Aubert:2007rs} B.~Aubert {\\it et al.} [BABAR Collaboration]," "arXiv:0705.4008 [hep-ex]. %%CITATION = ARXIV:0705.4008;%%\n" "\\bibitem{Snyder:2007qn} A.~E.~Snyder, [arXiv:hep-ex/0703035].\n" "%%CITATION = ECONF,C0610161,015;%%\n"); static Parameter<HQETFormFactor,double> interfaceF1Scalar ("F1Scalar", "The normalisation factor for the scalar form factor", &HQETFormFactor::_f1scalar, 1.0269328, 0.0, 10.0, false, false, Interface::limited); static Parameter<HQETFormFactor,double> interfaceF1Vector ("F1Vector", "The normalisation factor for the vector form factor", &HQETFormFactor::_f1vector, 0.84, 0.0, 10.0, false, false, Interface::limited); static Parameter<HQETFormFactor,double> interfaceRho2Scalar ("Rho2Scalar", "The slope parameter for the scalar form factor", &HQETFormFactor::_rho2scalar, 1.17, 0.0, 10.0, false, false, Interface::limited); static Parameter<HQETFormFactor,double> interfaceRho2Vector ("Rho2Vector", "The slope parameter for the vector form factor", &HQETFormFactor::_rho2vector, 1.179, 0.0, 10.0, false, false, Interface::limited); static Parameter<HQETFormFactor,double> interfaceR1 ("R1", "The ratio R_1 at omega=1", &HQETFormFactor::_r1, 1.417, 0.0, 10.0, false, false, Interface::limited); static Parameter<HQETFormFactor,double> interfaceR2 ("R2", "The ratio R_2 at omega=1", &HQETFormFactor::_r2, 0.836, 0.0, 10.0, false, false, Interface::limited); } void HQETFormFactor::ScalarScalarFormFactor(Energy2 q2,unsigned int ,int,int, Energy m0,Energy m1,Complex & f0, Complex & fp) const { useMe(); double omega = 0.5*(sqr(m0)+sqr(m1)-q2)/m0/m1; double root = sqrt(1.+omega),rt2=sqrt(2.); double z = (root-rt2)/(root+rt2); double Rs = 2.*sqrt(m0*m1)/(m0+m1); fp = 1.-8.*_rho2scalar*z+((51.*_rho2scalar-10.)-(252*_rho2scalar-84.)*z)*sqr(z); fp *=_f1scalar/Rs; f0 = fp*(1.-q2/sqr(m0+m1)); } void HQETFormFactor::ScalarVectorFormFactor(Energy2 q2, unsigned int, int, int, Energy m0, Energy m1, Complex & A0, Complex & A1,Complex & A2, Complex & V) const { useMe(); double omega = 0.5*(sqr(m0)+sqr(m1)-q2)/m0/m1; double root = sqrt(1.+omega),rt2=sqrt(2.); double z = (root-rt2)/(root+rt2); double hA1 = _f1vector*(1.-8.*_rho2vector*z+((53.*_rho2vector-15.) -(231.*_rho2vector-91.)*z)*sqr(z)); double wmo=omega-1.; double R1 = _r1-0.12*wmo+0.05*sqr(wmo); double R2 = _r2+0.11*wmo-0.06*sqr(wmo); double Rs = 2.*sqrt(m0*m1)/(m0+m1); A1 = 0.5*(omega+1.)*Rs*hA1; A2 = R2*hA1/Rs; V =-R1*hA1/Rs; Complex A3 = 0.5/m1*((m0+m1)*A1-(m0-m1)*A2); A0 = A3+0.5*A2*q2/m1/(m0+m1); } void HQETFormFactor::dataBaseOutput(ofstream & os,bool header,bool create) const { if(header) os << "update decayers set parameters=\""; if(create) os << "create Herwig::HQETFormFactor " << name() << "\n"; ScalarFormFactor::dataBaseOutput(os,false,false); os << "newdef " << name() << ":F1Scalar " << _f1scalar << "\n"; os << "newdef " << name() << ":F1Vector " << _f1vector << "\n"; os << "newdef " << name() << ":Rho2Scalar " << _rho2scalar << "\n"; os << "newdef " << name() << ":Rho2Vector " << _rho2vector << "\n"; os << "newdef " << name() << ":R1 " << _r1 << "\n"; os << "newdef " << name() << ":R2 " << _r2 << "\n"; if(header) os << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/WSBFormFactor.h�����������������������������������������������0000644�0001750�0001750�00000014547�11754474773�023052� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // WSBFormFactor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_WSBFormFactor_H #define HERWIG_WSBFormFactor_H // // This is the declaration of the WSBFormFactor class. // #include "ScalarFormFactor.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The WSBFormFactor class is the implementation of the form factor * model of Z.Phys. C29, 637 for the semi-leptonic form factors. It includes * form factors for a number of \f$D\f$, \f$B\f$ and \f$D_s\f$ decays. * In practice the parameters * of the model were taken from Z.Phys. C34, 103 which includes a number of * decay modes which were not considered in the original paper. * * This form factor model is included both to give an alternative for many modes * to the ISGW models and for use in the factorisation approxmation for hadronic * decays. * * @see ScalarFormFactor * @see ISGWFormFactor * @see ISGW2FormFactor * */ class WSBFormFactor: public ScalarFormFactor { public: /** * Default constructor */ WSBFormFactor(); /** @name Form-Factors */ //@{ /** * The form factor for the weak decay of a scalar to a scalar. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param f0 The form-factor \f$f_0\f$. * @param fp The form-factor \f$f_+\f$. */ virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0,Energy m1, Complex & f0,Complex & fp) const; /** * The form factor for the weak decay of a scalar to a vector. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param V The form-factor \f$V\f$ * @param A0 The form-factor \f$A_0\f$ * @param A1 The form-factor \f$A_1\f$ * @param A2 The form-factor \f$A_2\f$ */ virtual void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1, Energy m0, Energy m1, Complex & V, Complex & A0,Complex & A1,Complex & A2) const; //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<WSBFormFactor> initWSBFormFactor; /** * Private and non-existent assignment operator. */ WSBFormFactor & operator=(const WSBFormFactor &); private: /** @name Parameters for the form factors */ //@{ /** * The form factor at \f$q^2=0\f$ for scalar decays. */ vector<double> _F0; /** * the form factor \f$V\f$ at \f$q^2=0\f$ for vector decays. */ vector<double> _V; /** * the form factor \f$A_0\f$ at \f$q^2=0\f$ for vector decays. */ vector<double> _A0; /** * the form factor \f$A_1\f$ at \f$q^2=0\f$ for vector decays. */ vector<double> _A1; /** * the form factor \f$A_2\f$ at \f$q^2=0\f$ for vector decays. */ vector<double> _A2; /** * Spin-0 mass for the scalar form factors */ vector<Energy> _mS0; /** * Spin-1 mass for the scalar form factors */ vector<Energy> _mS1; /** * Spin-0 mass for the vector form factors */ vector<Energy> _mV0; /** * Spin-1 mass for the vector form factors */ vector<Energy> _mV1; //@} /** * The \f$\eta-\eta'\f$ mixing angle */ double _thetaeta; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * WSBFormFactor. */ template <> struct BaseClassTrait<Herwig::WSBFormFactor,1> { /** Typedef of the base class of WSBFormFactor. */ typedef Herwig::ScalarFormFactor NthBase; }; /** * This template specialization informs ThePEG about the name of the * WSBFormFactor class. */ template <> struct ClassTraits<Herwig::WSBFormFactor> : public ClassTraitsBase<Herwig::WSBFormFactor> { /** Return the class name. */ static string className() { return "Herwig::WSBFormFactor"; } /** Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_WSBFormFactor_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BtoSGammaHadronicMass.fh��������������������������������������0000644�0001750�0001750�00000000556�11754474773�024703� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the BtoSGammaHadronicMass class. // #ifndef ThePEG_BtoSGammaHadronicMass_FH #define ThePEG_BtoSGammaHadronicMass_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; class BtoSGammaHadronicMass; ThePEG_DECLARE_POINTERS(BtoSGammaHadronicMass,BtoSGammaHadronicMassPtr); } #endif ��������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BtoSGammaHadronicMass.h���������������������������������������0000644�0001750�0001750�00000012060�11754474773�024526� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // BtoSGammaHadronicMass.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_BtoSGammaHadronicMass_H #define HERWIG_BtoSGammaHadronicMass_H // // This is the declaration of the BtoSGammaHadronicMass class. // #include "ThePEG/Interface/Interfaced.h" #include "BtoSGammaHadronicMass.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The BtoSGammaHadronicMass class is the base class for the implementation * of models of the hadronic mass spectrum in \f$B\to s\gamma\f$ decays. * Classes inheriting from this class should implement the hadronicMass() * member which should return a value of the hadronic mass selected from * the distribution. * * The parameters relating to the minimum and maximum values of the mass are stored * in this class. * */ class BtoSGammaHadronicMass: public Interfaced { public: /** * The default constructor. */ BtoSGammaHadronicMass() : _minMass(825*MeV),_maxMass(5300*MeV) {} /** * Virtual member which must be implemented in classes inheriting from this * class to return the hadronic mass. * @param mb The mass of the decaying B meson * @param mquark The minimum mass of the hadronic system based on the consistuent quark * masses. * @return The hadronic mass */ virtual Energy hadronicMass(Energy mb,Energy mquark) =0; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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(); protected: /** @name Access to the limits on the mass. */ //@{ /** * Minimum mass */ Energy minMass() const {return _minMass;} /** * Maximum mass */ Energy maxMass() const {return _maxMass;} //@} /** @name Functions for the fermi motion needed in classes inheriting from this */ //@{ /** * Exponential function of the form, \f$N(1-x)^ae^{-3\bar{\Lambda}^2x/\lambda_1}\f$, * where * \f$x=k_+/\bar{\Lambda}\f$ taken from hep-ph/9805303 * @param scale The energy scale, \f$k_+\f$, at which to evaluate the function. * @param lambda The hadronic scale, \f$\bar{\Lambda}\f$ * @param a The shape parameter, \f$a\f$. * @param norm The normalisation, \f$N\f$. * @param lambda1 Scale related to kinetic energy of b quark, \f$\lambda_1\f$. */ InvEnergy exponentialFermiFunction(Energy scale,Energy lambda, double a, InvEnergy norm,Energy2 lambda1 ) const { double x(scale/lambda); return norm*pow(1.-x,a)*exp(-3.*sqr(lambda)/lambda1*x); } //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<BtoSGammaHadronicMass> initBtoSGammaHadronicMass; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BtoSGammaHadronicMass & operator=(const BtoSGammaHadronicMass &); private: /** * The minimum value of the hadronic mass */ Energy _minMass; /** * The maximum value of the hadronic mass */ Energy _maxMass; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of BtoSGammaHadronicMass. */ template <> struct BaseClassTrait<Herwig::BtoSGammaHadronicMass,1> { /** Typedef of the first base class of BtoSGammaHadronicMass. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the BtoSGammaHadronicMass class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::BtoSGammaHadronicMass> : public ClassTraitsBase<Herwig::BtoSGammaHadronicMass> { /** Return a platform-independent class name */ static string className() { return "Herwig::BtoSGammaHadronicMass"; } }; /** @endcond */ } #endif /* HERWIG_BtoSGammaHadronicMass_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/WSBFormFactor.cc����������������������������������������������0000644�0001750�0001750�00000037117�11754474773�023206� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // WSBFormFactor.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the WSBFormFactor class. // #include "WSBFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/Repository/EventGenerator.h" using namespace Herwig; void WSBFormFactor::doinit() { ScalarFormFactor::doinit(); unsigned int isize(numberOfFactors()); if(isize!=_F0.size() ||isize!=_V.size() ||isize!=_A0.size() || isize!=_A1.size() ||isize!=_A2.size() ||isize!=_mS0.size()|| isize!=_mS1.size()||isize!=_mV0.size()||isize!=_mV1.size()) throw InitException() << "Inconsistent parameters in WSBFormFactor::doinit()" << Exception::abortnow; } WSBFormFactor::WSBFormFactor() : _F0(51), _V(51), _A0(51), _A1(51), _A2(51), _mS0(51), _mS1(51), _mV0(51), _mV1(51) { // modes handled by this and the parameters model // K to pi addFormFactor(-321, 111,0,-2,3,2); addFormFactor(-311, 211,0,-1,3,2); addFormFactor(-321,-211,0,-2,3,1); addFormFactor(-311, 111,0,-1,3,1); for(unsigned int ix=0;ix<4;++ix) { _F0[ix] = 0.992; _V[ix] = 0.000; _A0[ix] = 0.000; _A1[ix] = 0.000; _A2[ix] = 0.000; _mS0[ix] = 0.494*GeV; _mV0[ix] = 0.892*GeV; _mS1[ix] = 1.430*GeV; _mV1[ix] = 1.273*GeV; } // D to K addFormFactor(421,-321,0,-2,4,3); addFormFactor(411,-311,0,-1,4,3); for(unsigned int ix=4;ix<6;++ix) { _F0[ix] = 0.762; _V[ix] = 0.000; _A0[ix] = 0.000; _A1[ix] = 0.000; _A2[ix] = 0.000; _mS0[ix] = 1.97*GeV; _mV0[ix] = 2.11*GeV; _mS1[ix] = 2.60*GeV; _mV1[ix] = 2.53*GeV; } // D to pi addFormFactor(421,-211,0,-2,4,1); addFormFactor(421, 111,0,-2,4,2); addFormFactor(411, 111,0,-1,4,1); addFormFactor(411, 211,0,-1,4,2); for(unsigned int ix=6;ix<10;++ix) { _F0[ix] = 0.692; _V[ix] = 0.000; _A0[ix] = 0.000; _A1[ix] = 0.000; _A2[ix] = 0.000; _mS0[ix] = 1.87*GeV; _mV0[ix] = 2.01*GeV; _mS1[ix] = 2.47*GeV; _mV1[ix] = 2.42*GeV; } // D to eta addFormFactor(421,221,0,-2,4,2); addFormFactor(411,221,0,-1,4,1); for(unsigned int ix=10;ix<12;++ix) { _F0[ix] = 0.681; _V[ix] = 0.000; _A0[ix] = 0.000; _A1[ix] = 0.000; _A2[ix] = 0.000; _mS0[ix] = 1.87*GeV; _mV0[ix] = 2.01*GeV; _mS1[ix] = 2.47*GeV; _mV1[ix] = 2.42*GeV; } // D to eta' addFormFactor(421,331,0,-2,4,2); addFormFactor(411,331,0,-1,4,1); for(unsigned int ix=12;ix<14;++ix) { _F0[ix] = 0.655; _V[ix] = 0.000; _A0[ix] = 0.000; _A1[ix] = 0.000; _A2[ix] = 0.000; _mS0[ix] = 1.87*GeV; _mV0[ix] = 2.01*GeV; _mS1[ix] = 2.47*GeV; _mV1[ix] = 2.42*GeV; } // D to K* addFormFactor(421,-323,1,-2,4,3); addFormFactor(411,-313,1,-1,4,3); for(unsigned int ix=14;ix<16;++ix) { _F0[ix] = 0.000; _V[ix] = 1.226; _A0[ix] = 0.733; _A1[ix] = 0.880; _A2[ix] = 1.147; _mS0[ix] = 1.97*GeV; _mV0[ix] = 2.11*GeV; _mS1[ix] = 2.60*GeV; _mV1[ix] = 2.53*GeV; } // D to rho addFormFactor(421,-213,1,-2,4,1); addFormFactor(421, 113,1,-2,4,2); addFormFactor(411, 113,1,-1,4,1); addFormFactor(411, 213,1,-1,4,2); for(unsigned int ix=16;ix<20;++ix) { _F0[ix] = 0.000; _V[ix] = 1.225; _A0[ix] = 0.669; _A1[ix] = 0.775; _A2[ix] = 0.923; _mS0[ix] = 1.87*GeV; _mV0[ix] = 2.01*GeV; _mS1[ix] = 2.47*GeV; _mV1[ix] = 2.42*GeV; } // D to omega addFormFactor(411,223,1,-1,4,1); addFormFactor(421,223,1,-2,4,2); for(unsigned int ix=20;ix<22;++ix) { _F0[ix] = 0.000; _V[ix] = 1.236; _A0[ix] = 0.669; _A1[ix] = 0.772; _A2[ix] = 0.920; _mS0[ix] = 1.87*GeV; _mV0[ix] = 2.01*GeV; _mS1[ix] = 2.47*GeV; _mV1[ix] = 2.42*GeV; } // D_s to eta addFormFactor(431,221,0,-3,4,3); _F0[22] = 0.723; _V[22] = 0.000; _A0[22] = 0.000; _A1[22] = 0.000; _A2[22] = 0.000; _mS0[22] = 1.97*GeV; _mV0[22] = 2.11*GeV; _mS1[22] = 2.60*GeV; _mV1[22] = 2.53*GeV; // D_s to eta' addFormFactor(431,331,0,-3,4,3); _F0[23] = 0.704; _V[23] = 0.000; _A0[23] = 0.000; _A1[23] = 0.000; _A2[23] = 0.000; _mS0[23] = 1.97*GeV; _mV0[23] = 2.11*GeV; _mS1[23] = 2.60*GeV; _mV1[23] = 2.53*GeV; // D_s to K addFormFactor(431,311,0,-3,4,1); addFormFactor(431,321,0,-3,4,2); for(unsigned int ix=24;ix<26;++ix) { _F0[ix] = 0.643; _V[ix] = 0.000; _A0[ix] = 0.000; _A1[ix] = 0.000; _A2[ix] = 0.000; _mS0[ix] = 1.87*GeV; _mV0[ix] = 2.01*GeV; _mS1[ix] = 2.47*GeV; _mV1[ix] = 2.42*GeV; } // D_s to K* addFormFactor(431,313,1,-3,4,1); addFormFactor(431,323,1,-3,4,2); for(unsigned int ix=26;ix<28;++ix) { _F0[ix] = 0.000; _V[ix] = 1.250; _A0[ix] = 0.634; _A1[ix] = 0.717; _A2[ix] = 0.853; _mS0[ix] = 1.87*GeV; _mV0[ix] = 2.01*GeV; _mS1[ix] = 2.47*GeV; _mV1[ix] = 2.42*GeV; } // D_s to phi addFormFactor(431,333,1,-3,4,3); _F0[28] = 0.000; _V[28] = 1.319; _A0[28] = 0.700; _A1[28] = 0.820; _A2[28] = 1.076; _mS0[28] = 1.97*GeV; _mV0[28] = 2.11*GeV; _mS1[28] = 2.60*GeV; _mV1[28] = 2.53*GeV; // B to D addFormFactor(-521,421,0,-2,5,4); addFormFactor(-511,411,0,-2,5,4); for(unsigned int ix=29;ix<31;++ix) { _F0[ix] = 0.690; _V[ix] = 0.000; _A0[ix] = 0.000; _A1[ix] = 0.000; _A2[ix] = 0.000; _mS0[ix] = 6.30*GeV; _mV0[ix] = 6.34*GeV; _mS1[ix] = 6.80*GeV; _mV1[ix] = 6.73*GeV; } // B to K addFormFactor(-521,-321,0,-2,5,3); addFormFactor(-511,-311,0,-1,5,3); for(unsigned int ix=31;ix<33;++ix) { _F0[ix] = 0.379; _V[ix] = 0.000; _A0[ix] = 0.000; _A1[ix] = 0.000; _A2[ix] = 0.000; _mS0[ix] = 5.38*GeV; _mV0[ix] = 5.43*GeV; _mS1[ix] = 5.89*GeV; _mV1[ix] = 5.82*GeV; } // B to pi addFormFactor(-521, 111,0,-2,5,2); addFormFactor(-511, 211,0,-1,5,2); addFormFactor(-521,-211,0,-2,5,1); addFormFactor(-511, 111,0,-1,5,1); for(unsigned int ix=33;ix<37;++ix) { _F0[ix] = 0.333; _V[ix] = 0.000; _A0[ix] = 0.000; _A1[ix] = 0.000; _A2[ix] = 0.000; _mS0[ix] = 5.27*GeV; _mV0[ix] = 5.32*GeV; _mS1[ix] = 5.78*GeV; _mV1[ix] = 5.71*GeV; } // B to eta addFormFactor(-521,221,0,-2,5,2); addFormFactor(-511,221,0,-1,5,1); for(unsigned int ix=37;ix<39;++ix) { _F0[ix] = 0.307; _V[ix] = 0.000; _A0[ix] = 0.000; _A1[ix] = 0.000; _A2[ix] = 0.000; _mS0[ix] = 5.27*GeV; _mV0[ix] = 5.32*GeV; _mS1[ix] = 5.78*GeV; _mV1[ix] = 5.71*GeV; } // B to eta' addFormFactor(-521,331,0,-2,5,2); addFormFactor(-511,331,0,-1,5,1); for(unsigned int ix=39;ix<41;++ix) { _F0[ix] = 0.254; _V[ix] = 0.000; _A0[ix] = 0.000; _A1[ix] = 0.000; _A2[ix] = 0.000; _mS0[ix] = 5.27*GeV; _mV0[ix] = 5.32*GeV; _mS1[ix] = 5.78*GeV; _mV1[ix] = 5.71*GeV; } // B to D* addFormFactor(-521,423,1,-2,5,4); addFormFactor(-511,413,1,-1,5,4); for(unsigned int ix=41;ix<43;++ix) { _F0[ix] = 0.000; _V[ix] = 0.705; _A0[ix] = 0.623; _A1[ix] = 0.651; _A2[ix] = 0.686; _mS0[ix] = 6.30*GeV; _mV0[ix] = 6.34*GeV; _mS1[ix] = 6.80*GeV; _mV1[ix] = 6.73*GeV; } // B to K* addFormFactor(-521,-323,1,-2,5,3); addFormFactor(-511,-313,1,-1,5,3); for(unsigned int ix=43;ix<45;++ix) { _F0[ix] = 0.000; _V[ix] = 0.369; _A0[ix] = 0.321; _A1[ix] = 0.328; _A2[ix] = 0.331; _mS0[ix] = 5.38*GeV; _mV0[ix] = 5.43*GeV; _mS1[ix] = 5.89*GeV; _mV1[ix] = 5.82*GeV; } // B to rho addFormFactor(-521, 113,1,-2,5,2); addFormFactor(-511, 213,1,-1,5,2); addFormFactor(-521,-213,1,-2,5,1); addFormFactor(-511, 113,1,-1,5,1); for(unsigned int ix=45;ix<49;++ix) { _F0[ix] = 0.000; _V[ix] = 0.329; _A0[ix] = 0.281; _A1[ix] = 0.283; _A2[ix] = 0.283; _mS0[ix] = 5.27*GeV; _mV0[ix] = 5.32*GeV; _mS1[ix] = 5.78*GeV; _mV1[ix] = 5.71*GeV; } // B to omega addFormFactor(-521,223,1,-2,5,2); addFormFactor(-511,223,1,-1,5,1); for(unsigned int ix=49;ix<51;++ix) { _F0[ix] = 0.000; _V[ix] = 0.328; _A0[ix] = 0.280; _A1[ix] = 0.281; _A2[ix] = 0.281; _mS0[ix] = 5.27*GeV; _mV0[ix] = 5.32*GeV; _mS1[ix] = 5.78*GeV; _mV1[ix] = 5.71*GeV; } // set the initial number of modes initialModes(numberOfFactors()); // eta-eta' mixing angle _thetaeta=-0.194; } void WSBFormFactor::persistentOutput(PersistentOStream & os) const { os << _F0 << _V << _A0 << _A1 << _A2 << ounit(_mS0,GeV) << ounit(_mS1,GeV) << ounit(_mV0,GeV) << ounit(_mV1,GeV) << _thetaeta; } void WSBFormFactor::persistentInput(PersistentIStream & is, int) { is >> _F0 >> _V >> _A0 >> _A1 >> _A2 >> iunit(_mS0,GeV) >> iunit(_mS1,GeV) >> iunit(_mV0,GeV) >> iunit(_mV1,GeV) >> _thetaeta; } ClassDescription<WSBFormFactor> WSBFormFactor::initWSBFormFactor; // Definition of the static class description member. void WSBFormFactor::Init() { static ClassDocumentation<WSBFormFactor> documentation ("The WSBFormFactor class is the implementation of the form-factors of " "Z.Phys.C29,637.", "The form factor model of \\cite{Bauer:1986bm,Wirbel:1985ji} was used" " for either semi-leptonic or hadronic weak decays", "\\bibitem{Bauer:1986bm} M.~Bauer, B.~Stech and M.~Wirbel,\n" "Z.\\ Phys.\\ C {\\bf 34} (1987) 103.\n" "%%CITATION = ZEPYA,C34,103;%%\n" "\\bibitem{Wirbel:1985ji} M.~Wirbel, B.~Stech and M.~Bauer," "Z.\\ Phys.\\ C {\\bf 29} (1985) 637.\n" "%%CITATION = ZEPYA,C29,637;%%\n"); static ParVector<WSBFormFactor,double> interfaceF0 ("F0", "The form-factor F0 at zero q^2", &WSBFormFactor::_F0, 0, 0, 0, -10., 10., false, false, true); static ParVector<WSBFormFactor,double> interfaceV ("V", "The form-factor V at zero q^2", &WSBFormFactor::_V, 0, 0, 0, -10., 10., false, false, true); static ParVector<WSBFormFactor,double> interfaceA0 ("A0", "The form-factor A0 at zero q^2", &WSBFormFactor::_A0, 0, 0, 0, -10., 10., false, false, true); static ParVector<WSBFormFactor,double> interfaceA1 ("A1", "The form-factor A1 at zero q^2", &WSBFormFactor::_A1, 0, 0, 0, -10., 10., false, false, true); static ParVector<WSBFormFactor,double> interfaceA2 ("A2", "The form-factor F0 at zero q^2", &WSBFormFactor::_A2, 0, 0, 0, -10., 10., false, false, true); static ParVector<WSBFormFactor,Energy> interfaceScalarMass ("ScalarMass", "The scalar mass for the energy dependence of the form-factors.", &WSBFormFactor::_mS0, 1.*GeV, -1, 5.*GeV, -10.*GeV, 10.*GeV, false, false, true); static ParVector<WSBFormFactor,Energy> interfacePseudoScalarMass ("PseudoScalarMass", "The pseudoscalar mass for the energy dependence of the form-factors.", &WSBFormFactor::_mS1, 1.*GeV, -1, 5.*GeV, -10.*GeV, 10.*GeV, false, false, true); static ParVector<WSBFormFactor,Energy> interfaceVectorMass ("VectorMass", "The vector mass for the energy dependence of the form-factors.", &WSBFormFactor::_mV0, 1.*GeV, -1, 5.*GeV, -10.*GeV, 10.*GeV, false, false, true); static ParVector<WSBFormFactor,Energy> interfacePseudoVectorMass ("PseudoVectorMass", "The pseudovector mass for the energy dependence of the form-factors.", &WSBFormFactor::_mV1, 1.*GeV, -1, 5.*GeV, -10.*GeV, 10.*GeV, false, false, true); static Parameter<WSBFormFactor,double> interfaceThetaEtaEtaPrime ("ThetaEtaEtaPrime", "The eta-eta' mixing angle", &WSBFormFactor::_thetaeta, -0.194, -Constants::pi, Constants::pi, false, false, true); } // form-factor for scalar to scalar void WSBFormFactor::ScalarScalarFormFactor(Energy2 q2,unsigned int mode, int,int id1, Energy, Energy,Complex & f0, Complex & fp) const { useMe(); f0 = _F0[mode]/(1.-q2/sqr(_mS1[mode])); fp = _F0[mode]/(1.-q2/sqr(_mV0[mode])); int jspin,spect,inquark,outquark; formFactorInfo(mode,jspin,spect,inquark,outquark); if(abs(outquark)==abs(spect)) { double fact; if(id1==ParticleID::eta) { if(abs(outquark)==3) fact = -2.*cos(_thetaeta)/sqrt(6.)-sin(_thetaeta)/sqrt(3.); else fact = cos(_thetaeta)/sqrt(6.)-sin(_thetaeta)/sqrt(3.); } else if(id1==ParticleID::etaprime) { if(abs(outquark)==3) fact = -2.*sin(_thetaeta)/sqrt(6.)+cos(_thetaeta)/sqrt(3.); else fact = sin(_thetaeta)/sqrt(6.)+cos(_thetaeta)/sqrt(3.); } else if(id1==ParticleID::pi0&&abs(outquark)==1) fact=-sqrt(0.5); else fact= sqrt(0.5); f0*=fact; fp*=fact; } } void WSBFormFactor::ScalarVectorFormFactor(Energy2 q2,unsigned int mode, int, int id1, Energy, Energy,Complex & A0, Complex & A1,Complex & A2,Complex & V) const { A0 = -_A0[mode]/(1.-q2/_mS0[mode]/_mS0[mode]); A1 = -_A1[mode]/(1.-q2/_mV1[mode]/_mV1[mode]); A2 = -_A2[mode]/(1.-q2/_mV1[mode]/_mV1[mode]); V = _V[mode]/(1.-q2/_mV0[mode]/_mV0[mode]); int jspin,spect,inquark,outquark; formFactorInfo(mode,jspin,spect,inquark,outquark); if(abs(outquark)==abs(spect)&&abs(spect)<3) { double fact = id1==ParticleID::rho0&&abs(outquark)==1 ? -sqrt(0.5) : sqrt(0.5); A0 *= fact; A1 *= fact; A2 *= fact; V *= fact; } } void WSBFormFactor::dataBaseOutput(ofstream & output,bool header,bool create) const { useMe(); if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::WSBFormFactor " << name() << " \n"; output << "newdef " << name() << ":ThetaEtaEtaPrime " << _thetaeta << "\n"; for(unsigned int ix=0;ix<numberOfFactors();++ix) { if(ix<initialModes()) { output << "newdef " << name() << ":F0 " << ix << " " << _F0[ix] << "\n"; output << "newdef " << name() << ":V " << ix << " " << _V[ix] << "\n"; output << "newdef " << name() << ":A0 " << ix << " " << _A0[ix] << "\n"; output << "newdef " << name() << ":A1 " << ix << " " << _A1[ix] << "\n"; output << "newdef " << name() << ":A2 " << ix << " " << _A2[ix] << "\n"; output << "newdef " << name() << ":ScalarMass " << ix << " " << _mS0[ix]/GeV << "\n"; output << "newdef " << name() << ":PseudoScalarMass " << ix << " " << _mS1[ix]/GeV << "\n"; output << "newdef " << name() << ":VectorMass " << ix << " " << _mV0[ix]/GeV << "\n"; output << "newdef " << name() << ":PseudoVectorMass " << ix << " " << _mV1[ix]/GeV << "\n"; } else { output << "insert " << name() << ":F0 " << ix << " " << _F0[ix] << "\n"; output << "insert " << name() << ":V " << ix << " " << _V[ix] << "\n"; output << "insert " << name() << ":A0 " << ix << " " << _A0[ix] << "\n"; output << "insert " << name() << ":A1 " << ix << " " << _A1[ix] << "\n"; output << "insert " << name() << ":A2 " << ix << " " << _A2[ix] << "\n"; output << "insert " << name() << ":ScalarMass " << ix << " " << _mS0[ix]/GeV << "\n"; output << "insert " << name() << ":PseudoScalarMass " << ix << " " << _mS1[ix]/GeV << "\n"; output << "insert " << name() << ":VectorMass " << ix << " " << _mV0[ix]/GeV << "\n"; output << "insert " << name() << ":PseudoVectorMass " << ix << " " << _mV1[ix]/GeV << "\n"; } } ScalarFormFactor::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/LightBaryonQuarkModelFormFactor.cc����������������������������0000644�0001750�0001750�00000024615�11754474773�026761� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the LightBaryonQuarkModelFormFactor class. // #include "LightBaryonQuarkModelFormFactor.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void LightBaryonQuarkModelFormFactor::doinit() { BaryonFormFactor::doinit(); // check that the parameters are consistent unsigned int isize=numberOfFactors(); if(isize!=_f1.size()||isize!=_f2.size()||isize!=_g1.size()||isize!=_g2.size()|| isize!=_Lambdaf1.size()||isize!=_Lambdaf2.size()|| isize!=_Lambdag1.size()||isize!=_Lambdag2.size()) throw InitException() << "Inconsistent parameters in " << "LightBaryonQuarkModelFormFactor::doinit()" << Exception::abortnow; } LightBaryonQuarkModelFormFactor::LightBaryonQuarkModelFormFactor() { // the various decay modes handled by the model and the parameters // neutron to proton addFormFactor(2112,2212,2,2,2,1,1,2); _f1.push_back(1.00);_f2.push_back(1.81/GeV); _g1.push_back(1.25);_g2.push_back(ZERO); _Lambdaf1.push_back(0.69*GeV);_Lambdaf2.push_back(0.96*GeV); _Lambdag1.push_back(0.76*GeV);_Lambdag2.push_back(1.04*GeV); // sigma+ to lambda addFormFactor(3222,3122,2,2,3,2,2,1); _f1.push_back(0.00);_f2.push_back(1.04/GeV); _g1.push_back(0.60);_g2.push_back(ZERO); _Lambdaf1.push_back(-0.32*GeV);_Lambdaf2.push_back(-1.72*GeV); _Lambdag1.push_back( 0.77*GeV);_Lambdag2.push_back( 1.05*GeV); // sigma- to lambda addFormFactor(3112,3122,2,2,3,1,1,2); _f1.push_back(0.00);_f2.push_back(1.04/GeV); _g1.push_back(0.60);_g2.push_back(ZERO); _Lambdaf1.push_back(-0.32*GeV);_Lambdaf2.push_back(-1.72*GeV); _Lambdag1.push_back( 0.77*GeV);_Lambdag2.push_back( 1.05*GeV); // sigma- to sigma0 addFormFactor(3112,3212,2,2,3,1,1,2); _f1.push_back(1.41);_f2.push_back(0.76/GeV); _g1.push_back(0.69);_g2.push_back(ZERO); _Lambdaf1.push_back(0.60*GeV);_Lambdaf2.push_back(0.81*GeV); _Lambdag1.push_back(0.77*GeV);_Lambdag2.push_back(1.04*GeV); // sigma0 to sigma+ addFormFactor(3212,3222,2,2,3,2,1,2); _f1.push_back(-1.41);_f2.push_back(-0.76/GeV); _g1.push_back(-0.69);_g2.push_back( ZERO); _Lambdaf1.push_back(0.60*GeV);_Lambdaf2.push_back(0.81*GeV); _Lambdag1.push_back(0.77*GeV);_Lambdag2.push_back(1.04*GeV); // Xi- to Xi0 addFormFactor(3312,3322,2,2,3,3,1,2); _f1.push_back(-1.00);_f2.push_back(0.73/GeV); _g1.push_back( 0.24);_g2.push_back(ZERO); _Lambdaf1.push_back(0.56*GeV);_Lambdaf2.push_back(0.71*GeV); _Lambdag1.push_back(0.76*GeV);_Lambdag2.push_back(1.04*GeV); // lambda to proton addFormFactor(3122,2212,2,2,1,2,3,2); _f1.push_back(-1.19);_f2.push_back(-0.850/GeV); _g1.push_back(-0.99);_g2.push_back(-0.025/GeV); _Lambdaf1.push_back(0.71*GeV);_Lambdaf2.push_back(0.98*GeV); _Lambdag1.push_back(0.81*GeV);_Lambdag2.push_back(1.12*GeV); // sigma0 to proton addFormFactor(3212,2212,2,2,2,1,3,2); _f1.push_back(-0.69);_f2.push_back(0.44/GeV); _g1.push_back( 0.19);_g2.push_back(0.0043/GeV); _Lambdaf1.push_back(0.64*GeV);_Lambdaf2.push_back(0.84*GeV); _Lambdag1.push_back(0.83*GeV);_Lambdag2.push_back(1.16*GeV); // sigma- to neutron addFormFactor(3112,2112,2,2,1,1,3,2); _f1.push_back(-0.97);_f2.push_back(0.62/GeV); _g1.push_back(0.27);_g2.push_back(0.0061/GeV); _Lambdaf1.push_back(0.64*GeV);_Lambdaf2.push_back(0.90*GeV); _Lambdag1.push_back(0.83*GeV);_Lambdag2.push_back(1.16*GeV); // xi- to lambda addFormFactor(3312,3122,2,2,3,1,3,2); _f1.push_back(1.19);_f2.push_back(0.07/GeV); _g1.push_back(0.33);_g2.push_back(0.0076/GeV); _Lambdaf1.push_back(0.68*GeV);_Lambdaf2.push_back(0.89*GeV); _Lambdag1.push_back(0.81*GeV);_Lambdag2.push_back(1.10*GeV); // xi- to sigma0 addFormFactor(3312,3212,2,2,3,1,3,2); _f1.push_back(0.69);_f2.push_back(0.98/GeV); _g1.push_back(0.94);_g2.push_back(0.022/GeV); _Lambdaf1.push_back(0.75*GeV);_Lambdaf2.push_back(1.05*GeV); _Lambdag1.push_back(0.81*GeV);_Lambdag2.push_back(1.12*GeV); // xi0 to sigma+ addFormFactor(3322,3222,2,2,3,2,3,2); _f1.push_back(0.98);_f2.push_back(1.38/GeV); _g1.push_back(1.33);_g2.push_back(0.031/GeV); _Lambdaf1.push_back(0.75*GeV);_Lambdaf2.push_back(1.05*GeV); _Lambdag1.push_back(0.81*GeV);_Lambdag2.push_back(1.12*GeV); // set the inital number of form factors initialModes(numberOfFactors()); } void LightBaryonQuarkModelFormFactor::persistentOutput(PersistentOStream & os) const { os << _f1 << ounit(_f2,1/GeV) << _g1 << ounit(_g2,1/GeV) << ounit(_Lambdaf1,GeV) << ounit(_Lambdaf2,GeV) << ounit(_Lambdag1,GeV) << ounit(_Lambdag2,GeV); } void LightBaryonQuarkModelFormFactor::persistentInput(PersistentIStream & is, int) { is >> _f1 >> iunit(_f2,1/GeV) >> _g1 >> iunit(_g2,1/GeV) >> iunit(_Lambdaf1,GeV) >> iunit(_Lambdaf2,GeV) >> iunit(_Lambdag1,GeV) >> iunit(_Lambdag2,GeV); } ClassDescription<LightBaryonQuarkModelFormFactor> LightBaryonQuarkModelFormFactor::initLightBaryonQuarkModelFormFactor; // Definition of the static class description member. void LightBaryonQuarkModelFormFactor::Init() { static ClassDocumentation<LightBaryonQuarkModelFormFactor> documentation ("The LightBaryonQuarkModelFormFactor class implements" " the quark model calculation of hep-ph/9409272 for the form-factors" " for the light quarks", "The quark model calculation of \\cite{Schlumpf:1994fb} was used" "for the weak decay of the light baryons", "\\bibitem{Schlumpf:1994fb}\n" "F.~Schlumpf,\n" "Phys.\\ Rev.\\ D {\\bf 51} (1995) 2262 [arXiv:hep-ph/9409272].\n" "%%CITATION = PHRVA,D51,2262;%%\n"); static ParVector<LightBaryonQuarkModelFormFactor,double> interfacef1 ("f1", "The form-factor f1 at zero q^2", &LightBaryonQuarkModelFormFactor::_f1, 0, 0, 0, -10., 10., false, false, true); static ParVector<LightBaryonQuarkModelFormFactor,double> interfaceg1 ("g1", "The form-factor g1 at zero q^2", &LightBaryonQuarkModelFormFactor::_g1, 0, 0, 0, -10., 10., false, false, true); static ParVector<LightBaryonQuarkModelFormFactor,InvEnergy> interfacef2 ("f2", "The form-factor f2 at zero q^2", &LightBaryonQuarkModelFormFactor::_f2, 1./GeV, 0, ZERO, -10./GeV, 10./GeV, false, false, true); static ParVector<LightBaryonQuarkModelFormFactor,InvEnergy> interfaceg2 ("g2", "The form-factor g2 at zero q^2", &LightBaryonQuarkModelFormFactor::_g2, 1./GeV, 0, ZERO, -10./GeV, 10./GeV, false, false, true); static ParVector<LightBaryonQuarkModelFormFactor,Energy> interfaceLambdaf1 ("Lambdaf1", "The first mass for the energy dependence of the f1 form-factor.", &LightBaryonQuarkModelFormFactor::_Lambdaf1, 1.*GeV, 0, ZERO, -10.*GeV, 10.*GeV, false, false, true); static ParVector<LightBaryonQuarkModelFormFactor,Energy> interfaceLambdaf2 ("Lambdaf2", "The second mass for the energy dependence of the f1 form-factor.", &LightBaryonQuarkModelFormFactor::_Lambdaf2, 1.*GeV, 0, ZERO, -10.*GeV, 10.*GeV, false, false, true); static ParVector<LightBaryonQuarkModelFormFactor,Energy> interfaceLambdag1 ("Lambdag1", "The first mass for the energy dependence of the g1 form-factor.", &LightBaryonQuarkModelFormFactor::_Lambdag1, 1.*GeV, 0, ZERO, -10.*GeV, 10.*GeV, false, false, true); static ParVector<LightBaryonQuarkModelFormFactor,Energy> interfaceLambdag2 ("Lambdag2", "The second mass for the energy dependence of the g1 form-factor.", &LightBaryonQuarkModelFormFactor::_Lambdag2, 1.*GeV, 0, ZERO, -10.*GeV, 10.*GeV, false, false, true); } // form factor for spin-1/2 to spin-1/2 void LightBaryonQuarkModelFormFactor:: SpinHalfSpinHalfFormFactor(Energy2 q2,int mode,int, int, Energy m0, Energy m1, Complex & f1v,Complex & f2v,Complex & f3v, Complex & f1a,Complex & f2a,Complex & f3a) { useMe(); // f_3 is zero f3v = 0.; f3a = 0.; // energy dependence of the f1 and g1 factors InvEnergy2 lam1,lam2; if(_Lambdaf1[mode]>ZERO) { lam1 = 1./sqr(_Lambdaf1[mode]); lam2 = 1./sqr(_Lambdaf2[mode]); f1v= _f1[mode]/(1.-q2*(lam1-q2*sqr(lam2))); } else { f1v = _f1[mode]*(1.+_Lambdaf1[mode]/GeV*q2/GeV2+_Lambdaf2[mode]/GeV*sqr(q2/GeV2)); } lam1 = 1./sqr(_Lambdag1[mode]); lam2 = 1./sqr(_Lambdag2[mode]); f1a=-_g1[mode]/(1.-q2*(lam1-q2*sqr(lam2))); // the f2 and g2 factors f2v =-(m0+m1)*_f2[mode]; f2a = (m0+m1)*_g2[mode]; } void LightBaryonQuarkModelFormFactor::dataBaseOutput(ofstream& output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::LightBaryonQuarkModelFormFactor " << name() << " \n"; for(unsigned int ix=0;ix<_f1.size();++ix) { if(ix<initialModes()) { output << "newdef " << name() << ":f1 " << ix << " " << _f1[ix] << "\n"; output << "newdef " << name() << ":g1 " << ix << " " << _g1[ix] << "\n"; output << "newdef " << name() << ":f2 " << ix << " " << _f2[ix]*GeV << "\n"; output << "newdef " << name() << ":g2 " << ix << " " << _g2[ix]*GeV << "\n"; output << "newdef " << name() << ":Lambdaf1 " << ix << " " << _Lambdaf1[ix]/GeV << "\n"; output << "newdef " << name() << ":Lambdaf2 " << ix << " " << _Lambdaf2[ix]/GeV << "\n"; output << "newdef " << name() << ":Lambdag1 " << ix << " " << _Lambdag1[ix]/GeV << "\n"; output << "newdef " << name() << ":Lambdag2 " << ix << " " << _Lambdag2[ix]/GeV << "\n"; } else { output << "insert " << name() << ":f1 " << ix << " " << _f1[ix] << "\n"; output << "insert " << name() << ":g1 " << ix << " " << _g1[ix] << "\n"; output << "insert " << name() << ":f2 " << ix << " " << _f2[ix]*GeV << "\n"; output << "insert " << name() << ":g2 " << ix << " " << _g2[ix]*GeV << "\n"; output << "insert " << name() << ":Lambdaf1 " << ix << " " << _Lambdaf1[ix]/GeV << "\n"; output << "insert " << name() << ":Lambdaf2 " << ix << " " << _Lambdaf2[ix]/GeV << "\n"; output << "insert " << name() << ":Lambdag1 " << ix << " " << _Lambdag1[ix]/GeV << "\n"; output << "insert " << name() << ":Lambdag2 " << ix << " " << _Lambdag2[ix]/GeV << "\n"; } } BaryonFormFactor::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/LambdabExcitedLambdacSumRuleFormFactor.h����������������������0000644�0001750�0001750�00000013122�11754474773�030014� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_LambdabExcitedLambdacSumRuleFormFactor_H #define HERWIG_LambdabExcitedLambdacSumRuleFormFactor_H // This is the declaration of the LambdabExcitedLambdacSumRuleFormFactor class. #include "BaryonFormFactor.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>LambdabExcitedLambdacSumRuleFormFactor</code> class implements the * form-factors of hep-ph/0012114 for the decay of the \f$Lambda_b^0\f$ * to excited \f$\Lambda^+_c\f$ states. * * @see BaryonFormFactor. * */ class LambdabExcitedLambdacSumRuleFormFactor: public BaryonFormFactor { public: /** * Default constructor */ LambdabExcitedLambdacSumRuleFormFactor(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} public: /** @name Form Factors */ //@{ /** * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a * spin \f$\frac12\f$ baryon. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming baryon. * @param id1 The PDG code of the outgoing baryon. * @param m0 The mass of the incoming baryon. * @param m1 The mass of the outgoing baryon. * @param f1v The form factor \f$F^V_1\f$. * @param f2v The form factor \f$F^V_2\f$. * @param f3v The form factor \f$F^V_3\f$. * @param f1a The form factor \f$F^A_1\f$. * @param f2a The form factor \f$F^A_2\f$. * @param f3a The form factor \f$F^A_3\f$. */ virtual void SpinHalfSpinHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, Energy m0, Energy m1, Complex & f1v,Complex & f2v,Complex & f3v, Complex & f1a,Complex & f2a,Complex & f3a); /** * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a * spin \f$\frac32\f$ baryon. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming baryon. * @param id1 The PDG code of the outgoing baryon. * @param m0 The mass of the incoming baryon. * @param m1 The mass of the outgoing baryon. * @param g1v The form factor \f$G^V_1\f$. * @param g2v The form factor \f$G^V_2\f$. * @param g3v The form factor \f$G^V_3\f$. * @param g4v The form factor \f$G^V_4\f$. * @param g1a The form factor \f$G^A_1\f$. * @param g2a The form factor \f$G^A_2\f$. * @param g3a The form factor \f$G^A_3\f$. * @param g4a The form factor \f$G^A_4\f$. */ virtual void SpinHalfSpinThreeHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, Energy m0, Energy m1, Complex & g1v,Complex & g2v,Complex & g3v, Complex & g4v,Complex & g1a,Complex & g2a, Complex & g3a,Complex & g4a); //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; private: /** * Describe a concrete class with persistent data. */ static ClassDescription<LambdabExcitedLambdacSumRuleFormFactor> initLambdabExcitedLambdacSumRuleFormFactor; /** * Private and non-existent assignment operator. */ LambdabExcitedLambdacSumRuleFormFactor & operator=(const LambdabExcitedLambdacSumRuleFormFactor &); private: /** * The intercept for the form factor. */ double _xi1; /** * The slope for the form factor. */ double _rho2; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of LambdabExcitedLambdacSumRuleFormFactor. */ template <> struct BaseClassTrait<Herwig::LambdabExcitedLambdacSumRuleFormFactor,1> { /** Typedef of the base class of LambdabExcitedLambdacSumRuleFormFactor.*/ typedef Herwig::BaryonFormFactor NthBase; }; template <> /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ struct ClassTraits<Herwig::LambdabExcitedLambdacSumRuleFormFactor> : public ClassTraitsBase<Herwig::LambdabExcitedLambdacSumRuleFormFactor> { /** Return the class name. */ static string className() {return "Herwig::LambdabExcitedLambdacSumRuleFormFactor";} /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_LambdabExcitedLambdacSumRuleFormFactor_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/ISGW2FormFactor.h���������������������������������������������0000644�0001750�0001750�00000032051�11754474773�023240� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ISGW2FormFactor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ISGW2FormFactor_H #define HERWIG_ISGW2FormFactor_H // // This is the declaration of the ISGW2FormFactor class. // #include "ScalarFormFactor.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/Repository/EventGenerator.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The ISGW2FormFactor class is the implementation of * the ISGW2 model of Phys. Rev. D52, 2783 (1995) for the scalar meson form * factors. * * It inherits from the ScalarFormFactor class and implements * the calculation of the relevant form factors. * * @see ScalarFormFactor * @see ISGWFormFactor */ class ISGW2FormFactor: public ScalarFormFactor { public: /** * Default constructor */ ISGW2FormFactor(); /** @name Form-Factors */ //@{ /** * The form factor for the weak decay of a scalar to a scalar. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param f0 The form-factor \f$f_0\f$. * @param fp The form-factor \f$f_+\f$. */ virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0,Energy m1,Complex & f0, Complex & fp) const; /** * The form factor for the weak decay of a scalar to a vector. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param V The form-factor \f$V\f$ * @param A0 The form-factor \f$A_0\f$ * @param A1 The form-factor \f$A_1\f$ * @param A2 The form-factor \f$A_2\f$ */ virtual void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1, Energy m0, Energy m1, Complex & V, Complex & A0,Complex & A1,Complex & A2) const; /** * The form factor for the weak decay of a scalar to a tensor. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param h The form-factor \f$h\f$. * @param k The form-factor \f$k\f$. * @param bp The form-factor \f$b_+\f$. * @param bm The form-factor \f$b_-\f$. */ virtual void ScalarTensorFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0,Energy m1, complex<InvEnergy2> & h, Complex & k, complex<InvEnergy2> & bp, complex<InvEnergy2> & bm) const; //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** The member which implements all the different form-factors * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param f1 The first form-factor. * @param f2 The second form-factor. * @param f3 The third form-factor. * @param f4 The fourth form-factor. */ void formFactor(Energy2 q2,unsigned int iloc,int id0,int id1,Energy m0, Energy m1,Complex & f1,Complex & f2, Complex & f3,Complex & f4) const; // general member to calculate all the form-factors protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<ISGW2FormFactor> initISGW2FormFactor; /** * Private and non-existent assignment operator. */ ISGW2FormFactor & operator=(const ISGW2FormFactor &); protected: /** * The saturated \f$\alpha_S\f$ used to calculate the form-factors. * @param mass Mass scale to work out the number of flavours. * @param q2 \f$q^2\f$ the scale. * @return the value of \f$\alpha_S\f$. */ double alphaS(Energy mass, Energy2 q2) const { Energy2 lqcd2(0.04*GeV2); double nflav(4.); double output(_alphamuQM); if (q2>0.36*GeV2) { if(mass<_mcharm+0.03*GeV) nflav=3.0; output = 12.*Constants::pi/(33.-2.*nflav)/log(q2/lqcd2); } return output; } private: /** @name Quark masses */ //@{ /** * The down quark mass */ Energy _mdown; /** * The up quark mass */ Energy _mup; /** * The strange quark mass */ Energy _mstrange; /** * The charm quark mass */ Energy _mcharm; /** * The bottom quark mass */ Energy _mbottom; /** * The masses of the quarks as a vector */ vector<Energy> _mquark; //@} /** @name Wave function parameters for the \f$1^1S_0\f$ level.*/ //@{ /** * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$u\bar{d}\f$ */ Energy _beta1S0ud; /** * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$u\bar{s}\f$ */ Energy _beta1S0us; /** * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$s\bar{s}\f$ */ Energy _beta1S0ss; /** * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$c\bar{u}\f$ */ Energy _beta1S0cu; /** * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$c\bar{s}\f$ */ Energy _beta1S0cs; /** * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$u\bar{b}\f$ */ Energy _beta1S0ub; /** * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$s\bar{b}\f$ */ Energy _beta1S0sb; /** * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$c\bar{c}\f$ */ Energy _beta1S0cc; /** * The wavefunction \f$1^1S_0\f$ \f$\beta\f$ variational parameter for \f$b\bar{c}\f$ */ Energy _beta1S0bc; /** * The wavefunction parameters as an array */ vector<vector<Energy> > _beta1S0; /** * The masses as a array */ vector<vector<Energy> > _mass1S0; //@} /** @name Wave function parameters for the \f$1^3S_1\f$ level.*/ //@{ /** * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$u\bar{d}\f$ */ Energy _beta3S1ud; /** * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$u\bar{s}\f$ */ Energy _beta3S1us; /** * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$s\bar{s}\f$ */ Energy _beta3S1ss; /** * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$c\bar{u}\f$ */ Energy _beta3S1cu; /** * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$c\bar{s}\f$ */ Energy _beta3S1cs; /** * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$u\bar{b}\f$ */ Energy _beta3S1ub; /** * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$s\bar{b}\f$ */ Energy _beta3S1sb; /** * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$c\bar{c}\f$ */ Energy _beta3S1cc; /** * The wavefunction \f$1^3S_1\f$ \f$\beta\f$ variational parameter for \f$b\bar{c}\f$ */ Energy _beta3S1bc; /** * The wavefunction paramaeters as an array. */ vector<vector<Energy> > _beta3S1; //@} /** @name Wave function parameters for the \f$1P\f$ levels.*/ //@{ /** * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$u\bar{d}\f$ */ Energy _beta1Pud; /** * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$u\bar{s}\f$ */ Energy _beta1Pus; /** * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$s\bar{s}\f$ */ Energy _beta1Pss; /** * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$c\bar{u}\f$ */ Energy _beta1Pcu; /** * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$c\bar{s}\f$ */ Energy _beta1Pcs; /** * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$u\bar{b}\f$ */ Energy _beta1Pub; /** * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$s\bar{b}\f$ */ Energy _beta1Psb; /** * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$c\bar{c}\f$ */ Energy _beta1Pcc; /** * The wavefunction \f$1P\f$ \f$\beta\f$ variational parameter for \f$b\bar{c}\f$ */ Energy _beta1Pbc; /** * The wavefunction paramaeters as an array. */ vector<vector<Energy> > _beta1P; /** * The spin-1/2 masses */ // the 1/2 spin masses vector<vector<Energy> > _massPoh; /** * The spin-3/2 masses */ vector<vector<Energy> > _massPth; //@} /**@name Parameters for the strong coupling*/ //@{ /** * The cut-off value of \f$\alpha_S\f$. */ double _alphamuQM; /** * The values of \f$\alpha_S\f$ at the quark masses. */ vector<double> _alphaQ; //@} /**@name Relativistic correction factors */ //@{ /** * The correction factor for \f$D\to\rho\f$. */ double _CfDrho; /** * The correction factor for \f$D\to K^*\f$. */ double _CfDKstar; /** * The correction factor for \f$D_s\to K^*\f$. */ double _CfDsKstar; /** * The correction factor for \f$D_s\to\phi\f$. */ double _CfDsphi; /** * The correction factor for \f$B\to\rho\f$. */ double _CfBrho; /** * The correction factor for \f$B\to D^*\f$. */ double _CfBDstar; /** * The correction factor for \f$B_s\to K^*\f$. */ double _CfBsKstar; /** * The correction factor for \f$B_s\to D^*\f$. */ double _CfBsDstar; /** * The correction factor for \f$B_c\to D^*\f$. */ double _CfBcDstar; /** * The correction factor for \f$B_c\to\psi\f$. */ double _CfBcpsi; /** * The correction factor for \f$B_c\to B_s^*\f$. */ double _CfBcBsstar; /** * The correction factor for \f$B_c\to B^*\f$. */ double _CfBcBstar; //@} /** * The \f$\eta-\eta'\f$ mixing angle */ double _thetaeta; /** * Include the \f$a_L(\omega)\f$ piece of the \f$C_{ji}\f$ factor */ bool _includeaW; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * ISGW2FormFactor. */ template <> struct BaseClassTrait<Herwig::ISGW2FormFactor,1> { /** Typedef of the base class of ISGW2FormFactor. */ typedef Herwig::ScalarFormFactor NthBase; }; /** * This template specialization informs ThePEG about the name of the * ISGW2FormFactor class. */ template <> struct ClassTraits<Herwig::ISGW2FormFactor> : public ClassTraitsBase<Herwig::ISGW2FormFactor> { /** Return the class name. */ static string className() { return "Herwig::ISGW2FormFactor"; } /** Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_ISGW2FormFactor_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/BtoSGammaFlatEnergy.h�����������������������������������������0000644�0001750�0001750�00000007142�11754474773�024220� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // BtoSGammaFlatEnergy.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_BtoSGammaFlatEnergy_H #define HERWIG_BtoSGammaFlatEnergy_H // // This is the declaration of the BtoSGammaFlatEnergy class. // #include "BtoSGammaHadronicMass.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The BtoSGammaFlatEnergy class is a model of the hadronic mass * is \f$B\to s\gamma\f$ decays * which produces a flat photon energy spectrum and as such is only intended for * testing purposes. * * @see BtoSGammaHadronicMass */ class BtoSGammaFlatEnergy: public BtoSGammaHadronicMass { public: /** * Return the hadronic mass. * @param mb The mass of the decaying B meson. * @param mquark The minimum mass of the hadronic system based on the consistuent quark * masses. * @return The hadronic mass */ virtual Energy hadronicMass(Energy mb, Energy mquark); /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription<BtoSGammaFlatEnergy> initBtoSGammaFlatEnergy; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BtoSGammaFlatEnergy & operator=(const BtoSGammaFlatEnergy &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of BtoSGammaFlatEnergy. */ template <> struct BaseClassTrait<Herwig::BtoSGammaFlatEnergy,1> { /** Typedef of the first base class of BtoSGammaFlatEnergy. */ typedef Herwig::BtoSGammaHadronicMass NthBase; }; /** This template specialization informs ThePEG about the name of * the BtoSGammaFlatEnergy class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::BtoSGammaFlatEnergy> : public ClassTraitsBase<Herwig::BtoSGammaFlatEnergy> { /** Return a platform-independent class name */ static string className() { return "Herwig::BtoSGammaFlatEnergy"; } /** Return the name of the shared library be loaded to get * access to the BtoSGammaFlatEnergy class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_BtoSGammaFlatEnergy_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/ChengHeavyBaryonFormFactor.h����������������������������������0000644�0001750�0001750�00000020067�11754474773�025605� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_ChengHeavyBaryonFormFactor_H #define HERWIG_ChengHeavyBaryonFormFactor_H // // This is the declaration of the ChengHeavyBaryonFormFactor class. // #include "BaryonFormFactor.h" #include "ThePEG/PDT/ParticleData.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The ChengHeavyBaryonFormFactor class implements the form-factors * from PRD53, 1457 and PRD56, 2799 for the semi-leptonic decay of bottom * and charm hadrons. It is also intended for use with the results in PRD56, 2799 * for non-leptonic decays using the factorization approximation. * * @see BaryonFormFactor */ class ChengHeavyBaryonFormFactor: public BaryonFormFactor { public: /** * Default constructor */ ChengHeavyBaryonFormFactor(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** @name Form Factors */ //@{ /** * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a * spin \f$\frac12\f$ baryon. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming baryon. * @param id1 The PDG code of the outgoing baryon. * @param m0 The mass of the incoming baryon. * @param m1 The mass of the outgoing baryon. * @param f1v The form factor \f$F^V_1\f$. * @param f2v The form factor \f$F^V_2\f$. * @param f3v The form factor \f$F^V_3\f$. * @param f1a The form factor \f$F^A_1\f$. * @param f2a The form factor \f$F^A_2\f$. * @param f3a The form factor \f$F^A_3\f$. */ virtual void SpinHalfSpinHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, Energy m0, Energy m1, Complex & f1v,Complex & f2v,Complex & f3v, Complex & f1a,Complex & f2a,Complex & f3a); /** * The form factor for the weak decay of a spin \f$\frac12\f$ baryon to a * spin \f$\frac32\f$ baryon. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming baryon. * @param id1 The PDG code of the outgoing baryon. * @param m0 The mass of the incoming baryon. * @param m1 The mass of the outgoing baryon. * @param g1v The form factor \f$G^V_1\f$. * @param g2v The form factor \f$G^V_2\f$. * @param g3v The form factor \f$G^V_3\f$. * @param g4v The form factor \f$G^V_4\f$. * @param g1a The form factor \f$G^A_1\f$. * @param g2a The form factor \f$G^A_2\f$. * @param g3a The form factor \f$G^A_3\f$. * @param g4a The form factor \f$G^A_4\f$. */ virtual void SpinHalfSpinThreeHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, Energy m0, Energy m1, Complex & g1v,Complex & g2v,Complex & g3v, Complex & g4v,Complex & g1a,Complex & g2a, Complex & g3a,Complex & g4a); //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<ChengHeavyBaryonFormFactor> initChengHeavyBaryonFormFactor; /** * Private and non-existent assignment operator. */ ChengHeavyBaryonFormFactor & operator=(const ChengHeavyBaryonFormFactor &); private: /** @name The quark masses. */ //@{ /** * The mass of the up quark. */ Energy _mu; /** * The mass of the down quark. */ Energy _md; /** * The mass of the strange quark. */ Energy _ms; /** * The mass of the charm quark. */ Energy _mc; /** * The mass of the bottom quark. */ Energy _mb; //@} /** * The normalization parameter \f$N_{fi}\f$ is the flavour and spin overlap * from PRD56, 2799. */ vector<double> _Nfi; /** * The ratio of the flavour and spin overlap for the outgoing over incoming * baryon, \f$\eta\f$ from PRD56, 2799. */ vector<double> _eta; /** * the form factor \f$f_1\f$ evaluated at the maximum value of \f$q^2\f$. */ vector<double> _f1; /** * the form factor \f$f_2\f$ evaluated at the maximum value of \f$q^2\f$. */ vector<double> _f2; /** * the form factor \f$f_3\f$ evaluated at the maximum value of \f$q^2\f$. */ vector<double> _f3; /** * the form factor \f$g_1\f$ evaluated at the maximum value of \f$q^2\f$. */ vector<double> _g1; /** * the form factor \f$g_2\f$ evaluated at the maximum value of \f$q^2\f$. */ vector<double> _g2; /** * the form factor \f$g_3\f$ evaluated at the maximum value of \f$q^2\f$. */ vector<double> _g3; /** * The pole mass for the vector form factors for the \f$b\to c\f$ transitiion. */ Energy _mVbc; /** * The pole mass for the vector form factors for the \f$b\to s\f$ transitiion. */ Energy _mVbs; /** * The pole mass for the vector form factors for the \f$c\to s\f$ transitiion. */ Energy _mVcs; /** * The pole mass for the vector form factors for the \f$b\to d\f$ transitiion. */ Energy _mVbd; /** * The pole mass for the vector form factors for the \f$c\to u\f$ transitiion. */ Energy _mVcu; /** * The pole mass for the axial-vector form factors for the \f$b\to c\f$ transitiion. */ Energy _mAbc; /** * The pole mass for the axial-vector form factors for the \f$b\to s\f$ transitiion. */ Energy _mAbs; /** * The pole mass for the axial-vector form factors for the \f$c\to s\f$ transitiion. */ Energy _mAcs; /** * The pole mass for the axial-vector form factors for the \f$b\to d\f$ transitiion. */ Energy _mAbd; /** * The pole mass for the axial-vector form factors for the \f$c\to u\f$ transitiion. */ Energy _mAcu; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * ChengHeavyBaryonFormFactor. */ template <> struct BaseClassTrait<Herwig::ChengHeavyBaryonFormFactor,1> { /** Typedef of the base class of ChengHeavyBaryonFormFactor. */ typedef Herwig::BaryonFormFactor NthBase; }; /** * This template specialization informs ThePEG about the name of the * ChengHeavyBaryonFormFactor class. */ template <> struct ClassTraits<Herwig::ChengHeavyBaryonFormFactor> : public ClassTraitsBase<Herwig::ChengHeavyBaryonFormFactor> { /** Return the class name. */ static string className() { return "Herwig::ChengHeavyBaryonFormFactor"; } /** Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_ChengHeavyBaryonFormFactor_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/ISGWFormFactor.h����������������������������������������������0000644�0001750�0001750�00000020527�11754474773�023163� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ISGWFormFactor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ISGWFormFactor_H #define HERWIG_ISGWFormFactor_H // // This is the declaration of the <ISGWFormFactor class. // #include "ScalarFormFactor.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/EventGenerator.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The ISGWFormFactor class is the implementation of the ISGW model of * Phys. Rev. D39, 799 (1989) for the form-factors. It inherits from the * ScalarFormFactor class and members * for the calculation of the relevant form factors. * * @see ScalarFormFactor * @see ISGW2FormFactor */ class ISGWFormFactor: public ScalarFormFactor { public: /** * Default constructor */ ISGWFormFactor(); /** @name Form-Factors */ //@{ /** * The form factor for the weak decay of a scalar to a scalar. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param f0 The form-factor \f$f_0\f$. * @param fp The form-factor \f$f_+\f$. */ virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1,Energy m0, Energy m1,Complex & f0,Complex & fp) const; /** * The form factor for the weak decay of a scalar to a vector. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param V The form-factor \f$V\f$ * @param A0 The form-factor \f$A_0\f$ * @param A1 The form-factor \f$A_1\f$ * @param A2 The form-factor \f$A_2\f$ */ virtual void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1, Energy m0, Energy m1, Complex & V, Complex & A0,Complex & A1,Complex & A2) const; /** * The form factor for the weak decay of a scalar to a tensor. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param h The form-factor \f$h\f$. * @param k The form-factor \f$k\f$. * @param bp The form-factor \f$b_+\f$. * @param bm The form-factor \f$b_-\f$. */ virtual void ScalarTensorFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0, Energy m1, complex<InvEnergy2> & h, Complex & k, complex<InvEnergy2> & bp, complex<InvEnergy2> & bm) const; //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** The member which implements all the different form-factors * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form-factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param f1 The first form-factor. * @param f2 The second form-factor. * @param f3 The third form-factor. * @param f4 The fourth form-factor. */ void formFactor(Energy2 q2,unsigned int iloc,int id0,int id1,Energy m0, Energy m1,Complex & f1,Complex & f2, Complex & f3,Complex & f4) const; // general member to calculate all the form-factors protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<ISGWFormFactor> initISGWFormFactor; /** * Private and non-existent assignment operator. */ ISGWFormFactor & operator=(const ISGWFormFactor &); private: /** * The relativistic compensation factor */ double _kappa; /** @name Quark masses */ //@{ /** * The down quark mass */ Energy _mdown; /** * The up quark mass */ Energy _mup; /** * The strange quark mass */ Energy _mstrange; /** * The charm quark mass */ Energy _mcharm; /** * The bottom quark mass */ Energy _mbottom; /** * The masses of the quarks as a vector */ vector<Energy> _mquark; //@} /** @name Wave function parameters */ //@{ /** * The wavefunction s-wave \f$\beta\f$ variational parameters for \f$u\bar{d}\f$ */ Energy _betaSud; /** * The wavefunction s-wave \f$\beta\f$ variational parameters for \f$u\bar{s}\f$ */ Energy _betaSus; /** * The wavefunction s-wave \f$\beta\f$ variational parameters for \f$u\bar{c}\f$ */ Energy _betaSuc; /** * The wavefunction s-wave \f$\beta\f$ variational parameters for \f$u\bar{b}\f$ */ Energy _betaSub; /** * The s-wave variational parameters as a vector. */ vector<vector<Energy> > _betaS; /** * The wavefunction p-wave \f$\beta\f$ variational parameters for \f$u\bar{d}\f$ */ Energy _betaPud; /** * The wavefunction s-wave \f$\beta\f$ variational parameters for \f$u\bar{s}\f$ */ Energy _betaPus; /** * The wavefunction s-wave \f$\beta\f$ variational parameters for \f$u\bar{c}\f$ */ Energy _betaPuc; /** * The p-wave variational parameters as a vector */ vector<vector<Energy> > _betaP; //@} /** * The \f$\eta-\eta'\f$ mixing angle */ double _thetaeta; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * ISGWFormFactor. */ template <> struct BaseClassTrait<Herwig::ISGWFormFactor,1> { /** Typedef of the base class of ISGWFormFactor. */ typedef Herwig::ScalarFormFactor NthBase; }; /** * This template specialization informs ThePEG about the name of the * ISGWFormFactor class. */ template <> struct ClassTraits<Herwig::ISGWFormFactor> : public ClassTraitsBase<Herwig::ISGWFormFactor> { /** Return the class name. */ static string className() { return "Herwig::ISGWFormFactor"; } /** Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_ISGWFormFactor_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/ChengHeavyBaryonFormFactor.cc���������������������������������0000644�0001750�0001750�00000043073�11754474773�025745� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the ChengHeavyBaryonFormFactor class. // #include "ChengHeavyBaryonFormFactor.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; ChengHeavyBaryonFormFactor::ChengHeavyBaryonFormFactor() { // consituent quark masses _mu = 338*MeV; _md = 322*MeV; _ms = 510*MeV; _mc = 1.6*GeV; _mb = 5.0*GeV; // masses for the q^2 dependence _mVbc = 6.34*GeV; _mVbs = 5.42*GeV; _mVcs = 2.11*GeV; _mVbd = 5.32*GeV; _mVcu = 2.01*GeV; _mAbc = 6.73*GeV; _mAbs = 5.86*GeV; _mAcs = 2.54*GeV; _mAbd = 5.71*GeV; _mAcu = 2.42*GeV; double one3(1./sqrt(3.)),one2(1./sqrt(2.)); // lambda_b to lambda_c addFormFactor(5122,4122,2,2,1,2,5,4);_Nfi.push_back(1. );_eta.push_back(1.); // lambda_b to lambda addFormFactor(5122,3122,2,2,1,2,5,3);_Nfi.push_back(one3 );_eta.push_back(1.); // lambda_b to n addFormFactor(5122,2112,2,2,1,2,5,1);_Nfi.push_back(one2 );_eta.push_back(1.); // xi_b to xi_c addFormFactor(5232,4232,2,2,2,3,5,4);_Nfi.push_back(1. );_eta.push_back(1.); addFormFactor(5132,4132,2,2,1,3,5,4);_Nfi.push_back(1. );_eta.push_back(1.); // xi_b to xi addFormFactor(5232,3322,2,2,2,3,5,3);_Nfi.push_back(one2 );_eta.push_back(1.); addFormFactor(5132,3312,2,2,1,3,5,3);_Nfi.push_back(one2 );_eta.push_back(1.); // xi_b to sigma addFormFactor(5232,3212,2,2,2,3,5,1);_Nfi.push_back(0.5 );_eta.push_back(1.); addFormFactor(5132,3112,2,2,1,3,5,1);_Nfi.push_back(0.5 );_eta.push_back(1.); // xi_b to lambda addFormFactor(5232,3122,2,2,2,3,5,1);_Nfi.push_back(one3/2.);_eta.push_back(1.); // omega_b to omega_c addFormFactor(5332,4332,2,2,3,3,5,4);_Nfi.push_back(1. );_eta.push_back(-1./3.); // omega_b to xi addFormFactor(5332,3312,2,2,3,3,5,1);_Nfi.push_back(one3 );_eta.push_back(-1./3.); // omega_b to omega_c* addFormFactor(5332,4334,2,4,3,3,5,4);_Nfi.push_back(1. );_eta.push_back(0.); // omega_b to omega addFormFactor(5332,3334,2,4,3,3,5,3);_Nfi.push_back(1. );_eta.push_back(0.); // omega_b to xi* addFormFactor(5332,3314,2,4,3,3,5,1);_Nfi.push_back(one3 );_eta.push_back(0.); // omega_c to omega addFormFactor(4332,3334,2,4,3,3,4,3);_Nfi.push_back(1. );_eta.push_back(0.); // omega_c to xi* addFormFactor(4332,3324,2,4,3,3,4,2);_Nfi.push_back(one3 );_eta.push_back(0.); // lambda_c to lambda_0 addFormFactor(4122,3122,2,2,1,2,4,3);_Nfi.push_back(1./sqrt(3.));_eta.push_back(1.); // xi_c to xi addFormFactor(4232,3322,2,2,2,3,4,3);_Nfi.push_back(1./sqrt(3.));_eta.push_back(1.); addFormFactor(4132,3312,2,2,1,3,4,3);_Nfi.push_back(1./sqrt(3.));_eta.push_back(1.); // initial number of form factors initialModes(numberOfFactors()); } void ChengHeavyBaryonFormFactor::doinit() { BaryonFormFactor::doinit(); // check the parameters are consistent unsigned int isize(numberOfFactors()); if(isize!=_eta.size()||isize!=_Nfi.size()) {throw InitException() << "Inconsistent paramters in ChengHeavyBaryon" << "FormFactor::doinit() " << Exception::abortnow;} Energy mi,mf,mq,mQ,lambda,delta,msum; int id0,id1,inspin,outspin,isp1,isp2,inq,outq; for(unsigned int ix=0;ix<numberOfFactors();++ix) { // ids of the external particles particleID(ix,id0,id1); formFactorInfo(ix,inspin,outspin,isp1,isp2,inq,outq); id0=abs(id0);id1=abs(id1); mi=getParticleData(id0)->mass(); mf=getParticleData(id1)->mass(); msum=mi+mf; // masses of the incoming and outgoing quarks if((id0==4122&&id1==3122)||(id0==4232&&id1==3322)||(id0==4132&&id1==3312)|| (id0==4332&&id1==3334)) {mq=_ms;mQ=_mc;} else if((id0==4332&&id1==3322)||(id0==4332&&id1==3324)) {mq=_mu;mQ=_mc;} else if((id0==5122&&id1==4122)||(id0==5232&&id1==4232)||(id0==5132&&id1==4132)|| (id0==5332&&id1==4332)||(id0==5332&&id1==4334)) {mq=_mc;mQ=_mb;} else if((id0==5122&&id1==3122)||(id0==5132&&id1==3312)||(id0==5232&&id1==3322)|| (id0==5332&&id1==3334)) {mq=_ms;mQ=_mb;} else if((id0==5122&&id1==2112)||(id0==5132&&id1==3112)||(id0==5232&&id1==3212)|| (id0==5332&&id1==3312)||(id0==5232&&id1==3122)||(id0==5332&&id1==3314)) {mq=_md;mQ=_mb;} else {throw InitException() << "Unknown decay in ChengHeavyBaryon" << "FormFactor::doinit() " << Exception::abortnow;} // parameters lambda = mf-mq; delta = mi-mf; // compute the form-factors if(inspin==2&&outspin==2) { _f1.push_back(_Nfi[ix]*(1.-0.5*delta/mi +0.25*delta/mi/mq*(1.-0.5*lambda/mf)* (mi+mf-_eta[ix]*delta) -0.125*delta/mi/mf/mQ*lambda*(mi+mf+_eta[ix]*delta))); _f2.push_back(_Nfi[ix]*msum*(0.5/mi+0.25/mi/mq*(1.-0.5*lambda/mf)* (delta-(mi+mf)*_eta[ix]) -0.125*lambda/mi/mf/mQ*(delta+(mi+mf)*_eta[ix]))); _f3.push_back(_Nfi[ix]*msum*(0.5/mi-0.25/mi/mq*(1.-0.5*lambda/mf)* (mi+mf-_eta[ix]*delta) +0.125*lambda/mi/mf/mQ*(mi+mf+_eta[ix]*delta))); _g1.push_back(_Nfi[ix]*_eta[ix]*(1.+0.25*delta*lambda*(1./mi/mq-1./mf/mQ))); _g2.push_back(-0.25*msum*_Nfi[ix]*_eta[ix]*lambda*(1./mi/mq-1./mf/mQ)); _g3.push_back(-0.25*msum*_Nfi[ix]*_eta[ix]*lambda*(1./mi/mq+1./mf/mQ)); } else if(inspin==2&&outspin==4) { _f1.push_back(2.*_Nfi[ix]/sqrt(3.)*(1.+0.5*lambda*(1./mq+1./mQ))); _f2.push_back(_Nfi[ix]*msum/sqrt(3.)/mi*(1.+0.5*lambda*(1./mq+1./mQ))); _f3.push_back(-_Nfi[ix]*msum*msum/mi/mf/sqrt(3.)* (1.+0.5*lambda*(1./mq+1./mQ))); _g1.push_back(-2./sqrt(3.)*_Nfi[ix]); _g2.push_back(-_Nfi[ix]*msum/sqrt(3.)*lambda/mq/mi); _g3.push_back(-_f3.back()); } else {throw InitException() << "Unknown spin combination in ChengHeavyBaryon" << "FormFactor::doinit() " << Exception::abortnow;} } for(unsigned int ix=0;ix<numberOfFactors();++ix) { int id0,id1; particleID(ix,id0,id1); tcPDPtr part0=getParticleData(id0); Energy m0=part0->mass(); tcPDPtr part1=getParticleData(id1); Energy m1=part1->mass(); if ( part1->iSpin() == 2 ) { Complex f1v,f2v,f3v,f4v,f1a,f2a,f3a,f4a; // dummy variables SpinHalfSpinHalfFormFactor(ZERO,ix,id0,id1,m0,m1,f1v,f2v,f3v,f1a,f2a,f3a); } else { Complex f1v,f2v,f3v,f4v,f1a,f2a,f3a,f4a; // dummy variables SpinHalfSpinThreeHalfFormFactor(ZERO,ix,id0,id1,m0,m1,f1v,f2v,f3v, f4v,f1a,f2a,f3a,f4a); } } } void ChengHeavyBaryonFormFactor::persistentOutput(PersistentOStream & os) const { os << ounit(_mu,MeV) << ounit(_md,MeV) << ounit(_ms,MeV) << ounit(_mc,MeV) << ounit(_mb,MeV) << _Nfi << _eta << _f1 << _f2 << _f3 << _g1 << _g2 << _g3 << ounit(_mVbc,MeV) << ounit(_mVbs,MeV) << ounit(_mVcs,MeV) << ounit(_mVbd,MeV) << ounit(_mVcu,MeV) << ounit(_mAbc,MeV) << ounit(_mAbs,MeV) << ounit(_mAcs,MeV) << ounit(_mAbd,MeV) << ounit(_mAcu,MeV); } void ChengHeavyBaryonFormFactor::persistentInput(PersistentIStream & is, int) { is >> iunit(_mu,MeV) >> iunit(_md,MeV) >> iunit(_ms,MeV) >> iunit(_mc,MeV) >> iunit(_mb,MeV) >> _Nfi >> _eta >> _f1 >> _f2 >> _f3 >> _g1 >> _g2 >> _g3 >> iunit(_mVbc,MeV) >> iunit(_mVbs,MeV) >> iunit(_mVcs,MeV) >> iunit(_mVbd,MeV) >> iunit(_mVcu,MeV) >> iunit(_mAbc,MeV) >> iunit(_mAbs,MeV) >> iunit(_mAcs,MeV) >> iunit(_mAbd,MeV) >> iunit(_mAcu,MeV); } ClassDescription<ChengHeavyBaryonFormFactor> ChengHeavyBaryonFormFactor::initChengHeavyBaryonFormFactor; // Definition of the static class description member. void ChengHeavyBaryonFormFactor::Init() { static ClassDocumentation<ChengHeavyBaryonFormFactor> documentation ("The ChengHeavyBaryonFormFactor class is the implementation" " of the form-factors of PRD53, 1457 and PRD56, 2799 for the weak decay of" "baryons containing a heavy quark. This model can be used for either" "semi-leptonic decays, or with the factorization approximation for" " non-leptonic weak decays", "The weak decay of baryons containing a heavy quark used form factors from " "\\cite{Cheng:1995fe,Cheng:1996cs}.", "%\\cite{Cheng:1995fe}\n" "\\bibitem{Cheng:1995fe}\n" " H.~Y.~Cheng and B.~Tseng,\n" " %``1/M corrections to baryonic form-factors in the quark model,''\n" " Phys.\\ Rev.\\ D {\\bf 53} (1996) 1457\n" " [Erratum-ibid.\\ D {\\bf 55} (1997) 1697]\n" " [arXiv:hep-ph/9502391].\n" " %%CITATION = PHRVA,D53,1457;%%\n" "%\\cite{Cheng:1996cs}\n" "\\bibitem{Cheng:1996cs}\n" " H.~Y.~Cheng,\n" " %``Nonleptonic weak decays of bottom baryons,''\n" " Phys.\\ Rev.\\ D {\\bf 56} (1997) 2799\n" " [arXiv:hep-ph/9612223].\n" " %%CITATION = PHRVA,D56,2799;%%\n" ); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfaceUpMass ("DownMass", "The consituent mass of the down quark", &ChengHeavyBaryonFormFactor::_md, GeV, 0.322*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfaceDownMass ("UpMass", "The consituent mass of the up quark", &ChengHeavyBaryonFormFactor::_mu, GeV, 0.338*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfacStrangeMass ("StrangeMass", "The consituent mass of the strange quark", &ChengHeavyBaryonFormFactor::_ms, GeV, 0.510*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfaceCharmMass ("CharmMass", "The consituent mass of the charm quark", &ChengHeavyBaryonFormFactor::_mc, GeV, 1.6*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfaceBottomMass ("BottomMass", "The consituent mass of the bottom quark", &ChengHeavyBaryonFormFactor::_mb, GeV, 5.0*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfaceVectorMassbc ("VectorMassbc", "The vector mass for the b->c transitions.", &ChengHeavyBaryonFormFactor::_mVbc, GeV, 6.34*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfaceAxialMassbc ("AxialMassbc", "The axial-vector mass for the b->c transitions.", &ChengHeavyBaryonFormFactor::_mAbc, GeV, 6.73*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfaceVectorMassbs ("VectorMassbs", "The vector mass for the b->s transitions.", &ChengHeavyBaryonFormFactor::_mVbs, GeV, 5.42*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfaceAxialMassbs ("AxialMassbs", "The axial-vector mass for the b->s transitions.", &ChengHeavyBaryonFormFactor::_mAbs, GeV, 5.86*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfaceVectorMassbd ("VectorMassbd", "The vector mass for the b->d transitions.", &ChengHeavyBaryonFormFactor::_mVbd, GeV, 5.32*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfaceAxialMassbd ("AxialMassbd", "The axial-vector mass for the b->d transitions.", &ChengHeavyBaryonFormFactor::_mAbd, GeV, 5.71*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfaceVectorMasscs ("VectorMasscs", "The vector mass for the c->s transitions.", &ChengHeavyBaryonFormFactor::_mVcs, GeV, 2.11*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfaceAxialMasscs ("AxialMasscs", "The axial-vector mass for the c->s transitions.", &ChengHeavyBaryonFormFactor::_mAcs, GeV, 2.54*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfaceVectorMasscu ("VectorMasscu", "The vector mass for the c->u transitions.", &ChengHeavyBaryonFormFactor::_mVcu, GeV, 2.01*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ChengHeavyBaryonFormFactor,Energy> interfaceAxialMasscu ("AxialMasscu", "The axial-vector mass for the c->u transitions.", &ChengHeavyBaryonFormFactor::_mAcu, GeV, 2.42*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<ChengHeavyBaryonFormFactor,double> interfaceNfi ("Nfi", "The prefactor for a given form factor", &ChengHeavyBaryonFormFactor::_Nfi, -1, 1.0, -10.0, 10.0, false, false, true); static ParVector<ChengHeavyBaryonFormFactor,double> interfaceEta ("Eta", "The eta parameter for the form factor", &ChengHeavyBaryonFormFactor::_eta, -1, 0.0, -10.0, 10.0, false, false, true); } // form factor for spin-1/2 to spin-1/2 void ChengHeavyBaryonFormFactor:: SpinHalfSpinHalfFormFactor(Energy2 q2,int iloc,int id0,int id1, Energy m0,Energy m1, Complex & f1v,Complex & f2v,Complex & f3v, Complex & f1a,Complex & f2a,Complex & f3a) { useMe(); id0=abs(id0); id1=abs(id1); // masses for the energy dependence of the form-factors Energy mV(ZERO),mA(ZERO); if((id0==4122&&id1==3122)||(id0==4232&&id1==3322)||(id0==4132&&id1==3312)|| (id0==4332&&id1==3334)) {mA=_mAcs;mV=_mVcs;} else if((id0==4332&&id1==3322)||(id0==4332&&id1==3324)) {mA=_mAcu;mV=_mVcu;} else if((id0==5122&&id1==4122)||(id0==5232&&id1==4232)||(id0==5132&&id1==4132)|| (id0==5332&&id1==4332)||(id0==5332&&id1==4334)) {mA=_mAbc;mV=_mVbc;} else if((id0==5122&&id1==3122)||(id0==5132&&id1==3312)||(id0==5232&&id1==3322)|| (id0==5332&&id1==3334)) {mA=_mAbs;mV=_mVbs;} else if((id0==5122&&id1==2112)||(id0==5132&&id1==3112)||(id0==5232&&id1==3212)|| (id0==5332&&id1==3312)||(id0==5232&&id1==3122)||(id0==5332&&id1==3314)) {mA=_mAbd;mV=_mVbd;} Energy delta=m0-m1; double Vfact = (1.-delta*delta/mV/mV)/(1.-q2/mV/mV); Vfact *=Vfact; double Afact = (1.-delta*delta/mA/mA)/(1.-q2/mA/mA); Afact *=Afact; f1v = _f1[iloc]*Vfact; f2v = _f2[iloc]*Vfact; f3v = _f3[iloc]*Vfact; f1a =-_g1[iloc]*Afact; f2a =-_g2[iloc]*Afact; f3a =-_g3[iloc]*Afact; } // form factor for spin-1/2 to spin-3/2 void ChengHeavyBaryonFormFactor:: SpinHalfSpinThreeHalfFormFactor(Energy2 q2,int iloc, int id0, int id1, Energy m0, Energy m1, Complex & g1v,Complex & g2v,Complex & g3v, Complex & g4v,Complex & g1a,Complex & g2a, Complex & g3a,Complex & g4a) { useMe(); id0=abs(id0); id1=abs(id1); // masses for the energy dependence of the form-factors Energy mV(ZERO),mA(ZERO); if((id0==4122&&id1==3122)||(id0==4232&&id1==3322)||(id0==4132&&id1==3312)|| (id0==4332&&id1==3334)) {mA=_mAcs;mV=_mVcs;} else if((id0==4332&&id1==3322)||(id0==4332&&id1==3324)) {mA=_mAcu;mV=_mVcu;} else if((id0==5122&&id1==4122)||(id0==5232&&id1==4232)||(id0==5132&&id1==4132)|| (id0==5332&&id1==4332)||(id0==5332&&id1==4334)) {mA=_mAbc;mV=_mVbc;} else if((id0==5122&&id1==3122)||(id0==5132&&id1==3312)||(id0==5232&&id1==3322)|| (id0==5332&&id1==3334)) {mA=_mAbs;mV=_mVbs;} else if((id0==5122&&id1==2112)||(id0==5132&&id1==3112)||(id0==5232&&id1==3212)|| (id0==5332&&id1==3312)||(id0==5232&&id1==3122)||(id0==5332&&id1==3314)) {mA=_mAbd;mV=_mVbd;} Energy delta=m0-m1; double Vfact = (1.-delta*delta/mV/mV)/(1.-q2/mV/mV); Vfact *=Vfact; double Afact = (1.-delta*delta/mA/mA)/(1.-q2/mA/mA); Afact *=Afact; g1v = _f1[iloc]*Vfact; g2v = _f2[iloc]*Vfact; g3v = _f3[iloc]*Vfact; g4v = 0.; g1a =-_g1[iloc]*Afact; g2a =-_g2[iloc]*Afact; g3a =-_g3[iloc]*Afact; g4a = 0.; } // output the information for the database void ChengHeavyBaryonFormFactor::dataBaseOutput(ofstream& output,bool header, bool create) const { if(header){output << "update decayers set parameters=\"";} if(create) {output << "create Herwig::ChengHeavyBaryonFormFactor " << name() << " \n";} output << "newdef " << name() << ":DownMass " << _md/GeV << " \n"; output << "newdef " << name() << ":UpMass " << _mu/GeV << " \n"; output << "newdef " << name() << ":StrangeMass " << _ms/GeV << " \n"; output << "newdef " << name() << ":CharmMass " << _mc/GeV << " \n"; output << "newdef " << name() << ":BottomMass " << _mb/GeV << " \n"; output << "newdef " << name() << ":VectorMassbc " << _mVbc/GeV << " \n"; output << "newdef " << name() << ":AxialMassbc " << _mAbc/GeV << " \n"; output << "newdef " << name() << ":VectorMassbs " << _mVbs/GeV << " \n"; output << "newdef " << name() << ":AxialMassbs " << _mAbs/GeV << " \n"; output << "newdef " << name() << ":VectorMassbd " << _mVbd/GeV << " \n"; output << "newdef " << name() << ":AxialMassbd " << _mAbd/GeV << " \n"; output << "newdef " << name() << ":VectorMasscs " << _mVcs/GeV << " \n"; output << "newdef " << name() << ":AxialMasscs " << _mAcs/GeV << " \n"; output << "newdef " << name() << ":VectorMasscu " << _mVcu/GeV << " \n"; output << "newdef " << name() << ":AxialMasscu " << _mAcu/GeV << " \n"; for(unsigned int ix=0;ix<numberOfFactors();++ix) { if(ix<initialModes()) { output << "newdef " << name() << ":Nfi " << ix << " " << _Nfi[ix] << endl; output << "newdef " << name() << ":Eta " << ix << " " << _eta[ix] << endl; } else { output << "insert " << name() << ":Nfi " << ix << " " << _Nfi[ix] << endl; output << "insert " << name() << ":Eta " << ix << " " << _eta[ix] << endl; } } BaryonFormFactor::dataBaseOutput(output,false,false); if(header){output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl;} } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/FormFactors/KiselevBcFormFactor.h�����������������������������������������0000644�0001750�0001750�00000015505�11754474773�024261� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // KiselevBcFormFactor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_KiselevBcFormFactor_H #define HERWIG_KiselevBcFormFactor_H // // This is the declaration of the KiselevBcFormFactor class. // #include "ScalarFormFactor.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The KiselevBcFormFactor class implements the form factors from hep-ph/0211021 * for the decays of \f$B_c\f$ mesons. * * @see ScalarFormFactor */ class KiselevBcFormFactor: public ScalarFormFactor { public: /** * The default constructor. */ KiselevBcFormFactor(); 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: /** @name Form Factors */ //@{ /** * The form factor for the weak decay of a scalar to a scalar. * This method is virtual and must be implementented in classes * inheriting from this which include scalar to scalar form factors. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param f0 The form factor \f$f_0\f$. * @param fp The form factor \f$f_+\f$. */ virtual void ScalarScalarFormFactor(Energy2 q2,unsigned int iloc,int id0,int id1, Energy m0,Energy m1,Complex & f0, Complex & fp) const; /** * The form factor for the weak decay of a scalar to a vector. This method is virtual * and must be implemented in classes inheriting from this which include scalar to * vector form factors. * @param q2 The scale \f$q^2\f$. * @param iloc The location in the form factor list. * @param id0 The PDG code of the incoming meson. * @param id1 The PDG code of the outgoing meson. * @param m0 The mass of the incoming meson. * @param m1 The mass of the outgoing meson. * @param A0 The form factor \f$A_0\f$ * @param A1 The form factor \f$A_1\f$ * @param A2 The form factor \f$A_2\f$ * @param V The form factor \f$V\f$ */ virtual void ScalarVectorFormFactor(Energy2 q2, unsigned int iloc, int id0, int id1, Energy m0, Energy m1,Complex & A0, Complex & A1,Complex & A2, Complex & V) const; //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<KiselevBcFormFactor> initKiselevBcFormFactor; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ KiselevBcFormFactor & operator=(const KiselevBcFormFactor &); private: /** * The value of the \f$f_+\f$ form factor evaluated at \f$q^2=0\f$. */ vector<double> _fp; /** * The value of the \f$f_-\f$ form factor evaluated at \f$q^2=0\f$. */ vector<double> _fm; /** * The value of the \f$F_V\f$ form factor evaluated at \f$q^2=0\f$. */ vector<InvEnergy> _FV; /** * The value of the \f$F_0^A\f$ form factor evaluated at \f$q^2=0\f$. */ vector<Energy> _F0A; /** * The value of the \f$F_+^A\f$ form factor evaluated at \f$q^2=0\f$. */ vector<InvEnergy> _FpA; /** * The value of the \f$F_-^A\f$ form factor evaluated at \f$q^2=0\f$. */ vector<InvEnergy> _FmA; /** * The pole mass for the \f$f_+\f$ form factor */ vector<Energy> _Mfp; /** * The pole mass for the \f$f_-\f$ form factor */ vector<Energy> _Mfm; /** * The pole mass for the \f$F_V\f$ form factor */ vector<Energy> _MFV; /** * The pole mass for the \f$F_0^A\f$ form factor */ vector<Energy> _MF0A; /** * The pole mass for the \f$F_+^A\f$ form factor */ vector<Energy> _MFpA; /** * The pole mass for the \f$F_-^A\f$ form factor */ vector<Energy> _MFmA; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of KiselevBcFormFactor. */ template <> struct BaseClassTrait<Herwig::KiselevBcFormFactor,1> { /** Typedef of the first base class of KiselevBcFormFactor. */ typedef Herwig::ScalarFormFactor NthBase; }; /** This template specialization informs ThePEG about the name of * the KiselevBcFormFactor class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::KiselevBcFormFactor> : public ClassTraitsBase<Herwig::KiselevBcFormFactor> { /** Return a platform-independent class name */ static string className() { return "Herwig::KiselevBcFormFactor"; } /** Return the name of the shared library be loaded to get * access to the KiselevBcFormFactor class and every other class it uses * (except the base class). */ static string library() { return "HwFormFactors.so"; } }; /** @endcond */ } #endif /* HERWIG_KiselevBcFormFactor_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/HwDecayHandler.h����������������������������������������������������������0000644�0001750�0001750�00000012221�11754474774�021015� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HwDecayHandler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_HwDecayHandler_H #define HERWIG_HwDecayHandler_H // // This is the declaration of the HwDecayHandler class. // #include "ThePEG/Handlers/DecayHandler.h" #include "ThePEG/EventRecord/Particle.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * The <code>HwDecayHandler</code> is the Herwig++ decay handler which * administers the decays of unstable particles in Herwig++. It * is derived from ThePEG::DecayHandler and includes a different handle * method in order to simulate decays including spin correlations. * * The handle method decays all particles in the current step, including * spin correlations. Another feature of the DecayHandler is that it correctly * handles mutlistep decays where a Decayer supplys intermediate decay products * in addition to the outgoing particles. * * @see ThePEG::StepHandler * @see ThePEG::CollisionHandler * @see ThePEG::SubProcessHandler * @see ThePEG::DecayHandler * */ class HwDecayHandler: public DecayHandler { public: /** * Default constructor */ HwDecayHandler() : DecayHandler(), _newstep(true) {} public: /** * Look through all \a tagged particled and decay all unstable ones. * @param eh the EventHandler in charge of the generation. * @param tagged the vector of particles to consider. If empty, all * final state particles in the current Step is considered. * @param hint a possible Hint which is ignored in this implementation. */ virtual void handle(EventHandler & eh, const tPVector & tagged, const Hint & hint) ; /** * Perform the decay of one unstable particle. * @param parent the particle to be decayed. * @param s the Step where decay products are inserted. * @throws Veto if the Handler requires the current step to be discarded. * @throws Exception if something goes wrong. */ virtual void performDecay(tPPtr parent, Step & s) const ; /** * add the decay products of in intermediate particle produced in a decay * @param parent the particle which has been decayed. * @param s the Step where decay products are inserted. * @throws Veto if the Handler requires the current step to be discarded. * @throws Exception if something goes wrong. */ void addDecayedParticle(tPPtr parent, Step & s) const ; /** * Standard Init function */ static void Init(); 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); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} protected: /** * Develop a stable particle */ void develop(tPPtr particle) const { tcSpinPtr hwspin = particle->spinInfo(); if ( hwspin ) hwspin->develop(); } private: /** * Describe a concrete class with persistent date/ */ static ClassDescription<HwDecayHandler> initHwDecayHandler; /** * Private and non-existent assignment operator. */ HwDecayHandler & operator=(const HwDecayHandler &); private: /** * Option for adding particles in a new Step */ bool _newstep; /** * Particles which should not be decayed */ set<tcPDPtr> _excluded; /** * Vector to fill the set as an interface */ vector<PDPtr> _excludedVector; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * Hw64Decayer. */ template <> struct BaseClassTrait<Herwig::HwDecayHandler,1> { /** Typedef of the base class of Hw64Decayer. */ typedef DecayHandler NthBase; }; /** * This template specialization informs ThePEG about the name of the * Hw64Decayer class. */ template <> struct ClassTraits<Herwig::HwDecayHandler>: public ClassTraitsBase<Herwig::HwDecayHandler> { /** Return the class name. */ static string className() { return "Herwig::HwDecayHandler"; } }; /** @endcond */ } #endif /* HERWIG_HwDecayHandler_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/DecayPhaseSpaceMode.h�����������������������������������������������������0000644�0001750�0001750�00000033305�11754474774�021770� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DecayPhaseSpaceMode.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DecayPhaseSpaceMode_H #define HERWIG_DecayPhaseSpaceMode_H // // This is the declaration of the DecayPhaseSpaceMode class. // #include "ThePEG/Interface/Interfaced.h" #include "DecayPhaseSpaceMode.fh" #include "DecayPhaseSpaceChannel.h" #include "Herwig++/PDT/GenericWidthGenerator.h" #include "Herwig++/PDT/GenericMassGenerator.h" #include <Herwig++/Decay/DecayVertex.h> #include "DecayIntegrator.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>DecayPhaseSpaceMode</code> class is designed to store a group * of phase-space channels for use by the DecayIntegrator class to * generate the phase-space for a given decay mode. * * Additional phase-space channels can be added using the addChannel member. * * In practice the modes are usually constructed together with the a number of * <code>DecayPhaseSpaceChannel</code> objects. In classes inheriting from the * DecayIntegrator class. * * @see DecayIntegrator * @see DecayPhaseSpaceChannel * * @author Peter Richardson * */ class DecayPhaseSpaceMode: public Interfaced { /** * A friend operator to allow the mode to be outputted for debugging purposes. */ friend ostream & operator<<(ostream &, const DecayPhaseSpaceMode &); /** * DecayIntegrator is a friend to avoid making many of the phase space * generation members public. */ friend class DecayIntegrator; /** * DecayPhaseSpaceChannel is a friend to avoid making many of the phase space * generation members public */ friend class DecayPhaseSpaceChannel; public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor. */ DecayPhaseSpaceMode() : _maxweight(0.),_niter(10), _npoint(10000), _ntry(500), _partial(-1), _testOnShell(false), _ichannel(999) {} /** * Constructor with a pointer to a <code>DecayPhaseIntegrator</code> and a vector * of particle data objects for the external particles. This * is the constructor which should normally be used in decayers. * @param in The particle data objects for the external particles * @param intin A pointer to the DecayIntegrator class using this mode. * @param onShell Whether or not to perform tests for zero width on-shell particles */ DecayPhaseSpaceMode(tPDVector in, tcDecayIntegratorPtr intin,bool onShell=false) : _integrator(intin), _maxweight(0.), _niter(10), _npoint(10000), _ntry(500), _extpart(in), _partial(-1), _testOnShell(onShell), _ichannel(999) {} //@} /** * Access to the external particles. * @param ix The external particle required. * @return A pointer to the ParticleData object. */ tcPDPtr externalParticles(int ix) const {return _extpart[ix];} /** * Number of external particles. * @return The number of external particles. */ unsigned int numberofParticles() const {return _extpart.size();} /** * Number of channels * @return The number of channels. */ unsigned int numberChannels() const {return _channels.size();} /** * Add a new channel. * @param channel A pointer to the new DecayPhaseChannel */ void addChannel(DecayPhaseSpaceChannelPtr channel) { channel->init(); _channels.push_back(channel); } /** * Reset the properties of one of the intermediate particles. Only a specific channel * is reset. * @param ichan The channel to reset. * @param part The ParticleData object of the particle to reset * @param mass The mass of the intermediate. * @param width The width of gthe intermediate. */ void resetIntermediate(int ichan, tcPDPtr part, Energy mass, Energy width) { if(!part) return; _channels[ichan]->resetIntermediate(part,mass,width); } /** * Reset the properties of one of the intermediate particles. All the channels * are reset. * @param part The ParticleData object of the particle to reset * @param mass The mass of the intermediate. * @param width The width of gthe intermediate. */ void resetIntermediate(tcPDPtr part, Energy mass, Energy width) { for(unsigned int ix=0,N=_channels.size();ix<N;++ix) _channels[ix]->resetIntermediate(part,mass,width); } /** * Get the maximum weight for the decay. * @return The maximum weight. */ double maxWeight() const {return _maxweight;} /** * Set the maximum weight for the decay. * @param wgt The maximum weight. */ void setMaxWeight(double wgt) const {_maxweight=wgt;} /** * Get the weight for a channel. This is the weight for the multi-channel approach. * @param ichan The channel. * @return The weight for the channel. */ double channelWeight(unsigned int ichan) const {return _channelwgts[ichan];} /** * Set the weights for the different channels. * @param in The weights for the different channels in the multi-channel approach. */ void setWeights(const vector<double> & in) const {_channelwgts=in;} /** * Access to the selected channel */ unsigned int selectedChannel() const {return _ichannel;} /** * test on/off-shell kinematics */ bool testOnShell() const { return _testOnShell; } protected: /** @name Set-up, Initialization and Access Members */ //@{ /** * Initialise the phase space. * @param init Perform the initialization. */ Energy initializePhaseSpace(bool init); /** * Set the integration parameters * @param iter The number of iterations to use for initialization. * @param points The number of points to use for each iteration during initialization. * @param ntry The number of tries to generate a decay. */ void setIntegrate(int iter,int points,int ntry) { _niter=iter; _npoint=points; _ntry=ntry; } /** * Set the partial width to use for normalization. This is the partial width * in the WidthGenerator object. * @param in The partial width to use. */ void setPartialWidth(int in) {_partial=in;} //@} /** @name Phase-Space Generation Members */ //@{ /** * Access to the matrix element from the decayer. * @param ichan The channel, this is to allow the matrix element to be used to * select the intermediates * @param inpart The incoming particle. * @param opt The option for what to calculate * @param outpart The outgoing particles. */ double me2(const int ichan ,const Particle & inpart, const ParticleVector &outpart,DecayIntegrator::MEOption opt) const { return _integrator->me2(ichan,inpart,outpart,opt); } /** * Generate the decay. * @param intermediates Whether or not to generate the intermediate particle * in the decay channel. * @param cc Whether we are generating the mode specified or the charge * conjugate mode. * @param inpart The incoming particle. * @return The outgoing particles. */ ParticleVector generate(bool intermediates,bool cc,const Particle & inpart) const; /** * Select which channel to use to output the particles. * @param inpart The incoming particles. * @param outpart The outgoing particles. */ int selectChannel(const Particle & inpart, ParticleVector & outpart) const { // if using flat phase-space don't need to do this if(_channelwgts.empty()) return 0; vector<double> mewgts(_channels.size(),0.0); double total=0.; for(unsigned int ix=0,N=_channels.size();ix<N;++ix) { mewgts[ix]=me2(ix,inpart,outpart,DecayIntegrator::Calculate); total+=mewgts[ix]; } // randomly pick a channel total*=UseRandom::rnd(); int ichan=-1; do { ++ichan; total-=mewgts[ichan]; } while(ichan<int(_channels.size())&&total>0.); return ichan; } /** * Return the weight for a given phase-space point. * @param cc Whether we are generating the mode specified or the charge * conjugate mode. * @param ichan The channel to generate the weight for. * @param in The incoming particle. * @param particles The outgoing particles. * @param first Whether or not this is the first call for initialisation * @return The weight. */ Energy weight(bool cc,int & ichan, const Particle & in, ParticleVector & particles,bool first) const { ichan=0; Energy phwgt = (_channels.size()==0) ? flatPhaseSpace(cc,in,particles) : channelPhaseSpace(cc,ichan,in,particles); // generate the matrix element return me2(-1,in,particles, first ? DecayIntegrator::Initialize : DecayIntegrator::Calculate)*phwgt; } /** * Return the weight and momenta for a flat phase-space decay. * @param cc Whether we are generating the mode specified or the charge * conjugate mode. * @param inpart The incoming particle. * @param outpart The outgoing particles. * @return The weight. */ Energy flatPhaseSpace(bool cc,const Particle & inpart, ParticleVector & outpart) const; /** * Generate a phase-space point using multichannel phase space. * @param cc Whether we are generating the mode specified or the charge * conjugate mode. * @param ichan The channel to generate the weight for. * @param in The incoming particle. * @param particles The outgoing particles. * @return The weight. */ Energy channelPhaseSpace(bool cc,int & ichan, const Particle & in, ParticleVector & particles) const; /** * Construct the vertex for spin corrections * @param in The incoming particle. * @param out The outgoing particles. */ void constructVertex(const Particle & in, const ParticleVector & out) const; /** * Generate the masses of the external particles. * @param inmass The mass of the decaying particle. * @param wgt The weight for the masses. * @return The masses. */ vector<Energy> externalMasses(Energy inmass,double & wgt) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<DecayPhaseSpaceMode> initDecayPhaseSpaceMode; /** * Private and non-existent assignment operator. */ DecayPhaseSpaceMode & operator=(const DecayPhaseSpaceMode &); private: /** * pointer to the decayer */ tcDecayIntegratorPtr _integrator; /** * pointers to the phase-space channels */ vector<DecayPhaseSpaceChannelPtr> _channels; /** * the weights for the different channels */ mutable vector<double> _channelwgts; /** * the maximum weight for the decay */ mutable double _maxweight; /** * Number of iterations for the initialization. */ int _niter; /** * Number of weights for each iteration of the initialization. */ int _npoint; /** * Number of attempts to generate the decay */ int _ntry; /** * External particles */ tPDVector _extpart; /** * Which of the partial widths of the incoming particle to use */ int _partial; /** * The width generator for the incoming particle. */ cGenericWidthGeneratorPtr _widthgen; /** * The mass generators for the outgoing particles. */ vector<cGenericMassGeneratorPtr> _massgen; /** * Whether to check on-shell or off-shell kinematics * in doinit, if on-shell off-shell is tested in initrun */ bool _testOnShell; /** * The selected channel */ mutable unsigned int _ichannel; }; /** * The output operator which is used for debugging. */ ostream & operator<<(ostream &, const DecayPhaseSpaceMode &); } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ template <> /** * The following template specialization informs ThePEG about the * base class of DecayPhaseSpaceMode. */ struct BaseClassTrait<Herwig::DecayPhaseSpaceMode,1> { /** Typedef of the base class of DecayPhaseSpaceMode. */ typedef Interfaced NthBase; }; template <> /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ struct ClassTraits<Herwig::DecayPhaseSpaceMode> : public ClassTraitsBase<Herwig::DecayPhaseSpaceMode> { /** Return the class name. */ static string className() { return "Herwig::DecayPhaseSpaceMode"; } }; /** @endcond */ } #endif /* HERWIG_DecayPhaseSpaceMode_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Makefile.in���������������������������������������������������������������0000644�0001750�0001750�00000071510�11756461675�020073� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Decay DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES) Hw64Decay_la_LIBADD = am_Hw64Decay_la_OBJECTS = Hw64Decayer.lo Hw64Decay_la_OBJECTS = $(am_Hw64Decay_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent Hw64Decay_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(Hw64Decay_la_LDFLAGS) $(LDFLAGS) -o $@ HwMamboDecay_la_LIBADD = am_HwMamboDecay_la_OBJECTS = MamboDecayer.lo HwMamboDecay_la_OBJECTS = $(am_HwMamboDecay_la_OBJECTS) HwMamboDecay_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwMamboDecay_la_LDFLAGS) \ $(LDFLAGS) -o $@ libHwDecay_la_DEPENDENCIES = $(top_builddir)/PDT/libHwPDT.la am_libHwDecay_la_OBJECTS = DecayIntegrator.lo \ DecayPhaseSpaceChannel.lo DecayPhaseSpaceMode.lo \ HwDecayerBase.lo HwDecayHandler.lo DecayVertex.lo \ DecayMatrixElement.lo libHwDecay_la_OBJECTS = $(am_libHwDecay_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(Hw64Decay_la_SOURCES) $(HwMamboDecay_la_SOURCES) \ $(libHwDecay_la_SOURCES) DIST_SOURCES = $(Hw64Decay_la_SOURCES) $(HwMamboDecay_la_SOURCES) \ $(libHwDecay_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = FormFactors Tau Baryon VectorMeson Perturbative \ WeakCurrents ScalarMeson TensorMeson Partonic General Radiation noinst_LTLIBRARIES = libHwDecay.la pkglib_LTLIBRARIES = Hw64Decay.la HwMamboDecay.la Hw64Decay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:0:0 Hw64Decay_la_SOURCES = Hw64Decayer.h Hw64Decayer.cc HwMamboDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:2:0 HwMamboDecay_la_SOURCES = MamboDecayer.h MamboDecayer.cc libHwDecay_la_LIBADD = $(top_builddir)/PDT/libHwPDT.la libHwDecay_la_SOURCES = \ DecayIntegrator.cc DecayIntegrator.fh DecayIntegrator.h \ DecayPhaseSpaceChannel.cc DecayPhaseSpaceChannel.fh \ DecayPhaseSpaceChannel.h \ DecayPhaseSpaceMode.cc DecayPhaseSpaceMode.fh \ DecayPhaseSpaceMode.h \ HwDecayerBase.cc HwDecayerBase.fh HwDecayerBase.h \ HwDecayHandler.cc HwDecayHandler.h\ DecayVertex.fh DecayVertex.h DecayVertex.cc \ DecayMatrixElement.h DecayMatrixElement.cc all: all-recursive .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Decay/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Decay/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } Hw64Decay.la: $(Hw64Decay_la_OBJECTS) $(Hw64Decay_la_DEPENDENCIES) $(EXTRA_Hw64Decay_la_DEPENDENCIES) $(AM_V_CXXLD)$(Hw64Decay_la_LINK) -rpath $(pkglibdir) $(Hw64Decay_la_OBJECTS) $(Hw64Decay_la_LIBADD) $(LIBS) HwMamboDecay.la: $(HwMamboDecay_la_OBJECTS) $(HwMamboDecay_la_DEPENDENCIES) $(EXTRA_HwMamboDecay_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwMamboDecay_la_LINK) -rpath $(pkglibdir) $(HwMamboDecay_la_OBJECTS) $(HwMamboDecay_la_LIBADD) $(LIBS) libHwDecay.la: $(libHwDecay_la_OBJECTS) $(libHwDecay_la_DEPENDENCIES) $(EXTRA_libHwDecay_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwDecay_la_OBJECTS) $(libHwDecay_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DecayIntegrator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DecayMatrixElement.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DecayPhaseSpaceChannel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DecayPhaseSpaceMode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DecayVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Hw64Decayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwDecayHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwDecayerBase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MamboDecayer.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done cscopelist-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ clean-pkglibLTLIBRARIES mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \ cscopelist-recursive ctags-recursive install-am install-strip \ tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES cscopelist \ cscopelist-recursive ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkglibLTLIBRARIES \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/HwDecayHandler.cc���������������������������������������������������������0000644�0001750�0001750�00000017721�11754474774�021165� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HwDecayHandler.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the HwDecayHandler class. // #include "HwDecayHandler.h" #include "ThePEG/Handlers/EventHandler.h" #include "ThePEG/Handlers/Hint.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/PDT/Decayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/EventRecord/Step.h" #include "ThePEG/EventRecord/Collision.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "DecayIntegrator.h" #include "DecayPhaseSpaceMode.h" #include "ThePEG/PDT/MixedParticleData.h" #include "Herwig++/Utilities/EnumParticles.h" using namespace Herwig; using namespace ThePEG::Helicity; void HwDecayHandler:: handle(EventHandler &, const tPVector & tagged, const Hint &) { // First go through the tagged particles for unstable ones tPVector parents; for(int i = 0, N = tagged.size(); i<N; ++i) { if(tagged[i]) { // add to parents if not stable if(!tagged[i]->data().stable() && tagged[i]->data().id() != ParticleID::Remnant && _excluded.find( tagged[i]->dataPtr() ) == _excluded.end() ) { parents.push_back(tagged[i]); } // if stable and has spinInfo set the developed flag else { develop(tagged[i]); } } } // if nothing to be decayed return if(parents.empty()) return; useMe(); // Create a new step, decay all particles and add their children to the step StepPtr newstep = _newstep ? newStep() : currentStep(); for(int i = 0, N = parents.size(); i<N; ++i) { performDecay(newstep->find(parents[i]), *newstep); } } // perform decay method including modifications for spin correlations // and for the decayer to specify intermediate decay products void HwDecayHandler::performDecay(tPPtr parent, Step & s) const { long ntry = 0; tcSpinPtr hwspin; tcMixedParticleDataPtr mixdata=dynamic_ptr_cast<tcMixedParticleDataPtr>(parent->dataPtr()); if(mixdata) { pair<bool,Length> mixing = mixdata->generateLifeTime(); develop(parent); parent->setLifeLength(Distance()); PPtr newparent; if(mixing.first) { newparent = parent->dataPtr()->CC()-> produceParticle(parent->momentum()); } else { newparent = parent->dataPtr() -> produceParticle(parent->momentum()); } newparent->setLabVertex(parent->labDecayVertex()); Lorentz5Distance lifeLength(mixing.second, parent->momentum().vect()* (mixing.second/parent->mass())); newparent->setLifeLength(lifeLength); s.addDecayProduct(parent, newparent); parent = newparent; } else if ( maxLifeTime() >= ZERO ) { if( ( lifeTimeOption() && parent->lifeLength().tau() > maxLifeTime())|| (!lifeTimeOption() && parent->data().cTau() > maxLifeTime()) ) { parent->setLifeLength(Distance()); develop(parent); return; } } while ( true ) { // exit if fails if ( ++ntry >= maxLoop() ) throw Exception() << "Too many tries " << maxLoop() << "to generate decay of " << *parent << "in " << "HwDecayHandler::performDecay" << Exception::eventerror; // select the decay mode tDMPtr dm(parent->data().selectMode(*parent)); // check we found a decay mode and it had a decayer if ( !dm ) { generator()->log() << *generator()->currentEvent() << "\n"; generator()->log() << *parent << "\n"; throw Exception() << "No DecayModes for " << parent->PDGName() << " in HwDecayHandler::performDecay" << Exception::eventerror; } if ( !dm->decayer() ) throw Exception() << "No decayer for DecayMode of " << parent->PDGName() << " in HwDecayHandler::performDecay" << Exception::eventerror; try { ParticleVector children = dm->decayer()->decay(*dm, *parent); if(children.empty()) continue; assert(parent->children().empty()); // generate radiation in the decay tDecayIntegratorPtr hwdec=dynamic_ptr_cast<tDecayIntegratorPtr>(dm->decayer()); if (hwdec && hwdec->canGeneratePhotons()) children = hwdec->generatePhotons(*parent,children); // set up parent parent->decayMode(dm); // add children for ( int i = 0, N = children.size(); i < N; ++i ) { children[i]->setLabVertex(parent->labDecayVertex()); if ( !s.addDecayProduct(parent, children[i]) ) throw Exception() << "Failed to add child " << children[i]->PDGName() << " in decay of " << parent->PDGName() << Exception::eventerror; } parent->scale(ZERO); // loop over the children for ( int i = 0, N = children.size(); i < N; ++i ) { // if the child has already been decayed add products to the record if(children[i]->decayed()) addDecayedParticle(children[i],s); // if not stable decay the child else if (!children[i]->data().stable() && _excluded.find( children[i]->dataPtr() ) == _excluded.end() ) { performDecay(children[i], s); } // if stable and has spinInfo set up decay matrices etc. else { develop(children[i]); } } // sort out the spinInfo for the parent after the decays if(parent->spinInfo()) parent->spinInfo()->develop(); return; } catch (Veto) {} } } // method to add an intermediate which has already been decayed to the event record void HwDecayHandler::addDecayedParticle(tPPtr parent, Step & s) const { for ( int i = 0, N = parent->children().size(); i < N; ++i ) { parent->children()[i]->setLabVertex(parent->labDecayVertex()); s.addDecayProduct(parent->children()[i]); } parent->scale(ZERO); for ( int i = 0, N = parent->children().size(); i < N; ++i ) { if((parent->children()[i])->decayed()) { for(unsigned int ix=0;ix<(parent->children()[i])->children().size();++ix) addDecayedParticle(parent->children()[i],s); } else if ( ! parent->children()[i]->data().stable() && _excluded.find( parent->children()[i]->dataPtr() ) == _excluded.end() ) { performDecay(parent->children()[i], s); } else { develop(parent->children()[i]); } } return; } void HwDecayHandler::persistentOutput(PersistentOStream & os) const { os << _newstep << _excluded << _excludedVector; } void HwDecayHandler::persistentInput(PersistentIStream & is, int) { is >> _newstep >> _excluded >> _excludedVector; } ClassDescription<HwDecayHandler> HwDecayHandler::initHwDecayHandler; void HwDecayHandler::Init() { static ClassDocumentation<HwDecayHandler> documentation ("This is the handler for decays in Herwig++.", "Decays in Herwig++ include full spin correlations, based on \\cite{Richardson:2001df}.", "%\\cite{Richardson:2001df}\n" "\\bibitem{Richardson:2001df}\n" " P.~Richardson,\n" " ``Spin correlations in Monte Carlo simulations,''\n" " JHEP {\\bf 0111}, 029 (2001)\n" " [arXiv:hep-ph/0110108].\n" " %%CITATION = JHEPA,0111,029;%%\n" ); static Switch<HwDecayHandler,bool> interfaceNewStep ("NewStep", "Add the particles in a new step", &HwDecayHandler::_newstep, true, false, false); static SwitchOption interfaceNewStepNew (interfaceNewStep, "Yes", "Add particles in a new step", true); static SwitchOption interfaceNewStepCurrent (interfaceNewStep, "No", "Add them in the current step", false); static RefVector<HwDecayHandler,ParticleData> interfaceExcluded ("Excluded", "Particles which should not be decayed", &HwDecayHandler::_excludedVector, -1, false, false, true, false, false); } void HwDecayHandler::doinit() { DecayHandler::doinit(); _excluded = set<tcPDPtr>(_excludedVector.begin(),_excludedVector.end()); } �����������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/��������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464204�020220� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/SemiLeptonicScalarDecayer.cc����������������������������������0000644�0001750�0001750�00000027176�11754474774�025575� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SemiLeptonicScalarDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SemiLeptonicScalarDecayer class. // #include "SemiLeptonicScalarDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" #include "ThePEG/Helicity/epsilon.h" #include "ThePEG/Helicity/LorentzTensor.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; SemiLeptonicScalarDecayer::SemiLeptonicScalarDecayer() { // intermediates generateIntermediates(true); } void SemiLeptonicScalarDecayer::doinitrun() { _current->initrun(); _form->initrun(); DecayIntegrator::doinitrun(); if(initialize()) { _maxwgt.clear(); for(unsigned int ix=0;ix<numberModes();++ix) { _maxwgt.push_back(mode(ix)->maxWeight()); } } } void SemiLeptonicScalarDecayer::doinit() { DecayIntegrator::doinit(); // make sure the current got initialised _current->init(); // and the form factors _form->init(); // the channels tPDVector extpart,ptemp; _modemap.clear(); double maxweight; vector<double> channelwgts(1,1.); int id0(0),id1(0),Wcharge(0); Energy min; DecayPhaseSpaceModePtr mode; DecayPhaseSpaceChannelPtr channel; int iq,ia; unsigned int ix,iy,iz; bool done; for(ix=0;ix<_form->numberOfFactors();++ix) { // get the external particles for this mode extpart.resize(2); _form->particleID(ix,id0,id1); extpart[0]=getParticleData(id0); extpart[1]=getParticleData(id1); _modemap.push_back(numberModes()); if(!extpart[0]||!extpart[1]) continue; Wcharge =(extpart[0]->iCharge()-extpart[1]->iCharge()); min = extpart[0]->mass()+extpart[0]->widthUpCut() -extpart[1]->mass()+extpart[1]->widthLoCut(); for(iy=0;iy<_current->numberOfModes();++iy) { extpart.resize(2); _current->decayModeInfo(iy,iq,ia); ptemp=_current->particles(Wcharge,iy,iq,ia); for(iz=0;iz<ptemp.size();++iz) { extpart.push_back(ptemp[iz]); } // create the mode mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); // create the first piece of the channel channel = new_ptr(DecayPhaseSpaceChannel(mode)); channel->addIntermediate(extpart[0],0,0.0,1,-1); done=_current->createMode(Wcharge,iy,mode,2,1,channel,min); if(done) { // the maximum weight if(_maxwgt.size()>numberModes()) maxweight=_maxwgt[numberModes()]; else maxweight=2.; channelwgts.resize(mode->numberChannels(), 1./(mode->numberChannels())); addMode(mode,maxweight,channelwgts); } } } } bool SemiLeptonicScalarDecayer::accept(tcPDPtr parent, const tPDVector & children) const { // find the non-lepton int imes(0),idtemp,idin(parent->id()); vector<int> idother; bool dummy; tPDVector::const_iterator pit = children.begin(); tPDVector::const_iterator pend = children.end(); for( ; pit!=pend;++pit) { idtemp=(**pit).id(); if(abs(idtemp)>16) imes=idtemp; else idother.push_back(idtemp); } // check that the form factor exists if(_form->formFactorNumber(idin,imes,dummy)<0) return false; // and the current return _current->accept(idother); } int SemiLeptonicScalarDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { // find the ids of the particles for the decay current tPDVector::const_iterator pit = children.begin(); tPDVector::const_iterator pend = children.end(); int idtemp,imes(0),idin(parent->id()); vector<int> idother; cc=false; for( ; pit!=pend;++pit) { idtemp=(**pit).id(); if(abs(idtemp)>16) imes=idtemp; else idother.push_back(idtemp); } return _modemap[_form->formFactorNumber(idin,imes,cc)] +_current->decayMode(idother); } void SemiLeptonicScalarDecayer::persistentOutput(PersistentOStream & os) const { os << _current << _form << _maxwgt << _modemap; } void SemiLeptonicScalarDecayer::persistentInput(PersistentIStream & is, int) { is >> _current >> _form >> _maxwgt >> _modemap; } ClassDescription<SemiLeptonicScalarDecayer> SemiLeptonicScalarDecayer::initSemiLeptonicScalarDecayer; // Definition of the static class description member. void SemiLeptonicScalarDecayer::Init() { static ClassDocumentation<SemiLeptonicScalarDecayer> documentation ("The SemiLeptonicScalarDecayer class is designed for the" "semi-leptonic decay of a (pseudo)-scalar meson."); static Reference<SemiLeptonicScalarDecayer,LeptonNeutrinoCurrent> interfaceCurrent ("Current", "The current for the leptons produced in the decay.", &SemiLeptonicScalarDecayer::_current, true, true, true, false, false); static Reference<SemiLeptonicScalarDecayer,ScalarFormFactor> interfaceFormFactor ("FormFactor", "The form factor", &SemiLeptonicScalarDecayer::_form, true, true, true, false, false); static ParVector<SemiLeptonicScalarDecayer,double> interfaceMaximumWeight ("MaximumWeight", "The maximum weights for the decays", &SemiLeptonicScalarDecayer::_maxwgt, 0, 0, 0, 0, 100., false, false, true); } // combine the currents and form-factors to give the matrix element double SemiLeptonicScalarDecayer::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // get the information on the form-factor int jspin(0),id0(inpart.id()),id1(decay[0]->id()); bool cc(false); unsigned int iloc(_form->formFactorNumber(id0,id1,cc)); int spect,iq,ia; _form->formFactorInfo(iloc,jspin,spect,iq,ia); // extract leptons for the lepton current Energy scale; ParticleVector leptons; leptons.push_back(decay[decay.size()-2]); leptons.push_back(decay[decay.size()-1]); int mode=(abs(decay[1]->id())-11)/2; // initialisation if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); if(jspin==0) ME(DecayMatrixElement(PDT::Spin0,PDT::Spin0,PDT::Spin1Half,PDT::Spin1Half)); else if(jspin==1) ME(DecayMatrixElement(PDT::Spin0,PDT::Spin1,PDT::Spin1Half,PDT::Spin1Half)); else if(jspin==2) ME(DecayMatrixElement(PDT::Spin0,PDT::Spin2,PDT::Spin1Half,PDT::Spin1Half)); // work out the mapping for the lepton vector _constants.resize(decay.size()+1); _ispin.resize(decay.size()); _imes=0; unsigned int itemp(1); for(int ix=int(decay.size()-1);ix>=0;--ix) { _ispin[ix]=decay[ix]->data().iSpin(); if(abs(decay[ix]->id())<=16) { itemp*=_ispin[ix]; _constants[ix]=itemp; } else _imes=ix; } _constants[decay.size()]=1; _constants[_imes]=_constants[_imes+1]; } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); if(jspin==0) ScalarWaveFunction:: constructSpinInfo(decay[0],outgoing,true); else if(jspin==1) VectorWaveFunction:: constructSpinInfo(_vectors,decay[0],outgoing,true,false); else if(jspin==2) TensorWaveFunction:: constructSpinInfo(_tensors,decay[0],outgoing,true,false); _current->current(mode,ichan,scale,leptons,meopt); return 0.; } // get the wavefunctions of the decay products switch(decay[0]->dataPtr()->iSpin()) { case 1: break; case 3: VectorWaveFunction:: calculateWaveFunctions(_vectors,decay[0],outgoing,false); break; case 5: TensorWaveFunction:: calculateWaveFunctions(_tensors,decay[0],outgoing,false); break; default: assert(false); } // work out the value of q and calculate the form factors Lorentz5Momentum q(inpart.momentum()-decay[0]->momentum()); q.rescaleMass(); Energy2 q2(q.mass2()); Lorentz5Momentum sum(inpart.momentum()+decay[0]->momentum()); // calculate the hadronic current for the decay Complex ii(0.,1.); vector<LorentzPolarizationVectorE> hadron; if(jspin==0) { Complex fp,f0; _form->ScalarScalarFormFactor(q2,iloc,id0,id1,inpart.mass(),decay[0]->mass(), f0,fp); Complex pre((sqr(inpart.mass())-sqr(decay[0]->mass()))/q2*(f0-fp)); hadron.push_back(fp*sum+(pre*q)); } else if(jspin==1) { Complex A0,A1,A2,A3,V; complex<Energy> dot; Energy MP(inpart.mass()),MV(decay[0]->mass()),msum(MP+MV),mdiff(MP-MV); _form->ScalarVectorFormFactor(q2,iloc,id0,id1,MP,MV,A0,A1,A2,V); A3 = 0.5/MV*(msum*A1-mdiff*A2); if(cc) V*=-1.; // compute the hadron currents for(unsigned int ix=0;ix<3;++ix) { // dot product dot = _vectors[ix]*inpart.momentum(); // current hadron.push_back(-ii*msum*A1*_vectors[ix] +ii*A2/msum*dot*sum +2.*ii*MV/q2*(A3-A0)*dot*q +2.*V/msum*Helicity::epsilon(_vectors[ix],inpart.momentum(), decay[0]->momentum())); } } else if(jspin==2) { complex<InvEnergy2> h,bp,bm; complex<double> k; complex<Energy2> dot; _form->ScalarTensorFormFactor(q2,iloc,id0,id1,inpart.mass(),decay[0]->mass(), h,k,bp,bm); if(!cc) h*=-1.; LorentzPolarizationVectorE dotv; // compute the hadron currents for(unsigned int ix=0;ix<5;++ix) { dotv = _tensors[ix]*inpart.momentum(); dot = dotv*inpart.momentum(); hadron.push_back(ii*h*Helicity::epsilon(dotv,sum,q) -k*dotv-bp*dot*sum-bm*dot*q); } } // construct the lepton current vector<LorentzPolarizationVectorE> lepton(_current->current(mode,ichan,scale,leptons,meopt)); // compute the matrix element vector<unsigned int> ihel(decay.size()+1); for(unsigned int mhel=0;mhel<hadron.size();++mhel) { for(unsigned int lhel=0;lhel<lepton.size();++lhel) { // map the index for the leptons to a helicity state for(unsigned int ix=decay.size();ix>0;--ix) { if(ix-1!=_imes) ihel[ix]=(lhel%_constants[ix-1])/_constants[ix]; } // helicities of mesons ihel[0]=0; ihel[_imes+1]=mhel; ME()(ihel)= lepton[lhel].dot(hadron[mhel])*SM().fermiConstant(); } } // store the matrix element double ckm(1.); if(iq<=6) { if(iq%2==0) ckm = SM().CKM(abs(iq)/2-1,(abs(ia)-1)/2); else ckm = SM().CKM(abs(ia)/2-1,(abs(iq)-1)/2); } // return the answer return 0.5*(ME().contract(_rho)).real()*ckm; } // output the setup information for the particle database void SemiLeptonicScalarDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; DecayIntegrator::dataBaseOutput(output,false); for(unsigned int ix=0;ix<_maxwgt.size();++ix) { output << "insert " << name() << ":MaximumWeight " << ix << " " << _maxwgt[ix] << "\n"; } _current->dataBaseOutput(output,false,true); output << "newdef " << name() << ":Current " << _current->name() << " \n"; _form->dataBaseOutput(output,false,true); output << "newdef " << name() << ":FormFactor " << _form->name() << " \n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/ScalarMesonTensorScalarDecayer.h������������������������������0000644�0001750�0001750�00000014244�11754474774�026436� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ScalarMesonTensorScalarDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ScalarMesonTensorScalarDecayer_H #define HERWIG_ScalarMesonTensorScalarDecayer_H // // This is the declaration of the ScalarMesonTensorScalarDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzTensor.h" namespace Herwig { using namespace Herwig; /** \ingroup Decayer * * The <code>ScalarMesonTensorScalarDecayer</code> class is designed for the decay * of a (pseudo)scalar meson to a tensor meson and another (pseudo)scalar meson. * The matrix element takes the form * * \f[\mathcal{M} = \epsilon^{\alpha\beta} p_{0\alpha} p_{2\beta} \f] * * The incoming and outgoing mesons and the coupling can be specified using the * interfaces. * * @see DecayIntegrator. * */ class ScalarMesonTensorScalarDecayer: public DecayIntegrator { public: /** * Default constructor. */ ScalarMesonTensorScalarDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2( const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 11. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<ScalarMesonTensorScalarDecayer> initScalarMesonTensorScalarDecayer; /** * Private and non-existent assignment operator. */ ScalarMesonTensorScalarDecayer & operator=(const ScalarMesonTensorScalarDecayer &); private: /** * the PDG code for the incoming particle */ vector<int> _incoming; /** * the PDG code for the tensor meson */ vector<int> _outgoingT; /** * the PDG code for the scalar meson */ vector<int> _outgoingS; /** * the coupling for the decay */ vector<InvEnergy> _coupling; /** * the maximum weight for the decay */ vector<double> _maxweight; /** * initial number of modes */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization tensors for the decay product */ mutable vector<Helicity::LorentzTensor<double> > _tensors; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ScalarMesonTensorScalarDecayer. */ template <> struct BaseClassTrait<Herwig::ScalarMesonTensorScalarDecayer,1> { /** Typedef of the base class of ScalarMesonTensorScalarDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ScalarMesonTensorScalarDecayer> : public ClassTraitsBase<Herwig::ScalarMesonTensorScalarDecayer> { /** Return the class name. */ static string className() { return "Herwig::ScalarMesonTensorScalarDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_ScalarMesonTensorScalarDecayer_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/DtoKPiPiMarkIII.cc��������������������������������������������0000644�0001750�0001750�00000071524�11754474774�023344� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DtoKPiPiMarkIII.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DtoKPiPiMarkIII class. // #include "DtoKPiPiMarkIII.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" using namespace Herwig; using ThePEG::Helicity::ScalarWaveFunction; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; Complex DtoKPiPiMarkIII::amplitude(bool rho, Energy mD, Energy mA , Energy mB , Energy mC , Energy mAB, Energy mAC, Energy mBC, Energy mres, Energy wres) const { InvEnergy radius = rho ? _rrho : _rKstar; Energy pAB = Kinematics::pstarTwoBodyDecay(mAB ,mA,mB); Energy pR = Kinematics::pstarTwoBodyDecay(mres,mA,mB); Energy2 mgam = wres*sqr(mres)/mAB*Math::powi(pAB/pR,3)* (1.+sqr(radius*pR))/(1.+sqr(radius*pAB)); Energy2 s = (sqr(mAC)-sqr(mBC)-(sqr(mD)-sqr(mC))*(sqr(mA)-sqr(mB))/sqr(mres))* sqrt((1.+sqr(radius*pR))/(1.+sqr(radius*pAB))); Complex output=s/((sqr(mres)- sqr(mAB)-complex<Energy2>(ZERO,mgam))); return output; } DtoKPiPiMarkIII::DtoKPiPiMarkIII() { // Amplitudes and phases for D0 -> K- pi+ pi0 _a1rho = 1.0000; _phi1rho = 0.; _a1Kstarm = 0.4018; _phi1Kstarm = 154.; _a1Kstar0 = 0.4244; _phi1Kstar0 = 7.; _a1NR = 2.0693; _phi1NR = 52.; // Amplitudes and phases for D0 -> Kbar0 pi+ pi- _a2rho = 0.0975; _phi2rho = 93.; _a2Kstar = 0.2225; _phi2Kstar = 0.; _a2NR = 1.0000; _phi2NR = 0.; // Amplitudes and phases for D+ -> Kbar0 pi+ pi0 _a3rho = 1.0000; _phi3rho = 0.; _a3Kstar = 0.5617; _phi3Kstar = 43.; _a3NR = 2.7250; _phi3NR = 250.; // Amplitudes and phases for D+ -> K- pi+ pi+ _a4Kstar = 0.04749; _phi4Kstar = 105.; _a4NR = 1.00000; _phi4NR = 0.; // masses and widths of the resonances _localparameters = true; _mrhop = 0.770*GeV; _wrhop = 0.1533*GeV; _mrho0 = 0.770*GeV; _wrho0 = 0.1533*GeV; _mKstarm = 0.8921*GeV; _wKstarm = 0.0511*GeV; _mKstar0 = 0.8695*GeV; _wKstar0 = 0.0502*GeV; // radii of the mesons _rrho = 5.*mm*1e-12/hbarc; _rKstar = 2.*mm*1e-12/hbarc; // intermediates generateIntermediates(true); } void DtoKPiPiMarkIII::persistentOutput(PersistentOStream & os) const { os << _a1rho << _phi1rho << _a1Kstarm << _phi1Kstarm << _a1Kstar0 << _phi1Kstar0 << _a1NR << _phi1NR << _c1rho << _c1Kstarm << _c1Kstar0 << _c1NR << _a2rho << _phi2rho << _a2Kstar << _phi2Kstar << _a2NR << _phi2NR << _c2rho << _c2Kstar << _c2NR << _a3rho << _phi3rho << _a3Kstar << _phi3Kstar << _a3NR << _phi3NR << _c3rho << _c3Kstar << _c3NR << _a4Kstar << _phi4Kstar << _a4NR << _phi4NR << _c4Kstar << _c4NR << _localparameters << ounit(_mrhop,GeV) << ounit(_wrhop,GeV) << ounit(_mrho0,GeV) << ounit(_wrho0,GeV) << ounit(_mKstarm,GeV) << ounit(_wKstarm,GeV) << ounit(_mKstar0,GeV) << ounit(_wKstar0,GeV) << ounit(_rrho,1./GeV) << ounit(_rKstar,1./GeV) << _maxwgt << _weights; } void DtoKPiPiMarkIII::persistentInput(PersistentIStream & is, int) { is >> _a1rho >> _phi1rho >> _a1Kstarm >> _phi1Kstarm >> _a1Kstar0 >> _phi1Kstar0 >> _a1NR >> _phi1NR >> _c1rho >> _c1Kstarm >> _c1Kstar0 >> _c1NR >> _a2rho >> _phi2rho >> _a2Kstar >> _phi2Kstar >> _a2NR >> _phi2NR >> _c2rho >> _c2Kstar >> _c2NR >> _a3rho >> _phi3rho >> _a3Kstar >> _phi3Kstar >> _a3NR >> _phi3NR >> _c3rho >> _c3Kstar >> _c3NR >> _a4Kstar >> _phi4Kstar >> _a4NR >> _phi4NR >> _c4Kstar >> _c4NR >> _localparameters >> iunit(_mrhop,GeV) >> iunit(_wrhop,GeV) >> iunit(_mrho0,GeV) >> iunit(_wrho0,GeV) >> iunit(_mKstarm,GeV) >> iunit(_wKstarm,GeV) >> iunit(_mKstar0,GeV) >> iunit(_wKstar0,GeV) >> iunit(_rrho,1./GeV) >> iunit(_rKstar,1./GeV) >> _maxwgt >> _weights; } ClassDescription<DtoKPiPiMarkIII> DtoKPiPiMarkIII::initDtoKPiPiMarkIII; // Definition of the static class description member. void DtoKPiPiMarkIII::Init() { static ClassDocumentation<DtoKPiPiMarkIII> documentation ("The DtoKPiPiMarkIII class performs the D -> K pi pi decays using the fit" "of the MarkIII collaboration", "The fit of the Mark III collaboration \\cite{Adler:1987sd} was used for " "$D\\to K\\pi\\pi$ decays", "\\bibitem{Adler:1987sd} J.~Adler {\\it et al.} [MARK-III Collaboration], " "Phys.\\ Lett.\\ B {\\bf 196} (1987) 107."); static Parameter<DtoKPiPiMarkIII,double> interfaceKmPipPi0RhoMagnitude ("KmPipPi0RhoMagnitude", "The magnitude of the rho component for D0 -> K- pi+ pi0", &DtoKPiPiMarkIII::_a1rho, 1.00, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceKmPipPi0RhoPhase ("KmPipPi0RhoPhase", "The phase of the rho component for D0 -> K- pi+ pi0", &DtoKPiPiMarkIII::_phi1rho, 0.,0., 360., false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceKmPipPi0KstarmMagnitude ("KmPipPi0KstarmMagnitude", "The magnitude of the K*(892)- component for D0 -> K- pi+ pi0", &DtoKPiPiMarkIII::_a1Kstarm, 0.371, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceKmPipPi0KstarmPhase ("KmPipPi0KstarmPhase", "The phase of the K*(892)- component for D0 -> K- pi+ pi0", &DtoKPiPiMarkIII::_phi1Kstarm, 154.,0., 360., false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceKmPipPi0Kstar0Magnitude ("KmPipPi0Kstar0Magnitude", "The magnitude of the K*(892)0 component for D0 -> K- pi+ pi0", &DtoKPiPiMarkIII::_a1Kstar0, 0.391, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceKmPipPi0Kstar0Phase ("KmPipPi0Kstar0Phase", "The phase of the K*(892)0 component for D0 -> K- pi+ pi0", &DtoKPiPiMarkIII::_phi1Kstar0, 7.,0., 360., false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceKmPipPi0NonResonantMagnitude ("KmPipPi0NonResonantMagnitude", "The magnitude of the non-resonant component for D0 -> K- pi+ pi0", &DtoKPiPiMarkIII::_a1NR, 1.889, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceKmPipPi0NonResonantPhase ("KmPipPi0NonResonantPhase", "The phase of the non-resonant component for D0 -> K- pi+ pi0", &DtoKPiPiMarkIII::_phi1NR, 52.,0., 360., false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceK0PipPimRhoMagnitude ("K0PipPimRhoMagnitude", "The magnitude of the rho component for D0 -> Kbar0 pi+pi-", &DtoKPiPiMarkIII::_a2rho, 1.000, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceK0PipPimRhoPhase ("K0PipPimRhoPhase", "The phase of the rho component for D0 -> Kbar0 pi+pi-", &DtoKPiPiMarkIII::_phi2rho, 93.,0., 360., false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceK0PipPimKstarMagnitude ("K0PipPimKstarMagnitude", "The magnitude of the K*(892) component for D0 -> Kbar0 pi+pi-", &DtoKPiPiMarkIII::_a2Kstar, 2.106, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceK0PipPimKstarPhase ("K0PipPimKstarPhase", "The phase of the K*(892)0 component for D0 -> Kbar0 pi+pi-", &DtoKPiPiMarkIII::_phi2Kstar, 0.,0., 360., false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceK0PipPimNonResonantMagnitude ("K0PipPimNonResonantMagnitude", "The magnitude of the non-resonant component for D0 -> Kbar0 pi+pi-", &DtoKPiPiMarkIII::_a2NR, 9.379, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceK0PipPimNonResonantPhase ("K0PipPimNonResonantPhase", "The phase of the non-resonant component for D0 -> Kbar0 pi+pi-", &DtoKPiPiMarkIII::_phi2NR, 0.,0., 360., false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceK0PipPi0RhoMagnitude ("K0PipPi0RhoMagnitude", "The magnitude of the rho component for D+ -> Kbar0 pi+ pi0", &DtoKPiPiMarkIII::_a3rho, 1.0, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceK0PipPi0RhoPhase ("K0PipPi0RhoPhase", "The phase of the rho component for D+ -> Kbar0 pi+ pi0", &DtoKPiPiMarkIII::_phi3rho, 0.0, 0.0, 360.0, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceK0PipPi0KstarMagnitude ("K0PipPi0KstarMagnitude", "The magnitude of the K* component for D+ -> Kbar0 pi+ pi0", &DtoKPiPiMarkIII::_a3Kstar, 0.517, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceK0PipPi0KstarPhase ("K0PipPi0KstarPhase", "The phase of the K* component for D+ -> Kbar0 pi+ pi0", &DtoKPiPiMarkIII::_phi3Kstar, 43.0, 0.0, 360.0, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceK0PipPi0NonResonantMagnitude ("K0PipPi0NonResonantMagnitude", "The magnitude of the non-resonant component for D0 -> Kbar0 pi+pi-", &DtoKPiPiMarkIII::_a3NR, 2.490, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceK0PipPi0NonResonantPhase ("K0PipPi0NonResonantPhase", "The phase of the non-resonant component for D0 -> Kbar0 pi+pi-", &DtoKPiPiMarkIII::_phi3NR, 250.,0., 360., false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceKmPipPipNonResonantMagnitude ("KmPipPipNonResonantMagnitude", "The magnitude of the non-resonant component for D+ -> K- pi+ pi+", &DtoKPiPiMarkIII::_a4NR, 1.00, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceKmPipPipNonResonantPhase ("KmPipPipNonResonantPhase", "The phase of the non-resonant component for D+ -> K- pi+ pi+", &DtoKPiPiMarkIII::_phi4NR, 0., 0., 360., false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceKmPipPipKstarMagnitude ("KmPipPipKstarMagnitude", "The magnitude of the K*(892) component for D+ -> K- pi+ pi+", &DtoKPiPiMarkIII::_a4Kstar, 0.049, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,double> interfaceKmPipPipKstarPhase ("KmPipPipKstarPhase", "The phase of the K*(892) component for D+ -> K- pi+ pi+", &DtoKPiPiMarkIII::_phi4Kstar, 105.,0., 360., false, false, Interface::limited); static Switch<DtoKPiPiMarkIII,bool> interfaceLocalParameters ("LocalParameters", "Whether to use local values for the masses and widths or" " those from the ParticleData objects", &DtoKPiPiMarkIII::_localparameters, true, false, false); static SwitchOption interfaceLocalParametersLocal (interfaceLocalParameters, "Local", "Use local values", true); static SwitchOption interfaceLocalParametersParticleData (interfaceLocalParameters, "ParticleData", "Use the values from the ParticleData objects", false); static Parameter<DtoKPiPiMarkIII,Energy> interfaceKstar0Mass ("Kstar0Mass", "The mass of the K*(892)0", &DtoKPiPiMarkIII::_mKstar0, GeV, 0.8965 *GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,Energy> interfaceKstar0Width ("Kstar0Width", "The width of the K*(892)0", &DtoKPiPiMarkIII::_wKstar0, GeV, 0.0502*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,Energy> interfaceKstarMinusMass ("KstarMinusMass", "The mass of the K*(892)-", &DtoKPiPiMarkIII::_mKstarm, GeV, 0.8921*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,Energy> interfaceKstarMinusWidth ("KstarMinusWidth", "The width of the K*(892)-", &DtoKPiPiMarkIII::_wKstarm, GeV, 0.0511*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,Energy> interfaceRho0Mass ("Rho0Mass", "The mass of the rho0", &DtoKPiPiMarkIII::_mrho0, GeV, 0.770 *GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,Energy> interfaceRho0Width ("Rho0Width", "The width of the rho0", &DtoKPiPiMarkIII::_wrho0, GeV, 0.1533*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,Energy> interfaceRhoPlusMass ("RhoPlusMass", "The mass of the rho+", &DtoKPiPiMarkIII::_mrhop, GeV, 0.770 *GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,Energy> interfaceRhoPlusWidth ("RhoPlusWidth", "The width of the rho+", &DtoKPiPiMarkIII::_wrhop, GeV, 0.1533*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,InvEnergy> interfaceRhoRadius ("RhoRadius", "The radius of the rho for the Blatt-Weisskopf factor", &DtoKPiPiMarkIII::_rrho, mm*1e-12/hbarc, 5.0*mm*1e-12/hbarc, 0.0*mm*1e-12/hbarc, 10.0*mm*1e-12/hbarc, true, false, Interface::limited); static Parameter<DtoKPiPiMarkIII,InvEnergy> interfaceKstarRadius ("KstarRadius", "The radius of the K* for the Blatt-Weisskopf factor", &DtoKPiPiMarkIII::_rKstar, mm*1e-12/hbarc, 2.0*mm*1e-12/hbarc, 0.0*mm*1e-12/hbarc, 10.0*mm*1e-12/hbarc, true, false, Interface::limited); static ParVector<DtoKPiPiMarkIII,double> interfaceMaximumWeights ("MaximumWeights", "The maximum weights for the unweighting of the decays", &DtoKPiPiMarkIII::_maxwgt, -1, 1.0, 0.0, 1.0e11, false, false, Interface::limited); static ParVector<DtoKPiPiMarkIII,double> interfaceWeights ("Weights", "The weights for the different channels for the phase-space integration", &DtoKPiPiMarkIII::_weights, -1, 1.0, 0.0, 1.0, false, false, Interface::limited); } void DtoKPiPiMarkIII::doinit() { DecayIntegrator::doinit(); double fact = Constants::pi/180.; // amplitudes for D0 -> K- pi+ pi0 _c1rho = _a1rho *Complex(cos(_phi1rho *fact),sin(_phi1rho *fact)); _c1Kstarm = _a1Kstarm*Complex(cos(_phi1Kstarm*fact),sin(_phi1Kstarm*fact)); _c1Kstar0 = _a1Kstar0*Complex(cos(_phi1Kstar0*fact),sin(_phi1Kstar0*fact)); _c1NR = _a1NR *Complex(cos(_phi1NR *fact),sin(_phi1NR *fact)); // amplitudes for D0 -> Kbar0 pi+ pi- _c2rho = _a2rho *Complex(cos(_phi2rho *fact),sin(_phi2rho *fact)); _c2Kstar = _a2Kstar *Complex(cos(_phi2Kstar *fact),sin(_phi2Kstar *fact)); _c2NR = _a2NR *Complex(cos(_phi2NR *fact),sin(_phi2NR *fact)); // amplitudes for D+ -> Kbar0 pi+ pi0 _c3rho = _a3rho *Complex(cos(_phi3rho *fact),sin(_phi3rho *fact)); _c3Kstar = _a3Kstar *Complex(cos(_phi3Kstar *fact),sin(_phi3Kstar *fact)); _c3NR = _a3NR *Complex(cos(_phi3NR *fact),sin(_phi3NR *fact)); // amplitudes for D+ -> K- pi+ pi+ _c4Kstar = _a4Kstar *Complex(cos(_phi4Kstar *fact),sin(_phi4Kstar *fact)); _c4NR = _a4NR *Complex(cos(_phi4NR *fact),sin(_phi4NR *fact)); // intermediate resonances tPDPtr k8920 = getParticleData(ParticleID::Kstarbar0 ); tPDPtr k892m = getParticleData(ParticleID::Kstarminus); tPDPtr rho0 = getParticleData(ParticleID::rho0 ); tPDPtr rhop = getParticleData(ParticleID::rhoplus ); // D0 -> K- pi+ pi0 tPDVector extpart(4); DecayPhaseSpaceChannelPtr newchannel; DecayPhaseSpaceModePtr mode; extpart[0]=getParticleData(ParticleID::D0); extpart[1]=getParticleData(ParticleID::Kminus); extpart[2]=getParticleData(ParticleID::piplus); extpart[3]=getParticleData(ParticleID::pi0); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); unsigned int ix=0; if(rhop) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(rhop,0,0., 2,3); mode->addChannel(newchannel); ++ix; } if(k892m) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k892m,0,0., 1,3); mode->addChannel(newchannel); ++ix; } if(k8920) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,3); newchannel->addIntermediate(k8920,0,0., 1,2); mode->addChannel(newchannel); ++ix; } // add the mode vector<double> wtemp; if(ix<=_weights.size()) { vector<double>::const_iterator wit=_weights.begin(); wtemp=vector<double>(wit,wit+ix); } else { wtemp=vector<double>(ix,1./double(ix)); } if(_maxwgt.empty()) _maxwgt.push_back(1.); addMode(mode,_maxwgt[0],wtemp); // D0 -> Kbar0 pi+ pi- extpart[0]=getParticleData(ParticleID::D0); extpart[1]=getParticleData(ParticleID::Kbar0); extpart[2]=getParticleData(ParticleID::piplus); extpart[3]=getParticleData(ParticleID::piminus); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); unsigned int iy=ix; if(rho0) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(rho0,0,0., 2,3); mode->addChannel(newchannel); ++iy; } if(k892m) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k892m,0,0., 1,3); mode->addChannel(newchannel); ++iy; } // add the mode if(iy<=_weights.size()) { vector<double>::const_iterator wit=_weights.begin(); wtemp=vector<double>(wit+ix,wit+iy); } else { wtemp=vector<double>(iy-ix,1./double(iy-ix)); } if(_maxwgt.size()<2) _maxwgt.push_back(1.); addMode(mode,_maxwgt[1],wtemp); // D+ -> Kbar0pi+pi0 ix=iy; extpart[0]=getParticleData(ParticleID::Dplus); extpart[1]=getParticleData(ParticleID::Kbar0); extpart[2]=getParticleData(ParticleID::piplus); extpart[3]=getParticleData(ParticleID::pi0); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); if(rhop) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(rhop,0,0., 2,3); mode->addChannel(newchannel); ++iy; } if(k8920) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k8920,0,0., 1,3); mode->addChannel(newchannel); ++iy; } // add the mode if(iy<=_weights.size()) { vector<double>::const_iterator wit=_weights.begin(); wtemp=vector<double>(wit+ix,wit+iy); } else { wtemp=vector<double>(iy-ix,1./double(iy-ix)); } if(_maxwgt.size()<3) _maxwgt.push_back(1.); addMode(mode,_maxwgt[2],wtemp); // D+ -> K-pi+pi+ ix=iy; extpart[0]=getParticleData(ParticleID::Dplus); extpart[1]=getParticleData(ParticleID::Kminus); extpart[2]=getParticleData(ParticleID::piplus); extpart[3]=getParticleData(ParticleID::piplus); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); if(k8920) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,3); newchannel->addIntermediate(k8920,0,0., 1,2); mode->addChannel(newchannel); ++iy; newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k8920,0,0., 1,3); mode->addChannel(newchannel); ++iy; } // add the mode if(iy<=_weights.size()) { vector<double>::const_iterator wit=_weights.begin(); wtemp=vector<double>(wit+ix,wit+iy); } else { wtemp=vector<double>(iy-ix,1./double(iy-ix)); } if(_maxwgt.size()<4) _maxwgt.push_back(1.); addMode(mode,_maxwgt[3],wtemp); // reset the resonance parameters in the integration if needed if(_localparameters) { resetIntermediate(k8920,_mKstar0,_wKstar0); resetIntermediate(k892m,_mKstarm,_wKstarm); resetIntermediate(rho0 ,_mrho0 ,_wrho0 ); resetIntermediate(rhop ,_mrhop ,_wrhop ); } else { _mKstar0 = k8920->mass(); _mKstarm = k892m->mass(); _mrho0 = rho0 ->mass(); _mrhop = rhop ->mass(); _wKstar0 = k8920->width(); _wKstarm = k892m->width(); _wrho0 = rho0 ->width(); _wrhop = rhop ->width(); } } int DtoKPiPiMarkIII::modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const { int id0(parent->id()); // incoming particle must be D0 or D+ if(abs(id0)!=ParticleID::D0&&abs(id0)!=ParticleID::Dplus) return -1; cc = id0<0; // must be three decay products if(children.size()!=3) return -1; tPDVector::const_iterator pit = children.begin(); unsigned int npip(0),npim(0),nkm(0),nk0(0),npi0(0); int id; for( ;pit!=children.end();++pit) { id=(**pit).id(); if(id ==ParticleID::piplus) ++npip; else if(id ==ParticleID::pi0) ++npi0; else if(id ==ParticleID::piminus) ++npim; else if(abs(id)==ParticleID::K0) ++nk0; else if(id ==ParticleID::K_L0) ++nk0; else if(id ==ParticleID::K_S0) ++nk0; else if(abs(id)==ParticleID::Kplus) ++nkm; } if(abs(id0)==ParticleID::Dplus) { if((id0==ParticleID::Dplus &&(nkm==1&&npip==2))|| (id0==ParticleID::Dminus&&(nkm==1&&npim==2))) return 3; else if((id0==ParticleID::Dplus &&nk0==1&&npip==1&&npi0==1)|| (id0==ParticleID::Dminus&&nk0==1&&npim==1&&npi0==1)) return 2; else return -1; } else { if(npim==1&&npip==1&&nk0==1) return 1; else if(nkm==1&&(npip+npim)==1&&npi0==1) return 0; else return -1; } } double DtoKPiPiMarkIII::me2( const int ichan,const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { useMe(); if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin0,PDT::Spin0,PDT::Spin0)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); for(unsigned int ix=0;ix<3;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return 0.; } // compute the invariant masses needed to calulate the amplitudes Energy mA = decay[0]->mass(); Energy mB = decay[1]->mass(); Energy mC = decay[2]->mass(); Energy mD = inpart.mass(); Energy mAB = (decay[0]->momentum()+decay[1]->momentum()).m(); Energy mAC = (decay[0]->momentum()+decay[2]->momentum()).m(); Energy mBC = (decay[1]->momentum()+decay[2]->momentum()).m(); // compute the amplitudes for the resonaces present in both models Complex amp; // D0 -> K- pi+ pi0 if(imode()==0) { if(ichan<0) { amp = _c1NR -_c1rho *amplitude(true ,mD,mB,mC,mA,mBC,mAB,mAC,_mrhop ,_wrhop ) -_c1Kstarm*amplitude(false,mD,mA,mC,mB,mAC,mAB,mBC,_mKstarm,_wKstarm) -_c1Kstar0*amplitude(false,mD,mA,mB,mC,mAB,mAC,mBC,_mKstar0,_wKstar0); } else if(ichan==0) { amp = _c1rho *amplitude(true ,mD,mB,mC,mA,mBC,mAB,mAC,_mrhop ,_wrhop ); } else if(ichan==1) { amp = _c1Kstarm*amplitude(false,mD,mA,mC,mB,mAC,mAB,mBC,_mKstarm,_wKstarm); } else { amp = _c1Kstar0*amplitude(false,mD,mA,mB,mC,mAB,mAC,mBC,_mKstar0,_wKstar0); } } // D0 -> Kbar0 pi+pi- else if(imode()==1) { if(ichan<0) { amp = _c2NR*(-1.+2.*UseRandom::rndbool()) -_c2rho *amplitude(true ,mD,mB,mC,mA,mBC,mAB,mAC,_mrho0 ,_wrho0 ) +_c2Kstar*amplitude(false,mD,mA,mC,mB,mAC,mAB,mBC,_mKstarm,_wKstarm); } else if(ichan==0) { amp =_c2rho *amplitude(true ,mD,mB,mC,mA,mBC,mAB,mAC,_mrho0 ,_wrho0 ); } else { amp =_c2Kstar*amplitude(false,mD,mA,mC,mB,mAC,mAB,mBC,_mKstarm,_wKstarm); } } // D+ -> Kbar0 pi+ pi0 else if(imode()==2) { if(ichan<0) { amp = _c3NR -_c3rho *amplitude(true ,mD,mB,mC,mA,mBC,mAB,mAC,_mrhop ,_wrhop ) -_c3Kstar*amplitude(false,mD,mA,mC,mB,mAC,mAB,mBC,_mKstar0,_wKstar0); } else if(ichan==0) { amp = _c3rho *amplitude(true ,mD,mB,mC,mA,mBC,mAB,mAC,_mrhop,_wrhop); } else { amp = _c3Kstar*amplitude(false,mD,mA,mC,mB,mAC,mAB,mBC,_mKstar0,_wKstar0); } } // D+ -> K- pi+ pi+ else { if(ichan<0) { amp = _c4NR +_c4Kstar*amplitude(false,mD,mA,mB,mC,mAB,mAC,mBC,_mKstar0,_wKstar0) +_c4Kstar*amplitude(false,mD,mA,mC,mB,mAC,mAB,mBC,_mKstar0,_wKstar0); } else if(ichan==0) { amp =_c4Kstar*amplitude(false,mD,mA,mB,mC,mAB,mAC,mBC,_mKstar0,_wKstar0); } else { amp =_c4Kstar*amplitude(false,mD,mA,mC,mB,mAC,mAB,mBC,_mKstar0,_wKstar0); } } // now compute the matrix element ME()(0,0,0,0)=amp; return norm(amp); } void DtoKPiPiMarkIII::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // parameters output << "newdef " << name() << ":KmPipPi0RhoMagnitude " << _a1rho << "\n"; output << "newdef " << name() << ":KmPipPi0RhoPhase " << _phi1rho << "\n"; output << "newdef " << name() << ":KmPipPi0KstarmMagnitude " << _a1Kstarm << "\n"; output << "newdef " << name() << ":KmPipPi0KstarmPhase " << _phi1Kstarm << "\n"; output << "newdef " << name() << ":KmPipPi0Kstar0Magnitude " << _a1Kstar0 << "\n"; output << "newdef " << name() << ":KmPipPi0Kstar0Phase " << _phi1Kstar0 << "\n"; output << "newdef " << name() << ":KmPipPi0NonResonantMagnitude " << _a1NR << "\n"; output << "newdef " << name() << ":KmPipPi0NonResonantPhase " << _phi1NR << "\n"; output << "newdef " << name() << ":K0PipPimRhoMagnitude " << _a2rho << "\n"; output << "newdef " << name() << ":K0PipPimRhoPhase " << _phi2rho << "\n"; output << "newdef " << name() << ":K0PipPimKstarMagnitude " << _a2Kstar << "\n"; output << "newdef " << name() << ":K0PipPimKstarPhase " << _phi2Kstar << "\n"; output << "newdef " << name() << ":K0PipPimNonResonantMagnitude " << _a2NR << "\n"; output << "newdef " << name() << ":K0PipPimNonResonantPhase " << _phi2NR << "\n"; output << "newdef " << name() << ":K0PipPi0RhoMagnitude " << _a3rho << "\n"; output << "newdef " << name() << ":K0PipPi0RhoPhase " << _phi3rho << "\n"; output << "newdef " << name() << ":K0PipPi0KstarMagnitude " << _a3Kstar << "\n"; output << "newdef " << name() << ":K0PipPi0KstarPhase " << _phi3Kstar << "\n"; output << "newdef " << name() << ":K0PipPi0NonResonantMagnitude " << _a3NR << "\n"; output << "newdef " << name() << ":K0PipPi0NonResonantPhase " << _phi3NR << "\n"; output << "newdef " << name() << ":KmPipPipNonResonantMagnitude " << _a4NR << "\n"; output << "newdef " << name() << ":KmPipPipNonResonantPhase " << _phi4NR << "\n"; output << "newdef " << name() << ":KmPipPipKstarMagnitude " << _a4Kstar << "\n"; output << "newdef " << name() << ":KmPipPipKstarPhase " << _phi4Kstar << "\n"; output << "newdef " << name() << ":LocalParameters " << _localparameters << "\n"; output << "newdef " << name() << ":Kstar0Mass " << _mKstar0/GeV << "\n"; output << "newdef " << name() << ":Kstar0Width " << _wKstar0/GeV << "\n"; output << "newdef " << name() << ":KstarMinusMass " << _mKstarm/GeV << "\n"; output << "newdef " << name() << ":KstarMinusWidth " << _wKstarm/GeV << "\n"; output << "newdef " << name() << ":Rho0Mass " << _mrho0/GeV << "\n"; output << "newdef " << name() << ":Rho0Width " << _wrho0/GeV << "\n"; output << "newdef " << name() << ":RhoPlusMass " << _mrhop/GeV << "\n"; output << "newdef " << name() << ":RhoPlusWidth " << _wrhop/GeV << "\n"; output << "newdef " << name() << ":RhoRadius " << _rrho/(mm*1e-12/hbarc) << "\n"; output << "newdef " << name() << ":KstarRadius " << _rKstar/(mm*1e-12/hbarc) << "\n"; for(unsigned int ix=0;ix<_maxwgt.size();++ix) { output << "insert " << name() << ":MaximumWeights " << ix << " " << _maxwgt[ix] << "\n"; } for(unsigned int ix=0;ix<_weights.size();++ix) { output << "insert " << name() << ":Weights " << ix << " " << _weights[ix] << "\n"; } if(header) { output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } } void DtoKPiPiMarkIII::doinitrun() { DecayIntegrator::doinitrun(); _weights.resize(mode(0)->numberChannels()+mode(1)->numberChannels()+ mode(2)->numberChannels()+mode(3)->numberChannels()); _maxwgt.resize(4); unsigned int iy=0; for(unsigned int ix=0;ix<4;++ix) { _maxwgt[ix]=mode(ix)->maxWeight(); for(unsigned int iz=0;iz<mode(ix)->numberChannels();++iz) { _weights[iy]=mode(ix)->channelWeight(iz); ++iy; } } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/DtoKPiPiMarkIII.h���������������������������������������������0000644�0001750�0001750�00000023733�11754474774�023205� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DtoKPiPiMarkIII.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DtoKPiPiMarkIII_H #define HERWIG_DtoKPiPiMarkIII_H // // This is the declaration of the DtoKPiPiMarkIII class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the DtoKPiPiMarkIII class. * * @see \ref DtoKPiPiMarkIIIInterfaces "The interfaces" * defined for DtoKPiPiMarkIII. */ class DtoKPiPiMarkIII: public DecayIntegrator { public: /** * The default constructor. */ DtoKPiPiMarkIII(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2( const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); protected: /** * Calculate the amplitude for a resonance * @param rho True for rho resonances and false for \f$K^*\f$ * @param mD The mass of the decaying particle * @param mA The mass of the first decay product * @param mB The mass of the second decay product * @param mC The mass of the third decay product * @param mAB The mass of the pair AB * @param mAC The mass of the pair AC * @param mBC The mass of the pair BC * @param mres The on-shell mass of the intermediate resonance * @param wres The width of the intermediate resonance */ Complex amplitude(bool rho, Energy mD, Energy mA , Energy mB , Energy mC , Energy mAB, Energy mAC, Energy mBC, Energy mres, Energy wres) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<DtoKPiPiMarkIII> initDtoKPiPiMarkIII; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DtoKPiPiMarkIII & operator=(const DtoKPiPiMarkIII &); private: /** * Amplitudes and phases for \f$D^0\to K^-\pi^+\pi^0\f$ */ //@{ /** * Magnitude of the \f$\rho\f$ component */ double _a1rho; /** * Phase of the \f$\rho\f$ component */ double _phi1rho; /** * Magnitude of the \f$K^{*-}\f$ component */ double _a1Kstarm; /** * Phase of the \f$K^{*-}\f$ component */ double _phi1Kstarm; /** * Magnitude of the \f$\bar{K}^{*0}\f$ component */ double _a1Kstar0; /** * Phase of the \f$\bar{K}^{*0}\f$ component */ double _phi1Kstar0; /** * Magnitude of the non-resonant component */ double _a1NR; /** * Phase of the non-resonant component */ double _phi1NR; /** * Magnitude of the \f$\rho\f$ component */ Complex _c1rho; /** * Magnitude of the \f$K^{*-}\f$ component */ Complex _c1Kstarm; /** * Magnitude of the \f$\bar{K}^{*0}\f$ component */ Complex _c1Kstar0; /** * Magnitude of the non-resonant component */ Complex _c1NR; //@} /** * Amplitudes and phases for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ //@{ /** * Magnitude of the \f$\rho^0\f$ component */ double _a2rho; /** * Phase of the \f$\rho^0\f$ component */ double _phi2rho; /** * Magnitude of the \f$K^{*-}\f$ component */ double _a2Kstar; /** * Phase of the \f$K^{*-}\f$ component */ double _phi2Kstar; /** * Magnitude of the non-resonant component */ double _a2NR; /** * Phase of the non-resonant component */ double _phi2NR; /** * Amplitude of the \f$\rho^0\f$ component */ Complex _c2rho; /** * Amplitude of the \f$K^{*-}\f$ component */ Complex _c2Kstar; /** * Amplitude of the non-resonant component */ Complex _c2NR; //@} /** * Amplitudes and phases for \f$D^+\to \bar{K}^0\pi^+\pi^0\f$ */ //@{ /** * Magnitude of the \f$\rho\f$ component */ double _a3rho; /** * Phase of the \f$\rho\f$ component */ double _phi3rho; /** * Magnitude of the \f$\bar{K}^{*0}\f$ component */ double _a3Kstar; /** * Phase of the \f$\bar{K}^{*0}\f$ component */ double _phi3Kstar; /** * Magnitude of the non-resonant component */ double _a3NR; /** * Phase of the non-resonant component */ double _phi3NR; /** * Amplitude of the \f$\rho\f$ component */ Complex _c3rho; /** * Amplitude of the \f$\bar{K}^{*0}\f$ component */ Complex _c3Kstar; /** * Amplitude of the non-resonant component */ Complex _c3NR; //@} /** * Amplitudes and phases for \f$D^+\to K^-\pi^+\pi^+\f$ */ //@{ /** * Magnitude of the \f$\bar{K}^{*0}\f$ component */ double _a4Kstar; /** * Phase of the \f$\bar{K}^{*0}\f$ component */ double _phi4Kstar; /** * Magnitude of the non-resonant component */ double _a4NR; /** * Phase of the non-resonant component */ double _phi4NR; /** * Amplitude of the \f$\bar{K}^{*0}\f$ component */ Complex _c4Kstar; /** * Amplitude of the non-resonant component */ Complex _c4NR; //@} /** * Masses and Widths of the resonances */ //@{ /** * Use local values of the masses and widths */ bool _localparameters; /** * Mass of the \f$\rho^+\f$ */ Energy _mrhop; /** * Width of the \f$\rho^+\f$ */ Energy _wrhop; /** * Mass of the \f$\rho^0\f$ */ Energy _mrho0; /** * Width of the \f$\rho^0\f$ */ Energy _wrho0; /** * Mass of the \f$K^{*-}\f$ */ Energy _mKstarm; /** * Width of the \f$K^{*-}\f$ */ Energy _wKstarm; /** * Mass of the \f$\bar{K}^{*0}\f$ */ Energy _mKstar0; /** * Width of the \f$\bar{K}^{*0}\f$ */ Energy _wKstar0; //@} /** * The radii of the mesons for the form-factors */ //@{ /** * \f$\rho\f$ radius */ InvEnergy _rrho; /** * \f$K^*\f$ radius */ InvEnergy _rKstar; //@} /** * Parameters for the phase-space integration */ //@{ /** * Maximum weights for the different modes */ vector<double> _maxwgt; /** * Weights for the different phase-space channels */ vector<double> _weights; //@} /** * Spin density matrix */ mutable RhoDMatrix _rho; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DtoKPiPiMarkIII. */ template <> struct BaseClassTrait<Herwig::DtoKPiPiMarkIII,1> { /** Typedef of the first base class of DtoKPiPiMarkIII. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the DtoKPiPiMarkIII class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DtoKPiPiMarkIII> : public ClassTraitsBase<Herwig::DtoKPiPiMarkIII> { /** Return a platform-independent class name */ static string className() { return "Herwig::DtoKPiPiMarkIII"; } /** * The name of a file containing the dynamic library where the class * DtoKPiPiMarkIII is implemented. It may also include several, space-separated, * libraries if the class DtoKPiPiMarkIII depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_DtoKPiPiMarkIII_H */ �������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/PScalarVectorFermionsDecayer.cc�������������������������������0000644�0001750�0001750�00000042574�11754474774�026266� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PScalarVectorFermionsDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PScalarVectorFermionsDecayer class. // #include "PScalarVectorFermionsDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/epsilon.h" #include "Herwig++/PDT/ThreeBodyAllOn1IntegralCalculator.h" using namespace Herwig; using namespace ThePEG::Helicity; void PScalarVectorFermionsDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) _maxweight[ix]=mode(ix)->maxWeight(); } } PScalarVectorFermionsDecayer::PScalarVectorFermionsDecayer() : _coupling(5), _incoming(5), _outgoingV(5), _outgoingf(5), _outgoinga(5),_maxweight(5), _includeVMD(5), _VMDid(5), _VMDmass(5), _VMDwidth(5) { // pi0 -> gamma e+e- _incoming[0] = 111;_outgoingV[0] = 22; _outgoingf[0] = 11;_outgoinga[0] = -11; _coupling[0] = 0.00761872/GeV;_maxweight[0] = 0.027; _includeVMD[0] = 2;_VMDid[0] = 113; _VMDmass[0] = 0.7758*GeV;_VMDwidth[0] = 0.1503*GeV; // eta -> gamma e+e-/mu+/mu- _incoming[1] = 221;_outgoingV[1] = 22; _outgoingf[1] = 11;_outgoinga[1] = -11; _coupling[1] = 0.007554164/GeV;_maxweight[1] = 2.8; _includeVMD[1] = 2;_VMDid[1] = 113; _VMDmass[1] = 0.7758*GeV;_VMDwidth[1] = 0.1503*GeV; _incoming[2] = 221;_outgoingV[2] = 22; _outgoingf[2] = 13;_outgoinga[2] = -13; _coupling[2] = 0.007554164/GeV;_maxweight[2] = 2.1; _includeVMD[2] = 2;_VMDid[2] = 113; _VMDmass[2] = 0.7758*GeV;_VMDwidth[2] = 0.1503*GeV; // eta' -> gamma e+e-/mu+mu- _incoming[3] = 331;_outgoingV[3] = 22; _outgoingf[3] = 11;_outgoinga[3] = -11; _coupling[3] = 0.0104/GeV;_maxweight[3] = 5.2; _includeVMD[3] = 2;_VMDid[3] = 113; _VMDmass[3] = 0.7758*GeV;_VMDwidth[3] = 0.1503*GeV; _incoming[4] = 331;_outgoingV[4] = 22; _outgoingf[4] = 13;_outgoinga[4] = -13; _coupling[4] = 0.0104/GeV;_maxweight[4] = 3.0; _includeVMD[4] = 2;_VMDid[4] = 113; _VMDmass[4] = 0.7758*GeV;_VMDwidth[4] = 0.1503*GeV; // initial size of the arrays _initsize = _incoming.size(); // intermediates generateIntermediates(false); } void PScalarVectorFermionsDecayer::doinit() { DecayIntegrator::doinit(); // check the parameters are consistent unsigned int isize=_coupling.size(); if(isize!=_incoming.size() || isize!=_outgoingV.size()|| isize!=_outgoingf.size()|| isize!=_outgoinga.size() || isize!=_maxweight.size()|| isize!=_includeVMD.size()|| isize!=_VMDid.size() || isize!=_VMDmass.size() || isize!=_VMDwidth.size()) throw InitException() << "Inconsistent parameters in PScalarVectorFermionsDecayer" << Exception::abortnow; // create the integration channel for each mode tPDVector extpart(4); tPDPtr gamma(getParticleData(ParticleID::gamma)); DecayPhaseSpaceChannelPtr newchannel; DecayPhaseSpaceModePtr mode; vector<double> wgt(1,1.); for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0] = getParticleData(_incoming[ix]); extpart[1] = getParticleData(_outgoingV[ix]); extpart[2] = getParticleData(_outgoingf[ix]); extpart[3] = getParticleData(_outgoinga[ix]); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(gamma ,1,-1.1, 2,3); mode->addChannel(newchannel); addMode(mode,_maxweight[ix],wgt); } // set up the values for the VMD factor if needed (copy the default mass and width // into the array) for(unsigned ix=0;ix<isize;++ix) { if(_includeVMD[ix]==1) { _VMDmass[ix]=getParticleData(_VMDid[ix])->mass(); _VMDwidth[ix]=getParticleData(_VMDid[ix])->width(); } } } int PScalarVectorFermionsDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); // must be three outgoing particles if(children.size()!=3) return imode; // ids of the particles int id0(parent->id()),idf[2],idv(0); unsigned int nf(0); tPDVector::const_iterator pit = children.begin(); for( ;pit!=children.end();++pit) { if((**pit).iSpin()==PDT::Spin1) { idv=(**pit).id(); } else { idf[nf]=(**pit).id(); ++nf; } } // loop over the modes and see if this is one of them unsigned int ix=0; do { if(_incoming[ix]==id0&&_outgoingV[ix]==idv) {if((idf[0]==_outgoingf[ix]&&idf[1]==_outgoinga[ix])|| (idf[1]==_outgoingf[ix]&&idf[0]==_outgoinga[ix])){imode=ix;}} ++ix; } while(imode<0&&ix<_incoming.size()); cc=false; return imode; } void PScalarVectorFermionsDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_coupling,1/MeV) << _incoming << _outgoingV << _outgoingf << _outgoinga << _maxweight << _includeVMD << _VMDid << ounit(_VMDmass,MeV) << ounit(_VMDwidth,MeV); } void PScalarVectorFermionsDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_coupling,1/MeV) >> _incoming >> _outgoingV >> _outgoingf >> _outgoinga >> _maxweight >> _includeVMD >> _VMDid >> iunit(_VMDmass,MeV) >> iunit(_VMDwidth,MeV); } ClassDescription<PScalarVectorFermionsDecayer> PScalarVectorFermionsDecayer::initPScalarVectorFermionsDecayer; // Definition of the static class description member. void PScalarVectorFermionsDecayer::Init() { static ClassDocumentation<PScalarVectorFermionsDecayer> documentation ("The PScalarVectorFermionsDecayer class is designed" " for the decay of a pseudoscalar meson to a photon and a" "fermion-antifermion pair"); static ParVector<PScalarVectorFermionsDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &PScalarVectorFermionsDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PScalarVectorFermionsDecayer,int> interfaceOutcomingV ("OutgoingVector", "The PDG code for the outgoing pseudoscalar", &PScalarVectorFermionsDecayer::_outgoingV, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PScalarVectorFermionsDecayer,int> interfaceOutcomingF ("OutgoingFermion", "The PDG code for the outgoing fermion", &PScalarVectorFermionsDecayer::_outgoingf, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PScalarVectorFermionsDecayer,int> interfaceOutcomingA ("OutgoingAntiFermion", "The PDG code for the outgoing antifermion", &PScalarVectorFermionsDecayer::_outgoinga, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PScalarVectorFermionsDecayer,InvEnergy> interfaceCoupling ("Coupling", "The coupling for the decay mode", &PScalarVectorFermionsDecayer::_coupling, 1/MeV, 0, ZERO, -10000000/MeV, 10000000/MeV, false, false, true); static ParVector<PScalarVectorFermionsDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &PScalarVectorFermionsDecayer::_maxweight, 0, 0, 0, 0.0, 100., false, false, true); static ParVector<PScalarVectorFermionsDecayer,int> interfaceIncludeVMD ("IncludeVMD", "There are three options for 0 the VMD factor is not included, for 1 the factor " "is included using the default mass and width of the particle specified by" " VMDID, and for 2 the factor is included using the mass and width specified" " by VMDwidth and VMDmass.", &PScalarVectorFermionsDecayer::_includeVMD, 0, 0, 0, -10000, 10000, false, false, true); static ParVector<PScalarVectorFermionsDecayer,int> interfaceVMDID ("VMDID", "The PDG code for the particle to be used for the VMD factor.", &PScalarVectorFermionsDecayer::_VMDid, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PScalarVectorFermionsDecayer,Energy> interfaceVMDmass ("VMDmass", "The mass to use for the particle in the VMD factor", &PScalarVectorFermionsDecayer::_VMDmass, MeV, 0, ZERO, ZERO, 10000.*MeV, false, false, true); static ParVector<PScalarVectorFermionsDecayer,Energy> interfaceVMDwidth ("VMDwidth", "The width to use for the particle in the VMD factor", &PScalarVectorFermionsDecayer::_VMDwidth, MeV, 0, ZERO, ZERO, 10000.*MeV, false, false, true); } double PScalarVectorFermionsDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // initialization if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin1,PDT::Spin1Half, PDT::Spin1Half)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); // set up the spin information for the decay products VectorWaveFunction:: constructSpinInfo(_vectors,decay[0],outgoing,true,true); SpinorBarWaveFunction:: constructSpinInfo(_wavebar,decay[1],outgoing,true); SpinorWaveFunction:: constructSpinInfo(_wave ,decay[2],outgoing,true); return 0.; } // calculate the spinors and polarization vectors VectorWaveFunction:: calculateWaveFunctions(_vectors,decay[0],outgoing,true); SpinorBarWaveFunction:: calculateWaveFunctions(_wavebar,decay[1],outgoing); SpinorWaveFunction:: calculateWaveFunctions(_wave ,decay[2],outgoing); // now compute the matrix element Complex ii(0.,1.); Lorentz5Momentum pff(decay[1]->momentum()+decay[2]->momentum()); pff.rescaleMass(); Energy2 mff2(pff.mass()*pff.mass()); // compute the prefactor complex<InvEnergy3> pre(_coupling[imode()]/mff2); // the VMD factor if(_includeVMD[imode()]>0) { Energy2 mrho2=_VMDmass[imode()]*_VMDmass[imode()]; Energy2 mwrho=_VMDmass[imode()]*_VMDwidth[imode()]; pre = pre*(-mrho2+ii*mwrho)/(mff2-mrho2+ii*mwrho); } LorentzVector<complex<Energy3> > eps; LorentzVector<complex<Energy> > fcurrent; // compute the matrix element vector<unsigned int> ispin(4);ispin[0]=0; for(ispin[3]=0;ispin[3]<2;++ispin[3]) { for(ispin[2]=0;ispin[2]<2;++ispin[2]) { fcurrent = _wave[ispin[3]].vectorCurrent(_wavebar[ispin[2]]); // compute the current for this part eps = epsilon(decay[0]->momentum(),pff,fcurrent); for(ispin[1]=0;ispin[1]<3;++ispin[1]) { ME()(ispin)=pre *_vectors[ispin[1]].dot(eps); } } } double me = ME().contract(_rho).real(); // //code to test the matrix element against the analytic result // Energy m[4]={inpart.mass(),decay[0]->mass(),decay[1]->mass(),decay[2]->mass()}; // Energy2 m2[4]={m[0]*m[0],m[1]*m[1],m[2]*m[2],m[3]*m[3]}; // Lorentz5Momentum p12=decay[0]->momentum()+decay[1]->momentum();p12.rescaleMass(); // Energy2 m122(p12.mass2()); // Complex output( ((pre*conj(pre)).real()*( // -2*m122*m122*mff2 - mff2*mff2*mff2 + // m2[1]*(2*m2[2]*m2[3] - 2*m2[3]*m2[3] + // m2[1]*(m2[2] - 2*m[2]*m[3] - m2[3])) - // 2*m[2]*(m[2]*m2[2] - 2*m2[1]*m[3] - m[2]*m2[3])* // m2[0] - (m2[2] + 2*m[2]*m[3] - m2[3])* // m2[0]*m2[0] +mff2*mff2* // (2*m2[1] + (m[2] - m[3])*(m[2] - m[3]) + 2*m2[0]) - // mff2*(m2[1]*m2[1] + 2*m2[1]*m[2]*(m[2] - 2*m[3]) + // 2*m2[2]*m2[3] - 2*(2*m[2] - m[3])*m[3]*m2[0] + // m2[0]*m2[0]) + 2*m122* // (-mff2*mff2 - (m2[2] - m2[3])* // (m2[1] - m2[0]) + // mff2*(m2[1] + m2[2] + m2[3] + // m2[0]))))); // cout << "testing the matrix element " // << real(output) << " " << me << " " << test2 << endl; return me; } // method to return an object to calculate the 3 or higher body partial width WidthCalculatorBasePtr PScalarVectorFermionsDecayer::threeBodyMEIntegrator(const DecayMode & dm) const { // workout which mode we are doing int imode(-1); // ids of the particles int id0(dm.parent()->id()),idf[2],idv(0); unsigned int nf(0); ParticleMSet::const_iterator pit = dm.products().begin(); for( ;pit!=dm.products().end();++pit) { if((**pit).iSpin()==PDT::Spin1){idv=(**pit).id();} else{idf[nf]=(**pit).id();++nf;} } // loop over the modes and see if this is one of them unsigned int ix=0; do { if(_incoming[ix]==id0&&_outgoingV[ix]==idv) { if((idf[0]==_outgoingf[ix]&&idf[1]==_outgoinga[ix])|| (idf[1]==_outgoingf[ix]&&idf[0]==_outgoinga[ix])) imode=ix; } ++ix; } while(imode<0&&ix<_incoming.size()); // get the masses we need Energy m[3]={getParticleData(_outgoingV[imode])->mass(), getParticleData(_outgoingf[imode])->mass(), getParticleData(_outgoinga[imode])->mass()}; return new_ptr(ThreeBodyAllOn1IntegralCalculator<PScalarVectorFermionsDecayer> (3,-1000.*MeV,-0.9*MeV,-0.9,*this,imode,m[0],m[1],m[2])); } InvEnergy PScalarVectorFermionsDecayer::threeBodydGammads(const int imodeb, const Energy2 q2, const Energy2 mff2, const Energy m1, const Energy m2, const Energy m3) const { // the masses of the external particles Energy q=sqrt(q2); Energy2 m12=m1*m1; Energy2 m22=m2*m2; Energy2 m32=m3*m3; // calculate the prefactor Complex ii(0.,1.); complex<InvEnergy3> pre = _coupling[imodeb] / mff2; // the VMD factor if(_includeVMD[imodeb]>0) { Energy2 mrho2=_VMDmass[imodeb]*_VMDmass[imodeb]; Energy2 mwrho=_VMDmass[imodeb]*_VMDwidth[imodeb]; pre = pre*(-mrho2+ii*mwrho)/(mff2-mrho2+ii*mwrho); } InvEnergy6 factor=real(pre*conj(pre)); // compute the pieces from the integration limits Energy mff=sqrt(mff2); Energy e2star = 0.5*(mff2-m32+m22)/mff; Energy e1star = 0.5*(q2-mff2-m12)/mff; Energy e1sm = sqrt(e1star*e1star-m12); Energy e2sm = sqrt(e2star*e2star-m22); Energy2 a = 2*e1star*e2star+m12+m22; Energy2 b = 2*e1sm*e2sm; // term independent of s3 Energy8 me = 2*b*(2*(m12*(mff2*mff2 + 4*mff2*m2*m3 -(m22 - m32)*(m22 - m32)) + 2*m2*(m12 +m22)*m3*(-mff2 +m22 + q2)) +(m12 +m22)*(m12 +m22)*(-mff2 +m22 - 2*m2*m3 - m32) -(mff2 +m22 + 2*m2*m3 - m32)*(-mff2 +m22 + q2)*(-mff2 +m22 + q2)); // linear term me+= 2.*a*b*(2*(-mff2*mff2 - (m22 - m32)*(m12 - q2) + mff2*(m12 + m22 + m32 + q2))); // quadratic term me+=-4.*mff2*b*(3.*a*a+b*b)/3.; // phase space factors using Constants::pi; return -factor * me/256./pi/pi/pi/q2/q; } // output the setup information for the particle database void PScalarVectorFermionsDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":OutgoingVector " << ix << " " << _outgoingV[ix] << "\n"; output << "newdef " << name() << ":OutgoingFermion " << ix << " " << _outgoingf[ix] << "\n"; output << "newdef " << name() << ":OutgoingAntiFermion " << ix << " " << _outgoinga[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]*MeV << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; output << "newdef " << name() << ":IncludeVMD " << ix << " " << _includeVMD[ix] << "\n"; output << "newdef " << name() << ":VMDID " << ix << " " << _VMDid[ix] << "\n"; output << "newdef " << name() << ":VMDmass " << ix << " " << _VMDmass[ix]/MeV << "\n"; output << "newdef " << name() << ":VMDwidth " << ix << " " << _VMDwidth[ix]/MeV << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":OutgoingVector " << ix << " " << _outgoingV[ix] << "\n"; output << "insert " << name() << ":OutgoingFermion " << ix << " " << _outgoingf[ix] << "\n"; output << "insert " << name() << ":OutgoingAntiFermion " << ix << " " << _outgoinga[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]*MeV << "\n"; output << "insert " << name() << ":IncludeVMD " << ix << " " << _includeVMD[ix] << "\n"; output << "insert " << name() << ":VMDID " << ix << " " << _VMDid[ix] << "\n"; output << "insert " << name() << ":VMDmass " << ix << " " << _VMDmass[ix]/MeV << "\n"; output << "insert " << name() << ":VMDwidth " << ix << " " << _VMDwidth[ix]/MeV << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/DtoKPiPiCLEO.cc�����������������������������������������������0000644�0001750�0001750�00000142155�11754474774�022640� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DtoKPiPiCLEO.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DtoKPiPiCLEO class. // #include "DtoKPiPiCLEO.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" using namespace Herwig; using ThePEG::Helicity::ScalarWaveFunction; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; DtoKPiPiCLEO::DtoKPiPiCLEO() : _c1NR(), _c1rho(), _c1Kstarm(), _c1Kstar0(), _c1K1430m(), _c1K14300(), _c1rho1700(), _c1K1680(), _c2Kstarp(), _c2rho(), _c2omega(), _c2Kstarm(), _c2f980(), _c2f2(), _c2f1370(), _c2K14300(), _c2K14302(), _c2K1680(), _c2NR(), _rD0(), _rres() { // use local values for masses and widths _localparameters=true; // masses and widths _momega = 782.57*MeV; _womega = 8.44*MeV; _mf2 = 1275.4 *MeV; _wf2 = 185.1 *MeV; _mf1370 = 1310 *MeV; _wf1370 = 272.0 *MeV; _mK14300 = 1412 *MeV; _wK14300 = 294 *MeV; _mK14302 = 1425.6 *MeV; _wK14302 = 98.5 *MeV; _mK1680 = 1717 *MeV; _wK1680 = 322 *MeV; _mrho1700 = 1700 *MeV; _wrho1700 = 240 *MeV; _mK8920 = 896.1 *MeV; _wK8920 = 50.5 *MeV; _mK892A = 891.5 *MeV; _wK892A = 50 *MeV; _mK892B = 891.66*MeV; _wK892B = 50.8 *MeV; _mrhoA = 770 *MeV; _wrhoA = 150.7 *MeV; _mrhoB = 769.3 *MeV; _wrhoB = 150.2 *MeV; _mf980 = 977.00*MeV; _wf980 = 50. *MeV; _f0opt=false; _gpi=0.09; _gK=0.02; // amplitudes and phases for D0 -> K-pi+pi0 _a1NR = 1.75 ; _phi1NR = 31.2; _a1rho = 1.00 ; _phi1rho = 0. ; _a1Kstarm = 0.44 ; _phi1Kstarm = 163 ; _a1Kstar0 = 0.39 ; _phi1Kstar0 = -0.2; _a1K1430m = 0.77*GeV2; _phi1K1430m = 55.5; _a1K14300 = 0.85*GeV2; _phi1K14300 = 166 ; _a1rho1700 = 2.50 ; _phi1rho1700 = 171 ; _a1K1680 = 2.50 ; _phi1K1680 = 103 ; // amplitudes and phases for D0 -> K0pi+pi- _a2Kstarp = 0.11 ; _phi2Kstarp = 321; _a2rho = 1.00 ; _phi2rho = 0; _a2omega = 0.037 ; _phi2omega = 114; _a2Kstarm = 1.56 ; _phi2Kstarm = 150; _a2f980 = 0.34*GeV2; _phi2f980 = 188; _a2f2 = 0.7/GeV2 ; _phi2f2 = 308; _a2f1370 = 1.8*GeV2 ; _phi2f1370 = 85; _a2K14300 = 2.0*GeV2 ; _phi2K14300 = 3; _a2K14302 = 1.0/GeV2 ; _phi2K14302 = 335; _a2K1680 = 5.6 ; _phi2K1680 = 174; _a2NR = 1.1 ; _phi2NR = 340; // radial sizes _rD0 = 5.0/GeV; _rres = 1.5/GeV; // zero masses _mpi=ZERO; _mkp=ZERO; _mk0=ZERO; // intermediates generateIntermediates(true); } void DtoKPiPiCLEO::doinit() { DecayIntegrator::doinit(); // complex amplitudes for K-pi+pi0 double fact = Constants::pi/180.; _c1NR = _a1NR *Complex(cos(_phi1NR *fact),sin(_phi1NR *fact)); _c1rho = _a1rho *Complex(cos(_phi1rho *fact),sin(_phi1rho *fact)); _c1Kstarm = _a1Kstarm *Complex(cos(_phi1Kstarm *fact),sin(_phi1Kstarm *fact)); _c1Kstar0 = _a1Kstar0 *Complex(cos(_phi1Kstar0 *fact),sin(_phi1Kstar0 *fact)); _c1K1430m = _a1K1430m *Complex(cos(_phi1K1430m *fact),sin(_phi1K1430m *fact)); _c1K14300 = _a1K14300 *Complex(cos(_phi1K14300 *fact),sin(_phi1K14300 *fact)); _c1rho1700 = _a1rho1700*Complex(cos(_phi1rho1700*fact),sin(_phi1rho1700*fact)); _c1K1680 = _a1K1680 *Complex(cos(_phi1K1680 *fact),sin(_phi1K1680 *fact)); // complex amplitudes for D0 -> K0pi+pi- _c2Kstarp = _a2Kstarp*Complex(cos(_phi2Kstarp*fact),sin(_phi2Kstarp*fact)); _c2rho = _a2rho *Complex(cos(_phi2rho *fact),sin(_phi2rho *fact)); _c2omega = _a2omega *Complex(cos(_phi2omega *fact),sin(_phi2omega *fact)); _c2Kstarm = _a2Kstarm*Complex(cos(_phi2Kstarm*fact),sin(_phi2Kstarm*fact)); _c2f980 = _a2f980 *Complex(cos(_phi2f980 *fact),sin(_phi2f980 *fact)); _c2f2 = _a2f2 *Complex(cos(_phi2f2 *fact),sin(_phi2f2 *fact)); _c2f1370 = _a2f1370 *Complex(cos(_phi2f1370 *fact),sin(_phi2f1370 *fact)); _c2K14300 = _a2K14300*Complex(cos(_phi2K14300*fact),sin(_phi2K14300*fact)); _c2K14302 = _a2K14302*Complex(cos(_phi2K14302*fact),sin(_phi2K14302*fact)); _c2K1680 = _a2K1680 *Complex(cos(_phi2K1680 *fact),sin(_phi2K1680 *fact)); _c2NR = _a2NR *Complex(cos(_phi2NR *fact),sin(_phi2NR *fact)); // pion and kaon masses _mpi = getParticleData(ParticleID::piplus)->mass(); _mkp = getParticleData(ParticleID::Kplus )->mass(); _mk0 = getParticleData(ParticleID::K0 )->mass(); // resonances for the channels tPDPtr k892m = getParticleData(ParticleID::Kstarminus); tPDPtr k892p = getParticleData(ParticleID::Kstarplus); tPDPtr k8920 = getParticleData(ParticleID::Kstarbar0); tPDPtr rho770 = getParticleData(ParticleID::rhoplus); tPDPtr rho0 = getParticleData(ParticleID::rho0); tPDPtr rho1700 = getParticleData(30213); tPDPtr k1680m = getParticleData(-30323); tPDPtr k1430m0 = getParticleData(ParticleID::Kstar_0minus); tPDPtr k1430m2 = getParticleData(ParticleID::Kstar_2minus); tPDPtr k143000 = getParticleData(ParticleID::Kstar_0bar0 ); tPDPtr omega = getParticleData(ParticleID::omega); tPDPtr f980 = getParticleData(9010221); tPDPtr f1370 = getParticleData(10221); tPDPtr f2 = getParticleData(ParticleID::f_2); DecayPhaseSpaceChannelPtr newchannel; // D0 -> K- pi+ pi0 tPDVector extpart(4); extpart[0]=getParticleData(ParticleID::D0); extpart[1]=getParticleData(ParticleID::Kminus); extpart[2]=getParticleData(ParticleID::piplus); extpart[3]=getParticleData(ParticleID::pi0); DecayPhaseSpaceModePtr mode1 = new_ptr(DecayPhaseSpaceMode(extpart,this)); int ix=0; if(rho770) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode1)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(rho770,0,0., 2,3); mode1->addChannel(newchannel); ++ix; } if(k892m) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode1)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k892m,0,0., 1,3); mode1->addChannel(newchannel); ++ix; } if(k8920) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode1)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,3); newchannel->addIntermediate(k8920,0,0., 1,2); mode1->addChannel(newchannel); ++ix; } if(k1430m0) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode1)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k1430m0,0,0., 1,3); mode1->addChannel(newchannel); ++ix; } if(k143000) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode1)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,3); newchannel->addIntermediate(k143000,0,0., 1,2); mode1->addChannel(newchannel); ++ix; } if(rho1700) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode1)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(rho1700,0,0., 2,3); mode1->addChannel(newchannel); ++ix; } if(k1680m) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode1)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k1680m,0,0., 1,3); mode1->addChannel(newchannel); ++ix; } // add the mode vector<double> wtemp; if(ix<=int(_weights.size())) { vector<double>::const_iterator wit=_weights.begin(); wtemp=vector<double>(wit,wit+ix); } else { wtemp=vector<double>(ix,1./double(ix)); } if(_maxwgt.empty()) _maxwgt.push_back(1.); addMode(mode1,_maxwgt[0],wtemp); // D0 -> Kbar0 pi+ pi- extpart[0]=getParticleData(ParticleID::D0); extpart[1]=getParticleData(ParticleID::Kbar0); extpart[2]=getParticleData(ParticleID::piplus); extpart[3]=getParticleData(ParticleID::piminus); DecayPhaseSpaceModePtr mode2 = new_ptr(DecayPhaseSpaceMode(extpart,this)); int iy=ix; if(k892p) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode2)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,3); newchannel->addIntermediate(k892p,0,0., 1,2); mode2->addChannel(newchannel); ++iy; } if(rho0) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode2)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(rho0,0,0., 2,3); mode2->addChannel(newchannel); ++iy; } if(omega) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode2)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(omega,0,0., 2,3); mode2->addChannel(newchannel); ++iy; } if(k892m) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode2)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k892m,0,0., 1,3); mode2->addChannel(newchannel); ++iy; } if(f980) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode2)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(f980,0,0., 2,3); mode2->addChannel(newchannel); ++iy; } if(f2) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode2)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(f2,0,0., 2,3); mode2->addChannel(newchannel); ++iy; } if(f1370) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode2)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(f1370,0,0., 2,3); mode2->addChannel(newchannel); ++iy; } if(k1430m0) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode2)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k1430m0,0,0., 1,3); mode2->addChannel(newchannel); ++iy; } if(k1430m2) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode2)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k1430m2,0,0., 1,3); mode2->addChannel(newchannel); ++iy; } if(k1680m) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode2)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k1680m,0,0., 1,3); mode2->addChannel(newchannel); ++iy; } // add the mode if(iy<=int(_weights.size())) { vector<double>::const_iterator wit=_weights.begin(); wtemp=vector<double>(wit+ix,wit+iy); } else { wtemp=vector<double>(iy-ix,1./double(iy-ix)); } if(_maxwgt.size()<2) _maxwgt.push_back(1.); addMode(mode2,_maxwgt[1],wtemp); if(!_localparameters) { _momega = omega ->mass(); _mf980 = f980 ->mass(); _mf2 = f2 ->mass(); _mf1370 = f1370 ->mass(); _mK14300 = k1430m0->mass(); _mK14302 = k1430m2->mass(); _mK1680 = k1680m ->mass(); _mrho1700 = rho1700->mass(); _mK8920 = k8920 ->mass(); _mK892A = k892p ->mass(); _mK892B = k892p ->mass(); _mrhoA = rho770 ->mass(); _mrhoB = rho0 ->mass(); _womega = omega ->width(); _wf980 = f980 ->width(); _wf2 = f2 ->width(); _wf1370 = f1370 ->width(); _wK14300 = k1430m0->width(); _wK14302 = k1430m2->width(); _wK1680 = k1680m ->width(); _wrho1700 = rho1700->width(); _wK8920 = k8920 ->width(); _wK892A = k892p ->width(); _wK892B = k892p ->width(); _wrhoA = rho770 ->width(); _wrhoB = rho0 ->width(); } else { mode1->resetIntermediate(rho770 ,_mrhoA ,_wrhoA ); mode1->resetIntermediate(k892m ,_mK892A ,_wK892A ); mode1->resetIntermediate(k8920 ,_mK8920 ,_wK8920 ); mode1->resetIntermediate(k1430m0,_mK14300 ,_wK14300 ); mode1->resetIntermediate(k143000,_mK14300 ,_wK14300 ); mode1->resetIntermediate(rho1700,_mrho1700,_wrho1700); mode1->resetIntermediate(k1680m ,_mK1680 ,_wK1680 ); mode2->resetIntermediate(k892p ,_mK892B ,_wK892B ); mode2->resetIntermediate(rho0 ,_mrhoB ,_wrhoB ); mode2->resetIntermediate(omega ,_momega ,_womega ); mode2->resetIntermediate(k892m ,_mK892B ,_wK892B ); mode2->resetIntermediate(f980 ,_mf980 ,_wf980 ); mode2->resetIntermediate(f2 ,_mf2 ,_wf2 ); mode2->resetIntermediate(f1370 ,_mf1370 ,_wf1370 ); mode2->resetIntermediate(k1430m0,_mK14300 ,_wK14300 ); mode2->resetIntermediate(k1430m2,_mK14302 ,_wK14302 ); mode2->resetIntermediate(k1680m ,_mK1680 ,_wK1680 ); } } void DtoKPiPiCLEO::persistentOutput(PersistentOStream & os) const { os << ounit(_momega,GeV) << ounit(_womega,GeV) << ounit(_mf980,GeV) << _gpi << _gK << ounit(_mf2,GeV) << ounit(_wf2,GeV) << ounit(_mf1370,GeV) << ounit(_wf1370,GeV) << ounit(_mK14300,GeV) << ounit(_wK14300,GeV) << ounit(_mK14302,GeV) << ounit(_wK14302,GeV) << ounit(_mK1680,GeV) << ounit(_wK1680,GeV) << ounit(_mrho1700,GeV) << ounit(_wrho1700,GeV) << ounit(_mK8920,GeV) << ounit(_wK8920,GeV) << ounit(_mK892A,GeV) << ounit(_wK892A,GeV) << ounit(_mK892B,GeV) << ounit(_wK892B,GeV) << ounit(_mrhoA,GeV) << ounit(_wrhoA,GeV) << ounit(_mrhoB,GeV) << ounit(_wrhoB,GeV) << _a1NR << _phi1NR << _a1rho << _phi1rho << _a1Kstarm << _phi1Kstarm << _a1Kstar0 << _phi1Kstar0 << ounit(_a1K1430m,GeV2) << _phi1K1430m << ounit(_a1K14300,GeV2) << _phi1K14300 << _a1rho1700 << _phi1rho1700 << _a1K1680 << _phi1K1680 << _c1NR << _c1rho << _c1Kstarm << _c1Kstar0 << ounit(_c1K1430m,GeV2) << ounit(_c1K14300,GeV2) << _c1rho1700 << _c1K1680 << _a2Kstarp << _phi2Kstarp << _a2rho << _phi2rho << _a2omega << _phi2omega << _a2Kstarm << _phi2Kstarm << ounit(_a2f980,GeV2) << _phi2f980 << ounit(_a2f2,1./GeV2) << _phi2f2 << ounit(_a2f1370,GeV2) << _phi2f1370 << ounit(_a2K14300,GeV2) << _phi2K14300 << ounit(_a2K14302,1./GeV2) << _phi2K14302 << _a2K1680 << _phi2K1680 << _a2NR << _phi2NR << _c2Kstarp << _c2rho << _c2omega << _c2Kstarm << ounit(_c2f980,GeV2) << ounit(_c2f2,1./GeV2) << ounit(_c2f1370,GeV2) << ounit(_c2K14300,GeV2) << ounit(_c2K14302,1./GeV2) << _c2K1680 << _c2NR << _maxwgt << _weights << ounit(_rD0,1./GeV) << ounit(_rres,1./GeV) << ounit(_mpi,GeV) << ounit(_mkp,GeV) << ounit(_mk0,GeV) << ounit(_wf980,GeV) << _f0opt << _localparameters; } void DtoKPiPiCLEO::persistentInput(PersistentIStream & is, int) { is >> iunit(_momega,GeV) >> iunit(_womega,GeV) >> iunit(_mf980,GeV) >> _gpi >> _gK >> iunit(_mf2,GeV) >> iunit(_wf2,GeV) >> iunit(_mf1370,GeV) >> iunit(_wf1370,GeV) >> iunit(_mK14300,GeV) >> iunit(_wK14300,GeV) >> iunit(_mK14302,GeV) >> iunit(_wK14302,GeV) >> iunit(_mK1680,GeV) >> iunit(_wK1680,GeV) >> iunit(_mrho1700,GeV) >> iunit(_wrho1700,GeV) >> iunit(_mK8920,GeV) >> iunit(_wK8920,GeV) >> iunit(_mK892A,GeV) >> iunit(_wK892A,GeV) >> iunit(_mK892B,GeV) >> iunit(_wK892B,GeV) >> iunit(_mrhoA,GeV) >> iunit(_wrhoA,GeV) >> iunit(_mrhoB,GeV) >> iunit(_wrhoB,GeV) >> _a1NR >> _phi1NR >> _a1rho >> _phi1rho >> _a1Kstarm >> _phi1Kstarm >> _a1Kstar0 >> _phi1Kstar0 >> iunit(_a1K1430m,GeV2) >> _phi1K1430m >> iunit(_a1K14300,GeV2) >> _phi1K14300 >> _a1rho1700 >> _phi1rho1700 >> _a1K1680 >> _phi1K1680 >> _c1NR >> _c1rho >> _c1Kstarm >> _c1Kstar0 >> iunit(_c1K1430m,GeV2) >> iunit(_c1K14300,GeV2) >> _c1rho1700 >> _c1K1680 >> _a2Kstarp >> _phi2Kstarp >> _a2rho >> _phi2rho >> _a2omega >> _phi2omega >> _a2Kstarm >> _phi2Kstarm >> iunit(_a2f980,GeV2) >> _phi2f980 >> iunit(_a2f2,1./GeV2) >> _phi2f2 >> iunit(_a2f1370,GeV2) >> _phi2f1370 >> iunit(_a2K14300,GeV2) >> _phi2K14300 >> iunit(_a2K14302,1./GeV2) >> _phi2K14302 >> _a2K1680 >> _phi2K1680 >> _a2NR >> _phi2NR >> _c2Kstarp >> _c2rho >> _c2omega >> _c2Kstarm >> iunit(_c2f980,GeV2) >> iunit(_c2f2,1./GeV2) >> iunit(_c2f1370,GeV2) >> iunit(_c2K14300,GeV2) >> iunit(_c2K14302,1./GeV2) >> _c2K1680 >> _c2NR >> _maxwgt >> _weights >> iunit(_rD0,1./GeV) >> iunit(_rres,1./GeV) >> iunit(_mpi,GeV) >> iunit(_mkp,GeV) >> iunit(_mk0,GeV) >> iunit(_wf980,GeV) >> _f0opt >> _localparameters; } ClassDescription<DtoKPiPiCLEO> DtoKPiPiCLEO::initDtoKPiPiCLEO; // Definition of the static class description member. void DtoKPiPiCLEO::Init() { static ClassDocumentation<DtoKPiPiCLEO> documentation ("The DtoKPiPiCLEO class implements the models of CLEO for" " D0 -> Kbar0 pi+pi- and D0 -> K- pi+ pi0", "The CLEO fits of \\cite{Muramatsu:2002jp} and \\cite{Kopp:2000gv} were" " used for the decays $D^0\\to\\bar{K}^0\\pi^+\\pi^-$ and" " $D^0\\to K^-\\pi^+\\pi^0$.", "\\bibitem{Muramatsu:2002jp} H.~Muramatsu {\\it et al.} " "[CLEO Collaboration],Phys.\\ Rev.\\ Lett.\\ {\\bf 89} (2002) 251802" "[Erratum-ibid.\\ {\\bf 90} (2003) 059901] [arXiv:hep-ex/0207067].\n" "\\bibitem{Kopp:2000gv} S.~Kopp {\\it et al.} [CLEO Collaboration], " "Phys.\\ Rev.\\ D {\\bf 63} (2001) 092001 [arXiv:hep-ex/0011065]." ); static Switch<DtoKPiPiCLEO,bool> interfaceLocalParameters ("LocalParameters", "Whether to use local values for the masses and widths or" " those from the ParticleData objects", &DtoKPiPiCLEO::_localparameters, true, false, false); static SwitchOption interfaceLocalParametersLocal (interfaceLocalParameters, "Local", "Use local values", true); static SwitchOption interfaceLocalParametersParticleData (interfaceLocalParameters, "ParticleData", "Use the values from the ParticleData objects", false); static Parameter<DtoKPiPiCLEO,Energy> interfaceOmegaMass ("OmegaMass", "The mass of the omega meson", &DtoKPiPiCLEO::_momega, MeV, 782.57*MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfacef980Mass ("f980Mass", "The mass of the f_0(980) meson", &DtoKPiPiCLEO::_mf980, MeV, 977.00*MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfacef_2Mass ("f_2Mass", "The mass of the f_2 meson", &DtoKPiPiCLEO::_mf2, MeV, 1275.4 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfacef1370Mass ("f1370Mass", "The mass of the f_0(1370) meson", &DtoKPiPiCLEO::_mf1370, MeV, 1310 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfaceK_01430Mass ("K_01430Mass", "The mass of the K_0(1430) meson", &DtoKPiPiCLEO::_mK14300, MeV, 1412 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfaceK_21430Mass ("K_21430Mass", "The mass of the K_2(1430) meson", &DtoKPiPiCLEO::_mK14302, MeV, 1425.6 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfaceKstar1680Mass ("Kstar1680Mass", "The mass of the K*(1680) meson", &DtoKPiPiCLEO::_mK1680, MeV, 1717 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfacerho1700Mass ("rho1700Mass", "The mass of the rho(1700) meson", &DtoKPiPiCLEO::_mrho1700, MeV, 1700 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfaceKstar0892Mass ("Kstar0892Mass", "The mass of the K*0(892) meson", &DtoKPiPiCLEO::_mK8920, MeV, 896.1 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfaceKstarPlus892AMass ("KstarPlus892AMass", "The mass of the K*+(892) meson in D0 -> K-pi+pi0", &DtoKPiPiCLEO::_mK892A, MeV, 891.5 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfaceKstarPlus892BMass ("KstarPlus892BMass", "The mass of the K*+(892) meson in D0 -> K0pi+pi-", &DtoKPiPiCLEO::_mK892B, MeV, 891.66*MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfacerhoPlusMass ("RhoPlusMass", "The mass of the rho+ meson in D0 -> K-pi+pi0", &DtoKPiPiCLEO::_mrhoA, MeV, 770 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfacerho0Mass ("Rho0Mass", "The mass of the rho+ meson in D0 -> K0pi+pi-", &DtoKPiPiCLEO::_mrhoB, MeV, 769.3 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfaceOmegaWidth ("OmegaWidth", "The width of the omega meson", &DtoKPiPiCLEO::_womega, MeV, 8.44*MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfacef980Width ("f980Width", "The width of the f_0(980) meson", &DtoKPiPiCLEO::_wf980, MeV, 50. *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfacef_2Width ("f_2Width", "The width of the f_2 meson", &DtoKPiPiCLEO::_wf2, MeV, 185.1 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfacef1370Width ("f1370Width", "The width of the f_0(1370) meson", &DtoKPiPiCLEO::_wf1370, MeV, 272.0 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfaceK_01430Width ("K_01430Width", "The width of the K_0(1430) meson", &DtoKPiPiCLEO::_wK14300, MeV, 294 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfaceK_21430Width ("K_21430Width", "The width of the K_2(1430) meson", &DtoKPiPiCLEO::_wK14302, MeV, 98.5 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfaceKstar1680Width ("Kstar1680Width", "The width of the K*(1680) meson", &DtoKPiPiCLEO::_wK1680, MeV, 322 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfacerho1700Width ("rho1700Width", "The width of the rho(1700) meson", &DtoKPiPiCLEO::_wrho1700, MeV, 240 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfaceKstar0892Width ("Kstar0892Width", "The width of the K*0(892) meson", &DtoKPiPiCLEO::_wK8920, MeV, 50.5 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfaceKstarPlus892AWidth ("KstarPlus892AWidth", "The width of the K*+(892) meson in D0 -> K-pi+pi0", &DtoKPiPiCLEO::_wK892A, MeV, 50 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfaceKstarPlus892BWidth ("KstarPlus892BWidth", "The width of the K*+(892) meson in D0 -> K0pi+pi-", &DtoKPiPiCLEO::_wK892B, MeV, 50.8 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfacerhoPlusWidth ("RhoPlusWidth", "The width of the rho+ meson in D0 -> K-pi+pi0", &DtoKPiPiCLEO::_wrhoA, MeV, 150.7 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy> interfacerho0Width ("Rho0Width", "The width of the rho+ meson in D0 -> K0pi+pi-", &DtoKPiPiCLEO::_wrhoB, MeV, 150.2 *MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfacegPi ("gPi", "The g_pi coupling for the f_0(980) width", &DtoKPiPiCLEO::_gpi, 0.09, 0.0, 1., false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfacegK ("gK", "The g_K coupling for the f_0(980) width", &DtoKPiPiCLEO::_gK, 0.02, 0.0, 1., false, false, Interface::limited); static Switch<DtoKPiPiCLEO,bool> interfacef0Option ("f0Option", "Option for the treatment of the f_0(980) width", &DtoKPiPiCLEO::_f0opt, true, false, false); static SwitchOption interfacef0OptionCoupled (interfacef0Option, "Coupled", "Use the coupling pion and kaon channels", true); static SwitchOption interfacef0OptionSWave (interfacef0Option, "SWave", "Use a simple s-wave running width", false); static Parameter<DtoKPiPiCLEO,double> interfaceChargedNonResonantAmplitude ("ChargedNonResonantAmplitude", "Amplitude for the non-resonant component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_a1NR, 1.75, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceChargedNonResonantPhase ("ChargedNonResonantPhase", "Phase for the non-resonant component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_phi1NR, 31.2, -180.0, 180.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceChargedRhoAmplitude ("ChargedRhoAmplitude", "Amplitude for the rho+ component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_a1rho, 1.0, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceChargedRhoPhase ("ChargedRhoPhase", "Phase for the rho+ component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_phi1rho, 0.0, -180.0, 180.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceChargedKStarMinusAmplitude ("ChargedKStarMinusAmplitude", "Amplitude for the K*(892)- component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_a1Kstarm, 0.44, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceChargedKStarMinusPhase ("ChargedKStarMinusPhase", "Phase for the K*(892)- component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_phi1Kstarm, 163, -180.0, 180.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceChargedKStar0Amplitude ("ChargedKStar0Amplitude", "Amplitude for the K*(892)0 component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_a1Kstar0, 0.39, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceChargedKStar0Phase ("ChargedKStar0Phase", "Phase for the K*(892)0 component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_phi1Kstar0, -0.2, -180.0, 180.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy2> interfaceChargedK_0MinusAmplitude ("ChargedK_0MinusAmplitude", "Amplitude for the K_0(1430)- component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_a1K1430m, GeV2, 0.77*GeV2, ZERO, 10.0*GeV2, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceChargedK_0MinusPhase ("ChargedK_0MinusPhase", "Phase for the K_0(1430)- component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_phi1K1430m, 55.5, -180.0, 180.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy2> interfaceChargedK_00Amplitude ("ChargedK_00Amplitude", "Amplitude for the K_0(1430)0 component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_a1K14300, GeV2, 0.85*GeV2, ZERO, 10.0*GeV2, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceChargedK_00Phase ("ChargedK_00Phase", "Phase for the K_0(1430)0 component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_phi1K14300, 166, -180.0, 180.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceChargedRho1700Amplitude ("ChargedRho1700Amplitude", "Amplitude for the rho1700+ component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_a1rho1700, 2.5, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceChargedRho1700Phase ("ChargedRho1700Phase", "Phase for the rho1700+ component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_phi1rho1700, 171., -180.0, 180.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceChargedK1680MinusAmplitude ("ChargedK1680MinusAmplitude", "Amplitude for the K*(1680)- component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_a1K1680, 2.5, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceChargedK1680MinusPhase ("ChargedK1680MinusPhase", "Phase for the K*(1680)- component for D0 -> K- pi+ pi0", &DtoKPiPiCLEO::_phi1K1680, 103, -180.0, 180.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralKStarPlusAmplitude ("NeutralKStarPlusAmplitude", "Amplitude for the K*(892)+ component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_a2Kstarp, 0.11, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralKStarPlusPhase ("NeutralKStarPlusPhase", "Phase for the K*(892)+ component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_phi2Kstarp, 321., 0.0, 360.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralRhoAmplitude ("NeutralRhoAmplitude", "Amplitude for the rho0 component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_a2rho, 1.0, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralRhoPhase ("NeutralRhoPhase", "Phase for the rho0 component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_phi2rho, 0.0, 0.0, 360.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralOmegaAmplitude ("NeutralOmegaAmplitude", "Amplitude for the omega component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_a2omega, 0.037, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralOmegaPhase ("NeutralOmegaPhase", "Phase for the omega component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_phi2omega, 114., 0.0, 360.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralKStarMinusAmplitude ("NeutralKStarMinusAmplitude", "Amplitude for the K*(892)- component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_a2Kstarm, 1.56, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralKStarMinusPhase ("NeutralKStarMinusPhase", "Phase for the K*(892)- component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_phi2Kstarm, 150., 0.0, 360.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy2> interfaceNeutralf980Amplitude ("Neutralf980Amplitude", "Amplitude for the f_0(980) component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_a2f980, GeV2, 0.34*GeV2, ZERO, 10.0*GeV2, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralf980Phase ("Neutralf980Phase", "Phase for the f_0(980) component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_phi2f980, 188., 0.0, 360.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,InvEnergy2> interfaceNeutralf2Amplitude ("Neutralf2Amplitude", "Amplitude for the f_2 component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_a2f2, 1./GeV2, 0.7/GeV2, ZERO, 10.0/GeV2, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralf2Phase ("Neutralf2Phase", "Phase for the f_0(2) component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_phi2f2, 308., 0.0, 360.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy2> interfaceNeutralf1370Amplitude ("Neutralf1370Amplitude", "Amplitude for the f_0(1370) component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_a2f1370, GeV2, 1.8*GeV2, ZERO, 10.0*GeV2, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralf1370Phase ("Neutralf1370Phase", "Phase for the f_0(1370) component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_phi2f1370, 85., 0.0, 360.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,Energy2> interfaceNeutralKK_0MinusAmplitude ("NeutralKK_0MinusAmplitude", "Amplitude for the K_0(1430)- component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_a2K14300, GeV2, 2.0*GeV2, ZERO, 10.0*GeV2, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralKK_0MinusPhase ("NeutralKK_0MinusPhase", "Phase for the K_0(1430)- component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_phi2K14300, 3, 0.0, 360.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,InvEnergy2> interfaceNeutralKK_2MinusAmplitude ("NeutralKK_2MinusAmplitude", "Amplitude for the K_2(1430)- component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_a2K14302, 1./GeV2, 1.0/GeV2, ZERO, 10.0/GeV2, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralKK_2MinusPhase ("NeutralKK_2MinusPhase", "Phase for the K_2(1430)- component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_phi2K14302, 335, 0.0, 360.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralK1680MinusAmplitude ("NeutralK1680MinusAmplitude", "Amplitude for the K*(892)- component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_a2K1680, 5.6, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralK1680MinusPhase ("NeutralK1680MinusPhase", "Phase for the K*(892)- component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_phi2K1680, 174, 0.0, 360.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralNonResonantAmplitude ("NeutralNonResonantAmplitude", "Amplitude for the non-resonant component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_a2NR, 1.1, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,double> interfaceNeutralNonResonantPhase ("NeutralNonResonantPhase", "Phase for the non-resonant component for D0 -> Kbar0 pi+ pi-", &DtoKPiPiCLEO::_phi2NR, 340, 0.0, 360.0, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,InvEnergy> interfaceDRadius ("DRadius", "The radius parameter for the Blatt-Weisskopf form-factor for the D", &DtoKPiPiCLEO::_rD0, 1./GeV, 5./GeV, ZERO, 10./GeV, false, false, Interface::limited); static Parameter<DtoKPiPiCLEO,InvEnergy> interfaceResonanceRadius ("ResonanceRadius", "The radius parameter for the Blatt-Weisskopf form-factor for the" "intermediate resonances", &DtoKPiPiCLEO::_rres, 1./GeV, 1.5/GeV, ZERO, 10./GeV, false, false, Interface::limited); static ParVector<DtoKPiPiCLEO,double> interfaceMaximumWeights ("MaximumWeights", "The maximum weights for the unweighting of the decays", &DtoKPiPiCLEO::_maxwgt, -1, 1.0, 0.0, 1.0e11, false, false, Interface::limited); static ParVector<DtoKPiPiCLEO,double> interfaceWeights ("Weights", "The weights for the different channels for the phase-space integration", &DtoKPiPiCLEO::_weights, -1, 1.0, 0.0, 1.0, false, false, Interface::limited); } int DtoKPiPiCLEO::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int id0(parent->id()); // incoming particle must be D0 if(abs(id0)!=ParticleID::D0) return -1; cc = id0==ParticleID::Dbar0; // must be three decay products if(children.size()!=3) return -1; tPDVector::const_iterator pit = children.begin(); unsigned int npip(0),npim(0),nkm(0),nk0(0),npi0(0); for( ;pit!=children.end();++pit) { id0=(**pit).id(); if(id0 ==ParticleID::piplus) ++npip; else if(id0 ==ParticleID::pi0) ++npi0; else if(id0 ==ParticleID::piminus) ++npim; else if(abs(id0)==ParticleID::K0) ++nk0; else if(id0 ==ParticleID::K_L0) ++nk0; else if(id0 ==ParticleID::K_S0) ++nk0; else if(abs(id0)==ParticleID::Kplus) ++nkm; } if(npim==1&&npip==1&&nk0==1) return 1; else if(nkm==1&&(npip+npim)==1&&npi0==1) return 0; else return -1; } double DtoKPiPiCLEO::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { useMe(); if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin0,PDT::Spin0,PDT::Spin0)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); for(unsigned int ix=0;ix<3;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return 0.; } // compute the invariant masses needed to calulate the amplitudes Energy mD = inpart.mass(); Energy mA = decay[0]->mass(); Energy mB = decay[1]->mass(); Energy mC = decay[2]->mass(); Energy mAB = (decay[0]->momentum()+decay[1]->momentum()).m(); Energy mAC = (decay[0]->momentum()+decay[2]->momentum()).m(); Energy mBC = (decay[1]->momentum()+decay[2]->momentum()).m(); // compute the amplitudes for the resonaces present in both models Complex amp(0); // calculate the matrix element if(imode()==0) { if(ichan<0) { amp = _c1NR +_c1rho *amplitude(1,false,mD,mB,mC,mA,mBC,mAB,mAC,_mrhoA ,_wrhoA ) +_c1rho1700 *amplitude(1,false,mD,mB,mC,mA,mBC,mAB,mAC,_mrho1700,_wrho1700) +_c1Kstarm *amplitude(1,false,mD,mA,mC,mB,mAC,mAB,mBC,_mK892A ,_wK892A ) +_c1K1430m/GeV2*amplitude(0,false,mD,mA,mC,mB,mAC,mAB,mBC,_mK14300 ,_wK14300 ) +_c1K1680 *amplitude(1,false,mD,mA,mC,mB,mAC,mAB,mBC,_mK1680 ,_wK1680) +_c1Kstar0 *amplitude(1,false,mD,mA,mB,mC,mAB,mAC,mBC,_mK8920 ,_wK8920 ) +_c1K14300/GeV2*amplitude(0,false,mD,mA,mB,mC,mAB,mAC,mBC,_mK14300 ,_wK14300 ); } else if(ichan==0) { amp= _c1rho *amplitude(1,false,mD,mB,mC,mA,mBC,mAB,mAC,_mrhoA ,_wrhoA ); } else if(ichan==1) { amp=_c1Kstarm *amplitude(1,false,mD,mA,mC,mB,mAC,mAB,mBC,_mK892A ,_wK892A ) ; } else if(ichan==2) { amp=_c1Kstar0 *amplitude(1,false,mD,mA,mB,mC,mAB,mAC,mBC,_mK8920 ,_wK8920 ) ; } else if(ichan==3) { amp=_c1K1430m/GeV2*amplitude(0,false,mD,mA,mC,mB,mAC,mAB,mBC,_mK14300 ,_wK14300 ); } else if(ichan==4) { amp=_c1K14300/GeV2*amplitude(0,false,mD,mA,mB,mC,mAB,mAC,mBC,_mK14300 ,_wK14300 ); } else if(ichan==5) { amp=_c1rho1700 *amplitude(1,false,mD,mB,mC,mA,mBC,mAB,mAC,_mrho1700,_wrho1700); } else if(ichan==6) { amp=_c1K1680 *amplitude(1,false,mD,mA,mC,mB,mAC,mAB,mBC,_mK1680 ,_wK1680); } } else { if(ichan<0) { amp = _c2NR +_c2Kstarm *amplitude(1,false ,mD,mA,mC,mB,mAC,mAB,mBC,_mK892B ,_wK892B ) +Complex(_c2K14300/GeV2)*amplitude(0,false ,mD,mA,mC,mB,mAC,mAB,mBC,_mK14300,_wK14300) +Complex(_c2K14302*GeV2)*amplitude(2,false ,mD,mA,mC,mB,mAC,mAB,mBC,_mK14302,_wK14302) +_c2K1680 *amplitude(1,false ,mD,mA,mC,mB,mAC,mAB,mBC,_mK1680 ,_wK1680 ) +_c2Kstarp *amplitude(1,false ,mD,mA,mB,mC,mAB,mAC,mBC,_mK892B ,_wK892B ) +_c2rho *amplitude(1,false ,mD,mB,mC,mA,mBC,mAB,mAC,_mrhoB ,_wrhoB ) +_c2omega *amplitude(1,false ,mD,mB,mC,mA,mBC,mAB,mAC,_momega ,_womega ) +Complex(_c2f980/GeV2 )*amplitude(0,_f0opt,mD,mB,mC,mA,mBC,mAB,mAC,_mf980 ,_wf980 ) +Complex(_c2f1370/GeV2 )*amplitude(0,false ,mD,mB,mC,mA,mBC,mAB,mAC,_mf1370 ,_wf1370 ) +Complex(_c2f2*GeV2 )*amplitude(2,false ,mD,mB,mC,mA,mBC,mAB,mAC,_mf2 ,_wf2 ); } else if(ichan==0) { amp=_c2Kstarp *amplitude(1,false ,mD,mA,mB,mC,mAB,mAC,mBC,_mK892B ,_wK892B ); } else if(ichan==1) { amp=_c2rho *amplitude(1,false ,mD,mB,mC,mA,mBC,mAB,mAC,_mrhoB ,_wrhoB ); } else if(ichan==2) { amp=_c2omega *amplitude(1,false ,mD,mB,mC,mA,mBC,mAB,mAC,_momega ,_womega ); } else if(ichan==3) { amp=_c2Kstarm *amplitude(1,false ,mD,mA,mC,mB,mAC,mAB,mBC,_mK892B ,_wK892B ); } else if(ichan==4) { amp=_c2f980/GeV2 *amplitude(0,_f0opt,mD,mB,mC,mA,mBC,mAB,mAC,_mf980 ,_wf980 ); } else if(ichan==5) { amp=_c2f2*GeV2 *amplitude(2,false ,mD,mB,mC,mA,mBC,mAB,mAC,_mf2 ,_wf2 ); } else if(ichan==6) { amp=_c2f1370/GeV2 *amplitude(0,false ,mD,mB,mC,mA,mBC,mAB,mAC,_mf1370 ,_wf1370 ); } else if(ichan==7) { amp=_c2K14300/GeV2*amplitude(0,false ,mD,mA,mC,mB,mAC,mAB,mBC,_mK14300,_wK14300); } else if(ichan==8) { amp=_c2K14302*GeV2*amplitude(2,false ,mD,mA,mC,mB,mAC,mAB,mBC,_mK14302,_wK14302); } else if(ichan==9) { amp=_c2K1680 *amplitude(1,false ,mD,mA,mC,mB,mAC,mAB,mBC,_mK1680 ,_wK1680 ); } } // now compute the matrix element ME()(0,0,0,0)=amp; return norm(amp); } void DtoKPiPiCLEO::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // parameters output << "newdef " << name() << ":LocalParameters " << _localparameters << "\n"; output << "newdef " << name() << ":OmegaMass " << _momega/MeV << "\n"; output << "newdef " << name() << ":f980Mass " << _mf980/MeV << "\n"; output << "newdef " << name() << ":f_2Mass " << _mf2/MeV << "\n"; output << "newdef " << name() << ":f1370Mass " << _mf1370/MeV << "\n"; output << "newdef " << name() << ":K_01430Mass " << _mK14300/MeV << "\n"; output << "newdef " << name() << ":K_21430Mass " << _mK14302/MeV << "\n"; output << "newdef " << name() << ":Kstar1680Mass " << _mK1680/MeV << "\n"; output << "newdef " << name() << ":rho1700Mass " << _mrho1700/MeV << "\n"; output << "newdef " << name() << ":Kstar0892Mass " << _mK8920/MeV << "\n"; output << "newdef " << name() << ":KstarPlus892AMass " << _mK892A/MeV << "\n"; output << "newdef " << name() << ":KstarPlus892BMass " << _mK892B/MeV << "\n"; output << "newdef " << name() << ":RhoPlusMass " << _mrhoA/MeV << "\n"; output << "newdef " << name() << ":Rho0Mass " << _mrhoB/MeV << "\n"; output << "newdef " << name() << ":OmegaWidth " << _womega/MeV << "\n"; output << "newdef " << name() << ":f980Width " << _wf980/MeV << "\n"; output << "newdef " << name() << ":f_2Width " << _wf2/MeV << "\n"; output << "newdef " << name() << ":f1370Width " << _wf1370/MeV << "\n"; output << "newdef " << name() << ":K_01430Width " << _wK14300/MeV << "\n"; output << "newdef " << name() << ":K_21430Width " << _wK14302/MeV << "\n"; output << "newdef " << name() << ":Kstar1680Width " << _wK1680/MeV << "\n"; output << "newdef " << name() << ":rho1700Width " << _wrho1700/MeV << "\n"; output << "newdef " << name() << ":Kstar0892Width " << _wK8920/MeV << "\n"; output << "newdef " << name() << ":KstarPlus892AWidth " << _wK892A/MeV << "\n"; output << "newdef " << name() << ":KstarPlus892BWidth " << _wK892B/MeV << "\n"; output << "newdef " << name() << ":RhoPlusWidth " << _wrhoA/MeV << "\n"; output << "newdef " << name() << ":Rho0Width " << _wrhoB/MeV << "\n"; output << "newdef " << name() << ":gPi " << _gpi << "\n"; output << "newdef " << name() << ":gK " << _gK << "\n"; output << "newdef " << name() << ":f0Option " << _f0opt << "\n"; output << "newdef " << name() << ":ChargedNonResonantAmplitude " << _a1NR << "\n"; output << "newdef " << name() << ":ChargedNonResonantPhase " << _phi1NR<< "\n"; output << "newdef " << name() << ":ChargedRhoAmplitude " << _a1rho<< "\n"; output << "newdef " << name() << ":ChargedRhoPhase " << _phi1rho<< "\n"; output << "newdef " << name() << ":ChargedKStarMinusAmplitude " << _a1Kstarm<< "\n"; output << "newdef " << name() << ":ChargedKStarMinusPhase " << _phi1Kstarm<< "\n"; output << "newdef " << name() << ":ChargedKStar0Amplitude " << _a1Kstar0<< "\n"; output << "newdef " << name() << ":ChargedKStar0Phase " << _phi1Kstar0<< "\n"; output << "newdef " << name() << ":ChargedK_0MinusAmplitude " << _a1K1430m/GeV2 << "\n"; output << "newdef " << name() << ":ChargedK_0MinusPhase " << _phi1K1430m<< "\n"; output << "newdef " << name() << ":ChargedK_00Amplitude " << _a1K14300/GeV2 << "\n"; output << "newdef " << name() << ":ChargedK_00Phase " << _phi1K14300<< "\n"; output << "newdef " << name() << ":ChargedRho1700Amplitude " << _a1rho1700<< "\n"; output << "newdef " << name() << ":ChargedRho1700Phase " << _phi1rho1700<< "\n"; output << "newdef " << name() << ":ChargedK1680MinusAmplitude " << _a1K1680<< "\n"; output << "newdef " << name() << ":ChargedK1680MinusPhase " << _phi1K1680<< "\n"; output << "newdef " << name() << ":NeutralKStarPlusAmplitude " << _a2Kstarp<< "\n"; output << "newdef " << name() << ":NeutralKStarPlusPhase " << _phi2Kstarp<< "\n"; output << "newdef " << name() << ":NeutralRhoAmplitude " << _a2rho<< "\n"; output << "newdef " << name() << ":NeutralRhoPhase " << _phi2rho<< "\n"; output << "newdef " << name() << ":NeutralOmegaAmplitude " << _a2omega<< "\n"; output << "newdef " << name() << ":NeutralOmegaPhase " <<_phi2omega << "\n"; output << "newdef " << name() << ":NeutralKStarMinusAmplitude " << _a2Kstarm<< "\n"; output << "newdef " << name() << ":NeutralKStarMinusPhase " << _phi2Kstarm<< "\n"; output << "newdef " << name() << ":Neutralf980Amplitude " << _a2f980/GeV2<< "\n"; output << "newdef " << name() << ":Neutralf980Phase " << _phi2f980<< "\n"; output << "newdef " << name() << ":Neutralf2Amplitude " << _a2f2*GeV2<< "\n"; output << "newdef " << name() << ":Neutralf2Phase " << _phi2f2<< "\n"; output << "newdef " << name() << ":Neutralf1370Amplitude " << _a2f1370/GeV2<< "\n"; output << "newdef " << name() << ":Neutralf1370Phase " << _phi2f1370<< "\n"; output << "newdef " << name() << ":NeutralKK_0MinusAmplitude " << _a2K14300/GeV2 << "\n"; output << "newdef " << name() << ":NeutralKK_0MinusPhase " << _phi2K14300 << "\n"; output << "newdef " << name() << ":NeutralKK_2MinusAmplitude " << _a2K14302*GeV2<< "\n"; output << "newdef " << name() << ":NeutralKK_2MinusPhase " << _phi2K14302 << "\n"; output << "newdef " << name() << ":NeutralK1680MinusAmplitude " << _a2K1680<< "\n"; output << "newdef " << name() << ":NeutralK1680MinusPhase " << _phi2K1680<< "\n"; output << "newdef " << name() << ":NeutralNonResonantAmplitude " << _a2NR<< "\n"; output << "newdef " << name() << ":NeutralNonResonantPhase " << _phi2NR << "\n"; output << "newdef " << name() << ":DRadius " << _rD0*GeV << "\n"; output << "newdef " << name() << ":ResonanceRadius " << _rres*GeV << "\n"; for(unsigned int ix=0;ix<_maxwgt.size();++ix) { output << "insert " << name() << ":MaximumWeights " << ix << " " << _maxwgt[ix] << "\n"; } for(unsigned int ix=0;ix<_weights.size();++ix) { output << "insert " << name() << ":Weights " << ix << " " << _weights[ix] << "\n"; } if(header) { output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } } void DtoKPiPiCLEO::doinitrun() { DecayIntegrator::doinitrun(); _weights.resize(mode(0)->numberChannels()+mode(1)->numberChannels()); _maxwgt.resize(2); unsigned int iy=0; for(unsigned int ix=0;ix<2;++ix) { _maxwgt[ix]=mode(ix)->maxWeight(); for(unsigned int iz=0;iz<mode(ix)->numberChannels();++iz) { _weights[iy]=mode(ix)->channelWeight(iz); ++iy; } } } Complex DtoKPiPiCLEO::amplitude(int ispin,bool f0, Energy mD, Energy mA , Energy mB , Energy mC , Energy mAB, Energy mAC, Energy mBC, Energy mres, Energy wres) const{ // compute the production momenta Energy pDR = Kinematics::pstarTwoBodyDecay(mD,mres,mC); Energy pDAB = Kinematics::pstarTwoBodyDecay(mD,mAB ,mC); // and the decay momenta Energy pAB = Kinematics::pstarTwoBodyDecay(mAB ,mA,mB); Energy pR = Kinematics::pstarTwoBodyDecay(mres,mA,mB); double Fd(1.),Fr(1.),s(1.); switch(ispin) { case 0: // default values of parameters are correct break; case 1: Fr = sqrt((1.+sqr(_rres*pR ))/(1.+sqr(_rres*pAB ))); Fd = sqrt((1.+sqr(_rD0 *pDR))/(1.+sqr(_rD0 *pDAB))); s = ((mAC-mBC)*(mAC+mBC)+(mD-mC)*(mD+mC)*(mB-mA)*(mB+mA)/sqr(mres))/GeV2; break; case 2: Fr = sqrt((9.+3.*sqr(_rres*pR )+Math::powi(_rres*pR ,4))/ (9.+3.*sqr(_rres*pAB )+Math::powi(_rres*pAB ,4))); Fd = sqrt((9.+3.*sqr(_rD0 *pDR )+Math::powi(_rD0 *pDR ,4))/ (9.+3.*sqr(_rD0 *pDAB)+Math::powi(_rD0 *pDAB,4))); s = sqr(((mBC-mAC)*(mBC+mAC)+(mD-mC)*(mD+mC)*(mA-mB)*(mA+mB)/sqr(mres))/GeV2) -(mAB*mAB-2.*mD*mD-2.*mC*mC+sqr((mD-mC)*(mD+mC))/sqr(mres))* (mAB*mAB-2.*mA*mA-2.*mB*mB+sqr((mA-mB)*(mA+mB))/sqr(mres))/3./GeV2/GeV2; break; default: throw Exception() << "D0toKPiPiCLEO::amplitude spin is too high ispin = " << ispin << Exception::runerror; } // calculate the width term complex<Energy2> bw; if(!f0) { Energy2 mwid=wres*Math::powi(pAB/pR,2*ispin+1)*sqr(Fr*mres)/mAB; bw = sqr(mres)-sqr(mAB)-complex<Energy2>(ZERO,mwid); } else { Energy Gamma_pi = _gpi*sqrt(0.25*sqr(mAB)-sqr(_mpi)); Energy Gamma_K = 0.5*_gK *(sqrt(0.25*sqr(mAB)-sqr(_mkp))+ sqrt(0.25*sqr(mAB)-sqr(_mk0))); bw = sqr(mres)-sqr(mAB)-complex<Energy2>(ZERO,mres*(Gamma_pi+Gamma_K)); } return s*Fr*Fd*GeV2/bw; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/PScalarLeptonNeutrinoDecayer.cc�������������������������������0000644�0001750�0001750�00000027400�11754474774�026275� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PScalarLeptonNeutrinoDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PScalarLeptonNeutrinoDecayer class. // #include "PScalarLeptonNeutrinoDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/StandardModel/StandardModelBase.h" using namespace Herwig; using namespace ThePEG::Helicity; void PScalarLeptonNeutrinoDecayer::doinitrun() { DecayIntegrator::doinitrun(); unsigned int iz(0),ix,iy; if(initialize()) { for(ix=0;ix<_incoming.size();++ix) { for(iy=0;iy<_leptons[ix];++iy) { if(iy==0) _maxweighte [ix] = mode(iz)->maxWeight(); else if(iy==1) _maxweightmu [ix] = mode(iz)->maxWeight(); else if(iy==2) _maxweighttau[ix] = mode(iz)->maxWeight(); ++iz; } } } } PScalarLeptonNeutrinoDecayer::PScalarLeptonNeutrinoDecayer() : _incoming(6), _decayconstant(6), _leptons(6), _maxweighte(6), _maxweightmu(6), _maxweighttau(6) { // pion decay _incoming[0] = 211; _decayconstant[0] = 127.27*MeV; _leptons[0] = 2; _maxweighte[0] = 0.00014; _maxweightmu[0] = 1.09; _maxweighttau[0] = 0.0; // kaon decay _incoming[1] = 321; _decayconstant[1] = 36.06*MeV; _leptons[1] = 2; _maxweighte[1] = 1.87e-05; _maxweightmu[1] = 0.74; _maxweighttau[1] = 0.0; // D_s decay _incoming[2] = 431; _decayconstant[2] = 281.36*MeV; _leptons[2] = 3; _maxweighte[2] = 1.83428e-07; _maxweightmu[2] = 0.00782778; _maxweighttau[2] = 0.00782778; // D decay _incoming[3] = 411; _decayconstant[3] = 51.20*MeV; _leptons[3] = 3; _maxweighte[3] = 1.19915e-08; _maxweightmu[3] = 0.000511418; _maxweighttau[3] = 0.00135052; // B_c decay _incoming[4] = 541; _decayconstant[4] = 16.0*MeV; _leptons[4] = 3; _maxweighte[4] = 1.7429e-09; _maxweightmu[4] = 7.47667e-05; _maxweighttau[4] = 0.0179128; // B_u decays _incoming[5] = 521; _decayconstant[5] = 0.759*MeV; _leptons[5] = 3; _maxweighte[5] = 1.19578e-11; _maxweightmu[5] = 5.12844e-07; _maxweighttau[5] = 0.000114138; // initial size of the vectors _initsize=_incoming.size(); // intermediates generateIntermediates(false); } void PScalarLeptonNeutrinoDecayer::doinit() { DecayIntegrator::doinit(); // check the parameters are consistent unsigned int isize(_incoming.size()); if(isize!=_decayconstant.size()||isize!=_leptons.size()||isize!=_maxweighte.size()|| isize!=_maxweightmu.size()||isize!=_maxweighttau.size()) throw InitException() << "Inconsistent parameters in PScalarLeptonNeutrinoDecayer" << Exception::abortnow; // create the integration channels tPDVector extpart(3); tPDPtr nu[3]={getParticleData(ParticleID::nu_e), getParticleData(ParticleID::nu_mu), getParticleData(ParticleID::nu_tau)}; tPDPtr nubar[3]={getParticleData(ParticleID::nu_ebar), getParticleData(ParticleID::nu_mubar), getParticleData(ParticleID::nu_taubar)}; tPDPtr lep[3]={getParticleData(ParticleID::eminus), getParticleData(ParticleID::muminus), getParticleData(ParticleID::tauminus)}; tPDPtr lepbar[3]={getParticleData(ParticleID::eplus), getParticleData(ParticleID::muplus), getParticleData(ParticleID::tauplus)}; int charge; vector<double> dummyweights; double wgt; DecayPhaseSpaceModePtr mode; for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0]=getParticleData(_incoming[ix]); charge=extpart[0]->iCharge(); for(unsigned int iy=0;iy<_leptons[ix];++iy) { if(charge>0) { extpart[1]=lepbar[iy]; extpart[2]=nu[iy]; } else { extpart[1]=lep[iy]; extpart[2]=nubar[iy]; } mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); if(iy==0) wgt = _maxweighte[ix]; else if(iy==1) wgt = _maxweightmu[ix]; else wgt = _maxweighttau[ix]; addMode(mode,wgt,dummyweights); } } } int PScalarLeptonNeutrinoDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); if(children.size()!=2) return imode; // ids of the particles int id0(parent->id()),id0bar(id0); if(parent->CC()){id0bar=-id0;} tPDVector::const_iterator pit = children.begin(); int id; unsigned ilep(4); for(;pit!=children.end();++pit) { id=abs((**pit).id()); if(id>=11&&id<=16&&id%2==0) ilep=(id-10)/2; } // find the channel we need bool found(false); int ichan(-1); unsigned int ix(0); do { if(id0 ==_incoming[ix]||id0bar==_incoming[ix]) { found=true;ichan+=ilep; cc=id0bar==_incoming[ix]; } else { ichan+=_leptons[ix]; } ++ix; } while (!found&&ix<_incoming.size()); if(found) imode=ichan; return imode; } void PScalarLeptonNeutrinoDecayer::persistentOutput(PersistentOStream & os) const { os << _incoming << ounit(_decayconstant,GeV) << _leptons << _maxweighte << _maxweightmu << _maxweighttau; } void PScalarLeptonNeutrinoDecayer::persistentInput(PersistentIStream & is, int) { is >> _incoming >> iunit(_decayconstant,GeV) >> _leptons >> _maxweighte >> _maxweightmu >> _maxweighttau; } ClassDescription<PScalarLeptonNeutrinoDecayer> PScalarLeptonNeutrinoDecayer::initPScalarLeptonNeutrinoDecayer; // Definition of the static class description member. void PScalarLeptonNeutrinoDecayer::Init() { static ClassDocumentation<PScalarLeptonNeutrinoDecayer> documentation ("The PScalarLeptonNeutrinoDecayer class is the base class for" " the implementation of leptonic decay of a pseudoscalar meson to a lepton" "and a neutrino."); static ParVector<PScalarLeptonNeutrinoDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &PScalarLeptonNeutrinoDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PScalarLeptonNeutrinoDecayer,unsigned int> interfaceLepton ("Leptons", "The allowed outgoing leptons, 1 is only electrons, 2 is electrons and muons and " "3 is all lepton flavours", &PScalarLeptonNeutrinoDecayer::_leptons, 0, 0, 0, 1, 3, false, false, true); static ParVector<PScalarLeptonNeutrinoDecayer,double> interfaceMaxWeighte ("MaxWeightElectron", "The maximum weight for the electron decay mode", &PScalarLeptonNeutrinoDecayer::_maxweighte, 0, 0, 0, 0., 100., false, false, true); static ParVector<PScalarLeptonNeutrinoDecayer,double> interfaceMaxWeightmu ("MaxWeightMuon", "The maximum weight for the muon decay mode", &PScalarLeptonNeutrinoDecayer::_maxweightmu, 0, 0, 0, 0., 100., false, false, true); static ParVector<PScalarLeptonNeutrinoDecayer,double> interfaceMaxWeighttau ("MaxWeightTau", "The maximum weight for the tau decay mode", &PScalarLeptonNeutrinoDecayer::_maxweighttau, 0, 0, 0, 0., 100., false, false, true); static ParVector<PScalarLeptonNeutrinoDecayer,Energy> interfaceDecayConstant ("DecayConstant", "The decay constant for the incoming pseudoscaalr meson.", &PScalarLeptonNeutrinoDecayer::_decayconstant, MeV, 0, ZERO, ZERO, 1000.*MeV, false, false, true); } double PScalarLeptonNeutrinoDecayer::me2(const int,const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // work out which decay constant to use int icoup(0),id(abs(inpart.id())); for(unsigned int ix=0;ix<_incoming.size();++ix) { if(id==abs(_incoming[ix])) icoup=ix; } // find the particles unsigned int iferm(0),ianti(0); for(unsigned ix=0;ix<decay.size();++ix) { id=decay[ix]->id(); if(id<=-11&&id>=-16) ianti=ix; else if(id>=11&&id<=16) iferm=ix; } int idferm = decay[iferm]->id(); // initialization if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin1Half,PDT::Spin1Half)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); // set up the spin information for the decay products SpinorBarWaveFunction:: constructSpinInfo(_wavebar,decay[iferm],outgoing,true); SpinorWaveFunction:: constructSpinInfo(_wave ,decay[ianti],outgoing,true); } // calculate the spinors SpinorBarWaveFunction:: calculateWaveFunctions(_wavebar,decay[iferm],outgoing); SpinorWaveFunction:: calculateWaveFunctions(_wave ,decay[ianti],outgoing); // the prefactor Energy premass = idferm%2==0 ? decay[ianti]->mass() : decay[iferm]->mass(); InvEnergy pre = premass * 2.*_decayconstant[icoup]*SM().fermiConstant()/inpart.mass(); // compute the matrix element vector<unsigned int> ispin(3,0); for(ispin[ianti+1]=0;ispin[ianti+1]<2;++ispin[ianti+1]) { for(ispin[iferm+1]=0;ispin[iferm+1]<2;++ispin[iferm+1]) { ME()(ispin)= idferm%2==0 ? pre*_wave[ispin[ianti+1]].rightScalar(_wavebar[ispin[iferm+1]]) : pre*_wave[ispin[ianti+1]].leftScalar( _wavebar[ispin[iferm+1]]) ; } } // // test of the matrix element // double me=newME.contract(rhoin).real(); // Energy mass = idferm%2==0 ? decay[ianti]->mass() : decay[iferm]->mass(); // double test = sqr(_decayconstant[icoup]*SM().fermiConstant()*2.*mass/inpart.mass())* // (sqr(inpart.mass())-sqr(mass)); // cout << "testing matrix element for " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << me << " " << (me-test)/(me+test) << endl; return 0.5*ME().contract(_rho).real(); } void PScalarLeptonNeutrinoDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":Leptons " << ix << " " << _leptons[ix] << "\n"; output << "newdef " << name() << ":MaxWeightElectron " << ix << " " << _maxweighte[ix] << "\n"; output << "newdef " << name() << ":MaxWeightMuon " << ix << " " << _maxweightmu[ix] << "\n"; output << "newdef " << name() << ":MaxWeightTau " << ix << " " << _maxweighttau[ix] << "\n"; output << "newdef " << name() << ":DecayConstant " << ix << " " << _decayconstant[ix]/MeV << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":Leptons " << ix << " " << _leptons[ix] << "\n"; output << "insert " << name() << ":MaxWeightElectron " << ix << " " << _maxweighte[ix] << "\n"; output << "insert " << name() << ":MaxWeightMuon " << ix << " " << _maxweightmu[ix] << "\n"; output << "insert " << name() << ":MaxWeightTau " << ix << " " << _maxweighttau[ix] << "\n"; output << "insert " << name() << ":DecayConstant " << ix << " " << _decayconstant[ix]/MeV << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/Makefile.in���������������������������������������������������0000644�0001750�0001750�00000056011�11756461676�022302� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Decay/ScalarMeson DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwSMDecay_la_LIBADD = am_HwSMDecay_la_OBJECTS = EtaPiGammaGammaDecayer.lo \ EtaPiPiGammaDecayer.lo EtaPiPiPiDecayer.lo \ PScalar4FermionsDecayer.lo PScalarLeptonNeutrinoDecayer.lo \ PScalarPScalarVectorDecayer.lo PScalarVectorFermionsDecayer.lo \ PScalarVectorVectorDecayer.lo \ ScalarMesonTensorScalarDecayer.lo ScalarScalarScalarDecayer.lo \ SemiLeptonicScalarDecayer.lo ScalarMesonFactorizedDecayer.lo \ ScalarVectorVectorDecayer.lo DtoKPiPiCLEO.lo DtoKPiPiE691.lo \ DtoKPiPiMarkIII.lo HwSMDecay_la_OBJECTS = $(am_HwSMDecay_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwSMDecay_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(HwSMDecay_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwSMDecay_la_SOURCES) DIST_SOURCES = $(HwSMDecay_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwSMDecay.la HwSMDecay_la_SOURCES = \ EtaPiGammaGammaDecayer.cc EtaPiGammaGammaDecayer.h\ EtaPiPiGammaDecayer.cc EtaPiPiGammaDecayer.h \ EtaPiPiPiDecayer.cc EtaPiPiPiDecayer.h \ PScalar4FermionsDecayer.cc PScalar4FermionsDecayer.h\ PScalarLeptonNeutrinoDecayer.cc PScalarLeptonNeutrinoDecayer.h\ PScalarPScalarVectorDecayer.cc PScalarPScalarVectorDecayer.h \ PScalarVectorFermionsDecayer.cc PScalarVectorFermionsDecayer.h\ PScalarVectorVectorDecayer.cc PScalarVectorVectorDecayer.h\ ScalarMesonTensorScalarDecayer.cc ScalarMesonTensorScalarDecayer.h\ ScalarScalarScalarDecayer.cc ScalarScalarScalarDecayer.h \ SemiLeptonicScalarDecayer.cc SemiLeptonicScalarDecayer.h \ ScalarMesonFactorizedDecayer.cc ScalarMesonFactorizedDecayer.h \ ScalarVectorVectorDecayer.h ScalarVectorVectorDecayer.cc \ DtoKPiPiCLEO.h DtoKPiPiCLEO.cc \ DtoKPiPiE691.h DtoKPiPiE691.cc\ DtoKPiPiMarkIII.h DtoKPiPiMarkIII.cc HwSMDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 8:1:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Decay/ScalarMeson/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Decay/ScalarMeson/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwSMDecay.la: $(HwSMDecay_la_OBJECTS) $(HwSMDecay_la_DEPENDENCIES) $(EXTRA_HwSMDecay_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwSMDecay_la_LINK) -rpath $(pkglibdir) $(HwSMDecay_la_OBJECTS) $(HwSMDecay_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DtoKPiPiCLEO.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DtoKPiPiE691.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DtoKPiPiMarkIII.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EtaPiGammaGammaDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EtaPiPiGammaDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EtaPiPiPiDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PScalar4FermionsDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PScalarLeptonNeutrinoDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PScalarPScalarVectorDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PScalarVectorFermionsDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PScalarVectorVectorDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ScalarMesonFactorizedDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ScalarMesonTensorScalarDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ScalarScalarScalarDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ScalarVectorVectorDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SemiLeptonicScalarDecayer.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/PScalarVectorVectorDecayer.h����������������������������������0000644�0001750�0001750�00000015336�11754474774�025604� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PScalarVectorVectorDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PScalarVectorVectorDecayer_H #define HERWIG_PScalarVectorVectorDecayer_H // This is the declaration of the PScalarVectorVectorDecayer class. #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/Decay/DecayIntegrator.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>PScalarVectorVectorDecayer</code> class is designed to perform the decay * of a pseudoscalar meson to two spin-1 particles. The majority of these decays * are of a light pseudoscalar meson to \f$\gamma\gamma\f$ where * including the matrix-element is unnessecary. However there are a small number * of decays, * \e e.g. \f$\eta'\to\omega\gamma\f$ * where the use of this decayer is required to get the correct correlations. * * The matrix element is taken to be * \f[\mathcal{M} = g\epsilon^{\mu\nu\alpha\beta} * p_{1\mu} \epsilon_{1\nu} * p_{2\alpha}\epsilon_{2\beta}, * \f] * where \f$p_{1,2}\f$ and \f$\epsilon_{1,2}\f$ are the momenta and polarzation * vectors of the outgoing vectors. * * The incoming pseudoscalar meson, the outgoing vectors and the coupling can * be specified using the relevant interfaces. * * @see DecayIntegrator * @see PScalarVectorFermionsDecayer * @see PScalar4FermionsDecayer * * \author Peter Richardson * */ class PScalarVectorVectorDecayer: public DecayIntegrator { public: /** * Default constructor. */ PScalarVectorVectorDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2( const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 3. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<PScalarVectorVectorDecayer> initPScalarVectorVectorDecayer; /** * Private and non-existent assignment operator. */ PScalarVectorVectorDecayer & operator=(const PScalarVectorVectorDecayer &); private: /** * the PDG code for the incoming particle */ vector<int> _incoming; /** * the PDG code for the first outgoing particle */ vector<int> _outgoing1; /** * the PDG code for the second outgoing particle */ vector<int> _outgoing2; /** * the coupling for the decay, \f$g\f$. */ vector<InvEnergy> _coupling; /** * the maximum weight for the decay */ vector<double> _maxweight; /** * initial number of modes */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the decay products */ mutable vector<Helicity::LorentzPolarizationVector> _vectors[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of PScalarVectorVectorDecayer. */ template <> struct BaseClassTrait<Herwig::PScalarVectorVectorDecayer,1> { /** Typedef of the base class of PScalarVectorVectorDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::PScalarVectorVectorDecayer> : public ClassTraitsBase<Herwig::PScalarVectorVectorDecayer> { /** Return the class name.*/ static string className() { return "Herwig::PScalarVectorVectorDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_PScalarVectorVectorDecayer_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/PScalarVectorFermionsDecayer.h��������������������������������0000644�0001750�0001750�00000017752�11754474774�026130� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PScalarVectorFermionsDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef THEPEG_PScalarVectorFermionsDecayer_H #define THEPEG_PScalarVectorFermionsDecayer_H // // This is the declaration of the PScalarVectorFermionsDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" #include "ThePEG/Helicity/LorentzSpinorBar.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>PScalarVectorFermionsDecayer</code> class is designed for the decay of a * pseudoscalar meson to a spin-1 particle and a fermion-antifermion pair. In practice * these decays are of the form \f$\gamma\ell^+\ell^-\f$ and the propagator of * the off-shell boson is taken to be \f$\frac1{m^2_{f\bar{f}}}\f$. * There is also the option of including a vector meson dominance * form-factor. * * In this case the matrix element is * \f[\mathcal{M} = \frac{g}{m^2_{f\bar{f}}} * \epsilon^{\mu\nu\alpha\beta}p_{V\mu}\epsilon_{V\nu} * \bar{u}(p_f)\gamma_\alpha v(p_{\bar{f}}) p_{f\bar{f}\beta} * \f] * It includes the option of a vector meson dominance (VMD) type form factor * \f$\frac{-M^2+i\Gamma M}{(m^2_{f\bar{f}}-M^2+i\Gamma M)}\f$. * * The incoming pseudoscalar meson, the outgoing vector, the fermion and antifermion * and the coupling can be specified using the relevant interfaces. * * @see DecayIntegrator * @see PScalarVectorVectorDecayer * @see PScalar4FermionsDecayer * * \author Peter Richardson * */ class PScalarVectorFermionsDecayer: public DecayIntegrator { public: /** * Default constructor. */ PScalarVectorFermionsDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 body partial width. * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; /** * The differential three body decay rate with one integral performed. * @param imode The mode for which the matrix element is needed. * @param q2 The scale, \e i.e. the mass squared of the decaying particle. * @param s The invariant mass which still needs to be integrate over. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The differential rate \f$\frac{d\Gamma}{ds}\f$ */ virtual InvEnergy threeBodydGammads(const int imode, const Energy2 q2, const Energy2 s, const Energy m1, const Energy m2, const Energy m3) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<PScalarVectorFermionsDecayer> initPScalarVectorFermionsDecayer; /** * Private and non-existent assignment operator. */ PScalarVectorFermionsDecayer & operator=(const PScalarVectorFermionsDecayer &); private: /** * coupling for a decay */ vector<InvEnergy> _coupling; /** * the PDG codes for the incoming particles */ vector<int> _incoming; /** * the PDG codes for the outgoing vector */ vector<int> _outgoingV; /** * the PDG codes for the outgoing fermion */ vector<int> _outgoingf; /** * the PDG codes for the outgoing antifermion */ vector<int> _outgoinga; /** * maximum weight for a decay */ vector<double> _maxweight; /** * Include the VMD factor */ vector<int> _includeVMD; /** * PDG code for thte particle to use in the VMD factor. */ vector<int> _VMDid; /** * Mass to use in the VMD factor. */ vector<Energy> _VMDmass; /** * Width to use in the VMD factor. */ vector<Energy> _VMDwidth; /** * Initial size of the vectors */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the decay product */ mutable vector<Helicity::LorentzPolarizationVector> _vectors; /** * Spinors for the fermions */ mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > _wave; /** * Barred spinors for the fermions */ mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > _wavebar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of PScalarVectorFermionsDecayer. */ template <> struct BaseClassTrait<Herwig::PScalarVectorFermionsDecayer,1> { /** Typedef of the base class of PScalarVectorFermionsDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::PScalarVectorFermionsDecayer> : public ClassTraitsBase<Herwig::PScalarVectorFermionsDecayer> { /** Return the class name.*/ static string className() { return "Herwig::PScalarVectorFermionsDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* THEPEG_PScalarVectorFermionsDecayer_H */ ����������������������herwig++-2.6.0.orig/Decay/ScalarMeson/DtoKPiPiE691.cc�����������������������������������������������0000644�0001750�0001750�00000070506�11754474774�022542� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DtoKPiPiE691.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DtoKPiPiE691 class. // #include "DtoKPiPiE691.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" using namespace Herwig; using ThePEG::Helicity::ScalarWaveFunction; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; DtoKPiPiE691::DtoKPiPiE691() { // amplitudes and phases for D+ -> K-pi+pi+ _a1NR = 1. ; _phi1NR = 0.; _a1K892 = 0.78; _phi1K892 = - 60.; _a1K1430 = 0.53; _phi1K1430 = 132.; _a1K1680 = 0.47; _phi1K1680 = - 51.; // amplitudes and phases for D0 -> K-pi+pi0 _a2NR = 1.00; _phi2NR = 0.; _a2K8920 = 3.19; _phi2K8920 = 167.; _a2K892m = 2.96; _phi2K892m = -112.; _a2rho = 8.56; _phi2rho = 40.; // amplitudes and phases for D0 -> Kbar0 pi+pi- _a3NR = 1.00; _phi3NR = 0.; _a3K892 = 2.31; _phi3K892 = 109.; _a3rho = 1.59; _phi3rho = -123.; // masses and widths _localparameters=true; _mK8920 = 0.8961 *GeV; _wK8920 = 0.0505*GeV; _mK892m = 0.89159*GeV; _wK892m = 0.0498*GeV; _mK1680 = 1.714 *GeV; _wK1680 = 0.323 *GeV; _mK1430 = 1.429 *GeV; _wK1430 = 0.287 *GeV; _mrho0 = 0.7681 *GeV; _wrho0 = 0.1515*GeV; _mrhop = 0.7681 *GeV; _wrhop = 0.1515*GeV; // generate the intermediate particles generateIntermediates(true); } void DtoKPiPiE691::doinit() { DecayIntegrator::doinit(); // complex amplitudes calculated from magnitudes and phases double fact = Constants::pi/180.; // D+ -> K-pi+pi+ _c1NR = _a1NR *Complex(cos(_phi1NR *fact),sin(_phi1NR *fact)); _c1K892 = _a1K892 *Complex(cos(_phi1K892 *fact),sin(_phi1K892 *fact)); _c1K1430= _a1K1430*Complex(cos(_phi1K1430*fact),sin(_phi1K1430*fact)); _c1K1680= _a1K1680*Complex(cos(_phi1K1680*fact),sin(_phi1K1680*fact)); // D0 -> K-pi+pi0 _c2NR = _a2NR *Complex(cos(_phi2NR *fact),sin(_phi2NR *fact)); _c2K8920= _a2K8920*Complex(cos(_phi2K8920*fact),sin(_phi2K8920*fact)); _c2K892m= _a2K892m*Complex(cos(_phi2K892m*fact),sin(_phi2K892m*fact)); _c2rho = _a2rho *Complex(cos(_phi2rho *fact),sin(_phi2rho *fact)); // D0 -> Kbar0pi+pi- _c3NR = _a3NR *Complex(cos(_phi3NR *fact),sin(_phi3NR *fact)); _c3K892 = _a3K892 *Complex(cos(_phi3K892 *fact),sin(_phi3K892 *fact)); _c3rho = _a3rho *Complex(cos(_phi3rho *fact),sin(_phi3rho *fact)); // intermediate resonances tPDPtr k8920 = getParticleData(ParticleID::Kstarbar0 ); tPDPtr k892m = getParticleData(ParticleID::Kstarminus); tPDPtr k1430 = getParticleData(ParticleID::Kstar_0bar0); tPDPtr k1680 = getParticleData(-30313); tPDPtr rho0 = getParticleData(ParticleID::rho0); tPDPtr rhop = getParticleData(ParticleID::rhoplus); // D+ -> K-pi+pi+ tPDVector extpart(4); extpart[0]=getParticleData(ParticleID::Dplus); extpart[1]=getParticleData(ParticleID::Kminus); extpart[2]=getParticleData(ParticleID::piplus); extpart[3]=getParticleData(ParticleID::piplus); DecayPhaseSpaceChannelPtr newchannel; DecayPhaseSpaceModePtr mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); int ix=0; if(k8920) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,3); newchannel->addIntermediate(k8920,0,0., 1,2); mode->addChannel(newchannel); ++ix; newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k8920,0,0., 1,3); mode->addChannel(newchannel); ++ix; } if(k1430) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,3); newchannel->addIntermediate(k1430,0,0., 1,2); mode->addChannel(newchannel); ++ix; newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k1430,0,0., 1,3); mode->addChannel(newchannel); ++ix; } if(k1680) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,3); newchannel->addIntermediate(k1680,0,0., 1,2); mode->addChannel(newchannel); ++ix; newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k1680,0,0., 1,3); mode->addChannel(newchannel); ++ix; } // add the mode vector<double> wtemp; if(ix<=int(_weights.size())) { vector<double>::const_iterator wit=_weights.begin(); wtemp=vector<double>(wit,wit+ix); } else { wtemp=vector<double>(ix,1./double(ix)); } if(_maxwgt.empty()) _maxwgt.push_back(1.); addMode(mode,_maxwgt[0],wtemp); // D0 -> K-pi+pi0 extpart[0]=getParticleData(ParticleID::D0); extpart[1]=getParticleData(ParticleID::Kminus); extpart[2]=getParticleData(ParticleID::piplus); extpart[3]=getParticleData(ParticleID::pi0); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); int iy=ix; if(k8920) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,3); newchannel->addIntermediate(k8920,0,0., 1,2); mode->addChannel(newchannel); ++iy; } if(k892m) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k892m,0,0., 1,3); mode->addChannel(newchannel); ++iy; } if(rhop) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(rhop,0,0., 2,3); mode->addChannel(newchannel); ++iy; } // add the mode if(iy<=int(_weights.size())) { vector<double>::const_iterator wit=_weights.begin(); wtemp=vector<double>(wit+ix,wit+iy); } else { wtemp=vector<double>(iy-ix,1./double(iy-ix)); } if(_maxwgt.size()<2) _maxwgt.push_back(1.); addMode(mode,_maxwgt[1],wtemp); // D0 -> Kbar0 pi+ pi- extpart[0]=getParticleData(ParticleID::D0); extpart[1]=getParticleData(ParticleID::Kbar0); extpart[2]=getParticleData(ParticleID::piplus); extpart[3]=getParticleData(ParticleID::piminus); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); ix=iy; if(rho0) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(rho0,0,0., 2,3); mode->addChannel(newchannel); ++iy; } if(k892m) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(k892m,0,0., 1,3); mode->addChannel(newchannel); ++iy; } // add the mode if(iy<=int(_weights.size())) { vector<double>::const_iterator wit=_weights.begin(); wtemp=vector<double>(wit+ix,wit+iy); } else { wtemp=vector<double>(iy-ix,1./double(iy-ix)); } if(_maxwgt.size()<3) _maxwgt.push_back(1.); addMode(mode,_maxwgt[2],wtemp); // reset the resonance parameters in the integration if needed if(_localparameters) { resetIntermediate(k8920,_mK8920,_wK8920); resetIntermediate(k892m,_mK892m,_wK892m); resetIntermediate(k1430,_mK1680,_wK1680); resetIntermediate(k1680,_mK1430,_wK1430); resetIntermediate(rho0 ,_mrho0 ,_wrho0 ); resetIntermediate(rhop ,_mrhop ,_wrhop ); } // get values from the ParticleData objects if needed else { _mK8920 = k8920->mass(); _mK892m = k892m->mass(); _mK1680 = k1430->mass(); _mK1430 = k1680->mass(); _mrho0 = rho0 ->mass(); _mrhop = rhop ->mass(); _wK8920 = k8920->width(); _wK892m = k892m->width(); _wK1680 = k1430->width(); _wK1430 = k1680->width(); _wrho0 = rho0 ->width(); _wrhop = rhop ->width(); } } void DtoKPiPiE691::persistentOutput(PersistentOStream & os) const { os << _a1NR << _phi1NR << _a1K892 << _phi1K892 << _a1K1430 << _phi1K1430 << _a1K1680 << _phi1K1680 << _a2NR << _phi2NR << _a2K8920 << _phi2K8920 << _a2K892m << _phi2K892m << _a2rho << _phi2rho << _a3NR << _phi3NR << _a3K892 << _phi3K892 << _a3rho << _phi3rho << _c1NR << _c1K892 << _c1K1430 << _c1K1680 << _c2NR << _c2K8920 << _c2K892m << _c2rho << _c3NR << _c3K892 << _c3rho << _localparameters << ounit(_mK8920,GeV) << ounit(_wK8920,GeV) << ounit(_mK892m,GeV) << ounit(_wK892m,GeV) << ounit(_mK1680,GeV) << ounit(_wK1680,GeV) << ounit(_mK1430,GeV) << ounit(_wK1430,GeV) << ounit(_mrho0 ,GeV) << ounit(_wrho0 ,GeV) << ounit(_mrhop ,GeV) << ounit(_wrhop ,GeV) << _maxwgt << _weights; } void DtoKPiPiE691::persistentInput(PersistentIStream & is, int) { is >> _a1NR >> _phi1NR >> _a1K892 >> _phi1K892 >> _a1K1430 >> _phi1K1430 >> _a1K1680 >> _phi1K1680 >> _a2NR >> _phi2NR >> _a2K8920 >> _phi2K8920 >> _a2K892m >> _phi2K892m >> _a2rho >> _phi2rho >> _a3NR >> _phi3NR >> _a3K892 >> _phi3K892 >> _a3rho >> _phi3rho >> _c1NR >> _c1K892 >> _c1K1430 >> _c1K1680 >> _c2NR >> _c2K8920 >> _c2K892m >> _c2rho >> _c3NR >> _c3K892 >> _c3rho >> _localparameters >> iunit(_mK8920,GeV) >> iunit(_wK8920,GeV) >> iunit(_mK892m,GeV) >> iunit(_wK892m,GeV) >> iunit(_mK1680,GeV) >> iunit(_wK1680,GeV) >> iunit(_mK1430,GeV) >> iunit(_wK1430,GeV) >> iunit(_mrho0 ,GeV) >> iunit(_wrho0 ,GeV) >> iunit(_mrhop ,GeV) >> iunit(_wrhop ,GeV) >> _maxwgt >> _weights; } ClassDescription<DtoKPiPiE691> DtoKPiPiE691::initDtoKPiPiE691; // Definition of the static class description member. void DtoKPiPiE691::Init() { static ClassDocumentation<DtoKPiPiE691> documentation ("The DtoKPiPiE691 class implements the model of E691 for D -> K pi pi" "Dalitz decays", "The model of \\cite{Anjos:1992kb} for $D\\to K\\pi\\pi$ decays was used", "\\bibitem{Anjos:1992kb} J.~C.~Anjos {\\it et al.} [E691 Collaboration]," "Phys.\\ Rev.\\ D {\\bf 48} (1993) 56."); static Parameter<DtoKPiPiE691,double> interfaceKmPipPipNonResonantMagnitude ("KmPipPipNonResonantMagnitude", "The magnitude of the non-resonant component for D+ -> K- pi+ pi+", &DtoKPiPiE691::_a1NR, 1.0, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPipNonResonantPhase ("KmPipPipNonResonantPhase", "The phase of the non-resonant component for D+ -> K- pi+ pi+", &DtoKPiPiE691::_phi1NR, 0., -180., 180., false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPipK892Magnitude ("KmPipPipK892Magnitude", "The magnitude of the K*(892) component for D+ -> K- pi+ pi+", &DtoKPiPiE691::_a1K892, 0.78, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPipK892Phase ("KmPipPipK892Phase", "The phase of the K*(892) component for D+ -> K- pi+ pi+", &DtoKPiPiE691::_phi1K892, -60., -180., 180., false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPipK1430Magnitude ("KmPipPipK1430Magnitude", "The magnitude of the K*0(1430) component for D+ -> K- pi+ pi+", &DtoKPiPiE691::_a1K1430, 0.53, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPipK1430Phase ("KmPipPipK1430Phase", "The phase of the K*0(1430) component for D+ -> K- pi+ pi+", &DtoKPiPiE691::_phi1K1430, 132., -180., 180., false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPipK1680Magnitude ("KmPipPipK1680Magnitude", "The magnitude of the K*(1680) component for D+ -> K- pi+ pi+", &DtoKPiPiE691::_a1K1680, 0.47, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPipK1680Phase ("KmPipPipK1680Phase", "The phase of the K*(1680) component for D+ -> K- pi+ pi+", &DtoKPiPiE691::_phi1K1680, - 51., -180., 180., false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0NonResonantMagnitude ("KmPipPi0NonResonantMagnitude", "The magnitude of the non-resonant component for D0 -> K- pi+ pi0", &DtoKPiPiE691::_a2NR, 1.0, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0NonResonantPhase ("KmPipPi0NonResonantPhase", "The phase of the non-resonant component for D0 -> K- pi+ pi0", &DtoKPiPiE691::_phi2NR, 0., -180., 180., false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0K8920Magnitude ("KmPipPi0K8920Magnitude", "The magnitude of the K*(892)0 component for D0 -> K- pi+ pi0", &DtoKPiPiE691::_a2K8920, 3.19, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0K8920Phase ("KmPipPi0K8920Phase", "The phase of the K*(892)0 component for D0 -> K- pi+ pi0", &DtoKPiPiE691::_phi2K8920, 167., -180., 180., false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0K892mMagnitude ("KmPipPi0K892mMagnitude", "The magnitude of the K*(892)- component for D0 -> K- pi+ pi0", &DtoKPiPiE691::_a2K892m, 2.96, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0K892mPhase ("KmPipPi0K892mPhase", "The phase of the K*(892)- component for D0 -> K- pi+ pi0", &DtoKPiPiE691::_phi2K892m, -112., -180., 180., false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0RhoMagnitude ("KmPipPi0RhoMagnitude", "The magnitude of the rho component for D0 -> K- pi+ pi0", &DtoKPiPiE691::_a2rho, 8.56, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceKmPipPi0RhoPhase ("KmPipPi0RhoPhase", "The phase of the rho component for D0 -> K- pi+ pi0", &DtoKPiPiE691::_phi2rho, 40., -180., 180., false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceK0PipPimNonResonantMagnitude ("K0PipPimNonResonantMagnitude", "The magnitude of the non-resonant component for D0 -> Kbar0 pi+pi-", &DtoKPiPiE691::_a3NR, 1.0, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceK0PipPimNonResonantPhase ("K0PipPimNonResonantPhase", "The phase of the non-resonant component for D0 -> Kbar0 pi+pi-", &DtoKPiPiE691::_phi3NR, 0., -180., 180., false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceK0PipPimK892Magnitude ("K0PipPimK892Magnitude", "The magnitude of the K*(892) component for D0 -> Kbar0 pi+pi-", &DtoKPiPiE691::_a3K892, 2.31, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceK0PipPimK892Phase ("K0PipPimK892Phase", "The phase of the K*(892)0 component for D0 -> Kbar0 pi+pi-", &DtoKPiPiE691::_phi3K892, 109., -180., 180., false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceK0PipPimRhoMagnitude ("K0PipPimRhoMagnitude", "The magnitude of the rho component for D0 -> Kbar0 pi+pi-", &DtoKPiPiE691::_a3rho, 1.59, 0.0, 10.0, false, false, Interface::limited); static Parameter<DtoKPiPiE691,double> interfaceK0PipPimRhoPhase ("K0PipPimRhoPhase", "The phase of the rho component for D0 -> Kbar0 pi+pi-", &DtoKPiPiE691::_phi3rho, -123., -180., 180., false, false, Interface::limited); static Switch<DtoKPiPiE691,bool> interfaceLocalParameters ("LocalParameters", "Whether to use local values for the masses and widths or" " those from the ParticleData objects", &DtoKPiPiE691::_localparameters, true, false, false); static SwitchOption interfaceLocalParametersLocal (interfaceLocalParameters, "Local", "Use local values", true); static SwitchOption interfaceLocalParametersParticleData (interfaceLocalParameters, "ParticleData", "Use the values from the ParticleData objects", false); static Parameter<DtoKPiPiE691,Energy> interfaceK8920Mass ("K8920Mass", "The mass of the K*(892)0", &DtoKPiPiE691::_mK8920, GeV, 0.8961 *GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiE691,Energy> interfaceK8920Width ("K8920Width", "The width of the K*(892)0", &DtoKPiPiE691::_wK8920, GeV, 0.0505*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiE691,Energy> interfaceK892MinusMass ("K892MinusMass", "The mass of the K*(892)-", &DtoKPiPiE691::_mK892m, GeV, 0.89159*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiE691,Energy> interfaceK892MinusWidth ("K892MinusWidth", "The width of the K*(892)-", &DtoKPiPiE691::_wK892m, GeV, 0.0498*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiE691,Energy> interfaceK1680Mass ("K1680Mass", "The mass of the K*(1680)", &DtoKPiPiE691::_mK1680, GeV, 1.714 *GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiE691,Energy> interfaceK1680Width ("K1680Width", "The width of the K*(1680)", &DtoKPiPiE691::_wK1680, GeV, 0.323 *GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiE691,Energy> interfaceK1430Mass ("K1430Mass", "The mass of the K*(1430)", &DtoKPiPiE691::_mK1430, GeV, 1.429 *GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiE691,Energy> interfaceK1430Width ("K1430Width", "The width of the K*(1430)", &DtoKPiPiE691::_wK1430, GeV, 0.287 *GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiE691,Energy> interfaceRho0Mass ("Rho0Mass", "The mass of the rho0", &DtoKPiPiE691::_mrho0, GeV, 0.7681 *GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiE691,Energy> interfaceRho0Width ("Rho0Width", "The width of the rho0", &DtoKPiPiE691::_wrho0, GeV, 0.1515*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiE691,Energy> interfaceRhoPlusMass ("RhoPlusMass", "The mass of the rho+", &DtoKPiPiE691::_mrhop, GeV, 0.7681 *GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<DtoKPiPiE691,Energy> interfaceRhoPlusWidth ("RhoPlusWidth", "The width of the rho+", &DtoKPiPiE691::_wrhop, GeV, 0.1515*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static ParVector<DtoKPiPiE691,double> interfaceMaximumWeights ("MaximumWeights", "The maximum weights for the unweighting of the decays", &DtoKPiPiE691::_maxwgt, -1, 1.0, 0.0, 1.0e11, false, false, Interface::limited); static ParVector<DtoKPiPiE691,double> interfaceWeights ("Weights", "The weights for the different channels for the phase-space integration", &DtoKPiPiE691::_weights, -1, 1.0, 0.0, 1.0, false, false, Interface::limited); } int DtoKPiPiE691::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int id0(parent->id()); // incoming particle must be D0 or D+ if(abs(id0)!=ParticleID::D0&&abs(id0)!=ParticleID::Dplus) return -1; cc = id0<0; // must be three decay products if(children.size()!=3) return -1; tPDVector::const_iterator pit = children.begin(); unsigned int npip(0),npim(0),nkm(0),nk0(0),npi0(0); int id; for( ;pit!=children.end();++pit) { id=(**pit).id(); if(id ==ParticleID::piplus) ++npip; else if(id ==ParticleID::pi0) ++npi0; else if(id ==ParticleID::piminus) ++npim; else if(abs(id)==ParticleID::K0) ++nk0; else if(id ==ParticleID::K_L0) ++nk0; else if(id ==ParticleID::K_S0) ++nk0; else if(abs(id)==ParticleID::Kplus) ++nkm; } if(abs(id0)==ParticleID::Dplus) { if((id0==ParticleID::Dplus &&(nkm==1&&npip==2))|| (id0==ParticleID::Dminus&&(nkm==1&&npim==2))) return 0; else return -1; } else { if(npim==1&&npip==1&&nk0==1) return 2; else if(nkm==1&&(npip+npim)==1&&npi0==1) return 1; else return -1; } } double DtoKPiPiE691::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { useMe(); if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin0,PDT::Spin0,PDT::Spin0)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); for(unsigned int ix=0;ix<3;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return 0.; } Complex amp; // D+ -> K-pi+pi+ if(imode()==0) { Lorentz5Momentum pres1=decay[0]->momentum()+decay[1]->momentum(); pres1.rescaleMass(); double ct1 =-decayAngle(inpart.momentum(),pres1,decay[0]->momentum()); Lorentz5Momentum pres2=decay[0]->momentum()+decay[2]->momentum(); pres2.rescaleMass(); double ct2 =-decayAngle(inpart.momentum(),pres2,decay[0]->momentum()); if(ichan<0) { amp = _c1NR*sqrt(2.) +_c1K892 *amplitude(1,ct1,pres1.mass(),_wK8920,_mK8920) +_c1K892 *amplitude(1,ct2,pres2.mass(),_wK8920,_mK8920) +_c1K1430*amplitude(0,ct1,pres1.mass(),_wK1430,_mK1430) +_c1K1430*amplitude(0,ct2,pres2.mass(),_wK1430,_mK1430) +_c1K1680*amplitude(1,ct1,pres1.mass(),_wK1680,_mK1680) +_c1K1680*amplitude(1,ct2,pres2.mass(),_wK1680,_mK1680); } else if(ichan==0) { amp=_c1K892 *amplitude(1,ct1,pres1.mass(),_wK8920,_mK8920); } else if(ichan==1) { amp=_c1K892 *amplitude(1,ct2,pres2.mass(),_wK8920,_mK8920); } else if(ichan==2) { amp=_c1K1430*amplitude(1,ct1,pres1.mass(),_wK1430,_mK1430); } else if(ichan==3) { amp=_c1K1430*amplitude(1,ct2,pres2.mass(),_wK1430,_mK1430); } else if(ichan==4) { amp=_c1K1680*amplitude(1,ct1,pres1.mass(),_wK1680,_mK1680); } else if(ichan==5) { amp=_c1K1680*amplitude(1,ct2,pres2.mass(),_wK1680,_mK1680); } } // D0 -> K-pi+pi0 else if(imode()==1) { Lorentz5Momentum pres1=decay[0]->momentum()+decay[1]->momentum(); pres1.rescaleMass(); double ct1 = decayAngle(inpart.momentum(),pres1,decay[0]->momentum()); Lorentz5Momentum pres2=decay[0]->momentum()+decay[2]->momentum(); pres2.rescaleMass(); double ct2 = decayAngle(inpart.momentum(),pres2,decay[2]->momentum()); Lorentz5Momentum pres3=decay[1]->momentum()+decay[2]->momentum(); pres3.rescaleMass(); double ct3 = decayAngle(inpart.momentum(),pres3,decay[2]->momentum()); if(ichan<0) { amp = _c2NR +_c2K8920*amplitude(1,ct1,pres1.mass(),_wK8920,_mK8920) +_c2K892m*amplitude(1,ct2,pres2.mass(),_wK892m,_mK892m) +_c2rho *amplitude(1,ct3,pres3.mass(),_wrhop ,_mrhop ); } else if(ichan==0) { amp = _c2K8920*amplitude(1,ct1,pres1.mass(),_wK8920,_mK8920); } else if(ichan==1) { amp = _c2K892m*amplitude(1,ct2,pres2.mass(),_wK892m,_mK892m); } else if(ichan==2) { amp = _c2rho *amplitude(1,ct3,pres3.mass(),_wrhop ,_mrhop); } } // D0 -> Kbar0pi+pi- else if(imode()==2) { Lorentz5Momentum pres1=decay[0]->momentum()+decay[2]->momentum(); pres1.rescaleMass(); double ct1 = decayAngle(inpart.momentum(),pres1,decay[0]->momentum()); Lorentz5Momentum pres2=decay[1]->momentum()+decay[2]->momentum(); pres2.rescaleMass(); double ct2 = decayAngle(inpart.momentum(),pres2,decay[1]->momentum()); if(ichan<0) { amp = _c3NR +_c3K892*amplitude(1,ct1,pres1.mass(),_wK892m,_mK892m) +_c3rho *amplitude(1,ct2,pres2.mass(),_wrho0 ,_mrho0 ); } else if(ichan==0) { amp = _c3rho *amplitude(1,ct2,pres2.mass(),_wrho0 ,_mrho0 ); } else if(ichan==1) { amp = _c3K892*amplitude(1,ct1,pres1.mass(),_wK892m,_mK892m); } } // now compute the matrix element ME()(0,0,0,0)=amp; return norm(amp); } void DtoKPiPiE691::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // parameters output << "newdef " << name() << ":KmPipPipNonResonantMagnitude " << _a1NR << "\n"; output << "newdef " << name() << ":KmPipPipNonResonantPhase " << _phi1NR << "\n"; output << "newdef " << name() << ":KmPipPipK892Magnitude " << _a1K892 << "\n"; output << "newdef " << name() << ":KmPipPipK892Phase " << _phi1K892 << "\n"; output << "newdef " << name() << ":KmPipPipK1430Magnitude " << _a1K1430 << "\n"; output << "newdef " << name() << ":KmPipPipK1430Phase " << _phi1K1430 << "\n"; output << "newdef " << name() << ":KmPipPipK1680Magnitude " << _a1K1680 << "\n"; output << "newdef " << name() << ":KmPipPipK1680Phase " << _phi1K1680 << "\n"; output << "newdef " << name() << ":KmPipPi0NonResonantMagnitude " << _a2NR << "\n"; output << "newdef " << name() << ":KmPipPi0NonResonantPhase " << _phi2NR << "\n"; output << "newdef " << name() << ":KmPipPi0K8920Magnitude " << _a2K8920 << "\n"; output << "newdef " << name() << ":KmPipPi0K8920Phase " << _phi2K8920 << "\n"; output << "newdef " << name() << ":KmPipPi0K892mMagnitude " << _a2K892m << "\n"; output << "newdef " << name() << ":KmPipPi0K892mPhase " << _phi2K892m << "\n"; output << "newdef " << name() << ":KmPipPi0RhoMagnitude " << _a2rho << "\n"; output << "newdef " << name() << ":KmPipPi0RhoPhase " << _phi2rho << "\n"; output << "newdef " << name() << ":K0PipPimNonResonantMagnitude " << _a3NR << "\n"; output << "newdef " << name() << ":K0PipPimNonResonantPhase " << _phi3NR << "\n"; output << "newdef " << name() << ":K0PipPimK892Magnitude " << _a3K892 << "\n"; output << "newdef " << name() << ":K0PipPimK892Phase " << _phi3K892 << "\n"; output << "newdef " << name() << ":K0PipPimRhoMagnitude " << _a3rho << "\n"; output << "newdef " << name() << ":K0PipPimRhoPhase " << _phi3rho << "\n"; output << "newdef " << name() << ":LocalParameters " << _localparameters << "\n"; output << "newdef " << name() << ":K8920Mass " << _mK8920/GeV << "\n"; output << "newdef " << name() << ":K8920Width " << _wK8920/GeV << "\n"; output << "newdef " << name() << ":K892MinusMass " << _mK892m/GeV << "\n"; output << "newdef " << name() << ":K892MinusWidth " << _wK892m/GeV << "\n"; output << "newdef " << name() << ":K1680Mass " << _mK1680/GeV << "\n"; output << "newdef " << name() << ":K1680Width " << _wK1680/GeV << "\n"; output << "newdef " << name() << ":K1430Mass " << _mK1430/GeV << "\n"; output << "newdef " << name() << ":K1430Width " << _wK1430/GeV << "\n"; output << "newdef " << name() << ":Rho0Mass " << _mrho0 /GeV << "\n"; output << "newdef " << name() << ":Rho0Width " << _wrho0 /GeV << "\n"; output << "newdef " << name() << ":RhoPlusMass " << _mrhop /GeV << "\n"; output << "newdef " << name() << ":RhoPlusWidth " << _wrhop /GeV << "\n"; for(unsigned int ix=0;ix<_maxwgt.size();++ix) { output << "insert " << name() << ":MaximumWeights " << ix << " " << _maxwgt[ix] << "\n"; } for(unsigned int ix=0;ix<_weights.size();++ix) { output << "insert " << name() << ":Weights " << ix << " " << _weights[ix] << "\n"; } if(header) { output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } } void DtoKPiPiE691::doinitrun() { DecayIntegrator::doinitrun(); _weights.resize(mode(0)->numberChannels()+mode(1)->numberChannels()+ mode(2)->numberChannels()); _maxwgt.resize(3); unsigned int iy=0; for(unsigned int ix=0;ix<3;++ix) { _maxwgt[ix]=mode(ix)->maxWeight(); for(unsigned int iz=0;iz<mode(ix)->numberChannels();++iz) { _weights[iy]=mode(ix)->channelWeight(iz); ++iy; } } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/EtaPiPiPiDecayer.cc�������������������������������������������0000644�0001750�0001750�00000034403�11754474774�023627� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // EtaPiPiPiDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the EtaPiPiPiDecayer class. // #include "EtaPiPiPiDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "Herwig++/PDT/ThreeBodyAllOn1IntegralCalculator.h" #include "Herwig++/PDT/OneOffShellCalculator.h" using namespace Herwig; using namespace ThePEG::Helicity; void EtaPiPiPiDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) if(mode(ix)) _maxweight[ix] = mode(ix)->maxWeight(); } } EtaPiPiPiDecayer::EtaPiPiPiDecayer() : _incoming(6), _outgoing(6), _charged(6), _prefactor(6), _a(6), _b(6), _c(6), _maxweight(6) { // eta to pi+pi-pi0 _incoming[0] = 221; _outgoing[0] = 111; _charged[0] = true; _prefactor[0] = 0.06477; _maxweight[0] = 1.72861; _a[0] = -1.17; _b[0] = 0.21; _c[0] = 0.06; // eta to pi0pi0pi0 _incoming[1] = 221; _outgoing[1] = 111; _charged[1] = false; _prefactor[1] = 0.0883547; _maxweight[1] = 1.45813; _a[1] = 0.; _b[1] = -0.062; _c[1] = -0.062; // eta' to pi+pi-pi0 _incoming[2] = 331; _outgoing[2] = 111; _charged[2] = true; _prefactor[2] = 0.037165; _maxweight[2] = 0.0153201; _a[2] = -3.08; _b[2] = 0.13; _c[2] = 0.62; // eta' to pi0pi0pi0 _incoming[3] = 331; _outgoing[3] = 111; _charged[3] = false; _prefactor[3] = 0.016203; _maxweight[3] = 2.52411; _a[3] = 0.0; _b[3] = -0.86; _c[3] = -0.86; // eta' to pi+pi-eta _incoming[4] = 331; _outgoing[4] = 221; _charged[4] = true; _prefactor[4] = 49.42; _maxweight[4] = 1.421; _a[4] = -0.093; _b[4] = -0.059; _c[4] = -0.003; // eta' to pi0pi0eta _incoming[5] = 331; _outgoing[5] = 221; _charged[5] = false; _prefactor[5] = 20.62; _maxweight[5] = 1.42649; _a[5] = -0.105; _b[5] = -0.065; _c[5] = -0.004; // initial size of the arrays _initsize=_maxweight.size(); // intermediates generateIntermediates(false); } void EtaPiPiPiDecayer::doinit() { DecayIntegrator::doinit(); // check consistency of the parameters unsigned int isize(_incoming.size()); if(isize!=_outgoing.size()||isize!=_prefactor.size()|| isize!=_charged.size()||isize!=_a.size()|| isize!=_b.size()||isize!=_c.size()||isize!=_maxweight.size()) throw InitException() << "Inconsistent parameters in EtaPiPiPiDecayer::doinit()" << Exception::runerror; // external particles for the modes tPDVector extneut(4),extcharged(4); extneut[1] = getParticleData(ParticleID::pi0); extneut[2] = getParticleData(ParticleID::pi0); extcharged[1] = getParticleData(ParticleID::piplus); extcharged[2] = getParticleData(ParticleID::piminus); tPDPtr rho(getParticleData(113)); DecayPhaseSpaceModePtr mode; DecayPhaseSpaceChannelPtr newchannel; vector<double> dummyweights(1,1.); for(unsigned int ix=0;ix<_incoming.size();++ix) { extneut[0] = getParticleData(_incoming[ix]); extcharged[0] = getParticleData(_incoming[ix]); extneut[3] = getParticleData(_outgoing[ix]); extcharged[3] = getParticleData(_outgoing[ix]); if(_charged[ix]) { // the pi+pi- mode mode = new_ptr(DecayPhaseSpaceMode(extcharged,this)); newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extcharged[0],0, 0.0,-1,3); newchannel->addIntermediate(rho,1,0.0, 1,2); mode->addChannel(newchannel); } else { // the pi0pi0 mode mode = new_ptr(DecayPhaseSpaceMode(extneut,this)); newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extneut[0],0, 0.0,-1,3); newchannel->addIntermediate(rho,1,0.0, 1,2); mode->addChannel(newchannel); } addMode(mode,_maxweight[ix],dummyweights); } resetIntermediate(rho,600.*MeV,600.*MeV); } int EtaPiPiPiDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=3) return -1; unsigned int npi0(0),npip(0),npim(0); int id,iother(0); tPDVector::const_iterator pit = children.begin(); for( ;pit!=children.end();++pit) { id=(**pit).id(); if(id==ParticleID::piplus) ++npip; else if(id==ParticleID::piminus) ++npim; else if(id==ParticleID::pi0&&npi0<2) ++npi0; else iother=id; } bool charged; if(npim==1&&npip==1) { charged=true; if(npi0==1) iother=ParticleID::pi0; } else if(npi0==2) charged=false; else return -1; // find the mode id=parent->id(); unsigned int ix(0); int imode(-1); do { if(id==_incoming[ix]&&iother==_outgoing[ix]&&_charged[ix]==charged) imode=ix; ++ix; } while(imode<0&&ix<_incoming.size()); cc=false; return imode; } void EtaPiPiPiDecayer::persistentOutput(PersistentOStream & os) const { os << _incoming << _outgoing << _charged << _prefactor << _a << _b << _c << _maxweight; } void EtaPiPiPiDecayer::persistentInput(PersistentIStream & is, int) { is >> _incoming >> _outgoing >> _charged >> _prefactor >> _a >> _b >> _c >> _maxweight; } ClassDescription<EtaPiPiPiDecayer> EtaPiPiPiDecayer::initEtaPiPiPiDecayer; // Definition of the static class description member. void EtaPiPiPiDecayer::Init() { static ClassDocumentation<EtaPiPiPiDecayer> documentation ("The EtaPiPiPiDecayer class performs the decay of a scalar meson to" " two pions and another meson using a simple paramterisation of the dalitz plot.", "The decay of eta to two pions follows \\cite{Beisert:2003zs,Gormley:1970qz,Tippens:2001fm}.", "%\\cite{Beisert:2003zs}\n" "\\bibitem{Beisert:2003zs}\n" " N.~Beisert and B.~Borasoy,\n" " %``Hadronic decays of eta and eta' with coupled channels,''\n" " Nucl.\\ Phys.\\ A {\\bf 716}, 186 (2003)\n" " [arXiv:hep-ph/0301058].\n" " %%CITATION = NUPHA,A716,186;%%\n" "%\\cite{Gormley:1970qz}\n" "\\bibitem{Gormley:1970qz}\n" " M.~Gormley, E.~Hyman, W.~Y.~Lee, T.~Nash, J.~Peoples, C.~Schultz and S.~Stein,\n" " ``Experimental determination of the dalitz-plot distribution of the decays\n" " eta $\\to$ pi+ pi- pi0 and eta $\\to$ pi+ pi- gamma, and the branching ratio\n" " %eta $\\to$ pi+ pi- gamma/eta $\\to$ pi+,''\n" " Phys.\\ Rev.\\ D {\\bf 2}, 501 (1970).\n" " %%CITATION = PHRVA,D2,501;%%\n" "%\\cite{Tippens:2001fm}\n" "\\bibitem{Tippens:2001fm}\n" " W.~B.~Tippens {\\it et al.} [Crystal Ball Collaboration],\n" " %``Determination of the quadratic slope parameter in eta $\\to$ 3pi0 decay,''\n" " Phys.\\ Rev.\\ Lett.\\ {\\bf 87}, 192001 (2001).\n" " %%CITATION = PRLTA,87,192001;%%\n" ); static ParVector<EtaPiPiPiDecayer,int> interfaceIncoming ("Incoming", "The PDG code of the incoming particle", &EtaPiPiPiDecayer::_incoming, -1, 0, 0, 1000000, false, false, true); static ParVector<EtaPiPiPiDecayer,int> interfaceOutgoing ("Outgoing", "The PDG code of the outgoing particle", &EtaPiPiPiDecayer::_outgoing, -1, 0, 0, 1000000, false, false, true); static ParVector<EtaPiPiPiDecayer,bool> interfaceCharged ("Charged", "Whether the pions or charged or neutral", &EtaPiPiPiDecayer::_charged, -1,false, 0, 0, false, false, false); static ParVector<EtaPiPiPiDecayer,double> interfacePrefactor ("Prefactor", "The prefactor for the decay to get the correct partial width", &EtaPiPiPiDecayer::_prefactor, -1,1.0, 0, 0, false, false, false); static ParVector<EtaPiPiPiDecayer,double> interfacea ("a", "The a parameter for the dalitz plot", &EtaPiPiPiDecayer::_a, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<EtaPiPiPiDecayer,double> interfaceb ("b", "The b parameter for the dalitz plot", &EtaPiPiPiDecayer::_b, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<EtaPiPiPiDecayer,double> interfacec ("c", "The c parameter for the dalitz plot", &EtaPiPiPiDecayer::_c, -1, 0.0, -10.0, 10.0, false, false, true); static ParVector<EtaPiPiPiDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &EtaPiPiPiDecayer::_maxweight, 0, 0, 0, 0., 200., false, false, true); } double EtaPiPiPiDecayer::me2(const int,const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { useMe(); if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin0,PDT::Spin0,PDT::Spin0)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); for(unsigned int ix=0;ix<3;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return 0.; } // calculate the matrix element // compute the variables we need Lorentz5Momentum ps(inpart.momentum()-decay[2]->momentum());ps.rescaleMass(); Lorentz5Momentum pu(inpart.momentum()-decay[0]->momentum());pu.rescaleMass(); Lorentz5Momentum pt(inpart.momentum()-decay[1]->momentum());pt.rescaleMass(); Energy2 s(ps.mass2()),u(pu.mass2()),t(pt.mass2()); Energy m34(0.5*(decay[0]->mass()+decay[1]->mass())); Energy msum(decay[2]->mass()+2.*m34); Energy Q(inpart.mass()-msum); Energy2 Mmm2((inpart.mass()-decay[2]->mass())*(inpart.mass()-decay[2]->mass())); // compute the variables double x(0.5*sqrt(3.)*(u-t)/inpart.mass()/Q),x2(x*x); double y(0.5*msum/inpart.mass()*(Mmm2-s)/m34/Q-1),y2(y*y); double me(_prefactor[imode()]*(1+_a[imode()]*y+_b[imode()]*y2+_c[imode()]*x2)); ME()(0,0,0,0)=sqrt(me); return me; } InvEnergy EtaPiPiPiDecayer::threeBodydGammads(const int imodeb, const Energy2 q2, const Energy2 s, const Energy m1, const Energy m2, const Energy m3) const { Energy q(sqrt(q2)),m34(m1+m2),msum(m34+m3),Q(q-msum); Energy2 Mmm2((q-m3)*(q-m3)),m12(m1*m1),m22(m2*m2),m32(m3*m3); double y(0.5*msum/q*(Mmm2-s)/m34/Q-1),y2(y*y); InvEnergy2 xfact=0.5*sqrt(3.)/q/Q; Energy2 xc(q2+m12+m22+m32-s); Energy rs(sqrt(s)),e2star(0.5*(s-m12+m22)/rs),e3star(0.5*(q2-s-m32)/rs); Energy e2sm(sqrt(e2star*e2star-m22)),e3sm(sqrt(e3star*e3star-m32)); Energy2 a(2*e2star*e3star+m22+m32),b(2*e2sm*e3sm); Energy2 output=2*b*(1+_a[imodeb]*y+_b[imodeb]*y2+_c[imodeb]*xfact*xfact*(xc*xc)) +_c[imodeb]*(-8.*xfact*xfact*xc*a*b +4.*2*b*(3.*a*a+b*b)/3.*xfact*xfact); using Constants::pi; return output*_prefactor[imodeb]/256./pi/pi/pi/q2/q; } WidthCalculatorBasePtr EtaPiPiPiDecayer::threeBodyMEIntegrator(const DecayMode & dm) const { int idout(0),id,imode(-1); unsigned int npi0(0),ix(0); ParticleMSet::const_iterator pit(dm.products().begin()); for( ;pit!=dm.products().end();++pit) { id=(**pit).id(); if(id==ParticleID::pi0&&npi0<2) ++npi0; else if(id!=ParticleID::piplus&&id!=ParticleID::piminus) idout=id; } if(npi0==1) idout=ParticleID::pi0; bool charged(npi0<2); id=dm.parent()->id(); do { if(id==_incoming[ix]&&idout==_outgoing[ix]&&_charged[ix]==charged) imode=ix; ++ix; } while(imode<0&&ix<_incoming.size()); Energy mpi; if(charged){mpi=getParticleData(ParticleID::piplus)->mass();} else{mpi=getParticleData(ParticleID::pi0)->mass();} Energy m[3]={mpi,mpi,getParticleData(_outgoing[imode])->mass()}; WidthCalculatorBasePtr temp(new_ptr(ThreeBodyAllOn1IntegralCalculator<EtaPiPiPiDecayer> (1,-1000.*MeV,ZERO,0.0,*this,imode,m[0],m[1],m[2]))); if(_outgoing[imode]==ParticleID::eta) { tcGenericMassGeneratorPtr test; tGenericMassGeneratorPtr massptr; if(getParticleData(_outgoing[imode])->massGenerator()) { test=dynamic_ptr_cast<tcGenericMassGeneratorPtr> (getParticleData(_outgoing[imode])->massGenerator()); massptr=const_ptr_cast<tGenericMassGeneratorPtr>(test); } if(massptr) { massptr->init(); return new_ptr(OneOffShellCalculator(3,temp,massptr,ZERO)); } } return temp; } void EtaPiPiPiDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":Outgoing " << ix << " " << _outgoing[ix] << "\n"; output << "newdef " << name() << ":Charged " << ix << " " << _charged[ix] << "\n"; output << "newdef " << name() << ":Prefactor " << ix << " " << _prefactor[ix] << "\n"; output << "newdef " << name() << ":a " << ix << " " << _a[ix] << "\n"; output << "newdef " << name() << ":b " << ix << " " << _b[ix] << "\n"; output << "newdef " << name() << ":c " << ix << " " << _c[ix] << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":Outgoing " << ix << " " << _outgoing[ix] << "\n"; output << "insert " << name() << ":Charged " << ix << " " << _charged[ix] << "\n"; output << "insert " << name() << ":Prefactor " << ix << " " << _prefactor[ix] << "\n"; output << "insert " << name() << ":a " << ix << " " << _a[ix] << "\n"; output << "insert " << name() << ":b " << ix << " " << _b[ix] << "\n"; output << "insert " << name() << ":c " << ix << " " << _c[ix] << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/SemiLeptonicScalarDecayer.h�����������������������������������0000644�0001750�0001750�00000014465�11754474774�025434� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SemiLeptonicScalarDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SemiLeptonicScalarDecayer_H #define HERWIG_SemiLeptonicScalarDecayer_H // // This is the declaration of the SemiLeptonicScalarDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/FormFactors/ScalarFormFactor.h" #include "Herwig++/Decay/WeakCurrents/LeptonNeutrinoCurrent.h" #include "ThePEG/Helicity/LorentzTensor.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>SemiLeptonicScalarDecayer</code> class is designed for the * semileptonic decay of a (pesudo)scalar meson to another meson and a * lepton/neutino pair. * * This class implements the matrix element in a general form with form-factors * for the hadronic current. These form-factor are specified using a ScalarFormFactor * class and the leptonic part of the decay uses the LeptonNeutrinoCurrent. * * @see DecayIntegrator * @see ScalarFormFactor * @see LeptonNeutrinoCurrent * */ class SemiLeptonicScalarDecayer: public DecayIntegrator { public: /** * Default constructor. */ SemiLeptonicScalarDecayer(); /** * Check if this decayer can perfom the decay for a particular mode. * Uses the modeNumber member but can be overridden * @param parent The decaying particle * @param children The decay products */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const ; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2( const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<SemiLeptonicScalarDecayer> initSemiLeptonicScalarDecayer; /** * Private and non-existent assignment operator. */ SemiLeptonicScalarDecayer & operator=(const SemiLeptonicScalarDecayer &); private: /** * The leptonic current */ LeptonNeutrinoCurrentPtr _current; /** * The form factor */ ScalarFormFactorPtr _form; /** * the maximum weight for the integration of a given decay */ vector<double> _maxwgt; /** * mapping of the mode to the form factor */ vector<int> _modemap; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the decay products */ mutable vector<Helicity::LorentzPolarizationVector> _vectors; /** * Polarization vectors for the decay products */ mutable vector<Helicity::LorentzTensor<double> > _tensors; /** * Constants for the mapping of the leptonic current */ mutable vector<unsigned int> _constants; /** * Spins of the particles */ mutable vector<PDT::Spin> _ispin; /** * Location of the outgoing meson */ mutable unsigned int _imes; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SemiLeptonicScalarDecayer. */ template <> struct BaseClassTrait<Herwig::SemiLeptonicScalarDecayer,1> { /** Typedef of the base class of SemiLeptonicScalarDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SemiLeptonicScalarDecayer> : public ClassTraitsBase<Herwig::SemiLeptonicScalarDecayer> { /** Return the class name. */ static string className() { return "Herwig::SemiLeptonicScalarDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SemiLeptonicScalarDecayer_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/ScalarVectorVectorDecayer.cc����������������������������������0000644�0001750�0001750�00000025055�11754474774�025621� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ScalarVectorVectorDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ScalarVectorVectorDecayer class. // #include "ScalarVectorVectorDecayer.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; void ScalarVectorVectorDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) if(mode(ix)) _maxweight[ix] = mode(ix)->maxWeight(); } } ScalarVectorVectorDecayer::ScalarVectorVectorDecayer() : _incoming(13), _outgoing1(13), _outgoing2(13), _coupling(13), _maxweight(13) { // f_0(1370) to rho rho _incoming[0] = 10221; _outgoing1[0] = 113; _outgoing2[0] = 113; _coupling[0] = 11.26/GeV; _maxweight[0] = 20.; _incoming[1] = 10221; _outgoing1[1] = 213; _outgoing2[1] = -213; _coupling[1] = 15.92/GeV; _maxweight[1] = 20.; // f_0(1500) to rho rho _incoming[2] = 9030221; _outgoing1[2] = 113; _outgoing2[2] = 113; _coupling[2] = 1.691/GeV; _maxweight[2] = 20.; _incoming[3] = 9030221; _outgoing1[3] = 213; _outgoing2[3] = -213; _coupling[3] = 2.391/GeV; _maxweight[3] = 20.; // chi_c0 decays _incoming[4] = 10441; _outgoing1[4] = 443; _outgoing2[4] = 22; _coupling[4] = 0.251/GeV; _maxweight[4] = 1.; _incoming[5] = 10441; _outgoing1[5] = 323; _outgoing2[5] = -323; _coupling[5] = 0.0088/GeV; _maxweight[5] = 1.; _incoming[6] = 10441; _outgoing1[6] = 313; _outgoing2[6] = -313; _coupling[6] = 0.0088/GeV; _maxweight[6] = 1.; _incoming[7] = 10441; _outgoing1[7] = 333; _outgoing2[7] = 333; _coupling[7] = 0.0067/GeV; _maxweight[7] = 1.; _incoming[8] = 10441; _outgoing1[8] = 22; _outgoing2[8] = 22; _coupling[8] = 0.0027/GeV; _maxweight[8] = 1.; _incoming[12] = 10441; _outgoing1[12] = 223; _outgoing2[12] = 223; _coupling[12] = 0.0093/GeV; _maxweight[12] = 1.; // a'_0 -> omega rho _incoming[9] = 10111; _outgoing1[9] = 113; _outgoing2[9] = 223; _coupling[9] = 27.09/GeV; _maxweight[9] = 20.; _incoming[10] = 10211; _outgoing1[10] = 213; _outgoing2[10] = 223; _coupling[10] = 27.09/GeV; _maxweight[10] = 20.; _incoming[11] =-10211; _outgoing1[11] =-213; _outgoing2[11] = 223; _coupling[11] = 27.09/GeV; _maxweight[11] = 20.; // size of arrays _initsize = _incoming.size(); // intermediates generateIntermediates(false); } void ScalarVectorVectorDecayer::doinit() { DecayIntegrator::doinit(); // check the parameters arew consistent unsigned int isize(_coupling.size()); if(isize!=_incoming.size() || isize!=_outgoing1.size()|| isize!=_outgoing2.size() || isize!=_maxweight.size()) throw InitException() << "Inconsistent parameters in " << "ScalarVectorVectorDecayerDecayer" << Exception::abortnow; // set up the integration channels vector<double> wgt; DecayPhaseSpaceModePtr mode; tPDVector extpart(3); for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0] = getParticleData(_incoming[ix]); extpart[1] = getParticleData(_outgoing1[ix]); extpart[2] = getParticleData(_outgoing2[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } int ScalarVectorVectorDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { cc = false; // check that at least some modes exist // must be two outgoing particles if(_incoming.size()==0||children.size()!=2) return -1; // ids of the particles int id0(parent->id()); int id1(children[0]->id()); int id2(children[1]->id()); // loop over the modes and see if this is one of them unsigned int ix=0; int imode(-1); do { if(_incoming[ix]==id0) { if((_outgoing1[ix]==id1&&_outgoing2[ix]==id2)|| (_outgoing1[ix]==id2&&_outgoing2[ix]==id1)) imode=ix; } ++ix; } while(imode<0&&ix<_incoming.size()); return imode; } void ScalarVectorVectorDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_coupling,1/GeV) << _incoming << _outgoing1 << _outgoing2 << _maxweight; } void ScalarVectorVectorDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_coupling,1/GeV) >> _incoming >> _outgoing1 >> _outgoing2 >> _maxweight; } ClassDescription<ScalarVectorVectorDecayer> ScalarVectorVectorDecayer::initScalarVectorVectorDecayer; // Definition of the static class description member. void ScalarVectorVectorDecayer::Init() { static ClassDocumentation<ScalarVectorVectorDecayer> documentation ("The ScalarVectorVectorDecayer class is designed for" " the decay of a pseduoscalar meson to two spin-1 particles."); static ParVector<ScalarVectorVectorDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &ScalarVectorVectorDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<ScalarVectorVectorDecayer,int> interfaceOutcoming1 ("FirstOutgoing", "The PDG code for the first outgoing particle", &ScalarVectorVectorDecayer::_outgoing1, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<ScalarVectorVectorDecayer,int> interfaceOutcoming2 ("SecondOutgoing", "The PDG code for the second outgoing particle", &ScalarVectorVectorDecayer::_outgoing2, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<ScalarVectorVectorDecayer,InvEnergy> interfaceCoupling ("Coupling", "The coupling for the decay mode", &ScalarVectorVectorDecayer::_coupling, 1/GeV, 0, ZERO, ZERO, 10000/GeV, false, false, true); static ParVector<ScalarVectorVectorDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &ScalarVectorVectorDecayer::_maxweight, 0, 0, 0, 0., 500000., false, false, true); } double ScalarVectorVectorDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { bool photon[2]={false,false}; for(unsigned int ix=0;ix<2;++ix) photon[ix] = decay[ix]->id()==ParticleID::gamma; if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin1,PDT::Spin1)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction::constructSpinInfo(_vectors[ix],decay[ix], outgoing,true,photon[ix]); return 0.; } for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction:: calculateWaveFunctions(_vectors[ix],decay[ix],outgoing,photon[ix]); // now compute the matrix element InvEnergy2 fact(_coupling[imode()]/inpart.mass()); Energy2 p1p2(decay[0]->momentum()*decay[1]->momentum()); unsigned int ix,iy; for(ix=0;ix<3;++ix) { for(iy=0;iy<3;++iy) { ME()(0,ix,iy)=fact*(p1p2*_vectors[0][ix].dot(_vectors[1][iy])- (_vectors[1][iy]*decay[0]->momentum())* (_vectors[0][ix]*decay[1]->momentum())); } } // test of the matrix element // double me = newME.contract(rhoin).real(); // Energy pcm=Kinematics::pstarTwoBodyDecay(inpart.mass(),decay[0]->mass(), // decay[1]->mass()); // double test = sqr(_coupling[imode()]/inpart.mass())* // (2.*sqr(pcm*inpart.mass())+3.*sqr(decay[0]->mass()*decay[1]->mass())); // cerr << "testing matrix element for " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << me << " " << test << " " << (me-test)/(me+test) << "\n"; return ME().contract(_rho).real(); } // output the setup info for the particle database void ScalarVectorVectorDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":FirstOutgoing " << ix << " " << _outgoing1[ix] << "\n"; output << "newdef " << name() << ":SecondOutgoing " << ix << " " << _outgoing2[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":FirstOutgoing " << ix << " " << _outgoing1[ix] << "\n"; output << "insert " << name() << ":SecondOutgoing " << ix << " " << _outgoing2[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } // specify the 1-2 matrix element to be used in the running width calculation bool ScalarVectorVectorDecayer::twoBodyMEcode(const DecayMode & dm, int & itype, double & coupling) const { int imode(-1); int id(dm.parent()->id()); ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id());++pit; int id2((**pit).id()); unsigned int ix(0); do { if(_incoming[ix]==id) { if((id1==_outgoing1[ix]&&id2==_outgoing2[ix])|| (id2==_outgoing1[ix]&&id1==_outgoing2[ix])) imode=ix; } ++ix; } while(imode<0&&ix<_incoming.size()); coupling=_coupling[imode]*dm.parent()->mass(); itype = 12; return id1==_outgoing1[imode]&&id2==_outgoing2[imode]; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/EtaPiPiGammaDecayer.h�����������������������������������������0000644�0001750�0001750�00000027410�11754474774�024143� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // EtaPiPiGammaDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_EtaPiPiGammaDecayer_H #define HERWIG_EtaPiPiGammaDecayer_H // This is the declaration of the EtaPiPiGammaDecayer class. #include "Herwig++/Utilities/Kinematics.h" #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/Utilities/Interpolator.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>EtaPiPiGammaDecayer</code> class implements the decay of * the \f$\eta\f$ or \f$\eta'\f$ to \f$\pi^+\pi^-\gamma\f$ using either * a VMD type model or a model using either the theoretical or experimental * form of the Omnes function taken from hep-ph/0112150. * * The matrix element is given by * \f[\mathcal{M} = B(s_{+-},s_{+\gamma},s_{-\gamma})\epsilon^{\mu\nu\alpha\beta} * \epsilon^*_{\mu}p_{+\nu}p_{-\alpha}p_{\gamma\beta}\f] * where \f$p_{+,-}\f$ are the momenta of the positively and negatively charged pions, * \f$p_{\gamma}\f$ is the momentum of the photon and \f$s_{ij} = (p_i+p_j)^2\f$. * * The different models take * * \f[B(s_{+-},s_{+\gamma},s_{-\gamma}) = * B_0\left(1+\frac32\frac{s_{+-}}{M^2_\rho-s_{+-}-iM_\rho\Gamma_\rho(s_{+-})}\right)\f] * where \f$M_\rho\f$ and \f$\Gamma_\rho\f$ are the mass and running width * of the \f$\rho\f$ * respectively for the VMD model. * * For the Omnes function case we take * * \f[B(s_{+-},s_{+\gamma},s_{-\gamma}) = * B_0\left(1-c+c\frac{1+as_{+-}}{D_1(s_{+-})}\right)\f] * either the experimental or analytic form of the Omnes function \f$D_1(s_{+-})\f$ * taken from hep-ph/0112150 can be used. * * The coefficient \f$B_0\f$ is given in hep-ph/0112150. We use the values from this * paper and use their default choice \f$c=1\f$, \f$a=\frac1{2M_\rho}\f$. * * @see DecayIntegrator * */ class EtaPiPiGammaDecayer: public DecayIntegrator { public: /** * Default constructor. */ EtaPiPiGammaDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 body partial width. * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; /** * The matrix element to be integrated for the three-body decays as a function * of the invariant masses of pairs of the outgoing particles. * @param imode The mode for which the matrix element is needed. * @param q2 The scale, \e i.e. the mass squared of the decaying particle. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The matrix element */ virtual double threeBodyMatrixElement(const int imode,const Energy2 q2, const Energy2 s3,const Energy2 s2, const Energy2 s1,const Energy m1, const Energy m2,const Energy m3) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<EtaPiPiGammaDecayer> initEtaPiPiGammaDecayer; /** * Private and non-existent assignment operator. */ EtaPiPiGammaDecayer & operator=(const EtaPiPiGammaDecayer &); private: /** * The analytic Omnes function, \f$D_1^{\rm anal}(s)\f$. * @param s The scale \f$s\f$. * @return The analytic Omnes function. */ Complex analyticOmnes(Energy2 s) const { Energy2 mpi2(_mpi*_mpi),mrho2(_mrho*_mrho); double root, pi2 = sqr(Constants::pi); Complex f,ii(0.,1.); double pre(mpi2/12./pi2/_fpi/_fpi); if(s>4.*mpi2) { // real piece root=sqrt(1.-4.*mpi2/s); f=(1.-0.25*s/mpi2)*root*log((root+1.)/(-root+1.))-2.; f *=pre; // imaginary piece f += ii*s/mrho2*_rhoconst/8.*pow(root,3); } else { root=sqrt(4.*mpi2/s-1.); f=2.*(1.-0.25*s/mpi2)*root*atan2(1.,root)-2.; f *=pre; } return 1.-s/mrho2-s/48./pi2/_fpi/_fpi*log(mrho2/mpi2)-f; } /** * The experimental Omnes function, \f$D_1^{\rm exp}(s)\f$. * @param s The scale \f$s\f$. * @return The experimental Omnes function. */ Complex experimentalOmnes(Energy2 s) const { if(!_oreal) { _oreal = make_InterpolatorPtr(_omnesfunctionreal,_omnesenergy,3); _oimag = make_InterpolatorPtr(_omnesfunctionimag,_omnesenergy,3); } Energy q(sqrt(s)); Complex ii(0.,1.); return (*_oreal)(q)+ii*(*_oimag)(q); } private: /** * the pion decay constant, \f$F_\pi\f$. */ Energy _fpi; /** * the PDG code for the incoming particle */ vector<int> _incoming; /** * Coupling for the decay, \f$B_0\f$. */ vector<double> _coupling; /** * The maximum weight */ vector<double> _maxweight; /** * The option for the energy dependence of the prefactor */ vector<int> _option; /** * The constants for the omnes function form. */ InvEnergy2 _aconst; /** * The constants for the Omnes function form. */ double _cconst; /** * The \f$\rho\f$ mass */ Energy _mrho; /** * The \f$\rho\f$ width */ Energy _rhowidth; /** * Constant for the running \f$rho\f$ width. */ double _rhoconst; /** * The \f$m_\pi\f$. */ Energy _mpi; /** * Use local values of the parameters. */ bool _localparameters; /** * Energy values for the experimental data on the phase shift */ vector<Energy> _energy; /** * Experimental values of the phase shift */ vector<double> _phase; /** * Energy values for the interpolation table for the Omnes function. */ vector<Energy> _omnesenergy; /** * Real part of the Omnes function for the interpolation table */ vector<double> _omnesfunctionreal; /** * Imaginary part of the Omnes function for the interpolation table */ vector<double> _omnesfunctionimag; /** * set up of the interpolation table */ bool _initialize; /** * Number of points for the intepolation of the experimental Omnes function */ unsigned int _npoints; /** * Interpolators for the experimental Omnes function. */ //@{ /** * The interpolator for the real part */ mutable Interpolator<double,Energy>::Ptr _oreal; /** * The interpolator for the imaginary part */ mutable Interpolator<double,Energy>::Ptr _oimag; //@} /** * Cut-off parameter for the integral of the experimental function */ Energy _epscut; /** * Size of the vectors for the experimental data */ unsigned int _nsizea; /** * Size of the vectors for the interpolation tables */ unsigned int _nsizeb; /** * Spin densit matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the photon */ mutable vector<Helicity::LorentzPolarizationVector> _vectors; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ template <> /** * The following template specialization informs ThePEG about the * base class of EtaPiPiGammaDecayer. */ struct BaseClassTrait<Herwig::EtaPiPiGammaDecayer,1> { /** Typedef of the base class of EtaPiPiGammaDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; template <> /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ struct ClassTraits<Herwig::EtaPiPiGammaDecayer> : public ClassTraitsBase<Herwig::EtaPiPiGammaDecayer> { /** Return the class name.*/ static string className() { return "Herwig::EtaPiPiGammaDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } namespace Herwig { /** * A simple struct to provide the integrand for the integral * \f[\int^\infty_{4m^2_\pi}\frac{ds'\delta_1(s')}{s'(s'-s-i\epsilon)}\f] */ struct OmnesIntegrand { /** * constructor with the interpolator and precision * @param inter The interpolator for the phase shift * @param cut The cut-off */ OmnesIntegrand(Interpolator<double,Energy>::Ptr inter, Energy2 cut) { _interpolator=inter; _precision=cut; } /** * Set the scale */ void setScale(Energy2 in) { _s=in;} /** * get the value */ InvEnergy4 operator ()(Energy2 xpoint) const { InvEnergy4 output = InvEnergy4(); Energy q(sqrt(xpoint)); if(abs(xpoint-_s)>_precision) output= (*_interpolator)(q)/xpoint/(xpoint-_s); return output; } /** Return type for the GaussianIntegrator */ typedef InvEnergy4 ValType; /** Argument type for the GaussianIntegrator */ typedef Energy2 ArgType; /** * The interpolator */ Interpolator<double,Energy>::Ptr _interpolator; /** * The scale */ Energy2 _s; /** * The precision. */ Energy2 _precision; }; } #endif /* HERWIG_EtaPiPiGammaDecayer_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/DtoKPiPiCLEO.h������������������������������������������������0000644�0001750�0001750�00000033406�11754474774�022500� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DtoKPiPiCLEO.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DtoKPiPiCLEO_H #define HERWIG_DtoKPiPiCLEO_H // // This is the declaration of the DtoKPiPiCLEO class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" namespace Herwig { using namespace ThePEG; /** * The documentation of the DtoKPiPiCLEO class implements the Dalitz plot fits * of the CLEO collaboration for \f$D^0\to\bar{K}^0\pi^+\pi^-\f$, * Phys. Rev. Lett. 89 (2002) 251802, * and \f$D^0\to K^-\pi^+\pi^0\f$, Phys. Rev. D63 (2001) 092001. * * @see \ref DtoKPiPiCLEOInterfaces "The interfaces" * defined for DtoKPiPiCLEO. */ class DtoKPiPiCLEO: public DecayIntegrator { public: /** * The default constructor. */ DtoKPiPiCLEO(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2( const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); protected: /** * Calculate the amplitude for a resonance * @param ispin The spin of the intermediate resonance * @param f0 Whether to use the special form of the propagator for the \f$f_0(980)\f$. * @param mD The mass of the decaying particle * @param mA The mass of the first decay product * @param mB The mass of the second decay product * @param mC The mass of the third decay product * @param mAB The mass of the pair AB * @param mAC The mass of the pair AC * @param mBC The mass of the pair BC * @param mres The on-shell mass of the intermediate resonance * @param wres The width of the intermediate resonance */ Complex amplitude(int ispin, bool f0, Energy mD, Energy mA , Energy mB , Energy mC , Energy mAB, Energy mAC, Energy mBC, Energy mres, Energy wres) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<DtoKPiPiCLEO> initDtoKPiPiCLEO; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DtoKPiPiCLEO & operator=(const DtoKPiPiCLEO &); private: /** * Mass, Widths and related parameters */ //@{ /** * Whether to use local values for the masses and widths or * those from the ParticleData objects */ bool _localparameters; /** * Mass of the \f$\omega\f$ */ Energy _momega; /** * Width of the \f$\omega\f$ */ Energy _womega; /** * Mass of the \f$f_0(980)\f$ */ Energy _mf980; /** * Width of the \f$f_0(980)\f$ */ Energy _wf980; /** * \f$g_\pi\f$ coupling for the \f$f_0(980)\f$ width */ double _gpi; /** *\f$g_K\f$ coupling for the \f$f_0(980)\f$ width */ double _gK; /** * Option for handling the width of the \f$f_0(980)\f$ */ bool _f0opt; /** * Mass of the \f$f_2(1270)\f$ */ Energy _mf2; /** * Width of the \f$f_2(1270)\f$ */ Energy _wf2; /** * Mass of the \f$f_0(1370)\f$ */ Energy _mf1370; /** * Width of the \f$f_0(1370)\f$ */ Energy _wf1370; /** * Mass of the \f$K_0^*(1430)\f$ */ Energy _mK14300; /** * Width of the \f$K_0^*(1430)\f$ */ Energy _wK14300; /** * Mass of the \f$K_2^*(1430)\f$ */ Energy _mK14302; /** * Width of the \f$K_2^*(1430)\f$ */ Energy _wK14302; /** * Mass of the \f$K^*(1680)\f$ */ Energy _mK1680; /** * Width of the \f$K^*(1680)\f$ */ Energy _wK1680; /** * Mass of the \f$\rho(1700)\f$ */ Energy _mrho1700; /** * Width of the \f$\rho(1700)\f$ */ Energy _wrho1700; /** * Mass of the \f$K^{*0}(892)\f$ */ Energy _mK8920; /** * Width of the \f$K^{*0}(892)\f$ */ Energy _wK8920; /** * Mass of the \f$K^{*+}(892)\f$ for \f$D^0\to K^-\pi^+\pi^0\f$ */ Energy _mK892A; /** * Width of the \f$K^{*+}(892)\f$ for \f$D^0\to K^-\pi^+\pi^0\f$ */ Energy _wK892A; /** * Mass of the \f$K^{*+}(892)\f$ for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ Energy _mK892B; /** * Width of the \f$K^{*+}(892)\f$ for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ Energy _wK892B; /** * Mass of the \f$\rho(770)\f$ for \f$D^0\to K^-\pi^+\pi^0\f$ */ Energy _mrhoA; /** * Width of the \f$\rho(770)\f$ for \f$D^0\to K^-\pi^+\pi^0\f$ */ Energy _wrhoA; /** * Mass of the \f$\rho(770)\f$ for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ Energy _mrhoB; /** * Width of the \f$\rho(770)\f$ for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ Energy _wrhoB; //@} /** * Magnitudes and phases of the amplitudes for \f$D^0\to K^-\pi^+\pi^0\f$ */ //@{ /** * Amplitude of the non-resonant component */ double _a1NR; /** * Phase of the non=resonant component */ double _phi1NR; /** * Amplitude of the \f$\rho^+\f$ component */ double _a1rho; /** * Phase of the \f$\rho^+\f$ component */ double _phi1rho; /** * Amplitude of the \f$K^{*-}\f$ component */ double _a1Kstarm; /** * Phase of the \f$K^{*-}\f$ component */ double _phi1Kstarm; /** * Amplitude of the \f$\bar{K}^{*0}\f$ component */ double _a1Kstar0; /** * Phase of the \f$\bar{K}^{*0}\f$ component */ double _phi1Kstar0; /** * Amplitude for the \f$K_0(1430)^-\f$ component */ Energy2 _a1K1430m; /** * Phase for the \f$K_0(1430)^-\f$ component */ double _phi1K1430m; /** * Amplitude for the \f$\bar{K}_0(1430)^0\f$ component */ Energy2 _a1K14300; /** * Phase for the \f$\bar{K}_0(1430)^0\f$ component */ double _phi1K14300; /** * Amplitude for the \f$\rho(1700)^+\f$ component */ double _a1rho1700; /** * Phase for the \f$\rho(1700)^+\f$ component */ double _phi1rho1700; /** * Amplitude of the \f$K^*(1680)^-\f$ component */ double _a1K1680; /** * Phase of the \f$K^*(1680)^-\f$ component */ double _phi1K1680; /** * Complex amplitude of the non-resonant component */ Complex _c1NR; /** * Complex amplitude of the \f$\rho^+\f$ component */ Complex _c1rho; /** * Complex amplitude of the \f$K^{*-}\f$ component */ Complex _c1Kstarm; /** * Complex amplitude of the \f$\bar{K}^{*0}\f$ component */ Complex _c1Kstar0; /** * Complex amplitude for the \f$K_0(1430)^-\f$ component */ complex<Energy2> _c1K1430m; /** * Complex amplitude for the \f$\bar{K}_0(1430)^0\f$ component */ complex<Energy2> _c1K14300; /** * Complex amplitude for the \f$\rho(1700)^+\f$ component */ Complex _c1rho1700; /** * Complex amplitude of the \f$K^*(1680)^-\f$ component */ Complex _c1K1680; //@} /** * Magnitudes and phases of the amplitudes for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ //@{ /** * Amplitude for the \f$K^{*+}\f$ */ double _a2Kstarp; /** * Phase for the \f$K^{*+}\f$ */ double _phi2Kstarp; /** * Amplitude for the \f$\rho^0(770)\f$ */ double _a2rho; /** * Phase for the \f$\rho^0(770)\f$ */ double _phi2rho; /** * Amplitude for the \f$\omega\f$ */ double _a2omega; /** * Phase for the \f$\omega\f$ */ double _phi2omega; /** * Amplitude for the \f$K^{*-}\f$ */ double _a2Kstarm; /** * Phase for the \f$K^{*-}\f$ */ double _phi2Kstarm; /** * Amplitude for the \f$f_0(980)\f$ */ Energy2 _a2f980; /** * Phase for the \f$f_0(980)\f$ */ double _phi2f980; /** * Amplitude for the \f$f_2(1270)\f$ */ InvEnergy2 _a2f2; /** * Phase for the \f$f_2(1270)\f$ */ double _phi2f2; /** * Amplitude for the \f$f_0(1370)\f$ */ Energy2 _a2f1370; /** * Phase for the \f$f_0(1370)\f$ */ double _phi2f1370; /** * Amplitude for the \f$K^*_0(1430)^-\f$ */ Energy2 _a2K14300; /** * Phase for the \f$K^*_0(1430)^-\f$ */ double _phi2K14300; /** * Amplitude for the \f$K^*_2(1430)^-\f$ */ InvEnergy2 _a2K14302; /** * Phase for the \f$K^*_2(1430)^-\f$ */ double _phi2K14302; /** * Amplitude for the \f$K^*(1680)^-\f$ */ double _a2K1680; /** * Phase for the \f$K^*(1680)^-\f$ */ double _phi2K1680; /** * Amplitude of the non-resonant component */ double _a2NR; /** * Phase of the non=resonant component */ double _phi2NR; /** * Complex amplitude for the \f$K^{*+}\f$ */ Complex _c2Kstarp; /** * Complex amplitude for the \f$\rho^0(770)\f$ */ Complex _c2rho; /** * Complex amplitude for the \f$\omega\f$ */ Complex _c2omega; /** * Complex amplitude for the \f$K^{*-}\f$ */ Complex _c2Kstarm; /** * Complex amplitude for the \f$f_0(980)\f$ */ complex<Energy2> _c2f980; /** * Complex amplitude for the \f$f_2(1270)\f$ */ complex<InvEnergy2> _c2f2; /** * Complex amplitude for the \f$f_0(1370)\f$ */ complex<Energy2> _c2f1370; /** * Complex amplitude for the \f$K^*_0(1430)^-\f$ */ complex<Energy2> _c2K14300; /** * Complex amplitude for the \f$K^*_2(1430)^-\f$ */ complex<InvEnergy2> _c2K14302; /** * Complex amplitude for the \f$K^*(1680)^-\f$ */ Complex _c2K1680; /** * Complex amplitude of the non-resonant component */ Complex _c2NR; //@} /** * Parameters for the Blatt-Weisskopf form-factors */ //@{ /** * Radial size for the \f$D^0\f$ */ InvEnergy _rD0; /** * Radial size for the light resonances */ InvEnergy _rres; //@} /** * Parameters for the phase-space integration */ //@{ /** * Maximum weights for the modes */ vector<double> _maxwgt; /** * Weights for the channels */ vector<double> _weights; //@} /** * Masses for the \f$f_0(980)\f$ Breit-Wigner */ //@{ /** * The pion mass */ Energy _mpi; /** * The charged kaon mass */ Energy _mkp; /** * The neutral kaon mass */ Energy _mk0; //@} /** * Spin density matrix */ mutable RhoDMatrix _rho; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DtoKPiPiCLEO. */ template <> struct BaseClassTrait<Herwig::DtoKPiPiCLEO,1> { /** Typedef of the first base class of DtoKPiPiCLEO. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the DtoKPiPiCLEO class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DtoKPiPiCLEO> : public ClassTraitsBase<Herwig::DtoKPiPiCLEO> { /** Return a platform-independent class name */ static string className() { return "Herwig::DtoKPiPiCLEO"; } /** * The name of a file containing the dynamic library where the class * DtoKPiPiCLEO is implemented. It may also include several, space-separated, * libraries if the class DtoKPiPiCLEO depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_DtoKPiPiCLEO_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/PScalarLeptonNeutrinoDecayer.h��������������������������������0000644�0001750�0001750�00000014570�11754474774�026143� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PScalarLeptonNeutrinoDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PScalarLeptonNeutrinoDecayer_H #define HERWIG_PScalarLeptonNeutrinoDecayer_H // This is the declaration of the PScalarLeptonNeutrinoDecayer class. #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzSpinorBar.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The PScalarLeptonNeutrinoDecayer class is designed for the decay of * pseudoscalar mesons to a lepton and a neutrino. Although it can be used * for charged pion and kaon decays it is mainly intended for the leptonic * decays of bottom and charm mesons. * * The matrix element is given by * \f[\mathcal{M} = \frac1{\sqrt{2}}f_PG_FV_{CKM}m_l\bar{u}(p_{\ell})(1-\gamma_5)v(p_\nu),\f] * where * - \f$f_P\f$ is the pseudoscalar decay constant. * - \f$G_F\f$ is the Fermi constant * - \f$V_{CKM}\f$ is the relevant CKM matrix element * - \f$p_\ell\f$ is the momentum of the charged lepton * - \f$p_\nu\f$ is the momentum of the neutrino * * @see DecayIntegrator * */ class PScalarLeptonNeutrinoDecayer: public DecayIntegrator { public: /** * Default constructor. */ PScalarLeptonNeutrinoDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2( const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<PScalarLeptonNeutrinoDecayer> initPScalarLeptonNeutrinoDecayer; /** * Private and non-existent assignment operator. */ PScalarLeptonNeutrinoDecayer & operator=(const PScalarLeptonNeutrinoDecayer &); private: /** * the PDG code for the incoming particle */ vector<int> _incoming; /** * the meson decay constant for a particular particle multiplied by the CKM matrix * element, \e i.e. \f$f_pV_{CKM}\f$ */ vector<Energy> _decayconstant; /** * which outgoing leptons are allowed for a particular decay */ vector<unsigned int> _leptons; /** * the maximum weight for the integration of a given decay to \f$e\nu_e\f$. */ vector<double> _maxweighte; /** * the maximum weight for the integration of a given decay to \f$\mu\nu_\mu\f$. */ vector<double> _maxweightmu; /** * the maximum weight for the integration of a given decay to \f$\tau\nu_\tau\f$. */ vector<double> _maxweighttau; /** * initial number of modes */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Spinors for the decay products */ mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > _wave; /** * barred spinors for the decay products */ mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > _wavebar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ template <> /** * The following template specialization informs ThePEG about the * base class of PScalarLeptonNeutrinoDecayer. */ struct BaseClassTrait<Herwig::PScalarLeptonNeutrinoDecayer,1> { /** Typedef of the base class of PScalarLeptonNeutrinoDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::PScalarLeptonNeutrinoDecayer> : public ClassTraitsBase<Herwig::PScalarLeptonNeutrinoDecayer> { /** Return the class name.*/ static string className() { return "Herwig::PScalarLeptonNeutrinoDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_PScalarLeptonNeutrinoDecayer_H */ ����������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/ScalarVectorVectorDecayer.h�����������������������������������0000644�0001750�0001750�00000015147�11754474774�025464� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ScalarVectorVectorDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ScalarVectorVectorDecayer_H #define HERWIG_ScalarVectorVectorDecayer_H // // This is the declaration of the ScalarVectorVectorDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; /** * The ScalarVectorVectorDecayer class is designed to perform the decay of * a scalar meson to two spin-1 particles. The matrix element is taken * to have the form * \f[\mathcal{M}=g\left[ p_1 \cdot p_2 \epsilon_1 \cdot \epsilon_2 * -p_1 \cdot \epsilon_2 p_2 \cdot\epsilon_1\right],\f] * where \f$\epsilon_{1,2}\f$ are the polarzation * vectors of the outgoing vector particles. * * The incoming scalar meson, the outgoing vectors and the coupling can * be specified using the relevant interfaces. * * @see DecayIntegrator */ class ScalarVectorVectorDecayer: public DecayIntegrator { public: /** * The default constructor. */ ScalarVectorVectorDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2( const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 3. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<ScalarVectorVectorDecayer> initScalarVectorVectorDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ScalarVectorVectorDecayer & operator=(const ScalarVectorVectorDecayer &); private: /** * the PDG code for the incoming particle */ vector<int> _incoming; /** * the PDG code for the first outgoing particle */ vector<int> _outgoing1; /** * the PDG code for the second outgoing particle */ vector<int> _outgoing2; /** * the coupling for the decay, \f$g\f$. */ vector<InvEnergy> _coupling; /** * the maximum weight for the decay */ vector<double> _maxweight; /** * initial number of modes */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the ecay products */ mutable vector<Helicity::LorentzPolarizationVector> _vectors[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ScalarVectorVectorDecayer. */ template <> struct BaseClassTrait<Herwig::ScalarVectorVectorDecayer,1> { /** Typedef of the first base class of ScalarVectorVectorDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the ScalarVectorVectorDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ScalarVectorVectorDecayer> : public ClassTraitsBase<Herwig::ScalarVectorVectorDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::ScalarVectorVectorDecayer"; } /** Return the name of the shared library be loaded to get * access to the ScalarVectorVectorDecayer class and every other class it uses * (except the base class). */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_ScalarVectorVectorDecayer_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/ScalarScalarScalarDecayer.h�����������������������������������0000644�0001750�0001750�00000013724�11754474774�025371� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ScalarScalarScalarDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ScalarScalarScalarDecayer_H #define HERWIG_ScalarScalarScalarDecayer_H // This is the declaration of the ScalarScalarScalarDecayer class. #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>ScalarScalarScalarDecayer</code> class is designed for the decay * of a scalar meson to two scalar mesons. This decay is obviously trival, * however this decayer allows us to include off-shell effects for the outgoing * particles and the correct calculation of the running width for the incoming * particle. * * The matrix element is taken to b * \f[\mathcal{M} = g \f]. * * @see DecayIntegrator * * \author Peter Richardson * */ class ScalarScalarScalarDecayer: public DecayIntegrator { public: /** * Default constructor. */ ScalarScalarScalarDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2( const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 6. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<ScalarScalarScalarDecayer> initScalarScalarScalarDecayer; /** * Private and non-existent assignment operator. */ ScalarScalarScalarDecayer & operator=(const ScalarScalarScalarDecayer &); private: /** * the PDG code for the incoming particle */ vector<int> _incoming; /** * the PDG code for the first outgoing particle */ vector<int> _outgoing1; /** * the PDG code for the second incoming particle */ vector<int> _outgoing2; /** * the coupling for the decay */ vector<Energy> _coupling; /** * the maximum weight for the decay */ vector<double> _maxweight; /** * initial number of modes */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ScalarScalarScalarDecayer. */ template <> struct BaseClassTrait<Herwig::ScalarScalarScalarDecayer,1> { /** Typedef of the base class of ScalarScalarScalarDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ScalarScalarScalarDecayer> : public ClassTraitsBase<Herwig::ScalarScalarScalarDecayer> { /** Return the class name.*/ static string className() { return "Herwig::ScalarScalarScalarDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_ScalarScalarScalarDecayer_H */ ��������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/PScalarPScalarVectorDecayer.h���������������������������������0000644�0001750�0001750�00000014522�11754474774�025663� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PScalarPScalarVectorDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PScalarPScalarVectorDecayer_H #define HERWIG_PScalarPScalarVectorDecayer_H // // This is the declaration of the PScalarPScalarVectorDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>PScalarPScalarVectorDecayer</code> class is designed to perform the decay * of a pseudoscalar meson to another pseudoscalar meson and a vector meson. * There are only a few of these decays. In this case the matrix element has the * form * \f[\mathcal{M} = g\epsilon_2^\mu(p_0+p_1)_\mu,\f] * where * - \f$p_0\f$ is the momentum of the incoming pseudoscalar meson. * - \f$p_1\f$ is the momentum of the outgoing pseudoscalar meson. * - \f$\epsilon_2\f$ is the polarization vector of the vector meson. * - \f$g\f$ is the coupling for the decay. * * @see DecayIntegrator * * \author Peter Richardson * */ class PScalarPScalarVectorDecayer: public DecayIntegrator { public: /** * Default constructor. */ PScalarPScalarVectorDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2( const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 10. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<PScalarPScalarVectorDecayer> initPScalarPScalarVectorDecayer; /** * Private and non-existent assignment operator. */ PScalarPScalarVectorDecayer & operator=(const PScalarPScalarVectorDecayer &); private: /** * the PDG code for the incoming particle */ vector<int> _incoming; /** * the PDG code for the outgoing pseudoscalar */ vector<int> _outgoingP; /** * the PDG code for the outgoing vector */ vector<int> _outgoingV; /** * the coupling for the decay */ vector<double> _coupling; /** * the maximum weight for the decay */ vector<double> _maxweight; /** * initial number of modes */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the decay products */ mutable vector<Helicity::LorentzPolarizationVector> _vectors; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of PScalarPScalarVectorDecayer. */ template <> struct BaseClassTrait<Herwig::PScalarPScalarVectorDecayer,1> { /** Typedef of the base class of PScalarPScalarVectorDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::PScalarPScalarVectorDecayer> : public ClassTraitsBase<Herwig::PScalarPScalarVectorDecayer> { /** Return the class name. */ static string className() { return "Herwig::PScalarPScalarVectorDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_PScalarPScalarVectorDecayer_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/ScalarScalarScalarDecayer.cc����������������������������������0000644�0001750�0001750�00000045464�11754474774�025535� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ScalarScalarScalarDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ScalarScalarScalarDecayer class. // #include "ScalarScalarScalarDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; void ScalarScalarScalarDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) if(mode(ix) )_maxweight[ix] = mode(ix)->maxWeight(); } } ScalarScalarScalarDecayer::ScalarScalarScalarDecayer() : _incoming(78), _outgoing1(78), _outgoing2(78), _coupling(78), _maxweight(78) { // f_0(980) to pi pi _incoming[0] = 9010221; _outgoing1[0] = 111; _outgoing2[0] = 111; _coupling[0] = 1.66*GeV; _maxweight[0] = 1.05; _incoming[1] = 9010221; _outgoing1[1] = 211; _outgoing2[1] = -211; _coupling[1] = 2.35*GeV; _maxweight[1] = 1.05; // f_0(980) to K K _incoming[2] = 9010221; _outgoing1[2] = 321; _outgoing2[2] = -321; _coupling[2] = 1.02*GeV; _maxweight[2] = 1.05; _incoming[3] = 9010221; _outgoing1[3] = 311; _outgoing2[3] = -311; _coupling[3] = 1.02*GeV; _maxweight[3] = 1.05; // f_0(1370) to pi pi _incoming[4] = 10221; _outgoing1[4] = 111; _outgoing2[4] = 111; _coupling[4] = 0.745*GeV; _maxweight[4] = 1.05; _incoming[5] = 10221; _outgoing1[5] = 211; _outgoing2[5] = -211; _coupling[5] = 1.054*GeV; _maxweight[5] = 1.05; // f_0(1370) to pi' pi _incoming[6] = 10221; _outgoing1[6] = 100111; _outgoing2[6] = 111; _coupling[6] = 5.027*GeV; _maxweight[6] = 2.1; _incoming[7] = 10221; _outgoing1[7] = 100211; _outgoing2[7] = -211; _coupling[7] = 5.027*GeV; _maxweight[7] = 2.1; // f_0(1370) to K K _incoming[8] = 10221; _outgoing1[8] = 321; _outgoing2[8] = -321; _coupling[8] = 0.886*GeV; _maxweight[8] = 1.1; _incoming[9] = 10221; _outgoing1[9] = 311; _outgoing2[9] = -311; _coupling[9] = 0.886*GeV; _maxweight[9] = 1.1; // f_0(1710) to pi pi _incoming[10] = 10331; _outgoing1[10] = 111; _outgoing2[10] = 111; _coupling[10] = 0.503*GeV; _maxweight[10] = 1.05; _incoming[11] = 10331; _outgoing1[11] = 211; _outgoing2[11] = -211; _coupling[11] = 0.711*GeV; _maxweight[11] = 1.05; // f_0(1710) to K K _incoming[12] = 10331; _outgoing1[12] = 321; _outgoing2[12] = -321; _coupling[12] = 2.096*GeV; _maxweight[12] = 1.05; _incoming[13] = 10331; _outgoing1[13] = 311; _outgoing2[13] = -311; _coupling[13] = 2.096*GeV; _maxweight[13] = 1.05; // sigma to pi pi _incoming[14] = 9000221; _outgoing1[14] = 111; _outgoing2[14] = 111; _coupling[14] = 3.654*GeV; _maxweight[14] = 1.05; _incoming[15] = 9000221; _outgoing1[15] = 211; _outgoing2[15] = -211; _coupling[15] = 5.178*GeV; _maxweight[15] = 1.05; // a_0 to eta pi _incoming[16] = 9000111; _outgoing1[16] = 221; _outgoing2[16] = 111; _coupling[16] = 3.33*GeV; _maxweight[16] = 1.1; _incoming[17] = 9000211; _outgoing1[17] = 221; _outgoing2[17] = 211; _coupling[17] = 3.33*GeV; _maxweight[17] = 1.1; // a_0 to K K _incoming[18] = 9000111; _outgoing1[18] = 321; _outgoing2[18] = -321; _coupling[18] = 2.54*GeV; _maxweight[18] = 1.05; _incoming[19] = 9000111; _outgoing1[19] = 311; _outgoing2[19] = -311; _coupling[19] = 2.54*GeV; _maxweight[19] = 1.05; _incoming[20] = 9000211; _outgoing1[20] = 321; _outgoing2[20] = -311; _coupling[20] = 3.59*GeV; _maxweight[20] = 1.05; // a'_0 to eta pi _incoming[21] = 10111; _outgoing1[21] = 221; _outgoing2[21] = 111; _coupling[21] = 1.357*GeV; _maxweight[21] = 1.05; _incoming[22] = 10211; _outgoing1[22] = 221; _outgoing2[22] = 211; _coupling[22] = 1.357*GeV; _maxweight[22] = 1.05; // a'_0 to eta' pi _incoming[23] = 10111; _outgoing1[23] = 331; _outgoing2[23] = 111; _coupling[23] = 0.995*GeV; _maxweight[23] = 1.6; _incoming[24] = 10211; _outgoing1[24] = 331; _outgoing2[24] = 211; _coupling[24] = 0.995*GeV; _maxweight[24] = 1.6; // a'_0 to K K _incoming[25] = 10111; _outgoing1[25] = 321; _outgoing2[25] = -321; _coupling[25] = 0.950*GeV; _maxweight[25] = 1.05; _incoming[26] = 10111; _outgoing1[26] = 311; _outgoing2[26] = -311; _coupling[26] = 0.950*GeV; _maxweight[26] = 1.05; _incoming[27] = 10211; _outgoing1[27] = 321; _outgoing2[27] = -311; _coupling[27] = 1.344*GeV; _maxweight[27] = 1.05; // f_0(1370) to eta eta _incoming[28] = 10221; _outgoing1[28] = 221; _outgoing2[28] = 221; _coupling[28] = 0.235*GeV; _maxweight[28] = 1.1; // f_0(1710) to eta eta _incoming[29] = 10331; _outgoing1[29] = 221; _outgoing2[29] = 221; _coupling[29] = 2.189*GeV; _maxweight[29] = 1.2; // f_0(1370) to sigma sigma _incoming[30] = 10221; _outgoing1[30] = 9000221; _outgoing2[30] = 9000221; _coupling[30] = 21.46*GeV; _maxweight[30] = 7.; // K_0* to K pi _incoming[31] = 10311; _outgoing1[31] = 311; _outgoing2[31] = 111; _coupling[31] = 2.837*GeV; _maxweight[31] = 1.05; _incoming[32] = 10311; _outgoing1[32] = 321; _outgoing2[32] = -211; _coupling[32] = 4.000*GeV; _maxweight[32] = 1.05; _incoming[33] = 10321; _outgoing1[33] = 321; _outgoing2[33] = 111; _coupling[33] = 2.837*GeV; _maxweight[33] = 1.05; _incoming[34] = 10321; _outgoing1[34] = 311; _outgoing2[34] = 211; _coupling[34] = 4.000*GeV; _maxweight[34] = 1.05; // D_0* to D pi _incoming[35] = 10411; _outgoing1[35] = 411; _outgoing2[35] = 111; _coupling[35] = 5.472*GeV; _maxweight[35] = 1.05; _incoming[36] = 10411; _outgoing1[36] = 421; _outgoing2[36] = 211; _coupling[36] = 7.714*GeV; _maxweight[36] = 1.05; _incoming[37] = 10421; _outgoing1[37] = 421; _outgoing2[37] = 111; _coupling[37] = 5.447*GeV; _maxweight[37] = 1.05; _incoming[38] = 10421; _outgoing1[38] = 411; _outgoing2[38] = -211; _coupling[38] = 7.818*GeV; _maxweight[38] = 1.05; // B_0* to B pi _incoming[39] = 10511; _outgoing1[39] = 511; _outgoing2[39] = 111; _coupling[39] = 9.698*GeV; _maxweight[39] = 1.05; _incoming[40] = 10511; _outgoing1[40] = 521; _outgoing2[40] = -211; _coupling[40] = 13.71*GeV; _maxweight[40] = 1.05; _incoming[41] = 10521; _outgoing1[41] = 521; _outgoing2[41] = 111; _coupling[41] = 9.698*GeV; _maxweight[41] = 1.05; _incoming[42] = 10521; _outgoing1[42] = 511; _outgoing2[42] = 211; _coupling[42] = 13.71*GeV; _maxweight[42] = 1.05; // K' to K_0* pi _incoming[43] = 100311; _outgoing1[43] = 10311; _outgoing2[43] = 111; _coupling[43] = 6.595*GeV; _maxweight[43] = 2.; _incoming[44] = 100311; _outgoing1[44] = 10321; _outgoing2[44] = -211; _coupling[44] = 9.445*GeV; _maxweight[44] = 2.; _incoming[45] = 100321; _outgoing1[45] = 10321; _outgoing2[45] = 111; _coupling[45] = 6.595*GeV; _maxweight[45] = 2.; _incoming[46] = 100321; _outgoing1[46] = 10311; _outgoing2[46] = 211; _coupling[46] = 9.445*GeV; _maxweight[46] = 2.; // D_s0* to D_s pi _incoming[47] = 10431; _outgoing1[47] = 431; _outgoing2[47] = 111; _coupling[47] = 0.103*GeV; _maxweight[47] = 1.05; // B_s0* to B_s pi _incoming[48] = 10531; _outgoing1[48] = 531; _outgoing2[48] = 111; _coupling[48] = 8.314*GeV; _maxweight[48] = 1.05; // eta'' to a_0 pi _incoming[49] = 100221; _outgoing1[49] = 9000111; _outgoing2[49] = 111; _coupling[49] = 2.057*GeV; _maxweight[49] = 2.; _incoming[50] = 100221; _outgoing1[50] = 9000211; _outgoing2[50] = -211; _coupling[50] = 2.057*GeV; _maxweight[50] = 2.; // eta''' to a_0 pi _incoming[51] = 9020221; _outgoing1[51] = 9000111; _outgoing2[51] = 111; _coupling[51] = 1.470*GeV; _maxweight[51] = 2.; _incoming[52] = 9020221; _outgoing1[52] = 9000211; _outgoing2[52] = -211; _coupling[52] = 1.470*GeV; _maxweight[52] = 2.; // eta''' to sigma eta _incoming[53] = 9020221; _outgoing1[53] = 221; _outgoing2[53] = 9000221; _coupling[53] = 4.051*GeV; _maxweight[53] = 2.; // eta'' to sigma eta _incoming[54] = 100221; _outgoing1[54] = 9000221; _outgoing2[54] = 221; _coupling[54] = 4.316*GeV; _maxweight[54] = 2.; // chi_0c decays to K K _incoming[55] = 10441; _outgoing1[55] = 321; _outgoing2[55] = -321; _coupling[55] = 0.104*GeV; _maxweight[55] = 1.05; _incoming[56] = 10441; _outgoing1[56] = 311; _outgoing2[56] = -311; _coupling[56] = 0.104*GeV; _maxweight[56] = 1.05; // chi_0c decays to pi pi _incoming[57] = 10441; _outgoing1[57] = 211; _outgoing2[57] = -211; _coupling[57] = 0.093*GeV; _maxweight[57] = 1.05; _incoming[58] = 10441; _outgoing1[58] = 111; _outgoing2[58] = 111; _coupling[58] = 0.066*GeV; _maxweight[58] = 1.05; // chi_0c decays to eta eta _incoming[59] = 10441; _outgoing1[59] = 221; _outgoing2[59] = 221; _coupling[59] = 0.064*GeV; _maxweight[59] = 1.05; // f_0(1500) to pipi _incoming[60] = 9030221; _outgoing1[60] = 211; _outgoing2[60] = -211; _coupling[60] = 1.398*GeV; _maxweight[60] = 1.05; _incoming[61] = 9030221; _outgoing1[61] = 111; _outgoing2[61] = 111; _coupling[61] = 0.989*GeV; _maxweight[61] = 1.05; // f_0(1500) to sigma sigma _incoming[62] = 9030221; _outgoing1[62] = 9000221; _outgoing2[62] = 9000221; _coupling[62] = 6.079*GeV; _maxweight[62] = 7.; // f_0(1500) to eta eta _incoming[63] = 9030221; _outgoing1[63] = 221; _outgoing2[63] = 221; _coupling[63] = 0.809*GeV; _maxweight[63] = 1.05; // f_0(1500) to eta eta' _incoming[64] = 9030221; _outgoing1[64] = 221; _outgoing2[64] = 331; _coupling[64] = 2.844*GeV; _maxweight[64] = 4.5; // f_0(1500) to K K _incoming[65] = 9030221; _outgoing1[65] = 321; _outgoing2[65] = -321; _coupling[65] = 0.686*GeV; _maxweight[65] = 1.05; _incoming[66] = 9030221; _outgoing1[66] = 311; _outgoing2[66] = -311; _coupling[66] = 0.686*GeV; _maxweight[66] = 1.05; // f_0(1500) to pi' pi _incoming[67] = 9030221; _outgoing1[67] = 100111; _outgoing2[67] = 111; _coupling[67] = 2.615*GeV; _maxweight[67] = 2.1; _incoming[68] = 9030221; _outgoing1[68] = 100211;_outgoing2[68] = -211; _coupling[68] = 2.615*GeV; _maxweight[68] = 2.1; // kappa to K pi _incoming[69] = 9000311; _outgoing1[69] = 311; _outgoing2[69] = 111; _coupling[69] = 3.834*GeV; _maxweight[69] = 1.05; _incoming[70] = 9000311; _outgoing1[70] = 321; _outgoing2[70] = -211; _coupling[70] = 5.406*GeV; _maxweight[70] = 1.05; _incoming[71] = 9000321; _outgoing1[71] = 321; _outgoing2[71] = 111; _coupling[71] = 3.834*GeV; _maxweight[71] = 1.05; _incoming[72] = 9000321; _outgoing1[72] = 311; _outgoing2[72] = 211; _coupling[72] = 5.406*GeV; _maxweight[72] = 1.05; // chi_0c decays to K*_0 K*_0 _incoming[73] = 10441; _outgoing1[73] = 10321; _outgoing2[73] = -10321; _coupling[73] = 0.104*GeV; _maxweight[73] = 1.05; _incoming[74] = 10441; _outgoing1[74] = 10311; _outgoing2[74] = -10311; _coupling[74] = 0.104*GeV; _maxweight[74] = 1.05; // B*_s0 decays _incoming[75] = 10531; _outgoing1[75] = 511; _outgoing2[75] = -311; _coupling[75] = 12.17*GeV; _maxweight[75] = 1.05; _incoming[76] = 10531; _outgoing1[76] = 521; _outgoing2[76] = -321; _coupling[76] = 12.17*GeV; _maxweight[76] = 1.05; // chi_0c decays to f_0 f_0 _incoming[77] = 10441; _outgoing1[77] = 9010221; _outgoing2[77] = 9010221; _coupling[77] = 0.084*GeV; _maxweight[77] = 1.05; // initial size _initsize = _coupling.size(); // intermediates generateIntermediates(false); } void ScalarScalarScalarDecayer::doinit() { DecayIntegrator::doinit(); // check the parameters arew consistent unsigned int isize(_coupling.size()); if(isize!=_incoming.size() || isize!=_outgoing1.size()|| isize!=_outgoing2.size() || isize!=_maxweight.size()) throw InitException() << "Inconsistent parameters in ScalarScalarScalarDecayer" << Exception::abortnow; // set up the integration channels vector<double> wgt; DecayPhaseSpaceModePtr mode; tPDVector extpart(3); for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0] = getParticleData(_incoming[ix]); extpart[1] = getParticleData(_outgoing1[ix]); extpart[2] = getParticleData(_outgoing2[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } int ScalarScalarScalarDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=2) return -1; int id0(parent->id()); int id0bar = parent->CC() ? parent->CC()->id() : id0; int id1(children[0]->id()); int id1bar = children[0]->CC() ? children[0]->CC()->id() : id1; int id2(children[1]->id()); int id2bar = children[1]->CC() ? children[1]->CC()->id() : id2; // loop over the modes and see if this is one of them unsigned int ix(0); int imode(-1); do { if(id0 ==_incoming[ix]) { if((id1 ==_outgoing1[ix]&&id2 ==_outgoing2[ix])|| (id2 ==_outgoing1[ix]&&id1 ==_outgoing2[ix])) { imode=ix; cc=false; } } if(id0bar==_incoming[ix]&&imode<0) { if((id1bar==_outgoing1[ix]&&id2bar==_outgoing2[ix])|| (id2bar==_outgoing1[ix]&&id1bar==_outgoing2[ix])) { imode=ix; cc=true; } } ++ix; } while(ix<_incoming.size()&&imode<0); return imode; } void ScalarScalarScalarDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_coupling,MeV) << _incoming << _outgoing1 << _outgoing2 << _maxweight; } void ScalarScalarScalarDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_coupling,MeV) >> _incoming >> _outgoing1 >> _outgoing2 >> _maxweight; } ClassDescription<ScalarScalarScalarDecayer> ScalarScalarScalarDecayer::initScalarScalarScalarDecayer; // Definition of the static class description member. void ScalarScalarScalarDecayer::Init() { static ClassDocumentation<ScalarScalarScalarDecayer> documentation ("The ScalarScalarScalarDecayer class is designed for the" " decay of a scalar meson to two scalar mesons including off-shell effects"); static ParVector<ScalarScalarScalarDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &ScalarScalarScalarDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<ScalarScalarScalarDecayer,int> interfaceOutcoming1 ("FirstOutgoing", "The PDG code for the first outgoing particle", &ScalarScalarScalarDecayer::_outgoing1, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<ScalarScalarScalarDecayer,int> interfaceOutcoming2 ("SecondOutgoing", "The PDG code for the second outgoing particle", &ScalarScalarScalarDecayer::_outgoing2, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<ScalarScalarScalarDecayer,Energy> interfaceCoupling ("Coupling", "The coupling for the decay mode", &ScalarScalarScalarDecayer::_coupling, MeV, 0, ZERO, ZERO, 1000000.*MeV, false, false, true); static ParVector<ScalarScalarScalarDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &ScalarScalarScalarDecayer::_maxweight, 0, 0, 0, -10000, 10000, false, false, true); } double ScalarScalarScalarDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin0,PDT::Spin0)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); for(unsigned int ix=0;ix<2;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return 0.; } double fact(_coupling[imode()]/inpart.mass()); ME()(0,0,0) = fact; return sqr(fact); } // specify the 1-2 matrix element to be used in the running width calculation bool ScalarScalarScalarDecayer::twoBodyMEcode(const DecayMode & dm, int & itype, double & coupling) const { int imode(-1); int id(dm.parent()->id()); int idbar = dm.parent()->CC() ? dm.parent()->CC()->id() : id; ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id()); int id1bar = (**pit).CC() ? (**pit).CC()->id() : id1; ++pit; int id2((**pit).id()); int id2bar = (**pit).CC() ? (**pit).CC()->id() : id2; unsigned int ix(0); bool order(true); do { if(id ==_incoming[ix]) { if(id1==_outgoing1[ix]&&id2==_outgoing2[ix]) { imode=ix; order=true; } if(id2==_outgoing1[ix]&&id1==_outgoing2[ix]) { imode=ix; order=false; } } if(idbar==_incoming[ix]&&imode<0) { if(id1bar==_outgoing1[ix]&&id2bar==_outgoing2[ix]) { imode=ix; order=true; } if(id2bar==_outgoing1[ix]&&id1bar==_outgoing2[ix]) { imode=ix; order=false; } } ++ix; } while(ix<_incoming.size()&&imode<0); coupling=_coupling[imode]/dm.parent()->mass(); itype = 6; return order; } // output the setup information for the particle database void ScalarScalarScalarDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // the rest of the parameters for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":FirstOutgoing " << ix << " " << _outgoing1[ix] << "\n"; output << "newdef " << name() << ":SecondOutgoing " << ix << " " << _outgoing2[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]/MeV << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":FirstOutgoing " << ix << " " << _outgoing1[ix] << "\n"; output << "insert " << name() << ":SecondOutgoing " << ix << " " << _outgoing2[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]/MeV << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/Makefile.am���������������������������������������������������0000644�0001750�0001750�00000001735�11754474774�022275� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwSMDecay.la HwSMDecay_la_SOURCES = \ EtaPiGammaGammaDecayer.cc EtaPiGammaGammaDecayer.h\ EtaPiPiGammaDecayer.cc EtaPiPiGammaDecayer.h \ EtaPiPiPiDecayer.cc EtaPiPiPiDecayer.h \ PScalar4FermionsDecayer.cc PScalar4FermionsDecayer.h\ PScalarLeptonNeutrinoDecayer.cc PScalarLeptonNeutrinoDecayer.h\ PScalarPScalarVectorDecayer.cc PScalarPScalarVectorDecayer.h \ PScalarVectorFermionsDecayer.cc PScalarVectorFermionsDecayer.h\ PScalarVectorVectorDecayer.cc PScalarVectorVectorDecayer.h\ ScalarMesonTensorScalarDecayer.cc ScalarMesonTensorScalarDecayer.h\ ScalarScalarScalarDecayer.cc ScalarScalarScalarDecayer.h \ SemiLeptonicScalarDecayer.cc SemiLeptonicScalarDecayer.h \ ScalarMesonFactorizedDecayer.cc ScalarMesonFactorizedDecayer.h \ ScalarVectorVectorDecayer.h ScalarVectorVectorDecayer.cc \ DtoKPiPiCLEO.h DtoKPiPiCLEO.cc \ DtoKPiPiE691.h DtoKPiPiE691.cc\ DtoKPiPiMarkIII.h DtoKPiPiMarkIII.cc HwSMDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 8:1:0 �����������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/PScalar4FermionsDecayer.cc������������������������������������0000644�0001750�0001750�00000034675�11754474774�025172� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PScalar4FermionsDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PScalar4FermionsDecayer class. // #include "PScalar4FermionsDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Helicity/ScalarSpinInfo.h" #include "ThePEG/Helicity/FermionSpinInfo.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/epsilon.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG::Helicity; void PScalar4FermionsDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) _maxweight[ix] = mode(ix)->maxWeight(); } } PScalar4FermionsDecayer::PScalar4FermionsDecayer() : _coupling(1,0.025159062/GeV), _incoming(1,111), _outgoing1(1,11), _outgoing2(1,11), _maxweight(1,0.000234211), _includeVMD(1,2),_VMDid(1,113), _VMDmass(1,0.7758*GeV), _VMDwidth(1,0.1503*GeV), _initsize(1) { // intermediates generateIntermediates(false); } void PScalar4FermionsDecayer::doinit() { DecayIntegrator::doinit(); // check the parameters are consistent unsigned int isize=_coupling.size(); if(isize!=_incoming.size() || isize!=_outgoing1.size() || isize!=_outgoing2.size()|| isize!=_maxweight.size() || isize!=_includeVMD.size()|| isize!=_VMDid.size() || isize!=_VMDmass.size() || isize!=_VMDwidth.size()) throw InitException() << "Inconsistent parameters in PScalar4FermionsDecayer" << Exception::abortnow; // create the integration channels for each mode tPDVector extpart(5); tPDPtr gamma=getParticleData(ParticleID::gamma); DecayPhaseSpaceChannelPtr newchannel; DecayPhaseSpaceModePtr mode; vector<double> wgt; for(unsigned int ix=0;ix<_incoming.size();++ix) { wgt.resize(1);wgt[0]=1.; extpart[0] = getParticleData(_incoming[ix]); extpart[1] = getParticleData( _outgoing1[ix]); extpart[2] = getParticleData(-_outgoing1[ix]); extpart[3] = getParticleData( _outgoing2[ix]); extpart[4] = getParticleData(-_outgoing2[ix]); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); // first channel always need this newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,-2); newchannel->addIntermediate(gamma ,1,-1.1, 1,2); newchannel->addIntermediate(gamma ,1,-1.1, 3,4); mode->addChannel(newchannel); if(_outgoing1[ix]==_outgoing2[ix]) { newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,-2); newchannel->addIntermediate(gamma ,1,-1.1, 3,2); newchannel->addIntermediate(gamma ,1,-1.1, 1,4); mode->addChannel(newchannel); wgt.resize(2);wgt[0]=0.5;wgt[1]=0.5; } else{wgt.resize(1);wgt[0]=1.;} addMode(mode,_maxweight[ix],wgt); } // set up the values for the VMD factor if needed (copy the default mass and width // into the array) for(unsigned ix=0;ix<isize;++ix) { if(_includeVMD[ix]==1) { _VMDmass[ix]=getParticleData(_VMDid[ix])->mass(); _VMDwidth[ix]=getParticleData(_VMDid[ix])->width(); } } } int PScalar4FermionsDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { // must be four outgoing particles if(children.size()!=4) return -1; // get the id's of the outgoing particles int id[4]; bool done[4]; unsigned int ix(0),iy(0); // ids of the particles int id0(parent->id()),idtemp(-1),idl1(-1),idl2(-1),idt[2]; tPDVector::const_iterator pit = children.begin(); for ( ;pit!=children.end();++pit) { id[ix]=(**pit).id(); done[ix]=false; ++ix; } // find the two lepton pairs // find the first fermion ix=0; do { if( id[ix]>0 && !done[ix] ) { done[ix]=true; idtemp=id[ix]; } ++ix; } while(ix<4&&idtemp<0); if(idtemp<0) return -1; // find its antiparticle ix=0; do { if( id[ix]==-idtemp && !done[ix] ) { done[ix]=true; idl1=idtemp; } ++ix; } while( ix<4 && idl1<0 ); if(idl1<0) return -1; // find the second particle antiparticle pair idtemp=-1; for(ix=0;ix<4;++ix) { if(!done[ix]) { idt[iy]=id[ix]; ++iy; } } if(idt[0]==-idt[1]) idl2=abs(idt[0]); if(idl2<0) return -1; // loop over the modes and see if this is one of them ix=0; int imode(-1); do { if(_incoming[ix]==id0) { if((idl1==_outgoing1[ix]&&idl2==_outgoing2[ix])|| (idl2==_outgoing1[ix]&&idl1==_outgoing2[ix])) imode=ix; } ++ix; } while(imode<0&&ix<_incoming.size()); cc=false; return imode; } void PScalar4FermionsDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_coupling,1/MeV) << _incoming << _outgoing1 << _outgoing2 << _maxweight << _includeVMD << _VMDid << ounit(_VMDmass,MeV) << ounit(_VMDwidth,MeV); } void PScalar4FermionsDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_coupling,1/MeV) >> _incoming >> _outgoing1 >> _outgoing2 >> _maxweight >> _includeVMD >> _VMDid >> iunit(_VMDmass,MeV) >> iunit(_VMDwidth,MeV); } ClassDescription<PScalar4FermionsDecayer> PScalar4FermionsDecayer::initPScalar4FermionsDecayer; // Definition of the static class description member. void PScalar4FermionsDecayer::Init() { static ClassDocumentation<PScalar4FermionsDecayer> documentation ("The PScalar4FermionsDecayer class is designed for the decay" " of a pseudosclar meson to four fermions. It is intended for the decay of" "the pion to two electron-positron pairs."); static ParVector<PScalar4FermionsDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &PScalar4FermionsDecayer::_incoming, 0, 0, 0, -10000, 10000, false, false, true); static ParVector<PScalar4FermionsDecayer,int> interfaceOutcoming1 ("Outgoing1", "The PDG code for the first outgoing fermion", &PScalar4FermionsDecayer::_outgoing1, 0, 0, 0, -10000, 10000, false, false, true); static ParVector<PScalar4FermionsDecayer,int> interfaceOutcoming2 ("Outgoing2", "The PDG code for the second outgoing fermion", &PScalar4FermionsDecayer::_outgoing2, 0, 0, 0, -10000, 10000, false, false, true); static ParVector<PScalar4FermionsDecayer,InvEnergy> interfaceCoupling ("Coupling", "The coupling for the decay mode", &PScalar4FermionsDecayer::_coupling, 1/MeV, 0, ZERO, -10000/MeV, 10000/MeV, false, false, true); static ParVector<PScalar4FermionsDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &PScalar4FermionsDecayer::_maxweight, 0, 0, 0, -10000, 10000, false, false, true); static ParVector<PScalar4FermionsDecayer,int> interfaceIncludeVMD ("IncludeVMD", "There are three options for 0 the VMD factor is not included, for 1 the factor " "is included using the default mass and width of the particle specified by" " VMDID, and for 2 the factor is included using the mass and width specified" " by VMDwidth and VMDmass.", &PScalar4FermionsDecayer::_includeVMD, 0, 0, 0, 0, 2, false, false, true); static ParVector<PScalar4FermionsDecayer,int> interfaceVMDID ("VMDID", "The PDG code for the particle to be used for the VMD factor.", &PScalar4FermionsDecayer::_VMDid, 0, 0, 0, -10000, 10000, false, false, true); static ParVector<PScalar4FermionsDecayer,Energy> interfaceVMDmass ("VMDmass", "The mass to use for the particle in the VMD factor", &PScalar4FermionsDecayer::_VMDmass, 1.*MeV, -1, ZERO, -10000*MeV, 10000*MeV, false, false, true); static ParVector<PScalar4FermionsDecayer,Energy> interfaceVMDwidth ("VMDwidth", "The width to use for the particle in the VMD factor", &PScalar4FermionsDecayer::_VMDwidth, 1.*MeV, -1, ZERO, -10000*MeV, 10000*MeV, false, false, true); } double PScalar4FermionsDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { bool identical((_outgoing1[imode()]==_outgoing2[imode()])); if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); // set up the spin information for the decay products for(unsigned int ix=0;ix<2;++ix) { SpinorBarWaveFunction:: constructSpinInfo(_wavebar[ix],decay[2*ix ],outgoing,true); SpinorWaveFunction:: constructSpinInfo(_wave[ix] ,decay[2*ix+1],outgoing,true); } return 0.; } // calculate the spinors for(unsigned int ix=0;ix<2;++ix) { SpinorBarWaveFunction:: calculateWaveFunctions(_wavebar[ix],decay[2*ix ],outgoing); SpinorWaveFunction:: calculateWaveFunctions(_wave[ix] ,decay[2*ix+1],outgoing); } // momenta of the outgoing photons Lorentz5Momentum momentum[4]; momentum[0]=decay[0]->momentum()+decay[1]->momentum();momentum[0].rescaleMass(); momentum[1]=decay[2]->momentum()+decay[3]->momentum();momentum[1].rescaleMass(); if(identical) { momentum[2]=decay[2]->momentum()+decay[1]->momentum();momentum[2].rescaleMass(); momentum[3]=decay[0]->momentum()+decay[3]->momentum();momentum[3].rescaleMass(); } // compute the currents for the two leptonic decays LorentzPolarizationVectorE current[4][2][2]; unsigned int it,ix,iy,iz; for(iz=0;iz<2;++iz) { it = iz==0 ? 1 : 0; for(ix=0;ix<2;++ix) { for(iy=0;iy<2;++iy) { current[iz][iy][ix] = _wave[iz][ix].vectorCurrent(_wavebar[iz][iy]); // the second two currents if(identical) current[iz+2][iy][ix] = _wave[it][ix].vectorCurrent(_wavebar[iz][iy]); } } } // invariants Energy2 m12(sqr(momentum[0].mass())); Energy2 m34(sqr(momentum[1].mass())); Energy2 m14(ZERO), m23(ZERO); complex<InvEnergy4> prop1(1./m12/m34),prop2(0./sqr(MeV2)); Complex ii(0.,1.); if(identical) { m14=momentum[2].mass()*momentum[2].mass(); m23=momentum[3].mass()*momentum[3].mass(); prop2=1./m14/m23; } // the VMD factor if needed if(_includeVMD[imode()]>0) { Energy2 mrho2(_VMDmass[imode()]*_VMDmass[imode()]); Energy2 mwrho(_VMDmass[imode()]*_VMDwidth[imode()]); prop1 = prop1*(-mrho2+ii*mwrho)/(m12-mrho2+ii*mwrho)* (-mrho2+ii*mwrho)/(m34-mrho2+ii*mwrho); if(identical) { prop2 = prop2*(-mrho2+ii*mwrho)/(m14-mrho2+ii*mwrho)* (-mrho2+ii*mwrho)/(m23-mrho2+ii*mwrho); } } // prefactor Complex pre(_coupling[imode()]*4.*Constants::pi *SM().alphaEM()*inpart.mass()); Complex diag; // now compute the matrix element LorentzVector<complex<Energy3> > eps; vector<unsigned int> ispin(5,0); for(ispin[1]=0; ispin[1]<2;++ispin[1]) { for(ispin[2]=0;ispin[2]<2;++ispin[2]) { for(ispin[3]=0;ispin[3]<2;++ispin[3]) { for(ispin[4]=0;ispin[4]<2;++ispin[4]) { // the first diagram eps = epsilon(current[0][ispin[1]][ispin[2]],momentum[1], current[1][ispin[3]][ispin[4]]); diag = prop1*(eps*momentum[0]); // exchanged diagram if identical particles // (sign due normal ordering) if(identical) { eps = epsilon(current[2][ispin[1]][ispin[4]],momentum[3], current[3][ispin[3]][ispin[2]]); diag-= prop2*(eps*momentum[2]); } ME()(ispin)=pre*diag; } } } } double me=ME().contract(_rho).real(); if(identical) me *= 0.25; return me; } // output the setup info for the particle database void PScalar4FermionsDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":Outgoing1 " << ix << " " << _outgoing1[ix] << "\n"; output << "newdef " << name() << ":Outgoing2 " << ix << " " << _outgoing2[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]*MeV << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; output << "newdef " << name() << ":IncludeVMD " << ix << " " << _includeVMD[ix] << "\n"; output << "newdef " << name() << ":VMDID " << ix << " " << _VMDid[ix] << "\n"; output << "newdef " << name() << ":VMDmass " << ix << " " << _VMDmass[ix]/MeV << "\n"; output << "newdef " << name() << ":VMDwidth " << ix << " " << _VMDwidth[ix]/MeV << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":Outgoing1 " << ix << " " << _outgoing1[ix] << "\n"; output << "insert " << name() << ":Outgoing2 " << ix << " " << _outgoing2[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]*MeV << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; output << "insert " << name() << ":IncludeVMD " << ix << " " << _includeVMD[ix] << "\n"; output << "insert " << name() << ":VMDID " << ix << " " << _VMDid[ix] << "\n"; output << "insert " << name() << ":VMDmass " << ix << " " << _VMDmass[ix]/MeV << "\n"; output << "insert " << name() << ":VMDwidth " << ix << " " << _VMDwidth[ix]/MeV << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/ScalarMesonFactorizedDecayer.cc�������������������������������0000644�0001750�0001750�00000063262�11754474774�026272� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ScalarMesonFactorizedDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ScalarMesonFactorizedDecayer class. // #include "ScalarMesonFactorizedDecayer.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/RefVector.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 "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/epsilon.h" #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; ScalarMesonFactorizedDecayer::ScalarMesonFactorizedDecayer() // default values of the couplings (taken from ZPC34, 103) : _a1b(1.10), _a2b(-0.24), _a1c(1.30), _a2c(-0.55) { // intermediates generateIntermediates(true); } void ScalarMesonFactorizedDecayer::rebind(const TranslationMap & trans) { _ckm = trans.translate(_ckm); DecayIntegrator::rebind(trans); } IVector ScalarMesonFactorizedDecayer::getReferences() { IVector ret = DecayIntegrator::getReferences(); ret.push_back(_ckm); return ret; } void ScalarMesonFactorizedDecayer::doinit() { DecayIntegrator::doinit(); // get the ckm object _ckm=dynamic_ptr_cast<Ptr<StandardCKM>::pointer>(SM().CKM()); if(!_ckm) throw InitException() << "ScalarMesonFactorizedDecayer::doinit() " << "the CKM object must be the Herwig one" << Exception::runerror; unsigned int ix,iy,iz,icurr,iform; // get the CKM matrix (unsquared for interference) Complex ckmmat[3][3]; vector< vector<Complex > > CKM(_ckm->getUnsquaredMatrix(SM().families())); for(ix=0;ix<3;++ix){for(iy=0;iy<3;++iy){ckmmat[ix][iy]=CKM[ix][iy];}} int id0,id1,Wcharge,iq,ia,jspin,spect,inq,outq; // make sure the currents and form factors got initialised for(ix=0;ix<_current.size();++ix) _current[ix]->init(); for(ix=0;ix<_form.size();++ix) _form[ix]->init(); // find all the possible modes vector<unsigned int> tformmap[2],tcurrmap[2]; vector<int> inquark,outquark,currq,curra; vector<tPDVector> particles; tPDVector extpart,ptemp; Energy min,minb; // loop over the modes in the form factors and currents for(iform=0;iform<_form.size();++iform) { for(ix=0;ix<_form[iform]->numberOfFactors();++ix) { // particles from the form-factor extpart.resize(2); _form[iform]->particleID(ix,id0,id1); _form[iform]->formFactorInfo(ix,jspin,spect,inq,outq); // particles from the form factor extpart[0]=getParticleData(id0); extpart[1]=getParticleData(id1); // charge of the decay products Wcharge =extpart[0]->iCharge()-extpart[1]->iCharge(); // max mass for the particles in the current min = extpart[0]->massMax()-extpart[1]->massMin(); for(icurr=0;icurr<_current.size();++icurr) { for(iy=0;iy<_current[icurr]->numberOfModes();++iy) { extpart.resize(2); // get the particles from the current _current[icurr]->decayModeInfo(iy,iq,ia); ptemp=_current[icurr]->particles(Wcharge,iy,iq,ia); minb=ZERO; for(iz=0;iz<ptemp.size();++iz) { extpart.push_back(ptemp[iz]); minb+=ptemp[iz]->massMin(); } // add this mode to the list if(extpart.size()>2&&minb<min&& (Wcharge!=0||(Wcharge==0&&((inq>0&&inq%2!=iq%2)|| (inq<0&&abs(inq)%2!=abs(ia)%2))))) { tformmap[0].push_back(iform);tformmap[1].push_back(ix); tcurrmap[0].push_back(icurr);tcurrmap[1].push_back(iy); particles.push_back(extpart); inquark.push_back(inq);outquark.push_back(outq); currq.push_back(iq);curra.push_back(ia); } // if the meson in the current is neutral try the CC mode if(Wcharge==0&&iq!=-ia&&((inq>0&&inq%2!=iq%2)|| (inq<0&&abs(inq)%2!=abs(ia)%2))) { extpart.resize(2); // get the particles from the current ptemp=_current[icurr]->particles(Wcharge,iy,-ia,-iq); minb=ZERO; for(iz=0;iz<ptemp.size();++iz) { extpart.push_back(ptemp[iz]); minb+=ptemp[iz]->massMin(); } if(extpart.size()>2&&minb<min) { tformmap[0].push_back(iform);tformmap[1].push_back(ix); tcurrmap[0].push_back(icurr);tcurrmap[1].push_back(iy); particles.push_back(extpart); inquark.push_back(inq);outquark.push_back(outq); currq.push_back(-ia);curra.push_back(-iq); } } } } } } // loop over the modes and find the dupliciates vector<bool> modecc; vector<unsigned int> modeloc,tformpart,ttform[2],ttcurr[2]; vector<Complex> tCKM; Complex ckm; DecayPhaseSpaceModePtr mode; DecayPhaseSpaceChannelPtr channel; bool done; int id,idbar; double maxweight; vector<double> channelwgts; unsigned int isize;double ort(sqrt(0.5)); vector<double>::iterator start,end; for(ix=0;ix<particles.size();++ix) { while (true) { if(particles[ix].empty()) break; findModes(ix,particles,modeloc,modecc); // if more than three particles only allow one diagram if ( particles[ix].size()>3 && !modeloc.empty() ) break; // create the mode and set the particles as for the first instance mode=new_ptr(DecayPhaseSpaceMode(particles[ix],this)); channel = new_ptr(DecayPhaseSpaceChannel(mode)); channel->addIntermediate(particles[ix][0],0,0.0,1,-1); min = particles[ix][0]->massMax()-particles[ix][1]->massMin(); Wcharge = particles[ix][0]->iCharge()-particles[ix][1]->iCharge(); done=_current[tcurrmap[0][ix]]->createMode(Wcharge,tcurrmap[1][ix], mode,2,1,channel,min); if(!done) throw InitException() << "Failed to construct mode in " << "ScalarMesonFactorizedDecayer::doinit()." << Exception::abortnow; // set the parameters for the additional modes ttform[0].clear();ttform[1].clear(); ttcurr[0].clear();ttcurr[1].clear(); ttform[0].push_back(tformmap[0][ix]);ttform[1].push_back(tformmap[1][ix]); ttcurr[0].push_back(tcurrmap[0][ix]);ttcurr[1].push_back(tcurrmap[1][ix]); tformpart.clear();tformpart.push_back(0); id=particles[ix][1]->id(); idbar = particles[ix][1]->CC() ? particles[ix][1]->CC()->id() : id; for(iy=0;iy<modeloc.size();++iy) { ttform[0].push_back(tformmap[0][modeloc[iy]]); ttform[1].push_back(tformmap[1][modeloc[iy]]); ttcurr[0].push_back(tcurrmap[0][modeloc[iy]]); ttcurr[1].push_back(tcurrmap[1][modeloc[iy]]); iz=1; do { if(( modecc[iy]&&particles[modeloc[iy]][iz]->id()==idbar)|| (!modecc[iy]&&particles[modeloc[iy]][iz]->id()==id)) tformpart.push_back(iz-1); ++iz; } while(tformpart.size()!=iy+2&&iz<3); } // calculate ckm factors tCKM.clear(); for(iy=0;iy<ttcurr[0].size();++iy) { // get the quarks involved in the process if(iy==0) { iq=currq[ix];ia=curra[ix]; inq=inquark[ix];outq=outquark[ix]; } else { if(!modecc[iy-1]) { iq=currq[modeloc[iy-1]];ia=curra[modeloc[iy-1]]; inq=inquark[modeloc[iy-1]];outq=outquark[modeloc[iy-1]]; } else { ia=-currq[modeloc[iy-1]];iq=-curra[modeloc[iy-1]]; inq=-inquark[modeloc[iy-1]];outq=-outquark[modeloc[iy-1]]; } } _form[ttform[0][iy]]->particleID(ttform[1][iy],id0,id1); Wcharge = getParticleData(id0)->iCharge()-getParticleData(id1)->iCharge(); ckm=1.; if(Wcharge!=0) { ckm=1.; if(abs(iq)%2==0) ckm *= conj(ckmmat[abs(iq)/2-1][(abs(ia)-1)/2]); else ckm *= conj(ckmmat[abs(ia)/2-1][(abs(iq)-1)/2]); if(abs(inq)%2==0) ckm *= ckmmat[abs(inq)/2-1][(abs(outq)-1)/2]; else ckm *= ckmmat[abs(outq)/2-1][(abs(inq)-1)/2]; if(abs(inq)==5) ckm*=_a1b; else ckm*=_a1c; } else { ckm=1.; if(inq>0) { if(abs(inq)%2==0) ckm *= ckmmat[abs(inq)/2-1][(abs(iq)-1)/2]; else ckm *= ckmmat[abs(iq)/2-1][(abs(inq)-1)/2]; if(abs(outq)%2==0) ckm *= conj(ckmmat[abs(outq)/2-1][(abs(ia)-1)/2]); else ckm *= conj(ckmmat[abs(ia)/2-1][(abs(outq)-1)/2]); } else { if(abs(inq)%2==0) ckm *= ckmmat[abs(inq)/2-1][(abs(ia)-1)/2]; else ckm *= ckmmat[abs(ia)/2-1][(abs(inq)-1)/2]; if(abs(outq)%2==0) ckm *= conj(ckmmat[abs(outq)/2-1][(abs(iq)-1)/2]); else ckm *= conj(ckmmat[abs(iq)/2-1][(abs(outq)-1)/2]); } if(abs(inq)==5) ckm*=_a2b; else ckm*=_a2c; } if((abs(inq)%2==0&&inq<0)||(abs(inq)%2!=0&&inq>0)){ckm=conj(ckm);} tCKM.push_back(ckm); } // special if the particles are idential add additional modes and // identical particle factors if(particles[ix][1]->id()==particles[ix][2]->id()&&particles[ix].size()==3) { isize=ttcurr[0].size(); for(iy=0;iy<isize;++iy) { ttcurr[0].push_back(ttcurr[0][iy]);ttcurr[1].push_back(ttcurr[1][iy]); ttform[0].push_back(ttform[0][iy]);ttform[1].push_back(ttform[1][iy]); if(tformpart[iy]==0){tformpart.push_back(1);} else{tformpart.push_back(0);} tCKM[iy]*=ort;tCKM.push_back(tCKM[iy]); } } // add the parameters for the mode to the list _currentmapA.push_back(ttcurr[0]);_currentmapB.push_back(ttcurr[1]); _formmapA.push_back(ttform[0]);_formmapB.push_back(ttform[1]); _formpart.push_back(tformpart); _CKMfact.push_back(tCKM); // add the mode to the list if(_wgtmax.size()>numberModes()){maxweight=_wgtmax[numberModes()];} else{maxweight=0.;} // the weights for the channel if(_wgtloc.size()>numberModes()&& _wgtloc[numberModes()]+mode->numberChannels()<=_weights.size()) { start=_weights.begin()+_wgtloc[numberModes()]; end = start+mode->numberChannels(); channelwgts=vector<double>(start,end); } else { channelwgts.resize(mode->numberChannels(),1./(mode->numberChannels())); } // don't need channels for two body decays if(particles[ix].size()==3) { channelwgts.clear(); mode=new_ptr(DecayPhaseSpaceMode(particles[ix],this)); } addMode(mode,maxweight,channelwgts); // resize the duplicate modes to remove them for(iy=0;iy<modeloc.size();++iy) particles[modeloc[iy]] = tPDVector(); break; } } } void ScalarMesonFactorizedDecayer::doinitrun() { unsigned int ix,iy; for(ix=0;ix<_current.size();++ix) _current[ix]->initrun(); for(ix=0;ix<_form.size();++ix) _form[ix]->initrun(); DecayIntegrator::doinitrun(); if(initialize()) { _weights.clear(); _wgtloc.clear(); _wgtmax.clear(); for(ix=0;ix<numberModes();++ix) { _wgtmax.push_back(mode(ix)->maxWeight()); _wgtloc.push_back(_weights.size()); for(iy=0;iy<mode(ix)->numberChannels();++iy) { _weights.push_back(mode(ix)->channelWeight(iy)); } } } } bool ScalarMesonFactorizedDecayer::accept(tcPDPtr parent, const tPDVector & children) const { // N.B. this is a necessary but not sufficient test bool allowed(false),dummy; // find the ids of the particles tPDVector::const_iterator pit = children.begin(); tPDVector::const_iterator pend = children.end(); vector<int> ids,idcurr; int id(parent->id()); for( ; pit!=pend;++pit) ids.push_back((**pit).id()); // loop over the possible particles in the formfactor unsigned int ipart(0),iform,icurr,ix; do { idcurr.clear(); for(ix=0;ix<ids.size();++ix){if(ix!=ipart){idcurr.push_back(ids[ix]);}} iform=0; do { // check if possible from the form factor if(_form[iform]->formFactorNumber(id,ids[ipart],dummy)>=0) { // check if possible from the current icurr=0; do { allowed=_current[icurr]->accept(idcurr); ++icurr; } while(!allowed&&icurr<_current.size()); } ++iform; } while(!allowed&&iform<_form.size()); ++ipart; } while(!allowed&&ipart<ids.size()); return allowed; } int ScalarMesonFactorizedDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); // id's of the particles and CC // of the parent int id0(parent->id()),id0bar(id0); if(parent->CC()){id0bar=parent->CC()->id();} // of the products vector<int> ids,idbars; tPDVector::const_iterator pit = children.begin(); tPDVector::const_iterator pend = children.end(); for( ;pit!=pend;++pit) { ids.push_back((**pit).id()); if((**pit).CC()) idbars.push_back((**pit).CC()->id()); else idbars.push_back(ids.back()); } // loop over the modes vector<bool> done(ids.size(),false); unsigned int nfound,ix,iy,iz; int idtemp; bool found; cc=false; ix=0; do { // particle mode if(id0==mode(ix)->externalParticles(0)->id()&& ids.size()+1==mode(ix)->numberofParticles()) { nfound=0; for(iy=0;iy<ids.size();++iy){done[iy]=false;} for(iy=0;iy<ids.size();++iy) { idtemp=mode(ix)->externalParticles(iy+1)->id(); iz=0;found=false; do{if(idtemp==ids[iz]&&!done[iz]){done[iz]=true;found=true;}++iz;} while(iz<ids.size()&&!found); if(found){++nfound;} } if(nfound==ids.size()){cc=false;imode=ix;} } // CC mode if(id0bar==mode(ix)->externalParticles(0)->id()&& ids.size()+1==mode(ix)->numberofParticles()) { nfound=0; for(iy=0;iy<idbars.size();++iy) done[iy]=false; for(iy=0;iy<idbars.size();++iy) { idtemp=mode(ix)->externalParticles(iy+1)->id(); iz=0;found=false; do { if(idtemp==idbars[iz]&&!done[iz]) { done[iz]=true; found=true; } ++iz; } while(iz<idbars.size()&&!found); if(found) ++nfound; } if(nfound==idbars.size()) { cc=true; imode=ix; } } ++ix; } while(imode<0&&ix<numberModes()); if(imode<0) { string mode = parent->PDGName() + "->"; for(unsigned int ix=0;ix<children.size();++ix) mode += children[ix]->PDGName() +","; throw DecayIntegratorError() << "Unable to find the mode " << mode << " in " << name() << " ScalarMesonFactorizedDecayer::decay()" << Exception::abortnow; } return imode; } void ScalarMesonFactorizedDecayer::persistentOutput(PersistentOStream & os) const { os << _current << _form << _ckm << _a1b << _a2b << _a1c << _a2c << _currentmapA << _currentmapB << _formmapA << _formmapB << _formpart << _wgtloc << _wgtmax << _weights << _CKMfact ; } void ScalarMesonFactorizedDecayer::persistentInput(PersistentIStream & is, int) { is >> _current >> _form >> _ckm >> _a1b >> _a2b >> _a1c >> _a2c >> _currentmapA >> _currentmapB >> _formmapA >> _formmapB >> _formpart >> _wgtloc >> _wgtmax >> _weights >> _CKMfact; } ClassDescription<ScalarMesonFactorizedDecayer> ScalarMesonFactorizedDecayer::initScalarMesonFactorizedDecayer; // Definition of the static class description member. void ScalarMesonFactorizedDecayer::Init() { static ClassDocumentation<ScalarMesonFactorizedDecayer> documentation ("The ScalarMesonFactorizedDecayer class is designed for the weak decay of" " scalar mesons using the factorization approximation."); static RefVector<ScalarMesonFactorizedDecayer,WeakDecayCurrent> interfaceCurrents ("Currents", "A vector of references to the currents", &ScalarMesonFactorizedDecayer::_current, -1, false, false, true, false, false); static RefVector<ScalarMesonFactorizedDecayer,ScalarFormFactor> interfaceFormFactors ("FormFactors", "A vector of references to the form-factors", &ScalarMesonFactorizedDecayer::_form, -1, false, false, true, false, false); static Parameter<ScalarMesonFactorizedDecayer,double> interfacea1Bottom ("a1Bottom", "The factorization paramter a_1 for decays of bottom baryons", &ScalarMesonFactorizedDecayer::_a1b, 1.1, -10.0, 10.0, false, false, true); static Parameter<ScalarMesonFactorizedDecayer,double> interfacea2Bottom ("a2Bottom", "The factorization paramter a_2 for decays of bottom baryons", &ScalarMesonFactorizedDecayer::_a2b, -0.24, -10.0, 10.0, false, false, true); static Parameter<ScalarMesonFactorizedDecayer,double> interfacea1Charm ("a1Charm", "The factorization paramter a_1 for decays of charm baryons", &ScalarMesonFactorizedDecayer::_a1c, 1.3, -10.0, 10.0, false, false, true); static Parameter<ScalarMesonFactorizedDecayer,double> interfacea2Charm ("a2Charm", "The factorization paramter a_2 for decays of charm baryons", &ScalarMesonFactorizedDecayer::_a2c, -0.55, -10.0, 10.0, false, false, true); static ParVector<ScalarMesonFactorizedDecayer,int> interfaceWeightLocation ("WeightLocation", "The locations of the weights for a given channel in the vector", &ScalarMesonFactorizedDecayer::_wgtloc, 0, 0, 0, 0, 10000, false, false, true); static ParVector<ScalarMesonFactorizedDecayer,double> interfaceWeightMax ("MaximumWeight", "The maximum weight for a given channel.", &ScalarMesonFactorizedDecayer::_wgtmax, 0, 0, 0, 0., 100., false, false, true); static ParVector<ScalarMesonFactorizedDecayer,double> interfaceWeights ("Weights", "The weights for the integration.", &ScalarMesonFactorizedDecayer::_weights, 0, 0, 0, 0., 1., false, false, true); } double ScalarMesonFactorizedDecayer::me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const { // initialisation if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&part),incoming); _vectors.resize(decay.size()); _tensors.resize(decay.size()); // create the matrix element vector<PDT::Spin> spin; for(unsigned int ix=0;ix<decay.size();++ix) spin.push_back(decay[ix]->dataPtr()->iSpin()); ME(DecayMatrixElement(PDT::Spin0,spin)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&part), incoming,true); // get the wavefunctions of the decay products for(unsigned int ix=0;ix<decay.size();++ix) { switch(decay[ix]->dataPtr()->iSpin()) { case 1: ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); break; case 3: VectorWaveFunction::constructSpinInfo(_vectors[ix],decay[ix],outgoing, true,false); break; case 5: TensorWaveFunction::constructSpinInfo(_tensors[ix],decay[ix],outgoing, true,false); break; default: assert(false); } } return 0.; } // get the wavefunctions of the decay products for(unsigned int ix=0;ix<decay.size();++ix) { switch(decay[ix]->dataPtr()->iSpin()) { case 1: break; case 3: VectorWaveFunction:: calculateWaveFunctions(_vectors[ix],decay[ix],outgoing,false); break; case 5: TensorWaveFunction:: calculateWaveFunctions(_tensors[ix],decay[ix],outgoing,false); break; default: assert(false); } } ME().zero(); // find the mode unsigned int mode(imode()),chel,fhel; int id0(part.id()),id1; Complex ii(0.,1.); vector<unsigned int> ihel(decay.size()); // loop over the different diagrams vector<LorentzPolarizationVectorE> form; Complex fp,f0,A0,A1,A2,A3,V,k; complex<InvEnergy2> h,bp,bm; // complex<Energy2> dot; Lorentz5Momentum q,sum; Energy2 q2; Energy MP(part.mass()),MV,msum,mdiff,scale; LorentzPolarizationVectorE dotv; double pre; ParticleVector cpart; for(unsigned int iy=0;iy<_CKMfact[mode].size();++iy) { MV=decay[_formpart[mode][iy]]->mass(); id1=decay[_formpart[mode][iy]]->id(); int id0t,id1t; _form[_formmapA[mode][iy]]->particleID(_formmapB[mode][iy],id0t,id1t); bool cc(id0t!=id0); // calculate the form-factor part form.clear(); q = part.momentum()-decay[_formpart[mode][iy]]->momentum(); q.rescaleMass(); sum = part.momentum()+decay[_formpart[mode][iy]]->momentum();sum.rescaleMass(); q2=q.mass2(); if(decay[_formpart[mode][iy]]->dataPtr()->iSpin()==1) { _form[_formmapA[mode][iy]]->ScalarScalarFormFactor(q2,_formmapB[mode][iy], id0,id1,MP,MV,f0,fp); pre=(MP*MP-MV*MV)/q2; form.push_back(fp*sum+pre*(f0-fp)*q); } else if(decay[_formpart[mode][iy]]->dataPtr()->iSpin()==3) { msum=MP+MV;mdiff=MP-MV; _form[_formmapA[mode][iy]]->ScalarVectorFormFactor(q2,_formmapB[mode][iy],id0, id1,MP,MV,A0,A1,A2,V); if(cc){V=-V;} A3 = 0.5/MV*(msum*A1-mdiff*A2); // compute the hadron currents for(unsigned int ix=0;ix<3;++ix) { // dot product complex<Energy> dot = _vectors[_formpart[mode][iy]][ix]*part.momentum(); // current form.push_back(-ii*msum*A1*_vectors[_formpart[mode][iy]][ix] +ii*A2/msum*dot*sum +2.*ii*MV/q2*(A3-A0)*dot*q +2.*V/msum*epsilon(_vectors[_formpart[mode][iy]][ix], part.momentum(), decay[_formpart[mode][iy]]->momentum())); } } else if(decay[_formpart[mode][iy]]->dataPtr()->iSpin()==5) { _form[_formmapA[mode][iy]]->ScalarTensorFormFactor(q2,_formmapB[mode][iy], id0,id1,MP,MV,h,k,bp,bm); if(cc){h=-h;} // compute the hadron currents for(unsigned int ix=0;ix<5;++ix) { dotv = _tensors[_formpart[mode][iy]][ix]*part.momentum(); complex<Energy2> dot = dotv*part.momentum(); form.push_back(ii*h*epsilon(dotv,sum,q)-k*dotv -bp*dot*sum-bm*dot*q); } } // find the particles for the current cpart.clear(); for(unsigned int ix=0;ix<decay.size();++ix) {if(ix!=_formpart[mode][iy]){cpart.push_back(decay[ix]);}} unsigned int ix=decay.size(); vector<unsigned int> constants(decay.size()+1),ihel(decay.size()+1); int itemp(1); do { --ix; if(ix!=_formpart[mode][iy]) { itemp*=decay[ix]->data().iSpin(); constants[ix]=itemp; } } while(ix!=0); constants[decay.size()]=1; if(_formpart[mode][iy]!=decay.size()) constants[_formpart[mode][iy]]=constants[_formpart[mode][iy]+1]; // calculate the current vector<LorentzPolarizationVectorE> curr=_current[_currentmapA[mode][iy]]-> current(_currentmapB[mode][iy],ichan,scale,cpart,meopt); pre = (pow(part.mass()/scale,int(cpart.size()-2))); // loop over the helicities to calculate the matrix element ihel[0]=0; for(chel=0;chel<curr.size();++chel) { for(ix=decay.size();ix>0;--ix) { if(ix!=_formpart[mode][iy]+1) ihel[ix]=(chel%constants[ix-1])/constants[ix]; } for(fhel=0;fhel<form.size();++fhel) { ihel[_formpart[mode][iy]+1]=fhel; ME()(ihel) +=pre*_CKMfact[mode][iy]* form[fhel].dot(curr[chel])*SM().fermiConstant(); } } } // perform the contraction return 0.5*(ME().contract(_rho)).real(); } void ScalarMesonFactorizedDecayer::findModes(unsigned int imode, vector<tPDVector> & particles, vector<unsigned int> & loc, vector<bool> & cc) { unsigned int ix,iy,nfound,iz; // resize the vectors loc.clear();cc.clear(); // get the id's for the mode vector<int> id,idbar; int idtemp; bool found; for(ix=0;ix<particles[imode].size();++ix) { id.push_back(particles[imode][ix]->id()); if(particles[imode][ix]->CC()) idbar.push_back(particles[imode][ix]->CC()->id()); else idbar.push_back(id[ix]); } vector<bool> done(id.size(),false); // loop over the modes for(ix=0;ix<particles.size();++ix) { if(ix==imode||particles[ix].empty()) continue; assert(!particles[ix].empty()); // the particle mode if(particles[ix][0]->id()==id[0]&&particles[ix].size()==id.size()) { nfound=1; for(iy=0;iy<id.size();++iy){done[iy]=false;} for(iy=1;iy<id.size();++iy) { idtemp=particles[ix][iy]->id(); iz=1; found=false; do { if(idtemp==id[iz]&&!done[iz]) { done[iz]=true; found=true; } ++iz; } while(iz<id.size()&&!found); if(found) ++nfound; } if(nfound==id.size()) { cc.push_back(false); loc.push_back(ix); } } // the charge conjugate mode if(particles[ix][0]->id()==idbar[0]&&particles[ix].size()==idbar.size()) { nfound=1; for(iy=0;iy<idbar.size();++iy) done[iy]=false; for(iy=1;iy<idbar.size();++iy) { idtemp=particles[ix][iy]->id(); iz=1; found=false; do { if(idtemp==idbar[iz]&&!done[iz]) { done[iz]=true; found=true; } ++iz; } while(iz<idbar.size()&&!found); if(found){++nfound;} } if(nfound==idbar.size()){cc.push_back(false);loc.push_back(ix);} } } } void ScalarMesonFactorizedDecayer::dataBaseOutput(ofstream & output, bool header) const { unsigned int ix; if(header) output << "update decayers set parameters=\""; DecayIntegrator::dataBaseOutput(output,false); output << "newdef " << name() << ":a1Bottom " << _a1b << "\n"; output << "newdef " << name() << ":a2Bottom " << _a2b << "\n"; output << "newdef " << name() << ":a1Charm " << _a1c << "\n"; output << "newdef " << name() << ":a2Charm " << _a2c << "\n"; for(ix=0;ix<_current.size();++ix) { _current[ix]->dataBaseOutput(output,false,true); output << "insert " << name() << ":Currents " << ix << " " << _current[ix]->name() << " \n"; } for(ix=0;ix<_form.size();++ix) { _form[ix]->dataBaseOutput(output,false,true); output << "insert " << name() << ":FormFactors " << ix << " " << _form[ix]->name() << " \n"; } for(ix=0;ix<_wgtloc.size();++ix) { output << "insert " << name() << ":WeightLocation " << ix << " " << _wgtloc[ix] << "\n"; } for(ix=0;ix<_wgtmax.size();++ix) { output << "insert " << name() << ":MaximumWeight " << ix << " " << _wgtmax[ix] << "\n"; } for(ix=0;ix<_weights.size();++ix) { output << "insert " << name() << ":Weights " << ix << " " << _weights[ix] << "\n"; } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/EtaPiPiGammaDecayer.cc����������������������������������������0000644�0001750�0001750�00000060701�11754474774�024301� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // EtaPiPiGammaDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the EtaPiPiGammaDecayer class. // #include "EtaPiPiGammaDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/epsilon.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" #include "Herwig++/Utilities/GaussianIntegrator.h" using namespace Herwig; using namespace ThePEG::Helicity; void EtaPiPiGammaDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_maxweight.size();++ix) _maxweight[ix]=mode(ix)->maxWeight(); } } EtaPiPiGammaDecayer::EtaPiPiGammaDecayer() : _incoming(2), _coupling(2), _maxweight(2), _option(2) { // the pion decay constant _fpi=130.7*MeV; // the rho mass _mrho=0.7711*GeV; _rhowidth=0.1492*GeV; // the constants for the omnes function form _aconst=0.5/_mrho/_mrho; _cconst=1.0; // use local values of the parameters _localparameters=true; // the modes // eta decay _incoming[0] = 221; _option[0] = 3; _coupling[0] = 5.060e-3; _maxweight[0] = 3.95072; // eta' decay _incoming[1] = 331; _option[1] = 3; _coupling[1] = 4.278e-3; _maxweight[1] = 3.53141; _rhoconst=0.; _mpi=ZERO; // initialization of the experimental function _initialize =false; _npoints=100; Energy en[35]={300*MeV, 320*MeV, 340*MeV, 360*MeV, 380*MeV, 400*MeV, 420*MeV, 440*MeV, 460*MeV, 480*MeV, 500*MeV, 520*MeV, 540*MeV, 560*MeV, 580*MeV, 600*MeV, 620*MeV, 640*MeV, 660*MeV, 680*MeV, 700*MeV, 720*MeV, 740*MeV, 760*MeV, 780*MeV, 800*MeV, 820*MeV, 840*MeV, 860*MeV, 880*MeV, 900*MeV, 920*MeV, 940*MeV, 960*MeV, 980*MeV}; _energy=vector<Energy>(en,en+35); double phs[35]={ 00.1, 0.4, 0.7, 1.0, 1.5, 02.0, 2.5, 3.2, 4.0, 4.9, 05.9, 7.1, 8.5, 10.1, 12.1, 14.4, 17.3, 20.9, 25.4, 31.2, 38.7, 48.4, 60.6, 74.9, 90.0, 103.8, 115.3, 124.3, 131.3, 136.7, 141.0, 144.5, 147.3, 149.7, 151.8}; _phase=vector<double>(phs,phs+35); // experimental omnes function Energy omnesen[100] ={ 282.534*MeV, 289.32 *MeV, 296.106*MeV, 302.893*MeV, 309.679*MeV, 316.466*MeV, 323.252*MeV, 330.038*MeV, 336.825*MeV, 343.611*MeV, 350.398*MeV, 357.184*MeV, 363.97 *MeV, 370.757*MeV, 377.543*MeV, 384.33 *MeV, 391.116*MeV, 397.902*MeV, 404.689*MeV, 411.475*MeV, 418.261*MeV, 425.048*MeV, 431.834*MeV, 438.621*MeV, 445.407*MeV, 452.193*MeV, 458.98 *MeV, 465.766*MeV, 472.553*MeV, 479.339*MeV, 486.125*MeV, 492.912*MeV, 499.698*MeV, 506.485*MeV, 513.271*MeV, 520.057*MeV, 526.844*MeV, 533.63 *MeV, 540.417*MeV, 547.203*MeV, 553.989*MeV, 560.776*MeV, 567.562*MeV, 574.349*MeV, 581.135*MeV, 587.921*MeV, 594.708*MeV, 601.494*MeV, 608.281*MeV, 615.067*MeV, 621.853*MeV, 628.64 *MeV, 635.426*MeV, 642.213*MeV, 648.999*MeV, 655.785*MeV, 662.572*MeV, 669.358*MeV, 676.145*MeV, 682.931*MeV, 689.717*MeV, 696.504*MeV, 703.29 *MeV, 710.077*MeV, 716.863*MeV, 723.649*MeV, 730.436*MeV, 737.222*MeV, 744.009*MeV, 750.795*MeV, 757.581*MeV, 764.368*MeV, 771.154*MeV, 777.94 *MeV, 784.727*MeV, 791.513*MeV, 798.3 *MeV, 805.086*MeV, 811.872*MeV, 818.659*MeV, 825.445*MeV, 832.232*MeV, 839.018*MeV, 845.804*MeV, 852.591*MeV, 859.377*MeV, 866.164*MeV, 872.95 *MeV, 879.736*MeV, 886.523*MeV, 893.309*MeV, 900.096*MeV, 906.882*MeV, 913.668*MeV, 920.455*MeV, 927.241*MeV, 934.028*MeV, 940.814*MeV, 947.6 *MeV, 954.387*MeV}; _omnesenergy.assign(omnesen,omnesen+100); double omnesre[100] ={ 0.860676 , 0.851786 , 0.843688 , 0.835827 , 0.828031 , 0.820229 , 0.812370 , 0.804424 , 0.796354 , 0.788143 , 0.779698 , 0.770939 , 0.761692 , 0.752707 , 0.743823 , 0.735004 , 0.726091 , 0.717047 , 0.707862 , 0.698439 , 0.688685 , 0.678510 , 0.668518 , 0.658481 , 0.648344 , 0.638219 , 0.627989 , 0.617603 , 0.607222 , 0.596711 , 0.586026 , 0.575280 , 0.564282 , 0.553067 , 0.541923 , 0.530574 , 0.519112 , 0.507690 , 0.496055 , 0.484313 , 0.472496 , 0.460245 , 0.447943 , 0.435766 , 0.423390 , 0.410997 , 0.398510 , 0.385479 , 0.372458 , 0.359520 , 0.346129 , 0.332837 , 0.319623 , 0.305858 , 0.292238 , 0.278690 , 0.264391 , 0.250316 , 0.236400 , 0.221655 , 0.207196 , 0.192956 , 0.177745 , 0.162833 , 0.148209 , 0.132603 , 0.117202 , 0.102090 , 0.0862283 , 0.0703392 , 0.0545317 , 0.0383762 , 0.0219486 , 0.00518648,-0.0113217 , -0.0280201 ,-0.045445 ,-0.0625479 ,-0.079748 ,-0.0978819 , -0.11569 ,-0.133447 ,-0.152117 ,-0.170608 ,-0.189137 , -0.208597 ,-0.227864 ,-0.247185 ,-0.267306 ,-0.287382 , -0.307707 ,-0.328882 ,-0.350103 ,-0.37178 ,-0.394464 , -0.417228 ,-0.440561 ,-0.464976 ,-0.490278 ,-0.517527}; _omnesfunctionreal.assign(omnesre,omnesre+100); double omnesim[100] ={ 0.00243346, 0.000894972,-0.000612496,-0.00209178,-0.00354344, -0.00496737,-0.00636316 ,-0.00773022 ,-0.00906769,-0.0103569 , -0.0116108 ,-0.0128658 ,-0.0145424 ,-0.0165746 ,-0.0186438 , -0.0206363 ,-0.0225379 ,-0.0243827 ,-0.0261488 ,-0.0278572 , -0.0295317 ,-0.0316349 ,-0.0339321 ,-0.0362345 ,-0.0386555 , -0.0410799 ,-0.0434534 ,-0.0459509 ,-0.0484302 ,-0.0508376 , -0.0533398 ,-0.0557937 ,-0.0581587 ,-0.0608612 ,-0.0635382 , -0.0661231 ,-0.068983 ,-0.0717604 ,-0.0744215 ,-0.0772635 , -0.0799845 ,-0.0825991 ,-0.0857537 ,-0.0888139 ,-0.0917441 , -0.0948263 ,-0.0977055 ,-0.100462 ,-0.103773 ,-0.106912 , -0.109931 ,-0.113413 ,-0.116647 ,-0.119722 ,-0.123282 , -0.126521 ,-0.129593 ,-0.133324 ,-0.136691 ,-0.139854 , -0.143729 ,-0.14718 ,-0.150356 ,-0.154353 ,-0.157926 , -0.161133 ,-0.165174 ,-0.168899 ,-0.172212 ,-0.176116 , -0.179892 ,-0.183445 ,-0.187134 ,-0.190947 ,-0.195144 , -0.198771 ,-0.202443 ,-0.206906 ,-0.210561 ,-0.214207 , -0.218943 ,-0.222806 ,-0.226551 ,-0.231273 ,-0.235267 , -0.239178 ,-0.244082 ,-0.24836 ,-0.252492 ,-0.257394 , -0.261812 ,-0.266156 ,-0.271161 ,-0.275849 ,-0.280675 , -0.286275 ,-0.291716 ,-0.297353 ,-0.303621 ,-0.310452 }; _omnesfunctionimag.assign(omnesim,omnesim+100); // integration cut parameter _epscut=0.4*MeV; // size of the arrays _nsizea = _energy.size();_nsizeb = _omnesenergy.size(); // intermediates generateIntermediates(false); } void EtaPiPiGammaDecayer::doinit() { DecayIntegrator::doinit(); // check the consistence of the parameters unsigned int isize=_incoming.size(); if(isize!=_coupling.size()||isize!=_option.size()||isize!=_maxweight.size()|| _energy.size()!=_phase.size()||_omnesenergy.size()!=_omnesfunctionreal.size()|| _omnesenergy.size()!=_omnesfunctionimag.size()) throw InitException() << "Inconsistent parameters in " << "EtaPiPiGammaDecayer::doinit()" << Exception::abortnow; // set the parameters tPDPtr rho(getParticleData(ParticleID::rho0)); if(!_localparameters) { _mrho=rho->mass(); _rhowidth=rho->width(); } _mpi=getParticleData(ParticleID::piplus)->mass(); Energy pcm(Kinematics::pstarTwoBodyDecay(_mrho,_mpi,_mpi)); _rhoconst=sqr(_mrho)*_rhowidth/pow<3,1>(pcm); // set up the experimental omnes function if needed if(_initialize) { // convert the phase shift into radians vector<double> radphase; for(unsigned int ix=0;ix<_phase.size();++ix) { radphase.push_back(_phase[ix]/180.*Constants::pi); } // set up an interpolator for this Interpolator<double,Energy>::Ptr intphase=make_InterpolatorPtr(radphase,_energy,3); // limits and step sizes Energy moff(2.*_mpi),meta(getParticleData(ParticleID::etaprime)->mass()), upp(meta),step((meta-moff)/_npoints); // intergrator GaussianIntegrator integrator; // integrand OmnesIntegrand D1(intphase,sqr(_epscut)); // loop for integrals double D1real,D1imag; Complex ii(0.,1.),answer; moff+=0.5*step; _omnesfunctionreal.clear(); _omnesfunctionimag.clear(); _omnesenergy.clear(); for( ;moff<upp;moff+=step) { D1.setScale(moff*moff); // piece between 0 and 1 GeV using Constants::pi; Energy2 moff2(sqr(moff)),eps2(sqr(_epscut)); D1real=-moff2*(integrator.value(D1,4.*_mpi*_mpi,moff2-eps2)+ integrator.value(D1,moff2+eps2,upp*upp))/pi; D1imag=-(*intphase)(moff); // piece above 1 GeV D1real+=-(*intphase)(upp)/pi*log(upp*upp/(upp*upp-moff*moff)); // calculate the answer answer = exp(D1real+ii*D1imag); // put into the arrays _omnesfunctionreal.push_back(answer.real()); _omnesfunctionimag.push_back(answer.imag()); _omnesenergy.push_back(moff); } } // set up the modes tPDVector extpart;extpart.resize(4); extpart[1] = getParticleData(ParticleID::piplus); extpart[2] = getParticleData(ParticleID::piminus); extpart[3] = getParticleData(ParticleID::gamma); vector<double> dummyweights(1,1.); DecayPhaseSpaceChannelPtr newchannel; DecayPhaseSpaceModePtr mode; for(unsigned int ix=0;ix<_coupling.size();++ix) { extpart[0] = getParticleData(_incoming[ix]); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,3); newchannel->addIntermediate(rho,0,0.0, 1,2); mode->addChannel(newchannel); addMode(mode,_maxweight[ix],dummyweights); } } int EtaPiPiGammaDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); // check number of external particles if(children.size()!=3){return imode;} // check the outgoing particles unsigned int npip(0),npim(0),ngamma(0); tPDVector::const_iterator pit = children.begin(); int id; for(;pit!=children.end();++pit) { id=(**pit).id(); if(id==ParticleID::piplus) ++npip; else if(id==ParticleID::piminus) ++npim; else if(id==ParticleID::gamma) ++ngamma; } if(!(npip==1&&npim==1&&ngamma==1)) return imode; unsigned int ix(0); id=parent->id(); do{if(id==_incoming[ix]){imode=ix;}++ix;} while(imode<0&&ix<_incoming.size()); cc=false; return imode; } void EtaPiPiGammaDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_fpi,MeV) << _incoming << _coupling << _maxweight << _option << ounit(_aconst,1/MeV2) << _cconst <<ounit(_mrho,MeV) << ounit(_rhowidth,MeV) << _rhoconst << ounit(_mpi,MeV) << _localparameters << ounit(_energy,MeV) << ounit(_omnesenergy,MeV) << _phase << _omnesfunctionreal << _omnesfunctionimag << _initialize << _npoints << ounit(_epscut,MeV); } void EtaPiPiGammaDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_fpi,MeV) >> _incoming >> _coupling >> _maxweight >> _option >> iunit(_aconst,1/MeV2) >> _cconst >>iunit(_mrho,MeV) >> iunit(_rhowidth,MeV) >> _rhoconst >> iunit(_mpi,MeV) >> _localparameters >> iunit(_energy,MeV) >> iunit(_omnesenergy,MeV) >> _phase >>_omnesfunctionreal >> _omnesfunctionimag >> _initialize >> _npoints >> iunit(_epscut,MeV); } ClassDescription<EtaPiPiGammaDecayer> EtaPiPiGammaDecayer::initEtaPiPiGammaDecayer; // Definition of the static class description member. void EtaPiPiGammaDecayer::Init() { static ClassDocumentation<EtaPiPiGammaDecayer> documentation ("The EtaPiPiGammaDecayer class is design for the decay of" " the eta and eta prime to pi+pi-gamma", "The decays of $\\eta,\\eta'\\to\\pi^+\\pi^-\\gamma$ were simulated" " using the matrix elements from \\cite{Venugopal:1998fq,Holstein:2001bt}", "\\bibitem{Venugopal:1998fq} E.~P.~Venugopal and B.~R.~Holstein,\n" "Phys.\\ Rev.\\ D {\\bf 57} (1998) 4397 [arXiv:hep-ph/9710382].\n" "%%CITATION = PHRVA,D57,4397;%%\n" "\\bibitem{Holstein:2001bt} B.~R.~Holstein,\n" " Phys.\\ Scripta {\\bf T99} (2002) 55 [arXiv:hep-ph/0112150].\n" "%%CITATION = PHSTB,T99,55;%%\n"); static Parameter<EtaPiPiGammaDecayer,Energy> interfacefpi ("fpi", "The pion decay constant", &EtaPiPiGammaDecayer::_fpi, MeV, 130.7*MeV, ZERO, 200.*MeV, false, false, false); static ParVector<EtaPiPiGammaDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &EtaPiPiGammaDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<EtaPiPiGammaDecayer,double> interfaceCoupling ("Coupling", "The coupling for the decay mode", &EtaPiPiGammaDecayer::_coupling, 0, 0, 0, 0., 100., false, false, true); static ParVector<EtaPiPiGammaDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &EtaPiPiGammaDecayer::_maxweight, 0, 0, 0, 0., 100., false, false, true); static Parameter<EtaPiPiGammaDecayer,Energy> interfaceRhoMass ("RhoMass", "The mass of the rho", &EtaPiPiGammaDecayer::_mrho, MeV, 771.1*MeV, 400.*MeV, 1000.*MeV, false, false, false); static Parameter<EtaPiPiGammaDecayer,Energy> interfaceRhoWidth ("RhoWidth", "The width of the rho", &EtaPiPiGammaDecayer::_rhowidth, MeV, 149.2*MeV, 100.*MeV, 300.*MeV, false, false, false); static Switch<EtaPiPiGammaDecayer,bool> interfaceLocalParameters ("LocalParameters", "Use local values of the rho mass and width", &EtaPiPiGammaDecayer::_localparameters, true, false, false); static SwitchOption interfaceLocalParametersLocal (interfaceLocalParameters, "Local", "Use local parameters", true); static SwitchOption interfaceLocalParametersParticleData (interfaceLocalParameters, "ParticleData", "Use values from the particle data objects", false); static Parameter<EtaPiPiGammaDecayer,double> interfaceOmnesC ("OmnesC", "The constant c for the Omnes form of the prefactor", &EtaPiPiGammaDecayer::_cconst, 1.0, -10., 10., false, false, false); static Parameter<EtaPiPiGammaDecayer,InvEnergy2> interfaceOmnesA ("OmnesA", "The constant a for the Omnes form of the prefactor", &EtaPiPiGammaDecayer::_aconst, 1./GeV2, 0.8409082/GeV2, ZERO, 10./GeV2, false, false, false); static ParVector<EtaPiPiGammaDecayer,int> interfaceOption ("Option", "The form of the prefactor 0 is a VMD model using M Gamma for the width term," "1 is a VMD model using q Gamma for the width term," "2. analytic form of the Omnes function," "3. experimental form of the Omnes function.", &EtaPiPiGammaDecayer::_option, 0, 0, 0, 0, 4, false, false, true); static ParVector<EtaPiPiGammaDecayer,Energy> interfacePhase_Energy ("Phase_Energy", "The energy values for the phase shift for the experimental version of the" " Omnes function", &EtaPiPiGammaDecayer::_energy, MeV, -1, 1.0*MeV, 300.0*MeV, 2000.0*MeV, false, false, true); static ParVector<EtaPiPiGammaDecayer,double> interfacePhase_Shift ("Phase_Shift", "The experimental values of the phase shift for the experimental version" " of the Omnes function", &EtaPiPiGammaDecayer::_phase, 1.0, -1, 0.0, 0.0, 1000.0, false, false, true); static ParVector<EtaPiPiGammaDecayer,Energy> interfaceOmnesEnergy ("OmnesEnergy", "The energy values for the interpolation of the experimental Omnes function", &EtaPiPiGammaDecayer::_omnesenergy, MeV, -1, 1.*MeV, 250.0*MeV, 2000.*MeV, false, false, true); static ParVector<EtaPiPiGammaDecayer,double> interfaceOmnesReal ("OmnesReal", "The real part of the experimental Omnes function for the interpolation.", &EtaPiPiGammaDecayer::_omnesfunctionreal, 1., -1, 1., -100., 100., false, false, true); static ParVector<EtaPiPiGammaDecayer,double> interfaceOmnesImag ("OmnesImag", "The imaginary part of the experimental Omnes function for the interpolation.", &EtaPiPiGammaDecayer::_omnesfunctionimag, 1., -1, 1., -100., 100., false, false, true); static Switch<EtaPiPiGammaDecayer,bool> interfaceInitializeOmnes ("InitializeOmnes", "Initialize the experimental version of the Omnes function.", &EtaPiPiGammaDecayer::_initialize, false, false, false); static SwitchOption interfaceInitializeOmnesInitialize (interfaceInitializeOmnes, "Yes", "Perform the initialization", true); static SwitchOption interfaceInitializeOmnesNoInitialization (interfaceInitializeOmnes, "No", "No initialization", false); static Parameter<EtaPiPiGammaDecayer,unsigned int> interfaceOmnesPoints ("OmnesPoints", "The number of points for the interpolation table for the experimental" " Omnes function.", &EtaPiPiGammaDecayer::_npoints, 100, 50, 200, false, false, true); static Parameter<EtaPiPiGammaDecayer,Energy> interfaceOmnesCut ("OmnesCut", "The cut parameter for the integral in the experimental Omnes function.", &EtaPiPiGammaDecayer::_epscut, MeV, 0.1*MeV, 0.001*MeV, 1.0*MeV, false, false, true); } double EtaPiPiGammaDecayer::me2(const int,const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { useMe(); if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin0,PDT::Spin0,PDT::Spin1)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); for(unsigned int ix=0;ix<2;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); VectorWaveFunction::constructSpinInfo(_vectors,decay[2], outgoing,true,true); return 0.; } VectorWaveFunction::calculateWaveFunctions(_vectors,decay[2], outgoing,true); // prefactor for the matrix element complex<InvEnergy3> pre(_coupling[imode()]*2.*sqrt(2.)/(_fpi*_fpi*_fpi)); Lorentz5Momentum ppipi(decay[0]->momentum()+decay[1]->momentum()); ppipi.rescaleMass(); Energy q(ppipi.mass()); Energy2 q2(q*q); Complex ii(0.,1.); // first VMD option Complex fact; if(_option[imode()]==0) { Energy pcm(Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi)); Complex resfact(q2/(_mrho*_mrho-q2-ii*_mrho*pcm*pcm*pcm*_rhoconst/q2)); fact=(1.+1.5*resfact); } // second VMD option else if(_option[imode()]==1) { Energy pcm(Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi)); Complex resfact(q2/(_mrho*_mrho-q2-ii*pcm*pcm*pcm*_rhoconst/q)); fact=(1.+1.5*resfact); } // analytic omne function else if(_option[imode()]==2) { fact=(1.-_cconst+_cconst*(1.+_aconst*q2)/analyticOmnes(q2)); } // experimental omnes function else if(_option[imode()]==3) { fact=(1.-_cconst+_cconst*(1.+_aconst*q2)/experimentalOmnes(q2)); } pre = pre*fact; LorentzPolarizationVector epstemp(pre*Helicity::epsilon(decay[0]->momentum(), decay[1]->momentum(), decay[2]->momentum())); // compute the matrix element vector<unsigned int> ispin(4,0); for(ispin[3]=0;ispin[3]<3;++ispin[3]) { if(ispin[3]==1) ME()(ispin)=0.; else ME()(ispin)=epstemp.dot(_vectors[ispin[3]]); } // contract the whole thing return ME().contract(_rho).real(); } double EtaPiPiGammaDecayer:: threeBodyMatrixElement(const int imodeb,const Energy2 ,const Energy2 s3,const Energy2 s2,const Energy2 s1,const Energy , const Energy ,const Energy ) const { complex<InvEnergy3> pre(_coupling[imodeb]*2.*sqrt(2.)/pow<3,1>(_fpi)); Energy q(sqrt(s3)); Complex ii(0.,1.); // first VMD option Complex fact; if(_option[imodeb]==0) { Energy pcm(Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi)); Complex resfact(s3/(_mrho*_mrho-s3-ii*_mrho*pcm*pcm*pcm*_rhoconst/s3)); fact=(1.+1.5*resfact); } // second VMD option else if(_option[imodeb]==1) { Energy pcm(Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi)); Complex resfact(s3/(_mrho*_mrho-s3-ii*pcm*pcm*pcm*_rhoconst/q)); fact=(1.+1.5*resfact); } // analytic omne function else if(_option[imodeb]==2) { fact=(1.-_cconst+_cconst*(1.+_aconst*s3)/analyticOmnes(s3)); } // experimental omnes function else if(_option[imodeb]==3) { fact=(1.-_cconst+_cconst*(1.+_aconst*s3)/experimentalOmnes(s3)); } pre =pre*fact; InvEnergy6 factor((pre*conj(pre)).real()); Energy2 mpi2(_mpi*_mpi); return factor*((-mpi2*(-2*mpi2+s1+s2)*(-2*mpi2+s1+s2)+(mpi2-s1)*(mpi2-s2)*s3)/4.); } WidthCalculatorBasePtr EtaPiPiGammaDecayer::threeBodyMEIntegrator(const DecayMode & dm) const { // workout which mode we are doing int id(dm.parent()->id()),imode(1); if(id==ParticleID::eta){imode=0;} // construct the integrator vector<double> inweights(1,1.); vector<Energy> inmass(1,getParticleData(ParticleID::rho0)->mass()); vector<Energy> inwidth(1,getParticleData(ParticleID::rho0)->width()); vector<int> intype(1,1); vector<double> inpow(1,0.0); WidthCalculatorBasePtr output(new_ptr(ThreeBodyAllOnCalculator<EtaPiPiGammaDecayer> (inweights,intype,inmass,inwidth,inpow,*this,imode,_mpi,_mpi,ZERO))); return output; } void EtaPiPiGammaDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); output << "newdef " << name() << ":fpi " << _fpi/MeV << "\n"; output << "newdef " << name() << ":RhoMass " << _mrho/MeV << "\n"; output << "newdef " << name() << ":RhoWidth " << _rhowidth/MeV << "\n"; output << "newdef " << name() << ":LocalParameters " << _localparameters << "\n"; output << "newdef " << name() << ":OmnesC " << _cconst << "\n"; output << "newdef " << name() << ":OmnesA " << _aconst*GeV2 << "\n"; output << "newdef " << name() << ":InitializeOmnes " << _initialize << "\n"; output << "newdef " << name() << ":OmnesPoints " << _npoints << "\n"; output << "newdef " << name() << ":OmnesCut " << _epscut/MeV << "\n"; for(unsigned int ix=0;ix<2;++ix) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix] << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; output << "newdef " << name() << ":Option " << ix << " " << _option[ix] << "\n"; } for(unsigned int ix=0;ix<_energy.size();++ix) { if(ix<_nsizea) { output << "newdef " << name() << ":Phase_Energy " << ix << " " << _energy[ix]/MeV << "\n"; output << "newdef " << name() << ":Phase_Shift " << ix << " " << _phase[ix] << "\n"; } else { output << "insert " << name() << ":Phase_Energy " << ix << " " << _energy[ix]/MeV << "\n"; output << "insert " << name() << ":Phase_Shift " << ix << " " << _phase[ix] << "\n"; } } for(unsigned int ix=0;ix<_omnesenergy.size();++ix) { if(ix<_nsizeb) { output << "newdef " << name() << ":OmnesEnergy " << ix << " " << _omnesenergy[ix]/MeV << "\n"; output << "newdef " << name() << ":OmnesReal " << ix << " " << _omnesfunctionreal[ix] << "\n"; output << "newdef " << name() << ":OmnesImag " << ix << " " << _omnesfunctionimag [ix] << "\n"; } else { output << "insert " << name() << ":OmnesEnergy " << ix << " " << _omnesenergy[ix]/MeV << "\n"; output << "insert " << name() << ":OmnesReal " << ix << " " << _omnesfunctionreal[ix] << "\n"; output << "insert " << name() << ":OmnesImag " << ix << " " << _omnesfunctionimag [ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ���������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/PScalar4FermionsDecayer.h�������������������������������������0000644�0001750�0001750�00000015140�11754474774�025016� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PScalar4FermionsDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PScalar4FermionsDecayer_H #define HERWIG_PScalar4FermionsDecayer_H // This is the declaration of the PScalar4FermionsDecayer class. #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzSpinorBar.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>PScalar4FermionsDecayer</code> class is designed for the * decay of the neutral pion to four leptons, in this case electrons. * The propagator for the off-shell boson is taken to be \f$\frac1{m^2}\f$. There * is also the option of including a vector meson dominance form-factor. * * In this case the matrix element is * \f[\mathcal{M} = \frac{g}{m^2_{f_1\bar{f_1}}m^2_{f_2\bar{f_2}}} * \epsilon^{\mu\nu\alpha\beta} * \bar{u}(p_{f_1})\gamma_\mu v(p_{\bar{f_1}})p_{f_1\bar{f_1}\nu} * \bar{u}(p_{f_2})\gamma_\alpha v(p_{\bar{f_2}}) p_{f_2\bar{f_2}\beta} * \f] * It includes the option of a vector meson dominance (VMD) type form factor * \f$\frac{-M^2+i\Gamma M}{(m^2_{f\bar{f}}-M^2+i\Gamma M)}\f$. In the case of identical * fermions in also includes the exchange diagram. * * @see DecayIntegrator * @see PScalarVectorVectorDecayer * @see PScalarVectorFermionsDecayer * * \author Peter Richardson * */ class PScalar4FermionsDecayer: public DecayIntegrator { public: /** * Default constructor. */ PScalar4FermionsDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<PScalar4FermionsDecayer> initPScalar4FermionsDecayer; /** * Private and non-existent assignment operator. */ PScalar4FermionsDecayer & operator=(const PScalar4FermionsDecayer &); private: /** * coupling for a decay */ vector<InvEnergy> _coupling; /** * the PDG codes for the incoming particle */ vector<int> _incoming; /** * the PDG codes for the first outgoing fermion */ vector<int> _outgoing1; /** * the PDG codes for the second outgoing */ vector<int> _outgoing2; /** * maximum weight for a decay */ vector<double> _maxweight; /** * Include the VMD factor */ vector<int> _includeVMD; /** * PDG code of the particle for the VMD factor */ vector<int> _VMDid; /** * Mass of the particle for the VMD factor */ vector<Energy> _VMDmass; /** * Width of the particle for the VMD factor */ vector<Energy> _VMDwidth; /** * initial number of modes */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Spinors for the decay products */ mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > _wave[2]; /** * Barred spinors for the decay products */ mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > _wavebar[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of PScalar4FermionsDecayer. */ template <> struct BaseClassTrait<Herwig::PScalar4FermionsDecayer,1> { /** Typedef of the base class of PScalar4FermionsDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::PScalar4FermionsDecayer> : public ClassTraitsBase<Herwig::PScalar4FermionsDecayer> { /** Return the class name. */ static string className() { return "Herwig::PScalar4FermionsDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_PScalar4FermionsDecayer_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/DtoKPiPiE691.h������������������������������������������������0000644�0001750�0001750�00000027027�11754474774�022404� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DtoKPiPiE691.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DtoKPiPiE691_H #define HERWIG_DtoKPiPiE691_H // // This is the declaration of the DtoKPiPiE691 class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the DtoKPiPiE691 class. * * @see \ref DtoKPiPiE691Interfaces "The interfaces" * defined for DtoKPiPiE691. */ class DtoKPiPiE691: public DecayIntegrator { public: /** * The default constructor. */ DtoKPiPiE691(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2( const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); protected: /** * Methods to calculate the amplitudes for a given channel */ //@{ /** * Calculate the decay angle for the amplitude, the angle is the * angle between the 2 and 3 for the decay \f$D\to(12)3\f$ in the rest frame of * the resonance which decays to 1 and 2. * @param pparent The momentum of the parent * @param pres The momentum of the resonance * @param p1 The momentum of the first decay product of the resonance */ double decayAngle(const Lorentz5Momentum & pparent, const Lorentz5Momentum & pres, const Lorentz5Momentum & p1) const { Energy2 dot = pparent*p1, mREp = pres*pparent; Energy2 mRE1 = pres*p1, mp2 = pparent.mass2(); Energy2 mres2 = pres.mass2(), m12 = p1.mass2(); return (dot*mres2-mREp*mRE1)/ sqrt((mREp*mREp-mres2*mp2)*(mRE1*mRE1-mres2*m12)); } /** * Calculate the amplitude * @param ispin The spin of the resonance * @param costheta The decay angle * @param mAB The off-shell mass of the resonance * @param wres The width of the resonance * @param mres The on-shell mass of the resonance */ Complex amplitude(int ispin, double costheta,Energy mAB, Energy wres, Energy mres) const { double s = 0.; switch(ispin) { case 0: s = 1.; break; case 1: s = costheta; break; case 2: s = 1.5*sqr(costheta)-0.5; break; default: assert(false); } Complex bw = sqrt(0.5*wres/GeV/Constants::pi)*GeV/ (mAB-mres-complex<Energy>(ZERO,0.5*wres)); return s*bw; } //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<DtoKPiPiE691> initDtoKPiPiE691; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DtoKPiPiE691 & operator=(const DtoKPiPiE691 &); private: /** * Amplitudes and phases for the different components */ //@{ /** * Amplitude of the non-resonant component for \f$D^+\to K^-\pi^+\pi^+\f$ */ double _a1NR; /** * Phase of the non-resonant component for \f$D^+\to K^-\pi^+\pi^+\f$ */ double _phi1NR; /** * Amplitude of the \f$\bar{K}^*(892)^0\f$ component for \f$D^+\to K^-\pi^+\pi^+\f$ */ double _a1K892; /** * Phase of the \f$\bar{K}^*(892)^0\f$ component for \f$D^+\to K^-\pi^+\pi^+\f$ */ double _phi1K892; /** * Amplitude of the \f$\bar{K}^*_0(1430)^0\f$ component for \f$D^+\to K^-\pi^+\pi^+\f$ */ double _a1K1430; /** * Phase of the \f$\bar{K}^*_0(1430)^0\f$ component for \f$D^+\to K^-\pi^+\pi^+\f$ */ double _phi1K1430; /** * Amplitude of the \f$\bar{K}^*_0(1680)^0\f$ component for \f$D^+\to K^-\pi^+\pi^+\f$ */ double _a1K1680; /** * Phase of the \f$\bar{K}^*_0(1680)^0\f$ component for \f$D^+\to K^-\pi^+\pi^+\f$ */ double _phi1K1680; /** * Amplitude of the non-resonant component for \f$D^0\to K^-\pi^+\pi^0\f$ */ double _a2NR; /** * Phase of the non-resonant component for \f$D^0\to K^-\pi^+\pi^0\f$ */ double _phi2NR; /** * Amplitude of the \f$\bar{K}^*(892)^0\f$ component for \f$D^0\to K^-\pi^+\pi^0\f$ */ double _a2K8920; /** * Phase of the \f$\bar{K}^*(892)^0\f$ component for \f$D^0\to K^-\pi^+\pi^0\f$ */ double _phi2K8920; /** * Amplitude of the \f$K^*(892)^-\f$ component for \f$D^0\to K^-\pi^+\pi^0\f$ */ double _a2K892m; /** * Phase of the \f$K^*(892)^-\f$ component for \f$D^0\to K^-\pi^+\pi^0\f$ */ double _phi2K892m; /** * Amplitude of the \f$\rho^+\f$ component for \f$D^0\to K^-\pi^+\pi^0\f$ */ double _a2rho; /** * Phase of the \f$\rho^+\f$ component for \f$D^0\to K^-\pi^+\pi^0\f$ */ double _phi2rho; /** * Amplitude of the non-resonant component for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ double _a3NR; /** * Phase of the non-resonant component for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ double _phi3NR; /** * Amplitude of the \f$K^*(892)^-\f$ component for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ double _a3K892; /** * Phase of the \f$K^*(892)^-\f$ component for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ double _phi3K892; /** * Amplitude of the \f$\rho^0\f$ component for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ double _a3rho; /** * Phase of the \f$\rho^0\f$ component for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ double _phi3rho; //@} /** * Complex amplitudes for use in the matrix element */ //@{ /** * Amplitude of the non-resonant component for \f$D^+\to K^-\pi^+\pi^+\f$ */ Complex _c1NR; /** * Amplitude of the \f$\bar{K}^*(892)^0\f$ component for \f$D^+\to K^-\pi^+\pi^+\f$ */ Complex _c1K892; /** * Amplitude of the \f$\bar{K}^*_0(1430)^0\f$ component for \f$D^+\to K^-\pi^+\pi^+\f$ */ Complex _c1K1430; /** * Amplitude of the \f$\bar{K}^*_0(1680)^0\f$ component for \f$D^+\to K^-\pi^+\pi^+\f$ */ Complex _c1K1680; /** * Amplitude of the non-resonant component for \f$D^0\to K^-\pi^+\pi^0\f$ */ Complex _c2NR; /** * Amplitude of the \f$\bar{K}^*(892)^0\f$ for \f$D^0\to K^-\pi^+\pi^0\f$ */ Complex _c2K8920; /** * Amplitude of the \f$K^*(892)^-\f$ for \f$D^0\to K^-\pi^+\pi^0\f$ */ Complex _c2K892m; /** * Amplitude of the \f$\rho^+\f$ for \f$D^0\to K^-\pi^+\pi^0\f$ */ Complex _c2rho; /** * Amplitude of the non-resonant component for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ Complex _c3NR; /** * Amplitude of the \f$K^*(892)^-\f$ component for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ Complex _c3K892; /** * Amplitude of the \f$\rho^0\f$ component for \f$D^0\to \bar{K}^0\pi^+\pi^-\f$ */ Complex _c3rho; //@} /** * Masses and widths of the various resonances */ //@{ /** * Use local values for the masses and widths */ bool _localparameters; /** * Mass of the \f$K^*(892)^0\f$ */ Energy _mK8920; /** * Width of the \f$K^*(892)^0\f$ */ Energy _wK8920; /** * Mass of the \f$K^*(892)^-\f$ */ Energy _mK892m; /** * Width of the \f$K^*(892)^-\f$ */ Energy _wK892m; /** * Mass of the \f$K^*(1680)^0\f$ */ Energy _mK1680; /** * Width of the \f$K^*(1680)^0\f$ */ Energy _wK1680; /** * Mass of the \f$K^*_0(1430)^0\f$ */ Energy _mK1430; /** * Width of the \f$K^*_0(1430)^0\f$ */ Energy _wK1430; /** * Mass of the \f$\rho^0\f$ */ Energy _mrho0; /** * Width of the \f$\rho^0\f$ */ Energy _wrho0; /** * Mass of the \f$\rho^+\f$ */ Energy _mrhop; /** * Width of the \f$\rho^+\f$ */ Energy _wrhop; //@} /** * Parameters for the phase-space integration */ //@{ /** * Maximum weights for the various modes */ vector<double> _maxwgt; /** * Weights for the different integration channels */ vector<double> _weights; //@} /** * Spin density matrix */ mutable RhoDMatrix _rho; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DtoKPiPiE691. */ template <> struct BaseClassTrait<Herwig::DtoKPiPiE691,1> { /** Typedef of the first base class of DtoKPiPiE691. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the DtoKPiPiE691 class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DtoKPiPiE691> : public ClassTraitsBase<Herwig::DtoKPiPiE691> { /** Return a platform-independent class name */ static string className() { return "Herwig::DtoKPiPiE691"; } /** * The name of a file containing the dynamic library where the class * DtoKPiPiE691 is implemented. It may also include several, space-separated, * libraries if the class DtoKPiPiE691 depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_DtoKPiPiE691_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/EtaPiGammaGammaDecayer.h��������������������������������������0000644�0001750�0001750�00000022640�11754474774�024615� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // EtaPiGammaGammaDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_EtaPiGammaGammaDecayer_H #define HERWIG_EtaPiGammaGammaDecayer_H // This is the declaration of the EtaPiGammaGammaDecayer class. #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>EtaPiGammaGammaDecayer</code> class implements a VMD model * matrix element for \f$\eta,\eta'\to \pi^0 \gamma \gamma\f$ taken from * hep-ph/0112150. * * The matrix element is given by * \f[ \mathcal{M} = * D(s,t,u)\left[ \epsilon_1\cdot\epsilon_2 q_1\cdot q_2 * -\epsilon_1\cdot q_2\epsilon_2\cdot q_1\right] * -E(s,t,u)\left[-\epsilon_1\cdot\epsilon_2p\cdot q_1p\cdot q_2 * -\epsilon_1\cdot p\epsilon_2\cdot p q_1\cdot q_2 * +\epsilon_1\cdot q_2 \epsilon_2\cdot p p\cdot q_1 * +\epsilon_1\cdot p \epsilon_2\cdot q_1 p\cdot q_2 *\right], * \f] * where \f$q_{1,2}\f$ are the momenta of the photons, \f$\epsilon_{1,2}\f$ are * the polarization vectors of the photons, \f$p\f$ is the momentum of the decaying * meson and * \f[D(s,t,u) = \frac{2\sqrt{3}}{9}g^2_{\omega\rho\pi} * \left(\frac{2eF^2_{\pi}g}{m^2_V}\right)^2\times\left(\frac{F_\pi}{F_8}\cos\theta\mp\sqrt{2}\frac{F_\pi}{F_0}\sin\theta\right)\times\left[\frac{p\cdot q_2-m^2_\eta}{m^2_V-t}+\frac{p\cdot q_1-m^2_\eta}{m^2_V-u}\right]\f] * \f[E(s,t,u) =-\frac{2\sqrt{3}}{9}g^2_{\omega\rho\pi}\left(\frac{2eF^2_{\pi}g}{m^2_V}\right)^2\times\left(\frac{F_\pi}{F_8}\cos\theta\mp\sqrt{2}\frac{F_\pi}{F_0}\sin\theta\right)\times\left[\frac1{m^2_V-t}+\frac1{m^2_V-u}\right].\f] * the \f$-\f$ sign corresponds to the \f$\eta\f$ decay and the \f$+\f$ to the \f$\eta'\f$ decay. * Here * - \f$g_{\omega\rho\pi}\f$ is the coupling of the * \f$\omega\f$ to the \f$\rho\f$ and a pion. * - \f$e\f$ is the electric charge. * - \f$F_{\pi}\f$ is the pion decay constant. * - \f$g\f$ is the conversion factor for a \f$\rho\f$ into a photon. * - \f$m_V\f$ is the mass of the vector meson, in this case we use the \f$\rho\f$. * - \f$F_0\f$ is the singlet decay constant. * - \f$F_8\f$ is the octet decay constant. * - \f$\theta\f$ is the octet-singlet mixing angle * - \f$m_\eta\f$ is the mass of the decay meson. * * In practice we use a slightly modified form by including a running width term to * include the \f$\eta'\f$ decay as well as the \f$\eta\f$ decay. * * @see DecayIntegrator * */ class EtaPiGammaGammaDecayer: public DecayIntegrator { public: /** * Default constructor. */ EtaPiGammaGammaDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 body partial width. * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; /** * The matrix element to be integrated for the three-body decays as a function * of the invariant masses of pairs of the outgoing particles. * @param imode The mode for which the matrix element is needed. * @param q2 The scale, \e i.e. the mass squared of the decaying particle. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The matrix element */ virtual double threeBodyMatrixElement(const int imode, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2,const Energy m3) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<EtaPiGammaGammaDecayer> initEtaPiGammaGammaDecayer; /** * Private and non-existent assignment operator. */ EtaPiGammaGammaDecayer & operator=(const EtaPiGammaGammaDecayer &); private: /** * The coupling \f$g_{\omega\rho\pi}\f$ of the \f$\rho\f$ to \f$\omega\f$ and * a \f$\pi\f$. */ InvEnergy _grhoomega; /** * The pion decay constant, \f$F_{\pi}\f$ */ Energy _fpi; /** * The mass of the \f$\rho\f$. */ Energy _rhomass; /** * The width of the \f$\rho\f$. */ Energy _rhowidth; /** * The coupling for the conversion of a rho to a photon, \f$g\f$ */ double _grho; /** * The mass of the pion */ Energy _mpi; /** * Constant for the running \f$\rho\f$ width calculation. */ double _rhoconst; /** * Use local values of the \f$\rho\f$ mass and width. */ bool _localparameters; /** * Ratios of the decay constants \f$F_8/F_\pi\f$. */ double _ratiofpif8; /** * Ratios of the decay constants \f$F_0/F_\pi\f$. */ double _ratiofpif0; /** * the mixing angle, \f$\theta\f$. */ double _theta; /** * the maximum weights for the \f$\eta\f$ decay. */ double _etamax; /** * the maximum weights for the \f$\eta'\f$ decay. */ double _etapmax; /** * The prefactor for the \f$D(s,t,u)\f$ function. */ vector<InvEnergy2> _dconst; /** * The prefactor for the \f$E(s,t,u)\f$ function. */ vector<InvEnergy2> _econst; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the photons */ mutable vector<Helicity::LorentzPolarizationVector> _vectors[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of EtaPiGammaGammaDecayer. */ template <> struct BaseClassTrait<Herwig::EtaPiGammaGammaDecayer,1> { /** Typedef of the base class of EtaPiGammaGammaDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::EtaPiGammaGammaDecayer> : public ClassTraitsBase<Herwig::EtaPiGammaGammaDecayer> { /** Return the class name.*/ static string className() { return "Herwig::EtaPiGammaGammaDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_EtaPiGammaGammaDecayer_H */ ������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/ScalarMesonFactorizedDecayer.h��������������������������������0000644�0001750�0001750�00000021457�11754474774�026134� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ScalarMesonFactorizedDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ScalarMesonFactorizedDecayer_H #define HERWIG_ScalarMesonFactorizedDecayer_H // // This is the declaration of the ScalarMesonFactorizedDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/WeakCurrents/WeakDecayCurrent.h" #include "Herwig++/Decay/FormFactors/ScalarFormFactor.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/Models/StandardModel/StandardCKM.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>ScalarMesonFactorizedDecayer</code> class is a class which combines a * WeakDecayCurrent and a ScalarFormFactor in the naive factorization approximation * to perform the non-leptonic weak decays of scalar mesons. * * @see DecayIntegrator * @see WeakDecayCurrent * @see ScalarFormFactor * */ class ScalarMesonFactorizedDecayer: public DecayIntegrator { public: /** * The default constructor. */ ScalarMesonFactorizedDecayer(); public: /** @name Virtual functions required by the Decayer and DecayIntegrator classes. */ //@{ /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Check if this decayer can perfom the decay for a particular mode. * Uses the modeNumber member but can be overridden * @param parent The decaying particle * @param children The decay products */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * This function combines the current and the form factor to give the matrix * element. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2( const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans) ; /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} private: /** * Find duplicate modes in the list of particles * @param imode The mode we are studying * @param particles The external particles for the different modes * @param loc The location of the duplicate mode * @param cc If the duplicate is the charge conjugate */ void findModes(unsigned int imode,vector<tPDVector> & particles, vector<unsigned int> & loc,vector<bool> & cc); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<ScalarMesonFactorizedDecayer> initScalarMesonFactorizedDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ScalarMesonFactorizedDecayer & operator=(const ScalarMesonFactorizedDecayer &); private: /** * The weak decay current */ vector<WeakDecayCurrentPtr> _current; /** * The baryon form factor */ vector<ScalarFormFactorPtr> _form; /** * The perturbative coefficients */ //@{ /** * The perturbative \f$a_1\f$ coefficient for b decays. */ double _a1b; /** * The perturbative \f$a_2\f$ coefficient for b decays. */ double _a2b; /** * The perturbative \f$a_1\f$ coefficient for c decays. */ double _a1c; /** * The perturbative \f$a_2\f$ coefficient for c decays. */ double _a2c; //@} /** * Mapping of the modes to the currents */ //@{ /** * First map */ vector<vector<unsigned int> > _currentmapA; /** * Second map */ vector<vector<unsigned int> > _currentmapB; //@} /** * Mapping of the modes to the form factors */ //@{ /** * First map */ vector<vector<unsigned int> > _formmapA; /** * Second map */ vector<vector<unsigned int> > _formmapB; //@} /** * Outgoing particle from the form factor */ vector<vector<unsigned int> > _formpart; /** * The CKM factors */ vector<vector<Complex> > _CKMfact; /** * location of the weights */ vector<int> _wgtloc; /** * the maximum weights */ vector<double> _wgtmax; /** * Weights for the different channels */ vector<double> _weights; /** * Pointer to the CKM object. */ Ptr<StandardCKM>::pointer _ckm; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the decay products */ mutable vector<vector<Helicity::LorentzPolarizationVector> > _vectors; /** * Polarization tensors for the decay products */ mutable vector<vector<Helicity::LorentzTensor<double> > > _tensors; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ScalarMesonFactorizedDecayer. */ template <> struct BaseClassTrait<Herwig::ScalarMesonFactorizedDecayer,1> { /** Typedef of the first base class of ScalarMesonFactorizedDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the ScalarMesonFactorizedDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ScalarMesonFactorizedDecayer> : public ClassTraitsBase<Herwig::ScalarMesonFactorizedDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::ScalarMesonFactorizedDecayer"; } /** Return the name of the shared library be loaded to get * access to the ScalarMesonFactorizedDecayer class and every other class it uses * (except the base class). */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_ScalarMesonFactorizedDecayer_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/EtaPiPiPiDecayer.h��������������������������������������������0000644�0001750�0001750�00000015737�11754474774�023502� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // EtaPiPiPiDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_EtaPiPiPiDecayer_H #define HERWIG_EtaPiPiPiDecayer_H // This is the declaration of the EtaPiPiPiDecayer class. #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>EtaPiPiPiDecayer</code> class is designed for the simulation of * the decay of the \f$\eta\f$ or \f$\eta'\f$ to either \f$\pi^+\pi^-\pi^0\f$ * or \f$\pi^0\pi^0\pi^0\f$ and the decay of the \f$\eta'\f$ to * \f$\pi^+\pi^-\eta\f$ or \f$\pi^0\pi^0\eta\f$ * * The matrix element takes the form * \f[ |\mathcal{M}|^2 = N\left[1+ay+by^2+cx^2\right],\f] * where * \f[x = \frac{\sqrt{3}(u-t)}{2M_0(M_0-m_1-m_2-m_3)},\f] * \f[y = \frac{(m_1+m_2+m_3)((M_0-m_3)^2-s)}{2M_0(m_1+m_2)(M_0-m_1-m_2-m_3)}-1,\f] * where * - \f$m_{1,2,3}\f$ are the masses of the outgoing mesons * - \f$u = (p_0-p_1)^2\f$, * - \f$t = (p_0-p_2)^2\f$, * - \f$s = (p_0-p_3)^2\f$. * * This form is taken from hep-ph/0301058 as are the experimental results for * the constants which are used where available and the theory results which are * used when there is no experimental data. * * @see DecayIntegrator * */ class EtaPiPiPiDecayer: public DecayIntegrator { public: /** * Default constructor. */ EtaPiPiPiDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 body partial width. * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; /** * The differential three body decay rate with one integral performed. * @param imode The mode for which the matrix element is needed. * @param q2 The scale, \e i.e. the mass squared of the decaying particle. * @param s The invariant mass which still needs to be integrate over. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The differential rate \f$\frac{d\Gamma}{ds}\f$ */ virtual InvEnergy threeBodydGammads(const int imode, const Energy2 q2, const Energy2 s, const Energy m1, const Energy m2, const Energy m3) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<EtaPiPiPiDecayer> initEtaPiPiPiDecayer; /** * Private and non-existent assignment operator. */ EtaPiPiPiDecayer & operator=(const EtaPiPiPiDecayer &); private: /** * the id of the incoming particle */ vector<int> _incoming; /** * the id of the last neutral meson */ vector<int> _outgoing; /** * whether the pions are charged or neutral */ vector<bool> _charged; /** * the prefactor for the decay */ vector<double> _prefactor; /** * The constants for the matrix elements */ //*{ /** * The \f$a\f$ constant */ vector<double> _a; /** * The \f$a\f$ constant */ vector<double> _b; /** * The \f$a\f$ constant */ vector<double> _c; //@} /** * maximum weights */ vector<double> _maxweight; /** * Initial size of the vectors */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of EtaPiPiPiDecayer. */ template <> struct BaseClassTrait<Herwig::EtaPiPiPiDecayer,1> { /** Typedef of the base class of EtaPiPiPiDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::EtaPiPiPiDecayer> : public ClassTraitsBase<Herwig::EtaPiPiPiDecayer> { /** Return the class name. */ static string className() { return "Herwig::EtaPiPiPiDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwSMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_EtaPiPiPiDecayer_H */ ���������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/PScalarVectorVectorDecayer.cc���������������������������������0000644�0001750�0001750�00000023633�11754474774�025741� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PScalarVectorVectorDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PScalarVectorVectorDecayer class. // #include "PScalarVectorVectorDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/epsilon.h" using namespace Herwig; using namespace ThePEG::Helicity; void PScalarVectorVectorDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) _maxweight[ix] = mode(ix)->maxWeight(); } } PScalarVectorVectorDecayer::PScalarVectorVectorDecayer() : _incoming(10), _outgoing1(10), _outgoing2(10), _coupling(10), _maxweight(10) { // decay eta -> omega gamma _incoming[0] = 331; _outgoing1[0] = 223; _outgoing2[0] = 22; _coupling[0] = 0.1412/GeV; _maxweight[0] = 1.2; // decay pi -> gamma gamma _incoming[1] = 111; _outgoing1[1] = 22; _outgoing2[1] = 22; _coupling[1] = 0.0178/GeV; _maxweight[1] = 1.1; // decay eta -> gamma gamma _incoming[2] = 221; _outgoing1[2] = 22; _outgoing2[2] = 22; _coupling[2] = 0.0176/GeV; _maxweight[2] = 1.1; // decay eta' -> gamma gamma _incoming[3] = 331; _outgoing1[3] = 22; _outgoing2[3] = 22; _coupling[3] = 0.0221/GeV; _maxweight[3] = 1.1; // decay eta_c -> rho rho _incoming[4] = 441; _outgoing1[4] = 213; _outgoing2[4] = -213; _coupling[4] = 0.0525/GeV; _maxweight[4] = 2.7; _incoming[5] = 441; _outgoing1[5] = 113; _outgoing2[5] = 113; _coupling[5] = 0.0371/GeV; _maxweight[5] = 2.7; // decay eta-c -> phi phi _incoming[6] = 441; _outgoing1[6] = 333; _outgoing2[6] = 333; _coupling[6] = 0.0267/GeV; _maxweight[6] = 9.; // decay eta-c -> gamma gamma _incoming[7] = 441; _outgoing1[7] = 22; _outgoing2[7] = 22; _coupling[7] = 0.00521/GeV; _maxweight[7] = 1.2; // decay eta_c -> K* K* _incoming[8] = 441; _outgoing1[8] = 323; _outgoing2[8] = -323; _coupling[8] = 0.0308/GeV; _maxweight[8] = 5.3; _incoming[9] = 441; _outgoing1[9] = 313; _outgoing2[9] = -313; _coupling[9] = 0.0308/GeV; _maxweight[9] = 5.3; // initial size of the vectors _initsize = _incoming.size(); // intermediates generateIntermediates(false); } void PScalarVectorVectorDecayer::doinit() { DecayIntegrator::doinit(); // check the parameters arew consistent unsigned int isize(_coupling.size()); if(isize!=_incoming.size() || isize!=_outgoing1.size()|| isize!=_outgoing2.size() || isize!=_maxweight.size()) throw InitException() << "Inconsistent parameters in PScalarVectorVectorDecayer" << Exception::abortnow; // set up the integration channels vector<double> wgt; DecayPhaseSpaceModePtr mode; tPDVector extpart(3); for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0] = getParticleData(_incoming[ix]); extpart[1] = getParticleData(_outgoing1[ix]); extpart[2] = getParticleData(_outgoing2[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } int PScalarVectorVectorDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { cc = false; if(children.size()!=2) return -1; int id(parent->id()); int id1(children[0]->id()); int id2(children[1]->id()); unsigned int ix(0); int imode(-1); do { if(_incoming[ix]==id) { if((id1==_outgoing1[ix]&&id2==_outgoing2[ix])|| (id2==_outgoing1[ix]&&id1==_outgoing2[ix])) imode=ix; } ++ix; } while(imode<0&&ix<_incoming.size()); return imode; } void PScalarVectorVectorDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_coupling,1/GeV) << _incoming << _outgoing1 << _outgoing2 << _maxweight; } void PScalarVectorVectorDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_coupling,1/GeV) >> _incoming >> _outgoing1 >> _outgoing2 >> _maxweight; } ClassDescription<PScalarVectorVectorDecayer> PScalarVectorVectorDecayer::initPScalarVectorVectorDecayer; // Definition of the static class description member. void PScalarVectorVectorDecayer::Init() { static ClassDocumentation<PScalarVectorVectorDecayer> documentation ("The PScalarVectorVectorDecayer class is designed for" " the decay of a pseduoscalar meson to two spin-1 particles."); static ParVector<PScalarVectorVectorDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &PScalarVectorVectorDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PScalarVectorVectorDecayer,int> interfaceOutcoming1 ("FirstOutgoing", "The PDG code for the first outgoing particle", &PScalarVectorVectorDecayer::_outgoing1, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PScalarVectorVectorDecayer,int> interfaceOutcoming2 ("SecondOutgoing", "The PDG code for the second outgoing particle", &PScalarVectorVectorDecayer::_outgoing2, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PScalarVectorVectorDecayer,InvEnergy> interfaceCoupling ("Coupling", "The coupling for the decay mode", &PScalarVectorVectorDecayer::_coupling, 1/GeV, 0, ZERO, ZERO, 10000/GeV, false, false, true); static ParVector<PScalarVectorVectorDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &PScalarVectorVectorDecayer::_maxweight, 0, 0, 0, 0., 200., false, false, true); } double PScalarVectorVectorDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { bool photon[2]={false,false}; for(unsigned int ix=0;ix<2;++ix) photon[ix] = decay[ix]->id()==ParticleID::gamma; if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin1,PDT::Spin1)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction::constructSpinInfo(_vectors[ix],decay[ix], outgoing,true,photon[ix]); return 0.; } for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction:: calculateWaveFunctions(_vectors[ix],decay[ix],outgoing,photon[ix]); // now compute the matrix element InvEnergy2 fact(_coupling[imode()]/inpart.mass()); unsigned int ix,iy; for(ix=0;ix<3;++ix) { for(iy=0;iy<3;++iy) { ME()(0,ix,iy)=fact*epsilon(_vectors[0][ix],decay[1]->momentum(), _vectors[1][iy]) *decay[0]->momentum(); } } // test of the matrix element // double test = 2.*sqr(fact*inpart.mass())* // sqr(Kinematics::pstarTwoBodyDecay(inpart.mass(),decay[0]->mass(),decay[1]->mass())); // double me = newME.contract(rhoin).real(); // cerr << "testing the matrix element for " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << me << " " << (me-test)/(me+test) << "\n"; return ME().contract(_rho).real(); } // specify the 1-2 matrix element to be used in the running width calculation bool PScalarVectorVectorDecayer::twoBodyMEcode(const DecayMode & dm, int & itype, double & coupling) const { int imode(-1); int id(dm.parent()->id()); ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id());++pit; int id2((**pit).id()); unsigned int ix(0); do { if(_incoming[ix]==id) { if((id1==_outgoing1[ix]&&id2==_outgoing2[ix])|| (id2==_outgoing1[ix]&&id1==_outgoing2[ix])) imode=ix; } ++ix; } while(imode<0&&ix<_incoming.size()); coupling=_coupling[imode]*dm.parent()->mass(); itype = 3; return id1==_outgoing1[imode]&&id2==_outgoing2[imode]; } // output the setup info for the particle database void PScalarVectorVectorDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":FirstOutgoing " << ix << " " << _outgoing1[ix] << "\n"; output << "newdef " << name() << ":SecondOutgoing " << ix << " " << _outgoing2[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":FirstOutgoing " << ix << " " << _outgoing1[ix] << "\n"; output << "insert " << name() << ":SecondOutgoing " << ix << " " << _outgoing2[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �����������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/ScalarMesonTensorScalarDecayer.cc�����������������������������0000644�0001750�0001750�00000023417�11754474774�026576� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ScalarMesonTensorScalarDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ScalarMesonTensorScalarDecayer class. // #include "ScalarMesonTensorScalarDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; void ScalarMesonTensorScalarDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) if(mode(ix)) _maxweight[ix] = mode(ix)->maxWeight(); } } ScalarMesonTensorScalarDecayer::ScalarMesonTensorScalarDecayer() : _incoming(3), _outgoingT(3), _outgoingS(3), _coupling(3), _maxweight(3) { // D+ -> f_2 pi _incoming[0] = 411; _outgoingT[0] = 225; _outgoingS[0] = 211; _coupling[0] = 8.23E-7/GeV; _maxweight[0] = 5; // chi_c0 -> K*_0 K*_2 _incoming[1] = 10441; _outgoingT[1] = 325; _outgoingS[1] = -10321; _coupling[1] = 0.0217/GeV; _maxweight[1] = 5; _incoming[2] = 10441; _outgoingT[2] = 315; _outgoingS[2] = -10311; _coupling[2] = 0.0217/GeV; _maxweight[2] = 5; // initial size of the arrays _initsize=_incoming.size(); // intermediates generateIntermediates(false); } void ScalarMesonTensorScalarDecayer::doinit() { DecayIntegrator::doinit(); // check the parameters arew consistent unsigned int isize=_coupling.size(); if(isize!=_incoming.size() || isize!=_outgoingT.size()|| isize!=_outgoingS.size() || isize!=_maxweight.size()) throw InitException() << "Inconsistent parameters in " << "ScalarMesonTensorScalarDecayer" << Exception::abortnow; // set up the integration channels vector<double> wgt; DecayPhaseSpaceModePtr mode; tPDVector extpart(3); for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0] = getParticleData(_incoming[ix]); extpart[1] = getParticleData(_outgoingT[ix]); extpart[2] = getParticleData(_outgoingS[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } int ScalarMesonTensorScalarDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=2) return -1; int id0(parent->id()); int id0bar = parent->CC() ? parent->CC()->id() : id0; int id1(children[0]->id()); int id1bar = children[0]->CC() ? children[0]->CC()->id() : id1; int id2(children[1]->id()); int id2bar = children[1]->CC() ? children[1]->CC()->id() : id2; unsigned int ix(0); int imode(-1); do { if(id0 ==_incoming[ix]) { if((id1 ==_outgoingT[ix]&&id2 ==_outgoingS[ix])|| (id2 ==_outgoingT[ix]&&id1 ==_outgoingS[ix])) { imode=ix; cc=false; } } if(id0bar==_incoming[ix]&&imode<0) { if((id1bar==_outgoingT[ix]&&id2bar==_outgoingS[ix])|| (id2bar==_outgoingT[ix]&&id1bar==_outgoingS[ix])) { imode=ix; cc=true; } } ++ix; } while(ix<_incoming.size()&&imode<0); return imode; } void ScalarMesonTensorScalarDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_coupling,1/GeV) << _incoming << _outgoingT << _outgoingS << _maxweight; } void ScalarMesonTensorScalarDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_coupling,1/GeV) >> _incoming >> _outgoingT >> _outgoingS >> _maxweight; } ClassDescription<ScalarMesonTensorScalarDecayer> ScalarMesonTensorScalarDecayer::initScalarMesonTensorScalarDecayer; // Definition of the static class description member. void ScalarMesonTensorScalarDecayer::Init() { static ClassDocumentation<ScalarMesonTensorScalarDecayer> documentation ("The ScalarMesonTensorScalarDecayer class is designed for" " the decay of a pseduoscalar meson to two spin-1 particles."); static ParVector<ScalarMesonTensorScalarDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &ScalarMesonTensorScalarDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<ScalarMesonTensorScalarDecayer,int> interfaceOutcomingT ("OutgoingTensor", "The PDG code for the outgoing tensor", &ScalarMesonTensorScalarDecayer::_outgoingT, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<ScalarMesonTensorScalarDecayer,int> interfaceOutcomingS ("OutgoingScalar", "The PDG code for the outgoing scalar", &ScalarMesonTensorScalarDecayer::_outgoingS, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<ScalarMesonTensorScalarDecayer,InvEnergy> interfaceCoupling ("Coupling", "The coupling for the decay mode", &ScalarMesonTensorScalarDecayer::_coupling, 1/GeV, 0, ZERO, ZERO, 100./GeV, false, false, true); static ParVector<ScalarMesonTensorScalarDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &ScalarMesonTensorScalarDecayer::_maxweight, 0, 0, 0, 0., 100., false, false, true); } double ScalarMesonTensorScalarDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin2,PDT::Spin0)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); TensorWaveFunction::constructSpinInfo(_tensors,decay[0], outgoing,true,false); ScalarWaveFunction::constructSpinInfo(decay[1],outgoing,true); return 0.; } TensorWaveFunction:: calculateWaveFunctions(_tensors,decay[0],outgoing,false); // calculate the matrix element InvEnergy2 fact(_coupling[imode()]/inpart.mass()); LorentzPolarizationVectorE vtemp; for(unsigned int ix=0;ix<5;++ix) { vtemp = _tensors[ix]*inpart.momentum(); ME()(0,ix,0) = fact * decay[1]->momentum().dot(vtemp); } // test of the matrix element // double me=newME.contract(rhoin).real(); // Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.mass(),decay[0]->mass(), // decay[1]->mass()); // double test = 2.*pow<4,1>(pcm)*sqr(_coupling[imode()]*inpart.mass())/ // 3./pow<4,1>(decay[0]->mass()); // cerr << "testing matrix element for " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << me << " " << (me-test)/(me+test) << "\n"; // output the answer return ME().contract(_rho).real(); } // specify the 1-2 matrix element to be used in the running width calculation bool ScalarMesonTensorScalarDecayer::twoBodyMEcode(const DecayMode & dm, int & itype, double & coupling) const { int id(dm.parent()->id()); int idbar = dm.parent()->CC() ? dm.parent()->CC()->id() : id; ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id()); int id1bar = (**pit).CC() ? (**pit).CC()->id() : id1; ++pit; int id2((**pit).id()); int id2bar = (**pit).CC() ? (**pit).CC()->id() : id2; unsigned int ix(0); bool order(false); int imode(-1); do { if(id ==_incoming[ix]) { if(id1==_outgoingT[ix]&&id2==_outgoingS[ix]) { imode=ix; order=true; } if(id2==_outgoingT[ix]&&id1==_outgoingS[ix]) { imode=ix; order=false; } } if(idbar==_incoming[ix]&&imode<0) { if(id1bar==_outgoingT[ix]&&id2bar==_outgoingS[ix]) { imode=ix; order=true; } if(id2bar==_outgoingT[ix]&&id1bar==_outgoingS[ix]) { imode=ix; order=false; } } ++ix; } while(ix<_incoming.size()&&imode<0); coupling=_coupling[imode]*dm.parent()->mass(); itype = 11; return order; } // output the setup information for the particle database void ScalarMesonTensorScalarDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // the rest of the parameters for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":OutgoingTensor " << ix << " " << _outgoingT[ix] << "\n"; output << "newdef " << name() << ":OutgoingScalar " << ix << " " << _outgoingS[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":OutgoingTensor " << ix << " " << _outgoingT[ix] << "\n"; output << "insert " << name() << ":OutgoingScalar " << ix << " " << _outgoingS[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/EtaPiGammaGammaDecayer.cc�������������������������������������0000644�0001750�0001750�00000034626�11754474774�024762� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // EtaPiGammaGammaDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the EtaPiGammaGammaDecayer class. // #include "EtaPiGammaGammaDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; void EtaPiGammaGammaDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { _etamax = mode(0)->maxWeight(); _etapmax = mode(1)->maxWeight(); } } EtaPiGammaGammaDecayer::EtaPiGammaGammaDecayer() : _grhoomega(12.924/GeV), _fpi(130.7*MeV),_rhomass(771.1*MeV), _rhowidth(149.2*MeV),_grho(_rhomass/_fpi),_mpi(ZERO),_rhoconst(0.), _localparameters(true),_ratiofpif8(1./1.3),_ratiofpif0(1./1.04), _theta(-Constants::pi/9.),_etamax(2.36858),_etapmax(0.006), _dconst(2), _econst(2) { // intermediates generateIntermediates(false); } void EtaPiGammaGammaDecayer::doinit() { DecayIntegrator::doinit(); // set rho parameters if needed tPDPtr rho(getParticleData(ParticleID::rho0)); if(!_localparameters) { _rhomass = rho->mass(); _rhowidth = rho->width(); } // constant for the running rho width _mpi=getParticleData(ParticleID::pi0)->mass(); Energy pcm =Kinematics::pstarTwoBodyDecay(_rhomass,_mpi,_mpi); _rhoconst=_rhomass*_rhomass*_rhowidth/(pcm*pcm*pcm); // set the prefactors double conv(sqrt(4.*Constants::pi*SM().alphaEM())); conv *=_fpi*_fpi*_grho/_rhomass/_rhomass; InvEnergy2 pre(2.*sqrt(3.)/9.*sqr(_grhoomega*conv)); double fact[2]; // constants for eta fact[0] = _ratiofpif8*cos(_theta)-sqrt(2.)*_ratiofpif0*sin(_theta); // constants for eta' fact[1] = _ratiofpif8*sin(_theta)+sqrt(2.)*_ratiofpif0*cos(_theta); for(unsigned int ix=0;ix<2;++ix) { _dconst[ix]=fact[ix]*pre; _econst[ix]=fact[ix]*pre; } // set up the phsae space for the decays tPDPtr eta[2]={getParticleData(ParticleID::eta),getParticleData(ParticleID::etaprime)}; tPDVector extpart;extpart.resize(4); extpart[1] = getParticleData(ParticleID::pi0); extpart[2] = getParticleData(ParticleID::gamma); extpart[3] = getParticleData(ParticleID::gamma); vector<double> dummyweights(2,0.5); DecayPhaseSpaceChannelPtr newchannel; DecayPhaseSpaceModePtr mode; for(unsigned int ix=0;ix<2;++ix) { extpart[0] = eta[ix]; mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,2); newchannel->addIntermediate(rho,0,0.0, 1,3); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,3); newchannel->addIntermediate(rho,0,0.0, 1,2); mode->addChannel(newchannel); addMode(mode, (ix==0 ? _etamax : _etapmax),dummyweights); } } int EtaPiGammaGammaDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { cc=false; int id; if(children.size()!=3) return -1; tPDVector::const_iterator pit = children.begin(); unsigned int npi0(0),ngamma(0); for( ;pit!=children.end();++pit) { id=(**pit).id(); if(id==ParticleID::pi0) ++npi0; else if(id==ParticleID::gamma) ++ngamma; } if(!(npi0==1&&ngamma==2)) return -1; // number of the mode switch (parent->id()) { case ParticleID::eta : return 0; case ParticleID::etaprime: return 1; default: return -1; } } void EtaPiGammaGammaDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_grhoomega,1/GeV)<< ounit(_fpi,GeV)<< _grho << ounit(_rhomass,GeV)<< ounit(_rhowidth,GeV)<< _localparameters << _ratiofpif8 << _ratiofpif0 << _theta << _etamax << _etapmax << _rhoconst << ounit(_mpi,GeV) << ounit(_dconst,1/GeV2) << ounit(_econst,1/GeV2); } void EtaPiGammaGammaDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_grhoomega,1/GeV) >> iunit(_fpi,GeV)>> _grho >> iunit(_rhomass,GeV)>> iunit(_rhowidth,GeV)>> _localparameters >> _ratiofpif8 >> _ratiofpif0 >> _theta >> _etamax >> _etapmax >> _rhoconst >> iunit(_mpi,GeV) >> iunit(_dconst,1/GeV2) >> iunit(_econst,1/GeV2); } ClassDescription<EtaPiGammaGammaDecayer> EtaPiGammaGammaDecayer::initEtaPiGammaGammaDecayer; // Definition of the static class description member. void EtaPiGammaGammaDecayer::Init() { static ClassDocumentation<EtaPiGammaGammaDecayer> documentation ("The EtaPiGammaGammaDecayer class implements a VMD model for the" " decay of the eta or etaprime to a pion and two photons.", "The decays of $\\eta,\\eta'\\to\\pi^0\\gamma\\gamma$ were simulated using" " the matrix elements of \\cite{Holstein:2001bt}", "\\bibitem{Holstein:2001bt} B.~R.~Holstein,\n" " Phys.\\ Scripta {\\bf T99} (2002) 55 [arXiv:hep-ph/0112150].\n" "%%CITATION = PHSTB,T99,55;%%\n"); static Parameter<EtaPiGammaGammaDecayer,InvEnergy> interfacegrhoomega ("grhoomega", "The couping of the rho, omega and a pion", &EtaPiGammaGammaDecayer::_grhoomega, 1./GeV, 12.924/GeV, ZERO, 100./GeV, false, false, true); static Parameter<EtaPiGammaGammaDecayer,Energy> interfaceFpi ("Fpi", "The pion decay constant", &EtaPiGammaGammaDecayer::_fpi, MeV, 130.7*MeV, ZERO, 200.0*MeV, false, false, true); static Parameter<EtaPiGammaGammaDecayer,double> interfacegrho ("grho", "Rho decay constant", &EtaPiGammaGammaDecayer::_grho, 5.9, 0.0, 10.0, false, false, true); static Parameter<EtaPiGammaGammaDecayer,Energy> interfaceRhoMass ("RhoMass", "The mass of the rho meson", &EtaPiGammaGammaDecayer::_rhomass, MeV, 771.1*MeV, 500.0*MeV, 1000.0*MeV, false, false, true); static Parameter<EtaPiGammaGammaDecayer,Energy> interfaceRhoWidth ("RhoWidth", "The width of the rho meson", &EtaPiGammaGammaDecayer::_rhowidth, MeV, 149.2*MeV, 100.0*MeV, 200.0*MeV, false, false, true); static Parameter<EtaPiGammaGammaDecayer,double> interfaceRatioFpiF8 ("RatioFpiF8", "The ratio of the decay constant Fpi to F8", &EtaPiGammaGammaDecayer::_ratiofpif8, 1./1.3, 0.0, 10.0, false, false, true); static Parameter<EtaPiGammaGammaDecayer,double> interfaceRatioFpiF0 ("RatioFpiF0", "The ratio of the decay constant Fpi to F0", &EtaPiGammaGammaDecayer::_ratiofpif0, 1./1.04, 0.0, 10.0, false, false, true); static Parameter<EtaPiGammaGammaDecayer,double> interfaceTheta ("Theta", "The eta etaprime mixing angle", &EtaPiGammaGammaDecayer::_theta, -Constants::pi/9., -Constants::pi, Constants::pi, false, false, true); static Parameter<EtaPiGammaGammaDecayer,double> interfaceEtaMax ("EtaMax", "THe maximum weight for the eta decay", &EtaPiGammaGammaDecayer::_etamax, 1.35, -1.0e12, 1.0e12, false, false, false); static Parameter<EtaPiGammaGammaDecayer,double> interfaceEtaPrimeMax ("EtaPrimeMax", "THe maximum weight for the eta prime decay", &EtaPiGammaGammaDecayer::_etapmax, 0.006, -1.0e12, 1.0e12, false, false, false); static Switch<EtaPiGammaGammaDecayer,bool> interfaceLocalParameters ("LocalParameters", "Use local values of the parameters", &EtaPiGammaGammaDecayer::_localparameters, true, false, false); static SwitchOption interfaceLocalParametersLocal (interfaceLocalParameters, "Local", "Use local values", true); static SwitchOption interfaceLocalParametersParticleData (interfaceLocalParameters, "ParticleData", "Use values from the particle data objects", false); } double EtaPiGammaGammaDecayer::me2(const int,const Particle & inpart, const ParticleVector& decay, MEOption meopt) const { useMe(); if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin0,PDT::Spin1,PDT::Spin1)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); ScalarWaveFunction::constructSpinInfo(decay[0],outgoing,true); for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction::constructSpinInfo(_vectors[ix],decay[ix+1], outgoing,true,true); return 0.; } for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction::calculateWaveFunctions(_vectors[ix],decay[ix+1], outgoing,true); // dot products we need Energy2 q1dotq2(decay[1]->momentum()*decay[2]->momentum()), pdotq1(inpart.momentum()*decay[1]->momentum()), pdotq2(inpart.momentum()*decay[2]->momentum()); complex<Energy> e1dotq2[3],e1dotp[3],e2dotq1[3],e2dotp[3]; for(unsigned int ix=0;ix<3;++ix) { if(ix==1) { e1dotq2[ix]=ZERO; e1dotp[ix] =ZERO; e2dotq1[ix]=ZERO; e2dotp[ix] =ZERO; } else { e1dotq2[ix] =_vectors[0][ix]*decay[2]->momentum(); e1dotp[ix] =_vectors[0][ix]*inpart.momentum(); e2dotq1[ix] =_vectors[1][ix]*decay[1]->momentum(); e2dotp[ix] =_vectors[1][ix]*inpart.momentum(); } } // the momentum dependent pieces of the matrix element Complex ii(0.,1.); Energy2 mpi2(sqr(decay[0]->mass())),meta2(sqr(inpart.mass())), mrho2(sqr(_rhomass)), t(mpi2+2.*((decay[0]->momentum())*(decay[1]->momentum()))), u(mpi2+2.*((decay[0]->momentum())*(decay[2]->momentum()))); Energy q(sqrt(t)),pcm(Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi)); complex<Energy2> tgamma(ii*pcm*pcm*pcm*_rhoconst/q); q=sqrt(u);pcm = Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi); complex<Energy2> ugamma(ii*pcm*pcm*pcm*_rhoconst/q); complex<InvEnergy2> prop1(1./(mrho2-t-tgamma)),prop2(1./(mrho2-u-ugamma)); complex<InvEnergy2> Dfact(_dconst[imode()]*(prop1*(pdotq2-meta2) +prop2*(pdotq1-meta2))); complex<InvEnergy4> Efact(_econst[imode()]*(prop1+prop2)); Complex e1dote2; for(unsigned int ix=0;ix<3;++ix) { for(unsigned int iy=0;iy<3;++iy) { if(ix==1||iy==1) ME()(0,0,ix,iy)=0.; else { e1dote2=_vectors[0][ix].dot(_vectors[1][iy]); ME()(0,0,ix,iy) = Dfact*complex<Energy2>(e1dote2*q1dotq2- e1dotq2[ix]*e2dotq1[iy]) -Efact*complex<Energy4>(-e1dote2*pdotq1*pdotq2 -e1dotp[ix]*e2dotp[iy]*q1dotq2 +e1dotq2[ix]*e2dotp[iy]*pdotq1 +e1dotp[ix]*e2dotq1[iy]*pdotq2); } } } /* double me(ME().contract(rhoin).real()); Energy M(inpart.mass()),M2(M*M); Energy2 s1(2.*(decay[1]->momentum()*decay[2]->momentum())); Energy2 s2(M2-2.*(inpart.momentum()*decay[1]->momentum())); Energy2 s3(M2-2.*(inpart.momentum()*decay[2]->momentum())); cout << "testing the matrix element " << ( 2*(2*(Dfact*conj(Dfact)).real() + 2*(Dfact*conj(Efact)).real()*M2 + (Efact*conj(Efact)).real()*M2*M2)* s1*s1 - 2*(Efact*conj(Efact)).real()*M2*s1*(M2 - s2)* (M2 - s3) +(Efact*conj(Efact)).real()*(M2 - s2)*(M2 - s2)* (M2-s3)*(M2-s3))/8. - me << endl; return me; */ return ME().contract(_rho).real(); } double EtaPiGammaGammaDecayer:: threeBodyMatrixElement(const int imodeb, const Energy2 q2,const Energy2 s3, const Energy2 s2,const Energy2 s1,const Energy , const Energy ,const Energy ) const { // compute the prefactors Energy2 mrho2 = sqr(_rhomass); Energy q = sqrt(s3); Energy pcm = Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi); Complex ii(0.,1.); complex<Energy2> tgamma(ii*pcm*pcm*pcm*_rhoconst/q); q = sqrt(s2); pcm = Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi); complex<Energy2> ugamma(ii*pcm*pcm*pcm*_rhoconst/q); complex<InvEnergy2> prop1(1./(mrho2-s3-tgamma)), prop2(1./(mrho2-s2-ugamma)); Energy2 pdotq2(0.5*(q2-s3)), pdotq1(0.5*(q2-s2)); complex<InvEnergy2> Dfact(_dconst[imodeb]*(prop1*(pdotq2-q2)+prop2*(pdotq1-q2))); complex<InvEnergy4> Efact(_econst[imodeb]*(prop1+prop2)); InvEnergy4 D2 = (Dfact*conj(Dfact)).real(); InvEnergy8 E2((Efact*conj(Efact)).real()); InvEnergy6 ED((Efact*conj(Dfact)).real()); return (2 * (2*D2 + 2*ED*q2 + E2*sqr(q2)) * sqr(s1) - double(2*E2*q2*s1*(q2-s2)*(q2-s3)) + double(E2*sqr(q2-s2)*sqr(q2-s3)) )/8.; } WidthCalculatorBasePtr EtaPiGammaGammaDecayer::threeBodyMEIntegrator(const DecayMode & dm) const { // workout which mode we are doing int id(dm.parent()->id()),imode(1); if(id==ParticleID::eta){imode=0;} // construct the integrator vector<double> inweights; inweights.push_back(0.5); inweights.push_back(0.5); Energy mrho(getParticleData(ParticleID::rhoplus)->mass()); Energy wrho(getParticleData(ParticleID::rhoplus)->width()); vector<Energy> inmass; inmass.push_back(mrho); inmass.push_back(mrho); vector<Energy> inwidth; inwidth.push_back(wrho); inwidth.push_back(wrho); vector<int> intype; intype.push_back(1); intype.push_back(2); vector<double> inpow(2,0.0); return new_ptr(ThreeBodyAllOnCalculator<EtaPiGammaGammaDecayer> (inweights,intype,inmass,inwidth,inpow,*this, imode,_mpi,ZERO,ZERO)); } void EtaPiGammaGammaDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; DecayIntegrator::dataBaseOutput(output,false); output << "newdef " << name() << ":grhoomega " << _grhoomega*GeV << "\n"; output << "newdef " << name() << ":Fpi " << _fpi/MeV << "\n"; output << "newdef " << name() << ":grho " << _grho << "\n"; output << "newdef " << name() << ":RhoMass " << _rhomass/MeV << "\n"; output << "newdef " << name() << ":RhoWidth " << _rhowidth/MeV << "\n"; output << "newdef " << name() << ":RatioFpiF8 " << _ratiofpif8 << "\n"; output << "newdef " << name() << ":RatioFpiF0 " << _ratiofpif0 << "\n"; output << "newdef " << name() << ":Theta " << _theta << "\n"; output << "newdef " << name() << ":EtaMax " << _etamax << "\n"; output << "newdef " << name() << ":EtaPrimeMax " << _etapmax << "\n"; output << "newdef " << name() << ":LocalParameters " << _localparameters << "\n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ����������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/ScalarMeson/PScalarPScalarVectorDecayer.cc��������������������������������0000644�0001750�0001750�00000026743�11754474774�026031� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PScalarPScalarVectorDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PScalarPScalarVectorDecayer class. // #include "PScalarPScalarVectorDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; void PScalarPScalarVectorDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) if(mode(ix)) _maxweight[ix] = mode(ix)->maxWeight(); } } PScalarPScalarVectorDecayer::PScalarPScalarVectorDecayer() : _incoming(19), _outgoingP(19), _outgoingV(19), _coupling(19), _maxweight(19) { // decay pi' to rho pi _incoming[0] = 100111; _outgoingV[0] = 213; _outgoingP[0] = -211; _coupling[0] = 3.57; _maxweight[0] = 4.5; _incoming[1] = 100211; _outgoingV[1] = 213; _outgoingP[1] = 111; _coupling[1] = 3.57; _maxweight[1] = 4.5; _incoming[2] = 100211; _outgoingV[2] = 113; _outgoingP[2] = 211; _coupling[2] = 3.57; _maxweight[2] = 4.5; // K' to K rho _incoming[3] = 100311; _outgoingP[3] = 311; _outgoingV[3] = 113; _coupling[3] = 1.; _maxweight[3] = 4.; _incoming[4] = 100321; _outgoingP[4] = 321; _outgoingV[4] = 113; _coupling[4] = 1.; _maxweight[4] = 4.; _incoming[5] = 100311; _outgoingP[5] = 321; _outgoingV[5] = -213; _coupling[5] = 1.41; _maxweight[5] = 4.; _incoming[6] = 100321; _outgoingP[6] = 311; _outgoingV[6] = 213; _coupling[6] = 1.41; _maxweight[6] = 4.; // K' to K* pi _incoming[7] = 100311; _outgoingV[7] = 313; _outgoingP[7] = 111; _coupling[7] = 1.55; _maxweight[7] = 2.; _incoming[8] = 100321; _outgoingV[8] = 323; _outgoingP[8] = 111; _coupling[8] = 1.55; _maxweight[8] = 2.; _incoming[9] = 100311; _outgoingV[9] = 323; _outgoingP[9] = -211; _coupling[9] = 2.19; _maxweight[9] = 2.; _incoming[10] = 100321; _outgoingV[10] = 313; _outgoingP[10] = 211; _coupling[10] = 2.19; _maxweight[10] = 2.; // eta (1475) to K* K _incoming[11] = 100331; _outgoingV[11] = 323; _outgoingP[11] = -321; _coupling[11] = 2.92; _maxweight[11] = 3.5; _incoming[12] = 100331; _outgoingV[12] = 313; _outgoingP[12] = -311; _coupling[12] = 2.92; _maxweight[12] = 3.5; // eta (1475) to K* K _incoming[13] = 9020221; _outgoingV[13] = 323; _outgoingP[13] = -321; _coupling[13] = 0.956; _maxweight[13] = 4.; _incoming[14] = 9020221; _outgoingV[14] = 313; _outgoingP[14] = -311; _coupling[14] = 0.956; _maxweight[14] = 4.; // decay f_0(1370) to a_1 pi _incoming[15] = 10221; _outgoingV[15] = 20213; _outgoingP[15] = -211; _coupling[15] = 2.68; _maxweight[15] = 4.5; _incoming[16] = 10221; _outgoingV[16] = 20113; _outgoingP[16] = 111; _coupling[16] = 2.68; _maxweight[16] = 4.5; // decay f_0(1500) to a_1 pi _incoming[17] = 9030221; _outgoingV[17] = 20213; _outgoingP[17] = -211; _coupling[17] = 1.147; _maxweight[17] = 3.2; _incoming[18] = 9030221; _outgoingV[18] = 20113; _outgoingP[18] = 111; _coupling[18] = 1.147; _maxweight[18] = 3.2; // initial size of the arrays _initsize=_incoming.size(); // intermediates generateIntermediates(false); } void PScalarPScalarVectorDecayer::doinit() { DecayIntegrator::doinit(); // check the parameters arew consistent unsigned int isize=_coupling.size(); if(isize!=_incoming.size() || isize!=_outgoingP.size()|| isize!=_outgoingV.size() || isize!=_maxweight.size()) throw InitException() << "Inconsistent parameters in PScalarPScalarVectorDecayer" << Exception::abortnow; // set up the integration channels vector<double> wgt; DecayPhaseSpaceModePtr mode; tPDVector extpart(3); for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0] = getParticleData(_incoming[ix]); extpart[1] = getParticleData(_outgoingP[ix]); extpart[2] = getParticleData(_outgoingV[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } int PScalarPScalarVectorDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=2) return -1; int id(parent->id()); int idbar = parent->CC() ? parent->CC()->id() : id; int id1(children[0]->id()); int id1bar = children[0]->CC() ? children[0]->CC()->id() : id1; int id2(children[1]->id()); int id2bar = children[1]->CC() ? children[1]->CC()->id() : id2; int imode(-1); unsigned int ix(0); cc=false; do { if(id ==_incoming[ix]) { if((id1 ==_outgoingP[ix]&&id2 ==_outgoingV[ix])|| (id2 ==_outgoingP[ix]&&id1 ==_outgoingV[ix])) imode=ix; } if(idbar==_incoming[ix]) { if((id1bar==_outgoingP[ix]&&id2bar==_outgoingV[ix])|| (id2bar==_outgoingP[ix]&&id1bar==_outgoingV[ix])) { imode=ix; cc=true; } } ++ix; } while(ix<_incoming.size()&&imode<0); return imode; } void PScalarPScalarVectorDecayer::persistentOutput(PersistentOStream & os) const { os << _coupling << _incoming << _outgoingP << _outgoingV << _maxweight; } void PScalarPScalarVectorDecayer::persistentInput(PersistentIStream & is, int) { is >> _coupling >> _incoming >> _outgoingP >> _outgoingV >> _maxweight; } ClassDescription<PScalarPScalarVectorDecayer> PScalarPScalarVectorDecayer::initPScalarPScalarVectorDecayer; // Definition of the static class description member. void PScalarPScalarVectorDecayer::Init() { static ClassDocumentation<PScalarPScalarVectorDecayer> documentation ("The PScalarPScalarVectorDecayer class is designed for" " the decay of a pseduoscalar meson to two spin-1 particles."); static ParVector<PScalarPScalarVectorDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &PScalarPScalarVectorDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PScalarPScalarVectorDecayer,int> interfaceOutgoingScalar ("OutgoingPScalar", "The PDG code for the outgoing pseudoscalar meson", &PScalarPScalarVectorDecayer::_outgoingP, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PScalarPScalarVectorDecayer,int> interfaceOutgoingVector ("OutgoingVector", "The PDG code for the outgoing vector meson", &PScalarPScalarVectorDecayer::_outgoingV, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PScalarPScalarVectorDecayer,double> interfaceCoupling ("Coupling", "The coupling for the decay mode", &PScalarPScalarVectorDecayer::_coupling, 0, 0, 0, 0., 100., false, false, true); static ParVector<PScalarPScalarVectorDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &PScalarPScalarVectorDecayer::_maxweight, 0, 0, 0, 0., 100., false, false, true); } double PScalarPScalarVectorDecayer::me2( const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin0,PDT::Spin1)); } if(meopt==Terminate) { // set up the spin information for the decay products ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); ScalarWaveFunction::constructSpinInfo(decay[0],outgoing,true); VectorWaveFunction::constructSpinInfo(_vectors,decay[1], outgoing,true,false); return 0.; } VectorWaveFunction::calculateWaveFunctions(_vectors,decay[1], outgoing,false); // calculate the matrix element Lorentz5Momentum psum(inpart.momentum()+decay[0]->momentum()); for(unsigned int ix=0;ix<3;++ix) { ME()(0,0,ix)=_coupling[imode()]/inpart.mass()*(_vectors[ix]*psum); } // test of the matrix element // double me=newME.contract(rhoin).real(); // Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.mass(),decay[0]->mass(), // decay[1]->mass()); // double test = 4.*sqr(_coupling[imode()]*pcm/decay[1]->mass()); // cerr << "testing matrix element for " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << me << " " << (me-test)/(me+test) << "\n"; // output the answer return ME().contract(_rho).real(); } // specify the 1-2 matrix element to be used in the running width calculation bool PScalarPScalarVectorDecayer::twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const { int imode(-1); int id(dm.parent()->id()); int idbar = dm.parent()->CC() ? dm.parent()->CC()->id() : id; ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id()); int id1bar = (**pit).CC() ? (**pit).CC()->id() : id1; ++pit; int id2((**pit).id()); int id2bar = (**pit).CC() ? (**pit).CC()->id() : id2; unsigned int ix(0); bool order(true); do { if(id ==_incoming[ix]) { if(id1==_outgoingP[ix]&&id2==_outgoingV[ix]) { imode=ix; order=true; } if(id2==_outgoingP[ix]&&id1==_outgoingV[ix]) { imode=ix; order=false; } } if(idbar==_incoming[ix]&&imode<0) { if(id1bar==_outgoingP[ix]&&id2bar==_outgoingV[ix]) { imode=ix; order=true; } if(id2bar==_outgoingP[ix]&&id1bar==_outgoingV[ix]) { imode=ix; order=false; } } ++ix; } while(ix<_incoming.size()&&imode<0); coupling=_coupling[imode]; mecode=10; return order; } // output the setup information for the particle database void PScalarPScalarVectorDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // the rest of the parameters for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":OutgoingPScalar " << ix << " " << _outgoingP[ix] << "\n"; output << "newdef " << name() << ":OutgoingVector " << ix << " " << _outgoingV[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix] << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":OutgoingPScalar " << ix << " " << _outgoingP[ix] << "\n"; output << "insert " << name() << ":OutgoingVector " << ix << " " << _outgoingV[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix] << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �����������������������������herwig++-2.6.0.orig/Decay/Partonic/�����������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464204�017570� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Partonic/HeavyDecayer.cc��������������������������������������������������0000644�0001750�0001750�00000011451�11754474773�022464� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HeavyDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the HeavyDecayer class. // #include "HeavyDecayer.h" #include <ThePEG/PDT/EnumParticles.h> #include <ThePEG/PDT/DecayMode.h> #include <ThePEG/Interface/ClassDocumentation.h> #include <ThePEG/Interface/Switch.h> #include "Herwig++/Utilities/Kinematics.h" #include <ThePEG/Interface/Parameter.h> #include <ThePEG/Persistency/PersistentOStream.h> #include <ThePEG/Persistency/PersistentIStream.h> #include <ThePEG/Repository/UseRandom.h> #include <ThePEG/Utilities/Maths.h> using namespace Herwig; HeavyDecayer::HeavyDecayer() : MECode(0) {} IBPtr HeavyDecayer::clone() const { return new_ptr(*this); } IBPtr HeavyDecayer::fullclone() const { return new_ptr(*this); } void HeavyDecayer::Init() { static ClassDocumentation<HeavyDecayer> documentation ("Class to decay all particles in HERWIG by the algorithms used in HERWIG 6.4"); static Switch<HeavyDecayer,int> interfaceMECode ("MECode", "The code for the ME type to use in the decay", &HeavyDecayer::MECode, 0, false, false); static SwitchOption interfaceMECodePhaseSpace (interfaceMECode, "PhaseSpace", "Use a phase-space distribution", 0); static SwitchOption interfaceMECodeWeak (interfaceMECode, "Weak", "Use the weak V-A matrix element", 100); } ClassDescription<HeavyDecayer> HeavyDecayer::initHeavyDecayer; bool HeavyDecayer::accept(tcPDPtr parent, const tPDVector & children) const { long id = parent->id(); int flav1, flav2; if((id / 1000)%10) { flav1 = (id/1000)%10; flav2 = (id/10)%100; } else { flav1 = id/100; flav2 = (id/10)%10; } if(!flav1 || !flav2) return false; return children.size()==4; } ParticleVector HeavyDecayer::decay(const Particle & p, const tPDVector & children) const { ParticleVector partons; for(unsigned int ix=0;ix<children.size();++ix) { partons.push_back(children[ix]->produceParticle()); } Lorentz5Momentum products[4]; for(int i = 0; i<4; i++) products[i].setMass(partons[i]->mass()); // Fraction of momentum to spectator double xs = partons[3]->mass()/p.momentum().e(); // Fraction of momentum to heavy quark (which is weakly decaying) double xb = 1.-xs; partons[3]->setMomentum(p.momentum()*xs); // Get the particle that is decaying long idSpec = partons[3]->id(); long idQ = (p.id()/1000)%10; if(!idQ) idQ = (p.id()/100)%10; // Now the odd case of a B_c where the c decays, not the b if(idSpec == idQ) idQ = (p.id()/10)%10; PPtr inter = getParticleData(idQ)->produceParticle(p.momentum()*xb); // Three Body Decay // Free Massless (V-A)*(V-A) ME if(MECode == 100) { Energy Mw = getParticleData(ParticleID::Wplus)->mass(); Energy GamW = getParticleData(ParticleID::Wplus)->width(); Energy2 EMwSq = sqr(Mw); Energy4 GMwSq = sqr(Mw*GamW); Energy4 EmLim = GMwSq + sqr(EMwSq - sqr(inter->mass()-p.mass())); Energy4 EmTest; do { Kinematics::threeBodyDecay(inter->momentum(),products[0], products[1], products[2], &VAWt); Energy2 pw2 = (products[0]+products[1]).m2(); EmTest = sqr(pw2-EMwSq); } while((EmTest+GMwSq)*rnd() > EmLim); } else Kinematics::threeBodyDecay(inter->momentum(),products[0], products[1], products[2]); // set the momenta of the products for(int i = 0; i<3; i++) partons[i]->setMomentum(products[i]); // Set up colour connections based on the diagram above and input order if(partons[0]->coloured()) { if(partons[0]->id() > 0) partons[0]->antiColourNeighbour(partons[1]); else partons[0]->colourNeighbour( partons[1]); } if(partons[2]->coloured()) { if(partons[2]->id() > 0) partons[2]->antiColourNeighbour(partons[3]); else partons[2]->colourNeighbour(partons[3]); } return partons; } void HeavyDecayer::persistentOutput(PersistentOStream &os) const { os << MECode; } void HeavyDecayer::persistentInput(PersistentIStream &is, int) { is >> MECode; } double HeavyDecayer::VAWt(Energy2 t0, Energy2 t1, Energy2 t2, InvEnergy4 t3) { return (t1-t0)*(t0-t2)*t3; } void HeavyDecayer::dataBaseOutput(ofstream & output,bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the PartonicDecayerBase base class PartonicDecayerBase::dataBaseOutput(output,false); output << "newdef " << name() << ":MECode " << MECode << " \n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Partonic/BtoSGammaDecayer.h�����������������������������������������������0000644�0001750�0001750�00000010505�11754474773�023063� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // BtoSGammaDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_BtoSGammaDecayer_H #define HERWIG_BtoSGammaDecayer_H // // This is the declaration of the BtoSGammaDecayer class. // #include "PartonicDecayerBase.h" #include "Herwig++/Decay/FormFactors/BtoSGammaHadronicMass.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the BtoSGammaDecayer class. * */ class BtoSGammaDecayer: public PartonicDecayerBase { public: /** @name Virtual functions required by the Decayer class. */ //@{ /** * Check if this decayer can perfom the decay for a particular mode. * Uses the modeNumber member but can be overridden * @param parent The decaying particle * @param children The decay products */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * For a given decay mode and a given particle instance, perform the * decay and return the decay products. As this is the base class this * is not implemented. * @return The vector of particles produced in the decay. */ virtual ParticleVector decay(const Particle & parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<BtoSGammaDecayer> initBtoSGammaDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BtoSGammaDecayer & operator=(const BtoSGammaDecayer &); private: /** * Pointer to the object which generates the hadronic mass spectrum */ BtoSGammaHadronicMassPtr _hadronicmass; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of BtoSGammaDecayer. */ template <> struct BaseClassTrait<Herwig::BtoSGammaDecayer,1> { /** Typedef of the first base class of BtoSGammaDecayer. */ typedef Herwig::PartonicDecayerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the BtoSGammaDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::BtoSGammaDecayer> : public ClassTraitsBase<Herwig::BtoSGammaDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::BtoSGammaDecayer"; } /** Return the name of the shared library be loaded to get * access to the BtoSGammaDecayer class and every other class it uses * (except the base class). */ static string library() { return "HwPartonicDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_BtoSGammaDecayer_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Partonic/Makefile.in������������������������������������������������������0000644�0001750�0001750�00000052266�11756461676�021662� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Decay/Partonic DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwPartonicDecay_la_LIBADD = am_HwPartonicDecay_la_OBJECTS = QuarkoniumDecayer.lo HeavyDecayer.lo \ WeakPartonicDecayer.lo BtoSGammaDecayer.lo \ PartonicDecayerBase.lo HwPartonicDecay_la_OBJECTS = $(am_HwPartonicDecay_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwPartonicDecay_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwPartonicDecay_la_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwPartonicDecay_la_SOURCES) DIST_SOURCES = $(HwPartonicDecay_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwPartonicDecay.la HwPartonicDecay_la_SOURCES = \ QuarkoniumDecayer.h QuarkoniumDecayer.cc \ HeavyDecayer.h HeavyDecayer.cc \ WeakPartonicDecayer.h WeakPartonicDecayer.cc\ BtoSGammaDecayer.h BtoSGammaDecayer.cc\ PartonicDecayerBase.h PartonicDecayerBase.cc HwPartonicDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 8:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Decay/Partonic/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Decay/Partonic/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwPartonicDecay.la: $(HwPartonicDecay_la_OBJECTS) $(HwPartonicDecay_la_DEPENDENCIES) $(EXTRA_HwPartonicDecay_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwPartonicDecay_la_LINK) -rpath $(pkglibdir) $(HwPartonicDecay_la_OBJECTS) $(HwPartonicDecay_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BtoSGammaDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HeavyDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PartonicDecayerBase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QuarkoniumDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/WeakPartonicDecayer.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Partonic/WeakPartonicDecayer.h��������������������������������������������0000644�0001750�0001750�00000015576�11754474773�023655� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // WeakPartonicDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_WeakPartonicDecayer_H #define HERWIG_WeakPartonicDecayer_H // // This is the declaration of the WeakPartonicDecayer class. // #include "PartonicDecayerBase.h" namespace Herwig { using namespace ThePEG; /** * The WeakPartonicDecayer class is designed to replace the HeavyDecayer * class which implements the partonic decays of hadrons containing a * heavy quark in the same way as in FORTRAN Herwig. * * There are a number of major changes * * - The helicity formalism is used for the decays so that the \f$\tau\f$ lepton * gets the correct correlations. * * - The particles produced directly by the hadronisation, i.e. the primary hadrons * produced in cluster decay are checked to ensure that none of the exclusive * modes are reproduced. * * - Two body modes are allowed to try and force baryon production etc. In this case * the colours of the partons are connected. * * - Three body modes of the form \f$q g \bar{q}\f$ are supported for penguin mediated * weak decays. * * Two types of matrix element are supported for this decay * * - MECode=0 flat-phase space. * - MECode=100 V-A matrix element for the heavy quark decay in the spectator model. * * In addition for the two-body decays and the three-bopdy spectator decays * using the weka V-A matrix element the option of adding an extra gluon to increase * the multiplicity of hadrons is included * * @see HeavyDecayer */ class WeakPartonicDecayer: public PartonicDecayerBase { public: /** * The default constructor. */ WeakPartonicDecayer(); /** * Check if this decayer can perfom the decay for a particular mode * @param parent The decaying particle * @param children The decay products * @return true If this decayer can handle the given mode, otherwise false. */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * Perform the decay of the particle to the specified decay products * @param parent The decaying particle * @param children The decay products * @return a ParticleVector containing the decay products. */ virtual ParticleVector decay(const Particle & parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); public: /** * Weighting of phase space for V-A matrix elements */ static double VAWt(Energy2, Energy2, Energy2, InvEnergy4); 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; //@} /** * Compute \f$\rho\f$ matrix for tau decay in three body case * @param dec ParticleData object of decaying quark * @param pdec The momentum of the decaying particle * @param partons The partons produced */ void threeBodyMatrixElement(tcPDPtr dec,Lorentz5Momentum & pdec, ParticleVector& partons) const; /** * Four body matrix element for weak decay including an extra gluon * @param p0 Momentum of decaying quark * @param p1 Momentum of connected decay product * @param p2 Momentum of first parton from W decay * @param p3 Momentum of second parton from W decay * @param pg Momentum of gluon from W decay * @param Wcol Whether or not W products are coloured * @param initial Whether the radiation is from the decaying quark/first decay product * or W decay products */ double fourBodyMatrixElement(Lorentz5Momentum & p0,Lorentz5Momentum & p1, Lorentz5Momentum & p2,Lorentz5Momentum & p3, Lorentz5Momentum & pg,bool Wcol, bool & initial) const; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<WeakPartonicDecayer> initWeakPartonicDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ WeakPartonicDecayer & operator=(const WeakPartonicDecayer &); private: /** * The code for the matrix element being used. */ int MECode; /** * Probablilty of radiation giving an extra quark-antiquark pair */ double _radprob; /** * Maximum number of tries to generate the kinematics */ unsigned int _maxtry; /** * Maximum weight for three-body decays */ double _threemax; /** * Maximum weight for four-body decays */ double _fourmax; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of WeakPartonicDecayer. */ template <> struct BaseClassTrait<Herwig::WeakPartonicDecayer,1> { /** Typedef of the first base class of WeakPartonicDecayer. */ typedef Herwig::PartonicDecayerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the WeakPartonicDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::WeakPartonicDecayer> : public ClassTraitsBase<Herwig::WeakPartonicDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::WeakPartonicDecayer"; } /** Return the name of the shared library be loaded to get * access to the WeakPartonicDecayer class and every other class it uses * (except the base class). */ static string library() { return "HwPartonicDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_WeakPartonicDecayer_H */ ����������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Partonic/BtoSGammaDecayer.cc����������������������������������������������0000644�0001750�0001750�00000010203�11754474773�023214� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // BtoSGammaDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the BtoSGammaDecayer class. // #include "BtoSGammaDecayer.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IBPtr BtoSGammaDecayer::clone() const { return new_ptr(*this); } IBPtr BtoSGammaDecayer::fullclone() const { return new_ptr(*this); } bool BtoSGammaDecayer::accept(tcPDPtr , const tPDVector & children) const { // should be three decay products if(children.size()!=3) return false; // photon should be last if(children[2]->id()!=ParticleID::gamma) return false; // strange should be first if(abs(children[0]->id())!=ParticleID::s) return false; // first and second should form a colour singlet if((children[0]->iColour()==PDT::Colour3&& children[1]->iColour()==PDT::Colour3bar)|| (children[1]->iColour()==PDT::Colour3&& children[0]->iColour()==PDT::Colour3bar)) return true; else return false; } ParticleVector BtoSGammaDecayer::decay(const Particle & parent, const tPDVector & prod) const { ParticleVector children; for(unsigned int ix=0;ix<prod.size();++ix) { children.push_back(prod[ix]->produceParticle()); } // momenta of the decay products Lorentz5Momentum pout[3],phad; pout[0].setMass(children[0]->dataPtr()->constituentMass()); pout[1].setMass(children[1]->dataPtr()->constituentMass()); pout[2].setMass(ZERO); // first calculate the hadronic mass spectrum phad.setMass(_hadronicmass->hadronicMass(parent.mass(),pout[0].mass()+pout[1].mass())); // two body decay to hadronic cluster and photon double ctheta,phi; Kinematics::generateAngles(ctheta,phi); Kinematics::twoBodyDecay(parent.momentum(),pout[2].mass(),phad.mass(), ctheta,phi,pout[2],phad); // two body decay of the cluster Kinematics::generateAngles(ctheta,phi); Kinematics::twoBodyDecay(phad,pout[0].mass(),pout[1].mass(), ctheta,phi,pout[0],pout[1]); // set momenta of decay products for(unsigned int ix=0;ix<3;++ix){children[ix]->setMomentum(pout[ix]);} // make the colour connections // quark first if(children[0]->data().iColour()==PDT::Colour3) { children[0]->antiColourNeighbour(children[1]); children[1]->colourNeighbour(children[0]); } // antiquark first else { children[0]->colourNeighbour(children[1]); children[1]->antiColourNeighbour(children[0]); } return children; } void BtoSGammaDecayer::persistentOutput(PersistentOStream & os) const { os << _hadronicmass; } void BtoSGammaDecayer::persistentInput(PersistentIStream & is, int) { is >> _hadronicmass; } ClassDescription<BtoSGammaDecayer> BtoSGammaDecayer::initBtoSGammaDecayer; // Definition of the static class description member. void BtoSGammaDecayer::Init() { static ClassDocumentation<BtoSGammaDecayer> documentation ("The BtoSGammaDecayer class performs to the exclusive decay B to s gamma"); static Reference<BtoSGammaDecayer,BtoSGammaHadronicMass> interfaceHadronicMass ("HadronicMass", "Pointer to the object computing the hadronic mass spectrum.", &BtoSGammaDecayer::_hadronicmass, false, false, true, false, false); } void BtoSGammaDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the PartonicDecayerBase base class PartonicDecayerBase::dataBaseOutput(output,false); _hadronicmass->dataBaseOutput(output,false,true); output << "newdef " << name() << ":HadronicMass " << _hadronicmass->name() << " \n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Partonic/Makefile.am������������������������������������������������������0000644�0001750�0001750�00000000553�11754474773�021641� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwPartonicDecay.la HwPartonicDecay_la_SOURCES = \ QuarkoniumDecayer.h QuarkoniumDecayer.cc \ HeavyDecayer.h HeavyDecayer.cc \ WeakPartonicDecayer.h WeakPartonicDecayer.cc\ BtoSGammaDecayer.h BtoSGammaDecayer.cc\ PartonicDecayerBase.h PartonicDecayerBase.cc HwPartonicDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 8:0:0 �����������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Partonic/PartonicDecayerBase.cc�������������������������������������������0000644�0001750�0001750�00000021476�11754474773�023772� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PartonicDecayerBase.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PartonicDecayerBase class. // #include "PartonicDecayerBase.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/Hadronization/CluHadConfig.h" using namespace Herwig; PartonicDecayerBase::PartonicDecayerBase() : _exclusive(true), _partontries(100), _inter(false) {} ParticleVector PartonicDecayerBase::decay(const DecayMode & dm, const Particle & p) const { // handling of the decay including the special features of the // DecayMode // get the primary products tPDVector products=dm.orderedProducts(); // add products for which the decay mode is all ready specified if(!dm.cascadeProducts().empty()) throw Exception() << "PartonicDecayerBase::decay() cannot handle" << " cascadeProducts() from the DecayMode " << Exception::runerror; unsigned int ptry(0); bool hadronized(false); ParticleVector outpart; ParticleVector outhad; // copy of particle to act as parent so hadronization konws about it PPtr ptemp(new_ptr(Particle(p))); do { hadronized=false; // increment loop counter ++ptry; // perform the primary decay ParticleVector partons=decay(p,products); // must add partons are children so reshuffling vs leptons will work for(unsigned int ix=0;ix<partons.size();++ix) ptemp->addChild(partons[ix]); // split the gluons PVector currentlist = partons; _partonSplitter->split(currentlist); // form the clusters ClusterVector clusters = _clusterFinder->formClusters(currentlist); _clusterFinder->reduceToTwoComponents(clusters); tPVector finalHadrons = _clusterFissioner->fission(clusters,false); bool lightOK = _lightClusterDecayer->decay(clusters,finalHadrons); // abandon child here so alwasy done for(unsigned int ix=0;ix<partons.size();++ix) ptemp->abandonChild(partons[ix]); // try again if can't reshuffle if(!lightOK) continue; // decay the remaining clusters _clusterDecayer->decay(clusters,finalHadrons); hadronized = !duplicateMode(p,finalHadrons); if(hadronized) { outhad = ParticleVector(finalHadrons.begin(),finalHadrons.end()); outpart = partons; } } while(!hadronized&&ptry<_partontries); if(ptry>=_partontries) return ParticleVector(); // return decay products if(_inter) { return outpart; } else { for(unsigned int ix=0;ix<outhad.size();++ix) { tParticleVector parents=outhad[ix]->parents(); for(unsigned int iy=0;iy<parents.size();++iy) { parents[iy]->abandonChild(outhad[ix]); } } for(unsigned int ix=0;ix<outpart.size();++ix) { if(!outpart[ix]->coloured()) outhad.push_back(outpart[ix]); } return outhad; } } void PartonicDecayerBase::persistentOutput(PersistentOStream & os) const { os << _partonSplitter << _clusterFinder << _clusterFissioner << _lightClusterDecayer << _clusterDecayer << _exclusive << _partontries << _inter; } void PartonicDecayerBase::persistentInput(PersistentIStream & is, int) { is >> _partonSplitter >> _clusterFinder >> _clusterFissioner >> _lightClusterDecayer >> _clusterDecayer >> _exclusive >> _partontries >> _inter; } AbstractClassDescription<PartonicDecayerBase> PartonicDecayerBase::initPartonicDecayerBase; // Definition of the static class description member. void PartonicDecayerBase::Init() { static ClassDocumentation<PartonicDecayerBase> documentation ("The PartonicDecayerBase class is the base class for partonic decays" " and handles the hadronization of the decays"); static Reference<PartonicDecayerBase,PartonSplitter> interfacePartonSplitter("PartonSplitter", "A reference to the PartonSplitter object", &Herwig::PartonicDecayerBase::_partonSplitter, false, false, true, false); static Reference<PartonicDecayerBase,ClusterFinder> interfaceClusterFinder("ClusterFinder", "A reference to the ClusterFinder object", &Herwig::PartonicDecayerBase::_clusterFinder, false, false, true, false); static Reference<PartonicDecayerBase,ClusterFissioner> interfaceClusterFissioner("ClusterFissioner", "A reference to the ClusterFissioner object", &Herwig::PartonicDecayerBase::_clusterFissioner, false, false, true, false); static Reference<PartonicDecayerBase,LightClusterDecayer> interfaceLightClusterDecayer("LightClusterDecayer", "A reference to the LightClusterDecayer object", &Herwig::PartonicDecayerBase::_lightClusterDecayer, false, false, true, false); static Reference<PartonicDecayerBase,ClusterDecayer> interfaceClusterDecayer("ClusterDecayer", "A reference to the ClusterDecayer object", &Herwig::PartonicDecayerBase::_clusterDecayer, false, false, true, false); static Switch<PartonicDecayerBase,bool> interface_exclusive ("Exclusive", "Ensure that the hadrons produced in the partonic decays of bottom" " and charm baryons do not duplicate the inclusive modes.", &PartonicDecayerBase::_exclusive, true, false, false); static SwitchOption interface_exclusiveNoDuplication (interface_exclusive, "Yes", "Forbid duplication", true); static SwitchOption interface_exclusiveDuplication (interface_exclusive, "No", "Duplication allowed", false); static Switch<PartonicDecayerBase,bool> interfaceIntermediates ("Intermediates", "Whether or not to include the intermediate particles produced by the" " cluster alogorithm in the event record.", &PartonicDecayerBase::_inter, false, false, false); static SwitchOption interfaceIntermediatesIntermediates (interfaceIntermediates, "Yes", "Include the intermediates", true); static SwitchOption interfaceIntermediatesNoIntermediates (interfaceIntermediates, "No", "Don't include the intermediates.", false); static Parameter<PartonicDecayerBase,unsigned int> interfacePartonic_Tries ("Partonic_Tries", "Number of attempts to generator the hadronisation of the decay", &PartonicDecayerBase::_partontries, 100, 1, 1000, false, false, Interface::limited); } bool PartonicDecayerBase::duplicateMode(const Particle & parent, const vector<tPPtr> & hadrons) const { // if not exclusive return if(!_exclusive) return false; // now find the hadrons and check them cParticleMSet hadronsb; bool found(false); for (unsigned ix = 0; ix < hadrons.size(); ++ix) hadronsb.insert(hadrons[ix]->dataPtr()); // now check particle's decay modes Selector<tDMPtr>::const_iterator modeptr = parent.dataPtr()->decaySelector().begin(); Selector<tDMPtr>::const_iterator end = parent.dataPtr()->decaySelector().end(); // check not a duplicate of a known mode for(;modeptr!=end;++modeptr) { tcDMPtr mode=(*modeptr).second; // check same number of products if(mode->products().size() != hadronsb.size()) continue; ParticleMSet::const_iterator dit; cParticleMSet::const_iterator pit; for(dit=mode->products().begin(), pit=hadronsb.begin(); dit!=mode->products().end(); ++dit,++pit) { if((*dit)!=(*pit)) break; } if(dit != mode->products().end()) continue; found = true; break; } return found; } void PartonicDecayerBase::dataBaseOutput(ofstream & output,bool header) const { // header for MySQL if(header) output << "update decayers set parameters=\""; // parameters output << "newdef " << name() << ":PartonSplitter " << _partonSplitter->name() << " \n"; output << "newdef " << name() << ":ClusterFinder " << _clusterFinder->name() << " \n"; output << "newdef " << name() << ":ClusterFissioner " << _clusterFissioner->name() << " \n"; output << "newdef " << name() << ":LightClusterDecayer " << _lightClusterDecayer->name() << " \n"; output << "newdef " << name() << ":ClusterDecayer " << _clusterDecayer->name() << " \n"; output << "newdef " << name() << ":Exclusive " << _exclusive<< " \n"; output << "newdef " << name() << ":Intermediates " << _inter << " \n"; output << "newdef " << name() << ":Partonic_Tries " << _partontries << " \n"; // footer for MySQL if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Partonic/HeavyDecayer.h���������������������������������������������������0000644�0001750�0001750�00000011504�11754474773�022325� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HeavyDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_HeavyDecayer_H #define HERWIG_HeavyDecayer_H // This is the declaration of the HeavyDecayer class. #include <PartonicDecayerBase.h> namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * This class is designed for the partonic decay of a bottom or charm mesons * and baryons and is intended to be the same as that in HERWIG6.4. * Only four body partonic decays are supported. * * Two types of matrix element are supported for this decay * * - MECode=0 flat phase space * - MECode=100 V-A matrix element for the heavy quark decay in the spectator model. * * The class decays a particle based on the DecayMode given. * The basic idea is that the heavy parton in the heavy meson will decay * weakly while the other parton will be more or less unchanged. This produces * 4 partons, the spectator plus the result of the weak decay. The W then * decays again into two more partons, * e.g. a decay of \f$B^0\to d,\bar{c},\bar{d}, u \f$. * * \f$\bar{b}\to\bar{c}\f$ (colour connected to spectator) * and \f$W^+\to\bar{d}u\f$ (the W decay products are colour connected) * * The resulting partons then need to be hadronized and decayed again. * * @see QuarkoniumDecayer * @see Hw64Decayer * @see Decayer * */ class HeavyDecayer: public PartonicDecayerBase { public: /** * Default constructor */ HeavyDecayer(); /** * Check if this decayer can perfom the decay for a particular mode * @param parent The decaying particle * @param children The decay products * @return true If this decayer can handle the given mode, otherwise false. */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * Perform the decay of the particle to the specified decay products * @param parent The decaying particle * @param children The decay products * @return a ParticleVector containing the decay products. */ virtual ParticleVector decay(const Particle & parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) const; public: /** * Standard Init function used to initialize the interface. */ static void Init(); /** @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); //@} /** @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: /** * Weighting of phase space for V-A matrix elements */ static double VAWt(Energy2, Energy2, Energy2, InvEnergy4); private: /** * Describe a concrete class with persistent data. */ static ClassDescription<HeavyDecayer> initHeavyDecayer; /** * Private and non-existent assignment operator. */ const HeavyDecayer & operator=(const HeavyDecayer &); private: /** * The code for the matrix element being used. */ int MECode; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * HeavyDecayer. */ template <> struct BaseClassTrait<Herwig::HeavyDecayer,1> { /** Typedef of the base class of HeavyDecayer. */ typedef Herwig::PartonicDecayerBase NthBase; }; /** * This template specialization informs ThePEG about the name of the * HeavyDecayer class. */ template <> struct ClassTraits<Herwig::HeavyDecayer>: public ClassTraitsBase<Herwig::HeavyDecayer> { /** Return the class name. */ static string className() { return "Herwig::HeavyDecayer"; } /** Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwPartonicDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_HeavyDecayer_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Partonic/QuarkoniumDecayer.h����������������������������������������������0000644�0001750�0001750�00000010446�11754474773�023410� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // QuarkoniumDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_QuarkoniumDecayer_H #define HERWIG_QuarkoniumDecayer_H // // This is the declaration of the QuarkoniumDecayer class. // #include <PartonicDecayerBase.h> namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The QuarkoniumDecayer class is designed for the partonic decay of bottom and charmonium * resonances. In general it is used for decays of the type: * - \f$q,\bar{q}\f$ decay to a quark-antiquark pair generally using phase space, * \e i.e. MECode=0. * * - \f$g,g\f$ decay to two gluons normally using phase space, * \e i.e. MECode=0. * * - \f$g,g,g\f$ decay to three gluons, this will normally use the Ore-Powell * matrix element, \e i.e. MECode=130. * * - \f$g,g,\gamma\f$ decay to two gluons and a photon, this will normally use * the Ore-Powell matrix element, \e i.e. MECode=130. * * * This class supports two values of the MECode variable which can be set using * the interface * * - MECode=0 flat-phase space * - MECode=130 The Ore-Powell onium matrix element. * * This is designed to be the same as the FORTRAN HERWIG routine. * * @see HeavyDecayer * @see Hw64Decayer * @see Decayer * */ class QuarkoniumDecayer: public PartonicDecayerBase { public: /** * Standard ctors and dtor */ QuarkoniumDecayer(); /** * Check if this decayer can perfom the decay for a particular mode * @param parent The decaying particle * @param children The decay products * @return true If this decayer can handle the given mode, otherwise false. */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * Perform the decay of the particle to the specified decay products * @param parent The decaying particle * @param children The decay products * @return a ParticleVector containing the decay products. */ virtual ParticleVector decay(const Particle & parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) const; public: /** * Standard Init function used to initialize the interface. */ static void Init(); /** * Standard Persistent stream methods */ void persistentOutput(PersistentOStream &) const; /** * Standard Persistent stream methods */ void persistentInput(PersistentIStream &, int); /** * Standard clone methods */ protected: /** * Standard clone methods */ virtual IBPtr clone() const; /** * Standard clone methods */ virtual IBPtr fullclone() const; private: /** * Describe a concrete class with persistant decay */ static ClassDescription<QuarkoniumDecayer> initQuarkoniumDecayer; /** * Private and non-existent assignment operator. */ const QuarkoniumDecayer & operator=(const QuarkoniumDecayer &); private: /** * The code for the type of matrix element being used. */ int MECode; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * QuarkoniumDecayer. */ template <> struct BaseClassTrait<Herwig::QuarkoniumDecayer,1> { /** Typedef of the base class of QuarkoniumDecayer. */ typedef Herwig::PartonicDecayerBase NthBase; }; /** * This template specialization informs ThePEG about the name of the * QuarkoniumDecayer class. */ template <> struct ClassTraits<Herwig::QuarkoniumDecayer>: public ClassTraitsBase<Herwig::QuarkoniumDecayer> { /** Return the class name. */ static string className() { return "Herwig::QuarkoniumDecayer"; } /** Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwPartonicDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_QuarkoniumDecayer_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Partonic/WeakPartonicDecayer.cc�������������������������������������������0000644�0001750�0001750�00000055123�11754474773�024003� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // WeakPartonicDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the WeakPartonicDecayer class. // #include "WeakPartonicDecayer.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/ConstituentParticleData.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; WeakPartonicDecayer::WeakPartonicDecayer() : MECode(0), _radprob(0.0), _maxtry(300), _threemax(3.), _fourmax(3.) {} IBPtr WeakPartonicDecayer::clone() const { return new_ptr(*this); } IBPtr WeakPartonicDecayer::fullclone() const { return new_ptr(*this); } bool WeakPartonicDecayer::accept(tcPDPtr parent, const tPDVector & prod) const { // check we can find the flavours of the quarks in the decaying meson long id = parent->id(); int flav1, flav2; if((id / 1000)%10) { flav1 = (id/1000)%10; flav2 = (id/10)%100; } else { flav1 = id/100; flav2 = (id/10)%10; } if(!flav1 || !flav2) return false; // if two decay products one must be in triplet and one antitriplet if(prod.size()==2) { if((prod[0]->iColour()==PDT::Colour3&&prod[1]->iColour()==PDT::Colour3bar)|| (prod[0]->iColour()==PDT::Colour3bar&&prod[1]->iColour()==PDT::Colour3)) return true; } else if(prod.size()==3) { if(((prod[0]->iColour()==PDT::Colour3 &&prod[2]->iColour()==PDT::Colour3bar)|| (prod[0]->iColour()==PDT::Colour3bar&&prod[2]->iColour()==PDT::Colour3)) &&prod[1]->iColour()==PDT::Colour8) return true; } else if(prod.size()==4) { // first two particles should be leptons or q qbar if((prod[0]->id()>=11&&prod[0]->id()<=16&&prod[1]->id()<=-11&&prod[1]->id()>=-16)|| (prod[1]->id()>=11&&prod[1]->id()<=16&&prod[0]->id()<=-11&&prod[0]->id()>=-16)|| (prod[0]->iColour()==PDT::Colour3 &&prod[1]->iColour()==PDT::Colour3bar )|| (prod[1]->iColour()==PDT::Colour3 &&prod[0]->iColour()==PDT::Colour3bar )) { // third particle quark and fourth colour anti-triplet or // thrid particle antiquark and fourth colour triplet if((prod[2]->iColour()==PDT::Colour3bar&&prod[3]->iColour()==PDT::Colour3 )|| (prod[2]->iColour()==PDT::Colour3 &&prod[3]->iColour()==PDT::Colour3bar)) return true; } else return false; } return false; } ParticleVector WeakPartonicDecayer::decay(const Particle & parent, const tPDVector & children) const { static tcPDPtr gluon=getParticleData(ParticleID::g); // make the particles ParticleVector partons; for(unsigned int ix=0;ix<children.size();++ix) { partons.push_back(children[ix]->produceParticle()); // these products have the mass but should have constituent mass partons[ix]->set5Momentum(Lorentz5Momentum(children[ix]->constituentMass())); } // 2-body decays if(partons.size()==2) { // no gluon if not select based on probability or if three body not allowed if(UseRandom::rnd()>_radprob|| parent.mass()<gluon->constituentMass()+partons[0]->mass()+partons[1]->mass()) { double ctheta,phi; Lorentz5Momentum pout[2]; for(unsigned int ix=0;ix<2;++ix) pout[ix].setMass(partons[ix]->mass()); Kinematics::generateAngles(ctheta,phi); Kinematics::twoBodyDecay(parent.momentum(),pout[0].mass(),pout[1].mass(), ctheta,phi,pout[0],pout[1]); for(unsigned int ix=0; ix<2;++ix) partons[ix]->setMomentum(pout[ix]); if(partons[0]->dataPtr()->iColour()==PDT::Colour3) { partons[0]->antiColourNeighbour(partons[1]); } else { partons[0]-> colourNeighbour(partons[1]); } } else { Lorentz5Momentum pout[3]; for(unsigned int ix=0;ix<2;++ix) pout[ix].setMass(partons[ix]->mass()); // add gluon partons.push_back(gluon->produceParticle()); partons.back()->set5Momentum(gluon->constituentMass()); // momentum of gluon pout[2] = Lorentz5Momentum(gluon->constituentMass()); Kinematics::threeBodyDecay(parent.momentum(),pout[1],pout[0],pout[2]); for(unsigned int ix=0; ix<3;++ix) partons[ix]->setMomentum(pout[ix]); if(partons[0]->dataPtr()->iColour()==PDT::Colour3) { partons[0]->antiColourNeighbour(partons[2]); partons[1]-> colourNeighbour(partons[2]); } else { partons[0]-> colourNeighbour(partons[2]); partons[1]->antiColourNeighbour(partons[2]); } } } // 3-body decays else if(partons.size()==3) { // set masses of products Lorentz5Momentum pout[3],pin(parent.momentum()); for(unsigned int ix=0;ix<3;++ix) pout[ix].setMass(partons[ix]->mass()); double xs(partons[2]->mass()/pin.e()),xb(1.-xs); pout[2]=xs*pin; // Get the particle quark that is decaying long idQ, idSpec; idSpec = partons[2]->id(); idQ = (parent.id()/1000)%10; if(!idQ) idQ = (parent.id()/100)%10; // Now the odd case of a B_c where the c decays, not the b if(idSpec == idQ) idQ = (parent.id()/10)%10; // momentum of the decaying quark PPtr inter = getParticleData(idQ)->produceParticle(parent.momentum()*xb); // two body decay of heavy quark double ctheta,phi; Kinematics::generateAngles(ctheta,phi); Kinematics::twoBodyDecay(inter->momentum(),pout[0].mass(),pout[1].mass(), ctheta,phi,pout[0],pout[1]); // set the momenta of the decay products for(unsigned int ix=0; ix<3;++ix) partons[ix]->setMomentum(pout[ix]); // make the colour connections // quark first if(partons[0]->data().iColour()==PDT::Colour3) { partons[0]->antiColourNeighbour(partons[1]); partons[1]->colourNeighbour(partons[0]); partons[1]->antiColourNeighbour(partons[2]); partons[2]->colourNeighbour(partons[1]); } // antiquark first else { partons[0]->colourNeighbour(partons[1]); partons[1]->antiColourNeighbour(partons[0]); partons[1]->colourNeighbour(partons[2]); partons[2]->antiColourNeighbour(partons[1]); } } // 4-body decays else if(partons.size()==4) { // swap 0 and 1 if needed if(partons[1]->dataPtr()->iColour()!=PDT::Colour0&& partons[1]->dataPtr()->iColour()!=partons[2]->dataPtr()->iColour()) swap(partons[0],partons[1]); // get the momenta of the decaying quark and the spectator Lorentz5Momentum pin(parent.momentum()); double xs(partons[3]->mass()/pin.e()),xb(1.-xs); Lorentz5Momentum pspect(xs*pin),pdec(xb*pin); pspect.setMass(partons[3]->mass()); pdec.rescaleMass(); // Get the particle quark that is decaying long idQ, idSpec; idSpec = partons[3]->id(); idQ = (abs(parent.id())/1000)%10; if(!idQ) idQ = (abs(parent.id())/100)%10; // Now the odd case of a B_c where the c decays, not the b if(abs(idSpec) == idQ) idQ = (abs(parent.id())/10)%10; // change sign if spectator quark or antidiquark if((idSpec>0&&idSpec<6)||idSpec<-6) idQ = -idQ; // check if W products coloured bool Wcol = partons[0]->coloured(); // particle data object tcPDPtr dec = getParticleData(idQ); // momenta of the decay products vector<Lorentz5Momentum> pout(3,Lorentz5Momentum()); for(unsigned int ix=0;ix<3;++ix) pout[ix].setMass(partons[ix]->mass()); // charges of the exchanged boson and check if colour rearranged int c1 = dec ->iCharge()-partons[2]->dataPtr()->iCharge(); int c2 = partons[0]->dataPtr()->iCharge()+partons[1]->dataPtr()->iCharge(); bool rearranged = !(c1==c2&&abs(c1)==3); if(MECode==0) rearranged=false; if(rearranged) { int c3 = dec ->iCharge()-partons[1]->dataPtr()->iCharge(); int c4 = partons[0]->dataPtr()->iCharge()+partons[2]->dataPtr()->iCharge(); if(!(c3==c4&&abs(c3)==3)) { generator()->log() << "Unknown order for colour rearranged decay" << " in WeakPartonicDecayer::decay()\n"; generator()->log() << c1 << " " << c2 << " " << c3 << " " << c4 << "\n"; generator()->log() << parent << "\n" << dec->PDGName() << "\n"; for(unsigned int ix=0;ix<4;++ix) generator()->log() << *partons[ix] << "\n"; throw Exception() << "Unknown order for colour rearranged decay" << " in WeakPartonicDecayer::decay() " << Exception::runerror; } swap(pout[1] ,pout[2] ); swap(partons[1],partons[2]); } // decide if three or four body using prob bool threeBody = UseRandom::rnd() > _radprob; // if four body not kinematically possible must be four body if(pdec.mass()<gluon->constituentMass()+pout[0].mass()+ pout[1].mass()+pout[2].mass()) threeBody=true; // if code ==0 always three body if(MECode==0) threeBody=true; // three body decay if( threeBody ) { if(MECode==0) { Kinematics::threeBodyDecay(pdec,pout[1],pout[0],pout[2]); } else { // generate the kinematics double wgt(0.); Energy2 mb2max = sqr(pdec.mass() - pout[2].mass()); Energy2 mb2min = sqr(pout[0].mass() + pout[1].mass()); unsigned int ntry = 0; do { ++ntry; Energy2 mb2 = (mb2max-mb2min)*UseRandom::rnd()+mb2min; double CosAngle, AzmAngle; // perform first decay Lorentz5Momentum p01; p01.setMass(sqrt(mb2)); Kinematics::generateAngles(CosAngle,AzmAngle); Kinematics::twoBodyDecay(pdec,pout[2].mass(),p01.mass(), CosAngle,AzmAngle,pout[2],p01); // perform second decay Kinematics::generateAngles(CosAngle,AzmAngle); Kinematics::twoBodyDecay(p01,pout[0].mass(),pout[1].mass(), CosAngle,AzmAngle,pout[0],pout[1]); // kinematic piece of the weight wgt = Kinematics::pstarTwoBodyDecay(pdec.mass(),p01 .mass(),pout[2].mass())/pdec.mass()* Kinematics::pstarTwoBodyDecay(p01 .mass(),pout[0].mass(),pout[1].mass())/p01.mass(); // piece to improve weight variation wgt *= pdec.mass()/Kinematics::pstarTwoBodyDecay(pdec.mass(),sqrt(mb2min),pout[2].mass()); // matrix element piece wgt *= 16.*(pdec*pout[1])*(pout[0]*pout[2])/sqr(mb2max-mb2min); // check doesn't violate max if(wgt>_threemax) { ostringstream message; message << "Maximum weight for three-body decay " << "violated in WeakPartonicDecayer2::decay()" << "Maximum = " << _threemax << " weight = " << wgt; generator()->logWarning( Exception(message.str(),Exception::warning) ); } } while( wgt < _threemax*UseRandom::rnd() && ntry < _maxtry ); if(ntry==_maxtry) throw Exception() << "Too many attempts to generate three body kinematics in " << "WeakPartonicDecayer2::decay()" << Exception::eventerror; } // set momenta of particles for(unsigned int ix=0;ix<pout.size();++ix) partons[ix]->setMomentum(pout[ix]); partons[3]->setMomentum(pspect); // special for tau leptons to get correlations if(abs(partons[0]->id())==ParticleID::tauminus|| abs(partons[1]->id())==ParticleID::tauminus) threeBodyMatrixElement(dec,pdec,partons); // set up the colour connections if(rearranged) swap(partons[1],partons[2]); if(Wcol) { if(partons[0]->data().iColour()==PDT::Colour3) partons[0]->antiColourNeighbour(partons[1]); else partons[0]-> colourNeighbour(partons[1]); } if(partons[2]->data().iColour()==PDT::Colour3) { partons[2]->antiColourNeighbour(partons[3]); } else { partons[2]-> colourNeighbour(partons[3]); } } // four body decay else { // generate the extra gluon partons.push_back(gluon->produceParticle()); partons.back()->set5Momentum(gluon->constituentMass()); // momentum of gluon pout.push_back(Lorentz5Momentum(gluon->constituentMass())); // generate the kinematics Energy2 ms2min(sqr(pout[0].mass()+pout[1].mass()+pout[2].mass())); Energy2 ms2max(sqr(pdec.mass()-pout[3].mass())); double wgt(0.); unsigned int ntry=0; bool initial = true; do { ++ntry; Energy2 ms2 = ms2min+UseRandom::rnd()*(ms2max-ms2min); Energy ms = sqrt(ms2); // and the W Energy2 mb2max = sqr(ms -pout[2].mass()); Energy2 mb2min = sqr(pout[0].mass()+pout[1].mass()); Energy2 mb2 = (mb2max-mb2min)*UseRandom::rnd()+mb2min; wgt = (mb2max-mb2min)/(ms2max-mb2min); // perform first decay Lorentz5Momentum ps; double CosAngle,AzmAngle; Kinematics::generateAngles(CosAngle,AzmAngle); Kinematics::twoBodyDecay(pdec,pout[3].mass(),ms,CosAngle,AzmAngle,pout[3],ps); // generate the kinematics // perform second decay Kinematics::generateAngles(CosAngle,AzmAngle); Lorentz5Momentum p01; p01.setMass(sqrt(mb2)); Kinematics::twoBodyDecay(ps,pout[2].mass(),p01.mass(), CosAngle,AzmAngle,pout[2],p01); // perform third decay Kinematics::generateAngles(CosAngle,AzmAngle); Kinematics::twoBodyDecay(p01,pout[0].mass(),pout[1].mass(), CosAngle,AzmAngle,pout[0],pout[1]); // kinematic piece of the weight wgt *= 16.* Kinematics::pstarTwoBodyDecay(pdec.mass(),pout[3].mass(),ms )/pdec.mass()* Kinematics::pstarTwoBodyDecay(ms ,p01 .mass(),pout[2].mass())/ms* Kinematics::pstarTwoBodyDecay(p01 .mass(),pout[0].mass(),pout[1].mass())/p01.mass(); wgt *= fourBodyMatrixElement(pdec,pout[2],pout[0],pout[1],pout[3],Wcol,initial); // check doesn't violate max if(wgt>_threemax) { ostringstream message; message << "Maximum weight for four-body decay " << "violated in WeakPartonicDecayer::decay()" << "Maximum = " << _fourmax << " weight = " << wgt; generator()->logWarning( Exception(message.str(),Exception::warning) ); } } while ( wgt < _fourmax*UseRandom::rnd() && ntry < _maxtry ); if(ntry==_maxtry) throw Exception() << "Too many attempts to generate four body kinematics in " << "WeakPartonicDecayer::decay()" << Exception::eventerror; // set momenta of particles for(unsigned int ix=0;ix<3;++ix) partons[ix]->setMomentum(pout[ix]); partons[3]->setMomentum(pspect); partons[4]->setMomentum(pout[3]); // special for tau leptons to get correlations if(abs(partons[0]->id())==ParticleID::tauminus|| abs(partons[1]->id())==ParticleID::tauminus) threeBodyMatrixElement(dec,pdec,partons); // set up the colour connections if(rearranged) swap(partons[1],partons[2]); // radiation from initial-state if(initial) { if(Wcol) { if(partons[0]->data().iColour()==PDT::Colour3) partons[0]->antiColourNeighbour(partons[1]); else partons[0]-> colourNeighbour(partons[1]); } if(partons[2]->data().iColour()==PDT::Colour3) { partons[2]->antiColourNeighbour(partons[4]); partons[3]-> colourNeighbour(partons[4]); } else { partons[2]-> colourNeighbour(partons[4]); partons[3]->antiColourNeighbour(partons[4]); } } // radiation from final-state else { if(partons[0]->data().iColour()==PDT::Colour3) { partons[0]->antiColourNeighbour(partons[4]); partons[1]-> colourNeighbour(partons[4]); } else { partons[0]-> colourNeighbour(partons[4]); partons[1]->antiColourNeighbour(partons[4]); } if(partons[2]->data().iColour()==PDT::Colour3) { partons[2]->antiColourNeighbour(partons[3]); } else { partons[2]-> colourNeighbour(partons[3]); } } } } return partons; } void WeakPartonicDecayer::persistentOutput(PersistentOStream & os) const { os << MECode << _radprob << _maxtry << _threemax << _fourmax; } void WeakPartonicDecayer::persistentInput(PersistentIStream & is, int) { is >> MECode >> _radprob >> _maxtry >> _threemax >> _fourmax; } ClassDescription<WeakPartonicDecayer> WeakPartonicDecayer::initWeakPartonicDecayer; // Definition of the static class description member. void WeakPartonicDecayer::Init() { static ClassDocumentation<WeakPartonicDecayer> documentation ("The WeakPartonicDecayer class performs partonic decays of hadrons containing a " "heavy quark."); static Switch<WeakPartonicDecayer,int> interfaceMECode ("MECode", "The code for the type of matrix element to be used.", &WeakPartonicDecayer::MECode, 0, false, false); static SwitchOption interfaceMECodePhaseSpace (interfaceMECode, "PhaseSpace", "Phase space decays", 0); static SwitchOption interfaceMECodeWeak (interfaceMECode, "Weak", "Weak matrix element", 100); static Parameter<WeakPartonicDecayer,double> interfaceRadiationProbability ("RadiationProbability", "The probability that QCD radiation produces an extra q qbar pair", &WeakPartonicDecayer::_radprob, 0., 0.0, 1., false, false, Interface::limited); static Parameter<WeakPartonicDecayer,unsigned int> interfaceMaxTry ("MaxTry", "The maximum number of attempts to generate the kinematics", &WeakPartonicDecayer::_maxtry, 300, 10, 1000, false, false, Interface::limited); static Parameter<WeakPartonicDecayer,double> interfaceThreeMax ("ThreeMax", "Maximum weight for sampling of three-body decays", &WeakPartonicDecayer::_threemax, 3.0, 1.0, 1000.0, false, false, Interface::limited); static Parameter<WeakPartonicDecayer,double> interfaceFourMax ("FourMax", "Maximum weight for sampling of four-body decays", &WeakPartonicDecayer::_fourmax, 3.0, 1.0, 1000.0, false, false, Interface::limited); } double WeakPartonicDecayer::VAWt(Energy2 t0, Energy2 t1, Energy2 t2, InvEnergy4 t3) { return (t1-t0)*(t0-t2)*t3; } void WeakPartonicDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the PartonicDecayerBase base class PartonicDecayerBase::dataBaseOutput(output,false); output << "newdef " << name() << ":MECode " << MECode << " \n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } void WeakPartonicDecayer:: threeBodyMatrixElement(tcPDPtr dec,Lorentz5Momentum & pdec, ParticleVector & partons) const { // spinors LorentzSpinor <SqrtEnergy> w0[2],w2[2]; LorentzSpinorBar<SqrtEnergy> w1[2],w3[2]; // spinors for the decaying particle and first product if(dec->id()>0) { SpinorWaveFunction win(pdec,dec,0,incoming); w0[0] = win.dimensionedWave(); win.reset(1); w0[1] = win.dimensionedWave(); SpinorBarWaveFunction wout(partons[2]->momentum(), partons[2]->dataPtr(),0,outgoing); w1[0] = wout.dimensionedWave(); wout.reset(1); w1[1] = wout.dimensionedWave(); } else { SpinorBarWaveFunction win(pdec,dec,0,incoming); w1[0] = win.dimensionedWave(); win.reset(1); w1[1] = win.dimensionedWave(); SpinorWaveFunction wout(partons[2]->momentum(), partons[2]->dataPtr(),0,outgoing); w0[0] = wout.dimensionedWave(); wout.reset(1); w0[1] = wout.dimensionedWave(); } // spinors for the W decay products bool taufirst = true; if(partons[0]->id()<0) { SpinorWaveFunction wout2(partons[0]->momentum(), partons[0]->dataPtr(),0,outgoing); SpinorBarWaveFunction wout3(partons[1]->momentum(), partons[1]->dataPtr(),0,outgoing); w2[0] = wout2.dimensionedWave(); w3[0] = wout3.dimensionedWave(); wout2.reset(1); wout3.reset(1); w2[1] = wout2.dimensionedWave(); w3[1] = wout3.dimensionedWave(); if(abs(partons[0]->id())!=ParticleID::tauminus) taufirst=false; } else { SpinorWaveFunction wout2(partons[1]->momentum(), partons[1]->dataPtr(),0,outgoing); SpinorBarWaveFunction wout3(partons[0]->momentum(), partons[0]->dataPtr(),0,outgoing); w2[0] = wout2.dimensionedWave(); w3[0] = wout3.dimensionedWave(); wout2.reset(1); wout3.reset(1); w2[1] = wout2.dimensionedWave(); w3[1] = wout3.dimensionedWave(); if(abs(partons[1]->id())!=ParticleID::tauminus) taufirst=false; } // calculate the currents LorentzPolarizationVectorE Jbc[2][2],Jdec[2][2]; for(unsigned int ix=0;ix<2;++ix) { for(unsigned int iy=0;iy<2;++iy) { Jbc [ix][iy] = w0[ix].leftCurrent(w1[iy]); Jdec[ix][iy] = w2[ix].leftCurrent(w3[iy]); } } // compute the matrix element Complex me[2][2][2][2]; for(unsigned int i0=0;i0<2;++i0) { for(unsigned int i1=0;i1<2;++i1) { for(unsigned int i2=0;i2<2;++i2) { for(unsigned int i3=0;i3<2;++i3) { me[i0][i1][i2][i3] = Jbc[i0][i1].dot(Jdec[i2][i3])/sqr(pdec.mass()); } } } } RhoDMatrix rho(PDT::Spin1Half); for(unsigned int it1=0;it1<2;++it1) { for(unsigned int it2=0;it2<2;++it2) { for(unsigned int i0=0;i0<2;++i0) { for(unsigned int i1=0;i1<2;++i1) { for(unsigned int i2=0;i2<2;++i2) { rho(it1,it2) += taufirst ? me[i0][i1][it1][i2 ]*conj(me[i0][i1][it2][i2 ]) : me[i0][i1][i2 ][it1]*conj(me[i0][i1][i2 ][it2]); } } } } } // normalize matrix to unit trace rho.normalize(); for(unsigned int ix=0;ix<2;++ix) { if(abs(partons[ix]->id())!=ParticleID::tauminus) continue; bool loc = partons[ix]->id() < 0; // create the spin info object FermionSpinPtr spin = new_ptr(FermionSpinInfo(partons[ix]->momentum(),true)); // assign spinors for(unsigned int iy=0;iy<2;++iy) { spin->setBasisState(iy, loc ? w2[iy] : w3[iy].bar()); } // assign rho spin->rhoMatrix() = rho; // assign spin info partons[ix]->spinInfo(spin); } } double WeakPartonicDecayer:: fourBodyMatrixElement(Lorentz5Momentum & p0,Lorentz5Momentum & p1, Lorentz5Momentum & p2,Lorentz5Momentum & p3, Lorentz5Momentum & pg, bool Wcol, bool & initial) const { Energy2 d01(p0*p1),d02(p0*p2),d03(p0*p3),d0g(p0*pg); Energy2 d12(p1*p2),d13(p1*p3),d1g(p1*pg); Energy2 d23(p2*p3),d2g(p2*pg),d3g(p3*pg); Energy2 m02(sqr(p0.mass())),m12(sqr(p1.mass())),m22(sqr(p2.mass())), m32(sqr(p3.mass())); Energy2 mei = +1./d0g/d1g *( -d01*d12*d3g+d01*d03*d2g+2*d01*d03*d12 ) +1./d0g *( d12*d3g-d03*d12-d02*d03 ) +1./d1g *( d12*d13+d03*d2g+d03*d12 ) +m12/sqr(d1g)*( -d03*d2g-d03*d12 ) +m02/sqr(d0g)*( d12*d3g-d03*d12 ); Energy2 mef = !Wcol ? ZERO : +1./d2g/d3g *( d0g*d12*d23+d03*d1g*d23+2*d03*d12*d23 ) +1./d2g *( d03*d1g+d03*d12-d02*d12 ) +1./d3g *( d0g*d12-d03*d13+d03*d12 ) +m32/sqr(d3g)*( -d0g*d12-d03*d12 ) +m22/sqr(d2g)*( -d03*d1g-d03*d12 ); initial = mef/(mei+mef)<UseRandom::rnd(); return 0.5*(mei+mef)/sqr(p0.mass()-p1.mass()-p2.mass()-p3.mass()-pg.mass()); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Partonic/PartonicDecayerBase.h��������������������������������������������0000644�0001750�0001750�00000014150�11754474773�023623� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PartonicDecayerBase.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PartonicDecayerBase_H #define HERWIG_PartonicDecayerBase_H // // This is the declaration of the PartonicDecayerBase class. // #include "Herwig++/Decay/HwDecayerBase.h" #include "Herwig++/Hadronization/PartonSplitter.h" #include "Herwig++/Hadronization/ClusterFinder.h" #include "Herwig++/Hadronization/ClusterFissioner.h" #include "Herwig++/Hadronization/LightClusterDecayer.h" #include "Herwig++/Hadronization/ClusterDecayer.h" #include "Herwig++/Hadronization/Cluster.h" namespace Herwig { using namespace ThePEG; /** * Define some sets */ ThePEG_DECLARE_MULTISET(tcPDPtr,cParticleMSet); /** * Here is the documentation of the PartonicDecayerBase class. * * @see \ref PartonicDecayerBaseInterfaces "The interfaces" * defined for PartonicDecayerBase. */ class PartonicDecayerBase: public HwDecayerBase { public: /** * The default constructor. */ PartonicDecayerBase(); /** @name Virtual functions required by the Decayer class. */ //@{ /** * Check if this decayer can perfom the decay for a particular mode * @param parent The decaying particle * @param children The decay products * @return true If this decayer can handle the given mode, otherwise false. */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const = 0; /** * Perform the decay of the particle to the specified decay products * @param parent The decaying particle * @param children The decay products * @return a ParticleVector containing the decay products. */ virtual ParticleVector decay(const Particle & parent, const tPDVector & children) const = 0; /** * Perform a decay for a given DecayMode and a given Particle instance. * @param dm the DecayMode describing the decay. * @param p the Particle instance to be decayed. * @return a ParticleVector containing the decay products. */ virtual ParticleVector decay(const DecayMode & dm, const Particle & p) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); protected: /** * Check hadrons produced in a partonic hadron decay do not reproduce an inclusive * mode. * @param parent The decaying particles. * @param hadrons The hadrons produced in the partonic decay. * @return Whether or not there are duplicate modes. */ bool duplicateMode(const Particle & parent, const vector<tPPtr> & hadrons) const; private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<PartonicDecayerBase> initPartonicDecayerBase; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ PartonicDecayerBase & operator=(const PartonicDecayerBase &); private: /** * This is a pointer to a Herwig::PartonSplitter object. */ PartonSplitterPtr _partonSplitter; /** * This is a pointer to a Herwig::ClusterFinder object. */ ClusterFinderPtr _clusterFinder; /** * This is a pointer to a Herwig::ClusterFissioner object. */ ClusterFissionerPtr _clusterFissioner; /** * This is a pointer to a Herwig::LightClusterDecayer object. */ LightClusterDecayerPtr _lightClusterDecayer; /** * This is a pointer to a Herwig::ClusterDecayer object. */ ClusterDecayerPtr _clusterDecayer; /** * Switch to control hadrons produced in partonic b and c decays */ bool _exclusive; /** * Number of tries for partonic modes */ unsigned int _partontries; /** * Whether or not to include the intermediates */ bool _inter; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of PartonicDecayerBase. */ template <> struct BaseClassTrait<Herwig::PartonicDecayerBase,1> { /** Typedef of the first base class of PartonicDecayerBase. */ typedef Herwig::HwDecayerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the PartonicDecayerBase class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::PartonicDecayerBase> : public ClassTraitsBase<Herwig::PartonicDecayerBase> { /** Return a platform-independent class name */ static string className() { return "Herwig::PartonicDecayerBase"; } /** * The name of a file containing the dynamic library where the class * PartonicDecayerBase is implemented. It may also include several, space-separated, * libraries if the class PartonicDecayerBase depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwPartonicDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_PartonicDecayerBase_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Partonic/QuarkoniumDecayer.cc���������������������������������������������0000644�0001750�0001750�00000011762�11754474773�023550� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // QuarkoniumDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the HeavyDecayer class. // #include "QuarkoniumDecayer.h" #include <ThePEG/PDT/EnumParticles.h> #include <ThePEG/PDT/DecayMode.h> #include <ThePEG/Interface/ClassDocumentation.h> #include <ThePEG/Interface/Switch.h> #include "Herwig++/Utilities/Kinematics.h" #include <ThePEG/Persistency/PersistentOStream.h> #include <ThePEG/Persistency/PersistentIStream.h> #include <ThePEG/Repository/UseRandom.h> #include <cassert> using namespace Herwig; QuarkoniumDecayer::QuarkoniumDecayer() : MECode(0) {} IBPtr QuarkoniumDecayer::clone() const { return new_ptr(*this); } IBPtr QuarkoniumDecayer::fullclone() const { return new_ptr(*this); } void QuarkoniumDecayer::Init() { static ClassDocumentation<QuarkoniumDecayer> documentation ("The QuarkoniumDecayer performs partonic decays of quarkonium" " resonances"); static Switch<QuarkoniumDecayer,int> interfaceMECode ("MECode", "The code for the ME type to use in the decay", &QuarkoniumDecayer::MECode, 0, false, false); static SwitchOption interfaceMECodePhaseSpace (interfaceMECode, "PhaseSpace", "Use a phase-space distribution", 0); static SwitchOption interfaceMECodeOrePowell (interfaceMECode, "OrePowell", "Use the Ore-Powell matrix element", 130); } ClassDescription<QuarkoniumDecayer> QuarkoniumDecayer::initQuarkoniumDecayer; bool QuarkoniumDecayer::accept(tcPDPtr, const tPDVector & children) const { return (children.size() == 3 || children.size() == 2); } ParticleVector QuarkoniumDecayer::decay(const Particle & p, const tPDVector & children) const { ParticleVector partons; for(unsigned int ix=0;ix<children.size();++ix) { partons.push_back(children[ix]->produceParticle()); } assert(partons.size()==2 || partons.size()==3); Lorentz5Momentum products[3]; Energy gluMass = getParticleData(ParticleID::g)->constituentMass(); for(unsigned int i = 0; i<partons.size(); i++) { if(partons[i]->id() == ParticleID::g) products[i].setMass(gluMass); else products[i].setMass(partons[i]->mass()); } if(partons.size() == 3) { // 3-gluon or 2-gluon + photon decay // Ore & Powell orthopositronium matrix element if(MECode == 130) { double x1, x2, x3, test; do { // if decay fails return empty vector. if (! Kinematics::threeBodyDecay(p.momentum(), products[0], products[1], products[2])) return ParticleVector(); x1 = 2.*(p.momentum()*products[0])/sqr(p.mass()); x2 = 2.*(products[1]*products[2])/sqr(p.mass()); x3 = 2. - x1 - x2; test = sqr(x1*(1.-x1)) + sqr(x2*(1.-x2)) + sqr(x3*(1.-x3)); test /= sqr(x1*x2*x3); } while(test < 2.*UseRandom::rnd()); } else { if (! Kinematics::threeBodyDecay(p.momentum(), products[0], products[1],products[2])) return ParticleVector(); } // test the momenta for(unsigned int i = 0; i<partons.size(); i++) partons[i]->set5Momentum(products[i]); // Now set colour connections if(partons[2]->id() == ParticleID::g) { partons[0]->colourNeighbour(partons[1]); partons[1]->colourNeighbour(partons[2]); partons[2]->colourNeighbour(partons[0]); } else { partons[0]->colourNeighbour(partons[1]); partons[0]->antiColourNeighbour(partons[1]); } } // two decay children // 2 gluon or q-qbar decay else { double Theta, Phi; Kinematics::generateAngles(Theta, Phi); Energy p1 = partons[0]->mass(); Energy p2 = partons[1]->mass(); if(p1 == ZERO) p1 = gluMass; if(p2 == ZERO) p2 = gluMass; if (! Kinematics::twoBodyDecay(p.momentum(), p1, p2, Theta, Phi, products[0], products[1])) return ParticleVector(); for(unsigned int i = 0; i<partons.size(); i++) partons[i]->set5Momentum(products[i]); int first(0), second(1); if(partons[0]->id() < 0) swap(first,second); partons[first]->antiColourNeighbour(partons[second]); if(abs(partons[first]->id()) == ParticleID::g) partons[first]->colourNeighbour(partons[second]); } return partons; } void QuarkoniumDecayer::persistentOutput(PersistentOStream &os) const { os << MECode; } void QuarkoniumDecayer::persistentInput(PersistentIStream &is, int) { is >> MECode; } void QuarkoniumDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the PartonicDecayerBase base class PartonicDecayerBase::dataBaseOutput(output,false); output << "newdef " << name() << ":MECode " << MECode << " \n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ��������������herwig++-2.6.0.orig/Decay/DecayPhaseSpaceChannel.h��������������������������������������������������0000644�0001750�0001750�00000027401�11754474774�022454� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DecayPhaseSpaceChannel.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DecayPhaseSpaceChannel_H #define HERWIG_DecayPhaseSpaceChannel_H // // This is the declaration of the DecayPhaseSpaceChannel class. // #include <ThePEG/Interface/Interfaced.h> #include <ThePEG/PDT/ParticleData.h> #include <ThePEG/EventRecord/Particle.h> #include "DecayPhaseSpaceChannel.fh" #include "DecayIntegrator.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/Repository/UseRandom.h" #include "DecayPhaseSpaceMode.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * This class is designed to store the information needed for a given * phase-space channel for use by the multi-channel phase space decayer * and perform the generation of the phase space for that channel. * * The decay channel is specified as a series of \f$1\to2\f$ decays to either * external particles or other intermediates. For each intermediate * the Jacobian to be used can be either a Breit-Wigner(0) or a power-law * (1). * * The class is then capable of generating a phase-space point using this * channel and computing the weight of a given point for use in a multi-channel * phase space integration using the <code>DecayPhaseSpaceMode</code> class. * * The class is designed so that the phase-space channels can either by specified * using the addIntermediate method directly or via the repository. * (In practice at the moment all the channels are constructed by the relevant decayers * using the former method at the moment.) * * @see DecayPhaseSpaceMode * @see DecayIntegrator * * @author Peter Richardson */ class DecayPhaseSpaceChannel: public Interfaced { /** * A friend output operator to allow the channel to be outputted for * debugging purposes */ friend ostream & operator<<(ostream &, const DecayPhaseSpaceChannel &); /** * DecayPhaseSpaceMode is a friend to avoid making many of the phase space * generation members public. */ friend class DecayPhaseSpaceMode; public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor. */ DecayPhaseSpaceChannel() {} /** * Constructor with a pointer to a <code>DecayPhaseSpaceMode</code>. This * is the constructor which should normally be used in decayers. */ DecayPhaseSpaceChannel(tcDecayPhaseSpaceModePtr); //@} public: /** @name Set-up Members */ //@{ /** * Add a new intermediate particle * @param part A pointer to the particle data object for the intermediate. * @param jac The jacobian to be used for the generation of the particle's mass * 0 is a Breit-Wigner and 1 is a power-law * @param power The power to beb used for the mass generation if a power law * mass distribution is chosen. * @param dau1 The first daughter. If this is postive it is the \f$dau1\f$ th * outgoing particle (0 is the incoming particle), if it is negative it is the * \f$|dau1|\f$ intermediate. The intermediates are specified in the order they * are added with 0 being the incoming particle. * @param dau2 The first daughter. If this is postive it is the \f$dau2\f$ th * outgoing particle (0 is the incoming particle), if it is negative it is the * \f$|dau2|\f$ intermediate. The intermediates are specified in the order they * are added with 0 being the incoming particle. */ void addIntermediate(PDPtr part,int jac,double power,int dau1,int dau2) { _intpart.push_back(part); _jactype.push_back(jac); _intpower.push_back(power); _intdau1.push_back(dau1); _intdau2.push_back(dau2); } /** * Reset the properties of an intermediate particle. This member is used * when a Decayer is used a different value for either the mass or width * of a resonace to that in the ParticleData object. This improves the * efficiency of the integration. * @param part A pointer to the particle data object for the intermediate. * @param mass The new mass of the intermediate * @param width The new width of the intermediate. */ void resetIntermediate(tcPDPtr part,Energy mass,Energy width) { if(!part) return; int idin=part->id(); for(unsigned int ix=0;ix<_intpart.size();++ix) { if(_intpart[ix] && _intpart[ix]->id()==idin) { _intmass[ix] =mass;_intwidth[ix]=width; _intmass2[ix]=mass*mass;_intmwidth[ix]=mass*width; } } } /* * Reset the one of the daughters * @param oldp The id of the particle being reset * @param newp The id of the particle replacing it */ void resetDaughter(int oldp, int newp) { for(unsigned int ix=0;ix<_intdau1.size();++ix) { if(_intdau1[ix]==oldp) _intdau1[ix]=newp; } for(unsigned int ix=0;ix<_intdau2.size();++ix) { if(_intdau2[ix]==oldp) _intdau2[ix]=newp; } } //@} protected: /** @name Phase-Space Generation Members */ //@{ /** * Generate the momenta of the external particles. This member uses the masses * of the external particles generated by the DecayPhaseMode class and the * intermediates for the channel to generate the momenta of the decay products. * @param pin The momenta of the decay products. This is outputed by the member. * @param massext The masses of the particles. This is to allow inclusion of * off-shell effects for the external particles. */ vector<Lorentz5Momentum> generateMomenta(const Lorentz5Momentum & pin, const vector<Energy> & massext); /** * Generate the weight for this channel given a phase space configuration. * This member generates the weight for a given phase space configuration * and is used by the DecayPhaseSpaceMode class to compute the denominator * of the weight in the multi-channel integration. * @param output The momenta of the outgoing particles. */ double generateWeight(const vector<Lorentz5Momentum> & output); /** * Generate the final-state particles including the intermediate resonances. * This method takes the outgoing particles and adds the intermediate particles * specified by this phase-space channel. This is to allow a given set of * intermediates to be specified even when there is interference between different * intermediate states. * @param cc Whether the particles are the mode specified or its charge conjugate. * @param in The incoming particles. * @param out The outgoing particles. * */ void generateIntermediates(bool cc,const Particle & in, ParticleVector & out); /** * Calculate the momenta for a two body decay * The return value indicates success or failure. * @param p The momentum of the decaying particle * @param m1 The mass of the first decay product * @param m2 The mass of the second decay product * @param p1 The momentum of the first decay product * @param p2 The momentum of the second decay product */ void twoBodyDecay(const Lorentz5Momentum & p, const Energy m1, const Energy m2, Lorentz5Momentum & p1, Lorentz5Momentum & p2); //@} 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<DecayPhaseSpaceChannel> initDecayPhaseSpaceChannel; /** * Private and non-existent assignment operator. */ DecayPhaseSpaceChannel & operator=(const DecayPhaseSpaceChannel &); private: /** @name Mass Generation Members */ //@{ /** * Generate the mass of a resonance. * @param ires The resonance to be generated. * @param lower The lower limit on the particle's mass. * @param upper The upper limit on the particle's mass. */ Energy generateMass(int ires,Energy lower,Energy upper); /** * Return the weight for a given resonance. * @param ires The resonance to be generated. * @param moff The mass of the resonance. * @param lower The lower limit on the particle's mass. * @param upper The upper limit on the particle's mass. */ InvEnergy2 massWeight(int ires, Energy moff,Energy lower,Energy upper); //@} private: /** * pointer to the mode */ tcDecayPhaseSpaceModePtr _mode; /** * Pointers to the particle data objects of the intermediate particles */ vector <PDPtr> _intpart; /** * The type of jacobian to be used for the intermediates. */ vector <int> _jactype; /** * The mass of the intermediates. */ vector<Energy> _intmass; /** * The width of the intermediates. */ vector<Energy> _intwidth; /** * The mass squared of the intermediate particles. */ vector<Energy2> _intmass2; /** * The mass times the width for the intermediate particles. */ vector<Energy2>_intmwidth; /** * The power for the intermediate resonance. */ vector<double> _intpower; /** * The first daughter of the intermediate resonance. */ vector<int> _intdau1; /** * The second daughter of the intermediate resonance. */ vector<int> _intdau2; /** * The external particles that an intermediate particle final decays to. */ vector< vector<int> > _intext; /** * Helper function for the weight calculation. * @param ires The resonance to be generated. * @param limit The limit on the particle's mass. */ double atanhelper_(int ires, Energy limit); }; /** * write the phase space channel to a stream */ ostream & operator<<(ostream &, const DecayPhaseSpaceChannel &); /** * exception for this class and those inheriting from it */ class DecayPhaseSpaceError: public Exception {}; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of DecayPhaseSpaceChannel. */ template <> struct BaseClassTrait<Herwig::DecayPhaseSpaceChannel,1> { /** Typedef of the base class of DecayPhaseSpaceChannel */ typedef Interfaced NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DecayPhaseSpaceChannel> : public ClassTraitsBase<Herwig::DecayPhaseSpaceChannel> { /** Return the class name.*/ static string className() { return "Herwig::DecayPhaseSpaceChannel"; } }; /** @endcond */ } #endif /* HERWIG_DecayPhaseSpaceChannel_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/MamboDecayer.cc�����������������������������������������������������������0000644�0001750�0001750�00000034747�11754474774�020702� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MamboDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MamboDecayer class. // #include "MamboDecayer.h" #include <ThePEG/Interface/ClassDocumentation.h> #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Utilities/UtilityBase.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" using namespace Herwig; using namespace ThePEG; bool MamboDecayer::accept(tcPDPtr, const tPDVector & ) const { return true; } void MamboDecayer::persistentOutput(PersistentOStream & os) const { os << _maxweight; } void MamboDecayer::persistentInput(PersistentIStream & is, int) { is >> _maxweight; } ClassDescription<MamboDecayer> MamboDecayer::initMamboDecayer; void MamboDecayer::Init() { static ClassDocumentation<MamboDecayer> documentation ("Decayer class that implements MAMBO algorithm of Kleiss-" "Stirling.", "The MAMBO algorithm of \\cite{Kleiss:1991rn} was used for high" " multiplicity decays", "\\bibitem{Kleiss:1991rn} R.~Kleiss and W.~J.~Stirling,\n" "Nucl.\\ Phys.\\ B {\\bf 385} (1992) 413.\n" "%%CITATION = NUPHA,B385,413;%%\n"); static Parameter<MamboDecayer,double> interfaceMaximumWeight ("MaxWeight", "Maximum phase-space weight", &MamboDecayer::_maxweight, 10.0, 1.0, 50., false, false, true); } ParticleVector MamboDecayer::decay(const Particle & parent, const tPDVector & children) const { useMe(); const int N = children.size(); ParticleVector out(N); if(N == 1) { out[0] = children[0]->produceParticle(parent.momentum()); return out; } Energy totalMass(ZERO); for(int i = 0; i < N; ++i) { totalMass += children[i]->mass(); } if(totalMass > parent.mass()) { generator()->log() << "MamboDecayer::decay - The Decay mode " << parent.PDGName() << "->"; for(int i = 0; i < N; ++i) generator()->log() << children[i]->PDGName() << " "; generator()->log() << " cannot proceed as there is not " << "enough phase space.\n"; out.clear(); return out; } double wgt(0.); vector<Lorentz5Momentum> productMomentum(N); do { for(int i = 0; i < N; ++i) productMomentum[i].setMass(children[i]->mass()); wgt = calculateMomentum(productMomentum,parent.mass()); } while(wgt < _maxweight*UseRandom::rnd()); //set output momenta int iter = 0; for(tPDVector::const_iterator it=children.begin();iter<N; ++iter,++it) { out[iter] = (*it)->produceParticle(productMomentum[iter]); } colourConnections(parent, out); finalBoost(parent, out); setScales(parent, out); return out; } double MamboDecayer::calculateMomentum(vector<Lorentz5Momentum> & mom, Energy comEn) const { const int N = mom.size(); Energy rmtot(ZERO); Energy2 rm2tot(ZERO); for(int i = 0;i < N;++i) { rmtot += mom[i].mass(); rm2tot += mom[i].mass2(); } Energy wb = sqrt( (N*sqr(comEn) - sqr(rmtot))/N/N/(N - 1.) ) - rmtot/N; Energy wmax = (2.0/3.0)*wb; const Energy tol(1e-12*MeV); long double r(0.), sf1(0.); Energy2 sm2f2(ZERO); Energy sf(ZERO), sff1(ZERO), w(ZERO), wold(wmax), err(ZERO); unsigned int iter(0), maxiter(50); do { sf = ZERO; sf1 = 0.; sff1 = ZERO; sm2f2 = ZERO; for(int i = 0;i < N;++i) { r = abs(mom[i].mass()/wold); Energy f(ZERO); long double f1(0.); if (r == 0.0) { f=2.*wold; f1=2.; } else { long double fk0(0.), fkp(0.); BesselFns(r, fk0, fkp); f = wold*(2.0 + r*fk0); f1 = 2.- r*r*fkp; } sf += f; sf1 += f1; sff1 += f*f1; sm2f2 -= f*f; } Energy u1 = 2.*(sf*sf1 - sff1); Energy2 u0 = sf*sf + sm2f2 + rm2tot - sqr(comEn); w = wold - u0/u1; err = abs(w - wold); wold = w; ++iter; } while(err > tol && iter < maxiter); long double xu,xv; vector<long double> alpha(N),um(N),vm(N); for(int i = 0;i < N;++i) { alpha[i] = 2.*(mom[i].mass()/w); xu = (1.-alpha[i]+sqrt(1.+alpha[i]*alpha[i]))/2.; xv = (3.-alpha[i]+sqrt(9.+ 4.*alpha[i]+alpha[i]*alpha[i]))/2.; um[i] = exp(-xu/2.)*pow((xu*(xu+alpha[i])),0.25l); vm[i] = xv*exp(-xv/2.)*pow((xv*(xv+alpha[i])),0.25l); } //start k-momenta generation long double u(0.),v(0.),x(0.); vector<Lorentz5Momentum> qk(N); Lorentz5Momentum qktot; do { qktot=LorentzMomentum(); for(int i=0;i<N;++i) { long double usq(0.),bound(0.); do { u = UseRandom::rnd()*um[i]; v = UseRandom::rnd()*vm[i]; x = v/u; usq = u*u; bound = exp(-x)*sqrt(x*(x+alpha[i])); } while(usq>bound); double ck,phi; Kinematics::generateAngles(ck,phi); double sk = sqrt(1.0-ck*ck); Energy qkv = w*sqrt(x*(x+alpha[i])); qk[i] = Lorentz5Momentum(qkv*sk*sin(phi),qkv*sk*cos(phi),qkv*ck, mom[i].mass()+w*x); qktot += qk[i]; } qktot.rescaleMass(); x = sqrt(comEn*comEn/qktot.mass2()); } while(x>1.0); //Perform lorentz boost from k to q vector<Lorentz5Momentum> q(N); Energy q0=ZERO, q1=ZERO, q2=ZERO, q3=ZERO; long double t=0.; vector<Energy2> qsq(N); for(int i = 0;i<N;++i){ q3 = (qk[i]*qktot)/qktot.mass(); t = (q3+qk[i].e())/(qktot.e()+qktot.mass()); q2 = qk[i].z()-qktot.z()*t; q1 = qk[i].y()-qktot.y()*t; q0 = qk[i].x()-qktot.x()*t; q[i] = Lorentz5Momentum(x*q0,x*q1,x*q2,x*q3); qsq[i] = sqr(q[i].e())-x*x*mom[i].mass2(); } long double xiold(1.),xi(0.); vector<Energy> en(N); iter = 0; do { Energy f = -comEn; Energy f1 = ZERO; for(int i = 0; i < N; ++i) { en[i] = sqrt((xiold*xiold*qsq[i]) + mom[i].mass2()); f += en[i]; f1 += qsq[i]/en[i]; } xi = xiold - f/(xiold*f1); err = abs(xi-xiold)*MeV; xiold = xi; ++iter; } while(err > tol && iter < maxiter); //Now have desired momenta for(int i = 0;i < N;++i) mom[i] = Lorentz5Momentum(xi*q[i].x(),xi*q[i].y(),xi*q[i].z(),en[i]); //Calculate weight of distribution double s1(1.); Energy s2(ZERO),s3(ZERO); double wxi(0.); for(int i=0;i<N;++i) { s1 *= q[i].e()/mom[i].e(); s2 += mom[i].mass2()/q[i].e(); s3 += mom[i].mass2()/mom[i].e(); } wxi = pow(xi,(3*N-3))*s1*(comEn-x*x*s2)/(comEn-s3); return wxi; } void MamboDecayer::colourConnections(const Particle & parent, ParticleVector & out) const { const int N = out.size(); // fix 3-gluon colour lines / general colour lines if(N == 3 && out[0]->id()==ParticleID::g && out[1]->id()==ParticleID::g && out[2]->id()== ParticleID::g ) { out[0]->antiColourNeighbour(out[2]); out[0]->colourNeighbour(out[1]); out[1]->colourNeighbour(out[2]); } // incoming colour3/3bar state else if(parent.data().iColour() == PDT::Colour3 || parent.data().iColour() == PDT::Colour3bar) { PPtr pparent = const_ptr_cast<PPtr>(&parent); // find outgoing coloured particles tParticleVector trip,anti,oct; for(int i=0;i < N;++i) { if(out[i]->data().iColour() == PDT::Colour3) trip.push_back(out[i]); else if(out[i]->data().iColour() == PDT::Colour3bar) anti.push_back(out[i]); else if(out[i]->data().iColour() == PDT::Colour8) oct .push_back(out[i]); } // 3 -> 3 + neutral if(parent.data().iColour() == PDT::Colour3&&trip.size()==1&& oct.size()==0&&anti.size()==0) { trip[0]->incomingColour(pparent); } // 3bar -> 3bar + neutral else if(parent.data().iColour() == PDT::Colour3bar&&trip.size()==0&& oct.size()==0&&anti.size()==1) { anti[0]->incomingColour(pparent,true); } // sink else if(parent.data().iColour() == PDT::Colour3 && anti.size()==2 && oct.size()==0 && trip.size()==0) { tColinePtr col[2] = {ColourLine::create(anti[0],true), ColourLine::create(anti[1],true)}; parent.colourLine()->setSinkNeighbours(col[0],col[1]); } // source else if(parent.data().iColour() == PDT::Colour3bar && trip.size()==2 && oct.size()==0 && anti.size()==0) { tColinePtr col[2] = {ColourLine::create(trip[0]), ColourLine::create(trip[1])}; parent.antiColourLine()->setSourceNeighbours(col[0],col[1]); } // 3 -> 3 + 8 + neutral else if(parent.data().iColour() == PDT::Colour3&&trip.size()==1&& oct.size()==1&&anti.size()==0) { oct [0]->incomingColour(pparent); oct [0]-> colourNeighbour(trip[0]); trip[0]->antiColourNeighbour(oct[0]); } // 3bar -> 3bar + 8 + neutral else if(parent.data().iColour() == PDT::Colour3bar&&trip.size()==0&& oct.size()==1&&anti.size()==1) { oct [0]->incomingColour(pparent,true); oct [0]->antiColourNeighbour(anti[0]); anti[0]-> colourNeighbour(oct[0]); } // 3 -> 3 + 3 + 3bar else if(parent.data().iColour() == PDT::Colour3&&trip.size()==2&& oct.size()==0&&anti.size()==1) { int id1 = abs(pparent->id())%10; int ip(0),io(1); for(unsigned int ix=0;ix<trip.size();++ix) { int id2 = abs(trip[ix]->id())%10; if(id1==id2 || (id1%2==0&&id1==id2+1) || (id1%2==1&&id2==id1+1)) { ip = ix; io = 1-int(ix); break; } } trip[io]->antiColourNeighbour(anti[ 0]); anti[0 ]->colourNeighbour(trip[io]); trip[ip]->incomingColour(pparent); } // 3bar -> 3bar + 3 + 3bar else if(parent.data().iColour() == PDT::Colour3bar&&trip.size()==1&& oct.size()==0&&anti.size()==2) { int id1 = abs(pparent->id())%10; int ip(0),io(1); for(unsigned int ix=0;ix<anti.size();++ix) { int id2 = abs(anti[ix]->id())%10; if(id1==id2 || (id1%2==0&&id1==id2+1) || (id1%2==1&&id2==id1+1)) { ip = ix; io = 1-int(ix); break; } } anti[io]-> colourNeighbour(trip[ 0]); trip[0 ]->antiColourNeighbour(anti[io]); anti[ip]->incomingColour(pparent,true); } else { ostringstream dec; for(unsigned int ix=0;ix<out.size();++ix) dec << out[ix]->PDGName() << " "; throw Exception() << "Unknown colour for 3/3bar decay in MamboDecayer" << pparent->PDGName() << " -> " << dec.str() << Exception::runerror; } } //incoming octet else if(parent.data().iColour() == PDT::Colour8) { PPtr pparent = const_ptr_cast<PPtr>(&parent); tParticleVector trip,anti,oct; for(int i=0;i < N;++i) { if(out[i]->data().iColour() == PDT::Colour3) trip.push_back(out[i]); else if(out[i]->data().iColour() == PDT::Colour3bar) anti.push_back(out[i]); else if(out[i]->data().iColour() == PDT::Colour8) oct .push_back(out[i]); } // decay to one octet if(oct.size()==1&&trip.empty()&&anti.empty()) { oct[0]->incomingColour(pparent); oct[0]->incomingAntiColour(pparent); } // decay ot triplet/antitriplet else if(trip.size()==1&&anti.size()==1&&oct.empty()) { trip[0]->incomingColour(pparent,false); anti[0]->incomingColour(pparent,true ); } // baryon number violating decay to quarks else if(trip.size()==3&&anti.empty()&&oct.empty()) { unsigned int iloc = UseRandom::irnd(3); tColinePtr col[2]; for(unsigned int ix=0;ix<trip.size();++ix) { if(ix==iloc) { trip[ix]->incomingColour(pparent); } else { if(col[0]) col[1] = ColourLine::create(trip[ix]); else col[0] = ColourLine::create(trip[ix]); } } parent.antiColourLine()->setSourceNeighbours(col[0],col[1]); } // baryon number violating decay to antiquarks else if(anti.size()==3&&trip.empty()&&oct.empty()) { unsigned int iloc = UseRandom::irnd(3); tColinePtr col[2]; for(unsigned int ix=0;ix<anti.size();++ix) { if(ix==iloc) { anti[ix]->incomingColour(pparent,true); } else { if(col[0]) col[1] = ColourLine::create(anti[ix],true); else col[0] = ColourLine::create(anti[ix],true); } } parent.colourLine()->setSinkNeighbours(col[0],col[1]); } else { ostringstream dec; for(unsigned int ix=0;ix<out.size();++ix) dec << out[ix]->PDGName() << " "; throw Exception() << "Unknown colour for octet decay in MamboDecayer" << pparent->PDGName() << " -> " << dec.str() << Exception::runerror; } } else if(N==3 && parent.data().iColour() == PDT::Colour0&& out[0]->data().iColour() == PDT::Colour3 && out[1]->data().iColour() == PDT::Colour3 && out[2]->data().iColour() == PDT::Colour3) { tColinePtr col[3] = {ColourLine::create(out[0]), ColourLine::create(out[1]), ColourLine::create(out[2])}; col[0]->setSourceNeighbours(col[1],col[2]); } else if(N==3 && parent.data().iColour() == PDT::Colour0&& out[0]->data().iColour() == PDT::Colour3bar && out[1]->data().iColour() == PDT::Colour3bar && out[2]->data().iColour() == PDT::Colour3bar) { tColinePtr col[3] = {ColourLine::create(out[0],true), ColourLine::create(out[1],true), ColourLine::create(out[2],true)}; col[0]->setSinkNeighbours(col[1],col[2]); } //everything else else { for ( int i = 0; i < N; ++i ) { if ( !out[i]->coloured() ) continue; else if(i + 1 >= N) { throw Exception() << "MamboDecayer::colourConnections() - " << "Cannot find appropriate configuration." << Exception::warning; } if ( out[i]->hasColour() ) out[i]->antiColourNeighbour(out[i + 1]); if ( out[i]->hasAntiColour() ) out[i]->colourNeighbour(out[i + 1]); ++i; // skip the one that's linked up already } } } void MamboDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the PartonicDecayerBase base class output << "newdef " << name() << ":MaxWeight " << _maxweight << " \n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } void MamboDecayer::doinitrun() { HwDecayerBase::doinitrun(); _a0[0] = 0.5; _a0[1] = 0.375; _a0[2] = 0.375; _a0[3] = 0.4921875; _a0[4] = 0.84375; _a0[5] = 1.854492188, _a0[6] = 5.0625; _a0[7] = 16.58578491; _a0[8] = 63.33398438; _a0[9] = 275.6161079; _a1[0] = 0.5; _a1[1] = 0.75; _a1[2] = 1.125; _a1[3] = 1.96875; _a1[4] = 4.21875; _a1[5] = 11.12695313; _a1[6] = 35.4375; _a1[7] = 132.6862793; _a1[8] = 570.0058594; _a1[9] = 2756.161079; } �������������������������herwig++-2.6.0.orig/Decay/DecayIntegrator.cc��������������������������������������������������������0000644�0001750�0001750�00000027703�11754474774�021430� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DecayIntegrator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DecayIntegrator class. // // Author: Peter Richardson // #include "DecayIntegrator.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Utilities/Debug.h" #include "Herwig++/Utilities/Kinematics.h" #include "Herwig++/PDT/GenericMassGenerator.h" #include "DecayPhaseSpaceMode.h" #include "Herwig++/PDT/WidthCalculatorBase.h" #include "ThePEG/Interface/Reference.h" using namespace Herwig; ParticleVector DecayIntegrator::decay(const Particle & parent, const tPDVector & children) const { // return empty vector if products heavier than parent Energy mout(ZERO); for(tPDVector::const_iterator it=children.begin(); it!=children.end();++it) mout+=(**it).massMin(); if(mout>parent.mass()) return ParticleVector(); // generate the decay bool cc; _imode = modeNumber(cc,parent.dataPtr(),children); return _modes[_imode]->generate(_generateinter,cc,parent); } void DecayIntegrator::persistentOutput(PersistentOStream & os) const { os << _modes << _niter << _npoint << _ntry << _photongen << _generateinter; } void DecayIntegrator::persistentInput(PersistentIStream & is, int) { is >> _modes >> _niter >> _npoint >> _ntry >> _photongen >> _generateinter; } AbstractClassDescription<DecayIntegrator> DecayIntegrator::initDecayIntegrator; // Definition of the static class description member. void DecayIntegrator::Init() { static RefVector<DecayIntegrator,DecayPhaseSpaceMode> interfaceModes ("Modes", "The phase space integration modes.", &DecayIntegrator::_modes, 0, false, false, true, true); static ClassDocumentation<DecayIntegrator> documentation ("The DecayIntegrator class is a base decayer class " "including a multi-channel integrator."); static Parameter<DecayIntegrator,int> interfaceIteration ("Iteration", "Number of iterations for the initialization of the phase space", &DecayIntegrator::_niter, 10, 0, 100, false, false, true); static Parameter<DecayIntegrator,int> interfacePoints ("Points", "number of phase space points to generate in the initialisation.", &DecayIntegrator::_npoint, 10000, 1, 1000000000, false, false, true); static Parameter<DecayIntegrator,int> interfaceNtry ("Ntry", "Number of attempts to generate the decay", &DecayIntegrator::_ntry, 500, 0, 100000, false, false, true); static Reference<DecayIntegrator,DecayRadiationGenerator> interfacePhotonGenerator ("PhotonGenerator", "Object responsible for generating photons in the decay.", &DecayIntegrator::_photongen, false, false, true, true, false); static Switch<DecayIntegrator,bool> interfaceGenerateIntermediates ("GenerateIntermediates", "Whether or not to include intermediate particles in the output", &DecayIntegrator::_generateinter, false, false, false); static SwitchOption interfaceGenerateIntermediatesNoIntermediates (interfaceGenerateIntermediates, "No", "Don't include the intermediates", false); static SwitchOption interfaceGenerateIntermediatesIncludeIntermediates (interfaceGenerateIntermediates, "Yes", "include the intermediates", true); } // output info on the integrator ostream & Herwig::operator<<(ostream & os, const DecayIntegrator & decay) { os << "The integrator has " << decay._modes.size() << " modes" << endl; for(unsigned int ix=0;ix<decay._modes.size();++ix) { os << "Information on mode " << ix << endl; os << *(decay._modes[ix]); } return os; } // generate the momenta for the decay ParticleVector DecayIntegrator::generate(bool inter,bool cc, const unsigned int & imode, const Particle & inpart) const { _imode=imode; return _modes[imode]->generate(inter,cc,inpart); } // initialization for a run void DecayIntegrator::doinitrun() { HwDecayerBase::doinitrun(); if ( initialize() && Debug::level > 1 ) CurrentGenerator::current().log() << "Start of the initialisation for " << this->name() << "\n"; for(unsigned int ix=0;ix<_modes.size();++ix) { if(!_modes[ix]) continue; _modes[ix]->initrun(); _imode=ix; _modes[ix]->initializePhaseSpace(initialize()); } // CurrentGenerator::current().log() << *this << "\n"; } // add a new mode void DecayIntegrator::addMode(DecayPhaseSpaceModePtr in,double maxwgt, const vector<double> inwgt) const { _modes.push_back(in); if(in) { in->setMaxWeight(maxwgt); in->setWeights(inwgt); in->setIntegrate(_niter,_npoint,_ntry); in->init(); } } // reset the properities of all intermediates void DecayIntegrator::resetIntermediate(tcPDPtr part, Energy mass, Energy width) { if(!part) return; for(unsigned int ix=0,N=_modes.size();ix<N;++ix) { _modes[ix]->resetIntermediate(part,mass,width); } } WidthCalculatorBasePtr DecayIntegrator::threeBodyMEIntegrator(const DecayMode &) const { return WidthCalculatorBasePtr(); } // set the code for the partial width void DecayIntegrator::setPartialWidth(const DecayMode & dm, int imode) { vector<int> extid; tcPDPtr cc,cc2; int nfound(0),ifound,nmax(1),id; unsigned int ix(0),iy,N,iz,tmax,nmatched; if(dm.parent()->CC()) nmax=2; if(_modes.size()==0) return; do { if(!_modes[ix]) { ++ix; continue; } cc = _modes[ix]->externalParticles(0)->CC(); tmax = cc ? 1 : 2; for(iz=0;iz<tmax;++iz) { ifound=-1; extid.clear(); // check the parent if(dm.parent()->id()==_modes[ix]->externalParticles(0)->id()&&iz==0) { for(iy=0,N=_modes[ix]->numberofParticles();iy<N;++iy) { extid.push_back(_modes[ix]->externalParticles(iy)->id()); } } else if(dm.parent()->id()==_modes[ix]->externalParticles(0)->id()&&iz==1) { for(iy=0,N=_modes[ix]->numberofParticles();iy<N;++iy) { cc2=_modes[ix]->externalParticles(iy)->CC(); extid.push_back( cc2 ? cc2->id() : _modes[ix]->externalParticles(iy)->id()); } } else if(cc&&dm.parent()->id()==cc->id()) { for(iy=0,N=_modes[ix]->numberofParticles();iy<N;++iy) { cc2 = _modes[ix]->externalParticles(iy)->CC(); extid.push_back( cc2 ? cc2->id() : _modes[ix]->externalParticles(iy)->id()); } } // if the parents match if(!extid.empty()) { vector<bool> matched(extid.size(),false); bool done; nmatched=0; ParticleMSet::const_iterator pit = dm.products().begin(); do { id=(**pit).id(); done=false; iy=1; do { if(id==extid[iy]&&!matched[iy]) { matched[iy]=true; ++nmatched; done=true; } ++iy; } while(iy<extid.size()&&!done); ++pit; } while(pit!=dm.products().end()); if(nmatched==extid.size()-1) { ifound=ix; ++nfound; } } if(ifound>=0) _modes[ifound]->setPartialWidth(imode); } ++ix; } while(nfound<nmax&&ix<_modes.size()); } int DecayIntegrator::findMode(const DecayMode & dm) { int imode(-1); vector<int> extid; tcPDPtr cc,cc2; bool found(false); int id; unsigned int ix(0),iy,N,iz,tmax,nmatched; if(_modes.size()==0) return -1; do { if(!_modes[ix]) { ++ix; continue; } cc = _modes[ix]->externalParticles(0)->CC(); tmax=1;if(!cc){++tmax;} for(iz=0;iz<tmax;++iz) { extid.clear(); // check the parent if(dm.parent()->id()==_modes[ix]->externalParticles(0)->id()&&iz==0) { for(iy=0,N=_modes[ix]->numberofParticles();iy<N;++iy) { extid.push_back(_modes[ix]->externalParticles(iy)->id()); } } else if(dm.parent()->id()==_modes[ix]->externalParticles(0)->id()&&iz==1) { for(iy=0,N=_modes[ix]->numberofParticles();iy<N;++iy) { cc2=_modes[ix]->externalParticles(iy)->CC(); extid.push_back( cc2 ? cc2->id() : _modes[ix]->externalParticles(iy)->id()); } } else if(cc&&dm.parent()->id()==cc->id()) { for(iy=0,N=_modes[ix]->numberofParticles();iy<N;++iy) { cc = _modes[ix]->externalParticles(iy)->CC(); extid.push_back( cc ? cc->id() : _modes[ix]->externalParticles(iy)->id()); } } // if the parents match if(!extid.empty()) { vector<bool> matched(extid.size(),false); bool done; nmatched=0; ParticleMSet::const_iterator pit = dm.products().begin(); do { id=(**pit).id(); done=false; iy=1; do { if(id==extid[iy]&&!matched[iy]) { matched[iy]=true; ++nmatched; done=true; } ++iy; } while(iy<extid.size()&&!done); ++pit; } while(pit!=dm.products().end()); if(nmatched==extid.size()-1) { imode=ix; found=true; } } } ++ix; } while(!found&&ix<_modes.size()); return imode; } // output the information for the database void DecayIntegrator::dataBaseOutput(ofstream & output,bool header) const { // header for MySQL if(header) output << "update decayers set parameters=\""; output << "newdef " << name() << ":Iteration " << _niter << "\n"; output << "newdef " << name() << ":Ntry " << _ntry << "\n"; output << "newdef " << name() << ":Points " << _npoint << "\n"; //if(_photongen){;} output << "newdef " << name() << ":GenerateIntermediates " << _generateinter << " \n"; // footer for MySQL if(header) { output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";\n"; } } // pointer to a mode tDecayPhaseSpaceModePtr DecayIntegrator::mode(unsigned int ix) { return _modes[ix]; } tcDecayPhaseSpaceModePtr DecayIntegrator::mode(unsigned int ix) const { return _modes[ix]; } Energy DecayIntegrator::initializePhaseSpaceMode(unsigned int imode,bool init) const{ tcDecayPhaseSpaceModePtr cmodeptr=mode(imode); tDecayPhaseSpaceModePtr modeptr = const_ptr_cast<tDecayPhaseSpaceModePtr>(cmodeptr); modeptr->init(); return modeptr->initializePhaseSpace(init); } // the matrix element to be integrated for the me double DecayIntegrator::threeBodyMatrixElement(const int,const Energy2, const Energy2, const Energy2,const Energy2, const Energy, const Energy, const Energy) const { throw DecayIntegratorError() << "Calling the virtual DecayIntegrator::threeBodyMatrixElement" << "method. This must be overwritten in the classes " << "inheriting from DecayIntegrator where it is needed" << Exception::runerror; } // the differential three body decay rate with one integral performed InvEnergy DecayIntegrator::threeBodydGammads(const int, const Energy2, const Energy2, const Energy, const Energy, const Energy) const { throw DecayIntegratorError() << "Calling the virtual DecayIntegrator::threeBodydGammads()" <<"method. This must be overwritten in the classes " << "inheriting from DecayIntegrator where it is needed" << Exception::runerror; } double DecayIntegrator::oneLoopVirtualME(unsigned int , const Particle &, const ParticleVector &) { throw DecayIntegratorError() << "DecayIntegrator::oneLoopVirtualME() called. This should" << " have been overidden in an inheriting class if it is used" << Exception::runerror; } InvEnergy2 DecayIntegrator::realEmissionME(unsigned int, const Particle &, ParticleVector &, unsigned int, double, double, const LorentzRotation &, const LorentzRotation &) { throw DecayIntegratorError() << "DecayIntegrator::realEmmisionME() called. This should" << " have been overidden in an inheriting class if it is used" << Exception::runerror; } �������������������������������������������������������������herwig++-2.6.0.orig/Decay/DecayVertex.fh������������������������������������������������������������0000644�0001750�0001750�00000000457�11754474774�020574� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the DecayVertex class. // #ifndef HERWIG_DecayVertex_FH #define HERWIG_DecayVertex_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; class DecayVertex; ThePEG_DECLARE_POINTERS(DecayVertex,DVertexPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/DecayVertex.cc������������������������������������������������������������0000644�0001750�0001750�00000004762�11754474774�020567� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DecayVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DecayVertex class. // // Author: Peter Richardson // #include <ThePEG/EventRecord/SpinInfo.h> #include "DecayVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace Herwig; using namespace ThePEG; NoPIOClassDescription<DecayVertex> DecayVertex::initDecayVertex; // Definition of the static class description member. void DecayVertex::Init() { static ClassDocumentation<DecayVertex> documentation ("The DecayVertex class is the implementation of a " "vertex for a decay for the Herwig++ spin correlation algorithm"); } // method to get the rho matrix for a given outgoing particle RhoDMatrix DecayVertex::getRhoMatrix(int i,bool recursive) const { // get the rho matrix of the decaying particle RhoDMatrix input; tcSpinPtr inspin = incoming()[0]; assert(inspin); if(recursive&&inspin->productionVertex()&& inspin->iSpin()!=PDT::Spin0) { input = inspin->productionVertex()-> getRhoMatrix(inspin->productionLocation(),true); inspin->rhoMatrix() = input; inspin->needsUpdate(); } else { input = inspin->rhoMatrix(); } // get the D matrices for the outgoing particles vector<RhoDMatrix> rhoout(outgoing().size()-1); for(int ix=0,N=outgoing().size();ix<N;++ix) { if(ix<i) rhoout[ix] = outgoing()[ix]->DMatrix(); else if(ix>i) rhoout[ix-1] = outgoing()[ix]->DMatrix(); } // calculate the spin density matrix return _matrixelement.calculateRhoMatrix(i,input,rhoout); } // method to get the D matrix for an incoming particle RhoDMatrix DecayVertex::getDMatrix(int) const { tcSpinPtr inspin = incoming()[0]; if(inspin->developed()==SpinInfo::Developed) return inspin->DMatrix(); // get the decay matrices for the outgoing particles vector<RhoDMatrix> Dout(outgoing().size()); for(unsigned int ix=0,N=outgoing().size();ix<N;++ix) { tcSpinPtr hwspin = outgoing()[ix]; if(hwspin->developed()!=SpinInfo::Developed) hwspin->develop(); Dout[ix] = hwspin->DMatrix(); } // calculate the spin density matrix and return the answer return _matrixelement.calculateDMatrix(Dout); } ��������������herwig++-2.6.0.orig/Decay/DecayPhaseSpaceMode.fh����������������������������������������������������0000644�0001750�0001750�00000000504�11754474774�022131� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the DecayPhaseSpaceMode class. // #ifndef HERWIG_DecayPhaseSpaceMode_FH #define HERWIG_DecayPhaseSpaceMode_FH namespace Herwig { using namespace ThePEG; class DecayPhaseSpaceMode; ThePEG_DECLARE_CLASS_POINTERS(DecayPhaseSpaceMode,DecayPhaseSpaceModePtr); } #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Hw64Decayer.h�������������������������������������������������������������0000644�0001750�0001750�00000012111�11754474774�020216� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Hw64Decayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_Hw64Decayer_H #define HERWIG_Hw64Decayer_H // // This is the declaration of the Hw64Decayer class. // #include <ThePEG/Config/ThePEG.h> #include <HwDecayerBase.h> #include <ThePEG/Interface/Interfaced.h> #include <ThePEG/PDT/DecayMode.h> #include <ThePEG/Repository/Strategy.fh> #include <fstream> namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * <code>Hw64Decayer</code> is a class that defines all the general routines * used in HERWIG++ to imitate the HERWIG 6.4 decays. The goal is to have an exact * copy of HERWIG 6.4 decay routines. This will allow for easy 'callibration' * of the new C++ code with the old Fortran code. * * This class handles the non-partonic decays. In general it is used for * exclusive meson and baryon decays. Three different matrix elements are supported * * - MECode=0 flat-phase space. * - MECode=100 free V-A matrix element * - MECode=101 bound V-A matrix element * * @see HeavyDecayer * @see QuarkoniumDecayer * @see Decayer * */ class Hw64Decayer: public HwDecayerBase { public: /** * Default constructor */ Hw64Decayer() : MECode(0),_masstry(50) {} /** * return true if this decayer can perfom the decay specified by the * given decay mode. */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * for a given decay mode and a given particle instance, perform the * decay and return the decay products. */ virtual ParticleVector decay(const Particle & parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) const; public: /** * Standard Init function used to initialize the interface. */ static void Init(); /** @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); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * Weighting of phase space for V-A matrix elements */ static double VAWt(Energy2 t0, Energy2 t1, Energy2 t2, InvEnergy4 t3); /** * Take an array of momenta and set the momentum member of the particles. * @param moms The input momenta to be assigned to the particles. * @param particles The particles whose momenta is to be set. * @param out The particles outputted with their momenta set. */ void setParticleMomentum(ParticleVector & out, const cPDVector & particles, const vector<Lorentz5Momentum> & moms) const { unsigned int numProds = particles.size(); for(unsigned int ix=0;ix<numProds;++ix) out.push_back(particles[ix]->produceParticle(moms[ix])); } private: /** * Describe a concrete class with persistant data. */ static ClassDescription<Hw64Decayer> initHw64Decayer; /** * Private and non-existent assignment operator. */ const Hw64Decayer & operator=(const Hw64Decayer &); private: /** * The code for the matrix element being used. */ int MECode; /** * Maximum number of attempts to generate the off-shell masses */ unsigned int _masstry; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * This template specialization informs ThePEG about the base class of * Hw64Decayer. */ template <> struct BaseClassTrait<Herwig::Hw64Decayer,1> { /** Typedef of the base class of Hw64Decayer. */ typedef Herwig::HwDecayerBase NthBase; }; /** * This template specialization informs ThePEG about the name of the * Hw64Decayer class. */ template <> struct ClassTraits<Herwig::Hw64Decayer>: public ClassTraitsBase<Herwig::Hw64Decayer> { /** Return the class name. */ static string className() { return "Herwig::Hw64Decayer"; } /** Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "Hw64Decay.so"; } }; /** @endcond */ } #endif /* HERWIG_Hw64Decayer_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/�������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464203�020464� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/SMHiggsWWDecayer.h�������������������������������������������0000644�0001750�0001750�00000016711�11754474773�023732� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SMHiggsWWDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMHiggsWWDecayer_H #define HERWIG_SMHiggsWWDecayer_H // // This is the declaration of the SMHiggsWWDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.fh" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The SMHiggsWWDecayer class performs the decay of the Standard Model * Higgs boson to \f$W^+W^-\f$ and \f$Z^0Z^0\f$ including the decays * of the gauge bosons. * * @see \ref SMHiggsWWDecayerInterfaces "The interfaces" * defined for SMHiggsWWDecayer. */ class SMHiggsWWDecayer: public DecayIntegrator { public: /** * A typedef to select the boson decay modes */ typedef Selector<unsigned int> ModeSelector; public: /** * The default constructor. */ SMHiggsWWDecayer(); /** * Check if this decayer can perfom the decay for a particular mode. * Uses the modeNumber member but can be overridden * @param parent The decaying particle * @param children The decay products */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * For a given decay mode and a given particle instance, perform the * decay and return the decay products. As this is the base class this * is not implemented. * @return The vector of particles produced in the decay. */ virtual ParticleVector decay(const Particle & parent, const tPDVector & children) const; /** * Which of the possible decays is required */ virtual int modeNumber(bool &, tcPDPtr, const tPDVector & ) const {return -1;} /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<SMHiggsWWDecayer> initSMHiggsWWDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SMHiggsWWDecayer & operator=(const SMHiggsWWDecayer &); private: /** * Pointers to the vertices for the helicity calculations */ //@{ /** * Pointer to the fermion-femion-W vertex */ AbstractFFVVertexPtr _theFFWVertex; /** * Pointer to the fermion-femion-Z vertex */ AbstractFFVVertexPtr _theFFZVertex; /** * Pointer to the higgs-WW/ZZ vertex */ AbstractVVSVertexPtr _theHVVVertex; //@} /** * Selectors for the gauge boson decay modes */ //@{ /** * Selector for the W decays */ ModeSelector _wdecays; /** * Selector for the Z decays */ ModeSelector _zdecays; //@} /** * Product of gauge boson branching ratios for normalisation */ vector<double> _ratio; /** * Maximum weights for the decays */ //@{ /** * Maximum weight for \f$H\to W^+W^-\f$ decays */ vector<double> _wmax; /** * Maximum weight for \f$H\to Z^0Z^0\f$ decays */ vector<double> _zmax; //@} /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Scalar wavefunction */ mutable ScalarWaveFunction _swave; /** * 1st spinor wavefunction */ mutable vector<SpinorWaveFunction > _awave1; /** * 2nd spinor wavefunction */ mutable vector<SpinorWaveFunction > _awave2; /** * 1st barred spinor wavefunction */ mutable vector<SpinorBarWaveFunction> _fwave1; /** * 2nd barred spinor wavefunction */ mutable vector<SpinorBarWaveFunction> _fwave2; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SMHiggsWWDecayer. */ template <> struct BaseClassTrait<Herwig::SMHiggsWWDecayer,1> { /** Typedef of the first base class of SMHiggsWWDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the SMHiggsWWDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SMHiggsWWDecayer> : public ClassTraitsBase<Herwig::SMHiggsWWDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::SMHiggsWWDecayer"; } /** * The name of a file containing the dynamic library where the class * SMHiggsWWDecayer is implemented. It may also include several, space-separated, * libraries if the class SMHiggsWWDecayer depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwPerturbativeHiggsDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SMHiggsWWDecayer_H */ �������������������������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/SMZDecayer.h�������������������������������������������������0000644�0001750�0001750�00000024441�11754474773�022623� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SMZDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMZDecayer_H #define HERWIG_SMZDecayer_H // // This is the declaration of the SMZDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** \ingroup Decay * * The <code>SMZDecayer</code> is designed to perform the decay of the * Z boson to the Standard Model fermions. In principle it can also * be used for these decays in any model. * * @see DecayIntegrator * */ class SMZDecayer: public DecayIntegrator { public: /** * Default constructor. */ SMZDecayer(); public: /** * Virtual members to be overridden by inheriting classes * which implement hard corrections */ //@{ /** * Has an old fashioned ME correction */ virtual bool hasMECorrection() {return true;} /** * Initialize the ME correction */ virtual void initializeMECorrection(ShowerTreePtr , double & , double & ); /** * Apply the hard matrix element correction to a given hard process or decay */ virtual void applyHardMatrixElementCorrection(ShowerTreePtr); /** * Apply the soft matrix element correction * @param initial The particle from the hard process which started the * shower * @param parent The initial particle in the current branching * @param br The branching struct * @return If true the emission should be vetoed */ virtual bool softMatrixElementVeto(ShowerProgenitorPtr initial, ShowerParticlePtr parent,Branching br); //@} public: /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay,MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) const; /** * Members for the generation of QED radiation in the decays */ //@{ /** * The one-loop virtual correction. * @param imode The mode required. * @param part The decaying particle. * @param products The decay products including the radiated photon. * @return Whether the correction is implemented */ virtual double oneLoopVirtualME(unsigned int imode, const Particle & part, const ParticleVector & products); /** * The real emission matrix element * @param imode The mode required * @param part The decaying particle * @param products The decay products including the radiated photon * @param iemitter The particle which emitted the photon * @param ctheta The cosine of the polar angle between the photon and the * emitter * @param stheta The sine of the polar angle between the photon and the * emitter * @param rot1 Rotation from rest frame to frame for real emission * @param rot2 Rotation to place emitting particle along z */ virtual InvEnergy2 realEmissionME(unsigned int imode, const Particle & part, ParticleVector & products, unsigned int iemitter, double ctheta, double stheta, const LorentzRotation & rot1, const LorentzRotation & rot2); //@} 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} protected: /** * Apply the hard matrix element */ vector<Lorentz5Momentum> applyHard(const ParticleVector &p); /** * Get the weight for hard emission */ double getHard(double &, double &); /** * Set the \f$\rho\f$ parameter */ void setRho(double); /** * Set the \f$\tilde{\kappa}\f$ parameters symmetrically */ void setKtildeSymm(); /** * Set second \f$\tilde{\kappa}\f$, given the first. */ void setKtilde2(); /** * Translate the variables from \f$x_q,x_{\bar{q}}\f$ to \f$\tilde{\kappa},z\f$ */ //@{ /** * Calculate \f$z\f$. */ double getZfromX(double, double); /** * Calculate \f$\tilde{\kappa}\f$. */ double getKfromX(double, double); //@} /** * Calculate \f$x_{q},x_{\bar{q}}\f$ from \f$\tilde{\kappa},z\f$. * @param kt \f$\tilde{\kappa}\f$ * @param z \f$z\f$ * @param x \f$x_{q}\f$ * @param xbar \f$x_{\bar{q}}\f$ */ void getXXbar(double kt, double z, double & x, double & xbar); /** * Soft weight */ //@{ /** * Soft quark weight calculated from \f$x_{q},x_{\bar{q}}\f$ * @param x \f$x_{q}\f$ * @param xbar \f$x_{\bar{q}}\f$ */ double qWeight(double x, double xbar); /** * Soft antiquark weight calculated from \f$x_{q},x_{\bar{q}}\f$ * @param x \f$x_{q}\f$ * @param xbar \f$x_{\bar{q}}\f$ */ double qbarWeight(double x, double xbar); /** * Soft quark weight calculated from \f$\tilde{q},z\f$ * @param qtilde \f$\tilde{q}\f$ * @param z \f$z\f$ */ double qWeightX(Energy qtilde, double z); /** * Soft antiquark weight calculated from \f$\tilde{q},z\f$ * @param qtilde \f$\tilde{q}\f$ * @param z \f$z\f$ */ double qbarWeightX(Energy qtilde, double z); //@} /** * ???? */ double u(double); /** * Vector and axial vector parts of the matrix element */ //@{ /** * Vector part of the matrix element */ double MEV(double, double); /** * Axial vector part of the matrix element */ double MEA(double, double); /** * The matrix element, given \f$x_1\f$, \f$x_2\f$. * @param x1 \f$x_1\f$ * @param x2 \f$x_2\f$ */ double PS(double x1, double x2); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<SMZDecayer> initSMZDecayer; /** * Private and non-existent assignment operator. */ SMZDecayer & operator=(const SMZDecayer &); private: /** * Pointer to the Z vertex */ FFVVertexPtr FFZvertex_; /** * Pointer to the photon vertex */ AbstractFFVVertexPtr FFPvertex_; /** * maximum weights for the different integrations */ //@{ /** * Weights for the Z to quarks decays. */ vector<double> quarkWeight_; /** * Weights for the Z to leptons decays. */ vector<double> leptonWeight_; //@} /** * Spin density matrix for the decay */ mutable RhoDMatrix _rho; /** * Polarization vectors for the decay */ mutable vector<VectorWaveFunction> _vectors; /** * Spinors for the decay */ mutable vector<SpinorWaveFunction> _wave; /** * Barred spinors for the decay */ mutable vector<SpinorBarWaveFunction> _wavebar; private: /** * CM energy */ Energy d_Q_; /** * Quark mass */ Energy d_m_; /** * The rho parameter */ double d_rho_; /** * The v parameter */ double d_v_; /** * The initial kappa-tilde values for radiation from the quark */ double d_kt1_; /** * The initial kappa-tilde values for radiation from the antiquark */ double d_kt2_; /** * Cut-off parameter */ static const double EPS_; /** * Pointer to the coupling */ ShowerAlphaPtr alpha_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SMZDecayer. */ template <> struct BaseClassTrait<Herwig::SMZDecayer,1> { /** Typedef of the base class of SMZDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SMZDecayer> : public ClassTraitsBase<Herwig::SMZDecayer> { /** Return the class name.*/ static string className() { return "Herwig::SMZDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwPerturbativeDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SMZDecayer_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/SMHiggsFermionsPOWHEGDecayer.h�������������������������������0000644�0001750�0001750�00000014115�11754474773�026065� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_SMHiggsFermionsPOWHEGDecayer_H #define HERWIG_SMHiggsFermionsPOWHEGDecayer_H // // This is the declaration of the SMHiggsFermionsPOWHEGDecayer class. // #include "SMHiggsFermionsDecayer.h" #include "Herwig++/Utilities/Maths.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the SMHiggsFermionsPOWHEGDecayer class. * * @see \ref SMHiggsFermionsPOWHEGDecayerInterfaces "The interfaces" * defined for SMHiggsFermionsPOWHEGDecayer. */ class SMHiggsFermionsPOWHEGDecayer: public SMHiggsFermionsDecayer { public: /** * The default constructor. */ SMHiggsFermionsPOWHEGDecayer(); /** * Virtual members to be overridden by inheriting classes * which implement hard corrections */ //@{ /** * Has a POWHEG style correction */ virtual bool hasPOWHEGCorrection() {return true;} /** * Apply the POWHEG style correction */ virtual HardTreePtr generateHardest(ShowerTreePtr); //@} virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<SMHiggsFermionsPOWHEGDecayer> initSMHiggsFermionsPOWHEGDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SMHiggsFermionsPOWHEGDecayer & operator=(const SMHiggsFermionsPOWHEGDecayer &); /** * Calcluate the Kallen function */ double calculateLambda(double x, double y, double z) const; /** * Dipole subtraction term */ InvEnergy2 dipoleSubtractionTerm(double x1, double x2) const; /** * Real emission term */ InvEnergy2 calculateRealEmission(double x1, double x2) const; /** * Virtual term */ double calculateVirtualTerm() const; /** * Non-singlet term */ double calculateNonSingletTerm(double beta, double L) const; /** * Check the sign of the momentum in the \f$z\f$-direction is correct. */ bool checkZMomenta(double x1, double x2, double x3, double y, Energy pT) const; /** * Calculate the Jacobian */ InvEnergy calculateJacobian(double x1, double x2, Energy pT) const; /** * Generate a real emission event */ bool getEvent(); private: /** * The colour factor */ double CF_; /** * The Higgs mass */ mutable Energy mHiggs_; /** * The reduced mass */ mutable double mu_; /** * The square of the reduced mass */ mutable double mu2_; /** * The strong coupling */ mutable double aS_; /** * Stuff ofr the POWHEG correction */ //@{ /** * Pointer to the object calculating the strong coupling */ ShowerAlphaPtr alphaS_; /** * ParticleData object for the gluon */ tcPDPtr gluon_; /** * The cut off on pt, assuming massless quarks. */ Energy pTmin_; // radiative variables (pt,y) Energy pT_; /** * The ParticleData objects for the fermions */ vector<tcPDPtr> partons_; /** * The fermion momenta */ vector<Lorentz5Momentum> quark_; /** * The momentum of the radiated gauge boson */ Lorentz5Momentum gauge_; /** * The Higgs boson */ PPtr higgs_; /** * Higgs mass squared */ Energy2 mh2_; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SMHiggsFermionsPOWHEGDecayer. */ template <> struct BaseClassTrait<Herwig::SMHiggsFermionsPOWHEGDecayer,1> { /** Typedef of the first base class of SMHiggsFermionsPOWHEGDecayer. */ typedef Herwig::SMHiggsFermionsDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the SMHiggsFermionsPOWHEGDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SMHiggsFermionsPOWHEGDecayer> : public ClassTraitsBase<Herwig::SMHiggsFermionsPOWHEGDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::SMHiggsFermionsPOWHEGDecayer"; } /** * The name of a file containing the dynamic library where the class * SMHiggsFermionsPOWHEGDecayer is implemented. It may also include several, space-separated, * libraries if the class SMHiggsFermionsPOWHEGDecayer depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwPerturbativeHiggsDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SMHiggsFermionsPOWHEGDecayer_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/Makefile.in��������������������������������������������������0000644�0001750�0001750�00000054733�11756461676�022560� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Decay/Perturbative DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwPerturbativeDecay_la_LIBADD = am_HwPerturbativeDecay_la_OBJECTS = SMWDecayer.lo SMZDecayer.lo \ SMTopDecayer.lo HwPerturbativeDecay_la_OBJECTS = $(am_HwPerturbativeDecay_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwPerturbativeDecay_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwPerturbativeDecay_la_LDFLAGS) \ $(LDFLAGS) -o $@ HwPerturbativeHiggsDecay_la_LIBADD = am_HwPerturbativeHiggsDecay_la_OBJECTS = SMHiggsFermionsDecayer.lo \ SMHiggsFermionsPOWHEGDecayer.lo SMHiggsGGHiggsPPDecayer.lo \ SMHiggsWWDecayer.lo HwPerturbativeHiggsDecay_la_OBJECTS = \ $(am_HwPerturbativeHiggsDecay_la_OBJECTS) HwPerturbativeHiggsDecay_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(HwPerturbativeHiggsDecay_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwPerturbativeDecay_la_SOURCES) \ $(HwPerturbativeHiggsDecay_la_SOURCES) DIST_SOURCES = $(HwPerturbativeDecay_la_SOURCES) \ $(HwPerturbativeHiggsDecay_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwPerturbativeDecay.la HwPerturbativeHiggsDecay.la HwPerturbativeDecay_la_SOURCES = \ SMWDecayer.cc SMWDecayer.h\ SMZDecayer.cc SMZDecayer.h\ SMTopDecayer.cc SMTopDecayer.h HwPerturbativeDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:1:0 HwPerturbativeHiggsDecay_la_SOURCES = \ SMHiggsFermionsDecayer.cc SMHiggsFermionsDecayer.h \ SMHiggsFermionsPOWHEGDecayer.cc SMHiggsFermionsPOWHEGDecayer.h \ SMHiggsGGHiggsPPDecayer.cc SMHiggsGGHiggsPPDecayer.h\ SMHiggsWWDecayer.cc SMHiggsWWDecayer.h HwPerturbativeHiggsDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:1:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Decay/Perturbative/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Decay/Perturbative/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwPerturbativeDecay.la: $(HwPerturbativeDecay_la_OBJECTS) $(HwPerturbativeDecay_la_DEPENDENCIES) $(EXTRA_HwPerturbativeDecay_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwPerturbativeDecay_la_LINK) -rpath $(pkglibdir) $(HwPerturbativeDecay_la_OBJECTS) $(HwPerturbativeDecay_la_LIBADD) $(LIBS) HwPerturbativeHiggsDecay.la: $(HwPerturbativeHiggsDecay_la_OBJECTS) $(HwPerturbativeHiggsDecay_la_DEPENDENCIES) $(EXTRA_HwPerturbativeHiggsDecay_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwPerturbativeHiggsDecay_la_LINK) -rpath $(pkglibdir) $(HwPerturbativeHiggsDecay_la_OBJECTS) $(HwPerturbativeHiggsDecay_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMHiggsFermionsDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMHiggsFermionsPOWHEGDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMHiggsGGHiggsPPDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMHiggsWWDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMTopDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMWDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SMZDecayer.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: �������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/SMHiggsFermionsDecayer.cc������������������������������������0000644�0001750�0001750�00000015606�11754474773�025317� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SMHiggsFermionsDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMHiggsFermionsDecayer class. // #include "SMHiggsFermionsDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "Herwig++/Decay/DecayVertex.h" #include "ThePEG/Helicity/ScalarSpinInfo.h" #include "ThePEG/Helicity/FermionSpinInfo.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "Herwig++/Models/StandardModel/StandardModel.h" using namespace Herwig; using namespace ThePEG::Helicity; SMHiggsFermionsDecayer::SMHiggsFermionsDecayer() { _maxwgt.resize(9); _maxwgt[0]=0.; _maxwgt[1]=0; _maxwgt[2]=0; _maxwgt[3]=0.0194397; _maxwgt[4]=0.463542; _maxwgt[5]=0.; _maxwgt[6]=6.7048e-09; _maxwgt[7]=0.00028665; _maxwgt[8]=0.0809643; } void SMHiggsFermionsDecayer::doinit() { DecayIntegrator::doinit(); // get the vertices from the Standard Model object tcHwSMPtr hwsm=dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if(!hwsm) throw InitException() << "SMHiggsFermionsDecayer needs the StandardModel class" << " to be either the Herwig++ one or a class inheriting" << " from it"; _hvertex = hwsm->vertexFFH(); // make sure they are initialized _hvertex->init(); // get the width generator for the higgs tPDPtr higgs = getParticleData(ParticleID::h0); // set up the decay modes vector<double> wgt(0); unsigned int imode=0; tPDVector extpart(3); DecayPhaseSpaceModePtr mode; int iy; extpart[0]=higgs; for(unsigned int istep=0;istep<11;istep+=10) { for(unsigned ix=1;ix<7;++ix) { if(istep<10||ix%2!=0) { iy = ix+istep; extpart[1]=getParticleData( iy); extpart[2]=getParticleData(-iy); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); addMode(mode,_maxwgt[imode],wgt); ++imode; } } } } bool SMHiggsFermionsDecayer::accept(tcPDPtr parent, const tPDVector & children) const { if(parent->id()!=ParticleID::h0||children.size()!=2) return false; tPDVector::const_iterator pit = children.begin(); int id1=(**pit).id(); ++pit; int id2=(**pit).id(); if(id1==-id2&&(abs(id1)<=6||(abs(id1)>=11&&abs(id1)<=16))) return true; else return false; } ParticleVector SMHiggsFermionsDecayer::decay(const Particle & parent, const tPDVector & children) const { // id's of the decaying particles tPDVector::const_iterator pit(children.begin()); int id1((**pit).id()); int imode=-1; if(abs(id1)<=6) imode = abs(id1)-1; else if(abs(id1)>=11&&abs(id1)<=16) imode = (abs(id1)-11)/2+6; ParticleVector output(generate(false,false,imode,parent)); // set up the colour flow if(output[0]->hasColour()) output[0]->antiColourNeighbour(output[1]); else if(output[1]->hasColour()) output[1]->antiColourNeighbour(output[0]); return output; } void SMHiggsFermionsDecayer::persistentOutput(PersistentOStream & os) const { os << _maxwgt << _hvertex; } void SMHiggsFermionsDecayer::persistentInput(PersistentIStream & is, int) { is >> _maxwgt >> _hvertex; } ClassDescription<SMHiggsFermionsDecayer> SMHiggsFermionsDecayer::initSMHiggsFermionsDecayer; // Definition of the static class description member. void SMHiggsFermionsDecayer::Init() { static ClassDocumentation<SMHiggsFermionsDecayer> documentation ("The SMHiggsFermionsDecayer class implements the decat of the Standard Model" " Higgs boson to the Standard Model fermions"); static ParVector<SMHiggsFermionsDecayer,double> interfaceMaxWeights ("MaxWeights", "Maximum weights for the various decays", &SMHiggsFermionsDecayer::_maxwgt, 9, 1.0, 0.0, 10.0, false, false, Interface::limited); } // return the matrix element squared double SMHiggsFermionsDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { int iferm(1),ianti(0); if(decay[0]->id()>0) swap(iferm,ianti); if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); _swave = ScalarWaveFunction(inpart.momentum(),inpart.dataPtr(),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin1Half,PDT::Spin1Half)); } if(meopt==Terminate) { ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); SpinorBarWaveFunction:: constructSpinInfo(_wavebar,decay[iferm],outgoing,true); SpinorWaveFunction:: constructSpinInfo(_wave ,decay[ianti],outgoing,true); return 0.; } SpinorBarWaveFunction:: calculateWaveFunctions(_wavebar,decay[iferm],outgoing); SpinorWaveFunction:: calculateWaveFunctions(_wave ,decay[ianti],outgoing); Energy2 scale(sqr(inpart.mass())); unsigned int ifm,ia; for(ifm=0;ifm<2;++ifm) { for(ia=0;ia<2;++ia) { if(iferm>ianti) ME()(0,ia,ifm)=_hvertex->evaluate(scale,_wave[ia], _wavebar[ifm],_swave); else ME()(0,ifm,ia)=_hvertex->evaluate(scale,_wave[ia], _wavebar[ifm],_swave); } } int id = abs(decay[0]->id()); double output=(ME().contract(_rho)).real()*UnitRemoval::E2/scale; if(id <=6) output*=3.; // test of the partial width // Ptr<Herwig::StandardModel>::transient_const_pointer // hwsm=dynamic_ptr_cast<Ptr<Herwig::StandardModel>::transient_const_pointer>(standardModel()); // double g2(hwsm->alphaEM(scale)*4.*Constants::pi/hwsm->sin2ThetaW()); // Energy mass(hwsm->mass(scale,decay[0]->dataPtr())), // mw(getParticleData(ParticleID::Wplus)->mass()); // double beta(sqrt(1.-4.*decay[0]->mass()*decay[0]->mass()/scale)); // cerr << "testing alpha " << hwsm->alphaEM(scale) << "\n"; // Energy test(g2*mass*mass*beta*beta*beta*inpart.mass()/32./Constants::pi/mw/mw); // if(abs(decay[0]->id())<=6){test *=3.;} // cout << "testing the answer " << output << " " // << test/GeV // << endl; return output; } void SMHiggsFermionsDecayer::dataBaseOutput(ofstream & os,bool header) const { if(header) os << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class for(unsigned int ix=0;ix<_maxwgt.size();++ix) { os << "newdef " << name() << ":MaxWeights " << ix << " " << _maxwgt[ix] << "\n"; } DecayIntegrator::dataBaseOutput(os,false); if(header) os << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } void SMHiggsFermionsDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<numberModes();++ix) { _maxwgt[ix] = mode(ix)->maxWeight(); } } } ��������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/SMHiggsFermionsDecayer.h�������������������������������������0000644�0001750�0001750�00000014027�11754474773�025155� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SMHiggsFermionsDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMHiggsFermionsDecayer_H #define HERWIG_SMHiggsFermionsDecayer_H // // This is the declaration of the SMHiggsFermionsDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" namespace Herwig { using namespace ThePEG; /** * The SMHiggsFermionsDecayer class is designed to decay the Standard Model Higgs * to the Standard Model fermions. * * @see DecayIntegrator */ class SMHiggsFermionsDecayer: public DecayIntegrator { public: /** * The default constructor. */ SMHiggsFermionsDecayer(); /** * Which of the possible decays is required */ virtual int modeNumber(bool & , tcPDPtr , const tPDVector & ) const {return -1;} /** * Check if this decayer can perfom the decay for a particular mode. * Uses the modeNumber member but can be overridden * @param parent The decaying particle * @param children The decay products */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * For a given decay mode and a given particle instance, perform the * decay and return the decay products. As this is the base class this * is not implemented. * @return The vector of particles produced in the decay. */ virtual ParticleVector decay(const Particle & parent,const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<SMHiggsFermionsDecayer> initSMHiggsFermionsDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SMHiggsFermionsDecayer & operator=(const SMHiggsFermionsDecayer &); private: /** * Pointer to the Higgs vertex */ AbstractFFSVertexPtr _hvertex; /** * maximum weights for the different decay modes */ vector<double> _maxwgt; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Scalar wavefunction */ mutable ScalarWaveFunction _swave; /** * Spinor wavefunction */ mutable vector<SpinorWaveFunction> _wave; /** * Barred spinor wavefunction */ mutable vector<SpinorBarWaveFunction> _wavebar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SMHiggsFermionsDecayer. */ template <> struct BaseClassTrait<Herwig::SMHiggsFermionsDecayer,1> { /** Typedef of the first base class of SMHiggsFermionsDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the SMHiggsFermionsDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SMHiggsFermionsDecayer> : public ClassTraitsBase<Herwig::SMHiggsFermionsDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::SMHiggsFermionsDecayer"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the SMHiggsFermionsDecayer class and any other class on which it depends * (except the base class). */ static string library() { return "HwPerturbativeHiggsDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SMHiggsFermionsDecayer_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/SMHiggsWWDecayer.cc������������������������������������������0000644�0001750�0001750�00000026051�11754474773�024066� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SMHiggsWWDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMHiggsWWDecayer class. // #include "SMHiggsWWDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/PDT/ParticleData.h" using namespace Herwig; typedef Selector<tDMPtr> DecaySelector; ClassDescription<SMHiggsWWDecayer> SMHiggsWWDecayer::initSMHiggsWWDecayer; // Definition of the static class description member. void SMHiggsWWDecayer::Init() { static ClassDocumentation<SMHiggsWWDecayer> documentation ("The SMHiggsWWDecayer class performs the decay of the Standard Model Higgs" " boson to W+W- and Z0Z0"); static ParVector<SMHiggsWWDecayer,double> interfaceWMaximum ("WMaximum", "The maximum weight for H-> W+W- decays", &SMHiggsWWDecayer::_wmax, 2, 1.0, 0.0, 10000.0, false, false, Interface::limited); static ParVector<SMHiggsWWDecayer,double> interfaceZMaximum ("ZMaximum", "The maximum weight for H-> Z0Z0 decays", &SMHiggsWWDecayer::_zmax, 2, 1.0, 0.0, 10000.0, false, false, Interface::limited); } SMHiggsWWDecayer::SMHiggsWWDecayer() : _wmax(2,1.00), _zmax(2,1.00) {} void SMHiggsWWDecayer::doinit() { DecayIntegrator::doinit(); // get the vertices from the Standard Model object tcHwSMPtr hwsm=dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if(!hwsm) throw InitException() << "SMHiggsWWDecayer needs the StandardModel class" << " to be either the Herwig++ one or a class inheriting" << " from it"; _theFFWVertex = hwsm->vertexFFW(); _theFFZVertex = hwsm->vertexFFZ(); _theHVVVertex = hwsm->vertexWWH(); // get the width generator for the higgs tPDPtr higgs = getParticleData(ParticleID::h0); // the W+W- decays for(unsigned int ix=0;ix<2;++ix) { tPDPtr h0 = getParticleData(ParticleID::h0); tPDPtr wplus = getParticleData(ParticleID::Wplus); tPDPtr wminus = getParticleData(ParticleID::Wminus); DecaySelector wpDecay = wplus->decaySelector(); DecaySelector wmDecay = wminus->decaySelector(); tPDVector extpart(5); extpart[0]=h0; DecayPhaseSpaceModePtr mode; DecayPhaseSpaceChannelPtr newchannel; vector<double> wgt(1,1.); unsigned int imode=0; for(DecaySelector::const_iterator wp=wpDecay.begin();wp!=wpDecay.end();++wp) { // extract the decay products of W+ tPDVector prod=(*wp).second->orderedProducts(); if(prod[0]->id()<prod[1]->id()) swap(prod[0],prod[1]); extpart[1]=prod[0]; extpart[2]=prod[1]; for(DecaySelector::const_iterator wm=wmDecay.begin();wm!=wmDecay.end();++wm) { // extract the decay products of W- tPDVector prod=(*wm).second->orderedProducts(); if(prod[0]->id()<prod[1]->id()) swap(prod[0],prod[1]); extpart[3]=prod[0]; extpart[4]=prod[1]; // create the new mode mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); // create the phase space channel newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0,0.0,-1,-2); if(ix==0) { newchannel->addIntermediate(wplus ,1,0., 1, 2); newchannel->addIntermediate(wminus ,1,0., 3, 4); } else { newchannel->addIntermediate(wplus ,0,0., 1, 2); newchannel->addIntermediate(wminus ,0,0., 3, 4); } mode->addChannel(newchannel); addMode(mode,_wmax[ix],wgt); // insert mode into selector _ratio.push_back(wp->second->brat()*wm->second->brat()); if(ix==0) _wdecays.insert (_ratio.back(),imode); ++imode; } } // the Z0Z0 decays tPDPtr Z0=getParticleData(ParticleID::Z0); DecaySelector Z0Decay = Z0->decaySelector(); for(DecaySelector::const_iterator z1=Z0Decay.begin();z1!=Z0Decay.end();++z1) { // extract the decay products of Z0 tPDVector prod=(*z1).second->orderedProducts(); if(prod[0]->id()<prod[1]->id()) swap(prod[0],prod[1]); extpart[1]=prod[0]; extpart[2]=prod[1]; for(DecaySelector::const_iterator z2=Z0Decay.begin();z2!=Z0Decay.end();++z2) { // extract the decay products of Z0 tPDVector prod=(*z2).second->orderedProducts(); if(prod[0]->id()<prod[1]->id()) swap(prod[0],prod[1]); extpart[3]=prod[0]; extpart[4]=prod[1]; // create the new mode mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); // create the phase space channel newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0,0.0,-1,-2); if(ix==0) { newchannel->addIntermediate(Z0 ,1,0., 1, 2); newchannel->addIntermediate(Z0 ,1,0., 3, 4); } else { newchannel->addIntermediate(Z0 ,0,0., 1, 2); newchannel->addIntermediate(Z0 ,0,0., 3, 4); } mode->addChannel(newchannel); addMode(mode,_zmax[ix],wgt); // insert mode into selector _ratio.push_back(z1->second->brat()*z2->second->brat()); if(ix==0) _zdecays.insert (_ratio.back(),imode); ++imode; } } } } bool SMHiggsWWDecayer::accept(tcPDPtr parent, const tPDVector & children) const { // if not two decay products return false if(children.size()!=2) return false; // if not decaying higgs return false if(parent->id()!=ParticleID::h0) return false; tPDVector::const_iterator pit = children.begin(); int id1=(**pit).id(); ++pit; int id2=(**pit).id(); if((id1==-id2&&abs(id1)==ParticleID::Wplus)|| (id1== id2&& id1 ==ParticleID::Z0)) return true; else return false; } void SMHiggsWWDecayer::persistentOutput(PersistentOStream & os) const { os << _theFFWVertex << _theFFZVertex << _theHVVVertex << _wdecays << _zdecays << _ratio << _wmax << _zmax; } void SMHiggsWWDecayer::persistentInput(PersistentIStream & is, int) { is >> _theFFWVertex >> _theFFZVertex >> _theHVVVertex >> _wdecays >> _zdecays >> _ratio >> _wmax >> _zmax; } ParticleVector SMHiggsWWDecayer::decay(const Particle & parent, const tPDVector & children) const { // select the decay modes of the gauge bosons unsigned int imode; if(abs(children[0]->id())==ParticleID::Wplus) imode=_wdecays.select(UseRandom::rnd()); else imode=_zdecays.select(UseRandom::rnd()); // use different phase space for low/high mass higgs if(parent.mass()>1.8*children[0]->mass()) imode+=_wdecays.size()+_zdecays.size(); // generate the kinematics return generate(true,false,imode,parent); } double SMHiggsWWDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // check if Z or W decay bool Z0=decay[0]->id()==-decay[1]->id(); if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); _swave = ScalarWaveFunction(inpart.momentum(),inpart.dataPtr(),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half)); } if(meopt==Terminate) { ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), incoming,true); SpinorBarWaveFunction:: constructSpinInfo(_fwave1,decay[0],outgoing,true); SpinorWaveFunction :: constructSpinInfo(_awave1,decay[1],outgoing,true); SpinorBarWaveFunction:: constructSpinInfo(_fwave2,decay[2],outgoing,true); SpinorWaveFunction :: constructSpinInfo(_awave2,decay[3],outgoing,true); return 0.; } SpinorBarWaveFunction:: calculateWaveFunctions(_fwave1,decay[0],outgoing); SpinorWaveFunction :: calculateWaveFunctions(_awave1,decay[1],outgoing); SpinorBarWaveFunction:: calculateWaveFunctions(_fwave2,decay[2],outgoing); SpinorWaveFunction :: calculateWaveFunctions(_awave2,decay[3],outgoing); // get the intermediates and vertex tcPDPtr inter[2]; AbstractFFVVertexPtr vert; if(Z0) { inter[0]=getParticleData(ParticleID::Z0); inter[1]=inter[0]; vert=_theFFZVertex; } else { inter[0]=getParticleData(ParticleID::Wplus); inter[1]=getParticleData(ParticleID::Wminus); vert=_theFFWVertex; } // construct the spinors for the outgoing particles Energy2 scale0(sqr(inpart.mass())); Energy2 scale1((decay[0]->momentum()+decay[1]->momentum()).m2()); Energy2 scale2((decay[2]->momentum()+decay[3]->momentum()).m2()); // for decays to quarks ensure boson is massive enough to // put quarks on constituent mass-shell if(scale1<sqr(decay[0]->dataPtr()->constituentMass()+ decay[1]->dataPtr()->constituentMass())) return 0.; if(scale2<sqr(decay[2]->dataPtr()->constituentMass()+ decay[3]->dataPtr()->constituentMass())) return 0.; // compute the boson currents VectorWaveFunction curr1[2][2],curr2[2][2]; unsigned int ohel1,ohel2,ohel3,ohel4; for(ohel1=0;ohel1<2;++ohel1) { for(ohel2=0;ohel2<2;++ohel2) { curr1[ohel1][ohel2]=vert->evaluate(scale1,1,inter[0], _awave1[ohel2],_fwave1[ohel1]); curr2[ohel1][ohel2]=vert->evaluate(scale2,1,inter[1], _awave2[ohel2],_fwave2[ohel1]); } } // compute the matrix element for(ohel1=0;ohel1<2;++ohel1) { for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { for(ohel4=0;ohel4<2;++ohel4) { ME()(0,ohel1,ohel2,ohel3,ohel4)= _theHVVVertex->evaluate(scale0,curr1[ohel1][ohel2], curr2[ohel3][ohel4],_swave); } } } } double output=(ME().contract(_rho)).real()*scale0*UnitRemoval::InvE2; // set up the colour flows if(decay[0]->coloured()) { output*=3.; decay[0]->antiColourNeighbour(decay[1]); } if(decay[2]->coloured()) { output*=3.; decay[2]->antiColourNeighbour(decay[3]); } // divide out the gauge boson branching ratios output/=_ratio[imode()]; // if Z0 decays identical particle factor if(Z0) output*=0.5; // return the answer return output; } void SMHiggsWWDecayer::dataBaseOutput(ofstream & os,bool header) const { if(header) os << "update decayers set parameters=\""; for(unsigned int ix=0;ix<2;++ix) { os << "newdef " << name() << ":WMaximum " << ix << " " << _wmax[ix] << "\n"; os << "newdef " << name() << ":ZMaximum " << ix << " " << _zmax[ix] << "\n"; } DecayIntegrator::dataBaseOutput(os,false); if(header) os << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } void SMHiggsWWDecayer::doinitrun() { DecayIntegrator::doinitrun(); for(unsigned int ix=0;ix<2;++ix) { _zmax[ix]=0.; _wmax[ix]=0.; } unsigned int ntest=_wdecays.size()+_zdecays.size(); if(initialize()) { for(unsigned int ix=0;ix<numberModes();++ix) { unsigned int iloc = ix<ntest ? 0 : 1; if(mode(ix)->externalParticles(1)->iCharge()== -mode(ix)->externalParticles(2)->iCharge()) { _zmax[iloc]=max(mode(ix)->maxWeight(),_zmax[iloc]); } else { _wmax[iloc]=max(mode(ix)->maxWeight(),_wmax[iloc]); } } } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/SMWDecayer.h�������������������������������������������������0000644�0001750�0001750�00000021710�11754474773�022614� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SMWDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMWDecayer_H #define HERWIG_SMWDecayer_H // // This is the declaration of the SMWDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** \ingroup Decay * * The <code>SMWDecayer</code> is designed to perform the decay of the * W boson to the Standard Model fermions, including the first order * electroweak corrections. * * @see DecayIntegrator * */ class SMWDecayer: public DecayIntegrator { public: /** * Default constructor. */ SMWDecayer(); public: /** * Virtual members to be overridden by inheriting classes * which implement hard corrections */ //@{ /** * Has an old fashioned ME correction */ virtual bool hasMECorrection() {return true;} /** * Initialize the ME correction */ virtual void initializeMECorrection(ShowerTreePtr , double & , double & ); /** * Apply the hard matrix element correction to a given hard process or decay */ virtual void applyHardMatrixElementCorrection(ShowerTreePtr); /** * Apply the soft matrix element correction * @param initial The particle from the hard process which started the * shower * @param parent The initial particle in the current branching * @param br The branching struct * @return If true the emission should be vetoed */ virtual bool softMatrixElementVeto(ShowerProgenitorPtr initial, ShowerParticlePtr parent,Branching br); //@} public: /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay,MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} protected: /** * Apply the hard matrix element */ vector<Lorentz5Momentum> applyHard(const ParticleVector &p); /** * Get the weight for hard emission */ double getHard(double &, double &); /** * Set the \f$\rho\f$ parameter */ void setRho(double); /** * Set the \f$\tilde{\kappa}\f$ parameters symmetrically */ void setKtildeSymm(); /** * Set second \f$\tilde{\kappa}\f$, given the first. */ void setKtilde2(); /** * Translate the variables from \f$x_q,x_{\bar{q}}\f$ to \f$\tilde{\kappa},z\f$ */ //@{ /** * Calculate \f$z\f$. */ double getZfromX(double, double); /** * Calculate \f$\tilde{\kappa}\f$. */ double getKfromX(double, double); //@} /** * Calculate \f$x_{q},x_{\bar{q}}\f$ from \f$\tilde{\kappa},z\f$. * @param kt \f$\tilde{\kappa}\f$ * @param z \f$z\f$ * @param x \f$x_{q}\f$ * @param xbar \f$x_{\bar{q}}\f$ */ void getXXbar(double kt, double z, double & x, double & xbar); /** * Soft weight */ //@{ /** * Soft quark weight calculated from \f$x_{q},x_{\bar{q}}\f$ * @param x \f$x_{q}\f$ * @param xbar \f$x_{\bar{q}}\f$ */ double qWeight(double x, double xbar); /** * Soft antiquark weight calculated from \f$x_{q},x_{\bar{q}}\f$ * @param x \f$x_{q}\f$ * @param xbar \f$x_{\bar{q}}\f$ */ double qbarWeight(double x, double xbar); /** * Soft quark weight calculated from \f$\tilde{q},z\f$ * @param qtilde \f$\tilde{q}\f$ * @param z \f$z\f$ */ double qWeightX(Energy qtilde, double z); /** * Soft antiquark weight calculated from \f$\tilde{q},z\f$ * @param qtilde \f$\tilde{q}\f$ * @param z \f$z\f$ */ double qbarWeightX(Energy qtilde, double z); //@} /** * ???? */ double u(double); /** * Vector and axial vector parts of the matrix element */ //@{ /** * Vector part of the matrix element */ double MEV(double, double); /** * Axial vector part of the matrix element */ double MEA(double, double); /** * The matrix element, given \f$x_1\f$, \f$x_2\f$. * @param x1 \f$x_1\f$ * @param x2 \f$x_2\f$ */ double PS(double x1, double x2); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<SMWDecayer> initSMWDecayer; /** * Private and non-existent assignment operator. */ SMWDecayer & operator=(const SMWDecayer &); private: /** * Pointer to the W fermions vertex */ FFVVertexPtr FFWvertex_; /** * maximum weights for the different integrations */ //@{ /** * Weights for the W to quarks decays. */ vector<double> quarkWeight_; /** * Weights for the W to leptons decays. */ vector<double> leptonWeight_; //@} /** * Spin density matrix for the decay */ mutable RhoDMatrix _rho; /** * Polarization vectors for the decay */ mutable vector<VectorWaveFunction> _vectors; /** * Spinors for the decay */ mutable vector<SpinorWaveFunction> _wave; /** * Barred spinors for the decay */ mutable vector<SpinorBarWaveFunction> _wavebar; private: /** * CM energy */ Energy d_Q_; /** * Quark mass */ Energy d_m_; /** * The rho parameter */ double d_rho_; /** * The v parameter */ double d_v_; /** * The initial kappa-tilde values for radiation from the quark */ double d_kt1_; /** * The initial kappa-tilde values for radiation from the antiquark */ double d_kt2_; /** * Cut-off parameter */ static const double EPS_; /** * Pointer to the coupling */ ShowerAlphaPtr alpha_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SMWDecayer. */ template <> struct BaseClassTrait<Herwig::SMWDecayer,1> { /** Typedef of the base class of SMWDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SMWDecayer> : public ClassTraitsBase<Herwig::SMWDecayer> { /** Return the class name.*/ static string className() { return "Herwig::SMWDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwPerturbativeDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SMWDecayer_H */ ��������������������������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/SMZDecayer.cc������������������������������������������������0000644�0001750�0001750�00000075144�11754474773�022767� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SMZDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMZDecayer class. // #include "SMZDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "Herwig++/Decay/DecayVertex.h" #include "ThePEG/Helicity/VectorSpinInfo.h" #include "ThePEG/Helicity/FermionSpinInfo.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "Herwig++/Models/StandardModel/StandardModel.h" using namespace Herwig; using namespace ThePEG::Helicity; const double SMZDecayer::EPS_=0.00000001; SMZDecayer::SMZDecayer() : quarkWeight_(5,0.), leptonWeight_(6,0.) { quarkWeight_[0] = 0.488029; quarkWeight_[1] = 0.378461; quarkWeight_[2] = 0.488019; quarkWeight_[3] = 0.378027; quarkWeight_[4] = 0.483207; leptonWeight_[0] = 0.110709; leptonWeight_[1] = 0.220276; leptonWeight_[2] = 0.110708; leptonWeight_[3] = 0.220276; leptonWeight_[4] = 0.110458; leptonWeight_[5] = 0.220276; // intermediates generateIntermediates(false); // QED corrections hasRealEmissionME(true); hasOneLoopME(true); } void SMZDecayer::doinit() { DecayIntegrator::doinit(); // get the vertices from the Standard Model object tcHwSMPtr hwsm=dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if(!hwsm) throw InitException() << "Must have Herwig++ StandardModel object in" << "SMZDecayer::doinit()" << Exception::runerror; FFZvertex_ = dynamic_ptr_cast<FFVVertexPtr>(hwsm->vertexFFZ()); FFPvertex_ = hwsm->vertexFFP(); // make sure they are initialized FFZvertex_->init(); FFPvertex_->init(); // now set up the decay modes DecayPhaseSpaceModePtr mode; tPDVector extpart(3); vector<double> wgt(0); // the Z decay modes extpart[0]=getParticleData(ParticleID::Z0); // loop over the quarks and the leptons for(int istep=0;istep<11;istep+=10) { for(int ix=1;ix<7;++ix) { int iy=istep+ix; if(iy==6) continue; // check that the combination of particles is allowed if(!FFZvertex_->allowed(-iy,iy,ParticleID::Z0)) throw InitException() << "SMZDecayer::doinit() the Z vertex " << "cannot handle all the modes" << Exception::abortnow; extpart[1] = getParticleData(-iy); extpart[2] = getParticleData( iy); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); if(iy<=6) addMode(mode, quarkWeight_.at(ix-1),wgt); else addMode(mode,leptonWeight_.at(iy-11),wgt); } } } int SMZDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); if(children.size()!=2) return imode; int id0=parent->id(); tPDVector::const_iterator pit = children.begin(); int id1=(**pit).id(); ++pit; int id2=(**pit).id(); // Z to quarks or leptons cc =false; if(id0!=ParticleID::Z0) return imode; if(abs(id1)<6&&id1==-id2) { imode=abs(id1)-1; } else if(abs(id1)>=11&&abs(id1)<=16&&id1==-id2) { imode=abs(id1)-6; } cc = false; return imode; } void SMZDecayer::persistentOutput(PersistentOStream & os) const { os << FFZvertex_ << FFPvertex_ << quarkWeight_ << leptonWeight_ << alpha_; } void SMZDecayer::persistentInput(PersistentIStream & is, int) { is >> FFZvertex_ >> FFPvertex_ >> quarkWeight_ >> leptonWeight_ >> alpha_; } ClassDescription<SMZDecayer> SMZDecayer::initSMZDecayer; // Definition of the static class description member. void SMZDecayer::Init() { static ClassDocumentation<SMZDecayer> documentation ("The SMZDecayer class is the implementation of the decay" " Z boson to the Standard Model fermions."); static ParVector<SMZDecayer,double> interfaceZquarkMax ("QuarkMax", "The maximum weight for the decay of the Z to quarks", &SMZDecayer::quarkWeight_, 0, 0, 0, -10000, 10000, false, false, true); static ParVector<SMZDecayer,double> interfaceZleptonMax ("LeptonMax", "The maximum weight for the decay of the Z to leptons", &SMZDecayer::leptonWeight_, 0, 0, 0, -10000, 10000, false, false, true); static Reference<SMZDecayer,ShowerAlpha> interfaceCoupling ("Coupling", "Pointer to the object to calculate the coupling for the correction", &SMZDecayer::alpha_, false, false, true, false, false); } // return the matrix element squared double SMZDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { int iferm(1),ianti(0); if(decay[0]->id()>0) swap(iferm,ianti); if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors,_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); ME(DecayMatrixElement(PDT::Spin1,PDT::Spin1Half,PDT::Spin1Half)); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); SpinorBarWaveFunction:: constructSpinInfo(_wavebar,decay[iferm],outgoing,true); SpinorWaveFunction:: constructSpinInfo(_wave ,decay[ianti],outgoing,true); return 0.; } SpinorBarWaveFunction:: calculateWaveFunctions(_wavebar,decay[iferm],outgoing); SpinorWaveFunction:: calculateWaveFunctions(_wave ,decay[ianti],outgoing); // compute the matrix element Energy2 scale(sqr(inpart.mass())); unsigned int ifm,ia,vhel; for(ifm=0;ifm<2;++ifm) { for(ia=0;ia<2;++ia) { for(vhel=0;vhel<3;++vhel) { if(iferm>ianti) ME()(vhel,ia,ifm)= FFZvertex_->evaluate(scale,_wave[ia],_wavebar[ifm],_vectors[vhel]); else ME()(vhel,ifm,ia)= FFZvertex_->evaluate(scale,_wave[ia],_wavebar[ifm],_vectors[vhel]); } } } double output=(ME().contract(_rho)).real()*UnitRemoval::E2/scale; if(abs(decay[0]->id())<=6) output*=3.; if(decay[0]->hasColour()) decay[0]->antiColourNeighbour(decay[1]); else if(decay[1]->hasColour()) decay[1]->antiColourNeighbour(decay[0]); return output; } void SMZDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<numberModes();++ix) { if(ix<5) quarkWeight_ [ix ]=mode(ix)->maxWeight(); else if(ix<11) leptonWeight_[ix-5 ]=mode(ix)->maxWeight(); } } } void SMZDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; for(unsigned int ix=0;ix<quarkWeight_.size();++ix) { output << "newdef " << name() << ":QuarkMax " << ix << " " << quarkWeight_[ix] << "\n"; } for(unsigned int ix=0;ix<leptonWeight_.size();++ix) { output << "newdef " << name() << ":LeptonMax " << ix << " " << leptonWeight_[ix] << "\n"; } // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } InvEnergy2 SMZDecayer:: realEmissionME(unsigned int,const Particle &parent, ParticleVector &children, unsigned int iemitter, double ctheta, double stheta, const LorentzRotation & rot1, const LorentzRotation & rot2) { // check the number of products and parent assert(children.size()==3 && parent.id()==ParticleID::Z0); // the electric charge double e = sqrt(SM().alphaEM()*4.*Constants::pi); // azimuth of the photon double phi = children[2]->momentum().phi(); // wavefunctions for the decaying particle in the rotated dipole frame vector<VectorWaveFunction> vec1 = _vectors; for(unsigned int ix=0;ix<vec1.size();++ix) { vec1[ix].transform(rot1); vec1[ix].transform(rot2); } // wavefunctions for the decaying particle in the rotated rest frame vector<VectorWaveFunction> vec2 = _vectors; for(unsigned int ix=0;ix<vec1.size();++ix) { vec2[ix].transform(rot2); } // find the outgoing particle and antiparticle unsigned int iferm(0),ianti(1); if(children[iferm]->id()<0) swap(iferm,ianti); // wavefunctions for the particles before the radiation // wavefunctions for the outgoing fermion SpinorBarWaveFunction wavebartemp; Lorentz5Momentum ptemp = - _wavebar[0].momentum(); ptemp *= rot2; if(ptemp.perp()/ptemp.e()<1e-10) { ptemp.setX(ZERO); ptemp.setY(ZERO); } wavebartemp = SpinorBarWaveFunction(ptemp,_wavebar[0].particle(),outgoing); // wavefunctions for the outgoing antifermion SpinorWaveFunction wavetemp; ptemp = - _wave[0].momentum(); ptemp *= rot2; if(ptemp.perp()/ptemp.e()<1e-10) { ptemp.setX(ZERO); ptemp.setY(ZERO); } wavetemp = SpinorWaveFunction(ptemp,_wave[0].particle(),outgoing); // loop over helicities vector<SpinorWaveFunction> wf_old; vector<SpinorBarWaveFunction> wfb_old; for(unsigned int ihel=0;ihel<2;++ihel) { wavetemp.reset(ihel); wf_old.push_back(wavetemp); wavebartemp.reset(ihel); wfb_old.push_back(wavebartemp); } // calculate the wave functions for the new fermions // ensure the momenta have pT=0 for(unsigned int ix=0;ix<2;++ix) { Lorentz5Momentum ptemp = children[ix]->momentum(); if(ptemp.perp()/ptemp.e()<1e-10) { ptemp.setX(ZERO); ptemp.setY(ZERO); children[ix]->set5Momentum(ptemp); } } // calculate the wavefunctions vector<SpinorBarWaveFunction> wfb; SpinorBarWaveFunction::calculateWaveFunctions(wfb,children[iferm],outgoing); vector<SpinorWaveFunction> wf; SpinorWaveFunction::calculateWaveFunctions (wf ,children[ianti],outgoing); // wave functions for the photons vector<VectorWaveFunction> photon; VectorWaveFunction::calculateWaveFunctions(photon,children[2],outgoing,true); // loop to calculate the matrix elements Complex lome[3][2][2],diffme[3][2][2][2],summe[3][2][2][2]; Energy2 scale(sqr(parent.mass())); Complex diff[2]={0.,0.}; Complex sum [2]={0.,0.}; for(unsigned int ifm=0;ifm<2;++ifm) { for(unsigned int ia=0;ia<2;++ia) { for(unsigned int vhel=0;vhel<3;++vhel) { // calculation of the leading-order matrix element Complex loamp = FFZvertex_->evaluate(scale,wf_old[ia], wfb_old[ifm],vec2[vhel]); Complex lotemp = FFZvertex_->evaluate(scale,wf[ia], wfb[ifm],vec1[vhel]); if(iferm>ianti) lome[vhel][ia][ifm] = loamp; else lome[vhel][ifm][ia] = loamp; // photon loop for the real emmision terms for(unsigned int phel=0;phel<2;++phel) { // radiation from the antifermion // normal case with small angle treatment if(children[2 ]->momentum().z()/ children[iferm]->momentum().z()>=ZERO && iemitter == iferm ) { Complex dipole = e*double(children[iferm]->dataPtr()->iCharge())/3.* UnitRemoval::E*loamp* (children[iferm]->momentum()*photon[2*phel].wave())/ (children[iferm]->momentum()*children[2]->momentum()); // sum and difference SpinorBarWaveFunction foff = FFPvertex_->evaluateSmall(ZERO,3,children[iferm]->dataPtr(), wfb[ifm],photon[2*phel], ifm,2*phel,ctheta,phi,stheta,false); diff[0] = FFZvertex_->evaluate(scale,wf[ia],foff,vec1[vhel]) + e*double(children[iferm]->dataPtr()->iCharge())/3.* UnitRemoval::E*(lotemp-loamp)* (children[iferm]->momentum()*photon[2*phel].wave())/ (children[iferm]->momentum()*children[2]->momentum()); sum [0] = diff[0]+2.*dipole; } // special if fermion backwards else { SpinorBarWaveFunction foff = FFPvertex_->evaluate(ZERO,3,children[iferm]->dataPtr(), wfb[ifm],photon[2*phel]); Complex diag = FFZvertex_->evaluate(scale,wf[ia],foff,vec1[vhel]); Complex dipole = e*double(children[iferm]->dataPtr()->iCharge())/3.* UnitRemoval::E*loamp* (children[iferm]->momentum()*photon[2*phel].wave())/ (children[iferm]->momentum()*children[2]->momentum()); diff[0] = diag-dipole; sum [0] = diag+dipole; } // radiation from the anti fermion // small angle case in general if(children[2 ]->momentum().z()/ children[ianti]->momentum().z()>=ZERO && iemitter == ianti ) { Complex dipole = e*double(children[ianti]->dataPtr()->iCharge())/3.* UnitRemoval::E*loamp* (children[ianti]->momentum()*photon[2*phel].wave())/ (children[ianti]->momentum()*children[2]->momentum()); // sum and difference SpinorWaveFunction foff = FFPvertex_->evaluateSmall(ZERO,3,children[ianti]->dataPtr(), wf[ia],photon[2*phel], ia,2*phel,ctheta,phi,stheta,false); diff[1] = FFZvertex_->evaluate(scale,foff ,wfb[ifm],vec1[vhel]) + e*double(children[ianti]->dataPtr()->iCharge())/3.* UnitRemoval::E*(lotemp-loamp)* (children[ianti]->momentum()*photon[2*phel].wave())/ (children[ianti]->momentum()*children[2]->momentum()); sum [1] = diff[1]+2.*dipole; } // special if fermion backwards after radiation else { SpinorWaveFunction foff = FFPvertex_->evaluate(ZERO,3,children[ianti]->dataPtr(), wf[ia],photon[2*phel]); Complex diag = FFZvertex_->evaluate(scale,foff ,wfb[ifm],vec1[vhel]); Complex dipole = e*double(children[ianti]->dataPtr()->iCharge())/3.* UnitRemoval::E*loamp* (children[ianti]->momentum()*photon[2*phel].wave())/ (children[ianti]->momentum()*children[2]->momentum()); // sum and difference diff[1] = diag - dipole; sum [1] = diag + dipole; } // add to me if(iferm>ianti) { diffme[vhel][ia][ifm][phel] = diff[0] + diff[1]; summe [vhel][ia][ifm][phel] = sum[0] + sum[1] ; } else { diffme [vhel][ifm][ia][phel] = diff[0] + diff[1]; summe [vhel][ifm][ia][phel] = sum[0] + sum[1] ; } } } } } // cerr << parent << "\n"; // for(unsigned int ix=0;ix<children.size();++ix) { // cerr << *children[ix] << "\n"; // } // _rho = RhoDMatrix(PDT::Spin1); Complex lo(0.),difference(0.); for(unsigned int vhel1=0;vhel1<3;++vhel1) { for(unsigned int vhel2=0;vhel2<3;++vhel2) { for(unsigned int ifm=0;ifm<2;++ifm) { for(unsigned int ia=0;ia<2;++ia) { lo += _rho(vhel1,vhel2)*lome[vhel1][ifm][ia]*conj(lome[vhel2][ifm][ia]); for(unsigned int phel=0;phel<2;++phel) { difference += _rho(vhel1,vhel2)*diffme[vhel1][ifm][ia][phel]*conj(summe[vhel2][ifm][ia][phel]); } } } } } // // analytic result // double iCharge = children[0]->dataPtr()->iCharge()* // children[1]->dataPtr()->iCharge()/9.; // Energy2 ubar = 2.*children[0]->momentum()*children[2]->momentum(); // Energy2 tbar = 2.*children[1]->momentum()*children[2]->momentum(); // double mu2 = sqr(children[1]->mass()/parent.mass()); // double gL = (FFZvertex_->left() *FFZvertex_->norm()).real(); // double gR = (FFZvertex_->right()*FFZvertex_->norm()).real(); // Energy2 den = sqr(parent.mass())*(((sqr(gL)+sqr(gR))*(1-mu2)+6.*mu2*gL*gR)); // InvEnergy2 anal = -iCharge*( 2.*(ubar/tbar+tbar/ubar)/sqr(parent.mass())+ // 4.*mu2/den*((sqr(gL)+sqr(gR))*(1+ubar/tbar+tbar/ubar) // -2.*gL*gR*(1.+2.*(ubar/tbar+tbar/ubar)))); // cerr << "testing ratio " << parent.PDGName() // << " " << difference.real()/sqr(e)/lo.real()*UnitRemoval::InvE2/(anal) << "\n" // << stheta << " " << ctheta << "\n"; return difference.real()/sqr(e)/lo.real()*UnitRemoval::InvE2; } double SMZDecayer::oneLoopVirtualME(unsigned int, const Particle & parent, const ParticleVector & children) { assert(children.size()==2); // velocities of the particles double beta = sqrt(1.-4.*sqr(children[0]->mass()/parent.mass())); double opb = 1.+beta; double omb = 4.*sqr(children[0]->mass()/parent.mass())/opb; // couplings double gL = (FFZvertex_->left() *FFZvertex_->norm()).real(); double gR = (FFZvertex_->right()*FFZvertex_->norm()).real(); double gA = 0.5*(gL-gR); double gV = 0.5*(gL+gR); // correction terms double ln = log(omb/opb); double f1 = 1. + ln*beta; double fA = 1. + ln/beta; InvEnergy f2 = 0.5*sqrt(omb*opb)/parent.mass()/beta*ln; // momentum difference for the loop Lorentz5Momentum q = children[0]->momentum()-children[1]->momentum(); if(children[0]->id()<0) q *= -1.; // spinors vector<LorentzSpinor <SqrtEnergy> > sp; vector<LorentzSpinorBar<SqrtEnergy> > sbar; for(unsigned int ix=0;ix<2;++ix) { sp .push_back( _wave[ix].dimensionedWave()); sbar.push_back(_wavebar[ix].dimensionedWave()); } // polarization vectors vector<LorentzPolarizationVector> pol; for(unsigned int ix=0;ix<3;++ix) pol.push_back(_vectors[ix].wave()); // matrix elements complex<Energy> lome[3][2][2],loopme[3][2][2]; for(unsigned int vhel=0;vhel<3;++vhel) { for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { complex<Energy> vector = sp[ihel1].generalCurrent(sbar[ihel2], 1.,1.).dot(pol[vhel]); complex<Energy> axial = sp[ihel1].generalCurrent(sbar[ihel2],-1.,1.).dot(pol[vhel]); complex<Energy2> scalar = sp[ihel1].scalar(sbar[ihel2])*(q*pol[vhel]); lome [vhel][ihel1][ihel2] = gV* vector-gA* axial; loopme[vhel][ihel1][ihel2] = gV*f1*vector-gA*fA*axial+scalar*f2*gV; } } } // sum sums complex<Energy2> den(ZERO),num(ZERO); for(unsigned int vhel1=0;vhel1<3;++vhel1) { for(unsigned int vhel2=0;vhel2<3;++vhel2) { for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { num += _rho(vhel1,vhel2)* ( lome[vhel1][ihel1][ihel2]*conj(loopme[vhel2][ihel1][ihel2])+ loopme[vhel1][ihel1][ihel2]*conj( lome[vhel2][ihel1][ihel2])); den += _rho(vhel1,vhel2)* lome[vhel1][ihel1][ihel2]*conj(lome[vhel2][ihel1][ihel2]); } } } } // prefactor double iCharge = children[0]->dataPtr()->iCharge()* children[1]->dataPtr()->iCharge()/9.; double pre = 0.5*SM().alphaEM()*iCharge/Constants::pi; // output return pre*num.real()/den.real(); } void SMZDecayer:: initializeMECorrection(ShowerTreePtr tree, double & initial, double & final) { map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt; // get the quark and antiquark ParticleVector qq; for(cjt=tree->outgoingLines().begin();cjt!=tree->outgoingLines().end();++cjt) qq.push_back(cjt->first->copy()); // ensure quark first if(qq[0]->id()<0) swap(qq[0],qq[1]); // centre of mass energy d_Q_ = (qq[0]->momentum() + qq[1]->momentum()).m(); // quark mass d_m_ = 0.5*(qq[0]->momentum().m()+qq[1]->momentum().m()); // set the other parameters setRho(sqr(d_m_/d_Q_)); setKtildeSymm(); // otherwise can do it initial=1.; final =1.; } void SMZDecayer:: applyHardMatrixElementCorrection(ShowerTreePtr tree) { // get the quark and antiquark ParticleVector qq; map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit; for(cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) qq.push_back(cit->first->copy()); if(!qq[0]->dataPtr()->coloured()) return; // ensure quark first if(qq[0]->id()<0) swap(qq[0],qq[1]); // get the momenta vector<Lorentz5Momentum> newfs = applyHard(qq); // return if no emission if(newfs.size()!=3) return; // perform final check to ensure energy greater than constituent mass for (int i=0; i<2; i++) { if (newfs[i].e() < qq[i]->data().constituentMass()) return; } if (newfs[2].e() < getParticleData(ParticleID::g)->constituentMass()) return; // set masses for (int i=0; i<2; i++) newfs[i].setMass(qq[i]->mass()); newfs[2].setMass(ZERO); // decide which particle emits bool firstEmits= newfs[2].vect().perp2(newfs[0].vect())< newfs[2].vect().perp2(newfs[1].vect()); // create the new quark, antiquark and gluon PPtr newg = getParticleData(ParticleID::g)->produceParticle(newfs[2]); PPtr newq,newa; if(firstEmits) { newq = getParticleData(abs(qq[0]->id()))->produceParticle(newfs[0]); newa = new_ptr(Particle(*qq[1])); qq[1]->antiColourLine()->removeAntiColoured(newa); newa->set5Momentum(newfs[1]); } else { newq = new_ptr(Particle(*qq[0])); qq[0]->colourLine()->removeColoured(newq); newq->set5Momentum(newfs[0]); newa = getParticleData(-abs(qq[0]->id()))->produceParticle(newfs[1]); } // get the original colour line ColinePtr col; if(qq[0]->id()>0) col=qq[0]->colourLine(); else col=qq[0]->antiColourLine(); // set the colour lines if(firstEmits) { col->addColoured(newq); col->addAntiColoured(newg); newa->colourNeighbour(newg); } else { col->addAntiColoured(newa); col->addColoured(newg); newq->antiColourNeighbour(newg); } // change the existing quark and antiquark PPtr orig; for(cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { if(cit->first->progenitor()->id()==newq->id()) { // remove old particles from colour line col->removeColoured(cit->first->copy()); col->removeColoured(cit->first->progenitor()); // insert new particles cit->first->copy(newq); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newq,1,true))); cit->first->progenitor(sp); tree->outgoingLines()[cit->first]=sp; cit->first->perturbative(!firstEmits); if(firstEmits) orig=cit->first->original(); } else { // remove old particles from colour line col->removeAntiColoured(cit->first->copy()); col->removeColoured(cit->first->progenitor()); // insert new particles cit->first->copy(newa); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newa,1,true))); cit->first->progenitor(sp); tree->outgoingLines()[cit->first]=sp; cit->first->perturbative(firstEmits); if(!firstEmits) orig=cit->first->original(); } } // add the gluon ShowerParticlePtr sg=new_ptr(ShowerParticle(*newg,1,true)); ShowerProgenitorPtr gluon=new_ptr(ShowerProgenitor(orig,newg,sg)); gluon->perturbative(false); tree->outgoingLines().insert(make_pair(gluon,sg)); tree->hardMatrixElementCorrection(true); } vector<Lorentz5Momentum> SMZDecayer:: applyHard(const ParticleVector &p) { double x, xbar; vector<Lorentz5Momentum> fs; // return if no emission if (getHard(x, xbar) < UseRandom::rnd() || p.size() != 2) return fs; // centre of mass energy Lorentz5Momentum pcm = p[0]->momentum() + p[1]->momentum(); // momenta of quark,antiquark and gluon Lorentz5Momentum pq, pa, pg; if (p[0]->id() > 0) { pq = p[0]->momentum(); pa = p[1]->momentum(); } else { pa = p[0]->momentum(); pq = p[1]->momentum(); } // boost to boson rest frame Boost beta = (pcm.findBoostToCM()); pq.boost(beta); pa.boost(beta); // return if fails ????? double xg = 2.-x-xbar; if((1.-x)*(1.-xbar)*(1.-xg) < d_rho_*xg*xg) return fs; Axis u1, u2, u3; // moduli of momenta in units of Q and cos theta // stick to q direction? // p1 is the one that is kept, p2 is the other fermion, p3 the gluon. Energy e1, e2, e3; Energy pp1, pp2, pp3; bool keepq = true; if (UseRandom::rnd() > sqr(x)/(sqr(x)+sqr(xbar))) keepq = false; if (keepq) { pp1 = d_Q_*sqrt(sqr(x)-4.*d_rho_)/2.; pp2 = d_Q_*sqrt(sqr(xbar)-4.*d_rho_)/2.; e1 = d_Q_*x/2.; e2 = d_Q_*xbar/2.; u1 = pq.vect().unit(); } else { pp2 = d_Q_*sqrt(sqr(x)-4.*d_rho_)/2.; pp1 = d_Q_*sqrt(sqr(xbar)-4.*d_rho_)/2.; e2 = d_Q_*x/2.; e1 = d_Q_*xbar/2.; u1 = pa.vect().unit(); } pp3 = d_Q_*xg/2.; e3 = pp3; u2 = u1.orthogonal(); u2 /= u2.mag(); u3 = u1.cross(u2); u3 /= u3.mag(); double ct2=-2., ct3=-2.; if (pp1 == ZERO || pp2 == ZERO || pp3 == ZERO) { bool touched = false; if (pp1 == ZERO) { ct2 = 1; ct3 = -1; touched = true; } if (pp2 == ZERO || pp3 == ZERO) { ct2 = 1; ct3 = 1; touched = true; } if (!touched) throw Exception() << "SMZDecayer::applyHard()" << " did not set ct2/3" << Exception::abortnow; } else { ct3 = (sqr(pp1)+sqr(pp3)-sqr(pp2))/(2.*pp1*pp3); ct2 = (sqr(pp1)+sqr(pp2)-sqr(pp3))/(2.*pp1*pp2); } double phi = Constants::twopi*UseRandom::rnd(); double cphi = cos(phi); double sphi = sin(phi); double st2 = sqrt(1.-sqr(ct2)); double st3 = sqrt(1.-sqr(ct3)); ThreeVector<Energy> pv1, pv2, pv3; pv1 = pp1*u1; pv2 = -ct2*pp2*u1 + st2*cphi*pp2*u2 + st2*sphi*pp2*u3; pv3 = -ct3*pp3*u1 - st3*cphi*pp3*u2 - st3*sphi*pp3*u3; if (keepq) { pq = Lorentz5Momentum(pv1, e1); pa = Lorentz5Momentum(pv2, e2); } else { pa = Lorentz5Momentum(pv1, e1); pq = Lorentz5Momentum(pv2, e2); } pg = Lorentz5Momentum(pv3, e3); pq.boost(-beta); pa.boost(-beta); pg.boost(-beta); fs.push_back(pq); fs.push_back(pa); fs.push_back(pg); return fs; } double SMZDecayer::getHard(double &x1, double &x2) { double w = 0.0; double y1 = UseRandom::rnd(),y2 = UseRandom::rnd(); // simply double MC efficiency // -> weight has to be divided by two (Jacobian) if (y1 + y2 > 1) { y1 = 1.-y1; y2 = 1.-y2; } bool inSoft = false; if (y1 < 0.25) { if (y2 < 0.25) { inSoft = true; if (y1 < y2) { y1 = 0.25-y1; y2 = y1*(1.5 - 2.*y2); } else { y2 = 0.25 - y2; y1 = y2*(1.5 - 2.*y1); } } else { if (y2 < y1 + 2.*sqr(y1)) return w; } } else { if (y2 < 0.25) { if (y1 < y2 + 2.*sqr(y2)) return w; } } // inside PS? x1 = 1.-y1; x2 = 1.-y2; if(y1*y2*(1.-y1-y2) < d_rho_*sqr(y1+y2)) return w; double k1 = getKfromX(x1, x2); double k2 = getKfromX(x2, x1); // Is it in the quark emission zone? if (k1 < d_kt1_) return 0.0; // No...is it in the anti-quark emission zone? if (k2 < d_kt2_) return 0.0; // Point is in dead zone: compute q qbar g weight w = MEV(x1, x2); // for axial: // w = MEA(x1, x2); // Reweight soft region if (inSoft) { if (y1 < y2) w *= 2.*y1; else w *= 2.*y2; } // alpha and colour factors Energy2 pt2 = sqr(d_Q_)*(1.-x1)*(1.-x2); w *= 1./3./Constants::pi*alpha_->value(pt2); return w; } bool SMZDecayer:: softMatrixElementVeto(ShowerProgenitorPtr initial,ShowerParticlePtr parent,Branching br) { // check we should be applying the veto if(parent->id()!=initial->progenitor()->id()|| br.ids[0]!=br.ids[1]|| br.ids[2]!=ParticleID::g) return false; // calculate pt double d_z = br.kinematics->z(); Energy d_qt = br.kinematics->scale(); Energy2 d_m2 = parent->momentum().m2(); Energy pPerp = (1.-d_z)*sqrt( sqr(d_z*d_qt) - d_m2); // if not hardest so far don't apply veto if(pPerp<initial->highestpT()) return false; // calculate the weight double weight = 0.; if(parent->id()>0) weight = qWeightX(d_qt, d_z); else weight = qbarWeightX(d_qt, d_z); // compute veto from weight bool veto = !UseRandom::rndbool(weight); // if not vetoed reset max if(!veto) initial->highestpT(pPerp); // if vetoing reset the scale if(veto) parent->setEvolutionScale(br.kinematics->scale()); // return the veto return veto; } void SMZDecayer::setRho(double r) { d_rho_ = r; d_v_ = sqrt(1.-4.*d_rho_); } void SMZDecayer::setKtildeSymm() { d_kt1_ = (1. + sqrt(1. - 4.*d_rho_))/2.; setKtilde2(); } void SMZDecayer::setKtilde2() { double num = d_rho_ * d_kt1_ + 0.25 * d_v_ *(1.+d_v_)*(1.+d_v_); double den = d_kt1_ - d_rho_; d_kt2_ = num/den; } double SMZDecayer::getZfromX(double x1, double x2) { double uval = u(x2); double num = x1 - (2. - x2)*uval; double den = sqrt(x2*x2 - 4.*d_rho_); return uval + num/den; } double SMZDecayer::getKfromX(double x1, double x2) { double zval = getZfromX(x1, x2); return (1.-x2)/(zval*(1.-zval)); } double SMZDecayer::MEV(double x1, double x2) { // Vector part double num = (x1+2.*d_rho_)*(x1+2.*d_rho_) + (x2+2.*d_rho_)*(x2+2.*d_rho_) - 8.*d_rho_*(1.+2.*d_rho_); double den = (1.+2.*d_rho_)*(1.-x1)*(1.-x2); return (num/den - 2.*d_rho_/((1.-x1)*(1.-x1)) - 2*d_rho_/((1.-x2)*(1.-x2)))/d_v_; } double SMZDecayer::MEA(double x1, double x2) { // Axial part double num = (x1+2.*d_rho_)*(x1+2.*d_rho_) + (x2+2.*d_rho_)*(x2+2.*d_rho_) + 2.*d_rho_*((5.-x1-x2)*(5.-x1-x2) - 19.0 + 4*d_rho_); double den = d_v_*d_v_*(1.-x1)*(1.-x2); return (num/den - 2.*d_rho_/((1.-x1)*(1.-x1)) - 2*d_rho_/((1.-x2)*(1.-x2)))/d_v_; } double SMZDecayer::u(double x2) { return 0.5*(1. + d_rho_/(1.-x2+d_rho_)); } void SMZDecayer:: getXXbar(double kti, double z, double &x, double &xbar) { double w = sqr(d_v_) + kti*(-1. + z)*z*(2. + kti*(-1. + z)*z); if (w < 0) { x = -1.; xbar = -1; } else { x = (1. + sqr(d_v_)*(-1. + z) + sqr(kti*(-1. + z))*z*z*z + z*sqrt(w) - kti*(-1. + z)*z*(2. + z*(-2 + sqrt(w))))/ (1. - kti*(-1. + z)*z + sqrt(w)); xbar = 1. + kti*(-1. + z)*z; } } double SMZDecayer::qWeight(double x, double xbar) { double rval; double xg = 2. - xbar - x; // always return one in the soft gluon region if(xg < EPS_) return 1.0; // check it is in the phase space if((1.-x)*(1.-xbar)*(1.-xg) < d_rho_*xg*xg) return 0.0; double k1 = getKfromX(x, xbar); double k2 = getKfromX(xbar, x); // Is it in the quark emission zone? if(k1 < d_kt1_) { rval = MEV(x, xbar)/PS(x, xbar); // is it also in the anti-quark emission zone? if(k2 < d_kt2_) rval *= 0.5; return rval; } return 1.0; } double SMZDecayer::qbarWeight(double x, double xbar) { double rval; double xg = 2. - xbar - x; // always return one in the soft gluon region if(xg < EPS_) return 1.0; // check it is in the phase space if((1.-x)*(1.-xbar)*(1.-xg) < d_rho_*xg*xg) return 0.0; double k1 = getKfromX(x, xbar); double k2 = getKfromX(xbar, x); // Is it in the antiquark emission zone? if(k2 < d_kt2_) { rval = MEV(x, xbar)/PS(xbar, x); // is it also in the quark emission zone? if(k1 < d_kt1_) rval *= 0.5; return rval; } return 1.0; } double SMZDecayer::qWeightX(Energy qtilde, double z) { double x, xb; getXXbar(sqr(qtilde/d_Q_), z, x, xb); // if exceptionally out of phase space, leave this emission, as there // is no good interpretation for the soft ME correction. if (x < 0 || xb < 0) return 1.0; return qWeight(x, xb); } double SMZDecayer::qbarWeightX(Energy qtilde, double z) { double x, xb; getXXbar(sqr(qtilde/d_Q_), z, xb, x); // see above in qWeightX. if (x < 0 || xb < 0) return 1.0; return qbarWeight(x, xb); } double SMZDecayer::PS(double x, double xbar) { double u = 0.5*(1. + d_rho_ / (1.-xbar+d_rho_)); double z = u + (x - (2.-xbar)*u)/sqrt(xbar*xbar - 4.*d_rho_); double brack = (1.+z*z)/(1.-z)- 2.*d_rho_/(1-xbar); // interesting: the splitting function without the subtraction // term. Actually gives a much worse approximation in the collinear // limit. double brack = (1.+z*z)/(1.-z); double den = (1.-xbar)*sqrt(xbar*xbar - 4.*d_rho_); return brack/den; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/Makefile.am��������������������������������������������������0000644�0001750�0001750�00000001145�11755411762�022522� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwPerturbativeDecay.la HwPerturbativeHiggsDecay.la HwPerturbativeDecay_la_SOURCES = \ SMWDecayer.cc SMWDecayer.h\ SMZDecayer.cc SMZDecayer.h\ SMTopDecayer.cc SMTopDecayer.h HwPerturbativeDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:1:0 HwPerturbativeHiggsDecay_la_SOURCES = \ SMHiggsFermionsDecayer.cc SMHiggsFermionsDecayer.h \ SMHiggsFermionsPOWHEGDecayer.cc SMHiggsFermionsPOWHEGDecayer.h \ SMHiggsGGHiggsPPDecayer.cc SMHiggsGGHiggsPPDecayer.h\ SMHiggsWWDecayer.cc SMHiggsWWDecayer.h HwPerturbativeHiggsDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:1:0 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/SMTopDecayer.h�����������������������������������������������0000644�0001750�0001750�00000032764�11754474773�023163� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SMTopDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMTopDecayer_H #define HERWIG_SMTopDecayer_H // // This is the declaration of the SMTopDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/Models/StandardModel/StandardModel.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * \ingroup Decay * * The SMTopDecayer performs decays of the top quark into * the bottom quark and qqbar pairs or to the bottom quark and lepton * neutrino pairs via W boson exchange. */ class SMTopDecayer: public DecayIntegrator { public: /** * The default constructor. */ SMTopDecayer(); public: /** * Virtual members to be overridden by inheriting classes * which implement hard corrections */ //@{ /** * Has an old fashioned ME correction */ virtual bool hasMECorrection() {return true;} /** * Initialize the ME correction */ virtual void initializeMECorrection(ShowerTreePtr , double & , double & ); /** * Apply the hard matrix element correction to a given hard process or decay */ virtual void applyHardMatrixElementCorrection(ShowerTreePtr); /** * Apply the soft matrix element correction * @param initial The particle from the hard process which started the * shower * @param parent The initial particle in the current branching * @param br The branching struct * @return If true the emission should be vetoed */ virtual bool softMatrixElementVeto(ShowerProgenitorPtr initial, ShowerParticlePtr parent,Branching br); //@} public: /** * Which of the possible decays is required */ virtual int modeNumber(bool & , tcPDPtr , const tPDVector & ) const {return -1;} /** * Check if this decayer can perfom the decay for a particular mode. * Uses the modeNumber member but can be overridden * @param parent The decaying particle * @param children The decay products */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * For a given decay mode and a given particle instance, perform the * decay and return the decay products. As this is the base class this * is not implemented. * @return The vector of particles produced in the decay. */ virtual ParticleVector decay(const Particle & parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 (or higher body) partial width * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; /** * The differential three body decay rate with one integral performed. * @param imode The mode for which the matrix element is needed. * @param q2 The scale, \e i.e. the mass squared of the decaying particle. * @param s The invariant mass which still needs to be integrate over. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The differential rate \f$\frac{d\Gamma}{ds}\f$ */ virtual InvEnergy threeBodydGammads(const int imode, const Energy2 q2, const Energy2 s, const Energy m1, const Energy m2, const Energy m3) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); protected: /** * The integrand for the integrate partial width */ Energy6 dGammaIntegrand(Energy2 mffb2, Energy2 mbf2, Energy mt, Energy mb, Energy mf, Energy mfb, Energy mw) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} protected: /** * Apply the hard matrix element */ vector<Lorentz5Momentum> applyHard(const ParticleVector &p,double,double); /** * Get the weight for hard emission */ double getHard(double, double); /** * This function is auxiliary to the function \f$x_{a}\f$ (hXAB). */ double xgbr(int); /** * This function is auxiliary to the function \f$x_{a}\f$ (hXAB). */ double ktr(double,int); /** * This function determines \f$x_{a}\f$ as a function of \f$x_{g}\f$ * and \f$\kappa\f$ where \f$\kappa\f$ pertains to emissions from the * b. */ double xab(double,double,int); /** * This function determines the point (\f$x_{g}\f$) where the condition that * \f$x_{a}\f$ be real supersedes that due to the external input * \f$\tilde{\kappa}\f$ where, again, \f$\kappa\f$ pertains to emissions from the * b. */ double xgbcut(double); /** * This function determines the minimum value of \f$x_{a}\f$ * for a given \f$\tilde{\kappa}\f$ where \f$\kappa\f$ pertains to * emissions from the c. */ double xaccut(double); /** * This function is auxiliary to the function \f$x_{g}\f$ (hXGC). */ double z(double,double,int,int); /** * This function determines \f$x_{g}\f$ as a function of \f$x_{a}\f$ * and \f$\kappa\f$ where \f$\kappa\f$ pertains to emissions from the * c. It is multivalued, one selects a branch according to the * second to last integer flag (+/-1). The last integer flag * is used to select whether (1) or not (0) you wish to have the * function for the special case of the full phase space, in which * case the fifth argument \f$\kappa\f$ is irrelevant. */ double xgc(double,double,int,int); /** * This function, \f$x_{g,c=0}^{-1}\f$, returns \f$x_{a}\f$ as a function * of \f$x_{g}\f$ for the special case of c=0, for emissions from c * (the b-quark). The third input is \f$\tilde{\kappa}\f$ which pertains * to emissions from c. */ double xginvc0(double,double); /** * For a given value of \f$x_{g}\f$ this returns the maximum value of \f$x_{a}\f$ * in the dead region. */ double approxDeadMaxxa(double,double,double); /** * For a given value of \f$x_{g}\f$ this returns the maximum value of \f$x_{a}\f$ * in the dead region. */ double approxDeadMinxa(double,double,double); /** * This function returns true or false according to whether the values * xg,xa are in the allowed region, the kinematically accessible phase * space. */ bool inTheAllowedRegion(double,double); /** * This function returns true or false according to whether the values * xg,xa are exactly in the approximate dead region. */ bool inTheApproxDeadRegion(double,double, double,double); /** * This function returns true or false according to whether the values * xg,xa are exactly in the dead region. */ bool inTheDeadRegion(double,double, double,double); /** * This function returns values of (\f$x_{g}\f$,\f$x_{a}\f$) distributed * according to \f$\left(1+a-x_{a}\right)^{-1}x_{g}^{-2}\f$ in the * approximate dead region. */ double deadRegionxgxa(double,double); /** * This rotation takes a 5-momentum and returns a rotation matrix * such that it acts on the input 5-momentum so as to * make it point in the +Z direction. Finally it performs a randomn * rotation about the z-axis. */ LorentzRotation rotateToZ(Lorentz5Momentum); /** * Full matrix element with a factor of \f$\frac{\alpha_SC_F}{x_g^2\pi}\f$ removed. * @param xw The momentum fraction of the W boson * @param xg The momentum fraction of the gluon. */ double me(double xw, double xg); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<SMTopDecayer> initSMTopDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SMTopDecayer & operator=(const SMTopDecayer &); /** *Pointer to the W vertex */ AbstractFFVVertexPtr _wvertex; /** * Max weight for integration */ //@{ /** * Weight \f$W\to q\bar{q}'\f$ */ vector<double> _wquarkwgt; /** * Weight \f$W\to \ell \nu\f$ */ vector<double> _wleptonwgt; //@} /** * Pointer to the \f$W^\pm\f$ */ PDPtr _wplus; /** * Spin density matrix for the decay */ mutable RhoDMatrix _rho; /** * 1st spinor for the decay */ mutable vector<SpinorWaveFunction > _inHalf; /** * 2nd spinor for the decay */ mutable vector<SpinorWaveFunction > _outHalf; /** * 1st barred spinor for the decay */ mutable vector<SpinorBarWaveFunction> _inHalfBar; /** * 2nd barred spinor for the decay */ mutable vector<SpinorBarWaveFunction> _outHalfBar; /** * The mass of the W boson */ Energy _ma; /** * The mass of the bottom quark */ Energy _mc; /** * The top mass */ Energy _mt; /** * The gluon mass. */ Energy _mg; /** * The mass ratio for the W. */ double _a; /** * The mass ratio for the bottom. */ double _c; /** * The mass ratio for the gluon. */ double _g; /** * Two times the energy fraction of a. */ double _ktb; /** * Two times the energy fraction of the gluon. */ double _ktc; /** * Two times the energy fraction of the gluon. */ double _xg; /** * Two times the energy fraction of a. */ double _xa; /** * Two times the energy fraction of c. */ double _xc; /** * This determines the hard matrix element importance * sampling in _xg. _xg_sampling=2.0 samples as 1/xg^2. */ double _xg_sampling; /** * The enhancement factor for initial-state radiation */ double _initialenhance; /** * The enhancement factor for final-state radiation */ double _finalenhance; /** * This flag determines whether the T2 region in the decay shower * (JHEP12(2003)_045) is populated by the ME correction (true) or * the shower from the decaying particle. */ bool _useMEforT2; /** * Pointer to the coupling */ ShowerAlphaPtr _alpha; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SMTopDecayer. */ template <> struct BaseClassTrait<Herwig::SMTopDecayer,1> { /** Typedef of the first base class of SMTopDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the SMTopDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SMTopDecayer> : public ClassTraitsBase<Herwig::SMTopDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::SMTopDecayer"; } /** Return the name of the shared library be loaded to get * access to the SMTopDecayer class and every other class it uses * (except the base class). */ static string library() { return "HwPerturbativeDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SMTopDecayer_H */ ������������herwig++-2.6.0.orig/Decay/Perturbative/SMTopDecayer.cc����������������������������������������������0000644�0001750�0001750�00000130766�11755204203�023276� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SMTopDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMTopDecayer class. // #include "SMTopDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "Herwig++/Decay/DecayVertex.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "Herwig++/PDT/ThreeBodyAllOn1IntegralCalculator.h" using namespace Herwig; using namespace ThePEG::Helicity; SMTopDecayer::SMTopDecayer() : _wquarkwgt(6,0.),_wleptonwgt(3,0.), _xg_sampling(1.5), _initialenhance(1.), _finalenhance(2.3), _useMEforT2(true) { _wleptonwgt[0] = 0.302583; _wleptonwgt[1] = 0.301024; _wleptonwgt[2] = 0.299548; _wquarkwgt[0] = 0.851719; _wquarkwgt[1] = 0.0450162; _wquarkwgt[2] = 0.0456962; _wquarkwgt[3] = 0.859839; _wquarkwgt[4] = 3.9704e-06; _wquarkwgt[5] = 0.000489657; generateIntermediates(true); } bool SMTopDecayer::accept(tcPDPtr parent, const tPDVector & children) const { if(abs(parent->id()) != ParticleID::t) return false; int id0(0),id1(0),id2(0); for(tPDVector::const_iterator it = children.begin(); it != children.end();++it) { int id=(**it).id(),absid(abs(id)); if(absid==ParticleID::b&&double(id)/double(parent->id())>0) { id0=id; } else { switch (absid) { case ParticleID::nu_e: case ParticleID::nu_mu: case ParticleID::nu_tau: id1 = id; break; case ParticleID::eminus: case ParticleID::muminus: case ParticleID::tauminus: id2 = id; break; case ParticleID::b: case ParticleID::d: case ParticleID::s: id1 = id; break; case ParticleID::u: case ParticleID::c: id2=id; break; default : break; } } } if(id0==0||id1==0||id2==0) return false; if(double(id1)/double(id2)>0) return false; return true; } ParticleVector SMTopDecayer::decay(const Particle & parent, const tPDVector & children) const { int id1(0),id2(0); for(tPDVector::const_iterator it = children.begin(); it != children.end();++it) { int id=(**it).id(),absid=abs(id); if(absid == ParticleID::b && double(id)/double(parent.id())>0) continue; //leptons if(absid > 10 && absid%2==0) id1=absid; if(absid > 10 && absid%2==1) id2=absid; //quarks if(absid < 10 && absid%2==0) id2=absid; if(absid < 10 && absid%2==1) id1=absid; } unsigned int imode(0); if(id2 >=11 && id2<=16) imode = (id1-12)/2; else imode = id1+1+id2/2; bool cc = parent.id() == ParticleID::tbar; ParticleVector out(generate(true,cc,imode,parent)); //arrange colour flow PPtr pparent=const_ptr_cast<PPtr>(&parent); out[1]->incomingColour(pparent,out[1]->id()<0); ParticleVector products = out[0]->children(); if(products[0]->hasColour()) products[0]->colourNeighbour(products[1],true); else if(products[0]->hasAntiColour()) products[0]->colourNeighbour(products[1],false); return out; } void SMTopDecayer::persistentOutput(PersistentOStream & os) const { os << _wvertex << _wquarkwgt << _wleptonwgt << _wplus << _alpha << _initialenhance << _finalenhance << _xg_sampling << _useMEforT2; } void SMTopDecayer::persistentInput(PersistentIStream & is, int) { is >> _wvertex >> _wquarkwgt >> _wleptonwgt >> _wplus >> _alpha >> _initialenhance >> _finalenhance >> _xg_sampling >> _useMEforT2; } ClassDescription<SMTopDecayer> SMTopDecayer::initSMTopDecayer; // Definition of the static class description member. void SMTopDecayer::Init() { static ClassDocumentation<SMTopDecayer> documentation ("This is the implementation of the SMTopDecayer which " "decays top quarks into bottom quarks and either leptons " "or quark-antiquark pairs including the matrix element for top decay", "The matrix element correction for top decay \\cite{Hamilton:2006ms}.", "%\\cite{Hamilton:2006ms}\n" "\\bibitem{Hamilton:2006ms}\n" " K.~Hamilton and P.~Richardson,\n" " ``A simulation of QCD radiation in top quark decays,''\n" " JHEP {\\bf 0702}, 069 (2007)\n" " [arXiv:hep-ph/0612236].\n" " %%CITATION = JHEPA,0702,069;%%\n"); static ParVector<SMTopDecayer,double> interfaceQuarkWeights ("QuarkWeights", "Maximum weights for the hadronic decays", &SMTopDecayer::_wquarkwgt, 6, 1.0, 0.0, 10.0, false, false, Interface::limited); static ParVector<SMTopDecayer,double> interfaceLeptonWeights ("LeptonWeights", "Maximum weights for the semi-leptonic decays", &SMTopDecayer::_wleptonwgt, 3, 1.0, 0.0, 10.0, false, false, Interface::limited); static Parameter<SMTopDecayer,double> interfaceEnhancementFactor ("InitialEnhancementFactor", "The enhancement factor for initial-state radiation in the shower to ensure" " the weight for the matrix element correction is less than one.", &SMTopDecayer::_initialenhance, 1.0, 1.0, 10000.0, false, false, Interface::limited); static Parameter<SMTopDecayer,double> interfaceFinalEnhancementFactor ("FinalEnhancementFactor", "The enhancement factor for final-state radiation in the shower to ensure" " the weight for the matrix element correction is less than one", &SMTopDecayer::_finalenhance, 1.6, 1.0, 1000.0, false, false, Interface::limited); static Parameter<SMTopDecayer,double> interfaceSamplingTopHardMEC ("SamplingTopHardMEC", "The importance sampling power for choosing an initial xg, " "to sample xg according to xg^-_xg_sampling", &SMTopDecayer::_xg_sampling, 1.5, 1.2, 2.0, false, false, Interface::limited); static Switch<SMTopDecayer,bool> interfaceUseMEForT2 ("UseMEForT2", "Use the matrix element correction, if available to fill the T2" " region for the decay shower and don't fill using the shower", &SMTopDecayer::_useMEforT2, true, false, false); static SwitchOption interfaceUseMEForT2Shower (interfaceUseMEForT2, "Shower", "Use the shower to fill the T2 region", false); static SwitchOption interfaceUseMEForT2ME (interfaceUseMEForT2, "ME", "Use the Matrix element to fill the T2 region", true); static Reference<SMTopDecayer,ShowerAlpha> interfaceCoupling ("Coupling", "Pointer to the object to calculate the coupling for the correction", &SMTopDecayer::_alpha, false, false, true, false, false); } double SMTopDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // spinors etc for the decaying particle if(meopt==Initialize) { // spinors and rho if(inpart.id()>0) SpinorWaveFunction ::calculateWaveFunctions(_inHalf,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); else SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); ME(DecayMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(inpart.id()>0) { SpinorWaveFunction:: constructSpinInfo(_inHalf,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorBarWaveFunction::constructSpinInfo(_inHalfBar,decay[0],outgoing,true); SpinorWaveFunction ::constructSpinInfo(_outHalf ,decay[1],outgoing,true); SpinorBarWaveFunction::constructSpinInfo(_outHalfBar,decay[2],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(_inHalfBar,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorWaveFunction::constructSpinInfo(_inHalf,decay[0],outgoing,true); SpinorBarWaveFunction::constructSpinInfo(_outHalfBar,decay[1],outgoing,true); SpinorWaveFunction ::constructSpinInfo(_outHalf ,decay[2],outgoing,true); } } if ( ( decay[1]->momentum() + decay[2]->momentum() ).m() < decay[1]->data().constituentMass() + decay[2]->data().constituentMass() ) return 0.0; // spinors for the decay product if(inpart.id()>0) { SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar ,decay[0],outgoing); SpinorWaveFunction ::calculateWaveFunctions(_outHalf ,decay[1],outgoing); SpinorBarWaveFunction::calculateWaveFunctions(_outHalfBar,decay[2],outgoing); } else { SpinorWaveFunction ::calculateWaveFunctions(_inHalf ,decay[0],outgoing); SpinorBarWaveFunction::calculateWaveFunctions(_outHalfBar,decay[1],outgoing); SpinorWaveFunction ::calculateWaveFunctions(_outHalf ,decay[2],outgoing); } Energy2 scale(sqr(inpart.mass())); if(inpart.id() == ParticleID::t) { //Define intermediate vector wave-function for Wplus tcPDPtr Wplus(getParticleData(ParticleID::Wplus)); VectorWaveFunction inter; unsigned int thel,bhel,fhel,afhel; for(thel = 0;thel<2;++thel){ for(bhel = 0;bhel<2;++bhel){ inter = _wvertex->evaluate(scale,1,Wplus,_inHalf[thel], _inHalfBar[bhel]); for(afhel=0;afhel<2;++afhel){ for(fhel=0;fhel<2;++fhel){ ME()(thel,bhel,afhel,fhel) = _wvertex->evaluate(scale,_outHalf[afhel], _outHalfBar[fhel],inter); } } } } } else if(inpart.id() == ParticleID::tbar) { VectorWaveFunction inter; tcPDPtr Wminus(getParticleData(ParticleID::Wminus)); unsigned int tbhel,bbhel,afhel,fhel; for(tbhel = 0;tbhel<2;++tbhel){ for(bbhel = 0;bbhel<2;++bbhel){ inter = _wvertex-> evaluate(scale,1,Wminus,_inHalf[bbhel],_inHalfBar[tbhel]); for(afhel=0;afhel<2;++afhel){ for(fhel=0;fhel<2;++fhel){ ME()(tbhel,bbhel,fhel,afhel) = _wvertex->evaluate(scale,_outHalf[afhel], _outHalfBar[fhel],inter); } } } } } double output = (ME().contract(_rho)).real(); if(abs(decay[1]->id())<=6) output *=3.; return output; } void SMTopDecayer::doinit() { DecayIntegrator::doinit(); //get vertices from SM object tcHwSMPtr hwsm = dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if(!hwsm) throw InitException() << "Must have Herwig::StandardModel in " << "SMTopDecayer::doinit()"; _wvertex = hwsm->vertexFFW(); //initialise _wvertex->init(); //set up decay modes _wplus = getParticleData(ParticleID::Wplus); DecayPhaseSpaceModePtr mode; DecayPhaseSpaceChannelPtr Wchannel; tPDVector extpart(4); vector<double> wgt(1,1.0); extpart[0] = getParticleData(ParticleID::t); extpart[1] = getParticleData(ParticleID::b); //lepton modes for(int i=11; i<17;i+=2) { extpart[2] = getParticleData(-i); extpart[3] = getParticleData(i+1); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); Wchannel = new_ptr(DecayPhaseSpaceChannel(mode)); Wchannel->addIntermediate(extpart[0],0,0.0,-1,1); Wchannel->addIntermediate(_wplus,0,0.0,2,3); Wchannel->init(); mode->addChannel(Wchannel); addMode(mode,_wleptonwgt[(i-11)/2],wgt); } //quark modes unsigned int iz=0; for(int ix=1;ix<6;ix+=2) { for(int iy=2;iy<6;iy+=2) { // check that the combination of particles is allowed if(_wvertex->allowed(-ix,iy,ParticleID::Wminus)) { extpart[2] = getParticleData(-ix); extpart[3] = getParticleData( iy); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); Wchannel = new_ptr(DecayPhaseSpaceChannel(mode)); Wchannel->addIntermediate(extpart[0],0,0.0,-1,1); Wchannel->addIntermediate(_wplus,0,0.0,2,3); Wchannel->init(); mode->addChannel(Wchannel); addMode(mode,_wquarkwgt[iz],wgt); ++iz; } else { throw InitException() << "SMTopDecayer::doinit() the W vertex" << "cannot handle all the quark modes" << Exception::abortnow; } } } } void SMTopDecayer::dataBaseOutput(ofstream & os,bool header) const { if(header) os << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class for(unsigned int ix=0;ix<_wquarkwgt.size();++ix) { os << "newdef " << name() << ":QuarkWeights " << ix << " " << _wquarkwgt[ix] << "\n"; } for(unsigned int ix=0;ix<_wleptonwgt.size();++ix) { os << "newdef " << name() << ":LeptonWeights " << ix << " " << _wleptonwgt[ix] << "\n"; } DecayIntegrator::dataBaseOutput(os,false); if(header) os << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } void SMTopDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<numberModes();++ix) { if(ix<3) _wleptonwgt[ix ] = mode(ix)->maxWeight(); else _wquarkwgt [ix-3] = mode(ix)->maxWeight(); } } } WidthCalculatorBasePtr SMTopDecayer::threeBodyMEIntegrator(const DecayMode & dm) const { // identify W decay products int sign = dm.parent()->id() > 0 ? 1 : -1; int iferm(0),ianti(0); for(ParticleMSet::const_iterator pit=dm.products().begin(); pit!=dm.products().end();++pit) { int id = (**pit).id(); if(id*sign != ParticleID::b) { if (id*sign > 0 ) iferm = id*sign; else ianti = id*sign; } } assert(iferm!=0&&ianti!=0); // work out which mode we are doing int imode(-1); for(unsigned int ix=0;ix<numberModes();++ix) { if(mode(ix)->externalParticles(2)->id() == ianti && mode(ix)->externalParticles(3)->id() == iferm ) { imode = ix; break; } } assert(imode>=0); // get the masses we need Energy m[3] = {mode(imode)->externalParticles(1)->mass(), mode(imode)->externalParticles(3)->mass(), mode(imode)->externalParticles(2)->mass()}; return new_ptr(ThreeBodyAllOn1IntegralCalculator<SMTopDecayer> (3,_wplus->mass(),_wplus->width(),0.0,*this,imode,m[0],m[1],m[2])); } InvEnergy SMTopDecayer::threeBodydGammads(const int imode, const Energy2 mt2, const Energy2 mffb2, const Energy mb, const Energy mf, const Energy mfb) const { Energy mffb(sqrt(mffb2)); Energy mw(_wplus->mass()); Energy2 mw2(sqr(mw)),gw2(sqr(_wplus->width())); Energy mt(sqrt(mt2)); Energy Eb = 0.5*(mt2-mffb2-sqr(mb))/mffb; Energy Ef = 0.5*(mffb2-sqr(mfb)+sqr(mf))/mffb; Energy Ebm = sqrt(sqr(Eb)-sqr(mb)); Energy Efm = sqrt(sqr(Ef)-sqr(mf)); Energy2 upp = sqr(Eb+Ef)-sqr(Ebm-Efm); Energy2 low = sqr(Eb+Ef)-sqr(Ebm+Efm); InvEnergy width=(dGammaIntegrand(mffb2,upp,mt,mb,mf,mfb,mw)- dGammaIntegrand(mffb2,low,mt,mb,mf,mfb,mw)) /32./mt2/mt/8/pow(Constants::pi,3)/(sqr(mffb2-mw2)+mw2*gw2); // couplings width *= 0.25*sqr(4.*Constants::pi*generator()->standardModel()->alphaEM(mt2)/ generator()->standardModel()->sin2ThetaW()); width *= generator()->standardModel()->CKM(*mode(imode)->externalParticles(0), *mode(imode)->externalParticles(1)); if(abs(mode(imode)->externalParticles(2)->id())<=6) { width *=3.; if(abs(mode(imode)->externalParticles(2)->id())%2==0) width *=generator()->standardModel()->CKM(*mode(imode)->externalParticles(2), *mode(imode)->externalParticles(3)); else width *=generator()->standardModel()->CKM(*mode(imode)->externalParticles(3), *mode(imode)->externalParticles(2)); } // final spin average assert(!isnan(width*GeV)); return 0.5*width; } Energy6 SMTopDecayer::dGammaIntegrand(Energy2 mffb2, Energy2 mbf2, Energy mt, Energy mb, Energy mf, Energy mfb, Energy mw) const { Energy2 mt2(sqr(mt)) ,mb2(sqr(mb)) ,mf2(sqr(mf )),mfb2(sqr(mfb )),mw2(sqr(mw )); Energy4 mt4(sqr(mt2)),mb4(sqr(mb2)),mf4(sqr(mf2)),mfb4(sqr(mfb2)),mw4(sqr(mw2)); return -mbf2 * ( + 6 * mb2 * mf2 * mfb2 * mffb2 + 6 * mb2 * mt2 * mfb2 * mffb2 + 6 * mb2 * mt2 * mf2 * mffb2 + 12 * mb2 * mt2 * mf2 * mfb2 - 3 * mb2 * mfb4 * mffb2 + 3 * mb2 * mf2 * mffb2 * mffb2 - 3 * mb2 * mf4 * mffb2 - 6 * mb2 * mt2 * mfb4 - 6 * mb2 * mt2 * mf4 - 3 * mb4 * mfb2 * mffb2 - 3 * mb4 * mf2 * mffb2 - 6 * mb4 * mf2 * mfb2 + 3 * mt4 * mf4 + 3 * mb4 * mfb4 + 3 * mb4 * mf4 + 3 * mt4 * mfb4 + 3 * mb2 * mfb2 * mffb2 * mffb2 + 3 * mt2 * mfb2 * mffb2 * mffb2 - 3 * mt2 * mfb4 * mffb2 + 3 * mt2 * mf2 * mffb2 * mffb2 - 3 * mt2 * mf4 * mffb2 - 3 * mt4 * mfb2 * mffb2 - 3 * mt4 * mf2 * mffb2 - 6 * mt4 * mf2 * mfb2 + 6 * mt2 * mf2 * mfb2 * mffb2 + 12 * mt2 * mf2 * mw4 + 12 * mb2 * mfb2 * mw4 + 12 * mb2 * mt2 * mw4 + 6 * mw2 * mt2 * mfb2 * mbf2 - 12 * mw2 * mt2 * mf2 * mffb2 - 6 * mw2 * mt2 * mf2 * mbf2 - 12 * mw2 * mt2 * mf2 * mfb2 - 12 * mw2 * mb2 * mfb2 * mffb2 - 6 * mw2 * mb2 * mfb2 * mbf2 + 6 * mw2 * mb2 * mf2 * mbf2 - 12 * mw2 * mb2 * mf2 * mfb2 - 12 * mw2 * mb2 * mt2 * mfb2 - 12 * mw2 * mb2 * mt2 * mf2 + 12 * mf2 * mfb2 * mw4 + 4 * mbf2 * mbf2 * mw4 - 6 * mfb2 * mbf2 * mw4 - 6 * mf2 * mbf2 * mw4 - 6 * mt2 * mbf2 * mw4 - 6 * mb2 * mbf2 * mw4 + 12 * mw2 * mt2 * mf4 + 12 * mw2 * mt4 * mf2 + 12 * mw2 * mb2 * mfb4 + 12 * mw2 * mb4 * mfb2) /mw4 / 3.; } void SMTopDecayer::initializeMECorrection(ShowerTreePtr tree, double & initial, double & final) { // check the outgoing particles map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit; ShowerParticlePtr part[2]; unsigned int ix(0); for(cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { part[ix]=cit->first->progenitor(); ++ix; } // check the final-state particles and get the masses if(abs(part[0]->id())==ParticleID::Wplus&&abs(part[1]->id())==ParticleID::b) { _ma=part[0]->mass(); _mc=part[1]->mass(); } else if(abs(part[1]->id())==ParticleID::Wplus&&abs(part[0]->id())==ParticleID::b) { _ma=part[1]->mass(); _mc=part[0]->mass(); } else { return; } // set the top mass _mt=tree->incomingLines().begin()->first->progenitor()->mass(); // set the gluon mass _mg=getParticleData(ParticleID::g)->constituentMass(); // set the radiation enhancement factors initial = _initialenhance; final = _finalenhance; // reduced mass parameters _a=sqr(_ma/_mt); _g=sqr(_mg/_mt); _c=sqr(_mc/_mt); useMe(); } void SMTopDecayer::applyHardMatrixElementCorrection(ShowerTreePtr tree) { // Get b and a and put them in particle vector ba in that order... ParticleVector ba; map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit; for(cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) ba.push_back(cit->first->copy()); PPtr temp; if(abs(ba[0]->id())!=5) swap(ba[0],ba[1]); // Get the starting scales for the showers $\tilde{\kappa}_{b}$ // $\tilde{\kappa}_{c}$. These are needed in order to know the boundary // of the dead zone. double ktb(0.),ktc(0.); map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cjt; for(cjt = tree->incomingLines().begin(); cjt!= tree->incomingLines().end();++cjt) { if(abs(cjt->first->progenitor()->id())==6) ktb=sqr(cjt->first->progenitor()->evolutionScale()/_mt); } for(cit = tree->outgoingLines().begin(); cit!= tree->outgoingLines().end();++cit) { if(abs(cit->first->progenitor()->id())==5) ktc=sqr(cit->first->progenitor()->evolutionScale()/_mt); } if (ktb<=0.||ktc<=0.) { throw Exception() << "SMTopDecayer::applyHardMatrixElementCorrection()" << " did not set ktb,ktc" << Exception::abortnow; } _ktb = ktb; _ktc = ktc; // Now decide if we get an emission into the dead region. // If there is an emission newfs stores momenta for a,c,g // according to NLO decay matrix element. vector<Lorentz5Momentum> newfs = applyHard(ba,ktb,ktc); // If there was no gluon emitted return. if(newfs.size()!=3) return; // Sanity checks to ensure energy greater than mass etc :) bool check = true; tcPDPtr gluondata=getParticleData(ParticleID::g); if (newfs[0].e()<ba[0]->data().constituentMass()) check = false; if (newfs[1].e()<ba[1]->mass()) check = false; if (newfs[2].e()<gluondata->constituentMass()) check = false; // Return if insane: if (!check) return; // Set masses in 5-vectors: newfs[0].setMass(ba[0]->mass()); newfs[1].setMass(ba[1]->mass()); newfs[2].setMass(ZERO); // The next part of this routine sets the colour structure. // To do this for decays we assume that the gluon comes from c! // First create new particle objects for c, a and gluon: PPtr newg = gluondata->produceParticle(newfs[2]); PPtr newc,newa; newc = ba[0]->data().produceParticle(newfs[0]); newa = ba[1]; newa->set5Momentum(newfs[1]); // set the colour lines ColinePtr col; if(ba[0]->id()>0) { col=ba[0]->colourLine(); col->addColoured(newg); newg->colourNeighbour(newc); } else { col=ba[0]->antiColourLine(); col->addAntiColoured(newg); newg->antiColourNeighbour(newc); } // change the existing quark and antiquark PPtr orig; for(cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { if(cit->first->progenitor()->id()==newc->id()) { // remove old particles from colour line if(newc->id()>0) { col->removeColoured(cit->first->copy()); col->removeColoured(cit->first->progenitor()); } else { col->removeAntiColoured(cit->first->copy()); col->removeAntiColoured(cit->first->progenitor()); } // insert new particles cit->first->copy(newc); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newc,2,true))); cit->first->progenitor(sp); tree->outgoingLines()[cit->first]=sp; cit->first->perturbative(false); orig=cit->first->original(); } else { cit->first->copy(newa); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newa,2,true))); map<tShowerTreePtr,pair<tShowerProgenitorPtr, tShowerParticlePtr> >::const_iterator tit; for(tit = tree->treelinks().begin(); tit != tree->treelinks().end();++tit) { if(tit->second.first && tit->second.second==cit->first->progenitor()) break; } cit->first->progenitor(sp); if(tit!=tree->treelinks().end()) tree->updateLink(tit->first,make_pair(cit->first,sp)); tree->outgoingLines()[cit->first]=sp; cit->first->perturbative(true); } } // Add the gluon to the shower: ShowerParticlePtr sg =new_ptr(ShowerParticle(*newg,2,true)); ShowerProgenitorPtr gluon=new_ptr(ShowerProgenitor(orig,newg,sg)); gluon->perturbative(false); tree->outgoingLines().insert(make_pair(gluon,sg)); if(!inTheDeadRegion(_xg,_xa,_ktb,_ktc)) { generator()->log() << "SMTopDecayer::applyHardMatrixElementCorrection()\n" << "Just found a point that escaped from the dead region!\n" << " _xg: " << _xg << " _xa: " << _xa << " newfs.size(): " << newfs.size() << endl; } tree->hardMatrixElementCorrection(true); } vector<Lorentz5Momentum> SMTopDecayer:: applyHard(const ParticleVector &p,double ktb, double ktc) { // ********************************* // // First we see if we get a dead // // region event: _xa,_xg // // ********************************* // vector<Lorentz5Momentum> fs; // Return if there is no (NLO) gluon emission: double weight = getHard(ktb,ktc); if(weight>1.) { generator()->log() << "Weight greater than 1 for hard emission in " << "SMTopDecayer::applyHard xg = " << _xg << " xa = " << _xa << "\n"; weight=1.; } // Accept/Reject if (weight<UseRandom::rnd()||p.size()!= 2) return fs; // Drop events if getHard returned a negative weight // as in events that, somehow have escaped from the dead region // or, worse, the allowed region. if(weight<0.) return fs; // Calculate xc by momentum conservation: _xc = 2.-_xa-_xg; // ************************************ // // Now we get the boosts & rotations to // // go from lab to top rest frame with // // a in the +z direction. // // ************************************ // Lorentz5Momentum pa_lab,pb_lab,pc_lab,pg_lab; // Calculate momentum of b: pb_lab = p[0]->momentum() + p[1]->momentum(); // Define/assign momenta of c,a and the gluon: if(abs(p[0]->id())==5) { pc_lab = p[0]->momentum(); pa_lab = p[1]->momentum(); } else { pc_lab = p[1]->momentum(); pa_lab = p[0]->momentum(); } // Calculate the boost to the b rest frame: SpinOneLorentzRotation rot0(pb_lab.findBoostToCM()); // Calculate the rotation matrix to position a along the +z direction // in the rest frame of b and does a random rotation about z: SpinOneLorentzRotation rot1 = rotateToZ(rot0*pa_lab); // Calculate the boost from the b rest frame back to the lab: // and the inverse of the random rotation about the z-axis and the // rotation required to align a with +z: SpinOneLorentzRotation invrot = rot0.inverse()*rot1.inverse(); // ************************************ // // Now we construct the momenta in the // // b rest frame using _xa,_xg. // // First we construct b, then c and g, // // finally we generate a by momentum // // conservation. // // ************************************ // Lorentz5Momentum pa_brf, pb_brf(_mt), pc_brf, pg_brf; // First we set the top quark to being on-shell and at rest. // Second we set the energies of c and g, pc_brf.setE(0.5*_mt*(2.-_xa-_xg)); pg_brf.setE(0.5*_mt*_xg); // then their masses, pc_brf.setMass(_mc); pg_brf.setMass(ZERO); // Now set the z-component of c and g. For pg we simply start from // _xa and _xg, while for pc we assume it is equal to minus the sum // of the z-components of a (assumed to point in the +z direction) and g. double root=sqrt(_xa*_xa-4.*_a); pg_brf.setZ(_mt*(1.-_xa-_xg+0.5*_xa*_xg-_c+_a)/root); pc_brf.setZ(-1.*( pg_brf.z()+_mt*0.5*root)); // Now set the y-component of c and g's momenta pc_brf.setY(ZERO); pg_brf.setY(ZERO); // Now set the x-component of c and g's momenta pg_brf.setX(sqrt(sqr(pg_brf.t())-sqr(pg_brf.z()))); pc_brf.setX(-pg_brf.x()); // Momenta b,c,g are now set. Now we obtain a from momentum conservation, pa_brf = pb_brf-pc_brf-pg_brf; pa_brf.setMass(pa_brf.m()); pa_brf.rescaleEnergy(); // ************************************ // // Now we orient the momenta and boost // // them back to the original lab frame. // // ************************************ // // As in herwig6507 we assume that, in the rest frame // of b, we have aligned the W boson momentum in the // +Z direction by rot1*rot0*pa_lab, therefore // we obtain the new pa_lab by applying: // invrot*pa_brf. pa_lab = invrot*pa_brf; pb_lab = invrot*pb_brf; pc_lab = invrot*pc_brf; pg_lab = invrot*pg_brf; fs.push_back(pc_lab); fs.push_back(pa_lab); fs.push_back(pg_lab); return fs; } double SMTopDecayer::getHard(double ktb, double ktc) { // zero the variables _xg = 0.; _xa = 0.; _xc = 0.; // Get a phase space point in the dead region: double volume_factor = deadRegionxgxa(ktb,ktc); // if outside region return -1 if(volume_factor<0) return volume_factor; // Compute the weight for this phase space point: double weight = volume_factor*me(_xa,_xg)*(1.+_a-_c-_xa); // Alpha_S and colour factors - this hard wired Alpha_S needs removing. weight *= (4./3.)/Constants::pi *(_alpha->value(_mt*_mt*_xg*(1.-_xa+_a-_c) /(2.-_xg-_xa-_c))); return weight; } bool SMTopDecayer::softMatrixElementVeto(ShowerProgenitorPtr initial, ShowerParticlePtr parent,Branching br) { // check if we need to apply the full correction long id[2]={abs(initial->progenitor()->id()),abs(parent->id())}; // the initial-state correction if(id[0]==ParticleID::t&&id[1]==ParticleID::t) { Energy pt=br.kinematics->pT(); // check if hardest so far // if not just need to remove effect of enhancement bool veto(false); // if not hardest so far if(pt<initial->highestpT()) veto=!UseRandom::rndbool(1./_initialenhance); // if hardest so far do calculation else { // values of kappa and z double z(br.kinematics->z()),kappa(sqr(br.kinematics->scale()/_mt)); // parameters for the translation double w(1.-(1.-z)*(kappa-1.)),u(1.+_a-_c-(1.-z)*kappa),v(sqr(u)-4.*_a*w*z); // veto if outside phase space if(v<0.) veto=true; // otherwise calculate the weight else { v = sqrt(v); double xa((0.5*(u+v)/w+0.5*(u-v)/z)),xg((1.-z)*kappa); double f(me(xa,xg)), J(0.5*(u+v)/sqr(w)-0.5*(u-v)/sqr(z)+_a*sqr(w-z)/(v*w*z)); double wgt(f*J*2./kappa/(1.+sqr(z)-2.*z/kappa)/_initialenhance); // This next `if' prevents the hardest emission from the // top shower ever entering the so-called T2 region of the // phase space if that region is to be populated by the hard MEC. if(_useMEforT2&&xg>xgbcut(_ktb)) wgt = 0.; if(wgt>1.) { generator()->log() << "Violation of maximum for initial-state " << " soft veto in " << "SMTopDecayer::softMatrixElementVeto" << "xg = " << xg << " xa = " << xa << "weight = " << wgt << "\n"; wgt=1.; } // compute veto from weight veto = !UseRandom::rndbool(wgt); } // if not vetoed reset max if(!veto) initial->highestpT(pt); } // if vetoing reset the scale if(veto) parent->setEvolutionScale(br.kinematics->scale()); // return the veto return veto; } // final-state correction else if(id[0]==ParticleID::b&&id[1]==ParticleID::b) { Energy pt=br.kinematics->pT(); // check if hardest so far // if not just need to remove effect of enhancement bool veto(false); // if not hardest so far if(pt<initial->highestpT()) return !UseRandom::rndbool(1./_finalenhance); // if hardest so far do calculation // values of kappa and z double z(br.kinematics->z()),kappa(sqr(br.kinematics->scale()/_mt)); // momentum fractions double xa(1.+_a-_c-z*(1.-z)*kappa),r(0.5*(1.+_c/(1.+_a-xa))),root(sqr(xa)-4.*_a); if(root<0.) { generator()->log() << "Imaginary root for final-state veto in " << "SMTopDecayer::softMatrixElementVeto" << "\nz = " << z << "\nkappa = " << kappa << "\nxa = " << xa << "\nroot^2= " << root; parent->setEvolutionScale(br.kinematics->scale()); return true; } root=sqrt(root); double xg((2.-xa)*(1.-r)-(z-r)*root); // xfact (below) is supposed to equal xg/(1-z). double xfact(z*kappa/2./(z*(1.-z)*kappa+_c)*(2.-xa-root)+root); // calculate the full result double f(me(xa,xg)); // jacobian double J(z*root); double wgt(f*J*2.*kappa/(1.+sqr(z)-2.*_c/kappa/z)/sqr(xfact)/_finalenhance); if(wgt>1.) { generator()->log() << "Violation of maximum for final-state soft veto in " << "SMTopDecayer::softMatrixElementVeto" << "xg = " << xg << " xa = " << xa << "weight = " << wgt << "\n"; wgt=1.; } // compute veto from weight veto = !UseRandom::rndbool(wgt); // if not vetoed reset max if(!veto) initial->highestpT(pt); // if vetoing reset the scale if(veto) parent->setEvolutionScale(br.kinematics->scale()); // return the veto return veto; } // otherwise don't veto else return !UseRandom::rndbool(1./_finalenhance); } double SMTopDecayer::me(double xw,double xg) { double prop(1.+_a-_c-xw),xg2(sqr(xg)); double lambda=sqrt(1.+_a*_a+_c*_c-2.*_a-2.*_c-2.*_a*_c); double denom=(1.-2*_a*_a+_a+_c*_a+_c*_c-2.*_c); double wgt=-_c*xg2/prop+(1.-_a+_c)*xg-(prop*(1 - xg)+xg2) +(0.5*(1.+2.*_a+_c)*sqr(prop-xg)*xg+2.*_a*prop*xg2)/denom; return wgt/(lambda*prop); } // This function is auxiliary to the xab function. double SMTopDecayer::xgbr(int toggle) { return 1.+toggle*sqrt(_a)-_c*(1.-toggle*sqrt(_a))/(1.-_a); } // This function is auxiliary to the xab function. double SMTopDecayer::ktr(double xgb, int toggle) { return 2.*xgb/ (xgb+toggle*sqrt((1.-1./_a) *(xgb-xgbr( 1)) *(xgb-xgbr(-1)))); } // Function xab determines xa (2*W energy fraction) for a given value // of xg (2*gluon energy fraction) and kappa tilde (q tilde squared over // m_top squared). Hence this function allows you to draw 1: the total // phase space volume in the xa vs xg plane 2: for a given value of // kappa tilde (i.e. starting evolution scale) the associated contour // in the xa vs xg plane (and hence the regions that either shower can // populate). This calculation is done assuming the emission came from // the top quark i.e. kappa tilde here is the q tilde squared of the TOP // quark divided by m_top squared. double SMTopDecayer::xab(double xgb, double kt, int toggle) { double xab; if(toggle==2) { // This applies for g==0.&&kt==ktr(a,c,0.,xgb,1). xab = -2.*_a*(xgb-2.)/(1.+_a-_c-xgb); } else if(toggle==1) { // This applies for kt==1&&g==0. double lambda = sqrt(sqr(xgb-1.+_a+_c)-4.*_a*_c); xab = (0.5/(kt-xgb))*(kt*(1.+_a-_c-xgb)-lambda) + (0.5/(kt+xgb*(1.-kt)))*(kt*(1.+_a-_c-xgb)+lambda); } else { // This is the form of xab FOR _g=0. double ktmktrpktmktrm = kt*kt - 4.*_a*(kt-1.)*xgb*xgb / (sqr(1.-_a-_c-xgb)-4.*_a*_c); if(fabs(kt-(2.*xgb-2.*_g)/(xgb-sqrt(xgb*xgb-4.*_g)))/kt>1.e-6) { double lambda = sqrt((sqr(1.-_a-_c-xgb)-4.*_a*_c)*ktmktrpktmktrm); xab = (0.5/(kt-xgb))*(kt*(1.+_a-_c-xgb)-lambda) + (0.5/(kt+xgb*(1.-kt)))*(kt*(1.+_a-_c-xgb)+lambda); } else { // This is the value of xa as a function of xb when kt->infinity. // Where we take any kt > (2.*xgb-2.*_g)/(xgb-sqrt(xgb*xgb-4.*_g)) // as being effectively infinite. This kt value is actually the // maximum allowed value kt can have if the phase space is calculated // without the approximation of _g=0 (massless gluon). This formula // for xab below is then valid for _g=0 AND kt=infinity only. xab = ( 2.*_c+_a*(xgb-2.) + 3.*xgb - xgb*(_c+xgb+sqrt(_a*_a-2.*(_c-xgb+1.)*_a+sqr(_c+xgb-1.))) - 2. )/2./(xgb-1.); } } if(isnan(xab)) { double ktmktrpktmktrm = ( sqr(xgb*kt-2.*(xgb-_g)) -kt*kt*(1.-1./_a)*(xgb-xgbr( 1)-_g/(1.+sqrt(_a))) *(xgb-xgbr(-1)-_g/(1.-sqrt(_a))) )/ (xgb*xgb-(1.-1./_a)*(xgb-xgbr( 1)-_g/(1.+sqrt(_a))) *(xgb-xgbr(-1)-_g/(1.-sqrt(_a))) ); double lambda = sqrt((xgb-1.+sqr(sqrt(_a)+sqrt(_c-_g))) *(xgb-1.+sqr(sqrt(_a)-sqrt(_c-_g)))* ktmktrpktmktrm); xab = (0.5/(kt-xgb+_g))*(kt*(1.+_a-_c+_g-xgb)-lambda) + (0.5/(kt+xgb*(1.-kt)-_g))*(kt*(1.+_a-_c+_g-xgb)+lambda); if(isnan(xab)) throw Exception() << "TopMECorrection::xab complex x_a value.\n" << " xgb = " << xgb << "\n" << " xab = " << xab << "\n" << " toggle = " << toggle << "\n" << " ktmktrpktmktrm = " << ktmktrpktmktrm << Exception::eventerror; } return xab; } // xgbcut is the point along the xg axis where the upper bound on the // top quark (i.e. b) emission phase space goes back on itself in the // xa vs xg plane i.e. roughly mid-way along the xg axis in // the xa vs xg Dalitz plot. double SMTopDecayer::xgbcut(double kt) { double lambda2 = 1.+_a*_a+_c*_c-2.*_a-2.*_c-2.*_a*_c; double num1 = kt*kt*(1.-_a-_c); double num2 = 2.*kt*sqrt(_a*(kt*kt*_c+lambda2*(kt-1.))); return (num1-num2)/(kt*kt-4.*_a*(kt-1.)); } double SMTopDecayer::xaccut(double kt) { return 1.+_a-_c-0.25*kt; } double SMTopDecayer::z(double xac, double kt, int toggle1, int toggle2) { double z = -1.0; if(toggle2==0) { z = (kt+toggle1*sqrt(kt*(kt-4.*(1.+_a-_c-xac))))/(2.*kt); } else if(toggle2==1) { z = ((1.+_a+_c-xac)+toggle1*(1.+_a-_c-xac)) /(2.*(1.+_a-xac)); } else if(toggle2==2) { z = 0.5; } else { throw Exception() << "Cannot determine z in SMTopDecayer::z()" << Exception::eventerror; } return z; } double SMTopDecayer::xgc(double xac, double kt, int toggle1, int toggle2) { double tiny(1.e-6); double xaToMinBoundary(xac*xac-4.*_a); if(xaToMinBoundary<0) { if(fabs(xaToMinBoundary/(1.-_a)/(1.-_a))<tiny) xaToMinBoundary *= -1.; else throw Exception() << "SMTopDecayer::xgc xa not in phase space!" << Exception::eventerror; } return (2.-xac)*(1.-0.5*(1.+_c/(1.+_a-xac))) -(z(xac,kt,toggle1,toggle2)-0.5*(1.+_c/(1.+_a-xac))) *sqrt(xaToMinBoundary); } double SMTopDecayer::xginvc0(double xg , double kt) { // The function xg(kappa_tilde_c,xa) surely, enough, draws a // line of constant kappa_tilde_c in the xg, xa Dalitz plot. // Such a function can therefore draw the upper and lower // edges of the phase space for emission from c (the b-quark). // However, to sample the soft part of the dead zone effectively // we want to generate a value of xg first and THEN distribute // xa in the associated allowed part of the dead zone. Hence, the // function we want, to define the dead zone in xa for a given // xg, is the inverse of xg(kappa_tilde_c,xa). The full expression // for xg(kappa_tilde_c,xa) is complicated and, sure enough, // does not invert. Therefore we try to overestimate the size // of the dead zone initially, rejecting events which do not // fall exactly inside it afterwards, with the immediate aim // of getting an approximate version of xg(kappa_tilde_c,xa) // that can be inverted. We do this by simply setting c=0 i.e. // the b-quark mass to zero (and the gluon mass of course), in // the full expression xg(...). The result of inverting this // function is the output of this routine (a value of xa) hence // the name xginvc0. xginvc0 is calculated to be, // xginvc0 = (1./3.)*(1.+a+pow((U+sqrt(4.*V*V*V+U*U))/2.,1./3.) // -V*pow(2./(U+sqrt(4.*V*V*V+U*U)),1./3.) // ) // U = 2.*a*a*a - 66.*a*a + 9.*a*kt*xg + 18.*a*kt // - 66.*a + 27.*kt*xg*xg - 45.*kt*xg +18.*kt +2. ; // V = -1.-a*a-14.*a-3.kt*xg+3.*kt; // This function, as with many functions in this ME correction, // is plagued by cuts that have to handled carefully in numerical // implementation. We have analysed the cuts and hence we implement // it in the following way, with a series of 'if' statements. // // A useful -definition- to know in deriving the v<0 terms is // that tanh^-1(z) = 0.5*(log(1.+z)-log(1.-z)). double u,v,output; u = 2.*_a*_a*_a-66.*_a*_a +9.*xg*kt*_a+18.*kt*_a -66.*_a+27.*xg*xg*kt -45.*xg*kt+18.*kt+2.; v = -_a*_a-14.*_a-3.*xg*kt+3.*kt-1.; double u2=u*u,v3=v*v*v; if(v<0.) { if(u>0.&&(4.*v3+u2)<0.) output = cos( atan(sqrt(-4.*v3-u2)/u)/3.); else if(u>0.&&(4.*v3+u2)>0.) output = cosh(atanh(sqrt( 4.*v3+u2)/u)/3.); else output = cos(( atan(sqrt(-4.*v3-u2)/u) +Constants::pi)/3.); output *= 2.*sqrt(-v); } else { output = sinh(log((u+sqrt(4.*v3+u2))/(2.*sqrt(v3)))/3.); output *= 2.*sqrt(v); } if(isnan(output)||isinf(output)) { throw Exception() << "TopMECorrection::xginvc0:\n" << "possible numerical instability detected.\n" << "\n v = " << v << " u = " << u << "\n4.*v3+u2 = " << 4.*v3+u2 << "\n_a = " << _a << " ma = " << sqrt(_a*_mt*_mt/GeV2) << "\n_c = " << _c << " mc = " << sqrt(_c*_mt*_mt/GeV2) << "\n_g = " << _g << " mg = " << sqrt(_g*_mt*_mt/GeV2) << Exception::eventerror; } return ( 1.+_a +output)/3.; } double SMTopDecayer::approxDeadMaxxa(double xg,double ktb,double ktc) { double maxxa(0.); double x = min(xginvc0(xg,ktc), xab(xg,(2.*xg-2.*_g)/(xg-sqrt(xg*xg-4.*_g)),0)); double y(-9999999999.); if(xg>2.*sqrt(_g)&&xg<=xgbcut(ktb)) { y = max(xab(xg,ktb,0),xab(xg,1.,1)); } else if(xg>=xgbcut(ktb)&&xg<=1.-sqr(sqrt(_a)+sqrt(_c))) { y = max(xab(xg,ktr(xg,1),2),xab(xg,1.,1)); } if(xg>2.*sqrt(_g)&&xg<=1.-sqr(sqrt(_a)+sqrt(_c))) { if(x>=y) { maxxa = x ; } else { maxxa = -9999999.; } } else { maxxa = -9999999.; } return maxxa; } double SMTopDecayer::approxDeadMinxa(double xg,double ktb,double ktc) { double minxa(0.); double x = min(xginvc0(xg,ktc), xab(xg,(2.*xg-2.*_g)/(xg-sqrt(xg*xg-4.*_g)),0)); double y(-9999999999.); if(xg>2.*sqrt(_g)&&xg<=xgbcut(ktb)) { y = max(xab(xg,ktb,0),xab(xg,1.,1)); } else if(xg>=xgbcut(ktb)&&xg<=1.-sqr(sqrt(_a)+sqrt(_c))) { if(_useMEforT2) y = xab(xg,1.,1); else y = max(xab(xg,ktr(xg,1),2),xab(xg,1.,1)); } if(xg>2.*sqrt(_g)&&xg<=1.-sqr(sqrt(_a)+sqrt(_c))) { if(x>=y) { minxa = y ; } else { minxa = 9999999.; } } else { minxa = 9999999.; } return minxa; } // This function returns true if the phase space point (xg,xa) is in the // kinematically allowed phase space. bool SMTopDecayer::inTheAllowedRegion(double xg , double xa) { bool output(true); if(xg<2.*sqrt(_g)||xg>1.-sqr(sqrt(_a)+sqrt(_c))) output = false; if(xa<xab(xg,1.,1)) output = false; if(xa>xab(xg,(2.*xg-2.*_g)/(xg-sqrt(xg*xg-4.*_g)),0)) output = false; return output; } // This function returns true if the phase space point (xg,xa) is in the // approximate (overestimated) dead region. bool SMTopDecayer::inTheApproxDeadRegion(double xg , double xa, double ktb, double ktc) { bool output(true); if(!inTheAllowedRegion(xg,xa)) output = false; if(xa<approxDeadMinxa(xg,ktb,ktc)) output = false; if(xa>approxDeadMaxxa(xg,ktb,ktc)) output = false; return output; } // This function returns true if the phase space point (xg,xa) is in the // dead region. bool SMTopDecayer::inTheDeadRegion(double xg , double xa, double ktb, double ktc) { bool output(true); if(!inTheApproxDeadRegion(xg,xa,ktb,ktc)) output = false; if(xa>xaccut(ktc)) { if(xg<xgc(max(xaccut(ktc),2.*sqrt(_a)),ktc, 1,2)&& xg>xgc(xa,ktc, 1,0)) { output = false; } if(xg>xgc(max(xaccut(ktc),2.*sqrt(_a)),ktc,-1,2)&& xg<xgc(xa,ktc,-1,0)) { output = false; } } return output; } // This function attempts to generate a phase space point in the dead // region and returns the associated phase space volume factor needed for // the associated event weight. double SMTopDecayer::deadRegionxgxa(double ktb,double ktc) { _xg=0.; _xa=0.; // Here we set limits on xg and generate a value inside the bounds. double xgmin(2.*sqrt(_g)),xgmax(1.-sqr(sqrt(_a)+sqrt(_c))); // Generate _xg. if(_xg_sampling==2.) { _xg=xgmin*xgmax/(xgmin+UseRandom::rnd()*(xgmax-xgmin)); } else { _xg=xgmin*xgmax/pow(( pow(xgmin,_xg_sampling-1.) + UseRandom::rnd()*(pow(xgmax,_xg_sampling-1.) -pow(xgmin,_xg_sampling-1.)) ),1./(_xg_sampling-1.)); } // Here we set the bounds on _xa for given _xg. if(_xg<xgmin||xgmin>xgmax) throw Exception() << "TopMECorrection::deadRegionxgxa:\n" << "upper xg bound is less than the lower xg bound.\n" << "\n_xg = " << _xg << "\n2.*sqrt(_g) = " << 2.*sqrt(_g) << "\n_a = " << _a << " ma = " << sqrt(_a*_mt*_mt/GeV2) << "\n_c = " << _c << " mc = " << sqrt(_c*_mt*_mt/GeV2) << "\n_g = " << _g << " mg = " << sqrt(_g*_mt*_mt/GeV2) << Exception::eventerror; double xamin(approxDeadMinxa(_xg,ktb,ktc)); double xamax(approxDeadMaxxa(_xg,ktb,ktc)); // Are the bounds sensible? If not return. if(xamax<=xamin) return -1.; _xa=1.+_a-(1.+_a-xamax)*pow((1.+_a-xamin)/(1.+_a-xamax),UseRandom::rnd()); // If outside the allowed region return -1. if(!inTheDeadRegion(_xg,_xa,ktb,ktc)) return -1.; // The integration volume for the weight double xg_vol,xa_vol; if(_xg_sampling==2.) { xg_vol = (xgmax-xgmin) / (xgmax*xgmin); } else { xg_vol = (pow(xgmax,_xg_sampling-1.)-pow(xgmin,_xg_sampling-1.)) / ((_xg_sampling-1.)*pow(xgmax*xgmin,_xg_sampling-1.)); } xa_vol = log((1.+_a-xamin)/(1.+_a-xamax)); // Here we return the integral volume factor multiplied by the part of the // weight left over which is not included in the BRACES function, i.e. // the part of _xg^-2 which is not absorbed in the integration measure. return xg_vol*xa_vol*pow(_xg,_xg_sampling-2.); } LorentzRotation SMTopDecayer::rotateToZ(Lorentz5Momentum v) { // compute the rotation matrix LorentzRotation trans; // rotate so in z-y plane trans.rotateZ(-atan2(v.y(),v.x())); // rotate so along Z trans.rotateY(-acos(v.z()/v.vect().mag())); // generate random rotation double c,s,cs; do { c = 2.*UseRandom::rnd()-1.; s = 2.*UseRandom::rnd()-1.; cs = c*c+s*s; } while(cs>1.||cs==0.); double cost=(c*c-s*s)/cs,sint=2.*c*s/cs; // apply random azimuthal rotation trans.rotateZ(atan2(sint,cost)); return trans; } ����������herwig++-2.6.0.orig/Decay/Perturbative/SMHiggsGGHiggsPPDecayer.cc�����������������������������������0000644�0001750�0001750�00000013074�11754474773�025251� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SMHiggsGGHiggsPPDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMHiggsGGHiggsPPDecayer class. // #include "SMHiggsGGHiggsPPDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/PDT/DecayMode.h" using namespace Herwig; using namespace ThePEG::Helicity; bool SMHiggsGGHiggsPPDecayer::accept(tcPDPtr parent, const tPDVector & children) const { int idp = parent->id(); int id0 = children[0]->id(); int id1 = children[1]->id(); if((idp == ParticleID::h0 && id0 == ParticleID::g && id1 == ParticleID::g) || (idp == ParticleID::h0 && id0 == ParticleID::gamma && id1 == ParticleID::gamma)) return true; else return false; } ParticleVector SMHiggsGGHiggsPPDecayer::decay(const Particle & parent, const tPDVector & children) const { int imode(0); if(children[0]->id() == ParticleID::gamma && children[1]->id() == ParticleID::gamma) {imode = 1;} ParticleVector out(generate(true,false,imode,parent)); //colour flow if(children[0]->id() == ParticleID::g && children[1]->id() == ParticleID::g) { out[0]->colourNeighbour(out[1]); out[0]->antiColourNeighbour(out[1]); } return out; } void SMHiggsGGHiggsPPDecayer::persistentOutput(PersistentOStream & os) const { os << _hggvertex << _hppvertex << _h0wgt; } void SMHiggsGGHiggsPPDecayer::persistentInput(PersistentIStream & is, int) { is >> _hggvertex >> _hppvertex >> _h0wgt; } ClassDescription<SMHiggsGGHiggsPPDecayer> SMHiggsGGHiggsPPDecayer::initSMHiggsGGHiggsPPDecayer; void SMHiggsGGHiggsPPDecayer::Init() { static ClassDocumentation<SMHiggsGGHiggsPPDecayer> documentation ("This is an implentation of h0->gg or h0->gamma,gamma " "decayer using the SMHGGVertex."); static Reference<SMHiggsGGHiggsPPDecayer,SMHGGVertex> interfaceSMHGGVertex ("SMHGGVertex", "Pointer to SMHGGVertex", &SMHiggsGGHiggsPPDecayer::_hggvertex, false, false, true, false, false); static Reference<SMHiggsGGHiggsPPDecayer,SMHPPVertex> interfaceSMHPPVertex ("SMHPPVertex", "Pointer to SMHPPVertex", &SMHiggsGGHiggsPPDecayer::_hppvertex, false, false, true, false, false); } double SMHiggsGGHiggsPPDecayer::me2(const int, const Particle & part, const ParticleVector & decay, MEOption meopt) const { if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&part),incoming); _swave = ScalarWaveFunction(part.momentum(),part.dataPtr(),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin1,PDT::Spin1)); } if(meopt==Terminate) { ScalarWaveFunction::constructSpinInfo(const_ptr_cast<tPPtr>(&part), incoming,true); for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction::constructSpinInfo(_vwave[ix],decay[ix], outgoing,true,true); return 0.; } for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction:: calculateWaveFunctions(_vwave[ix],decay[ix],outgoing,true); //Set up decay matrix Energy2 scale(sqr(part.mass())); unsigned int v1hel,v2hel; for(v1hel = 0;v1hel < 3;v1hel+=2) { for(v2hel = 0;v2hel < 3;v2hel+=2) { if(decay[0]->id() == ParticleID::g && decay[1]->id() == ParticleID::g) { ME()(0,v1hel,v2hel) = _hggvertex->evaluate(scale,_vwave[0][v1hel], _vwave[1][v2hel],_swave); } else { ME()(0,v1hel,v2hel) = _hppvertex->evaluate(scale,_vwave[0][v1hel], _vwave[1][v2hel],_swave); } } } //store matrix element double output = ME().contract(_rho).real()*UnitRemoval::E2/scale; //colour factor (N^2 - 1)/4 if(decay[0]->id() == ParticleID::g && decay[1]->id() == ParticleID::g) { output *= 8.; } //symmetric final states output /= 2.; return output; } void SMHiggsGGHiggsPPDecayer::doinit() { DecayIntegrator::doinit(); // get the width generator for the higgs tPDPtr higgs = getParticleData(ParticleID::h0); if(_hggvertex) { _hggvertex->init(); } else { throw InitException() << "SMHiggsGGHiggsPPDecayer::doinit() - " << "_hggvertex is null"; } if(_hppvertex) { _hppvertex->init(); } else { throw InitException() << "SMHiggsGGHiggsPPDecayer::doinit() - " << "_hppvertex is null"; } //set up decay modes DecayPhaseSpaceModePtr mode; tPDVector extpart(3); vector<double> wgt(0); //glu,glu mode extpart[0] = getParticleData(ParticleID::h0); extpart[1] = getParticleData(ParticleID::g); extpart[2] = getParticleData(ParticleID::g); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); addMode(mode,_h0wgt[0],wgt); //gamma,gamma mode extpart[1] = getParticleData(ParticleID::gamma); extpart[2] = getParticleData(ParticleID::gamma); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); addMode(mode,_h0wgt[1],wgt); } void SMHiggsGGHiggsPPDecayer::doinitrun() { _hggvertex->initrun(); _hppvertex->initrun(); DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<numberModes();++ix) { _h0wgt[ix] = mode(ix)->maxWeight(); } } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/SMHiggsFermionsPOWHEGDecayer.cc������������������������������0000644�0001750�0001750�00000047236�11754474773�026235� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������//-*- // // This is the implementation of the non-inlined, non-templated member // functions of the SMHiggsFermionsPOWHEGDecayer class. // #include "SMHiggsFermionsPOWHEGDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; SMHiggsFermionsPOWHEGDecayer::SMHiggsFermionsPOWHEGDecayer() : CF_(4./3.), pTmin_(1.*GeV) {} IBPtr SMHiggsFermionsPOWHEGDecayer::clone() const { return new_ptr(*this); } IBPtr SMHiggsFermionsPOWHEGDecayer::fullclone() const { return new_ptr(*this); } void SMHiggsFermionsPOWHEGDecayer::persistentOutput(PersistentOStream & os) const { os << alphaS_ << gluon_ << ounit( pTmin_, GeV ); } void SMHiggsFermionsPOWHEGDecayer::persistentInput(PersistentIStream & is, int) { is >> alphaS_ >> gluon_ >> iunit( pTmin_, GeV ); } ClassDescription<SMHiggsFermionsPOWHEGDecayer> SMHiggsFermionsPOWHEGDecayer::initSMHiggsFermionsPOWHEGDecayer; // Definition of the static class description member. void SMHiggsFermionsPOWHEGDecayer::Init() { static ClassDocumentation<SMHiggsFermionsPOWHEGDecayer> documentation ("There is no documentation for the SMHiggsFermionsPOWHEGDecayer class"); static Reference<SMHiggsFermionsPOWHEGDecayer,ShowerAlpha> interfaceCoupling ("Coupling", "The object calculating the strong coupling constant", &SMHiggsFermionsPOWHEGDecayer::alphaS_, false, false, true, false, false); static Parameter<SMHiggsFermionsPOWHEGDecayer, Energy> interfacePtMin ("minpT", "The pt cut on hardest emision generation", &SMHiggsFermionsPOWHEGDecayer::pTmin_, GeV, 1.*GeV, 0*GeV, 100000.0*GeV, false, false, Interface::limited); } HardTreePtr SMHiggsFermionsPOWHEGDecayer:: generateHardest(ShowerTreePtr tree) { // Get the progenitors: Q and Qbar. ShowerProgenitorPtr QProgenitor = tree->outgoingLines().begin()->first, QbarProgenitor = tree->outgoingLines().rbegin()->first; if(QProgenitor->id()<0) swap( QProgenitor, QbarProgenitor ); partons_.resize(2); partons_[0] = QProgenitor->progenitor() ->dataPtr(); partons_[1] = QbarProgenitor->progenitor()->dataPtr(); if(!partons_[0]->coloured()) return HardTreePtr(); // momentum of the partons quark_.resize(2); quark_[0] = QProgenitor ->copy()->momentum(); quark_[1] = QbarProgenitor->copy()->momentum(); // Set the existing mass entries in partons 5 vectors with the // once and for all. quark_[0].setMass(partons_[0]->mass()); quark_[1].setMass(partons_[1]->mass()); gauge_.setMass(0.*MeV); // Get the Higgs boson. higgs_ = tree->incomingLines().begin()->first->copy(); // Get the Higgs boson mass. mh2_ = (quark_[0] + quark_[1]).m2(); // Generate emission and set _quark[0,1] and _gauge to be the // momenta of q, qbar and g after the hardest emission: if(!getEvent()) { QProgenitor ->maximumpT(pTmin_); QbarProgenitor->maximumpT(pTmin_); return HardTreePtr(); } // Ensure the energies are greater than the constituent masses: for (int i=0; i<2; i++) { if (quark_[i].e() < partons_[i]->constituentMass()) return HardTreePtr(); if (gauge_.e() < gluon_ ->constituentMass()) return HardTreePtr(); } // set masses quark_[0].setMass( partons_[0]->mass() ); quark_[1].setMass( partons_[1]->mass() ); gauge_ .setMass( ZERO ); // assign the emitter based on evolution scales unsigned int iemitter = quark_[0]*gauge_ > quark_[1]*gauge_ ? 1 : 0; unsigned int ispectator = iemitter==1 ? 0 : 1; // Make the particles for the HardTree: ShowerParticlePtr emitter (new_ptr(ShowerParticle(partons_[iemitter ],true))); ShowerParticlePtr spectator(new_ptr(ShowerParticle(partons_[ispectator],true))); ShowerParticlePtr gauge (new_ptr(ShowerParticle(gluon_,true))); ShowerParticlePtr hboson (new_ptr(ShowerParticle(higgs_->dataPtr(),false))); ShowerParticlePtr parent (new_ptr(ShowerParticle(partons_[iemitter ],true))); emitter ->set5Momentum(quark_[iemitter ]); spectator->set5Momentum(quark_[ispectator]); gauge ->set5Momentum(gauge_); hboson->set5Momentum(higgs_->momentum()); Lorentz5Momentum parentMomentum(quark_[iemitter]+gauge_); parentMomentum.rescaleMass(); parent->set5Momentum(parentMomentum); // Create the vectors of HardBranchings to create the HardTree: vector<HardBranchingPtr> spaceBranchings,allBranchings; // Incoming boson: spaceBranchings.push_back(new_ptr(HardBranching(hboson,SudakovPtr(), HardBranchingPtr(), HardBranching::Incoming))); // Outgoing particles from hard emission: HardBranchingPtr spectatorBranch(new_ptr(HardBranching(spectator,SudakovPtr(), HardBranchingPtr(), HardBranching::Outgoing))); HardBranchingPtr emitterBranch(new_ptr(HardBranching(parent,SudakovPtr(), HardBranchingPtr(), HardBranching::Outgoing))); emitterBranch->addChild(new_ptr(HardBranching(emitter,SudakovPtr(), HardBranchingPtr(), HardBranching::Outgoing))); emitterBranch->addChild(new_ptr(HardBranching(gauge,SudakovPtr(), HardBranchingPtr(), HardBranching::Outgoing))); allBranchings.push_back(emitterBranch); allBranchings.push_back(spectatorBranch); if(iemitter==1) swap(allBranchings[0],allBranchings[1]); // Add incoming boson to allBranchings allBranchings.push_back( spaceBranchings.back() ); // Make the HardTree from the HardBranching vectors. HardTreePtr hardtree = new_ptr(HardTree(allBranchings,spaceBranchings, ShowerInteraction::QCD)); // Set the maximum pt for all other emissions Energy ptveto(pT_); QProgenitor ->maximumpT(ptveto); QbarProgenitor->maximumpT(ptveto); // Connect the particles with the branchings in the HardTree hardtree->connect( QProgenitor->progenitor(), allBranchings[0] ); hardtree->connect( QbarProgenitor->progenitor(), allBranchings[1] ); // colour flow ColinePtr newline=new_ptr(ColourLine()); for(set<HardBranchingPtr>::const_iterator cit=hardtree->branchings().begin(); cit!=hardtree->branchings().end();++cit) { if((**cit).branchingParticle()->dataPtr()->iColour()==PDT::Colour3) newline->addColoured((**cit).branchingParticle()); else if((**cit).branchingParticle()->dataPtr()->iColour()==PDT::Colour3bar) newline->addAntiColoured((**cit).branchingParticle()); } // return the tree return hardtree; } double SMHiggsFermionsPOWHEGDecayer:: me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const { // leading-order result double output = SMHiggsFermionsDecayer::me2(ichan,part,decay,meopt); // check decay products coloured, otherwise return if(!decay[0]->dataPtr()->coloured()) return output; //inital masses, couplings etc // fermion mass Energy particleMass = decay[0]->dataPtr()->mass(); // higgs mass mHiggs_ = part.mass(); // strong coupling aS_ = SM().alphaS(sqr(mHiggs_)); // reduced mass mu_ = particleMass/mHiggs_; mu2_ = sqr(mu_); // generate y double yminus = 0.; double yplus = 1.-2.*mu_*(1.-mu_)/(1.-2*mu2_); double y = yminus + UseRandom::rnd()*(yplus-yminus); //generate z for D31,2 double v = sqrt(sqr(2.*mu2_+(1.-2.*mu2_)*(1.-y))-4.*mu2_)/(1.-2.*mu2_)/(1.-y); double zplus = (1.+v)*(1.-2.*mu2_)*y/2./(mu2_ +(1.-2.*mu2_)*y); double zminus = (1.-v)*(1.-2.*mu2_)*y/2./(mu2_ +(1.-2.*mu2_)*y); double z = zminus + UseRandom::rnd()*(zplus-zminus); // map y,z to x1,x2 for both possible emissions double x2 = 1. - y*(1.-2.*mu2_); double x1 = 1. - z*(x2-2.*mu2_); //get the dipoles InvEnergy2 D1 = dipoleSubtractionTerm( x1, x2); InvEnergy2 D2 = dipoleSubtractionTerm( x2, x1); InvEnergy2 dipoleSum = abs(D1) + abs(D2); //jacobian double jac = (1.-y)*(yplus-yminus)*(zplus-zminus); //calculate real Energy2 realPrefactor = 0.25*sqr(mHiggs_)*sqr(1.-2.*mu2_) /sqrt(calculateLambda(1,mu2_,mu2_))/sqr(Constants::twopi); InvEnergy2 realEmission = calculateRealEmission( x1, x2); // calculate the virtual double virtualTerm = calculateVirtualTerm(); // running mass correction virtualTerm += (8./3. - 2.*log(mu2_))*aS_/Constants::pi; //answer = (born + virtual + real)/born * LO output *= 1. + virtualTerm + 2.*jac*realPrefactor*(realEmission*abs(D1)/dipoleSum - D1); // return the answer return output; } //calculate lambda double SMHiggsFermionsPOWHEGDecayer::calculateLambda(double x, double y, double z) const{ return sqr(x)+sqr(y)+sqr(z)-2.*x*y-2.*x*z-2.*y*z; } //calculates the dipole subtraction term for x1, D31,2 (Dij,k), // 2 is the spectator anti-fermion and 3 is the gluon InvEnergy2 SMHiggsFermionsPOWHEGDecayer:: dipoleSubtractionTerm(double x1, double x2) const{ InvEnergy2 commonPrefactor = CF_*8.*Constants::pi*aS_/sqr(mHiggs_); return commonPrefactor/(1.-x2)* (2.*(1.-2.*mu2_)/(2.-x1-x2)- sqrt((1.-4.*mu2_)/(sqr(x2)-4.*mu2_))* (x2-2.*mu2_)*(2.+(x1-1.)/(x2-2.*mu2_)+2.*mu2_/(1.-x2))/(1.-2.*mu2_)); } //return ME for real emission InvEnergy2 SMHiggsFermionsPOWHEGDecayer:: calculateRealEmission(double x1, double x2) const { InvEnergy2 prefactor = CF_*8.*Constants::pi*aS_/sqr(mHiggs_)/(1.-4.*mu2_); return prefactor*(2. + (1.-x1)/(1.-x2) + (1.-x2)/(1.-x1) + 2.*(1.-2.*mu2_)*(1.-4.*mu2_)/(1.-x1)/(1.-x2) - 2.*(1.-4.*mu2_)*(1./(1.-x2)+1./(1.-x1)) - 2.*mu2_*(1.-4.*mu2_)*(1./sqr(1.-x2)+1./sqr(1.-x1))); } double SMHiggsFermionsPOWHEGDecayer:: calculateVirtualTerm() const { // logs and prefactors double beta = sqrt(1.-4.*mu2_); double L = log((1.+beta)/(1.-beta)); double prefactor = CF_*aS_/Constants::twopi; // non-singlet piece double nonSingletTerm = calculateNonSingletTerm(beta, L); double virtualTerm = -2.+4.*log(mu_)+(2./beta - 2.*beta)*L + (2.-4.*mu2_)/beta*(0.5*sqr(L) - 2.*L*log(beta) + 2.*Herwig::Math::ReLi2((1.-beta)/(1.+beta)) + 2.*sqr(Constants::pi)/3.); double iEpsilonTerm = 2.*(3.-sqr(Constants::pi)/2. + 0.5*log(mu2_) - 1.5*log(1.-2.*mu2_) -(1.-2.*mu2_)/beta*(0.5*sqr(L)+sqr(Constants::pi)/6. -2.*L*log(1.-2.*mu2_)) + nonSingletTerm); return prefactor*(virtualTerm+iEpsilonTerm); } //non-singlet piece of I(epsilon) insertion operator double SMHiggsFermionsPOWHEGDecayer:: calculateNonSingletTerm(double beta, double L) const { return 1.5*log(1.-2.*mu2_) + (1.-2.*mu2_)/beta*(- 2.*L*log(4.*(1.-2.*mu2_)/sqr(1.+beta))+ + 2.*Herwig::Math::ReLi2(sqr((1.-beta)/(1.+beta))) - 2.*Herwig::Math::ReLi2(2.*beta/(1.+beta)) - sqr(Constants::pi)/6.) + log(1.-mu_) - 2.*log(1.-2.*mu_) - 2.*mu2_/(1.-2.*mu2_)*log(mu_/(1.-mu_)) - mu_/(1.-mu_) + 2.*mu_*(2*mu_-1.)/(1.-2.*mu2_) + 0.5*sqr(Constants::pi); } void SMHiggsFermionsPOWHEGDecayer::doinit() { SMHiggsFermionsDecayer::doinit(); gluon_ = getParticleData(ParticleID::g); // Energy quarkMass = getParticleData(ParticleID::b )->mass(); // Energy higgsMass = getParticleData(ParticleID::h0)->mass(); // double mu = quarkMass/higgsMass; // double beta = sqrt(1.-4.*sqr(mu)); // double beta2 = sqr(beta); // double aS = SM().alphaS(sqr(higgsMass)); // double L = log((1.+beta)/(1.-beta)); // cerr << "testing " << beta << " " << mu << "\n"; // cerr << "testing " << aS << " " << L << "\n"; // double fact = // 6.-0.75*(1.+beta2)/beta2+12.*log(mu)-8.*log(beta) // +(5./beta-2.*beta+0.375*sqr(1.-beta2)/beta2/beta)*L // +(1.+beta2)/beta*(4.*L*log(0.5*(1.+beta)/beta) // -2.*log(0.5*(1.+beta))*log(0.5*(1.-beta)) // +8.*Herwig::Math::ReLi2((1.-beta)/(1.+beta)) // -4.*Herwig::Math::ReLi2(0.5*(1.-beta))); // cerr << "testing correction " // << 1.+4./3.*aS/Constants::twopi*fact // << "\n"; // double real = 4./3.*aS/Constants::twopi* // (8.-0.75*(1.+beta2)/beta2+8.*log(mu)-8.*log(beta) // +(3./beta+0.375*sqr(1.-beta2)/pow(beta,3))*L // +(1.+beta2)/beta*(-0.5*sqr(L)+4.*L*log(0.5*(1.+beta)) // -2.*L*log(beta)-2.*log(0.5*(1.+beta))*log(0.5*(1.-beta)) // +6.*Herwig::Math::ReLi2((1.-beta)/(1.+beta)) // -4.*Herwig::Math::ReLi2(0.5*(1.-beta)) // -2./3.*sqr(Constants::pi))); // double virt = 4./3.*aS/Constants::twopi* // (-2.+4.*log(mu)+(2./beta-2.*beta)*L // +(1.+beta2)/beta*(0.5*sqr(L)-2.*L*log(beta)+2.*sqr(Constants::pi)/3. // +2.*Herwig::Math::ReLi2((1.-beta)/(1.+beta)))); // cerr << "testing real " << real << "\n"; // cerr << "testing virtual " << virt << "\n"; // cerr << "testing total no mb corr " << 1.+real+virt << "\n"; // cerr << "testing total mb corr " << 1.+real+virt +(8./3. - 2.*log(sqr(mu)))*aS/Constants::pi << "\n"; // InvEnergy2 Gf = 1.166371e-5/GeV2; // Gf = sqrt(2.)*4*Constants::pi*SM().alphaEM(sqr(higgsMass))/8./SM().sin2ThetaW()/ // sqr(getParticleData(ParticleID::Wplus)->mass()); // cerr << "testing GF " << Gf*GeV2 << "\n"; // Energy LO = (3./8./Constants::pi)*sqrt(2)*sqr(quarkMass)*Gf*higgsMass*beta*beta*beta; // cerr << "testing LO " << LO/GeV << "\n"; // cerr << "testing quark mass " << quarkMass/GeV << "\n"; // cerr << "testing gamma " << (1.+real+virt)*LO/MeV << "\n"; } bool SMHiggsFermionsPOWHEGDecayer::getEvent() { // max pT Energy pTmax = 0.5*sqrt(mh2_); // Define over valued y_max & y_min according to the associated pt_min cut. double ymax = acosh(pTmax/pTmin_); double ymin = -ymax; // pt of the emmission pT_ = pTmax; // prefactor double overEst = 4.; double prefactor = overEst*alphaS_->overestimateValue()*4./3./Constants::twopi; // loop to generate the pt and rapidity bool reject; //arrays to hold the temporary probabilities whilst the for loop progresses double probTemp[2][2]={{0.,0.},{0.,0.}}; probTemp[0][0]=probTemp[0][1]=probTemp[1][0]=probTemp[1][1]=0.; double x1Solution[2][2] = {{0.,0.},{0.,0.}}; double x2Solution[2][2] = {{0.,0.},{0.,0.}}; double x3Solution[2] = {0.,0.}; Energy pT[2] = {pTmax,pTmax}; double yTemp[2] ={0.,0.}; for(int i=0; i<2; i++) { do { // reject the emission reject = true; // generate pt pT[i] *= pow(UseRandom::rnd(),1./(prefactor*(ymax-ymin))); Energy2 pT2 = sqr(pT[i]); if(pT[i]<pTmin_) { pT[i] = -GeV; break; } // generate y yTemp[i] = ymin + UseRandom::rnd()*(ymax-ymin); //generate x3 & x1 from pT & y double x1Plus = 1.; double x1Minus = 2.*mu_; x3Solution[i] = 2.*pT[i]*cosh(yTemp[i])/mHiggs_; // prefactor Energy2 weightPrefactor = mh2_/16./sqr(Constants::pi)/sqrt(1.-4.*mu2_); weightPrefactor /= prefactor; // calculate x1 & x2 solutions Energy4 discrim2 = (sqr(x3Solution[i]*mHiggs_) - 4.*pT2)* (mh2_*(x3Solution[i]-1.)*(4.*mu2_+x3Solution[i]-1.)-4.*mu2_*pT2); //check discriminant2 is > 0 if( discrim2 < ZERO) continue; Energy2 discriminant = sqrt(discrim2); Energy2 fact1 = 3.*mh2_*x3Solution[i]-2.*mh2_+2.*pT2*x3Solution[i]-4.*pT2-mh2_*sqr(x3Solution[i]); Energy2 fact2 = 2.*mh2_*(x3Solution[i]-1.)-2.*pT2; // two solns for x1 x1Solution[i][0] = (fact1 + discriminant)/fact2; x1Solution[i][1] = (fact1 - discriminant)/fact2; x2Solution[i][0] = 2.-x3Solution[i]-x1Solution[i][0]; x2Solution[i][1] = 2.-x3Solution[i]-x1Solution[i][1]; bool found = false; for(unsigned int j=0;j<2;++j) { if(x1Solution[i][j]>=x1Minus && x1Solution[i][j]<=x1Plus && checkZMomenta(x1Solution[i][j], x2Solution[i][j], x3Solution[i], yTemp[i], pT[i])) { InvEnergy2 D1 = dipoleSubtractionTerm( x1Solution[i][j], x2Solution[i][j]); InvEnergy2 D2 = dipoleSubtractionTerm( x2Solution[i][j], x1Solution[i][j]); double dipoleFactor = abs(D1)/(abs(D1) + abs(D2)); probTemp[i][j] = weightPrefactor*pT[i]*dipoleFactor* calculateJacobian(x1Solution[i][j], x2Solution[i][j], pT[i])* calculateRealEmission(x1Solution[i][j], x2Solution[i][j]); found = true; } else { probTemp[i][j] = 0.; } } if(!found) continue; // alpha S piece double wgt = (probTemp[i][0]+probTemp[i][1])*alphaS_->value(sqr(pT[i]))/aS_; // matrix element weight reject = UseRandom::rnd()>wgt; } while(reject); } //end of emitter for loop // no emission if(pT[0]<ZERO&&pT[1]<ZERO) return false; //pick the spectator and x1 x2 values double x1,x2,y; //particle 1 emits, particle 2 spectates unsigned int iemit=0; if(pT[0]>pT[1]){ pT_ = pT[0]; y=yTemp[0]; if(probTemp[0][0]>UseRandom::rnd()*(probTemp[0][0]+probTemp[0][1])) { x1 = x1Solution[0][0]; x2 = x2Solution[0][0]; } else { x1 = x1Solution[0][1]; x2 = x2Solution[0][1]; } } //particle 2 emits, particle 1 spectates else { iemit=1; pT_ = pT[1]; y=yTemp[1]; if(probTemp[1][0]>UseRandom::rnd()*(probTemp[1][0]+probTemp[1][1])) { x1 = x1Solution[1][0]; x2 = x2Solution[1][0]; } else { x1 = x1Solution[1][1]; x2 = x2Solution[1][1]; } } // find spectator unsigned int ispect = iemit == 0 ? 1 : 0; // Find the boost from the lab to the c.o.m with the spectator // along the -z axis, and then invert it. LorentzRotation eventFrame( ( quark_[0] + quark_[1] ).findBoostToCM() ); Lorentz5Momentum spectator = eventFrame*quark_[ispect]; eventFrame.rotateZ( -spectator.phi() ); eventFrame.rotateY( -spectator.theta() - Constants::pi ); eventFrame.invert(); //generation of phi double phi = UseRandom::rnd() * Constants::twopi; // spectator quark_[ispect].setT( 0.5*x2*mHiggs_ ); quark_[ispect].setX( ZERO ); quark_[ispect].setY( ZERO ); quark_[ispect].setZ( -sqrt(0.25*mh2_*x2*x2-mh2_*mu2_) ); // gluon gauge_.setT( pT_*cosh(y) ); gauge_.setX( pT_*cos(phi) ); gauge_.setY( pT_*sin(phi) ); gauge_.setZ( pT_*sinh(y) ); gauge_.setMass(ZERO); // emitter reconstructed from gluon & spectator quark_[iemit] = - gauge_ - quark_[ispect]; quark_[iemit].setT( 0.5*mHiggs_*x1 ); // boost constructed vectors into the event frame quark_[0] = eventFrame * quark_[0]; quark_[1] = eventFrame * quark_[1]; gauge_ = eventFrame * gauge_; // need to reset masses because for whatever reason the boost // touches the mass component of the five-vector and can make // zero mass objects acquire a floating point negative mass(!). gauge_.setMass( ZERO ); quark_[iemit] .setMass(partons_[iemit ]->mass()); quark_[ispect].setMass(partons_[ispect]->mass()); return true; } InvEnergy SMHiggsFermionsPOWHEGDecayer::calculateJacobian(double x1, double x2, Energy pT) const{ double xPerp = abs(2.*pT/mHiggs_); Energy jac = mHiggs_*fabs((x1*x2-2.*mu2_*(x1+x2)+sqr(x2)-x2)/xPerp/pow(sqr(x2)-4.*mu2_,1.5)); return 1./jac; //jacobian as defined is dptdy=jac*dx1dx2, therefore we have to divide by it } bool SMHiggsFermionsPOWHEGDecayer::checkZMomenta(double x1, double x2, double x3, double y, Energy pT) const { double xPerp2 = 4.*pT*pT/mHiggs_/mHiggs_; static double tolerance = 1e-6; bool isMomentaReconstructed = false; if(pT*sinh(y)>ZERO) { if(abs(-sqrt(sqr(x2)-4.*mu2_)+sqrt(sqr(x3)-xPerp2) + sqrt(sqr(x1)-xPerp2 - 4.*mu2_)) <= tolerance || abs(-sqrt(sqr(x2)-4.*mu2_)+sqrt(sqr(x3)-xPerp2) - sqrt(sqr(x1)-xPerp2 - 4.*mu2_)) <= tolerance) isMomentaReconstructed=true; } else if(pT*sinh(y) < ZERO){ if(abs(-sqrt(sqr(x2)-4.*mu2_)-sqrt(sqr(x3)-xPerp2) + sqrt(sqr(x1)-xPerp2 - 4.*mu2_)) <= tolerance || abs(-sqrt(sqr(x2)-4.*mu2_)-sqrt(sqr(x3)-xPerp2) - sqrt(sqr(x1)-xPerp2 - 4.*mu2_)) <= tolerance) isMomentaReconstructed=true; } else if(abs(-sqrt(sqr(x2)-4.*mu2_)+ sqrt(sqr(x1)-xPerp2 - 4.*mu2_)) <= tolerance) isMomentaReconstructed=true; return isMomentaReconstructed; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/SMWDecayer.cc������������������������������������������������0000644�0001750�0001750�00000050411�11754474773�022752� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SMWDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SMWDecayer class. // #include "SMWDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "Herwig++/Decay/DecayVertex.h" #include "ThePEG/Helicity/VectorSpinInfo.h" #include "ThePEG/Helicity/FermionSpinInfo.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "Herwig++/Models/StandardModel/StandardModel.h" using namespace Herwig; using namespace ThePEG::Helicity; const double SMWDecayer::EPS_=0.00000001; SMWDecayer::SMWDecayer() : quarkWeight_(6,0.), leptonWeight_(3,0.) { quarkWeight_[0] = 1.01596; quarkWeight_[1] = 0.0537308; quarkWeight_[2] = 0.0538085; quarkWeight_[3] = 1.01377; quarkWeight_[4] = 1.45763e-05; quarkWeight_[5] = 0.0018143; leptonWeight_[0] = 0.356594; leptonWeight_[1] = 0.356593; leptonWeight_[2] = 0.356333; // intermediates generateIntermediates(false); } void SMWDecayer::doinit() { DecayIntegrator::doinit(); // get the vertices from the Standard Model object tcHwSMPtr hwsm=dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if(!hwsm) throw InitException() << "Must have Herwig++ StandardModel object in" << "SMWDecayer::doinit()" << Exception::runerror; FFWvertex_ = dynamic_ptr_cast<FFVVertexPtr>(hwsm->vertexFFW()); // make sure they are initialized FFWvertex_->init(); // now set up the decay modes DecayPhaseSpaceModePtr mode; tPDVector extpart(3); vector<double> wgt(0); // W modes extpart[0]=getParticleData(ParticleID::Wplus); // loop for the quarks unsigned int iz=0; for(int ix=1;ix<6;ix+=2) { for(int iy=2;iy<6;iy+=2) { // check that the combination of particles is allowed if(!FFWvertex_->allowed(-ix,iy,ParticleID::Wminus)) throw InitException() << "SMWDecayer::doinit() the W vertex" << "cannot handle all the quark modes" << Exception::abortnow; extpart[1] = getParticleData(-ix); extpart[2] = getParticleData( iy); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); addMode(mode,quarkWeight_[iz],wgt); ++iz; } } // loop for the leptons for(int ix=11;ix<17;ix+=2) { // check that the combination of particles is allowed if(!FFWvertex_->allowed(-ix,ix+1,ParticleID::Wminus)) throw InitException() << "SMWDecayer::doinit() the W vertex" << "cannot handle all the lepton modes" << Exception::abortnow; extpart[1] = getParticleData(-ix); extpart[2] = getParticleData(ix+1); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); addMode(mode,leptonWeight_[(ix-11)/2],wgt); } } int SMWDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); if(children.size()!=2) return imode; int id0=parent->id(); tPDVector::const_iterator pit = children.begin(); int id1=(**pit).id(); ++pit; int id2=(**pit).id(); if(abs(id0)!=ParticleID::Wplus) return imode; int idd(0),idu(0); if(abs(id1)%2==1&&abs(id2)%2==0) { idd=abs(id1); idu=abs(id2); } else if(abs(id1)%2==0&&abs(id2)%2==1) { idd=abs(id2); idu=abs(id1); } if(idd==0&&idu==0) { return imode; } else if(idd<=5) { imode=idd+idu/2-2; } else { imode=(idd-1)/2+1; } cc= (id0==ParticleID::Wminus); return imode; } void SMWDecayer::persistentOutput(PersistentOStream & os) const { os << FFWvertex_ << quarkWeight_ << leptonWeight_ << alpha_; } void SMWDecayer::persistentInput(PersistentIStream & is, int) { is >> FFWvertex_ >> quarkWeight_ >> leptonWeight_ >> alpha_; } ClassDescription<SMWDecayer> SMWDecayer::initSMWDecayer; // Definition of the static class description member. void SMWDecayer::Init() { static ClassDocumentation<SMWDecayer> documentation ("The SMWDecayer class is the implementation of the decay" " of the W boson to the Standard Model fermions."); static ParVector<SMWDecayer,double> interfaceWquarkMax ("QuarkMax", "The maximum weight for the decay of the W to quarks", &SMWDecayer::quarkWeight_, 0, 0, 0, -10000, 10000, false, false, true); static ParVector<SMWDecayer,double> interfaceWleptonMax ("LeptonMax", "The maximum weight for the decay of the W to leptons", &SMWDecayer::leptonWeight_, 0, 0, 0, -10000, 10000, false, false, true); static Reference<SMWDecayer,ShowerAlpha> interfaceCoupling ("Coupling", "Pointer to the object to calculate the coupling for the correction", &SMWDecayer::alpha_, false, false, true, false, false); } // return the matrix element squared double SMWDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { int iferm(1),ianti(0); if(decay[0]->id()>0) swap(iferm,ianti); if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors,_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); ME(DecayMatrixElement(PDT::Spin1,PDT::Spin1Half,PDT::Spin1Half)); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); SpinorBarWaveFunction:: constructSpinInfo(_wavebar,decay[iferm],outgoing,true); SpinorWaveFunction:: constructSpinInfo(_wave ,decay[ianti],outgoing,true); return 0.; } SpinorBarWaveFunction:: calculateWaveFunctions(_wavebar,decay[iferm],outgoing); SpinorWaveFunction:: calculateWaveFunctions(_wave ,decay[ianti],outgoing); // compute the matrix element Energy2 scale(sqr(inpart.mass())); for(unsigned int ifm=0;ifm<2;++ifm) { for(unsigned int ia=0;ia<2;++ia) { for(unsigned int vhel=0;vhel<3;++vhel) { if(iferm>ianti) ME()(vhel,ia,ifm)= FFWvertex_->evaluate(scale,_wave[ia],_wavebar[ifm],_vectors[vhel]); else ME()(vhel,ifm,ia)= FFWvertex_->evaluate(scale,_wave[ia],_wavebar[ifm],_vectors[vhel]); } } } double output=(ME().contract(_rho)).real()*UnitRemoval::E2/scale; if(abs(decay[0]->id())<=6) output*=3.; if(decay[0]->hasColour()) decay[0]->antiColourNeighbour(decay[1]); else if(decay[1]->hasColour()) decay[1]->antiColourNeighbour(decay[0]); return output; } void SMWDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<numberModes();++ix) { if(ix<6) quarkWeight_ [ix]=mode(ix)->maxWeight(); else leptonWeight_[ix-6]=mode(ix)->maxWeight(); } } } void SMWDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; for(unsigned int ix=0;ix<quarkWeight_.size();++ix) { output << "newdef " << name() << ":QuarkMax " << ix << " " << quarkWeight_[ix] << "\n"; } for(unsigned int ix=0;ix<leptonWeight_.size();++ix) { output << "newdef " << name() << ":LeptonMax " << ix << " " << leptonWeight_[ix] << "\n"; } // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } void SMWDecayer:: initializeMECorrection(ShowerTreePtr tree, double & initial, double & final) { map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt; // get the quark and antiquark ParticleVector qq; for(cjt=tree->outgoingLines().begin();cjt!=tree->outgoingLines().end();++cjt) qq.push_back(cjt->first->copy()); // ensure quark first if(qq[0]->id()<0) swap(qq[0],qq[1]); // centre of mass energy d_Q_ = (qq[0]->momentum() + qq[1]->momentum()).m(); // quark mass d_m_ = 0.5*(qq[0]->momentum().m()+qq[1]->momentum().m()); // set the other parameters setRho(sqr(d_m_/d_Q_)); setKtildeSymm(); // otherwise can do it initial=1.; final =1.; } void SMWDecayer:: applyHardMatrixElementCorrection(ShowerTreePtr tree) { // get the quark and antiquark ParticleVector qq; map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit; for(cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) qq.push_back(cit->first->copy()); if(!qq[0]->dataPtr()->coloured()) return; // ensure quark first if(qq[0]->id()<0) swap(qq[0],qq[1]); // get the momenta vector<Lorentz5Momentum> newfs = applyHard(qq); // return if no emission if(newfs.size()!=3) return; // perform final check to ensure energy greater than constituent mass for (int i=0; i<2; i++) { if (newfs[i].e() < qq[i]->data().constituentMass()) return; } if (newfs[2].e() < getParticleData(ParticleID::g)->constituentMass()) return; // set masses for (int i=0; i<2; i++) newfs[i].setMass(qq[i]->mass()); newfs[2].setMass(ZERO); // decide which particle emits bool firstEmits= newfs[2].vect().perp2(newfs[0].vect())< newfs[2].vect().perp2(newfs[1].vect()); // create the new quark, antiquark and gluon PPtr newg = getParticleData(ParticleID::g)->produceParticle(newfs[2]); PPtr newq,newa; if(firstEmits) { newq = qq[0]->dataPtr()->produceParticle(newfs[0]); newa = new_ptr(Particle(*qq[1])); qq[1]->antiColourLine()->removeAntiColoured(newa); newa->set5Momentum(newfs[1]); } else { newq = new_ptr(Particle(*qq[0])); qq[0]->colourLine()->removeColoured(newq); newq->set5Momentum(newfs[0]); newa = qq[1]->dataPtr()->produceParticle(newfs[1]); } // get the original colour line ColinePtr col; if(qq[0]->id()>0) col=qq[0]->colourLine(); else col=qq[0]->antiColourLine(); // set the colour lines if(firstEmits) { col->addColoured(newq); col->addAntiColoured(newg); newa->colourNeighbour(newg); } else { col->addAntiColoured(newa); col->addColoured(newg); newq->antiColourNeighbour(newg); } // change the existing quark and antiquark PPtr orig; for(cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { if(cit->first->progenitor()->id()==newq->id()) { // remove old particles from colour line col->removeColoured(cit->first->copy()); col->removeColoured(cit->first->progenitor()); // insert new particles cit->first->copy(newq); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newq,1,true))); cit->first->progenitor(sp); tree->outgoingLines()[cit->first]=sp; cit->first->perturbative(!firstEmits); if(firstEmits) orig=cit->first->original(); } else { // remove old particles from colour line col->removeAntiColoured(cit->first->copy()); col->removeColoured(cit->first->progenitor()); // insert new particles cit->first->copy(newa); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newa,1,true))); cit->first->progenitor(sp); tree->outgoingLines()[cit->first]=sp; cit->first->perturbative(firstEmits); if(!firstEmits) orig=cit->first->original(); } } // add the gluon ShowerParticlePtr sg=new_ptr(ShowerParticle(*newg,1,true)); ShowerProgenitorPtr gluon=new_ptr(ShowerProgenitor(orig,newg,sg)); gluon->perturbative(false); tree->outgoingLines().insert(make_pair(gluon,sg)); tree->hardMatrixElementCorrection(true); } vector<Lorentz5Momentum> SMWDecayer:: applyHard(const ParticleVector &p) { double x, xbar; vector<Lorentz5Momentum> fs; // return if no emission if (getHard(x, xbar) < UseRandom::rnd() || p.size() != 2) return fs; // centre of mass energy Lorentz5Momentum pcm = p[0]->momentum() + p[1]->momentum(); // momenta of quark,antiquark and gluon Lorentz5Momentum pq, pa, pg; if (p[0]->id() > 0) { pq = p[0]->momentum(); pa = p[1]->momentum(); } else { pa = p[0]->momentum(); pq = p[1]->momentum(); } // boost to boson rest frame Boost beta = (pcm.findBoostToCM()); pq.boost(beta); pa.boost(beta); // return if fails ????? double xg = 2.-x-xbar; if((1.-x)*(1.-xbar)*(1.-xg) < d_rho_*xg*xg) return fs; Axis u1, u2, u3; // moduli of momenta in units of Q and cos theta // stick to q direction? // p1 is the one that is kept, p2 is the other fermion, p3 the gluon. Energy e1, e2, e3; Energy pp1, pp2, pp3; bool keepq = true; if (UseRandom::rnd() > sqr(x)/(sqr(x)+sqr(xbar))) keepq = false; if (keepq) { pp1 = d_Q_*sqrt(sqr(x)-4.*d_rho_)/2.; pp2 = d_Q_*sqrt(sqr(xbar)-4.*d_rho_)/2.; e1 = d_Q_*x/2.; e2 = d_Q_*xbar/2.; u1 = pq.vect().unit(); } else { pp2 = d_Q_*sqrt(sqr(x)-4.*d_rho_)/2.; pp1 = d_Q_*sqrt(sqr(xbar)-4.*d_rho_)/2.; e2 = d_Q_*x/2.; e1 = d_Q_*xbar/2.; u1 = pa.vect().unit(); } pp3 = d_Q_*xg/2.; e3 = pp3; u2 = u1.orthogonal(); u2 /= u2.mag(); u3 = u1.cross(u2); u3 /= u3.mag(); double ct2=-2., ct3=-2.; if (pp1 == ZERO || pp2 == ZERO || pp3 == ZERO) { bool touched = false; if (pp1 == ZERO) { ct2 = 1; ct3 = -1; touched = true; } if (pp2 == ZERO || pp3 == ZERO) { ct2 = 1; ct3 = 1; touched = true; } if (!touched) throw Exception() << "SMWDecayer::applyHard()" << " did not set ct2/3" << Exception::abortnow; } else { ct3 = (sqr(pp1)+sqr(pp3)-sqr(pp2))/(2.*pp1*pp3); ct2 = (sqr(pp1)+sqr(pp2)-sqr(pp3))/(2.*pp1*pp2); } double phi = Constants::twopi*UseRandom::rnd(); double cphi = cos(phi); double sphi = sin(phi); double st2 = sqrt(1.-sqr(ct2)); double st3 = sqrt(1.-sqr(ct3)); ThreeVector<Energy> pv1, pv2, pv3; pv1 = pp1*u1; pv2 = -ct2*pp2*u1 + st2*cphi*pp2*u2 + st2*sphi*pp2*u3; pv3 = -ct3*pp3*u1 - st3*cphi*pp3*u2 - st3*sphi*pp3*u3; if (keepq) { pq = Lorentz5Momentum(pv1, e1); pa = Lorentz5Momentum(pv2, e2); } else { pa = Lorentz5Momentum(pv1, e1); pq = Lorentz5Momentum(pv2, e2); } pg = Lorentz5Momentum(pv3, e3); pq.boost(-beta); pa.boost(-beta); pg.boost(-beta); fs.push_back(pq); fs.push_back(pa); fs.push_back(pg); return fs; } double SMWDecayer::getHard(double &x1, double &x2) { double w = 0.0; double y1 = UseRandom::rnd(),y2 = UseRandom::rnd(); // simply double MC efficiency // -> weight has to be divided by two (Jacobian) if (y1 + y2 > 1) { y1 = 1.-y1; y2 = 1.-y2; } bool inSoft = false; if (y1 < 0.25) { if (y2 < 0.25) { inSoft = true; if (y1 < y2) { y1 = 0.25-y1; y2 = y1*(1.5 - 2.*y2); } else { y2 = 0.25 - y2; y1 = y2*(1.5 - 2.*y1); } } else { if (y2 < y1 + 2.*sqr(y1)) return w; } } else { if (y2 < 0.25) { if (y1 < y2 + 2.*sqr(y2)) return w; } } // inside PS? x1 = 1.-y1; x2 = 1.-y2; if(y1*y2*(1.-y1-y2) < d_rho_*sqr(y1+y2)) return w; double k1 = getKfromX(x1, x2); double k2 = getKfromX(x2, x1); // Is it in the quark emission zone? if (k1 < d_kt1_) return 0.0; // No...is it in the anti-quark emission zone? if (k2 < d_kt2_) return 0.0; // Point is in dead zone: compute q qbar g weight w = MEV(x1, x2); // for axial: // w = MEA(x1, x2); // Reweight soft region if (inSoft) { if (y1 < y2) w *= 2.*y1; else w *= 2.*y2; } // alpha and colour factors Energy2 pt2 = sqr(d_Q_)*(1.-x1)*(1.-x2); w *= 1./3./Constants::pi*alpha_->value(pt2); return w; } bool SMWDecayer:: softMatrixElementVeto(ShowerProgenitorPtr initial,ShowerParticlePtr parent,Branching br) { // check we should be applying the veto if(parent->id()!=initial->progenitor()->id()|| br.ids[0]!=br.ids[1]|| br.ids[2]!=ParticleID::g) return false; // calculate pt double d_z = br.kinematics->z(); Energy d_qt = br.kinematics->scale(); Energy2 d_m2 = parent->momentum().m2(); Energy2 pPerp2 = sqr(d_z*d_qt) - d_m2; if(pPerp2<ZERO) { parent->setEvolutionScale(br.kinematics->scale()); return true; } Energy pPerp = (1.-d_z)*sqrt(pPerp2); // if not hardest so far don't apply veto if(pPerp<initial->highestpT()) return false; // calculate the weight double weight = 0.; if(parent->id()>0) weight = qWeightX(d_qt, d_z); else weight = qbarWeightX(d_qt, d_z); // compute veto from weight bool veto = !UseRandom::rndbool(weight); // if not vetoed reset max if(!veto) initial->highestpT(pPerp); // if vetoing reset the scale if(veto) parent->setEvolutionScale(br.kinematics->scale()); // return the veto return veto; } void SMWDecayer::setRho(double r) { d_rho_ = r; d_v_ = sqrt(1.-4.*d_rho_); } void SMWDecayer::setKtildeSymm() { d_kt1_ = (1. + sqrt(1. - 4.*d_rho_))/2.; setKtilde2(); } void SMWDecayer::setKtilde2() { double num = d_rho_ * d_kt1_ + 0.25 * d_v_ *(1.+d_v_)*(1.+d_v_); double den = d_kt1_ - d_rho_; d_kt2_ = num/den; } double SMWDecayer::getZfromX(double x1, double x2) { double uval = u(x2); double num = x1 - (2. - x2)*uval; double den = sqrt(x2*x2 - 4.*d_rho_); return uval + num/den; } double SMWDecayer::getKfromX(double x1, double x2) { double zval = getZfromX(x1, x2); return (1.-x2)/(zval*(1.-zval)); } double SMWDecayer::MEV(double x1, double x2) { // Vector part double num = (x1+2.*d_rho_)*(x1+2.*d_rho_) + (x2+2.*d_rho_)*(x2+2.*d_rho_) - 8.*d_rho_*(1.+2.*d_rho_); double den = (1.+2.*d_rho_)*(1.-x1)*(1.-x2); return (num/den - 2.*d_rho_/((1.-x1)*(1.-x1)) - 2*d_rho_/((1.-x2)*(1.-x2)))/d_v_; } double SMWDecayer::MEA(double x1, double x2) { // Axial part double num = (x1+2.*d_rho_)*(x1+2.*d_rho_) + (x2+2.*d_rho_)*(x2+2.*d_rho_) + 2.*d_rho_*((5.-x1-x2)*(5.-x1-x2) - 19.0 + 4*d_rho_); double den = d_v_*d_v_*(1.-x1)*(1.-x2); return (num/den - 2.*d_rho_/((1.-x1)*(1.-x1)) - 2*d_rho_/((1.-x2)*(1.-x2)))/d_v_; } double SMWDecayer::u(double x2) { return 0.5*(1. + d_rho_/(1.-x2+d_rho_)); } void SMWDecayer:: getXXbar(double kti, double z, double &x, double &xbar) { double w = sqr(d_v_) + kti*(-1. + z)*z*(2. + kti*(-1. + z)*z); if (w < 0) { x = -1.; xbar = -1; } else { x = (1. + sqr(d_v_)*(-1. + z) + sqr(kti*(-1. + z))*z*z*z + z*sqrt(w) - kti*(-1. + z)*z*(2. + z*(-2 + sqrt(w))))/ (1. - kti*(-1. + z)*z + sqrt(w)); xbar = 1. + kti*(-1. + z)*z; } } double SMWDecayer::qWeight(double x, double xbar) { double rval; double xg = 2. - xbar - x; // always return one in the soft gluon region if(xg < EPS_) return 1.0; // check it is in the phase space if((1.-x)*(1.-xbar)*(1.-xg) < d_rho_*xg*xg) return 0.0; double k1 = getKfromX(x, xbar); double k2 = getKfromX(xbar, x); // Is it in the quark emission zone? if(k1 < d_kt1_) { rval = MEV(x, xbar)/PS(x, xbar); // is it also in the anti-quark emission zone? if(k2 < d_kt2_) rval *= 0.5; return rval; } return 1.0; } double SMWDecayer::qbarWeight(double x, double xbar) { double rval; double xg = 2. - xbar - x; // always return one in the soft gluon region if(xg < EPS_) return 1.0; // check it is in the phase space if((1.-x)*(1.-xbar)*(1.-xg) < d_rho_*xg*xg) return 0.0; double k1 = getKfromX(x, xbar); double k2 = getKfromX(xbar, x); // Is it in the antiquark emission zone? if(k2 < d_kt2_) { rval = MEV(x, xbar)/PS(xbar, x); // is it also in the quark emission zone? if(k1 < d_kt1_) rval *= 0.5; return rval; } return 1.0; } double SMWDecayer::qWeightX(Energy qtilde, double z) { double x, xb; getXXbar(sqr(qtilde/d_Q_), z, x, xb); // if exceptionally out of phase space, leave this emission, as there // is no good interpretation for the soft ME correction. if (x < 0 || xb < 0) return 1.0; return qWeight(x, xb); } double SMWDecayer::qbarWeightX(Energy qtilde, double z) { double x, xb; getXXbar(sqr(qtilde/d_Q_), z, xb, x); // see above in qWeightX. if (x < 0 || xb < 0) return 1.0; return qbarWeight(x, xb); } double SMWDecayer::PS(double x, double xbar) { double u = 0.5*(1. + d_rho_ / (1.-xbar+d_rho_)); double z = u + (x - (2.-xbar)*u)/sqrt(xbar*xbar - 4.*d_rho_); double brack = (1.+z*z)/(1.-z)- 2.*d_rho_/(1-xbar); // interesting: the splitting function without the subtraction // term. Actually gives a much worse approximation in the collinear // limit. double brack = (1.+z*z)/(1.-z); double den = (1.-xbar)*sqrt(xbar*xbar - 4.*d_rho_); return brack/den; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Perturbative/SMHiggsGGHiggsPPDecayer.h������������������������������������0000644�0001750�0001750�00000014334�11754474773�025113� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SMHiggsGGHiggsPPDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SMHiggsGGHiggsPPDecayer_H #define HERWIG_SMHiggsGGHiggsPPDecayer_H // // This is the declaration of the SMHiggsGGHiggsPPDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/Models/StandardModel/SMHGGVertex.h" #include "Herwig++/Models/StandardModel/SMHPPVertex.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * Typedef for the \f$H\to gg\f$ vertex */ typedef Ptr<Herwig::SMHGGVertex>::pointer HGGPtr; /** * Typedef for the \f$H\to \gamma\gamma\f$ vertex */ typedef Ptr<Herwig::SMHPPVertex>::pointer HPPPtr; /** * The <code>SMHiggsGGHiggsPPDecayer</code> class performs the * of a Standard Model Higgs boson to either a pair * of photons or a pair of gluons. * * @see DecayIntegrator */ class SMHiggsGGHiggsPPDecayer: public DecayIntegrator { public: /** * The default constructor. */ SMHiggsGGHiggsPPDecayer() : _h0wgt(2,1.) {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Check if this decayer can perfom the decay for a particular mode. * Uses the modeNumber member but can be overridden * @param parent The decaying particle * @param children The decay products */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * Which of the possible decays is required */ virtual int modeNumber(bool &, tcPDPtr, const tPDVector & ) const {return -1;} /** * For a given decay mode and a given particle instance, perform the * decay and return the decay products. As this is the base class this * is not implemented. * @return The vector of particles produced in the decay. */ virtual ParticleVector decay(const Particle & parent,const tPDVector & children) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<SMHiggsGGHiggsPPDecayer> initSMHiggsGGHiggsPPDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SMHiggsGGHiggsPPDecayer & operator=(const SMHiggsGGHiggsPPDecayer &); /** * Pointer to h->gluon,gluon vertex */ HGGPtr _hggvertex; /** * Pointer to h->gamma,gamma vertex */ HPPPtr _hppvertex; /** * Maximum weight for integration */ vector<double> _h0wgt; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Scalar wavefunction */ mutable ScalarWaveFunction _swave; /** * Vector wavefunctions */ mutable vector<VectorWaveFunction> _vwave[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SMHiggsGGHiggsPPDecayer. */ template <> struct BaseClassTrait<Herwig::SMHiggsGGHiggsPPDecayer,1> { /** Typedef of the first base class of SMHiggsGGHiggsPPDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the SMHiggsGGHiggsPPDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SMHiggsGGHiggsPPDecayer> : public ClassTraitsBase<Herwig::SMHiggsGGHiggsPPDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::SMHiggsGGHiggsPPDecayer"; } /** Return the name of the shared library be loaded to get * access to the SMHiggsGGHiggsPPDecayer class and every other class it uses * (except the base class). */ static string library() { return "HwPerturbativeHiggsDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SMHiggsGGHiggsPPDecayer_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/TensorMeson/��������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464204�020265� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/TensorMeson/TensorMesonVectorPScalarDecayer.cc����������������������������0000644�0001750�0001750�00000033232�11754474774�027014� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TensorMesonVectorPScalarDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TensorMesonVectorPScalarDecayer class. // #include "TensorMesonVectorPScalarDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/epsilon.h" using namespace Herwig; using namespace ThePEG::Helicity; void TensorMesonVectorPScalarDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()){ for(unsigned int ix=0;ix<_incoming.size();++ix) if(mode(ix)) _maxweight[ix] = mode(ix)->maxWeight(); } } TensorMesonVectorPScalarDecayer::TensorMesonVectorPScalarDecayer() : _incoming(31), _outgoingV(31), _outgoingP(31), _coupling(31), _maxweight(31) { ME(DecayMatrixElement(PDT::Spin2,PDT::Spin1,PDT::Spin0)); // a_2 -> rho pi _incoming[0] = 115; _outgoingV[0] = 213; _outgoingP[0] = -211; _coupling[0] = 21.1/GeV2; _maxweight[0] = 10.; _incoming[1] = 215; _outgoingV[1] = 113; _outgoingP[1] = 211; _coupling[1] = 21.1/GeV2; _maxweight[1] = 9.; _incoming[2] = 215; _outgoingV[2] = 213; _outgoingP[2] = 111; _coupling[2] = 21.1/GeV2; _maxweight[2] = 9.; // a_2+/- -> gamma pi+/- _incoming[3] = 215; _outgoingV[3] = 22; _outgoingP[3] = 211; _coupling[3] = 0.551/GeV2; _maxweight[3] = 2.; // k_2 -> K_2 omega _incoming[4] = 315; _outgoingV[4] = 223; _outgoingP[4] = 311; _coupling[4] = 11.66/GeV2; _maxweight[4] = 17.; _incoming[5] = 325; _outgoingV[5] = 223; _outgoingP[5] = 321; _coupling[5] = 11.66/GeV2; _maxweight[5] = 20.5; // k_2+/- -> K+/- gamma _incoming[6] = 325; _outgoingV[6] = 22; _outgoingP[6] = 321; _coupling[6] = 0.553/GeV2; _maxweight[6] = 2.2; // B_c2 -> B_c gamma _incoming[7] = 545; _outgoingV[7] = 22; _outgoingP[7] = 541; _coupling[7] = 0.651/GeV2; _maxweight[7] = 2.; // K_2 -> K rho _incoming[8] = 325; _outgoingV[8] = 113; _outgoingP[8] = 321; _coupling[8] = 10.14/GeV2; _maxweight[8] = 9.; _incoming[9] = 325; _outgoingV[9] = 213; _outgoingP[9] = 311; _coupling[9] = 14.33/GeV2; _maxweight[9] = 9.; _incoming[10] = 315; _outgoingV[10] = 113; _outgoingP[10] = 311; _coupling[10] = 10.14/GeV2; _maxweight[10] = 9.; _incoming[11] = 315; _outgoingV[11] = -213; _outgoingP[11] = 321; _coupling[11] = 14.33/GeV2; _maxweight[11] = 9.; // K_2 -> K* pi _incoming[12] = 325; _outgoingV[12] = 323; _outgoingP[12] = 111; _coupling[12] = 9.733/GeV2; _maxweight[12] = 13; _incoming[13] = 325; _outgoingV[13] = 313; _outgoingP[13] = 211; _coupling[13] = 13.77/GeV2; _maxweight[13] = 11; _incoming[14] = 315; _outgoingV[14] = 313; _outgoingP[14] = 111; _coupling[14] = 9.733/GeV2; _maxweight[14] = 8.; _incoming[15] = 315; _outgoingV[15] = 323; _outgoingP[15] = -211; _coupling[15] = 13.77/GeV2; _maxweight[15] = 8.; // D_2 -> D* pi _incoming[16] = 425; _outgoingV[16] = 423; _outgoingP[16] = 111; _coupling[16] = 8.035/GeV2; _maxweight[16] = 2.2; _incoming[17] = 425; _outgoingV[17] = 413; _outgoingP[17] = -211; _coupling[17] = 11.670/GeV2; _maxweight[17] = 2.4; _incoming[18] = 415; _outgoingV[18] = 413; _outgoingP[18] = 111; _coupling[18] = 6.801/GeV2; _maxweight[18] = 2.4; _incoming[19] = 415; _outgoingV[19] = 423; _outgoingP[19] = 211; _coupling[19] = 9.527/GeV2; _maxweight[19] = 2.; // D_s2 -> D* K _incoming[20] = 435; _outgoingV[20] = 423; _outgoingP[20] = 321; _coupling[20] = 13.10/GeV2; _maxweight[20] = 2.2; _incoming[21] = 435; _outgoingV[21] = 413; _outgoingP[21] = 311; _coupling[21] = 13.10/GeV2; _maxweight[21] = 2.5; // B_2 -> B* pi _incoming[22] = 525; _outgoingV[22] = 523; _outgoingP[22] = 111; _coupling[22] = 4.99/GeV2; _maxweight[22] = 2.1; _incoming[23] = 525; _outgoingV[23] = 513; _outgoingP[23] = 211; _coupling[23] = 7.059/GeV2; _maxweight[23] = 2.1; _incoming[24] = 515; _outgoingV[24] = 513; _outgoingP[24] = 111; _coupling[24] = 4.99/GeV2; _maxweight[24] = 2.1; _incoming[25] = 515; _outgoingV[25] = 523; _outgoingP[25] = -211; _coupling[25] = 7.059/GeV2; _maxweight[25] = 2.1; // D_s2 _incoming[26] = 435; _outgoingV[26] = 423; _outgoingP[26] = 321; _coupling[26] = 13.09/GeV2; _maxweight[26] = 2.2; _incoming[27] = 435; _outgoingV[27] = 413; _outgoingP[27] = 311; _coupling[27] = 13.09/GeV2; _maxweight[27] = 2.5; // B_s2 _incoming[28] = 535; _outgoingV[28] = 523; _outgoingP[28] = -321; _coupling[28] = 7.29/GeV2; _maxweight[28] = 2.4; _incoming[29] = 535; _outgoingV[29] = 513; _outgoingP[29] = -311; _coupling[29] = 9.43/GeV2; _maxweight[29] = 2.1; // upsilon_2(1d) to chi_b gamma _incoming[30] = 20555; _outgoingV[30] = 22; _outgoingP[30] = 10551; _coupling[30] = 1.11/GeV2; _maxweight[30] = 2.4; // initial size of the arrays _initsize=_incoming.size(); // intermediates generateIntermediates(false); } void TensorMesonVectorPScalarDecayer::doinit() { DecayIntegrator::doinit(); // check consistence of the parameters unsigned int isize=_incoming.size(); if(isize!=_outgoingV.size()||isize!=_outgoingP.size()|| isize!=_maxweight.size()||isize!=_coupling.size()) throw InitException() << "Inconsistent parameters TensorMesonVectorPScalarDecayer" << Exception::abortnow; // set up the integration channels vector<double> wgt; DecayPhaseSpaceModePtr mode; tPDVector extpart(3); for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0] = getParticleData(_incoming[ix]); extpart[1] = getParticleData(_outgoingV[ix]); extpart[2] = getParticleData(_outgoingP[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } int TensorMesonVectorPScalarDecayer::modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const { if(children.size()!=2) return -1; int id(parent->id()); int idbar = parent->CC() ? parent->CC()->id() : id; int id1(children[0]->id()); int id1bar = children[0]->CC() ? children[0]->CC()->id() : id1; int id2(children[1]->id()); int id2bar = children[1]->CC() ? children[1]->CC()->id() : id2; int imode(-1); unsigned int ix(0); cc=false; do { if(id ==_incoming[ix]) { if((id1 ==_outgoingP[ix]&&id2 ==_outgoingV[ix])|| (id2 ==_outgoingP[ix]&&id1 ==_outgoingV[ix])) imode=ix; } if(idbar==_incoming[ix]) { if((id1bar==_outgoingP[ix]&&id2bar==_outgoingV[ix])|| (id2bar==_outgoingP[ix]&&id1bar==_outgoingV[ix])) { imode=ix; cc=true; } } ++ix; } while(ix<_incoming.size()&&imode<0); return imode; } void TensorMesonVectorPScalarDecayer::persistentOutput(PersistentOStream & os) const { os << _incoming << _outgoingV << _outgoingP << _maxweight << ounit(_coupling,1/GeV2); } void TensorMesonVectorPScalarDecayer::persistentInput(PersistentIStream & is, int) { is >> _incoming >> _outgoingV >> _outgoingP >> _maxweight >> iunit(_coupling,1/GeV2); } ClassDescription<TensorMesonVectorPScalarDecayer> TensorMesonVectorPScalarDecayer::initTensorMesonVectorPScalarDecayer; // Definition of the static class description member. void TensorMesonVectorPScalarDecayer::Init() { static ClassDocumentation<TensorMesonVectorPScalarDecayer> documentation ("The TensorMesonVectorPScalarDecayer class implements the" " decay of a tensor meson to a spin-1 particle and a pseduoscalar meson"); static ParVector<TensorMesonVectorPScalarDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &TensorMesonVectorPScalarDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<TensorMesonVectorPScalarDecayer,int> interfaceOutcomingV ("OutgoingVector", "The PDG code for the outgoing spin-1particle", &TensorMesonVectorPScalarDecayer::_outgoingV, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<TensorMesonVectorPScalarDecayer,int> interfaceOutcomingP ("OutgoingScalar", "The PDG code for the outgoing pseudoscalar meson", &TensorMesonVectorPScalarDecayer::_outgoingP, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<TensorMesonVectorPScalarDecayer,InvEnergy2> interfaceCoupling ("Coupling", "The coupling for the decay mode", &TensorMesonVectorPScalarDecayer::_coupling, 1/GeV2, 0, ZERO, ZERO, 100./GeV2, false, false, true); static ParVector<TensorMesonVectorPScalarDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &TensorMesonVectorPScalarDecayer::_maxweight, 0, 0, 0, 0., 1000., false, false, true); } // matrix elememt for the process double TensorMesonVectorPScalarDecayer::me2(const int,const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // check for photons bool photon(_outgoingV[imode()]==ParticleID::gamma); // stuff for incoming particle if(meopt==Initialize) { _rho = RhoDMatrix(PDT::Spin2); TensorWaveFunction:: calculateWaveFunctions(_tensors,_rho,const_ptr_cast<tPPtr>(&inpart), incoming,false); } if(meopt==Terminate) { TensorWaveFunction::constructSpinInfo(_tensors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); // set up the spin information for the decay products VectorWaveFunction::constructSpinInfo(_vectors,decay[0],outgoing,true,photon); ScalarWaveFunction::constructSpinInfo(decay[1],outgoing,true); return 0.; } VectorWaveFunction::calculateWaveFunctions(_vectors,decay[0],outgoing,photon); InvEnergy3 fact(_coupling[imode()]/inpart.mass()); // calculate the matrix element for(unsigned int inhel=0;inhel<5;++inhel) { for(unsigned int vhel=0;vhel<3;++vhel){ if(vhel==1&&photon) ME()(inhel,vhel,0)=0.; else { LorentzVector<complex<InvEnergy> > vtemp= fact*epsilon(decay[0]->momentum(),_vectors[vhel],decay[1]->momentum()); ME()(inhel,vhel,0)= (decay[1]->momentum()*_tensors[inhel]).dot(vtemp); } } } // // test of the answer // double me = ME().contract(_rho).real(); // Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.mass(),decay[0]->mass(), // decay[1]->mass()); // double test = Energy4(pow<4,1>(2*pcm))*sqr( _coupling[imode()])/80.; // cout << "testing matrix element for " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << me << " " << test << " " << (me-test)/(me+test) << endl; // return the answer return ME().contract(_rho).real(); } bool TensorMesonVectorPScalarDecayer::twoBodyMEcode(const DecayMode & dm,int & mecode, double & coupling) const { int imode(-1); int id(dm.parent()->id()); int idbar = dm.parent()->CC() ? dm.parent()->CC()->id() : id; ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id()); int id1bar = (**pit).CC() ? (**pit).CC()->id() : id1; ++pit; int id2((**pit).id()); int id2bar = (**pit).CC() ? (**pit).CC()->id() : id2; unsigned int ix(0); bool order(false); do { if(id ==_incoming[ix]) { if(id1==_outgoingP[ix]&&id2==_outgoingV[ix]) { imode=ix; order=true; } if(id2==_outgoingP[ix]&&id1==_outgoingV[ix]) { imode=ix; order=false; } } if(idbar==_incoming[ix]&&imode<0) { if(id1bar==_outgoingP[ix]&&id2bar==_outgoingV[ix]) { imode=ix; order=true; } if(id2bar==_outgoingP[ix]&&id1bar==_outgoingV[ix]) { imode=ix; order=false; } } ++ix; } while(ix<_incoming.size()&&imode<0); coupling=_coupling[imode]*sqr(dm.parent()->mass()); mecode=8; return order; } void TensorMesonVectorPScalarDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // the rest of the parameters for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":OutgoingVector " << ix << " " << _outgoingV[ix] << "\n"; output << "newdef " << name() << ":OutgoingScalar " << ix << " " << _outgoingP[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV2 << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":OutgoingVector " << ix << " " << _outgoingV[ix] << "\n"; output << "insert " << name() << ":OutgoingScalar " << ix << " " << _outgoingP[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV2 << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/TensorMeson/Makefile.in���������������������������������������������������0000644�0001750�0001750�00000051670�11756461676�022355� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Decay/TensorMeson DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwTMDecay_la_LIBADD = am_HwTMDecay_la_OBJECTS = TensorMeson2PScalarDecayer.lo \ TensorMesonVectorPScalarDecayer.lo \ TensorMesonVectorVectorDecayer.lo HwTMDecay_la_OBJECTS = $(am_HwTMDecay_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwTMDecay_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(HwTMDecay_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwTMDecay_la_SOURCES) DIST_SOURCES = $(HwTMDecay_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwTMDecay.la HwTMDecay_la_SOURCES = \ TensorMeson2PScalarDecayer.cc TensorMeson2PScalarDecayer.h\ TensorMesonVectorPScalarDecayer.cc TensorMesonVectorPScalarDecayer.h \ TensorMesonVectorVectorDecayer.cc TensorMesonVectorVectorDecayer.h HwTMDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Decay/TensorMeson/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Decay/TensorMeson/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwTMDecay.la: $(HwTMDecay_la_OBJECTS) $(HwTMDecay_la_DEPENDENCIES) $(EXTRA_HwTMDecay_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwTMDecay_la_LINK) -rpath $(pkglibdir) $(HwTMDecay_la_OBJECTS) $(HwTMDecay_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TensorMeson2PScalarDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TensorMesonVectorPScalarDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TensorMesonVectorVectorDecayer.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/TensorMeson/TensorMeson2PScalarDecayer.cc���������������������������������0000644�0001750�0001750�00000036217�11754474774�025721� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TensorMeson2PScalarDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TensorMeson2PScalarDecayer class. // #include "TensorMeson2PScalarDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" using namespace Herwig; using namespace ThePEG::Helicity; void TensorMeson2PScalarDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) if(mode(ix)) _maxweight[ix] = mode(ix)->maxWeight(); } } TensorMeson2PScalarDecayer::TensorMeson2PScalarDecayer() : _incoming(48), _outgoing1(48), _outgoing2(48), _coupling(48), _maxweight(48) { ME(DecayMatrixElement(PDT::Spin2,PDT::Spin0,PDT::Spin0)); // a_2 -> eta pi _incoming[0] = 115; _outgoing1[0] = 221; _outgoing2[0] = 111; _coupling[0] = 10.90/GeV; _maxweight[0] = 1.7; _incoming[1] = 215; _outgoing1[1] = 221; _outgoing2[1] = 211; _coupling[1] = 10.90/GeV; _maxweight[1] = 1.7; // a_2 -> eta' pi _incoming[2] = 115; _outgoing1[2] = 331; _outgoing2[2] = 111; _coupling[2] = 9.92/GeV; _maxweight[2] = 1.9; _incoming[3] = 215; _outgoing1[3] = 331; _outgoing2[3] = 211; _coupling[3] = 9.92/GeV; _maxweight[3] = 1.9; // a_2 -> K K _incoming[4] = 115; _outgoing1[4] = 311; _outgoing2[4] = -311; _coupling[4] = 7.36/GeV; _maxweight[4] = 1.7; _incoming[5] = 115; _outgoing1[5] = 321; _outgoing2[5] = -321; _coupling[5] = 7.36/GeV; _maxweight[5] = 1.7; _incoming[6] = 215; _outgoing1[6] = 321; _outgoing2[6] = -311; _coupling[6] = 10.41/GeV; _maxweight[6] = 1.7; // f_2 -> pi pi _incoming[7] = 225; _outgoing1[7] = 211; _outgoing2[7] = -211; _coupling[7] = 18.73/GeV; _maxweight[7] = 1.7; _incoming[8] = 225; _outgoing1[8] = 111; _outgoing2[8] = 111; _coupling[8] = 13.24/GeV; _maxweight[8] = 1.7; // f_2 -> eta eta _incoming[9] = 225; _outgoing1[9] = 221; _outgoing2[9] = 221; _coupling[9] = 8.362/GeV; _maxweight[9] = 1.8; // f_2 -> KK _incoming[10] = 225; _outgoing1[10] = 321; _outgoing2[10] = -321; _coupling[10] = 11.03/GeV; _maxweight[10] = 2.; _incoming[11] = 225; _outgoing1[11] = 311; _outgoing2[11] = -311; _coupling[11] = 11.38/GeV; _maxweight[11] = 2.; // f'_2 -> KK _incoming[12] = 335; _outgoing1[12] = 321; _outgoing2[12] = -321; _coupling[12] = 14.65/GeV; _maxweight[12] = 1.65; _incoming[13] = 335; _outgoing1[13] = 311; _outgoing2[13] = -311; _coupling[13] = 14.65/GeV; _maxweight[13] = 1.65; // f'_2 -> eta eta _incoming[14] = 335; _outgoing1[14] = 221; _outgoing2[14] = 221; _coupling[14] = 9.15/GeV; _maxweight[14] = 1.7; // f'_2 -> pi pi _incoming[15] = 335; _outgoing1[15] = 211; _outgoing2[15] = -211; _coupling[15] = 0.860/GeV; _maxweight[15] = 1.7; _incoming[16] = 335; _outgoing1[16] = 111; _outgoing2[16] = 111; _coupling[16] = 0.608/GeV; _maxweight[16] = 1.7; // K_2 -> K eta _incoming[17] = 325; _outgoing1[17] = 321; _outgoing2[17] = 221; _coupling[17] = 1.52/GeV; _maxweight[17] = 1.8; _incoming[18] = 315; _outgoing1[18] = 311; _outgoing2[18] = 221; _coupling[18] = 1.52/GeV; _maxweight[18] = 1.8; // K_2 -> K pi _incoming[19] = 325; _outgoing1[19] = 321; _outgoing2[19] = 111; _coupling[19] = 8.30/GeV;_maxweight[19] = 1.65; _incoming[20] = 325; _outgoing1[20] = 311; _outgoing2[20] = 211; _coupling[20] = 11.74/GeV; _maxweight[20] = 1.65; _incoming[21] = 315; _outgoing1[21] = 311; _outgoing2[21] = 111; _coupling[21] = 8.68/GeV; _maxweight[21] = 1.65; _incoming[22] = 315; _outgoing1[22] = 321; _outgoing2[22] = -211; _coupling[22] = 12.28/GeV; _maxweight[22] = 1.65; // B_2 -> B pi _incoming[23] = 525; _outgoing1[23] = 521; _outgoing2[23] = 111; _coupling[23] = 27.23/GeV; _maxweight[23] = 1.65; _incoming[24] = 525; _outgoing1[24] = 511; _outgoing2[24] = 211; _coupling[24] = 38.52/GeV; _maxweight[24] = 1.65; _incoming[25] = 515; _outgoing1[25] = 511; _outgoing2[25] = 111; _coupling[25] = 27.16/GeV; _maxweight[25] = 1.65; _incoming[26] = 515; _outgoing1[26] = 521; _outgoing2[26] = -211; _coupling[26] = 38.62/GeV; _maxweight[26] = 1.65; // D_2 -> D pi _incoming[27] = 425; _outgoing1[27] = 421; _outgoing2[27] = 111; _coupling[27] = 18.07/GeV; _maxweight[27] = 1.7; _incoming[28] = 425; _outgoing1[28] = 411; _outgoing2[28] = -211; _coupling[28] = 25.56/GeV; _maxweight[28] = 1.7; _incoming[29] = 415; _outgoing1[29] = 411; _outgoing2[29] = 111; _coupling[29] = 14.91/GeV; _maxweight[29] = 1.7; _incoming[30] = 415; _outgoing1[30] = 421; _outgoing2[30] = 211; _coupling[30] = 21.09/GeV; _maxweight[30] = 1.7; // D_s2 _incoming[31] = 435; _outgoing1[31] = 421; _outgoing2[31] = 321; _coupling[31] = 23.39/GeV; _maxweight[31] = 1.7; _incoming[32] = 435; _outgoing1[32] = 411; _outgoing2[32] = 311; _coupling[32] = 23.39/GeV; _maxweight[32] = 1.7; // B_s2 _incoming[33] = 535; _outgoing1[33] = 521; _outgoing2[33] = -321; _coupling[33] = 45.43/GeV; _maxweight[33] = 1.7; _incoming[34] = 535; _outgoing1[34] = 511; _outgoing2[34] = -311; _coupling[34] = 48.84/GeV; _maxweight[34] = 1.7; // chi_c2 to pi pi _incoming[35] = 445; _outgoing1[35] = 211; _outgoing2[35] = -211; _coupling[35] = 0.0200/GeV; _maxweight[35] = 1.7; _incoming[36] = 445; _outgoing1[36] = 111; _outgoing2[36] = 111; _coupling[36] = 0.0141/GeV; _maxweight[36] = 1.7; // chi_c2 to K K _incoming[37] = 445; _outgoing1[37] = 321; _outgoing2[37] = -321; _coupling[37] = 0.056/GeV; _maxweight[37] = 1.7; _incoming[38] = 445; _outgoing1[38] = 311; _outgoing2[38] = -311; _coupling[38] = 0.056/GeV; _maxweight[38] = 1.7; // f_2 to sigma sigma _incoming[39] = 225; _outgoing1[39] = 9000221; _outgoing2[39] = 9000221; _coupling[39] = 104.1/GeV; _maxweight[39] = 60.; // pi_2 to sigma pi _incoming[40] = 10115; _outgoing1[40] = 9000221; _outgoing2[40] = 111; _coupling[40] = 15.3/GeV; _maxweight[40] = 10.; _incoming[41] = 10215; _outgoing1[41] = 9000221; _outgoing2[41] = 211; _coupling[41] = 15.3/GeV; _maxweight[41] = 10.; // eta_2 to a_0 pi _incoming[42] = 10225; _outgoing1[42] = 9000111; _outgoing2[42] = 111; _coupling[42] = 11.3/GeV; _maxweight[42] = 10.; _incoming[43] = 10225; _outgoing1[43] = 9000211; _outgoing2[43] = -211; _coupling[43] = 11.3/GeV; _maxweight[43] = 10.; // eta'_2 to a_0 pi _incoming[44] = 10335; _outgoing1[44] = 9000111; _outgoing2[44] = 111; _coupling[44] = 4.43/GeV; _maxweight[44] = 10.; _incoming[45] = 10335; _outgoing1[45] = 9000211; _outgoing2[45] = -211; _coupling[45] = 4.43/GeV; _maxweight[45] = 10.; // chi_c2(2P) to D D _incoming[46] = 100445; _outgoing1[46] = 411; _outgoing2[46] = -411; _coupling[46] = 22.3/GeV; _maxweight[46] = 1.7; _incoming[47] = 100445; _outgoing1[47] = 421; _outgoing2[47] = -421; _coupling[47] = 22.3/GeV; _maxweight[47] = 1.7; // initial size of the vectors _initsize=_incoming.size(); // intermediates generateIntermediates(false); } void TensorMeson2PScalarDecayer::doinit() { DecayIntegrator::doinit(); // check consistence of the parameters unsigned int isize=_incoming.size(); if(isize!=_outgoing1.size()||isize!=_outgoing2.size()|| isize!=_maxweight.size()||isize!=_coupling.size()) throw InitException() << "Inconsistent parameters TensorMeson2PScalarDecayer" << Exception::abortnow; // set up the integration channels vector<double> wgt(0); DecayPhaseSpaceModePtr mode; tPDVector extpart(3); for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0]=getParticleData(_incoming[ix]); extpart[1]=getParticleData(_outgoing1[ix]); extpart[2]=getParticleData(_outgoing2[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } int TensorMeson2PScalarDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=2) return -1; int id(parent->id()); int idbar = parent->CC() ? parent->CC()->id() : id; int id1(children[0]->id()); int id1bar = children[0]->CC() ? children[0]->CC()->id() : id1; int id2(children[1]->id()); int id2bar = children[1]->CC() ? children[1]->CC()->id() : id2; int imode(-1); unsigned int ix(0); cc=false; do { if(id ==_incoming[ix]) { if((id1 ==_outgoing1[ix]&&id2 ==_outgoing2[ix])|| (id2 ==_outgoing1[ix]&&id1 ==_outgoing2[ix])) imode=ix; } if(idbar==_incoming[ix]) { if((id1bar==_outgoing1[ix]&&id2bar==_outgoing2[ix])|| (id2bar==_outgoing1[ix]&&id1bar==_outgoing2[ix])) { imode=ix; cc=true; } } ++ix; } while(ix<_incoming.size()&&imode<0); return imode; } void TensorMeson2PScalarDecayer::persistentOutput(PersistentOStream & os) const { os << _incoming << _outgoing1 << _outgoing2 << _maxweight << ounit(_coupling,1/GeV); } void TensorMeson2PScalarDecayer::persistentInput(PersistentIStream & is, int) { is >> _incoming >> _outgoing1 >> _outgoing2 >> _maxweight >> iunit(_coupling,1/GeV); } ClassDescription<TensorMeson2PScalarDecayer> TensorMeson2PScalarDecayer::initTensorMeson2PScalarDecayer; // Definition of the static class description member. void TensorMeson2PScalarDecayer::Init() { static ClassDocumentation<TensorMeson2PScalarDecayer> documentation ("The TensorMeson2PScalarDecayer class is designed for the decay" " of a tensor meson to two (pseudo)-scalar mesons."); static ParVector<TensorMeson2PScalarDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &TensorMeson2PScalarDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<TensorMeson2PScalarDecayer,int> interfaceOutcoming1 ("FirstOutgoing", "The PDG code for the first outgoing particle", &TensorMeson2PScalarDecayer::_outgoing1, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<TensorMeson2PScalarDecayer,int> interfaceOutcoming2 ("SecondOutgoing", "The PDG code for the second outgoing particle", &TensorMeson2PScalarDecayer::_outgoing2, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<TensorMeson2PScalarDecayer,InvEnergy> interfaceCoupling ("Coupling", "The coupling for the decay mode", &TensorMeson2PScalarDecayer::_coupling, 1/GeV, 0, ZERO, ZERO, 1000./GeV, false, false, true); static ParVector<TensorMeson2PScalarDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &TensorMeson2PScalarDecayer::_maxweight, 0, 0, 0, 0., 100000., false, false, true); } // matrix elememt for the process double TensorMeson2PScalarDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // stuff for incoming particle if(meopt==Initialize) { _rho = RhoDMatrix(PDT::Spin2); TensorWaveFunction:: calculateWaveFunctions(_tensors,_rho,const_ptr_cast<tPPtr>(&inpart), incoming,false); } if(meopt==Terminate) { TensorWaveFunction::constructSpinInfo(_tensors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); // set up the spin information for the decay products for(unsigned int ix=0;ix<decay.size();++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return 0.; } // calculate the matrix element for(unsigned int ix=0;ix<5;++ix) { ME()(ix,0,0) = _coupling[imode()]/inpart.mass()* ((_tensors[ix]*decay[1]->momentum())*decay[0]->momentum()); } // // test of the answer // double me = newME.contract(_rho).real(); // Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.mass(),decay[0]->mass(), // decay[1]->mass()); // double test = Energy4(pow<4,1>(2*pcm))*sqr( _coupling[imode()]/inpart.mass())/120.; // cout << "testing matrix element for " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << me << " " << test << " " << (me-test)/(me+test) << endl; // return the answer return ME().contract(_rho).real(); } bool TensorMeson2PScalarDecayer::twoBodyMEcode(const DecayMode & dm,int & mecode, double & coupling) const { int imode(-1); int id(dm.parent()->id()); int idbar = dm.parent()->CC() ? dm.parent()->CC()->id() : id; ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id()); int id1bar = (**pit).CC() ? (**pit).CC()->id() : id1; ++pit; int id2((**pit).id()); int id2bar = (**pit).CC() ? (**pit).CC()->id() : id2; unsigned int ix(0); bool order(false); do { if(id ==_incoming[ix]) { if(id1==_outgoing1[ix]&&id2==_outgoing2[ix]) { imode=ix; order=true; } if(id2==_outgoing1[ix]&&id1==_outgoing2[ix]) { imode=ix; order=false; } } if(idbar==_incoming[ix]&&imode<0) { if(id1bar==_outgoing1[ix]&&id2bar==_outgoing2[ix]) { imode=ix; order=true; } if(id2bar==_outgoing1[ix]&&id1bar==_outgoing2[ix]) { imode=ix; order=false; } } ++ix; } while(ix<_incoming.size()&&imode<0); coupling=_coupling[imode]*dm.parent()->mass(); mecode=7; return order; } void TensorMeson2PScalarDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // the rest of the parameters for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":FirstOutgoing " << ix << " " << _outgoing1[ix] << "\n"; output << "newdef " << name() << ":SecondOutgoing " << ix << " " << _outgoing2[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":FirstOutgoing " << ix << " " << _outgoing1[ix] << "\n"; output << "insert " << name() << ":SecondOutgoing " << ix << " " << _outgoing2[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/TensorMeson/TensorMesonVectorVectorDecayer.cc�����������������������������0000644�0001750�0001750�00000033421�11754474774�026731� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TensorMesonVectorVectorDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TensorMesonVectorVectorDecayer class. // #include "TensorMesonVectorVectorDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; void TensorMesonVectorVectorDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) if(mode(ix)) _maxweight[ix] = mode(ix)->maxWeight(); } } void TensorMesonVectorVectorDecayer::doinit() { DecayIntegrator::doinit(); // check consistence of the parameters unsigned int isize=_incoming.size(); if(isize!=_outgoing1.size()||isize!=_outgoing2.size()|| isize!=_maxweight.size()||isize!=_coupling.size()) throw InitException() << "Inconsistent parameters TensorMesonVectorVectorDecayer" << Exception::abortnow; // set up the integration channels vector<double> wgt(0); tPDVector extpart(3); DecayPhaseSpaceModePtr mode; for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0]=getParticleData(_incoming[ix]); extpart[1]=getParticleData(_outgoing1[ix]); extpart[2]=getParticleData(_outgoing2[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } TensorMesonVectorVectorDecayer::TensorMesonVectorVectorDecayer() : _incoming(22), _outgoing1(22), _outgoing2(22), _coupling(22), _maxweight(22) { ME(DecayMatrixElement(PDT::Spin2,PDT::Spin1,PDT::Spin1)); // a_2 -> gamma gamma _incoming[0] = 115; _outgoing1[0] = 22; _outgoing2[0] = 22; _coupling[0] = 0.00727/GeV; _maxweight[0] = 1.7; // f_2 -> gamma gamma _incoming[1] = 225; _outgoing1[1] = 22; _outgoing2[1] = 22; _coupling[1] = 0.01253/GeV; _maxweight[1] = 1.7; // f'_2 -> gamma gamma _incoming[2] = 335; _outgoing1[2] = 22; _outgoing2[2] = 22; _coupling[2] = 0.00161/GeV; _maxweight[2] = 1.7; // chi_b(2P) decays _incoming[3] = 100555; _outgoing1[3] = 553; _outgoing2[3] = 223; _coupling[3] = 0.0118/GeV; _maxweight[3] = 1.8; _incoming[4] = 100555; _outgoing1[4] = 553; _outgoing2[4] = 22; _coupling[4] = 0.0172/GeV; _maxweight[4] = 1.7; _incoming[5] = 100555; _outgoing1[5] = 100553; _outgoing2[5] = 22; _coupling[5] = 0.145/GeV; _maxweight[5] = 1.7; _incoming[6] = 100555; _outgoing1[6] = 333; _outgoing2[6] = 333; _coupling[6] = 0.00483/GeV; _maxweight[6] = 18.0; // chi_c decays _incoming[7] = 445; _outgoing1[7] = 443; _outgoing2[7] = 22; _coupling[7] = 0.243/GeV; _maxweight[7] = 1.7; _incoming[8] = 445; _outgoing1[8] = 323; _outgoing2[8] = -323; _coupling[8] = 0.00560/GeV; _maxweight[8] = 15.; _incoming[9] = 445; _outgoing1[9] = 313; _outgoing2[9] = -313; _coupling[9] = 0.00560/GeV; _maxweight[9] = 20.; _incoming[10] = 445; _outgoing1[10] = 333; _outgoing2[10] = 333; _coupling[10] = 0.00418/GeV; _maxweight[10] = 10.; _incoming[11] = 445; _outgoing1[11] = 22; _outgoing2[11] = 22; _coupling[11] = 0.00122/GeV; _maxweight[11] = 1.7; // chi_b(1P) decays _incoming[12] = 555; _outgoing1[12] = 553; _outgoing2[12] = 22; _coupling[12] = 0.0683/GeV; _maxweight[12] = 1.8; // a_2 omega rho _incoming[13] = 115; _outgoing1[13] = 223; _outgoing2[13] = 113; _coupling[13] = 23.1/GeV; _maxweight[13] = 15.; _incoming[14] = 215; _outgoing1[14] = 223; _outgoing2[14] = 213; _coupling[14] = 23.1/GeV; _maxweight[14] = 21.; // f_2 rho rho _incoming[15] = 225; _outgoing1[15] = 113; _outgoing2[15] = 113; _coupling[15] = 11.7/GeV; _maxweight[15] = 26.; _incoming[16] = 225; _outgoing1[16] = 213; _outgoing2[16] = -213; _coupling[16] = 16.5/GeV; _maxweight[16] = 26.; // K_2-> K* rho _incoming[17] = 315; _outgoing1[17] = 113; _outgoing2[17] = 313; _coupling[17] = 13.42/GeV; _maxweight[17] = 30.; _incoming[18] = 315; _outgoing1[18] = -213; _outgoing2[18] = 323; _coupling[18] = 18.98/GeV; _maxweight[18] = 30.; _incoming[19] = 325; _outgoing1[19] = 113; _outgoing2[19] = 323; _coupling[19] = 13.42/GeV; _maxweight[19] = 30.; _incoming[20] = 325; _outgoing1[20] = 213; _outgoing2[20] = 313; _coupling[20] = 18.98/GeV; _maxweight[20] = 30.; _incoming[21] = 445; _outgoing1[21] = 223; _outgoing2[21] = 223; _coupling[21] = 0.00389/GeV; _maxweight[21] = 12.; // initial size of the vectors _initsize = _incoming.size(); // intermediates generateIntermediates(false); } int TensorMesonVectorVectorDecayer::modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const { if(children.size()!=2) return -1; int id(parent->id()); int idbar = parent->CC() ? parent->CC()->id() : id; int id1(children[0]->id()); int id1bar = children[0]->CC() ? children[0]->CC()->id() : id1; int id2(children[1]->id()); int id2bar = children[1]->CC() ? children[1]->CC()->id() : id2; int imode(-1); unsigned int ix(0); cc=false; do { if(id ==_incoming[ix]) { if((id1 ==_outgoing1[ix]&&id2 ==_outgoing2[ix])|| (id2 ==_outgoing1[ix]&&id1 ==_outgoing2[ix])) imode=ix; } if(idbar==_incoming[ix]) { if((id1bar==_outgoing1[ix]&&id2bar==_outgoing2[ix])|| (id2bar==_outgoing1[ix]&&id1bar==_outgoing2[ix])) { imode=ix; cc=true; } } ++ix; } while(ix<_incoming.size()&&imode<0); return imode; } void TensorMesonVectorVectorDecayer::persistentOutput(PersistentOStream & os) const { os << _incoming << _outgoing1 << _outgoing2 << _maxweight << ounit(_coupling,1/GeV); } void TensorMesonVectorVectorDecayer::persistentInput(PersistentIStream & is, int) { is >> _incoming >> _outgoing1 >> _outgoing2 >> _maxweight >> iunit(_coupling,1/GeV); } ClassDescription<TensorMesonVectorVectorDecayer> TensorMesonVectorVectorDecayer::initTensorMesonVectorVectorDecayer; // Definition of the static class description member. void TensorMesonVectorVectorDecayer::Init() { static ClassDocumentation<TensorMesonVectorVectorDecayer> documentation ("The TensorMesonVectorVectorDecayer class performs the" " decay of a tensor meson to two scalar mesons."); static ParVector<TensorMesonVectorVectorDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &TensorMesonVectorVectorDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<TensorMesonVectorVectorDecayer,int> interfaceOutcoming1 ("FirstOutgoing", "The PDG code for the first outgoing particle", &TensorMesonVectorVectorDecayer::_outgoing1, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<TensorMesonVectorVectorDecayer,int> interfaceOutcoming2 ("SecondOutgoing", "The PDG code for the second outgoing particle", &TensorMesonVectorVectorDecayer::_outgoing2, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<TensorMesonVectorVectorDecayer,InvEnergy> interfaceCoupling ("Coupling", "The coupling for the decay mode", &TensorMesonVectorVectorDecayer::_coupling, 1/GeV, 0, ZERO, ZERO, 1000./GeV, false, false, true); static ParVector<TensorMesonVectorVectorDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &TensorMesonVectorVectorDecayer::_maxweight, 0, 0, 0, 0., 100., false, false, true); } // matrix elememt for the process double TensorMesonVectorVectorDecayer::me2(const int,const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // photons ?? bool photon[2]; for(unsigned int ix=0;ix<2;++ix) photon[ix]=decay[ix]->id()==ParticleID::gamma; // stuff for incoming particle if(meopt==Initialize) { _rho = RhoDMatrix(PDT::Spin2); TensorWaveFunction:: calculateWaveFunctions(_tensors,_rho,const_ptr_cast<tPPtr>(&inpart), incoming,false); } if(meopt==Terminate) { TensorWaveFunction::constructSpinInfo(_tensors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); // set up the spin information for the decay products for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction::constructSpinInfo(_vectors[ix],decay[ix], outgoing,true,photon[ix]); return 0.; } for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction::calculateWaveFunctions(_vectors[ix],decay[ix], outgoing,photon[ix]); // compute some useful dot products etc complex<Energy> p1eps2[3],p2eps1[3]; Energy2 p1p2(decay[0]->momentum()*decay[1]->momentum()); for(unsigned int ix=0;ix<3;++ix) { p1eps2[ix]=_vectors[1][ix]*decay[0]->momentum(); p2eps1[ix]=_vectors[0][ix]*decay[1]->momentum(); } // compute the traces and useful dot products Complex trace[5]; complex<Energy2> pboth[5]; LorentzPolarizationVectorE pleft[2][5],pright[2][5]; for(unsigned int ix=0;ix<5;++ix) { trace[ix]=_tensors[ix].xx() + _tensors[ix].yy() + _tensors[ix].zz() + _tensors[ix].tt(); pleft[0][ix] =(-decay[0]->momentum())*_tensors[ix]; pleft[1][ix] =(-decay[1]->momentum())*_tensors[ix]; pright[0][ix]=_tensors[ix]*(-decay[0]->momentum()); pright[1][ix]=_tensors[ix]*(-decay[1]->momentum()); pboth[ix]=((pleft[0][ix]+pright[0][ix])*decay[1]->momentum()); } // loop to compute the matrix element Complex e1e2; LorentzTensor<Energy2> te1e2; InvEnergy2 fact(_coupling[imode()]/inpart.mass()); complex<Energy2> me; for(unsigned int ix=0;ix<3;++ix) { for(unsigned iy=0;iy<3;++iy) { e1e2=_vectors[0][ix].dot(_vectors[1][iy]); te1e2=complex<Energy2>(p1p2)* (LorentzTensor<double>(_vectors[0][ix],_vectors[1][iy])+ LorentzTensor<double>(_vectors[1][iy],_vectors[0][ix])); for(unsigned int inhel=0;inhel<5;++inhel) { me = (_tensors[inhel]*te1e2 -p2eps1[ix]*(_vectors[1][iy].dot(pleft[0][inhel]+pright[0][inhel])) -p1eps2[iy]*(_vectors[0][ix].dot(pleft[1][inhel]+pright[1][inhel])) +pboth[inhel]*e1e2 +(p2eps1[ix]*p1eps2[iy]-e1e2*p1p2)*trace[inhel]); ME()(inhel,ix,iy)=fact*me; } } } // // testing the matrix element // double metest = ME().contract(_rho).real(); // Energy2 m02(sqr(inpart.mass())),m12(sqr(decay[0]->mass())),m22(sqr(decay[1]->mass())); // Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.mass(),decay[0]->mass(), // decay[1]->mass()); // Energy2 pcm2(sqr(pcm)); // double test = 4./15./m02/m02*sqr(_coupling[imode()])* // (3.*m02*(8.*pcm2*pcm2+5.*(m12*m22+pcm2*(m12+m22)))-5.*(m12-m22)*(m12-m22)*pcm2); // cout << "testing the matrix element VV " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << metest << " " << test << " " << (metest-test)/(metest+test) << endl; // return the answer return ME().contract(_rho).real(); } bool TensorMesonVectorVectorDecayer::twoBodyMEcode(const DecayMode & dm,int & mecode, double & coupling) const { int imode(-1); int id(dm.parent()->id()); int idbar = dm.parent()->CC() ? dm.parent()->CC()->id() : id; ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id()); int id1bar = (**pit).CC() ? (**pit).CC()->id() : id1; ++pit; int id2((**pit).id()); int id2bar = (**pit).CC() ? (**pit).CC()->id() : id2; unsigned int ix(0); do { if(id ==_incoming[ix]) { if(id1==_outgoing1[ix]&&id2==_outgoing2[ix]) { imode=ix; } if(id2==_outgoing1[ix]&&id1==_outgoing2[ix]) { imode=ix; } } if(idbar==_incoming[ix]&&imode<0) { if(id1bar==_outgoing1[ix]&&id2bar==_outgoing2[ix]) { imode=ix; } if(id2bar==_outgoing1[ix]&&id1bar==_outgoing2[ix]) { imode=ix; } } ++ix; } while(ix<_incoming.size()&&imode<0); coupling=_coupling[imode]*dm.parent()->mass(); mecode=9; return id1==_outgoing1[imode]&&id2==_outgoing2[imode]; } void TensorMesonVectorVectorDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // the rest of the parameters for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":FirstOutgoing " << ix << " " << _outgoing1[ix] << "\n"; output << "newdef " << name() << ":SecondOutgoing " << ix << " " << _outgoing2[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":FirstOutgoing " << ix << " " << _outgoing1[ix] << "\n"; output << "insert " << name() << ":SecondOutgoing " << ix << " " << _outgoing2[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/TensorMeson/TensorMesonVectorVectorDecayer.h������������������������������0000644�0001750�0001750�00000017414�11754474774�026577� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TensorMesonVectorVectorDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TensorMesonVectorVectorDecayer_H #define HERWIG_TensorMesonVectorVectorDecayer_H // // This is the declaration of the TensorMesonVectorVectorDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzTensor.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The TensorMesonVectorVectorDecayer class is designed to simulate * the decay of a tensor meson to two spin-1 particles. In practice, at least * for the light tensor mesons, this is only the decay of a tensor meson to two * photons. In principle for bottom and charm tensors this may be the decay to * two vector mesons an d it is used to simulate three and four body * \f$a_2\f$, \f$f_2\f$ and \f$K_2\f$ decays. * * The form of the matrix element is based on the perturbative matrix element * for the decay of a graviton to two vector bosons with the neglect of a mass term * * \f[ \mathcal{M} = g\epsilon_{\mu\nu}\left[ * \left(\epsilon_{1\alpha} p_1^\mu - \epsilon_1^\mu p_{1\alpha}\right) * \left(\epsilon_2^\alpha p_2^\nu - \epsilon_2^\nu p_2^\alpha\right) * +\left(\epsilon_{1\alpha} p_1^\nu - \epsilon_1^\nu p_{1\alpha}\right) * \left(\epsilon_2^\alpha p_2^\mu - \epsilon_2^\nu p_2^\alpha\right) * -\frac12g^{\mu\nu} * \left(\epsilon_{1\alpha} p_{1\beta}- \epsilon_{1\beta} p_{1\alpha}\right) * \left(\epsilon_2^\alpha p_2^\beta - \epsilon_2^\beta p_2^\alpha\right)\right] \f] * in such a way that it vanishes if the polarizations of the outgoing vectors are * replaced with their momenta. * * The incoming tensor mesons together with their decay products and the coupling * \f$g\f$ can be specified using the interfaces for the class. The maximum weights * for the decays can be calculated using the Initialize interface of the * DecayIntegrator class or specified using the interface. * * The incoming and outgoing particles, couplings and maximum weights for * many of the common \f$T\to VV\f$ decays are specified in the default * constructor. * * @see DecayIntegrator * * @see \ref TensorMesonVectorVectorDecayerInterfaces "The interfaces" * defined for TensorMesonVectorVectorDecayer. * */ class TensorMesonVectorVectorDecayer: public DecayIntegrator { public: /** * Default constructor. */ TensorMesonVectorVectorDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 9. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<TensorMesonVectorVectorDecayer> initTensorMesonVectorVectorDecayer; /** * Private and non-existent assignment operator. */ TensorMesonVectorVectorDecayer & operator=(const TensorMesonVectorVectorDecayer &); private: /** * the PDG codes for the incoming particles */ vector<int> _incoming; /** * the PDG codes for the first outgoing particle */ vector<int> _outgoing1; /** * the PDG codes for the second outgoing particle */ vector<int> _outgoing2; /** * the coupling for the decay */ vector<InvEnergy> _coupling; /** * the maximum weight for the decay */ vector<double> _maxweight; /** * Initial size of the vectors */ unsigned int _initsize; /** * Storage of polarization tensors to try and increase * speed */ mutable vector<Helicity::LorentzTensor<double> > _tensors; /** * Storage of the polarization vectors */ mutable vector<Helicity::LorentzPolarizationVector > _vectors[2]; /** * Storage of the \f$\rho\f$ matrix */ mutable RhoDMatrix _rho; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of Herwig::TensorMesonVectorVectorDecayer. */ template <> struct BaseClassTrait<Herwig::TensorMesonVectorVectorDecayer,1> { /** Typedef of the base class of TensorMesonVectorVectorDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::TensorMesonVectorVectorDecayer> : public ClassTraitsBase<Herwig::TensorMesonVectorVectorDecayer> { /** Return the class name.*/ static string className() { return "Herwig::TensorMesonVectorVectorDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwTMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_TensorMesonVectorVectorDecayer_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/TensorMeson/TensorMesonVectorPScalarDecayer.h�����������������������������0000644�0001750�0001750�00000016231�11754474774�026656� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TensorMesonVectorPScalarDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TensorMesonVectorPScalarDecayer_H #define HERWIG_TensorMesonVectorPScalarDecayer_H // // This is the declaration of the TensorMesonVectorPScalarDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>TensorMesonVectorPScalarDecayer</code> class handles the decay of * a tensor meson to a vector and a pseudoscalar. Examples of this decay * are \f$a_2\to\rho\pi\f$ or \f$a_2 \to\pi \gamma\f$. The matrix element is * given by * \f[\mathcal{M}=\epsilon_T^{\mu\nu}p_{P,\mu} \epsilon_{\nu\alpha\beta\gamma} * p_V^\alpha \epsilon_V^\beta p_P^\gamma,\f] * where \f$p_P\f$ is the momentum of the pseudoscalar meson, \f$p_V\f$ is * the momentum of the vector, \f$\epsilon_T\f$ is the polarization tensor of the * decaying meson and \f$\epsilon_V\f$ is the polarization vector of the outgoing * vector meson. * * The incoming tensor mesons together with their decay products and the coupling * \f$g\f$ can be specified using the interfaces for the class. The maximum weights * for the decays can be calculated using the Initialize interface of the * DecayIntegrator class or specified using the interface. * * The incoming and outgoing particles, couplings and maximum weights for * many of the common \f$T\to PV\f$ decays are specified in the default * constructor. * * @see DecayIntegrator * @see \ref TensorMesonVectorPScalarDecayerInterfaces "The interfaces" * defined for TensorMesonVectorPScalarDecayer. */ class TensorMesonVectorPScalarDecayer: public DecayIntegrator { public: /** * Default constructor. */ TensorMesonVectorPScalarDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 8. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<TensorMesonVectorPScalarDecayer> initTensorMesonVectorPScalarDecayer; /** * Private and non-existent assignment operator. */ TensorMesonVectorPScalarDecayer & operator=(const TensorMesonVectorPScalarDecayer &); private: /** * PDG codes for the incoming particles */ vector<int> _incoming; /** * PDG codes for the outgoing vector */ vector<int> _outgoingV; /** * PDG codes for the outgoing pseudoscalar */ vector<int> _outgoingP; /** * coupling for the decay */ vector<InvEnergy2> _coupling; /** * max weight ofr the decay */ vector<double> _maxweight; /** * Initial size of the vectors */ unsigned int _initsize; /** * Storage of polarization tensors to try and increase * speed */ mutable vector<Helicity::LorentzTensor<double> > _tensors; /** * Storage of the polarization vectors */ mutable vector<Helicity::LorentzPolarizationVector> _vectors; /** * Storage of the \f$\rho\f$ matrix */ mutable RhoDMatrix _rho; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of Herwig::TensorMesonVectorPScalarDecayer. */ template <> struct BaseClassTrait<Herwig::TensorMesonVectorPScalarDecayer,1> { /** Typedef of the base class of TensorMesonVectorPScalarDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::TensorMesonVectorPScalarDecayer> : public ClassTraitsBase<Herwig::TensorMesonVectorPScalarDecayer> { /** Return the class name.*/ static string className() { return "Herwig::TensorMesonVectorPScalarDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwTMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_TensorMesonVectorPScalarDecayer_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/TensorMeson/Makefile.am���������������������������������������������������0000644�0001750�0001750�00000000503�11754474774�022332� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwTMDecay.la HwTMDecay_la_SOURCES = \ TensorMeson2PScalarDecayer.cc TensorMeson2PScalarDecayer.h\ TensorMesonVectorPScalarDecayer.cc TensorMesonVectorPScalarDecayer.h \ TensorMesonVectorVectorDecayer.cc TensorMesonVectorVectorDecayer.h HwTMDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:0:0 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/TensorMeson/TensorMeson2PScalarDecayer.h����������������������������������0000644�0001750�0001750�00000015463�11754474774�025563� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TensorMeson2PScalarDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TensorMeson2PScalarDecayer_H #define HERWIG_TensorMeson2PScalarDecayer_H // // This is the declaration of the TensorMeson2PScalarDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>TensorMeson2PScalarDecayer</code> class is designed for the decay * of a tensor meson to two pseudoscalars via matrix element which takes the form * \f[ \mathcal{M} = g \epsilon^{\mu\nu} p_{1,\mu}p_{2,\nu} \f] * where \f$\epsilon^{\mu\nu}\f$ is the polarization tensor of the decaying tensor * meson, $p_{1,2}$ are the momenta of the decay products and \f$g\f$ is the coupling. * * It can also be used for the decay of a tensor to two scalar mesons although * this rarely happens in practice. * * The incoming tensor mesons together with their decay products and the coupling * \f$g\f$ can be specified using the interfaces for the class. The maximum weights * for the decays can be calculated using the Initialize interface of the * DecayIntegrator class or specified using the interface. * * The incoming and outgoing particles, couplings and maximum weights for * many of the common \f$T\to PP\f$ decays are specified in the default * constructor. * * @see DecayIntegrator * * @see \ref TensorMeson2PScalarDecayerInterfaces "The interfaces" * defined for TensorMeson2PScalarDecayer. * */ class TensorMeson2PScalarDecayer: public DecayIntegrator { public: /** * Default constructor. */ TensorMeson2PScalarDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 7. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<TensorMeson2PScalarDecayer> initTensorMeson2PScalarDecayer; /** * Private and non-existent assignment operator. */ TensorMeson2PScalarDecayer & operator=(const TensorMeson2PScalarDecayer &); private: /** * the PDG codes for the incoming particles */ vector<int> _incoming; /** * the PDG codes for first outgoing particle */ vector<int> _outgoing1; /** * the PDG codes for second outgoing particle */ vector<int> _outgoing2; /** * the coupling for the decay */ vector<InvEnergy> _coupling; /** * the maximum weight for the decay */ vector<double> _maxweight; /** * Initial size of the vectors */ unsigned int _initsize; /** * Storage of polarization tensors to try and increase * speed */ mutable vector<Helicity::LorentzTensor<double> > _tensors; /** * Storage of the \f$\rho\f$ matrix */ mutable RhoDMatrix _rho; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of TensorMeson2PScalarDecayer. */ template <> struct BaseClassTrait<Herwig::TensorMeson2PScalarDecayer,1> { /** Typedef of the base class of TensorMeson2PScalarDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::TensorMeson2PScalarDecayer> : public ClassTraitsBase<Herwig::TensorMeson2PScalarDecayer> { /** Return the class name.*/ static string className() { return "Herwig::TensorMeson2PScalarDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwTMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_TensorMeson2PScalarDecayer_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/HwDecayerBase.fh����������������������������������������������������������0000644�0001750�0001750�00000000477�11754474774�021021� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the HwDecayerBase class. // #ifndef ThePEG_HwDecayerBase_FH #define ThePEG_HwDecayerBase_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; class HwDecayerBase; ThePEG_DECLARE_POINTERS(HwDecayerBase,HwDecayerBasePtr); } #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/��������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464203�020254� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMesonVectorPScalarDecayer.cc����������������������������0000644�0001750�0001750�00000047150�11754474773�026777� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMesonVectorPScalarDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the VectorMesonVectorPScalarDecayer class. // #include "VectorMesonVectorPScalarDecayer.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Helicity/VectorSpinInfo.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/epsilon.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG::Helicity; void VectorMesonVectorPScalarDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) { if(mode(ix)) _maxweight[ix] = mode(ix)->maxWeight(); } } } void VectorMesonVectorPScalarDecayer::doinit() { DecayIntegrator::doinit(); // check consistency of the parameters unsigned int isize=_incoming.size(); if(isize!=_outgoingV.size()||isize!=_outgoingP.size()|| isize!=_maxweight.size()||isize!=_coupling.size()) throw InitException() << "Inconsistent parameters in " << "VectorMesonVectorPScalarDecayer" << Exception::runerror; // set up the integration channels vector<double> wgt(0); tPDVector extpart(3); DecayPhaseSpaceModePtr mode; for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0]=getParticleData(_incoming[ix]); extpart[1]=getParticleData(_outgoingV[ix]); extpart[2]=getParticleData(_outgoingP[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } VectorMesonVectorPScalarDecayer::VectorMesonVectorPScalarDecayer() : _coupling(73), _incoming(73), _outgoingV(73), _outgoingP(73), _maxweight(73) { ME(DecayMatrixElement(PDT::Spin1,PDT::Spin1,PDT::Spin0)); // intermediates generateIntermediates(false); // rho -> gamma pi modes _incoming[0] = 113; _outgoingV[0] = 22; _outgoingP[0] = 111; _coupling[0] = 0.2527/GeV; _maxweight[0] = 1.7; _incoming[1] = 213; _outgoingV[1] = 22; _outgoingP[1] = 211; _coupling[1] = 0.2210/GeV; _maxweight[1] = 1.7; // rho -> gamma eta mode _incoming[2] = 113; _outgoingV[2] = 22; _outgoingP[2] = 221; _coupling[2] = 0.492/GeV; _maxweight[2] = 1.7; // omega -> gamma pi _incoming[3] = 223; _outgoingV[3] = 22; _outgoingP[3] = 111; _coupling[3] = 0.7279465/GeV; _maxweight[3] = 1.7; // omega -> gamma eta _incoming[4] = 223; _outgoingV[4] = 22; _outgoingP[4] = 221; _coupling[4] = 0.143/GeV; _maxweight[4] = 1.7; // phi -> gamma pi _incoming[5] = 333; _outgoingV[5] = 22; _outgoingP[5] = 111; _coupling[5] = 0.0397/GeV; _maxweight[5] = 1.7; // phi -> gamma eta _incoming[6] = 333; _outgoingV[6] = 22; _outgoingP[6] = 221; _coupling[6] = 0.212/GeV; _maxweight[6] = 1.7; // phi -> gamma eta' _incoming[7] = 333; _outgoingV[7] = 22; _outgoingP[7] = 331; _coupling[7] = 0.219/GeV; _maxweight[7] = 1.8; // phi -> omega pi _incoming[8] = 333; _outgoingV[8] = 223; _outgoingP[8] = 111; _coupling[8] = 0.0417/GeV; _maxweight[8] = 1.9; // phi' -> K* K _incoming[9] = 100333; _outgoingV[9] = 323; _outgoingP[9] = -321; _coupling[9] = 3.934/GeV; _maxweight[9] = 5.; _incoming[10] = 100333; _outgoingV[10] = 313; _outgoingP[10] = -311; _coupling[10] = 4.011/GeV; _maxweight[10] = 5.; // K* -> gamma K _incoming[11] = 313; _outgoingV[11] = 22; _outgoingP[11] = 311; _coupling[11] = 0.384/GeV; _maxweight[11] = 1.7; _incoming[12] = 323; _outgoingV[12] = 22; _outgoingP[12] = 321; _coupling[12] = 0.253/GeV; _maxweight[12] = 1.7; // d* decay _incoming[13] = 423; _outgoingV[13] = 22; _outgoingP[13] = 421; _coupling[13] = 0.616/GeV; _maxweight[13] = 1.7; _incoming[14] = 413; _outgoingV[14] = 22; _outgoingP[14] = 411; _coupling[14] = 0.152/GeV; _maxweight[14] = 1.7; // D_s* decays _incoming[15] = 433; _outgoingV[15] = 22; _outgoingP[15] = 431; _coupling[15] = 0.764/GeV; _maxweight[15] = 1.7; // B_s* decays _incoming[16] = 533; _outgoingV[16] = 22; _outgoingP[16] = 531; _coupling[16] = 0.248/GeV; _maxweight[16] = 1.7; // B_c* decays _incoming[17] = 543; _outgoingV[17] = 22; _outgoingP[17] = 541; _coupling[17] = 0.266/GeV; _maxweight[17] = 1.7; // B* decay _incoming[18] = 523; _outgoingV[18] = 22; _outgoingP[18] = 521; _coupling[18] = 0.553/GeV; _maxweight[18] = 1.7; _incoming[19] = 513; _outgoingV[19] = 22; _outgoingP[19] = 511; _coupling[19] = 0.310/GeV; _maxweight[19] = 1.7; // rho'' eta rho _incoming[20] = 30113; _outgoingV[20] = 113; _outgoingP[20] = 221; _coupling[20] = 2.663/GeV; _maxweight[20] = 4.; _incoming[21] = 30213; _outgoingV[21] = 213; _outgoingP[21] = 221; _coupling[21] = 2.663/GeV; _maxweight[21] = 4.; // rho '' K* K _incoming[22] = 30113; _outgoingV[22] = 323; _outgoingP[22] = -321; _coupling[22] = 0.894/GeV; _maxweight[22] = 5.; _incoming[23] = 30113; _outgoingV[23] = 313; _outgoingP[23] = -311; _coupling[23] = 0.908/GeV; _maxweight[23] = 5.; _incoming[24] = 30213; _outgoingV[24] = 323; _outgoingP[24] = -311; _coupling[24] = 1.265/GeV; _maxweight[24] = 5.; _incoming[25] = 30213; _outgoingV[25] = -313; _outgoingP[25] = 321; _coupling[25] = 1.273/GeV; _maxweight[25] = 5.; // omega'' rho pi _incoming[26] = 30223; _outgoingV[26] = 213; _outgoingP[26] = -211; _coupling[26] = 2.996/GeV; _maxweight[26] = 3.5; _incoming[27] = 30223; _outgoingV[27] = 113; _outgoingP[27] = 111; _coupling[27] = 2.996/GeV; _maxweight[27] = 3.5; // omega' rho pi _incoming[28] = 100223; _outgoingV[28] = 213; _outgoingP[28] = -211; _coupling[28] = 4.507/GeV; _maxweight[28] = 4.; _incoming[29] = 100223; _outgoingV[29] = 113; _outgoingP[29] = 111; _coupling[29] = 4.507/GeV; _maxweight[29] = 4.; // K*''->K* pi decays _incoming[30] = 30313; _outgoingV[30] = 323; _outgoingP[30] = -211; _coupling[30] = 3.36/GeV; _maxweight[30] = 4.; _incoming[31] = 30313; _outgoingV[31] = 313; _outgoingP[31] = 111; _coupling[31] = 2.38/GeV; _maxweight[31] = 4.; _incoming[32] = 30323; _outgoingV[32] = 313; _outgoingP[32] = 211; _coupling[32] = 3.36/GeV; _maxweight[32] = 4.; _incoming[33] = 30323; _outgoingV[33] = 323; _outgoingP[33] = 111; _coupling[33] = 2.38/GeV; _maxweight[33] = 4.; // K*''->K rho decays _incoming[34] = 30313; _outgoingP[34] = 321; _outgoingV[34] = -213; _coupling[34] = 4.159/GeV; _maxweight[34] = 3.; _incoming[35] = 30313; _outgoingP[35] = 311; _outgoingV[35] = 113; _coupling[35] = 2.939/GeV; _maxweight[35] = 3.; _incoming[36] = 30323; _outgoingP[36] = 311; _outgoingV[36] = 213; _coupling[36] = 4.159/GeV; _maxweight[36] = 3.; _incoming[37] = 30323; _outgoingP[37] = 321; _outgoingV[37] = 113; _coupling[37] = 2.939/GeV; _maxweight[37] = 3.; // K*' decays _incoming[38] = 100313; _outgoingV[38] = 323; _outgoingP[38] = -211; _coupling[38] = 9.469/GeV; _maxweight[38] = 6.; _incoming[39] = 100313; _outgoingV[39] = 313; _outgoingP[39] = 111; _coupling[39] = 6.781/GeV; _maxweight[39] = 6.; _incoming[40] = 100323; _outgoingV[40] = 313; _outgoingP[40] = 211; _coupling[40] = 9.469/GeV; _maxweight[40] = 6.; _incoming[41] = 100323; _outgoingV[41] = 323; _outgoingP[41] = 111; _coupling[41] = 6.781/GeV; _maxweight[41] = 6.; // J/psi -> gamma eta_c decay _incoming[42] = 443; _outgoingV[42] = 22; _outgoingP[42] = 441; _coupling[42] = 0.149/GeV; _maxweight[42] = 30.; // J/psi -> gamma eta' decay _incoming[43] = 443; _outgoingV[43] = 22; _outgoingP[43] = 331; _coupling[43] = 0.00250/GeV; _maxweight[43] = 1.7; // J/psi -> rho pi decay _incoming[44] = 443; _outgoingV[44] = 213; _outgoingP[44] = -211; _coupling[44] = 0.00274/GeV; _maxweight[44] = 3.3; _incoming[45] = 443; _outgoingV[45] = 113; _outgoingP[45] = 111; _coupling[45] = 0.00274/GeV; _maxweight[45] = 3.3; // J/psi -> K* K decay _incoming[46] = 443; _outgoingV[46] = 323; _outgoingP[46] = -321; _coupling[46] = 0.00180/GeV; _maxweight[46] = 6.; _incoming[47] = 443; _outgoingV[47] = 313; _outgoingP[47] = -311; _coupling[47] = 0.00180/GeV; _maxweight[47] = 6.; // J/psi -> omega eta decay _incoming[48] = 443; _outgoingV[48] = 223; _outgoingP[48] = 221; _coupling[48] = 0.00154/GeV; _maxweight[48] = 6.; // J/psi -> gamma eta decay _incoming[49] = 443; _outgoingV[49] = 22; _outgoingP[49] = 221; _coupling[49] = 0.00103/GeV; _maxweight[49] = 1.7; // J/psi -> phi eta decay _incoming[50] = 443; _outgoingV[50] = 333; _outgoingP[50] = 221; _coupling[50] = 0.00110/GeV; _maxweight[50] = 5.5; // J/psi -> phi eta' decay _incoming[51] = 443; _outgoingV[51] = 333; _outgoingP[51] = 331; _coupling[51] = 0.00085/GeV; _maxweight[51] = 5.5; // J/psi -> omega pi0 decay _incoming[52] = 443; _outgoingV[52] = 223; _outgoingP[52] = 111; _coupling[52] = 0.00073/GeV; _maxweight[52] = 6.; // J/psi -> rho0 eta decay _incoming[53] = 443; _outgoingV[53] = 113; _outgoingP[53] = 221; _coupling[53] = 0.00054/GeV; _maxweight[53] = 3.; // J/psi -> rho0 eta' decay _incoming[54] = 443; _outgoingV[54] = 113; _outgoingP[54] = 331; _coupling[54] = 0.00045/GeV; _maxweight[54] = 3.; // J/psi -> omega eta' decay _incoming[55] = 443; _outgoingV[55] = 223; _outgoingP[55] = 331; _coupling[55] = 0.00058/GeV; _maxweight[55] = 6.; // J/psi -> gamma pi0 decay _incoming[56] = 443; _outgoingV[56] = 22; _outgoingP[56] = 111; _coupling[56] = 0.000177/GeV; _maxweight[56] = 1.7; // psi(2s)-> j/psi eta decay _incoming[57] = 100443; _outgoingV[57] = 443; _outgoingP[57] = 221; _coupling[57] = 0.230/GeV; _maxweight[57] = 1.7; // psi(2s)-> gamma eta_c decay _incoming[58] = 100443; _outgoingV[58] = 22; _outgoingP[58] = 441; _coupling[58] = 0.0114/GeV; _maxweight[58] = 3.4; // psi(2s)-> gamma eta' decay _incoming[59] = 100443; _outgoingV[59] = 22; _outgoingP[59] = 331; _coupling[59] = 0.00062/GeV; _maxweight[59] = 1.7; // psi(2s)-> J/psi pi0 decay _incoming[60] = 100443; _outgoingV[60] = 443; _outgoingP[60] = 111; _coupling[60] = 0.0106/GeV; _maxweight[60] = 1.7; // psi(1d)-> gamma eta_c decay _incoming[61] = 30443; _outgoingV[61] = 443; _outgoingP[61] = 221; _coupling[61] = 0.135/GeV; _maxweight[61] = 1.7; _incoming[62] = 30443; _outgoingV[62] = 333; _outgoingP[62] = 221; _coupling[62] = 0.0076/GeV; _maxweight[62] = 5.5; // psi(2s) K* K _incoming[63] = 100443; _outgoingV[63] = 323; _outgoingP[63] = -321; _coupling[63] = 0.00021/GeV; _maxweight[63] = 6.5; _incoming[64] = 100443; _outgoingV[64] = 313; _outgoingP[64] = -311; _coupling[64] = 0.00054/GeV; _maxweight[64] = 6.5; // psi(2s) -> phi eta decay _incoming[65] = 100443; _outgoingV[65] = 333; _outgoingP[65] = 221; _coupling[65] = 0.00029/GeV; _maxweight[65] = 5.5; // psi(2s) -> phi eta' decay _incoming[66] = 100443; _outgoingV[66] = 333; _outgoingP[66] = 331; _coupling[66] = 0.00033/GeV; _maxweight[66] = 5.5; // psi(2s) -> rho pi decay _incoming[67] = 100443; _outgoingV[67] = 213; _outgoingP[67] = -211; _coupling[67] = 0.00017/GeV; _maxweight[67] = 3.5; _incoming[68] = 100443; _outgoingV[68] = 113; _outgoingP[68] = 111; _coupling[68] = 0.00017/GeV; _maxweight[68] = 3.5; // psi(2s) -> omega eta' decay _incoming[69] = 100443; _outgoingV[69] = 223; _outgoingP[69] = 331; _coupling[69] = 0.00032/GeV; _maxweight[69] = 6.; // psi(2s) -> rho0 eta decay _incoming[70] = 100443; _outgoingV[70] = 113; _outgoingP[70] = 221; _coupling[70] = 0.00025/GeV; _maxweight[70] = 3.5; // psi(2s) -> omega pi0 decay _incoming[71] = 100443; _outgoingV[71] = 223; _outgoingP[71] = 111; _coupling[71] = 0.00022/GeV; _maxweight[71] = 6.; // psi(2s) -> rho0 eta' decay _incoming[72] = 100443; _outgoingV[72] = 113; _outgoingP[72] = 331; _coupling[72] = 0.00026/GeV; _maxweight[72] = 3.5; // initial size of the vectors for the database output _initsize=_incoming.size(); } int VectorMesonVectorPScalarDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=2) return -1; int id(parent->id()); int idbar = parent->CC() ? parent->CC()->id() : id; int id1(children[0]->id()); int id1bar = children[0]->CC() ? children[0]->CC()->id() : id1; int id2(children[1]->id()); int id2bar = children[1]->CC() ? children[1]->CC()->id() : id2; int imode(-1); unsigned int ix(0); cc=false; do { if(id ==_incoming[ix]) { if((id1 ==_outgoingV[ix]&&id2 ==_outgoingP[ix])|| (id2 ==_outgoingV[ix]&&id1 ==_outgoingP[ix])) imode=ix; } if(idbar==_incoming[ix]) { if((id1bar==_outgoingV[ix]&&id2bar==_outgoingP[ix])|| (id2bar==_outgoingV[ix]&&id1bar==_outgoingP[ix])) { imode=ix; cc=true; } } ++ix; } while(ix<_incoming.size()&&imode<0); return imode; } void VectorMesonVectorPScalarDecayer::persistentOutput(PersistentOStream & os) const { os << _incoming << _outgoingV << _outgoingP << _maxweight << ounit(_coupling,1/MeV); } void VectorMesonVectorPScalarDecayer::persistentInput(PersistentIStream & is, int) { is >> _incoming >> _outgoingV >> _outgoingP >> _maxweight >> iunit(_coupling,1/MeV); } ClassDescription<VectorMesonVectorPScalarDecayer> VectorMesonVectorPScalarDecayer::initVectorMesonVectorPScalarDecayer; // Definition of the static class description member. void VectorMesonVectorPScalarDecayer::Init() { static ClassDocumentation<VectorMesonVectorPScalarDecayer> documentation ("The VectorMesonVectorPScalarDecayer class is designed for the " "decay of a vector meson to another vector meson, or the photon, and a " "pseudoscalar meson."); static ParVector<VectorMesonVectorPScalarDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &VectorMesonVectorPScalarDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonVectorPScalarDecayer,int> interfaceOutcomingVector ("OutgoingVector", "The PDG code for the outgoing spin-1 particle", &VectorMesonVectorPScalarDecayer::_outgoingV, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonVectorPScalarDecayer,int> interfaceOutcomingPScalar ("OutgoingPScalar", "The PDG code for the outgoing spin-0 particle", &VectorMesonVectorPScalarDecayer::_outgoingP, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonVectorPScalarDecayer,InvEnergy> interfaceCoupling ("Coupling", "The coupling for the decay mode", &VectorMesonVectorPScalarDecayer::_coupling, 1/MeV, 0, ZERO, -10000000/MeV, 10000000/MeV, false, false, true); static ParVector<VectorMesonVectorPScalarDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &VectorMesonVectorPScalarDecayer::_maxweight, 0, 0, 0, -10000000, 10000000, false, false, true); } double VectorMesonVectorPScalarDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // is the vector massless bool photon(_outgoingV[imode()]==ParticleID::gamma); if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors[0],_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors[0],const_ptr_cast<tPPtr>(&inpart), incoming,true,false); VectorWaveFunction::constructSpinInfo(_vectors[1],decay[0], outgoing,true,photon); ScalarWaveFunction::constructSpinInfo(decay[1],outgoing,true); return 0.; } VectorWaveFunction::calculateWaveFunctions(_vectors[1],decay[0],outgoing,photon); // compute the matrix element LorentzPolarizationVector vtemp; for(unsigned int ix=0;ix<3;++ix) { if(ix==1&&photon) { for(unsigned int iy=0;iy<3;++iy) ME()(iy,ix,0)=0.; } else { vtemp=_coupling[imode()]/inpart.mass()* epsilon(inpart.momentum(),_vectors[1][ix],decay[0]->momentum()); for(unsigned int iy=0;iy<3;++iy) ME()(iy,ix,0)=_vectors[0][iy].dot(vtemp); } } // test of the matrix element // double me = newME.contract(rhoin).real(); // Energy pcm=Kinematics::pstarTwoBodyDecay(inpart.mass(),decay[0]->mass(), // decay[1]->mass()); // double test = sqr(_coupling[imode()]*pcm)*2./3.; // cerr << "testing matrix element for " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << me << " " << test << " " << (me-test)/(me+test) << "\n"; // return the answer return ME().contract(_rho).real(); } bool VectorMesonVectorPScalarDecayer::twoBodyMEcode(const DecayMode & dm,int & mecode, double & coupling) const { int imode(-1); int id(dm.parent()->id()); int idbar = dm.parent()->CC() ? dm.parent()->CC()->id() : id; ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id()); int id1bar = (**pit).CC() ? (**pit).CC()->id() : id1; ++pit; int id2((**pit).id()); int id2bar = (**pit).CC() ? (**pit).CC()->id() : id2; unsigned int ix(0); bool order(false); do { if(id==_incoming[ix]) { if(id1 ==_outgoingV[ix]&&id2 ==_outgoingP[ix]) { imode=ix; order=true; } if(id2 ==_outgoingV[ix]&&id1 ==_outgoingP[ix]) { imode=ix; order=false; } } if(idbar==_incoming[ix]&&imode<0) { if(id1bar==_outgoingV[ix]&&id2bar==_outgoingP[ix]) { imode=ix; order=true; } if(id2bar==_outgoingV[ix]&&id1bar==_outgoingP[ix]) { imode=ix; order=false; } } ++ix; } while(ix<_incoming.size()&&imode<0); coupling = _coupling[imode]*dm.parent()->mass(); mecode = 1; return order; } // output the setup info for the particle database void VectorMesonVectorPScalarDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // the rest of the parameters for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":OutgoingVector " << ix << " " << _outgoingV[ix] << "\n"; output << "newdef " << name() << ":OutgoingPScalar " << ix << " " << _outgoingP[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]*MeV << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":OutgoingVector " << ix << " " << _outgoingV[ix] << "\n"; output << "insert " << name() << ":OutgoingPScalar " << ix << " " << _outgoingP[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]*MeV << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMesonPScalarFermionsDecayer.cc��������������������������0000644�0001750�0001750�00000044411�11754474773�027314� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMesonPScalarFermionsDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the VectorMesonPScalarFermionsDecayer class. // // Author: Peter Richardson // #include "VectorMesonPScalarFermionsDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/epsilon.h" #include "Herwig++/PDT/ThreeBodyAllOn1IntegralCalculator.h" using namespace Herwig; using namespace ThePEG::Helicity; void VectorMesonPScalarFermionsDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) { _maxweight[ix] = mode(ix)->maxWeight(); _weight[ix] = mode(ix)->channelWeight(1); } } } VectorMesonPScalarFermionsDecayer::VectorMesonPScalarFermionsDecayer() : _coupling(6), _incoming(6), _outgoingP(6), _outgoingf(6), _outgoinga(6), _maxweight(6), _weight(6), _includeVMD(6), _VMDid(6), _VMDmass(6), _VMDwidth(6) { ME(DecayMatrixElement(PDT::Spin1,PDT::Spin0, PDT::Spin1Half,PDT::Spin1Half)); // omega -> pi e+e- /mu+mu- _incoming[0] = 223; _outgoingP[0] = 111; _outgoingf[0] = 11; _outgoinga[0] = -11; _coupling[0] = 0.2179/GeV; _maxweight[0] = 4.0; _weight[0] = 0.; _includeVMD[0] = 2; _VMDid[0] = 113; _VMDmass[0] = 0.7758*GeV; _VMDwidth[0] = 0.1503*GeV; _incoming[1] = 223; _outgoingP[1] = 111; _outgoingf[1] = 13; _outgoinga[1] = -13; _coupling[1] = 0.2179/GeV; _maxweight[1] = 2.8; _weight[1] = 0.; _includeVMD[1] = 2; _VMDid[1] = 113; _VMDmass[1] = 0.7758*GeV; _VMDwidth[1] = 0.1503*GeV; // phi -> eta e+e-/mu+mu- _incoming[2] = 333; _outgoingP[2] = 221; _outgoingf[2] = 11; _outgoinga[2] = -11; _coupling[2] = 0.0643/GeV; _maxweight[2] = 3.7; _weight[2] = 0.; _includeVMD[2] = 2; _VMDid[2] = 113; _VMDmass[2] = 0.7758*GeV; _VMDwidth[2] = 0.1503*GeV; _incoming[3] = 333; ;_outgoingP[3] = 221; _outgoingf[3] = 13; _outgoinga[3] = -13; _coupling[3] = 0.0643/GeV; _maxweight[3] = 2.8; _weight[3] = 0.; _includeVMD[3] = 2; _VMDid[3] = 113; _VMDmass[3] = 0.7758*GeV; _VMDwidth[3] = 0.1503*GeV; // phi -> pi e+e-/mu+mu- _incoming[4] = 333; ;_outgoingP[4] = 111; _outgoingf[4] = 11; _outgoinga[4] = -11; _coupling[4] = 0.0120094/GeV; _maxweight[4] = 4.9; _weight[4] = 0.21; _includeVMD[4] = 2; _VMDid[4] = 113; _VMDmass[4] = 0.7758*GeV; _VMDwidth[4] = 0.1503*GeV; _incoming[5] = 333; ;_outgoingP[5] = 111; _outgoingf[5] = 13; _outgoinga[5] = -13; _coupling[5] = 0.0120094/GeV; _maxweight[5] = 3.2; _weight[5] = 0.33; _includeVMD[5] = 2; _VMDid[5] = 113; _VMDmass[5] = 0.7758*GeV; _VMDwidth[5] = 0.1503*GeV; // the initial size of the arrays _initsize=_coupling.size(); // intermediates generateIntermediates(false); } void VectorMesonPScalarFermionsDecayer::doinit() { DecayIntegrator::doinit(); // check the parameters are consistent unsigned int isize(_coupling.size()); if(isize!=_incoming.size() || isize!=_outgoingP.size()|| isize!=_outgoingf.size()|| isize!=_outgoinga.size() || isize!=_maxweight.size()|| isize!=_includeVMD.size()|| isize!=_VMDid.size() || isize!=_VMDmass.size() || isize!=_VMDwidth.size()|| isize!=_weight.size()) throw InitException() << "Inconsistent parameters in VectorMesonPScalar" << "FermionsDecayer" << Exception::abortnow; // create the integration channel for each mode tPDVector extpart(4); tPDPtr gamma(getParticleData(ParticleID::gamma)),rho; DecayPhaseSpaceChannelPtr newchannel; DecayPhaseSpaceModePtr newmode; vector<double> wgt(2,1.); for(unsigned int ix=0;ix<_incoming.size();++ix) { rho=getParticleData(_VMDid[ix]); extpart[0] = getParticleData(_incoming[ix]); extpart[1] = getParticleData(_outgoingP[ix]); extpart[2] = getParticleData(_outgoingf[ix]); extpart[3] = getParticleData(_outgoinga[ix]); newmode = new_ptr(DecayPhaseSpaceMode(extpart,this)); // photon channel newchannel=new_ptr(DecayPhaseSpaceChannel(newmode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(gamma ,1,-1.1, 2,3); newmode->addChannel(newchannel); wgt[0]=1.-_weight[ix]; // vmd channel newchannel=new_ptr(DecayPhaseSpaceChannel(newmode)); newchannel->addIntermediate(extpart[0],0, 0.0,-1,1); newchannel->addIntermediate(rho ,0, 0.0, 2,3); newmode->addChannel(newchannel); wgt[1]=_weight[ix]; addMode(newmode,_maxweight[ix],wgt); } // set up the values for the VMD factor if needed (copy the default mass and width // into the array) for(unsigned ix=0;ix<isize;++ix) { if(_includeVMD[ix]==1) { _VMDmass[ix]=getParticleData(_VMDid[ix])->mass(); _VMDwidth[ix]=getParticleData(_VMDid[ix])->width(); } } } int VectorMesonPScalarFermionsDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); // must be three outgoing particles if(children.size()!=3){return imode;} // ids of the particles int id0(parent->id()),idf[2],ids(0); unsigned int nf(0); tPDVector::const_iterator pit = children.begin(); for( ;pit!=children.end();++pit) { if((**pit).iSpin()==PDT::Spin0) ids=(**pit).id(); else { idf[nf]=(**pit).id(); ++nf; } } // loop over the modes and see if this is one of them unsigned int ix=0; do { if(_incoming[ix]==id0&&_outgoingP[ix]==ids) { if((idf[0]==_outgoingf[ix]&&idf[1]==_outgoinga[ix])|| (idf[1]==_outgoingf[ix]&&idf[0]==_outgoinga[ix])) imode=ix; } ++ix; } while(imode<0&&ix<_incoming.size()); // perform the decay cc=false; return imode; } void VectorMesonPScalarFermionsDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_coupling,1/GeV) << _incoming << _outgoingP << _outgoingf << _outgoinga << _maxweight << _weight << _includeVMD << _VMDid << ounit(_VMDmass,GeV) << ounit(_VMDwidth,GeV); } void VectorMesonPScalarFermionsDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_coupling,1/GeV) >> _incoming >> _outgoingP >> _outgoingf >> _outgoinga >> _maxweight >> _weight >> _includeVMD >> _VMDid >> iunit(_VMDmass,GeV) >> iunit(_VMDwidth,GeV); } ClassDescription<VectorMesonPScalarFermionsDecayer> VectorMesonPScalarFermionsDecayer::initVectorMesonPScalarFermionsDecayer; // Definition of the static class description member. void VectorMesonPScalarFermionsDecayer::Init() { static ClassDocumentation<VectorMesonPScalarFermionsDecayer> documentation ("The VectorMesonPScalarFermionsDecayer class is designed to " "perform the decay of a vector meson to a pseudoscalar meson and a " "fermion-antifermion pair."); static ParVector<VectorMesonPScalarFermionsDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &VectorMesonPScalarFermionsDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonPScalarFermionsDecayer,int> interfaceOutcomingP ("OutgoingPseudoScalar", "The PDG code for the outgoing pseudoscalar", &VectorMesonPScalarFermionsDecayer::_outgoingP, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonPScalarFermionsDecayer,int> interfaceOutcomingF ("OutgoingFermion", "The PDG code for the outgoing fermion", &VectorMesonPScalarFermionsDecayer::_outgoingf, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonPScalarFermionsDecayer,int> interfaceOutcomingA ("OutgoingAntiFermion", "The PDG code for the outgoing antifermion", &VectorMesonPScalarFermionsDecayer::_outgoinga, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonPScalarFermionsDecayer,InvEnergy> interfaceCoupling ("Coupling", "The coupling for the decay mode", &VectorMesonPScalarFermionsDecayer::_coupling, 1/MeV, 0, ZERO, -10000000/MeV, 10000000/MeV, false, false, true); static ParVector<VectorMesonPScalarFermionsDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &VectorMesonPScalarFermionsDecayer::_maxweight, 0, 0, 0, 0., 200.0, false, false, true); static ParVector<VectorMesonPScalarFermionsDecayer,double> interfaceWeight ("Weight", "The weight for vector meson phasse space channel", &VectorMesonPScalarFermionsDecayer::_weight, 0, 0, 0, 0., 200.0, false, false, true); static ParVector<VectorMesonPScalarFermionsDecayer,int> interfaceIncludeVMD ("IncludeVMD", "There are three options for 0 the VMD factor is not included, for 1 the factor " "is included using the default mass and width of the particle specified by" " VMDID, and for 2 the factor is included using the mass and width specified" " by VMDwidth and VMDmass.", &VectorMesonPScalarFermionsDecayer::_includeVMD, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonPScalarFermionsDecayer,int> interfaceVMDID ("VMDID", "The PDG code for the particle to be used for the VMD factor.", &VectorMesonPScalarFermionsDecayer::_VMDid, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonPScalarFermionsDecayer,Energy> interfaceVMDmass ("VMDmass", "The mass to use for the particle in the VMD factor", &VectorMesonPScalarFermionsDecayer::_VMDmass, MeV, 0, ZERO, -10000000*MeV, 10000000*MeV, false, false, true); static ParVector<VectorMesonPScalarFermionsDecayer,Energy> interfaceVMDwidth ("VMDwidth", "The width to use for the particle in the VMD factor", &VectorMesonPScalarFermionsDecayer::_VMDwidth, MeV, 0, ZERO, -10000000*MeV, 10000000*MeV, false, false, true); } double VectorMesonPScalarFermionsDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // initialization if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors,_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); ScalarWaveFunction::constructSpinInfo(decay[0],outgoing,true); SpinorBarWaveFunction:: constructSpinInfo(_wavebar,decay[1],outgoing,true); SpinorWaveFunction:: constructSpinInfo(_wave ,decay[2],outgoing,true); return 0.; } SpinorBarWaveFunction:: calculateWaveFunctions(_wavebar,decay[1],outgoing); SpinorWaveFunction:: calculateWaveFunctions(_wave ,decay[2],outgoing); // the factor for the off-shell photon Lorentz5Momentum pff(decay[1]->momentum()+decay[2]->momentum()); pff.rescaleMass(); Energy2 mff2(pff.mass2()); // prefactor complex<InvEnergy3> pre(_coupling[imode()]/mff2); Complex ii(0.,1.); // the VMD factor if(_includeVMD[imode()]>0) { Energy2 mrho2(_VMDmass[imode()]*_VMDmass[imode()]); Energy2 mwrho(_VMDmass[imode()]*_VMDwidth[imode()]); pre = pre*(-mrho2+ii*mwrho)/(mff2-mrho2+ii*mwrho); } // calculate the matrix element LorentzPolarizationVector temp; unsigned int ix,iy,iz; for(ix=0;ix<2;++ix) { for(iy=0;iy<2;++iy) { temp=pre*epsilon(inpart.momentum(),pff, _wave[ix].vectorCurrent(_wavebar[iy])); for(iz=0;iz<3;++iz) ME()(iz,0,iy,ix)=temp.dot(_vectors[iz]); } } /* code for the spin averaged me for testing only Energy m[4]={inpart.mass(),decay[0]->mass(),decay[1]->mass(),decay[2]->mass()}; Energy m2[4]={m[0]*m[0],m[1]*m[1],m[2]*m[2],m[3]*m[3]}; Lorentz5Momentum p12=decay[0]->momentum()+decay[1]->momentum();p12.rescaleMass(); Energy m122(p12.mass2()); cout << "testing the matrix element " << -1./3.*(pre*conj(pre)).real()*(-2*m122*m122*mff2 - mff2*mff2*mff2 + m2[1]*(2*m2[2]*m2[3] - 2*m2[3]*m2[3] + m2[1]*(m2[2] - 2*m[2]*m[3] - m2[3])) - 2*m[2]*(m2[2]*m[2] - 2*m2[1]*m[3] - m[2]*m2[3])* m2[0] - (m2[2] + 2*m[2]*m[3] - m2[3])* m2[0]*m2[0] + mff2*mff2* (2*m2[1] + (m[2] - m[3])*(m[2] - m[3]) + 2*m2[0]) - mff2*(m2[1]*m2[1] + 2*m2[1]*m[2]*(m[2] - 2*m[3]) + 2*m2[2]*m2[3] - 2*(2*m[2] - m[3])*m[3]*m2[0] + m2[0]*m2[0]) + 2*m122* (-mff2*mff2 - (m[2] - m[3])*(m[2] + m[3])*(m[1] - m[0])* (m[1] + m[0]) + mff2* (m2[1] + m2[2] + m2[3] + m2[0]))) << endl; */ // return the answer return ME().contract(_rho).real(); } WidthCalculatorBasePtr VectorMesonPScalarFermionsDecayer::threeBodyMEIntegrator(const DecayMode & dm) const { // workout which mode we are doing int imode(-1); // ids of the particles int id0(dm.parent()->id()),idf[2],ids(0); unsigned int nf(0); ParticleMSet::const_iterator pit = dm.products().begin(); for( ;pit!=dm.products().end();++pit) { if((**pit).iSpin()==PDT::Spin0){ids=(**pit).id();} else{idf[nf]=(**pit).id();++nf;} } // loop over the modes and see if this is one of them unsigned int ix=0; do { if(_incoming[ix]==id0&&_outgoingP[ix]==ids) { if((idf[0]==_outgoingf[ix]&&idf[1]==_outgoinga[ix])|| (idf[1]==_outgoingf[ix]&&idf[0]==_outgoinga[ix])) imode=ix; } ++ix; } while(imode<0&&ix<_incoming.size()); // get the masses we need Energy m[3]={getParticleData(_outgoingP[imode])->mass(), getParticleData(_outgoingf[imode])->mass(), getParticleData(_outgoinga[imode])->mass()}; return new_ptr(ThreeBodyAllOn1IntegralCalculator<VectorMesonPScalarFermionsDecayer> (3,-1000.*MeV,-0.8*MeV,-0.8,*this,imode,m[0],m[1],m[2])); } InvEnergy VectorMesonPScalarFermionsDecayer:: threeBodydGammads(int imodeb, const Energy2 q2, const Energy2 mff2, const Energy m1, const Energy m2, const Energy m3) const { // the masses of the external particles Energy q(sqrt(q2)); Energy2 m12(m1*m1),m22(m2*m2),m32(m3*m3); // prefactor complex<InvEnergy3> pre(_coupling[imodeb]/mff2); Complex ii(0.,1.); // the VMD factor if(_includeVMD[imodeb]>0) { Energy2 mrho2(_VMDmass[imodeb]*_VMDmass[imodeb]), mwrho(_VMDmass[imodeb]*_VMDwidth[imodeb]); pre = pre*(-mrho2+ii*mwrho)/(mff2-mrho2+ii*mwrho); } InvEnergy6 factor(real(pre*conj(pre))); // compute the pieces from the integration limits Energy mff(sqrt(mff2)),e2star(0.5*(mff2-m32+m22)/mff),e1star(0.5*(q2-mff2-m12)/mff), e1sm(sqrt(e1star*e1star-m12)),e2sm(sqrt(e2star*e2star-m22)); Energy2 a(2*e1star*e2star+m12+m22),b(2*e1sm*e2sm); // term independent of s3 Energy8 me = 2*b*(-mff2*mff2*mff2 +m12*m12*(m22 - 2*m2*m3 - m32) - 2*m22*(m22 - m32)*q2 -(m22 + 2*m2*m3 - m32)*q2*q2 + mff2*mff2*(2*m12 +(m2-m3)*(m2-m3)+2*q2) + 2*m12*m3* ((m22-m32)*m3 + 2*m2*q2) - mff2*(m12*m12 + 2*m12*m2*(m2 - 2*m3) + 2*m22*m32 - 2*(2*m2 - m3)*m3*q2 + q2*q2)); // linear term me+= 2.*a*b*(2*(-mff2*mff2-(m22-m32)*(m12-q2)+mff2*(m12+m22+m32+q2))); // quadratic term me+=2*b*(3.*a*a+b*b)/3.*(-2*mff2); // phase space factors using Constants::pi; return -factor * me/768./pi/pi/pi/q2/q; } // output the setup information for the particle database void VectorMesonPScalarFermionsDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":OutgoingPseudoScalar " << ix << " " << _outgoingP[ix] << "\n"; output << "newdef " << name() << ":OutgoingFermion " << ix << " " << _outgoingf[ix] << "\n"; output << "newdef " << name() << ":OutgoingAntiFermion " << ix << " " << _outgoinga[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]*MeV << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; output << "newdef " << name() << ":Weight " << ix << " " << _weight[ix] << "\n"; output << "newdef " << name() << ":IncludeVMD " << ix << " " << _includeVMD[ix] << "\n"; output << "newdef " << name() << ":VMDID " << ix << " " << _VMDid[ix] << "\n"; output << "newdef " << name() << ":VMDmass " << ix << " " << _VMDmass[ix]/MeV << "\n"; output << "newdef " << name() << ":VMDwidth " << ix << " " << _VMDwidth[ix]/MeV << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":OutgoingPseudoScalar " << ix << " " << _outgoingP[ix] << "\n"; output << "insert " << name() << ":OutgoingFermion " << ix << " " << _outgoingf[ix] << "\n"; output << "insert " << name() << ":OutgoingAntiFermion " << ix << " " << _outgoinga[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]*MeV << "\n"; output << "insert " << name() << ":Weight " << ix << " " << _weight[ix] << "\n"; output << "insert " << name() << ":IncludeVMD " << ix << " " << _includeVMD[ix] << "\n"; output << "insert " << name() << ":VMDID " << ix << " " << _VMDid[ix] << "\n"; output << "insert " << name() << ":VMDmass " << ix << " " << _VMDmass[ix]/MeV << "\n"; output << "insert " << name() << ":VMDwidth " << ix << " " << _VMDwidth[ix]/MeV << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMesonVectorVectorDecayer.h������������������������������0000644�0001750�0001750�00000016165�11754474773�026560� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMesonVectorVectorDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_VectorMesonVectorVectorDecayer_H #define HERWIG_VectorMesonVectorVectorDecayer_H // // This is the declaration of the VectorMesonVectorVectorDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * This class is designed for the decay of a vector meson to two spin * one particles, either other vector mesons or photons. * * The current for the decay is taken to be * * \f[\mathcal{M}= \frac{g}{M_0^2} * ( p_{0\nu}\epsilon^\alpha-p_{0\alpha} \epsilon^\nu)\left[ * ((p_{1\nu} \epsilon_1^\beta- p_1^\beta \epsilon_{1\nu}) * (p_{2\alpha} \epsilon_{2\beta}- p_{2\beta} \epsilon_{2\alpha}) * -(\nu \leftrightarrow\alpha))\right],\f] * where \f$p_{0,1,2}\f$ are the momenta of the incoming and two outgoing * vector mesons and \f$\epsilon_{1,2}\f$ are the polarization vectors of * the outgoing mesons and \f$\epsilon\f$ is the polarization vector of the * incoming meson. * * The incoming vector mesons together with their decay products and the coupling * \f$g\f$ can be specified using the interfaces for the class. The maximum weights * for the decays can be calculated using the Initialize interface of the * DecayIntegrator class or specified using the interface. * * The incoming and outgoing particles, couplings and maximum weights for * many of the common \f$V\to VV\f$ decays are specified in the default * constructor. * * @see DecayIntegrator. * @see \ref VectorMesonVectorVectorDecayerInterfaces "The interfaces" * defined for VectorMesonVectorVectorDecayer. */ class VectorMesonVectorVectorDecayer: public DecayIntegrator { public: /** * Default constructor. */ VectorMesonVectorVectorDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 5. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<VectorMesonVectorVectorDecayer> initVectorMesonVectorVectorDecayer; /** * Private and non-existent assignment operator. */ VectorMesonVectorVectorDecayer & operator=(const VectorMesonVectorVectorDecayer &); private: /** * the coupling for the decay */ vector<double> _coupling; /** * the PDG codes for the incoming particles */ vector<int> _incoming; /** * the PDG codes for the 1st outgoing particle */ vector<int> _outgoing1; /** * the PDG codes for the 2nd outgoing particle */ vector<int> _outgoing2; /** * maximum weight for a decay */ vector<double> _maxweight; /** * Initial size of the vectors */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors */ mutable vector<Helicity::LorentzPolarizationVector> _vectors[3]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of VectorMesonVectorVectorDecayer. */ template <> struct BaseClassTrait<Herwig::VectorMesonVectorVectorDecayer,1> { /** Typedef of the base class of VectorMesonVectorVectorDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VectorMesonVectorVectorDecayer> : public ClassTraitsBase<Herwig::VectorMesonVectorVectorDecayer> { /** Return the class name. */ static string className() { return "Herwig::VectorMesonVectorVectorDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwVMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_VectorMesonVectorVectorDecayer_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMeson2FermionDecayer.h����������������������������������0000644�0001750�0001750�00000016130�11754474773�025604� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMeson2FermionDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_VectorMeson2FermionDecayer_H #define HERWIG_VectorMeson2FermionDecayer_H // This is the declaration of the VectorMeson2FermionDecayer class. #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" #include "ThePEG/Helicity/LorentzSpinorBar.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>VectorMeson2FermionDecayer</code> class is designed for the decay * of a vector meson to a fermion-antifermion pair. This class is mainly used for the * decay of the vector mesons to electron and muon pairs but can also be used for * the decay of charmonium, \e e.g. \f$J/\psi\f$, or bottomonium decays to * baryons, \e e.g. \f$p\bar{p}\f$ and \f$n\bar{n}\f$. * * In this case the matrix element is taken to have the form * \f[\mathcal{M} = g\epsilon_\mu \bar{u}(p_f)\gamma^\mu u(p_{\bar{f}}).\f] * * The incoming vector mesons together with their decay products and the coupling * \f$g\f$ can be specified using the interfaces for the class. The maximum weights * for the decays can be calculated using the Initialize interface of the * DecayIntegrator class or specified using the interface. * * The incoming and outgoing particles, couplings and maximum weights for * many of the common \f$V\to f\bar{f}\f$ decays are specified in the default * constructor. * * @see DecayIntegrator * @see \ref VectorMeson2FermionDecayerInterfaces "The interfaces" * defined for VectorMeson2FermionDecayer. * */ class VectorMeson2FermionDecayer: public DecayIntegrator { public: /** * Default constructor. */ VectorMeson2FermionDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 2. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<VectorMeson2FermionDecayer> initVectorMeson2FermionDecayer; /** * Private and non-existent assignment operator. */ VectorMeson2FermionDecayer & operator=(const VectorMeson2FermionDecayer &); private: /** * coupling for a decay */ vector<double> _coupling; /** * the PDG codes for the incoming particles */ vector<int> _incoming; /** * the PDG codes for the outgoing fermion */ vector<int> _outgoingf; /** * the PDG codes for the outgoing antifermion. */ vector<int> _outgoinga; /** * maximum weight for a decay */ vector<double> _maxweight; /** * Initial size of the vectors */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the decaying particle */ mutable vector<Helicity::LorentzPolarizationVector> _vectors; /** * Spinors for the decay products */ mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > _wave; /** * barred spinors for the decay products */ mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > _wavebar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of VectorMeson2FermionDecayer. */ template <> struct BaseClassTrait<Herwig::VectorMeson2FermionDecayer,1> { /** Typedef of the base class of VectorMeson2FermionDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VectorMeson2FermionDecayer> : public ClassTraitsBase<Herwig::VectorMeson2FermionDecayer> { /** Return the class name.*/ static string className() { return "Herwig::VectorMeson2FermionDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwVMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_VectorMeson2FermionDecayer_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/a1ThreePionDecayer.cc�����������������������������������������0000644�0001750�0001750�00000073533�11754474773�024225� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // a1ThreePionDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the a1ThreePionDecayer class. // #include "a1ThreePionDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" using namespace Herwig; using namespace ThePEG::Helicity; a1ThreePionDecayer::a1ThreePionDecayer() : _rhomass(1,0.7761*GeV), _rhowidth(1,0.1445*GeV), _sigmamass(0.8*GeV), _sigmawidth(0.8*GeV), _psigma(ZERO), _mpi(ZERO), _mpi2(ZERO), _lambda2(1.2*GeV2), _a1mass2(1.23*1.23*GeV2), _zsigma(0.), _zmag(1.3998721), _zphase(0.43585036), _rhomag(1,1.), _rhophase(1,0.), _coupling(90.44), _localparameters(true), _zerowgts(3), _onewgts(7), _twowgts(7), _threewgts(8) ,_zeromax(19.144), _onemax(7.83592), _twomax(6.64804), _threemax(6.66296) { // weights for the different channels _threewgts[0] = 0.153071; _threewgts[1] = 0.165741; _threewgts[2] = 0.107509; _threewgts[3] = 0.10275 ; _threewgts[4] = 0.109738; _threewgts[5] = 0.11254 ; _threewgts[6] = 0.125344; _threewgts[7] = 0.123307; _onewgts[0] = 0.19616 ; _onewgts[1] = 0.191408; _onewgts[2] = 0.12137 ; _onewgts[3] = 0.115498; _onewgts[4] = 0.12729 ; _onewgts[5] = 0.127183; _onewgts[6] = 0.12109 ; _zerowgts[0] = 0.339108; _zerowgts[1] = 0.335601; _zerowgts[2] = 0.325291; _twowgts[0] = 0.188163; _twowgts[1] = 0.192479; _twowgts[2] = 0.121658; _twowgts[3] = 0.12135 ; _twowgts[4] = 0.127298; _twowgts[5] = 0.124835; _twowgts[6] = 0.124217; // generation of intermediates generateIntermediates(true); } void a1ThreePionDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { // get the weights for the different channels for(unsigned int ix=0;ix<_zerowgts.size();++ix) _zerowgts[ix]=mode(0)->channelWeight(ix); for(unsigned int ix=0;ix<_onewgts.size();++ix) _onewgts[ix]=mode(1)->channelWeight(ix); for(unsigned int ix=0;ix<_twowgts.size();++ix) _twowgts[ix]=mode(2)->channelWeight(ix); for(unsigned int ix=0;ix<_threewgts.size();++ix) _threewgts[ix]=mode(3)->channelWeight(ix); // get the maximum weight _zeromax = mode(0)->maxWeight(); _onemax = mode(1)->maxWeight(); _twomax = mode(2)->maxWeight(); _threemax = mode(3)->maxWeight(); } } void a1ThreePionDecayer::doinit() { DecayIntegrator::doinit(); // particles we need for the external state tPDPtr a1p = getParticleData(ParticleID::a_1plus); tPDPtr a10 = getParticleData(ParticleID::a_10); tPDPtr pip = getParticleData(ParticleID::piplus); tPDPtr pim = getParticleData(ParticleID::piminus); tPDPtr pi0 = getParticleData(ParticleID::pi0); // possible intermediate particles // the different rho resonances tPDPtr rhop[3] = {getParticleData(213),getParticleData(100213), getParticleData(30213)}; tPDPtr rho0[3] = {getParticleData(113),getParticleData(100113), getParticleData(30113)}; tPDPtr rhom[3] = {getParticleData(-213),getParticleData(-100213), getParticleData(-30213)}; // the sigma tPDPtr sigma = getParticleData(9000221); // set up the phase space integration tPDVector extpart(4); DecayPhaseSpaceModePtr mode; DecayPhaseSpaceChannelPtr newchannel; // decay mode a_0 -> pi0 pi0 pi0 extpart[0]=a10; extpart[1]=pi0; extpart[2]=pi0; extpart[3]=pi0; if(sigma) { mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,1); newchannel->addIntermediate(sigma,0,0.0,2,3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,2); newchannel->addIntermediate(sigma,0,0.0,1,3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,3); newchannel->addIntermediate(sigma,0,0.0,1,2); mode->addChannel(newchannel); } if(_zerowgts.size()!=mode->numberChannels()) _zerowgts=vector<double>(mode->numberChannels(),1./mode->numberChannels()); addMode(mode,_zeromax,_zerowgts); // decay mode a_1+ -> pi+ pi0 pi0 extpart[0]=a1p; extpart[1]=pi0; extpart[2]=pi0; extpart[3]=pip; mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); for(unsigned int ix=0;ix<3;++ix) { if(!rhop[ix]) continue; // first rho+ channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,1); newchannel->addIntermediate(rhop[ix],0,0.0,2,3); mode->addChannel(newchannel); // second rho+ channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,2); newchannel->addIntermediate(rhop[ix],0,0.0,1,3); mode->addChannel(newchannel); } // the sigma channel if(sigma) { newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,3); newchannel->addIntermediate(sigma,0,0.0,1,2); mode->addChannel(newchannel); } if(_onewgts.size()!=mode->numberChannels()) _onewgts=vector<double>(mode->numberChannels(),1./mode->numberChannels()); addMode(mode,_onemax,_onewgts); // decay mode a_1 -> pi+ pi- pi0 extpart[0]=a10; extpart[1]=pip; extpart[2]=pim; extpart[3]=pi0; mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); for(unsigned int ix=0;ix<3;++ix) { if(!rhop[ix]) continue; // first rho channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,1); newchannel->addIntermediate(rhom[ix],0,0.0,2,3); mode->addChannel(newchannel); // second channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,2); newchannel->addIntermediate(rhop[ix],0,0.0,1,3); mode->addChannel(newchannel); } // sigma channel if(sigma) { newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,3); newchannel->addIntermediate(sigma,0,0.0,1,2); mode->addChannel(newchannel); } if(_twowgts.size()!=mode->numberChannels()) _twowgts=vector<double>(mode->numberChannels(),1./mode->numberChannels()); addMode(mode,_twomax,_twowgts); // decay mode a_1+ -> pi+ pi+ pi- extpart[0]=a1p; extpart[1]=pip; extpart[2]=pip; extpart[3]=pim; mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); for(unsigned int ix=0;ix<3;++ix) { // the neutral rho channels if(!rho0[ix]) continue; // first channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,1); newchannel->addIntermediate(rho0[ix],0,0.0,2,3); mode->addChannel(newchannel); // interchanged channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,2); newchannel->addIntermediate(rho0[ix],0,0.0,1,3); mode->addChannel(newchannel); } // the sigma channels if(sigma) { newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,1); newchannel->addIntermediate(sigma,0,0.0,2,3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,2); newchannel->addIntermediate(sigma,0,0.0,1,3); mode->addChannel(newchannel); } if(_threewgts.size()!=mode->numberChannels()) _threewgts=vector<double>(mode->numberChannels(),1./mode->numberChannels()); addMode(mode,_threemax,_threewgts); // set up the parameters _mpi=getParticleData(ParticleID::piplus)->mass(); _mpi2=sqr(_mpi); if(_localparameters) { if(_rhomass.size()<_rhocoupling.size()) { unsigned int itemp=_rhomass.size(); _rhomass.resize(_rhocoupling.size()); _rhowidth.resize(_rhocoupling.size()); for(unsigned int ix=itemp;ix<_rhocoupling.size();++ix) { _rhomass[ix]=rhop[ix]->mass(); _rhowidth[ix]=rhop[ix]->width(); } // reset the intermediates in the phase space integration if needed resetIntermediate(sigma,_sigmamass,_sigmawidth); for(unsigned int iy=0;iy<_rhocoupling.size();++iy) { resetIntermediate(rho0[iy],_rhomass[iy],_rhowidth[iy]); resetIntermediate(rhop[iy],_rhomass[iy],_rhowidth[iy]); resetIntermediate(rhom[iy],_rhomass[iy],_rhowidth[iy]); } } } else { _a1mass2=sqr(getParticleData(ParticleID::a_1plus)->mass()); if(sigma) { _sigmamass=sigma->mass(); _sigmawidth=sigma->width(); } _rhomass.resize(_rhocoupling.size()); _rhowidth.resize(_rhocoupling.size()); for(unsigned int ix=0;ix<_rhocoupling.size();++ix) { _rhomass[ix]=rhop[ix]->mass(); _rhowidth[ix]=rhop[ix]->width(); } } // parameters for the resonances // for the sigma _psigma=Kinematics::pstarTwoBodyDecay(_sigmamass,_mpi,_mpi); // for the rho _prho.resize(_rhomass.size());_hm2.resize(_rhomass.size()); _dhdq2m2.resize(_rhomass.size());_rhoD.resize(_rhomass.size()); for(unsigned int ix=0;ix<_rhomass.size();++ix) { _prho[ix] = Kinematics::pstarTwoBodyDecay(_rhomass[ix],_mpi,_mpi); _hm2[ix] = hFunction(_rhomass[ix]); _dhdq2m2[ix] = dhdq2Parameter(ix); _rhoD[ix] = DParameter(ix); } // convert the magnitude and phase of z into a phase _zsigma = _zmag*Complex(cos(_zphase),sin(_zphase)); // convert rho couplings for(unsigned int ix=0;ix<_rhomag.size();++ix) { _rhocoupling.push_back(_rhomag[ix]*Complex(cos(_rhophase[ix]),sin(_rhophase[ix]))); } } int a1ThreePionDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=3) return -1; int id(parent->id()); // check the pions tPDVector::const_iterator pit = children.begin(); tPDVector::const_iterator pend = children.end(); int idtemp,npi0(0),npiplus(0),npiminus(0); for( ; pit!=pend;++pit) { idtemp=(**pit).id(); if(idtemp==ParticleID::piplus) ++npiplus; else if(idtemp==ParticleID::piminus) ++npiminus; else if(idtemp==ParticleID::pi0) ++npi0; } int imode(-1); // a_1+ decay modes if(id==ParticleID::a_1plus) { cc=false; if(npiplus==1&&npi0==2) imode=1; else if(npiplus==2&&npiminus==1) imode=3; } // a_1- modes else if(id==ParticleID::a_1minus) { cc=true; if(npiminus==1&&npi0==2) imode=1; else if(npiminus==2&&npiplus==1) imode=3; } // a_0 modes else if(id==ParticleID::a_10) { cc=false; if(npiminus==1&&npiplus==1&&npi0==1) imode=2; else if(npi0==3) imode=0; } return imode; } void a1ThreePionDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_rhomass,GeV) << ounit(_rhowidth,GeV) << ounit(_prho,GeV) << ounit(_hm2,GeV2) << ounit(_rhoD,GeV2) << _dhdq2m2 << ounit(_sigmamass,GeV) << ounit(_sigmawidth,GeV) << ounit(_psigma,GeV) << ounit(_mpi,GeV) << ounit(_mpi2,GeV2) << ounit(_lambda2,GeV2) << ounit(_a1mass2,GeV2) << _zsigma << _rhocoupling << _coupling << _localparameters << _zerowgts << _onewgts << _twowgts << _threewgts << _zeromax << _zmag << _zphase << _onemax << _twomax << _threemax << _coupling << _rhomag << _rhophase; } void a1ThreePionDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_rhomass,GeV) >> iunit(_rhowidth,GeV) >> iunit(_prho,GeV) >> iunit(_hm2,GeV2) >> iunit(_rhoD,GeV2) >> _dhdq2m2 >> iunit(_sigmamass,GeV) >> iunit(_sigmawidth,GeV) >> iunit(_psigma,GeV) >> iunit(_mpi,GeV) >> iunit(_mpi2,GeV2) >> iunit(_lambda2,GeV2) >> iunit(_a1mass2,GeV2) >> _zsigma >> _rhocoupling >> _coupling >> _localparameters >> _zerowgts >> _onewgts >> _twowgts >> _threewgts >> _zeromax >> _zmag >> _zphase >> _onemax >> _twomax >> _threemax >> _coupling >> _rhomag >> _rhophase; } ClassDescription<a1ThreePionDecayer> a1ThreePionDecayer::inita1ThreePionDecayer; // Definition of the static class description member. void a1ThreePionDecayer::Init() { static ClassDocumentation<a1ThreePionDecayer> documentation ("The a1ThreePionDecayer class is designed to decay the a_1 " "resonance to three pions using a model based on that used in the modelling " "of tau->4 pions.", "The decay of the $a_1$ resonance to three pions uses a model based on" "tau to four pions, \\cite{Bondar:2002mw}.", "%\\cite{Bondar:2002mw}\n" "\\bibitem{Bondar:2002mw}\n" " A.~E.~Bondar, S.~I.~Eidelman, A.~I.~Milstein, T.~Pierzchala, N.~I.~Root, Z.~Was and M.~Worek,\n" " ``Novosibirsk hadronic currents for tau --> 4pi channels of tau decay\n" " %library TAUOLA,''\n" " Comput.\\ Phys.\\ Commun.\\ {\\bf 146}, 139 (2002)\n" " [arXiv:hep-ph/0201149].\n" " %%CITATION = CPHCB,146,139;%%\n" ); static Switch<a1ThreePionDecayer,bool> interfaceLocalParameters ("LocalParameters", "Use local values of the intermediate resonances masses and widths", &a1ThreePionDecayer::_localparameters, true, false, false); static SwitchOption interfaceLocalParametersLocal (interfaceLocalParameters, "Local", "Use the local values", true); static SwitchOption interfaceLocalParametersDefault (interfaceLocalParameters, "ParticleData", "Use the values from the particleData objects", false); static Parameter<a1ThreePionDecayer,double> interfaceCoupling ("Coupling", "The overall coupling for the decay", &a1ThreePionDecayer::_coupling, 90.44, 0.0, 1000.0, false, false, true); static ParVector<a1ThreePionDecayer,Energy> interfacerhomass ("RhoMasses", "The masses of the different rho resonnaces", &a1ThreePionDecayer::_rhomass, GeV, 0, ZERO, ZERO, 10000*GeV, false, false, true); static ParVector<a1ThreePionDecayer,Energy> interfacerhowidth ("RhoWidths", "The widths of the different rho resonnaces", &a1ThreePionDecayer::_rhowidth, GeV, 0, ZERO, ZERO, 10000*GeV, false, false, true); static ParVector<a1ThreePionDecayer,double> interfaceRhoMagnitude ("RhoMagnitude", "The magnitude of the rho couplings", &a1ThreePionDecayer::_rhomag, -1, 1.0, 0.0, 10.0, false, false, Interface::limited); static ParVector<a1ThreePionDecayer,double> interfaceRhoPhase ("RhoPhase", "The phase of the rho coupling", &a1ThreePionDecayer::_rhophase, -1, 0., 0.0, 2.*Constants::pi, false, false, Interface::limited); static Parameter<a1ThreePionDecayer,Energy2> interfaceLambda2 ("Lambda2", "The value of the mass scale squared to use in the form-factor", &a1ThreePionDecayer::_lambda2, GeV2, 1.2*GeV2, 0.0001*GeV2, 10.0*GeV2, false, false, true); static Parameter<a1ThreePionDecayer,Energy2> interfacea1mass2 ("a1mass2", "The local value of the square of the a_1 mass", &a1ThreePionDecayer::_a1mass2, GeV2, 1.5129*GeV2, 0.5*GeV2, 10.0*GeV2, false, false, true); static Parameter<a1ThreePionDecayer,Energy> interfaceSigmaMass ("SigmaMass", "The local value of the sigma mass", &a1ThreePionDecayer::_sigmamass, GeV, 0.8*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<a1ThreePionDecayer,Energy> interfaceSigmaWidth ("SigmaWidth", "The local value of the sigma width", &a1ThreePionDecayer::_sigmawidth, GeV, 0.8*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<a1ThreePionDecayer,double> interfacezerowgts ("AllNeutralWeights", "The weights of the different channels to use for the integration of" " the decay a_1^0->pi0pi0pi0", &a1ThreePionDecayer::_zerowgts, 0, 0, 0, -10000, 10000, false, false, true); static ParVector<a1ThreePionDecayer,double> interfaceonewgts ("OneChargedWeights", "The weights of the different channels to use for the integration of" " the decay a_1^+->pi+pi0pi0", &a1ThreePionDecayer::_onewgts, 0, 0, 0, -10000, 10000, false, false, true); static ParVector<a1ThreePionDecayer,double> interfacetwowgts ("TwoChargedWeights", "The weights of the different channels to use for the integration of" " the decay a_1^0->pi+pi-pi0", &a1ThreePionDecayer::_twowgts, 0, 0, 0, -10000, 10000, false, false, true); static ParVector<a1ThreePionDecayer,double> interfacethreewgts ("ThreeChargedWeights", "The weights of the different channels to use for the integration of" " the decay a_1^+->pi+pi+pi-", &a1ThreePionDecayer::_threewgts, 0, 0, 0, -10000, 10000, false, false, true); static Parameter<a1ThreePionDecayer,double> interfaceZeroMax ("ZeroMax", "The maximum weight for the integration fo the channel a_1^0->pi0pi0pi0", &a1ThreePionDecayer::_zeromax, 107.793, 0.0, 10000.0, false, false, true); static Parameter<a1ThreePionDecayer,double> interfaceOneMax ("OneMax", "The maximum weight for the integration fo the channel a_1^+->pi+pi0pi0", &a1ThreePionDecayer::_onemax, 1088.96, 0.0, 10000.0, false, false, true); static Parameter<a1ThreePionDecayer,double> interfaceTwoMax ("TwoMax", "The maximum weight for the integration fo the channel a_1^0->pi+pi-pi0", &a1ThreePionDecayer::_twomax, 1750.73, 0.0, 10000.0, false, false, true); static Parameter<a1ThreePionDecayer,double> interfaceThreeMax ("ThreeMax", "The maximum weight for the integration fo the channel a_1^+->pi+pi+pi-", &a1ThreePionDecayer::_threemax, 739.334, 0.0, 10000.0, false, false, true); static Parameter<a1ThreePionDecayer,double> interfaceSigmaMagnitude ("SigmaMagnitude", "magnitude of the relative sigma coupling", &a1ThreePionDecayer::_zmag, 1.3998721, 0.0, 10.0e20, false, false, true); static Parameter<a1ThreePionDecayer,double> interfaceSigmaPhase ("SigmaPhase", "phase of the relative sigma coupling", &a1ThreePionDecayer::_zphase, 0.43585036, 0.0, Constants::twopi, false, false, true); } double a1ThreePionDecayer::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { useMe(); if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors,_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); ME(DecayMatrixElement(PDT::Spin1,PDT::Spin0,PDT::Spin0,PDT::Spin0)); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); // set up the spin information for the decay products for(unsigned int ix=0;ix<3;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return 0.; } // momentum of the incoming particle Lorentz5Momentum Q=inpart.momentum(); // momenta of the intermediates Energy2 s1=(decay[1]->momentum()+decay[2]->momentum()).m2(); Energy2 s2=(decay[0]->momentum()+decay[2]->momentum()).m2(); Energy2 s3=(decay[0]->momentum()+decay[1]->momentum()).m2(); Energy2 dot01=Q*decay[0]->momentum(); Energy2 dot02=Q*decay[1]->momentum(); Energy2 dot03=Q*decay[2]->momentum(); // vector for the output LorentzVector<complex<Energy3> > output; // a_10 -> pi0pi0pi0 if(imode()==0) { //the breit-wigners Complex sig1=sigmaBreitWigner(s1); Complex sig2=sigmaBreitWigner(s2); Complex sig3=sigmaBreitWigner(s3); // compute the vector LorentzPolarizationVectorE tmpoutput; if(ichan<0) { tmpoutput= sig1*(decay[0]->momentum())+sig2*(decay[1]->momentum()) +sig3*(decay[2]->momentum()); } else if(ichan==0) tmpoutput=sig1*(decay[0]->momentum()); else if(ichan==1) tmpoutput=sig2*(decay[1]->momentum()); else if(ichan==2) tmpoutput=sig3*(decay[2]->momentum()); // the coupling z and identical particle factor output = tmpoutput * _zsigma* 1./sqrt(6.) *Q.mass2(); } // a_1+ -> pi0pi0pi+ else if(imode()==1) { // scalar propagator Complex sig1 = sigmaBreitWigner(s3); // sigma terms if(ichan<0||ichan==6) output = _zsigma*Q.mass2()*sig1*decay[2]->momentum(); // the rho terms for(int ix=0,N=_rhocoupling.size();ix<N;++ix) { Complex rho1=_rhocoupling[ix]*rhoBreitWigner(s1,ix); Complex rho2=_rhocoupling[ix]*rhoBreitWigner(s2,ix); if(ichan<0||ichan==2*ix) { output +=rho1*(dot03*(decay[1]->momentum())- dot02*(decay[2]->momentum())); } if(ichan<0||ichan==2*ix+1){ output +=rho2*(dot03*(decay[0]->momentum())- dot01*(decay[2]->momentum())); } } // the identical particle factor output *= 1./sqrt(2.); } // a_10->pi+pi-pi0 else if(imode()==2) { // the sigma terms Complex sig1=sigmaBreitWigner(s3); if(ichan<0||ichan==6) output = _zsigma*Q.mass2()*sig1*decay[2]->momentum(); // rho terms for(int ix=0,N=_rhocoupling.size();ix<N;++ix) { Complex rho1=_rhocoupling[ix]*rhoBreitWigner(s1,ix); Complex rho2=_rhocoupling[ix]*rhoBreitWigner(s2,ix); if(ichan<0||ichan==2*ix) { output+=rho1*(dot03*(decay[1]->momentum()) -dot02*(decay[2]->momentum())); } if(ichan<0||ichan==2*ix+1) { output+=rho2*(dot03*(decay[0]->momentum()) -dot01*(decay[2]->momentum())); } } } // a1+ -> pi+pi+pi- else if(imode()==3) { // the scalar propagators Complex sig1=sigmaBreitWigner(s1); Complex sig2=sigmaBreitWigner(s2); // sigma terms LorentzPolarizationVectorE tmpoutput; if(ichan<0||ichan==6) tmpoutput+=sig1*(decay[0]->momentum()); if(ichan<0||ichan==7) tmpoutput+=sig2*(decay[1]->momentum()); output = tmpoutput * _zsigma * Q.mass2(); // rho terms for(int ix=0,N=_rhocoupling.size();ix<N;++ix) { Complex rho1 = _rhocoupling[ix]*rhoBreitWigner(s1,ix); Complex rho2 = _rhocoupling[ix]*rhoBreitWigner(s2,ix); if(ichan<0||ichan==2*ix) { output-=rho1*( dot03*(decay[1]->momentum())- dot02*(decay[2]->momentum())); } if(ichan<0||ichan==2*ix+1) { output-=rho2*( dot03*(decay[0]->momentum())- dot01*(decay[2]->momentum())); } } // the identical particle factor output *= 1./sqrt(2.); } // form-factor LorentzPolarizationVector outputFinal = output * a1FormFactor(Q.mass2())*_coupling/(Q.mass()*sqr(_rhomass[0])); // compute the matrix element for(unsigned int ix=0;ix<3;++ix) ME()(ix,0,0,0)=outputFinal.dot(_vectors[ix]); // return the answer double out = ME().contract(_rho).real(); // test of the answer // double test = threeBodyMatrixElement(imode(),sqr(inpart.mass()),s3,s2,s1, // decay[0]->mass(),decay[1]->mass(), // decay[2]->mass()); // if(ichan<0) cerr << "testing matrix element " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << decay[2]->PDGName() << " " << out << " " << test << " " // << (out-test)/(out+test) << "\n"; return out; } // matrix element for the running a_1 width double a1ThreePionDecayer:: threeBodyMatrixElement(const int iopt,const Energy2 q2, const Energy2 s3, const Energy2 s2,const Energy2 s1, const Energy m1, const Energy m2 ,const Energy m3) const { Energy6 meout(0.*pow<3,1>(GeV2)); Energy2 m12(sqr(m1)),m22(sqr(m2)),m32(sqr(m3)); Energy2 dot01(q2-s1+m12),dot02(q2-s2+m22),dot03(q2-s3+m32), dot12(s3-m12-m22),dot13(s2-m12-m32),dot23(s1-m22-m32); if(iopt==0) { Complex sig1=sigmaBreitWigner(s1); Complex sig2=sigmaBreitWigner(s2); Complex sig3=sigmaBreitWigner(s3); Energy2 metemp = real(0.25*sig1*conj(sig1)*lambda(q2,s1,m12)/q2+ 0.25*sig2*conj(sig2)*lambda(q2,s2,m22)/q2+ 0.25*sig3*conj(sig3)*lambda(q2,s3,m32)/q2+ sig1*conj(sig2)*(-dot12+0.5*dot01*dot02/q2)+ sig1*conj(sig3)*(-dot13+0.5*dot01*dot03/q2)+ sig2*conj(sig3)*(-dot23+0.5*dot02*dot03/q2)); meout = metemp*real(_zsigma*conj(_zsigma))/6.*sqr(q2); } else if(iopt==1||iopt==2) { // the sigma terms Complex sig=sigmaBreitWigner(s3); Complex rho1,rho2; for(int ix=0,N=_rhocoupling.size();ix<N;++ix) { rho1 += _rhocoupling[ix]*rhoBreitWigner(s1,ix); rho2 += _rhocoupling[ix]*rhoBreitWigner(s2,ix); } meout = 0.25*lambda(q2,m32,s3)*q2*norm(_zsigma*sig)+ 0.25*norm(rho1)*(dot23*dot02*dot03-m32*sqr(dot02)-m22*sqr(dot03))+ 0.25*norm(rho2)*(dot13*dot01*dot03-m32*sqr(dot01)-m12*sqr(dot03))- 0.5*real(_zsigma*sig*conj(rho1))*q2*(dot03*dot23-2.*m32*dot02)- 0.5*real(_zsigma*sig*conj(rho2))*q2*(dot03*dot13-2.*m32*dot01)- 0.25*real(rho1*conj(rho2))*(sqr(dot03)*dot12-dot03*dot02*dot13 -dot03*dot01*dot23+2.*m32*dot02*dot01); if(iopt==1) meout *= 0.5; } else if(iopt==3) { Complex sig1=sigmaBreitWigner(s1); Complex sig2=sigmaBreitWigner(s2); Complex rho1,rho2; for(int ix=0,N=_rhocoupling.size();ix<N;++ix) { rho1 += _rhocoupling[ix]*rhoBreitWigner(s1,ix); rho2 += _rhocoupling[ix]*rhoBreitWigner(s2,ix); } meout = 0.25*lambda(q2,m12,s1)*q2*norm(_zsigma*sig1)+ 0.25*lambda(q2,m22,s2)*q2*norm(_zsigma*sig2)+ 0.25*norm(rho1)*(dot23*dot02*dot03-m32*sqr(dot02)-m22*sqr(dot03))+ 0.25*norm(rho2)*(dot13*dot01*dot03-m32*sqr(dot01)-m12*sqr(dot03))- 0.25*real(rho1*conj(rho2))*(sqr(dot03)*dot12-dot03*dot02*dot13 -dot03*dot01*dot23+2.*m32*dot02*dot01)- real(_zsigma*sig1*conj(_zsigma*sig2))*q2*(q2*dot12-0.5*dot02*dot01)+ 0.5*real(_zsigma*sig1*conj(rho1))*q2*(dot03*dot12-dot02*dot13)+ 0.5*real(_zsigma*sig2*conj(rho1))*q2*(2.*dot03*m22-dot02*dot23)+ 0.5*real(_zsigma*sig1*conj(rho2))*q2*(2.*dot03*m12-dot01*dot13)+ 0.5*real(_zsigma*sig2*conj(rho2))*q2*(dot03*dot12-dot01*dot23); meout *= 0.5; } return meout*a1FormFactor(q2)*sqr(_coupling/sqr(_rhomass[0]))/q2/3.; } WidthCalculatorBasePtr a1ThreePionDecayer::threeBodyMEIntegrator(const DecayMode & dm) const { ParticleMSet::const_iterator pit = dm.products().begin(); ParticleMSet::const_iterator pend = dm.products().end(); int ncharged=0; for( ; pit!=pend;++pit) { if(abs((**pit).id())==ParticleID::piplus) ++ncharged; } // integrator to perform the integral vector<double> inweights(2,0.5); vector<int> intype;intype.push_back(2);intype.push_back(3); vector<Energy> inmass(2,_rhomass[0]),inwidth(2,_rhowidth[0]); vector<double> inpow(2,0.0); Energy m[3]; Energy mpi0=getParticleData(ParticleID::pi0)->mass(); Energy mpic=getParticleData(ParticleID::piplus)->mass(); m[0] = ncharged<2 ? mpi0 : mpic; m[1] = m[0]; m[2] = (ncharged==0||ncharged==2) ? mpi0 : mpic; return new_ptr(ThreeBodyAllOnCalculator<a1ThreePionDecayer> (inweights,intype,inmass,inwidth,inpow,*this,ncharged,m[0],m[1],m[2])); } // output the setup information for the particle database void a1ThreePionDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); output << "newdef " << name() << ":LocalParameters " << _localparameters << "\n"; output << "newdef " << name() << ":Coupling " << _coupling << "\n"; output << "newdef " << name() << ":Lambda2 " << _lambda2/GeV2 << "\n"; output << "newdef " << name() << ":a1mass2 " << _a1mass2/GeV2 << "\n"; output << "newdef " << name() << ":SigmaMass " << _sigmamass/GeV << "\n"; output << "newdef " << name() << ":SigmaWidth " << _sigmawidth/GeV << "\n"; output << "newdef " << name() << ":SigmaMagnitude " << _zmag << "\n"; output << "newdef " << name() << ":SigmaPhase " << _zphase << "\n"; for(unsigned int ix=0;ix<_rhomag.size();++ix) { if(ix<1) output << "newdef " << name() << ":RhoMagnitude " << ix << " " << _rhomag[ix] << "\n"; else output << "insert " << name() << ":RhoMagnitude " << ix << " " << _rhomag[ix] << "\n"; } for(unsigned int ix=0;ix<_rhophase.size();++ix) { if(ix<1) output << "newdef " << name() << ":RhoPhase " << ix << " " << _rhophase[ix] << "\n"; else output << "insert " << name() << ":RhoPhase " << ix << " " << _rhophase[ix] << "\n"; } for(unsigned int ix=0;ix<_rhomass.size();++ix) { if(ix<1) output << "newdef " << name() << ":RhoMasses " << ix << " " << _rhomass[ix]/GeV << "\n"; else output << "insert " << name() << ":RhoMasses " << ix << " " << _rhomass[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_rhowidth.size();++ix) { if(ix<1) output << "newdef " << name() << ":RhoWidths " << ix << " " << _rhowidth[ix]/GeV << "\n"; else output << "insert " << name() << ":RhoWidths " << ix << " " << _rhowidth[ix]/GeV << "\n"; } // integration weights for the different channels for(unsigned int ix=0;ix<_zerowgts.size();++ix) { output << "newdef " << name() << ":AllNeutralWeights " << ix << " " << _zerowgts[ix] << "\n"; } for(unsigned int ix=0;ix<_onewgts.size();++ix) { output << "newdef " << name() << ":OneChargedWeights " << ix << " " << _onewgts[ix] << "\n"; } for(unsigned int ix=0;ix<_twowgts.size();++ix) { output << "newdef " << name() << ":TwoChargedWeights " << ix << " " << _twowgts[ix] << "\n"; } for(unsigned int ix=0;ix<_threewgts.size();++ix) { output << "newdef " << name() << ":ThreeChargedWeights " << ix << " " << _threewgts[ix] << "\n"; } output << "newdef " << name() << ":ZeroMax " << _zeromax << "\n"; output << "newdef " << name() << ":OneMax " << _onemax << "\n"; output << "newdef " << name() << ":TwoMax " << _twomax << "\n"; output << "newdef " << name() << ":ThreeMax " << _threemax << "\n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/a1SimpleDecayer.cc��������������������������������������������0000644�0001750�0001750�00000043604�11754474773�023555� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // a1SimpleDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the a1SimpleDecayer class. // #include "a1SimpleDecayer.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/PDT/WidthCalculatorBase.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; a1SimpleDecayer::a1SimpleDecayer() : _rhomass(3), _rhowidth(3), _rhowgts(3),_localparameters(true), _coupling(47.95/GeV), _onemax(5.4474), _twomax(5.47784), _threemax(5.40185), _onewgts(6), _twowgts(6), _threewgts(6), _mpi(ZERO) { // rho masses, widths and weights _rhomass[0] = 0.773*GeV; _rhowidth[0] = 0.145*GeV; _rhowgts[0] = 1.0; _rhomass[1] = 1.370*GeV; _rhowidth[1] = 0.510*GeV; _rhowgts[1] = -0.145; _rhomass[2] = 1.750*GeV; _rhowidth[2] = 0.120*GeV; _rhowgts[2] = 0.; // integration weights _onewgts[0] = 0.235562; _twowgts[0] = 0.236208; _threewgts[0] = 0.234259; _onewgts[1] = 0.231098; _twowgts[1] = 0.229481; _threewgts[1] = 0.233634; _onewgts[2] = 0.131071; _twowgts[2] = 0.131169; _threewgts[2] = 0.135922; _onewgts[3] = 0.131135; _twowgts[3] = 0.133604; _threewgts[3] = 0.129231; _onewgts[4] = 0.135841; _twowgts[4] = 0.132685; _threewgts[4] = 0.133949; _onewgts[5] = 0.135294; _twowgts[5] = 0.136854; _threewgts[5] = 0.133005; generateIntermediates(true); } void a1SimpleDecayer::doinit() { DecayIntegrator::doinit(); // pointers to the particles we need as external particles tPDPtr a1p = getParticleData(ParticleID::a_1plus); tPDPtr a10 = getParticleData(ParticleID::a_10); tPDPtr pip = getParticleData(ParticleID::piplus); tPDPtr pim = getParticleData(ParticleID::piminus); tPDPtr pi0 = getParticleData(ParticleID::pi0); // the different rho resonances tPDPtr rhop[3] = {getParticleData(213),getParticleData(100213), getParticleData(30213)}; tPDPtr rho0[3] = {getParticleData(113),getParticleData(100113), getParticleData(30113)}; tPDPtr rhom[3] = {getParticleData(-213),getParticleData(-100213), getParticleData(-30213)}; tPDVector extpart(4); DecayPhaseSpaceChannelPtr newchannel; DecayPhaseSpaceModePtr mode; // decay mode a_1+ -> pi+ pi0 pi0 extpart[0]=a1p; extpart[1]=pi0; extpart[2]=pi0; extpart[3]=pip; mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); for(unsigned int ix=0;ix<3;++ix) { if(!rhop[ix]) continue; // first rho+ channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,2); newchannel->addIntermediate(rhop[ix],0,0.0,1,3); mode->addChannel(newchannel); // second rho+ channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,1); newchannel->addIntermediate(rhop[ix],0,0.0,2,3); mode->addChannel(newchannel); } if(_onewgts.size()!=mode->numberChannels()) _onewgts=vector<double>(mode->numberChannels(),1./mode->numberChannels()); addMode(mode,_onemax,_onewgts); // decay mode a_10 -> pi+ pi- pi0 extpart[0]=a10; extpart[1]=pip; extpart[2]=pim; extpart[3]=pi0; mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); for(unsigned int ix=0;ix<3;++ix) { if(!rhop[ix]) continue; // first rho channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,2); newchannel->addIntermediate(rhop[ix],0,0.0,1,3); mode->addChannel(newchannel); // second channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,1); newchannel->addIntermediate(rhom[ix],0,0.0,2,3); mode->addChannel(newchannel); } if(_twowgts.size()!=mode->numberChannels()) _twowgts=vector<double>(mode->numberChannels(),1./mode->numberChannels()); addMode(mode,_twomax,_twowgts); // decay mode a_1+ -> pi+ pi+ pi- extpart[0]=a1p; extpart[1]=pip; extpart[2]=pip; extpart[3]=pim; mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); for(unsigned int ix=0;ix<3;++ix) { if(!rho0[ix]) continue; // the neutral rho channels // first channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,2); newchannel->addIntermediate(rho0[ix],0,0.0,1,3); mode->addChannel(newchannel); // interchanged channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,1); newchannel->addIntermediate(rho0[ix],0,0.0,2,3); mode->addChannel(newchannel); } if(_threewgts.size()!=mode->numberChannels()) _threewgts=vector<double>(mode->numberChannels(),1./mode->numberChannels()); addMode(mode,_threemax,_threewgts); // if using local parameters set the values in the phase space channels if(_localparameters) { for(unsigned int iy=0;iy<_rhomass.size();++iy) { resetIntermediate(rho0[iy],_rhomass[iy],_rhowidth[iy]); resetIntermediate(rhop[iy],_rhomass[iy],_rhowidth[iy]); resetIntermediate(rhom[iy],_rhomass[iy],_rhowidth[iy]); } // make sure the rho array has enough masses if(_rhomass.size()<3) { for(unsigned int ix=_rhomass.size();ix<3;++ix) { _rhomass.push_back(rhop[ix]->mass()); _rhowidth.push_back(rhop[ix]->width()); } } } // set the local variables if needed else { // masses and widths for the particles _rhomass.resize(3);_rhowidth.resize(3); for(unsigned int ix=0;ix<3;++ix) { if(!rhop[ix]) continue; _rhomass[ix]=rhop[ix]->mass(); _rhowidth[ix]=rhop[ix]->width(); } } _mpi = pip->mass(); } void a1SimpleDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { // get the weights for the different channels for(unsigned int ix=0;ix<_onewgts.size();++ix) _onewgts[ix]=mode(0)->channelWeight(ix); for(unsigned int ix=0;ix<_twowgts.size();++ix) _twowgts[ix]=mode(1)->channelWeight(ix); for(unsigned int ix=0;ix<_threewgts.size();++ix) _threewgts[ix]=mode(2)->channelWeight(ix); // get the maximum weight _onemax = mode(0)->maxWeight(); _twomax = mode(1)->maxWeight(); _threemax = mode(2)->maxWeight(); } } void a1SimpleDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_rhomass,GeV) << ounit(_rhowidth,GeV) << _rhowgts << _localparameters << ounit(_coupling,1./GeV) << _onemax << _twomax << _threemax << _onewgts << _twowgts << _threewgts << ounit(_mpi,GeV); } void a1SimpleDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_rhomass,GeV) >> iunit(_rhowidth,GeV) >> _rhowgts >> _localparameters >> iunit(_coupling,1./GeV) >> _onemax >> _twomax >> _threemax >> _onewgts >> _twowgts >> _threewgts >> iunit(_mpi,GeV); } ClassDescription<a1SimpleDecayer> a1SimpleDecayer::inita1SimpleDecayer; // Definition of the static class description member. void a1SimpleDecayer::Init() { static ClassDocumentation<a1SimpleDecayer> documentation ("The a1SimpleDecayer class implements a simple model for the decay of" " the a_1 to three pions based on the approach of Kuhn and Santanmaria," " Z.Phys. C48, 445 (1990)", "The decays of the $a_1$ were modelled using the approach of " "\\cite{Kuhn:1990ad}.\n", "\\bibitem{Kuhn:1990ad} J.~H.~Kuhn and A.~Santamaria,\n" "Z.\\ Phys.\\ C {\\bf 48} (1990) 445.\n" "%%CITATION = ZEPYA,C48,445;%%\n"); static Switch<a1SimpleDecayer,bool> interfaceLocalParameters ("LocalParameters", "Use local values of the intermediate resonances masses and widths", &a1SimpleDecayer::_localparameters, true, false, false); static SwitchOption interfaceLocalParametersLocal (interfaceLocalParameters, "Local", "Use the local values", true); static SwitchOption interfaceLocalParametersDefault (interfaceLocalParameters, "ParticleData", "Use the values from the particleData objects", false); static Parameter<a1SimpleDecayer,InvEnergy> interfaceCoupling ("Coupling", "The overall coupling for the decay", &a1SimpleDecayer::_coupling, 1./GeV, 47.95/GeV, ZERO, 100./GeV, false, false, Interface::limited); static ParVector<a1SimpleDecayer,Energy> interfacerhomass ("RhoMasses", "The masses of the different rho resonnaces", &a1SimpleDecayer::_rhomass, MeV, 0, ZERO, ZERO, 10000*MeV, false, false, true); static ParVector<a1SimpleDecayer,Energy> interfacerhowidth ("RhoWidths", "The widths of the different rho resonnaces", &a1SimpleDecayer::_rhowidth, MeV, 0, ZERO, ZERO, 10000*MeV, false, false, true); static ParVector<a1SimpleDecayer,double> interfaceRhoWeights ("RhoWeights", "Weight for the different rho resonances", &a1SimpleDecayer::_rhowgts, -1, 0.0, -10.0, 10.0, false, false, Interface::limited); static Parameter<a1SimpleDecayer,double> interfaceOneMax ("OneMax", "The maximum weight for the integration fo the channel a_1^+->pi+pi0pi0", &a1SimpleDecayer::_onemax, 5.57613, 0.0, 10000.0, false, false, true); static Parameter<a1SimpleDecayer,double> interfaceTwoMax ("TwoMax", "The maximum weight for the integration fo the channel a_1^0->pi+pi-pi0", &a1SimpleDecayer::_twomax, 5.61218, 0.0, 10000.0, false, false, true); static Parameter<a1SimpleDecayer,double> interfaceThreeMax ("ThreeMax", "The maximum weight for the integration fo the channel a_1^+->pi+pi+pi-", &a1SimpleDecayer::_threemax, 5.5384, 0.0, 10000.0, false, false, true); static ParVector<a1SimpleDecayer,double> interfaceonewgts ("OneChargedWeights", "The weights of the different channels to use for the integration of" " the decay a_1^+->pi+pi0pi0", &a1SimpleDecayer::_onewgts, 0, 0, 0, 0., 1., false, false, true); static ParVector<a1SimpleDecayer,double> interfacetwowgts ("TwoChargedWeights", "The weights of the different channels to use for the integration of" " the decay a_1^0->pi+pi-pi0", &a1SimpleDecayer::_twowgts, 0, 0, 0, 0., 1., false, false, true); static ParVector<a1SimpleDecayer,double> interfacethreewgts ("ThreeChargedWeights", "The weights of the different channels to use for the integration of" " the decay a_1^+->pi+pi+pi-", &a1SimpleDecayer::_threewgts, 0, 0, 0, 0., 1., false, false, true); } int a1SimpleDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=3) return -1; int id(parent->id()); // check the pions tPDVector::const_iterator pit = children.begin(); tPDVector::const_iterator pend = children.end(); int idtemp,npi0(0),npiplus(0),npiminus(0); for( ; pit!=pend;++pit) { idtemp=(**pit).id(); if(idtemp==ParticleID::piplus) ++npiplus; else if(idtemp==ParticleID::piminus) ++npiminus; else if(idtemp==ParticleID::pi0) ++npi0; } int imode(-1); // a_1+ decay modes if(id==ParticleID::a_1plus) { cc=false; if(npiplus==1&&npi0==2) imode=0; else if(npiplus==2&&npiminus==1) imode=2; } // a_1- modes else if(id==ParticleID::a_1minus) { cc=true; if(npiminus==1&&npi0==2) imode=0; else if(npiminus==2&&npiplus==1) imode=2; } // a_0 modes else if(id==ParticleID::a_10) { cc=false; if(npiminus==1&&npiplus==1&&npi0==1) imode=1; } return imode; } double a1SimpleDecayer::me2(const int ichan,const Particle & inpart, const ParticleVector & decay,MEOption meopt) const { useMe(); if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors,_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); ME(DecayMatrixElement(PDT::Spin1,PDT::Spin0,PDT::Spin0,PDT::Spin0)); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); // set up the spin information for the decay products for(unsigned int ix=0;ix<3;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return 0.; } Lorentz5Vector<complex<Energy> > current; Energy2 s1 = (decay[1]->momentum()+decay[2]->momentum()).m2(); Energy2 s2 = (decay[0]->momentum()+decay[2]->momentum()).m2(); if(ichan<0) { current = rhoFormFactor(s2,-1)*(decay[0]->momentum()-decay[2]->momentum()) +rhoFormFactor(s1,-1)*(decay[1]->momentum()-decay[2]->momentum()); } else if(ichan<3) { current = rhoFormFactor(s2,ichan)*(decay[0]->momentum()-decay[2]->momentum()); } else if(ichan<6) { current = rhoFormFactor(s1,-1)*(decay[1]->momentum()-decay[2]->momentum()); } // compute the matrix element for(unsigned int ix=0;ix<3;++ix) ME()(ix,0,0,0)=_coupling*current.dot(_vectors[ix]); // matrix element and identical particle factor double output=ME().contract(_rho).real(); if(imode()!=1) output*=0.5; // test the output // double test = threeBodyMatrixElement(imode(),sqr(inpart.mass()), // s3,s2,s1,decay[0]->mass(),decay[1]->mass(), // decay[2]->mass()); // if(ichan<0) cerr << "testing matrix element " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << decay[2]->PDGName() << output << " " << test << " " // << (output-test)/(output+test) << "\n"; // return the answer return output; } double a1SimpleDecayer:: threeBodyMatrixElement(const int iopt,const Energy2 q2, const Energy2 s3, const Energy2 s2,const Energy2 s1, const Energy m1, const Energy m2 ,const Energy m3) const { Energy2 v12 = (s2-2.*sqr(m1)-2.*sqr(m3))+0.25*sqr(s1-s3-sqr(m1)+sqr(m3))/q2; Energy2 v22 = (s1-2.*sqr(m2)-2.*sqr(m3))+0.25*sqr(s2-s3-sqr(m2)+sqr(m3))/q2; Energy2 v1v2 = (0.5*q2-s3-0.5*(3*sqr(m3)-sqr(m1)-sqr(m2))) +0.25*(s1-s3-sqr(m1)+sqr(m3))*(s2-s3-sqr(m2)+sqr(m3))/q2; Complex rho1=rhoFormFactor(s2,-1); Complex rho2=rhoFormFactor(s1,-1); double me = sqr(_coupling)*real(v12*rho1*conj(rho1)+v22*rho2*conj(rho2) +2.*v1v2*rho1*conj(rho2))/3.; if(iopt!=1) me *= 0.5; return me; } WidthCalculatorBasePtr a1SimpleDecayer::threeBodyMEIntegrator(const DecayMode & dm) const { ParticleMSet::const_iterator pit = dm.products().begin(); ParticleMSet::const_iterator pend = dm.products().end(); int ncharged=0; for( ; pit!=pend;++pit) { if(abs((**pit).id())==ParticleID::piplus) ++ncharged; } --ncharged; // integrator to perform the integral vector<double> inweights;inweights.push_back(0.5);inweights.push_back(0.5); vector<int> intype;intype.push_back(2);intype.push_back(3); vector<Energy> inmass(2,_rhomass[0]),inwidth(2,_rhowidth[0]); vector<double> inpow(2,0.0); Energy mpi0=getParticleData(ParticleID::pi0)->mass(); Energy mpic=getParticleData(ParticleID::piplus)->mass(); Energy m[3]; m[0] = ncharged<2 ? mpi0 : mpic; m[1] = m[0]; m[2] = (ncharged==0||ncharged==2) ? mpi0 : mpic; return new_ptr(ThreeBodyAllOnCalculator<a1SimpleDecayer> (inweights,intype,inmass,inwidth,inpow,*this,ncharged,m[0],m[1],m[2])); } void a1SimpleDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); output << "newdef " << name() << ":LocalParameters " << _localparameters << "\n"; output << "newdef " << name() << ":Coupling " << _coupling*GeV << "\n"; output << "newdef " << name() << ":OneMax " << _onemax << "\n"; output << "newdef " << name() << ":TwoMax " << _twomax << "\n"; output << "newdef " << name() << ":ThreeMax " << _threemax << "\n"; for(unsigned int ix=0;ix<_rhomass.size();++ix) { if(ix<3) output << "newdef " << name() << ":RhoMasses " << ix << " " << _rhomass[ix]/MeV << "\n"; else output << "insert " << name() << ":RhoMasses " << ix << " " << _rhomass[ix]/MeV << "\n"; } for(unsigned int ix=0;ix<_rhowidth.size();++ix) { if(ix<3) output << "newdef " << name() << ":RhoWidths " << ix << " " << _rhowidth[ix]/MeV << "\n"; else output << "insert " << name() << ":RhoWidths " << ix << " " << _rhowidth[ix]/MeV << "\n"; } for(unsigned int ix=0;ix<_rhowgts.size();++ix) { if(ix<3) output << "newdef " << name() << ":RhoWeights " << ix << " " << _rhowgts[ix] << "\n"; else output << "insert " << name() << ":RhoWeights " << ix << " " << _rhowgts[ix] << "\n"; } for(unsigned int ix=0;ix<_onewgts.size();++ix) { output << "newdef " << name() << ":OneChargedWeights " << ix << " " << _onewgts[ix] << "\n"; } for(unsigned int ix=0;ix<_twowgts.size();++ix) { output << "newdef " << name() << ":TwoChargedWeights " << ix << " " << _twowgts[ix] << "\n"; } for(unsigned int ix=0;ix<_threewgts.size();++ix) { output << "newdef " << name() << ":ThreeChargedWeights " << ix << " " << _threewgts[ix] << "\n"; } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } // functions to return the Breit-Wigners Complex a1SimpleDecayer::rhoFormFactor(Energy2 q2,int ires) const { Complex output(0.),norm(0.); for(unsigned int ix=0,N=min(3,int(_rhowgts.size()));ix<N;++ix) norm+=_rhowgts[ix]; if(ires<0) { for(unsigned int ix=0,N=min(3,int(_rhowgts.size()));ix<N;++ix) { output+=_rhowgts[ix]*rhoBreitWigner(q2,ix); } } else { unsigned int temp(ires); if(temp<_rhowgts.size()&&temp<3) output=_rhowgts[temp]*rhoBreitWigner(q2,temp); else output=0.; } return output/norm; } ����������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/Makefile.in���������������������������������������������������0000644�0001750�0001750�00000055443�11756461676�022347� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Decay/VectorMeson DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwVMDecay_la_LIBADD = am_HwVMDecay_la_OBJECTS = a1ThreePionCLEODecayer.lo a1SimpleDecayer.lo \ a1ThreePionDecayer.lo PVectorMesonVectorPScalarDecayer.lo \ VectorMeson2FermionDecayer.lo VectorMeson2MesonDecayer.lo \ VectorMeson3PionDecayer.lo \ VectorMesonPScalarFermionsDecayer.lo \ VectorMesonPVectorPScalarDecayer.lo \ VectorMesonVectorPScalarDecayer.lo \ VectorMesonVectorScalarDecayer.lo \ VectorMesonVectorVectorDecayer.lo OniumToOniumPiPiDecayer.lo HwVMDecay_la_OBJECTS = $(am_HwVMDecay_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwVMDecay_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(HwVMDecay_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwVMDecay_la_SOURCES) DIST_SOURCES = $(HwVMDecay_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwVMDecay.la HwVMDecay_la_SOURCES = \ a1ThreePionCLEODecayer.cc a1ThreePionCLEODecayer.h \ a1SimpleDecayer.cc a1SimpleDecayer.h\ a1ThreePionDecayer.cc a1ThreePionDecayer.h \ PVectorMesonVectorPScalarDecayer.cc PVectorMesonVectorPScalarDecayer.h \ VectorMeson2FermionDecayer.cc VectorMeson2FermionDecayer.h \ VectorMeson2MesonDecayer.cc VectorMeson2MesonDecayer.h \ VectorMeson3PionDecayer.cc VectorMeson3PionDecayer.h \ VectorMesonPScalarFermionsDecayer.cc VectorMesonPScalarFermionsDecayer.h \ VectorMesonPVectorPScalarDecayer.cc VectorMesonPVectorPScalarDecayer.h \ VectorMesonVectorPScalarDecayer.cc VectorMesonVectorPScalarDecayer.h \ VectorMesonVectorScalarDecayer.cc VectorMesonVectorScalarDecayer.h \ VectorMesonVectorVectorDecayer.cc VectorMesonVectorVectorDecayer.h \ OniumToOniumPiPiDecayer.cc OniumToOniumPiPiDecayer.h HwVMDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:1:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Decay/VectorMeson/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Decay/VectorMeson/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwVMDecay.la: $(HwVMDecay_la_OBJECTS) $(HwVMDecay_la_DEPENDENCIES) $(EXTRA_HwVMDecay_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwVMDecay_la_LINK) -rpath $(pkglibdir) $(HwVMDecay_la_OBJECTS) $(HwVMDecay_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OniumToOniumPiPiDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PVectorMesonVectorPScalarDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorMeson2FermionDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorMeson2MesonDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorMeson3PionDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorMesonPScalarFermionsDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorMesonPVectorPScalarDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorMesonVectorPScalarDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorMesonVectorScalarDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorMesonVectorVectorDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/a1SimpleDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/a1ThreePionCLEODecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/a1ThreePionDecayer.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/a1SimpleDecayer.h���������������������������������������������0000644�0001750�0001750�00000020606�11754474773�023414� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // a1SimpleDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_a1SimpleDecayer_H #define HERWIG_a1SimpleDecayer_H // // This is the declaration of the a1SimpleDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; /** * The a1SimpleDecayer class provides a simple model of the decay of the * \f$a_1\f$ meson to three pions including \f$\rho\f$ meson intermediate states. * * @see \ref a1SimpleDecayerInterfaces "The interfaces" * defined for a1SimpleDecayer. */ class a1SimpleDecayer: public DecayIntegrator { public: /** * The default constructor. */ a1SimpleDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector& decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 body partial width. * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; /** * The matrix element to be integrated for the three-body decays as a function * of the invariant masses of pairs of the outgoing particles. * @param imode The mode for which the matrix element is needed. * @param q2 The scale, \e i.e. the mass squared of the decaying particle. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The matrix element */ virtual double threeBodyMatrixElement(const int imode , const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * Breit-Wigner for the \f$\rho\f$ * @param q2 The scale \f$q^2\f$ for the Breit-Wigner. * @param ires Which multiplet to use. */ Complex rhoBreitWigner(Energy2 q2, unsigned int ires) const { Energy q(sqrt(q2)); Energy mass = _rhomass[ires], width = _rhowidth[ires]; Energy pcm0(Kinematics::pstarTwoBodyDecay(mass,_mpi,_mpi)); Energy pcm = 2.*_mpi<q ? Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi) : ZERO; Energy gamrun(width*mass*Math::Pow<3>(pcm/pcm0)/q); return -sqr(mass)/complex<Energy2>(q2-mass*mass,mass*gamrun); } /** * The \f$\rho\f$ form factors * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @param ires Which \f$\rho\f$ multiplet * @return The form factor */ Complex rhoFormFactor(Energy2 q2,int ires) const; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<a1SimpleDecayer> inita1SimpleDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ a1SimpleDecayer & operator=(const a1SimpleDecayer &); private: /** * The \f$\rho\f$ masses */ vector<Energy> _rhomass; /** * The \f$\rho\f$ widths */ vector<Energy> _rhowidth; /** * Weights for the different \f$\rho\f$ resonances */ vector<double> _rhowgts; /** * Use local values of the parameters */ bool _localparameters; /** * The overall coupling for the decay */ InvEnergy _coupling; /** * Maximum weight for the one charged pion channel. */ mutable double _onemax; /** * Maximum weight for the two charged pion channel. */ mutable double _twomax; /** * Maximum weight for the three charged pion channel. */ mutable double _threemax; /** * Weights for the channels for the one charged pion channel. */ mutable vector<double> _onewgts; /** * Weights for the channels for the two charged pion channel. */ mutable vector<double> _twowgts; /** * Weights for the channels for the three charged pion channel. */ mutable vector<double> _threewgts; /** * The pion mass */ Energy _mpi; /** * Spin Density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors */ mutable vector<Helicity::LorentzPolarizationVector> _vectors; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of a1SimpleDecayer. */ template <> struct BaseClassTrait<Herwig::a1SimpleDecayer,1> { /** Typedef of the first base class of a1SimpleDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the a1SimpleDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::a1SimpleDecayer> : public ClassTraitsBase<Herwig::a1SimpleDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::a1SimpleDecayer"; } /** * The name of a file containing the dynamic library where the class * a1SimpleDecayer is implemented. It may also include several, space-separated, * libraries if the class a1SimpleDecayer depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwVMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_a1SimpleDecayer_H */ ��������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMeson3PionDecayer.cc������������������������������������0000644�0001750�0001750�00000065670�11754474773�025266� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMeson3PionDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the VectorMeson3PionDecayer class. // #include "VectorMeson3PionDecayer.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/epsilon.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" using namespace Herwig; using namespace ThePEG::Helicity; void VectorMeson3PionDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { double temp; unsigned int iy; for(unsigned int ix=0;ix<_incoming.size();++ix) { _maxwgt[ix]=mode(ix)->maxWeight(); for(iy=0;iy<3;++iy) { if(mode(ix)->numberChannels()>3*iy+1) { temp=mode(ix)->channelWeight(3*iy)+mode(ix)->channelWeight(3*iy+1)+ mode(ix)->channelWeight(3*iy+2); temp/=3.; switch(iy) { case 0: _rho1wgt[ix]=temp; break; case 1: _rho2wgt[ix]=temp; break; case 2: _rho3wgt[ix]=temp; break; } } } } } } VectorMeson3PionDecayer::VectorMeson3PionDecayer() : _incoming(2), _coupling(2), _directcoupling(2), _directphase(2), _rho2coupling(2), _rho2phase(2), _rho3coupling(2), _rho3phase(2), _maxwgt(2), _rho1wgt(2), _rho2wgt(2), _rho3wgt(2), _rho1mass(2), _rho2mass(2), _rho3mass(2), _rho1width(2), _rho2width(2), _rho3width(2), _defaultmass(2), _mpic(ZERO), _mpi0(ZERO) { // matrix element storage ME(DecayMatrixElement(PDT::Spin1,PDT::Spin0,PDT::Spin0,PDT::Spin0)); // omega decay _incoming[0] = 223; _coupling[0] = 178.71/GeV; _directcoupling[0] = 0.;_directphase[0] = 0.; _rho2coupling[0] = 0.;_rho2phase[0] = 0.; _rho3coupling[0] = 0.;_rho3phase[0] = 0.; _maxwgt[0] = 6.64168; _rho1wgt[0] = 1.0; _rho2wgt[0] = -1.0; _rho3wgt[0] = -1.0; _rho1mass[0] = 0.7758*GeV; _rho2mass[0] = 1.4650*GeV; _rho3mass[0] = 1.7000*GeV; _rho1width[0] = 0.1503*GeV; _rho2width[0] = 0.3100*GeV; _rho3width[0] = 0.2400*GeV; _defaultmass[0] = true; // phi decay _incoming[1] = 333; _coupling[1] = 8.788/GeV; _directcoupling[1] = 0.78; _directphase[1] = -2.47; _rho2coupling[1] = 0.;_rho2phase[1] = 0.; _rho3coupling[1] = 0.;_rho3phase[1] = 0.; _maxwgt[1] = 5.62103; _rho1wgt[1] = 1.0; _rho2wgt[1] = -1.0; _rho3wgt[1] = -1.0; _rho1mass[1] = 0.7758*GeV; _rho2mass[1] = 1.4500*GeV; _rho3mass[1] = 1.7000*GeV; _rho1width[1] = 0.1439*GeV; _rho2width[1] = 0.3100*GeV; _rho3width[1] = 0.2400*GeV; _defaultmass[1] = false; // initial size of the arrays _initsize=_coupling.size(); // generation of intermediates generateIntermediates(true); } void VectorMeson3PionDecayer::doinit() { DecayIntegrator::doinit(); // check the consistence of the decay modes unsigned int isize=_incoming.size(); if(isize!=_coupling.size() || isize!=_directcoupling.size() || isize!=_directphase.size() || isize!=_rho2coupling.size() || isize!=_rho2phase.size() || isize!=_rho3coupling.size() || isize!=_rho3phase.size() || isize!=_maxwgt.size() || isize!=_rho1wgt.size() || isize!=_rho2wgt.size() || isize!=_rho3wgt.size() || isize!=_rho1mass.size() || isize!=_rho2mass.size() || isize!=_rho3mass.size() || isize!=_rho1width.size() || isize!=_rho2width.size() || isize!=_rho3width.size()) throw InitException() << "Inconsistent parameters in " << "VectorMeson3PionDecayer::doinit()" << Exception::abortnow; // calculate the parameters // set the external particles tPDVector extpart(4); extpart[1]=getParticleData(ParticleID::pi0); extpart[2]=getParticleData(ParticleID::piplus); extpart[3]=getParticleData(ParticleID::piminus); // pointer to the different rho resonances // the rho0 resonances tPDPtr rho0[3]={getParticleData(113),getParticleData(100113),getParticleData(30113)}; // the charged rho resonance tPDPtr rhom[3]={getParticleData(-213),getParticleData(-100213), getParticleData(-30213)}; tPDPtr rhop[3]={getParticleData(213),getParticleData(100213),getParticleData(30213)}; // create the integration channels for the decay DecayPhaseSpaceModePtr mode; DecayPhaseSpaceChannelPtr newchannel; unsigned int iy,iz; for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0]=getParticleData(int(_incoming[ix])); mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); // decide which rho resonances to add double temp[3] = {_rho1wgt[ix] ,_rho2wgt[ix] ,_rho3wgt[ix] }; Energy mass[3] = {_rho1mass[ix] ,_rho2mass[ix] ,_rho3mass[ix] }; Energy width[3] = {_rho1width[ix],_rho2width[ix],_rho3width[ix]}; vector<double> wgt; // set the mass parameters to the default if needed if(_defaultmass[ix]) { if(rhom[0]) { _rho1mass[ix] = rhom[0]->mass(); _rho1width[ix] = rhom[0]->width(); } if(rhom[1]) { _rho2mass[ix] = rhom[1]->mass(); _rho2width[ix] = rhom[1]->width(); } if(rhom[2]) { _rho3mass[ix] = rhom[2]->mass(); _rho3width[ix] = rhom[2]->width(); } } double sumwgt(0); for(iy=0;iy<3;++iy) { if(temp[iy]>0) sumwgt+=temp[iy]; } for(iy=0;iy<3;++iy) { if(temp[iy]>0) { // set the weights for the channels for(iz=0;iz<3;++iz) wgt.push_back(temp[iy]/3./sumwgt); // rho0 channel newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0,0.0,-1,1); newchannel->addIntermediate(rho0[iy] ,0,0.0, 2,3); mode->addChannel(newchannel); if(!_defaultmass[ix]) resetIntermediate(rho0[iy],mass[iy],width[iy]); // rho+ channel newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0,0.0,-1,3); newchannel->addIntermediate(rhop[iy] ,0,0.0, 1,2); mode->addChannel(newchannel); if(!_defaultmass[ix]) resetIntermediate(rhop[iy],mass[iy],width[iy]); // rho- channel newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0,0.0,-1,2); newchannel->addIntermediate(rhom[iy] ,0,0.0, 1,3); mode->addChannel(newchannel); if(!_defaultmass[ix]) mode->resetIntermediate(rhom[iy],mass[iy],width[iy]); addMode(mode,_maxwgt[ix],wgt); } } } // work out the masses and constants for the running widths Energy pcm; _mpi0=getParticleData(ParticleID::pi0)->mass(); _mpic=getParticleData(ParticleID::piplus)->mass(); Complex ii(0.,1.); _rhomass.resize(_incoming.size()); _rhomass2.resize(_incoming.size()); _rho0const.resize(_incoming.size()); _rhocconst.resize( _incoming.size()); _ccoupling.resize(_incoming.size()); for(unsigned int ix=0;ix<_incoming.size();++ix) { // set the masses of the rho resonances _rhomass[ix].push_back(_rho1mass[ix]); _rhomass[ix].push_back(_rho2mass[ix]); _rhomass[ix].push_back(_rho3mass[ix]); _rhomass2[ix].push_back(_rho1mass[ix]*_rho1mass[ix]); _rhomass2[ix].push_back(_rho2mass[ix]*_rho2mass[ix]); _rhomass2[ix].push_back(_rho3mass[ix]*_rho3mass[ix]); // set up the constants for the running width pcm=Kinematics::pstarTwoBodyDecay(_rho1mass[ix],_mpic,_mpic); _rho0const[ix].push_back(_rho1mass[ix]*_rho1mass[ix]*_rho1width[ix]/(pcm*pcm*pcm)); pcm=Kinematics::pstarTwoBodyDecay(_rho2mass[ix],_mpic,_mpic); _rho0const[ix].push_back(_rho2mass[ix]*_rho2mass[ix]*_rho2width[ix]/(pcm*pcm*pcm)); pcm=Kinematics::pstarTwoBodyDecay(_rho3mass[ix],_mpic,_mpic); _rho0const[ix].push_back(_rho3mass[ix]*_rho3mass[ix]*_rho3width[ix]/(pcm*pcm*pcm)); pcm=Kinematics::pstarTwoBodyDecay(_rho1mass[ix],_mpi0,_mpic); _rhocconst[ix].push_back(_rho1mass[ix]*_rho1mass[ix]*_rho1width[ix]/(pcm*pcm*pcm)); pcm=Kinematics::pstarTwoBodyDecay(_rho2mass[ix],_mpi0,_mpic); _rhocconst[ix].push_back(_rho2mass[ix]*_rho2mass[ix]*_rho2width[ix]/(pcm*pcm*pcm)); pcm=Kinematics::pstarTwoBodyDecay(_rho3mass[ix],_mpi0,_mpic); _rhocconst[ix].push_back(_rho3mass[ix]*_rho3mass[ix]*_rho3width[ix]/(pcm*pcm*pcm)); // set the complex coupling constants _ccoupling[ix].push_back(1./_rhomass2[ix][0]); _ccoupling[ix].push_back( _rho2coupling[ix]/_rhomass2[ix][0]* (cos(_rho2phase[ix])+ii*sin(_rho2phase[ix]))); _ccoupling[ix].push_back( _rho3coupling[ix]/_rhomass2[ix][0]* (cos(_rho3phase[ix])+ii*sin(_rho3phase[ix]))); _ccoupling[ix].push_back(_directcoupling[ix]/_rhomass2[ix][0]* (cos(_directphase[ix])+ii*sin(_directphase[ix]))); } } int VectorMeson3PionDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { cc=false; // must be three outgoing particles if(children.size()!=3) return -1; // check the id's of the outgoing particles int id; unsigned int npi0(0),npip(0),npim(0); tPDVector::const_iterator pit = children.begin(); for(;pit!=children.end();++pit) { id = (*pit)->id(); if(id==ParticleID::pi0) ++npi0; else if(id==ParticleID::piplus) ++npip; else if(id==ParticleID::piminus) ++npim; } if(!(npi0==1&&npip==1&&npim==1)) return -1; unsigned int ix(0); id=parent->id(); int imode(-1); do { if(_incoming[ix]==id) imode=ix; ++ix; } while(imode<0&&ix<_incoming.size()); return imode; } void VectorMeson3PionDecayer::persistentOutput(PersistentOStream & os) const { os << _incoming << ounit(_coupling,1/MeV) << _directcoupling << _rho2coupling << _rho3coupling << _directphase << _rho2phase << _rho3phase << _maxwgt << _rho1wgt << _rho2wgt << _rho3wgt << ounit(_rho1mass,GeV) << ounit(_rho2mass,GeV) << ounit(_rho3mass,GeV) << ounit(_rho1width,GeV) << ounit(_rho2width,GeV) << ounit(_rho3width,GeV) << _defaultmass << _rho0const << _rhocconst << ounit(_rhomass,GeV) << ounit(_rhomass2,GeV2) << ounit(_ccoupling,1/MeV2) << ounit(_mpi0,MeV) << ounit(_mpic,MeV); } void VectorMeson3PionDecayer::persistentInput(PersistentIStream & is, int) { is >> _incoming >> iunit(_coupling,1/MeV) >> _directcoupling >> _rho2coupling >> _rho3coupling >> _directphase >> _rho2phase >> _rho3phase >> _maxwgt >> _rho1wgt >> _rho2wgt >> _rho3wgt >> iunit(_rho1mass,GeV) >> iunit(_rho2mass,GeV) >> iunit(_rho3mass,GeV) >> iunit(_rho1width,GeV) >> iunit(_rho2width,GeV) >> iunit(_rho3width,GeV) >> _defaultmass >> _rho0const >> _rhocconst >> iunit(_rhomass,GeV) >> iunit(_rhomass2,GeV2) >> iunit(_ccoupling,1/MeV2) >> iunit(_mpi0,MeV) >> iunit(_mpic,MeV); } ClassDescription<VectorMeson3PionDecayer> VectorMeson3PionDecayer::initVectorMeson3PionDecayer; // Definition of the static class description member. void VectorMeson3PionDecayer::Init() { static ClassDocumentation<VectorMeson3PionDecayer> documentation ("The VectorMeson3PionDecayer class is designed for the decay " "of I=0 vector mesons to three pions via a current taking into account the " "rho and a possible direct term", "The decay of I=0 vector mesons to three pions via a current taking into account the " "rho and a possible direct term is taken from \\cite{Aloisio:2003ur}.", "%\\cite{Aloisio:2003ur}\n" "\\bibitem{Aloisio:2003ur}\n" " A.~Aloisio {\\it et al.} [KLOE Collaboration],\n" " %``Study of the decay Phi --> pi+ pi- pi0 with the KLOE detector,''\n" " Phys.\\ Lett.\\ B {\\bf 561}, 55 (2003)\n" " [Erratum-ibid.\\ B {\\bf 609}, 449 (2005)]\n" " [arXiv:hep-ex/0303016].\n" " %%CITATION = PHLTA,B561,55;%%\n" ); static ParVector<VectorMeson3PionDecayer,double> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &VectorMeson3PionDecayer::_incoming, 0, 0, 0, 0, 1000000, false, false, true); static ParVector<VectorMeson3PionDecayer,InvEnergy> interfaceCoupling ("Coupling", "The overall coupling for the decay, this is the coupling of the decaying " "particle to the lowest lying rho multiplet.", &VectorMeson3PionDecayer::_coupling, 1./GeV, -1, 1./GeV,-1000./GeV, 1000./GeV, false, false, true); static ParVector<VectorMeson3PionDecayer,double> interfaceDirectCoupling ("DirectCoupling", "The magnitude of the coupling of the direct term with respect to the " "coupling of the lowest lying rho multiplet", &VectorMeson3PionDecayer::_directcoupling, 0, 0, 0, -100000., 100000., false, false, true); static ParVector<VectorMeson3PionDecayer,double> interfaceRho2Coupling ("Rho2Coupling", "The magnitude of the coupling of the second rho multiplet with respect to the " "lowest lying multiplet", &VectorMeson3PionDecayer::_rho2coupling, 0, 0, 0, -10., 10., false, false, true); static ParVector<VectorMeson3PionDecayer,double> interfaceRho3Coupling ("Rho3Coupling", "The magntiude of the coupling of the third rho multiplet with respect to the " "lowest lying multiplet", &VectorMeson3PionDecayer::_rho3coupling, 0, 0, 0, -10., 10., false, false, true); static ParVector<VectorMeson3PionDecayer,double> interfaceDirectPhase ("DirectPhase", "The phase of the coupling of the direct term with respect to the " "coupling of the lowest lying rho multiplet", &VectorMeson3PionDecayer::_directphase, 0, 0, 0, -Constants::twopi, Constants::twopi, false, false, true); static ParVector<VectorMeson3PionDecayer,double> interfaceRho2Phase ("Rho2Phase", "The phasee of the coupling of the second rho multiplet with respect to the " "lowest lying multiplet", &VectorMeson3PionDecayer::_rho2phase, 0, 0, 0, -Constants::twopi, Constants::twopi, false, false, true); static ParVector<VectorMeson3PionDecayer,double> interfaceRho3Phase ("Rho3Phase", "The phase of the coupling of the third rho multiplet with respect to the " "lowest lying multiplet", &VectorMeson3PionDecayer::_rho3phase, 0, 0, 0, -Constants::twopi, Constants::twopi, false, false, true); static ParVector<VectorMeson3PionDecayer,double> interfaceMaxWgt ("MaxWeight", "The maximum weight for the integration of the channel", &VectorMeson3PionDecayer::_maxwgt, 0, 0, 0, 0., 100., false, false, true); static ParVector<VectorMeson3PionDecayer,double> interfaceRho1Wgt ("Rho1Weight", "The weight for the lowest lying rho multiplet's in the integration", &VectorMeson3PionDecayer::_rho1wgt, 0, 0, 0, 0, 1., false, false, true); static ParVector<VectorMeson3PionDecayer,double> interfaceRho2Wgt ("Rho2Weight", "The weight for the second rho multiplet's in the integration", &VectorMeson3PionDecayer::_rho2wgt, 0, 0, 0, -2., 1., false, false, true); static ParVector<VectorMeson3PionDecayer,double> interfaceRho3Wgt ("Rho3Weight", "The weight for the third rho multiplet's in the integration", &VectorMeson3PionDecayer::_rho3wgt, 0, 0, 0, -2., 1., false, false, true); static ParVector<VectorMeson3PionDecayer,Energy> interfaceRho1Mass ("Rho1Mass", "The mass of the lowest lying rho multiplet", &VectorMeson3PionDecayer::_rho1mass, GeV, -1, 0.77*GeV, ZERO, 5.*GeV, false, false, true); static ParVector<VectorMeson3PionDecayer,Energy> interfaceRho2Mass ("Rho2Mass", "The mass of the second rho multiplet", &VectorMeson3PionDecayer::_rho2mass, GeV, -1, 0.77*GeV, ZERO, 5.*GeV, false, false, true); static ParVector<VectorMeson3PionDecayer,Energy> interfaceRho3Mass ("Rho3Mass", "The mass of the third rho multiplet", &VectorMeson3PionDecayer::_rho3mass, GeV, -1, 0.77*GeV, ZERO, 5.*GeV, false, false, true); static ParVector<VectorMeson3PionDecayer,Energy> interfaceRho1Width ("Rho1Width", "The width of the lowest lying rho multiplet", &VectorMeson3PionDecayer::_rho1width, GeV, -1, 0.15*GeV, ZERO, 1.*GeV, false, false, true); static ParVector<VectorMeson3PionDecayer,Energy> interfaceRho2Width ("Rho2Width", "The width of the second rho multiplet", &VectorMeson3PionDecayer::_rho2width, GeV, -1, 0.15*GeV, ZERO, 1.*GeV, false, false, true); static ParVector<VectorMeson3PionDecayer,Energy> interfaceRho3Width ("Rho3Width", "The width of the third rho multiplet", &VectorMeson3PionDecayer::_rho3width, GeV, -1, 0.15*GeV, ZERO, 1.*GeV, false, false, true); static ParVector<VectorMeson3PionDecayer,bool> interfaceDefaultParam ("DefaultParameters", "If true the default rho masses and widths are used, otherwise " "the values specified in the rhomass and width arrays are used,", &VectorMeson3PionDecayer::_defaultmass, 0, 0, 1, 0, 1, false, false, true); } double VectorMeson3PionDecayer::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { useMe(); if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors,_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); // set up the spin information for the decay products for(unsigned int ix=0;ix<3;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return 0.; } // compute the matrix element // work out the prefactor complex<InvEnergy2> pre(ZERO); Complex resfact,ii(0.,1.); if(ichan<0){pre=_ccoupling[imode()][3];} Energy pcm; // work out the direct invariant masses needed Energy mrho0(sqrt(decay[1]->momentum().m2(decay[2]->momentum()))); Energy mrhop(sqrt(decay[1]->momentum().m2(decay[0]->momentum()))); Energy mrhom(sqrt(decay[2]->momentum().m2(decay[0]->momentum()))); // contribution of the resonances int ichannow(-3); for(unsigned int ix=0;ix<3;++ix) { ichannow+=3; if((ix==0 && _rho1wgt[imode()]>0.) || (ix==1 && _rho2wgt[imode()]>0.) || (ix==2 && _rho3wgt[imode()]>0.)) { if(ichan<0) { // rho0 contribution pcm = Kinematics::pstarTwoBodyDecay(mrho0,_mpic,_mpic); resfact = _rhomass2[imode()][ix]/ (mrho0*mrho0-_rhomass2[imode()][ix] +ii*pcm*pcm*pcm*_rho0const[imode()][ix]/mrho0); // rho+ contribution pcm = Kinematics::pstarTwoBodyDecay(mrhop,_mpic,_mpi0); resfact+= _rhomass2[imode()][ix]/ (mrhop*mrhop-_rhomass2[imode()][ix] +ii*pcm*pcm*pcm*_rhocconst[imode()][ix]/mrhop); // rho- contribution pcm = Kinematics::pstarTwoBodyDecay(mrhom,_mpic,_mpi0); resfact+= _rhomass2[imode()][ix]/ (mrhom*mrhom-_rhomass2[imode()][ix] +ii*pcm*pcm*pcm*_rhocconst[imode()][ix]/mrhom); // add the contribution } else if(ichan==ichannow) { pcm = Kinematics::pstarTwoBodyDecay(mrho0,_mpic,_mpic); resfact = _rhomass2[imode()][ix]/ (mrho0*mrho0-_rhomass2[imode()][ix] +ii*pcm*pcm*pcm*_rho0const[imode()][ix]/mrho0); } else if(ichan==ichannow+1) { pcm = Kinematics::pstarTwoBodyDecay(mrhop,_mpic,_mpi0); resfact+= _rhomass2[imode()][ix]/ (mrhop*mrhop-_rhomass2[imode()][ix] +ii*pcm*pcm*pcm*_rhocconst[imode()][ix]/mrhop); } else if(ichan==ichannow+2) { pcm = Kinematics::pstarTwoBodyDecay(mrhom,_mpic,_mpi0); resfact+= _rhomass2[imode()][ix]/ (mrhom*mrhom-_rhomass2[imode()][ix] +ii*pcm*pcm*pcm*_rhocconst[imode()][ix]/mrhom); } pre += resfact * _ccoupling[imode()][ix]; ichannow+=3; } } // polarization vector piece LorentzPolarizationVector scalar=_coupling[imode()]*pre*epsilon(decay[0]->momentum(), decay[1]->momentum(), decay[2]->momentum()); // compute the matrix element for(unsigned int ix=0;ix<3;++ix) ME()(ix,0,0,0)=scalar.dot(_vectors[ix]); // return the answer return ME().contract(_rho).real(); } double VectorMeson3PionDecayer:: threeBodyMatrixElement(const int imode, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy , const Energy , const Energy ) const { Lorentz5Momentum p1,p2,p3; Energy2 ee1,ee2,ee3;Energy pp1,pp2,pp3; Energy q(sqrt(q2)); Energy2 mpi2c(_mpic*_mpic),mpi20(_mpi0*_mpi0); p1.setE(0.5*(q2+mpi20-s1)/q); ee1=p1.e()*p1.e(); pp1=sqrt(ee1-mpi20); p2.setE(0.5*(q2+mpi2c-s2)/q); ee2=p2.e()*p2.e(); pp2=sqrt(ee2-mpi2c); p3.setE(0.5*(q2+mpi2c-s3)/q); ee3=p3.e()*p3.e(); pp3=sqrt(ee3-mpi2c); // take momentum of 1 parallel to z axis p1.setX(ZERO);p1.setY(ZERO);p1.setZ(pp1); // construct 2 double cos2(0.5*(ee1+ee2-ee3-mpi20)/pp1/pp2); p2.setX(pp2*sqrt(1.-cos2*cos2)); p2.setY(ZERO); p2.setZ(-pp2*cos2); // construct 3 double cos3(0.5*(ee1-ee2+ee3-mpi20)/pp1/pp3); p3.setX(-pp3*sqrt(1.-cos3*cos3)); p3.setY(ZERO); p3.setZ(-pp3*cos3); // compute the prefactor complex<InvEnergy2> pre(_ccoupling[imode][3]); Complex resfact,ii(0.,1.); // rho0 contribution Energy pcm,mrho1(sqrt(s1)),mrho2(sqrt(s2)),mrho3(sqrt(s3)); for(unsigned int ix=0;ix<3;++ix) { // rho0 contribution pcm = Kinematics::pstarTwoBodyDecay(mrho1,_mpic,_mpic); resfact = _rhomass2[imode][ix]/(mrho1*mrho1-_rhomass2[imode][ix] +ii*pcm*pcm*pcm*_rho0const[imode][ix]/mrho1); // rho+ contribution pcm = Kinematics::pstarTwoBodyDecay(mrho2,_mpic,_mpi0); resfact+= _rhomass2[imode][ix]/(mrho2*mrho3-_rhomass2[imode][ix] +ii*pcm*pcm*pcm*_rhocconst[imode][ix]/mrho2); // rho- contribution pcm = Kinematics::pstarTwoBodyDecay(mrho3,_mpic,_mpi0); resfact+= _rhomass2[imode][ix]/(mrho3*mrho3-_rhomass2[imode][ix] +ii*pcm*pcm*pcm*_rhocconst[imode][ix]/mrho3); // add the contribution pre+=resfact *_ccoupling[imode][ix]; } LorentzPolarizationVector current = _coupling[imode]*(pre*epsilon(p1,p2,p3)); Complex temp(current.dot(current.conjugate())); return -temp.real()/3.; } WidthCalculatorBasePtr VectorMeson3PionDecayer::threeBodyMEIntegrator(const DecayMode & dm) const { // workout which mode we are doing int imode(-1),id(dm.parent()->id()); unsigned int ix=0; do { if(_incoming[ix]==id) imode=ix; ++ix; } while(imode<0&&ix<_incoming.size()); // construct the integrator vector<double> inweights(3,1./3.); vector<int> intype;intype.push_back(1);intype.push_back(2);intype.push_back(3); Energy mrho(getParticleData(ParticleID::rhoplus)->mass()); Energy wrho(getParticleData(ParticleID::rhoplus)->width()); vector<Energy> inmass(3,mrho); vector<Energy> inwidth(3,wrho); vector<double> inpow(2,0.0); //tcDecayIntegratorPtr decayer(this); WidthCalculatorBasePtr output( new_ptr(ThreeBodyAllOnCalculator<VectorMeson3PionDecayer> (inweights,intype,inmass,inwidth,inpow, *this,imode,_mpi0,_mpic,_mpic))); return output; } void VectorMeson3PionDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header){output << "update decayers set parameters=\"";} // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << endl; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << endl; output << "newdef " << name() << ":DirectCoupling " << ix << " " << _directcoupling[ix] << endl; output << "newdef " << name() << ":Rho2Coupling " << ix << " " << _rho2coupling[ix] << endl; output << "newdef " << name() << ":Rho3Coupling " << ix << " " << _rho3coupling[ix] << endl; output << "newdef " << name() << ":DirectPhase " << ix << " " << _directphase[ix] << endl; output << "newdef " << name() << ":Rho2Phase " << ix << " " << _rho2phase[ix] << endl; output << "newdef " << name() << ":Rho3Phase " << ix << " " << _rho3phase[ix] << endl; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxwgt[ix] << endl; output << "newdef " << name() << ":Rho1Weight " << ix << " " << _rho1wgt[ix] << endl; output << "newdef " << name() << ":Rho2Weight " << ix << " " << _rho2wgt[ix] << endl; output << "newdef " << name() << ":Rho3Weight " << ix << " " << _rho3wgt[ix] << endl; output << "newdef " << name() << ":Rho1Mass " << ix << " " << _rho1mass[ix]/GeV << endl; output << "newdef " << name() << ":Rho2Mass " << ix << " " << _rho2mass[ix]/GeV<< endl; output << "newdef " << name() << ":Rho3Mass " << ix << " " << _rho3mass[ix]/GeV<< endl; output << "newdef " << name() << ":Rho1Width " << ix << " " << _rho1width[ix]/GeV << endl; output << "newdef " << name() << ":Rho2Width " << ix << " " << _rho2width[ix]/GeV << endl; output << "newdef " << name() << ":Rho3Width " << ix << " " << _rho3width[ix]/GeV << endl; output << "newdef " << name() << ":DefaultParameters " << ix << " " << _defaultmass[ix] << endl; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << endl; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << endl; output << "insert " << name() << ":DirectCoupling " << ix << " " << _directcoupling[ix] << endl; output << "insert " << name() << ":Rho2Coupling " << ix << " " << _rho2coupling[ix] << endl; output << "insert " << name() << ":Rho3Coupling " << ix << " " << _rho3coupling[ix] << endl; output << "insert " << name() << ":DirectPhase " << ix << " " << _directphase[ix] << endl; output << "insert " << name() << ":Rho2Phase " << ix << " " << _rho2phase[ix] << endl; output << "insert " << name() << ":Rho3Phase " << ix << " " << _rho3phase[ix] << endl; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxwgt[ix] << endl; output << "insert " << name() << ":Rho1Weight " << ix << " " << _rho1wgt[ix] << endl; output << "insert " << name() << ":Rho2Weight " << ix << " " << _rho2wgt[ix] << endl; output << "insert " << name() << ":Rho3Weight " << ix << " " << _rho3wgt[ix] << endl; output << "insert " << name() << ":Rho1Mass " << ix << " " << _rho1mass[ix]/GeV << endl; output << "insert " << name() << ":Rho2Mass " << ix << " " << _rho2mass[ix]/GeV<< endl; output << "insert " << name() << ":Rho3Mass " << ix << " " << _rho3mass[ix]/GeV<< endl; output << "insert " << name() << ":Rho1Width " << ix << " " << _rho1width[ix]/GeV << endl; output << "insert " << name() << ":Rho2Width " << ix << " " << _rho2width[ix]/GeV << endl; output << "insert " << name() << ":Rho3Width " << ix << " " << _rho3width[ix]/GeV << endl; output << "insert " << name() << ":DefaultParameters " << ix << " " << _defaultmass[ix] << endl; } } if(header){output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl;} } ������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMeson3PionDecayer.h�������������������������������������0000644�0001750�0001750�00000031134�11754474773�025114� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMeson3PionDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_VectorMeson3PionDecayer_H #define HERWIG_VectorMeson3PionDecayer_H // This is the declaration of the VectorMeson3PionDecayer class. #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The VectorMeson3PionDecayer class is designed to perform the * decay of an \f$I=0\f$ meson to three pions via rho mesons including the * option of higher rho resonaces and a constant term. It is mainly intended for * the decays: * - \f$\omega \to \pi^+\pi^-\pi^0\f$; * - \f$\phi \to \pi^+\pi^-\pi^0\f$. * * The default for the \f$\omega\f$ is to only include the * contributions of the \f$\rho(770)\f$ * without a constant term, whereas for the \f$\phi\f$ the parameters * from hep-ex/0303016 (KLOE) which includes the \f$\rho(770)\f$ * and a constant term to represent the effects * of the higher rho resonances is used. * (The KLOE paper also included a omega contribution but this is assumed to be a * non-resonant contribution to the \f$e^+e^-\f$ cross section.) * * The form of the matrix element is taken to be * * \f[\mathcal{M} = \frac{g}{M^2_{\rho}}\epsilon^{\mu\alpha\beta\gamma} * \epsilon_{0\mu} * p_{+\alpha}p_{-\beta}p_{0\gamma} * \left[a_de^{i\phi_d} +\sum_k a_{\rho_k}e^{i\phi_{\rho_k}} * \left\{ * \frac{M^2_{\rho_k^+}}{m^2_{0+}-M^2_{\rho_k^+} * +im_{0+}\Gamma_{\rho_k^+}(m^2_{0+})} * +\frac{M^2_{\rho_k^-}}{m^2_{0-}-M^2_{\rho_k^-} * +im_{0-}\Gamma_{\rho_k^-}(m^2_{0-})} * +\frac{M^2_{\rho_k^0}}{m^2_{+-}-M^2_{\rho_k^0} * +im_{+-}\Gamma_{\rho_k^0}(m^2_{+-})}\right\} * \right],\f] * where \f$\epsilon_0\f$ is the polarization vector of the decaying meson, * \f$p_{+,-,0}\f$ are the momenta of the positively charged, negatively charged * and neutral pions respectively, \f$m^2_{ij}=(p_i+p_j)^2\f$, \f$M_{\rho_k}\f$ is * the mass of the \f$k\f$th \f$\rho\f$ resonance, \f$g\f$ is the overall coupling and * \f[\Gamma_{\rho_k}(m^2) = \Gamma_{\rho_k}\left(\frac{p_\pi(m^2)}{p_\pi(M_{\rho_k}^2)}\right)^2 * \left(\frac{M_{\rho_k}^2}{m^2}\right) \f] * where \f$p_\pi\f$ is the pion momentum in the \f$\rho\f$ rest frame * and \f$\Gamma_{\rho_k}\f$ is the width. In practice the couplings of the different * terms are measured relative to the coupling of the lightest \f$\rho\f$ multiplet * which is assumed to be one. * * * To allow the easy addition of further modes the parameters for additional modes * can be set. The following must be specified for each mode * * - Incoming - the PDG code for the incoming particle * - Coupling - the overall coupling for the decay, \f$g\f$. * - DirectCoupling - the relative coupling for the direct term, \f$a_d\f$. * - DirectPhase - the phase of the coupling for the direct term, \f$\phi_d\f$. * - Rho2Coupling - the relative coupling for the second rho multiplet, * \f$a_{\rho_2}\f$. * - Rho2Phase - the phase of the coupling for the second rho multiplet, * \f$\phi_{\rho_2}\f$. * - Rho3Coupling - the relative coupling for the third rho multiplet, * \f$a_{\rho_3}\f$. * - Rho3Phase - the phase of the coupling for the third rho multiplet, * \f$\phi_{\rho_3}\f$. * - MaximumWeight - the maximum weight for the integration of the channel * - Rho1Weight - the weight for the first rho multiplet in the * multichannel integration * - Rho2Weight - the weight for the second rho multiplet in the * multichannel integration * - Rho3Weight - the weight for the third rho multiplet in the * multichannel integration * - Rho1Mass - mass of the first rho multiplet, \f$M_{\rho_1}\f$. * - Rho2Mass - mass of the second rho multiplet, \f$M_{\rho_2}\f$. * - Rho3Mass - mass of the third rho multiplet, \f$M_{\rho_3}\f$. * - Rho1Width - width of the first rho multiplet, \f$\Gamma_{\rho_1}\f$. * - Rho2Width - width of the second rho multiplet, \f$\Gamma_{\rho_2}\f$. * - Rho3Width - width of the third rho multiplet, \f$\Gamma_{\rho_3}\f$. * * @see DecayIntegrator * @see \ref VectorMeson3PionDecayerInterfaces "The interfaces" * defined for VectorMeson3PionDecayer. * * \author Peter Richardson */ class VectorMeson3PionDecayer: public DecayIntegrator { public: /** * Default constructor. */ VectorMeson3PionDecayer(); /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Method to return an object to calculate the 3 body partial width. * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; /** * The matrix element to be integrated for the three-body decays as a function * of the invariant masses of pairs of the outgoing particles. * @param imode The mode for which the matrix element is needed. * @param q2 The scale, \e i.e. the mass squared of the decaying particle. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The matrix element */ virtual double threeBodyMatrixElement(const int imode, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<VectorMeson3PionDecayer> initVectorMeson3PionDecayer; /** * Private and non-existent assignment operator. */ VectorMeson3PionDecayer & operator=(const VectorMeson3PionDecayer &); private: /** * vector storing the decaying particles for the different modes */ vector<double> _incoming; /** * the overall coupling for the decay, \f$g\f$. */ vector<InvEnergy> _coupling; /** * relative coupling for the direct term, \f$a_d\f$. */ vector<double> _directcoupling; /** * relative phase for the direct term, \f$\phi_d\f$. */ vector<double> _directphase; /** * relative coupling for the second rho multiplet, \f$a_{\rho_2}\f$. */ vector<double> _rho2coupling; /** * relative phase for the second rho multiplet, \f$\phi_{\rho_2}\f$. */ vector<double> _rho2phase; /** * relative coupling for the second rho multiplet, \f$a_{\rho_3}\f$. */ vector<double> _rho3coupling; /** * relative phase for the second rho multiplet, \f$\phi_{\rho_3}\f$. */ vector<double> _rho3phase; /** * maximum weight for the integration of the channel */ vector<double> _maxwgt; /** * weight for the first rho multiplet in the integration */ vector<double> _rho1wgt; /** * weight for the second rho multiplet in the integration */ vector<double> _rho2wgt; /** * weight for the third rho multiplet in the integration */ vector<double> _rho3wgt; /** * mass of the first rho multiplet, \f$M_{\rho_1}\f$. */ vector<Energy> _rho1mass; /** * mass of the second rho multiplet, \f$M_{\rho_2}\f$. */ vector<Energy> _rho2mass; /** * mass of the third rho multiplet, \f$M_{\rho_3}\f$. */ vector<Energy> _rho3mass; /** * width of the first rho multiplet, \f$\Gamma_{\rho_1}\f$. */ vector<Energy> _rho1width; /** * width of the second rho multiplet, \f$\Gamma_{\rho_2}\f$. */ vector<Energy> _rho2width; /** * width of the third rho multiplet, \f$\Gamma_{\rho_3}\f$. */ vector<Energy> _rho3width; /** * use the default parameters for the rho masses and widths */ vector<bool> _defaultmass; /** * Constants for the running widths */ //@{ /** * For the neutral \f$\rho\f$ */ vector<vector <double> > _rho0const; /** * For the charged \f$\rho\f$ */ vector<vector <double> > _rhocconst; //@} /** * rho mass parameters */ vector<vector<Energy> > _rhomass; /** * rho mass parameters */ vector<vector<Energy2> > _rhomass2; /** * couplings as complex numbers */ vector<vector <complex<InvEnergy2> > > _ccoupling; /** * The charge pion mass */ Energy _mpic; /** * The neutral pion mass */ Energy _mpi0; /** * Initial size of the vectors */ unsigned int _initsize; /** * Storage of polarization tensors to try and increase * speed */ mutable vector<Helicity::LorentzPolarizationVector> _vectors; /** * Storage of the \f$\rho\f$ matrix */ mutable RhoDMatrix _rho; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of VectorMeson3PionDecayer. */ template <> struct BaseClassTrait<Herwig::VectorMeson3PionDecayer,1> { /** Typedef of the base class of VectorMeson3PionDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VectorMeson3PionDecayer> : public ClassTraitsBase<Herwig::VectorMeson3PionDecayer> { /** Return the class name.*/ static string className() { return "Herwig::VectorMeson3PionDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwVMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_VectorMeson3PionDecayer_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/a1ThreePionCLEODecayer.h��������������������������������������0000644�0001750�0001750�00000047677�11754474773�024544� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // a1ThreePionCLEODecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_a1ThreePionCLEODecayer_H #define HERWIG_a1ThreePionCLEODecayer_H // // This is the declaration of the a1ThreePionCLEODecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>a1ThreePionCLEODecayer</code> class is designed to implement the decay * of the \f$a_1\f$ to three pions using the model of Phys.Rev.D61:012002,2000, * (hep-ex/9902022) (CLEO) which was fitted to the one charged and two neutral pion * channel for the charged \f$a_1\f$ decay in \f$\tau \to a_1 -> \pi\pi\pi\f$. * The other modes are infered from this using isospin. This is a sophisticated model * including the coupling of the \f$a_1\f$ to the \f$\rho\f$, \f$\rho(1450)\f$, * \f$f(1370)\f$ and \f$\sigma\f$ sigma mesons. * * In this case the current is given by * \f[\mathcal{M} = \epsilon_\mu * \left[F_1(p_2-p_3)^\mu+F_2(p_3-p_1)^\mu+F_3(p_1-p_2)^\mu\right].\f] * * * The form factors for the \f$a_1^0 \to \pi^0 \pi^0 \pi^0\f$ mode are * \f[F_1= * \phantom{-}\frac23\left(g_\sigma B^S_\sigma(s_3)+g_{f_0}B^S_{f_0}(s_3)\right) * -\frac23\left(g_\sigma B^S_\sigma(s_2)+g_{f_0}B^S_{f_0}(s_2)\right) * +g_{f_2}\left(\frac12(s_3-s_2)B^D_{f_2}(s_1) * -\frac1{18}\frac{(4m_{\pi^0}^2-s_2)(q^2+s_2-m_{\pi^0}^2)}{s_2}B^D_{f_2}(s_2) * +\frac1{18}\frac{(4m_{\pi^0}^2-s_3)(q^2-m_{\pi^0}^2+s_3)}{s_3}B^D_{f_2}(s_3)\right) *\f] * * \f[F_2=\phantom{-}\frac23(g_\sigma B^S_\sigma(s_3)+g_{f_0}B^S_{f_0}(s_3)) * -\frac23(g_\sigma B^S_\sigma(s_1)+g_{f_0}B^S_{f_0}(s_1)) * +g_{f_2}\left( \frac12(s_3-s1)B^D_{f_2}(s_2) * -\frac1{18}\frac{(4m_{\pi^0}^2-s_1)(q^2+s_1-m_{\pi^0}^2)}{s_1}B^D_{f_2}(s_1) * +\frac1{18}\frac{(4m_{\pi^0}^2-s_3)(q^2-m_{\pi^0}^2+s_3)}{s_3}B^D_{f_2}(s_3)\right) *\f] * \f[F_3=-\frac23(g_\sigma B^S_\sigma(s_1)+g_{f_0}B^S_{f_0}(s_1)) * +\frac23(g_\sigma B^S_\sigma(s_2)+g_{f_0}B^S_{f_0}(s_2)) * +g_{f_2}\left( \frac12(s_1-s_2)B^D_{f_2}(s_3) * -\frac1{18}\frac{(4m_{\pi^0}^2-s_1)(q^2+s_1-m_{\pi^0}^2)}{s_1}B^D_{f_2}(s_1) * +\frac1{18}\frac{(4m_{\pi^0}^2-s_2)(q^2+s_2-m_{\pi^0}^2)}{s_2}B^D_{f_2}(s_2)\right) *\f] * * The form factors for the \f$a_1^+ \to \pi^0 \pi^0 \pi^+\f$ mode are * * \f[F_1=\sum_k\left\{-\frac{g^P_{\rho_k}}3B_{\rho_k}^P(s_1) * -g^D_{\rho_k}B_{\rho_k}^P(s_2) * \left((s_3-m_{\pi^+}^2)-(s_1-m_{\pi^0}^2)\right)\right\} * +\frac23\left(g_\sigma B^S_\sigma(s_3)+g_{f_0}B^S_{f_0}(s_3)\right) * +\frac{g_{f_2}}{18s_3}(q^2-m_{\pi^+}^2+s_3)(4m_{\pi^0}^2-s_3)B^D_{f_2}(s_3) *\f] * * \f[F_2=\sum_k\left\{-\frac13g^P_{\rho_k}B_{\rho_k}^P(s_2) * -g^D_{\rho_k}B_{\rho_k}^P(s_1) * \left((s_3-m_{\pi^+}^2)-(s_2-m_{\pi^0}^2)\right)\right\} * +\frac23\left(g_\sigma B^S_\sigma(s_3)+g_{f_0}B^S_{f_0}(s_3)\right) * +\frac1{18s_3}g_{f_2}(q^2-m_{\pi^+}^2+s_3)(4m_{\pi^0}^2-s_3)B^D_{f_2}(s_3) *\f] * * \f[F_3=\sum_k g^D_{\rho_k}\left\{ * -\frac13B_{\rho_k}^P(s_1)\left((s_3-m_{\pi^+}^2)-(s_2-m_{\pi^0}^2)\right) * +\frac13B_{\rho_k}^P(s_2)\left((s_3-m_{\pi^+}^2)-(s_1-m_{\pi^0}^2)\right)\right\} * -\frac{g_{f_2}}2(s_1-s_2)B^D_{f_2}(s_3)\f] * * The form factors for \f$a_1^0\to\pi^+\pi^-\pi^0\f$. * * \f[F_1=\sum_k\left\{g^P_{\rho_k}B_{\rho_k}^P(s_1) * -\frac{g^D_{\rho_k}}3B_{\rho_k}^P(s_2)(s_3-m_{\pi^0}^2-s_1+m_{\pi^+}^2)\right\} * +\frac23\left(g_\sigma B^S_\sigma(s_3)+g_{f_0}B^S_{f_0}(s_3)\right) * +\frac{g_{f_2}}{18s_3}(q^2-m_{\pi^0}^2+s_3)(4m_{\pi^+}^2-s_3)B^D_{f_2}(s_3)\f] * * \f[F_2=\sum_k\left\{g^P_{\rho_k}B_{\rho_k}^P(s_2) * -\frac{g^D_{\rho_k}}3B_{\rho_k}^P(s_1)(s_3-m_{\pi^0}^2-s_2+m_{\pi^+}^2)\right\} * +\frac23\left(g_\sigma B^S_\sigma(s_3)+g_{f_0}B^S_{f_0}(s_3)\right) * +\frac{g_{f_2}}{18s_3}(q^2-m_{\pi^0}^2+s_3)(4m_{\pi^+}^2-s_3)B^D_{f_2}(s_3)\f] * * \f[F_3=\sum_k * g^D_{\rho_k}\left\{-\frac13B_{\rho_k}^P(s_1)(s_3-m_{\pi^0}^2-s_2+m_{\pi^+}^2) * +\frac13B_{\rho_k}^P(s_2)(s_3-m_{\pi^0}^2-s_1+m_{\pi^+}^2) * \right\} * -\frac{g_{f_2}}2(s_1-s_2)B^D_{f_2}(s_3)\f] * * The form factors for \f$a_1^+\to \pi^+ \pi^+ \pi^-\f$ mode * * \f[F_1=\sum_k\left\{-g^P_{\rho_k}B_{\rho_k}^P(s_1) * -\frac{g^D_{\rho_k}}3B_{\rho_k}^P(s_2)(s_1-s_3)\right\} * -\frac23\left(g_\sigma B^S_\sigma(s_2)+g_{f_0} B^S_{f_0}(s_2)\right) * +g_{f_2}\left(\frac12(s_3-s_2)B^D_{f_2}(s_1) * -\frac1{18s_2}(4m_{\pi^+}^2-s_2)(q^2+s_2-m_{\pi^+}^2)B^D_{f_2}(s_2)\right)\f] * * \f[F_2=\sum_k\left\{-g^P_{\rho_k}B_{\rho_k}^P(s_2) * -\frac{g^D_{\rho_k}}3B_{\rho_k}^P(s_1)(s_2-s_3)\right\} * -\frac23\left(g_\sigma B^S_\sigma(s_1)+g_{f_0} B^S_{f_0}(s_1)\right) * +g_{f_2}\left(\frac12(s_3-s_1)B^D_{f_2}(s_2) * -\frac1{18s_1}(4m_{\pi^+}^2-s_1)(q^2+s_1-m_{\pi^+}^2)B^D_{f_2}(s_1)\right)\f] * * \f[F_3=\sum_k * -g^D_{\rho_k}\left( \frac13(s_2-s_3)B_{\rho_k}^P(s_1) * -\frac13(s_1-s_3)B_{\rho_k}^P(s_2)\right) * -\frac23\left(g_\sigma B^S_\sigma(s_1)+g_{f_0}B^S_{f_0}(s_1)\right) * +\frac23\left(g_\sigma B^S_\sigma(s_2)+g_{f_0}B^S_{f_0}(s_2)\right)\f] *\f[ * +g_{f_2}\left(-\frac1{18s_1}(4m_{\pi^+}^2-s_1)(q^2+s_1-m_{\pi^+}^2)B^D_{f_2}(s_1) * +\frac1{18s_2}(4m_{\pi^+}^2-s_2)(q^2+s_2-m_{\pi^+}^2)B^D_{f_2}(s_2)\right)\f] * * where * * - \f$g_{f_2}\f$ is the coupling of the \f$f_2\f$ to the \f$a_1\f$ * - \f$g_{f_0}\f$ is the coupling of the \f$f_0(1370)\f$ to the \f$a_1\f$ * - \f$g_{\sigma}\f$ is the coupling of the \f$\sigma\f$ to the \f$a_1\f$ * - \f$g^P_{\rho_k}\f$ is the \f$p\f$-wave coupling of the \f$\rho_k\f$ multiplet * to the \f$a_1\f$. * - \f$g^D_{\rho_k}\f$ is the \f$d\f$-wave coupling of the \f$\rho_k\f$ multiplet * to the \f$a_1\f$. * - \f$s_3=m^2_{12}\f$ is the invariant mass squared of particles 1 and 2. * - \f$s_2=m^2_{13}\f$ is the invariant mass squared of particles 1 and 3. * - \f$s_1=m^2_{23}\f$ is the invariant mass squared of particles 2 and 3. * * The Breit-Wigner factors are given by \f$B^L_Y(s_i) = \frac{m^2_Y}{m^2_Y-s_i)+im_Y\Gamma^{Y,L}(s_i)}\f$ * where * \f$\Gamma^{Y,L}(s_i) = \Gamma^Y\left(\frac{p(s_i)}{p(M_Y}\right)^{2L+1}\frac{m_Y}{\sqrt{s_i}}\f$ * \f$m_Y\f$ and \f$\Gamma^Y\f$ are the mass and width of the particle \f$Y\f$ * respectively. \f$p(s_i)\f$ is the momentum of the outgoing pion in the * rest frame of the resonanc \f$Y\f$. * * @see ThreePionCLEOCurrent * @see DecayIntegrator * */ class a1ThreePionCLEODecayer: public DecayIntegrator { public: /** * Default constructor. */ a1ThreePionCLEODecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 body partial width. * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; /** * The matrix element to be integrated for the three-body decays as a function * of the invariant masses of pairs of the outgoing particles. * @param imode The mode for which the matrix element is needed. * @param q2 The scale, \e i.e. the mass squared of the decaying particle. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The matrix element */ virtual double threeBodyMatrixElement(const int imode , const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 { return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<a1ThreePionCLEODecayer> inita1ThreePionCLEODecayer; /** * Private and non-existent assignment operator. */ a1ThreePionCLEODecayer & operator=(const a1ThreePionCLEODecayer &); private: /** * Breit wigner for the \f$\rho\f$, \f$B^P_{\rho_k}(q^2)\f$. * @param ires The \f$\rho\f$ multiplet to used. * @param q2 The scale, \f$q^2\f$. * @param icharge Which pion masses to use for the momentum calculation * @return The Breit-Wigner */ Complex rhoBreitWigner(int ires, Energy2 q2,int icharge) const { Energy q=sqrt(q2); Complex ii(0.,1.); double ratio = icharge==0 ? Kinematics::pstarTwoBodyDecay(q,_mpic,_mpic)/_prhocc[ires] : Kinematics::pstarTwoBodyDecay(q,_mpic,_mpi0)/_prhoc0[ires]; Energy gamrun=_rhowidth[ires]*pow(ratio,3)*_rhomass[ires]/q; return sqr(_rhomass[ires]) /(sqr(_rhomass[ires])-q2-ii*_rhomass[ires]*gamrun); } /** * Breit wigner for the \f$\sigma\f$, \f$B^S_\sigma(q^2)\f$. * @param q2 The scale, \f$q^2\f$. * @param icharge Which pion masses to use for the momentum calculation * @return The Breit-Wigner */ Complex sigmaBreitWigner(Energy2 q2,int icharge) const { Energy q=sqrt(q2); Complex ii(0.,1.); double ratio = icharge==0 ? Kinematics::pstarTwoBodyDecay(q,_mpic,_mpic)/_psigmacc : Kinematics::pstarTwoBodyDecay(q,_mpi0,_mpi0)/_psigma00; Energy gamrun=_sigmawidth*ratio*_sigmamass/q; return sqr(_sigmamass)/(sqr(_sigmamass)-q2-ii*_sigmamass*gamrun); } /** * Breit wigner for the \f$f_0(1370)\f$, \f$B^S_{f_0}(q^2)\f$. * @param q2 The scale, \f$q^2\f$. * @param icharge Which pion masses to use for the momentum calculation * @return The Breit-Wigner */ Complex f0BreitWigner(Energy2 q2,int icharge) const { Energy q=sqrt(q2); Complex ii(0.,1.); double ratio = icharge==0 ? Kinematics::pstarTwoBodyDecay(q,_mpic,_mpic)/_pf0cc : Kinematics::pstarTwoBodyDecay(q,_mpi0,_mpi0)/_pf000; Energy gamrun=_f0width*ratio*_f0mass/q; return sqr(_f0mass)/(sqr(_f0mass)-q2-ii*_f0mass*gamrun); } /** * Breit wigner for the \f$f_2\f$, \f$B^D_{f_2}(q^2)\f$. * @param q2 The scale, \f$q^2\f$. * @param icharge Which pion masses to use for the momentum calculation * @return The Breit-Wigner */ Complex f2BreitWigner(Energy2 q2,int icharge) const { Energy q=sqrt(q2); Complex ii(0.,1.); double ratio = icharge==0 ? Kinematics::pstarTwoBodyDecay(q,_mpic,_mpic)/_pf2cc : Kinematics::pstarTwoBodyDecay(q,_mpi0,_mpi0)/_pf200; Energy gamrun=_f2width*pow(ratio,5)*_f2mass/q; return sqr(_f2mass)/(sqr(_f2mass)-q2-ii*_f2mass*gamrun); } /** * Calculate the form factors * @param iopt The mode being calculated in the order given above * @param ichan The phase space channel in the order given in the doinit member. * @param q2 The sacale \f$q^2\f$. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param F1 The form factor \f$F_1\f$. * @param F2 The form factor \f$F_2\f$. * @param F3 The form factor \f$F_3\f$. * */ void formFactors(int iopt,int ichan,Energy2 q2,Energy2 s1,Energy2 s2, Energy2 s3, complex<InvEnergy> & F1, complex<InvEnergy> & F2, complex<InvEnergy> & F3) const; private: /** * Masses of the rho resonaces */ vector<Energy> _rhomass; /** * Widths of the rho resonaces */ vector<Energy> _rhowidth; /** * Momentum of the particles produced in charged rho decay */ vector<Energy> _prhocc; /** * Momentum of the particles produced in neutral rho decay */ vector<Energy> _prhoc0; /** * Mass of the \f$f_2\f$. */ Energy _f2mass; /** * Width of the \f$f_2\f$. */ Energy _f2width; /** * Momentum for the decay of the \f$f_2\f$ to two charged pions. */ Energy _pf2cc; /** * Momentum for the decay of the \f$f_2\f$ to two neutral pions. */ Energy _pf200; /** * Mass of the \f$f_0(1370)\f$. */ Energy _f0mass; /** * Width of the \f$f_0(1370)\f$. */ Energy _f0width; /** * Momentum for the decay of the \f$f_0(1370)\f$ to two charged pions. */ Energy _pf0cc; /** * Momentum for the decay of the \f$f_0(1370)\f$ to two neutral pions. */ Energy _pf000; /** * Mass of the \f$\sigma\f$ meson. */ Energy _sigmamass; /** * Width of the \f$\sigma\f$ meson. */ Energy _sigmawidth; /** * Momentum for the decay of the \f$\sigma\f$ to two charged pions. */ Energy _psigmacc; /** * Momentum for the decay of the \f$\sigma\f$ to two neutral pions. */ Energy _psigma00; /** * Mass of the neutral pion */ Energy _mpi0; /** * Mass of the charged pion */ Energy _mpic; /** * overall coupling for the decay */ InvEnergy _coupling; /** * Magnitude of the \f$p\f$-wave couplings of the rho resonance, \f$g^P_{\rho_k}\f$, * (\f$\beta_{1,2}\f$ in the CLEO paper.) */ vector<double> _rhomagP; /** * Phase of the \f$p\f$-wave couplings of the rho resonance, \f$g^P_{\rho_k}\f$, * (\f$\beta_{1,2}\f$ in the CLEO paper.) */ vector<double> _rhophaseP; /** *\f$p\f$-wave couplings of the rho resonance, \f$g^P_{\rho_k}\f$, * (\f$\beta_{1,2}\f$ in the CLEO paper.) */ vector<Complex> _rhocoupP; /** * Magnitude of the \f$d\f$-wave couplings of the rho resonance, \f$g^D_{\rho_k}\f$, * (\f$\beta_{3,4}\f$ in the CLEO paper.) */ vector<InvEnergy2> _rhomagD; /** * Phase of the \f$d\f$-wave couplings of the rho resonance, \f$g^D_{\rho_k}\f$, * (\f$\beta_{3,4}\f$ in the CLEO paper.) */ vector<double>_rhophaseD; /** * \f$d\f$-wave couplings of the rho resonance, \f$g^D_{\rho_k}\f$, * (\f$\beta_{3,4}\f$ in the CLEO paper.) */ vector<complex<InvEnergy2> > _rhocoupD; /** * Magntiude of the coupling of the \f$f_2\f$ resonance, \f$g_{f_2}\f$, * (\f$\beta_5\f$ in the CLEO paper.) */ InvEnergy2 _f2mag; /** * Phase of the coupling of the \f$f_2\f$ resonance, \f$g_{f_2}\f$, * (\f$\beta_5\f$ in the CLEO paper.) */ double _f2phase; /** * Coupling of the \f$f_2\f$ resonance, \f$g_{f_2}\f$, * (\f$\beta_5\f$ in the CLEO paper.) */ complex<InvEnergy2> _f2coup; /** * Magntiude of the coupling of the \f$f_0(1370)\f$ resonance, \f$g_{f_0}\f$, * (\f$\beta_6\f$ in the CLEO paper.) */ double _f0mag; /** * Phase of the coupling of the \f$f_0(1370)\f$ resonance, \f$g_{f_0}\f$, * (\f$\beta_6\f$ in the CLEO paper.) */ double _f0phase; /** * Coupling of the \f$f_0(1370)\f$ resonance, \f$g_{f_0}\f$, * (\f$\beta_6\f$ in the CLEO paper.) */ Complex _f0coup; /** * Magntiude of the coupling of the \f$\sigma\f$ resonance, \f$g_\sigma\f$, * (\f$\beta_7\f$ in the CLEO paper.) */ double _sigmamag; /** * Phase of the coupling of the \f$\sigma\f$ resonance, \f$g_\sigma\f$, * (\f$\beta_7\f$ in the CLEO paper.) */ double _sigmaphase; /** * Coupling of the \f$\sigma\f$ resonance, \f$g_\sigma\f$, * (\f$\beta_7\f$ in the CLEO paper.) */ Complex _sigmacoup; /** * Use local values of the mass parameters */ bool _localparameters; /** * Weights for the channels for the zero charged pion channel. */ mutable vector<double> _zerowgts; /** * Weights for the channels for the one charged pion channel. */ mutable vector<double> _onewgts; /** * Weights for the channels for the two charged pion channel. */ mutable vector<double> _twowgts; /** * Weights for the channels for the three charged pion channel. */ mutable vector<double> _threewgts; /** * Maximum weight for the zero charged pion channel. */ mutable double _zeromax; /** * Maximum weight for the one charged pion channel. */ mutable double _onemax; /** * Maximum weight for the two charged pion channel. */ mutable double _twomax; /** * Maximum weight for the three charged pion channel. */ mutable double _threemax; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors */ mutable vector<Helicity::LorentzPolarizationVector> _vectors; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of a1ThreePionCLEODecayer. */ template <> struct BaseClassTrait<Herwig::a1ThreePionCLEODecayer,1> { /** Typedef of the base class of a1ThreePionCLEODecayer. */ typedef Herwig::DecayIntegrator NthBase; }; template <> /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ struct ClassTraits<Herwig::a1ThreePionCLEODecayer> : public ClassTraitsBase<Herwig::a1ThreePionCLEODecayer> { /** Return the class name. */ static string className() { return "Herwig::a1ThreePionCLEODecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwVMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_a1ThreePionCLEODecayer_H */ �����������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/PVectorMesonVectorPScalarDecayer.h����������������������������0000644�0001750�0001750�00000015125�11754474773�026756� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PVectorMesonVectorPScalarDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PVectorMesonVectorPScalarDecayer_H #define HERWIG_PVectorMesonVectorPScalarDecayer_H // // This is the declaration of the PVectorMesonVectorPScalarDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * This class is designed for the decay of a pseudovector meson to a spin-1 * particle, either a vector meson or a photon, and a pseudoscalar meson. * The current for the decay is * * \f[\mathcal{M}=g\epsilon_mu\left[ p_V \cdot p_0 \epsilon_V^\mu * -p_V^\mu \epsilon_V \cdot p_0\right],\f] * where \f$\epsilon\f$ is the polarization vector of the decaying pseudo-vector * meson, \f$\epsilon_V\f$ is the polarization vector of the outgoing vector meson, * \f$p_0\f$ is the momentum of the decaying particle and \f$p_V\f$ is the momentum * of the outgoing vector meson. * * @see DecayIntegrator * @see \ref PVectorMesonVectorPScalarDecayerInterfaces "The interfaces" * defined for PVectorMesonVectorPScalarDecayer. * * \author Peter Richardson * */ class PVectorMesonVectorPScalarDecayer: public DecayIntegrator { public: /** * Default constructor. */ PVectorMesonVectorPScalarDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 4. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<PVectorMesonVectorPScalarDecayer> initPVectorMesonVectorPScalarDecayer; /** * Private and non-existent assignment operator. */ PVectorMesonVectorPScalarDecayer & operator=(const PVectorMesonVectorPScalarDecayer &); private: /** * Coupling for a decay */ vector<InvEnergy> _coupling; /** * PDG codes for the incoming particles */ vector<int> _incoming; /** * PDG codes for the outgoing vector */ vector<int> _outgoingV; /** * PDG codes for the outgoing pseudoscalar mesons. */ vector<int> _outgoingP; /** * maximum weight for a decay */ vector<double> _maxweight; /** * Initial size of the vectors */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the incoming and outgoing vector mesons */ mutable vector<Helicity::LorentzPolarizationVector> _vectors[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of PVectorMesonVectorPScalarDecayer. */ template <> struct BaseClassTrait<Herwig::PVectorMesonVectorPScalarDecayer,1> { /** Typedef of the base class of PVectorMesonVectorPScalarDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::PVectorMesonVectorPScalarDecayer> : public ClassTraitsBase<Herwig::PVectorMesonVectorPScalarDecayer> { /** Return the class name. */ static string className() { return "Herwig::PVectorMesonVectorPScalarDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwVMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_PVectorMesonVectorPScalarDecayer_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMesonPVectorPScalarDecayer.cc���������������������������0000644�0001750�0001750�00000030536�11754474773�027117� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMesonPVectorPScalarDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the VectorMesonPVectorPScalarDecayer class. // #include "VectorMesonPVectorPScalarDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG::Helicity; void VectorMesonPVectorPScalarDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) if(mode(ix)) _maxweight[ix] = mode(ix)->maxWeight(); } } void VectorMesonPVectorPScalarDecayer::doinit() { DecayIntegrator::doinit(); // check consistence of the parameters unsigned int isize=_incoming.size(); if(isize!=_outgoingA.size()||isize!=_outgoingP.size()|| isize!=_maxweight.size()||isize!=_coupling.size()) throw InitException() << "Inconsistent parameters in " << "VectorMesonPVectorPScalarDecayer::doinit()" << Exception::abortnow; // set up the integration channels vector<double> wgt(0); tPDVector extpart(3); DecayPhaseSpaceModePtr mode; for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0]=getParticleData(_incoming[ix]); extpart[1]=getParticleData(_outgoingA[ix]); extpart[2]=getParticleData(_outgoingP[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } VectorMesonPVectorPScalarDecayer::VectorMesonPVectorPScalarDecayer() : _coupling(21), _incoming(21), _outgoingA(21), _outgoingP(21), _maxweight(21) { ME(DecayMatrixElement(PDT::Spin1,PDT::Spin1,PDT::Spin0)); // Jpsi to K_1 K _incoming[0] = 443; _outgoingA[0] = 20313; _outgoingP[0] = -311; _coupling[0] = 0.00127/GeV; _maxweight[0] = 12.; _incoming[1] = 443; _outgoingA[1] = 20323; _outgoingP[1] = -321; _coupling[1] = 0.00127/GeV; _maxweight[1] = 12.; // Jpsi to b_1 pi _incoming[2] = 443; _outgoingA[2] = 10213; _outgoingP[2] = -211; _coupling[2] = 0.00106/GeV; _maxweight[2] = 10.5; _incoming[3] = 443; _outgoingA[3] = 10113; _outgoingP[3] = 111; _coupling[3] = 0.00106/GeV; _maxweight[3] = 10.5; // psi(2s) to K_1 K _incoming[4] = 100443; _outgoingA[4] = 10313; _outgoingP[4] = -311; _coupling[4] = 0.00152/GeV; _maxweight[4] = 12.; _incoming[5] = 100443; _outgoingA[5] = 10323; _outgoingP[5] = -321; _coupling[5] = 0.00152/GeV; _maxweight[5] = 12.; // psi(2s) to b_1 pi _incoming[6] = 100443; _outgoingA[6] = 10213; _outgoingP[6] = -211; _coupling[6] = 0.000694/GeV; _maxweight[6] = 10.5; _incoming[7] = 100443; _outgoingA[7] = 10113; _outgoingP[7] = 111; _coupling[7] = 0.000694/GeV; _maxweight[7] = 10.5; // rho'' decays // to h_1 _incoming[8] = 30213; _outgoingA[8] = 10223; _outgoingP[8] = 211; _coupling[8] = 1.45/GeV; _maxweight[8] = 5.5; _incoming[9] = 30113; _outgoingA[9] = 10223; _outgoingP[9] = 111; _coupling[9] = 1.45/GeV; _maxweight[9] = 5.5; // to a_1 _incoming[10] = 30213; _outgoingA[10] = 20213; _outgoingP[10] = 111; _coupling[10] = 1.09/GeV; _maxweight[10] = 4.; _incoming[11] = 30213; _outgoingA[11] = 20113; _outgoingP[11] = 211; _coupling[11] = 1.09/GeV; _maxweight[11] = 4.; _incoming[12] = 30113; _outgoingA[12] = 20213; _outgoingP[12] = -211; _coupling[12] = 1.09/GeV; _maxweight[12] = 4.; // rho' decays // to h_1 _incoming[13] = 100213; _outgoingA[13] = 10223; _outgoingP[13] = 211; _coupling[13] = 1.20/GeV; _maxweight[13] = 5.; _incoming[14] = 100113; _outgoingA[14] = 10223; _outgoingP[14] = 111; _coupling[14] = 1.20/GeV; _maxweight[14] = 5.; // to a_1 _incoming[15] = 100213; _outgoingA[15] = 20213; _outgoingP[15] = 111; _coupling[15] = 1.83/GeV; _maxweight[15] = 4.; _incoming[16] = 100213; _outgoingA[16] = 20113; _outgoingP[16] = 211; _coupling[16] = 1.83/GeV; _maxweight[16] = 4.; _incoming[17] = 100113; _outgoingA[17] = 20213; _outgoingP[17] = -211; _coupling[17] = 1.83/GeV; _maxweight[17] = 4.; // omega' to b pi _incoming[18] = 100223; _outgoingA[18] = 10113; _outgoingP[18] = 111; _coupling[18] = 1.659/GeV; _maxweight[18] = 7.; _incoming[19] = 100223; _outgoingA[19] = 10213; _outgoingP[19] = -211; _coupling[19] = 1.659/GeV; _maxweight[19] = 6.; // psi(2s) -> h_c pi0 _incoming[20] = 100443; _outgoingA[20] = 10443; _outgoingP[20] = 111; _coupling[20] = 0.0029/GeV; _maxweight[20] = 6.; // initial size of the arrays _initsize = _coupling.size(); // intermediates generateIntermediates(false); } int VectorMesonPVectorPScalarDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=2) return -1; int id(parent->id()); int idbar = parent->CC() ? parent->CC()->id() : id; int id1(children[0]->id()); int id1bar = children[0]->CC() ? children[0]->CC()->id() : id1; int id2(children[1]->id()); int id2bar = children[1]->CC() ? children[1]->CC()->id() : id2; int imode(-1); unsigned int ix(0); cc=false; do { if(id ==_incoming[ix]) { if((id1 ==_outgoingA[ix]&&id2 ==_outgoingP[ix])|| (id2 ==_outgoingA[ix]&&id1 ==_outgoingP[ix])) imode=ix; } if(idbar==_incoming[ix]) { if((id1bar==_outgoingA[ix]&&id2bar==_outgoingP[ix])|| (id2bar==_outgoingA[ix]&&id1bar==_outgoingP[ix])) { imode=ix; cc=true; } } ++ix; } while(ix<_incoming.size()&&imode<0); return imode; } void VectorMesonPVectorPScalarDecayer::persistentOutput(PersistentOStream & os) const { os << _incoming << _outgoingA << _outgoingP << _maxweight << ounit(_coupling,1/GeV); } void VectorMesonPVectorPScalarDecayer::persistentInput(PersistentIStream & is, int) { is >> _incoming >> _outgoingA >> _outgoingP >> _maxweight >> iunit(_coupling,1/GeV); } ClassDescription<VectorMesonPVectorPScalarDecayer> VectorMesonPVectorPScalarDecayer::initVectorMesonPVectorPScalarDecayer; // Definition of the static class description member. void VectorMesonPVectorPScalarDecayer::Init() { static ClassDocumentation<VectorMesonPVectorPScalarDecayer> documentation ("The VectorMesonPVectorPScalarDecayer class is designed for the " "decay of a vector meson to a pseudovector meson and a " "pseudoscalar meson."); static ParVector<VectorMesonPVectorPScalarDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &VectorMesonPVectorPScalarDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonPVectorPScalarDecayer,int> interfaceOutcomingVector ("OutgoingPVector", "The PDG code for the outgoing spin-1 particle", &VectorMesonPVectorPScalarDecayer::_outgoingA, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonPVectorPScalarDecayer,int> interfaceOutcomingScalar ("OutgoingPScalar", "The PDG code for the outgoing spin-0 particle", &VectorMesonPVectorPScalarDecayer::_outgoingP, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonPVectorPScalarDecayer,InvEnergy> interfaceCoupling ("Coupling", "The coupling for the decay mode", &VectorMesonPVectorPScalarDecayer::_coupling, 1/GeV, 0, ZERO, ZERO, 100./GeV, false, false, true); static ParVector<VectorMesonPVectorPScalarDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &VectorMesonPVectorPScalarDecayer::_maxweight, 0, 0, 0, 0., 100., false, false, true); } double VectorMesonPVectorPScalarDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // is the vector massless bool photon(_outgoingA[imode()]==ParticleID::gamma); if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors[0],_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors[0],const_ptr_cast<tPPtr>(&inpart), incoming,true,false); VectorWaveFunction::constructSpinInfo(_vectors[1],decay[0], outgoing,true,photon); ScalarWaveFunction::constructSpinInfo(decay[1],outgoing,true); return 0.; } VectorWaveFunction::calculateWaveFunctions(_vectors[1],decay[0],outgoing,photon); // compute the matrix element Energy2 p0dotpv(inpart.momentum()*decay[0]->momentum()); complex<Energy> epsdot(ZERO); InvEnergy2 pre(_coupling[imode()]/inpart.mass()); for(unsigned int ix=0;ix<3;++ix) { epsdot=_vectors[1][ix]*inpart.momentum(); for(unsigned int iy=0;iy<3;++iy) { ME()(iy,ix,0)=pre*(p0dotpv*(_vectors[1][ix].dot(_vectors[0][iy]))- epsdot*(_vectors[0][iy]*decay[0]->momentum())); } } // test of the matrix element // double me = ME().contract(_rho).real(); // Energy pcm=Kinematics::pstarTwoBodyDecay(inpart.mass(),decay[0]->mass(), // decay[1]->mass()); // double test = sqr(_coupling[imode()])/3.*(2.*sqr(pcm)+3.*sqr(decay[0]->mass())); // cerr << "testing matrix element for " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << me << " " << test << " " << (me-test)/(me+test) << "\n"; // return the answer return ME().contract(_rho).real(); } bool VectorMesonPVectorPScalarDecayer::twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const { int imode(-1); int id(dm.parent()->id()); int idbar = dm.parent()->CC() ? dm.parent()->CC()->id() : id; ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id()); int id1bar = (**pit).CC() ? (**pit).CC()->id() : id1; ++pit; int id2((**pit).id()); int id2bar = (**pit).CC() ? (**pit).CC()->id() : id2; unsigned int ix(0); bool order(false); do { if(id==_incoming[ix]) { if(id1 ==_outgoingA[ix]&&id2 ==_outgoingP[ix]) { imode=ix; order=true; } if(id2 ==_outgoingA[ix]&&id1 ==_outgoingP[ix]) { imode=ix; order=false; } } if(idbar==_incoming[ix]&&imode<0) { if(id1bar==_outgoingA[ix]&&id2bar==_outgoingP[ix]) { imode=ix; order=true; } if(id2bar==_outgoingA[ix]&&id1bar==_outgoingP[ix]) { imode=ix; order=false; } } ++ix; } while(ix<_incoming.size()&&imode<0); coupling = _coupling[imode]*dm.parent()->mass(); mecode = 4; return order; } void VectorMesonPVectorPScalarDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // the rest of the parameters for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":OutgoingPVector " << ix << " " << _outgoingA[ix] << "\n"; output << "newdef " << name() << ":OutgoingPScalar " << ix << " " << _outgoingP[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":OutgoingPVector " << ix << " " << _outgoingA[ix] << "\n"; output << "insert " << name() << ":OutgoingPScalar " << ix << " " << _outgoingP[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/Makefile.am���������������������������������������������������0000644�0001750�0001750�00000001762�11754474773�022331� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwVMDecay.la HwVMDecay_la_SOURCES = \ a1ThreePionCLEODecayer.cc a1ThreePionCLEODecayer.h \ a1SimpleDecayer.cc a1SimpleDecayer.h\ a1ThreePionDecayer.cc a1ThreePionDecayer.h \ PVectorMesonVectorPScalarDecayer.cc PVectorMesonVectorPScalarDecayer.h \ VectorMeson2FermionDecayer.cc VectorMeson2FermionDecayer.h \ VectorMeson2MesonDecayer.cc VectorMeson2MesonDecayer.h \ VectorMeson3PionDecayer.cc VectorMeson3PionDecayer.h \ VectorMesonPScalarFermionsDecayer.cc VectorMesonPScalarFermionsDecayer.h \ VectorMesonPVectorPScalarDecayer.cc VectorMesonPVectorPScalarDecayer.h \ VectorMesonVectorPScalarDecayer.cc VectorMesonVectorPScalarDecayer.h \ VectorMesonVectorScalarDecayer.cc VectorMesonVectorScalarDecayer.h \ VectorMesonVectorVectorDecayer.cc VectorMesonVectorVectorDecayer.h \ OniumToOniumPiPiDecayer.cc OniumToOniumPiPiDecayer.h HwVMDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:1:0 ��������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMesonPScalarFermionsDecayer.h���������������������������0000644�0001750�0001750�00000020131�11754474773�027147� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMesonPScalarFermionsDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_VectorMesonPScalarFermionsDecayer_H #define HERWIG_VectorMesonPScalarFermionsDecayer_H // // This is the declaration of the VectorMesonPScalarFermionsDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" #include "ThePEG/Helicity/LorentzSpinorBar.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>VectorMesonPScalarFermionsDecayer</code> class is designed to perform the * decay of a vector meson to a pesudo scalar and a fermion-antifermion pair according * to a current which is the \f$V\to VP\f$ vertex combined with the branching of the * vector into a fermion-antifermion pair. * * The current is * \f[\mathcal{M}=\frac{g}{(p_f+p_{\bar f})^2}\epsilon^{\mu\nu\alpha\beta} * \epsilon_{0\mu}p_{0\nu}(p_f+p_{\bar f})_\alpha * \bar{u}(p_f)\gamma_\beta v(p_{\bar f}) * \f] * * It includes the option of a vector meson dominance (VMD) type form factor * \f$\frac{-M^2+i\Gamma M}{(m^2_{ff}-M^2+i\Gamma M)}\f$. * * The incoming and outgoing meson together with the types of fermions can be * specified using the interfaces. * * @see DecayIntegrator * @see VectorMesonVectorPScalarDecayer * @see \ref VectorMesonPScalarFermionsDecayerInterfaces "The interfaces" * defined for VectorMesonPScalarFermionsDecayer. * * \author Peter Richardson * */ class VectorMesonPScalarFermionsDecayer: public DecayIntegrator { public: /** * Default constructor. */ VectorMesonPScalarFermionsDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 body partial width. * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; /** * The differential three body decay rate with one integral performed. * @param imode The mode for which the matrix element is needed. * @param q2 The scale, \e i.e. the mass squared of the decaying particle. * @param s The invariant mass which still needs to be integrate over. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The differential rate \f$\frac{d\Gamma}{ds}\f$ */ virtual InvEnergy threeBodydGammads(const int imode, const Energy2 q2, const Energy2 s, const Energy m1, const Energy m2, const Energy m3) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<VectorMesonPScalarFermionsDecayer> initVectorMesonPScalarFermionsDecayer; /** * Private and non-existent assignment operator. */ VectorMesonPScalarFermionsDecayer & operator=(const VectorMesonPScalarFermionsDecayer &); private: /** * coupling for a decay */ vector<InvEnergy> _coupling; /** * PDG codes for the incoming particle */ vector<int> _incoming; /** * PDG codes for the outgoing meson. */ vector<int> _outgoingP; /** * PDG codes for the outgoing fermion. */ vector<int> _outgoingf; /** * PDG codes for the outgoing antifermion. */ vector<int> _outgoinga; /** * Maximum weight for a decay */ vector<double> _maxweight; /** * Relative weights for the two channels */ vector<double> _weight; /** * Include the VMD form factor. */ vector<int> _includeVMD; /** * PDG code for the particle mass and width to use for the VMD form factor. */ vector<int> _VMDid; /** * Mass for the VMD form factor. */ vector<Energy> _VMDmass; /** * Width for the VMD form factor. */ vector<Energy> _VMDwidth; /** * Initial size of the vectors */ unsigned int _initsize; /** * Spin density matrixl */ mutable RhoDMatrix _rho; /** * Polarization vectors for the decaying particle */ mutable vector<Helicity::LorentzPolarizationVector> _vectors; /** * Spinors for the fermions */ mutable vector<Helicity::LorentzSpinor <SqrtEnergy> > _wave; /** * Barred spinors for the fermions */ mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > _wavebar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of Herwig::VectorMesonPScalarFermionsDecayer. */ template <> struct BaseClassTrait<Herwig::VectorMesonPScalarFermionsDecayer,1> { /** Typedef of the base class of VectorMesonPScalarFermionsDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VectorMesonPScalarFermionsDecayer> : public ClassTraitsBase<Herwig::VectorMesonPScalarFermionsDecayer> { /** Return the class name. */ static string className() { return "Herwig::VectorMesonPScalarFermionsDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwVMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_VectorMesonPScalarFermionsDecayer_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMesonVectorVectorDecayer.cc�����������������������������0000644�0001750�0001750�00000025242�11754474773�026712� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMesonVectorVectorDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the VectorMesonVectorVectorDecayer class. // #include "VectorMesonVectorVectorDecayer.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG::Helicity; void VectorMesonVectorVectorDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) if(mode(ix)) _maxweight[ix]=mode(ix)->maxWeight(); } } void VectorMesonVectorVectorDecayer::doinit() { DecayIntegrator::doinit(); unsigned int isize(_incoming.size()); if(isize!=_outgoing1.size()||isize!=_outgoing2.size()|| isize!=_maxweight.size()||isize!=_coupling.size()) throw InitException() << "Inconsistent parameters in " << "VectorMesonVectorVectorDecayer" << Exception::runerror; // set up the integration channels vector<double> wgt(0); tPDVector extpart(3); DecayPhaseSpaceModePtr mode; for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0]=getParticleData(_incoming[ix]); extpart[1]=getParticleData(_outgoing1[ix]); extpart[2]=getParticleData(_outgoing2[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } VectorMesonVectorVectorDecayer::VectorMesonVectorVectorDecayer() : _coupling(4), _incoming(4), _outgoing1(4), _outgoing2(4), _maxweight(4) { ME(DecayMatrixElement(PDT::Spin1,PDT::Spin1,PDT::Spin1)); // decay of rho'' to rho rho _incoming[0] = 30213; _outgoing1[0] = 213; _outgoing2[0] = 113; _coupling[0] = 3.21; _maxweight[0] = 35.; _incoming[1] = 30113; _outgoing1[1] = -213; _outgoing2[1] = 213; _coupling[1] = 3.21; _maxweight[1] = 22.; // decay of rho' to rho rho _incoming[2] = 100213; _outgoing1[2] = 213; _outgoing2[2] = 113; _coupling[2] = 9.59; _maxweight[2] = 55.; _incoming[3] = 100113; _outgoing1[3] = -213; _outgoing2[3] = 213; _coupling[3] = 9.59; _maxweight[3] = 50.; // initial size of the arrays _initsize=_incoming.size(); // intermediates generateIntermediates(false); } int VectorMesonVectorVectorDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=2) return -1; int id(parent->id()); int idbar = parent->CC() ? parent->CC()->id() : id; int id1(children[0]->id()); int id1bar = children[0]->CC() ? children[0]->CC()->id() : id1; int id2(children[1]->id()); int id2bar = children[1]->CC() ? children[1]->CC()->id() : id2; int imode(-1); unsigned int ix(0); cc=false; do { if(id ==_incoming[ix]) { if((id1 ==_outgoing1[ix]&&id2 ==_outgoing2[ix])|| (id2 ==_outgoing1[ix]&&id1 ==_outgoing2[ix])) imode=ix; } if(idbar==_incoming[ix]) { if((id1bar==_outgoing1[ix]&&id2bar==_outgoing2[ix])|| (id2bar==_outgoing1[ix]&&id1bar==_outgoing2[ix])) { imode=ix; cc=true; } } ++ix; } while(ix<_incoming.size()&&imode<0); return imode; } void VectorMesonVectorVectorDecayer::persistentOutput(PersistentOStream & os) const { os << _incoming << _outgoing1 << _outgoing2 << _maxweight << _coupling; } void VectorMesonVectorVectorDecayer::persistentInput(PersistentIStream & is, int) { is >> _incoming >> _outgoing1 >> _outgoing2 >> _maxweight >> _coupling; } ClassDescription<VectorMesonVectorVectorDecayer> VectorMesonVectorVectorDecayer::initVectorMesonVectorVectorDecayer; // Definition of the static class description member. void VectorMesonVectorVectorDecayer::Init() { static ClassDocumentation<VectorMesonVectorVectorDecayer> documentation ("The VectorMesonVectorVectorDecayer class is designed for the " "decay of a vector meson to two vector particles, either photons or other " "vector mesons."); static ParVector<VectorMesonVectorVectorDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &VectorMesonVectorVectorDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonVectorVectorDecayer,int> interfaceOutgoing1 ("Outgoing1", "The PDG code for the first outgoing particle", &VectorMesonVectorVectorDecayer::_outgoing1, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonVectorVectorDecayer,int> interfaceOutgoing2 ("Outgoing2", "The PDG code for the second outgoing particle", &VectorMesonVectorVectorDecayer::_outgoing2, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonVectorVectorDecayer,double> interfaceCoupling ("Coupling", "The coupling for the decay mode", &VectorMesonVectorVectorDecayer::_coupling, 0, 0, 0, 0., 100., false, false, true); static ParVector<VectorMesonVectorVectorDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &VectorMesonVectorVectorDecayer::_maxweight, 0, 0, 0, 0., 1000., false, false, true); } double VectorMesonVectorVectorDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { bool photon[2]; for(unsigned int ix=0;ix<2;++ix) photon[ix] = decay[ix]->id()==ParticleID::gamma; if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors[0],_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors[0],const_ptr_cast<tPPtr>(&inpart), incoming,true,false); for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction::constructSpinInfo(_vectors[ix+1],decay[ix], outgoing,true,photon[ix]); return 0.; } for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction:: calculateWaveFunctions(_vectors[ix+1],decay[ix],outgoing,photon[ix]); // work out the dot products we need for the matrix element Energy2 p1p2((decay[0]->momentum())*(decay[1]->momentum())); complex<Energy> p1eps2[3],p2eps1[3]; for(unsigned int ix=0;ix<3;++ix) { p1eps2[ix]=_vectors[2][ix]*(decay[0]->momentum()); p2eps1[ix]=_vectors[1][ix]*(decay[1]->momentum()); } // compute the matrix element Lorentz5Momentum pdiff(decay[0]->momentum()-decay[1]->momentum()); Energy2 m12(decay[0]->mass()*decay[0]->mass()),m22(decay[1]->mass()*decay[1]->mass()); InvEnergy3 fact(2.*_coupling[imode()]/(inpart.mass()*inpart.mass()*inpart.mass())); LorentzPolarizationVector vtemp; for(unsigned int ipol1=0;ipol1<3;++ipol1) { for(unsigned int ipol2=0;ipol2<3;++ipol2) { Complex eps1eps2=_vectors[1][ipol1].dot(_vectors[2][ipol2]); vtemp=fact*(p1eps2[ipol2]*p2eps1[ipol1]*pdiff +p1eps2[ipol2]*m22*_vectors[1][ipol1] -p2eps1[ipol1]*m12*_vectors[2][ipol2] +eps1eps2*(-p1p2*pdiff+m12*decay[1]->momentum() -m22*decay[0]->momentum())); for(unsigned int inpol=0;inpol<3;++inpol) ME()(inpol,ipol1,ipol2)=_vectors[0][inpol].dot(vtemp); } } // test of the matrix element // double me = newME.contract(rhoin).real(); // Energy pcm=Kinematics::pstarTwoBodyDecay(inpart.mass(),decay[0]->mass(), // decay[1]->mass()); // double test = 8./3.*sqr(_coupling[imode()]*pcm/inpart.mass())* // (1.+sqr(decay[0]->mass()/inpart.mass())+sqr(decay[1]->mass()/inpart.mass())); // cerr << "testing matrix element for " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << me << " " << test << " " << (me-test)/(me+test) << "\n"; // return the answer return ME().contract(_rho).real(); } bool VectorMesonVectorVectorDecayer::twoBodyMEcode(const DecayMode & dm,int & mecode, double & coupling) const { int imode(-1); int id(dm.parent()->id()),idbar(id); if(dm.parent()->CC()){idbar=dm.parent()->CC()->id();} ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id()),id1bar(id1); if((**pit).CC()){id1bar=(**pit).CC()->id();} ++pit; int id2((**pit).id()),id2bar(id2); if((**pit).CC()){id2bar=(**pit).CC()->id();} unsigned int ix(0); bool order(false); do { if(id ==_incoming[ix]) { if(id1==_outgoing1[ix]&&id2==_outgoing2[ix]) { imode=ix; order=true; } if(id2==_outgoing1[ix]&&id1==_outgoing2[ix]) { imode=ix; order=false; } } if(idbar==_incoming[ix]&&imode<0) { if(id1bar==_outgoing1[ix]&&id2bar==_outgoing2[ix]) { imode=ix; order=true; } if(id2bar==_outgoing1[ix]&&id1bar==_outgoing2[ix]) { imode=ix; order=false; } } ++ix; } while(ix<_incoming.size()&&imode<0); coupling = _coupling[imode]; mecode = 5; return order; } // output the setup information for the particle database void VectorMesonVectorVectorDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header){output << "update decayers set parameters=\"";} // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // the rest of the parameters for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":Outgoing1 " << ix << " " << _outgoing1[ix] << "\n"; output << "newdef " << name() << ":Outgoing2 " << ix << " " << _outgoing2[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix] << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":Outgoing1 " << ix << " " << _outgoing1[ix] << "\n"; output << "insert " << name() << ":Outgoing2 " << ix << " " << _outgoing2[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix] << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMeson2MesonDecayer.cc�����������������������������������0000644�0001750�0001750�00000042212�11754474773�025424� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMeson2MesonDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the VectorMeson2MesonDecayer class. // #include "VectorMeson2MesonDecayer.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; void VectorMeson2MesonDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) if(mode(ix)) _maxweight[ix]= mode(ix)->maxWeight(); } } void VectorMeson2MesonDecayer::doinit() { DecayIntegrator::doinit(); // check consistence of the parameters unsigned int isize=_incoming.size(); if(isize!=_outgoing1.size()||isize!=_outgoing2.size()||isize!=_maxweight.size()|| isize!=_coupling.size()) { throw InitException() << "Inconsistent parameters in " << "VectorMeson2MesonDecayer" << Exception::runerror; } // set up the integration channels vector<double> wgt(0); tPDVector extpart(3); DecayPhaseSpaceModePtr mode; for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0]=getParticleData( _incoming[ix]); extpart[1]=getParticleData(_outgoing1[ix]); extpart[2]=getParticleData(_outgoing2[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } VectorMeson2MesonDecayer::VectorMeson2MesonDecayer() : _incoming(64), _outgoing1(64), _outgoing2(64), _maxweight(64), _coupling(64) { // matrix element storage ME(DecayMatrixElement(PDT::Spin1,PDT::Spin0,PDT::Spin0)); // don't generate intermediates generateIntermediates(false); // reserve size of vectors for speed // particles and couplings for the different modes // rho -> pi pi _incoming[0] = 113; _outgoing1[0] = 211; _outgoing2[0] = -211; _coupling[0] = 6.; _maxweight[0] = 1.7; _incoming[1] = 213; _outgoing1[1] = 111; _outgoing2[1] = 211; _coupling[1] = 6.; _maxweight[1] = 1.7; // rho' -> pi pi _incoming[2] = 100113; _outgoing1[2] = 211; _outgoing2[2] = -211; _coupling[2] = 2.082; _maxweight[2] = 1.7; _incoming[3] = 100213; _outgoing1[3] = 111; _outgoing2[3] = 211; _coupling[3] = 2.082; _maxweight[3] = 1.7; // rho'' -> pi pi _incoming[4] = 30113; _outgoing1[4] = 211; _outgoing2[4] = -211; _coupling[4] = 1.655; _maxweight[4] = 1.7; _incoming[5] = 30213; _outgoing1[5] = 111; _outgoing2[5] = 211; _coupling[5] = 1.655; _maxweight[5] = 1.7; // rho'' -> K K _incoming[6] = 30113; _outgoing1[6] = 321; _outgoing2[6] = -321; _coupling[6] = 0.194; _maxweight[6] = 1.7; _incoming[7] = 30113; _outgoing1[7] = 311; _outgoing2[7] = -311; _coupling[7] = 0.194; _maxweight[7] = 1.7; _incoming[8] = 30213; _outgoing1[8] = 321; _outgoing2[8] = -311; _coupling[8] = 0.274; _maxweight[8] = 1.7; // rho'' -> pi' pi _incoming[ 9] = 30113; _outgoing1[ 9] = 100211; _outgoing2[ 9] = -211; _coupling[ 9] = 7.828; _maxweight[ 9] = 4.1; _incoming[10] = 30213; _outgoing1[10] = 100111; _outgoing2[10] = 211; _coupling[10] = 7.828; _maxweight[10] = 4.1; _incoming[11] = 30213; _outgoing1[11] = 111 ; _outgoing2[11] = 100211; _coupling[11] = 7.828; _maxweight[11] = 4.1; // rho' -> pi' pi _incoming[12] = 100113; _outgoing1[12] = 100211; _outgoing2[12] = -211; _coupling[12] = 17.9; _maxweight[12] = 4.2; _incoming[13] = 100213; _outgoing1[13] = 100111; _outgoing2[13] = 211; _coupling[13] = 17.9; _maxweight[13] = 4.2; _incoming[14] = 100213; _outgoing1[14] = 111 ; _outgoing2[14] = 100211; _coupling[14] = 17.9; _maxweight[14] = 4.2; // omega -> pi pi _incoming[15] = 223; _outgoing1[15] = 211; _outgoing2[15] = -211; _coupling[15] = 0.1847; _maxweight[15] = 1.7; // K* decays _incoming[16] = 313; _outgoing1[16] = 321; _outgoing2[16] = -211; _coupling[16] = 4.57; _maxweight[16] = 1.7; _incoming[17] = 313; _outgoing1[17] = 311; _outgoing2[17] = 111; _coupling[17] = 3.23; _maxweight[17] = 1.7; _incoming[18] = 323; _outgoing1[18] = 311; _outgoing2[18] = 211; _coupling[18] = 4.57; _maxweight[18] = 1.7; _incoming[19] = 323; _outgoing1[19] = 321; _outgoing2[19] = 111; _coupling[19] = 3.23; _maxweight[19] = 1.7; // K*' decays _incoming[20] = 100313; _outgoing1[20] = 321; _outgoing2[20] = -211; _coupling[20] = 1.296; _maxweight[20] = 1.7; _incoming[21] = 100313; _outgoing1[21] = 311; _outgoing2[21] = 111; _coupling[21] = 0.916; _maxweight[21] = 1.7; _incoming[22] = 100323; _outgoing1[22] = 311; _outgoing2[22] = 211; _coupling[22] = 1.296; _maxweight[22] = 1.7; _incoming[23] = 100323; _outgoing1[23] = 321; _outgoing2[23] = 111; _coupling[23] = 0.916; _maxweight[23] = 1.7; // K*'' decays _incoming[24] = 30313; _outgoing1[24] = 321; _outgoing2[24] = -211; _coupling[24] = 3.114; _maxweight[24] = 1.7; _incoming[25] = 30313; _outgoing1[25] = 311; _outgoing2[25] = 111; _coupling[25] = 2.201; _maxweight[25] = 1.7; _incoming[26] = 30323; _outgoing1[26] = 311; _outgoing2[26] = 211; _coupling[26] = 3.114; _maxweight[26] = 1.7; _incoming[27] = 30323; _outgoing1[27] = 321; _outgoing2[27] = 111; _coupling[27] = 2.201; _maxweight[27] = 1.7; // phi decays _incoming[28] = 333; _outgoing1[28] = 321; _outgoing2[28] = -321; _coupling[28] = 4.48; _maxweight[28] = 1.7; _incoming[29] = 333; _outgoing1[29] = 311; _outgoing2[29] = -311; _coupling[29] = 4.59; _maxweight[29] = 1.7; _incoming[62] = 333; _outgoing1[62] = 130; _outgoing2[62] = 310; _coupling[62] = 4.59; _maxweight[62] = 1.7; _incoming[30] = 333; _outgoing1[30] = 211; _outgoing2[30] = -211; _coupling[30] = 8.986E-3; _maxweight[30] = 1.7; // phi' decays _incoming[31] = 100333; _outgoing1[31] = 321; _outgoing2[31] = -321; _coupling[31] = 0.912; _maxweight[31] = 1.7; _incoming[32] = 100333; _outgoing1[32] = 311; _outgoing2[32] = -311; _coupling[32] = 0.918; _maxweight[32] = 1.7; _incoming[63] = 100333; _outgoing1[63] = 130; _outgoing2[63] = 310; _coupling[63] = 0.918; _maxweight[63] = 1.7; // excited psi decays _incoming[33] = 30443; _outgoing1[33] = 411; _outgoing2[33] = -411; _coupling[33] = 12.83; _maxweight[33] = 1.7; _incoming[34] = 30443; _outgoing1[34] = 421; _outgoing2[34] = -421; _coupling[34] = 12.83; _maxweight[34] = 1.7; // D* decays _incoming[35] = 423; _outgoing1[35] = 421; _outgoing2[35] = 111; _coupling[35] = 6.309; _maxweight[35] = 1.7; _incoming[36] = 413; _outgoing1[36] = 411; _outgoing2[36] = 111; _coupling[36] = 6.313; _maxweight[36] = 1.7; _incoming[37] = 413; _outgoing1[37] = 421; _outgoing2[37] = 211; _coupling[37] = 8.938; _maxweight[37] = 1.7; // D_s* decays _incoming[38] = 433; _outgoing1[38] = 431; _outgoing2[38] = 111; _coupling[38] = 1.398; _maxweight[38] = 1.7; // K_1 decays to K*_0 pion _incoming[39] = 10323; _outgoing1[39] = 10321; _outgoing2[39] = 111; _coupling[39] = 14.45; _maxweight[39] = 8.9; _incoming[40] = 10323; _outgoing1[40] = 10311; _outgoing2[40] = 211; _coupling[40] = 20.46; _maxweight[40] = 8.9; _incoming[41] = 10313; _outgoing1[41] = 10311; _outgoing2[41] = 111; _coupling[41] = 14.27; _maxweight[41] = 8.9; _incoming[42] = 10313; _outgoing1[42] = 10321; _outgoing2[42] = -211; _coupling[42] = 20.43; _maxweight[42] = 8.9; // K_1 decays to f(1370) kaon _incoming[43] = 10323; _outgoing1[43] = 321; _outgoing2[43] = 10221; _coupling[43] = 20.; _maxweight[43] = 4.2; _incoming[44] = 10313; _outgoing1[44] = 311; _outgoing2[44] = 10221; _coupling[44] = 20.; _maxweight[44] = 4.2; // K'_1 decays to f(1370) kaon _incoming[45] = 20323; _outgoing1[45] = 321; _outgoing2[45] = 10221; _coupling[45] = 23.34; _maxweight[45] = 6.; _incoming[46] = 20313; _outgoing1[46] = 311; _outgoing2[46] = 10221; _coupling[46] = 23.34; _maxweight[46] = 6.; // upsilon(4s) _incoming[47] = 300553; _outgoing1[47] = 521; _outgoing2[47] = -521; _coupling[47] = 24.188; _maxweight[47] = 1.6; _incoming[48] = 300553; _outgoing1[48] = 511; _outgoing2[48] = -511; _coupling[48] = 24.188; _maxweight[48] = 1.6; // jpsi to pions _incoming[49] = 443; _outgoing1[49] = 211; _outgoing2[49] = -211; _coupling[49] = 2.568E-3; _maxweight[49] = 1.7; // jpsi to kaons _incoming[50] = 443; _outgoing1[50] = 321; _outgoing2[50] = -321; _coupling[50] = 1.111E-3; _maxweight[50] = 1.7; _incoming[51] = 443; _outgoing1[51] = 311; _outgoing2[51] = -311; _coupling[51] = 0.873E-3; _maxweight[51] = 1.7; _incoming[60] = 443; _outgoing1[60] = 130; _outgoing2[60] = 310; _coupling[60] = 0.873E-3; _maxweight[60] = 1.7; // psi(2s) to pions _incoming[52] = 100443; _outgoing1[52] = 211; _outgoing2[52] = -211; _coupling[52] = 1.055E-3; _maxweight[52] = 1.7; // psi(2s) to kaons _incoming[53] = 100443; _outgoing1[53] = 321; _outgoing2[53] = -321; _coupling[53] = 0.905E-3; _maxweight[53] = 1.7; _incoming[54] = 100443; _outgoing1[54] = 311; _outgoing2[54] = -311; _coupling[54] = 0.905E-3; _maxweight[54] = 1.7; _incoming[61] = 100443; _outgoing1[61] = 130; _outgoing2[61] = 310; _coupling[61] = 0.905E-3; _maxweight[61] = 1.7; // f_1 to a_0 pi _incoming[55] = 20223; _outgoing1[55] = 9000111; _outgoing2[55] = 111; _coupling[55] = 4.169; _maxweight[55] = 10.; _incoming[56] = 20223; _outgoing1[56] = 9000211; _outgoing2[56] = -211; _coupling[56] = 4.169; _maxweight[56] = 10.; // f'_1 to a_0 pi _incoming[57] = 20333; _outgoing1[57] = 9000111; _outgoing2[57] = 111; _coupling[57] = 0.968; _maxweight[57] = 10.; _incoming[58] = 20333; _outgoing1[58] = 9000211; _outgoing2[58] = -211; _coupling[58] = 0.968; _maxweight[58] = 10.; // initial size of the vectors for the database output _initsize=_incoming.size(); } int VectorMeson2MesonDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=2) return -1; int id(parent->id()); int idbar = parent->CC() ? parent->CC()->id() : id; int id1(children[0]->id()); int id1bar = children[0]->CC() ? children[0]->CC()->id() : id1; int id2(children[1]->id()); int id2bar = children[1]->CC() ? children[1]->CC()->id() : id2; int imode(-1); unsigned int ix(0); cc=false; do { if(id ==_incoming[ix]) { if((id1 ==_outgoing1[ix]&&id2 ==_outgoing2[ix])|| (id2 ==_outgoing1[ix]&&id1 ==_outgoing2[ix])) imode=ix; } if(idbar==_incoming[ix]&&imode<0) { if((id1bar==_outgoing1[ix]&&id2bar==_outgoing2[ix])|| (id2bar==_outgoing1[ix]&&id1bar==_outgoing2[ix])) { imode=ix; cc=true; } } ++ix; } while(ix<_incoming.size()&&imode<0); return imode; } void VectorMeson2MesonDecayer::persistentOutput(PersistentOStream & os) const { os << _incoming << _outgoing1 << _outgoing2 << _maxweight << _coupling; } void VectorMeson2MesonDecayer::persistentInput(PersistentIStream & is, int) { is >> _incoming >> _outgoing1 >> _outgoing2 >> _maxweight >> _coupling; } ClassDescription<VectorMeson2MesonDecayer> VectorMeson2MesonDecayer::initVectorMeson2MesonDecayer; // Definition of the static class description member. void VectorMeson2MesonDecayer::Init() { static ClassDocumentation<VectorMeson2MesonDecayer> documentation ("The VectorMeson2MesonDecayer class is designed to implement " "the decay of vector mesons to 2 scalar mesons via a current which is the " "difference of the momenta of the two scalars. The order of the scalar meson " "momenta does not matter as it only changes the sign of the matrix element."); static ParVector<VectorMeson2MesonDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &VectorMeson2MesonDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMeson2MesonDecayer,int> interfaceOutcoming1 ("FirstOutgoing", "The PDG code for the first outgoing particle", &VectorMeson2MesonDecayer::_outgoing1, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMeson2MesonDecayer,int> interfaceOutcoming2 ("SecondOutgoing", "The PDG code for the second outgoing particle", &VectorMeson2MesonDecayer::_outgoing2, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMeson2MesonDecayer,double> interfaceCoupling ("Coupling", "The coupling for the decay mode", &VectorMeson2MesonDecayer::_coupling, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMeson2MesonDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &VectorMeson2MesonDecayer::_maxweight, 0, 0, 0, -10000000, 10000000, false, false, true); } double VectorMeson2MesonDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors,_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); for(unsigned int ix=0;ix<2;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return 0.; } // difference of the momenta Lorentz5Vector<double> pdiff = (decay[0]->momentum()-decay[1]->momentum()) * _coupling[imode()]/inpart.mass(); // compute the matrix element for(unsigned int ix=0;ix<3;++ix) ME()(ix,0,0)=_vectors[ix].dot(pdiff); // test of the matrix element // double me = newME.contract(_rho).real(); // Energy pcm=Kinematics::pstarTwoBodyDecay(inpart.mass(),decay[0]->mass(), // decay[1]->mass()); // double test = 4.*sqr(_coupling[imode()]*pcm/inpart.mass())/3.; // cerr << "testing matrix element for " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << me << " " << test << " " << (me-test)/(me+test) << "\n"; // return the answer return ME().contract(_rho).real(); } bool VectorMeson2MesonDecayer::twoBodyMEcode(const DecayMode & dm,int & mecode, double & coupling) const { int imode(-1); int id(dm.parent()->id()),idbar(id); if(dm.parent()->CC()) idbar=dm.parent()->CC()->id(); ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id()),id1bar(id1); if((**pit).CC()) id1bar=(**pit).CC()->id(); ++pit; int id2((**pit).id()),id2bar(id2); if((**pit).CC()) id2bar=(**pit).CC()->id(); unsigned int ix(0); bool order(false); do { if(id ==_incoming[ix]) { if(id1==_outgoing1[ix]&&id2==_outgoing2[ix]) { imode=ix; order=true; } if(id2==_outgoing1[ix]&&id1==_outgoing2[ix]) { imode=ix; order=false; } } if(idbar==_incoming[ix]&&imode<0) { if(id1bar==_outgoing1[ix]&&id2bar==_outgoing2[ix]) { imode=ix; order=true; } if(id2bar==_outgoing1[ix]&&id1bar==_outgoing2[ix]) { imode=ix; order=false; } } ++ix; } while(ix<_incoming.size()&&imode<0); coupling=_coupling[imode]; mecode=0; return order; } // output the setup information for the particle database void VectorMeson2MesonDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // the rest of the parameters for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":FirstOutgoing " << ix << " " << _outgoing1[ix] << "\n"; output << "newdef " << name() << ":SecondOutgoing " << ix << " " << _outgoing2[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix] << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":FirstOutgoing " << ix << " " << _outgoing1[ix] << "\n"; output << "insert " << name() << ":SecondOutgoing " << ix << " " << _outgoing2[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix] << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMeson2MesonDecayer.h������������������������������������0000644�0001750�0001750�00000015570�11754474773�025275� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMeson2MesonDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_VectorMeson2MesonDecayer_H #define HERWIG_VectorMeson2MesonDecayer_H // // This is the declaration of the VectorMeson2MesonDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * This class is the implementation for the decay of a vector meson to * two scalar mesons, the classic example is \f$\rho -> \pi\pi\f$, via a current * which is the difference of the momenta of the mesons. * \f[\mathcal{M} = g\epsilon_\mu(p_1-p_2)^\mu,\f] * where \f$p_{1,2}\f$ are the momenta of the decay products, * \f$\epsilon\f$ is the polarization vector of the decaying particle * and \f$g\f$ the coupling. * Obviously the * order of the momenta doesn't matter as it will only effect the sign of the * matrix element. * * The incoming vector mesons together with their decay products and the coupling * \f$g\f$ can be specified using the interfaces for the class. The maximum weights * for the decays can be calculated using the Initialize interface of the * DecayIntegrator class or specified using the interface. * * The incoming and outgoing particles, couplings and maximum weights for * many of the common \f$V\to PP\f$ decays are specified in the default * constructor. * * @see DecayIntegrator * @see \ref VectorMeson2MesonDecayerInterfaces "The interfaces" * defined for VectorMeson2MesonDecayer. * * \author Peter Richardson * */ class VectorMeson2MesonDecayer: public DecayIntegrator { public: /** * Default constructor. */ VectorMeson2MesonDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 0. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 { return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<VectorMeson2MesonDecayer> initVectorMeson2MesonDecayer; /** * Private and non-existent assignment operator. */ VectorMeson2MesonDecayer & operator=(const VectorMeson2MesonDecayer &); private: /** * the PDG codes for the incoming particles */ vector<int> _incoming; /** * the PDG codes for the first outgoing meson */ vector<int> _outgoing1; /** * the PDG codes for the second outgoing meson */ vector<int> _outgoing2; /** * the maximum weight for the integration */ vector<double> _maxweight; /** * the coupling for the decay */ vector<double> _coupling; /** * Initial size of the vectors */ unsigned int _initsize; /** * Storage of polarization tensors to try and increase * speed */ mutable vector<Helicity::LorentzPolarizationVector> _vectors; /** * Storage of the \f$\rho\f$ matrix */ mutable RhoDMatrix _rho; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of VectorMeson2MesonDecayer. */ template <> struct BaseClassTrait<Herwig::VectorMeson2MesonDecayer,1> { /** Typedef of the base class of VectorMeson2MesonDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VectorMeson2MesonDecayer> : public ClassTraitsBase<Herwig::VectorMeson2MesonDecayer> { /** Return the class name. */ static string className() { return "Herwig::VectorMeson2MesonDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwVMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_VectorMeson2MesonDecayer_H */ ����������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/OniumToOniumPiPiDecayer.h�������������������������������������0000644�0001750�0001750�00000021620�11754474773�025122� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // OniumToOniumPiPiDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_OniumToOniumPiPiDecayer_H #define HERWIG_OniumToOniumPiPiDecayer_H // // This is the declaration of the OniumToOniumPiPiDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * The OniumToOniumPiPiDecayer class uses the matrix element of * Brown and Cahn PRL35, 1 (1975) for the decay of onium resonaces to * lighter states and pion pairs. The matrix element is given by * \f[\mathcal{M} = \epsilon'\cdot\epsilon\left[ * \mathcal{A}\left(q^2-2m^2_\pi\right)+\mathcal{B}E_1E_2\right] * +\mathcal{C}\left((\epsilon'\cdot q_1)(\epsilon\cdot q_2)+ * (\epsilon'\cdot q_2)(\epsilon\cdot q_1)\right),\f] * where \f$\epsilon'\f$ is the polarization vector of the decaying onium resonance, * \f$\epsilon\f$ is the polarization vector of the outgoing onium resonance, * \f$\mathcal{A}\f$, \f$\mathcal{B}\f$ and \f$\mathcal{C}\f$ are complex couplings, * \f$m_\pi\f$ is the pion mass, \f$E_{1,2}\f$ are the pion energies, \f$q_{1,2}\f$ * are the pion momenta and \f$q\f$ is the momentum of the \f$\pi\pi\f$ system. * * The results of hep-ex/9909038 are used for \f$\psi'\to J/\psi\f$ and arXiv:0706.2317 * for \f$\Upsilon(3S)\f$ and \f$\Upsilon(2S)\f$ decays. * The remaining parameters are choosen * to approximately reproduce the distributions from hep-ex/0604031 and hep-ex/0508023. * * @see \ref OniumToOniumPiPiDecayerInterfaces "The interfaces" * defined for OniumToOniumPiPiDecayer. */ class OniumToOniumPiPiDecayer: public DecayIntegrator { public: /** * The default constructor. */ OniumToOniumPiPiDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 body partial width. * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; /** * The matrix element to be integrated for the three-body decays as a function * of the invariant masses of pairs of the outgoing particles. * @param imode The mode for which the matrix element is needed. * @param q2 The scale, \e i.e. the mass squared of the decaying particle. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The matrix element */ virtual double threeBodyMatrixElement(const int imode, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<OniumToOniumPiPiDecayer> initOniumToOniumPiPiDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ OniumToOniumPiPiDecayer & operator=(const OniumToOniumPiPiDecayer &); private: /** * the PDG codes for the incoming onium resonace */ vector<long> _incoming; /** * the PDG codes for the outgoing onium resonance */ vector<long> _outgoing; /** * the maximum weight for the integration */ vector<double> _maxweight; /** * Initial size of the vectors */ unsigned int _initsize; /** * The couplings for the decays */ //@{ /** * Overall normalisation */ vector<double> _coupling; /** * The real part of \f$A\f$ */ vector<InvEnergy2> _reA; /** * The imaginary part of \f$A\f$ */ vector<InvEnergy2> _imA; /** * The complex \f$A\f$ coupling */ vector<complex<InvEnergy2> > _cA; /** * The real part of \f$B\f$ */ vector<InvEnergy2> _reB; /** * The imaginary part of \f$B\f$ */ vector<InvEnergy2> _imB; /** * The complex \f$B\f$ coupling */ vector<complex<InvEnergy2> > _cB; /** * The real part of \f$C\f$ */ vector<InvEnergy2> _reC; /** * The imaginary part of \f$C\f$ */ vector<InvEnergy2> _imC; /** * The complex \f$C\f$ coupling */ vector<complex<InvEnergy2> > _cC; //@} /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the incomng and outgoing onium resonances */ mutable vector<Helicity::LorentzPolarizationVector> _vectors[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of OniumToOniumPiPiDecayer. */ template <> struct BaseClassTrait<Herwig::OniumToOniumPiPiDecayer,1> { /** Typedef of the first base class of OniumToOniumPiPiDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the OniumToOniumPiPiDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::OniumToOniumPiPiDecayer> : public ClassTraitsBase<Herwig::OniumToOniumPiPiDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::OniumToOniumPiPiDecayer"; } /** * The name of a file containing the dynamic library where the class * OniumToOniumPiPiDecayer is implemented. It may also include several, space-separated, * libraries if the class OniumToOniumPiPiDecayer depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwVMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_OniumToOniumPiPiDecayer_H */ ����������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/a1ThreePionDecayer.h������������������������������������������0000644�0001750�0001750�00000036312�11754474773�024061� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // a1ThreePionDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_a1ThreePionDecayer_H #define HERWIG_a1ThreePionDecayer_H // // This is the declaration of the a1ThreePionDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>a1ThreePionDecayer</code> class is designed to implement the decay * of the a_1 to three pions. The model used is one based on the Novosibirsk * four pion current used in TAUOLA. * * - The matrix element for the decay \f$a_1^0\to\pi^0\pi^0\pi^0\f$ is * * \f[J^\mu =\frac{F_{a_1}(q^2)g}{qM^2_{\rho_0}}\epsilon_\mu\left[ * q^2z \sum_i p^\mu_i \frac1{D_\sigma(s_i)}\right]\f] * * - The matrix element for the decay \f$a_1^+\to\pi^0\pi^0\pi^+\f$ is * * \f[J^\mu =\frac{F_{a_1}(q^2)g}{qM^2_{\rho_0}}\epsilon_\mu\left[ * q^2z\frac1{D_\sigma(s_3)} p_3^\mu * +\sum_k g_{\rho_k}\left\{ * \frac1{D_{\rho_k}(s_1)}\left(p_0\cdot p_3p_2^\mu-p_0\cdot p_2p_3^\mu\right) * +\frac1{D_{\rho_k}(s_2)}\left(p_0\cdot p_3p_1^\mu-p_0\cdot p_1p_3^\mu\right) \right\} * \right]\f] * * - The matrix element for the decay \f$a_10\to\pi^+\pi^-\pi^0\f$ is * * \f[J^\mu =\frac{F_{a_1}(q^2)g}{qM^2_{\rho_0}}\left[ * q^2z\frac1{D_\sigma(s_3)}p_3^\mu * +\sum_k g_{\rho_k}\left\{ * \frac1{D_{\rho_k}(s_1)}\left(p_0\cdot p_3p_2^\mu-p_0\cdot p_2p_3^\mu\right) * +\frac1{D_{\rho_k}(s_2)}\left(p_0\cdot p_3p_1^\mu-p_0\cdot p_1p_3^\mu\right)\right\} * \right]\f] * * - The current for the decay \f$a_1^+\to\pi^+\pi^+\pi^-\f$ is * * \f[J^\mu = \frac{F_{a_1}(q^2)g}{qM^2_{\rho_0}}\left[ * q^2z\left(\frac1{D_\sigma(s_1)}p_1^\mu+\frac1{D_\sigma(s_2)}p_2^\mu\right) * -\sum_k g_{\rho_k}\left\{ * \frac1{D_{\rho_k}(s_1)}\left(p_0\cdot p_3p_2^\mu-p_0\cdot p_2p_3^\mu\right) * +\frac1{D_{\rho_k}(s_2)}\left(p_0\cdot p_3p_1^\mu-p_0\cdot p_1p_3^\mu\right)\right\} * \right]\f] * * * The denominator factor is * \f[D_\sigma(q^2) = q^2-M^2+iM\Gamma\frac{g_\sigma(q^2)}{g_\sigma(M^2)}\f] * where \f$g(s) = \left(1-4\frac{m_{\pi}^2}{s}\right)\f$ for the \f$\sigma\f$ meson, * and * \f[D_{\rho_k}(q^2) = q^2-M^2_{\rho_k}-M_{\rho_k}\Gamma_{\rho_k}dm(q^2) * +iM_{\rho_k}\Gamma_{\rho_k}\frac{g_{\rho_k}(q^2)}{g_{\rho_k}(M^2)} * \f] * for the \f$\rho\f$. * * The propagator factors are normalized such that \f$D(0)=-1\f$. * * Here * \f[dm(q^2) = \frac1{g_{\rho_k}(M^2_{\rho_k}}\left(h_{\rho_k}(q^2)-h_{\rho_k}(M^2_{\rho_k} * -\left.(q^2-M^2_{\rho_k})\frac{dh_{\rho_k}(q^2)}{dq^2}\right|_{q^2=M^2_{\rho_k}} * \right)\f] * where * \f[h_{\rho_k}(q^2) = * \left\{ \begin{array}{cc} * \frac{\sqrt{1-\frac{4m_\pi^2}{q^2}}\ln\left(\frac{1+\sqrt{1-\frac{4m_\pi^2}{q^2}}}{1-\sqrt{1-\frac{4m_\pi^2}{q^2}}}\right)(q^2-4m_\pi^2)}\pi & {\rm for\ } q^2>4m_\pi^2 \\ * -8\frac{m_\pi^2}{\pi} & {\rm for\ } q^2=0\,{\rm GeV^2} \\ * 0 & {\rm otherwise} * \end{array}\right.\f] * * The \f$a_1\f$ form factor for the off-shell \f$a_1\f$ is given by * \f[F_{a_1}(q^2) = \frac{\left(1+m^2_{a_1}/\Lambda^2\right)} * {\left(1+ q^2/\Lambda^2\right)}.\f] * * The masses and couplings are * - \f$z\f$ is the relative coupling of the \f$\sigma\f$. * - \f$m_\pi\f$ is the mass of the pion. * - \f$g_{\rho_k}\f$ is the coupling of the \f$k\f$th \f$\rho\f$ multiplet. * - \f$M_{\rho_k}\f$ the mass of the \f$k\f$th \f$\rho\f$ resonance. * - \f$\Gamma_{\rho_k}\f$ the width of the \f$k\f$th \f$\rho\f$ resonance. * - \f$M_\sigma\f$ the mass of the \f$\sigma\f$ meson. * - \f$\Gamma_\sigma\f$ the width of the \f$\sigma\f$ meson. * - \f$m_{a_1}\f$ the mass of the \f$a_1\f$ meson. * - \f$\Lambda^2\f$ the mass parameter for the \f$a_1\f$ form factor. * @see FourPionNovosibirskCurrent * @see DecayIntegrator * */ class a1ThreePionDecayer: public DecayIntegrator { public: /** * Default constructor. */ a1ThreePionDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 body partial width. * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; /** * The matrix element to be integrated for the three-body decays as a function * of the invariant masses of pairs of the outgoing particles. * @param imode The mode for which the matrix element is needed. * @param q2 The scale, \e i.e. the mass squared of the decaying particle. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The matrix element */ virtual double threeBodyMatrixElement(const int imode , const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<a1ThreePionDecayer> inita1ThreePionDecayer; /** * Private and non-existent assignment operator. */ a1ThreePionDecayer & operator=(const a1ThreePionDecayer &); private: /** * Breit-wigner for the \f$\sigma\f$, this is \f$\frac1{D_\sigma(q^2)}\f$. * @param q2 The scale, \f$q^2\f$. * @return The Breit-Wigner */ Complex sigmaBreitWigner(Energy2 q2) const { Energy q=sqrt(q2); Energy width=_sigmawidth*Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi)/_psigma; Energy2 msigma2=_sigmamass*_sigmamass; Complex ii(0.,1.); complex<Energy2> denom = q>2.*_mpi ? q2-msigma2+ii*msigma2*width/q : q2-msigma2; return msigma2/denom; } /** * The \f$a_1\f$ form factor, \f$F_{a_1}(q^2)\f$ * @param q2 The scale, \f$q^2\f$. * @return The form factor. */ double a1FormFactor(Energy2 q2) const { return (1.+_a1mass2/_lambda2)/(1.+q2/_lambda2); } /** * Breit-Wigner for the \f$\rho\f$, this is \f$\frac1{D_{\rho_k}(q^2)}\f$. * @param q2 The scale, \f$q^2\f$. * @param ires The \f$\rho\f$ multiplet. * @return The Breit-Wigner */ Complex rhoBreitWigner(Energy2 q2,int ires) const { Energy q=sqrt(q2); Energy2 grhom = 8.*_prho[ires]*_prho[ires]*_prho[ires]/_rhomass[ires]; complex<Energy2> denom; Complex ii(0.,1.); if(q2<4.*_mpi2) { denom=q2-_rhomass[ires]*_rhomass[ires]-_rhowidth[ires]*_rhomass[ires]* (hFunction(q)-_hm2[ires]-(q2-_rhomass[ires]*_rhomass[ires])*_dhdq2m2[ires]) /grhom; } else { Energy pcm=2.*Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi); Energy2 grho = pcm*pcm*pcm/q; denom=q2-_rhomass[ires]*_rhomass[ires] -_rhowidth[ires]*_rhomass[ires]* (hFunction(q)-_hm2[ires]-(q2-_rhomass[ires]*_rhomass[ires])*_dhdq2m2[ires])/grhom +ii*_rhomass[ires]*_rhowidth[ires]*grho/grhom; } return _rhoD[ires]/denom; } /** * Normalisation factor for the \f$\rho\f$ propagator to ensure \f$D(0)=-1\f$. * @param ires The \f$\rho\f$ multiplet. * @return The normalisation factor. */ Energy2 DParameter(int ires) const { Energy2 grhom = 8.*_prho[ires]*_prho[ires]*_prho[ires]/_rhomass[ires]; return _rhomass[ires]*_rhomass[ires]+_rhowidth[ires]*_rhomass[ires]* (hFunction(ZERO)-_hm2[ires]+sqr(_rhomass[ires])*_dhdq2m2[ires])/grhom; } /** * The \f$\frac{dh}{dq^2}\f$ function in the rho propagator evaluated at \f$q^2=m^2\f$. * @param ires The \f$\rho\f$ resonance for the function * @return \f$\frac{dh}{dq^2}\f$ evaluated at \f$q^2=m^2\f$. */ double dhdq2Parameter(int ires) const { Energy2 mrho2(sqr(_rhomass[ires])); double root = sqrt(1.-4.*_mpi2/mrho2); using Constants::pi; return root/pi*(root+(1.+2*_mpi2/mrho2)*log((1+root)/(1-root))); } /** * The \f$h(q^2)\f$ function in the \f$\rho\f$ propagator. * @param q The scale, \f$q\f$. * @return The function \f$h(q^2)\f$. */ Energy2 hFunction(const Energy q) const { static const Energy2 eps(0.01*MeV2); Energy2 q2=sqr(q), output; double root = sqrt(1.-4.*_mpi2/q2); if(q2>4*_mpi2) { output=root*log((1.+root)/(1.-root))*(q2-4*_mpi2)/Constants::pi; } else if(q2>eps) output=ZERO; else output=-8.*_mpi2/Constants::pi; return output; } /** * Momentum Function */ Energy4 lambda(Energy2 a, Energy2 b, Energy2 c) const { return sqr(a)+sqr(b)+sqr(c)-2.*a*b-2.*a*c-2.*b*c; } private: /** * Mass of the rho resonances */ vector<Energy> _rhomass; /** * Width of the rho resonaces */ vector<Energy> _rhowidth; /** * Momentum of the pions produced in the \f$\rho\f$ decay. */ vector<Energy> _prho; /** * The function \f$h(q^2)\f$ evaluated at \f$q^2=M^2_{\rho_k}\f$ */ vector<Energy2> _hm2; /** * The normalization factor for the \f$\rho_k\f$ propagator factor. */ vector<Energy2> _rhoD; /** * The \f$\frac{dh}{dq^2}\f$ function in the rho propagator evaluated at \f$q^2=m^2\f$ * for the different \f$\rho\f$ multiplets. */ vector<double> _dhdq2m2; /** * The mass of the \f$\sigma\f$ meson. */ Energy _sigmamass; /** * The width of the \f$\sigma\f$ meson. */ Energy _sigmawidth; /** * The momenta of the pions produced in the \f$\sigma\f$ meson decay. */ Energy _psigma; /** * The mass of the pion, \f$m_\pi\f$. */ Energy _mpi; /** * The mass of the pion, \f$m^2_\pi\f$. */ Energy2 _mpi2; /** * The \f$\Lambda^2\f$ parameter for the \f$a_1\f$ form factor. */ Energy2 _lambda2; /** * The mass squared of the \f$a_1\f$ meson, \f$m_{a_1}^2\f$. */ Energy2 _a1mass2; /** * The \f$z\f$ coupling for the \f$\sigma\f$ resonance. */ Complex _zsigma; /** * The magnitude of the \f$z\f$ \f$\sigma\f$ coupling. */ double _zmag; /** * The phase of the \f$z\f$ \f$\sigma\f$ coupling. */ double _zphase; /** * \f$g_{\rho_k}\f$ is the coupling of the \f$k\f$ th \f$\rho\f$ multiplet. */ vector<Complex> _rhocoupling; /** * Magnitude of the rho coupling */ vector<double> _rhomag; /** * Phase of the rho coupling */ vector<double> _rhophase; /** * The overall coupling for the decay. */ double _coupling; /** * use local values of the mass parameters */ bool _localparameters; /** * Weights for the channels for the zero charged pion channel. */ mutable vector<double> _zerowgts; /** * Weights for the channels for the one charged pion channel. */ mutable vector<double> _onewgts; /** * Weights for the channels for the two charged pion channel. */ mutable vector<double> _twowgts; /** * Weights for the channels for the three charged pion channel. */ mutable vector<double> _threewgts; /** * Maximum weight for the zero charged pion channel. */ mutable double _zeromax; /** * Maximum weight for the one charged pion channel. */ mutable double _onemax; /** * Maximum weight for the two charged pion channel. */ mutable double _twomax; /** * Maximum weight for the three charged pion channel. */ mutable double _threemax; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors */ mutable vector<Helicity::LorentzPolarizationVector> _vectors; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of a1ThreePionDecayer. */ template <> struct BaseClassTrait<Herwig::a1ThreePionDecayer,1> { /** Typedef of the base class of a1ThreePionDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::a1ThreePionDecayer> : public ClassTraitsBase<Herwig::a1ThreePionDecayer> { /** Return the class name.*/ static string className() { return "Herwig::a1ThreePionDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwVMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_a1ThreePionDecayer_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMesonVectorScalarDecayer.h������������������������������0000644�0001750�0001750�00000014754�11754474773�026525� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMesonVectorScalarDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_VectorMesonVectorScalarDecayer_H #define HERWIG_VectorMesonVectorScalarDecayer_H // // This is the declaration of the VectorMesonVectorScalarDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace Herwig; /** \ingroup Decay * * This class is designed for the decay of a vector meson to a spin-1 * particle, either a vector meson or a photon, and a scalar meson. * The current for the decay is * * \f[\mathcal{M}=g\epsilon_mu\left[ p_V \cdot p_0 \epsilon_V^\mu * -p_V^\mu \epsilon_V \cdot p_0\right],\f] * where \f$\epsilon\f$ is the polarization vector of the decaying vector * meson, \f$\epsilon_V\f$ is the polarization vector of the outgoing vector meson, * \f$p_0\f$ is the momentum of the decaying particle and \f$p_V\f$ is the momentum * of the outgoing vector meson. * * @see DecayIntegrator * @see \ref VectorMesonVectorScalarDecayerInterfaces "The interfaces" * defined for VectorMesonVectorScalarDecayer. * * \author Peter Richardson * */ class VectorMesonVectorScalarDecayer: public DecayIntegrator { public: /** * Default constructor. */ VectorMesonVectorScalarDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 4. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<VectorMesonVectorScalarDecayer> initVectorMesonVectorScalarDecayer; /** * Private and non-existent assignment operator. */ VectorMesonVectorScalarDecayer & operator=(const VectorMesonVectorScalarDecayer &); private: /** * coupling for a decay */ vector<InvEnergy> _coupling; /** * PDG codes for the incoming particles */ vector<int> _incoming; /** * PDG codes for the outgoing vector */ vector<int> _outgoingV; /** * PDG codes for the outgoing scalar mesons. */ vector<int> _outgoingS; /** * maximum weight for a decay */ vector<double> _maxweight; /** * Initial size of the vectors */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors */ mutable vector<Helicity::LorentzPolarizationVector> _vectors[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of VectorMesonVectorScalarDecayer. */ template <> struct BaseClassTrait<Herwig::VectorMesonVectorScalarDecayer,1> { /** Typedef of the base class of VectorMesonVectorScalarDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VectorMesonVectorScalarDecayer> : public ClassTraitsBase<Herwig::VectorMesonVectorScalarDecayer> { /** Return the class name.*/ static string className() { return "Herwig::VectorMesonVectorScalarDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwVMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_VectorMesonVectorScalarDecayer_H */ ��������������������herwig++-2.6.0.orig/Decay/VectorMeson/PVectorMesonVectorPScalarDecayer.cc���������������������������0000644�0001750�0001750�00000045146�11754474773�027122� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PVectorMesonVectorPScalarDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PVectorMesonVectorPScalarDecayer class. // #include "PVectorMesonVectorPScalarDecayer.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG::Helicity; void PVectorMesonVectorPScalarDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) if(mode(ix)) _maxweight[ix] = mode(ix)->maxWeight(); } } void PVectorMesonVectorPScalarDecayer::doinit() { DecayIntegrator::doinit(); // check consistence of the parameters unsigned int isize=_incoming.size(); if(isize!=_outgoingV.size()||isize!=_outgoingP.size()|| isize!=_maxweight.size()||isize!=_coupling.size()) throw InitException() << "Inconsistent parameters in " << "PVectorMesonVectorPScalarDecayer::doinit()" << Exception::abortnow; // set up the integration channels vector<double> wgt(0); tPDVector extpart(3); DecayPhaseSpaceModePtr mode; for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0]=getParticleData(_incoming[ix]); extpart[1]=getParticleData(_outgoingV[ix]); extpart[2]=getParticleData(_outgoingP[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } PVectorMesonVectorPScalarDecayer::PVectorMesonVectorPScalarDecayer() : _coupling(67), _incoming(67), _outgoingV(67), _outgoingP(67), _maxweight(67) { ME(DecayMatrixElement(PDT::Spin1,PDT::Spin1,PDT::Spin0)); // decay mode h'_1 to K K* _incoming[0] = 10333; _outgoingV[0] = 313; _outgoingP[0] = -311; _coupling[0] = 4.889/GeV; _maxweight[0] = 11.; _incoming[1] = 10333; _outgoingV[1] = 323; _outgoingP[1] = -321; _coupling[1] = 4.156/GeV; _maxweight[1] = 11.; // decay mode h_1 to rho _incoming[2] = 10223; _outgoingV[2] = 113; _outgoingP[2] = 111; _coupling[2] = 4.411/GeV; _maxweight[2] = 6.; _incoming[3] = 10223; _outgoingV[3] = -213; _outgoingP[3] = 211; _coupling[3] = 4.411/GeV; _maxweight[3] = 6.; // decay mode b_1 to omega pi _incoming[4] = 10113; _outgoingV[4] = 223; _outgoingP[4] = 111; _coupling[4] = 3.862/GeV; _maxweight[4] = 7.5; _incoming[5] = 10213; _outgoingV[5] = 223; _outgoingP[5] = 211; _coupling[5] = 3.862/GeV; _maxweight[5] = 7.5; // decay mode b_1^+ to gamma pi _incoming[6] = 10213; _outgoingV[6] = 22; _outgoingP[6] = 211; _coupling[6] = 0.195/GeV; _maxweight[6] = 2.; // decay mode D'_s1 to D*K _incoming[7] = 20433; _outgoingV[7] = 413; _outgoingP[7] = 311; _coupling[7] = 0.161/GeV; _maxweight[7] = 2.5; _incoming[8] = 20433; _outgoingV[8] = 423; _outgoingP[8] = 321; _coupling[8] = 0.161/GeV; _maxweight[8] = 2.5; // decay mode B'_s1 to B*K _incoming[9] = 20533; _outgoingV[9] = 513; _outgoingP[9] = -311; _coupling[9] = 0.389/GeV; _maxweight[9] = 2.1; _incoming[10] = 20533; _outgoingV[10] = 523; _outgoingP[10] = -321; _coupling[10] = 0.389/GeV; _maxweight[10] = 2.1; // decay mode K_1 to rho K _incoming[11] = 10323; _outgoingV[11] = 213; _outgoingP[11] = 311; _coupling[11] = 4.98/GeV; _maxweight[11] = 3.5; _incoming[12] = 10323; _outgoingV[12] = 113; _outgoingP[12] = 321; _coupling[12] = 3.40/GeV; _maxweight[12] = 3.5; _incoming[13] = 10313; _outgoingV[13] = -213; _outgoingP[13] = 321; _coupling[13] = 4.87/GeV; _maxweight[13] = 3.5; _incoming[14] = 10313; _outgoingV[14] = 113; _outgoingP[14] = 311; _coupling[14] = 3.55/GeV; _maxweight[14] = 3.5; // decay mode K'_1 to rho K _incoming[15] = 20323; _outgoingV[15] = 213; _outgoingP[15] = 311; _coupling[15] = 0.97/GeV; _maxweight[15] = 6.5; _incoming[16] = 20323; _outgoingV[16] = 113; _outgoingP[16] = 321; _coupling[16] = 0.69/GeV; _maxweight[16] = 6.5; _incoming[17] = 20313; _outgoingV[17] = -213; _outgoingP[17] = 321; _coupling[17] = 0.97/GeV; _maxweight[17] = 6.5; _incoming[18] = 20313; _outgoingV[18] = 113; _outgoingP[18] = 311; _coupling[18] = 0.707/GeV; _maxweight[18] = 6.5; // decay mode K_1 to omega K _incoming[19] = 10323; _outgoingV[19] = 223; _outgoingP[19] = 321; _coupling[19] = 4.76/GeV; _maxweight[19] = 7.5; _incoming[20] = 10313; _outgoingV[20] = 223; _outgoingP[20] = 311; _coupling[20] = 6.0/GeV; _maxweight[20] = 7.5; // decay mode K'_1 to omega K _incoming[21] = 20323; _outgoingV[21] = 223; _outgoingP[21] = 321; _coupling[21] = 0.600/GeV; _maxweight[21] = 8.; _incoming[22] = 20313; _outgoingV[22] = 223; _outgoingP[22] = 311; _coupling[22] = 0.600/GeV; _maxweight[22] = 8.; // decay mode K_1 to K* pi _incoming[23] = 10323; _outgoingP[23] = 211; _outgoingV[23] = 313; _coupling[23] = 0.941/GeV; _maxweight[23] = 8.5; _incoming[24] = 10323; _outgoingP[24] = 111; _outgoingV[24] = 323; _coupling[24] = 0.656/GeV; _maxweight[24] = 8.5; _incoming[25] = 10313; _outgoingP[25] = -211; _outgoingV[25] = 323; _coupling[25] = 0.932/GeV; _maxweight[25] = 8.5; _incoming[26] = 10313; _outgoingP[26] = 111; _outgoingV[26] = 313; _coupling[26] = 0.658/GeV; _maxweight[26] = 8.5; // decay mode K'_1 to K* pi _incoming[27] = 20323; _outgoingP[27] = 211; _outgoingV[27] = 313; _coupling[27] = 2.845/GeV; _maxweight[27] = 12.; _incoming[28] = 20323; _outgoingP[28] = 111; _outgoingV[28] = 323; _coupling[28] = 1.99/GeV; _maxweight[28] = 12.; _incoming[29] = 20313; _outgoingP[29] = -211; _outgoingV[29] = 323; _coupling[29] = 2.84/GeV; _maxweight[29] = 12.; _incoming[30] = 20313; _outgoingP[30] = 111; _outgoingV[30] = 313; _coupling[30] = 2.00/GeV; _maxweight[30] = 12.; // decaymode D_1 to D* pi _incoming[31] = 10423; _outgoingP[31] = -211; _outgoingV[31] = 413; _coupling[31] = 0.489/GeV; _maxweight[31] = 3.; _incoming[32] = 10423; _outgoingP[32] = 111; _outgoingV[32] = 423; _coupling[32] = 0.347/GeV; _maxweight[32] = 3.; _incoming[33] = 10413; _outgoingP[33] = 211; _outgoingV[33] = 423; _coupling[33] = 0.542/GeV; _maxweight[33] = 3.; _incoming[34] = 10413; _outgoingP[34] = 111; _outgoingV[34] = 413; _coupling[34] = 0.383/GeV; _maxweight[34] = 3.; // decaymode D'_1 to D* pi _incoming[35] = 20423; _outgoingP[35] = -211; _outgoingV[35] = 413; _coupling[35] = 1.933/GeV; _maxweight[35] = 3.; _incoming[36] = 20423; _outgoingP[36] = 111; _outgoingV[36] = 423; _coupling[36] = 1.367/GeV; _maxweight[36] = 3.; _incoming[37] = 20413; _outgoingP[37] = 211; _outgoingV[37] = 423; _coupling[37] = 1.926/GeV; _maxweight[37] = 3.; _incoming[38] = 20413; _outgoingP[38] = 111; _outgoingV[38] = 413; _coupling[38] = 1.367/GeV; _maxweight[38] = 3.; // decaymode B_1 to B* pi _incoming[39] = 10523; _outgoingP[39] = 211; _outgoingV[39] = 513; _coupling[39] = 0.130/GeV; _maxweight[39] = 2.2; _incoming[40] = 10523; _outgoingP[40] = 111; _outgoingV[40] = 523; _coupling[40] = 0.0924/GeV; _maxweight[40] = 2.2; _incoming[41] = 10513; _outgoingP[41] = -211; _outgoingV[41] = 523; _coupling[41] = 0.130/GeV; _maxweight[41] = 2.2; _incoming[42] = 10513; _outgoingP[42] = 111; _outgoingV[42] = 513; _coupling[42] = 0.0924/GeV; _maxweight[42] = 2.2; // decaymode B'_1 to B* pi _incoming[43] = 20523; _outgoingP[43] = 211; _outgoingV[43] = 513; _coupling[43] = 0.445/GeV; _maxweight[43] = 2.2; _incoming[44] = 20523; _outgoingP[44] = 111; _outgoingV[44] = 523; _coupling[44] = 0.314/GeV; _maxweight[44] = 2.2; _incoming[45] = 20513; _outgoingP[45] = -211; _outgoingV[45] = 523; _coupling[45] = 0.445/GeV; _maxweight[45] = 2.2; _incoming[46] = 20513; _outgoingP[46] = 111; _outgoingV[46] = 513; _coupling[46] = 0.314/GeV; _maxweight[46] = 2.2; // decaymode D_s1 to D* pi _incoming[47] = 10433; _outgoingP[47] = 111; _outgoingV[47] = 433; _coupling[47] = 0.022/GeV; _maxweight[47] = 2.5; // decaymode D_s1 to D gamma _incoming[48] = 10433; _outgoingP[48] = 431; _outgoingV[48] = 22; _coupling[48] = 0.0587/GeV; _maxweight[48] = 2.1; // decaymode B_s1 to B gamma _incoming[49] = 10533; _outgoingP[49] = 531; _outgoingV[49] = 22; _coupling[49] = 0.142/GeV; _maxweight[49] = 2.; // decaymode B_s1 to B* pi _incoming[50] = 10533; _outgoingP[50] = 111; _outgoingV[50] = 533; _coupling[50] = 0.0074/GeV; _maxweight[50] = 2.1; // decaymode B_c1 to B_c gamma _incoming[51] = 10543; _outgoingP[51] = 541; _outgoingV[51] = 22; _coupling[51] = 0.0759/GeV; _maxweight[51] = 2.2; // decaymode B'_c1 to B_c gamma _incoming[52] = 20543; _outgoingP[52] = 541; _outgoingV[52] = 22; _coupling[52] = 0.175/GeV; _maxweight[52] = 2.2; // decaymode h_c to eta_c gamma _incoming[53] = 10443; _outgoingP[53] = 441; _outgoingV[53] = 22; _coupling[53] = 0.329/GeV; _maxweight[53] = 4.; // decaymode h_b to eta_b gamma _incoming[54] = 10553; _outgoingP[54] = 551; _outgoingV[54] = 22; _coupling[54] = 0.0356/GeV; _maxweight[54] = 3.5; // a_1 to K* K _incoming[55] = 20213; _outgoingP[55] = -311; _outgoingV[55] = 323; _coupling[55] = 3.42/GeV; _maxweight[55] = 2.5; _incoming[56] = 20213; _outgoingP[56] = 321; _outgoingV[56] = -313; _coupling[56] = 3.42/GeV; _maxweight[56] = 2.5; _incoming[57] = 20113; _outgoingP[57] = 321; _outgoingV[57] = -323; _coupling[57] = 3.42/GeV; _maxweight[57] = 4.0; _incoming[58] = 20113; _outgoingP[58] = 311; _outgoingV[58] = -313; _coupling[58] = 3.42/GeV; _maxweight[58] = 4.0; // a_1 to gamma pi _incoming[59] = 20113; _outgoingP[59] = 111; _outgoingV[59] = 22; _coupling[59] = 0.01/GeV; _maxweight[59] = 2.; _incoming[60] = 20213; _outgoingP[60] = 211; _outgoingV[60] = 22; _coupling[60] = 0.01/GeV; _maxweight[60] = 2.; // f'_1 to K* K _incoming[61] = 20333; _outgoingP[61] = 321; _outgoingV[61] = -323; _coupling[61] = 1.637/GeV; _maxweight[61] = 7.; _incoming[62] = 20333; _outgoingP[62] = 311; _outgoingV[62] = -313; _coupling[62] = 1.737/GeV; _maxweight[62] = 7.; // decay mode K_1 to gamma K _incoming[63] = 10313; _outgoingV[63] = 22; _outgoingP[63] = 311; _coupling[63] = 0.119/GeV; _maxweight[63] = 7.5; // decay mode K'_1 to gamma K _incoming[64] = 20313; _outgoingV[64] = 22; _outgoingP[64] = 311; _coupling[64] = 0.220/GeV; _maxweight[64] = 8.; // decaymode B_s1 to B K _incoming[65] = 10533; _outgoingP[65] = -311; _outgoingV[65] = 513; _coupling[65] = 0.0418/GeV; _maxweight[65] = 2.; _incoming[66] = 10533; _outgoingP[66] = -321; _outgoingV[66] = 523; _coupling[66] = 0.0373/GeV; _maxweight[66] = 2.; // initial size of the arrays _initsize = _coupling.size(); // intermediates generateIntermediates(false); } int PVectorMesonVectorPScalarDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=2) return -1; int id(parent->id()); int idbar = parent->CC() ? parent->CC()->id() : id; int id1(children[0]->id()); int id1bar = children[0]->CC() ? children[0]->CC()->id() : id1; int id2(children[1]->id()); int id2bar = children[1]->CC() ? children[1]->CC()->id() : id2; int imode(-1); unsigned int ix(0); cc=false; do { if(id ==_incoming[ix]) { if((id1 ==_outgoingV[ix]&&id2 ==_outgoingP[ix])|| (id2 ==_outgoingV[ix]&&id1 ==_outgoingP[ix])) imode=ix; } if(idbar==_incoming[ix]&&imode<0) { if((id1bar==_outgoingV[ix]&&id2bar==_outgoingP[ix])|| (id2bar==_outgoingV[ix]&&id1bar==_outgoingP[ix])) { imode=ix; cc=true; } } ++ix; } while(ix<_incoming.size()&&imode<0); return imode; } void PVectorMesonVectorPScalarDecayer::persistentOutput(PersistentOStream & os) const { os << _incoming << _outgoingV << _outgoingP << _maxweight << ounit(_coupling,1/GeV); } void PVectorMesonVectorPScalarDecayer::persistentInput(PersistentIStream & is, int) { is >> _incoming >> _outgoingV >> _outgoingP >> _maxweight >> iunit(_coupling,1/GeV); } ClassDescription<PVectorMesonVectorPScalarDecayer> PVectorMesonVectorPScalarDecayer::initPVectorMesonVectorPScalarDecayer; // Definition of the static class description member. void PVectorMesonVectorPScalarDecayer::Init() { static ClassDocumentation<PVectorMesonVectorPScalarDecayer> documentation ("The PVectorMesonVectorPScalarDecayer class is designed for the " "decay of a pseudovector meson to a vector meson, or the photon, and a " "pseudoscalar meson."); static ParVector<PVectorMesonVectorPScalarDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &PVectorMesonVectorPScalarDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PVectorMesonVectorPScalarDecayer,int> interfaceOutcomingVector ("OutgoingVector", "The PDG code for the outgoing spin-1 particle", &PVectorMesonVectorPScalarDecayer::_outgoingV, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PVectorMesonVectorPScalarDecayer,int> interfaceOutcomingPScalar ("OutgoingPScalar", "The PDG code for the outgoing spin-0 particle", &PVectorMesonVectorPScalarDecayer::_outgoingP, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<PVectorMesonVectorPScalarDecayer,InvEnergy> interfaceCoupling ("Coupling", "The coupling for the decay mode", &PVectorMesonVectorPScalarDecayer::_coupling, 1/GeV, 0, ZERO, ZERO, 100./GeV, false, false, true); static ParVector<PVectorMesonVectorPScalarDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &PVectorMesonVectorPScalarDecayer::_maxweight, 0, 0, 0, 0., 10000., false, false, true); } double PVectorMesonVectorPScalarDecayer::me2(const int, const Particle & inpart, const ParticleVector& decay, MEOption meopt) const { // is the vector massless bool photon(_outgoingV[imode()]==ParticleID::gamma); if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors[0],_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors[0],const_ptr_cast<tPPtr>(&inpart), incoming,true,false); VectorWaveFunction::constructSpinInfo(_vectors[1],decay[0], outgoing,true,photon); ScalarWaveFunction::constructSpinInfo(decay[1],outgoing,true); return 0.; } VectorWaveFunction::calculateWaveFunctions(_vectors[1],decay[0],outgoing,photon); // compute the matrix element Energy2 p0dotpv(inpart.momentum()*decay[0]->momentum()); complex<Energy> epsdot(ZERO); InvEnergy2 pre(_coupling[imode()]/inpart.mass()); for(unsigned ix=0;ix<3;++ix) { if(ix==1&&photon) { for(unsigned int iy=0;iy<3;++iy) ME()(iy,ix,0)=0.; } else { epsdot=_vectors[1][ix]*inpart.momentum(); for(unsigned int iy=0;iy<3;++iy) ME()(iy,ix,0)=pre*_vectors[0][iy].dot(p0dotpv*_vectors[1][ix] -epsdot*decay[0]->momentum()); } } // test of the matrix element // double me = newME.contract(rhoin).real(); // Energy pcm=Kinematics::pstarTwoBodyDecay(inpart.mass(),decay[0]->mass(), // decay[1]->mass()); // double test = sqr(_coupling[imode()])/3.*(2.*sqr(pcm)+3.*sqr(decay[0]->mass())); // cerr << "testing matrix element for " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << me << " " << test << " " << (me-test)/(me+test) << "\n"; // return the answer return ME().contract(_rho).real(); } bool PVectorMesonVectorPScalarDecayer::twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const { int id(dm.parent()->id()),idbar(id); if(dm.parent()->CC()){idbar=dm.parent()->CC()->id();} ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id()),id1bar(id1); if((**pit).CC()){id1bar=(**pit).CC()->id();} ++pit; int id2((**pit).id()),id2bar(id2); if((**pit).CC()){id2bar=(**pit).CC()->id();} unsigned int ix(0); bool order(false); int imode(-1); do { if(id==_incoming[ix]) { if(id1 ==_outgoingV[ix]&&id2 ==_outgoingP[ix]) { imode=ix; order=true; } if(id2 ==_outgoingV[ix]&&id1 ==_outgoingP[ix]) { imode=ix; order=false; } } if(idbar==_incoming[ix]&&imode<0) { if(id1bar==_outgoingV[ix]&&id2bar==_outgoingP[ix]) { imode=ix; order=true; } if(id2bar==_outgoingV[ix]&&id1bar==_outgoingP[ix]) { imode=ix; order=false; } } ++ix; } while(ix<_incoming.size()&&imode<0); coupling = _coupling[imode]*dm.parent()->mass(); mecode = 4; return order; } void PVectorMesonVectorPScalarDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // the rest of the parameters for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":OutgoingVector " << ix << " " << _outgoingV[ix] << "\n"; output << "newdef " << name() << ":OutgoingPScalar " << ix << " " << _outgoingP[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":OutgoingVector " << ix << " " << _outgoingV[ix] << "\n"; output << "insert " << name() << ":OutgoingPScalar " << ix << " " << _outgoingP[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMesonVectorPScalarDecayer.h�����������������������������0000644�0001750�0001750�00000016020�11754474773�026631� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMesonVectorPScalarDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_VectorMesonVectorPScalarDecayer_H #define HERWIG_VectorMesonVectorPScalarDecayer_H // This is the declaration of the VectorMesonVectorPScalarDecayer class. #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { /** \ingroup Decay * * This class is designed for the decay of a vector meson to another spin-1 * particle, either another vector meson or a photon, and a pseduoscalar meson. * The matrix element for the decay is * \f[\mathcal{M} = g\epsilon^{\mu\nu\alpha\beta} * \epsilon_{0\mu} p_{0\nu} p_{1\alpha} \epsilon_{1\beta}, \f] * where \f$p_0\f$ is the momentum of the decaying particle, \f$p_1\f$ is the momentum * of the outgoing vector particle, \f$\epsilon_0\f$ is the polarization vector of * the incoming meson and \f$\epsilon_1\f$ is the polarization vector of the * outgoing vector particle.. * * Examples of such decays are \f$\rho\to\pi\gamma\f$. * * The incoming vector mesons together with their decay products and the coupling * \f$g\f$ can be specified using the interfaces for the class. The maximum weights * for the decays can be calculated using the Initialize interface of the * DecayIntegrator class or specified using the interface. * * The incoming and outgoing particles, couplings and maximum weights for * many of the common \f$V\to PV\f$ decays are specified in the default * constructor. * * @see DecayIntegrator * @see \ref VectorMesonVectorPScalarDecayerInterfaces "The interfaces" * defined for VectorMesonVectorPScalarDecayer. * * \author Peter Richardson * */ class VectorMesonVectorPScalarDecayer: public DecayIntegrator { public: /** * Default constructor. */ VectorMesonVectorPScalarDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 1. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<VectorMesonVectorPScalarDecayer> initVectorMesonVectorPScalarDecayer; /** * Private and non-existent assignment operator. */ VectorMesonVectorPScalarDecayer & operator=(const VectorMesonVectorPScalarDecayer &); private: /** * coupling for a decay */ vector<InvEnergy> _coupling; /** * the PDG codes for the incoming particle */ vector<int> _incoming; /** * the PDG codes for the outgoing vector */ vector<int> _outgoingV; /** * the PDG codes for the outgoing pseudoscalar */ vector<int> _outgoingP; /** * maximum weight for a decay */ vector<double> _maxweight; /** * Initial size of the vectors */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors */ mutable vector<Helicity::LorentzPolarizationVector> _vectors[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of VectorMesonVectorPScalarDecayer. */ template <> struct BaseClassTrait<Herwig::VectorMesonVectorPScalarDecayer,1> { /** Typedef of the base class of VectorMesonVectorPScalarDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VectorMesonVectorPScalarDecayer> : public ClassTraitsBase<Herwig::VectorMesonVectorPScalarDecayer> { /** Return the class name. */ static string className() { return "Herwig::VectorMesonVectorPScalarDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwVMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_VectorMesonVectorPScalarDecayer_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMeson2FermionDecayer.cc���������������������������������0000644�0001750�0001750�00000035730�11754474773�025751� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMeson2FermionDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the VectorMeson2FermionDecayer class. // #include "VectorMeson2FermionDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; void VectorMeson2FermionDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) { if(mode(ix)) _maxweight[ix] = mode(ix)->maxWeight(); } } } void VectorMeson2FermionDecayer::doinit() { DecayIntegrator::doinit(); // check the parameters arew consistent unsigned int isize=_coupling.size(); if(isize!=_incoming.size() || isize!=_outgoingf.size()|| isize!=_outgoinga.size() || isize!=_maxweight.size()) throw InitException() << "Inconsistent parameters in VectorMeson2" << "FermionDecayer::doiin() " << Exception::runerror; // set up the integration channels vector<double> wgt(0); DecayPhaseSpaceModePtr mode; tPDVector extpart(3); for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0]=getParticleData(_incoming[ix]); extpart[1]=getParticleData(_outgoingf[ix]); extpart[2]=getParticleData(_outgoinga[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } VectorMeson2FermionDecayer::VectorMeson2FermionDecayer() : _coupling(42), _incoming(42), _outgoingf(42), _outgoinga(42), _maxweight(42) { ME(DecayMatrixElement(PDT::Spin1,PDT::Spin1Half,PDT::Spin1Half)); // don't include intermediates generateIntermediates(false); // rho -> e+e-, mu+mu _incoming[0] = 113; _outgoingf[0] = 11; _outgoinga[0] = -11; _coupling[0] = 18.524E-3; _maxweight[0] = 1.61; _incoming[1] = 113; _outgoingf[1] = 13; _outgoinga[1] = -13; _coupling[1] = 18.524E-3; _maxweight[1] = 1.61; // omega -> e+e-, mu+mu- _incoming[2] = 223; _outgoingf[2] = 11; _outgoinga[2] = -11; _coupling[2] = 5.429E-3; _maxweight[2] = 1.61; _incoming[3] = 223; _outgoingf[3] = 13; _outgoinga[3] = -13; _coupling[3] = 5.429E-3; _maxweight[3] = 1.61; // phi -> e+e-, mu+mu- _incoming[4] = 333; _outgoingf[4] = 11; _outgoinga[4] = -11; _coupling[4] = 6.852E-3; _maxweight[4] = 1.61; _incoming[5] = 333; _outgoingf[5] = 13; _outgoinga[5] = -13; _coupling[5] = 6.852E-3; _maxweight[5] = 1.61; // psi(1d) to leptons _incoming[6] = 30443; _outgoingf[6] = 11; _outgoinga[6] = -11; _coupling[6] = 1.590E-3; _maxweight[6] = 1.7; _incoming[7] = 30443; _outgoingf[7] = 13; _outgoinga[7] = -13; _coupling[7] = 1.509E-3; _maxweight[7] = 1.7; _incoming[8] = 30443; _outgoingf[8] = 15; _outgoinga[8] = -15; _coupling[8] = 1.509E-3; _maxweight[8] = 1.8; // J/psi decay _incoming[9] = 443; _outgoingf[9] = 11; _outgoinga[9] = -11; _coupling[9] = 8.215E-3; _maxweight[9] = 1.7; _incoming[10] = 443; _outgoingf[10] = 13; _outgoinga[10] = -13; _coupling[10] = 8.215E-3; _maxweight[10] = 1.7; // psi2s to leptons _incoming[11] = 100443; _outgoingf[11] = 11; _outgoinga[11] = -11; _coupling[11] = 5.031E-3; _maxweight[11] = 1.7; _incoming[12] = 100443; _outgoingf[12] = 13; _outgoinga[12] = -13; _coupling[12] = 5.031E-3; _maxweight[12] = 1.7; _incoming[13] = 100443; _outgoingf[13] = 15; _outgoinga[13] = -15; _coupling[13] = 5.031E-3; _maxweight[13] = 1.7; // upsilon to leptons _incoming[14] = 553; _outgoingf[14] = 11; _outgoinga[14] = -11; _coupling[14] = 2.315E-3; _maxweight[14] = 1.7; _incoming[15] = 553; _outgoingf[15] = 13; _outgoinga[15] = -13; _coupling[15] = 2.315E-3; _maxweight[15] = 1.7; _incoming[16] = 553; _outgoingf[16] = 15; _outgoinga[16] = -15; _coupling[16] = 2.315E-3; _maxweight[16] = 1.7; // upsilon 2s to leptons _incoming[17] = 100553; _outgoingf[17] = 11; _outgoinga[17] = -11; _coupling[17] = 1.520E-3; _maxweight[17] = 1.7; _incoming[18] = 100553; _outgoingf[18] = 13; _outgoinga[18] = -13; _coupling[18] = 1.520E-3; _maxweight[18] = 1.7; _incoming[19] = 100553; _outgoingf[19] = 15; _outgoinga[19] = -15; _coupling[19] = 1.520E-3; _maxweight[19] = 1.7; // upsilon 3s to leptons _incoming[20] = 200553; _outgoingf[20] = 11; _outgoinga[20] = -11; _coupling[20] = 1.270E-3; _maxweight[20] = 1.7; _incoming[21] = 200553; _outgoingf[21] = 13; _outgoinga[21] = -13; _coupling[21] = 1.270E-3; _maxweight[21] = 1.7; _incoming[22] = 200553; _outgoingf[22] = 15; _outgoinga[22] = -15; _coupling[22] = 1.270E-3; _maxweight[22] = 1.7; // upsilon 4s to leptons _incoming[23] = 300553; _outgoingf[23] = 11; _outgoinga[23] = -11; _coupling[23] = 1.081E-3; _maxweight[23] = 1.7; _incoming[24] = 300553; _outgoingf[24] = 13; _outgoinga[24] = -13; _coupling[24] = 1.081E-3; _maxweight[24] = 1.7; _incoming[25] = 300553; _outgoingf[25] = 15; _outgoinga[25] = -15; _coupling[25] = 1.081E-3; _maxweight[25] = 1.7; // baryonic jpsi decays // to neutrons and proton _incoming[26] = 443; _outgoingf[26] = 2212; _outgoinga[26] = -2212; _maxweight[26] = 1.7; _coupling[26] = 1.619E-3; _incoming[27] = 443; _outgoingf[27] = 2112; _outgoinga[27] = -2112; _maxweight[27] = 1.7; _coupling[27] = 1.619E-3; // to sigma's _incoming[28] = 443; _outgoingf[28] = 3112; _outgoinga[28] = -3112; _maxweight[28] = 1.7; _coupling[28] = 1.342E-3; _incoming[29] = 443; _outgoingf[29] = 3212; _outgoinga[29] = -3212; _maxweight[29] = 1.7; _coupling[29] = 1.342E-3; _incoming[30] = 443; _outgoingf[30] = 3222; _outgoinga[30] = -3222; _maxweight[30] = 1.7; _coupling[30] = 1.342E-3; // to Xi's _incoming[31] = 443; _outgoingf[31] = 3322; _outgoinga[31] = -3322; _maxweight[31] = 1.7; _coupling[31] = 1.196E-3; _incoming[32] = 443; _outgoingf[32] = 3312; _outgoinga[32] = -3312; _maxweight[32] = 1.7; _coupling[32] = 1.196E-3; // to lambda _incoming[33] = 443; _outgoingf[33] = 3122; _outgoinga[33] = -3122; _maxweight[33] = 1.7; _coupling[33] = 1.416E-3; // baryonic psi(2s) decays // to neutrons and protons _incoming[34] = 100443; _outgoingf[34] = 2212; _outgoinga[34] = -2212; _maxweight[34] = 1.7; _coupling[34] = 9.692E-4; _incoming[35] = 100443; _outgoingf[35] = 2112; _outgoinga[35] = -2112; _maxweight[35] = 1.7; _coupling[35] = 9.692E-4; // to sigma's _incoming[36] = 100443; _outgoingf[36] = 3112; _outgoinga[36] = -3112; _maxweight[36] = 1.7; _coupling[36] = 9.273E-4; _incoming[37] = 100443; _outgoingf[37] = 3212; _outgoinga[37] = -3212; _maxweight[37] = 1.7; _coupling[37] = 9.273E-4; _incoming[38] = 100443; _outgoingf[38] = 3222; _outgoinga[38] = -3222; _maxweight[38] = 1.7; _coupling[38] = 9.273E-4; // to Xi's _incoming[39] = 100443; _outgoingf[39] = 3322; _outgoinga[39] = -3322; _maxweight[39] = 1.7; _coupling[39] = 8.862E-4; _incoming[40] = 100443; _outgoingf[40] = 3312; _outgoinga[40] = -3312; _maxweight[40] = 1.7; _coupling[40] = 8.862E-4; // to lambda _incoming[41] = 100443; _outgoingf[41] = 3122; _outgoinga[41] = -3122; _maxweight[41] = 1.7; _coupling[41] = 9.565E-4; // set the initial size _initsize=_incoming.size(); } int VectorMeson2FermionDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=2) return -1; int id(parent->id()); int idbar = parent->CC() ? parent->CC()->id() : id; int id1(children[0]->id()); int id1bar = children[0]->CC() ? children[0]->CC()->id() : id1; int id2(children[1]->id()); int id2bar = children[1]->CC() ? children[1]->CC()->id() : id2; int imode(-1); unsigned int ix(0); cc=false; do { if(_incoming[ix]==id ) { if((id1 ==_outgoingf[ix]&&id2 ==_outgoinga[ix])|| (id2 ==_outgoingf[ix]&&id1 ==_outgoinga[ix])) imode=ix; } if(_incoming[ix]==idbar) { if((id1bar==_outgoingf[ix]&&id2bar==_outgoinga[ix])|| (id2bar==_outgoingf[ix]&&id1bar==_outgoinga[ix])) { imode=ix; cc=true; } } ++ix; } while(imode<0&&ix<_incoming.size()); return imode; } void VectorMeson2FermionDecayer::persistentOutput(PersistentOStream & os) const { os << _coupling << _incoming << _outgoingf << _outgoinga << _maxweight; } void VectorMeson2FermionDecayer::persistentInput(PersistentIStream & is, int) { is >> _coupling >> _incoming >> _outgoingf >> _outgoinga >> _maxweight; } ClassDescription<VectorMeson2FermionDecayer> VectorMeson2FermionDecayer::initVectorMeson2FermionDecayer; // Definition of the static class description member. void VectorMeson2FermionDecayer::Init() { static ClassDocumentation<VectorMeson2FermionDecayer> documentation ("The VectorMeson2FermionDecayer class is designed for the decay " "of vectro mesons to fermions. It is mainly used for the decay of vector mesons " "to electrons and muons."); static ParVector<VectorMeson2FermionDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &VectorMeson2FermionDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMeson2FermionDecayer,int> interfaceOutcoming1 ("OutgoingFermion", "The PDG code for the outgoing fermion", &VectorMeson2FermionDecayer::_outgoingf, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMeson2FermionDecayer,int> interfaceOutcoming2 ("OutgoingAntiFermion", "The PDG code for the second outgoing anti-fermion", &VectorMeson2FermionDecayer::_outgoinga, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMeson2FermionDecayer,double> interfaceCoupling ("Coupling", "The coupling for the decay mode", &VectorMeson2FermionDecayer::_coupling, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMeson2FermionDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &VectorMeson2FermionDecayer::_maxweight, 0, 0, 0, -10000000, 10000000, false, false, true); } double VectorMeson2FermionDecayer::me2(const int, const Particle & inpart, const ParticleVector& decay, MEOption meopt) const { // fermion and antifermion unsigned int iferm(0),ianti(1); if(_outgoingf[imode()]!=decay[iferm]->id()) swap(iferm,ianti); // initialization if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors,_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); SpinorBarWaveFunction:: constructSpinInfo(_wavebar,decay[iferm],outgoing,true); SpinorWaveFunction:: constructSpinInfo(_wave ,decay[ianti],outgoing,true); return 0.; } SpinorBarWaveFunction:: calculateWaveFunctions(_wavebar,decay[iferm],outgoing); SpinorWaveFunction:: calculateWaveFunctions(_wave ,decay[ianti],outgoing); // prefactor InvEnergy pre(_coupling[imode()]/inpart.mass()); // now compute the currents LorentzPolarizationVector temp; for(unsigned ix=0;ix<2;++ix) { for(unsigned iy=0;iy<2;++iy) { temp = pre*_wave[ix].vectorCurrent(_wavebar[iy]); for(unsigned int iz=0;iz<3;++iz) { if(iferm>ianti) ME()(iz,ix,iy)=_vectors[iz].dot(temp); else ME()(iz,iy,ix)=_vectors[iz].dot(temp); } } } // test of the matrix element // double me = newME.contract(rhoin).real(); // double test = 4.*sqr(_coupling[imode()])/3.* // (1.+2.*sqr(decay[0]->mass()/inpart.mass())); // cerr << "testing matrix element for " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << me << " " << test << " " << (me-test)/(me+test) << "\n"; // return the answer return ME().contract(_rho).real(); } bool VectorMeson2FermionDecayer::twoBodyMEcode(const DecayMode & dm,int & mecode, double & coupling) const { int imode(-1); int id(dm.parent()->id()),idbar(id); if(dm.parent()->CC()){idbar=dm.parent()->CC()->id();} ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id()),id1bar(id1); if((**pit).CC()){id1bar=(**pit).CC()->id();} ++pit; int id2((**pit).id()),id2bar(id2); if((**pit).CC()){id2bar=(**pit).CC()->id();} unsigned int ix(0); bool order(false); do { if(id ==_incoming[ix]) { if(id1==_outgoingf[ix]&&id2==_outgoinga[ix]) { imode=ix; order=true; } if(id2==_outgoingf[ix]&&id1==_outgoinga[ix]) { imode=ix; order=false; } } if(idbar==_incoming[ix]&&imode<0) { if(id1bar==_outgoingf[ix]&&id2bar==_outgoinga[ix]) { imode=ix; order=true; } if(id2bar==_outgoingf[ix]&&id1bar==_outgoinga[ix]) { imode=ix; order=false; } } ++ix; } while(ix<_incoming.size()&&imode<0); coupling=_coupling[imode]; mecode=2; return order; } // output the setup information for the particle database void VectorMeson2FermionDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // the rest of the parameters for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":OutgoingFermion " << ix << " " << _outgoingf[ix] << "\n"; output << "newdef " << name() << ":OutgoingAntiFermion " << ix << " " << _outgoinga[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix] << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":OutgoingFermion " << ix << " " << _outgoingf[ix] << "\n"; output << "insert " << name() << ":OutgoingAntiFermion " << ix << " " << _outgoinga[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix] << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ����������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMesonVectorScalarDecayer.cc�����������������������������0000644�0001750�0001750�00000027213�11754474773�026655� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMesonVectorScalarDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the VectorMesonVectorScalarDecayer class. // #include "VectorMesonVectorScalarDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG::Helicity; void VectorMesonVectorScalarDecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { for(unsigned int ix=0;ix<_incoming.size();++ix) if(mode(ix)) _maxweight[ix] = mode(ix)->maxWeight(); } } VectorMesonVectorScalarDecayer::VectorMesonVectorScalarDecayer() : _coupling(16), _incoming(16), _outgoingV(16), _outgoingS(16), _maxweight(16) { ME(DecayMatrixElement(PDT::Spin1,PDT::Spin1,PDT::Spin0)); // decay of the phi to the a_0 and f_0 and a photon _incoming[0] = 333; _outgoingV[0] = 22; _outgoingS[0] = 9000111; _coupling[0] = 0.238/GeV; _maxweight[0] = 10.; _incoming[1] = 333; _outgoingV[1] = 22; _outgoingS[1] = 9010221; _coupling[1] = 0.267/GeV; _maxweight[1] = 15.; // Jpsi decays _incoming[2] = 443; _outgoingV[2] = 22; _outgoingS[2] = 10331; _coupling[2] = 0.00207/GeV; _maxweight[2] = 3.; _incoming[3] = 443; _outgoingV[3] = 223; _outgoingS[3] = 10331; _coupling[3] = 0.00144/GeV; _maxweight[3] = 9.; _incoming[4] = 443; _outgoingV[4] = 333; _outgoingS[4] = 10331; _coupling[4] = 0.00127/GeV; _maxweight[4] = 9.; _incoming[5] = 443; _outgoingV[5] = 333; _outgoingS[5] = 9010221; _coupling[5] = 0.00064/GeV; _maxweight[5] = 6.; _incoming[6] = 443; _outgoingV[6] = 223; _outgoingS[6] = 9010221; _coupling[6] = 0.00044/GeV; _maxweight[6] = 7.; _incoming[15] = 443; _outgoingV[15] = 22; _outgoingS[15] = 9030221; _coupling[15] = 0.00114/GeV; _maxweight[15] = 3.; // upsilon(2s) _incoming[7] = 100553; _outgoingV[7] = 22; _outgoingS[7] = 10551; _coupling[7] = 0.105/GeV; _maxweight[7] = 2.; // upsilon(3s) _incoming[8] = 200553; _outgoingV[8] = 22; _outgoingS[8] = 110551; _coupling[8] = 0.160/GeV; _maxweight[8] = 2.; // psi2s decays _incoming[9] = 100443; _outgoingV[9] = 22; _outgoingS[9] = 10441; _coupling[9] = 0.258/GeV; _maxweight[9] = 4.; _incoming[10] = 100443; _outgoingV[10] = 22; _outgoingS[10] = 331; _coupling[10] = 0.0508/GeV; _maxweight[10] = 2.; _incoming[11] = 100443; _outgoingV[11] = 22; _outgoingS[11] = 10331; _coupling[11] = 0.000680/GeV; _maxweight[11] = 2.; _incoming[12] = 100443; _outgoingV[12] = 333; _outgoingS[12] = 9010221; _coupling[12] = 0.000509/GeV; _maxweight[12] = 6.; // rho' to sigma rho _incoming[13] = 100213; _outgoingV[13] = 213; _outgoingS[13] = 9000221; _coupling[13] = 5.056/GeV; _maxweight[13] = 5.5; _incoming[14] = 100113; _outgoingV[14] = 113; _outgoingS[14] = 9000221; _coupling[14] = 5.056/GeV; _maxweight[14] = 5.5; // initial size of the arrays _initsize = _coupling.size(); // intermediates generateIntermediates(false); } void VectorMesonVectorScalarDecayer::doinit() { DecayIntegrator::doinit(); // check consistence of the parameters unsigned int isize=_incoming.size(); if(isize!=_outgoingV.size()||isize!=_outgoingS.size()|| isize!=_maxweight.size()||isize!=_coupling.size()) throw InitException() << "Inconsistent parameters in " << "VectorMesonVectorScalarDecayer::doinit()" << Exception::abortnow; // set up the integration channels vector<double> wgt(0); tPDVector extpart(3); DecayPhaseSpaceModePtr mode; for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0]=getParticleData(_incoming[ix]); extpart[1]=getParticleData(_outgoingV[ix]); extpart[2]=getParticleData(_outgoingS[ix]); if(extpart[0]&&extpart[1]&&extpart[2]) mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); else mode=DecayPhaseSpaceModePtr(); addMode(mode,_maxweight[ix],wgt); } } int VectorMesonVectorScalarDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=2) return -1; int id(parent->id()); int idbar = parent->CC() ? parent->CC()->id() : id; int id1(children[0]->id()); int id1bar = children[0]->CC() ? children[0]->CC()->id() : id1; int id2(children[1]->id()); int id2bar = children[1]->CC() ? children[1]->CC()->id() : id2; int imode(-1); unsigned int ix(0); cc=false; do { if(id ==_incoming[ix]) { if((id1 ==_outgoingV[ix]&&id2 ==_outgoingS[ix])|| (id2 ==_outgoingV[ix]&&id1 ==_outgoingS[ix])) imode=ix; } if(idbar==_incoming[ix]) { if((id1bar==_outgoingV[ix]&&id2bar==_outgoingS[ix])|| (id2bar==_outgoingV[ix]&&id1bar==_outgoingS[ix])) { imode=ix; cc=true; } } ++ix; } while(ix<_incoming.size()&&imode<0); return imode; } void VectorMesonVectorScalarDecayer::persistentOutput(PersistentOStream & os) const { os << _incoming << _outgoingV << _outgoingS << _maxweight << ounit(_coupling,1/GeV); } void VectorMesonVectorScalarDecayer::persistentInput(PersistentIStream & is, int) { is >> _incoming >> _outgoingV >> _outgoingS >> _maxweight >> iunit(_coupling,1/GeV); } ClassDescription<VectorMesonVectorScalarDecayer> VectorMesonVectorScalarDecayer::initVectorMesonVectorScalarDecayer; // Definition of the static class description member. void VectorMesonVectorScalarDecayer::Init() { static ClassDocumentation<VectorMesonVectorScalarDecayer> documentation ("The VectorMesonVectorScalarDecayer class is designed for the " "decay of a vector meson to a vector meson, or the photon, and a " "scalar meson."); static ParVector<VectorMesonVectorScalarDecayer,int> interfaceIncoming ("Incoming", "The PDG code for the incoming particle", &VectorMesonVectorScalarDecayer::_incoming, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonVectorScalarDecayer,int> interfaceOutcomingVector ("OutgoingVector", "The PDG code for the outgoing spin-1 particle", &VectorMesonVectorScalarDecayer::_outgoingV, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonVectorScalarDecayer,int> interfaceOutcomingScalar ("OutgoingScalar", "The PDG code for the outgoing spin-0 particle", &VectorMesonVectorScalarDecayer::_outgoingS, 0, 0, 0, -10000000, 10000000, false, false, true); static ParVector<VectorMesonVectorScalarDecayer,InvEnergy> interfaceCoupling ("Coupling", "The coupling for the decay mode", &VectorMesonVectorScalarDecayer::_coupling, 1/GeV, 0, ZERO, ZERO, 100./GeV, false, false, true); static ParVector<VectorMesonVectorScalarDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &VectorMesonVectorScalarDecayer::_maxweight, 0, 0, 0, 0., 100., false, false, true); } double VectorMesonVectorScalarDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // is the vector massless bool photon(_outgoingV[imode()]==ParticleID::gamma); if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors[0],_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors[0],const_ptr_cast<tPPtr>(&inpart), incoming,true,false); VectorWaveFunction::constructSpinInfo(_vectors[1],decay[0], outgoing,true,photon); ScalarWaveFunction::constructSpinInfo(decay[1],outgoing,true); return 0.; } VectorWaveFunction::calculateWaveFunctions(_vectors[1],decay[0],outgoing,photon); // compute the matrix element Energy2 p0dotpv(inpart.momentum()*decay[0]->momentum()); complex<Energy> epsdot(ZERO); InvEnergy2 pre(_coupling[imode()]/inpart.mass()); for(unsigned int ix=0;ix<3;++ix) { if(ix==1&&photon) { for(unsigned int iy=0;iy<3;++iy) ME()(iy,ix,0)=0.; } else { epsdot=_vectors[1][ix]*inpart.momentum(); for(unsigned int iy=0;iy<3;++iy) { ME()(iy,ix,0)=pre*_vectors[0][iy].dot(p0dotpv*_vectors[1][ix]- epsdot*decay[0]->momentum()); } } } // test of the matrix element // double me = newME.contract(rhoin).real(); // Energy pcm=Kinematics::pstarTwoBodyDecay(inpart.mass(),decay[0]->mass(), // decay[1]->mass()); // double test = sqr(_coupling[imode()])/3.*(2.*sqr(pcm)+3.*sqr(decay[0]->mass())); // cerr << "testing matrix element for " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << me << " " << test << " " << (me-test)/(me+test) << "\n"; // return the answer return ME().contract(_rho).real(); } bool VectorMesonVectorScalarDecayer::twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const { int id(dm.parent()->id()); int idbar = dm.parent()->CC() ? dm.parent()->CC()->id() : id; ParticleMSet::const_iterator pit(dm.products().begin()); int id1((**pit).id()); int id1bar = (**pit).CC() ? (**pit).CC()->id() : id1; ++pit; int id2((**pit).id()); int id2bar = (**pit).CC() ? (**pit).CC()->id() : id2; unsigned int ix(0); bool order(false); int imode(-1); do { if(id==_incoming[ix]) { if(id1 ==_outgoingV[ix]&&id2 ==_outgoingS[ix]) { imode=ix; order=true; } if(id2 ==_outgoingV[ix]&&id1 ==_outgoingS[ix]) { imode=ix; order=false; } } if(idbar==_incoming[ix]&&imode<0) { if(id1bar==_outgoingV[ix]&&id2bar==_outgoingS[ix]) { imode=ix; order=true; } if(id2bar==_outgoingV[ix]&&id1bar==_outgoingS[ix]) { imode=ix; order=false; } } ++ix; } while(ix<_incoming.size()&&imode<0); coupling = _coupling[imode]*dm.parent()->mass(); mecode = 4; return order; } void VectorMesonVectorScalarDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // the rest of the parameters for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":OutgoingVector " << ix << " " << _outgoingV[ix] << "\n"; output << "newdef " << name() << ":OutgoingScalar " << ix << " " << _outgoingS[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":OutgoingVector " << ix << " " << _outgoingV[ix] << "\n"; output << "insert " << name() << ":OutgoingScalar " << ix << " " << _outgoingS[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix]*GeV << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/a1ThreePionCLEODecayer.cc�������������������������������������0000644�0001750�0001750�00000125225�11754474773�024664� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // a1ThreePionCLEODecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the a1ThreePionCLEODecayer class. // #include "a1ThreePionCLEODecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" using namespace Herwig; using namespace ThePEG::Helicity; using Constants::pi; a1ThreePionCLEODecayer::a1ThreePionCLEODecayer() : _rhomass(2), _rhowidth(2), _f2mass(1.275*GeV), _f2width(0.185*GeV), _pf2cc(ZERO), _pf200(ZERO), _f0mass(1.186*GeV), _f0width(0.350*GeV), _pf0cc(ZERO), _pf000(ZERO), _sigmamass(0.860*GeV), _sigmawidth(0.880*GeV), _psigmacc(ZERO), _psigma00(ZERO), _mpi0(ZERO), _mpic(ZERO), _coupling(45.57/GeV), _rhomagP(2), _rhophaseP(2), _rhomagD(2), _rhophaseD(2), _f2mag(0.71/GeV2), _f2phase(0.56*pi), _f2coup(ZERO,ZERO), _f0mag(0.77), _f0phase(-0.54*pi), _f0coup(0.,0.), _sigmamag(2.10), _sigmaphase(0.23*pi), _sigmacoup(0.,0.), _localparameters(true), _zerowgts(9), _onewgts(9), _twowgts(9), _threewgts(12), _zeromax(13.0704), _onemax(6.91104), _twomax(6.94654), _threemax(6.40086) { // rho masses and widths _rhomass[0] = 0.7743*GeV; _rhowidth[0] = 0.1491*GeV; _rhomass[1] = 1.370 *GeV; _rhowidth[1] = 0.386 *GeV; // p-wave rho and rho prime _rhomagP[0] = 1. ; _rhophaseP[0] = 0.; _rhomagP[1] = 0.12; _rhophaseP[1] = 0.99*pi; // d-wave rho and rho prime _rhomagD[0] = 0.37/GeV2; _rhophaseD[0] = -0.15*pi; _rhomagD[1] = 0.87/GeV2; _rhophaseD[1] = 0.53*pi; // set up the integration channels _zerowgts[0] = 0.132162;_zerowgts[1] = 0.116638;_zerowgts[2] = 0.121088; _zerowgts[3] = 0.10656 ;_zerowgts[4] = 0.102577;_zerowgts[5] = 0.101169; _zerowgts[6] = 0.104587;_zerowgts[7] = 0.104663;_zerowgts[8] = 0.110557; _onewgts[0] = 0.177017;_onewgts[1] = 0.176011;_onewgts[2] = 0.110129; _onewgts[3] = 0.108023;_onewgts[4] = 0.110553;_onewgts[5] = 0.109976; _onewgts[6] = 0.088634;_onewgts[7] = 0.059104;_onewgts[8] = 0.060553; _twowgts[0] = 0.173357;_twowgts[1] = 0.172283;_twowgts[2] = 0.116031; _twowgts[3] = 0.114642;_twowgts[4] = 0.109058;_twowgts[5] = 0.114073; _twowgts[6] = 0.080946;_twowgts[7] = 0.060135;_twowgts[8] = 0.059477; _threewgts[0] = 0.125022;_threewgts[1] = 0.129911;_threewgts[2] = 0.074165; _threewgts[3] = 0.075813;_threewgts[4 ]= 0.071154;_threewgts[5 ]= 0.077730; _threewgts[6] = 0.082255;_threewgts[7 ]= 0.086761;_threewgts[8 ]= 0.067106; _threewgts[9] = 0.070171;_threewgts[10]= 0.070146;_threewgts[11]= 0.069767; // generation of intermediates generateIntermediates(true); } void a1ThreePionCLEODecayer::doinit() { DecayIntegrator::doinit(); // pointers to the particles we need as external particles tPDPtr a1p = getParticleData(ParticleID::a_1plus); tPDPtr a10 = getParticleData(ParticleID::a_10); tPDPtr pip = getParticleData(ParticleID::piplus); tPDPtr pim = getParticleData(ParticleID::piminus); tPDPtr pi0 = getParticleData(ParticleID::pi0); // possible intermediate particles // the different rho resonances tPDPtr rhop[3] = {getParticleData(213),getParticleData(100213), getParticleData(30213)}; tPDPtr rho0[3] = {getParticleData(113),getParticleData(100113), getParticleData(30113)}; tPDPtr rhom[3] = {getParticleData(-213),getParticleData(-100213), getParticleData(-30213)}; // the sigma tPDPtr sigma = getParticleData(9000221); // the f_2 tPDPtr f2=getParticleData(225); // the f_0 tPDPtr f0=getParticleData(10221); // set up the integration channels tPDVector extpart(4); DecayPhaseSpaceChannelPtr newchannel; DecayPhaseSpaceModePtr mode; // decay mode a_10 -> pi0 pi0 pi0 extpart[0]=a10; extpart[1]=pi0; extpart[2]=pi0; extpart[3]=pi0; mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); // there are six sigma channels tPDPtr temp; for(unsigned int ix=0;ix<3;++ix) { if(ix==0) temp = sigma; else if(ix==1) temp = f2; else if(ix==2) temp = f0; if(temp) { newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,1); newchannel->addIntermediate(temp,0,0.0,2,3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,2); newchannel->addIntermediate(temp,0,0.0,1,3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,3); newchannel->addIntermediate(temp,0,0.0,1,2); mode->addChannel(newchannel); } } if(_zerowgts.size()!=mode->numberChannels()) _zerowgts=vector<double>(mode->numberChannels(),1./mode->numberChannels()); addMode(mode,_zeromax,_zerowgts); // decay mode a_1+ -> pi+ pi0 pi0 extpart[0]=a1p; extpart[1]=pi0; extpart[2]=pi0; extpart[3]=pip; mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); for(unsigned int ix=0;ix<3;++ix) { if(!rhop[ix]) continue; // first rho+ channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,1); newchannel->addIntermediate(rhop[ix],0,0.0,2,3); mode->addChannel(newchannel); // second rho+ channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,2); newchannel->addIntermediate(rhop[ix],0,0.0,1,3); mode->addChannel(newchannel); } // the sigma channel if(sigma) { newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,3); newchannel->addIntermediate(sigma,0,0.0,1,2); mode->addChannel(newchannel); } // the f_2 channel if(f2) { newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,3); newchannel->addIntermediate(f2,0,0.0,1,2); mode->addChannel(newchannel); } // the f_0 channel if(f0) { newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,3); newchannel->addIntermediate(f0,0,0.0,1,2); mode->addChannel(newchannel); } if(_onewgts.size()!=mode->numberChannels()) _onewgts=vector<double>(mode->numberChannels(),1./mode->numberChannels()); addMode(mode,_onemax,_onewgts); // decay mode a_10 -> pi+ pi- pi0 extpart[0]=a10; extpart[1]=pip; extpart[2]=pim; extpart[3]=pi0; mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); for(unsigned int ix=0;ix<3;++ix) { if(!rhop[ix]) continue; // first rho channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,1); newchannel->addIntermediate(rhom[ix],0,0.0,2,3); mode->addChannel(newchannel); // second channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,2); newchannel->addIntermediate(rhop[ix],0,0.0,1,3); mode->addChannel(newchannel); } // sigma channel if(sigma) { newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,3); newchannel->addIntermediate(sigma,0,0.0,1,2); mode->addChannel(newchannel); } // f_2 channel if(f2) { newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,3); newchannel->addIntermediate(f2,0,0.0,1,2); mode->addChannel(newchannel); } // f_0 channel if(f0) { newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a10,0,0.0,-1,3); newchannel->addIntermediate(f0,0,0.0,1,2); mode->addChannel(newchannel); } if(_twowgts.size()!=mode->numberChannels()) _twowgts=vector<double>(mode->numberChannels(),1./mode->numberChannels()); addMode(mode,_twomax,_twowgts); // decay mode a_1+ -> pi+ pi+ pi- extpart[0]=a1p; extpart[1]=pip; extpart[2]=pip; extpart[3]=pim; mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); for(unsigned int ix=0;ix<3;++ix) { // the neutral rho channels if(!rho0[ix]) continue; // first channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,1); newchannel->addIntermediate(rho0[ix],0,0.0,2,3); mode->addChannel(newchannel); // interchanged channel newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,2); newchannel->addIntermediate(rho0[ix],0,0.0,1,3); mode->addChannel(newchannel); } // the sigma channels if(sigma) { newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,1); newchannel->addIntermediate(sigma,0,0.0,2,3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,2); newchannel->addIntermediate(sigma,0,0.0,1,3); mode->addChannel(newchannel); } // the f_2 channels if(f2) { newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,1); newchannel->addIntermediate(f2,0,0.0,2,3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,2); newchannel->addIntermediate(f2,0,0.0,1,3); mode->addChannel(newchannel); } // the f_0 channel if(f0) { newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,1); newchannel->addIntermediate(f0,0,0.0,2,3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(a1p,0,0.0,-1,2); newchannel->addIntermediate(f0,0,0.0,1,3); mode->addChannel(newchannel); } if(_threewgts.size()!=mode->numberChannels()) _threewgts=vector<double>(mode->numberChannels(),1./mode->numberChannels()); addMode(mode,_threemax,_threewgts); // if using local parameters set the values in the phase space channels if(_localparameters) { for(unsigned int iy=0;iy<_rhomass.size();++iy) { resetIntermediate(rho0[iy],_rhomass[iy],_rhowidth[iy]); resetIntermediate(rhop[iy],_rhomass[iy],_rhowidth[iy]); resetIntermediate(rhom[iy],_rhomass[iy],_rhowidth[iy]); } resetIntermediate(sigma,_sigmamass,_sigmawidth); resetIntermediate(f2,_f2mass,_f2width); resetIntermediate(f0,_f0mass,_f0width); // make sure the rho array has enough masses if(_rhomass.size()<3) { for(unsigned int ix=_rhomass.size();ix<3;++ix) { _rhomass.push_back(rhop[ix]->mass()); _rhowidth.push_back(rhop[ix]->width()); } } } // set the local variables if needed else { // masses and widths for the particles _rhomass.resize(3);_rhowidth.resize(3); for(unsigned int ix=0;ix<3;++ix) { _rhomass[ix]=rhop[ix]->mass(); _rhowidth[ix]=rhop[ix]->width(); } if(f2) { _f2mass=f2->mass(); _f2width=f2->width(); } if(f0) { _f0mass=f0->mass(); _f0width=f0->width(); } if(sigma) { _sigmamass=sigma->mass(); _sigmawidth=sigma->width(); } } // parameters for the breit-wigners _mpic=pip->mass(); _mpi0=pi0->mass(); // momenta of the decay products for on-shell particles _psigmacc = Kinematics::pstarTwoBodyDecay(_sigmamass,_mpic,_mpic); _psigma00 = Kinematics::pstarTwoBodyDecay(_sigmamass,_mpi0,_mpi0); _pf2cc = Kinematics::pstarTwoBodyDecay(_f2mass ,_mpic,_mpic); _pf200 = Kinematics::pstarTwoBodyDecay(_f2mass ,_mpi0,_mpi0); _pf0cc = Kinematics::pstarTwoBodyDecay(_f0mass ,_mpic,_mpic); _pf000 = Kinematics::pstarTwoBodyDecay(_f0mass ,_mpi0,_mpi0); _prhocc.resize(3);_prhoc0.resize(3); for(unsigned int ix=0;ix<3;++ix) { _prhocc[ix] = Kinematics::pstarTwoBodyDecay(_rhomass[ix],_mpic,_mpic); _prhoc0[ix] = Kinematics::pstarTwoBodyDecay(_rhomass[ix],_mpic,_mpi0); } // couplings for the different modes Complex ii(0.,1.); _rhocoupP.resize(_rhomagP.size()); for(unsigned int ix=0;ix<_rhomagP.size();++ix) _rhocoupP[ix]=_rhomagP[ix]*(cos(_rhophaseP[ix])+ii*sin(_rhophaseP[ix])); _rhocoupD.resize(_rhomagD.size()); for(unsigned int ix=0;ix<_rhomagD.size();++ix) _rhocoupD[ix]=_rhomagD[ix]*(cos(_rhophaseD[ix])+ii*sin(_rhophaseD[ix])); _f0coup=_f0mag*(cos(_f0phase)+ii*sin(_f0phase)); _f2coup=_f2mag*(cos(_f2phase)+ii*sin(_f2phase)); _sigmacoup=_sigmamag*(cos(_sigmaphase)+ii*sin(_sigmaphase)); } inline void a1ThreePionCLEODecayer::doinitrun() { DecayIntegrator::doinitrun(); if(initialize()) { // get the weights for the different channels for(unsigned int ix=0;ix<_zerowgts.size();++ix) _zerowgts[ix]=mode(0)->channelWeight(ix); for(unsigned int ix=0;ix<_onewgts.size();++ix) _onewgts[ix]=mode(1)->channelWeight(ix); for(unsigned int ix=0;ix<_twowgts.size();++ix) _twowgts[ix]=mode(2)->channelWeight(ix); for(unsigned int ix=0;ix<_threewgts.size();++ix) _threewgts[ix]=mode(3)->channelWeight(ix); // get the maximum weight _zeromax = mode(0)->maxWeight(); _onemax = mode(1)->maxWeight(); _twomax = mode(2)->maxWeight(); _threemax = mode(3)->maxWeight(); } } int a1ThreePionCLEODecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(children.size()!=3) return -1; int id(parent->id()); // check the pions tPDVector::const_iterator pit = children.begin(); tPDVector::const_iterator pend = children.end(); int idtemp,npi0(0),npiplus(0),npiminus(0); for( ; pit!=pend;++pit) { idtemp=(**pit).id(); if(idtemp==ParticleID::piplus) ++npiplus; else if(idtemp==ParticleID::piminus) ++npiminus; else if(idtemp==ParticleID::pi0) ++npi0; } int imode(-1); // a_1+ decay modes if(id==ParticleID::a_1plus) { cc=false; if(npiplus==1&&npi0==2) imode=1; else if(npiplus==2&&npiminus==1) imode=3; } // a_1- modes else if(id==ParticleID::a_1minus) { cc=true; if(npiminus==1&&npi0==2) imode=1; else if(npiminus==2&&npiplus==1) imode=3; } // a_0 modes else if(id==ParticleID::a_10) { cc=false; if(npiminus==1&&npiplus==1&&npi0==1) imode=2; else if(npi0==3) imode=0; } return imode; } void a1ThreePionCLEODecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_rhomass,GeV) << ounit(_rhowidth,GeV) << ounit(_prhocc,GeV) << ounit(_prhoc0,GeV) << ounit(_f2mass,GeV) << ounit(_f2width,GeV) << ounit(_pf2cc,GeV) << ounit(_pf200,GeV) << ounit(_f0mass,GeV) << ounit(_f0width,GeV) << ounit(_pf0cc,GeV) << ounit(_pf000,GeV) << ounit(_sigmamass,GeV) << ounit(_sigmawidth,GeV) << ounit(_psigmacc,GeV) << ounit(_psigma00,GeV) << ounit(_mpi0,GeV) << ounit(_mpic,GeV) << ounit(_coupling,1/GeV) << _rhomagP << _rhophaseP << _rhocoupP << ounit(_rhomagD ,1/GeV2)<< _rhophaseD << ounit(_rhocoupD,1/GeV2) << ounit(_f2mag,1/GeV2) << _f2phase << ounit(_f2coup,1/GeV2) << _f0mag << _f0phase << _f0coup << _sigmamag << _sigmaphase << _sigmacoup << _localparameters << _zerowgts << _onewgts << _twowgts << _threewgts << _zeromax << _onemax << _twomax << _threemax; } void a1ThreePionCLEODecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_rhomass,GeV) >> iunit(_rhowidth,GeV) >> iunit(_prhocc,GeV) >> iunit(_prhoc0,GeV) >> iunit(_f2mass,GeV) >> iunit(_f2width,GeV) >> iunit(_pf2cc,GeV) >> iunit(_pf200,GeV) >> iunit(_f0mass,GeV) >> iunit(_f0width,GeV) >> iunit(_pf0cc,GeV) >> iunit(_pf000,GeV) >> iunit(_sigmamass,GeV) >> iunit(_sigmawidth,GeV) >> iunit(_psigmacc,GeV) >> iunit(_psigma00,GeV) >> iunit(_mpi0,GeV) >> iunit(_mpic,GeV) >> iunit(_coupling,1/GeV) >> _rhomagP >> _rhophaseP >> _rhocoupP >> iunit(_rhomagD,1/GeV2) >> _rhophaseD >> iunit(_rhocoupD,1/GeV2)>>iunit(_f2mag,1/GeV2) >> _f2phase >> iunit(_f2coup,1/GeV2) >> _f0mag >> _f0phase >> _f0coup >> _sigmamag >> _sigmaphase >> _sigmacoup >> _localparameters >> _zerowgts >> _onewgts >> _twowgts >> _threewgts >> _zeromax >> _onemax >> _twomax >> _threemax; } ClassDescription<a1ThreePionCLEODecayer> a1ThreePionCLEODecayer::inita1ThreePionCLEODecayer; // Definition of the static class description member. void a1ThreePionCLEODecayer::Init() { static ClassDocumentation<a1ThreePionCLEODecayer> documentation ("The a1ThreePionCLEODecayer class performs the decay of the " "a_1 to three pions using the model of CLEO", "The decay of a_1 to three pions was modelled after \\cite{Asner:1999kj}.", "%\\cite{Asner:1999kj}\n" "\\bibitem{Asner:1999kj}\n" " D.~M.~Asner {\\it et al.} [CLEO Collaboration],\n" " ``Hadronic structure in the decay tau- --> nu/tau pi- pi0 pi0 and the sign\n" " %of the tau neutrino helicity,''\n" " Phys.\\ Rev.\\ D {\\bf 61}, 012002 (2000)\n" " [arXiv:hep-ex/9902022].\n" " %%CITATION = PHRVA,D61,012002;%%\n" ); static ParVector<a1ThreePionCLEODecayer,Energy> interfacerhomass ("RhoMasses", "The masses of the different rho resonnaces", &a1ThreePionCLEODecayer::_rhomass, GeV, 0, ZERO, -10000*GeV, 10000*GeV, false, false, true); static ParVector<a1ThreePionCLEODecayer,Energy> interfacerhowidth ("RhoWidths", "The widths of the different rho resonnaces", &a1ThreePionCLEODecayer::_rhowidth, GeV, 0, ZERO, -10000*GeV, 10000*GeV, false, false, true); static Parameter<a1ThreePionCLEODecayer,Energy> interfacef_2Mass ("f_2Mass", "The mass of the f_2 meson", &a1ThreePionCLEODecayer::_f2mass, GeV, 1.275*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<a1ThreePionCLEODecayer,Energy> interfacef_2Width ("f_2Width", "The width of the f_2 meson", &a1ThreePionCLEODecayer::_f2width, GeV, 0.185*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<a1ThreePionCLEODecayer,Energy> interfacef_0Mass ("f_0Mass", "The mass of the f_0 meson", &a1ThreePionCLEODecayer::_f0mass, GeV, 1.186*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<a1ThreePionCLEODecayer,Energy> interfacef_0Width ("f_0Width", "The width of the f_0 meson", &a1ThreePionCLEODecayer::_f0width, GeV, 0.350*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<a1ThreePionCLEODecayer,Energy> interfacesigmaMass ("sigmaMass", "The mass of the sigma meson", &a1ThreePionCLEODecayer::_sigmamass, GeV, 0.860*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<a1ThreePionCLEODecayer,Energy> interfacesigmaWidth ("sigmaWidth", "The width of the sigma meson", &a1ThreePionCLEODecayer::_sigmawidth, GeV, 0.880*GeV, ZERO, 2.0*GeV, false, false, true); static Parameter<a1ThreePionCLEODecayer,InvEnergy> interfaceCoupling ("Coupling", "The overall coupling for the decay", &a1ThreePionCLEODecayer::_coupling, 1./GeV, 45.57/GeV, -0./GeV, 1000./GeV, false, false, false); static ParVector<a1ThreePionCLEODecayer,double> interfacerhomagP ("RhoPWaveMagnitude", "The magnitude of the couplings for the p-wave rho currents", &a1ThreePionCLEODecayer::_rhomagP, 0, 0, 0, 0, 10000, false, false, true); static ParVector<a1ThreePionCLEODecayer,double> interfacerhophaseP ("RhoPWavePhase", "The phase of the couplings for the p-wave rho currents", &a1ThreePionCLEODecayer::_rhophaseP, 0, 0, 0, -pi, pi, false, false, true); static ParVector<a1ThreePionCLEODecayer,InvEnergy2> interfacerhomagD ("RhoDWaveMagnitude", "The magnitude of the couplings for the d-wave rho currents", &a1ThreePionCLEODecayer::_rhomagD, 1/MeV2, 0, ZERO, ZERO, 10000/MeV2, false, false, true); static ParVector<a1ThreePionCLEODecayer,double> interfacerhophaseD ("RhoDWavePhase", "The phase of the couplings for the d-wave rho currents", &a1ThreePionCLEODecayer::_rhophaseD, 0, 0, 0, -pi, pi, false, false, true); static Parameter<a1ThreePionCLEODecayer,double> interfacef0Phase ("f0Phase", "The phase of the f_0 scalar current", &a1ThreePionCLEODecayer::_f0phase, 0.54*pi, -pi, pi, false, false, Interface::limited); static Parameter<a1ThreePionCLEODecayer,double> interfacef2Phase ("f2Phase", "The phase of the f_2 tensor current", &a1ThreePionCLEODecayer::_f2phase, 0.56*pi, -pi, pi, false, false, Interface::limited); static Parameter<a1ThreePionCLEODecayer,double> interfacesigmaPhase ("sigmaPhase", "The phase of the sigma scalar current", &a1ThreePionCLEODecayer::_sigmaphase, 0.23*pi, -pi, pi, false, false, Interface::limited); static Parameter<a1ThreePionCLEODecayer,double> interfacef0Magnitude ("f0Magnitude", "The magnitude of the f_0 scalar current", &a1ThreePionCLEODecayer::_f0mag, 0.77, 0.0, 10, false, false, true); static Parameter<a1ThreePionCLEODecayer,InvEnergy2> interfacef2Magnitude ("f2Magnitude", "The magnitude of the f_2 tensor current", &a1ThreePionCLEODecayer::_f2mag, 1./GeV2, 0.71/GeV2, ZERO, 10./GeV2, false, false, true); static Parameter<a1ThreePionCLEODecayer,double> interfacesigmaMagnitude ("sigmaMagnitude", "The magnitude of the sigma scalar current", &a1ThreePionCLEODecayer::_sigmamag, 2.1, 0.0, 10, false, false, true); static Switch<a1ThreePionCLEODecayer,bool> interfaceLocalParameters ("LocalParameters", "Use local values of the intermediate resonances masses and widths", &a1ThreePionCLEODecayer::_localparameters, true, false, false); static SwitchOption interfaceLocalParametersLocal (interfaceLocalParameters, "Local", "Use the local values", true); static SwitchOption interfaceLocalParametersDefault (interfaceLocalParameters, "ParticleData", "Use the values from the particleData objects", false); static ParVector<a1ThreePionCLEODecayer,double> interfacezerowgts ("AllNeutralWeights", "The weights of the different channels to use for the integration of" " the decay a_1^0->pi0pi0pi0", &a1ThreePionCLEODecayer::_zerowgts, 0, 0, 0, -10000, 10000, false, false, true); static ParVector<a1ThreePionCLEODecayer,double> interfaceonewgts ("OneChargedWeights", "The weights of the different channels to use for the integration of" " the decay a_1^+->pi+pi0pi0", &a1ThreePionCLEODecayer::_onewgts, 0, 0, 0, -10000, 10000, false, false, true); static ParVector<a1ThreePionCLEODecayer,double> interfacetwowgts ("TwoChargedWeights", "The weights of the different channels to use for the integration of" " the decay a_1^0->pi+pi-pi0", &a1ThreePionCLEODecayer::_twowgts, 0, 0, 0, -10000, 10000, false, false, true); static ParVector<a1ThreePionCLEODecayer,double> interfacethreewgts ("ThreeChargedWeights", "The weights of the different channels to use for the integration of" " the decay a_1^+->pi+pi+pi-", &a1ThreePionCLEODecayer::_threewgts, 0, 0, 0, -10000, 10000, false, false, true); static Parameter<a1ThreePionCLEODecayer,double> interfaceZeroMax ("ZeroMax", "The maximum weight for the integration fo the channel a_1^0->pi0pi0pi0", &a1ThreePionCLEODecayer::_zeromax, 0.0716349E3, 0.0, 10000.0, false, false, true); static Parameter<a1ThreePionCLEODecayer,double> interfaceOneMax ("OneMax", "The maximum weight for the integration fo the channel a_1^+->pi+pi0pi0", &a1ThreePionCLEODecayer::_onemax,1.23756E3, 0.0, 10000.0, false, false, true); static Parameter<a1ThreePionCLEODecayer,double> interfaceTwoMax ("TwoMax", "The maximum weight for the integration fo the channel a_1^0->pi+pi-pi0", &a1ThreePionCLEODecayer::_twomax,2.43819E3, 0.0, 10000.0, false, false, true); static Parameter<a1ThreePionCLEODecayer,double> interfaceThreeMax ("ThreeMax", "The maximum weight for the integration fo the channel a_1^+->pi+pi+pi-", &a1ThreePionCLEODecayer::_threemax, 1.38754E3, 0.0, 10000.0, false, false, true); } double a1ThreePionCLEODecayer::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { useMe(); if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors,_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); ME(DecayMatrixElement(PDT::Spin1,PDT::Spin0,PDT::Spin0,PDT::Spin0)); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); // set up the spin information for the decay products for(unsigned int ix=0;ix<3;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return 0.; } // momentum of the incoming particle Lorentz5Momentum Q=inpart.momentum(); Energy2 q2=Q.mass2(); // identify the mesons // calculate the invariants and form factors Lorentz5Momentum ps1=decay[1]->momentum()+decay[2]->momentum(); Lorentz5Momentum ps2=decay[0]->momentum()+decay[2]->momentum(); Lorentz5Momentum ps3=decay[0]->momentum()+decay[1]->momentum(); ps1.rescaleMass(); ps2.rescaleMass(); ps3.rescaleMass(); Energy2 s1=ps1.mass2(),s2=ps2.mass2(),s3=ps3.mass2(); complex<InvEnergy> F1,F2,F3; formFactors(imode(),ichan,q2,s1,s2,s3,F1,F2,F3); // use the form-factors to compute the current LorentzPolarizationVector output= F1*decay[1]->momentum()-F1*decay[2]->momentum() -F2*decay[2]->momentum()+F2*decay[0]->momentum() +F3*decay[0]->momentum()-F3*decay[1]->momentum(); // compute the matrix element for(unsigned int ix=0;ix<3;++ix) ME()(ix,0,0,0)=output.dot(_vectors[ix]); // answer double out = ME().contract(_rho).real(); // test of the answer // double test = threeBodyMatrixElement(imode(),sqr(inpart.mass()), // s3,s2,s1,decay[0]->mass(),decay[1]->mass(), // decay[2]->mass()); // if(ichan<0) cerr << "testing matrix element " << inpart.PDGName() << " -> " // << decay[0]->PDGName() << " " << decay[1]->PDGName() << " " // << decay[2]->PDGName() << out << " " << test << " " // << (out-test)/(out+test) << "\n"; // return the answer return out; } // matrix element for the running a_1 width double a1ThreePionCLEODecayer:: threeBodyMatrixElement(const int iopt,const Energy2 q2, const Energy2 s3, const Energy2 s2,const Energy2 s1, const Energy m1, const Energy m2 ,const Energy m3) const { Energy2 m12=m1*m1,m22=m2*m2,m32=m3*m3; // calculate the form factors complex<InvEnergy> F1,F2,F3; formFactors(iopt,-1,q2,s1,s2,s3,F1,F2,F3); // analytic calculation of the matrix element double dot1=( F1*conj(F1)*(2.*m22+2.*m32-s1)+F2*conj(F2)*(2.*m12+2.*m32-s2) +F3*conj(F3)*(2.*m12+2.*m22-s3)-F1*conj(F2)*( s1+s2-s3-4.*m32) +F1*conj(F3)*( s1-s2+s3-4.*m22)-F2*conj(F3)*(-s1+s2+s3-4.*m12)).real(); complex<Energy> dot2 = 0.5*(F1*(s3-m32-s2+m22)-F2*(s1-m12-s3+m32)+F3*(s2-m22-s1+m12)); return (-dot1+(dot2*conj(dot2)).real()/q2)/3.; } WidthCalculatorBasePtr a1ThreePionCLEODecayer::threeBodyMEIntegrator(const DecayMode & dm) const { ParticleMSet::const_iterator pit = dm.products().begin(); ParticleMSet::const_iterator pend = dm.products().end(); int ncharged=0; for( ; pit!=pend;++pit) { if(abs((**pit).id())==ParticleID::piplus) ++ncharged; } // integrator to perform the integral vector<double> inweights;inweights.push_back(0.5);inweights.push_back(0.5); vector<int> intype;intype.push_back(2);intype.push_back(3); vector<Energy> inmass(2,_rhomass[0]),inwidth(2,_rhowidth[0]); vector<double> inpow(2,0.0); Energy m[3]; m[0] = ncharged<2 ? _mpi0 : _mpic; m[1] = m[0]; m[2] = (ncharged==0||ncharged==2) ? _mpi0 : _mpic; return new_ptr(ThreeBodyAllOnCalculator<a1ThreePionCLEODecayer> (inweights,intype,inmass,inwidth,inpow,*this,ncharged,m[0],m[1],m[2])); } // calculate the form factos void a1ThreePionCLEODecayer::formFactors(int iopt,int ichan, Energy2 q2,Energy2 s1,Energy2 s2, Energy2 s3, complex<InvEnergy> & FF1, complex<InvEnergy> & FF2, complex<InvEnergy> & FF3) const { Complex F1, F2, F3; InvEnergy fact = _coupling; // a_1^0 pi0 pi0 pi0 mode if(iopt==0) { fact*=1./sqrt(6.); // compute the breit wigners we need Complex sigbws1 = sigmaBreitWigner(s1,1); Complex sigbws2 = sigmaBreitWigner(s2,1); Complex sigbws3 = sigmaBreitWigner(s3,1); Complex f0bws1 = f0BreitWigner(s1,1); Complex f0bws2 = f0BreitWigner(s2,1); Complex f0bws3 = f0BreitWigner(s3,1); Complex f2bws1 = f2BreitWigner(s1,1); Complex f2bws2 = f2BreitWigner(s2,1); Complex f2bws3 = f2BreitWigner(s3,1); if(ichan<0) { // the scalar terms F1=2./3.*(_sigmacoup*sigbws3+_f0coup*f0bws3) -2./3.*(_sigmacoup*sigbws2+_f0coup*f0bws2); F2=2./3.*(_sigmacoup*sigbws3+_f0coup*f0bws3) -2./3.*(_sigmacoup*sigbws1+_f0coup*f0bws1); F3=-2./3.*(_sigmacoup*sigbws1+_f0coup*f0bws1) +2./3.*(_sigmacoup*sigbws2+_f0coup*f0bws2); // the tensor terms complex<Energy2> Dfact1 = 1./18.*(4.*_mpi0*_mpi0-s1)*(q2+s1-_mpi0*_mpi0)/s1*f2bws1; complex<Energy2> Dfact2 = 1./18.*(4.*_mpi0*_mpi0-s2)*(q2+s2-_mpi0*_mpi0)/s2*f2bws2; complex<Energy2> Dfact3 = 1./18.*(4.*_mpi0*_mpi0-s3)*(q2-_mpi0*_mpi0+s3)/s3*f2bws3; F1+=_f2coup*( 0.5*(s3-s2)*f2bws1-Dfact2+Dfact3); F2+=_f2coup*( 0.5*(s3-s1)*f2bws2-Dfact1+Dfact3); F3+=_f2coup*(-0.5*(s1-s2)*f2bws3-Dfact1+Dfact2); } else if(ichan==0) { F2=-2./3.*_sigmacoup*sigbws1; F3=-2./3.*_sigmacoup*sigbws1; } else if(ichan==1) { F1=-2./3.*_sigmacoup*sigbws2; F3=+2./3.*_sigmacoup*sigbws2; } else if(ichan==2) { F1= 2./3.*_sigmacoup*sigbws3; F2= 2./3.*_sigmacoup*sigbws3; } else if(ichan==3) { complex<Energy2> Dfact1 = 1./18.*(4.*_mpi0*_mpi0-s1)*(q2+s1-_mpi0*_mpi0)/s1*f2bws1; F1+=_f2coup*0.5*(s3-s2)*f2bws1; F2-=_f2coup*Dfact1; F3-=_f2coup*Dfact1; } else if(ichan==4) { complex<Energy2> Dfact2 = 1./18.*(4.*_mpi0*_mpi0-s2)*(q2+s2-_mpi0*_mpi0)/s2*f2bws2; F2+=_f2coup*0.5*(s3-s1)*f2bws2; F1-=_f2coup*Dfact2; F3+=_f2coup*Dfact2; } else if(ichan==5) { complex<Energy2> Dfact3 = 1./18.*(4.*_mpi0*_mpi0-s3)*(q2-_mpi0*_mpi0+s3)/s3*f2bws3; F3+=-_f2coup*0.5*(s1-s2)*f2bws3; F1+=_f2coup*Dfact3; F2+=_f2coup*Dfact3; } else if(ichan==6) { F2=-2./3.*_f0coup*f0bws1; F3=-2./3.*_f0coup*f0bws1; } else if(ichan==7) { F1=-2./3.*_f0coup*f0bws2; F3=+2./3.*_f0coup*f0bws2; } else if(ichan==8) { F1= 2./3.*_f0coup*f0bws3; F2= 2./3.*_f0coup*f0bws3; } } // a_1^+ -> pi0 pi0 pi+ else if(iopt==1) { fact *= 1./sqrt(2.); // compute the breit wigners we need Complex rhos1bw[3],rhos2bw[3],f0bw,sigbw,f2bw; for(unsigned int ix=0,N=max(_rhocoupP.size(),_rhocoupD.size());ix<N;++ix) { rhos1bw[ix]=rhoBreitWigner(ix,s1,1); rhos2bw[ix]=rhoBreitWigner(ix,s2,1); } f0bw = f0BreitWigner(s3,1); sigbw = sigmaBreitWigner(s3,1); f2bw = f2BreitWigner(s3,1); if(ichan<0) { // the p-wave rho terms for(unsigned int ix=0;ix<_rhocoupP.size();++ix) { F1+=_rhocoupP[ix]*rhos1bw[ix]; F2+=_rhocoupP[ix]*rhos2bw[ix]; } // the D-wave rho terms Energy2 Dfact1=-1./3.*((s3-_mpic*_mpic)-(s1-_mpi0*_mpi0)); Energy2 Dfact2=-1./3.*((s3-_mpic*_mpic)-(s2-_mpi0*_mpi0)); for(unsigned int ix=0;ix<_rhocoupD.size();++ix) { F1+=Dfact1*_rhocoupD[ix]*rhos2bw[ix]; F2+=Dfact2*_rhocoupD[ix]*rhos1bw[ix]; F3+=_rhocoupD[ix]*(Dfact2*rhos1bw[ix]-Dfact1*rhos2bw[ix]); } // the scalar terms Complex scalar=2./3.*(_sigmacoup*sigbw+_f0coup*f0bw); F1+=scalar; F2+=scalar; // the tensor terms Complex Dfact3=1./18./s3*_f2coup*(q2-_mpic*_mpic+s3)*(4.*_mpi0*_mpi0-s3)*f2bw; F1+=Dfact3;F2+=Dfact3; F3-=0.5*_f2coup*(s1-s2)*f2bw; } else if(ichan%2==0&&ichan<=4) { unsigned int ires=ichan/2; if(ires<_rhocoupP.size()) F1+=_rhocoupP[ires]*rhos1bw[ires]; Energy2 Dfact2=-1./3.*((s3-_mpic*_mpic)-(s2-_mpi0*_mpi0)); if(ires<_rhocoupD.size()) { F2+=Dfact2*_rhocoupD[ires]*rhos1bw[ires]; F3+=_rhocoupD[ires]*Dfact2*rhos1bw[ires]; } } else if(ichan%2==1&&ichan<=5) { unsigned int ires=(ichan-1)/2; if(ires<_rhocoupP.size()) F2+=_rhocoupP[ires]*rhos2bw[ires]; Energy2 Dfact1=-1./3.*((s3-_mpic*_mpic)-(s1-_mpi0*_mpi0)); if(ires<_rhocoupD.size()) { F1+=Dfact1*_rhocoupD[ires]*rhos2bw[ires]; F3-=_rhocoupD[ires]*Dfact1*rhos2bw[ires]; } } else if(ichan==6) { F1+=2./3.*_sigmacoup*sigbw; F2+=2./3.*_sigmacoup*sigbw; } else if(ichan==7) { Complex Dfact3=1./18./s3*_f2coup*(q2-_mpic*_mpic+s3)*(4.*_mpi0*_mpi0-s3)*f2bw; F1+=Dfact3; F2+=Dfact3; F3-=0.5*_f2coup*(s1-s2)*f2bw; } else if(ichan==8) { F1+=2./3.*_f0coup*f0bw; F2+=2./3.*_f0coup*f0bw; } } // a_1^0 ->pi+pi-pi0 else if(iopt==2) { // compute the breit wigners we need Complex rhos1bw[3],rhos2bw[3],f0bw,sigbw,f2bw; for(unsigned int ix=0,N=max(_rhocoupP.size(),_rhocoupD.size());ix<N;++ix) { rhos1bw[ix]=rhoBreitWigner(ix,s1,1); rhos2bw[ix]=rhoBreitWigner(ix,s2,1); } f0bw =f0BreitWigner(s3,0); sigbw =sigmaBreitWigner(s3,0); f2bw =f2BreitWigner(s3,0); if(ichan<0) { // the p-wave rho terms for(unsigned int ix=0;ix<_rhocoupP.size();++ix) { F1+=_rhocoupP[ix]*rhos1bw[ix]; F2+=_rhocoupP[ix]*rhos2bw[ix]; } // the D-wave rho terms Energy2 Dfact1=-1./3.*(s3-_mpi0*_mpi0-s1+_mpic*_mpic); Energy2 Dfact2=-1./3.*(s3-_mpi0*_mpi0-s2+_mpic*_mpic); for(unsigned int ix=0;ix<_rhocoupD.size();++ix) { F1+=Dfact1*_rhocoupD[ix]*rhos2bw[ix]; F2+=Dfact2*_rhocoupD[ix]*rhos1bw[ix]; F3+=_rhocoupD[ix]*(Dfact2*rhos1bw[ix]-Dfact1*rhos2bw[ix]); } // the scalar terms Complex scalar=2./3.*(_sigmacoup*sigbw+_f0coup*f0bw); F1+=scalar; F2+=scalar; // the tensor terms Complex Dfact3=1./18./s3*_f2coup*(q2-_mpi0*_mpi0+s3)*(4.*_mpic*_mpic-s3)*f2bw; F1+=Dfact3; F2+=Dfact3; F3-=0.5*_f2coup*(s1-s2)*f2bw; } else if(ichan%2==0&&ichan<=4) { unsigned int ires=ichan/2; if(ires<_rhocoupP.size()) F1+=_rhocoupP[ires]*rhos1bw[ires]; Energy2 Dfact2=-1./3.*(s3-_mpi0*_mpi0-s2+_mpic*_mpic); if(ires<_rhocoupD.size()) { F2+=Dfact2*_rhocoupD[ires]*rhos1bw[ires]; F3+=_rhocoupD[ires]*Dfact2*rhos1bw[ires]; } } else if(ichan%2==1&&ichan<=5) { unsigned int ires=(ichan-1)/2; if(ires<_rhocoupP.size()) F2+=_rhocoupP[ires]*rhos2bw[ires]; Energy2 Dfact1=-1./3.*(s3-_mpi0*_mpi0-s1+_mpic*_mpic); if(ires<_rhocoupD.size()) { F1+=Dfact1*_rhocoupD[ires]*rhos2bw[ires]; F3-=_rhocoupD[ires]*-Dfact1*rhos2bw[ires]; } } else if(ichan==6) { F1+=2./3.*_sigmacoup*sigbw; F2+=2./3.*_sigmacoup*sigbw; } else if(ichan==7) { Complex Dfact3=1./18./s3*_f2coup*(q2-_mpi0*_mpi0+s3)*(4.*_mpic*_mpic-s3)*f2bw; F1+=Dfact3; F2+=Dfact3; F3-=0.5*_f2coup*(s1-s2)*f2bw; } else if(ichan==8) { F1+=2./3.*_f0coup*f0bw; F2+=2./3.*_f0coup*f0bw; } } // a_1^+ -> pi+ pi+ pi- mode else { fact *= 1./sqrt(2.); // compute the breit wigners we need Complex rhos1bw[3],rhos2bw[3],f0bws1,sigbws1,f2bws1,f0bws2,sigbws2,f2bws2; for(unsigned int ix=0,N=max(_rhocoupP.size(),_rhocoupD.size());ix<N;++ix) { rhos1bw[ix]=rhoBreitWigner(ix,s1,0); rhos2bw[ix]=rhoBreitWigner(ix,s2,0); } f0bws1 =f0BreitWigner(s1,0); sigbws1 =sigmaBreitWigner(s1,0); f2bws1 =f2BreitWigner(s1,0); f0bws2 =f0BreitWigner(s2,0); sigbws2 =sigmaBreitWigner(s2,0); f2bws2 =f2BreitWigner(s2,0); if(ichan<0) { // the p-wave rho terms for(unsigned int ix=0;ix<_rhocoupP.size();++ix) { F1-=_rhocoupP[ix]*rhos1bw[ix]; F2-=_rhocoupP[ix]*rhos2bw[ix]; } // the D-wave rho terms Energy2 Dfact1=1./3.*(s1-s3); Energy2 Dfact2=1./3.*(s2-s3); for(unsigned int ix=0;ix<_rhocoupD.size();++ix) { F1-=Dfact1*_rhocoupD[ix]*rhos2bw[ix]; F2-=Dfact2*_rhocoupD[ix]*rhos1bw[ix]; F3-=_rhocoupD[ix]*(Dfact2*rhos1bw[ix]-Dfact1*rhos2bw[ix]); } // the scalar terms F1-=2./3.*(_sigmacoup*sigbws2+_f0coup*f0bws2); F2-=2./3.*(_sigmacoup*sigbws1+_f0coup*f0bws1); F3+=-2./3.*(_sigmacoup*sigbws1+_f0coup*f0bws1) +2./3.*(_sigmacoup*sigbws2+_f0coup*f0bws2); // the tensor terms complex<Energy2> sfact1 = 1./18.*(4.*_mpic*_mpic-s1)*(q2+s1-_mpic*_mpic)/s1*f2bws1; complex<Energy2> sfact2 = 1./18.*(4.*_mpic*_mpic-s2)*(q2+s2-_mpic*_mpic)/s2*f2bws2; F1+=_f2coup*(0.5*(s3-s2)*f2bws1-sfact2); F2+=_f2coup*(0.5*(s3-s1)*f2bws2-sfact1); F3+=_f2coup*(-sfact1+sfact2); } else if(ichan%2==0&&ichan<=4) { unsigned int ires=ichan/2; Energy2 Dfact2=1./3.*(s2-s3); if(ires<_rhocoupP.size()) F1-=_rhocoupP[ires]*rhos1bw[ires]; if(ires<_rhocoupD.size()){ F2-=Dfact2*_rhocoupD[ires]*rhos1bw[ires]; F3-=_rhocoupD[ires]*Dfact2*rhos1bw[ires]; } } else if(ichan%2==1&&ichan<=5) { unsigned int ires=(ichan-1)/2; Energy2 Dfact1=1./3.*(s1-s3); if(ires<_rhocoupP.size()) F2-=_rhocoupP[ires]*rhos2bw[ires]; if(ires<_rhocoupD.size()) { F1-=Dfact1*_rhocoupD[ires]*rhos2bw[ires]; F3+=_rhocoupD[ires]*Dfact1*rhos2bw[ires]; } } else if(ichan==6) { F2-=2./3.*_sigmacoup*sigbws1; F3-=2./3.*_sigmacoup*sigbws1; } else if(ichan==7) { F1-=2./3.*_sigmacoup*sigbws2; F3+=2./3.*_sigmacoup*sigbws2; } else if(ichan==8) { complex<Energy2> sfact1 = 1./18.*(4.*_mpic*_mpic-s1)*(q2+s1-_mpic*_mpic)/s1*f2bws1; F1+=_f2coup*0.5*(s3-s2)*f2bws1; F2-=_f2coup*sfact1; F3-=_f2coup*sfact1; } else if(ichan==9) { complex<Energy2> sfact2 = 1./18.*(4.*_mpic*_mpic-s2)*(q2+s2-_mpic*_mpic)/s2*f2bws2; F1-=_f2coup*sfact2; F2+=_f2coup*0.5*(s3-s1)*f2bws2; F3+=_f2coup*sfact2; } else if(ichan==10) { F2-=2./3.*_f0coup*f0bws1; F3-=2./3.*_f0coup*f0bws1; } else if(ichan==11) { F1-=2./3.*_f0coup*f0bws2; F3+=2./3.*_f0coup*f0bws2; } } FF1 = F1 * fact; FF2 = F2 * fact; FF3 = F3 * fact; } // output the setup information for the particle database void a1ThreePionCLEODecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // masses and widths of the intermediate particles output << "newdef " << name() << ":f_2Mass " << _f2mass/GeV << "\n"; output << "newdef " << name() << ":f_2Width " << _f2width/GeV << "\n"; output << "newdef " << name() << ":f_0Mass " << _f0mass/GeV << "\n"; output << "newdef " << name() << ":f_0Width " << _f0width/GeV << "\n"; output << "newdef " << name() << ":sigmaMass " << _sigmamass/GeV << "\n"; output << "newdef " << name() << ":sigmaWidth " << _sigmawidth/GeV << "\n"; for(unsigned int ix=0;ix<_rhomass.size();++ix) { if(ix<2) output << "newdef " << name() << ":RhoMasses " << ix << " " << _rhomass[ix]/GeV << "\n"; else output << "insert " << name() << ":RhoMasses " << ix << " " << _rhomass[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_rhowidth.size();++ix) { if(ix<2) output << "newdef " << name() << ":RhoWidths " << ix << " " << _rhowidth[ix]/GeV << "\n"; else output << "insert " << name() << ":RhoWidths " << ix << " " << _rhowidth[ix]/GeV << "\n"; } // couplings and phases for different channels output << "newdef " << name() << ":f0Phase " << _f0phase << "\n"; output << "newdef " << name() << ":f2Phase " << _f2phase<< "\n"; output << "newdef " << name() << ":sigmaPhase " << _sigmaphase<< "\n"; output << "newdef " << name() << ":f0Magnitude " << _f0mag<< "\n"; output << "newdef " << name() << ":f2Magnitude " << _f2mag*GeV2 << "\n"; output << "newdef " << name() << ":sigmaMagnitude " << _sigmamag << "\n"; output << "newdef " << name() << ":Coupling " << _coupling*GeV << "\n"; for(unsigned int ix=0;ix<_rhomagP.size();++ix) { if(ix<2) output << "newdef " << name() << ":RhoPWaveMagnitude " << ix << " " << _rhomagP[ix] << "\n"; else output << "insert " << name() << ":RhoPWaveMagnitude " << ix << " " << _rhomagP[ix] << "\n"; } for(unsigned int ix=0;ix<_rhophaseP.size();++ix) { if(ix<2) output << "newdef " << name() << ":RhoPWavePhase " << ix << " " << _rhophaseP[ix] << "\n"; else output << "insert " << name() << ":RhoPWavePhase " << ix << " " << _rhophaseP[ix] << "\n"; } for(unsigned int ix=0;ix<_rhomagD.size();++ix) { if(ix<2) output << "newdef " << name() << ":RhoDWaveMagnitude " << ix << " " << _rhomagD[ix]*MeV2 << "\n"; else output << "insert " << name() << ":RhoDWaveMagnitude " << ix << " " << _rhomagD[ix]*MeV2 << "\n"; } for(unsigned int ix=0;ix<_rhophaseD.size();++ix) { if(ix<2) output << "newdef " << name() << ":RhoDWavePhase " << ix << " " << _rhophaseD[ix] << "\n"; else output << "insert " << name() << ":RhoDWavePhase " << ix << " " << _rhophaseD[ix] << "\n"; } // use local values of the masses etc. output << "newdef " << name() << ":LocalParameters " << _localparameters << "\n"; // integration weights for the different channels for(unsigned int ix=0;ix<_zerowgts.size();++ix) { output << "newdef " << name() << ":AllNeutralWeights " << ix << " " << _zerowgts[ix] << "\n"; } for(unsigned int ix=0;ix<_onewgts.size();++ix) { output << "newdef " << name() << ":OneChargedWeights " << ix << " " << _onewgts[ix] << "\n"; } for(unsigned int ix=0;ix<_twowgts.size();++ix) { output << "newdef " << name() << ":TwoChargedWeights " << ix << " " << _twowgts[ix] << "\n"; } for(unsigned int ix=0;ix<_threewgts.size();++ix) { output << "newdef " << name() << ":ThreeChargedWeights " << ix << " " << _threewgts[ix] << "\n"; } // maximum weights for the different channels output << "newdef " << name() << ":ZeroMax " << _zeromax << "\n"; output << "newdef " << name() << ":OneMax " << _onemax << "\n"; output << "newdef " << name() << ":TwoMax " << _twomax << "\n"; output << "newdef " << name() << ":ThreeMax " << _threemax << "\n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/OniumToOniumPiPiDecayer.cc������������������������������������0000644�0001750�0001750�00000043602�11754474773�025264� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // OniumToOniumPiPiDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the OniumToOniumPiPiDecayer class. // #include "OniumToOniumPiPiDecayer.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" using namespace Herwig; using namespace ThePEG::Helicity; void OniumToOniumPiPiDecayer::doinitrun() { DecayIntegrator::doinitrun(); for(unsigned int ix=0;ix<_maxweight.size();++ix) { if(initialize()) _maxweight[ix] = mode(ix)->maxWeight(); } } OniumToOniumPiPiDecayer::OniumToOniumPiPiDecayer() { // Upsilon(3S)->Upsilon(1S) pi pi _incoming.push_back(200553); _outgoing.push_back( 553); _maxweight.push_back(1.); _maxweight.push_back(1.); _coupling.push_back(3.92e-6); _reA.push_back( 1. /MeV2);_imA.push_back( ZERO); _reB.push_back(-2.523/MeV2);_imB.push_back( 1.189/MeV2); _reC.push_back( ZERO);_imC.push_back( ZERO); // Upsilon(3S)->Upsilon(2S) pi pi _incoming.push_back(200553); _outgoing.push_back(100553); _maxweight.push_back(1.); _maxweight.push_back(1.); _coupling.push_back(311e-6); _reA.push_back( 1. /MeV2);_imA.push_back( ZERO); _reB.push_back(-0.395/MeV2);_imB.push_back( 0.001/MeV2); _reC.push_back( ZERO);_imC.push_back( ZERO); // Upsilon(2S)->Upsilon(1S) pi pi _incoming.push_back(100553); _outgoing.push_back( 553); _maxweight.push_back(1.); _maxweight.push_back(1.); _coupling.push_back(61.4e-6); _reA.push_back( 1. /MeV2);_imA.push_back( ZERO); _reB.push_back(-0.753/MeV2);_imB.push_back( ZERO); _reC.push_back( ZERO);_imC.push_back( ZERO); // Upsilon(4S)->Upsilon(1S) pi pi _incoming.push_back(300553); _outgoing.push_back( 553); _maxweight.push_back(1.); _maxweight.push_back(1.); _coupling.push_back(1.77e-6); _reA.push_back( 1. /MeV2);_imA.push_back( ZERO); _reB.push_back( ZERO);_imB.push_back( ZERO); _reC.push_back( ZERO);_imC.push_back( ZERO); // Upsilon(4S)->Upsilon(2S) pi pi _incoming.push_back(300553); _outgoing.push_back(100553); _maxweight.push_back(1.); _maxweight.push_back(1.); _coupling.push_back(68.8e-6); _reA.push_back( 1. /MeV2);_imA.push_back( ZERO); _reB.push_back(-2.35 /MeV2);_imB.push_back( 0.55/MeV2); _reC.push_back( ZERO);_imC.push_back( ZERO); // psi(2s)->psi(1S) pi pi _incoming.push_back(100443); _outgoing.push_back( 443); _maxweight.push_back(1.); _maxweight.push_back(1.); _coupling.push_back(66.2e-6); _reA.push_back( 1. /MeV2);_imA.push_back( ZERO); _reB.push_back(-0.336/MeV2);_imB.push_back( ZERO); _reC.push_back( ZERO);_imC.push_back( ZERO); // psi(3770)->psi(1S) pi pi _incoming.push_back(30443); _outgoing.push_back( 443); _maxweight.push_back(1.); _maxweight.push_back(1.); _coupling.push_back(20.6e-6); _reA.push_back( 1. /MeV2);_imA.push_back( ZERO); _reB.push_back( ZERO);_imB.push_back( ZERO); _reC.push_back( ZERO);_imC.push_back( ZERO); // Initial size of the vectors _initsize=_incoming.size(); // don'y generate the intermediates in the phase-space generateIntermediates(false); } void OniumToOniumPiPiDecayer::doinit() { DecayIntegrator::doinit(); // check consistency of the vectors unsigned int isize=_incoming.size(); if(_outgoing.size()!=isize||_maxweight.size()!=2*isize|| _coupling.size()!=isize|| _reA .size()!=isize||_imA.size() !=isize|| _reB .size()!=isize||_imB.size() !=isize|| _reC .size()!=isize||_imC.size() !=isize) throw InitException() << "Inconsistent size of the parameter vectors in " << "OniumToOniumPiPiDecayer" << Exception::runerror; // construct the complex couplings for(unsigned int ix=0;ix<_incoming.size();++ix) { _cA.push_back(complex<InvEnergy2>(_reA[ix],_imA[ix])); _cB.push_back(complex<InvEnergy2>(_reB[ix],_imB[ix])); _cC.push_back(complex<InvEnergy2>(_reC[ix],_imC[ix])); } // construct the decay channels tPDVector extpart(4); tPDPtr pip(getParticleData(ParticleID::piplus )); tPDPtr pim(getParticleData(ParticleID::piminus)); tPDPtr pi0(getParticleData(ParticleID::pi0 )); tPDPtr rho0(getParticleData(113)); DecayPhaseSpaceModePtr mode; DecayPhaseSpaceChannelPtr newchannel; vector<double> dummyweights(1,1.); for(unsigned int ix=0;ix<isize;++ix) { extpart[0]=getParticleData(_incoming[ix]); extpart[1]=getParticleData(_outgoing[ix]); for(unsigned int iy=0;iy<2;++iy) { // pi+ pi- if(iy==0) { extpart[2]=pip; extpart[3]=pim; } // pi0 pi0 else { extpart[2]=pi0; extpart[3]=pi0; } // construct the phase-space mode mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); newchannel->addIntermediate(extpart[0],0, 0.0,1,-1); newchannel->addIntermediate(rho0,1,0.0, 2,3); mode->addChannel(newchannel); // reset the resonance parameters mode->resetIntermediate(rho0,2*extpart[0]->mass(),2*extpart[0]->mass()); // add the mode addMode(mode,_maxweight[2*ix+iy],dummyweights); } } } void OniumToOniumPiPiDecayer::persistentOutput(PersistentOStream & os) const { os << _incoming << _outgoing << _maxweight << _initsize << ounit(_reA,1./GeV2) << ounit(_imA,1./GeV2) << ounit(_cA,1./GeV2) << ounit(_reB,1./GeV2) << ounit(_imB,1./GeV2) << ounit(_cB,1./GeV2) << ounit(_reC,1./GeV2) << ounit(_imC,1./GeV2) << ounit(_cC,1./GeV2); } void OniumToOniumPiPiDecayer::persistentInput(PersistentIStream & is, int) { is >> _incoming >> _outgoing >> _maxweight >> _initsize >> iunit(_reA,1./GeV2) >> iunit(_imA,1./GeV2) >> iunit(_cA,1./GeV2) >> iunit(_reB,1./GeV2) >> iunit(_imB,1./GeV2) >> iunit(_cB,1./GeV2) >> iunit(_reC,1./GeV2) >> iunit(_imC,1./GeV2) >> iunit(_cC,1./GeV2); } ClassDescription<OniumToOniumPiPiDecayer> OniumToOniumPiPiDecayer::initOniumToOniumPiPiDecayer; // Definition of the static class description member. void OniumToOniumPiPiDecayer::Init() { static ClassDocumentation<OniumToOniumPiPiDecayer> documentation ("The OniumToOniumPiPiDecayer class uses the matrix element of " "Brown and Cahn, PRL35, 1 (1975), for" " the decay of onium resonaces to lighter states and pion pairs." " The results of hep-ex/9909038 are used for psi'->psi and " " arXiv:0706.2317 for Upsilon(3S) and Upsilon(2S) decays." " The remaining parameters are choosen to approximately reproduce" " the distributions from hep-ex/0604031 and hep-ex/0508023.", "The decays of onium resonances to lighter states and pion pairs were modelled" " using the matrix element of \\cite{Brown:1975dz}. The results of " "\\cite{Bai:1999mj} are used for $\\psi'\\to\\psi$ and " "\\cite{Cronin-Hennessy:2007sj} for $\\Upsilon(3S)$ and $\\Upsilon(2S)$ decays." " The remaining parameters are choosen to approximately reproduce" " the distributions from \\cite{Aubert:2006bm} and \\cite{Adam:2005mr}.", "\\bibitem{Brown:1975dz} L.~S.~Brown and R.~N.~Cahn," "Phys.\\ Rev.\\ Lett.\\ {\\bf 35} (1975) 1." "%%CITATION = PRLTA,35,1;%%\n" "\\bibitem{Bai:1999mj} J.~Z.~Bai {\\it et al.} [BES Collaboration]," "Phys.\\ Rev.\\ D {\\bf 62} (2000) 032002 [arXiv:hep-ex/9909038]." "%%CITATION = PHRVA,D62,032002;%%\n" "\\bibitem{Cronin-Hennessy:2007sj} D.~Cronin-Hennessy{\\it et al.} " "[CLEO Collaboration], arXiv:0706.2317 [hep-ex]." "%%CITATION = ARXIV:0706.2317;%%\n" "\\bibitem{Aubert:2006bm} B.~Aubert {\\it et al.} [BABAR Collaboration]," "Phys.\\ Rev.\\ Lett.\\ {\\bf 96} (2006) 232001 [arXiv:hep-ex/0604031]." "%%CITATION = PRLTA,96,232001;%%\n" "\\bibitem{Adam:2005mr} N.~E.~Adam {\\it et al.} [CLEO Collaboration]," "Phys.\\ Rev.\\ Lett.\\ {\\bf 96} (2006) 082004 [arXiv:hep-ex/0508023]." "%%CITATION = PRLTA,96,082004;%%"); static ParVector<OniumToOniumPiPiDecayer,long> interfaceIncoming ("Incoming", "The PDG code for the incoming onium state", &OniumToOniumPiPiDecayer::_incoming, -1, long(0), -10000000, 10000000, false, false, Interface::limited); static ParVector<OniumToOniumPiPiDecayer,long> interfaceOutgoing ("Outgoing", "The PDG code for the outgoing onium state", &OniumToOniumPiPiDecayer::_outgoing, -1, long(0), -10000000, 10000000, false, false, Interface::limited); static ParVector<OniumToOniumPiPiDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode, there should be two " "for each mode as we have pi+ pi- and pi0 pi0", &OniumToOniumPiPiDecayer::_maxweight, -1, 1.0, 0.0, 10000.0, false, false, Interface::limited); static ParVector<OniumToOniumPiPiDecayer,double> interfaceCoupling ("Coupling", "The overall coupling for the decay", &OniumToOniumPiPiDecayer::_coupling, -1, 1.0, 0.0, 10.0, false, false, Interface::limited); static ParVector<OniumToOniumPiPiDecayer,InvEnergy2> interfaceReA ("ReA", "The real part of the A coupling", &OniumToOniumPiPiDecayer::_reA, 1./MeV2, -1, 1.0/MeV2, -1000.0/MeV2, 1000.0/MeV2, false, false, Interface::limited); static ParVector<OniumToOniumPiPiDecayer,InvEnergy2> interfaceImA ("ImA", "The imaginary part of the A coupling", &OniumToOniumPiPiDecayer::_imA, 1./MeV2, -1, 1.0/MeV2, -1000.0/MeV2, 1000.0/MeV2, false, false, Interface::limited); static ParVector<OniumToOniumPiPiDecayer,InvEnergy2> interfaceReB ("ReB", "The real part of the B coupling", &OniumToOniumPiPiDecayer::_reB, 1./MeV2, -1, 1.0/MeV2, -1000.0/MeV2, 1000.0/MeV2, false, false, Interface::limited); static ParVector<OniumToOniumPiPiDecayer,InvEnergy2> interfaceImB ("ImB", "The imaginary part of the B coupling", &OniumToOniumPiPiDecayer::_imB, 1./MeV2, -1, 1.0/MeV2, -1000.0/MeV2, 1000.0/MeV2, false, false, Interface::limited); static ParVector<OniumToOniumPiPiDecayer,InvEnergy2> interfaceReC ("ReC", "The real part of the C coupling", &OniumToOniumPiPiDecayer::_reC, 1./MeV2, -1, 1.0/MeV2, -1000.0/MeV2, 1000.0/MeV2, false, false, Interface::limited); static ParVector<OniumToOniumPiPiDecayer,InvEnergy2> interfaceImC ("ImC", "The imaginary part of the C coupling", &OniumToOniumPiPiDecayer::_imC, 1./MeV2, -1, 1.0/MeV2, -1000.0/MeV2, 1000.0/MeV2, false, false, Interface::limited); } int OniumToOniumPiPiDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { cc=false; int imode(-1); long idin(parent->id()); if(children.size()!=3) return -1; unsigned int npip(0),npim(0),npi0(0); long idother(0),id; for(tPDVector::const_iterator pit=children.begin(); pit!=children.end();++pit) { id=(**pit).id(); if(id==ParticleID::piplus) ++npip; else if(id==ParticleID::piminus) ++npim; else if(id==ParticleID::pi0) ++npi0; else idother=id; } // check pi+ pi- or pi0 pi0 and outgoing state if(!((npip==1&&npim==1)||npi0==2)||idother==0) return -1; unsigned int ix=0; do { if(idin==_incoming[ix]&&idother==_outgoing[ix]) imode=ix; ++ix; } while(ix<_incoming.size()&&imode<0); return npi0==2 ? 2*imode+1 : 2*imode; } double OniumToOniumPiPiDecayer::me2(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { useMe(); if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors[0],_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); ME(DecayMatrixElement(PDT::Spin1,PDT::Spin1,PDT::Spin0,PDT::Spin0)); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors[0],const_ptr_cast<tPPtr>(&inpart), incoming,true,false); VectorWaveFunction::constructSpinInfo(_vectors[1],decay[0], outgoing,true,false); for(unsigned int ix=1;ix<3;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return 0.; } VectorWaveFunction::calculateWaveFunctions(_vectors[1],decay[0],outgoing,false); // compute the matrix element complex<InvEnergy2> A(_cA[imode()/2]),B(_cB[imode()/2]),C(_cC[imode()/2]); Energy2 q2 =(decay[1]->momentum()+decay[2]->momentum()).m2(); Energy2 mpi2=sqr(decay[1]->mass()); for(unsigned int ix=0;ix<3;++ix) { for(unsigned int iy=0;iy<3;++iy) { Complex dota = _vectors[0][ix].dot(_vectors[1][iy]); complex<Energy2> dotb = (_vectors[0][ix]*decay[1]->momentum())*(_vectors[1][iy]*decay[2]->momentum())+ (_vectors[0][ix]*decay[2]->momentum())*(_vectors[1][iy]*decay[1]->momentum()); ME()(ix,iy,0,0)= _coupling[imode()/2]* (A*dota*(q2-2.*mpi2)+B*dota*decay[1]->momentum().e()*decay[2]->momentum().e() +C*dotb); } } // matrix element double output=ME().contract(_rho).real(); if(imode()%2==1) output*=0.5; // test of the matrix element // Energy2 s1=(decay[1]->momentum()+decay[2]->momentum()).m2(); // Energy2 s2=(decay[0]->momentum()+decay[2]->momentum()).m2(); // Energy2 s3=(decay[1]->momentum()+decay[0]->momentum()).m2(); // double test=threeBodyMatrixElement(imode(),sqr(inpart.mass()), // s3,s2,s1,decay[0]->mass(), // decay[1]->mass(),decay[2]->mass()); // return the answer return output; } // output the setup information for the particle database void OniumToOniumPiPiDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the DecayIntegrator base class DecayIntegrator::dataBaseOutput(output,false); // the rest of the parameters for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":Outgoing " << ix << " " << _outgoing[ix] << "\n"; output << "newdef " << name() << ":Coupling " << ix << " " << _coupling[ix] << "\n"; output << "newdef " << name() << ":ReA " << ix << " " << _reA[ix]*MeV2 << "\n"; output << "newdef " << name() << ":ImA " << ix << " " << _imA[ix]*MeV2 << "\n"; output << "newdef " << name() << ":ReB " << ix << " " << _reB[ix]*MeV2 << "\n"; output << "newdef " << name() << ":ImB " << ix << " " << _imB[ix]*MeV2 << "\n"; output << "newdef " << name() << ":ReC " << ix << " " << _reC[ix]*MeV2 << "\n"; output << "newdef " << name() << ":ImC " << ix << " " << _imC[ix]*MeV2 << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":Outgoing " << ix << " " << _outgoing[ix] << "\n"; output << "insert " << name() << ":Coupling " << ix << " " << _coupling[ix] << "\n"; output << "insert " << name() << ":ReA " << ix << " " << _reA[ix]*MeV2 << "\n"; output << "insert " << name() << ":ImA " << ix << " " << _imA[ix]*MeV2 << "\n"; output << "insert " << name() << ":ReB " << ix << " " << _reB[ix]*MeV2 << "\n"; output << "insert " << name() << ":ImB " << ix << " " << _imB[ix]*MeV2 << "\n"; output << "insert " << name() << ":ReC " << ix << " " << _reC[ix]*MeV2 << "\n"; output << "insert " << name() << ":ImC " << ix << " " << _imC[ix]*MeV2 << "\n"; } } for(unsigned int ix=0;ix<_maxweight.size();++ix) { if(ix<2*_initsize) { output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } WidthCalculatorBasePtr OniumToOniumPiPiDecayer:: threeBodyMEIntegrator(const DecayMode & dm) const { int imode(-1); long idin(dm.parent()->id()); unsigned int npip(0),npim(0),npi0(0); long idother(0),id; for(ParticleMSet::const_iterator pit=dm.products().begin(); pit!=dm.products().end();++pit) { id=(**pit).id(); if(id==ParticleID::piplus) ++npip; else if(id==ParticleID::piminus) ++npim; else if(id==ParticleID::pi0) ++npi0; else idother=id; } unsigned int ix=0; do { if(idin==_incoming[ix]&&idother==_outgoing[ix]) imode=ix; ++ix; } while(ix<_incoming.size()&&imode<0); imode = npi0==2 ? 2*imode+1 : 2*imode; // construct the integrator vector<double> inweights(1,1.); Energy scale=getParticleData(_incoming[ix-1])->mass(); Energy m1=getParticleData(_outgoing[ix-1])->mass(); Energy mpi = npi0==2 ? getParticleData(ParticleID::pi0)->mass() : getParticleData(ParticleID::piplus)->mass(); vector<int> intype(1,3); vector<Energy> inmass (1,scale); vector<Energy> inwidth(1,scale); vector<double> inpow(1,0.0); return new_ptr(ThreeBodyAllOnCalculator<OniumToOniumPiPiDecayer> (inweights,intype,inmass,inwidth,inpow, *this,imode,m1,mpi,mpi)); } double OniumToOniumPiPiDecayer:: threeBodyMatrixElement(const int imode, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const { Energy q=sqrt(q2); Energy e2 = 0.5*(q2+sqr(m2)-s2)/q; Energy e3 = 0.5*(q2+sqr(m3)-s3)/q; Complex amp = _cA[imode/2]*(s1-sqr(m2)-sqr(m3))+_cB[imode/2]*e2*e3; Energy2 dot = 0.5*(q2+sqr(m1)-s1); double output=(2.+sqr(dot/q/m1))*real(amp*conj(amp))*sqr(_coupling[imode/2])/3.; if(imode%2==1) output*=0.5; return output; } ������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/VectorMeson/VectorMesonPVectorPScalarDecayer.h����������������������������0000644�0001750�0001750�00000014431�11754474773�026755� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMesonPVectorPScalarDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_VectorMesonPVectorPScalarDecayer_H #define HERWIG_VectorMesonPVectorPScalarDecayer_H // This is the declaration of the VectorMesonPVectorPScalarDecayer class. #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * This class is designed for the decay of a vector meson to a pseudovector * meson and a pseudoscalar meson. * The current for the decay is * * \f[\mathcal{M}= g\left[ p_V \cdot p_0 \epsilon_V\cdot \epsilon_0 * -p_V\cdot \epsilon_0 \epsilon_V \cdot p_0\right]\f] * * @see DecayIntegrator * @see \ref VectorMesonPVectorPScalarDecayerInterfaces "The interfaces" * defined for VectorMesonPVectorPScalarDecayer. * * \author Peter Richardson */ class VectorMesonPVectorPScalarDecayer: public DecayIntegrator { public: /** * Default constructor. */ VectorMesonPVectorPScalarDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class, in this case 4. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<VectorMesonPVectorPScalarDecayer> initVectorMesonPVectorPScalarDecayer; /** * Private and non-existent assignment operator. */ VectorMesonPVectorPScalarDecayer & operator=(const VectorMesonPVectorPScalarDecayer &); private: /** * coupling for a decay */ vector<InvEnergy> _coupling; /** * PDG codes for the incoming particles */ vector<int> _incoming; /** * PDG codes for the outgoing pseudo-vector */ vector<int> _outgoingA; /** * PDG codes for the outgoing pseudoscalar mesons. */ vector<int> _outgoingP; /** * maximum weight for a decay */ vector<double> _maxweight; /** * Initial size of the vectors */ unsigned int _initsize; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the incoming and outgoing ferimons */ mutable vector<Helicity::LorentzPolarizationVector> _vectors[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of VectorMesonPVectorPScalarDecayer. */ template <> struct BaseClassTrait<Herwig::VectorMesonPVectorPScalarDecayer,1> { /** Typedef of the base class of VectorMesonPVectorPScalarDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VectorMesonPVectorPScalarDecayer> : public ClassTraitsBase<Herwig::VectorMesonPVectorPScalarDecayer> { /** Return the class name. */ static string className() { return "Herwig::VectorMesonPVectorPScalarDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwVMDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_VectorMesonPVectorPScalarDecayer_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/DecayVertex.h�������������������������������������������������������������0000644�0001750�0001750�00000006074�11754474774�020427� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DecayVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DecayVertex_H #define HERWIG_DecayVertex_H // // This is the declaration of the DecayVertex class. // #include <ThePEG/EventRecord/HelicityVertex.h> #include "DecayMatrixElement.h" #include "DecayVertex.fh" namespace Herwig { /** \ingroup Helicity * \author Peter Richardson * * The DecayVertex class is designed to implement the vertex * for a decay for use with the spin correlation algorithm. * It inherits from HelicityVertex class of ThePEG and implements * the methods to calculate the \f$\rho\f$ and \f$D\f$ matrices. * * It uses the DecayMatrixElement class to store the matrix element and * it is this class which performs the calculations of the matrices. * * @see HelicityVertex * @see DecayMatrixElement */ class DecayVertex: public HelicityVertex { public: /** * Access to the matrix element */ //@{ /** * Get the matrix element */ const DecayMatrixElement & ME() const { return _matrixelement; } /** * Set the matrix element */ void ME(const DecayMatrixElement & in) const { _matrixelement.reset(in); } //@} public: /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** * Method to calculate the \f$\rho\f$ matrix for one of the decay products * @param iprod The product we are calculating the \f$\rho\f$ matrix for. * @param recursive Whether or not to recursive calculate the matrix */ virtual RhoDMatrix getRhoMatrix(int iprod,bool recursive) const; /** * Method to calculate the \f$D\f$ matrix for the decaying particle. It this * case the argument is a dummy. */ virtual RhoDMatrix getDMatrix(int) const; private: /** * Describe a concrete class without persistent data. */ static NoPIOClassDescription<DecayVertex> initDecayVertex; /** * Private and non-existent assignment operator. */ DecayVertex & operator=(const DecayVertex &); private: /** * Storage of the decay matrix element. */ DecayMatrixElement _matrixelement; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of DecayVertex. */ template <> struct BaseClassTrait<Herwig::DecayVertex,1> { /** Typedef of the base class of DecayVertex. */ typedef ThePEG::HelicityVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DecayVertex> : public ClassTraitsBase<Herwig::DecayVertex> { /** * Return the class name. */ static string className() { return "Herwig::DecayVertex"; } }; /** @endcond */ } #endif /* HERWIG_DecayVertex_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Hw64Decayer.cc������������������������������������������������������������0000644�0001750�0001750�00000016557�11754474774�020376� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Hw64Decayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the Hw64Decayer class. // #include "Hw64Decayer.h" #include <ThePEG/EventRecord/Event.h> #include <ThePEG/PDT/EnumParticles.h> #include <ThePEG/PDT/DecayMode.h> #include <ThePEG/Interface/ClassDocumentation.h> #include "Herwig++/Utilities/Kinematics.h" #include <ThePEG/Interface/Parameter.h> #include <ThePEG/Interface/Switch.h> #include <ThePEG/Persistency/PersistentOStream.h> #include <ThePEG/Persistency/PersistentIStream.h> #include "Herwig++/PDT/GenericMassGenerator.h" using namespace Herwig; void Hw64Decayer::Init() { static ClassDocumentation<Hw64Decayer> documentation ("Class to decay all particles in HERWIG by the algorithms used in HERWIG 6.4", "Some decays used the Fortran HERWIG decay algorithm \\cite{Corcella:2000bw}.", "%\\cite{Corcella:2000bw}\n" "\\bibitem{Corcella:2000bw}\n" " G.~Corcella {\\it et al.},\n" " %``HERWIG 6.5: an event generator for Hadron Emission Reactions With\n" " %Interfering Gluons (including supersymmetric processes),''\n" " JHEP {\\bf 0101} (2001) 010\n" " [arXiv:hep-ph/0011363].\n" " %%CITATION = JHEPA,0101,010;%%\n" ); static Switch<Hw64Decayer,int> interfaceMECode ("MECode", "The code for the ME type to use in the decay", &Hw64Decayer::MECode, 0, false, false); static SwitchOption interfaceMECodePhaseSpace (interfaceMECode, "PhaseSpace", "Use a phase-space distribution", 0); static SwitchOption interfaceMECodeFreeVA (interfaceMECode, "FreeVA", "Free Massless (V-A)*(V-A) ME", 100); static SwitchOption interfaceMECodeBoundVA (interfaceMECode, "BoundVA", "Bound Massless (V-A)*(V-A) ME", 101); static Parameter<Hw64Decayer,unsigned int> interfaceMassTry ("MassTry", "The maximum number of attempts to generate the off-shell masses of the" " decay products.", &Hw64Decayer::_masstry, 50, 1, 1000, false, false, Interface::limited); } ClassDescription<Hw64Decayer> Hw64Decayer::initHw64Decayer; bool Hw64Decayer::accept(tcPDPtr, const tPDVector & children) const { return children.size() <= 3; } ParticleVector Hw64Decayer::decay(const Particle & p, const tPDVector & children) const { useMe(); // storage for the decay products and number of decay products ParticleVector rval; unsigned int numProds(children.size()); // check that it is possible to kinematically perform the decay Energy minmass(ZERO); vector<Energy> minmasses(numProds); vector<tcGenericMassGeneratorPtr> massgen(numProds,tcGenericMassGeneratorPtr()); tcMassGenPtr mtemp; for(unsigned int ix=0;ix<numProds;++ix) { minmasses[ix]=children[ix]->massMin(); minmass+=minmasses[ix]; mtemp=children[ix]->massGenerator(); if(mtemp) massgen[ix]=dynamic_ptr_cast<tcGenericMassGeneratorPtr>(mtemp); } // check not decaying a massless particle if(p.mass() < 0.000001*MeV) throw Exception() << "HwDecayer called on a particle with no mass " << p.PDGName() << ", " << p.mass()/MeV << Exception::eventerror; // throw a veto if not kinematically possible if(minmass>p.mass()&&numProds!=1) throw Veto(); // Create a vectors for momenta and masses vector<Lorentz5Momentum> products(numProds); vector<Energy> masses(numProds); // now generate the masses of the particles starting with a random one // to avoid bias unsigned int ntry(0); Energy outmass; if(numProds!=1) { do { unsigned int istart=UseRandom::irnd(numProds); outmass=ZERO; for(unsigned int ix=istart;ix<numProds;++ix) { masses[ix] = massgen[ix] ? massgen[ix]->mass(*(children[ix]),minmasses[ix], p.mass()-minmass+minmasses[ix]) : children[ix]->generateMass(); outmass+=masses[ix]; if(outmass>p.mass()) break; } for(unsigned int ix=0;ix<istart;++ix) { masses[ix] = massgen[ix] ? massgen[ix]->mass(*(children[ix]),minmasses[ix], p.mass()-minmass+minmasses[ix]) : children[ix]->generateMass(); outmass+=masses[ix]; if(outmass>p.mass()) break; } ++ntry; } while(ntry<_masstry&&outmass>p.mass()); if(outmass>p.mass()) throw Veto(); } else masses[0]=p.mass(); for(unsigned int ix=0;ix<numProds;++ix) products[ix].setMass(masses[ix]); // The K -> KL0 and KS0 if(numProds == 1) { products[0]=p.momentum(); } // 2 Body Decay else if(numProds == 2) { double CosAngle, AzmAngle; Kinematics::generateAngles(CosAngle, AzmAngle); Kinematics::twoBodyDecay(p.momentum(), masses[0], masses[1], CosAngle, AzmAngle, products[0], products[1]); } // Three Body Decay else if(numProds == 3) { // Free Massless (V-A)*(V-A) ME if(MECode == 100) { Kinematics::threeBodyDecay(p.momentum(), products[0], products[1], products[2], &VAWt); } // Bound Massless (V-A)*(V-A) ME else if(MECode == 101) { Energy2 wtmx, dot1, dot2; Energy4 wtmx2; double xs; wtmx = ( (p.mass() - products[2].mass())*(p.mass() + products[2].mass()) + (products[1].mass() - products[0].mass())* (products[1].mass() + products[0].mass()))/2.0; wtmx2 = sqr(wtmx); // Find sum of masses of constituent particles int IPDG = abs(p.id()); Energy m1, m2, m3; if(IPDG >= 1000) m1 = generator()->getParticleData((IPDG/1000)%10)->mass(); else m1 = ZERO; m2 = generator()->getParticleData((IPDG/100)%10)->mass(); m3 = generator()->getParticleData((IPDG/10)%10)->mass(); xs = 1.0 - Math::absmax<Energy>(m1, Math::absmax<Energy>(m2, m3))/(m1+m2+m3); // Do decay, repeat until meets condition do { Kinematics::threeBodyDecay(p.momentum(), products[1], products[2], products[0], &VAWt); dot1 = p.momentum().dot(products[1]); dot2 = p.momentum().dot(products[0]); } while(dot1*(wtmx-dot1-xs*dot2) < UseRandom::rnd()*wtmx2); } // Three Body via phase space else { Kinematics::threeBodyDecay(p.momentum(), products[0], products[1], products[2]); } } if(products[0] == Lorentz5Momentum()) return ParticleVector(); cPDVector productParticles(numProds); for(unsigned int ix=0;ix<numProds;++ix) { productParticles[ix]=children[ix]; } // set the momenta of the particles and return the answer setParticleMomentum(rval, productParticles, products); return rval; } void Hw64Decayer::persistentOutput(PersistentOStream &os) const { os << MECode << _masstry; } void Hw64Decayer::persistentInput(PersistentIStream &is, int) { is >> MECode >> _masstry; } double Hw64Decayer::VAWt(Energy2 t0, Energy2 t1, Energy2 t2, InvEnergy4 t3) { return (t1-t0)*(t0-t2)*t3; } void Hw64Decayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; // parameters for the PartonicDecayerBase base class output << "newdef " << name() << ":MECode " << MECode << " \n"; output << "newdef " << name() << ":MassTry " << _masstry << " \n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/DecayIntegrator.h���������������������������������������������������������0000644�0001750�0001750�00000036326�11754474774�021273� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DecayIntegrator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DecayIntegrator_H #define HERWIG_DecayIntegrator_H // // This is the declaration of the DecayIntegrator class. // #include <ThePEG/PDT/Decayer.h> #include "DecayPhaseSpaceChannel.h" #include <ThePEG/PDT/EnumParticles.h> #include <Herwig++/Decay/DecayVertex.h> #include "DecayPhaseSpaceMode.fh" #include "Herwig++/PDT/WidthCalculatorBase.fh" #include "Radiation/DecayRadiationGenerator.h" #include "HwDecayerBase.h" #include "DecayIntegrator.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * \class DecayIntegrator * \brief Main class for Decayers implementing multi-channel phase space integration. * \author Peter Richardson * * This class is designed to be the base class for Herwig++ decays including * the implementation of a multichannel decayer or n-body phase space decays. * * The <code>DecayIntegrator</code> class inherits from ThePEG's Decayer class * and makes use of the <code>DecayPhaseSpaceMode</code> class to specify a number * of decay modes. * * Additional modes can be added using the addMode method. In practice the * phase space channels for a particular mode are usually constructed in the * doinit member of a Decayer and then the modes added to the Decayer. * * For the majority of the decays currently implemented the * phase-space integration has been optimised and the maximum weight set. * If the parameters of the decay model are changed the Initialize interface * can be used to optimise the integration and calculate the maximum weight. * * In classes inheriting from this the me2() member which gives the matrix element * squared must be implemented. This should be combined with the setting of the * phase space channels, and the setting of which channels to use and their * initial weights in the doinit() member. The different decay modes should then * be initialized in the initrun() member if needed. The generate member can then * be called from the decay() member to generate a phase-space configuration for a * decay. * * @see DecayPhaseSpaceMode * @see DecayPhaseSpaceChannel * @see \ref DecayIntegratorInterfaces "The interfaces" * defined for DecayIntegrator. */ class DecayIntegrator: public HwDecayerBase { public: /** * The output operator is a friend, this is mainly for debugging */ friend ostream & operator<<(ostream &, const DecayIntegrator &); /** * Enum for the matrix element option */ enum MEOption {Initialize,Calculate,Terminate}; public: /** * Default constructor. */ DecayIntegrator() : _niter(10), _npoint(10000), _ntry(500), _generateinter(false), _imode(-1), _realME(false), _virtualME(false) {} /** * Check if this decayer can perfom the decay for a particular mode. * Uses the modeNumber member but can be overridden * @param parent The decaying particle * @param children The decay products */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const { bool cc; return modeNumber(cc,parent,children)>=0; } /** * For a given decay mode and a given particle instance, perform the * decay and return the decay products. As this is the base class this * is not implemented. * @return The vector of particles produced in the decay. */ virtual ParticleVector decay(const Particle & parent, const tPDVector & children) const; /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const = 0; /** * The mode being used for this decay */ int imode() const {return _imode;} /** * Add a phase-space mode to the list * @param mode The mode being added. * @param maxwgt The maximum weight for the phase space integration. * @param wgts The weights of the different channels in the multichannel approach. */ void addMode(DecayPhaseSpaceModePtr mode,double maxwgt, const vector<double> wgts) const; /** * Return the matrix element squared for a given mode and phase-space channel. * This function is purely virtual and must be implemented in classes inheriting * from DecayIntegrator. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param opt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay,MEOption opt) const=0; /** * The helicity amplitude matrix element for spin correlations. */ DecayMatrixElement & ME() const {return _matrixelement;} /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ virtual bool twoBodyMEcode(const DecayMode &, int & mecode, double & coupling) const { coupling = 1.; mecode = -1; return false; } /** * Method to return an object to calculate the 3 (or higher body) partial width * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) const; /** * The matrix element to be integrated for the three-body decays as a function * of the invariant masses of pairs of the outgoing particles. * @param imode The mode for which the matrix element is needed. * @param q2 The scale, \e i.e. the mass squared of the decaying particle. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The matrix element */ virtual double threeBodyMatrixElement(const int imode, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const; /** * The differential three body decay rate with one integral performed. * @param imode The mode for which the matrix element is needed. * @param q2 The scale, \e i.e. the mass squared of the decaying particle. * @param s The invariant mass which still needs to be integrate over. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The differential rate \f$\frac{d\Gamma}{ds}\f$ */ virtual InvEnergy threeBodydGammads(const int imode, const Energy2 q2, const Energy2 s, const Energy m1, const Energy m2, const Energy m3) const; /** * Set the code for the partial width. Finds the partial width in the * GenericWidthGenerator class which corresponds to the decay mode. * @param dm The DecayMode * @param imode The mode. */ void setPartialWidth(const DecayMode & dm, int imode); /** * Finds the phase-space mode corresponding to a given decay mode * @param dm The DecayMode */ int findMode(const DecayMode & dm); /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) const; public: /** * Members for the generation of QED radiation in the decays */ //@{ /** * Use the DecayRadiationGenerator to generate photons in the decay. * @param p The Particle instance being decayed * @param children The decay products * @return A particle vector containing the decay products after the generation * of photons. */ ParticleVector generatePhotons(const Particle & p,ParticleVector children) { return _photongen->generatePhotons(p,children,this); } /** * check if photons can be generated in the decay */ bool canGeneratePhotons() {return _photongen;} /** * The one-loop virtual correction. * @param imode The mode required. * @param part The decaying particle. * @param products The decay products including the radiated photon. * @return Whether the correction is implemented */ virtual double oneLoopVirtualME(unsigned int imode, const Particle & part, const ParticleVector & products); /** * Whether or not the one loop matrix element is implemented */ bool hasOneLoopME() {return _virtualME;} /** * The real emission matrix element * @param imode The mode required * @param part The decaying particle * @param products The decay products including the radiated photon * @param iemitter The particle which emitted the photon * @param ctheta The cosine of the polar angle between the photon and the * emitter * @param stheta The sine of the polar angle between the photon and the * emitter * @param rot1 Rotation from rest frame to frame for real emission * @param rot2 Rotation to place emitting particle along z */ virtual InvEnergy2 realEmissionME(unsigned int imode, const Particle & part, ParticleVector & products, unsigned int iemitter, double ctheta, double stheta, const LorentzRotation & rot1, const LorentzRotation & rot2); /** * Whether or not the real emission matrix element is implemented */ bool hasRealEmissionME() {return _realME;} //@} 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** * Generate the momenta for the decay * @param inter Generate the intermediates produced in the decay as well as the * final particles. * @param cc Is this the mode defined or its charge conjugate. * @param imode The mode being generated. * @param inpart The decaying particle. * @return The particles produced inthe decay. */ ParticleVector generate(bool inter,bool cc, const unsigned int & imode, const Particle & inpart) const; /** * Set the mode being use for this decay. */ void imode(int in) {_imode=in;} /** * Set the helicity matrix element for the decay. */ void ME(const DecayMatrixElement & in) const {_matrixelement.reset(in);} /** * Reset the properities of all intermediates. * @param part The intermediate particle being reset. * @param mass The mass of the particle. * @param width The width of the particle. */ void resetIntermediate(tcPDPtr part, Energy mass, Energy width); /** * Number of decay modes */ unsigned int numberModes() const {return _modes.size();} /** * Pointer to a mode */ tDecayPhaseSpaceModePtr mode(unsigned int); /** * Pointer to a mode */ tcDecayPhaseSpaceModePtr mode(unsigned int) const; /** * Get whether or not the intermediates are included */ bool generateIntermediates() const {return _generateinter;} /** * Set whether or not the intermediates are included */ void generateIntermediates(bool in) {_generateinter=in;} /** * Initialize the phase-space mode * @param imode The mode * @param init Whether or not to perform the initialization */ Energy initializePhaseSpaceMode(unsigned int imode,bool init) const; /** * Whether or not the one loop matrix element is implemented */ void hasOneLoopME(bool in) {_virtualME=in;} /** * Whether or not the real emission matrix element is implemented */ void hasRealEmissionME(bool in) {_realME=in;} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe an abstract base class with persistent data. */ static AbstractClassDescription<DecayIntegrator> initDecayIntegrator; /** * Private and non-existent assignment operator. */ DecayIntegrator & operator=(const DecayIntegrator &); private: /** * Number of iterations for th initialization. */ int _niter; /** * Number of points for initialisation */ int _npoint; /** * number of attempts to generate the decay */ int _ntry; /** * List of the decay modes */ mutable vector<DecayPhaseSpaceModePtr> _modes; /** * Whether to include the intermediates whne outputing the results. */ bool _generateinter; /** * Pointer to the object generating the QED radiation in the decay */ DecayRadiationGeneratorPtr _photongen; /** * mode currently being generated */ mutable int _imode; /** * The helicity matrix element for the current decay */ mutable DecayMatrixElement _matrixelement; /** * Whether or not the real photon emission matrix element exists */ bool _realME; /** * Whether or not the one-loop matrix element exists */ bool _virtualME; }; /** * Output information on the DecayIntegrator for debugging purposes */ ostream & operator<<(ostream &, const DecayIntegrator &); /** * Exception for this class and those inheriting from it */ class DecayIntegratorError: public Exception {}; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of DecayIntegrator. */ template <> struct BaseClassTrait<Herwig::DecayIntegrator,1> { /** Typedef of the base class of DecayIntegrator. */ typedef Herwig::HwDecayerBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DecayIntegrator> : public ClassTraitsBase<Herwig::DecayIntegrator> { /** Return the class name. */ static string className() { return "Herwig::DecayIntegrator"; } }; /** @endcond */ } #endif /* HERWIG_DecayIntegrator_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/DecayIntegrator.fh��������������������������������������������������������0000644�0001750�0001750�00000000454�11754474774�021432� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the DecayIntegrator class. // #ifndef HERWIG_DecayIntegrator_FH #define HERWIG_DecayIntegrator_FH namespace Herwig { using namespace ThePEG; class DecayIntegrator; ThePEG_DECLARE_CLASS_POINTERS(DecayIntegrator,DecayIntegratorPtr); } #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/����������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464204�017723� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/SOPHTY.cc�������������������������������������������������������0000644�0001750�0001750�00000006713�11754474774�021302� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SOPHTY.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SOPHTY class. // #include "SOPHTY.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "FFDipole.h" #include "IFDipole.h" using namespace Herwig; void SOPHTY::persistentOutput(PersistentOStream & os) const { os << FFDipole_ << IFDipole_ << colouredOption_; } void SOPHTY::persistentInput(PersistentIStream & is, int) { is >> FFDipole_ >> IFDipole_ >> colouredOption_; } ClassDescription<SOPHTY> SOPHTY::initSOPHTY; // Definition of the static class description member. void SOPHTY::Init() { static ClassDocumentation<SOPHTY> documentation ("The SOPHTY class implements photon radiation in decays", "QED in particle decays was generated using the approach described in " "\\cite{Hamilton:2006xz}.", "\\bibitem{Hamilton:2006xz} K.~Hamilton and P.~Richardson," "JHEP 07 (2006) 010."); static Reference<SOPHTY,FFDipole> interfaceFFDipole ("FFDipole", "The final-final dipole", &SOPHTY::FFDipole_, false, false, true, false, false); static Reference<SOPHTY,IFDipole> interfaceIFDipole ("IFDipole", "_ifdipole", &SOPHTY::IFDipole_, false, false, true, false, false); static Switch<SOPHTY,unsigned int> interfaceColouredTreatment ("ColouredTreatment", "Option for the treatment of QED radiation in decays involving coloured particles.", &SOPHTY::colouredOption_, 0, false, false); static SwitchOption interfaceColouredTreatmentNone (interfaceColouredTreatment, "None", "Generate no QED radiation to avoid problems with the interplay" " of QCD and QED radiation", 0); static SwitchOption interfaceColouredTreatmentRadiation (interfaceColouredTreatment, "Radiation", "Generate radiation from the coloured particles.", 1); } ParticleVector SOPHTY::generatePhotons(const Particle & p,ParticleVector children, tDecayIntegratorPtr decayer) { if ( children.size() != 2 ) return children; // if not generating radiation from coloured particles // return if there are any coloured particles if(colouredOption_==0) { bool coloured = p.dataPtr()->coloured(); for(unsigned int ix=0;ix<children.size();++ix) { coloured |= children[ix]->dataPtr()->coloured(); } if(coloured) return children; } useMe(); // final-final dipole if(p.dataPtr()->iCharge()==0) { if(children[0]->dataPtr()->iCharge()!=0&& children[1]->dataPtr()->iCharge()!=0) return FFDipole_->generatePhotons(p,children,decayer); else return children; } // initial final dipole else { if((children[0]->dataPtr()->iCharge()==0&& children[1]->dataPtr()->iCharge()!=0)|| (children[0]->dataPtr()->iCharge()!=0&& children[1]->dataPtr()->iCharge()==0)) return IFDipole_->generatePhotons(p,children); else return children; } } �����������������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/QEDRadiationHandler.h�������������������������������������������0000644�0001750�0001750�00000011757�11754474774�023664� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // QEDRadiationHandler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_QEDRadiationHandler_H #define HERWIG_QEDRadiationHandler_H // // This is the declaration of the QEDRadiationHandler class. // #include "ThePEG/Handlers/StepHandler.h" #include "DecayRadiationGenerator.fh" #include "QEDRadiationHandler.fh" namespace Herwig { using namespace ThePEG; /** * The QEDRadiationHandler class is designed so that the approach * for the generation of QED radiation in decays can be used to generate * QED radiation from the decay products of \f$s\f$-channel resonances * produced in the hard process where the decay products of the resonance * have been generated as part of the hard process. * * It is designed to be used as a PostSubProcessHandler. * * @see \ref QEDRadiationHandlerInterfaces "The interfaces" * defined for QEDRadiationHandler. */ class QEDRadiationHandler: public StepHandler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ QEDRadiationHandler(); //@} public: /** @name Virtual functions required by the StepHandler class. */ //@{ /** * The main function called by the EventHandler class to * perform a step. Given the current state of an Event, this function * performs the event generation step and includes the result in a new * Step object int the Event record. * @param eh the EventHandler in charge of the Event generation. * @param tagged if not empty these are the only particles which should * be considered by the StepHandler. * @param hint a Hint object with possible information from previously * performed steps. * @throws Veto if the StepHandler requires the current step to be discarded. * @throws Stop if the generation of the current Event should be stopped * after this call. * @throws Exception if something goes wrong. */ virtual void handle(EventHandler & eh, const tPVector & tagged, const Hint & hint); //@} 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<QEDRadiationHandler> initQEDRadiationHandler; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ QEDRadiationHandler & operator=(const QEDRadiationHandler &); private: /** * Pointer to the object responsible for generating the radiation in * the decays */ DecayRadiationGeneratorPtr _generator; /** * List of the PDG codes of the decaying particles which should be considered */ vector<long> _decayingParticles; /** * List of the PDG codes of the decay products which should be considered */ vector<long> _decayProducts; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of QEDRadiationHandler. */ template <> struct BaseClassTrait<Herwig::QEDRadiationHandler,1> { /** Typedef of the first base class of QEDRadiationHandler. */ typedef StepHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the QEDRadiationHandler class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::QEDRadiationHandler> : public ClassTraitsBase<Herwig::QEDRadiationHandler> { /** Return a platform-independent class name */ static string className() { return "Herwig::QEDRadiationHandler"; } }; /** @endcond */ } #endif /* HERWIG_QEDRadiationHandler_H */ �����������������herwig++-2.6.0.orig/Decay/Radiation/FFDipole.fh�����������������������������������������������������0000644�0001750�0001750�00000000441�11754474774�021704� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the FFDipole class. // #ifndef ThePEG_FFDipole_FH #define ThePEG_FFDipole_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; class FFDipole; ThePEG_DECLARE_POINTERS(FFDipole,FFDipolePtr); } #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/Makefile.in�����������������������������������������������������0000644�0001750�0001750�00000053755�11756461676�022021� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Decay/Radiation DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES) HwSOPHTY_la_LIBADD = am_HwSOPHTY_la_OBJECTS = SOPHTY.lo FFDipole.lo IFDipole.lo \ YFSFormFactors.lo HwSOPHTY_la_OBJECTS = $(am_HwSOPHTY_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwSOPHTY_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(HwSOPHTY_la_LDFLAGS) $(LDFLAGS) -o $@ libHwDecRad_la_LIBADD = am_libHwDecRad_la_OBJECTS = DecayRadiationGenerator.lo \ QEDRadiationHandler.lo libHwDecRad_la_OBJECTS = $(am_libHwDecRad_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwSOPHTY_la_SOURCES) $(libHwDecRad_la_SOURCES) DIST_SOURCES = $(HwSOPHTY_la_SOURCES) $(libHwDecRad_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwDecRad.la pkglib_LTLIBRARIES = HwSOPHTY.la libHwDecRad_la_SOURCES = \ DecayRadiationGenerator.cc DecayRadiationGenerator.h \ DecayRadiationGenerator.fh \ QEDRadiationHandler.cc QEDRadiationHandler.fh\ QEDRadiationHandler.h HwSOPHTY_la_SOURCES = \ SOPHTY.h SOPHTY.cc \ FFDipole.cc FFDipole.fh FFDipole.h \ IFDipole.cc IFDipole.fh IFDipole.h \ YFSFormFactors.cc YFSFormFactors.h HwSOPHTY_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Decay/Radiation/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Decay/Radiation/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwSOPHTY.la: $(HwSOPHTY_la_OBJECTS) $(HwSOPHTY_la_DEPENDENCIES) $(EXTRA_HwSOPHTY_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwSOPHTY_la_LINK) -rpath $(pkglibdir) $(HwSOPHTY_la_OBJECTS) $(HwSOPHTY_la_LIBADD) $(LIBS) libHwDecRad.la: $(libHwDecRad_la_OBJECTS) $(libHwDecRad_la_DEPENDENCIES) $(EXTRA_libHwDecRad_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwDecRad_la_OBJECTS) $(libHwDecRad_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DecayRadiationGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IFDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QEDRadiationHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SOPHTY.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/YFSFormFactors.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ clean-pkglibLTLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES \ cscopelist ctags distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: �������������������herwig++-2.6.0.orig/Decay/Radiation/DecayRadiationGenerator.fh��������������������������������������0000644�0001750�0001750�00000000573�11754474774�025011� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the DecayRadiationGenerator class. // #ifndef ThePEG_DecayRadiationGenerator_FH #define ThePEG_DecayRadiationGenerator_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; class DecayRadiationGenerator; ThePEG_DECLARE_POINTERS(DecayRadiationGenerator,DecayRadiationGeneratorPtr); } #endif �������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/YFSFormFactors.h������������������������������������������������0000644�0001750�0001750�00000041034�11754474774�022720� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // YFSFormFactors.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_YFSFormFactors_H #define HERWIG_YFSFormFactors_H // // This is the declaration of the YFSFormFactors class. // #include "ThePEG/Config/ThePEG.h" #include "Herwig++/Utilities/Maths.h" namespace Herwig { using namespace ThePEG; /** * The YFSFormFactors class is a pure static class which implements the various YFS * form factors we need for the decays. */ class YFSFormFactors { public: /** * The value of \f$\alpha\f$ at \f$q^2=0\f$. */ static const double _alpha; private: /** * The default value of the photon mass */ static const Energy _mgamma; /** * The cut-off on the value of \f$t\f$ for the switch to the $t=0$ result */ static const Energy2 _tcut; /** * The cut-off on the energy of a particle for it to be considered in its rest frame */ static const Energy _ecut; public: /** * Exponentials of the YFS form factors */ //@{ /** * The exponential of the YFS form factor for the initial-final dipole * @param beta0 Velocity of the incoming charged particle, \f$\beta_0\f$ * @param beta1 Velocity of the outgoing charged particle, \f$\beta_1\f$. * @param ombeta0 One minus the velocity of the incoming particle, \f$1-\beta_0\f$ * @param ombeta1 One minus the velocity of the outgoing particle, \f$1-\beta_1\f$ * @param en0 The energy of the incoming particle * @param en1 The energy of the outgoing particle * @param m0 The mass of the incoming particle * @param m1 The mass of the outgoing particle * @param t The invariant mass of the charged particles * @param charge The product of the charges of the particles in the dipole * @param emin The minimum photon energy */ static double exponentialYFSIF(double beta0,double ombeta0, double beta1,double ombeta1, Energy en0 ,Energy en1 , Energy m0 ,Energy m1 , Energy2 t ,double charge , Energy emin) { return exp(YFSIF(beta0,ombeta0,beta1,ombeta1,en0,en1,m0,m1,t,charge,emin)); } /** * The exponential of the YFS form factor for the final-final dipole * The \f$2\alpha\tilde{B}\f$ function for the final-final dipole * @param beta1 Velocity of the first charged particle, \f$\beta_1\f$ * @param beta2 Velocity of the second charged particle, \f$\beta_2\f$. * @param ombeta1 One minus the velocity of the first particle, \f$1-\beta_1\f$ * @param ombeta2 One minus the velocity of the second particle, \f$1-\beta_2\f$ * @param en1 The energy of the first particle * @param en2 The energy of the second particle * @param m1 The mass of the first particle * @param m2 The mass of the second particle * @param s The invariant mass of the charged particles * @param charge The product of the charges of the particles in the dipole * @param emin The minimum photon energy */ static double exponentialYFSFF(double beta1, double ombeta1, double beta2, double ombeta2, Energy en1 , Energy en2 , Energy m1 , Energy m2 , Energy2 s , double charge , Energy emin) { return exp(YFSFF(beta1,ombeta1,beta2,ombeta2,en1,en2,m1,m2,s,charge,emin)); } //@} /** * The YFS form factors for the initial-final and final-final dipoles */ //@{ /** * The YFS form factor for the initial-final dipole * @param beta0 Velocity of the incoming charged particle, \f$\beta_0\f$ * @param beta1 Velocity of the outgoing charged particle, \f$\beta_1\f$. * @param ombeta0 One minus the velocity of the incoming particle, \f$1-\beta_0\f$ * @param ombeta1 One minus the velocity of the outgoing particle, \f$1-\beta_1\f$ * @param en0 The energy of the incoming particle * @param en1 The energy of the outgoing particle * @param m0 The mass of the incoming particle * @param m1 The mass of the outgoing particle * @param t The invariant mass of the charged particles * @param charge The product of the charges of the particles in the dipole * @param emin The minimum photon energy */ static double YFSIF(double beta0 ,double ombeta0 , double beta1 ,double ombeta1 , Energy en0 ,Energy en1 , Energy m0 ,Energy m1 , Energy2 t ,double charge , Energy emin) { return BtildeIF(beta0,ombeta0,beta1,ombeta1,en0,en1,m0,m1,t,charge,emin,false) +ReBIF(m0,m1,t,charge,false); } /** * The YFS form factor for the final-final dipole * The \f$2\alpha\tilde{B}\f$ function for the final-final dipole * @param beta1 Velocity of the first charged particle, \f$\beta_1\f$ * @param beta2 Velocity of the second charged particle, \f$\beta_2\f$. * @param ombeta1 One minus the velocity of the first particle, \f$1-\beta_1\f$ * @param ombeta2 One minus the velocity of the second particle, \f$1-\beta_2\f$ * @param en1 The energy of the first particle * @param en2 The energy of the second particle * @param m1 The mass of the first particle * @param m2 The mass of the second particle * @param s The invariant mass of the charged particles * @param charge The product of the charges of the particles in the dipole * @param emin The minimum photon energy */ static double YFSFF(double beta1 ,double ombeta1 , double beta2 ,double ombeta2 , Energy en1 ,Energy en2 , Energy m1 ,Energy m2 , Energy2 s ,double charge , Energy emin) { return BtildeFF(beta1,ombeta1,beta2,ombeta2,en1,en2,m1,m2,s,charge,emin,false) +ReBFF(m1,m2,s,charge,false); } //@} /** * Crude average multiplicities for initial-final and final-final dipoles */ //@{ /** Crude multiplicity for the final-final dipole * @param beta1 Velocity of the first charged particle, \f$\beta_1\f$ * @param beta2 Velocity of the second charged particle, \f$\beta_2\f$. * @param ombeta1 One minus the velocity of the first particle, \f$1-\beta_1\f$ * @param ombeta2 One minus the velocity of the second particle, \f$1-\beta_2\f$ * @param charge The product of the charges of the particles in the dipole * @param Emin The maximum energy for the integral * @param Emax The minimum energy for the integral * @param massterms Whether or not to include the mass terms */ static double nbarFF(double beta1, double ombeta1, double beta2, double ombeta2, double charge, Energy Emax , Energy Emin, bool massterms=false) { if(!massterms) return -_alpha/Constants::pi*charge* ((1.+beta1*beta2)/(beta1+beta2)*(+log((1.+beta1)/ombeta1) +log((1.+beta2)/ombeta2)))*log(Emax/Emin); else return -_alpha/Constants::pi*charge* ((1.+beta1*beta2)/(beta1+beta2)*(+log((1.+beta1)/ombeta1) +log((1.+beta2)/ombeta2))-2.)*log(Emax/Emin); } /** * Crude multiplicity for the initial-final dipole * @param beta Velocity of the outgoing charged particle, \f$\beta\f$ * @param ombeta One minus the velocity of the outgoing charged particle, * \f$1-\beta\f$ * @param charge The product of the charges of the particles in the dipole * @param Emin The maximum energy for the integral * @param Emax The minimum energy for the integral * @param massterms Whether or not to include the mass terms */ //@} static double nbarIF(double beta, double ombeta, double charge, Energy Emax , Energy Emin, bool massterms=false) { if(!massterms) return -_alpha/Constants::pi*charge/beta* log((1.+beta)/ombeta) *log(Emax/Emin); else return -_alpha/Constants::pi*charge/beta*(log((1.+beta)/ombeta)-2.)*log(Emax/Emin); } /** * The virtual piece for the initial-final and final-final dipoles */ //@{ /** * The \f$2\alpha\mathcal{R}B\f$ function for the initial-final dipole * @param m0 The mass of the incoming particle * @param m1 The mass of the outgoing particle * @param t The invariant mass of the charged particles * @param charge The product of the charges of the particles in the dipole * @param includegamma Include the photon mass terms * @param mgamma The photon mass, */ static double ReBIF(Energy m0 ,Energy m1 , Energy2 t , double charge ,bool includegamma=true, Energy mgamma=_mgamma); /** * The \f$2\alpha\mathcal{R}B\f$ function for the final-final dipole * @param m1 The mass of the incoming particle * @param m2 The mass of the outgoing particle * @param s The invariant mass of the charged particles * @param charge The product of the charges of the particles in the dipole * @param includegamma Include the photon mass terms * @param mgamma The photon mass, */ static double ReBFF(Energy m1,Energy m2,Energy2 s,double charge, bool includegamma=true,Energy mgamma=_mgamma); //@} /** * The real emission terms for initial-final and final-final dipoles */ //@{ /** * The \f$2\alpha\tilde{B}\f$ function for the initial-final dipole * @param beta0 Velocity of the incoming charged particle, \f$\beta_0\f$ * @param beta1 Velocity of the outgoing charged particle, \f$\beta_1\f$. * @param ombeta0 One minus the velocity of the incoming particle, \f$1-\beta_0\f$ * @param ombeta1 One minus the velocity of the outgoing particle, \f$1-\beta_1\f$ * @param en0 The energy of the incoming particle * @param en1 The energy of the outgoing particle * @param m0 The mass of the incoming particle * @param m1 The mass of the outgoing particle * @param t The invariant mass of the charged particles * @param charge The product of the charges of the particles in the dipole * @param emin The minimum photon energy * @param includegamma Include the photon mass terms * @param mgamma The photon mass, */ static double BtildeIF(double beta0 ,double ombeta0 , double beta1 ,double ombeta1 , Energy en0 ,Energy en1 , Energy m0 ,Energy m1 , Energy2 t ,double charge , Energy emin ,bool includegamma=true, Energy mgamma=_mgamma); /** * The \f$2\alpha\tilde{B}\f$ function for the final-final dipole * @param beta1 Velocity of the first charged particle, \f$\beta_1\f$ * @param beta2 Velocity of the second charged particle, \f$\beta_2\f$. * @param ombeta1 One minus the velocity of the first particle, \f$1-\beta_1\f$ * @param ombeta2 One minus the velocity of the second particle, \f$1-\beta_2\f$ * @param en1 The energy of the first particle * @param en2 The energy of the second particle * @param m1 The mass of the first particle * @param m2 The mass of the second particle * @param s The invariant mass of the charged particles * @param charge The product of the charges of the particles in the dipole * @param emin The minimum photon energy * @param includegamma Include the photon mass terms * @param mgamma The photon mass, */ static double BtildeFF(double beta1 ,double ombeta1 , double beta2 ,double ombeta2 , Energy en1 ,Energy en2 , Energy m1 ,Energy m2 , Energy2 s ,double charge , Energy emin ,bool includegamma=true, Energy mgamma=_mgamma); //@} /** * Access to the photon mass */ static Energy photonMass() {return _mgamma;} private: /** * Various special cases of the \f$A_4\f$ functions of hep-ph/0302065 for * the initial-final dipole */ //@{ /** * The \f$A_4\f$ function for the full final-final dipole * @param inen1 The energy of the first particle * @param inen2 The energy of the second particle * @param beta1 Velocity of the first particle, \f$\beta_1\f$ * @param beta2 Velocity of the second particle, \f$\beta_2\f$. * @param inm1 The mass of the first particle * @param inm2 The mass of the second particle * @param s The invariant mass of the charged particles */ static InvEnergy2 A4FFFull(Energy inen1 ,Energy inen2, double beta1,double beta2, Energy inm1 ,Energy inm2,Energy2 s ); /** * The \f$A_4\f$ function of hep-ph0302065 using the special cases where * necessary for numerical stability * @param beta0 Velocity of the incoming charged particle, \f$\beta_0\f$ * @param beta1 Velocity of the outgoing charged particle, \f$\beta_1\f$. * @param ombeta0 One minus the velocity of the incoming particle, \f$1-\beta_0\f$ * @param ombeta1 One minus the velocity of the outgoing particle, \f$1-\beta_1\f$ * @param en0 The energy of the incoming particle * @param en1 The energy of the outgoing particle * @param m0 The mass of the incoming particle * @param m1 The mass of the outgoing particle * @param t The invariant mass of the charged particles */ static InvEnergy2 A4IF(double beta0 ,double ombeta0 , double beta1 ,double ombeta1 , Energy en0 ,Energy en1 , Energy m0 ,Energy m1 , Energy2 t); /** * The \f$A_4\f$ function of hep-ph/0302065 for a single particle, without the \f$1/p^2\f$ * pre-factor */ static double A4single(double beta,double ombeta) { if(beta>0.01) return log(ombeta/(1.+beta))/beta; else return -2.-2./3.*sqr(beta)*(1+0.6*sqr(beta)); } /** * The \f$A_4\f$ function of hep-ph/0302065 for the initial-final dipole with \f$t=0\f$ in the * rest frame. * @param m0 The mass of the incoming particle * @param m1 The mass of the outgoing particle */ static InvEnergy2 A4IFRestZero(Energy m0, Energy m1) { Energy2 mdiff(m0*m0-m1*m1); return -2./mdiff*(sqr(log(m0/m1))+Math::ReLi2(mdiff/sqr(m0))); } /** * The \f$A_4\f$ function for the initial-final dipole with \f$t=0\f$. * @param beta0 Velocity of the incoming charged particle, \f$\beta_0\f$ * @param beta1 Velocity of the outgoing charged particle, \f$\beta_1\f$. * @param ombeta1 \f$1-\beta_1\f$ for the outgoing charged particle. * @param en0 The energy of the incoming particle * @param en1 The energy of the outgoing particle * @param m0 The mass of the incoming particle * @param m1 The mass of the outgoing particle */ static InvEnergy2 A4IFZero(double beta0, double beta1, double ombeta1, Energy en0, Energy en1 , Energy m0 , Energy m1); /** * The \f$A_4\f$ function for the initial-final dipole in the rest frame of * the decaying particle * @param m0 The mass of the incoming particle * @param m1 The mass of the outgoing particle * @param beta1 The velocity of the decay product * @param ombeta1 \f$1-\beta\f$ for the decay product * @param E1 The energy of the outgoing particle */ static InvEnergy2 A4IFRest(Energy m0 ,Energy m1, double beta1, double ombeta1, Energy E1); /** * The \f$A_4\f$ function for the full initial-final dipole * @param beta0 Velocity of the incoming charged particle, \f$\beta_0\f$ * @param beta1 Velocity of the outgoing charged particle, \f$\beta_1\f$. * @param en0 The energy of the incoming particle * @param en1 The energy of the outgoing particle * @param m0 The mass of the incoming particle * @param m1 The mass of the outgoing particle * @param t The invariant mass of the charged particles */ static InvEnergy2 A4IFFull(Velocity beta0,Velocity beta1, Energy en0 ,Energy en1 , Energy m0 ,Energy m1 , Energy2 t); //@} /** * Functions from hep-ph/9606429 for the calculation of the \f$A_4\f$ functions */ //@{ /** * The function \f$Z_{ij}(\eta)\f$ from hep-ph/9606429 for the evaluation of the \f$A_4\f$ * function. * @param eta The value of \f$\eta\f$ * @param yi The value of \f$y_i\f$ * @param yj The value of \f$y_j\f$ */ template <typename T> static double Zij(T eta, T yi, T yj) { return 2.*Math::ReLi2((yj-yi)/(eta-yi))+0.5*sqr(log(abs((eta-yi)/(eta-yj)))); } /** * The function \f$X^{ij}_{kl}(\eta)\f$ from hep-ph/9606429 for the evaluation of the \f$A_4\f$ * function. * @param eta The value of \f$\eta\f$ * @param yi The value of \f$y_i\f$ * @param yj The value of \f$y_j\f$ * @param yk The value of \f$y_k\f$ * @param yl The value of \f$y_l\f$ */ template <typename T> static double Xijkl(T eta,T yi, T yj, T yk, T yl) { return log(abs((eta-yi)*(eta-yj)/(eta-yk)/(eta-yl))); } //@} }; } #endif /* HERWIG_YFSFormFactors_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/QEDRadiationHandler.fh������������������������������������������0000644�0001750�0001750�00000000553�11754474774�024022� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the QEDRadiationHandler class. // #ifndef HERWIG_QEDRadiationHandler_FH #define HERWIG_QEDRadiationHandler_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class QEDRadiationHandler; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::QEDRadiationHandler,QEDRadiationHandlerPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/IFDipole.cc�����������������������������������������������������0000644�0001750�0001750�00000063321�11754474774�021705� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IFDipole class. // #include "IFDipole.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" using namespace ThePEG::Helicity; using namespace Herwig; void IFDipole::persistentOutput(PersistentOStream & os) const { os << _alpha << ounit(_emin,GeV) << _maxwgt << _mode << _maxtry << _energyopt << _betaopt; } void IFDipole::persistentInput(PersistentIStream & is, int) { is >> _alpha >> iunit(_emin,GeV) >> _maxwgt >> _mode >> _maxtry >> _energyopt >> _betaopt; } ClassDescription<IFDipole> IFDipole::initIFDipole; // Definition of the static class description member. void IFDipole::Init() { static ClassDocumentation<IFDipole> documentation ("The IFDipole class implements the initial-final dipole for the SOPTHY algorithm"); static Switch<IFDipole,unsigned int> interfaceUnWeight ("UnWeight", "Control the type of unweighting to perform, only one should be used the" " other options are for debugging purposes.", &IFDipole::_mode, 1, false, false); static SwitchOption interfaceUnWeightNoUnweighting (interfaceUnWeight, "NoUnweighting", "Perform no unweighting", 0); static SwitchOption interfaceUnWeightAllWeights (interfaceUnWeight, "AllWeights", "Include all the weights", 1); static SwitchOption interfaceUnWeightNoJacobian (interfaceUnWeight, "NoJacobian", "Only include the dipole and YFS weights", 2); static SwitchOption interfaceUnWeightDipole (interfaceUnWeight, "Dipole", "Only include the dipole weight", 3); static SwitchOption interfaceUnWeightYFS (interfaceUnWeight, "YFS", "Only include the YFS weight", 4); static Parameter<IFDipole,unsigned int> interfaceMaximumTries ("MaximumTries", "Maximum number of attempts to unweight", &IFDipole::_maxtry, 500, 10, 100000, false, false, Interface::limited); static Parameter<IFDipole,Energy> interfaceMinimumEnergyRest ("MinimumEnergyRest", "The minimum energy of the photons in the rest frame of the decaying particle", &IFDipole::_emin, MeV, 1.*MeV, ZERO, 10000.0*MeV, false, false, Interface::limited); static Parameter<IFDipole,double> interfaceMaximumWeight ("MaximumWeight", "The maximum weight for unweighting", &IFDipole::_maxwgt, 2.0, 0.0, 100.0, false, false, Interface::limited); static Switch<IFDipole,unsigned int> interfaceEnergyCutOff ("EnergyCutOff", "The type of cut-off on the photon energy to apply", &IFDipole::_energyopt, 1, false, false); static SwitchOption interfaceEnergyCutOffRestFrame (interfaceEnergyCutOff, "RestFrame", "Apply cut-off in rest frame", 1); static SwitchOption interfaceEnergyCutOff2 (interfaceEnergyCutOff, "LabFrame", "Apply cut-off in lab frame", 2); static Switch<IFDipole,unsigned int> interfaceBetaOption ("BetaOption", "Option for the inclusive of the higher beta coefficients", &IFDipole::_betaopt, 1, false, false); static SwitchOption interfaceBetaOptionNone (interfaceBetaOption, "None", "No higher betas included", 0); static SwitchOption interfaceBetaOptionCollinear (interfaceBetaOption, "Collinear", "Include the collinear approx", 1); static SwitchOption interfaceBetaOptionCollinearVirtA (interfaceBetaOption, "CollinearVirtualA", "Include the collinear approx with virtual corrections", 2); static SwitchOption interfaceBetaOptionCollinearVirtB (interfaceBetaOption, "CollinearVirtualB", "Include the collinear approx with virtual corrections", 3); static SwitchOption interfaceBetaOptionExact (interfaceBetaOption, "Exact", "Include the exact higher order terms if available", 4); } ParticleVector IFDipole::generatePhotons(const Particle & p,ParticleVector children) { // set parameters which won't change in the event loop // masses of the particles _m[0] = p.mass(); _m[1] = children[0]->mass(); _m[2] = children[1]->mass(); // momenta before radiation in lab for(unsigned int ix=0;ix<2;++ix){_qlab[ix]=children[ix]->momentum();} // get the charges of the particles in units of the positron charge // chrg1 is the charge of the parent and chrg2 is the charge of the // charged child. Also we create a map between the arguments of // _q???[X] _m[X] etc so that // _q???[_map[0]] and _m[_map[0]] are the momenta and masses of // the charged child while // _q???[_map[1]] and _m[_map[1]] are the momenta and masses of // the neutral child. _chrg1 = p.dataPtr()->iCharge()/3.0; if(children[1]->dataPtr()->iCharge()/3.0==0.0) { _chrg2 = children[0]->dataPtr()->iCharge()/3.0; _map[0] = 0; _map[1] = 1; } else if(children[0]->dataPtr()->iCharge()/3.0==0.0) { _chrg2 = children[1]->dataPtr()->iCharge()/3.0; _map[0] = 1; _map[1] = 0; } // boost the momenta to the rest frame Boost boostv(p.momentum().boostVector()); // boost the particles to the parent rest frame // and set the initial momenta of the charged particles // in the dipole rest frame: currently this is the same // as the boson rest frame... for(unsigned int ix=0;ix<2;++ix) { // KMH - 08/11/05 - This used to be boostv instead of -boostv // -boostv is the boost from the lab to the parent rest frame // whereas boostv goes the other way!!! children[ix]->deepBoost(-boostv); _qprf[ix]=children[ix]->momentum(); } // perform the unweighting double wgt; unsigned int ntry(0); do { wgt =makePhotons(boostv,children); ++ntry; // Record warnings about large and weird weights in the .log file. if(wgt>_maxwgt||wgt<0.0||isnan(wgt)) { generator()->log() << "IFDipole.cc:\n"; if(wgt>_maxwgt) { generator()->log() << "Weight exceeds maximum for decay!\n"; } if(wgt<0.0) { generator()->log() << "Weight is negative! \n"; } if(isnan(wgt)) { generator()->log() << "Weight is NAN! \n"; wgt = 0.; } generator()->log() << p.PDGName() << " " << children[0]->PDGName() << " " << children[1]->PDGName() << endl << " Current Maximum = " << _maxwgt << endl << " Current Weight = " << wgt << endl; generator()->log() << "Photon Multiplicity : " << _multiplicity << endl << "Original Parent rest frame momenta: " << endl << "charged child: " << ounit(_qprf[_map[0]],GeV) << endl << "neutral child: " << ounit(_qprf[_map[1]],GeV) << endl << "Parent rest frame momenta: " << endl << "charged child: " << ounit(_qnewprf[_map[0]],GeV)<< endl << "neutral child: " << ounit(_qnewprf[_map[1]],GeV)<< endl << "photons : " << ounit(_bigLprf,GeV) << endl << "Weights : " << endl << "_dipolewgt : " << _dipolewgt << endl << "_yfswgt : " << _yfswgt << endl << "_jacobianwgt : " << _jacobianwgt << endl << "_mewgt : " << _mewgt << endl; for(unsigned int ct=0;ct<_multiplicity;ct++) { generator()->log() << "_cosphot[" << ct << "]: " << _cosphot[ct] << endl; generator()->log() << "_sinphot[" << ct << "]: " << _sinphot[ct] << endl; } if(wgt>_maxwgt) { if(wgt<15.0) { generator()->log() << "Resetting maximum weight" << endl << " New Maximum = " << wgt << endl; _maxwgt=wgt; } else { generator()->log() << "Maximum weight set to limit (15)" << endl; _maxwgt=15.0; } } } } while (wgt<(_maxwgt*UseRandom::rnd()) && ntry<_maxtry); if(ntry>=_maxtry) { generator()->log() << "IFDipole Failed to generate QED radiation for the decay " << p.PDGName() << " -> " << children[0]->PDGName() << " " << children[1]->PDGName() << endl; return children; } // produce products after radiation if needed if(_multiplicity>0) { // change the momenta of the children, they are currently // in parent rest frame for(unsigned int ix=0;ix<2;++ix) { LorentzRotation boost(solveBoost(_qnewprf[ix],children[ix]->momentum())); children[ix]->deepTransform(boost); // boost back to the lab // KMH - 08/11/05 - This used to be -boostv instead of boostv // -boostv is the boost from the lab to the parent rest frame // whereas boostv goes the other way!!! children[ix]->deepBoost(boostv); } // add the photons to the event record tcPDPtr photon=getParticleData(ParticleID::gamma); for(unsigned int ix=0;ix<_multiplicity;++ix) { PPtr newphoton=new_ptr(Particle(photon)); newphoton->set5Momentum(_llab[ix]); children.push_back(newphoton); } return children; } // otherwise just return the orginial particles // boosted back to lab else { for(unsigned int ix=0;ix<children.size();++ix) children[ix]->deepBoost(boostv); return children; } } // member which generates the photons double IFDipole::makePhotons(Boost boostv,ParticleVector children) { // set the initial parameters // number of photons (zero) _multiplicity=0; // zero size of photon vectors _lprf.clear(); _llab.clear(); // zero size of angle storage _sinphot.clear(); _cosphot.clear(); // zero total momenta of the photons _bigLprf=Lorentz5Momentum(); // set the initial values of the reweighting factors to one _dipolewgt = 1.0; _yfswgt = 1.0; _jacobianwgt = 1.0; _mewgt = 1.0; // set the maximum photon energy (exact - no approximations here). double boost_factor = 1.0; _emax=(0.5*(_m[0]-sqr(_m[1]+_m[2])/_m[0]))*boost_factor; // calculate the velocities of the children (crude/overvalued) double beta1(sqrt( (_qprf[_map[0]].e()+_m[_map[0]+1]) *(_qprf[_map[0]].e()-_m[_map[0]+1]) ) /_qprf[_map[0]].e()); double beta2(sqrt( (_qprf[_map[1]].e()+_m[_map[1]+1]) *(_qprf[_map[1]].e()-_m[_map[1]+1]) ) /_qprf[_map[1]].e()); // calculate 1-beta to avoid numerical problems double ombeta1(sqr(_m[_map[0]+1]/_qprf[_map[0]].e())/(1.+beta1)); double ombeta2(sqr(_m[_map[1]+1]/_qprf[_map[1]].e())/(1.+beta2)); // calculate the average photon multiplicity double aver(nbar(beta1,ombeta1)); // calculate the number of photons using the poisson _multiplicity = UseRandom::rndPoisson(aver); // calculate the first part of the YFS factor _yfswgt/=crudeYFSFormFactor(beta1,ombeta1); // generate the photon momenta with respect to q1 // keeping track of the weight double dipoles(1.); for(unsigned int ix=0;ix<_multiplicity;++ix) { dipoles *= photon(beta1,ombeta1); } // calculate contributions to the dipole weights so far _dipolewgt /=dipoles; // now do the momentum reshuffling Lorentz5Momentum pmom(ZERO,ZERO,ZERO,_m[0],_m[0]); if(_multiplicity>0) { // total energy and momentum of photons Energy L0(_bigLprf.e()),modL(_bigLprf.rho()); // squared invariant mass of final state fermions... Energy2 m122 = sqr(_m[0]-L0)-sqr(modL); if(m122<sqr(_m[1]+_m[2])) return 0.; // 3-momenta of charged particles Energy modq(_qprf[_map[0]].rho()); // total photon momentum perpendicular to charged child... Energy LT(_bigLprf.perp()); // kallen function... Energy4 kallen = ( m122 - sqr(_m[1]+_m[2]) ) * ( m122 - sqr(_m[1]-_m[2]) ); // discriminant of rho... Energy4 droot = kallen-4.*sqr(_m[_map[0]+1]*LT); if(droot<ZERO) return 0.; double disc = (_m[0]-L0) * sqrt(droot) / (2.*modq*(m122+LT*LT)); // calculate the energy rescaling factor double rho = disc-_bigLprf.z() * (m122+sqr(_m[_map[0]+1])-sqr(_m[_map[1]+1])) / (2.*modq*(m122+LT*LT)); // calculate the rescaled charged child momentum _qnewprf[_map[0]]=rho*_qprf[_map[0]]; _qnewprf[_map[0]].setMass(_m[_map[0]+1]); _qnewprf[_map[0]].rescaleEnergy(); // rotate the photons so in parent rest frame rather // than angle measured w.r.t q1 first work out the rotation SpinOneLorentzRotation rotation; rotation.setRotateZ(-_qprf[_map[0]].phi()); rotation.rotateY(_qprf[_map[0]].theta()); rotation.rotateZ(_qprf[_map[0]].phi()); // rotate the total _bigLprf*=rotation; // rotate the photons for(unsigned int ix=0;ix<_multiplicity;++ix){_lprf[ix]*=rotation;} // calculate the rescaled neutral child momentum _qnewprf[_map[1]]=pmom-_qnewprf[_map[0]]-_bigLprf; _qnewprf[_map[1]].setMass(_m[_map[1]+1]); _qnewprf[_map[1]].rescaleEnergy(); // calculate the new dipole weight // Note this (weight) is Lorentz invariant // calculate velocities and 1-velocites beta1=sqrt( (_qnewprf[_map[0]].e()+_m[_map[0]+1]) *(_qnewprf[_map[0]].e()-_m[_map[0]+1])) /_qnewprf[_map[0]].e(); beta2=sqrt( (_qnewprf[_map[1]].e()+_m[_map[1]+1]) *(_qnewprf[_map[1]].e()-_m[_map[1]+1])) /_qnewprf[_map[1]].e(); ombeta1=sqr(_m[_map[0]+1]/_qnewprf[_map[0]].e())/(1.+beta1); ombeta2=sqr(_m[_map[1]+1]/_qnewprf[_map[1]].e())/(1.+beta2); for(unsigned int ix=0;ix<_multiplicity;++ix) {_dipolewgt*=exactDipoleWeight(beta1,ombeta1,ix);} // calculate the second part of the yfs form factor _yfswgt*=exactYFSFormFactor(beta1,ombeta1,beta2,ombeta2); // Now boost from the parent rest frame to the lab frame SpinOneLorentzRotation boost(boostv); // Boosting charged particles for(unsigned int ix=0;ix<2;++ix){_qnewlab[ix]=boost*_qnewprf[ix];} // Boosting total photon momentum _bigLlab=boost*_bigLprf; // Boosting individual photon momenta for(unsigned int ix=0;ix<_multiplicity;++ix) {_llab.push_back(boost*_lprf[ix]);} // Calculating jacobian weight _jacobianwgt = jacobianWeight(); // Calculating beta^1 weight _mewgt = meWeight(children); // Apply phase space vetos... if(kallen<(4.*sqr(_m[_map[0]+1]*LT))||m122<sqr(_m[1]+_m[2])||rho<0.0) { // generator()->log() << "Outside Phase Space" << endl; // generator()->log() << "Photon Multiplicity: " // << _multiplicity << endl // << "Original Parent rest frame momenta: " << endl // << "charged child: " << _qprf[_map[0]] << endl // << "neutral child: " << _qprf[_map[1]] << endl // << "rescaling : " << rho << endl // << "Parent rest frame momenta: " << endl // << "charged child: " << _qnewprf[_map[0]] << endl // << "neutral child: " << _qnewprf[_map[1]] << endl // << "photons : " << _bigLprf << endl // << endl; _dipolewgt = 0.0 ; _yfswgt = 0.0 ; _jacobianwgt = 0.0 ; _mewgt = 0.0 ; } _qprf[_map[0]].rescaleEnergy(); _qprf[_map[1]].rescaleEnergy(); _qnewprf[_map[0]].rescaleEnergy(); _qnewprf[_map[1]].rescaleEnergy(); if( ((abs(_m[0]-_bigLprf.e()-_qnewprf[0].e()-_qnewprf[1].e())>0.00001*MeV)|| (abs( _bigLprf.x()+_qnewprf[0].x()+_qnewprf[1].x())>0.00001*MeV)|| (abs( _bigLprf.y()+_qnewprf[0].y()+_qnewprf[1].y())>0.00001*MeV)|| (abs( _bigLprf.z()+_qnewprf[0].z()+_qnewprf[1].z())>0.00001*MeV)) &&(_dipolewgt*_jacobianwgt*_yfswgt*_mewgt>0.0)) { Lorentz5Momentum ptotal = _bigLprf+_qnewprf[0]+_qnewprf[1]; ptotal.setE(ptotal.e()-_m[0]); generator()->log() << "Warning! Energy Not Conserved! tol = 0.00001 MeV" << "\nwgt = " << _dipolewgt*_yfswgt*_jacobianwgt*_mewgt << "\nrho = " << rho << "\nmultiplicity = " << _multiplicity << "\n_qprf[_map[0]] = " << _qprf[_map[0]]/GeV << "\n_qprf[_map[1]] = " << _qprf[_map[1]]/GeV << "\n_qnewprf[_map[0]] = " << _qnewprf[_map[0]]/GeV << " " << _qnewprf[_map[0]].m()/GeV << " " << _m[_map[0]+1]/GeV << "\n_qnewprf[_map[1]] = " << _qnewprf[_map[1]]/GeV << " " << _qnewprf[_map[1]].m()/GeV << " " << _m[_map[1]+1]/GeV << "\n_bigLprf = " << _bigLprf/GeV << "\n_bigLprf.m2() = " << _bigLprf.m2()/GeV2 << "\n_total out -in = " << ptotal/GeV << "\nRejecting Event. " << "\n"; _dipolewgt = 0.0 ; _yfswgt = 0.0 ; _jacobianwgt = 0.0 ; _mewgt = 0.0 ; } } // otherwise copy momenta else { for(unsigned int ix=0;ix<2;++ix) { _qnewprf[ix]=_qprf[ix]; _qnewlab[ix]=_qlab[ix]; } _jacobianwgt = 1.0; // calculate the second part of the yfs form factor _yfswgt*=exactYFSFormFactor(beta1,ombeta1,beta2,ombeta2); _dipolewgt = 1.0; } // Virtual corrections for beta_0: // These should be zero for the scalar case as there is no // collinear singularity going by the dipoles above... // Use mass of decaying particle... if(_betaopt==2) { if((children[_map[0]]->dataPtr()->iSpin())==2) { _mewgt += (0.5*_alpha/pi) * log(sqr(_m[0] /_m[_map[0]+1]) ); } } // OR Use invariant mass of final state children... if(_betaopt==3) { if((children[_map[0]]->dataPtr()->iSpin())==2) { _mewgt += (0.5*_alpha/pi) * log((_qnewprf[0]+_qnewprf[1]).m2() /sqr(_m[_map[0]+1]) ); } } // calculate the weight depending on the option double wgt; if(_mode==0){wgt=_maxwgt;} else if(_mode==1){wgt=_mewgt*_jacobianwgt*_yfswgt*_dipolewgt;} else if(_mode==2){wgt=_jacobianwgt*_yfswgt*_dipolewgt;} else if(_mode==3){wgt=_yfswgt*_dipolewgt;} else {wgt=_yfswgt;} return wgt; } double IFDipole::photon(double beta1,double ombeta1) { // generate the azimuthal angle randomly in -pi->+pi double phi(-pi+UseRandom::rnd()*2.*pi); // generate the polar angle double r(UseRandom::rnd()); double costh,sinth,ombc; ombc = pow(1.+beta1,1.-r)*pow(ombeta1,r); costh = 1./beta1*(1.-ombc); sinth = sqrt(ombc*(2.-ombc)-(1.+beta1)*ombeta1*sqr(costh)); // generate the ln(energy) uniformly in ln(_emin)->ln(_emax) Energy energy = pow(_emax/_emin,UseRandom::rnd())*_emin; // calculate the weight (omit the pre and energy factors // which would cancel later anyway) double wgt = 2./ombc; // store the angles _cosphot.push_back(costh); _sinphot.push_back(sinth); // store the four vector for the photon _lprf.push_back(Lorentz5Momentum(energy*sinth*cos(phi),energy*sinth*sin(phi), energy*costh,energy,ZERO)); // add the photon momentum to the total _bigLprf+=_lprf.back(); // return the weight return wgt; } double IFDipole::meWeight(ParticleVector children) { unsigned int spin = children[_map[0]]->dataPtr()->iSpin(); double mewgt = 1.0; double beta1=sqrt( (_qnewprf[_map[0]].e()+_m[_map[0]+1]) *(_qnewprf[_map[0]].e()-_m[_map[0]+1])) /_qnewprf[_map[0]].e(); double ombeta1=sqr(_m[_map[0]+1]/_qnewprf[_map[0]].e())/(1.+beta1); // option which does nothing if(_betaopt==0){mewgt=1.;} // collinear approx else if(_betaopt==1||_betaopt==2||_betaopt==3) { double ombc; InvEnergy2 dipole; for(unsigned int i=0;i<_multiplicity;++i) { double opbc; if(_cosphot[i]<0.0) { opbc=ombeta1+beta1*sqr(_sinphot[i])/(1.-_cosphot[i]); } // if cos is greater than zero use result accurate as cos->-1 else { opbc=1.+beta1*_cosphot[i]; } // if cos is greater than zero use result accurate as cos->1 if(_cosphot[i]>0.0) { ombc=ombeta1+beta1*sqr(_sinphot[i])/(1.+_cosphot[i]); } // if cos is less than zero use result accurate as cos->-1 else { ombc=1.-beta1*_cosphot[i]; } if(((_qnewprf[_map[0]].z()>ZERO)&&(_qprf[_map[0]].z()<ZERO))|| ((_qnewprf[_map[0]].z()<ZERO)&&(_qprf[_map[0]].z()>ZERO))) { dipole = sqr(beta1*_sinphot[i]/(opbc*_lprf[i].e())); } else { dipole = sqr(beta1*_sinphot[i]/(ombc*_lprf[i].e())); } // here "dipole" is the exact dipole function divided by alpha/4pi^2. if(spin==2) { Energy magpi= sqrt( sqr(_qnewprf[_map[0]].x()) + sqr(_qnewprf[_map[0]].y()) + sqr(_qnewprf[_map[0]].z()) ); mewgt += sqr(_lprf[i].e())*_qnewprf[_map[0]].e()*ombc / (sqr(magpi*_sinphot[i])*(_qnewprf[_map[0]].e()+_lprf[i].e())); } else if(spin==3) { Energy2 pik = _qnewprf[_map[0]].e()*_lprf[i].e() - _qnewprf[_map[0]].x()*_lprf[i].x() - _qnewprf[_map[0]].y()*_lprf[i].y() - _qnewprf[_map[0]].z()*_lprf[i].z(); Energy2 pjk = _m[0]*_lprf[i].e(); Energy2 pipj = _m[0]*_qnewprf[_map[0]].e(); mewgt += (2.*pjk*pipj/(pik*sqr(pipj+pjk)) +2.*pjk/(pik*(pipj+pik)) )/dipole; } else { mewgt = 1.0; } } } return mewgt; } double IFDipole::exactYFSFormFactor(double beta1,double ombeta1, double beta2,double ombeta2) { double Y = 0.0 ; double b = beta1 ; double omb = ombeta1; double c = beta2 ; double omc = ombeta2; double arg1 = -omc/(2.*c); double arg2 = -omb*omc/(2.*(b+c)); double arg3 = 2.*b/(1.+b); if(_m[_map[1]+1]!=ZERO) { Y = _chrg1*_chrg2*(_alpha/(2.*pi))*( log(_m[0]*_m[_map[1]+1]/sqr(2.*_emin)) +log(_m[_map[0]+1]*_m[_map[1]+1]/sqr(2.*_emin)) -(1./b )*log((1.+b)/omb)*log(sqr(_m[_map[1]+1]/(2.*_emin))) -(1./b )*log(omb/(1.+b)) -(0.5/b )*sqr(log(omb/(1.+b))) +((b+c )/(b*omc))*log((b+c )/(b*omc)) -((c+b*c)/(b*omc))*log((c+b*c)/(b*omc)) +((b+c )/(b+b*c))*log((b+c )/(b+b*c)) -((c*omb)/(b+b*c))*log((c*omb)/(b+b*c)) +(0.5/b)*( sqr(log( (b+c)/(b*omc)))-sqr(log((c+b*c)/(b*omc))) + sqr(log((c*omb)/(b+b*c)))-sqr(log((b+ c)/(b+b*c))) ) +(2./b )*( real(Math::Li2(arg1)) - real(Math::Li2(arg2)) - real(Math::Li2(arg3)) ) +(1./b )*log((b+c)/(b+b*c))*log((1.+c)/(2.*c)) -(1./b )*log((c*omb)/(b*(1.+c)))*log((1.+b)*(1.+c)/(2.*(b+c))) -(1./b )*log((2.*c/b)*((b+c)/(omc*(1.+c))))*log((b+c)/(c*omb)) ); } else if(_m[_map[1]+1]==ZERO) { Y = _chrg1*_chrg2*(_alpha/(2.*pi))*( log(sqr(_m[0]/(2.*_emin))) +log(sqr(_m[_map[0]+1]/(2.*_emin))) -(1./b )*log((1.+b)/omb) *log((sqr(_m[0])-sqr(_m[_map[0]+1]))/sqr(2.*_emin)) -0.5*log(omb*(1.+b)/sqr(2.*b)) +((1.+b)/(2.*b))*log((1.+b)/(2.*b)) -( omb/(2.*b))*log( omb/(2.*b)) -(1./b )*log((1.-b)/(1.+b)) +1. +(0.5/b)*sqr(log( omb/(2.*b))) -(0.5/b)*sqr(log((1.+b)/(2.*b))) -(0.5/b)*sqr(log((1.-b)/(1.+b))) -(2. /b)*real(Math::Li2(arg3)) ); } return exp(Y); } double IFDipole::jacobianWeight() { // calculate the velocities of the children (crude/overvalued) Energy mag1old = sqrt( (_qprf[_map[0]].e() +_m[_map[0]+1]) *(_qprf[_map[0]].e() -_m[_map[0]+1]) ); Energy mag1new = sqrt( (_qnewprf[_map[0]].e()+_m[_map[0]+1]) *(_qnewprf[_map[0]].e()-_m[_map[0]+1]) ); Energy magL = sqrt( sqr(_bigLprf.x()) + sqr(_bigLprf.y()) + sqr(_bigLprf.z()) ); // 14/12/05 - KMH - This was another mistake. This is supposed to be // the angel between _qnewprf[_map[0]] and _bigLprf instead of // between _qnewprf[0] and _bigLprf. Stupid. Hopefully this weight // is correct now. // double cos1L = (_qnewprf[0].x()*_bigLprf.x() // +_qnewprf[0].y()*_bigLprf.y() // +_qnewprf[0].z()*_bigLprf.z() // ) // /(mag1new*magL); double cos1L = (_qnewprf[_map[0]].x()*_bigLprf.x() +_qnewprf[_map[0]].y()*_bigLprf.y() +_qnewprf[_map[0]].z()*_bigLprf.z() ) /(mag1new*magL); return abs( (_m[0]*sqr(mag1new)/mag1old) / ( mag1new*(_m[0]-_bigLprf.e()) +_qnewprf[_map[0]].e()*magL*cos1L ) ); } LorentzRotation IFDipole::solveBoost(const Lorentz5Momentum & q, const Lorentz5Momentum & p ) const { Energy modp = p.vect().mag(); Energy modq = q.vect().mag(); double betam = (p.e()*modp-q.e()*modq)/(sqr(modq)+sqr(modp)+p.mass2()); Boost beta = -betam*q.vect().unit(); ThreeVector<Energy2> ax = p.vect().cross( q.vect() ); double delta = p.vect().angle( q.vect() ); LorentzRotation R; using Constants::pi; if ( ax.mag2()/GeV2/MeV2 > 1e-16 ) { R.rotate( delta, unitVector(ax) ).boost( beta ); } else { if(p.mass()>ZERO) { R.boost(p.findBoostToCM(),p.e()/p.mass()); R.boost(q.boostVector(),q.e()/q.mass()); } else { if(modp>modq) beta = -betam*p.vect().unit(); R.boost( beta ); } } return R; } void IFDipole::doinit() { Interfaced::doinit(); // get the value fo alpha from the Standard Model object _alpha=generator()->standardModel()->alphaEM(); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/IFDipole.h������������������������������������������������������0000644�0001750�0001750�00000024342�11754474774�021547� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IFDipole_H #define HERWIG_IFDipole_H // // This is the declaration of the IFDipole class. // #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/Utilities/Kinematics.h" #include "Herwig++/Utilities/Maths.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Vectors/Lorentz5Vector.h" #include "ThePEG/Interface/Interfaced.h" #include "IFDipole.fh" namespace Herwig { using namespace ThePEG; using ThePEG::Constants::pi; /** \ingroup Decay * * The IFDipole class generates radiation from a final-final dipole for * the generation of photons in decay by the SOPTHY algorithm. * * @see SOPTHY * @see \ref IFDipoleInterfaces "The interfaces" * defined for IFDipole. */ class IFDipole: public Interfaced { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IFDipole() : _alpha(), _emin(1.0*MeV), _emax(), _multiplicity(), _map(2,0), _m(3), _chrg1(), _chrg2(), _qprf(2), _qnewprf(2), _lprf(), _bigLprf(), _qlab(2), _qnewlab(2), _llab(), _bigLlab(), _dipolewgt(), _yfswgt(), _jacobianwgt(), _mewgt(), _maxwgt(2.0), _mode(1), _maxtry(500), _energyopt(1), _betaopt(1), _dipoleopt() {} //@} public: /** * Member to generate the photons from the dipole * @param p The decaying particle * @param children The decay products * @return The decay products with additional radiation */ virtual ParticleVector generatePhotons(const Particle & p,ParticleVector children); 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} protected: /** * Average crude photon multiplicity * @param beta1 Velocity of the first charged particle, \f$\beta_1\f$. * @param ombeta1 One minus the velocity of the first particle, \f$1-\beta_1\f$. * @return The average photon multiplicity */ double nbar(double beta1,double ombeta1) { return _alpha/pi*_chrg1*_chrg2/beta1* log((1.+beta1)/ombeta1)*log(_emax/_emin); } /** * Generate the momentum of a photon * @param beta1 The velocity, \f$\beta_1\f$, of the first charged particle * @param ombeta1 One minus the velocity, \f$1-\beta_1\f$, of the first * charged particle which is supplied for numerical stability * @return The contribution to the dipole weight */ double photon(double beta1,double ombeta1); /** * Calculate the exact weight for the dipole. * @param beta1 Velocity of the first charged particle, \f$\beta_1\f$ * @param ombeta1 One minus the velocity of the first particle, \f$1-\beta_1\f$ * @param iphot The number of the photon for which the weight is required * @return The weight */ double exactDipoleWeight(double beta1,double ombeta1, unsigned int iphot) { double ombc; // if cos is greater than zero use result accurate as cos->1 if(_cosphot[iphot]>0.0) ombc=ombeta1+beta1*sqr(_sinphot[iphot])/(1.+_cosphot[iphot]); // if cos is less than zero use result accurate as cos->-1 else ombc=1.-beta1*_cosphot[iphot]; return 1.0*sqr(beta1*_sinphot[iphot]/ombc); } /** * The crude YFS form factor for calculating the weight * @param b Velocity of the first charged particle, \f$\beta_1\f$ * @param omb One minus the velocity of the first particle, \f$1-\beta_1\f$ * @return The YFS form factor */ double crudeYFSFormFactor(double b,double omb) { double Y =-_alpha/pi*_chrg1*_chrg2 / b * log((1.+b)/omb) * log(_m[0]/(2.*_emin)); return exp(Y); } /** * The exact YFS form factor for calculating the weight * @param beta1 Velocity of the first charged particle, \f$\beta_1\f$ * @param beta2 Velocity of the second charged particle, \f$\beta_2\f$. * @param ombeta1 One minus the velocity of the first particle, \f$1-\beta_1\f$ * @param ombeta2 One minus the velocity of the second particle, \f$1-\beta_2\f$ * @return The YFS form factor */ double exactYFSFormFactor(double beta1,double ombeta1, double beta2,double ombeta2); /** * Jacobian factor for the weight */ double jacobianWeight(); /** * Matrix element weight */ double meWeight(ParticleVector children); /** * Member which generates the photons * @param boost Boost vector to take the particles produced back from * the decaying particle's rest frame to the lab * @param children The decay products */ double makePhotons(Boost boost,ParticleVector children); /** * Compute a Lorentz transform from p to q * @param p Original momentum * @param q Final momentum */ LorentzRotation solveBoost(const Lorentz5Momentum & q, const Lorentz5Momentum & p ) const; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<IFDipole> initIFDipole; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IFDipole & operator=(const IFDipole &); private: /** * the fine structure constant at $q^2=0$ */ double _alpha; /** * The minimum photon energy */ Energy _emin; /** * The maximum photon energy */ Energy _emax; /** * Photon multiplicity being generated */ unsigned int _multiplicity; /** * Map from arguments of lists such that * _q???[_map[0]] is the charged child and * _q???[_map[1]] is the neutral child. */ vector<int> _map; /** * Masses of the particles involved */ vector<Energy> _m; /** * charge of the parent particle */ double _chrg1; /** * charge of the (charged) child particle */ double _chrg2; /** * Momentum of the particles in the parent's rest frame */ //@{ /** * Momenta of the charged particles in the parent's rest frame before radiation */ vector<Lorentz5Momentum> _qprf; /** * Momenta of the charged particles in the parent's rest frame after radiation */ vector<Lorentz5Momentum> _qnewprf; /** * Momenta of the photons in the parent rest frame */ vector<Lorentz5Momentum> _lprf; /** * Total momentum of the photons in the parent rest frame */ Lorentz5Momentum _bigLprf; //@} /** * Momentum of the particles in the lab frame */ //@{ /** * Momenta of the charged particles in the lab frame before radiation */ vector<Lorentz5Momentum> _qlab; /** * Momenta of the charged particles in the lab frame after radiation */ vector<Lorentz5Momentum> _qnewlab; /** * Momenta of the photons in the lab frame */ vector<Lorentz5Momentum> _llab; /** * Total momentum of the photons in the lab frame */ Lorentz5Momentum _bigLlab; //@} /** * Reweighting factors due to differences between the true and crude * distributions */ //@{ /** * Reweighting factor for the real emission */ double _dipolewgt; /** * Reweighting factor for the YFS form-factor */ double _yfswgt; /** * Reweighting factor due to phase space */ double _jacobianwgt; /** * Reweighting factor due to matrix element corrections */ double _mewgt; /** * Maximum weight */ double _maxwgt; //@} /** * Angles of the photons with respect to the first charged particle * which are stored for numerical accuracy */ //@{ /** * Cosine of the photon angles */ vector<double> _cosphot; /** * Sine of the photon angles */ vector<double> _sinphot; //@} /** * Type of unweighting to perform */ unsigned int _mode; /** * Maximum number of attempts to generate a result */ unsigned int _maxtry; /** * Option for the energy cut-off */ unsigned int _energyopt; /** * Option for the inclusion of higher order corrections */ unsigned int _betaopt; /** * Option for the form of the primary distribution */ unsigned int _dipoleopt; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of IFDipole. */ template <> struct BaseClassTrait<Herwig::IFDipole,1> { /** Typedef of the first base class of IFDipole. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the IFDipole class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::IFDipole> : public ClassTraitsBase<Herwig::IFDipole> { /** Return a platform-independent class name */ static string className() { return "Herwig::IFDipole"; } }; /** @endcond */ } #endif /* HERWIG_IFDipole_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/YFSFormFactors.cc�����������������������������������������������0000644�0001750�0001750�00000023771�11754474774�023066� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // YFSFormFactors.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the YFSFormFactors class. // #include "YFSFormFactors.h" #include "ThePEG/Interface/ClassDocumentation.h" #include <cassert> using namespace Herwig; using Constants::pi; using Herwig::Math::ReLi2; const double YFSFormFactors::_alpha=1./137.03599911; const Energy YFSFormFactors::_mgamma=1e-10*MeV; const Energy2 YFSFormFactors::_tcut=1.e-11*GeV2; const Energy YFSFormFactors::_ecut=1e-6*GeV; double YFSFormFactors::ReBIF(Energy m0 ,Energy m1 , Energy2 t , double charge ,bool includegamma, Energy mgamma) { // mass squared for speed Energy2 m02(m0*m0),m12(m1*m1),nu(0.5*(m02+m12-t)),mprod(m0*m1); double Anu,vfinite; double output; // t>0 if(t>_tcut) { // parameters Energy2 lambda(sqrt((nu-mprod)*(nu+mprod))); double eta(0.5*m12*t/lambda/(lambda+nu-m12)),zeta((lambda+nu)*eta/m12); // simple A functions for virtual piece InvEnergy2 A; if(lambda>1e-6*GeV2){A=(log((lambda+nu)/mprod)/lambda);} else{A=1./mprod;} double A1((m02-m12)/t*log(m0/m1)-2.*sqr(lambda)/t*A-2.); InvEnergy2 A3(A*log(2.*lambda/mprod) +1./lambda* (+0.25*(log((lambda+nu)/m02)+2.*log((lambda-nu+m02)/t ))* log((lambda+nu)/m02) +0.25*(log((lambda+nu)/m12)-2.*log((lambda+nu-m12)/m12))* log((lambda+nu)/m12) +0.5*(log(eta)*log(1.+eta)-log(zeta)*log(1.+zeta)) +ReLi2(-eta)-ReLi2(-zeta))); Anu=nu*A; vfinite=0.5*A1-nu*A3; } // t==0 else { // virtual part of the dipole Anu = (m02+m12)/(m02-m12)*log(m0/m1); vfinite=0.5*(Anu-1.); } if(includegamma){output=-_alpha*charge/pi*((Anu-1.)*log(sqr(mgamma)/mprod)+vfinite);} else {output=-_alpha*charge/pi*((Anu-1.)*log(MeV2/mprod)+vfinite);} // assert(!isnan(output) && !isinf(output)); return output; } double YFSFormFactors::ReBFF(Energy m1,Energy m2,Energy2 s,double charge, bool includegamma,Energy mgamma) { // masses etc Energy2 m12(m1*m1),m22(m2*m2),mu(0.5*(s-m12-m22)),mprod(m1*m2); // parameters double ratio(m1*m2/mu),rho(sqrt((1.-ratio)*(1.+ratio))); Energy2 prod(mu*(1.+rho)); // the finite piece double vfinite(mu*rho/s*log(prod/mprod)+0.5*(m12-m22)/s*log(m1/m2) +1./rho*(pi*pi-0.5*log(prod/m12)*log(prod/m22) -0.5*sqr(log((m12+prod)/(m22+prod))) -ReLi2(2.*mu*rho/(m12+prod)) -ReLi2(2.*mu*rho/(m22+prod)))-1.); // the cut-off piece double Anu(log(prod/mprod)/rho),output; if(includegamma){output=-_alpha*charge/pi*((Anu-1.)*log(sqr(mgamma)/mprod)+vfinite);} else {output=-_alpha*charge/pi*((Anu-1.)*log(MeV2/mprod)+vfinite);} // assert(!isnan(output) && !isinf(output)); return output; } double YFSFormFactors::BtildeIF(double beta0 ,double ombeta0 , double beta1 ,double ombeta1 , Energy en0 ,Energy en1 , Energy m0 ,Energy m1 , Energy2 t ,double charge , Energy emin ,bool includegamma, Energy mgamma) { // coefficient of the divergent piece Energy2 mprod(m0*m1),nu(0.5*(m0*m0+m1*m1-t)); double Anu; if(nu-mprod>1e-12*GeV2) { Energy2 lambda(sqrt((nu-mprod)*(nu+mprod))); Anu=nu/lambda*log((lambda+nu)/mprod); } else {Anu=1.;} // finite piece double rfinite(-0.5*A4single(beta0,ombeta0)-0.5*A4single(beta1,ombeta1) +nu*A4IF(beta0,ombeta0,beta1,ombeta1,en0,en1,m0,m1,t)); // assert(!isnan(rfinite) && !isinf(rfinite)); // return the answer double output; if(includegamma) { output=-_alpha*charge/pi*((Anu-1.)*2.*log(2.*emin/mgamma)+rfinite); } else { output=-_alpha*charge/pi*((Anu-1.)*2.*log(2.*emin/MeV)+rfinite); } // assert(!isnan(output) && !isinf(output)); return output; } double YFSFormFactors::BtildeFF(double beta1 ,double ombeta1 , double beta2 ,double ombeta2 , Energy en1 ,Energy en2 , Energy m1 ,Energy m2 , Energy2 s ,double charge , Energy emin ,bool includegamma, Energy mgamma) { // masses etc Energy2 m12(m1*m1),m22(m2*m2),mu(0.5*(s-m12-m22)),mprod(m1*m2); // parameters double ratio(m1*m2/mu),rho(sqrt((1.-ratio)*(1.+ratio))); Energy2 prod(mu*(1.+rho)); // finite piece double rfinite(-0.5*A4single(beta1,ombeta1)-0.5*A4single(beta2,ombeta2) +mu*A4FFFull(en1,en2,beta1,beta2,m1,m2,s)); double Anu(log(prod/mprod)/rho); // return the answer double output; if(includegamma){output=-_alpha*charge/pi*((Anu-1.)*2.*log(2.*emin/mgamma)+rfinite);} else {output=-_alpha*charge/pi*((Anu-1.)*2.*log(2.*emin/MeV)+rfinite);} // assert(!isnan(output) && !isinf(output)); return output; } InvEnergy2 YFSFormFactors::A4FFFull(Energy inen1 ,Energy inen2, double beta1,double beta2, Energy inm1 ,Energy inm2,Energy2 s ) { Energy en1(inen1),en2(inen2),m1(inm1),m2(inm2); // order the particles so en1>en2 if(inen1*beta1<inen2*beta2) { en1=inen2; en2=inen1; m1=inm2; m2=inm1; } Energy Delta(en1-en2); Energy Omega(en1+en2),delta(m1-m2),omega(m1+m2); Energy2 Q2(s-2.*(m1*m1+m2*m2)); Energy root(sqrt(Delta*Delta+Q2)); Energy eta[2]={sqrt((en2-m2)*(en2+m2)),sqrt((en1-m1)*(en1+m1))+root}; if(0.5*(s-m1*m1-m2*m2)>en1*en2){eta[0]=-eta[0];} Energy2 root2(sqrt((Q2+omega*omega)*(Q2+delta*delta))); double Y[2]; // various limits Energy y[4]; y[0]=0.5*(root-Omega+(omega*delta+root2)/(root+Delta)); y[1]=y[0]-root2/(root+Delta); y[2]=0.5*(root+Omega+(omega*delta+root2)/(root-Delta)); y[3]=y[2]-root2/(root-Delta); // the Y function at both limits for(unsigned int ix=0;ix<2;++ix) {Y[ix]=Zij(eta[ix],y[0],y[3])+Zij(eta[ix],y[1],y[0]) +Zij(eta[ix],y[2],y[1])-Zij(eta[ix],y[2],y[3]) +0.5*Xijkl(eta[ix],y[0],y[1],y[2],y[3])*Xijkl(eta[ix],y[1],y[2],y[0],y[3]);} // the answer // the Z function at both limits double output(0.); if(abs(Delta)>_ecut) { output=log(abs((root-Delta)/(root+Delta)))*(+Xijkl(eta[1],y[0],y[3],y[1],y[2]) -Xijkl(eta[0],y[0],y[3],y[1],y[2])); } return 1./root2*(output+Y[1]-Y[0]); } InvEnergy2 YFSFormFactors::A4IF(double beta0 ,double ombeta0 , double beta1 ,double ombeta1 , Energy en0 ,Energy en1 , Energy m0 ,Energy m1 , Energy2 t) { // this is the general function so pick the special case if(t>_tcut){ // rest frame of decaying particle t!=0 if(abs(en0-m0)<_ecut){return A4IFRest(m0,m1,beta1,ombeta1,en1);} // rest frame of decay product t!=0 else if(abs(en1-m1)<_ecut){return A4IFRest(m1,m0,beta0,ombeta0,en0);} // general frame t!=0 else {return A4IFFull(beta0,beta1,en0,en1,m0,m1,t);} } else { // rest frame of decaying particle t=0 if(abs(en0-m0)<_ecut){return A4IFRestZero(m0,m1);} // rest frame of decay products t=0 else if(abs(en1-m1)<_ecut){return A4IFRestZero(m1,m0);} // general frame t=0 else{return A4IFZero(beta0,beta1,ombeta1,en0,en1,m0,m1);} } } InvEnergy2 YFSFormFactors::A4IFZero(double beta0, double beta1, double ombeta1, Energy en0, Energy en1 , Energy m0 , Energy m1) { Energy Delta = en0-en1; Energy2 mu2 = (m0-m1)*(m0+m1); long double z[2]={ beta1*en1/Delta, beta0*en0/Delta-1. }; long double y[3],xi[3]; y[0]=en1/Delta; y[1]=y[0]-0.5*mu2/sqr(Delta); y[2]=-y[0]+2.*m1*m1/mu2; for(unsigned int ix = 0; ix < 3; ++ix) { if ( ix == 0 ) xi[0] = -ombeta1*y[0] / (z[1] - y[0] ); else xi[ix] = (z[0] - y[ix]) / (z[1] - y[ix]); } long double U[2]; for(unsigned int ix=0;ix<2;++ix) { // U[ix] = 0.5*sqr(log(abs((z[ix]-y[0])*(z[ix]-y[1])/(z[ix]-y[2])))) // +log(abs(z[ix]-y[0]))*log(abs(z[ix]-y[0])/sqr(z[ix]-y[1])) // +2.*ReLi2((y[1]-y[0])/(z[ix]-y[0])) // +2.*ReLi2((y[2]-y[1])/(z[ix]-y[1])); const long double a = ix==0 ? -ombeta1*y[0] : z[ix]-y[0]; const long double b = z[ix]-y[1]; const long double c = z[ix]-y[2]; const long double A = abs(a*b/c); const long double B = abs(a); const long double C = B/sqr(b); const long double D = (y[1]-y[0])/a; const long double E = (y[2]-y[1])/b; U[ix] = 0.5*sqr(log(A)) + log(B)*log(C) + 2.*ReLi2(D) + 2.*ReLi2(E); } return 1./mu2*(log(2.*sqr(Delta)/mu2)*log(abs(xi[1]*xi[2]/xi[0]))+U[1]-U[0]); } InvEnergy2 YFSFormFactors::A4IFRest(Energy m0 ,Energy m1, double beta1, double ombeta1, Energy E1) { Energy Mfact0 = m0-E1*ombeta1; Energy Mfact1 = m0-E1*(1.+beta1); Energy2 Mfact2 = m0*E1*(1.+beta1)-m1*m1; Energy2 Mfact3 = m0*E1*ombeta1-m1*m1; Energy2 qprod(m0*E1*beta1); return 0.5/qprod*(+log(abs(Mfact0/Mfact1))*log(E1*(1.+beta1)/m0) -2.*log(abs(2.*beta1*E1*Mfact0/m0/m1))*log(E1*(1.+beta1)/m1) +2.*ReLi2(E1/m0*ombeta1)-2.*ReLi2(E1/m0*(1.+beta1)) +ReLi2(-0.5*Mfact1/beta1/E1)-ReLi2( 0.5*Mfact0/beta1/E1) +ReLi2( 0.5*Mfact2/qprod )-ReLi2(-0.5*Mfact3/qprod)); } InvEnergy2 YFSFormFactors::A4IFFull(Velocity beta0,Velocity beta1, Energy en0 ,Energy en1 , Energy m0 ,Energy m1 , Energy2 t) { Energy Delta(en0-en1),Omega(en0+en1),delta(m0-m1),omega(m0+m1); Energy T(sqrt(sqr(Delta)-t)),V(Delta+T); Energy2 kappa(sqrt((sqr(omega)-t)*(sqr(delta)-t))); long double y[4]={-0.5/T*(T+Omega-(omega*delta+kappa)*V/t), -0.5/T*(T+Omega-(omega*delta-kappa)*V/t), -0.5/T*(T-Omega+(omega*delta+kappa)/V), -0.5/T*(T-Omega+(omega*delta-kappa)/V)}; long double z[2]={beta1*en1/T,beta0*en0/T-1.}; double Y[2],lfact(log(abs(V*V/t))); for(unsigned int ix=0;ix<2;++ix) { Y[ix] = lfact*Xijkl(z[ix],y[0],y[3],y[1],y[2]) +Zij(z[ix],y[0],y[3]) +Zij(z[ix],y[1],y[0]) +Zij(z[ix],y[2],y[1]) -Zij(z[ix],y[2],y[3]) +0.5*Xijkl(z[ix],y[0],y[1],y[2],y[3])*Xijkl(z[ix],y[1],y[2],y[0],y[3]); } return (Y[1]-Y[0])/kappa; } �������herwig++-2.6.0.orig/Decay/Radiation/FFDipole.h������������������������������������������������������0000644�0001750�0001750�00000027560�11754474774�021551� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFDipole_H #define HERWIG_FFDipole_H // // This is the declaration of the FFDipole class. // #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/Decay/DecayIntegrator.fh" #include "Herwig++/Utilities/Kinematics.h" #include "Herwig++/Utilities/Maths.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Vectors/Lorentz5Vector.h" #include "ThePEG/Interface/Interfaced.h" #include "FFDipole.fh" namespace Herwig { using namespace ThePEG; using ThePEG::Constants::pi; /** \ingroup Decay * * The FFDipole class generates radiation from a final-final dipole for * the generation of photons in decay by the SOPTHY algorithm. * * @see SOPTHY * @see \ref FFDipoleInterfaces "The interfaces" * defined for FFDipole. */ class FFDipole: public Interfaced { public: /** * The default constructor. */ FFDipole() : _emin(1.e-6*MeV), _eminrest(100*MeV), _eminlab(100*MeV), _emax(), _multiplicity(), _m(3), _charge(), _qdrf(2), _qnewdrf(2), _qprf(2), _qnewprf(2), _qlab(2), _qnewlab(2), _dipolewgt(), _yfswgt(), _jacobianwgt(), _mewgt(), _maxwgt(7.0), _mode(1), _maxtry(500), _energyopt(1), _betaopt(4), _dipoleopt(), _nweight(0), _wgtsum(0.), _wgtsq(0.), _weightOutput(false) {} /** * Destructor */ virtual ~FFDipole(); public: /** * Member to generate the photons from the dipole * @param p The decaying particle * @param children The decay products * @param decayer The decayer for this mode * @return The decay products with additional radiation */ virtual ParticleVector generatePhotons(const Particle & p, ParticleVector children, tDecayIntegratorPtr decayer); 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** * Generate the momentum of a photon * @param beta1 The velocity, \f$\beta_1\f$, of the first charged particle * @param ombeta1 One minus the velocity, \f$1-\beta_1\f$, of the first * charged particle which is supplied for numerical stability * @param beta2 The velocity, \f$\beta_2\f$, of the second charged particle * @param ombeta2 One minus the velocity, \f$1-\beta_2\f$, of the * second charged particle which is supplied for numerical stability * @return The contribution to the dipole weight */ double photon(double beta1,double ombeta1, double beta2, double ombeta2); /** * Calculate the exact weight for the dipole. * @param beta1 Velocity of the first charged particle, \f$\beta_1\f$ * @param beta2 Velocity of the second charged particle, \f$\beta_2\f$. * @param ombeta1 One minus the velocity of the first particle, \f$1-\beta_1\f$ * @param ombeta2 One minus the velocity of the second particle, \f$1-\beta_2\f$ * @param iphot The number of the photon for which the weight is required * @return The weight */ double exactDipoleWeight(double beta1,double ombeta1, double beta2,double ombeta2,unsigned int iphot) { double opbc,ombc; // if cos is greater than zero use result accurate as cos->1 if(_cosphot[iphot]>0) { opbc=1.+beta2*_cosphot[iphot]; ombc=ombeta1+beta1*sqr(_sinphot[iphot])/(1.+_cosphot[iphot]); } // if cos is less than zero use result accurate as cos->-1 else { opbc=ombeta2+beta2*sqr(_sinphot[iphot])/(1.-_cosphot[iphot]); ombc=1.-beta1*_cosphot[iphot]; } return 0.5/(opbc*ombc)*(1.+beta1*beta2 -0.5*ombeta1*(1.+beta1)*opbc/ombc -0.5*ombeta2*(1.+beta2)*ombc/opbc); } /** * Jacobian factor for the weight */ double jacobianWeight() { Energy pcm1=Kinematics::pstarTwoBodyDecay(_m[0],_m[1],_m[2]); Energy m12 =sqrt((_qnewdrf[0]+_qnewdrf[1]).m2()) ; Energy pcm2=Kinematics::pstarTwoBodyDecay(m12,_m[1],_m[2]) ; double betaprobeta = pcm2*_m[0]/pcm1/m12 ; double spros = sqr(m12/_m[0]) ; double deltafn = m12/(m12+_bigLdrf.e()); return betaprobeta*spros*deltafn ; } /** * Matrix element weight */ double meWeight(const ParticleVector & children); /** * Member which generates the photons * @param boost Boost vector to take the particles produced back from * the decaying particle's rest frame to the lab * @param children The decay products */ double makePhotons(const Boost & boost, const ParticleVector & children); /** * Boost all the momenta from the dipole rest frame via the parent rest frame * to the lab * @param boost The boost vector from the rest frame to the lab * @return Whether or not it suceeded */ bool boostMomenta(const Boost & boost); /** * Remove any photons which fail the energy cuts * @return Number of photons removed */ unsigned int removePhotons(); /** * The real emission weight in the collinear limit */ double collinearWeight(const ParticleVector & children); /** * The vrtiual correction weight */ double virtualWeight(const ParticleVector & children); protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FFDipole> initFFDipole; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFDipole & operator=(const FFDipole &); private: /** * Debug output **/ void printDebugInfo(const Particle & p, const ParticleVector & children, double wgt) const; private: /** * The minimum photon energy in the boosted frame */ Energy _emin; /** * The minimum photon energy in the rest frame */ Energy _eminrest; /** * The minimum photon energy in the lab frame */ Energy _eminlab; /** * The maximum photon energy */ Energy _emax; /** * Photon multiplicity being generated */ unsigned int _multiplicity; /** * Masses of the particles involved */ vector<Energy> _m; /** * Produce of the particles charges */ double _charge; /** * Momenta of the particles in the dipole rest frame */ //@{ /** * Momenta of the charged particles in the dipole rest frame before radiation */ vector<Lorentz5Momentum> _qdrf; /** * Momenta of the charged particles in the dipole rest frame after radiation */ vector<Lorentz5Momentum> _qnewdrf; /** * Momenta of the photons in the dipole rest frame */ vector<Lorentz5Momentum> _ldrf; /** * Total momentum of the photons in the dipole rest frame */ Lorentz5Momentum _bigLdrf; //@} /** * Momentum of the particles in the parent's rest frame */ //@{ /** * Momenta of the charged particles in the parent's rest frame before radiation */ vector<Lorentz5Momentum> _qprf; /** * Momenta of the charged particles in the parent's rest frame after radiation */ vector<Lorentz5Momentum> _qnewprf; /** * Momenta of the photons in the parent rest frame */ vector<Lorentz5Momentum> _lprf; /** * Total momentum of the photons in the parent rest frame */ Lorentz5Momentum _bigLprf; //@} /** * Momentum of the particles in the lab frame */ //@{ /** * Momenta of the charged particles in the lab frame before radiation */ vector<Lorentz5Momentum> _qlab; /** * Momenta of the charged particles in the lab frame after radiation */ vector<Lorentz5Momentum> _qnewlab; /** * Momenta of the photons in the lab frame */ vector<Lorentz5Momentum> _llab; /** * Total momentum of the photons in the lab frame */ Lorentz5Momentum _bigLlab; //@} /** * Reweighting factors due to differences between the true and crude * distributions */ //@{ /** * Reweighting factor for the real emission */ double _dipolewgt; /** * Reweighting factor for the YFS form-factor */ double _yfswgt; /** * Reweighting factor due to phase space */ double _jacobianwgt; /** * Reweighting factor due to matrix element corrections */ double _mewgt; /** * Maximum weight */ double _maxwgt; //@} /** * Angles of the photons with respect to the first charged particle * which are stored for numerical accuracy */ //@{ /** * Cosine of the photon angles */ vector<double> _cosphot; /** * Sine of the photon angles */ vector<double> _sinphot; //@} /** * Weights for the individual photons */ vector<double> _photonwgt; /** * Whether a given photon passes the energy cut */ vector<bool> _photcut; /** * Type of unweighting to perform */ unsigned int _mode; /** * Maximum number of attempts to generate a result */ unsigned int _maxtry; /** * Option for the energy cut-off */ unsigned int _energyopt; /** * Option for the inclusion of higher order corrections */ unsigned int _betaopt; /** * Option for the form of the primary distribution */ unsigned int _dipoleopt; /** * The decayer */ tDecayIntegratorPtr _decayer; /** * The decaying particle */ tPPtr _parent; /** * Storage of averages etc for testing */ //@{ /** * Number of attempts */ unsigned int _nweight; /** * Sum of weights */ double _wgtsum; /** * Sum of squares of weights */ double _wgtsq; /** * Whether or not to output the averages */ bool _weightOutput; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FFDipole. */ template <> struct BaseClassTrait<Herwig::FFDipole,1> { /** Typedef of the first base class of FFDipole. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the FFDipole class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FFDipole> : public ClassTraitsBase<Herwig::FFDipole> { /** Return a platform-independent class name */ static string className() { return "Herwig::FFDipole"; } /** Return the name of the shared library be loaded to get * access to the DecayRadiationGenerator class and every other class it uses * (except the base class). */ static string library() { return "HwSOPHTY.so"; } }; /** @endcond */ } #endif /* HERWIG_FFDipole_H */ ������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/FFDipole.cc�����������������������������������������������������0000644�0001750�0001750�00000100721�11754474774�021676� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFDipole class. // #include "FFDipole.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Utilities/Debug.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "YFSFormFactors.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/Decay/DecayIntegrator.h" using namespace Herwig; void FFDipole::persistentOutput(PersistentOStream & os) const { os << ounit(_emin,GeV) << ounit(_eminrest,GeV) << ounit(_eminlab,GeV) << _maxwgt << _weightOutput << _mode << _maxtry << _energyopt << _betaopt << _dipoleopt; } void FFDipole::persistentInput(PersistentIStream & is, int) { is >> iunit(_emin,GeV) >> iunit(_eminrest,GeV) >> iunit(_eminlab,GeV) >> _maxwgt >> _weightOutput >> _mode >> _maxtry >> _energyopt >> _betaopt >> _dipoleopt; } FFDipole::~FFDipole() {} ClassDescription<FFDipole> FFDipole::initFFDipole; // Definition of the static class description member. void FFDipole::Init() { static ClassDocumentation<FFDipole> documentation ("The FFDipole class implements the final-final dipole for the SOPTHY algorithm"); static Switch<FFDipole,unsigned int> interfaceUnWeight ("UnWeight", "Control the type of unweighting to perform, only one should be used the" " other options are for debugging purposes.", &FFDipole::_mode, 1, false, false); static SwitchOption interfaceUnWeightNoUnweighting (interfaceUnWeight, "NoUnweighting", "Perform no unweighting", 0); static SwitchOption interfaceUnWeightAllWeights (interfaceUnWeight, "AllWeights", "Include all the weights", 1); static SwitchOption interfaceUnWeightNoJacobian (interfaceUnWeight, "NoJacobian", "Only include the dipole and YFS weights", 2); static SwitchOption interfaceUnWeightDipole (interfaceUnWeight, "Dipole", "Only include the dipole weight", 3); static SwitchOption interfaceUnWeightYFS (interfaceUnWeight, "YFS", "Only include the YFS weight", 4); static SwitchOption interfaceUnWeightNLO (interfaceUnWeight, "NLO", "Weight to get the stict NLO rate", 5); static Parameter<FFDipole,unsigned int> interfaceMaximumTries ("MaximumTries", "Maximum number of attempts to unweight", &FFDipole::_maxtry, 500, 10, 100000, false, false, Interface::limited); static Parameter<FFDipole,Energy> interfaceMinimumEnergyBoosted ("MinimumEnergyBoosted", "The minimum energy of the photons in the boosted frame in which" " they are generated.", &FFDipole::_emin, MeV, 1.e-6*MeV, ZERO, 100.0*MeV, false, false, Interface::limited); static Parameter<FFDipole,Energy> interfaceMinimumEnergyRest ("MinimumEnergyRest", "The minimum energy of the photons in the rest frame of the decaying particle", &FFDipole::_eminrest, MeV, 100.0*MeV, 1.0*MeV, 10000.0*MeV, false, false, Interface::limited); static Parameter<FFDipole,Energy> interfaceMinimumEnergyLab ("MinimumEnergyLab", "The minimum energy of the photons in the lab frame", &FFDipole::_eminlab, MeV, 100.0*MeV, 1.0*MeV, 10000.0*MeV, false, false, Interface::limited); static Parameter<FFDipole,double> interfaceMaximumWeight ("MaximumWeight", "The maximum weight for unweighting", &FFDipole::_maxwgt, 7.0, 0.0, 100.0, false, false, Interface::limited); static Switch<FFDipole,unsigned int> interfaceEnergyCutOff ("EnergyCutOff", "The type of cut-off on the photon energy to apply", &FFDipole::_energyopt, 1, false, false); static SwitchOption interfaceEnergyCutOffBoostedFrame (interfaceEnergyCutOff, "BoostedFrame", "Only apply cut-off in boosted frame", 0); static SwitchOption interfaceEnergyCutOffRestFrame (interfaceEnergyCutOff, "RestFrame", "Apply cut-off in rest frame", 1); static SwitchOption interfaceEnergyCutOff2 (interfaceEnergyCutOff, "LabFrame", "Apply cut-off in lab frame", 2); static Switch<FFDipole,unsigned int> interfaceBetaOption ("BetaOption", "Option for the inclusive of the higher beta coefficients", &FFDipole::_betaopt, 4, false, false); static SwitchOption interfaceBetaOptionNone (interfaceBetaOption, "None", "No higher betas included", 0); static SwitchOption interfaceBetaOptionCollinear (interfaceBetaOption, "Collinear", "Include the collinear approx", 1); static SwitchOption interfaceBetaOptionCollinearVirtA (interfaceBetaOption, "CollinearVirtualA", "Include the collinear approx with virtual corrections", 2); static SwitchOption interfaceBetaOptionCollinearVirtB (interfaceBetaOption, "CollinearVirtualB", "Include the collinear approx with virtual corrections", 3); static SwitchOption interfaceBetaOptionExact (interfaceBetaOption, "Exact", "Include the exact higher order terms if available", 4); static Switch<FFDipole,unsigned int> interfaceDipoleOption ("DipoleOption", "Option for generating the primary dipole distribution", &FFDipole::_dipoleopt, 0, false, false); static SwitchOption interfaceDipoleOptionNoMass (interfaceDipoleOption, "NoMass", "Don't include the mass terms in the primary distribution", 0); static SwitchOption interfaceDipoleOptionMass (interfaceDipoleOption, "Mass", "Include the mass terms in the primary distribution", 1); static Switch<FFDipole,bool> interfaceWeightOutput ("WeightOutput", "Whether or not to output the average weight for testing", &FFDipole::_weightOutput, false, false, false); static SwitchOption interfaceWeightOutputNo (interfaceWeightOutput, "No", "Don't output the average", false); static SwitchOption interfaceWeightOutputYes (interfaceWeightOutput, "Yes", "Output the average", true); } void FFDipole::printDebugInfo(const Particle & p, const ParticleVector & children, double wgt) const { generator()->log() << "Input masses " << p.mass()/GeV << " -> " << children[0]->mass()/GeV << " " << children[1]->mass()/GeV << '\n'; generator()->log() << "Momenta\n"; generator()->log() << "parent " << p.momentum()/GeV << '\n'; for(unsigned int ix=0;ix<2;++ix) generator()->log() << "charged " << ix << " " << _qnewlab[ix]/GeV << " " << children[ix]->momentum()/GeV << '\n'; for(unsigned int ix=0;ix<_multiplicity;++ix) { generator()->log() << "photons " << ix << " " << "phocut " << _photcut[ix] << ' ' << _llab[ix]/GeV << '\n'; } generator()->log() << "wgt : " << wgt << '\n'; generator()->log() << "_mewgt : " << _mewgt << '\n'; generator()->log() << "_jacobianwgt: " << _jacobianwgt << '\n'; generator()->log() << "_yfswgt : " << _yfswgt << '\n'; generator()->log() << "_dipolewgt : " << _dipolewgt << '\n'; generator()->log() << "dipoleopt : " << _dipoleopt << '\n'; } ParticleVector FFDipole::generatePhotons(const Particle & p, ParticleVector children, tDecayIntegratorPtr decayer) { _parent = const_ptr_cast<tPPtr>(&p); // set the decayer _decayer=decayer; // set parameters which won't change in the event loop // masses of the particles _m[0] = p.mass(); _m[1] = children[0]->mass(); _m[2] = children[1]->mass(); // set the maximum photon energy (exact - no approximations here). _emax=(0.5*(_m[0]-sqr(_m[1]+_m[2])/_m[0]))*_m[0]/(_m[1]+_m[2]); // momenta before radiation in lab for(unsigned int ix=0;ix<2;++ix) _qlab[ix]=children[ix]->momentum(); // get the charges of the particles in units of the positron charge _charge=children[0]->dataPtr()->iCharge()*children[1]->dataPtr()->iCharge()/9.; // boost the momenta to the rest frame Boost boostv(-p.momentum().boostVector()); // boost the particles to the parent rest frame // and set the initial momenta of the charged particles // in the dipole rest frame: currently this is the same // as the boson rest frame... for(unsigned int ix=0;ix<2;++ix) { children[ix]->deepBoost(boostv); _qdrf[ix]=children[ix]->momentum(); _qprf[ix]=children[ix]->momentum(); } _parent->boost(boostv); // perform the unweighting double wgt; unsigned int ntry(0); do { ++ntry; wgt = makePhotons(-boostv,children); // Error checks if ( isnan(wgt) ) { generator()->log() << "Infinite weight for decay " << p.PDGName() << " " << children[0]->PDGName() << " " << children[1]->PDGName() << '\n'; wgt = 0.0; } else if ( wgt < 0.0 && _mode != 5 ) { generator()->log() << "Negative weight for decay " << p.PDGName() << " " << children[0]->PDGName() << " " << children[1]->PDGName() << "in FFDipole: Weight = " << wgt << '\n'; if ( Debug::level ) printDebugInfo(p,children,wgt); } else if ( wgt > _maxwgt ) { generator()->log() << "Weight "<< wgt<<" exceeds maximum for decay " << p.PDGName() << ' ' << children[0]->PDGName() << " " << children[1]->PDGName() << " in FFDipole:\nresetting maximum weight.\n" << "Old Maximum = " << _maxwgt; _maxwgt = min(1.1 * wgt, 10.0); generator()->log() << " New Maximum = " << wgt << '\n'; if ( Debug::level && _mode!=5 ) printDebugInfo(p,children,wgt); } // End of error checks _wgtsum += wgt; _wgtsq += sqr(wgt); ++_nweight; } while ( wgt<(_maxwgt*UseRandom::rnd()) && ntry<_maxtry ); if(ntry>=_maxtry) { generator()->log() << "FFDipole failed to generate QED radiation for the decay " << p.PDGName() << " -> " << children[0]->PDGName() << " " << children[1]->PDGName() << '\n'; _parent->boost(-boostv); for(unsigned int ix=0;ix<2;++ix) children[ix]->deepBoost(-boostv); return children; } // produce products after radiation if needed if(_multiplicity>0) { // change the momenta of the children, they are currently // in original rest frame for(unsigned int ix=0;ix<2;++ix) { // unit vector along direction Boost br = children[ix]->momentum().vect().unit(); // calculate the boost vector using expression accurate for beta->1 double beta(sqrt((_qdrf[ix].e()+_m[ix+1])*(_qdrf[ix].e()-_m[ix+1]))/ _qdrf[ix].e()); double ombeta(sqr(_m[ix+1]/_qdrf[ix].e())/(1.+beta)); double betap(sqrt((_qnewdrf[ix].e()+_m[ix+1])*(_qnewdrf[ix].e()-_m[ix+1])) /_qnewdrf[ix].e()); double ombetap(sqr(_m[ix+1]/_qnewdrf[ix].e())/(1.+betap)); // boost to get correct momentum in dipole rest frame double bv = -(ombetap-ombeta)/(beta*ombetap + ombeta); br *= bv; children[ix]->deepBoost(br); // boost to the parent rest frame Lorentz5Momentum pnew(_bigLdrf); pnew.setMass(_m[0]); pnew.rescaleEnergy(); br = pnew.findBoostToCM(); children[ix]->deepBoost(br); // boost back to the lab children[ix]->deepBoost(-boostv); } // add the photons to the event record tcPDPtr photon=getParticleData(ParticleID::gamma); for(unsigned int ix=0;ix<_multiplicity;++ix) { // add if not removed because energy too low if(!_photcut[ix]) { PPtr newphoton=new_ptr(Particle(photon)); newphoton->set5Momentum(_llab[ix]); children.push_back(newphoton); } } _parent->boost(-boostv); //printDebugInfo(p, children, wgt); return children; } // otherwise just return the original particles else { for(unsigned int ix=0;ix<2;++ix) children[ix]->deepBoost(-boostv); _parent->boost(-boostv); return children; } } // member which generates the photons double FFDipole::makePhotons(const Boost & boostv, const ParticleVector & children) { // set the initial parameters // number of photons (zero) _multiplicity=0; // zero size of photon vectors _ldrf.clear(); _lprf.clear(); _llab.clear(); // zero size of angle storage _sinphot.clear(); _cosphot.clear(); _photcut.clear(); _photonwgt.clear(); // zero total momenta of the photons _bigLdrf=Lorentz5Momentum(); _bigLprf=Lorentz5Momentum(); // set the initial values of the reweighting factors to one _dipolewgt = 1.0; _yfswgt = 1.0; _jacobianwgt = 1.0; _mewgt = 1.0; // calculate the velocities of the charged particles (crude/overvalued) double beta1(sqrt((_qdrf[0].e()+_m[1])*(_qdrf[0].e()-_m[1]))/_qdrf[0].e()); double beta2(sqrt((_qdrf[1].e()+_m[2])*(_qdrf[1].e()-_m[2]))/_qdrf[1].e()); // calculate 1-beta to avoid numerical problems double ombeta1(sqr(_m[1]/_qdrf[0].e())/(1.+beta1)); double ombeta2(sqr(_m[2]/_qdrf[1].e())/(1.+beta2)); // calculate the average photon multiplicity double aver(YFSFormFactors::nbarFF(beta1,ombeta1,beta2,ombeta2,_charge, _emax,_emin,_dipoleopt==1)); // calculate the number of photons using the poisson _multiplicity = _mode !=5 ? UseRandom::rndPoisson(aver) : 1; // calculate the first part of the YFS factor // (N.B. crude form factor is just exp(-aver) to get a poisson) _yfswgt *= exp(aver); // if photons produced if(_multiplicity>0) { _photonwgt.resize(_multiplicity); // generate the photon momenta with respect to q1 // keeping track of the weight for(unsigned int ix=0;ix<_multiplicity;++ix) _photonwgt[ix] = photon(beta1,ombeta1,beta2,ombeta2); // rotate the photons so in dipole rest frame rather // than angle measured w.r.t q1 first work out the rotation SpinOneLorentzRotation rotation; rotation.setRotateZ(-_qdrf[0].phi()); rotation.rotateY(_qdrf[0].theta()); rotation.rotateZ(_qdrf[0].phi()); // rotate the total _bigLdrf *= rotation; // rotate the photons for(unsigned int ix=0;ix<_multiplicity;++ix) _ldrf[ix]*=rotation; // boost the momenta without any removal of low energy photons // resize arrays _photcut.resize(_multiplicity,false); _lprf.resize(_multiplicity); _llab.resize(_multiplicity); // perform the boost if(!boostMomenta(boostv)){return 0.;} // apply the cut on the photon energy if needed unsigned int nremoved(removePhotons()); // redo the boost if we have removed photons if(nremoved!=0){if(!boostMomenta(boostv)){return 0.;}} // form factor part of the removal term to remove existing cut if(_energyopt!=0) _dipolewgt *= YFSFormFactors::exponentialYFSFF(beta1,ombeta1,beta2,ombeta2, _qdrf[0].e(),_qdrf[1].e(), _m[1],_m[2],_m[0]*_m[0], _charge,_emin); // calculate the new dipole weight // calculate velocities and 1-velocites beta1=sqrt((_qnewdrf[0].e()+_m[1])*(_qnewdrf[0].e()-_m[1]))/_qnewdrf[0].e(); beta2=sqrt((_qnewdrf[1].e()+_m[2])*(_qnewdrf[1].e()-_m[2]))/_qnewdrf[1].e(); ombeta1=sqr(_m[1]/_qnewdrf[0].e())/(1.+beta1); ombeta2=sqr(_m[2]/_qnewdrf[1].e())/(1.+beta2); for(unsigned int ix=0;ix<_multiplicity;++ix) { if(!_photcut[ix]) _dipolewgt *= exactDipoleWeight(beta1,ombeta1,beta2,ombeta2,ix)/ _photonwgt[ix]; } // calculate the weight for the photon removal Energy2 s((_qnewdrf[0]+_qnewdrf[1]).m2()); // calculate the second part of the yfs form factor // this is different for the different photon removal options // option with no removal if(_energyopt==0) { _yfswgt *= YFSFormFactors::exponentialYFSFF(beta1,ombeta1,beta2,ombeta2, _qnewdrf[0].e(),_qnewdrf[1].e(), _m[1],_m[2],s,_charge,_emin); } // weight for option with cut in the rest frame else if(_energyopt==1) { // yfs piece double nbeta1(sqrt( (_qnewprf[0].e()+_m[1])*(_qnewprf[0].e()-_m[1])) /_qnewprf[0].e()); double nbeta2(sqrt( (_qnewprf[1].e()+_m[2])*(_qnewprf[1].e()-_m[2])) /_qnewprf[1].e()); double nomb1 (sqr(_m[1]/_qnewprf[0].e())/(1.+nbeta1)); double nomb2 (sqr(_m[2]/_qnewprf[1].e())/(1.+nbeta2)); _yfswgt *= YFSFormFactors::exponentialYFSFF(nbeta1,nomb1,nbeta2,nomb2, _qnewprf[0].e(),_qnewprf[1].e(), _m[1],_m[2],s,_charge,_eminrest); // dipole piece // Find the momenta of the particles of original particles in new rest frame Lorentz5Momentum pnew(_bigLdrf.x(),_bigLdrf.y(), _bigLdrf.z(),_bigLdrf.e(),_m[0]); pnew.rescaleEnergy(); SpinOneLorentzRotation boost(pnew.findBoostToCM()); Lorentz5Momentum q1=boost*_qdrf[0]; Lorentz5Momentum q2=boost*_qdrf[1]; // use this to calculate the form factor nbeta1=sqrt( (q1.e()+_m[1])*(q1.e()-_m[1]))/q1.e(); nbeta2=sqrt( (q2.e()+_m[2])*(q2.e()-_m[2]))/q2.e(); nomb1 =sqr(_m[1]/q1.e())/(1.+nbeta1); nomb2 =sqr(_m[2]/q2.e())/(1.+nbeta2); _dipolewgt /=YFSFormFactors::exponentialYFSFF(nbeta1,nomb1,nbeta2,nomb2, q1.e(),q2.e(), _m[1],_m[2],_m[0]*_m[0], _charge,_eminrest); } // weight for option with cut in the rest frame else if(_energyopt==2) { // yfs piece double nbeta1(sqrt( (_qnewlab[0].e()+_m[1])*(_qnewlab[0].e()-_m[1])) /_qnewlab[0].e()); double nbeta2(sqrt( (_qnewlab[1].e()+_m[2])*(_qnewlab[1].e()-_m[2])) /_qnewlab[1].e()); double nomb1 (sqr(_m[1]/_qnewlab[0].e())/(1.+nbeta1)); double nomb2 (sqr(_m[2]/_qnewlab[1].e())/(1.+nbeta2)); _yfswgt *= YFSFormFactors::exponentialYFSFF(nbeta1,nomb1,nbeta2,nomb2, _qnewlab[0].e(),_qnewlab[1].e(), _m[1],_m[2],s,_charge,_eminlab); // dipole piece // Find the momenta of the particles of original particles in new rest frame Lorentz5Momentum pnew(_bigLdrf.x(),_bigLdrf.y(), _bigLdrf.z(),_bigLdrf.e(),_m[0]); pnew.rescaleEnergy(); SpinOneLorentzRotation boost(pnew.findBoostToCM()); Lorentz5Momentum q1=boost*_qdrf[0]; Lorentz5Momentum q2=boost*_qdrf[1]; // then boost to the lab boost.setBoost(boostv); q1 *=boost; q2 *=boost; // use this to calculate the form factor nbeta1=sqrt( (q1.e()+_m[1])*(q1.e()-_m[1])) /q1.e(); nbeta2=sqrt( (q2.e()+_m[2])*(q2.e()-_m[2])) /q2.e(); nomb1 =sqr(_m[1]/q1.e())/(1.+nbeta1); nomb2 =sqr(_m[2]/q2.e())/(1.+nbeta2); _dipolewgt /=YFSFormFactors::exponentialYFSFF(nbeta1,nomb1,nbeta2,nomb2, q1.e(),q2.e(),_m[1],_m[2], _m[0]*_m[0],_charge,_eminlab); } // Calculating jacobian weight _jacobianwgt = jacobianWeight(); // Calculate the weight for the corrections _mewgt = meWeight(children); } // otherwise copy momenta else { for(unsigned int ix=0;ix<2;++ix) { _qnewdrf[ix]=_qdrf[ix]; _qnewprf[ix]=_qprf[ix]; _qnewlab[ix]=_qlab[ix]; } _jacobianwgt = 1.0; _yfswgt*=YFSFormFactors::exponentialYFSFF(beta1,ombeta1,beta2,ombeta2, _qdrf[0].e(),_qdrf[1].e(), _m[1],_m[2],_m[0]*_m[0], _charge,_emin); _dipolewgt = 1.0; } double wgt; if(_mode!=5) { // virtual corrections _mewgt += virtualWeight(children); // calculate the weight depending on the option if(_mode==0) wgt = _maxwgt; else if(_mode==1) wgt = _mewgt*_yfswgt*_jacobianwgt*_dipolewgt; else if(_mode==2) wgt = _jacobianwgt*_yfswgt*_dipolewgt; else if(_mode==3) wgt = _yfswgt*_dipolewgt; else wgt = _yfswgt; } // special to test NLO results else { double beta1 = sqrt((_qdrf[0].e()+_m[1])*(_qdrf[0].e()-_m[1]))/_qdrf[0].e(); double beta2 = sqrt((_qdrf[1].e()+_m[2])*(_qdrf[1].e()-_m[2]))/_qdrf[1].e(); double ombeta1 = sqr(_m[1]/_qdrf[0].e())/(1.+beta1); double ombeta2 = sqr(_m[2]/_qdrf[1].e())/(1.+beta2); double yfs = YFSFormFactors::YFSFF(beta1,ombeta1,beta2,ombeta2, _qdrf[0].e(),_qdrf[1].e(), _m[1],_m[2],_m[0]*_m[0], _charge,_emin); double nbar = YFSFormFactors::nbarFF(beta1,ombeta1,beta2,ombeta2,_charge, _emax,_emin,_dipoleopt==1); wgt = 1.+virtualWeight(children)+yfs+nbar*_dipolewgt*_mewgt*_jacobianwgt; } return wgt; } double FFDipole::photon(double beta1,double ombeta1, double beta2,double ombeta2) { // generate the polar angle double r1,r2,costh,sinth,opbc,ombc; // relative weights for the two terms double Pp(log((1+beta2)/ombeta2)); double Pm(log((1+beta1)/ombeta1)); Pp/=(Pp+Pm); // generate the angle double wgt=1.; do { r1=UseRandom::rnd(); r2=UseRandom::rnd(); // 1/(1+bc) branch if(r1<=Pp) { opbc = pow(1.+beta2,r2)*pow(ombeta2,1.-r2); costh = -1./beta2*(1.-opbc); ombc = 1.-beta1*costh; sinth = sqrt(opbc*(2.-opbc)-(1.+beta2)*ombeta2*sqr(costh)); } // 1/(1-bc) branch else { ombc = pow(1.+beta1,1.-r2)*pow(ombeta1,r2); costh = 1./beta1*(1.-ombc); opbc = 1.+beta2*costh; sinth = sqrt(ombc*(2.-ombc)-(1.+beta1)*ombeta1*sqr(costh)); } // wgt for rejection if(_dipoleopt==1) wgt = 1.-0.5/(1.+beta1*beta2)*(ombeta1*(1.+beta1)*opbc/ombc+ ombeta2*(1.+beta2)*ombc/opbc); } while(UseRandom::rnd()>wgt); // generate the polar angle randomly in -pi->+pi double phi(-pi+UseRandom::rnd()*2.*pi); // generate the ln(energy) uniformly in ln(_emin)->ln(_emax) Energy en(pow(_emax/_emin,UseRandom::rnd())*_emin); // calculate the weight (omit the pre and energy factors // which would cancel later anyway) if(_dipoleopt==0) wgt = 0.5*(1.+beta1*beta2)/opbc/ombc; else wgt = 0.25*(2.*(1.+beta1*beta2)/opbc/ombc -ombeta1*(1.+beta1)/sqr(ombc) -ombeta2*(1.+beta2)/sqr(opbc)); // store the angles _cosphot.push_back(costh); _sinphot.push_back(sinth); // store the four vector for the photon _ldrf.push_back(Lorentz5Momentum(en*sinth*cos(phi), en*sinth*sin(phi), en*costh,en, ZERO)); // add the photon momentum to the total _bigLdrf+=_ldrf.back(); // return the weight return wgt; } double FFDipole::meWeight(const ParticleVector & children) { if(_multiplicity==0) return 1.; // option which does nothing if(_betaopt==0) { return 1.; } // collinear approx else if(_betaopt <= 3) { return collinearWeight(children); } else if (_betaopt == 4 ) { if(_decayer&&_decayer->hasRealEmissionME()) { double outwgt=1.; // values of beta etc to evaluate the dipole double beta1(sqrt( (_qnewdrf[0].e()+_m[1])*(_qnewdrf[0].e()-_m[1]))/ _qnewdrf[0].e()); double beta2(sqrt( (_qnewdrf[1].e()+_m[2])*(_qnewdrf[1].e()-_m[2]))/ _qnewdrf[1].e()); double ombeta1(sqr(_m[1]/_qnewdrf[0].e())/(1.+beta1)); double ombeta2(sqr(_m[2]/_qnewdrf[1].e())/(1.+beta2)); // storage of the weights ParticleVector ptemp; for(unsigned int ix=0;ix<children.size();++ix) ptemp.push_back(new_ptr(Particle(children[ix]->dataPtr()))); ptemp.push_back(new_ptr(Particle(getParticleData(ParticleID::gamma)))); for(unsigned int i=0;i<_multiplicity;++i) { PPtr new_parent = new_ptr(Particle(*_parent)); if(_photcut[i]) continue; // compute the angle terms // if cos is greater than zero use result accurate as cos->1 double opbc,ombc; if(_cosphot[i]>0) { opbc=1.+beta2*_cosphot[i]; ombc=ombeta1+beta1*sqr(_sinphot[i])/(1.+_cosphot[i]); } // if cos is less than zero use result accurate as cos->-1 else { opbc=ombeta2+beta2*sqr(_sinphot[i])/(1.-_cosphot[i]); ombc=1.-beta1*_cosphot[i]; } // dipole factor for denominator double dipole = 2./opbc/ombc*(1.+beta1*beta2 -0.5*ombeta1*(1.+beta1)*opbc/ombc -0.5*ombeta2*(1.+beta2)*ombc/opbc); // energy and momentum of the photon Energy L0(_ldrf[i].e()),modL(_ldrf[i].rho()); // 3-momenta of charged particles Energy modq(_qdrf[0].rho()); // calculate the energy of the fermion pair Energy newE12(-L0+sqrt(sqr(_m[0])+sqr(modL))); // 3-momentum rescaling factor (NOT energy rescaling). double kappa(Kinematics::pstarTwoBodyDecay(newE12,_m[1],_m[2])/modq); // calculate the rescaled momenta Lorentz5Momentum porig[3]; for(unsigned int ix=0;ix<2;++ix) { porig[ix] = kappa*_qdrf[ix]; porig[ix].setMass(_m[ix+1]); porig[ix].rescaleEnergy(); } porig[2] = _ldrf[i]; // calculate the momentum of the decaying particle in dipole rest frame Lorentz5Momentum pnew(_ldrf[i].x(),_ldrf[i].y(), _ldrf[i].z(),_ldrf[i].e(),_m[0]); pnew.rescaleEnergy(); // Find the momenta of the particles in the rest frame of the parent... // First get the boost from the parent particle Boost boost = pnew.findBoostToCM(); LorentzRotation rot1(-boost, pnew.e()/pnew.mass()); // check the photon energy Lorentz5Momentum ptest = _ldrf[i]; ptest.boost(boost); if(_energyopt==1&&ptest.e()<_eminrest) continue; new_parent->transform(rot1); // rotation to put the emitter along the z axis // first particle emits unsigned int iemit = _cosphot[i]>0. ? 0 : 1; LorentzRotation rot2; rot2.setRotateZ(-porig[iemit].phi()); rot2.rotateY(porig[iemit].theta()); rot2.rotateZ(porig[iemit].phi()); rot2.invert(); // Boost the momenta of the charged particles for(unsigned int ix=0;ix<3;++ix) { porig[ix].transform(rot2); ptemp[ix]->set5Momentum(porig[ix]); } new_parent->transform(rot2); if(_cosphot[i]>0.) { outwgt -= _decayer-> realEmissionME(_decayer->imode(),*new_parent,ptemp, 0,_cosphot[i],_sinphot[i],rot1,rot2)/ (_charge/sqr(_ldrf[i].e())*dipole); } else { outwgt -= _decayer-> realEmissionME(_decayer->imode(),*new_parent,ptemp, 1,-_cosphot[i],_sinphot[i],rot1,rot2)/ (_charge/sqr(_ldrf[i].e())*dipole); } rot1.invert(); rot2.invert(); new_parent->transform(rot2); new_parent->transform(rot1); } return outwgt; } else return collinearWeight(children); } return 1.; } double FFDipole::collinearWeight(const ParticleVector & children) { double outwgt=1.; // spins of the decay products PDT::Spin spin1(children[0]->dataPtr()->iSpin()); PDT::Spin spin2(children[1]->dataPtr()->iSpin()); // values of beta etc to evaluate the dipole double beta1(sqrt( (_qnewdrf[0].e()+_m[1])*(_qnewdrf[0].e()-_m[1]))/ _qnewdrf[0].e()); double beta2(sqrt( (_qnewdrf[1].e()+_m[2])*(_qnewdrf[1].e()-_m[2]))/ _qnewdrf[1].e()); double ombeta1(sqr(_m[1]/_qnewdrf[0].e())/(1.+beta1)); double ombeta2(sqr(_m[2]/_qnewdrf[1].e())/(1.+beta2)); // storage of the weights double twgt,dipole; double opbc,ombc; // compute the collinear approx for(unsigned int i=0;i<_multiplicity;++i) { if(_photcut[i]) continue; // compute the angle terms // if cos is greater than zero use result accurate as cos->1 if(_cosphot[i]>0) { opbc=1.+beta2*_cosphot[i]; ombc=ombeta1+beta1*sqr(_sinphot[i])/(1.+_cosphot[i]); } // if cos is less than zero use result accurate as cos->-1 else { opbc=ombeta2+beta2*sqr(_sinphot[i])/(1.-_cosphot[i]); ombc=1.-beta1*_cosphot[i]; } // dipole factor for denominator dipole = 2.*(1.+beta1*beta2 -0.5*ombeta1*(1.+beta1)*opbc/ombc -0.5*ombeta2*(1.+beta2)*ombc/opbc); twgt=0.; // correction for the first particle double ratio(_ldrf[i].e()/_qnewdrf[0].e()); if(spin1==PDT::Spin0) twgt += 0.; else if(spin1==PDT::Spin1Half) twgt += opbc*ratio/(1.+(1.+beta1*beta2)/ratio/opbc); else twgt += 2.*sqr(opbc*ratio) * (+1./(1+beta1*beta2+_ldrf[i].e()/_qnewdrf[1].e()*ombc) +(1.+beta1*beta2)/sqr(1.+beta1*beta2 +_ldrf[i].e()/_qnewdrf[0].e()*opbc)); // correction for the second particle ratio =_ldrf[i].e()/_qnewdrf[1].e(); if(spin2==PDT::Spin0) twgt += 0.; else if(spin2==PDT::Spin1Half) twgt += ombc*ratio/(1.+(1.+beta1*beta2)/ratio/ombc); else twgt += 2.*sqr(ombc*ratio) * (1./(1. + beta1*beta2 + _ldrf[i].e()/_qnewdrf[0].e()*opbc) + (1.+beta1*beta2) / sqr(1. + beta1*beta2 + _ldrf[i].e()/_qnewdrf[1].e()*ombc)); twgt/=dipole; outwgt+=twgt; } return outwgt; } bool FFDipole::boostMomenta(const Boost & boostv) { // total energy and momentum of photons Energy L0(_bigLdrf.e()),modL(_bigLdrf.rho()); // 3-momenta of charged particles Energy modq(_qdrf[0].rho()); // calculate the energy of the fermion pair Energy newE12(-L0+sqrt(_m[0]*_m[0]+modL*modL)); // check this is allowed if(newE12<_m[1]+_m[2]){return false;} // 3-momentum rescaling factor (NOT energy rescaling). double kappa(Kinematics::pstarTwoBodyDecay(newE12,_m[1],_m[2])/modq); // calculate the rescaled momenta for(unsigned int ix=0;ix<2;++ix) { _qnewdrf[ix] = kappa*_qdrf[ix]; _qnewdrf[ix].setMass(_m[ix+1]); _qnewdrf[ix].rescaleEnergy(); } // calculate the momentum of the decaying particle in dipole rest frame Lorentz5Momentum pnew(_bigLdrf.x(),_bigLdrf.y(), _bigLdrf.z(),_bigLdrf.e(),_m[0]); pnew.rescaleEnergy(); // Find the momenta of the particles in the rest frame // of the parent... // First get the boost from the parent particle SpinOneLorentzRotation boost(pnew.findBoostToCM()); // Boost the momenta of the charged particles for(unsigned int ix=0;ix<2;++ix) _qnewprf[ix]=boost*_qnewdrf[ix]; // Boost the total photon momentum _bigLprf=boost*_bigLdrf; // Boost the individual photon momenta for(unsigned int ix=0;ix<_multiplicity;++ix){_lprf[ix]=boost*_ldrf[ix];} // Now boost from the parent rest frame to the lab frame boost.setBoost(boostv); // Boosting charged particles for(unsigned int ix=0;ix<2;++ix){_qnewlab[ix]=boost*_qnewprf[ix];} // Boosting total photon momentum _bigLlab=boost*_bigLprf; // Boosting individual photon momenta for(unsigned int ix=0;ix<_multiplicity;++ix){_llab[ix]=boost*_lprf[ix];} return true; } unsigned int FFDipole::removePhotons() { unsigned int nremoved(0); // apply the cut in the rest frame if(_energyopt==1) { for(unsigned int ix=0;ix<_multiplicity;++ix) { if(_lprf[ix].e()<_eminrest) { ++nremoved; _photcut[ix]=true; _bigLdrf-=_ldrf[ix]; _ldrf[ix]=Lorentz5Momentum(); } } } // apply the cut in the lab frame else if(_energyopt==2) { for(unsigned int ix=0;ix<_multiplicity;++ix) { if(_llab[ix].e()<_eminlab) { ++nremoved; _photcut[ix]=true; _bigLdrf-=_ldrf[ix]; _ldrf[ix]=Lorentz5Momentum(); } } } // correction factor for dipoles if needed if(_dipoleopt==0&&nremoved!=0) { // calculate the velocities of the charged particles (crude/overvalued) double beta1(sqrt((_qdrf[0].e()+_m[1])*(_qdrf[0].e()-_m[1]))/_qdrf[0].e()); double beta2(sqrt((_qdrf[1].e()+_m[2])*(_qdrf[1].e()-_m[2]))/_qdrf[1].e()); // calculate 1-beta to avoid numerical problems double ombeta1(sqr(_m[1]/_qdrf[0].e())/(1.+beta1)); double ombeta2(sqr(_m[2]/_qdrf[1].e())/(1.+beta2)); // calculate the weights for(unsigned int ix=0;ix<_multiplicity;++ix) { if(_photcut[ix]) _dipolewgt *= exactDipoleWeight(beta1,ombeta1,beta2,ombeta2,ix)/_photonwgt[ix]; } } // return number of remove photons return nremoved; } double FFDipole::virtualWeight(const ParticleVector & children) { double output = 0.; // Virtual corrections for beta_0: // These should be zero for the scalar case as there is no // collinear singularity going by the dipoles above... // Use mass of decaying particle... if(_betaopt==2) { if((children[0]->dataPtr()->iSpin())==2&& (children[1]->dataPtr()->iSpin())==2 ) { output += (1.0*YFSFormFactors::_alpha/pi) * log(sqr(_m[0]/_m[1])); } } // OR Use invariant mass of final state children... else if(_betaopt==3) { if((children[0]->dataPtr()->iSpin())==2&& (children[1]->dataPtr()->iSpin())==2 ) { output += (1.0*YFSFormFactors::_alpha/pi) * log((_qnewprf[0]+_qnewprf[1]).m2()/sqr(_m[1])); } } else if (_betaopt==4) { if(_decayer&&_decayer->hasOneLoopME()) { output += _decayer->oneLoopVirtualME(_decayer->imode(),*_parent, children); } else { output += (1.0*YFSFormFactors::_alpha/pi) * log(sqr(_m[0]/_m[1])); } } return output; } void FFDipole::dofinish() { Interfaced::dofinish(); if(_weightOutput) { _wgtsum /= double(_nweight); _wgtsq /= double(_nweight); _wgtsq = max(_wgtsq - sqr(_wgtsum),0.); _wgtsq /= double(_nweight); _wgtsq = sqrt(_wgtsq); generator()->log() << "The average weight for QED Radiation in " << fullName() << " was " << _wgtsum << " +/- " << _wgtsq << '\n'; } } �����������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/DecayRadiationGenerator.cc��������������������������������������0000644�0001750�0001750�00000002060�11754474774�024772� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DecayRadiationGenerator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DecayRadiationGenerator class. // #include "DecayRadiationGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; AbstractNoPIOClassDescription<DecayRadiationGenerator> DecayRadiationGenerator::initDecayRadiationGenerator; // Definition of the static class description member. void DecayRadiationGenerator::Init() { static ClassDocumentation<DecayRadiationGenerator> documentation ("The DecayRadiationGenerator class is the base class for the implementation of" "QED radiation in particle decays."); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/Makefile.am�����������������������������������������������������0000644�0001750�0001750�00000000735�11754474774�021777� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwDecRad.la pkglib_LTLIBRARIES = HwSOPHTY.la libHwDecRad_la_SOURCES = \ DecayRadiationGenerator.cc DecayRadiationGenerator.h \ DecayRadiationGenerator.fh \ QEDRadiationHandler.cc QEDRadiationHandler.fh\ QEDRadiationHandler.h HwSOPHTY_la_SOURCES = \ SOPHTY.h SOPHTY.cc \ FFDipole.cc FFDipole.fh FFDipole.h \ IFDipole.cc IFDipole.fh IFDipole.h \ YFSFormFactors.cc YFSFormFactors.h HwSOPHTY_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:0:0 �����������������������������������herwig++-2.6.0.orig/Decay/Radiation/QEDRadiationHandler.cc������������������������������������������0000644�0001750�0001750�00000013643�11754474774�024016� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // QEDRadiationHandler.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the QEDRadiationHandler class. // #include "QEDRadiationHandler.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "DecayRadiationGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Handlers/EventHandler.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/PDT/DecayMode.h" using namespace Herwig; namespace { /** * A struct to order the particles in the same way as in the DecayMode's */ struct ParticleOrdering { /** * Operator for the ordering * @param p1 The first ParticleData object * @param p2 The second ParticleData object */ bool operator()(cPDPtr p1, cPDPtr p2) { 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() ); } }; /** * A set of ParticleData objects ordered as for the DecayMode's */ typedef multiset<cPDPtr,ParticleOrdering> OrderedParticles; } QEDRadiationHandler::QEDRadiationHandler() { // only include electroweak gauge bosons _decayingParticles.push_back( 22); _decayingParticles.push_back( 23); _decayingParticles.push_back( 24); _decayingParticles.push_back(-24); // only include the charged leptons _decayProducts.push_back( 11); _decayProducts.push_back( 13); _decayProducts.push_back( 15); _decayProducts.push_back(-11); _decayProducts.push_back(-13); _decayProducts.push_back(-15); } void QEDRadiationHandler:: handle(EventHandler & eh, const tPVector & tagged, const Hint &) { // find the potential decaying particles to be considered set<tPPtr> parents; for(unsigned int ix=0;ix<tagged.size();++ix) { long id=tagged[ix]->id(); if(find(_decayProducts.begin(),_decayProducts.end(),id)!=_decayProducts.end()) { PPtr par=tagged[ix]->parents()[0]; id=par->id(); if(tagged[ix]->parents()[0]->mass()>ZERO&& find(_decayingParticles.begin(),_decayingParticles.end(),id)!= _decayingParticles.end()) parents.insert(par); } } set<tPPtr>::const_iterator sit; StepPtr step=eh.currentStep(); // loop over parents for(sit=parents.begin();sit!=parents.end();++sit) { // extract children ParticleVector children=(**sit).children(); // store number of children unsigned int initsize = children.size(); // boost the decay to the parent rest frame Boost boost = - (**sit).momentum().boostVector(); (**sit).deepBoost(boost); // construct the tag for the decay mode to find the decayer OrderedParticles products; for(unsigned int ix=0;ix<children.size();++ix) products.insert(children[ix]->dataPtr()); string tag = (**sit).dataPtr()->name() + "->"; unsigned int iprod=0; for(OrderedParticles::const_iterator it = products.begin(); it != products.end(); ++it) { ++iprod; tag += (**it).name(); if(iprod != initsize) tag += ","; } tag += ";"; tDMPtr dm = generator()->findDecayMode(tag); tDecayIntegratorPtr decayer; if(dm) { tDecayerPtr dtemp = dm->decayer(); decayer = dynamic_ptr_cast<tDecayIntegratorPtr>(dtemp); bool cc; tPDVector ctemp; for(unsigned int ix=0;ix<children.size();++ix) ctemp.push_back(const_ptr_cast<tPDPtr>(children[ix]->dataPtr())); unsigned int imode = decayer->modeNumber(cc,(**sit).dataPtr(),ctemp); decayer->me2(imode,**sit,children,DecayIntegrator::Initialize); } // generate photons ParticleVector newchildren = _generator->generatePhotons(**sit,children,decayer); // if photons produced add as children and to step for(unsigned int ix=initsize;ix<newchildren.size();++ix) { (**sit).addChild(newchildren[ix]); step->addDecayProduct(newchildren[ix]); } (**sit).deepBoost(-boost); } } void QEDRadiationHandler::persistentOutput(PersistentOStream & os) const { os << _generator << _decayingParticles << _decayProducts; } void QEDRadiationHandler::persistentInput(PersistentIStream & is, int) { is >> _generator >> _decayingParticles >> _decayProducts; } ClassDescription<QEDRadiationHandler> QEDRadiationHandler::initQEDRadiationHandler; // Definition of the static class description member. void QEDRadiationHandler::Init() { static ClassDocumentation<QEDRadiationHandler> documentation ("The QEDRadiationHandler class is designed to be used as a PostSubProcessHandler" "so that the same approach as for radiation in decays can be used for resonances" "produced as part of the hard process"); static Reference<QEDRadiationHandler,DecayRadiationGenerator> interfaceRadiationGenerator ("RadiationGenerator", "Reference to the DecayRadiationGenerator", &QEDRadiationHandler::_generator, false, false, true, false, false); static ParVector<QEDRadiationHandler,long> interfaceDecayingParticles ("DecayingParticles", "List of PDF codes of the particles which should have radiation" " generated for them.", &QEDRadiationHandler::_decayingParticles, -1, long(24), 0, 0, false, false, Interface::nolimits); static ParVector<QEDRadiationHandler,long> interfaceDecayProducts ("DecayProducts", "List of PDG codes of the particles which should be present" " as decay products for the radiation to be generated.", &QEDRadiationHandler::_decayProducts, -1, long(11), 0, 0, false, false, Interface::nolimits); } ���������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/DecayRadiationGenerator.h���������������������������������������0000644�0001750�0001750�00000006125�11754474774�024642� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DecayRadiationGenerator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DecayRadiationGenerator_H #define HERWIG_DecayRadiationGenerator_H // // This is the declaration of the DecayRadiationGenerator class. // #include "ThePEG/Interface/Interfaced.h" #include "Herwig++/Decay/DecayIntegrator.fh" #include "DecayRadiationGenerator.fh" namespace Herwig { using namespace ThePEG; /** * The DecayRadiationGenerator class is the base class for classes generating * QED radiation in particle decays in Herwig++. Classes implementing specific * algorithms must inherit from this class and implement the virtual generatePhotons * member. * * @see \ref DecayRadiationGeneratorInterfaces "The interfaces" * defined for DecayRadiationGenerator. */ class DecayRadiationGenerator: public Interfaced { public: /** * Member to generate the photons in the decay. This must be implemented * in classes inheriting from this one to produce the radiation. * @param p The decaying particle * @param children The decay products * @param decayer The decayer which would normally generate this decay * @return The decay products with additional radiation */ virtual ParticleVector generatePhotons(const Particle & p, ParticleVector children, tDecayIntegratorPtr decayer)=0; public: /** * 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(); private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with no persistent data. */ static AbstractNoPIOClassDescription<DecayRadiationGenerator> initDecayRadiationGenerator; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DecayRadiationGenerator & operator=(const DecayRadiationGenerator &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DecayRadiationGenerator. */ template <> struct BaseClassTrait<Herwig::DecayRadiationGenerator,1> { /** Typedef of the first base class of DecayRadiationGenerator. */ typedef Interfaced NthBase; }; /** This template specialization informs ThePEG about the name of * the DecayRadiationGenerator class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DecayRadiationGenerator> : public ClassTraitsBase<Herwig::DecayRadiationGenerator> { /** Return a platform-independent class name */ static string className() { return "Herwig::DecayRadiationGenerator"; } }; /** @endcond */ } #endif /* HERWIG_DecayRadiationGenerator_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/IFDipole.fh�����������������������������������������������������0000644�0001750�0001750�00000000441�11754474774�021707� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the IFDipole class. // #ifndef ThePEG_IFDipole_FH #define ThePEG_IFDipole_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; class IFDipole; ThePEG_DECLARE_POINTERS(IFDipole,IFDipolePtr); } #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Radiation/SOPHTY.h��������������������������������������������������������0000644�0001750�0001750�00000007733�11754474774�021147� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SOPHTY.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SOPHTY_H #define HERWIG_SOPHTY_H // // This is the declaration of the SOPHTY class. // #include "DecayRadiationGenerator.h" #include "FFDipole.fh" #include "IFDipole.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * Here is the documentation of the SOPHTY class. * * @see \ref SOPHTYInterfaces "The interfaces" * defined for SOPHTY. */ class SOPHTY: public DecayRadiationGenerator { public: /** * Default constructor */ SOPHTY() : colouredOption_(0) {} /** * Member to generate the photons in the decay. This must be implemented * in classes inheriting from this one to produce the radiation. * @param p The decaying particle * @param children The decay products * @param decayer The decayer for with decay mode * @return The decay products with additional radiation */ virtual ParticleVector generatePhotons(const Particle & p,ParticleVector children, tDecayIntegratorPtr decayer); 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<SOPHTY> initSOPHTY; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SOPHTY & operator=(const SOPHTY &); private: /** * The final-final dipole */ FFDipolePtr FFDipole_; /** * The initial-final dipole */ IFDipolePtr IFDipole_; /** * Option for the treatment of radiation from coloured particles */ unsigned int colouredOption_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SOPHTY. */ template <> struct BaseClassTrait<Herwig::SOPHTY,1> { /** Typedef of the first base class of SOPHTY. */ typedef Herwig::DecayRadiationGenerator NthBase; }; /** This template specialization informs ThePEG about the name of * the SOPHTY class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SOPHTY> : public ClassTraitsBase<Herwig::SOPHTY> { /** Return a platform-independent class name */ static string className() { return "Herwig::SOPHTY"; } /** Return the name of the shared library be loaded to get * access to the DecayRadiationGenerator class and every other class it uses * (except the base class). */ static string library() { return "HwSOPHTY.so"; } }; /** @endcond */ } #endif /* HERWIG_SOPHTY_H */ �������������������������������������herwig++-2.6.0.orig/Decay/Makefile.am���������������������������������������������������������������0000644�0001750�0001750�00000001643�11754474774�020064� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������SUBDIRS = FormFactors Tau Baryon VectorMeson Perturbative \ WeakCurrents ScalarMeson TensorMeson Partonic General Radiation noinst_LTLIBRARIES = libHwDecay.la pkglib_LTLIBRARIES = Hw64Decay.la HwMamboDecay.la Hw64Decay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:0:0 Hw64Decay_la_SOURCES = Hw64Decayer.h Hw64Decayer.cc HwMamboDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:2:0 HwMamboDecay_la_SOURCES = MamboDecayer.h MamboDecayer.cc libHwDecay_la_LIBADD = $(top_builddir)/PDT/libHwPDT.la libHwDecay_la_SOURCES = \ DecayIntegrator.cc DecayIntegrator.fh DecayIntegrator.h \ DecayPhaseSpaceChannel.cc DecayPhaseSpaceChannel.fh \ DecayPhaseSpaceChannel.h \ DecayPhaseSpaceMode.cc DecayPhaseSpaceMode.fh \ DecayPhaseSpaceMode.h \ HwDecayerBase.cc HwDecayerBase.fh HwDecayerBase.h \ HwDecayHandler.cc HwDecayHandler.h\ DecayVertex.fh DecayVertex.h DecayVertex.cc \ DecayMatrixElement.h DecayMatrixElement.cc ���������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/DecayPhaseSpaceMode.cc����������������������������������������������������0000644�0001750�0001750�00000043600�11754474774�022125� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DecayPhaseSpaceMode.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DecayPhaseSpaceMode class. // #include "DecayPhaseSpaceMode.h" #include "Herwig++/PDT/GenericWidthGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/RefVector.h" #include "DecayIntegrator.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/EventRecord/HelicityVertex.h" #include "Herwig++/Decay/DecayVertex.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/Utilities/Debug.h" using namespace Herwig; using namespace ThePEG::Helicity; void DecayPhaseSpaceMode::persistentOutput(PersistentOStream & os) const { os << _integrator << _channels << _channelwgts << _maxweight << _niter << _npoint << _ntry << _extpart << _partial << _widthgen << _massgen << _testOnShell; } void DecayPhaseSpaceMode::persistentInput(PersistentIStream & is, int) { is >> _integrator >> _channels >> _channelwgts >> _maxweight >> _niter >> _npoint >> _ntry >> _extpart >> _partial >> _widthgen >> _massgen >> _testOnShell; } ClassDescription<DecayPhaseSpaceMode> DecayPhaseSpaceMode::initDecayPhaseSpaceMode; // Definition of the static class description member. void DecayPhaseSpaceMode::Init() { static ClassDocumentation<DecayPhaseSpaceMode> documentation ("The DecayPhaseSpaceMode class contains a number of phase space" " channels for the integration of a particular decay mode"); static RefVector<DecayPhaseSpaceMode,DecayPhaseSpaceChannel> interfaceChannels ("Channels", "The phase space integration channels.", &DecayPhaseSpaceMode::_channels, 0, false, false, true, true); } // flat phase space generation and weight Energy DecayPhaseSpaceMode::flatPhaseSpace(bool cc, const Particle & inpart, ParticleVector & outpart) const { double wgt(1.); if(outpart.empty()) { outpart.reserve(_extpart.size()-1); for(unsigned int ix=1;ix<_extpart.size();++ix) { if(cc&&_extpart[ix]->CC()) { outpart.push_back((_extpart[ix]->CC())->produceParticle()); } else { outpart.push_back(_extpart[ix]->produceParticle()); } } } // masses of the particles Energy inmass(inpart.mass()); vector<Energy> mass = externalMasses(inmass,wgt); // momenta of the particles vector<Lorentz5Momentum> part(outpart.size()); // two body decay assert(outpart.size()==2); double ctheta,phi; Kinematics::generateAngles(ctheta,phi); if(! Kinematics::twoBodyDecay(inpart.momentum(), mass[1], mass[2], ctheta, phi,part[0],part[1])) throw Exception() << "Incoming mass - Outgoing mass negative in " << "DecayPhaseSpaceMode::flatPhaseSpace()" << Exception::eventerror; wgt *= Kinematics::pstarTwoBodyDecay(inmass,mass[1],mass[2])/8./Constants::pi/inmass; outpart[0]->set5Momentum(part[0]); outpart[1]->set5Momentum(part[1]); return wgt*inmass; } // initialise the phase space Energy DecayPhaseSpaceMode::initializePhaseSpace(bool init) { Energy output(ZERO); // ensure that the weights add up to one if(!_channels.empty()) { double temp=0.; for(unsigned int ix=0;ix<_channels.size();++ix) temp+=_channelwgts[ix]; for(unsigned int ix=0;ix<_channels.size();++ix) _channelwgts[ix]/=temp; } if(!init) return ZERO; // create a particle vector from the particle data one ThePEG::PPtr inpart=_extpart[0]->produceParticle(); ParticleVector particles; // now if using flat phase space _maxweight=0.; double totsum(0.),totsq(0.); InvEnergy pre=1./MeV; Energy prewid; if(_channels.empty()) { double wsum=0.,wsqsum=0.; Energy m0,mmin(ZERO); for(unsigned int ix=1;ix<_extpart.size();++ix) { mmin+=_extpart[ix]->massMin(); } for(int ix=0;ix<_npoint;++ix) { // set the mass of the decaying particle m0 = (inpart->dataPtr())->generateMass(); double wgt=0.; if(m0>mmin) { inpart->set5Momentum(Lorentz5Momentum(m0)); // compute the prefactor prewid = (_widthgen&&_partial>=0) ? _widthgen->partialWidth(_partial,inpart->mass()) : inpart->dataPtr()->width(); pre = prewid>ZERO ? 1./prewid : 1./MeV; // generate the weight for this point try { int dummy; wgt = pre*weight(false,dummy,*inpart,particles,true); } catch (Veto) { wgt=0.; } } if(wgt>_maxweight) _maxweight=wgt; wsum=wsum+wgt; wsqsum=wsqsum+wgt*wgt; } wsum=wsum/_npoint; wsqsum=wsqsum/_npoint-sqr(wsum); if(wsqsum<0.) wsqsum=0.; wsqsum=sqrt(wsqsum/_npoint); Energy fact = (_widthgen&&_partial>=0) ? _widthgen->partialWidth(_partial,inpart->nominalMass()) : inpart->dataPtr()->width(); if(fact==ZERO) fact=MeV; // factor for the weight with spin correlations _maxweight *= inpart->dataPtr()->iSpin()==1 ? 1.1 : 1.6; if ( Debug::level > 1 ) { // ouptut the information on the initialisation CurrentGenerator::log() << "Initialized the phase space for the decay " << _extpart[0]->PDGName() << " -> "; for(unsigned int ix=1,N=_extpart.size();ix<N;++ix) CurrentGenerator::log() << _extpart[ix]->PDGName() << " "; CurrentGenerator::log() << "\n"; if(fact!=MeV) CurrentGenerator::log() << "The branching ratio is " << wsum << " +/- " << wsqsum << "\n"; CurrentGenerator::log() << "The partial width is " << wsum*fact/MeV << " +/- " << wsqsum*fact/MeV << " MeV\n"; CurrentGenerator::log() << "The partial width is " << wsum*fact/6.58212E-22/MeV << " +/- " << wsqsum*fact/6.58212E-22/MeV<< " s-1\n"; CurrentGenerator::log() << "The maximum weight is " << _maxweight << endl; } output=wsum*fact; } else { for(int iy=0;iy<_niter;++iy) { // zero the maximum weight _maxweight=0.; vector<double> wsum(_channels.size(),0.),wsqsum(_channels.size(),0.); vector<int> nchan(_channels.size(),0); totsum = 0.; totsq = 0.; Energy m0,mmin(ZERO); for(unsigned int ix=1;ix<_extpart.size();++ix) { mmin+=_extpart[ix]->massMin(); } for(int ix=0;ix<_npoint;++ix) { m0 = (inpart->dataPtr())->generateMass(); double wgt=0.; int ichan; if(m0>mmin) { inpart->set5Momentum(Lorentz5Momentum(m0)); // compute the prefactor prewid= (_widthgen&&_partial>=0) ? _widthgen->partialWidth(_partial,inpart->mass()) : inpart->dataPtr()->width(); pre = prewid>ZERO ? 1./prewid : 1./MeV; // generate the weight for this point try { wgt = pre*weight(false,ichan,*inpart,particles,true); } catch (Veto) { wgt=0.; } } if(wgt>_maxweight) _maxweight=wgt; wsum[ichan]=wsum[ichan]+wgt; totsum+=wgt; wsqsum[ichan]=wsqsum[ichan]+sqr(wgt); totsq+=wgt*wgt; ++nchan[ichan]; } totsum=totsum/_npoint; totsq=totsq/_npoint-sqr(totsum); if(totsq<0.) totsq=0.; totsq=sqrt(totsq/_npoint); if ( Debug::level > 1 ) CurrentGenerator::log() << "The branching ratio is " << iy << " " << totsum << " +/- " << totsq << _maxweight << "\n"; // compute the individual terms double total(0.); for(unsigned int ix=0;ix<_channels.size();++ix) { if(nchan[ix]!=0) { wsum[ix]=wsum[ix]/nchan[ix]; wsqsum[ix]=wsqsum[ix]/nchan[ix]; if(wsqsum[ix]<0.) wsqsum[ix]=0.; wsqsum[ix]=sqrt(wsqsum[ix]/nchan[ix]); } else { wsum[ix]=0; wsqsum[ix]=0; } total+=sqrt(wsqsum[ix])*_channelwgts[ix]; } if(total>0.) { double temp; for(unsigned int ix=0;ix<_channels.size();++ix) { temp=sqrt(wsqsum[ix])*_channelwgts[ix]/total; _channelwgts[ix]=temp; } } } // factor for the weight with spin correlations _maxweight*= inpart->dataPtr()->iSpin()==1 ? 1.1 : 1.6; // ouptut the information on the initialisation Energy fact = (_widthgen&&_partial>=0) ? _widthgen->partialWidth(_partial,inpart->nominalMass()) : inpart->dataPtr()->width(); if(fact==ZERO) fact=MeV; if ( Debug::level > 1 ) { CurrentGenerator::log() << "Initialized the phase space for the decay " << _extpart[0]->PDGName() << " -> "; for(unsigned int ix=1,N=_extpart.size();ix<N;++ix) CurrentGenerator::log() << _extpart[ix]->PDGName() << " "; CurrentGenerator::log() << "\n"; if(fact!=MeV) CurrentGenerator::log() << "The branching ratio is " << totsum << " +/- " << totsq << "\n"; CurrentGenerator::log() << "The partial width is " << totsum*fact/MeV << " +/- " << totsq*fact/MeV << " MeV\n"; CurrentGenerator::log() << "The partial width is " << totsum*fact/6.58212E-22/MeV << " +/- " << totsq*fact/6.58212E-22/MeV << " s-1\n"; CurrentGenerator::log() << "The maximum weight is " << _maxweight << "\n"; CurrentGenerator::log() << "The weights for the different phase" << " space channels are \n"; for(unsigned int ix=0,N=_channels.size();ix<N;++ix) { CurrentGenerator::log() << "Channel " << ix << " had weight " << _channelwgts[ix] << "\n"; } CurrentGenerator::log() << flush; } output=totsum*fact; } return output; } // generate a phase-space point using multichannel phase space Energy DecayPhaseSpaceMode::channelPhaseSpace(bool cc, int & ichan, const Particle & inpart, ParticleVector & outpart) const { // select the channel vector<Lorentz5Momentum> momenta; double wgt(UseRandom::rnd()); // select a channel ichan=-1; do{++ichan;wgt-=_channelwgts[ichan];} while(ichan<int(_channels.size())&&wgt>0.); // generate the momenta if(ichan==int(_channels.size())) { throw DecayIntegratorError() << "DecayPhaseSpaceMode::channelPhaseSpace()" << " failed to select a channel" << Exception::abortnow; } // generate the masses of the external particles double masswgt(1.); vector<Energy> mass(externalMasses(inpart.mass(),masswgt)); momenta=_channels[ichan]->generateMomenta(inpart.momentum(),mass); // compute the denominator of the weight wgt=0.; unsigned int ix; for(ix=0;ix<_channels.size();++ix) { wgt+=_channelwgts[ix]*_channels[ix]->generateWeight(momenta); } // now we need to set the momenta of the particles // create the particles if they don't exist if(outpart.empty()) { for(ix=1;ix<_extpart.size();++ix) { if(cc&&_extpart[ix]->CC()) { outpart.push_back((_extpart[ix]->CC())->produceParticle()); } else { outpart.push_back(_extpart[ix]->produceParticle()); } } } // set up the momenta for(ix=0;ix<outpart.size();++ix) outpart[ix]->set5Momentum(momenta[ix+1]); // return the weight return inpart.mass()*masswgt/wgt; } // generate the decay ParticleVector DecayPhaseSpaceMode::generate(bool intermediates,bool cc, const Particle & inpart) const { // compute the prefactor InvEnergy pre(1./MeV); Energy prewid; if(_widthgen&&_partial>=0) prewid=_widthgen->partialWidth(_partial,inpart.mass()); else prewid=(inpart.dataPtr()->width()); pre = prewid>ZERO ? 1./prewid : 1./MeV; // Particle vector for the output ParticleVector particles; // construct a new particle which is at rest Particle inrest(inpart); inrest.boost(-inpart.momentum().boostVector()); int ncount(0),ichan; double wgt(0.); unsigned int ix; try { do { wgt=pre*weight(cc,ichan,inrest,particles,ncount==0); ++ncount; if(wgt>_maxweight) { CurrentGenerator::log() << "Resetting max weight for decay " << inrest.PDGName() << " -> "; for(ix=0;ix<particles.size();++ix) CurrentGenerator::log() << " " << particles[ix]->PDGName(); CurrentGenerator::log() << " " << _maxweight << " " << wgt << " " << inrest.mass()/MeV << "\n"; _maxweight=wgt; } } while(_maxweight*UseRandom::rnd()>wgt&&ncount<_ntry); if(ncount>=_ntry) { CurrentGenerator::log() << "The decay " << inrest.PDGName() << " -> "; for(ix=0;ix<particles.size();++ix) CurrentGenerator::log() << " " << particles[ix]->PDGName(); CurrentGenerator::log() << " " << _maxweight << " " << _ntry << " is too inefficient for the particle " << inpart << "vetoing the decay \n"; particles.clear(); throw Veto(); } } catch (Veto) { // restore the incoming particle to its original state Boost boostv(inpart.momentum().boostVector()); inrest.boost(boostv); throw Veto(); } // set up the vertex for spin correlations me2(-1,inrest,particles,DecayIntegrator::Terminate); const_ptr_cast<tPPtr>(&inpart)->spinInfo(inrest.spinInfo()); constructVertex(inpart,particles); // return if intermediate particles not required Boost boostv(inpart.momentum().boostVector()); if(_channelwgts.empty()||!intermediates) { for(ix=0;ix<particles.size();++ix) particles[ix]->boost(boostv); } // find the intermediate particles else { // select the channel _ichannel = selectChannel(inpart,particles); for(ix=0;ix<particles.size();++ix) particles[ix]->boost(boostv); // generate the particle vector _channels[_ichannel]->generateIntermediates(cc,inpart,particles); } return particles; } // construct the vertex for spin corrections void DecayPhaseSpaceMode::constructVertex(const Particle & inpart, const ParticleVector & decay) const { // construct the decay vertex VertexPtr vertex(new_ptr(DecayVertex())); DVertexPtr Dvertex(dynamic_ptr_cast<DVertexPtr>(vertex)); // set the incoming particle for the decay vertex (inpart.spinInfo())->decayVertex(vertex); for(unsigned int ix=0;ix<decay.size();++ix) { (decay[ix]->spinInfo())->productionVertex(vertex); } // set the matrix element Dvertex->ME().reset(_integrator->ME()); } // output info on the mode ostream & Herwig::operator<<(ostream & os, const DecayPhaseSpaceMode & decay) { os << "The mode has " << decay._channels.size() << " channels\n"; os << "This is a mode for the decay of " << decay._extpart[0]->PDGName() << " to "; for(unsigned int iz=1,N=decay._extpart.size();iz<N;++iz) { os << decay._extpart[iz]->PDGName() << " "; } os << "\n"; for(unsigned int ix=0;ix<decay._channels.size();++ix) { os << "Information on channel " << ix << "\n"; os << *(decay._channels[ix]); } return os; } void DecayPhaseSpaceMode::doinit() { // check the size of the weight vector is the same as the number of channels if(_channelwgts.size()!=numberChannels()) { throw Exception() << "Inconsistent number of channel weights and channels" << " in DecayPhaseSpaceMode " << Exception::abortnow; } Interfaced::doinit(); _massgen.resize(_extpart.size()); if(_extpart[0]->widthGenerator()) { _widthgen= dynamic_ptr_cast<cGenericWidthGeneratorPtr>(_extpart[0]->widthGenerator()); //const_ptr_cast<GenericWidthGeneratorPtr>(_widthgen)->init(); } else { _widthgen=cGenericWidthGeneratorPtr(); } tcGenericWidthGeneratorPtr wtemp; for(unsigned int ix=0;ix<_extpart.size();++ix) { assert(_extpart[ix]); _massgen[ix]= dynamic_ptr_cast<cGenericMassGeneratorPtr>(_extpart[ix]->massGenerator()); if(ix>0) { wtemp= dynamic_ptr_cast<tcGenericWidthGeneratorPtr>(_extpart[ix]->widthGenerator()); //if(wtemp) const_ptr_cast<tGenericWidthGeneratorPtr>(wtemp)->init(); } } for(unsigned int ix=0;ix<_channels.size();++ix) { _channels[ix]->init(); } } void DecayPhaseSpaceMode::doinitrun() { // check the size of the weight vector is the same as the number of channels if(_channelwgts.size()!=numberChannels()) { throw Exception() << "Inconsistent number of channel weights and channels" << " in DecayPhaseSpaceMode " << Exception::abortnow; } for(unsigned int ix=0;ix<_channels.size();++ix) { _channels[ix]->initrun(); } if(_widthgen) const_ptr_cast<GenericWidthGeneratorPtr>(_widthgen)->initrun(); tcGenericWidthGeneratorPtr wtemp; for(unsigned int ix=1;ix<_extpart.size();++ix) { wtemp= dynamic_ptr_cast<tcGenericWidthGeneratorPtr>(_extpart[ix]->widthGenerator()); if(wtemp) const_ptr_cast<tGenericWidthGeneratorPtr>(wtemp)->initrun(); } Interfaced::doinitrun(); } // generate the masses of the external particles vector<Energy> DecayPhaseSpaceMode::externalMasses(Energy inmass,double & wgt) const { vector<Energy> mass(1,inmass); mass.reserve(_extpart.size()); vector<int> notdone; Energy mlow(ZERO); // set masses of stable particles and limits for(unsigned int ix=1;ix<_extpart.size();++ix) { // get the mass of the particle if can't use weight if(!_massgen[ix] || _extpart[ix]->stable()) { mass.push_back(_extpart[ix]->generateMass()); mlow+=mass[ix]; } else { mass.push_back(ZERO); notdone.push_back(ix); mlow+=_extpart[ix]->mass()-_extpart[ix]->widthLoCut(); } } if(mlow>inmass) { CurrentGenerator::log() << "Decay mode " << _extpart[0]->PDGName() << " -> "; for(unsigned int ix=1;ix<_extpart.size();++ix) { CurrentGenerator::log() << _extpart[ix]->PDGName() << " "; } CurrentGenerator::log() << "is below threshold in DecayPhaseMode::externalMasses()" << "the threshold is " << mlow/GeV << "GeV and the parent mass is " << inmass/GeV << " GeV\n"; throw Veto(); } // now we need to generate the masses for the particles we haven't unsigned int iloc; double wgttemp; Energy low=ZERO; for( ;!notdone.empty();) { iloc=long(UseRandom::rnd()*(notdone.size()-1)); low=_extpart[notdone[iloc]]->mass()-_extpart[notdone[iloc]]->widthLoCut(); mlow-=low; mass[notdone[iloc]]= _massgen[notdone[iloc]]->mass(wgttemp,*_extpart[notdone[iloc]],low,inmass-mlow); wgt*=wgttemp; mlow+=mass[notdone[iloc]]; notdone.erase(notdone.begin()+iloc); } return mass; } ��������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/DecayMatrixElement.h������������������������������������������������������0000644�0001750�0001750�00000042225�11754474774�021726� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DecayMatrixElement.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DecayMatrixElement_H #define HERWIG_DecayMatrixElement_H // // This is the declaration of the DecayMatrixElement class. #include <ThePEG/Config/ThePEG.h> #include <ThePEG/Utilities/ClassDescription.h> #include <ThePEG/Helicity/HelicityDefinitions.h> #include <ThePEG/EventRecord/RhoDMatrix.h> namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * \author Peter Richardson * * Implementation of the complex matrix element for a decay. * An arbitary number of external particles are supported. * * @see RhoDMatrix * @see ProductionMatrixElement * @see DecayVertex */ class DecayMatrixElement: public Base { public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor. */ DecayMatrixElement() : _nout(999) {} /** * Constructor for two body decay. * @param inspin \f$2S+1\f$ for the decaying particle * @param outspin1 \f$2S+1\f$ for the first decay product. * @param outspin2 \f$2S+1\f$ for the second decay product. */ DecayMatrixElement(PDT::Spin inspin,PDT::Spin outspin1,PDT::Spin outspin2) : _nout(2), _inspin(inspin), _outspin(2) { _outspin[0] = outspin1; _outspin[1] = outspin2; setMESize(); } /** * Constructor for three body decay. * @param inspin \f$2S+1\f$ for the decaying particle * @param outspin1 \f$2S+1\f$ for the first decay product. * @param outspin2 \f$2S+1\f$ for the second decay product. * @param outspin3 \f$2S+1\f$ for the third decay product. */ DecayMatrixElement(PDT::Spin inspin,PDT::Spin outspin1, PDT::Spin outspin2,PDT::Spin outspin3) : _nout(3), _inspin(inspin), _outspin(3) { _outspin[0] = outspin1; _outspin[1] = outspin2; _outspin[2] = outspin3; setMESize(); } /** * Constructor for four body decay. * @param inspin \f$2S+1\f$ for the decaying particle * @param outspin1 \f$2S+1\f$ for the first decay product. * @param outspin2 \f$2S+1\f$ for the second decay product. * @param outspin3 \f$2S+1\f$ for the third decay product. * @param outspin4 \f$2S+1\f$ for the fourth decay product. */ DecayMatrixElement(PDT::Spin inspin,PDT::Spin outspin1,PDT::Spin outspin2, PDT::Spin outspin3,PDT::Spin outspin4) : _nout(4), _inspin(inspin), _outspin(4) { _outspin[0] = outspin1; _outspin[1] = outspin2; _outspin[2] = outspin3; _outspin[3] = outspin4; setMESize(); } /** * Constructor for five body decay. * @param inspin \f$2S+1\f$ for the decaying particle * @param outspin1 \f$2S+1\f$ for the first decay product. * @param outspin2 \f$2S+1\f$ for the second decay product. * @param outspin3 \f$2S+1\f$ for the third decay product. * @param outspin4 \f$2S+1\f$ for the fourth decay product. * @param outspin5 \f$2S+1\f$ for the fifth decay product. */ DecayMatrixElement(PDT::Spin inspin,PDT::Spin outspin1,PDT::Spin outspin2, PDT::Spin outspin3,PDT::Spin outspin4,PDT::Spin outspin5) : _nout(5), _inspin(inspin), _outspin(5) { _outspin[0] = outspin1; _outspin[1] = outspin2; _outspin[2] = outspin3; _outspin[3] = outspin4; _outspin[4] = outspin5; setMESize(); } /** * Constructor for six body decay. * @param inspin \f$2S+1\f$ for the decaying particle * @param outspin1 \f$2S+1\f$ for the first decay product. * @param outspin2 \f$2S+1\f$ for the second decay product. * @param outspin3 \f$2S+1\f$ for the third decay product. * @param outspin4 \f$2S+1\f$ for the fourth decay product. * @param outspin5 \f$2S+1\f$ for the fifth decay product. * @param outspin6 \f$2S+1\f$ for the sixth decay product. */ DecayMatrixElement(PDT::Spin inspin,PDT::Spin outspin1,PDT::Spin outspin2, PDT::Spin outspin3,PDT::Spin outspin4,PDT::Spin outspin5, PDT::Spin outspin6) : _nout(6), _inspin(inspin), _outspin(6) { _outspin[0] = outspin1; _outspin[1] = outspin2; _outspin[2] = outspin3; _outspin[3] = outspin4; _outspin[4] = outspin5; _outspin[5] = outspin6; setMESize(); } /** * Constructor for arbitary body decay. * @param inspin \f$2S+1\f$ for the decaying particle * @param outspin \f$2S+1\f$ for the decay products. */ DecayMatrixElement(PDT::Spin inspin,vector<PDT::Spin> outspin) : _nout(outspin.size()), _inspin(inspin), _outspin(outspin) { setMESize(); } /** * Constructor for arbitary body decay. * @param extspin \f$2S+1\f$ external particles. */ DecayMatrixElement(vector<PDT::Spin> extspin) : _nout(extspin.size()-1), _inspin(extspin[0]), _outspin(extspin.begin()+1,extspin.end()) { setMESize(); } //@} public: /** * Access to the spins of the particles */ //@{ /** * Get the spin of the incoming particle. */ PDT::Spin inspin() {return _inspin;} /** * Get the spins of the outgoing particles. */ vector<PDT::Spin> outspin() {return _outspin;} //@} public: /** * Spin Density matrices */ //@{ /** * Calculate the decay matrix for this decay. * @param rhoout The \f$D\f$ matrix for this decay. */ RhoDMatrix calculateDMatrix(const vector<RhoDMatrix> & rhoout) const; /** * Calculate the \f$\rho\f$ matrix for a given outgoing particle. * @param ipart The outgoing particle the \f$\rho\f$ matrix is needed for * @param rhoin The \f$\rho\f$ matrix for the decaying particle. * @param rhoout he \f$D\f$ matrices for the other decay products. */ RhoDMatrix calculateRhoMatrix(int ipart,const RhoDMatrix & rhoin, const vector<RhoDMatrix> & rhoout) const; /** * Contract the matrix element with the \f$\rho\f$ matrix of the * incoming particle. The spins of the decay products are summed over. * @param rhoin The \f$\rho\f$ matrix for the decaying particle. */ Complex contract(const RhoDMatrix & rhoin) const; /** * Contract the matrix element with the \f$\rho\f$ matrix of the * incoming particle. The spins of the decay products are summed over. * @param con The conjugate matrix elemetn for the contraction * @param rhoin The \f$\rho\f$ matrix for the decaying particle. */ Complex contract(const DecayMatrixElement & con, const RhoDMatrix & rhoin); //@} public: /** * Access to the individual helicity components. */ //@{ /** * Get the helicity components for a two body decay * @param inhel The helicity of the decaying particle. * @param outhel1 The helicity of the first decay product. * @param outhel2 The helicity of the second decay product. */ Complex operator () (unsigned int inhel,unsigned int outhel1, unsigned int outhel2) const { unsigned int iloc = inhel*_constants[1]+ outhel1*_constants[2]+outhel2*_constants[3]; assert(_outspin.size()==2&&iloc<_matrixelement.size()); return _matrixelement[iloc]; } /** * Set the helicity components for a two body decay * @param inhel The helicity of the decaying particle. * @param outhel1 The helicity of the first decay product. * @param outhel2 The helicity of the second decay product. */ Complex & operator () (unsigned int inhel,unsigned int outhel1, unsigned int outhel2) { unsigned int iloc = inhel*_constants[1]+ outhel1*_constants[2]+outhel2*_constants[3]; assert(_outspin.size()==2&&iloc<_matrixelement.size()); return _matrixelement[iloc]; } /** * Get the helicity components for a three body decay * @param inhel The helicity of the decaying particle. * @param outhel1 The helicity of the first decay product. * @param outhel2 The helicity of the second decay product. * @param outhel3 The helicity of the third decay product. */ Complex operator () (unsigned int inhel,unsigned int outhel1, unsigned int outhel2,unsigned int outhel3) const { unsigned int iloc = inhel*_constants[1]+outhel1*_constants[2]+ outhel2*_constants[3]+outhel3*_constants[4]; assert(_outspin.size()==3&&iloc<_matrixelement.size()); return _matrixelement[iloc]; } /** * Set the helicity components for a three body decay * @param inhel The helicity of the decaying particle. * @param outhel1 The helicity of the first decay product. * @param outhel2 The helicity of the second decay product. * @param outhel3 The helicity of the third decay product. */ Complex & operator () (unsigned int inhel,unsigned int outhel1, unsigned int outhel2,unsigned int outhel3) { unsigned int iloc = inhel*_constants[1]+outhel1*_constants[2]+ outhel2*_constants[3]+outhel3*_constants[4]; assert(_outspin.size()==3&&iloc<_matrixelement.size()); return _matrixelement[iloc]; } /** * Get the helicity components for a four body decay * @param inhel The helicity of the decaying particle. * @param outhel1 The helicity of the first decay product. * @param outhel2 The helicity of the second decay product. * @param outhel3 The helicity of the third decay product. * @param outhel4 The helicity of the fourth decay product. */ Complex operator () (unsigned int inhel,unsigned int outhel1, unsigned int outhel2,unsigned int outhel3, unsigned int outhel4) const { vector<unsigned int> itemp(5); itemp[0]=inhel ; itemp[1]=outhel1; itemp[2]=outhel2; itemp[3]=outhel3; itemp[4]=outhel4 ; return (*this)(itemp); } /** * Set the helicity components for a four body decay * @param inhel The helicity of the decaying particle. * @param outhel1 The helicity of the first decay product. * @param outhel2 The helicity of the second decay product. * @param outhel3 The helicity of the third decay product. * @param outhel4 The helicity of the fourth decay product. */ Complex & operator () (unsigned int inhel,unsigned int outhel1, unsigned int outhel2,unsigned int outhel3, unsigned int outhel4) { vector<unsigned int> itemp(5); itemp[0]=inhel ; itemp[1]=outhel1; itemp[2]=outhel2; itemp[3]=outhel3; itemp[4]=outhel4; return (*this)(itemp); } /** * Get the helicity components for a five body decay * @param inhel The helicity of the decaying particle. * @param outhel1 The helicity of the first decay product. * @param outhel2 The helicity of the second decay product. * @param outhel3 The helicity of the third decay product. * @param outhel4 The helicity of the fourth decay product. * @param outhel5 The helicity of the fifth decay product. */ Complex operator () (unsigned int inhel,unsigned int outhel1, unsigned int outhel2,unsigned int outhel3, unsigned int outhel4,unsigned int outhel5) const { vector<unsigned int> itemp(6); itemp[0]=inhel ; itemp[1]=outhel1; itemp[2]=outhel2; itemp[3]=outhel3; itemp[4]=outhel4 ;itemp[5]=outhel5; return (*this)(itemp); } /** * Set the helicity components for a five body decay * @param inhel The helicity of the decaying particle. * @param outhel1 The helicity of the first decay product. * @param outhel2 The helicity of the second decay product. * @param outhel3 The helicity of the third decay product. * @param outhel4 The helicity of the fourth decay product. * @param outhel5 The helicity of the fifth decay product. */ Complex & operator () (unsigned int inhel,unsigned int outhel1, unsigned int outhel2,unsigned int outhel3, unsigned int outhel4,unsigned int outhel5) { vector<unsigned int> itemp(6); itemp[0]=inhel ; itemp[1]=outhel1; itemp[2]=outhel2; itemp[3]=outhel3; itemp[4]=outhel4; itemp[5]=outhel5; return (*this)(itemp); } /** * Get the helicity components for a six body decay * @param inhel The helicity of the decaying particle. * @param outhel1 The helicity of the first decay product. * @param outhel2 The helicity of the second decay product. * @param outhel3 The helicity of the third decay product. * @param outhel4 The helicity of the fourth decay product. * @param outhel5 The helicity of the fifth decay product. * @param outhel6 The helicity of the sixth decay product. */ Complex operator () (unsigned int inhel,unsigned int outhel1, unsigned int outhel2,unsigned int outhel3, unsigned int outhel4,unsigned int outhel5, unsigned int outhel6) const { vector<unsigned int> itemp(7); itemp[0]=inhel ; itemp[1]=outhel1; itemp[2]=outhel2; itemp[3]=outhel3; itemp[4]=outhel4 ;itemp[5]=outhel5; itemp[6]=outhel6; return (*this)(itemp); } /** * Set the helicity components for a six body decay * @param inhel The helicity of the decaying particle. * @param outhel1 The helicity of the first decay product. * @param outhel2 The helicity of the second decay product. * @param outhel3 The helicity of the third decay product. * @param outhel4 The helicity of the fourth decay product. * @param outhel5 The helicity of the fifth decay product. * @param outhel6 The helicity of the sixth decay product. */ Complex & operator () (unsigned int inhel,unsigned int outhel1, unsigned int outhel2,unsigned int outhel3, unsigned int outhel4,unsigned int outhel5, unsigned int outhel6) { vector<unsigned int> itemp(7); itemp[0]=inhel ; itemp[1]=outhel1; itemp[2]=outhel2; itemp[3]=outhel3; itemp[4]=outhel4; itemp[5]=outhel5; itemp[6]=outhel6; return (*this)(itemp); } /** * Get the helicity components for an \f$n\f$-body decay. * @param in The helicities of the external particles. */ Complex operator () (const vector<unsigned int> & in) const { assert(in.size()==_outspin.size()+1); // contribution for the incoming particle unsigned int iloc(in[0]*_constants[1]); // contributions for the outgoing particles for(unsigned int ix=1;ix<in.size();++ix){iloc+=in[ix]*_constants[ix+1];} assert(iloc<_matrixelement.size()); return _matrixelement[iloc]; } /** * Set the helicity components for an \f$n\f$-body decay. * @param in The helicities of the external particles. */ Complex & operator () (const vector<unsigned int> & in) { assert(in.size()==_outspin.size()+1); // contribution for the incoming particle unsigned int iloc(in[0]*_constants[1]); // contributions for the outgoing particles for(unsigned int ix=1;ix<in.size();++ix){iloc+=in[ix]*_constants[ix+1];} assert(iloc<_matrixelement.size()); return _matrixelement[iloc]; } //@} /** * Member to zero all the elements for the matrix element */ void zero() { for(unsigned int ix=0;ix<_matrixelement.size();++ix) _matrixelement[ix]=0.; } public: /** * Reset the matrix element. */ void reset(const DecayMatrixElement & x) const { _nout = x._nout; _inspin = x._inspin; _outspin =x._outspin; _matrixelement=x._matrixelement; _constants=x._constants; } public: /** * Standard Init function used to initialize the interfaces. */ static void Init(); private: /** * Describe a concrete class without persistent data. */ static NoPIOClassDescription<DecayMatrixElement> initDecayMatrixElement; /** * Private and non-existent assignment operator. */ DecayMatrixElement & operator=(const DecayMatrixElement &); private: /** * Set the size of the vector containing the matrix element. */ void setMESize() { int isize=_inspin; for(unsigned int ix=0;ix<_outspin.size();++ix) isize*=_outspin[ix]; _matrixelement.resize(isize,0.); // set up the constants for the mapping of helicity to vector index _constants.resize(_outspin.size()+2); int temp=1; for(unsigned int ix=_outspin.size();ix>0;--ix) { temp*=_outspin[ix-1];_constants[ix]=temp; } temp*=_inspin;_constants[0]=temp; _constants[_outspin.size()+1]=1; } private: /** * Number of outgoing particles. */ mutable unsigned int _nout; /** * Spin of the incoming particle as 2s+1. */ mutable PDT::Spin _inspin; /** * Spins of the outgonig particles. */ mutable vector<PDT::Spin> _outspin; /** * Storage of the matrix element, a vector is better for memory usage. */ mutable vector<Complex> _matrixelement; /** * Constants needed to map the index of the vector to a helicity structure. */ mutable vector<unsigned int> _constants; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of DecayMatrixElement. */ template <> struct BaseClassTrait<Herwig::DecayMatrixElement,1> { /** Typedef of the base class of DecayMatrixElement. */ typedef Base NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DecayMatrixElement> : public ClassTraitsBase<Herwig::DecayMatrixElement> { /** * Return the class name. */ static string className() { return "Herwig::DecayMatrixElement"; } }; /** @endcond */ } #endif /* HERWIG_DecayMatrixElement_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/�������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464203�020425� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/VectorMesonCurrent.cc����������������������������������������0000644�0001750�0001750�00000016455�11754474774�024572� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMesonCurrent.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the VectorMesonCurrent class. // #include "VectorMesonCurrent.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; void VectorMesonCurrent::doinit() { unsigned int isize=numberOfModes(); if(_id.size()!=isize||_decay_constant.size()!=isize) {throw InitException() << "Inconsistent parameters in VectorMesonCurrent::doinit()" << Exception::abortnow;} WeakDecayCurrent::doinit(); } VectorMesonCurrent::VectorMesonCurrent() { _id.push_back(213);_decay_constant.push_back(0.1764*GeV2); addDecayMode(2,-1); _id.push_back(113);_decay_constant.push_back(0.1764*GeV2); addDecayMode(1,-1); _id.push_back(113);_decay_constant.push_back(0.1764*GeV2); addDecayMode(2,-2); _id.push_back(223);_decay_constant.push_back(0.1764*GeV2); addDecayMode(1,-1); _id.push_back(223);_decay_constant.push_back(0.1764*GeV2); addDecayMode(2,-2); _id.push_back(333);_decay_constant.push_back(0.2380*GeV2); addDecayMode(3,-3); _id.push_back(313);_decay_constant.push_back(0.2019*GeV2); addDecayMode(1,-3); _id.push_back(323);_decay_constant.push_back(0.2019*GeV2); addDecayMode(2,-3); _id.push_back(20213);_decay_constant.push_back(0.4626*GeV2); addDecayMode(2,-1); _id.push_back(20113);_decay_constant.push_back(0.4626*GeV2); addDecayMode(1,-1); _id.push_back(20113);_decay_constant.push_back(0.4626*GeV2); addDecayMode(2,-2); _id.push_back(413);_decay_constant.push_back(0.402*GeV2); addDecayMode(4,-1); _id.push_back(423);_decay_constant.push_back(0.402*GeV2); addDecayMode(4,-2); _id.push_back(433);_decay_constant.push_back(0.509*GeV2); addDecayMode(4,-3); _id.push_back(443);_decay_constant.push_back(1.223*GeV2); addDecayMode(4,-4); _id.push_back(100443);_decay_constant.push_back(1.08*GeV2); addDecayMode(4,-4); _id.push_back(10433);_decay_constant.push_back(0.397*GeV2); addDecayMode(4,-3); // initial size of the vectors _initsize=_id.size(); setInitialModes(_initsize); } void VectorMesonCurrent::persistentOutput(PersistentOStream & os) const { os << _id << ounit(_decay_constant,GeV2); } void VectorMesonCurrent::persistentInput(PersistentIStream & is, int) { is >> _id >> iunit(_decay_constant,GeV2); } ClassDescription<VectorMesonCurrent> VectorMesonCurrent::initVectorMesonCurrent; // Definition of the static class description member. void VectorMesonCurrent::Init() { static ClassDocumentation<VectorMesonCurrent> documentation ("The VectorMesonCurrent class implements the current" " for the decay of the weak current into a (pseudo)vector meson."); static ParVector<VectorMesonCurrent,int> interfaceID ("ID", "The PDG code for the outgoing meson.", &VectorMesonCurrent::_id, 0, 0, 0, -1000000, 1000000, false, false, true); static ParVector<VectorMesonCurrent,Energy2> interfaceDecay_Constant ("Decay_Constant", "The decay constant for the meson.", &VectorMesonCurrent::_decay_constant, GeV2, -1, 1.0*GeV2,-10.0*GeV2, 10.0*GeV2, false, false, true); } // create the decay phase space mode bool VectorMesonCurrent::createMode(int icharge, unsigned int imode, DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp) { tPDPtr part(getParticleData(_id[imode])); // check the mode has the correct charge if(abs(icharge)!=abs(int(getParticleData(_id[imode])->iCharge()))) return false; // check if the particle is kinematically allowed Energy min=part->massMin(); if(min>upp) return false; // construct the mode DecayPhaseSpaceChannelPtr newchannel(new_ptr(DecayPhaseSpaceChannel(*phase))); newchannel->resetDaughter(-ires,iloc); mode->addChannel(newchannel); return true; } // outgoing particles tPDVector VectorMesonCurrent::particles(int icharge, unsigned int imode, int iq, int ia) { tPDPtr part(getParticleData(_id[imode])); tPDVector output; if(icharge==int(part->iCharge())) { if(icharge==0) { int iqb,iab; decayModeInfo(imode,iqb,iab); if(iq==iqb&&ia==iab) output.push_back(part); else output.push_back(part->CC()); } else output.push_back(part); } else if(icharge==-int(part->iCharge())) output.push_back(part->CC()); return output; } vector<LorentzPolarizationVectorE> VectorMesonCurrent::current(const int imode, const int, Energy & scale,const ParticleVector & decay, DecayIntegrator::MEOption meopt) const { // set up the spin information for the particle and calculate the wavefunctions vector<LorentzPolarizationVector> temp; VectorWaveFunction:: calculateWaveFunctions(temp,decay[0],outgoing,false); if(meopt==DecayIntegrator::Terminate) { VectorWaveFunction::constructSpinInfo(temp,decay[0], outgoing,true,false); return vector<LorentzPolarizationVectorE>(1,LorentzPolarizationVectorE()); } scale=decay[0]->mass(); // polarization vector Energy fact(_decay_constant[imode]/scale); // quarks in the current int iq,ia; decayModeInfo(imode,iq,ia); if(abs(iq)==abs(ia)&&abs(iq)<3) { fact *= sqrt(0.5); if(decay[0]->id()==ParticleID::rho0&&abs(iq)==1) fact=-fact; } // normalise the current vector<LorentzPolarizationVectorE> returnval(3); for(unsigned int ix=0;ix<3;++ix) { returnval[ix] = temp[ix] * fact; } // return the answer return returnval; } bool VectorMesonCurrent::accept(vector<int> id) { if(id.size()!=1) return false; int idtemp(abs(id[0])); for(unsigned int ix=0;ix<_id.size();++ix) { if(abs(_id[ix])==idtemp) return true; } return false; } unsigned int VectorMesonCurrent::decayMode(vector<int> idout) { int idtemp(abs(idout[0])); unsigned int ix(0); bool found(false); do { if(idtemp==abs(_id[ix])) found=true; else ++ix; } while(!found); return ix; } void VectorMesonCurrent::dataBaseOutput(ofstream & output, bool header,bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::VectorMesonCurrent " << name() << " HwWeakCurrents.so\n"; for(unsigned int ix=0;ix<_id.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":ID " << ix << " " << _id[ix] << "\n"; output << "newdef " << name() << ":Decay_Constant " << ix << " " << _decay_constant[ix]/GeV2 << "\n"; } else { output << "insert " << name() << ":ID " << ix << " " << _id[ix] << "\n"; output << "insert " << name() << ":Decay_Constant " << ix << " " << _decay_constant[ix]/GeV2 << "\n"; } } WeakDecayCurrent::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/ThreeMesonDefaultCurrent.h�����������������������������������0000644�0001750�0001750�00000040007�11754474774�025534� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ThreeMesonDefaultCurrent.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ThreeMesonDefaultCurrent_H #define HERWIG_ThreeMesonDefaultCurrent_H // // This is the declaration of the ThreeMesonDefaultCurrent class. // #include "ThreeMesonCurrentBase.h" #include "Herwig++/Utilities/Interpolator.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/StandardModel/StandardModelBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The ThreeMesonDefaultCurrent class implements the currents from Z.Phys.C58:445 (1992), * this paper uses the form from Z.Phys.C48:445 (1990) for the \f$a_1\f$ width and * is the default model in TAUOLA. * * The following three meson modes are implemented. * * - \f$ \pi^- \pi^- \pi^+ \f$, (imode=0) * - \f$ \pi^0 \pi^0 \pi^- \f$, (imode=1) * - \f$ K^- \pi^- K^+ \f$, (imode=2) * - \f$ K^0 \pi^- \bar{K}^0\f$, (imode=3) * - \f$ K^- \pi^0 K^0 \f$, (imode=4) * - \f$ \pi^0 \pi^0 K^- \f$, (imode=5) * - \f$ K^- \pi^- \pi^+ \f$, (imode=6) * - \f$ \pi^- \bar{K}^0 \pi^0 \f$, (imode=7) * - \f$ \pi^- \pi^0 \eta \f$, (imode=8) * * using the currents from TAUOLA * * * @see ThreeMesonCurrentBase, * @see WeakDecayCurrent. * @see Defaulta1MatrixElement * */ class ThreeMesonDefaultCurrent: public ThreeMesonCurrentBase { /** * The matrix element for the running \f$a_1\f$ width is a friend to * keep some members private. */ friend class Defaulta1MatrixElement; public: /** * Default constructor */ ThreeMesonDefaultCurrent(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** @name Methods for the construction of the phase space integrator. */ //@{ /** * Complete the construction of the decay mode for integration. * This version addes the mesons for the current * @param icharge The total charge of the outgoing particles in the current. * @param imode The mode in the current being asked for. * @param mode The phase space mode for the integration * @param iloc The location of the of the first particle from the current in * the list of outgoing particles. * @param ires The location of the first intermediate for the current. * @param phase The prototype phase space channel for the integration. * @param upp The maximum possible mass the particles in the current are * allowed to have. * @return Whether the current was sucessfully constructed. */ virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp); //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; /** * the matrix element for the \f$a_1\f$ decay to calculate the running width * @param imode The mode for which the matrix element is needed. * @param q2 The mass of the decaying off-shell \f$a_1\f$, \f$q^2\f$. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The matrix element squared summed over spins. */ double threeBodyMatrixElement(const int imode, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const; protected: /** * Can the current handle a particular set of mesons. * As this current includes all the allowed modes this is always true. */ virtual bool acceptMode(int) const; /** * Calculate the form factor for the current. Implements the form factors * described above. * @param ichan The phase space channel * @param imode The mode * @param q2 The scale \f$q^2\f$ for the current. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. */ virtual FormFactors calculateFormFactors(const int ichan, const int imode, Energy2 q2, Energy2 s1, Energy2 s2, Energy2 s3) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); /** * Check sanity of the object during the setup phase. */ virtual void doupdate(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<ThreeMesonDefaultCurrent> initThreeMesonDefaultCurrent; /** * Private and non-existent assignment operator. */ ThreeMesonDefaultCurrent & operator=(const ThreeMesonDefaultCurrent &); private: /** * The \f$\rho\f$ Breit-Wigner for the \f$F_{1,2,3}\f$ form factors. * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @param ires Which \f$\rho\f$ multiplet * @return The Breit-Wigner */ Complex BrhoF123(Energy2 q2,int ires) const { Complex output(0.),norm(0.); for(unsigned int ix=0,N=min(3,int(_rhoF123wgts.size()));ix<N;++ix) { norm+=_rhoF123wgts[ix]; } if(ires<0) { for(unsigned int ix=0,N=min(3,int(_rhoF123wgts.size()));ix<N;++ix) { output+=_rhoF123wgts[ix]*rhoKBreitWigner(q2,0,ix); } } else { unsigned int temp(ires); if(temp<_rhoF123wgts.size()&&temp<3) output=_rhoF123wgts[temp]*rhoKBreitWigner(q2,0,temp); else output=0.; } return output/norm; } /** * The \f$\rho\f$ Breit-Wigner for the \f$F_5\f$ form factors. * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @param ires Which \f$\rho\f$ multiplet * @return The Breit-Wigner */ Complex BrhoF5(Energy2 q2,int ires) const { Complex output(0.),norm(0.); for(unsigned int ix=0,N=min(3,int(_rhoF5wgts.size()));ix<N;++ix) { norm+=_rhoF5wgts[ix]; } if(ires<0) { for(unsigned int ix=0,N=min(3,int(_rhoF5wgts.size()));ix<N;++ix) { output+=_rhoF5wgts[ix]*rhoKBreitWigner(q2,1,ix); } } else { unsigned int temp(ires); if(temp<_rhoF5wgts.size()&&temp<3) { output=_rhoF5wgts[temp]*rhoKBreitWigner(q2,1,temp); } } return output/norm; } /** * The \f$K^*\f$ Breit-Wigner for the \f$F_{1,2,3}\f$ form factors. * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @param ires Which \f$\rho\f$ multiplet * @return The Breit-Wigner */ Complex BKstarF123(Energy2 q2,int ires) const { Complex output(0.),norm(0.); for(unsigned int ix=0,N=min(3,int(_kstarF123wgts.size()));ix<N;++ix) { norm+=_kstarF123wgts[ix]; } if(ires<0) { for(unsigned int ix=0,N=min(3,int(_kstarF123wgts.size()));ix<N;++ix) { output+=_kstarF123wgts[ix]*rhoKBreitWigner(q2,2,ix); } } else { unsigned int temp(ires); if(temp<_kstarF123wgts.size()&&temp<3) { output=_kstarF123wgts[temp]*rhoKBreitWigner(q2,2,temp); } } return output/norm; } /** * The \f$K^*\f$ Breit-Wigner for the \f$F_5\f$ form factors. * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @param ires Which \f$\rho\f$ multiplet * @return The Breit-Wigner */ Complex BKstarF5(Energy2 q2,int ires) const { Complex output(0.),norm(0.); for(unsigned int ix=0,N=min(3,int(_kstarF5wgts.size()));ix<N;++ix) { norm+=_kstarF5wgts[ix]; } if(ires<0) { for(unsigned int ix=0,N=min(3,int(_kstarF5wgts.size()));ix<N;++ix) { output+=_kstarF5wgts[ix]*rhoKBreitWigner(q2,3,ix); } } else { unsigned int temp(ires); if(temp<_kstarF5wgts.size()&&temp<3) { output=_kstarF5wgts[ires]*rhoKBreitWigner(q2,3,temp); } } return output/norm; } /** * Mixed Breit Wigner for the \f$F_5\f$ form factor * @param si The scale \f$s_1\f$. * @param sj The scale \f$s_2\f$. * @param ires Which resonances to use * @return The mixed Breit-Wigner */ Complex FKrho(Energy2 si,Energy2 sj,int ires) const { Complex output; if(ires<0){output = _rhoKstarwgt*BKstarF123(si,-1)+BrhoF123(sj,-1);} else if(ires%2==0){output= _rhoKstarwgt*BKstarF123(si,ires/2);} else if(ires%2==1){output=BrhoF123(sj,ires/2);} output /=(1.+_rhoKstarwgt); return output; } /** * \f$a_1\f$ Breit-Wigner * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @return The Breit-Wigner */ Complex a1BreitWigner(Energy2 q2) const { Complex ii(0.,1.); Energy2 m2(_a1mass*_a1mass); Energy q(sqrt(q2)); return m2/(m2-q2-ii*q*a1Width(q2)); } /** * The \f$K_1\f$ Breit-Wigner * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @return The Breit-Wigner */ Complex K1BreitWigner(Energy2 q2) const { Energy2 m2 = sqr(_k1mass); Complex ii(0.,1.); complex<Energy2> fact(m2 - ii*_k1mass*_k1width); return fact/(fact-q2); } /** * The \f$a_1\f$ running width * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @return The \f$a_1\f$ running width. */ Energy a1Width(Energy2 q2) const { Energy output; if(!_a1opt) output = _a1mass*_a1width*g(q2)/g(sqr(_a1mass))/sqrt(q2); else output = (*_a1runinter)(q2); return output; } /** * The \f$g(Q^2)\f$ function of Kuhn and Santamaria */ double g(Energy2 q2) const { double output; if(q2 < 9.*sqr(_mpi)) { output=0.; } else if(q2 < sqr(_rhoF123masses[0]+_mpi)) { double diff = (q2-9.*sqr(_mpi))/GeV2; output = 4.1*sqr(diff)*diff*(1.-3.3*diff+5.8*sqr(diff)); } else { double ratio = q2/GeV2; output = ratio*(1.623+10.38/ratio-9.32/sqr(ratio)+0.65/(ratio*sqr(ratio))); } return output; } /** * Initialize the \f$a_1\f$ running width * @param iopt Initialization option (-1 full calculation, 0 set up the interpolation) */ void inita1Width(int iopt); /** * Breit-Wigners for the \f$\rho\f$ and \f$K^*\f$. * @param q2 The scale \f$q^2\f$ for the Breit-Wigner. * @param itype The type of Breit-Wigner, \e i.e. which masses and widths to use.x * @param ires Which multiplet to use. */ Complex rhoKBreitWigner(Energy2 q2,unsigned int itype,unsigned int ires) const; private: /** * Parameters for the \f$\rho\f$ Breit-Wigner in the * \f$F_{1,2,3}\f$ form factors. */ vector<double> _rhoF123wgts; /** * Parameters for the \f$K^*\f$ Breit-Wigner in the * \f$F_{1,2,3}\f$ form factors. */ vector<double> _kstarF123wgts; /** * Parameters for the \f$\rho\f$ Breit-Wigner in the * \f$F_5\f$ form factors. */ vector<double> _rhoF5wgts; /** * Parameters for the \f$K^*\f$ Breit-Wigner in the * \f$F_5\f$ form factors. */ vector<double> _kstarF5wgts; /** * The relative weight of the \f$\rho\f$ and \f$K^*\f$ where needed. */ double _rhoKstarwgt; /** * The \f$a_1\f$ width for the running \f$a_1\f$ width calculation. */ vector<Energy> _a1runwidth; /** * The \f$q^2\f$ for the running \f$a_1\f$ width calculation. */ vector<Energy2> _a1runq2; /** * The interpolator for the running \f$a_1\f$ width calculation. */ Interpolator<Energy,Energy2>::Ptr _a1runinter; /** * Initialize the running \f$a_1\f$ width. */ bool _initializea1; /** * The mass of the \f$a_1\f$ resonances. */ Energy _a1mass; /** * The width of the \f$a_1\f$ resonances. */ Energy _a1width; /** * The mass of the \f$aK1\f$ resonances. */ Energy _k1mass; /** * The width of the \f$K_1\f$ resonances. */ Energy _k1width; /** * The pion decay constant, \f$f_\pi\f$. */ Energy _fpi; /** * The pion mass */ Energy _mpi; /** * The kaon mass */ Energy _mK; /** * use local values of the \f$\rho\f$ masses and widths */ bool _rhoparameters; /** * The \f$\rho\f$ masses for the \f$F_{1,2,3}\f$ form factors. */ vector<Energy> _rhoF123masses; /** * The \f$\rho\f$ masses for the \f$F_5\f$ form factors. */ vector<Energy> _rhoF5masses; /** * The \f$\rho\f$ widths for the \f$F_{1,2,3}\f$ form factors. */ vector<Energy> _rhoF123widths; /** * The \f$\rho\f$ widths for the \f$F_5\f$ form factors. */ vector<Energy> _rhoF5widths; /** * use local values of the \f$K^*\f$ resonances masses and widths */ bool _kstarparameters; /** * The \f$K^*\f$ masses for the \f$F_{1,2,3}\f$ form factors. */ vector<Energy> _kstarF123masses; /** * The \f$K^*\f$ masses for the \f$F_5\f$ form factors. */ vector<Energy> _kstarF5masses; /** * The \f$K^*\f$ widths for the \f$F_{1,2,3}\f$ form factors. */ vector<Energy> _kstarF123widths; /** * The \f$K^*\f$ widths for the \f$F_5\f$ form factors. */ vector<Energy> _kstarF5widths; /** * Use local values of the \f$a_1\f$ parameters */ bool _a1parameters; /** * Use local values of the \f$K_1\f$ parameters */ bool _k1parameters; /** * Option for the \f$a_1\f$ width */ bool _a1opt; /** * The maximum mass of the hadronic system */ Energy _maxmass; /** * The maximum mass when the running width was calculated */ Energy _maxcalc; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ThreeMesonDefaultCurrent. */ template <> struct BaseClassTrait<Herwig::ThreeMesonDefaultCurrent,1> { /** Typedef of the base class of ThreeMesonDefaultCurrent. */ typedef Herwig::ThreeMesonCurrentBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ThreeMesonDefaultCurrent> : public ClassTraitsBase<Herwig::ThreeMesonDefaultCurrent> { /** Return the class name. */ static string className() { return "Herwig::ThreeMesonDefaultCurrent"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwWeakCurrents.so"; } }; /** @endcond */ } #endif /* THEPEG_ThreeMesonDefaultCurrent_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/WeakDecayCurrent.h�������������������������������������������0000644�0001750�0001750�00000020433�11754474774�024014� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // WeakDecayCurrent.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_WeakDecayCurrent_H #define HERWIG_WeakDecayCurrent_H // // This is the declaration of the WeakDecayCurrent class. // #include "ThePEG/Interface/Interfaced.h" #include "WeakDecayCurrent.fh" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/Decay/DecayPhaseSpaceChannel.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" namespace Herwig { using namespace ThePEG; using ThePEG::Helicity::LorentzPolarizationVector; using ThePEG::Helicity::LorentzPolarizationVectorE; /** \ingroup Decay * * The <code>WeakDecayCurrent</code> class is the base class for the hadronic * currents produced in weak decays. This is designed so it can be used in * any weak decay. In general the currents which are implemented are either * simple one meson production or taken from tau decay. * * In classes inheriting from this one a number of member functions must be implemented * * - createMode which takes a vector of partially completed DecayPhaseSpaceChannel * and adds the extra information required for the current. This method should * assume that the particles from the current are the last ones specified in the * DecayPhaseSpaceMode. This method will then construct the DecayPhaseSpaceMode * for the decay. * * - particles() which returns the external particles produced by the current. * * - current() which given the decay products calculates the decay current * * - accept() which uses the PDG codes for the particles in the current to * decide if a given mode is allowed. * * - decayMode() which uses the PDG codes for the particles in the current to * workout which modes is being performed. * * - dataBaseOutput() which should output the information on all the Interfaces so * that the WeakDecayCurrent can be reconstructed by the Herwig++ particle * properties database. * * @see Interfaced. * */ class WeakDecayCurrent: public Interfaced { public: /** * Default constructor */ WeakDecayCurrent() : _numbermodes(0) {} public: /** @name Methods for the construction of the phase space integrator. */ //@{ /** * Complete the construction of the decay mode for integration.classes inheriting * from this one. * This method is purely virtual and must be implemented in the classes inheriting * from WeakDecayCurrent. * @param icharge The total charge of the outgoing particles in the current. * @param imode The mode in the current being asked for. * @param mode The phase space mode for the integration * @param iloc The location of the of the first particle from the current in * the list of outgoing particles. * @param ires The location of the first intermediate for the current. * @param phase The prototype phase space channel for the integration. * @param upp The maximum possible mass the particles in the current are * allowed to have. * @return Whether the current was sucessfully constructed. */ virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp)=0; /** * The particles produced by the current. This method is purely virtual and * must be implemented in classes inheriting from this one. * @param icharge The total charge of the particles in the current. * @param imode The mode for which the particles are being requested * @param iq The PDG code for the quark * @param ia The PDG code for the antiquark * @return The external particles for the current. */ virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia)=0; //@} /** * Return the number of modes handled by this current */ unsigned int numberOfModes() const {return _quark.size();} /** * Hadronic current. This method is purely virtual and must be implemented in * all classes inheriting from this one. * @param imode The mode * @param ichan The phase-space channel the current is needed for. * @param scale The invariant mass of the particles in the current. * @param decay The decay products * @param meopt Option for the calculation of the matrix element * @return The current. */ virtual vector<LorentzPolarizationVectorE> current(const int imode, const int ichan,Energy & scale, const ParticleVector & decay, DecayIntegrator::MEOption meopt) const=0; /** * Accept the decay. This method is purely virtual and must be implemented in any class * inheriting from this one. * @param id The id's of the particles in the current. * @return Can this current have the external particles specified. */ virtual bool accept(vector<int> id)=0; /** * Return the decay mode number for a given set of particles in the current. * This method is purely virtual and must be implemented in any class * inheriting from this one. * @param id The id's of the particles in the current. * @return The number of the mode */ virtual unsigned int decayMode(vector<int> id)=0; /** * Information on a decay mode * @param imode The mode * @param iq The PDG code of the quark. * @param ia The PDG code of the antiquark. */ void decayModeInfo(unsigned int imode, int& iq, int& ia) const { if(imode<_quark.size()) { iq=_quark[imode]; ia=_antiquark[imode]; } else { iq=0; ia=0; } } /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** * Add a decay mode to the list. * @param iq The PDG code for the quark. * @param ia The PDG code for the antiquark. */ void addDecayMode(int iq,int ia) { _quark.push_back(iq); _antiquark.push_back(ia); } /** * Set initial number of modes * @param nmodes The number of modes. */ void setInitialModes(unsigned int nmodes) {_numbermodes=nmodes;} private: /** * Describe an abstract base class with persistent data. */ static AbstractClassDescription<WeakDecayCurrent> initWeakDecayCurrent; /** * Private and non-existent assignment operator. */ WeakDecayCurrent & operator=(const WeakDecayCurrent &); private: /** * The PDG codes for the quarks contained in the current. */ vector<int> _quark; /** * The PDG codes for the antiquarks contained in the current. */ vector<int> _antiquark; /** * The initial number of modes */ unsigned int _numbermodes; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of WeakDecayCurrent. */ template <> struct BaseClassTrait<Herwig::WeakDecayCurrent,1> { /** Typedef of the base class of WeakDecayCurrent. */ typedef Interfaced NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::WeakDecayCurrent> : public ClassTraitsBase<Herwig::WeakDecayCurrent> { /** Return the class name. */ static string className() { return "Herwig::WeakDecayCurrent"; } }; /** @endcond */ } #endif /* HERWIG_WeakDecayCurrent_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/ThreePionCLEOCurrent.cc��������������������������������������0000644�0001750�0001750�00000123617�11754474774�024665� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ThreePionCLEOCurrent.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ThreePionCLEOCurrent class. // #include "ThreePionCLEOCurrent.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" namespace { inline Energy timesGeV (double x) { return x * GeV; } inline Energy2 timesGeV2(double x) { return x * GeV2; } } using namespace Herwig; ThreePionCLEOCurrent::ThreePionCLEOCurrent() { // local particle properties _localparameters=true; // rho masses and widths if(_rhomass.size()==0) { _rhomass.push_back(0.7743*GeV);_rhowidth.push_back(0.1491*GeV); _rhomass.push_back(1.370*GeV);_rhowidth.push_back(0.386*GeV); } // f_2 mass and width _f2mass=1.275*GeV;_f2width=0.185*GeV; // f_0(1370) mass and width _f0mass=1.186*GeV;_f0width=0.350*GeV; // sigma mass and width _sigmamass = 0.860*GeV;_sigmawidth =0.880*GeV; // a1 mass and width _a1mass = 1.331*GeV;_a1width=0.814*GeV; // parameters for the K K* contribution to the a_1 running width _mKstar = 894*MeV; _mK=496*MeV; _gammk=3.32; // pion decay constant _fpi = 130.7*MeV/sqrt(2.); // couplings and phases for the different channels // p-wave rho and rho prime using Constants::pi; if(_rhomagP.size()==0) { _rhomagP.push_back(1.) ;_rhophaseP.push_back(0.); _rhomagP.push_back(0.12);_rhophaseP.push_back(0.99*pi); } // d-wave rho and rho prime if(_rhomagD.size()==0) { _rhomagD.push_back(0.37/GeV2);_rhophaseD.push_back(-0.15*pi); _rhomagD.push_back(0.87/GeV2);_rhophaseD.push_back( 0.53*pi); } // f_2 _f2mag=0.71/GeV2;_f2phase=0.56*pi;_f2coup=ZERO; // sigma _sigmamag=2.10;_sigmaphase=0.23*pi;_sigmacoup=0.; // f_0 _f0mag=0.77;_f0phase=-0.54*pi;_f0coup=0.; // initialize the a_1 width _initializea1=false; _a1opt=true; double a1q2in[200]={0 ,15788.6,31577.3,47365.9,63154.6,78943.2, 94731.9,110521 ,126309 ,142098 ,157886 ,173675 , 189464 ,205252 ,221041 ,236830 ,252618 ,268407 , 284196 ,299984 ,315773 ,331562 ,347350 ,363139 , 378927 ,394716 ,410505 ,426293 ,442082 ,457871 , 473659 ,489448 ,505237 ,521025 ,536814 ,552603 , 568391 ,584180 ,599969 ,615757 ,631546 ,647334 , 663123 ,678912 ,694700 ,710489 ,726278 ,742066 , 757855 ,773644 ,789432 ,805221 ,821010 ,836798 , 852587 ,868375 ,884164 ,899953 ,915741 ,931530 , 947319 ,963107 ,978896 ,994685 , 1.01047e+06,1.02626e+06,1.04205e+06,1.05784e+06, 1.07363e+06,1.08942e+06,1.10521e+06,1.12099e+06, 1.13678e+06,1.15257e+06,1.16836e+06,1.18415e+06, 1.19994e+06,1.21573e+06,1.23151e+06,1.24730e+06, 1.26309e+06,1.27888e+06,1.29467e+06,1.31046e+06, 1.32625e+06,1.34203e+06,1.35782e+06,1.37361e+06, 1.38940e+06,1.40519e+06,1.42098e+06,1.43677e+06, 1.45256e+06,1.46834e+06,1.48413e+06,1.49992e+06, 1.51571e+06,1.53150e+06,1.54729e+06,1.56308e+06, 1.57886e+06,1.59465e+06,1.61044e+06,1.62623e+06, 1.64202e+06,1.65781e+06,1.67360e+06,1.68939e+06, 1.70517e+06,1.72096e+06,1.73675e+06,1.75254e+06, 1.76833e+06,1.78412e+06,1.79991e+06,1.81569e+06, 1.83148e+06,1.84727e+06,1.86306e+06,1.87885e+06, 1.89464e+06,1.91043e+06,1.92621e+06,1.94200e+06, 1.95779e+06,1.97358e+06,1.98937e+06,2.00516e+06, 2.02095e+06,2.03674e+06,2.05252e+06,2.06831e+06, 2.08410e+06,2.09989e+06,2.11568e+06,2.13147e+06, 2.14726e+06,2.16304e+06,2.17883e+06,2.19462e+06, 2.21041e+06,2.22620e+06,2.24199e+06,2.25778e+06, 2.27356e+06,2.28935e+06,2.30514e+06,2.32093e+06, 2.33672e+06,2.35251e+06,2.36830e+06,2.38409e+06, 2.39987e+06,2.41566e+06,2.43145e+06,2.44724e+06, 2.46303e+06,2.47882e+06,2.49461e+06,2.51039e+06, 2.52618e+06,2.54197e+06,2.55776e+06,2.57355e+06, 2.58934e+06,2.60513e+06,2.62092e+06,2.63670e+06, 2.65249e+06,2.66828e+06,2.68407e+06,2.69986e+06, 2.71565e+06,2.73144e+06,2.74722e+06,2.76301e+06, 2.77880e+06,2.79459e+06,2.81038e+06,2.82617e+06, 2.84196e+06,2.85774e+06,2.87353e+06,2.88932e+06, 2.90511e+06,2.92090e+06,2.93669e+06,2.95248e+06, 2.96827e+06,2.98405e+06,2.99984e+06,3.01563e+06, 3.03142e+06,3.04721e+06,3.06300e+06,3.07879e+06, 3.09457e+06,3.11036e+06,3.12615e+06,3.14194e+06}; double a1widthin[200]={0,0,0,0,0,0,0,0, 0,0,0,0.00021256,0.0107225,0.0554708,0.150142,0.303848, 0.522655,0.81121,1.1736,1.61381,2.13606,2.74499,3.44583,4.24454, 5.14795,6.16391,7.3014,8.57079,9.98398,11.5547,13.2987,15.2344, 17.3827,19.7683,22.4195,25.3695,28.6568,32.3264,36.4311,41.0322, 46.201,52.0203,58.5847,66.0011,74.3871,83.8666,94.5615,106.578, 119.989,134.807,150.968,168.315,186.615,205.576,224.893,244.28, 263.499,282.364,300.748,318.569,335.781,352.367,368.327,383.677, 398.438,412.638,426.306,439.472,452.167,464.421,476.263,487.719, 498.815,509.576,520.024,530.179,540.063,549.693,559.621,568.26, 577.229,586.005,594.604,603.035,611.314,619.447,627.446,635.321, 643.082,650.736,658.288,665.75,673.127,680.427,687.659,694.82, 701.926,708.977,715.983,722.944,729.862,736.752,743.619,750.452, 757.271,764.076,770.874,777.658,784.444,791.233,798.027,804.838, 811.649,818.485,825.342,832.224,839.139,846.082,853.059,860.079, 867.143,874.248,881.409,919.527,945.28,965.514,983.228,999.471, 1014.69,1029.15,1043.05,1056.49,1069.57,1082.36,1094.88,1107.2, 1120.89,1131.4,1143.33,1155.15,1166.92,1178.61,1190.27,1201.92, 1213.55,1225.18,1236.81,1250.06,1260.16,1271.86,1283.64,1295.46, 1307.36,1319.3,1331.34,1343.45,1355.64,1367.93,1380.31,1392.77, 1405.35,1418.03,1430.83,1443.75,1457.17,1469.94,1483.22,1496.64, 1510.18,1523.86,1537.67,1551.64,1565.72,1579.99,1594.38,1608.92, 1623.63,1642.08,1653.51,1668.69,1684.03,1699.53,1715.21,1731.04, 1747.05,1763.23,1779.59,1796.12,1812.83,1829.72,1846.79,1864.04, 1881.49,1899.11,1916.93,1934.93,1953.13,1971.52,1990.12,2008.89}; if(_a1runwidth.empty()) { vector<double> tmp1(a1widthin,a1widthin+200); std::transform(tmp1.begin(), tmp1.end(), back_inserter(_a1runwidth), timesGeV); vector<double> tmp2(a1q2in,a1q2in+200); _a1runq2.clear(); std::transform(tmp2.begin(), tmp2.end(), back_inserter(_a1runq2), timesGeV2); } // zero parameters which will be calculated later to avoid problems _pf2cc=ZERO; _pf200=ZERO; _pf0cc=ZERO; _pf000=ZERO; _psigmacc=ZERO; _psigma00=ZERO; _mpi0=ZERO; _mpic=ZERO; _fact=ZERO; _maxmass=ZERO; _maxcalc=ZERO; } void ThreePionCLEOCurrent::doinit() { ThreeMesonCurrentBase::doinit(); // pointers to the particles we need tPDPtr a1m = getParticleData(ParticleID::a_1minus); // the different rho resonances tPDPtr rhom[3]; rhom[0] = getParticleData(-213); rhom[1] = getParticleData(-100213); rhom[2] = getParticleData(-30213); // the sigma tPDPtr sigma = getParticleData(9000221); // the f_2 tPDPtr f2=getParticleData(225); // the f_0 tPDPtr f0=getParticleData(10221); if(_localparameters) { // make sure the rho array has enough masses if(_rhomass.size()<3) { for(unsigned int ix=_rhomass.size();ix<3;++ix) { _rhomass.push_back(rhom[ix]->mass()); _rhowidth.push_back(rhom[ix]->width()); } } } // set the local variables if needed else { // masses and widths for the particles _rhomass.resize(3);_rhowidth.resize(3); for(unsigned int ix=0;ix<3;++ix) {_rhomass[ix]=rhom[ix]->mass();_rhowidth[ix]=rhom[ix]->width();} _f2mass=f2->mass();_f2width=f2->width(); _f0mass=f0->mass();_f0width=f0->width(); _sigmamass=sigma->mass();_sigmawidth=sigma->width(); _a1mass=a1m->mass();_a1width=a1m->width(); _mKstar=getParticleData(ParticleID::Kstarplus)->mass(); _mK =getParticleData(ParticleID::Kplus)->mass(); } // parameters for the breit-wigners _mpic=getParticleData(ParticleID::piplus)->mass(); _mpi0=getParticleData(ParticleID::pi0)->mass(); // momenta of the decay products for on-shell particles _psigmacc=Kinematics::pstarTwoBodyDecay(_sigmamass,_mpic,_mpic); _psigma00=Kinematics::pstarTwoBodyDecay(_sigmamass,_mpi0,_mpi0); _pf2cc=Kinematics::pstarTwoBodyDecay(_f2mass,_mpic,_mpic); _pf200=Kinematics::pstarTwoBodyDecay(_f2mass,_mpi0,_mpi0); _pf0cc=Kinematics::pstarTwoBodyDecay(_f0mass,_mpic,_mpic); _pf000=Kinematics::pstarTwoBodyDecay(_f0mass,_mpi0,_mpi0); _prhocc.resize(3);_prhoc0.resize(3); for(unsigned int ix=0;ix<3;++ix) { _prhocc[ix]=Kinematics::pstarTwoBodyDecay(_rhomass[ix],_mpic,_mpic); _prhoc0[ix]=Kinematics::pstarTwoBodyDecay(_rhomass[ix],_mpic,_mpi0); } // couplings for the different modes Complex ii(0.,1.); _rhocoupP.resize(_rhomagP.size()); for(unsigned int ix=0;ix<_rhomagP.size();++ix) {_rhocoupP[ix]=_rhomagP[ix]*(cos(_rhophaseP[ix])+ii*sin(_rhophaseP[ix]));} _rhocoupD.resize(_rhomagD.size()); for(unsigned int ix=0;ix<_rhomagD.size();++ix) {_rhocoupD[ix]=_rhomagD[ix]*(cos(_rhophaseD[ix])+ii*sin(_rhophaseD[ix]));} _f0coup=_f0mag*(cos(_f0phase)+ii*sin(_f0phase)); _f2coup=_f2mag*(cos(_f2phase)+ii*sin(_f2phase)); _sigmacoup=_sigmamag*(cos(_sigmaphase)+ii*sin(_sigmaphase)); // overall coupling _fact = 2.*sqrt(2.)/_fpi/3.; // initialise the a_1 running width calculation inita1Width(-1); } void ThreePionCLEOCurrent::persistentOutput(PersistentOStream & os) const { os << ounit(_rhomass,GeV) << ounit(_rhowidth,GeV) << ounit(_prhocc,GeV) << ounit(_prhoc0,GeV) << ounit(_f2mass,GeV) << ounit(_f2width,GeV) << ounit(_pf2cc,GeV) << ounit(_pf200,GeV) << ounit(_f0mass,GeV) << ounit(_f0width,GeV) << ounit(_pf0cc,GeV) << ounit(_pf000,GeV) << ounit(_sigmamass,GeV) << ounit(_sigmawidth,GeV) << ounit(_psigmacc,GeV) << ounit(_psigma00,GeV) << ounit(_mpi0,GeV) << ounit(_mpic,GeV) << ounit(_fpi,GeV) << ounit(_fact,1/GeV) << _rhomagP << _rhophaseP << _rhocoupP << ounit(_rhomagD,1/GeV2) << _rhophaseD << ounit(_rhocoupD,1/GeV2) <<ounit(_f2mag,1/GeV2) << _f2phase << ounit(_f2coup ,1/GeV2) << _f0mag << _f0phase << _f0coup << _sigmamag << _sigmaphase << _sigmacoup << _localparameters << ounit(_a1mass,GeV) << ounit(_a1width,GeV) << ounit(_a1runwidth,GeV) << ounit(_a1runq2,GeV2) << _initializea1 << ounit(_mKstar,GeV) << ounit(_mK,GeV) << _gammk << _a1opt << ounit(_maxmass,GeV) << ounit(_maxcalc,GeV); } void ThreePionCLEOCurrent::persistentInput(PersistentIStream & is, int) { is >> iunit(_rhomass,GeV) >> iunit(_rhowidth,GeV) >> iunit(_prhocc,GeV) >> iunit(_prhoc0,GeV) >> iunit(_f2mass,GeV) >> iunit(_f2width,GeV) >> iunit(_pf2cc,GeV) >> iunit(_pf200,GeV) >> iunit(_f0mass,GeV) >> iunit(_f0width,GeV) >> iunit(_pf0cc,GeV) >> iunit(_pf000,GeV) >> iunit(_sigmamass,GeV) >> iunit(_sigmawidth,GeV) >> iunit(_psigmacc,GeV) >> iunit(_psigma00,GeV) >> iunit(_mpi0,GeV) >> iunit(_mpic,GeV) >> iunit(_fpi,GeV) >> iunit(_fact,1/GeV) >> _rhomagP >> _rhophaseP >> _rhocoupP >> iunit(_rhomagD,1/GeV2) >> _rhophaseD >> iunit(_rhocoupD,1/GeV2) >> iunit(_f2mag,1/GeV2) >> _f2phase >> iunit(_f2coup,1/GeV2) >> _f0mag >> _f0phase >> _f0coup >> _sigmamag >> _sigmaphase >> _sigmacoup >> _localparameters >> iunit(_a1mass,GeV) >> iunit(_a1width,GeV) >> iunit(_a1runwidth,GeV) >> iunit(_a1runq2,GeV2) >> _initializea1 >> iunit(_mKstar,GeV) >> iunit(_mK,GeV) >> _gammk >> _a1opt >> iunit(_maxmass,GeV) >> iunit(_maxcalc,GeV); } ClassDescription<ThreePionCLEOCurrent> ThreePionCLEOCurrent::initThreePionCLEOCurrent; // Definition of the static class description member. void ThreePionCLEOCurrent::Init() { static ClassDocumentation<ThreePionCLEOCurrent> documentation ("The ThreePionCLEOCurrent class performs the decay of the" " tau to three pions using the currents from CLEO", "The decay of tau to three pions is modelled using the currents from " "\\cite{Asner:1999kj}.", " %\\cite{Asner:1999kj}\n" "\\bibitem{Asner:1999kj}\n" " D.~M.~Asner {\\it et al.} [CLEO Collaboration],\n" " ``Hadronic structure in the decay tau- --> nu/tau pi- pi0 pi0 and the sign\n" " %of the tau neutrino helicity,''\n" " Phys.\\ Rev.\\ D {\\bf 61}, 012002 (2000)\n" " [arXiv:hep-ex/9902022].\n" " %%CITATION = PHRVA,D61,012002;%%\n" ); static ParVector<ThreePionCLEOCurrent,Energy> interfacerhomass ("RhoMasses", "The masses of the different rho resonnaces", &ThreePionCLEOCurrent::_rhomass, MeV, 0, ZERO, -10000*MeV, 10000*MeV, false, false, true); static ParVector<ThreePionCLEOCurrent,Energy> interfacerhowidth ("RhoWidths", "The widths of the different rho resonnaces", &ThreePionCLEOCurrent::_rhowidth, MeV, 0, ZERO, -10000*MeV, 10000*MeV, false, false, true); static Parameter<ThreePionCLEOCurrent,Energy> interfacef_2Mass ("f_2Mass", "The mass of the f_2 meson", &ThreePionCLEOCurrent::_f2mass, GeV, 1.275*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ThreePionCLEOCurrent,Energy> interfacef_2Width ("f_2Width", "The width of the f_2 meson", &ThreePionCLEOCurrent::_f2width, GeV, 0.185*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ThreePionCLEOCurrent,Energy> interfacef_0Mass ("f_0Mass", "The mass of the f_0 meson", &ThreePionCLEOCurrent::_f0mass, GeV, 1.186*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ThreePionCLEOCurrent,Energy> interfacef_0Width ("f_0Width", "The width of the f_0 meson", &ThreePionCLEOCurrent::_f0width, GeV, 0.350*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<ThreePionCLEOCurrent,Energy> interfacesigmaMass ("sigmaMass", "The mass of the sigma meson", &ThreePionCLEOCurrent::_sigmamass, GeV, 0.860*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ThreePionCLEOCurrent,Energy> interfacesigmaWidth ("sigmaWidth", "The width of the sigma meson", &ThreePionCLEOCurrent::_sigmawidth, GeV, 0.880*GeV, ZERO, 2.0*GeV, false, false, true); static Parameter<ThreePionCLEOCurrent,Energy> interfacea1Mass ("a1Mass", "The mass of the a_1 meson", &ThreePionCLEOCurrent::_a1mass, GeV, 1.331*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ThreePionCLEOCurrent,Energy> interfacea1Width ("a1Width", "The width of the a_1 meson", &ThreePionCLEOCurrent::_a1width, GeV, 0.814*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ThreePionCLEOCurrent,Energy> interfaceKaonMass ("KaonMass", "The mass of the kaon", &ThreePionCLEOCurrent::_mK, GeV, 0.496*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ThreePionCLEOCurrent,Energy> interfaceKStarMass ("KStarMass", "The mass of the k* meson", &ThreePionCLEOCurrent::_mKstar, GeV, 0.894*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ThreePionCLEOCurrent,double> interfaceKaonCoupling ("KaonCoupling", "The relative coupling for the kaon in the a_1 running width", &ThreePionCLEOCurrent::_gammk, 3.32, 0.0, 10.0, false, false, true); static Parameter<ThreePionCLEOCurrent,Energy> interfaceFpi ("Fpi", "The pion decay constant", &ThreePionCLEOCurrent::_fpi, MeV, 130.7*MeV/sqrt(2.), ZERO, 500.0*MeV, false, false, true); static ParVector<ThreePionCLEOCurrent,double> interfacerhomagP ("RhoPWaveMagnitude", "The magnitude of the couplings for the p-wave rho currents", &ThreePionCLEOCurrent::_rhomagP, 0, 0, 0, 0, 10000, false, false, true); static ParVector<ThreePionCLEOCurrent,double> interfacerhophaseP ("RhoPWavePhase", "The phase of the couplings for the p-wave rho currents", &ThreePionCLEOCurrent::_rhophaseP, 0, 0, 0, -Constants::twopi, Constants::twopi, false, false, true); static ParVector<ThreePionCLEOCurrent,InvEnergy2> interfacerhomagD ("RhoDWaveMagnitude", "The magnitude of the couplings for the d-wave rho currents", &ThreePionCLEOCurrent::_rhomagD, 1/MeV2, 0, ZERO, ZERO, 10000/MeV2, false, false, true); static ParVector<ThreePionCLEOCurrent,double> interfacerhophaseD ("RhoDWavePhase", "The phase of the couplings for the d-wave rho currents", &ThreePionCLEOCurrent::_rhophaseD, 0, 0, 0, -Constants::twopi, Constants::twopi, false, false, true); static Parameter<ThreePionCLEOCurrent,double> interfacef0Phase ("f0Phase", "The phase of the f_0 scalar current", &ThreePionCLEOCurrent::_f0phase, 0.54*Constants::pi, -Constants::twopi, Constants::twopi, false, false, true); static Parameter<ThreePionCLEOCurrent,double> interfacef2Phase ("f2Phase", "The phase of the f_2 tensor current", &ThreePionCLEOCurrent::_f2phase, 0.56*Constants::pi,-Constants::twopi, Constants::twopi, false, false, true); static Parameter<ThreePionCLEOCurrent,double> interfacesigmaPhase ("sigmaPhase", "The phase of the sigma scalar current", &ThreePionCLEOCurrent::_sigmaphase, 0.23*Constants::pi, -Constants::twopi, Constants::twopi, false, false, true); static Parameter<ThreePionCLEOCurrent,double> interfacef0Magnitude ("f0Magnitude", "The magnitude of the f_0 scalar current", &ThreePionCLEOCurrent::_f0mag, 0.77, 0.0, 10, false, false, true); static Parameter<ThreePionCLEOCurrent,InvEnergy2> interfacef2Magnitude ("f2Magnitude", "The magnitude of the f_2 tensor current", &ThreePionCLEOCurrent::_f2mag, 1./GeV2, 0.71/GeV2, ZERO, 10./GeV2, false, false, true); static Parameter<ThreePionCLEOCurrent,double> interfacesigmaMagnitude ("sigmaMagnitude", "The magnitude of the sigma scalar current", &ThreePionCLEOCurrent::_sigmamag, 2.1, 0.0, 10, false, false, true); static Switch<ThreePionCLEOCurrent,bool> interfaceLocalParameters ("LocalParameters", "Use local values of the intermediate resonances masses and widths", &ThreePionCLEOCurrent::_localparameters, true, false, false); static SwitchOption interfaceLocalParametersLocal (interfaceLocalParameters, "Local", "Use the local values", true); static SwitchOption interfaceLocalParametersDefault (interfaceLocalParameters, "ParticleData", "Use the values from the particleData objects", false); static ParVector<ThreePionCLEOCurrent,Energy> interfacea1RunningWidth ("a1RunningWidth", "The values of the a_1 width for interpolation to giving the running width.", &ThreePionCLEOCurrent::_a1runwidth, MeV, 0, ZERO, ZERO, 10000000*MeV, false, false, true); static ParVector<ThreePionCLEOCurrent,Energy2> interfacea1RunningQ2 ("a1RunningQ2", "The values of the q^2 for interpolation to giving the running width.", &ThreePionCLEOCurrent::_a1runq2, MeV2, 0, ZERO, ZERO, 10000000*MeV2, false, false, true); static Switch<ThreePionCLEOCurrent,bool> interfaceInitializea1 ("Initializea1", "Initialise the calculation of the a_1 running width", &ThreePionCLEOCurrent::_initializea1, false, false, false); static SwitchOption interfaceInitializea1Initialization (interfaceInitializea1, "Yes", "Initialize the calculation", true); static SwitchOption interfaceInitializea1NoInitialization (interfaceInitializea1, "No", "Use the default values", false); static Switch<ThreePionCLEOCurrent,bool> interfacea1WidthOption ("a1WidthOption", "Option for the treatment of the a1 width", &ThreePionCLEOCurrent::_a1opt, true, false, false); static SwitchOption interfacea1WidthOptionLocal (interfacea1WidthOption, "Local", "Use a calculation of the running width based on the parameters as" " interpolation table.", true); static SwitchOption interfacea1WidthOptionParam (interfacea1WidthOption, "Kuhn", "Use the parameterization of Kuhn and Santamaria for default parameters." " This should only be used for testing vs TAUOLA", false); } // initialisation of the a_1 width // (iopt=-1 initialises, iopt=0 starts the interpolation) void ThreePionCLEOCurrent::inita1Width(int iopt) { if(iopt==-1) { _maxcalc=_maxmass; if(!_initializea1||_maxmass==ZERO) return; // parameters for the table of values Energy2 step=sqr(_maxmass)/200.; // function to be integrated to give the matrix element // integrator to perform the integral vector<double> inweights;inweights.push_back(0.5);inweights.push_back(0.5); vector<int> intype;intype.push_back(2);intype.push_back(3); Energy mrho=getParticleData(ParticleID::rhoplus)->mass(); Energy wrho=getParticleData(ParticleID::rhoplus)->width(); vector<Energy> inmass;inmass.push_back(mrho);inmass.push_back(mrho); vector<Energy> inwidth;inwidth.push_back(wrho);inwidth.push_back(wrho); vector<double> inpow(2,0.0); ThreeBodyAllOnCalculator<ThreePionCLEOCurrent> widthgenN(inweights,intype,inmass,inwidth,inpow,*this,0,_mpi0,_mpi0,_mpic); ThreeBodyAllOnCalculator<ThreePionCLEOCurrent> widthgenC(inweights,intype,inmass,inwidth,inpow,*this,1,_mpic,_mpic,_mpic); // normalisation constant to give physical width if on shell double a1const = _a1width/(widthgenN.partialWidth(sqr(_a1mass))+ widthgenC.partialWidth(sqr(_a1mass))); // loop to give the values _a1runq2.clear();_a1runwidth.clear(); for(Energy2 moff2=ZERO; moff2<=sqr(_maxmass); moff2+=step) { Energy moff=sqrt(moff2); _a1runq2.push_back(moff2); Energy charged=a1const*widthgenC.partialWidth(moff2); Energy neutral=a1const*widthgenN.partialWidth(moff2); Energy kaon = moff<=_mK+_mKstar ? ZERO : 2.870*_gammk*_gammk/8./Constants::pi* Kinematics::pstarTwoBodyDecay(moff,_mK,_mKstar)/moff2*GeV2; Energy total = charged + neutral + kaon; _a1runwidth.push_back(total); } } // set up the interpolator else if(iopt==0) { _a1runinter = make_InterpolatorPtr(_a1runwidth,_a1runq2,3); } } // modes handled by this class bool ThreePionCLEOCurrent::acceptMode(int imode) const { return imode>=0&&imode<=1; } ThreePionCLEOCurrent::FormFactors ThreePionCLEOCurrent:: calculateFormFactors(const int ichan, const int imode, Energy2 q2, Energy2 s1, Energy2 s2, Energy2 s3) const { Complex F1=0., F2=0., F3=0.;//F4=0.;F5=0.; // calculate the form factors without the a_1 piece CLEOFormFactor(imode,ichan,q2,s1,s2,s3,F1,F2,F3); // change sign of the f_2 term F2=-F2; // multiply by the a_1 factor complex<InvEnergy> a1fact = a1BreitWigner(q2) * _fact; return FormFactors(F1*a1fact, F2*a1fact, F3*a1fact); } void ThreePionCLEOCurrent::CLEOFormFactor(int imode,int ichan, Energy2 q2,Energy2 s1, Energy2 s2, Energy2 s3, Complex & F1, Complex & F2, Complex & F3) const { useMe(); if(imode==0) { // compute the breit wigners we need Complex rhos1bw[3],rhos2bw[3],f0bws1,sigbws1,f2bws1,f0bws2,sigbws2,f2bws2; for(unsigned int ix=0,N=max(_rhocoupP.size(),_rhocoupD.size());ix<N;++ix) { rhos1bw[ix]=rhoBreitWigner(ix,s1,0); rhos2bw[ix]=rhoBreitWigner(ix,s2,0); } f0bws1 =f0BreitWigner(s1,0); sigbws1 =sigmaBreitWigner(s1,0); f2bws1 =f2BreitWigner(s1,0); f0bws2 =f0BreitWigner(s2,0); sigbws2 =sigmaBreitWigner(s2,0); f2bws2 =f2BreitWigner(s2,0); if(ichan<0) { // the p-wave rho terms for(unsigned int ix=0;ix<_rhocoupP.size();++ix) { F1-=_rhocoupP[ix]*rhos1bw[ix]; F2-=_rhocoupP[ix]*rhos2bw[ix]; } // the D-wave rho terms Energy2 Dfact1=1./3.*(s1-s3); Energy2 Dfact2=1./3.*(s2-s3); for(unsigned int ix=0;ix<_rhocoupD.size();++ix) { F1-=Dfact1*_rhocoupD[ix]*rhos2bw[ix]; F2-=Dfact2*_rhocoupD[ix]*rhos1bw[ix]; F3-=_rhocoupD[ix]*(Dfact2*rhos1bw[ix]-Dfact1*rhos2bw[ix]); } // the scalar terms F1-=2./3.*(_sigmacoup*sigbws2+_f0coup*f0bws2); F2-=2./3.*(_sigmacoup*sigbws1+_f0coup*f0bws1); F3+=-2./3.*(_sigmacoup*sigbws1+_f0coup*f0bws1) +2./3.*(_sigmacoup*sigbws2+_f0coup*f0bws2); // the tensor terms complex<Energy2> sfact1 = 1./18.*(4.*_mpic*_mpic-s1)*(q2+s1-_mpic*_mpic)/s1*f2bws1; complex<Energy2> sfact2 = 1./18.*(4.*_mpic*_mpic-s2)*(q2+s2-_mpic*_mpic)/s2*f2bws2; F1+=_f2coup*(0.5*(s3-s2)*f2bws1-sfact2); F2+=_f2coup*(0.5*(s3-s1)*f2bws2-sfact1); F3+=_f2coup*(-sfact1+sfact2); } else if(ichan%2==0&&ichan<=4) { unsigned int ires=ichan/2; Energy2 Dfact2=1./3.*(s2-s3); if(ires<_rhocoupP.size()) F1-=_rhocoupP[ires]*rhos1bw[ires]; if(ires<_rhocoupD.size()) { F2-=Dfact2*_rhocoupD[ires]*rhos1bw[ires]; F3-=_rhocoupD[ires]*Dfact2*rhos1bw[ires]; } } else if(ichan%2==1&&ichan<=5) { unsigned int ires=(ichan-1)/2; Energy2 Dfact1=1./3.*(s1-s3); if(ires<_rhocoupP.size()) { F2-=_rhocoupP[ires]*rhos2bw[ires]; } if(ires<_rhocoupD.size()) { F1-=Dfact1*_rhocoupD[ires]*rhos2bw[ires]; F3+=_rhocoupD[ires]*Dfact1*rhos2bw[ires]; } } else if(ichan==6) { F2-=2./3.*_sigmacoup*sigbws1; F3-=2./3.*_sigmacoup*sigbws1; } else if(ichan==7) { F1-=2./3.*_sigmacoup*sigbws2; F3+=2./3.*_sigmacoup*sigbws2; } else if(ichan==8) { complex<Energy2> sfact1 = 1./18.*(4.*_mpic*_mpic-s1)*(q2+s1-_mpic*_mpic)/s1*f2bws1; F1+=_f2coup*0.5*(s3-s2)*f2bws1; F2-=_f2coup*sfact1; F3-=_f2coup*sfact1; } else if(ichan==9) { complex<Energy2> sfact2 = 1./18.*(4.*_mpic*_mpic-s2)*(q2+s2-_mpic*_mpic)/s2*f2bws2; F1-=_f2coup*sfact2; F2+=_f2coup*0.5*(s3-s1)*f2bws2; F3+=_f2coup*sfact2; } else if(ichan==10) { F2-=2./3.*_f0coup*f0bws1; F3-=2./3.*_f0coup*f0bws1; } else if(ichan==11) { F1-=2./3.*_f0coup*f0bws2; F3+=2./3.*_f0coup*f0bws2; } } // calculate the pi0 pi0 pi+ factor else if(imode==1) { // compute the breit wigners we need Complex rhos1bw[3],rhos2bw[3],f0bw,sigbw,f2bw; for(unsigned int ix=0,N=max(_rhocoupP.size(),_rhocoupD.size());ix<N;++ix) { rhos1bw[ix]=rhoBreitWigner(ix,s1,1); rhos2bw[ix]=rhoBreitWigner(ix,s2,1); } f0bw =f0BreitWigner(s3,1); sigbw =sigmaBreitWigner(s3,1); f2bw =f2BreitWigner(s3,1); if(ichan<0) { // the p-wave rho terms for(unsigned int ix=0;ix<_rhocoupP.size();++ix) { F1+=_rhocoupP[ix]*rhos1bw[ix]; F2+=_rhocoupP[ix]*rhos2bw[ix]; } // the D-wave rho terms Energy2 Dfact1=-1./3.*((s3-_mpic*_mpic)-(s1-_mpi0*_mpi0)); Energy2 Dfact2=-1./3.*((s3-_mpic*_mpic)-(s2-_mpi0*_mpi0)); for(unsigned int ix=0;ix<_rhocoupD.size();++ix) { F1+=Dfact1*_rhocoupD[ix]*rhos2bw[ix]; F2+=Dfact2*_rhocoupD[ix]*rhos1bw[ix]; F3+=_rhocoupD[ix]*(Dfact2*rhos1bw[ix]-Dfact1*rhos2bw[ix]); } // the scalar terms Complex scalar=2./3.*(_sigmacoup*sigbw+_f0coup*f0bw); F1+=scalar;F2+=scalar; // the tensor terms Complex Dfact3=1./18./s3*_f2coup*(q2-_mpic*_mpic+s3)*(4.*_mpi0*_mpi0-s3)*f2bw; F1+=Dfact3;F2+=Dfact3; F3-=0.5*_f2coup*(s1-s2)*f2bw; } else if(ichan%2==0&&ichan<=4) { unsigned int ires=ichan/2; if(ires<_rhocoupP.size()){F1+=_rhocoupP[ires]*rhos1bw[ires];} Energy2 Dfact2=-1./3.*((s3-_mpic*_mpic)-(s2-_mpi0*_mpi0)); if(ires<_rhocoupD.size()) { F2+=Dfact2*_rhocoupD[ires]*rhos1bw[ires]; F3+=_rhocoupD[ires]*Dfact2*rhos1bw[ires]; } } else if(ichan%2==1&&ichan<=5) { unsigned int ires=(ichan-1)/2; if(ires<_rhocoupP.size()){F2+=_rhocoupP[ires]*rhos2bw[ires];} Energy2 Dfact1=-1./3.*((s3-_mpic*_mpic)-(s1-_mpi0*_mpi0)); if(ires<_rhocoupD.size()) { F1+=Dfact1*_rhocoupD[ires]*rhos2bw[ires]; F3-=_rhocoupD[ires]*Dfact1*rhos2bw[ires]; } } else if(ichan==6) { F1+=2./3.*_sigmacoup*sigbw; F2+=2./3.*_sigmacoup*sigbw; } else if(ichan==7) { Complex Dfact3=1./18./s3*_f2coup*(q2-_mpic*_mpic+s3)*(4.*_mpi0*_mpi0-s3)*f2bw; F1+=Dfact3;F2+=Dfact3; F3-=0.5*_f2coup*(s1-s2)*f2bw; } else if(ichan==8) { F1+=2./3.*_f0coup*f0bw; F2+=2./3.*_f0coup*f0bw; } } else { throw DecayIntegratorError() << "ThreePionCLEOCurrent Unknown Decay" << imode << Exception::abortnow; } // identical particle factors double fact = 1./sqrt(2.); F1*=fact;F2*=fact;F3*=fact; } // complete the construction of the decay mode for integration bool ThreePionCLEOCurrent::createMode(int icharge, unsigned int imode, DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp) { if(!acceptMode(imode)){return false;} int iq(0),ia(0); tPDVector extpart=particles(1,imode,iq,ia); Energy min(ZERO); for(unsigned int ix=0;ix<extpart.size();++ix) min+=extpart[ix]->massMin(); if(min>upp) return false; _maxmass=max(_maxmass,upp); // pointers to the particles we need tPDPtr a1m = getParticleData(ParticleID::a_1minus); // the different rho resonances tPDPtr rhom[3]; if(icharge==-3) { rhom[0] = getParticleData(-213); rhom[1] = getParticleData(-100213); rhom[2] = getParticleData(-30213); } else if(icharge==3) { rhom[0] = getParticleData(213); rhom[1] = getParticleData(100213); rhom[2] = getParticleData(30213); } else { return false; } tPDPtr rho0[3] = {getParticleData(113),getParticleData(100113), getParticleData(30113)}; // the sigma tPDPtr sigma = getParticleData(9000221); // the f_2 tPDPtr f2=getParticleData(225); // the f_0 tPDPtr f0=getParticleData(10221); // set up the integration channels DecayPhaseSpaceChannelPtr newchannel; if(imode==0) { for(unsigned int ix=0;ix<3;++ix) { if(!rho0[ix]) continue; // the neutral rho channels // first channel newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m,0,0.0,-ires-1,iloc); newchannel->addIntermediate(rho0[ix],0,0.0,iloc+1,iloc+2); mode->addChannel(newchannel); // interchanged channel newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rho0[ix],0,0.0,iloc,iloc+2); mode->addChannel(newchannel); } // the sigma channels if(sigma) { newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m,0,0.0,-ires-1,iloc); newchannel->addIntermediate(sigma,0,0.0,iloc+1,iloc+2); mode->addChannel(newchannel); // interchanged channel newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(sigma,0,0.0,iloc,iloc+2); mode->addChannel(newchannel); } // the f_2 channels if(f2) { newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m,0,0.0,-ires-1,iloc); newchannel->addIntermediate(f2,0,0.0,iloc+1,iloc+2); mode->addChannel(newchannel); // interchanged channel newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(f2,0,0.0,iloc,iloc+2); mode->addChannel(newchannel); } if(f0) { // the f_0 channel newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m,0,0.0,-ires-1,iloc); newchannel->addIntermediate(f0,0,0.0,iloc+1,iloc+2); mode->addChannel(newchannel); // interchanged channel newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(f0,0,0.0,iloc,iloc+2); mode->addChannel(newchannel); } } else { for(unsigned int ix=0;ix<3;++ix) { if(!rhom[ix]) continue; // first rho+ channel newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m,0,0.0,-ires-1,iloc); newchannel->addIntermediate(rhom[ix],0,0.0,iloc+2,iloc+1); mode->addChannel(newchannel); // second rho+ channel newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rhom[ix],0,0.0,iloc+2,iloc); mode->addChannel(newchannel); } // the sigma channel if(sigma) { newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m,0,0.0,-ires-1,iloc+2); newchannel->addIntermediate(sigma,0,0.0,iloc,iloc+1); mode->addChannel(newchannel); } // the f_2 channel if(f2) { newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m,0,0.0,-ires-1,iloc+2); newchannel->addIntermediate(f2,0,0.0,iloc,iloc+1); mode->addChannel(newchannel); } // the f_0 channel if(f0) { newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m,0,0.0,-ires-1,iloc+2); newchannel->addIntermediate(f0,0,0.0,iloc,iloc+1); mode->addChannel(newchannel); } } if(_localparameters) { for(unsigned int iy=0;iy<_rhomass.size();++iy) { if(rho0[iy]) mode->resetIntermediate(rho0[iy],_rhomass[iy],_rhowidth[iy]); if(rhom[iy]) mode->resetIntermediate(rhom[iy],_rhomass[iy],_rhowidth[iy]); } if(sigma) mode->resetIntermediate(sigma,_sigmamass,_sigmawidth); if(f2) mode->resetIntermediate(f2,_f2mass,_f2width); if(f0) mode->resetIntermediate(f0,_f0mass,_f0width); mode->resetIntermediate(a1m,_a1mass,_a1width); } return true; } void ThreePionCLEOCurrent::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header){output << "update decayers set parameters=\"";} if(create) { output << "create Herwig::ThreePionCLEOCurrent " << name() << " HwWeakCurrents.so\n"; } for(unsigned int ix=0;ix<_rhomass.size();++ix) { if(ix<2) { output << "newdef " << name() << ":RhoMasses " << ix << " " << _rhomass[ix]/MeV << "\n"; } else { output << "insert " << name() << ":RhoMasses " << ix << " " << _rhomass[ix]/MeV << "\n"; } } for(unsigned int ix=0;ix<_rhowidth.size();++ix) { if(ix<2) { output << "newdef " << name() << ":RhoWidths " << ix << " " << _rhowidth[ix]/MeV << "\n"; } else { output << "insert " << name() << ":RhoWidths " << ix << " " << _rhowidth[ix]/MeV << "\n"; } } output << "newdef " << name() << ":f_2Mass " << _f2mass/GeV << "\n"; output << "newdef " << name() << ":f_2Width " << _f2width/GeV << "\n"; output << "newdef " << name() << ":f_0Mass " << _f0mass/GeV << "\n"; output << "newdef " << name() << ":f_0Width " << _f0width/GeV << "\n"; output << "newdef " << name() << ":sigmaMass " << _sigmamass/GeV << "\n"; output << "newdef " << name() << ":sigmaWidth " << _sigmawidth/GeV << "\n"; output << "newdef " << name() << ":a1Mass " << _a1mass/GeV << "\n"; output << "newdef " << name() << ":a1Width " <<_a1width /GeV << "\n"; output << "newdef " << name() << ":KaonMass " << _mK/GeV << "\n"; output << "newdef " << name() << ":KStarMass " << _mKstar/GeV << "\n"; output << "newdef " << name() << ":KaonCoupling " << _gammk << "\n"; output << "newdef " << name() << ":Fpi " << _fpi/MeV << "\n"; output << "newdef " << name() << ":a1WidthOption " << _a1opt << "\n"; for(unsigned int ix=0;ix<_rhomagP.size();++ix) { if(ix<2) { output << "newdef " << name() << ":RhoPWaveMagnitude " << ix << " " << _rhomagP[ix] << "\n"; } else { output << "insert " << name() << ":RhoPWaveMagnitude " << ix << " " << _rhomagP[ix] << "\n"; } } for(unsigned int ix=0;ix<_rhophaseP.size();++ix) { if(ix<2) { output << "newdef " << name() << ":RhoPWavePhase " << ix << " " << _rhophaseP[ix] << "\n"; } else { output << "insert " << name() << ":RhoPWavePhase " << ix << " " << _rhophaseP[ix] << "\n"; } } for(unsigned int ix=0;ix<_rhomagD.size();++ix) { if(ix<2) { output << "newdef " << name() << ":RhoDWaveMagnitude " << ix << " " << _rhomagD[ix]*MeV2 << "\n"; } else { output << "insert " << name() << ":RhoDWaveMagnitude " << ix << " " << _rhomagD[ix]*MeV2 << "\n"; } } for(unsigned int ix=0;ix<_rhophaseD.size();++ix) { if(ix<2) { output << "newdef " << name() << ":RhoDWavePhase " << ix << " " << _rhophaseD[ix] << "\n"; } else { output << "insert " << name() << ":RhoDWavePhase " << ix << " " << _rhophaseD[ix] << "\n"; } } output << "newdef " << name() << ":f0Phase " << _f0phase << "\n"; output << "newdef " << name() << ":f2Phase " <<_f2phase << "\n"; output << "newdef " << name() << ":sigmaPhase " <<_sigmaphase << "\n"; output << "newdef " << name() << ":f0Magnitude " << _f0mag << "\n"; output << "newdef " << name() << ":f2Magnitude " << _f2mag*GeV2 << "\n"; output << "newdef " << name() << ":sigmaMagnitude " <<_sigmamag << "\n"; output << "newdef " << name() << ":LocalParameters " << _localparameters << "\n"; output << "newdef " << name() << ":Initializea1 " <<_initializea1 << "\n"; for(unsigned int ix=0;ix<_a1runwidth.size();++ix) { if(ix<200) { output << "newdef " << name() << ":a1RunningWidth " << ix << " " << _a1runwidth[ix]/MeV << "\n"; } else { output << "insert " << name() << ":a1RunningWidth " << ix << " " << _a1runwidth[ix]/MeV << "\n"; } } for(unsigned int ix=0;ix<_a1runq2.size();++ix) { if(ix<200) { output << "newdef " << name() << ":a1RunningQ2 " << ix << " " << _a1runq2[ix]/MeV2 << "\n"; } else { output << "insert " << name() << ":a1RunningQ2 " << ix << " " << _a1runq2[ix]/MeV2 << "\n"; } } ThreeMesonCurrentBase::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } void ThreePionCLEOCurrent::doinitrun() { // set up the running a_1 width inita1Width(0); ThreeMesonCurrentBase::doinitrun(); } void ThreePionCLEOCurrent::doupdate() { ThreeMesonCurrentBase::doupdate(); // update running width if needed if ( !touched() ) return; if(_maxmass!=_maxcalc) inita1Width(-1); } Energy ThreePionCLEOCurrent::a1width(Energy2 q2) const { Energy output; if(_a1opt) output=(*_a1runinter)(q2); else { double gam(0.); if(q2<0.1753*GeV2) { gam =0.; } else if(q2<0.823*GeV2) { double p=q2/GeV2-0.1753; gam = 5.80900*p*sqr(p)*(1.-3.00980*p+4.57920*sqr(p)); } else { double p=q2/GeV2; gam = -13.91400+27.67900*p-13.39300*sqr(p) +3.19240*sqr(p)*p-0.10487*sqr(sqr(p)); } if(q2<0.1676*GeV2) { gam+=0.; } else if(q2<0.823*GeV2) { double p=q2/GeV2-0.1676; gam+= 6.28450*p*sqr(p)*(1.-2.95950*p+4.33550*sqr(p)); } else { double p=q2/GeV2; gam+= -15.41100+32.08800*p-17.66600*sqr(p) +4.93550*sqr(p)*p-0.37498*sqr(sqr(p)); } Energy mkst=0.894*GeV,mk=0.496*GeV; Energy2 mk1sq=sqr(mkst+mk), mk2sq=sqr(mkst-mk); double c3pi=sqr(0.2384),ckst=sqr(4.7621)*c3pi; gam*=c3pi; if(q2>mk1sq) gam+=0.5*ckst*sqrt((q2-mk1sq)*(q2-mk2sq))/q2; gam = gam*_a1width*_a1mass/GeV2/1.331/0.814/1.0252088; output = gam*GeV2/sqrt(q2); } return output; } double ThreePionCLEOCurrent::threeBodyMatrixElement(const int iopt, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy, const Energy, const Energy) const { Energy p1[5],p2[5],p3[5]; Energy2 p1sq, p2sq, p3sq; Energy q=sqrt(q2); Energy2 mpi2c=_mpic*_mpic; Energy2 mpi20=_mpi0*_mpi0; // construct the momenta for the 2 neutral 1 charged mode Complex F1,F2,F3; if(iopt==0) { // construct the momenta of the decay products p1[0] = 0.5*(q2+mpi20-s1)/q; p1sq=p1[0]*p1[0]; p1[4]=sqrt(p1sq-mpi20); p2[0] = 0.5*(q2+mpi20-s2)/q; p2sq=p2[0]*p2[0]; p2[4]=sqrt(p2sq-mpi20); p3[0] = 0.5*(q2+mpi2c-s3)/q; p3sq=p3[0]*p3[0]; p3[4]=sqrt(p3sq-mpi2c); // take momentum of 1 parallel to z axis p1[1]=ZERO;p1[2]=ZERO;p1[3]=p1[4]; // construct 2 double cos2 = 0.5*(p1sq+p2sq-p3sq-2.*mpi20+mpi2c)/p1[4]/p2[4]; p2[1] = p2[4]*sqrt(1.-cos2*cos2); p2[2]=ZERO; p2[3]=-p2[4]*cos2; // construct 3 double cos3 = 0.5*(p1sq-p2sq+p3sq-mpi2c)/p1[4]/p3[4]; p3[1] =-p3[4]*sqrt(1.-cos3*cos3); p3[2]=ZERO; p3[3]=-p3[4]*cos3; // calculate the form factors CLEOFormFactor(1,-1,q2,s1,s2,s3,F1,F2,F3); } // construct the momenta for the 3 charged mode else { // construct the momenta of the decay products p1[0] = 0.5*(q2+mpi2c-s1)/q; p1sq=p1[0]*p1[0]; p1[4]=sqrt(p1sq-mpi2c); p2[0] = 0.5*(q2+mpi2c-s2)/q; p2sq=p2[0]*p2[0]; p2[4]=sqrt(p2sq-mpi2c); p3[0] = 0.5*(q2+mpi2c-s3)/q; p3sq=p3[0]*p3[0]; p3[4]=sqrt(p3sq-mpi2c); // take momentum of 1 parallel to z axis p1[1]=ZERO;p1[2]=ZERO;p1[3]=p1[4]; // construct 2 double cos2 = 0.5*(p1sq+p2sq-p3sq-mpi2c)/p1[4]/p2[4]; p2[1] = p2[4]*sqrt(1.-cos2*cos2); p2[2]=ZERO; p2[3]=-p2[4]*cos2; // construct 3 double cos3 = 0.5*(p1sq-p2sq+p3sq-mpi2c)/p1[4]/p3[4]; p3[1] =-p3[4]*sqrt(1.-cos3*cos3); p3[2]=ZERO; p3[3]=-p3[4]*cos3; // calculate the form factors CLEOFormFactor(0,-1,q2,s1,s2,s3,F1,F2,F3); } // construct a vector with the current complex<Energy> current[4]; for(unsigned int ix=0;ix<4;++ix) current[ix] = F1*(p2[ix]-p3[ix])-F2*(p3[ix]-p1[ix])+F3*(p1[ix]-p2[ix]); complex<Energy2> dot1=current[0]*conj(current[0]); for(unsigned int ix=1;ix<4;++ix) dot1-=current[ix]*conj(current[ix]); complex<Energy2> dot2=current[0]*q; return(-dot1+dot2*conj(dot2)/q2).real() / sqr(_rhomass[0]); } �����������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/ThreeMesonDefaultCurrent.cc����������������������������������0000644�0001750�0001750�00000124373�11754474774�025703� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ThreeMesonDefaultCurrent.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ThreeMesonDefaultCurrent class. // #include "ThreeMesonDefaultCurrent.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" using namespace Herwig; using namespace ThePEG; namespace { inline Energy timesGeV (double x) { return x * GeV; } inline Energy2 timesGeV2(double x) { return x * GeV2; } } ThreeMesonDefaultCurrent::ThreeMesonDefaultCurrent() { // the pion decay constant _fpi=130.7*MeV/sqrt(2.); _mpi=ZERO;_mK=ZERO; // set the initial weights for the resonances // the rho weights _rhoF123wgts.push_back(1.0);_rhoF123wgts.push_back(-0.145); _rhoF123wgts.push_back(0.); _rhoF5wgts.push_back(-26.);_rhoF5wgts.push_back(6.5); _rhoF5wgts.push_back(1.); // the Kstar weights _kstarF123wgts.push_back(1.); _kstarF5wgts.push_back(1.); // relative rho/Kstar weights _rhoKstarwgt=-0.2; // local values of the a_1 parameters _a1parameters=true;_a1mass=1.251*GeV;_a1width=0.599*GeV; _a1opt=true; // local values of the K_1 parameters _k1parameters=true;_k1mass=1.402*GeV,_k1width=0.174*GeV; // local values of the rho parameters _rhoparameters=true; _rhoF123masses.push_back(0.773*GeV);_rhoF123masses.push_back(1.370*GeV); _rhoF123masses.push_back(1.750*GeV); _rhoF123widths.push_back(0.145*GeV);_rhoF123widths.push_back(0.510*GeV); _rhoF123widths.push_back(0.120*GeV); _rhoF5masses.push_back(0.773*GeV);_rhoF5masses.push_back(1.500*GeV); _rhoF5masses.push_back(1.750*GeV); _rhoF5widths.push_back(0.145*GeV);_rhoF5widths.push_back(0.220*GeV); _rhoF5widths.push_back(0.120*GeV); // local values for the Kstar parameters _kstarparameters=true; _kstarF123masses.push_back(0.8921*GeV); _kstarF123widths.push_back(0.0513*GeV); _kstarF5masses.push_back(0.8921*GeV); _kstarF5widths.push_back(0.0513*GeV); // initialization of the a_1 running width _initializea1=false; double a1q2in[200]={0,15788.6,31577.3,47365.9,63154.6,78943.2,94731.9,110521, 126309,142098,157886,173675,189464,205252,221041,236830, 252618,268407,284196,299984,315773,331562,347350,363139, 378927,394716,410505,426293,442082,457871,473659,489448, 505237,521025,536814,552603,568391,584180,599969,615757, 631546,647334,663123,678912,694700,710489,726278,742066, 757855,773644,789432,805221,821010,836798,852587,868375, 884164,899953,915741,931530,947319,963107,978896,994685, 1.01047e+06,1.02626e+06,1.04205e+06,1.05784e+06,1.07363e+06, 1.08942e+06,1.10521e+06,1.12099e+06,1.13678e+06,1.15257e+06, 1.16836e+06,1.18415e+06,1.19994e+06,1.21573e+06,1.23151e+06, 1.2473e+06,1.26309e+06,1.27888e+06,1.29467e+06,1.31046e+06, 1.32625e+06,1.34203e+06,1.35782e+06,1.37361e+06,1.3894e+06, 1.40519e+06,1.42098e+06,1.43677e+06,1.45256e+06,1.46834e+06 ,1.48413e+06,1.49992e+06,1.51571e+06,1.5315e+06,1.54729e+06, 1.56308e+06,1.57886e+06,1.59465e+06,1.61044e+06,1.62623e+06, 1.64202e+06,1.65781e+06,1.6736e+06,1.68939e+06,1.70517e+06, 1.72096e+06,1.73675e+06,1.75254e+06,1.76833e+06,1.78412e+06, 1.79991e+06,1.81569e+06,1.83148e+06,1.84727e+06,1.86306e+06, 1.87885e+06,1.89464e+06,1.91043e+06,1.92621e+06,1.942e+06, 1.95779e+06,1.97358e+06,1.98937e+06,2.00516e+06,2.02095e+06, 2.03674e+06,2.05252e+06,2.06831e+06,2.0841e+06,2.09989e+06, 2.11568e+06,2.13147e+06,2.14726e+06,2.16304e+06,2.17883e+06, 2.19462e+06,2.21041e+06,2.2262e+06,2.24199e+06,2.25778e+06, 2.27356e+06,2.28935e+06,2.30514e+06,2.32093e+06,2.33672e+06, 2.35251e+06,2.3683e+06,2.38409e+06,2.39987e+06,2.41566e+06, 2.43145e+06,2.44724e+06,2.46303e+06,2.47882e+06,2.49461e+06, 2.51039e+06,2.52618e+06,2.54197e+06,2.55776e+06,2.57355e+06, 2.58934e+06,2.60513e+06,2.62092e+06,2.6367e+06,2.65249e+06, 2.66828e+06,2.68407e+06,2.69986e+06,2.71565e+06,2.73144e+06, 2.74722e+06,2.76301e+06,2.7788e+06,2.79459e+06,2.81038e+06, 2.82617e+06,2.84196e+06,2.85774e+06,2.87353e+06,2.88932e+06, 2.90511e+06,2.9209e+06,2.93669e+06,2.95248e+06,2.96827e+06, 2.98405e+06,2.99984e+06,3.01563e+06,3.03142e+06,3.04721e+06, 3.063e+06,3.07879e+06,3.09457e+06,3.11036e+06,3.12615e+06, 3.14194e+06}; double a1widthin[200]={0,0,0,0,0,0,0,0,0,0,0,0,0.00153933,0.0136382,0.0457614, 0.105567,0.199612,0.333825,0.513831,0.745192,1.0336,1.38501, 1.80581,2.30295,2.88403,3.5575,4.33278,5.22045,6.23243, 7.38223,8.68521,10.1589,11.8234,13.7018,15.8206,18.2107, 20.9078,23.9533,27.3954,31.2905,35.7038,40.7106,46.3984, 52.8654,60.2207,68.581,78.0637,88.7754,100.794,114.145, 128.783,144.574,161.299,178.683,196.426,214.248,231.908, 249.221,266.059,282.336,298.006,313.048,327.46,341.254, 354.448,367.066,379.133,390.677,401.726,412.304,422.439, 432.155,441.474,450.419,459.01,467.267,475.207,482.847, 490.203,497.29,504.121,510.71,517.068,523.207,529.138, 534.869,540.411,545.776,550.961,556.663,560.851,565.566, 570.137,574.569,578.869,583.041,587.091,591.023,594.843, 598.553,602.16,605.664,609.072,612.396,615.626,618.754, 621.796,624.766,627.656,630.47,633.21,635.878,638.5, 641.006,643.471,645.873,648.213,650.493,652.715,654.88, 656.99,659.047,661.052,663.007,664.963,666.771,668.6, 670.351,672.075,673.828,675.397,676.996,678.567,680.083, 681.589,683.023,684.457,685.825,687.18,688.499,689.789, 691.058,692.284,693.501,694.667,695.82,696.947,698.05, 699.129,700.186,701.221,702.234,703.226,704.198,705.158, 706.085,707.001,707.899,708.78,709.644,710.474,711.334, 712.145,712.943,713.727,714.505,715.266,716.015,716.751, 717.474,718.183,718.88,719.645,720.243,720.91,721.565, 722.211,722.851,723.473,724.094,724.697,725.296,725.886, 726.468,727.041,727.608,728.166,728.718,729.262,729.808, 730.337,730.856,731.374,731.883,732.386,732.884,733.373, 733.859,734.339,734.813}; vector<double> tmp1(a1widthin,a1widthin+200); _a1runwidth.clear(); std::transform(tmp1.begin(), tmp1.end(), back_inserter(_a1runwidth), timesGeV); vector<double> tmp2(a1q2in,a1q2in+200); _a1runq2.clear(); std::transform(tmp2.begin(), tmp2.end(), back_inserter(_a1runq2), timesGeV2); _maxmass=ZERO; _maxcalc=ZERO; } void ThreeMesonDefaultCurrent::doinit() { ThreeMesonCurrentBase::doinit(); // the particles we will use a lot tPDPtr a1(getParticleData(ParticleID::a_1minus)), k1(getParticleData(ParticleID::Kstar_1minus)),pi0(getParticleData(ParticleID::pi0)), piplus(getParticleData(ParticleID::piplus)), piminus(getParticleData(ParticleID::piminus)); // masses for the running widths _mpi=piplus->mass(); _mK=getParticleData(ParticleID::Kminus)->mass(); // the charged rho resonances tPDPtr rhoc[3]={getParticleData(-213),getParticleData(-100213), getParticleData(-30213)}; // the charged K* resonances tPDPtr Kstarc[3]={getParticleData(-323),getParticleData(-100323), getParticleData(-30323)}; if(!_a1parameters) { _a1mass=a1->mass(); _a1width=a1->width(); } // mass and width of the k_1 if(!_k1parameters) { _k1mass=k1->mass(); _k1width=k1->width(); } // initialise the a_1 running width calculation inita1Width(-1); // rho parameters in the base classs tcPDPtr temp; unsigned int ix; if(_rhoparameters&&_rhoF123masses.size()<3) { ix = _rhoF123masses.size(); _rhoF123masses.resize(3);_rhoF123widths.resize(3); for(;ix<3;++ix) { if(rhoc[ix]) { _rhoF123masses[ix]=rhoc[ix]->mass(); _rhoF123widths[ix]=rhoc[ix]->width(); } } } else if(!_rhoparameters) { _rhoF123masses.resize(3);_rhoF123widths.resize(3); for(ix=0;ix<3;++ix) { if(rhoc[ix]) { _rhoF123masses[ix]=rhoc[ix]->mass(); _rhoF123widths[ix]=rhoc[ix]->width(); } } } // K star parameters in the base class if(_kstarparameters&&_kstarF123masses.size()<3) { ix = _kstarF123masses.size(); _kstarF123masses.resize(3);_kstarF123widths.resize(3); for(;ix<3;++ix) { if(Kstarc[ix]) { _kstarF123masses[ix]=Kstarc[ix]->mass(); _kstarF123widths[ix]=Kstarc[ix]->width(); } } } else if(!_kstarparameters) { _kstarF123masses.resize(3);_kstarF123widths.resize(3); for(ix=0;ix<3;++ix) { if(Kstarc[ix]) { _kstarF123masses[ix]=Kstarc[ix]->mass(); _kstarF123widths[ix]=Kstarc[ix]->width(); } } } // rho parameters here if(_rhoparameters&&_rhoF5masses.size()<3) { ix = _rhoF5masses.size(); _rhoF5masses.resize(3);_rhoF5widths.resize(3); for(;ix<3;++ix) { if(rhoc[ix]) { _rhoF5masses[ix]=rhoc[ix]->mass(); _rhoF5widths[ix]=rhoc[ix]->width(); } } } else if(!_rhoparameters) { _rhoF5masses.resize(3);_rhoF5widths.resize(3); for(ix=0;ix<3;++ix) { if(rhoc[ix]) { _rhoF5masses[ix]=rhoc[ix]->mass(); _rhoF5widths[ix]=rhoc[ix]->width(); } } } // Kstar parameters here if(_kstarparameters&&_kstarF5widths.size()<3) { ix = _kstarF5masses.size(); _kstarF5masses.resize(3);_kstarF5widths.resize(3); for(;ix<3;++ix) { if(Kstarc[ix]) { _kstarF5masses[ix]=Kstarc[ix]->mass(); _kstarF5widths[ix]=Kstarc[ix]->width(); } } } else if(!_kstarparameters) { _kstarF5masses.resize(3);_kstarF5widths.resize(3); for(ix=0;ix<3;++ix) { if(Kstarc[ix]) { _kstarF5masses[ix]=Kstarc[ix]->mass(); _kstarF5widths[ix]=Kstarc[ix]->width(); } } } } void ThreeMesonDefaultCurrent::persistentOutput(PersistentOStream & os) const { os << _rhoF123wgts << _kstarF123wgts << _rhoF5wgts << _kstarF5wgts << _rhoKstarwgt << ounit(_a1runwidth,GeV)<< ounit(_a1runq2,GeV2) << _initializea1 << ounit(_a1mass,GeV)<< ounit(_a1width,GeV)<< ounit(_k1mass,GeV) << ounit(_k1width,GeV)<< ounit(_fpi,GeV) << ounit(_mpi,GeV)<< ounit(_mK,GeV) <<_rhoparameters << ounit(_rhoF123masses,GeV) << ounit(_rhoF5masses,GeV) << ounit(_rhoF123widths,GeV) << ounit(_rhoF5widths,GeV) << _kstarparameters << ounit(_kstarF123masses,GeV) <<ounit(_kstarF5masses,GeV) << ounit(_kstarF123widths,GeV) << ounit(_kstarF5widths,GeV) << _a1parameters << _k1parameters << _a1opt << ounit(_maxmass,GeV) << ounit(_maxcalc,GeV); } void ThreeMesonDefaultCurrent::persistentInput(PersistentIStream & is, int) { is >> _rhoF123wgts >> _kstarF123wgts >> _rhoF5wgts >> _kstarF5wgts >> _rhoKstarwgt >> iunit(_a1runwidth,GeV) >> iunit(_a1runq2,GeV2) >> _initializea1 >> iunit(_a1mass,GeV) >> iunit(_a1width,GeV) >> iunit(_k1mass,GeV) >> iunit(_k1width,GeV) >> iunit(_fpi,GeV) >> iunit(_mpi,GeV) >> iunit(_mK,GeV) >>_rhoparameters >> iunit(_rhoF123masses,GeV) >> iunit(_rhoF5masses,GeV) >> iunit(_rhoF123widths,GeV) >> iunit(_rhoF5widths,GeV) >> _kstarparameters >> iunit(_kstarF123masses,GeV) >>iunit(_kstarF5masses,GeV) >> iunit(_kstarF123widths,GeV) >> iunit(_kstarF5widths,GeV) >> _a1parameters >> _k1parameters >> _a1opt >> iunit(_maxmass,GeV) >> iunit(_maxcalc,GeV); } ClassDescription<ThreeMesonDefaultCurrent> ThreeMesonDefaultCurrent::initThreeMesonDefaultCurrent; // Definition of the static class description member. void ThreeMesonDefaultCurrent::Init() { static ClassDocumentation<ThreeMesonDefaultCurrent> documentation ("The ThreeMesonDefaultCurrent class is designed to implement " "the three meson decays of the tau, ie pi- pi- pi+, pi0 pi0 pi-, " "K- pi- K+, K0 pi- Kbar0, K- pi0 K0,pi0 pi0 K-, K- pi- pi+, " "pi- Kbar0 pi0, pi- pi0 eta. It uses the same currents as those in TAUOLA.", "The three meson decays of the tau, ie pi- pi- pi+, pi0 pi0 pi-, " "K- pi- K+, K0 pi- Kbar0, K- pi0 K0,pi0 pi0 K-, K- pi- pi+, " "and pi- Kbar0 pi0, pi- pi0 eta " "use the same currents as \\cite{Jadach:1993hs,Kuhn:1990ad,Decker:1992kj}.", "%\\cite{Jadach:1993hs}\n" "\\bibitem{Jadach:1993hs}\n" " S.~Jadach, Z.~Was, R.~Decker and J.~H.~Kuhn,\n" " %``The Tau Decay Library Tauola: Version 2.4,''\n" " Comput.\\ Phys.\\ Commun.\\ {\\bf 76}, 361 (1993).\n" " %%CITATION = CPHCB,76,361;%%\n" "%\\cite{Kuhn:1990ad}\n" "\\bibitem{Kuhn:1990ad}\n" " J.~H.~Kuhn and A.~Santamaria,\n" " %``Tau decays to pions,''\n" " Z.\\ Phys.\\ C {\\bf 48}, 445 (1990).\n" " %%CITATION = ZEPYA,C48,445;%%\n" "%\\cite{Decker:1992kj}\n" "\\bibitem{Decker:1992kj}\n" " R.~Decker, E.~Mirkes, R.~Sauer and Z.~Was,\n" " %``Tau decays into three pseudoscalar mesons,''\n" " Z.\\ Phys.\\ C {\\bf 58}, 445 (1993).\n" " %%CITATION = ZEPYA,C58,445;%%\n" ); static ParVector<ThreeMesonDefaultCurrent,double> interfaceF123RhoWgt ("F123RhoWeight", "The weights of the different rho resonances in the F1,2,3 form factor", &ThreeMesonDefaultCurrent::_rhoF123wgts, 0, 0, 0, -1000, 1000, false, false, true); static ParVector<ThreeMesonDefaultCurrent,double> interfaceF123KstarWgt ("F123KstarWeight", "The weights of the different Kstar resonances in the F1,2,3 form factor", &ThreeMesonDefaultCurrent::_kstarF123wgts, 0, 0, 0, -1000, 1000, false, false, true); static ParVector<ThreeMesonDefaultCurrent,double> interfaceF5RhoWgt ("F5RhoWeight", "The weights of the different rho resonances in the F1,2,3 form factor", &ThreeMesonDefaultCurrent::_rhoF5wgts, 0, 0, 0, -1000, 1000, false, false, true); static ParVector<ThreeMesonDefaultCurrent,double> interfaceF5KstarWgt ("F5KstarWeight", "The weights of the different Kstar resonances in the F1,2,3 form factor", &ThreeMesonDefaultCurrent::_kstarF5wgts, 0, 0, 0, -1000, 1000, false, false, true); static Parameter<ThreeMesonDefaultCurrent,double> interfaceRhoKstarWgt ("RhoKstarWgt", "The relative weights of the rho and K* in the F5 form factor", &ThreeMesonDefaultCurrent::_rhoKstarwgt, -0.2, -10., 10., false, false, false); static Switch<ThreeMesonDefaultCurrent,bool> interfaceInitializea1 ("Initializea1", "Initialise the calculation of the a_1 running width", &ThreeMesonDefaultCurrent::_initializea1, false, false, false); static SwitchOption interfaceInitializea1Initialization (interfaceInitializea1, "Yes", "Initialize the calculation", true); static SwitchOption interfaceInitializea1NoInitialization (interfaceInitializea1, "No", "Use the default values", false); static Switch<ThreeMesonDefaultCurrent,bool> interfaceRhoParameters ("RhoParameters", "Use local values of the rho meson masses and widths", &ThreeMesonDefaultCurrent::_rhoparameters, true, false, false); static SwitchOption interfaceRhoParameterstrue (interfaceRhoParameters, "Local", "Use local values of the parameters", true); static SwitchOption interfaceRhoParametersParticleData (interfaceRhoParameters, "ParticleData", "Use the masses and wdiths from the particle data objects", false); static Switch<ThreeMesonDefaultCurrent,bool> interfaceKstarParameters ("KstarParameters", "Use local values of the rho meson masses and widths", &ThreeMesonDefaultCurrent::_kstarparameters, true, false, false); static SwitchOption interfaceKstarParameterstrue (interfaceKstarParameters, "Local", "Use local values of the parameters", true); static SwitchOption interfaceKstarParametersParticleData (interfaceKstarParameters, "ParticleData", "Use the masses and wdiths from the particle data objects", false); static Switch<ThreeMesonDefaultCurrent,bool> interfacea1Parameters ("a1Parameters", "Use local values of the rho meson masses and widths", &ThreeMesonDefaultCurrent::_a1parameters, true, false, false); static SwitchOption interfacea1Parameterstrue (interfacea1Parameters, "Local", "Use local values of the parameters", true); static SwitchOption interfacea1ParametersParticleData (interfacea1Parameters, "ParticleData", "Use the masses and wdiths from the particle data objects", false); static Switch<ThreeMesonDefaultCurrent,bool> interfaceK1Parameters ("K1Parameters", "Use local values of the rho meson masses and widths", &ThreeMesonDefaultCurrent::_k1parameters, true, false, false); static SwitchOption interfaceK1Parameterstrue (interfaceK1Parameters, "Local", "Use local values of the parameters", true); static SwitchOption interfaceK1ParametersParticleData (interfaceK1Parameters, "ParticleData", "Use the masses and wdiths from the particle data objects", false); static Switch<ThreeMesonDefaultCurrent,bool> interfacea1WidthOption ("a1WidthOption", "Option for the treatment of the a1 width", &ThreeMesonDefaultCurrent::_a1opt, true, false, false); static SwitchOption interfacea1WidthOptionLocal (interfacea1WidthOption, "Local", "Use a calculation of the running width based on the parameters as" " interpolation table.", true); static SwitchOption interfacea1WidthOptionParam (interfacea1WidthOption, "Kuhn", "Use the parameterization of Kuhn and Santamaria for default parameters." " This should only be used for testing vs TAUOLA", false); static ParVector<ThreeMesonDefaultCurrent,Energy> interfacea1RunningWidth ("a1RunningWidth", "The values of the a_1 width for interpolation to giving the running width.", &ThreeMesonDefaultCurrent::_a1runwidth, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<ThreeMesonDefaultCurrent,Energy2> interfacea1RunningQ2 ("a1RunningQ2", "The values of the q^2 for interpolation to giving the running width.", &ThreeMesonDefaultCurrent::_a1runq2, GeV2, -1, 1.0*GeV2, ZERO, 10.0*GeV2, false, false, true); static Parameter<ThreeMesonDefaultCurrent,Energy> interfaceA1Width ("A1Width", "The a_1 width if using local values.", &ThreeMesonDefaultCurrent::_a1width, GeV, 0.599*GeV, ZERO, 10.0*GeV, false, false, false); static Parameter<ThreeMesonDefaultCurrent,Energy> interfaceA1Mass ("A1Mass", "The a_1 mass if using local values.", &ThreeMesonDefaultCurrent::_a1mass, GeV, 1.251*GeV, ZERO, 10.0*GeV, false, false, false); static Parameter<ThreeMesonDefaultCurrent,Energy> interfaceK1Width ("K1Width", "The K_1 width if using local values.", &ThreeMesonDefaultCurrent::_k1width, GeV, 0.174*GeV, ZERO, 10.0*GeV, false, false, false); static Parameter<ThreeMesonDefaultCurrent,Energy> interfaceK1Mass ("K1Mass", "The K_1 mass if using local values.", &ThreeMesonDefaultCurrent::_k1mass, GeV, 1.402*GeV, ZERO, 10.0*GeV, false, false, false); static ParVector<ThreeMesonDefaultCurrent,Energy> interfacerhoF123masses ("rhoF123masses", "The masses for the rho resonances if used local values", &ThreeMesonDefaultCurrent::_rhoF123masses, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<ThreeMesonDefaultCurrent,Energy> interfacerhoF123widths ("rhoF123widths", "The widths for the rho resonances if used local values", &ThreeMesonDefaultCurrent::_rhoF123widths, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<ThreeMesonDefaultCurrent,Energy> interfacerhoF5masses ("rhoF5masses", "The masses for the rho resonances if used local values", &ThreeMesonDefaultCurrent::_rhoF5masses, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<ThreeMesonDefaultCurrent,Energy> interfacerhoF5widths ("rhoF5widths", "The widths for the rho resonances if used local values", &ThreeMesonDefaultCurrent::_rhoF5widths, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<ThreeMesonDefaultCurrent,Energy> interfaceKstarF123masses ("KstarF123masses", "The masses for the Kstar resonances if used local values", &ThreeMesonDefaultCurrent::_kstarF123masses, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<ThreeMesonDefaultCurrent,Energy> interfaceKstarF123widths ("KstarF123widths", "The widths for the Kstar resonances if used local values", &ThreeMesonDefaultCurrent::_kstarF123widths, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<ThreeMesonDefaultCurrent,Energy> interfaceKstarF5masses ("KstarF5masses", "The masses for the Kstar resonances if used local values", &ThreeMesonDefaultCurrent::_kstarF5masses, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<ThreeMesonDefaultCurrent,Energy> interfaceKstarF5widths ("KstarF5widths", "The widths for the Kstar resonances if used local values", &ThreeMesonDefaultCurrent::_kstarF5widths, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<ThreeMesonDefaultCurrent,Energy> interfaceFPi ("FPi", "The pion decay constant", &ThreeMesonDefaultCurrent::_fpi, MeV, 92.4*MeV, ZERO, 200.0*MeV, false, false, true); } // modes handled by this class bool ThreeMesonDefaultCurrent::acceptMode(int imode) const { return imode>=0&&imode<=8; } // calculate the form-factors ThreeMesonDefaultCurrent::FormFactors ThreeMesonDefaultCurrent::calculateFormFactors(const int ichan, const int imode, Energy2 q2, Energy2 s1, Energy2 s2, Energy2 s3) const { useMe(); Complex F1, F2, F3, F4, F5; F1 = F2 = F3 = F4 = F5 = 0.0; // calculate the pi- pi- pi+ factor if(imode==0) { Complex a1fact(a1BreitWigner(q2)*2./3.); if(ichan<0) { F1= a1fact*BrhoF123(s1,-1); F2 =-a1fact*BrhoF123(s2,-1); } else if(ichan%2==0) F1 = a1fact*BrhoF123(s1, ichan/2); else if(ichan%2==1) F2 =-a1fact*BrhoF123(s2,(ichan-1)/2); } // calculate the pi0 pi0 pi- factor else if(imode==1) { Complex a1fact(a1BreitWigner(q2)*2./3.); if(ichan<0) { F1 = a1fact*BrhoF123(s1,-1); F2 =-a1fact*BrhoF123(s2,-1); } else if(ichan%2==0) F1 = a1fact*BrhoF123(s1, ichan/2); else if(ichan%2==1) F2 =-a1fact*BrhoF123(s2,(ichan-1)/2); } // calculate the K- pi - K+ factor else if(imode==2) { Complex a1fact(a1BreitWigner(q2)*sqrt(2.)/3.); if(ichan<0) { F1 =-a1fact*BKstarF123(s1,-1); F2 = a1fact*BrhoF123(s2,-1); F5 = BrhoF5(q2,-1)*FKrho(s1,s2,-1)*sqrt(2.); } else if(ichan%8==0) F1 =-a1fact*BKstarF123(s1,ichan/8); else if(ichan%8==1) F2 = a1fact*BrhoF123(s2,(ichan-1)/8); else if(ichan%8>=2) F5 = BrhoF5(q2,ichan/8)*FKrho(s1,s2,(ichan-2)%8)*sqrt(2.); } // calculate the K0 pi- K0bar else if(imode==3) { Complex a1fact(a1BreitWigner(q2)*sqrt(2.)/3.); if(ichan<0) { F1 =-a1fact*BKstarF123(s1,-1); F2 = a1fact*BrhoF123(s2,-1); F5 =-BrhoF5(q2,-1)*FKrho(s1,s2,-1)*sqrt(2.); } else if(ichan%8==0) F1 = -a1fact*BKstarF123(s1,ichan/8); else if(ichan%8==1) F2 = a1fact*BrhoF123(s2,(ichan-1)/8); else if(ichan%8>=2) F5 = -BrhoF5(q2,ichan/8)*FKrho(s1,s2,(ichan-2)%8)*sqrt(2.); } // calculate the K- pi0 k0 else if(imode==4) { Complex a1fact(a1BreitWigner(q2)); if(ichan<0){F2 =-a1fact*BrhoF123(s2,-1);} else{F2 =-a1fact*BrhoF123(s2,ichan);} } // calculate the pi0 pi0 K- else if(imode==5) { Complex K1fact(K1BreitWigner(q2)/6.); if(ichan<0) { F1 = K1fact*BKstarF123(s1,-1); F2 =-K1fact*BKstarF123(s2,-1); } else if(ichan%2==0) F1 = K1fact*BKstarF123(s1,ichan/2); else F2 =-K1fact*BKstarF123(s2,(ichan-1)/2); } // calculate the K- pi- pi+ else if(imode==6) { Complex K1fact(K1BreitWigner(q2)*sqrt(2.)/3.); if(ichan<0) { F1 =-K1fact*BrhoF123(s1,-1); F2 = K1fact*BKstarF123(s2,-1); F5 =-BKstarF123(q2,-1)*FKrho(s2,s1,-1)*sqrt(2.); } else if(ichan%8==0) F1 =-K1fact*BrhoF123(s1,ichan/8); else if(ichan%8==1) F2 = K1fact*BKstarF123(s2,(ichan-1)/8); else F5 = -BKstarF123(q2,ichan/8)*FKrho(s2,s1,(ichan-2)%8)*sqrt(2.); } // calculate the pi- K0bar pi0 else if(imode==7) { Complex K1fact(K1BreitWigner(q2)); if(ichan<0) { F2 =-K1fact*BrhoF123(s2,-1); F5 =-2.*BKstarF123(q2,-1)*FKrho(s1,s2,-1); } else if(ichan%7==0) F2 =-K1fact*BrhoF123(s2,ichan/7); else F5 =-2.*BKstarF123(q2,ichan/7)*FKrho(s1,s2,(ichan-1)%7); } // calculate the pi- pi0 eta else if(imode==8) { if(ichan<0) F5 = BrhoF5(q2, -1)*BrhoF123(s3, -1)*sqrt(2./3.); else F5 = BrhoF5(q2,ichan/3)*BrhoF123(s3,ichan%3)*sqrt(2./3.); } // multiply by the prefactors using Constants::twopi; return FormFactors(F1/_fpi, F2/_fpi, F3/_fpi, F4/_fpi, -F5/sqr(twopi)/pow<3,1>(_fpi) ); } // complete the construction of the decay mode for integration bool ThreeMesonDefaultCurrent::createMode(int icharge, unsigned int imode, DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp) { int iq(0),ia(0); if(!acceptMode(imode)) return false; tPDVector extpart(particles(1,imode,iq,ia)); Energy min(ZERO); for(unsigned int ix=0;ix<extpart.size();++ix) min+=extpart[ix]->massMin(); if(min>upp) return false; // the particles we will use a lot tPDPtr a1,k1; if(icharge==-3) { a1=getParticleData(ParticleID::a_1minus); k1=getParticleData(ParticleID::Kstar_1minus); } else if(icharge==3) { a1=getParticleData(ParticleID::a_1plus); k1=getParticleData(ParticleID::Kstar_1plus); } else { return false; } _maxmass=max(_maxmass,upp); // the rho0 resonances tPDPtr rho0[3]={getParticleData(113),getParticleData(100113),getParticleData(30113)}; tPDPtr rhoc[3],Kstar0[3],Kstarc[3]; if(icharge==-3) { // the charged rho resonances rhoc[0] = getParticleData(-213); rhoc[1] = getParticleData(-100213); rhoc[2] = getParticleData(-30213); // the K*0 resonances Kstar0[0] = getParticleData(313); Kstar0[1] = getParticleData(100313); Kstar0[2] = getParticleData(30313); // the charged K* resonances Kstarc[0] = getParticleData(-323); Kstarc[1] = getParticleData(-100323); Kstarc[2] = getParticleData(-30323); } else { // the charged rho resonances rhoc[0] = getParticleData(213); rhoc[1] = getParticleData(100213); rhoc[2] = getParticleData(30213); // the K*0 resonances Kstar0[0] = getParticleData(-313); Kstar0[1] = getParticleData(-100313); Kstar0[2] = getParticleData(-30313); // the charged K* resonances Kstarc[0] = getParticleData(323); Kstarc[1] = getParticleData(100323); Kstarc[2] = getParticleData(30323); } DecayPhaseSpaceChannelPtr newchannel; if(imode==0) { // channels for pi- pi- pi+ for(unsigned int ix=0;ix<3;++ix) { if(!rho0[ix]) continue; newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(rho0[ix],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rho0[ix],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } } else if(imode==1) { // channels for pi0 pi0 pi- for(unsigned int ix=0;ix<3;++ix) { if(!rhoc[ix]) continue; newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(rhoc[ix],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rhoc[ix],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } } else if(imode==2) { // channels for K- pi- K+ for(unsigned int ix=0;ix<3;++ix) { if(Kstar0[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstar0[ix],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } if(rho0[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rho0[ix],0,0.0,iloc,iloc+2); mode->addChannel(newchannel); } for(unsigned int iy=0;iy<3;++iy) { if(!rhoc[ix]) continue; if(Kstar0[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhoc[ix] ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstar0[iy],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } if(rho0[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhoc[ix],0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rho0[iy],0,0.0,iloc,iloc+2); mode->addChannel(newchannel); } } } } else if(imode==3) { // channels for K0 pi- K0bar for(unsigned int ix=0;ix<3;++ix) { if(Kstarc[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstarc[ix],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } if(rho0[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rho0[ix],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } for(unsigned int iy=0;iy<3;++iy) { if(!rhoc[ix]) continue; if(Kstarc[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhoc[ix] ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstarc[iy],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } if(rho0[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhoc[ix],0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rho0[iy],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } } } } else if(imode==4) { // channels for K- pi0 K0 for(unsigned int ix=0;ix<3;++ix) { if(!rhoc[ix]) continue; newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rhoc[ix],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } } else if(imode==5) { // channels for pi0 pi0 K- for(unsigned int ix=0;ix<3;++ix) { if(!Kstarc[ix]) continue; newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(k1 ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstarc[ix],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(k1 ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(Kstarc[ix],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } } else if(imode==6) { // channels for K- pi- pi+ for(unsigned int ix=0;ix<3;++ix) { if(rho0[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(k1 ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(rho0[ix],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } if(Kstar0[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(k1 ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(Kstar0[ix],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } for(unsigned int iy=0;iy<3;++iy) { if(!Kstarc[ix]) continue; if(rho0[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(Kstarc[ix],0,0.0,-ires-1,iloc); newchannel->addIntermediate(rho0[iy] ,0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } if(Kstar0[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(Kstarc[ix],0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(Kstar0[iy],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } } } } else if(imode==7) { // channels for pi- kbar0 pi0 for(unsigned int ix=0;ix<3;++ix) { if(rhoc[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(k1 ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rhoc[ix],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } for(unsigned int iy=0;iy<3;++iy) { if(!Kstarc[ix]) continue; if(Kstar0[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(Kstarc[ix],0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstar0[iy],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } if(rhoc[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(Kstarc[ix],0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rhoc[iy] ,0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } } } } else if(imode==8) { // channels for pi- pi0 eta for(unsigned int ix=0;ix<3;++ix) { if(!rhoc[ix]) continue; for(unsigned int iy=0;iy<3;++iy) { if(!rho0[iy]) continue; newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhoc[ix],0,0.0,-ires-1,iloc); newchannel->addIntermediate(rho0[iy],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } } } if(_rhoparameters) { if(imode!=8) { for(unsigned int ix=0;ix<_rhoF123masses.size();++ix) { if(rhoc[ix]) mode->resetIntermediate(rhoc[ix],_rhoF123masses[ix], _rhoF123widths[ix]); if(rho0[ix]) mode->resetIntermediate(rho0[ix],_rhoF123masses[ix], _rhoF123widths[ix]); } } else { for(unsigned int ix=0;ix<_rhoF5masses.size();++ix) { if(rhoc[ix]) mode->resetIntermediate(rhoc[ix],_rhoF5masses[ix], _rhoF5widths[ix]); if(rho0[ix]) mode->resetIntermediate(rho0[ix],_rhoF5masses[ix], _rhoF5widths[ix]); } } } // K star parameters in the base class if(_kstarparameters) { for(unsigned int ix=0;ix<_kstarF123masses.size();++ix) { if(Kstarc[ix]) mode->resetIntermediate(Kstarc[ix],_kstarF123masses[ix], _kstarF123widths[ix]); if(Kstar0[ix]) mode->resetIntermediate(Kstar0[ix],_kstarF123masses[ix], _kstarF123widths[ix]); } } return true; } // initialisation of the a_1 width // (iopt=-1 initialises, iopt=0 starts the interpolation) void ThreeMesonDefaultCurrent::inita1Width(int iopt) { if(iopt==-1) { _maxcalc=_maxmass; if(!_initializea1||_maxmass==ZERO) return; // parameters for the table of values Energy2 step(sqr(_maxcalc)/199.); // integrator to perform the integral vector<double> inweights;inweights.push_back(0.5);inweights.push_back(0.5); vector<int> intype;intype.push_back(2);intype.push_back(3); Energy mrho(getParticleData(ParticleID::rhoplus)->mass()), wrho(getParticleData(ParticleID::rhoplus)->width()); vector<Energy> inmass(2,mrho),inwidth(2,wrho); vector<double> inpow(2,0.0); ThreeBodyAllOnCalculator<ThreeMesonDefaultCurrent> widthgen(inweights,intype,inmass,inwidth,inpow,*this,0,_mpi,_mpi,_mpi); // normalisation constant to give physical width if on shell double a1const(_a1width/(widthgen.partialWidth(sqr(_a1mass)))); // loop to give the values _a1runq2.clear(); _a1runwidth.clear(); for(Energy2 moff2(ZERO); moff2<=sqr(_maxcalc); moff2+=step) { _a1runwidth.push_back(widthgen.partialWidth(moff2)*a1const); _a1runq2.push_back(moff2); } } // set up the interpolator else if(iopt==0) { _a1runinter = make_InterpolatorPtr(_a1runwidth,_a1runq2,3); } } void ThreeMesonDefaultCurrent::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::ThreeMesonDefaultCurrent " << name() << " HwWeakCurrents.so\n"; for(unsigned int ix=0;ix<_rhoF123wgts.size();++ix) { if(ix<3) output << "newdef "; else output << "insert "; output << name() << ":F123RhoWeight " << ix << " " << _rhoF123wgts[ix] << "\n"; } for(unsigned int ix=0;ix<_kstarF123wgts.size();++ix) { if(ix<1) output << "newdef "; else output << "insert "; output << name() << ":F123KstarWeight " << ix << " " << _kstarF123wgts[ix] << "\n"; } for(unsigned int ix=0;ix<_rhoF5wgts.size();++ix) { if(ix<3) output << "newdef "; else output << "insert "; output << name() << ":F5RhoWeight " << ix << " " << _rhoF5wgts[ix] << "\n"; } for(unsigned int ix=0;ix<_kstarF5wgts.size();++ix) { if(ix<1) output << "newdef "; else output << "insert "; output << name() << ":F5KstarWeight " << ix << " " << _kstarF5wgts[ix] << "\n"; } output << "newdef " << name() << ":RhoKstarWgt " << _rhoKstarwgt << "\n"; output << "newdef " << name() << ":Initializea1 " << _initializea1 << "\n"; output << "newdef " << name() << ":RhoParameters " << _rhoparameters << "\n"; output << "newdef " << name() << ":KstarParameters " << _kstarparameters << "\n"; output << "newdef " << name() << ":a1Parameters " << _a1parameters << "\n"; output << "newdef " << name() << ":K1Parameters " << _k1parameters << "\n"; output << "newdef " << name() << ":a1WidthOption " << _a1opt << "\n"; for(unsigned int ix=0;ix<_a1runwidth.size();++ix) { output << "newdef " << name() << ":a1RunningWidth " << ix << " " << _a1runwidth[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_a1runq2.size();++ix) { output << "newdef " << name() << ":a1RunningQ2 " << ix << " " << _a1runq2[ix]/GeV2 << "\n"; } output << "newdef " << name() << ":A1Width " << _a1width/GeV << "\n"; output << "newdef " << name() << ":A1Mass " << _a1mass/GeV << "\n"; output << "newdef " << name() << ":K1Width " << _k1width/GeV << "\n"; output << "newdef " << name() << ":K1Mass " << _k1mass/GeV << "\n"; output << "newdef " << name() << ":FPi " << _fpi/MeV << "\n"; for(unsigned int ix=0;ix<_rhoF123masses.size();++ix) { if(ix<3) output << "newdef "; else output << "insert "; output << name() << ":rhoF123masses " << ix << " " << _rhoF123masses[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_rhoF123widths.size();++ix) { if(ix<3) output << "newdef "; else output << "insert "; output << name() << ":rhoF123widths " << ix << " " << _rhoF123widths[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_rhoF5masses.size();++ix) { if(ix<3) output << "newdef "; else output << "insert "; output << name() << ":rhoF5masses " << ix << " " << _rhoF5masses[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_rhoF5widths.size();++ix) { if(ix<3) output << "newdef "; else output << "insert "; output << name() << ":rhoF5widths " << ix << " " << _rhoF5widths[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_kstarF123masses.size();++ix) { if(ix<1) output << "newdef "; else output << "insert "; output << name() << ":KstarF123masses " << ix << " " << _kstarF123masses[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_kstarF123widths.size();++ix) { if(ix<1) output << "newdef "; else output << "insert "; output << name() << ":KstarF123widths " << ix << " " << _kstarF123widths[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_kstarF5masses.size();++ix) { if(ix<1) output << "newdef "; else output << "insert "; output << name() << ":KstarF5masses " << ix << " " << _kstarF5masses[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_kstarF5widths.size();++ix) { if(ix<1) output << "newdef "; else output << "insert "; output << name() << ":KstarF5widths " << ix << " " << _kstarF5widths[ix]/GeV << "\n"; } ThreeMesonCurrentBase::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } void ThreeMesonDefaultCurrent::doinitrun() { // set up the running a_1 width inita1Width(0); ThreeMesonCurrentBase::doinitrun(); } void ThreeMesonDefaultCurrent::doupdate() { ThreeMesonCurrentBase::doupdate(); // update running width if needed if ( !touched() ) return; if(_maxmass!=_maxcalc) inita1Width(-1); } Complex ThreeMesonDefaultCurrent::rhoKBreitWigner(Energy2 q2,unsigned int itype, unsigned int ires) const { Energy q(sqrt(q2)),mass,width,mout[2]={_mpi,_mpi}; // get the mass and width of the requested resonance if(itype==0) { mass=_rhoF123masses[ires]; width=_rhoF123widths[ires]; } else if(itype==1) { mass=_rhoF5masses[ires]; width=_rhoF5widths[ires]; } else if(itype==2) { mass=_kstarF123masses[ires]; width=_kstarF123widths[ires]; } else if(itype==3) { mass=_kstarF5masses[ires]; width=_kstarF5widths[ires]; } else { return 0.; } // calculate the momenta for the running widths if(itype>1) mout[0]=_mK; Energy pcm0(Kinematics::pstarTwoBodyDecay(mass,mout[0],mout[1])); Energy pcm(ZERO); if(mout[0]+mout[1]<q){pcm=Kinematics::pstarTwoBodyDecay(q,mout[0],mout[1]);} double ratio = Math::Pow<3>(pcm/pcm0); Energy gamrun(width*mass*ratio/q); Complex ii(0.,1.); complex<Energy2> denom(q2-mass*mass+ii*mass*gamrun), numer(-mass*mass); return numer/denom; } double ThreeMesonDefaultCurrent:: threeBodyMatrixElement(const int , const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy , const Energy , const Energy ) const { Energy2 mpi2(sqr(_mpi)); Complex propb(BrhoF123(s1,-1)),propa(BrhoF123(s2,-1)); // the matrix element Energy2 output(ZERO); // first resonance output += ((s1-4.*mpi2) + 0.25*(s3-s2)*(s3-s2)/q2) * real(propb*conj(propb)); // second resonance output += ((s2-4.*mpi2) + 0.25*(s3-s1)*(s3-s1)/q2) * real(propa*conj(propa)); // the interference term output += (0.5*q2-s3-0.5*mpi2+0.25*(s3-s2)*(s3-s1)/q2)*real(propa*conj(propb)+ propb*conj(propa)); return output/sqr(_rhoF123masses[0]); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/Makefile.in��������������������������������������������������0000644�0001750�0001750�00000056554�11756461676�022524� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Decay/WeakCurrents DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES) HwWeakCurrents_la_LIBADD = am_HwWeakCurrents_la_OBJECTS = FourPionNovosibirskCurrent.lo \ ScalarMesonCurrent.lo ThreeMesonCurrentBase.lo \ ThreeMesonDefaultCurrent.lo ThreePionCLEOCurrent.lo \ TwoMesonRhoKStarCurrent.lo TwoPionPhotonCurrent.lo \ VectorMesonCurrent.lo FivePionCurrent.lo KPiCurrent.lo \ KaonThreeMesonCurrent.lo HwWeakCurrents_la_OBJECTS = $(am_HwWeakCurrents_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwWeakCurrents_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwWeakCurrents_la_LDFLAGS) \ $(LDFLAGS) -o $@ libHwWeakCurrent_la_LIBADD = am_libHwWeakCurrent_la_OBJECTS = WeakDecayCurrent.lo \ LeptonNeutrinoCurrent.lo libHwWeakCurrent_la_OBJECTS = $(am_libHwWeakCurrent_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwWeakCurrents_la_SOURCES) $(libHwWeakCurrent_la_SOURCES) DIST_SOURCES = $(HwWeakCurrents_la_SOURCES) \ $(libHwWeakCurrent_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwWeakCurrents.la noinst_LTLIBRARIES = libHwWeakCurrent.la libHwWeakCurrent_la_SOURCES = \ WeakDecayCurrent.cc WeakDecayCurrent.fh WeakDecayCurrent.h\ LeptonNeutrinoCurrent.cc LeptonNeutrinoCurrent.fh \ LeptonNeutrinoCurrent.h HwWeakCurrents_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:1:0 HwWeakCurrents_la_SOURCES = \ FourPionNovosibirskCurrent.cc FourPionNovosibirskCurrent.h \ ScalarMesonCurrent.cc ScalarMesonCurrent.h\ ThreeMesonCurrentBase.cc ThreeMesonCurrentBase.h \ ThreeMesonDefaultCurrent.cc ThreeMesonDefaultCurrent.h\ ThreePionCLEOCurrent.cc ThreePionCLEOCurrent.h\ TwoMesonRhoKStarCurrent.cc TwoMesonRhoKStarCurrent.h\ TwoPionPhotonCurrent.cc TwoPionPhotonCurrent.h\ VectorMesonCurrent.cc VectorMesonCurrent.h\ FivePionCurrent.cc FivePionCurrent.h \ KPiCurrent.cc KPiCurrent.h\ KaonThreeMesonCurrent.cc KaonThreeMesonCurrent.h all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Decay/WeakCurrents/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Decay/WeakCurrents/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwWeakCurrents.la: $(HwWeakCurrents_la_OBJECTS) $(HwWeakCurrents_la_DEPENDENCIES) $(EXTRA_HwWeakCurrents_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwWeakCurrents_la_LINK) -rpath $(pkglibdir) $(HwWeakCurrents_la_OBJECTS) $(HwWeakCurrents_la_LIBADD) $(LIBS) libHwWeakCurrent.la: $(libHwWeakCurrent_la_OBJECTS) $(libHwWeakCurrent_la_DEPENDENCIES) $(EXTRA_libHwWeakCurrent_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwWeakCurrent_la_OBJECTS) $(libHwWeakCurrent_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FivePionCurrent.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FourPionNovosibirskCurrent.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/KPiCurrent.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/KaonThreeMesonCurrent.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LeptonNeutrinoCurrent.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ScalarMesonCurrent.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ThreeMesonCurrentBase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ThreeMesonDefaultCurrent.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ThreePionCLEOCurrent.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TwoMesonRhoKStarCurrent.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TwoPionPhotonCurrent.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VectorMesonCurrent.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/WeakDecayCurrent.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ clean-pkglibLTLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES \ cscopelist ctags distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/ScalarMesonCurrent.h�����������������������������������������0000644�0001750�0001750�00000015473�11754474774�024376� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ScalarMesonCurrent.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ScalarMesonCurrent_H #define HERWIG_ScalarMesonCurrent_H // This is the declaration of the ScalarMesonCurrent class. #include "WeakDecayCurrent.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The weak current for the production of one (pseudo)-scalar meson. * * In this case the current is given by * \f[J^\mu = f_Pp_P^\mu,\f] * where * - \f$f_P\f$ is the decay constant for the meson, * - \f$p_P\f$ is the momentum of the meson. * * The outgoing mesons and their decay constants can be specified using the * interfaces. * * @see WeakDecayCurrent. * */ class ScalarMesonCurrent: public WeakDecayCurrent { public: /** * Default constructor */ ScalarMesonCurrent(); 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** @name Methods for the construction of the phase space integrator. */ //@{ /** * Complete the construction of the decay mode for integration. * This version just adds the meson as the daughter of the last * resonance in the phase space channel. * @param icharge The total charge of the outgoing particles in the current. * @param imode The mode in the current being asked for. * @param mode The phase space mode for the integration * @param iloc The location of the of the first particle from the current in * the list of outgoing particles. * @param ires The location of the first intermediate for the current. * @param phase The prototype phase space channel for the integration. * @param upp The maximum possible mass the particles in the current are * allowed to have. * @return Whether the current was sucessfully constructed. */ virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp); /** * The particles produced by the current. This just returns the pseudoscalar * meson. * @param icharge The total charge of the particles in the current. * @param imode The mode for which the particles are being requested * @param iq The PDG code for the quark * @param ia The PDG code for the antiquark * @return The external particles for the current. */ virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); //@} /** * Hadronic current. This version returns the hadronic current described above. * @param imode The mode * @param ichan The phase-space channel the current is needed for. * @param scale The invariant mass of the particles in the current. * @param decay The decay products * @param meopt Option for the calculation of the matrix element * @return The current. */ virtual vector<LorentzPolarizationVectorE> current(const int imode,const int ichan, Energy & scale, const ParticleVector & decay, DecayIntegrator::MEOption meopt) const; /** * Accept the decay. Checks the meson against the list * @param id The id's of the particles in the current. * @return Can this current have the external particles specified. */ virtual bool accept(vector<int> id); /** * Return the decay mode number for a given set of particles in the current. * Checks the meson against the list * @param id The id's of the particles in the current. * @return The number of the mode */ virtual unsigned int decayMode(vector<int> id); /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<ScalarMesonCurrent> initScalarMesonCurrent; /** * Private and non-existent assignment operator. */ ScalarMesonCurrent & operator=(const ScalarMesonCurrent &); private: /** * the pdg code for the meson */ vector<long> _id; /** * the decay constant */ vector<Energy> _decay_constant; /** * The \f$\eta-\eta'\f$ mixing angle */ double _thetaeta; /** * The inital size of the arrays */ unsigned int _initsize; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ScalarMesonCurrent. */ template <> struct BaseClassTrait<Herwig::ScalarMesonCurrent,1> { /** Typedef of the base class of ScalarMesonCurrent. */ typedef Herwig::WeakDecayCurrent NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ScalarMesonCurrent> : public ClassTraitsBase<Herwig::ScalarMesonCurrent> { /** Return the class name. */ static string className() { return "Herwig::ScalarMesonCurrent"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwWeakCurrents.so"; } }; /** @endcond */ } #endif /* HERWIG_ScalarMesonCurrent_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/TwoPionPhotonCurrent.cc��������������������������������������0000644�0001750�0001750�00000032323�11754474774�025105� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TwoPionPhotonCurrent.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TwoPionPhotonCurrent class. // // Author: Peter Richardson // #include "TwoPionPhotonCurrent.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; TwoPionPhotonCurrent::TwoPionPhotonCurrent() { // modes handled addDecayMode(2,-1); setInitialModes(1); // weight of the resonances in the current _resweights.push_back(1.0);_resweights.push_back(-0.1);_resweights.push_back(0.0); // parameters of the rho resonaces _rhoparameters=true; _rhomasses.push_back(0.773*GeV);_rhomasses.push_back(1.70*GeV); _rhowidths.push_back(0.145*GeV);_rhowidths.push_back(0.26*GeV); // parameters fo the omega resonance _omegaparameters=true; _omegamass=782*MeV;_omegawidth=8.5*MeV; // couplings _grho = 0.11238947*GeV2; _grhoomegapi = 12.924/GeV; // parameters for the resonance used in the integration _intmass = 1.2*GeV; _intwidth = 0.35*GeV; } void TwoPionPhotonCurrent::doinit() { WeakDecayCurrent::doinit(); // set up the rho masses and widths tPDPtr temp; for(unsigned int ix=0;ix<3;++ix) { if(ix==0) temp = getParticleData(-213); else if(ix==1) temp = getParticleData(-100213); else if(ix==2) temp = getParticleData(-30213); // if using local values if(!_rhoparameters&&ix<_rhomasses.size()) { _rhomasses[ix]=temp->mass(); _rhowidths[ix]=temp->width(); } else if(ix>=_rhomasses.size()) { _rhomasses.push_back(temp->mass()); _rhowidths.push_back(temp->width()); } } // set up the omega masses and widths if(!_omegaparameters) { temp = getParticleData(ParticleID::omega); _omegamass = temp->mass(); _omegawidth = temp->width(); } } void TwoPionPhotonCurrent::persistentOutput(PersistentOStream & os) const { os << ounit(_grho,GeV2) << ounit(_grhoomegapi,1/GeV) << _resweights << _rhoparameters << ounit(_rhomasses,GeV) << ounit(_rhowidths,GeV) << _omegaparameters << ounit(_omegamass,GeV) << ounit(_omegawidth,GeV) << ounit(_intmass,GeV) << ounit(_intwidth,GeV) ; } void TwoPionPhotonCurrent::persistentInput(PersistentIStream & is, int) { is >> iunit(_grho,GeV2) >> iunit(_grhoomegapi,1/GeV) >> _resweights >> _rhoparameters >> iunit(_rhomasses,GeV) >> iunit(_rhowidths,GeV) >> _omegaparameters >> iunit(_omegamass,GeV) >> iunit(_omegawidth,GeV) >> iunit(_intmass,GeV) >> iunit(_intwidth,GeV); } ClassDescription<TwoPionPhotonCurrent> TwoPionPhotonCurrent::initTwoPionPhotonCurrent; // Definition of the static class description member. void TwoPionPhotonCurrent::Init() { static ParVector<TwoPionPhotonCurrent,double> interfacereswgt ("Weights", "The weights of the different resonances for the decay tau -> nu pi pi gamma", &TwoPionPhotonCurrent::_resweights, 0, 0, 0, -1000, 1000, false, false, true); static Switch<TwoPionPhotonCurrent,bool> interfaceRhoParameters ("RhoParameters", "Use local values for the rho meson masses and widths", &TwoPionPhotonCurrent::_rhoparameters, true, false, false); static SwitchOption interfaceRhoParameterstrue (interfaceRhoParameters, "Local", "Use local values", true); static SwitchOption interfaceRhoParametersParticleData (interfaceRhoParameters, "ParticleData", "Use the value from the particle data objects", false); static Switch<TwoPionPhotonCurrent,bool> interfaceomegaParameters ("omegaParameters", "Use local values for the omega meson masses and widths", &TwoPionPhotonCurrent::_omegaparameters, true, false, false); static SwitchOption interfaceomegaParameterstrue (interfaceomegaParameters, "Local", "Use local values", true); static SwitchOption interfaceomegaParametersParticleData (interfaceomegaParameters, "ParticleData", "Use the value from the particle data objects", false); static ParVector<TwoPionPhotonCurrent,Energy> interfaceRhoMasses ("RhoMasses", "The masses of the different rho resonances for the decay tau -> pi pi photon", &TwoPionPhotonCurrent::_rhomasses, MeV, -1, 773.*MeV, ZERO, 10000.*MeV, false, false, true); static ParVector<TwoPionPhotonCurrent,Energy> interfaceRhoWidths ("RhoWidths", "The widths of the different rho resonances for the decay tau -> nu pi pi photon", &TwoPionPhotonCurrent::_rhowidths, MeV, -1, 145.*MeV, ZERO, 1000.*MeV, false, false, true); static Parameter<TwoPionPhotonCurrent,Energy> interfaceomegamass ("omegamass", "The mass of the omega", &TwoPionPhotonCurrent::_omegamass, GeV, 0.782*GeV, ZERO, 1.0*GeV, false, false, true); static Parameter<TwoPionPhotonCurrent,Energy> interfaceomegawidth ("omegawidth", "The width of the omega for the decay tau- -> pi pi photon", &TwoPionPhotonCurrent::_omegawidth, GeV, 0.0085*GeV, ZERO, 1.*GeV, false, false, false); static ClassDocumentation<TwoPionPhotonCurrent> documentation ("The TwoPionPhotonCurrent class implements the decay " "tau+/- -> pi+/- pi0 gamma via an omega.", "The decay $\\tau^\\pm \\to \\omega \\to \\pi^\\pm \\pi^0 \\gamma$ " "is modelled after \\cite{Jadach:1993hs}.", " %\\cite{Jadach:1993hs}\n" "\\bibitem{Jadach:1993hs}\n" " S.~Jadach, Z.~Was, R.~Decker and J.~H.~Kuhn,\n" " %``The Tau Decay Library Tauola: Version 2.4,''\n" " Comput.\\ Phys.\\ Commun.\\ {\\bf 76}, 361 (1993).\n" " %%CITATION = CPHCB,76,361;%%\n" ); static Parameter<TwoPionPhotonCurrent,Energy2> interfacegrho ("grho", "The rho meson decay constant.", &TwoPionPhotonCurrent::_grho, GeV2, 0.11238947*GeV2, -1.*GeV2, 1.*GeV2, false, false, false); static Parameter<TwoPionPhotonCurrent,InvEnergy> interfacegrhoomegapi ("grhoomegapi", "The rho-omega-pi coupling", &TwoPionPhotonCurrent::_grhoomegapi, 1./GeV, 12.924/GeV, -100./GeV, 100./GeV, false, false, false); static Parameter<TwoPionPhotonCurrent,Energy> interfaceIntegrationMass ("IntegrationMass", "Mass of the pseudoresonance used to improve integration effciency", &TwoPionPhotonCurrent::_intmass, GeV, 1.4*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<TwoPionPhotonCurrent,Energy> interfaceIntegrationWidth ("IntegrationWidth", "Width of the pseudoresonance used to improve integration effciency", &TwoPionPhotonCurrent::_intwidth, GeV, 0.5*GeV, ZERO, 10.0*GeV, false, false, true); } // complete the construction of the decay mode for integration bool TwoPionPhotonCurrent::createMode(int icharge, unsigned int, DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp) { if(icharge!=3&&icharge!=-3){return false;} // check that the mode is are kinematical allowed Energy min(getParticleData(ParticleID::piplus)->mass()+ getParticleData(ParticleID::pi0)->mass()); if(min>upp) return false; // set up the integration channels; tPDPtr omega(getParticleData(ParticleID::omega)); tPDPtr W(getParticleData(ParticleID::Wplus)); if(icharge<0) W=W->CC(); DecayPhaseSpaceChannelPtr newchannel; newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(W,0,0.0,-ires-1,iloc); newchannel->addIntermediate(omega,0,0.0,iloc+1,iloc+2); mode->addChannel(newchannel); // reset the masses and widths of the resonances if needed mode->resetIntermediate(W,_intmass,_intwidth); // set up the omega masses and widths if(_omegaparameters) mode->resetIntermediate(omega,_omegamass,_omegawidth); return true; } // the particles produced by the current tPDVector TwoPionPhotonCurrent::particles(int icharge, unsigned int,int,int) { tPDVector extpart; if(abs(icharge)!=3) return extpart; if(icharge==3) extpart.push_back(getParticleData(ParticleID::piplus)); else if(icharge==-3) extpart.push_back(getParticleData(ParticleID::piminus)); extpart.push_back(getParticleData(ParticleID::pi0)); extpart.push_back(getParticleData(ParticleID::gamma)); return extpart; } // the hadronic currents vector<LorentzPolarizationVectorE> TwoPionPhotonCurrent::current(const int, const int,Energy & scale, const ParticleVector & decay, DecayIntegrator::MEOption meopt) const { useMe(); vector<LorentzPolarizationVector> temp; VectorWaveFunction:: calculateWaveFunctions(temp,decay[2],outgoing,true); if(meopt==DecayIntegrator::Terminate) { for(unsigned int ix=0;ix<2;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); VectorWaveFunction::constructSpinInfo(temp,decay[2], outgoing,true,true); return vector<LorentzPolarizationVectorE>(1,LorentzPolarizationVectorE()); } // locate the particles Lorentz5Momentum pout(decay[1]->momentum()+decay[2]->momentum()+ decay[0]->momentum()); // overall hadronic mass pout.rescaleMass(); scale=pout.mass(); Energy2 q2(pout.m2()); // mass of the omega pout = decay[1]->momentum()+decay[2]->momentum(); pout.rescaleMass(); Energy2 s2(pout.m2()); // compute the prefactor complex<InvEnergy3> prefactor(-FFunction(ZERO)*FFunction(q2)*scale* sqrt(Constants::twopi*generator()->standardModel()->alphaEM())* BreitWigner(s2,10)); // dot products which don't depend on the polarization vector Energy2 dot12(decay[2]->momentum()*decay[1]->momentum()); Energy2 dot13(decay[2]->momentum()*decay[0]->momentum()); Energy2 dot23(decay[1]->momentum()*decay[0]->momentum()); Energy2 mpi2 = sqr(decay[0]->mass()); vector<LorentzPolarizationVectorE> ret(3); for(unsigned int ix=0;ix<3;++ix) { if(ix!=1) { // obtain the dot products we need complex<Energy> dote2 = temp[ix]*decay[1]->momentum(); complex<Energy> dote3 = temp[ix]*decay[0]->momentum(); // now compute the coefficients complex<Energy4> coeffa = mpi2*dot13-dot12*(dot23-dot13); complex<Energy3> coeffb = dote2*dot13-dote3*dot12; complex<Energy3> coeffc = dote2*dot23-dote3*(mpi2+dot12); // finally compute the current ret[ix]= prefactor*(coeffa*temp[ix] -coeffb*decay[1]->momentum() +coeffc*decay[2]->momentum()); } else{ret[ix]=LorentzPolarizationVectorE();} } return ret; } bool TwoPionPhotonCurrent::accept(vector<int> id) { if(id.size()!=3){return false;} unsigned int npiplus(0),npi0(0),ngamma(0); for(unsigned int ix=0;ix<id.size();++ix) { if(abs(id[ix])==ParticleID::piplus) ++npiplus; else if(id[ix]==ParticleID::gamma) ++ngamma; else if(id[ix]==ParticleID::pi0) ++npi0; } return npiplus==1&&ngamma==1&&npi0==1; } unsigned int TwoPionPhotonCurrent::decayMode(vector<int>) { return 0; } // output the information for the database void TwoPionPhotonCurrent::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::TwoPionPhotonCurrent " << name() << " HwWeakCurrents.so\n"; output << "newdef " << name() << ":RhoParameters " << _rhoparameters << "\n"; output << "newdef " << name() << ":omegaParameters " << _omegaparameters << "\n"; output << "newdef " << name() << ":omegamass " << _omegamass/GeV << "\n"; output << "newdef " << name() << ":omegawidth " << _omegawidth/GeV << "\n"; output << "newdef " << name() << ":grho " << _grho/GeV2 << "\n"; output << "newdef " << name() << ":grhoomegapi " << _grhoomegapi*GeV << "\n"; output << "newdef " << name() << ":IntegrationMass " << _intmass/GeV << "\n"; output << "newdef " << name() << ":IntegrationWidth " << _intwidth/GeV << "\n"; unsigned int ix; for(ix=0;ix<_resweights.size();++ix) { if(ix<3) output << "newdef " << name() << ":Weights " << ix << " " << _resweights[ix] << "\n"; else output << "insert " << name() << ":Weights " << ix << " " << _resweights[ix] << "\n"; } for(ix=0;ix<_rhomasses.size();++ix) { if(ix<2) output << "newdef " << name() << ":RhoMasses " << ix << " " << _rhomasses[ix]/MeV << "\n"; else output << "insert " << name() << ":RhoMasses " << ix << " " << _rhomasses[ix]/MeV << "\n"; } for(ix=0;ix<_rhowidths.size();++ix) { if(ix<2) output << "newdef " << name() << ":RhoWidths " << ix << " " << _rhowidths[ix]/MeV << "\n"; else output << "insert " << name() << ":RhoWidths " << ix << " " << _rhowidths[ix]/MeV << "\n"; } WeakDecayCurrent::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/TwoPionPhotonCurrent.h���������������������������������������0000644�0001750�0001750�00000024342�11754474774�024751� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TwoPionPhotonCurrent.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TwoPionPhotonCurrent_H #define HERWIG_TwoPionPhotonCurrent_H // // This is the declaration of the TwoPionPhotonCurrent class. // #include "WeakDecayCurrent.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * This class implements the decay current for \f$\pi^\pm\pi^0 \gamma\f$ via * an intermediate \f$\omega\f$. It inherits from the <code>WeakDecayCurrent</code> * class and implements the hadronic current. * * The model is based on the one used in TAUOLA, Comput.Phys.Commun.76:361-380,1993. * The current is given by * \f[J^\mu = e T \left\{ * \epsilon^\mu\left[ m^2_\pi p_1\cdot p_3 * -p_2\cdot p_3(p_2\cdot p_1-p_1\cdot p_3)\right] * -p_2^\mu\left[p_2\cdot\epsilon p_1\cdot p_3-p_1\cdot\epsilon p_2\cdot p_3\right] * +p_3^\mu\left[\epsilon\cdot p_2-\epsilon\cdot p_1(m^2_\pi+p_2\cdotp_3)\right] *\right\}\f] * where * - \f$p_1\f$ is the momentum of the charged pion * - \f$p_2\f$ is the momentum of the neutral pion * - \f$p_3\f$ is the momentum of the photon * - \f$\epsilon\f$ is the polarization of the photon * - \f$e\f$ is the electric charge of the positron * and the normaliztion factor is * \f[T = F(q^2)F(0)\frac1{\sqrt{2}B_\omega(s_2)}\f] * and * \f[F(s) = \sqrt{2}F_\rho g_{\rho\omega\pi}\sum_k\sigma_k B_{\rho_k}(s)\f] * where * - \f$B_\omega(s)=\frac1{m^2_\omega-s-im_\omega\Gamma_\omega}\f$ is the Breit-Wigner for the \f$\omega\f$. * - \f$m_\omega\f$ is the mass of the \f$\omega\f$. * - \f$\Gamma_\omega \f$ is the width of the \f$\omega\f$. * - \f$F_\rho\f$ is the coupling for the conversion of the \f$\rho\f$ to a photon. * - \f$g_{\rho\omega\pi}\f$ is the coupling of \f$\rho\f$, \f$\omega\f$, \f$\pi\f$. * - \f$m_{\rho_k}\f$ is the mass of the \f$k\f$th \f$\rho\f$ resonance * - \f$B_{\rho_k}(s)=\frac1{m^2_{\rho_k}-s-im_{\rho_k}\Gamma_{\rho_k}}\f$ is the * Breit-Wigner for \f${\rho_k}\f$. * - \f$m_{\rho_k}\f$ is the mass of the \f${\rho_k}\f$. * - \f$\Gamma_{\rho_k} \f$ is the width of the \f${\rho_k}\f$. * * @see WeakDecayCurrent * * \author Peter Richardson * */ class TwoPionPhotonCurrent: public WeakDecayCurrent { public: /** * Default constructor */ TwoPionPhotonCurrent(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** @name Methods for the construction of the phase space integrator. */ //@{ /** * Complete the construction of the decay mode for integration. * This version just adds the meson as the daughter of the last * resonance in the phase space channel. * @param icharge The total charge of the outgoing particles in the current. * @param imode The mode in the current being asked for. * @param mode The phase space mode for the integration * @param iloc The location of the of the first particle from the current in * the list of outgoing particles. * @param ires The location of the first intermediate for the current. * @param phase The prototype phase space channel for the integration. * @param upp The maximum possible mass the particles in the current are * allowed to have. * @return Whether the current was sucessfully constructed. */ virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp); /** * The particles produced by the current. This just returns the pseudoscalar * meson. * @param icharge The total charge of the particles in the current. * @param imode The mode for which the particles are being requested * @param iq The PDG code for the quark * @param ia The PDG code for the antiquark * @return The external particles for the current. */ virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); //@} /** * Hadronic current. This version returns the hadronic current described above. * @param imode The mode * @param ichan The phase-space channel the current is needed for. * @param scale The invariant mass of the particles in the current. * @param decay The decay products * @param meopt Option for the calculation of the matrix element * @return The current. */ virtual vector<LorentzPolarizationVectorE> current(const int imode,const int ichan,Energy & scale, const ParticleVector & decay,DecayIntegrator::MEOption meopt) const; /** * Accept the decay. Checks the meson against the list * @param id The id's of the particles in the current. * @return Can this current have the external particles specified. */ virtual bool accept(vector<int> id); /** * Return the decay mode number for a given set of particles in the current. * Checks the meson against the list * @param id The id's of the particles in the current. * @return The number of the mode */ virtual unsigned int decayMode(vector<int> id); /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<TwoPionPhotonCurrent> initTwoPionPhotonCurrent; /** * Private and non-existent assignment operator. */ TwoPionPhotonCurrent & operator=(const TwoPionPhotonCurrent &); private: /** * Calculate the \f$F(q^2)\f$ function at a given scale * @param q2 The scale \f$q^2\f$. * @return The value of the function. */ complex<InvEnergy> FFunction(Energy2 q2) const { complex<InvEnergy2> output(ZERO); for(unsigned int ix=0, N=_resweights.size(); ix<N && ix <3;++ix) { output -= _resweights[ix]*BreitWigner(q2,ix); } return output*_grho*_grhoomegapi*sqrt(2.); } /** * Fixed width Breit wigner * @param q2 The scame \f$q^2\f$ * @param ires The resonance required (0,1,3) are the \f$\rho\f$'s and 10 is the * \f$\omega\f$. * @return The breit wigner */ complex<InvEnergy2> BreitWigner(Energy2 q2,unsigned int ires) const { static const Complex ii(0.,1.); complex<Energy2> denom; if(ires<_rhomasses.size()) { denom = q2-_rhomasses[ires]*_rhomasses[ires]+ii*_rhomasses[ires]*_rhowidths[ires]; } else if(ires==10) { denom = q2-_omegamass*_omegamass+ii*_omegamass*_omegawidth; } else assert(false); return 1./denom; } private: /** * Coupling of the rho to the photon, \f$F_\rho\f$. */ Energy2 _grho; /** * Coupling of the rho to the omega and a pion, \f$g_{\rho\omega\pi}\f$. */ InvEnergy _grhoomegapi; /** * Weights of the different rho resonances in the current */ vector<double> _resweights; /** * Use local parameters for the rho resonances rather than from the particle data * objects */ bool _rhoparameters; /** * Masses of the \f$\rho\f$ resonances */ vector<Energy> _rhomasses; /** * Widths of the \f$\rho\f$ resonances */ vector<Energy> _rhowidths; /** * use local parameters for the omega rather than from the particle data objects */ bool _omegaparameters; /** * The \f$\omega\f$ mass. */ Energy _omegamass; /** * The \f$\omega\f$ width. */ Energy _omegawidth; /** * Mass for the intermediate in the phase-space, this is a technical parameter to * improve the phase-space integration efficiency. */ Energy _intmass; /** * Width for the intermediate in the phase-space, this is a technical parameter to * improve the phase-space integration efficiency. */ Energy _intwidth; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of TwoPionPhotonCurrent. */ template <> struct BaseClassTrait<Herwig::TwoPionPhotonCurrent,1> { /** Typedef of the base class of TwoPionPhotonCurrent */ typedef Herwig::WeakDecayCurrent NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::TwoPionPhotonCurrent> : public ClassTraitsBase<Herwig::TwoPionPhotonCurrent> { /** Return the class name.*/ static string className() { return "Herwig::TwoPionPhotonCurrent"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwWeakCurrents.so"; } }; /** @endcond */ } #endif /* HERWIG_TwoPionPhotonCurrent_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/TwoMesonRhoKStarCurrent.cc�����������������������������������0000644�0001750�0001750�00000055201�11754474774�025507� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TwoMesonRhoKStarCurrent.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TwoMesonRhoKStarCurrent class. // // Author: Peter Richardson // #include "TwoMesonRhoKStarCurrent.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; TwoMesonRhoKStarCurrent::TwoMesonRhoKStarCurrent() { // set up for the modes in the base class addDecayMode(2,-1); addDecayMode(2,-3); addDecayMode(2,-3); addDecayMode(2,-1); addDecayMode(2,-3); setInitialModes(5); // the weights of the different resonances in the matrix elements _pimag.push_back( 1.0);_pimag.push_back( 0.167);_pimag.push_back( 0.05); _piphase.push_back(0.0);_piphase.push_back( 180);_piphase.push_back(0.0); _kmag.push_back( 1.0);_kmag.push_back( 0.038);_kmag.push_back( 0.00); _kphase.push_back(0.0);_kphase.push_back( 180);_kphase.push_back(0.0); // models to use _pimodel = 0;_kmodel=0; // parameter for the masses (use the parameters freom the CLEO fit // rather than the PDG masses etc) _rhoparameters=true; _rhomasses.push_back(774.6*MeV);_rhomasses.push_back(1408*MeV); _rhomasses.push_back(1700*MeV); _rhowidths.push_back(149*MeV);_rhowidths.push_back(502*MeV); _rhowidths.push_back(235*MeV); _kstarparameters=true; _kstarmasses.push_back(0.8921*GeV);_kstarmasses.push_back(1.700*GeV); _kstarwidths.push_back(0.0513*GeV);_kstarwidths.push_back(0.235*GeV); } void TwoMesonRhoKStarCurrent::doinit() { WeakDecayCurrent::doinit(); // check consistency of parametrers if(_rhomasses.size()!=_rhowidths.size()|| _kstarmasses.size()!=_kstarwidths.size()) { throw InitException() << "Inconsistent parameters in TwoMesonRhoKStarCurrent" << "::doinit()" << Exception::abortnow; } // the resonances tPDPtr res[6]={getParticleData(-213 ),getParticleData(-100213), getParticleData(-30213 ),getParticleData(-323 ), getParticleData(-100323),getParticleData(-30323 )}; // reset the masses in the form-factors if needed if(_rhoparameters&&_rhomasses.size()<3) { for(unsigned int ix=_rhomasses.size();ix<3;++ix) { if(res[ix]) _rhomasses.push_back(res[ix]->mass() ); if(res[ix]) _rhowidths.push_back(res[ix]->width()); } } else if(!_rhoparameters) { _rhomasses.clear();_rhowidths.clear(); for(unsigned int ix=0;ix<3;++ix) { if(res[ix]) _rhomasses.push_back(res[ix]->mass() ); if(res[ix]) _rhowidths.push_back(res[ix]->width()); } } // then the Kstar resonances if(_kstarparameters&&_kstarmasses.size()<3) { for(unsigned int ix=_kstarmasses.size();ix<3;++ix) { if(res[ix+3]) _kstarmasses.push_back(res[ix+3]->mass()); if(res[ix+3]) _kstarwidths.push_back(res[ix+3]->width()); } } else if(!_kstarparameters) { _kstarmasses.clear();_kstarwidths.clear(); for(unsigned int ix=0;ix<3;++ix) { if(res[ix+3]) _kstarmasses.push_back(res[ix+3]->mass()); if(res[ix+3]) _kstarwidths.push_back(res[ix+3]->width()); } } // set up for the Breit Wigners Energy mpi0( getParticleData(ParticleID::pi0 )->mass()); Energy mpiplus(getParticleData(ParticleID::piplus)->mass()); Energy mk0( getParticleData(ParticleID::K0 )->mass()); // rho resonances for(unsigned int ix=0;ix<3;++ix) { _mass.push_back(_rhomasses[ix]); _width.push_back(_rhowidths[ix]); _mass2.push_back(_mass[ix]*_mass[ix]); _massw.push_back(_mass[ix]*_width[ix]); _massa.push_back(mpi0); _massb.push_back(mpiplus); _mom.push_back(pcm(ix,_mass[ix])); _hm2.push_back(GSModelhFunction(ix,_mass[ix])); _dparam.push_back(GSModelDParameter(ix)); _dhdq2.push_back(GSModeldhdq2Parameter(ix)); } // Kstar resonances for(unsigned int ix=0;ix<3;++ix) { _mass.push_back(_kstarmasses[ix]); _width.push_back(_kstarwidths[ix]); _mass2.push_back(_mass[ix+3]*_mass[ix+3]); _massw.push_back(_mass[ix+3]*_width[ix+3]); _massa.push_back(mk0); _massb.push_back(mpiplus); _mom.push_back(pcm(ix+3,_mass[ix+3])); _hm2.push_back(GSModelhFunction(ix+3,_mass[ix+3])); _dparam.push_back(GSModelDParameter(ix+3)); _dhdq2.push_back(GSModeldhdq2Parameter(ix+3)); } // weights for the rho channels if(_pimag.size()!=_piphase.size()) throw InitException() << "The vectors containing the weights and phase for the" << " rho channel must be the same size in " << "TwoMesonRhoKStarCurrent::doinit()" << Exception::runerror; _piwgt.resize(_pimag.size()); for(unsigned int ix=0;ix<_pimag.size();++ix) { double angle = _piphase[ix]/180.*Constants::pi; _piwgt[ix] = _pimag[ix]*(cos(angle)+Complex(0.,1.)*sin(angle)); } // weights for the K* channels if(_kmag.size()!=_kphase.size()) throw InitException() << "The vectors containing the weights and phase for the" << " K* channel must be the same size in " << "TwoMesonRhoKStarCurrent::doinit()" << Exception::runerror; _kwgt.resize(_kmag.size()); for(unsigned int ix=0;ix<_kmag.size();++ix) { double angle = _kphase[ix]/180.*Constants::pi; _kwgt[ix] = _kmag[ix]*(cos(angle)+Complex(0.,1.)*sin(angle)); } } void TwoMesonRhoKStarCurrent::persistentOutput(PersistentOStream & os) const { os << _pimodel << _kmodel << _piwgt << _pimag << _piphase << _kwgt << _kmag << _kphase << _rhoparameters << _kstarparameters << ounit(_rhomasses,GeV) << ounit(_rhowidths,GeV) << ounit(_kstarmasses,GeV) << ounit(_kstarwidths,GeV) << ounit(_mass,GeV) << ounit(_width,GeV) << ounit(_mass2,GeV2) << ounit(_massw,GeV2) << ounit(_massa,GeV) <<ounit(_massb,GeV) << ounit(_mom,GeV) << ounit(_dhdq2,1/GeV2) << _hm2 << _dparam; } void TwoMesonRhoKStarCurrent::persistentInput(PersistentIStream & is, int) { is >> _pimodel >> _kmodel >> _piwgt >> _pimag >> _piphase >> _kwgt >> _kmag >> _kphase >> _rhoparameters >> _kstarparameters >> iunit(_rhomasses,GeV) >> iunit(_rhowidths,GeV) >> iunit(_kstarmasses,GeV) >> iunit(_kstarwidths,GeV) >> iunit(_mass,GeV) >> iunit(_width,GeV) >> iunit(_mass2,GeV2) >> iunit(_massw,GeV2) >> iunit(_massa,GeV) >> iunit(_massb,GeV) >> iunit(_mom,GeV) >> iunit(_dhdq2,1/GeV2) >> _hm2 >> _dparam; } ClassDescription<TwoMesonRhoKStarCurrent> TwoMesonRhoKStarCurrent::initTwoMesonRhoKStarCurrent; // Definition of the static class description member. void TwoMesonRhoKStarCurrent::Init() { static ParVector<TwoMesonRhoKStarCurrent,Energy> interfaceRhoMasses ("RhoMasses", "The masses of the different rho resonances for the pi pi channel", &TwoMesonRhoKStarCurrent::_rhomasses, MeV, -1, 775.8*MeV, ZERO, 10000.*MeV, false, false, true); static ParVector<TwoMesonRhoKStarCurrent,Energy> interfaceRhoWidths ("RhoWidths", "The widths of the different rho resonances for the pi pi channel", &TwoMesonRhoKStarCurrent::_rhowidths, MeV, -1, 150.3*MeV, ZERO, 1000.*MeV, false, false, true); static ParVector<TwoMesonRhoKStarCurrent,Energy> interfaceKstarMasses ("KstarMasses", "The masses of the different K* resonances for the pi pi channel", &TwoMesonRhoKStarCurrent::_kstarmasses, MeV, -1, 891.66*MeV, ZERO, 10000.*MeV, false, false, true); static ParVector<TwoMesonRhoKStarCurrent,Energy> interfaceKstarWidths ("KstarWidths", "The widths of the different K* resonances for the pi pi channel", &TwoMesonRhoKStarCurrent::_kstarwidths, MeV, -1, 50.8*MeV, ZERO, 1000.*MeV, false, false, true); static Switch<TwoMesonRhoKStarCurrent,bool> interfaceRhoParameters ("RhoParameters", "Use local values for the rho meson masses and widths", &TwoMesonRhoKStarCurrent::_rhoparameters, true, false, false); static SwitchOption interfaceRhoParameterstrue (interfaceRhoParameters, "Local", "Use local values", true); static SwitchOption interfaceRhoParametersParticleData (interfaceRhoParameters, "ParticleData", "Use the value from the particle data objects", false); static Switch<TwoMesonRhoKStarCurrent,bool> interfaceKstarParameters ("KstarParameters", "Use local values for the Kstar meson masses and widths", &TwoMesonRhoKStarCurrent::_kstarparameters, true, false, false); static SwitchOption interfaceKstarParameterstrue (interfaceKstarParameters, "Local", "Use local values", true); static SwitchOption interfaceKstarParametersParticleData (interfaceKstarParameters, "ParticleData", "Use the value from the particle data objects", false); static ParVector<TwoMesonRhoKStarCurrent,double> interfacePiMagnitude ("PiMagnitude", "Magnitude of the weight of the different resonances for the pi pi channel", &TwoMesonRhoKStarCurrent::_pimag, -1, 0., 0, 0, false, false, Interface::nolimits); static ParVector<TwoMesonRhoKStarCurrent,double> interfacePiPhase ("PiPhase", "Phase of the weight of the different resonances for the pi pi channel", &TwoMesonRhoKStarCurrent::_piphase, -1, 0., 0, 0, false, false, Interface::nolimits); static ParVector<TwoMesonRhoKStarCurrent,double> interfaceKMagnitude ("KMagnitude", "Magnitude of the weight of the different resonances for the K pi channel", &TwoMesonRhoKStarCurrent::_kmag, -1, 0., 0, 0, false, false, Interface::nolimits); static ParVector<TwoMesonRhoKStarCurrent,double> interfaceKPhase ("KPhase", "Phase of the weight of the different resonances for the K pi channel", &TwoMesonRhoKStarCurrent::_kphase, -1, 0., 0, 0, false, false, Interface::nolimits); static Switch<TwoMesonRhoKStarCurrent,int> interfacePiModel ("PiModel", "The model to use for the propagator for the pion modes.", &TwoMesonRhoKStarCurrent::_pimodel, 0, false, false); static SwitchOption interfacePiModelKuhn (interfacePiModel, "Kuhn", "The model of Kuhn and Santamaria", 0); static SwitchOption interfacePiModelGounaris (interfacePiModel, "Gounaris", "The model of Gounaris and Sakurai.", 1); static Switch<TwoMesonRhoKStarCurrent,int> interfaceKModel ("KModel", "The model to use for the propagator for the kaon modes.", &TwoMesonRhoKStarCurrent::_kmodel, 0, false, false); static SwitchOption interfaceKModelKuhn (interfaceKModel, "Kuhn", "The model of Kuhn and Santamaria", 0); static SwitchOption interfaceKModelGounaris (interfaceKModel, "Gounaris", "The model of Gounaris and Sakurai.", 1); static ClassDocumentation<TwoMesonRhoKStarCurrent> documentation ("The TwoMesonRhoKStarCurrent class is designed to implement weak" "decay to two scalar mesons using the models of either Kuhn and " "Santamaria (Z. Phys. C48, 445 (1990)) or Gounaris and Sakurai Phys. Rev. " "Lett. 21, 244 (1968). The mixing parameters are taken from " "Phys. Rev. D61:112002,2000 (CLEO), although the PDG values for the " "masses and widths are used, for the decay pi+/- pi0." " The decay K pi is assumed to be dominated by the lowest lying K* resonance.", "The weak " "decay current to two scalar mesons is implemented " "using the models of either Kuhn and " "Santamaria \\cite{Kuhn:1990ad} or Gounaris and Sakurai \\cite{Gounaris:1968mw}. " "The mixing parameters are taken from " "\\cite{Asner:1999kj}, although the PDG values for the " "masses and widths are used, for the decay pi+/- pi0." " The decay K pi is assumed to be dominated by the lowest lying K* resonance.", "%\\cite{Kuhn:1990ad}\n" "\\bibitem{Kuhn:1990ad}\n" " J.~H.~Kuhn and A.~Santamaria,\n" " %``Tau decays to pions,''\n" " Z.\\ Phys.\\ C {\\bf 48}, 445 (1990).\n" " %%CITATION = ZEPYA,C48,445;%%\n" "%\\cite{Gounaris:1968mw}\n" "\\bibitem{Gounaris:1968mw}\n" " G.~J.~Gounaris and J.~J.~Sakurai,\n" " ``Finite width corrections to the vector meson dominance prediction for rho\n" " %$\\to$ e+ e-,''\n" " Phys.\\ Rev.\\ Lett.\\ {\\bf 21}, 244 (1968).\n" " %%CITATION = PRLTA,21,244;%%\n" "%\\cite{Asner:1999kj}\n" "\\bibitem{Asner:1999kj}\n" " D.~M.~Asner {\\it et al.} [CLEO Collaboration],\n" " ``Hadronic structure in the decay tau- --> nu/tau pi- pi0 pi0 and the sign\n" " %of the tau neutrino helicity,''\n" " Phys.\\ Rev.\\ D {\\bf 61}, 012002 (2000)\n" " [arXiv:hep-ex/9902022].\n" " %%CITATION = PHRVA,D61,012002;%%\n" ); } // complete the construction of the decay mode for integration bool TwoMesonRhoKStarCurrent::createMode(int icharge, unsigned int imode, DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int, DecayPhaseSpaceChannelPtr phase,Energy upp) { if(abs(icharge)!=3) return false; // make sure that the decays are kinematically allowed tPDPtr part[2]; if(imode==0) { part[0]=getParticleData(ParticleID::piplus); part[1]=getParticleData(ParticleID::pi0); } else if(imode==1) { part[0]=getParticleData(ParticleID::Kplus); part[1]=getParticleData(ParticleID::pi0); } else if(imode==2) { part[0]=getParticleData(ParticleID::K0); part[1]=getParticleData(ParticleID::piplus); } else if(imode==3) { part[0]=getParticleData(ParticleID::Kplus); part[1]=getParticleData(ParticleID::K0); } else if(imode==4) { part[0]=getParticleData(ParticleID::eta); part[1]=getParticleData(ParticleID::Kplus); } Energy min(part[0]->massMin()+part[1]->massMin()); if(min>upp) return false; DecayPhaseSpaceChannelPtr newchannel; // set the resonances // two pion or K+ K0 decay tPDPtr res[3]; if(imode==0||imode==3) { res[0]=getParticleData(213); res[1]=getParticleData(100213); res[2]=getParticleData(30213); } // K+ pi0 or K0 pi+ or K eta decay else if(imode==1||imode==2||imode==4) { res[0]=getParticleData(323); res[1]=getParticleData(100323); res[2]=getParticleData(30323); } else { throw Exception() << "Failure of initialisation in TwoMesonRhoKStarCurrent" << Exception::abortnow; } if(icharge==-3) { for(unsigned int ix=0;ix<3;++ix) { if(res[ix]&&res[ix]->CC()) res[ix]=res[ix]->CC(); } } // create the channels for(unsigned int ix=0;ix<3;++ix) { if(res[ix]) { newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(res[ix],0,0.0,iloc,iloc+1); mode->addChannel(newchannel); } } // reset the masses in the intergrators if needed // for the rho if(_rhoparameters&&(imode==0||imode==3)) { for(unsigned int ix=0;ix<3;++ix) { if(ix<_rhomasses.size()&&res[ix]) { mode->resetIntermediate(res[ix],_rhomasses[ix],_rhowidths[ix]); } } } // for the K* else if(_kstarparameters&&imode!=0&&imode!=3) { for(unsigned int ix=0;ix<3;++ix) { if(ix<_kstarmasses.size()&&res[ix]) { mode->resetIntermediate(res[ix],_kstarmasses[ix],_kstarwidths[ix]); } } } // return if successful return true; } // the particles produced by the current tPDVector TwoMesonRhoKStarCurrent::particles(int icharge, unsigned int imode, int,int) { if(abs(icharge)!=3) return tPDVector(); tPDVector output(2); if(imode==0) { output[0]=getParticleData(ParticleID::piplus); output[1]=getParticleData(ParticleID::pi0); } else if(imode==1) { output[0]=getParticleData(ParticleID::Kplus); output[1]=getParticleData(ParticleID::pi0); } else if(imode==2) { output[0]=getParticleData(ParticleID::K0); output[1]=getParticleData(ParticleID::piplus); } else if(imode==3) { output[0]=getParticleData(ParticleID::Kplus); output[1]=getParticleData(ParticleID::Kbar0); } else { output[0]=getParticleData(ParticleID::eta); output[1]=getParticleData(ParticleID::Kplus); } if(icharge==-3) { for(unsigned int ix=0;ix<output.size();++ix) { if(output[ix]->CC()) output[ix]=output[ix]->CC(); } } return output; } // hadronic current vector<LorentzPolarizationVectorE> TwoMesonRhoKStarCurrent::current(const int imode, const int ichan, Energy & scale,const ParticleVector & outpart, DecayIntegrator::MEOption meopt) const { useMe(); if(meopt==DecayIntegrator::Terminate) { for(unsigned int ix=0;ix<2;++ix) ScalarWaveFunction::constructSpinInfo(outpart[ix],outgoing,true); return vector<LorentzPolarizationVectorE>(1,LorentzPolarizationVectorE()); } // momentum difference and sum of the mesons Lorentz5Momentum pdiff(outpart[0]->momentum()-outpart[1]->momentum()); Lorentz5Momentum psum (outpart[0]->momentum()+outpart[1]->momentum()); psum.rescaleMass(); scale=psum.mass(); // mass2 of vector intermediate state Energy2 q2(psum.m2()); double dot(psum*pdiff/q2); psum *=dot; LorentzPolarizationVector vect; // calculate the current Complex FPI(0.),denom(0.); // rho if(imode==0||imode==3) { if(ichan<0) { for(unsigned int ix=0;ix<_piwgt.size()&&ix<3;++ix) { FPI+=_piwgt[ix]*BreitWigner(q2,_pimodel,0,ix); denom+=_piwgt[ix]; } } else if(ichan<int(_piwgt.size())&&ichan<3) { FPI=_piwgt[ichan]*BreitWigner(q2,_pimodel,0,ichan); for(unsigned int ix=0;ix<_piwgt.size()&&ix<3;++ix) denom+=_piwgt[ix]; } } // K* else { if(ichan<0) { for(unsigned int ix=0;ix<_kwgt.size()&&ix<3;++ix) { FPI+=_kwgt[ix]*BreitWigner(q2,_kmodel,1,ix); denom+=_kwgt[ix]; } } else if (ichan<int(_kwgt.size())&&ichan<3) { FPI=_kwgt[ichan]*BreitWigner(q2,_kmodel,1,ichan); for(unsigned int ix=0;ix<_kwgt.size()&&ix<3;++ix) denom+=_kwgt[ix]; } } // additional prefactors FPI/=denom; // pion mode if(imode==0) FPI *= sqrt(2.0); // single kaon modes else if(imode==1) FPI *= sqrt(0.5); else if(imode==2) FPI *= 1. ; // two kaon modes else if(imode==3) FPI *= 1. ; // the kaon eta mode else if(imode==4) FPI *=sqrt(1.5); // compute the current pdiff-=psum; return vector<LorentzPolarizationVectorE>(1,FPI*pdiff); } bool TwoMesonRhoKStarCurrent::accept(vector<int> id) { bool allowed(false); // check there are only two particles if(id.size()!=2){return false;} // pion modes if((id[0]==ParticleID::piminus && id[1]==ParticleID::pi0) || (id[0]==ParticleID::pi0 && id[1]==ParticleID::piminus) || (id[0]==ParticleID::piplus && id[1]==ParticleID::pi0) || (id[0]==ParticleID::pi0 && id[1]==ParticleID::piplus)) allowed=true; // single charged kaon else if((id[0]==ParticleID::Kminus && id[1]==ParticleID::pi0) || (id[0]==ParticleID::pi0 && id[1]==ParticleID::Kminus) || (id[0]==ParticleID::Kplus && id[1]==ParticleID::pi0) || (id[0]==ParticleID::pi0 && id[1]==ParticleID::Kplus)) allowed=true; // single neutral kaon else if((id[0]==ParticleID::piminus && id[1]==ParticleID::Kbar0) || (id[0]==ParticleID::Kbar0 && id[1]==ParticleID::piminus) || (id[0]==ParticleID::piplus && id[1]==ParticleID::K0) || (id[0]==ParticleID::K0 && id[1]==ParticleID::piplus)) allowed=true; // two kaons else if((id[0]==ParticleID::Kminus && id[1]==ParticleID::K0) || (id[0]==ParticleID::K0 && id[1]==ParticleID::Kminus) || (id[0]==ParticleID::Kplus && id[1]==ParticleID::Kbar0) || (id[0]==ParticleID::Kbar0 && id[1]==ParticleID::Kplus)) allowed=true; // charged kaon and eta else if((id[0]==ParticleID::Kminus && id[1]==ParticleID::eta) || (id[0]==ParticleID::eta && id[1]==ParticleID::Kminus) || (id[0]==ParticleID::Kplus && id[1]==ParticleID::eta) || (id[0]==ParticleID::eta && id[1]==ParticleID::Kplus)) allowed=true; return allowed; } // the decay mode unsigned int TwoMesonRhoKStarCurrent::decayMode(vector<int> idout) { unsigned int imode(0),nkaon(0); for(unsigned int ix=0;ix<idout.size();++ix) { if(abs(idout[ix])==ParticleID::K0) { imode=2; ++nkaon; } else if (abs(idout[ix])==ParticleID::Kplus) { imode=1; ++nkaon; } else if (idout[ix]==ParticleID::eta) { imode=4; break; } } if(nkaon==2) imode=3; return imode; } // output the information for the database void TwoMesonRhoKStarCurrent::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::TwoMesonRhoKStarCurrent " << name() << " HwWeakCurrents.so\n"; unsigned int ix; for(ix=0;ix<_rhomasses.size();++ix) { if(ix<3) output << "newdef "; else output << "insert "; output << name() << ":RhoMasses " << ix << " " << _rhomasses[ix]/MeV << "\n"; } for(ix=0;ix<_rhowidths.size();++ix) { if(ix<3) output << "newdef "; else output << "insert "; output << name() << ":RhoWidths " << ix << " " << _rhowidths[ix]/MeV << "\n"; } for(ix=0;ix<_kstarmasses.size();++ix) { if(ix<2) output << "newdef "; else output << "insert "; output << name() << ":KstarMasses " << ix << " " << _kstarmasses[ix]/MeV << "\n"; } for(ix=0;ix<_kstarwidths.size();++ix) { if(ix<2) output << "newdef "; else output << "insert "; output << name() << ":KstarWidths " << ix << " " << _kstarwidths[ix]/MeV << "\n"; } output << "newdef " << name() << ":RhoParameters " << _rhoparameters << "\n"; output << "newdef " << name() << ":KstarParameters " << _kstarparameters << "\n"; for(ix=0;ix<_piwgt.size();++ix) { if(ix<3) output << "newdef "; else output << "insert "; output << name() << ":PiMagnitude " << ix << " " << _pimag[ix] << "\n"; if(ix<3) output << "newdef "; else output << "insert "; output << name() << ":PiPhase " << ix << " " << _piphase[ix] << "\n"; } for(ix=0;ix<_kwgt.size();++ix) { if(ix<3) output << "newdef "; else output << "insert "; output << name() << ":KMagnitude " << ix << " " << _kmag[ix] << "\n"; if(ix<3) output << "newdef "; else output << "insert "; output << name() << ":KPhase " << ix << " " << _kphase[ix] << "\n"; } output << "newdef " << name() << ":PiModel " << _pimodel << "\n"; output << "newdef " << name() << ":KModel " << _kmodel << "\n"; WeakDecayCurrent::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/KaonThreeMesonCurrent.cc�������������������������������������0000644�0001750�0001750�00000143440�11754474774�025203� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // KaonThreeMesonCurrent.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the KaonThreeMesonCurrent class. // #include "KaonThreeMesonCurrent.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" using namespace Herwig; namespace { inline Energy timesGeV (double x) { return x * GeV; } inline Energy2 timesGeV2(double x) { return x * GeV2; } } inline KaonThreeMesonCurrent::KaonThreeMesonCurrent() { // rho parameters // use local values _rhoparameters=true; // rho parameters for axial-vector pieces _rho1wgts.push_back( 1.0 ); _rho1wgts.push_back(-0.145); _rho1wgts.push_back(0.); _rho1mass.push_back(0.773*GeV);_rho1mass.push_back(1.370*GeV); _rho1mass.push_back(1.750*GeV); _rho1width.push_back(0.145*GeV);_rho1width.push_back(0.510*GeV); _rho1width.push_back(0.120*GeV); // rho parameters for vector pieces _rho2wgts.push_back( 1.0 ); _rho2wgts.push_back(-0.25 ); _rho2wgts.push_back(-0.038); _rho2mass.push_back(0.773*GeV);_rho2mass.push_back(1.500*GeV); _rho2mass.push_back(1.750*GeV); _rho2width.push_back(0.145*GeV);_rho2width.push_back(0.220*GeV); _rho2width.push_back(0.120*GeV); // K* parameters _kstarparameters=true; // K* parameters for the axial-vector pieces _kstar1wgts.push_back( 1.0 ); _kstar1wgts.push_back(-0.135); _kstar1wgts.push_back(0.); _kstar1mass.push_back(0.892*GeV);_kstar1mass.push_back(1.412*GeV); _kstar1mass.push_back(1.714*GeV); _kstar1width.push_back(0.050*GeV);_kstar1width.push_back(0.227*GeV); _kstar1width.push_back(0.323*GeV); // K* parameters for vector pieces _kstar2wgts.push_back( 1.0 ); _kstar2wgts.push_back(-0.25 ); _kstar2wgts.push_back(-0.038); _kstar2mass.push_back(0.892*GeV);_kstar2mass.push_back(1.412*GeV); _kstar2mass.push_back(1.714*GeV); _kstar2width.push_back(0.050*GeV);_kstar2width.push_back(0.227*GeV); _kstar2width.push_back(0.323*GeV); // a_1 parameters _a1parameters = true; _initializea1 = false; _a1opt = true; _a1mass = 1.251*GeV; _a1width = 0.475*GeV; double a1q2in[200]={0,15788.6,31577.3,47365.9,63154.6,78943.2,94731.9,110521, 126309,142098,157886,173675,189464,205252,221041,236830, 252618,268407,284196,299984,315773,331562,347350,363139, 378927,394716,410505,426293,442082,457871,473659,489448, 505237,521025,536814,552603,568391,584180,599969,615757, 631546,647334,663123,678912,694700,710489,726278,742066, 757855,773644,789432,805221,821010,836798,852587,868375, 884164,899953,915741,931530,947319,963107,978896,994685, 1.01047e+06,1.02626e+06,1.04205e+06,1.05784e+06,1.07363e+06, 1.08942e+06,1.10521e+06,1.12099e+06,1.13678e+06,1.15257e+06, 1.16836e+06,1.18415e+06,1.19994e+06,1.21573e+06,1.23151e+06, 1.2473e+06,1.26309e+06,1.27888e+06,1.29467e+06,1.31046e+06, 1.32625e+06,1.34203e+06,1.35782e+06,1.37361e+06,1.3894e+06, 1.40519e+06,1.42098e+06,1.43677e+06,1.45256e+06,1.46834e+06 ,1.48413e+06,1.49992e+06,1.51571e+06,1.5315e+06,1.54729e+06, 1.56308e+06,1.57886e+06,1.59465e+06,1.61044e+06,1.62623e+06, 1.64202e+06,1.65781e+06,1.6736e+06,1.68939e+06,1.70517e+06, 1.72096e+06,1.73675e+06,1.75254e+06,1.76833e+06,1.78412e+06, 1.79991e+06,1.81569e+06,1.83148e+06,1.84727e+06,1.86306e+06, 1.87885e+06,1.89464e+06,1.91043e+06,1.92621e+06,1.942e+06, 1.95779e+06,1.97358e+06,1.98937e+06,2.00516e+06,2.02095e+06, 2.03674e+06,2.05252e+06,2.06831e+06,2.0841e+06,2.09989e+06, 2.11568e+06,2.13147e+06,2.14726e+06,2.16304e+06,2.17883e+06, 2.19462e+06,2.21041e+06,2.2262e+06,2.24199e+06,2.25778e+06, 2.27356e+06,2.28935e+06,2.30514e+06,2.32093e+06,2.33672e+06, 2.35251e+06,2.3683e+06,2.38409e+06,2.39987e+06,2.41566e+06, 2.43145e+06,2.44724e+06,2.46303e+06,2.47882e+06,2.49461e+06, 2.51039e+06,2.52618e+06,2.54197e+06,2.55776e+06,2.57355e+06, 2.58934e+06,2.60513e+06,2.62092e+06,2.6367e+06,2.65249e+06, 2.66828e+06,2.68407e+06,2.69986e+06,2.71565e+06,2.73144e+06, 2.74722e+06,2.76301e+06,2.7788e+06,2.79459e+06,2.81038e+06, 2.82617e+06,2.84196e+06,2.85774e+06,2.87353e+06,2.88932e+06, 2.90511e+06,2.9209e+06,2.93669e+06,2.95248e+06,2.96827e+06, 2.98405e+06,2.99984e+06,3.01563e+06,3.03142e+06,3.04721e+06, 3.063e+06,3.07879e+06,3.09457e+06,3.11036e+06,3.12615e+06, 3.14194e+06}; double a1widthin[200]={0,0,0,0,0,0,0,0,0,0,0,0,0.00153933,0.0136382,0.0457614, 0.105567,0.199612,0.333825,0.513831,0.745192,1.0336,1.38501, 1.80581,2.30295,2.88403,3.5575,4.33278,5.22045,6.23243, 7.38223,8.68521,10.1589,11.8234,13.7018,15.8206,18.2107, 20.9078,23.9533,27.3954,31.2905,35.7038,40.7106,46.3984, 52.8654,60.2207,68.581,78.0637,88.7754,100.794,114.145, 128.783,144.574,161.299,178.683,196.426,214.248,231.908, 249.221,266.059,282.336,298.006,313.048,327.46,341.254, 354.448,367.066,379.133,390.677,401.726,412.304,422.439, 432.155,441.474,450.419,459.01,467.267,475.207,482.847, 490.203,497.29,504.121,510.71,517.068,523.207,529.138, 534.869,540.411,545.776,550.961,556.663,560.851,565.566, 570.137,574.569,578.869,583.041,587.091,591.023,594.843, 598.553,602.16,605.664,609.072,612.396,615.626,618.754, 621.796,624.766,627.656,630.47,633.21,635.878,638.5, 641.006,643.471,645.873,648.213,650.493,652.715,654.88, 656.99,659.047,661.052,663.007,664.963,666.771,668.6, 670.351,672.075,673.828,675.397,676.996,678.567,680.083, 681.589,683.023,684.457,685.825,687.18,688.499,689.789, 691.058,692.284,693.501,694.667,695.82,696.947,698.05, 699.129,700.186,701.221,702.234,703.226,704.198,705.158, 706.085,707.001,707.899,708.78,709.644,710.474,711.334, 712.145,712.943,713.727,714.505,715.266,716.015,716.751, 717.474,718.183,718.88,719.645,720.243,720.91,721.565, 722.211,722.851,723.473,724.094,724.697,725.296,725.886, 726.468,727.041,727.608,728.166,728.718,729.262,729.808, 730.337,730.856,731.374,731.883,732.386,732.884,733.373, 733.859,734.339,734.813}; vector<double> tmp1(a1widthin,a1widthin+200); _a1runwidth.clear(); std::transform(tmp1.begin(), tmp1.end(), back_inserter(_a1runwidth), timesGeV); vector<double> tmp2(a1q2in,a1q2in+200); _a1runq2.clear(); std::transform(tmp2.begin(), tmp2.end(), back_inserter(_a1runq2), timesGeV2); // K_1 parameters _k1parameters=true; _k1mass.push_back(1.270*GeV);_k1width.push_back(0.090*GeV); _k1mass.push_back(1.402*GeV);_k1width.push_back(0.174*GeV); _k1wgta.push_back(0.33);_k1wgta.push_back(1.); _k1wgtb.push_back(1.00);_k1wgtb.push_back(0.); // parameters for the T_omega function _omegaopt=true; _epsomega=0.05; _omegamass = 0.782*GeV; _omegawidth = 0.00843*GeV; _phimass = 1.020*GeV; _phiwidth = 0.00443*GeV; _omegaKstarwgt=1./sqrt(2.); // the pion decay constant _fpi=130.7*MeV/sqrt(2.); _mpi=ZERO;_mK=ZERO; _maxmass=ZERO; _maxcalc=ZERO; } void KaonThreeMesonCurrent::persistentOutput(PersistentOStream & os) const { os << _rho1wgts << ounit(_rho1mass,GeV) << ounit(_rho1width,GeV) << _rho2wgts << ounit(_rho2mass,GeV) << ounit(_rho2width,GeV) << _kstar1wgts << ounit(_kstar1mass,GeV) << ounit(_kstar1width,GeV) << _kstar2wgts << ounit(_kstar2mass,GeV) << ounit(_kstar2width,GeV) << ounit(_a1mass,GeV) << ounit(_a1width,GeV) << ounit(_k1mass,GeV) << ounit(_k1width,GeV) << _k1wgta << _k1wgtb << ounit(_a1runwidth,GeV) << ounit(_a1runq2,GeV2) << _epsomega << ounit(_omegamass,GeV) << ounit(_omegawidth,GeV) << ounit(_phimass,GeV) << ounit(_phiwidth,GeV) << _omegaKstarwgt << ounit(_fpi,GeV) << ounit(_mpi,GeV) << ounit(_mK,GeV) << _initializea1 << _rhoparameters << _kstarparameters << _a1parameters << _k1parameters << _a1opt << _omegaopt << ounit(_maxmass,GeV) << ounit(_maxcalc,GeV); } void KaonThreeMesonCurrent::persistentInput(PersistentIStream & is, int) { is >> _rho1wgts >> iunit(_rho1mass,GeV) >> iunit(_rho1width,GeV) >> _rho2wgts >> iunit(_rho2mass,GeV) >> iunit(_rho2width,GeV) >> _kstar1wgts >> iunit(_kstar1mass,GeV) >> iunit(_kstar1width,GeV) >> _kstar2wgts >> iunit(_kstar2mass,GeV) >> iunit(_kstar2width,GeV) >> iunit(_a1mass,GeV) >> iunit(_a1width,GeV) >> iunit(_k1mass,GeV) >> iunit(_k1width,GeV) >> _k1wgta >> _k1wgtb >> iunit(_a1runwidth,GeV) >> iunit(_a1runq2,GeV2) >> _epsomega >> iunit(_omegamass,GeV) >> iunit(_omegawidth,GeV) >> iunit(_phimass,GeV) >> iunit(_phiwidth,GeV) >> _omegaKstarwgt >> iunit(_fpi,GeV) >> iunit(_mpi,GeV) >> iunit(_mK,GeV) >> _initializea1 >> _rhoparameters >> _kstarparameters >> _a1parameters >> _k1parameters >> _a1opt >> _omegaopt >> iunit(_maxmass,GeV) >> iunit(_maxcalc,GeV); } ClassDescription<KaonThreeMesonCurrent> KaonThreeMesonCurrent::initKaonThreeMesonCurrent; // Definition of the static class description member. void KaonThreeMesonCurrent::Init() { static ClassDocumentation<KaonThreeMesonCurrent> documentation ("The KaonThreeMesonCurrent class implements the model of " "Z. Phys. C 69 (1996) 243 [arXiv:hep-ph/9503474]" " for the weak current with three " "mesons, at least one of which is a kaon", "The KaonThreeMesonCurrent class implements the model of " "\\cite{Finkemeier:1995sr} for the weak current with three " "mesons, at least one of which is a kaon.", "\\bibitem{Finkemeier:1995sr}\n" "M.~Finkemeier and E.~Mirkes,\n" "Z.\\ Phys.\\ C {\\bf 69} (1996) 243 [arXiv:hep-ph/9503474].\n" " %%CITATION = ZEPYA,C69,243;%%\n" ); static Switch<KaonThreeMesonCurrent,bool> interfaceInitializea1 ("Initializea1", "Initialise the calculation of the a_1 running width", &KaonThreeMesonCurrent::_initializea1, false, false, false); static SwitchOption interfaceInitializea1Initialization (interfaceInitializea1, "Yes", "Initialize the calculation", true); static SwitchOption interfaceInitializea1NoInitialization (interfaceInitializea1, "No", "Use the default values", false); static Parameter<KaonThreeMesonCurrent,Energy> interfaceA1Width ("A1Width", "The a_1 width if using local values.", &KaonThreeMesonCurrent::_a1width, GeV, 0.599*GeV, ZERO, 10.0*GeV, false, false, false); static Parameter<KaonThreeMesonCurrent,Energy> interfaceA1Mass ("A1Mass", "The a_1 mass if using local values.", &KaonThreeMesonCurrent::_a1mass, GeV, 1.251*GeV, ZERO, 10.0*GeV, false, false, false); static Parameter<KaonThreeMesonCurrent,Energy> interfaceFPi ("FPi", "The pion decay constant", &KaonThreeMesonCurrent::_fpi, MeV, 92.4*MeV, ZERO, 200.0*MeV, false, false, true); static ParVector<KaonThreeMesonCurrent,Energy> interfaceRhoAxialMasses ("RhoAxialMasses", "The masses for the rho resonances if used local values", &KaonThreeMesonCurrent::_rho1mass, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<KaonThreeMesonCurrent,Energy> interfaceRhoAxialWidths ("RhoAxialWidths", "The widths for the rho resonances if used local values", &KaonThreeMesonCurrent::_rho1width, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<KaonThreeMesonCurrent,Energy> interfaceRhoVectorMasses ("RhoVectorMasses", "The masses for the rho resonances if used local values", &KaonThreeMesonCurrent::_rho2mass, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<KaonThreeMesonCurrent,Energy> interfaceRhoVectorWidths ("RhoVectorWidths", "The widths for the rho resonances if used local values", &KaonThreeMesonCurrent::_rho2width, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<KaonThreeMesonCurrent,Energy> interfaceKstarAxialMasses ("KstarAxialMasses", "The masses for the Kstar resonances if used local values", &KaonThreeMesonCurrent::_kstar1mass, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<KaonThreeMesonCurrent,Energy> interfaceKstarAxialWidths ("KstarAxialWidths", "The widths for the Kstar resonances if used local values", &KaonThreeMesonCurrent::_kstar1width, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<KaonThreeMesonCurrent,Energy> interfaceKstarVectorMasses ("KstarVectorMasses", "The masses for the Kstar resonances if used local values", &KaonThreeMesonCurrent::_kstar2mass, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<KaonThreeMesonCurrent,Energy> interfaceKstarVectorWidths ("KstarVectorWidths", "The widths for the Kstar resonances if used local values", &KaonThreeMesonCurrent::_kstar2width, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<KaonThreeMesonCurrent,double> interfaceAxialRhoWeight ("AxialRhoWeight", "The weights of the different rho resonances in the F1,2,3 form factor", &KaonThreeMesonCurrent::_rho1wgts, 0, 0, 0, -1000, 1000, false, false, true); static ParVector<KaonThreeMesonCurrent,double> interfaceAxialKStarWeight ("AxialKStarWeight", "The weights of the different Kstar resonances in the F1,2,3 form factor", &KaonThreeMesonCurrent::_kstar1wgts, 0, 0, 0, -1000, 1000, false, false, true); static ParVector<KaonThreeMesonCurrent,double> interfaceVectorRhoWeight ("VectorRhoWeight", "The weights of the different rho resonances in the F1,2,3 form factor", &KaonThreeMesonCurrent::_rho2wgts, 0, 0, 0, -1000, 1000, false, false, true); static ParVector<KaonThreeMesonCurrent,double> interfaceVectorKStarWeight ("VectorKStarWeight", "The weights of the different Kstar resonances in the F1,2,3 form factor", &KaonThreeMesonCurrent::_kstar2wgts, 0, 0, 0, -1000, 1000, false, false, true); static Switch<KaonThreeMesonCurrent,bool> interfaceRhoParameters ("RhoParameters", "Use local values of the rho meson masses and widths", &KaonThreeMesonCurrent::_rhoparameters, true, false, false); static SwitchOption interfaceRhoParameterstrue (interfaceRhoParameters, "Local", "Use local values of the parameters", true); static SwitchOption interfaceRhoParametersParticleData (interfaceRhoParameters, "ParticleData", "Use the masses and widths from the particle data objects", false); static Switch<KaonThreeMesonCurrent,bool> interfaceKstarParameters ("KstarParameters", "Use local values of the rho meson masses and widths", &KaonThreeMesonCurrent::_kstarparameters, true, false, false); static SwitchOption interfaceKstarParameterstrue (interfaceKstarParameters, "Local", "Use local values of the parameters", true); static SwitchOption interfaceKstarParametersParticleData (interfaceKstarParameters, "ParticleData", "Use the masses and widths from the particle data objects", false); static Switch<KaonThreeMesonCurrent,bool> interfacea1Parameters ("a1Parameters", "Use local values of the rho meson masses and widths", &KaonThreeMesonCurrent::_a1parameters, true, false, false); static SwitchOption interfacea1Parameterstrue (interfacea1Parameters, "Local", "Use local values of the parameters", true); static SwitchOption interfacea1ParametersParticleData (interfacea1Parameters, "ParticleData", "Use the masses and widths from the particle data objects", false); static Switch<KaonThreeMesonCurrent,bool> interfaceK1Parameters ("K1Parameters", "Use local values of the rho meson masses and widths", &KaonThreeMesonCurrent::_k1parameters, true, false, false); static SwitchOption interfaceK1Parameterstrue (interfaceK1Parameters, "Local", "Use local values of the parameters", true); static SwitchOption interfaceK1ParametersParticleData (interfaceK1Parameters, "ParticleData", "Use the masses and widths from the particle data objects", false); static Switch<KaonThreeMesonCurrent,bool> interfacea1WidthOption ("a1WidthOption", "Option for the treatment of the a1 width", &KaonThreeMesonCurrent::_a1opt, true, false, false); static SwitchOption interfacea1WidthOptionLocal (interfacea1WidthOption, "Local", "Use a calculation of the running width based on the parameters as" " interpolation table.", true); static SwitchOption interfacea1WidthOptionParam (interfacea1WidthOption, "Kuhn", "Use the parameterization of Kuhn and Santamaria for default parameters." " This should only be used for testing vs TAUOLA", false); static ParVector<KaonThreeMesonCurrent,Energy> interfacea1RunningWidth ("a1RunningWidth", "The values of the a_1 width for interpolation to giving the running width.", &KaonThreeMesonCurrent::_a1runwidth, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<KaonThreeMesonCurrent,Energy2> interfacea1RunningQ2 ("a1RunningQ2", "The values of the q^2 for interpolation to giving the running width.", &KaonThreeMesonCurrent::_a1runq2, GeV2, -1, 1.0*GeV2, ZERO, 10.0*GeV2, false, false, true); static ParVector<KaonThreeMesonCurrent,Energy> interfaceK1Masses ("K1Masses", "Masses of the K_1 mesons", &KaonThreeMesonCurrent::_k1mass, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static ParVector<KaonThreeMesonCurrent,Energy> interfaceK1Widths ("K1Widths", "Widths of the K_1 mesons", &KaonThreeMesonCurrent::_k1width, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static ParVector<KaonThreeMesonCurrent,double> interfaceK1WeightKStarPi ("K1WeightKStarPi", "The relative weights for the K_1 resonances in the K* pi final-state", &KaonThreeMesonCurrent::_k1wgta, -1, 1.0, 0, 10.0, false, false, Interface::limited); static ParVector<KaonThreeMesonCurrent,double> interfaceK1WeightRhoK ("K1WeightRhoK", "The relative weights for the K_1 resonances in the rho K final-state", &KaonThreeMesonCurrent::_k1wgtb, -1, 1.0, 0, 10.0, false, false, Interface::limited); static Parameter<KaonThreeMesonCurrent,double> interfaceEpsOmega ("EpsOmega", "The omega-phi mixing ", &KaonThreeMesonCurrent::_epsomega, 0.05, 0.0, 1.0, false, false, Interface::limited); static Parameter<KaonThreeMesonCurrent,Energy> interfaceOmegaMass ("OmegaMass", "The mass of the omega meson", &KaonThreeMesonCurrent::_omegamass, GeV, 0.782*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<KaonThreeMesonCurrent,Energy> interfaceOmegaWidth ("OmegaWidth", "The width of the omega meson", &KaonThreeMesonCurrent::_omegawidth, GeV, 0.00843*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<KaonThreeMesonCurrent,Energy> interfacePhiMass ("PhiMass", "The mass of the phi meson", &KaonThreeMesonCurrent::_phimass, GeV, 1.020*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<KaonThreeMesonCurrent,Energy> interfacePhiWidth ("PhiWidth", "The width of the phi meson", &KaonThreeMesonCurrent::_phiwidth, GeV, 0.00443*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static Parameter<KaonThreeMesonCurrent,double> interfaceOmegaKStarWeight ("OmegaKStarWeight", "The relative weight of the omega-phi and K* terms", &KaonThreeMesonCurrent::_omegaKstarwgt, 1./sqrt(2.), 0.0, 100.0, false, false, Interface::limited); static Switch<KaonThreeMesonCurrent,bool> interfaceOmegaParameters ("OmegaParameters", "Use local values of the omega/phi meson masses and widths", &KaonThreeMesonCurrent::_omegaopt, true, false, false); static SwitchOption interfaceOmegaParameterstrue (interfaceOmegaParameters, "Local", "Use local values of the parameters", true); static SwitchOption interfaceOmegaParametersParticleData (interfaceOmegaParameters, "ParticleData", "Use the masses and widths from the particle data objects", false); } void KaonThreeMesonCurrent::inita1Width(int iopt) { if(iopt==-1) { _maxcalc=_maxmass; if(!_initializea1||_maxmass==ZERO) return; // parameters for the table of values Energy2 step(sqr(_maxmass)/199.); // integrator to perform the integral vector<double> inweights;inweights.push_back(0.5);inweights.push_back(0.5); vector<int> intype;intype.push_back(2);intype.push_back(3); Energy mrho(getParticleData(ParticleID::rhoplus)->mass()), wrho(getParticleData(ParticleID::rhoplus)->width()); vector<Energy> inmass(2,mrho),inwidth(2,wrho); vector<double> inpow(2,0.0); ThreeBodyAllOnCalculator<KaonThreeMesonCurrent> widthgen(inweights,intype,inmass,inwidth,inpow,*this,0,_mpi,_mpi,_mpi); // normalisation constant to give physical width if on shell double a1const(_a1width/(widthgen.partialWidth(sqr(_a1mass)))); // loop to give the values _a1runq2.clear();_a1runwidth.clear(); for(Energy2 moff2 = ZERO; moff2<=sqr(_maxmass); moff2+=step) { _a1runwidth.push_back(widthgen.partialWidth(moff2)*a1const); _a1runq2.push_back(moff2); } } // set up the interpolator else if(iopt==0) { _a1runinter = make_InterpolatorPtr(_a1runwidth,_a1runq2,3); } } // modes handled by this class bool KaonThreeMesonCurrent::acceptMode(int imode) const { return imode>=2&&imode<=11&&imode!=8; } // complete the construction of the decay mode for integration bool KaonThreeMesonCurrent::createMode(int icharge, unsigned int imode, DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp) { int iq(0),ia(0); if(!acceptMode(imode)) return false; tPDVector extpart(particles(1,imode,iq,ia)); Energy min(ZERO); for(unsigned int ix=0;ix<extpart.size();++ix) min+=extpart[ix]->massMin(); if(min>upp) return false; // the particles we will use a lot tPDPtr a1,k1[2]; if(icharge==-3) { a1 = getParticleData(ParticleID::a_1minus); k1[0] = getParticleData(ParticleID::K_1minus); k1[1] = getParticleData(ParticleID::Kstar_1minus); } else if(icharge==3) { a1 = getParticleData(ParticleID::a_1plus); k1[0] = getParticleData(ParticleID::K_1plus); k1[1] = getParticleData(ParticleID::Kstar_1plus); } else { return false; } _maxmass=max(_maxmass,upp); // the rho0 resonances tPDPtr rho0[3] ={getParticleData( 113),getParticleData( 100113), getParticleData( 30113)}; // the charged rho resonances tPDPtr rhoc[3] ={getParticleData(-213),getParticleData(-100213), getParticleData(-30213)}; // the K*0 resonances tPDPtr Kstar0[3]={getParticleData( 313),getParticleData( 100313), getParticleData( 30313)}; // the charged K* resonances tPDPtr Kstarc[3]={getParticleData(-323),getParticleData(-100323), getParticleData(-30323)}; if(icharge==3) { for(unsigned int ix=0;ix<3;++ix) { if(rhoc[ix]) rhoc[ix]=rhoc[ix]->CC(); if(Kstar0[ix]) Kstar0[ix]=Kstar0[ix]->CC(); if(Kstarc[ix]) Kstarc[ix]=Kstarc[ix]->CC(); } } DecayPhaseSpaceChannelPtr newchannel; if(imode==2) { // channels for K- pi- K+ for(unsigned int ix=0;ix<3;++ix) { if(Kstar0[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstar0[ix],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } if(rho0[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rho0[ix],0,0.0,iloc,iloc+2); mode->addChannel(newchannel); } for(unsigned int iy=0;iy<3;++iy) { if(!rhoc[ix]) continue; if(Kstar0[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhoc[ix] ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstar0[iy],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } } } } else if(imode==3) { // channels for K0 pi- K0bar for(unsigned int ix=0;ix<3;++ix) { if(Kstarc[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstarc[ix],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } if(rho0[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rho0[ix],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } for(unsigned int iy=0;iy<3;++iy) { if(!rhoc[ix]) continue; if(Kstarc[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhoc[ix] ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstarc[iy],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } } } } else if(imode==4) { // channels for K- pi0 K0 for(unsigned int ix=0;ix<3;++ix) { if(Kstar0[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstar0[ix],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } if(Kstarc[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc+2); newchannel->addIntermediate(Kstarc[ix],0,0.0, iloc ,iloc+1); mode->addChannel(newchannel); } if(rhoc[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rhoc[ix],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } for(unsigned int iy=0;iy<3;++iy) { if(!rhoc[ix]) continue; if(Kstar0[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhoc[ix] ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstar0[iy],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } if(Kstarc[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhoc[ix] ,0,0.0,-ires-1,iloc+2); newchannel->addIntermediate(Kstarc[iy],0,0.0, iloc ,iloc+1); mode->addChannel(newchannel); } } } } else if(imode==5) { // channels for pi0 pi0 K- for(unsigned int ix=0;ix<3;++ix) { if(!Kstarc[ix]) continue; for(unsigned int ik=0;ik<2;++ik) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(k1[ik] ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstarc[ix],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(k1[ik] ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(Kstarc[ix],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } for(unsigned int iy=0;iy<3;++iy) { if(!Kstarc[iy]) continue; newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(Kstarc[ix],0,0.0,-ires-1,iloc ); newchannel->addIntermediate(Kstarc[iy],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(Kstarc[ix],0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(Kstarc[iy],0,0.0, iloc ,iloc+2); mode->addChannel(newchannel); } } } else if(imode==6) { // channels for K- pi- pi+ for(unsigned int ix=0;ix<3;++ix) { for(unsigned int ik=0;ik<2;++ik) { if(rho0[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(k1[ik] ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(rho0[ix],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } if(Kstar0[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(k1[ik] ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(Kstar0[ix],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } } for(unsigned int iy=0;iy<3;++iy) { if(!Kstarc[ix]) continue; if(rho0[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(Kstarc[ix],0,0.0,-ires-1,iloc); newchannel->addIntermediate(rho0[iy] ,0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } if(Kstar0[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(Kstarc[ix],0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(Kstar0[iy],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } } } } else if(imode==7) { // channels for pi- kbar0 pi0 for(unsigned int ix=0;ix<3;++ix) { for(unsigned int ik=0;ik<2;++ik) { if(rhoc[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(k1[ik] ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rhoc[ix],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } if(Kstar0[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(k1[ik] ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstar0[ix],0,0.0,iloc+1,iloc+2); mode->addChannel(newchannel); } if(Kstarc[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(k1[ik] ,0,0.0,-ires-1,iloc+2); newchannel->addIntermediate(Kstarc[ix],0,0.0, iloc,iloc+1); mode->addChannel(newchannel); } } for(unsigned int iy=0;iy<3;++iy) { if(!Kstarc[ix]) continue; if(Kstar0[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(Kstarc[ix],0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstar0[iy],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } if(rhoc[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(Kstarc[ix],0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rhoc[iy] ,0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } if(Kstarc[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(Kstarc[ix],0,0.0,-ires-1,iloc+2); newchannel->addIntermediate(Kstarc[iy],0,0.0, iloc ,iloc+1); mode->addChannel(newchannel); } } } } else if(imode==9||imode==10) { // channels for K_S0 pi- K_S0 and K_L0 pi- K_L0 for(unsigned int ix=0;ix<3;++ix) { if(Kstarc[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstarc[ix],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc+2); newchannel->addIntermediate(Kstarc[ix],0,0.0, iloc ,iloc+1); mode->addChannel(newchannel); } for(unsigned int iy=0;iy<3;++iy) { if(!rhoc[ix]) continue; if(Kstarc[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhoc[ix] ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstarc[iy],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhoc[ix] ,0,0.0,-ires-1,iloc+2); newchannel->addIntermediate(Kstarc[iy],0,0.0, iloc ,iloc+1); mode->addChannel(newchannel); } } } } else if(imode==11) { // channels for K_S0 pi- K_L0 for(unsigned int ix=0;ix<3;++ix) { if(Kstarc[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstarc[ix],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc+2); newchannel->addIntermediate(Kstarc[ix],0,0.0, iloc ,iloc+1); mode->addChannel(newchannel); } if(rho0[ix]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1 ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(rho0[ix],0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } for(unsigned int iy=0;iy<3;++iy) { if(!rhoc[ix]) continue; if(Kstarc[iy]) { newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhoc[ix] ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(Kstarc[iy],0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); newchannel= new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhoc[ix] ,0,0.0,-ires-1,iloc+2); newchannel->addIntermediate(Kstarc[iy],0,0.0, iloc ,iloc+1); mode->addChannel(newchannel); } } } } if(_rhoparameters) { for(unsigned int ix=0;ix<_rho1mass.size();++ix) { if(rhoc[ix]) mode->resetIntermediate(rhoc[ix],_rho1mass[ix], _rho1width[ix]); if(rho0[ix]) mode->resetIntermediate(rho0[ix],_rho1mass[ix], _rho1width[ix]); } } // K star parameters in the base class if(_kstarparameters) { for(unsigned int ix=0;ix<_kstar1mass.size();++ix) { if(Kstarc[ix]) mode->resetIntermediate(Kstarc[ix],_kstar1mass[ix], _kstar1width[ix]); if(Kstar0[ix]) mode->resetIntermediate(Kstar0[ix],_kstar1mass[ix], _kstar1width[ix]); } } return true; } void KaonThreeMesonCurrent::dataBaseOutput(ofstream & os, bool header,bool create) const { if(header) os << "update decayers set parameters=\""; if(create) os << "create Herwig::KaonThreeMesonCurrent " << name() << " HwWeakCurrents.so\n"; for(unsigned int ix=0;ix<_rho1wgts.size();++ix) { if(ix<3) { os << "newdef " << name() << ":AxialRhoWeight " << ix << " " << _rho1wgts[ix] << "\n"; } else { os << "insert " << name() << ":AxialRhoWeight " << ix << " " << _rho1wgts[ix] << "\n"; } } for(unsigned int ix=0;ix<_kstar1wgts.size();++ix) { if(ix<3) { os << "newdef " << name() << ":AxialKStarWeight " << ix << " " << _kstar1wgts[ix] << "\n";} else { os << "insert " << name() << ":AxialKStarWeight " << ix << " " << _kstar1wgts[ix] << "\n"; } } for(unsigned int ix=0;ix<_rho2wgts.size();++ix) { if(ix<3) { os << "newdef " << name() << ":VectorRhoWeight " << ix << " " << _rho2wgts[ix] << "\n"; } else { os << "insert " << name() << ":VectorRhoWeight " << ix << " " << _rho2wgts[ix] << "\n"; } } for(unsigned int ix=0;ix<_kstar2wgts.size();++ix) { if(ix<3) { os << "newdef " << name() << ":VectorKStarWeight " << ix << " " << _kstar2wgts[ix] << "\n";} else { os << "insert " << name() << ":VectorKStarWeight " << ix << " " << _kstar2wgts[ix] << "\n"; } } os << "newdef " << name() << ":OmegaKStarWeight " << _omegaKstarwgt << "\n"; os << "newdef " << name() << ":EpsOmega " << _epsomega << "\n"; os << "newdef " << name() << ":Initializea1 " << _initializea1 << "\n"; os << "newdef " << name() << ":RhoParameters " << _rhoparameters << "\n"; os << "newdef " << name() << ":KstarParameters " << _kstarparameters << "\n"; os << "newdef " << name() << ":a1Parameters " << _a1parameters << "\n"; os << "newdef " << name() << ":K1Parameters " << _k1parameters << "\n"; os << "newdef " << name() << ":OmegaParameters " << _omegaopt << "\n"; os << "newdef " << name() << ":a1WidthOption " << _a1opt << "\n"; for(unsigned int ix=0;ix<_a1runwidth.size();++ix) { os << "newdef " << name() << ":a1RunningWidth " << ix << " " << _a1runwidth[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_a1runq2.size();++ix) { os << "newdef " << name() << ":a1RunningQ2 " << ix << " " << _a1runq2[ix]/GeV2 << "\n"; } os << "newdef " << name() << ":A1Width " << _a1width/GeV << "\n"; os << "newdef " << name() << ":A1Mass " << _a1mass/GeV << "\n"; os << "newdef " << name() << ":OmegaWidth " << _omegawidth/GeV << "\n"; os << "newdef " << name() << ":OmegaMass " << _omegamass/GeV << "\n"; os << "newdef " << name() << ":PhiWidth " << _phiwidth/GeV << "\n"; os << "newdef " << name() << ":PhiMass " << _phimass/GeV << "\n"; os << "newdef " << name() << ":FPi " << _fpi/MeV << "\n"; for(unsigned int ix=0;ix<_k1mass.size();++ix) { if(ix<2) { os << "newdef " << name() << ":K1Masses " << ix << " " << _k1mass[ix]/GeV << "\n"; } else { os << "insert " << name() << ":K1Masses " << ix << " " << _k1mass[ix]/GeV << "\n"; } } for(unsigned int ix=0;ix<_k1width.size();++ix) { if(ix<2) { os << "newdef " << name() << ":K1Widths " << ix << " " << _k1width[ix]/GeV << "\n"; } else { os << "insert " << name() << ":K1Widths " << ix << " " << _k1width[ix]/GeV << "\n"; } } for(unsigned int ix=0;ix<_rho1mass.size();++ix) { if(ix<3) os << "newdef " << name() << ":RhoAxialMasses " << ix << " " << _rho1mass[ix]/GeV << "\n"; else os << "insert " << name() << ": RhoAxialMasses" << ix << " " << _rho1mass[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_rho1width.size();++ix) { if(ix<3) os << "newdef " << name() << ":RhoAxialWidths " << ix << " " << _rho1width[ix]/GeV << "\n"; else os << "insert " << name() << ":RhoAxialWidths " << ix << " " << _rho1width[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_rho2mass.size();++ix) { if(ix<3) os << "newdef " << name() << ":RhoVectorMasses " << ix << " " << _rho2mass[ix]/GeV << "\n"; else os << "insert " << name() << ": RhoVectorMasses" << ix << " " << _rho2mass[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_rho2width.size();++ix) { if(ix<3) os << "newdef " << name() << ":RhoVectorWidths " << ix << " " << _rho2width[ix]/GeV << "\n"; else os << "insert " << name() << ":RhoVectorWidths " << ix << " " << _rho2width[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_kstar1mass.size();++ix) { if(ix<3) os << "newdef " << name() << ":KstarAxialMasses " << ix << " " << _kstar1mass[ix]/GeV << "\n"; else os << "insert " << name() << ": KstarAxialMasses" << ix << " " << _kstar1mass[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_kstar1width.size();++ix) { if(ix<3) os << "newdef " << name() << ":KstarAxialWidths " << ix << " " << _kstar1width[ix]/GeV << "\n"; else os << "insert " << name() << ":KstarAxialWidths " << ix << " " << _kstar1width[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_kstar2mass.size();++ix) { if(ix<3) os << "newdef " << name() << ":KstarVectorMasses " << ix << " " << _kstar2mass[ix]/GeV << "\n"; else os << "insert " << name() << ": KstarVectorMasses" << ix << " " << _kstar2mass[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_kstar2width.size();++ix) { if(ix<3) os << "newdef " << name() << ":KstarVectorWidths " << ix << " " << _kstar2width[ix]/GeV << "\n"; else os << "insert " << name() << ":KstarVectorWidths " << ix << " " << _kstar2width[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_k1wgta.size();++ix) { if(ix<2) os << "newdef " << name() << ":K1WeightKStarPi " << ix << " " << _k1wgta[ix] << "\n"; else os << "insert " << name() << ":K1WeightKStarPi " << ix << " " << _k1wgta[ix] << "\n"; } for(unsigned int ix=0;ix<_k1wgtb.size();++ix) { if(ix<2) os << "newdef " << name() << ":K1WeightRhoK " << ix << " " << _k1wgtb[ix] << "\n"; else os << "insert " << name() << ":K1WeightRhoK " << ix << " " << _k1wgtb[ix] << "\n"; } ThreeMesonCurrentBase::dataBaseOutput(os,false,false); if(header) os << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } void KaonThreeMesonCurrent::doinit() { ThreeMesonCurrentBase::doinit(); // the particles we will use a lot tPDPtr a1(getParticleData(ParticleID::a_1minus)), pi0(getParticleData(ParticleID::pi0)), piplus(getParticleData(ParticleID::piplus)), piminus(getParticleData(ParticleID::piminus)); tPDPtr k1[2]={getParticleData(ParticleID::K_1minus), getParticleData(ParticleID::Kstar_1minus)}; // masses for the running widths _mpi=piplus->mass(); _mK=getParticleData(ParticleID::K0)->mass(); // the charged rho resonances tPDPtr rhoc[3]={getParticleData(-213),getParticleData(-100213), getParticleData(-30213)}; // the charged K* resonances tPDPtr Kstarc[3]={getParticleData(-323),getParticleData(-100323), getParticleData(-30323)}; if(!_a1parameters) { _a1mass=a1->mass(); _a1width=a1->width(); } // mass and width of the k_1 if(!_k1parameters) { for(unsigned int ix=0;ix<2;++ix) { _k1mass[ix] = k1[ix]->mass(); _k1width[ix] = k1[ix]->width(); } } // initialise the a_1 running width calculation inita1Width(-1); // rho parameters in the base classs tcPDPtr temp; unsigned int ix; if(_rhoparameters&&_rho1mass.size()<3) { ix = _rho1mass.size(); _rho1mass.resize(3); _rho1width.resize(3); for(;ix<3;++ix) { if(rhoc[ix]) { _rho1mass [ix]=rhoc[ix]->mass(); _rho1width[ix]=rhoc[ix]->width(); } } } else if(!_rhoparameters) { _rho1mass.resize(3);_rho1width.resize(3); for(ix=0;ix<3;++ix) { if(rhoc[ix]) { _rho1mass[ix]=rhoc[ix]->mass(); _rho1width[ix]=rhoc[ix]->width(); } } } // K star parameters in the base class if(_kstarparameters&&_kstar1mass.size()<3) { ix = _kstar1mass.size(); _kstar1mass.resize(3);_kstar1width.resize(3); for(;ix<3;++ix) { if(Kstarc[ix]) { _kstar1mass[ix]=Kstarc[ix]->mass(); _kstar1width[ix]=Kstarc[ix]->width(); } } } else if(!_kstarparameters) { _kstar1mass.resize(3);_kstar1width.resize(3); for(ix=0;ix<3;++ix) { if(Kstarc[ix]) { _kstar1mass[ix]=Kstarc[ix]->mass(); _kstar1width[ix]=Kstarc[ix]->width(); } } } // rho parameters here if(_rhoparameters&&_rho2mass.size()<3) { ix = _rho2mass.size(); _rho2mass.resize(3);_rho2width.resize(3); for(;ix<3;++ix) { if(rhoc[ix]) { _rho2mass[ix]=rhoc[ix]->mass(); _rho2width[ix]=rhoc[ix]->width(); } } } else if(!_rhoparameters) { _rho2mass.resize(3);_rho2width.resize(3); for(ix=0;ix<3;++ix) { if(rhoc[ix]) { _rho2mass[ix]=rhoc[ix]->mass(); _rho2width[ix]=rhoc[ix]->width(); } } } // Kstar parameters here if(_kstarparameters&&_kstar2width.size()<3) { ix = _kstar2mass.size(); _kstar2mass.resize(3);_kstar2width.resize(3); for(;ix<3;++ix) { if(Kstarc[ix]) { _kstar2mass[ix]=Kstarc[ix]->mass(); _kstar2width[ix]=Kstarc[ix]->width(); } } } else if(!_kstarparameters) { _kstar2mass.resize(3);_kstar2width.resize(3); for(ix=0;ix<3;++ix) { if(Kstarc[ix]) { _kstar2mass[ix]=Kstarc[ix]->mass(); _kstar2width[ix]=Kstarc[ix]->width(); } } } inita1Width(0); } KaonThreeMesonCurrent::FormFactors KaonThreeMesonCurrent::calculateFormFactors(const int ichan,const int imode, Energy2 q2,Energy2 s1, Energy2 s2,Energy2 s3) const { useMe(); Complex F1, F2, F5; // calculate the K- pi - K+ factor if(imode==2) { Complex a1fact(a1BreitWigner(q2)*sqrt(2.)/3.); if(ichan<0) { F1 = -a1fact*TKstar1(s1,-1); F2 = a1fact*Trho1(s2,-1); F5 = Trho2(q2,-1)*TOmegaKStar(s1,s2,-1)*sqrt(2.); } else if(ichan%5==0) F1 = -a1fact*TKstar1(s1, ichan/5); else if(ichan%5==1) F2 = a1fact*Trho1( s2,(ichan-1)/5); else if(ichan%5>=2) F5 = Trho2(q2,ichan/5)*TOmegaKStar(s1,s2,2*((ichan-2)%5)) *sqrt(2.); } // calculate the K0 pi- K0bar else if(imode==3) { Complex a1fact(a1BreitWigner(q2)*sqrt(2.)/3.); if(ichan<0) { F1 =-a1fact*TKstar1(s1,-1); F2 = a1fact*Trho1 (s2,-1); F5 =-Trho2(q2,-1)*TOmegaKStar(s1,s2,-1)*sqrt(2.); } else if(ichan%5==0) F1 = -a1fact*TKstar1(s1, ichan/5); else if(ichan%5==1) F2 = a1fact*Trho1 (s2,(ichan-1)/5); else if(ichan%5>=2) F5 = -Trho2(q2,ichan/5)*TOmegaKStar(s1,s2,2*((ichan-2)%5)) *sqrt(2.); } // calculate the K- pi0 k0 else if(imode==4) { Complex a1fact(a1BreitWigner(q2)/3.); if(ichan<0) { F1 = a1fact*( TKstar1(s1,-1)-TKstar1(s3,-1)); F2 = -a1fact*(2.*Trho1(s2,-1)+TKstar1(s3,-1)); F5 = Trho2(q2,-1)*(TKstar1(s3,-1)-TKstar1(s1,-1))/(1.+_omegaKstarwgt)/sqrt(2.); } else if(ichan%9==0) F1 = a1fact*TKstar1(s1,ichan/9)/3.; else if(ichan%9==1) { F1 = +a1fact*TKstar1(s3,(ichan-1)/9)/3.; F2 = -a1fact*TKstar1(s3,(ichan-1)/9)/3.; } else if(ichan%9==2) F2 = -a1fact*2.*Trho1(s2,(ichan-2)/9)/3.; else if(ichan%9<6) F5 =-Trho2(q2,ichan/9)*TKstar1(s1,(ichan-3)%9) /(1.+_omegaKstarwgt)/sqrt(2.); else F5 = Trho2(q2,ichan/9)*TKstar1(s3,(ichan-6)%9) /(1.+_omegaKstarwgt)/sqrt(2.); } // calculate the pi0 pi0 K- else if(imode==5) { if(ichan<0) { Complex K1fact(TK1(q2,0,-1)/6.); F1 = K1fact*TKstar1(s1,-1); F2 =-K1fact*TKstar1(s2,-1); F5 =-0.25*TKstar2(q2,-1)*(TKstar1(s1,-1)-TKstar1(s2,-1)); } else if(ichan%10==0) F1= TK1(q2,0,0)/6.*TKstar1(s1,ichan/10); else if(ichan%10==1) F2= -TK1(q2,0,0)/6.*TKstar1(s2,ichan/10); else if(ichan%10==2) F1= TK1(q2,0,1)/6.*TKstar1(s1,ichan/10); else if(ichan%10==3) F2= -TK1(q2,0,1)/6.*TKstar1(s2,ichan/10); else if(ichan%10<7 ) F5 =-sqrt(2.)/4*TKstar2(q2,ichan/10)*TKstar1(s1,(ichan-4)%10); else F5 = sqrt(2.)/4*TKstar2(q2,ichan/10)*TKstar1(s2,(ichan-7)%10); } // calculate the K- pi- pi+ else if(imode==6) { double fact=sqrt(2.)/3.; if(ichan<0) { F1 = -fact*TK1(q2,1,-1)*Trho1(s1,-1); F2 = fact*TK1(q2,0,-1)*TKstar1(s2,-1); F5 = -sqrt(0.5)*TKstar2(q2,-1)*(Trho1(s1,-1)+TKstar1(s2,-1)); } else if(ichan%10==0) F1 = -fact*TK1(q2,1,0)*Trho1 (s1,ichan/10); else if(ichan%10==1) F2 = fact*TK1(q2,0,0)*TKstar1(s2,ichan/10); else if(ichan%10==2) F1 = -fact*TK1(q2,1,1)*Trho1( s1,ichan/10); else if(ichan%10==3) F2 = fact*TK1(q2,0,1)*TKstar1(s2,ichan/10); else if(ichan%10<7) F5 = -sqrt(0.5)*TKstar2(q2,ichan/10)*Trho1( s1,(ichan-4)%10); else F5 = -sqrt(0.5)*TKstar2(q2,ichan/10)*TKstar1(s2,(ichan-7)%10); } // calculate the pi- K0bar pi0 else if(imode==7) { if(ichan<0) { Complex K1facta(TK1(q2,0,-1)),K1factb(TK1(q2,1,-1)); F1 = K1facta*(TKstar1(s1,-1)-TKstar1(s3,-1))/3.; F2 =-(2.*K1factb*Trho1(s2,-1)+K1facta*TKstar1(s3,-1))/3.; F5 = -0.5*TKstar2(q2,-1)*(2.*Trho1(s2,-1)+TKstar1(s1,-1)+TKstar1(s3,-1)); } else if(ichan%15==0) F2 =-2.*TK1(q2,0,0)*Trho1 (s2,ichan/15)/3.; else if(ichan%15==1) F1 = TK1(q2,1,0)*TKstar1(s1,ichan/15)/3.; else if(ichan%15==2) { F1 =-TK1(q2,1,0)*TKstar1(s3,ichan/15)/3.; F2 =-TK1(q2,1,0)*TKstar1(s3,ichan/15)/3.; } else if(ichan%15==3) F2 =-2.*TK1(q2,0,1)*Trho1 (s2,ichan/15)/3.; else if(ichan%15==4) F1 = TK1(q2,1,1)*TKstar1(s1,ichan/15)/3.; else if(ichan%15==5) { F1 =-TK1(q2,1,1)*TKstar1(s3,ichan/15)/3.; F2 =-TK1(q2,1,1)*TKstar1(s3,ichan/15)/3.; } else if(ichan%15<9 ) F5 = -0.5*TKstar2(q2,ichan/15)*TKstar1(s1,(ichan- 6)%15); else if(ichan%15<12) F5 = - TKstar2(q2,ichan/15)*Trho1 (s2,(ichan- 9)%15); else F5 = -0.5*TKstar2(q2,ichan/15)*TKstar1(s3,(ichan-12)%15); } // calculate the K_S0 pi- K_S0 or K_L0 pi- K_L0 else if(imode==9||imode==10) { Complex a1fact(a1BreitWigner(q2)/6.); if(ichan<0) { F1 = a1fact*(TKstar1(s1,-1)+TKstar1(s3,-1)); F2 = a1fact*TKstar1(s3,-1); F5 = 0.5*Trho2(q2,-1)*(TOmegaKStar(s1,s2,-1)-TOmegaKStar(s3,s2,-1)); } else if(ichan%8==0) F1=a1fact*TKstar1(s1,ichan/8); else if(ichan%8==1) { F1 = a1fact*TKstar1(s3,ichan/8); F2 = a1fact*TKstar1(s3,ichan/8); } else if(ichan%8<5 ) F5 = -Trho2(q2,ichan/8)*TKstar1(s1,(ichan-2)%8) /(1.+_omegaKstarwgt)/2.; else F5 = Trho2(q2,ichan/8)*TKstar1(s3,(ichan-5)%8) /(1.+_omegaKstarwgt)/2.; } else if(imode==11) { Complex a1fact(a1BreitWigner(q2)/3./sqrt(2.)); if(ichan<0) { F1 = -a1fact*(TKstar1(s1,-1)-TKstar1(s3,-1)); F2 = a1fact*(2.*Trho1(s2,-1)+TKstar1(s3,-1)); F5 = -Trho2(q2,-1)*(TOmegaKStar(s1,s2,-1)+TOmegaKStar(s3,s2,-1))/sqrt(2.); } else if(ichan%9==0) F1 =- a1fact*TKstar1(s1,ichan/9); else if(ichan%9==1) { F1 = a1fact*TKstar1(s3,ichan/9); F2 = a1fact*TKstar1(s3,ichan/9); } else if(ichan%9==2) F2 = 2.*a1fact*Trho1( s2,ichan/9); else if(ichan%9<6 ) F5 = -sqrt(0.5)*TKstar2(q2,ichan/9)* TOmegaKStar(s1,s2,2*((ichan-3)%9))/sqrt(2.); else F5 = -sqrt(0.5)*TKstar2(q2,ichan/9)* TOmegaKStar(s3,s2,2*((ichan-6)%9))/sqrt(2.); } return FormFactors(F1 / _fpi, F2 / _fpi, InvEnergy(), InvEnergy(), -F5 / sqr(Constants::twopi) / pow<3,1>(_fpi)); } void KaonThreeMesonCurrent::doinitrun() { // set up the running a_1 width inita1Width(0); ThreeMesonCurrentBase::doinitrun(); } void KaonThreeMesonCurrent::doupdate() { ThreeMesonCurrentBase::doupdate(); // update running width if needed if ( !touched() ) return; if(_maxmass!=_maxcalc) inita1Width(-1); } double KaonThreeMesonCurrent:: threeBodyMatrixElement(const int , const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy , const Energy , const Energy ) const { Energy2 mpi2(sqr(_mpi)); Complex propb(Trho1(s1,-1)),propa(Trho1(s2,-1)); // the matrix element Energy2 output(ZERO); // first resonance output+= ((s1-4.*mpi2)+0.25*(s3-s2)*(s3-s2)/q2)*real(propb*conj(propb)); // second resonance output+= ((s2-4.*mpi2)+0.25*(s3-s1)*(s3-s1)/q2)*real(propa*conj(propa)); // the interference term output+= (0.5*q2-s3-0.5*mpi2+0.25*(s3-s2)*(s3-s1)/q2)*real(propa*conj(propb)+ propb*conj(propa)); return output / sqr(_rho1mass[0]); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/FourPionNovosibirskCurrent.cc��������������������������������0000644�0001750�0001750�00000133105�11754474774�026310� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FourPionNovosibirskCurrent.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FourPionNovosibirskCurrent class. // #include "FourPionNovosibirskCurrent.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/ScalarSpinInfo.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include <functional> using namespace Herwig; using namespace ThePEG; using namespace ThePEG::Helicity; namespace { inline Energy timesGeV (double x) { return x * GeV; } inline Energy2 timesGeV2(double x) { return x * GeV2; } } void FourPionNovosibirskCurrent::doupdate() { WeakDecayCurrent::doupdate(); // update running width if needed if ( !touched() ) return; if(_maxmass!=_maxcalc) inita1width(-1); } FourPionNovosibirskCurrent::FourPionNovosibirskCurrent() : _mpic(), _mpi0(), _mpic2(), _mpi02(), _prho() { // set the number of modes addDecayMode(2,-1); addDecayMode(2,-1); setInitialModes(2); // masses of the particles used in the current _rhomass = 0.7761*GeV; _a1mass = 1.2300*GeV; _omegamass = 0.7820*GeV; _sigmamass = 0.8000*GeV; // widths of the particles used in the current _rhowidth = 0.14450*GeV; _a1width = 0.45000*GeV; _omegawidth = 0.00841*GeV; _sigmawidth = 0.80000*GeV; // parameters for the resonance used in the integration _intmass = 1.4*GeV; _intwidth = 0.5*GeV; // relative coupling of the sigma and rho in the a_1 decay _zmag = 1.3998721; _zphase = 0.43585036; _zsigma=0.; // parameter for f_a1 _lambda2 = 1.2*GeV2; _onedlam2 = 1./_lambda2; _a1massolam2 = _a1mass*_a1mass*_onedlam2; _hm2=ZERO; _rhoD=ZERO; _dhdq2m2=0.; // use local values of the parameters _localparameters=true; // magic numbers from TAUOLA (N.B. conversion from GeV to MeV) _athreec = 76.565/GeV; _bthreec = 0.71709; _cthreec = 0.27505; _aomega = 886.84/GeV; _bomega = 0.70983; _comega = 0.26689; _aonec = 96.867/GeV; _bonec = 0.70907; _conec = 0.26413; //parameters for the running omega width _omegaparam.resize(10); _omegaparam[0] = 17.560; _omegaparam[1] = 141.110; _omegaparam[2] = 894.884; _omegaparam[3] = 4977.35; _omegaparam[4] = 7610.66; _omegaparam[5] =-42524.4; _omegaparam[6] =-1333.26; _omegaparam[7] = 4860.19; _omegaparam[8] =-6000.81; _omegaparam[9] = 2504.97; // values of the g omega function from hep-ph/0201149 double Fomegainit[98]={ 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 2.2867811, 2.9710648, 2.9344304, 2.6913538, 2.5471206, 2.3557470, 2.2448280, 2.1074708, 2.0504866, 1.9270257, 1.8669430, 1.7907301, 1.7184515, 1.6535717, 1.6039416, 1.5535343, 1.5065620, 1.4608675, 1.4215596, 1.3849826, 1.3480113, 1.3147917, 1.2793381, 1.2487282, 1.2184237, 1.1952927, 1.1683835, 1.1458827, 1.1145806, 1.0935820, 1.0608720, 1.0390474, 1.0164336, 0.9908721, 0.9585276, 0.9307971, 0.9017274, 0.8731154, 0.8452763, 0.8145532, 0.7817339, 0.7493086, 0.7199919, 0.6887290, 0.6568120, 0.6255773, 0.5944664, 0.5661956, 0.5391204, 0.5102391, 0.4786543, 0.4546428, 0.4316779, 0.4063754, 0.3769831, 0.3561141, 0.3333555, 0.3139160, 0.2949214, 0.2814728, 0.2602444, 0.2349602, 0.2269845, 0.2192318, 0.2286938, 0.2839763, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000}; // values of the three charged pion G function from hep-ph/0201149 double Fthreeinit[98]={ 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 13.1664906,10.7234087, 8.8219614,10.7989664, 9.1883001, 7.8526378, 7.7481031, 8.2633696, 5.5042820, 4.9029269, 4.4794345, 3.9654009, 4.5254011, 3.6509495, 3.5005512, 3.2274280, 3.1808922, 2.9925177, 2.6886659, 2.5195024, 2.4678771, 2.3540580, 2.2123868, 2.1103525, 2.0106986, 1.8792295, 1.8250662, 1.7068460, 1.6442842, 1.5503920, 1.4814349, 1.4225838, 1.3627135, 1.3205355, 1.2784383, 1.2387408, 1.1975995, 1.1633024, 1.1318133, 1.1114354, 1.0951439, 1.0691465, 1.0602311, 1.0392803, 1.0220672, 1.0154786, 1.0010130, 0.9908018, 0.9710845, 0.9602382, 0.9488459, 0.9316537, 0.9118049, 0.8920435, 0.8719332, 0.8520256, 0.8280582, 0.8064085, 0.7767881, 0.7570597, 0.7382626, 0.7100251, 0.6846500, 0.6666913, 0.6372250, 0.6162248, 0.6007728, 0.5799103, 0.5674670, 0.5446148, 0.5352115, 0.5128809, 0.4932536, 0.5310397, 0.8566489, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000}; double Foneinit[98]={ 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 1.4819183, 1.7086354, 1.6958492, 1.6172935, 1.6301320, 1.5719706, 1.5459771, 1.5377471, 1.5008864, 1.4924121, 1.4720882, 1.4371741, 1.3990080, 1.3879193, 1.4030601, 1.3768673, 1.3493533, 1.3547127, 1.3275831, 1.3167892, 1.3035913, 1.2968298, 1.2801558, 1.2650299, 1.2557997, 1.2325822, 1.2210644, 1.1935984, 1.1746194, 1.1510350, 1.1358515, 1.1205584, 1.1010553, 1.0903869, 1.0731295, 1.0578678, 1.0438409, 1.0377911, 1.0253277, 1.0103551, 1.0042409, 0.9937978, 0.9858117, 0.9770346, 0.9724492, 0.9656686, 0.9606671, 0.9525813, 0.9488522, 0.9417335, 0.9399430, 0.9323438, 0.9281269, 0.9244171, 0.9237418, 0.9174354, 0.9177181, 0.9120840, 0.9047825, 0.9065579, 0.9034142, 0.8992961, 0.9011586, 0.9036470, 0.8954964, 0.8898208, 0.8911991, 0.8854824, 0.8888282, 0.8868449, 0.9004632, 0.8981572, 0.9096183, 0.9046990, 1.7454215, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000}; // eninit in GeV double eninit[98]={ 0.6000000, 0.6131313, 0.6262626, 0.6393939, 0.6525252, 0.6656566, 0.6787879, 0.6919192, 0.7050505, 0.7181818, 0.7313131, 0.7444444, 0.7575758, 0.7707071, 0.7838384, 0.7969697, 0.8101010, 0.8232324, 0.8363636, 0.8494949, 0.8626263, 0.8757576, 0.8888889, 0.9020202, 0.9151515, 0.9282829, 0.9414141, 0.9545454, 0.9676768, 0.9808081, 0.9939394, 1.0070707, 1.0202020, 1.0333333, 1.0464647, 1.0595959, 1.0727273, 1.0858586, 1.0989898, 1.1121212, 1.1252525, 1.1383839, 1.1515151, 1.1646465, 1.1777778, 1.1909091, 1.2040404, 1.2171717, 1.2303030, 1.2434343, 1.2565657, 1.2696970, 1.2828283, 1.2959596, 1.3090909, 1.3222222, 1.3353535, 1.3484849, 1.3616161, 1.3747475, 1.3878788, 1.4010102, 1.4141414, 1.4272727, 1.4404041, 1.4535353, 1.4666667, 1.4797980, 1.4929293, 1.5060606, 1.5191919, 1.5323232, 1.5454545, 1.5585859, 1.5717171, 1.5848485, 1.5979798, 1.6111112, 1.6242424, 1.6373737, 1.6505051, 1.6636363, 1.6767677, 1.6898990, 1.7030303, 1.7161616, 1.7292930, 1.7424242, 1.7555555, 1.7686869, 1.7818182, 1.7949495, 1.8080808, 1.8212122, 1.8343434, 1.8474747, 1.8606061, 1.8737373}; // ensigma in GeV2 double ensigma[100]={ 0.2916000, 0.3206586, 0.3497172, 0.3787757, 0.4078344, 0.4368929, 0.4659515, 0.4950101, 0.5240687, 0.5531273, 0.5821859, 0.6112444, 0.6403030, 0.6693616, 0.6984202, 0.7274788, 0.7565374, 0.7855960, 0.8146545, 0.8437131, 0.8727717, 0.9018303, 0.9308889, 0.9599475, 0.9890060, 1.0180646, 1.0471232, 1.0761818, 1.1052403, 1.1342990, 1.1633576, 1.1924162, 1.2214748, 1.2505333, 1.2795919, 1.3086505, 1.3377091, 1.3667676, 1.3958262, 1.4248848, 1.4539435, 1.4830021, 1.5120606, 1.5411192, 1.5701778, 1.5992364, 1.6282949, 1.6573535, 1.6864121, 1.7154707, 1.7445292, 1.7735878, 1.8026465, 1.8317051, 1.8607637, 1.8898222, 1.9188808, 1.9479394, 1.9769980, 2.0060565, 2.0351152, 2.0641737, 2.0932324, 2.1222908, 2.1513495, 2.1804080, 2.2094667, 2.2385252, 2.2675838, 2.2966425, 2.3257010, 2.3547597, 2.3838181, 2.4128768, 2.4419353, 2.4709940, 2.5000525, 2.5291111, 2.5581696, 2.5872283, 2.6162868, 2.6453454, 2.6744041, 2.7034626, 2.7325213, 2.7615798, 2.7906384, 2.8196969, 2.8487556, 2.8778141, 2.9068727, 2.9359312, 2.9649899, 2.9940486, 3.0231071, 3.0521657, 3.0812242, 3.1102829, 3.1393414, 3.1684000}; double Fsigma[100]={ 2.0261996, 2.2349865, 2.4839740, 2.7840748, 3.1488798, 3.5936222, 4.1301847, 4.7517977, 5.3984838, 5.9147439, 6.0864558, 5.8283591, 5.2841811, 4.6615186, 4.0839195, 3.5914702, 3.1841860, 2.8494759, 2.5732665, 2.3434010, 2.1502059, 1.9862038, 1.8456544, 1.7241427, 1.6182493, 1.5253036, 1.4432002, 1.3702650, 1.3051554, 1.2467849, 1.1942677, 1.1468738, 1.1039963, 1.0651271, 1.0298390, 0.9977714, 0.9686196, 0.9421255, 0.9180685, 0.8962603, 0.8765374, 0.8587573, 0.8427927, 0.8285285, 0.8158574, 0.8046767, 0.7948853, 0.7863811, 0.7790571, 0.7728010, 0.7674922, 0.7630011, 0.7591889, 0.7559078, 0.7530031, 0.7503147, 0.7476809, 0.7449428, 0.7419487, 0.7385587, 0.7346500, 0.7301207, 0.7248930, 0.7189151, 0.7121620, 0.7046344, 0.6963565, 0.6873729, 0.6777444, 0.6675445, 0.6568548, 0.6457604, 0.6343476, 0.6227004, 0.6108983, 0.5990148, 0.5871165, 0.5752623, 0.5635037, 0.5518846, 0.5404415, 0.5292045, 0.5181981, 0.5074410, 0.4969472, 0.4867267, 0.4767860, 0.4671288, 0.4577557, 0.4486661, 0.4398569, 0.4313242, 0.4230627, 0.4150662, 0.4073282, 0.3998415, 0.3925985, 0.3855914, 0.3788125, 0.3722538}; // set up the interpolators _Fomega = make_InterpolatorPtr( 98,Fomegainit,1.0,eninit, GeV, 1); _Fthreec = make_InterpolatorPtr( 98,Fthreeinit,1.0,eninit, GeV, 1); _Fonec = make_InterpolatorPtr( 98,Foneinit ,1.0,eninit, GeV, 1); _Fsigma = make_InterpolatorPtr(100,Fsigma ,1.0,ensigma,GeV2,1); // initialise the calculation of the a_1 width _initializea1=false; // in GeV2 double a1q2in[200]={0,15788.6,31577.3,47365.9,63154.6,78943.2,94731.9,110521, 126309,142098,157886,173675,189464,205252,221041,236830,252618, 268407,284196,299984,315773,331562,347350,363139,378927,394716, 410505,426293,442082,457871,473659,489448,505237,521025,536814, 552603,568391,584180,599969,615757,631546,647334,663123,678912, 694700,710489,726278,742066,757855,773644,789432,805221,821010, 836798,852587,868375,884164,899953,915741,931530,947319,963107, 978896,994685,1.01047e+06,1.02626e+06,1.04205e+06,1.05784e+06, 1.07363e+06,1.08942e+06,1.10521e+06,1.12099e+06,1.13678e+06, 1.15257e+06,1.16836e+06,1.18415e+06,1.19994e+06,1.21573e+06, 1.23151e+06,1.2473e+06,1.26309e+06,1.27888e+06,1.29467e+06, 1.31046e+06,1.32625e+06,1.34203e+06,1.35782e+06,1.37361e+06, 1.3894e+06,1.40519e+06,1.42098e+06,1.43677e+06,1.45256e+06, 1.46834e+06,1.48413e+06,1.49992e+06,1.51571e+06,1.5315e+06, 1.54729e+06,1.56308e+06,1.57886e+06,1.59465e+06,1.61044e+06, 1.62623e+06,1.64202e+06,1.65781e+06,1.6736e+06,1.68939e+06, 1.70517e+06,1.72096e+06,1.73675e+06,1.75254e+06,1.76833e+06, 1.78412e+06,1.79991e+06,1.81569e+06,1.83148e+06,1.84727e+06, 1.86306e+06,1.87885e+06,1.89464e+06,1.91043e+06,1.92621e+06, 1.942e+06,1.95779e+06,1.97358e+06,1.98937e+06,2.00516e+06, 2.02095e+06,2.03674e+06,2.05252e+06,2.06831e+06,2.0841e+06, 2.09989e+06,2.11568e+06,2.13147e+06,2.14726e+06,2.16304e+06, 2.17883e+06,2.19462e+06,2.21041e+06,2.2262e+06,2.24199e+06, 2.25778e+06,2.27356e+06,2.28935e+06,2.30514e+06,2.32093e+06, 2.33672e+06,2.35251e+06,2.3683e+06,2.38409e+06,2.39987e+06, 2.41566e+06,2.43145e+06,2.44724e+06,2.46303e+06,2.47882e+06, 2.49461e+06,2.51039e+06,2.52618e+06,2.54197e+06,2.55776e+06, 2.57355e+06,2.58934e+06,2.60513e+06,2.62092e+06,2.6367e+06, 2.65249e+06,2.66828e+06,2.68407e+06,2.69986e+06,2.71565e+06, 2.73144e+06,2.74722e+06,2.76301e+06,2.7788e+06,2.79459e+06, 2.81038e+06,2.82617e+06,2.84196e+06,2.85774e+06,2.87353e+06, 2.88932e+06,2.90511e+06,2.9209e+06,2.93669e+06,2.95248e+06, 2.96827e+06,2.98405e+06,2.99984e+06,3.01563e+06,3.03142e+06, 3.04721e+06,3.063e+06,3.07879e+06,3.09457e+06,3.11036e+06, 3.12615e+06,3.14194e+06}; // in GeV double a1widthin[200]={0,0,0,0,0,0,0,0, 0,0,0,0,0.000634625,0.00686721,0.026178,0.066329, 0.134996,0.239698,0.387813,0.586641,0.843471,1.16567, 1.56076,2.03654,2.60115,3.26324,4.03202,4.91749, 5.93053,7.08313,8.38858,9.86176,11.5194,13.3805, 15.4667,17.8029,20.4175,23.3438,26.6202,30.2917, 34.4108,39.0384,44.2457,50.1143,56.7369,64.2147, 72.6566,82.1666,92.8329,104.708,117.786,131.981, 147.124,162.974,179.244,195.64,211.904,227.818, 243.223,257.991,272.06,285.392,297.971,309.8, 320.894,331.278,340.979,350.03,358.463,366.31, 373.608,380.386,386.677,392.511,397.945,402.935, 407.563,411.841,415.79,419.433,422.766,425.853, 428.695,431.302,433.715,435.883,437.887,439.716, 441.426,442.947,444.326,445.575,446.65,447.666, 448.578,449.395,450.123,450.821,451.343,451.847, 452.283,452.859,452.987,453.266,453.496,453.686, 453.839,453.958,454.05,454.113,454.149,454.16, 454.154,454.13,454.091,454.037,453.966,453.9, 453.814,453.724,453.628,453.528,453.417,453.314, 453.206,453.1,452.995,452.891,452.79,452.697, 452.598,452.509,452.423,452.343,452.269,452.201, 452.141,452.086,452.039,452.004,451.966,451.941, 451.926,451.888,451.919,451.928,451.945,451.971, 452.006,452.05,452.102,452.163,452.234,452.421, 452.401,452.498,452.605,452.718,452.84,452.971, 453.111,453.261,453.417,453.583,453.756,453.937, 454.126,454.324,454.529,455.023,454.964,455.719, 455.428,455.671,455.921,456.179,456.444,456.695, 456.996,457.276,457.57,457.867,458.171,458.478, 458.793,459.115,459.442,459.777,460.115,460.458, 460.809,461.161,461.52,461.884,462.253,462.626, 463.004,463.832,463.778,464.166}; vector<double> tmp1(a1widthin,a1widthin+200); _a1runwidth.clear(); std::transform(tmp1.begin(), tmp1.end(), back_inserter(_a1runwidth), timesGeV); vector<double> tmp2(a1q2in,a1q2in+200); _a1runq2.clear(); std::transform(tmp2.begin(), tmp2.end(), back_inserter(_a1runq2), timesGeV2); _maxmass=ZERO; _maxcalc=ZERO; } void FourPionNovosibirskCurrent::doinit() { WeakDecayCurrent::doinit(); // pion masses _mpic=getParticleData(ParticleID::piplus)->mass(); _mpic2=sqr(_mpic); _mpi0=getParticleData(ParticleID::pi0)->mass(); _mpi02=sqr(_mpi0); if(!_localparameters) { _rhomass = getParticleData(ParticleID::rhominus)->mass(); _rhowidth = getParticleData(ParticleID::rhominus)->width(); _omegamass = getParticleData(ParticleID::omega)->mass(); _omegawidth = getParticleData(ParticleID::omega)->width(); _sigmamass = getParticleData(9000221)->mass(); _sigmawidth = getParticleData(9000221)->width(); _a1mass = getParticleData(ParticleID::a_1minus)->mass(); _a1width = getParticleData(ParticleID::a_1minus)->width(); } // calculate the constants for the a_1 form factor _onedlam2 = 1./_lambda2; _a1massolam2 = _a1mass*_a1mass*_onedlam2; // parameter for the sigma breit-wigner _psigma.push_back(Kinematics::pstarTwoBodyDecay(_sigmamass,_mpi0,_mpi0)); _psigma.push_back(Kinematics::pstarTwoBodyDecay(_sigmamass,_mpic,_mpic)); // parameters for the rho breit wigner _prho=Kinematics::pstarTwoBodyDecay(_rhomass,_mpic,_mpic); _hm2 = hFunction(_rhomass); _dhdq2m2=dhdq2Parameter(); _rhoD=DParameter(); // convert the magnitude and phase of z into a phase _zsigma = _zmag*(cos(_zphase)+Complex(0.,1.)*sin(_zphase)); // initialize the a_1 width inita1width(-1); } void FourPionNovosibirskCurrent::doinitrun() { // set up the running a_1 width inita1width(0); WeakDecayCurrent::doinitrun(); } void FourPionNovosibirskCurrent::persistentOutput(PersistentOStream & os) const { os << ounit(_rhomass,GeV) << ounit(_a1mass,GeV) << ounit(_omegamass,GeV) << ounit(_sigmamass,GeV) << ounit(_rhowidth,GeV) << ounit(_a1width,GeV) << ounit(_omegawidth,GeV) << ounit(_sigmawidth,GeV) << _zsigma << ounit(_lambda2,GeV2) << _initializea1 << _localparameters << ounit(_a1runwidth,GeV) << ounit(_a1runq2,GeV2) << ounit(_onedlam2,1/GeV2) << _a1massolam2 << ounit(_psigma,GeV) << ounit(_mpic,GeV) << ounit(_mpi0,GeV) << ounit(_aomega,1/GeV) << ounit(_athreec,1/GeV) << ounit(_aonec,1/GeV) << _bomega << _bthreec << _bonec << _comega << _cthreec <<_conec << _omegaparam << ounit(_intwidth,GeV) << ounit(_intmass,GeV) << ounit(_mpic2,GeV2) << ounit(_mpi02,GeV2) << ounit(_hm2,GeV2) << _dhdq2m2 << ounit(_prho,GeV) << ounit(_rhoD,GeV2) << _zmag << _zphase << ounit(_maxmass,GeV) << ounit(_maxcalc,GeV); } void FourPionNovosibirskCurrent::persistentInput(PersistentIStream & is, int) { is >> iunit(_rhomass,GeV) >> iunit(_a1mass,GeV) >> iunit(_omegamass,GeV) >> iunit(_sigmamass,GeV) >> iunit(_rhowidth,GeV) >> iunit(_a1width,GeV) >> iunit(_omegawidth,GeV) >> iunit(_sigmawidth,GeV) >> _zsigma >> iunit(_lambda2,GeV2) >> _initializea1 >> _localparameters >> iunit(_a1runwidth,GeV) >> iunit(_a1runq2,GeV2) >> iunit(_onedlam2,1/GeV2) >> _a1massolam2 >> iunit(_psigma,GeV) >> iunit(_mpic,GeV) >> iunit(_mpi0,GeV) >> iunit(_aomega,1/GeV) >> iunit(_athreec,1/GeV) >> iunit(_aonec,1/GeV) >> _bomega >> _bthreec >> _bonec >> _comega >> _cthreec >>_conec >> _omegaparam >> iunit(_intwidth,GeV) >> iunit(_intmass,GeV) >> iunit(_mpic2,GeV2) >> iunit(_mpi02,GeV2)>> iunit(_hm2,GeV2) >> _dhdq2m2 >> iunit(_prho,GeV) >> iunit(_rhoD,GeV2) >> _zmag >> _zphase >> iunit(_maxmass,GeV) >> iunit(_maxcalc,GeV); } ClassDescription<FourPionNovosibirskCurrent> FourPionNovosibirskCurrent::initFourPionNovosibirskCurrent; // Definition of the static class description member. void FourPionNovosibirskCurrent::Init() { static ClassDocumentation<FourPionNovosibirskCurrent> documentation ("The FourPionNovosibirskCurrent class performs the decay" " of the tau to four pions using currents based on the the" " Novosibirsk e+e- data", "The decay of the tau to four pions uses currents based on \\cite{Bondar:2002mw}.", "%\\cite{Bondar:2002mw}\n" "\\bibitem{Bondar:2002mw}\n" " A.~E.~Bondar, S.~I.~Eidelman, A.~I.~Milstein, T.~Pierzchala, N.~I.~Root, Z.~Was and M.~Worek,\n" " ``Novosibirsk hadronic currents for tau --> 4pi channels of tau decay\n" " %library TAUOLA,''\n" " Comput.\\ Phys.\\ Commun.\\ {\\bf 146}, 139 (2002)\n" " [arXiv:hep-ph/0201149].\n" " %%CITATION = CPHCB,146,139;%%\n" ); static Parameter<FourPionNovosibirskCurrent,Energy> interfacerhoMass ("rhoMass", "The local value of the rho mass", &FourPionNovosibirskCurrent::_rhomass, GeV,0.7761*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<FourPionNovosibirskCurrent,Energy> interfacea1mass ("a1Mass", "The local value of the square of the a_1 mass", &FourPionNovosibirskCurrent::_a1mass, GeV, 1.2300*GeV, 0.5*GeV, 10.0*GeV, false, false, true); static Parameter<FourPionNovosibirskCurrent,Energy> interfaceSigmaMass ("sigmaMass", "The local value of the sigma mass", &FourPionNovosibirskCurrent::_sigmamass, GeV, 0.8*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<FourPionNovosibirskCurrent,Energy> interfaceOmegaMass ("omegaMass", "The local value of the omega mass", &FourPionNovosibirskCurrent::_omegamass, GeV, 0.7820*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<FourPionNovosibirskCurrent,Energy> interfacerhoWidth ("rhoWidth", "The local value of the rho width", &FourPionNovosibirskCurrent::_rhowidth, GeV,0.1445*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<FourPionNovosibirskCurrent,Energy> interfacea1width ("a1Width", "The local value of the square of the a_1 width", &FourPionNovosibirskCurrent::_a1width, GeV, 0.45*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<FourPionNovosibirskCurrent,Energy> interfaceSigmaWidth ("sigmaWidth", "The local value of the sigma width", &FourPionNovosibirskCurrent::_sigmawidth, GeV, 0.8*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<FourPionNovosibirskCurrent,Energy> interfaceOmegaWidth ("omegaWidth", "The local value of the omega width", &FourPionNovosibirskCurrent::_omegawidth, GeV, 0.00841*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<FourPionNovosibirskCurrent,Energy> interfaceIntegrationMass ("IntegrationMass", "Mass of the pseudoresonance used to improve integration effciency", &FourPionNovosibirskCurrent::_intmass, GeV, 1.4*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<FourPionNovosibirskCurrent,Energy> interfaceIntegrationWidth ("IntegrationWidth", "Width of the pseudoresonance used to improve integration effciency", &FourPionNovosibirskCurrent::_intwidth, GeV, 0.5*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<FourPionNovosibirskCurrent,double> interfaceSigmaMagnitude ("SigmaMagnitude", "magnitude of the relative sigma coupling", &FourPionNovosibirskCurrent::_zmag, 1.3998721, 0.0, 10.0e20, false, false, true); static Parameter<FourPionNovosibirskCurrent,double> interfaceSigmaPhase ("SigmaPhase", "phase of the relative sigma coupling", &FourPionNovosibirskCurrent::_zphase, 0.43585036, 0.0, Constants::twopi, false, false, true); static Parameter<FourPionNovosibirskCurrent,Energy2> interfaceLambda2 ("Lambda2", "The value of the mass scale squared to use in the form-factor", &FourPionNovosibirskCurrent::_lambda2, GeV2, 1.2*GeV2, 0.0001*GeV2, 10.0*GeV2, false, false, true); static Switch<FourPionNovosibirskCurrent,bool> interfaceLocalParameters ("LocalParameters", "Use local values of the intermediate resonances masses and widths", &FourPionNovosibirskCurrent::_localparameters, true, false, false); static SwitchOption interfaceLocalParametersLocal (interfaceLocalParameters, "Local", "Use the local values", true); static SwitchOption interfaceLocalParametersDefault (interfaceLocalParameters, "ParticleData", "Use the values from the particleData objects", false); static Switch<FourPionNovosibirskCurrent,bool> interfaceInitializea1 ("Initializea1", "Initialise the calculation of the a_1 running width", &FourPionNovosibirskCurrent::_initializea1, false, false, false); static SwitchOption interfaceInitializea1Initialization (interfaceInitializea1, "Yes", "Initialize the calculation", true); static SwitchOption interfaceInitializea1NoInitialization (interfaceInitializea1, "No", "Use the default values", false); static ParVector<FourPionNovosibirskCurrent,Energy> interfacea1RunningWidth ("a1RunningWidth", "The values of the a_1 width for interpolation to giving the running width.", &FourPionNovosibirskCurrent::_a1runwidth, GeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, true); static ParVector<FourPionNovosibirskCurrent,Energy2> interfacea1RunningQ2 ("a1RunningQ2", "The values of the q^2 for interpolation to giving the running width.", &FourPionNovosibirskCurrent::_a1runq2, GeV2, -1, 1.0*GeV2, ZERO, 10.0*GeV2, false, false, true); } // initialisation of the a_1 running width void FourPionNovosibirskCurrent::inita1width(int iopt) { // set up the interpolator if(iopt==0||!_initializea1) { _a1runinter = make_InterpolatorPtr(_a1runwidth,_a1runq2,3); return; } _maxcalc=_maxmass; if(_maxmass==ZERO) return; // parameters for the table of values Energy2 step(sqr(_maxmass)/200.); // function to be integrated to give the matrix element // integrator to perform the integral // weights for the integration channels vector<double> inweights; inweights.push_back(0.3);inweights.push_back(0.3);inweights.push_back(0.3); vector<double> inpower(3, 0.0); // types of integration channels vector<int> intype; intype.push_back(2);intype.push_back(3);intype.push_back(1); // masses for the integration channels vector<Energy> inmass(2,_rhomass);inmass.push_back(_sigmamass); // widths for the integration channels vector<Energy> inwidth(2,_rhowidth);inwidth.push_back(_sigmawidth); ThreeBodyAllOnCalculator<FourPionNovosibirskCurrent> widthgen1(inweights,intype,inmass,inwidth,inpower,*this,0,_mpi0,_mpic,_mpic); ThreeBodyAllOnCalculator<FourPionNovosibirskCurrent> widthgen2(inweights,intype,inmass,inwidth,inpower,*this,1,_mpi0,_mpi0,_mpi0); // normalisation constant to give physical width if on shell double a1const(_a1width/(widthgen1.partialWidth(sqr(_a1mass))+ widthgen2.partialWidth(sqr(_a1mass)))); // loop to give the values Energy2 moff2(ZERO); _a1runwidth.clear();_a1runq2.clear(); for(;moff2<=sqr(_maxmass);moff2+=step) { Energy total = a1const*(widthgen1.partialWidth(moff2)+widthgen2.partialWidth(moff2)); _a1runwidth.push_back(total); _a1runq2.push_back(moff2); } } // complete the construction of the decay mode for integration bool FourPionNovosibirskCurrent::createMode(int icharge, unsigned int imode, DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp) { // check the charge if(abs(icharge)!=3) return false; // check that the modes are kinematical allowed Energy min(ZERO); if(imode==0) { min= getParticleData(ParticleID::piplus)->mass() +3.*getParticleData(ParticleID::pi0)->mass(); } else { min=3.*getParticleData(ParticleID::piplus)->mass() +getParticleData(ParticleID::pi0)->mass(); } if(min>upp) return false; _maxmass=max(upp,_maxmass); // intermediates for the channels tPDPtr omega(getParticleData(ParticleID::omega)),rhop,rhom, rho0(getParticleData(ParticleID::rho0)),a1m,a10(getParticleData(ParticleID::a_10)), sigma(getParticleData(9000221)),rhot; if(icharge==3) { rhop = getParticleData(ParticleID::rhominus); rhom = getParticleData(ParticleID::rhoplus); a1m = getParticleData(ParticleID::a_1plus); rhot = getParticleData(24); } else { rhop = getParticleData(ParticleID::rhoplus); rhom = getParticleData(ParticleID::rhominus); a1m = getParticleData(ParticleID::a_1minus); rhot = getParticleData(-24); } DecayPhaseSpaceChannelPtr newchannel; // the omega channels for the three charged pion mode // first channel two channels with rho0 if(imode==1) { newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(omega ,0,0.0,-ires-2,iloc+3); newchannel->addIntermediate(rho0 ,0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(omega ,0,0.0,-ires-2,iloc+3); newchannel->addIntermediate(rho0 ,0,0.0, iloc,iloc+2); mode->addChannel(newchannel); // second two channels with rho - newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(omega ,0,0.0,-ires-2,iloc+2); newchannel->addIntermediate(rhom ,0,0.0, iloc+1,iloc+3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(omega ,0,0.0,-ires-2,iloc+2); newchannel->addIntermediate(rhom ,0,0.0, iloc,iloc+3); mode->addChannel(newchannel); // third two channels with rho + newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(omega ,0,0.0,-ires-2,iloc+1); newchannel->addIntermediate(rhop ,0,0.0, iloc+2,iloc+3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(omega ,0,0.0,-ires-2,iloc); newchannel->addIntermediate(rhop ,0,0.0, iloc+2,iloc+3); mode->addChannel(newchannel); // a_1 channels with rhos newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+3); newchannel->addIntermediate(a1m ,0,0.0,-ires-2,iloc); newchannel->addIntermediate(rho0 ,0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+3); newchannel->addIntermediate(a1m ,0,0.0,-ires-2,iloc+1); newchannel->addIntermediate(rho0 ,0,0.0, iloc,iloc+2); mode->addChannel(newchannel); // neutral a_1 channels with rhos newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(a10 ,0,0.0,-ires-2,iloc+2); newchannel->addIntermediate(rhom ,0,0.0, iloc+1,iloc+3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(a10 ,0,0.0,-ires-2,iloc+2); newchannel->addIntermediate(rhom ,0,0.0, iloc,iloc+3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(a10 ,0,0.0,-ires-2,iloc+1); newchannel->addIntermediate(rhop ,0,0.0, iloc+2,iloc+3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(a10 ,0,0.0,-ires-2,iloc); newchannel->addIntermediate(rhop ,0,0.0, iloc+2,iloc+3); mode->addChannel(newchannel); // a_1 channels with sigmas if(sigma) { newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+3); newchannel->addIntermediate(a1m ,0,0.0,-ires-2,iloc); newchannel->addIntermediate(sigma ,0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+3); newchannel->addIntermediate(a1m ,0,0.0,-ires-2,iloc+1); newchannel->addIntermediate(sigma ,0,0.0, iloc,iloc+2); mode->addChannel(newchannel); // neutral a_1 channels with sigma newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(a10 ,0,0.0,-ires-2,iloc+3); newchannel->addIntermediate(sigma ,0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(a10 ,0,0.0,-ires-2,iloc+3); newchannel->addIntermediate(sigma ,0,0.0, iloc,iloc+2); mode->addChannel(newchannel); } } else { // channels with an a1- and a rho - newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(a1m ,0,0.0,-ires-2,iloc+2); newchannel->addIntermediate(rhom ,0,0.0, iloc+3,iloc); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(a1m ,0,0.0,-ires-2,iloc+3); newchannel->addIntermediate(rhom ,0,0.0, iloc+2,iloc); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+2); newchannel->addIntermediate(a1m ,0,0.0,-ires-2,iloc+1); newchannel->addIntermediate(rhom ,0,0.0, iloc+3,iloc); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+2); newchannel->addIntermediate(a1m ,0,0.0,-ires-2,iloc+3); newchannel->addIntermediate(rhom ,0,0.0, iloc+1,iloc); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+3); newchannel->addIntermediate(a1m ,0,0.0,-ires-2,iloc+1); newchannel->addIntermediate(rhom ,0,0.0, iloc+2,iloc); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+3); newchannel->addIntermediate(a1m ,0,0.0,-ires-2,iloc+2); newchannel->addIntermediate(rhom ,0,0.0, iloc+1,iloc); mode->addChannel(newchannel); // channels with a sigma and a10 if(sigma ) { newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(a10 ,0,0.0,-ires-2,iloc+1); newchannel->addIntermediate(sigma ,0,0.0, iloc+2,iloc+3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(a10 ,0,0.0,-ires-2,iloc+2); newchannel->addIntermediate(sigma ,0,0.0, iloc+1,iloc+3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc); newchannel->addIntermediate(a10 ,0,0.0,-ires-2,iloc+3); newchannel->addIntermediate(sigma ,0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); // channels with a1- and sigma newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+1); newchannel->addIntermediate(a1m ,0,0.0,-ires-2,iloc); newchannel->addIntermediate(sigma ,0,0.0, iloc+2,iloc+3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+2); newchannel->addIntermediate(a1m ,0,0.0,-ires-2,iloc); newchannel->addIntermediate(sigma ,0,0.0, iloc+1,iloc+3); mode->addChannel(newchannel); newchannel = new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(rhot ,0,0.0,-ires-1,iloc+3); newchannel->addIntermediate(a1m ,0,0.0,-ires-2,iloc); newchannel->addIntermediate(sigma ,0,0.0, iloc+1,iloc+2); mode->addChannel(newchannel); } } // reset the parameters of the dummy resonance used for integration mode->resetIntermediate(rhot,_intmass,_intwidth); // reset the parameters of the resonances if using local values if(_localparameters) { mode->resetIntermediate(rhom,_rhomass,_rhowidth); mode->resetIntermediate(rhop,_rhomass,_rhowidth); mode->resetIntermediate(rho0,_rhomass,_rhowidth); mode->resetIntermediate(omega,_omegamass,_omegawidth); if(sigma) mode->resetIntermediate(sigma,_sigmamass,_sigmawidth); } // return if successful return true; } // the particles produced by the current tPDVector FourPionNovosibirskCurrent::particles(int icharge, unsigned int imode,int,int) { if(abs(icharge)!=3) return tPDVector(); tPDVector output(4); if(imode==1) { output[0]=getParticleData(ParticleID::piplus); output[1]=getParticleData(ParticleID::piplus); output[2]=getParticleData(ParticleID::piminus); } else { output[0]=getParticleData(ParticleID::piplus); output[1]=getParticleData(ParticleID::pi0); output[2]=getParticleData(ParticleID::pi0); } output[3]=getParticleData(ParticleID::pi0); if(icharge==-3) { for(unsigned int ix=0;ix<output.size();++ix) { if(output[ix]->CC()) output[ix]=output[ix]->CC(); } } return output; } // the hadronic currents vector<LorentzPolarizationVectorE> FourPionNovosibirskCurrent::current(const int imode, const int ichan, Energy & scale,const ParticleVector & decay, DecayIntegrator::MEOption meopt) const { useMe(); if(meopt==DecayIntegrator::Terminate) { for(unsigned int ix=0;ix<4;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return vector<LorentzPolarizationVectorE>(1,LorentzPolarizationVectorE()); } LorentzVector<complex<InvEnergy> > output; double fact(1.); // the momenta of the particles Lorentz5Momentum q1(decay[0]->momentum()),q2(decay[2]->momentum()), q3(decay[1]->momentum()),q4(decay[3]->momentum()); Lorentz5Momentum Q(q1+q2+q3+q4);Q.rescaleMass(); scale = Q.mass(); // decide which decay mode // three charged pions if(imode==1) { // momenta of the particles LorentzVector<complex<Energy5> > veca1rho,vecomega,veca1sig; if(ichan<0) { // a_1 rho current veca1rho = t1(q1,q2,q3,q4)+t1(q3,q2,q1,q4)+t1(q1,q3,q2,q4) +t1(q3,q1,q2,q4)+t1(q4,q3,q1,q2)+t1(q4,q1,q3,q2); // a_1 sigma current veca1sig = t2(q4,q3,q1,q2,1)+t2(q4,q1,q3,q2,1) -t2(q1,q4,q3,q2,1)-t2(q3,q4,q1,q2,1); // omega current vecomega = t3(q1,q2,q3,q4)+t3(q3,q2,q1,q4)-t3(q1,q3,q2,q4) -t3(q3,q1,q2,q4)-t3(q1,q4,q3,q2)-t3(q3,q4,q1,q2); } else if(ichan== 0) vecomega = t3(q1,q4,q3,q2); else if(ichan== 1) vecomega = t3(q3,q4,q1,q2); else if(ichan== 2) vecomega = t3(q1,q2,q3,q4); else if(ichan== 3) vecomega = t3(q3,q2,q1,q4); else if(ichan== 4) vecomega = t3(q1,q3,q2,q4); else if(ichan== 5) vecomega = t3(q3,q1,q2,q4); else if(ichan== 6) veca1rho = t1(q4,q1,q3,q2); else if(ichan== 7) veca1rho = t1(q4,q3,q1,q2); else if(ichan== 8) veca1rho = t1(q1,q2,q3,q4); else if(ichan== 9) veca1rho = t1(q3,q2,q1,q4); else if(ichan==10) veca1rho = t1(q1,q3,q2,q4); else if(ichan==11) veca1rho = t1(q3,q1,q2,q4); else if(ichan==12) veca1sig = t2(q4,q1,q3,q2,1); else if(ichan==13) veca1sig = t2(q4,q3,q1,q2,1); else if(ichan==14) veca1sig = t2(q1,q4,q3,q2,1); else if(ichan==15) veca1sig = t2(q3,q4,q1,q2,1); // final manipulations veca1rho += veca1sig; LorentzVector<complex<InvEnergy> > veca1rho1 = veca1rho * gFunction(Q.mass2(),1); LorentzVector<complex<InvEnergy> > vecomega1 = vecomega * gFunction(Q.mass2(),2); output = vecomega1 + veca1rho1; // this is 1/sqrt(2) for identical particles fact *= 1./sqrt(2.); } else if(imode==0) { // momenta of the particles LorentzVector<complex<Energy5> > veca1rho,veca1sig; if(ichan<0) { // a_1 rho current veca1rho= t1(q2,q3,q1,q4)+t1(q2,q4,q1,q3)+t1(q3,q2,q1,q4) +t1(q3,q4,q1,q2)+t1(q4,q2,q1,q3)+t1(q4,q3,q1,q2); // a_1 sigma current veca1sig= t2(q2,q1,q3,q4,0)+t2(q3,q1,q2,q4,0)+t2(q4,q1,q3,q2,0) -t2(q1,q2,q3,q4,0)-t2(q1,q3,q2,q4,0)-t2(q1,q4,q3,q2,0); } else if(ichan== 0) veca1rho = t1(q2,q3,q1,q4); else if(ichan== 1) veca1rho = t1(q2,q4,q1,q3); else if(ichan== 2) veca1rho = t1(q3,q2,q1,q4); else if(ichan== 3) veca1rho = t1(q3,q4,q1,q2); else if(ichan== 4) veca1rho = t1(q4,q2,q1,q3); else if(ichan== 5) veca1rho = t1(q4,q3,q1,q2); else if(ichan== 6) veca1sig = t2(q2,q1,q3,q4,0); else if(ichan== 7) veca1sig = t2(q3,q1,q2,q4,0); else if(ichan== 8) veca1sig = t2(q4,q1,q3,q2,0); else if(ichan== 9) veca1sig = t2(q1,q2,q3,q4,0); else if(ichan==10) veca1sig = t2(q1,q3,q2,q4,0); else if(ichan==11) veca1sig = t2(q1,q4,q3,q2,0); // add them up output = (veca1rho + veca1sig) * gFunction(Q.mass2(),0); // this is sqrt(1/3!) for identical particles fact *= 1./sqrt(6.); } else { throw DecayIntegratorError() << "Unknown decay mode in the " << "FourPionNovosibirskCurrent::" << "hadronCurrent()" << Exception::abortnow; } vector<LorentzPolarizationVectorE> temp(1, output * fact * Q.mass2()); return temp; } bool FourPionNovosibirskCurrent::accept(vector<int> id) { bool allowed(false); // check four products if(id.size()!=4){return false;} int npiminus=0,npiplus=0,npi0=0; for(unsigned int ix=0;ix<id.size();++ix) { if(id[ix]==ParticleID:: piplus) ++npiplus; else if(id[ix]==ParticleID::piminus) ++npiminus; else if(id[ix]==ParticleID::pi0) ++npi0; } if(npiminus==2&&npiplus==1&&npi0==1) allowed=true; else if(npiminus==1&&npi0==3) allowed=true; else if(npiplus==2&&npiminus==1&&npi0==1) allowed=true; else if(npiplus==1&&npi0==3) allowed=true; return allowed; } // the decay mode unsigned int FourPionNovosibirskCurrent::decayMode(vector<int> idout) { unsigned int npi(0); for(unsigned int ix=0;ix<idout.size();++ix) { if(abs(idout[ix])==ParticleID::piplus) ++npi; } if(npi==3) return 1; return 0; } // output the information for the database void FourPionNovosibirskCurrent::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::FourPionNovosibirskCurrent " << name() << " HwWeakCurrents.so\n"; output << "newdef " << name() << ":rhoMass " << _rhomass/GeV << "\n"; output << "newdef " << name() << ":a1Mass " << _a1mass/GeV << "\n"; output << "newdef " << name() << ":sigmaMass " << _sigmamass/GeV << "\n"; output << "newdef " << name() << ":omegaMass " << _omegamass/GeV << "\n"; output << "newdef " << name() << ":rhoWidth " << _rhowidth/GeV << "\n"; output << "newdef " << name() << ":a1Width " << _a1width/GeV << "\n"; output << "newdef " << name() << ":sigmaWidth " << _sigmawidth/GeV << "\n"; output << "newdef " << name() << ":omegaWidth " << _omegawidth/GeV << "\n"; output << "newdef " << name() << ":IntegrationMass " << _intmass/GeV << "\n"; output << "newdef " << name() << ":IntegrationWidth " << _intwidth/GeV << "\n"; output << "newdef " << name() << ":SigmaMagnitude " << _zmag << "\n"; output << "newdef " << name() << ":SigmaPhase " << _zphase << "\n"; output << "newdef " << name() << ":Lambda2 " << _lambda2/GeV2 << "\n"; output << "newdef " << name() << ":LocalParameters " << _localparameters << "\n"; output << "newdef " << name() << ":Initializea1 " << _initializea1 << "\n"; for(unsigned int ix=0;ix<_a1runwidth.size();++ix) { if(ix<200) output << "newdef "; else output << "insert "; output << name() << ":a1RunningWidth " << ix << " " << _a1runwidth[ix]/GeV << "\n"; } for(unsigned int ix=0;ix<_a1runq2.size();++ix) { if(ix<200) output << "newdef "; else output << "insert "; output << name() << ":a1RunningQ2 " << ix << " " << _a1runq2[ix]/GeV2 << "\n"; } WeakDecayCurrent::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } double FourPionNovosibirskCurrent:: threeBodyMatrixElement(const int iopt, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy, const Energy, const Energy) const { unsigned int ix; // construct the momenta of the decay products Energy p1[5],p2[5],p3[5]; Energy2 p1sq, p2sq, p3sq; Energy q(sqrt(q2)); if(iopt==0) { p1[0] = 0.5*(q2+_mpi02-s1)/q; p1sq=p1[0]*p1[0]; p1[4]=sqrt(p1sq-_mpi02); p2[0] = 0.5*(q2+_mpic2-s2)/q; p2sq=p2[0]*p2[0]; p2[4]=sqrt(p2sq-_mpic2); p3[0] = 0.5*(q2+_mpic2-s3)/q; p3sq=p3[0]*p3[0]; p3[4]=sqrt(p3sq-_mpic2); } else { p1[0] = 0.5*(q2+_mpi02-s1)/q; p1sq=p1[0]*p1[0]; p1[4]=sqrt(p1sq-_mpi02); p2[0] = 0.5*(q2+_mpi02-s2)/q; p2sq=p2[0]*p2[0]; p2[4]=sqrt(p2sq-_mpi02); p3[0] = 0.5*(q2+_mpi02-s3)/q; p3sq=p3[0]*p3[0]; p3[4]=sqrt(p3sq-_mpi02); } // take momentum of 1 parallel to z axis p1[1]=ZERO;p1[2]=ZERO;p1[3]=p1[4]; // construct 2 double cos2(0.5*(sqr(p1[4])+sqr(p2[4])-sqr(p3[4]))/p1[4]/p2[4]); p2[1] = p2[4]*sqrt(1.-sqr(cos2)); p2[2]=ZERO; p2[3]=-p2[4]*cos2; // construct 3 double cos3(0.5*(sqr(p1[4])-sqr(p2[4])+sqr(p3[4]))/p1[4]/p3[4]); p3[1] =-p3[4]*sqrt(1.-sqr(cos3)); p3[2]=ZERO; p3[3]=-p3[4]*cos3; // pi+pi-pi0 term complex<Energy4> output(0.*sqr(MeV2)); if(iopt==0) { // values for the different Breit-Wigner terms Complex rho1(2.365*rhoBreitWigner(s2)), rho2(2.365*rhoBreitWigner(s3)), sig1(sigmaBreitWigner(s1,1)); // compute the vector complex<Energy2> term; for(ix=1;ix<4;++ix) { term = (p1[0]*p2[ix]-p2[0]*p1[ix])*rho2+(p1[0]*p3[ix]-p3[0]*p1[ix])*rho1 +_zsigma*q*p1[ix]*sig1; output+=term*conj(term); } } // pi0pi0pi0 term else if(iopt==1) { // values for the different Breit-Wigner terms Complex sig1(sigmaBreitWigner(s1,0)), sig2(sigmaBreitWigner(s2,0)), sig3(sigmaBreitWigner(s3,0)); // compute the vector complex<Energy2> term; for(ix=1;ix<4;++ix) { term = _zsigma * q * (p1[ix]*sig1 + p2[ix]*sig2 + p3[ix]*sig3); output += term*conj(term); } output/=6.; } output *= a1FormFactor(q2); return output.real() / pow<4,1>(_rhomass); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/FivePionCurrent.cc�������������������������������������������0000644�0001750�0001750�00000103164�11754474774�024037� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FivePionCurrent.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FivePionCurrent class. // #include "FivePionCurrent.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; FivePionCurrent::FivePionCurrent() { // set the number of modes addDecayMode(2,-1); addDecayMode(2,-1); addDecayMode(2,-1); setInitialModes(3); // masses of the intermediates _rhomass = 776*MeV; _a1mass = 1260*MeV; _omegamass = 782*MeV; _sigmamass = 800*MeV; // widths of the intermediates _rhowidth = 150*MeV; _a1width = 400*MeV; _omegawidth = 8.5*MeV; _sigmawidth = 600*MeV; // use local values of the resonance parameters _localparameters=true; // include the rho Breit-Wigners in omega decay _rhoomega = true; // Normalisation parameters for the different currents _c =4.*GeV2; _c0=3.; // various meson coupling constants _fomegarhopi=0.07/MeV; _grhopipi=6.0; _garhopi=6.*GeV; _faaf=4.*GeV; _ffpipi=5.*GeV; _presigma = ZERO; _preomega = ZERO; } inline void FivePionCurrent::doinit() { WeakDecayCurrent::doinit(); if(!_localparameters) { _rhomass = getParticleData(ParticleID::rhominus)->mass(); _rhowidth = getParticleData(ParticleID::rhominus)->width(); _omegamass = getParticleData(ParticleID::omega)->mass(); _omegawidth = getParticleData(ParticleID::omega)->width(); _sigmamass = getParticleData(9000221)->mass(); _sigmawidth = getParticleData(9000221)->width(); _a1mass = getParticleData(ParticleID::a_1minus)->mass(); _a1width = getParticleData(ParticleID::a_1minus)->width(); } // prefactors _presigma = _c/sqr(sqr(_a1mass)*_sigmamass*_rhomass)*_faaf*_ffpipi* _garhopi*_grhopipi; _preomega = _c0*_fomegarhopi*sqr(_grhopipi/(sqr(_rhomass)*_omegamass)); } void FivePionCurrent::persistentOutput(PersistentOStream & os) const { static const InvEnergy7 InvGeV7 = pow<-7,1>(GeV); static const InvEnergy3 InvGeV3 = pow<-3,1>(GeV); os << ounit(_rhomass,GeV) << ounit(_a1mass,GeV) << ounit(_omegamass,GeV) << ounit(_sigmamass,GeV) << ounit(_rhowidth,GeV) << ounit(_a1width,GeV) << ounit(_omegawidth,GeV) << ounit(_sigmawidth,GeV) << _localparameters << ounit(_c,GeV2) << _c0 << ounit(_fomegarhopi,1/GeV) << _grhopipi << ounit(_garhopi,GeV) << ounit(_faaf,GeV) << ounit(_ffpipi,GeV) << ounit(_preomega,InvGeV7) << ounit(_presigma,InvGeV3) << _rhoomega; } void FivePionCurrent::persistentInput(PersistentIStream & is, int) { static const InvEnergy7 InvGeV7 = pow<-7,1>(GeV); static const InvEnergy3 InvGeV3 = pow<-3,1>(GeV); is >> iunit(_rhomass,GeV) >> iunit(_a1mass,GeV) >> iunit(_omegamass,GeV) >> iunit(_sigmamass,GeV) >> iunit(_rhowidth,GeV) >> iunit(_a1width,GeV) >> iunit(_omegawidth,GeV) >> iunit(_sigmawidth,GeV) >> _localparameters >> iunit(_c,GeV2) >> _c0 >> iunit(_fomegarhopi,1/GeV) >> _grhopipi >> iunit(_garhopi,GeV) >> iunit(_faaf,GeV) >> iunit(_ffpipi,GeV) >> iunit(_preomega,InvGeV7) >> iunit(_presigma,InvGeV3) >> _rhoomega; } ClassDescription<FivePionCurrent> FivePionCurrent::initFivePionCurrent; // Definition of the static class description member. void FivePionCurrent::Init() { static ClassDocumentation<FivePionCurrent> documentation ("The FivePionCurrent class implements the model of hep-ph/0602162", "The model of \\cite{Kuhn:2006nw} was used for the hadronic five pion current.", "\\bibitem{Kuhn:2006nw} J.~H.~Kuhn and Z.~Was, hep-ph/0602162, (2006)."); static Parameter<FivePionCurrent,Energy> interfaceRhoMass ("RhoMass", "The mass of the rho meson", &FivePionCurrent::_rhomass, MeV, 776*MeV, 500*MeV, 1000*MeV, false, false, Interface::limited); static Parameter<FivePionCurrent,Energy> interfaceA1Mass ("A1Mass", "The mass of the a_1 meson", &FivePionCurrent::_a1mass, MeV, 1260*MeV, 1000*MeV, 1500*MeV, false, false, Interface::limited); static Parameter<FivePionCurrent,Energy> interfaceOmegaMass ("OmegaMass", "The mass of the omega meson", &FivePionCurrent::_omegamass, MeV, 782*MeV, 600*MeV, 900*MeV, false, false, Interface::limited); static Parameter<FivePionCurrent,Energy> interfaceSigmaMass ("SigmaMass", "The mass of the sigma meson", &FivePionCurrent::_sigmamass, MeV, 800*MeV, 400*MeV, 1200*MeV, false, false, Interface::limited); static Parameter<FivePionCurrent,Energy> interfaceRhoWidth ("RhoWidth", "The width of the rho meson", &FivePionCurrent::_rhowidth, MeV, 150*MeV, 100*MeV, 300*MeV, false, false, Interface::limited); static Parameter<FivePionCurrent,Energy> interfaceA1Width ("A1Width", "The width of the a_1 meson", &FivePionCurrent::_a1width, MeV, 400*MeV, 100*MeV, 800*MeV, false, false, Interface::limited); static Parameter<FivePionCurrent,Energy> interfaceOmegaWidth ("OmegaWidth", "The width of the omega meson", &FivePionCurrent::_omegawidth, MeV, 8.5*MeV, 1.0*MeV, 20.0*MeV, false, false, Interface::limited); static Parameter<FivePionCurrent,Energy> interfaceSigmaWidth ("SigmaWidth", "The width of the sigma meson", &FivePionCurrent::_sigmawidth, MeV, 600*MeV, 100*MeV, 1200*MeV, false, false, Interface::limited); static Switch<FivePionCurrent,bool> interfaceLocalParameters ("LocalParameters", "Use local values of the meson masses and widths or those from the" " ParticleData objects.", &FivePionCurrent::_localparameters, true, false, false); static SwitchOption interfaceLocalParametersLocal (interfaceLocalParameters, "Local", "Use local values", true); static SwitchOption interfaceLocalParametersParticleData (interfaceLocalParameters, "ParticleData", "Use values from the particle data objects", false); static Switch<FivePionCurrent,bool> interfaceRhoOmega ("RhoOmega", "Option for the treatment of the rho Breit-Wigners in the omega decay", &FivePionCurrent::_rhoomega, true, false, false); static SwitchOption interfaceRhoOmegaInclude (interfaceRhoOmega, "Yes", "Include the rho Breit-Wigners", true); static SwitchOption interfaceRhoOmegaOmit (interfaceRhoOmega, "No", "Don't include the rho Breit-Wigners", false); static Parameter<FivePionCurrent,Energy2> interfaceC ("C", "The normalisation parameter for the a_1 sigma current", &FivePionCurrent::_c, GeV2, 4.0*GeV2, 0.1*GeV2, 20.0*GeV2, false, false, Interface::limited); static Parameter<FivePionCurrent,double> interfaceC0 ("C0", "The normalisation constant for the omega-rho current", &FivePionCurrent::_c0, 3., 0.1, 10.0, false, false, Interface::limited); static Parameter<FivePionCurrent,InvEnergy> interfacegomegarhopi ("fomegarhopi", "The coupling of omega-rho-pi", &FivePionCurrent::_fomegarhopi, 1./MeV, 0.07/MeV, 0.01/MeV, 0.2/MeV, false, false, Interface::limited); static Parameter<FivePionCurrent,double> interfacegrhopipi ("grhopipi", "The coupling for rho-pi-pi", &FivePionCurrent::_grhopipi, 6.0, 1.0, 20.0, false, false, Interface::limited); static Parameter<FivePionCurrent,Energy> interfacegarhopi ("garhopi", "The coupling of a-rho-pi", &FivePionCurrent::_garhopi, GeV, 6.0*GeV, 0.1*GeV, 20.0*GeV, false, false, Interface::limited); static Parameter<FivePionCurrent,Energy> interfacefaaf ("faaf", "The coupling of a-a-f", &FivePionCurrent::_faaf, GeV, 4.0*GeV, 0.1*GeV, 20.0*GeV, false, false, Interface::limited); static Parameter<FivePionCurrent,Energy> interfaceffpipi ("ffpipi", "The coupling of f-pi-pi", &FivePionCurrent::_ffpipi, GeV, 5.0*GeV, 0.1*GeV, 20.0*GeV, false, false, Interface::limited); } bool FivePionCurrent::accept(vector<int> id) { bool allowed(false); // check five products if(id.size()!=5){return false;} int npiminus=0,npiplus=0,npi0=0; for(unsigned int ix=0;ix<id.size();++ix) { if(id[ix]==ParticleID:: piplus){++npiplus;} else if(id[ix]==ParticleID::piminus){++npiminus;} else if(id[ix]==ParticleID::pi0){++npi0;} } if(npiplus>npiminus) swap(npiplus,npiminus); if( npiminus==3&&npiplus==2&&npi0==0) allowed=true; else if(npiminus==2&&npiplus==1&&npi0==2) allowed=true; else if(npiminus==1&&npiplus==0&&npi0==4) allowed=true; return allowed; } bool FivePionCurrent::createMode(int icharge, unsigned int imode, DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp) { // check the charge if(abs(icharge)!=3) return false; // check that the modes are kinematical allowed Energy min(ZERO); // 3 pi- 2pi+ if(imode==0) { min=5.*getParticleData(ParticleID::piplus)->mass(); } // 2pi- pi+ 2pi0 else if(imode==1) { min=3.*getParticleData(ParticleID::piplus)->mass() +2.*getParticleData(ParticleID::pi0)->mass(); } // pi- 4pi0 else { min= getParticleData(ParticleID::piplus)->mass() +4.*getParticleData(ParticleID::pi0)->mass(); } if(min>upp) return false; // intermediates for the channels tPDPtr omega(getParticleData(ParticleID::omega)),rhop,rhom, rho0(getParticleData(ParticleID::rho0)),a1m,a10(getParticleData(ParticleID::a_10)), sigma(getParticleData(9000221)); if(icharge==3) { rhop = getParticleData(ParticleID::rhominus); rhom = getParticleData(ParticleID::rhoplus); a1m = getParticleData(ParticleID::a_1plus); } else { rhop = getParticleData(ParticleID::rhoplus); rhom = getParticleData(ParticleID::rhominus); a1m = getParticleData(ParticleID::a_1minus); } DecayPhaseSpaceChannelPtr newchannel; // all charged mode if(imode==0) { if(sigma) { // 1st two a_1 sigma channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+3, iloc+4); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc ); newchannel->addIntermediate(rho0 ,0,0.0, iloc+1, iloc+2); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+3, iloc+4); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+1); newchannel->addIntermediate(rho0 ,0,0.0, iloc , iloc+2); mode->addChannel(newchannel); // 2nd two a_1 sigma channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+3, iloc ); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+4); newchannel->addIntermediate(rho0 ,0,0.0, iloc+1, iloc+2); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+3, iloc ); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+1); newchannel->addIntermediate(rho0 ,0,0.0, iloc+4, iloc+2); mode->addChannel(newchannel); // 3rd two a_1 sigma channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+3, iloc+1); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc ); newchannel->addIntermediate(rho0 ,0,0.0, iloc+4, iloc+2); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+3, iloc+1); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+4); newchannel->addIntermediate(rho0 ,0,0.0, iloc , iloc+2); mode->addChannel(newchannel); // 4th two a_1 sigma channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+2, iloc+4); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc ); newchannel->addIntermediate(rho0 ,0,0.0, iloc+1, iloc+3); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+2, iloc+4); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+1); newchannel->addIntermediate(rho0 ,0,0.0, iloc , iloc+3); mode->addChannel(newchannel); // 5th two a_1 sigma channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+2, iloc ); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+4); newchannel->addIntermediate(rho0 ,0,0.0, iloc+1, iloc+3); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+2, iloc ); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+1); newchannel->addIntermediate(rho0 ,0,0.0, iloc+4, iloc+3); mode->addChannel(newchannel); // 6th two a_1 sigma channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+2, iloc+1); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc ); newchannel->addIntermediate(rho0 ,0,0.0, iloc+4, iloc+3); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+2, iloc+1); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+4); newchannel->addIntermediate(rho0 ,0,0.0, iloc , iloc+3); mode->addChannel(newchannel); } } // 2 neutral mode else if(imode==1) { // first three omega channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(rhom ,0,0.0, iloc+3, iloc+4); newchannel->addIntermediate(omega ,0,0.0,-ires-3, iloc+2); newchannel->addIntermediate(rho0 ,0,0.0, iloc , iloc+1); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(rhom ,0,0.0, iloc+3, iloc+4); newchannel->addIntermediate(omega ,0,0.0,-ires-3, iloc+1); newchannel->addIntermediate(rhop ,0,0.0, iloc , iloc+2); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(rhom ,0,0.0, iloc+3, iloc+4); newchannel->addIntermediate(omega ,0,0.0,-ires-3, iloc ); newchannel->addIntermediate(rhom ,0,0.0, iloc+1, iloc+2); mode->addChannel(newchannel); // second three omega channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(rhom ,0,0.0, iloc+1, iloc+4); newchannel->addIntermediate(omega ,0,0.0,-ires-3, iloc+2); newchannel->addIntermediate(rho0 ,0,0.0, iloc , iloc+3); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(rhom ,0,0.0, iloc+1, iloc+4); newchannel->addIntermediate(omega ,0,0.0,-ires-3, iloc+3); newchannel->addIntermediate(rhop ,0,0.0, iloc , iloc+2); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(rhom ,0,0.0, iloc+1, iloc+4); newchannel->addIntermediate(omega ,0,0.0,-ires-3, iloc ); newchannel->addIntermediate(rhom ,0,0.0, iloc+3, iloc+2); mode->addChannel(newchannel); // third three omega channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(rhom ,0,0.0, iloc+3, iloc+2); newchannel->addIntermediate(omega ,0,0.0,-ires-3, iloc+4); newchannel->addIntermediate(rho0 ,0,0.0, iloc , iloc+1); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(rhom ,0,0.0, iloc+3, iloc+2); newchannel->addIntermediate(omega ,0,0.0,-ires-3, iloc+1); newchannel->addIntermediate(rhop ,0,0.0, iloc , iloc+4); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(rhom ,0,0.0, iloc+3, iloc+2); newchannel->addIntermediate(omega ,0,0.0,-ires-3, iloc ); newchannel->addIntermediate(rhom ,0,0.0, iloc+1, iloc+4); mode->addChannel(newchannel); // fourth three omega channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(rhom ,0,0.0, iloc+1, iloc+2); newchannel->addIntermediate(omega ,0,0.0,-ires-3, iloc+4); newchannel->addIntermediate(rho0 ,0,0.0, iloc , iloc+3); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(rhom ,0,0.0, iloc+1, iloc+2); newchannel->addIntermediate(omega ,0,0.0,-ires-3, iloc+3); newchannel->addIntermediate(rhop ,0,0.0, iloc , iloc+4); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(rhom ,0,0.0, iloc+1, iloc+2); newchannel->addIntermediate(omega ,0,0.0,-ires-3, iloc ); newchannel->addIntermediate(rhom ,0,0.0, iloc+3, iloc+4); mode->addChannel(newchannel); // first two sigma a_1 channels if(sigma) { newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc , iloc+1); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+2); newchannel->addIntermediate(rhom ,0,0.0, iloc+3, iloc+4); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc , iloc+1); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+4); newchannel->addIntermediate(rhom ,0,0.0, iloc+3, iloc+2); mode->addChannel(newchannel); // second two sigma a_1 channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc , iloc+3); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+2); newchannel->addIntermediate(rhom ,0,0.0, iloc+1, iloc+4); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc , iloc+3); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+4); newchannel->addIntermediate(rhom ,0,0.0, iloc+1, iloc+2); mode->addChannel(newchannel); // third two sigma a_1 channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+2, iloc+4); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+1); newchannel->addIntermediate(rho0 ,0,0.0, iloc , iloc+3); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+2, iloc+4); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+3); newchannel->addIntermediate(rho0 ,0,0.0, iloc , iloc+1); mode->addChannel(newchannel); } } // 4 neutral mode else { if(sigma) { // 1st two sigma a_1 channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+3, iloc+4); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+1); newchannel->addIntermediate(rhom ,0,0.0, iloc , iloc+2); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+3, iloc+4); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc ); newchannel->addIntermediate(rhom ,0,0.0, iloc+1, iloc+2); mode->addChannel(newchannel); // 2nd two sigma a_1 channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+3, iloc ); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+1); newchannel->addIntermediate(rhom ,0,0.0, iloc+4, iloc+2); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+3, iloc ); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+4); newchannel->addIntermediate(rhom ,0,0.0, iloc+1, iloc+2); mode->addChannel(newchannel); // 3rd two sigma a_1 channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc , iloc+4); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+1); newchannel->addIntermediate(rhom ,0,0.0, iloc+3, iloc+2); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc , iloc+4); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+3); newchannel->addIntermediate(rhom ,0,0.0, iloc+1, iloc+2); mode->addChannel(newchannel); // 4th two sigma a_1 channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+1, iloc+4); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+3); newchannel->addIntermediate(rhom ,0,0.0, iloc , iloc+2); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+1, iloc+4); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc ); newchannel->addIntermediate(rhom ,0,0.0, iloc+3, iloc+2); mode->addChannel(newchannel); // 5th two sigma a_1 channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+3, iloc+1); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+4); newchannel->addIntermediate(rhom ,0,0.0, iloc , iloc+2); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc+3, iloc+1); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc ); newchannel->addIntermediate(rhom ,0,0.0, iloc+4, iloc+2); mode->addChannel(newchannel); // 6th two sigma a_1 channels newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc , iloc+1); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+3); newchannel->addIntermediate(rhom ,0,0.0, iloc+4, iloc+2); mode->addChannel(newchannel); newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(a1m ,0,0.0,-ires-1,-ires-2); newchannel->addIntermediate(sigma ,0,0.0, iloc , iloc+1); newchannel->addIntermediate(a1m ,0,0.0,-ires-3, iloc+4); newchannel->addIntermediate(rhom ,0,0.0, iloc+3, iloc+2); mode->addChannel(newchannel); } } // reset the parameters of the resonances if using local values if(_localparameters) { mode->resetIntermediate(rhom,_rhomass,_rhowidth); mode->resetIntermediate(rhop,_rhomass,_rhowidth); mode->resetIntermediate(rho0,_rhomass,_rhowidth); mode->resetIntermediate(omega,_omegamass,_omegawidth); mode->resetIntermediate(a1m,_a1mass,_a1width); mode->resetIntermediate(a10,_a1mass,_a1width); if(sigma) mode->resetIntermediate(sigma,_sigmamass,_sigmawidth); } // return if successful return true; } // the particles produced by the current tPDVector FivePionCurrent::particles(int icharge, unsigned int imode,int,int) { // particle data objects for the pions tPDPtr piplus (getParticleData(ParticleID::piplus )); tPDPtr pi0 (getParticleData(ParticleID::pi0 )); tPDPtr piminus(getParticleData(ParticleID::piminus)); if(icharge==3) swap(piplus,piminus); tPDVector output(5); // all charged if(imode==0) { output[0]=piminus; output[1]=piminus; output[2]=piplus;; output[3]=piplus; output[4]=piminus; } // two neutral else if(imode==1) { output[0]=piplus; output[1]=piminus; output[2]=pi0;; output[3]=piminus; output[4]=pi0; } // four neutral else { output[0]=pi0; output[1]=pi0; output[2]=piminus;; output[3]=pi0; output[4]=pi0; } return output; } // the decay mode unsigned int FivePionCurrent::decayMode(vector<int> idout) { unsigned int npi(0); for(unsigned int ix=0;ix<idout.size();++ix) { if(abs(idout[ix])==ParticleID::pi0) ++npi; } return npi/2; } // output the information for the database void FivePionCurrent::dataBaseOutput(ofstream & output,bool header,bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::FivePionCurrent " << name() << " HwWeakCurrents.so\n"; output << "newdef " << name() << ":RhoMass " << _rhomass/MeV << "\n"; output << "newdef " << name() << ":A1Mass " << _a1mass/MeV << "\n"; output << "newdef " << name() << ":SigmaMass " << _sigmamass/MeV << "\n"; output << "newdef " << name() << ":OmegaMass " << _omegamass/MeV << "\n"; output << "newdef " << name() << ":RhoWidth " << _rhowidth/MeV << "\n"; output << "newdef " << name() << ":A1Width " << _a1width/MeV << "\n"; output << "newdef " << name() << ":SigmaWidth " << _sigmawidth/MeV << "\n"; output << "newdef " << name() << ":OmegaWidth " << _omegawidth/MeV << "\n"; output << "newdef " << name() << ":LocalParameters " << _localparameters << "\n"; output << "newdef " << name() << ":RhoOmega " << _rhoomega << "\n"; output << "newdef " << name() << ":C " << _c/GeV2 << "\n"; output << "newdef " << name() << ":C0 " << _c0 << "\n"; output << "newdef " << name() << ":fomegarhopi " <<_fomegarhopi*MeV << "\n"; output << "newdef " << name() << ":grhopipi " <<_grhopipi << "\n"; output << "newdef " << name() << ":garhopi " << _garhopi/GeV << "\n"; output << "newdef " << name() << ":faaf " <<_faaf/GeV << "\n"; output << "newdef " << name() << ":ffpipi " << _ffpipi/GeV << "\n"; WeakDecayCurrent::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";\n"; } vector<LorentzPolarizationVectorE> FivePionCurrent::current(const int imode,const int ichan, Energy & scale,const ParticleVector & decay, DecayIntegrator::MEOption meopt) const { useMe(); if(meopt==DecayIntegrator::Terminate) { for(unsigned int ix=0;ix<5;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return vector<LorentzPolarizationVectorE>(1,LorentzPolarizationVectorE()); } LorentzVector<complex<InvEnergy2> > output; Lorentz5Momentum q1(decay[0]->momentum()); Lorentz5Momentum q2(decay[1]->momentum()); Lorentz5Momentum q3(decay[2]->momentum()); Lorentz5Momentum q4(decay[3]->momentum()); Lorentz5Momentum q5(decay[4]->momentum()); // total momentum Lorentz5Momentum Q(q1+q2+q3+q4+q5); Q.rescaleMass(); scale=Q.mass(); // decide which decay mode if(imode==0) { if(ichan<0) { output= a1SigmaCurrent(0,Q,q1,q2,q3,q4,q5)+ a1SigmaCurrent(0,Q,q5,q2,q3,q4,q1)+ a1SigmaCurrent(0,Q,q1,q5,q3,q4,q2)+ a1SigmaCurrent(0,Q,q1,q2,q4,q3,q5)+ a1SigmaCurrent(0,Q,q5,q2,q4,q3,q1)+ a1SigmaCurrent(0,Q,q1,q5,q4,q3,q2); } else if(ichan==0 ) output=a1SigmaCurrent(2,Q,q1,q2,q3,q4,q5); else if(ichan==1 ) output=a1SigmaCurrent(1,Q,q1,q2,q3,q4,q5); else if(ichan==2 ) output=a1SigmaCurrent(2,Q,q5,q2,q3,q4,q1); else if(ichan==3 ) output=a1SigmaCurrent(1,Q,q5,q2,q3,q4,q1); else if(ichan==4 ) output=a1SigmaCurrent(2,Q,q1,q5,q3,q4,q2); else if(ichan==5 ) output=a1SigmaCurrent(1,Q,q1,q5,q3,q4,q2); else if(ichan==6 ) output=a1SigmaCurrent(2,Q,q1,q2,q4,q3,q5); else if(ichan==7 ) output=a1SigmaCurrent(1,Q,q1,q2,q4,q3,q5); else if(ichan==8 ) output=a1SigmaCurrent(2,Q,q5,q2,q4,q3,q1); else if(ichan==9 ) output=a1SigmaCurrent(1,Q,q5,q2,q4,q3,q1); else if(ichan==10) output=a1SigmaCurrent(2,Q,q1,q5,q4,q3,q2); else if(ichan==11) output=a1SigmaCurrent(1,Q,q1,q5,q4,q3,q2); // identical particle symmetry factor output/=sqrt(12.); } else if(imode==1) { if(ichan<0) { output= rhoOmegaCurrent(0,Q,q1,q2,q3,q4,q5) +rhoOmegaCurrent(0,Q,q1,q4,q3,q2,q5) +rhoOmegaCurrent(0,Q,q1,q2,q5,q4,q3) +rhoOmegaCurrent(0,Q,q1,q4,q5,q2,q3) +a1SigmaCurrent(0,Q,q2,q4,q1,q3,q5) +a1SigmaCurrent(0,Q,q3,q5,q2,q1,q4) +a1SigmaCurrent(0,Q,q3,q5,q4,q1,q2); } else if(ichan==0 ) output=rhoOmegaCurrent(3,Q,q1,q2,q3,q4,q5); else if(ichan==1 ) output=rhoOmegaCurrent(2,Q,q1,q2,q3,q4,q5); else if(ichan==2 ) output=rhoOmegaCurrent(1,Q,q1,q2,q3,q4,q5); else if(ichan==3 ) output=rhoOmegaCurrent(3,Q,q1,q4,q3,q2,q5); else if(ichan==4 ) output=rhoOmegaCurrent(2,Q,q1,q4,q3,q2,q5); else if(ichan==5 ) output=rhoOmegaCurrent(1,Q,q1,q4,q3,q2,q5); else if(ichan==6 ) output=rhoOmegaCurrent(3,Q,q1,q2,q5,q4,q3); else if(ichan==7 ) output=rhoOmegaCurrent(2,Q,q1,q2,q5,q4,q3); else if(ichan==8 ) output=rhoOmegaCurrent(1,Q,q1,q2,q5,q4,q3); else if(ichan==9 ) output=rhoOmegaCurrent(3,Q,q1,q4,q5,q2,q3); else if(ichan==10) output=rhoOmegaCurrent(2,Q,q1,q4,q5,q2,q3); else if(ichan==11) output=rhoOmegaCurrent(1,Q,q1,q4,q5,q2,q3); else if(ichan==12) output=a1SigmaCurrent(2,Q,q3,q5,q4,q1,q2); else if(ichan==13) output=a1SigmaCurrent(1,Q,q3,q5,q4,q1,q2); else if(ichan==14) output=a1SigmaCurrent(2,Q,q3,q5,q2,q1,q4); else if(ichan==15) output=a1SigmaCurrent(1,Q,q3,q5,q2,q1,q4); else if(ichan==16) output=a1SigmaCurrent(2,Q,q2,q4,q1,q3,q5); else if(ichan==17) output=a1SigmaCurrent(1,Q,q2,q4,q1,q3,q5); // identical particle symmetry factor output/=2.; } else if(imode==2) { if(ichan<0) { output= a1SigmaCurrent(0,Q,q1,q2,q3,q4,q5)+ a1SigmaCurrent(0,Q,q5,q2,q3,q4,q1)+ a1SigmaCurrent(0,Q,q2,q4,q3,q1,q5)+ a1SigmaCurrent(0,Q,q1,q4,q3,q2,q5)+ a1SigmaCurrent(0,Q,q1,q5,q3,q4,q2)+ a1SigmaCurrent(0,Q,q4,q5,q3,q1,q2); } else if(ichan==0 ) output=a1SigmaCurrent(1,Q,q1,q2,q3,q4,q5); else if(ichan==1 ) output=a1SigmaCurrent(2,Q,q1,q2,q3,q4,q5); else if(ichan==2 ) output=a1SigmaCurrent(1,Q,q5,q2,q3,q4,q1); else if(ichan==3 ) output=a1SigmaCurrent(2,Q,q5,q2,q3,q4,q1); else if(ichan==4 ) output=a1SigmaCurrent(2,Q,q2,q4,q3,q1,q5); else if(ichan==5 ) output=a1SigmaCurrent(1,Q,q2,q4,q3,q1,q5); else if(ichan==6 ) output=a1SigmaCurrent(1,Q,q1,q4,q3,q2,q5); else if(ichan==7 ) output=a1SigmaCurrent(2,Q,q1,q4,q3,q2,q5); else if(ichan==8 ) output=a1SigmaCurrent(1,Q,q1,q5,q3,q4,q2); else if(ichan==9 ) output=a1SigmaCurrent(2,Q,q1,q5,q3,q4,q2); else if(ichan==10) output=a1SigmaCurrent(2,Q,q4,q5,q3,q1,q2); else if(ichan==11) output=a1SigmaCurrent(1,Q,q4,q5,q3,q1,q2); // identical particle symmetry factor output/=sqrt(24.); } else { throw DecayIntegratorError() << "Unknown decay mode in the " << "FivePionCurrent::" << "hadronCurrent()" << Exception::abortnow; } // normalise and return the current return vector<LorentzPolarizationVectorE>(1, output * pow<3,1>(scale)); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/LeptonNeutrinoCurrent.cc�������������������������������������0000644�0001750�0001750�00000012464�11754474774�025307� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // LeptonNeutrinoCurrent.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the LeptonNeutrinoCurrent class. // #include "LeptonNeutrinoCurrent.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" namespace Herwig { using namespace ThePEG; using Helicity::SpinorWaveFunction; using Helicity::SpinorBarWaveFunction; using ThePEG::Helicity::LorentzPolarizationVector; using Helicity::Direction; using Helicity::incoming; using Helicity::outgoing; NoPIOClassDescription<LeptonNeutrinoCurrent> LeptonNeutrinoCurrent::initLeptonNeutrinoCurrent; // Definition of the static class description member. void LeptonNeutrinoCurrent::Init() { static ClassDocumentation<LeptonNeutrinoCurrent> documentation ("The LeptonNeutrinoCurrent class is designed to handle the " "leptonic decay of the weak current."); } // complete the construction of the decay mode for integration bool LeptonNeutrinoCurrent::createMode(int icharge, unsigned int imode_in, DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int, DecayPhaseSpaceChannelPtr phase,Energy upp) { int imode = imode_in; // make sure the the decays are kinematically allowed Energy min = getParticleData(11+2*imode)->mass()+getParticleData(12+2*imode)->mass(); if(min>=upp) return false; DecayPhaseSpaceChannelPtr newchannel; // set the resonances tPDPtr res; if(icharge==3) res=getParticleData(ParticleID::Wplus); else if(icharge==-3) res=getParticleData(ParticleID::Wminus); else return false; // create the channel newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(res,0,0.0,iloc,iloc+1); mode->addChannel(newchannel); // return if successful return true; } // the particles produced by the current tPDVector LeptonNeutrinoCurrent::particles(int icharge, unsigned int imode_in, int,int) { int imode = imode_in; tPDVector output(2); if(icharge==3) { int id = -11-2*imode; output[0]=getParticleData(id); output[1]=getParticleData(12+2*imode); } else if(icharge==-3) { output[0]=getParticleData(11+2*imode); int id = -12-2*imode; output[1]=getParticleData(id); } return output; } // hadronic current vector<LorentzPolarizationVectorE> LeptonNeutrinoCurrent::current(const int, const int, Energy & scale,const ParticleVector & outpart, DecayIntegrator::MEOption meopt) const { Lorentz5Momentum q(outpart[0]->momentum()+outpart[1]->momentum());q.rescaleMass(); scale=q.mass(); // storage for the currents vector<LorentzPolarizationVectorE> temp(4); vector<LorentzSpinor<SqrtEnergy> > wave; vector<LorentzSpinorBar<SqrtEnergy> > wavebar; // their wavefunctions if(outpart[0]->id()>0) { SpinorWaveFunction :: calculateWaveFunctions(wave ,outpart[1],outgoing); SpinorBarWaveFunction:: calculateWaveFunctions(wavebar,outpart[0],outgoing); } else { SpinorWaveFunction :: calculateWaveFunctions(wave ,outpart[0],outgoing); SpinorBarWaveFunction:: calculateWaveFunctions(wavebar,outpart[1],outgoing); } if(meopt==DecayIntegrator::Terminate) { if(outpart[0]->id()>0) { SpinorWaveFunction ::constructSpinInfo(wave ,outpart[1],outgoing,true); SpinorBarWaveFunction::constructSpinInfo(wavebar,outpart[0],outgoing,true); } else { SpinorWaveFunction ::constructSpinInfo( wave,outpart[0],outgoing,true); SpinorBarWaveFunction::constructSpinInfo(wavebar,outpart[1],outgoing,true); } } // now compute the currents int iloc(0); unsigned int ix,iy; for(ix=0;ix<2;++ix) { for(iy=0;iy<2;++iy) { iloc = outpart[0]->id()>0 ? 2*iy+ix : 2*ix+iy; temp[iloc]=2.*wave[ix].leftCurrent(wavebar[iy]); } } // return the answer return temp; } bool LeptonNeutrinoCurrent::accept(vector<int> id) { bool allowed(false); if(id.size()!=2) return false; if(abs(id[0])%2==0) { if((id[0]> 10&&id[0]< 18&&id[1]==-id[0]+1)|| (id[0]<-10&&id[0]>-18&&id[1]==-id[0]-1)) allowed=true; } else { if((id[1]> 10&&id[1]< 18&&id[0]==-id[1]+1)|| (id[1]<-10&&id[1]>-18&&id[0]==-id[1]-1)) allowed=true; } return allowed; } // the decay mode unsigned int LeptonNeutrinoCurrent::decayMode(vector<int> idout) { unsigned int imode=((abs(idout[0])+abs(idout[0])%2)-12)/2; return imode; } // output the information for the database void LeptonNeutrinoCurrent::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::LeptonNeutrinoCurrent " << name() << " HwWeakCurrents.so\n"; WeakDecayCurrent::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/TwoMesonRhoKStarCurrent.h������������������������������������0000644�0001750�0001750�00000032026�11754474774�025351� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TwoMesonRhoKStarCurrent.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TwoMesonRhoKStarCurrent_H #define HERWIG_TwoMesonRhoKStarCurrent_H // This is the declaration of the TwoMesonRhoKStarCurrent class. #include "WeakDecayCurrent.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/StandardModel/StandardModelBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * Weak current for the production of two mesons via the \f$\rho\f$ or \f$K^*\f$ * resonances. * These currents are taken from tau decays. * * The current takes the form * * \f[J^\mu = \frac{\sqrt{2}}{\sum_k\alpha_k}\left((p_1-p_2)^\mu-\frac{(p_1-p_2)\cdot q}{q^2}q^\mu))\right) * \sum_k \alpha_k B_{R_k}(q^2) * \f] * where * - \f$p_{1,2}\f$ are the momenta of the outgoing mesons, * - \f$q=p_1+p_2\f$, * - \f$B_{R_k}(q^2)\f$ is the Breit-Wigner distribution for the intermediate vector * meson \f$R_k\f$. * - \f$\alpha_k\f$ is the weight for the resonance. * * The Breit-Wigner term is summed over the \f$\rho\f$ or \f$K^*\f$ resonances that * can contribute to a given decay. * * The models of either Kuhn and Santamaria (Z. Phys. C48, 445 (1990)) * or Gounaris and Sakurai Phys. Rev. Lett. 21, 244 (1968) are supported for the * shape of the Breit-Wigner distribution. The mixing parameters * are taken from Phys.Rev.D61:112002,2000 (CLEO) for the decay \f$\pi^\pm\pi^0\f$ and * the CLEO version of TAUOLA for the \f$K\pi\f$ decays. * * @see WeakDecayCurrent. * * \author Peter Richardson * */ class TwoMesonRhoKStarCurrent: public WeakDecayCurrent { public: /** * Default constructor */ TwoMesonRhoKStarCurrent(); /** @name Methods for the construction of the phase space integrator. */ //@{ /** * Complete the construction of the decay mode for integration. * This version just adds the intermediate resonances, two outgoing mesons * and photon. * @param icharge The total charge of the outgoing particles in the current. * @param imode The mode in the current being asked for. * @param mode The phase space mode for the integration * @param iloc The location of the of the first particle from the current in * the list of outgoing particles. * @param ires The location of the first intermediate for the current. * @param phase The prototype phase space channel for the integration. * @param upp The maximum possible mass the particles in the current are * allowed to have. * @return Whether the current was sucessfully constructed. */ virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp); /** * The particles produced by the current. This just returns the two pseudoscalar * mesons and the photon. * @param icharge The total charge of the particles in the current. * @param imode The mode for which the particles are being requested * @param iq The PDG code for the quark * @param ia The PDG code for the antiquark * @return The external particles for the current. */ virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); //@} /** * Hadronic current. This version returns the hadronic current described above. * @param imode The mode * @param ichan The phase-space channel the current is needed for * @param scale The invariant mass of the particles in the current. * @param decay The decay products * @param meopt Option for the calculation of the matrix element * @return The current. */ virtual vector<LorentzPolarizationVectorE> current(const int imode, const int ichan,Energy & scale, const ParticleVector & decay, DecayIntegrator::MEOption meopt) const; /** * Accept the decay. Checks the particles are the allowed mode. * @param id The id's of the particles in the current. * @return Can this current have the external particles specified. */ virtual bool accept(vector<int> id); /** * Return the decay mode number for a given set of particles in the current. * @param id The id's of the particles in the current. * @return The number of the mode */ virtual unsigned int decayMode(vector<int> id); /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<TwoMesonRhoKStarCurrent> initTwoMesonRhoKStarCurrent; /** * Private and non-existent assignment operator. */ TwoMesonRhoKStarCurrent & operator=(const TwoMesonRhoKStarCurrent &); private: /** @name Breit-Wigner functions */ //@{ /** * \f$p\f$-wave breit wigner for form-factors * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @param imodel Which of the two models for the Breit-Wigner shape to use. * @param itype Whether this is a \f$\rho\f$ or \f$K^*\f$ resonance. * @param ires Which of the different multiplets to use. * @return The value of the Breit-Wigner distribution. */ Complex BreitWigner(Energy2 q2, unsigned int imodel,unsigned int itype, unsigned int ires) const { // workout the index of the resonace unsigned int iy(3*itype+ires); // off shell mass Energy q(sqrt(q2)); // and the running width Energy pq(pcm(iy,q)); double ratio(pow<3,1>(pq/_mom[iy])); Energy gamrun(_width[iy]*_mass[iy]*ratio/q); // work out the denominator complex<Energy2> denom, numer; Complex ii(0.,1.); if(imodel==0) { denom=q2-_mass2[iy]+ii*_mass[iy]*gamrun; numer=-_mass2[iy]; } else if(imodel==1) { denom = q2 - _mass2[iy] + ii*_mass[iy]*gamrun - ( sqr(pq) * (GSModelhFunction(iy,q)-_hm2[iy]) - sqr(_mom[iy]) * (q2-_mass2[iy]) * _dhdq2[iy]); numer = -(_mass2[iy]+_dparam[iy]*_mass[iy]*_width[iy]); } else assert(false); // return the answer return numer/denom; } /** * The \f$d\f$ parameter in the GS model of the propagator. * @param ires Which of the \f$\rho\f$ or \f$K^*\f$ resonances to use * @return The \f$d\f$ parameter */ double GSModelDParameter(const unsigned int ires)const { Energy mpi(0.5*(_massa[ires]+_massb[ires])); using Constants::pi; return 3.*mpi*mpi/pi/sqr(_mom[ires])*log(0.5*(_mass[ires]+2.*_mom[ires])/mpi) +0.5*_mass[ires]/pi/_mom[ires]-mpi*mpi*_mass[ires]/pi/pow<3,1>(_mom[ires]); } /** * The \f$\frac{dh}{dq^2}\f$ function in the GS model for the propagator * evaluated at \f$q^2=m^2\f$. * @param ires Which of the \f$\rho\f$ or \f$K^*\f$ resonances to use * @return The value of \f$\frac{dh}{dq^2}\f$ at \f$q^2=m^2\f$. */ InvEnergy2 GSModeldhdq2Parameter(const unsigned int ires)const { Energy mpi = 0.5 * (_massa[ires] + _massb[ires]); return _width[ires] / Constants::pi / pow<3,1>(_mom[ires]) * (sqr(mpi) / _mass[ires] / _mom[ires] * log(0.5 * (_mass[ires] + 2.*_mom[ires])/mpi) + 0.5); } /** * The \f$h\f$ function in the GS model. * @param ires Which of the \f$\rho\f$ or \f$K^*\f$ resonances to use * @param q The scale \f$q\f$. * @return The value of the \f$h\f$ function at scale \f$q\f$. */ double GSModelhFunction(const unsigned int ires, const Energy q) const { Energy pq(pcm(ires,q)); return _width[ires]*_mass2[ires]/pow<3,1>(_mom[ires]) *2.*pq/Constants::pi/q*log((q+2.*pq)/(_massa[ires]+_massb[ires])); } /** * The momentum of the decay products for the running width. * @param ires Which of the \f$\rho\f$ or \f$K^*\f$ resonances to use * @param q The scale \f$q\f$. * @return The momenta of the decay products in the rest frame of the * intermediate resonance. */ Energy pcm(const unsigned int ires, const Energy q) const { Energy2 q2(q*q); if(q <= _massa[ires]+_massb[ires]) return ZERO; return 0.5/q*sqrt((q2-sqr(_massa[ires]+_massb[ires]))* (q2-sqr(_massa[ires]-_massb[ires]))); } //@} private: /** * Weights for the different \f$\rho\f$ resonances in the current, \f$\alpha_k\f$. */ //@{ /** * The Complex weight used in the calculation */ vector<Complex> _piwgt; /** * The magnitude for input */ vector<double> _pimag; /** * The phase for input */ vector<double> _piphase; //@} /** * Weights for the different \f$K^*\f$ resonances in the current, \f$\alpha_k\f$. */ //@{ /** * The Complex weight used in the calculation */ vector<Complex> _kwgt; /** * The magnitude for input */ vector<double> _kmag; /** * The phase for input */ vector<double> _kphase; //@} /** * Model to use for the \f$\rho\f$ propagator. */ int _pimodel; /** * Model to use for the \f$K^*\f$ propagator. */ int _kmodel; /** * Option not to use the physical masses and widths for the \f$\rho\f$. */ bool _rhoparameters; /** * The masses of the \f$\rho\f$ resonances. */ vector<Energy> _rhomasses; /** * The widths of the \f$\rho\f$ resonances. */ vector<Energy> _rhowidths; /** * Option not to use the physical masses and widths for the \f$K^*\f$. */ bool _kstarparameters; /** * The masses of the \f$K^*\f$ resonances. */ vector<Energy> _kstarmasses; /** * The masses of the \f$K^*\f$ resonances. */ vector<Energy> _kstarwidths; /** * Parameters for the Breit-Wigners */ //@{ /** * The masses of the resonances */ vector<Energy> _mass; /** * The widths of the resonances */ vector<Energy> _width; /** * squares of the masses */ vector<Energy2> _mass2; /** * product of the mass and the width */ vector<Energy2> _massw; /** * Masses of the decay products for the momentum calculation. */ vector<Energy> _massa,_massb; /** * The decay for the on-shell mass momentum */ vector<Energy> _mom; /** * The function \f$\frac{dh}{dq^2}\f$ at \f$q^2=m^2\f$ for the GS form of the * Breit-Wigner */ vector<InvEnergy2> _dhdq2; /** * The function \f$h\f$ at \f$q^2=m^2\f$ for the GS form of the * Breit-Wigner */ vector<double> _hm2; /** * The \f$d\f$ parameter for the GS form of the * Breit-Wigner */ vector<double> _dparam; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of TwoMesonRhoKStarCurrent. */ template <> struct BaseClassTrait<Herwig::TwoMesonRhoKStarCurrent,1> { /** Typedef of the base class of VectorMesonCurrent. */ typedef Herwig::WeakDecayCurrent NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::TwoMesonRhoKStarCurrent> : public ClassTraitsBase<Herwig::TwoMesonRhoKStarCurrent> { /** Return the class name. */ static string className() { return "Herwig::TwoMesonRhoKStarCurrent"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwWeakCurrents.so"; } }; /** @endcond */ } #endif /* HERWIG_TwoMesonRhoKStarCurrent_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/WeakDecayCurrent.cc������������������������������������������0000644�0001750�0001750�00000004760�11754474774�024157� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // WeakDecayCurrent.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the WeakDecayCurrent class. // #include "WeakDecayCurrent.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; void WeakDecayCurrent::persistentOutput(PersistentOStream & os) const { os << _quark << _antiquark << _numbermodes; } void WeakDecayCurrent::persistentInput(PersistentIStream & is, int) { is >> _quark >> _antiquark >> _numbermodes; } AbstractClassDescription<WeakDecayCurrent> WeakDecayCurrent::initWeakDecayCurrent; // Definition of the static class description member. void WeakDecayCurrent::Init() { static ClassDocumentation<WeakDecayCurrent> documentation ("The WeakDecayCurrent class is the basse class for the" " implementation of hadronic currents in weak decays."); static ParVector<WeakDecayCurrent,int> interfaceQuark ("Quark", "The PDG code for the quark.", &WeakDecayCurrent::_quark, 0, 0, 0, 0, 16, false, false, true); static ParVector<WeakDecayCurrent,int> interfaceAntiQuark ("AntiQuark", "The PDG code for the antiquark.", &WeakDecayCurrent::_antiquark, 0, 0, 0, -16, 0, false, false, true); } void WeakDecayCurrent::dataBaseOutput(ofstream & output,bool header,bool create) const { if(header) { output << "update decayers set parameters=\""; } if(create) { output << "create Herwig::WeakDecayCurrent " << name() << " \n"; } for(unsigned int ix=0;ix<_quark.size();++ix) { if(ix<_numbermodes) { output << "newdef " << name() << ":Quark " << ix << " " << _quark[ix] << endl; output << "newdef " << name() << ":AntiQuark " << ix << " " << _antiquark[ix] << endl; } else { output << "insert " << name() << ":Quark " << ix << " " << _quark[ix] << endl; output << "insert " << name() << ":AntiQuark " << ix << " " << _antiquark[ix] << endl; } } if(header) { output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } } ����������������herwig++-2.6.0.orig/Decay/WeakCurrents/KaonThreeMesonCurrent.h��������������������������������������0000644�0001750�0001750�00000047442�11754474774�025052� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // KaonThreeMesonCurrent.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_KaonThreeMesonCurrent_H #define HERWIG_KaonThreeMesonCurrent_H // // This is the declaration of the KaonThreeMesonCurrent class. // #include "ThreeMesonCurrentBase.h" namespace Herwig { using namespace ThePEG; /** * The KaonThreeMesonCurrent class implements the model of M. Finkemeier * and E.~Mirkes, Z. Phys. C 69 (1996) 243 [arXiv:hep-ph/9503474], * for the weak current for three mesons where at least one of the mesons is * a kaon. * * @see \ref KaonThreeMesonCurrentInterfaces "The interfaces" * defined for KaonThreeMesonCurrent. */ class KaonThreeMesonCurrent: public ThreeMesonCurrentBase { public: /** * The default constructor. */ KaonThreeMesonCurrent(); /** @name Methods for the construction of the phase space integrator. */ //@{ /** * Complete the construction of the decay mode for integration. * This version addes the mesons for the current * @param icharge The total charge of the outgoing particles in the current. * @param imode The mode in the current being asked for. * @param mode The phase space mode for the integration * @param iloc The location of the of the first particle from the current in * the list of outgoing particles. * @param ires The location of the first intermediate for the current. * @param phase The prototype phase space channel for the integration. * @param upp The maximum possible mass the particles in the current are * allowed to have. * @return Whether the current was sucessfully constructed. */ virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp); //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; /** * the matrix element for the \f$a_1\f$ decay to calculate the running width * @param imode The mode for which the matrix element is needed. * @param q2 The mass of the decaying off-shell \f$a_1\f$, \f$q^2\f$. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The matrix element squared summed over spins. */ double threeBodyMatrixElement(const int imode, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const; protected: /** * Can the current handle a particular set of mesons. * As this current includes all the allowed modes this is always true. */ virtual bool acceptMode(int) const; /** * Calculate the form factor for the current. Implements the form factors * described above. * @param ichan The phase space channel * @param imode The mode * @param q2 The scale \f$q^2\f$ for the current. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. */ virtual FormFactors calculateFormFactors(const int ichan,const int imode, Energy2 q2,Energy2 s1,Energy2 s2,Energy2 s3) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); /** * Check sanity of the object during the setup phase. */ virtual void doupdate(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<KaonThreeMesonCurrent> initKaonThreeMesonCurrent; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ KaonThreeMesonCurrent & operator=(const KaonThreeMesonCurrent &); private: /** * The \f$\rho\f$ lineshape for the axial-vector terms * @param q2 The scale \f$q^2\f$ for the lineshape * @param ires Which \f$\rho\f$ multiplet */ Complex Trho1(Energy2 q2,int ires) const { Complex output(0.); double norm(0.); for(unsigned int ix=0,N=_rho1wgts.size();ix<N;++ix) norm+=_rho1wgts[ix]; if(ires<0) { for(unsigned int ix=0,N=_rho1wgts.size();ix<N;++ix) { output+=_rho1wgts[ix]*BWrho1(q2,ix); } } else { unsigned int temp(ires); if(temp<_rho1wgts.size()) output=_rho1wgts[temp]*BWrho1(q2,temp); } return output/norm; } /** * The \f$\rho\f$ lineshape for the vector terms * @param q2 The scale \f$q^2\f$ for the lineshape * @param ires Which \f$\rho\f$ multiplet */ Complex Trho2(Energy2 q2,int ires) const { Complex output(0.); double norm(0.); for(unsigned int ix=0,N=_rho2wgts.size();ix<N;++ix) norm+=_rho2wgts[ix]; if(ires<0) { for(unsigned int ix=0,N=_rho2wgts.size();ix<N;++ix) { output+=_rho2wgts[ix]*BWrho2(q2,ix); } } else { unsigned int temp(ires); if(temp<_rho2wgts.size()) output=_rho2wgts[temp]*BWrho2(q2,temp); } return output/norm; } /** * The \f$K^*\f$ lineshape for the axial-vector terms * @param q2 The scale \f$q^2\f$ for the lineshape * @param ires Which \f$K^*\f$ multiplet */ Complex TKstar1(Energy2 q2,int ires) const { Complex output(0.); double norm(0.); for(unsigned int ix=0,N=_kstar1wgts.size();ix<N;++ix) norm+=_kstar1wgts[ix]; if(ires<0) { for(unsigned int ix=0,N=_kstar1wgts.size();ix<N;++ix) { output+=_kstar1wgts[ix]*BWKstar1(q2,ix); } } else { unsigned int temp(ires); if(temp<_kstar1wgts.size()) output=_kstar1wgts[temp]*BWKstar1(q2,temp); } return output/norm; } /** * The \f$\rho\f$ lineshape for the vector terms * @param q2 The scale \f$q^2\f$ for the lineshape * @param ires Which \f$K^*\f$ multiplet */ Complex TKstar2(Energy2 q2,int ires) const { Complex output(0.); double norm(0.); for(unsigned int ix=0,N=_kstar2wgts.size();ix<N;++ix) norm+=_kstar2wgts[ix]; if(ires<0) { for(unsigned int ix=0,N=_kstar2wgts.size();ix<N;++ix) { output+=_kstar2wgts[ix]*BWKstar2(q2,ix); } } else { unsigned int temp(ires); if(temp<_kstar2wgts.size()) output=_kstar2wgts[temp]*BWKstar2(q2,temp); } return output/norm; } /** * The \f$\rho\f$ Breit-Wigner for the axial-vector terms * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @param ires Which \f$\rho\f$ multiplet */ Complex BWrho1(Energy2 q2, unsigned int ires) const { if(ires>=_rho1mass.size()) return 0.; Energy mass = _rho1mass [ires]; Energy width = _rho1width[ires]; Energy q=sqrt(q2); Energy pcm0 = Kinematics::pstarTwoBodyDecay(mass,_mpi,_mpi); Energy pcm = q<=2.*_mpi ? ZERO : Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi); double ratio = Math::powi(pcm/pcm0, 3); Energy gam(width*mass*ratio/q); return sqr(mass)/(sqr(mass)-q2-Complex(0.,1.)*mass*gam); } /** * The \f$\rho\f$ Breit-Wigner for the vector terms * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @param ires Which \f$\rho\f$ multiplet */ Complex BWrho2(Energy2 q2, unsigned int ires) const { if(ires>=_rho2mass.size()) return 0.; Energy mass = _rho2mass [ires]; Energy width = _rho2width[ires]; Energy q=sqrt(q2); Energy pcm0 = Kinematics::pstarTwoBodyDecay(mass,_mpi,_mpi); Energy pcm = q<=2.*_mpi ? ZERO : Kinematics::pstarTwoBodyDecay(q,_mpi,_mpi); double ratio(pcm/pcm0);ratio*=ratio*ratio; Energy gam(width*mass*ratio/q); return sqr(mass)/(sqr(mass)-q2-Complex(0.,1.)*mass*gam); } /** * The \f$K^*\f$ Breit-Wigner for the axial-vector terms * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @param ires Which \f$K^*\f$ multiplet */ Complex BWKstar1(Energy2 q2, unsigned int ires) const { if(ires>=_kstar1mass.size()) return 0.; Energy mass = _kstar1mass [ires]; Energy width = _kstar1width[ires]; Energy q=sqrt(q2); Energy pcm0 = Kinematics::pstarTwoBodyDecay(mass,_mK,_mpi); Energy pcm = q<=_mpi+_mK ? ZERO : Kinematics::pstarTwoBodyDecay(q,_mK,_mpi); double ratio(pcm/pcm0);ratio*=ratio*ratio; Energy gam(width*mass*ratio/q); return sqr(mass)/(sqr(mass)-q2-Complex(0.,1.)*mass*gam); } /** * The \f$K^*\f$ Breit-Wigner for the vector terms * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @param ires Which \f$K^*\f$ multiplet */ Complex BWKstar2(Energy2 q2, unsigned int ires) const { if(ires>=_kstar2mass.size()) return 0.; Energy mass = _kstar2mass [ires]; Energy width = _kstar2width[ires]; Energy q=sqrt(q2); Energy pcm0 = Kinematics::pstarTwoBodyDecay(mass,_mK,_mpi); Energy pcm = q<=_mpi+_mK ? ZERO : Kinematics::pstarTwoBodyDecay(q,_mK,_mpi); double ratio(pcm/pcm0);ratio*=ratio*ratio; Energy gam(width*mass*ratio/q); return sqr(mass)/(sqr(mass)-q2-Complex(0.,1.)*mass*gam); } /** * \f$a_1\f$ Breit-Wigner * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @return The Breit-Wigner */ Complex a1BreitWigner(Energy2 q2) const { Complex ii(0.,1.); Energy2 m2(_a1mass*_a1mass); Energy q(sqrt(q2)); return m2/(m2-q2-ii*q*a1Width(q2)); } /** * The \f$K_1\f$ line shape * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @param iopt Whether this is \f$K^*\pi\f$ or \f$\rho K\f$. * @param ires the resonance */ Complex TK1(Energy2 q2,unsigned int iopt,int ires) const { Complex denom(0),num(0.); if(iopt==0) { for(unsigned int ix=0;ix<_k1wgta.size();++ix) denom+=_k1wgta[ix]; if(ires==-1) { for(unsigned int ix=0;ix<_k1wgta.size();++ix) num+=_k1wgta[ix]*K1BreitWigner(q2,ix); } else { num+=_k1wgta[ires]*K1BreitWigner(q2,ires); } } else if(iopt==1) { for(unsigned int ix=0;ix<_k1wgtb.size();++ix) denom+=_k1wgtb[ix]; if(ires==-1) { for(unsigned int ix=0;ix<_k1wgtb.size();++ix) num+=_k1wgtb[ix]*K1BreitWigner(q2,ix); } else { num+=_k1wgtb[ires]*K1BreitWigner(q2,ires); } } else { return 0.; } return num/denom; } /** * The \f$K_1\f$ Breit-Wigner * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @param ires the resonance * @return The Breit-Wigner */ Complex K1BreitWigner(Energy2 q2,unsigned int ires) const { if(ires>=_k1mass.size()) return 0.; Energy2 m2=sqr(_k1mass[ires]),mg=_k1mass[ires]*_k1width[ires]; return (-m2+Complex(0.,1.)*mg)/(q2-m2+Complex(0.,1.)*mg); } /** * The \f$a_1\f$ running width * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @return The \f$a_1\f$ running width. */ Energy a1Width(Energy2 q2) const { if(!_a1opt) return _a1mass*_a1width*g(q2)/g(_a1mass*_a1mass)/sqrt(q2); else return (*_a1runinter)(q2); } /** * The \f$g(Q^2)\f$ function of Kuhn and Santamaria */ double g(Energy2 q2) const { double output; if(q2<9.*_mpi*_mpi) { output=0.; } else if(q2<sqr(_rho1mass[0]+_mpi)) { double diff=(q2-9.*_mpi*_mpi)/GeV2; output=4.1*sqr(diff)*diff*(1.-3.3*diff+5.8*sqr(diff)); } else { double ratio = q2/GeV2; output = ratio*(1.623+10.38/ratio-9.32/sqr(ratio)+0.65/(ratio*sqr(ratio))); } return output; } /** * Initialize the \f$a_1\f$ running width * @param iopt Initialization option (-1 full calculation, 0 set up the interpolation) */ void inita1Width(int iopt); /** * The \f$T_\omega\f$ function * @param q2 The scale * @param ires the resonance */ Complex Tomega(Energy2 q2, int ires) const { double denom=(1.+_epsomega); Complex num(0.); if(ires<0) num=OmegaPhiBreitWigner(q2,0)+_epsomega*OmegaPhiBreitWigner(q2,1); else if(ires==0) num=OmegaPhiBreitWigner(q2,0); else num=OmegaPhiBreitWigner(q2,1); return num/denom; } /** * The \f$\omega\f$ and \f$\phi\f$ Breit-Wigner * @param q2 The scale * @param ires the resonance */ Complex OmegaPhiBreitWigner(Energy2 q2, unsigned int ires) const { Energy2 m2,mg; if(ires==0) { m2=sqr(_omegamass); mg=_omegamass*_omegawidth; } else { m2=sqr(_phimass); mg=_phimass*_phiwidth; } return (-m2+Complex(0.,1.)*mg)/(q2-m2+Complex(0.,1.)*mg); } /** * The \f$\omega-\phi\f$ \f$K^*\f$ form-factor for the \f$F_5\f$ form-factor * @param s1 The scale \f$s_1\f$. * @param s2 The scale \f$s_2\f$. * @param ires Which resonances to use * @return The mixed Breit-Wigner */ Complex TOmegaKStar(Energy2 s1,Energy2 s2,int ires) const { Complex output; if(ires<0) output = _omegaKstarwgt*TKstar1(s1,-1)+Tomega(s2,-1); else if(ires%2==0) output = _omegaKstarwgt*TKstar1(s1,ires/2); else if(ires%2==1) output = Tomega(s2,ires/2); return output/(1.+_omegaKstarwgt); } private: /** * Parameters for the \f$\rho\f$ in the axial-vector terms */ //@{ /** * Weight for the different resonances */ vector<double> _rho1wgts; /** * Masses */ vector<Energy> _rho1mass; /** * Widths */ vector<Energy> _rho1width; //@} /** * Parameters for the \f$\rho\f$ in the vector terms */ //@{ /** * Weight for the different resonances */ vector<double> _rho2wgts; /** * Masses */ vector<Energy> _rho2mass; /** * Widths */ vector<Energy> _rho2width; //@} /** * Parameters for the \f$K^*\f$ in the axial-vector terms */ //@{ /** * Weight for the different resonances */ vector<double> _kstar1wgts; /** * Masses */ vector<Energy> _kstar1mass; /** * Widths */ vector<Energy> _kstar1width; //@} /** * Parameters for the \f$K^*\f$ in the vector terms */ //@{ /** * Weight for the different resonances */ vector<double> _kstar2wgts; /** * Masses */ vector<Energy> _kstar2mass; /** * Widths */ vector<Energy> _kstar2width; //@} /** * Parameters for the three meson resonances */ //@{ /** * The mass of the \f$a_1\f$ resonances. */ Energy _a1mass; /** * The width of the \f$a_1\f$ resonances. */ Energy _a1width; /** * The masses of the \f$aK1\f$ resonances. */ vector<Energy> _k1mass; /** * The widths of the \f$K_1\f$ resonances. */ vector<Energy> _k1width; /** * The weights for the different \f$K_1\f$ resonances for \f$K_1\to K^*\pi\f$ */ vector<double> _k1wgta; /** * The weights for the different \f$K_1\f$ resonaces for \f$K_1\to\rho K\f$. */ vector<double> _k1wgtb; /** * The \f$a_1\f$ width for the running \f$a_1\f$ width calculation. */ vector<Energy> _a1runwidth; /** * The \f$q^2\f$ for the running \f$a_1\f$ width calculation. */ vector<Energy2> _a1runq2; /** * The interpolator for the running \f$a_1\f$ width calculation. */ Interpolator<Energy,Energy2>::Ptr _a1runinter; //@} /** * Parameters for the \f$T_\omega\f$ function */ //@{ /** * Mixing parameter */ double _epsomega; /** * Mass of the \f$\omega\f$ */ Energy _omegamass; /** * Width of the \f$\omega\f$ */ Energy _omegawidth; /** * Mass of the \f$\phi\f$ */ Energy _phimass; /** * Width of the \f$\phi\f$ */ Energy _phiwidth; //@} /** * The relative weight of the \f$\omega-\phi\f$ and \f$K^*\f$ where needed. */ double _omegaKstarwgt; /** * The pion decay constant, \f$f_\pi\f$. */ Energy _fpi; /** * The pion mass */ Energy _mpi; /** * The kaon mass */ Energy _mK; /** * Initialization switches */ //@{ /** * Initialize the running \f$a_1\f$ width. */ bool _initializea1; /** * use local values of the \f$\rho\f$ masses and widths */ bool _rhoparameters; /** * use local values of the \f$K^*\f$ resonances masses and widths */ bool _kstarparameters; /** * Use local values of the \f$a_1\f$ parameters */ bool _a1parameters; /** * Use local values of the \f$K_1\f$ parameters */ bool _k1parameters; /** * Option for the \f$a_1\f$ width */ bool _a1opt; /** * Option for the \f$\omega-\phi\f$ parameters */ bool _omegaopt; //@} /** * The maximum mass of the hadronic system */ Energy _maxmass; /** * The maximum mass when the running width was calculated */ Energy _maxcalc; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of KaonThreeMesonCurrent. */ template <> struct BaseClassTrait<Herwig::KaonThreeMesonCurrent,1> { /** Typedef of the first base class of KaonThreeMesonCurrent. */ typedef Herwig::ThreeMesonCurrentBase NthBase; }; /** This template specialization informs ThePEG about the name of * the KaonThreeMesonCurrent class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::KaonThreeMesonCurrent> : public ClassTraitsBase<Herwig::KaonThreeMesonCurrent> { /** Return a platform-independent class name */ static string className() { return "Herwig::KaonThreeMesonCurrent"; } /** * The name of a file containing the dynamic library where the class * KaonThreeMesonCurrent is implemented. It may also include several, space-separated, * libraries if the class KaonThreeMesonCurrent depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwWeakCurrents.so"; } }; /** @endcond */ } #endif /* HERWIG_KaonThreeMesonCurrent_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/ThreePionCLEOCurrent.h���������������������������������������0000644�0001750�0001750�00000046552�11754474774�024531� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ThreePionCLEOCurrent.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef THEPEG_ThreePionCLEOCurrent_H #define THEPEG_ThreePionCLEOCurrent_H // // This is the declaration of the ThreePionCLEOCurrent class. // #include "ThreeMesonCurrentBase.h" #include "Herwig++/Utilities/Interpolator.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/StandardModel/StandardModelBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>ThreePionCLEOCurrent</code> class implements * the decay of the weak current to three pions * using the currents from CLEO Phys. Rev. D 61,012002. This is * a model including two \f$\rho\f$ mesons in both \f$s\f$ and \f$p\f$ wave, * a \f$\sigma\f$, the \f$f_2\f$ and \f$f_0(1370)\f$. * * The form factors for the \f$a_1^+ \to \pi^0 \pi^0 \pi^+\f$ mode are * * \f[F_1=\sum_k\left\{g^P_{\rho_k}B_{\rho_k}^P(s_1) * -\frac{g^D_{\rho_k}}3B_{\rho_k}^P(s_2) * \left((s_3-m_{\pi^+}^2)-(s_1-m_{\pi^0}^2)\right)\right\} * +\frac23\left(g_\sigma B^S_\sigma(s_3)+g_{f_0}B^S_{f_0}(s_3)\right) * +\frac{g_{f_2}}{18s_3}(q^2-m_{\pi^+}^2+s_3)(4m_{\pi^0}^2-s_3)B^D_{f_2}(s_3) *\f] * * \f[F_2=\sum_k\left\{-\frac13g^P_{\rho_k}B_{\rho_k}^P(s_2) * -g^D_{\rho_k}B_{\rho_k}^P(s_1) * \left((s_3-m_{\pi^+}^2)-(s_2-m_{\pi^0}^2)\right)\right\} * +\frac23\left(g_\sigma B^S_\sigma(s_3)+g_{f_0}B^S_{f_0}(s_3)\right) * +\frac1{18s_3}g_{f_2}(q^2-m_{\pi^+}^2+s_3)(4m_{\pi^0}^2-s_3)B^D_{f_2}(s_3) *\f] * * \f[F_3=\sum_k g^D_{\rho_k}\left\{ * -\frac13B_{\rho_k}^P(s_1)\left((s_3-m_{\pi^+}^2)-(s_2-m_{\pi^0}^2)\right) * +\frac13B_{\rho_k}^P(s_2)\left((s_3-m_{\pi^+}^2)-(s_1-m_{\pi^0}^2)\right)\right\} * -\frac{g_{f_2}}2(s_1-s_2)B^D_{f_2}(s_3)\f] * The form factors for \f$a_1^+\to \pi^+ \pi^+ \pi^-\f$ mode * * \f[F_1=\sum_k\left\{-g^P_{\rho_k}B_{\rho_k}^P(s_1) * -\frac{g^D_{\rho_k}}3B_{\rho_k}^P(s_2)(s_1-s_3)\right\} * -\frac23\left(g_\sigma B^S_\sigma(s_2)+g_{f_0} B^S_{f_0}(s_2)\right) * +g_{f_2}\left(\frac12(s_3-s_2)B^D_{f_2}(s_1) * -\frac1{18s_2}(4m_{\pi^+}^2-s_2)(q^2+s_2-m_{\pi^+}^2)B^D_{f_2}(s_2)\right)\f] * * \f[F_2=\sum_k\left\{-g^P_{\rho_k}B_{\rho_k}^P(s_2) * -\frac{g^D_{\rho_k}}3B_{\rho_k}^P(s_1)(s_2-s_3)\right\} * -\frac23\left(g_\sigma B^S_\sigma(s_1)+g_{f_0} B^S_{f_0}(s_1)\right) * +g_{f_2}\left(\frac12(s_3-s_1)B^D_{f_2}(s_2) * -\frac1{18s_1}(4m_{\pi^+}^2-s_1)(q^2+s_1-m_{\pi^+}^2)B^D_{f_2}(s_1)\right)\f] * * \f[F_3=\sum_k * -g^D_{\rho_k}\left( \frac13(s_2-s_3)B_{\rho_k}^P(s_1) * -\frac13(s_1-s_3)B_{\rho_k}^P(s_2)\right) * -\frac23\left(g_\sigma B^S_\sigma(s_1)+g_{f_0}B^S_{f_0}(s_1)\right) * +\frac23\left(g_\sigma B^S_\sigma(s_2)+g_{f_0}B^S_{f_0}(s_2)\right)\f] *\f[ * +g_{f_2}\left(-\frac1{18s_1}(4m_{\pi^+}^2-s_1)(q^2+s_1-m_{\pi^+}^2)B^D_{f_2}(s_1) * +\frac1{18s_2}(4m_{\pi^+}^2-s_2)(q^2+s_2-m_{\pi^+}^2)B^D_{f_2}(s_2)\right)\f] * * where * * - \f$g_{f_2}\f$ is the coupling of the \f$f_2\f$ to the \f$a_1\f$ * - \f$g_{f_0}\f$ is the coupling of the \f$f_0(1370)\f$ to the \f$a_1\f$ * - \f$g_{\sigma}\f$ is the coupling of the \f$\sigma\f$ to the \f$a_1\f$ * - \f$g^P_{\rho_k}\f$ is the \f$p\f$-wave coupling of the \f$\rho_k\f$ multiplet * to the \f$a_1\f$. * - \f$g^D_{\rho_k}\f$ is the \f$d\f$-wave coupling of the \f$\rho_k\f$ multiplet * to the \f$a_1\f$. * - \f$s_3=m^2_{12}\f$ is the invariant mass squared of particles 1 and 2. * - \f$s_2=m^2_{13}\f$ is the invariant mass squared of particles 1 and 3. * - \f$s_1=m^2_{23}\f$ is the invariant mass squared of particles 2 and 3. * * The Breit-Wigner factors are given by \f$B^L_Y(s_i) = \frac{m^2_Y}{m^2_Y-s_i+im_Y\Gamma^{Y,L}(s_i)}\f$ * where * \f$\Gamma^{Y,L}(s_i) = \Gamma^Y\left(\frac{p(s_i)}{p(M_Y}\right)^{2L+1}\frac{m_Y}{\sqrt{s_i}}\f$ * \f$m_Y\f$ and \f$\Gamma^Y\f$ are the mass and width of the particle \f$Y\f$ * respectively. \f$p(s_i)\f$ is the momentum of the outgoing pion in the * rest frame of the resonance \f$Y\f$. * * @see ThreeMesonCurrentBase * @see a1ThreePionCLEODecayer * @see ThreePionCLEOa1MatrixElement * */ class ThreePionCLEOCurrent: public ThreeMesonCurrentBase { /** * The matrix element for the running \f$a_1\f$ width is a friend to * keep some members private. */ friend class ThreePionCLEOa1MatrixElement; public: /** * Default constructor */ ThreePionCLEOCurrent(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** @name Methods for the construction of the phase space integrator. */ //@{ /** * Complete the construction of the decay mode for integration. * This version addes the mesons for the current * @param icharge The total charge of the outgoing particles in the current. * @param imode The mode in the current being asked for. * @param mode The phase space mode for the integration * @param iloc The location of the of the first particle from the current in * the list of outgoing particles. * @param ires The location of the first intermediate for the current. * @param phase The prototype phase space channel for the integration. * @param upp The maximum possible mass the particles in the current are * allowed to have. * @return Whether the current was sucessfully constructed. */ virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp); //@} /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; /** * the matrix element for the a1 decay to calculate the running width * @param iopt The mode * @param q2 The mass of the decaying off-shell \f$a_1\f$, \f$q^2\f$. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The matrix element squared summed over spins. */ double threeBodyMatrixElement(const int iopt, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const; protected: /** * Can the current handle a particular set of mesons. * As this current includes all the allowed modes this is always true. */ virtual bool acceptMode(int) const; /** * Calculate the form factor for the current. Implements the form factors * described above. * @param ichan The phase space channel * @param imode The mode * @param q2 The scale \f$q^2\f$ for the current. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. */ virtual FormFactors calculateFormFactors(const int ichan,const int imode,Energy2 q2, Energy2 s1,Energy2 s2,Energy2 s3) const; /** * Calculate CLEO form factors for the current. Implements the form factors * described above. * @param imode The mode * @param ichan The phase space channel * @param q2 The scale \f$q^2\f$ for the current. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param F1 The form factor \f$F_1\f$. * @param F2 The form factor \f$F_2\f$. * @param F3 The form factor \f$F_3\f$. */ void CLEOFormFactor(int imode,int ichan,Energy2 q2,Energy2 s1, Energy2 s2, Energy2 s3,Complex & F1, Complex & F2, Complex & F3) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); /** * Check sanity of the object during the setup phase. */ virtual void doupdate(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<ThreePionCLEOCurrent> initThreePionCLEOCurrent; /** * Private and non-existent assignment operator. */ ThreePionCLEOCurrent & operator=(const ThreePionCLEOCurrent &); private: /** * The \f$a_1\f$ running width * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @return The \f$a_1\f$ running width. */ Energy a1width(Energy2 q2) const; /** * Initialize the \f$a_1\f$ running width * @param iopt Initialization option (-1 full calculation, 0 set up the interpolation) */ void inita1Width(int iopt); /** * \f$a_1\f$ Breit-Wigner * @param q2 The scale \f$q^2\f$ for the Breit-Wigner * @return The Breit-Wigner */ Complex a1BreitWigner(Energy2 q2) const { Complex ii(0.,1.); Energy2 m2=_a1mass*_a1mass; Energy q=sqrt(q2); Complex output=m2/(m2-q2-ii*q*a1width(q2)); return output; } /** * The \f$\rho\f$ Breit-Wigner. * @param ires The \f$\rho\f$ multiplet. * @param q2 The scale, \f$q^2\f$. * @param icharge The charge of the \f$\rho\f$. * @return The Breit-Wigner */ Complex rhoBreitWigner(int ires, Energy2 q2,int icharge) const { Energy q=sqrt(q2); double ratio; Complex ii(0.,1.); if(icharge==0) ratio=Kinematics::pstarTwoBodyDecay(q,_mpic,_mpic)/_prhocc[ires]; else ratio=Kinematics::pstarTwoBodyDecay(q,_mpic,_mpi0)/_prhoc0[ires]; ratio*= ratio*ratio; Energy gamrun=_rhowidth[ires]*ratio*_rhomass[ires]/q; return _rhomass[ires]*_rhomass[ires]/(_rhomass[ires]*_rhomass[ires] -q2-ii*_rhomass[ires]*gamrun); } /** * Breit-Wigner for the \f$\sigma\f$. * @param q2 The scale, \f$q^2\f$. * @param icharge Whether the pions produced in the meson decay are * charged (0) or neutral (1) * @return The Breit-Wigner */ Complex sigmaBreitWigner(Energy2 q2,int icharge) const { Energy q=sqrt(q2); double ratio; Complex ii(0.,1.); if(icharge==0) ratio=Kinematics::pstarTwoBodyDecay(q,_mpic,_mpic)/_psigmacc; else ratio=Kinematics::pstarTwoBodyDecay(q,_mpi0,_mpi0)/_psigma00; Energy gamrun=_sigmawidth*ratio*_sigmamass/q; return _sigmamass*_sigmamass/(_sigmamass*_sigmamass-q2-ii*_sigmamass*gamrun); } /** * Breit-Wigner for the \f$f_0(1370)\f$. * @param q2 The scale, \f$q^2\f$. * @param icharge Whether the pions produced in the meson decay are * charged (0) or neutral (1) * @return The Breit-Wigner */ Complex f0BreitWigner(Energy2 q2,int icharge) const { Energy q=sqrt(q2); double ratio; Complex ii(0.,1.); if(icharge==0) ratio=Kinematics::pstarTwoBodyDecay(q,_mpic,_mpic)/_pf0cc; else ratio=Kinematics::pstarTwoBodyDecay(q,_mpi0,_mpi0)/_pf000; Energy gamrun=_f0width*ratio*_f0mass/q; return _f0mass*_f0mass/(_f0mass*_f0mass-q2-ii*_f0mass*gamrun); } /** * Breit-Wigner for the \f$f_2\f$. * @param q2 The scale, \f$q^2\f$. * @param icharge Whether the pions produced in the meson decay are * charged (0) or neutral (1) * @return The Breit-Wigner */ Complex f2BreitWigner(Energy2 q2,int icharge) const { Energy q=sqrt(q2); double ratio; Complex ii(0.,1.); if(icharge==0) ratio=Kinematics::pstarTwoBodyDecay(q,_mpic,_mpic)/_pf2cc; else ratio=Kinematics::pstarTwoBodyDecay(q,_mpi0,_mpi0)/_pf200; ratio*= ratio*ratio*ratio*ratio; Energy gamrun=_f2width*ratio*_f2mass/q; return _f2mass*_f2mass/(_f2mass*_f2mass-q2-ii*_f2mass*gamrun); } private: /** * Masses of the \f$\rho\f$ resonances. */ vector<Energy> _rhomass; /** * Widths of the \f$\rho\f$ resonances. */ vector<Energy> _rhowidth; /** * Momenta of the decay products for neutral \f$\rho\f$ decay. */ vector<Energy> _prhocc; /** * Momenta of the decay products for charged \f$\rho\f$ decay. */ vector<Energy> _prhoc0; /** * Mass of the \f$f_2\f$ resonance */ Energy _f2mass; /** * Width of the \f$f_2\f$ resonance */ Energy _f2width; /** * Momenta of the decay products for \f$f_2\f$ decay to charged pions. */ Energy _pf2cc; /** * Momenta of the decay products for \f$f_2\f$ decay to neutral pions. */ Energy _pf200; /** * Mass of the \f$f_0(1370)\f$ resonance */ Energy _f0mass; /** * Width of the \f$f_0(1370)\f$ resonance */ Energy _f0width; /** * Momenta of the decay products for \f$f_0(1370)\f$ decay to charged pions. */ Energy _pf0cc; /** * Momenta of the decay products for \f$f_0(1370)\f$ decay to neutral pions. */ Energy _pf000; /** * Mass of the \f$\sigma\f$ resonance */ Energy _sigmamass; /** * Width of the \f$\sigma\f$ resonance */ Energy _sigmawidth; /** * Momenta of the decay products for \f$\sigma\f$ decay to charged pions. */ Energy _psigmacc; /** * Momenta of the decay products for \f$\sigma\f$ decay to neutral pions. */ Energy _psigma00; /** * Mass of the neutral pion. */ Energy _mpi0; /** * Mass of the charged pion. */ Energy _mpic; /** * The \f$a_1\f$ mass */ Energy _a1mass; /** * The \f$a_1\f$ width */ Energy _a1width; /** * Mass of the \f$K^*\f$ resonace */ Energy _mKstar; /** * Mass of the \f$K\f$ resonace */ Energy _mK; /** * Coupling for the \f$KK^*\f$ term in the running width. */ double _gammk; /** * pion decay constant */ Energy _fpi; /** * The prefactor */ InvEnergy _fact; /** * Magnitude of the \f$p\f$-wave couplings of the rho resonance, \f$g^P_{\rho_k}\f$, * (\f$\beta_{1,2}\f$ in the CLEO paper.) */ vector<double> _rhomagP; /** * Phase of the \f$p\f$-wave couplings of the rho resonance, \f$g^P_{\rho_k}\f$, * (\f$\beta_{1,2}\f$ in the CLEO paper.) */ vector<double> _rhophaseP; /** *\f$p\f$-wave couplings of the rho resonance, \f$g^P_{\rho_k}\f$, * (\f$\beta_{1,2}\f$ in the CLEO paper.) */ vector<Complex> _rhocoupP; /** * Magnitude of the \f$d\f$-wave couplings of the rho resonance, \f$g^D_{\rho_k}\f$, * (\f$\beta_{3,4}\f$ in the CLEO paper.) */ vector<InvEnergy2> _rhomagD; /** * Phase of the \f$d\f$-wave couplings of the rho resonance, \f$g^D_{\rho_k}\f$, * (\f$\beta_{3,4}\f$ in the CLEO paper.) */ vector<double>_rhophaseD; /** * \f$d\f$-wave couplings of the rho resonance, \f$g^D_{\rho_k}\f$, * (\f$\beta_{3,4}\f$ in the CLEO paper.) */ vector<complex<InvEnergy2> > _rhocoupD; /** * Magntiude of the coupling of the \f$f_2\f$ resonance, \f$g_{f_2}\f$, * (\f$\beta_5\f$ in the CLEO paper.) */ InvEnergy2 _f2mag; /** * Phase of the coupling of the \f$f_2\f$ resonance, \f$g_{f_2}\f$, * (\f$\beta_5\f$ in the CLEO paper.) */ double _f2phase; /** * Coupling of the \f$f_2\f$ resonance, \f$g_{f_2}\f$, * (\f$\beta_5\f$ in the CLEO paper.) */ complex<InvEnergy2> _f2coup; /** * Magntiude of the coupling of the \f$f_0(1370)\f$ resonance, \f$g_{f_0}\f$, * (\f$\beta_6\f$ in the CLEO paper.) */ double _f0mag; /** * Phase of the coupling of the \f$f_0(1370)\f$ resonance, \f$g_{f_0}\f$, * (\f$\beta_6\f$ in the CLEO paper.) */ double _f0phase; /** * Coupling of the \f$f_0(1370)\f$ resonance, \f$g_{f_0}\f$, * (\f$\beta_6\f$ in the CLEO paper.) */ Complex _f0coup; /** * Magntiude of the coupling of the \f$\sigma\f$ resonance, \f$g_\sigma\f$, * (\f$\beta_7\f$ in the CLEO paper.) */ double _sigmamag; /** * Phase of the coupling of the \f$\sigma\f$ resonance, \f$g_\sigma\f$, * (\f$\beta_7\f$ in the CLEO paper.) */ double _sigmaphase; /** * Coupling of the \f$\sigma\f$ resonance, \f$g_\sigma\f$, * (\f$\beta_7\f$ in the CLEO paper.) */ Complex _sigmacoup; /** * use local values of the mass parameters */ bool _localparameters; /** * The \f$a_1\f$ width for the running \f$a_1\f$ width calculation. */ vector<Energy> _a1runwidth; /** * The \f$q^2\f$ for the running \f$a_1\f$ width calculation. */ vector<Energy2> _a1runq2; /** * The interpolator for the running \f$a_1\f$ width calculation. */ Interpolator<Energy,Energy2>::Ptr _a1runinter; /** * Initialize the running \f$a_1\f$ width. */ bool _initializea1; /** * Option for the \f$a_1\f$ width */ bool _a1opt; /** * The maximum mass of the hadronic system */ Energy _maxmass; /** * The maximum mass when the running width was calculated */ Energy _maxcalc; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ThreePionCLEOCurrent. */ template <> struct BaseClassTrait<Herwig::ThreePionCLEOCurrent,1> { /** Typedef of the base class of ThreePionCLEOCurrent. */ typedef Herwig::ThreeMesonCurrentBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ThreePionCLEOCurrent> : public ClassTraitsBase<Herwig::ThreePionCLEOCurrent> { /** Return the class name. */ static string className() { return "Herwig::ThreePionCLEOCurrent"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwWeakCurrents.so"; } }; /** @endcond */ } #endif /* THEPEG_ThreePionCLEOCurrent_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/FivePionCurrent.h��������������������������������������������0000644�0001750�0001750�00000030105�11754474774�023673� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FivePionCurrent.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FivePionCurrent_H #define HERWIG_FivePionCurrent_H // // This is the declaration of the FivePionCurrent class. // #include "WeakDecayCurrent.h" #include "ThePEG/Helicity/epsilon.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the FivePionCurrent class. * * @see \ref FivePionCurrentInterfaces "The interfaces" * defined for FivePionCurrent. */ class FivePionCurrent: public WeakDecayCurrent { public: /** * The default constructor. */ FivePionCurrent(); /** @name Methods for the construction of the phase space integrator. */ //@{ /** * Complete the construction of the decay mode for integration.classes inheriting * from this one. * @param icharge The total charge of the outgoing particles in the current. * @param imode The mode in the current being asked for. * @param mode The phase space mode for the integration * @param iloc The location of the of the first particle from the current in * the list of outgoing particles. * @param ires The location of the first intermediate for the current. * @param phase The prototype phase space channel for the integration. * @param upp The maximum possible mass the particles in the current are * allowed to have. * @return Whether the current was sucessfully constructed. */ virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp); /** * The particles produced by the current. * @param icharge The total charge of the particles in the current. * @param imode The mode for which the particles are being requested * @param iq The PDG code for the quark * @param ia The PDG code for the antiquark * @return The external particles for the current. */ virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); //@} /** * Hadronic current. This method is purely virtual and must be implemented in * all classes inheriting from this one. * @param imode The mode * @param ichan The phase-space channel the current is needed for. * @param scale The invariant mass of the particles in the current. * @param decay The decay products * @param meopt Option for the calculation of the matrix element * @return The current. */ virtual vector<LorentzPolarizationVectorE> current(const int imode,const int ichan,Energy & scale, const ParticleVector & decay, DecayIntegrator::MEOption meopt) const; /** * Accept the decay. * @param id The id's of the particles in the current. * @return Can this current have the external particles specified. */ virtual bool accept(vector<int> id); /** * Return the decay mode number for a given set of particles in the current. * @param id The id's of the particles in the current. * @return The number of the mode */ virtual unsigned int decayMode(vector<int> id); /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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(); protected: /** * Methods to calculate the Breit-Wigner distributions for the various * mesons. */ //@{ /** * Breit-Wigner for the \f$\rho\f$. * @param scale The virtual mass */ Complex rhoBreitWigner(Energy2 scale) const { Energy2 m2=sqr(_rhomass); return m2/(m2-scale-Complex(0.,1.)*_rhomass*_rhowidth); } /** * Breit-Wigner for the \f$a_1\f$. * @param scale The virtual mass */ Complex a1BreitWigner(Energy2 scale) const { Energy2 m2=sqr(_a1mass); return m2/(m2-scale-Complex(0.,1.)*_a1mass*_a1width); } /** * Breit-Wigner for the \f$\omega\f$. * @param scale The virtual mass */ Complex omegaBreitWigner(Energy2 scale) const { Energy2 m2=sqr(_omegamass); return m2/(m2-scale-Complex(0.,1.)*_omegamass*_omegawidth); } /** * Breit-Wigner for the \f$\sigma\f$. * @param scale The virtual mass */ Complex sigmaBreitWigner(Energy2 scale) const { Energy2 m2=sqr(_sigmamass); return m2/(m2-scale-Complex(0.,1.)*_sigmamass*_sigmawidth); } //@} /** * Currents for the different channels */ //@{ /** * The \f$\rho\omega\f$ current * @param iopt Option for the inclusion of \f$\rho\f$ Breit-Wigner terms in the * \f$\omega\f$ decay piece * @param Q The total momentum for the current * @param q1 The first momentum * @param q2 The first momentum * @param q3 The first momentum * @param q4 The first momentum * @param q5 The first momentum */ LorentzVector<complex<InvEnergy2> > rhoOmegaCurrent(unsigned int iopt, const Lorentz5Momentum & Q, const Lorentz5Momentum & q1, const Lorentz5Momentum & q2, const Lorentz5Momentum & q3, const Lorentz5Momentum & q4, const Lorentz5Momentum & q5) const { // prefactor complex<InvEnergy7> pre(_preomega*a1BreitWigner(Q.m2())* omegaBreitWigner((q1+q2+q3).m2())* rhoBreitWigner((q4+q5).m2())); // omega piece Complex omega(-1.); if(_rhoomega) { if(iopt==1) omega=rhoBreitWigner((q2+q3).m2()); else if(iopt==2) omega=rhoBreitWigner((q1+q3).m2()); else if(iopt==3) omega=rhoBreitWigner((q1+q2).m2()); else omega=rhoBreitWigner((q2+q3).m2())+rhoBreitWigner((q1+q3).m2())+ rhoBreitWigner((q1+q2).m2()); } LorentzVector<complex<Energy3> > omegacurrent(Helicity::epsilon(q1,q2,q3)); LorentzVector<complex<InvEnergy2> > output = pre * omega * Helicity::epsilon(q4-q5,omegacurrent,Q); return output; } /** * The \f$a_1\sigma\f$ current * @param iopt Option for the inclusion of \f$\rho\f$ Breit-Wigner terms in the * \f$a_1\f$ decay piece * @param Q The total momentum for the current * @param q1 The first momentum * @param q2 The first momentum * @param q3 The first momentum * @param q4 The first momentum * @param q5 The first momentum */ LorentzVector<complex<InvEnergy2> > a1SigmaCurrent(unsigned int iopt, const Lorentz5Momentum & Q, const Lorentz5Momentum & q1, const Lorentz5Momentum & q2, const Lorentz5Momentum & q3, const Lorentz5Momentum & q4, const Lorentz5Momentum & q5) const { Lorentz5Momentum pa1(q1+q2+q3);pa1.rescaleMass(); Energy2 ma12(pa1.m2()); complex<InvEnergy3> pre(_presigma*a1BreitWigner(Q.m2())*a1BreitWigner(ma12)* sigmaBreitWigner((q4+q5).m2())); Energy2 pdot[2]={q2*(q1-q3),q1*(q2-q3)}; LorentzPolarizationVectorE rho[2] = {(pdot[0]/ma12*pa1-q1+q3)*rhoBreitWigner((q1+q3).m2()), (pdot[1]/ma12*pa1-q2+q3)*rhoBreitWigner((q2+q3).m2())}; LorentzPolarizationVectorE total; if(iopt==1) total = rho[0]; else if(iopt==2) total = rho[1]; else total = rho[0]+rho[1]; Complex qdot = total * Q / Q.m2(); LorentzPolarizationVectorE cq(Q); cq = cq * qdot; cq -= total; return pre * cq; } //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FivePionCurrent> initFivePionCurrent; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FivePionCurrent & operator=(const FivePionCurrent &); private: /** * The masses and widths of the intermediate particles */ //@{ /** * The mass of the \f$\rho\f$ for the current. */ Energy _rhomass; /** * The mass of the \f$a_1\f$ for the current. */ Energy _a1mass; /** * The mass of the \f$\omega\f$ for the current. */ Energy _omegamass; /** * The mass of the \f$\sigma\f$ for the current. */ Energy _sigmamass; /** * The width for the \f$\rho\f$. */ Energy _rhowidth; /** * The \f$a_1\f$ width */ Energy _a1width; /** * The \f$\omega\f$ width. */ Energy _omegawidth; /** * The \f$\sigma\f$ width. */ Energy _sigmawidth; //@} /** * use local values of the particle masses */ bool _localparameters; /** * Option for the treatment of \f$\rho\f$ Breit-Wigners in \f$\omega\f$ decay */ bool _rhoomega; /** * Normalisation parameters for the different currents */ //@{ /** * The \f$c\f$ parameter */ Energy2 _c; /** * The \f$c_0\f$ parameter */ double _c0; /** * The \f$f_{\omega\rho\pi}\f$ parameter */ InvEnergy _fomegarhopi; /** * The \f$g_{\rho\pi\pi}\f$ parameter */ double _grhopipi; /** * The \f$G_{a\rho\pi}\f$ parameter */ Energy _garhopi; /** * The \f$f_{aaf}\f$ parameter */ Energy _faaf; /** * The \f$f_{f\pi\pi}\f$ parameter */ Energy _ffpipi; //@} /** * Values cached to avoid unnessacary calculations */ //@{ /** * Prefactor for the \f$\rho\omega\f$ current */ InvEnergy7 _preomega; /** * Prefactor for the \f$a_1\sigma\f$ current */ InvEnergy3 _presigma; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FivePionCurrent. */ template <> struct BaseClassTrait<Herwig::FivePionCurrent,1> { /** Typedef of the first base class of FivePionCurrent. */ typedef Herwig::WeakDecayCurrent NthBase; }; /** This template specialization informs ThePEG about the name of * the FivePionCurrent class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FivePionCurrent> : public ClassTraitsBase<Herwig::FivePionCurrent> { /** Return a platform-independent class name */ static string className() { return "Herwig::FivePionCurrent"; } /** * The name of a file containing the dynamic library where the class * FivePionCurrent is implemented. It may also include several, space-separated, * libraries if the class FivePionCurrent depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwWeakCurrents.so"; } }; /** @endcond */ } #endif /* HERWIG_FivePionCurrent_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/Makefile.am��������������������������������������������������0000644�0001750�0001750�00000001551�11754474774�022477� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwWeakCurrents.la noinst_LTLIBRARIES = libHwWeakCurrent.la libHwWeakCurrent_la_SOURCES = \ WeakDecayCurrent.cc WeakDecayCurrent.fh WeakDecayCurrent.h\ LeptonNeutrinoCurrent.cc LeptonNeutrinoCurrent.fh \ LeptonNeutrinoCurrent.h HwWeakCurrents_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:1:0 HwWeakCurrents_la_SOURCES = \ FourPionNovosibirskCurrent.cc FourPionNovosibirskCurrent.h \ ScalarMesonCurrent.cc ScalarMesonCurrent.h\ ThreeMesonCurrentBase.cc ThreeMesonCurrentBase.h \ ThreeMesonDefaultCurrent.cc ThreeMesonDefaultCurrent.h\ ThreePionCLEOCurrent.cc ThreePionCLEOCurrent.h\ TwoMesonRhoKStarCurrent.cc TwoMesonRhoKStarCurrent.h\ TwoPionPhotonCurrent.cc TwoPionPhotonCurrent.h\ VectorMesonCurrent.cc VectorMesonCurrent.h\ FivePionCurrent.cc FivePionCurrent.h \ KPiCurrent.cc KPiCurrent.h\ KaonThreeMesonCurrent.cc KaonThreeMesonCurrent.h �������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/FourPionNovosibirskCurrent.h���������������������������������0000644�0001750�0001750�00000050440�11754474774�026152� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FourPionNovosibirskCurrent.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FourPionNovosibirskCurrent_H #define HERWIG_FourPionNovosibirskCurrent_H // // This is the declaration of the FourPionNovosibirskCurrent class. // #include "WeakDecayCurrent.h" #include "Herwig++/Utilities/Interpolator.h" #include "Herwig++/Utilities/Kinematics.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>FourPionNovosibirskCurrent</code> class implements the decay of the weak * current to 4 pions using the hadronic currents of * Comput. Phys. Commun. 146: 139-153, 2002, * which is a model based on the \f$e^+e^-\to4\pi\f$ data from Novosibirsk. * * It should be noted that there were a large number of mistakes in this paper which * were corrected in hep-ph/0312240. * * @see WeakDecayCurrent * @see FourPionDefaultMatrixElement * * \author Peter Richardson * */ class FourPionNovosibirskCurrent: public WeakDecayCurrent { /** * The FourPionDefaultMatrixElement class is a friend so it can perform the * integration. */ friend class FourPionDefaultMatrixElement; public: /** * Default constructor */ FourPionNovosibirskCurrent(); /** @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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** @name Methods for the construction of the phase space integrator. */ //@{ /** * Complete the construction of the decay mode for integration. * This version constructs the four pion current. * @param icharge The total charge of the outgoing particles in the current. * @param imode The mode in the current being asked for. * @param mode The phase space mode for the integration * @param iloc The location of the of the first particle from the current in * the list of outgoing particles. * @param ires The location of the first intermediate for the current. * @param phase The prototype phase space channel for the integration. * @param upp The maximum possible mass the particles in the current are * allowed to have. * @return Whether the current was sucessfully constructed. */ virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp); /** * The particles produced by the current. This returns the four pions for the * current. * @param icharge The total charge of the particles in the current. * @param imode The mode for which the particles are being requested * @param iq The PDG code for the quark * @param ia The PDG code for the antiquark * @return The external particles for the current. */ virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); //@} /** * Hadronic current. This version calculates the four pion current described above. * @param imode The mode * @param ichan The phase-space channel the current is needed for. * @param scale The invariant mass of the particles in the current. * @param decay The decay products * @param meopt Option for the calculation of the matrix element * @return The current. */ virtual vector<LorentzPolarizationVectorE> current(const int imode, const int ichan,Energy & scale, const ParticleVector & decay, DecayIntegrator::MEOption meopt) const; /** * Accept the decay. Checks this is one of the four pion modes. * @param id The id's of the particles in the current. * @return Can this current have the external particles specified. */ virtual bool accept(vector<int> id); /** * Return the decay mode number for a given set of particles in the current. * Works out which four pion mode this is. * @param id The id's of the particles in the current. * @return The number of the mode */ virtual unsigned int decayMode(vector<int> id); /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; /** * The matrix element to evaluate the \f$a_1\f$ running width. * @param iopt The mode * @param q2 The mass of the decaying off-shell \f$a_1\f$, \f$q^2\f$. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The matrix element squared summed over spins. */ double threeBodyMatrixElement(const int iopt, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); /** * Check sanity of the object during the setup phase. */ virtual void doupdate(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<FourPionNovosibirskCurrent> initFourPionNovosibirskCurrent; /** * Private and non-existent assignment operator. */ FourPionNovosibirskCurrent & operator=(const FourPionNovosibirskCurrent &); protected: /** * Initialize the \f$a_1\f$ width. * @param iopt Initialization option * (-1 is full initialization and 0 sets up the interpolator for the running width) */ void inita1width(int iopt); /** * Form foactor for the \f$a_1\f$ vertex. * @param q2 The scale \f$q^2\f$. * @return The \f$a_1\f$ form factor. */ double a1FormFactor(Energy2 q2) const { return sqr((1.+_a1massolam2)/(1.+q2*_onedlam2)); } /** * Breit-Wigner for the \f$\sigma\f$ meson * @param q2 The scale \f$q^2\f$. * @param iopt The pion masses to used (0=\f$\pi^0\f$, 1=\f$\pi^+\f$) * @return The Breit-Wigner for the \f$\sigma\f$ meson */ Complex sigmaBreitWigner(Energy2 q2,unsigned int iopt) const { Energy q(sqrt(q2)); Energy pcm = iopt==0 ? Kinematics::pstarTwoBodyDecay(q,_mpi0,_mpi0) : Kinematics::pstarTwoBodyDecay(q,_mpic,_mpic); if(pcm<ZERO) pcm=ZERO; Energy width(_sigmawidth*pcm/_psigma[iopt]); Energy2 msigma2 = sqr(_sigmamass); return msigma2/(q2-msigma2+Complex(0.,1.)*msigma2*width/q); } /** * The \f$a_1\f$ breit wigner. * @param q2 The scale \f$q^2\f$. * @return The Breit-Wigner for the \f$a_1\f$. */ Complex a1BreitWigner(Energy2 q2) const { Complex ii(0.,1.); Energy2 m2 = sqr(_a1mass); Energy q = sqrt(q2); return (m2/complex<Energy2>(q2 - m2 + ii*q*a1width(q2))); } /** * The Breit-Wigner for the \f$\omega\f$. * @param q2 The scale \f$q^2\f$. * @return The Breit-Wigner for the \f$\omega\f$. */ Complex omegaBreitWigner(Energy2 q2) const { Energy q(sqrt(q2)); // calcluate the running width double diff((q-_omegamass)/GeV),temp(diff); double gomega(1.); Complex ii(0.,1.); if(q<=1.*GeV) { for(unsigned int ix=0;ix<6;++ix) { gomega +=temp*_omegaparam[ix]; temp*=diff; } } else { gomega=_omegaparam[6]+q/GeV*(_omegaparam[7]+q/GeV*_omegaparam[8] +q2/GeV2*_omegaparam[9]); } if(gomega<0.){gomega=0.;} Energy2 numer=_omegamass*_omegamass; complex<Energy2> denom=q2-_omegamass*_omegamass+ii*_omegamass*_omegawidth*gomega; return numer/denom; } /** * The Breit-Wigner for the \f$\rho\f$. * @param q2 The scale \f$q^2\f$. * @return The Breit-Wigner for the \f$\rho\f$. */ Complex rhoBreitWigner(Energy2 q2) const { Energy q(sqrt(q2)); Energy2 grhom(8.*_prho*_prho*_prho/_rhomass); complex<Energy2> denom; Complex ii(0.,1.); if(q2<4.*_mpic2) { denom=q2-_rhomass*_rhomass -_rhowidth*_rhomass*(hFunction(q)-_hm2-(q2-_rhomass*_rhomass)*_dhdq2m2)/grhom; } else { Energy pcm(2.*Kinematics::pstarTwoBodyDecay(q,_mpic,_mpic)); Energy2 grho(pcm*pcm*pcm/q); denom=q2-_rhomass*_rhomass -_rhowidth*_rhomass*(hFunction(q)-_hm2-(q2-_rhomass*_rhomass)*_dhdq2m2)/grhom +ii*_rhomass*_rhowidth*grho/grhom; } return _rhoD/denom; } /** * Return the \f$a_1\f$ running width. * @param q2 The scale \f$q^2\f$. * @return The running width. */ Energy a1width(Energy2 q2) const {return (*_a1runinter)(q2);} /** * The \f$t_1\f$ current used in calculating the current. * @param q1 The first momentum. * @param q2 The first momentum. * @param q3 The first momentum. * @param q4 The first momentum. * @return The current \f$t_1\f$. */ LorentzVector<complex<Energy5> > t1(Lorentz5Momentum & q1,Lorentz5Momentum & q2, Lorentz5Momentum & q3,Lorentz5Momentum & q4) const { // momentum of the whole sysytem Lorentz5Momentum Q(q1+q2+q3+q4);Q.rescaleMass(); // compute the virtuality of the a_1 Lorentz5Momentum a1(q2+q3+q4);a1.rescaleMass(); // compute the virtuality of the rho Lorentz5Momentum rho(q3+q4);rho.rescaleMass(); // compute the prefactor Complex pre(-a1FormFactor(a1.mass2())*a1BreitWigner(a1.mass2())* rhoBreitWigner(rho.mass2())); // dot products we need Energy2 QdQmq1(Q*a1); complex<Energy4> consta(QdQmq1*(a1*q3)), constb(QdQmq1*(a1*q4)), constc(((Q*q4)*(q1*q3)-(Q*q3)*(q1*q4))); // compute the current return pre*(consta*q4-constb*q3+constc*a1); } /** * The \f$t_2\f$ current used in calculating the current. * @param q1 The first momentum. * @param q2 The first momentum. * @param q3 The first momentum. * @param q4 The first momentum. * @param iopt 0 for \f$\sigma\to\pi^+\pi^-\f$ and 1 for \f$\sigma\to\pi^0\pi^0\f$ * @return The current \f$t_2\f$. */ LorentzVector<complex<Energy5> > t2(Lorentz5Momentum & q1,Lorentz5Momentum & q2, Lorentz5Momentum & q3,Lorentz5Momentum & q4, unsigned int iopt) const { // momentum of the whole system Lorentz5Momentum Q(q1+q2+q3+q4);Q.rescaleMass(); // compute the virtuality of the a_1 Lorentz5Momentum a1(q2+q3+q4);a1.rescaleMass(); // compute the virtuality of the sigma Lorentz5Momentum sigma(q3+q4);sigma.rescaleMass(); // compute the prefactor Complex pre(_zsigma*a1FormFactor(a1.mass2()) *a1BreitWigner(a1.mass2())* sigmaBreitWigner(sigma.mass2(),iopt)); // dot products we need complex<Energy4> consta((Q*a1)*a1.mass2()),constb((Q*q2)*a1.mass2()); // compute the current return pre*(consta*q2-constb*a1); } /** * The \f$t_3\f$ current used in calculating the current. * @param q1 The first momentum. * @param q2 The first momentum. * @param q3 The first momentum. * @param q4 The first momentum. * @return The current \f$t_3\f$. */ LorentzVector<complex<Energy5> > t3(Lorentz5Momentum & q1,Lorentz5Momentum & q2, Lorentz5Momentum & q3,Lorentz5Momentum & q4) const { // momentum of the whole sysytem Lorentz5Momentum Q(q1+q2+q3+q4);Q.rescaleMass(); // compute the virtuality of the omega Lorentz5Momentum omega(q2+q3+q4);omega.rescaleMass(); // compute the virtuality of the rho Lorentz5Momentum rho(q3+q4);rho.rescaleMass(); // compute the prefactor Complex pre(omegaBreitWigner(omega.mass2())*rhoBreitWigner(rho.mass2())); // dot products we need complex<Energy4> consta((Q*q3)*(q1*q4)-(Q*q4)*(q1*q3)), constb(-(Q*q2)*(q1*q4)+(q1*q2)*(Q*q4)), constc((Q*q2)*(q1*q3)-(q1*q2)*(Q*q3)); // compute the current return pre*(consta*q2+constb*q3+constc*q4); } /** * The G functions of hep-ph/0201149 * @param q2 The scale \f$q^2\f$. * @param ichan Which of the four pion channels this is for. * @return The G function. */ InvEnergy6 gFunction(Energy2 q2, int ichan) const { Energy q(sqrt(q2)); InvEnergy4 invmrho4 = 1/sqr(sqr(_rhomass)); // the one charged pion G function if(ichan==0) { return (*_Fonec)(q) * _aonec * (*_Fsigma)(q2) * sqrt(_bonec*q/GeV-_conec) * invmrho4/q; } // the three charged pion G function else if(ichan==1) { return (*_Fthreec)(q)*_athreec*sqrt(_bthreec*q/GeV-_cthreec)*invmrho4/q; } // the omega G function else if(ichan==2) { return(*_Fomega)(q)*_aomega*sqrt(_bomega*q/GeV-_comega)*invmrho4/q; } assert(false); return InvEnergy6(); } /** * The d parameter in \f$\rho\f$ the propagator. */ Energy2 DParameter() const { Energy2 grhom(8.*_prho*_prho*_prho/_rhomass); return _rhomass*_rhomass+_rhowidth*_rhomass* (hFunction(ZERO)-_hm2+_rhomass*_rhomass*_dhdq2m2)/grhom; } /** * The \f$\frac{dh}{dq^2}\f$ function in the rho propagator evaluated at \f$q^2=m^2\f$. */ double dhdq2Parameter() const { Energy2 mrho2(_rhomass*_rhomass); double root(sqrt(1.-4.*_mpic2/mrho2)); return root/Constants::pi*(root+(1.+2*_mpic2/mrho2)*log((1+root)/(1-root))); } /** * The h function in the \f$\rho\f$ propagator. * @param q The scale. * @return The h function. */ Energy2 hFunction(const Energy q) const { using Constants::pi; static const Energy2 eps(0.01*MeV2); Energy2 q2(q*q), output; if (q2 > 4*_mpic2) { double root = sqrt(1.-4.*_mpic2/q2); output = root*log((1.+root)/(1.-root))*(q2-4*_mpic2)/pi; } else if (q2 > eps) output = ZERO; else output = -8.*_mpic2/pi; return output; } private: /** * Interpolating functions for the G functions of hep-ph/0201149 */ //@{ /** * The interpolator for the \f$\omega\f$ current. */ Interpolator<double,Energy>::Ptr _Fomega; /** * The interpolator for the three charged pion \f$a_1\f$ current. */ Interpolator<double,Energy>::Ptr _Fthreec; /** * The interpolator for the one charged pion \f$a_1\f$ current. */ Interpolator<double,Energy>::Ptr _Fonec; /** * The interpolator for the \f$\sigma\f$ current. */ Interpolator<double,Energy2>::Ptr _Fsigma; //@} /** * The charged pion mass */ Energy _mpic; /** * The neutral pion mass */ Energy _mpi0; /** * The mass of the \f$\rho\f$ for the current. */ Energy _rhomass; /** * The mass of the \f$a_1\f$ for the current. */ Energy _a1mass; /** * The mass of the \f$\omega\f$ for the current. */ Energy _omegamass; /** * The mass of the \f$\sigma\f$ for the current. */ Energy _sigmamass; /** * The width for the \f$\rho\f$. */ Energy _rhowidth; /** * The \f$a_1\f$ width */ Energy _a1width; /** * The \f$\omega\f$ width. */ Energy _omegawidth; /** * The \f$\sigma\f$ width. */ Energy _sigmawidth; /** * Mass for the intermediate in the phase-space, this is a technical parameter to * improve the phase-space integration efficiency. */ Energy _intmass; /** * Width for the intermediate in the phase-space, this is a technical parameter to * improve the phase-space integration efficiency. */ Energy _intwidth; /** * The \f$z\f$ \f$\sigma\f$ coupling. */ Complex _zsigma; /** * The magnitude of the \f$z\f$ \f$\sigma\f$ coupling. */ double _zmag; /** * The phase of the \f$z\f$ \f$\sigma\f$ coupling. */ double _zphase; /** * The mass parameter for the \f$a_1\f$ form-factor. */ Energy2 _lambda2; /** * The inverse of the mass parameter for the \f$a_1\f$ form-factor. */ InvEnergy2 _onedlam2; /** * The physical \f$a_1\f$ mass divided by the mass parameter in the * \f$a_1\f$ form-factor. */ double _a1massolam2; /** * The momentum of the pions in on-shell \f$\sigma\f$ decay which is used * in the calculation of the running \f$\sigma\f$ width. */ vector<Energy> _psigma; /** * The charged pion mass squared. */ Energy2 _mpic2; /** * The neutral pion mass squared */ Energy2 _mpi02; /** * The h function evaluated at the \f$\rho\f$ mass. */ Energy2 _hm2; /** * The d parameter for the \f$\rho\f$ width. */ Energy2 _rhoD; /** * The momentum of the pions produced in on-shell \f$rho\f$ decay. */ Energy _prho; /** * \f$\frac{dh}{dq^2}\f$ evaluates at \f$q^2=m^2\f$ for the \f$\rho\f$. */ double _dhdq2m2; /** * Magic number for the omega current. */ InvEnergy _aomega; /** * Magic number for the three charged pion current. */ InvEnergy _athreec; /** * Magic number for the one charged pion current */ InvEnergy _aonec; /** * Magic number for the omega current. */ double _bomega; /** * Magic number for the three charged pion current. */ double _bthreec; /** * Magic number for the one charged pion current */ double _bonec; /** * Magic number for the omega current. */ double _comega; /** * Magic number for the three charged pion current. */ double _cthreec; /** * Magic number for the one charged pion current */ double _conec; /** * magic numbers for the running omega width */ vector<double> _omegaparam; /** * whether or not to initialize the calculation of the \f$a_1\f$ width */ bool _initializea1; /** * use local values of the particle masses */ bool _localparameters; /** * The widths for the interpolation table for the running \f$a_1\f$ width. */ vector<Energy> _a1runwidth; /** * The \f$q^2\f$ values for the interpolation table for the running \f$a_1\f$ width. */ vector<Energy2> _a1runq2; /** * The interpolator for the running \f$a_1\f$ width. */ Interpolator<Energy,Energy2>::Ptr _a1runinter; /** * The maximum mass of the hadronic system */ Energy _maxmass; /** * The maximum mass when the running width was calculated */ Energy _maxcalc; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of FourPionNovosibirskCurrent. */ template <> struct BaseClassTrait<Herwig::FourPionNovosibirskCurrent,1> { /** Typedef of the base class of FourPionNovosibirskCurrent. */ typedef Herwig::WeakDecayCurrent NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FourPionNovosibirskCurrent> : public ClassTraitsBase<Herwig::FourPionNovosibirskCurrent> { /** Return the class name.*/ static string className() { return "Herwig::FourPionNovosibirskCurrent"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwWeakCurrents.so"; } }; /** @endcond */ } #endif /* HERWIG_FourPionNovosibirskCurrent_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/WeakDecayCurrent.fh������������������������������������������0000644�0001750�0001750�00000000462�11754474774�024162� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the WeakDecayCurrent class. // #ifndef HERWIG_WeakDecayCurrent_FH #define HERWIG_WeakDecayCurrent_FH namespace Herwig { using namespace ThePEG; class WeakDecayCurrent; ThePEG_DECLARE_CLASS_POINTERS(WeakDecayCurrent,WeakDecayCurrentPtr); } #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/LeptonNeutrinoCurrent.fh�������������������������������������0000644�0001750�0001750�00000000520�11754474774�025305� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the LeptonNeutrinoCurrent class. // #ifndef HERWIG_LeptonNeutrinoCurrent_FH #define HERWIG_LeptonNeutrinoCurrent_FH namespace Herwig { using namespace ThePEG; class LeptonNeutrinoCurrent; ThePEG_DECLARE_CLASS_POINTERS(LeptonNeutrinoCurrent,LeptonNeutrinoCurrentPtr); } #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/ScalarMesonCurrent.cc����������������������������������������0000644�0001750�0001750�00000017362�11754474774�024533� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ScalarMesonCurrent.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ScalarMesonCurrent class. // #include "ScalarMesonCurrent.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; void ScalarMesonCurrent::doinit() { unsigned int isize=numberOfModes(); if(_id.size()!=isize||_decay_constant.size()!=isize) {throw InitException() << "Inconsistent parameters in ScalarMesonCurrent::doinit()" << Exception::abortnow;} WeakDecayCurrent::doinit(); } ScalarMesonCurrent::ScalarMesonCurrent() { // the eta/eta' mixing angle _thetaeta=-0.194; // the decay constants for the different modes _id.push_back(211);_decay_constant.push_back(130.7*MeV); addDecayMode(2,-1); _id.push_back(111);_decay_constant.push_back(130.7*MeV); addDecayMode(1,-1); _id.push_back(111);_decay_constant.push_back(130.7*MeV); addDecayMode(2,-2); _id.push_back(221);_decay_constant.push_back(130.7*MeV); addDecayMode(1,-1); _id.push_back(221);_decay_constant.push_back(130.7*MeV); addDecayMode(2,-2); _id.push_back(221);_decay_constant.push_back(130.7*MeV); addDecayMode(3,-3); _id.push_back(331);_decay_constant.push_back(130.7*MeV); addDecayMode(1,-1); _id.push_back(331);_decay_constant.push_back(130.7*MeV); addDecayMode(2,-2); _id.push_back(331);_decay_constant.push_back(130.7*MeV); addDecayMode(3,-3); _id.push_back(311);_decay_constant.push_back(159.8*MeV); addDecayMode(1,-3); _id.push_back(321);_decay_constant.push_back(159.8*MeV); addDecayMode(2,-3); _id.push_back(411);_decay_constant.push_back(200.0*MeV); addDecayMode(4,-1); _id.push_back(421);_decay_constant.push_back(200.0*MeV); addDecayMode(4,-2); _id.push_back(431);_decay_constant.push_back(241.0*MeV); addDecayMode(4,-3); _id.push_back(10431);_decay_constant.push_back(73.7*MeV); addDecayMode(4,-3); // initial size of the arrays _initsize = _id.size(); setInitialModes(_initsize); } void ScalarMesonCurrent::persistentOutput(PersistentOStream & os) const { os << _id << ounit(_decay_constant,GeV) << _thetaeta; } void ScalarMesonCurrent::persistentInput(PersistentIStream & is, int) { is >> _id >> iunit(_decay_constant,GeV) >> _thetaeta; } ClassDescription<ScalarMesonCurrent> ScalarMesonCurrent::initScalarMesonCurrent; // Definition of the static class description member. void ScalarMesonCurrent::Init() { static ClassDocumentation<ScalarMesonCurrent> documentation ("The ScalarMesonCurrent class implements the current" " for the decay of the weak current into a pseudoscalar meson."); static ParVector<ScalarMesonCurrent,long> interfaceID ("ID", "The PDG code for the outgoing meson.", &ScalarMesonCurrent::_id, 0, 0, 0, -1000000, 1000000, false, false, true); static ParVector<ScalarMesonCurrent,Energy> interfaceDecay_Constant ("Decay_Constant", "The decay constant for the meson.", &ScalarMesonCurrent::_decay_constant, MeV, -1, 100.*MeV,-1000.0*MeV, 1000.0*MeV, false, false, true); static Parameter<ScalarMesonCurrent,double> interfaceThetaEtaEtaPrime ("ThetaEtaEtaPrime", "The eta-eta' mixing angle", &ScalarMesonCurrent::_thetaeta, -0.194, -Constants::pi, Constants::pi, false, false, true); } // create the decay phase space mode bool ScalarMesonCurrent::createMode(int icharge,unsigned int imode, DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp) { // check the mode has the correct charge if(abs(icharge)!=abs(int(getParticleData(_id[imode])->iCharge()))) return false; // check if the particle is kinematically allowed tPDPtr part(getParticleData(_id[imode])); Energy min=part->massMin(); if(min>upp) return false; // construct the mode DecayPhaseSpaceChannelPtr newchannel(new_ptr(DecayPhaseSpaceChannel(*phase))); newchannel->resetDaughter(-ires,iloc); mode->addChannel(newchannel); return true; } // outgoing particles tPDVector ScalarMesonCurrent::particles(int icharge, unsigned int imode, int iq, int ia) { tPDPtr part(getParticleData(_id[imode])); tPDVector output; if(icharge==int(part->iCharge())) { if(icharge==0) { int iqb,iab; decayModeInfo(imode,iqb,iab); if(iq==iqb&&ia==iab) { output.push_back(part); } else { output.push_back(part->CC()); } } else { output.push_back(part); } } else if(icharge==-int(part->iCharge())) { output.push_back(part->CC()); } return output; } vector<LorentzPolarizationVectorE> ScalarMesonCurrent::current(const int imode, const int, Energy & scale,const ParticleVector & decay, DecayIntegrator::MEOption meopt) const { static const Complex ii(0.,1.); if(meopt==DecayIntegrator::Terminate) { ScalarWaveFunction::constructSpinInfo(decay[0],outgoing,true); return vector<LorentzPolarizationVectorE>(1,LorentzPolarizationVectorE()); } scale = decay[0]->mass(); Complex pre(-ii*_decay_constant[imode]/scale); // quarks in the current int iq,ia; decayModeInfo(imode,iq,ia); if(abs(iq)==abs(ia)) { int id(decay[0]->id()); if(id==ParticleID::eta) { if(abs(iq)==3) pre*=-2.*cos(_thetaeta)/sqrt(6.)-sin(_thetaeta)/sqrt(3.); else pre*=cos(_thetaeta)/sqrt(6.)-sin(_thetaeta)/sqrt(3.); } else if(id==ParticleID::etaprime) { if(abs(iq)==3) pre*=-2.*sin(_thetaeta)/sqrt(6.)+cos(_thetaeta)/sqrt(3.); else pre*=sin(_thetaeta)/sqrt(6.)+cos(_thetaeta)/sqrt(3.); } else if(id==ParticleID::pi0&&abs(iq)==1) { pre*=-sqrt(0.5); } else { pre*= sqrt(0.5); } } // return the answer return vector<LorentzPolarizationVectorE>(1,pre*decay[0]->momentum()); } bool ScalarMesonCurrent::accept(vector<int> id) { if(id.size()!=1){return false;} int idtemp(abs(id[0])); for(unsigned int ix=0;ix<_id.size();++ix) { if(abs(_id[ix])==idtemp) return true; } return false; } unsigned int ScalarMesonCurrent::decayMode(vector<int> idout) { int idtemp(abs(idout[0])); unsigned int ix(0); bool found(false); do { if(idtemp==abs(_id[ix])) found=true; else ++ix; } while(!found); return ix; } void ScalarMesonCurrent::dataBaseOutput(ofstream & output, bool header,bool create) const { if(header) { output << "update decayers set parameters=\""; } if(create) { output << "create Herwig::ScalarMesonCurrent " << name() << " HwWeakCurrents.so\n"; } output << "newdef " << name() << ":ThetaEtaEtaPrime " << _thetaeta << "\n"; unsigned int ix; for(ix=0;ix<_id.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":ID " << ix << " " << _id[ix] << "\n"; output << "newdef " << name() << ":Decay_Constant " << ix << " " << _decay_constant[ix]/MeV << "\n"; } else { output << "insert " << name() << ":ID " << ix << " " << _id[ix] << "\n"; output << "insert " << name() << ":Decay_Constant " << ix << " " << _decay_constant[ix]/MeV << "\n"; } } WeakDecayCurrent::dataBaseOutput(output,false,false); if(header) { output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";\n"; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/ThreeMesonCurrentBase.h��������������������������������������0000644�0001750�0001750�00000017120�11754474774�025022� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ThreeMesonCurrentBase.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ThreeMesonCurrentBase_H #define HERWIG_ThreeMesonCurrentBase_H // This is the declaration of the ThreeMesonCurrentBase class. #include "WeakDecayCurrent.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * This is the base class for the three meson decays of the weak current. * It is designed so that the currents for the following modes can be implemented * in classes inheriting from this * - \f$ \pi^- \pi^- \pi^+ \f$, (imode=0) * - \f$ \pi^0 \pi^0 \pi^- \f$, (imode=1) * - \f$ K^- \pi^- K^+ \f$, (imode=2) * - \f$ K^0 \pi^- \bar{K}^0\f$, (imode=3) * - \f$ K^- \pi^0 K^0 \f$, (imode=4) * - \f$ \pi^0 \pi^0 K^- \f$, (imode=5) * - \f$ K^- \pi^- \pi^+ \f$, (imode=6) * - \f$ \pi^- \bar{K}^0 \pi^0 \f$, (imode=7) * - \f$ \pi^- \pi^0 \eta \f$, (imode=8) * * obviously there are other modes with three pseudoscalar mesons for the decay * of the weak current but this model original came from \f$\tau\f$ decay where * these are the only modes. However one case which is important is the inclusion * of the mixing in the neutral kaon sector for which we include the additional * currents * - \f$ K^0_S \pi^- K^0_S\f$, (imode=9) * - \f$ K^0_L \pi^- K^0_L\f$, (imode=10) * - \f$ K^0_S \pi^- K^0_L\f$, (imode=11) * * In this case the current is given by * \f[ J^\mu = \left(g^{\mu\nu}-\frac{q^\mu q^\nu}{q^2}\right) * \left[F_1(p_2-p_3)^\mu +F_2(p_3-p_1)^\mu+F_3(p_1-p_2)^\mu\right] * +q^\mu F_4 * +F_5\epsilon^{\mu\alpha\beta\gamma}p_1^\alpha p_2^\beta p_3^\gamma * \f] * where * - \f$p_{1,2,3}\f$ are the momenta of the mesons in the order given above. * - \f$F_1,F_2,F_3,F_4,F_5\f$ are the form factors which must be * calculated in the calculateFormFactors member which should be implemented * in classes inheriting from this. * * @see WeakDecayCurrent. * * \author Peter Richardson * */ class ThreeMesonCurrentBase: public WeakDecayCurrent { public: /** * Default constructor */ ThreeMesonCurrentBase(); /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** * Hadronic current. This version returns the hadronic current described above. * @param imode The mode * @param ichan The phase-space channel the current is needed for. * @param scale The invariant mass of the particles in the current. * @param decay The decay products * @param meopt Option for the calculation of the matrix element * @return The current. */ virtual vector<LorentzPolarizationVectorE> current(const int imode,const int ichan,Energy & scale, const ParticleVector & decay,DecayIntegrator::MEOption meopt) const; /** * Accept the decay. Checks the mesons against the list. * @param id The id's of the particles in the current. * @return Can this current have the external particles specified. */ virtual bool accept(vector<int> id); /** * Return the decay mode number for a given set of particles in the current. * Checks the mesons against the list. * @param id The id's of the particles in the current. * @return The number of the mode */ virtual unsigned int decayMode(vector<int> id); /** * The particles produced by the current. This returns the mesons for the mode. * @param icharge The total charge of the particles in the current. * @param imode The mode for which the particles are being requested * @param iq The PDG code for the quark * @param ia The PDG code for the antiquark * @return The external particles for the current. */ virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; protected: /** * can a particular decayer handle this type of mode * @param imode The mode number as given above * @return Whether this mode can be handled. */ virtual bool acceptMode(int imode) const=0; /** * Helper class for form factors */ struct FormFactors { /** * @param F1 The \f$F_1\f$ form factor */ complex<InvEnergy> F1; /** * @param F2 The \f$F_2\f$ form factor */ complex<InvEnergy> F2; /** * @param F3 The \f$F_3\f$ form factor */ complex<InvEnergy> F3; /** * @param F4 The \f$F_4\f$ form factor */ complex<InvEnergy> F4; /** * @param F5 The \f$F_5\f$ form factor */ complex<InvEnergy3> F5; /** * Constructor * @param f1 The \f$F_1\f$ form factor * @param f2 The \f$F_2\f$ form factor * @param f3 The \f$F_3\f$ form factor * @param f4 The \f$F_4\f$ form factor * @param f5 The \f$F_5\f$ form factor */ FormFactors(complex<InvEnergy> f1 = InvEnergy(), complex<InvEnergy> f2 = InvEnergy(), complex<InvEnergy> f3 = InvEnergy(), complex<InvEnergy> f4 = InvEnergy(), complex<InvEnergy3> f5 = InvEnergy3()) : F1(f1), F2(f2), F3(f3), F4(f4), F5(f5) {} }; /** * Calculate the form factor for the current. * @param ichan The phase space channel * @param imode The mode * @param q2 The scale \f$q^2\f$ for the current. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. */ virtual FormFactors calculateFormFactors(const int ichan, const int imode, Energy2 q2, Energy2 s1, Energy2 s2, Energy2 s3) const = 0; private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractNoPIOClassDescription<ThreeMesonCurrentBase> initThreeMesonCurrentBase; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ThreeMesonCurrentBase & operator=(const ThreeMesonCurrentBase &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ThreeMesonCurrentBase. */ template <> struct BaseClassTrait<Herwig::ThreeMesonCurrentBase,1> { /** Typedef of the base class of ThreeMesonCurrentBase. */ typedef Herwig::WeakDecayCurrent NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ThreeMesonCurrentBase> : public ClassTraitsBase<Herwig::ThreeMesonCurrentBase> { /** Return the class name.*/ static string className() { return "Herwig::ThreeMesonCurrentBase"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwWeakCurrents.so"; } }; /** @endcond */ } #endif /* HERWIG_ThreeMesonCurrentBase_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/KPiCurrent.h�������������������������������������������������0000644�0001750�0001750�00000022536�11754474774�022650� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // KPiCurrent.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_KPiCurrent_H #define HERWIG_KPiCurrent_H // // This is the declaration of the KPiCurrent class. // #include "WeakDecayCurrent.h" #include "Herwig++/Utilities/Kinematics.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the KPiCurrent class. * * @see \ref KPiCurrentInterfaces "The interfaces" * defined for KPiCurrent. */ class KPiCurrent: public WeakDecayCurrent { public: /** * The default constructor. */ KPiCurrent(); /** @name Methods for the construction of the phase space integrator. */ //@{ /** * Complete the construction of the decay mode for integration. * This version just adds the intermediate resonances, two outgoing mesons * and photon. * @param icharge The total charge of the outgoing particles in the current. * @param imode The mode in the current being asked for. * @param mode The phase space mode for the integration * @param iloc The location of the of the first particle from the current in * the list of outgoing particles. * @param ires The location of the first intermediate for the current. * @param phase The prototype phase space channel for the integration. * @param upp The maximum possible mass the particles in the current are * allowed to have. * @return Whether the current was sucessfully constructed. */ virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp); /** * The particles produced by the current. This just returns the two pseudoscalar * mesons and the photon. * @param icharge The total charge of the particles in the current. * @param imode The mode for which the particles are being requested * @param iq The PDG code for the quark * @param ia The PDG code for the antiquark * @return The external particles for the current. */ virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); //@} /** * Hadronic current. This version returns the hadronic current described above. * @param imode The mode * @param ichan The phase-space channel the current is needed for * @param scale The invariant mass of the particles in the current. * @param decay The decay products * @param meopt Option for the calculation of the matrix element * @return The current. */ virtual vector<LorentzPolarizationVectorE> current(const int imode,const int ichan,Energy & scale, const ParticleVector & decay, DecayIntegrator::MEOption meopt) const; /** * Accept the decay. Checks the particles are the allowed mode. * @param id The id's of the particles in the current. * @return Can this current have the external particles specified. */ virtual bool accept(vector<int> id); /** * Return the decay mode number for a given set of particles in the current. * @param id The id's of the particles in the current. * @return The number of the mode */ virtual unsigned int decayMode(vector<int> id); /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) 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(); protected: /** * Breit-Wigner distributions */ //@{ /** * s-wave Breit-Wigner for the scalar resonances * @param q2 The scale * @param ires The resonances */ Complex sWaveBreitWigner(Energy2 q2,unsigned int ires) const { Energy q=sqrt(q2),gam(ZERO); Energy2 m2=sqr(_scamass[ires]); if(q>_mK+_mpi) { Energy pX=Kinematics::pstarTwoBodyDecay(_scamass[ires],_mK,_mpi); Energy p =Kinematics::pstarTwoBodyDecay( q ,_mK,_mpi); gam = _scawidth[ires]*m2/q2*p/pX; } return m2/(m2-q2-Complex(0.,1.)*q*gam); } /** * p-wave Breit-Wigner for the vector resonances * @param q2 The scale * @param ires The resonances */ Complex pWaveBreitWigner(Energy2 q2,unsigned int ires) const { Energy q=sqrt(q2),gam(ZERO); Energy2 m2=sqr(_vecmass[ires]); if(q>_mK+_mpi) { Energy pX=Kinematics::pstarTwoBodyDecay(_vecmass[ires],_mK,_mpi); Energy p =Kinematics::pstarTwoBodyDecay( q ,_mK,_mpi); double ratio=p/pX; gam = _vecwidth[ires]*m2/q2*ratio*sqr(ratio); } return m2/(m2-q2-Complex(0.,1.)*q*gam); } //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<KPiCurrent> initKPiCurrent; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ KPiCurrent & operator=(const KPiCurrent &); private: /** * Use local value of the parameters not those from the ParticleData objects */ bool _localparameters; /** * Whether to use \f$m^2\f$ or \f$Q^2\f$ in the projection operator. */ bool _transverse; /** * Normalizations of the vector and scalar pieces */ //@{ /** * \f$c_V\f$, normalization of the vector piece. */ double _cV; /** * \f$c_S\f$, normalization of the scalar piece */ double _cS; //@} /** * Parameters for the vector resonances */ //@{ /** * Magnitude of the vector weights */ vector<double> _vecmag; /** * Phase of the vector weights */ vector<double> _vecphase; /** * Weights for the vector resonaces */ vector<Complex> _vecwgt; /** * Masses of the vector resonances */ vector<Energy> _vecmass; /** * Widths of the vector resonances */ vector<Energy> _vecwidth; //@} /** * Parameters for the scalar resonances */ //@{ /** * Magnitude of the scalar weights */ vector<double> _scamag; /** * Phase of the scalar weights */ vector<double> _scaphase; /** * Weights for the scalar resonances */ vector<Complex> _scawgt; /** * Masses of the scalar resonances */ vector<Energy> _scamass; /** * Widths of the scalar resonances */ vector<Energy> _scawidth; //@} /** * Masses for calculating the running widths */ //@{ /** * The pion mass */ Energy _mpi; /** * The kaon mass */ Energy _mK; //@} /** * Map for the resonances */ vector<int> _resmap; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of KPiCurrent. */ template <> struct BaseClassTrait<Herwig::KPiCurrent,1> { /** Typedef of the first base class of KPiCurrent. */ typedef Herwig::WeakDecayCurrent NthBase; }; /** This template specialization informs ThePEG about the name of * the KPiCurrent class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::KPiCurrent> : public ClassTraitsBase<Herwig::KPiCurrent> { /** Return a platform-independent class name */ static string className() { return "Herwig::KPiCurrent"; } /** * The name of a file containing the dynamic library where the class * KPiCurrent is implemented. It may also include several, space-separated, * libraries if the class KPiCurrent depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwWeakCurrents.so"; } }; /** @endcond */ } #endif /* HERWIG_KPiCurrent_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/ThreeMesonCurrentBase.cc�������������������������������������0000644�0001750�0001750�00000022311�11754474774�025156� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ThreeMesonCurrentBase.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ThreeMesonCurrentBase class. // #include "ThreeMesonCurrentBase.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/epsilon.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" using namespace Herwig; using namespace ThePEG; using namespace ThePEG::Helicity; ThreeMesonCurrentBase::ThreeMesonCurrentBase() { // the quarks for the different modes addDecayMode(2,-1); addDecayMode(2,-1); addDecayMode(2,-1); addDecayMode(2,-1); addDecayMode(2,-1); addDecayMode(2,-3); addDecayMode(2,-3); addDecayMode(2,-3); addDecayMode(2,-1); addDecayMode(2,-1); addDecayMode(2,-1); addDecayMode(2,-1); setInitialModes(12); } AbstractNoPIOClassDescription<ThreeMesonCurrentBase> ThreeMesonCurrentBase::initThreeMesonCurrentBase; // Definition of the static class description member. void ThreeMesonCurrentBase::Init() { static ClassDocumentation< ThreeMesonCurrentBase> documentation ("The ThreeMesonCurrentBase class is designed to be the " "base class for " "the three meson decays of the tau, ie pi- pi- pi+, pi0 pi0 pi-, " "K- pi- K+, K0 pi- Kbar0, K- pi0 K0,pi0 pi0 K-, K- pi- pi+, " "pi- Kbar0 pi0, pi- pi0 eta, K0S pi- K0S, K0L pi- K0L, K0S pi- K0L"); } // the hadronic currents vector<LorentzPolarizationVectorE> ThreeMesonCurrentBase::current(const int imode, const int ichan, Energy & scale,const ParticleVector & decay, DecayIntegrator::MEOption meopt) const { if(meopt==DecayIntegrator::Terminate) { for(unsigned int ix=0;ix<3;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return vector<LorentzPolarizationVectorE>(1,LorentzPolarizationVectorE()); } // calculate q2,s1,s2,s3 Lorentz5Momentum q; for(unsigned int ix=0;ix<decay.size();++ix){q+=decay[ix]->momentum();} q.rescaleMass(); scale=q.mass(); Energy2 q2=q.mass2(); Energy2 s1 = (decay[1]->momentum()+decay[2]->momentum()).m2(); Energy2 s2 = (decay[0]->momentum()+decay[2]->momentum()).m2(); Energy2 s3 = (decay[0]->momentum()+decay[1]->momentum()).m2(); FormFactors F = calculateFormFactors(ichan,imode,q2,s1,s2,s3); //if(inpart.id()==ParticleID::tauplus){F.F5=conj(F.F5);} // the first three form-factors LorentzPolarizationVector vect; vect = (F.F2-F.F1)*decay[2]->momentum() +(F.F1-F.F3)*decay[1]->momentum() +(F.F3-F.F2)*decay[0]->momentum(); // multiply by the transverse projection operator complex<InvEnergy> dot=(vect*q)/q2; // scalar and parity violating terms vect += (F.F4-dot)*q; if(F.F5!=InvEnergy3()) vect += Complex(0.,1.)*F.F5*Helicity::epsilon(decay[0]->momentum(), decay[1]->momentum(), decay[2]->momentum()); // factor to get dimensions correct return vector<LorentzPolarizationVectorE>(1,q.mass()*vect); } bool ThreeMesonCurrentBase::accept(vector<int> id) { int npip(0),npim(0),nkp(0),nkm(0), npi0(0),nk0(0),nk0bar(0),neta(0),nks(0),nkl(0); for(unsigned int ix=0;ix<id.size();++ix) { if(id[ix]==ParticleID::piplus) ++npip; else if(id[ix]==ParticleID::piminus) ++npim; else if(id[ix]==ParticleID::Kplus) ++nkp; else if(id[ix]==ParticleID::Kminus) ++nkm; else if(id[ix]==ParticleID::pi0) ++npi0; else if(id[ix]==ParticleID::K0) ++nk0; else if(id[ix]==ParticleID::Kbar0) ++nk0bar; else if(id[ix]==ParticleID::eta) ++neta; else if(id[ix]==ParticleID::K_S0) ++nks; else if(id[ix]==ParticleID::K_L0) ++nkl; } int imode(-1); if( (npip==2&&npim==1) || (npim==2&&npip==1) ) imode= 0; else if( (npip==1&&npi0==2) || (npim==1&&npi0==2) ) imode= 1; else if( (nkp==1&&nkm==1&&npip==1) || (nkp==1&&nkm==1&&npim==1)) imode= 2; else if( (nk0==1&&nk0bar==1&&npip==1) || (nk0==1&&nk0bar==1&&npim==1)) imode= 3; else if( (nkp==1&&nk0bar==1&&npi0==1) || (nkm==1&&npi0==1&&nk0==1)) imode= 4; else if( (nkp==1&&npi0==2) || (npi0==2&&nkm==1) ) imode= 5; else if( (npip==1&&npim==1&&nkp==1) || (nkm==1&&npim==1&&npip==1) ) imode= 6; else if( (nk0==1&&npip==1&&npi0==1) || (npim==1&&nk0bar==1&&npi0==1)) imode= 7; else if( (npip==1&&npi0==1&&neta==1) || (npim==1&&npi0==1&&neta==1)) imode= 8; else if( nks==2 && (npip==1||npim==1) ) imode= 9; else if( nkl==2 && (npip==1||npim==1) ) imode=10; else if( nks==1&&nkl==1 && (npip==1||npim==1) ) imode=11; return imode==-1 ? false : acceptMode(imode); } unsigned int ThreeMesonCurrentBase::decayMode(vector<int> id) { int npip(0),npim(0),nkp(0),nkm(0), npi0(0),nk0(0),nk0bar(0),neta(0),nks(0),nkl(0); for(unsigned int ix=0;ix<id.size();++ix) { if(id[ix]==ParticleID::piplus) ++npip; else if(id[ix]==ParticleID::piminus) ++npim; else if(id[ix]==ParticleID::Kplus) ++nkp; else if(id[ix]==ParticleID::Kminus) ++nkm; else if(id[ix]==ParticleID::pi0) ++npi0; else if(id[ix]==ParticleID::K0) ++nk0; else if(id[ix]==ParticleID::Kbar0) ++nk0bar; else if(id[ix]==ParticleID::eta) ++neta; else if(id[ix]==ParticleID::K_S0) ++nks; else if(id[ix]==ParticleID::K_L0) ++nkl; } int imode(-1); if( (npip==2&&npim==1) || (npim==2&&npip==1) ) imode= 0; else if( (npip==1&&npi0==2) || (npim==1&&npi0==2) ) imode= 1; else if( (nkp==1&&nkm==1&&npip==1) || (nkp==1&&nkm==1&&npim==1)) imode= 2; else if( (nk0==1&&nk0bar==1&&npip==1) || (nk0==1&&nk0bar==1&&npim==1)) imode= 3; else if( (nkp==1&&nk0bar==1&&npi0==1) || (nkm==1&&npi0==1&&nk0==1)) imode= 4; else if( (nkp==1&&npi0==2) || (npi0==2&&nkm==1) ) imode= 5; else if( (npip==1&&npim==1&&nkp==1) || (nkm==1&&npim==1&&npip==1) ) imode= 6; else if( (nk0==1&&npip==1&&npi0==1) || (npim==1&&nk0bar==1&&npi0==1)) imode= 7; else if( (npip==1&&npi0==1&&neta==1) || (npim==1&&npi0==1&&neta==1)) imode= 8; else if( nks==2 && (npip==1||npim==1) ) imode= 9; else if( nkl==2 && (npip==1||npim==1) ) imode=10; else if( nks==1&&nkl==1 && (npip==1||npim==1) ) imode=11; return imode; } void ThreeMesonCurrentBase::dataBaseOutput(ofstream & output,bool header, bool create) const { WeakDecayCurrent::dataBaseOutput(output,header,create); } tPDVector ThreeMesonCurrentBase::particles(int icharge, unsigned int imode,int,int) { tPDVector extpart(3); if(imode==0) { extpart[0]=getParticleData(ParticleID::piminus); extpart[1]=getParticleData(ParticleID::piminus); extpart[2]=getParticleData(ParticleID::piplus); } else if(imode==1) { extpart[0]=getParticleData(ParticleID::pi0); extpart[1]=getParticleData(ParticleID::pi0); extpart[2]=getParticleData(ParticleID::piminus); } else if(imode==2) { extpart[0]=getParticleData(ParticleID::Kminus); extpart[1]=getParticleData(ParticleID::piminus); extpart[2]=getParticleData(ParticleID::Kplus); } else if(imode==3) { extpart[0]=getParticleData(ParticleID::K0); extpart[1]=getParticleData(ParticleID::piminus); extpart[2]=getParticleData(ParticleID::Kbar0); } else if(imode==4) { extpart[0]=getParticleData(ParticleID::Kminus); extpart[1]=getParticleData(ParticleID::pi0); extpart[2]=getParticleData(ParticleID::K0); } else if(imode==5) { extpart[0]=getParticleData(ParticleID::pi0); extpart[1]=getParticleData(ParticleID::pi0); extpart[2]=getParticleData(ParticleID::Kminus); } else if(imode==6) { extpart[0]=getParticleData(ParticleID::Kminus); extpart[1]=getParticleData(ParticleID::piminus); extpart[2]=getParticleData(ParticleID::piplus); } else if(imode==7) { extpart[0]=getParticleData(ParticleID::piminus); extpart[1]=getParticleData(ParticleID::Kbar0); extpart[2]=getParticleData(ParticleID::pi0); } else if(imode==8) { extpart[0]=getParticleData(ParticleID::piminus); extpart[1]=getParticleData(ParticleID::pi0); extpart[2]=getParticleData(ParticleID::eta); } else if(imode==9) { extpart[0]=getParticleData(ParticleID::K_S0); extpart[1]=getParticleData(ParticleID::piminus); extpart[2]=getParticleData(ParticleID::K_S0); } else if(imode==10) { extpart[0]=getParticleData(ParticleID::K_L0); extpart[1]=getParticleData(ParticleID::piminus); extpart[2]=getParticleData(ParticleID::K_L0); } else if(imode==11) { extpart[0]=getParticleData(ParticleID::K_S0); extpart[1]=getParticleData(ParticleID::piminus); extpart[2]=getParticleData(ParticleID::K_L0); } // conjugate the particles if needed if(icharge==3) { for(unsigned int ix=0;ix<3;++ix) { if(extpart[ix]->CC()) extpart[ix]=extpart[ix]->CC(); } } // return the answer return extpart; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/KPiCurrent.cc������������������������������������������������0000644�0001750�0001750�00000037501�11754474774�023004� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // KPiCurrent.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the KPiCurrent class. // #include "KPiCurrent.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; using ThePEG::Helicity::outgoing; using ThePEG::Helicity::ScalarWaveFunction; KPiCurrent::KPiCurrent() : _localparameters(true),_transverse(false), _cV(1.),_cS(0.2), _mpi(ZERO), _mK(ZERO) { // set up for the modes in the base class addDecayMode(2,-3); addDecayMode(2,-3); setInitialModes(2); // parameters for the vector resonances _vecmag .push_back(1.);_vecmag .push_back(-0.135); _vecphase.push_back(0.);_vecphase.push_back(180. ); _vecmass .push_back(891.6*MeV);_vecmass .push_back(1412.*MeV); _vecwidth.push_back( 50. *MeV);_vecwidth.push_back( 227.*MeV); // parameters for the scalar resonances _scamag .push_back(0.);_scamag .push_back(1.); _scaphase.push_back(0.);_scaphase.push_back(0.); _scamass .push_back(841.*MeV);_scamass .push_back(1429.*MeV); _scawidth.push_back(618.*MeV);_scawidth.push_back( 287.*MeV); } void KPiCurrent::persistentOutput(PersistentOStream & os) const { os << _cV << _cS << _localparameters << ounit(_mpi,GeV) << ounit(_mK,GeV) << _resmap << _vecmag << _vecphase << _vecwgt << ounit(_vecmass,MeV) << ounit(_vecwidth,MeV) << _scamag << _scaphase << _scawgt << ounit(_scamass,MeV) << ounit(_scawidth,MeV) << _transverse; } void KPiCurrent::persistentInput(PersistentIStream & is, int) { is >> _cV >> _cS >> _localparameters >> iunit(_mpi,GeV) >> iunit(_mK,GeV) >> _resmap >> _vecmag >> _vecphase >> _vecwgt >> iunit(_vecmass,MeV) >> iunit(_vecwidth,MeV) >> _scamag >> _scaphase >> _scawgt >> iunit(_scamass,MeV) >> iunit(_scawidth,MeV) >> _transverse; } void KPiCurrent::doinit() { WeakDecayCurrent::doinit(); // check consistency of parametrers if(_vecmass.size()!=_vecwidth.size()|| _scamass.size()!=_scawidth.size()) { throw InitException() << "Inconsistent parameters in KPiCurrent" << "doinit()" << Exception::abortnow; } // the resonances tPDPtr vec[3]={getParticleData(-323 ),getParticleData(-100323), getParticleData(-30323 )}; tPDPtr sca[3]={getParticleData(-9000321),getParticleData(-10321)}; // reset the masses in the form-factors if needed if(_localparameters) { if(_vecmass.size()<3) { for(unsigned int ix=_vecmass.size();ix<3;++ix) { if(vec[ix]) { _vecmass.push_back( vec[ix]->mass() ); _vecwidth.push_back(vec[ix]->width()); } } } if(_scamass.size()<2) { for(unsigned int ix=_scamass.size();ix<2;++ix) { if(sca[ix]) { _scamass.push_back( sca[ix]->mass() ); _scawidth.push_back(sca[ix]->width()); } } } } else { _vecmass.clear();_vecwidth.clear(); for(unsigned int ix=0;ix<3;++ix) { if(vec[ix]) { _vecmass .push_back(vec[ix]->mass() ); _vecwidth.push_back(vec[ix]->width()); } } _scamass.clear();_scawidth.clear(); for(unsigned int ix=0;ix<2;++ix) { if(sca[ix]) { _scamass .push_back(sca[ix]->mass() ); _scawidth.push_back(sca[ix]->width()); } } } _mpi=getParticleData(ParticleID::piplus)->mass(); _mK =getParticleData(ParticleID::K0 )->mass(); // weight for the vector channels if(_vecmag.size()!=_vecphase.size()) throw InitException() << "The vectors containing the weights and phase for the" << "vector channel must be the same size in" << "KPiCurrent::doinit()" << Exception::runerror; _vecwgt.resize(_vecmag.size()); for(unsigned int ix=0;ix<_vecwgt.size();++ix) { double angle = _vecphase[ix]/180.*Constants::pi; _vecwgt[ix] = _vecmag[ix]*(cos(angle)+Complex(0.,1.)*sin(angle)); } // weight for the scalar channels if(_scamag.size()!=_scaphase.size()) throw InitException() << "The vectors containing the weights and phase for the" << "scalar channel must be the same size in" << "KPiCurrent::doinit()" << Exception::runerror; _scawgt.resize(_scamag.size()); for(unsigned int ix=0;ix<_scawgt.size();++ix) { double angle = _scaphase[ix]/180.*Constants::pi; _scawgt[ix] = _scamag[ix]*(cos(angle)+Complex(0.,1.)*sin(angle)); } // mapping for the resonaces int ires(-1); for(unsigned int ix=0;ix<3;++ix) { if(vec[ix]) ++ires; if(ires<int(_vecwgt.size())) _resmap.push_back(ires); } if(_resmap.size()<_vecwgt.size()) { for(unsigned int ix=_resmap.size();ix<_vecwgt.size();++ix) { _resmap.push_back(-1); } } ires=-1; for(unsigned int ix=0;ix<2;++ix) { if(sca[ix]) ++ires; if(ires<int(_scawgt.size())) _resmap.push_back(ires); } if(_resmap.size()<_vecwgt.size()+_scawgt.size()) { for(unsigned int ix=_resmap.size()-_scawgt.size(); ix<_scawgt.size();++ix) { _resmap.push_back(-1); } } } ClassDescription<KPiCurrent> KPiCurrent::initKPiCurrent; // Definition of the static class description member. void KPiCurrent::Init() { static ClassDocumentation<KPiCurrent> documentation ("The KPiCurrent class", "The K pi weak current has the form of \\cite{Finkemeier:1996dh}.", "%\\cite{Finkemeier:1996dh}\n" "\\bibitem{Finkemeier:1996dh}\n" " M.~Finkemeier and E.~Mirkes,\n" " %``The scalar contribution to tau --> K pi nu/tau,''\n" " Z.\\ Phys.\\ C {\\bf 72}, 619 (1996)\n" " [arXiv:hep-ph/9601275].\n" " %%CITATION = ZEPYA,C72,619;%%\n" ); static Parameter<KPiCurrent,double> interfacecV ("cV", "The weight for the vector contribution", &KPiCurrent::_cV, 1., 0., 10.0, false, false, Interface::limited); static Parameter<KPiCurrent,double> interfacecS ("cS", "The weight for the scalar contribution", &KPiCurrent::_cS, 0.2, -10.0, 10.0, false, false, Interface::limited); static ParVector<KPiCurrent,double> interfaceVectorMagnitude ("VectorMagnitude", "Magnitude of the weight for the different vector resonances", &KPiCurrent::_vecmag, -1, 0., 0, 0, false, false, Interface::nolimits); static ParVector<KPiCurrent,double> interfaceVectorPhase ("VectorPhase", "Phase of the weight of the different vector resonances", &KPiCurrent::_vecphase, -1, 0., 0, 0, false, false, Interface::nolimits); static ParVector<KPiCurrent,double> interfaceScalarMagnitude ("ScalarMagnitude", "Magnitude of the weight for the different scalar resonances", &KPiCurrent::_scamag, -1, 0., 0, 0, false, false, Interface::nolimits); static ParVector<KPiCurrent,double> interfaceScalarPhase ("ScalarPhase", "Phase of the weight of the different scalar resonances", &KPiCurrent::_scaphase, -1, 0., 0, 0, false, false, Interface::nolimits); static Switch<KPiCurrent,bool> interfaceLocalParameters ("LocalParameters", "Use local values for the masses and widths of the resonances or those" " from the ParticleData objects", &KPiCurrent::_localparameters, true, false, false); static SwitchOption interfaceLocalParametersLocal (interfaceLocalParameters, "Local", "Use local values", true); static SwitchOption interfaceLocalParametersParticleData (interfaceLocalParameters, "ParticleData", "Use the values from the particle data objects", false); static Switch<KPiCurrent,bool> interfaceTransverse ("Transverse", "Form of the vector projection operator.", &KPiCurrent::_transverse, false, false, false); static SwitchOption interfaceTransverseTransverse (interfaceTransverse, "Transverse", "Use 1/Q^2 in the projection operator to force it to be transverse", true); static SwitchOption interfaceTransverseMass (interfaceTransverse, "Mass", "Use the on-shell mass in the projection operator", false); static ParVector<KPiCurrent,Energy> interfaceVectorMass ("VectorMass", "Masses of the vector resonances", &KPiCurrent::_vecmass, MeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static ParVector<KPiCurrent,Energy> interfaceVectorWidth ("VectorWidth", "Widths of the vector resonances", &KPiCurrent::_vecwidth, MeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static ParVector<KPiCurrent,Energy> interfaceScalarMass ("ScalarMass", "Masses of the scalar resonances", &KPiCurrent::_scamass, MeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); static ParVector<KPiCurrent,Energy> interfaceScalarWidth ("ScalarWidth", "Widths of the scalar resonances", &KPiCurrent::_scawidth, MeV, -1, 1.0*GeV, ZERO, 10.0*GeV, false, false, Interface::limited); } bool KPiCurrent::accept(vector<int> id) { bool allowed(false); // check there are only two particles if(id.size()!=2){return false;} if ((id[0]==ParticleID::Kminus && id[1]==ParticleID::pi0) || (id[0]==ParticleID::pi0 && id[1]==ParticleID::Kminus) || (id[0]==ParticleID::Kplus && id[1]==ParticleID::pi0) || (id[0]==ParticleID::pi0 && id[1]==ParticleID::Kplus)) allowed=true; // single neutral kaon else if((id[0]==ParticleID::piminus && id[1]==ParticleID::Kbar0) || (id[0]==ParticleID::Kbar0 && id[1]==ParticleID::piminus) || (id[0]==ParticleID::piplus && id[1]==ParticleID::K0) || (id[0]==ParticleID::K0 && id[1]==ParticleID::piplus)) allowed=true; return allowed; } tPDVector KPiCurrent::particles(int icharge, unsigned int imode, int,int) { if(abs(icharge)!=3) return tPDVector(); tPDVector output(2); if(imode==0) { output[0]=getParticleData(ParticleID::Kplus); output[1]=getParticleData(ParticleID::pi0); } else if(imode==1) { output[0]=getParticleData(ParticleID::K0); output[1]=getParticleData(ParticleID::piplus); } if(icharge==-3) { for(unsigned int ix=0;ix<output.size();++ix) { if(output[ix]->CC()) output[ix]=output[ix]->CC(); } } return output; } unsigned int KPiCurrent::decayMode(vector<int> id) { unsigned int imode(0); for(unsigned int ix=0;ix<id.size();++ix) { if(abs(id[ix])==ParticleID::K0) imode=1; } return imode; } bool KPiCurrent::createMode(int icharge,unsigned int imode, DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int, DecayPhaseSpaceChannelPtr phase,Energy upp) { if(abs(icharge)!=3) return false; // make sure that the decays are kinematically allowed tPDPtr part[2]; if(imode==0) { part[0]=getParticleData(ParticleID::Kplus); part[1]=getParticleData(ParticleID::pi0); } else if(imode==1) { part[0]=getParticleData(ParticleID::K0); part[1]=getParticleData(ParticleID::piplus); } else { return false; } Energy min(part[0]->massMin()+part[1]->massMin()); if(min>upp) return false; DecayPhaseSpaceChannelPtr newchannel; // possible resonances tPDPtr res[5]={getParticleData(-323 ),getParticleData(-100323), getParticleData(-30323 ),getParticleData(-9000321), getParticleData(-10321)}; // create the channels for(unsigned int ix=0;ix<5;++ix) { if(res[ix]) { newchannel=new_ptr(DecayPhaseSpaceChannel(*phase)); newchannel->addIntermediate(res[ix],0,0.0,iloc,iloc+1); mode->addChannel(newchannel); } } // reset the masses in the intergrators if needed if(_localparameters) { // for the vectors for(unsigned int ix=0;ix<3;++ix) { if(ix<_vecmass.size()&&res[ix]) { mode->resetIntermediate(res[ix],_vecmass[ix],_vecwidth[ix]); } } // for the scalars for(unsigned int ix=3;ix<5;++ix) { if(ix-3<_scamass.size()&&res[ix]) { mode->resetIntermediate(res[ix],_scamass[ix-3],_scawidth[ix-3]); } } } return true; } void KPiCurrent::dataBaseOutput(ofstream & output,bool header, bool create) const { if(header) output << "update decayers set parameters=\""; if(create) output << "create Herwig::KPiCurrent " << name() << " HeWeakCurrents.so\n"; output << "newdef " << name() << ":LocalParameters " << _localparameters << "\n"; output << "newdef " << name() << ":Transverse " << _transverse << "\n"; output << "newdef " << name() << ":cV " << _cV << "\n"; output << "newdef " << name() << ":cS " << _cS << "\n"; for(unsigned int ix=0;ix<_vecmag.size();++ix) { if(ix<2) output << "newdef "; else output << "insert "; output << name() << ":VectorMagnitude " << ix << " " << _vecmag[ix] << "\n"; if(ix<3) output << "newdef "; else output << "insert "; output << name() << ":VectorPhase " << ix << " " << _vecphase[ix] << "\n"; } for(unsigned int ix=0;ix<_scamag.size();++ix) { if(ix<2) output << "newdef "; else output << "insert "; output << name() << ":ScalarMagnitude " << ix << " " << _scamag[ix] << "\n"; if(ix<2) output << "newdef "; else output << "insert "; output << name() << ":ScalarPhase " << ix << " " << _scaphase[ix] << "\n"; } for(unsigned int ix=0;ix<_vecmass.size();++ix) { if(ix<2) output << "newdef "; else output << "insert "; output << name() << ":VectorMass " << ix << " " << _vecmass[ix]/MeV << "\n"; if(ix<2) output << "newdef "; else output << "insert "; output << name() << ":VectorWidth " << ix << " " << _vecwidth[ix]/MeV << "\n"; } for(unsigned int ix=0;ix<_scamass.size();++ix) { if(ix<2) output << "newdef "; else output << "insert "; output << name() << ":ScalarMass " << ix << " " << _scamass[ix]/MeV << "\n"; if(ix<2) output << "newdef "; else output << "insert "; output << name() << ":ScalarWidth " << ix << " " << _scawidth[ix]/MeV << "\n"; } WeakDecayCurrent::dataBaseOutput(output,false,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } vector<LorentzPolarizationVectorE> KPiCurrent::current(const int imode, const int ichan, Energy & scale, const ParticleVector & decay, DecayIntegrator::MEOption meopt) const { useMe(); if(meopt==DecayIntegrator::Terminate) { for(unsigned int ix=0;ix<2;++ix) ScalarWaveFunction::constructSpinInfo(decay[ix],outgoing,true); return vector<LorentzPolarizationVectorE>(1,LorentzPolarizationVectorE()); } // momentum difference and sum of the mesons Lorentz5Momentum pdiff(decay[0]->momentum()-decay[1]->momentum()); Lorentz5Momentum psum (decay[0]->momentum()+decay[1]->momentum()); psum.rescaleMass(); scale=psum.mass(); // mass2 of intermediate state Energy2 q2 (psum.m2()); Energy2 dot(psum*pdiff); // contribution of the vector resonances Complex vnorm(0.),gterm(0.),sterm(0.),snorm(0.); complex<InvEnergy2> qterm(ZERO); for(unsigned int ix=0;ix<_vecwgt.size();++ix) { vnorm += _vecwgt[ix]; if(ichan<0||_resmap[ix]==ichan) { Complex bw=_vecwgt[ix]*pWaveBreitWigner(q2,ix); gterm +=bw; qterm += _transverse ? bw/sqr(scale) : bw/sqr(_vecmass[ix]); } } // contribution of the scalar resonances for(unsigned int ix=0;ix<_scawgt.size();++ix) { snorm += _scawgt[ix]; if(ichan<0||_resmap[ix+_vecwgt.size()]==ichan) { sterm+=_scawgt[ix]*sWaveBreitWigner(q2,ix); } } // compute the current gterm *=_cV/vnorm; Complex qtermnew = qterm*_cV*dot/vnorm; sterm *= _cS/snorm; LorentzPolarizationVectorE output=gterm*pdiff+(-qtermnew+sterm)*psum; // return the answer if(imode==0) output *= sqrt(0.5); return vector<LorentzPolarizationVectorE>(1,output); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/VectorMesonCurrent.h�����������������������������������������0000644�0001750�0001750�00000015406�11754474774�024427� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VectorMesonCurrent.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef THEPEG_VectorMesonCurrent_H #define THEPEG_VectorMesonCurrent_H // This is the declaration of the VectorMesonCurrent class. #include "WeakDecayCurrent.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The weak current for the production of one (pseudo)-vector meson * * In this case the current is given by * \f[J^\mu = f_V \epsilon^\mu,\f] * where * - \f$f_V\f$ is the decay constant of the vector meson, * - \f$\epsilon^\mu\f$ is the polarizaion vector of the outgoing vector meson. * * @see WeakDecayCurrent. * */ class VectorMesonCurrent: public WeakDecayCurrent { public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor */ VectorMesonCurrent(); //@} 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** @name Methods for the construction of the phase space integrator. */ //@{ /** * Complete the construction of the decay mode for integration. * This version just adds the meson as the daughter of the last * resonance in the phase space channel. * @param icharge The total charge of the outgoing particles in the current. * @param imode The mode in the current being asked for. * @param mode The phase space mode for the integration * @param iloc The location of the of the first particle from the current in * the list of outgoing particles. * @param ires The location of the first intermediate for the current. * @param phase The prototype phase space channel for the integration. * @param upp The maximum possible mass the particles in the current are * allowed to have. * @return Whether the current was sucessfully constructed. */ virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp); /** * The particles produced by the current. This just returns the pseudoscalar * meson. * @param icharge The total charge of the particles in the current. * @param imode The mode for which the particles are being requested * @param iq The PDG code for the quark * @param ia The PDG code for the antiquark * @return The external particles for the current. */ virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); //@} /** * Hadronic current. This version returns the hadronic current described above. * @param imode The mode * @param ichan The phase-space channel the current is needed for. * @param scale The invariant mass of the particles in the current. * @param decay The decay products * @param meopt Option for the calculation of the matrix element * @return The current. */ virtual vector<LorentzPolarizationVectorE> current(const int imode,const int ichan,Energy & scale, const ParticleVector & decay,DecayIntegrator::MEOption meopt) const; /** * Accept the decay. Checks the meson against the list * @param id The id's of the particles in the current. * @return Can this current have the external particles specified. */ virtual bool accept(vector<int> id); /** * Return the decay mode number for a given set of particles in the current. * Checks the meson against the list * @param id The id's of the particles in the current. * @return The number of the mode */ virtual unsigned int decayMode(vector<int> id); /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<VectorMesonCurrent> initVectorMesonCurrent; /** * Private and non-existent assignment operator. */ VectorMesonCurrent & operator=(const VectorMesonCurrent &); private: /** * The PDG code for the meson. */ vector<int> _id; /** * The decay constant */ vector<Energy2> _decay_constant; /** * initial size of the vectors */ unsigned int _initsize; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of VectorMesonCurrent. */ template <> struct BaseClassTrait<Herwig::VectorMesonCurrent,1> { /** Typedef of the base class of VectorMesonCurrent. */ typedef Herwig::WeakDecayCurrent NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VectorMesonCurrent> : public ClassTraitsBase<Herwig::VectorMesonCurrent> { /** Return the class name.*/ static string className() { return "Herwig::VectorMesonCurrent"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwWeakCurrents.so"; } }; /** @endcond */ } #endif /* THEPEG_VectorMesonCurrent_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/WeakCurrents/LeptonNeutrinoCurrent.h��������������������������������������0000644�0001750�0001750�00000013677�11754474774�025160� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // LeptonNeutrinoCurrent.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_LeptonNeutrinoCurrent_H #define HERWIG_LeptonNeutrinoCurrent_H // // This is the declaration of the LeptonNeutrinoCurrent class. // #include "WeakDecayCurrent.h" #include "LeptonNeutrinoCurrent.fh" namespace Herwig { using namespace ThePEG; using ThePEG::Helicity::LorentzPolarizationVector; /** \ingroup Decay * * This class implements the weak decay current for a lepton and a neutrino. * In this case the current is given by * \f$J^\mu = \bar{u}(p_\nu)\gamma^\mu(1-\gamma_5)u(p_\ell)\f$ * where * - \f$p_\nu\f$ is the momentum of the neutrino, * - \f$p_\ell\f$ is the momentum of the charged lepton. * * @see WeakDecayCurrent. * */ class LeptonNeutrinoCurrent: public WeakDecayCurrent { public: /** * Default constructor */ LeptonNeutrinoCurrent() { // set up the modes in the base class addDecayMode(11,-12); addDecayMode(13,-15); addDecayMode(15,-16); setInitialModes(3); } public: /** @name Methods for the construction of the phase space integrator. */ //@{ /** * Complete the construction of the decay mode for integration. * This version just adds the intermediate \f$W\f$ and the leptons. * @param icharge The total charge of the outgoing particles in the current. * @param imode The mode in the current being asked for. * @param mode The phase space mode for the integration * @param iloc The location of the of the first particle from the current in * the list of outgoing particles. * @param ires The location of the first intermediate for the current. * @param phase The prototype phase space channel for the integration. * @param upp The maximum possible mass the particles in the current are * allowed to have. * @return Whether the current was sucessfully constructed. */ virtual bool createMode(int icharge,unsigned int imode,DecayPhaseSpaceModePtr mode, unsigned int iloc,unsigned int ires, DecayPhaseSpaceChannelPtr phase,Energy upp); /** * The particles produced by the current. This just returns the leptons. * @param icharge The total charge of the particles in the current. * @param imode The mode for which the particles are being requested * @param iq The PDG code for the quark * @param ia The PDG code for the antiquark * @return The external particles for the current. */ virtual tPDVector particles(int icharge, unsigned int imode, int iq, int ia); //@} /** * Hadronic current. This version returns the hadronic current described above. * @param imode The mode * @param ichan The phase-space channel the current is needed for. * @param scale The invariant mass of the particles in the current. * @param decay The decay products * @param meopt Option for the calculation of the matrix element * @return The current. */ virtual vector<LorentzPolarizationVectorE> current(const int imode, const int ichan,Energy & scale, const ParticleVector & decay, DecayIntegrator::MEOption meopt) const; /** * Accept the decay. Checks that this is one of the allowed modes. * @param id The id's of the particles in the current. * @return Can this current have the external particles specified. */ virtual bool accept(vector<int> id); /** * Returns the decay mode number for a given set of particles in the current. * @param id The id's of the particles in the current. * @return The number of the mode */ virtual unsigned int decayMode(vector<int> id); /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL * @param create Whether or not to add a statement creating the object */ virtual void dataBaseOutput(ofstream & os,bool header,bool create) const; public: /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * Describe a concrete class with no persistent data. */ static NoPIOClassDescription<LeptonNeutrinoCurrent> initLeptonNeutrinoCurrent; /** * Private and non-existent assignment operator. */ LeptonNeutrinoCurrent & operator=(const LeptonNeutrinoCurrent &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of LeptonNeutrinoCurrent. */ template <> struct BaseClassTrait<Herwig::LeptonNeutrinoCurrent,1> { /** Typedef of the base class of LeptonNeutrinoCurrent. */ typedef Herwig::WeakDecayCurrent NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::LeptonNeutrinoCurrent> : public ClassTraitsBase<Herwig::LeptonNeutrinoCurrent> { /** Return the class name. */ static string className() { return "Herwig::LeptonNeutrinoCurrent"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwWeakCurrents.so"; } }; /** @endcond */ } #endif /* HERWIG_LeptonNeutrinoCurrent_H */ �����������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/�������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464203�017242� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/SemiLeptonicBaryonDecayer.cc���������������������������������������0000644�0001750�0001750�00000041634�11754474773�024637� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SemiLeptonicBaryonDecayer class. // #include "SemiLeptonicBaryonDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/RSSpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/RSSpinorBarWaveFunction.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" #include "ThePEG/Helicity/FermionSpinInfo.h" #include "ThePEG/Helicity/RSFermionSpinInfo.h" #include "ThePEG/StandardModel/StandardModelBase.h" using namespace Herwig; using namespace ThePEG::Helicity; SemiLeptonicBaryonDecayer::SemiLeptonicBaryonDecayer() { // intermediates generateIntermediates(true); } void SemiLeptonicBaryonDecayer::doinitrun() { _current->initrun(); _form->initrun(); DecayIntegrator::doinitrun(); if(initialize()) { _maxwgt.clear(); for(unsigned int ix=0;ix<numberModes();++ix) _maxwgt.push_back(mode(ix)->maxWeight()); } } void SemiLeptonicBaryonDecayer::doinit() { DecayIntegrator::doinit(); // make sure the current got initialised _current->init(); // and the form factors _form->init(); // the channels tPDVector extpart,ptemp; _modemap.clear(); double maxweight; vector<double> channelwgts(1,1.); int id0(0),id1(0),Wcharge(0),inspin,spect1,spect2,inquark,outquark,outspin; Energy min; DecayPhaseSpaceModePtr mode; DecayPhaseSpaceChannelPtr channel; int iq(0),ia(0); for(unsigned int ix=0;ix<_form->numberOfFactors();++ix) { // get the external particles for this mode extpart.resize(2); _form->particleID(ix,id0,id1); _form->formFactorInfo(ix,inspin,outspin,spect1,spect2,inquark,outquark); extpart[0]=getParticleData(id0); extpart[1]=getParticleData(id1); Wcharge =(extpart[0]->iCharge()-extpart[1]->iCharge()); min = extpart[0]->mass()+extpart[0]->widthUpCut() -extpart[1]->mass()+extpart[1]->widthLoCut(); _modemap.push_back(numberModes()); for(unsigned int iy=0;iy<_current->numberOfModes();++iy) { extpart.resize(2); ptemp=_current->particles(Wcharge,iy,iq,ia); for(unsigned int iz=0;iz<ptemp.size();++iz) extpart.push_back(ptemp[iz]); // create the mode mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); // create the first piece of the channel channel = new_ptr(DecayPhaseSpaceChannel(mode)); channel->addIntermediate(extpart[0],0,0.0,-1,1); bool done=_current->createMode(Wcharge,iy,mode,2,1,channel,min); if(done&&abs(Wcharge)==3&&inspin==2&&(outspin==2||outspin==4)) { // the maximum weight maxweight = _maxwgt.size()>numberModes() ? _maxwgt[numberModes()] : 2.; channelwgts.resize(mode->numberChannels(),1./(mode->numberChannels())); addMode(mode,maxweight,channelwgts); } } } } bool SemiLeptonicBaryonDecayer::accept(tcPDPtr parent, const tPDVector & children) const { // find the non-lepton int ibar(0),idtemp,idin(parent->id()); vector<int> idother; bool dummy; tPDVector::const_iterator pit = children.begin(); tPDVector::const_iterator pend = children.end(); for( ; pit!=pend;++pit) { idtemp=(**pit).id(); if(abs(idtemp)>16) ibar=idtemp; else idother.push_back(idtemp); } // check that the form factor exists if(_form->formFactorNumber(idin,ibar,dummy)<0) return false; // and the current return _current->accept(idother); } int SemiLeptonicBaryonDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { // find the ids of the particles for the decay current tPDVector::const_iterator pit = children.begin(); tPDVector::const_iterator pend = children.end(); int idtemp,ibar(0),idin(parent->id()); vector<int> idother; cc=false; for( ; pit!=pend;++pit) { idtemp=(**pit).id(); if(abs(idtemp)>16) ibar=idtemp; else idother.push_back(idtemp); } return _modemap[_form->formFactorNumber(idin,ibar,cc)] +_current->decayMode(idother); } void SemiLeptonicBaryonDecayer::persistentOutput(PersistentOStream & os) const { os << _current << _form << _maxwgt << _modemap; } void SemiLeptonicBaryonDecayer::persistentInput(PersistentIStream & is, int) { is >> _current >> _form >> _maxwgt >> _modemap; } ClassDescription<SemiLeptonicBaryonDecayer> SemiLeptonicBaryonDecayer::initSemiLeptonicBaryonDecayer; // Definition of the static class description member. void SemiLeptonicBaryonDecayer::Init() { static ClassDocumentation<SemiLeptonicBaryonDecayer> documentation ("The SemiLeptonicBaryonDecayer class is designed for" " the semi-leptonic decay of the baryons."); static Reference<SemiLeptonicBaryonDecayer,LeptonNeutrinoCurrent> interfaceCurrent ("Current", "The current for the leptons produced in the decay.", &SemiLeptonicBaryonDecayer::_current, true, true, true, false, false); static Reference<SemiLeptonicBaryonDecayer,BaryonFormFactor> interfaceFormFactor ("FormFactor", "The form factor", &SemiLeptonicBaryonDecayer::_form, true, true, true, false, false); static ParVector<SemiLeptonicBaryonDecayer,double> interfaceMaximumWeight ("MaximumWeight", "The maximum weights for the decays", &SemiLeptonicBaryonDecayer::_maxwgt, 0, 0, 0, 0, 10000, false, false, true); } // combine the currents and form-factors to give the matrix element double SemiLeptonicBaryonDecayer::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { assert(inpart.dataPtr()->iSpin()==2); double me(0.); if(decay[0]->dataPtr()->iSpin()==2) me = halfHalf(ichan,inpart,decay,meopt); else if(decay[0]->dataPtr()->iSpin()==4) me=halfThreeHalf(ichan,inpart,decay,meopt); else assert(false); return me; } // matrix element for a 1/2 -> 1/2 semi-leptonic decay double SemiLeptonicBaryonDecayer::halfHalf(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // extract the leptons ParticleVector leptons; leptons.push_back(decay[decay.size()-2]); leptons.push_back(decay[decay.size()-1]); int mode((abs(decay[1]->id())-11)/12); Energy scale; // spinors etc for the decaying particle if(meopt==Initialize) { // spinors and rho if(inpart.id()>0) SpinorWaveFunction ::calculateWaveFunctions(_inHalf,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); else SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); // work out the mapping for the lepton vector _constants.resize(decay.size()+1); _ispin.resize(decay.size()); int itemp(1); _ibar=0; for(int ix=int(decay.size()-1);ix>=0;--ix) { _ispin[ix]=decay[ix]->data().iSpin(); if(abs(decay[ix]->id())<=16) { itemp*=_ispin[ix]; _constants[ix]=itemp; } else _ibar=ix; } _constants[decay.size()]=1; _constants[_ibar]=_constants[_ibar+1]; ME(DecayMatrixElement(PDT::Spin1Half,_ispin)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(inpart.id()>0) { SpinorWaveFunction:: constructSpinInfo(_inHalf,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorBarWaveFunction::constructSpinInfo(_inHalfBar,decay[0],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(_inHalfBar,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorWaveFunction::constructSpinInfo(_inHalf,decay[0],outgoing,true); } _current->current(mode,ichan,scale,leptons,meopt); return 0.; } // spinors for the decay product if(inpart.id()>0) { SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,decay[0],outgoing); } else { SpinorWaveFunction ::calculateWaveFunctions(_inHalf,decay[0],outgoing); } // get the information on the form-factor int spinin(0),spinout(0),spect1,spect2,inquark,outquark; int id0(inpart.id()),id1(decay[0]->id()); bool cc; int iloc(_form->formFactorNumber(id0,id1,cc)); _form->formFactorInfo(iloc,spinin,spinout,spect1,spect2,inquark,outquark); // work out the value of q and calculate the form factors Lorentz5Momentum q(inpart.momentum()-decay[0]->momentum()); q.rescaleMass(); Energy m0(inpart.mass()),m1(decay[0]->mass()); Energy2 q2(q.mass2()); Lorentz5Momentum sum(inpart.momentum()+decay[0]->momentum()); // calculate the form factors Complex f1v,f2v,f3v,f1a,f2a,f3a; _form->SpinHalfSpinHalfFormFactor(q2,iloc,id0,id1,m0,m1, f1v,f2v,f3v,f1a,f2a,f3a); // calculate the hadronic current for the decay vector<LorentzPolarizationVectorE> hadron(4); Complex left =f1v-f1a-f2v-double((m0-m1)/(m0+m1))*f2a; Complex right =f1v+f1a-f2v+double((m0-m1)/(m0+m1))*f2a; LorentzPolarizationVectorE vtemp; for(unsigned int ix=0;ix<2;++ix) { for(unsigned int iy=0;iy<2;++iy) { vtemp = _inHalf[ix].generalCurrent(_inHalfBar[iy],left,right); complex<Energy> vspin = _inHalf[ix].scalar(_inHalfBar[iy]); complex<Energy> aspin = _inHalf[ix].pseudoScalar(_inHalfBar[iy]); // the momentum like pieces if(inpart.id()>0) { vtemp+= (f2v*vspin+f2a*aspin)/(m0+m1)*sum; vtemp+= (f3v*vspin+f3a*aspin)/(m0+m1)*q; } else { vtemp-= (f2v*vspin-f2a*aspin)/(m0+m1)*sum; vtemp+= (f3v*vspin-f3a*aspin)/(m0+m1)*q; } if(inpart.id()>0) hadron[2*ix+iy]=vtemp; else hadron[2*iy+ix]=vtemp; } } // construct the lepton current vector<LorentzPolarizationVectorE> lepton(_current->current(mode,ichan,scale,leptons,meopt)); // matrix element vector<unsigned int> ihel(decay.size()+1); unsigned int mhel,ix,lhel; for(mhel=0;mhel<hadron.size();++mhel) { ihel[0 ]=mhel/spinout; ihel[_ibar+1]=mhel%spinout; for(lhel=0;lhel<lepton.size();++lhel) { // map the index for the leptons to a helicity state for(ix=decay.size();ix>0;--ix) { if(ix-1!=_ibar) ihel[ix]=(lhel%_constants[ix-1])/_constants[ix]; } ME()(ihel)= lepton[lhel].dot(hadron[mhel])*SM().fermiConstant(); } } // ckm factor double ckm(1.); if(inquark<=6) { if(inquark%2==0) ckm = SM().CKM(inquark/2-1,(abs(outquark)-1)/2); else ckm = SM().CKM(abs(outquark)/2-1,(inquark-1)/2); } // return the answer return 0.5*(ME().contract(_rho)).real()*ckm; } // matrix element for a 1/2 -> 3/2 semi-leptonic decay double SemiLeptonicBaryonDecayer::halfThreeHalf(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // extract the leptons ParticleVector leptons; leptons.push_back(decay[decay.size()-2]); leptons.push_back(decay[decay.size()-1]); int mode((abs(decay[1]->id())-11)/12); Energy scale; // spinors etc for the decaying particle if(meopt==Initialize) { // spinors and rho if(inpart.id()>0) SpinorWaveFunction ::calculateWaveFunctions(_inHalf,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); else SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); // work out the mapping for the lepton vector _constants.resize(decay.size()+1); _ispin.resize(decay.size()); int itemp(1); _ibar=0; for(int ix=int(decay.size()-1);ix>=0;--ix) { _ispin[ix]=decay[ix]->data().iSpin(); if(abs(decay[ix]->id())<=16) { itemp*=_ispin[ix]; _constants[ix]=itemp; } else _ibar=ix; } _constants[decay.size()]=1; _constants[_ibar]=_constants[_ibar+1]; ME(DecayMatrixElement(PDT::Spin1Half,_ispin)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(inpart.id()>0) { SpinorWaveFunction:: constructSpinInfo(_inHalf,const_ptr_cast<tPPtr>(&inpart),incoming,true); RSSpinorBarWaveFunction::constructSpinInfo(_inThreeHalfBar, decay[0],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(_inHalfBar,const_ptr_cast<tPPtr>(&inpart),incoming,true); RSSpinorWaveFunction::constructSpinInfo(_inThreeHalf, decay[0],outgoing,true); } _current->current(mode,ichan,scale,leptons,meopt); return 0.; } // spinors for the decay product LorentzPolarizationVector in=UnitRemoval::InvE*inpart.momentum(); if(inpart.id()>0) { RSSpinorBarWaveFunction:: calculateWaveFunctions(_inThreeHalfBar,decay[0],outgoing); _inHalfBar.resize(_inThreeHalfBar.size()); for(unsigned int ix=0;ix<_inThreeHalfBar.size();++ix) _inHalfBar[ix] = _inThreeHalfBar[ix].dot(in); } else { RSSpinorWaveFunction:: calculateWaveFunctions(_inThreeHalf,decay[0],outgoing); _inHalf.resize(_inThreeHalf.size()); for(unsigned int ix=0;ix<_inThreeHalf.size();++ix) _inHalf[ix] = _inThreeHalf[ix].dot(in); } // get the information on the form-factor int spinin(0),spinout(0),inquark,outquark,spect1,spect2; int id0(inpart.id()),id1(decay[0]->id()); bool cc; int iloc(_form->formFactorNumber(id0,id1,cc)); _form->formFactorInfo(iloc,spinin,spinout,spect1,spect2,inquark,outquark); // work out the value of q and calculate the form factors Lorentz5Momentum q(inpart.momentum()-decay[0]->momentum());q.rescaleMass(); Energy m0(inpart.mass()),m1(decay[0]->mass()); Energy2 q2(q.mass2()); Lorentz5Momentum sum(inpart.momentum()+decay[0]->momentum()); // calculate the form factors Complex f1v,f2v,f3v,f4v,f1a,f2a,f3a,f4a; _form->SpinHalfSpinThreeHalfFormFactor(q2,iloc,id0,id1,m0,m1, f1v,f2v,f3v,f4v,f1a,f2a,f3a,f4a); LorentzPolarizationVector vtemp; complex<InvEnergy2> lS1,lS2,rS1,rS2; complex<InvEnergy> lV,rV; Complex left,right; InvEnergy ms(1./(m0+m1)); InvEnergy2 ms2(ms*ms); if(inpart.id()>0) { left = f1a-f1v; right = f1a+f1v; lS1 = ms2*(f3a-f4a-f3v+f4v); rS1 = ms2*(f3a-f4a+f3v-f4v); lS2 = ms2*(f4a-f4v); rS2 = ms2*(f4a+f4v); lV = ms*(f2a-f2v); rV = ms*(f2a+f2v); } else { left = conj(f1a+f1v); right = conj(f1a-f1v); lS1 = ms2*conj(f3a-f4a+f3v-f4v); rS1 = ms2*conj(f3a-f4a-f3v+f4v); lS2 = ms2*conj(f4a-f4v); rS2 = ms2*conj(f4a+f4v); lV = ms *conj(f2a-f2v); rV = ms *conj(f2a+f2v); } // calculate the hadronic current for the decay LorentzPolarizationVectorE hadron[4][2]; // construct the vectors for the decay Complex scalar1,scalar2; complex<Energy> lfact,rfact; LorentzPolarizationVectorE tvec; LorentzPolarizationVector svec; for(unsigned int iya=0;iya<4;++iya) { for(unsigned int ixa=0;ixa<2;++ixa) { unsigned int ix=iya,iy=ixa; if(decay[0]->id()<0) swap(ix,iy); // scalar like terms lfact = _inHalf[iy].leftScalar(_inHalfBar[ix]); rfact = _inHalf[iy].rightScalar(_inHalfBar[ix]); scalar1 = (lS1*lfact+rS1*rfact)*UnitRemoval::E; scalar2 = (lS2*lfact+rS2*rfact)*UnitRemoval::E; svec = _inHalf[iy].generalCurrent(_inHalfBar[ix],lV/ms,rV/ms)*ms; if(inpart.id()>0) tvec=_inThreeHalfBar[ix].generalCurrent(_inHalf[iy],left,right); else tvec=_inThreeHalf[iy].generalCurrent(_inHalfBar[ix],left,right); hadron[iya][ixa] = tvec+svec*UnitRemoval::E+scalar1*decay[0]->momentum() +scalar2*inpart.momentum(); } } // construct the lepton current vector<LorentzPolarizationVectorE> lepton(_current->current(mode,ichan,scale,leptons,meopt)); vector<unsigned int> ihel(decay.size()+1); for(unsigned int iya=0;iya<4;++iya) { ihel[1]=iya; for(unsigned int ixa=0;ixa<2;++ixa) { ihel[0]=ixa; for(unsigned int lhel=0;lhel<lepton.size();++lhel) { ihel[2] = lhel/2; ihel[3] = lhel%2; ME()(ihel) = lepton[lhel].dot(hadron[iya][ixa])*SM().fermiConstant(); } } } // ckm factor double ckm(1.); if(inquark<=6) { if(inquark%2==0){ckm = SM().CKM(inquark/2-1,(abs(outquark)-1)/2);} else{ckm = SM().CKM(abs(outquark)/2-1,(inquark-1)/2);} } // return the answer return 0.5*(ME().contract(_rho)).real()*ckm; } // output the setup information for the particle database void SemiLeptonicBaryonDecayer::dataBaseOutput(ofstream & output,bool header) const { if(header) output << "update decayers set parameters=\""; DecayIntegrator::dataBaseOutput(output,false); for(unsigned int ix=0;ix<_maxwgt.size();++ix) { output << "insert " << name() << ":MaximumWeight " << ix << " " << _maxwgt[ix] << " \n"; } _current->dataBaseOutput(output,false,true); output << "newdef " << name() << ":Current " << _current->name() << " \n"; _form->dataBaseOutput(output,false,true); output << "newdef " << name() << ":FormFactor " << _form->name() << " \n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ����������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/Baryon1MesonDecayerBase.h������������������������������������������0000644�0001750�0001750�00000034344�11754474773�024043� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_Baryon1MesonDecayerBase_H #define HERWIG_Baryon1MesonDecayerBase_H // // This is the declaration of the Baryon1MesonDecayerBase class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/PDT/BaryonWidthGenerator.fh" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzSpinor.h" #include "ThePEG/Helicity/LorentzSpinorBar.h" #include "ThePEG/Helicity/LorentzRSSpinor.h" #include "ThePEG/Helicity/LorentzRSSpinorBar.h" #include "Baryon1MesonDecayerBase.fh" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>Baryon1MesonDecayerBase</code> class is the base class for the decay of * a baryon to another baryon and a pseudoscalar or vector meson. * All the matrix elements involving either a spin-1/2 or spin-3/2 baryons are * now implemented apart from \f$\frac32\to\frac32+1\f$. The matrix elements * are implemented in a general form with general couplings which must be * supplied in classes inheriting from the one by implementing one of the coupling * members. * * - The matrix element for \f$\frac12\to\frac12+0\f$ * \f[\mathcal{M} = \bar{u}(p_1)(A+B\gamma_5)u(p_0)\f] * - The matrix element for \f$\frac12\to\frac12+1\f$ * \f[\mathcal{M} = \bar{u}(p_1)\epsilon^{*\beta}\left[ * \gamma_\beta(A_1+B_1\gamma_5) * +p_{0\beta}(A_2+B_2\gamma_5)\right]u(p_0)\f] * - The matrix element for \f$\frac12\to\frac32+0\f$ * \f[\bar{u}^\alpha(p_1) p_{0\alpha}\left[A+B\gamma_5\right]u(p_0)\f] * - The matrix element for \f$\frac12\to\frac32+1\f$ * \f[\bar{u}^\alpha(p_1)\epsilon^{*\beta}\left[ * g_{\alpha\beta}(A_1+B_1\gamma_5) * +p_{0\alpha}(A_2+B_2\gamma_5) * +p_{0\alpha}p_{0\beta}(A_3+B_3\gamma_5) * \right]u(p_0)\f] * - The matrix element for \f$\frac32\to\frac12+0\f$ * \f[\bar{u}(p_1) p_{1\alpha}\left[A+B\gamma_5\right]u^\alpha(p_0)\f] * - The matrix element for \f$\frac32\to\frac12+1\f$ * \f[\bar{u}(p_1)\epsilon^{*\beta}\left[ * g_{\alpha\beta}(A_1+B_1\gamma_5) * +p_{1\alpha}(A_2+B_2\gamma_5) * +p_{1\alpha}p_{0\beta}(A_3+B_3\gamma_5) * \right]u^\alpha(p_0)\f] * - The matrix element for \f$\frac32\to\frac32+0\f$ * \f[\bar{u}^\alpha(p_1)\left[(A_1+B_1\gamma_5)g_{\alpha\beta} * +p_{0\alpha}p_{1\beta}(A_2+B_2\gamma_5)\right]u^\beta(p_0)\f] * * @see DecayIntegrator */ class Baryon1MesonDecayerBase: public DecayIntegrator { /** * The BaryonWidthGenerator is a friend to get access to the couplings */ friend class BaryonWidthGenerator; public: /** * Return the matrix element squared for a given mode and phase-space channel. * This version uses the generalised couplings to compute the matrix elements * given above. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt The option for the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay,MEOption meopt) const; /** * Specify the \f$1\to2\f$ matrix element to be used in the running width calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class. * @param coupling The coupling for the matrix element. * @return True or False if this mode can be handled. */ virtual bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) const; protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a scalar. * This method must be implemented in any class inheriting from this one * which includes \f$\frac12\to\frac12+0\f$ decays. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void halfHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex& A,Complex& B) const; /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a vector. * This method must be implemented in any class inheriting from this one * which includes \f$\frac12\to\frac12+1\f$ decays. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. */ virtual void halfHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex& A1,Complex& A2, Complex& B1,Complex& B2) const; /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar. * This method must be implemented in any class inheriting from this one * which includes \f$\frac12\to\frac32+0\f$ or \f$\frac32\to\frac12+0\f$ decays. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void halfThreeHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex& A,Complex& B) const; /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a vector. * This method must be implemented in any class inheriting from this one * which includes \f$\frac12\to\frac32+1\f$ or \f$\frac32\to\frac12+1\f$ decays. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param A3 The coupling \f$A_3\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. * @param B3 The coupling \f$B_3\f$ described above. */ virtual void halfThreeHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex& A1,Complex& A2,Complex& A3, Complex& B1,Complex& B2,Complex& B3) const; /** * Couplings for spin-\f$\frac32\f$ to spin-\f$\frac12\f$ and a scalar. * This method must be implemented in any class inheriting from this one * which includes \f$\frac12\to\frac32+0\f$ or \f$\frac32\to\frac12+0\f$ decays. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void threeHalfHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex& A,Complex& B) const; /** * Couplings for spin-\f$\frac32\f$ to spin-\f$\frac12\f$ and a vector. * This method must be implemented in any class inheriting from this one * which includes \f$\frac12\to\frac32+1\f$ or \f$\frac32\to\frac12+1\f$ decays. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param A3 The coupling \f$A_3\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. * @param B3 The coupling \f$B_3\f$ described above. */ virtual void threeHalfHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex& A1,Complex& A2,Complex& A3, Complex& B1,Complex& B2,Complex& B3) const; /** * Couplings for spin-\f$\frac32\f$ to spin-\f$\frac32\f$ and a scalar. * This method must be implemented in any class inheriting from this one * which includes \f$\frac32\to\frac32+0\f$ decays. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. */ virtual void threeHalfThreeHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A1,Complex& A2, Complex& B1,Complex& B2) const; //@} public: /** * Standard Init function used to initialize the interfaces. */ static void Init(); private: /** * Matrix Element Calculation Members */ //@{ /** * Matrix element for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a scalar. * @param ichan The phase-space channel. * @param inpart The decaying particle. * @param decay The decay products. * @param meopt The option for the matrix element * @return The matrix element squared. */ double halfHalfScalar(const int ichan,const Particle & inpart, const ParticleVector & decay,MEOption meopt) const; /** * Matrix element for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a vector. * @param ichan The phase-space channel. * @param inpart The decaying particle. * @param decay The decay products. * @param meopt The option for the matrix element * @return The matrix element squared. */ double halfHalfVector(const int ichan,const Particle & inpart, const ParticleVector & decay,MEOption meopt) const; /** * Matrix element for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar. * @param ichan The phase-space channel. * @param inpart The decaying particle. * @param decay The decay products. * @param meopt The option for the matrix element * @return The matrix element squared. */ double halfThreeHalfScalar(const int ichan,const Particle & inpart, const ParticleVector & decay,MEOption meopt) const; /** * Matrix element for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a vector. * @param ichan The phase-space channel. * @param inpart The decaying particle. * @param decay The decay products. * @param meopt The option for the matrix element * @return The matrix element squared. */ double halfThreeHalfVector(const int ichan,const Particle & inpart, const ParticleVector & decay,MEOption meopt) const; /** * Matrix element for spin-\f$\frac32\f$ to spin-\f$\frac12\f$ and a scalar. * @param ichan The phase-space channel. * @param inpart The decaying particle. * @param decay The decay products. * @param meopt The option for the matrix element * @return The matrix element squared. */ double threeHalfHalfScalar(const int ichan,const Particle & inpart, const ParticleVector & decay,MEOption meopt) const; /** * Matrix element for spin-\f$\frac32\f$ to spin-\f$\frac12\f$ and a vector. * @param ichan The phase-space channel. * @param inpart The decaying particle. * @param decay The decay products. * @param meopt The option for the matrix element * @return The matrix element squared. */ double threeHalfHalfVector(const int ichan,const Particle & inpart, const ParticleVector & decay,MEOption meopt) const; /** * Matrix element for spin-\f$\frac32\f$ to spin-\f$\frac32\f$ and a scalar. * @param ichan The phase-space channel. * @param inpart The decaying particle. * @param decay The decay products. * @param meopt The option for the matrix element * @return The matrix element squared. */ double threeHalfThreeHalfScalar(const int ichan,const Particle & inpart, const ParticleVector & decay,MEOption meopt) const; //@} private: /** * Describe an abstract base class with persistent data. */ static AbstractNoPIOClassDescription<Baryon1MesonDecayerBase> initBaryon1MesonDecayerBase; /** * Private and non-existent assignment operator. */ Baryon1MesonDecayerBase & operator=(const Baryon1MesonDecayerBase &); private: /** * Spin density matrx */ mutable RhoDMatrix _rho; /** * Spin-\f$\frac12\f$ spinor */ mutable vector<Helicity::LorentzSpinor<SqrtEnergy> > _inHalf; /** * Spin-\f$\frac12\f$ barred spinor */ mutable vector<Helicity::LorentzSpinorBar<SqrtEnergy> > _inHalfBar; /** * Spin-\f$\frac32\f$ spinor */ mutable vector<Helicity::LorentzRSSpinor<SqrtEnergy> > _inThreeHalf; /** * Spin-\f$\frac32\f$ barred spinor */ mutable vector<Helicity::LorentzRSSpinorBar<SqrtEnergy> > _inThreeHalfBar; /** * Polarization vector */ mutable vector<Helicity::LorentzPolarizationVector> _inVec; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of Baryon1MesonDecayerBase. */ template <> struct BaseClassTrait<Herwig::Baryon1MesonDecayerBase,1> { /** Typedef of the base class of Baryon1MesonDecayerBase. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::Baryon1MesonDecayerBase> : public ClassTraitsBase<Herwig::Baryon1MesonDecayerBase> { /** Return the class name. */ static string className() { return "Herwig::Baryon1MesonDecayerBase";} /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_Baryon1MesonDecayerBase_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/Baryon1MesonDecayerBase.cc�����������������������������������������0000644�0001750�0001750�00000104417�11754474773�024200� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the Baryon1MesonDecayerBase class. // #include "Baryon1MesonDecayerBase.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/DecayMode.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/RSSpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/RSSpinorBarWaveFunction.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; AbstractNoPIOClassDescription<Baryon1MesonDecayerBase> Baryon1MesonDecayerBase::initBaryon1MesonDecayerBase; // Definition of the static class description member. void Baryon1MesonDecayerBase::Init() { static ClassDocumentation<Baryon1MesonDecayerBase> documentation ("The Baryon1MesonDecayerBase class is the base class for" " the decays of the baryons to a baryon and a pseudoscalar or vector meson."); } // return the matrix element squared for a given mode and phase-space channel // (inherited from DecayIntegrator and implemented here) double Baryon1MesonDecayerBase::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { double me(0.); // decide which matrix element we are doing // incoming spin-1/2 particle if(inpart.dataPtr()->iSpin()==2) { // decay to spin-1/2 particle if(decay[0]->dataPtr()->iSpin()==2) { // scalar meson if(decay[1]->dataPtr()->iSpin()==1) me=halfHalfScalar(ichan,inpart,decay,meopt); // vector meson else if(decay[1]->dataPtr()->iSpin()==3) me=halfHalfVector(ichan,inpart,decay,meopt); else throw DecayIntegratorError() << "Unknown outgoing meson spin in " << "Baryon1MesonDecayerBase::me2()" << Exception::abortnow; } // decay to spin-3/2 particle else if(decay[0]->dataPtr()->iSpin()==4) { // scalar meson if(decay[1]->dataPtr()->iSpin()==1) me=halfThreeHalfScalar(ichan,inpart,decay,meopt); // vector meson else if(decay[1]->dataPtr()->iSpin()==3) me=halfThreeHalfVector(ichan,inpart,decay,meopt); else throw DecayIntegratorError() << "Unknown outgoing meson spin in " << "Baryon1MesonDecayerBase::me2()" << Exception::abortnow; } // unknown else throw DecayIntegratorError() << "Unknown outgoing baryon spin in " << "Baryon1MesonDecayerBase::me2()" << Exception::abortnow; } // incoming spin-3/2 particle else if(inpart.dataPtr()->iSpin()==4) { // decay to spin-1/2 particle if(decay[0]->dataPtr()->iSpin()==2) { // scalar meson if(decay[1]->dataPtr()->iSpin()==1) me=threeHalfHalfScalar(ichan,inpart,decay,meopt); // vector meson else if(decay[1]->dataPtr()->iSpin()==3) me=threeHalfHalfVector(ichan,inpart,decay,meopt); else throw DecayIntegratorError() << "Unknown outgoing meson spin in " << "Baryon1MesonDecayerBase::me2()" << Exception::abortnow; } // decay to spin-3/2 particle else if(decay[0]->dataPtr()->iSpin()==4) { // scalar meson if(decay[1]->dataPtr()->iSpin()==1) me=threeHalfThreeHalfScalar(ichan,inpart,decay,meopt); else throw DecayIntegratorError() << "Unknown outgoing meson spin in " << "Baryon1MesonDecayerBase::me2()" << Exception::abortnow; } // unknown else throw DecayIntegratorError() << "Unknown outgoing baryon spin in " << "Baryon1MesonDecayerBase::me2()" << Exception::abortnow; } // unknown else throw DecayIntegratorError() << "Unknown incoming spin in " << "Baryon1MesonDecayerBase::me2()" << Exception::abortnow; return me; } // matrix element for the decay of a spin-1/2 fermion to a spin-1/2 fermion and // a pseudoscalar meson double Baryon1MesonDecayerBase:: halfHalfScalar(const int,const Particle & inpart, const ParticleVector & decay,MEOption meopt) const { // spinors etc for the decaying particle if(meopt==Initialize) { // spinors and rho if(inpart.id()>0) SpinorWaveFunction ::calculateWaveFunctions(_inHalf,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); else SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); // matrix element ME(DecayMatrixElement(PDT::Spin1Half,PDT::Spin1Half,PDT::Spin0)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(inpart.id()>0) { SpinorWaveFunction:: constructSpinInfo(_inHalf,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorBarWaveFunction::constructSpinInfo(_inHalfBar,decay[0],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(_inHalfBar,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorWaveFunction::constructSpinInfo(_inHalf,decay[0],outgoing,true); } ScalarWaveFunction::constructSpinInfo(decay[1],outgoing,true); return 0.; } // spinors for the decay product if(inpart.id()>0) { SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,decay[0],outgoing); } else { SpinorWaveFunction ::calculateWaveFunctions(_inHalf,decay[0],outgoing); } // get the couplings Complex A,B; halfHalfScalarCoupling(imode(),inpart.mass(),decay[0]->mass(),decay[1]->mass(),A,B); Complex left,right,meout; // coupling for an incoming particle if(inpart.id()>0) { left = (A-B); right = (A+B); } // coupling for an incoming antiparticle else { left = conj(A+B); right = conj(A-B); } // calculate the matrix element vector<unsigned int> ispin(3,0); unsigned int ix,iy; // Complex output(0.); for(ix=0;ix<2;++ix) { for(iy=0;iy<2;++iy) { if(decay[0]->id()>0){ispin[0]=iy;ispin[1]=ix;} else{ispin[0]=ix;ispin[1]=iy;} ME()(ispin)=_inHalf[iy].generalScalar(_inHalfBar[ix],left,right)/inpart.mass(); // output += norm(ME()(ispin)); } } // test of the matrix elemen// t // Energy m1(inpart.mass()),m2(decay[0]->mass()),m3(decay[1]->mass()); // Energy Qp(sqrt(sqr(m1+m2)-sqr(m3))),Qm(sqrt(sqr(m1-m2)-sqr(m3))); // Complex h1(2.*Qp*A/inpart.mass()),h2(-2.*Qm*B/inpart.mass()); // generator()->log() << "testing 1/2->1/2 0 " // << 0.5*output << " " // << 0.25*(h1*conj(h1)+h2*conj(h2)) << " " // << 0.5*(h1*conj(h1)+h2*conj(h2))/output << endl; // generator()->log() << "testing alpha " << // (norm(0.5*(h1+h2))-norm(0.5*(h1-h2)))/ // (norm(0.5*(h1+h2))+norm(0.5*(h1-h2))) << "\n"; // Energy pcm(Kinematics::pstarTwoBodyDecay(m1,m2,m3)); // generator()->log() << "testing masses " << m1/GeV << " " << m2/GeV << " " << m3/GeV // << "\n"; // generator()->log() << "testing partial " << pcm*0.5*output/8./Constants::pi/MeV // << "\n"; // store the matrix element return (ME().contract(_rho)).real(); } // matrix element for the decay of a spin-1/2 fermion to a spin-1/2 fermion and // a vector meson double Baryon1MesonDecayerBase:: halfHalfVector(const int,const Particle & inpart, const ParticleVector & decay,MEOption meopt) const { // check if the outgoing meson is really a photon bool photon=decay[1]->id()==ParticleID::gamma; // spinors etc for the decaying particle if(meopt==Initialize) { // spinors and rho if(inpart.id()>0) SpinorWaveFunction ::calculateWaveFunctions(_inHalf,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); else SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); // matrix element ME(DecayMatrixElement(PDT::Spin1Half,PDT::Spin1Half,PDT::Spin1)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(inpart.id()>0) { SpinorWaveFunction:: constructSpinInfo(_inHalf,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorBarWaveFunction::constructSpinInfo(_inHalfBar,decay[0],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(_inHalfBar,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorWaveFunction::constructSpinInfo(_inHalf,decay[0],outgoing,true); } VectorWaveFunction::constructSpinInfo(_inVec,decay[1],outgoing,true,photon); return 0.; } // spinors for the decay product if(inpart.id()>0) { SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,decay[0],outgoing); } else { SpinorWaveFunction ::calculateWaveFunctions(_inHalf,decay[0],outgoing); } VectorWaveFunction::calculateWaveFunctions(_inVec,decay[1],outgoing,photon); // get the couplings Complex A1,A2,B1,B2; halfHalfVectorCoupling(imode(),inpart.mass(),decay[0]->mass(),decay[1]->mass(), A1,A2,B1,B2); Complex lS,rS,lV,rV; complex<Energy> scalar; // couplings for an incoming particle if(inpart.id()>0) { lS = (A2-B2); rS = (A2+B2); lV = (A1-B1); rV = (A1+B1); } else { lS = -conj(A2+B2); rS = -conj(A2-B2); lV = conj(A1-B1); rV = conj(A1+B1); } // calculate the matrix element // decide which type of mode to do Energy msum(inpart.mass()+decay[0]->mass()); vector<unsigned int> ispin(3); LorentzVector<complex<Energy> > svec; Complex prod; // Complex output(0.); unsigned int ix,iy; for(ix=0;ix<2;++ix) { for(iy=0;iy<2;++iy) { // scalar like piece scalar = _inHalf[iy].generalScalar(_inHalfBar[ix],lS,rS); // vector like piece svec = _inHalf[iy].generalCurrent(_inHalfBar[ix],lV,rV); if(decay[0]->id()>0) { ispin[0] = iy; ispin[1] = ix; } else { ispin[0] = ix; ispin[1] = iy; } for(ispin[2]=0;ispin[2]<3;++ispin[2]) { ispin[2]=ispin[2]; prod=_inVec[ispin[2]].dot(inpart.momentum())/msum; ME()(ispin)=(svec.dot(_inVec[ispin[2]])+prod*scalar)/inpart.mass(); // output += norm(ME()(ispin)); } } } // test of the matrix element // Energy m1(inpart.mass()),m2(decay[0]->mass()),m3(decay[1]->mass()); // Energy Qp(sqrt(sqr(m1+m2)-sqr(m3))),Qm(sqrt(sqr(m1-m2)-sqr(m3))); // double r2(sqrt(2.)); // Energy pcm(Kinematics::pstarTwoBodyDecay(m1,m2,m3)); // Complex h1(2.*r2*Qp*B1/inpart.mass()),h2(-2.*r2*Qm*A1/inpart.mass()), // h3(2./m3*(Qp*(m1-m2)*B1-Qm*m1*B2*pcm/(m1+m2))/inpart.mass()), // h4(2./m3*(Qm*(m1+m2)*A1+Qp*m1*A2*pcm/(m1+m2))/inpart.mass()); // generator()->log() << "testing 1/2->1/2 1 " // << 0.5*output << " " // << 0.25*(h1*conj(h1)+h2*conj(h2)+h3*conj(h3)+h4*conj(h4)) << " " // << 0.50*(h1*conj(h1)+h2*conj(h2)+h3*conj(h3)+h4*conj(h4))/output // << "\n"; // generator()->log() << "alpha = " << 2.*(norm(h3)+norm(h4))/(norm(h1)+norm(h2))-1. // << "\n"; // return the answer return (ME().contract(_rho)).real(); } // matrix element for the decay of a spin-1/2 fermion to a spin-3/2 fermion and // a scalar meson double Baryon1MesonDecayerBase::halfThreeHalfScalar(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // spinors etc for the decaying particle if(meopt==Initialize) { // spinors and rho if(inpart.id()>0) SpinorWaveFunction ::calculateWaveFunctions(_inHalf,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); else SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); // matrix element ME(DecayMatrixElement(PDT::Spin1Half,PDT::Spin3Half,PDT::Spin0)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(inpart.id()>0) { SpinorWaveFunction:: constructSpinInfo(_inHalf,const_ptr_cast<tPPtr>(&inpart),incoming,true); RSSpinorBarWaveFunction::constructSpinInfo(_inThreeHalfBar, decay[0],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(_inHalfBar,const_ptr_cast<tPPtr>(&inpart),incoming,true); RSSpinorWaveFunction::constructSpinInfo(_inThreeHalf, decay[0],outgoing,true); } ScalarWaveFunction::constructSpinInfo(decay[1],outgoing,true); return 0.; } // spinors for the decay product LorentzPolarizationVector in=UnitRemoval::InvE*inpart.momentum(); if(inpart.id()>0) { RSSpinorBarWaveFunction:: calculateWaveFunctions(_inThreeHalfBar,decay[0],outgoing); _inHalfBar.resize(_inThreeHalfBar.size()); for(unsigned int ix=0;ix<_inThreeHalfBar.size();++ix) _inHalfBar[ix] = _inThreeHalfBar[ix].dot(in); } else { RSSpinorWaveFunction:: calculateWaveFunctions(_inThreeHalf,decay[0],outgoing); _inHalf.resize(_inThreeHalf.size()); for(unsigned int ix=0;ix<_inThreeHalf.size();++ix) _inHalf[ix] = _inThreeHalf[ix].dot(in); } // get the couplings Complex A,B,left,right; Energy msum(inpart.mass()+decay[0]->mass()); halfThreeHalfScalarCoupling(imode(),inpart.mass(),decay[0]->mass(),decay[1]->mass(), A,B); // incoming particle if(inpart.id()>0) { left=(A-B); right=(A+B); } // incoming anti-particle else { left=conj(A+B); right=conj(A-B); } vector<unsigned int> ispin(3,0); //Complex output(0.); for(unsigned ixa=0;ixa<2;++ixa) { for(unsigned int iya=0;iya<4;++iya) { unsigned int ix(iya),iy(ixa); if(decay[0]->id()<0) swap(ix,iy); ispin[0]=ixa; ispin[1]=iya; complex<double> value = _inHalf[iy].generalScalar(_inHalfBar[ix],left,right) *UnitRemoval::E/inpart.mass()/msum; ME()(ispin) = value; //output+= norm(ME()(ispin)); } } double output = (ME().contract(_rho)).real(); // test of the matrix element // Energy m1(inpart.mass()),m2(decay[0]->mass()),m3(decay[1]->mass()); // Energy Qp(sqrt(sqr(m1+m2)-sqr(m3))),Qm(sqrt(sqr(m1-m2)-sqr(m3))); // double r23(sqrt(2./3.)); // Energy pcm(Kinematics::pstarTwoBodyDecay(m1,m2,m3)); // complex<Energy> h1(-2.*r23*pcm*m1/m2*Qm*B/(m1+m2)),h2( 2.*r23*pcm*m1/m2*Qp*A/(m1+m2)); // cout << "testing 1/2->3/2 0 " << inpart.id() << " " // << output << " " // << 0.25*(h1*conj(h1)+h2*conj(h2))/sqr(inpart.mass()) << " " // << 0.25*(h1*conj(h1)+h2*conj(h2))/sqr(inpart.mass())/output << endl; // return the answer return output; } // matrix element for the decay of a spin-1/2 fermion to a spin-3/2 fermion and // a vector meson double Baryon1MesonDecayerBase:: halfThreeHalfVector(const int,const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // check if the outgoing meson is really a photon bool photon=decay[1]->id()==ParticleID::gamma; // spinors etc for the decaying particle if(meopt==Initialize) { // spinors and rho if(inpart.id()>0) SpinorWaveFunction ::calculateWaveFunctions(_inHalf,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); else SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); // matrix element ME(DecayMatrixElement(PDT::Spin1Half,PDT::Spin3Half,PDT::Spin1)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(inpart.id()>0) { SpinorWaveFunction:: constructSpinInfo(_inHalf,const_ptr_cast<tPPtr>(&inpart),incoming,true); RSSpinorBarWaveFunction::constructSpinInfo(_inThreeHalfBar, decay[0],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(_inHalfBar,const_ptr_cast<tPPtr>(&inpart),incoming,true); RSSpinorWaveFunction::constructSpinInfo(_inThreeHalf, decay[0],outgoing,true); } VectorWaveFunction::constructSpinInfo(_inVec,decay[1],outgoing,true,photon); return 0.; } LorentzPolarizationVector in=UnitRemoval::InvE*inpart.momentum(); if(inpart.id()>0) { RSSpinorBarWaveFunction:: calculateWaveFunctions(_inThreeHalfBar,decay[0],outgoing); _inHalfBar.resize(_inThreeHalfBar.size()); for(unsigned int ix=0;ix<_inThreeHalfBar.size();++ix) _inHalfBar[ix] = _inThreeHalfBar[ix].dot(in); } else { RSSpinorWaveFunction:: calculateWaveFunctions(_inThreeHalf,decay[0],outgoing); _inHalf.resize(_inThreeHalf.size()); for(unsigned int ix=0;ix<_inThreeHalf.size();++ix) _inHalf[ix] = _inThreeHalf[ix].dot(in); } ME().zero(); VectorWaveFunction::calculateWaveFunctions(_inVec,decay[1],outgoing,photon); // get the couplings Complex A1,A2,A3,B1,B2,B3; halfThreeHalfVectorCoupling(imode(),inpart.mass(),decay[0]->mass(),decay[1]->mass(), A1,A2,A3,B1,B2,B3); Energy msum(inpart.mass()+decay[0]->mass()); Complex lS,rS,lV,rV,left,right; // incoming particle if(inpart.id()>0) { lS=(A3-B3);rS=(A3+B3); lV=(A2-B2);rV=(A2+B2); left=(A1-B1);right=(A1+B1); } // incoming anti-particle else { lS=conj(A3+B3);rS=conj(A3-B3); lV=-conj(A2-B2);rV=-conj(A2+B2); left=conj(A1+B1);right=conj(A1-B1); } // compute the matrix element vector<unsigned int> ispin(3); LorentzVector<complex<Energy> > svec; Complex prod; complex<Energy> scalar; LorentzSpinor<SqrtEnergy> stemp; LorentzSpinorBar<SqrtEnergy> sbtemp; for(unsigned iya=0;iya<4;++iya) { ispin[1]=iya; // piece where the vector-spinor is dotted with the momentum of the // incoming fermion for(unsigned ixa=0;ixa<2;++ixa) { unsigned int ix(iya),iy(ixa); if(decay[0]->id()<0) swap(ix,iy); scalar = _inHalf[iy].generalScalar (_inHalfBar[ix],lS,rS); svec = _inHalf[iy].generalCurrent(_inHalfBar[ix],lV,rV); ispin[0]=ixa; for(unsigned int iz=0;iz<3;++iz) { ispin[2]=iz; prod=_inVec[iz].dot(inpart.momentum())/msum; ME()(ispin) += (svec.dot(_inVec[iz])+prod*scalar)* UnitRemoval::E/msum/inpart.mass(); } } // the piece where the vector spinor is dotted with the polarization vector for(unsigned int iz=0;iz<3;++iz) { ispin[2]=iz; if(decay[0]->id()>0) sbtemp = _inThreeHalfBar[iya].dot(_inVec[iz]); else stemp = _inThreeHalf[iya].dot(_inVec[iz]); for(unsigned int ixa=0;ixa<2;++ixa) { ispin[0]=ixa; if(decay[0]->id()>0) stemp = _inHalf[ixa]; else sbtemp = _inHalfBar[ixa]; ME()(ispin) += stemp.generalScalar(sbtemp,left,right)/inpart.mass(); } } } double output = (ME().contract(_rho)).real(); // test of the matrix element // Energy m1(inpart.mass()),m2(decay[0]->mass()),m3(decay[1]->mass()); // Energy2 m12(m1*m1),m22(m2*m2),m32(m3*m3); // Energy Qp(sqrt(sqr(m1+m2)-sqr(m3))),Qm(sqrt(sqr(m1-m2)-sqr(m3))); // double r2(sqrt(2.)),r3(sqrt(3.)); // Energy pcm(Kinematics::pstarTwoBodyDecay(m1,m2,m3)); // complex<Energy> h1(-2.*Qp*A1),h2(2.*Qm*B1); // complex<Energy> h3(-2./r3*Qp*(A1-Qm*Qm/m2*A2/msum)); // complex<Energy> h4( 2./r3*Qm*(B1-Qp*Qp/m2*B2/msum)); // complex<Energy> h5(-2.*r2/r3/m2/m3*Qp*(0.5*(m12-m22-m32)*A1+0.5*Qm*Qm*(m1+m2)*A2/msum // +m12*pcm*pcm*A3/msum/msum)); // complex<Energy> h6( 2.*r2/r3/m2/m3*Qm*(0.5*(m12-m22-m32)*B1-0.5*Qp*Qp*(m1-m2)*B2/msum // +m12*pcm*pcm*B3/msum/msum)); // cout << "testing 1/2->3/2 1 " << inpart.id() << " " // << output << " " // << 0.25*(h1*conj(h1)+h2*conj(h2)+h3*conj(h3)+ // h4*conj(h4)+h5*conj(h5)+h6*conj(h6))/sqr(inpart.mass()) << " " // << 0.25*(h1*conj(h1)+h2*conj(h2)+h3*conj(h3)+ // h4*conj(h4)+h5*conj(h5)+h6*conj(h6))/sqr(inpart.mass())/output << endl; // return the answer return output; } // matrix element for the decay of a spin-3/2 fermion to a spin-1/2 fermion and // a scalar meson double Baryon1MesonDecayerBase:: threeHalfHalfScalar(const int,const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // spinors etc for the decaying particle if(meopt==Initialize) { // spinors and rho if(inpart.id()>0) { RSSpinorWaveFunction ::calculateWaveFunctions(_inThreeHalf,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); } else { RSSpinorBarWaveFunction::calculateWaveFunctions(_inThreeHalfBar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); } // matrix element ME(DecayMatrixElement(PDT::Spin3Half,PDT::Spin1Half,PDT::Spin0)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(inpart.id()>0) { RSSpinorWaveFunction:: constructSpinInfo(_inThreeHalf,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorBarWaveFunction::constructSpinInfo(_inHalfBar,decay[0],outgoing,true); } else { RSSpinorBarWaveFunction:: constructSpinInfo(_inThreeHalfBar,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorWaveFunction::constructSpinInfo(_inHalf,decay[0],outgoing,true); } ScalarWaveFunction::constructSpinInfo(decay[1],outgoing,true); return 0.; } // spinors for the decay product if(inpart.id()>0) { SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,decay[0],outgoing); } else { SpinorWaveFunction ::calculateWaveFunctions(_inHalf,decay[0],outgoing); } LorentzPolarizationVector out=UnitRemoval::InvE*decay[0]->momentum(); if(inpart.id()>0) { _inHalf.resize(_inThreeHalf.size()); for(unsigned int ix=0;ix<_inThreeHalf.size();++ix) _inHalf[ix] = _inThreeHalf[ix].dot(out); } else { _inHalfBar.resize(_inThreeHalfBar.size()); for(unsigned int ix=0;ix<_inThreeHalfBar.size();++ix) _inHalfBar[ix] = _inThreeHalfBar[ix].dot(out); } // get the couplings Complex A,B; Energy msum=inpart.mass()+decay[0]->mass(); threeHalfHalfScalarCoupling(imode(),inpart.mass(),decay[0]->mass(),decay[1]->mass(), A,B); Complex left,right; // incoming particle if(inpart.id()>0) { left=(A-B); right=(A+B); } // incoming anti-particle else { left=conj(A+B); right=conj(A-B); } // compute the matrix element vector<unsigned int> ispin(3,0); for(unsigned ixa=0;ixa<2;++ixa) { for(unsigned iya=0;iya<4;++iya) { unsigned int iy=iya,ix=ixa; if(decay[0]->id()<0) swap(ix,iy); ispin[0]=iya; ispin[1]=ixa; ME()(ispin) = _inHalf[iy].generalScalar(_inHalfBar[ix],left,right)* UnitRemoval::E/msum/inpart.mass(); } } double output = (ME().contract(_rho)).real(); // test of the matrix element // Energy m1(inpart.mass()),m2(decay[0]->mass()),m3(decay[1]->mass()); // Energy Qp(sqrt(sqr(m1+m2)-sqr(m3))),Qm(sqrt(sqr(m1-m2)-sqr(m3))); // double r23(sqrt(2./3.)); // Energy pcm(Kinematics::pstarTwoBodyDecay(m1,m2,m3)); // complex<Energy> h1(-2.*r23*pcm*Qm*B/(m1+m2)),h2( 2.*r23*pcm*Qp*A/(m1+m2)); // cout << "testing 3/2->1/2 0 " << inpart.id() << " " // << output << " " // << 0.125*(h1*conj(h1)+h2*conj(h2))/sqr(inpart.mass()) << " " // << 0.125*(h1*conj(h1)+h2*conj(h2))/sqr(inpart.mass())/output << endl; // return the answer return output; } // matrix element for the decay of a spin-3/2 fermion to a spin-3/2 fermion and // a scalar meson double Baryon1MesonDecayerBase::threeHalfThreeHalfScalar(const int, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // spinors etc for the decaying particle if(meopt==Initialize) { // spinors and rho if(inpart.id()>0) { RSSpinorWaveFunction ::calculateWaveFunctions(_inThreeHalf,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); } else { RSSpinorBarWaveFunction::calculateWaveFunctions(_inThreeHalfBar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); } // matrix element ME(DecayMatrixElement(PDT::Spin3Half,PDT::Spin3Half,PDT::Spin0)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(inpart.id()>0) { RSSpinorWaveFunction:: constructSpinInfo(_inThreeHalf,const_ptr_cast<tPPtr>(&inpart),incoming,true); RSSpinorBarWaveFunction::constructSpinInfo(_inThreeHalfBar, decay[0],outgoing,true); } else { RSSpinorBarWaveFunction:: constructSpinInfo(_inThreeHalfBar,const_ptr_cast<tPPtr>(&inpart),incoming,true); RSSpinorWaveFunction::constructSpinInfo(_inThreeHalf, decay[0],outgoing,true); } ScalarWaveFunction::constructSpinInfo(decay[1],outgoing,true); return 0.; } // spinors for the decay product LorentzPolarizationVector in=UnitRemoval::InvE*inpart.momentum(); if(inpart.id()>0) { RSSpinorBarWaveFunction:: calculateWaveFunctions(_inThreeHalfBar,decay[0],outgoing); } else { RSSpinorWaveFunction:: calculateWaveFunctions(_inThreeHalf,decay[0],outgoing); } _inHalf.resize(_inThreeHalf.size()); _inHalfBar.resize(_inThreeHalfBar.size()); for(unsigned int ix=0;ix<_inThreeHalf.size();++ix) { _inHalf[ix] = _inThreeHalf[ix].dot(in); _inHalfBar[ix] = _inThreeHalfBar[ix].dot(in); } // get the couplings Complex A1,B1,A2,B2; Energy msum(inpart.mass()+decay[0]->mass()); threeHalfThreeHalfScalarCoupling(imode(),inpart.mass(),decay[0]->mass(), decay[1]->mass(),A1,A2,B1,B2); Complex left1,right1,left2,right2; // incoming particle if(inpart.id()>0) { left1=(A1-B1); right1=(A1+B1); left2=(A2-B2); right2=(A2+B2); } // incoming anti-particle else { left1=(A1+B1); right1=(A1-B1); left2=(A2+B2); right2=(A2-B2); } // compute the matrix element vector<unsigned int> ispin(3,0); for(unsigned ixa=0;ixa<4;++ixa) { for(unsigned iya=0;iya<4;++iya) { unsigned int iy=iya,ix=ixa; if(decay[0]->id()<0) swap(ix,iy); ispin[0]=iya; ispin[1]=ixa; ME()(ispin)=(_inThreeHalf[iy].generalScalar(_inThreeHalfBar[ix],left1,right1) +_inHalf[iy].generalScalar( _inHalfBar[ix],left2,right2) *UnitRemoval::E2/sqr(msum))/inpart.mass(); } } // return the answer return (ME().contract(_rho)).real(); } // matrix element for the decay of a spin-3/2 fermion to a spin-1/2 fermion and // a vector meson double Baryon1MesonDecayerBase:: threeHalfHalfVector(const int,const Particle & inpart, const ParticleVector & decay,MEOption meopt) const { // check if the outgoing meson is really a photon bool photon=decay[1]->id()==ParticleID::gamma; // spinors etc for the decaying particle if(meopt==Initialize) { // spinors and rho if(inpart.id()>0) { RSSpinorWaveFunction ::calculateWaveFunctions(_inThreeHalf,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); } else { RSSpinorBarWaveFunction::calculateWaveFunctions(_inThreeHalfBar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); } // matrix element ME(DecayMatrixElement(PDT::Spin3Half,PDT::Spin1Half,PDT::Spin1)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(inpart.id()>0) { RSSpinorWaveFunction:: constructSpinInfo(_inThreeHalf,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorBarWaveFunction::constructSpinInfo(_inHalfBar,decay[0],outgoing,true); } else { RSSpinorBarWaveFunction:: constructSpinInfo(_inThreeHalfBar,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorWaveFunction::constructSpinInfo(_inHalf,decay[0],outgoing,true); } VectorWaveFunction::constructSpinInfo(_inVec,decay[1],outgoing,true,photon); return 0.; } // spinors for the decay product if(inpart.id()>0) { SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,decay[0],outgoing); } else { SpinorWaveFunction ::calculateWaveFunctions(_inHalf,decay[0],outgoing); } LorentzPolarizationVector out=UnitRemoval::InvE*decay[0]->momentum(); if(inpart.id()>0) { _inHalf.resize(_inThreeHalf.size()); for(unsigned int ix=0;ix<_inThreeHalf.size();++ix) _inHalf[ix] = _inThreeHalf[ix].dot(out); } else { _inHalfBar.resize(_inThreeHalfBar.size()); for(unsigned int ix=0;ix<_inThreeHalfBar.size();++ix) _inHalfBar[ix] = _inThreeHalfBar[ix].dot(out); } ME().zero(); VectorWaveFunction::calculateWaveFunctions(_inVec,decay[1],outgoing,photon); // get the couplings Complex A1,A2,A3,B1,B2,B3,prod,meout; threeHalfHalfVectorCoupling(imode(),inpart.mass(),decay[0]->mass(),decay[1]->mass(), A1,A2,A3,B1,B2,B3); Energy msum(inpart.mass()+decay[0]->mass()); Complex lS,rS,lV,rV,left,right; // incoming particle if(inpart.id()>0) { lS=(A3-B3);rS=(A3+B3); lV=(A2-B2);rV=(A2+B2); left=(A1-B1);right=(A1+B1); } // incoming anti-particle else { lS=conj(A3+B3);rS=conj(A3-B3); lV=-conj(A2-B2);rV=-conj(A2+B2); left=conj(A1+B1);right=conj(A1-B1); } // compute the matrix element vector<unsigned int> ispin(3); LorentzVector<complex<Energy> > svec; LorentzSpinor<SqrtEnergy> stemp; LorentzSpinorBar<SqrtEnergy> sbtemp; complex<Energy> scalar; for(unsigned iya=0;iya<4;++iya) { ispin[0]=iya; for(unsigned ixa=0;ixa<2;++ixa) { unsigned int iy=iya,ix=ixa; if(decay[0]->id()<0) swap(ix,iy); scalar = _inHalf[iy].generalScalar( _inHalfBar[ix],lS,rS); svec = _inHalf[iy].generalCurrent(_inHalfBar[ix],lV,rV); ispin[1]=ixa; for(unsigned int iz=0;iz<3;++iz) { ispin[2]=iz; prod=_inVec[iz].dot(decay[0]->momentum())/msum; ME()(ispin) += (svec.dot(_inVec[iz])+prod*scalar)* UnitRemoval::E/msum/inpart.mass(); } } // the piece where the vector spinor is dotted with the polarization vector for(unsigned iz=0;iz<3;++iz) { ispin[2]=iz; if(decay[0]->id()>0) stemp = _inThreeHalf[iya].dot(_inVec[iz]); else sbtemp = _inThreeHalfBar[iya].dot(_inVec[iz]); for(unsigned int ixa=0;ixa<2;++ixa) { ispin[1]=ixa; if(decay[0]->id()>0) sbtemp = _inHalfBar[ixa]; else stemp = _inHalf[ixa]; ME()(ispin) += stemp.generalScalar(sbtemp,left,right)/inpart.mass(); } } } double output = (ME().contract(_rho)).real(); // testing code // Energy m1(inpart.mass()),m2(decay[0]->mass()),m3(decay[1]->mass()); // Energy2 m12(m1*m1),m22(m2*m2),m32(m3*m3); // Energy Qp(sqrt(sqr(m1+m2)-sqr(m3))),Qm(sqrt(sqr(m1-m2)-sqr(m3))); // double r2(sqrt(2.)),r3(sqrt(3.)); // Energy pcm(Kinematics::pstarTwoBodyDecay(m1,m2,m3)); // complex<Energy> h1(-2.*Qp*A1),h2(2.*Qm*B1); // complex<Energy> h3(-2./r3*Qp*(A1-Qm*Qm/m1*A2/msum)); // complex<Energy> h4( 2./r3*Qm*(B1-Qp*Qp/m1*B2/msum)); // complex<Energy> h5(-2.*r2/r3/m1/m3*Qp*(0.5*(m22-m12-m32)*A1+0.5*Qm*Qm*(m1+m2)*A2/msum // +m12*pcm*pcm*A3/msum/msum)); // complex<Energy> h6( 2.*r2/r3/m1/m3*Qm*(0.5*(m22-m12-m32)*B1-0.5*Qp*Qp*(m2-m1)*B2/msum // +m22*pcm*pcm*B3/msum/msum)); // cout << "testing 3/2->1/2 1 " << inpart.id() << " " // << output << " " // << 0.25*(h1*conj(h1)+h2*conj(h2)+h3*conj(h3)+ // h4*conj(h4)+h5*conj(h5)+h6*conj(h6))/sqr(inpart.mass()) << " " // << 0.25*(h1*conj(h1)+h2*conj(h2)+h3*conj(h3)+ // h4*conj(h4)+h5*conj(h5)+h6*conj(h6))/sqr(inpart.mass())/output << endl; // return the answer return output; } void Baryon1MesonDecayerBase::halfHalfScalarCoupling(int,Energy,Energy,Energy, Complex&,Complex&) const { throw DecayIntegratorError() << "Baryon1MesonDecayerBase::halfHalfScalarCoupling()" << " called from base class this must be implemented" << " in the inheriting class" << Exception::abortnow; } void Baryon1MesonDecayerBase::halfHalfVectorCoupling(int,Energy,Energy,Energy, Complex&,Complex&, Complex&,Complex&) const { throw DecayIntegratorError() << "Baryon1MesonDecayerBase::halfHalfVectorCoupling()" << " called from base class this must be implemented " << "in the inheriting class" << Exception::abortnow; } void Baryon1MesonDecayerBase::halfThreeHalfScalarCoupling(int,Energy,Energy,Energy, Complex&,Complex&) const { throw DecayIntegratorError() << "Baryon1MesonDecayerBase::halfThreeHalfScalarCoupling" << "() called from base class this must be implemented" << " in the inheriting class" << Exception::abortnow; } void Baryon1MesonDecayerBase::halfThreeHalfVectorCoupling(int,Energy,Energy,Energy, Complex&,Complex&, Complex&,Complex&, Complex&,Complex&) const { throw DecayIntegratorError() << "Baryon1MesonDecayerBase::halfThreeHalfVectorCoupling" << "() called from base class this must be implemented " << "in the inheriting class" << Exception::abortnow; } void Baryon1MesonDecayerBase::threeHalfHalfScalarCoupling(int,Energy,Energy,Energy, Complex&,Complex&) const { throw DecayIntegratorError() << "Baryon1MesonDecayerBase::threeHalfHalfScalarCoupling" << "() called from base class this must be implemented" << " in the inheriting class" << Exception::abortnow; } void Baryon1MesonDecayerBase::threeHalfHalfVectorCoupling(int,Energy,Energy,Energy, Complex&,Complex&, Complex&,Complex&, Complex&,Complex&) const { throw DecayIntegratorError() << "Baryon1MesonDecayerBase::threeHalfHalfVectorCoupling" << "() called from base class this must be implemented " << "in the inheriting class" << Exception::abortnow; } void Baryon1MesonDecayerBase::threeHalfThreeHalfScalarCoupling(int,Energy,Energy, Energy,Complex&, Complex&,Complex&, Complex&) const { throw DecayIntegratorError() << "Baryon1MesonDecayerBase::threeHalfThreeHalfScalar" << "Coupling() called from base class this must be " << "implemented in the inheriting class" << Exception::abortnow; } bool Baryon1MesonDecayerBase::twoBodyMEcode(const DecayMode & dm,int & mecode, double & coupling) const { coupling=1.; unsigned int inspin(dm.parent()->iSpin()),outspin,outmes; ParticleMSet::const_iterator pit(dm.products().begin()); bool order; if((**pit).iSpin()%2==0) { order=true; outspin=(**pit).iSpin(); ++pit;outmes=(**pit).iSpin(); } else { order=false; outmes=(**pit).iSpin();++pit; outspin=(**pit).iSpin(); } mecode=-1; if(inspin==2) { if(outspin==2){if(outmes==1){mecode=101;}else{mecode=102;}} else if(outspin==4){if(outmes==1){mecode=103;}else{mecode=104;}} } else if(inspin==4) { if(outspin==2){if(outmes==1){mecode=105;}else{mecode=106;}} else if(outspin==4){if(outmes==1){mecode=107;}else{mecode=108;}} } return order; } void Baryon1MesonDecayerBase::dataBaseOutput(ofstream & os,bool header) const { DecayIntegrator::dataBaseOutput(os,header); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/OmegaXiStarPionDecayer.cc������������������������������������������0000644�0001750�0001750�00000012760�11754474773�024100� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the OmegaXiStarPionDecayer class. // #include "OmegaXiStarPionDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; OmegaXiStarPionDecayer::OmegaXiStarPionDecayer() { // the ids of the particles idin_ = 3334; idout_ = 3324; // the couplings from the paper Acomm_ = 20.91e-8; AP_ = -9.20e-8; AS_ = -6.32e-8; BP_ = 230.1e-8; BS_ = -100.8e-8; // maximum weight for the decay wgtmax_=0.0032; // intermediates generateIntermediates(false); } void OmegaXiStarPionDecayer::doinit() { Baryon1MesonDecayerBase::doinit(); // set up the phase space tPDVector extpart(3); DecayPhaseSpaceModePtr mode; vector<double> wgt(0); extpart[0]=getParticleData(idin_); extpart[1]=getParticleData(idout_); extpart[2]=getParticleData(-211); mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); addMode(mode,wgtmax_,wgt); } void OmegaXiStarPionDecayer::doinitrun() { Baryon1MesonDecayerBase::doinitrun(); if(initialize()) wgtmax_=mode(0)->maxWeight(); } int OmegaXiStarPionDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); // must be two outgoing particles if(children.size()!=2){return imode;} // ids of the particles int id0(parent->id()); int id1(children[0]->id()); int id2(children[1]->id()); if(id0==idin_) { if((id1==idout_&&id2==-211)|| (id2==idout_&&id1==-211)) imode=0; } else if(id0==-idin_) { if((id1==-idout_&&id2==211)|| (id2==-idout_&&id1==211)) imode=0; } // charge conjugation cc=id0<0; // return the answer return imode; } void OmegaXiStarPionDecayer::persistentOutput(PersistentOStream & os) const { os << Acomm_ << AP_ << AS_ << BP_ << BS_ << idin_ << idout_ << wgtmax_; } void OmegaXiStarPionDecayer::persistentInput(PersistentIStream & is, int) { is >> Acomm_ >> AP_ >> AS_ >> BP_ >> BS_ >> idin_ >> idout_ >> wgtmax_; } ClassDescription<OmegaXiStarPionDecayer> OmegaXiStarPionDecayer::initOmegaXiStarPionDecayer; // Definition of the static class description member. void OmegaXiStarPionDecayer::Init() { static ClassDocumentation<OmegaXiStarPionDecayer> documentation ("The OmegaXiStarPionDecayer class performs the weak decay" " of the Omega to Xi*0 and pi-", "The decay of the $\\Omega^-$ to $\\Xi^{*0}\\pi^-$ was simulated" " using the model of \\cite{Duplancic:2004dy}.", "\\bibitem{Duplancic:2004dy}\n" "G.~Duplancic, H.~Pasagic and J.~Trampetic,\n" "Phys.\\ Rev.\\ D {\\bf 70} (2004) 077506 [arXiv:hep-ph/0405162].\n" "%%CITATION = PHRVA,D70,077506;%%\n"); static Parameter<OmegaXiStarPionDecayer,double> interfaceAcomm ("Acomm", "The Acomm coupling for the decay", &OmegaXiStarPionDecayer::Acomm_, 20.91e-8, -1.e-5, 1.e-5, false, false, true); static Parameter<OmegaXiStarPionDecayer,double> interfaceAP ("AP", "The A_P coupling for the decay", &OmegaXiStarPionDecayer::AP_, -9.20e-8, -1.e-5, 1.e-5, false, false, true); static Parameter<OmegaXiStarPionDecayer,double> interfaceAS ("AS", "The A_S coupling for the decay", &OmegaXiStarPionDecayer::AS_, -6.32e-8, -1.e-5, 1.e-5, false, false, true); static Parameter<OmegaXiStarPionDecayer,double> interfaceBP ("BP", "The B_P coupling for the decay", &OmegaXiStarPionDecayer::BP_, 230.1e-8, -1.e-5, 1.e-5, false, false, true); static Parameter<OmegaXiStarPionDecayer,double> interfaceBS ("BS", "The B_S coupling for the decay", &OmegaXiStarPionDecayer::BS_, -100.8e-8, -1.e-5, 1.e-5, false, false, true); static Parameter<OmegaXiStarPionDecayer,double> interfaceMaximumWeight ("MaximumWeight", "The maximum weight for the decay", &OmegaXiStarPionDecayer::wgtmax_, 0.0032, 0., 100., false, false, false); static Parameter<OmegaXiStarPionDecayer,int> interfaceIncoming ("Incoming", "The PDF code for the incoming baryon", &OmegaXiStarPionDecayer::idin_, 3334, 0, 1000000, false, false, true); static Parameter<OmegaXiStarPionDecayer,int> interfaceOutgoing ("Outgoing", "The PDF code for the outgoing baryon", &OmegaXiStarPionDecayer::idout_, 3324, 0, 1000000, false, false, true); } // couplings for spin-3/2 to spin-3/2 spin-0 void OmegaXiStarPionDecayer:: threeHalfThreeHalfScalarCoupling(int,Energy,Energy,Energy, Complex&A1,Complex&A2,Complex&B1,Complex&B2) const { useMe(); A2=0.; B2=0.; A1=Acomm_+AP_+AS_; B1=BP_+BS_; } void OmegaXiStarPionDecayer::dataBaseOutput(ofstream & output,bool header) const { if(header) output << "update decayers set parameters=\""; Baryon1MesonDecayerBase::dataBaseOutput(output,false); output << "newdef " << name() << ":Acomm " << Acomm_ << "\n"; output << "newdef " << name() << ":AP " << AP_ << "\n"; output << "newdef " << name() << ":AS " << AS_ << "\n"; output << "newdef " << name() << ":BP " << BP_ << "\n"; output << "newdef " << name() << ":BS " << BS_ << "\n"; output << "newdef " << name() << ":MaximumWeight " << wgtmax_ << "\n"; output << "newdef " << name() << ":Incoming " << idin_ << "\n"; output << "newdef " << name() << ":Outgoing " << idout_ << "\n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ����������������herwig++-2.6.0.orig/Decay/Baryon/SU3BaryonOctetOctetPhotonDecayer.h���������������������������������0000644�0001750�0001750�00000024015�11754474773�025700� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_SU3BaryonOctetOctetPhotonDecayer_H #define HERWIG_SU3BaryonOctetOctetPhotonDecayer_H // This is the declaration of the SU3BaryonOctetOctetPhotonDecayer class. #include "Baryon1MesonDecayerBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>SU3BaryonOctetOctetPhotonDecayer</code> class performs the decay of * a baryon octet to a different baryon octet and a photon. * * The Lagrangian is taken to be * \f[ * ir_d\left[ {\rm tr}\left(\bar{R}\sigma_{\mu\nu}\{f^{\mu\nu}_+,B\}\right) * +{\rm tr}\left(\bar{B}\sigma_{\mu\nu}\{f^{\mu\nu}_+,R\}\right) * \right] * +ir_f\left[ {\rm tr}\left(\bar{R}\sigma_{\mu\nu}[f^{\mu\nu}_+,B] \right) * +{\rm tr}\left(\bar{B}\sigma_{\mu\nu}[f^{\mu\nu}_+,R] \right) * \right], * \f] * where \f$B\f$ is the matrix field for the ground state baryon multiplet, \f$R\f$ * is the * matrix field for the excited baryon multiplet and \f$f^{\mu\nu}_+\f$ is the chiral * field strength tensor for the electromagentic field given by * \f[ f^{\mu\nu}_+ = Q F^{\mu\nu} = \left(\begin{array}{ccc}\frac23&0&0\\ * 0&-\frac13&0\\ * 0&0&-\frac13 * \end{array}\right) F^{\mu\nu},\f] * where \f$F^{\mu\nu}\f$ is the electromagentic field strength tensor. * This form is used for the case where both baryon multiplets have the same parity and * an additional \f$\gamma_5\f$ is added for the case where the multiplets have * opposite parity. * * For the decay of spin-\f$\frac32\f$ baryons we use the form * \f[ * ir_d\left[ {\rm tr}\left(\bar{R}^\mu\gamma_\nu\{f^{\mu\nu}_+,B\}\right) * +{\rm tr}\left(\bar{B}\gamma_\nu\{f^{\mu\nu}_+,R^\mu\}\right) * \right] * +ir_f\left[ {\rm tr}\left(\bar{R}^\mu\gamma_\nu[f^{\mu\nu}_+,B] \right) * +{\rm tr}\left(\bar{B}\gamma_\nu[f^{\mu\nu}_+,R^\mu] \right) * \right], * \f] * where \f$R^\mu\f$ is the matrix field for the excited baryon multiplet. * This form is used when the baryon's have the same parity and this form with * an additional \f$\gamma_5\f$ when they have opposite parity. * * This is one of a number of decayers based on \f$SU(3)\f$ symmetry which are * intended for the decay of excited baryons. * * @see Baryon1MesonDecayerBase * @see SU3BaryonOctetOctetPhotonDecayer * @see SU3BaryonDecupletOctetPhotonDecayer * @see SU3BaryonDecupletOctetScalarDecayer * @see SU3BaryonSingletOctetPhotonDecayer * @see SU3BaryonSingletOctetScalarDecayer * @see SU3BaryonOctetDecupletScalarDecayer * @see SU3BaryonOctetOctetScalarDecayer * */ class SU3BaryonOctetOctetPhotonDecayer: public Baryon1MesonDecayerBase { public: /** * Default constructor. */ SU3BaryonOctetOctetPhotonDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a vector. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. */ virtual void halfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A1,Complex& A2, Complex& B1,Complex& B2) const; /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a vector. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param A3 The coupling \f$A_3\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. * @param B3 The coupling \f$B_3\f$ described above. */ virtual void threeHalfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A1,Complex& A2,Complex& A3, Complex& B1,Complex& B2,Complex& B3) const; //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<SU3BaryonOctetOctetPhotonDecayer> initSU3BaryonOctetOctetPhotonDecayer; /** * Private and non-existent assignment operator. */ SU3BaryonOctetOctetPhotonDecayer & operator=(const SU3BaryonOctetOctetPhotonDecayer &); private: /** * set-up the modes */ void setupModes(unsigned int) const; private: /** * The couplings of comutator term. */ InvEnergy _lf; /** * The couplings of anticomutator term. */ InvEnergy _ld; /** * the relative parities of the two baryon multiplets */ bool _parity; /** * PDG codes for the lower lying baryon octet baryons */ //@{ /** * The PDG code for the \f$p\f$-like member of the outgoing octet. */ int _proton; /** * The PDG code for the \f$n\f$-like member of the outgoing octet. */ int _neutron; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ int _sigma0; /** * The PDG code for the \f$\Sigma^+\f$-like member of the outgoing octet. */ int _sigmap; /** * The PDG code for the \f$\Sigma^-\f$-like member of the outgoing octet. */ int _sigmam; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ int _lambda; /** * The PDG code for the \f$\Xi^0\f$-like member of the outgoing octet. */ int _xi0; /** * The PDG code for the \f$\Xi^-\f$-like member of the outgoing octet. */ int _xim; //@} /** * PDG codes for the higher baryon octet baryons */ //@{ /** * The PDG code for the \f$p\f$-like member of the outgoing octet. */ int _eproton; /** * The PDG code for the \f$n\f$-like member of the outgoing octet. */ int _eneutron; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ int _esigma0; /** * The PDG code for the \f$\Sigma^+\f$-like member of the outgoing octet. */ int _esigmap; /** * The PDG code for the \f$\Sigma^-\f$-like member of the outgoing octet. */ int _esigmam; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ int _elambda; /** * The PDG code for the \f$\Xi^0\f$-like member of the outgoing octet. */ int _exi0; /** * The PDG code for the \f$\Xi^-\f$-like member of the outgoing octet. */ int _exim; //@} /** * PDG code for the incoming baryons */ mutable vector<int> _incomingB; /** * PDG code for the outgoing baryons */ mutable vector<int> _outgoingB; /** * the maximum weight for the various modes */ vector<double> _maxweight; /** * The couplings for the different modes. */ mutable vector<InvEnergy> _prefactor; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SU3BaryonOctetOctetPhotonDecayer. */ template <> struct BaseClassTrait<Herwig::SU3BaryonOctetOctetPhotonDecayer,1> { /** Typedef of the base class of SU3BaryonOctetOctetPhotonDecayer. */ typedef Herwig::Baryon1MesonDecayerBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SU3BaryonOctetOctetPhotonDecayer> : public ClassTraitsBase<Herwig::SU3BaryonOctetOctetPhotonDecayer> { /** Return the class name.*/ static string className() { return "Herwig::SU3BaryonOctetOctetPhotonDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SU3BaryonOctetOctetPhotonDecayer_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/NonLeptonicHyperonDecayer.cc���������������������������������������0000644�0001750�0001750�00000021115�11754474773�024656� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the NonLeptonicHyperonDecayer class. // #include "NonLeptonicHyperonDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void NonLeptonicHyperonDecayer::doinitrun() { Baryon1MesonDecayerBase::doinitrun(); if(initialize()) { _maxweight.clear(); for(unsigned int ix=0;ix<numberModes();++ix) _maxweight.push_back(mode(ix)->maxWeight()); } } void NonLeptonicHyperonDecayer::doinit() { Baryon1MesonDecayerBase::doinit(); unsigned int isize(_incomingB.size()); if(isize!=_outgoingB.size()||isize!=_outgoingM.size()||isize!=_a.size()|| isize!=_b.size() ||isize!=_maxweight.size()) throw InitException() << "Inconsistent parameters in " << "NonLeptonicHyperonDecayer::doinit()" << Exception::runerror; // set up the decay modes tPDVector extpart(3); DecayPhaseSpaceModePtr mode; double wgtmax; vector<double> wgt(0); for(unsigned int ix=0;ix<_incomingB.size();++ix) { extpart[0]=getParticleData(_incomingB[ix]); extpart[1]=getParticleData(_outgoingB[ix]); extpart[2]=getParticleData(_outgoingM[ix]); mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); wgtmax = _maxweight.size()>numberModes() ? _maxweight[numberModes()] : 1.; addMode(mode,wgtmax,wgt); // test of the asummetries // Energy e1 = (sqr(extpart[0]->mass())+sqr(extpart[1]->mass())- // sqr(extpart[2]->mass()))/2./extpart[0]->mass(); // double btemp = _b[ix]*sqrt((e1-extpart[1]->mass())/(e1+extpart[1]->mass())); // double alpha = -2.*(_a[ix]*btemp)/(sqr(_a[ix])+sqr(btemp)); // generator()->log() << "Asymmetry parameter for " << extpart[0]->PDGName() << "->" // << extpart[1]->PDGName() << "," << extpart[2]->PDGName() // << " = " << alpha << "\n"; } } NonLeptonicHyperonDecayer::NonLeptonicHyperonDecayer() { // lambda -> p pi- _incomingB.push_back(3122);_outgoingB.push_back(2212);_outgoingM.push_back(-211); _a.push_back(3.25e-7);_b.push_back(-23.4e-7); _maxweight.push_back(1.4); // lambda -> n p0 _incomingB.push_back(3122);_outgoingB.push_back(2112);_outgoingM.push_back(111); _a.push_back(-2.30e-7);_b.push_back(16.5e-7); _maxweight.push_back(0.7); // xi- -> lambda pi- _incomingB.push_back(3312);_outgoingB.push_back(3122);_outgoingM.push_back(-211); _a.push_back(-4.51e-7);_b.push_back(-14.8e-7); _maxweight.push_back(2.0); // xi0 -> lambda pi0 _incomingB.push_back(3322);_outgoingB.push_back(3122);_outgoingM.push_back(111); _a.push_back(3.19e-7);_b.push_back(10.5e-7); _maxweight.push_back(2.0); // sigma+ -> p pi0 _incomingB.push_back(3222);_outgoingB.push_back(2212);_outgoingM.push_back(111); _a.push_back(-2.93e-7);_b.push_back(-32.5e-7); _maxweight.push_back(1.2); // sigma- -> n pi- _incomingB.push_back(3112);_outgoingB.push_back(2112);_outgoingM.push_back(-211); _a.push_back(4.27e-7);_b.push_back(1.52e-7); _maxweight.push_back(2.); // sigma+ -> n pi+ _incomingB.push_back(3222);_outgoingB.push_back(2112);_outgoingM.push_back(211); _a.push_back(0.13e-7);_b.push_back(-44.4e-7); _maxweight.push_back(1.1); // initial size of the vectors _initsize=_incomingB.size(); // intermediates generateIntermediates(false); } int NonLeptonicHyperonDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); // must be two outgoing pa4rticles if(children.size()!=2) return imode; // ids of the particles int id0=parent->id(); int id1(children[0]->id()); int id2(children[1]->id()); unsigned int ix(0); do { if(id0==_incomingB[ix]) { if((id1==_outgoingB[ix]&&id2==_outgoingM[ix])|| (id2==_outgoingB[ix]&&id1==_outgoingM[ix])) imode=ix; } else if(id0==-_incomingB[ix]) { if((id1==-_outgoingB[ix]&&id2==-_outgoingM[ix])|| (id2==-_outgoingB[ix]&&id1==-_outgoingM[ix])) imode=ix; if(((id1==-_outgoingB[ix]&&id2==_outgoingM[ix])|| (id2==-_outgoingB[ix]&&id1==_outgoingM[ix]))&& (_outgoingM[ix]==111||_outgoingM[ix]==221||_outgoingM[ix]==331|| _outgoingM[ix]==223||_outgoingM[ix]==333)) imode=ix; } ++ix; } while(ix<_incomingB.size()&&imode<0); // charge conjugate cc=id0<0; // return the answer return imode; } void NonLeptonicHyperonDecayer::persistentOutput(PersistentOStream & os) const { os << _incomingB << _outgoingB << _outgoingM << _a << _b << _maxweight << _initsize; } void NonLeptonicHyperonDecayer::persistentInput(PersistentIStream & is, int) { is >> _incomingB >> _outgoingB >> _outgoingM >> _a >> _b >> _maxweight >> _initsize; } ClassDescription<NonLeptonicHyperonDecayer> NonLeptonicHyperonDecayer::initNonLeptonicHyperonDecayer; // Definition of the static class description member. void NonLeptonicHyperonDecayer::Init() { static ClassDocumentation<NonLeptonicHyperonDecayer> documentation ("The NonLeptonicHyperonDecayer class performs the non-leptonic" " weak decay of the hyperons.", "The non-leptonic hyperon decays were simulated using the " "NonLeptonicHyperonDecayer class which implements the model of" "\\cite{Borasoy:1999md}", "\\bibitem{Borasoy:1999md}\n" "B.~Borasoy and B.~R.~Holstein,\n" "Phys.\\ Rev.\\ D {\\bf 59} (1999) 094025 [arXiv:hep-ph/9902351].\n" "%%CITATION = PHRVA,D59,094025;%%\n"); static ParVector<NonLeptonicHyperonDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &NonLeptonicHyperonDecayer::_maxweight, 0, 0, 0, 0., 100., false, false, true); static ParVector<NonLeptonicHyperonDecayer,long> interfaceIncomingBaryon ("IncomingBaryon", "The PDG code for the incoming baryon.", &NonLeptonicHyperonDecayer::_incomingB, 0, 0, 0, 0, 1000000, false, false, true); static ParVector<NonLeptonicHyperonDecayer,long> interfaceOutgoingBaryon ("OutgoingBaryon", "The PDG code for the outgoing baryon.", &NonLeptonicHyperonDecayer::_outgoingB, 0, 0, 0, 0, 1000000, false, false, true); static ParVector<NonLeptonicHyperonDecayer,long> interfaceOutgoingMeson ("OutgoingMeson", "The PDG code for the outgoing meson.", &NonLeptonicHyperonDecayer::_outgoingM, 0, 0, 0, -1000000, 1000000, false, false, true); static ParVector<NonLeptonicHyperonDecayer,double> interfaceA ("CouplingA", "The A coupling for the decay", &NonLeptonicHyperonDecayer::_a, 0, 0, 0, -1e-5, 1e-5, false, false, true); static ParVector<NonLeptonicHyperonDecayer,double> interfaceB ("CouplingB", "The B coupling for the decay", &NonLeptonicHyperonDecayer::_b, 0, 0, 0, -1e-5, 1e-5, false, false, true); } // couplings for spin-1/2 to spin-1/2 spin-0 void NonLeptonicHyperonDecayer::halfHalfScalarCoupling(int imode, Energy,Energy,Energy, Complex& A,Complex& B) const { useMe(); A=_a[imode]; B=_b[imode]; } void NonLeptonicHyperonDecayer::dataBaseOutput(ofstream & output,bool header) const { if(header) output << "update decayers set parameters=\""; for(unsigned int ix=0;ix<_incomingB.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; output << "newdef " << name() << ":IncomingBaryon " << ix << " " << _incomingB[ix] << "\n"; output << "newdef " << name() << ":OutgoingBaryon " << ix << " " << _outgoingB[ix] << "\n"; output << "newdef " << name() << ":OutgoingMeson " << ix << " " << _outgoingM[ix] << "\n"; output << "newdef " << name() << ":CouplingA " << ix << " " << _a[ix] << "\n"; output << "newdef " << name() << ":CouplingB " << ix << " " << _b[ix] << "\n"; } else { output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; output << "insert " << name() << ":IncomingBaryon " << ix << " " << _incomingB[ix] << "\n"; output << "insert " << name() << ":OutgoingBaryon " << ix << " " << _outgoingB[ix] << "\n"; output << "insert " << name() << ":OutgoingMeson " << ix << " " << _outgoingM[ix] << "\n"; output << "insert " << name() << ":CouplingA " << ix << " " << _a[ix] << "\n"; output << "insert " << name() << ":CouplingB " << ix << " " << _b[ix] << "\n"; } } Baryon1MesonDecayerBase::dataBaseOutput(output,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/KornerKramerCharmDecayer.h�����������������������������������������0000644�0001750�0001750�00000021751�11754474773�024306� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERIWG_KornerKramerCharmDecayer_H #define HERIWG_KornerKramerCharmDecayer_H // // This is the declaration of the KornerKramerCharmDecayer class. // #include "Baryon1MesonDecayerBase.h" #include "ThePEG/StandardModel/StandardModelBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>KornerKramerCharmDecayer</code> class implements the model of * Z.Phys.C55,659 (1992) for the non-leptonic decay of charm baryons. * The couplings of the model are calculated at initialisation and stored. These * couplings are then returned when requested using the coupling members of the * base class. * * @see Baryon1MesonDecayerBase. * */ class KornerKramerCharmDecayer: public Baryon1MesonDecayerBase { public: /** * Default constructor. */ KornerKramerCharmDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) const; protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a scalar. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void halfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A,Complex& B) const; /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a vector. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. */ virtual void halfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A1,Complex& A2, Complex& B1,Complex& B2) const; /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void halfThreeHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A,Complex& B) const; /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a vector. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param A3 The coupling \f$A_3\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. * @param B3 The coupling \f$B_3\f$ described above. */ virtual void halfThreeHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A1,Complex& A2,Complex& A3, Complex& B1,Complex& B2,Complex& B3) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<KornerKramerCharmDecayer> initKornerKramerCharmDecayer; /** * Private and non-existent assignment operator. */ KornerKramerCharmDecayer & operator=(const KornerKramerCharmDecayer &); private: /** * one over the number of colours */ double oneNC_; /** * Pion decay constant, \f$f_\pi\f$. */ Energy fpi_; /** * Kaon decay constant, \f$f_K\f$. */ Energy fk_; /** * \f$\rho\f$ decay constant, \f$f_\rho\f$. */ double frho_; /** * \f$K^*\f$ decay constans, \f$f_{K^*}\f$. */ double fKstar_; /** * Axial-Vector mass for the form factor for the factorizing diagrams * for the \f$c\to d\f$ transition. */ Energy mdcplus_; /** * Vector mass for the form factor for the factorizing diagrams * for the \f$c\to d\f$ transition. */ Energy mdcminus_; /** * Axial-Vector mass for the form factor for the factorizing diagrams * for the \f$c\to s\f$ transition. */ Energy mscplus_; /** * Vector mass for the form factor for the factorizing diagrams * for the \f$c\to s\f$ transition. */ Energy mscminus_; /** * Perturbative factor, \f$c_+\f$. */ double cplus_; /** * Perturbative factor, \f$c_-\f$. */ double cminus_; /** * \f$H_2\f$ factor for the non-factorizing diagrams. */ Energy H2_; /** * \f$H_3\f$ factor for the non-factorizing diagrams. */ Energy H3_; /** * SU(4) invariants for the various modes */ //@{ /** * The \f$I_1\f$ invariant */ vector<double> I1_; /** * The \f$I_2\f$ invariant */ vector<double> I2_; /** * The \f$I_3\f$ invariant */ vector<double> I3_; /** * The \f$I_4\f$ invariant */ vector<double> I4_; /** * The \f$I_5\f$ invariant */ vector<double> I5_; /** * The \f$\hat{I}_3\f$ invariant */ vector<double> Ihat3_; /** * The \f$\hat{I}_4\f$ invariant */ vector<double> Ihat4_; //@} /** * The PDG code for the incoming baryon. */ vector<int> incoming_; /** * The PDG code for the outgoing baryon. */ vector<int> outgoingB_; /** * The PDG code for the outgoing meson. */ vector<int> outgoingM_; /** * The maximum weight. */ vector<double> maxweight_; /** * The couplings for the different modes. */ //@{ /** * The first A coupling */ vector<double> A1_; /** * The second A coupling */ vector<InvEnergy> A2_; /** * The third A coupling */ vector<InvEnergy2> A3_; /** * The first B coupling */ vector<double> B1_; /** * The second B coupling */ vector<InvEnergy> B2_; /** * The third B coupling */ vector<InvEnergy2> B3_; //@} /** * Initial size of the vectors */ unsigned int initsize_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of KornerKramerCharmDecayer. */ template <> struct BaseClassTrait<Herwig::KornerKramerCharmDecayer,1> { /** Typedef of the base class of KornerKramerCharmDecayer. */ typedef Herwig::Baryon1MesonDecayerBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::KornerKramerCharmDecayer> : public ClassTraitsBase<Herwig::KornerKramerCharmDecayer> { /** Return the class name.*/ static string className() { return "Herwig::KornerKramerCharmDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERIWG_KornerKramerCharmDecayer_H */ �����������������������herwig++-2.6.0.orig/Decay/Baryon/SU3BaryonOctetOctetScalarDecayer.cc��������������������������������0000644�0001750�0001750�00000050203�11754474773�025772� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SU3BaryonOctetOctetScalarDecayer class. // #include "SU3BaryonOctetOctetScalarDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; SU3BaryonOctetOctetScalarDecayer::SU3BaryonOctetOctetScalarDecayer() { // default values of the parameters // these are the values for first excited multiplet // the couplings of the anticommutator and communtator terms _sf= 0.11; _sd= 0.60; // the relative parities of the two baryon multiplets _parity=true; // the pion decay constant _fpi=130.7*MeV; // PDG codes for the various ground state baryons _proton = 2212; _neutron = 2112; _sigma0 = 3212; _sigmap = 3222; _sigmam = 3112; _lambda = 3122; _xi0 = 3322; _xim = 3312; // PDG codes for the various excited baryons _eproton = 12212; _eneutron = 12112; _esigma0 = 13212; _esigmap = 13222; _esigmam = 13112; _elambda = 23122; _exi0 = 13322; _exim = 13312; // intermediates generateIntermediates(false); } void SU3BaryonOctetOctetScalarDecayer::doinit() { Baryon1MesonDecayerBase::doinit(); // set up the decay modes setupModes(1); // set up the phase space and the couplings tPDVector extpart(3); DecayPhaseSpaceModePtr mode; double wgtmax; vector<double> wgt(0); for(unsigned int ix=0;ix<_incomingB.size();++ix) { extpart[0]=getParticleData(_incomingB[ix]); extpart[1]=getParticleData(_outgoingB[ix]); extpart[2]=getParticleData(_outgoingM[ix]); mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); wgtmax = _maxweight.size()>numberModes() ? _maxweight[numberModes()] : 1.; addMode(mode,wgtmax,wgt); // testing code // Energy MR=extpart[0]->mass(); // Energy MB=extpart[1]->mass(); // Energy Mp=extpart[2]->mass(); // Energy kp = 0.5/MR*sqrt((sqr(MR)-sqr(MB+Mp))*(sqr(MR)-sqr(MB-Mp))); // Energy width; // if(_parity) { // width = sqr((MR+MB)/MR)*kp/(8.*Constants::pi)* // sqr(_prefactor[ix])*(sqr(MR-MB)-sqr(Mp)); // } // else { // width = sqr((MR-MB)/MR)*kp/(8.*Constants::pi)* // sqr(_prefactor[ix])*(sqr(MR+MB)-sqr(Mp)); // } // generator()->log() << "Partial Width for " // << extpart[0]->PDGName() << "->" // << extpart[1]->PDGName() << " " // << extpart[2]->PDGName() << " " // << width/GeV << "\n"; } } void SU3BaryonOctetOctetScalarDecayer::doinitrun() { Baryon1MesonDecayerBase::doinitrun(); if(initialize()) { _maxweight.clear(); for(unsigned int ix=0;ix<numberModes();++ix) _maxweight.push_back(mode(ix)->maxWeight()); } } int SU3BaryonOctetOctetScalarDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); if(_incomingB.size()==0){setupModes(0);} // must be two outgoing particles if(children.size()!=2){return imode;} // ids of the particles int id0(parent->id()); int id1(children[0]->id()); int id2(children[1]->id()); unsigned int ix(0); cc =false; do { if(id0==_incomingB[ix]) { if((id1==_outgoingB[ix]&&id2==_outgoingM[ix])|| (id2==_outgoingB[ix]&&id1==_outgoingM[ix])) { imode=ix; cc=false; } } else if(id0==-_incomingB[ix]) { if((id1==-_outgoingB[ix]&&id2==-_outgoingM[ix])|| (id2==-_outgoingB[ix]&&id1==-_outgoingM[ix])) { imode=ix; cc=true; } if(((id1==-_outgoingB[ix]&&id2==_outgoingM[ix])|| (id2==-_outgoingB[ix]&&id1==_outgoingM[ix]))&& (_outgoingM[ix]==111||_outgoingM[ix]==221||_outgoingM[ix]==331|| _outgoingM[ix]==223||_outgoingM[ix]==333)) { imode=ix; cc=true; } } ++ix; } while(ix<_incomingB.size()&&imode<0); return imode; } void SU3BaryonOctetOctetScalarDecayer::persistentOutput(PersistentOStream & os) const { os << _sf << _sd << _parity << ounit(_fpi,GeV) << _proton << _neutron << _sigma0 << _sigmap << _sigmam << _lambda << _xi0 << _xim << _eproton << _eneutron << _esigma0 << _esigmap << _esigmam << _elambda << _exi0 << _exim << _incomingB << _outgoingB << _outgoingM << _maxweight << ounit(_prefactor,1./GeV); } void SU3BaryonOctetOctetScalarDecayer::persistentInput(PersistentIStream & is, int) { is >> _sf >> _sd >> _parity >> iunit(_fpi,GeV) >> _proton >> _neutron >> _sigma0 >> _sigmap >> _sigmam >> _lambda >> _xi0 >> _xim >> _eproton >> _eneutron >> _esigma0 >> _esigmap >> _esigmam >> _elambda >> _exi0 >> _exim >> _incomingB >> _outgoingB >> _outgoingM >> _maxweight >> iunit(_prefactor,1./GeV); } ClassDescription<SU3BaryonOctetOctetScalarDecayer> SU3BaryonOctetOctetScalarDecayer::initSU3BaryonOctetOctetScalarDecayer; // Definition of the static class description member. void SU3BaryonOctetOctetScalarDecayer::Init() { static ClassDocumentation<SU3BaryonOctetOctetScalarDecayer> documentation ("The SU3BaryonOctetOctetScalarDecayer class is designed for the" " decay of excited baryon resonances assuming SU(3) symmetry"); static Parameter<SU3BaryonOctetOctetScalarDecayer,double> interfaceFcoupling ("Fcoupling", "The F coupling of the baryon resonances", &SU3BaryonOctetOctetScalarDecayer::_sf, 0.60, -20.0, 20.0, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,double> interfaceDcoupling ("Dcoupling", "The D coupling of the baryon resonances", &SU3BaryonOctetOctetScalarDecayer::_sd, 0.11, -20.0, 20.0, false, false, true); static Switch<SU3BaryonOctetOctetScalarDecayer,bool> interfaceParity ("Parity", "The relative parities of the two multiplets.", &SU3BaryonOctetOctetScalarDecayer::_parity, true, false, false); static SwitchOption interfaceParitySame (interfaceParity, "Same", "Same parity", true); static SwitchOption interfaceParityDifferent (interfaceParity, "Different", "Opposite parity", false); static Parameter<SU3BaryonOctetOctetScalarDecayer,Energy> interfaceFpi ("Fpi", "The pion decay constant.", &SU3BaryonOctetOctetScalarDecayer::_fpi, MeV, 130.7*MeV, 100.0*MeV, 200.0*MeV, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceProton ("Proton", "The PDG code for the lighter proton-like baryon.", &SU3BaryonOctetOctetScalarDecayer::_proton, 2212, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceNeutron ("Neutron", "The PDG code for the lighter neutron-like baryon.", &SU3BaryonOctetOctetScalarDecayer::_neutron, 2112, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceSigmap ("Sigma+", "The PDG code for the lighter Sigma+-like baryon.", &SU3BaryonOctetOctetScalarDecayer::_sigmap, 3222, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceSigma0 ("Sigma0", "The PDG code for the lighter Sigma0-like baryon.", &SU3BaryonOctetOctetScalarDecayer::_sigma0, 3212, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceSigmam ("Sigma-", "The PDG code for the lighter Sigma--like baryon.", &SU3BaryonOctetOctetScalarDecayer::_sigmam, 3112, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceLambda ("Lambda", "The PDG code for the lighter Lambda-like baryon.", &SU3BaryonOctetOctetScalarDecayer::_lambda, 3122, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceXi0 ("Xi0", "The PDG code for the lighter Xi0-like baryon.", &SU3BaryonOctetOctetScalarDecayer::_xi0, 3322, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceXim ("Xi-", "The PDG code for the lighter Xi--like baryon.", &SU3BaryonOctetOctetScalarDecayer::_xim, 3312, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceExcitedProton ("ExcitedProton", "The PDG code for the heavier proton-like baryon.", &SU3BaryonOctetOctetScalarDecayer::_eproton, 12212, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceExcitedNeutron ("ExcitedNeutron", "The PDG code for the heavier neutron-like baryon.", &SU3BaryonOctetOctetScalarDecayer::_eneutron, 12112, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceExcitedSigmap ("ExcitedSigma+", "The PDG code for the heavier Sigma+-like baryon.", &SU3BaryonOctetOctetScalarDecayer::_esigmap, 13222, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceExcitedSigma0 ("ExcitedSigma0", "The PDG code for the heavier Sigma0-like baryon.", &SU3BaryonOctetOctetScalarDecayer::_esigma0, 13212, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceExcitedSigmam ("ExcitedSigma-", "The PDG code for the heavier Sigma--like baryon.", &SU3BaryonOctetOctetScalarDecayer::_esigmam, 13112, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceExcitedLambda ("ExcitedLambda", "The PDG code for the heavier Lambda-like baryon.", &SU3BaryonOctetOctetScalarDecayer::_elambda, 23112, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceExcitedXi0 ("ExcitedXi0", "The PDG code for the heavier Xi0-like baryon.", &SU3BaryonOctetOctetScalarDecayer::_exi0, 13322, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetScalarDecayer,int> interfaceExcitedXim ("ExcitedXi-", "The PDG code for the heavier Xi--like baryon.", &SU3BaryonOctetOctetScalarDecayer::_exim, 13312, 0, 1000000, false, false, true); static ParVector<SU3BaryonOctetOctetScalarDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &SU3BaryonOctetOctetScalarDecayer::_maxweight, 0, 0, 0, 0., 10000., false, false, true); } // couplings for spin-1/2 to spin-1/2 spin-0 void SU3BaryonOctetOctetScalarDecayer::halfHalfScalarCoupling(int imode,Energy m0, Energy m1,Energy, Complex& A, Complex& B) const { if(_parity) { A=0.; B=_prefactor[imode]*(m0+m1); } else { A=_prefactor[imode]*(m0-m1); B=0.; } } // couplings for spin-1/2 to spin-3/2 spin-0 void SU3BaryonOctetOctetScalarDecayer::threeHalfHalfScalarCoupling(int imode,Energy m0, Energy m1,Energy, Complex& A, Complex& B) const { if(_parity) { A=_prefactor[imode]*(m0+m1); B=0.; } else { A=0.; B=_prefactor[imode]*(m0+m1); } } // set up the decay modes void SU3BaryonOctetOctetScalarDecayer::setupModes(unsigned int iopt) const { if(_incomingB.size()!=0&&iopt==0){return;} if(iopt==1) { _outgoingB.clear(); _incomingB.clear(); _outgoingM.clear(); } // set up for the various different decay modes vector<double> factor; vector<int> intemp,outtemp,mestemp; double ort(1./sqrt(2.)),ors(1./sqrt(6.)),rt(sqrt(2.)); // decays of the excited proton intemp.push_back(_eproton);outtemp.push_back(_neutron);mestemp.push_back(211); factor.push_back((_sd+_sf)); intemp.push_back(_eproton);outtemp.push_back(_proton);mestemp.push_back(111); factor.push_back(-ort*(_sd+_sf)); intemp.push_back(_eproton);outtemp.push_back(_sigmap);mestemp.push_back(311); factor.push_back(_sd-_sf); intemp.push_back(_eproton);outtemp.push_back(_sigma0);mestemp.push_back(321); factor.push_back(ort*(_sd-_sf)); intemp.push_back(_eproton);outtemp.push_back(_proton);mestemp.push_back(221); factor.push_back(ors*(3.*_sf-_sd)); intemp.push_back(_eproton);outtemp.push_back(_lambda);mestemp.push_back(321); factor.push_back(-ors*(_sd+3.*_sf)); // decays of the excited neutron intemp.push_back(_eneutron);outtemp.push_back(_proton);mestemp.push_back(-211); factor.push_back((_sd+_sf)); intemp.push_back(_eneutron);outtemp.push_back(_neutron);mestemp.push_back(111); factor.push_back(ort*(_sd+_sf)); intemp.push_back(_eneutron);outtemp.push_back(_sigmam);mestemp.push_back(321); factor.push_back(_sd-_sf); intemp.push_back(_eneutron);outtemp.push_back(_sigma0);mestemp.push_back(311); factor.push_back(ort*(_sd-_sf)); intemp.push_back(_eneutron);outtemp.push_back(_neutron);mestemp.push_back(221); factor.push_back(ors*(3.*_sf-_sd)); intemp.push_back(_eneutron);outtemp.push_back(_lambda);mestemp.push_back(311); factor.push_back(-ors*(_sd+3.*_sf)); // decays of the excited lambda intemp.push_back(_elambda);outtemp.push_back(_sigma0);mestemp.push_back(111); factor.push_back(2.*_sd*ors); intemp.push_back(_elambda);outtemp.push_back(_sigmap);mestemp.push_back(-211); factor.push_back(2.*_sd*ors); intemp.push_back(_elambda);outtemp.push_back(_sigmam);mestemp.push_back(211); factor.push_back(2.*_sd*ors); intemp.push_back(_elambda);outtemp.push_back(_lambda);mestemp.push_back(221); factor.push_back(2.*_sd*ors); intemp.push_back(_elambda);outtemp.push_back(_xim);mestemp.push_back(321); factor.push_back(ors*(3.*_sf-_sd)); intemp.push_back(_elambda);outtemp.push_back(_xi0);mestemp.push_back(311); factor.push_back(ors*(3.*_sf-_sd)); intemp.push_back(_elambda);outtemp.push_back(_proton);mestemp.push_back(-321); factor.push_back(-ors*(3.*_sf+_sd)); intemp.push_back(_elambda);outtemp.push_back(_neutron);mestemp.push_back(-311); factor.push_back(-ors*(3.*_sf+_sd)); // decays of the excited sigma+ intemp.push_back(_esigmap);outtemp.push_back(_sigmap);mestemp.push_back(111); factor.push_back(rt*_sf); intemp.push_back(_esigmap);outtemp.push_back(_sigma0);mestemp.push_back(211); factor.push_back(-rt*_sf); intemp.push_back(_esigmap);outtemp.push_back(_xi0);mestemp.push_back(321); factor.push_back(_sd+_sf); intemp.push_back(_esigmap);outtemp.push_back(_proton);mestemp.push_back(-311); factor.push_back(_sd-_sf); intemp.push_back(_esigmap);outtemp.push_back(_lambda);mestemp.push_back(211); factor.push_back(2.*ors*_sd); intemp.push_back(_esigmap);outtemp.push_back(_sigmap);mestemp.push_back(221); factor.push_back(2.*ors*_sd); // decays of the excited sigma0 intemp.push_back(_esigma0);outtemp.push_back(_sigmam);mestemp.push_back(211); factor.push_back(rt*_sf); intemp.push_back(_esigma0);outtemp.push_back(_sigmap);mestemp.push_back(-211); factor.push_back(-rt*_sf); intemp.push_back(_esigma0);outtemp.push_back(_xim);mestemp.push_back(321); factor.push_back(ort*(_sd+_sf)); intemp.push_back(_esigma0);outtemp.push_back(_xi0);mestemp.push_back(311); factor.push_back(ort*(_sd+_sf)); intemp.push_back(_esigma0);outtemp.push_back(_proton);mestemp.push_back(-321); factor.push_back(ort*(_sd-_sf)); intemp.push_back(_esigma0);outtemp.push_back(_neutron);mestemp.push_back(-311); factor.push_back(ort*(_sd-_sf)); intemp.push_back(_esigma0);outtemp.push_back(_sigma0);mestemp.push_back(221); factor.push_back(2.*ors*_sd); intemp.push_back(_esigma0);outtemp.push_back(_lambda);mestemp.push_back(111); factor.push_back(2.*ors*_sd); // decays of the excited simga- intemp.push_back(_esigmam);outtemp.push_back(_sigma0);mestemp.push_back(-211); factor.push_back(rt*_sf); intemp.push_back(_esigmam);outtemp.push_back(_sigmam);mestemp.push_back(111); factor.push_back(-rt*_sf); intemp.push_back(_esigmam);outtemp.push_back(_xim);mestemp.push_back(311); factor.push_back(_sd+_sf); intemp.push_back(_esigmam);outtemp.push_back(_neutron);mestemp.push_back(-321); factor.push_back(_sd-_sf); intemp.push_back(_esigmam);outtemp.push_back(_lambda);mestemp.push_back(-211); factor.push_back(2.*_sd*ors); intemp.push_back(_esigmam);outtemp.push_back(_sigmam);mestemp.push_back(221); factor.push_back(2.*_sd*ors); // decays of the excited xi- intemp.push_back(_exim);outtemp.push_back(_sigmam);mestemp.push_back(-311); factor.push_back(_sd+_sf); intemp.push_back(_exim);outtemp.push_back(_sigma0);mestemp.push_back(-321); factor.push_back(ort*(_sd+_sf)); intemp.push_back(_exim);outtemp.push_back(_xi0);mestemp.push_back(-211); factor.push_back(_sd-_sf); intemp.push_back(_exim);outtemp.push_back(_xim);mestemp.push_back(111); factor.push_back(ort*(_sd-_sf)); intemp.push_back(_exim);outtemp.push_back(_lambda);mestemp.push_back(-321); factor.push_back(ors*(3.*_sf-_sd)); intemp.push_back(_exim);outtemp.push_back(_xim);mestemp.push_back(221); factor.push_back(ors*(3.*_sf+_sd)); // decays of the excited xi0 intemp.push_back(_exi0);outtemp.push_back(_sigmap);mestemp.push_back(-321); factor.push_back(_sd+_sf); intemp.push_back(_exi0);outtemp.push_back(_sigma0);mestemp.push_back(-311); factor.push_back(ort*(_sd+_sf)); intemp.push_back(_exi0);outtemp.push_back(_xim);mestemp.push_back(211); factor.push_back(_sd-_sf); intemp.push_back(_exi0);outtemp.push_back(_xi0);mestemp.push_back(111); factor.push_back(ort*(_sd-_sf)); intemp.push_back(_exi0);outtemp.push_back(_lambda);mestemp.push_back(-311); factor.push_back(ors*(3.*_sf-_sd)); intemp.push_back(_exi0);outtemp.push_back(_xi0);mestemp.push_back(221); factor.push_back(ors*(3.*_sf+_sd)); int inspin,outspin; tPDVector extpart(3); for(unsigned int ix=0;ix<intemp.size();++ix) { if(intemp[ix]!=0&&outtemp[ix]!=0&&mestemp[ix]!=0) { extpart[0]=getParticleData(intemp[ix]); extpart[1]=getParticleData(outtemp[ix]); extpart[2]=getParticleData(mestemp[ix]); if(extpart[0]->massMax()>extpart[1]->massMin()+extpart[2]->massMin()) { _incomingB.push_back(intemp[ix]); _outgoingB.push_back(outtemp[ix]); _outgoingM.push_back(mestemp[ix]); if(iopt==1) { inspin = extpart[0]->iSpin(); outspin = extpart[1]->iSpin(); if(inspin==2&&outspin==2) _prefactor.push_back(ort*factor[ix]/_fpi); else if(inspin==4&&outspin==2) _prefactor.push_back(ort*factor[ix]/_fpi); else throw DecayIntegratorError()<< "Invalid combination of spins in " << "SU3BaryonOctetOctetScalarDecayer::" << "setupModes()" << Exception::abortnow; } } } } } void SU3BaryonOctetOctetScalarDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; Baryon1MesonDecayerBase::dataBaseOutput(output,false); output << "newdef " << name() << ":Fcoupling " << _sf << "\n"; output << "newdef " << name() << ":Dcoupling " << _sd << "\n"; output << "newdef " << name() << ":Parity " << _parity<< "\n"; output << "newdef " << name() << ":Fpi " << _fpi/MeV << "\n"; output << "newdef " << name() << ":Proton " << _proton << "\n"; output << "newdef " << name() << ":Neutron " << _neutron << "\n"; output << "newdef " << name() << ":Sigma+ " << _sigmap << "\n"; output << "newdef " << name() << ":Sigma0 " << _sigma0 << "\n"; output << "newdef " << name() << ":Sigma- " << _sigmam << "\n"; output << "newdef " << name() << ":Lambda " << _lambda << "\n"; output << "newdef " << name() << ":Xi0 " << _xi0 << "\n"; output << "newdef " << name() << ":Xi- " << _xim << "\n"; output << "newdef " << name() << ":ExcitedProton " << _eproton << "\n"; output << "newdef " << name() << ":ExcitedNeutron " << _eneutron << "\n"; output << "newdef " << name() << ":ExcitedSigma+ " << _esigmap << "\n"; output << "newdef " << name() << ":ExcitedSigma0 " << _esigma0 << "\n"; output << "newdef " << name() << ":ExcitedSigma- " << _esigmam << "\n"; output << "newdef " << name() << ":ExcitedLambda " << _elambda << "\n"; output << "newdef " << name() << ":ExcitedXi0 " << _exi0 << "\n"; output << "newdef " << name() << ":ExcitedXi- " << _exim << "\n"; for(unsigned int ix=0;ix<_maxweight.size();++ix) { output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/NonLeptonicOmegaDecayer.cc�����������������������������������������0000644�0001750�0001750�00000033611�11754474773�024266� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the NonLeptonicOmegaDecayer class. // #include "NonLeptonicOmegaDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; NonLeptonicOmegaDecayer::NonLeptonicOmegaDecayer() { // couplings for the decays _fstar = 0.5e-7; _dstar = -3.98e-7; _omegad = -1.16e-8/1.8; _omegaf = 1.53e-8/1.8; _cbstar = 1.35; _sc = -0.85; _c = 1.50; _fpi = 92.4*MeV; _hc = 0.39e-7*GeV; _hpi = 3.2e-7; _d = 0.44e-7*GeV; _f = -0.50e-7*GeV; // massses of the particles _mlambda = 1115.683*MeV; _mxi = 1314.830*MeV; _momega = 1672.450*MeV; _mxistar = 1531.800*MeV; _mpip = 139.570*MeV; _mpi0 = 134.977*MeV; _mkp = 493.667*MeV; _mk0 = 497.648*MeV; _mbstar = 1620 *MeV; _mr = 1500 *MeV; // use local values for the masses for the couplings _localmasses=true; // the PDG codes for the modes _incomingB = 3334; _outgoingB.resize(3);_outgoingM.resize(3);_maxweight.resize(3); _outgoingB[0] = 3122;_outgoingM[0] =-321;_maxweight[0]=1.5; _outgoingB[1] = 3322;_outgoingM[1] =-211;_maxweight[1]=0.4; _outgoingB[2] = 3312;_outgoingM[2] = 111;_maxweight[2]=0.2; // intermediates generateIntermediates(false); } void NonLeptonicOmegaDecayer::doinitrun() { Baryon1MesonDecayerBase::doinitrun(); if(initialize()) { _maxweight.clear(); for(unsigned int ix=0;ix<numberModes();++ix) _maxweight.push_back(mode(ix)->maxWeight()); } } void NonLeptonicOmegaDecayer::doinit() { Baryon1MesonDecayerBase::doinit(); // reset the masses if needed if(!_localmasses) { _mlambda = getParticleData(3122)->mass(); _mxi = getParticleData(3322)->mass(); _momega = getParticleData(3334)->mass(); _mxistar = getParticleData(3324)->mass(); _mpip = getParticleData(211)->mass(); _mpi0 = getParticleData(111)->mass(); _mkp = getParticleData(321)->mass(); _mk0 = getParticleData(311)->mass(); } // calculate the couplings _a.resize(3);_b.resize(3); // couplings for lambda K (N.B. sign of B due to gamma_5 defn) _a[0] = 0.5*_c/sqrt(3.)/_fpi*((_d-3.*_f)/(_mlambda-_mxi) +_hc/(_momega-_mxistar)) +0.5*_cbstar/sqrt(3.)/_fpi*(_dstar-3.*_fstar)/(_mlambda/_mbstar-1.); _b[0] = 0.5*_sc/sqrt(3.)/_fpi*(_omegad-3.*_omegaf)/(_mlambda/_mr-1.); // couplings for xi0 pi- _a[1] = _c/ sqrt(2.)/_fpi*(_hc/3./(_momega-_mxistar) +_hpi*_mpip*_mpip/2./(_mkp*_mkp-_mpip*_mpip)); _b[1] = ZERO; // couplings for xi- pi0 _a[2] = _c/2./ _fpi*(_hc/3./(_momega-_mxistar) +_hpi*_mpi0*_mpi0/2./(_mk0*_mk0-_mpi0*_mpi0)); _b[2] = ZERO; // set up the decay modes tPDVector extpart(3); DecayPhaseSpaceModePtr mode; double wgtmax; vector<double> wgt(0); for(unsigned int ix=0;ix<_outgoingB.size();++ix) { extpart[0]=getParticleData(_incomingB); extpart[1]=getParticleData(_outgoingB[ix]); extpart[2]=getParticleData(_outgoingM[ix]); mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); wgtmax = _maxweight.size()>numberModes() ? _maxweight[numberModes()] : 1.; addMode(mode,wgtmax,wgt); } } int NonLeptonicOmegaDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); // must be two outgoing particles if(children.size()!=2) return imode; // ids of the particles int id0(parent->id()); int id1(children[0]->id()); int id2(children[1]->id()); unsigned int ix(0); do { if(id0==_incomingB) { if((id1==_outgoingB[ix]&&id2==_outgoingM[ix])|| (id2==_outgoingB[ix]&&id1==_outgoingM[ix])) imode=ix; } else if(id0==-_incomingB) { if((id1==-_outgoingB[ix]&&id2==-_outgoingM[ix])|| (id2==-_outgoingB[ix]&&id1==-_outgoingM[ix])) imode=ix; if(((id1==-_outgoingB[ix]&&id2==_outgoingM[ix])|| (id2==-_outgoingB[ix]&&id1==_outgoingM[ix]))&& (_outgoingM[ix]==111||_outgoingM[ix]==221||_outgoingM[ix]==331|| _outgoingM[ix]==223||_outgoingM[ix]==333)) imode=ix; } ++ix; } while(ix<_outgoingB.size()&&imode<0); // charge conjugation cc=id0<0; // return the answer return imode; } void NonLeptonicOmegaDecayer::persistentOutput(PersistentOStream & os) const { os << _dstar << _fstar << _omegad << _omegaf << _cbstar << _sc << _c << ounit(_fpi,GeV) << ounit(_hc,GeV) << _hpi << ounit(_d,GeV) << ounit(_f,GeV) << ounit(_mlambda,GeV) << ounit(_mxi,GeV) << ounit(_momega,GeV) << ounit(_mxistar,GeV) << ounit(_mpip,GeV) << ounit(_mpi0,GeV) << ounit(_mkp,GeV) << ounit(_mk0,GeV) << ounit(_mbstar,GeV) << ounit(_mr,GeV) << _localmasses << _incomingB << _outgoingB << _outgoingM << ounit(_a,1./GeV) << ounit(_b,1./GeV) << _maxweight; } void NonLeptonicOmegaDecayer::persistentInput(PersistentIStream & is, int) { is >> _dstar >> _fstar >> _omegad >> _omegaf >> _cbstar >> _sc >> _c >> iunit(_fpi,GeV) >> iunit(_hc,GeV) >> _hpi >> iunit(_d,GeV) >> iunit(_f,GeV) >> iunit(_mlambda,GeV) >> iunit(_mxi,GeV) >> iunit(_momega,GeV) >> iunit(_mxistar,GeV) >> iunit(_mpip,GeV) >> iunit(_mpi0,GeV) >> iunit(_mkp,GeV) >> iunit(_mk0,GeV) >> iunit(_mbstar,GeV) >> iunit(_mr,GeV) >> _localmasses >> _incomingB >> _outgoingB >> _outgoingM >> iunit(_a,1./GeV) >> iunit(_b,1./GeV) >> _maxweight; } ClassDescription<NonLeptonicOmegaDecayer> NonLeptonicOmegaDecayer::initNonLeptonicOmegaDecayer; // Definition of the static class description member. void NonLeptonicOmegaDecayer::Init() { static ClassDocumentation<NonLeptonicOmegaDecayer> documentation ("The NonLeptonicOmegaDecayer class performs the non-leptonic decays" " of the omega based on the results of hep-ph/9905398.", "The non-leptonic decays of the Omega baryon were simulated " "using the NonLeptonicOmegaDecayer class based on the results of" "\\cite{Borasoy:1999ip}.", "\\bibitem{Borasoy:1999ip}\n" "B.~Borasoy and B.~R.~Holstein,\n" "Phys.\\ Rev.\\ D {\\bf 60} (1999) 054021 [arXiv:hep-ph/9905398].\n" "%%CITATION = PHRVA,D60,054021;%%\n"); static Parameter<NonLeptonicOmegaDecayer,double> interfaceDStar ("DStar", "The d* coupling from hep-ph/9905398 multiplied by MB*.", &NonLeptonicOmegaDecayer::_dstar, -3.98e-7, -10.0e-7, 10.0e-7, false, false, true); static Parameter<NonLeptonicOmegaDecayer,double> interfaceFStar ("FStar", "The f* coupling from hep-ph/9905398 multiplied by MB*.", &NonLeptonicOmegaDecayer::_fstar, 0.5e-7, -10.0e-7, 10.0e-7, false, false, true); static Parameter<NonLeptonicOmegaDecayer,double> interfaceomegad ("omegad", "The omega_d coupling from hep-ph/9905398 multiplied by MR.", &NonLeptonicOmegaDecayer::_omegad, -1.16e-7, -10.0e-7, 10.0e-7, false, false, true); static Parameter<NonLeptonicOmegaDecayer,double> interfaceomegaf ("omegaf", "The omega_f coupling from hep-ph/9905398 multiplied by MR.", &NonLeptonicOmegaDecayer::_omegaf, 1.53e-7, -10.0e-7, 10.0e-7, false, false, true); static Parameter<NonLeptonicOmegaDecayer,double> interfaceCBstar ("CBstar", "The C_b* coupling from hep-ph/9905398", &NonLeptonicOmegaDecayer::_cbstar, 1.35, -10.0, 10.0, false, false, true); static Parameter<NonLeptonicOmegaDecayer,double> interfacesc ("sc", "The sc coupling from hep-ph/9905398", &NonLeptonicOmegaDecayer::_sc,-0.85, -10.0, 10.0, false, false, true); static Parameter<NonLeptonicOmegaDecayer,double> interfaceC ("C", "The C coupling from hep-ph/9905398", &NonLeptonicOmegaDecayer::_c, 1.5, -10.0, 10.0, false, false, true); static Parameter<NonLeptonicOmegaDecayer,Energy> interfaceFpi ("Fpi", "The pion decay constant.", &NonLeptonicOmegaDecayer::_fpi, MeV, 92.4*MeV, ZERO, 200.0*MeV, false, false, true); static Parameter<NonLeptonicOmegaDecayer,Energy> interfacehc ("hc", "The h_c coupling from hep-ph/9905398", &NonLeptonicOmegaDecayer::_hc, GeV, 0.39e-7*GeV, -10.0e-7*GeV, 10.0e-7*GeV, false, false, true); static Parameter<NonLeptonicOmegaDecayer,double> interfacehpi ("hpi", "The h_pi coupling from hep-ph/9905398", &NonLeptonicOmegaDecayer::_hpi, 3.2e-7, -10.0e-7, 10.0e-7, false, false, true); static Parameter<NonLeptonicOmegaDecayer,Energy> interfaced ("d", "The d coupling from hep-ph/9905398", &NonLeptonicOmegaDecayer::_d, GeV, 0.44e-7*GeV, -1e-6*GeV, 1e-6*GeV, false, false, true); static Parameter<NonLeptonicOmegaDecayer,Energy> interfacef ("f", "The f coupling from hep-ph/9905398", &NonLeptonicOmegaDecayer::_f, GeV, -0.50e-7*GeV, -1e-6*GeV, 1e-6*GeV, false, false, true); static Parameter<NonLeptonicOmegaDecayer,Energy> interfaceMLambda ("MLambda", "The mass of the Lambda baryon", &NonLeptonicOmegaDecayer::_mlambda, MeV, 1115.683*MeV, ZERO, 10000.0*MeV, false, false, true); static Parameter<NonLeptonicOmegaDecayer,Energy> interfaceMXi ("MXi", "The mass of the Xi baryon", &NonLeptonicOmegaDecayer::_mxi, MeV, 1314.830*MeV, ZERO, 10000.0*MeV, false, false, true); static Parameter<NonLeptonicOmegaDecayer,Energy> interfaceMOmega ("MOmega", "The mass of the Omega baryon", &NonLeptonicOmegaDecayer::_momega, MeV, 1672.450*MeV, ZERO, 10000.0*MeV, false, false, true); static Parameter<NonLeptonicOmegaDecayer,Energy> interfaceMXiStar ("MXiStar", "The mass of the XiStar baryon", &NonLeptonicOmegaDecayer::_mxistar, MeV, 1531.800*MeV, ZERO, 10000.0*MeV, false, false, true); static Parameter<NonLeptonicOmegaDecayer,Energy> interfaceMpiplus ("Mpiplus", "The mass of the charged pion", &NonLeptonicOmegaDecayer::_mpip, MeV, 139.57*MeV, ZERO, 1000.0*MeV, false, false, true); static Parameter<NonLeptonicOmegaDecayer,Energy> interfaceMKplus ("MKplus", "The mass of the charged kaon", &NonLeptonicOmegaDecayer::_mkp, MeV, 493.667*MeV, ZERO, 1000.0*MeV, false, false, true); static Parameter<NonLeptonicOmegaDecayer,Energy> interfaceMpi0 ("Mpi0", "The mass of the neutral pion", &NonLeptonicOmegaDecayer::_mpi0, MeV, 134.977*MeV, ZERO, 1000.0*MeV, false, false, true); static Parameter<NonLeptonicOmegaDecayer,Energy> interfaceMK0 ("MK0", "The mass of the neutral kaon", &NonLeptonicOmegaDecayer::_mk0, MeV, 497.648*MeV, ZERO, 1000.0*MeV, false, false, true); static Parameter<NonLeptonicOmegaDecayer,Energy> interfaceMBstar ("MBstar", "The mass of the excited B* resonnaces", &NonLeptonicOmegaDecayer::_mbstar, MeV, 1620.0*MeV, ZERO, 10000.0*MeV, false, false, true); static Parameter<NonLeptonicOmegaDecayer,Energy> interfaceMR ("MR", "The mass of the excited R resonnaces", &NonLeptonicOmegaDecayer::_mr, MeV, 1620.0*MeV, ZERO, 10000.0*MeV, false, false, true); static Switch<NonLeptonicOmegaDecayer,bool> interfaceLocalMasses ("LocalMasses", "Use local values of all the masses for the couplings.", &NonLeptonicOmegaDecayer::_localmasses, true, false, false); static SwitchOption interfaceLocalMassesLocal (interfaceLocalMasses, "Local", "Use local values", true); static SwitchOption interfaceLocalMassesNonLocal (interfaceLocalMasses, "ParticleData", "Use values from the particle data objects", false); static ParVector<NonLeptonicOmegaDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &NonLeptonicOmegaDecayer::_maxweight, 0, 0, 0, 0., 100., false, false, true); } // couplings for spin-1/2 to spin-3/2 spin-0 void NonLeptonicOmegaDecayer::threeHalfHalfScalarCoupling(int imode,Energy m0,Energy m1, Energy,Complex& A, Complex& B) const { useMe(); A = _a[imode]*(m0+m1); B = _b[imode]*(m0+m1); } void NonLeptonicOmegaDecayer::dataBaseOutput(ofstream & output,bool header) const { if(header) output << "update decayers set parameters=\""; output << "newdef " << name() << ":DStar " << _dstar<< "\n"; output << "newdef " << name() << ":FStar " << _fstar << "\n"; output << "newdef " << name() << ":omegad " << _omegad<< "\n"; output << "newdef " << name() << ":omegaf " << _omegaf<< "\n"; output << "newdef " << name() << ":CBstar " << _cbstar<< "\n"; output << "newdef " << name() << ":sc " << _sc << "\n"; output << "newdef " << name() << ":C " << _c << "\n"; output << "newdef " << name() << ":Fpi " << _fpi/MeV << "\n"; output << "newdef " << name() << ":hc " << _hc/GeV << "\n"; output << "newdef " << name() << ":hpi " << _hpi<< "\n"; output << "newdef " << name() << ":d " << _d/GeV << "\n"; output << "newdef " << name() << ":f " << _f/GeV << "\n"; output << "newdef " << name() << ":MLambda " << _mlambda/MeV << "\n"; output << "newdef " << name() << ":MXi " << _mxi/MeV << "\n"; output << "newdef " << name() << ":MOmega " << _momega/MeV << "\n"; output << "newdef " << name() << ":MXiStar " << _mxistar/MeV << "\n"; output << "newdef " << name() << ":Mpiplus " << _mpip/MeV << "\n"; output << "newdef " << name() << ":MKplus " << _mkp/MeV << "\n"; output << "newdef " << name() << ":Mpi0 " << _mpi0/MeV << "\n"; output << "newdef " << name() << ":MK0 " << _mk0/MeV << "\n"; output << "newdef " << name() << ":MBstar " << _mbstar/MeV << "\n"; output << "newdef " << name() << ":MR " << _mr/MeV << "\n"; output << "newdef " << name() << ":LocalMasses " << _localmasses << "\n"; for(unsigned int ix=0;ix<_maxweight.size();++ix) { output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } Baryon1MesonDecayerBase::dataBaseOutput(output,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �����������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/Makefile.in��������������������������������������������������������0000644�0001750�0001750�00000057566�11756461675�021344� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Decay/Baryon DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwBaryonDecay_la_DEPENDENCIES = \ $(top_builddir)/PDT/libHwBaryonWidth.la am_HwBaryonDecay_la_OBJECTS = Baryon1MesonDecayerBase.lo \ BaryonFactorizedDecayer.lo KornerKramerCharmDecayer.lo \ NonLeptonicHyperonDecayer.lo RadiativeHyperonDecayer.lo \ NonLeptonicOmegaDecayer.lo OmegaXiStarPionDecayer.lo \ SemiLeptonicBaryonDecayer.lo StrongHeavyBaryonDecayer.lo \ SU3BaryonDecupletOctetPhotonDecayer.lo \ SU3BaryonDecupletOctetScalarDecayer.lo \ SU3BaryonOctetDecupletScalarDecayer.lo \ SU3BaryonOctetOctetPhotonDecayer.lo \ SU3BaryonOctetOctetScalarDecayer.lo \ SU3BaryonSingletOctetPhotonDecayer.lo \ SU3BaryonSingletOctetScalarDecayer.lo \ RadiativeHeavyBaryonDecayer.lo HwBaryonDecay_la_OBJECTS = $(am_HwBaryonDecay_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwBaryonDecay_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwBaryonDecay_la_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwBaryonDecay_la_SOURCES) DIST_SOURCES = $(HwBaryonDecay_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwBaryonDecay.la HwBaryonDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:0:0 HwBaryonDecay_la_LIBADD = $(top_builddir)/PDT/libHwBaryonWidth.la HwBaryonDecay_la_SOURCES = \ Baryon1MesonDecayerBase.cc Baryon1MesonDecayerBase.h \ Baryon1MesonDecayerBase.fh\ BaryonFactorizedDecayer.cc BaryonFactorizedDecayer.h \ KornerKramerCharmDecayer.cc KornerKramerCharmDecayer.h \ NonLeptonicHyperonDecayer.cc NonLeptonicHyperonDecayer.h \ RadiativeHyperonDecayer.cc RadiativeHyperonDecayer.h \ NonLeptonicOmegaDecayer.cc NonLeptonicOmegaDecayer.h \ OmegaXiStarPionDecayer.cc OmegaXiStarPionDecayer.h \ SemiLeptonicBaryonDecayer.cc SemiLeptonicBaryonDecayer.h \ StrongHeavyBaryonDecayer.cc StrongHeavyBaryonDecayer.h \ SU3BaryonDecupletOctetPhotonDecayer.cc SU3BaryonDecupletOctetPhotonDecayer.h\ SU3BaryonDecupletOctetScalarDecayer.cc SU3BaryonDecupletOctetScalarDecayer.h\ SU3BaryonOctetDecupletScalarDecayer.cc SU3BaryonOctetDecupletScalarDecayer.h\ SU3BaryonOctetOctetPhotonDecayer.cc SU3BaryonOctetOctetPhotonDecayer.h \ SU3BaryonOctetOctetScalarDecayer.cc SU3BaryonOctetOctetScalarDecayer.h \ SU3BaryonSingletOctetPhotonDecayer.cc SU3BaryonSingletOctetPhotonDecayer.h \ SU3BaryonSingletOctetScalarDecayer.cc SU3BaryonSingletOctetScalarDecayer.h \ RadiativeHeavyBaryonDecayer.cc RadiativeHeavyBaryonDecayer.h all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Decay/Baryon/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Decay/Baryon/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwBaryonDecay.la: $(HwBaryonDecay_la_OBJECTS) $(HwBaryonDecay_la_DEPENDENCIES) $(EXTRA_HwBaryonDecay_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwBaryonDecay_la_LINK) -rpath $(pkglibdir) $(HwBaryonDecay_la_OBJECTS) $(HwBaryonDecay_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Baryon1MesonDecayerBase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BaryonFactorizedDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/KornerKramerCharmDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NonLeptonicHyperonDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NonLeptonicOmegaDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OmegaXiStarPionDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RadiativeHeavyBaryonDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RadiativeHyperonDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SU3BaryonDecupletOctetPhotonDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SU3BaryonDecupletOctetScalarDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SU3BaryonOctetDecupletScalarDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SU3BaryonOctetOctetPhotonDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SU3BaryonOctetOctetScalarDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SU3BaryonSingletOctetPhotonDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SU3BaryonSingletOctetScalarDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SemiLeptonicBaryonDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StrongHeavyBaryonDecayer.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/KornerKramerCharmDecayer.cc����������������������������������������0000644�0001750�0001750�00000117431�11754474773�024445� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the KornerKramerCharmDecayer class. // #include "KornerKramerCharmDecayer.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG; KornerKramerCharmDecayer::KornerKramerCharmDecayer() { // one over the number of colours oneNC_=0.; // pseudoscalar meson decay constants fpi_ = 131.7*MeV; fk_ = 160.6*MeV; // vector decay constants frho_ = 0.272; fKstar_ = 0.238; // masses for the form-factors for the factorizing diagrams mdcplus_ = 2.42*GeV; mdcminus_ = 2.01*GeV; mscplus_ = 2.54*GeV; mscminus_ = 2.11*GeV; // perturbative factors cplus_ = 0.73; cminus_ = 1.90; // factors for the non-factorizing diagrams H2_ = 0.119*GeV; H3_ =-0.011*GeV; // lambda_c to lambda pi+ incoming_.push_back(4122);outgoingB_.push_back(3122);outgoingM_.push_back(211); maxweight_.push_back(0.0153611); I1_.push_back(-1./3.);I2_.push_back(-1./3.); I3_.push_back(-1./3.);I4_.push_back( 2./3.);I5_.push_back( 1./6.); Ihat3_.push_back(-1./3.);Ihat4_.push_back(2./3.); // lambda_c to sigma_0 pi+ incoming_.push_back(4122);outgoingB_.push_back(3212);outgoingM_.push_back(211); maxweight_.push_back(0.00684877); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(-1./sqrt(3.));I4_.push_back(0.);I5_.push_back(-1./sqrt(12.)); Ihat3_.push_back(1./sqrt(3.));Ihat4_.push_back(-2./sqrt(3.)); // lambda_c to sigma+ pi0 incoming_.push_back(4122);outgoingB_.push_back(3222);outgoingM_.push_back(111); maxweight_.push_back(0.00686766); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(1./sqrt(3.));I4_.push_back(0.);I5_.push_back(1./sqrt(12.)); Ihat3_.push_back(-1./sqrt(3.));Ihat4_.push_back(2./sqrt(3.)); // lambda_c+ to sigma+ eta incoming_.push_back(4122);outgoingB_.push_back(3222);outgoingM_.push_back(221); maxweight_.push_back(0.00311807); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(-0.169101981);I4_.push_back(0.577350262);I5_.push_back(0.204124141); Ihat3_.push_back(0.408248281);Ihat4_.push_back(-0.816496562); // lambda_c+ to sigma+ eta' incoming_.push_back(4122);outgoingB_.push_back(3222);outgoingM_.push_back(331); maxweight_.push_back(0.0267591); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(0.985598555);I4_.push_back(-0.577350261);I5_.push_back(0.204124147); Ihat3_.push_back( 0.408248294);Ihat4_.push_back(-0.816496587); // lambda_c to p k0 incoming_.push_back(4122);outgoingB_.push_back(2212);outgoingM_.push_back(-311); maxweight_.push_back(0.0444906); I1_.push_back(-1./sqrt(6.));I2_.push_back(-1./sqrt(6.)); I3_.push_back(-2./sqrt(6.));I4_.push_back(2./sqrt(6.));I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c+ to xi K+ incoming_.push_back(4122);outgoingB_.push_back(3322);outgoingM_.push_back(321); maxweight_.push_back(0.00533608); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(0.);I4_.push_back(2./sqrt(6.));I5_.push_back(1./sqrt(6.)); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c to sigma+ Kbar0 incoming_.push_back(4232);outgoingB_.push_back(3222);outgoingM_.push_back(-311); maxweight_.push_back(0.135814); I1_.push_back(-1./sqrt(6.));I2_.push_back(-1./sqrt(6.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(-2./sqrt(6.));Ihat4_.push_back(4./sqrt(6.)); // xi_c to xi_0 pi+ incoming_.push_back(4232);outgoingB_.push_back(3322);outgoingM_.push_back(211); maxweight_.push_back(0.0745085); I1_.push_back(1./sqrt(6.));I2_.push_back(1./sqrt(6.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(2./sqrt(6.));Ihat4_.push_back(-4./sqrt(6.)); // xi_c to lambda kbar0 incoming_.push_back(4132);outgoingB_.push_back(3122);outgoingM_.push_back(-311); maxweight_.push_back(0.0025821); I1_.push_back(1./6.);I2_.push_back(1./6.); I3_.push_back(2./3.);I4_.push_back(-1./3.);I5_.push_back(1./6.); Ihat3_.push_back(-1./3.);Ihat4_.push_back(2./3.); // xi_c to sigma k0 incoming_.push_back(4132);outgoingB_.push_back(3212);outgoingM_.push_back(-311); maxweight_.push_back(0.024961); I1_.push_back(1./sqrt(12.));I2_.push_back(1./sqrt(12.)); I3_.push_back(0.);I4_.push_back(-2./sqrt(12.));I5_.push_back(-1./sqrt(12.)); Ihat3_.push_back(2./sqrt(12.));Ihat4_.push_back(-4./sqrt(12.)); // xi_c to sigma k- incoming_.push_back(4132);outgoingB_.push_back(3222);outgoingM_.push_back(-321); maxweight_.push_back(0.00250939); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(0.);I4_.push_back(2./sqrt(6.));I5_.push_back(1./sqrt(6.)); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to xi0 pi0 incoming_.push_back(4132);outgoingB_.push_back(3322);outgoingM_.push_back(111); maxweight_.push_back(0.000739771); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(2./sqrt(12.));I4_.push_back(-2./sqrt(12.));I5_.push_back(0.); Ihat3_.push_back(-2./sqrt(12.));Ihat4_.push_back(4./sqrt(12.)); // xi_c0 to xi0 eta incoming_.push_back(4132);outgoingB_.push_back(3322);outgoingM_.push_back(221); maxweight_.push_back(0.00490303); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(-0.169101981);I4_.push_back(-0.408248281);I5_.push_back(-0.288675131); Ihat3_.push_back(0.408248281);Ihat4_.push_back(-0.816496562); // xi_c0 to xi0 eta' incoming_.push_back(4132);outgoingB_.push_back(3322);outgoingM_.push_back(331); maxweight_.push_back(0.0178693); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(0.985598555);I4_.push_back(-0.408248294);I5_.push_back(0.288675131); Ihat3_.push_back(0.408248294);Ihat4_.push_back(-0.816496587); // xi_c0 to xi- pi+ incoming_.push_back(4132);outgoingB_.push_back(3312);outgoingM_.push_back(211); maxweight_.push_back(0.0220038); I1_.push_back(-1./sqrt(6.));I2_.push_back(-1./sqrt(6.)); I3_.push_back(-2./sqrt(6.));I4_.push_back(2./sqrt(6.));I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // omega_c to xi0 K0 incoming_.push_back(4332);outgoingB_.push_back(3322);outgoingM_.push_back(-311); maxweight_.push_back(0.0250268); I1_.push_back(1.);I2_.push_back(-1.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(2.);Ihat4_.push_back(0.); // lambda_c to lambda rho+ incoming_.push_back(4122);outgoingB_.push_back(3122);outgoingM_.push_back(213); maxweight_.push_back(0.467008); I1_.push_back(-1./3.);I2_.push_back(-1./3.); I3_.push_back(-1./3.);I4_.push_back( 2./3.);I5_.push_back( 1./6.); Ihat3_.push_back(-1./3.);Ihat4_.push_back(2./3.); // lambda_c to sigma_0 rho+ incoming_.push_back(4122);outgoingB_.push_back(3212);outgoingM_.push_back(213); maxweight_.push_back(0.0702498); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(-1./sqrt(3.));I4_.push_back(0.);I5_.push_back(-1./sqrt(12.)); Ihat3_.push_back(1./sqrt(3.));Ihat4_.push_back(-2./sqrt(3.)); // lambda_c to sigma+ rho incoming_.push_back(4122);outgoingB_.push_back(3222);outgoingM_.push_back(113); maxweight_.push_back(0.0697802); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(1./sqrt(3.));I4_.push_back(0.); I5_.push_back(1./sqrt(12.)); Ihat3_.push_back(-1./sqrt(3.));Ihat4_.push_back(2./sqrt(3.)); // lambda_c to sigma+ omega incoming_.push_back(4122);outgoingB_.push_back(3222);outgoingM_.push_back(223); maxweight_.push_back(0.252355); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(0.57735033);I4_.push_back(0.);I5_.push_back( 0.288675151); Ihat3_.push_back(0.577350303);Ihat4_.push_back( -1.15470061); // lambda_c to simga+ phi incoming_.push_back(4122);outgoingB_.push_back(3222);outgoingM_.push_back(333); maxweight_.push_back(0.0063064); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(0.816496614);I4_.push_back(-0.816496624);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c to p k*0bar incoming_.push_back(4122);outgoingB_.push_back(2212);outgoingM_.push_back(-313); maxweight_.push_back(0.0996461); I1_.push_back(-1./sqrt(6.));I2_.push_back(-1./sqrt(6.)); I3_.push_back(-2./sqrt(6.));I4_.push_back(2./sqrt(6.));I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c+ to xi K*+ incoming_.push_back(4122);outgoingB_.push_back(3322);outgoingM_.push_back(323); maxweight_.push_back(0.00413946); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(0.);I4_.push_back(2./sqrt(6.));I5_.push_back(1./sqrt(6.)); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c to sigma+ K*bar0 incoming_.push_back(4232);outgoingB_.push_back(3222);outgoingM_.push_back(-313); maxweight_.push_back(0.0583248); I1_.push_back(-1./sqrt(6.));I2_.push_back(-1./sqrt(6.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(-2./sqrt(6.));Ihat4_.push_back(4./sqrt(6.)); // xi_c to xi_0 rho+ incoming_.push_back(4232);outgoingB_.push_back(3322);outgoingM_.push_back(213); maxweight_.push_back(2.18754); I1_.push_back(1./sqrt(6.));I2_.push_back(1./sqrt(6.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(2./sqrt(6.));Ihat4_.push_back(-4./sqrt(6.)); // xi_c to lambda k*bar0 incoming_.push_back(4132);outgoingB_.push_back(3122);outgoingM_.push_back(-313); maxweight_.push_back(0.0373243); I1_.push_back(1./6.);I2_.push_back(1./6.); I3_.push_back(2./3.);I4_.push_back(-1./3.);I5_.push_back(1./6.); Ihat3_.push_back(-1./3.);Ihat4_.push_back(2./3.); // xi_c to sigma k*0 incoming_.push_back(4132);outgoingB_.push_back(3212);outgoingM_.push_back(-313); maxweight_.push_back(0.0135937); I1_.push_back(1./sqrt(12.));I2_.push_back(1./sqrt(12.)); I3_.push_back(0.);I4_.push_back(-2./sqrt(12.));I5_.push_back(-1./sqrt(12.)); Ihat3_.push_back(2./sqrt(12.));Ihat4_.push_back(-4./sqrt(12.)); // xi_c to sigma k*- incoming_.push_back(4132);outgoingB_.push_back(3222);outgoingM_.push_back(-323); maxweight_.push_back(0.00877507); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(0.);I4_.push_back(2./sqrt(6.));I5_.push_back(1./sqrt(6.)); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to xi0 rho0 incoming_.push_back(4132);outgoingB_.push_back(3322);outgoingM_.push_back(113); maxweight_.push_back(0.0364247); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(2./sqrt(12.));I4_.push_back(-2./sqrt(12.));I5_.push_back(0.); Ihat3_.push_back(-2./sqrt(12.));Ihat4_.push_back(4./sqrt(12.)); // xi_c0 to xi0 omega incoming_.push_back(4132);outgoingB_.push_back(3322);outgoingM_.push_back(223); maxweight_.push_back(0.134395); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back( 0.57735033);I4_.push_back(-0.577350303);I5_.push_back(0.); Ihat3_.push_back(0.577350303);Ihat4_.push_back(-1.15470061); // xi_c0 to xi0 phi incoming_.push_back(4132);outgoingB_.push_back(3322);outgoingM_.push_back(333); maxweight_.push_back(0.00676745); I1_.push_back(0.);I2_.push_back(0.); I3_.push_back(0.816496614);I4_.push_back(0.);I5_.push_back(0.408248312); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to xi- rho+ incoming_.push_back(4132);outgoingB_.push_back(3312);outgoingM_.push_back(213); maxweight_.push_back(0.309733); I1_.push_back(-1./sqrt(6.));I2_.push_back(-1./sqrt(6.)); I3_.push_back(-2./sqrt(6.));I4_.push_back(2./sqrt(6.));I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // omega_c to xi0 K*0 incoming_.push_back(4332);outgoingB_.push_back(3322);outgoingM_.push_back(-313); maxweight_.push_back(0.019967); I1_.push_back(1.);I2_.push_back(-1.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(2.);Ihat4_.push_back(0.); // lambda_c to sigma*0 pi+ incoming_.push_back(4122);outgoingB_.push_back(3214);outgoingM_.push_back(211); maxweight_.push_back(0.0254397); I1_.push_back(0.);I2_.push_back(1./3.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c to sigma*+ pi0 incoming_.push_back(4122);outgoingB_.push_back(3224);outgoingM_.push_back(111); maxweight_.push_back(0.0256531); I1_.push_back(0.);I2_.push_back(1./3.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c to sigma*+ eta incoming_.push_back(4122);outgoingB_.push_back(3224);outgoingM_.push_back(221); maxweight_.push_back(0.0299659); I1_.push_back(0.);I2_.push_back( 0.569036); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c to sigma*+ eta' incoming_.push_back(4122);outgoingB_.push_back(3224);outgoingM_.push_back(331); maxweight_.push_back(4.4186e-07); I1_.push_back(0.);I2_.push_back(-0.097631); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c to delta+ kbar0 incoming_.push_back(4122);outgoingB_.push_back(2214);outgoingM_.push_back(-311); maxweight_.push_back(0.0215801); I1_.push_back(0.);I2_.push_back(-2./sqrt(18.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c to delta++ k- incoming_.push_back(4122);outgoingB_.push_back(2224);outgoingM_.push_back(-321); maxweight_.push_back(0.0649794); I1_.push_back(0.);I2_.push_back(-2./sqrt(6.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c to xi*0 k+ incoming_.push_back(4122);outgoingB_.push_back(3324);outgoingM_.push_back(321); maxweight_.push_back(0.0198121); I1_.push_back(0.);I2_.push_back(2./sqrt(18.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to sigma*0 Kbar0 incoming_.push_back(4132);outgoingB_.push_back(3214);outgoingM_.push_back(-311); maxweight_.push_back(0.0118739); I1_.push_back(0.);I2_.push_back(-1./3.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to sigma*+ Kbar- incoming_.push_back(4132);outgoingB_.push_back(3224);outgoingM_.push_back(-321); maxweight_.push_back(0.0240231); I1_.push_back(0.);I2_.push_back(-2./sqrt(18.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to xi*0 pi0 incoming_.push_back(4132);outgoingB_.push_back(3324);outgoingM_.push_back(111); maxweight_.push_back(0.0173433); I1_.push_back(0.);I2_.push_back(-1./3.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to xi*0 eta incoming_.push_back(4132);outgoingB_.push_back(3324);outgoingM_.push_back(221); maxweight_.push_back(0.000939099); I1_.push_back(0.);I2_.push_back(0.097631); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to xi*0 eta' incoming_.push_back(4132);outgoingB_.push_back(3324);outgoingM_.push_back(331); maxweight_.push_back(1.31513e-05); I1_.push_back(0.);I2_.push_back(-0.569036); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to xi*- pi+ incoming_.push_back(4132);outgoingB_.push_back(3314);outgoingM_.push_back(211); maxweight_.push_back(0.0338039); I1_.push_back(0.);I2_.push_back(2./sqrt(18.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to omega- K+ incoming_.push_back(4132);outgoingB_.push_back(3334);outgoingM_.push_back(321); maxweight_.push_back(0.00715116); I1_.push_back(0.);I2_.push_back(2./sqrt(18.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // omega_c0 to xi*0 kbar0 incoming_.push_back(4332);outgoingB_.push_back(3324);outgoingM_.push_back(-311); maxweight_.push_back(0.00850994); I1_.push_back(-1./sqrt(3.));I2_.push_back(0.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // omega_c0 to omega pi+ incoming_.push_back(4332);outgoingB_.push_back(3334);outgoingM_.push_back(211); maxweight_.push_back(0.012698); I1_.push_back(-1./sqrt(3.));I2_.push_back(0.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c to sigma*0 rho+ incoming_.push_back(4122);outgoingB_.push_back(3214);outgoingM_.push_back(213); maxweight_.push_back(0.0478329); I1_.push_back(0.);I2_.push_back(1./3.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c to sigma*+ rho0 incoming_.push_back(4122);outgoingB_.push_back(3224);outgoingM_.push_back(113); maxweight_.push_back(0.0476973); I1_.push_back(0.);I2_.push_back(1./3.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c to sigma*+ omega incoming_.push_back(4122);outgoingB_.push_back(3224);outgoingM_.push_back(223); maxweight_.push_back(0.0260017); I1_.push_back(0.);I2_.push_back(1./3.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c to sigma*+ phi incoming_.push_back(4122);outgoingB_.push_back(3224);outgoingM_.push_back(333); maxweight_.push_back(3.55986e-07); I1_.push_back(0.);I2_.push_back(-sqrt(2.)/3.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c to delta+ kbar0 incoming_.push_back(4122);outgoingB_.push_back(2214);outgoingM_.push_back(-313); maxweight_.push_back(0.0988993); I1_.push_back(0.);I2_.push_back(-2./sqrt(18.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c to delta++ k- incoming_.push_back(4122);outgoingB_.push_back(2224);outgoingM_.push_back(-323); maxweight_.push_back(0.303435); I1_.push_back(0.);I2_.push_back(-2./sqrt(6.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // lambda_c to xi*0 k+ incoming_.push_back(4122);outgoingB_.push_back(3324);outgoingM_.push_back(323); maxweight_.push_back(9.70866e-05); I1_.push_back(0.);I2_.push_back(2./sqrt(18.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to sigma*0 Kbar0 incoming_.push_back(4132);outgoingB_.push_back(3214);outgoingM_.push_back(-313); maxweight_.push_back(0.0281627); I1_.push_back(0.);I2_.push_back(-1./3.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to sigma*- K- incoming_.push_back(4132);outgoingB_.push_back(3224);outgoingM_.push_back(-323); maxweight_.push_back(0.0575937); I1_.push_back(0.);I2_.push_back(-2./sqrt(18.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to xi*0 pi0 incoming_.push_back(4132);outgoingB_.push_back(3324);outgoingM_.push_back(113); maxweight_.push_back(0.0480608); I1_.push_back(0.);I2_.push_back(-1./3.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to xi*0 omega incoming_.push_back(4132);outgoingB_.push_back(3324);outgoingM_.push_back(223); maxweight_.push_back(0.0223044); I1_.push_back(0.);I2_.push_back(-1./3.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to xi*0 phi incoming_.push_back(4132);outgoingB_.push_back(3324);outgoingM_.push_back(333); maxweight_.push_back(3.187e-09); I1_.push_back(0.);I2_.push_back(-sqrt(2.)/3.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to xi*- rho+ incoming_.push_back(4132);outgoingB_.push_back(3314);outgoingM_.push_back(213); maxweight_.push_back(0.0958052); I1_.push_back(0.);I2_.push_back(2./sqrt(18.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // xi_c0 to omega- K*+ incoming_.push_back(4132);outgoingB_.push_back(3334);outgoingM_.push_back(323); maxweight_.push_back(0.000205851); I1_.push_back(0.);I2_.push_back(2./sqrt(18.)); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // omega_c0 to xi*0 k*bar0 incoming_.push_back(4332);outgoingB_.push_back(3324);outgoingM_.push_back(-313); maxweight_.push_back(0.050904); I1_.push_back(-1./sqrt(3.));I2_.push_back(0.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // omega_c0 to omega rho+ incoming_.push_back(4332);outgoingB_.push_back(3334);outgoingM_.push_back(213); maxweight_.push_back(0.0814021); I1_.push_back(-1./sqrt(3.));I2_.push_back(0.); I3_.push_back(0.);I4_.push_back(0.);I5_.push_back(0.); Ihat3_.push_back(0.);Ihat4_.push_back(0.); // initial size of the vectors initsize_=incoming_.size(); // intermediates generateIntermediates(false); } void KornerKramerCharmDecayer::doinitrun() { Baryon1MesonDecayerBase::doinitrun(); if(initialize()) { maxweight_.clear(); for(unsigned int ix=0;ix<numberModes();++ix) maxweight_.push_back(mode(ix)->maxWeight()); } } void KornerKramerCharmDecayer::doinit() { Baryon1MesonDecayerBase::doinit(); // check the vectors have the same size unsigned int isize=incoming_.size(); if(isize!=I1_.size()||isize!=I2_.size()||isize!=I3_.size()||isize!=I4_.size()|| isize!=I5_.size()||isize!=Ihat3_.size()||isize!=Ihat4_.size()|| isize!=incoming_.size()||isize!=outgoingB_.size()||isize!=outgoingM_.size()|| isize!=maxweight_.size()) throw InitException() << "Inconsistent parameters in" << " KornerKramerCharmDecayer::doinit()" << Exception::abortnow; // compute the various coefficients Energy m1,m2,m3,fmes(ZERO); Energy2 P1P2,Qplus,gmes(ZERO); double Fnonfact,A3,B3,Ffact[2]; Energy H2,H3,A2,B2; Energy2 A,B; int mspin,bspin; double chi, chiplus( 0.5*(cplus_*(1.+oneNC_)+cminus_*(1.-oneNC_))), chiminus(0.5*(cplus_*(1.+oneNC_)-cminus_*(1.-oneNC_))); InvEnergy2 pre(SM().fermiConstant()*sqrt(SM().CKM(1,1)*SM().CKM(0,0)/2.)),mform2[2]; // testing only // pre = SM().fermiConstant()*0.974/sqrt(2.); vector<double> wgt(0); tPDVector extpart(3); DecayPhaseSpaceModePtr mode; unsigned int iy; for(unsigned int ix=0;ix<isize;++ix) { // get the mass of the particles extpart[0]=getParticleData(incoming_[ix]); extpart[1]=getParticleData(outgoingB_[ix]); extpart[2]=getParticleData(outgoingM_[ix]); mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); addMode(mode,maxweight_[ix],wgt); m1=extpart[0]->mass(); m2=extpart[1]->mass(); m3=extpart[2]->mass(); // dot product P1P2 P1P2 = 0.5*(m1*m1+m2*m2-m3*m3); // formfactor for the non-factorizating diagrams and coefficients Fnonfact = 1./(1.-m3*m3/mscminus_/mscminus_)* (1.-(m1-m2)*(m1-m2)/mscminus_/mscminus_); Fnonfact *= Fnonfact*Fnonfact; H2 = H2_*Fnonfact; H3 = H3_*Fnonfact; if(abs(outgoingM_[ix])==211) { fmes=fpi_; chi=chiplus; mform2[0]=1./(mscminus_*mscminus_); mform2[1]=1./(mscplus_ *mscplus_); } else if(abs(outgoingM_[ix])==311) { fmes=fk_; chi=chiminus; mform2[0]=1./(mdcminus_*mdcminus_); mform2[1]=1./(mdcplus_ *mdcplus_); } else if(abs(outgoingM_[ix])==213) { gmes = frho_*m3*m3; chi=chiplus; mform2[0]=1./(mscminus_*mscminus_); mform2[1]=1./(mscplus_ *mscplus_); } else if(abs(outgoingM_[ix])==313) { gmes = fKstar_*m3*m3; chi=chiminus; mform2[0]=1./(mdcminus_*mdcminus_); mform2[1]=1./(mdcplus_ *mdcplus_); } else { fmes=ZERO; chi=0.; mform2[0]=1./(mscminus_*mscminus_); mform2[1]=1./(mscplus_ *mscplus_); gmes=ZERO; } // form factor for the factorising diagrams for(iy=0;iy<2;++iy) { Ffact[iy] = 1./(1.-m3*m3*mform2[iy])*(1.-(m1-m2)*(m1-m2)*mform2[iy]); Ffact[iy] *= Ffact[iy]*Ffact[iy]; } // invariants Qplus = (m1+m2)*(m1+m2)-m3*m3; // decide which type of decay mspin=getParticleData(outgoingM_[ix])->iSpin(); bspin=getParticleData(outgoingB_[ix])->iSpin(); if(bspin==2) { if(mspin==1) { // non-factorizing piece of the diagrams A = -0.75*H2/m1/m2*cminus_*( (m1*P1P2-m1*m2*(m2+m3))*I3_[ix] -(m2*P1P2-m1*m2*(m1+m3))*Ihat3_[ix]); B = 0.25/m1/m2*cminus_*( 0.5*H2*Qplus*( m1*( I3_[ix]+2.* I4_[ix]) +m2*(Ihat3_[ix]+2.*Ihat4_[ix])) +H3*m1*m2*(m1+m2+m3)*12.*I5_[ix]); // the factorizing piece A +=0.25/m1/m2*chi*fmes*Qplus*(m1-m2)*(2.*I1_[ix]+I2_[ix])*Ffact[0]; B +=0.25/m1/m2*chi*fmes*Qplus*(m1+m2)/3.*(4.*I1_[ix]+5.*I2_[ix])*Ffact[1]; // add to vectors A1_.push_back(A*pre);B1_.push_back(B*pre); A2_.push_back(ZERO);B2_.push_back(ZERO); A3_.push_back(ZERO);B3_.push_back(ZERO); } else if(mspin==3) { // non-factorizing terms A = -0.25*H2/m1/m2*cminus_* ( (m1*P1P2-m1*m2*(m2+m3))*( I3_[ix]+2.* I4_[ix]) +(m2*P1P2-m1*m2*(m1+m3))*(Ihat3_[ix]+2.*Ihat4_[ix])); A2 = -0.25*H2/m1/m2*cminus_*(m1+m2+m3)*( m1*( I3_[ix]+2.* I4_[ix]) -m2*(Ihat3_[ix]+2.*Ihat4_[ix])); B = +0.25/m1/m2*cminus_*(0.5*H2*Qplus*( m1*( I3_[ix]+2.* I4_[ix]) +m2*(Ihat3_[ix]+2.*Ihat4_[ix])) +H3*m1*m2*(m1+m2+m3)*12.*I5_[ix]); B2 = -0.25/m1/m2*cminus_* ( H2*( m1*(m1+m2)*( I3_[ix]+2.* I4_[ix])-3.*m1*m3* I3_[ix] +m2*(m1+m2)*(Ihat3_[ix]+2.*Ihat4_[ix])-3.*m2*m3*Ihat3_[ix]) +H3*m1*m2*24.*I5_[ix]); // the factorizing piece A += -0.25/m1/m2*chi*gmes*Qplus/3.*(4.*I1_[ix]+5.*I2_[ix])*Ffact[1]; B += 0.25/m1/m2*chi*gmes*Qplus/3.*(4.*I1_[ix]+5.*I2_[ix])*Ffact[0]; B2 += 0.25/m1/m2*chi*gmes*(m1+m2)*4./3.*(I1_[ix]-I2_[ix])*Ffact[0]; // add to vectors A1_.push_back(A*pre);B1_.push_back(B*pre); A2_.push_back(A2*pre);B2_.push_back(B2*pre); A3_.push_back(ZERO);B3_.push_back(ZERO); } else throw InitException() << "Invalid outgoing meson spin in" << " KornerKramerCharmDecayer::doinit()" << Exception::abortnow; } else if(bspin==4) { if(mspin==1) { // first the non-factorizing piece B2 = -1.5*cminus_*H2*I2_[ix]; // then the factorizing piece B2 += chi*fmes*(1.+m2/m1)*I1_[ix]*Ffact[1]; // add to vectors // make the coupling dimensionless A1_.push_back(0.);B1_.push_back(0.); A2_.push_back(ZERO);B2_.push_back(B2*pre); A3_.push_back(ZERO);B3_.push_back(ZERO); } else if(mspin==3) { InvEnergy norm(0.75/m1/m2*cminus_*H2*I2_[ix]); // first the non-factorizing piece A = -norm*m1*(P1P2-m2*(m2+m3))*2.; A2 = ZERO; A3 = norm*m1*2.; B = -norm*m1*Qplus; B2 = -norm*m1*m2*2.; B3 = norm*m1*2.; // then the factorizing piece double norm2 = 0.5/m1/m2*chi*gmes*I1_[ix]; A += norm2*Qplus*Ffact[1]; //A2 += ZERO; A3 +=-norm2*2.*Ffact[1]; B += norm2*Qplus*Ffact[0]; B2 += norm2*m2*2.*Ffact[0]; B3 +=-norm2*2.*Ffact[0]; // add to vectors A1_.push_back( A*pre);B1_.push_back( B*pre); A2_.push_back(2.*A2*pre);B2_.push_back(2.*B2*pre); A3_.push_back(A3*pre);B3_.push_back(B3*pre); } else throw InitException() << "Invalid outgoing meson spin in" << " KornerKramerCharmDecayer::doinit()" << Exception::abortnow; } else throw InitException() << "Invalid outgoing baryon spin in" << " KornerKramerCharmDecayer::doinit()" << Exception::abortnow; } } int KornerKramerCharmDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); // must be two outgoing particles if(children.size()!=2){return imode;} // ids of the particles int id0(parent->id()); int id1(children[0]->id()); int id2(children[1]->id()); unsigned int ix(0); do { if(id0==incoming_[ix]) { if((id1==outgoingB_[ix]&&id2==outgoingM_[ix])|| (id2==outgoingB_[ix]&&id1==outgoingM_[ix])) imode=ix; } else if(id0==-incoming_[ix]) { if((id1==-outgoingB_[ix]&&id2==-outgoingM_[ix])|| (id2==-outgoingB_[ix]&&id1==-outgoingM_[ix])) imode=ix; if(((id1==-outgoingB_[ix]&&id2==outgoingM_[ix])|| (id2==-outgoingB_[ix]&&id1==outgoingM_[ix]))&& (outgoingM_[ix]==111||outgoingM_[ix]==221||outgoingM_[ix]==331|| outgoingM_[ix]==113||outgoingM_[ix]==223||outgoingM_[ix]==333)) imode=ix; } ++ix; } while(ix<incoming_.size()&&imode<0); // charge conjugation if needed cc = id0<0; // return mode number return imode; } void KornerKramerCharmDecayer::persistentOutput(PersistentOStream & os) const { os << oneNC_ << ounit(fpi_,GeV) << ounit(fk_,GeV) << frho_ << fKstar_ << ounit(mdcplus_,GeV) << ounit(mdcminus_,GeV) << ounit(mscplus_,GeV) << ounit(mscminus_,GeV) << cplus_ << cminus_ << ounit(H2_,GeV) << ounit(H3_,GeV) << I1_ << I2_ << I3_ << I4_ << I5_ << Ihat3_ << Ihat4_ << incoming_ << outgoingB_ << outgoingM_ << maxweight_ << A1_ << ounit(A2_,1./GeV) << ounit(A3_,1./GeV2) << B1_ << ounit(B2_,1./GeV) << ounit(B3_,1./GeV2) << initsize_; } void KornerKramerCharmDecayer::persistentInput(PersistentIStream & is, int) { is >> oneNC_ >> iunit(fpi_,GeV) >> iunit(fk_,GeV) >> frho_ >> fKstar_ >> iunit(mdcplus_,GeV) >> iunit(mdcminus_,GeV) >> iunit(mscplus_,GeV) >> iunit(mscminus_,GeV) >> cplus_ >> cminus_ >> iunit(H2_,GeV) >> iunit(H3_,GeV) >> I1_ >> I2_ >> I3_ >> I4_ >> I5_ >> Ihat3_ >> Ihat4_ >> incoming_ >> outgoingB_ >> outgoingM_ >> maxweight_ >> A1_ >> iunit(A2_,1./GeV) >> iunit(A3_,1./GeV2) >> B1_ >> iunit(B2_,1./GeV) >> iunit(B3_,1./GeV2) >> initsize_; } ClassDescription<KornerKramerCharmDecayer> KornerKramerCharmDecayer::initKornerKramerCharmDecayer; // Definition of the static class description member. void KornerKramerCharmDecayer::Init() { static ClassDocumentation<KornerKramerCharmDecayer> documentation ("The KornerKramerCharmDecayer class implements the" " non-leptonic weak decay of charm baryons using the results of Z.Phys.C55,659.", "The non-leptonic charm decays were simulated using the KornerKramerCharmDecayer" "class which implements the model of \\cite{Korner:1992wi}.", "\\bibitem{Korner:1992wi}\n" "J.~G.~Korner and M.~Kramer,\n" "Z.\\ Phys.\\ C {\\bf 55} (1992) 659.\n" "%%CITATION = ZEPYA,C55,659;%%\n"); static Parameter<KornerKramerCharmDecayer,double> interfaceOneOverNc ("OneOverNc", "One divided by the number of colours, the default is to take N_c to infinity.", &KornerKramerCharmDecayer::oneNC_, 0.0, 0.0, 10.0, false, false, true); static Parameter<KornerKramerCharmDecayer,Energy> interfaceFpi ("Fpi", "The decay constant for the pi meson.", &KornerKramerCharmDecayer::fpi_, MeV, 131.7*MeV, 100.0*MeV, 200.0*MeV, false, false, true); static Parameter<KornerKramerCharmDecayer,Energy> interfaceFK ("FK", "The decay constant for the K meson", &KornerKramerCharmDecayer::fk_, MeV, 160.6*MeV, 100.0*MeV, 200.0*MeV, false, false, true); static Parameter<KornerKramerCharmDecayer,double> interfaceFrho ("Frho", "The decay constant for the rho meson", &KornerKramerCharmDecayer::frho_, 0.272, 0.0, 1.0, false, false, true); static Parameter<KornerKramerCharmDecayer,double> interfacefKstar ("fKstar", "The decay constant for the K star meson", &KornerKramerCharmDecayer::fKstar_, 0.238, 0.0, 1.0, false, false, false); static Parameter<KornerKramerCharmDecayer,Energy> interfaceMdcplus ("Mdcplus", "The mass of the 1+ dc meson for the form-factors", &KornerKramerCharmDecayer::mdcplus_, GeV, 2.42*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<KornerKramerCharmDecayer,Energy> interfaceMscplus ("Mscplus", "The mass of the 1+ sc meson for the form-factors", &KornerKramerCharmDecayer::mscplus_, GeV, 2.54*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<KornerKramerCharmDecayer,Energy> interfaceMdcminus ("Mdcminus", "The mass of the 1- dc meson for the form-factors", &KornerKramerCharmDecayer::mdcminus_, GeV, 2.01*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<KornerKramerCharmDecayer,Energy> interfaceMscminus ("Mscminus", "The mass of the 1- sc meson for the form-factors", &KornerKramerCharmDecayer::mscminus_, GeV, 2.11*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<KornerKramerCharmDecayer,double> interfaceCplus ("Cplus", "The c+ perturvative coefficient", &KornerKramerCharmDecayer::cplus_, 0.73, 0.0, 10.0, false, false, true); static Parameter<KornerKramerCharmDecayer,double> interfaceCminus ("Cminus", "The c+ perturvative coefficient", &KornerKramerCharmDecayer::cminus_, 1.90, 0.0, 10.0, false, false, true); static Parameter<KornerKramerCharmDecayer,Energy> interfaceH2 ("H2", "The H2 parameter", &KornerKramerCharmDecayer::H2_, GeV, 0.119*GeV, ZERO, 10.0*GeV, false, false, true); static Parameter<KornerKramerCharmDecayer,Energy> interfaceH3 ("H3", "The H3 parameter", &KornerKramerCharmDecayer::H3_, GeV,-0.011*GeV,-10.0*GeV, 10.0*GeV, false, false, true); static ParVector<KornerKramerCharmDecayer,double> interfaceI1 ("I1", "The I_1 invariant for the decay modes", &KornerKramerCharmDecayer::I1_, -1, 0., -10.0, 10.0, false, false, true); static ParVector<KornerKramerCharmDecayer,double> interfaceI2 ("I2", "The I_2 invariant for the decay modes", &KornerKramerCharmDecayer::I2_, -1, 0., -10.0, 10.0, false, false, true); static ParVector<KornerKramerCharmDecayer,double> interfaceI3 ("I3", "The I_3 invariant for the decay modes", &KornerKramerCharmDecayer::I3_, -1, 0., -10.0, 10.0, false, false, true); static ParVector<KornerKramerCharmDecayer,double> interfaceI4 ("I4", "The I_4 invariant for the decay modes", &KornerKramerCharmDecayer::I4_, -1, 0., -10.0, 10.0, false, false, true); static ParVector<KornerKramerCharmDecayer,double> interfaceI5 ("I5", "The I_5 invariant for the decay modes", &KornerKramerCharmDecayer::I5_, -1, 0., -10.0, 10.0, false, false, true); static ParVector<KornerKramerCharmDecayer,double> interfaceIhat3 ("Ihat3", "The Ihat_3 invariant for the decay modes", &KornerKramerCharmDecayer::Ihat3_, -1, 0., -10.0, 10.0, false, false, true); static ParVector<KornerKramerCharmDecayer,double> interfaceIhat4 ("Ihat4", "The Ihat_4 invariant for the decay modes", &KornerKramerCharmDecayer::Ihat4_, -1, 0., -10.0, 10.0, false, false, true); static ParVector<KornerKramerCharmDecayer,int> interfaceIncoming ("Incoming", "The PDG code of the incoming baryon", &KornerKramerCharmDecayer::incoming_, -1, 0, 0, 1000000, false, false, true); static ParVector<KornerKramerCharmDecayer,int> interfaceOutgoingB ("OutgoingB", "The PDG code of the outgoing baryon", &KornerKramerCharmDecayer::outgoingB_, -1, 0, 0, 1000000, false, false, true); static ParVector<KornerKramerCharmDecayer,int> interfaceOutgoingM ("OutgoingM", "The PDG code of the outgoing meson", &KornerKramerCharmDecayer::outgoingM_, -1, 0, -1000000, 1000000, false, false, true); static ParVector<KornerKramerCharmDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &KornerKramerCharmDecayer::maxweight_, 0, 0, 0, 0., 100., false, false, true); } // couplings for spin-1/2 to spin-1/2 spin-0 void KornerKramerCharmDecayer:: halfHalfScalarCoupling(int imode,Energy,Energy,Energy, Complex& A,Complex&B) const { useMe(); A = A1_[imode]; B = B1_[imode]; } // couplings for spin-1/2 to spin-1/2 spin-1 void KornerKramerCharmDecayer::halfHalfVectorCoupling(int imode, Energy m0,Energy m1,Energy, Complex& A1,Complex& A2, Complex& B1,Complex& B2) const { useMe(); // conventions changed so that A is the coefficient of the // non-gamma_5 piece in the base class A1 = B1_[imode]; B1 = A1_[imode]; A2 = B2_[imode]*(m0+m1); B2 = A2_[imode]*(m0+m1); } // couplings for spin-1/2 to spin-3/2 spin-0 void KornerKramerCharmDecayer::halfThreeHalfScalarCoupling(int imode, Energy m0, Energy m1,Energy,Complex& A, Complex& B) const { useMe(); // conventions changed so that A is the coefficient of the // non-gamma_5 piece in the base class A = B2_[imode]*(m0+m1); B = A2_[imode]*(m0+m1); } // couplings for spin-1/2 to spin-3/2 spin-1 void KornerKramerCharmDecayer:: halfThreeHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy, Complex& A1, Complex& A2, Complex& A3, Complex& B1, Complex& B2, Complex& B3) const { useMe(); A1 = A1_[imode]; A2 = A2_[imode]*(m0+m1); A3 = A3_[imode]*(m0+m1)*(m0+m1); B1 = B1_[imode]; B2 = B2_[imode]*(m0+m1); B3 = B3_[imode]*(m0+m1)*(m0+m1); } void KornerKramerCharmDecayer::dataBaseOutput(ofstream & output,bool header) const { if(header) output << "update decayers set parameters=\""; Baryon1MesonDecayerBase::dataBaseOutput(output,false); output << "newdef " << name() << ":OneOverNc " << oneNC_ << "\n"; output << "newdef " << name() << ":Fpi " << fpi_/MeV << "\n"; output << "newdef " << name() << ":FK " << fk_/MeV << "\n"; output << "newdef " << name() << ":Frho " << frho_ << "\n"; output << "newdef " << name() << ":fKstar " << fKstar_ << "\n"; output << "newdef " << name() << ":Mdcplus " << mdcplus_/GeV << "\n"; output << "newdef " << name() << ":Mscplus " << mscplus_/GeV << "\n"; output << "newdef " << name() << ":Mdcminus " << mdcminus_/GeV << "\n"; output << "newdef " << name() << ":Mscminus " << mscminus_/GeV << "\n"; output << "newdef " << name() << ":Cplus " << cplus_ << "\n"; output << "newdef " << name() << ":Cminus " << cminus_ << "\n"; output << "newdef " << name() << ":H2 " << H2_/GeV << "\n"; output << "newdef " << name() << ":H3 " << H3_/GeV << "\n"; for(unsigned int ix=0;ix<incoming_.size();++ix) { if(ix<initsize_) { output << "newdef " << name() << ":I1 " << ix << " " << I1_[ix] << "\n"; output << "newdef " << name() << ":I2 " << ix << " " << I2_[ix] << "\n"; output << "newdef " << name() << ":I3 " << ix << " " << I3_[ix] << "\n"; output << "newdef " << name() << ":I4 " << ix << " " << I4_[ix] << "\n"; output << "newdef " << name() << ":I5 " << ix << " " << I5_[ix] << "\n"; output << "newdef " << name() << ":Ihat3 " << ix << " " << Ihat3_[ix] << "\n"; output << "newdef " << name() << ":Ihat4 " << ix << " " << Ihat4_[ix] << "\n"; output << "newdef " << name() << ":Incoming " << ix << " " << incoming_[ix] << "\n"; output << "newdef " << name() << ":OutgoingB " << ix << " " << outgoingB_[ix] << "\n"; output << "newdef " << name() << ":OutgoingM " << ix << " " << outgoingM_[ix] << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << maxweight_[ix] << "\n"; } else { output << "insert " << name() << ":I1 " << ix << " " << I1_[ix] << "\n"; output << "insert " << name() << ":I2 " << ix << " " << I2_[ix] << "\n"; output << "insert " << name() << ":I3 " << ix << " " << I3_[ix] << "\n"; output << "insert " << name() << ":I4 " << ix << " " << I4_[ix] << "\n"; output << "insert " << name() << ":I5 " << ix << " " << I5_[ix] << "\n"; output << "insert " << name() << ":Ihat3 " << ix << " " << Ihat3_[ix] << "\n"; output << "insert " << name() << ":Ihat4 " << ix << " " << Ihat4_[ix] << "\n"; output << "insert " << name() << ":Incoming " << ix << " " << incoming_[ix] << "\n"; output << "insert " << name() << ":OutgoingB " << ix << " " << outgoingB_[ix] << "\n"; output << "insert " << name() << ":OutgoingM " << ix << " " << outgoingM_[ix] << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << maxweight_[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/SU3BaryonSingletOctetScalarDecayer.cc������������������������������0000644�0001750�0001750�00000025542�11754474773�026331� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SU3BaryonSingletOctetScalarDecayer class. // #include "SU3BaryonSingletOctetScalarDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; SU3BaryonSingletOctetScalarDecayer::SU3BaryonSingletOctetScalarDecayer() { // the coupling _c=0.39; // the relative parities of the two baryon multiplets _parity=false; // the pion decay constant _fpi=130.7*MeV; // PDG codes for the various ground state baryons _proton = 2212; _neutron = 2112; _sigma0 = 3212; _sigmap = 3222; _sigmam = 3112; _lambda = 3122; _xi0 = 3322; _xim = 3312; // PDG codes for the excited baryon _elambda = 13122; // intermediates generateIntermediates(false); } void SU3BaryonSingletOctetScalarDecayer::doinit() { Baryon1MesonDecayerBase::doinit(); // set up the decay modes setupModes(1); // set up the phase space and the couplings tPDVector extpart(3); DecayPhaseSpaceModePtr mode; double wgtmax; vector<double> wgt(0); for(unsigned int ix=0;ix<_outgoingB.size();++ix) { extpart[0]=getParticleData(_elambda); extpart[1]=getParticleData(_outgoingB[ix]); extpart[2]=getParticleData(_outgoingM[ix]); mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); wgtmax = _maxweight.size()>numberModes() ? _maxweight[numberModes()] : 1.; addMode(mode,wgtmax,wgt); } } void SU3BaryonSingletOctetScalarDecayer::doinitrun() { Baryon1MesonDecayerBase::doinitrun(); if(initialize()) { _maxweight.clear(); for(unsigned int ix=0;ix<numberModes();++ix) _maxweight.push_back(mode(ix)->maxWeight()); } } int SU3BaryonSingletOctetScalarDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); if(_outgoingB.size()==0) setupModes(0); // must be two outgoing particles if(children.size()!=2) return imode; // ids of the particles int id0(parent->id()); int id1(children[0]->id()); int id2(children[1]->id()); unsigned int ix(0); cc =false; do { if(id0==_elambda) { if((id1==_outgoingB[ix]&&id2==_outgoingM[ix])|| (id2==_outgoingB[ix]&&id1==_outgoingM[ix])) { imode=ix; cc=false; } } else if(id0==-_elambda) { if((id1==-_outgoingB[ix]&&id2==-_outgoingM[ix])|| (id2==-_outgoingB[ix]&&id1==-_outgoingM[ix])) { imode=ix; cc=true; } if(((id1==-_outgoingB[ix]&&id2==_outgoingM[ix])|| (id2==-_outgoingB[ix]&&id1==_outgoingM[ix]))&& (_outgoingM[ix]==111||_outgoingM[ix]==221||_outgoingM[ix]==331|| _outgoingM[ix]==223||_outgoingM[ix]==333)) { imode=ix; cc=true; } } ++ix; } while(ix<_outgoingB.size()&&imode<0); return imode; } void SU3BaryonSingletOctetScalarDecayer::persistentOutput(PersistentOStream & os) const { os << _c << _parity << ounit(_fpi,GeV) << _proton << _neutron << _sigma0 << _sigmap << _sigmam << _lambda << _xi0 << _xim << _elambda << _outgoingB << _outgoingM << _maxweight << ounit(_prefactor,1./GeV); } void SU3BaryonSingletOctetScalarDecayer::persistentInput(PersistentIStream & is, int) { is >> _c >> _parity >> iunit(_fpi,GeV) >> _proton >> _neutron >> _sigma0 >> _sigmap >> _sigmam >> _lambda >> _xi0 >> _xim >> _elambda >> _outgoingB >> _outgoingM >> _maxweight >> iunit(_prefactor,1./GeV); } ClassDescription<SU3BaryonSingletOctetScalarDecayer> SU3BaryonSingletOctetScalarDecayer::initSU3BaryonSingletOctetScalarDecayer; // Definition of the static class description member. void SU3BaryonSingletOctetScalarDecayer::Init() { static ClassDocumentation<SU3BaryonSingletOctetScalarDecayer> documentation ("The SU3BaryonSingletOctetScalarDecayer class is designed for" "the decay of an excited SU(3) singlet baryon"); static Parameter<SU3BaryonSingletOctetScalarDecayer,double> interfaceCcoupling ("Coupling", "The C coupling of the baryon resonances", &SU3BaryonSingletOctetScalarDecayer::_c, 0.39, -10.0, 10.0, false, false, true); static Switch<SU3BaryonSingletOctetScalarDecayer,bool> interfaceParity ("Parity", "The relative parities of the two multiplets.", &SU3BaryonSingletOctetScalarDecayer::_parity, true, false, false); static SwitchOption interfaceParitySame (interfaceParity, "Same", "Same parity", true); static SwitchOption interfaceParityDifferent (interfaceParity, "Different", "Opposite parity", false); static Parameter<SU3BaryonSingletOctetScalarDecayer,Energy> interfaceFpi ("Fpi", "The pion decay constant.", &SU3BaryonSingletOctetScalarDecayer::_fpi, MeV, 130.7*MeV, 100.0*MeV, 200.0*MeV, false, false, true); static Parameter<SU3BaryonSingletOctetScalarDecayer,int> interfaceProton ("Proton", "The PDG code for the lighter proton-like baryon.", &SU3BaryonSingletOctetScalarDecayer::_proton, 2212, 0, 1000000, false, false, true); static Parameter<SU3BaryonSingletOctetScalarDecayer,int> interfaceNeutron ("Neutron", "The PDG code for the lighter neutron-like baryon.", &SU3BaryonSingletOctetScalarDecayer::_neutron, 2112, 0, 1000000, false, false, true); static Parameter<SU3BaryonSingletOctetScalarDecayer,int> interfaceSigmap ("Sigma+", "The PDG code for the lighter Sigma+-like baryon.", &SU3BaryonSingletOctetScalarDecayer::_sigmap, 3222, 0, 1000000, false, false, true); static Parameter<SU3BaryonSingletOctetScalarDecayer,int> interfaceSigma0 ("Sigma0", "The PDG code for the lighter Sigma0-like baryon.", &SU3BaryonSingletOctetScalarDecayer::_sigma0, 3212, 0, 1000000, false, false, true); static Parameter<SU3BaryonSingletOctetScalarDecayer,int> interfaceSigmam ("Sigma-", "The PDG code for the lighter Sigma--like baryon.", &SU3BaryonSingletOctetScalarDecayer::_sigmam, 3112, 0, 1000000, false, false, true); static Parameter<SU3BaryonSingletOctetScalarDecayer,int> interfaceLambda ("Lambda", "The PDG code for the lighter Lambda-like baryon.", &SU3BaryonSingletOctetScalarDecayer::_lambda, 3122, 0, 1000000, false, false, true); static Parameter<SU3BaryonSingletOctetScalarDecayer,int> interfaceXi0 ("Xi0", "The PDG code for the lighter Xi0-like baryon.", &SU3BaryonSingletOctetScalarDecayer::_xi0, 3322, 0, 1000000, false, false, true); static Parameter<SU3BaryonSingletOctetScalarDecayer,int> interfaceXim ("Xi-", "The PDG code for the lighter Xi--like baryon.", &SU3BaryonSingletOctetScalarDecayer::_xim, 3312, 0, 1000000, false, false, true); static Parameter<SU3BaryonSingletOctetScalarDecayer,int> interfaceExcitedLambda ("ExcitedLambda", "The PDG code for the heavier Lambda-like baryon.", &SU3BaryonSingletOctetScalarDecayer::_elambda, 13122, 0, 1000000, false, false, true); static ParVector<SU3BaryonSingletOctetScalarDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &SU3BaryonSingletOctetScalarDecayer::_maxweight, 0, 0, 0, 0., 100., false, false, true); } // couplings for spin-1/2 to spin-1/2 spin-0 void SU3BaryonSingletOctetScalarDecayer:: halfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy, Complex& A, Complex& B) const { if(_parity) { A=0.; B=_prefactor[imode]*(m0+m1); } else { A=_prefactor[imode]*(m0-m1); B=0.; } } // couplings for spin-1/2 to spin-3/2 spin-0 void SU3BaryonSingletOctetScalarDecayer:: threeHalfHalfScalarCoupling(int imode,Energy m0, Energy m1,Energy, Complex& A, Complex& B) const { if(_parity) { A=_prefactor[imode]*(m0+m1); B=0.; } else { A=0.; B=_prefactor[imode]*(m0+m1); } } // set up the decay modes void SU3BaryonSingletOctetScalarDecayer::setupModes(unsigned int iopt) const { if(_outgoingB.size()!=0&&iopt==0) return; if(iopt==1) { _outgoingB.clear(); _outgoingM.clear(); } // set up for the various different decay modes vector<int> outtemp,mestemp; double rt(sqrt(2.)); if(_elambda==0) throw DecayIntegratorError() << "Invalid incoming particle in " << "SU3BaryonSingletOctetScalarDecayer::" << "setupModes()" << Exception::abortnow; // decays of the excited lambda outtemp.push_back(_sigma0);mestemp.push_back(111); outtemp.push_back(_sigmap);mestemp.push_back(-211); outtemp.push_back(_sigmam);mestemp.push_back(211); outtemp.push_back(_lambda);mestemp.push_back(221); outtemp.push_back(_xim);mestemp.push_back(321); outtemp.push_back(_xi0);mestemp.push_back(311); outtemp.push_back(_proton);mestemp.push_back(-321); outtemp.push_back(_neutron);mestemp.push_back(-311); tPDVector extpart(3); extpart[0]=getParticleData(_elambda); int inspin(extpart[0]->iSpin()),outspin; for(unsigned int ix=0;ix<outtemp.size();++ix) { if(outtemp[ix]!=0&&mestemp[ix]!=0) { extpart[1]=getParticleData(outtemp[ix]); extpart[2]=getParticleData(mestemp[ix]); if(extpart[0]->massMax()>extpart[1]->massMin()+extpart[2]->massMin()) { _outgoingB.push_back(outtemp[ix]); _outgoingM.push_back(mestemp[ix]); if(iopt==1) { outspin = extpart[1]->iSpin(); if(inspin==2&&outspin==2) _prefactor.push_back(_c*rt/_fpi); else if(inspin==4&&outspin==2) _prefactor.push_back(_c*rt/_fpi); else throw DecayIntegratorError() << "Invalid combination of spins in " << "SU3BaryonSingletOctetScalarDecayer::" << "setupModes()" << Exception::abortnow; } } } } } void SU3BaryonSingletOctetScalarDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; Baryon1MesonDecayerBase::dataBaseOutput(output,false); output << "newdef " << name() << ":Coupling " << _c << "\n"; output << "newdef " << name() << ":Parity " << _parity<< "\n"; output << "newdef " << name() << ":Fpi " << _fpi/MeV << "\n"; output << "newdef " << name() << ":Proton " << _proton << "\n"; output << "newdef " << name() << ":Neutron " << _neutron << "\n"; output << "newdef " << name() << ":Sigma+ " << _sigmap << "\n"; output << "newdef " << name() << ":Sigma0 " << _sigma0 << "\n"; output << "newdef " << name() << ":Sigma- " << _sigmam << "\n"; output << "newdef " << name() << ":Lambda " << _lambda << "\n"; output << "newdef " << name() << ":Xi0 " << _xi0 << "\n"; output << "newdef " << name() << ":Xi- " << _xim << "\n"; output << "newdef " << name() << ":ExcitedLambda " << _elambda << "\n"; for(unsigned int ix=0;ix<_maxweight.size();++ix) output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/StrongHeavyBaryonDecayer.cc����������������������������������������0000644�0001750�0001750�00000076112�11754474773�024514� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the StrongHeavyBaryonDecayer class. // #include "StrongHeavyBaryonDecayer.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void StrongHeavyBaryonDecayer::doinitrun() { Baryon1MesonDecayerBase::doinitrun(); if(initialize()) { _maxweight.clear(); for(unsigned int ix=0;ix<numberModes();++ix) { if(mode(ix)) _maxweight.push_back(mode(ix)->maxWeight()); else _maxweight.push_back(1.); } } } StrongHeavyBaryonDecayer::StrongHeavyBaryonDecayer() { // strong couplings of the baryons to pions // coupling of the sigma_c to lambda_c pi _gsigma_clambda_cpi = 8.88/GeV; // coupling of xi*_c to xi_c pi _gxistar_cxi_cpi = 8.34/GeV; // strong coupling for lambda_c1 to sigma_c pi _flambda_c1sigma_cpi=0.52; // strong coupling for xi_c1 to xi_c' _fxi_c1xi_cpi = 0.36; // strong coupling for lambda_c1star to sigma_c pi _flambda_c1starsigma_cpi=21.5/GeV2; // strong coupling for xi_ci* to xi_c' _fxi_c1starxi_cpi = 20./GeV2; // coupling of the sigma_b to lambda_b pi _gsigma_blambda_bpi = 8.88/GeV; // coupling of xi*_b to xi_b pi _gxistar_bxi_bpi = 8.34/GeV; // strong coupling for lambda_b1 to sigma_b pi _flambda_b1sigma_bpi=0.52; // strong coupling for xi_b1 to xi_b' _fxi_b1xi_bpi = 0.36; // strong coupling for lambda_b1star to sigma_b pi _flambda_b1starsigma_bpi=21.5/GeV2; // strong coupling for xi_bi* to xi_b' _fxi_b1starxi_bpi = 20./GeV2; // the particles and maximum weights for the decay modes // sigma_c to lambda_c pi _incoming.push_back(4222);_outgoingB.push_back(4122);_outgoingM.push_back( 211); _maxweight.push_back(2.5);_modetype.push_back(1); _incoming.push_back(4212);_outgoingB.push_back(4122);_outgoingM.push_back( 111); _maxweight.push_back(3.);_modetype.push_back(1); _incoming.push_back(4112);_outgoingB.push_back(4122);_outgoingM.push_back(-211); _maxweight.push_back(2.5);_modetype.push_back(1); /* // xi'_c to xi_c pi _incoming.push_back(4322);_outgoingB.push_back(4232);_outgoingM.push_back( 111); _maxweight.push_back(1.);_modetype.push_back(1); _incoming.push_back(4322);_outgoingB.push_back(4132);_outgoingM.push_back( 211); _maxweight.push_back(1.);_modetype.push_back(1); _incoming.push_back(4312);_outgoingB.push_back(4132);_outgoingM.push_back( 111); _maxweight.push_back(1.);_modetype.push_back(1); _incoming.push_back(4312);_outgoingB.push_back(4232);_outgoingM.push_back(-211); _maxweight.push_back(1.);_modetype.push_back(1); */ // sigma*_c to lambda_c pi _incoming.push_back(4224);_outgoingB.push_back(4122);_outgoingM.push_back( 211); _maxweight.push_back(2.5);_modetype.push_back(1); _incoming.push_back(4214);_outgoingB.push_back(4122);_outgoingM.push_back( 111); _maxweight.push_back(3.5);_modetype.push_back(1); _incoming.push_back(4114);_outgoingB.push_back(4122);_outgoingM.push_back(-211); _maxweight.push_back(3.5);_modetype.push_back(1); // xi*_c to xi_c pi _incoming.push_back(4324);_outgoingB.push_back(4232);_outgoingM.push_back( 111); _maxweight.push_back(2.);_modetype.push_back(1); _incoming.push_back(4324);_outgoingB.push_back(4132);_outgoingM.push_back( 211); _maxweight.push_back(2.);_modetype.push_back(1); _incoming.push_back(4314);_outgoingB.push_back(4132);_outgoingM.push_back( 111); _maxweight.push_back(2.);_modetype.push_back(1); _incoming.push_back(4314);_outgoingB.push_back(4232);_outgoingM.push_back(-211); _maxweight.push_back(2.);_modetype.push_back(1); // lambda_c1 to sigma_c pi _incoming.push_back(14122);_outgoingB.push_back(4222);_outgoingM.push_back(-211); _maxweight.push_back(3.);_modetype.push_back(0); _incoming.push_back(14122);_outgoingB.push_back(4212);_outgoingM.push_back( 111); _maxweight.push_back(7.);_modetype.push_back(0); _incoming.push_back(14122);_outgoingB.push_back(4112);_outgoingM.push_back( 211); _maxweight.push_back(3.5);_modetype.push_back(0); // lambda_c1* to sigma_c pi _incoming.push_back( 4124);_outgoingB.push_back(4222);_outgoingM.push_back(-211); _maxweight.push_back(0.2);_modetype.push_back(1); _incoming.push_back( 4124);_outgoingB.push_back(4212);_outgoingM.push_back( 111); _maxweight.push_back(0.2);_modetype.push_back(1); _incoming.push_back( 4124);_outgoingB.push_back(4112);_outgoingM.push_back( 211); _maxweight.push_back(0.2);_modetype.push_back(1); // sigma_b to lambda_b pi _incoming.push_back(5222);_outgoingB.push_back(5122);_outgoingM.push_back( 211); _maxweight.push_back(2.5);_modetype.push_back(1); _incoming.push_back(5212);_outgoingB.push_back(5122);_outgoingM.push_back( 111); _maxweight.push_back(3.);_modetype.push_back(1); _incoming.push_back(5112);_outgoingB.push_back(5122);_outgoingM.push_back(-211); _maxweight.push_back(2.5);_modetype.push_back(1); /* // xi'_b to xi_b pi _incoming.push_back(5322);_outgoingB.push_back(5232);_outgoingM.push_back( 111); _maxweight.push_back(1.);_modetype.push_back(1); _incoming.push_back(5322);_outgoingB.push_back(5132);_outgoingM.push_back( 211); _maxweight.push_back(1.);_modetype.push_back(1); _incoming.push_back(5312);_outgoingB.push_back(5132);_outgoingM.push_back( 111); _maxweight.push_back(1.);_modetype.push_back(1); _incoming.push_back(5312);_outgoingB.push_back(5232);_outgoingM.push_back(-211); _maxweight.push_back(1.);_modetype.push_back(1); */ // sigma*_b to lambda_b pi _incoming.push_back(5224);_outgoingB.push_back(5122);_outgoingM.push_back( 211); _maxweight.push_back(2.5);_modetype.push_back(1); _incoming.push_back(5214);_outgoingB.push_back(5122);_outgoingM.push_back( 111); _maxweight.push_back(2.5);_modetype.push_back(1); _incoming.push_back(5114);_outgoingB.push_back(5122);_outgoingM.push_back(-211); _maxweight.push_back(2.5);_modetype.push_back(1); // xi*_b to xi_b pi _incoming.push_back(5324);_outgoingB.push_back(5232);_outgoingM.push_back( 111); _maxweight.push_back(3.);_modetype.push_back(1); _incoming.push_back(5324);_outgoingB.push_back(5132);_outgoingM.push_back( 211); _maxweight.push_back(2.);_modetype.push_back(1); _incoming.push_back(5314);_outgoingB.push_back(5132);_outgoingM.push_back( 111); _maxweight.push_back(2.);_modetype.push_back(1); _incoming.push_back(5314);_outgoingB.push_back(5232);_outgoingM.push_back(-211); _maxweight.push_back(2.5);_modetype.push_back(1); // lambda_b1 to sigma_b pi _incoming.push_back(15122);_outgoingB.push_back(5222);_outgoingM.push_back(-211); _maxweight.push_back(2.6);_modetype.push_back(0); _incoming.push_back(15122);_outgoingB.push_back(5212);_outgoingM.push_back( 111); _maxweight.push_back(6.);_modetype.push_back(0); _incoming.push_back(15122);_outgoingB.push_back(5112);_outgoingM.push_back( 211); _maxweight.push_back(3.);_modetype.push_back(0); // lambda_b1* to sigma_b pi _incoming.push_back( 5124);_outgoingB.push_back(5222);_outgoingM.push_back(-211); _maxweight.push_back(0.2);_modetype.push_back(2); _incoming.push_back( 5124);_outgoingB.push_back(5212);_outgoingM.push_back( 111); _maxweight.push_back(0.2);_modetype.push_back(2); _incoming.push_back( 5124);_outgoingB.push_back(5112);_outgoingM.push_back( 211); _maxweight.push_back(0.2);_modetype.push_back(2); // xi_c1* to xi_c' pi _incoming.push_back(14324);_outgoingB.push_back(4322);_outgoingM.push_back( 111); _maxweight.push_back(2.);_modetype.push_back(2); _incoming.push_back(14324);_outgoingB.push_back(4312);_outgoingM.push_back( 211); _maxweight.push_back(2.);_modetype.push_back(2); _incoming.push_back(14314);_outgoingB.push_back(4312);_outgoingM.push_back( 111); _maxweight.push_back(2.);_modetype.push_back(2); _incoming.push_back(14314);_outgoingB.push_back(4322);_outgoingM.push_back(-211); _maxweight.push_back(2.5);_modetype.push_back(2); // xi_c1* to xi_c* pi _incoming.push_back(14324);_outgoingB.push_back(4324);_outgoingM.push_back( 111); _maxweight.push_back(2.5);_modetype.push_back(0); _incoming.push_back(14324);_outgoingB.push_back(4314);_outgoingM.push_back( 211); _maxweight.push_back(2.5);_modetype.push_back(0); _incoming.push_back(14314);_outgoingB.push_back(4314);_outgoingM.push_back( 111); _maxweight.push_back(2.8);_modetype.push_back(0); _incoming.push_back(14314);_outgoingB.push_back(4324);_outgoingM.push_back(-211); _maxweight.push_back(2.5);_modetype.push_back(0); // xi_c1 to xi_c' pi _incoming.push_back(14322);_outgoingB.push_back(4322);_outgoingM.push_back( 111); _maxweight.push_back(2.);_modetype.push_back(0); _incoming.push_back(14322);_outgoingB.push_back(4312);_outgoingM.push_back( 211); _maxweight.push_back(2.);_modetype.push_back(0); _incoming.push_back(14312);_outgoingB.push_back(4312);_outgoingM.push_back( 111); _maxweight.push_back(2.);_modetype.push_back(0); _incoming.push_back(14312);_outgoingB.push_back(4322);_outgoingM.push_back(-211); _maxweight.push_back(2.);_modetype.push_back(0); // xi_c1 to xi_c* pi _incoming.push_back(14322);_outgoingB.push_back(4324);_outgoingM.push_back( 111); _maxweight.push_back(0.02);_modetype.push_back(2); _incoming.push_back(14322);_outgoingB.push_back(4314);_outgoingM.push_back( 211); _maxweight.push_back(0.02);_modetype.push_back(2); _incoming.push_back(14312);_outgoingB.push_back(4314);_outgoingM.push_back( 111); _maxweight.push_back(0.02);_modetype.push_back(2); _incoming.push_back(14312);_outgoingB.push_back(4324);_outgoingM.push_back(-211); _maxweight.push_back(0.02);_modetype.push_back(2); // xi_b1* to xi_b' pi _incoming.push_back(15324);_outgoingB.push_back(5322);_outgoingM.push_back( 111); _maxweight.push_back(2.2);_modetype.push_back(2); _incoming.push_back(15324);_outgoingB.push_back(5312);_outgoingM.push_back( 211); _maxweight.push_back(2.2);_modetype.push_back(2); _incoming.push_back(15314);_outgoingB.push_back(5312);_outgoingM.push_back( 111); _maxweight.push_back(2.2);_modetype.push_back(2); _incoming.push_back(15314);_outgoingB.push_back(5322);_outgoingM.push_back(-211); _maxweight.push_back(2.2);_modetype.push_back(2); // xi_b1* to xi_b* pi _incoming.push_back(15324);_outgoingB.push_back(5324);_outgoingM.push_back( 111); _maxweight.push_back(2.5);_modetype.push_back(0); _incoming.push_back(15324);_outgoingB.push_back(5314);_outgoingM.push_back( 211); _maxweight.push_back(2.5);_modetype.push_back(0); _incoming.push_back(15314);_outgoingB.push_back(5314);_outgoingM.push_back( 111); _maxweight.push_back(3.0);_modetype.push_back(0); _incoming.push_back(15314);_outgoingB.push_back(5324);_outgoingM.push_back(-211); _maxweight.push_back(2.5);_modetype.push_back(0); // xi_b1 to xi_b' pi _incoming.push_back(15322);_outgoingB.push_back(5322);_outgoingM.push_back( 111); _maxweight.push_back(2.);_modetype.push_back(0); _incoming.push_back(15322);_outgoingB.push_back(5312);_outgoingM.push_back( 211); _maxweight.push_back(2.);_modetype.push_back(0); _incoming.push_back(15312);_outgoingB.push_back(5312);_outgoingM.push_back( 111); _maxweight.push_back(2.);_modetype.push_back(0); _incoming.push_back(15312);_outgoingB.push_back(5322);_outgoingM.push_back(-211); _maxweight.push_back(2.);_modetype.push_back(0); // xi_b1 to xi_b* pi _incoming.push_back(15322);_outgoingB.push_back(5324);_outgoingM.push_back( 111); _maxweight.push_back(0.01);_modetype.push_back(2); _incoming.push_back(15322);_outgoingB.push_back(5314);_outgoingM.push_back( 211); _maxweight.push_back(0.01);_modetype.push_back(2); _incoming.push_back(15312);_outgoingB.push_back(5314);_outgoingM.push_back( 111); _maxweight.push_back(0.01);_modetype.push_back(2); _incoming.push_back(15312);_outgoingB.push_back(5324);_outgoingM.push_back(-211); _maxweight.push_back(0.01);_modetype.push_back(2); // initial size of the vectors _initsize=_incoming.size(); // intermediates generateIntermediates(false); } void StrongHeavyBaryonDecayer::doinit() { Baryon1MesonDecayerBase::doinit(); unsigned int isize(_incoming.size()); if(isize!=_outgoingB.size()||isize!=_outgoingM.size()||isize!=_maxweight.size()) throw InitException() << "Inconsistent parameters in StrongHeavyBaryonDecayer" << "::doinit()" << Exception::abortnow; // add the various decay modes vector<double> wgt(0); tPDVector extpart(3); DecayPhaseSpaceModePtr mode; double or2(1./sqrt(2.)),or3(1./sqrt(3.)),or6(1./sqrt(6.)); // the decay modes for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0]=getParticleData(_incoming[ix]); extpart[1]=getParticleData(_outgoingB[ix]); extpart[2]=getParticleData(_outgoingM[ix]); if(extpart[0]&&extpart[1]) { mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); addMode(mode,_maxweight[ix],wgt); } else { addMode(DecayPhaseSpaceModePtr(),_maxweight[ix],wgt); } if(_outgoingB[ix]==4122&&((_incoming[ix]==4222&&_outgoingM[ix]==211)|| (_incoming[ix]==4212&&_outgoingM[ix]==111)|| (_incoming[ix]==4112&&_outgoingM[ix]==-211))) _prefactor.push_back(-_gsigma_clambda_cpi*GeV*or3); else if((_incoming[ix]==4322&&((_outgoingB[ix]==4232&&_outgoingM[ix]==111)|| (_outgoingB[ix]==4132&&_outgoingM[ix]==211)))|| (_incoming[ix]==4312&&((_outgoingB[ix]==4132&&_outgoingM[ix]==111)|| (_outgoingB[ix]==4232&&_outgoingM[ix]==-211)))) _prefactor.push_back(_outgoingM[ix]==111 ? 0.5*_gxistar_cxi_cpi*GeV*or3 : _gxistar_cxi_cpi*GeV*or6); else if(_outgoingB[ix]==4122&&((_incoming[ix]==4224&&_outgoingM[ix]== 211)|| (_incoming[ix]==4214&&_outgoingM[ix]== 111)|| (_incoming[ix]==4114&&_outgoingM[ix]==-211))) _prefactor.push_back(_gsigma_clambda_cpi*GeV); else if((_incoming[ix]==4324&&((_outgoingB[ix]==4232&&_outgoingM[ix]==111)|| (_outgoingB[ix]==4132&&_outgoingM[ix]==211)))|| (_incoming[ix]==4314&&((_outgoingB[ix]==4132&&_outgoingM[ix]==111)|| (_outgoingB[ix]==4232&&_outgoingM[ix]==-211)))) _prefactor.push_back(_outgoingM[ix]==111 ? 0.5*_gxistar_cxi_cpi*GeV : _gxistar_cxi_cpi*or2*GeV); else if(_incoming[ix]==14122&&((_outgoingB[ix]==4222&&_outgoingM[ix]==-211)|| (_outgoingB[ix]==4212&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==4112&&_outgoingM[ix]== 211))) _prefactor.push_back(_flambda_c1sigma_cpi); else if(_incoming[ix]== 4124&&((_outgoingB[ix]==4222&&_outgoingM[ix]==-211)|| (_outgoingB[ix]==4212&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==4112&&_outgoingM[ix]== 211))) _prefactor.push_back(_flambda_c1starsigma_cpi*or3*GeV2); else if((_incoming[ix]==14324&&((_outgoingB[ix]==4322&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==4312&&_outgoingM[ix]== 211)))|| (_incoming[ix]==14314&&((_outgoingB[ix]==4312&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==4322&&_outgoingM[ix]==-211)))) _prefactor.push_back(_outgoingM[ix]==111 ? _fxi_c1starxi_cpi*0.5*or6*GeV2 : _fxi_c1starxi_cpi*0.5*or3*GeV2); else if((_incoming[ix]==14324&&((_outgoingB[ix]==4324&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==4314&&_outgoingM[ix]== 211)))|| (_incoming[ix]==14314&&((_outgoingB[ix]==4314&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==4324&&_outgoingM[ix]==-211)))) _prefactor.push_back(_outgoingM[ix]==111 ? _fxi_c1xi_cpi*0.5*or2 : _fxi_c1xi_cpi*0.5); else if((_incoming[ix]==14322&&((_outgoingB[ix]==4322&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==4312&&_outgoingM[ix]== 211)))|| (_incoming[ix]==14312&&((_outgoingB[ix]==4312&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==4322&&_outgoingM[ix]==-211)))) _prefactor.push_back(_outgoingM[ix]==111 ? _fxi_c1xi_cpi*0.5*or2 : _fxi_c1xi_cpi*0.5); else if((_incoming[ix]==14322&&((_outgoingB[ix]==4324&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==4314&&_outgoingM[ix]== 211)))|| (_incoming[ix]==14312&&((_outgoingB[ix]==4314&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==4324&&_outgoingM[ix]==-211)))) _prefactor.push_back(_outgoingM[ix]==111 ? _fxi_c1starxi_cpi*0.5*or6*GeV2 : _fxi_c1starxi_cpi*0.5*or3*GeV2); else if(_outgoingB[ix]==5122&&((_incoming[ix]==5222&&_outgoingM[ix]==211)|| (_incoming[ix]==5212&&_outgoingM[ix]==111)|| (_incoming[ix]==5112&&_outgoingM[ix]==-211))) _prefactor.push_back(_gsigma_blambda_bpi*GeV*or3); else if((_incoming[ix]==5322&&((_outgoingB[ix]==5232&&_outgoingM[ix]==111)|| (_outgoingB[ix]==5132&&_outgoingM[ix]==211)))|| (_incoming[ix]==5312&&((_outgoingB[ix]==5132&&_outgoingM[ix]==111)|| (_outgoingB[ix]==5232&&_outgoingM[ix]==-211)))) _prefactor.push_back(_outgoingM[ix]==111 ? 0.5*_gxistar_bxi_bpi*GeV*or3 : _gxistar_bxi_bpi*GeV*or6); else if(_outgoingB[ix]==5122&&((_incoming[ix]==5224&&_outgoingM[ix]== 211)|| (_incoming[ix]==5214&&_outgoingM[ix]== 111)|| (_incoming[ix]==5114&&_outgoingM[ix]==-211))) _prefactor.push_back(-_gsigma_blambda_bpi*GeV); else if((_incoming[ix]==5324&&((_outgoingB[ix]==5232&&_outgoingM[ix]==111)|| (_outgoingB[ix]==5132&&_outgoingM[ix]==211)))|| (_incoming[ix]==5314&&((_outgoingB[ix]==5132&&_outgoingM[ix]==111)|| (_outgoingB[ix]==5232&&_outgoingM[ix]==-211)))) _prefactor.push_back(_outgoingM[ix]==111 ? -0.5*_gxistar_bxi_bpi*GeV : _gxistar_bxi_bpi*or2*GeV); else if(_incoming[ix]==15122&&((_outgoingB[ix]==5222&&_outgoingM[ix]==-211)|| (_outgoingB[ix]==5212&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==5112&&_outgoingM[ix]== 211))) _prefactor.push_back(_flambda_b1sigma_bpi); else if(_incoming[ix]== 5124&&((_outgoingB[ix]==5222&&_outgoingM[ix]==-211)|| (_outgoingB[ix]==5212&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==5112&&_outgoingM[ix]== 211))) _prefactor.push_back(_flambda_b1starsigma_bpi*or3*GeV*GeV); else if((_incoming[ix]==15324&&((_outgoingB[ix]==5322&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==5312&&_outgoingM[ix]== 211)))|| (_incoming[ix]==15314&&((_outgoingB[ix]==5312&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==5322&&_outgoingM[ix]==-211)))) _prefactor.push_back(_outgoingM[ix]==111 ? _fxi_b1starxi_bpi*0.5*or6*GeV2 : _fxi_b1starxi_bpi*0.5*or3*GeV2); else if((_incoming[ix]==15324&&((_outgoingB[ix]==5324&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==5314&&_outgoingM[ix]== 211)))|| (_incoming[ix]==15314&&((_outgoingB[ix]==5314&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==5324&&_outgoingM[ix]==-211)))) _prefactor.push_back(_outgoingM[ix]==111 ? _fxi_b1xi_bpi*0.5*or2 : _fxi_b1xi_bpi*0.5); else if((_incoming[ix]==15322&&((_outgoingB[ix]==5322&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==5312&&_outgoingM[ix]== 211)))|| (_incoming[ix]==15312&&((_outgoingB[ix]==5312&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==5322&&_outgoingM[ix]==-211)))) _prefactor.push_back(_outgoingM[ix]==111 ? _fxi_b1xi_bpi*0.5*or2 : _fxi_b1xi_bpi*0.5); else if((_incoming[ix]==15322&&((_outgoingB[ix]==5324&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==5314&&_outgoingM[ix]== 211)))|| (_incoming[ix]==15312&&((_outgoingB[ix]==5314&&_outgoingM[ix]== 111)|| (_outgoingB[ix]==5324&&_outgoingM[ix]==-211)))) _prefactor.push_back(_outgoingM[ix]==111 ? _fxi_b1starxi_bpi*0.5*or6*GeV2 : _fxi_b1starxi_bpi*0.5*or3*GeV2); else throw InitException() << "Unknown mode in StrongHeavyBaryonDecayer::doinit()" << Exception::abortnow; } } void StrongHeavyBaryonDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_gsigma_clambda_cpi,1./GeV) << ounit(_gxistar_cxi_cpi,1./GeV) << _flambda_c1sigma_cpi << _fxi_c1xi_cpi << ounit(_flambda_c1starsigma_cpi,1./GeV2) << ounit(_fxi_c1starxi_cpi,1./GeV2) << ounit(_gsigma_blambda_bpi,1./GeV) << ounit(_gxistar_bxi_bpi,1./GeV) << _flambda_b1sigma_bpi << _fxi_b1xi_bpi << ounit(_flambda_b1starsigma_bpi,1./GeV2) << ounit(_fxi_b1starxi_bpi,1./GeV2) << _incoming << _outgoingB << _outgoingM << _maxweight << _prefactor << _modetype; } void StrongHeavyBaryonDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_gsigma_clambda_cpi,1./GeV) >> iunit(_gxistar_cxi_cpi,1./GeV) >> _flambda_c1sigma_cpi >> _fxi_c1xi_cpi >> iunit(_flambda_c1starsigma_cpi,1./GeV2) >> iunit(_fxi_c1starxi_cpi,1./GeV2) >> iunit(_gsigma_blambda_bpi,1./GeV) >> iunit(_gxistar_bxi_bpi,1./GeV) >> _flambda_b1sigma_bpi >> _fxi_b1xi_bpi >> iunit(_flambda_b1starsigma_bpi,1./GeV2) >> iunit(_fxi_b1starxi_bpi,1./GeV2) >> _incoming >> _outgoingB >> _outgoingM >> _maxweight >> _prefactor >> _modetype; } int StrongHeavyBaryonDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); if(children.size()!=2){return imode;} // ids of the particles int id0(parent->id()); int id1(children[0]->id()); int id2(children[1]->id()); unsigned int ix(0); cc =false; do { if(id0==_incoming[ix]) { if((id1==_outgoingB[ix]&&id2==_outgoingM[ix])|| (id2==_outgoingB[ix]&&id1==_outgoingM[ix])) { imode=ix; cc=false; } } else if(id0==-_incoming[ix]) { if((id1==-_outgoingB[ix]&&id2==-_outgoingM[ix])|| (id2==-_outgoingB[ix]&&id1==-_outgoingM[ix])) { imode=ix; cc=true; } if(((id1==-_outgoingB[ix]&&id2==_outgoingM[ix])|| (id2==-_outgoingB[ix]&&id1==_outgoingM[ix]))&& (_outgoingM[ix]==111||_outgoingM[ix]==221||_outgoingM[ix]==331|| _outgoingM[ix]==223||_outgoingM[ix]==333)) { imode=ix; cc=true; } } ++ix; } while(ix<_incoming.size()&&imode<0); return imode; } ClassDescription<StrongHeavyBaryonDecayer> StrongHeavyBaryonDecayer::initStrongHeavyBaryonDecayer; // Definition of the static class description member. void StrongHeavyBaryonDecayer::Init() { static ClassDocumentation<StrongHeavyBaryonDecayer> documentation ("The StrongHeavyBaryonDecayer class performs the strong decays of" " baryons containing a heavy quark using the results of hep-ph/9904421.", "The strong decays of the heavy baryons were simulated using the results of" "\\cite{Ivanov:1999bk}.", "\\bibitem{Ivanov:1999bk}\n" "M.~A.~Ivanov, J.~G.~Korner, V.~E.~Lyubovitskij and A.~G.~Rusetsky,\n" "Phys.\\ Rev.\\ D {\\bf 60} (1999) 094002\n" "[arXiv:hep-ph/9904421].\n" "%%CITATION = PHRVA,D60,094002;%%\n"); static Parameter<StrongHeavyBaryonDecayer,InvEnergy> interfacegSigma_cLambda_cPi ("gSigma_cLambda_cPi", "The coupling of the Sigma_c to Lambda_c pi", &StrongHeavyBaryonDecayer::_gsigma_clambda_cpi, 1./GeV, 8.8/GeV, ZERO, 20.0/GeV, false, false, true); static Parameter<StrongHeavyBaryonDecayer,InvEnergy> interfacegXiStar_cXi_cPi ("gXiStar_cXi_cPi", "The coupling of the Xi*_c to Xi_c pi", &StrongHeavyBaryonDecayer::_gxistar_cxi_cpi, 1./GeV, 8.34/GeV, ZERO, 20.0/GeV, false, false, true); static Parameter<StrongHeavyBaryonDecayer,double> interfacefLambda_c1Sigma_cPi ("fLambda_c1Sigma_cPi", "The coupling of the Lambda_c1 to Sigma_c pi", &StrongHeavyBaryonDecayer::_flambda_c1sigma_cpi, 0.52, 0, 10, false, false, false); static Parameter<StrongHeavyBaryonDecayer,double> interfacefXi_c1Xi_cPi ("fXi_c1Xi_cPi", "The coupling of the Xi_c1 to Xi_c pi", &StrongHeavyBaryonDecayer::_fxi_c1xi_cpi, 0.36, 0, 10, false, false, false); static Parameter<StrongHeavyBaryonDecayer,InvEnergy2> interfacefLambda_c1starSigma_cPi ("fLambda_c1*Sigma_cPi", "The coupling of Lambda_c1* to Sigma_c and pi", &StrongHeavyBaryonDecayer::_flambda_c1starsigma_cpi, 1./GeV2, 21.5/GeV2, ZERO, 100.0/GeV2, false, false, true); static Parameter<StrongHeavyBaryonDecayer,InvEnergy> interfacegSigma_bLambda_bPi ("gSigma_bLambda_bPi", "The coupling of the Sigma_b to Lambda_b pi", &StrongHeavyBaryonDecayer::_gsigma_blambda_bpi, 1./GeV, 8.8/GeV, ZERO, 20.0/GeV, false, false, true); static Parameter<StrongHeavyBaryonDecayer,InvEnergy2> interfacefXi_c1starXi_cPi ("fXi_c1*Xi_cPi", "The coupling of Xi_c1* to Xi_c and pi", &StrongHeavyBaryonDecayer::_fxi_c1starxi_cpi, 1./GeV2, 20./GeV2, ZERO, 100.0/GeV2, false, false, true); static Parameter<StrongHeavyBaryonDecayer,InvEnergy> interfacegXiStar_bXi_bPi ("gXiStar_bXi_bPi", "The coupling of the Xi*_b to Xi_b pi", &StrongHeavyBaryonDecayer::_gxistar_bxi_bpi, 1./GeV, 8.34/GeV, ZERO, 20.0/GeV, false, false, true); static Parameter<StrongHeavyBaryonDecayer,double> interfacefLambda_b1Sigma_bPi ("fLambda_b1Sigma_bPi", "The coupling of the Lambda_b1 to Sigma_b pi", &StrongHeavyBaryonDecayer::_flambda_b1sigma_bpi, 0.52, 0, 10, false, false, false); static Parameter<StrongHeavyBaryonDecayer,double> interfacefXi_b1Xi_bPi ("fXi_b1Xi_bPi", "The coupling of the Xi_b1 to Xi_b pi", &StrongHeavyBaryonDecayer::_fxi_b1xi_bpi, 0.36, 0, 10, false, false, false); static Parameter<StrongHeavyBaryonDecayer,InvEnergy2> interfacefLambda_b1starSigma_bPi ("fLambda_b1*Sigma_bPi", "The coupling of Lambda_b1* to Sigma_b and pi", &StrongHeavyBaryonDecayer::_flambda_b1starsigma_bpi, 1./GeV2, 21.5/GeV2, ZERO, 100.0/GeV2, false, false, true); static Parameter<StrongHeavyBaryonDecayer,InvEnergy2> interfacefXi_b1starXi_bPi ("fXi_b1*Xi_bPi", "The coupling of Xi_b1* to Xi_b and pi", &StrongHeavyBaryonDecayer::_fxi_b1starxi_bpi, 1./GeV2, 20./GeV2, ZERO, 100.0/GeV2, false, false, true); static ParVector<StrongHeavyBaryonDecayer,int> interfaceIncoming ("Incoming", "The PDG code of the incoming baryon", &StrongHeavyBaryonDecayer::_incoming, -1, 0, 0, 1000000, false, false, true); static ParVector<StrongHeavyBaryonDecayer,int> interfaceOutgoingB ("OutgoingB", "The PDG code of the outgoing baryon", &StrongHeavyBaryonDecayer::_outgoingB, -1, 0, 0, 1000000, false, false, true); static ParVector<StrongHeavyBaryonDecayer,int> interfaceOutgoingM ("OutgoingM", "The PDG code of the outgoing meson", &StrongHeavyBaryonDecayer::_outgoingM, -1, 0, -1000000, 1000000, false, false, true); static ParVector<StrongHeavyBaryonDecayer,int> interfaceModeType ("ModeType", "The type of mode. 0 is s-wave, 1 is p-wave and 2 is d-wave", &StrongHeavyBaryonDecayer::_modetype, -1, 0, 0, 2, false, false, true); static ParVector<StrongHeavyBaryonDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &StrongHeavyBaryonDecayer::_maxweight, 0, 0, 0, 0., 100., false, false, true); } // couplings for spin-1/2 to spin-1/2 spin-0 void StrongHeavyBaryonDecayer:: halfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex & A,Complex & B) const { useMe(); if(_modetype[imode]==0) { A = _prefactor[imode]; B = 0.; } else if(_modetype[imode]==1) { A = 0.; B = 0.5*_prefactor[imode]*((m0+m1)*(m0+m1)-m2*m2)/m0/GeV; } else throw DecayIntegratorError() << "Unknown mode in StrongHeavyBaryonDecayer::" << "halfHalfScalarCoupling() " << Exception::abortnow; } // couplings for spin-1/2 to spin-3/2 spin-0 void StrongHeavyBaryonDecayer:: halfThreeHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex& A,Complex& B) const { useMe(); if(_modetype[imode]==1) { A = _prefactor[imode]*(m0+m1)/GeV; B = 0.; } else if(_modetype[imode]==2) { A = 0.; B = 0.5*_prefactor[imode]*(m0+m1)*((m0+m1)*(m0+m1)-m2*m2)/m0/GeV2; } else { throw DecayIntegratorError() << "Unknown mode in StrongHeavyBaryonDecayer::" << "halfThreeHalfScalarCoupling() " << Exception::abortnow; } } // couplings for spin-3/2 to spin-3/2 spin-0 void StrongHeavyBaryonDecayer:: threeHalfThreeHalfScalarCoupling(int imode,Energy,Energy,Energy, Complex& A1,Complex& A2,Complex& B1,Complex& B2) const { useMe(); if(_modetype[imode]==0) { A1 = _prefactor[imode]; B1 = 0.; A2=0.; B2=0.; } else { throw DecayIntegratorError() << "Unknown mode in StrongHeavyBaryonDecayer::" << "threeHalfThreeHalfScalarCoupling() " << Exception::abortnow; } } // couplings for spin-3/2 to spin-1/2 spin-0 void StrongHeavyBaryonDecayer:: threeHalfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A,Complex& B) const { useMe(); if(_modetype[imode]==1) { A = _prefactor[imode]*(m0+m1)/GeV; B = 0.; } else if(_modetype[imode]==2) { A = 0.; B = 0.5*_prefactor[imode]*(m0+m1)*((m0+m1)*(m0+m1)-m2*m2)/m0/GeV2; } else { throw DecayIntegratorError() << "Unknown mode in StrongHeavyBaryonDecayer::" << "threeHalfHalfScalarCoupling() " << Exception::abortnow; } } void StrongHeavyBaryonDecayer::dataBaseOutput(ofstream & output,bool header) const { if(header) output << "update decayers set parameters=\""; Baryon1MesonDecayerBase::dataBaseOutput(output,false); output << "newdef " << name() << ":gSigma_cLambda_cPi " << _gsigma_clambda_cpi*GeV << "\n"; output << "newdef " << name() << ":gXiStar_cXi_cPi " << _gxistar_cxi_cpi*GeV << "\n"; output << "newdef " << name() << ":fLambda_c1Sigma_cPi " << _flambda_c1sigma_cpi << "\n"; output << "newdef " << name() << ":fXi_c1Xi_cPi " << _fxi_c1xi_cpi << "\n"; output << "newdef " << name() << ":fLambda_c1*Sigma_cPi " << _flambda_c1starsigma_cpi*GeV2 << "\n"; output << "newdef " << name() << ":fXi_c1*Xi_cPi " << _fxi_c1starxi_cpi*GeV2 << "\n"; output << "newdef " << name() << ":gSigma_bLambda_bPi " << _gsigma_blambda_bpi*GeV << "\n"; output << "newdef " << name() << ":gXiStar_bXi_bPi " << _gxistar_bxi_bpi*GeV << "\n"; output << "newdef " << name() << ":fLambda_b1Sigma_bPi " << _flambda_b1sigma_bpi << "\n"; output << "newdef " << name() << ":fXi_b1Xi_bPi " << _fxi_b1xi_bpi << "\n"; output << "newdef " << name() << ":fLambda_b1*Sigma_bPi " << _flambda_b1starsigma_bpi*GeV2 << "\n"; output << "newdef " << name() << ":fXi_b1*Xi_bPi " << _fxi_b1starxi_bpi*GeV2 << "\n"; for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":OutgoingB " << ix << " " << _outgoingB[ix] << "\n"; output << "newdef " << name() << ":OutgoingM " << ix << " " << _outgoingM[ix] << "\n"; output << "newdef " << name() << ":ModeType " << ix << " " << _modetype[ix] << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":OutgoingB " << ix << " " << _outgoingB[ix] << "\n"; output << "insert " << name() << ":OutgoingM " << ix << " " << _outgoingM[ix] << "\n"; output << "insert " << name() << ":ModeType " << ix << " " << _modetype[ix] << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/SU3BaryonDecupletOctetScalarDecayer.h������������������������������0000644�0001750�0001750�00000020321�11754474773�026321� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_SU3BaryonDecupletOctetScalarDecayer_H #define HERWIG_SU3BaryonDecupletOctetScalarDecayer_H // // This is the declaration of the SU3BaryonDecupletOctetScalarDecayer class. // #include "Baryon1MesonDecayerBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>SU3BaryonDecupletOctetScalarDecayer</code> class is designed for the * decay of a \f$SU(3)\f$ deculpet baryon to an octet baryon and a pseudoscalar meson * from the lightest multiplet. * * The coupling is taken to have the form * \f[\frac{C}{f_\pi}\left[ * \bar{\Delta}^{\mu,abc}p_{\phi,\mu}\phi^i_aB^j_b\epsilon_{cij} * -\bar{B}^b_ip_{\phi,\mu}\phi^a_j\Delta^\mu_{abc}\epsilon^{cij} * \right],\f] * where \f$\Delta^\mu_{abc}\f$ is the decuplet field, \f$B^j_b\f$ * is the octet field and * \f$\phi^i_a\f$ is the pseudoscalar field, \f$f_\pi\f$ is the pion decay constant * and \f$C\f$ is the coupling for the decay. * * This is one of a number of decayers based on \f$SU(3)\f$ symmetry which are * intended for the decay of excited baryons. * * @see Baryon1MesonDecayerBase * @see SU3BaryonOctetOctetPhotonDecayer * @see SU3BaryonDecupletOctetPhotonDecayer * @see SU3BaryonDecupletOctetScalarDecayer * @see SU3BaryonSingletOctetPhotonDecayer * @see SU3BaryonSingletOctetScalarDecayer * @see SU3BaryonOctetDecupletScalarDecayer * @see SU3BaryonOctetOctetScalarDecayer * */ class SU3BaryonDecupletOctetScalarDecayer: public Baryon1MesonDecayerBase { public: /** * Default constructor. */ SU3BaryonDecupletOctetScalarDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void threeHalfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A,Complex& B) const; //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<SU3BaryonDecupletOctetScalarDecayer> initSU3BaryonDecupletOctetScalarDecayer; /** * Private and non-existent assignment operator. */ SU3BaryonDecupletOctetScalarDecayer & operator=(const SU3BaryonDecupletOctetScalarDecayer &); private: /** * Set-up the modes */ void setupModes(unsigned int) const; private: /** * the coupling */ double _c; /** * the relative parities of the two baryon multiplets */ bool _parity; /** * the pion decay constant */ Energy _fpi; /** * PDG codes for the various octet baryons */ //@{ /** * The PDG code for the \f$p\f$-like member of the outgoing octet. */ long _proton; /** * The PDG code for the \f$n\f$-like member of the outgoing octet. */ long _neutron; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ long _sigma0; /** * The PDG code for the \f$\Sigma^+\f$-like member of the outgoing octet. */ long _sigmap; /** * The PDG code for the \f$\Sigma^-\f$-like member of the outgoing octet. */ long _sigmam; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ long _lambda; /** * The PDG code for the \f$\Xi^0\f$-like member of the outgoing octet. */ long _xi0; /** * The PDG code for the \f$\Xi^-\f$-like member of the outgoing octet. */ long _xim; //@} /** * PDG codes for the various decuplet baryons */ //@{ /** * The PDG code for the \f$\Delta^{++}\f$-like member of the incoming decuplet. */ long _deltapp; /** * The PDG code for the \f$\Delta^{+}\f$-like member of the incoming decuplet. */ long _deltap; /** * The PDG code for the \f$\Delta^{0}\f$-like member of the incoming decuplet. */ long _delta0; /** * The PDG code for the \f$\Delta^{-}\f$-like member of the incoming decuplet. */ long _deltam; /** * The PDG code for the \f$\Sigma^{*+}\f$-like member of the incoming decuplet. */ long _sigmasp; /** * The PDG code for the \f$\Sigma^{*0}\f$-like member of the incoming decuplet. */ long _sigmas0; /** * The PDG code for the \f$\Sigma^{*-}\f$-like member of the incoming decuplet. */ long _sigmasm; /** * The PDG code for the \f$\Omega^-\f$-like member of the incoming decuplet. */ long _omega; /** * The PDG code for the \f$\Xi^{*-}\f$-like member of the incoming decuplet. */ long _xism; /** * The PDG code for the \f$\Xi^{*0}\f$-like member of the incoming decuplet. */ long _xis0; //@} /** * PDG code for the incoming baryons */ mutable vector<long> _incomingB; /** * PDG code for the outgoing baryons */ mutable vector<long> _outgoingB; /** * PDG code for the outgoing mesons */ mutable vector<long> _outgoingM; /** * the maximum weight for the various modes */ vector<double> _maxweight; /** * The couplings for the different modes */ mutable vector<InvEnergy> _prefactor; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SU3BaryonDecupletOctetScalarDecayer. */ template <> struct BaseClassTrait<Herwig::SU3BaryonDecupletOctetScalarDecayer,1> { /** Typedef of the base class of SU3BaryonDecupletOctetScalarDecayer. */ typedef Herwig::Baryon1MesonDecayerBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SU3BaryonDecupletOctetScalarDecayer> : public ClassTraitsBase<Herwig::SU3BaryonDecupletOctetScalarDecayer> { /** Return the class name.*/ static string className() { return "Herwig::SU3BaryonDecupletOctetScalarDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SU3BaryonDecupletOctetScalarDecayer_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/SU3BaryonDecupletOctetScalarDecayer.cc�����������������������������0000644�0001750�0001750�00000043142�11754474773�026465� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SU3BaryonDecupletOctetScalarDecayer class. // #include "SU3BaryonDecupletOctetScalarDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; SU3BaryonDecupletOctetScalarDecayer::SU3BaryonDecupletOctetScalarDecayer() { // couplings and off-shell parameter _c=1.5; // the relative parities of the two baryon multiplets _parity=true; // the pion decay constant _fpi=92.4*MeV; // PDG codes for the various octet baryons _proton = 2212; _neutron = 2112; _sigma0 = 3212; _sigmap = 3222; _sigmam = 3112; _lambda = 3122; _xi0 = 3322; _xim = 3312; // PDG codes for the various decuplet baryons _deltapp = 2224; _deltap = 2214; _delta0 = 2114; _deltam = 1114; _sigmasp = 3224; _sigmas0 = 3214; _sigmasm = 3114; _omega = 3334; _xism = 3314; _xis0 = 3324; // intermediates generateIntermediates(false); } void SU3BaryonDecupletOctetScalarDecayer::doinit() { Baryon1MesonDecayerBase::doinit(); // set up the decay modes setupModes(1); // set up the phase space and the couplings tPDVector extpart(3); DecayPhaseSpaceModePtr mode; double wgtmax; vector<double> wgt(0); for(unsigned int ix=0;ix<_incomingB.size();++ix) { extpart[0]=getParticleData(_incomingB[ix]); extpart[1]=getParticleData(_outgoingB[ix]); extpart[2]=getParticleData(_outgoingM[ix]); mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); wgtmax = _maxweight.size()>numberModes()? _maxweight[numberModes()] : 1.; addMode(mode,wgtmax,wgt); } } void SU3BaryonDecupletOctetScalarDecayer::doinitrun() { Baryon1MesonDecayerBase::doinitrun(); if(initialize()) { _maxweight.clear(); for(unsigned int ix=0;ix<numberModes();++ix) _maxweight.push_back(mode(ix)->maxWeight()); } } int SU3BaryonDecupletOctetScalarDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); if(_incomingB.size()==0){setupModes(0);} // must be two outgoing particles if(children.size()!=2){return imode;} // ids of the particles int id0(parent->id()); int id1(children[0]->id()); int id2(children[1]->id()); unsigned int ix(0); cc=false; do { if(id0==_incomingB[ix]) { if((id1==_outgoingB[ix]&&id2==_outgoingM[ix])|| (id2==_outgoingB[ix]&&id1==_outgoingM[ix])) { imode=ix; cc=false; } } else if(id0==-_incomingB[ix]) { if((id1==-_outgoingB[ix]&&id2==-_outgoingM[ix])|| (id2==-_outgoingB[ix]&&id1==-_outgoingM[ix])) { imode=ix; cc=true; } if(((id1==-_outgoingB[ix]&&id2==_outgoingM[ix])|| (id2==-_outgoingB[ix]&&id1==_outgoingM[ix]))&& (_outgoingM[ix]==111||_outgoingM[ix]==221||_outgoingM[ix]==331|| _outgoingM[ix]==223||_outgoingM[ix]==333)) { imode=ix; cc=true; } } ++ix; } while(ix<_incomingB.size()&&imode<0); return imode; } void SU3BaryonDecupletOctetScalarDecayer:: persistentOutput(PersistentOStream & os) const { os << _c << _parity << ounit(_fpi,GeV) << _proton << _neutron << _sigma0 << _sigmap << _sigmam << _lambda << _xi0 << _xim << _deltapp << _deltap << _delta0 << _deltam << _sigmasp << _sigmas0 << _sigmasm << _omega << _xism << _xis0 << _incomingB << _outgoingB << _outgoingM << _maxweight << ounit(_prefactor,1./GeV); } void SU3BaryonDecupletOctetScalarDecayer:: persistentInput(PersistentIStream & is, int) { is >> _c >> _parity >> iunit(_fpi,GeV) >> _proton >> _neutron >> _sigma0 >> _sigmap >> _sigmam >> _lambda >> _xi0 >> _xim >> _deltapp >> _deltap >> _delta0 >> _deltam >> _sigmasp >> _sigmas0 >> _sigmasm >> _omega >> _xism >> _xis0 >> _incomingB >> _outgoingB >> _outgoingM >> _maxweight >> iunit(_prefactor,1./GeV); } ClassDescription<SU3BaryonDecupletOctetScalarDecayer> SU3BaryonDecupletOctetScalarDecayer::initSU3BaryonDecupletOctetScalarDecayer; // Definition of the static class description member. void SU3BaryonDecupletOctetScalarDecayer::Init() { static ClassDocumentation<SU3BaryonDecupletOctetScalarDecayer> documentation ("The SU3BaryonDecupletOctetScalarDecayer class is designed for the" " decay of an SU(3) decuplet baryon to an SU(3) octet baryon and a pseudoscalar" " meson from the lightest multiplet."); static Parameter<SU3BaryonDecupletOctetScalarDecayer,double> interfaceCcoupling ("Ccoupling", "The C coupling for the decuplet decays.", &SU3BaryonDecupletOctetScalarDecayer::_c, 1.5, -10.0, 10.0, false, false, true); static Switch<SU3BaryonDecupletOctetScalarDecayer,bool> interfaceParity ("Parity", "The relative parities of the two multiplets.", &SU3BaryonDecupletOctetScalarDecayer::_parity, true, false, false); static SwitchOption interfaceParitySame (interfaceParity, "Same", "Same parity", true); static SwitchOption interfaceParityDifferent (interfaceParity, "Different", "Opposite parity", false); static Parameter<SU3BaryonDecupletOctetScalarDecayer,Energy> interfaceFpi ("Fpi", "The pion decay constant.", &SU3BaryonDecupletOctetScalarDecayer::_fpi, MeV, 92.4*MeV, 50.0*MeV, 150.0*MeV, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceProton ("Proton", "The PDG code for the proton-like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_proton, 2212, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceNeutron ("Neutron", "The PDG code for the neutron-like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_neutron, 2112, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceSigmap ("Sigma+", "The PDG code for the Sigma+-like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_sigmap, 3222, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceSigma0 ("Sigma0", "The PDG code for the Sigma0-like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_sigma0, 3212, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceSigmam ("Sigma-", "The PDG code for the Sigma--like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_sigmam, 3112, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceLambda ("Lambda", "The PDG code for the Lambda-like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_lambda, 3122, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceXi0 ("Xi0", "The PDG code for the Xi0-like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_xi0, 3322, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceXim ("Xi-", "The PDG code for the Xi--like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_xim, 3312, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceDeltapp ("Delta++", "The PDG code for the Delta++ like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_deltapp, 2224, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceDeltap ("Delta+", "The PDG code for the Delta+ like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_deltap, 2214, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceDelta0 ("Delta0", "The PDG code for the Delta0 like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_delta0, 2114, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceDeltam ("Delta-", "The PDG code for the Delta- like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_deltam, 1114, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceSigmasp ("Sigma*+", "The PDG code for the Sigma*+ like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_sigmasp, 3224, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceSigmas0 ("Sigma*0", "The PDG code for the Sigma*0 like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_sigmas0, 3214, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceSigmasm ("Sigma*-", "The PDG code for the Sigma*- like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_sigmasm, 3114, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceOmega ("Omega", "The PDG code for the Omega like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_omega, 3334, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceXis0 ("Xi*0", "The PDG code for the Xi*0-like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_xis0, 3324, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetScalarDecayer,long> interfaceXism ("Xi*-", "The PDG code for the Xi*--like baryon.", &SU3BaryonDecupletOctetScalarDecayer::_xism, 3314, 0, 1000000, false, false, true); static ParVector<SU3BaryonDecupletOctetScalarDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &SU3BaryonDecupletOctetScalarDecayer::_maxweight, 0, 0, 0, 0., 100., false, false, true); } // couplings for spin-1/2 to spin-3/2 spin-0 void SU3BaryonDecupletOctetScalarDecayer:: threeHalfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy, Complex& A, Complex& B) const { if(_parity) { A = _prefactor[imode]*(m0+m1); B = 0.; } else { A = 0.; B = _prefactor[imode]*(m0+m1); } } // set up the decay modes void SU3BaryonDecupletOctetScalarDecayer::setupModes(unsigned int iopt) const { if(_incomingB.size()!=0&&iopt==0) return; if(iopt==1) { _outgoingB.clear(); _incomingB.clear(); _outgoingM.clear(); } vector<double> factor; vector<int> intemp,outtemp,mestemp; double ort(1./sqrt(2.)),ors(1./sqrt(6.)),rt(sqrt(2.)),orr(1./sqrt(3.)); // decays of the delta++ intemp.push_back(_deltapp);outtemp.push_back(_proton);mestemp.push_back(211); factor.push_back(_c); intemp.push_back(_deltapp);outtemp.push_back(_sigmap);mestemp.push_back(321); factor.push_back(-_c); // decays of the delta+ intemp.push_back(_deltap);outtemp.push_back(_neutron);mestemp.push_back(211); factor.push_back(_c*orr); intemp.push_back(_deltap);outtemp.push_back(_proton);mestemp.push_back(111); factor.push_back(_c*rt*orr); intemp.push_back(_deltap);outtemp.push_back(_sigma0);mestemp.push_back(321); factor.push_back(_c*rt*orr); intemp.push_back(_deltap);outtemp.push_back(_sigmap);mestemp.push_back(311); factor.push_back(_c*orr); // decays of the delta0 intemp.push_back(_delta0);outtemp.push_back(_proton);mestemp.push_back(-211); factor.push_back(_c*orr); intemp.push_back(_delta0);outtemp.push_back(_neutron);mestemp.push_back(111); factor.push_back(_c*rt*orr); intemp.push_back(_delta0);outtemp.push_back(_sigma0);mestemp.push_back(311); factor.push_back(_c*rt*orr); intemp.push_back(_delta0);outtemp.push_back(_sigmam);mestemp.push_back(321); factor.push_back(_c*orr); // decays of the delta- intemp.push_back(_deltam);outtemp.push_back(_neutron);mestemp.push_back(-211); factor.push_back(-_c); intemp.push_back(_deltam);outtemp.push_back(_sigmam);mestemp.push_back(311); factor.push_back(_c); // sigma*+ intemp.push_back(_sigmasp);outtemp.push_back(_sigmap);mestemp.push_back(111); factor.push_back(_c*ors); intemp.push_back(_sigmasp);outtemp.push_back(_sigma0);mestemp.push_back(211); factor.push_back(_c*ors); intemp.push_back(_sigmasp);outtemp.push_back(_proton);mestemp.push_back(-311); factor.push_back(_c*orr); intemp.push_back(_sigmasp);outtemp.push_back(_xi0);mestemp.push_back(321); factor.push_back(_c*orr); intemp.push_back(_sigmasp);outtemp.push_back(_sigmap);mestemp.push_back(221); factor.push_back(_c*ort); intemp.push_back(_sigmasp);outtemp.push_back(_lambda);mestemp.push_back(211); factor.push_back(_c*ort); // sigma*0 intemp.push_back(_sigmas0);outtemp.push_back(_neutron);mestemp.push_back(-311); factor.push_back(_c*ors); intemp.push_back(_sigmas0);outtemp.push_back(_proton);mestemp.push_back(-321); factor.push_back(_c*ors); intemp.push_back(_sigmas0);outtemp.push_back(_xim);mestemp.push_back(321); factor.push_back(_c*ors); intemp.push_back(_sigmas0);outtemp.push_back(_xi0);mestemp.push_back(311); factor.push_back(_c*ors); intemp.push_back(_sigmas0);outtemp.push_back(_sigmam);mestemp.push_back(211); factor.push_back(_c*ors); intemp.push_back(_sigmas0);outtemp.push_back(_sigmap);mestemp.push_back(-211); factor.push_back(_c*ors); intemp.push_back(_sigmas0);outtemp.push_back(_lambda);mestemp.push_back(111); factor.push_back(_c*ort); intemp.push_back(_sigmas0);outtemp.push_back(_sigma0);mestemp.push_back(221); factor.push_back(_c*ort); // sigma*- intemp.push_back(_sigmasm);outtemp.push_back(_sigmam);mestemp.push_back(111); factor.push_back(_c*ors); intemp.push_back(_sigmasm);outtemp.push_back(_sigma0);mestemp.push_back(-211); factor.push_back(_c*ors); intemp.push_back(_sigmasm);outtemp.push_back(_neutron);mestemp.push_back(-321); factor.push_back(_c*orr); intemp.push_back(_sigmasm);outtemp.push_back(_xim);mestemp.push_back(311); factor.push_back(_c*orr); intemp.push_back(_sigmasm);outtemp.push_back(_lambda);mestemp.push_back(-211); factor.push_back(_c*ort); intemp.push_back(_sigmasm);outtemp.push_back(_sigmam);mestemp.push_back(221); factor.push_back(_c*ort); // xi*0 intemp.push_back(_xis0);outtemp.push_back(_xim);mestemp.push_back(211); factor.push_back(_c*orr); intemp.push_back(_xis0);outtemp.push_back(_xi0);mestemp.push_back(111); factor.push_back(_c*ors); intemp.push_back(_xis0);outtemp.push_back(_sigmap);mestemp.push_back(-321); factor.push_back(_c*orr); intemp.push_back(_xis0);outtemp.push_back(_sigma0);mestemp.push_back(-311); factor.push_back(_c*ors); intemp.push_back(_xis0);outtemp.push_back(_xi0);mestemp.push_back(221); factor.push_back(_c*ort); intemp.push_back(_xis0);outtemp.push_back(_lambda);mestemp.push_back(-311); factor.push_back(_c*ort); // xi*- intemp.push_back(_xism);outtemp.push_back(_xi0);mestemp.push_back(-211); factor.push_back(_c*orr); intemp.push_back(_xism);outtemp.push_back(_xim);mestemp.push_back(111); factor.push_back(_c*ors); intemp.push_back(_xism);outtemp.push_back(_sigmam);mestemp.push_back(-311); factor.push_back(_c*orr); intemp.push_back(_xism);outtemp.push_back(_sigma0);mestemp.push_back(-321); factor.push_back(_c*ors); intemp.push_back(_xism);outtemp.push_back(_xim);mestemp.push_back(221); factor.push_back(_c*ort); intemp.push_back(_xism);outtemp.push_back(_lambda);mestemp.push_back(-321); factor.push_back(_c*ort); // set up the modes tPDVector extpart(3); for(unsigned int ix=0;ix<intemp.size();++ix) { if(intemp[ix]!=0&&outtemp[ix]!=0&&mestemp[ix]!=0) { extpart[0]=getParticleData(intemp[ix]); extpart[1]=getParticleData(outtemp[ix]); extpart[2]=getParticleData(mestemp[ix]); if(extpart[0]->massMax()>extpart[1]->massMin()+extpart[2]->massMin()) { _incomingB.push_back(intemp[ix]); _outgoingB.push_back(outtemp[ix]); _outgoingM.push_back(mestemp[ix]); if(iopt==1) _prefactor.push_back(factor[ix]/_fpi); } } } } void SU3BaryonDecupletOctetScalarDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; Baryon1MesonDecayerBase::dataBaseOutput(output,false); output << "newdef " << name() << ":Ccoupling " << _c << "\n"; output << "newdef " << name() << ":Parity " << _parity<< "\n"; output << "newdef " << name() << ":Fpi " << _fpi/MeV << "\n"; output << "newdef " << name() << ":Proton " << _proton << "\n"; output << "newdef " << name() << ":Neutron " << _neutron << "\n"; output << "newdef " << name() << ":Sigma+ " << _sigmap << "\n"; output << "newdef " << name() << ":Sigma0 " << _sigma0 << "\n"; output << "newdef " << name() << ":Sigma- " << _sigmam << "\n"; output << "newdef " << name() << ":Lambda " << _lambda << "\n"; output << "newdef " << name() << ":Xi0 " << _xi0 << "\n"; output << "newdef " << name() << ":Xi- " << _xim << "\n"; output << "newdef " << name() << ":Delta++ " << _deltapp << "\n"; output << "newdef " << name() << ":Delta+ " << _deltap << "\n"; output << "newdef " << name() << ":Delta0 " << _delta0 << "\n"; output << "newdef " << name() << ":Delta- " << _deltam << "\n"; output << "newdef " << name() << ":Sigma*+ " << _sigmasp << "\n"; output << "newdef " << name() << ":Sigma*0 " << _sigmas0 << "\n"; output << "newdef " << name() << ":Sigma*- " << _sigmasm << "\n"; output << "newdef " << name() << ":Omega " << _omega << "\n"; output << "newdef " << name() << ":Xi*0 " << _xis0 << "\n"; output << "newdef " << name() << ":Xi*- " << _xism << "\n"; for(unsigned int ix=0;ix<_maxweight.size();++ix) output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/RadiativeHeavyBaryonDecayer.h��������������������������������������0000644�0001750�0001750�00000015703�11754474773�025011� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_RadiativeHeavyBaryonDecayer_H #define HERWIG_RadiativeHeavyBaryonDecayer_H // // This is the declaration of the RadiativeHeavyBaryonDecayer class. // #include "Baryon1MesonDecayerBase.h" namespace Herwig { using namespace Herwig; /** \ingroup Decay * * The RadiativeHeavyBaryonDecayer class is designed for the radiative decay * of a baryon containing a heavy quark to another baryon containing a heavy quark. * There are four types of transition supported * * - \f$\frac12^-\to\frac12^+\f$ \f$E1\f$ transition * \f[\mathcal{M} = A_{E1}\bar{B}\gamma^\mu\gamma_5B^*F^{\mu\nu}p_{0\mu}\f] * * - \f$\frac12^+\to\frac12^+\f$ \f$M1\f$ transition * \f[\mathcal{M} = A_{M1}\bar{B}\sigma^{\mu\nu}B^*F^{\mu\nu}\f] * * - \f$\frac32^-\to\frac12^+\f$ \f$E1\f$ transition * \f[\mathcal{M} = A_{E1}\bar{B}B^*_\nu F^{\mu\nu}p_{0\mu}\f] * * - \f$\frac32^+\to\frac12^+\f$ \f$M1\f$ transition * \f[\mathcal{M} = A_{M1}\bar{B}\gamma_\mu\gamma_5B^*_\nu F^{\mu\nu}\f] * * where \f$p_0\f$ is the momentum of the decaying baryon \f$B^*\f$ is the field for * the decaying baryon, \f$B\f$ is the field for the baryon produced in the decay and * \f$F^{\mu\nu}\f$ is the electromagnetic field strength tensor. * */ class RadiativeHeavyBaryonDecayer: public Baryon1MesonDecayerBase { public: /** * The default constructor. */ RadiativeHeavyBaryonDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a vector. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. */ virtual void halfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A1,Complex& A2, Complex& B1,Complex& B2) const; /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a vector. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param A3 The coupling \f$A_3\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. * @param B3 The coupling \f$B_3\f$ described above. */ virtual void threeHalfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A1,Complex& A2,Complex& A3, Complex& B1,Complex& B2,Complex& B3) const; //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<RadiativeHeavyBaryonDecayer> initRadiativeHeavyBaryonDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ RadiativeHeavyBaryonDecayer & operator=(const RadiativeHeavyBaryonDecayer &); private: /** * The \f$M1\f$ coupling */ vector<InvEnergy> _m1coupling; /** * The \f$E1\f$ coupling */ vector<InvEnergy2> _e1coupling; /** * PDG code for the incoming baryons */ vector<int> _incoming; /** * PDG code for the outgoing baryons */ vector<int> _outgoingB; /** * The type of matrix element */ vector<int> _modetype; /** * max weight */ vector<double> _maxweight; /** * The initial size of the arrays */ unsigned int _initsize; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of RadiativeHeavyBaryonDecayer. */ template <> struct BaseClassTrait<Herwig::RadiativeHeavyBaryonDecayer,1> { /** Typedef of the first base class of RadiativeHeavyBaryonDecayer. */ typedef Herwig::Baryon1MesonDecayerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the RadiativeHeavyBaryonDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::RadiativeHeavyBaryonDecayer> : public ClassTraitsBase<Herwig::RadiativeHeavyBaryonDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::RadiativeHeavyBaryonDecayer"; } /** Return the name of the shared library be loaded to get * access to the RadiativeHeavyBaryonDecayer class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_RadiativeHeavyBaryonDecayer_H */ �������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/RadiativeHyperonDecayer.h������������������������������������������0000644�0001750�0001750�00000013251�11754474773�024202� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_RadiativeHyperonDecayer_H #define HERWIG_RadiativeHyperonDecayer_H // // This is the declaration of the RadiativeHyperonDecayer class. // #include "Baryon1MesonDecayerBase.h" namespace Herwig { using namespace ThePEG; /** * The RadiativeHyperonDecayer class provides the matrix elements * for the decay of hyperons in which a photon is produced using the * model of Phys. Rev. D 59 (1999) 054019 [arXiv:hep-ph/9902431]. * * @see \ref RadiativeHyperonDecayerInterfaces "The interfaces" * defined for RadiativeHyperonDecayer. */ class RadiativeHyperonDecayer: public Baryon1MesonDecayerBase { public: /** * The default constructor. */ RadiativeHyperonDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a vector. * This method must be implemented in any class inheriting from this one * which includes \f$\frac12\to\frac12+1\f$ decays. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. */ virtual void halfHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex& A1,Complex& A2, Complex& B1,Complex& B2) const; //@} 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<RadiativeHyperonDecayer> initRadiativeHyperonDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ RadiativeHyperonDecayer & operator=(const RadiativeHyperonDecayer &); private: /** * PDG code for the incoming baryon. */ vector<long> incomingB_; /** * PDG code for the outgoing baryon. */ vector<long> outgoingB_; /** * The \f$A\f$ coefficient. */ vector<InvEnergy> A_; /** * The \f$B\f$ coefficient. */ vector<InvEnergy> B_; /** * the maximum weights for the decays */ vector<double> maxweight_; /** * initial size fo the vectors */ unsigned int initsize_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of RadiativeHyperonDecayer. */ template <> struct BaseClassTrait<Herwig::RadiativeHyperonDecayer,1> { /** Typedef of the first base class of RadiativeHyperonDecayer. */ typedef Baryon1MesonDecayerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the RadiativeHyperonDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::RadiativeHyperonDecayer> : public ClassTraitsBase<Herwig::RadiativeHyperonDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::RadiativeHyperonDecayer"; } /** * The name of a file containing the dynamic library where the class * RadiativeHyperonDecayer is implemented. It may also include several, space-separated, * libraries if the class RadiativeHyperonDecayer depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_RadiativeHyperonDecayer_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/SU3BaryonSingletOctetPhotonDecayer.cc������������������������������0000644�0001750�0001750�00000020136�11754474773�026365� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SU3BaryonSingletOctetPhotonDecayer class. // #include "SU3BaryonSingletOctetPhotonDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; SU3BaryonSingletOctetPhotonDecayer::SU3BaryonSingletOctetPhotonDecayer() { // the coupling _c=0.252/GeV; // the relative parities of the two baryon multiplets _parity=false; // PDG codes for the various ground state baryons _sigma0 = 3212; _lambda = 3122; // PDG codes for the excited baryon _elambda = 3124; // intermediates generateIntermediates(false); } void SU3BaryonSingletOctetPhotonDecayer::doinit() { Baryon1MesonDecayerBase::doinit(); // set up the decay modes setupModes(1); // set up the phase space and the couplings tPDVector extpart(3); DecayPhaseSpaceModePtr mode; double wgtmax; vector<double> wgt(0); for(unsigned int ix=0;ix<_outgoingB.size();++ix) { extpart[0]=getParticleData(_elambda); extpart[1]=getParticleData(_outgoingB[ix]); extpart[2]=getParticleData(ParticleID::gamma); mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); if(_maxweight.size()>numberModes()){wgtmax=_maxweight[numberModes()];} else{wgtmax=1.;} addMode(mode,wgtmax,wgt); } } void SU3BaryonSingletOctetPhotonDecayer::doinitrun() { Baryon1MesonDecayerBase::doinitrun(); if(initialize()) { _maxweight.clear(); for(unsigned int ix=0;ix<numberModes();++ix) _maxweight.push_back(mode(ix)->maxWeight()); } } int SU3BaryonSingletOctetPhotonDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); if(_outgoingB.size()==0){setupModes(0);} // must be two outgoing particles if(children.size()!=2){return imode;} // ids of the particles int id0(parent->id()); int id1(children[0]->id()); int id2(children[1]->id()),iout; if(id1==ParticleID::gamma){iout=id2;} else if(id2==ParticleID::gamma){iout=id1;} else{return imode;} unsigned int ix(0); cc =false; do { if(id0==_elambda){ if(iout==_outgoingB[ix]) { imode=ix; cc=false; } } else if(id0==-_elambda) { if(iout==-_outgoingB[ix]) { imode=ix; cc=true; } } ++ix; } while(ix<_outgoingB.size()&&imode<0); return imode; } void SU3BaryonSingletOctetPhotonDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_c,1./GeV) << _parity << _sigma0 << _lambda << _elambda << _outgoingB << _maxweight << ounit(_prefactor,1./GeV); } void SU3BaryonSingletOctetPhotonDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_c,1./GeV) >> _parity >> _sigma0 >> _lambda >> _elambda >> _outgoingB >> _maxweight >> iunit(_prefactor,1./GeV); } ClassDescription<SU3BaryonSingletOctetPhotonDecayer> SU3BaryonSingletOctetPhotonDecayer::initSU3BaryonSingletOctetPhotonDecayer; // Definition of the static class description member. void SU3BaryonSingletOctetPhotonDecayer::Init() { static ClassDocumentation<SU3BaryonSingletOctetPhotonDecayer> documentation ("The SU3BaryonSingletOctetPhotonDecayer class performs the decay" " of a singlet baryon to an octet baryon and a photon."); static Parameter<SU3BaryonSingletOctetPhotonDecayer,InvEnergy> interfaceCoupling ("Coupling", "The C coupling of the baryon resonances.", &SU3BaryonSingletOctetPhotonDecayer::_c, 1./GeV, 0.252/GeV, -10./GeV, 10.0/GeV, false, false, true); static Switch<SU3BaryonSingletOctetPhotonDecayer,bool> interfaceParity ("Parity", "The relative parities of the two multiplets.", &SU3BaryonSingletOctetPhotonDecayer::_parity, true, false, false); static SwitchOption interfaceParitySame (interfaceParity, "Same", "Same parity", true); static SwitchOption interfaceParityDifferent (interfaceParity, "Different", "Opposite parity", false); static Parameter<SU3BaryonSingletOctetPhotonDecayer,int> interfaceSigma0 ("Sigma0", "The PDG code for the lighter Sigma0-like baryon.", &SU3BaryonSingletOctetPhotonDecayer::_sigma0, 3212, 0, 1000000, false, false, true); static Parameter<SU3BaryonSingletOctetPhotonDecayer,int> interfaceLambda ("Lambda", "The PDG code for the lighter Lambda-like baryon.", &SU3BaryonSingletOctetPhotonDecayer::_lambda, 3122, 0, 1000000, false, false, true); static Parameter<SU3BaryonSingletOctetPhotonDecayer,int> interfaceExcitedLambda ("ExcitedLambda", "The PDG code for the heavier Lambda-like baryon.", &SU3BaryonSingletOctetPhotonDecayer::_elambda, 3124, 0, 1000000, false, false, true); static ParVector<SU3BaryonSingletOctetPhotonDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &SU3BaryonSingletOctetPhotonDecayer::_maxweight, 0, 0, 0, -10000, 10000, false, false, true); } // couplings for spin-1/2 to spin-1/2 spin-1 void SU3BaryonSingletOctetPhotonDecayer:: halfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy, Complex&A1,Complex&A2,Complex&B1,Complex&B2) const { if(_parity) { A1= _prefactor[imode]*(m0+m1); B1=0.; A2=-2.*_prefactor[imode]*(m0+m1); B2=0.; } else { A1=0.; B1= _prefactor[imode]*(m1-m0); A2=0.; B2=-2.*_prefactor[imode]*(m0+m1); } } // couplings for spin-1/2 to spin-3/2 spin-1 void SU3BaryonSingletOctetPhotonDecayer:: threeHalfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy, Complex&A1,Complex&A2,Complex&A3, Complex&B1,Complex&B2,Complex&B3) const { A3=0.;B3=0.; if(_parity) { A1=0.; B1=-_prefactor[imode]*(m0+m1); A2=0.; B2= _prefactor[imode]*(m0+m1); } else { A1=_prefactor[imode]*(m0-m1);B1=0.; A2=_prefactor[imode]*(m0+m1);B2=0.; } } // set up the decay modes void SU3BaryonSingletOctetPhotonDecayer::setupModes(unsigned int iopt) const { if(_outgoingB.size()!=0&&iopt==0){return;} if(iopt==1){_outgoingB.clear();} // set up for the various different decay modes vector<int> outtemp; vector<InvEnergy> factor; if(_elambda==0) throw DecayIntegratorError() << "Invalid incoming particle in " << "SU3BaryonSingletOctetScalarDecayer::" << "setupModes()" << Exception::abortnow; // decays of the excited lambda outtemp.push_back(_sigma0);factor.push_back(_c/sqrt(2.)); outtemp.push_back(_lambda);factor.push_back(_c/sqrt(6.)); tPDVector extpart(2);extpart[0]=getParticleData(_elambda); int inspin(extpart[0]->iSpin()),outspin; for(unsigned int ix=0;ix<outtemp.size();++ix) { if(outtemp[ix]!=0) { extpart[1]=getParticleData(outtemp[ix]); if(extpart[0]->massMax()>extpart[1]->massMin()) { _outgoingB.push_back(outtemp[ix]); if(iopt==1) { outspin = extpart[1]->iSpin(); factor[ix] *=2.; if(inspin==2&&outspin==2) _prefactor.push_back(2.*factor[ix]); else if(inspin==4&&outspin==2) _prefactor.push_back( factor[ix]); else throw DecayIntegratorError() << "Invalid combination of spins in " << "SU3BaryonSingletOctetScalarDecayer::" << "setupModes()" << Exception::abortnow; } } } } } void SU3BaryonSingletOctetPhotonDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; Baryon1MesonDecayerBase::dataBaseOutput(output,false); output << "newdef " << name() << ":Coupling " << _c*GeV << "\n"; output << "newdef " << name() << ":Parity " << _parity<< "\n"; output << "newdef " << name() << ":Sigma0 " << _sigma0 << "\n"; output << "newdef " << name() << ":Lambda " << _lambda << "\n"; output << "newdef " << name() << ":ExcitedLambda " << _elambda << "\n"; for(unsigned int ix=0;ix<_maxweight.size();++ix) { output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/SU3BaryonOctetDecupletScalarDecayer.cc�����������������������������0000644�0001750�0001750�00000044353�11754474773�026472� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SU3BaryonOctetDecupletScalarDecayer class. // #include "SU3BaryonOctetDecupletScalarDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; SU3BaryonOctetDecupletScalarDecayer::SU3BaryonOctetDecupletScalarDecayer() { // couplings and off-shell parameter _c=1.35; // the relative parities of the two baryon multiplets _parity=true; // the pion decay constant _fpi=130.7*MeV; // PDG codes for the various octet baryons _proton = 12212; _neutron = 12112; _sigma0 = 13212; _sigmap = 13222; _sigmam = 13112; _lambda = 23122; _xi0 = 13322; _xim = 13312; // PDG codes for the various decuplet baryons _deltapp = 2224; _deltap = 2214; _delta0 = 2114; _deltam = 1114; _sigmasp = 3224; _sigmas0 = 3214; _sigmasm = 3114; _omega = 3334; _xism = 3314; _xis0 = 3324; // intermediates generateIntermediates(false); } void SU3BaryonOctetDecupletScalarDecayer::doinit() { Baryon1MesonDecayerBase::doinit(); // set up the decay modes setupModes(1); // set up the phase space and the couplings tPDVector extpart(3); DecayPhaseSpaceModePtr mode; double wgtmax; vector<double> wgt(0); for(unsigned int ix=0;ix<_incomingB.size();++ix) { extpart[0]=getParticleData(_incomingB[ix]); extpart[1]=getParticleData(_outgoingB[ix]); extpart[2]=getParticleData(_outgoingM[ix]); mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); wgtmax = _maxweight.size()>numberModes() ? _maxweight[numberModes()] : 1.; addMode(mode,wgtmax,wgt); } } void SU3BaryonOctetDecupletScalarDecayer::doinitrun() { Baryon1MesonDecayerBase::doinitrun(); if(initialize()) { _maxweight.clear(); for(unsigned int ix=0;ix<numberModes();++ix) _maxweight.push_back(mode(ix)->maxWeight()); } } int SU3BaryonOctetDecupletScalarDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); if(_incomingB.size()==0){setupModes(0);} // must be two outgoing particles if(children.size()!=2){return imode;} // ids of the particles int id0(parent->id()); int id1(children[0]->id()); int id2(children[1]->id()); unsigned int ix(0); cc =false; do { if(id0==_incomingB[ix]) { if((id1==_outgoingB[ix]&&id2==_outgoingM[ix])|| (id2==_outgoingB[ix]&&id1==_outgoingM[ix])) { imode=ix; cc=false; } } else if(id0==-_incomingB[ix]) { if((id1==-_outgoingB[ix]&&id2==-_outgoingM[ix])|| (id2==-_outgoingB[ix]&&id1==-_outgoingM[ix])) { imode=ix; cc=true; } if(((id1==-_outgoingB[ix]&&id2==_outgoingM[ix])|| (id2==-_outgoingB[ix]&&id1==_outgoingM[ix]))&& (_outgoingM[ix]==111||_outgoingM[ix]==221||_outgoingM[ix]==331|| _outgoingM[ix]==223||_outgoingM[ix]==333)) { imode=ix; cc=true; } } ++ix; } while(ix<_incomingB.size()&&imode<0); return imode; } void SU3BaryonOctetDecupletScalarDecayer:: persistentOutput(PersistentOStream & os) const { os << _c << _parity << ounit(_fpi,GeV) << _proton << _neutron << _sigma0 << _sigmap << _sigmam << _lambda << _xi0 << _xim << _deltapp << _deltap << _delta0 << _deltam << _sigmasp << _sigmas0 << _sigmasm << _omega << _xism << _xis0 << _incomingB << _outgoingB << _outgoingM << _maxweight << ounit(_prefactor,1./GeV); } void SU3BaryonOctetDecupletScalarDecayer::persistentInput(PersistentIStream & is, int) { is >> _c >> _parity >> iunit(_fpi,GeV) >> _proton >> _neutron >> _sigma0 >> _sigmap >> _sigmam >> _lambda >> _xi0 >> _xim >> _deltapp >> _deltap >> _delta0 >> _deltam >> _sigmasp >> _sigmas0 >> _sigmasm >> _omega >> _xism >> _xis0 >> _incomingB >> _outgoingB >> _outgoingM >> _maxweight >> iunit(_prefactor,1./GeV); } ClassDescription<SU3BaryonOctetDecupletScalarDecayer> SU3BaryonOctetDecupletScalarDecayer::initSU3BaryonOctetDecupletScalarDecayer; // Definition of the static class description member. void SU3BaryonOctetDecupletScalarDecayer::Init() { static ClassDocumentation<SU3BaryonOctetDecupletScalarDecayer> documentation ("The SU3BaryonOctetDecupletScalarDecayer class is designed for the" " decay of an SU(3) octet baryon to an SU(3) decuplet baryon and a pseudoscalar" " meson from the lightest multiplet."); static Parameter<SU3BaryonOctetDecupletScalarDecayer,double> interfaceCoupling ("Coupling", "The coupling for the decuplet decays.", &SU3BaryonOctetDecupletScalarDecayer::_c, 1.35, -10.0, 10.0, false, false, true); static Switch<SU3BaryonOctetDecupletScalarDecayer,bool> interfaceParity ("Parity", "The relative parities of the two multiplets.", &SU3BaryonOctetDecupletScalarDecayer::_parity, true, false, false); static SwitchOption interfaceParitySame (interfaceParity, "Same", "Same parity", true); static SwitchOption interfaceParityDifferent (interfaceParity, "Different", "Opposite parity", false); static Parameter<SU3BaryonOctetDecupletScalarDecayer,Energy> interfaceFpi ("Fpi", "The pion decay constant.", &SU3BaryonOctetDecupletScalarDecayer::_fpi, MeV, 130.7*MeV, 100.0*MeV, 200.0*MeV, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceProton ("Proton", "The PDG code for the proton-like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_proton, 12212, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceNeutron ("Neutron", "The PDG code for the neutron-like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_neutron, 12112, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceSigmap ("Sigma+", "The PDG code for the Sigma+-like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_sigmap, 13222, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceSigma0 ("Sigma0", "The PDG code for the Sigma0-like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_sigma0, 13212, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceSigmam ("Sigma-", "The PDG code for the Sigma--like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_sigmam, 13112, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceLambda ("Lambda", "The PDG code for the Lambda-like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_lambda, 23122, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceXi0 ("Xi0", "The PDG code for the Xi0-like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_xi0, 13322, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceXim ("Xi-", "The PDG code for the Xi--like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_xim, 13312, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceDeltapp ("Delta++", "The PDG code for the Delta++ like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_deltapp, 2224, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceDeltap ("Delta+", "The PDG code for the Delta+ like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_deltap, 2214, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceDelta0 ("Delta0", "The PDG code for the Delta0 like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_delta0, 2114, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceDeltam ("Delta-", "The PDG code for the Delta- like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_deltam, 1114, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceSigmasp ("Sigma*+", "The PDG code for the Sigma*+ like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_sigmasp, 3224, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceSigmas0 ("Sigma*0", "The PDG code for the Sigma*0 like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_sigmas0, 3214, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceSigmasm ("Sigma*-", "The PDG code for the Sigma*- like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_sigmasm, 3114, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceOmega ("Omega", "The PDG code for the Omega like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_omega, 3334, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceXis0 ("Xi*0", "The PDG code for the Xi*0-like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_xis0, 3324, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetDecupletScalarDecayer,int> interfaceXism ("Xi*-", "The PDG code for the Xi*--like baryon.", &SU3BaryonOctetDecupletScalarDecayer::_xism, 3314, 0, 1000000, false, false, true); static ParVector<SU3BaryonOctetDecupletScalarDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &SU3BaryonOctetDecupletScalarDecayer::_maxweight, 0, 0, 0, 0., 2000., false, false, true); } // couplings for spin-1/2 to spin-3/2 spin-0 void SU3BaryonOctetDecupletScalarDecayer ::halfThreeHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy, Complex& A, Complex& B) const { if(_parity) { A=_prefactor[imode]*(m0+m1); B=0.; } else { A=0.; B=_prefactor[imode]*(m0+m1); } } // couplings for spin-3/2 to spin-3/2 spin-0 void SU3BaryonOctetDecupletScalarDecayer:: threeHalfThreeHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy, Complex& A1,Complex& A2, Complex& B1,Complex& B2) const { A2=0.;B2=0.; if(_parity) { A1=0.; B1=_prefactor[imode]*(m0+m1); } else { A1=_prefactor[imode]*(m0-m1); B1=0.; } } // set up the decay modes void SU3BaryonOctetDecupletScalarDecayer::setupModes(unsigned int iopt) const { if(_incomingB.size()!=0&&iopt==0){return;} if(iopt==1) { _outgoingB.clear(); _incomingB.clear(); _outgoingM.clear(); } vector<double> factor; vector<int> intemp,outtemp,mestemp; double ort(1./sqrt(2.)),ors(1./sqrt(6.)),rt(sqrt(2.)),orr(1./sqrt(3.)); // decays to the delta++ outtemp.push_back(_deltapp);intemp.push_back(_proton);mestemp.push_back(-211); factor.push_back(_c); outtemp.push_back(_deltapp);intemp.push_back(_sigmap);mestemp.push_back(-321); factor.push_back(-_c); // decays to the delta+ outtemp.push_back(_deltap);intemp.push_back(_neutron);mestemp.push_back(-211); factor.push_back(_c*orr); outtemp.push_back(_deltap);intemp.push_back(_proton);mestemp.push_back(111); factor.push_back(_c*rt*orr); outtemp.push_back(_deltap);intemp.push_back(_sigma0);mestemp.push_back(-321); factor.push_back(_c*rt*orr); outtemp.push_back(_deltap);intemp.push_back(_sigmap);mestemp.push_back(-311); factor.push_back(_c*orr); // decays to the delta0 outtemp.push_back(_delta0);intemp.push_back(_proton);mestemp.push_back(211); factor.push_back(_c*orr); outtemp.push_back(_delta0);intemp.push_back(_neutron);mestemp.push_back(111); factor.push_back(_c*rt*orr); outtemp.push_back(_delta0);intemp.push_back(_sigma0);mestemp.push_back(-311); factor.push_back(_c*rt*orr); outtemp.push_back(_delta0);intemp.push_back(_sigmam);mestemp.push_back(-321); factor.push_back(_c*orr); // decays to the delta- outtemp.push_back(_deltam);intemp.push_back(_neutron);mestemp.push_back(211); factor.push_back(-_c); outtemp.push_back(_deltam);intemp.push_back(_sigmam);mestemp.push_back(-311); factor.push_back(_c); // decays to the sigma*+ outtemp.push_back(_sigmasp);intemp.push_back(_sigmap);mestemp.push_back(111); factor.push_back(_c*ors); outtemp.push_back(_sigmasp);intemp.push_back(_sigma0);mestemp.push_back(-211); factor.push_back(_c*ors); outtemp.push_back(_sigmasp);intemp.push_back(_proton);mestemp.push_back(311); factor.push_back(_c*orr); outtemp.push_back(_sigmasp);intemp.push_back(_xi0);mestemp.push_back(-321); factor.push_back(_c*orr); outtemp.push_back(_sigmasp);intemp.push_back(_sigmap);mestemp.push_back(221); factor.push_back(_c*ort); outtemp.push_back(_sigmasp);intemp.push_back(_lambda);mestemp.push_back(-211); factor.push_back(_c*ort); // decays to the sigma*0 outtemp.push_back(_sigmas0);intemp.push_back(_neutron);mestemp.push_back(311); factor.push_back(_c*ors); outtemp.push_back(_sigmas0);intemp.push_back(_proton);mestemp.push_back(321); factor.push_back(_c*ors); outtemp.push_back(_sigmas0);intemp.push_back(_xim);mestemp.push_back(-321); factor.push_back(_c*ors); outtemp.push_back(_sigmas0);intemp.push_back(_xi0);mestemp.push_back(-311); factor.push_back(_c*ors); outtemp.push_back(_sigmas0);intemp.push_back(_sigmam);mestemp.push_back(-211); factor.push_back(_c*ors); outtemp.push_back(_sigmas0);intemp.push_back(_sigmap);mestemp.push_back(211); factor.push_back(_c*ors); outtemp.push_back(_sigmas0);intemp.push_back(_lambda);mestemp.push_back(111); factor.push_back(_c*ort); outtemp.push_back(_sigmas0);intemp.push_back(_sigma0);mestemp.push_back(-211); factor.push_back(_c*ort); // decays to the sigma*- outtemp.push_back(_sigmasm);intemp.push_back(_sigmam);mestemp.push_back(111); factor.push_back(_c*ors); outtemp.push_back(_sigmasm);intemp.push_back(_sigma0);mestemp.push_back(211); factor.push_back(_c*ors); outtemp.push_back(_sigmasm);intemp.push_back(_neutron);mestemp.push_back(321); factor.push_back(_c*orr); outtemp.push_back(_sigmasm);intemp.push_back(_xim);mestemp.push_back(-311); factor.push_back(_c*orr); outtemp.push_back(_sigmasm);intemp.push_back(_lambda);mestemp.push_back(211); factor.push_back(_c*ort); outtemp.push_back(_sigmasm);intemp.push_back(_sigmam);mestemp.push_back(221); factor.push_back(_c*ort); // decays to the xi*0 outtemp.push_back(_xis0);intemp.push_back(_xim);mestemp.push_back(-211); factor.push_back(_c*orr); outtemp.push_back(_xis0);intemp.push_back(_xi0);mestemp.push_back(111); factor.push_back(_c*ors); outtemp.push_back(_xis0);intemp.push_back(_sigmap);mestemp.push_back(321); factor.push_back(_c*orr); outtemp.push_back(_xis0);intemp.push_back(_sigma0);mestemp.push_back(311); factor.push_back(_c*ors); outtemp.push_back(_xis0);intemp.push_back(_xi0);mestemp.push_back(221); factor.push_back(_c*ort); outtemp.push_back(_xis0);intemp.push_back(_lambda);mestemp.push_back(311); factor.push_back(_c*ort); // decays to the xi*- outtemp.push_back(_xism);intemp.push_back(_xi0);mestemp.push_back(211); factor.push_back(_c*orr); outtemp.push_back(_xism);intemp.push_back(_xim);mestemp.push_back(111); factor.push_back(_c*ors); outtemp.push_back(_xism);intemp.push_back(_sigmam);mestemp.push_back(311); factor.push_back(_c*orr); outtemp.push_back(_xism);intemp.push_back(_sigma0);mestemp.push_back(321); factor.push_back(_c*ors); outtemp.push_back(_xism);intemp.push_back(_xim);mestemp.push_back(221); factor.push_back(_c*ort); outtemp.push_back(_xism);intemp.push_back(_lambda);mestemp.push_back(321); factor.push_back(_c*ort); // set up the modes int inspin,outspin; tPDVector extpart(3); for(unsigned int ix=0;ix<outtemp.size();++ix) { if(outtemp[ix]!=0&&intemp[ix]!=0&&mestemp[ix]!=0) { extpart[0]=getParticleData(intemp[ix]); extpart[1]=getParticleData(outtemp[ix]); extpart[2]=getParticleData(mestemp[ix]); if(extpart[0]->massMax()>extpart[1]->massMin()+extpart[2]->massMin()) { _incomingB.push_back(intemp[ix]); _outgoingB.push_back(outtemp[ix]); _outgoingM.push_back(mestemp[ix]); if(iopt==1) { inspin = extpart[0]->iSpin(); outspin = extpart[1]->iSpin(); if(inspin==2&&outspin==4) _prefactor.push_back(factor[ix]/_fpi); else if(inspin==4&&outspin==4) _prefactor.push_back(factor[ix]/_fpi); } } } } } void SU3BaryonOctetDecupletScalarDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; Baryon1MesonDecayerBase::dataBaseOutput(output,false); output << "newdef " << name() << ":Coupling " << _c<< "\n"; output << "newdef " << name() << ":Parity " << _parity<< "\n"; output << "newdef " << name() << ":Fpi " << _fpi/MeV << "\n"; output << "newdef " << name() << ":Proton " << _proton << "\n"; output << "newdef " << name() << ":Neutron " << _neutron << "\n"; output << "newdef " << name() << ":Sigma+ " << _sigmap << "\n"; output << "newdef " << name() << ":Sigma0 " << _sigma0 << "\n"; output << "newdef " << name() << ":Sigma- " << _sigmam << "\n"; output << "newdef " << name() << ":Lambda " << _lambda << "\n"; output << "newdef " << name() << ":Xi0 " << _xi0 << "\n"; output << "newdef " << name() << ":Xi- " << _xim << "\n"; output << "newdef " << name() << ":Delta++ " << _deltapp << "\n"; output << "newdef " << name() << ":Delta+ " << _deltap << "\n"; output << "newdef " << name() << ":Delta0 " << _delta0 << "\n"; output << "newdef " << name() << ":Delta- " << _deltam << "\n"; output << "newdef " << name() << ":Sigma*+ " << _sigmasp << "\n"; output << "newdef " << name() << ":Sigma*0 " << _sigmas0 << "\n"; output << "newdef " << name() << ":Sigma*- " << _sigmasm << "\n"; output << "newdef " << name() << ":Omega " << _omega << "\n"; output << "newdef " << name() << ":Xi*0 " << _xis0 << "\n"; output << "newdef " << name() << ":Xi*- " << _xism << "\n"; for(unsigned int ix=0;ix<_maxweight.size();++ix) { output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/BaryonFactorizedDecayer.h������������������������������������������0000644�0001750�0001750�00000020660�11754474773�024174� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_BaryonFactorizedDecayer_H #define HERWIG_BaryonFactorizedDecayer_H // // This is the declaration of the BaryonFactorizedDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/WeakCurrents/WeakDecayCurrent.h" #include "Herwig++/Decay/FormFactors/BaryonFormFactor.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/Models/StandardModel/StandardCKM.h" #include "ThePEG/Helicity/LorentzRSSpinorBar.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The BaryonFactorizedDecayer class is designed to combine the form factor * for a weak baryon transition and a weak decay current to produce a decayer. * It is mainly based on the results of PRD56, 2799. * * @see BaryonFactorizedDecayer * @see BaryonFormFactor * @see WeakDecayCurrent */ class BaryonFactorizedDecayer: public DecayIntegrator { public: /** * The default constructor. */ BaryonFactorizedDecayer(); /** * Check if this decayer can perfom the decay for a particular mode. * @param parent The decaying particle * @param children The decay products */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * This method combines the form factor and the weka current to * calculate the matrix element. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt The option for the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) const; protected: /** * Matrix element for \f$\frac12\to\frac12\f$. * @param ichan The channel we are calculating the matrix element for. * @param inpart The decaying Particle. * @param decay The particles produced in the decay. * @param meopt The option for the matrix element * @return The matrix element squared for the phase-space configuration. */ double halfHalf(const int ichan,const Particle & inpart, const ParticleVector & decay,MEOption meopt) const; /** * Matrix element for \f$\frac12\to\frac32\f$. * @param ichan The channel we are calculating the matrix element for. * @param inpart The decaying Particle. * @param decay The particles produced in the decay. * @param meopt The option for the matrix element * @return The matrix element squared for the phase-space configuration. */ double halfThreeHalf(const int ichan,const Particle & inpart, const ParticleVector & decay,MEOption meopt) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * Find duplicate modes in the list of particles * @param imode The mode we are studying * @param particles The external particles for the different modes * @param loc The location of the duplicate mode * @param cc If the duplicate is the charge conjugate */ void findModes(unsigned int imode,vector<tPDVector> & particles, vector<unsigned int> & loc,vector<bool> & cc); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<BaryonFactorizedDecayer> initBaryonFactorizedDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ BaryonFactorizedDecayer & operator=(const BaryonFactorizedDecayer &); private: /** * The weak decay current */ WeakDecayCurrentPtr _current; /** * The baryon form factor */ BaryonFormFactorPtr _form; /** * The perturbative coefficients */ //@{ /** * The perturbative \f$a_1\f$ coefficient for b decays. */ double _a1b; /** * The perturbative \f$a_2\f$ coefficient for b decays. */ double _a2b; /** * The perturbative \f$a_1\f$ coefficient for c decays. */ double _a1c; /** * The perturbative \f$a_2\f$ coefficient for c decays. */ double _a2c; //@} /** * Mapping of the modes to the currents */ vector<vector<unsigned int> > _currentmap; /** * Mapping of the modes to the form factors */ vector<vector<unsigned int> > _formmap; /** * The CKM factors */ vector<vector <Complex> > _factCKM; /** * location of the weights */ vector<int> _wgtloc; /** * the maximum weights */ vector<double> _wgtmax; /** * weights for the different channels */ vector<double> _weights; /** * Pointer to the CKM object. */ Ptr<StandardCKM>::pointer _theCKM; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Spin-\f$\frac12\f$ spinors */ mutable vector<LorentzSpinor<SqrtEnergy> > _inHalf; /** * Spin-\f$\frac12\f$ barred spinors */ mutable vector<LorentzSpinorBar<SqrtEnergy> > _inHalfBar; /** * Spin-\f$\frac32\f$ spinors */ mutable vector<LorentzRSSpinor<SqrtEnergy> > _inThreeHalf; /** * Spin-\f$\frac32\f$ barred spinors */ mutable vector<LorentzRSSpinorBar<SqrtEnergy> > _inThreeHalfBar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of BaryonFactorizedDecayer. */ template <> struct BaseClassTrait<Herwig::BaryonFactorizedDecayer,1> { /** Typedef of the first base class of BaryonFactorizedDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the BaryonFactorizedDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::BaryonFactorizedDecayer> : public ClassTraitsBase<Herwig::BaryonFactorizedDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::BaryonFactorizedDecayer"; } /** Return the name of the shared library be loaded to get * access to the BaryonFactorizedDecayer class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_BaryonFactorizedDecayer_H */ ��������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/NonLeptonicHyperonDecayer.h����������������������������������������0000644�0001750�0001750�00000012271�11754474773�024523� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_NonLeptonicHyperonDecayer_H #define HERWIG_NonLeptonicHyperonDecayer_H // // This is the declaration of the NonLeptonicHyperonDecayer class. // #include "Baryon1MesonDecayerBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * This is a general class for the non-leptonic decay of hyperons. The * decays are given in terms of the invariant amplitudes * \f[\bar{u}_{B_j} \left\{A+B\gamma_5\right\}u_{B_i}\f] * where \f$B_j\f$ is the outgoing baryon and \f$B_i\f$ is the incoming baryon. * * The default amplitudes are taken from the fit in hep-ph/9902351, * N.B. due to the sign conventions in hep-ph/9902351 the B amplitudes * have the opposite sign. * * @see Baryon1MesonDecayerBase * */ class NonLeptonicHyperonDecayer: public Baryon1MesonDecayerBase { public: /** * Default constructor. */ NonLeptonicHyperonDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a scalar. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void halfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A,Complex& B) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} protected: /** * Describe a concrete class with persistent data. */ static ClassDescription<NonLeptonicHyperonDecayer> initNonLeptonicHyperonDecayer; /** * Private and non-existent assignment operator. */ NonLeptonicHyperonDecayer & operator=(const NonLeptonicHyperonDecayer &); private: /** * PDG code for the incoming baryon. */ vector<long> _incomingB; /** * PDG code for the outgoing baryon. */ vector<long> _outgoingB; /** * PDG code for the outgoing meson */ vector<long> _outgoingM; /** * The \f$A\f$ coefficient. */ vector<double> _a; /** * The \f$B\f$ coefficient. */ vector<double> _b; /** * the maximum weights for the decays */ vector<double> _maxweight; /** * initial size fo the vectors */ unsigned int _initsize; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of NonLeptonicHyperonDecayer. */ template <> struct BaseClassTrait<Herwig::NonLeptonicHyperonDecayer,1> { /** Typedef of the base class of NonLeptonicHyperonDecayer. */ typedef Herwig::Baryon1MesonDecayerBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::NonLeptonicHyperonDecayer> : public ClassTraitsBase<Herwig::NonLeptonicHyperonDecayer> { /** Return the class name.*/ static string className() { return "Herwig::NonLeptonicHyperonDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_NonLeptonicHyperonDecayer_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/SU3BaryonOctetOctetPhotonDecayer.cc��������������������������������0000644�0001750�0001750�00000035050�11754474773�026037� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SU3OctetOctetPhotonDecayer class. // #include "SU3BaryonOctetOctetPhotonDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; SU3BaryonOctetOctetPhotonDecayer::SU3BaryonOctetOctetPhotonDecayer() { // default values of the parameters // these are the values for first excited multiplet // the couplings of the anticommutator and communtator terms _lf=-0.009/GeV; _ld=-0.024/GeV; // the relative parities of the two baryon multiplets _parity=true; // PDG codes for the various ground state baryons _proton = 2212; _neutron = 2112; _sigma0 = 3212; _sigmap = 3222; _sigmam = 3112; _lambda = 3122; _xi0 = 3322; _xim = 3312; // PDG codes for the various excited baryons _eproton = 12212; _eneutron = 12112; _esigma0 = 13212; _esigmap = 13222; _esigmam = 13112; _elambda = 23122; _exi0 = 13322; _exim = 13312; // intermediates generateIntermediates(false); } void SU3BaryonOctetOctetPhotonDecayer::doinit() { Baryon1MesonDecayerBase::doinit(); // set up the decay modes setupModes(1); // set up the phase space and the couplings tPDVector extpart(3); DecayPhaseSpaceModePtr mode; double wgtmax; vector<double> wgt(0); for(unsigned int ix=0;ix<_incomingB.size();++ix) { extpart[0]=getParticleData(_incomingB[ix]); extpart[1]=getParticleData(_outgoingB[ix]); extpart[2]=getParticleData(ParticleID::gamma); mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); wgtmax = _maxweight.size()>numberModes() ? _maxweight[numberModes()] : 1.; addMode(mode,wgtmax,wgt); // testing code // Energy MR = extpart[0]->mass(); // Energy MB = extpart[1]->mass(); // Energy kg = 0.5*(sqr(MR)-sqr(MB))/MR; // Energy2 Tji = 128.*sqr((sqr(MR)-sqr(MB))/2.*_prefactor[ix]/4.); // Energy width = 1./8./Constants::pi/sqr(MR)*kg*Tji; // generator()->log() << "testing " << extpart[0]->PDGName() << "->" // << extpart[1]->PDGName() << " " // << extpart[2]->PDGName() << " " << width/MeV // << " MeV\n"; } } void SU3BaryonOctetOctetPhotonDecayer::doinitrun() { Baryon1MesonDecayerBase::doinitrun(); if(initialize()) { _maxweight.clear(); for(unsigned int ix=0;ix<numberModes();++ix) _maxweight.push_back(mode(ix)->maxWeight()); } } int SU3BaryonOctetOctetPhotonDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); if(_incomingB.size()==0){setupModes(0);} // must be two outgoing particles if(children.size()!=2){return imode;} // ids of the particles int id0(parent->id()),id1(children[0]->id()),id2(children[1]->id()),iout; if(id1==ParticleID::gamma){iout=id2;} else if(id2==ParticleID::gamma){iout=id1;} else{return imode;} unsigned int ix(0); cc =false; do { if(id0==_incomingB[ix]) { if(iout==_outgoingB[ix]) { imode=ix; cc=false; } } else if(id0==-_incomingB[ix]) { if(iout==-_outgoingB[ix]) { imode=ix; cc=true; } } ++ix; } while(ix<_incomingB.size()&&imode<0); return imode; } void SU3BaryonOctetOctetPhotonDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_lf,1./GeV) << ounit(_ld,1./GeV) << _parity << _proton << _neutron << _sigma0 << _sigmap << _sigmam << _lambda << _xi0 << _xim << _eproton << _eneutron << _esigma0 << _esigmap << _esigmam << _elambda << _exi0 << _exim << _incomingB << _outgoingB << _maxweight << ounit(_prefactor,1./GeV); } void SU3BaryonOctetOctetPhotonDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_lf,1./GeV) >> iunit(_ld,1./GeV) >> _parity >> _proton >> _neutron >> _sigma0 >> _sigmap >> _sigmam >> _lambda >> _xi0 >> _xim >> _eproton >> _eneutron >> _esigma0 >> _esigmap >> _esigmam >> _elambda >> _exi0 >> _exim >> _incomingB >> _outgoingB >> _maxweight >> iunit(_prefactor,1./GeV); } ClassDescription<SU3BaryonOctetOctetPhotonDecayer> SU3BaryonOctetOctetPhotonDecayer::initSU3BaryonOctetOctetPhotonDecayer; // Definition of the static class description member. void SU3BaryonOctetOctetPhotonDecayer::Init() { static ClassDocumentation<SU3BaryonOctetOctetPhotonDecayer> documentation ("The SU3BaryonOctetOctetPhotonDecayer class is designed for the " "radiative decay of an octet baryon to another octet baryon."); static Parameter<SU3BaryonOctetOctetPhotonDecayer,InvEnergy> interfaceFcoupling ("Fcoupling", "The F coupling of the baryon resonances", &SU3BaryonOctetOctetPhotonDecayer::_lf, 1./GeV, -0.009/GeV, -10.0/GeV, 10.0/GeV, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,InvEnergy> interfaceDcoupling ("Dcoupling", "The D coupling of the baryon resonances", &SU3BaryonOctetOctetPhotonDecayer::_ld, 1./GeV, -0.024/GeV, -10.0/GeV, 10.0/GeV, false, false, true); static Switch<SU3BaryonOctetOctetPhotonDecayer,bool> interfaceParity ("Parity", "The relative parities of the two multiplets.", &SU3BaryonOctetOctetPhotonDecayer::_parity, true, false, false); static SwitchOption interfaceParitySame (interfaceParity, "Same", "Same parity", true); static SwitchOption interfaceParityDifferent (interfaceParity, "Different", "Opposite parity", false); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceProton ("Proton", "The PDG code for the lighter proton-like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_proton, 2212, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceNeutron ("Neutron", "The PDG code for the lighter neutron-like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_neutron, 2112, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceSigmap ("Sigma+", "The PDG code for the lighter Sigma+-like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_sigmap, 3222, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceSigma0 ("Sigma0", "The PDG code for the lighter Sigma0-like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_sigma0, 3212, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceSigmam ("Sigma-", "The PDG code for the lighter Sigma--like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_sigmam, 3112, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceLambda ("Lambda", "The PDG code for the lighter Lambda-like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_lambda, 3122, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceXi0 ("Xi0", "The PDG code for the lighter Xi0-like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_xi0, 3322, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceXim ("Xi-", "The PDG code for the lighter Xi--like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_xim, 3312, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceExcitedProton ("ExcitedProton", "The PDG code for the heavier proton-like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_eproton, 12212, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceExcitedNeutron ("ExcitedNeutron", "The PDG code for the heavier neutron-like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_eneutron, 12112, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceExcitedSigmap ("ExcitedSigma+", "The PDG code for the heavier Sigma+-like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_esigmap, 13222, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceExcitedSigma0 ("ExcitedSigma0", "The PDG code for the heavier Sigma0-like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_esigma0, 13212, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceExcitedSigmam ("ExcitedSigma-", "The PDG code for the heavier Sigma--like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_esigmam, 13112, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceExcitedLambda ("ExcitedLambda", "The PDG code for the heavier Lambda-like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_elambda, 23122, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceExcitedXi0 ("ExcitedXi0", "The PDG code for the heavier Xi0-like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_exi0, 13322, 0, 1000000, false, false, true); static Parameter<SU3BaryonOctetOctetPhotonDecayer,int> interfaceExcitedXim ("ExcitedXi-", "The PDG code for the heavier Xi--like baryon.", &SU3BaryonOctetOctetPhotonDecayer::_exim, 13312, 0, 1000000, false, false, true); static ParVector<SU3BaryonOctetOctetPhotonDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &SU3BaryonOctetOctetPhotonDecayer::_maxweight, 0, 0, 0, 0., 100., false, false, true); } // couplings for spin-1/2 to spin-1/2 spin-1 void SU3BaryonOctetOctetPhotonDecayer::halfHalfVectorCoupling(int imode,Energy m0, Energy m1, Energy, Complex&A1, Complex&A2,Complex&B1, Complex&B2) const { if(_parity) { A1= _prefactor[imode]*(m0+m1); B1=0.; A2=-2.*_prefactor[imode]*(m0+m1); B2=0.; } else { A1=0.; B1= _prefactor[imode]*(m1-m0); A2=0.; B2=-2.*_prefactor[imode]*(m0+m1); } } // couplings for spin-1/2 to spin-3/2 spin-1 void SU3BaryonOctetOctetPhotonDecayer:: threeHalfHalfVectorCoupling(int imode,Energy m0,Energy m1, Energy, Complex&A1,Complex&A2,Complex&A3, Complex&B1,Complex&B2,Complex&B3) const { if(_parity) { A1=0.; B1=-_prefactor[imode]*(m0+m1); A2=0.; B2= _prefactor[imode]*(m0+m1); } else { A1= _prefactor[imode]*(m0-m1); B1=0.; A2= _prefactor[imode]*(m0+m1); B2=0.; } A3=0.; B3=0.; } // set up the decay modes void SU3BaryonOctetOctetPhotonDecayer::setupModes(unsigned int iopt) const { if(_incomingB.size()!=0&&iopt==0) return; if(iopt==1) { _outgoingB.clear(); _incomingB.clear(); } // set up for the various different decay modes vector<InvEnergy> factor; vector<int> intemp,outtemp; // decays of the excited proton intemp.push_back(_eproton);outtemp.push_back(_proton); factor.push_back(_lf+_ld/3.); // decays of the excited neutron intemp.push_back(_eneutron);outtemp.push_back(_neutron); factor.push_back(-2.*_ld/3.); // decays of the excited lambda intemp.push_back(_elambda);outtemp.push_back(_sigma0); factor.push_back(2.*_ld/sqrt(3.)); intemp.push_back(_elambda);outtemp.push_back(_lambda); factor.push_back(-_ld/3.); // decays of the excited sigma+ intemp.push_back(_esigmap);outtemp.push_back(_sigmap); factor.push_back(_lf+_ld/3.); // decays of the excited sigma0 intemp.push_back(_esigma0);outtemp.push_back(_sigma0); factor.push_back(_lf/3.); intemp.push_back(_esigma0);outtemp.push_back(_lambda); factor.push_back(2.*_ld/sqrt(3.)); // decays of the excited simga- intemp.push_back(_esigmam);outtemp.push_back(_sigmam); factor.push_back(-_ld-_lf/3.); // decays of the excited xi- intemp.push_back(_exim);outtemp.push_back(_xim); factor.push_back(_ld/3.-_lf); // decays of the excited xi0 intemp.push_back(_exi0);outtemp.push_back(_xi0); factor.push_back(-2.*_ld/3.); int inspin,outspin; tPDVector extpart(2); for(unsigned int ix=0;ix<intemp.size();++ix) { if(intemp[ix]!=0&&outtemp[ix]!=0) { extpart[0]=getParticleData(intemp[ix]); extpart[1]=getParticleData(outtemp[ix]); if(extpart[0]->massMax()>extpart[1]->massMin()) { _incomingB.push_back(intemp[ix]); _outgoingB.push_back(outtemp[ix]); if(iopt==1) { inspin = extpart[0]->iSpin(); outspin = extpart[1]->iSpin(); factor[ix] *=2.; if(inspin==2&&outspin==2) _prefactor.push_back(2.*factor[ix]); else if(inspin==4&&outspin==2) _prefactor.push_back(factor[ix]); else throw DecayIntegratorError() << "Invalid combination of spins in " << "SU3BaryonOctetOctetPhotonDecayer::" << "setupModes()" << Exception::abortnow;} } } } } void SU3BaryonOctetOctetPhotonDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; Baryon1MesonDecayerBase::dataBaseOutput(output,false); output << "newdef " << name() << ":Fcoupling " << _lf*GeV << "\n"; output << "newdef " << name() << ":Dcoupling " << _ld*GeV << "\n"; output << "newdef " << name() << ":Parity " << _parity<< "\n"; output << "newdef " << name() << ":Proton " << _proton << "\n"; output << "newdef " << name() << ":Neutron " << _neutron << "\n"; output << "newdef " << name() << ":Sigma+ " << _sigmap << "\n"; output << "newdef " << name() << ":Sigma0 " << _sigma0 << "\n"; output << "newdef " << name() << ":Sigma- " << _sigmam << "\n"; output << "newdef " << name() << ":Lambda " << _lambda << "\n"; output << "newdef " << name() << ":Xi0 " << _xi0 << "\n"; output << "newdef " << name() << ":Xi- " << _xim << "\n"; output << "newdef " << name() << ":ExcitedProton " << _eproton << "\n"; output << "newdef " << name() << ":ExcitedNeutron " << _eneutron << "\n"; output << "newdef " << name() << ":ExcitedSigma+ " << _esigmap << "\n"; output << "newdef " << name() << ":ExcitedSigma0 " << _esigma0 << "\n"; output << "newdef " << name() << ":ExcitedSigma- " << _esigmam << "\n"; output << "newdef " << name() << ":ExcitedLambda " << _elambda << "\n"; output << "newdef " << name() << ":ExcitedXi0 " << _exi0 << "\n"; output << "newdef " << name() << ":ExcitedXi- " << _exim << "\n"; for(unsigned int ix=0;ix<_maxweight.size();++ix) { output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/SU3BaryonOctetOctetScalarDecayer.h���������������������������������0000644�0001750�0001750�00000022656�11754474773�025647� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_SU3BaryonOctetOctetScalarDecayer_H #define HERWIG_SU3BaryonOctetOctetScalarDecayer_H // This is the declaration of the SU3BaryonOctetOctetScalarDecayer class. #include "Baryon1MesonDecayerBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>SU3BaryonOctetOctetScalarDecayer</code> class is a simple decayer for * the strong decay of the excited baryon \f$SU(3)\f$ octets to lower lying * baryon octets and a pseudoscalar meson from the lightest * multiplet, i.e. \f$\pi\f$, \f$K\f$, \f$\eta\f$, etc.. * * The interaction Lagrangian is taken to have the form * * \f[-\frac{s_d}{4\sqrt{2}f_\pi} \left[{\rm tr} (\bar{R}p_\phi\!\!\!\!\!\!\!\!\not\,\,\,\,\, * \{\phi,B\})\right] * -\frac{s_f}{4\sqrt{2}f_\pi} \left[{\rm tr} (\bar{R}p_\phi\!\!\!\!\!\!\!\!\not\,\,\,\,\, * [\phi,B])\right],\f] * where \f$R\f$ is the matrix field for the excited resonance, \f$\phi\f$ is the matrix * field for the pseudoscalar mesons, \f$f_\pi\f$ is the pion decay constant * and \f$B\f$ is the matrix field for the ground * state baryon octet for the decay of a spin\f$\frac12\f$ multiplet. * * The above form is used for \f$\frac12^-\f$ excited baryon resonances * and the above form with * an additional \f$\gamma_5\f$ is used for excited \f$\frac12^+\f$ baryon resonances. * For the decay of a spin-\f$\frac32\f$ multiplet we use the form * * \f[-\frac{s_d}{4\sqrt{2}f_\pi} \left[{\rm tr} (\bar{R}^\mu p_{\phi,\mu}\{\phi,B\})\right] * -\frac{s_f}{4\sqrt{2}f_\pi} \left[{\rm tr} (\bar{R}^\mu p_{\phi,\mu} [\phi,B])\right],\f] * where \f$R^\mu\f$ is the matrix field for the excited resonance. This form is used * for \f$\frac32^+\f$ excited baryon resonances and this form with an additional * \f$\gamma_5\f$ for excited \f$\frac32^-\f$ resonances. * * The decay to spin-\f$\frac32\f$ resonances in not yet implemented but can * be included if necessary. * * This is one of a number of decayers based on \f$SU(3)\f$ symmetry which are * intended for the decay of excited baryons. * * @see Baryon1MesonDecayerBase * @see SU3BaryonOctetOctetPhotonDecayer * @see SU3BaryonDecupletOctetPhotonDecayer * @see SU3BaryonDecupletOctetScalarDecayer * @see SU3BaryonSingletOctetPhotonDecayer * @see SU3BaryonSingletOctetScalarDecayer * @see SU3BaryonOctetDecupletScalarDecayer * @see SU3BaryonOctetOctetScalarDecayer * */ class SU3BaryonOctetOctetScalarDecayer: public Baryon1MesonDecayerBase { public: /** * Default constructor. */ SU3BaryonOctetOctetScalarDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a scalar. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void halfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A,Complex& B) const; /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void threeHalfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A,Complex& B) const; //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<SU3BaryonOctetOctetScalarDecayer> initSU3BaryonOctetOctetScalarDecayer; /** * Private and non-existent assignment operator. */ SU3BaryonOctetOctetScalarDecayer & operator=(const SU3BaryonOctetOctetScalarDecayer &); private: /** * set-up the modes */ void setupModes(unsigned int) const; private: /** * The couplings of comutator term. */ double _sf; /** * The couplings of anticomutator term. */ double _sd; /** * the relative parities of the two baryon multiplets */ bool _parity; /** * the pion decay constant */ Energy _fpi; /** * PDG codes for the lower lying baryon octet baryons */ //@{ /** * The PDG code for the \f$p\f$-like member of the outgoing octet. */ int _proton; /** * The PDG code for the \f$n\f$-like member of the outgoing octet. */ int _neutron; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ int _sigma0; /** * The PDG code for the \f$\Sigma^+\f$-like member of the outgoing octet. */ int _sigmap; /** * The PDG code for the \f$\Sigma^-\f$-like member of the outgoing octet. */ int _sigmam; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ int _lambda; /** * The PDG code for the \f$\Xi^0\f$-like member of the outgoing octet. */ int _xi0; /** * The PDG code for the \f$\Xi^-\f$-like member of the outgoing octet. */ int _xim; //@} /** * PDG codes for the higher baryon octet baryons */ //@{ /** * The PDG code for the \f$p\f$-like member of the outgoing octet. */ int _eproton; /** * The PDG code for the \f$n\f$-like member of the outgoing octet. */ int _eneutron; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ int _esigma0; /** * The PDG code for the \f$\Sigma^+\f$-like member of the outgoing octet. */ int _esigmap; /** * The PDG code for the \f$\Sigma^-\f$-like member of the outgoing octet. */ int _esigmam; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ int _elambda; /** * The PDG code for the \f$\Xi^0\f$-like member of the outgoing octet. */ int _exi0; /** * The PDG code for the \f$\Xi^-\f$-like member of the outgoing octet. */ int _exim; //@} /** * PDG code for the incoming baryons */ mutable vector<int> _incomingB; /** * PDG code for the outgoing baryons */ mutable vector<int> _outgoingB; /** * PDG code for the outgoing mesons */ mutable vector<int> _outgoingM; /** * the maximum weight for the various modes */ vector<double> _maxweight; /** * The couplings for the different modes */ mutable vector<InvEnergy> _prefactor; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SU3BaryonOctetOctetScalarDecayer. */ template <> struct BaseClassTrait<Herwig::SU3BaryonOctetOctetScalarDecayer,1> { /** Typedef of the base class of SU3BaryonOctetOctetScalarDecayer. */ typedef Herwig::Baryon1MesonDecayerBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SU3BaryonOctetOctetScalarDecayer> : public ClassTraitsBase<Herwig::SU3BaryonOctetOctetScalarDecayer> { /** Return the class name.*/ static string className() { return "Herwig::SU3BaryonOctetOctetScalarDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SU3BaryonOctetOctetScalarDecayer_H */ ����������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/Makefile.am��������������������������������������������������������0000644�0001750�0001750�00000002661�11754474773�021316� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwBaryonDecay.la HwBaryonDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:0:0 HwBaryonDecay_la_LIBADD = $(top_builddir)/PDT/libHwBaryonWidth.la HwBaryonDecay_la_SOURCES = \ Baryon1MesonDecayerBase.cc Baryon1MesonDecayerBase.h \ Baryon1MesonDecayerBase.fh\ BaryonFactorizedDecayer.cc BaryonFactorizedDecayer.h \ KornerKramerCharmDecayer.cc KornerKramerCharmDecayer.h \ NonLeptonicHyperonDecayer.cc NonLeptonicHyperonDecayer.h \ RadiativeHyperonDecayer.cc RadiativeHyperonDecayer.h \ NonLeptonicOmegaDecayer.cc NonLeptonicOmegaDecayer.h \ OmegaXiStarPionDecayer.cc OmegaXiStarPionDecayer.h \ SemiLeptonicBaryonDecayer.cc SemiLeptonicBaryonDecayer.h \ StrongHeavyBaryonDecayer.cc StrongHeavyBaryonDecayer.h \ SU3BaryonDecupletOctetPhotonDecayer.cc SU3BaryonDecupletOctetPhotonDecayer.h\ SU3BaryonDecupletOctetScalarDecayer.cc SU3BaryonDecupletOctetScalarDecayer.h\ SU3BaryonOctetDecupletScalarDecayer.cc SU3BaryonOctetDecupletScalarDecayer.h\ SU3BaryonOctetOctetPhotonDecayer.cc SU3BaryonOctetOctetPhotonDecayer.h \ SU3BaryonOctetOctetScalarDecayer.cc SU3BaryonOctetOctetScalarDecayer.h \ SU3BaryonSingletOctetPhotonDecayer.cc SU3BaryonSingletOctetPhotonDecayer.h \ SU3BaryonSingletOctetScalarDecayer.cc SU3BaryonSingletOctetScalarDecayer.h \ RadiativeHeavyBaryonDecayer.cc RadiativeHeavyBaryonDecayer.h �������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/SU3BaryonOctetDecupletScalarDecayer.h������������������������������0000644�0001750�0001750�00000022755�11754474773�026336� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_SU3BaryonOctetDecupletScalarDecayer_H #define HERWIG_SU3BaryonOctetDecupletScalarDecayer_H // This is the declaration of the SU3BaryonOctetDecupletScalarDecayer class. #include "Baryon1MesonDecayerBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>SU3BaryonOctetDecupletScalarDecayer</code> class is designed for the decay * of an SU(3) octet baryon to a deculpet baryon and a pseudoscalar meson from the * lightest multiplet. * * The coupling is taken to have the form * \f[\frac{C}{f_\pi}\left[ * \bar{\Delta}^{\mu,abc}p_{\phi,\mu}\phi^i_aB^j_b\epsilon_{cij} * -\bar{B}^b_ip_{\phi,\mu}\phi^a_j\Delta^\mu_{abc}\epsilon^{cij} * \right],\f] * where \f$\Delta^\mu_{abc}\f$ is the decuplet field, \f$B^j_b\f$ is the * octet field, * \f$\phi^i_a\f$ is the pseudoscalar field, \f$f_\pi\f$ is the pion decay constant * and \f$C\f$ is the coupling for the decay. * This form is used for the \f$\frac12^+\f$ octet mesons and the same form with * \f$\gamma_5\f$ for the \f$\frac12^-\f$ octet. * * The above form is used for the decay \f$\frac12\to\frac32+0\f$ whereas for the * decay of a spin-\f$\frac32\f$ octet we use * \f[\frac{C}{f_\pi}\left[ * \bar{\Delta}^{\mu,abc}p_\phi\!\!\!\!\!\!\!\!\not\,\,\,\,\,\phi^i_aB^j_{b\mu}\epsilon_{cij} * -\bar{B}^b_{i\mu}p_\phi\!\!\!\!\!\!\!\!\not\,\,\,\,\,\phi^a_j\Delta^\mu_{abc}\epsilon^{cij} * \right]\f] * where the decuplet and octet have the same parity and the same form with the * addition of \f$\gamma_5\f$ if they have opposite parity. * * This is one of a number of decayers based on \f$SU(3)\f$ symmetry which are * intended for the decay of excited baryons. * * @see Baryon1MesonDecayerBase * @see SU3BaryonOctetOctetPhotonDecayer * @see SU3BaryonDecupletOctetPhotonDecayer * @see SU3BaryonDecupletOctetScalarDecayer * @see SU3BaryonSingletOctetPhotonDecayer * @see SU3BaryonSingletOctetScalarDecayer * @see SU3BaryonOctetDecupletScalarDecayer * @see SU3BaryonOctetOctetScalarDecayer * */ class SU3BaryonOctetDecupletScalarDecayer: public Baryon1MesonDecayerBase { public: /** * Default constructor. */ SU3BaryonOctetDecupletScalarDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void halfThreeHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A,Complex& B) const; /** * Couplings for spin-\f$\frac32\f$ to spin-\f$\frac32\f$ and a scalar. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. */ virtual void threeHalfThreeHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A1,Complex& A2, Complex& B1,Complex& B2) const; //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<SU3BaryonOctetDecupletScalarDecayer> initSU3BaryonOctetDecupletScalarDecayer; /** * Private and non-existent assignment operator. */ SU3BaryonOctetDecupletScalarDecayer & operator=(const SU3BaryonOctetDecupletScalarDecayer &); private: /** * set-up the modes */ void setupModes(unsigned int) const; private: /** * the couplings */ double _c; /** * the relative parities of the two baryon multiplets */ bool _parity; /** * the pion decay constant */ Energy _fpi; /** * PDG codes for the various octet baryons */ //@{ /** * The PDG code for the \f$p\f$-like member of the incoming octet. */ int _proton; /** * The PDG code for the \f$n\f$-like member of the incoming octet. */ int _neutron; /** * The PDG code for the \f$\Sigma^0\f$-like member of the incoming octet. */ int _sigma0; /** * The PDG code for the \f$\Sigma^+\f$-like member of the incoming octet. */ int _sigmap; /** * The PDG code for the \f$\Sigma^-\f$-like member of the incoming octet. */ int _sigmam; /** * The PDG code for the \f$\Sigma^0\f$-like member of the incoming octet. */ int _lambda; /** * The PDG code for the \f$\Xi^0\f$-like member of the incoming octet. */ int _xi0; /** * The PDG code for the \f$\Xi^-\f$-like member of the incoming octet. */ int _xim; //@} /** * PDG codes for the various decuplet baryons */ //@{ /** * The PDG code for the \f$\Delta^{++}\f$-like member of the outgoing decuplet. */ int _deltapp; /** * The PDG code for the \f$\Delta^{+}\f$-like member of the outgoing decuplet. */ int _deltap; /** * The PDG code for the \f$\Delta^{0}\f$-like member of the outgoing decuplet. */ int _delta0; /** * The PDG code for the \f$\Delta^{-}\f$-like member of the outgoing decuplet. */ int _deltam; /** * The PDG code for the \f$\Sigma^{*+}\f$-like member of the outgoing decuplet. */ int _sigmasp; /** * The PDG code for the \f$\Sigma^{*0}\f$-like member of the outgoing decuplet. */ int _sigmas0; /** * The PDG code for the \f$\Sigma^{*-}\f$-like member of the outgoing decuplet. */ int _sigmasm; /** * The PDG code for the \f$\Omega^-\f$-like member of the outgoing decuplet. */ int _omega; /** * The PDG code for the \f$\Xi^{*-}\f$-like member of the outgoing decuplet. */ int _xism; /** * The PDG code for the \f$\Xi^{*0}\f$-like member of the outgoing decuplet. */ int _xis0; //@} /** * PDG code for the incoming baryons */ mutable vector<int> _incomingB; /** * PDG code for the outgoing baryons */ mutable vector<int> _outgoingB; /** * PDG code for the outgoing mesons */ mutable vector<int> _outgoingM; /** * the maximum weight for the various modes */ vector<double> _maxweight; /** * The couplings for the different modes. */ mutable vector<InvEnergy> _prefactor; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SU3BaryonOctetDecupletScalarDecayer. */ template <> struct BaseClassTrait<Herwig::SU3BaryonOctetDecupletScalarDecayer,1> { /** Typedef of the base class of SU3BaryonOctetDecupletScalarDecayer. */ typedef Herwig::Baryon1MesonDecayerBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SU3BaryonOctetDecupletScalarDecayer> /** Typedef of the base class of SU3BaryonOctetDecupletScalarDecayer. */ : public ClassTraitsBase<Herwig::SU3BaryonOctetDecupletScalarDecayer> { /** Return the class name.*/ static string className() { return "Herwig::SU3BaryonOctetDecupletScalarDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SU3BaryonOctetDecupletScalarDecayer_H */ �������������������herwig++-2.6.0.orig/Decay/Baryon/RadiativeHyperonDecayer.cc�����������������������������������������0000644�0001750�0001750�00000016201�11754474773�024336� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the RadiativeHyperonDecayer class. // #include "RadiativeHyperonDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void RadiativeHyperonDecayer::doinitrun() { Baryon1MesonDecayerBase::doinitrun(); if(initialize()) { maxweight_.clear(); for(unsigned int ix=0;ix<numberModes();++ix) maxweight_.push_back(mode(ix)->maxWeight()); } } void RadiativeHyperonDecayer::doinit() { Baryon1MesonDecayerBase::doinit(); unsigned int isize(incomingB_.size()); if(isize!=outgoingB_.size()||isize!=A_.size()|| isize!=B_.size() ||isize!=maxweight_.size()) throw InitException() << "Inconsistent parameters in " << "RadiativeHyperonDecayer::doinit()" << Exception::runerror; // set up the decay modes tPDVector extpart(3); extpart[2]=getParticleData(ParticleID::gamma); DecayPhaseSpaceModePtr mode; double wgtmax; vector<double> wgt(0); for(unsigned int ix=0;ix<incomingB_.size();++ix) { extpart[0]=getParticleData(incomingB_[ix]); extpart[1]=getParticleData(outgoingB_[ix]); mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); wgtmax = maxweight_.size()>numberModes() ? maxweight_[numberModes()] : 1.; addMode(mode,wgtmax,wgt); } } RadiativeHyperonDecayer::RadiativeHyperonDecayer() { // Sigma+ -> p+ incomingB_.push_back(3222); outgoingB_.push_back(2212); A_.push_back(-1.81e-7/GeV); B_.push_back(0.47e-7/GeV); maxweight_.push_back(1.); // Xi- -> Sigma- incomingB_.push_back(3312); outgoingB_.push_back(3112); A_.push_back(0.08e-7/GeV); B_.push_back(0.15e-7/GeV); maxweight_.push_back(1.); // Sigma0 -> n incomingB_.push_back(3212); outgoingB_.push_back(2112); A_.push_back(-0.02e-7/GeV); B_.push_back(-0.45e-7/GeV); maxweight_.push_back(1.); // Lambda0 -> n incomingB_.push_back(3122); outgoingB_.push_back(2112); A_.push_back(-0.52e-7/GeV); B_.push_back(-0.05e-7/GeV); maxweight_.push_back(1.); // Xi0 -> Sigma0 incomingB_.push_back(3322); outgoingB_.push_back(3212); A_.push_back( 0.05e-7/GeV); B_.push_back( 0.70e-7/GeV); maxweight_.push_back(1.); // Xi0 -> Lambda0 incomingB_.push_back(3322); outgoingB_.push_back(3122); A_.push_back(-0.34e-7/GeV); B_.push_back(-0.08e-7/GeV); maxweight_.push_back(1.); // initial size of vectors initsize_ = A_.size(); } int RadiativeHyperonDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); // must be two outgoing pa4rticles if(children.size()!=2) return imode; // ids of the particles int id0=parent->id(); int id1(children[0]->id()); int id2(children[1]->id()); if(id1==ParticleID::gamma) swap(id1,id2); if(id2!=ParticleID::gamma) return imode; unsigned int ix(0); do { if(id0==incomingB_[ix] && id1==outgoingB_[ix]) imode=ix; else if(id0==-incomingB_[ix] && id1==-outgoingB_[ix]) imode=ix; ++ix; } while(ix<incomingB_.size()&&imode<0); // charge conjugate cc=id0<0; // return the answer return imode; } IBPtr RadiativeHyperonDecayer::clone() const { return new_ptr(*this); } IBPtr RadiativeHyperonDecayer::fullclone() const { return new_ptr(*this); } void RadiativeHyperonDecayer::persistentOutput(PersistentOStream & os) const { os << incomingB_ << outgoingB_ << ounit(A_,1./GeV) << ounit(B_,1./GeV) << maxweight_ << initsize_; } void RadiativeHyperonDecayer::persistentInput(PersistentIStream & is, int) { is >> incomingB_ >> outgoingB_ >> iunit(A_,1./GeV) >> iunit(B_,1./GeV) >> maxweight_ >> initsize_; } ClassDescription<RadiativeHyperonDecayer> RadiativeHyperonDecayer::initRadiativeHyperonDecayer; // Definition of the static class description member. void RadiativeHyperonDecayer::Init() { static ClassDocumentation<RadiativeHyperonDecayer> documentation ("The RadiativeHyperonDecayer class performs the radiative decays of hyperons.", "The radiative hyperons decays were simulated using the RadiativeHyperonDecayer" " class which implements the results of \\cite{Borasoy:1999nt}.", "\\bibitem{Borasoy:1999nt}\n" "B.~Borasoy and B.~R.~Holstein,\n" "Phys.\\ Rev.\\ D {\\bf 59} (1999) 054019 [arXiv:hep-ph/9902431].\n" "%%CITATION = PHRVA,D59,054019;%%\n"); static ParVector<RadiativeHyperonDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &RadiativeHyperonDecayer::maxweight_, 0, 0, 0, 0., 100., false, false, true); static ParVector<RadiativeHyperonDecayer,long> interfaceIncomingBaryon ("IncomingBaryon", "The PDG code for the incoming baryon.", &RadiativeHyperonDecayer::incomingB_, 0, 0, 0, 0, 1000000, false, false, true); static ParVector<RadiativeHyperonDecayer,long> interfaceOutgoingBaryon ("OutgoingBaryon", "The PDG code for the outgoing baryon.", &RadiativeHyperonDecayer::outgoingB_, 0, 0, 0, 0, 1000000, false, false, true); static ParVector<RadiativeHyperonDecayer,InvEnergy> interfaceCouplingA ("CouplingA", "The A coupling", &RadiativeHyperonDecayer::A_, 1./GeV, -1, ZERO, -10./GeV, 10./GeV, false, false, Interface::limited); static ParVector<RadiativeHyperonDecayer,InvEnergy> interfaceCouplingB ("CouplingB", "The B coupling", &RadiativeHyperonDecayer::B_, 1./GeV, -1, ZERO, -10./GeV, 10./GeV, false, false, Interface::limited); } void RadiativeHyperonDecayer::halfHalfVectorCoupling(int imode, Energy m0, Energy m1, Energy,Complex& A1,Complex& A2, Complex& B1,Complex& B2) const { useMe(); A1 = A_[imode]*(m0+m1); B1 = B_[imode]*(m0-m1); A2 = 2.*A_[imode]*(m0+m1); B2 = 2.*B_[imode]*(m0+m1); } void RadiativeHyperonDecayer::dataBaseOutput(ofstream & output,bool header) const { if(header) output << "update decayers set parameters=\""; for(unsigned int ix=0;ix<incomingB_.size();++ix) { if(ix<initsize_) { output << "newdef " << name() << ":MaxWeight " << ix << " " << maxweight_[ix] << "\n"; output << "newdef " << name() << ":IncomingBaryon " << ix << " " << incomingB_[ix] << "\n"; output << "newdef " << name() << ":OutgoingBaryon " << ix << " " << outgoingB_[ix] << "\n"; output << "newdef " << name() << ":CouplingA " << ix << " " << A_[ix]*GeV << "\n"; output << "newdef " << name() << ":CouplingB " << ix << " " << B_[ix]*GeV << "\n"; } else { output << "insert " << name() << ":MaxWeight " << ix << " " << maxweight_[ix] << "\n"; output << "insert " << name() << ":IncomingBaryon " << ix << " " << incomingB_[ix] << "\n"; output << "insert " << name() << ":OutgoingBaryon " << ix << " " << outgoingB_[ix] << "\n"; output << "insert " << name() << ":CouplingA " << ix << " " << A_[ix]*GeV << "\n"; output << "insert " << name() << ":CouplingB " << ix << " " << B_[ix]*GeV << "\n"; } } Baryon1MesonDecayerBase::dataBaseOutput(output,false); if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/SU3BaryonSingletOctetPhotonDecayer.h�������������������������������0000644�0001750�0001750�00000020127�11754474773�026227� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef THEPEG_SU3BaryonSingletOctetPhotonDecayer_H #define THEPEG_SU3BaryonSingletOctetPhotonDecayer_H // This is the declaration of the SU3BaryonSingletOctetPhotonDecayer class. #include "Baryon1MesonDecayerBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>SU3BaryonSingletOctetPhotonDecayer</code> class performs the * radiative decay of an \f$SU(3)\f$ singlet baryon to an \f$SU(3)\f$ octet baryon. * * The Lagrangian is taken to be * \f[iC\left[ {\rm tr}\left(\bar{S}\sigma_{\mu\nu}f^{\mu\nu}_+,B\right) * +{\rm tr}\left(\bar{B}\sigma_{\mu\nu}f^{\mu\nu}_+,S\right) * \right] * \f] * where \f$B\f$ is the matrix field for the ground state baryon multiplet, \f$S\f$ * is the singlet field and \f$f^{\mu\nu}_+\f$ is the chiral * field strength tensor for the electromagentic field given by * \f[ f^{\mu\nu}_+ = Q F^{\mu\nu} = \left(\begin{array}{ccc}\frac23&0&0\\ * 0&-\frac13&0\\ * 0&0&-\frac13 * \end{array}\right) F^{\mu\nu},\f] * where \f$F^{\mu\nu}\f$ is the electromagentic field strength tensor. * This form is used for the case where both the singlet and the baryon multiplet * have the same parity and * an additional \f$\gamma_5\f$ is added for the case where the multiplets have * opposite parity. * * For the decay of spin-\f$\frac32\f$ baryons we use the form * \f[ * ir_d\left[ {\rm tr}\left(\bar{S}^\mu\gamma_\nu f^{\mu\nu}_+,B\right) * +{\rm tr}\left(\bar{B}\gamma_\nu f^{\mu\nu}_+,S^\mu\right) * \right],\f] * where \f$S^\mu\f$ is the matrix field for the excited baryon multiplet. * This form is used when the baryon's have the same parity and this form with * an additional \f$\gamma_5\f$ when they have opposite parity. * * This is one of a number of decayers based on \f$SU(3)\f$ symmetry which are * intended for the decay of excited baryons. * * @see Baryon1MesonDecayerBase * @see SU3BaryonOctetOctetPhotonDecayer * @see SU3BaryonDecupletOctetPhotonDecayer * @see SU3BaryonDecupletOctetScalarDecayer * @see SU3BaryonSingletOctetPhotonDecayer * @see SU3BaryonSingletOctetScalarDecayer * @see SU3BaryonOctetDecupletScalarDecayer * @see SU3BaryonOctetOctetScalarDecayer */ class SU3BaryonSingletOctetPhotonDecayer: public Baryon1MesonDecayerBase { public: /** * Default constructor. */ SU3BaryonSingletOctetPhotonDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a vector. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. */ virtual void halfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A1,Complex& A2, Complex& B1,Complex& B2) const; /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a vector. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param A3 The coupling \f$A_3\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. * @param B3 The coupling \f$B_3\f$ described above. */ virtual void threeHalfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A1,Complex& A2,Complex& A3, Complex& B1,Complex& B2,Complex& B3) const; //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<SU3BaryonSingletOctetPhotonDecayer> initSU3BaryonSingletOctetPhotonDecayer; /** * Private and non-existent assignment operator. */ SU3BaryonSingletOctetPhotonDecayer & operator=(const SU3BaryonSingletOctetPhotonDecayer &); private: /** * set-up the modes */ void setupModes(unsigned int) const; private: /** * the coupling */ InvEnergy _c; /** * the relative parities of the two baryon multiplets */ bool _parity; /** * PDG codes for the lower lying baryon octet baryons */ //@{ /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ int _sigma0; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ int _lambda; /** * PDG code for the various excited baryon */ int _elambda; /** * outgoing baryon for the various modes */ mutable vector<int> _outgoingB; /** * the maximum weight for the various modes */ vector<double> _maxweight; /** * The couplings for the different modes. */ mutable vector<InvEnergy> _prefactor; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SU3BaryonSingletOctetPhotonDecayer. */ template <> struct BaseClassTrait<Herwig::SU3BaryonSingletOctetPhotonDecayer,1> { /** Typedef of the base class of SU3BaryonSingletOctetPhotonDecayer. */ typedef Herwig::Baryon1MesonDecayerBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SU3BaryonSingletOctetPhotonDecayer> : public ClassTraitsBase<Herwig::SU3BaryonSingletOctetPhotonDecayer> { /** Return the class name.*/ static string className() { return "Herwig::SU3BaryonSingletOctetPhotonDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* THEPEG_SU3BaryonSingletOctetPhotonDecayer_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/SemiLeptonicBaryonDecayer.h����������������������������������������0000644�0001750�0001750�00000016174�11754474773�024502� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_SemiLeptonicBaryonDecayer_H #define HERWIG_SemiLeptonicBaryonDecayer_H // // This is the declaration of the SemiLeptonicBaryonDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/WeakCurrents/LeptonNeutrinoCurrent.h" #include "Herwig++/Decay/FormFactors/BaryonFormFactor.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzRSSpinorBar.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>SemiLeptonicBaryonDecayer</code> class is designed for the * semi-leptonic decay of the baryons. It combine the form-factors from a * class inheriting from the BaryonFormFactor class and the leptonic current. * * The decays of spin-\f$\frac12\f$ baryons to spin-\f$\frac12\f$ and * spin-\f$\frac32\f$ baryons are currently supported. The only other decays * which seem to occur in nature is the semi-leptonic decay of the \f$\Omega^-\f$ * which is \f$\frac32\to\frac12\f$. * * @see BaryonFormFactor. * */ class SemiLeptonicBaryonDecayer: public DecayIntegrator { public: /** * Default constructor. */ SemiLeptonicBaryonDecayer(); /** * Check if this decayer can perfom the decay for a particular mode. * @param parent The decaying particle * @param children The decay products */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) const; /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt The option for the matrix element * @return The matrix element squared for the phase-space configuration. */ double me2(const int ichan,const Particle & part, const ParticleVector & decay,MEOption meopt) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} protected: /** * Matrix element for \f$\frac12\to\frac12\f$. * @param ichan The channel we are calculating the matrix element for. * @param inpart The decaying Particle. * @param decay The particles produced in the decay. * @param meopt The option for the matrix element * @return The matrix element squared for the phase-space configuration. */ double halfHalf(const int ichan,const Particle & inpart, const ParticleVector & decay,MEOption meopt) const; /** * Matrix element for \f$\frac12\to\frac32\f$. * @param ichan The channel we are calculating the matrix element for. * @param inpart The decaying Particle. * @param decay The particles produced in the decay. * @param meopt The option for the matrix element * @return The matrix element squared for the phase-space configuration. */ double halfThreeHalf(const int ichan,const Particle & inpart, const ParticleVector & decay,MEOption meopt) const; private: /** * Describe a concrete class with persistent data. */ static ClassDescription<SemiLeptonicBaryonDecayer> initSemiLeptonicBaryonDecayer; /** * Private and non-existent assignment operator. */ SemiLeptonicBaryonDecayer & operator=(const SemiLeptonicBaryonDecayer &); private: /** * The current for the leptons */ LeptonNeutrinoCurrentPtr _current; /** * form-factor */ BaryonFormFactorPtr _form; /** * the maximum weight */ vector<double> _maxwgt; /** * mapping of the mode to the form-factor */ vector<int> _modemap; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Spin-\f$\frac12\f$ spinors */ mutable vector<LorentzSpinor<SqrtEnergy> > _inHalf; /** * Spin-\f$\frac12\f$ barred spinors */ mutable vector<LorentzSpinorBar<SqrtEnergy> > _inHalfBar; /** * Spin-\f$\frac32\f$ spinors */ mutable vector<LorentzRSSpinor<SqrtEnergy> > _inThreeHalf; /** * Spin-\f$\frac32\f$ barred spinors */ mutable vector<LorentzRSSpinorBar<SqrtEnergy> > _inThreeHalfBar; /** * Constants for the mapping of the leptonic vector */ mutable vector<unsigned int> _constants; /** * Spins of the particles */ mutable vector<PDT::Spin> _ispin; /** * Location of the outgoing baryon */ mutable unsigned int _ibar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SemiLeptonicBaryonDecayer. */ template <> struct BaseClassTrait<Herwig::SemiLeptonicBaryonDecayer,1> { /** Typedef of the base class of SemiLeptonicBaryonDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SemiLeptonicBaryonDecayer> : public ClassTraitsBase<Herwig::SemiLeptonicBaryonDecayer> { /** Return the class name.*/ static string className() { return "Herwig::SemiLeptonicBaryonDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SemiLeptonicBaryonDecayer_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/SU3BaryonSingletOctetScalarDecayer.h�������������������������������0000644�0001750�0001750�00000017772�11754474773�026201� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_SU3BaryonSingletOctetScalarDecayer_H #define HERWIG_SU3BaryonSingletOctetScalarDecayer_H // This is the declaration of the SU3BaryonSingletOctetScalarDecayer class. #include "Baryon1MesonDecayerBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>SU3BaryonSingletOctetScalarDecayer</code> class is a simple decayer for * the strong decay of the excited baryon \f$SU(3)\f$ singlets to a lighter * baryon octet and a pseudoscalar meson from the lightest * multiplet, \e i.e. \f$\pi\f$, \f$K\f$,\f$\eta\f$. * * The interaction Lagrangian is taken to have the form * * \f[\frac{2C}{f_\pi} \left[{\rm tr} (\bar{R}p_\phi\!\!\!\!\!\!\!\!\!\not\,\,\,\,\,\,\,\phi B)\right]\f] * where \f$R\f$ is the field for the excited resonance, \f$\phi\f$ is the matrix * field for the pseudoscalar mesons and \f$B\f$ is the matrix field for the ground * state baryon octet. * * The above form is used for \f$\frac12^-\f$ excited * baryon resonances and the above form with * an additional \f$\gamma_5\f$ is used for excited \f$\frac12^+\f$ baryon resonances. * * For the decays of the spin-\f$\frac32\f$ resonances we use the form * * \f[\frac{2C}{f_\pi} \left[{\rm tr} (\bar{R}^\mu p_{\phi,\mu}\phi B)\right],\f] * where \f$R^\mu\f$ is the field for the excited resonance. This form is used for * the spin\f$\frac32^+\f$ resonances and this form with an additional \f$\gamma_5\f$ * for spin\f$\frac32^-\f$. * * This is one of a number of decayers based on \f$SU(3)\f$ symmetry which are * intended for the decay of excited baryons. * * @see Baryon1MesonDecayerBase * @see SU3BaryonOctetOctetPhotonDecayer * @see SU3BaryonDecupletOctetPhotonDecayer * @see SU3BaryonDecupletOctetScalarDecayer * @see SU3BaryonSingletOctetPhotonDecayer * @see SU3BaryonSingletOctetScalarDecayer * @see SU3BaryonOctetDecupletScalarDecayer * @see SU3BaryonOctetOctetScalarDecayer * */ class SU3BaryonSingletOctetScalarDecayer: public Baryon1MesonDecayerBase { public: /** * Default constructor. */ SU3BaryonSingletOctetScalarDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a scalar. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void halfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A,Complex& B) const; /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void threeHalfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A,Complex& B) const; //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<SU3BaryonSingletOctetScalarDecayer> initSU3BaryonSingletOctetScalarDecayer; /** * Private and non-existent assignment operator. */ SU3BaryonSingletOctetScalarDecayer & operator=(const SU3BaryonSingletOctetScalarDecayer &); private: /** * set-up the modes */ void setupModes(unsigned int) const; private: /** * the coupling */ double _c; /** * the relative parities of the two baryon multiplets */ bool _parity; /** * the pion decay constant */ Energy _fpi; /** * PDG codes for the various octet baryons */ //@{ /** * The PDG code for the \f$p\f$-like member of the outgoing octet. */ int _proton; /** * The PDG code for the \f$n\f$-like member of the outgoing octet. */ int _neutron; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ int _sigma0; /** * The PDG code for the \f$\Sigma^+\f$-like member of the outgoing octet. */ int _sigmap; /** * The PDG code for the \f$\Sigma^-\f$-like member of the outgoing octet. */ int _sigmam; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ int _lambda; /** * The PDG code for the \f$\Xi^0\f$-like member of the outgoing octet. */ int _xi0; /** * The PDG code for the \f$\Xi^-\f$-like member of the outgoing octet. */ int _xim; //@} /** * PDG code for the excited singlet \f$\Lambda\f$. */ int _elambda; /** * PDG code for the outgoing baryons */ mutable vector<int> _outgoingB; /** * PDG code for the outgoing mesons */ mutable vector<int> _outgoingM; /** * the maximum weight for the various modes */ vector<double> _maxweight; /** * The couplings for the different modes. */ mutable vector<InvEnergy> _prefactor; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SU3BaryonSingletOctetScalarDecayer. */ template <> struct BaseClassTrait<Herwig::SU3BaryonSingletOctetScalarDecayer,1> { /** Typedef of the base class of SU3BaryonSingletOctetScalarDecayer. */ typedef Herwig::Baryon1MesonDecayerBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SU3BaryonSingletOctetScalarDecayer> : public ClassTraitsBase<Herwig::SU3BaryonSingletOctetScalarDecayer> { /** Return the class name.*/ static string className() { return "Herwig::SU3BaryonSingletOctetScalarDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SU3BaryonSingletOctetScalarDecayer_H */ ������herwig++-2.6.0.orig/Decay/Baryon/SU3BaryonDecupletOctetPhotonDecayer.h������������������������������0000644�0001750�0001750�00000021072�11754474773�026367� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_SU3BaryonDecupletOctetPhotonDecayer_H #define HERWIG_SU3BaryonDecupletOctetPhotonDecayer_H // This is the declaration of the SU3BaryonDecupletOctetPhotonDecayer class. #include "Baryon1MesonDecayerBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>SU3BaryonDecupletOctetPhotonDecayer</code> class is designed for the decay * of a deculpet baryon to an octet baryon and a photon using the SU(3) conserving * term in the chiral lagrangian. * * The lagrangian is taken to be * \f[ \bar{B}_i^b\gamma^\nu\gamma_5\Delta^\mu_{jbc}Q_j\epsilon^{cij}F_{\mu\nu},\f] * where \f$B\f$ is the matrix field for the baryon octet, \f$\Delta\f$ is the field for * the decuplet, \f$Q\f$ is the charge matrix * \f[Q = \left(\begin{array}{ccc}\frac23&0&0\\ * 0&-\frac13&0\\ * 0&0&-\frac13 * \end{array}\right),\f] * and \f$F^{\mu\nu}\f$ is the electromagnetic field strength. This form is used when * the multiplets have the same parity and this form without the \f$\gamma_5\f$ if * the multiplets have opposite parity. * * This is one of a number of decayers based on \f$SU(3)\f$ symmetry which are * intended for the decay of excited baryons. * * @see Baryon1MesonDecayerBase * @see SU3BaryonOctetOctetPhotonDecayer * @see SU3BaryonDecupletOctetPhotonDecayer * @see SU3BaryonDecupletOctetScalarDecayer * @see SU3BaryonSingletOctetPhotonDecayer * @see SU3BaryonSingletOctetScalarDecayer * @see SU3BaryonOctetDecupletScalarDecayer * @see SU3BaryonOctetOctetScalarDecayer * */ class SU3BaryonDecupletOctetPhotonDecayer: public Baryon1MesonDecayerBase { public: /** * Default constructor. */ SU3BaryonDecupletOctetPhotonDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a vector. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param A3 The coupling \f$A_3\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. * @param B3 The coupling \f$B_3\f$ described above. */ virtual void threeHalfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A1,Complex& A2,Complex& A3, Complex& B1,Complex& B2,Complex& B3) const; //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<SU3BaryonDecupletOctetPhotonDecayer> initSU3BaryonDecupletOctetPhotonDecayer; /** * Private and non-existent assignment operator. */ SU3BaryonDecupletOctetPhotonDecayer & operator=(const SU3BaryonDecupletOctetPhotonDecayer &); private: /** * set-up the modes */ void setupModes(unsigned int) const; private: /** * the coupling */ InvEnergy C_; /** * the relative parities of the two baryon multiplets */ bool parity_; /** * PDG codes for the various octet baryons */ //@{ /** * The PDG code for the \f$p\f$-like member of the outgoing octet. */ int proton_; /** * The PDG code for the \f$n\f$-like member of the outgoing octet. */ int neutron_; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ int sigma0_; /** * The PDG code for the \f$\Sigma^+\f$-like member of the outgoing octet. */ int sigmap_; /** * The PDG code for the \f$\Sigma^-\f$-like member of the outgoing octet. */ int sigmam_; /** * The PDG code for the \f$\Sigma^0\f$-like member of the outgoing octet. */ int lambda_; /** * The PDG code for the \f$\Xi^0\f$-like member of the outgoing octet. */ int xi0_; /** * The PDG code for the \f$\Xi^-\f$-like member of the outgoing octet. */ int xim_; //@} /** * PDG codes for the various decuplet baryons */ //@{ /** * The PDG code for the \f$\Delta^{++}\f$-like member of the outgoing decuplet. */ int deltapp_; /** * The PDG code for the \f$\Delta^{+}\f$-like member of the outgoing decuplet. */ int deltap_; /** * The PDG code for the \f$\Delta^{0}\f$-like member of the outgoing decuplet. */ int delta0_; /** * The PDG code for the \f$\Delta^{-}\f$-like member of the outgoing decuplet. */ int deltam_; /** * The PDG code for the \f$\Sigma^{*+}\f$-like member of the outgoing decuplet. */ int sigmasp_; /** * The PDG code for the \f$\Sigma^{*0}\f$-like member of the outgoing decuplet. */ int sigmas0_; /** * The PDG code for the \f$\Sigma^{*-}\f$-like member of the outgoing decuplet. */ int sigmasm_; /** * The PDG code for the \f$\Omega^-\f$-like member of the outgoing decuplet. */ int omega_; /** * The PDG code for the \f$\Xi^{*-}\f$-like member of the outgoing decuplet. */ int xism_; /** * The PDG code for the \f$\Xi^{*0}\f$-like member of the outgoing decuplet. */ int xis0_; //@} /** * PDG code for the incoming baryons */ mutable vector<int> incomingB_; /** * PDG code for the outgoing baryons */ mutable vector<int> outgoingB_; /** * the maximum weight for the various modes */ vector<double> maxweight_; /** * The couplings for the different modes. */ mutable vector<InvEnergy> prefactor_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of SU3BaryonDecupletOctetPhotonDecayer. */ template <> struct BaseClassTrait<Herwig::SU3BaryonDecupletOctetPhotonDecayer,1> { /** Typedef of the base class of SU3BaryonDecupletOctetPhotonDecayer. */ typedef Herwig::Baryon1MesonDecayerBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SU3BaryonDecupletOctetPhotonDecayer> : public ClassTraitsBase<Herwig::SU3BaryonDecupletOctetPhotonDecayer> { /** Return the class name. */ static string className() { return "Herwig::SU3BaryonDecupletOctetPhotonDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_SU3BaryonDecupletOctetPhotonDecayer_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/NonLeptonicOmegaDecayer.h������������������������������������������0000644�0001750�0001750�00000016145�11754474773�024133� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_NonLeptonicOmegaDecayer_H #define HERWIG_NonLeptonicOmegaDecayer_H // This is the declaration of the NonLeptonicOmegaDecayer class. #include "Baryon1MesonDecayerBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>NonLeptonicOmegaDecayer</code> class is designed for the non-leptonic * weak decay of the Omega to a baryon from the lightest \f$SU(3)\f$ octet and a * pseudoscalar meson. The results are taken from hep-ph/9905398. * * due to problems with the size of the d-wave term and recent measurements giving * the opposite sign for the \f$\alpha\f$ parameter we have set this term to zero. * * @see Baryon1MesonDecayerBase. * */ class NonLeptonicOmegaDecayer: public Baryon1MesonDecayerBase { public: /** * Default constructor. */ NonLeptonicOmegaDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void threeHalfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A,Complex& B) const; //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<NonLeptonicOmegaDecayer> initNonLeptonicOmegaDecayer; /** * Private and non-existent assignment operator. */ NonLeptonicOmegaDecayer & operator=(const NonLeptonicOmegaDecayer &); private: /** * The \f$d^*\f$ coupling for the \f$B^*\f$ multiplet, this is \f$d^* /M_{B^*}\f$ * from the paper. */ double _dstar; /** * The \f$f^*\f$ coupling for the \f$B^*\f$ multiplet, this is \f$f^* /M_{B^*}\f$ * from the paper. */ double _fstar; /** * The \f$\omega_d\f$ coupling for the \f$R\f$ multiplet, this is \f$\omega_d/M_R\f$ * from the paper. */ double _omegad; /** * The \f$\omega_f\f$ coupling for the \f$R\f$ multiplet, this is \f$\omega_f/M_R\f$ * from the paper. */ double _omegaf; /** * The \f$\mathcal{C}_{B^*}\f$ coupling of the \f$B^*\f$ multiplet to the decuplet. */ double _cbstar; /** * The \f$s_c\f$ coupling of the \f$R\f$ multiplet to the decuplet. */ double _sc; /** * The \f$\mathcal{C}\f$ coupling of the decuplet to the ground state baryons. */ double _c; /** * The pion decay constant \f$f_\pi\f$. */ Energy _fpi; /** * The \f$h_\pi\f$ pion self-coupling. */ double _hpi; /** * The \f$h_c\f$ coupling. */ Energy _hc; /** * The \f$d\f$ coupling for the ground-state baryon multiplet. */ Energy _d; /** * The \f$f\f$ coupling for the ground-state baryon multiplet. */ Energy _f; /** * The mass of the \f$\Lambda^0\f$. */ Energy _mlambda; /** * The mass of the \f$\Xi\f$. */ Energy _mxi; /** * The mass of the \f$\Omega\f$. */ Energy _momega; /** * The mass of the \f$\Xi^*\f$. */ Energy _mxistar; /** * The mass of the \f$\pi^+\f$. */ Energy _mpip; /** * The mass of the \f$\pi^0\f$. */ Energy _mpi0; /** * The mass of the \f$K^+\f$. */ Energy _mkp; /** * The mass of the \f$K^0\f$. */ Energy _mk0; /** * The mass of the \f$B^*\f$ resonance, this is the \f$\frac12^+\f$ multiplet. */ Energy _mbstar; /** * The mass of the \f$R\f$ resonance, this is the \f$\frac12^-\f$ multiplet. */ Energy _mr; /** * use local values for the masses for the couplings */ bool _localmasses; /** * The PDG code for the incoming baryon. */ long _incomingB; /** * The PDG code for the outgoing baryon. */ vector<long> _outgoingB; /** * The PDG code for the outgoing meson. */ vector<long> _outgoingM; /** * The \f$A\f$ coefficient for the decays. */ vector<InvEnergy> _a; /** * The \f$B\f$ coefficient for the decays. */ vector<InvEnergy> _b; /** * The maximum weights for the decays. */ vector<double> _maxweight; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of NonLeptonicOmegaDecayer. */ template <> struct BaseClassTrait<Herwig::NonLeptonicOmegaDecayer,1> { /** Typedef of the base class of NonLeptonicOmegaDecayer. */ typedef Herwig::Baryon1MesonDecayerBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::NonLeptonicOmegaDecayer> : public ClassTraitsBase<Herwig::NonLeptonicOmegaDecayer> { /** Return the class name.*/ static string className() { return "Herwig::NonLeptonicOmegaDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_NonLeptonicOmegaDecayer_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/SU3BaryonDecupletOctetPhotonDecayer.cc�����������������������������0000644�0001750�0001750�00000031436�11754474773�026532� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the SU3BaryonDecupletOctetPhotonDecayer class. // #include "SU3BaryonDecupletOctetPhotonDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void SU3BaryonDecupletOctetPhotonDecayer::doinit() { Baryon1MesonDecayerBase::doinit(); // set up the decay modes setupModes(1); // set up the phase space and the couplings tPDVector extpart(3); DecayPhaseSpaceModePtr mode; double wgtmax; vector<double> wgt(0); for(unsigned int ix=0;ix<incomingB_.size();++ix) { extpart[0]=getParticleData(incomingB_[ix]); extpart[1]=getParticleData(outgoingB_[ix]); extpart[2]=getParticleData(ParticleID::gamma); mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); wgtmax= maxweight_.size()>numberModes() ? maxweight_[numberModes()] : 1.; addMode(mode,wgtmax,wgt); } } void SU3BaryonDecupletOctetPhotonDecayer::doinitrun() { Baryon1MesonDecayerBase::doinitrun(); if(initialize()) { maxweight_.clear(); for(unsigned int ix=0;ix<numberModes();++ix) maxweight_.push_back(mode(ix)->maxWeight()); } } SU3BaryonDecupletOctetPhotonDecayer::SU3BaryonDecupletOctetPhotonDecayer() { // the coupling C_=1.0/GeV; // the relative parities of the two baryon multiplets parity_=true; // PDG codes for the various octet baryons proton_ = 2212; neutron_ = 2112; sigma0_ = 3212; sigmap_ = 3222; sigmam_ = 3112; lambda_ = 3122; xi0_ = 3322; xim_ = 3312; // PDG codes for the various decuplet baryons deltapp_ = 2224; deltap_ = 2214; delta0_ = 2114; deltam_ = 1114; sigmasp_ = 3224; sigmas0_ = 3214; sigmasm_ = 3114; omega_ = 3334; xism_ = 3314; xis0_ = 3324; // intermediates generateIntermediates(false); } int SU3BaryonDecupletOctetPhotonDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { if(incomingB_.size()==0) setupModes(0); // must be two outgoing particles if(children.size()!=2||(children[0]->id()!=ParticleID::gamma&& children[1]->id()!=ParticleID::gamma)) return -1; // ids of the particles int id0(parent->id()); int id1(children[0]->id()); int id2(children[1]->id()); int iout = id1==ParticleID::gamma ? id2 : id1; unsigned int ix(0); cc=false; int imode(-1); do { if(id0==incomingB_[ix]) { if(iout==outgoingB_[ix]) { imode=ix; cc=false; } } else if(id0==-incomingB_[ix]) { if(iout==-outgoingB_[ix]) { imode=ix; cc=true; } } ++ix; } while(ix<incomingB_.size()&&imode<0); return imode; } void SU3BaryonDecupletOctetPhotonDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(C_,1./GeV) << parity_ << proton_ << neutron_ << sigma0_ << sigmap_ << sigmam_ << lambda_ << xi0_ << xim_ << deltapp_ << deltap_ << delta0_ << deltam_ << sigmasp_ << sigmas0_ << sigmasm_ << omega_ << xism_ << xis0_ << incomingB_ << outgoingB_ << maxweight_ << ounit(prefactor_,1./GeV); } void SU3BaryonDecupletOctetPhotonDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(C_,1./GeV) >> parity_ >> proton_ >> neutron_ >> sigma0_ >> sigmap_ >> sigmam_ >> lambda_ >> xi0_ >> xim_ >> deltapp_ >> deltap_ >> delta0_ >> deltam_ >> sigmasp_ >> sigmas0_ >> sigmasm_ >> omega_ >> xism_ >> xis0_ >> incomingB_ >> outgoingB_ >> maxweight_ >> iunit(prefactor_,1./GeV); } ClassDescription<SU3BaryonDecupletOctetPhotonDecayer> SU3BaryonDecupletOctetPhotonDecayer::initSU3BaryonDecupletOctetPhotonDecayer; // Definition of the static class description member. void SU3BaryonDecupletOctetPhotonDecayer::Init() { static ClassDocumentation<SU3BaryonDecupletOctetPhotonDecayer> documentation ("The SU3BaryonDecupletOctetPhotonDecayer class is designed for the" " decay of an SU(3) decuplet baryon to an SU(3) octet baryon and a photon."); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,InvEnergy> interfaceCcoupling ("Ccoupling", "The C coupling for the decuplet decays.", &SU3BaryonDecupletOctetPhotonDecayer::C_, 1.0/GeV, 1.0/GeV, -10.0/GeV, 10.0/GeV, false, false, true); static Switch<SU3BaryonDecupletOctetPhotonDecayer,bool> interfaceParity ("Parity", "The relative parities of the two multiplets.", &SU3BaryonDecupletOctetPhotonDecayer::parity_, true, false, false); static SwitchOption interfaceParitySame (interfaceParity, "Same", "The multiplets have the same parity.", true); static SwitchOption interfaceParityDifferent (interfaceParity, "Different", "The multiplets have different parities.", false); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceProton ("Proton", "The PDG code for the proton-like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::proton_, 2212, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceNeutron ("Neutron", "The PDG code for the neutron-like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::neutron_, 2112, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceSigmap ("Sigma+", "The PDG code for the Sigma+-like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::sigmap_, 3222, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceSigma0 ("Sigma0", "The PDG code for the Sigma0-like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::sigma0_, 3212, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceSigmam ("Sigma-", "The PDG code for the Sigma--like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::sigmam_, 3112, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceLambda ("Lambda", "The PDG code for the Lambda-like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::lambda_, 3122, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceXi0 ("Xi0", "The PDG code for the Xi0-like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::xi0_, 3322, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceXim ("Xi-", "The PDG code for the Xi--like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::xim_, 3312, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceDeltapp ("Delta++", "The PDG code for the Delta++ like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::deltapp_, 2224, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceDeltap ("Delta+", "The PDG code for the Delta+ like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::deltap_, 2214, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceDelta0 ("Delta0", "The PDG code for the Delta0 like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::delta0_, 2114, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceDeltam ("Delta-", "The PDG code for the Delta- like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::deltam_, 1114, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceSigmasp ("Sigma*+", "The PDG code for the Sigma*+ like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::sigmasp_, 3224, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceSigmas0 ("Sigma*0", "The PDG code for the Sigma*0 like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::sigmas0_, 3214, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceSigmasm ("Sigma*-", "The PDG code for the Sigma*- like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::sigmasm_, 3114, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceOmega ("Omega", "The PDG code for the Omega like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::omega_, 3334, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceXis0 ("Xi*0", "The PDG code for the Xi*0-like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::xis0_, 3324, 0, 1000000, false, false, true); static Parameter<SU3BaryonDecupletOctetPhotonDecayer,int> interfaceXism ("Xi*-", "The PDG code for the Xi*--like baryon.", &SU3BaryonDecupletOctetPhotonDecayer::xism_, 3314, 0, 1000000, false, false, true); static ParVector<SU3BaryonDecupletOctetPhotonDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &SU3BaryonDecupletOctetPhotonDecayer::maxweight_, 0, 0, 0, 0., 100., false, false, true); } // couplings for spin-1/2 to spin-3/2 spin-1 void SU3BaryonDecupletOctetPhotonDecayer:: threeHalfHalfVectorCoupling(int imode,Energy m0,Energy m1,Energy, Complex&A1,Complex&A2,Complex&A3, Complex&B1,Complex&B2,Complex&B3) const { A3=0.; B3=0.; if(parity_) { A1 = 0.; B1 = -prefactor_[imode]*(m0+m1); A2 = 0.; B2 = prefactor_[imode]*(m0+m1); } else { A1= prefactor_[imode]*(m0-m1); B1=0.; A2= prefactor_[imode]*(m0+m1); B2=0.; } } // set up the decay modes void SU3BaryonDecupletOctetPhotonDecayer::setupModes(unsigned int iopt) const { if(incomingB_.size()!=0&&iopt==0) return; if(iopt==1) { outgoingB_.clear(); incomingB_.clear(); } vector<InvEnergy> factor; vector<int> intemp,outtemp; double ortw(1./sqrt(12.)),orr(1./sqrt(3.)); // decays of the delta+ intemp.push_back(deltap_);outtemp.push_back(proton_); factor.push_back(C_*orr); // decays of the delta0 intemp.push_back(delta0_);outtemp.push_back(neutron_); factor.push_back(C_*orr); // sigma*+ intemp.push_back(sigmasp_);outtemp.push_back(sigmap_); factor.push_back(-C_*orr); // sigma*0 intemp.push_back(sigmas0_);outtemp.push_back(lambda_); factor.push_back(-C_*.5); intemp.push_back(sigmas0_);outtemp.push_back(sigma0_); factor.push_back(C_*ortw); // xi*0 intemp.push_back(xis0_);outtemp.push_back(xi0_); factor.push_back(-C_*orr); // set up the modes tPDVector extpart(2); for(unsigned int ix=0;ix<intemp.size();++ix) { if(intemp[ix]!=0&&outtemp[ix]!=0) { extpart[0]=getParticleData(intemp[ix]); extpart[1]=getParticleData(outtemp[ix]); if(extpart[0]->massMax()>extpart[1]->massMin()) { incomingB_.push_back(intemp[ix]); outgoingB_.push_back(outtemp[ix]); if(iopt==1) prefactor_.push_back(factor[ix]); } } } } void SU3BaryonDecupletOctetPhotonDecayer::dataBaseOutput(ofstream & output, bool header) const { if(header) output << "update decayers set parameters=\""; Baryon1MesonDecayerBase::dataBaseOutput(output,false); output << "newdef " << name() << ":Ccoupling " << C_*GeV<< "\n"; output << "newdef " << name() << ":Parity " << parity_<< "\n"; output << "newdef " << name() << ":Proton " << proton_ << "\n"; output << "newdef " << name() << ":Neutron " << neutron_ << "\n"; output << "newdef " << name() << ":Sigma+ " << sigmap_ << "\n"; output << "newdef " << name() << ":Sigma0 " << sigma0_ << "\n"; output << "newdef " << name() << ":Sigma- " << sigmam_ << "\n"; output << "newdef " << name() << ":Lambda " << lambda_ << "\n"; output << "newdef " << name() << ":Xi0 " << xi0_ << "\n"; output << "newdef " << name() << ":Xi- " << xim_ << "\n"; output << "newdef " << name() << ":Delta++ " << deltapp_ << "\n"; output << "newdef " << name() << ":Delta+ " << deltap_ << "\n"; output << "newdef " << name() << ":Delta0 " << delta0_ << "\n"; output << "newdef " << name() << ":Delta- " << deltam_ << "\n"; output << "newdef " << name() << ":Sigma*+ " << sigmasp_ << "\n"; output << "newdef " << name() << ":Sigma*0 " << sigmas0_ << "\n"; output << "newdef " << name() << ":Sigma*- " << sigmasm_ << "\n"; output << "newdef " << name() << ":Omega " << omega_ << "\n"; output << "newdef " << name() << ":Xi*0 " << xis0_ << "\n"; output << "newdef " << name() << ":Xi*- " << xism_ << "\n"; for(unsigned int ix=0;ix<maxweight_.size();++ix) { output << "insert " << name() << ":MaxWeight " << ix << " " << maxweight_[ix] << "\n"; } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/OmegaXiStarPionDecayer.h�������������������������������������������0000644�0001750�0001750�00000012102�11754474773�023730� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_OmegaXiStarPionDecayer_H #define HERWIG_OmegaXiStarPionDecayer_H // This is the declaration of the OmegaXiStarPionDecayer class. #include "Baryon1MesonDecayerBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The OmegaXiStarPionDecayer class implements the results of * hep-ph/0405162 for the weak decay of the \f$\Omega\f$ to the \f$\Xi^*\f$ and a pion. * * @see Baryon1MesonDecayerBase * */ class OmegaXiStarPionDecayer: public Baryon1MesonDecayerBase { public: /** * Default constructor. */ OmegaXiStarPionDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac32\f$ to spin-\f$\frac32\f$ and a scalar. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. */ virtual void threeHalfThreeHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A1,Complex& A2, Complex& B1,Complex& B2) const; //@} public: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<OmegaXiStarPionDecayer> initOmegaXiStarPionDecayer; /** * Private and non-existent assignment operator. */ OmegaXiStarPionDecayer & operator=(const OmegaXiStarPionDecayer &); private: /** * The \f$A_{\rm Comm}\f$ amplitude from hep-ph/0405162 */ double Acomm_; /** * The \f$A_P\f$ amplitude from hep-ph/0405162 */ double AP_; /** * The \f$A_S\f$ amplitude from hep-ph/0405162 */ double AS_; /** * The \f$B_P\f$ amplitude from hep-ph/0405162 */ double BP_; /** * The \f$B_S\f$ amplitude from hep-ph/0405162 */ double BS_; /** * PDG code of the incoming baryon */ int idin_; /** * PDG code of the outgoing baryon */ int idout_; /** * maximum weight for the decay */ double wgtmax_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of OmegaXiStarPionDecayer. */ template <> struct BaseClassTrait<Herwig::OmegaXiStarPionDecayer,1> { /** Typedef of the base class of OmegaXiStarPionDecayer. */ typedef Herwig::Baryon1MesonDecayerBase NthBase; }; template <> /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ struct ClassTraits<Herwig::OmegaXiStarPionDecayer> : public ClassTraitsBase<Herwig::OmegaXiStarPionDecayer> { /** Return the class name.*/ static string className() { return "Herwig::OmegaXiStarPionDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_OmegaXiStarPionDecayer_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/Baryon1MesonDecayerBase.fh�����������������������������������������0000644�0001750�0001750�00000000534�11754474773�024203� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the Baryon1MesonDecayerBase class. // #ifndef HERWIG_Baryon1MesonDecayerBase_FH #define HERWIG_Baryon1MesonDecayerBase_FH namespace Herwig { using namespace ThePEG; class Baryon1MesonDecayerBase; ThePEG_DECLARE_CLASS_POINTERS(Baryon1MesonDecayerBase,Baryon1MesonDecayerBasePtr); } #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/StrongHeavyBaryonDecayer.h�����������������������������������������0000644�0001750�0001750�00000017654�11754474773�024364� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_StrongHeavyBaryonDecayer_H #define HERWIG_StrongHeavyBaryonDecayer_H // This is the declaration of the StrongHeavyBaryonDecayer class. #include "Baryon1MesonDecayerBase.h" namespace Herwig { using namespace ThePEG; /** \ingroup Decay * * The <code>StrongHeavyBaryonDecayer</code> class implements the strong * decays of charm baryons using the results of hep-ph/9904421. * * @see Baryon1MesonDecayerBase. * */ class StrongHeavyBaryonDecayer: public Baryon1MesonDecayerBase { public: /** * Default constructor. */ StrongHeavyBaryonDecayer(); /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ static void Init(); protected: /** * Coupling Members. */ //@{ /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac12\f$ and a scalar. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void halfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A,Complex& B) const; /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar. * This method must be implemented in any class inheriting from this one * which includes \f$\frac12\to\frac32+0\f$ or \f$\frac32\to\frac12+0\f$ decays. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void halfThreeHalfScalarCoupling(int imode, Energy m0, Energy m1, Energy m2, Complex& A,Complex& B) const; /** * Couplings for spin-\f$\frac12\f$ to spin-\f$\frac32\f$ and a scalar. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A The coupling \f$A\f$ described above. * @param B The coupling \f$B\f$ described above. */ virtual void threeHalfHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A,Complex& B) const; /** * Couplings for spin-\f$\frac32\f$ to spin-\f$\frac32\f$ and a scalar. * This method must be implemented in any class inheriting from this one * which includes \f$\frac32\to\frac32+0\f$ decays. * @param imode The mode * @param m0 The mass of the decaying particle. * @param m1 The mass of the outgoing baryon. * @param m2 The mass of the outgoing meson. * @param A1 The coupling \f$A_1\f$ described above. * @param A2 The coupling \f$A_2\f$ described above. * @param B1 The coupling \f$B_1\f$ described above. * @param B2 The coupling \f$B_2\f$ described above. */ virtual void threeHalfThreeHalfScalarCoupling(int imode,Energy m0,Energy m1,Energy m2, Complex& A1,Complex& A2, Complex& B1,Complex& B2) const; //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<StrongHeavyBaryonDecayer> initStrongHeavyBaryonDecayer; /** * Private and non-existent assignment operator. */ StrongHeavyBaryonDecayer & operator=(const StrongHeavyBaryonDecayer &); private: /** * Strong coupling for the \f$\Sigma_c\to\Lambda_c\pi\f$. */ InvEnergy _gsigma_clambda_cpi; /** * strong coupling for \f$\Xi^*_c\to\Xi_c\pi\f$. */ InvEnergy _gxistar_cxi_cpi; /** * Strong coupling for \f$\Lambda_{c1}\to\Sigma_c\pi\f$. */ double _flambda_c1sigma_cpi; /** * Strong coupling for \f$\Xi_{c1}\to\Xi'_c\pi\f$. */ double _fxi_c1xi_cpi; /** * Strong coupling for \f$\Lambda_{c1}^*\to\Sigma_c\pi\f$. */ InvEnergy2 _flambda_c1starsigma_cpi; /** * Strong couplng for \f$\Xi_{c1}^*\to\Xi'_c\pi\f$. */ InvEnergy2 _fxi_c1starxi_cpi; /** * Strong coupling for the \f$\Sigma_b\to\Lambda_b\pi\f$. */ InvEnergy _gsigma_blambda_bpi; /** * Strong coupling for \f$\Xi^*_b \to \Xi_b \pi\f$. */ InvEnergy _gxistar_bxi_bpi; /** * Strong coupling for \f$\Lambda_{b1} \to \Sigma_b \pi\f$. */ double _flambda_b1sigma_bpi; /** * Strong coupling for \f$\Xi_{b1}\to\Xi'_b\pi\f$. */ double _fxi_b1xi_bpi; /** * Strong coupling for \f$\Lambda_{b1}^* \to \Sigma_b \pi\f$. */ InvEnergy2 _flambda_b1starsigma_bpi; /** * Strong couplng for \f$\Xi_{b1}^*\to\Xi'_b\pi\f$. */ InvEnergy2 _fxi_b1starxi_bpi; /** * PDG code for the incoming baryons */ vector<int> _incoming; /** * PDG code for the outgoing baryons */ vector<int> _outgoingB; /** * PDG code for the outgoing mesons. */ vector<int> _outgoingM; /** * max weight */ vector<double> _maxweight; /** * The couplings for the different modes. */ vector<double> _prefactor; /** * The type of matrix element */ vector<int> _modetype; /** * The initial size of the arrays */ unsigned int _initsize; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of StrongHeavyBaryonDecayer. */ template <> struct BaseClassTrait<Herwig::StrongHeavyBaryonDecayer,1> { /** Typedef of the base class of StrongHeavyBaryonDecayer. */ typedef Herwig::Baryon1MesonDecayerBase NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::StrongHeavyBaryonDecayer> : public ClassTraitsBase<Herwig::StrongHeavyBaryonDecayer> { /** Return the class name.*/ static string className() { return "Herwig::StrongHeavyBaryonDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwBaryonDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_StrongHeavyBaryonDecayer_H */ ������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/RadiativeHeavyBaryonDecayer.cc�������������������������������������0000644�0001750�0001750�00000031315�11754474773�025144� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the RadiativeHeavyBaryonDecayer class. // #include "RadiativeHeavyBaryonDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; void RadiativeHeavyBaryonDecayer::doinitrun() { Baryon1MesonDecayerBase::doinitrun(); if(initialize()) { _maxweight.clear(); for(unsigned int ix=0;ix<numberModes();++ix) { if(mode(ix)) _maxweight.push_back(mode(ix)->maxWeight()); else _maxweight.push_back(1.); } } } RadiativeHeavyBaryonDecayer::RadiativeHeavyBaryonDecayer() { // Xi_c' to Xi_c _incoming.push_back(4312);_outgoingB.push_back(4132);_maxweight.push_back(2.1); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(1.1004e-5/MeV); _incoming.push_back(4322);_outgoingB.push_back(4232);_maxweight.push_back(2.1); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(9.4102e-5/MeV); // Xi_b' to Xi_b _incoming.push_back(5312);_outgoingB.push_back(5132);_maxweight.push_back(2.1); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(1.1004e-5/MeV); _incoming.push_back(5322);_outgoingB.push_back(5232);_maxweight.push_back(2.1); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(9.4102e-5/MeV); // sigma_c*+ to Lambda_c+ _incoming.push_back(4214);_outgoingB.push_back(4122);_maxweight.push_back(0.05); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(3.76e-4/MeV); // sigma_b*+ to Lambda_b+ _incoming.push_back(5214);_outgoingB.push_back(5122);_maxweight.push_back(0.05); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(3.76e-4/MeV); // Xi_c* to Xi_c _incoming.push_back(4314);_outgoingB.push_back(4132);_maxweight.push_back(0.005); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(0.374e-4/MeV); _incoming.push_back(4324);_outgoingB.push_back(4232);_maxweight.push_back(0.05); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(3.2486e-4/MeV); // Xi_b* to Xi_b _incoming.push_back(5314);_outgoingB.push_back(5132);_maxweight.push_back(0.005); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(1.0132e-4/MeV); _incoming.push_back(5324);_outgoingB.push_back(5232);_maxweight.push_back(0.05); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(3.2486e-4/MeV); // sigma_c+ to Lambda_c+ _incoming.push_back(4212);_outgoingB.push_back(4122);_maxweight.push_back(0.1); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(1.088e-4/MeV); // sigma_b+ to Lambda_b+ _incoming.push_back(5212);_outgoingB.push_back(5122);_maxweight.push_back(0.1); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(1.088e-4/MeV); // sigma_c* to sigma_c _incoming.push_back(4224);_outgoingB.push_back(4222);_maxweight.push_back(0.008); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back( 3.337e-4/MeV); _incoming.push_back(4214);_outgoingB.push_back(4212);_maxweight.push_back(0.003); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back( 0.834e-4/MeV); _incoming.push_back(4114);_outgoingB.push_back(4112);_maxweight.push_back(0.0012); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(-1.688e-4/MeV); // Xi_c* to Xi'_c _incoming.push_back(4314);_outgoingB.push_back(4312);_maxweight.push_back(0.012); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(-6.110e-4/MeV); _incoming.push_back(4324);_outgoingB.push_back(4322);_maxweight.push_back(0.006); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(-3.607e-4/MeV); // Omega_c* to Omega_c _incoming.push_back(4334);_outgoingB.push_back(4332);_maxweight.push_back(2.4); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back( 1.055e-3/MeV); // sigma_b* to sigma_b _incoming.push_back(5224);_outgoingB.push_back(5222);_maxweight.push_back(0.06); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back( 9.945e-4/MeV); _incoming.push_back(5214);_outgoingB.push_back(5212);_maxweight.push_back(0.004); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back( 2.486e-4/MeV); _incoming.push_back(5114);_outgoingB.push_back(5112);_maxweight.push_back(0.015); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(-4.973e-4/MeV); // Xi_b* to Xi'_b _incoming.push_back(5314);_outgoingB.push_back(5312);_maxweight.push_back(0.007); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(-4.371e-4/MeV); _incoming.push_back(5324);_outgoingB.push_back(5322);_maxweight.push_back(0.005); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back( 3.088e-4/MeV); // Omega_b* to Omega_b _incoming.push_back(5334);_outgoingB.push_back(5332);_maxweight.push_back(2.1); _modetype.push_back(1);_e1coupling.push_back(ZERO);_m1coupling.push_back(-3.769e-4/MeV); // initial size of the arrays _initsize=_incoming.size(); // intermediates generateIntermediates(false); } void RadiativeHeavyBaryonDecayer::doinit() { Baryon1MesonDecayerBase::doinit(); // check the parameters are consistent unsigned int isize(_incoming.size()); if(isize!=_outgoingB.size() ||isize!=_maxweight.size()||isize!=_m1coupling.size()|| isize!=_e1coupling.size()||isize!=_modetype.size()) throw InitException() << "Inconsistent parameters in " << "RadiativeHeavyBaryonDecayer::doinit()" << Exception::abortnow; vector<double> wgt(0); tPDVector extpart(3); DecayPhaseSpaceModePtr mode; // the decay modes extpart[2]=getParticleData(ParticleID::gamma); for(unsigned int ix=0;ix<_incoming.size();++ix) { extpart[0]=getParticleData(_incoming[ix]); extpart[1]=getParticleData(_outgoingB[ix]); if(extpart[0]&&extpart[1]) { mode = new_ptr(DecayPhaseSpaceMode(extpart,this)); addMode(mode,_maxweight[ix],wgt); } else { addMode(DecayPhaseSpaceModePtr(),_maxweight[ix],wgt); } } } int RadiativeHeavyBaryonDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); // must be two outgoing particles if(children.size()!=2){return imode;} // ids of the particles int id0(parent->id()); int id1(children[0]->id()); int id2(children[1]->id()),ibaryon; if(id1==ParticleID::gamma){ibaryon=id2;} else if(id2==ParticleID::gamma){ibaryon=id1;} else {return imode;} unsigned int ix(0); do { if( id0== _incoming[ix]&&ibaryon== _outgoingB[ix]) { imode=ix; cc=false; } else if(id0==-_incoming[ix]&&ibaryon==-_outgoingB[ix]) { imode=ix; cc=true; } ++ix; } while(ix<_incoming.size()&&imode<0); return imode; } void RadiativeHeavyBaryonDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_m1coupling,1./GeV) << ounit(_e1coupling,1./GeV2) << _incoming << _outgoingB << _modetype << _maxweight; } void RadiativeHeavyBaryonDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_m1coupling,1./GeV) >> iunit(_e1coupling,1./GeV2) >> _incoming >> _outgoingB >> _modetype >> _maxweight; } ClassDescription<RadiativeHeavyBaryonDecayer> RadiativeHeavyBaryonDecayer::initRadiativeHeavyBaryonDecayer; // Definition of the static class description member. void RadiativeHeavyBaryonDecayer::Init() { static ClassDocumentation<RadiativeHeavyBaryonDecayer> documentation ("The RadiativeHeavyBaryonDecayer class is designed for the radiative decays of" " heavy baryons.", "The radiative decays of the heavy baryons were simulated using the results of" "\\cite{Ivanov:1999bk,Ivanov:1998wj}.", "\\bibitem{Ivanov:1999bk}\n" "M.~A.~Ivanov, J.~G.~Korner, V.~E.~Lyubovitskij and A.~G.~Rusetsky,\n" "Phys.\\ Rev.\\ D {\\bf 60} (1999) 094002\n" "[arXiv:hep-ph/9904421].\n" "%%CITATION = PHRVA,D60,094002;%%\n" "\\bibitem{Ivanov:1998wj}\n" "M.~A.~Ivanov, J.~G.~Korner and V.~E.~Lyubovitskij,\n" "Phys.\\ Lett.\\ B {\\bf 448} (1999) 143 [arXiv:hep-ph/9811370].\n" "%%CITATION = PHLTA,B448,143;%%\n"); static ParVector<RadiativeHeavyBaryonDecayer,InvEnergy> interfaceM1Coupling ("M1Coupling", "The coupling for the M1 modes", &RadiativeHeavyBaryonDecayer::_m1coupling, 1./MeV, -1, ZERO, ZERO, ZERO, false, false, false); static ParVector<RadiativeHeavyBaryonDecayer,InvEnergy2> interfaceE1Coupling ("E1Coupling", "The coupling for the E1 modes", &RadiativeHeavyBaryonDecayer::_e1coupling, 1./MeV/MeV, -1, ZERO, ZERO, ZERO, false, false, false); static ParVector<RadiativeHeavyBaryonDecayer,int> interfaceIncoming ("Incoming", "The PDG code of the incoming baryon", &RadiativeHeavyBaryonDecayer::_incoming, -1, 0, 0, 1000000, false, false, true); static ParVector<RadiativeHeavyBaryonDecayer,int> interfaceOutgoingB ("OutgoingB", "The PDG code of the outgoing baryon", &RadiativeHeavyBaryonDecayer::_outgoingB, -1, 0, 0, 1000000, false, false, true); static ParVector<RadiativeHeavyBaryonDecayer,int> interfaceModeType ("ModeType", "The type of mode. 0 is E1, 1 is M1", &RadiativeHeavyBaryonDecayer::_modetype, -1, 0, 0, 2, false, false, true); static ParVector<RadiativeHeavyBaryonDecayer,double> interfaceMaxWeight ("MaxWeight", "The maximum weight for the decay mode", &RadiativeHeavyBaryonDecayer::_maxweight, 0, 0, 0, 0., 100., false, false, true); } void RadiativeHeavyBaryonDecayer::dataBaseOutput(ofstream & output,bool header) const { if(header) output << "update decayers set parameters=\""; Baryon1MesonDecayerBase::dataBaseOutput(output,false); for(unsigned int ix=0;ix<_incoming.size();++ix) { if(ix<_initsize) { output << "newdef " << name() << ":M1Coupling " << ix << " " << _m1coupling[ix]*MeV << "\n"; output << "newdef " << name() << ":E1Coupling " << ix << " " << _e1coupling[ix]*MeV2 << "\n"; output << "newdef " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "newdef " << name() << ":OutgoingB " << ix << " " << _outgoingB[ix] << "\n"; output << "newdef " << name() << ":ModeType " << ix << " " << _modetype[ix] << "\n"; output << "newdef " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } else { output << "insert " << name() << ":M1Coupling " << ix << " " << _m1coupling[ix]*MeV << "\n"; output << "insert " << name() << ":E1Coupling " << ix << " " << _e1coupling[ix]*MeV2 << "\n"; output << "insert " << name() << ":Incoming " << ix << " " << _incoming[ix] << "\n"; output << "insert " << name() << ":OutgoingB " << ix << " " << _outgoingB[ix] << "\n"; output << "insert " << name() << ":ModeType " << ix << " " << _modetype[ix] << "\n"; output << "insert " << name() << ":MaxWeight " << ix << " " << _maxweight[ix] << "\n"; } } if(header) output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl; } void RadiativeHeavyBaryonDecayer::halfHalfVectorCoupling(int imode,Energy m0,Energy m1, Energy,Complex& A1, Complex& A2,Complex& B1, Complex& B2) const { useMe(); if(_modetype[imode]==0) { B1=-0.5*(sqr(m0) - sqr(m1))*_e1coupling[imode]; B2=- (m0+m1)*(m0+m1)*_e1coupling[imode]; A1=0.; A2=0.; } else if(_modetype[imode]==1) { A1=-2.*(m0+m1)*_m1coupling[imode]; A2= 4.*(m0+m1)*_m1coupling[imode]; B1=0.; B2=0.; } else { throw DecayIntegratorError() << "Unknown type of mode " << _modetype[imode] << " in RadiativeHeavyBaryonDecayer::" << "halfHalfVectorCoupling()" << Exception::abortnow; } } void RadiativeHeavyBaryonDecayer::threeHalfHalfVectorCoupling(int imode,Energy m0, Energy m1,Energy, Complex& A1,Complex& A2, Complex& A3,Complex& B1, Complex& B2, Complex& B3) const { useMe(); if(_modetype[imode]==0) { A1=-0.5*(m0*m0 - m1*m1)*_e1coupling[imode]; A3=- (m0+m1)*(m0+m1)*_e1coupling[imode]; A2=0.; B1=0.; B2=0.; B3=0.; } else if(_modetype[imode]==1) { B1=-(m0+m1)*_m1coupling[imode]; B2= (m0+m1)*_m1coupling[imode]; B3=0.; A1=0.; A2=0.; A3=0.; } else { throw DecayIntegratorError() << "Unknown type of mode " << _modetype[imode] << " in RadiativeHeavyBaryonDecayer::" << "threeHalfHalfVectorCoupling()" << Exception::abortnow; } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Baryon/BaryonFactorizedDecayer.cc�����������������������������������������0000644�0001750�0001750�00000066530�11754474773�024340� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the BaryonFactorizedDecayer class. // #include "BaryonFactorizedDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/RSSpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/RSSpinorBarWaveFunction.h" #include "Herwig++/Decay/DecayVertex.h" #include "ThePEG/Helicity/FermionSpinInfo.h" #include "ThePEG/Helicity/RSFermionSpinInfo.h" #include "ThePEG/StandardModel/StandardModelBase.h" using namespace Herwig; using namespace ThePEG::Helicity; BaryonFactorizedDecayer::BaryonFactorizedDecayer() { // default values taken from PRD56, 2799 _a1c= 1.1; _a2c=-0.5; _a1b= 1.0; _a2b= 0.28; // intermediates generateIntermediates(true); } void BaryonFactorizedDecayer::doinitrun() { _current->initrun(); _form->initrun(); DecayIntegrator::doinitrun(); _weights.clear();_wgtloc.clear();_wgtmax.clear(); unsigned int ix,iy; for(ix=0;ix<numberModes();++ix) { _wgtmax.push_back(mode(ix)->maxWeight()); _wgtloc.push_back(_weights.size()); for(iy=0;iy<mode(ix)->numberChannels();++iy) _weights.push_back(mode(ix)->channelWeight(iy)); } } void BaryonFactorizedDecayer::doinit() { DecayIntegrator::doinit(); // get the CKM matrix elements unsigned int ix,iy,iz,iform,icurr; // get the CKM matrix (unsquared for interference) Complex ckmmat[3][3]; vector< vector<Complex > > CKM(_theCKM->getUnsquaredMatrix(SM().families())); for(ix=0;ix<3;++ix){for(iy=0;iy<3;++iy){ckmmat[ix][iy]=CKM[ix][iy];}} // make sure the current and form factor got initialised _current->init(); _form->init(); // find all the possible modes vector<unsigned int> tformmap,tcurrmap; vector<int> inquark,outquark,currq,curra; vector<tPDVector> particles; tPDVector extpart,extpartb,ptemp; Energy min,minb; int iq,ia,spect1,spect2,inq,outq,id0,id1,Wcharge,ispin,ospin; for(iform=0;iform<_form->numberOfFactors();++iform) { // particles from the form factor extpart.resize(2); _form->particleID (iform,id0,id1); _form->formFactorInfo(iform,ispin,ospin,spect1,spect2,inq,outq); // particles from the form factor extpart[0]=getParticleData(id0); extpart[1]=getParticleData(id1); // the charge of the decay products Wcharge = extpart[0]->iCharge()-extpart[1]->iCharge(); // max mass for the particles in the current min = extpart[0]->massMax()-extpart[1]->massMin(); for(icurr=0;icurr<_current->numberOfModes();++icurr) { extpart.resize(2); // get the particles from the current _current->decayModeInfo(icurr,iq,ia); ptemp=_current->particles(Wcharge,icurr,iq,ia); minb=ZERO; for(iz=0;iz<ptemp.size();++iz) {extpart.push_back(ptemp[iz]);minb+=ptemp[iz]->massMin();} // valid mode if(extpart.size()>2&&minb<min&& (Wcharge!=0||(Wcharge==0&&((inq>0&&inq%2!=iq%2)|| (inq<0&&abs(inq)%2!=abs(ia)%2))))) { tformmap.push_back(iform);tcurrmap.push_back(icurr); particles.push_back(extpart); inquark.push_back(inq);outquark.push_back(outq); currq.push_back(iq);curra.push_back(ia); } // if the meson is neutral try the CC mode if(Wcharge==0&&iq!=-ia&&((inq>0&&inq%2!=iq%2)|| (inq<0&&abs(inq)%2!=abs(ia)%2))) { extpart.resize(2); ptemp=_current->particles(Wcharge,icurr,-ia,-iq); minb=ZERO; for(iz=0;iz<ptemp.size();++iz) {extpart.push_back(ptemp[iz]);minb+=ptemp[iz]->massMin();} if(extpart.size()>2&&minb<min) { tformmap.push_back(iform);tcurrmap.push_back(icurr); particles.push_back(extpart); inquark.push_back(inq);outquark.push_back(outq); currq.push_back(-ia);curra.push_back(-iq); } } } } vector<bool> modecc; vector<unsigned int> modeloc,ttform,ttcurr; vector<Complex> tCKM; Complex ckm; bool done; DecayPhaseSpaceModePtr mode; DecayPhaseSpaceChannelPtr channel; vector<double>::iterator start,end; double maxweight; vector<double> channelwgts; _formmap.clear(); _currentmap.clear(); // loop over the modes and find the dupliciates for(ix=0;ix<particles.size();++ix) { while(true) { if ( particles[ix].empty() ) {break;} findModes(ix,particles,modeloc,modecc); // if more than three particles only allow one diagram if ( particles[ix].size() > 3 && !modeloc.empty() ) {break;} // create the mode and set the particles as for the first instance mode=new_ptr(DecayPhaseSpaceMode(particles[ix],this)); channel = new_ptr(DecayPhaseSpaceChannel(mode)); channel->addIntermediate(particles[ix][0],0,0.0,1,-1); min = particles[ix][0]->massMax()-particles[ix][1]->massMin(); Wcharge = particles[ix][0]->iCharge()-particles[ix][1]->iCharge(); done=_current->createMode(Wcharge,tcurrmap[ix],mode,2,1,channel,min); if(!done){throw InitException() << "Failed to construct mode in " << "BaryonFactorizedDecayer::doinit()." << Exception::abortnow;} // set the parameters for the additional modes ttform.clear();ttcurr.clear(); ttform.push_back(tformmap[ix]);ttcurr.push_back(tcurrmap[ix]); for(iy=0;iy<modeloc.size();++iy) { ttform.push_back(tformmap[modeloc[iy]]); ttcurr.push_back(tcurrmap[modeloc[iy]]); } tCKM.clear(); for(iy=0;iy<ttcurr.size();++iy) { // get the quarks involved in the process if(iy==0) {iq=currq[ix];ia=curra[ix];inq=inquark[ix];outq=outquark[ix];} else { if(!modecc[iy-1]) { iq=currq[modeloc[iy-1]];ia=curra[modeloc[iy-1]]; inq=inquark[modeloc[iy-1]];outq=outquark[modeloc[iy-1]]; } else { ia=-currq[modeloc[iy-1]];iq=-curra[modeloc[iy-1]]; inq=-inquark[modeloc[iy-1]];outq=-outquark[modeloc[iy-1]]; } } _form->particleID(ttform[iy],id0,id1); Wcharge = getParticleData(id0)->iCharge()-getParticleData(id1)->iCharge(); ckm=1.; if(Wcharge!=0) { ckm=1.; if(abs(iq)%2==0){ckm *= conj(ckmmat[abs(iq)/2-1][(abs(ia)-1)/2]);} else{ckm *= conj(ckmmat[abs(ia)/2-1][(abs(iq)-1)/2]);} if(abs(inq)%2==0){ckm *= ckmmat[abs(inq)/2-1][(abs(outq)-1)/2];} else{ckm *= ckmmat[abs(outq)/2-1][(abs(inq)-1)/2];} if(abs(inq)==5){ckm*=_a1b;} else{ckm*=_a1c;} } else { ckm=1.; if(inq>0) { if(abs(inq)%2==0){ckm *= ckmmat[abs(inq)/2-1][(abs(iq)-1)/2];} else{ckm *= ckmmat[abs(iq)/2-1][(abs(inq)-1)/2];} if(abs(outq)%2==0) {ckm *= conj(ckmmat[abs(outq)/2-1][(abs(ia)-1)/2]);} else{ckm *= conj(ckmmat[abs(ia)/2-1][(abs(outq)-1)/2]);} } else { if(abs(inq)%2==0){ckm *= ckmmat[abs(inq)/2-1][(abs(ia)-1)/2];} else{ckm *= ckmmat[abs(ia)/2-1][(abs(inq)-1)/2];} if(abs(outq)%2==0) {ckm *= conj(ckmmat[abs(outq)/2-1][(abs(iq)-1)/2]);} else{ckm *= conj(ckmmat[abs(iq)/2-1][(abs(outq)-1)/2]);} } if(abs(inq)==5){ckm*=_a2b;} else{ckm*=_a2c;} } if((abs(inq)%2==0&&inq<0)||(abs(inq)%2!=0&&inq>0)){ckm=conj(ckm);} tCKM.push_back(ckm); } // add the parameters for the mode to the list _currentmap.push_back(ttcurr);_formmap.push_back(ttform); _factCKM.push_back(tCKM); // add the mode to the list if(_wgtmax.size()>numberModes()){maxweight=_wgtmax[numberModes()];} else{maxweight=0.;} // the weights for the channel if(_wgtloc.size()>numberModes()&& _wgtloc[numberModes()]+mode->numberChannels()<=_weights.size()) { start=_weights.begin()+_wgtloc[numberModes()]; end = start+mode->numberChannels(); channelwgts=vector<double>(start,end); } else {channelwgts.resize(mode->numberChannels(),1./(mode->numberChannels()));} // don't need channels for two body decays if(particles[ix].size()==3) { channelwgts.clear(); mode=new_ptr(DecayPhaseSpaceMode(particles[ix],this)); } addMode(mode,maxweight,channelwgts); // resize the duplicate modes to remove them for(iy=0;iy<modeloc.size();++iy){particles[modeloc[iy]]=tPDVector();} break; } } } bool BaryonFactorizedDecayer::accept(tcPDPtr parent, const tPDVector & children) const { bool allowed=false; unsigned int iform(0),ix; int idin(parent->id()),ibaryon,foundb,id0,id1; vector<int> idall,idother; tPDVector::const_iterator pit = children.begin(); tPDVector::const_iterator pend = children.end(); for( ; pit!=pend;++pit){idall.push_back((**pit).id());} // loop over the particles in the form factor do { _form->particleID(iform,id0,id1); ibaryon=0; if(id0==idin){ibaryon=id1;} else if(id0==-idin){ibaryon=-id1;} if(ibaryon!=0) { foundb=false; idother.clear(); for(ix=0;ix<idall.size();++ix) { if(idall[ix]==ibaryon){foundb=true;} else{idother.push_back(idall[ix]);} } if(foundb){allowed=_current->accept(idother);} } ++iform; } while(!allowed&&iform<_form->numberOfFactors()); return allowed; } int BaryonFactorizedDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { unsigned int ix,iy; int idin(parent->id()),ibaryon,foundb,id0,id1,icurr(-1),iform(0); vector<int> idall,idother; tPDVector::const_iterator pit = children.begin(); tPDVector::const_iterator pend = children.end(); for( ; pit!=pend;++pit){idall.push_back((**pit).id());} // loop over the particles in the form factor do { _form->particleID(iform,id0,id1); ibaryon=0; if(id0==idin){ibaryon=id1;} else if(id0==-idin){ibaryon=-id1;} ++iform; foundb=false; idother.clear(); for(ix=0;ix<idall.size();++ix) { if(idall[ix]==ibaryon){foundb=true;} else{idother.push_back(idall[ix]);} } if(foundb){icurr=_current->decayMode(idother);} } while(icurr<0&&iform<int(_form->numberOfFactors())); // now find the mode int imode=-1; ix=0; --iform; do { for(iy=0;iy<_currentmap[ix].size();++iy) {if(int(_currentmap[ix][iy])==icurr&&int(_formmap[ix][iy])==iform){imode=ix;}} ++ix; } while(imode<0&&ix<numberModes()); if(imode<0){throw DecayIntegratorError() << "Unable to find the mode in " << "BaryonFactorizedDecayer::decay()" << Exception::abortnow;} // generate the mode cc=id0!=idin; return imode; } void BaryonFactorizedDecayer::persistentOutput(PersistentOStream & os) const { os << _current << _form << _a1b << _a2b <<_a1c <<_a2c << _currentmap << _formmap << _factCKM << _wgtloc << _wgtmax << _weights << _theCKM; } void BaryonFactorizedDecayer::persistentInput(PersistentIStream & is, int) { is >> _current >> _form >> _a1b >> _a2b >>_a1c >>_a2c >> _currentmap >> _formmap >> _factCKM >> _wgtloc >> _wgtmax >> _weights >> _theCKM; } ClassDescription<BaryonFactorizedDecayer> BaryonFactorizedDecayer::initBaryonFactorizedDecayer; // Definition of the static class description member. void BaryonFactorizedDecayer::Init() { static ClassDocumentation<BaryonFactorizedDecayer> documentation ("The BaryonFactorizedDecayer class combines the baryon form factor and a" " weak current to perform a decay in the naive factorization approximation."); static Reference<BaryonFactorizedDecayer,WeakDecayCurrent> interfaceWeakCurrent ("Current", "The reference for the decay current to be used.", &BaryonFactorizedDecayer::_current, false, false, true, false, false); static ParVector<BaryonFactorizedDecayer,int> interfaceWeightLocation ("WeightLocation", "The locations of the weights for a given channel in the vector", &BaryonFactorizedDecayer::_wgtloc, 0, 0, 0, 0, 10000, false, false, true); static ParVector<BaryonFactorizedDecayer,double> interfaceWeightMax ("MaximumWeight", "The maximum weight for a given channel.", &BaryonFactorizedDecayer::_wgtmax, 0, 0, 0, 0., 100., false, false, true); static ParVector<BaryonFactorizedDecayer,double> interfaceWeights ("Weights", "The weights for the integration.", &BaryonFactorizedDecayer::_weights, 0, 0, 0, 0., 1., false, false, true); static Reference<BaryonFactorizedDecayer,BaryonFormFactor> interfaceFormFactor ("FormFactor", "The form-factor", &BaryonFactorizedDecayer::_form, true, true, true, false, false); static Parameter<BaryonFactorizedDecayer,double> interfacea1Bottom ("a1Bottom", "The factorization paramter a_1 for decays of bottom baryons", &BaryonFactorizedDecayer::_a1b, 1., -10.0, 10.0, false, false, true); static Parameter<BaryonFactorizedDecayer,double> interfacea2Bottom ("a2Bottom", "The factorization paramter a_2 for decays of bottom baryons", &BaryonFactorizedDecayer::_a2b, 0.28, -10.0, 10.0, false, false, true); static Parameter<BaryonFactorizedDecayer,double> interfacea1Charm ("a1Charm", "The factorization paramter a_1 for decays of charm baryons", &BaryonFactorizedDecayer::_a1c, 1.1, -10.0, 10.0, false, false, true); static Parameter<BaryonFactorizedDecayer,double> interfacea2Charm ("a2Charm", "The factorization paramter a_2 for decays of charm baryons", &BaryonFactorizedDecayer::_a2c, -0.5, -10.0, 10.0, false, false, true); static Reference<BaryonFactorizedDecayer,StandardCKM> interfaceCKM ("CKM", "Reference to the Standard Model object", &BaryonFactorizedDecayer::_theCKM, false, false, true, false); } double BaryonFactorizedDecayer::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { double me(0.); assert(inpart.dataPtr()->iSpin()==2); if(decay[0]->dataPtr()->iSpin()==2) me=halfHalf(ichan,inpart,decay,meopt); else if(decay[0]->dataPtr()->iSpin()==4) me=halfThreeHalf(ichan,inpart,decay,meopt); else assert(false); return me; } // matrix element for a 1/2 -> 1/2 decay double BaryonFactorizedDecayer::halfHalf(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { Energy scale; // extract the spins of the particles vector<PDT::Spin> spin; for(unsigned ix=0;ix<decay.size();++ix) spin.push_back(decay[ix]->dataPtr()->iSpin()); if(meopt==Initialize) { // spinors and rho if(inpart.id()>0) SpinorWaveFunction ::calculateWaveFunctions(_inHalf,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); else SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); ME(DecayMatrixElement(PDT::Spin1Half,spin)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(inpart.id()>0) { SpinorWaveFunction:: constructSpinInfo(_inHalf,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorBarWaveFunction::constructSpinInfo(_inHalfBar,decay[0],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(_inHalfBar,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorWaveFunction::constructSpinInfo(_inHalf,decay[0],outgoing,true); } ParticleVector::const_iterator start = decay.begin()+1, end = decay.end(); ParticleVector hadpart(start,end); _current->current(_currentmap[imode()][0], ichan,scale,hadpart,meopt); return 0.; } ME().zero(); // spinors for the decay product if(inpart.id()>0) { SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,decay[0],outgoing); } else { SpinorWaveFunction ::calculateWaveFunctions(_inHalf,decay[0],outgoing); } // get the information on the form-factor int id0(inpart.id()),id1(decay[0]->id()); // work out the value of q and calculate the form factors Lorentz5Momentum q(inpart.momentum()-decay[0]->momentum());q.rescaleMass(); Energy m0(inpart.mass()),m1(decay[0]->mass()); Energy2 q2(q.mass2()); Lorentz5Momentum sum(inpart.momentum()+decay[0]->momentum()); // calculate the baryon part of the current for the decay vector<LorentzPolarizationVectorE> baryon; Complex f1v,f2v,f3v,f1a,f2a,f3a; baryon.resize(4); Complex left,right; ParticleVector::const_iterator start,end; ParticleVector hadpart; vector<LorentzPolarizationVectorE> hadron; double pre(0.); unsigned int mhel,ix,iy,lhel; vector<unsigned int> constants,ihel; int itemp; unsigned int ibar; for(unsigned int mode=0;mode<_formmap[imode()].size();++mode) { // calculate the form factor piece _form->SpinHalfSpinHalfFormFactor(q2,_formmap[imode()][mode],id0,id1,m0,m1, f1v,f2v,f3v,f1a,f2a,f3a); left = f1v-f1a-f2v-double((m0-m1)/(m0+m1))*f2a; right = f1v+f1a-f2v+double((m0-m1)/(m0+m1))*f2a; for(ix=0;ix<2;++ix) { for(iy=0;iy<2;++iy) { LorentzPolarizationVectorE vtemp = _inHalf[ix].generalCurrent(_inHalfBar[iy],left,right); complex<Energy> vspin=_inHalf[ix].scalar(_inHalfBar[iy]); complex<Energy> aspin=_inHalf[ix].pseudoScalar(_inHalfBar[iy]); // the momentum like pieces if(inpart.id()>0) { vtemp+= (f2v*vspin+f2a*aspin)/(m0+m1)*sum; vtemp+= (f3v*vspin+f3a*aspin)/(m0+m1)*q; } else { vtemp+= (f2v*vspin-f2a*aspin)/(m0+m1)*sum; vtemp+= (f3v*vspin-f3a*aspin)/(m0+m1)*q; } if(inpart.id()>0){baryon[2*ix+iy]=vtemp;} else{baryon[2*iy+ix]=vtemp;} } } // construct the weak current start=decay.begin()+1; end =decay.end(); hadpart = ParticleVector(start,end); hadron=_current->current(_currentmap[imode()][mode], ichan,scale,hadpart,meopt); pre=pow(inpart.mass()/scale,int(hadpart.size()-2));pre*=pre; constants.resize(decay.size()+1);ihel.resize(decay.size()+1); itemp=1;ibar=0; for(int iz=int(decay.size()-1);iz>=0;--iz) { if(abs(decay[iz]->id())!=id1) { itemp *= decay[iz]->data().iSpin(); constants[iz]=itemp; } else ibar=iz; constants[decay.size()]=1; constants[ibar]=constants[ibar+1]; } for(mhel=0;mhel<baryon.size();++mhel) { ihel[0 ]=mhel/2; ihel[ibar+1]=mhel%2; for(lhel=0;lhel<hadron.size();++lhel) { // map the index for the hadrons to a helicity state for(ix=decay.size();ix>0;--ix) { if(ix-1!=ibar){ihel[ix]=(lhel%constants[ix-1])/constants[ix];}} ME()(ihel) += hadron[lhel].dot(baryon[mhel])* _factCKM[imode()][mode]*SM().fermiConstant(); } } } // return the answer return 0.5*pre*(ME().contract(_rho)).real(); } // matrix element for a 1/2 -> 3/2 decay double BaryonFactorizedDecayer::halfThreeHalf(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // spins Energy scale; vector<PDT::Spin> spin(decay.size()); for(unsigned int ix=0;ix<decay.size();++ix) spin[ix]=decay[ix]->data().iSpin(); // spinors etc for the decaying particle if(meopt==Initialize) { // spinors and rho if(inpart.id()>0) SpinorWaveFunction ::calculateWaveFunctions(_inHalf,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); else SpinorBarWaveFunction::calculateWaveFunctions(_inHalfBar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); ME(DecayMatrixElement(PDT::Spin1Half,spin)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(inpart.id()>0) { SpinorWaveFunction:: constructSpinInfo(_inHalf,const_ptr_cast<tPPtr>(&inpart),incoming,true); RSSpinorBarWaveFunction::constructSpinInfo(_inThreeHalfBar, decay[0],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(_inHalfBar,const_ptr_cast<tPPtr>(&inpart),incoming,true); RSSpinorWaveFunction::constructSpinInfo(_inThreeHalf, decay[0],outgoing,true); } ParticleVector::const_iterator start = decay.begin()+1, end = decay.end(); ParticleVector hadpart(start,end); _current->current(_currentmap[imode()][0], ichan,scale,hadpart,meopt); return 0.; } ME().zero(); // spinors for the decay product LorentzPolarizationVector in=UnitRemoval::InvE*inpart.momentum(); if(inpart.id()>0) { RSSpinorBarWaveFunction:: calculateWaveFunctions(_inThreeHalfBar,decay[0],outgoing); _inHalfBar.resize(_inThreeHalfBar.size()); for(unsigned int ix=0;ix<_inThreeHalfBar.size();++ix) _inHalfBar[ix] = _inThreeHalfBar[ix].dot(in); } else { RSSpinorWaveFunction:: calculateWaveFunctions(_inThreeHalf,decay[0],outgoing); _inHalf.resize(_inThreeHalf.size()); for(unsigned int ix=0;ix<_inThreeHalf.size();++ix) _inHalf[ix] = _inThreeHalf[ix].dot(in); } // get the information on the form-factor int id0(inpart.id()),id1(decay[0]->id()); // work out the value of q and calculate the form factors Lorentz5Momentum q(inpart.momentum()-decay[0]->momentum());q.rescaleMass(); Energy m0(inpart.mass()),m1(decay[0]->mass()); Energy2 q2(q.mass2()); Lorentz5Momentum sum(inpart.momentum()+decay[0]->momentum()); LorentzPolarizationVectorE baryon[4][2]; Complex f1v,f2v,f3v,f4v,f1a,f2a,f3a,f4a; LorentzPolarizationVector vtemp; complex<InvEnergy2> lS1,lS2,rS1,rS2; Complex left,right; complex<InvEnergy> lV,rV; InvEnergy ms(1./(m0+m1)); InvEnergy2 ms2(ms*ms); unsigned int ix,iy,ixa,iya; ParticleVector::const_iterator start,end; ParticleVector hadpart; vector<LorentzPolarizationVectorE> hadron; double pre(0.); vector<unsigned int> constants,ihel; int itemp; unsigned int ibar; for(unsigned int mode=0;mode<_formmap[imode()].size();++mode) { // calculate the form factors _form->SpinHalfSpinThreeHalfFormFactor(q2,_formmap[imode()][mode],id0,id1,m0,m1, f1v,f2v,f3v,f4v,f1a,f2a,f3a,f4a); if(inpart.id()>0) { left = f1a-f1v; right = f1a+f1v; lS1 = ms2*(f3a-f4a-f3v+f4v); rS1 = ms2*(f3a-f4a+f3v-f4v); lS2 = ms2*(f4a-f4v); rS2 = ms2*(f4a+f4v); lV = ms*(f2a-f2v); rV = ms*(f2a+f2v); } else { left = conj(f1a+f1v); right = conj(f1a-f1v); lS1 = ms2*conj(f3a-f4a+f3v-f4v); rS1 = ms2*conj(f3a-f4a-f3v+f4v); lS2 = ms2*conj(f4a-f4v); rS2 = ms2*conj(f4a+f4v); lV = ms *conj(f2a-f2v); rV = ms *conj(f2a+f2v); } // construct the vectors for the decay Complex scalar1,scalar2; complex<Energy> lfact,rfact; LorentzPolarizationVectorE tvec; LorentzPolarizationVector svec; for(iya=0;iya<4;++iya) { for(ixa=0;ixa<2;++ixa) { if(decay[0]->id()>0){ix=iya;iy=ixa;} else{ix=ixa;iy=iya;} // scalar like terms lfact = _inHalf[iy].leftScalar( _inHalfBar[ix]); rfact = _inHalf[iy].rightScalar(_inHalfBar[ix]); scalar1 = (lS1*lfact+rS1*rfact)*UnitRemoval::E; scalar2 = (lS2*lfact+rS2*rfact)*UnitRemoval::E; svec = _inHalf[iy].generalCurrent(_inHalfBar[ix],lV/ms,rV/ms)*ms; if(inpart.id()>0) { tvec=_inThreeHalfBar[ix].generalCurrent(_inHalf[iy],left,right); } else { tvec=_inThreeHalf[iy].generalCurrent(_inHalfBar[ix],left,right); } baryon[iya][ixa] = tvec+svec*UnitRemoval::E +scalar1*decay[0]->momentum()+scalar2*inpart.momentum(); } } start=decay.begin()+1; end =decay.end(); hadpart=ParticleVector(start,end); hadron=_current->current(_currentmap[imode()][mode], ichan,scale,hadpart,meopt); // prefactor pre = pow(inpart.mass()/scale,int(hadpart.size()-2));pre*=pre; // work out the mapping for the hadron vector constants.resize(decay.size()+1);ihel.resize(decay.size()+1); itemp=1;ibar=0; for(int ix=int(decay.size()-1);ix>=0;--ix) { if(abs(decay[ix]->id())!=id1) { itemp*=decay[ix]->data().iSpin(); constants[ix]=itemp; } else{ibar=ix;} } constants[decay.size()]=1; constants[ibar]=constants[ibar+1]; for(iya=0;iya<4;++iya) { ihel[1]=iya; for(ixa=0;ixa<2;++ixa) { ihel[0]=ixa; for(unsigned int lhel=0;lhel<hadron.size();++lhel) { // map the index for the hadrons to a helicity state for(unsigned int ix=decay.size();ix>0;--ix) {if(ix-1!=ibar){ihel[ix]=(lhel%constants[ix-1])/constants[ix];}} ME()(ihel) += hadron[lhel].dot(baryon[iya][ixa])* _factCKM[imode()][mode]*SM().fermiConstant(); } } } } // return the answer return 0.5*pre*(ME().contract(_rho)).real(); } void BaryonFactorizedDecayer::findModes(unsigned int imode, vector<tPDVector> & particles, vector<unsigned int> & loc, vector<bool> & cc) { unsigned int ix,iy,nfound,iz; // resize the vectors loc.clear();cc.clear(); // get the id's for the mode vector<int> id,idbar; int idtemp; bool found; for(ix=0;ix<particles[imode].size();++ix) { id.push_back(particles[imode][ix]->id()); if(particles[imode][ix]->CC()){idbar.push_back(particles[imode][ix]->CC()->id());} else{idbar.push_back(id[ix]);} } vector<bool> done(id.size(),false); // loop over the modes for(ix=0;ix<particles.size();++ix) { if(ix!=imode) { // the particle mode if(particles[ix][0]->id()==id[0]&&particles[ix].size()==id.size()) { nfound=1; for(iy=0;iy<id.size();++iy){done[iy]=false;} for(iy=1;iy<id.size();++iy) { idtemp=particles[ix][iy]->id(); iz=1;found=false; do{if(idtemp==id[iz]&&!done[iz]){done[iz]=true;found=true;}++iz;} while(iz<id.size()&&!found); if(found){++nfound;} } if(nfound==id.size()){cc.push_back(false);loc.push_back(ix);} } // the charge conjugate mode if(particles[ix][0]->id()==idbar[0]&&particles[ix].size()==idbar.size()) { nfound=1; for(iy=0;iy<idbar.size();++iy){done[iy]=false;} for(iy=1;iy<idbar.size();++iy) { idtemp=particles[ix][iy]->id(); iz=1;found=false; do{if(idtemp==idbar[iz]&&!done[iz]){done[iz]=true;found=true;}++iz;} while(iz<idbar.size()&&!found); if(found){++nfound;} } if(nfound==idbar.size()){cc.push_back(false);loc.push_back(ix);} } } } } // output the setup information for the particle database void BaryonFactorizedDecayer::dataBaseOutput(ofstream & output, bool header) const { unsigned int ix; if(header){output << "update decayers set parameters=\"";} DecayIntegrator::dataBaseOutput(output,false); output << "newdef " << name() << ":a1Bottom " << _a1b << "\n"; output << "newdef " << name() << ":a2Bottom " << _a2b << "\n"; output << "newdef " << name() << ":a1Charm " << _a1c << "\n"; output << "newdef " << name() << ":a2Charm " << _a2c << "\n"; output << "newdef " << name() << ":CKM " << _theCKM->name() << " \n"; for(ix=0;ix<_wgtloc.size();++ix) {output << "insert " << name() << ":WeightLocation " << ix << " " << _wgtloc[ix] << "\n";} for(ix=0;ix<_wgtmax.size();++ix) {output << "insert " << name() << ":MaximumWeight " << ix << " " << _wgtmax[ix] << "\n";} for(ix=0;ix<_weights.size();++ix) {output << "insert " << name() << ":Weights " << ix << " " << _weights[ix] << "\n";} _current->dataBaseOutput(output,false,true); output << "newdef " << name() << ":Current " << _current->name() << " \n"; _form->dataBaseOutput(output,false,true); output << "newdef " << name() << ":FormFactor " << _form->name() << " \n"; if(header){output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";" << endl;} } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/MamboDecayer.h������������������������������������������������������������0000644�0001750�0001750�00000021623�11754474774�020531� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MamboDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MamboDecayer_H #define HERWIG_MamboDecayer_H // // This is the declaration of the MamboDecayer class. // #include "HwDecayerBase.h" #include "ThePEG/PDT/DecayMode.h" namespace Herwig { using namespace ThePEG; /** * The MamboDecayer class inherits from the Decayer class in * ThePEG and implements the algorithm of R.Kleiss and * W.J.Stirling NPB 385 (1992) 413-432 for massive multi-particle phase-space * decays */ class MamboDecayer: public HwDecayerBase { public: /** * The default constructor. */ MamboDecayer() : _maxweight(10.) {} /** * Check if this decayer can perfom the decay for a particular mode * @param parent The decaying particle * @param children The decay products * @return true If this decayer can handle the given mode, otherwise false. */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * Perform the decay of the particle to the specified decay products * @param parent The decaying particle * @param children The decay products * @return a ParticleVector containing the decay products. */ virtual ParticleVector decay(const Particle & parent, const tPDVector & children) const; /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MamboDecayer> initMamboDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MamboDecayer & operator=(const MamboDecayer &); private: /** *Set array of mometum to particles *@param mom Momentum set to be distributed over phase-space *@param comEn The mass of the decaying particle *@return The weight of the configuration **/ double calculateMomentum(vector<Lorentz5Momentum> & mom, Energy comEn) const; /** * Set up the colour connections for the decay * @param parent The incoming particle * @param out The decay products */ void colourConnections(const Particle & parent, ParticleVector & out) const; /** @name Bessel Functions.*/ //@{ /** * Compute the values \f$K_0(x)/K_1(x)\f$ and it's derivative using * asymptotic expansion for large x values. * @param x The argument * @param f The value of the ratio * @param fp The value of the derivative ratio */ void BesselFns(const long double x, long double & f, long double & fp) const { assert(x>=0.); if( x < 10. ) { f = BesselK0(x)/BesselK1(x); fp = ( sqr(f)*x + f - x )/x; } else BesselIExpand(-x, f, fp); } /** * Compute the values \f$I_0(x)/I_1(x)\f$ and it's derivative using * asymptotic expansion. * @param x The argument * @param f The value of the ratio * @param fp The value of the derivative ratio */ void BesselIExpand(const long double x, long double & f, long double & fp) const { long double y = 1./x; f = 1.+ y*(_a0[0] + y*(_a0[1] + y*(_a0[2] + y*(_a0[3] + y*(_a0[4] + y*(_a0[5] + y*(_a0[6] + y*(_a0[7] + y*(_a0[8] + y*_a0[9] ))))))))); fp = -y*y*(_a1[0] + y*(_a1[1] + y*(_a1[2] + y*(_a1[3] + y*(_a1[4] + y*(_a1[5] + y*(_a1[6] + y*(_a1[7] + y*(_a1[8] + y*_a1[9] ))))))))); } /** * Modified Bessel function of first kind \f$I_0(x)\f$. *@param x Argument of Bessel Function **/ long double BesselI0(const long double x) const { long double y,ans; if(x < 3.75) { y = sqr(x/3.75); ans = 1. + y*(3.5156229 + y*(3.0899424 + y*(1.2067492 + y*(0.2659732 + y*(0.0360768+y*0.0045813))))); } else { y = (3.75/x); ans = (exp(x)/sqrt(x))*(0.39894228 + y*(0.01328592 + y*(0.00225319 + y*(-0.00157565 + y*(0.00916281 + y*(-0.02057706+y*(0.02635537+y*(-0.01647633+y*0.00392377)))))))); } return ans; } /** * Modified Bessel function of first kind \f$I_1(x)\f$. *@param x Argument of Bessel Function **/ long double BesselI1(const long double x) const { long double y,ans; if(x < 3.75) { y = sqr(x/3.75); ans = x*(0.5 + y*(0.87890594 + y*(0.51498869 + y*(0.15084934 + y*(0.02658733 + y*(0.00301532 + y*0.00032411)))))); } else { y = 3.75/x; ans = (0.39894228 + y*(-0.03988024 + y*(-0.00362018 + y*(0.00163801 + y*(-0.01031555 + y*(0.02282967 + y*(-0.02895312 + y*(0.01787654-y*0.00420059))))))))*(exp(x)/sqrt(x)); } return ans; } /** * Modified Bessel function of second kind \f$K_0(x)\f$. * @param x Argument of Bessel Function **/ long double BesselK0(const long double x) const { long double y,ans; if(x <= 2.0) { y = x*x/4.0; ans = -log(x/2.0)*BesselI0(x) - 0.57721566 + y*(0.42278420 + y*(0.23069756 + y*(0.03488590 + y*(0.00262698 + y*(0.00010750+y*0.00000740))))); } else { y = 2.0/x; ans = (1.25331414 + y*(-0.07832358 + y*(+0.02189568 + y*(-0.01062446 + y*(0.00587872 + y*(-0.00251540 + y*0.00053208))))))*(exp(-x)/sqrt(x)); } return ans; } /** * Modified Bessel function of second kind \f$K_1(x)\f$. * @param x Argument of Bessel Function **/ long double BesselK1(const long double x) const { long double y,ans; if(x <= 2.0) { y = x*x/4.; ans = log(x/2.)*BesselI1(x) + (1./x)*(1. + y*(0.15443144 + y*(-0.67278579 + y*(-0.18156897 + y*(-0.01919402+y*(-0.00110404-(y*0.00004686))))))); } else { y = 2./x; ans = (exp(-x)/sqrt(x))*(1.25331414 + y*(0.23498619 + y*(-0.03655620 + y*(0.01504268 + y*(-0.00780353 + y*(0.00325614+y*(-0.00068245))))))); } return ans; } //@} private: /** * Maximum weight */ double _maxweight; /** * Store coefficents for aysymptotic expansion of \f$\frac{I_0}{I_1}\f$ */ double _a0[10]; /** * Store data for aysymptotic expansion of the first derivative * \f$\frac{I_0}{I_1}\f$. */ double _a1[10]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MamboDecayer. */ template <> struct BaseClassTrait<Herwig::MamboDecayer,1> { /** Typedef of the first base class of MamboDecayer. */ typedef Herwig::HwDecayerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MamboDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MamboDecayer> : public ClassTraitsBase<Herwig::MamboDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::MamboDecayer"; } /** Return the name of the shared library be loaded to get * access to the MamboDecayer class and every other class it uses * (except the base class). */ static string library() { return "HwMamboDecay.so"; } }; /** @endcond */ } #endif /* HERWIG_MamboDecayer_H */ �������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/HwDecayerBase.h�����������������������������������������������������������0000644�0001750�0001750�00000015553�11754474774�020654� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HwDecayerBase.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_HwDecayerBase_H #define HERWIG_HwDecayerBase_H // // This is the declaration of the HwDecayerBase class. // #include "ThePEG/PDT/Decayer.h" #include "Herwig++/Shower/Base/Branching.h" #include "Herwig++/Shower/Base/ShowerKinematics.h" #include "Herwig++/Shower/Base/ShowerTree.h" #include "Herwig++/Shower/Base/HardTree.h" #include "HwDecayerBase.fh" namespace Herwig { using namespace ThePEG; /** * The HwDecayerBase class is the base class for Decayers in Herwig++. It inherits * from the Decayer class of ThePEG and implements additional functionality for the * output of the results to the particle database and initialization of the datbase. * * It also provide the option of specifying a class based on the DecayRadiationGenerator * which should be used to generate QED radiation in the decay * * @see \ref HwDecayerBaseInterfaces "The interfaces" * defined for HwDecayerBase. */ class HwDecayerBase: public Decayer { public: /** * The default constructor. */ HwDecayerBase() : _initialize(false), _dbOutput(false) {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Check if this decayer can perfom the decay specified by the * given decay mode. * @param dm the DecayMode describing the decay. * @return true if this decayer can handle the given mode, otherwise false. */ virtual bool accept(const DecayMode & dm) const; /** * Perform a decay for a given DecayMode and a given Particle instance. * @param dm the DecayMode describing the decay. * @param p the Particle instance to be decayed. * @return a ParticleVector containing the decay products. */ virtual ParticleVector decay(const DecayMode & dm, const Particle & p) const; //@} public: /** * Virtual members to be overridden by inheriting classes * which implement hard corrections */ //@{ /** * Has a POWHEG style correction */ virtual bool hasPOWHEGCorrection() {return false;} /** * Has an old fashioned ME correction */ virtual bool hasMECorrection() {return false;} /** * Initialize the ME correction */ virtual void initializeMECorrection(ShowerTreePtr , double & , double & ) {} /** * Apply the hard matrix element correction to a given hard process or decay */ virtual void applyHardMatrixElementCorrection(ShowerTreePtr) {} /** * Apply the soft matrix element correction * @param initial The particle from the hard process which started the * shower * @param parent The initial particle in the current branching * @param br The branching struct * @return If true the emission should be vetoed */ virtual bool softMatrixElementVeto(ShowerProgenitorPtr initial, ShowerParticlePtr parent, Branching br); /** * Apply the POWHEG style correction */ virtual HardTreePtr generateHardest(ShowerTreePtr) { return HardTreePtr(); } //@} protected: /** @name Virtual functions to replaced those from the Decayer class. * This is so that the decay and accept members of this class can handle all * the more complicated features of the DecayMode class */ //@{ /** * Check if this decayer can perfom the decay for a particular mode * @param parent The decaying particle * @param children The decay products * @return true If this decayer can handle the given mode, otherwise false. */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const = 0; /** * Perform the decay of the particle to the specified decay products * @param parent The decaying particle * @param children The decay products * @return a ParticleVector containing the decay products. */ virtual ParticleVector decay(const Particle & parent, const tPDVector & children) const = 0; //@} 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: /** * Functions for the Herwig decayer */ //@{ /** * Output the setup information for the particle database * @param os The stream to output the information to * @param header Whether or not to output the information for MySQL */ virtual void dataBaseOutput(ofstream & os,bool header) const = 0; /** * Access to the initialize variable */ bool initialize() const {return _initialize;} /** * Access the database output variable */ bool databaseOutput() const {return _dbOutput;} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<HwDecayerBase> initHwDecayerBase; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ HwDecayerBase & operator=(const HwDecayerBase &); private: /** * perform initialisation */ bool _initialize; /** * Print out database */ bool _dbOutput; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of HwDecayerBase. */ template <> struct BaseClassTrait<Herwig::HwDecayerBase,1> { /** Typedef of the first base class of HwDecayerBase. */ typedef Decayer NthBase; }; /** This template specialization informs ThePEG about the name of * the HwDecayerBase class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::HwDecayerBase> : public ClassTraitsBase<Herwig::HwDecayerBase> { /** Return a platform-independent class name */ static string className() { return "Herwig::HwDecayerBase"; } }; /** @endcond */ } #endif /* HERWIG_HwDecayerBase_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464204�017366� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/GeneralThreeBodyDecayer.h�����������������������������������������0000644�0001750�0001750�00000023214�11754474774�024234� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_GeneralThreeBodyDecayer_H #define HERWIG_GeneralThreeBodyDecayer_H // // This is the declaration of the GeneralThreeBodyDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Models/General/TBDiagram.h" #include "GeneralThreeBodyDecayer.fh" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the GeneralThreeBodyDecayer class. * * @see \ref GeneralThreeBodyDecayerInterfaces "The interfaces" * defined for GeneralThreeBodyDecayer. */ class GeneralThreeBodyDecayer: public DecayIntegrator { public: /** A ParticleData ptr and (possible) mass pair.*/ typedef pair<tcPDPtr, Energy> PMPair; public: /** * The default constructor. */ GeneralThreeBodyDecayer() : _nflow(999), _widthopt(1), _reftag(), _reftagcc(), _iflow(999), _intOpt(0), _relerr(1e-2) {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * For a given decay mode and a given particle instance, perform the * decay and return the decay products. As this is the base class this * is not implemented. * @return The vector of particles produced in the decay. */ virtual ParticleVector decay(const Particle & parent, const tPDVector & children) const; /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent,const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const = 0; /** * The matrix element to be integrated for the three-body decays as a function * of the invariant masses of pairs of the outgoing particles. * @param imode The mode for which the matrix element is needed. * @param q2 The scale, \e i.e. the mass squared of the decaying particle. * @param s3 The invariant mass squared of particles 1 and 2, \f$s_3=m^2_{12}\f$. * @param s2 The invariant mass squared of particles 1 and 3, \f$s_2=m^2_{13}\f$. * @param s1 The invariant mass squared of particles 2 and 3, \f$s_1=m^2_{23}\f$. * @param m1 The mass of the first outgoing particle. * @param m2 The mass of the second outgoing particle. * @param m3 The mass of the third outgoing particle. * @return The matrix element */ virtual double threeBodyMatrixElement(const int imode, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa First decay product. * @param outb Second decay product. * @param outc Third decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb, PMPair outc) const; /** * An overidden member to calculate a branching ratio for a certain * particle instance. * @param dm The DecayMode of the particle * @param p The particle object * @param oldbrat The branching fraction given in the DecayMode object */ virtual double brat(const DecayMode & dm, const Particle & p, double oldbrat) const; //@} /** * Set the diagrams */ void setDecayInfo(PDPtr incoming,vector<PDPtr> outgoing, const vector<TBDiagram> & process, const vector<DVector> & factors, const vector<DVector> & Ncfactors, const unsigned int ncf); 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 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(); //@} protected: /** * Access the TBDiagrams that store the required information * to create the diagrams */ const vector<TBDiagram> & getProcessInfo() const { return _diagrams; } /** * Incoming particle */ PDPtr incoming() const { return _incoming; } /** * Outgoing particles */ const vector<PDPtr> & outgoing() const { return _outgoing; } /** * Number of colour flows */ unsigned int numberOfFlows() const { return _nflow; } /** * Return the matrix of colour factors */ const vector<DVector> & getColourFactors() const { return _colour; } /** * Return the matrix of colour factors */ const vector<DVector> & getLargeNcColourFactors() const { return _colourLargeNC; } /** * Get the mapping between the phase-space channel and the diagram */ const vector<unsigned int> & diagramMap() const { return _diagmap; } /** * Option for the handling of the widths of the intermediate particles */ unsigned int widthOption() const { return _widthopt; } /** * Set colour connections * @param parent Parent particle * @param out Particle vector containing particles to * connect colour lines */ void colourConnections(const Particle & parent, const ParticleVector & out) const; /** * Method to construct the channels for the integrator to give the partial width * @param intype Types of the channels * @param inmass Mass for the channels * @param inwidth Width for the channels * @param inpow Power for the channels * @param inweights Weights for the channels */ void constructIntegratorChannels(vector<int> & intype, vector<Energy> & inmass, vector<Energy> & inwidth, vector<double> & inpow, vector<double> & inweights) const; /** * Set the colour flow * @param flow The value for the colour flow */ void colourFlow(unsigned int flow) const { _iflow = flow; } /** * Set the colour flow */ unsigned int const & colourFlow() const { return _iflow; } /** * Relative error for GQ integration */ double relativeError() const {return _relerr;} private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<GeneralThreeBodyDecayer> initGeneralThreeBodyDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GeneralThreeBodyDecayer & operator=(const GeneralThreeBodyDecayer &); private: /** * Store the incoming particle */ PDPtr _incoming; /** * Outgoing particles */ vector<PDPtr> _outgoing; /** * Store the diagrams for the decay */ vector<TBDiagram> _diagrams; /** * Map between the diagrams and the phase-space channels */ vector<unsigned int> _diagmap; /** * Store colour factors for ME calc. */ vector<DVector> _colour; /** * Store cololur factors for ME calc at large N_c */ vector<DVector> _colourLargeNC; /** * The number of colourflows. */ unsigned int _nflow; /** * Reference to object to calculate the partial width */ mutable WidthCalculatorBasePtr _widthcalc; /** * Option for the treatment of the widths */ unsigned int _widthopt; /** * Store a decay tag for this mode that can be tested when * trying to determine whether it can be generated by * this Decayer */ string _reftag; /** * Store a decay tag for the cc-mode that can be tested when * trying to determine whether it can be generated by * this Decayer */ string _reftagcc; /** * The colour flow */ mutable unsigned int _iflow; /** * Option for the construction of the gaussian integrator */ unsigned int _intOpt; /** * Relative error for GQ integration of partial width */ double _relerr; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of GeneralThreeBodyDecayer. */ template <> struct BaseClassTrait<Herwig::GeneralThreeBodyDecayer,1> { /** Typedef of the first base class of GeneralThreeBodyDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the GeneralThreeBodyDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::GeneralThreeBodyDecayer> : public ClassTraitsBase<Herwig::GeneralThreeBodyDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::GeneralThreeBodyDecayer"; } }; /** @endcond */ } #endif /* HERWIG_GeneralThreeBodyDecayer_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/FFVDecayer.h������������������������������������������������������0000644�0001750�0001750�00000011736�11754474774�021500� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFVDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFVDecayer_H #define HERWIG_FFVDecayer_H // // This is the declaration of the FFVDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::FFVVertexPtr; /** \ingroup Decay * The FFVDecayer class implements the decay of a fermion * to a fermion and a vector in a general model. It holds an FFVVertex * pointer that must be typecast from the VertexBase pointer held in * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see GeneralTwoBodyDecayer */ class FFVDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ FFVDecayer() {} public: /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FFVDecayer> initFFVDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFVDecayer & operator=(const FFVDecayer &); private: /** * Abstract pointer to AbstractFFVVertex */ AbstractFFVVertexPtr _abstractVertex; /** * Pointer to the perturbative vertex */ FFVVertexPtr _perturbativeVertex; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Spinor wavefunction */ mutable vector<SpinorWaveFunction> _wave ; /** * Barred spinor wavefunction */ mutable vector<SpinorBarWaveFunction> _wavebar; /** * Polarization vectors */ mutable vector<VectorWaveFunction> _vector; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FFVDecayer. */ template <> struct BaseClassTrait<Herwig::FFVDecayer,1> { /** Typedef of the first base class of FFVDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the FFVDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FFVDecayer> : public ClassTraitsBase<Herwig::FFVDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::FFVDecayer"; } }; /** @endcond */ } #endif /* HERWIG_FFVDecayer_H */ ����������������������������������herwig++-2.6.0.orig/Decay/General/GeneralCurrentDecayer.cc������������������������������������������0000644�0001750�0001750�00000012077�11754474774�024134� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // GeneralCurrentDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the GeneralCurrentDecayer class. // #include "GeneralCurrentDecayer.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" using namespace Herwig; void GeneralCurrentDecayer::persistentOutput(PersistentOStream & os) const { os << _theVertex << _inpart << _outpart << _currentOut << _current << ounit(_maxmass,GeV) << _mode << _wgtloc << _wgtmax << _weights; } void GeneralCurrentDecayer::persistentInput(PersistentIStream & is, int) { is >> _theVertex >> _inpart >> _outpart >> _currentOut >> _current >> iunit(_maxmass,GeV) >> _mode >> _wgtloc >> _wgtmax >> _weights; } AbstractClassDescription<GeneralCurrentDecayer> GeneralCurrentDecayer::initGeneralCurrentDecayer; // Definition of the static class description member. void GeneralCurrentDecayer::Init() { static ClassDocumentation<GeneralCurrentDecayer> documentation ("The GeneralCurrentDecayer class is designed to be the base class for all " "decays using the WeakDecayCurrents"); } void GeneralCurrentDecayer::setDecayInfo(PDPtr in, PDPtr out, const vector<tPDPtr> & outCurrent, VertexBasePtr vertex, WeakDecayCurrentPtr current, Energy maxmass) { _inpart = in; _outpart = out; _currentOut = outCurrent; _theVertex = vertex; _current = current; _maxmass = maxmass; } int GeneralCurrentDecayer::modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const { vector<long> id; id.push_back(parent->id()); for(unsigned int ix=0;ix<children.size();++ix) id.push_back(children[ix]->id()); return modeNumber(cc,id); } void GeneralCurrentDecayer::doinitrun() { _current->initrun(); DecayIntegrator::doinitrun(); } void GeneralCurrentDecayer::doinit() { DecayIntegrator::doinit(); // make sure the current got initialised _current->init(); // set up the phase-space channels DecayPhaseSpaceModePtr mode; DecayPhaseSpaceChannelPtr channel; tPDVector extpart; extpart.push_back(_inpart); extpart.push_back(_outpart); Energy mdiff(_inpart->mass()-_outpart->mass()); vector<double> channelwgts; int iq(0),ia(0); bool done; vector<double>::iterator start,end; for(unsigned int ix=0;ix<_current->numberOfModes();++ix) { // get the external particles for this mode extpart.resize(2); tPDVector ptemp=_current->particles(_inpart->iCharge()-_outpart->iCharge(),ix,iq,ia); // check this is the right mode if(ptemp.size()!=_currentOut.size()) continue; vector<bool> matched(ptemp.size(),false); bool match = true; for(unsigned int iy=0;iy<_currentOut.size();++iy) { bool found = false; for(unsigned int iz=0;iz<ptemp.size();++iz) { if(!matched[iz]&&ptemp[iz]==_currentOut[iy]) { found = true; matched[iz] = true; break; } } if(!found) { match = false; break; } } if(!match) continue; for(unsigned int iy=0;iy<ptemp.size();++iy) extpart.push_back(ptemp[iy]); // create the mode mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); // create the first piece of the channel channel = new_ptr(DecayPhaseSpaceChannel(mode)); channel->addIntermediate(extpart[0],0,0.0,-1,1); done=_current->createMode(_inpart->iCharge()-_outpart->iCharge(), ix,mode,2,1,channel,mdiff); if(done) { // the maximum weight and the channel weights // the weights for the channel if(_weights.empty()) { _weights.resize(mode->numberChannels(),1./(mode->numberChannels())); } _mode = ix; // special for the two body modes if(extpart.size()==3) { _weights.clear(); mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); } addMode(mode,_wgtmax,_weights); } break; } } int GeneralCurrentDecayer::modeNumber(bool & cc, vector<long> id) const { // incoming particle int idtemp[2]; tPDPtr p0=getParticleData(id[0]); idtemp[0] = p0->CC() ? -id[0] : id[0]; if(id [0]==_inpart->id()) cc=false; else if(idtemp[0]==_inpart->id()) cc=true ; else return -1; tPDPtr p1 = _outpart; if(cc&&p1->CC()) p1 = p1->CC(); // if this in the particles vector<long>::iterator iloc = std::find(++id.begin(), id.end(), p1->id()); if(idtemp[0]==id[0]&&iloc==id.end()) { iloc = std::find(++id.begin(), id.end(), p1->CC()->id()); } if(iloc==id.end()) return -1; vector<int> idother; for(vector<long>::iterator it=++id.begin();it!=id.end();++it) { if(it!=iloc) idother.push_back(*it); } unsigned int icurr=_current->decayMode(idother); if(_mode==icurr) return 0; else return -1; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/FFVCurrentDecayer.h�����������������������������������������������0000644�0001750�0001750�00000012502�11754474774�023033� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFVCurrentDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFVCurrentDecayer_H #define HERWIG_FFVCurrentDecayer_H // // This is the declaration of the FFVCurrentDecayer class. // #include "GeneralCurrentDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::FFVVertexPtr; /** * Here is the documentation of the FFVCurrentDecayer class. * * @see \ref FFVCurrentDecayerInterfaces "The interfaces" * defined for FFVCurrentDecayer. */ class FFVCurrentDecayer: public GeneralCurrentDecayer { public: /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart Pointer to incoming particle data object * @param outa Pointer to first outgoing particle data object * @param currout The outgoing particles from the current */ virtual Energy partialWidth(tPDPtr inpart, tPDPtr outa, vector<tPDPtr> currout); //@} 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(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans) ; /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FFVCurrentDecayer> initFFVCurrentDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFVCurrentDecayer & operator=(const FFVCurrentDecayer &); private: /** * Pointer to FFVVertex */ FFVVertexPtr _theFFVPtr; /** * Spinr density matrix */ mutable RhoDMatrix _rho; /** * Spinor wavefunction */ mutable vector<SpinorWaveFunction> _wave ; /** * Barred spinor wavefunction */ mutable vector<SpinorBarWaveFunction> _wavebar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FFVCurrentDecayer. */ template <> struct BaseClassTrait<Herwig::FFVCurrentDecayer,1> { /** Typedef of the first base class of FFVCurrentDecayer. */ typedef Herwig::GeneralCurrentDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the FFVCurrentDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FFVCurrentDecayer> : public ClassTraitsBase<Herwig::FFVCurrentDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::FFVCurrentDecayer"; } }; /** @endcond */ } #endif /* HERWIG_FFVCurrentDecayer_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/StoFFVDecayer.cc��������������������������������������������������0000644�0001750�0001750�00000025710�11754474774�022321� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the StoFFVDecayer class. // #include "StoFFVDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" #include <numeric> using namespace Herwig; using namespace ThePEG; using namespace ThePEG::Helicity; IBPtr StoFFVDecayer::clone() const { return new_ptr(*this); } IBPtr StoFFVDecayer::fullclone() const { return new_ptr(*this); } void StoFFVDecayer::persistentOutput(PersistentOStream & os) const { os << _sca << _fer << _vec; } void StoFFVDecayer::persistentInput(PersistentIStream & is, int) { is >> _sca >> _fer >> _vec; } ClassDescription<StoFFVDecayer> StoFFVDecayer::initStoFFVDecayer; // Definition of the static class description member. void StoFFVDecayer::Init() { static ClassDocumentation<StoFFVDecayer> documentation ("The StoFFVDecayer class implements the general decay of a scalar to " "a two fermions and a vector."); } WidthCalculatorBasePtr StoFFVDecayer:: threeBodyMEIntegrator(const DecayMode & ) const { vector<int> intype; vector<Energy> inmass,inwidth; vector<double> inpow,inweights; constructIntegratorChannels(intype,inmass,inwidth,inpow,inweights); return new_ptr(ThreeBodyAllOnCalculator<StoFFVDecayer> (inweights,intype,inmass,inwidth,inpow,*this,0, outgoing()[0]->mass(),outgoing()[1]->mass(), outgoing()[2]->mass(),relativeError())); } void StoFFVDecayer::doinit() { GeneralThreeBodyDecayer::doinit(); unsigned int ndiags = getProcessInfo().size(); _sca.resize(ndiags); _fer.resize(ndiags); _vec.resize(ndiags); for(unsigned int ix = 0;ix < ndiags; ++ix) { TBDiagram current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if( offshell->CC() ) offshell = offshell->CC(); if(offshell->iSpin() == PDT::Spin0) { AbstractVSSVertexPtr vert1 = dynamic_ptr_cast<AbstractVSSVertexPtr> (current.vertices.first); AbstractFFSVertexPtr vert2 = dynamic_ptr_cast<AbstractFFSVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a scalar diagram in StoFFVDecayer::doinit()" << Exception::runerror; _sca[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin1Half) { AbstractFFSVertexPtr vert1 = dynamic_ptr_cast<AbstractFFSVertexPtr> (current.vertices.first); AbstractFFVVertexPtr vert2 = dynamic_ptr_cast<AbstractFFVVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a fermion diagram in StoFFVDecayer::doinit()" << Exception::runerror; _fer[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin1) { AbstractVVSVertexPtr vert1 = dynamic_ptr_cast<AbstractVVSVertexPtr> (current.vertices.first); AbstractFFVVertexPtr vert2 = dynamic_ptr_cast<AbstractFFVVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a vector diagram in StoFFVDecayer::doinit()" << Exception::runerror; _vec[ix] = make_pair(vert1, vert2); } } } double StoFFVDecayer::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // particle or CC of particle bool cc = (*getProcessInfo().begin()).incoming != inpart.id(); // special handling or first/last call if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart), Helicity::incoming); _swave = ScalarWaveFunction(inpart.momentum(),inpart.dataPtr(), Helicity::incoming); } if(meopt==Terminate) { ScalarWaveFunction:: constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), Helicity::incoming,true); for(unsigned int ix=0;ix<decay.size();++ix) { if(decay[ix]->dataPtr()->iSpin()==PDT::Spin1) { VectorWaveFunction::constructSpinInfo(_outVector,decay[ix], Helicity::outgoing,true,false); } else { SpinorWaveFunction:: constructSpinInfo(_outspin[ix].first,decay[ix],Helicity::outgoing,true); } } } unsigned int ivec(0); bool massless(false); for(unsigned int ix = 0; ix < decay.size();++ix) { if(decay[ix]->dataPtr()->iSpin() == PDT::Spin1) { ivec = ix; massless = decay[ivec]->mass()==ZERO; VectorWaveFunction:: calculateWaveFunctions(_outVector, decay[ix], Helicity::outgoing,massless); } else { SpinorWaveFunction:: calculateWaveFunctions(_outspin[ix].first,decay[ix],Helicity::outgoing); _outspin[ix].second.resize(2); // Need a ubar and a v spinor if(_outspin[ix].first[0].wave().Type() == u_spinortype) { for(unsigned int iy = 0; iy < 2; ++iy) { _outspin[ix].second[iy] = _outspin[ix].first[iy].bar(); _outspin[ix].first[iy].conjugate(); } } else { for(unsigned int iy = 0; iy < 2; ++iy) { _outspin[ix].second[iy] = _outspin[ix].first[iy].bar(); _outspin[ix].second[iy].conjugate(); } } } } const vector<vector<double> > cfactors(getColourFactors()); const vector<vector<double> > nfactors(getLargeNcColourFactors()); Energy2 scale(sqr(inpart.mass())); const size_t ncf(numberOfFlows()); vector<Complex> flows(ncf, Complex(0.)), largeflows(ncf, Complex(0.)); // setup the DecayMatrixElement vector<DecayMatrixElement> mes(ncf,DecayMatrixElement(PDT::Spin0, ivec == 0 ? PDT::Spin1 : PDT::Spin1Half, ivec == 1 ? PDT::Spin1 : PDT::Spin1Half, ivec == 2 ? PDT::Spin1 : PDT::Spin1Half)); vector<DecayMatrixElement> mel(ncf,DecayMatrixElement(PDT::Spin0, ivec == 0 ? PDT::Spin1 : PDT::Spin1Half, ivec == 1 ? PDT::Spin1 : PDT::Spin1Half, ivec == 2 ? PDT::Spin1 : PDT::Spin1Half)); //the channel possiblities static const unsigned int out2[3] = {1,0,0}, out3[3] = {2,2,1}; for(unsigned int s1 = 0; s1 < 2; ++s1) { for(unsigned int s2 = 0; s2 < 2; ++s2) { for(unsigned int v1 = 0; v1 < 3; ++v1) { if(massless&&v1==1) ++v1; flows = vector<Complex>(ncf, Complex(0.)); largeflows = vector<Complex>(ncf, Complex(0.)); unsigned int idiag(0); for(vector<TBDiagram>::const_iterator dit=getProcessInfo().begin(); dit!=getProcessInfo().end();++dit) { // channels if selecting if( ichan >= 0 && diagramMap()[ichan] != idiag ) { ++idiag; continue; } tcPDPtr offshell = dit->intermediate; if(cc&&offshell->CC()) offshell=offshell->CC(); Complex diag; unsigned int o2(out2[dit->channelType]), o3(out3[dit->channelType]); double sign = (o3 < o2) ? 1. : -1.; // intermediate scalar if(offshell->iSpin() == PDT::Spin0) { ScalarWaveFunction inters = _sca[idiag].first-> evaluate(scale, widthOption(), offshell, _outVector[v1], _swave); unsigned int h1(s1),h2(s2); if(o2 > o3) swap(h1, h2); if(decay[o2]->id() < 0 && decay[o3]->id() > 0) { diag = -sign*_sca[idiag].second-> evaluate(scale,_outspin[o2].first[h1], _outspin[o3].second[h2],inters); } else { diag = sign*_sca[idiag].second-> evaluate(scale, _outspin[o3].first [h2], _outspin[o2].second[h1],inters); } } // intermediate fermion else if(offshell->iSpin() == PDT::Spin1Half) { int iferm = (decay[o2]->dataPtr()->iSpin() == PDT::Spin1Half) ? o2 : o3; unsigned int h1(s1),h2(s2); if(dit->channelType > iferm) swap(h1, h2); sign = iferm < dit->channelType ? 1. : -1.; if(decay[dit->channelType]->id() < 0 && decay[iferm]->id() > 0 ) { SpinorWaveFunction inters = _fer[idiag].first-> evaluate(scale,widthOption(),offshell, _outspin[dit->channelType].first[h1], _swave); diag = -sign*_fer[idiag].second-> evaluate(scale,inters,_outspin[iferm].second[h2], _outVector[v1]); } else { SpinorBarWaveFunction inters = _fer[idiag].first-> evaluate(scale,widthOption(),offshell, _outspin[dit->channelType].second[h1],_swave); diag = sign*_fer[idiag].second-> evaluate(scale,_outspin[iferm].first [h2],inters, _outVector[v1]); } } // intermediate vector else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interv = _vec[idiag].first-> evaluate(scale, widthOption(), offshell, _outVector[v1], _swave); unsigned int h1(s1),h2(s2); if(o2 > o3) swap(h1,h2); if(decay[o2]->id() < 0 && decay[o3]->id() > 0) { diag =-sign*_vec[idiag].second-> evaluate(scale, _outspin[o2].first[h1], _outspin[o3].second[h2], interv); } else { diag = sign*_vec[idiag].second-> evaluate(scale, _outspin[o3].first[h2], _outspin[o2].second[h1], interv); } } // unknown else throw Exception() << "Unknown intermediate in StoFFVDecayer::me2()" << Exception::runerror; // matrix element for the different colour flows if(ichan < 0) { for(unsigned iy = 0; iy < dit->colourFlow.size(); ++iy) { flows[dit->colourFlow[iy].first - 1] += dit->colourFlow[iy].second * diag; } for(unsigned iy = 0; iy < dit->largeNcColourFlow.size(); ++iy) { largeflows[dit->largeNcColourFlow[iy].first - 1] += dit->largeNcColourFlow[iy].second * diag; } } else { for(unsigned iy = 0; iy < dit->colourFlow.size(); ++iy) { if(dit->colourFlow[iy].first - 1 != colourFlow()) continue; flows[dit->colourFlow[iy].first - 1] += dit->colourFlow[iy].second * diag; } for(unsigned iy = 0; iy < dit->largeNcColourFlow.size(); ++iy) { if(dit->colourFlow[iy].first - 1!=colourFlow()) continue; largeflows[dit->largeNcColourFlow[iy].first - 1] += dit->largeNcColourFlow[iy].second * diag; } } ++idiag; } //end of diagrams // now add the flows to the me2 with appropriate colour factors for(unsigned int ix = 0; ix < ncf; ++ix) { if ( ivec == 0 ) { mes[ix](0, v1, s1, s2) = flows[ix]; mel[ix](0, v1, s1, s2) = largeflows[ix]; } else if( ivec == 1 ) { mes[ix](0, s1, v1, s2) = flows[ix]; mel[ix](0, s1, v1, s2) = largeflows[ix]; } else if( ivec == 2 ) { mes[ix](0, s1, s2, v1) = flows[ix]; mel[ix](0, s1, s2, v1) = largeflows[ix]; } } } } } double me2(0.); if(ichan < 0) { vector<double> pflows(ncf,0.); for(unsigned int ix = 0; ix < ncf; ++ix) { for(unsigned int iy = 0; iy < ncf; ++ iy) { double con = cfactors[ix][iy]*(mes[ix].contract(mes[iy],_rho)).real(); me2 += con; if(ix == iy) { con = nfactors[ix][iy]*(mel[ix].contract(mel[iy],_rho)).real(); pflows[ix] += con; } } } double ptotal(std::accumulate(pflows.begin(),pflows.end(),0.)); ptotal *= UseRandom::rnd(); for(unsigned int ix = 0;ix < pflows.size(); ++ix) { if(ptotal <= pflows[ix]) { colourFlow(ix); ME(mes[ix]); break; } ptotal -= pflows[ix]; } } else { unsigned int iflow = colourFlow(); me2 = nfactors[iflow][iflow]*(mel[iflow].contract(mel[iflow],_rho)).real(); } // return the matrix element squared return me2; } ��������������������������������������������������������herwig++-2.6.0.orig/Decay/General/SSVDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000010724�11754474774�021664� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SSVDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSVDecayer class. // #include "SSVDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr SSVDecayer::clone() const { return new_ptr(*this); } IBPtr SSVDecayer::fullclone() const { return new_ptr(*this); } void SSVDecayer::doinit() { _perturbativeVertex = dynamic_ptr_cast<VSSVertexPtr> (getVertex()); _abstractVertex = dynamic_ptr_cast<AbstractVSSVertexPtr>(getVertex()); GeneralTwoBodyDecayer::doinit(); } void SSVDecayer::persistentOutput(PersistentOStream & os) const { os << _abstractVertex << _perturbativeVertex; } void SSVDecayer::persistentInput(PersistentIStream & is, int) { is >> _abstractVertex >> _perturbativeVertex; } ClassDescription<SSVDecayer> SSVDecayer::initSSVDecayer; // Definition of the static class description member. void SSVDecayer::Init() { static ClassDocumentation<SSVDecayer> documentation ("This implements the decay of a scalar to a vector and a scalar"); } double SSVDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { unsigned int isc(0),ivec(1); if(decay[0]->dataPtr()->iSpin() != PDT::Spin0) swap(isc,ivec); if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); _swave = ScalarWaveFunction(inpart.momentum(),inpart.dataPtr(),incoming); if(ivec==1) ME(DecayMatrixElement(PDT::Spin0,PDT::Spin0,PDT::Spin1)); else ME(DecayMatrixElement(PDT::Spin0,PDT::Spin1,PDT::Spin0)); } if(meopt==Terminate) { ScalarWaveFunction:: constructSpinInfo(const_ptr_cast<tPPtr>(&inpart),incoming,true); ScalarWaveFunction:: constructSpinInfo(decay[isc],outgoing,true); VectorWaveFunction:: constructSpinInfo(_vector,decay[ivec],outgoing,true,false); } VectorWaveFunction:: calculateWaveFunctions(_vector,decay[ivec],outgoing,false); ScalarWaveFunction sca(decay[isc]->momentum(),decay[isc]->dataPtr(),outgoing); Energy2 scale(sqr(inpart.mass())); //make sure decay matrix element is in the correct order double output(0.); if(ivec == 0) { for(unsigned int ix = 0; ix < 3; ++ix) ME()(0, ix, 0) = _abstractVertex->evaluate(scale,_vector[ix],sca, _swave); } else { for(unsigned int ix = 0; ix < 3; ++ix) ME()(0, 0, ix) = _abstractVertex->evaluate(scale,_vector[ix],sca,_swave); } output = (ME().contract(_rho)).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(), decay[1]->dataPtr()); // return the answer return output; } Energy SSVDecayer:: partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(_perturbativeVertex) { double mu1sq(sqr(outa.second/inpart.second)), mu2sq(sqr(outb.second/inpart.second)); tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; if(outa.first->iSpin() == PDT::Spin0) { _perturbativeVertex->setCoupling(sqr(inpart.second), outb.first, outa.first,in); } else { swap(mu1sq,mu2sq); _perturbativeVertex->setCoupling(sqr(inpart.second), outa.first, outb.first,in); } double me2(0.); if(mu2sq == 0.) me2 = -2.*mu1sq - 2.; else me2 = ( sqr(mu2sq - mu1sq) - 2.*(mu2sq + mu1sq) + 1. )/mu2sq; Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.second, outa.second, outb.second); Energy output = pcm*me2*norm(_perturbativeVertex->norm())/8./Constants::pi; // colour factor output *= colourFactor(inpart.first,outa.first,outb.first); // return the answer return output; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } ��������������������������������������������herwig++-2.6.0.orig/Decay/General/SVVDecayer.h������������������������������������������������������0000644�0001750�0001750�00000012317�11754474774�021531� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SVVDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SVVDecayer_H #define HERWIG_SVVDecayer_H // // This is the declaration of the SVVDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.fh" #include "ThePEG/Helicity/Vertex/Scalar/VVSVertex.fh" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" namespace Herwig { using namespace ThePEG; using Helicity::VVSVertexPtr; /** \ingroup Decay * This SVVDecayer class implements the decay of a scalar to * 2 vector bosons using either the tree level VVSVertex or the loop vertex. * It inherits from * GeneralTwoBodyDecayer and implements the virtual member functions me2() * and partialWidth(). It also stores a pointer to the VVSVertex. * * @see GeneralTwoBodyDecayer * */ class SVVDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ SVVDecayer() {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<SVVDecayer> initSVVDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SVVDecayer & operator=(const SVVDecayer &); private: /** * Abstract pointer to general VVS vertex */ AbstractVVSVertexPtr _abstractVertex; /** * Pointer to the perturbative form */ VVSVertexPtr _perturbativeVertex; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Scalar wavefunction */ mutable Helicity::ScalarWaveFunction _swave; /** * Vector wavefunctions */ mutable vector<Helicity::VectorWaveFunction> _vectors[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SVVDecayer. */ template <> struct BaseClassTrait<Herwig::SVVDecayer,1> { /** Typedef of the first base class of SVVDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the SVVDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SVVDecayer> : public ClassTraitsBase<Herwig::SVVDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::SVVDecayer"; } }; /** @endcond */ } #endif /* HERWIG_SVVDecayer_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/SVVDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000010570�11754474774�021666� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SVVDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SVVDecayer class. // #include "SVVDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/Vertex/Scalar/VVSVertex.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "Herwig++/Utilities/Kinematics.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr SVVDecayer::clone() const { return new_ptr(*this); } IBPtr SVVDecayer::fullclone() const { return new_ptr(*this); } void SVVDecayer::doinit() { GeneralTwoBodyDecayer::doinit(); _abstractVertex = dynamic_ptr_cast<AbstractVVSVertexPtr>(getVertex()); _perturbativeVertex = dynamic_ptr_cast<VVSVertexPtr >(getVertex()); } void SVVDecayer::doinitrun() { getVertex()->initrun(); GeneralTwoBodyDecayer::doinitrun(); } void SVVDecayer::persistentOutput(PersistentOStream & os) const { os << _abstractVertex << _perturbativeVertex; } void SVVDecayer::persistentInput(PersistentIStream & is, int) { is >> _abstractVertex >> _perturbativeVertex; } ClassDescription<SVVDecayer> SVVDecayer::initSVVDecayer; // Definition of the static class description member. void SVVDecayer::Init() { static ClassDocumentation<SVVDecayer> documentation ("This implements the decay of a scalar to 2 vector bosons."); } double SVVDecayer::me2(const int , const Particle & inpart, const ParticleVector& decay, MEOption meopt) const { bool photon[2]; for(unsigned int ix=0;ix<2;++ix) photon[ix] = decay[ix]->mass()==ZERO; if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); _swave = ScalarWaveFunction(inpart.momentum(),inpart.dataPtr(),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin1,PDT::Spin1)); } if(meopt==Terminate) { ScalarWaveFunction:: constructSpinInfo(const_ptr_cast<tPPtr>(&inpart),incoming,true); for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction:: constructSpinInfo(_vectors[ix],decay[ix],outgoing,true,photon[ix]); } for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction:: calculateWaveFunctions(_vectors[ix],decay[ix],outgoing,photon[ix]); Energy2 scale(sqr(inpart.mass())); unsigned int iv1,iv2; for(iv2 = 0; iv2 < 3; ++iv2) { if( photon[1] && iv2 == 1 ) ++iv2; for(iv1=0;iv1<3;++iv1) { if( photon[0] && iv1 == 1) ++iv1; ME()(0, iv1, iv2) = _abstractVertex->evaluate(scale,_vectors[0][iv1], _vectors[1][iv2],_swave); } } double output = ME().contract(_rho).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(), decay[1]->dataPtr()); // return the answer return output; } Energy SVVDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(_perturbativeVertex) { Energy2 scale(sqr(inpart.second)); tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; _perturbativeVertex->setCoupling(scale, outa.first , outb.first, in); double mu1sq = sqr(outa.second/inpart.second); double mu2sq = sqr(outb.second/inpart.second); double m1pm2 = mu1sq + mu2sq; double me2(0.); if( mu1sq > 0. && mu2sq > 0.) me2 = ( m1pm2*(m1pm2 - 2.) + 8.*mu1sq*mu2sq + 1.)/4./mu1sq/mu2sq; else if( mu1sq == 0. || mu2sq == 0. ) me2 = 3.; else me2 = 4.; Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.second,outa.second, outb.second); Energy output = norm(_perturbativeVertex->norm())* me2*pcm/(8*Constants::pi)/scale*UnitRemoval::E2; // colour factor output *= colourFactor(inpart.first,outa.first,outb.first); // return the answer return output; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } ����������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/TFFDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000010372�11754474774�021627� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TFFDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TFFDecayer class. // #include "TFFDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/Utilities/Kinematics.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr TFFDecayer::clone() const { return new_ptr(*this); } IBPtr TFFDecayer::fullclone() const { return new_ptr(*this); } void TFFDecayer::doinit() { _perturbativeVertex = dynamic_ptr_cast<FFTVertexPtr> (getVertex()); _abstractVertex = dynamic_ptr_cast<AbstractFFTVertexPtr>(getVertex()); GeneralTwoBodyDecayer::doinit(); } void TFFDecayer::persistentOutput(PersistentOStream & os) const { os << _abstractVertex << _perturbativeVertex; } void TFFDecayer::persistentInput(PersistentIStream & is, int) { is >> _abstractVertex >> _perturbativeVertex; } ClassDescription<TFFDecayer> TFFDecayer::initTFFDecayer; // Definition of the static class description member. void TFFDecayer::Init() { static ClassDocumentation<TFFDecayer> documentation ("The TFFDecayer class implements the decay of a tensor particle " "to 2 fermions "); } double TFFDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { unsigned int iferm(0),ianti(1); if(decay[0]->id()>=0) swap(iferm,ianti); if(meopt==Initialize) { TensorWaveFunction:: calculateWaveFunctions(_tensors,_rho,const_ptr_cast<tPPtr>(&inpart), incoming,false); ME(DecayMatrixElement(PDT::Spin2,PDT::Spin1Half,PDT::Spin1Half)); } if(meopt==Terminate) { TensorWaveFunction:: constructSpinInfo(_tensors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); SpinorBarWaveFunction:: constructSpinInfo(_wavebar,decay[iferm],outgoing,true); SpinorWaveFunction:: constructSpinInfo(_wave ,decay[ianti],outgoing,true); return 0.; } SpinorBarWaveFunction:: calculateWaveFunctions(_wavebar,decay[iferm],outgoing); SpinorWaveFunction:: calculateWaveFunctions(_wave ,decay[ianti],outgoing); Energy2 scale(sqr(inpart.mass())); unsigned int thel,fhel,ahel; for(thel=0;thel<5;++thel) { for(fhel=0;fhel<2;++fhel) { for(ahel=0;ahel<2;++ahel) { if(iferm > ianti) { ME()(thel,fhel,ahel) = _abstractVertex->evaluate(scale,_wave[ahel], _wavebar[fhel],_tensors[thel]); } else { ME()(thel,ahel,fhel) = _abstractVertex->evaluate(scale,_wave[ahel], _wavebar[fhel],_tensors[thel]); } } } } double output = (ME().contract(_rho)).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(), decay[1]->dataPtr()); // return the answer return output; } Energy TFFDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(_perturbativeVertex) { Energy2 scale = sqr(inpart.second); tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; _perturbativeVertex->setCoupling(scale, in, outa.first, outb.first); double musq = sqr(outa.second/inpart.second); double b = sqrt(1- 4.*musq); double me2 = b*b*(5-2*b*b)*scale/120.*UnitRemoval::InvE2; Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.second,outa.second, outb.second); Energy output = norm(_perturbativeVertex->norm())*me2*pcm/(8.*Constants::pi); // colour factor output *= colourFactor(inpart.first,outa.first,outb.first); // return the answer return output; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/FFVCurrentDecayer.cc����������������������������������������������0000644�0001750�0001750�00000014774�11754474774�023206� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFVCurrentDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFVCurrentDecayer class. // #include "FFVCurrentDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/StandardModel/StandardModelBase.h" using namespace Herwig; using ThePEG::Helicity::u_spinortype; using ThePEG::Helicity::v_spinortype; using ThePEG::Helicity::VectorWaveFunction; using ThePEG::Helicity::SpinorWaveFunction; using ThePEG::Helicity::SpinorBarWaveFunction; using ThePEG::Helicity::Direction; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; IBPtr FFVCurrentDecayer::clone() const { return new_ptr(*this); } IBPtr FFVCurrentDecayer::fullclone() const { return new_ptr(*this); } void FFVCurrentDecayer::doinit() { _theFFVPtr = dynamic_ptr_cast<FFVVertexPtr>(getVertex()); GeneralCurrentDecayer::doinit(); } void FFVCurrentDecayer::rebind(const TranslationMap & trans) { _theFFVPtr = trans.translate(_theFFVPtr); GeneralCurrentDecayer::rebind(trans); } IVector FFVCurrentDecayer::getReferences() { IVector ret = GeneralCurrentDecayer::getReferences(); ret.push_back(_theFFVPtr); return ret; } void FFVCurrentDecayer::persistentOutput(PersistentOStream & os) const { os << _theFFVPtr; } void FFVCurrentDecayer::persistentInput(PersistentIStream & is, int) { is >> _theFFVPtr; } ClassDescription<FFVCurrentDecayer> FFVCurrentDecayer::initFFVCurrentDecayer; // Definition of the static class description member. void FFVCurrentDecayer::Init() { static ClassDocumentation<FFVCurrentDecayer> documentation ("There is no documentation for the FFVCurrentDecayer class"); } double FFVCurrentDecayer::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // get the particles for the hadronic curret Energy q; ParticleVector hadpart(decay.begin()+1,decay.end()); // fermion types int itype[2]; if(inpart.dataPtr()->CC()) itype[0] = inpart.id() > 0 ? 0 : 1; else itype[0] = 2; if(decay[0]->dataPtr()->CC()) itype[1] = decay[0]->id() > 0 ? 0 : 1; else itype[1] = 2; //Need to use different barred or unbarred spinors depending on //whether particle is cc or not. bool ferm(itype[0] == 0 || itype[1] == 0 || (itype[0] == 2 && itype[1] == 2)); if(meopt==Initialize) { // spinors and rho if(ferm) { SpinorWaveFunction ::calculateWaveFunctions(_wave,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); if(_wave[0].wave().Type() != u_spinortype) for(unsigned int ix = 0; ix < 2; ++ix) _wave [ix].conjugate(); } else { SpinorBarWaveFunction::calculateWaveFunctions(_wavebar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); if(_wavebar[0].wave().Type() != v_spinortype) for(unsigned int ix = 0; ix < 2; ++ix) _wavebar[ix].conjugate(); } } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(ferm) { SpinorWaveFunction:: constructSpinInfo(_wave,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorBarWaveFunction::constructSpinInfo(_wavebar,decay[0],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(_wavebar,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorWaveFunction::constructSpinInfo(_wave,decay[0],outgoing,true); } weakCurrent()->current(mode(),ichan,q,hadpart,meopt); return 0.; } Energy2 scale(sqr(inpart.mass())); if(ferm) SpinorBarWaveFunction:: calculateWaveFunctions(_wavebar,decay[0],outgoing); else SpinorWaveFunction:: calculateWaveFunctions(_wave ,decay[0],outgoing); // calculate the hadron current vector<LorentzPolarizationVectorE> hadron(weakCurrent()->current(mode(),ichan,q,hadpart,meopt)); // prefactor double pre = sqr(pow(inpart.mass()/q,int(hadpart.size()-2))); // work out the mapping for the hadron vector vector<unsigned int> constants(decay.size()+1),ihel(decay.size()+1); vector<PDT::Spin> ispin(decay.size()); int itemp(1); unsigned int hhel,ix(decay.size()); do { --ix; ispin[ix]=decay[ix]->data().iSpin(); itemp*=ispin[ix]; constants[ix]=itemp; } while(ix>0); constants[decay.size()]=1; constants[0]=constants[1]; // compute the matrix element DecayMatrixElement newME(PDT::Spin1Half,ispin); VectorWaveFunction vWave; tcPDPtr vec= inpart.dataPtr()->iCharge()-decay[0]->dataPtr()->iCharge() > 0 ? getParticleData(ParticleID::Wplus) : getParticleData(ParticleID::Wminus); Lorentz5Momentum vmom=inpart.momentum()-decay[0]->momentum(); vmom.rescaleMass(); for(hhel=0;hhel<hadron.size();++hhel) { // map the index for the hadrons to a helicity state for(ix=decay.size();ix>1;--ix) ihel[ix]=(hhel%constants[ix-1])/constants[ix]; vWave=VectorWaveFunction(vmom,vec,hadron[hhel]*UnitRemoval::InvE,outgoing); for(unsigned int if1 = 0; if1 < 2; ++if1) { for(unsigned int if2 = 0; if2 < 2; ++if2) { ihel[0]=if1; ihel[1]=if2; if(!ferm) swap(ihel[0],ihel[1]); newME(ihel) = _theFFVPtr->evaluate(scale,_wave[if1],_wavebar[if2],vWave); } } } // store the matrix element ME(newME); // multiply by the CKM element int iq,ia; weakCurrent()->decayModeInfo(mode(),iq,ia); double ckm(1.); if(iq<=6) { if(iq%2==0) ckm = SM().CKM(iq/2-1,(abs(ia)-1)/2); else ckm = SM().CKM(abs(ia)/2-1,(iq-1)/2); } pre /= 0.125*sqr(_theFFVPtr->weakCoupling(scale)); double output(0.5*pre*ckm*(ME().contract(_rho)).real()* sqr(SM().fermiConstant()*UnitRemoval::E2)); return output; } Energy FFVCurrentDecayer::partialWidth(tPDPtr inpart, tPDPtr outa, vector<tPDPtr> currout) { vector<long> id; id.push_back(inpart->id()); id.push_back(outa->id()); for(unsigned int ix=0;ix<currout.size();++ix) id.push_back(currout[ix]->id()); bool cc; int mode=modeNumber(cc,id); imode(mode); return initializePhaseSpaceMode(mode,true); } ����herwig++-2.6.0.orig/Decay/General/SFFDecayer.h������������������������������������������������������0000644�0001750�0001750�00000011713�11754474774�021470� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SFFDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SFFDecayer_H #define HERWIG_SFFDecayer_H // // This is the declaration of the SFFDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::FFSVertexPtr; /** \ingroup Decay * The SFFDecayer class implements the decay of a scalar to 2 * fermions in a general model. It holds an FFSVertex pointer that * must be typecast from the VertexBase pointer held in * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see GeneralTwoBodyDecayer */ class SFFDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ SFFDecayer() {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<SFFDecayer> initSFFDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SFFDecayer & operator=(const SFFDecayer &); private: /** * Abstract pointer to AbstractFFSVertex */ AbstractFFSVertexPtr _abstractVertex; /** * Pointer to the perturbative vertex */ FFSVertexPtr _perturbativeVertex; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Scalar wavefunction */ mutable ScalarWaveFunction _swave; /** * Spinor wavefunction */ mutable vector<SpinorWaveFunction> _wave; /** * Barred spinor wavefunction */ mutable vector<SpinorBarWaveFunction> _wavebar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SFFDecayer. */ template <> struct BaseClassTrait<Herwig::SFFDecayer,1> { /** Typedef of the first base class of SFFDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the SFFDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SFFDecayer> : public ClassTraitsBase<Herwig::SFFDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::SFFDecayer"; } }; /** @endcond */ } #endif /* HERWIG_SFFDecayer_H */ �����������������������������������������������������herwig++-2.6.0.orig/Decay/General/SRFDecayer.h������������������������������������������������������0000644�0001750�0001750�00000012215�11754474774�021502� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SRFDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SRFDecayer_H #define HERWIG_SRFDecayer_H // // This is the declaration of the SRFDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/Vertex/Scalar/RFSVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::RFSVertexPtr; /** \ingroup Decay * The SRFDecayer class implements the decay of a scalar to spin-3/2 * and spin-1/2 fermion in a general model. It holds an RFSVertex pointer that * must be typecast from the VertexBase pointer held in * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see GeneralTwoBodyDecayer */ class SRFDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ SRFDecayer() {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<SRFDecayer> initSRFDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SRFDecayer & operator=(const SRFDecayer &); private: /** * Abstract pointer to AbstractFFSVertex */ AbstractRFSVertexPtr abstractVertex_; /** * Pointer to the perturbative vertex */ RFSVertexPtr perturbativeVertex_; /** * Spin density matrix */ mutable RhoDMatrix rho_; /** * Scalar wavefunction */ mutable ScalarWaveFunction swave_; /** * Spinor wavefunction */ mutable vector<SpinorWaveFunction> wave_; /** * Barred spinor wavefunction */ mutable vector<SpinorBarWaveFunction> wavebar_; /** * RS Spinor wavefunction */ mutable vector<RSSpinorWaveFunction> RSwave_; /** * Barred RS spinor wavefunction */ mutable vector<RSSpinorBarWaveFunction> RSwavebar_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SRFDecayer. */ template <> struct BaseClassTrait<Herwig::SRFDecayer,1> { /** Typedef of the first base class of SRFDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the SRFDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SRFDecayer> : public ClassTraitsBase<Herwig::SRFDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::SRFDecayer"; } }; /** @endcond */ } #endif /* HERWIG_SRFDecayer_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/FtoFVVDecayer.cc��������������������������������������������������0000644�0001750�0001750�00000030756�11754474774�022332� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the FtoFVVDecayer class. // #include "FtoFVVDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" #include <numeric> using namespace Herwig; IBPtr FtoFVVDecayer::clone() const { return new_ptr(*this); } IBPtr FtoFVVDecayer::fullclone() const { return new_ptr(*this); } void FtoFVVDecayer::persistentOutput(PersistentOStream & os) const { os << _sca << _fer << _vec << _ten; } void FtoFVVDecayer::persistentInput(PersistentIStream & is, int) { is >> _sca >> _fer >> _vec >> _ten; } ClassDescription<FtoFVVDecayer> FtoFVVDecayer::initFtoFVVDecayer; // Definition of the static class description member. void FtoFVVDecayer::Init() { static ClassDocumentation<FtoFVVDecayer> documentation ("The FtoFVVDecayer class implements the general decay of a fermion to " "a fermion and a pair of vectors."); } void FtoFVVDecayer::doinit() { GeneralThreeBodyDecayer::doinit(); unsigned int ndiags = getProcessInfo().size(); _sca.resize(ndiags); _fer.resize(ndiags); _vec.resize(ndiags); _ten.resize(ndiags); for(unsigned int ix = 0;ix < ndiags; ++ix) { TBDiagram current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if(offshell->iSpin() == PDT::Spin0) { AbstractFFSVertexPtr vert1 = dynamic_ptr_cast<AbstractFFSVertexPtr> (current.vertices.first); AbstractVVSVertexPtr vert2 = dynamic_ptr_cast<AbstractVVSVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a scalar diagram in FtoFVVDecayer::doinit()" << Exception::runerror; _sca[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin1Half) { AbstractFFVVertexPtr vert1 = dynamic_ptr_cast<AbstractFFVVertexPtr> (current.vertices.first); AbstractFFVVertexPtr vert2 = dynamic_ptr_cast<AbstractFFVVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a scalar diagram in FtoFVVDecayer::doinit()" << Exception::runerror; _fer[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin1) { AbstractFFVVertexPtr vert1 = dynamic_ptr_cast<AbstractFFVVertexPtr> (current.vertices.first); AbstractVVVVertexPtr vert2 = dynamic_ptr_cast<AbstractVVVVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a vector diagram in FtoFVVDecayer::doinit()" << Exception::runerror; _vec[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin2) { AbstractFFTVertexPtr vert1 = dynamic_ptr_cast<AbstractFFTVertexPtr> (current.vertices.first); AbstractVVTVertexPtr vert2 = dynamic_ptr_cast<AbstractVVTVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a tensor diagram in FtoFVVDecayer::doinit()" << Exception::runerror; _ten[ix] = make_pair(vert1, vert2); } } } double FtoFVVDecayer::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // particle or CC of particle bool cc = (*getProcessInfo().begin()).incoming != inpart.id(); // special handling or first/last call //Set up wave-functions bool ferm( inpart.id() > 0 ); if(meopt==Initialize) { if( ferm ) { SpinorWaveFunction:: calculateWaveFunctions(_fwave,_rho,const_ptr_cast<tPPtr>(&inpart), Helicity::incoming); if( _fwave[0].wave().Type() != u_spinortype ) _fwave[0].conjugate(); if( _fwave[1].wave().Type() != u_spinortype ) _fwave[1].conjugate(); } else { SpinorBarWaveFunction:: calculateWaveFunctions(_fbwave, _rho, const_ptr_cast<tPPtr>(&inpart), Helicity::incoming); if( _fbwave[0].wave().Type() != v_spinortype ) _fbwave[0].conjugate(); if( _fbwave[1].wave().Type() != v_spinortype ) _fbwave[1].conjugate(); } } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(ferm) SpinorWaveFunction::constructSpinInfo(_fwave, const_ptr_cast<tPPtr>(&inpart), Helicity::incoming,true); else SpinorBarWaveFunction::constructSpinInfo(_fbwave, const_ptr_cast<tPPtr>(&inpart), Helicity::incoming,true); int ivec(-1); // outgoing particles for(int ix = 0; ix < 3; ++ix) { tPPtr p = decay[ix]; if( p->dataPtr()->iSpin() == PDT::Spin1Half ) { if( ferm ) { SpinorBarWaveFunction:: constructSpinInfo(_fbwave, p, Helicity::outgoing,true); } else { SpinorWaveFunction:: constructSpinInfo(_fwave , p, Helicity::outgoing,true); } } else if( p->dataPtr()->iSpin() == PDT::Spin1 ) { if( ivec < 0 ) { ivec = ix; VectorWaveFunction:: constructSpinInfo(_vwave.first , p, Helicity::outgoing, true, false); } else { VectorWaveFunction:: constructSpinInfo(_vwave.second, p, Helicity::outgoing, true, false); } } } return 0.; } // outgoing, keep track of fermion and first occurrence of vector positions int isp(-1), ivec(-1); // outgoing particles for(int ix = 0; ix < 3; ++ix) { tPPtr p = decay[ix]; if( p->dataPtr()->iSpin() == PDT::Spin1Half ) { isp = ix; if( ferm ) { SpinorBarWaveFunction:: calculateWaveFunctions(_fbwave, p, Helicity::outgoing); if( _fbwave[0].wave().Type() != u_spinortype ) _fbwave[0].conjugate(); if( _fbwave[1].wave().Type() != u_spinortype ) _fbwave[1].conjugate(); } else { SpinorWaveFunction:: calculateWaveFunctions(_fwave, p, Helicity::outgoing); if( _fwave[0].wave().Type() != v_spinortype ) _fwave[0].conjugate(); if( _fwave[1].wave().Type() != v_spinortype ) _fwave[1].conjugate(); } } else if( p->dataPtr()->iSpin() == PDT::Spin1 ) { if( ivec < 0 ) { ivec = ix; VectorWaveFunction:: calculateWaveFunctions(_vwave.first , p, Helicity::outgoing, false); } else { VectorWaveFunction:: calculateWaveFunctions(_vwave.second, p, Helicity::outgoing, false); } } } assert(isp >= 0 && ivec >= 0); Energy2 scale(sqr(inpart.mass())); const vector<vector<double> > cfactors(getColourFactors()); const vector<vector<double> > nfactors(getLargeNcColourFactors()); const size_t ncf(numberOfFlows()); vector<Complex> flows(ncf, Complex(0.)), largeflows(ncf, Complex(0.)); vector<DecayMatrixElement> mes(ncf,DecayMatrixElement(PDT::Spin1Half, (isp == 0) ? PDT::Spin1Half : PDT::Spin1, (isp == 1) ? PDT::Spin1Half : PDT::Spin1, (isp == 2) ? PDT::Spin1Half : PDT::Spin1)); vector<DecayMatrixElement> mel(ncf,DecayMatrixElement(PDT::Spin1Half, (isp == 0) ? PDT::Spin1Half : PDT::Spin1, (isp == 1) ? PDT::Spin1Half : PDT::Spin1, (isp == 2) ? PDT::Spin1Half : PDT::Spin1)); //Helicity calculation for( unsigned int if1 = 0; if1 < 2; ++if1 ) { for( unsigned int if2 = 0; if2 < 2; ++if2 ) { for( unsigned int iv1 = 0; iv1 < 3; ++iv1 ) { for( unsigned int iv2 = 0; iv2 < 3; ++iv2 ) { flows = vector<Complex>(ncf, Complex(0.)); largeflows = vector<Complex>(ncf, Complex(0.)); unsigned int idiag(0); for(vector<TBDiagram>::const_iterator dit = getProcessInfo().begin(); dit != getProcessInfo().end(); ++dit) { // If we are selecting a particular channel if( ichan >= 0 && diagramMap()[ichan] != idiag ) { ++idiag; continue; } tcPDPtr offshell = (*dit).intermediate; if(cc&&offshell->CC()) offshell=offshell->CC(); Complex diag; if( offshell->iSpin() == PDT::Spin1Half ) { // Make sure we connect the correct particles VectorWaveFunction vw1, vw2; if( (*dit).channelType == TBDiagram::channel23 ) { vw1 = _vwave.first[iv1]; vw2 = _vwave.second[iv2]; } else if( (*dit).channelType == TBDiagram::channel12 ) { vw1 = _vwave.second[iv2]; vw2 = _vwave.first[iv1]; } else { if( ivec < isp ) { vw1 = _vwave.second[iv2]; vw2 = _vwave.first[iv1]; } else { vw1 = _vwave.first[iv1]; vw2 = _vwave.second[iv2]; } } if( ferm ) { SpinorWaveFunction inters = _fer[idiag].first->evaluate(scale, widthOption(), offshell, _fwave[if1], vw1); diag = _fer[idiag].second->evaluate(scale, inters, _fbwave[if2], vw2); } else { SpinorBarWaveFunction inters = _fer[idiag].first->evaluate(scale, widthOption(), offshell, _fbwave[if2], vw1); diag = _fer[idiag].second->evaluate(scale, _fwave[if1], inters, vw2); } } else if( offshell->iSpin() == PDT::Spin0 ) { ScalarWaveFunction inters = _sca[idiag].first->evaluate(scale, widthOption(), offshell, _fwave[if1], _fbwave[if2]); diag = _sca[idiag].second->evaluate(scale, _vwave.first[iv1], _vwave.second[iv2], inters); } else if( offshell->iSpin() == PDT::Spin1 ) { VectorWaveFunction interv = _vec[idiag].first->evaluate(scale, widthOption(), offshell, _fwave[if1], _fbwave[if2]); diag = _vec[idiag].second->evaluate(scale, _vwave.first[iv1], _vwave.second[iv2], interv); } else if( offshell->iSpin() == PDT::Spin2 ) { TensorWaveFunction intert = _ten[idiag].first->evaluate(scale, widthOption(), offshell, _fwave[if1], _fbwave[if2]); diag = _ten[idiag].second->evaluate(scale, _vwave.first[iv1], _vwave.second[iv2], intert); } else throw Exception() << "Unknown intermediate in FtoFVVDecayer::me2()" << Exception::runerror; //NO sign if( !ferm ) diag *= -1; if(ichan<0) { for(unsigned iy = 0; iy < dit->colourFlow.size(); ++iy) { flows[dit->colourFlow[iy].first - 1] += dit->colourFlow[iy].second * diag; } for(unsigned iy = 0; iy < dit->largeNcColourFlow.size(); ++iy) { largeflows[dit->largeNcColourFlow[iy].first - 1] += dit->largeNcColourFlow[iy].second * diag; } } else { for(unsigned iy = 0; iy < dit->colourFlow.size(); ++iy) { if(dit->colourFlow[iy].first - 1!=colourFlow()) continue; flows[dit->colourFlow[iy].first - 1] += dit->colourFlow[iy].second * diag; } for(unsigned iy = 0; iy < dit->largeNcColourFlow.size(); ++iy) { if(dit->colourFlow[iy].first - 1!=colourFlow()) continue; largeflows[dit->largeNcColourFlow[iy].first - 1] += dit->largeNcColourFlow[iy].second * diag; } } ++idiag; }// end diagram loop // now add the flows to the me2 unsigned int h1(if1), h2(if2); if( !ferm ) swap(h1,h2); for(unsigned int ix = 0; ix < ncf; ++ix) { if(isp == 0) { mes[ix](h1, h2, iv1, iv2) = flows[ix]; mel[ix](h1, h2, iv1, iv2) = largeflows[ix]; } else if(isp == 1) { mes[ix](h1, iv1, h2, iv2) = flows[ix]; mel[ix](h1, iv1, h2, iv2) = largeflows[ix]; } else if(isp == 2) { mes[ix](h1, iv1, iv2, h2) = flows[ix]; mel[ix](h1, iv1, h2, iv2) = largeflows[ix]; } } }//v2 }//v1 }//f2 }//f1 //Finally, work out me2. This depends on whether we are selecting channels //or not double me2(0.); if(ichan<0) { vector<double> pflows(ncf,0.); for(unsigned int ix = 0; ix < ncf; ++ix) { for(unsigned int iy = 0; iy < ncf; ++ iy) { double con = cfactors[ix][iy]*(mes[ix].contract(mes[iy],_rho)).real(); me2 += con; if(ix==iy) { con = nfactors[ix][iy]*(mel[ix].contract(mel[iy],_rho)).real(); pflows[ix] += con; } } } double ptotal(std::accumulate(pflows.begin(),pflows.end(),0.)); ptotal *= UseRandom::rnd(); for(unsigned int ix=0;ix<pflows.size();++ix) { if(ptotal<=pflows[ix]) { colourFlow(ix); ME(mes[ix]); break; } ptotal-=pflows[ix]; } } else { unsigned int iflow = colourFlow(); me2 = nfactors[iflow][iflow]*(mel[iflow].contract(mel[iflow],_rho)).real(); } // return the matrix element squared return me2; } WidthCalculatorBasePtr FtoFVVDecayer:: threeBodyMEIntegrator(const DecayMode & ) const { vector<int> intype; vector<Energy> inmass,inwidth; vector<double> inpow,inweights; constructIntegratorChannels(intype,inmass,inwidth,inpow,inweights); return new_ptr(ThreeBodyAllOnCalculator<FtoFVVDecayer> (inweights,intype,inmass,inwidth,inpow,*this,0, outgoing()[0]->mass(),outgoing()[1]->mass(), outgoing()[2]->mass(),relativeError())); } ������������������herwig++-2.6.0.orig/Decay/General/FRVDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000020031�11754474774�021636� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FRVDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FRVDecayer class. // #include "FRVDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/Utilities/Kinematics.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr FRVDecayer::clone() const { return new_ptr(*this); } IBPtr FRVDecayer::fullclone() const { return new_ptr(*this); } void FRVDecayer::doinit() { perturbativeVertex_ = dynamic_ptr_cast<RFVVertexPtr> (getVertex()); abstractVertex_ = dynamic_ptr_cast<AbstractRFVVertexPtr>(getVertex()); GeneralTwoBodyDecayer::doinit(); } void FRVDecayer::persistentOutput(PersistentOStream & os) const { os << abstractVertex_ << perturbativeVertex_; } void FRVDecayer::persistentInput(PersistentIStream & is, int) { is >> abstractVertex_ >> perturbativeVertex_; } double FRVDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // decaying fermion or antifermion bool ferm = inpart.id() > 0; // initialize if(meopt==Initialize) { // spinors and rho if(ferm) { SpinorWaveFunction ::calculateWaveFunctions(wave_,rho_, const_ptr_cast<tPPtr>(&inpart), incoming); if(wave_[0].wave().Type() != u_spinortype) for(unsigned int ix = 0; ix < 2; ++ix) wave_ [ix].conjugate(); } else { SpinorBarWaveFunction::calculateWaveFunctions(wavebar_,rho_, const_ptr_cast<tPPtr>(&inpart), incoming); if(wavebar_[0].wave().Type() != v_spinortype) for(unsigned int ix = 0; ix < 2; ++ix) wavebar_[ix].conjugate(); } ME(DecayMatrixElement(PDT::Spin1Half,PDT::Spin3Half,PDT::Spin1)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(ferm) { SpinorWaveFunction:: constructSpinInfo(wave_,const_ptr_cast<tPPtr>(&inpart),incoming,true); RSSpinorBarWaveFunction::constructSpinInfo(RSwavebar_,decay[0],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(wavebar_,const_ptr_cast<tPPtr>(&inpart),incoming,true); RSSpinorWaveFunction::constructSpinInfo(RSwave_,decay[0],outgoing,true); } VectorWaveFunction:: constructSpinInfo(vector_,decay[1],outgoing,true,false); } Energy2 scale(sqr(inpart.mass())); if(ferm) RSSpinorBarWaveFunction:: calculateWaveFunctions(RSwavebar_,decay[0],outgoing); else RSSpinorWaveFunction:: calculateWaveFunctions(RSwave_ ,decay[0],outgoing); bool massless = decay[1]->dataPtr()->mass()==ZERO; VectorWaveFunction:: calculateWaveFunctions(vector_,decay[1],outgoing,massless); // loop over helicities for(unsigned int if1 = 0; if1 < 2; ++if1) { for(unsigned int if2 = 0; if2 < 4; ++if2) { for(unsigned int vhel = 0; vhel < 3; ++vhel) { if(massless && vhel == 1) ++vhel; if(ferm) ME()(if1, if2,vhel) = abstractVertex_->evaluate(scale,wave_[if1], RSwavebar_[if2],vector_[vhel]); else ME()(if1, if2, vhel) = abstractVertex_->evaluate(scale,RSwave_[if2], wavebar_[if1],vector_[vhel]); } } } double output=(ME().contract(rho_)).real()/scale*UnitRemoval::E2; // test // Energy m1(inpart.mass()),m2(decay[0]->mass()),m3(decay[1]->mass()); // Energy2 m12(m1*m1),m22(m2*m2),m32(m3*m3); // Energy Qp(sqrt(sqr(m1+m2)-sqr(m3))),Qm(sqrt(sqr(m1-m2)-sqr(m3))); // double r2(sqrt(2.)),r3(sqrt(3.)); // Energy pcm(Kinematics::pstarTwoBodyDecay(m1,m2,m3)); // vector<Complex> left = perturbativeVertex_-> left(); // vector<Complex> right = perturbativeVertex_->right(); // Complex A1 = 0.5*(left [0]+right[0])*perturbativeVertex_-> norm(); // Complex B1 = 0.5*(right[0]- left[0])*perturbativeVertex_-> norm(); // complex<InvEnergy> A2 = 0.5*(left [1]+right[1])*perturbativeVertex_-> norm()*UnitRemoval::InvE; // complex<InvEnergy> B2 = 0.5*(right[1]- left[1])*perturbativeVertex_-> norm()*UnitRemoval::InvE; // complex<InvEnergy2> A3 = 0.5*(left [2]+right[2])*perturbativeVertex_-> norm()*UnitRemoval::InvE2; // complex<InvEnergy2> B3 = 0.5*(right[2]- left[2])*perturbativeVertex_-> norm()*UnitRemoval::InvE2; // complex<Energy> h1(-2.*Qp*A1),h2(2.*Qm*B1); // complex<Energy> h3(-2./r3*Qp*(A1-Qm*Qm/m2*A2)); // complex<Energy> h4( 2./r3*Qm*(B1-Qp*Qp/m2*B2)); // complex<Energy> h5(ZERO),h6(ZERO); // if(decay[1]->mass()>ZERO) { // h5 = -2.*r2/r3/m2/m3*Qp*(0.5*(m12-m22-m32)*A1+0.5*Qm*Qm*(m1+m2)*A2 // +m12*pcm*pcm*A3); // h6 = 2.*r2/r3/m2/m3*Qm*(0.5*(m12-m22-m32)*B1-0.5*Qp*Qp*(m1-m2)*B2 // +m12*pcm*pcm*B3); // } // cout << "testing 1/2->3/2 1 " << inpart.id() << " " // << output << " " // << 0.25*(h1*conj(h1)+h2*conj(h2)+h3*conj(h3)+ // h4*conj(h4)+h5*conj(h5)+h6*conj(h6))/sqr(inpart.mass()) << " " // << 0.25*(h1*conj(h1)+h2*conj(h2)+h3*conj(h3)+ // h4*conj(h4)+h5*conj(h5)+h6*conj(h6))/sqr(inpart.mass())/output << endl; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(),decay[1]->dataPtr()); // return the answer return output; } Energy FRVDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(perturbativeVertex_) { Energy m1(inpart.second),m2(outa.second),m3(outb.second); Energy2 m12(m1*m1),m22(m2*m2),m32(m3*m3); Energy Qp(sqrt(sqr(m1+m2)-sqr(m3))),Qm(sqrt(sqr(m1-m2)-sqr(m3))); double r2(sqrt(2.)),r3(sqrt(3.)); Energy pcm(Kinematics::pstarTwoBodyDecay(m1,m2,m3)); // couplings tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; perturbativeVertex_->setCoupling(sqr(inpart.second), outa.first, in, outb.first); vector<Complex> left = perturbativeVertex_-> left(); vector<Complex> right = perturbativeVertex_->right(); Complex A1 = 0.5*(left [0]+right[0])*perturbativeVertex_-> norm(); Complex B1 = 0.5*(right[0]- left[0])*perturbativeVertex_-> norm(); complex<InvEnergy> A2 = 0.5*(left [1]+right[1])*perturbativeVertex_-> norm()*UnitRemoval::InvE; complex<InvEnergy> B2 = 0.5*(right[1]- left[1])*perturbativeVertex_-> norm()*UnitRemoval::InvE; complex<InvEnergy2> A3 = 0.5*(left [2]+right[2])*perturbativeVertex_-> norm()*UnitRemoval::InvE2; complex<InvEnergy2> B3 = 0.5*(right[2]- left[2])*perturbativeVertex_-> norm()*UnitRemoval::InvE2; complex<Energy> h1(-2.*Qp*A1),h2(2.*Qm*B1); complex<Energy> h3(-2./r3*Qp*(A1-Qm*Qm/m2*A2)); complex<Energy> h4( 2./r3*Qm*(B1-Qp*Qp/m2*B2)); complex<Energy> h5(ZERO),h6(ZERO); if(outb.second>ZERO) { h5 = -2.*r2/r3/m2/m3*Qp*(0.5*(m12-m22-m32)*A1+0.5*Qm*Qm*(m1+m2)*A2 +m12*pcm*pcm*A3); h6 = 2.*r2/r3/m2/m3*Qm*(0.5*(m12-m22-m32)*B1-0.5*Qp*Qp*(m1-m2)*B2 +m12*pcm*pcm*B3); } double me2 = 0.25*real(h1*conj(h1)+h2*conj(h2)+h3*conj(h3)+ h4*conj(h4)+h5*conj(h5)+h6*conj(h6))/sqr(inpart.second); Energy output = me2*pcm/8./Constants::pi; // colour factor output *= colourFactor(inpart.first,outa.first,outb.first); return output; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } ClassDescription<FRVDecayer> FRVDecayer::initFRVDecayer; // Definition of the static class description member. void FRVDecayer::Init() { static ClassDocumentation<FRVDecayer> documentation ("The FRVDecayer class handles the decay of a fermion to " "a spin-3/2 particle and a vector boson."); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/GeneralCurrentDecayer.fh������������������������������������������0000644�0001750�0001750�00000000567�11754474774�024145� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the GeneralCurrentDecayer class. // #ifndef HERWIG_GeneralCurrentDecayer_FH #define HERWIG_GeneralCurrentDecayer_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class GeneralCurrentDecayer; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::GeneralCurrentDecayer,GeneralCurrentDecayerPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/Makefile.in�������������������������������������������������������0000644�0001750�0001750�00000051753�11756461675�021457� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Decay/General DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwGeneralDecay_la_LIBADD = am_libHwGeneralDecay_la_OBJECTS = GeneralTwoBodyDecayer.lo \ GeneralThreeBodyDecayer.lo FFSDecayer.lo FFVDecayer.lo \ SFFDecayer.lo SSSDecayer.lo SSVDecayer.lo SVVDecayer.lo \ TFFDecayer.lo TSSDecayer.lo TVVDecayer.lo VFFDecayer.lo \ VSSDecayer.lo VVSDecayer.lo VVVDecayer.lo SRFDecayer.lo \ FRSDecayer.lo FRVDecayer.lo GeneralCurrentDecayer.lo \ FFVCurrentDecayer.lo FtoFFFDecayer.lo StoSFFDecayer.lo \ StoFFVDecayer.lo VtoFFVDecayer.lo FtoFVVDecayer.lo libHwGeneralDecay_la_OBJECTS = $(am_libHwGeneralDecay_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwGeneralDecay_la_SOURCES) DIST_SOURCES = $(libHwGeneralDecay_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwGeneralDecay.la libHwGeneralDecay_la_SOURCES = \ GeneralTwoBodyDecayer.h GeneralTwoBodyDecayer.fh GeneralTwoBodyDecayer.cc \ GeneralThreeBodyDecayer.h GeneralThreeBodyDecayer.fh \ GeneralThreeBodyDecayer.cc \ FFSDecayer.h FFSDecayer.cc \ FFVDecayer.h FFVDecayer.cc \ SFFDecayer.h SFFDecayer.cc \ SSSDecayer.h SSSDecayer.cc \ SSVDecayer.h SSVDecayer.cc \ SVVDecayer.h SVVDecayer.cc \ TFFDecayer.h TFFDecayer.cc \ TSSDecayer.h TSSDecayer.cc \ TVVDecayer.h TVVDecayer.cc \ VFFDecayer.h VFFDecayer.cc \ VSSDecayer.h VSSDecayer.cc \ VVSDecayer.h VVSDecayer.cc \ VVVDecayer.h VVVDecayer.cc \ SRFDecayer.h SRFDecayer.cc \ FRSDecayer.h FRSDecayer.cc \ FRVDecayer.h FRVDecayer.cc \ GeneralCurrentDecayer.h GeneralCurrentDecayer.fh GeneralCurrentDecayer.cc \ FFVCurrentDecayer.h FFVCurrentDecayer.cc \ FtoFFFDecayer.h FtoFFFDecayer.cc \ StoSFFDecayer.h StoSFFDecayer.cc \ StoFFVDecayer.h StoFFVDecayer.cc \ VtoFFVDecayer.h VtoFFVDecayer.cc \ FtoFVVDecayer.h FtoFVVDecayer.cc all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Decay/General/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Decay/General/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwGeneralDecay.la: $(libHwGeneralDecay_la_OBJECTS) $(libHwGeneralDecay_la_DEPENDENCIES) $(EXTRA_libHwGeneralDecay_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwGeneralDecay_la_OBJECTS) $(libHwGeneralDecay_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFSDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFVCurrentDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFVDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FRSDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FRVDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FtoFFFDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FtoFVVDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeneralCurrentDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeneralThreeBodyDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeneralTwoBodyDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SFFDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SRFDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSSDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SSVDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SVVDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StoFFVDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StoSFFDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TFFDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TSSDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TVVDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VFFDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VSSDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VVSDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VVVDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VtoFFVDecayer.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ���������������������herwig++-2.6.0.orig/Decay/General/SRFDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000013240�11754474774�021637� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SRFDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SRFDecayer class. // #include "SRFDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/Utilities/Kinematics.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr SRFDecayer::clone() const { return new_ptr(*this); } IBPtr SRFDecayer::fullclone() const { return new_ptr(*this); } void SRFDecayer::doinit() { perturbativeVertex_ = dynamic_ptr_cast<RFSVertexPtr> (getVertex()); abstractVertex_ = dynamic_ptr_cast<AbstractRFSVertexPtr>(getVertex()); GeneralTwoBodyDecayer::doinit(); } void SRFDecayer::persistentOutput(PersistentOStream & os) const { os << abstractVertex_ << perturbativeVertex_; } void SRFDecayer::persistentInput(PersistentIStream & is, int) { is >> abstractVertex_ >> perturbativeVertex_; } ClassDescription<SRFDecayer> SRFDecayer::initSRFDecayer; // Definition of the static class description member. void SRFDecayer::Init() { static ClassDocumentation<SRFDecayer> documentation ("This class implements to decay of a scalar to a spin-3/2 and" " spin-1/2 fermion"); } double SRFDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay,MEOption meopt) const { unsigned int irs=0,ifm=1; if(decay[0]->dataPtr()->iSpin()==PDT::Spin1Half) swap(irs,ifm); bool ferm = decay[ifm]->id()<0; if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(rho_,const_ptr_cast<tPPtr>(&inpart),incoming); swave_ = ScalarWaveFunction(inpart.momentum(),inpart.dataPtr(),incoming); if(irs==0) ME(DecayMatrixElement(PDT::Spin0,PDT::Spin3Half,PDT::Spin1Half)); else ME(DecayMatrixElement(PDT::Spin0,PDT::Spin1Half,PDT::Spin3Half)); } if(meopt==Terminate) { ScalarWaveFunction:: constructSpinInfo(const_ptr_cast<tPPtr>(&inpart),incoming,true); if(ferm) { RSSpinorBarWaveFunction:: constructSpinInfo(RSwavebar_,decay[irs],outgoing,true); SpinorWaveFunction:: constructSpinInfo(wave_ ,decay[ifm],outgoing,true); } else { RSSpinorWaveFunction:: constructSpinInfo(RSwave_ ,decay[irs],outgoing,true); SpinorBarWaveFunction:: constructSpinInfo(wavebar_,decay[ifm],outgoing,true); } return 0.; } if(ferm) { RSSpinorBarWaveFunction:: calculateWaveFunctions(RSwavebar_,decay[irs],outgoing); SpinorWaveFunction:: calculateWaveFunctions(wave_ ,decay[ifm],outgoing); } else { RSSpinorWaveFunction:: calculateWaveFunctions(RSwave_ ,decay[irs],outgoing); SpinorBarWaveFunction:: calculateWaveFunctions(wavebar_,decay[ifm],outgoing); } Energy2 scale(sqr(inpart.mass())); for(unsigned int ifm = 0; ifm < 4; ++ifm){ for(unsigned int ia = 0; ia < 2; ++ia) { if(irs==0) { if(ferm) ME()(0, ifm, ia) = abstractVertex_->evaluate(scale,wave_[ia], RSwavebar_[ifm],swave_); else ME()(0, ifm, ia) = abstractVertex_->evaluate(scale,RSwave_[ifm], wavebar_[ia],swave_); } else { if(ferm) ME()(0, ia, ifm) = abstractVertex_->evaluate(scale,wave_[ia], RSwavebar_[ifm],swave_); else ME()(0, ia, ifm) = abstractVertex_->evaluate(scale,RSwave_[ifm], wavebar_[ia],swave_); } } } double output = (ME().contract(rho_)).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[irs]->dataPtr(), decay[ifm]->dataPtr()); // return the answer return output; } Energy SRFDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(perturbativeVertex_) { Energy q = inpart.second; Energy m1 = outa.second, m2 = outb.second; // couplings tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; if(outa.first->iSpin()==PDT::Spin1Half) { swap(m1,m2); perturbativeVertex_->setCoupling(sqr(inpart.second),outb.first, outa.first, in); } else { perturbativeVertex_->setCoupling(sqr(inpart.second),outa.first, outb.first, in); } Complex left = perturbativeVertex_-> left()*perturbativeVertex_-> norm(); Complex right = perturbativeVertex_->right()*perturbativeVertex_-> norm(); complex<InvEnergy> A1 = 0.5*(left+right)*UnitRemoval::InvE; complex<InvEnergy> B1 = 0.5*(right-left)*UnitRemoval::InvE; Energy2 q2(q*q),m12(m1*m1),m22(m2*m2); Energy2 pcm2(0.25*(q2*(q2-2.*m12-2.*m22)+(m12-m22)*(m12-m22))/q2); Energy pcm(sqrt(pcm2)); Energy Qp(sqrt(-sqr(m2+m1)+q2)),Qm(sqrt(-sqr(m2-m1)+q2)); double r23(sqrt(2./3.)); complex<Energy> h1(-2.*r23*pcm*q/m1*Qm*B1); complex<Energy> h2( 2.*r23*pcm*q/m1*Qp*A1); double me2 = real(h1*conj(h1)+h2*conj(h2))/2./sqr(inpart.second); Energy output = me2*pcm/8./Constants::pi; // colour factor output *= colourFactor(inpart.first,outa.first,outb.first); // return the answer return output; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/SFFDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000011045�11754474774�021624� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SFFDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SFFDecayer class. // #include "SFFDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/Utilities/Kinematics.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr SFFDecayer::clone() const { return new_ptr(*this); } IBPtr SFFDecayer::fullclone() const { return new_ptr(*this); } void SFFDecayer::doinit() { _perturbativeVertex = dynamic_ptr_cast<FFSVertexPtr> (getVertex()); _abstractVertex = dynamic_ptr_cast<AbstractFFSVertexPtr>(getVertex()); GeneralTwoBodyDecayer::doinit(); } void SFFDecayer::persistentOutput(PersistentOStream & os) const { os << _abstractVertex << _perturbativeVertex; } void SFFDecayer::persistentInput(PersistentIStream & is, int) { is >> _abstractVertex >> _perturbativeVertex; } ClassDescription<SFFDecayer> SFFDecayer::initSFFDecayer; // Definition of the static class description member. void SFFDecayer::Init() { static ClassDocumentation<SFFDecayer> documentation ("This class implements to decay of a scalar to 2 fermions"); } double SFFDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay,MEOption meopt) const { // work out which is the fermion and antifermion int iferm(1),ianti(0); int itype[2]; for(unsigned int ix=0;ix<2;++ix) { if(decay[ix]->dataPtr()->CC()) itype[ix] = decay[ix]->id()>0 ? 0:1; else itype[ix] = 2; } if(itype[0]==0||itype[1]==1||(itype[0]==2&&itype[1]==2)) swap(iferm,ianti); if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); _swave = ScalarWaveFunction(inpart.momentum(),inpart.dataPtr(),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin1Half,PDT::Spin1Half)); } if(meopt==Terminate) { ScalarWaveFunction:: constructSpinInfo(const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorBarWaveFunction:: constructSpinInfo(_wavebar,decay[iferm],outgoing,true); SpinorWaveFunction:: constructSpinInfo(_wave ,decay[ianti],outgoing,true); return 0.; } SpinorBarWaveFunction:: calculateWaveFunctions(_wavebar,decay[iferm],outgoing); SpinorWaveFunction:: calculateWaveFunctions(_wave ,decay[ianti],outgoing); Energy2 scale(sqr(inpart.mass())); for(unsigned int ifm = 0; ifm < 2; ++ifm){ for(unsigned int ia = 0; ia < 2; ++ia) { if(iferm > ianti){ ME()(0, ia, ifm) = _abstractVertex->evaluate(scale,_wave[ia], _wavebar[ifm],_swave); } else { ME()(0, ifm, ia) = _abstractVertex->evaluate(scale,_wave[ia], _wavebar[ifm],_swave); } } } double output = (ME().contract(_rho)).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(), decay[1]->dataPtr()); // return the answer return output; } Energy SFFDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(_perturbativeVertex) { tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; _perturbativeVertex->setCoupling(sqr(inpart.second), outb.first, outa.first, in); double mu1(outa.second/inpart.second),mu2(outb.second/inpart.second); double c2 = norm(_perturbativeVertex->norm()); Complex al(_perturbativeVertex->left()), ar(_perturbativeVertex->right()); double me2 = -c2*( (norm(al) + norm(ar))*( sqr(mu1) + sqr(mu2) - 1.) + 2.*(ar*conj(al) + al*conj(ar)).real()*mu1*mu2 ); Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.second, outa.second, outb.second); Energy output = me2*pcm/(8*Constants::pi); // colour factor output *= colourFactor(inpart.first,outa.first,outb.first); return output; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/GeneralTwoBodyDecayer.h�������������������������������������������0000644�0001750�0001750�00000016665�11754474774�023752� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // GeneralTwoBodyDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_GeneralTwoBodyDecayer_H #define HERWIG_GeneralTwoBodyDecayer_H // // This is the declaration of the GeneralTwoBodyDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/Vertex/VertexBase.h" #include "GeneralTwoBodyDecayer.fh" namespace Herwig { using namespace ThePEG; using Helicity::VertexBasePtr; /** \ingroup Decay * The GeneralTwoBodyDecayer class is designed to be the base class * for 2 body decays for some general model. It inherits from * DecayIntegrator and implements the modeNumber() virtual function * that is the same for all of the decays. A decayer for * a specific spin configuration should inherit from this and implement * the me2() and partialWidth() member functions. The colourConnections() * member should be called from inside me2() in the inheriting decayer * to set up the colour lines. * * @see \ref GeneralTwoBodyDecayerInterfaces "The interfaces" * defined for GeneralTwoBodyDecayer. * @see DecayIntegrator */ class GeneralTwoBodyDecayer: public DecayIntegrator { public: /** A ParticleData ptr and (possible) mass pair.*/ typedef pair<tcPDPtr, Energy> PMPair; public: /** * The default constructor. */ GeneralTwoBodyDecayer() : _maxweight(1.) {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * For a given decay mode and a given particle instance, perform the * decay and return the decay products. As this is the base class this * is not implemented. * @return The vector of particles produced in the decay. */ virtual ParticleVector decay(const Particle & parent, const tPDVector & children) const; /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent,const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const = 0; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) const; /** * Specify the \f$1\to2\f$ matrix element to be used in the running width * calculation. * @param dm The DecayMode * @param mecode The code for the matrix element as described * in the GenericWidthGenerator class. * @param coupling The coupling for the matrix element. * @return True if the the order of the particles in the * decayer is the same as the DecayMode tag. */ virtual bool twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const; /** * An overidden member to calculate a branching ratio for a certain * particle instance. * @param dm The DecayMode of the particle * @param p The particle object * @param oldbrat The branching fraction given in the DecayMode object */ virtual double brat(const DecayMode & dm, const Particle & p, double oldbrat) const; //@} /** * Set the information on the decay */ void setDecayInfo(PDPtr incoming,PDPair outgoing, VertexBasePtr); protected: /** @name Functions used by inheriting decayers. */ //@{ /** * Get vertex pointer * @return a pointer to the vertex */ VertexBasePtr getVertex() const { return _theVertex; } /** * Set integration weight * @param wgt Maximum integration weight */ void setWeight(const double & wgt) { _maxweight = wgt; } /** * Set colour connections * @param parent Parent particle * @param out Particle vector containing particles to * connect colour lines */ void colourConnections(const Particle & parent, const ParticleVector & out) const; /** * Compute the spin and colour factor */ double colourFactor(tcPDPtr in, tcPDPtr out1, tcPDPtr out2) 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(); 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<GeneralTwoBodyDecayer> initGeneralTwoBodyDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GeneralTwoBodyDecayer & operator=(const GeneralTwoBodyDecayer &); private: /** * Store the incoming particle */ PDPtr _incoming; /** * Outgoing particles */ vector<PDPtr> _outgoing; /** * Pointer to vertex */ VertexBasePtr _theVertex; /** * Maximum weight for integration */ double _maxweight; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of GeneralTwoBodyDecayer. */ template <> struct BaseClassTrait<Herwig::GeneralTwoBodyDecayer,1> { /** Typedef of the first base class of GeneralTwoBodyDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the GeneralTwoBodyDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::GeneralTwoBodyDecayer> : public ClassTraitsBase<Herwig::GeneralTwoBodyDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::GeneralTwoBodyDecayer"; } }; /** @endcond */ } #endif /* HERWIG_GeneralTwoBodyDecayer_H */ ���������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/StoSFFDecayer.cc��������������������������������������������������0000644�0001750�0001750�00000030254�11754474774�022315� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the StoSFFDecayer class. // #include "StoSFFDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" #include <numeric> using namespace Herwig; using namespace ThePEG; using namespace ThePEG::Helicity; IBPtr StoSFFDecayer::clone() const { return new_ptr(*this); } IBPtr StoSFFDecayer::fullclone() const { return new_ptr(*this); } void StoSFFDecayer::persistentOutput(PersistentOStream & os) const { os << _sca << _fer << _vec << _ten; } void StoSFFDecayer::persistentInput(PersistentIStream & is, int) { is >> _sca >> _fer >> _vec >> _ten; } ClassDescription<StoSFFDecayer> StoSFFDecayer::initStoSFFDecayer; // Definition of the static class description member. void StoSFFDecayer::Init() { static ClassDocumentation<StoSFFDecayer> documentation ("The StoSFFDecayer class implements the general decay of a scalar to " "a scalar and two fermions."); } WidthCalculatorBasePtr StoSFFDecayer:: threeBodyMEIntegrator(const DecayMode & ) const { vector<int> intype; vector<Energy> inmass,inwidth; vector<double> inpow,inweights; constructIntegratorChannels(intype,inmass,inwidth,inpow,inweights); return new_ptr(ThreeBodyAllOnCalculator<StoSFFDecayer> (inweights,intype,inmass,inwidth,inpow,*this,0, outgoing()[0]->mass(),outgoing()[1]->mass(),outgoing()[2]->mass(), relativeError())); } void StoSFFDecayer::doinit() { GeneralThreeBodyDecayer::doinit(); unsigned int ndiags = getProcessInfo().size(); _sca.resize(ndiags); _fer.resize(ndiags); _vec.resize(ndiags); _ten.resize(ndiags); for(unsigned int ix = 0;ix < ndiags; ++ix) { TBDiagram current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if( offshell->CC() ) offshell = offshell->CC(); if(offshell->iSpin() == PDT::Spin0) { AbstractSSSVertexPtr vert1 = dynamic_ptr_cast<AbstractSSSVertexPtr> (current.vertices.first); AbstractFFSVertexPtr vert2 = dynamic_ptr_cast<AbstractFFSVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a scalar diagram in StoSFFDecayer::doinit()" << Exception::runerror; _sca[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin1Half) { AbstractFFSVertexPtr vert1 = dynamic_ptr_cast<AbstractFFSVertexPtr> (current.vertices.first); AbstractFFSVertexPtr vert2 = dynamic_ptr_cast<AbstractFFSVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a fermion diagram in StoSFFDecayer::doinit()" << Exception::runerror; _fer[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin1) { AbstractVSSVertexPtr vert1 = dynamic_ptr_cast<AbstractVSSVertexPtr> (current.vertices.first); AbstractFFVVertexPtr vert2 = dynamic_ptr_cast<AbstractFFVVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a vector diagram in StoSFFDecayer::doinit()" << Exception::runerror; _vec[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin2) { AbstractSSTVertexPtr vert1 = dynamic_ptr_cast<AbstractSSTVertexPtr> (current.vertices.first); AbstractFFTVertexPtr vert2 = dynamic_ptr_cast<AbstractFFTVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a tensor diagram in StoSFFDecayer::doinit()" << Exception::runerror; _ten[ix] = make_pair(vert1, vert2); } } } double StoSFFDecayer::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // particle or CC of particle bool cc = (*getProcessInfo().begin()).incoming != inpart.id(); // special handling or first/last call if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart), Helicity::incoming); _swave = ScalarWaveFunction(inpart.momentum(),inpart.dataPtr(), Helicity::incoming); } if(meopt==Terminate) { ScalarWaveFunction:: constructSpinInfo(const_ptr_cast<tPPtr>(&inpart), Helicity::incoming,true); for(unsigned int ix=0;ix<decay.size();++ix) { if(decay[ix]->dataPtr()->iSpin()==PDT::Spin0) { ScalarWaveFunction::constructSpinInfo(decay[ix],Helicity::outgoing,true); } else { SpinorWaveFunction:: constructSpinInfo(_outspin[ix].first,decay[ix],Helicity::outgoing,true); } } return 0.; } // get the wavefunctions for all the particles ScalarWaveFunction outScalar; unsigned int isca(0); for(unsigned int ix=0;ix<decay.size();++ix) { if(decay[ix]->dataPtr()->iSpin()==PDT::Spin0) { isca = ix; outScalar = ScalarWaveFunction(decay[ix]->momentum(), decay[ix]->dataPtr(),Helicity::outgoing); } else { SpinorWaveFunction:: calculateWaveFunctions(_outspin[ix].first,decay[ix],Helicity::outgoing); _outspin[ix].second.resize(2); if(_outspin[ix].first[0].wave().Type() == u_spinortype) { for(unsigned int iy = 0; iy < 2; ++iy) { _outspin[ix].second[iy] = _outspin[ix].first[iy].bar(); _outspin[ix].first[iy].conjugate(); } } else { for(unsigned int iy = 0; iy < 2; ++iy) { _outspin[ix].second[iy] = _outspin[ix].first[iy].bar(); _outspin[ix].second[iy].conjugate(); } } } } const vector<vector<double> > cfactors(getColourFactors()); const vector<vector<double> > nfactors(getLargeNcColourFactors()); Energy2 scale(sqr(inpart.mass())); const size_t ncf(numberOfFlows()); vector<Complex> flows(ncf, Complex(0.)), largeflows(ncf, Complex(0.)); vector<DecayMatrixElement> mes(ncf,DecayMatrixElement(PDT::Spin0, isca==0 ? PDT::Spin0 : PDT::Spin1Half, isca==1 ? PDT::Spin0 : PDT::Spin1Half, isca==2 ? PDT::Spin0 : PDT::Spin1Half)); vector<DecayMatrixElement> mel(ncf,DecayMatrixElement(PDT::Spin0, isca == 0 ? PDT::Spin0 : PDT::Spin1Half, isca == 1 ? PDT::Spin0 : PDT::Spin1Half, isca == 2 ? PDT::Spin0 : PDT::Spin1Half)); static const unsigned int out2[3]={1,0,0},out3[3]={2,2,1}; for(unsigned int s1 = 0;s1 < 2; ++s1) { for(unsigned int s2 = 0;s2 < 2; ++s2) { flows = vector<Complex>(ncf, Complex(0.)); largeflows = vector<Complex>(ncf, Complex(0.)); unsigned int idiag(0); for(vector<TBDiagram>::const_iterator dit = getProcessInfo().begin(); dit != getProcessInfo().end(); ++dit) { // channels if selecting if( ichan >= 0 && diagramMap()[ichan] != idiag ) { ++idiag; continue; } tcPDPtr offshell = dit->intermediate; if(cc&&offshell->CC()) offshell=offshell->CC(); Complex diag; double sign = out3[dit->channelType] < out2[dit->channelType] ? 1. : -1.; // intermediate scalar if (offshell->iSpin() == PDT::Spin0) { ScalarWaveFunction inters = _sca[idiag].first-> evaluate(scale, widthOption(), offshell, _swave, outScalar); unsigned int h1(s1),h2(s2); if(out2[dit->channelType]>out3[dit->channelType]) swap(h1,h2); if(decay[out2[dit->channelType]]->id()<0&& decay[out3[dit->channelType]]->id()>0) { diag =-sign*_sca[idiag].second-> evaluate(scale, _outspin[out2[dit->channelType]].first [h1], _outspin[out3[dit->channelType]].second[h2],inters); } else { diag = sign*_sca[idiag].second-> evaluate(scale, _outspin[out3[dit->channelType]].first [h2], _outspin[out2[dit->channelType]].second[h1],inters); } } // intermediate fermion else if(offshell->iSpin() == PDT::Spin1Half) { int iferm = decay[out2[dit->channelType]]->dataPtr()->iSpin()==PDT::Spin1Half ? out2[dit->channelType] : out3[dit->channelType]; unsigned int h1(s1),h2(s2); if(dit->channelType>iferm) swap(h1,h2); sign = iferm<dit->channelType ? 1. : -1.; if(decay[dit->channelType]->id()<0&&decay[iferm]->id()>0) { SpinorWaveFunction inters = _fer[idiag].first-> evaluate(scale,widthOption(),offshell, _outspin[dit->channelType].first [h1],_swave); diag = -sign*_fer[idiag].second-> evaluate(scale,inters,_outspin[iferm].second[h2],outScalar); } else { SpinorBarWaveFunction inters = _fer[idiag].first-> evaluate(scale,widthOption(),offshell, _outspin[dit->channelType].second[h1],_swave); diag = sign*_fer[idiag].second-> evaluate(scale,_outspin[iferm].first [h2],inters,outScalar); } } // intermediate vector else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interv = _vec[idiag].first-> evaluate(scale, widthOption(), offshell, _swave, outScalar); unsigned int h1(s1),h2(s2); if(out2[dit->channelType]>out3[dit->channelType]) swap(h1,h2); if(decay[out2[dit->channelType]]->id()<0&& decay[out3[dit->channelType]]->id()>0) { diag =-sign*_vec[idiag].second-> evaluate(scale, _outspin[out2[dit->channelType]].first [h1], _outspin[out3[dit->channelType]].second[h2],interv); } else { diag = sign*_vec[idiag].second-> evaluate(scale, _outspin[out3[dit->channelType]].first [h2], _outspin[out2[dit->channelType]].second[h1],interv); } } // intermediate tensor else if(offshell->iSpin() == PDT::Spin2) { TensorWaveFunction intert = _ten[idiag].first-> evaluate(scale, widthOption(), offshell, _swave, outScalar); unsigned int h1(s1),h2(s2); if(out2[dit->channelType]>out3[dit->channelType]) swap(h1,h2); if(decay[out2[dit->channelType]]->id()<0&& decay[out3[dit->channelType]]->id()>0) { diag =-sign*_ten[idiag].second-> evaluate(scale, _outspin[out2[dit->channelType]].first [h1], _outspin[out3[dit->channelType]].second[h2],intert); } else { diag = sign*_ten[idiag].second-> evaluate(scale, _outspin[out3[dit->channelType]].first [h2], _outspin[out2[dit->channelType]].second[h1],intert); } } // unknown else throw Exception() << "Unknown intermediate in StoSFFDecayer::me2()" << Exception::runerror; // matrix element for the different colour flows if(ichan < 0) { for(unsigned iy = 0; iy < dit->colourFlow.size(); ++iy) { flows[dit->colourFlow[iy].first - 1] += dit->colourFlow[iy].second * diag; } for(unsigned iy = 0; iy < dit->largeNcColourFlow.size(); ++iy) { largeflows[dit->largeNcColourFlow[iy].first - 1] += dit->largeNcColourFlow[iy].second * diag; } } else { for(unsigned iy = 0; iy < dit->colourFlow.size(); ++iy) { if(dit->colourFlow[iy].first - 1 != colourFlow()) continue; flows[dit->colourFlow[iy].first - 1] += dit->colourFlow[iy].second * diag; } for(unsigned iy = 0; iy < dit->largeNcColourFlow.size(); ++iy) { if(dit->colourFlow[iy].first - 1!=colourFlow()) continue; largeflows[dit->largeNcColourFlow[iy].first - 1] += dit->largeNcColourFlow[iy].second * diag; } } ++idiag; } for(unsigned int ix = 0; ix < ncf; ++ix) { if(isca == 0) { mes[ix](0, 0, s1, s2) = flows[ix]; mel[ix](0, 0, s1, s2) = largeflows[ix]; } else if(isca == 1 ) { mes[ix](0, s1, 0, s2) = flows[ix]; mel[ix](0, s1, 0, s2) = largeflows[ix]; } else if(isca == 2) { mes[ix](0, s1,s2, 0) = flows[ix]; mel[ix](0, s1,s2, 0) = largeflows[ix] ; } } } } double me2(0.); if(ichan < 0) { vector<double> pflows(ncf,0.); for(unsigned int ix = 0; ix < ncf; ++ix) { for(unsigned int iy = 0; iy < ncf; ++ iy) { double con = cfactors[ix][iy]*(mes[ix].contract(mes[iy],_rho)).real(); me2 += con; if(ix == iy) { con = nfactors[ix][iy]*(mel[ix].contract(mel[iy],_rho)).real(); pflows[ix] += con; } } } double ptotal(std::accumulate(pflows.begin(),pflows.end(),0.)); ptotal *= UseRandom::rnd(); for(unsigned int ix = 0;ix < pflows.size(); ++ix) { if(ptotal <= pflows[ix]) { colourFlow(ix); ME(mes[ix]); break; } ptotal -= pflows[ix]; } } else { unsigned int iflow = colourFlow(); me2 = nfactors[iflow][iflow]*(mel[iflow].contract(mel[iflow],_rho)).real(); } // return the matrix element squared return me2; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/VSSDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000007317�11754474774�021670� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VSSDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // This is the implementation of the non-inlined, non-templated member // functions of the VSSDecayer class. // #include "VSSDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr VSSDecayer::clone() const { return new_ptr(*this); } IBPtr VSSDecayer::fullclone() const { return new_ptr(*this); } void VSSDecayer::doinit() { _perturbativeVertex = dynamic_ptr_cast<VSSVertexPtr> (getVertex()); _abstractVertex = dynamic_ptr_cast<AbstractVSSVertexPtr>(getVertex()); GeneralTwoBodyDecayer::doinit(); } void VSSDecayer::persistentOutput(PersistentOStream & os) const { os << _abstractVertex << _perturbativeVertex; } void VSSDecayer::persistentInput(PersistentIStream & is, int) { is >> _abstractVertex >> _perturbativeVertex; } ClassDescription<VSSDecayer> VSSDecayer::initVSSDecayer; // Definition of the static class description member. void VSSDecayer::Init() { static ClassDocumentation<VSSDecayer> documentation ("This implements the decay of a vector to 2 scalars"); } double VSSDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors,_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); ME(DecayMatrixElement(PDT::Spin1,PDT::Spin0,PDT::Spin0)); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); for(unsigned int ix=0;ix<2;++ix) ScalarWaveFunction:: constructSpinInfo(decay[ix],outgoing,true); return 0.; } ScalarWaveFunction sca1(decay[0]->momentum(),decay[0]->dataPtr(),outgoing); ScalarWaveFunction sca2(decay[1]->momentum(),decay[1]->dataPtr(),outgoing); Energy2 scale(sqr(inpart.mass())); for(unsigned int ix=0;ix<3;++ix) { ME()(ix,0,0) = _abstractVertex->evaluate(scale,_vectors[ix],sca1,sca2); } double output=(ME().contract(_rho)).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(), decay[1]->dataPtr()); // return the answer return output; } Energy VSSDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(_perturbativeVertex) { tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; _perturbativeVertex->setCoupling(sqr(inpart.second), in, outa.first, outb.first); double mu1sq = sqr(outa.second/inpart.second); double mu2sq = sqr(outb.second/inpart.second); double me2 = sqr(mu1sq - mu2sq) - 2.*(mu1sq + mu2sq); Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.second,outa.second, outb.second); Energy output = -norm(_perturbativeVertex->norm())*me2*pcm / (24.*Constants::pi); // colour factor output *= colourFactor(inpart.first,outa.first,outb.first); // return the answer return output; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/FtoFVVDecayer.h���������������������������������������������������0000644�0001750�0001750�00000012031�11754474774�022156� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_FtoFVVDecayer_H #define HERWIG_FtoFVVDecayer_H // // This is the declaration of the FtoFVVDecayer class. // #include "GeneralThreeBodyDecayer.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h" namespace Herwig { using namespace ThePEG; /** * The FtoFVVDecayer class provides the general matrix elements for the * decay of a fermion to a fermion and two vector bosons. * * @see \ref FtoFVVDecayerInterfaces "The interfaces" * defined for FtoFVVDecayer. */ class FtoFVVDecayer: public GeneralThreeBodyDecayer { public: /** * Return the matrix element squared for a given mode and phase-space channel * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 (or higher body) partial width * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FtoFVVDecayer> initFtoFVVDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FtoFVVDecayer & operator=(const FtoFVVDecayer &); private: /** * Store the vector of scalar intermediates */ vector<pair<AbstractFFSVertexPtr, AbstractVVSVertexPtr> > _sca; /** * Store the vector for fermion intermediates */ vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > _fer; /** * Store the vector for gauge boson intermediates */ vector<pair<AbstractFFVVertexPtr, AbstractVVVVertexPtr> > _vec; /** * Store the vector of tensor intermediates */ vector<pair<AbstractFFTVertexPtr, AbstractVVTVertexPtr> > _ten; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Spinor wavefunctions */ mutable vector<SpinorWaveFunction> _fwave; /** * Barred spinor wavefunctions */ mutable vector<SpinorBarWaveFunction> _fbwave; /** * Vector wavefunctions */ mutable pair<vector<VectorWaveFunction>, vector<VectorWaveFunction> > _vwave; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FtoFVVDecayer. */ template <> struct BaseClassTrait<Herwig::FtoFVVDecayer,1> { /** Typedef of the first base class of FtoFVVDecayer. */ typedef Herwig::GeneralThreeBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the FtoFVVDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FtoFVVDecayer> : public ClassTraitsBase<Herwig::FtoFVVDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::FtoFVVDecayer"; } }; /** @endcond */ } #endif /* HERWIG_FtoFVVDecayer_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/StoFFVDecayer.h���������������������������������������������������0000644�0001750�0001750�00000011377�11754474774�022167� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef THEPEG_StoFFVDecayer_H #define THEPEG_StoFFVDecayer_H // // This is the declaration of the StoFFVDecayer class. // #include "GeneralThreeBodyDecayer.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the StoFFVDecayer class. * * @see \ref StoFFVDecayerInterfaces "The interfaces" * defined for StoFFVDecayer. */ class StoFFVDecayer: public GeneralThreeBodyDecayer { public: /** * Return the matrix element squared for a given mode and phase-space channel * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 (or higher body) partial width * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of * calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<StoFFVDecayer> initStoFFVDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ StoFFVDecayer & operator=(const StoFFVDecayer &); private: /** * Store the vertices for fermion intrermediate */ vector<pair<AbstractFFSVertexPtr, AbstractFFVVertexPtr> > _fer; /** * Store the vertices for scalar intrermediate */ vector<pair<AbstractVSSVertexPtr, AbstractFFSVertexPtr> > _sca; /** * Store the vertices for vector intrermediate */ vector<pair<AbstractVVSVertexPtr, AbstractFFVVertexPtr> > _vec; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Scalar wavefunction */ mutable ScalarWaveFunction _swave; /** * Vector wavefunction */ mutable vector<VectorWaveFunction> _outVector; /** * Spinor wavefunctions */ mutable pair<vector<SpinorWaveFunction>,vector<SpinorBarWaveFunction> > _outspin[3]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Herwig::StoFFVDecayer. */ template <> struct BaseClassTrait<Herwig::StoFFVDecayer,1> { /** Typedef of the first base class of Herwig::StoFFVDecayer. */ typedef Herwig::GeneralThreeBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the Herwig::StoFFVDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::StoFFVDecayer> : public ClassTraitsBase<Herwig::StoFFVDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::StoFFVDecayer"; } }; /** @endcond */ } #endif /* THEPEG_StoFFVDecayer_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/TSSDecayer.h������������������������������������������������������0000644�0001750�0001750�00000011442�11754474774�021522� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TSSDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TSSDecayer_H #define HERWIG_TSSDecayer_H // // This is the declaration of the TSSDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/Vertex/Tensor/SSTVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::SSTVertexPtr; /** \ingroup Decay * The TSSDecayer class implements the decay of a tensor * to 2 scalars in a general model. It holds an SSTVertex pointer * that must be typecast from the VertexBase pointer held in * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see GeneralTwoBodyDecayer */ class TSSDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ TSSDecayer() {} public: /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<TSSDecayer> initTSSDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TSSDecayer & operator=(const TSSDecayer &); private: /** * Abstract pointer to AbstractSSTVertex */ AbstractSSTVertexPtr _abstractVertex; /** * Pointer to the perturbative vertex */ SSTVertexPtr _perturbativeVertex; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization tensors of the decaying particle */ mutable vector<Helicity::TensorWaveFunction> _tensors; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of TSSDecayer. */ template <> struct BaseClassTrait<Herwig::TSSDecayer,1> { /** Typedef of the first base class of TSSDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the TSSDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::TSSDecayer> : public ClassTraitsBase<Herwig::TSSDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::TSSDecayer"; } }; /** @endcond */ } #endif /* HERWIG_TSSDecayer_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/VFFDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000011134�11754474774�021626� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VFFDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the VFFDecayer class. // #include "VFFDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr VFFDecayer::clone() const { return new_ptr(*this); } IBPtr VFFDecayer::fullclone() const { return new_ptr(*this); } void VFFDecayer::doinit() { _perturbativeVertex = dynamic_ptr_cast<FFVVertexPtr> (getVertex()); _abstractVertex = dynamic_ptr_cast<AbstractFFVVertexPtr>(getVertex()); GeneralTwoBodyDecayer::doinit(); } void VFFDecayer::persistentOutput(PersistentOStream & os) const { os << _abstractVertex << _perturbativeVertex; } void VFFDecayer::persistentInput(PersistentIStream & is, int) { is >> _abstractVertex >> _perturbativeVertex; } ClassDescription<VFFDecayer> VFFDecayer::initVFFDecayer; // Definition of the static class description member. void VFFDecayer::Init() { static ClassDocumentation<VFFDecayer> documentation ("The VFFDecayer implements the matrix element for the" " decay of a vector to fermion-antifermion pair"); } double VFFDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { int iferm(1),ianti(0); if(decay[0]->id()>0) swap(iferm,ianti); if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors,_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); ME(DecayMatrixElement(PDT::Spin1,PDT::Spin1Half,PDT::Spin1Half)); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); SpinorBarWaveFunction:: constructSpinInfo(_wavebar,decay[iferm],outgoing,true); SpinorWaveFunction:: constructSpinInfo(_wave ,decay[ianti],outgoing,true); return 0.; } SpinorBarWaveFunction:: calculateWaveFunctions(_wavebar,decay[iferm],outgoing); SpinorWaveFunction:: calculateWaveFunctions(_wave ,decay[ianti],outgoing); // compute the matrix element Energy2 scale(inpart.mass()*inpart.mass()); for(unsigned int ifm = 0; ifm < 2; ++ifm) { //loop over fermion helicities for(unsigned int ia = 0; ia < 2; ++ia) {// loop over antifermion helicities for(unsigned int vhel = 0; vhel < 3; ++vhel) {//loop over vector helicities if(iferm > ianti) { ME()(vhel, ia, ifm) = _abstractVertex->evaluate(scale,_wave[ia], _wavebar[ifm],_vectors[vhel]); } else ME()(vhel,ifm,ia)= _abstractVertex->evaluate(scale,_wave[ia], _wavebar[ifm],_vectors[vhel]); } } } double output=(ME().contract(_rho)).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(), decay[1]->dataPtr()); // return the answer return output; } Energy VFFDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(_perturbativeVertex) { double mu1(outa.second/inpart.second), mu2(outb.second/inpart.second); tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; _perturbativeVertex->setCoupling(sqr(inpart.second), outa.first, outb.first,in); Complex cl(_perturbativeVertex->left()), cr(_perturbativeVertex->right()); double me2 = (norm(cl) + norm(cr))*( sqr(sqr(mu1) - sqr(mu2)) + sqr(mu1) + sqr(mu2) - 2.) - 6.*(cl*conj(cr) + cr*conj(cl)).real()*mu1*mu2; Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.second,outa.second, outb.second); Energy output = -norm(_perturbativeVertex->norm())*me2*pcm / (24.*Constants::pi); // colour factor output *= colourFactor(inpart.first,outa.first,outb.first); // return the answer return output; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/VtoFFVDecayer.cc��������������������������������������������������0000644�0001750�0001750�00000030334�11754474774�022322� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the VtoFFVDecayer class. // #include "VtoFFVDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" #include <numeric> using namespace Herwig; using namespace ThePEG; using namespace ThePEG::Helicity; IBPtr VtoFFVDecayer::clone() const { return new_ptr(*this); } IBPtr VtoFFVDecayer::fullclone() const { return new_ptr(*this); } void VtoFFVDecayer::persistentOutput(PersistentOStream & os) const { os << _sca << _fer << _vec << _ten; } void VtoFFVDecayer::persistentInput(PersistentIStream & is, int) { is >> _sca >> _fer >> _vec >> _ten; } ClassDescription<VtoFFVDecayer> VtoFFVDecayer::initVtoFFVDecayer; // Definition of the static class description member. void VtoFFVDecayer::Init() { static ClassDocumentation<VtoFFVDecayer> documentation ("The VtoFFVDecayer class implements the general three-body " "decay of a vector to a two fermions and a vector."); } WidthCalculatorBasePtr VtoFFVDecayer:: threeBodyMEIntegrator(const DecayMode & ) const { vector<int> intype; vector<Energy> inmass,inwidth; vector<double> inpow,inweights; constructIntegratorChannels(intype,inmass,inwidth,inpow,inweights); return new_ptr(ThreeBodyAllOnCalculator<VtoFFVDecayer> (inweights,intype,inmass,inwidth,inpow,*this,0, outgoing()[0]->mass(),outgoing()[1]->mass(), outgoing()[2]->mass(),relativeError())); } void VtoFFVDecayer::doinit() { GeneralThreeBodyDecayer::doinit(); unsigned int ndiags = getProcessInfo().size(); _sca.resize(ndiags); _fer.resize(ndiags); _vec.resize(ndiags); _ten.resize(ndiags); for(unsigned int ix = 0;ix < ndiags; ++ix) { TBDiagram current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if( offshell->CC() ) offshell = offshell->CC(); if(offshell->iSpin() == PDT::Spin0) { AbstractVVSVertexPtr vert1 = dynamic_ptr_cast<AbstractVVSVertexPtr> (current.vertices.first); AbstractFFSVertexPtr vert2 = dynamic_ptr_cast<AbstractFFSVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a scalar diagram in VtoFFVDecayer::doinit()" << Exception::runerror; _sca[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin1Half) { AbstractFFVVertexPtr vert1 = dynamic_ptr_cast<AbstractFFVVertexPtr> (current.vertices.first); AbstractFFVVertexPtr vert2 = dynamic_ptr_cast<AbstractFFVVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a fermion diagram in VtoFFVDecayer::doinit()" << Exception::runerror; _fer[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin1) { AbstractVVVVertexPtr vert1 = dynamic_ptr_cast<AbstractVVVVertexPtr> (current.vertices.first); AbstractFFVVertexPtr vert2 = dynamic_ptr_cast<AbstractFFVVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a vector diagram in VtoFFVDecayer::doinit()" << Exception::runerror; _vec[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin2) { AbstractVVTVertexPtr vert1 = dynamic_ptr_cast<AbstractVVTVertexPtr> (current.vertices.first); AbstractFFTVertexPtr vert2 = dynamic_ptr_cast<AbstractFFTVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a tensor diagram in VtoFFVDecayer::doinit()" << Exception::runerror; _ten[ix] = make_pair(vert1, vert2); } } } double VtoFFVDecayer::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // particle or CC of particle bool cc = (*getProcessInfo().begin()).incoming != inpart.id(); // special handling or first/last call if(meopt==Initialize) { VectorWaveFunction:: calculateWaveFunctions(_inVector,_rho,const_ptr_cast<tPPtr>(&inpart), Helicity::incoming,false); } if(meopt==Terminate) { VectorWaveFunction:: constructSpinInfo(_inVector,const_ptr_cast<tPPtr>(&inpart), Helicity::incoming,true,false); for(unsigned int ix=0;ix<decay.size();++ix) { if(decay[ix]->dataPtr()->iSpin()==PDT::Spin1) { VectorWaveFunction::constructSpinInfo(_outVector,decay[ix], Helicity::outgoing,true,false); } else { SpinorWaveFunction:: constructSpinInfo(_outspin[ix].first,decay[ix],Helicity::outgoing,true); } } } unsigned int ivec(0); for(unsigned int ix = 0; ix < decay.size();++ix) { if(decay[ix]->dataPtr()->iSpin() == PDT::Spin1) { ivec = ix; VectorWaveFunction:: calculateWaveFunctions(_outVector, decay[ix], Helicity::outgoing,false); } else { SpinorWaveFunction:: calculateWaveFunctions(_outspin[ix].first,decay[ix],Helicity::outgoing); _outspin[ix].second.resize(2); // Need a ubar and a v spinor if(_outspin[ix].first[0].wave().Type() == u_spinortype) { for(unsigned int iy = 0; iy < 2; ++iy) { _outspin[ix].second[iy] = _outspin[ix].first[iy].bar(); _outspin[ix].first[iy].conjugate(); } } else { for(unsigned int iy = 0; iy < 2; ++iy) { _outspin[ix].second[iy] = _outspin[ix].first[iy].bar(); _outspin[ix].second[iy].conjugate(); } } } } const vector<vector<double> > cfactors(getColourFactors()); const vector<vector<double> > nfactors(getLargeNcColourFactors()); Energy2 scale(sqr(inpart.mass())); const size_t ncf(numberOfFlows()); vector<Complex> flows(ncf, Complex(0.)), largeflows(ncf, Complex(0.)); // setup the DecayMatrixElement vector<DecayMatrixElement> mes(ncf,DecayMatrixElement(PDT::Spin1, ivec == 0 ? PDT::Spin1 : PDT::Spin1Half, ivec == 1 ? PDT::Spin1 : PDT::Spin1Half, ivec == 2 ? PDT::Spin1 : PDT::Spin1Half)); vector<DecayMatrixElement> mel(ncf,DecayMatrixElement(PDT::Spin1, ivec == 0 ? PDT::Spin1 : PDT::Spin1Half, ivec == 1 ? PDT::Spin1 : PDT::Spin1Half, ivec == 2 ? PDT::Spin1 : PDT::Spin1Half)); //the channel possiblities static const unsigned int out2[3] = {1,0,0}, out3[3] = {2,2,1}; for(unsigned int vi = 0; vi < 3; ++vi) { for(unsigned int s1 = 0; s1 < 2; ++s1) { for(unsigned int s2 = 0; s2 < 2; ++s2) { for(unsigned int v1 = 0; v1 < 3; ++v1) { flows = vector<Complex>(ncf, Complex(0.)); largeflows = vector<Complex>(ncf, Complex(0.)); unsigned int idiag(0); for(vector<TBDiagram>::const_iterator dit=getProcessInfo().begin(); dit!=getProcessInfo().end();++dit) { // channels if selecting if( ichan >=0 && diagramMap()[ichan] != idiag ) { ++idiag; continue; } tcPDPtr offshell = dit->intermediate; if(cc&&offshell->CC()) offshell=offshell->CC(); Complex diag; unsigned int o2(out2[dit->channelType]), o3(out3[dit->channelType]); double sign = (o3 < o2) ? 1. : -1.; // intermediate scalar if(offshell->iSpin() == PDT::Spin0) { ScalarWaveFunction inters = _sca[idiag].first-> evaluate(scale, widthOption(), offshell, _outVector[v1], _inVector[vi]); unsigned int h1(s1),h2(s2); if(o2 > o3) swap(h1, h2); if(decay[o2]->id() < 0 && decay[o3]->id() > 0) { diag = -sign*_sca[idiag].second-> evaluate(scale,_outspin[o2].first[h1], _outspin[o3].second[h2],inters); } else { diag = sign*_sca[idiag].second-> evaluate(scale, _outspin[o3].first [h2], _outspin[o2].second[h1],inters); } } // intermediate fermion else if(offshell->iSpin() == PDT::Spin1Half) { int iferm = (decay[o2]->dataPtr()->iSpin() == PDT::Spin1Half) ? o2 : o3; unsigned int h1(s1),h2(s2); if(dit->channelType > iferm) swap(h1, h2); sign = iferm < dit->channelType ? 1. : -1.; if(decay[dit->channelType]->id() < 0 && decay[iferm]->id() > 0 ) { SpinorWaveFunction inters = _fer[idiag].first-> evaluate(scale,widthOption(),offshell, _outspin[dit->channelType].first[h1], _inVector[vi]); diag = -sign*_fer[idiag].second-> evaluate(scale,inters,_outspin[iferm].second[h2], _outVector[v1]); } else { SpinorBarWaveFunction inters = _fer[idiag].first-> evaluate(scale,widthOption(),offshell, _outspin[dit->channelType].second[h1],_inVector[vi]); diag = sign*_fer[idiag].second-> evaluate(scale,_outspin[iferm].first [h2],inters, _outVector[v1]); } } // intermediate vector else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interv = _vec[idiag].first-> evaluate(scale, widthOption(), offshell, _outVector[v1], _inVector[vi]); unsigned int h1(s1),h2(s2); if(o2 > o3) swap(h1,h2); if(decay[o2]->id() < 0 && decay[o3]->id() > 0) { diag =-sign*_vec[idiag].second-> evaluate(scale, _outspin[o2].first[h1], _outspin[o3].second[h2], interv); } else { diag = sign*_vec[idiag].second-> evaluate(scale, _outspin[o3].first[h2], _outspin[o2].second[h1], interv); } } else if(offshell->iSpin() == PDT::Spin2) { TensorWaveFunction intert = _ten[idiag].first-> evaluate(scale, widthOption(), offshell, _inVector[vi], _outVector[v1]); unsigned int h1(s1),h2(s2); if(out2[dit->channelType]>out3[dit->channelType]) swap(h1,h2); if(decay[out2[dit->channelType]]->id()<0&& decay[out3[dit->channelType]]->id()>0) { diag =-sign*_ten[idiag].second-> evaluate(scale, _outspin[out2[dit->channelType]].first [h1], _outspin[out3[dit->channelType]].second[h2],intert); } else { diag = sign*_ten[idiag].second-> evaluate(scale, _outspin[out3[dit->channelType]].first [h2], _outspin[out2[dit->channelType]].second[h1],intert); } } // unknown else throw Exception() << "Unknown intermediate in VtoFFVDecayer::me2()" << Exception::runerror; // matrix element for the different colour flows if(ichan < 0) { for(unsigned iy = 0; iy < dit->colourFlow.size(); ++iy) { flows[dit->colourFlow[iy].first - 1] += dit->colourFlow[iy].second * diag; } for(unsigned iy = 0; iy < dit->largeNcColourFlow.size(); ++iy) { largeflows[dit->largeNcColourFlow[iy].first - 1] += dit->largeNcColourFlow[iy].second * diag; } } else { for(unsigned iy = 0; iy < dit->colourFlow.size(); ++iy) { if(dit->colourFlow[iy].first - 1 != colourFlow()) continue; flows[dit->colourFlow[iy].first - 1] += dit->colourFlow[iy].second * diag; } for(unsigned iy = 0; iy < dit->largeNcColourFlow.size(); ++iy) { if(dit->colourFlow[iy].first - 1!=colourFlow()) continue; largeflows[dit->largeNcColourFlow[iy].first - 1] += dit->largeNcColourFlow[iy].second * diag; } } ++idiag; } //end of diagrams // now add the flows to the me2 with appropriate colour factors for(unsigned int ix = 0; ix < ncf; ++ix) { if (ivec == 0) { mes[ix](vi, v1, s1, s2) = flows[ix]; mel[ix](vi, v1, s1, s2) = largeflows[ix]; } else if(ivec == 1) { mes[ix](vi, s1, v1, s2) = flows[ix]; mel[ix](vi, s1, v1, s2) = largeflows[ix]; } else if(ivec == 2) { mes[ix](vi, s1, s2, v1) = flows[ix]; mel[ix](vi, s1, s2, v1) = largeflows[ix]; } } } } } } double me2(0.); if(ichan < 0) { vector<double> pflows(ncf,0.); for(unsigned int ix = 0; ix < ncf; ++ix) { for(unsigned int iy = 0; iy < ncf; ++ iy) { double con = cfactors[ix][iy]*(mes[ix].contract(mes[iy],_rho)).real(); me2 += con; if(ix == iy) { con = nfactors[ix][iy]*(mel[ix].contract(mel[iy],_rho)).real(); pflows[ix] += con; } } } double ptotal(std::accumulate(pflows.begin(),pflows.end(),0.)); ptotal *= UseRandom::rnd(); for(unsigned int ix = 0;ix < pflows.size(); ++ix) { if(ptotal <= pflows[ix]) { colourFlow(ix); ME(mes[ix]); break; } ptotal -= pflows[ix]; } } else { unsigned int iflow = colourFlow(); me2 = nfactors[iflow][iflow]*(mel[iflow].contract(mel[iflow],_rho)).real(); } // return the matrix element squared return me2; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/FRSDecayer.h������������������������������������������������������0000644�0001750�0001750�00000012156�11754474774�021506� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FRSDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FRSDecayer_H #define HERWIG_FRSDecayer_H // // This is the declaration of the FRSDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/Vertex/Scalar/RFSVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::RFSVertexPtr; /** \ingroup Decay * The FRSDecayer class implements the decay of a fermion * to a spin-3/2 fermion and a vector in a general model. It holds an RFVVertex * pointer that must be typecast from the VertexBase pointer held in * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see GeneralTwoBodyDecayer */ class FRSDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ FRSDecayer() {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FRSDecayer> initFRSDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FRSDecayer & operator=(const FRSDecayer &); private: /** * Abstract pointer to AbstractFRSVertex */ AbstractRFSVertexPtr abstractVertex_; /** * Pointer to the perturbative vertex */ RFSVertexPtr perturbativeVertex_; /** * Spin density matrix */ mutable RhoDMatrix rho_; /** * Spinor wavefunctions */ mutable vector<SpinorWaveFunction> wave_ ; /** * Barred spinor wavefunctions */ mutable vector<SpinorBarWaveFunction> wavebar_; /** * RS Spinor wavefunctions */ mutable vector<RSSpinorWaveFunction> RSwave_ ; /** * Barred RS spinor wavefunctions */ mutable vector<RSSpinorBarWaveFunction> RSwavebar_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FRSDecayer. */ template <> struct BaseClassTrait<Herwig::FRSDecayer,1> { /** Typedef of the first base class of FRSDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the FRSDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FRSDecayer> : public ClassTraitsBase<Herwig::FRSDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::FRSDecayer"; } }; /** @endcond */ } #endif /* HERWIG_FRSDecayer_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/GeneralTwoBodyDecayer.fh������������������������������������������0000644�0001750�0001750�00000000560�11754474774�024103� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the GeneralTwoBodyDecayer class. // #ifndef ThePEG_GeneralTwoBodyDecayer_FH #define ThePEG_GeneralTwoBodyDecayer_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; class GeneralTwoBodyDecayer; ThePEG_DECLARE_POINTERS(GeneralTwoBodyDecayer,GeneralTwoBodyDecayerPtr); } #endif ������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/SSSDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000006706�11754474774�021666� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SSSDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SSSDecayer class. // #include "SSSDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "Herwig++/Utilities/Kinematics.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr SSSDecayer::clone() const { return new_ptr(*this); } IBPtr SSSDecayer::fullclone() const { return new_ptr(*this); } void SSSDecayer::doinit() { _perturbativeVertex = dynamic_ptr_cast<SSSVertexPtr> (getVertex()); _abstractVertex = dynamic_ptr_cast<AbstractSSSVertexPtr>(getVertex()); GeneralTwoBodyDecayer::doinit(); } void SSSDecayer::persistentOutput(PersistentOStream & os) const { os << _abstractVertex << _perturbativeVertex; } void SSSDecayer::persistentInput(PersistentIStream & is, int) { is >> _abstractVertex >> _perturbativeVertex; } ClassDescription<SSSDecayer> SSSDecayer::initSSSDecayer; // Definition of the static class description member. void SSSDecayer::Init() { static ClassDocumentation<SSSDecayer> documentation ("This class implements the decay of a scalar to 2 scalars."); } double SSSDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { if(meopt==Initialize) { ScalarWaveFunction:: calculateWaveFunctions(_rho,const_ptr_cast<tPPtr>(&inpart),incoming); _swave = ScalarWaveFunction(inpart.momentum(),inpart.dataPtr(),incoming); ME(DecayMatrixElement(PDT::Spin0,PDT::Spin0,PDT::Spin0)); } if(meopt==Terminate) { ScalarWaveFunction:: constructSpinInfo(const_ptr_cast<tPPtr>(&inpart),incoming,true); for(unsigned int ix=0;ix<2;++ix) ScalarWaveFunction:: constructSpinInfo(decay[ix],outgoing,true); } ScalarWaveFunction s1(decay[0]->momentum(),decay[0]->dataPtr(),outgoing); ScalarWaveFunction s2(decay[1]->momentum(),decay[1]->dataPtr(),outgoing); Energy2 scale(sqr(inpart.mass())); ME()(0,0,0) = _abstractVertex->evaluate(scale,s1,s2,_swave); double output = (ME().contract(_rho)).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(), decay[1]->dataPtr()); // return the answer return output; } Energy SSSDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(_perturbativeVertex) { Energy2 scale(sqr(inpart.second)); tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; _perturbativeVertex->setCoupling(scale, in, outa.first, outb.first); Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.second, outa.second, outb.second); double c2 = norm(_perturbativeVertex->norm()); Energy pWidth = c2*pcm/8./Constants::pi/scale*UnitRemoval::E2; // colour factor pWidth *= colourFactor(inpart.first,outa.first,outb.first); return pWidth; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } ����������������������������������������������������������herwig++-2.6.0.orig/Decay/General/FRSDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000014465�11754474774�021651� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FRSDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FRSDecayer class. // #include "FRSDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/Utilities/Kinematics.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr FRSDecayer::clone() const { return new_ptr(*this); } IBPtr FRSDecayer::fullclone() const { return new_ptr(*this); } void FRSDecayer::doinit() { perturbativeVertex_ = dynamic_ptr_cast<RFSVertexPtr> (getVertex()); abstractVertex_ = dynamic_ptr_cast<AbstractRFSVertexPtr>(getVertex()); GeneralTwoBodyDecayer::doinit(); } void FRSDecayer::persistentOutput(PersistentOStream & os) const { os << perturbativeVertex_ << abstractVertex_; } void FRSDecayer::persistentInput(PersistentIStream & is, int) { is >> perturbativeVertex_ >> abstractVertex_; } ClassDescription<FRSDecayer> FRSDecayer::initFRSDecayer; // Definition of the static class description member. void FRSDecayer::Init() { static ClassDocumentation<FRSDecayer> documentation ("The FRSDecayer class implements the decay of a fermion to " "a spin-3/2 fermion and a scalar."); } double FRSDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { bool ferm = inpart.id() > 0; if(meopt==Initialize) { // spinors and rho if(ferm) { SpinorWaveFunction ::calculateWaveFunctions(wave_,rho_, const_ptr_cast<tPPtr>(&inpart), incoming); if(wave_[0].wave().Type() != u_spinortype) for(unsigned int ix = 0; ix < 2; ++ix) wave_ [ix].conjugate(); } else { SpinorBarWaveFunction::calculateWaveFunctions(wavebar_,rho_, const_ptr_cast<tPPtr>(&inpart), incoming); if(wavebar_[0].wave().Type() != v_spinortype) for(unsigned int ix = 0; ix < 2; ++ix) wavebar_[ix].conjugate(); } ME(DecayMatrixElement(PDT::Spin1Half,PDT::Spin3Half,PDT::Spin0)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(ferm) { SpinorWaveFunction:: constructSpinInfo(wave_,const_ptr_cast<tPPtr>(&inpart),incoming,true); RSSpinorBarWaveFunction::constructSpinInfo(RSwavebar_,decay[0],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(wavebar_,const_ptr_cast<tPPtr>(&inpart),incoming,true); RSSpinorWaveFunction::constructSpinInfo(RSwave_,decay[0],outgoing,true); } ScalarWaveFunction::constructSpinInfo(decay[1],outgoing,true); } if(ferm) RSSpinorBarWaveFunction:: calculateWaveFunctions(RSwavebar_,decay[0],outgoing); else RSSpinorWaveFunction:: calculateWaveFunctions(RSwave_ ,decay[0],outgoing); ScalarWaveFunction scal(decay[1]->momentum(),decay[1]->dataPtr(),outgoing); Energy2 scale(sqr(inpart.mass())); for(unsigned int if1 = 0; if1 < 2; ++if1) { for(unsigned int if2 = 0; if2 < 4; ++if2) { if(ferm) ME()(if1, if2, 0) = abstractVertex_->evaluate(scale,wave_[if1],RSwavebar_[if2],scal); else ME()(if1, if2, 0) = abstractVertex_->evaluate(scale,RSwave_[if2],wavebar_[if1],scal); } } double output = (ME().contract(rho_)).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(), decay[1]->dataPtr()); // test code // Energy q = inpart.mass(); // Energy m1 = decay[0]->mass(); // Energy m2 = decay[1]->mass(); // Energy2 q2(q*q),m12(m1*m1),m22(m2*m2); // Energy2 pcm2(0.25*(q2*(q2-2.*m12-2.*m22)+(m12-m22)*(m12-m22))/q2); // Energy pcm(sqrt(pcm2)); // Energy Qp(sqrt((q+m1)*(q+m1)-m22)),Qm(sqrt((q-m1)*(q-m1)-m22)); // double r23(sqrt(2./3.)); // // couplings // Complex left = perturbativeVertex_-> left()*perturbativeVertex_-> norm(); // Complex right = perturbativeVertex_->right()*perturbativeVertex_-> norm(); // complex<InvEnergy> A1 = 0.5*(left+right)*UnitRemoval::InvE; // complex<InvEnergy> B1 = 0.5*(right-left)*UnitRemoval::InvE; // complex<Energy> h1(-2.*r23*pcm*q/m1*Qm*B1); // complex<Energy> h2( 2.*r23*pcm*q/m1*Qp*A1); // cout << "testing 1/2->3/2 0 " // << output*scale/GeV2 << " " // << real(h1*conj(h1)+h2*conj(h2))/4./GeV2 << " " // << real(h1*conj(h1)+h2*conj(h2))/4./(output*scale) << endl; // return the answer return output; } Energy FRSDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(perturbativeVertex_) { Energy q = inpart.second; Energy m1 = outa.second; Energy m2 = outb.second; Energy2 q2(q*q),m12(m1*m1),m22(m2*m2); Energy2 pcm2(0.25*(q2*(q2-2.*m12-2.*m22)+(m12-m22)*(m12-m22))/q2); Energy pcm(sqrt(pcm2)); Energy Qp(sqrt((q+m1)*(q+m1)-m22)),Qm(sqrt((q-m1)*(q-m1)-m22)); double r23(sqrt(2./3.)); // couplings tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; perturbativeVertex_->setCoupling(sqr(inpart.second), outa.first, in, outb.first); Complex left = perturbativeVertex_-> left()*perturbativeVertex_-> norm(); Complex right = perturbativeVertex_->right()*perturbativeVertex_-> norm(); complex<InvEnergy> A1 = 0.5*(left+right)*UnitRemoval::InvE; complex<InvEnergy> B1 = 0.5*(right-left)*UnitRemoval::InvE; complex<Energy> h1(-2.*r23*pcm*q/m1*Qm*B1); complex<Energy> h2( 2.*r23*pcm*q/m1*Qp*A1); double me2 = real(h1*conj(h1)+h2*conj(h2))/4./sqr(inpart.second); Energy output = me2*pcm/8./Constants::pi; // colour factor output *= colourFactor(inpart.first,outa.first,outb.first); // return the answer return output; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/FtoFFFDecayer.h���������������������������������������������������0000644�0001750�0001750�00000011253�11754474774�022123� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_FtoFFFDecayer_H #define HERWIG_FtoFFFDecayer_H // // This is the declaration of the FtoFFFDecayer class. // #include "GeneralThreeBodyDecayer.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h" namespace Herwig { using namespace ThePEG; /** * The FtoFFFDecayer class provides the general matrix elements for the * decay of a (anti)fermion to three (anti)fermions. * * @see \ref FtoFFFDecayerInterfaces "The interfaces" * defined for FtoFFFDecayer. */ class FtoFFFDecayer: public GeneralThreeBodyDecayer { public: /** * Return the matrix element squared for a given mode and phase-space channel * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 (or higher body) partial width * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FtoFFFDecayer> initFtoFFFDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FtoFFFDecayer & operator=(const FtoFFFDecayer &); private: /** * Store the vector of FFSVertex pairs */ vector<pair<AbstractFFSVertexPtr, AbstractFFSVertexPtr> > _sca; /** * Store the vector of FFVVertex pairs */ vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > _vec; /** * Store the vector of FFTVertex pairs */ vector<pair<AbstractFFTVertexPtr, AbstractFFTVertexPtr> > _ten; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Spinors for incoming particle */ mutable pair<vector<SpinorWaveFunction>,vector<SpinorBarWaveFunction> > _inwave; /** * Spinors for outgoing particles */ mutable pair<vector<SpinorWaveFunction>,vector<SpinorBarWaveFunction> > _outwave[3]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FtoFFFDecayer. */ template <> struct BaseClassTrait<Herwig::FtoFFFDecayer,1> { /** Typedef of the first base class of FtoFFFDecayer. */ typedef Herwig::GeneralThreeBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the FtoFFFDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FtoFFFDecayer> : public ClassTraitsBase<Herwig::FtoFFFDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::FtoFFFDecayer"; } }; /** @endcond */ } #endif /* HERWIG_FtoFFFDecayer_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/VtoFFVDecayer.h���������������������������������������������������0000644�0001750�0001750�00000012204�11754474774�022160� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef THEPEG_VtoFFVDecayer_H #define THEPEG_VtoFFVDecayer_H // // This is the declaration of the VtoFFVDecayer class. // #include "GeneralThreeBodyDecayer.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the VtoFFVDecayer class. * * @see \ref VtoFFVDecayerInterfaces "The interfaces" * defined for VtoFFVDecayer. */ class VtoFFVDecayer: public GeneralThreeBodyDecayer { public: /** * Return the matrix element squared for a given mode and phase-space channel * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 (or higher body) partial width * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of * calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<VtoFFVDecayer> initVtoFFVDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VtoFFVDecayer & operator=(const VtoFFVDecayer &); private: /** * Store the vertices for scalar intrermediate */ vector<pair<AbstractVVSVertexPtr, AbstractFFSVertexPtr> > _sca; /** * Store the vertices for fermion intrermediate */ vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > _fer; /** * Store the vertices for vector intrermediate */ vector<pair<AbstractVVVVertexPtr, AbstractFFVVertexPtr> > _vec; /** * Store the vertices for vector intrermediate */ vector<pair<AbstractVVTVertexPtr, AbstractFFTVertexPtr> > _ten; /** * Spinr density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the decaying particle */ mutable vector<VectorWaveFunction> _inVector; /** * Scalar wavefunction for the decay products */ mutable ScalarWaveFunction _swave; /** * Polarization vectors for the decay products */ mutable vector<VectorWaveFunction> _outVector; /** * Spinors for the decay products */ mutable pair<vector<SpinorWaveFunction>,vector<SpinorBarWaveFunction> > _outspin[3]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Herwig::VtoFFVDecayer. */ template <> struct BaseClassTrait<Herwig::VtoFFVDecayer,1> { /** Typedef of the first base class of Herwig::VtoFFVDecayer. */ typedef Herwig::GeneralThreeBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the Herwig::VtoFFVDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VtoFFVDecayer> : public ClassTraitsBase<Herwig::VtoFFVDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::VtoFFVDecayer"; } }; /** @endcond */ } #endif /* THEPEG_VtoFFVDecayer_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/FFSDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000013203�11754474774�021622� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFSDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFSDecayer class. // #include "FFSDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/Utilities/Kinematics.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr FFSDecayer::clone() const { return new_ptr(*this); } IBPtr FFSDecayer::fullclone() const { return new_ptr(*this); } void FFSDecayer::doinit() { _perturbativeVertex = dynamic_ptr_cast<FFSVertexPtr> (getVertex()); _abstractVertex = dynamic_ptr_cast<AbstractFFSVertexPtr>(getVertex()); GeneralTwoBodyDecayer::doinit(); } void FFSDecayer::persistentOutput(PersistentOStream & os) const { os << _perturbativeVertex << _abstractVertex; } void FFSDecayer::persistentInput(PersistentIStream & is, int) { is >> _perturbativeVertex >> _abstractVertex; } ClassDescription<FFSDecayer> FFSDecayer::initFFSDecayer; // Definition of the static class description member. void FFSDecayer::Init() { static ClassDocumentation<FFSDecayer> documentation ("The FFSDecayer class implements the decay of a fermion to " "a fermion and a scalar."); } double FFSDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { //Need to use different barred or unbarred spinors depending on //whether particle is cc or not. int itype[2]; if(inpart.dataPtr()->CC()) itype[0] = inpart.id() > 0 ? 0 : 1; else itype[0] = 2; if(decay[0]->dataPtr()->CC()) itype[1] = decay[0]->id() > 0 ? 0 : 1; else itype[1] = 2; bool ferm(itype[0] == 0 || itype[1] == 0 || (itype[0] == 2 && itype[1] == 2)); if(meopt==Initialize) { // spinors and rho if(ferm) { SpinorWaveFunction ::calculateWaveFunctions(_wave,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); if(_wave[0].wave().Type() != u_spinortype) for(unsigned int ix = 0; ix < 2; ++ix) _wave [ix].conjugate(); } else { SpinorBarWaveFunction::calculateWaveFunctions(_wavebar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); if(_wavebar[0].wave().Type() != v_spinortype) for(unsigned int ix = 0; ix < 2; ++ix) _wavebar[ix].conjugate(); } ME(DecayMatrixElement(PDT::Spin1Half,PDT::Spin1Half,PDT::Spin0)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(ferm) { SpinorWaveFunction:: constructSpinInfo(_wave,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorBarWaveFunction::constructSpinInfo(_wavebar,decay[0],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(_wavebar,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorWaveFunction::constructSpinInfo(_wave,decay[0],outgoing,true); } ScalarWaveFunction::constructSpinInfo(decay[1],outgoing,true); } if(ferm) SpinorBarWaveFunction:: calculateWaveFunctions(_wavebar,decay[0],outgoing); else SpinorWaveFunction:: calculateWaveFunctions(_wave ,decay[0],outgoing); ScalarWaveFunction scal(decay[1]->momentum(),decay[1]->dataPtr(),outgoing); Energy2 scale(sqr(inpart.mass())); for(unsigned int if1 = 0; if1 < 2; ++if1) { for(unsigned int if2 = 0; if2 < 2; ++if2) { if(ferm) ME()(if1, if2, 0) = _abstractVertex->evaluate(scale,_wave[if1],_wavebar[if2],scal); else ME()(if2, if1, 0) = _abstractVertex->evaluate(scale,_wave[if1],_wavebar[if2],scal); } } double output = (ME().contract(_rho)).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(), decay[1]->dataPtr()); // return the answer return output; } Energy FFSDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(_perturbativeVertex) { double mu1(0.),mu2(0.); tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; if(outa.first->iSpin() == PDT::Spin1Half) { mu1 = outa.second/inpart.second; mu2 = outb.second/inpart.second; _perturbativeVertex->setCoupling(sqr(inpart.second), in, outa.first, outb.first); } else { mu1 = outb.second/inpart.second; mu2 = outa.second/inpart.second; _perturbativeVertex->setCoupling(sqr(inpart.second), in, outb.first, outa.first); } double c2 = norm(_perturbativeVertex->norm()); Complex cl = _perturbativeVertex->left(); Complex cr = _perturbativeVertex->right(); double me2 = c2*( (norm(cl) + norm(cr))*(1. + sqr(mu1) - sqr(mu2)) + 2.*mu1*(conj(cl)*cr + conj(cr)*cl).real() ); Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.second, outa.second, outb.second); Energy output = me2*pcm/16./Constants::pi; // colour factor output *= colourFactor(inpart.first,outa.first,outb.first); // return the answer return output; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/TFFDecayer.h������������������������������������������������������0000644�0001750�0001750�00000011735�11754474774�021475� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TFFDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TFFDecayer_H #define HERWIG_TFFDecayer_H // // This is the declaration of the TFFDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/Vertex/Tensor/FFTVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::FFTVertexPtr; /** \ingroup Decay * The TFFDecayer class implements the decay of a tensor * to 2 fermions in a general model. It holds an FFTVertex pointer * that must be typecast from the VertexBase pointer held in * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see GeneralTwoBodyDecayer */ class TFFDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ TFFDecayer() {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<TFFDecayer> initTFFDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TFFDecayer & operator=(const TFFDecayer &); private: /** * Abstract pointer to AbstractFFTVertex */ AbstractFFTVertexPtr _abstractVertex; /** * Pointer to the perturbative vertex */ FFTVertexPtr _perturbativeVertex; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization tensors for the decaying particle */ mutable vector<TensorWaveFunction> _tensors; /** * Spinors for the decay products */ mutable vector<SpinorWaveFunction> _wave; /** * Barred spinors for the decay products */ mutable vector<SpinorBarWaveFunction> _wavebar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of TFFDecayer. */ template <> struct BaseClassTrait<Herwig::TFFDecayer,1> { /** Typedef of the first base class of TFFDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the TFFDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::TFFDecayer> : public ClassTraitsBase<Herwig::TFFDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::TFFDecayer"; } }; /** @endcond */ } #endif /* HERWIG_TFFDecayer_H */ �����������������������������������herwig++-2.6.0.orig/Decay/General/GeneralThreeBodyDecayer.fh����������������������������������������0000644�0001750�0001750�00000000603�11754474774�024377� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the GeneralThreeBodyDecayer class. // #ifndef HERWIG_GeneralThreeBodyDecayer_FH #define HERWIG_GeneralThreeBodyDecayer_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class GeneralThreeBodyDecayer; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::GeneralThreeBodyDecayer,GeneralThreeBodyDecayerPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/GeneralThreeBodyDecayer.cc����������������������������������������0000644�0001750�0001750�00000057621�11754474774�024403� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the GeneralThreeBodyDecayer class. // #include "GeneralThreeBodyDecayer.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" using namespace Herwig; /** * A struct to order the particles in the same way as in the DecayMode's */ struct ParticleOrdering { bool operator()(PDPtr p1, PDPtr p2) { 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() ); } }; /** * A set of ParticleData objects ordered as for the DecayMode's */ typedef multiset<PDPtr,ParticleOrdering> OrderedParticles; void GeneralThreeBodyDecayer::persistentOutput(PersistentOStream & os) const { os << _incoming << _outgoing << _diagrams << _diagmap << _colour << _colourLargeNC << _nflow << _widthopt << _reftag << _reftagcc << _intOpt << _relerr; } void GeneralThreeBodyDecayer::persistentInput(PersistentIStream & is, int) { is >> _incoming >> _outgoing >> _diagrams >> _diagmap >> _colour >> _colourLargeNC >> _nflow >> _widthopt >> _reftag >> _reftagcc >> _intOpt >> _relerr; } AbstractClassDescription<GeneralThreeBodyDecayer> GeneralThreeBodyDecayer::initGeneralThreeBodyDecayer; // Definition of the static class description member. void GeneralThreeBodyDecayer::Init() { static ClassDocumentation<GeneralThreeBodyDecayer> documentation ("The GeneralThreeBodyDecayer class is the base class for the implementation of" " all three body decays based on spin structures in Herwig++."); static Switch<GeneralThreeBodyDecayer,unsigned int> interfaceWidthOption ("WidthOption", "Option for the treatment of the widths of the intermediates", &GeneralThreeBodyDecayer::_widthopt, 1, false, false); static SwitchOption interfaceWidthOptionFixed (interfaceWidthOption, "Fixed", "Use fixed widths", 1); static SwitchOption interfaceWidthOptionRunning (interfaceWidthOption, "Running", "Use running widths", 2); static SwitchOption interfaceWidthOptionZero (interfaceWidthOption, "Zero", "Set the widths to zero", 3); static Switch<GeneralThreeBodyDecayer,unsigned int> interfacePartialWidthIntegration ("PartialWidthIntegration", "Switch to control the partial width integration", &GeneralThreeBodyDecayer::_intOpt, 0, false, false); static SwitchOption interfacePartialWidthIntegrationAllPoles (interfacePartialWidthIntegration, "AllPoles", "Include all potential poles", 0); static SwitchOption interfacePartialWidthIntegrationShallowestPole (interfacePartialWidthIntegration, "ShallowestPole", "Only include the shallowest pole", 1); static Parameter<GeneralThreeBodyDecayer,double> interfaceRelativeError ("RelativeError", "The relative error for the GQ integration of the partial width", &GeneralThreeBodyDecayer::_relerr, 1e-2, 1e-10, 1., false, false, Interface::limited); } ParticleVector GeneralThreeBodyDecayer::decay(const Particle & parent, const tPDVector & children) const { // return empty vector if products heavier than parent Energy mout(ZERO); for(tPDVector::const_iterator it=children.begin(); it!=children.end();++it) mout+=(**it).massMin(); if(mout>parent.mass()) return ParticleVector(); // generate the decay bool cc; int imode=modeNumber(cc,parent.dataPtr(),children); // generate the kinematics ParticleVector decay=generate(generateIntermediates(),cc,imode,parent); // make the colour connections colourConnections(parent, decay); // return the answer return decay; } int GeneralThreeBodyDecayer:: modeNumber(bool & cc, tcPDPtr in, const tPDVector & outin) const { assert( !_reftag.empty() && !_reftagcc.empty() ); // check number of outgoing particles if( outin.size() != 3 || abs(in->id()) != _incoming->id() ) return -1; OrderedParticles testmode(outin.begin(), outin.end()); OrderedParticles::const_iterator dit = testmode.begin(); string testtag(in->name() + "->"); for( unsigned int i = 1; dit != testmode.end(); ++dit, ++i) { testtag += (**dit).name(); if( i != 3 ) testtag += string(","); } if( testtag == _reftag ) { cc = false; return 0; } else if ( testtag == _reftagcc ) { cc = true; return 0; } else return -1; } void GeneralThreeBodyDecayer::setDecayInfo(PDPtr incoming, vector<PDPtr> outgoing, const vector<TBDiagram> & process, const vector<DVector> & factors, const vector<DVector> & Ncfactors, const unsigned int ncf) { // set the member variables from the info supplied _incoming = incoming; _outgoing = outgoing; _diagrams = process; _colour = factors; _colourLargeNC = Ncfactors; _nflow = ncf; assert( _outgoing.size() == 3 ); // Construct reference tags for testing in modeNumber function OrderedParticles refmode(_outgoing.begin(), _outgoing.end()); OrderedParticles::const_iterator dit = refmode.begin(); _reftag = _incoming->name() + "->"; for( unsigned int i = 1; dit != refmode.end(); ++dit, ++i) { _reftag += (**dit).name(); if( i != 3 ) _reftag += string(","); } //CC-mode refmode.clear(); _reftagcc = _incoming->CC() ? _incoming->CC()->name() : _incoming->name(); _reftagcc += "->"; for( unsigned int i = 0; i < 3; ++i ) { if( _outgoing[i]->CC() ) refmode.insert( _outgoing[i]->CC() ); else refmode.insert( _outgoing[i] ); } dit = refmode.begin(); for( unsigned int i = 1; dit != refmode.end(); ++dit , ++i) { _reftagcc += (**dit).name(); if( i != 3 ) _reftagcc += string(","); } } void GeneralThreeBodyDecayer::doinit() { DecayIntegrator::doinit(); // create the phase space integrator tPDVector extpart(1,_incoming); extpart.insert(extpart.end(),_outgoing.begin(),_outgoing.end()); // create the integration channels for the decay DecayPhaseSpaceModePtr mode(new_ptr(DecayPhaseSpaceMode(extpart,this,true))); DecayPhaseSpaceChannelPtr newchannel; // create the phase-space channels for the integration unsigned int nmode(0); for(unsigned int ix=0;ix<_diagrams.size();++ix) { if(_diagrams[ix].channelType==TBDiagram::fourPoint|| _diagrams[ix].channelType==TBDiagram::UNDEFINED) continue; // create the new channel newchannel=new_ptr(DecayPhaseSpaceChannel(mode)); if(_diagrams[ix].channelType==TBDiagram::channel23) { newchannel->addIntermediate(extpart[0],0,0.0,-1,1); newchannel->addIntermediate(_diagrams[ix].intermediate,0,0.0, 2,3); } else if(_diagrams[ix].channelType==TBDiagram::channel13) { newchannel->addIntermediate(extpart[0],0,0.0,-1,2); newchannel->addIntermediate(_diagrams[ix].intermediate,0,0.0, 1,3); } else if(_diagrams[ix].channelType==TBDiagram::channel12) { newchannel->addIntermediate(extpart[0],0,0.0,-1,3); newchannel->addIntermediate(_diagrams[ix].intermediate,0,0.0, 1,2); } _diagmap.push_back(ix); mode->addChannel(newchannel); ++nmode; } if(nmode==0) { string mode = extpart[0]->PDGName() + "->"; for(unsigned int ix=1;ix<extpart.size();++ix) mode += extpart[ix]->PDGName() + " "; throw Exception() << "No decay channels in GeneralThreeBodyDecayer::" << "doinit() for " << mode << "\n" << Exception::runerror; } // add the mode vector<double> wgt(nmode,1./double(nmode)); addMode(mode,1.,wgt); } double GeneralThreeBodyDecayer:: threeBodyMatrixElement(const int imode, const Energy2 q2, const Energy2 s3, const Energy2 s2, const Energy2 s1, const Energy m1, const Energy m2, const Energy m3) const { // calculate the momenta of the outgoing particles Energy m0=sqrt(q2); // energies Energy eout[3] = {0.5*(q2+sqr(m1)-s1)/m0, 0.5*(q2+sqr(m2)-s2)/m0, 0.5*(q2+sqr(m3)-s3)/m0}; // magnitudes of the momenta Energy pout[3] = {sqrt(sqr(eout[0])-sqr(m1)), sqrt(sqr(eout[1])-sqr(m2)), sqrt(sqr(eout[2])-sqr(m3))}; double cos2 = 0.5*(sqr(pout[0])+sqr(pout[1])-sqr(pout[2]))/pout[0]/pout[1]; double cos3 = 0.5*(sqr(pout[0])-sqr(pout[1])+sqr(pout[2]))/pout[0]/pout[2]; double sin2 = sqrt(1.-sqr(cos2)), sin3 = sqrt(1.-sqr(cos3)); Lorentz5Momentum out[3]= {Lorentz5Momentum( ZERO , ZERO , pout[0] , eout[0] , m1), Lorentz5Momentum( pout[1]*sin2 , ZERO , -pout[1]*cos2 , eout[1] , m2), Lorentz5Momentum( -pout[2]*sin3 , ZERO , -pout[2]*cos3 , eout[2] , m3)}; // create the incoming PPtr inpart=mode(imode)->externalParticles(0)-> produceParticle(Lorentz5Momentum(sqrt(q2))); // and outgoing particles ParticleVector decay; for(unsigned int ix=1;ix<4;++ix) decay.push_back(mode(imode)->externalParticles(ix)->produceParticle(out[ix-1])); // return the matrix element return me2(-1,*inpart,decay,Initialize); } double GeneralThreeBodyDecayer::brat(const DecayMode &, const Particle & p, double oldbrat) const { ParticleVector children = p.children(); if( children.size() != 3 || !p.data().widthGenerator() ) return oldbrat; // partial width for this mode Energy scale = p.mass(); Energy pwidth = partialWidth( make_pair(p.dataPtr(), scale), make_pair(children[0]->dataPtr(), children[0]->mass()), make_pair(children[1]->dataPtr(), children[1]->mass()), make_pair(children[2]->dataPtr(), children[2]->mass()) ); Energy width = p.data().widthGenerator()->width(p.data(), scale); return pwidth/width; } Energy GeneralThreeBodyDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb, PMPair outc) const { if(inpart.second<outa.second+outb.second+outc.second) return ZERO; // create the object to calculate the width if it doesn't all ready exist if(!_widthcalc) { string tag = _incoming->name() + "->"; tag += _outgoing[0]->name() + "," + _outgoing[1]->name() + "," + _outgoing[2]->name() + ";"; DMPtr dm = generator()->findDecayMode(tag); _widthcalc = threeBodyMEIntegrator(*dm); } return _widthcalc->partialWidth(sqr(inpart.second)); } void GeneralThreeBodyDecayer:: colourConnections(const Particle & parent, const ParticleVector & out) const { // first extract the outgoing particles and intermediate PPtr inter; ParticleVector outgoing; if(!generateIntermediates()) { outgoing=out; } else { // find the diagram unsigned int idiag = diagramMap()[mode(imode())->selectedChannel()]; PPtr child; for(unsigned int ix=0;ix<out.size();++ix) { if(out[ix]->children().empty()) child = out[ix]; else inter = out[ix]; } outgoing.resize(3); switch(_diagrams[idiag].channelType) { case TBDiagram::channel23: outgoing[0] = child; outgoing[1] = inter->children()[0]; outgoing[2] = inter->children()[1]; break; case TBDiagram::channel13: outgoing[0] = inter->children()[0]; outgoing[1] = child; outgoing[2] = inter->children()[1]; break; case TBDiagram::channel12: outgoing[0] = inter->children()[0]; outgoing[1] = inter->children()[1]; outgoing[2] = child; break; default: throw Exception() << "unknown diagram type in GeneralThreeBodyDecayer::" << "colourConnections()" << Exception::runerror; } } // extract colour of the incoming and outgoing particles PDT::Colour inColour(parent.data().iColour()); vector<PDT::Colour> outColour; vector<int> singlet,octet,triplet,antitriplet; for(unsigned int ix=0;ix<outgoing.size();++ix) { outColour.push_back(outgoing[ix]->data().iColour()); switch(outColour.back()) { case PDT::Colour0 : singlet.push_back(ix); break; case PDT::Colour3 : triplet.push_back(ix); break; case PDT::Colour3bar: antitriplet.push_back(ix); break; case PDT::Colour8 : octet.push_back(ix); break; default: throw Exception() << "Unknown colour for particle in GeneralThreeBodyDecayer::" << "colourConnections()" << Exception::runerror; } } // colour neutral decaying particle if ( inColour == PDT::Colour0) { // options are all neutral or triplet/antitriplet+ neutral if(singlet.size()==3) return; else if(singlet.size()==1&&triplet.size()==1&&antitriplet.size()==1) { outgoing[triplet[0]]->antiColourNeighbour(outgoing[antitriplet[0]]); // add intermediate if needed if(inter&&inter->coloured()) { if(inter->dataPtr()->iColour()==PDT::Colour3) outgoing[triplet[0]]->colourLine()->addColoured(inter); else if(inter->dataPtr()->iColour()==PDT::Colour3bar) outgoing[triplet[0]]->colourLine()->addAntiColoured(inter); } } else if(octet.size()==1&&triplet.size()==1&&antitriplet.size()==1) { outgoing[ triplet[0]]->antiColourNeighbour(outgoing[octet[0]]); outgoing[antitriplet[0]]-> colourNeighbour(outgoing[octet[0]]); if(inter&&inter->coloured()) { if(inter->dataPtr()->iColour()==PDT::Colour3) outgoing[antitriplet[0]]->antiColourLine()->addColoured(inter); else if(inter->dataPtr()->iColour()==PDT::Colour3bar) outgoing[ triplet[0]]-> colourLine()->addAntiColoured(inter); else if(inter->dataPtr()->iColour()==PDT::Colour8) { outgoing[antitriplet[0]]->antiColourLine()->addAntiColoured(inter); outgoing[ triplet[0]]-> colourLine()->addColoured(inter); } } } else { string mode = parent.PDGName() + " -> " + out[0]->PDGName() + " " + out[1]->PDGName() + " " + out[2]->PDGName(); throw Exception() << "Unknown colour structure in GeneralThreeBodyDecayer::" << "colourConnections() for singlet decaying particle " << mode << Exception::runerror; } } // colour triplet decaying particle else if( inColour == PDT::Colour3) { if(singlet.size()==2&&triplet.size()==1) { outgoing[triplet[0]]->incomingColour(const_ptr_cast<tPPtr>(&parent)); if(inter&&inter->coloured()) outgoing[triplet[0]]->colourLine()->addColoured(inter); } else if(antitriplet.size()==1&&triplet.size()==2) { if(colourFlow()==0) { outgoing[triplet[0]]->incomingColour(const_ptr_cast<tPPtr>(&parent)); outgoing[antitriplet[0]]->colourNeighbour(outgoing[triplet[1]]); if(inter&&inter->coloured()) { switch (inter->dataPtr()->iColour()) { case PDT::Colour8: inter->incomingColour(const_ptr_cast<tPPtr>(&parent)); outgoing[triplet[1]]->colourLine()->addAntiColoured(inter); break; default: string mode = parent.PDGName() + " -> " + out[0]->PDGName() + " " + out[1]->PDGName() + " " + out[2]->PDGName(); throw Exception() << "Unknown colour for intermediate in " << "GeneralThreeBodyDecayer::" << "colourConnections() for " << "decaying colour triplet " << mode << Exception::runerror; } } } else { outgoing[triplet[1]]->incomingColour(const_ptr_cast<tPPtr>(&parent)); outgoing[antitriplet[0]]->colourNeighbour(outgoing[triplet[0]]); if(inter&&inter->coloured()) { switch (inter->dataPtr()->iColour()) { case PDT::Colour8: inter->incomingColour(const_ptr_cast<tPPtr>(&parent)); outgoing[triplet[0]]->colourLine()->addAntiColoured(inter); break; default: string mode = parent.PDGName() + " -> " + out[0]->PDGName() + " " + out[1]->PDGName() + " " + out[2]->PDGName(); throw Exception() << "Unknown colour for intermediate in " << "GeneralThreeBodyDecayer::" << "colourConnections() for " << "decaying colour triplet " << mode << Exception::runerror; } } } } else if (singlet.size()==1&&triplet.size()==1&&octet.size()==1) { if(inter) { if(inter->children()[0]->dataPtr()->iColour()==PDT::Colour8 || inter->children()[1]->dataPtr()->iColour()==PDT::Colour8) { inter->incomingColour(const_ptr_cast<tPPtr>(&parent)); outgoing[octet[0]]->incomingColour(inter); outgoing[octet[0]]->colourNeighbour(outgoing[triplet[0]]); } else { outgoing[octet[0]]->incomingColour(inter); outgoing[octet[0]]->colourNeighbour(inter); outgoing[triplet[0]]->incomingColour(inter); } } else { outgoing[octet[0]]->incomingColour(const_ptr_cast<tPPtr>(&parent)); outgoing[octet[0]]->colourNeighbour(outgoing[triplet[0]]); } } else { string mode = parent.PDGName() + " -> " + out[0]->PDGName() + " " + out[1]->PDGName() + " " + out[2]->PDGName(); throw Exception() << "Unknown colour structure in GeneralThreeBodyDecayer::" << "colourConnections() for triplet decaying particle " << mode << Exception::runerror; } } else if( inColour == PDT::Colour3bar) { if(singlet.size()==2&&antitriplet.size()==1) { outgoing[antitriplet[0]]->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); } else if(antitriplet.size()==2&&triplet.size()==1) { if(colourFlow()==0) { outgoing[antitriplet[0]]->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); outgoing[triplet[0]]->antiColourNeighbour(outgoing[antitriplet[1]]); if(inter&&inter->coloured()) { switch (inter->dataPtr()->iColour()) { case PDT::Colour8: inter->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); outgoing[antitriplet[1]]->antiColourLine()->addAntiColoured(inter); break; default: string mode = parent.PDGName() + " -> " + out[0]->PDGName() + " " + out[1]->PDGName() + " " + out[2]->PDGName(); throw Exception() << "Unknown colour for intermediate in" << " GeneralThreeBodyDecayer::" << "colourConnections() for " << "decaying colour antitriplet " << mode << Exception::runerror; } } } else { outgoing[antitriplet[1]]->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); outgoing[triplet[0]]->antiColourNeighbour(outgoing[antitriplet[0]]); if(inter&&inter->coloured()) { switch (inter->dataPtr()->iColour()) { case PDT::Colour8: inter->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); outgoing[antitriplet[0]]->antiColourLine()->addAntiColoured(inter); break; default: string mode = parent.PDGName() + " -> " + out[0]->PDGName() + " " + out[1]->PDGName() + " " + out[2]->PDGName(); throw Exception() << "Unknown colour for intermediate in " << "GeneralThreeBodyDecayer::" << "colourConnections() for " << "decaying colour antitriplet " << mode << Exception::runerror; } } } } else if (singlet.size()==1&&antitriplet.size()==1&&octet.size()==1) { if(inter) { if(inter->children()[0]->dataPtr()->iColour()==PDT::Colour8 || inter->children()[1]->dataPtr()->iColour()==PDT::Colour8) { inter->incomingColour(const_ptr_cast<tPPtr>(&parent)); outgoing[octet[0]]->incomingAntiColour(inter); outgoing[octet[0]]->antiColourNeighbour(outgoing[antitriplet[0]]); } else { outgoing[octet[0]]->incomingAntiColour(inter); outgoing[octet[0]]->antiColourNeighbour(inter); outgoing[antitriplet[0]]->incomingAntiColour(inter); } } else { outgoing[octet[0]]->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); outgoing[octet[0]]->antiColourNeighbour(outgoing[antitriplet[0]]); } } else { string mode = parent.PDGName() + " -> " + out[0]->PDGName() + " " + out[1]->PDGName() + " " + out[2]->PDGName(); throw Exception() << "Unknown colour structure in GeneralThreeBodyDecayer::" << "colourConnections() for anti-triplet decaying particle" << mode << Exception::runerror; } } else if( inColour == PDT::Colour8) { if(triplet.size()==1&&antitriplet.size()==1&&singlet.size()==1) { outgoing[ triplet[0]]->incomingColour (const_ptr_cast<tPPtr>(&parent)); outgoing[antitriplet[0]]->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); if(inter&&inter->coloured()) { switch (inter->dataPtr()->iColour()) { case PDT::Colour3: outgoing[triplet[0]]->colourLine()->addColoured(inter); break; case PDT::Colour3bar: outgoing[antitriplet[0]]->antiColourLine()->addAntiColoured(inter); break; default: string mode = parent.PDGName() + " -> " + out[0]->PDGName() + " " + out[1]->PDGName() + " " + out[2]->PDGName(); throw Exception() << "Unknown colour for intermediate" << " in GeneralThreeBodyDecayer::" << "colourConnections() for " << "decaying colour octet " << mode << Exception::runerror; } } } else { string mode = parent.PDGName() + " -> " + out[0]->PDGName() + " " + out[1]->PDGName() + " " + out[2]->PDGName(); throw Exception() << "Unknown colour structure in GeneralThreeBodyDecayer::" << "colourConnections() for octet decaying particle" << mode << Exception::runerror; } } } void GeneralThreeBodyDecayer:: constructIntegratorChannels(vector<int> & intype, vector<Energy> & inmass, vector<Energy> & inwidth, vector<double> & inpow, vector<double> & inweights) const { Energy min = incoming()->mass(); int nchannel(0); pair<int,Energy> imin[4]={make_pair(-1,-1.*GeV),make_pair(-1,-1.*GeV), make_pair(-1,-1.*GeV),make_pair(-1,-1.*GeV)}; Energy absmin = -1e20*GeV; int minType = -1; for(unsigned int iy=0;iy<_diagmap.size();++iy) { unsigned int ix=_diagmap[iy]; if(getProcessInfo()[ix].channelType==TBDiagram::fourPoint) continue; Energy dm1(min-getProcessInfo()[ix].intermediate->mass()); Energy dm2(getProcessInfo()[ix].intermediate->mass()); int itype(0); if (getProcessInfo()[ix].channelType==TBDiagram::channel23) { dm1 -= outgoing()[0]->mass(); dm2 -= outgoing()[1]->mass()+outgoing()[2]->mass(); itype = 3; } else if(getProcessInfo()[ix].channelType==TBDiagram::channel13) { dm1 -= outgoing()[1]->mass(); dm2 -= outgoing()[0]->mass()+outgoing()[2]->mass(); itype = 2; } else if(getProcessInfo()[ix].channelType==TBDiagram::channel12) { dm1 -= outgoing()[2]->mass(); dm2 -= outgoing()[0]->mass()+outgoing()[1]->mass(); itype = 1; } if(dm1<ZERO||dm2<ZERO) { if (imin[itype].first < 0 || (dm1<ZERO && imin[itype].second < dm1) ) { imin[itype] = make_pair(ix,dm1); if(dm1<ZERO&&absmin<dm1) { absmin = dm1; minType = itype; } } continue; } if(getProcessInfo()[ix].intermediate->id()!=ParticleID::gamma) { intype.push_back(itype); inpow.push_back(0.); inmass.push_back(getProcessInfo()[ix].intermediate->mass()); inwidth.push_back(getProcessInfo()[ix].intermediate->width()); ++nchannel; } else if(getProcessInfo()[ix].intermediate->id()==ParticleID::gamma) { intype.push_back(itype); inpow.push_back(-2.); inmass.push_back(-1.*GeV); inwidth.push_back(-1.*GeV); ++nchannel; } } // physical poles, use them and return if(nchannel>0) { inweights = vector<double>(nchannel,1./double(nchannel)); return; } // use shallowest pole else if(_intOpt==1&&minType>0) { intype.push_back(minType); if(getProcessInfo()[imin[minType].first].intermediate->id()!=ParticleID::gamma) { inpow.push_back(0.); inmass.push_back(getProcessInfo()[imin[minType].first].intermediate->mass()); inwidth.push_back(getProcessInfo()[imin[minType].first].intermediate->width()); } else { inpow.push_back(-2.); inmass.push_back(-1.*GeV); inwidth.push_back(-1.*GeV); } inweights = vector<double>(1,1.); return; } for(unsigned int ix=1;ix<4;++ix) { if(imin[ix].first>=0) { intype.push_back(ix); if(getProcessInfo()[imin[ix].first].intermediate->id()!=ParticleID::gamma) { inpow.push_back(0.); inmass.push_back(getProcessInfo()[imin[ix].first].intermediate->mass()); inwidth.push_back(getProcessInfo()[imin[ix].first].intermediate->width()); } else { inpow.push_back(-2.); inmass.push_back(-1.*GeV); inwidth.push_back(-1.*GeV); } ++nchannel; } } inweights = vector<double>(nchannel,1./double(nchannel)); } ���������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/FFSDecayer.h������������������������������������������������������0000644�0001750�0001750�00000011634�11754474774�021472� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFSDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFSDecayer_H #define HERWIG_FFSDecayer_H // // This is the declaration of the FFSDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/Vertex/Scalar/FFSVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::FFSVertexPtr; /** \ingroup Decay * The FFSDecayer class implements the decay of a fermion * to a fermion and a vector in a general model. It holds an FFVVertex * pointer that must be typecast from the VertexBase pointer held in * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see GeneralTwoBodyDecayer */ class FFSDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ FFSDecayer() {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FFSDecayer> initFFSDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFSDecayer & operator=(const FFSDecayer &); private: /** * Abstract pointer to AbstractFFSVertex */ AbstractFFSVertexPtr _abstractVertex; /** * Pointer to the perturbative vertex */ FFSVertexPtr _perturbativeVertex; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Spinor wavefunctions */ mutable vector<SpinorWaveFunction> _wave ; /** * Barred spinor wavefunctions */ mutable vector<SpinorBarWaveFunction> _wavebar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FFSDecayer. */ template <> struct BaseClassTrait<Herwig::FFSDecayer,1> { /** Typedef of the first base class of FFSDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the FFSDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FFSDecayer> : public ClassTraitsBase<Herwig::FFSDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::FFSDecayer"; } }; /** @endcond */ } #endif /* HERWIG_FFSDecayer_H */ ����������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/Makefile.am�������������������������������������������������������0000644�0001750�0001750�00000001760�11754474774�021441� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwGeneralDecay.la libHwGeneralDecay_la_SOURCES = \ GeneralTwoBodyDecayer.h GeneralTwoBodyDecayer.fh GeneralTwoBodyDecayer.cc \ GeneralThreeBodyDecayer.h GeneralThreeBodyDecayer.fh \ GeneralThreeBodyDecayer.cc \ FFSDecayer.h FFSDecayer.cc \ FFVDecayer.h FFVDecayer.cc \ SFFDecayer.h SFFDecayer.cc \ SSSDecayer.h SSSDecayer.cc \ SSVDecayer.h SSVDecayer.cc \ SVVDecayer.h SVVDecayer.cc \ TFFDecayer.h TFFDecayer.cc \ TSSDecayer.h TSSDecayer.cc \ TVVDecayer.h TVVDecayer.cc \ VFFDecayer.h VFFDecayer.cc \ VSSDecayer.h VSSDecayer.cc \ VVSDecayer.h VVSDecayer.cc \ VVVDecayer.h VVVDecayer.cc \ SRFDecayer.h SRFDecayer.cc \ FRSDecayer.h FRSDecayer.cc \ FRVDecayer.h FRVDecayer.cc \ GeneralCurrentDecayer.h GeneralCurrentDecayer.fh GeneralCurrentDecayer.cc \ FFVCurrentDecayer.h FFVCurrentDecayer.cc \ FtoFFFDecayer.h FtoFFFDecayer.cc \ StoSFFDecayer.h StoSFFDecayer.cc \ StoFFVDecayer.h StoFFVDecayer.cc \ VtoFFVDecayer.h VtoFFVDecayer.cc \ FtoFVVDecayer.h FtoFVVDecayer.cc ����������������herwig++-2.6.0.orig/Decay/General/VVSDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000007422�11754474774�021670� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the VVSDecayer class. // #include "VVSDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr VVSDecayer::clone() const { return new_ptr(*this); } IBPtr VVSDecayer::fullclone() const { return new_ptr(*this); } void VVSDecayer::doinit() { _perturbativeVertex = dynamic_ptr_cast<VVSVertexPtr> (getVertex()); _abstractVertex = dynamic_ptr_cast<AbstractVVSVertexPtr>(getVertex()); GeneralTwoBodyDecayer::doinit(); } void VVSDecayer::persistentOutput(PersistentOStream & os) const { os << _abstractVertex << _perturbativeVertex; } void VVSDecayer::persistentInput(PersistentIStream & is, int) { is >> _abstractVertex >> _perturbativeVertex; } ClassDescription<VVSDecayer> VVSDecayer::initVVSDecayer; // Definition of the static class description member. void VVSDecayer::Init() { static ClassDocumentation<VVSDecayer> documentation ("The VVSDecayer class implements the decay of a vector" " to a vector and a scalar"); } double VVSDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { bool massless = ( decay[0]->id()==ParticleID::gamma || decay[0]->id()==ParticleID::g ); if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors[0],_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); ME(DecayMatrixElement(PDT::Spin1,PDT::Spin1,PDT::Spin0)); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors[0],const_ptr_cast<tPPtr>(&inpart), incoming,true,false); VectorWaveFunction:: constructSpinInfo(_vectors[1],decay[0],outgoing,true,massless); ScalarWaveFunction:: constructSpinInfo(decay[1],outgoing,true); return 0.; } VectorWaveFunction:: calculateWaveFunctions(_vectors[1],decay[0],outgoing,massless); ScalarWaveFunction sca(decay[1]->momentum(),decay[1]->dataPtr(),outgoing); Energy2 scale(sqr(inpart.mass())); for(unsigned int in=0;in<3;++in) { for(unsigned int out=0;out<3;++out) { if(massless&&out==1) ++out; ME()(in,out,0) = _abstractVertex->evaluate(scale,_vectors[0][in],_vectors[1][out],sca); } } double output=(ME().contract(_rho)).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(), decay[1]->dataPtr()); // return the answer return output; } Energy VVSDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(_perturbativeVertex) { Energy2 scale(sqr(inpart.second)); double mu1sq = sqr(outa.second/inpart.second); double mu2sq = sqr(outb.second/inpart.second); tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; if( outb.first->iSpin() == PDT::Spin0 ) _perturbativeVertex->setCoupling(sqr(inpart.second), in, outa.first, outb.first); else { _perturbativeVertex->setCoupling(sqr(inpart.second), in, outb.first, outa.first); swap(mu1sq, mu2sq); } double me2 = 2. + 0.25*sqr(1. + mu1sq - mu2sq)/mu1sq; Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.second,outa.second, outb.second); Energy output = norm(_perturbativeVertex->norm())*me2*pcm/ (24.*Constants::pi)/scale*UnitRemoval::E2; // colour factor output *= colourFactor(inpart.first,outa.first,outb.first); // return the answer return output; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/GeneralCurrentDecayer.h�������������������������������������������0000644�0001750�0001750�00000014267�11754474774�024001� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // GeneralCurrentDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_GeneralCurrentDecayer_H #define HERWIG_GeneralCurrentDecayer_H // // This is the declaration of the GeneralCurrentDecayer class. // #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/WeakCurrents/WeakDecayCurrent.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/Vertex/VertexBase.h" #include "GeneralCurrentDecayer.fh" namespace Herwig { using namespace ThePEG; using Helicity::VertexBasePtr; /** * Here is the documentation of the GeneralCurrentDecayer class. * * @see \ref GeneralCurrentDecayerInterfaces "The interfaces" * defined for GeneralCurrentDecayer. */ class GeneralCurrentDecayer: public DecayIntegrator { public: /** * The default constructor. */ GeneralCurrentDecayer() : _maxmass(5.*GeV), _wgtmax(0.) {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent,const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const = 0; /** * Function to return partial Width * @param inpart Pointer to incoming particle data object * @param outa Pointer to first outgoing particle data object * @param currout Pointer to particles in the current */ virtual Energy partialWidth(tPDPtr inpart, tPDPtr outa, vector<tPDPtr> currout) = 0; //@} /** * set up the decay */ void setDecayInfo(PDPtr in, PDPtr out, const vector<tPDPtr> & outCurrent, VertexBasePtr vertex, WeakDecayCurrentPtr current, Energy maxmass); 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 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} protected: /** * The number of the mode * @param cc Whether of not this is the charge conjugate of the defined mode * @param id The PDG codes of the particles */ int modeNumber(bool & cc, vector<long> id) const; /** * Access to the map between the number of the mode and the modes in * the current */ unsigned int mode() const { return _mode; } /** * Access to the weak current */ WeakDecayCurrentPtr weakCurrent() const { return _current; } /** * Get vertex pointer * @return a pointer to the vertex */ VertexBasePtr getVertex() const { return _theVertex; } private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<GeneralCurrentDecayer> initGeneralCurrentDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GeneralCurrentDecayer & operator=(const GeneralCurrentDecayer &); private: /** * Pointer to vertex set in inheriting class */ VertexBasePtr _theVertex; /** * Incoming particle **/ PDPtr _inpart; /** * First outgoing particle */ PDPtr _outpart; /** * Outgoing particles from the current */ vector<tPDPtr> _currentOut; /** * Pointer to the current */ WeakDecayCurrentPtr _current; /** * Maximum mass difference */ Energy _maxmass; /** * mapping of the modes to the currents */ unsigned int _mode; /** * location of the weights */ int _wgtloc; /** * the maximum weight */ double _wgtmax; /** * The weights for the different channels */ vector<double> _weights; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of GeneralCurrentDecayer. */ template <> struct BaseClassTrait<Herwig::GeneralCurrentDecayer,1> { /** Typedef of the first base class of GeneralCurrentDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** This template specialization informs ThePEG about the name of * the GeneralCurrentDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::GeneralCurrentDecayer> : public ClassTraitsBase<Herwig::GeneralCurrentDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::GeneralCurrentDecayer"; } }; /** @endcond */ } #endif /* HERWIG_GeneralCurrentDecayer_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/SSSDecayer.h������������������������������������������������������0000644�0001750�0001750�00000011425�11754474774�021522� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SSSDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSSDecayer_H #define HERWIG_SSSDecayer_H // // This is the declaration of the SSSDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/Vertex/Scalar/SSSVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::SSSVertexPtr; /** \ingroup Decay * The SSDecayer class implements the decay of a scalar * to 2 scalars in a general model. It holds a SSSVertex * pointer that must be typecast from the VertexBase pointer held in * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see GeneralTwoBodyDecayer */ class SSSDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ SSSDecayer() {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<SSSDecayer> initSSSDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSSDecayer & operator=(const SSSDecayer &); private: /** * Abstract pointer to AbstractSSSVertex */ AbstractSSSVertexPtr _abstractVertex; /** * Pointer to the perturbative vertex */ SSSVertexPtr _perturbativeVertex; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Scalar wavefunctions */ mutable Helicity::ScalarWaveFunction _swave; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSSDecayer. */ template <> struct BaseClassTrait<Herwig::SSSDecayer,1> { /** Typedef of the first base class of SSSDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the SSSDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SSSDecayer> : public ClassTraitsBase<Herwig::SSSDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::SSSDecayer"; } }; /** @endcond */ } #endif /* HERWIG_SSSDecayer_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/TVVDecayer.h������������������������������������������������������0000644�0001750�0001750�00000011653�11754474774�021534� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TVVDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TVVDecayer_H #define HERWIG_TVVDecayer_H // // This is the declaration of the TVVDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/Vertex/Tensor/VVTVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::VVTVertexPtr; /** \ingroup Decay * The TVVDecayer class implements the decay of a tensor * to 2 vector bosons in a general model. It holds a VVTVertex pointer * that must be typecast from the VertexBase pointer held in * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see GeneralTwoBodyDecayer */ class TVVDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ TVVDecayer() {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<TVVDecayer> initTVVDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TVVDecayer & operator=(const TVVDecayer &); private: /** * Abstract pointer to AbstractVVTVertex */ AbstractVVTVertexPtr _abstractVertex; /** * Pointer to the perturbative vertex */ VVTVertexPtr _perturbativeVertex; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization tensors of decaying particle */ mutable vector<Helicity::TensorWaveFunction> _tensors; /** * Polarization vectors of outgoing vector bosons */ mutable vector<Helicity::VectorWaveFunction> _vectors[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of TVVDecayer. */ template <> struct BaseClassTrait<Herwig::TVVDecayer,1> { /** Typedef of the first base class of TVVDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the TVVDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::TVVDecayer> : public ClassTraitsBase<Herwig::TVVDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::TVVDecayer"; } }; /** @endcond */ } #endif /* HERWIG_TVVDecayer_H */ �������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/SSVDecayer.h������������������������������������������������������0000644�0001750�0001750�00000011570�11754474774�021526� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SSVDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SSVDecayer_H #define HERWIG_SSVDecayer_H // // This is the declaration of the SSVDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h" #include "ThePEG/Repository/EventGenerator.h" namespace Herwig { using namespace ThePEG; using Helicity::VSSVertexPtr; /** \ingroup Decay * The SSVDecayer class implements the decay of a scalar to a vector * and a scalar in a general model. It holds an VSSVertex pointer * that must be typecast from the VertexBase pointer held in * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see GeneralTwoBodyDecayer */ class SSVDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ SSVDecayer() {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<SSVDecayer> initSSVDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SSVDecayer & operator=(const SSVDecayer &); private: /** * Abstract pointer to AbstractFFVVertex */ AbstractVSSVertexPtr _abstractVertex; /** * Pointer to the perturbative vertex */ VSSVertexPtr _perturbativeVertex; /** * Spinr density matrix */ mutable RhoDMatrix _rho; /** * Scalar wavefunction */ mutable Helicity::ScalarWaveFunction _swave; /** * Vector wavefunction */ mutable vector<Helicity::VectorWaveFunction> _vector; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SSVDecayer. */ template <> struct BaseClassTrait<Herwig::SSVDecayer,1> { /** Typedef of the first base class of SSVDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the SSVDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SSVDecayer> : public ClassTraitsBase<Herwig::SSVDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::SSVDecayer"; } }; /** @endcond */ } #endif /* HERWIG_SSVDecayer_H */ ����������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/VVSDecayer.h������������������������������������������������������0000644�0001750�0001750�00000011022�11754474774�021521� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef THEPEG_VVSDecayer_H #define THEPEG_VVSDecayer_H // // This is the declaration of the VVSDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Helicity/Vertex/Scalar/VVSVertex.h" #include "ThePEG/Repository/EventGenerator.h" namespace Herwig { using namespace ThePEG; using Helicity::VVSVertexPtr; /** \ingroup Decay * The VVSDecayer class implements the decay of a vector to a * vector and a scalar in a general model. It holds an VVSVertex pointer * that must be typecast from the VertexBase pointer helid in the * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see \ref VVSDecayerInterfaces "The interfaces" * defined for VVSDecayer. */ class VVSDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ VVSDecayer() {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<VVSDecayer> initVVSDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VVSDecayer & operator=(const VVSDecayer &); private: /** * Abstract pointer to AbstractVVSVertex */ AbstractVVSVertexPtr _abstractVertex; /** * Pointer to the perturbative vertex */ VVSVertexPtr _perturbativeVertex; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Vector wavefunctions */ mutable vector<Helicity::VectorWaveFunction> _vectors[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of VVSDecayer. */ template <> struct BaseClassTrait<VVSDecayer,1> { /** Typedef of the first base class of VVSDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the VVSDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<VVSDecayer> : public ClassTraitsBase<VVSDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::VVSDecayer"; } }; /** @endcond */ } #endif /* THEPEG_VVSDecayer_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/GeneralTwoBodyDecayer.cc������������������������������������������0000644�0001750�0001750�00000041606�11754474774�024101� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // GeneralTwoBodyDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the GeneralTwoBodyDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Utilities/Exception.h" using namespace Herwig; ParticleVector GeneralTwoBodyDecayer::decay(const Particle & parent, const tPDVector & children) const { // return empty vector if products heavier than parent Energy mout(ZERO); for(tPDVector::const_iterator it=children.begin(); it!=children.end();++it) mout+=(**it).massMin(); if(mout>parent.mass()) return ParticleVector(); // generate the decay bool cc; int imode=modeNumber(cc,parent.dataPtr(),children); // generate the kinematics ParticleVector decay=generate(generateIntermediates(),cc,imode,parent); // make the colour connections colourConnections(parent, decay); // return the answer return decay; } void GeneralTwoBodyDecayer::doinit() { DecayIntegrator::doinit(); assert( _theVertex ); assert( _incoming && _outgoing.size()==2); _theVertex->init(); //create phase space mode tPDVector extpart(3); extpart[0] = _incoming; extpart[1] = _outgoing[0]; extpart[2] = _outgoing[1]; addMode(new_ptr(DecayPhaseSpaceMode(extpart, this)), _maxweight, vector<double>()); } int GeneralTwoBodyDecayer::modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const { long parentID = parent->id(); long id1 = children[0]->id(); long id2 = children[1]->id(); cc = false; long out1 = _outgoing[0]->id(); long out2 = _outgoing[1]->id(); if( parentID == _incoming->id() && ((id1 == out1 && id2 == out2) || (id1 == out2 && id2 == out1)) ) { return 0; } else if(_incoming->CC() && parentID == _incoming->CC()->id()) { cc = true; if( _outgoing[0]->CC()) out1 = _outgoing[0]->CC()->id(); if( _outgoing[1]->CC()) out2 = _outgoing[1]->CC()->id(); if((id1 == out1 && id2 == out2) || (id1 == out2 && id2 == out1)) return 0; } return -1; } void GeneralTwoBodyDecayer:: colourConnections(const Particle & parent, const ParticleVector & out) const { PDT::Colour incColour(parent.data().iColour()); PDT::Colour outaColour(out[0]->data().iColour()); PDT::Colour outbColour(out[1]->data().iColour()); //incoming colour singlet if(incColour == PDT::Colour0) { // colour triplet-colourantitriplet if((outaColour == PDT::Colour3 && outbColour == PDT::Colour3bar) || (outaColour == PDT::Colour3bar && outbColour == PDT::Colour3)) { bool ac(out[0]->id() < 0); out[0]->colourNeighbour(out[1],!ac); } //colour octet else if(outaColour == PDT::Colour8 && outbColour == PDT::Colour8) { out[0]->colourNeighbour(out[1]); out[0]->antiColourNeighbour(out[1]); } // colour singlets else if(outaColour == PDT::Colour0 && outbColour == PDT::Colour0) { } // unknown else throw Exception() << "Unknown outgoing colours for decaying " << "colour singlet in " << "GeneralTwoBodyDecayer::colourConnections " << outaColour << " " << outbColour << Exception::runerror; } //incoming colour triplet else if(incColour == PDT::Colour3) { // colour triplet + singlet if(outaColour == PDT::Colour3 && outbColour == PDT::Colour0) { out[0]->incomingColour(const_ptr_cast<tPPtr>(&parent)); } //opposite order else if(outaColour == PDT::Colour0 && outbColour == PDT::Colour3) { out[1]->incomingColour(const_ptr_cast<tPPtr>(&parent)); } // octet + triplet else if(outaColour == PDT::Colour8 && outbColour == PDT::Colour3) { out[0]->incomingColour(const_ptr_cast<tPPtr>(&parent)); out[1]->antiColourNeighbour(out[0]); } //opposite order else if(outaColour == PDT::Colour3 && outbColour == PDT::Colour8) { out[1]->incomingColour(const_ptr_cast<tPPtr>(&parent)); out[0]->antiColourNeighbour(out[1]); } else throw Exception() << "Unknown outgoing colours for decaying " << "colour triplet in " << "GeneralTwoBodyDecayer::colourConnections() " << outaColour << " " << outbColour << Exception::runerror; } // incoming colour anti triplet else if(incColour == PDT::Colour3bar) { // colour antitriplet +singlet if(outaColour == PDT::Colour3bar && outbColour == PDT::Colour0) { out[0]->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); } //opposite order else if(outaColour == PDT::Colour0 && outbColour == PDT::Colour3bar) { out[1]->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); } //octet + antitriplet else if(outaColour == PDT::Colour3bar && outbColour == PDT::Colour8) { out[1]->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); out[0]->colourNeighbour(out[1]); } //opposite order else if(outaColour == PDT::Colour8 && outbColour == PDT::Colour3bar) { out[0]->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); out[1]->colourNeighbour(out[0]); } else throw Exception() << "Unknown outgoing colours for decaying " << "colour antitriplet " << "in GeneralTwoBodyDecayer::colourConnections() " << outaColour << " " << outbColour << Exception::runerror; } //incoming colour octet else if(incColour == PDT::Colour8) { // triplet-antitriplet if(outaColour == PDT::Colour3&&outbColour == PDT::Colour3bar) { out[0]->incomingColour(const_ptr_cast<tPPtr>(&parent)); out[1]->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); } // opposite order else if(outbColour == PDT::Colour3&&outaColour == PDT::Colour3bar) { out[0]->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); out[1]->incomingColour(const_ptr_cast<tPPtr>(&parent)); } // neutral octet else if(outaColour == PDT::Colour0&&outbColour == PDT::Colour8) { out[1]->incomingColour(const_ptr_cast<tPPtr>(&parent)); out[1]->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); } else if(outbColour == PDT::Colour0&&outaColour == PDT::Colour8) { out[0]->incomingColour(const_ptr_cast<tPPtr>(&parent)); out[0]->incomingAntiColour(const_ptr_cast<tPPtr>(&parent)); } else throw Exception() << "Unknown outgoing colours for decaying " << "colour octet " << "in GeneralTwoBodyDecayer::colourConnections() " << outaColour << " " << outbColour << Exception::runerror; } else if(incColour == PDT::Colour6) { if(outaColour == PDT::Colour3 && outbColour == PDT::Colour3) { tPPtr tempParent = const_ptr_cast<tPPtr>(&parent); Ptr<MultiColour>::pointer parentColour = dynamic_ptr_cast<Ptr<MultiColour>::pointer> (tempParent->colourInfo()); tColinePtr line1 = const_ptr_cast<tColinePtr>(parentColour->colourLines()[0]); line1->addColoured(dynamic_ptr_cast<tPPtr>(out[0])); tColinePtr line2 = const_ptr_cast<tColinePtr>(parentColour->colourLines()[1]); line2->addColoured(dynamic_ptr_cast<tPPtr>(out[1])); } else throw Exception() << "Unknown outgoing colours for decaying " << "colour sextet " << "in GeneralTwoBodyDecayer::colourConnections() " << outaColour << " " << outbColour << Exception::runerror; } else if(incColour == PDT::Colour6bar) { if(outaColour == PDT::Colour3bar && outbColour == PDT::Colour3bar) { tPPtr tempParent = const_ptr_cast<tPPtr>(&parent); Ptr<MultiColour>::pointer parentColour = dynamic_ptr_cast<Ptr<MultiColour>::pointer> (tempParent->colourInfo()); tColinePtr line1 = const_ptr_cast<tColinePtr>(parentColour->antiColourLines()[0]); line1->addAntiColoured(dynamic_ptr_cast<tPPtr>(out[0])); tColinePtr line2 = const_ptr_cast<tColinePtr>(parentColour->antiColourLines()[1]); line2->addAntiColoured(dynamic_ptr_cast<tPPtr>(out[1])); } else throw Exception() << "Unknown outgoing colours for decaying " << "colour anti-sextet " << "in GeneralTwoBodyDecayer::colourConnections() " << outaColour << " " << outbColour << Exception::runerror; } else throw Exception() << "Unknown incoming colour in " << "GeneralTwoBodyDecayer::colourConnections() " << incColour << Exception::runerror; } bool GeneralTwoBodyDecayer::twoBodyMEcode(const DecayMode & dm, int & mecode, double & coupling) const { assert(dm.parent()->id() == _incoming->id()); ParticleMSet::const_iterator pit = dm.products().begin(); long id1 = (*pit)->id(); ++pit; long id2 = (*pit)->id(); long id1t(_outgoing[0]->id()), id2t(_outgoing[1]->id()); mecode = -1; coupling = 1.; if( id1 == id1t && id2 == id2t ) { return true; } else if( id1 == id2t && id2 == id1t ) { return false; } else assert(false); return false; } void GeneralTwoBodyDecayer::persistentOutput(PersistentOStream & os) const { os << _theVertex << _incoming << _outgoing << _maxweight; } void GeneralTwoBodyDecayer::persistentInput(PersistentIStream & is, int) { is >> _theVertex >> _incoming >> _outgoing >> _maxweight; } AbstractClassDescription<GeneralTwoBodyDecayer> GeneralTwoBodyDecayer::initGeneralTwoBodyDecayer; // Definition of the static class description member. void GeneralTwoBodyDecayer::Init() { static ClassDocumentation<GeneralTwoBodyDecayer> documentation ("This class is designed to be a base class for all 2 body decays" "in a general model"); } double GeneralTwoBodyDecayer::brat(const DecayMode &, const Particle & p, double oldbrat) const { ParticleVector children = p.children(); if( children.size() != 2 || !p.data().widthGenerator() ) return oldbrat; // partial width for this mode Energy scale = p.mass(); Energy pwidth = partialWidth( make_pair(p.dataPtr(), scale), make_pair(children[0]->dataPtr(), children[0]->mass()), make_pair(children[1]->dataPtr(), children[1]->mass()) ); Energy width = p.data().widthGenerator()->width(p.data(), scale); return pwidth/width; } void GeneralTwoBodyDecayer::doinitrun() { DecayIntegrator::doinitrun(); for(unsigned int ix=0;ix<numberModes();++ix) { double fact = pow(1.5,int(mode(ix)->externalParticles(0)->iSpin())-1); mode(ix)->setMaxWeight(fact*mode(ix)->maxWeight()); } } double GeneralTwoBodyDecayer::colourFactor(tcPDPtr in, tcPDPtr out1, tcPDPtr out2) const { // identical particle symmetry factor double output = out1->id()==out2->id() ? 0.5 : 1.; // colour neutral incoming particle if(in->iColour()==PDT::Colour0) { // both colour neutral if(out1->iColour()==PDT::Colour0 && out2->iColour()==PDT::Colour0) output *= 1.; // colour triplet/ antitriplet else if((out1->iColour()==PDT::Colour3 && out2->iColour()==PDT::Colour3bar) || (out1->iColour()==PDT::Colour3bar && out2->iColour()==PDT::Colour3 ) ) { output *= 3.; } // colour octet colour octet else if(out1->iColour()==PDT::Colour8 && out2->iColour()==PDT::Colour8 ) { output *= 8.; } else throw Exception() << "Unknown colour for the outgoing particles" << " for decay colour neutral particle in " << "GeneralTwoBodyDecayer::colourFactor() for " << in->PDGName() << " -> " << out1->PDGName() << " " << out2->PDGName() << Exception::runerror; } // triplet else if(in->iColour()==PDT::Colour3) { // colour triplet + neutral if((out1->iColour()==PDT::Colour0 && out2->iColour()==PDT::Colour3) || (out1->iColour()==PDT::Colour3 && out2->iColour()==PDT::Colour0) ) { output *= 1.; } // colour triplet + octet else if((out1->iColour()==PDT::Colour8 && out2->iColour()==PDT::Colour3) || (out1->iColour()==PDT::Colour3 && out2->iColour()==PDT::Colour8) ) { output *= 4./3.; } else throw Exception() << "Unknown colour for the outgoing particles" << " for decay colour triplet particle in " << "GeneralTwoBodyDecayer::colourFactor() for " << in->PDGName() << " -> " << out1->PDGName() << " " << out2->PDGName() << Exception::runerror; } // anti triplet else if(in->iColour()==PDT::Colour3bar) { // colour anti triplet + neutral if((out1->iColour()==PDT::Colour0 && out2->iColour()==PDT::Colour3bar ) || (out1->iColour()==PDT::Colour3bar && out2->iColour()==PDT::Colour0 ) ) { output *= 1.; } // colour anti triplet + octet else if((out1->iColour()==PDT::Colour8 && out2->iColour()==PDT::Colour3bar ) || (out1->iColour()==PDT::Colour3bar && out2->iColour()==PDT::Colour8 ) ) { output *= 4./3.; } else throw Exception() << "Unknown colour for the outgoing particles" << " for decay colour anti triplet particle in " << "GeneralTwoBodyDecayer::colourFactor() for " << in->PDGName() << " -> " << out1->PDGName() << " " << out2->PDGName() << Exception::runerror; } else if(in->iColour()==PDT::Colour8) { // colour octet + neutral if((out1->iColour()==PDT::Colour0 && out2->iColour()==PDT::Colour8 ) || (out1->iColour()==PDT::Colour8 && out2->iColour()==PDT::Colour0 ) ) { output *= 1.; } // colour triplet/antitriplet else if((out1->iColour()==PDT::Colour3 && out2->iColour()==PDT::Colour3bar) || (out1->iColour()==PDT::Colour3bar && out2->iColour()==PDT::Colour3 ) ) { output *= 0.5; } else throw Exception() << "Unknown colour for the outgoing particles" << " for decay colour octet particle in " << "GeneralTwoBodyDecayer::colourFactor() for " << in->PDGName() << " -> " << out1->PDGName() << " " << out2->PDGName() << Exception::runerror; } else if(in->iColour()==PDT::Colour6) { // colour sextet -> triplet triplet if( out1->iColour()==PDT::Colour3 && out2->iColour()==PDT::Colour3 ) { output *= 1.; } else throw Exception() << "Unknown colour for the outgoing particles" << " for decay colour sextet particle in " << "GeneralTwoBodyDecayer::colourFactor() for " << in->PDGName() << " -> " << out1->PDGName() << " " << out2->PDGName() << Exception::runerror; } else if(in->iColour()==PDT::Colour6bar) { // colour sextet -> triplet triplet if( out1->iColour()==PDT::Colour3bar && out2->iColour()==PDT::Colour3bar ) { output *= 1.; } else throw Exception() << "Unknown colour for the outgoing particles" << " for decay colour anti-sextet particle in " << "GeneralTwoBodyDecayer::colourFactor() for " << in->PDGName() << " -> " << out1->PDGName() << " " << out2->PDGName() << Exception::runerror; } else throw Exception() << "Unknown colour for the decaying particle in " << "GeneralTwoBodyDecayer::colourFactor() for " << in->PDGName() << " -> " << out1->PDGName() << " " << out2->PDGName() << Exception::runerror; return output; } Energy GeneralTwoBodyDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { // select the number of the mode tPDVector children; children.push_back(const_ptr_cast<PDPtr>(outa.first)); children.push_back(const_ptr_cast<PDPtr>(outb.first)); bool cc; int nmode=modeNumber(cc,inpart.first,children); tcPDPtr newchild[2] = {mode(nmode)->externalParticles(1), mode(nmode)->externalParticles(2)}; // make the particles Lorentz5Momentum pparent = Lorentz5Momentum(inpart.second); PPtr parent = inpart.first->produceParticle(pparent); Lorentz5Momentum pout[2]; double ctheta,phi; Kinematics::generateAngles(ctheta,phi); Kinematics::twoBodyDecay(pparent, outa.second, outb.second, ctheta, phi,pout[0],pout[1]); if( ( !cc && outa.first!=newchild[0]) || ( cc && !(( outa.first->CC() && outa.first->CC() == newchild[0])|| ( !outa.first->CC() && outa.first == newchild[0]) ))) swap(pout[0],pout[1]); ParticleVector decay; decay.push_back(newchild[0]->produceParticle(pout[0])); decay.push_back(newchild[1]->produceParticle(pout[1])); double me = me2(-1,*parent,decay,Initialize); Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.second, outa.second, outb.second); return me/(8.*Constants::pi)*pcm; } void GeneralTwoBodyDecayer::setDecayInfo(PDPtr incoming,PDPair outgoing, VertexBasePtr vertex) { _incoming=incoming; _outgoing.clear(); _outgoing.push_back(outgoing.first ); _outgoing.push_back(outgoing.second); _theVertex = vertex; } ��������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/FtoFFFDecayer.cc��������������������������������������������������0000644�0001750�0001750�00000024777�11754474774�022300� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the FtoFFFDecayer class. // #include "FtoFFFDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "Herwig++/PDT/ThreeBodyAllOnCalculator.h" #include <numeric> using namespace Herwig; IBPtr FtoFFFDecayer::clone() const { return new_ptr(*this); } IBPtr FtoFFFDecayer::fullclone() const { return new_ptr(*this); } void FtoFFFDecayer::persistentOutput(PersistentOStream & os) const { os << _sca << _vec << _ten; } void FtoFFFDecayer::persistentInput(PersistentIStream & is, int) { is >> _sca >> _vec >> _ten; } ClassDescription<FtoFFFDecayer> FtoFFFDecayer::initFtoFFFDecayer; // Definition of the static class description member. void FtoFFFDecayer::Init() { static ClassDocumentation<FtoFFFDecayer> documentation ("The FtoFFFDecayer class implements the general decay of a fermion to " "three fermions."); } void FtoFFFDecayer::doinit() { GeneralThreeBodyDecayer::doinit(); unsigned int ndiags = getProcessInfo().size(); _sca.resize(ndiags); _vec.resize(ndiags); _ten.resize(ndiags); for(unsigned int ix = 0;ix < ndiags; ++ix) { TBDiagram current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if( offshell->CC() ) offshell = offshell->CC(); if(offshell->iSpin() == PDT::Spin0) { AbstractFFSVertexPtr vert1 = dynamic_ptr_cast<AbstractFFSVertexPtr> (current.vertices.first); AbstractFFSVertexPtr vert2 = dynamic_ptr_cast<AbstractFFSVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a scalar diagram in FtoFFFDecayer::doinit()" << Exception::runerror; _sca[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin1) { AbstractFFVVertexPtr vert1 = dynamic_ptr_cast<AbstractFFVVertexPtr> (current.vertices.first); AbstractFFVVertexPtr vert2 = dynamic_ptr_cast<AbstractFFVVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a vector diagram in FtoFFFDecayer::doinit()" << Exception::runerror; _vec[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin2) { AbstractFFTVertexPtr vert1 = dynamic_ptr_cast<AbstractFFTVertexPtr> (current.vertices.first); AbstractFFTVertexPtr vert2 = dynamic_ptr_cast<AbstractFFTVertexPtr> (current.vertices.second); if(!vert1||!vert2) throw Exception() << "Invalid vertices for a tensor diagram in FtoFFFDecayer::doinit()" << Exception::runerror; _ten[ix] = make_pair(vert1, vert2); } } } double FtoFFFDecayer::me2(const int ichan, const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // particle or CC of particle bool cc = (*getProcessInfo().begin()).incoming != inpart.id(); // special handling or first/last call const vector<vector<double> > cfactors(getColourFactors()); const vector<vector<double> > nfactors(getLargeNcColourFactors()); const size_t ncf(numberOfFlows()); Energy2 scale(sqr(inpart.mass())); if(meopt==Initialize) { SpinorWaveFunction:: calculateWaveFunctions(_inwave.first,_rho,const_ptr_cast<tPPtr>(&inpart), Helicity::incoming); _inwave.second.resize(2); if(_inwave.first[0].wave().Type() == u_spinortype) { for(unsigned int ix = 0; ix < 2; ++ix) { _inwave.second[ix] = _inwave.first[ix].bar(); _inwave.second[ix].conjugate(); } } else { for(unsigned int ix = 0; ix < 2; ++ix) { _inwave.second[ix] = _inwave.first[ix].bar(); _inwave.first[ix].conjugate(); } } } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(inpart.id()<0) SpinorWaveFunction::constructSpinInfo(_inwave.first, const_ptr_cast<tPPtr>(&inpart), Helicity::incoming,true); else SpinorBarWaveFunction::constructSpinInfo(_inwave.second, const_ptr_cast<tPPtr>(&inpart), Helicity::incoming,true); // outgoing particles for(unsigned int ix = 0; ix < 3; ++ix) { SpinorWaveFunction:: constructSpinInfo(_outwave[ix].first,decay[ix],Helicity::outgoing,true); } } // outgoing particles for(unsigned int ix = 0; ix < 3; ++ix) { SpinorWaveFunction:: calculateWaveFunctions(_outwave[ix].first,decay[ix],Helicity::outgoing); _outwave[ix].second.resize(2); if(_outwave[ix].first[0].wave().Type() == u_spinortype) { for(unsigned int iy = 0; iy < 2; ++iy) { _outwave[ix].second[iy] = _outwave[ix].first[iy].bar(); _outwave[ix].first[iy].conjugate(); } } else { for(unsigned int iy = 0; iy < 2; ++iy) { _outwave[ix].second[iy] = _outwave[ix].first[iy].bar(); _outwave[ix].second[iy].conjugate(); } } } bool ferm = inpart.id()>0; vector<Complex> flows(ncf, Complex(0.)),largeflows(ncf, Complex(0.)); static const unsigned int out2[3]={1,0,0},out3[3]={2,2,1}; vector<DecayMatrixElement> mes(ncf,DecayMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half)); vector<DecayMatrixElement> mel(ncf,DecayMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half)); unsigned int ihel[4]; for(ihel[0] = 0; ihel[0] < 2; ++ihel[0]) { for(ihel[1] = 0; ihel[1] < 2; ++ihel[1]) { for(ihel[2] = 0; ihel[2] < 2; ++ihel[2]) { for(ihel[3] = 0; ihel[3] < 2; ++ihel[3]) { flows = vector<Complex>(ncf, Complex(0.)); largeflows = vector<Complex>(ncf, Complex(0.)); unsigned int idiag=0; for(vector<TBDiagram>::const_iterator dit=getProcessInfo().begin(); dit!=getProcessInfo().end();++dit) { if(ichan>=0&&diagramMap()[ichan]!=idiag) { ++idiag; continue; } // the sign from normal ordering double sign = ferm ? 1. : -1; // outgoing wavefunction and NO sign if (dit->channelType==TBDiagram::channel23) sign *= -1.; else if(dit->channelType==TBDiagram::channel13) sign *= 1.; else if(dit->channelType==TBDiagram::channel12) sign *= -1.; else throw Exception() << "Unknown diagram type in FtoFFFDecayer::me2()" << Exception::runerror; // wavefunctions SpinorWaveFunction w0,w3; SpinorBarWaveFunction w1,w2; // incoming wavefunction if(ferm) { w0 = _inwave.first [ihel[0]]; w1 = _outwave[dit->channelType].second[ihel[dit->channelType+1]]; } else { w0 = _outwave[dit->channelType].first [ihel[dit->channelType+1]]; w1 = _inwave.second[ihel[0]]; } if(decay[out2[dit->channelType]]->id()<0&& decay[out3[dit->channelType]]->id()>0) { w2 = _outwave[out3[dit->channelType]].second[ihel[out3[dit->channelType]+1]]; w3 = _outwave[out2[dit->channelType]].first [ihel[out2[dit->channelType]+1]]; sign *= -1.; } else { w2 = _outwave[out2[dit->channelType]].second[ihel[out2[dit->channelType]+1]]; w3 = _outwave[out3[dit->channelType]].first [ihel[out3[dit->channelType]+1]]; } tcPDPtr offshell = dit->intermediate; if(cc&&offshell->CC()) offshell=offshell->CC(); Complex diag(0.); // intermediate scalar if (offshell->iSpin() == PDT::Spin0) { ScalarWaveFunction inters = _sca[idiag].first-> evaluate(scale, widthOption(), offshell, w0, w1); diag = _sca[idiag].second->evaluate(scale,w3,w2,inters); } // intermediate vector else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interv = _vec[idiag].first-> evaluate(scale, widthOption(), offshell, w0, w1); diag = -_vec[idiag].second->evaluate(scale,w3,w2,interv); } // intermediate tensor else if(offshell->iSpin() == PDT::Spin2) { TensorWaveFunction intert = _ten[idiag].first-> evaluate(scale, widthOption(), offshell, w0, w1); diag = _ten[idiag].second->evaluate(scale,w3,w2,intert); } // unknown else throw Exception() << "Unknown intermediate in FtoFFFDecayer::me2()" << Exception::runerror; // apply NO sign diag *= sign; // matrix element for the different colour flows if(ichan<0) { for(unsigned iy = 0; iy < dit->colourFlow.size(); ++iy) { flows[dit->colourFlow[iy].first - 1] += dit->colourFlow[iy].second * diag; } for(unsigned iy = 0; iy < dit->largeNcColourFlow.size(); ++iy) { largeflows[dit->largeNcColourFlow[iy].first - 1] += dit->largeNcColourFlow[iy].second * diag; } } else { for(unsigned iy = 0; iy < dit->colourFlow.size(); ++iy) { if(dit->colourFlow[iy].first - 1!=colourFlow()) continue; flows[dit->colourFlow[iy].first - 1] += dit->colourFlow[iy].second * diag; } for(unsigned iy = 0; iy < dit->largeNcColourFlow.size(); ++iy) { if(dit->colourFlow[iy].first - 1!=colourFlow()) continue; largeflows[dit->largeNcColourFlow[iy].first - 1] += dit->largeNcColourFlow[iy].second * diag; } } ++idiag; } // now add the flows to the me2 with appropriate colour factors for(unsigned int ix = 0; ix < ncf; ++ix) { mes[ix](ihel[0],ihel[1],ihel[2],ihel[3]) = flows[ix]; mel[ix](ihel[0],ihel[1],ihel[2],ihel[3]) = largeflows[ix]; } } } } } double me2(0.); if(ichan<0) { vector<double> pflows(ncf,0.); for(unsigned int ix = 0; ix < ncf; ++ix) { for(unsigned int iy = 0; iy < ncf; ++ iy) { double con = cfactors[ix][iy]*(mes[ix].contract(mes[iy],_rho)).real(); me2 += con; if(ix==iy) { con = nfactors[ix][iy]*(mel[ix].contract(mel[iy],_rho)).real(); pflows[ix] += con; } } } double ptotal(std::accumulate(pflows.begin(),pflows.end(),0.)); ptotal *=UseRandom::rnd(); for(unsigned int ix=0;ix<pflows.size();++ix) { if(ptotal<=pflows[ix]) { colourFlow(ix); ME(mes[ix]); break; } ptotal-=pflows[ix]; } } else { unsigned int iflow = colourFlow(); me2 = nfactors[iflow][iflow]*(mel[iflow].contract(mel[iflow],_rho)).real(); } // return the matrix element squared return me2; } WidthCalculatorBasePtr FtoFFFDecayer:: threeBodyMEIntegrator(const DecayMode & ) const { vector<int> intype; vector<Energy> inmass,inwidth; vector<double> inpow,inweights; constructIntegratorChannels(intype,inmass,inwidth,inpow,inweights); return new_ptr(ThreeBodyAllOnCalculator<FtoFFFDecayer> (inweights,intype,inmass,inwidth,inpow,*this,0, outgoing()[0]->mass(),outgoing()[1]->mass(),outgoing()[2]->mass(), relativeError())); } �herwig++-2.6.0.orig/Decay/General/VFFDecayer.h������������������������������������������������������0000644�0001750�0001750�00000011755�11754474774�021501� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VFFDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_VFFDecayer_H #define HERWIG_VFFDecayer_H // // This is the declaration of the VFFDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::FFVVertexPtr; /** \ingroup Decay * The VFFDecayer class implements the decay of a vector * to 2 fermions in a general model. It holds an FFVVertex pointer * that must be typecast from the VertexBase pointer held in * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see GeneralTwoBodyDecayer */ class VFFDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ VFFDecayer() {} public: /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<VFFDecayer> initVFFDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VFFDecayer & operator=(const VFFDecayer &); private: /** * Abstract pointer to AbstractFFVVertex */ AbstractFFVVertexPtr _abstractVertex; /** * Pointer to the perturbative vertex */ FFVVertexPtr _perturbativeVertex; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the decaying particle */ mutable vector<VectorWaveFunction> _vectors; /** * Spinors for the decay products */ mutable vector<SpinorWaveFunction> _wave; /** * Barred spinors for the decay products */ mutable vector<SpinorBarWaveFunction> _wavebar; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of VFFDecayer. */ template <> struct BaseClassTrait<Herwig::VFFDecayer,1> { /** Typedef of the first base class of VFFDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the VFFDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VFFDecayer> : public ClassTraitsBase<Herwig::VFFDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::VFFDecayer"; } }; /** @endcond */ } #endif /* HERWIG_VFFDecayer_H */ �������������������herwig++-2.6.0.orig/Decay/General/StoSFFDecayer.h���������������������������������������������������0000644�0001750�0001750�00000011734�11754474774�022161� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef THEPEG_StoSFFDecayer_H #define THEPEG_StoSFFDecayer_H // // This is the declaration of the StoSFFDecayer class. // #include "GeneralThreeBodyDecayer.h" #include "ThePEG/Helicity/Vertex/AbstractSSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractSSTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h" namespace Herwig { using namespace ThePEG; /** * The StoSFFDecayer class provides the general matrix element for * scalar decays into another scalar and a fermion-antifermion pair. * * @see \ref StoSFFDecayerInterfaces "The interfaces" * defined for StoSFFDecayer. */ class StoSFFDecayer: public GeneralThreeBodyDecayer { public: /** * Return the matrix element squared for a given mode and phase-space channel * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Method to return an object to calculate the 3 (or higher body) partial width * @param dm The DecayMode * @return A pointer to a WidthCalculatorBase object capable of calculating the width */ virtual WidthCalculatorBasePtr threeBodyMEIntegrator(const DecayMode & dm) 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<StoSFFDecayer> initStoSFFDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ StoSFFDecayer & operator=(const StoSFFDecayer &); private: /** * Store the vertices for scalar intrermediate */ vector<pair<AbstractSSSVertexPtr, AbstractFFSVertexPtr> > _sca; /** * Store the vertices for fermion intrermediate */ vector<pair<AbstractFFSVertexPtr, AbstractFFSVertexPtr> > _fer; /** * Store the vertices for vector intrermediate */ vector<pair<AbstractVSSVertexPtr, AbstractFFVVertexPtr> > _vec; /** * Store the vertices for tensor intrermediate */ vector<pair<AbstractSSTVertexPtr, AbstractFFTVertexPtr> > _ten; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Scalar wavefunction */ mutable ScalarWaveFunction _swave; /** * Spinor wavefunctions */ mutable pair<vector<SpinorWaveFunction>,vector<SpinorBarWaveFunction> > _outspin[3]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of Herwig::StoSFFDecayer. */ template <> struct BaseClassTrait<Herwig::StoSFFDecayer,1> { /** Typedef of the first base class of Herwig::StoSFFDecayer. */ typedef Herwig::GeneralThreeBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the Herwig::StoSFFDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::StoSFFDecayer> : public ClassTraitsBase<Herwig::StoSFFDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::StoSFFDecayer"; } }; /** @endcond */ } #endif /* THEPEG_StoSFFDecayer_H */ ������������������������������������herwig++-2.6.0.orig/Decay/General/FFVDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000013673�11754474774�021640� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFVDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFVDecayer class. // #include "FFVDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/Utilities/Kinematics.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr FFVDecayer::clone() const { return new_ptr(*this); } IBPtr FFVDecayer::fullclone() const { return new_ptr(*this); } void FFVDecayer::doinit() { _perturbativeVertex = dynamic_ptr_cast<FFVVertexPtr> (getVertex()); _abstractVertex = dynamic_ptr_cast<AbstractFFVVertexPtr>(getVertex()); GeneralTwoBodyDecayer::doinit(); } void FFVDecayer::persistentOutput(PersistentOStream & os) const { os << _abstractVertex << _perturbativeVertex; } void FFVDecayer::persistentInput(PersistentIStream & is, int) { is >> _abstractVertex >> _perturbativeVertex; } double FFVDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // type of process int itype[2]; if(inpart.dataPtr()->CC()) itype[0] = inpart.id() > 0 ? 0 : 1; else itype[0] = 2; if(decay[0]->dataPtr()->CC()) itype[1] = decay[0]->id() > 0 ? 0 : 1; else itype[1] = 2; //Need to use different barred or unbarred spinors depending on //whether particle is cc or not. bool ferm(itype[0] == 0 || itype[1] == 0 || (itype[0] == 2 && itype[1] == 2)); if(meopt==Initialize) { // spinors and rho if(ferm) { SpinorWaveFunction ::calculateWaveFunctions(_wave,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); if(_wave[0].wave().Type() != u_spinortype) for(unsigned int ix = 0; ix < 2; ++ix) _wave [ix].conjugate(); } else { SpinorBarWaveFunction::calculateWaveFunctions(_wavebar,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); if(_wavebar[0].wave().Type() != v_spinortype) for(unsigned int ix = 0; ix < 2; ++ix) _wavebar[ix].conjugate(); } ME(DecayMatrixElement(PDT::Spin1Half,PDT::Spin1Half,PDT::Spin1)); } // setup spin info when needed if(meopt==Terminate) { // for the decaying particle if(ferm) { SpinorWaveFunction:: constructSpinInfo(_wave,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorBarWaveFunction::constructSpinInfo(_wavebar,decay[0],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(_wavebar,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorWaveFunction::constructSpinInfo(_wave,decay[0],outgoing,true); } VectorWaveFunction:: constructSpinInfo(_vector,decay[1],outgoing,true,false); } Energy2 scale(sqr(inpart.mass())); if(ferm) SpinorBarWaveFunction:: calculateWaveFunctions(_wavebar,decay[0],outgoing); else SpinorWaveFunction:: calculateWaveFunctions(_wave ,decay[0],outgoing); bool massless = decay[1]->dataPtr()->mass()==ZERO; VectorWaveFunction:: calculateWaveFunctions(_vector,decay[1],outgoing,massless); for(unsigned int if1 = 0; if1 < 2; ++if1) { for(unsigned int if2 = 0; if2 < 2; ++if2) { for(unsigned int vhel = 0; vhel < 3; ++vhel) { if(massless && vhel == 1) ++vhel; if(ferm) ME()(if1, if2,vhel) = _abstractVertex->evaluate(scale,_wave[if1],_wavebar[if2],_vector[vhel]); else ME()(if2, if1, vhel) = _abstractVertex->evaluate(scale,_wave[if1],_wavebar[if2],_vector[vhel]); } } } double output=(ME().contract(_rho)).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(),decay[1]->dataPtr()); // return the answer return output; } Energy FFVDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(_perturbativeVertex) { double mu1(outa.second/inpart.second),mu2(outb.second/inpart.second); tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; if( outa.first->iSpin() == PDT::Spin1Half) _perturbativeVertex->setCoupling(sqr(inpart.second), in, outa.first, outb.first); else { swap(mu1,mu2); _perturbativeVertex->setCoupling(sqr(inpart.second),in, outb.first,outa.first); } Complex cl(_perturbativeVertex->left()),cr(_perturbativeVertex->right()); double me2(0.); if( mu2 > 0. ) { me2 = (norm(cl) + norm(cr))*(1. + sqr(mu1*mu2) + sqr(mu2) - 2.*sqr(mu1) - 2.*sqr(mu2*mu2) + sqr(mu1*mu1)) - 6.*mu1*sqr(mu2)*(conj(cl)*cr + conj(cr)*cl).real(); me2 /= sqr(mu2); } else me2 = 2.*( (norm(cl) + norm(cr))*(sqr(mu1) + 1.) - 4.*mu1*(conj(cl)*cr + conj(cr)*cl).real() ); Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.second, outa.second, outb.second); Energy output = norm(_perturbativeVertex->norm())*me2*pcm/16./Constants::pi; // colour factor output *= colourFactor(inpart.first,outa.first,outb.first); // return the answer return output; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } ClassDescription<FFVDecayer> FFVDecayer::initFFVDecayer; // Definition of the static class description member. void FFVDecayer::Init() { static ClassDocumentation<FFVDecayer> documentation ("There is no documentation for the FFVDecayer class"); } ���������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/VSSDecayer.h������������������������������������������������������0000644�0001750�0001750�00000011431�11754474774�021522� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VSSDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_VSSDecayer_H #define HERWIG_VSSDecayer_H // // This is the declaration of the VSSDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Helicity/Vertex/Scalar/VSSVertex.h" #include "ThePEG/Repository/EventGenerator.h" namespace Herwig { using namespace ThePEG; using Helicity::VSSVertexPtr; /** \ingroup Decay * The VSSDecayer class implements the decay of a vector * to 2 scalars in a general model. It holds an VSSVertex pointer * that must be typecast from the VertexBase pointer held in * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see GeneralTwoBodyDecayer */ class VSSDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ VSSDecayer() {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<VSSDecayer> initVSSDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VSSDecayer & operator=(const VSSDecayer &); private: /** * Abstract pointer to AbstractVSSVertex */ AbstractVSSVertexPtr _abstractVertex; /** * Pointer to the perturbative vertex */ VSSVertexPtr _perturbativeVertex; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Polarization vectors for the decaying particle */ mutable vector<Helicity::VectorWaveFunction> _vectors; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of VSSDecayer. */ template <> struct BaseClassTrait<Herwig::VSSDecayer,1> { /** Typedef of the first base class of VSSDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the VSSDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VSSDecayer> : public ClassTraitsBase<Herwig::VSSDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::VSSDecayer"; } }; /** @endcond */ } #endif /* HERWIG_VSSDecayer_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/TSSDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000007344�11754474774�021666� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TSSDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TSSDecayer class. // #include "TSSDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr TSSDecayer::clone() const { return new_ptr(*this); } IBPtr TSSDecayer::fullclone() const { return new_ptr(*this); } void TSSDecayer::doinit() { GeneralTwoBodyDecayer::doinit(); _perturbativeVertex = dynamic_ptr_cast<SSTVertexPtr> (getVertex()); _abstractVertex = dynamic_ptr_cast<AbstractSSTVertexPtr>(getVertex()); } void TSSDecayer::persistentOutput(PersistentOStream & os) const { os << _abstractVertex << _perturbativeVertex; } void TSSDecayer::persistentInput(PersistentIStream & is, int) { is >> _abstractVertex >> _perturbativeVertex; } ClassDescription<TSSDecayer> TSSDecayer::initTSSDecayer; // Definition of the static class description member. void TSSDecayer::Init() { static ClassDocumentation<TSSDecayer> documentation ("This class implements the decay of a tensor particle into " "2 scalars."); } double TSSDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { if(meopt==Initialize) { TensorWaveFunction:: calculateWaveFunctions(_tensors,_rho,const_ptr_cast<tPPtr>(&inpart), incoming,false); ME(DecayMatrixElement(PDT::Spin2,PDT::Spin0,PDT::Spin0)); } if(meopt==Terminate) { TensorWaveFunction:: constructSpinInfo(_tensors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); for(unsigned int ix=0;ix<2;++ix) ScalarWaveFunction:: constructSpinInfo(decay[ix],outgoing,true); return 0.; } ScalarWaveFunction sca1(decay[0]->momentum(),decay[0]->dataPtr(),outgoing); ScalarWaveFunction sca2(decay[1]->momentum(),decay[1]->dataPtr(),outgoing); Energy2 scale(sqr(inpart.mass())); for(unsigned int thel=0;thel<5;++thel) { ME()(thel,0,0) =_abstractVertex->evaluate(scale,sca1,sca2,_tensors[thel]); } double output = (ME().contract(_rho)).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(), decay[1]->dataPtr()); // return the answer return output; } Energy TSSDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(_perturbativeVertex) { Energy2 scale(sqr(inpart.second)); tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; _perturbativeVertex->setCoupling(scale, outa.first, outb.first, in); double musq = sqr(outa.second/inpart.second); double b = sqrt(1. - 4.*musq); double me2 = scale*pow(b,4)/120*UnitRemoval::InvE2; Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.second,outa.second, outb.second); Energy output = norm(_perturbativeVertex->norm())*me2*pcm/(8.*Constants::pi); // colour factor output *= colourFactor(inpart.first,outa.first,outb.first); // return the answer return output; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/FRVDecayer.h������������������������������������������������������0000644�0001750�0001750�00000012256�11754474774�021512� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FRVDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FRVDecayer_H #define HERWIG_FRVDecayer_H // // This is the declaration of the FRVDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/Vertex/Vector/RFVVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::RFVVertexPtr; /** \ingroup Decay * The FRVDecayer class implements the decay of a fermion * to a spin-3/2 fermion and a vector in a general model. It holds an RFVVertex * pointer that must be typecast from the VertexBase pointer held in * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see GeneralTwoBodyDecayer */ class FRVDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ FRVDecayer() {} public: /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FRVDecayer> initFRVDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FRVDecayer & operator=(const FRVDecayer &); private: /** * Abstract pointer to AbstractFRVVertex */ AbstractRFVVertexPtr abstractVertex_; /** * Pointer to the perturbative vertex */ RFVVertexPtr perturbativeVertex_; /** * Spin density matrix */ mutable RhoDMatrix rho_; /** * Spinor wavefunction */ mutable vector<SpinorWaveFunction> wave_ ; /** * Barred spinor wavefunction */ mutable vector<SpinorBarWaveFunction> wavebar_; /** * RS Spinor wavefunction */ mutable vector<RSSpinorWaveFunction> RSwave_ ; /** * Barred RS spinor wavefunction */ mutable vector<RSSpinorBarWaveFunction> RSwavebar_; /** * Polarization vectors */ mutable vector<VectorWaveFunction> vector_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FRVDecayer. */ template <> struct BaseClassTrait<Herwig::FRVDecayer,1> { /** Typedef of the first base class of FRVDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the FRVDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FRVDecayer> : public ClassTraitsBase<Herwig::FRVDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::FRVDecayer"; } }; /** @endcond */ } #endif /* HERWIG_FRVDecayer_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/TVVDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000010301�11754474774�021657� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TVVDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TVVDecayer class. // #include "TVVDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/Helicity/LorentzTensor.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr TVVDecayer::clone() const { return new_ptr(*this); } IBPtr TVVDecayer::fullclone() const { return new_ptr(*this); } void TVVDecayer::doinit() { GeneralTwoBodyDecayer::doinit(); _perturbativeVertex = dynamic_ptr_cast<VVTVertexPtr> (getVertex()); _abstractVertex = dynamic_ptr_cast<AbstractVVTVertexPtr>(getVertex()); } void TVVDecayer::persistentOutput(PersistentOStream & os) const { os << _abstractVertex << _perturbativeVertex; } void TVVDecayer::persistentInput(PersistentIStream & is, int) { is >> _abstractVertex >> _perturbativeVertex; } ClassDescription<TVVDecayer> TVVDecayer::initTVVDecayer; // Definition of the static class description member. void TVVDecayer::Init() { static ClassDocumentation<TVVDecayer> documentation ("This class implements the decay of a tensor to 2 vector bosons"); } double TVVDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { bool photon[2]; for(unsigned int ix=0;ix<2;++ix) photon[ix] = decay[ix]->mass()==ZERO; if(meopt==Initialize) { TensorWaveFunction:: calculateWaveFunctions(_tensors,_rho,const_ptr_cast<tPPtr>(&inpart), incoming,false); ME(DecayMatrixElement(PDT::Spin2,PDT::Spin1,PDT::Spin1)); } if(meopt==Terminate) { TensorWaveFunction:: constructSpinInfo(_tensors,const_ptr_cast<tPPtr>(&inpart), incoming,true,false); for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction:: constructSpinInfo(_vectors[ix],decay[ix],outgoing,true,photon[ix]); return 0.; } for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction:: calculateWaveFunctions(_vectors[ix],decay[ix],outgoing,photon[ix]); Energy2 scale(sqr(inpart.mass())); unsigned int thel,v1hel,v2hel; for(thel=0;thel<5;++thel) { for(v1hel=0;v1hel<3;++v1hel) { for(v2hel=0;v2hel<3;++v2hel) { ME()(thel,v1hel,v2hel) = _abstractVertex->evaluate(scale, _vectors[0][v1hel], _vectors[1][v2hel], _tensors[thel]); if(photon[1]) ++v2hel; } if(photon[0]) ++v1hel; } } double output = (ME().contract(_rho)).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(), decay[1]->dataPtr()); // return the answer return output; } Energy TVVDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(_perturbativeVertex) { Energy2 scale(sqr(inpart.second)); tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; _perturbativeVertex->setCoupling(scale, outa.first, outb.first, in); double mu2 = sqr(outa.second/inpart.second); double b = sqrt(1 - 4.*mu2); Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.second,outa.second, outb.second); Energy2 me2; if(outa.second > ZERO && outb.second > ZERO) me2 = scale*(30 - 20.*b*b + 3.*pow(b,4))/120.; else me2 = scale/10.; Energy output = norm(_perturbativeVertex->norm())*me2*pcm /(8.*Constants::pi)*UnitRemoval::InvE2; // colour factor output *= colourFactor(inpart.first,outa.first,outb.first); // return the answer return output; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/VVVDecayer.cc�����������������������������������������������������0000644�0001750�0001750�00000010200�11754474774�021657� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VVVDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the VVVDecayer class. // #include "VVVDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "Herwig++/Utilities/Kinematics.h" using namespace Herwig; using namespace ThePEG::Helicity; IBPtr VVVDecayer::clone() const { return new_ptr(*this); } IBPtr VVVDecayer::fullclone() const { return new_ptr(*this); } void VVVDecayer::doinit() { _perturbativeVertex = dynamic_ptr_cast<VVVVertexPtr> (getVertex()); _abstractVertex = dynamic_ptr_cast<AbstractVVVVertexPtr>(getVertex()); GeneralTwoBodyDecayer::doinit(); } void VVVDecayer::persistentOutput(PersistentOStream & os) const { os << _abstractVertex << _perturbativeVertex; } void VVVDecayer::persistentInput(PersistentIStream & is, int) { is >> _abstractVertex >> _perturbativeVertex; } ClassDescription<VVVDecayer> VVVDecayer::initVVVDecayer; // Definition of the static class description member. void VVVDecayer::Init() { static ClassDocumentation<VVVDecayer> documentation ("The VVVDecayer class implements the decay of a vector boson " "into 2 vector bosons"); } double VVVDecayer::me2(const int , const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { bool massless[2]; for(unsigned int ix=0;ix<2;++ix) massless[ix] = (decay[ix]->id()==ParticleID::gamma || decay[ix]->id()==ParticleID::g); if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(_vectors[0],_rho, const_ptr_cast<tPPtr>(&inpart), incoming,false); ME(DecayMatrixElement(PDT::Spin1,PDT::Spin1,PDT::Spin1)); } if(meopt==Terminate) { VectorWaveFunction::constructSpinInfo(_vectors[0],const_ptr_cast<tPPtr>(&inpart), incoming,true,false); for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction:: constructSpinInfo(_vectors[ix+1],decay[ix],outgoing,true,massless[ix]); return 0.; } for(unsigned int ix=0;ix<2;++ix) VectorWaveFunction:: calculateWaveFunctions(_vectors[ix+1],decay[ix],outgoing,massless[ix]); Energy2 scale(sqr(inpart.mass())); for(unsigned int iv3=0;iv3<3;++iv3) { for(unsigned int iv2=0;iv2<3;++iv2) { for(unsigned int iv1=0;iv1<3;++iv1) { ME()(iv1,iv2,iv3) = _abstractVertex-> evaluate(scale,_vectors[1][iv2],_vectors[2][iv3],_vectors[0][iv1]); } } } double output = (ME().contract(_rho)).real()/scale*UnitRemoval::E2; // colour and identical particle factors output *= colourFactor(inpart.dataPtr(),decay[0]->dataPtr(), decay[1]->dataPtr()); // return the answer return output; } Energy VVVDecayer::partialWidth(PMPair inpart, PMPair outa, PMPair outb) const { if( inpart.second < outa.second + outb.second ) return ZERO; if(_perturbativeVertex) { tcPDPtr in = inpart.first->CC() ? tcPDPtr(inpart.first->CC()) : inpart.first; _perturbativeVertex->setCoupling(sqr(inpart.second), in, outa.first, outb.first); double mu1(outa.second/inpart.second), mu1sq(sqr(mu1)), mu2(outb.second/inpart.second), mu2sq(sqr(mu2)); double me2 = (mu1 - mu2 - 1.)*(mu1 - mu2 + 1.)*(mu1 + mu2 - 1.)*(mu1 + mu2 + 1.) * (sqr(mu1sq) + sqr(mu2sq) + 10.*(mu1sq*mu2sq + mu1sq + mu2sq) + 1.) /4./mu1sq/mu2sq; Energy pcm = Kinematics::pstarTwoBodyDecay(inpart.second,outa.second, outb.second); Energy pWidth = norm(_perturbativeVertex->norm())*me2*pcm/24./Constants::pi; // colour factor pWidth *= colourFactor(inpart.first,outa.first,outb.first); // return the answer return pWidth; } else { return GeneralTwoBodyDecayer::partialWidth(inpart,outa,outb); } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/General/VVVDecayer.h������������������������������������������������������0000644�0001750�0001750�00000011464�11754474774�021536� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VVVDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_VVVDecayer_H #define HERWIG_VVVDecayer_H // // This is the declaration of the VVVDecayer class. // #include "GeneralTwoBodyDecayer.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Helicity/Vertex/Vector/VVVVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::VVVVertexPtr; /** \ingroup Decay * The VVVDecayer class implements the decay of a vector * to 2 vectors in a general model. It holds an VVVVertex pointer * that must be typecast from the VertexBase pointer held in * GeneralTwoBodyDecayer. It implents the virtual functions me2() and * partialWidth(). * * @see GeneralTwoBodyDecayer */ class VVVDecayer: public GeneralTwoBodyDecayer { public: /** * The default constructor. */ VVVDecayer() {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Return the matrix element squared for a given mode and phase-space channel. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay, MEOption meopt) const; /** * Function to return partial Width * @param inpart The decaying particle. * @param outa One of the decay products. * @param outb The other decay product. */ virtual Energy partialWidth(PMPair inpart, PMPair outa, PMPair outb) 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(); 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 and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<VVVDecayer> initVVVDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ VVVDecayer & operator=(const VVVDecayer &); private: /** * Abstract pointer to AbstractVVVVertex */ AbstractVVVVertexPtr _abstractVertex; /** * Pointer to the perturbative vertex */ VVVVertexPtr _perturbativeVertex; /** * Spin density matrix */ mutable RhoDMatrix _rho; /** * Vector wavefunctions */ mutable vector<Helicity::VectorWaveFunction> _vectors[3]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of VVVDecayer. */ template <> struct BaseClassTrait<Herwig::VVVDecayer,1> { /** Typedef of the first base class of VVVDecayer. */ typedef Herwig::GeneralTwoBodyDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the VVVDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::VVVDecayer> : public ClassTraitsBase<Herwig::VVVDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::VVVDecayer"; } }; /** @endcond */ } #endif /* HERWIG_VVVDecayer_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/README��������������������������������������������������������������������0000644�0001750�0001750�00000000537�11754474774�016711� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� (Last update: 12-Apr-2002) This directory contains classes derived from the abstract class Pythia7/PDT/Decayer.h which represent decay 1->N process matrix elements. These classes can be just stand-alone processes, or they can be the "plus jet" correction processes associated with the matching of decay processes with parton showers. �����������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Tau/����������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464203�016541� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Tau/TauDecayer.h����������������������������������������������������������0000644�0001750�0001750�00000015520�11754474773�020756� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TauDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TauDecayer_H #define HERWIG_TauDecayer_H // This is the declaration of the TauDecayer class. #include "Herwig++/Decay/DecayIntegrator.h" #include "Herwig++/Decay/DecayPhaseSpaceMode.h" #include "ThePEG/Helicity/LorentzPolarizationVector.h" #include "Herwig++/Decay/WeakCurrents/WeakDecayCurrent.h" #include "ThePEG/Helicity/LorentzSpinor.h" #include "ThePEG/Helicity/LorentzSpinorBar.h" namespace Herwig { using namespace ThePEG; using ThePEG::Helicity::LorentzPolarizationVector; /** \ingroup Decay * * The TauDecayer class performs the decay of the \f$\tau\f$. The matrix element * for \f$\tau\f$ decay can be split into a leptonic current describing the * weak decay of the decay to a neutrino and a highly virtual \f$W\f$ combined * with a hadronic current for the virtual \f$W\f$ decay. * * The matrix element has the form * \f[\mathcal{M} = \frac{G_F}{\sqrt{2}}\bar{u}(p_{\nu_\tau}) * \gamma^\mu\left(1-\gamma^5\right)u(p_{\tau}) J_\mu,\f] * where * - \f$G_F\f$ is the Fermi constant, * - \f$p_{\nu_\tau}\f$ is the momentum of the \f$\tau\f$ neutrino, * - \f$p_{\tau}\f$ is the momentum of the \f$\tau\f$, * - \f$ J_\mu\f$ is the hadronic current. * * The leptonic part of this matrix element is implemented in this class * together with a WeakDecayCurrent member which calculates the hadronic * current \f$ J_\mu\f$. This allows a range of \f$\tau\f$ decays to be * constructed via the repository using the interfaces. * * @see DecayIntegrator. * @see WeakDecayCurrent * */ class TauDecayer: public DecayIntegrator { public: /** * Default constructor. */ TauDecayer() : _polOpt(false), _tauMpol(0.), _tauPpol(0.) { generateIntermediates(true); } /** * Check if this decayer can perfom the decay for a particular mode. * @param parent The decaying particle * @param children The decay products */ virtual bool accept(tcPDPtr parent, const tPDVector & children) const; /** * Which of the possible decays is required * @param cc Is this mode the charge conjugate * @param parent The decaying particle * @param children The decay products */ virtual int modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const; /** * Return the matrix element squared for a given mode and phase-space channel. * This method combines the leptonic current and the hadronic current to * calculate the matrix element. * @param ichan The channel we are calculating the matrix element for. * @param part The decaying Particle. * @param decay The particles produced in the decay. * @param meopt Option for the calculation of the matrix element * @return The matrix element squared for the phase-space configuration. */ virtual double me2(const int ichan, const Particle & part, const ParticleVector & decay,MEOption meopt) const; /** * Output the setup information for the particle database. */ void dataBaseOutput(ofstream & os,bool header) 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); //@} /** * Standard Init function used to initialize the interfaces. */ 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving and * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object to the begining of the run phase. */ virtual void doinitrun(); //@} private: /** * Describe a concrete class with persistent data. */ static ClassDescription<TauDecayer> initTauDecayer; /** * Private and non-existent assignment operator. */ TauDecayer & operator=(const TauDecayer &); private: /** * mapping of the modes to the currents */ vector<unsigned int> _modemap; /** * the hadronic current */ WeakDecayCurrentPtr _current; /** * location of the weights */ vector<int> _wgtloc; /** * the maximum weight */ vector<double> _wgtmax; /** * The weights for the different channels */ vector<double> _weights; /** * The spinors for the decaying particle */ mutable vector<LorentzSpinor <SqrtEnergy> > _inspin; /** * Barred spinors for the deaying particle */ mutable vector<LorentzSpinorBar<SqrtEnergy> > _inbar ; /** * Rho matrix */ mutable RhoDMatrix _rho; /** * Maps for the vectors */ mutable vector<unsigned int> _constants; /** * Spins of the particles */ mutable vector<PDT::Spin> _ispin; /** * Option to force the polarizations of the tau leptons */ bool _polOpt; /** * Polarization for \f$\tau^-\f$ */ double _tauMpol; /** * Polarization of \f$\tau^+\f$ */ double _tauPpol; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of TauDecayer. */ template <> struct BaseClassTrait<Herwig::TauDecayer,1> { /** Typedef of the base class of TauDecayer. */ typedef Herwig::DecayIntegrator NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::TauDecayer> : public ClassTraitsBase<Herwig::TauDecayer> { /** Return the class name.*/ static string className() { return "Herwig::TauDecayer"; } /** * Return the name of the shared library to be loaded to get * access to this class and every other class it uses * (except the base class). */ static string library() { return "HwTauDecay.so"; } }; /** @endcond */ } #endif /* THEPEG_TauDecayer_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Tau/Makefile.in�����������������������������������������������������������0000644�0001750�0001750�00000050736�11756461676�020634� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = Decay/Tau DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwTauDecay_la_LIBADD = am_HwTauDecay_la_OBJECTS = TauDecayer.lo HwTauDecay_la_OBJECTS = $(am_HwTauDecay_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwTauDecay_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwTauDecay_la_LDFLAGS) $(LDFLAGS) \ -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwTauDecay_la_SOURCES) DIST_SOURCES = $(HwTauDecay_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwTauDecay.la HwTauDecay_la_SOURCES = TauDecayer.cc TauDecayer.h HwTauDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 8:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Decay/Tau/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Decay/Tau/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwTauDecay.la: $(HwTauDecay_la_OBJECTS) $(HwTauDecay_la_DEPENDENCIES) $(EXTRA_HwTauDecay_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwTauDecay_la_LINK) -rpath $(pkglibdir) $(HwTauDecay_la_OBJECTS) $(HwTauDecay_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TauDecayer.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ����������������������������������herwig++-2.6.0.orig/Decay/Tau/TauDecayer.cc���������������������������������������������������������0000644�0001750�0001750�00000027602�11754474773�021120� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TauDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TauDecayer class. // // Author: Peter Richardson // #include "TauDecayer.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Helicity/VectorSpinInfo.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/Decay/DecayVertex.h" #include "ThePEG/Helicity/FermionSpinInfo.h" #include "ThePEG/StandardModel/StandardModelBase.h" using namespace Herwig; using namespace ThePEG::Helicity; void TauDecayer::doinit() { DecayIntegrator::doinit(); // make sure the current got initialised _current->init(); // set up the phase-space channels DecayPhaseSpaceModePtr mode; DecayPhaseSpaceChannelPtr channel; tPDVector extpart,ptemp; extpart.push_back(getParticleData(ParticleID::tauminus)); extpart.push_back(getParticleData(ParticleID::nu_tau)); Energy mtau(extpart[0]->mass()); double maxweight; vector<double> channelwgts; int iq(0),ia(0); _modemap.clear(); unsigned int ix,iy; bool done; vector<double>::iterator start,end; for(ix=0;ix<_current->numberOfModes();++ix) { // get the external particles for this mode extpart.resize(2); ptemp=_current->particles(-3,ix,iq,ia); for(iy=0;iy<ptemp.size();++iy) extpart.push_back(ptemp[iy]); // create the mode mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); // create the first piece of the channel channel = new_ptr(DecayPhaseSpaceChannel(mode)); channel->addIntermediate(extpart[0],0,0.0,-1,1); done=_current->createMode(-3,ix,mode,2,1,channel,mtau); if(done) { // the maximum weight and the channel weights // the maximum maxweight = _wgtmax.size()>numberModes() ? _wgtmax[numberModes()] : 0; // the weights for the channel if(_wgtloc.size()>numberModes()&& _wgtloc[numberModes()]+mode->numberChannels()<=_weights.size()) { start=_weights.begin()+_wgtloc[numberModes()]; end = start+mode->numberChannels(); channelwgts=vector<double>(start,end); } else { channelwgts.resize(mode->numberChannels(),1./(mode->numberChannels())); } _modemap.push_back(ix); // special for the two body modes if(extpart.size()==3) { channelwgts.clear(); mode=new_ptr(DecayPhaseSpaceMode(extpart,this)); } addMode(mode,maxweight,channelwgts); } } _current->reset(); _current->touch(); _current->update(); } void TauDecayer::doinitrun() { _current->initrun(); DecayIntegrator::doinitrun(); if(initialize()) { _weights.clear();_wgtloc.clear();_wgtmax.clear(); unsigned int ix,iy; for(ix=0;ix<numberModes();++ix) { _wgtmax.push_back(mode(ix)->maxWeight()); _wgtloc.push_back(_weights.size()); for(iy=0;iy<mode(ix)->numberChannels();++iy) { _weights.push_back(mode(ix)->channelWeight(iy)); } } } } bool TauDecayer::accept(tcPDPtr parent, const tPDVector & children) const { bool allowed(false); // find the neutrino int idnu(0),idtemp,idin(parent->id()); vector<int> idother; tPDVector::const_iterator pit = children.begin(); tPDVector::const_iterator pend = children.end(); for( ; pit!=pend;++pit) { idtemp=(**pit).id(); if(abs(idtemp)==16) idnu=idtemp; else idother.push_back(idtemp); } if((idnu==ParticleID::nu_tau && idin==ParticleID::tauminus)|| (idnu==ParticleID::nu_taubar && idin==ParticleID::tauplus )) { allowed=_current->accept(idother); } return allowed; } int TauDecayer::modeNumber(bool & cc,tcPDPtr parent, const tPDVector & children) const { int imode(-1); tPDVector::const_iterator pit = children.begin(); tPDVector::const_iterator pend = children.end(); int idtemp;vector<int> idother; for( ; pit!=pend;++pit) { idtemp=(**pit).id(); if(abs(idtemp)!=16) idother.push_back(idtemp); } unsigned int itemp=_current->decayMode(idother); for(unsigned int ix=0;ix<_modemap.size();++ix) { if(_modemap[ix]==itemp) imode=ix; } // perform the decay cc=parent->id()==ParticleID::tauplus; return imode; } void TauDecayer::persistentOutput(PersistentOStream & os) const { os << _modemap << _current << _wgtloc << _wgtmax << _weights << _polOpt << _tauMpol << _tauPpol; } void TauDecayer::persistentInput(PersistentIStream & is, int) { is >> _modemap >> _current >> _wgtloc >> _wgtmax >> _weights >> _polOpt >> _tauMpol >> _tauPpol; } ClassDescription<TauDecayer> TauDecayer::initTauDecayer; // Definition of the static class description member. void TauDecayer::Init() { static ClassDocumentation<TauDecayer> documentation ("The TauDecayer class is designed to use a weak current" " to perform the decay of the tau."); static Reference<TauDecayer,WeakDecayCurrent> interfaceWeakCurrent ("WeakCurrent", "The reference for the decay current to be used.", &TauDecayer::_current, false, false, true, false, false); static ParVector<TauDecayer,int> interfaceWeightLocation ("WeightLocation", "The locations of the weights for a given channel in the vector", &TauDecayer::_wgtloc, 0, 0, 0, 0, 10000, false, false, true); static ParVector<TauDecayer,double> interfaceWeightMax ("MaximumWeight", "The maximum weight for a given channel.", &TauDecayer::_wgtmax, 0, 0, 0, 0., 100., false, false, true); static ParVector<TauDecayer,double> interfaceWeights ("Weights", "The weights for the integration.", &TauDecayer::_weights, 0, 0, 0, 0., 1., false, false, true); static Switch<TauDecayer,bool> interfacePolarizationOption ("PolarizationOption", "Option of forcing the polarization of the tau leptons, N.B. you" " should only use this option for making distributions for" " comparision if you really know what you are doing.", &TauDecayer::_polOpt, false, false, false); static SwitchOption interfacePolarizationOptionDefault (interfacePolarizationOption, "Default", "Don't force the polarization use the full spin density matrices" " to get the right answer", false); static SwitchOption interfacePolarizationOptionForce (interfacePolarizationOption, "Force", "Force the polarizations", true); static Parameter<TauDecayer,double> interfaceTauMinusPolarization ("TauMinusPolarization", "The polarization of the tau-, left=-1, right=+1 if this is forced.", &TauDecayer::_tauMpol, 0.0, -1.0, 1.0, false, false, Interface::limited); static Parameter<TauDecayer,double> interfaceTauPlusPolarization ("TauPlusPolarization", "The polarization of the tau+, left=-1, right=+1 if this is forced.", &TauDecayer::_tauPpol, 0.0, -1.0, 1.0, false, false, Interface::limited); } // combine the currents to give the matrix element double TauDecayer::me2(const int ichan,const Particle & inpart, const ParticleVector & decay, MEOption meopt) const { // map the mode to those in the current int mode(_modemap[imode()]); // get the particles for the hadronic current ParticleVector hadpart(decay.begin()+1,decay.end()); Energy q; // extract info on the decaying particle if(meopt==Initialize) { // spin density matrix for the decaying particle _rho = RhoDMatrix(PDT::Spin1Half); if(inpart.id()==ParticleID::tauminus) SpinorWaveFunction ::calculateWaveFunctions(_inspin,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); else SpinorBarWaveFunction::calculateWaveFunctions(_inbar ,_rho, const_ptr_cast<tPPtr>(&inpart), incoming); if(_polOpt) { _rho(0,1) = _rho(1,0) = 0.; if(inpart.id()==ParticleID::tauminus) { _rho(0,0) = 0.5*(1.-_tauMpol); _rho(1,1) = 0.5*(1.+_tauMpol); } else { _rho(0,0) = 0.5*(1.+_tauPpol); _rho(1,1) = 0.5*(1.-_tauPpol); } } // work out the mapping for the hadron vector _constants = vector<unsigned int>(decay.size()+1); _ispin = vector<PDT::Spin >(decay.size()); int itemp(1); unsigned int ix(decay.size()); do { --ix; _ispin[ix] = decay[ix]->data().iSpin(); itemp *= _ispin[ix]; _constants[ix] = itemp; } while(ix>0); _constants[decay.size()] = 1; _constants[0 ] = _constants[1]; ME(DecayMatrixElement(PDT::Spin1Half,_ispin)); } // connect the spininfo up if needed if(meopt==Terminate) { if(inpart.id()==ParticleID::tauminus) { SpinorWaveFunction :: constructSpinInfo(_inspin,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorBarWaveFunction:: constructSpinInfo(_inbar,decay[0],outgoing,true); } else { SpinorBarWaveFunction:: constructSpinInfo(_inbar ,const_ptr_cast<tPPtr>(&inpart),incoming,true); SpinorWaveFunction:: constructSpinInfo(_inspin,decay[0],outgoing,true); } _current->current(mode,ichan,q,hadpart,meopt); return 0.; } // calculate the spinors for the decay products if(inpart.id()==ParticleID::tauminus) SpinorBarWaveFunction::calculateWaveFunctions(_inbar ,decay[0],outgoing); else SpinorWaveFunction ::calculateWaveFunctions(_inspin,decay[0],outgoing); // calculate the hadron current vector<LorentzPolarizationVectorE> hadron(_current->current(mode,ichan,q,hadpart,meopt)); // prefactor double pre = sqr(pow(inpart.mass()/q,int(hadpart.size()-2))); // calculate the lepton current LorentzPolarizationVectorE lepton[2][2]; for(unsigned ix=0;ix<2;++ix) { for(unsigned iy=0;iy<2;++iy) { if(inpart.id()==15) lepton[ix][iy]=2.*_inspin[ix].leftCurrent(_inbar[iy]); else lepton[iy][ix]=2.*_inspin[ix].leftCurrent(_inbar[iy]); } } // compute the matrix element vector<unsigned int> ihel(decay.size()+1); for(unsigned int hhel=0;hhel<hadron.size();++hhel) { // map the index for the hadrons to a helicity state for(unsigned int ix=decay.size();ix>1;--ix) { ihel[ix]=(hhel%_constants[ix-1])/_constants[ix]; } // loop over the helicities of the tau and neutrino and set up the matrix // element for(ihel[1]=0;ihel[1]<2;++ihel[1]){ for(ihel[0]=0;ihel[0]<2;++ihel[0]) { ME()(ihel)= lepton[ihel[0]][ihel[1]].dot(hadron[hhel])* SM().fermiConstant(); } } } // multiply by the CKM element int iq,ia; _current->decayModeInfo(mode,iq,ia); double ckm(1.); if(iq<=6) { if(iq%2==0) ckm = SM().CKM(iq/2-1,(abs(ia)-1)/2); else ckm = SM().CKM(abs(ia)/2-1,(iq-1)/2); } return 0.5*pre*ckm*(ME().contract(_rho)).real(); } // output the setup information for the particle database void TauDecayer::dataBaseOutput(ofstream & output,bool header) const { unsigned int ix; if(header) output << "update decayers set parameters=\""; DecayIntegrator::dataBaseOutput(output,false); for(ix=0;ix<_wgtloc.size();++ix) { output << "insert " << name() << ":WeightLocation " << ix << " " << _wgtloc[ix] << "\n"; } for(ix=0;ix<_wgtmax.size();++ix) { output << "insert " << name() << ":MaximumWeight " << ix << " " << _wgtmax[ix] << "\n"; } for(ix=0;ix<_weights.size();++ix) { output << "insert " << name() << ":Weights " << ix << " " << _weights[ix] << "\n"; } _current->dataBaseOutput(output,false,true); output << "newdef " << name() << ":WeakCurrent " << _current->name() << " \n"; output << "\n\" where BINARY ThePEGName=\"" << fullName() << "\";\n"; } ������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/Tau/Makefile.am�����������������������������������������������������������0000644�0001750�0001750�00000000232�11754474773�020605� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwTauDecay.la HwTauDecay_la_SOURCES = TauDecayer.cc TauDecayer.h HwTauDecay_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 8:0:0 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/HwDecayerBase.cc����������������������������������������������������������0000644�0001750�0001750�00000010601�11754474774�020777� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HwDecayerBase.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the HwDecayerBase class. // #include "HwDecayerBase.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; bool HwDecayerBase::accept(const DecayMode & dm) const { // get the primary products tPDVector products=dm.orderedProducts(); // add products for which the decay mode is all ready specified if(!dm.cascadeProducts().empty()) { for(ModeMSet::const_iterator mit=dm.cascadeProducts().begin(); mit!=dm.cascadeProducts().end();++mit) { products.push_back(const_ptr_cast<PDPtr>((**mit).parent())); } } // can this mode be handled ? return accept(dm.parent(),products); } ParticleVector HwDecayerBase::decay(const DecayMode & dm, const Particle & p) const { // handling of the decay including the special features of the // DecayMode // get the primary products tPDVector products=dm.orderedProducts(); // add products for which the decay mode is all ready specified if(!dm.cascadeProducts().empty()) { for(ModeMSet::const_iterator mit=dm.cascadeProducts().begin(); mit!=dm.cascadeProducts().end();++mit) { products.push_back(const_ptr_cast<PDPtr>((**mit).parent())); } } // perform the primary decay ParticleVector output=decay(p,products); // perform the secondary decays if(!dm.cascadeProducts().empty()) { unsigned int iloc=dm.orderedProducts().size(); for(ModeMSet::const_iterator mit=dm.cascadeProducts().begin(); mit!=dm.cascadeProducts().end();++mit) { if(!(*mit)->decayer()) throw Exception() << "Decay mode " << (**mit).tag() << "does not have a decayer, can't perform" << "decay in HwDecayerBase::decay()" << Exception::eventerror; ParticleVector children=(*mit)->decayer()->decay(**mit,*output[iloc]); for(unsigned int ix=0;ix<children.size();++ix) { output[iloc]->addChild(children[ix]); } ++iloc; } } return output; } void HwDecayerBase::persistentOutput(PersistentOStream & os) const { os << _initialize << _dbOutput; } void HwDecayerBase::persistentInput(PersistentIStream & is, int) { is >> _initialize >> _dbOutput; } AbstractClassDescription<HwDecayerBase> HwDecayerBase::initHwDecayerBase; // Definition of the static class description member. void HwDecayerBase::Init() { static ClassDocumentation<HwDecayerBase> documentation ("The HwDecayerBase class is the base class for Decayers in Hw++."); static Switch<HwDecayerBase,bool> interfaceInitialize ("Initialize", "Initialization of the phase space calculation", &HwDecayerBase::_initialize, false, false, false); static SwitchOption interfaceInitializeon (interfaceInitialize, "Yes", "At initialisation find max weight and optimise the integration", true); static SwitchOption interfaceInitializeoff (interfaceInitialize, "No", "Use the maximum weight and channel weights supplied for the integration", false); static Switch<HwDecayerBase,bool> interfaceDatabaseOutput ("DatabaseOutput", "Whether to print the database information", &HwDecayerBase::_dbOutput, false, false, false); static SwitchOption interfaceDatabaseOutputYes (interfaceDatabaseOutput, "Yes", "Output information on the decayer initialization", true); static SwitchOption interfaceDatabaseOutputNo (interfaceDatabaseOutput, "No", "Do not output information about the decayer initialization", false); } void HwDecayerBase::dofinish() { Decayer::dofinish(); if(initialize() && databaseOutput()) { string fname = CurrentGenerator::current().filename() + string("-") + name() + string(".output"); ofstream output(fname.c_str()); dataBaseOutput(output,true); } } bool HwDecayerBase::softMatrixElementVeto(ShowerProgenitorPtr, ShowerParticlePtr, Branching) { return false; } �������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/DecayPhaseSpaceChannel.fh�������������������������������������������������0000644�0001750�0001750�00000000526�11754474774�022621� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the DecayPhaseSpaceChannel class. // #ifndef HERWIG_DecayPhaseSpaceChannel_FH #define HERWIG_DecayPhaseSpaceChannel_FH namespace Herwig { using namespace ThePEG; class DecayPhaseSpaceChannel; ThePEG_DECLARE_CLASS_POINTERS(DecayPhaseSpaceChannel,DecayPhaseSpaceChannelPtr); } #endif ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/Decay/DecayPhaseSpaceChannel.cc�������������������������������������������������0000644�0001750�0001750�00000051410�11754474774�022607� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DecayPhaseSpaceChannel.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DecayPhaseSpaceChannel class. // // Author: Peter Richardson // #include "DecayPhaseSpaceChannel.h" #include "DecayPhaseSpaceMode.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Switch.h" #include <ThePEG/Repository/CurrentGenerator.h> using namespace Herwig; DecayPhaseSpaceChannel::DecayPhaseSpaceChannel(tcDecayPhaseSpaceModePtr in) : _mode(in) {} void DecayPhaseSpaceChannel::persistentOutput(PersistentOStream & os) const { os << _intpart << _jactype << ounit(_intmass,GeV) << ounit(_intwidth,GeV) << ounit(_intmass2,GeV2) << ounit(_intmwidth,GeV2) << _intpower << _intdau1 << _intdau2 << _intext << _mode; } void DecayPhaseSpaceChannel::persistentInput(PersistentIStream & is, int) { is >> _intpart >> _jactype >> iunit(_intmass,GeV) >> iunit(_intwidth,GeV) >> iunit(_intmass2,GeV2) >> iunit(_intmwidth,GeV2) >> _intpower >> _intdau1 >> _intdau2 >> _intext >> _mode; } ClassDescription<DecayPhaseSpaceChannel> DecayPhaseSpaceChannel::initDecayPhaseSpaceChannel; // Definition of the static class description member. void DecayPhaseSpaceChannel::Init() { static RefVector<DecayPhaseSpaceChannel,ParticleData> interfaceIntermediateParticles ("IntermediateParticles", "The intermediate particles in the decay chain.", &DecayPhaseSpaceChannel::_intpart, 0, false, false, true, false); static ParVector<DecayPhaseSpaceChannel,int> interfacejactype ("Jacobian", "The type of Jacobian to use for the intermediate particle", &DecayPhaseSpaceChannel::_jactype, 0, 0, 0, 0, 1, false, false, true); static ParVector<DecayPhaseSpaceChannel,double> interfaceIntermediatePower ("IntermediatePower", "The power to use in the Jacobian", &DecayPhaseSpaceChannel::_intpower, 0, 0, 0, -10, 10, false, false, true); static ParVector<DecayPhaseSpaceChannel,int> interfaceIntermediateDau1 ("IntermediateDaughter1", "First Daughter of the intermediate", &DecayPhaseSpaceChannel::_intdau1, 0, 0, 0, -10, 10, false, false, true); static ParVector<DecayPhaseSpaceChannel,int> interfaceIntermediateDau2 ("IntermediateDaughter2", "Second Daughter of the intermediate", &DecayPhaseSpaceChannel::_intdau2, 0, 0, 0, -10, 10, false, false, true); static ClassDocumentation<DecayPhaseSpaceChannel> documentation ("The DecayPhaseSpaceChannel class defines a channel" " for the multichannel integration of the phase space for a decay."); } // generate the momenta of the external particles vector<Lorentz5Momentum> DecayPhaseSpaceChannel::generateMomenta(const Lorentz5Momentum & pin, const vector<Energy> & massext) { // integers for loops unsigned int ix,iy,idau[2],iz; // storage of the momenta of the external particles vector<Lorentz5Momentum> pexternal; // and the internal particles vector<Lorentz5Momentum> pinter; // copy the momentum of the incoming particle pexternal.push_back(pin); pinter.push_back(pin); pexternal.resize(_mode->numberofParticles()); pinter.resize(_intpart.size()); // masses of the intermediate particles vector<Energy> massint; massint.resize(_intpart.size()); massint[0]=pin.mass(); // generate all the decays in the chain Energy lower,upper,lowerb[2]; for(ix=0;ix<_intpart.size();++ix) { idau[0] = abs(_intdau1[ix]); idau[1] = abs(_intdau2[ix]); // if both decay products off-shell if(_intdau1[ix]<0&&_intdau2[ix]<0) { // lower limits on the masses of the two resonances for(iy=0;iy<2;++iy) { lowerb[iy]=ZERO; for(iz=0;iz<_intext[idau[iy]].size();++iz) { lowerb[iy]+=massext[_intext[idau[iy]][iz]]; } } // randomize the order if(UseRandom::rnd()<0.5) { // mass of the first resonance upper = massint[ix]-lowerb[1]; lower = lowerb[0]; massint[idau[0]]=generateMass(idau[0],lower,upper); // mass of the second resonance upper = massint[ix]-massint[idau[0]]; lower = lowerb[1]; massint[idau[1]]=generateMass(idau[1],lower,upper); } else { // mass of the second resonance upper = massint[ix]-lowerb[0]; lower = lowerb[1]; massint[idau[1]]=generateMass(idau[1],lower,upper); // mass of the first resonance upper = massint[ix]-massint[idau[1]]; lower = lowerb[0]; massint[idau[0]]=generateMass(idau[0],lower,upper); } // generate the momenta of the decay products twoBodyDecay(pinter[ix],massint[idau[0]],massint[idau[1]], pinter[idau[0]],pinter[idau[1]]); } // only first off-shell else if(_intdau1[ix]<0) { // compute the limits of integration upper = massint[ix]-massext[idau[1]]; lower = ZERO; for(iy=0;iy<_intext[idau[0]].size();++iy) { lower+=massext[_intext[idau[0]][iy]]; } massint[idau[0]]=generateMass(idau[0],lower,upper); // generate the momenta of the decay products twoBodyDecay(pinter[ix],massint[idau[0]],massext[idau[1]], pinter[idau[0]],pexternal[idau[1]]); } // only second off-shell else if(_intdau2[ix]<0) { // compute the limits of integration upper = massint[ix]-massext[idau[0]]; lower = ZERO; for(iy=0;iy<_intext[idau[1]].size();++iy) { lower+=massext[_intext[idau[1]][iy]]; } massint[idau[1]]=generateMass(idau[1],lower,upper); // generate the momenta of the decay products twoBodyDecay(pinter[ix],massext[idau[0]],massint[idau[1]], pexternal[idau[0]],pinter[idau[1]]); } // both on-shell else { // generate the momenta of the decay products twoBodyDecay(pinter[ix],massext[idau[0]],massext[idau[1]], pexternal[idau[0]],pexternal[idau[1]]); } } // return the external momenta return pexternal; } // generate the weight for this channel given a phase space configuration double DecayPhaseSpaceChannel::generateWeight(const vector<Lorentz5Momentum> & output) { using Constants::pi; // integers for loops unsigned int ix,iy,idau[2],iz; // include the prefactor due to the weight of the channel double wgt=1.; // work out the masses of the intermediate particles vector<Energy2> intmass2(_intpart.size()); vector<Energy> intmass(_intpart.size()); Lorentz5Momentum pinter; for(ix=0;ix<_intpart.size();++ix) { pinter=output[_intext[ix][0]]; for(iz=1;iz<_intext[ix].size();++iz) pinter+=output[_intext[ix][iz]]; pinter.rescaleMass(); intmass[ix] = pinter.mass(); intmass2[ix] = sqr(intmass[ix]); } Energy2 scale(intmass2[0]); // calculate the terms for each of the decays Energy lower,upper,lowerb[2]; for(ix=0;ix<_intpart.size();++ix) { idau[0] = abs(_intdau1[ix]); idau[1] = abs(_intdau2[ix]); // if both decay products off-shell Energy pcm; if(_intdau1[ix]<0&&_intdau2[ix]<0) { // lower limits on the masses of the two resonances for(iy=0;iy<2;++iy) { lowerb[iy]=ZERO; for(iz=0;iz<_intext[idau[iy]].size();++iz) lowerb[iy]+=output[_intext[idau[iy]][iz]].mass(); } // undo effect of randomising // weight for the first order // contribution of first resonance upper = intmass[ix]-lowerb[1]; lower = lowerb[0]; InvEnergy2 wgta=massWeight(idau[0],intmass[idau[0]],lower,upper); // contribution of second resonance upper = intmass[ix]-intmass[idau[0]]; lower = lowerb[1]; InvEnergy4 wgta2 = wgta*massWeight(idau[1],intmass[idau[1]],lower,upper); // weight for the second order upper = intmass[ix]-lowerb[0]; lower = lowerb[1]; InvEnergy2 wgtb=massWeight(idau[1],intmass[idau[1]],lower,upper); upper = intmass[ix]-intmass[idau[1]]; lower = lowerb[0]; InvEnergy4 wgtb2=wgtb*massWeight(idau[0],intmass[idau[0]],lower,upper); // weight factor wgt *=0.5*sqr(scale)*(wgta2+wgtb2); // factor for the kinematics pcm = Kinematics::pstarTwoBodyDecay(intmass[ix],intmass[idau[0]], intmass[idau[1]]); wgt *= intmass[ix]*8.*pi*pi/pcm; } // only first off-shell else if(_intdau1[ix]<0) { // compute the limits of integration upper = intmass[ix]-output[idau[1]].mass(); lower = ZERO; for(iy=0;iy<_intext[idau[0]].size();++iy) lower+=output[_intext[idau[0]][iy]].mass(); wgt *=scale*massWeight(idau[0],intmass[idau[0]],lower,upper); pcm = Kinematics::pstarTwoBodyDecay(intmass[ix],intmass[idau[0]], output[idau[1]].mass()); wgt *= intmass[ix]*8.*pi*pi/pcm; } // only second off-shell else if(_intdau2[ix]<0) { // compute the limits of integration upper = intmass[ix]-output[idau[0]].mass(); lower = ZERO; for(iy=0;iy<_intext[idau[1]].size();++iy) lower+=output[_intext[idau[1]][iy]].mass(); wgt *=scale*massWeight(idau[1],intmass[idau[1]],lower,upper); pcm = Kinematics::pstarTwoBodyDecay(intmass[ix],intmass[idau[1]], output[idau[0]].mass()); wgt *=intmass[ix]*8.*pi*pi/pcm; } // both on-shell else { pcm = Kinematics::pstarTwoBodyDecay(intmass[ix],output[idau[1]].mass(), output[idau[0]].mass()); wgt *=intmass[ix]*8.*pi*pi/pcm; } } // finally the overall factor wgt /= pi; // return the answer return wgt; } // output the information to a stream ostream & Herwig::operator<<(ostream & os, const DecayPhaseSpaceChannel & channel) { // output of the external particles os << "Channel for the decay of " << channel._mode->externalParticles(0)->PDGName() << " -> "; for(unsigned int ix=1;ix<channel._mode->numberofParticles();++ix) os << channel._mode->externalParticles(ix)->PDGName() << " "; os << endl; os << "Decay proceeds in following steps "; for(unsigned int ix=0;ix<channel._intpart.size();++ix) { os << channel._intpart[ix]->PDGName() << " -> "; if(channel._intdau1[ix]>0) { os << channel._mode->externalParticles(channel._intdau1[ix])->PDGName() << "(" << channel._intdau1[ix]<< ") "; } else { os << channel._intpart[-channel._intdau1[ix]]->PDGName() << "(" << channel._intdau1[ix]<< ") "; } if(channel._intdau2[ix]>0) { os << channel._mode->externalParticles(channel._intdau2[ix])->PDGName() << "(" <<channel._intdau2[ix] << ") "; } else{ os << channel._intpart[-channel._intdau2[ix]]->PDGName() << "(" <<channel._intdau2[ix] << ") "; } os << endl; } return os; } // doinit method void DecayPhaseSpaceChannel::doinit() { Interfaced::doinit(); // check if the mode pointer exists if(!_mode){throw InitException() << "DecayPhaseSpaceChannel::doinit() the " << "channel must have a pointer to a decay mode " << Exception::abortnow;} // masses and widths of the intermediate particles for(unsigned int ix=0;ix<_intpart.size();++ix) { _intmass.push_back(_intpart[ix]->mass()); _intwidth.push_back(_intpart[ix]->width()); _intmass2.push_back(_intpart[ix]->mass()*_intpart[ix]->mass()); _intmwidth.push_back(_intpart[ix]->mass()*_intpart[ix]->width()); } // external particles for each intermediate particle vector<int> temp; _intext.resize(_intpart.size()); // loop over the intermediate particles for(int ix=_intpart.size()-1;ix>=0;--ix) { temp.clear(); // add the first daughter if(_intdau1[ix]>=0) { temp.push_back(_intdau1[ix]); } else { int iy = -_intdau1[ix]; vector<int>::iterator istart=_intext[iy].begin(); vector<int>::iterator iend=_intext[iy].end(); for(;istart!=iend;++istart) temp.push_back(*istart); } // add the second daughter if(_intdau2[ix]>=0) { temp.push_back(_intdau2[ix]); } else { int iy = -_intdau2[ix]; vector<int>::iterator istart=_intext[iy].begin(); vector<int>::iterator iend=_intext[iy].end(); for(;istart!=iend;++istart) temp.push_back(*istart); } _intext[ix]=temp; } // ensure intermediates either have the width set, or // can't possibly be on-shell Energy massmax; if(_mode->testOnShell()) { massmax = _mode->externalParticles(0)->mass(); for(unsigned int ix=1;ix<_mode->numberofParticles();++ix) massmax -= _mode->externalParticles(ix)->mass(); } else { massmax = _mode->externalParticles(0)->massMax(); for(unsigned int ix=1;ix<_mode->numberofParticles();++ix) massmax -= _mode->externalParticles(ix)->massMin(); } for(unsigned int ix=0;ix<_intpart.size();++ix) { if(_intwidth.back()==ZERO && ix>0 && _jactype[ix]==0 ) { Energy massmin(ZERO); for(unsigned int iy=0;iy<_intext[ix].size();++iy) massmin += _mode->testOnShell() ? _mode->externalParticles(_intext[ix][iy])->mass() : _mode->externalParticles(_intext[ix][iy])->massMin(); // check if can be on-shell if(_intmass[ix]>=massmin&&_intmass[ix]<=massmax+massmin) { string modeout; for(unsigned int iy=0;iy<_mode->numberofParticles();++iy) { modeout += _mode->externalParticles(iy)->PDGName() + " "; } throw InitException() << "Width zero for " << _intpart[ix]->PDGName() << " in DecayPhaseSpaceChannel::doinit() " << modeout << Exception::runerror; } } } } void DecayPhaseSpaceChannel::doinitrun() { Interfaced::doinitrun(); if(!_mode->testOnShell()) return; _intmass.clear(); _intwidth.clear(); _intmass2.clear(); _intmwidth.clear(); // masses and widths of the intermediate particles for(unsigned int ix=0;ix<_intpart.size();++ix) { _intmass.push_back(_intpart[ix]->mass()); _intwidth.push_back(_intpart[ix]->width()); _intmass2.push_back(_intpart[ix]->mass()*_intpart[ix]->mass()); _intmwidth.push_back(_intpart[ix]->mass()*_intpart[ix]->width()); } // ensure intermediates either have the width set, or // can't possibly be on-shell Energy massmax = _mode->externalParticles(0)->massMax(); for(unsigned int ix=1;ix<_mode->numberofParticles();++ix) massmax -= _mode->externalParticles(ix)->massMin(); for(unsigned int ix=0;ix<_intpart.size();++ix) { if(_intwidth.back()==0.*MeV && ix>0 && _jactype[ix]==0 ) { Energy massmin(0.*GeV); for(unsigned int iy=0;iy<_intext[ix].size();++iy) massmin += _mode->externalParticles(_intext[ix][iy])->massMin(); // check if can be on-shell if(_intmass[ix]>=massmin&&_intmass[ix]<=massmax+massmin) { string modeout; for(unsigned int iy=0;iy<_mode->numberofParticles();++iy) { modeout += _mode->externalParticles(iy)->PDGName() + " "; } throw Exception() << "Width zero for " << _intpart[ix]->PDGName() << " in DecayPhaseSpaceChannel::doinitrun() " << modeout << Exception::runerror; } } } } // generate the final-state particles including the intermediate resonances void DecayPhaseSpaceChannel::generateIntermediates(bool cc, const Particle & in, ParticleVector & out) { // integers for the loops unsigned int ix,iz; // create the particles // incoming particle ParticleVector external; external.push_back(const_ptr_cast<tPPtr>(&in)); // outgoing for(ix=0;ix<out.size();++ix) external.push_back(out[ix]); out.clear(); // now create the intermediates ParticleVector resonance; resonance.push_back(external[0]); PPtr respart; tcPDPtr parttemp; Lorentz5Momentum pinter; for(ix=1;ix<_intpart.size();++ix) { pinter=external[_intext[ix][0]]->momentum(); for(iz=1;iz<_intext[ix].size();++iz) pinter+=external[_intext[ix][iz]]->momentum(); pinter.rescaleMass(); respart = (cc&&_intpart[ix]->CC()) ? _intpart[ix]->CC()->produceParticle(pinter) : _intpart[ix] ->produceParticle(pinter); resonance.push_back(respart); } // set up the mother daughter relations for(ix=1;ix<_intpart.size();++ix) { resonance[ix]->addChild( _intdau1[ix]<0 ? resonance[-_intdau1[ix]] : external[_intdau1[ix]]); resonance[ix]->addChild( _intdau2[ix]<0 ? resonance[-_intdau2[ix]] : external[_intdau2[ix]]); } // construct the output with the particles in the first step out.push_back( _intdau1[0]>0 ? external[_intdau1[0]] : resonance[-_intdau1[0]]); out.push_back( _intdau2[0]>0 ? external[_intdau2[0]] : resonance[-_intdau2[0]]); } double DecayPhaseSpaceChannel::atanhelper_(int ires, Energy limit) { return atan2( limit*limit-_intmass2[ires], _intmwidth[ires] ); } // return the weight for a given resonance InvEnergy2 DecayPhaseSpaceChannel::massWeight(int ires, Energy moff, Energy lower,Energy upper) { InvEnergy2 wgt = ZERO; if(lower>upper) { throw DecayPhaseSpaceError() << "DecayPhaseSpaceChannel::massWeight not allowed" << ires << " " << _intpart[ires]->id() << " " << moff/GeV << Exception::eventerror; } // use a Breit-Wigner if ( _jactype[ires] == 0 ) { double rhomin = atanhelper_(ires,lower); double rhomax = atanhelper_(ires,upper) - rhomin; if ( rhomax != 0.0 ) { Energy2 moff2=moff*moff-_intmass2[ires]; wgt = _intmwidth[ires]/rhomax/(moff2*moff2+_intmwidth[ires]*_intmwidth[ires]); } else { wgt = 1./((sqr(upper)-sqr(lower))*sqr(sqr(moff)-_intmass2[ires])/ (sqr(lower)-_intmass2[ires])/(sqr(upper)-_intmass2[ires])); } } // power law else if(_jactype[ires]==1) { double rhomin = pow(sqr(lower/MeV),_intpower[ires]+1.); double rhomax = pow(sqr(upper/MeV),_intpower[ires]+1.)-rhomin; wgt = (_intpower[ires]+1.)/rhomax*pow(sqr(moff/MeV),_intpower[ires]) /MeV/MeV; } else if(_jactype[ires]==2) { wgt = 1./Constants::pi/_intmwidth[ires]; } else { throw DecayPhaseSpaceError() << "Unknown type of Jacobian in " << "DecayPhaseSpaceChannel::massWeight" << Exception::eventerror; } return wgt; } Energy DecayPhaseSpaceChannel::generateMass(int ires,Energy lower,Energy upper) { static const Energy eps=1e-9*MeV; if(lower<eps) lower=eps; Energy mass=ZERO; if(lower>upper) throw DecayPhaseSpaceError() << "DecayPhaseSpaceChannel::generateMass" << " not allowed" << Exception::eventerror; if(abs(lower-upper)/(lower+upper)>2e-10) { lower +=1e-10*(lower+upper); upper -=1e-10*(lower+upper); } else return 0.5*(lower+upper); // use a Breit-Wigner if(_jactype[ires]==0) { if(_intmwidth[ires]!=ZERO) { Energy2 lower2 = sqr(lower); Energy2 upper2 = sqr(upper); double rhomin = atan2((lower2 - _intmass2[ires]),_intmwidth[ires]); double rhomax = atan2((upper2 - _intmass2[ires]),_intmwidth[ires])-rhomin; double rho = rhomin+rhomax*UseRandom::rnd(); Energy2 mass2 = max(lower2,min(upper2,_intmass2[ires]+_intmwidth[ires]*tan(rho))); if(mass2<ZERO) mass2 = ZERO; mass = sqrt(mass2); } else { mass = sqrt(_intmass2[ires]+ (sqr(lower)-_intmass2[ires])*(sqr(upper)-_intmass2[ires])/ (sqr(lower)-_intmass2[ires]-UseRandom::rnd()*(sqr(lower)-sqr(upper)))); } } // use a power-law else if(_jactype[ires]==1) { double rhomin = pow(sqr(lower/MeV),_intpower[ires]+1.); double rhomax = pow(sqr(upper/MeV),_intpower[ires]+1.)-rhomin; double rho = rhomin+rhomax*UseRandom::rnd(); mass = pow(rho,0.5/(_intpower[ires]+1.))*MeV; } else if(_jactype[ires]==2) { mass = _intmass[ires]; } else { throw DecayPhaseSpaceError() << "Unknown type of Jacobian in " << "DecayPhaseSpaceChannel::generateMass" << Exception::eventerror; } if(mass<lower) mass=lower+1e-10*(lower+upper); else if(mass>upper) mass=upper-1e-10*(lower+upper); return mass; } void DecayPhaseSpaceChannel::twoBodyDecay(const Lorentz5Momentum & p, const Energy m1, const Energy m2, Lorentz5Momentum & p1, Lorentz5Momentum & p2 ) { static const double eps=1e-6; double ctheta,phi; Kinematics::generateAngles(ctheta,phi); Axis unitDir1=Kinematics::unitDirection(ctheta,phi); Momentum3 pstarVector; Energy min=p.m(); if ( min >= m1 + m2 && m1 >= ZERO && m2 >= ZERO ) { pstarVector = unitDir1 * Kinematics::pstarTwoBodyDecay(min,m1,m2); } else if( m1 >= ZERO && m2 >= ZERO && (m1+m2-min)/(min+m1+m2)<eps) { pstarVector = Momentum3(); } else { throw DecayPhaseSpaceError() << "Two body decay cannot proceed " << "p = " << p / GeV << " p.m() = " << min / GeV << " -> " << m1/GeV << ' ' << m2/GeV << Exception::eventerror; } p1 = Lorentz5Momentum(m1, pstarVector); p2 = Lorentz5Momentum(m2,-pstarVector); // boost from CM to LAB Boost bv = p.vect() * (1./p.t()); p1.boost( bv ); p2.boost( bv ); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/INSTALL�������������������������������������������������������������������������0000644�0001750�0001750�00000036605�11756461677�016042� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2012 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. Some packages provide this `INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type `make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the `make install' phase executed with root privileges. 5. Optionally, type `make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior `make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type `make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide `make distcheck', which can by used by developers to test that all other targets like `make install' and `make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. This is known as a "VPATH" build. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of `${prefix}', so that specifying just `--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to `configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the `make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, `make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of `${prefix}'. Any directories that were specified during `configure', but not in terms of `${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the `DESTDIR' variable. For example, `make install DESTDIR=/alternate/directory' will prepend `/alternate/directory' before all installation names. The approach of `DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of `${prefix}' at `configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of `make' will be. For these packages, running `./configure --enable-silent-rules' sets the default to minimal output, which can be overridden with `make V=1'; while running `./configure --disable-silent-rules' sets the default to verbose, which can be overridden with `make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX `make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as `configure' are involved. Use GNU `make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `<wchar.h>' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put `/usr/ucb' early in your `PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in `/usr/bin'. So, if you need `/usr/ucb' in your `PATH', put it _after_ `/usr/bin'. On Haiku, software installed for all users goes in `/boot/common', not `/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. ���������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/m4/�����������������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464203�015303� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/m4/ltversion.m4�����������������������������������������������������������������0000644�0001750�0001750�00000001262�11756461671�017601� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 3337 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.2]) m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.2' macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/m4/fastjet.m4�������������������������������������������������������������������0000644�0001750�0001750�00000005326�11755206203�017204� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������dnl CHECK FASTJET BEGIN dnl dnl This script can be used in configure scripts to check for the dnl usability of the FastJet librarty. dnl dnl By defaults, it searches the FastJet library in standard system dnl locations but an alternative path can be specified using the dnl --with-fastjet=... configure option dnl dnl If FastJet is found and functional, the variables FASTJET_CXXFLAGS dnl and FASTJET_LIBS are set dnl dnl modified for Herwig++ 2011-10-04 D.Grellscheid dnl AC_DEFUN([FASTJET_CHECK_FASTJET], [ dnl ckeck if a directory is specified for FastJet AC_ARG_WITH(fastjet, [AC_HELP_STRING([--with-fastjet=dir], [Assume the given directory for FastJet])]) dnl search for the fastjet-config script if test "$with_fastjet" = ""; then AC_PATH_PROG(fjconfig, fastjet-config, no) else AC_PATH_PROG(fjconfig, fastjet-config, no, ${with_fastjet}/bin) fi LOAD_FASTJET="" CREATE_FASTJET="#create" if test "${fjconfig}" = "no"; then AC_MSG_CHECKING(FastJet) AC_MSG_RESULT(no); $2 else dnl now see if FastJet is functional save_CXXFLAGS="$CXXFLAGS" save_LIBS="$LIBS" CXXFLAGS="${CXXFLAGS} `${fjconfig} --cxxflags`" LIBS="${LIBS} `${fjconfig} --libs --plugins`" AC_MSG_CHECKING([if FastJet is functional]) AC_LANG_PUSH(C++) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <fastjet/ClusterSequence.hh> ]], [[ fastjet::PseudoJet pj=fastjet::PtYPhiM(10.0,0.5,1.0,0.0); ]])], [fjok='yes'], [fjok='no']) AC_MSG_RESULT([$fjok]) AC_LANG_POP() CXXFLAGS="$save_CXXFLAGS" LIBS="$save_LIBS" AC_MSG_CHECKING(FastJet) if test "${fjok}" = "yes"; then FASTJET_CXXFLAGS="`${fjconfig} --cxxflags`" FASTJET_LIBS="`${fjconfig} --libs --plugins`" LOAD_FASTJET="library HwLEPJetAnalysis.so" CREATE_FASTJET="create" AC_MSG_RESULT(yes) $1 else AC_MSG_RESULT(no) $2 fi fjcheckver=`${fjconfig} --version | sed s/'\.'//g` fjprefix=`${fjconfig} --prefix` if test "${host_cpu}" == "x86_64" -a $fjcheckver -le 301 -a -e `${fjconfig} --prefix`/lib64 ; then AC_MSG_WARN([ *************************************************************************** FastJet <= 3.0.1 has been recognized. The FastJet libraries are located in $fjprefix/lib64 which is not properly communicated by fastjet-config. Consider to configure FastJet with --libdir=$fjprefix/lib *************************************************************************** ]) fi fi AC_SUBST(FASTJETINCLUDE,[$FASTJET_CXXFLAGS]) AC_SUBST(CREATE_FASTJET) AC_SUBST(LOAD_FASTJET) AC_SUBST(FASTJETLIBS,[${FASTJET_LIBS/-Wl,-rpath,/-R}]) AM_CONDITIONAL(WANT_LIBFASTJET,[test "x$CREATE_FASTJET" = "xcreate"]) ]) dnl CHECK FASTJET END ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/m4/libtool.m4�������������������������������������������������������������������0000644�0001750�0001750�00001057216�11756461671�017233� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 57 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # `#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test $lt_write_fail = 0 && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to <bug-libtool@gnu.org>." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_REPLACE_SHELLFNS mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test "${lt_cv_aix_libpath+set}" = set; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script which will find a shell with a builtin # printf (which we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case "$ECHO" in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [ --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified).], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case ${with_sysroot} in #( yes) if test "$GCC" = yes; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([${with_sysroot}]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and in which our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; *-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD="${LD-ld}_sol2" fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -eq 0; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test "$ac_status" -ne 0; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test "x$lt_cv_ar_at_file" = xno; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include <dlfcn.h> #endif #include <stdio.h> #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisbility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; *) lt_sed_strip_eq="s,=/,/,g" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib<name>.so # instead of lib<name>.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' library_names_spec='${libname}.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec="$LIB" if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=yes sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$lt_save_ifs" else lt_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$lt_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) _LT_PATH_LD_GNU AC_SUBST([LD]) _LT_TAGDECL([], [LD], [1], [The linker used to build libraries]) ])# LT_PATH_LD # Old names: AU_ALIAS([AM_PROG_LD], [LT_PATH_LD]) AU_ALIAS([AC_PROG_LD], [LT_PATH_LD]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_LD], []) dnl AC_DEFUN([AC_PROG_LD], []) # _LT_PATH_LD_GNU #- -------------- m4_defun([_LT_PATH_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 </dev/null` in *GNU* | *'with BFD'*) lt_cv_prog_gnu_ld=yes ;; *) lt_cv_prog_gnu_ld=no ;; esac]) with_gnu_ld=$lt_cv_prog_gnu_ld ])# _LT_PATH_LD_GNU # _LT_CMD_RELOAD # -------------- # find reload flag for linker # -- PORTME Some linkers may need a different reload flag. m4_defun([_LT_CMD_RELOAD], [AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, [lt_cv_ld_reload_flag='-r']) reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test "$GCC" != yes; then reload_cmds=false fi ;; darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac _LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl _LT_TAGDECL([], [reload_cmds], [2])dnl ])# _LT_CMD_RELOAD # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh # decide which to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd="$ECHO" ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test "x$lt_cv_path_mainfest_tool" != xyes; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined(__osf__) /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global defined # symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test "$with_gnu_ld" = yes; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test "$lt_use_gnu_ld_interface" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach <jrb3@best.com> says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm # Also, AIX nm treats weak defined symbols like other global # defined symbols, whereas GNU nm marks them as "W". if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes && test "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS="$save_LDFLAGS"]) if test "$lt_cv_irix_exported_symbol" = yes; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' if test "$with_gnu_ld" = yes; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach <jrb3@best.com> says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; else $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile="$lt_outputfile.exe" lt_tool_outputfile="$lt_tool_outputfile.exe" ;; esac~ func_to_tool_file "$lt_outputfile"~ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case ${2} in .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case ${prev}${p} in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test "$pre_test_object_deps_done" = no; then case ${prev} in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" CFLAGS="$lt_save_CFLAGS" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,b/c, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) # ------------------------------------------------------ # In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and # '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. m4_defun([_LT_PROG_FUNCTION_REPLACE], [dnl { sed -e '/^$1 ()$/,/^} # $1 /c\ $1 ()\ {\ m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) } # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: ]) # _LT_PROG_REPLACE_SHELLFNS # ------------------------- # Replace existing portable implementations of several shell functions with # equivalent extended shell implementations where those features are available.. m4_defun([_LT_PROG_REPLACE_SHELLFNS], [if test x"$xsi_shell" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}"]) _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"}]) _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl func_split_long_opt_name=${1%%=*} func_split_long_opt_arg=${1#*=}]) _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac]) _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) fi if test x"$lt_shell_append" = xyes; then _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl func_quote_for_eval "${2}" dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) # Save a `func_append' function call where possible by direct use of '+=' sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: else # Save a `func_append' function call even when '+=' is not available sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ && mv -f "$cfgfile.tmp" "$cfgfile" \ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") test 0 -eq $? || _lt_function_replace_fail=: fi if test x"$_lt_function_replace_fail" = x":"; then AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) fi ]) # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine which file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/m4/lt~obsolete.m4���������������������������������������������������������������0000644�0001750�0001750�00000013756�11756461671�020141� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) ������������������herwig++-2.6.0.orig/m4/ltsugar.m4�������������������������������������������������������������������0000644�0001750�0001750�00000010424�11756461671�017235� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/m4/ltoptions.m4�����������������������������������������������������������������0000644�0001750�0001750�00000030073�11756461671�017611� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, # Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 7 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for lt_pkg in $withval; do IFS="$lt_save_ifs" if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS="$lt_save_ifs" ;; esac], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/m4/herwig.m4��������������������������������������������������������������������0000644�0001750�0001750�00000027361�11756366652�017054� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# check for gcc bug http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34130 AC_DEFUN([HERWIG_CHECK_ABS_BUG], [ AC_REQUIRE([HERWIG_COMPILERFLAGS]) if test "$GCC" = "yes"; then AC_MSG_CHECKING([for gcc abs bug]) AC_RUN_IFELSE([ AC_LANG_PROGRAM( [[ int foo (int i) { return -2 * __builtin_abs(i - 2); } ]], [[ if ( foo(1) != -2 || foo(3) != -2 ) return 1; ]] )], [ AC_MSG_RESULT([not found. Compiler is ok.]) ], [ AC_MSG_RESULT([found. Builtin abs() is buggy.]) AC_MSG_CHECKING([if -fno-builtin-abs works]) oldcxxflags=$CXXFLAGS CXXFLAGS="$CXXFLAGS -fno-builtin-abs" AC_RUN_IFELSE([ AC_LANG_PROGRAM( [[ #include <cstdlib> int foo (int i) { return -2 * std::abs(i - 2); } ]], [[ if (foo(1) != -2 || foo(3) != -2) return 1; ]] )], [ AC_MSG_RESULT([yes. Setting -fno-builtin-abs.]) AM_CXXFLAGS="$AM_CXXFLAGS -fno-builtin-abs" AM_CFLAGS="$AM_CFLAGS -fno-builtin-abs" ], [ AC_MSG_RESULT([no. Setting -fno-builtin.]) AC_MSG_WARN([ ***************************************************************************** For this version of gcc, -fno-builtin-abs alone did not work to avoid the gcc abs() bug. Instead, all gcc builtin functions are now disabled. Update gcc if possible. *****************************************************************************]) AM_CXXFLAGS="$AM_CXXFLAGS -fno-builtin" AM_CFLAGS="$AM_CFLAGS -fno-builtin" ] ) CXXFLAGS=$oldcxxflags ] ) fi ]) dnl ##### THEPEG ##### AC_DEFUN([HERWIG_CHECK_THEPEG], [ defaultlocation="${prefix}" test "x$defaultlocation" = xNONE && defaultlocation="${ac_default_prefix}" AC_MSG_CHECKING([for libThePEG in]) AC_ARG_WITH(thepeg, AC_HELP_STRING([--with-thepeg=DIR],[location of ThePEG installation]), [], [with_thepeg="${defaultlocation}"]) AC_MSG_RESULT([$with_thepeg]) if test "x$with_thepeg" = "xno"; then AC_MSG_ERROR([Cannot build Herwig++ without ThePEG. Please set --with-thepeg.]) fi THEPEGLDFLAGS="-L${with_thepeg}/lib/ThePEG" if test "${host_cpu}" == "x86_64" -a -e ${with_thepeg}/lib64/ThePEG/libThePEG.so ; then THEPEGLDFLAGS="-L${with_thepeg}/lib64/ThePEG" fi THEPEGPATH="${with_thepeg}" oldldflags="$LDFLAGS" oldlibs="$LIBS" LDFLAGS="$LDFLAGS $THEPEGLDFLAGS" AC_CHECK_LIB([ThePEG],[debugThePEG],[], [AC_MSG_ERROR([No ThePEG libraries in $THEPEGLDFLAGS. Please set --with-thepeg.])]) AC_SUBST([THEPEGLIB],[-lThePEG]) AC_SUBST(THEPEGLDFLAGS) AC_SUBST(THEPEGPATH) LIBS="$oldlibs" LDFLAGS="$oldldflags" AC_MSG_CHECKING([for ThePEG headers in]) AC_ARG_WITH([thepeg-headers], AC_HELP_STRING([--with-thepeg-headers=DIR],[location of ThePEG include directory]), [], [with_thepeg_headers="${with_thepeg}/include"]) AC_MSG_RESULT([$with_thepeg_headers]) if test "x$with_thepeg_headers" = "xno"; then AC_MSG_ERROR([Cannot build Herwig++ without ThePEG headers. Please set --with-thepeg-headers.]) fi THEPEGINCLUDE="-I$with_thepeg_headers" oldcppflags="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $THEPEGINCLUDE" AC_CHECK_HEADER([ThePEG/Config/ThePEG.h],[], [AC_MSG_ERROR([No ThePEG headers in $with_thepeg_headers. Please set --with-thepeg-headers.])]) CPPFLAGS="$oldcppflags" AC_SUBST(THEPEGINCLUDE) AC_MSG_CHECKING([for HepMCAnalysis.so in ThePEG]) if test -x "$THEPEGPATH/lib/ThePEG/HepMCAnalysis.so" ; then CREATE_HEPMC="create" AC_MSG_RESULT([found]) else CREATE_HEPMC="# create" AC_MSG_RESULT([not found]) fi AC_SUBST([CREATE_HEPMC]) ]) dnl ##### boost ##### AC_DEFUN([HERWIG_CHECK_BOOST], [ AC_MSG_CHECKING([for boost headers]) BOOSTINCLUDE="" AC_ARG_WITH(boost, AC_HELP_STRING([--with-boost=DIR],[location of boost]), [], [with_boost=system]) if test "x$with_boost" = "xno"; then AC_MSG_ERROR([boost headers are required. Please specify boost installation with --with-boost.]) fi boostpath=$with_boost if test "x$with_boost" == "xsystem" ; then if test -e "/usr/include/boost/array.hpp"; then boostpath="/usr" elif test -e "/usr/local/include/boost/array.hpp"; then boostpath="/usr/local" elif test -e "/opt/include/boost/array.hpp"; then boostpath="/opt" elif test -e "/opt/local/include/boost/array.hpp"; then boostpath="/opt/local" else AC_MSG_RESULT([not found]) AC_MSG_ERROR([boost headers are required. Please install boost.]) fi fi if test -e "$boostpath/include/boost/array.hpp"; then AC_MSG_RESULT([found in $boostpath]) else AC_MSG_RESULT([not found]) AC_MSG_ERROR([boost headers are required. Please install boost.]) fi BOOSTINCLUDE="-I$boostpath/include" AC_SUBST(BOOSTINCLUDE) ]) dnl ##### LOOPTOOLS ##### AC_DEFUN([HERWIG_LOOPTOOLS], [ AC_REQUIRE([AC_PROG_FC]) AC_REQUIRE([AC_FC_LIBRARY_LDFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([HERWIG_COMPILERFLAGS]) AC_MSG_CHECKING([if Looptools build works]) enable_looptools=yes if test "x$GCC" = "xyes"; then case "${host}" in x86_64-*|*-darwin1*) AM_FCFLAGS="$AM_FCFLAGS -fdefault-integer-8" ;; esac AC_LANG_PUSH([Fortran]) oldFCFLAGS="$FCFLAGS" FCFLAGS="$AM_FCFLAGS" AC_COMPILE_IFELSE( AC_LANG_PROGRAM([],[ print *[,]"Hello"]), [], [AC_MSG_RESULT([no]) AC_MSG_ERROR([needs gfortran on 64bit machines])] ) FCFLAGS="$oldFCFLAGS" AC_LANG_POP([Fortran]) fi AC_MSG_RESULT([$enable_looptools]) AC_SUBST([F77],[$FC]) AC_SUBST([FFLAGS],[$FCFLAGS]) AC_SUBST([AM_FFLAGS],[$AM_FCFLAGS]) AC_SUBST([FLIBS],[$FCLIBS]) ]) dnl ##### PDF PATH ##### AC_DEFUN([HERWIG_PDF_PATH], [ AC_MSG_CHECKING([which Herwig++ PDF data to use]) AC_ARG_WITH(pdf, AC_HELP_STRING([--with-pdf=DIR],[installation path of Herwig++PDF data tarball]), [], [with_pdf=${prefix}] ) HERWIG_PDF_PREFIX=${with_pdf}/share/Herwig++PDF if test -f "${HERWIG_PDF_PREFIX}/mrst/2008/mrstMCal.dat"; then AC_MSG_RESULT([$with_pdf]) localPDFneeded=false else AC_MSG_RESULT([Using built-in PDF data set. For other data sets, set --with-pdf.]) HERWIG_PDF_PREFIX=PDF localPDFneeded=true fi HERWIG_PDF_DEFAULT=${HERWIG_PDF_PREFIX}/mrst/2008/mrstMCal.dat HERWIG_PDF_NLO=${HERWIG_PDF_PREFIX}/mrst/2002/mrst2002nlo.dat HERWIG_PDF_POMERON=${HERWIG_PDF_PREFIX}/diffraction/ AM_CONDITIONAL(WANT_LOCAL_PDF,[test "x$localPDFneeded" = "xtrue"]) AC_SUBST(HERWIG_PDF_DEFAULT) AC_SUBST(HERWIG_PDF_NLO) AC_SUBST(HERWIG_PDF_POMERON) ]) dnl ###### GSL ###### AC_DEFUN([HERWIG_CHECK_GSL], [ AC_MSG_CHECKING([for gsl location]) GSLINCLUDE="" GSLLIBS="" AC_ARG_WITH(gsl, AC_HELP_STRING([--with-gsl=DIR],[location of gsl installation @<:@default=system libs@:>@]), [], [with_gsl=system]) if test "x$with_gsl" = "xno"; then AC_MSG_ERROR([libgsl is required. Please install the GNU scientific library and header files.]) fi if test "x$with_gsl" = "xsystem"; then AC_MSG_RESULT([in system libraries]) oldlibs="$LIBS" AC_CHECK_LIB(m,main) AC_CHECK_LIB(gslcblas,main) AC_CHECK_LIB(gsl,main,[], [ AC_MSG_ERROR([Cannot find libgsl. Please install the GNU scientific library and header files or use --with-gsl=.]) ] ) GSLLIBS="$LIBS" LIBS=$oldlibs else if test "`uname -m`" = "x86_64" -a -e "$with_gsl/lib64/libgsl.a" -a -d "$with_gsl/include/gsl"; then AC_MSG_RESULT([found in $with_gsl]) GSLLIBS="-L$with_gsl/lib64 -R$with_gsl/lib64 -lgslcblas -lgsl" GSLINCLUDE="-I$with_gsl/include" elif test -e "$with_gsl/lib/libgsl.a" -a -d "$with_gsl/include/gsl"; then AC_MSG_RESULT([found in $with_gsl]) GSLLIBS="-L$with_gsl/lib -R$with_gsl/lib -lgslcblas -lgsl" GSLINCLUDE="-I$with_gsl/include" else AC_MSG_RESULT([not found]) AC_MSG_ERROR([Can't find $with_gsl/lib/libgsl.a or the headers in $with_gsl/include]) fi fi AC_SUBST(GSLINCLUDE) AC_SUBST(GSLLIBS) ]) AC_DEFUN([HERWIG_VERSIONSTRING], [ if test -d $srcdir/.svn; then AC_CHECK_PROG(have_svnversion,[svnversion],[yes],[no]) fi AM_CONDITIONAL(USE_SVNVERSION,[test "x$have_svnversion" = "xyes"]) ]) dnl ##### COMPILERFLAGS ##### AC_DEFUN([HERWIG_COMPILERFLAGS], [ AC_REQUIRE([HERWIG_CHECK_THEPEG]) AM_CPPFLAGS="-I\$(top_builddir)/include $THEPEGINCLUDE \$(GSLINCLUDE) \$(BOOSTINCLUDE)" AC_MSG_CHECKING([for debugging mode]) AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug],[debug mode, use --enable-debug=slow for additional options that slow down the run.]), [], [enable_debug=no] ) AC_MSG_RESULT([$enable_debug]) if test "x$enable_debug" = "xno"; then AM_CPPFLAGS="$AM_CPPFLAGS -DNDEBUG" else debugflags="-g" fi dnl -Wfloat-equal -fvisibility-inlines-hidden -Wctor-dtor-privacy -Weffc++ if test -n "$GCC"; then warnflags="-ansi -pedantic -Wall -W" if test "x$enable_debug" = "xslow"; then debugflags="$debugflags -fno-inline" AM_CPPFLAGS="$AM_CPPFLAGS -D_GLIBCXX_DEBUG" fi fi dnl do an actual capability check on ld instead of this workaround case "${host}" in *-darwin*) ;; *) AM_LDFLAGS="-Wl,--enable-new-dtags" ;; esac AC_SUBST(AM_CPPFLAGS) AC_SUBST(AM_CFLAGS, ["$warnflags $debugflags"]) AC_SUBST(AM_CXXFLAGS,["$warnflags $debugflags"]) AC_SUBST(AM_FCFLAGS, ["$debugflags"]) AC_SUBST(AM_LDFLAGS) ]) AC_DEFUN([HERWIG_ENABLE_MODELS], [ AC_MSG_CHECKING([for BSM models to include]) LOAD_RS="" LOAD_SUSY="" LOAD_NMSSM="" LOAD_TRP="" LOAD_UED="" LOAD_ADD="" LOAD_SEXTET="" LOAD_TTBA="" LOAD_ZPRIME="" AC_ARG_ENABLE(models, AC_HELP_STRING([--enable-models=LIST],[Comma-separated list of BSM models to enable. Options are (mssm nmssm ued rs trp add leptoquarks sextet) or --disable-models to turn them all off.]), [], [enable_models=all] ) if test "x$enable_models" = "xyes" -o "x$enable_models" = "xall"; then all=yes fi AC_MSG_RESULT([$enable_models]) if test ! "$all"; then oldIFS="$IFS" IFS="," for i in $enable_models; do declare $i=yes done IFS="$oldIFS" fi if test "$nmssm" -o "$all"; then LOAD_NMSSM="library HwNMSSM.so" mssm=yes fi AC_SUBST(LOAD_NMSSM) if test "$rs" -o "$all" ; then LOAD_RS="library HwRSModel.so" fi AC_SUBST(LOAD_RS) if test "$mssm" -o "$all"; then LOAD_SUSY="library HwSusy.so" fi AC_SUBST(LOAD_SUSY) if test "$trp" -o "$all"; then LOAD_TRP="library HwTransplanck.so" fi AC_SUBST(LOAD_TRP) if test "$ued" -o "$all"; then LOAD_UED="library HwUED.so" fi AC_SUBST(LOAD_UED) if test "$add" -o "$all"; then LOAD_ADD="library HwADDModel.so" fi AC_SUBST(LOAD_ADD) if test "$leptoquarks" -o "$all"; then LOAD_LEPTOQUARKS="library HwLeptoquarkModel.so" fi AC_SUBST(LOAD_LEPTOQUARKS) if test "$sextet" -o "$all"; then LOAD_SEXTET="library HwSextetModel.so" fi AC_SUBST(LOAD_SEXTET) if test "$ttba" -o "$all"; then LOAD_TTBA="library HwTTbAModel.so" fi AC_SUBST(LOAD_TTBA) if test "$zprime" -o "$all"; then LOAD_SEXTET="library HwZprimeModel.so" fi AC_SUBST(LOAD_ZPRIME) AM_CONDITIONAL(WANT_MSSM,[test "$mssm" -o "$all"]) AM_CONDITIONAL(WANT_NMSSM,[test "$nmssm" -o "$all"]) AM_CONDITIONAL(WANT_UED,[test "$ued" -o "$all"]) AM_CONDITIONAL(WANT_RS,[test "$rs" -o "$all"]) AM_CONDITIONAL(WANT_Leptoquark,[test "$leptoquarks" -o "$all"]) AM_CONDITIONAL(WANT_TRP,[test "$trp" -o "$all"]) AM_CONDITIONAL(WANT_ADD,[test "$add" -o "$all"]) AM_CONDITIONAL(WANT_SEXTET,[test "$sextet" -o "$all"]) AM_CONDITIONAL(WANT_TTBA,[test "$ttba" -o "$all"]) AM_CONDITIONAL(WANT_ZPRIME,[test "$zprime" -o "$all"]) ]) AC_DEFUN([HERWIG_OVERVIEW], [ FCSTRING=`$FC --version | head -1` CXXSTRING=`$CXX --version | head -1` CCSTRING=`$CC --version | head -1` cat << _HW_EOF_ > config.herwig ***************************************************** *** $PACKAGE_STRING configuration summary *** Please include this information in bug reports! ***-------------------------------------------------- *** Prefix: $prefix *** *** BSM models: $enable_models *** Herwig debug mode: $enable_debug *** *** GSL: $with_gsl *** *** ThePEG: $with_thepeg *** ThePEG headers: $with_thepeg_headers *** *** boost: $with_boost *** *** Fastjet: ${fjconfig} *** *** Host: $host *** CXX: $CXXSTRING *** FC: $FCSTRING *** CC: $CCSTRING ***************************************************** _HW_EOF_ ]) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464210�017537� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/�����������������������������������������������������������0000755�0001750�0001750�00000000000�11756464207�021006� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/MEee2gZ2ll.h�����������������������������������������������0000644�0001750�0001750�00000017272�11754474775�023011� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEee2gZ2ll.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEee2gZ2ll_H #define HERWIG_MEee2gZ2ll_H // // This is the declaration of the MEee2gZ2ll class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" namespace Herwig { using namespace ThePEG; /** * The MEee2gZ2ll class provides the matrix element for * \f$e^+e^-\to\ell^+\ell^-\f$. N.B. for the production of \f$e^+e^-\f$ * only the \f$s\f$-channel Z and photon diagrams are included. * * @see \ref MEee2gZ2llInterfaces "The interfaces" * defined for MEee2gZ2ll. */ class MEee2gZ2ll: public HwMEBase { public: /** * The default constructor. */ MEee2gZ2ll() : _allowed(0) { massOption(vector<unsigned int>(2,1)); } public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans) ; /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} private: /** * Member to calculate the matrix element * @param fin Spinors for incoming fermion * @param ain Spinors for incoming antifermion * @param fout Spinors for outgoing fermion * @param aout Spinors for outgong antifermion * @param me Spin summed Matrix element * @param cont The continuum piece of the matrix element * @param BW The Z piece of the matrix element */ ProductionMatrixElement HelicityME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, vector<SpinorBarWaveFunction> & fout, vector<SpinorWaveFunction> & aout, double & me, double & cont, double & BW ) const; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEee2gZ2ll> initMEee2gZ2ll; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEee2gZ2ll & operator=(const MEee2gZ2ll &); private: /** * Pointer to the fermion-antifermion Z vertex */ AbstractFFVVertexPtr _theFFZVertex; /** * Pointer to the fermion-antifermion photon vertex */ AbstractFFVVertexPtr _theFFPVertex; /** * Pointer to the particle data object for the Z */ PDPtr _Z0; /** * Pointer to the particle data object for the photon */ PDPtr _gamma; /** * The allowed outgoing */ int _allowed; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEee2gZ2ll. */ template <> struct BaseClassTrait<Herwig::MEee2gZ2ll,1> { /** Typedef of the first base class of MEee2gZ2ll. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEee2gZ2ll class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEee2gZ2ll> : public ClassTraitsBase<Herwig::MEee2gZ2ll> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEee2gZ2ll"; } /** * The name of a file containing the dynamic library where the class * MEee2gZ2ll is implemented. It may also include several, space-separated, * libraries if the class MEee2gZ2ll depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMELepton.so"; } }; /** @endcond */ } #endif /* HERWIG_MEee2gZ2ll_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/MEee2gZ2qq.cc����������������������������������������������0000644�0001750�0001750�00000115067�11754474775�023162� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEee2gZ2qq.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEee2gZ2qq class. // #include "MEee2gZ2qq.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "Herwig++/Shower/Base/Evolver.h" #include "Herwig++/Shower/Base/KinematicsReconstructor.h" #include "Herwig++/Shower/Base/PartnerFinder.h" #include "ThePEG/PDF/PolarizedBeamParticleData.h" #include <numeric> using namespace Herwig; const double MEee2gZ2qq::EPS_=0.00000001; void MEee2gZ2qq::doinit() { HwMEBase::doinit(); massOption(vector<unsigned int>(2,massopt_)); rescalingOption(3); if(minflav_>maxflav_) throw InitException() << "The minimum flavour " << minflav_ << "must be lower the than maximum flavour " << maxflav_ << " in MEee2gZ2qq::doinit() " << Exception::runerror; // set the particle data objects Z0_ = getParticleData(ParticleID::Z0); gamma_ = getParticleData(ParticleID::gamma); gluon_ = getParticleData(ParticleID::g); // cast the SM pointer to the Herwig SM pointer tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(hwsm) { FFZVertex_ = hwsm->vertexFFZ(); FFPVertex_ = hwsm->vertexFFP(); FFGVertex_ = hwsm->vertexFFG(); } else throw InitException() << "Wrong type of StandardModel object in " << "MEee2gZ2qq::doinit() the Herwig++ version must be used" << Exception::runerror; } void MEee2gZ2qq::getDiagrams() const { // specific the diagrams tcPDPtr ep = getParticleData(ParticleID::eplus); tcPDPtr em = getParticleData(ParticleID::eminus); tcPDPtr gamma = getParticleData(ParticleID::gamma); tcPDPtr Z0 = getParticleData(ParticleID::Z0); // setup the processes for ( int i =minflav_; i<=maxflav_; ++i ) { tcPDPtr qk = getParticleData(i); tcPDPtr qb = qk->CC(); add(new_ptr((Tree2toNDiagram(2), em, ep, 1, gamma, 3, qk, 3, qb, -1))); add(new_ptr((Tree2toNDiagram(2), em, ep, 1, Z0 , 3, qk, 3, qb, -2))); } } Energy2 MEee2gZ2qq::scale() const { return sqr(getParticleData(ParticleID::Z0)->mass()); // return sHat(); } unsigned int MEee2gZ2qq::orderInAlphaS() const { return 0; } unsigned int MEee2gZ2qq::orderInAlphaEW() const { return 2; } Selector<MEBase::DiagramIndex> MEee2gZ2qq::diagrams(const DiagramVector & diags) const { double lastCont(0.5),lastBW(0.5); if ( lastXCombPtr() ) { lastCont = meInfo()[0]; lastBW = meInfo()[1]; } Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if ( diags[i]->id() == -1 ) sel.insert(lastCont, i); else if ( diags[i]->id() == -2 ) sel.insert(lastBW, i); } return sel; } Selector<const ColourLines *> MEee2gZ2qq::colourGeometries(tcDiagPtr ) const { static const ColourLines c("-5 4"); Selector<const ColourLines *> sel; sel.insert(1.0, &c); return sel; } void MEee2gZ2qq::persistentOutput(PersistentOStream & os) const { os << FFZVertex_ << FFPVertex_ << FFGVertex_ << Z0_ << gamma_ << gluon_ << minflav_ << maxflav_ << massopt_ << alpha_ << ounit(pTmin_,GeV) << preFactor_; } void MEee2gZ2qq::persistentInput(PersistentIStream & is, int) { is >> FFZVertex_ >> FFPVertex_ >> FFGVertex_ >> Z0_ >> gamma_ >> gluon_ >> minflav_ >> maxflav_ >> massopt_ >> alpha_ >> iunit(pTmin_,GeV) >> preFactor_; } ClassDescription<MEee2gZ2qq> MEee2gZ2qq::initMEee2gZ2qq; // Definition of the static class description member. void MEee2gZ2qq::Init() { static ClassDocumentation<MEee2gZ2qq> documentation ("The MEee2gZ2qq class implements the matrix element for e+e- -> q qbar"); static Parameter<MEee2gZ2qq,int> interfaceMinimumFlavour ("MinimumFlavour", "The PDG code of the quark with the lowest PDG code to produce.", &MEee2gZ2qq::minflav_, 1, 1, 6, false, false, Interface::limited); static Parameter<MEee2gZ2qq,int> interfaceMaximumFlavour ("MaximumFlavour", "The PDG code of the quark with the highest PDG code to produce", &MEee2gZ2qq::maxflav_, 5, 1, 6, false, false, Interface::limited); static Switch<MEee2gZ2qq,unsigned int> interfaceTopMassOption ("TopMassOption", "Option for the treatment of the top quark mass", &MEee2gZ2qq::massopt_, 1, false, false); static SwitchOption interfaceTopMassOptionOnMassShell (interfaceTopMassOption, "OnMassShell", "The top is produced on its mass shell", 1); static SwitchOption interfaceTopMassOption2 (interfaceTopMassOption, "OffShell", "The top is generated off-shell using the mass and width generator.", 2); static Reference<MEee2gZ2qq,ShowerAlpha> interfaceCoupling ("Coupling", "Pointer to the object to calculate the coupling for the correction", &MEee2gZ2qq::alpha_, false, false, true, false, false); } double MEee2gZ2qq::me2() const { return loME(mePartonData(),rescaledMomenta(),true); } ProductionMatrixElement MEee2gZ2qq::HelicityME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, vector<SpinorBarWaveFunction> & fout, vector<SpinorWaveFunction> & aout, double & me, double & cont, double & BW ) const { // the particles should be in the order // for the incoming // 0 incoming fermion (u spinor) // 1 incoming antifermion (vbar spinor) // for the outgoing // 0 outgoing fermion (ubar spinor) // 1 outgoing antifermion (v spinor) // me to be returned ProductionMatrixElement output(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); ProductionMatrixElement gamma (PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); ProductionMatrixElement Zboson(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); // wavefunctions for the intermediate particles VectorWaveFunction interZ,interG; // temporary storage of the different diagrams Complex diag1,diag2; // sum over helicities to get the matrix element unsigned int inhel1,inhel2,outhel1,outhel2; double total[3]={0.,0.,0.}; for(inhel1=0;inhel1<2;++inhel1) { for(inhel2=0;inhel2<2;++inhel2) { // intermediate Z interZ = FFZVertex_->evaluate(scale(),1,Z0_,fin[inhel1],ain[inhel2]); // intermediate photon interG = FFPVertex_->evaluate(scale(),1,gamma_,fin[inhel1],ain[inhel2]); for(outhel1=0;outhel1<2;++outhel1) { for(outhel2=0;outhel2<2;++outhel2) { // first the Z exchange diagram diag1 = FFZVertex_->evaluate(scale(),aout[outhel2],fout[outhel1], interZ); // then the photon exchange diagram diag2 = FFPVertex_->evaluate(scale(),aout[outhel2],fout[outhel1], interG); // add up squares of individual terms total[1] += norm(diag1); Zboson(inhel1,inhel2,outhel1,outhel2) = diag1; total[2] += norm(diag2); gamma (inhel1,inhel2,outhel1,outhel2) = diag2; // the full thing including interference diag1 += diag2; total[0] += norm(diag1); output(inhel1,inhel2,outhel1,outhel2)=diag1; } } } } for(int ix=0;ix<3;++ix) total[ix] *= 0.25; tcPolarizedBeamPDPtr beam[2] = {dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[0]), dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[1])}; if( beam[0] || beam[1] ) { RhoDMatrix rho[2] = {beam[0] ? beam[0]->rhoMatrix() : RhoDMatrix(mePartonData()[0]->iSpin()), beam[1] ? beam[1]->rhoMatrix() : RhoDMatrix(mePartonData()[1]->iSpin())}; total[0] = output.average(rho[0],rho[1]); total[1] = Zboson.average(rho[0],rho[1]); total[2] = gamma .average(rho[0],rho[1]); } // results for(int ix=0;ix<3;++ix) total[ix]*= 3.; cont = total[2]; BW = total[1]; me = total[0]; return output; } void MEee2gZ2qq::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); hard.push_back(sub->outgoing()[1]); if(hard[0]->id()<hard[1]->id()) swap(hard[0],hard[1]); if(hard[2]->id()<hard[3]->id()) swap(hard[2],hard[3]); vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; // get wave functions for off-shell momenta for later on SpinorWaveFunction( fin ,hard[0],incoming,false,true); SpinorBarWaveFunction(ain ,hard[1],incoming,false,true); SpinorBarWaveFunction(fout,hard[2],outgoing,true ,true); SpinorWaveFunction( aout,hard[3],outgoing,true ,true); // now rescale the momenta and compute the matrix element with the // rescaled momenta for correlations vector<Lorentz5Momentum> momenta; cPDVector data; for(unsigned int ix=0;ix<4;++ix) { momenta.push_back(hard[ix]->momentum()); data .push_back(hard[ix]->dataPtr()); } rescaleMomenta(momenta,data); SpinorWaveFunction ein (rescaledMomenta()[0],data[0],incoming); SpinorBarWaveFunction pin (rescaledMomenta()[1],data[1],incoming); SpinorBarWaveFunction qkout(rescaledMomenta()[2],data[2],outgoing); SpinorWaveFunction qbout(rescaledMomenta()[3],data[3],outgoing); for(unsigned int ix=0;ix<2;++ix) { ein.reset(ix) ; fin [ix] = ein ; pin.reset(ix) ; ain [ix] = pin ; qkout.reset(ix); fout[ix] = qkout; qbout.reset(ix); aout[ix] = qbout; } // calculate the matrix element double me,cont,BW; ProductionMatrixElement prodme=HelicityME(fin,ain,fout,aout,me,cont,BW); // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(prodme); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) { tSpinPtr spin = hard[ix]->spinInfo(); if(ix<2) { tcPolarizedBeamPDPtr beam = dynamic_ptr_cast<tcPolarizedBeamPDPtr>(hard[ix]->dataPtr()); if(beam) spin->rhoMatrix() = beam->rhoMatrix(); } spin->productionVertex(hardvertex); } } void MEee2gZ2qq::rebind(const TranslationMap & trans) { FFZVertex_ = trans.translate(FFZVertex_); FFPVertex_ = trans.translate(FFPVertex_); FFGVertex_ = trans.translate(FFGVertex_); Z0_ = trans.translate(Z0_); gamma_ = trans.translate(gamma_); gluon_ = trans.translate(gluon_); HwMEBase::rebind(trans); } IVector MEee2gZ2qq::getReferences() { IVector ret = HwMEBase::getReferences(); ret.push_back(FFZVertex_); ret.push_back(FFPVertex_); ret.push_back(FFGVertex_); ret.push_back(Z0_ ); ret.push_back(gamma_ ); ret.push_back(gluon_ ); return ret; } void MEee2gZ2qq::initializeMECorrection(ShowerTreePtr , double & initial, double & final) { d_Q_ = sqrt(sHat()); d_m_ = 0.5*(meMomenta()[2].mass()+meMomenta()[3].mass()); // set the other parameters setRho(sqr(d_m_/d_Q_)); setKtildeSymm(); // otherwise can do it initial=1.; final =1.; } void MEee2gZ2qq::applyHardMatrixElementCorrection(ShowerTreePtr tree) { // get the quark and antiquark ParticleVector qq; map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit; for(cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) qq.push_back(cit->first->copy()); // ensure quark first if(qq[0]->id()<0) swap(qq[0],qq[1]); // get the momenta vector<Lorentz5Momentum> newfs = applyHard(qq); // return if no emission if(newfs.size()!=3) return; // perform final check to ensure energy greater than constituent mass for (int i=0; i<2; i++) { if (newfs[i].e() < qq[i]->data().constituentMass()) return; } if (newfs[2].e() < gluon_->constituentMass()) return; // set masses for (int i=0; i<2; i++) newfs[i].setMass(qq[i]->mass()); newfs[2].setMass(ZERO); // decide which particle emits bool firstEmits= newfs[2].vect().perp2(newfs[0].vect())< newfs[2].vect().perp2(newfs[1].vect()); // create the new quark, antiquark and gluon PPtr newg = gluon_->produceParticle(newfs[2]); PPtr newq,newa; if(firstEmits) { newq = qq[0]->dataPtr()->produceParticle(newfs[0]); newa = new_ptr(Particle(*qq[1])); qq[1]->antiColourLine()->removeAntiColoured(newa); newa->set5Momentum(newfs[1]); } else { newq = new_ptr(Particle(*qq[0])); qq[0]->colourLine()->removeColoured(newq); newq->set5Momentum(newfs[0]); newa = qq[1]->dataPtr()->produceParticle(newfs[1]); } // get the original colour line ColinePtr col; if(qq[0]->id()>0) col=qq[0]->colourLine(); else col=qq[0]->antiColourLine(); // set the colour lines if(firstEmits) { col->addColoured(newq); col->addAntiColoured(newg); newa->colourNeighbour(newg); } else { col->addAntiColoured(newa); col->addColoured(newg); newq->antiColourNeighbour(newg); } // change the existing quark and antiquark PPtr orig; for(cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { if(cit->first->progenitor()->id()==newq->id()) { // remove old particles from colour line col->removeColoured(cit->first->copy()); col->removeColoured(cit->first->progenitor()); // insert new particles cit->first->copy(newq); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newq,1,true))); cit->first->progenitor(sp); tree->outgoingLines()[cit->first]=sp; cit->first->perturbative(!firstEmits); if(firstEmits) orig=cit->first->original(); } else { // remove old particles from colour line col->removeAntiColoured(cit->first->copy()); col->removeColoured(cit->first->progenitor()); // insert new particles cit->first->copy(newa); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newa,1,true))); cit->first->progenitor(sp); tree->outgoingLines()[cit->first]=sp; cit->first->perturbative(firstEmits); if(!firstEmits) orig=cit->first->original(); } } // add the gluon ShowerParticlePtr sg=new_ptr(ShowerParticle(*newg,1,true)); ShowerProgenitorPtr gluon=new_ptr(ShowerProgenitor(orig,newg,sg)); gluon->perturbative(false); tree->outgoingLines().insert(make_pair(gluon,sg)); tree->hardMatrixElementCorrection(true); } vector<Lorentz5Momentum> MEee2gZ2qq:: applyHard(const ParticleVector &p) { double x, xbar; vector<Lorentz5Momentum> fs; // return if no emission if (getHard(x, xbar) < UseRandom::rnd() || p.size() != 2) return fs; // centre of mass energy Lorentz5Momentum pcm = p[0]->momentum() + p[1]->momentum(); // momenta of quark,antiquark and gluon Lorentz5Momentum pq, pa, pg; if (p[0]->id() > 0) { pq = p[0]->momentum(); pa = p[1]->momentum(); } else { pa = p[0]->momentum(); pq = p[1]->momentum(); } // boost to boson rest frame Boost beta = (pcm.findBoostToCM()); pq.boost(beta); pa.boost(beta); // return if fails ????? double xg = 2.-x-xbar; if((1.-x)*(1.-xbar)*(1.-xg) < d_rho_*xg*xg) return fs; Axis u1, u2, u3; // moduli of momenta in units of Q and cos theta // stick to q direction? // p1 is the one that is kept, p2 is the other fermion, p3 the gluon. Energy e1, e2, e3; Energy pp1, pp2, pp3; bool keepq = true; if (UseRandom::rnd() > sqr(x)/(sqr(x)+sqr(xbar))) keepq = false; if (keepq) { pp1 = d_Q_*sqrt(sqr(x)-4.*d_rho_)/2.; pp2 = d_Q_*sqrt(sqr(xbar)-4.*d_rho_)/2.; e1 = d_Q_*x/2.; e2 = d_Q_*xbar/2.; u1 = pq.vect().unit(); } else { pp2 = d_Q_*sqrt(sqr(x)-4.*d_rho_)/2.; pp1 = d_Q_*sqrt(sqr(xbar)-4.*d_rho_)/2.; e2 = d_Q_*x/2.; e1 = d_Q_*xbar/2.; u1 = pa.vect().unit(); } pp3 = d_Q_*xg/2.; e3 = pp3; u2 = u1.orthogonal(); u2 /= u2.mag(); u3 = u1.cross(u2); u3 /= u3.mag(); double ct2=-2., ct3=-2.; if (pp1 == ZERO || pp2 == ZERO || pp3 == ZERO) { bool touched = false; if (pp1 == ZERO) { ct2 = 1; ct3 = -1; touched = true; } if (pp2 == ZERO || pp3 == ZERO) { ct2 = 1; ct3 = 1; touched = true; } if (!touched) throw Exception() << "MEee2gZ2qq::applyHard()" << " did not set ct2/3" << Exception::abortnow; } else { ct3 = (sqr(pp1)+sqr(pp3)-sqr(pp2))/(2.*pp1*pp3); ct2 = (sqr(pp1)+sqr(pp2)-sqr(pp3))/(2.*pp1*pp2); } double phi = Constants::twopi*UseRandom::rnd(); double cphi = cos(phi); double sphi = sin(phi); double st2 = sqrt(1.-sqr(ct2)); double st3 = sqrt(1.-sqr(ct3)); ThreeVector<Energy> pv1, pv2, pv3; pv1 = pp1*u1; pv2 = -ct2*pp2*u1 + st2*cphi*pp2*u2 + st2*sphi*pp2*u3; pv3 = -ct3*pp3*u1 - st3*cphi*pp3*u2 - st3*sphi*pp3*u3; if (keepq) { pq = Lorentz5Momentum(pv1, e1); pa = Lorentz5Momentum(pv2, e2); } else { pa = Lorentz5Momentum(pv1, e1); pq = Lorentz5Momentum(pv2, e2); } pg = Lorentz5Momentum(pv3, e3); pq.boost(-beta); pa.boost(-beta); pg.boost(-beta); fs.push_back(pq); fs.push_back(pa); fs.push_back(pg); return fs; } double MEee2gZ2qq::getHard(double &x1, double &x2) { double w = 0.0; double y1 = UseRandom::rnd(),y2 = UseRandom::rnd(); // simply double MC efficiency // -> weight has to be divided by two (Jacobian) if (y1 + y2 > 1) { y1 = 1.-y1; y2 = 1.-y2; } bool inSoft = false; if (y1 < 0.25) { if (y2 < 0.25) { inSoft = true; if (y1 < y2) { y1 = 0.25-y1; y2 = y1*(1.5 - 2.*y2); } else { y2 = 0.25 - y2; y1 = y2*(1.5 - 2.*y1); } } else { if (y2 < y1 + 2.*sqr(y1)) return w; } } else { if (y2 < 0.25) { if (y1 < y2 + 2.*sqr(y2)) return w; } } // inside PS? x1 = 1.-y1; x2 = 1.-y2; if(y1*y2*(1.-y1-y2) < d_rho_*sqr(y1+y2)) return w; double k1 = getKfromX(x1, x2); double k2 = getKfromX(x2, x1); // Is it in the quark emission zone? if (k1 < d_kt1_) return 0.0; // No...is it in the anti-quark emission zone? if (k2 < d_kt2_) return 0.0; // Point is in dead zone: compute q qbar g weight w = MEV(x1, x2); // for axial: // w = MEA(x1, x2); // Reweight soft region if (inSoft) { if (y1 < y2) w *= 2.*y1; else w *= 2.*y2; } // alpha and colour factors Energy2 pt2 = sqr(d_Q_)*(1.-x1)*(1.-x2); w *= 1./3./Constants::pi*alpha_->value(pt2); return w; } bool MEee2gZ2qq::softMatrixElementVeto(ShowerProgenitorPtr initial, ShowerParticlePtr parent,Branching br) { // check we should be applying the veto if(parent->id()!=initial->progenitor()->id()|| br.ids[0]!=br.ids[1]|| br.ids[2]!=ParticleID::g) return false; // calculate pt double d_z = br.kinematics->z(); Energy d_qt = br.kinematics->scale(); Energy2 d_m2 = parent->momentum().m2(); Energy pPerp = (1.-d_z)*sqrt( sqr(d_z*d_qt) - d_m2); // if not hardest so far don't apply veto if(pPerp<initial->highestpT()) return false; // calculate the weight double weight = 0.; if(parent->id()>0) weight = qWeightX(d_qt, d_z); else weight = qbarWeightX(d_qt, d_z); // compute veto from weight bool veto = !UseRandom::rndbool(weight); // if not vetoed reset max if(!veto) initial->highestpT(pPerp); // if vetoing reset the scale if(veto) parent->setEvolutionScale(br.kinematics->scale()); // return the veto return veto; } void MEee2gZ2qq::setRho(double r) { d_rho_ = r; d_v_ = sqrt(1.-4.*d_rho_); } void MEee2gZ2qq::setKtildeSymm() { d_kt1_ = (1. + sqrt(1. - 4.*d_rho_))/2.; setKtilde2(); } void MEee2gZ2qq::setKtilde2() { double num = d_rho_ * d_kt1_ + 0.25 * d_v_ *(1.+d_v_)*(1.+d_v_); double den = d_kt1_ - d_rho_; d_kt2_ = num/den; } double MEee2gZ2qq::getZfromX(double x1, double x2) { double uval = u(x2); double num = x1 - (2. - x2)*uval; double den = sqrt(x2*x2 - 4.*d_rho_); return uval + num/den; } double MEee2gZ2qq::getKfromX(double x1, double x2) { double zval = getZfromX(x1, x2); return (1.-x2)/(zval*(1.-zval)); } double MEee2gZ2qq::MEV(double x1, double x2) { // Vector part double num = (x1+2.*d_rho_)*(x1+2.*d_rho_) + (x2+2.*d_rho_)*(x2+2.*d_rho_) - 8.*d_rho_*(1.+2.*d_rho_); double den = (1.+2.*d_rho_)*(1.-x1)*(1.-x2); return (num/den - 2.*d_rho_/((1.-x1)*(1.-x1)) - 2*d_rho_/((1.-x2)*(1.-x2)))/d_v_; } double MEee2gZ2qq::MEA(double x1, double x2) { // Axial part double num = (x1+2.*d_rho_)*(x1+2.*d_rho_) + (x2+2.*d_rho_)*(x2+2.*d_rho_) + 2.*d_rho_*((5.-x1-x2)*(5.-x1-x2) - 19.0 + 4*d_rho_); double den = d_v_*d_v_*(1.-x1)*(1.-x2); return (num/den - 2.*d_rho_/((1.-x1)*(1.-x1)) - 2*d_rho_/((1.-x2)*(1.-x2)))/d_v_; } double MEee2gZ2qq::u(double x2) { return 0.5*(1. + d_rho_/(1.-x2+d_rho_)); } void MEee2gZ2qq:: getXXbar(double kti, double z, double &x, double &xbar) { double w = sqr(d_v_) + kti*(-1. + z)*z*(2. + kti*(-1. + z)*z); if (w < 0) { x = -1.; xbar = -1; } else { x = (1. + sqr(d_v_)*(-1. + z) + sqr(kti*(-1. + z))*z*z*z + z*sqrt(w) - kti*(-1. + z)*z*(2. + z*(-2 + sqrt(w))))/ (1. - kti*(-1. + z)*z + sqrt(w)); xbar = 1. + kti*(-1. + z)*z; } } double MEee2gZ2qq::qWeight(double x, double xbar) { double rval; double xg = 2. - xbar - x; // always return one in the soft gluon region if(xg < EPS_) return 1.0; // check it is in the phase space if((1.-x)*(1.-xbar)*(1.-xg) < d_rho_*xg*xg) return 0.0; double k1 = getKfromX(x, xbar); double k2 = getKfromX(xbar, x); // Is it in the quark emission zone? if(k1 < d_kt1_) { rval = MEV(x, xbar)/PS(x, xbar); // is it also in the anti-quark emission zone? if(k2 < d_kt2_) rval *= 0.5; return rval; } return 1.0; } double MEee2gZ2qq::qbarWeight(double x, double xbar) { double rval; double xg = 2. - xbar - x; // always return one in the soft gluon region if(xg < EPS_) return 1.0; // check it is in the phase space if((1.-x)*(1.-xbar)*(1.-xg) < d_rho_*xg*xg) return 0.0; double k1 = getKfromX(x, xbar); double k2 = getKfromX(xbar, x); // Is it in the antiquark emission zone? if(k2 < d_kt2_) { rval = MEV(x, xbar)/PS(xbar, x); // is it also in the quark emission zone? if(k1 < d_kt1_) rval *= 0.5; return rval; } return 1.0; } double MEee2gZ2qq::qWeightX(Energy qtilde, double z) { double x, xb; getXXbar(sqr(qtilde/d_Q_), z, x, xb); // if exceptionally out of phase space, leave this emission, as there // is no good interpretation for the soft ME correction. if (x < 0 || xb < 0) return 1.0; return qWeight(x, xb); } double MEee2gZ2qq::qbarWeightX(Energy qtilde, double z) { double x, xb; getXXbar(sqr(qtilde/d_Q_), z, xb, x); // see above in qWeightX. if (x < 0 || xb < 0) return 1.0; return qbarWeight(x, xb); } double MEee2gZ2qq::PS(double x, double xbar) { double u = 0.5*(1. + d_rho_ / (1.-xbar+d_rho_)); double z = u + (x - (2.-xbar)*u)/sqrt(xbar*xbar - 4.*d_rho_); double brack = (1.+z*z)/(1.-z)- 2.*d_rho_/(1-xbar); // interesting: the splitting function without the subtraction // term. Actually gives a much worse approximation in the collinear // limit. double brack = (1.+z*z)/(1.-z); double den = (1.-xbar)*sqrt(xbar*xbar - 4.*d_rho_); return brack/den; } HardTreePtr MEee2gZ2qq::generateHardest(ShowerTreePtr tree) { // get the momenta of the incoming and outgoing partons // incoming ShowerProgenitorPtr emProgenitor = tree->incomingLines().begin() ->first, epProgenitor = tree->incomingLines().rbegin()->first; // outgoing ShowerProgenitorPtr qkProgenitor = tree->outgoingLines().begin() ->first, qbProgenitor = tree->outgoingLines().rbegin()->first; // get the order right if(emProgenitor->id()<0) swap(emProgenitor,epProgenitor); if(qkProgenitor->id()<0) swap(qkProgenitor,qbProgenitor); loMomenta_.resize(0); // extract the momenta loMomenta_.push_back(emProgenitor->progenitor()->momentum()); loMomenta_.push_back(epProgenitor->progenitor()->momentum()); loMomenta_.push_back(qkProgenitor->progenitor()->momentum()); loMomenta_.push_back(qbProgenitor->progenitor()->momentum()); // and ParticleData objects partons_.resize(0); partons_.push_back(emProgenitor->progenitor()->dataPtr()); partons_.push_back(epProgenitor->progenitor()->dataPtr()); partons_.push_back(qkProgenitor->progenitor()->dataPtr()); partons_.push_back(qbProgenitor->progenitor()->dataPtr()); partons_.push_back(gluon_); // boost from lab to CMS frame with outgoing particles // along the z axis LorentzRotation eventFrame( ( loMomenta_[2] + loMomenta_[3] ).findBoostToCM() ); Lorentz5Momentum spectator = eventFrame*loMomenta_[2]; eventFrame.rotateZ( -spectator.phi() ); eventFrame.rotateY( -spectator.theta() ); eventFrame.invert(); // mass of the final-state system Energy2 M2 = (loMomenta_[2]+loMomenta_[3]).m2(); Energy M = sqrt(M2); double mu1 = loMomenta_[2].mass()/M; double mu2 = loMomenta_[3].mass()/M; double mu12 = sqr(mu1), mu22 = sqr(mu2); double lambda = sqrt(1.+sqr(mu12)+sqr(mu22)-2.*mu12-2.*mu22-2.*mu12*mu22); // max pT Energy pTmax = 0.5*sqrt(M2)* (1.-sqr(loMomenta_[2].mass()+loMomenta_[3].mass())/M2); // max y if ( pTmax < pTmin_ ) return HardTreePtr(); double ymax = acosh(pTmax/pTmin_); // prefactor for the overestimate of the Sudakov double a = 4./3.*alpha_->overestimateValue()/Constants::twopi* 2.*ymax*preFactor_; // variables for the emission Energy pT[2]; double y[2],phi[2],x3[2],x1[2][2],x2[2][2]; double contrib[2][2]; // storage of the real emmision momenta vector<Lorentz5Momentum> realMomenta[2][2]= {{vector<Lorentz5Momentum>(5),vector<Lorentz5Momentum>(5)}, {vector<Lorentz5Momentum>(5),vector<Lorentz5Momentum>(5)}}; for(unsigned int ix=0;ix<2;++ix) for(unsigned int iy=0;iy<2;++iy) for(unsigned int iz=0;iz<2;++iz) realMomenta[ix][iy][iz] = loMomenta_[iz]; // generate the emission for(unsigned int ix=0;ix<2;++ix) { if(ix==1) { swap(mu1 ,mu2 ); swap(mu12,mu22); } pT[ix] = pTmax; y [ix] = 0.; bool reject = true; do { // generate pT pT[ix] *= pow(UseRandom::rnd(),1./a); if(pT[ix]<pTmin_) { pT[ix] = -GeV; break; } // generate y y[ix] = -ymax+2.*UseRandom::rnd()*ymax; // generate phi phi[ix] = UseRandom::rnd()*Constants::twopi; // calculate x3 and check in allowed region x3[ix] = 2.*pT[ix]*cosh(y[ix])/M; if(x3[ix] < 0. || x3[ix] > 1. -sqr( mu1 + mu2 ) ) continue; // find the possible solutions for x1 double xT2 = sqr(2./M*pT[ix]); double root = (-sqr(x3[ix])+xT2)* (xT2*mu22+2.*x3[ix]-sqr(mu12)+2.*mu22+2.*mu12-sqr(x3[ix])-1. +2.*mu12*mu22-sqr(mu22)-2.*mu22*x3[ix]-2.*mu12*x3[ix]); double c1=2.*sqr(x3[ix])-4.*mu22-6.*x3[ix]+4.*mu12-xT2*x3[ix] +2.*xT2-2.*mu12*x3[ix]+2.*mu22*x3[ix]+4.; if(root<0.) continue; x1[ix][0] = 1./(4.-4.*x3[ix]+xT2)*(c1-2.*sqrt(root)); x1[ix][1] = 1./(4.-4.*x3[ix]+xT2)*(c1+2.*sqrt(root)); // change sign of y if 2nd particle emits if(ix==1) y[ix] *=-1.; // loop over the solutions for(unsigned int iy=0;iy<2;++iy) { contrib[ix][iy]=0.; // check x1 value allowed if(x1[ix][iy]<2.*mu1||x1[ix][iy]>1.+mu12-mu22) continue; // calculate x2 value and check allowed x2[ix][iy] = 2.-x3[ix]-x1[ix][iy]; double root = max(0.,sqr(x1[ix][iy])-4.*mu12); root = sqrt(root); double x2min = 1.+mu22-mu12 -0.5*(1.-x1[ix][iy]+mu12-mu22)/(1.-x1[ix][iy]+mu12)*(x1[ix][iy]-2.*mu12+root); double x2max = 1.+mu22-mu12 -0.5*(1.-x1[ix][iy]+mu12-mu22)/(1.-x1[ix][iy]+mu12)*(x1[ix][iy]-2.*mu12-root); if(x2[ix][iy]<x2min||x2[ix][iy]>x2max) continue; // check the z components double z1 = sqrt(sqr(x1[ix][iy])-4.*mu12-xT2); double z2 = -sqrt(sqr(x2[ix][iy])-4.*mu22); double z3 = pT[ix]*sinh(y[ix])*2./M; if(ix==1) z3 *=-1.; if(abs(-z1+z2+z3)<1e-9) z1 *= -1.; if(abs(z1+z2+z3)>1e-5) continue; // construct the momenta realMomenta[ix][iy][4] = Lorentz5Momentum(pT[ix]*cos(phi[ix]),pT[ix]*sin(phi[ix]), pT[ix]*sinh(y[ix]) ,pT[ix]*cosh(y[ix]),ZERO); if(ix==0) { realMomenta[ix][iy][2] = Lorentz5Momentum(-pT[ix]*cos(phi[ix]),-pT[ix]*sin(phi[ix]), z1*0.5*M,x1[ix][iy]*0.5*M,M*mu1); realMomenta[ix][iy][3] = Lorentz5Momentum(ZERO,ZERO, z2*0.5*M,x2[ix][iy]*0.5*M,M*mu2); } else { realMomenta[ix][iy][2] = Lorentz5Momentum(ZERO,ZERO,-z2*0.5*M,x2[ix][iy]*0.5*M,M*mu2); realMomenta[ix][iy][3] = Lorentz5Momentum(-pT[ix]*cos(phi[ix]),-pT[ix]*sin(phi[ix]), -z1*0.5*M,x1[ix][iy]*0.5*M,M*mu1); } // boost the momenta back to the lab for(unsigned int iz=2;iz<5;++iz) realMomenta[ix][iy][iz] *= eventFrame; // jacobian and prefactors for the weight Energy J = M/sqrt(xT2)*abs(-x1[ix][iy]*x2[ix][iy]+2.*mu22*x1[ix][iy] +x2[ix][iy]+x2[ix][iy]*mu12+mu22*x2[ix][iy] -sqr(x2[ix][iy])) /pow(sqr(x2[ix][iy])-4.*mu22,1.5); // prefactors etc contrib[ix][iy] = 0.5*pT[ix]/J/preFactor_/lambda; // matrix element piece contrib[ix][iy] *= alpha_->ratio(sqr(pT[ix]))* meRatio(partons_,realMomenta[ix][iy],ix,false); } if(contrib[ix][0]+contrib[ix][1]>1.) { ostringstream s; s << "MEee2gZ2qq::generateHardest weight for channel " << ix << "is " << contrib[ix][0]+contrib[ix][1] << " which is greater than 1"; generator()->logWarning( Exception(s.str(), Exception::warning) ); } reject = UseRandom::rnd() > contrib[ix][0] + contrib[ix][1]; } while (reject); if(pT[ix]<pTmin_) pT[ix] = -GeV; } if(pT[0]<ZERO && pT[1]<ZERO) { qkProgenitor->maximumpT(pTmin_); qbProgenitor->maximumpT(pTmin_); return HardTreePtr(); } // now pick the emission with highest pT vector<Lorentz5Momentum> emmision; unsigned int iemit=0,ispect=0; Energy pTveto; if(pT[0]>pT[1]) { iemit = 2; ispect = 3; pTveto = pT[0]; if(UseRandom::rnd()<contrib[0][0]/(contrib[0][0]+contrib[0][1])) emmision = realMomenta[0][0]; else emmision = realMomenta[0][1]; } else { iemit = 3; ispect = 2; pTveto = pT[1]; if(UseRandom::rnd()<contrib[1][0]/(contrib[1][0]+contrib[1][1])) emmision = realMomenta[1][0]; else emmision = realMomenta[1][1]; } // Make the particles for the hard tree ShowerParticleVector hardParticles; for(unsigned int ix=0;ix<partons_.size();++ix) { hardParticles.push_back(new_ptr(ShowerParticle(partons_[ix],ix>=2))); hardParticles.back()->set5Momentum(emmision[ix]); } ShowerParticlePtr parent(new_ptr(ShowerParticle(partons_[iemit],true))); Lorentz5Momentum parentMomentum(emmision[iemit]+emmision[4]); parentMomentum.setMass(partons_[iemit]->mass()); parent->set5Momentum(parentMomentum); // Create the vectors of HardBranchings to create the HardTree: vector<HardBranchingPtr> spaceBranchings,allBranchings; // Incoming boson: for(unsigned int ix=0;ix<2;++ix) { spaceBranchings.push_back(new_ptr(HardBranching(hardParticles[ix],SudakovPtr(), HardBranchingPtr(), HardBranching::Incoming))); allBranchings.push_back(spaceBranchings.back()); } // Outgoing particles from hard emission: HardBranchingPtr spectatorBranch(new_ptr(HardBranching(hardParticles[ispect], SudakovPtr(),HardBranchingPtr(), HardBranching::Outgoing))); HardBranchingPtr emitterBranch(new_ptr(HardBranching(parent,SudakovPtr(), HardBranchingPtr(), HardBranching::Outgoing))); emitterBranch->addChild(new_ptr(HardBranching(hardParticles[iemit], SudakovPtr(),HardBranchingPtr(), HardBranching::Outgoing))); emitterBranch->addChild(new_ptr(HardBranching(hardParticles[4], SudakovPtr(),HardBranchingPtr(), HardBranching::Outgoing))); if(iemit==0) { allBranchings.push_back(emitterBranch); allBranchings.push_back(spectatorBranch); } else { allBranchings.push_back( spectatorBranch ); allBranchings.push_back( emitterBranch ); } // Make the HardTree from the HardBranching vectors. HardTreePtr hardtree = new_ptr(HardTree(allBranchings,spaceBranchings, ShowerInteraction::QCD)); // Set the maximum pt for all other emissions qkProgenitor->maximumpT(pTveto); qbProgenitor->maximumpT(pTveto); // Connect the particles with the branchings in the HardTree hardtree->connect( qkProgenitor->progenitor(), allBranchings[2] ); hardtree->connect( qbProgenitor->progenitor(), allBranchings[3] ); // colour flow ColinePtr newline=new_ptr(ColourLine()); for(set<HardBranchingPtr>::const_iterator cit=hardtree->branchings().begin(); cit!=hardtree->branchings().end();++cit) { if((**cit).branchingParticle()->dataPtr()->iColour()==PDT::Colour3) newline->addColoured((**cit).branchingParticle()); else if((**cit).branchingParticle()->dataPtr()->iColour()==PDT::Colour3bar) newline->addAntiColoured((**cit).branchingParticle()); } // Return the HardTree return hardtree; } double MEee2gZ2qq::meRatio(vector<cPDPtr> partons, vector<Lorentz5Momentum> momenta, unsigned int iemitter,bool subtract) const { Lorentz5Momentum q = momenta[2]+momenta[3]+momenta[4]; Energy2 Q2=q.m2(); Energy2 lambda = sqrt((Q2-sqr(momenta[2].mass()+momenta[3].mass()))* (Q2-sqr(momenta[2].mass()-momenta[3].mass()))); InvEnergy2 D[2]; double lome[2]; for(unsigned int iemit=0;iemit<2;++iemit) { unsigned int ispect = iemit==0 ? 1 : 0; Energy2 pipj = momenta[4 ] * momenta[2+iemit ]; Energy2 pipk = momenta[4 ] * momenta[2+ispect]; Energy2 pjpk = momenta[2+iemit] * momenta[2+ispect]; double y = pipj/(pipj+pipk+pjpk); double z = pipk/( pipk+pjpk); Energy mij = sqrt(2.*pipj+sqr(momenta[2+iemit].mass())); Energy2 lamB = sqrt((Q2-sqr(mij+momenta[2+ispect].mass()))* (Q2-sqr(mij-momenta[2+ispect].mass()))); Energy2 Qpk = q*momenta[2+ispect]; Lorentz5Momentum pkt = lambda/lamB*(momenta[2+ispect]-Qpk/Q2*q) +0.5/Q2*(Q2+sqr(momenta[2+ispect].mass())-sqr(momenta[2+ispect].mass()))*q; Lorentz5Momentum pijt = q-pkt; double muj = momenta[2+iemit ].mass()/sqrt(Q2); double muk = momenta[2+ispect].mass()/sqrt(Q2); double vt = sqrt((1.-sqr(muj+muk))*(1.-sqr(muj-muk)))/(1.-sqr(muj)-sqr(muk)); double v = sqrt(sqr(2.*sqr(muk)+(1.-sqr(muj)-sqr(muk))*(1.-y))-4.*sqr(muk)) /(1.-y)/(1.-sqr(muj)-sqr(muk)); // dipole term D[iemit] = 0.5/pipj*(2./(1.-(1.-z)*(1.-y)) -vt/v*(2.-z+sqr(momenta[2+iemit].mass())/pipj)); // matrix element vector<Lorentz5Momentum> lomom(4); lomom[0] = momenta[0]; lomom[1] = momenta[1]; if(iemit==0) { lomom[2] = pijt; lomom[3] = pkt ; } else { lomom[3] = pijt; lomom[2] = pkt ; } lome[iemit] = loME(partons,lomom,false)/3.; } InvEnergy2 ratio = realME(partons,momenta) *abs(D[iemitter])/(abs(D[0]*lome[0])+abs(D[1]*lome[1])); if(subtract) return Q2*(ratio-2.*D[iemitter]); else return Q2*ratio; } double MEee2gZ2qq::loME(const vector<cPDPtr> & partons, const vector<Lorentz5Momentum> & momenta, bool first) const { // compute the spinors vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; SpinorWaveFunction ein (momenta[0],partons[0],incoming); SpinorBarWaveFunction pin (momenta[1],partons[1],incoming); SpinorBarWaveFunction qkout(momenta[2],partons[2],outgoing); SpinorWaveFunction qbout(momenta[3],partons[3],outgoing); for(unsigned int ix=0;ix<2;++ix) { ein.reset(ix) ; fin.push_back( ein ); pin.reset(ix) ; ain.push_back( pin ); qkout.reset(ix); fout.push_back(qkout); qbout.reset(ix); aout.push_back(qbout); } // compute the matrix element double me,lastCont,lastBW; HelicityME(fin,ain,fout,aout,me,lastCont,lastBW); // save the components if(first) { DVector save; save.push_back(lastCont); save.push_back(lastBW); meInfo(save); } // return the answer return me; } InvEnergy2 MEee2gZ2qq::realME(const vector<cPDPtr> & partons, const vector<Lorentz5Momentum> & momenta) const { // compute the spinors vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; vector<VectorWaveFunction> gout; SpinorWaveFunction ein (momenta[0],partons[0],incoming); SpinorBarWaveFunction pin (momenta[1],partons[1],incoming); SpinorBarWaveFunction qkout(momenta[2],partons[2],outgoing); SpinorWaveFunction qbout(momenta[3],partons[3],outgoing); VectorWaveFunction gluon(momenta[4],partons[4],outgoing); for(unsigned int ix=0;ix<2;++ix) { ein.reset(ix) ; fin.push_back( ein ); pin.reset(ix) ; ain.push_back( pin ); qkout.reset(ix); fout.push_back(qkout); qbout.reset(ix); aout.push_back(qbout); gluon.reset(2*ix); gout.push_back(gluon); } vector<Complex> diag(4,0.); ProductionMatrixElement output(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1); double total(0.); for(unsigned int inhel1=0;inhel1<2;++inhel1) { for(unsigned int inhel2=0;inhel2<2;++inhel2) { // intermediate Z VectorWaveFunction interZ = FFZVertex_->evaluate(scale(),1,Z0_,fin[inhel1],ain[inhel2]); // intermediate photon VectorWaveFunction interG = FFPVertex_->evaluate(scale(),1,gamma_,fin[inhel1],ain[inhel2]); for(unsigned int outhel1=0;outhel1<2;++outhel1) { for(unsigned int outhel2=0;outhel2<2;++outhel2) { for(unsigned int outhel3=0;outhel3<2;++outhel3) { SpinorBarWaveFunction off1 = FFGVertex_->evaluate(scale(),3,partons[2],fout[outhel1],gout[outhel3]); diag[0] = FFZVertex_->evaluate(scale(),aout[outhel2],off1,interZ); diag[1] = FFPVertex_->evaluate(scale(),aout[outhel2],off1,interG); SpinorWaveFunction off2 = FFGVertex_->evaluate(scale(),3,partons[3],aout[outhel2],gout[outhel3]); diag[2] = FFZVertex_->evaluate(scale(),off2,fout[outhel1],interZ); diag[3] = FFPVertex_->evaluate(scale(),off2,fout[outhel1],interG); // sum of diagrams Complex sum = std::accumulate(diag.begin(),diag.end(),Complex(0.)); // matrix element output(inhel1,inhel2,outhel1,outhel2,outhel3)=sum; // me2 total += norm(sum); } } } } } // spin average total *= 0.25; tcPolarizedBeamPDPtr beam[2] = {dynamic_ptr_cast<tcPolarizedBeamPDPtr>(partons[0]), dynamic_ptr_cast<tcPolarizedBeamPDPtr>(partons[1])}; if( beam[0] || beam[1] ) { RhoDMatrix rho[2] = {beam[0] ? beam[0]->rhoMatrix() : RhoDMatrix(mePartonData()[0]->iSpin()), beam[1] ? beam[1]->rhoMatrix() : RhoDMatrix(mePartonData()[1]->iSpin())}; total = output.average(rho[0],rho[1]); } // divide out the coupling total /= norm(FFGVertex_->norm()); // return the total return total*UnitRemoval::InvE2; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/MEee2ZH.h��������������������������������������������������0000644�0001750�0001750�00000006333�11754474775�022334� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEee2ZH_H #define HERWIG_MEee2ZH_H // // This is the declaration of the MEee2ZH class. // #include "Herwig++/MatrixElement/MEfftoVH.h" namespace Herwig { using namespace ThePEG; /** * The MEee2ZH class implements the matrix element * for \f$e^+e^-\to Z^0h^0\f$. * * @see \ref MEee2ZHInterfaces "The interfaces" * defined for MEee2ZH. */ class MEee2ZH: public MEfftoVH { public: /** @name Virtual functions required by the MEfftoVH class. */ //@{ /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Has not got a POWHEG style correction */ virtual bool hasPOWHEGCorrection() {return false;} /** * Has not got an old fashioned ME correction */ virtual bool hasMECorrection() {return false;} public: /** * 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static NoPIOClassDescription<MEee2ZH> initMEee2ZH; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEee2ZH & operator=(const MEee2ZH &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEee2ZH. */ template <> struct BaseClassTrait<Herwig::MEee2ZH,1> { /** Typedef of the first base class of MEee2ZH. */ typedef Herwig::MEfftoVH NthBase; }; /** This template specialization informs ThePEG about the name of * the MEee2ZH class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEee2ZH> : public ClassTraitsBase<Herwig::MEee2ZH> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEee2ZH"; } /** * The name of a file containing the dynamic library where the class * MEee2ZH is implemented. It may also include several, space-separated, * libraries if the class MEee2ZH depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMELepton.so"; } }; /** @endcond */ } #endif /* HERWIG_MEee2ZH_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/MEee2VV.cc�������������������������������������������������0000644�0001750�0001750�00000034467�11754474775�022515� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEee2VV class. // #include "MEee2VV.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "ThePEG/PDF/PolarizedBeamParticleData.h" using namespace Herwig; MEee2VV::MEee2VV() : process_(0), massOption_(2) {} void MEee2VV::doinit() { HwMEBase::doinit(); massOption(vector<unsigned int>(2,massOption_)); rescalingOption(2); // get the vertices we need // get a pointer to the standard model object in the run static const tcHwSMPtr hwsm = dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if (!hwsm) throw InitException() << "hwsm pointer is null in" << " MEee2VV::doinit()" << Exception::abortnow; // get pointers to all required Vertex objects FFZvertex_ = hwsm->vertexFFZ(); FFPvertex_ = hwsm->vertexFFP(); WWWvertex_ = hwsm->vertexWWW(); FFWvertex_ = hwsm->vertexFFW(); } void MEee2VV::getDiagrams() const { // get the particle data objects we need tcPDPtr wPlus = getParticleData(ParticleID::Wplus ); tcPDPtr wMinus = getParticleData(ParticleID::Wminus); tcPDPtr z0 = getParticleData(ParticleID::Z0 ); tcPDPtr gamma = getParticleData(ParticleID::gamma); tcPDPtr em = getParticleData(ParticleID::eminus); tcPDPtr ep = getParticleData(ParticleID::eplus); tcPDPtr nu_e = getParticleData(ParticleID::nu_e); if(process_==0||process_==1) { // s-channel Z0 for W+W- production add(new_ptr((Tree2toNDiagram(2), em, ep, 1, z0, 3, wMinus, 3, wPlus, -2))); // s-channel photon for W+W- production add(new_ptr((Tree2toNDiagram(2), em, ep, 1, gamma, 3, wMinus, 3, wPlus, -1))); // t channel for W+W- production add(new_ptr((Tree2toNDiagram(3), em, nu_e, ep, 1, wMinus, 2, wPlus, -3))); } if(process_==0||process_==2) { add(new_ptr((Tree2toNDiagram(3), em, em, ep, 1, z0, 2, z0, -1))); add(new_ptr((Tree2toNDiagram(3), em, em, ep, 2, z0, 1, z0, -2))); } } Energy2 MEee2VV::scale() const { return sHat(); } unsigned int MEee2VV::orderInAlphaS() const { return 0; } unsigned int MEee2VV::orderInAlphaEW() const { return 2; } Selector<const ColourLines *> MEee2VV::colourGeometries(tcDiagPtr ) const { static ColourLines cl(""); Selector<const ColourLines *> sel; sel.insert(1.0, &cl); return sel; } IBPtr MEee2VV::clone() const { return new_ptr(*this); } IBPtr MEee2VV::fullclone() const { return new_ptr(*this); } ClassDescription<MEee2VV> MEee2VV::initMEee2VV; // Definition of the static class description member. void MEee2VV::Init() { static ClassDocumentation<MEee2VV> documentation ("The MEee2VV class simulates the processes e+e->W+W-" " and e+e-->Z0Z0 using a 2->2 matrix element"); static Switch<MEee2VV,unsigned int> interfaceProcess ("Process", "Which processes to include", &MEee2VV::process_, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include WW and ZZ", 0); static SwitchOption interfaceProcessWW (interfaceProcess, "WW", "Only include WW", 1); static SwitchOption interfaceProcessZZ (interfaceProcess, "ZZ", "Only include ZZ", 2); static Switch<MEee2VV,unsigned int> interfaceMassOption ("MassOption", "Option for the treatment of the W/Z mass", &MEee2VV::massOption_, 1, false, false); static SwitchOption interfaceMassOptionOnMassShell (interfaceMassOption, "OnMassShell", "The W/Z is produced on its mass shell", 1); static SwitchOption interfaceMassOption2 (interfaceMassOption, "OffShell", "The W/Z is generated off-shell using the mass and width generator.", 2); } void MEee2VV::persistentOutput(PersistentOStream & os) const { os << process_ << massOption_ << FFPvertex_ << FFWvertex_ << FFZvertex_ << WWWvertex_; } void MEee2VV::persistentInput(PersistentIStream & is, int) { is >> process_ >> massOption_ >> FFPvertex_ >> FFWvertex_ >> FFZvertex_ >> WWWvertex_; } double MEee2VV::me2() const { // setup momenta and particle data for the external wavefunctions // incoming SpinorWaveFunction em_in( meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction ep_in( meMomenta()[1],mePartonData()[1],incoming); // outgoing VectorWaveFunction v1_out(meMomenta()[2],mePartonData()[2],outgoing); VectorWaveFunction v2_out(meMomenta()[3],mePartonData()[3],outgoing); vector<SpinorWaveFunction> f1; vector<SpinorBarWaveFunction> a1; vector<VectorWaveFunction> v1,v2; // calculate the wavefunctions for(unsigned int ix=0;ix<3;++ix) { if(ix<2) { em_in.reset(ix); f1.push_back(em_in); ep_in.reset(ix); a1.push_back(ep_in); } v1_out.reset(ix); v1.push_back(v1_out); v2_out.reset(ix); v2.push_back(v2_out); } // e+e- > Z Z if(v1[0].particle()->id()==ParticleID::Z0) { return ZZME(f1,a1,v1,v2); } // e+e- > W+W- else { return WWME(f1,a1,v1,v2); } } double MEee2VV::WWME(vector<SpinorWaveFunction> & f1, vector<SpinorBarWaveFunction> & a1, vector<VectorWaveFunction> & v1, vector<VectorWaveFunction> & v2) const { double output(0.); vector<double> me(3,0.0); me_.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1)); ProductionMatrixElement hme[3]={ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1), ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1), ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1)}; // particle data for the t-channel intermediate tcPDPtr nu_e = getParticleData(ParticleID::nu_e); tcPDPtr gamma = getParticleData(ParticleID::gamma); tcPDPtr z0 = getParticleData(ParticleID::Z0); vector<Complex> diag(3,0.0); for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { VectorWaveFunction interP = FFPvertex_->evaluate(scale(),3,gamma,f1[ihel1],a1[ihel2]); VectorWaveFunction interZ = FFZvertex_->evaluate(scale(),3,z0 ,f1[ihel1],a1[ihel2]); for(unsigned int ohel1=0;ohel1<3;++ohel1) { for(unsigned int ohel2=0;ohel2<3;++ohel2) { diag[0] = WWWvertex_->evaluate(scale(),interP,v2[ohel2],v1[ohel1]); // s-channel Z0 diag[1] = WWWvertex_->evaluate(scale(),interZ,v2[ohel2],v1[ohel1]); // t-channel neutrino SpinorWaveFunction inter_nu_e = FFWvertex_->evaluate(scale(),1,nu_e,f1[ihel1],v1[ohel1]); diag[2] = FFWvertex_->evaluate(scale(),inter_nu_e,a1[ihel2],v2[ohel2]); // individual diagrams for (size_t ii=0; ii<3; ++ii) { me[ii] += std::norm(diag[ii]); hme[ii](ihel1,ihel2,ohel1,ohel2) = diag[ii]; } // full matrix element diag[0] += diag[1]+diag[2]; output += std::norm(diag[0]); // storage of the matrix element for spin correlations me_(ihel1,ihel2,ohel1,ohel2) = diag[0]; } } } } DVector save(3); for (size_t i = 0; i < 3; ++i) save[i] = 0.25 * me[i]; output *= 0.25; // polarization stuff tcPolarizedBeamPDPtr beam[2] = {dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[0]), dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[1])}; if( beam[0] || beam[1] ) { RhoDMatrix rho[2] = {beam[0] ? beam[0]->rhoMatrix() : RhoDMatrix(mePartonData()[0]->iSpin()), beam[1] ? beam[1]->rhoMatrix() : RhoDMatrix(mePartonData()[1]->iSpin())}; for(unsigned int i=0;i<3;++i) me[i] = hme[i].average(rho[0],rho[1]); output = me_.average(rho[0],rho[1]); } meInfo(save); // testing code // double xW = SM().sin2ThetaW(); // double Q=-1.; // double l = 2.*(-0.5-Q*xW); // double r =-2.*Q*xW; // Energy2 mW2 = sqr(getParticleData(ParticleID::Wplus)->mass()); // Energy2 mZ2 = sqr(getParticleData(ParticleID::Z0)->mass()); // Energy2 sh=sHat(),th=tHat(),uh=uHat(); // double A = (th*uh/sqr(mW2)-1.)*(0.25-mW2/sh+3.*sqr(mW2/sh)) // +sh/mW2-4; // double bracket = // A*(sqr(Q+0.25*(l+r)/xW*sh/(sh-mZ2))+ // sqr( 0.25*(l-r)/xW*sh/(sh-mZ2))); // if(Q>0) swap(uh,th); // double I = (th*uh/sqr(mW2)-1.)*(0.25-0.5*mW2/sh-sqr(mW2)/sh/th) // +sh/mW2-2.+2.*mW2/th; // double E = (th*uh/sqr(mW2)-1.)*(0.25+sqr(mW2/th))+sh/mW2; // if(Q<0.) // bracket += 0.5/xW*(Q+0.5*l/xW*sh/(sh-mZ2))*I+0.125/sqr(xW)*E; // else // bracket +=-0.5/xW*(Q+0.5*l/xW*sh/(sh-mZ2))*I+0.125/sqr(xW)*E; // InvEnergy4 dsigdt = 2.*Constants::pi*sqr(SM().alphaEM(scale()))/sqr(sh)*bracket; // double test = 16.*Constants::pi*sqr(sHat())*dsigdt; // cerr << "testing " << test << " " << output << " " << test/output << "\n"; return output; } double MEee2VV::ZZME(vector<SpinorWaveFunction> & f1, vector<SpinorBarWaveFunction> & a1, vector<VectorWaveFunction> & v1, vector<VectorWaveFunction> & v2) const { double output(0.); vector<double> me(3,0.0); me_.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1)); ProductionMatrixElement hme[2]={ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1), ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1)}; tcPDPtr em = getParticleData(ParticleID::eminus); vector<Complex> diag(2,0.0); SpinorWaveFunction inter; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<3;++ohel1) { for(unsigned int ohel2=0;ohel2<3;++ohel2) { inter = FFZvertex_->evaluate(scale(),1,em,f1[ihel1] ,v1[ohel1]); diag[0] = FFZvertex_->evaluate(scale(),inter,a1[ihel2],v2[ohel2]); inter = FFZvertex_->evaluate(scale(),1,em,f1[ihel1] ,v2[ohel2]); diag[1] = FFZvertex_->evaluate(scale(),inter,a1[ihel2],v1[ohel1]); // individual diagrams for (size_t ii=0; ii<2; ++ii) { me[ii] += std::norm(diag[ii]); hme[ii](ihel1,ihel2,ohel1,ohel2) = diag[ii]; } // full matrix element diag[0] += diag[1]; output += std::norm(diag[0]); // storage of the matrix element for spin correlations me_(ihel1,ihel2,ohel1,ohel2) = diag[0]; } } } } DVector save(3); for (size_t i = 0; i < 3; ++i) save[i] = 0.25 * me[i]; meInfo(save); // spin average output *= 0.25; // polarization stuff tcPolarizedBeamPDPtr beam[2] = {dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[0]), dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[1])}; if( beam[0] || beam[1] ) { RhoDMatrix rho[2] = {beam[0] ? beam[0]->rhoMatrix() : RhoDMatrix(mePartonData()[0]->iSpin()), beam[1] ? beam[1]->rhoMatrix() : RhoDMatrix(mePartonData()[1]->iSpin())}; for(unsigned int i=0;i<2;++i) me[i] = hme[i].average(rho[0],rho[1]); output = me_.average(rho[0],rho[1]); } // identical particle factor output /= 2.; // testing code // double xW = SM().sin2ThetaW(); // double Q=-1.; // double l = 2.*(-0.5-Q*xW); // double r =-2.*Q*xW; // Energy2 mZ2 = sqr(getParticleData(ParticleID::Z0)->mass()); // Energy2 sh=sHat(),th=tHat(),uh=uHat(); // InvEnergy4 dsigdt = Constants::pi*sqr(SM().alphaEM(scale()))/32.* // (pow(l,4)+pow(r,4))/sqr(xW)/sqr(1.-xW)/sqr(sh) // *(th/uh+uh/th+4.*mZ2*sh/th/uh-sqr(mZ2)*(1./sqr(th)+1./sqr(uh))); // double test = 16.*Constants::pi*sqr(sHat())*dsigdt; // cerr << "testing " << (test-output)/(test+output) << "\n"; return output; } Selector<MEBase::DiagramIndex> MEee2VV::diagrams(const DiagramVector & diags) const { vector<double> last(3); if ( lastXCombPtr() ) { for(unsigned int ix=0;ix<3;++ix) last[ix] = meInfo()[ix]; } Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if(diags[i]->id() >= -3 ) sel.insert(last[-diags[i]->id()],i); } return sel; } double MEee2VV::getCosTheta(double ctmin, double ctmax, const double * r) { double rand = *r; Energy2 m12 = sqr(meMomenta()[2].mass()); Energy2 m22 = sqr(meMomenta()[3].mass()); Energy2 D1 = sHat()-m12-m22; Energy4 lambda = sqr(D1) - 4*m12*m22; double D = D1 / sqrt(lambda); if(abs(mePartonData()[2]->id())==ParticleID::Wplus) { double fraction = (D-ctmax)/(D-ctmin); double costh = D - (D - ctmin) * pow(fraction, rand); jacobian((costh - D) * log(fraction)); return costh; } else { double prob = 0.5; double costh; double fraction1 = (D-ctmax)/(D-ctmin); double fraction2 = (D+ctmin)/(D+ctmax); if(rand<=prob) { rand /=prob; costh = D - (D - ctmin) * pow(fraction1, rand); } else { rand = (rand-prob)/(1.-prob); costh =-D + (D + ctmax) * pow(fraction2, rand); } jacobian(1./(prob /((costh - D) * log(fraction1))- (1.-prob)/((costh + D) * log(fraction2)))); return costh; } } void MEee2VV::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); hard.push_back(sub->outgoing()[1]); // order of particles unsigned int order[4]={0,1,2,3}; if(hard[order[0]]->id()<0) swap(order[0],order[1]); if(hard[order[3]]->id()<0) swap(order[2],order[3]); vector<SpinorWaveFunction> f; vector<SpinorBarWaveFunction> fbar; SpinorWaveFunction (f ,hard[order[0]],incoming,false); SpinorBarWaveFunction(fbar,hard[order[1]],incoming,false); vector<VectorWaveFunction> w1,w2; VectorWaveFunction (w1,hard[order[2]],outgoing,true ,false); VectorWaveFunction (w2,hard[order[3]],outgoing,true ,false); if(hard[order[2]]->id()==ParticleID::Z0) { ZZME(f,fbar,w1,w2); } else { WWME(f,fbar,w1,w2); } // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(me_); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) { tcSpinPtr spin = hard[order[ix]]->spinInfo(); if(ix<2) { tcPolarizedBeamPDPtr beam = dynamic_ptr_cast<tcPolarizedBeamPDPtr>(hard[ix]->dataPtr()); if(beam) spin->rhoMatrix() = beam->rhoMatrix(); } spin->productionVertex(hardvertex); } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/MEee2VectorMeson.h�����������������������������������������0000644�0001750�0001750�00000017411�11754474775�024256� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEee2VectorMeson.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef THEPEG_MEee2VectorMeson_H #define THEPEG_MEee2VectorMeson_H // // This is the declaration of the MEee2VectorMeson class. // #include "ThePEG/MatrixElement/MEBase.h" #include "Herwig++/PDT/GenericMassGenerator.fh" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" namespace Herwig { using namespace ThePEG; using Helicity::SpinorWaveFunction; using Helicity::SpinorBarWaveFunction; using Helicity::VectorWaveFunction; /** * The MEee2VectorMeson class is designed to produce neutral vector mesons * in \f$e^+e^-\f$ collisions and is primarily intended to test the hadronic * decay package. * * @see \ref MEee2VectorMesonInterfaces "The interfaces" * defined for MEee2VectorMeson. */ class MEee2VectorMeson: public MEBase { public: /** * The default constructor. */ inline MEee2VectorMeson() :_coupling(0.0012), _lineshape(false) {} /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Set the typed and momenta of the incoming and outgoing partons to * be used in subsequent calls to me() and colourGeometries() * according to the associated XComb object. If the function is * overridden in a sub class the new function must call the base * class one first. */ virtual void setKinematics(); /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Set up the spin correlations */ virtual void constructVertex(tSubProPtr sub); //@} 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. */ inline virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * Member to return the helicity amplitudes */ ProductionMatrixElement HelicityME(vector<SpinorWaveFunction> fin, vector<SpinorBarWaveFunction> ain, vector<VectorWaveFunction> vout,double& me) const; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEee2VectorMeson> initMEee2VectorMeson; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEee2VectorMeson & operator=(const MEee2VectorMeson &); private: /** * The vector meson being produced */ PDPtr _vector; /** * The coupling */ double _coupling; /** * Use the mass generator for the line shape */ bool _lineshape; /** * Pointer to the mass generator for the Higgs */ GenericMassGeneratorPtr _massgen; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEee2VectorMeson. */ template <> struct BaseClassTrait<Herwig::MEee2VectorMeson,1> { /** Typedef of the first base class of MEee2VectorMeson. */ typedef MEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEee2VectorMeson class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEee2VectorMeson> : public ClassTraitsBase<Herwig::MEee2VectorMeson> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEee2VectorMeson"; } /** * The name of a file containing the dynamic library where the class * MEee2VectorMeson is implemented. It may also include several, space-separated, * libraries if the class MEee2VectorMeson depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMELepton.so"; } }; /** @endcond */ } #endif /* THEPEG_MEee2VectorMeson_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/MEee2VectorMeson.cc����������������������������������������0000644�0001750�0001750�00000016273�11754474775�024421� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEee2VectorMeson.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEee2VectorMeson class. // #include "MEee2VectorMeson.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Cuts/Cuts.h" #include "Herwig++/PDT/GenericMassGenerator.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/MatrixElement/HardVertex.h" using namespace Herwig; using namespace ThePEG; using namespace ThePEG::Helicity; void MEee2VectorMeson::getDiagrams() const { tcPDPtr em = getParticleData(ParticleID::eminus); tcPDPtr ep = getParticleData(ParticleID::eplus); add(new_ptr((Tree2toNDiagram(2), em, ep, 1, _vector,-1))); } Energy2 MEee2VectorMeson::scale() const { return sHat(); } int MEee2VectorMeson::nDim() const { return 1; } void MEee2VectorMeson::setKinematics() { MEBase::setKinematics(); // Always call the base class method first. } bool MEee2VectorMeson::generateKinematics(const double *r) { Lorentz5Momentum pout=meMomenta()[0]+meMomenta()[1]; pout.rescaleMass(); meMomenta()[2] = pout; jacobian(1.0); // check passes all the cuts vector<LorentzMomentum> out(1,meMomenta()[2]); tcPDVector tout(1,mePartonData()[2]); jacobian(1.+0.002*(0.5-r[0])); // return true if passes the cuts return lastCuts().passCuts(tout, out, mePartonData()[0], mePartonData()[1]); } unsigned int MEee2VectorMeson::orderInAlphaS() const { return 0; } unsigned int MEee2VectorMeson::orderInAlphaEW() const { return 0; } Selector<const ColourLines *> MEee2VectorMeson::colourGeometries(tcDiagPtr) const { static ColourLines neutral ( " " ); Selector<const ColourLines *> sel;sel.insert(1.,&neutral); return sel; } void MEee2VectorMeson::persistentOutput(PersistentOStream & os) const { os << _coupling << _vector << _massgen << _lineshape; } void MEee2VectorMeson::persistentInput(PersistentIStream & is, int) { is >> _coupling >> _vector >> _massgen >> _lineshape; } ClassDescription<MEee2VectorMeson> MEee2VectorMeson::initMEee2VectorMeson; // Definition of the static class description member. void MEee2VectorMeson::Init() { static ClassDocumentation<MEee2VectorMeson> documentation ("The MEee2VectorMeson class implements the production of a vector meson" " in e+e- collisions and is primilarly intended to test the hadron decay package"); static Switch<MEee2VectorMeson,bool> interfaceLineShape ("LineShape", "Option for the vector meson lineshape", &MEee2VectorMeson::_lineshape, false, false, false); static SwitchOption interfaceLineShapeMassGenerator (interfaceLineShape, "MassGenerator", "Use the mass generator if available", true); static SwitchOption interfaceLineShapeBreitWigner (interfaceLineShape, "BreitWigner", "Use a Breit-Wigner with the naive running width", false); static Reference<MEee2VectorMeson,ParticleData> interfaceVectorMeson ("VectorMeson", "The vector meson produced", &MEee2VectorMeson::_vector, false, false, true, false, false); static Parameter<MEee2VectorMeson,double> interfaceCoupling ("Coupling", "The leptonic coupling of the vector meson", &MEee2VectorMeson::_coupling, 0.0012, 0.0, 10.0, false, false, Interface::limited); } Selector<MEBase::DiagramIndex> MEee2VectorMeson::diagrams(const DiagramVector &) const { Selector<DiagramIndex> sel;sel.insert(1.0, 0); return sel; } CrossSection MEee2VectorMeson::dSigHatDR() const { InvEnergy2 wgt; Energy M(_vector->mass()),G(_vector->width()); Energy2 M2(sqr(M)),GM(G*M); if(_massgen&&_lineshape) { wgt =Constants::pi*_massgen->weight(sqrt(sHat()))/(sqr(sHat()-M2)+sqr(GM))*UnitRemoval::E2; } else { wgt = sHat()*G/M/(sqr(sHat()-M2)+sqr(sHat()*G/M)); } return me2()*jacobian()*wgt*sqr(hbarc); } void MEee2VectorMeson::doinit() { MEBase::doinit(); // mass generator tMassGenPtr mass=_vector->massGenerator(); if(mass) { _massgen=dynamic_ptr_cast<GenericMassGeneratorPtr>(mass); } } double MEee2VectorMeson::me2() const { double aver=0.; // get the order right int ielectron(0),ipositron(1); if(mePartonData()[0]->id()!=11) swap(ielectron,ipositron); // the vectors for the wavefunction to be passed to the matrix element vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> vout; for(unsigned int ihel=0;ihel<2;++ihel) { fin.push_back(SpinorWaveFunction(meMomenta()[ielectron], mePartonData()[ielectron],ihel,incoming)); ain.push_back(SpinorBarWaveFunction(meMomenta()[ipositron], mePartonData()[ipositron],ihel,incoming)); } for(unsigned int ihel=0;ihel<3;++ihel) { vout.push_back(VectorWaveFunction(meMomenta()[2],mePartonData()[2],ihel,outgoing)); } ProductionMatrixElement temp=HelicityME(fin,ain,vout,aver); return aver; } // the helicity amplitude matrix element ProductionMatrixElement MEee2VectorMeson::HelicityME(vector<SpinorWaveFunction> fin, vector<SpinorBarWaveFunction> ain, vector<VectorWaveFunction> vout, double & aver) const { ProductionMatrixElement output(PDT::Spin1Half,PDT::Spin1Half,PDT::Spin1); Complex product; // sum over helicities to get the matrix element unsigned int inhel1,inhel2,outhel1; double me(0.); LorentzPolarizationVector vec; Complex ii(0.,1.); for(inhel1=0;inhel1<2;++inhel1) { for(inhel2=0;inhel2<2;++inhel2) { vec = fin[inhel1].wave().vectorCurrent(ain[inhel2].wave()); vec*=_coupling; for(outhel1=0;outhel1<3;++outhel1) { product = vec.dot(vout[outhel1].wave()); output(inhel1,inhel2,outhel1)=product; me+=real(product*conj(product)); } } } aver=(me*UnitRemoval::E2)/sHat(); return output; } void MEee2VectorMeson::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first);hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); if(hard[0]->id()<hard[1]->id()) swap(hard[0],hard[1]); vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> vout; SpinorWaveFunction( fin ,hard[0],incoming,false,true); SpinorBarWaveFunction(ain ,hard[1],incoming,false,true); VectorWaveFunction(vout ,hard[2],outgoing,true,false,true); double dummy; ProductionMatrixElement prodme=HelicityME(fin,ain,vout,dummy); // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(prodme); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<3;++ix) { (hard[ix]->spinInfo())->productionVertex(hardvertex); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/Makefile.in������������������������������������������������0000644�0001750�0001750�00000052133�11756461677�023067� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/Lepton DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwMELepton_la_LIBADD = am_HwMELepton_la_OBJECTS = MEee2gZ2qq.lo MEee2gZ2ll.lo MEee2ZH.lo \ MEee2HiggsVBF.lo MEee2VV.lo MEee2VectorMeson.lo HwMELepton_la_OBJECTS = $(am_HwMELepton_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwMELepton_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwMELepton_la_LDFLAGS) $(LDFLAGS) \ -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwMELepton_la_SOURCES) DIST_SOURCES = $(HwMELepton_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwMELepton.la HwMELepton_la_SOURCES = \ MEee2gZ2qq.h MEee2gZ2qq.cc\ MEee2gZ2ll.h MEee2gZ2ll.cc\ MEee2ZH.h MEee2ZH.cc\ MEee2HiggsVBF.h MEee2HiggsVBF.cc \ MEee2VV.h MEee2VV.cc \ MEee2VectorMeson.h MEee2VectorMeson.cc HwMELepton_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 4:0:1 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/Lepton/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/Lepton/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwMELepton.la: $(HwMELepton_la_OBJECTS) $(HwMELepton_la_DEPENDENCIES) $(EXTRA_HwMELepton_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwMELepton_la_LINK) -rpath $(pkglibdir) $(HwMELepton_la_OBJECTS) $(HwMELepton_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEee2HiggsVBF.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEee2VV.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEee2VectorMeson.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEee2ZH.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEee2gZ2ll.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEee2gZ2qq.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/MEee2HiggsVBF.cc�������������������������������������������0000644�0001750�0001750�00000003172�11754474775�023546� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEee2HiggsVBF class. // #include "MEee2HiggsVBF.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/Models/StandardModel/StandardModel.h" using namespace Herwig; void MEee2HiggsVBF::getDiagrams() const { // WW processes tcPDPtr em(getParticleData(ParticleID::eminus)); tcPDPtr ep(em->CC()); if(process()==0||process()==1) { tcPDPtr nue(getParticleData(ParticleID::nu_e)); tcPDPtr nueb(nue->CC()); add(new_ptr((Tree2toNDiagram(4), em, WMinus(), WPlus(), ep, 1, nue, 3, nueb, 2, higgs(),-1))); } // ZZ processes if(process()==0||process()==2) { add(new_ptr((Tree2toNDiagram(4), em, Z0(), Z0(), ep, 1, em, 3, ep, 2, higgs(),-2))); } } NoPIOClassDescription<MEee2HiggsVBF> MEee2HiggsVBF::initMEee2HiggsVBF; // Definition of the static class description member. void MEee2HiggsVBF::Init() { static ClassDocumentation<MEee2HiggsVBF> documentation ("The MEee2HiggsVBF class implements VBF type matrix elements for e+e- collisions"); } void MEee2HiggsVBF::doinit() { // get the vedrtex pointers from the SM object tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if(!hwsm) throw InitException() << "Wrong type of StandardModel object in " << "MEPP2HiggsVBF::doinit() the Herwig++" << " version must be used" << Exception::runerror; // set the vertex setWWHVertex(hwsm->vertexWWH()); higgs(getParticleData(ParticleID::h0)); MEfftoffH::doinit(); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/MEee2gZ2ll.cc����������������������������������������������0000644�0001750�0001750�00000023576�11754474775�023153� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEee2gZ2ll.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEee2gZ2ll class. // #include "MEee2gZ2ll.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "ThePEG/PDF/PolarizedBeamParticleData.h" using namespace Herwig; void MEee2gZ2ll::getDiagrams() const { // specific the diagrams tcPDPtr ep = getParticleData(ParticleID::eplus); tcPDPtr em = getParticleData(ParticleID::eminus); // setup the processes for( int i =11;i<=16;++i) { if(_allowed==0 || (_allowed==1 && i%2==1) || (_allowed==2&&i==11) || (_allowed==3&&i==13) || (_allowed==4&&i==15)) { tcPDPtr lm = getParticleData(i); tcPDPtr lp = lm->CC(); add(new_ptr((Tree2toNDiagram(2), em, ep, 1, _gamma, 3, lm, 3, lp, -1))); add(new_ptr((Tree2toNDiagram(2), em, ep, 1, _Z0, 3, lm, 3, lp, -2))); } } } Energy2 MEee2gZ2ll::scale() const { return sHat(); } unsigned int MEee2gZ2ll::orderInAlphaS() const { return 0; } unsigned int MEee2gZ2ll::orderInAlphaEW() const { return 2; } Selector<MEBase::DiagramIndex> MEee2gZ2ll::diagrams(const DiagramVector & diags) const { double lastCont(0.5),lastBW(0.5); if ( lastXCombPtr() ) { lastCont = meInfo()[0]; lastBW = meInfo()[1]; } Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if ( diags[i]->id() == -1 ) sel.insert(lastCont, i); else if ( diags[i]->id() == -2 ) sel.insert(lastBW, i); } return sel; } Selector<const ColourLines *> MEee2gZ2ll::colourGeometries(tcDiagPtr) const { static ColourLines ctST(" "); Selector<const ColourLines *> sel; sel.insert(1.0, &ctST); return sel; } void MEee2gZ2ll::persistentOutput(PersistentOStream & os) const { os << _allowed << _theFFZVertex << _theFFPVertex << _gamma << _Z0; } void MEee2gZ2ll::persistentInput(PersistentIStream & is, int) { is >> _allowed >> _theFFZVertex >> _theFFPVertex >> _gamma >> _Z0; } ClassDescription<MEee2gZ2ll> MEee2gZ2ll::initMEee2gZ2ll; // Definition of the static class description member. void MEee2gZ2ll::Init() { static Switch<MEee2gZ2ll,int> interfaceallowed ("Allowed", "Allowed outgoing leptons", &MEee2gZ2ll::_allowed, 0, false, false); static SwitchOption interfaceallowedAll (interfaceallowed, "All", "Allow all leptons as outgoing particles", 0); static SwitchOption interfaceallowedCharged (interfaceallowed, "Charged", "Only charged leptons as outgoing particles", 1); static SwitchOption interfaceallowedElectron (interfaceallowed, "Electron", "Only the electron and positron as outgoing leptons", 2); static SwitchOption interfaceallowedMuon (interfaceallowed, "Muon", "Only muons as outgoing particles", 3); static SwitchOption interfaceallowedTau (interfaceallowed, "Tau", "Only taus as outgoing particles", 4); static ClassDocumentation<MEee2gZ2ll> documentation ("The MEee2gZ2ll class implements the matrix element for" "e+e- to leptons via Z and photon exchange using helicity amplitude" "techniques"); } double MEee2gZ2ll::me2() const { int ie(0),ip(1),ilp(2),ilm(3); // get the order right if(mePartonData()[0]->id()!=11) swap(ie,ip); if(mePartonData()[2]->id()<0) swap(ilm,ilp); vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; SpinorWaveFunction ein (meMomenta()[ie ],mePartonData()[ie ],incoming); SpinorBarWaveFunction pin (meMomenta()[ip ],mePartonData()[ip ],incoming); SpinorBarWaveFunction ilmout(meMomenta()[ilm],mePartonData()[ilm],outgoing); SpinorWaveFunction ilpout(meMomenta()[ilp],mePartonData()[ilp],outgoing); for(unsigned int ix=0;ix<2;++ix) { ein.reset(ix) ;fin.push_back( ein ); pin.reset(ix) ;ain.push_back( pin ); ilmout.reset(ix);fout.push_back(ilmout); ilpout.reset(ix);aout.push_back(ilpout); } // compute the matrix element double me,lastCont,lastBW; HelicityME(fin,ain,fout,aout,me,lastCont,lastBW); // save the components DVector save; save.push_back(lastCont); save.push_back(lastBW); meInfo(save); // return the answer return me; } ProductionMatrixElement MEee2gZ2ll::HelicityME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, vector<SpinorBarWaveFunction> & fout, vector<SpinorWaveFunction> & aout, double & me,double & cont, double & BW ) const { // the particles should be in the order // for the incoming // 0 incoming fermion (u spinor) // 1 incoming antifermion (vbar spinor) // for the outgoing // 0 outgoing fermion (ubar spinor) // 1 outgoing antifermion (v spinor) // me to be returned ProductionMatrixElement output(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); ProductionMatrixElement gamma (PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); ProductionMatrixElement Zboson(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); // // wavefunctions for the intermediate particles VectorWaveFunction interZ,interG; // temporary storage of the different diagrams Complex diag1,diag2; // sum over helicities to get the matrix element unsigned int inhel1,inhel2,outhel1,outhel2; double total[3]={0.,0.,0.}; for(inhel1=0;inhel1<2;++inhel1) { for(inhel2=0;inhel2<2;++inhel2) { // intermediate Z interZ = _theFFZVertex->evaluate(sHat(),1,_Z0,fin[inhel1],ain[inhel2]); // intermediate photon interG = _theFFPVertex->evaluate(sHat(),1,_gamma,fin[inhel1],ain[inhel2]); for(outhel1=0;outhel1<2;++outhel1) { for(outhel2=0;outhel2<2;++outhel2) { // first the Z exchange diagram diag1 = _theFFZVertex->evaluate(sHat(),aout[outhel2],fout[outhel1], interZ); // then the photon exchange diagram diag2 = _theFFPVertex->evaluate(sHat(),aout[outhel2],fout[outhel1], interG); // add up squares of individual terms total[1] += norm(diag1); Zboson(inhel1,inhel2,outhel1,outhel2) = diag1; total[2] += norm(diag2); gamma (inhel1,inhel2,outhel1,outhel2) = diag2; // the full thing including interference diag1 += diag2; total[0] += norm(diag1); output(inhel1,inhel2,outhel1,outhel2) = diag1; } } } } // results for(int ix=0;ix<3;++ix) total[ix] *= 0.25; tcPolarizedBeamPDPtr beam[2] = {dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[0]), dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[1])}; if( beam[0] || beam[1] ) { RhoDMatrix rho[2] = {beam[0] ? beam[0]->rhoMatrix() : RhoDMatrix(mePartonData()[0]->iSpin()), beam[1] ? beam[1]->rhoMatrix() : RhoDMatrix(mePartonData()[1]->iSpin())}; total[0] = output.average(rho[0],rho[1]); total[1] = Zboson.average(rho[0],rho[1]); total[2] = gamma .average(rho[0],rho[1]); } cont = total[2]; BW = total[1]; me = total[0]; return output; } void MEee2gZ2ll::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first);hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]);hard.push_back(sub->outgoing()[1]); if(hard[0]->id()<hard[1]->id()) swap(hard[0],hard[1]); if(hard[2]->id()<hard[3]->id()) swap(hard[2],hard[3]); vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; SpinorWaveFunction( fin ,hard[0],incoming,false,true); SpinorBarWaveFunction(ain ,hard[1],incoming,false,true); SpinorBarWaveFunction(fout,hard[2],outgoing,true ,true); SpinorWaveFunction( aout,hard[3],outgoing,true ,true); // calculate the matrix element double me,cont,BW; ProductionMatrixElement prodme=HelicityME(fin,ain,fout,aout,me,cont,BW); // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(prodme); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) { tSpinPtr spin = hard[ix]->spinInfo(); if(ix<2) { tcPolarizedBeamPDPtr beam = dynamic_ptr_cast<tcPolarizedBeamPDPtr>(hard[ix]->dataPtr()); if(beam) spin->rhoMatrix() = beam->rhoMatrix(); } spin->productionVertex(hardvertex); } } void MEee2gZ2ll::doinit() { HwMEBase::doinit(); // set the particle data objects _Z0=getParticleData(ThePEG::ParticleID::Z0); _gamma=getParticleData(ThePEG::ParticleID::gamma); // cast the SM pointer to the Herwig SM pointer tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(hwsm) { _theFFZVertex = hwsm->vertexFFZ(); _theFFPVertex = hwsm->vertexFFP(); } else { throw InitException() << "Wrong type of StandardModel object in " << "MEee2gZ2ll::doinit() the Herwig++ version must be used" << Exception::runerror; } } void MEee2gZ2ll::rebind(const TranslationMap & trans) { _theFFZVertex = trans.translate(_theFFZVertex); _theFFPVertex = trans.translate(_theFFPVertex); _Z0 = trans.translate(_Z0); _gamma = trans.translate(_gamma); HwMEBase::rebind(trans); } IVector MEee2gZ2ll::getReferences() { IVector ret = HwMEBase::getReferences(); ret.push_back(_theFFZVertex); ret.push_back(_theFFPVertex); ret.push_back(_Z0 ); ret.push_back(_gamma ); return ret; } ����������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/MEee2gZ2qq.h�����������������������������������������������0000644�0001750�0001750�00000034512�11754474775�023017� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEee2gZ2qq.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEee2gZ2qq_H #define HERWIG_MEee2gZ2qq_H // // This is the declaration of the MEee2gZ2qq class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/Rebinder.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" namespace Herwig { using namespace ThePEG; /** * The MEee2gZ2qq class implements the matrix element * for \f$e^+e^-\to Z/\gamma \to q\bar{q}\f$ including spin correlations. * The class includes greater control over the type of quark produced than is available * in the corresponding matrix element from ThePEG, in addition to spin correlations. * * @see \ref MEee2gZ2qqInterfaces "The interfaces" * defined for MEee2gZ2qq. */ class MEee2gZ2qq: public HwMEBase { public: /** * The default constructor. */ MEee2gZ2qq() : minflav_(1), maxflav_(5), massopt_(1), pTmin_(GeV), preFactor_(6.) {} /** * Members for hard corrections to the emission of QCD radiation */ //@{ /** * Has a POWHEG style correction */ virtual bool hasPOWHEGCorrection() {return true;} /** * Has an old fashioned ME correction */ virtual bool hasMECorrection() {return true;} /** * Initialize the ME correction */ virtual void initializeMECorrection(ShowerTreePtr, double &, double & ); /** * Apply the hard matrix element correction to a given hard process or decay */ virtual void applyHardMatrixElementCorrection(ShowerTreePtr); /** * Apply the soft matrix element correction * @param initial The particle from the hard process which started the * shower * @param parent The initial particle in the current branching * @param br The branching struct * @return If true the emission should be vetoed */ virtual bool softMatrixElementVeto(ShowerProgenitorPtr initial, ShowerParticlePtr parent, Branching br); /** * Apply the POWHEG style correction */ virtual HardTreePtr generateHardest(ShowerTreePtr); //@} /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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 {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans) ; /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} protected: /** * Calculate the matrix element for \f$e^-e^-\to q \bar q\f$. * @param partons The incoming and outgoing particles * @param momenta The momenta of the incoming and outgoing particles * @param first Whether or not to calculate the spin correlations */ double loME(const vector<cPDPtr> & partons, const vector<Lorentz5Momentum> & momenta, bool first) const; /** * Member to calculate the matrix element * @param fin Spinors for incoming fermion * @param ain Spinors for incoming antifermion * @param fout Spinors for outgoing fermion * @param aout Spinors for outgong antifermion * @param me Spin summed Matrix element * @param cont The continuum piece of the matrix element * @param BW The Z piece of the matrix element */ ProductionMatrixElement HelicityME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, vector<SpinorBarWaveFunction> & fout, vector<SpinorWaveFunction> & aout, double & me, double & cont, double & BW ) const; /** * The ratio of the matrix element for one additional jet over the * leading order result. In practice * \f[\frac{\hat{s}|\overline{\mathcal{M}}|^2_2|D_{\rm emit}|}{4\pi C_F\alpha_S|\overline{\mathcal{M}}|^2_3\left(|D_{\rm emit}|+|D_{\rm spect}|\right)}\f] * is returned where \f$\|\overline{\mathcal{M}}|^2\f$ is * the spin and colour summed/averaged matrix element. * @param partons The incoming and outgoing particles * @param momenta The momenta of the incoming and outgoing particles * @param iemitter Whether the quark or antiquark is regardede as the emitter * @param subtract Whether or not to subtract the relevant dipole term */ double meRatio(vector<cPDPtr> partons, vector<Lorentz5Momentum> momenta, unsigned int iemitter, bool subtract =false) const; /** * Calculate the matrix element for \f$e^-e^-\to q \bar q g\f$. * @param partons The incoming and outgoing particles * @param momenta The momenta of the incoming and outgoing particles */ InvEnergy2 realME(const vector<cPDPtr> & partons, const vector<Lorentz5Momentum> & momenta) const; private: /** * Apply the hard matrix element */ vector<Lorentz5Momentum> applyHard(const ParticleVector &p); /** * Get the weight for hard emission */ double getHard(double &, double &); /** * Set the \f$\rho\f$ parameter */ void setRho(double); /** * Set the \f$\tilde{\kappa}\f$ parameters symmetrically */ void setKtildeSymm(); /** * Set second \f$\tilde{\kappa}\f$, given the first. */ void setKtilde2(); /** * Translate the variables from \f$x_q,x_{\bar{q}}\f$ to \f$\tilde{\kappa},z\f$ */ //@{ /** * Calculate \f$z\f$. */ double getZfromX(double, double); /** * Calculate \f$\tilde{\kappa}\f$. */ double getKfromX(double, double); //@} /** * Calculate \f$x_{q},x_{\bar{q}}\f$ from \f$\tilde{\kappa},z\f$. * @param kt \f$\tilde{\kappa}\f$ * @param z \f$z\f$ * @param x \f$x_{q}\f$ * @param xbar \f$x_{\bar{q}}\f$ */ void getXXbar(double kt, double z, double & x, double & xbar); /** * Soft weight */ //@{ /** * Soft quark weight calculated from \f$x_{q},x_{\bar{q}}\f$ * @param x \f$x_{q}\f$ * @param xbar \f$x_{\bar{q}}\f$ */ double qWeight(double x, double xbar); /** * Soft antiquark weight calculated from \f$x_{q},x_{\bar{q}}\f$ * @param x \f$x_{q}\f$ * @param xbar \f$x_{\bar{q}}\f$ */ double qbarWeight(double x, double xbar); /** * Soft quark weight calculated from \f$\tilde{q},z\f$ * @param qtilde \f$\tilde{q}\f$ * @param z \f$z\f$ */ double qWeightX(Energy qtilde, double z); /** * Soft antiquark weight calculated from \f$\tilde{q},z\f$ * @param qtilde \f$\tilde{q}\f$ * @param z \f$z\f$ */ double qbarWeightX(Energy qtilde, double z); //@} /** * ???? */ double u(double); /** * Vector and axial vector parts of the matrix element */ //@{ /** * Vector part of the matrix element */ double MEV(double, double); /** * Axial vector part of the matrix element */ double MEA(double, double); /** * The matrix element, given \f$x_1\f$, \f$x_2\f$. * @param x1 \f$x_1\f$ * @param x2 \f$x_2\f$ */ double PS(double x1, double x2); //@} protected: /** * Pointer to the fermion-antifermion Z vertex */ AbstractFFVVertexPtr FFZVertex() const {return FFZVertex_;} /** * Pointer to the fermion-antifermion photon vertex */ AbstractFFVVertexPtr FFPVertex() const {return FFPVertex_;} /** * Pointer to the particle data object for the Z */ PDPtr Z0() const {return Z0_;} /** * Pointer to the particle data object for the photon */ PDPtr gamma() const {return gamma_;} /** * Pointer to the particle data object for the gluon */ PDPtr gluon() const {return gluon_;} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEee2gZ2qq> initMEee2gZ2qq; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEee2gZ2qq & operator=(const MEee2gZ2qq &); private: /** * Pointer to the fermion-antifermion Z vertex */ AbstractFFVVertexPtr FFZVertex_; /** * Pointer to the fermion-antifermion photon vertex */ AbstractFFVVertexPtr FFPVertex_; /** * Pointer to the fermion-antifermion photon vertex */ AbstractFFVVertexPtr FFGVertex_; /** * Pointer to the particle data object for the Z */ PDPtr Z0_; /** * Pointer to the particle data object for the photon */ PDPtr gamma_; /** * Pointer to the particle data object for the gluon */ PDPtr gluon_; /** * The minimum PDG of the quarks to be produced */ int minflav_; /** * The maximum PDG of the quarks to be produced */ int maxflav_; /** * Option for the treatment of the top quark mass */ unsigned int massopt_; /** * CM energy */ Energy d_Q_; /** * Quark mass */ Energy d_m_; /** * The rho parameter */ double d_rho_; /** * The v parameter */ double d_v_; /** * The initial kappa-tilde values for radiation from the quark */ double d_kt1_; /** * The initial kappa-tilde values for radiation from the antiquark */ double d_kt2_; /** * Cut-off parameter */ static const double EPS_; /** * Pointer to the coupling */ ShowerAlphaPtr alpha_; private: /** * Variables for the POWHEG style corrections */ //@{ /** * The cut off on pt, assuming massless quarks. */ Energy pTmin_; /** * Overestimate for the prefactor */ double preFactor_; /** * ParticleData objects for the partons */ vector<cPDPtr> partons_; /** * Momenta of the leading-order partons */ vector<Lorentz5Momentum> loMomenta_; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEee2gZ2qq. */ template <> struct BaseClassTrait<Herwig::MEee2gZ2qq,1> { /** Typedef of the first base class of MEee2gZ2qq. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEee2gZ2qq class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEee2gZ2qq> : public ClassTraitsBase<Herwig::MEee2gZ2qq> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEee2gZ2qq"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the MEee2gZ2qq class and any other class on which it depends * (except the base class). */ static string library() { return "HwMELepton.so"; } }; /** @endcond */ } #endif /* HERWIG_MEee2gZ2qq_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/MEee2ZH.cc�������������������������������������������������0000644�0001750�0001750�00000004123�11754474775�022465� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEee2ZH class. // #include "MEee2ZH.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/PDT/DecayMode.h" #include "Herwig++/Models/StandardModel/StandardModel.h" using namespace Herwig; NoPIOClassDescription<MEee2ZH> MEee2ZH::initMEee2ZH; // Definition of the static class description member. void MEee2ZH::Init() { static ClassDocumentation<MEee2ZH> documentation ("There is no documentation for the MEee2ZH class"); } void MEee2ZH::getDiagrams() const { tcPDPtr eplus = getParticleData(ParticleID::eplus ); tcPDPtr eminus = getParticleData(ParticleID::eminus ); // find possible Z decays typedef Selector<tDMPtr> DecaySelector; DecaySelector Zdec = Z0()->decaySelector(); vector<PDPair> Zdecays; for(DecaySelector::const_iterator cit=Zdec.begin();cit!=Zdec.end();++cit) { if(cit->second->orderedProducts().size()!=2) continue; if(cit->second->orderedProducts()[0]->id()>0) Zdecays.push_back(make_pair(cit->second->orderedProducts()[0], cit->second->orderedProducts()[1])); else Zdecays.push_back(make_pair(cit->second->orderedProducts()[1], cit->second->orderedProducts()[0])); } // create the diagrams for(unsigned int ix=0;ix<Zdecays.size();++ix) { add(new_ptr((Tree2toNDiagram(2), eminus, eplus, 1, Z0(), 3, higgs(), 3, Z0(), 5, Zdecays[ix].first,5, Zdecays[ix].second,-1))); } } void MEee2ZH::doinit() { // get the vedrtex pointers from the SM object tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if(!hwsm) throw InitException() << "Wrong type of StandardModel object in " << "MEeeto2ZH::doinit() the Herwig++" << " version must be used" << Exception::runerror; // set the vertex setWWHVertex(hwsm->vertexWWH()); higgs(getParticleData(ParticleID::h0)); MEfftoVH::doinit(); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/MEee2VV.h��������������������������������������������������0000644�0001750�0001750�00000015637�11754474775�022355� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEee2VV_H #define HERWIG_MEee2VV_H // // This is the declaration of the MEee2VV class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" namespace Herwig { using namespace ThePEG; /** * The MEee2VV class implements the matrix elements for * \f$e^+e^-\to W^+W^-/|^0Z^0\f$. * * @see \ref MEee2VVInterfaces "The interfaces" * defined for MEee2VV. */ class MEee2VV: public HwMEBase { public: /** * The default constructor. */ MEee2VV(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Used internally by generateKinematics, after calculating the * limits on cos(theta). */ virtual double getCosTheta(double cthmin, double cthmax, const double * r); /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Matrix element for \f$f\bar{f}\to W^+W^-\f$. * @param f1 Spinors for the incoming fermion * @param a1 Spinors for the incoming antifermion * @param v1 Polarization vector for the 1st outgoing boson * @param v2 Polarization vector for the 2nd outgoing boson */ double WWME(vector<SpinorWaveFunction> & f1, vector<SpinorBarWaveFunction> & a1, vector<VectorWaveFunction> & v1, vector<VectorWaveFunction> & v2) const; /** * Matrix element for \f$f\bar{f}\to Z^0Z^0\f$. * @param f1 Spinors for the incoming fermion * @param a1 Spinors for the incoming antifermion * @param v1 Polarization vector for the 1st outgoing boson * @param v2 Polarization vector for the 2nd outgoing boson */ double ZZME(vector<SpinorWaveFunction> & f1, vector<SpinorBarWaveFunction> & a1, vector<VectorWaveFunction> & v1, vector<VectorWaveFunction> & v2) const; 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEee2VV> initMEee2VV; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEee2VV & operator=(const MEee2VV &); private: /** * Vertices */ //@{ /** * FFPVertex */ AbstractFFVVertexPtr FFPvertex_; /** * FFWVertex */ AbstractFFVVertexPtr FFWvertex_; /** * FFZVertex */ AbstractFFVVertexPtr FFZvertex_; /** * WWW Vertex */ AbstractVVVVertexPtr WWWvertex_; //@} /** * Processes */ unsigned int process_; /** * Treatment of the the W and Z masses */ unsigned int massOption_; /** * The matrix element */ mutable ProductionMatrixElement me_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEee2VV. */ template <> struct BaseClassTrait<Herwig::MEee2VV,1> { /** Typedef of the first base class of MEee2VV. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEee2VV class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEee2VV> : public ClassTraitsBase<Herwig::MEee2VV> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEee2VV"; } /** * The name of a file containing the dynamic library where the class * MEee2VV is implemented. It may also include several, space-separated, * libraries if the class MEee2VV depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMELepton.so"; } }; /** @endcond */ } #endif /* HERWIG_MEee2VV_H */ �������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/Makefile.am������������������������������������������������0000644�0001750�0001750�00000000456�11755414246�023044� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwMELepton.la HwMELepton_la_SOURCES = \ MEee2gZ2qq.h MEee2gZ2qq.cc\ MEee2gZ2ll.h MEee2gZ2ll.cc\ MEee2ZH.h MEee2ZH.cc\ MEee2HiggsVBF.h MEee2HiggsVBF.cc \ MEee2VV.h MEee2VV.cc \ MEee2VectorMeson.h MEee2VectorMeson.cc HwMELepton_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 4:0:1 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Lepton/MEee2HiggsVBF.h��������������������������������������������0000644�0001750�0001750�00000006114�11754474775�023407� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEee2HiggsVBF_H #define HERWIG_MEee2HiggsVBF_H // // This is the declaration of the MEee2HiggsVBF class. // #include "Herwig++/MatrixElement/MEfftoffH.h" namespace Herwig { using namespace ThePEG; /** * The MEee2HiggsVBF class * * @see \ref MEee2HiggsVBFInterfaces "The interfaces" * defined for MEee2HiggsVBF. */ class MEee2HiggsVBF: public MEfftoffH { public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; //@} public: /** * 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 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(); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static NoPIOClassDescription<MEee2HiggsVBF> initMEee2HiggsVBF; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEee2HiggsVBF & operator=(const MEee2HiggsVBF &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEee2HiggsVBF. */ template <> struct BaseClassTrait<Herwig::MEee2HiggsVBF,1> { /** Typedef of the first base class of MEee2HiggsVBF. */ typedef Herwig::MEfftoffH NthBase; }; /** This template specialization informs ThePEG about the name of * the MEee2HiggsVBF class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEee2HiggsVBF> : public ClassTraitsBase<Herwig::MEee2HiggsVBF> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEee2HiggsVBF"; } /** * The name of a file containing the dynamic library where the class * MEee2HiggsVBF is implemented. It may also include several, space-separated, * libraries if the class MEee2HiggsVBF depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMELepton.so"; } }; /** @endcond */ } #endif /* HERWIG_MEee2HiggsVBF_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/MEfftoffH.cc������������������������������������������������������0000644�0001750�0001750�00000040055�11754474776�021676� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEfftoffH class. // #include "MEfftoffH.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Cuts/Cuts.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "ThePEG/PDF/PolarizedBeamParticleData.h" using namespace Herwig; void MEfftoffH::persistentOutput(PersistentOStream & os) const { os << _shapeopt << _process << _wplus << _wminus << _z0 << _vertexFFW << _vertexFFZ << _vertexWWH << _higgs << ounit(_mh,GeV) << ounit(_wh,GeV) << _hmass << _maxflavour << _minflavour; } void MEfftoffH::persistentInput(PersistentIStream & is, int) { is >> _shapeopt >> _process >> _wplus >> _wminus >> _z0 >> _vertexFFW >> _vertexFFZ >> _vertexWWH >> _higgs >> iunit(_mh,GeV) >> iunit(_wh,GeV) >> _hmass >> _maxflavour >> _minflavour; } AbstractClassDescription<MEfftoffH> MEfftoffH::initMEfftoffH; // Definition of the static class description member. void MEfftoffH::Init() { static ClassDocumentation<MEfftoffH> documentation ("The MEfftoffH class is the base class for VBF processes in Herwig++"); static Switch<MEfftoffH,unsigned int> interfaceShapeOption ("ShapeScheme", "Option for the treatment of the Higgs resonance shape", &MEfftoffH::_shapeopt, 2, false, false); static SwitchOption interfaceStandardShapeFixed (interfaceShapeOption, "FixedBreitWigner", "Breit-Wigner s-channel resonance", 1); static SwitchOption interfaceStandardShapeRunning (interfaceShapeOption, "MassGenerator", "Use the mass generator to give the shape", 2); static SwitchOption interfaceStandardShapeOnShell (interfaceShapeOption, "OnShell", "Produce an on-shell Higgs boson", 0); static Switch<MEfftoffH,unsigned int> interfaceProcess ("Process", "Which processes to include", &MEfftoffH::_process, 0, false, false); static SwitchOption interfaceProcessBoth (interfaceProcess, "Both", "Include both WW and ZZ processes", 0); static SwitchOption interfaceProcessWW (interfaceProcess, "WW", "Only include WW processes", 1); static SwitchOption interfaceProcessZZ (interfaceProcess, "ZZ", "Only include ZZ processes", 2); static Parameter<MEfftoffH,unsigned int> interfaceMaxFlavour ( "MaxFlavour", "The heaviest incoming quark flavour this matrix element is allowed to handle " "(if applicable).", &MEfftoffH::_maxflavour, 5, 0, 5, false, false, true); static Parameter<MEfftoffH,unsigned int> interfaceMinFlavour ( "MinFlavour", "The lightest incoming quark flavour this matrix element is allowed to handle " "(if applicable).", &MEfftoffH::_minflavour, 1, 1, 5, false, false, true); } unsigned int MEfftoffH::orderInAlphaS() const { return 0; } unsigned int MEfftoffH::orderInAlphaEW() const { return 3; } int MEfftoffH::nDim() const { return 4 + int(_shapeopt>0); } Energy2 MEfftoffH::scale() const { return sqr(_mh); } void MEfftoffH::setKinematics() { HwMEBase::setKinematics(); } Selector<MEBase::DiagramIndex> MEfftoffH::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; if(diags.size()==1) { sel.insert(1.0, 0); } else { for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if(_swap&&diags[i]->id()==-2) sel.insert(1.0, i); else if(!_swap&&diags[i]->id()==-1) sel.insert(1.0, i); } } return sel; } Selector<const ColourLines *> MEfftoffH::colourGeometries(tcDiagPtr ) const { static ColourLines c0(""); static ColourLines c1("1 5, 4 6"); static ColourLines c2("1 5, -4 -6"); static ColourLines c3("-1 -5, 4 6"); static ColourLines c4("-1 -5, -4 -6"); Selector<const ColourLines *> sel; if(mePartonData()[0]->coloured()) { if(mePartonData()[0]->id()>0) { if(mePartonData()[1]->id()>0) sel.insert(1.0, &c1); else sel.insert(1.0, &c2); } else { if(mePartonData()[1]->id()>0) sel.insert(1.0, &c3); else sel.insert(1.0, &c4); } } else sel.insert(1.0, &c0); return sel; } void MEfftoffH::doinit() { HwMEBase::doinit(); // get the vertex pointers from the SM object tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(hwsm) { _vertexFFW = hwsm->vertexFFW(); _vertexFFZ = hwsm->vertexFFZ(); } else throw InitException() << "Wrong type of StandardModel object in " << "MEfftoffH::doinit() the Herwig++" << " version must be used" << Exception::runerror; // get the particle data objects for the intermediates _wplus = getParticleData(ParticleID::Wplus ); _wminus = getParticleData(ParticleID::Wminus); _z0 = getParticleData(ParticleID::Z0); _mh = _higgs->mass(); _wh = _higgs->width(); if(_higgs->massGenerator()) { _hmass=dynamic_ptr_cast<GenericMassGeneratorPtr>(_higgs->massGenerator()); } if(_shapeopt==2&&!_hmass) throw InitException() << "If using the mass generator for the line shape in MEfftoffH::doinit()" << "the mass generator must be an instance of the GenericMassGenerator class" << Exception::runerror; } double MEfftoffH::me2() const { vector<SpinorWaveFunction> f1,f2; vector<SpinorBarWaveFunction> a1,a2; SpinorWaveFunction fin1,fin2; SpinorBarWaveFunction ain1,ain2; bool swap1,swap2; if(_swap) { if(mePartonData()[0]->id()>0) { swap1 = false; fin1 = SpinorWaveFunction(meMomenta()[0],mePartonData()[0],incoming); ain1 = SpinorBarWaveFunction(meMomenta()[3],mePartonData()[3],outgoing); } else { swap1 = true; fin1 = SpinorWaveFunction(meMomenta()[3],mePartonData()[3],outgoing); ain1 = SpinorBarWaveFunction(meMomenta()[0],mePartonData()[0],incoming); } if(mePartonData()[1]->id()>0) { swap2 = false; fin2 = SpinorWaveFunction(meMomenta()[1],mePartonData()[1],incoming); ain2 = SpinorBarWaveFunction(meMomenta()[2],mePartonData()[2],outgoing); } else { swap2 = true; fin2 = SpinorWaveFunction(meMomenta()[2],mePartonData()[2],outgoing); ain2 = SpinorBarWaveFunction(meMomenta()[1],mePartonData()[1],incoming); } } else { if(mePartonData()[0]->id()>0) { swap1 = false; fin1 = SpinorWaveFunction(meMomenta()[0],mePartonData()[0],incoming); ain1 = SpinorBarWaveFunction(meMomenta()[2],mePartonData()[2],outgoing); } else { swap1 = true; fin1 = SpinorWaveFunction(meMomenta()[2],mePartonData()[2],outgoing); ain1 = SpinorBarWaveFunction(meMomenta()[0],mePartonData()[0],incoming); } if(mePartonData()[1]->id()>0) { swap2 = false; fin2 = SpinorWaveFunction(meMomenta()[1],mePartonData()[1],incoming); ain2 = SpinorBarWaveFunction(meMomenta()[3],mePartonData()[3],outgoing); } else { swap2 = true; fin2 = SpinorWaveFunction(meMomenta()[3],mePartonData()[3],outgoing); ain2 = SpinorBarWaveFunction(meMomenta()[1],mePartonData()[1],incoming); } } for(unsigned int ix=0;ix<2;++ix) { fin1.reset(ix); f1.push_back(fin1); fin2.reset(ix); f2.push_back(fin2); ain1.reset(ix); a1.push_back(ain1); ain2.reset(ix); a2.push_back(ain2); } return helicityME(f1,f2,a1,a2,swap1,swap2,false)*sHat()*UnitRemoval::InvE2; } double MEfftoffH::helicityME(vector<SpinorWaveFunction> & f1 , vector<SpinorWaveFunction> & f2 , vector<SpinorBarWaveFunction> & a1, vector<SpinorBarWaveFunction> & a2, bool swap1, bool swap2, bool calc) const { // scale Energy2 mb2(scale()); // matrix element to be stored ProductionMatrixElement menew(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half,PDT::Spin0); // identify the bosons and which vertices to use tcPDPtr vec[2]; AbstractFFVVertexPtr vertex[2]; for(unsigned int ix=0;ix<2;++ix) { int icharge; if(_swap) icharge = mePartonData()[ix]->iCharge()-mePartonData()[3-int(ix)]->iCharge(); else icharge = mePartonData()[ix]->iCharge()-mePartonData()[ix+2]->iCharge(); if(icharge==0) vec[ix] = _z0; else if(icharge>0) vec[ix] = _wplus; else vec[ix] = _wminus; vertex[ix] = vec[ix]==_z0 ? _vertexFFZ : _vertexFFW; } // wavefunction for the scalar ScalarWaveFunction higgs(meMomenta()[4],mePartonData()[4],1.,outgoing); // calculate the matrix element VectorWaveFunction inter[2]; Complex diag; double me(0.); for(unsigned int i1=0;i1<2;++i1) { for(unsigned int i2=0;i2<2;++i2) { // wavefunction for the 1st intermediate vector inter[0] = vertex[0]->evaluate(mb2,1,vec[0],f1[i1],a1[i2]); for(unsigned int i3=0;i3<2;++i3) { for(unsigned int i4=0;i4<2;++i4) { // wavefunction for the 2nd intermediate vector inter[1] = vertex[1]->evaluate(mb2,1,vec[1],f2[i3],a2[i4]); // matrix element diag = _vertexWWH->evaluate(mb2,inter[0],inter[1],higgs); me += norm(diag); // store matrix element if needed unsigned int ihel[5]={i1,i3,i2,i4,0}; if(swap1) swap(ihel[0],ihel[2]); if(swap2) swap(ihel[1],ihel[3]); menew(ihel[0],ihel[1],ihel[2],ihel[3],ihel[4]) = diag; } } } } // spin factor me *=0.25; tcPolarizedBeamPDPtr beam[2] = {dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[0]), dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[1])}; if( beam[0] || beam[1] ) { RhoDMatrix rho[2] = {beam[0] ? beam[0]->rhoMatrix() : RhoDMatrix(mePartonData()[0]->iSpin()), beam[1] ? beam[1]->rhoMatrix() : RhoDMatrix(mePartonData()[1]->iSpin())}; me = menew.average(rho[0],rho[1]); } // test of the matrix element for e+e- > nu nubar H // Energy2 mw2 = sqr(WPlus()->mass()); // Energy2 t1 = (meMomenta()[0]-meMomenta()[2]).m2()-mw2; // Energy2 t2 = (meMomenta()[1]-meMomenta()[3]).m2()-mw2; // InvEnergy2 metest = 64.*pow(Constants::pi*standardModel()->alphaEM(mb2)/ // standardModel()->sin2ThetaW(),3)*mw2/sqr(t1)/sqr(t2)* // (meMomenta()[0]*meMomenta()[3])*(meMomenta()[1]*meMomenta()[2]); // cerr << "testing matrix element " << me/metest*UnitRemoval::InvE2 << "\n"; if(calc) _me.reset(menew); return me; } bool MEfftoffH::generateKinematics(const double * r) { // set the jacobian to 1 jacobian(1.); // roots Energy roots(sqrt(sHat())); // generate the Higgs mass if needed Energy mh(_mh); if(_shapeopt!=0) { Energy mhmax = min(roots ,mePartonData()[4]->massMax()); Energy mhmin = max(ZERO,mePartonData()[4]->massMin()); if(mhmax<=mhmin) return false; double rhomin = atan2((sqr(mhmin)-sqr(_mh)), _mh*_wh); double rhomax = atan2((sqr(mhmax)-sqr(_mh)), _mh*_wh); mh = sqrt(_mh*_wh*tan(rhomin+r[4]*(rhomax-rhomin))+sqr(_mh)); jacobian(jacobian()*(rhomax-rhomin)); } if(mh>roots) return false; // generate p1 by transform to eta = 1-2p1/sqrt s double r0=r[0]; _swap = false; if(_process==0&&mePartonData()[0]->id()!=mePartonData()[1]->id()&& double(mePartonData()[0]->id())/double(mePartonData()[1]->id())>0.) { if(mePartonData()[0]->id()==mePartonData()[3]->id()&& mePartonData()[1]->id()==mePartonData()[2]->id()) { jacobian(2.*jacobian()); if(r0<=0.5) { r0*=2.; _swap = false; } else { r0 = (r0-0.5)*2.; _swap = true; } } } // and generate according to deta/eta double eta = pow(mh/roots,2.*r0); jacobian(-jacobian()*eta*2.*log(mh/roots)); Energy p1 = 0.5*roots*(1.-eta); // generate the value of cos theta2 first as no cut double ctheta[2]; double ctmin = -1.0,ctmax = 1.0; // cos theta 1 ctheta[0] = ctmin+r[1]*(ctmax-ctmin); // cos theta 2 ctheta[1] = ctmin+r[2]*(ctmax-ctmin); jacobian(sqr(ctmax-ctmin)*jacobian()); // generate azimuthal angle between 1 and 2 double phi12 = r[3]*Constants::twopi; // sins double stheta[2] = {sqrt(1.-sqr(ctheta[0])),sqrt(1.-sqr(ctheta[1]))}; // and angle between them double cost12 = stheta[0]*stheta[1]*cos(phi12)+ctheta[0]*ctheta[1]; // momentum of 2 Energy p2 = 0.5*(sHat()-2.*roots*p1-sqr(mh))/(roots-p1*(1.-cost12)); if(p2<=ZERO) return false; // construct the momenta // first outgoing particle if(_swap) { meMomenta()[3].setX(stheta[0]*p1); meMomenta()[3].setY(ZERO); meMomenta()[3].setZ(ctheta[0]*p1); meMomenta()[3].setT(p1); meMomenta()[3].setMass(ZERO); // second outgoing particle meMomenta()[2].setX(stheta[1]*cos(phi12)*p2); meMomenta()[2].setY(stheta[1]*sin(phi12)*p2); meMomenta()[2].setZ(ctheta[1]*p2); meMomenta()[2].setT(p2); meMomenta()[2].setMass(ZERO); } else { meMomenta()[2].setX(stheta[0]*p1); meMomenta()[2].setY(ZERO); meMomenta()[2].setZ(ctheta[0]*p1); meMomenta()[2].setT(p1); meMomenta()[2].setMass(ZERO); // second outgoing particle meMomenta()[3].setX(stheta[1]*cos(phi12)*p2); meMomenta()[3].setY(stheta[1]*sin(phi12)*p2); meMomenta()[3].setZ(ctheta[1]*p2); meMomenta()[3].setT(p2); meMomenta()[3].setMass(ZERO); } // finally the higgs meMomenta()[4].setX(-meMomenta()[2].x()-meMomenta()[3].x()); meMomenta()[4].setY(-meMomenta()[2].y()-meMomenta()[3].y()); meMomenta()[4].setZ(-meMomenta()[2].z()-meMomenta()[3].z()); meMomenta()[4].setMass(mh); meMomenta()[4].rescaleEnergy(); // azimuth of the whole system double phi = UseRandom::rnd()*Constants::twopi; // and apply rotation for(unsigned int ix=2;ix<5;++ix) meMomenta()[ix].rotateZ(phi); // check cuts vector<LorentzMomentum> out; tcPDVector tout; for(unsigned int ix=2;ix<5;++ix) { out .push_back(meMomenta()[ix]); tout.push_back(mePartonData()[ix]); } if ( !lastCuts().passCuts(tout, out, mePartonData()[0], mePartonData()[1]) ) return false; // final bits of the jacobian Energy2 dot = _swap? meMomenta()[2]*meMomenta()[4] : meMomenta()[3]*meMomenta()[4]; jacobian(jacobian()*p1*sqr(p2)/roots/dot); return true; } CrossSection MEfftoffH::dSigHatDR() const { using Constants::pi; // jacobian factor for the higgs InvEnergy2 bwfact = ZERO; Energy moff =meMomenta()[4].mass(); if(_shapeopt==1) { tPDPtr h0 = getParticleData(ParticleID::h0); bwfact = h0->generateWidth(moff)*moff/pi/ (sqr(sqr(moff)-sqr(_mh))+sqr(_mh*_wh)); } else if(_shapeopt==2) { bwfact = _hmass->BreitWignerWeight(moff); } double jac1 = _shapeopt!=0 ? double( bwfact*(sqr(sqr(moff)-sqr(_mh))+sqr(_mh*_wh))/(_mh*_wh)) : 1.; // cross section return jac1*me2()*jacobian()/pow(Constants::twopi,3)/32.*sqr(hbarc)/sHat(); } void MEfftoffH::constructVertex(tSubProPtr ) { // // extract the particles in the hard process // ParticleVector hard; // hard.push_back(sub->incoming().first); // hard.push_back(sub->incoming().second); // hard.push_back(sub->outgoing()[0]); // hard.push_back(sub->outgoing()[1]); // hard.push_back(sub->outgoing()[2]); // // ensure right order // if(hard[0]->id()<0) swap(hard[0],hard[1]); // if(hard[3]->id()==ParticleID::h0) swap(hard[2],hard[3]); // if(hard[4]->id()==ParticleID::h0) swap(hard[2],hard[4]); // if(hard[3]->id()<0) swap(hard[3],hard[4]); // vector<SpinorWaveFunction> fin,aout; // vector<SpinorBarWaveFunction> ain,fout; // SpinorWaveFunction( fin ,hard[0],incoming,false,true); // SpinorBarWaveFunction(ain ,hard[1],incoming,false,true); // ScalarWaveFunction( hard[2],outgoing,true,true); // SpinorBarWaveFunction(fout,hard[3],outgoing,true ,true); // SpinorWaveFunction( aout,hard[4],outgoing,true ,true); // helicityME(fin,ain,fout,aout,true); // // construct the vertex // HardVertexPtr hardvertex=new_ptr(HardVertex()); // // set the matrix element for the vertex // hardvertex->ME(_me); // // set the pointers and to and from the vertex // for(unsigned int ix=0;ix<5;++ix) { // hard[ix]->spinInfo()->productionVertex(hardvertex); // } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Makefile.in�������������������������������������������������������0000644�0001750�0001750�00000057660�11756461677�021640� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwME_la_LIBADD = am_libHwME_la_OBJECTS = HwMEBase.lo MEfftoVH.lo MEfftoffH.lo \ HardVertex.lo ProductionMatrixElement.lo DrellYanBase.lo libHwME_la_OBJECTS = $(am_libHwME_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwME_la_SOURCES) DIST_SOURCES = $(libHwME_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = General Lepton Hadron DIS Powheg Gamma Matchbox noinst_LTLIBRARIES = libHwME.la libHwME_la_SOURCES = \ HwMEBase.h HwMEBase.fh HwMEBase.cc \ MEfftoVH.h MEfftoVH.cc \ MEfftoffH.h MEfftoffH.cc \ HardVertex.fh HardVertex.h HardVertex.cc \ ProductionMatrixElement.h ProductionMatrixElement.cc \ DrellYanBase.h DrellYanBase.cc all: all-recursive .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwME.la: $(libHwME_la_OBJECTS) $(libHwME_la_DEPENDENCIES) $(EXTRA_libHwME_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwME_la_OBJECTS) $(libHwME_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DrellYanBase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HardVertex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwMEBase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEfftoVH.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEfftoffH.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ProductionMatrixElement.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done cscopelist-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \ cscopelist-recursive ctags-recursive install-am install-strip \ tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ clean-noinstLTLIBRARIES cscopelist cscopelist-recursive ctags \ ctags-recursive distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ��������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Gamma/������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464210�020561� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Gamma/MEGammaP2Jets.cc��������������������������������������������0000644�0001750�0001750�00000032060�11754474775�023404� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEGammaP2Jets class. // #include "MEGammaP2Jets.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/Models/StandardModel/StandardModel.h" using namespace Herwig; MEGammaP2Jets::MEGammaP2Jets() : _process(0), _minflavour(1) ,_maxflavour(5) { massOption(vector<unsigned int>(2,0)); } unsigned int MEGammaP2Jets::orderInAlphaS() const { return 1; } unsigned int MEGammaP2Jets::orderInAlphaEW() const { return 1; } Energy2 MEGammaP2Jets::scale() const { return 2.*sHat()*tHat()*uHat()/ (sqr(sHat())+sqr(tHat())+sqr(uHat())); } void MEGammaP2Jets::persistentOutput(PersistentOStream & os) const { os << _gluonvertex << _photonvertex << _process << _minflavour << _maxflavour; } void MEGammaP2Jets::persistentInput(PersistentIStream & is, int) { is >> _gluonvertex >> _photonvertex >> _process >> _minflavour >> _maxflavour; } ClassDescription<MEGammaP2Jets> MEGammaP2Jets::initMEGammaP2Jets; // Definition of the static class description member. void MEGammaP2Jets::Init() { static ClassDocumentation<MEGammaP2Jets> documentation ("The MEGammaP2Jets class implements the matrix elements" " for pointlike photon-hadron to jets."); static Parameter<MEGammaP2Jets,int> interfaceMinimumFlavour ("MinimumFlavour", "The minimum flavour of the quarks", &MEGammaP2Jets::_minflavour, 1, 1, 5, false, false, Interface::limited); static Parameter<MEGammaP2Jets,int> interfaceMaximumFlavour ("MaximumFlavour", "The maximum flavour of the quarks", &MEGammaP2Jets::_maxflavour, 5, 1, 5, false, false, Interface::limited); static Switch<MEGammaP2Jets,unsigned int> interfaceProcess ("Process", "The allowed partonic subprocesses", &MEGammaP2Jets::_process, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all the subprocesses", 0); static SwitchOption interfaceProcessGluon (interfaceProcess, "Gluon", "Only include the gamma g -> q qbar processes", 1); static SwitchOption interfaceProcessQuark (interfaceProcess, "Quark", "Only include the gamma q -> gluon q processes", 2); static SwitchOption interfaceProcessAntiQuark (interfaceProcess, "AntiQuark", "Only include the gamma qbar -> gluon qbar processes", 3); } void MEGammaP2Jets::getDiagrams() const { tcPDPtr g = getParticleData(ParticleID::g); tcPDPtr gm = getParticleData(ParticleID::gamma); for ( int i = _minflavour; i <= _maxflavour; ++i ) { tcPDPtr q = getParticleData(i); tcPDPtr qb = q->CC(); // gamma g -> q qbar if(_process==0||_process==1) { add(new_ptr((Tree2toNDiagram(3), gm, q , g, 1, q, 2, qb, -1))); add(new_ptr((Tree2toNDiagram(3), gm, qb, g, 2, q, 1, qb, -2))); } // gamma q -> g q if(_process==0||_process==2) { add(new_ptr((Tree2toNDiagram(3), gm, q , q, 2, g, 1, q, -3))); add(new_ptr((Tree2toNDiagram(2), gm, q , 1, q, 3, g, 3, q, -4))); } // gamma qbar -> g qbar if(_process==0||_process==3) { add(new_ptr((Tree2toNDiagram(3), gm, qb, qb, 2, g, 1, qb, -5))); add(new_ptr((Tree2toNDiagram(2), gm, qb, 1, qb, 3, g, 3, qb, -6))); } } } Selector<MEBase::DiagramIndex> MEGammaP2Jets::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if ( diags[i]->id() == -1 ) sel.insert(meInfo()[0], i); else if ( diags[i]->id() == -2 ) sel.insert(meInfo()[1], i); else if ( diags[i]->id() == -3 ) sel.insert(meInfo()[0], i); else if ( diags[i]->id() == -4 ) sel.insert(meInfo()[1], i); else if ( diags[i]->id() == -5 ) sel.insert(meInfo()[0], i); else if ( diags[i]->id() == -6 ) sel.insert(meInfo()[1], i); } return sel; } IBPtr MEGammaP2Jets::clone() const { return new_ptr(*this); } IBPtr MEGammaP2Jets::fullclone() const { return new_ptr(*this); } void MEGammaP2Jets::doinit() { // get the vedrtex pointers from the SM object tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(hwsm) { _gluonvertex = hwsm->vertexFFG(); _photonvertex = hwsm->vertexFFP(); } else throw InitException() << "Wrong type of StandardModel object in " << "MEGammaP2Jets::doinit() the Herwig++" << " version must be used" << Exception::runerror; // call the base class HwMEBase::doinit(); } Selector<const ColourLines *> MEGammaP2Jets::colourGeometries(tcDiagPtr diag) const { static ColourLines c1("3 2 4,-3 -5"); static ColourLines c2("3 4,-3 -2 -5"); static ColourLines c3("3 4,-4 2 5"); static ColourLines c4("2 3 4,-4 5"); static ColourLines c5("-3 -4,4 -2 -5"); static ColourLines c6("-2 -3 -4,4 -5"); Selector<const ColourLines *> sel; if ( diag->id() == -1 ) sel.insert(1.0, &c1); else if ( diag->id() == -2 ) sel.insert(1.0, &c2); else if ( diag->id() == -3 ) sel.insert(1.0, &c3); else if ( diag->id() == -4 ) sel.insert(1.0, &c4); else if ( diag->id() == -5 ) sel.insert(1.0, &c5); else if ( diag->id() == -6 ) sel.insert(1.0, &c6); return sel; } double MEGammaP2Jets::me2() const { // total matrix element and the various components double me(0.); // gamma g -> q qbar if(mePartonData()[1]->id()==ParticleID::g) { VectorWaveFunction gmin (meMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction glin (meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction qout (meMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction qbout(meMomenta()[3],mePartonData()[3],outgoing); vector<VectorWaveFunction> v1,v2; vector<SpinorBarWaveFunction> a3; vector<SpinorWaveFunction> f4; for(unsigned int ix=0;ix<2;++ix) { gmin.reset(2*ix); v1.push_back(gmin); glin.reset(2*ix); v2.push_back(glin); qout.reset(ix); a3.push_back(qout); qbout.reset(ix); f4.push_back(qbout); } // calculate the matrix element me = gammagluonME(v1,v2,a3,f4,false); } // gamma q -> g q else if(mePartonData()[1]->id()>0) { VectorWaveFunction gmin (meMomenta()[0],mePartonData()[0],incoming); SpinorWaveFunction qin (meMomenta()[1],mePartonData()[1],incoming); VectorWaveFunction glout(meMomenta()[2],mePartonData()[2],outgoing); SpinorBarWaveFunction qout (meMomenta()[3],mePartonData()[3],outgoing); vector<VectorWaveFunction> v1,v3; vector<SpinorWaveFunction> f2; vector<SpinorBarWaveFunction> f4; for(unsigned int ix=0;ix<2;++ix) { gmin.reset(2*ix); v1.push_back(gmin); qin.reset(ix); f2.push_back(qin); glout.reset(2*ix); v3.push_back(glout); qout.reset(ix); f4.push_back(qout); } me = gammaquarkME(v1,f2,v3,f4,false); } // gamma qbar -> g qbar else { VectorWaveFunction gmin (meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction qin (meMomenta()[1],mePartonData()[1],incoming); VectorWaveFunction glout(meMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction qout (meMomenta()[3],mePartonData()[3],outgoing); vector<VectorWaveFunction> v1,v3; vector<SpinorBarWaveFunction> a2; vector<SpinorWaveFunction> a4; for(unsigned int ix=0;ix<2;++ix) { gmin.reset(2*ix); v1.push_back(gmin); qin.reset(ix); a2.push_back(qin); glout.reset(2*ix); v3.push_back(glout); qout.reset(ix); a4.push_back(qout); } me = gammaantiquarkME(v1,a2,v3,a4,false); } return me; } double MEGammaP2Jets::gammagluonME(vector<VectorWaveFunction> & gmin, vector<VectorWaveFunction> & glin, vector<SpinorBarWaveFunction> & fout, vector<SpinorWaveFunction> & aout, bool calc) const { // the scale Energy2 mt(scale()); // storage of the helicity me if needed ProductionMatrixElement newme(PDT::Spin1,PDT::Spin1, PDT::Spin1Half,PDT::Spin1Half); // loop over the helicities SpinorWaveFunction inter; vector<double> me(3,0.); vector<Complex> diag(2); for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // first diagram inter = _gluonvertex->evaluate(mt,5,aout[ohel2].particle(), aout[ohel2],glin[ihel2]); diag[0] = _photonvertex->evaluate(0.*GeV2,inter,fout[ohel1], gmin[ihel1]); // second diagram inter = _photonvertex->evaluate(0.*GeV2,5,aout[ohel2].particle(), aout[ohel2],gmin[ihel1]); diag[1] = _gluonvertex->evaluate(mt,inter,fout[ohel1],glin[ihel2]); for(unsigned int ix=0;ix<2;++ix) me[ix] += norm(diag[ix]); diag[0]+=diag[1]; me[2] += norm(diag[0]); // matrix element if needed if(calc) newme(2*ihel1,2*ihel2,ohel1,ohel2)=diag[0]; } } } } // save the info on the diagrams if(!calc) { DVector save; save.push_back(me[0]); save.push_back(me[1]); meInfo(save); } // return the answer with colour and spin factors if(calc) _me.reset(newme); return 0.125*me[2]; } double MEGammaP2Jets::gammaquarkME(vector<VectorWaveFunction> & gmin, vector<SpinorWaveFunction> & fin, vector<VectorWaveFunction> & gout, vector<SpinorBarWaveFunction> & fout, bool calc) const { // the scale Energy2 mt(scale()); // storage of the helicity me if needed ProductionMatrixElement newme(PDT::Spin1,PDT::Spin1Half, PDT::Spin1,PDT::Spin1Half); // loop over the helicities SpinorWaveFunction inter; vector<double> me(3,0.); vector<Complex> diag(2); for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // first diagram inter = _gluonvertex->evaluate(mt,5,fin[ihel2].particle(), fin[ihel2],gout[ohel1]); diag[0] = _photonvertex->evaluate(0.*GeV2,inter,fout[ohel2],gmin[ihel1]); // second diagram inter = _photonvertex->evaluate(0.*GeV2,5,fin[ihel2].particle(), fin[ihel2],gmin[ihel1]); diag[1] = _gluonvertex->evaluate(mt,inter,fout[ohel2],gout[ohel1]); for(unsigned int ix=0;ix<2;++ix) me[ix] += norm(diag[ix]); diag[0]+=diag[1]; me[2] += norm(diag[0]); // matrix element if needed if(calc) newme(2*ihel1,ihel2,2*ohel1,ohel2)=diag[0]; } } } } // save the info on the diagrams if(!calc) { DVector save; save.push_back(me[0]); save.push_back(me[1]); meInfo(save); } // return the answer with colour and spin factors if(calc) _me.reset(newme); // // test vs the analytic result // double test = -8./3.*norm(_photonvertex->getNorm())*norm(_gluonvertex->getNorm()) // *sqr(int(mePartonData()[1]->iCharge()))/9. // *(uHat()/sHat()+sHat()/uHat()); // cerr << "testing the matrix element " << test << " " << me[2]/3. // << " " << test/me[2]*3. << "\n"; return me[2]/3.; } double MEGammaP2Jets::gammaantiquarkME(vector<VectorWaveFunction> & gmin, vector<SpinorBarWaveFunction> & fin, vector<VectorWaveFunction> & gout, vector<SpinorWaveFunction> & fout, bool calc) const { // the scale Energy2 mt(scale()); // storage of the helicity me if needed ProductionMatrixElement newme(PDT::Spin1,PDT::Spin1Half, PDT::Spin1,PDT::Spin1Half); // loop over the helicities SpinorBarWaveFunction inter; vector<double> me(3,0.); vector<Complex> diag(2); for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // first diagram inter = _gluonvertex->evaluate(mt,5,fin[ihel2].particle(), fin[ihel2],gout[ohel1]); diag[0] = _photonvertex->evaluate(0.*GeV2,fout[ohel2],inter,gmin[ihel1]); // second diagram inter = _photonvertex->evaluate(0.*GeV2,5,fin[ihel2].particle(), fin[ihel2],gmin[ihel1]); diag[1] = _gluonvertex->evaluate(mt,fout[ohel2],inter,gout[ohel1]); for(unsigned int ix=0;ix<2;++ix) me[ix] += norm(diag[ix]); diag[0]+=diag[1]; me[2] += norm(diag[0]); // matrix element if needed if(calc) newme(2*ihel1,ihel2,2*ohel1,ohel2)=diag[0]; } } } } // save the info on the diagrams if(!calc) { DVector save; save.push_back(me[0]); save.push_back(me[1]); meInfo(save); } // return the answer with colour and spin factors if(calc) _me.reset(newme); // test vs the analytic result // double test = -8./3.*norm(_photonvertex->getNorm())*norm(_gluonvertex->getNorm()) // *sqr(int(mePartonData()[1]->iCharge()))/9. // *(uHat()/sHat()+sHat()/uHat()); // cerr << "testing the matrix element " << test << " " << me[2]/3. // << " " << test/me[2]*3. << "\n"; return me[2]/3.; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Gamma/MEGammaGamma2WW.h�������������������������������������������0000644�0001750�0001750�00000014677�11754474775�023537� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEGammaGamma2WW_H #define HERWIG_MEGammaGamma2WW_H // // This is the declaration of the MEGammaGamma2WW class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.fh" #include "ThePEG/Helicity/Vertex/AbstractVVVVVertex.fh" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The MEGammaGamma2WW class provides the matrix elements for * \f$\gamma\gamma\to f \bar{f}\f$. * * @see \ref MEGammaGamma2WWInterfaces "The interfaces" * defined for MEGammaGamma2WW. */ class MEGammaGamma2WW : public HwMEBase { public: /** * The default constructor. */ MEGammaGamma2WW(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Matrix element for \f$\gamma\gamma\to q\bar{q}\f$ * @param p1 The wavefunctions for the first incoming photon * @param p2 The wavefunctions for the second incoming photon * @param w1 The wavefunctions for the first outgoing W * @param w2 The wavefunctions for the second outgoing W * @param calc Whether or not to calculate the matrix element */ double helicityME(vector<VectorWaveFunction> & p1, vector<VectorWaveFunction> & p2, vector<VectorWaveFunction> & w1, vector<VectorWaveFunction> & w2, bool calc) const; 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEGammaGamma2WW> initMEGammaGamma2WW; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEGammaGamma2WW & operator=(const MEGammaGamma2WW &); private: /** * Treatment of the the W mass */ unsigned int massOption_; /** * Pointer to the gammaWW vertex */ AbstractVVVVertexPtr WWWVertex_; /** * Pointer to the gammagammaWW vertex */ AbstractVVVVVertexPtr WWWWVertex_; /** * Matrix element */ mutable ProductionMatrixElement me_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEGammaGamma2WW. */ template <> struct BaseClassTrait<Herwig::MEGammaGamma2WW,1> { /** Typedef of the first base class of MEGammaGamma2WW. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEGammaGamma2WW class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEGammaGamma2WW> : public ClassTraitsBase<Herwig::MEGammaGamma2WW> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEGammaGamma2WW"; } /** * The name of a file containing the dynamic library where the class * MEGammaGamma2WW is implemented. It may also include several, space-separated, * libraries if the class MEGammaGamma2WW depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEGammaGamma.so"; } }; /** @endcond */ } #endif /* HERWIG_MEGammaGamma2WW_H */ �����������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Gamma/MEGammaGamma2WW.cc������������������������������������������0000644�0001750�0001750�00000015566�11754474775�023673� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEGammaGamma2WW class. // #include "MEGammaGamma2WW.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Interface/Switch.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/MatrixElement/HardVertex.h" using namespace Herwig; MEGammaGamma2WW::MEGammaGamma2WW() : massOption_(2) {} void MEGammaGamma2WW::doinit() { HwMEBase::doinit(); massOption(vector<unsigned int>(2,massOption_)); rescalingOption(2); // cast the SM pointer to the Herwig SM pointer tcHwSMPtr hwsm=ThePEG::dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(!hwsm) throw InitException() << "Must be the Herwig++ StandardModel class in " << "MEGammaGamma2WW::doinit" << Exception::abortnow; WWWVertex_ = hwsm->vertexWWW(); WWWWVertex_ = hwsm->vertexWWWW(); } void MEGammaGamma2WW::getDiagrams() const { tcPDPtr gamma = getParticleData(ParticleID::gamma); tcPDPtr Wp = getParticleData(ParticleID::Wplus); tcPDPtr Wm = Wp->CC(); // first t-channel add(new_ptr((Tree2toNDiagram(3),gamma,Wp,gamma,1,Wm, 2,Wp,-1))); // interchange add(new_ptr((Tree2toNDiagram(3),gamma,Wp,gamma,2,Wm, 1,Wp,-2))); } Energy2 MEGammaGamma2WW::scale() const { return 2.*sHat()*tHat()*uHat()/(sqr(sHat())+sqr(tHat())+sqr(uHat())); } unsigned int MEGammaGamma2WW::orderInAlphaS() const { return 0; } unsigned int MEGammaGamma2WW::orderInAlphaEW() const { return 2; } Selector<MEBase::DiagramIndex> MEGammaGamma2WW::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) if ( diags[i]->id() == -1 ) sel.insert(meInfo()[0], i); else if ( diags[i]->id() == -2 ) sel.insert(meInfo()[1], i); return sel; } Selector<const ColourLines *> MEGammaGamma2WW::colourGeometries(tcDiagPtr) const { static ColourLines c1(""); Selector<const ColourLines *> sel; sel.insert(1.0, &c1); return sel; } IBPtr MEGammaGamma2WW::clone() const { return new_ptr(*this); } IBPtr MEGammaGamma2WW::fullclone() const { return new_ptr(*this); } ClassDescription<MEGammaGamma2WW> MEGammaGamma2WW::initMEGammaGamma2WW; // Definition of the static class description member. void MEGammaGamma2WW::Init() { static ClassDocumentation<MEGammaGamma2WW> documentation ("The MEGammaGamma2WW class implements the matrix elements" " for e+e- -> W+W-"); static Switch<MEGammaGamma2WW,unsigned int> interfaceMassOption ("MassOption", "Option for the treatment of the W mass", &MEGammaGamma2WW::massOption_, 1, false, false); static SwitchOption interfaceMassOptionOnMassShell (interfaceMassOption, "OnMassShell", "The W is produced on its mass shell", 1); static SwitchOption interfaceMassOption2 (interfaceMassOption, "OffShell", "The W is generated off-shell using the mass and width generator.", 2); } double MEGammaGamma2WW::me2() const { VectorWaveFunction p1w(rescaledMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction p2w(rescaledMomenta()[1],mePartonData()[1],incoming); VectorWaveFunction w1w(rescaledMomenta()[2],mePartonData()[2],outgoing); VectorWaveFunction w2w(rescaledMomenta()[3],mePartonData()[3],outgoing); vector<VectorWaveFunction> p1,p2,w1,w2; for(unsigned int ix=0;ix<3;++ix) { if(ix!=1) { p1w.reset(ix); p1.push_back(p1w); p2w.reset(ix); p2.push_back(p2w); } w1w.reset(ix); w1.push_back(w1w); w2w.reset(ix); w2.push_back(w2w); } // calculate the matrix element return helicityME(p1,p2,w1,w2,false); } void MEGammaGamma2WW::persistentOutput(PersistentOStream & os) const { os << massOption_ << WWWVertex_ << WWWWVertex_; } void MEGammaGamma2WW::persistentInput(PersistentIStream & is, int) { is >> massOption_ >> WWWVertex_ >> WWWWVertex_; } double MEGammaGamma2WW::helicityME(vector<VectorWaveFunction> & p1, vector<VectorWaveFunction> & p2, vector<VectorWaveFunction> & w1, vector<VectorWaveFunction> & w2, bool calc) const { // scale (external photons so scale in couplings is 0) Energy2 mt(0.*GeV2); // matrix element to be stored if(calc) me_.reset(ProductionMatrixElement(PDT::Spin1,PDT::Spin1, PDT::Spin1,PDT::Spin1)); // calculate the matrix element double output(0.),sumdiag[2]={0.,0.}; Complex diag[3]; VectorWaveFunction inter; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<3;++ohel1) { for(unsigned int ohel2=0;ohel2<3;++ohel2) { // first t-channel diagram inter = WWWVertex_->evaluate(mt,1,w1[ohel1].particle()->CC(), w1[ohel1],p1[ihel1]); diag[0]= WWWVertex_->evaluate(mt,inter,w2[ohel2],p2[ihel2]); //second t-channel diagram inter = WWWVertex_->evaluate(mt,1,w1[ohel1].particle()->CC(), w1[ohel1],p2[ihel2]); diag[1] = WWWVertex_->evaluate(mt,inter,w2[ohel2],p1[ihel1]); // four point diagrams diag[2] = WWWWVertex_->evaluate(mt,0,p1[ihel1],p2[ihel2], w1[ohel1],w2[ohel2]); sumdiag[0] += norm(diag[0]); sumdiag[1] += norm(diag[1]); diag[0] += diag[1] + diag[2]; output += norm(diag[0]); // store the me if needed if(calc) me_(2*ihel1,2*ihel2,ohel1,ohel2) = diag[0]; } } } } // diagrams DVector save; save.push_back(sumdiag[0]); save.push_back(sumdiag[1]); meInfo(save); // colour factors if needed if(mePartonData()[2]->coloured()) output *= 3.; // spin factors return 0.25*output; } void MEGammaGamma2WW::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); hard.push_back(sub->outgoing()[1]); // order of particles unsigned int order[4]={0,1,2,3}; // identify the process and calculate matrix element vector<VectorWaveFunction> p1,p2,w1,w2; if(hard[order[2]]->id()>0) swap(order[2],order[3]); VectorWaveFunction (p1,hard[order[0]],incoming,false,true ); VectorWaveFunction (p2,hard[order[1]],incoming,false,true ); VectorWaveFunction (w1,hard[order[2]],outgoing,true ,false); VectorWaveFunction (w2,hard[order[3]],outgoing,true ,false); p1[1] = p1[2]; p2[1] = p2[2]; helicityME(p1,p2,w1,w2,true); // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(me_); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) hard[order[ix]]->spinInfo()->productionVertex(hardvertex); } ������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Gamma/Makefile.in�������������������������������������������������0000644�0001750�0001750�00000053134�11756461677�022652� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/Gamma DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwMEGammaGamma_la_LIBADD = am_HwMEGammaGamma_la_OBJECTS = MEGammaGamma2ff.lo MEGammaGamma2WW.lo HwMEGammaGamma_la_OBJECTS = $(am_HwMEGammaGamma_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwMEGammaGamma_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwMEGammaGamma_la_LDFLAGS) \ $(LDFLAGS) -o $@ HwMEGammaHadron_la_LIBADD = am_HwMEGammaHadron_la_OBJECTS = MEGammaP2Jets.lo HwMEGammaHadron_la_OBJECTS = $(am_HwMEGammaHadron_la_OBJECTS) HwMEGammaHadron_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwMEGammaHadron_la_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwMEGammaGamma_la_SOURCES) $(HwMEGammaHadron_la_SOURCES) DIST_SOURCES = $(HwMEGammaGamma_la_SOURCES) \ $(HwMEGammaHadron_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwMEGammaGamma.la HwMEGammaHadron.la HwMEGammaGamma_la_SOURCES = \ MEGammaGamma2ff.cc MEGammaGamma2ff.h \ MEGammaGamma2WW.cc MEGammaGamma2WW.h HwMEGammaGamma_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:0:0 HwMEGammaHadron_la_SOURCES = \ MEGammaP2Jets.cc MEGammaP2Jets.h HwMEGammaHadron_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/Gamma/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/Gamma/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwMEGammaGamma.la: $(HwMEGammaGamma_la_OBJECTS) $(HwMEGammaGamma_la_DEPENDENCIES) $(EXTRA_HwMEGammaGamma_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwMEGammaGamma_la_LINK) -rpath $(pkglibdir) $(HwMEGammaGamma_la_OBJECTS) $(HwMEGammaGamma_la_LIBADD) $(LIBS) HwMEGammaHadron.la: $(HwMEGammaHadron_la_OBJECTS) $(HwMEGammaHadron_la_DEPENDENCIES) $(EXTRA_HwMEGammaHadron_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwMEGammaHadron_la_LINK) -rpath $(pkglibdir) $(HwMEGammaHadron_la_OBJECTS) $(HwMEGammaHadron_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEGammaGamma2WW.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEGammaGamma2ff.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEGammaP2Jets.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Gamma/MEGammaGamma2ff.h�������������������������������������������0000644�0001750�0001750�00000014644�11754474775�023567� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEGammaGamma2ff_H #define HERWIG_MEGammaGamma2ff_H // // This is the declaration of the MEGammaGamma2ff class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" namespace Herwig { using namespace ThePEG; /** * The MEGammaGamma2ff class provides the matrix elements for * \f$\gamma\gamma\to f \bar{f}\f$. * * @see \ref MEGammaGamma2ffInterfaces "The interfaces" * defined for MEGammaGamma2ff. */ class MEGammaGamma2ff: public HwMEBase { public: /** * The default constructor. */ MEGammaGamma2ff(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Matrix element for \f$\gamma\gamma\to q\bar{q}\f$ * @param p1 The wavefunctions for the first incoming photon * @param p2 The wavefunctions for the second incoming photon * @param f The wavefunction for the outgoing fermion * @param fbar The wavefunction for the outgoing antifermion * @param calc Whether or not to calculate the matrix element */ double helicityME(vector<VectorWaveFunction> &p1,vector<VectorWaveFunction> &p2, vector<SpinorBarWaveFunction> & f, vector<SpinorWaveFunction> & fbar, bool calc) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEGammaGamma2ff> initMEGammaGamma2ff; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEGammaGamma2ff & operator=(const MEGammaGamma2ff &); private: /** * Which processes to include */ int process_; /** * Pointer to the photon vertex */ AbstractFFVVertexPtr vertex_; /** * Matrix element */ mutable ProductionMatrixElement me_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEGammaGamma2ff. */ template <> struct BaseClassTrait<Herwig::MEGammaGamma2ff,1> { /** Typedef of the first base class of MEGammaGamma2ff. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEGammaGamma2ff class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEGammaGamma2ff> : public ClassTraitsBase<Herwig::MEGammaGamma2ff> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEGammaGamma2ff"; } /** * The name of a file containing the dynamic library where the class * MEGammaGamma2ff is implemented. It may also include several, space-separated, * libraries if the class MEGammaGamma2ff depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEGammaGamma.so"; } }; /** @endcond */ } #endif /* HERWIG_MEGammaGamma2ff_H */ ��������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Gamma/MEGammaGamma2ff.cc������������������������������������������0000644�0001750�0001750�00000021775�11754474775�023730� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEGammaGamma2ff class. // #include "MEGammaGamma2ff.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Interface/Switch.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/MatrixElement/HardVertex.h" using namespace Herwig; MEGammaGamma2ff::MEGammaGamma2ff() : process_(0) { massOption(vector<unsigned int>(2,1)); } void MEGammaGamma2ff::doinit() { HwMEBase::doinit(); // cast the SM pointer to the Herwig SM pointer tcHwSMPtr hwsm=ThePEG::dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(!hwsm) throw InitException() << "Must be the Herwig++ StandardModel class in " << "MEGammaGamma2ff::doinit" << Exception::abortnow; vertex_ = hwsm->vertexFFP(); } void MEGammaGamma2ff::getDiagrams() const { tcPDPtr gamma = getParticleData(ParticleID::gamma); for(int ix=1;ix<17;++ix) { // increment counter to switch between quarks and leptons if(ix==7) ix+=4; if(ix>11&&ix%2==0) ++ix; // is it a valid quark process bool quark = ix<=6 && (process_==0 || process_==1 || process_-10==ix); // is it a valid lepton process bool lepton= ix>=11 && ix<=16 && (process_==0 || process_==2 || ( (ix-9)/2 ==process_-4) ); // only add diagram if allowed if(!quark && !lepton) continue; tcPDPtr lm = getParticleData(ix); tcPDPtr lp = lm->CC(); // first t-channel add(new_ptr((Tree2toNDiagram(3),gamma,lp,gamma,1,lm, 2,lp,-1))); // interchange add(new_ptr((Tree2toNDiagram(3),gamma,lp,gamma,2,lm, 1,lp,-2))); } } Energy2 MEGammaGamma2ff::scale() const { return 2.*sHat()*tHat()*uHat()/(sqr(sHat())+sqr(tHat())+sqr(uHat())); } double MEGammaGamma2ff::me2() const { VectorWaveFunction p1w(rescaledMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction p2w(rescaledMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction fw(rescaledMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction fbarw(rescaledMomenta()[3],mePartonData()[3],outgoing); vector<VectorWaveFunction> p1,p2; vector<SpinorBarWaveFunction> f; vector<SpinorWaveFunction> fbar; for(unsigned int ix=0;ix<2;++ix) { p1w.reset(2*ix);p1.push_back(p1w); p2w.reset(2*ix);p2.push_back(p2w); fw.reset(ix);f.push_back(fw); fbarw.reset(ix);fbar.push_back(fbarw); } // calculate the matrix element return helicityME(p1,p2,f,fbar,false); } unsigned int MEGammaGamma2ff::orderInAlphaS() const { return 0; } unsigned int MEGammaGamma2ff::orderInAlphaEW() const { return 2; } double MEGammaGamma2ff::helicityME(vector<VectorWaveFunction> &p1, vector<VectorWaveFunction> &p2, vector<SpinorBarWaveFunction> & f, vector<SpinorWaveFunction> & fbar, bool calc) const { // scale (external photons so scale in couplings is 0) Energy2 mt(0.*GeV2); // matrix element to be stored if(calc) me_.reset(ProductionMatrixElement(PDT::Spin1,PDT::Spin1, PDT::Spin1Half,PDT::Spin1Half)); // calculate the matrix element double output(0.),sumdiag[2]={0.,0.}; Complex diag[2]; SpinorWaveFunction inters; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { //first t-channel diagram inters =vertex_->evaluate(mt,1,fbar[ohel2].particle(), fbar[ohel2],p2[ihel2]); diag[0]=vertex_->evaluate(mt,inters,f[ohel1],p1[ihel1]); //second t-channel diagram inters =vertex_->evaluate(mt,1,fbar[ohel2].particle(), fbar[ohel2],p1[ihel1]); diag[1]=vertex_->evaluate(mt,inters,f[ohel1],p2[ihel2]); sumdiag[0] += norm(diag[0]); sumdiag[1] += norm(diag[1]); diag[0] += diag[1]; output += norm(diag[0]); // store the me if needed if(calc) me_(2*ihel1,2*ihel2,ohel1,ohel2) = diag[0]; } } } } // diagrams DVector save; save.push_back(sumdiag[0]); save.push_back(sumdiag[1]); meInfo(save); // colour factors if needed if(mePartonData()[2]->coloured()) output *= 3.; // code to test vs the analytic result // Energy2 m2 = sqr(f[0].particle()->mass()); // Energy2 tm = (p1[0].getMomentum()+f [0].getMomentum()).m2()-m2; // Energy2 um = (p1[0].getMomentum()+fbar[0].getMomentum()).m2()-m2; // double test = 8.*um/tm+8.*tm/um- 32*m2/tm - 32*m2/um // -32*sqr(double(m2/tm)) - 64*sqr(m2)/tm/um - 32*sqr(double(m2/um)); // test *= sqr(4.*Constants::pi*SM().alphaEM()); // if(mePartonData()[2]->coloured()) test *= 3.; // cerr << "testing ME " << (output-test)/(output+test) << "\n"; // spin factors return 0.25*output; } Selector<MEBase::DiagramIndex> MEGammaGamma2ff::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) if ( diags[i]->id() == -1 ) sel.insert(meInfo()[0], i); else if ( diags[i]->id() == -2 ) sel.insert(meInfo()[1], i); return sel; } Selector<const ColourLines *> MEGammaGamma2ff::colourGeometries(tcDiagPtr ) const { static ColourLines c1(""); static ColourLines c2("4 -2 -5"); Selector<const ColourLines *> sel; if(mePartonData()[2]->coloured()) sel.insert(1.0, &c2); else sel.insert(1.0, &c1); return sel; } void MEGammaGamma2ff::persistentOutput(PersistentOStream & os) const { os << process_ << vertex_; } void MEGammaGamma2ff::persistentInput(PersistentIStream & is, int) { is >> process_ >> vertex_; } ClassDescription<MEGammaGamma2ff> MEGammaGamma2ff::initMEGammaGamma2ff; // Definition of the static class description member. void MEGammaGamma2ff::Init() { static ClassDocumentation<MEGammaGamma2ff> documentation ("The MEGammaGamma2ff class implements the matrix elemments for" " direct fermion-antifermion production in gamma-gamma collisions."); static Switch<MEGammaGamma2ff,int> interfaceProcess ("Process", "Which process to included", &MEGammaGamma2ff::process_, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all SM fermions as outgoing particles", 0); static SwitchOption interfaceProcessQuarks (interfaceProcess, "Quarks", "All include the quarks as outgoing particles", 1); static SwitchOption interfaceProcessLeptons (interfaceProcess, "Leptons", "Only include the leptons as outgoing particles", 2); static SwitchOption interfaceProcessElectron (interfaceProcess, "Electron", "Only include e+e- as outgoing particles", 5); static SwitchOption interfaceProcessMuon (interfaceProcess, "Muon", "Only include mu+mu- as outgoing particles", 6); static SwitchOption interfaceProcessTau (interfaceProcess, "Tau", "Only include tau+tau- as outgoing particles", 7); static SwitchOption interfaceProcessDown (interfaceProcess, "Down", "Only include d dbar as outgoing particles", 11); static SwitchOption interfaceProcessUp (interfaceProcess, "Up", "Only include u ubar as outgoing particles", 12); static SwitchOption interfaceProcessStrange (interfaceProcess, "Strange", "Only include s sbar as outgoing particles", 13); static SwitchOption interfaceProcessCharm (interfaceProcess, "Charm", "Only include c cbar as outgoing particles", 14); static SwitchOption interfaceProcessBottom (interfaceProcess, "Bottom", "Only include b bbar as outgoing particles", 15); static SwitchOption interfaceProcessTop (interfaceProcess, "Top", "Only include t tbar as outgoing particles", 16); } void MEGammaGamma2ff::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); hard.push_back(sub->outgoing()[1]); // order of particles unsigned int order[4]={0,1,2,3}; // identify the process and calculate matrix element vector<VectorWaveFunction> p1,p2; if(hard[order[2]]->id()<0) swap(order[2],order[3]); vector<SpinorWaveFunction> fbar; vector<SpinorBarWaveFunction> f; VectorWaveFunction (p1 ,hard[order[0]],incoming,false,true); VectorWaveFunction (p2 ,hard[order[1]],incoming,false,true); SpinorBarWaveFunction(f ,hard[order[2]],outgoing,true ); SpinorWaveFunction (fbar,hard[order[3]],outgoing,true ); p1[1]=p1[2]; p2[1]=p2[2]; helicityME(p1,p2,f,fbar,true); // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(me_); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) hard[order[ix]]->spinInfo()->productionVertex(hardvertex); } ���herwig++-2.6.0.orig/MatrixElement/Gamma/Makefile.am�������������������������������������������������0000644�0001750�0001750�00000000564�11754474775�022641� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwMEGammaGamma.la HwMEGammaHadron.la HwMEGammaGamma_la_SOURCES = \ MEGammaGamma2ff.cc MEGammaGamma2ff.h \ MEGammaGamma2WW.cc MEGammaGamma2WW.h HwMEGammaGamma_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:0:0 HwMEGammaHadron_la_SOURCES = \ MEGammaP2Jets.cc MEGammaP2Jets.h HwMEGammaHadron_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:0:0 ��������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Gamma/MEGammaP2Jets.h���������������������������������������������0000644�0001750�0001750�00000017271�11754474775�023255� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEGammaP2Jets_H #define HERWIG_MEGammaP2Jets_H // // This is the declaration of the MEGammaP2Jets class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" namespace Herwig { using namespace ThePEG; /** * The MEGammaP2Jets class implements the matrix elements for * pointlike gamma+hadron -> jets. * * @see \ref MEGammaP2JetsInterfaces "The interfaces" * defined for MEGammaP2Jets. */ class MEGammaP2Jets: public HwMEBase { public: /** * The default constructor. */ MEGammaP2Jets(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; //@} protected: /** * Members to calculate the matrix elements */ //@{ /** * Matrix element for \f$\gamma g\to q \bar{q}\f$. * @param gmin Polarization vectors for the incoming photon * @param glin Polarization vectors for the incoming gluon * @param fout Spinors for the outgoing quark * @param aout Spinors for the outgoing antiquark * @param calc Whether or not to calculate the matrix element for spin correlations */ double gammagluonME(vector<VectorWaveFunction> & gmin, vector<VectorWaveFunction> & glin, vector<SpinorBarWaveFunction> & fout, vector<SpinorWaveFunction> & aout, bool calc) const; /** * Matrix element for \f$\gamma q\to g q\f$. * @param gmin Polarization vectors for the incoming photon * @param fin Spinors for the incoming quark * @param gout Polarization vectors for the outgong gluon * @param fout Spinors for the outgoing quark * @param calc Whether or not to calculate the matrix element for spin correlations */ double gammaquarkME(vector<VectorWaveFunction> & gmin, vector<SpinorWaveFunction> & fin, vector<VectorWaveFunction> & gout, vector<SpinorBarWaveFunction> & fout, bool calc) const; /** * Matrix element for \f$\gamma q\to g q\f$. * @param gmin Polarization vectors for the incoming photon * @param fin Spinors for the incoming antiquark * @param gout Polarization vectors for the outgong gluon * @param fout Spinors for the outgoing antiquark * @param calc Whether or not to calculate the matrix element for spin correlations */ double gammaantiquarkME(vector<VectorWaveFunction> & gmin, vector<SpinorBarWaveFunction> & fin, vector<VectorWaveFunction> & gout, vector<SpinorWaveFunction> & fout, bool calc) 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEGammaP2Jets> initMEGammaP2Jets; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEGammaP2Jets & operator=(const MEGammaP2Jets &); private: /** * Pointer to the quark-antiquark-gluon vertex */ AbstractFFVVertexPtr _gluonvertex; /** * Pointer to the quark-antiquark-photon vertex */ AbstractFFVVertexPtr _photonvertex; /** * Allowed processes */ unsigned int _process; /** * Minimum flavour */ int _minflavour; /** * Maximum flavour */ int _maxflavour; /** * Matrix element for spin correlations */ ProductionMatrixElement _me; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEGammaP2Jets. */ template <> struct BaseClassTrait<Herwig::MEGammaP2Jets,1> { /** Typedef of the first base class of MEGammaP2Jets. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEGammaP2Jets class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEGammaP2Jets> : public ClassTraitsBase<Herwig::MEGammaP2Jets> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEGammaP2Jets"; } /** * The name of a file containing the dynamic library where the class * MEGammaP2Jets is implemented. It may also include several, space-separated, * libraries if the class MEGammaP2Jets depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEGammaHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEGammaP2Jets_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/HwMEBase.cc�������������������������������������������������������0000644�0001750�0001750�00000021465�11754474776�021471� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the HwMEBase class. // #include "HwMEBase.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/PDT/GenericMassGenerator.h" #include "ThePEG/Cuts/Cuts.h" using namespace Herwig; void HwMEBase::persistentOutput(PersistentOStream & os) const { os << massOption_ << rescaleOption_; } void HwMEBase::persistentInput(PersistentIStream & is, int) { is >> massOption_ >> rescaleOption_; } AbstractClassDescription<HwMEBase> HwMEBase::initHwMEBase; // Definition of the static class description member. void HwMEBase::Init() { static ClassDocumentation<HwMEBase> documentation ("The HwMEBase class is the base class for matrix elements in Herwig++" " and provides the virtual members for hard radiation corrections in the" " shower."); } int HwMEBase::nDim() const { unsigned ndim = 1; for(unsigned int ix=0;ix<massOption_.size();++ix) if(massOption_[ix]==2) ++ndim; return ndim; } CrossSection HwMEBase::dSigHatDR() const { return me2()*jacobian()/(16.0*sqr(Constants::pi)*sHat())*sqr(hbarc); } void HwMEBase::setKinematics() { MEBase::setKinematics(); lastTHat_ = (meMomenta()[0] - meMomenta()[2]).m2(); lastUHat_ = (meMomenta()[1] - meMomenta()[2]).m2(); lastPhi_ = meMomenta()[2].phi(); } bool HwMEBase::generateMasses(vector<Energy> & masses, double & mjac, const double *r) { assert(massOption_.size()+2==mePartonData().size()); mjac = 1.; masses.resize(massOption_.size(),ZERO); Energy ecm = sqrt(sHat()); Energy emin(ZERO); int noff(0); for(unsigned int ix=0;ix<massOption_.size();++ix) { if(massOption_[ix]==1) { masses[ix] = mePartonData()[ix+2]->mass(); emin += masses[ix]; } else if (massOption_[ix]==2) { emin += mePartonData()[ix+2]->massMin(); ++noff; } } // check allowed if(emin>ecm) return false; // if nothing off-shell return if(noff==0) return true; int iloc = nDim()-noff; emin = ecm - emin; // generate the masses for(unsigned int ix=0;ix<massOption_.size();++ix) { if(massOption_[ix]!=2) continue; Energy mmin = mePartonData()[ix+2]->massMin(); emin += mmin; Energy mmax = min(mePartonData()[ix+2]->massMax(),emin); if(mmin>mmax) return false; tGenericMassGeneratorPtr gen = mePartonData()[ix+2]->massGenerator() ? dynamic_ptr_cast<tGenericMassGeneratorPtr>(mePartonData()[ix+2]->massGenerator()) : tGenericMassGeneratorPtr(); if(gen) { double jtemp(0.); masses[ix] = gen->mass(jtemp,*mePartonData()[ix+2],mmin,mmax,r[iloc]); mjac *= jtemp; } else { Energy mon(mePartonData()[ix+2]->mass()); Energy width(mePartonData()[ix+2]->width()); double rhomin = atan2((sqr(mmin)-sqr(mon)), mon*width); double rhomax = atan2((sqr(mmax)-sqr(mon)), mon*width); masses[ix] = sqrt(mon*width*tan(rhomin+r[iloc]*(rhomax-rhomin))+sqr(mon)); mjac *= (rhomax-rhomin)/Constants::pi; } emin -= masses[ix]; if(emin<ZERO) return false; ++iloc; } return true; } bool HwMEBase::generateKinematics(const double * r) { jacobian(1.); vector<Energy> masses; double mjac(0.); if(!generateMasses(masses,mjac,r)) return false; // set up the momenta for ( int i = 2, N = meMomenta().size(); i < N; ++i ) { meMomenta()[i] = Lorentz5Momentum(masses[i-2]); } double ctmin = -1.0, ctmax = 1.0; Energy q = ZERO; try { q = SimplePhaseSpace:: getMagnitude(sHat(), meMomenta()[2].mass(), meMomenta()[3].mass()); } catch ( ImpossibleKinematics ) { return false; } Energy e = sqrt(sHat())/2.0; Energy2 m22 = meMomenta()[2].mass2(); Energy2 m32 = meMomenta()[3].mass2(); Energy2 e0e2 = 2.0*e*sqrt(sqr(q) + m22); Energy2 e1e2 = 2.0*e*sqrt(sqr(q) + m22); Energy2 e0e3 = 2.0*e*sqrt(sqr(q) + m32); Energy2 e1e3 = 2.0*e*sqrt(sqr(q) + m32); Energy2 pq = 2.0*e*q; Energy2 thmin = lastCuts().minTij(mePartonData()[0], mePartonData()[2]); if ( thmin > ZERO ) ctmax = min(ctmax, (e0e2 - m22 - thmin)/pq); thmin = lastCuts().minTij(mePartonData()[1], mePartonData()[2]); if ( thmin > ZERO ) ctmin = max(ctmin, (thmin + m22 - e1e2)/pq); thmin = lastCuts().minTij(mePartonData()[1], mePartonData()[3]); if ( thmin > ZERO ) ctmax = min(ctmax, (e1e3 - m32 - thmin)/pq); thmin = lastCuts().minTij(mePartonData()[0], mePartonData()[3]); if ( thmin > ZERO ) ctmin = max(ctmin, (thmin + m32 - e0e3)/pq); Energy ptmin = max(lastCuts().minKT(mePartonData()[2]), lastCuts().minKT(mePartonData()[3])); if ( ptmin > ZERO ) { double ctm = 1.0 - sqr(ptmin/q); if ( ctm <= 0.0 ) return false; ctmin = max(ctmin, -sqrt(ctm)); ctmax = min(ctmax, sqrt(ctm)); } double ymin2 = lastCuts().minYStar(mePartonData()[2]); double ymax2 = lastCuts().maxYStar(mePartonData()[2]); double ymin3 = lastCuts().minYStar(mePartonData()[3]); double ymax3 = lastCuts().maxYStar(mePartonData()[3]); double ytot = lastCuts().Y() + lastCuts().currentYHat(); if ( ymin2 + ytot > -0.9*Constants::MaxRapidity ) ctmin = max(ctmin, sqrt(sqr(q) + m22)*tanh(ymin2)/q); if ( ymax2 + ytot < 0.9*Constants::MaxRapidity ) ctmax = min(ctmax, sqrt(sqr(q) + m22)*tanh(ymax2)/q); if ( ymin3 + ytot > -0.9*Constants::MaxRapidity ) ctmax = min(ctmax, sqrt(sqr(q) + m32)*tanh(-ymin3)/q); if ( ymax3 + ytot < 0.9*Constants::MaxRapidity ) ctmin = max(ctmin, sqrt(sqr(q) + m32)*tanh(-ymax3)/q); if ( ctmin >= ctmax ) return false; double cth = getCosTheta(ctmin, ctmax, r); Energy pt = q*sqrt(1.0-sqr(cth)); phi(rnd(2.0*Constants::pi)); meMomenta()[2].setVect(Momentum3( pt*sin(phi()), pt*cos(phi()), q*cth)); meMomenta()[3].setVect(Momentum3(-pt*sin(phi()), -pt*cos(phi()), -q*cth)); meMomenta()[2].rescaleEnergy(); meMomenta()[3].rescaleEnergy(); vector<LorentzMomentum> out(2); out[0] = meMomenta()[2]; out[1] = meMomenta()[3]; tcPDVector tout(2); tout[0] = mePartonData()[2]; tout[1] = mePartonData()[3]; if ( !lastCuts().passCuts(tout, out, mePartonData()[0], mePartonData()[1]) ) return false; tHat(pq*cth + m22 - e0e2); uHat(m22 + m32 - sHat() - tHat()); jacobian((pq/sHat())*Constants::pi*jacobian()*mjac); // compute the rescaled momenta return rescaleMomenta(meMomenta(),mePartonData()); } bool HwMEBase::rescaleMomenta(const vector<Lorentz5Momentum> & momenta, const cPDVector & data) { assert(momenta.size()==4&&data.size()==4); // default just use the ones we generated rescaledMomenta_=momenta; if(rescaleOption_==1) return true; Energy mnew[2] = {0*MeV, ZERO}; if(rescaleOption_==0) { mnew[0] = ZERO; mnew[1] = ZERO; } else if(rescaleOption_==2) { mnew[0] = data[2]->mass(); mnew[1] = data[3]->mass(); } else if(rescaleOption_==3) { if(abs(data[2]->id())!=abs(data[3]->id())) return true; mnew[0] = 0.5*(momenta[2].mass()+momenta[3].mass()); mnew[1] = mnew[0]; } else { assert(false); } Lorentz5Momentum pcm(momenta[2]+momenta[3]); Energy m0=pcm.m(); if(m0<mnew[0]+mnew[1]) return false; Boost bv = pcm.boostVector(); rescaledMomenta_[2].boost(bv); rescaledMomenta_[2].setMass(mnew[0]); rescaledMomenta_[2].setE(0.5*(sqr(m0)+sqr(mnew[0])-sqr(mnew[1]))/m0); rescaledMomenta_[2].rescaleRho(); rescaledMomenta_[2].boost(-bv); rescaledMomenta_[3].boost(bv); rescaledMomenta_[3].setMass(mnew[1]); rescaledMomenta_[3].setE(0.5*(sqr(m0)-sqr(mnew[0])+sqr(mnew[1]))/m0); rescaledMomenta_[3].rescaleRho(); rescaledMomenta_[3].boost(-bv); return true; } double HwMEBase::getCosTheta(double ctmin, double ctmax, const double * r) { double cth = 0.0; static const double eps = 1.0e-6; if ( 1.0 + ctmin <= eps && 1.0 - ctmax <= eps ) { jacobian(jacobian()*(ctmax - ctmin)); cth = ctmin + (*r)*(ctmax - ctmin); } else if ( 1.0 + ctmin <= eps ) { cth = 1.0 - (1.0 - ctmax)*pow((1.0 - ctmin)/(1.0 - ctmax), *r); jacobian(jacobian()*log((1.0 - ctmin)/(1.0 - ctmax))*(1.0 - cth)); } else if ( 1.0 - ctmax <= eps ) { cth = -1.0 + (1.0 + ctmin)*pow((1.0 + ctmax)/(1.0 + ctmin), *r); jacobian(jacobian()*log((1.0 + ctmax)/(1.0 + ctmin))*(1.0 + cth)); } else { double zmin = 0.5*(1.0 - ctmax); double zmax = 0.5*(1.0 - ctmin); double A1 = -ctmin/(zmax*(1.0-zmax)); double A0 = -ctmax/(zmin*(1.0-zmin)); double A = *r*(A1 - A0) + A0; double z = A < 2.0? 2.0/(sqrt(sqr(A) + 4.0) + 2 - A): 0.5*(A - 2.0 + sqrt(sqr(A) + 4.0))/A; cth = 1.0 - 2.0*z; jacobian(jacobian()*2.0*(A1 - A0)*sqr(z)*sqr(1.0 - z)/(sqr(z) + sqr(1.0 - z))); } return cth; } bool HwMEBase::softMatrixElementVeto(ShowerProgenitorPtr, ShowerParticlePtr,Branching) { return false; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/���������������������������������������������������������0000755�0001750�0001750�00000000000�11756464210�021304� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/�������������������������������������������������0000755�0001750�0001750�00000000000�11756464210�022747� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/AmplitudeCache.h���������������������������������0000644�0001750�0001750�00000016576�11754474775�026026� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // AmplitudeCache.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_AmplitudeCache_H #define HERWIG_AmplitudeCache_H #include "Herwig++/MatrixElement/Matchbox/Utility/SpinorHelicity.h" #include "ThePEG/Config/algorithm.h" namespace Herwig { using namespace ThePEG; namespace SpinorHelicity { /** * \ingroup Matchbox * \author Simon Platzer * * \brief Caching for amplitudes using spinor helicity techniques. * */ template<class AmplitudeKey> class AmplitudeCache { typedef map<AmplitudeKey,pair<bool,Complex> > AmplitudeCacheMap; typedef map<AmplitudeKey,pair<bool,LorentzVector<Complex> > > CurrentCacheMap; /** * The number of points */ int theNPoints; /** * The energy scale to obtain dimensionless * quantities. */ mutable Energy theScale; /** * Masses indexed by partons */ mutable vector<double> theMasses; /** * Momenta indexed by partons */ mutable vector<LorentzMomentum> theMomenta; /** * Crossing signs indexed by partons */ mutable vector<int> theCrossingSigns; /** * Plus spinors indexed by partons */ mutable vector<PlusSpinor> thePlusSpinors; /** * Plus conjugate spinors indexed by partons */ mutable vector<PlusConjugateSpinor> thePlusConjugateSpinors; /** * Invariants indexed by partons */ mutable vector<vector<double> > theInvariants; /** * Flag products to be recalculated */ mutable vector<vector<bool> > getInvariant; /** * Spinor products indexed by partons */ mutable vector<vector<Complex> > thePlusProducts; /** * Flag products to be recalculated */ mutable vector<vector<bool> > getPlusProduct; /** * Spinor currents indexed by partons */ mutable vector<vector<LorentzVector<Complex> > > thePlusCurrents; /** * Flag currents to be recalculated */ mutable vector<vector<bool> > getPlusCurrent; /** * Cache intermediate amplitudes by index */ mutable AmplitudeCacheMap theCachedAmplitudes; /** * The last query for a cached amplitude */ mutable typename AmplitudeCacheMap::iterator theLastAmplitude; /** * Cache intermediate currents by index */ mutable CurrentCacheMap theCachedCurrents; /** * The last query for a cached current */ mutable typename CurrentCacheMap::iterator theLastCurrent; /** * Helper to reset flags */ struct boolResetter { void operator()(std::_Bit_reference flag) const { flag = true; } void operator()(pair<const AmplitudeKey,pair<bool,Complex> >& flag) const { flag.second.first = true; } void operator()(pair<const AmplitudeKey,pair<bool,LorentzVector<Complex> > >& flag) const { flag.second.first = true; } }; /** * Helper to reset flags */ struct boolVectorResetter { void operator()(vector<bool>& flags) const { for_each(flags.begin(),flags.end(),boolResetter()); } }; public: /** * Constructor */ AmplitudeCache() : theNPoints(0) {} /** * Prepare for n-point amplitude */ void nPoints(int n); /** * Return the number of points */ int nPoints() const { return theNPoints; } /** * Set the energy scale to obtain dimensionless * quantities and flag all quantities to be recalculated. */ void amplitudeScale(Energy s) const; /** * Set the momentum for the k'th parton * and its associated mass. */ void momentum(int k, const LorentzMomentum& p, bool getSpinors = true, Energy mass = ZERO) const; /** * Reset flags */ void reset() const; public: /** * Return the momentum for the k'th parton */ LorentzVector<double> momentum(int k) const { return theMomenta[k]/theScale; } /** * Get the energy scale to obtain dimensionless * quantities and flag all quantities to be recalculated. */ Energy amplitudeScale() const { return theScale; } /** * Return the mass associated to the k'th parton */ double mass(int k) const { return theMasses[k]; } /** * Return the crossing sign for the * i'th parton */ int crossingSign(int i) const { return theCrossingSigns[i]; } /** * Return the crossing sign for the * i'th and j'th parton */ double crossingSign(int i, int j) const { return theCrossingSigns[i]*theCrossingSigns[j]; } /** * Return (ij) */ double invariant(int i, int j) const { if ( i > j ) swap(i,j); if ( getInvariant[i][j] ) { getInvariant[i][j] = false; theInvariants[i][j] = 2.*(momentum(i)*momentum(j)); } return theInvariants[i][j]; } /** * Return <ij> */ Complex plusProduct(int i, int j) const { bool swapij = (i > j); if ( swapij ) swap(i,j); if ( getPlusProduct[i][j] ) { getPlusProduct[i][j] = false; thePlusProducts[i][j] = PlusSpinorProduct(thePlusConjugateSpinors[i], thePlusSpinors[j]).eval() / theScale; } return swapij ? -thePlusProducts[i][j] : thePlusProducts[i][j]; } /** * Return [ij] */ Complex minusProduct(int i, int j) const { return -crossingSign(i,j)*conj(plusProduct(i,j)); } /** * Return <i|\gamma^\mu|j] */ LorentzVector<Complex> plusCurrent(int i, int j) const { bool swapij = (i > j); if ( swapij ) swap(i,j); if ( getPlusCurrent[i][j] ) { getPlusCurrent[i][j] = false; if ( i != j ) { thePlusCurrents[i][j] = PlusSpinorCurrent(thePlusConjugateSpinors[i], MinusSpinor(theMomenta[j])).eval() / theScale; } else { thePlusCurrents[i][j] = 2.*momentum(i); } } return swapij ? crossingSign(i,j)*thePlusCurrents[i][j].conjugate() : thePlusCurrents[i][j]; } /** * Return [i|\gamma^\mu|j> */ LorentzVector<Complex> minusCurrent(int i, int j) const { return plusCurrent(j,i); } public: /** * Return true, if the given amplitude * needs to be recalculated. */ bool getAmplitude(const AmplitudeKey& key) const { static Complex czero; if ( ( theLastAmplitude = theCachedAmplitudes.find(key) ) == theCachedAmplitudes.end() ) { theLastAmplitude = theCachedAmplitudes.insert(make_pair(key,make_pair(true,czero))).first; } return theLastAmplitude->second.first; } /** * Cache an amplitude */ void cacheAmplitude(Complex amp) const { theLastAmplitude->second = make_pair(false,amp); } /** * Return a cached amplitude */ const Complex& cachedAmplitude() const { return theLastAmplitude->second.second; } /** * Return true, if the given current * needs to be recalculated. */ bool getCurrent(const AmplitudeKey& key) const { static LorentzVector<Complex> czero; if ( ( theLastCurrent = theCachedCurrents.find(key) ) == theCachedCurrents.end() ) { theLastCurrent = theCachedCurrents.insert(make_pair(key,make_pair(true,czero))).first; } return theLastCurrent->second.first; } /** * Cache an current */ void cacheCurrent(const LorentzVector<Complex>& curr) const { theLastCurrent->second = make_pair(false,curr); } /** * Return a cached current */ const LorentzVector<Complex>& cachedCurrent() const { return theLastCurrent->second.second; } }; } } #include "AmplitudeCache.tcc" #endif // HERWIG_AmplitudeCache_H ����������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/SimpleColourBasis.cc�����������������������������0000644�0001750�0001750�00000013472�11756364747�026702� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SimpleColourBasis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SimpleColourBasis class. // #include "SimpleColourBasis.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/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; SimpleColourBasis::SimpleColourBasis() {} SimpleColourBasis::~SimpleColourBasis() {} IBPtr SimpleColourBasis::clone() const { return new_ptr(*this); } IBPtr SimpleColourBasis::fullclone() const { return new_ptr(*this); } size_t SimpleColourBasis::prepareBasis(const vector<PDT::Colour>& basis) { if ( id33bar.empty() ) makeIds(); if ( basis == id33bar || basis == id33bar8 ) return 1; if ( basis == id33bar33bar ) return 2; if ( basis == id33bar88 ) return 2; throw Exception() << "Cannot handle colour configuration" << Exception::abortnow; return 0; } double SimpleColourBasis::scalarProduct(size_t a, size_t b, const vector<PDT::Colour>& abBasis) const { if ( id33bar.empty() ) makeIds(); if ( abBasis == id33bar ) { assert(a==b); return SM().Nc(); } if ( abBasis == id33bar8 ) { assert(a==b); return (SM().Nc()*SM().Nc()-1.)/2.; } if ( abBasis == id33bar88 ) { if ( a == b ) { return sqr((SM().Nc()*SM().Nc()-1.)/2.)/SM().Nc(); } return (1.-SM().Nc()*SM().Nc())/(4.*SM().Nc()); } if ( abBasis == id33bar33bar ) { if ( a == b ) return SM().Nc()*SM().Nc(); return SM().Nc(); } throw Exception() << "Cannot handle colour configuration" << Exception::abortnow; } double SimpleColourBasis::tMatrixElement(size_t i, size_t a, #ifndef NDEBUG size_t b, #else size_t, #endif const vector<PDT::Colour>&, const vector<PDT::Colour>& bBasis) const { if ( id33bar.empty() ) makeIds(); if ( bBasis == id33bar ) { assert(a==b); return i == 0 ? 1. : -1.; } if ( bBasis == id33bar8 ) { assert(b==0); if ( i == 0 ) return a == 0 ? 1. : 0.; if ( i == 1 ) return a == 1 ? -1. : 0.; if ( i == 2 ) return a == 0 ? -1. : 1.; return 0.; } throw Exception() << "Cannot handle colour configuration" << Exception::abortnow; return 0.; } bool SimpleColourBasis::colourConnected(const cPDVector& sub, const vector<PDT::Colour>& basis, const pair<int,bool>& i, const pair<int,bool>& j, size_t a) const { if ( id33bar.empty() ) makeIds(); // translate process to basis ids map<cPDVector,map<size_t,size_t> >::const_iterator trans = indexMap().find(sub); assert(trans != indexMap().end()); int idColoured = i.second ? j.first : i.first; idColoured = trans->second.find(idColoured)->second; int idAntiColoured = i.second ? i.first : j.first; idAntiColoured = trans->second.find(idAntiColoured)->second; if ( basis == id33bar ) return idColoured == 0 && idAntiColoured == 1; if ( basis == id33bar8 ) { return (idColoured == 0 && idAntiColoured == 2) || (idColoured == 2 && idAntiColoured == 1); } if ( basis == id33bar88 ) { if ( a == 0 ) return (idColoured == 0 && idAntiColoured == 2) || (idColoured == 3 && idAntiColoured == 1) || (idColoured == 2 && idAntiColoured == 3); if ( a == 1 ) return (idColoured == 0 && idAntiColoured == 3) || (idColoured == 2 && idAntiColoured == 1) || (idColoured == 3 && idAntiColoured == 2); } if ( basis == id33bar33bar ) { if ( a == 0 ) return (idColoured == 0 && idAntiColoured == 1) || (idColoured == 2 && idAntiColoured == 3); if ( a == 1 ) return (idColoured == 0 && idAntiColoured == 3) || (idColoured == 2 && idAntiColoured == 1); } return false; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void SimpleColourBasis::makeIds() const { id33bar.push_back(PDT::Colour3); id33bar.push_back(PDT::Colour3bar); id33bar8.push_back(PDT::Colour3); id33bar8.push_back(PDT::Colour3bar); id33bar8.push_back(PDT::Colour8); id33bar88.push_back(PDT::Colour3); id33bar88.push_back(PDT::Colour3bar); id33bar88.push_back(PDT::Colour8); id33bar88.push_back(PDT::Colour8); id33bar33bar.push_back(PDT::Colour3); id33bar33bar.push_back(PDT::Colour3bar); id33bar33bar.push_back(PDT::Colour3); id33bar33bar.push_back(PDT::Colour3bar); } void SimpleColourBasis::persistentOutput(PersistentOStream &) const {} void SimpleColourBasis::persistentInput(PersistentIStream &, int) {} // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<SimpleColourBasis,ColourBasis> describeHerwigSimpleColourBasis("Herwig::SimpleColourBasis", "HwMatchbox.so"); void SimpleColourBasis::Init() { static ClassDocumentation<SimpleColourBasis> documentation ("SimpleColourBasis implements the colour algebra needed for " "vector boson and vector boson + jet production at NLO. It mainly " "serves as an example for the general ColourBasis interface."); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/SpinorHelicity.h���������������������������������0000644�0001750�0001750�00000024405�11754474775�026111� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SpinorHelicity.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SpinorHelicity_H #define HERWIG_SpinorHelicity_H #include "ThePEG/Config/Complex.h" #include "ThePEG/Vectors/LorentzVector.h" #include <boost/operators.hpp> namespace Herwig { using namespace ThePEG; namespace SpinorHelicity { /** * \ingroup Matchbox * \author Simon Platzer * * \brief Tag for |p> * */ struct PlusSpinorTag {}; /** * \ingroup Matchbox * \author Simon Platzer * * \brief Tag for |p] * */ struct MinusSpinorTag {}; /** * \ingroup Matchbox * \author Simon Platzer * * \brief Tag for <p| * */ struct PlusConjugateSpinorTag {}; /** * \ingroup Matchbox * \author Simon Platzer * * \brief Tag for [p| * */ struct MinusConjugateSpinorTag {}; /** * \ingroup Matchbox * \author Simon Platzer * * \brief Helpers for commonly encountered types. * */ template<class Value> struct SpinorMultiplicationTraits { typedef typename BinaryOpTraits<Value,Value>::MulT ResultType; typedef complex<ResultType> ComplexResultType; typedef LorentzVector<ComplexResultType> ComplexVectorResultType; }; /** * \ingroup Matchbox * \author Simon Platzer * * \brief Helpers for Weyl spinors * */ template<class Type> struct WeylSpinorTraits; // specialize for |p> template<> struct WeylSpinorTraits<PlusSpinorTag> { template<class Value, class MValue> static pair<complex<Value>,complex<Value> > components(const LorentzVector<MValue>& p) { if ( p.t() < ZERO ) { pair<complex<Value>,complex<Value> > res = components<Value,MValue>(-p); res.first *= Complex(0.,1.); res.second *= Complex(0.,1.); return res; } if ( abs(p.plus()) == ZERO ) { return make_pair(complex<Value>(ZERO), complex<Value>(sqrt(2.*p.t()))); } return make_pair(complex<Value>(sqrt(p.plus())), complex<Value>(p.x()/sqrt(p.plus()),p.y()/sqrt(p.plus()))); } }; // specialize for |p] template<> struct WeylSpinorTraits<MinusSpinorTag> { template<class Value, class MValue> static pair<complex<Value>,complex<Value> > components(const LorentzVector<MValue>& p) { if ( p.t() < ZERO ) { pair<complex<Value>,complex<Value> > res = components<Value,MValue>(-p); res.first *= Complex(0.,1.); res.second *= Complex(0.,1.); return res; } if ( abs(p.plus()) == ZERO ) { return make_pair(complex<Value>(sqrt(2.*p.t())), complex<Value>(ZERO)); } return make_pair(complex<Value>(p.x()/sqrt(p.plus()),-p.y()/sqrt(p.plus())), -complex<Value>(sqrt(p.plus()))); } }; // specialize for <p| template<> struct WeylSpinorTraits<PlusConjugateSpinorTag> { typedef PlusSpinorTag ConjugateSpinorTag; typedef MinusSpinorTag BarSpinorTag; template<class Value, class MValue> static pair<complex<Value>,complex<Value> > components(const LorentzVector<MValue>& p) { pair<complex<Value>,complex<Value> > res = WeylSpinorTraits<PlusSpinorTag>::template components<Value>(p); res.first = -res.first; swap(res.first,res.second); return res; } }; // specialize for [p| template<> struct WeylSpinorTraits<MinusConjugateSpinorTag> { typedef MinusSpinorTag ConjugateSpinorTag; typedef PlusSpinorTag BarSpinorTag; template<class Value, class MValue> static pair<complex<Value>,complex<Value> > components(const LorentzVector<MValue>& p) { pair<complex<Value>,complex<Value> > res = WeylSpinorTraits<MinusSpinorTag>::template components<Value>(p); res.second = -res.second; swap(res.first,res.second); return res; } }; /** * \ingroup Matchbox * \author Simon Platzer * * \brief Base class for Weyl spinors * */ template<class Type, class Value> class WeylSpinor { public: typedef complex<Value> ComplexType; typedef pair<ComplexType,ComplexType> ComponentsType; typedef Type Tag; typedef WeylSpinorTraits<Tag> Traits; typedef Value ValueType; private: /** * The components */ ComponentsType theComponents; public: /** * Construct from components */ explicit WeylSpinor(const ComponentsType& c = ComponentsType()) : theComponents(c) {} /** * Construct from momentum */ template<class MValue> explicit WeylSpinor(const LorentzVector<MValue>& p) : theComponents(Traits::template components<Value>(p)) {} /** * Return the components. */ const ComponentsType& components() const { return theComponents; } /** * Return the first component */ const ComplexType& s1() const { return theComponents.first; } /** * Return the second component */ const ComplexType& s2() const { return theComponents.second; } }; /** Define |p> */ typedef WeylSpinor<PlusSpinorTag,SqrtEnergy> PlusSpinor; /** Define |p] */ typedef WeylSpinor<MinusSpinorTag,SqrtEnergy> MinusSpinor; /** Define <p| */ typedef WeylSpinor<PlusConjugateSpinorTag,SqrtEnergy> PlusConjugateSpinor; /** Define [p| */ typedef WeylSpinor<MinusConjugateSpinorTag,SqrtEnergy> MinusConjugateSpinor; /** * \ingroup Matchbox * \author Simon Platzer * * \brief Weyl spinor product * */ template<class Type, class Value> class SpinorProduct : public boost::addable<SpinorProduct<Type,Value> >, public boost::subtractable<SpinorProduct<Type,Value> >, public boost::multipliable<SpinorProduct<Type,Value>, double>, public boost::multipliable<SpinorProduct<Type,Value>, complex<double> > { public: typedef typename SpinorMultiplicationTraits<Value>::ComplexResultType ResultType; typedef WeylSpinor<Type,Value> LeftSpinorType; typedef typename WeylSpinorTraits<Type>::ConjugateSpinorTag RightSpinorTag; typedef WeylSpinor<RightSpinorTag,Value> RightSpinorType; private: /** * The result. */ ResultType theResult; public: /** * Construct from two spinors; note that the * spinor metric is included, when constructing spinors. * Typedefs break zero products like <p|q] */ explicit SpinorProduct(const LeftSpinorType& left, const RightSpinorType& right) : theResult(left.s1()*right.s1()+left.s2()*right.s2()) {} /** * Implicitly convert to complex value */ operator ResultType() const { return theResult; } /** * Return result */ ResultType eval() const { return theResult; } public: SpinorProduct& operator+= (const SpinorProduct& other) { theResult += other.theResult; return *this; } SpinorProduct& operator-= (const SpinorProduct& other) { theResult -= other.theResult; return *this; } SpinorProduct& operator*= (double x) { theResult *= x; return *this; } SpinorProduct& operator*= (complex<double> x) { theResult *= x; return *this; } }; /** Define <pq> */ typedef SpinorProduct<PlusConjugateSpinorTag,SqrtEnergy> PlusSpinorProduct; /** Define [pq] */ typedef SpinorProduct<MinusConjugateSpinorTag,SqrtEnergy> MinusSpinorProduct; /** * \ingroup Matchbox * \author Simon Platzer * * \brief Weyl spinor current. * */ template<class Type, class Value> class SpinorCurrent : public boost::addable<SpinorCurrent<Type,Value> >, public boost::subtractable<SpinorCurrent<Type,Value> >, public boost::multipliable<SpinorCurrent<Type,Value>, double>, public boost::multipliable<SpinorCurrent<Type,Value>, complex<double> > { public: typedef typename SpinorMultiplicationTraits<Value>::ComplexVectorResultType ResultType; typedef WeylSpinor<Type,Value> LeftSpinorType; typedef typename WeylSpinorTraits<Type>::BarSpinorTag RightSpinorTag; typedef WeylSpinor<RightSpinorTag,Value> RightSpinorType; private: ResultType theResult; /** * Calculate [p|\gamma^\mu|q> */ ResultType evaluate(const WeylSpinor<MinusConjugateSpinorTag,Value>& left, const WeylSpinor<PlusSpinorTag,Value>& right) { return ResultType(right.s1()*left.s2()+right.s2()*left.s1(), complex<double>(0.,1.)*(right.s1()*left.s2()-right.s2()*left.s1()), right.s1()*left.s1()-right.s2()*left.s2(), right.s1()*left.s1()+right.s2()*left.s2()); } /** * Calculate <p|\gamma^\mu|q] */ ResultType evaluate(const WeylSpinor<PlusConjugateSpinorTag,Value>& left, const WeylSpinor<MinusSpinorTag,Value>& right) { return ResultType(-right.s1()*left.s2()-right.s2()*left.s1(), -complex<double>(0.,1.)*(right.s1()*left.s2()-right.s2()*left.s1()), -right.s1()*left.s1()+right.s2()*left.s2(), right.s1()*left.s1()+right.s2()*left.s2()); } public: /** * Construct from two spinors. * Typedefs break zero products like <p|\gamma^\mu|q> */ explicit SpinorCurrent(const LeftSpinorType& left, const RightSpinorType& right) : theResult(evaluate(left,right)) {} /** * Implicitly convert to complex Lorentz vector */ operator ResultType() const { return theResult; } /** * Return result */ ResultType eval() const { return theResult; } public: SpinorCurrent& operator+= (const SpinorCurrent& other) { theResult += other.theResult; return *this; } SpinorCurrent& operator-= (const SpinorCurrent& other) { theResult -= other.theResult; return *this; } SpinorCurrent& operator*= (double x) { theResult *= x; return *this; } SpinorCurrent& operator*= (complex<double> x) { theResult *= x; return *this; } }; /** Define <p|\gamma^\mu|q] */ typedef SpinorCurrent<PlusConjugateSpinorTag,SqrtEnergy> PlusSpinorCurrent; /** Define [p|\gamma^\mu|q> */ typedef SpinorCurrent<MinusConjugateSpinorTag,SqrtEnergy> MinusSpinorCurrent; /** * Return |c|^2 */ template<class T> typename BinaryOpTraits<T,T>::MulT abs2(const complex<T>& x) { return (x*conj(x)).real(); } } } #endif // HERWIG_SpinorHelicity_H �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/MatchboxLeptonMassScale.cc�����������������������0000644�0001750�0001750�00000005574�11754474775�030033� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxLeptonMassScale.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxLeptonMassScale class. // #include "MatchboxLeptonMassScale.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.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; MatchboxLeptonMassScale::MatchboxLeptonMassScale() {} MatchboxLeptonMassScale::~MatchboxLeptonMassScale() {} IBPtr MatchboxLeptonMassScale::clone() const { return new_ptr(*this); } IBPtr MatchboxLeptonMassScale::fullclone() const { return new_ptr(*this); } Energy2 MatchboxLeptonMassScale::renormalizationScale() const { int firstLepton = -1; int secondLepton = -1; for ( size_t k = 0; k < mePartonData().size(); ++k ) { if ( abs(mePartonData()[k]->id()) > 10 && abs(mePartonData()[k]->id()) < 17 ) { if ( firstLepton < 0 ) { firstLepton = k; } else if ( secondLepton < 0 ) { secondLepton = k; } else break; } } if ( (firstLepton < 2 && secondLepton > 1) || (firstLepton > 1 && secondLepton < 2) ) return abs((meMomenta()[firstLepton] - meMomenta()[secondLepton]).m2()); return (meMomenta()[firstLepton] + meMomenta()[secondLepton]).m2(); } Energy2 MatchboxLeptonMassScale::factorizationScale() const { return renormalizationScale(); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxLeptonMassScale::persistentOutput(PersistentOStream &) const {} void MatchboxLeptonMassScale::persistentInput(PersistentIStream &, int) {} // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<MatchboxLeptonMassScale,MatchboxScaleChoice> describeHerwigMatchboxLeptonMassScale("Herwig::MatchboxLeptonMassScale", "HwMatchbox.so"); void MatchboxLeptonMassScale::Init() { static ClassDocumentation<MatchboxLeptonMassScale> documentation ("MatchboxLeptonMassScale implements scale choices related " "to lepton pair invariant masses."); } ������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/ColourBasis.h������������������������������������0000644�0001750�0001750�00000030440�11754474775�025365� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ColourBasis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ColourBasis_H #define HERWIG_ColourBasis_H // // This is the declaration of the ColourBasis class. // #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/MatrixElement/MEBase.h" #include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/matrix_sparse.hpp> #include <boost/numeric/ublas/symmetric.hpp> #include <boost/numeric/ublas/vector.hpp> #include <iterator> namespace Herwig { using std::iterator_traits; using std::distance; using namespace ThePEG; using boost::numeric::ublas::matrix; using boost::numeric::ublas::symmetric_matrix; using boost::numeric::ublas::compressed_matrix; using boost::numeric::ublas::upper; /** * \ingroup Matchbox * \author Simon Platzer * * \brief Define compolex vector from boost::uBLAS * */ typedef boost::numeric::ublas::vector<Complex> CVector; /** * \ingroup Matchbox * \author Simon Platzer * * \brief ColourBasis is an interface to a colour basis * implementation. * */ class ColourBasis: public HandlerBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ ColourBasis(); /** * The destructor. */ virtual ~ColourBasis(); //@} public: /** * Prepare for the given sub process and return the basis * dimensionality. */ size_t prepare(const cPDVector&, bool); /** * Prepare for the given diagrams. */ size_t prepare(const MEBase::DiagramVector&, bool); /** * Return the index map. */ const map<cPDVector,map<size_t,size_t> >& indexMap() const { return theIndexMap; } /** * For the given subprocess and amplitude vectors * calculate the amplitude squared. */ double me2(const cPDVector&, const map<vector<int>,CVector>&) const; /** * For the given subprocess and amplitude vectors * calculate the interference. */ double interference(const cPDVector&, const map<vector<int>,CVector>&, const map<vector<int>,CVector>&) const; /** * For the given subprocess and amplitude vector * calculate the colour correlated amplitude. */ double colourCorrelatedME2(const pair<size_t,size_t>&, const cPDVector&, const map<vector<int>,CVector>&) const; /** * For the given subprocess and amplitude vector * calculate the amplitude squared. */ Complex interference(const cPDVector&, const CVector&, const CVector&) const; /** * For the given subprocess and amplitude vector * calculate the colour correlated amplitude. */ Complex colourCorrelatedInterference(const pair<size_t,size_t>&, const cPDVector&, const CVector&, const CVector&) const; /** * For the given subprocess and amplitude given as amp amp^\dagger * calculate the amplitude squared. */ double me2(const cPDVector&, const matrix<Complex>&) const; /** * For the given subprocess and amplitude given as amp amp^\dagger * calculate the colour correlated amplitude. */ double colourCorrelatedME2(const pair<size_t,size_t>&, const cPDVector&, const matrix<Complex>&) const; /** * Return the scalar product matrix for the given process. */ const symmetric_matrix<double,upper>& scalarProducts(const cPDVector&) const; /** * Return the matrix representation of a colour charge. */ const compressed_matrix<double>& charge(const cPDVector&, size_t) const; /** * Return the non-vanishing elements of a colour charge. */ const vector<pair<size_t,size_t> >& chargeNonZero(const cPDVector&, size_t) const; /** * Return the correlator matrix for the given process. */ const symmetric_matrix<double,upper>& correlator(const cPDVector&, const pair<size_t,size_t>&) const; /** * Return true, if the colour basis is capable of assigning colour * flows. */ virtual bool haveColourFlows() const { return false; } /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. */ Selector<const ColourLines *> colourGeometries(tcDiagPtr diag, const map<vector<int>,CVector>& amps); /** * Match colour representation. */ struct matchRep { PDT::Colour m; matchRep(PDT::Colour n) : m(n) {} bool operator()(PDT::Colour c) const { return c == m; } }; /** * Return true, if this basis is running in large-N mode */ virtual bool largeN() const { return false; } /** * Convert particle data to colour information */ vector<PDT::Colour> projectColour(const cPDVector&) const; /** * Perform a normal ordering of the external legs. This default * implementation assumes normal ordered legs as 3 3bar ... 3 3bar 8 ... 8 * while removing all non-coloured particles. */ virtual vector<PDT::Colour> normalOrder(const vector<PDT::Colour>&) const; /** * Determine the mapping of process to colour indices and return the * normal ordered vector of colour indices */ vector<PDT::Colour> normalOrderMap(const cPDVector& sub); /** * Convert the legs to a string. */ string file(const vector<PDT::Colour>&) const; /** * Calculate T_i^\dagger X T_j */ void chargeProduct(const compressed_matrix<double>& ti, const vector<pair<size_t,size_t> >& tiNonZero, const symmetric_matrix<double,upper>& X, const compressed_matrix<double>& tj, const vector<pair<size_t,size_t> >& tjNonZero, symmetric_matrix<double,upper>& result) const; /** * Calculate T_i X T_j^\dagger */ void chargeProductAdd(const compressed_matrix<double>& ti, const vector<pair<size_t,size_t> >& tiNonZero, const matrix<Complex>& X, const compressed_matrix<double>& tj, const vector<pair<size_t,size_t> >& tjNonZero, matrix<Complex>& result, double factor = 1.) const; public: /** * Find a coloured path from a to b within the given diagram. */ static list<pair<int,bool> > colouredPath(pair<int,bool> a, pair<int,bool> b, Ptr<Tree2toNDiagram>::tcptr); /** * Get all colour flows for the given diagram. */ static list<list<list<pair<int,bool> > > > colourFlows(Ptr<Tree2toNDiagram>::tcptr); /** * Convert a flow to a string representation appropriate for * ColourLines */ static string cfstring(const list<list<pair<int,bool> > >&); protected: /** * Prepare the basis for the normal ordered legs and return the * dimensionality of the basis. */ virtual size_t prepareBasis(const vector<PDT::Colour>&) = 0; /** * Return the scalar product of basis tensors labelled a and b in * the basis used for the given normal ordered legs. */ virtual double scalarProduct(size_t a, size_t b, const vector<PDT::Colour>& abBasis) const = 0; /** * Return the matrix element of a colour charge * <c_{n+1,a}|T_i|c_{n,b}> between basis tensors a and b, with * respect to aBasis and bBasis */ virtual double tMatrixElement(size_t i, size_t a, size_t b, const vector<PDT::Colour>& aBasis, const vector<PDT::Colour>& bBasis) const = 0; /** * Return true, if a large-N colour connection exists for the * given external legs and basis tensor. */ virtual bool colourConnected(const cPDVector&, const vector<PDT::Colour>&, const pair<int,bool>&, const pair<int,bool>&, size_t) const { return false; } /** * Match up colour flows for given diagram to basis tensors. */ vector<string> makeFlows(Ptr<Tree2toNDiagram>::tcptr, size_t) const; /** * Return the colour line map. */ map<Ptr<Tree2toNDiagram>::tcptr,vector<ColourLines*> >& colourLineMap(); 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: typedef map<vector<PDT::Colour>,symmetric_matrix<double,upper> > ScalarProductMap; typedef map<vector<PDT::Colour>,map<size_t,compressed_matrix<double> > > ChargeMap; typedef map<vector<PDT::Colour>,map<size_t,vector<pair<size_t,size_t > > > > ChargeNonZeroMap; typedef map<vector<PDT::Colour>,map<pair<size_t,size_t>,symmetric_matrix<double,upper> > > CorrelatorMap; /** * A search path for already calculated and stored matrices. */ string theSearchPath; /** * Map external legs to normal ordered versions */ map<cPDVector,vector<PDT::Colour> > theNormalOrderedLegs; /** * Index mappings to normal order from given leg assignments, * indexed by the original leg assignment. */ map<cPDVector,map<size_t,size_t> > theIndexMap; /** * The scalar product matrix S_n = <c_{n,a}|c_{n,b}> , indexed * by normal ordered leg assignments. */ ScalarProductMap theScalarProducts; /** * The colour charge matrices <c_{n+1,a}|T_i|c_{n,b}> indexed by * the `n' normal ordered legs and the index i. */ ChargeMap theCharges; /** * The nonzero elements of the charge matrices. */ ChargeNonZeroMap theChargeNonZeros; /** * The correlator matrices T_i\cdot T_j -> T_i^\dagger S_{n+1} T_j * with T_i = <c_{n+1,a}|T_i|c_{n,b}> indexed by the `n' basis * normal ordered legs and indices i,j */ CorrelatorMap theCorrelators; /** * Map diagrams to colour flows indexed by basis tensor. */ map<Ptr<Tree2toNDiagram>::tcptr,vector<string> > theFlowMap; /** * Map diagrams to colour line objects. */ map<Ptr<Tree2toNDiagram>::tcptr,vector<ColourLines*> > theColourLineMap; /** * Write out yet unknown basis computations. */ void writeBasis(const string& prefix = "") const; /** * Read in the basis computation which are supposed to be known. */ void readBasis(); /** * Read in the basis computation which are supposed to be known. */ bool readBasis(const vector<PDT::Colour>&); /** * Write out symmetric matrices. */ void write(const symmetric_matrix<double,upper>&, ostream&) const; /** * Read in symmetric matrices. */ void read(symmetric_matrix<double,upper>&, istream&); /** * Write out compressed matrices. */ void write(const compressed_matrix<double>&, ostream&, const vector<pair<size_t,size_t> >&) const; /** * Read in compressed matrices. */ void read(compressed_matrix<double>&, istream&, vector<pair<size_t,size_t> >&); /** * True, if an attempt to read in basis information has been * completed. */ bool didRead; /** * True, if an attempt to write out basis information has been * completed. */ mutable bool didWrite; /** * Temporary storage. */ matrix<double> tmp; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ColourBasis & operator=(const ColourBasis &); }; } #endif /* HERWIG_ColourBasis_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/SU2Helper.cc�������������������������������������0000644�0001750�0001750�00000001654�11754474775�025054� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SU2Helper.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #include "SU2Helper.h" #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Repository/Repository.h" using namespace Herwig; tcPDPtr SU2Helper::SU2CC(tcPDPtr p) { if ( !isInSU2Doublet(p) ) return tcPDPtr(); PID idUp = p->id() < 0 ? p->id() + 1 : p->id() - 1; PID idDown = p->id() < 0 ? p->id() - 1 : p->id() + 1; if ( !CurrentGenerator::isVoid() ) return isSU2Up(p) ? CurrentGenerator::current().getParticleData(idUp) : CurrentGenerator::current().getParticleData(idDown); return isSU2Up(p) ? Repository::defaultParticle(idUp) : Repository::defaultParticle(idDown); } ������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/Makefile.in��������������������������������������0000644�0001750�0001750�00000046307�11756461700�025027� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/Matchbox/Utility DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwMatchboxUtility_la_LIBADD = am_libHwMatchboxUtility_la_OBJECTS = ColourBasis.lo DiagramDrawer.lo \ MatchboxMECache.lo MatchboxPtScale.lo \ MatchboxLeptonMassScale.lo MatchboxScaleChoice.lo \ SimpleColourBasis.lo SU2Helper.lo Tree2toNGenerator.lo libHwMatchboxUtility_la_OBJECTS = \ $(am_libHwMatchboxUtility_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwMatchboxUtility_la_SOURCES) DIST_SOURCES = $(libHwMatchboxUtility_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwMatchboxUtility.la libHwMatchboxUtility_la_SOURCES = \ AmplitudeCache.h \ AmplitudeCache.tcc \ ColourBasis.cc \ ColourBasis.h \ DiagramDrawer.cc \ DiagramDrawer.h \ MatchboxMECache.cc \ MatchboxMECache.h \ MatchboxPtScale.h \ MatchboxPtScale.cc \ MatchboxLeptonMassScale.h \ MatchboxLeptonMassScale.cc \ MatchboxScaleChoice.cc \ MatchboxScaleChoice.h \ SimpleColourBasis.cc \ SimpleColourBasis.h \ SpinCorrelationTensor.h \ SpinorHelicity.h \ SU2Helper.cc \ SU2Helper.h \ Tree2toNGenerator.cc \ Tree2toNGenerator.h all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/Matchbox/Utility/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/Matchbox/Utility/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwMatchboxUtility.la: $(libHwMatchboxUtility_la_OBJECTS) $(libHwMatchboxUtility_la_DEPENDENCIES) $(EXTRA_libHwMatchboxUtility_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwMatchboxUtility_la_OBJECTS) $(libHwMatchboxUtility_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ColourBasis.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DiagramDrawer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxLeptonMassScale.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxMECache.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxPtScale.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxScaleChoice.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SU2Helper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleColourBasis.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Tree2toNGenerator.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/SU2Helper.h��������������������������������������0000644�0001750�0001750�00000003317�11754474775�024714� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SU2Helper.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SU2Helper_H #define HERWIG_SU2Helper_H #include "ThePEG/PDT/ParticleData.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Ken Arnold, Simon Platzer * * \brief Helpers for book keeping in electroweak processes. * * @see \ref MatchboxMEBaseInterfaces "The interfaces" * defined for MatchboxMEBase. */ struct SU2Helper { /** * Return true, if the left-(right-)handed projection of * this particle (antiparticle) belongs to a weak * SU(2) doublet. */ static bool isInSU2Doublet(tcPDPtr p) { return abs(p->id()) < 9 || (abs(p->id()) >= 11 && abs(p->id()) < 19); } /** * Return true, if the left-(right-)handed projection of * this particle (antiparticle) is the up component of a weak * SU(2) doublet. */ static bool isSU2Up(tcPDPtr p) { return abs(p->id())%2==0 && isInSU2Doublet(p); } /** * Return true, if the left-(right-)handed projection of * this particle (antiparticle) is the down component of a weak * SU(2) doublet. */ static bool isSU2Down(tcPDPtr p) { return abs(p->id())%2!=0 && isInSU2Doublet(p); } /** * Return the conjugate component in the same weak SU(2) * doublet, or a null pointer if the left-(right-)handed * projection of this particle (antiparticle) does not belong * to a weak SU(2) doublet. */ static tcPDPtr SU2CC(tcPDPtr p); }; } #endif // HERWIG_SU2Helper_H �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/MatchboxPtScale.h��������������������������������0000644�0001750�0001750�00000005307�11754474775�026165� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxPtScale.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_MatchboxPtScale_H #define Herwig_MatchboxPtScale_H // // This is the declaration of the MatchboxPtScale class. // #include "Herwig++/MatrixElement/Matchbox/Utility/MatchboxScaleChoice.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxPtScale implements scale choices related to transverse momenta. * */ class MatchboxPtScale: public MatchboxScaleChoice { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxPtScale(); /** * The destructor. */ virtual ~MatchboxPtScale(); //@} public: /** * Return the renormalization scale. This default version returns * shat. */ virtual Energy2 renormalizationScale() const; /** * Return the factorization scale. This default version returns * shat. */ virtual Energy2 factorizationScale() 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxPtScale & operator=(const MatchboxPtScale &); }; } #endif /* Herwig_MatchboxPtScale_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/MatchboxMECache.h��������������������������������0000644�0001750�0001750�00000011632�11754474775�026055� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMECache.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_MatchboxMECache_H #define Herwig_MatchboxMECache_H // // This is the declaration of the MatchboxMECache class. // #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Handlers/LastXCombInfo.h" #include <boost/functional/hash.hpp> namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxMECache provides caching for matrix elements. * */ class MatchboxMECache: public HandlerBase, public LastXCombInfo<StandardXComb> { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxMECache(); /** * The destructor. */ virtual ~MatchboxMECache(); //@} public: /** * Set the XComb object. */ virtual void setXComb(tStdXCombPtr xc) { theLastXComb = xc; } /** * Flush the cache. */ void flush() { theME2Cache.clear(); } /** * Caluclate a hash value for the phase space * point contained in meMomenta(). The hash value * is calculated using only the spatial components * of the outgoing partons, thus assuming momentum * conservation and definite and constant mass shells * for each outgoing particle. */ size_t hashPhaseSpace() const; /** * Return true, if the matrix element needs to be * recalculated for the given phase space point. * If not, return the cached value in the given reference. */ bool calculateME2(double& xme2, const pair<int,int>& corr = make_pair(0,0)); /** * Cache a calculated matrix element * for the last phase space point. */ void cacheME2(double xme2, const pair<int,int>& corr = make_pair(0,0)); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * Helper for cache indexing. */ struct MECacheKey { /** * The phasespace hash */ size_t phasespaceHash; /** * The process. */ const cPDVector& process; /** * Initialize the ref. */ static const cPDVector& initProcess() { static cPDVector value; return value; } /** * Additional id to identify correlated ME's squared. */ pair<int,int> corrIds; /** * Default constructor. */ MECacheKey() : phasespaceHash(0), process(initProcess()), corrIds(0,0) {} /** * Standard constructor. */ MECacheKey(size_t pshash, const cPDVector& proc, const pair<int,int>& cids) : phasespaceHash(pshash), process(proc), corrIds(cids) {} /** * Compare for equality */ inline bool operator==(const MECacheKey& x) const { return phasespaceHash == x.phasespaceHash && process == x.process && corrIds == x.corrIds; } /** * Compare for ordering */ inline bool operator<(const MECacheKey& x) const { if ( phasespaceHash != x.phasespaceHash ) return phasespaceHash < x.phasespaceHash; if ( process != x.process ) return process < x.process; return corrIds < x.corrIds; } }; /** * Map process and phase space hashes to already calculated matrix * elements. @todo This goes to XComb::meta ... but who does it? */ map<MECacheKey,double> theME2Cache; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxMECache & operator=(const MatchboxMECache &); }; } #endif /* Herwig_MatchboxMECache_H */ ������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/SimpleColourBasis.h������������������������������0000644�0001750�0001750�00000010061�11754474775�026534� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SimpleColourBasis.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_SimpleColourBasis_H #define Herwig_SimpleColourBasis_H // // This is the declaration of the SimpleColourBasis class. // #include "Herwig++/MatrixElement/Matchbox/Utility/ColourBasis.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief SimpleColourBasis implements the colour algebra needed for * vector boson and vector boson + jet production at NLO. It mainly * serves as an example for the general ColourBasis interface. * */ class SimpleColourBasis: public ColourBasis { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ SimpleColourBasis(); /** * The destructor. */ virtual ~SimpleColourBasis(); //@} public: /** * Prepare the basis for the normal ordered legs and return the * dimensionality of the basis. */ virtual size_t prepareBasis(const vector<PDT::Colour>&); /** * Return the scalar product of basis tensors labelled a and b in * the basis used for the given normal ordered legs. */ virtual double scalarProduct(size_t a, size_t b, const vector<PDT::Colour>& abBasis) const; /** * Return the matrix element of a colour charge * <c_{n+1,a}|T_i|c_{n,b}> between basis tensors a and b, with * respect to aBasis and bBasis */ virtual double tMatrixElement(size_t i, size_t a, size_t b, const vector<PDT::Colour>& aBasis, const vector<PDT::Colour>& bBasis) const; /** * Return true, if a large-N colour connection exists for the * given external legs and basis tensor. */ virtual bool colourConnected(const cPDVector&, const vector<PDT::Colour>&, const pair<int,bool>&, const pair<int,bool>&, size_t) const; /** * Return true, if the colour basis is capable of assigning colour * flows. */ virtual bool haveColourFlows() const { return true; } /** * Create ids for bases */ void makeIds() 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * id for 33bar */ mutable vector<PDT::Colour> id33bar; /** * id for 33bar8 */ mutable vector<PDT::Colour> id33bar8; /** * id for 33bar88 */ mutable vector<PDT::Colour> id33bar88; /** * id for 33bar33bar */ mutable vector<PDT::Colour> id33bar33bar; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SimpleColourBasis & operator=(const SimpleColourBasis &); }; } #endif /* Herwig_SimpleColourBasis_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/AmplitudeCache.tcc�������������������������������0000644�0001750�0001750�00000004232�11754474775�026332� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // AmplitudeCache.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // namespace Herwig { namespace SpinorHelicity { template<class AmplitudeKey> void AmplitudeCache<AmplitudeKey>::nPoints(int n) { theNPoints = n; theMasses.clear(); theMomenta.clear(); theCrossingSigns.clear(); thePlusSpinors.clear(); thePlusConjugateSpinors.clear(); theInvariants.clear(); thePlusProducts.clear(); thePlusCurrents.clear(); getInvariant.clear(); getPlusProduct.clear(); getPlusCurrent.clear(); theMasses.resize(n); theMomenta.resize(n); theCrossingSigns.resize(n); thePlusSpinors.resize(n); thePlusConjugateSpinors.resize(n); theInvariants.resize(n,vector<double>(n)); thePlusProducts.resize(n,vector<Complex>(n)); thePlusCurrents.resize(n,vector<LorentzVector<Complex> >(n)); getInvariant.resize(n,vector<bool>(n)); getPlusProduct.resize(n,vector<bool>(n)); getPlusCurrent.resize(n,vector<bool>(n)); reset(); } template<class AmplitudeKey> void AmplitudeCache<AmplitudeKey>::amplitudeScale(Energy s) const { theScale = s; reset(); } template<class AmplitudeKey> void AmplitudeCache<AmplitudeKey>::momentum(int k, const LorentzMomentum& p, bool getSpinors, Energy mass) const { theMasses[k] = mass/theScale; theMomenta[k] = p; if ( getSpinors ) { theCrossingSigns[k] = p.t() > ZERO ? 1 : -1; thePlusSpinors[k] = PlusSpinor(p); thePlusConjugateSpinors[k] = PlusConjugateSpinor(p); } } template<class AmplitudeKey> void AmplitudeCache<AmplitudeKey>::reset() const { for_each(getInvariant.begin(),getInvariant.end(),boolVectorResetter()); for_each(getPlusProduct.begin(),getPlusProduct.end(),boolVectorResetter()); for_each(getPlusCurrent.begin(),getPlusCurrent.end(),boolVectorResetter()); for_each(theCachedAmplitudes.begin(),theCachedAmplitudes.end(),boolResetter()); for_each(theCachedCurrents.begin(),theCachedCurrents.end(),boolResetter()); } }} ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/MatchboxScaleChoice.cc���������������������������0000644�0001750�0001750�00000004632�11754474775�027132� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxScaleChoice.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxScaleChoice class. // #include "MatchboxScaleChoice.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.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; MatchboxScaleChoice::MatchboxScaleChoice() : theFixedScale(ZERO) {} MatchboxScaleChoice::~MatchboxScaleChoice() {} IBPtr MatchboxScaleChoice::clone() const { return new_ptr(*this); } IBPtr MatchboxScaleChoice::fullclone() const { return new_ptr(*this); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxScaleChoice::persistentOutput(PersistentOStream & os) const { os << theLastXComb << ounit(theFixedScale,GeV); } void MatchboxScaleChoice::persistentInput(PersistentIStream & is, int) { is >> theLastXComb >> iunit(theFixedScale,GeV); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<MatchboxScaleChoice,HandlerBase> describeHerwigMatchboxScaleChoice("Herwig::MatchboxScaleChoice", "HwMatchbox.so"); void MatchboxScaleChoice::Init() { static ClassDocumentation<MatchboxScaleChoice> documentation ("MatchboxScaleChoice is the base class for scale choices " "within Matchbox."); static Parameter<MatchboxScaleChoice,Energy> interfaceFixedScale ("FixedScale", "Set a fixed scale.", &MatchboxScaleChoice::theFixedScale, GeV, 0.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); } ������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/MatchboxPtScale.cc�������������������������������0000644�0001750�0001750�00000004650�11754474775�026323� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxPtScale.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxPtScale class. // #include "MatchboxPtScale.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.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; MatchboxPtScale::MatchboxPtScale() {} MatchboxPtScale::~MatchboxPtScale() {} IBPtr MatchboxPtScale::clone() const { return new_ptr(*this); } IBPtr MatchboxPtScale::fullclone() const { return new_ptr(*this); } Energy2 MatchboxPtScale::renormalizationScale() const { cPDVector::const_iterator pd = mePartonData().begin() + 2; vector<Lorentz5Momentum>::const_iterator p = meMomenta().begin() + 2; Energy2 maxpt2 = ZERO; for ( ; p != meMomenta().end(); ++p, ++pd ) if ( (**pd).coloured() ) maxpt2 = max(maxpt2,(*p).perp2()); return maxpt2; } Energy2 MatchboxPtScale::factorizationScale() const { return renormalizationScale(); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxPtScale::persistentOutput(PersistentOStream &) const {} void MatchboxPtScale::persistentInput(PersistentIStream &, int) {} // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<MatchboxPtScale,MatchboxScaleChoice> describeHerwigMatchboxPtScale("Herwig::MatchboxPtScale", "HwMatchbox.so"); void MatchboxPtScale::Init() { static ClassDocumentation<MatchboxPtScale> documentation ("MatchboxPtScale implements scale choices related to transverse momenta."); } ����������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/DiagramDrawer.h����������������������������������0000644�0001750�0001750�00000001430�11754474775�025646� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DiagramDrawer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_DiagramDrawer_H #define Herwig_DiagramDrawer_H #include "ThePEG/MatrixElement/Tree2toNDiagram.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief DiagramDrawer draws ASCII output from Tree2toNDiagram * objects for diagnostic purposes. * */ struct DiagramDrawer { /** * Draw a diagram */ static void drawDiag(ostream&,const Tree2toNDiagram&); }; } #endif // Herwig_DiagramDrawer_H ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/ColourBasis.cc�����������������������������������0000644�0001750�0001750�00000073443�11754474775�025535� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ColourBasis.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ColourBasis class. // #include "ColourBasis.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.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 <boost/numeric/ublas/io.hpp> #include <boost/numeric/ublas/matrix_proxy.hpp> #include "DiagramDrawer.h" using namespace Herwig; using boost::numeric::ublas::trans; using boost::numeric::ublas::conj; using boost::numeric::ublas::row; using boost::numeric::ublas::column; using boost::numeric::ublas::prod; ColourBasis::ColourBasis() : theSearchPath("."),didRead(false), didWrite(false) {} ColourBasis::~ColourBasis() { for ( map<Ptr<Tree2toNDiagram>::tcptr,vector<ColourLines*> >::iterator cl = theColourLineMap.begin(); cl != theColourLineMap.end(); ++cl ) { for ( vector<ColourLines*>::iterator c = cl->second.begin(); c != cl->second.end(); ++c ) { if ( *c ) delete *c; } } theColourLineMap.clear(); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). vector<PDT::Colour> ColourBasis::normalOrderMap(const cPDVector& sub) { vector<PDT::Colour> allLegs = projectColour(sub); vector<PDT::Colour> legs = normalOrder(allLegs); if ( allLegs[0] == PDT::Colour3 ) allLegs[0] = PDT::Colour3bar; else if ( allLegs[0] == PDT::Colour3bar ) allLegs[0] = PDT::Colour3; if ( allLegs[1] == PDT::Colour3 ) allLegs[1] = PDT::Colour3bar; else if ( allLegs[1] == PDT::Colour3bar ) allLegs[1] = PDT::Colour3; if ( theIndexMap.find(sub) == theIndexMap.end() ) { map<size_t,size_t> trans; vector<PDT::Colour> checkLegs = legs; size_t n = checkLegs.size(); for ( size_t i = 0; i < allLegs.size(); ++i ) { size_t j = 0; while ( checkLegs[j] != allLegs[i] ) { ++j; if ( j == n ) break; } if ( j == n ) continue; trans[i] = j; checkLegs[j] = PDT::ColourUndefined; } theIndexMap[sub] = trans; } return legs; } size_t ColourBasis::prepare(const cPDVector& sub, bool noCorrelations) { vector<PDT::Colour> legs = normalOrderMap(sub); bool doPrepare = false; if ( theNormalOrderedLegs.find(sub) == theNormalOrderedLegs.end() ) theNormalOrderedLegs[sub] = legs; if ( theScalarProducts.find(legs) == theScalarProducts.end() ) doPrepare = true; if ( doPrepare ) doPrepare = !readBasis(legs); size_t dim = doPrepare ? prepareBasis(legs) : theScalarProducts[legs].size1(); if ( theCharges.find(legs) != theCharges.end() ) return dim; if ( !doPrepare && noCorrelations ) return dim; symmetric_matrix<double,upper>& sp = theScalarProducts.insert(make_pair(legs,symmetric_matrix<double,upper>(dim,dim))).first->second; for ( size_t a = 0; a < dim; ++a ) for ( size_t b = a; b < dim; ++b ) sp(a,b) = scalarProduct(a,b,legs); if ( noCorrelations ) return dim; vector<PDT::Colour> legsPlus = legs; legsPlus.push_back(PDT::Colour8); legsPlus = normalOrder(legsPlus); bool doPreparePlus = theScalarProducts.find(legsPlus) == theScalarProducts.end(); size_t dimPlus = doPreparePlus ? prepareBasis(legsPlus) : theScalarProducts[legsPlus].size1(); symmetric_matrix<double,upper>& spPlus = doPreparePlus ? theScalarProducts.insert(make_pair(legsPlus,symmetric_matrix<double,upper>(dimPlus,dimPlus))).first->second : theScalarProducts[legsPlus]; if ( doPreparePlus ) { for ( size_t a = 0; a < dimPlus; ++a ) for ( size_t b = a; b < dimPlus; ++b ) spPlus(a,b) = scalarProduct(a,b,legsPlus); } typedef map<size_t,compressed_matrix<double> > cMap; cMap& cm = theCharges.insert(make_pair(legs,cMap())).first->second; typedef map<size_t,vector<pair<size_t,size_t> > > ccMap; ccMap& ccm = theChargeNonZeros.insert(make_pair(legs,ccMap())).first->second; tmp.resize(dimPlus,dim); for ( size_t i = 0; i < legs.size(); ++i ) { size_t nonZero = 0; vector<pair<size_t,size_t> > nonZeros; for ( size_t a = 0; a < dimPlus; ++a ) for ( size_t b = 0; b < dim; ++b ) { tmp(a,b) = tMatrixElement(i,a,b,legsPlus,legs); if ( tmp(a,b) != 0. ) { ++nonZero; nonZeros.push_back(make_pair(a,b)); } } ccm.insert(make_pair(i,nonZeros)); compressed_matrix<double>& tm = cm.insert(make_pair(i,compressed_matrix<double>(dimPlus,dim,nonZero))).first->second; for ( size_t a = 0; a < dimPlus; ++a ) for ( size_t b = 0; b < dim; ++b ) { if ( tmp(a,b) != 0. ) tm(a,b) = tmp(a,b); } } map<pair<size_t,size_t>,symmetric_matrix<double,upper> >& xm = theCorrelators[legs]; for ( size_t i = 0; i < legs.size(); ++i ) for ( size_t j = i+1; j < legs.size(); ++j ) { symmetric_matrix<double,upper>& mm = xm.insert(make_pair(make_pair(i,j),symmetric_matrix<double,upper>(dim,dim))).first->second; chargeProduct(cm[i],ccm[i],spPlus,cm[j],ccm[j],mm); } return dim; } void ColourBasis::chargeProduct(const compressed_matrix<double>& ti, const vector<pair<size_t,size_t> >& tiNonZero, const symmetric_matrix<double,upper>& X, const compressed_matrix<double>& tj, const vector<pair<size_t,size_t> >& tjNonZero, symmetric_matrix<double,upper>& result) const { for ( size_t i = 0; i < result.size1(); ++i ) for ( size_t j = i; j < result.size1(); ++j ) result(i,j) = 0.; for ( vector<pair<size_t,size_t> >::const_iterator i = tiNonZero.begin(); i != tiNonZero.end(); ++i ) for ( vector<pair<size_t,size_t> >::const_iterator j = tjNonZero.begin(); j != tjNonZero.end(); ++j ) { if ( j->second < i->second ) continue; result(i->second,j->second) += ti(i->first,i->second)*tj(j->first,j->second)*X(i->first,j->first); } } void ColourBasis::chargeProductAdd(const compressed_matrix<double>& ti, const vector<pair<size_t,size_t> >& tiNonZero, const matrix<Complex>& X, const compressed_matrix<double>& tj, const vector<pair<size_t,size_t> >& tjNonZero, matrix<Complex>& result, double factor) const { for ( vector<pair<size_t,size_t> >::const_iterator i = tiNonZero.begin(); i != tiNonZero.end(); ++i ) for ( vector<pair<size_t,size_t> >::const_iterator j = tjNonZero.begin(); j != tjNonZero.end(); ++j ) { result(i->first,j->first) += factor* ti(i->first,i->second)*tj(j->first,j->second)*X(i->second,j->second); } } string ColourBasis::cfstring(const list<list<pair<int,bool> > >& flow) { ostringstream out(""); for ( list<list<pair<int,bool> > >::const_iterator line = flow.begin(); line != flow.end(); ++line ) { for ( list<pair<int,bool> >::const_iterator node = line->begin(); node != line->end(); ++node ) { out << (node->second ? "-" : "") << (node->first+1) << " "; } if ( line != --(flow.end()) ) out << ", "; } return out.str(); } vector<string> ColourBasis::makeFlows(Ptr<Tree2toNDiagram>::tcptr diag, size_t dim) const { vector<string> res(dim); list<list<list<pair<int,bool> > > > fdata = colourFlows(diag); cPDVector ext; tcPDVector dext = diag->external(); copy(dext.begin(),dext.end(),back_inserter(ext)); vector<PDT::Colour> colouredLegs = normalOrder(projectColour(ext)); for ( list<list<list<pair<int,bool> > > >::const_iterator flow = fdata.begin(); flow != fdata.end(); ++flow ) { for ( size_t i = 0; i < dim; ++i ) { bool matches = true; for ( list<list<pair<int,bool> > >::const_iterator line = flow->begin(); line != flow->end(); ++line ) { pair<int,bool> front(diag->externalId(line->front().first),line->front().second); if ( front.first < 2 ) front.second = !front.second; pair<int,bool> back(diag->externalId(line->back().first),line->back().second); if ( back.first < 2 ) back.second = !back.second; if ( !colourConnected(ext,colouredLegs,front,back,i) ) { matches = false; break; } } if ( matches ) { res[i] = cfstring(*flow); } } } bool gotone = false; for ( vector<string>::const_iterator f = res.begin(); f != res.end(); ++f ) { if ( *f != "" ) { gotone = true; break; } } if ( !gotone ) { generator()->log() << "warning no color flow found for diagram\n"; DiagramDrawer::drawDiag(generator()->log(),*diag); } return res; } size_t ColourBasis::prepare(const MEBase::DiagramVector& diags, bool noCorrelations) { size_t dim = 0; for ( MEBase::DiagramVector::const_iterator d = diags.begin(); d != diags.end(); ++d ) { Ptr<Tree2toNDiagram>::tcptr dd = dynamic_ptr_cast<Ptr<Tree2toNDiagram>::ptr>(*d); assert(dd); dim = prepare(dd->partons(),noCorrelations); if ( !haveColourFlows() || theFlowMap.find(dd) != theFlowMap.end() ) continue; theFlowMap[dd] = makeFlows(dd,dim); } return dim; } bool matchEnd(int a, pair<int,bool> b, Ptr<Tree2toNDiagram>::tcptr diag) { if ( a != b.first ) return false; if ( b.first != diag->nSpace()-1 ) { return !b.second ? diag->allPartons()[b.first]->hasColour() : diag->allPartons()[b.first]->hasAntiColour(); } else { return !b.second ? diag->allPartons()[b.first]->hasAntiColour() : diag->allPartons()[b.first]->hasColour(); } return false; } bool findPath(pair<int,bool> a, pair<int,bool> b, Ptr<Tree2toNDiagram>::tcptr diag, list<pair<int,bool> >& path, bool backward) { assert(a.first==0 ? !backward : true); if ( path.empty() ) path.push_back(a); if ( !backward ) { if ( diag->children(a.first).first == -1 ) return matchEnd(a.first,b,diag); pair<int,int> children = diag->children(a.first); bool cc = (children.first == diag->nSpace()-1); if ( diag->allPartons()[children.first]->coloured() ) if ( !cc ? (!a.second ? diag->allPartons()[children.first]->hasColour() : diag->allPartons()[children.first]->hasAntiColour()) : (!a.second ? diag->allPartons()[children.first]->hasAntiColour() : diag->allPartons()[children.first]->hasColour()) ) { pair<int,bool> next(children.first,a.second); path.push_back(next); if ( !findPath(next,b,diag,path,false) ) { path.pop_back(); } else return true; } cc = (children.second == diag->nSpace()-1); if ( diag->allPartons()[children.second]->coloured() ) if ( !cc ? (!a.second ? diag->allPartons()[children.second]->hasColour() : diag->allPartons()[children.second]->hasAntiColour()) : (!a.second ? diag->allPartons()[children.second]->hasAntiColour() : diag->allPartons()[children.second]->hasColour()) ) { pair<int,bool> next(children.second,a.second); path.push_back(next); if ( !findPath(next,b,diag,path,false) ) { path.pop_back(); } else return true; } if ( path.size() == 1 ) path.pop_back(); return false; } else { int parent = diag->parent(a.first); pair<int,int> neighbours = diag->children(parent); int neighbour = a.first == neighbours.first ? neighbours.second : neighbours.first; if ( matchEnd(parent,b,diag) ) { path.push_back(b); return true; } if ( matchEnd(neighbour,b,diag) ) { path.push_back(b); return true; } if ( diag->allPartons()[neighbour]->coloured() ) if ( a.second ? diag->allPartons()[neighbour]->hasColour() : diag->allPartons()[neighbour]->hasAntiColour() ) { pair<int,bool> next(neighbour,!a.second); path.push_back(next); if ( !findPath(next,b,diag,path,false) ) { path.pop_back(); } else return true; } if ( parent == 0 ) { if ( path.size() == 1 ) path.pop_back(); return false; } if ( diag->allPartons()[parent]->coloured() ) if ( !a.second ? diag->allPartons()[parent]->hasColour() : diag->allPartons()[parent]->hasAntiColour() ) { pair<int,bool> next(parent,a.second); path.push_back(next); if ( !findPath(next,b,diag,path,true) ) { path.pop_back(); } else return true; } if ( path.size() == 1 ) path.pop_back(); return false; } return false; } list<pair<int,bool> > ColourBasis::colouredPath(pair<int,bool> a, pair<int,bool> b, Ptr<Tree2toNDiagram>::tcptr diag) { list<pair<int,bool> > res; if ( a.first == b.first ) return res; bool aIn = (a.first < 2); bool bIn = (b.first < 2); if ( (aIn && bIn) || (!aIn && !bIn) ) if ( (a.second && b.second) || (!a.second && !b.second) ) return res; if ( (aIn && !bIn) || (!aIn && bIn) ) if ( (!a.second && b.second) || (a.second && !b.second) ) return res; if ( a.first > b.first ) swap(a,b); a.first = diag->diagramId(a.first); b.first = diag->diagramId(b.first); if ( a.first == diag->nSpace()-1 ) a.second = !a.second; if ( b.first == diag->nSpace()-1 ) b.second = !b.second; if ( !findPath(a,b,diag,res,a.first != 0) ) return res; if ( b.first == diag->nSpace()-1 ) { res.back().second = !res.back().second; } if ( a.first == diag->nSpace()-1 ) { res.front().second = !res.front().second; } return res; } list<list<list<pair<int,bool> > > > ColourBasis::colourFlows(Ptr<Tree2toNDiagram>::tcptr diag) { vector<pair<int,bool> > connectSource; vector<pair<int,bool> > connectSink; for ( size_t i = 0; i != diag->partons().size(); ++i ) { if ( i < 2 && diag->partons()[i]->hasAntiColour() ) connectSource.push_back(make_pair(i,true)); if ( i < 2 && diag->partons()[i]->hasColour() ) connectSink.push_back(make_pair(i,false)); if ( i > 1 && diag->partons()[i]->hasColour() ) connectSource.push_back(make_pair(i,false)); if ( i > 1 && diag->partons()[i]->hasAntiColour() ) connectSink.push_back(make_pair(i,true)); } assert(connectSource.size() == connectSink.size()); list<list<list<pair<int,bool> > > > ret; do { vector<pair<int,bool> >::iterator source = connectSource.begin(); vector<pair<int,bool> >::iterator sink = connectSink.begin(); list<list<pair<int,bool> > > res; for ( ; source != connectSource.end(); ++source, ++sink ) { if ( source->first == sink->first ) { res.clear(); break; } list<pair<int,bool> > line = colouredPath(*source,*sink,diag); if ( line.empty() ) { res.clear(); break; } res.push_back(line); } if ( !res.empty() ) { // check, if all dressed properly vector<pair<int,int> > dressed((*diag).allPartons().size(),make_pair(0,0)); for ( size_t p = 0; p < diag->allPartons().size(); ++p ) { if ( diag->allPartons()[p]->hasColour() && !diag->allPartons()[p]->hasAntiColour() ) dressed[p].first = 1; if ( diag->allPartons()[p]->hasAntiColour() && !diag->allPartons()[p]->hasColour() ) dressed[p].second = 1; if ( diag->allPartons()[p]->hasAntiColour() && diag->allPartons()[p]->hasColour() ) { dressed[p].first = 1; dressed[p].second = 1; } } for ( list<list<pair<int,bool> > >::const_iterator l = res.begin(); l != res.end(); ++l ) { for ( list<pair<int,bool> >::const_iterator n = l->begin(); n != l->end(); ++n ) { if ( !(n->second) ) dressed[n->first].first -= 1; else dressed[n->first].second -= 1; } } for ( vector<pair<int,int> >::const_iterator d = dressed.begin(); d != dressed.end(); ++d ) { if ( d->first != 0 || d->second != 0 ) { res.clear(); break; } } if ( !res.empty() ) ret.push_back(res); } } while ( std::next_permutation(connectSink.begin(),connectSink.end()) ); return ret; } map<Ptr<Tree2toNDiagram>::tcptr,vector<ColourLines*> >& ColourBasis::colourLineMap() { if ( !theColourLineMap.empty() ) return theColourLineMap; for ( map<Ptr<Tree2toNDiagram>::tcptr,vector<string> >::const_iterator cl = theFlowMap.begin(); cl != theFlowMap.end(); ++cl ) { vector<ColourLines*> clines(cl->second.size()); for ( size_t k = 0; k < cl->second.size(); ++k ) { if ( cl->second[k] == "" ) { clines[k] = 0; continue; } clines[k] = new ColourLines(cl->second[k]); } theColourLineMap[cl->first] = clines; } return theColourLineMap; } Selector<const ColourLines *> ColourBasis::colourGeometries(tcDiagPtr diag, const map<vector<int>,CVector>& amps) { Ptr<Tree2toNDiagram>::tcptr dd = dynamic_ptr_cast<Ptr<Tree2toNDiagram>::tcptr>(diag); assert(dd && theFlowMap.find(dd) != theFlowMap.end()); const vector<ColourLines*>& cl = colourLineMap()[dd]; Selector<const ColourLines *> sel; size_t dim = amps.begin()->second.size(); double w = 0.; for ( size_t i = 0; i < dim; ++i ) { if ( !cl[i] ) continue; w = 0.; for ( map<vector<int>,CVector>::const_iterator a = amps.begin(); a != amps.end(); ++a ) w += real(conj((a->second)(i))*((a->second)(i))); sel.insert(w,cl[i]); } return sel; } const symmetric_matrix<double,upper>& ColourBasis::scalarProducts(const cPDVector& sub) const { map<cPDVector,vector<PDT::Colour> >::const_iterator lit = theNormalOrderedLegs.find(sub); assert(lit != theNormalOrderedLegs.end()); ScalarProductMap::const_iterator spit = theScalarProducts.find(lit->second); assert(spit != theScalarProducts.end()); return spit->second; } const compressed_matrix<double>& ColourBasis::charge(const cPDVector& sub, size_t iIn) const { map<cPDVector,vector<PDT::Colour> >::const_iterator lit = theNormalOrderedLegs.find(sub); assert(lit != theNormalOrderedLegs.end()); ChargeMap::const_iterator ct = theCharges.find(lit->second); assert(ct != theCharges.end()); map<cPDVector,map<size_t,size_t> >::const_iterator trans = theIndexMap.find(sub); assert(trans != theIndexMap.end()); size_t i = trans->second.find(iIn)->second; map<size_t,compressed_matrix<double> >::const_iterator cit = ct->second.find(i); assert(cit != ct->second.end()); return cit->second; } const vector<pair<size_t,size_t> >& ColourBasis::chargeNonZero(const cPDVector& sub, size_t iIn) const { map<cPDVector,vector<PDT::Colour> >::const_iterator lit = theNormalOrderedLegs.find(sub); assert(lit != theNormalOrderedLegs.end()); ChargeNonZeroMap::const_iterator ct = theChargeNonZeros.find(lit->second); assert(ct != theChargeNonZeros.end()); map<cPDVector,map<size_t,size_t> >::const_iterator trans = theIndexMap.find(sub); assert(trans != theIndexMap.end()); size_t i = trans->second.find(iIn)->second; map<size_t,vector<pair<size_t,size_t> > >::const_iterator cit = ct->second.find(i); assert(cit != ct->second.end()); return cit->second; } const symmetric_matrix<double,upper>& ColourBasis::correlator(const cPDVector& sub, const pair<size_t,size_t>& ijIn) const { map<cPDVector,vector<PDT::Colour> >::const_iterator lit = theNormalOrderedLegs.find(sub); assert(lit != theNormalOrderedLegs.end()); CorrelatorMap::const_iterator cit = theCorrelators.find(lit->second); assert(cit != theCorrelators.end()); map<cPDVector,map<size_t,size_t> >::const_iterator trans = theIndexMap.find(sub); assert(trans != theIndexMap.end()); pair<size_t,size_t> ij(trans->second.find(ijIn.first)->second, trans->second.find(ijIn.second)->second); if ( ij.first > ij.second ) swap(ij.first,ij.second); map<pair<size_t,size_t>,symmetric_matrix<double,upper> >::const_iterator cijit = cit->second.find(ij); assert(cijit != cit->second.end()); return cijit->second; } double ColourBasis::me2(const cPDVector& sub, const map<vector<int>,CVector>& amps) const { const symmetric_matrix<double,upper>& sp = scalarProducts(sub); double res = 0.; for ( map<vector<int>,CVector>::const_iterator a = amps.begin(); a != amps.end(); ++a ) { res += real(inner_prod(conj(a->second),prod(sp,a->second))); } return res; } double ColourBasis::interference(const cPDVector& sub, const map<vector<int>,CVector>& amps1, const map<vector<int>,CVector>& amps2) const { const symmetric_matrix<double,upper>& sp = scalarProducts(sub); double res = 0.; map<vector<int>,CVector>::const_iterator a = amps1.begin(); map<vector<int>,CVector>::const_iterator b = amps2.begin(); for ( ; a != amps1.end(); ++a, ++b ) { assert(a->first == b->first); res += 2.*real(inner_prod(conj(a->second),prod(sp,b->second))); } assert(!isnan(res)); return res; } double ColourBasis::colourCorrelatedME2(const pair<size_t,size_t>& ij, const cPDVector& sub, const map<vector<int>,CVector>& amps) const { const symmetric_matrix<double,upper>& cij = correlator(sub,ij); double res = 0.; for ( map<vector<int>,CVector>::const_iterator a = amps.begin(); a != amps.end(); ++a ) { res += real(inner_prod(conj(a->second),prod(cij,a->second))); } return res; } Complex ColourBasis::interference(const cPDVector& sub, const CVector& left, const CVector& right) const { const symmetric_matrix<double,upper>& sp = scalarProducts(sub); return inner_prod(conj(left),prod(sp,right)); } Complex ColourBasis::colourCorrelatedInterference(const pair<size_t,size_t>& ij, const cPDVector& sub, const CVector& left, const CVector& right) const { const symmetric_matrix<double,upper>& cij = correlator(sub,ij); return inner_prod(conj(left),prod(cij,right)); } double ColourBasis::me2(const cPDVector& sub, const matrix<Complex>& amp) const { const symmetric_matrix<double,upper>& sp = scalarProducts(sub); double tr = 0; size_t n = amp.size1(); for ( size_t i = 0; i < n; ++i ) { tr += real(inner_prod(row(sp,i),column(amp,i))); } return tr; } double ColourBasis::colourCorrelatedME2(const pair<size_t,size_t>& ij, const cPDVector& sub, const matrix<Complex>& amp) const { const symmetric_matrix<double,upper>& cij = correlator(sub,ij); double tr = 0; size_t n = amp.size1(); for ( size_t i = 0; i < n; ++i ) { tr += real(inner_prod(row(cij,i),column(amp,i))); } return tr; } struct pickColour { PDT::Colour operator()(tcPDPtr p) const { return p->iColour(); } }; vector<PDT::Colour> ColourBasis::projectColour(const cPDVector& sub) const { vector<PDT::Colour> res(sub.size()); transform(sub.begin(),sub.end(),res.begin(),pickColour()); return res; } vector<PDT::Colour> ColourBasis::normalOrder(const vector<PDT::Colour>& legs) const { vector<PDT::Colour> crosslegs = legs; if ( crosslegs[0] == PDT::Colour3 ) crosslegs[0] = PDT::Colour3bar; else if ( crosslegs[0] == PDT::Colour3bar ) crosslegs[0] = PDT::Colour3; if ( crosslegs[1] == PDT::Colour3 ) crosslegs[1] = PDT::Colour3bar; else if ( crosslegs[1] == PDT::Colour3bar ) crosslegs[1] = PDT::Colour3; int n3 = count_if(crosslegs.begin(),crosslegs.end(),matchRep(PDT::Colour3)); int n8 = count_if(crosslegs.begin(),crosslegs.end(),matchRep(PDT::Colour8)); vector<PDT::Colour> ordered(2*n3+n8,PDT::Colour8); int i = 0; while ( i < 2*n3 ) { ordered[i] = PDT::Colour3; ordered[i+1] = PDT::Colour3bar; i+=2; } return ordered; } string ColourBasis::file(const vector<PDT::Colour>& sub) const { string res = ""; for ( vector<PDT::Colour>::const_iterator lit = sub.begin(); lit != sub.end(); ++lit ) { if ( *lit == PDT::Colour3 ) res += "3"; if ( *lit == PDT::Colour3bar ) res += "3bar"; if ( *lit == PDT::Colour8 ) res += "8"; } if ( largeN() ) res += "largeN"; return res; } void ColourBasis::writeBasis(const string& prefix) const { if ( didWrite ) return; set<vector<PDT::Colour> > legs; for ( map<cPDVector,vector<PDT::Colour> >::const_iterator lit = theNormalOrderedLegs.begin(); lit != theNormalOrderedLegs.end(); ++lit ) { legs.insert(lit->second); } string searchPath = theSearchPath; if ( searchPath != "" ) if ( *(--searchPath.end()) != '/' ) searchPath += "/"; for ( set<vector<PDT::Colour> >::const_iterator known = legs.begin(); known != legs.end(); ++known ) { string fname = searchPath + prefix + file(*known) + ".cdat"; ifstream check(fname.c_str()); if ( check ) continue; ofstream out(fname.c_str()); if ( !out ) throw Exception() << "ColourBasis failed to open " << fname << " for storing colour basis information." << Exception::abortnow; out << setprecision(18); const symmetric_matrix<double,upper>& sp = theScalarProducts.find(*known)->second; write(sp,out); if ( theCharges.find(*known) != theCharges.end() ) { out << "#charges\n"; const map<size_t,compressed_matrix<double> >& tm = theCharges.find(*known)->second; const map<size_t,vector<pair<size_t,size_t> > >& tc = theChargeNonZeros.find(*known)->second; map<size_t,vector<pair<size_t,size_t> > >::const_iterator kc = tc.begin(); for ( map<size_t,compressed_matrix<double> >::const_iterator k = tm.begin(); k != tm.end(); ++k, ++kc ) { out << k->first << "\n"; write(k->second,out,kc->second); } const map<pair<size_t,size_t>,symmetric_matrix<double,upper> >& cm = theCorrelators.find(*known)->second; for ( map<pair<size_t,size_t>,symmetric_matrix<double,upper> >::const_iterator k = cm.begin(); k != cm.end(); ++k ) { out << k->first.first << "\n" << k->first.second << "\n"; write(k->second,out); } } else { out << "#nocharges\n"; } out << flush; } didWrite = true; } bool ColourBasis::readBasis(const vector<PDT::Colour>& legs) { string searchPath = theSearchPath; if ( searchPath != "" ) if ( *(--searchPath.end()) != '/' ) searchPath += "/"; string fname = searchPath + file(legs) + ".cdat"; ifstream in(fname.c_str()); if ( !in ) return false; read(theScalarProducts[legs],in); string tag; in >> tag; if ( tag != "#nocharges" ) { for ( size_t k = 0; k < legs.size(); ++k ) { size_t i; in >> i; read(theCharges[legs][i],in,theChargeNonZeros[legs][i]); } for ( size_t k = 0; k < legs.size()*(legs.size()-1)/2; ++k ) { size_t i,j; in >> i >> j; read(theCorrelators[legs][make_pair(i,j)],in); } } return true; } void ColourBasis::readBasis() { if ( didRead ) return; string searchPath = theSearchPath; if ( searchPath != "" ) if ( *(--searchPath.end()) != '/' ) searchPath += "/"; set<vector<PDT::Colour> > legs; for ( map<cPDVector,vector<PDT::Colour> >::const_iterator lit = theNormalOrderedLegs.begin(); lit != theNormalOrderedLegs.end(); ++lit ) legs.insert(lit->second); for ( set<vector<PDT::Colour> >::const_iterator known = legs.begin(); known != legs.end(); ++known ) { if ( theScalarProducts.find(*known) != theScalarProducts.end() ) continue; string fname = searchPath + file(*known) + ".cdat"; if ( !readBasis(*known) ) throw Exception() << "ColourBasis failed to open " << fname << " for reading colour basis information." << Exception::abortnow; } didRead = true; } void ColourBasis::write(const symmetric_matrix<double,upper>& m, ostream& os) const { os << m.size1() << "\n"; for ( size_t i = 0; i < m.size1(); ++i ) for ( size_t j = i; j < m.size1(); ++j ) os << m(i,j) << "\n"; os << flush; } void ColourBasis::read(symmetric_matrix<double,upper>& m, istream& is) { size_t s; is >> s; m.resize(s); for ( size_t i = 0; i < m.size1(); ++i ) for ( size_t j = i; j < m.size1(); ++j ) is >> m(i,j); } void ColourBasis::write(const compressed_matrix<double>& m, ostream& os, const vector<pair<size_t,size_t> >& nonZeros) const { os << nonZeros.size() << "\n" << m.size1() << "\n" << m.size2() << "\n"; for ( vector<pair<size_t,size_t> >::const_iterator nz = nonZeros.begin(); nz != nonZeros.end(); ++nz ) os << nz->first << "\n" << nz->second << "\n" << m(nz->first,nz->second) << "\n"; os << flush; } void ColourBasis::read(compressed_matrix<double>& m, istream& is, vector<pair<size_t,size_t> >& nonZeros) { size_t nonZero, size1, size2; is >> nonZero >> size1 >> size2; nonZeros.resize(nonZero); m = compressed_matrix<double>(size1,size2,nonZero); for ( size_t k = 0; k < nonZero; ++k ) { size_t i,j; double val; is >> i >> j >> val; nonZeros[k] = make_pair(i,j); m(i,j) = val; } } void ColourBasis::doinit() { HandlerBase::doinit(); readBasis(); } void ColourBasis::dofinish() { HandlerBase::dofinish(); writeBasis(); } void ColourBasis::doinitrun() { HandlerBase::doinitrun(); readBasis(); } void ColourBasis::persistentOutput(PersistentOStream & os) const { os << theSearchPath << theNormalOrderedLegs << theIndexMap << theFlowMap; writeBasis(); } void ColourBasis::persistentInput(PersistentIStream & is, int) { is >> theSearchPath >> theNormalOrderedLegs >> theIndexMap >> theFlowMap; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeAbstractClass<ColourBasis,HandlerBase> describeColourBasis("Herwig::ColourBasis", "HwMatchbox.so"); void ColourBasis::Init() { static ClassDocumentation<ColourBasis> documentation ("ColourBasis is an interface to a colour basis " "implementation."); static Parameter<ColourBasis,string> interfaceSearchPath ("SearchPath", "Set the search path for pre-computed colour basis data.", &ColourBasis::theSearchPath, ".", false, false); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/Makefile.am��������������������������������������0000644�0001750�0001750�00000001036�11754474775�025022� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwMatchboxUtility.la libHwMatchboxUtility_la_SOURCES = \ AmplitudeCache.h \ AmplitudeCache.tcc \ ColourBasis.cc \ ColourBasis.h \ DiagramDrawer.cc \ DiagramDrawer.h \ MatchboxMECache.cc \ MatchboxMECache.h \ MatchboxPtScale.h \ MatchboxPtScale.cc \ MatchboxLeptonMassScale.h \ MatchboxLeptonMassScale.cc \ MatchboxScaleChoice.cc \ MatchboxScaleChoice.h \ SimpleColourBasis.cc \ SimpleColourBasis.h \ SpinCorrelationTensor.h \ SpinorHelicity.h \ SU2Helper.cc \ SU2Helper.h \ Tree2toNGenerator.cc \ Tree2toNGenerator.h ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/Tree2toNGenerator.h������������������������������0000644�0001750�0001750�00000015515�11754474775�026457� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Tree2toNGenerator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_Tree2toNGenerator_H #define Herwig_Tree2toNGenerator_H // // This is the declaration of the Tree2toNGenerator class. // #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/Helicity/Vertex/VertexBase.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief Generate Tree2toNDiagrams for a given process. * * @see \ref Tree2toNGeneratorInterfaces "The interfaces" * defined for Tree2toNGenerator. */ class Tree2toNGenerator: public HandlerBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ Tree2toNGenerator(); /** * The destructor. */ virtual ~Tree2toNGenerator(); //@} public: /** * Generate all diagrams for the given process. */ vector<Ptr<Tree2toNDiagram>::ptr> generate(const PDVector&, unsigned int orderInGs, unsigned int orderInGem); typedef vector<Ptr<Helicity::VertexBase>::ptr> VertexVector; /** * Access the vertices */ VertexVector& vertices() { return theVertices; } /** * Return the vertices */ const VertexVector& vertices() const { return theVertices; } 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: /** * A node in internally used trees. */ struct Vertex { /** * The outgoing particles. If this is a spacelike node, the first * child is considered the next spacelike (or second incoming) * line. If children are empty, this is an external line. */ vector<Vertex> children; /** * The incoming line at this node. */ PDPtr parent; /** * True, if this is spacelike node. */ bool spacelike; /** * The external leg id. */ int externalId; /** * The parent diagram id. */ int parentId; /** * The default constructor. */ Vertex() : spacelike(false), externalId(-1), parentId(-1) {} /** * Debug printout. */ void print(ostream& os, const string& prefix = "") const { os << prefix << parent->PDGName() << "[" << (spacelike ? "s" : "t") << "] ("; if ( externalId < 0 ) os << "x)\n"; else os << externalId << ")\n"; if ( !children.empty() ) { os << prefix << "|__\n"; children[0].print(os,prefix + "| "); os << prefix << "|__\n"; children[1].print(os,prefix + "| "); } } /** * Count the number of spacelike lines */ int nspace() const { if ( children.empty() ) return 1; int ret = 1; ret += children[0].nspace(); return ret; } /** * Update diagram returning a map of external ids to diagram id * parents. */ void update(Tree2toNDiagram& diag, map<int,pair<int,PDPtr> >& outgoing, int& lastUsed) { if ( externalId == 0 ) { assert(lastUsed==0); ++lastUsed; diag.operator,(parent); children[0].parentId = lastUsed; children[1].parentId = lastUsed; children[0].update(diag,outgoing,lastUsed); children[1].update(diag,outgoing,lastUsed); for ( map<int,pair<int,PDPtr> >::iterator out = outgoing.begin(); out != outgoing.end(); ++out ) { diag.operator,(out->second.first); diag.operator,(out->second.second); } return; } if ( spacelike ) { ++lastUsed; diag.operator,(parent); if ( externalId == 1 ) return; children[0].parentId = lastUsed; children[1].parentId = lastUsed; children[0].update(diag,outgoing,lastUsed); children[1].update(diag,outgoing,lastUsed); return; } if ( children.empty() ) { outgoing[externalId] = make_pair(parentId,parent); return; } diag.operator,(parentId); diag.operator,(parent); ++lastUsed; children[0].parentId = lastUsed; children[1].parentId = lastUsed; children[0].update(diag,outgoing,lastUsed); children[1].update(diag,outgoing,lastUsed); } /** * Generate a diagram of given id. */ Tree2toNDiagram generate(int id) { int nsp = nspace(); Tree2toNDiagram res(nsp); int diagid = 0; map<int,pair<int,PDPtr> > out; update(res,out,diagid); res.operator,(-id); return res; } }; /** * For the given set of trees determine all allowed clusterings. */ list<vector<Vertex> > cluster(const vector<Vertex>& children, unsigned int orderInGs, unsigned int orderInGem) const; /** * For the given set of outgoing lines cluster recursively. */ list<vector<Vertex> > clusterAll(const list<vector<Vertex> >& current, unsigned int orderInGs, unsigned int orderInGem) const; /** * For the given set of outgoing lines cluster recursively. */ list<vector<Vertex> > clusterAll(const PDVector& external, unsigned int orderInGs, unsigned int orderInGem); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The vertices to be used. */ VertexVector theVertices; /** * Maximum order in gs to consider. */ unsigned int maxOrderGs; /** * Maximum order in gem to consider. */ unsigned int maxOrderGem; /** * Wether or not the generator has been prepared */ bool prepared; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ Tree2toNGenerator & operator=(const Tree2toNGenerator &); }; } #endif /* Herwig_Tree2toNGenerator_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/DiagramDrawer.cc���������������������������������0000644�0001750�0001750�00000011036�11754474775�026007� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DiagramDrawer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #include "DiagramDrawer.h" using namespace Herwig; // merge two blocks by given line vector<string> merge(tcPDPtr data, int id, vector<string> block1, vector<string> block2) { size_t l1 = block1.front().length(); size_t l2 = block2.front().length(); if ( l2 > l1 ) { unsigned int count = 0; for ( vector<string>::iterator b = block1.begin(); b != block1.end(); ++b, ++count ) { if ( count != block1.size()/2 ) { *b = string(l2-l1,' ') + *b; } else { *b = string(l2-l1,'-') + *b; } } } else if ( l1 > l2 ) { unsigned int count = 0; for ( vector<string>::iterator b = block2.begin(); b != block2.end(); ++b, ++count ) { if ( count != block2.size()/2 ) { *b = string(l1-l2,' ') + *b; } else { *b = string(l1-l2,'-') + *b; } } } for ( size_t k = 0; k < block1.size()/2; ++k ) { block1[k] = string(1,' ') + block1[k]; } for ( size_t k = block1.size()/2; k < block1.size(); ++k ) { block1[k] = string(1,'|') + block1[k]; } for ( size_t k = 0; k <= block2.size()/2; ++k ) { block2[k] = string(1,'|') + block2[k]; } for ( size_t k = block2.size()/2+1; k < block2.size(); ++k ) { block2[k] = string(1,' ') + block2[k]; } ostringstream lines(""); lines << "--[" << data->PDGName() << "," << id << "]--"; string line = lines.str(); string pad(line.length(),' '); line += "|" + string(block1.front().length(),' '); vector<string> res; for ( vector<string>::iterator b = block1.begin(); b != block1.end(); ++b ) res.push_back(pad + *b); res.push_back(line); for ( vector<string>::iterator b = block2.begin(); b != block2.end(); ++b ) res.push_back(pad + *b); return res; } // draw timelike branch vector<string> drawTimeLike(const Tree2toNDiagram& d,int line) { pair<int,int> children = d.children(line); if ( children.first == -1 ) { ostringstream lines(""); lines << "--[" << d.allPartons()[line]->PDGName() << "," << line << "]--(" << d.externalId(line) << ")"; return vector<string>(1,lines.str()); } vector<string> left = drawTimeLike(d,children.first); vector<string> right = drawTimeLike(d,children.second); return merge(d.allPartons()[line],line,left,right); } // get all timelike blocks vector<vector<string> > timeBlocks(const Tree2toNDiagram& d) { vector<vector<string> > res; pair<int,int> children(0,0); do { children = d.children(children.first); res.push_back(drawTimeLike(d,children.second)); } while ( children.first != d.nSpace() - 1 ); size_t maxLength = 0; for ( vector<vector<string> >::const_iterator b = res.begin(); b != res.end(); ++b ) maxLength = max(maxLength,b->back().length()); for ( vector<vector<string> >::iterator b = res.begin(); b != res.end(); ++b ) { size_t bLength = b->back().length(); if ( bLength < maxLength ) { unsigned int count = 0; for ( vector<string>::iterator c = b->begin(); c != b->end(); ++c, ++count ) { if ( count != b->size()/2 ) { *c = string(maxLength-bLength,' ') + *c; } else { *c = string(maxLength-bLength,'-') + *c; } } } } for ( vector<vector<string> >::iterator b = res.begin(); b != res.end(); ++b ) { for ( vector<string>::iterator c = b->begin(); c != b->end(); ++c ) { *c = " |" + *c; } } return res; } void DiagramDrawer::drawDiag(ostream& os,const Tree2toNDiagram& d) { os << d.partons()[0]->PDGName() << " " << d.partons()[1]->PDGName() << " -> "; for ( cPDVector::const_iterator p = d.partons().begin()+2; p != d.partons().end(); ++p ) os << (**p).PDGName() << " "; os << "\n\n"; vector<vector<string> > blocks = timeBlocks(d); os << " (0)\n"; pair<int,int> children(0,0); vector<vector<string> >::const_iterator b = blocks.begin(); do { os << " |\n" << "[" << d.allPartons()[children.first]->PDGName() << "," << children.first << "]\n" << " |\n"; for ( vector<string>::const_iterator l = b->begin(); l != b->end(); ++l ) os << *l << "\n"; children = d.children(children.first); ++b; } while ( children.first != d.nSpace() - 1 ); os << " |\n" << "[" << d.allPartons()[d.nSpace()-1]->PDGName() << "," << (d.nSpace()-1) << "]\n" << " |\n" << " (1)\n\n" << flush; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/SpinCorrelationTensor.h��������������������������0000644�0001750�0001750�00000003514�11754474775�027450� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SpinCorrelationTensor.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SpinCorrelationTensor_H #define HERWIG_SpinCorrelationTensor_H #include "ThePEG/Config/Unitsystem.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief SpinCorrelationTensor represents a spin correlation tensor * of the form * * c g^{\mu\nu} + p^\mu p^\nu / Q^2 * */ class SpinCorrelationTensor { /** * The diagonal part */ double theDiagonal; /** * The vector to define to off-diagonal part */ Lorentz5Momentum theMomentum; /** * The scale for the off-diagonal part */ Energy2 theScale; public: /** * The standard constructor, giving diagonal * part, and vector for off-diagonal components * and the scale. */ SpinCorrelationTensor(double diag, const Lorentz5Momentum& p, Energy2 sc) : theDiagonal(diag), theMomentum(p), theScale(sc) {} public: /** * Return the diagonal part */ double diagonal() const { return theDiagonal; } /** * Return the off-diagonal vector part. */ const Lorentz5Momentum& momentum() const { return theMomentum; } /** * Return the scale */ Energy2 scale() const { return theScale; } public: /** * Return a matrix element of the diagonal part, by contracting with * the given polarization vectors. */ Complex matrixElement(const LorentzVector<Complex>& left, const LorentzVector<Complex>& right) const { return left.dot(momentum())*right.dot(momentum())/scale(); } }; } #endif // HERWIG_SpinCorrelationTensor_H ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/MatchboxLeptonMassScale.h������������������������0000644�0001750�0001750�00000005454�11754474775�027672� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxLeptonMassScale.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_MatchboxLeptonMassScale_H #define Herwig_MatchboxLeptonMassScale_H // // This is the declaration of the MatchboxLeptonMassScale class. // #include "Herwig++/MatrixElement/Matchbox/Utility/MatchboxScaleChoice.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxLeptonMassScale implements scale choices related * to lepton pair invariant masses. * */ class MatchboxLeptonMassScale: public MatchboxScaleChoice { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxLeptonMassScale(); /** * The destructor. */ virtual ~MatchboxLeptonMassScale(); //@} public: /** * Return the renormalization scale. This default version returns * shat. */ virtual Energy2 renormalizationScale() const; /** * Return the factorization scale. This default version returns * shat. */ virtual Energy2 factorizationScale() 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxLeptonMassScale & operator=(const MatchboxLeptonMassScale &); }; } #endif /* Herwig_MatchboxLeptonMassScale_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/MatchboxMECache.cc�������������������������������0000644�0001750�0001750�00000006513�11754474775�026215� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMECache.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxMECache class. // #include "MatchboxMECache.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 <numeric> using std::accumulate; using namespace Herwig; MatchboxMECache::MatchboxMECache() {} MatchboxMECache::~MatchboxMECache() {} IBPtr MatchboxMECache::clone() const { return new_ptr(*this); } IBPtr MatchboxMECache::fullclone() const { return new_ptr(*this); } // binary function accumulating hashes // from Lorentz5Momentum struct accMomentumHash { size_t operator() (size_t before, const Lorentz5Momentum& mom) const { // indeed should mask some non-significant digits // here as well, but stay with this for the moment // as we're having several evaluations with // exactly the _same_ ps point size_t res = before; #ifdef ThePEG_HAS_UNITS_CHECKING boost::hash_combine(res,mom.x().rawValue()); boost::hash_combine(res,mom.y().rawValue()); boost::hash_combine(res,mom.z().rawValue()); #else boost::hash_combine(res,mom.x()); boost::hash_combine(res,mom.y()); boost::hash_combine(res,mom.z()); #endif return res; } }; size_t MatchboxMECache::hashPhaseSpace() const { return accumulate(meMomenta().begin() + 2, meMomenta().end(), 0, accMomentumHash()); } bool MatchboxMECache::calculateME2(double& xme2, const pair<int,int>& corr) { map<MECacheKey,double>::const_iterator cached = theME2Cache.find(MECacheKey(hashPhaseSpace(),mePartonData(),corr)); if ( cached == theME2Cache.end() ) { xme2 = 0.0; return true; } xme2 = cached->second; return false; } void MatchboxMECache::cacheME2(double xme2, const pair<int,int>& corr) { theME2Cache[MECacheKey(hashPhaseSpace(),mePartonData(),corr)] = xme2; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxMECache::persistentOutput(PersistentOStream & os) const { os << theLastXComb; } void MatchboxMECache::persistentInput(PersistentIStream & is, int) { is >> theLastXComb; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<MatchboxMECache,HandlerBase> describeHerwigMatchboxMECache("Herwig::MatchboxMECache", "HwMatchbox.so"); void MatchboxMECache::Init() { static ClassDocumentation<MatchboxMECache> documentation ("MatchboxMECache provides caching for matrix elements."); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/MatchboxScaleChoice.h����������������������������0000644�0001750�0001750�00000006514�11754474775�026775� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxScaleChoice.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_MatchboxScaleChoice_H #define Herwig_MatchboxScaleChoice_H // // This is the declaration of the MatchboxScaleChoice class. // #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Handlers/LastXCombInfo.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxScaleChoice is the base class for scale choices * within Matchbox. * */ class MatchboxScaleChoice: public HandlerBase, public LastXCombInfo<StandardXComb> { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxScaleChoice(); /** * The destructor. */ virtual ~MatchboxScaleChoice(); //@} public: /** * Clone this scale choice. */ Ptr<MatchboxScaleChoice>::ptr cloneMe() const { return dynamic_ptr_cast<Ptr<MatchboxScaleChoice>::ptr>(clone()); } /** * Set the XComb object. */ virtual void setXComb(tStdXCombPtr xc) { theLastXComb = xc; } /** * Return the renormalization scale. This default version returns * shat. */ virtual Energy2 renormalizationScale() const { return theFixedScale == ZERO ? lastSHat() : sqr(theFixedScale); } /** * Return the factorization scale. This default version returns * shat. */ virtual Energy2 factorizationScale() const { return theFixedScale == ZERO ? lastSHat() : sqr(theFixedScale); } 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * A fixed scale choice. If zero, shat will be used. */ Energy theFixedScale; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxScaleChoice & operator=(const MatchboxScaleChoice &); }; } #endif /* Herwig_MatchboxScaleChoice_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Utility/Tree2toNGenerator.cc�����������������������������0000644�0001750�0001750�00000022021�11754474775�026603� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Tree2toNGenerator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the Tree2toNGenerator class. // #include "Tree2toNGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/RefVector.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; Tree2toNGenerator::Tree2toNGenerator() : maxOrderGs(0), maxOrderGem(0), prepared(false) {} Tree2toNGenerator::~Tree2toNGenerator() {} IBPtr Tree2toNGenerator::clone() const { return new_ptr(*this); } IBPtr Tree2toNGenerator::fullclone() const { return new_ptr(*this); } vector<Ptr<Tree2toNDiagram>::ptr> Tree2toNGenerator:: generate(const PDVector& legs, unsigned int orderInGs, unsigned int orderInGem) { vector<Ptr<Tree2toNDiagram>::ptr> res; list<vector<Vertex> > prog = clusterAll(legs,orderInGs,orderInGem); int count = 1; for ( list<vector<Vertex> >::iterator d = prog.begin(); d != prog.end(); ++d ) { assert(d->size() == 1); Tree2toNDiagram diag = d->front().generate(count); bool gotit = false; for ( vector<Ptr<Tree2toNDiagram>::ptr>::const_iterator d = res.begin(); d != res.end(); ++d ) { map<int,int> checkPermutation; if ( diag.isSame(*d,checkPermutation) ) { gotit = true; for ( map<int,int>::const_iterator p = checkPermutation.begin(); p != checkPermutation.end(); ++p ) if ( p->first != p->second ) gotit = false; if ( gotit ) break; } } if ( !gotit ) { res.push_back(new_ptr(diag)); ++count; } } return res; } list<vector<Tree2toNGenerator::Vertex> > Tree2toNGenerator:: cluster(const vector<Tree2toNGenerator::Vertex>& children, unsigned int orderInGs, unsigned int orderInGem) const { list<vector<Vertex> > res; bool externalCluster = children[1].externalId != -1; if ( children.size() == 3 ) { for ( VertexVector::const_iterator v = theVertices.begin(); v != theVertices.end(); ++v ) { if ( (**v).getNpoint() != 3 ) continue; bool noMatch = !(**v).isIncoming(children[0].parent); noMatch |= (**v).orderInGs() != orderInGs || (**v).orderInGem() != orderInGem; if ( !externalCluster ) noMatch |= !(**v).isOutgoing(children[1].parent) || !(**v).isOutgoing(children[2].parent); else noMatch |= !(**v).isIncoming(children[1].parent) || !(**v).isOutgoing(children[2].parent); if ( noMatch ) continue; Vertex last; last.spacelike = true; last.parent = children[0].parent; last.externalId = 0; last.children.push_back(children[1]); last.children.push_back(children[2]); res.push_back(vector<Vertex>(1,last)); // only one possible break; } return res; } // spacelike clusterings (cluster on second one) for ( size_t i = 2; i < children.size(); ++i ) { for ( VertexVector::const_iterator v = theVertices.begin(); v != theVertices.end(); ++v ) { if ( (**v).getNpoint() != 3 ) continue; bool noMatch = false; noMatch |= (**v).orderInGs() != orderInGs || (**v).orderInGem() != orderInGem; if ( !externalCluster ) noMatch |= !(**v).isOutgoing(children[1].parent) || !(**v).isOutgoing(children[i].parent); else noMatch |= !(**v).isIncoming(children[1].parent) || !(**v).isOutgoing(children[i].parent); if ( noMatch ) continue; long idi = children[i].parent->id(); long idj = children[1].parent->id(); if ( externalCluster && children[1].parent->CC() ) idj = -idj; for ( set<tPDPtr>::const_iterator pij = (**v).outgoing().begin(); pij != (**v).outgoing().end() ; ++pij ) { long idij = (**pij).id(); if ( (**v).allowed(idij,idi,idj) || (**v).allowed(idj,idij,idi) || (**v).allowed(idi,idj,idij) || (**v).allowed(idij,idj,idi) || (**v).allowed(idi,idij,idj) || (**v).allowed(idj,idi,idij) ) { PDPtr dij = (**pij).CC() ? (**pij).CC() : *pij; vector<Vertex> cled; for ( size_t k = 0; k < children.size(); ++k ) { if ( k != 1 && k != i ) cled.push_back(children[k]); if ( k == 1 ) { Vertex merge; merge.children.push_back(children[1]); merge.children.push_back(children[i]); merge.parent = dij; merge.spacelike = true; cled.push_back(merge); } if ( k == i ) continue; } res.push_back(cled); } } } } // timelike clusterings for ( size_t i = 2; i < children.size(); ++i ) { for ( size_t j = i+1; j < children.size(); ++j ) { for ( VertexVector::const_iterator v = theVertices.begin(); v != theVertices.end(); ++v ) { if ( (**v).getNpoint() != 3 ) continue; if ( (**v).orderInGs() != orderInGs || (**v).orderInGem() != orderInGem || !(**v).isOutgoing(children[i].parent) || !(**v).isOutgoing(children[j].parent) ) continue; long idi = children[i].parent->id(); long idj = children[j].parent->id(); for ( set<tPDPtr>::const_iterator pij = (**v).outgoing().begin(); pij != (**v).outgoing().end() ; ++pij ) { long idij = (**pij).id(); if ( (**v).allowed(idij,idi,idj) || (**v).allowed(idj,idij,idi) || (**v).allowed(idi,idj,idij) || (**v).allowed(idij,idj,idi) || (**v).allowed(idi,idij,idj) || (**v).allowed(idj,idi,idij) ) { PDPtr dij = (**pij).CC() ? (**pij).CC() : *pij; vector<Vertex> cled; for ( size_t k = 0; k < children.size(); ++k ) { if ( k != i && k != j ) cled.push_back(children[k]); if ( k == i ) { Vertex merge; merge.children.push_back(children[i]); merge.children.push_back(children[j]); merge.parent = dij; merge.spacelike = false; cled.push_back(merge); } if ( k == j ) continue; } res.push_back(cled); } } } } } return res; } list<vector<Tree2toNGenerator::Vertex> > Tree2toNGenerator:: clusterAll(const list<vector<Tree2toNGenerator::Vertex> >& current, unsigned int orderInGs, unsigned int orderInGem) const { list<vector<Vertex> > res; for ( list<vector<Vertex> >::const_iterator c = current.begin(); c != current.end(); ++c ) { if ( c->size() == 1 ) { res.push_back(*c); continue; } for ( unsigned int gs = 0; gs <= maxOrderGs; ++gs ) for ( unsigned int gem = 0; gem <= maxOrderGem; ++gem ) { if ( gs == 0 && gem == 0 ) continue; if ( gs > orderInGs || gem > orderInGem ) continue; list<vector<Vertex> > next = cluster(*c,gs,gem); if ( next.empty() ) continue; list<vector<Vertex> > cled = clusterAll(next,orderInGs-gs,orderInGem-gem); copy(cled.begin(),cled.end(),back_inserter(res)); } } return res; } list<vector<Tree2toNGenerator::Vertex> > Tree2toNGenerator:: clusterAll(const PDVector& external, unsigned int orderInGs, unsigned int orderInGem) { if ( !prepared ) { for ( VertexVector::iterator v = theVertices.begin(); v != theVertices.end(); ++v ) { (**v).init(); maxOrderGs = max(maxOrderGs,(**v).orderInGs()); maxOrderGem = max(maxOrderGem,(**v).orderInGem()); } prepared = true; } vector<Vertex> legs; for ( unsigned int k = 0; k < external.size(); ++k ) { Vertex v; v.parent = external[k]; v.externalId = k; v.spacelike = k < 2; legs.push_back(v); } list<vector<Vertex> > firstlegs; firstlegs.push_back(legs); return clusterAll(firstlegs,orderInGs,orderInGem); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void Tree2toNGenerator::persistentOutput(PersistentOStream & os) const { os << theVertices << maxOrderGs << maxOrderGem << prepared; } void Tree2toNGenerator::persistentInput(PersistentIStream & is, int) { is >> theVertices >> maxOrderGs >> maxOrderGem >> prepared; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<Tree2toNGenerator,HandlerBase> describeHerwigTree2toNGenerator("Herwig::Tree2toNGenerator", "HwMatchbox.so"); void Tree2toNGenerator::Init() { static ClassDocumentation<Tree2toNGenerator> documentation ("Generate Tree2toNDiagrams for a given process."); static RefVector<Tree2toNGenerator,Helicity::VertexBase> interfaceVertices ("Vertices", "The vertices to consider.", &Tree2toNGenerator::theVertices, -1, false, false, true, false, false); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/�������������������������������������������������0000755�0001750�0001750�00000000000�11756464210�022703� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FFMqgxDipole.cc����������������������������������0000644�0001750�0001750�00000007471�11754474775�025527� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFMqgxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFMqgxDipole class. // #include "FFMqgxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FFMassiveTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FFMassiveInvertedTildeKinematics.h" using namespace Herwig; FFMqgxDipole::FFMqgxDipole() : SubtractionDipole() {} FFMqgxDipole::~FFMqgxDipole() {} IBPtr FFMqgxDipole::clone() const { return new_ptr(*this); } IBPtr FFMqgxDipole::fullclone() const { return new_ptr(*this); } bool FFMqgxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter > 1 && spectator > 1 && partons[emission]->id() == ParticleID::g && abs(partons[emitter]->id()) < 7 && partons[emitter]->mass() != ZERO; } double FFMqgxDipole::me2Avg(double) const { assert(false && "implementation missing"); return 0.; } double FFMqgxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double y = subtractionParameters()[0]; double z = subtractionParameters()[1]; // masses double muQ2 = sqr( realEmissionME()->lastXComb().mePartonData()[realEmitter()]->mass() / lastDipoleScale() ); double muj2 = sqr( realEmissionME()->lastXComb().mePartonData()[realSpectator()]->mass() / lastDipoleScale() ); // massive extra terms double vijk = sqrt( sqr(2.*muj2+(1.-muQ2-muj2)*(1.-y))-4.*muj2 ) / ((1.-muQ2-muj2)*(1.-y)); double vbar = sqrt( 1.+sqr(muQ2)+sqr(muj2)-2.*(muQ2+muj2+muQ2*muj2) ) / (1.-muQ2-muj2); Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()])); double CF = (SM().Nc()*SM().Nc()-1.)/(2.*SM().Nc()); // extra mass terms cancel: mi2+m2-Mi2 = mQ2+0-mQ2 double res = 8.*Constants::pi*CF*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= ( 2./(1.-z*(1.-y)) - vbar/vijk * ( (1.+z) + muQ2*sqr(lastDipoleScale())*2./prop ) ); res *= -underlyingBornME()->colourCorrelatedME2(make_pair(bornEmitter(),bornSpectator())); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void FFMqgxDipole::persistentOutput(PersistentOStream &) const { } void FFMqgxDipole::persistentInput(PersistentIStream &, int) { } void FFMqgxDipole::Init() { static ClassDocumentation<FFMqgxDipole> documentation ("FFMqgxDipole"); DipoleRepository::registerDipole<FFMqgxDipole,FFMassiveTildeKinematics,FFMassiveInvertedTildeKinematics> ("FFMqgxDipole","FFMassiveTildeKinematics","FFMassiveInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FFMqgxDipole,SubtractionDipole> describeHerwigFFMqgxDipole("Herwig::FFMqgxDipole", "HwMatchbox.so"); �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IIgqxDipole.cc�����������������������������������0000644�0001750�0001750�00000007764�11754474775�025425� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IIgqxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IIgqxDipole class. // #include "IIgqxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IILightTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IILightInvertedTildeKinematics.h" using namespace Herwig; IIgqxDipole::IIgqxDipole() : SubtractionDipole() {} IIgqxDipole::~IIgqxDipole() {} IBPtr IIgqxDipole::clone() const { return new_ptr(*this); } IBPtr IIgqxDipole::fullclone() const { return new_ptr(*this); } bool IIgqxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter < 2 && spectator < 2 && partons[emitter]->id() == ParticleID::g && abs(partons[emission]->id()) < 6 && partons[emission]->mass() == ZERO && partons[spectator]->mass() == ZERO; } double IIgqxDipole::me2Avg(double ccme2) const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double res = 8.*Constants::pi*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= .5 * ( 1.-2.*x*(1.-x) ); res *= -ccme2; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); return res; } double IIgqxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double res = 8.*Constants::pi*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= .5 * ( 1.-2.*x*(1.-x) ); res *= -underlyingBornME()->colourCorrelatedME2(make_pair(bornEmitter(),bornSpectator())); res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void IIgqxDipole::persistentOutput(PersistentOStream &) const { } void IIgqxDipole::persistentInput(PersistentIStream &, int) { } void IIgqxDipole::Init() { static ClassDocumentation<IIgqxDipole> documentation ("IIgqxDipole"); DipoleRepository::registerDipole<IIgqxDipole,IILightTildeKinematics,IILightInvertedTildeKinematics> ("IIgqxDipole","IILightTildeKinematics","IILightInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<IIgqxDipole,SubtractionDipole> describeHerwigIIgqxDipole("Herwig::IIgqxDipole", "HwMatchbox.so"); ������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IFqqxDipole.h������������������������������������0000644�0001750�0001750�00000005640�11754474775�025265� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFqqxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IFqqxDipole_H #define HERWIG_IFqqxDipole_H // // This is the declaration of the IFqqxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief IFqqxDipole implements the D^{q,qbar}_k subtraction dipole. * */ class IFqqxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IFqqxDipole(); /** * The destructor. */ virtual ~IFqqxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IFqqxDipole & operator=(const IFqqxDipole &); }; } #endif /* HERWIG_IFqqxDipole_H */ ������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FFMqqxDipole.cc����������������������������������0000644�0001750�0001750�00000010222�11754474775�025525� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFMqqxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFMqqxDipole class. // #include "FFMqqxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SpinCorrelationTensor.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FFMassiveTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FFMassiveInvertedTildeKinematics.h" using namespace Herwig; FFMqqxDipole::FFMqqxDipole() : SubtractionDipole() {} FFMqqxDipole::~FFMqqxDipole() {} IBPtr FFMqqxDipole::clone() const { return new_ptr(*this); } IBPtr FFMqqxDipole::fullclone() const { return new_ptr(*this); } bool FFMqqxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter > 1 && spectator > 1 && abs(partons[emission]->id()) < 6 && abs(partons[emitter]->id()) < 6 && partons[emission]->id() + partons[emitter]->id() == 0 && partons[emission]->mass() != ZERO && partons[emitter]->mass() != ZERO; } double FFMqqxDipole::me2Avg(double) const { assert(false && "implementation missing"); return 0.; } double FFMqqxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double y = subtractionParameters()[0]; double z = subtractionParameters()[1]; // masses double muQ2 = sqr( realEmissionME()->lastXComb().mePartonData()[realEmission()]->mass() / lastDipoleScale() ); double muj2 = sqr( realEmissionME()->lastXComb().mePartonData()[realSpectator()]->mass() / lastDipoleScale() ); Energy2 mQ2 = sqr( realEmissionME()->lastXComb().mePartonData()[realEmission()]->mass() ); // massive extra terms double vijk = sqrt( sqr(2.*muj2+(1.-2.*muQ2-muj2)*(1.-y))-4.*muj2 ) / ((1.-2.*muQ2-muj2)*(1.-y)); Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()])); double zim = z-0.5*(1.-vijk), zjm = (1.-z)-0.5*(1.-vijk); Lorentz5Momentum pc = zim*realEmissionME()->lastXComb().meMomenta()[realEmitter()] - zjm*realEmissionME()->lastXComb().meMomenta()[realEmission()]; // kappa=0 -- otherwise: extra diagonal term (instead of just -1.) SpinCorrelationTensor corr(-1.,pc,-(prop+2.*mQ2)/4.); double res = -underlyingBornME()->spinColourCorrelatedME2(make_pair(bornEmitter(),bornSpectator()), corr); res *= 4.*Constants::pi*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/ (prop+2.*mQ2); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void FFMqqxDipole::persistentOutput(PersistentOStream &) const { } void FFMqqxDipole::persistentInput(PersistentIStream &, int) { } void FFMqqxDipole::Init() { static ClassDocumentation<FFMqqxDipole> documentation ("FFMqqxDipole"); DipoleRepository::registerDipole<FFMqqxDipole,FFMassiveTildeKinematics,FFMassiveInvertedTildeKinematics> ("FFMqqxDipole","FFMassiveTildeKinematics","FFMassiveInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FFMqqxDipole,SubtractionDipole> describeHerwigFFMqqxDipole("Herwig::FFMqqxDipole", "HwMatchbox.so"); ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IIgqxDipole.h������������������������������������0000644�0001750�0001750�00000005634�11754474775�025261� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IIgqxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IIgqxDipole_H #define HERWIG_IIgqxDipole_H // // This is the declaration of the IIgqxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief IIgqxDipole implements the D^{g,q,k} subtraction dipole * */ class IIgqxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IIgqxDipole(); /** * The destructor. */ virtual ~IIgqxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IIgqxDipole & operator=(const IIgqxDipole &); }; } #endif /* HERWIG_IIgqxDipole_H */ ����������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FIqqxDipole.h������������������������������������0000644�0001750�0001750�00000006072�11754474775�025265� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FIqqxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FIqqxDipole_H #define HERWIG_FIqqxDipole_H // // This is the declaration of the FIqqxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief FIqqxDipole implements the D_{q,qbar}^a subtraction dipole. * */ class FIqqxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FIqqxDipole(); /** * The destructor. */ virtual ~FIqqxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return true, if this dipole is symmetric with respect to emitter * and emission. */ virtual bool isSymmetric() const { return true; } /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FIqqxDipole & operator=(const FIqqxDipole &); }; } #endif /* HERWIG_FIqqxDipole_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IIggxDipole.h������������������������������������0000644�0001750�0001750�00000005635�11754474775�025250� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IIggxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IIggxDipole_H #define HERWIG_IIggxDipole_H // // This is the declaration of the IIggxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief IIggxDipole implements the D^{g,g;b} subtraction dipole. * */ class IIggxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IIggxDipole(); /** * The destructor. */ virtual ~IIggxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IIggxDipole & operator=(const IIggxDipole &); }; } #endif /* HERWIG_IIggxDipole_H */ ���������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FIggxDipole.cc�����������������������������������0000644�0001750�0001750�00000010613�11754474775�025373� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FIggxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FIggxDipole class. // #include "FIggxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SpinCorrelationTensor.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FILightTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FILightInvertedTildeKinematics.h" using namespace Herwig; FIggxDipole::FIggxDipole() : SubtractionDipole() {} FIggxDipole::~FIggxDipole() {} IBPtr FIggxDipole::clone() const { return new_ptr(*this); } IBPtr FIggxDipole::fullclone() const { return new_ptr(*this); } bool FIggxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter > 1 && spectator < 2 && partons[emission]->id() == ParticleID::g && partons[emitter]->id() == ParticleID::g && partons[spectator]->mass() == ZERO; } double FIggxDipole::me2Avg(double ccme2) const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; double z = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double res = 1./((1.-z)+(1.-x))+1./(z+(1.-x))-2.+z*(1.-z); res *= 16.*Constants::pi*SM().Nc()*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= -ccme2; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); return res; } double FIggxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; double z = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double diag = 1./(1.-z+1.-x)+1./(z+1.-x)-2.; Lorentz5Momentum pc = z*realEmissionME()->lastXComb().meMomenta()[realEmitter()] - (1.-z)*realEmissionME()->lastXComb().meMomenta()[realEmission()]; SpinCorrelationTensor corr(-diag,pc,prop/(2.*x)); double res = -underlyingBornME()->spinColourCorrelatedME2(make_pair(bornEmitter(),bornSpectator()), corr); res *= 16.*Constants::pi*SM().Nc()*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void FIggxDipole::persistentOutput(PersistentOStream &) const { } void FIggxDipole::persistentInput(PersistentIStream &, int) { } void FIggxDipole::Init() { static ClassDocumentation<FIggxDipole> documentation ("FIggxDipole"); DipoleRepository::registerDipole<FIggxDipole,FILightTildeKinematics,FILightInvertedTildeKinematics> ("FIggxDipole","FILightTildeKinematics","FILightInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FIggxDipole,SubtractionDipole> describeHerwigFIggxDipole("Herwig::FIggxDipole", "HwMatchbox.so"); ���������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/Makefile.in��������������������������������������0000644�0001750�0001750�00000050130�11756461700�024750� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/Matchbox/Dipoles DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwMatchboxDipoles_la_LIBADD = am_libHwMatchboxDipoles_la_OBJECTS = FFggxDipole.lo FFMggxDipole.lo \ FFMqgxDipole.lo FFMqqxDipole.lo FFqgxDipole.lo FFqqxDipole.lo \ FIggxDipole.lo FIqgxDipole.lo FIqqxDipole.lo IFggxDipole.lo \ IFgqxDipole.lo IFqgxDipole.lo IFqqxDipole.lo IIggxDipole.lo \ IIgqxDipole.lo IIqgxDipole.lo IIqqxDipole.lo \ SubtractionDipole.lo libHwMatchboxDipoles_la_OBJECTS = \ $(am_libHwMatchboxDipoles_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwMatchboxDipoles_la_SOURCES) DIST_SOURCES = $(libHwMatchboxDipoles_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwMatchboxDipoles.la libHwMatchboxDipoles_la_SOURCES = \ FFggxDipole.cc \ FFggxDipole.h \ FFMggxDipole.cc \ FFMggxDipole.h \ FFMqgxDipole.cc \ FFMqgxDipole.h \ FFMqqxDipole.cc \ FFMqqxDipole.h \ FFqgxDipole.cc \ FFqgxDipole.h \ FFqqxDipole.cc \ FFqqxDipole.h \ FIggxDipole.cc \ FIggxDipole.h \ FIqgxDipole.cc \ FIqgxDipole.h \ FIqqxDipole.cc \ FIqqxDipole.h \ IFggxDipole.cc \ IFggxDipole.h \ IFgqxDipole.cc \ IFgqxDipole.h \ IFqgxDipole.cc \ IFqgxDipole.h \ IFqqxDipole.cc \ IFqqxDipole.h \ IIggxDipole.cc \ IIggxDipole.h \ IIgqxDipole.cc \ IIgqxDipole.h \ IIqgxDipole.cc \ IIqgxDipole.h \ IIqqxDipole.cc \ IIqqxDipole.h \ SubtractionDipole.cc \ SubtractionDipole.h all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/Matchbox/Dipoles/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/Matchbox/Dipoles/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwMatchboxDipoles.la: $(libHwMatchboxDipoles_la_OBJECTS) $(libHwMatchboxDipoles_la_DEPENDENCIES) $(EXTRA_libHwMatchboxDipoles_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwMatchboxDipoles_la_OBJECTS) $(libHwMatchboxDipoles_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFMggxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFMqgxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFMqqxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFggxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFqgxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFqqxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FIggxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FIqgxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FIqqxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IFggxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IFgqxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IFqgxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IFqqxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IIggxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IIgqxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IIqgxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IIqqxDipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SubtractionDipole.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IIggxDipole.cc�����������������������������������0000644�0001750�0001750�00000010737�11754474775�025405� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IIggxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IIggxDipole class. // #include "IIggxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SpinCorrelationTensor.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IILightTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IILightInvertedTildeKinematics.h" using namespace Herwig; IIggxDipole::IIggxDipole() : SubtractionDipole() {} IIggxDipole::~IIggxDipole() {} IBPtr IIggxDipole::clone() const { return new_ptr(*this); } IBPtr IIggxDipole::fullclone() const { return new_ptr(*this); } bool IIggxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter < 2 && spectator < 2 && partons[emission]->id() == ParticleID::g && partons[emitter]->id() == ParticleID::g && partons[spectator]->mass() == ZERO; } double IIggxDipole::me2Avg(double ccme2) const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double res = x/(1.-x) + (1.-x)/x + x*(1.-x); res *= 16.*Constants::pi*SM().Nc()*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= -ccme2; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); return res; } double IIggxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; double v = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double diag = x/(1.-x)+x*(1.-x); Lorentz5Momentum pc = realEmissionME()->lastXComb().meMomenta()[realEmission()] - v*realEmissionME()->lastXComb().meMomenta()[realSpectator()]; Energy2 sc = realEmissionME()->lastXComb().meMomenta()[realEmission()]* realEmissionME()->lastXComb().meMomenta()[realSpectator()]; sc /= (1.-x)/(x*v); SpinCorrelationTensor corr(-diag,pc,sc); double res = -underlyingBornME()->spinColourCorrelatedME2(make_pair(bornEmitter(),bornSpectator()), corr); res *= 16.*Constants::pi*SM().Nc()*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void IIggxDipole::persistentOutput(PersistentOStream &) const { } void IIggxDipole::persistentInput(PersistentIStream &, int) { } void IIggxDipole::Init() { static ClassDocumentation<IIggxDipole> documentation ("IIggxDipole"); DipoleRepository::registerDipole<IIggxDipole,IILightTildeKinematics,IILightInvertedTildeKinematics> ("IIggxDipole","IILightTildeKinematics","IILightInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<IIggxDipole,SubtractionDipole> describeHerwigIIggxDipole("Herwig::IIggxDipole", "HwMatchbox.so"); ���������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IFqqxDipole.cc�����������������������������������0000644�0001750�0001750�00000011227�11754474775�025421� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFqqxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IFqqxDipole class. // #include "IFqqxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SpinCorrelationTensor.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IFLightTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IFLightInvertedTildeKinematics.h" using namespace Herwig; IFqqxDipole::IFqqxDipole() : SubtractionDipole() {} IFqqxDipole::~IFqqxDipole() {} IBPtr IFqqxDipole::clone() const { return new_ptr(*this); } IBPtr IFqqxDipole::fullclone() const { return new_ptr(*this); } bool IFqqxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter < 2 && spectator > 1 && abs(partons[emission]->id()) < 6 && abs(partons[emitter]->id()) < 6 && partons[emission]->id() - partons[emitter]->id() == 0 && partons[emitter]->mass() == ZERO && partons[emission]->mass() == ZERO && partons[spectator]->mass() == ZERO; } double IFqqxDipole::me2Avg(double ccme2) const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double res = x + 2.*(1.-x)/x; double CF = (SM().Nc()*SM().Nc()-1.)/(2.*SM().Nc()); res *= 8.*CF*Constants::pi*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= -ccme2; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); return res; } double IFqqxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; double u = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; Lorentz5Momentum pc = realEmissionME()->lastXComb().meMomenta()[realEmission()]/u - realEmissionME()->lastXComb().meMomenta()[realSpectator()]/(1.-u); Energy2 sc = realEmissionME()->lastXComb().meMomenta()[realEmission()]* realEmissionME()->lastXComb().meMomenta()[realSpectator()]; sc /= u*(1.-u)*(1.-x)/x; SpinCorrelationTensor corr(-x,pc,sc/2.); double res = -underlyingBornME()->spinColourCorrelatedME2(make_pair(bornEmitter(),bornSpectator()), corr); double CF = (SM().Nc()*SM().Nc()-1.)/(2.*SM().Nc()); res *= 8.*CF*Constants::pi*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void IFqqxDipole::persistentOutput(PersistentOStream &) const { } void IFqqxDipole::persistentInput(PersistentIStream &, int) { } void IFqqxDipole::Init() { static ClassDocumentation<IFqqxDipole> documentation ("IFqqxDipole"); DipoleRepository::registerDipole<IFqqxDipole,IFLightTildeKinematics,IFLightInvertedTildeKinematics> ("IFqqxDipole","IFLightTildeKinematics","IFLightInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<IFqqxDipole,SubtractionDipole> describeHerwigIFqqxDipole("Herwig::IFqqxDipole", "HwMatchbox.so"); �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FIqgxDipole.cc�����������������������������������0000644�0001750�0001750�00000010355�11754474775�025410� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FIqgxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FIqgxDipole class. // #include "FIqgxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FILightTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FILightInvertedTildeKinematics.h" using namespace Herwig; FIqgxDipole::FIqgxDipole() : SubtractionDipole() {} FIqgxDipole::~FIqgxDipole() {} IBPtr FIqgxDipole::clone() const { return new_ptr(*this); } IBPtr FIqgxDipole::fullclone() const { return new_ptr(*this); } bool FIqgxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter > 1 && spectator < 2 && partons[emission]->id() == ParticleID::g && abs(partons[emitter]->id()) < 6 && partons[emitter]->mass() == ZERO && partons[spectator]->mass() == ZERO; } double FIqgxDipole::me2Avg(double ccme2) const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; double z = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double CF = (SM().Nc()*SM().Nc()-1.)/(2.*SM().Nc()); double res = 8.*Constants::pi*CF*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= ( 2./(1.-z+(1.-x)) -(1.+z) +(1.-x)*(1.+3.*x*z) ); res *= -ccme2; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); return res; } double FIqgxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; double z = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double CF = (SM().Nc()*SM().Nc()-1.)/(2.*SM().Nc()); double res = 8.*Constants::pi*CF*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= ( 2./(1.-z+(1.-x)) -(1.+z) +(1.-x)*(1.+3.*x*z) ); res *= -underlyingBornME()->colourCorrelatedME2(make_pair(bornEmitter(),bornSpectator())); res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void FIqgxDipole::persistentOutput(PersistentOStream &) const { } void FIqgxDipole::persistentInput(PersistentIStream &, int) { } void FIqgxDipole::Init() { static ClassDocumentation<FIqgxDipole> documentation ("FIqgxDipole"); DipoleRepository::registerDipole<FIqgxDipole,FILightTildeKinematics,FILightInvertedTildeKinematics> ("FIqgxDipole","FILightTildeKinematics","FILightInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FIqgxDipole,SubtractionDipole> describeHerwigFIqgxDipole("Herwig::FIqgxDipole", "HwMatchbox.so"); �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FFMqgxDipole.h�����������������������������������0000644�0001750�0001750�00000005666�11754474775�025375� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFMqgxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFMqgxDipole_H #define HERWIG_FFMqgxDipole_H // // This is the declaration of the FFMqgxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer, Martin Stoll * * \brief FFMqgxDipole implements the D_{q,g;k} subtraction dipole. * */ class FFMqgxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFMqgxDipole(); /** * The destructor. */ virtual ~FFMqgxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFMqgxDipole & operator=(const FFMqgxDipole &); }; } #endif /* HERWIG_FFMqgxDipole_H */ ��������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IIqqxDipole.h������������������������������������0000644�0001750�0001750�00000005640�11754474775�025270� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IIqqxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IIqqxDipole_H #define HERWIG_IIqqxDipole_H // // This is the declaration of the IIqqxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief IIqqxDipole implements the D^{q,qbar;b} subtraction dipole. * */ class IIqqxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IIqqxDipole(); /** * The destructor. */ virtual ~IIqqxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IIqqxDipole & operator=(const IIqqxDipole &); }; } #endif /* HERWIG_IIqqxDipole_H */ ������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IIqgxDipole.cc�����������������������������������0000644�0001750�0001750�00000010137�11754474775�025411� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IIqgxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IIqgxDipole class. // #include "IIqgxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IILightTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IILightInvertedTildeKinematics.h" using namespace Herwig; IIqgxDipole::IIqgxDipole() : SubtractionDipole() {} IIqgxDipole::~IIqgxDipole() {} IBPtr IIqgxDipole::clone() const { return new_ptr(*this); } IBPtr IIqgxDipole::fullclone() const { return new_ptr(*this); } bool IIqgxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter < 2 && spectator < 2 && partons[emission]->id() == ParticleID::g && abs(partons[emitter]->id()) < 6 && partons[emitter]->mass() == ZERO && partons[spectator]->mass() == ZERO; } double IIqgxDipole::me2Avg(double ccme2) const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double CF = (SM().Nc()*SM().Nc()-1.)/(2.*SM().Nc()); double res = 8.*Constants::pi*CF*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= 2./(1.-x) - (1.+x); res *= -ccme2; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); return res; } double IIqgxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double CF = (SM().Nc()*SM().Nc()-1.)/(2.*SM().Nc()); double res = 8.*Constants::pi*CF*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= 2./(1.-x) - (1.+x); res *= -underlyingBornME()->colourCorrelatedME2(make_pair(bornEmitter(),bornSpectator())); res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void IIqgxDipole::persistentOutput(PersistentOStream &) const { } void IIqgxDipole::persistentInput(PersistentIStream &, int) { } void IIqgxDipole::Init() { static ClassDocumentation<IIqgxDipole> documentation ("IIqgxDipole"); DipoleRepository::registerDipole<IIqgxDipole,IILightTildeKinematics,IILightInvertedTildeKinematics> ("IIqgxDipole","IILightTildeKinematics","IILightInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<IIqgxDipole,SubtractionDipole> describeHerwigIIqgxDipole("Herwig::IIqgxDipole", "HwMatchbox.so"); ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FFqgxDipole.h������������������������������������0000644�0001750�0001750�00000005635�11754474775�025254� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFqgxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFqgxDipole_H #define HERWIG_FFqgxDipole_H // // This is the declaration of the FFqgxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief FFqgxDipole implements the D_{q,g;k} subtraction dipole. * */ class FFqgxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFqgxDipole(); /** * The destructor. */ virtual ~FFqgxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFqgxDipole & operator=(const FFqgxDipole &); }; } #endif /* HERWIG_FFqgxDipole_H */ ���������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FFqqxDipole.cc�����������������������������������0000644�0001750�0001750�00000007776�11754474775�025434� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFqqxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFqqxDipole class. // #include "FFqqxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SpinCorrelationTensor.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FFLightTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FFLightInvertedTildeKinematics.h" using namespace Herwig; FFqqxDipole::FFqqxDipole() : SubtractionDipole() {} FFqqxDipole::~FFqqxDipole() {} IBPtr FFqqxDipole::clone() const { return new_ptr(*this); } IBPtr FFqqxDipole::fullclone() const { return new_ptr(*this); } bool FFqqxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter > 1 && spectator > 1 && abs(partons[emission]->id()) < 6 && abs(partons[emitter]->id()) < 6 && partons[emission]->id() + partons[emitter]->id() == 0 && partons[emitter]->mass() == ZERO && partons[emission]->mass() == ZERO && partons[spectator]->mass() == ZERO; } double FFqqxDipole::me2Avg(double ccme2) const { if ( jacobian() == 0.0 ) return 0.0; double z = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()])); double res = 1.-2.*z*(1.-z); res *= -ccme2; res *= 4.*Constants::pi*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); return res; } double FFqqxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double z = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()])); Lorentz5Momentum pc = z*realEmissionME()->lastXComb().meMomenta()[realEmitter()] - (1.-z)*realEmissionME()->lastXComb().meMomenta()[realEmission()]; SpinCorrelationTensor corr(-1.,pc,-prop/4.); double res = -underlyingBornME()->spinColourCorrelatedME2(make_pair(bornEmitter(),bornSpectator()), corr); res *= 4.*Constants::pi*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void FFqqxDipole::persistentOutput(PersistentOStream &) const { } void FFqqxDipole::persistentInput(PersistentIStream &, int) { } void FFqqxDipole::Init() { static ClassDocumentation<FFqqxDipole> documentation ("FFqqxDipole"); DipoleRepository::registerDipole<FFqqxDipole,FFLightTildeKinematics,FFLightInvertedTildeKinematics> ("FFqqxDipole","FFLightTildeKinematics","FFLightInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FFqqxDipole,SubtractionDipole> describeHerwigFFqqxDipole("Herwig::FFqqxDipole", "HwMatchbox.so"); ��herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h������������������������������0000644�0001750�0001750�00000054415�11754474775�026536� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SubtractionDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SubtractionDipole_H #define HERWIG_SubtractionDipole_H // // This is the declaration of the SubtractionDipole class. // #include "ThePEG/MatrixElement/MEBase.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Handlers/StdDependentXComb.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxMEBase.h" namespace Herwig { using namespace ThePEG; class TildeKinematics; class InvertedTildeKinematics; /** * \ingroup Matchbox * \author Simon Platzer * * \brief SubtractionDipole represents a dipole subtraction * term in the formalism of Catani and Seymour. * */ class SubtractionDipole: public MEBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ SubtractionDipole(); /** * The destructor. */ virtual ~SubtractionDipole(); //@} public: /** @name Subprocess and diagram information. */ //@{ /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const = 0; /** * Return true, if this dipole is symmetric with respect to emitter * and emission. */ virtual bool isSymmetric() const { return false; } /** * If this is a dependent matrix element in a ME group, return true, * if it applies to the process set in lastXComb() */ virtual bool apply() const { return theApply; } /** * Setup bookkeeping maps. */ void setupBookkeeping(); /** * Get bookkeeping information for the given * real emission diagram */ void subtractionBookkeeping(); /** * Determine bookkeeping information for * the underlying Born process supplied through * the lastHeadXComb() object. */ void splittingBookkeeping(); /** * Create a StdDependentXComb object for the underlying * Born process, given a XComb driving the real emission */ StdDependentXCombPtr makeBornXComb(tStdXCombPtr realXC); /** * Create a StdDependentXComb object for the real emission process, * given a XComb driving the underlying Born */ StdDependentXCombPtr makeRealXComb(tStdXCombPtr bornXC); /** * Return true, if bookkeeping did not find a non-trivial setup. */ bool empty() const { return theSplittingMap.empty(); } /** * Return the emitter as referred to by the real emission * matrix element. */ int realEmitter() const { return theRealEmitter; } /** * Set the emitter as referred to by the real emission * matrix element. */ void realEmitter(int id) { theRealEmitter = id; } /** * Return the emission as referred to by the real emission * matrix element. */ int realEmission() const { return theRealEmission; } /** * Set the emission as referred to by the real emission * matrix element. */ void realEmission(int id) { theRealEmission = id; } /** * Return the spectator as referred to by the real emission * matrix element. */ int realSpectator() const { return theRealSpectator; } /** * Set the spectator as referred to by the real emission * matrix element. */ void realSpectator(int id) { theRealSpectator = id; } /** * Return the emitter as referred to by the underlying * Born process. */ int bornEmitter() const { return theBornEmitter; } /** * Set the emitter as referred to by the underlying * Born process. */ void bornEmitter(int id) { theBornEmitter = id; } /** * Return the spectator as referred to by the underlying * Born process. */ int bornSpectator() const { return theBornSpectator; } /** * Set the spectator as referred to by the underlying * Born process. */ void bornSpectator(int id) { theBornSpectator = id; } /** * Define the real emission key type */ typedef pair<pair<cPDVector,int>,pair<int,int> > RealEmissionKey; /** * Create a real emission key */ static RealEmissionKey realEmissionKey(const cPDVector& proc, int em, int emm, int sp) { return make_pair(make_pair(proc,emm),make_pair(em,sp)); } /** * Return the diagram of a real emission key */ static const cPDVector& process(const RealEmissionKey& key) { return key.first.first; } /** * Return the emission id of a real emission key */ static int emission(const RealEmissionKey& key) { return key.first.second; } /** * Return the emitter id of a real emission key */ static int emitter(const RealEmissionKey& key) { return key.second.first; } /** * Return the spectator id of a real emission key */ static int spectator(const RealEmissionKey& key) { return key.second.second; } /** * Define the underlying Born key type */ typedef pair<cPDVector,pair<int,int> > UnderlyingBornKey; /** * Create a underlying Born key */ static UnderlyingBornKey underlyingBornKey(const cPDVector& proc, int em, int sp) { return make_pair(proc,make_pair(em,sp)); } /** * Return the diagram of a underlying Born key */ static const cPDVector& process(const UnderlyingBornKey& key) { return key.first; } /** * Return the emitter id of a underlying Born key */ static int emitter(const UnderlyingBornKey& key) { return key.second.first; } /** * Return the spectator id of a underlying Born key */ static int spectator(const UnderlyingBornKey& key) { return key.second.second; } /** * Define real emission key and index dictionary * for partons not involved in the given dipole. */ typedef pair<RealEmissionKey,map<int,int> > RealEmissionInfo; /** * Define underlying Born key and index dictionary * for partons not involved in the given dipole. */ typedef pair<UnderlyingBornKey,map<int,int> > UnderlyingBornInfo; /** * Return the merging map */ const map<RealEmissionKey,UnderlyingBornInfo>& mergingMap() const { return theMergingMap; } /** * Return the splitting map */ const map<UnderlyingBornKey,RealEmissionInfo>& splittingMap() const { return theSplittingMap; } /** * Return the underlying Born diagrams to be considered * for the given real emission process. */ const DiagramVector& underlyingBornDiagrams(const cPDVector& real) const; /** * Return the real emission diagrams to be considered * for the given Born process. */ const DiagramVector& realEmissionDiagrams(const cPDVector& born) const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Return true, if this matrix element does not want to * make use of mirroring processes; in this case all * possible partonic subprocesses with a fixed assignment * of incoming particles need to be provided through the diagrams * added with the add(...) method. */ virtual bool noMirror () const { return true; } /** * With the information previously supplied with the * setKinematics(...) method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Select a diagram. Default version uses diagrams(const * DiagramVector &) to select a diagram according to the * weights. This is the only method used that should be outside of * MEBase. */ virtual DiagramIndex diagram(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Select a ColpurLines geometry. The default version returns a * colour geometry selected among the ones returned from * colourGeometries(tcDiagPtr). */ virtual const ColourLines & selectColourGeometry(tcDiagPtr diag) const; /** * Return the order in \f$\alpha_S\f$ in which this matrix element * is given. */ virtual unsigned int orderInAlphaS() const { return realEmissionME()->orderInAlphaS(); } /** * Return the order in \f$\alpha_{EM}\f$ in which this matrix * element is given. Returns 0. */ virtual unsigned int orderInAlphaEW() const { return underlyingBornME()->orderInAlphaEW(); } //@} /** @name Phasespace generation */ //@{ /** * Set the XComb object to be used in the next call to * generateKinematics() and dSigHatDR(). */ virtual void setXComb(tStdXCombPtr xc); /** * Set the typed and momenta of the incoming and outgoing partons to * be used in subsequent calls to me() and colourGeometries() * according to the associated XComb object. If the function is * overridden in a sub class the new function must call the base * class one first. */ virtual void setKinematics(); /** * Generate internal degrees of freedom given nDim() uniform random * numbers in the interval ]0,1[. To help the phase space generator, * the 'dSigHatDR' should be a smooth function of these numbers, * although this is not strictly necessary. The return value should * be true of the generation succeeded. If so the generated momenta * should be stored in the meMomenta() vector. */ virtual bool generateKinematics(const double * r); /** * The number of internal degreed of freedom used in the matrix * element. This default version returns 0; */ virtual int nDim() const; /** * Return true, if this matrix element expects * the incoming partons in their center-of-mass system */ virtual bool wantCMS () const { return realEmissionME()->wantCMS(); } /** * If this is a dependent matrix element in a ME group, return true, * if cuts should be inherited from the head matrix element, i.e. no * cut is being applied to the dependent matrix element if the head * configuration has passed the cuts. */ virtual bool headCuts() const { return testSubtraction(); } /** * If this is a dependent matrix element in a ME group, return true, * if cuts should be ignored. */ virtual bool ignoreCuts() const { return splitting(); } /** * Clear the information previously provided by a call to * setKinematics(...). */ virtual void clearKinematics(); //@} /** @name Tilde kinematics */ //@{ /** * Return the TildeKinematics object used */ Ptr<TildeKinematics>::tcptr tildeKinematics() const { return theTildeKinematics; } /** * Set the TildeKinematics object used */ void tildeKinematics(Ptr<TildeKinematics>::tptr); /** * Generate the tilde kinematics from real emission * kinematics accessible through the XComb's * head object and store it in meMomenta(). This default * implemenation uses the tildeKinematics() object. */ virtual bool generateTildeKinematics(); /** * Return the InvertedTildeKinematics object used */ Ptr<InvertedTildeKinematics>::tcptr invertedTildeKinematics() const { return theInvertedTildeKinematics; } /** * Set the InvertedTildeKinematics object used */ void invertedTildeKinematics(Ptr<InvertedTildeKinematics>::tptr); /** * Return the number of additional random numbers * needed to generate real emission kinematics off * the tilde kinematics previously supplied through * the XComb object. This default implementation * returns invertedTildeKinematics()->nDimRadiation() */ virtual int nDimRadiation() const; /** * Generate the real emission kinematics * off the Born kinematics accessible through the XComb's * head object and store it in meMomenta(); store * the single particle phasespace in units of lastHeadXComb()->lastSHat() * in jacobian(). This default * implemenation uses the invertedTildeKinematics() object */ virtual bool generateRadiationKinematics(const double *); /** * Set a pt cut when splitting */ void ptCut(Energy cut); /** * Return the relevant dipole scale */ Energy lastDipoleScale() const { return splitting() ? theLastSplittingScale : theLastSubtractionScale; } /** * Return the relevant pt */ Energy lastPt() const { return splitting() ? theLastSplittingPt : theLastSubtractionPt; } /** * Return true, if this dipole acts in splitting mode. */ bool splitting() const { return theSplitting; } /** * Switch on splitting mode for this dipole. */ void doSplitting() { theSplitting = true; } /** * Switch off splitting mode for this dipole. */ void doSubtraction() { theSplitting = false; } /** * Return the subtraction parameters. */ const vector<double>& subtractionParameters() const { return theSubtractionParameters; } /** * Access the subtraction parameters. */ vector<double>& subtractionParameters() { return theSubtractionParameters; } //@} /** @name Scale choices, couplings and PDFs */ //@{ /** * Return the scale associated with the phase space point provided * by the last call to setKinematics(). */ virtual Energy2 scale() const { return realEmissionME()->scale(); } /** * Return the value of \f$\alpha_S\f$ associated with the phase * space point provided by the last call to setKinematics(). This * versions returns SM().alphaS(scale()). */ virtual double alphaS() const { return realEmissionME()->lastAlphaS(); } /** * Return the value of \f$\alpha_EM\f$ associated with the phase * space point provided by the last call to setKinematics(). This * versions returns SM().alphaEM(scale()). */ virtual double alphaEM() const { return realEmissionME()->lastAlphaEM(); } /** * Return true, if this matrix element provides the PDF * weight for the first incoming parton itself. */ virtual bool havePDFWeight1() const { return realEmissionME()->havePDFWeight1(); } /** * Return true, if this matrix element provides the PDF * weight for the second incoming parton itself. */ virtual bool havePDFWeight2() const { return realEmissionME()->havePDFWeight2(); } //@} /** @name Matrix elements and evaluation */ //@{ /** * Return the real emission matrix element */ Ptr<MatchboxMEBase>::tcptr realEmissionME() const { return theRealEmissionME; } /** * Return the real emission matrix element */ Ptr<MatchboxMEBase>::tptr realEmissionME() { return theRealEmissionME; } /** * Set the real emission matrix element */ void realEmissionME(Ptr<MatchboxMEBase>::tptr me) { theRealEmissionME = me; } /** * Return the underlying Born matrix element */ Ptr<MatchboxMEBase>::tcptr underlyingBornME() const { return theUnderlyingBornME; } /** * Return the underlying Born matrix element */ Ptr<MatchboxMEBase>::tptr underlyingBornME() { return theUnderlyingBornME; } /** * Set the underlying Born matrix element */ void underlyingBornME(Ptr<MatchboxMEBase>::tptr me) { theUnderlyingBornME = me; } /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) const = 0; /** * Return the matrix element averaged over spin correlations. */ virtual CrossSection dSigAvgDR(Energy2 factorizationScale) const; /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR(Energy2 factorizationScale) const; /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR() const { return dSigHatDR(ZERO); } //@} /** @name Caching and diagnostic information */ //@{ /** * Inform this matrix element that a new phase space * point is about to be generated, so all caches should * be flushed. */ virtual void flushCaches() { theUnderlyingBornME->flushCaches(); theRealEmissionME->flushCaches(); } /** * Indicate that the subtraction is being tested. */ void testSubtraction() { theSubtractionTest = true; } /** * Return true, if the subtraction is being tested. */ bool testSubtraction() const { return theSubtractionTest; } /** * Return true, if verbose */ bool verbose() const { return realEmissionME()->verbose() || underlyingBornME()->verbose(); } /** * Dump the setup to an ostream */ void print(ostream&) const; /** * Print debug information on the last event */ virtual void printLastEvent(ostream&) const; /** * Write out diagnostic information for * generateTildeKinematics */ void logGenerateTildeKinematics() const; /** * Write out diagnostic information for * generateRadiationKinematics */ void logGenerateRadiationKinematics(const double * r) const; /** * Write out diagnostic information for * me2 evaluation */ void logME2() const; /** * Write out diagnostic information * for dsigdr evaluation */ void logDSigHatDR(double effectiveJac) const; /** * Dump xcomb hierarchies. */ void dumpInfo(const string& prefix = "") const; //@} /** @name Reweight objects */ //@{ /** * Insert a reweight object */ void addReweight(Ptr<MatchboxReweightBase>::ptr rw) { theReweights.push_back(rw); } /** * Return the reweight objects */ const vector<Ptr<MatchboxReweightBase>::ptr>& reweights() const { return theReweights; } /** * Access the reweight objects */ vector<Ptr<MatchboxReweightBase>::ptr>& reweights() { return theReweights; } //@} /** @name Methods used to setup SubtractionDipole objects */ //@{ /** * Clone this dipole. */ Ptr<SubtractionDipole>::ptr cloneMe() const { return dynamic_ptr_cast<Ptr<SubtractionDipole>::ptr>(clone()); } /** * Clone the dependencies, using a given prefix. */ void cloneDependencies(const std::string& prefix = ""); //@} /** @name Methods required to setup the event record */ //@{ /** * construct the spin information for the interaction */ virtual void constructVertex(tSubProPtr sub); /** * Comlete a SubProcess object using the internal degrees of freedom * generated in the last generateKinematics() (and possible other * degrees of freedom which was intergated over in dSigHatDR(). This * default version does nothing. Will be made purely virtual in the * future. */ virtual void generateSubCollision(SubProcess & sub); //@} 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(); private: /** * Wether or not this dipole acts in splitting mode. */ bool theSplitting; /** * True, if should apply to process in the xcomb. */ bool theApply; /** * True, if the subtraction is being tested. */ bool theSubtractionTest; /** * The real emission matrix element to be considered */ Ptr<MatchboxMEBase>::ptr theRealEmissionME; /** * The underlying Born matrix element */ Ptr<MatchboxMEBase>::ptr theUnderlyingBornME; /** * The TildeKinematics to be used. */ Ptr<TildeKinematics>::ptr theTildeKinematics; /** * The InvertedTildeKinematics to be used. */ Ptr<InvertedTildeKinematics>::ptr theInvertedTildeKinematics; /** * A vector of reweight objects the sum of which * should be applied to reweight this dipole */ vector<Ptr<MatchboxReweightBase>::ptr> theReweights; /** * The emitter as referred to by the real emission * matrix element. */ int theRealEmitter; /** * The emission as referred to by the real emission * matrix element. */ int theRealEmission; /** * The spectator as referred to by the real emission * matrix element. */ int theRealSpectator; /** * The subtraction parameters */ vector<double> theSubtractionParameters; /** * Map real emission diagrams to underlying Born diagrams * and tilde emitter/spectator. */ map<RealEmissionKey,UnderlyingBornInfo> theMergingMap; /** * Map underlying Born diagrams and tilde emitter/spectator * to real emission diagram containing the splitting. */ map<UnderlyingBornKey,RealEmissionInfo> theSplittingMap; /** * Map underlying Born diagrams to emitter/spectator pairs */ map<cPDVector,pair<int,int> > theIndexMap; /** * Map real emission processes to Born diagrams */ map<cPDVector,DiagramVector> theUnderlyingBornDiagrams; /** * Map Born processes to real emission diagrams */ map<cPDVector,DiagramVector> theRealEmissionDiagrams; /** * The last real emission key encountered */ RealEmissionKey lastRealEmissionKey; /** * The last underlying Born key encountered */ UnderlyingBornKey lastUnderlyingBornKey; /** * The emitter as referred to by the underlying Born * matrix element. */ int theBornEmitter; /** * The spectator as referred to by the underlying Born * matrix element. */ int theBornSpectator; /** * The last scale as generated from the tilde mapping */ Energy theLastSubtractionScale; /** * The last scale as generated from the splitting mapping */ Energy theLastSplittingScale; /** * The last pt as generated from the tilde mapping */ Energy theLastSubtractionPt; /** * The last pt as generated from the splitting mapping */ Energy theLastSplittingPt; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SubtractionDipole & operator=(const SubtractionDipole &); }; } #endif /* HERWIG_SubtractionDipole_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IIqqxDipole.cc�����������������������������������0000644�0001750�0001750�00000011214�11754474775�025420� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IIqqxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IIqqxDipole class. // #include "IIqqxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SpinCorrelationTensor.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IILightTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IILightInvertedTildeKinematics.h" using namespace Herwig; IIqqxDipole::IIqqxDipole() : SubtractionDipole() {} IIqqxDipole::~IIqqxDipole() {} IBPtr IIqqxDipole::clone() const { return new_ptr(*this); } IBPtr IIqqxDipole::fullclone() const { return new_ptr(*this); } bool IIqqxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter < 2 && spectator < 2 && abs(partons[emission]->id()) < 6 && abs(partons[emitter]->id()) < 6 && partons[emission]->id() - partons[emitter]->id() == 0 && partons[emitter]->mass() == ZERO && partons[emission]->mass() == ZERO && partons[spectator]->mass() == ZERO; } double IIqqxDipole::me2Avg(double ccme2) const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double res = (1.+sqr(1.-x))/x; double CF = (SM().Nc()*SM().Nc()-1.)/(2.*SM().Nc()); res *= 8.*Constants::pi*CF*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= -ccme2; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); return res; } double IIqqxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; double v = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; Lorentz5Momentum pc = realEmissionME()->lastXComb().meMomenta()[realEmission()] - v*realEmissionME()->lastXComb().meMomenta()[realSpectator()]; Energy2 sc = realEmissionME()->lastXComb().meMomenta()[realEmission()]* realEmissionME()->lastXComb().meMomenta()[realSpectator()]; sc /= (1.-x)/(x*v); SpinCorrelationTensor corr(-x,pc,sc/2.); double res = -underlyingBornME()->spinColourCorrelatedME2(make_pair(bornEmitter(),bornSpectator()), corr); double CF = (SM().Nc()*SM().Nc()-1.)/(2.*SM().Nc()); res *= 8.*Constants::pi*CF*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void IIqqxDipole::persistentOutput(PersistentOStream &) const { } void IIqqxDipole::persistentInput(PersistentIStream &, int) { } void IIqqxDipole::Init() { static ClassDocumentation<IIqqxDipole> documentation ("IIqqxDipole"); DipoleRepository::registerDipole<IIqqxDipole,IILightTildeKinematics,IILightInvertedTildeKinematics> ("IIqqxDipole","IILightTildeKinematics","IILightInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<IIqqxDipole,SubtractionDipole> describeHerwigIIqqxDipole("Herwig::IIqqxDipole", "HwMatchbox.so"); ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FFMggxDipole.cc����������������������������������0000644�0001750�0001750�00000007654�11754474775�025520� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFMggxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFMggxDipole class. // #include "FFMggxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SpinCorrelationTensor.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FFMassiveTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FFMassiveInvertedTildeKinematics.h" using namespace Herwig; FFMggxDipole::FFMggxDipole() : SubtractionDipole() {} FFMggxDipole::~FFMggxDipole() {} IBPtr FFMggxDipole::clone() const { return new_ptr(*this); } IBPtr FFMggxDipole::fullclone() const { return new_ptr(*this); } bool FFMggxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter > 1 && spectator > 1 && partons[emission]->id() == ParticleID::g && partons[emitter]->id() == ParticleID::g && partons[spectator]->mass() != ZERO; } double FFMggxDipole::me2Avg(double) const { assert(false && "implementation missing"); return 0.; } double FFMggxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double y = subtractionParameters()[0]; double z = subtractionParameters()[1]; // masses, g->gg all masses zero except spectator double muj2 = sqr( realEmissionME()->lastXComb().mePartonData()[realSpectator()]->mass() / lastDipoleScale() ); // massive extra terms double vijk = sqrt( sqr(2.*muj2+(1.-muj2)*(1.-y))-4.*muj2 ) / ((1.-muj2)*(1.-y)); Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()])); double diag = 1./(1-z*(1-y))+1./(1-(1.-z)*(1.-y))-2./vijk; // kappa=0 double zim = z-0.5*(1.-vijk), zjm = (1.-z)-0.5*(1.-vijk); Lorentz5Momentum pc = zim*realEmissionME()->lastXComb().meMomenta()[realEmitter()] - zjm*realEmissionME()->lastXComb().meMomenta()[realEmission()]; SpinCorrelationTensor corr(-diag,pc,prop/2.*vijk); double res = -underlyingBornME()->spinColourCorrelatedME2(make_pair(bornEmitter(),bornSpectator()), corr); // extra mass terms all = 0. res *= 16.*Constants::pi*SM().Nc()*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void FFMggxDipole::persistentOutput(PersistentOStream &) const { } void FFMggxDipole::persistentInput(PersistentIStream &, int) { } void FFMggxDipole::Init() { static ClassDocumentation<FFMggxDipole> documentation ("FFMggxDipole"); DipoleRepository::registerDipole<FFMggxDipole,FFMassiveTildeKinematics,FFMassiveInvertedTildeKinematics> ("FFMggxDipole","FFMassiveTildeKinematics","FFMassiveInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FFMggxDipole,SubtractionDipole> describeHerwigFFMggxDipole("Herwig::FFMggxDipole", "HwMatchbox.so"); ������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IIqgxDipole.h������������������������������������0000644�0001750�0001750�00000005634�11754474775�025261� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IIqgxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IIqgxDipole_H #define HERWIG_IIqgxDipole_H // // This is the declaration of the IIqgxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief IIqgxDipole implements the D^{q,g;b} subtraction dipole * */ class IIqgxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IIqgxDipole(); /** * The destructor. */ virtual ~IIqgxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IIqgxDipole & operator=(const IIqgxDipole &); }; } #endif /* HERWIG_IIqgxDipole_H */ ����������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/Makefile.am��������������������������������������0000644�0001750�0001750�00000001264�11754474775�024761� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwMatchboxDipoles.la libHwMatchboxDipoles_la_SOURCES = \ FFggxDipole.cc \ FFggxDipole.h \ FFMggxDipole.cc \ FFMggxDipole.h \ FFMqgxDipole.cc \ FFMqgxDipole.h \ FFMqqxDipole.cc \ FFMqqxDipole.h \ FFqgxDipole.cc \ FFqgxDipole.h \ FFqqxDipole.cc \ FFqqxDipole.h \ FIggxDipole.cc \ FIggxDipole.h \ FIqgxDipole.cc \ FIqgxDipole.h \ FIqqxDipole.cc \ FIqqxDipole.h \ IFggxDipole.cc \ IFggxDipole.h \ IFgqxDipole.cc \ IFgqxDipole.h \ IFqgxDipole.cc \ IFqgxDipole.h \ IFqqxDipole.cc \ IFqqxDipole.h \ IIggxDipole.cc \ IIggxDipole.h \ IIgqxDipole.cc \ IIgqxDipole.h \ IIqgxDipole.cc \ IIqgxDipole.h \ IIqqxDipole.cc \ IIqqxDipole.h \ SubtractionDipole.cc \ SubtractionDipole.h ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FIggxDipole.h������������������������������������0000644�0001750�0001750�00000006067�11754474775�025245� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FIggxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FIggxDipole_H #define HERWIG_FIggxDipole_H // // This is the declaration of the FIggxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief FIggxDipole implements the D_{g,g}^a subtraction dipole. * */ class FIggxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FIggxDipole(); /** * The destructor. */ virtual ~FIggxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return true, if this dipole is symmetric with respect to emitter * and emission. */ virtual bool isSymmetric() const { return true; } /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FIggxDipole & operator=(const FIggxDipole &); }; } #endif /* HERWIG_FIggxDipole_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IFgqxDipole.h������������������������������������0000644�0001750�0001750�00000005635�11754474775�025257� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFgqxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IFgqxDipole_H #define HERWIG_IFgqxDipole_H // // This is the declaration of the IFgqxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief IFgqxDipole implements the D_k^{g,q} subtraction dipole. * */ class IFgqxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IFgqxDipole(); /** * The destructor. */ virtual ~IFgqxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IFgqxDipole & operator=(const IFgqxDipole &); }; } #endif /* HERWIG_IFgqxDipole_H */ ���������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FIqqxDipole.cc�����������������������������������0000644�0001750�0001750�00000010644�11754474775�025423� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FIqqxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FIqqxDipole class. // #include "FIqqxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SpinCorrelationTensor.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FILightTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FILightInvertedTildeKinematics.h" using namespace Herwig; FIqqxDipole::FIqqxDipole() : SubtractionDipole() {} FIqqxDipole::~FIqqxDipole() {} IBPtr FIqqxDipole::clone() const { return new_ptr(*this); } IBPtr FIqqxDipole::fullclone() const { return new_ptr(*this); } bool FIqqxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter > 1 && spectator < 2 && abs(partons[emission]->id()) < 6 && abs(partons[emitter]->id()) < 6 && partons[emission]->id() + partons[emitter]->id() == 0 && partons[emitter]->mass() == ZERO && partons[emission]->mass() == ZERO && partons[spectator]->mass() == ZERO; } double FIqqxDipole::me2Avg(double ccme2) const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; double z = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double res = 1.-2.*z*(1.-z); res *= 4.*Constants::pi*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= -ccme2; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); return res; } double FIqqxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; double z = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; Lorentz5Momentum pc = z*realEmissionME()->lastXComb().meMomenta()[realEmitter()] - (1.-z)*realEmissionME()->lastXComb().meMomenta()[realEmission()]; SpinCorrelationTensor corr(-1.,pc,-prop/(4.*x)); double res = -underlyingBornME()->spinColourCorrelatedME2(make_pair(bornEmitter(),bornSpectator()), corr); res *= 4.*Constants::pi*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void FIqqxDipole::persistentOutput(PersistentOStream &) const { } void FIqqxDipole::persistentInput(PersistentIStream &, int) { } void FIqqxDipole::Init() { static ClassDocumentation<FIqqxDipole> documentation ("FIqqxDipole"); DipoleRepository::registerDipole<FIqqxDipole,FILightTildeKinematics,FILightInvertedTildeKinematics> ("FIqqxDipole","FILightTildeKinematics","FILightInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FIqqxDipole,SubtractionDipole> describeHerwigFIqqxDipole("Herwig::FIqqxDipole", "HwMatchbox.so"); ��������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FFMqqxDipole.h�����������������������������������0000644�0001750�0001750�00000006123�11754474775�025374� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFMqqxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFMqqxDipole_H #define HERWIG_FFMqqxDipole_H // // This is the declaration of the FFMqqxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer, Martin Stoll * * \brief FFMqqxDipole implements the D_{q,qbar;k} subtraction dipole. * */ class FFMqqxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFMqqxDipole(); /** * The destructor. */ virtual ~FFMqqxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return true, if this dipole is symmetric with respect to emitter * and emission. */ virtual bool isSymmetric() const { return true; } /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFMqqxDipole & operator=(const FFMqqxDipole &); }; } #endif /* HERWIG_FFMqqxDipole_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IFqgxDipole.h������������������������������������0000644�0001750�0001750�00000005634�11754474775�025256� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFqgxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IFqgxDipole_H #define HERWIG_IFqgxDipole_H // // This is the declaration of the IFqgxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief IFqgxDipole implements the D^{q,g}_k subtraction dipole * */ class IFqgxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IFqgxDipole(); /** * The destructor. */ virtual ~IFqgxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IFqgxDipole & operator=(const IFqgxDipole &); }; } #endif /* HERWIG_IFqgxDipole_H */ ����������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FFMggxDipole.h�����������������������������������0000644�0001750�0001750�00000006122�11754474775�025347� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFMggxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFMggxDipole_H #define HERWIG_FFMggxDipole_H // // This is the declaration of the FFMggxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer, Martin Stoll * * \brief FFMggxDipole implements the D_{g,g;k} subtraction dipole. * */ class FFMggxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFMggxDipole(); /** * The destructor. */ virtual ~FFMggxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return true, if this dipole is symmetric with respect to emitter * and emission. */ virtual bool isSymmetric() const { return true; } /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFMggxDipole & operator=(const FFMggxDipole &); }; } #endif /* HERWIG_FFMggxDipole_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FIqgxDipole.h������������������������������������0000644�0001750�0001750�00000005635�11754474775�025257� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FIqgxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FIqgxDipole_H #define HERWIG_FIqgxDipole_H // // This is the declaration of the FIqgxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief FIqgxDipole implements the D_{q,g}^a subtraction dipole. * */ class FIqgxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FIqgxDipole(); /** * The destructor. */ virtual ~FIqgxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FIqgxDipole & operator=(const FIqgxDipole &); }; } #endif /* HERWIG_FIqgxDipole_H */ ���������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IFggxDipole.h������������������������������������0000644�0001750�0001750�00000005635�11754474775�025245� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFggxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IFggxDipole_H #define HERWIG_IFggxDipole_H // // This is the declaration of the IFggxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief IFggxDipole implements the D^{g,g}_k subtraction dipole. * */ class IFggxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IFggxDipole(); /** * The destructor. */ virtual ~IFggxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IFggxDipole & operator=(const IFggxDipole &); }; } #endif /* HERWIG_IFggxDipole_H */ ���������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/SubtractionDipole.cc�����������������������������0000644�0001750�0001750�00000104470�11754474775�026671� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SubtractionDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SubtractionDipole class. // #include "SubtractionDipole.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Repository/Repository.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Utilities/Rebinder.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDF/PartonBin.h" #include "ThePEG/PDF/PartonExtractor.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/TildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/InvertedTildeKinematics.h" #include "ThePEG/Handlers/StdDependentXComb.h" #include <iterator> using std::ostream_iterator; using namespace Herwig; SubtractionDipole::SubtractionDipole() : MEBase(), theSplitting(false), theApply(true), theSubtractionTest(false), theRealEmitter(-1), theRealEmission(-1), theRealSpectator(-1), theBornEmitter(-1), theBornSpectator(-1) {} SubtractionDipole::~SubtractionDipole() {} void SubtractionDipole::setupBookkeeping() { theMergingMap.clear(); theSplittingMap.clear(); int xemitter = -1; int xspectator = -1; map<int,int> mergeLegs; map<int,int> remapLegs; map<int,int> realBornMap; map<int,int> bornRealMap; for ( DiagramVector::const_iterator d = theRealEmissionME->diagrams().begin(); d != theRealEmissionME->diagrams().end(); ++d ) { Ptr<Tree2toNDiagram>::ptr check = new_ptr(*dynamic_ptr_cast<Ptr<Tree2toNDiagram>::ptr>(*d)); map<int,int> theMergeLegs; map<int,int> theRemapLegs; for ( unsigned int i = 0; i < check->external().size(); ++i ) theMergeLegs[i] = -1; int theEmitter = check->mergeEmission(realEmitter(),realEmission(),theMergeLegs); // no underlying Born if ( theEmitter == -1 ) continue; DiagramVector::const_iterator bd = theUnderlyingBornME->diagrams().end(); for ( DiagramVector::const_iterator b = theUnderlyingBornME->diagrams().begin(); b != theUnderlyingBornME->diagrams().end(); ++b ) if ( check->isSame(*b,theRemapLegs) ) { bd = b; break; } // no underlying Born if ( bd == theUnderlyingBornME->diagrams().end() ) continue; if ( xemitter == -1 ) { xemitter = theEmitter; mergeLegs = theMergeLegs; remapLegs = theRemapLegs; assert(remapLegs.find(xemitter) != remapLegs.end()); xemitter = remapLegs[xemitter]; // work out the leg remapping real -> born for ( map<int,int>::const_iterator k = mergeLegs.begin(); k != mergeLegs.end(); ++k ) { assert(remapLegs.find(k->second) != remapLegs.end()); realBornMap[k->first] = remapLegs[k->second]; } // work out the leg remapping born -> real for ( map<int,int>::const_iterator k = realBornMap.begin(); k != realBornMap.end(); ++k ) { bornRealMap[k->second] = k->first; } // work out the spectator assert(mergeLegs.find(realSpectator()) != mergeLegs.end()); assert(remapLegs.find(mergeLegs[realSpectator()]) != remapLegs.end()); xspectator = realBornMap[realSpectator()]; } RealEmissionKey realKey = realEmissionKey((**d).partons(),realEmitter(),realEmission(),realSpectator()); UnderlyingBornKey bornKey = underlyingBornKey((**bd).partons(),xemitter,xspectator); if ( theMergingMap.find(realKey) == theMergingMap.end() ) theMergingMap.insert(make_pair(realKey,make_pair(bornKey,realBornMap))); if ( theSplittingMap.find(bornKey) == theSplittingMap.end() ) theSplittingMap.insert(make_pair(bornKey,make_pair(realKey,bornRealMap))); } if ( theSplittingMap.empty() ) return; theIndexMap.clear(); for ( map<UnderlyingBornKey,RealEmissionInfo>::const_iterator s = theSplittingMap.begin(); s != theSplittingMap.end(); ++s ) { theIndexMap[process(s->first)] = make_pair(emitter(s->first),spectator(s->first)); } theUnderlyingBornDiagrams.clear(); for ( map<RealEmissionKey,UnderlyingBornInfo>::const_iterator r = theMergingMap.begin(); r != theMergingMap.end(); ++r ) { DiagramVector borns; for ( DiagramVector::const_iterator d = theUnderlyingBornME->diagrams().begin(); d != theUnderlyingBornME->diagrams().end(); ++d ) { if ( (**d).partons() == process(r->second.first) ) borns.push_back(*d); } theUnderlyingBornDiagrams[process(r->first)] = borns; } theRealEmissionDiagrams.clear(); for ( map<UnderlyingBornKey,RealEmissionInfo>::const_iterator r = theSplittingMap.begin(); r != theSplittingMap.end(); ++r ) { DiagramVector reals; for ( DiagramVector::const_iterator d = theRealEmissionME->diagrams().begin(); d != theRealEmissionME->diagrams().end(); ++d ) { if ( (**d).partons() == process(r->second.first) ) reals.push_back(*d); } theRealEmissionDiagrams[process(r->first)] = reals; } } void SubtractionDipole::subtractionBookkeeping() { if ( theMergingMap.empty() ) setupBookkeeping(); lastRealEmissionKey = realEmissionKey(lastHeadXComb().mePartonData(),realEmitter(),realEmission(),realSpectator()); map<RealEmissionKey,UnderlyingBornInfo>::const_iterator k = theMergingMap.find(lastRealEmissionKey); if ( k == theMergingMap.end() ) { theApply = false; return; } theApply = true; lastUnderlyingBornKey = k->second.first; bornEmitter(emitter(lastUnderlyingBornKey)); bornSpectator(spectator(lastUnderlyingBornKey)); } void SubtractionDipole::splittingBookkeeping() { if ( theMergingMap.empty() ) setupBookkeeping(); map<cPDVector,pair<int,int> >::const_iterator esit = theIndexMap.find(lastHeadXComb().mePartonData()); if ( esit == theIndexMap.end() ) { theApply = false; return; } theApply = true; pair<int,int> es = esit->second; bornEmitter(es.first); bornSpectator(es.second); lastUnderlyingBornKey = underlyingBornKey(lastHeadXComb().mePartonData(),bornEmitter(),bornSpectator()); map<UnderlyingBornKey,RealEmissionInfo>::const_iterator k = theSplittingMap.find(lastUnderlyingBornKey); assert(k != theSplittingMap.end()); lastRealEmissionKey = k->second.first; realEmitter(emitter(lastRealEmissionKey)); realEmission(emission(lastRealEmissionKey)); realSpectator(spectator(lastRealEmissionKey)); } StdDependentXCombPtr SubtractionDipole::makeBornXComb(tStdXCombPtr realXC) { const cPDVector& proc = const_cast<const StandardXComb&>(*realXC).mePartonData(); if ( theMergingMap.find(realEmissionKey(proc,realEmitter(), realEmission(),realSpectator())) == theMergingMap.end() ) return StdDependentXCombPtr(); PartonPairVec pbs = realXC->pExtractor()->getPartons(realXC->maxEnergy(), realXC->particles(), *(realXC->cuts())); DiagramVector bornDiags = underlyingBornDiagrams(proc); assert(!bornDiags.empty()); PartonPairVec::iterator ppit = pbs.begin(); for ( ; ppit != pbs.end(); ++ppit ) { if ( ppit->first->parton() == bornDiags.front()->partons()[0] && ppit->second->parton() == bornDiags.front()->partons()[1] ) break; } assert(ppit != pbs.end()); StdDependentXCombPtr res = new_ptr(StdDependentXComb(realXC,*ppit,this,bornDiags)); return res; } StdDependentXCombPtr SubtractionDipole::makeRealXComb(tStdXCombPtr bornXC) { const cPDVector& proc = const_cast<const StandardXComb&>(*bornXC).mePartonData(); if ( theSplittingMap.find(underlyingBornKey(proc,bornEmitter(),bornSpectator())) == theSplittingMap.end() ) return StdDependentXCombPtr(); PartonPairVec pbs = bornXC->pExtractor()->getPartons(bornXC->maxEnergy(), bornXC->particles(), *(bornXC->cuts())); DiagramVector realDiags = realEmissionDiagrams(proc); assert(!realDiags.empty()); PartonPairVec::iterator ppit = pbs.begin(); for ( ; ppit != pbs.end(); ++ppit ) { if ( ppit->first->parton() == realDiags.front()->partons()[0] && ppit->second->parton() == realDiags.front()->partons()[1] ) break; } assert(ppit != pbs.end()); StdDependentXCombPtr res = new_ptr(StdDependentXComb(bornXC,*ppit,this,realDiags)); return res; } const MEBase::DiagramVector& SubtractionDipole::underlyingBornDiagrams(const cPDVector& real) const { static DiagramVector empty; map<cPDVector,DiagramVector>::const_iterator k = theUnderlyingBornDiagrams.find(real); if (k == theUnderlyingBornDiagrams.end() ) return empty; return k->second; } const MEBase::DiagramVector& SubtractionDipole::realEmissionDiagrams(const cPDVector& born) const { static DiagramVector empty; map<cPDVector,DiagramVector>::const_iterator k = theRealEmissionDiagrams.find(born); if ( k == theRealEmissionDiagrams.end() ) return empty; return k->second; } void SubtractionDipole::getDiagrams() const { if ( splitting() ) { realEmissionME()->diagrams(); useDiagrams(realEmissionME()); } else { underlyingBornME()->diagrams(); useDiagrams(underlyingBornME()); } } Selector<MEBase::DiagramIndex> SubtractionDipole::diagrams(const DiagramVector & dv) const { Ptr<MatchboxMEBase>::tcptr me = splitting() ? realEmissionME() : underlyingBornME(); if ( me->phasespace() ) { me->phasespace()->prepare(lastXCombPtr()); me->phasespace()->fillDiagramWeights(); } return me->diagrams(dv); } MEBase::DiagramIndex SubtractionDipole::diagram(const DiagramVector & dv) const { Ptr<MatchboxMEBase>::tcptr me = splitting() ? realEmissionME() : underlyingBornME(); if ( me->phasespace() ) { me->phasespace()->prepare(lastXCombPtr()); me->phasespace()->fillDiagramWeights(); } return me->diagram(dv); } Selector<const ColourLines *> SubtractionDipole::colourGeometries(tcDiagPtr diag) const { return splitting() ? realEmissionME()->colourGeometries(diag) : underlyingBornME()->colourGeometries(diag); } const ColourLines & SubtractionDipole::selectColourGeometry(tcDiagPtr diag) const { return splitting() ? realEmissionME()->selectColourGeometry(diag) : underlyingBornME()->selectColourGeometry(diag); } void SubtractionDipole::setXComb(tStdXCombPtr xc) { if ( !xc ) { theApply = false; return; } else { theApply = true; } MEBase::setXComb(xc); if ( splitting() ) { realEmissionME()->setXComb(xc); underlyingBornME()->setXComb(xc->head()); splittingBookkeeping(); } else { realEmissionME()->setXComb(xc->head()); underlyingBornME()->setXComb(xc); subtractionBookkeeping(); } if ( !apply() ) return; for ( vector<Ptr<MatchboxReweightBase>::ptr>::iterator rw = theReweights.begin(); rw != theReweights.end(); ++rw ) (**rw).setXComb(theRealEmissionME->lastXCombPtr()); } void SubtractionDipole::setKinematics() { MEBase::setKinematics(); if ( splitting() ) realEmissionME()->setKinematics(); else underlyingBornME()->setKinematics(); } bool SubtractionDipole::generateKinematics(const double * r) { if ( splitting() ) { if ( !generateRadiationKinematics(r) ) return false; assert(dynamic_ptr_cast<tStdDependentXCombPtr>(realEmissionME()->lastXCombPtr())); dynamic_ptr_cast<tStdDependentXCombPtr>(realEmissionME()->lastXCombPtr())->setIncomingPartons(); realEmissionME()->setScale(); assert(lastXCombPtr() == realEmissionME()->lastXCombPtr()); return true; } if ( !generateTildeKinematics() ) return false; underlyingBornME()->setScale(); assert(lastXCombPtr() == underlyingBornME()->lastXCombPtr()); assert(dynamic_ptr_cast<tStdDependentXCombPtr>(underlyingBornME()->lastXCombPtr())); dynamic_ptr_cast<tStdDependentXCombPtr>(underlyingBornME()->lastXCombPtr())->setIncomingPartons(); return true; } int SubtractionDipole::nDim() const { if ( !splitting() ) return underlyingBornME()->nDim(); int alldim = underlyingBornME()->nDim() + nDimRadiation(); // don't mess with random number for collinear remainders // see MEGroup.cc:55 and MatchboxNLOME if ( underlyingBornME()->diagrams().front()->partons()[0]->coloured() || underlyingBornME()->diagrams().front()->partons()[1]->coloured() ) ++alldim; return alldim; } void SubtractionDipole::clearKinematics() { MEBase::clearKinematics(); if ( splitting() ) realEmissionME()->clearKinematics(); else underlyingBornME()->clearKinematics(); } void SubtractionDipole::tildeKinematics(Ptr<TildeKinematics>::tptr tk) { theTildeKinematics = tk; } bool SubtractionDipole::generateTildeKinematics() { assert(!splitting()); if ( !tildeKinematics() ) { jacobian(0.0); return false; } theTildeKinematics->prepare(lastHeadXCombPtr(),lastXCombPtr()); if ( !theTildeKinematics->doMap() ) { jacobian(0.0); return false; } theLastSubtractionScale = theTildeKinematics->lastScale(); theLastSubtractionPt = theTildeKinematics->lastPt(); meMomenta().resize(lastHeadXComb().meMomenta().size() - 1); assert(mergingMap().find(lastRealEmissionKey) != mergingMap().end()); map<int,int>& trans = theMergingMap[lastRealEmissionKey].second; int n = lastHeadXComb().meMomenta().size(); for ( int k = 0; k < n; ++k ) { if ( k == realEmitter() || k == realEmission() || k == realSpectator() ) continue; meMomenta()[trans[k]] = lastHeadXComb().meMomenta()[k]; if ( theTildeKinematics->doesTransform() && k > 1 ) meMomenta()[trans[k]] = theTildeKinematics->transform(meMomenta()[trans[k]]); } meMomenta()[bornEmitter()] = tildeKinematics()->bornEmitterMomentum(); meMomenta()[bornSpectator()] = tildeKinematics()->bornSpectatorMomentum(); jacobian(realEmissionME()->lastXComb().jacobian()); logGenerateTildeKinematics(); return true; } void SubtractionDipole::invertedTildeKinematics(Ptr<InvertedTildeKinematics>::tptr itk) { theInvertedTildeKinematics = itk; } int SubtractionDipole::nDimRadiation() const { return invertedTildeKinematics() ? invertedTildeKinematics()->nDimRadiation() : 0; } bool SubtractionDipole::generateRadiationKinematics(const double * r) { assert(splitting()); if ( !invertedTildeKinematics() ) { jacobian(0.0); return false; } theInvertedTildeKinematics->prepare(lastXCombPtr(),lastHeadXCombPtr()); if ( !theInvertedTildeKinematics->doMap(r) ) { jacobian(0.0); return false; } theLastSplittingScale = theInvertedTildeKinematics->lastScale(); theLastSplittingPt = theInvertedTildeKinematics->lastPt(); meMomenta().resize(lastHeadXComb().meMomenta().size() + 1); assert(splittingMap().find(lastUnderlyingBornKey) != splittingMap().end()); map<int,int>& trans = theSplittingMap[lastUnderlyingBornKey].second; int n = lastHeadXComb().meMomenta().size(); for ( int k = 0; k < n; ++k ) { if ( k == bornEmitter() || k == bornSpectator() ) continue; meMomenta()[trans[k]] = lastHeadXComb().meMomenta()[k]; if ( invertedTildeKinematics()->doesTransform() && k > 1 ) meMomenta()[trans[k]] = invertedTildeKinematics()->transform(meMomenta()[trans[k]]); } meMomenta()[realEmitter()] = invertedTildeKinematics()->realEmitterMomentum(); meMomenta()[realEmission()] = invertedTildeKinematics()->realEmissionMomentum(); meMomenta()[realSpectator()] = invertedTildeKinematics()->realSpectatorMomentum(); jacobian(underlyingBornME()->lastXComb().jacobian() * invertedTildeKinematics()->jacobian()); logGenerateRadiationKinematics(r); return true; } void SubtractionDipole::ptCut(Energy cut) { theInvertedTildeKinematics->ptCut(cut); } CrossSection SubtractionDipole::dSigAvgDR(Energy2 factorizationScale) const { assert(splitting()); double jac = jacobian(); if ( jac == 0.0 ) return ZERO; jac *= pow(underlyingBornME()->lastXComb().lastSHat() / realEmissionME()->lastXComb().lastSHat(), realEmissionME()->lastXComb().mePartonData().size()-4.); if ( havePDFWeight1() || havePDFWeight2() ) { realEmissionME()->getPDFWeight(factorizationScale); } assert(lastHeadXComb().hasMeta(MatchboxMetaKeys::ColourCorrelatedMEs)); map<pair<int,int>,double>& ccmap = lastHeadXComb().meta<map<pair<int,int>,double> >(MatchboxMetaKeys::ColourCorrelatedMEs); pair<int,int> cfg(bornEmitter(),bornSpectator()); if ( cfg.first > cfg.second ) swap(cfg.first,cfg.second); assert(ccmap.find(cfg) != ccmap.end()); double ccme2 = ccmap[cfg]; double xme2 = me2Avg(ccme2); if ( xme2 == 0.0 ) { lastMECrossSection(ZERO); lastME2(0.0); return ZERO; } CrossSection res = sqr(hbarc) * jac * lastMEPDFWeight() * xme2 / (2. * lastSHat()); lastMECrossSection(res); return lastMECrossSection(); } CrossSection SubtractionDipole::dSigHatDR(Energy2 factorizationScale) const { double pdfweight = 1.; double jac = jacobian(); if ( splitting() && jac == 0.0 ) return ZERO; if ( splitting() ) jac *= pow(underlyingBornME()->lastXComb().lastSHat() / realEmissionME()->lastXComb().lastSHat(), realEmissionME()->lastXComb().mePartonData().size()-4.); if ( havePDFWeight1() || havePDFWeight2() ) { if ( splitting() ) realEmissionME()->getPDFWeight(factorizationScale); pdfweight = realEmissionME()->lastXComb().lastMEPDFWeight(); lastMEPDFWeight(pdfweight); } double xme2 = me2(); if ( xme2 == 0.0 ) { lastMECrossSection(ZERO); lastME2(0.0); return ZERO; } if ( splitting() ) xme2 = abs(xme2); CrossSection res = sqr(hbarc) * jac * pdfweight * xme2 / (2. * realEmissionME()->lastXComb().lastSHat()); double weight = 0.0; for ( vector<Ptr<MatchboxReweightBase>::ptr>::const_iterator rw = theReweights.begin(); rw != theReweights.end(); ++rw ) weight += (**rw).evaluate(); if ( !theReweights.empty() ) { res *= weight; } if ( splitting() ) lastMECrossSection(res); else lastMECrossSection(-res); logDSigHatDR(jac); return lastMECrossSection(); } void SubtractionDipole::print(ostream& os) const { os << "--- SubtractionDipole setup ----------------------------------------------------\n"; os << " subtraction '" << name() << "'\n for real emission '" << theRealEmissionME->name() << "'\n using underlying Born '" << theUnderlyingBornME->name() << "'\n"; os << " tilde kinematics are '" << (theTildeKinematics ? theTildeKinematics->name() : "") << " '\n inverted tilde kinematics are '" << (theInvertedTildeKinematics ? theInvertedTildeKinematics->name() : "") << "'\n"; os << " the following subtraction mappings have been found:\n"; for ( map<RealEmissionKey,UnderlyingBornInfo>::const_iterator m = theMergingMap.begin(); m != theMergingMap.end(); ++m ) { os << " " << process(m->second.first)[0]->PDGName() << " " << process(m->second.first)[1]->PDGName() << " -> "; for ( cPDVector::const_iterator p = process(m->second.first).begin() + 2; p != process(m->second.first).end(); ++p ) { os << (**p).PDGName() << " "; } os << "[" << emitter(m->second.first) << "," << spectator(m->second.first) << "] <=> "; os << process(m->first)[0]->PDGName() << " " << process(m->first)[1]->PDGName() << " -> "; for ( cPDVector::const_iterator p = process(m->first).begin() + 2; p != process(m->first).end(); ++p ) { os << (**p).PDGName() << " "; } os << "[(" << emitter(m->first) << "," << emission(m->first) << ")," << spectator(m->first) << "]\n" << " non-dipole momenta ( "; for ( map<int,int>::const_iterator k = m->second.second.begin(); k != m->second.second.end(); ++k ) { if ( k->first == spectator(m->first) ) continue; os << k->second << " "; } os << ") <=> ( "; for ( map<int,int>::const_iterator k = m->second.second.begin(); k != m->second.second.end(); ++k ) { if ( k->first == spectator(m->first) ) continue; os << k->first << " "; } os << ")\n"; } os << "--------------------------------------------------------------------------------\n"; os << flush; } void SubtractionDipole::printLastEvent(ostream& os) const { os << "--- SubtractionDipole last event information -----------------------------------\n"; os << " for dipole '" << name() << "' applying [" << bornEmitter() << "," << bornSpectator() << "] <=> [(" << realEmitter() << "," << realEmission() << ")," << realSpectator() << "]\n" << " evaluated the cross section/nb " << (lastMECrossSection()/nanobarn) << "\n" << " with subtraction parameters x[0] = " << subtractionParameters()[0] << " x[1] = " << subtractionParameters()[1] << "\n"; os << " the last real emission event was:\n"; realEmissionME()->printLastEvent(os); os << " the last underlying Born event was:\n"; underlyingBornME()->printLastEvent(os); os << "--- end SubtractionDipole last event information -------------------------------\n"; os << flush; } void SubtractionDipole::logME2() const { if ( !realEmissionME()->verbose() && !underlyingBornME()->verbose() ) return; tcStdXCombPtr bornxc = splitting() ? lastHeadXCombPtr() : lastXCombPtr(); tcStdXCombPtr realxc = splitting() ? lastXCombPtr() : lastHeadXCombPtr(); generator()->log() << "'" << name() << "' evaluated me2 using\n" << "Born XComb " << bornxc << " real XComb " << realxc << "\n"; generator()->log() << "subtraction parameters: "; copy(subtractionParameters().begin(),subtractionParameters().end(), ostream_iterator<double>(generator()->log()," ")); generator()->log() << "\n"; generator()->log() << "Born phase space point (in GeV):\n"; vector<Lorentz5Momentum>::const_iterator pit = bornxc->meMomenta().begin(); cPDVector::const_iterator dit = bornxc->mePartonData().begin(); for ( ; pit != bornxc->meMomenta().end() ; ++pit, ++dit ) generator()->log() << (**dit).PDGName() << " : " << (*pit/GeV) << "\n"; generator()->log() << "with x1 = " << bornxc->lastX1() << " x2 = " << bornxc->lastX2() << "\n" << "sHat/GeV2 = " << (bornxc->lastSHat()/GeV2) << "\n"; generator()->log() << "Real emission phase space point (in GeV):\n"; pit = realxc->meMomenta().begin(); dit = realxc->mePartonData().begin(); for ( ; pit != realxc->meMomenta().end() ; ++pit, ++dit ) generator()->log() << (**dit).PDGName() << " : " << (*pit/GeV) << "\n"; generator()->log() << "with x1 = " << realxc->lastX1() << " x2 = " << realxc->lastX2() << "\n" << "sHat/GeV2 = " << (realxc->lastSHat()/GeV2) << "\n"; generator()->log() << "me2 = " << lastME2() << "\n" << flush; } void SubtractionDipole::logDSigHatDR(double effectiveJac) const { if ( !realEmissionME()->verbose() && !underlyingBornME()->verbose() ) return; tcStdXCombPtr bornxc = splitting() ? lastHeadXCombPtr() : lastXCombPtr(); tcStdXCombPtr realxc = splitting() ? lastXCombPtr() : lastHeadXCombPtr(); generator()->log() << "'" << name() << "' evaluated cross section using\n" << "Born XComb " << bornxc << " real XComb " << realxc << "\n" << "Jacobian = " << jacobian() << " effective Jacobian = " << effectiveJac << "\n" << "Born sHat/GeV2 = " << (bornxc->lastSHat()/GeV2) << " real sHat/GeV2 = " << (realxc->lastSHat()/GeV2) << " dsig/nb = " << (lastMECrossSection()/nanobarn) << "\n" << flush; } void SubtractionDipole::dumpInfo(const string& prefix) const { generator()->log() << prefix << fullName() << " [" << this << "]\n"; generator()->log() << prefix << " | XComb " << lastXCombPtr() << " for "; if ( lastXCombPtr() ) { for ( cPDVector::const_iterator p = lastXComb().mePartonData().begin(); p != lastXComb().mePartonData().end(); ++p ) { generator()->log() << (**p).PDGName() << " "; } } generator()->log() << "\n"; generator()->log() << prefix << " | Applies? " << (apply() ? "yes" : "no") << "\n"; generator()->log() << prefix << " | Splitting? " << (splitting() ? "yes" : "no") << "\n"; generator()->log() << prefix << " | Real emission ME\n"; realEmissionME()->dumpInfo(prefix+" | "); generator()->log() << prefix << " | Born ME\n"; underlyingBornME()->dumpInfo(prefix+" | "); generator()->log() << prefix << " | Tilde kinematics\n"; tildeKinematics()->dumpInfo(prefix+" | "); generator()->log() << prefix << " | Inverted tilde kinematics\n"; invertedTildeKinematics()->dumpInfo(prefix+" | "); if ( !reweights().empty() ) { generator()->log() << prefix << " | Reweights\n"; for ( vector<Ptr<MatchboxReweightBase>::ptr>::const_iterator r = reweights().begin(); r != reweights().end(); ++r ) { (**r).dumpInfo(prefix+" | "); } } } void SubtractionDipole::logGenerateTildeKinematics() const { if ( !realEmissionME()->verbose() && !underlyingBornME()->verbose() ) return; generator()->log() << "'" << name() << "' generating tilde kinematics.\n" << "configuration: [" << bornEmitter() << "," << bornSpectator() << "] => " << "[(" << realEmitter() << "," << realEmission() << ")," << realSpectator() << "]\n" << "with real xcomb " << lastHeadXCombPtr() << " born xcomb " << lastXCombPtr() << "\n" << "from real emission phase space point:\n"; Lorentz5Momentum rSum; vector<Lorentz5Momentum>::const_iterator pr = lastHeadXComb().meMomenta().begin(); cPDVector::const_iterator dr = lastHeadXComb().mePartonData().begin(); size_t count = 0; for ( ; pr != lastHeadXComb().meMomenta().end(); ++pr,++dr ) { generator()->log() << (**dr).PDGName() << " : " << (*pr/GeV) << "\n"; if ( count < 2 ) { rSum -= *pr; } else { rSum += *pr; } ++count; } generator()->log() << "sum : " << (rSum/GeV) << "\n"; generator()->log() << "subtraction parameters: "; copy(subtractionParameters().begin(),subtractionParameters().end(), ostream_iterator<double>(generator()->log()," ")); generator()->log() << "\n" << "with scale/GeV = " << (theLastSubtractionScale/GeV) << "and pt/GeV = " << (theLastSubtractionPt/GeV) << "\n"; generator()->log() << "generated tilde kinematics:\n"; pr = lastXComb().meMomenta().begin(); dr = lastXComb().mePartonData().begin(); count = 0; Lorentz5Momentum bSum; for ( ; pr != lastXComb().meMomenta().end(); ++pr,++dr ) { generator()->log() << (**dr).PDGName() << " : " << (*pr/GeV) << "\n"; if ( count < 2 ) { bSum -= *pr; } else { bSum += *pr; } ++count; } generator()->log() << "sum : " << (bSum/GeV) << "\n"; generator()->log() << "Jacobian = " << jacobian() << "\n" << flush; } void SubtractionDipole::logGenerateRadiationKinematics(const double * r) const { if ( !realEmissionME()->verbose() && !underlyingBornME()->verbose() ) return; generator()->log() << "'" << name() << "' generating radiation kinematics.\n" << "configuration: [" << bornEmitter() << "," << bornSpectator() << "] => " << "[(" << realEmitter() << "," << realEmission() << ")," << realSpectator() << "]\n" << "with born xcomb " << lastHeadXCombPtr() << " real xcomb " << lastXCombPtr() << "\n" << "from random numbers:\n"; copy(r,r+nDimRadiation(),ostream_iterator<double>(generator()->log()," ")); generator()->log() << "\n"; generator()->log() << "and born phase space point:\n"; vector<Lorentz5Momentum>::const_iterator pr = lastHeadXComb().meMomenta().begin(); cPDVector::const_iterator dr = lastHeadXComb().mePartonData().begin(); for ( ; pr != lastHeadXComb().meMomenta().end(); ++pr,++dr ) generator()->log() << (**dr).PDGName() << " : " << (*pr/GeV) << "\n"; generator()->log() << "subtraction parameters: "; copy(subtractionParameters().begin(),subtractionParameters().end(), ostream_iterator<double>(generator()->log()," ")); generator()->log() << "\n" << flush; generator()->log() << "scales: scale/GeV = " << (theLastSplittingScale/GeV) << " pt/GeV = " << (theLastSplittingPt/GeV) << "\n" << flush; generator()->log() << "generated real emission kinematics:\n"; pr = lastXComb().meMomenta().begin(); dr = lastXComb().mePartonData().begin(); for ( ; pr != lastXComb().meMomenta().end(); ++pr,++dr ) generator()->log() << (**dr).PDGName() << " : " << (*pr/GeV) << "\n"; generator()->log() << "Jacobian = " << jacobian() << " = " << underlyingBornME()->lastXComb().jacobian() << "|Born * " << invertedTildeKinematics()->jacobian() << "|Radiation\n" << flush; } void SubtractionDipole::cloneDependencies(const std::string& prefix) { if ( underlyingBornME() ) { Ptr<MatchboxMEBase>::ptr myUnderlyingBornME = underlyingBornME()->cloneMe(); ostringstream pname; pname << (prefix == "" ? fullName() : prefix) << "/" << myUnderlyingBornME->name(); if ( ! (generator()->preinitRegister(myUnderlyingBornME,pname.str()) ) ) throw InitException() << "Matrix element " << pname.str() << " already existing."; myUnderlyingBornME->cloneDependencies(pname.str()); underlyingBornME(myUnderlyingBornME); } if ( realEmissionME() ) { Ptr<MatchboxMEBase>::ptr myRealEmissionME = realEmissionME()->cloneMe(); ostringstream pname; pname << (prefix == "" ? fullName() : prefix) << "/" << myRealEmissionME->name(); if ( ! (generator()->preinitRegister(myRealEmissionME,pname.str()) ) ) throw InitException() << "Matrix element " << pname.str() << " already existing."; myRealEmissionME->cloneDependencies(pname.str()); realEmissionME(myRealEmissionME); } if ( tildeKinematics() ) { Ptr<TildeKinematics>::ptr myTildeKinematics = tildeKinematics()->cloneMe(); ostringstream pname; pname << (prefix == "" ? fullName() : prefix) << "/" << myTildeKinematics->name(); if ( ! (generator()->preinitRegister(myTildeKinematics,pname.str()) ) ) throw InitException() << "Tilde kinematics " << pname.str() << " already existing."; myTildeKinematics->dipole(this); tildeKinematics(myTildeKinematics); } if ( invertedTildeKinematics() ) { Ptr<InvertedTildeKinematics>::ptr myInvertedTildeKinematics = invertedTildeKinematics()->cloneMe(); ostringstream pname; pname << (prefix == "" ? fullName() : prefix) << "/" << myInvertedTildeKinematics->name(); if ( ! (generator()->preinitRegister(myInvertedTildeKinematics,pname.str()) ) ) throw InitException() << "Inverted tilde kinematics " << pname.str() << " already existing."; myInvertedTildeKinematics->dipole(this); invertedTildeKinematics(myInvertedTildeKinematics); } for ( vector<Ptr<MatchboxReweightBase>::ptr>::iterator rw = theReweights.begin(); rw != theReweights.end(); ++rw ) { Ptr<MatchboxReweightBase>::ptr myReweight = (**rw).cloneMe(); ostringstream pname; pname << (prefix == "" ? fullName() : prefix) << "/" << (**rw).name(); if ( ! (generator()->preinitRegister(myReweight,pname.str()) ) ) throw InitException() << "Reweight " << pname.str() << " already existing."; myReweight->cloneDependencies(pname.str()); *rw = myReweight; } } void SubtractionDipole::constructVertex(tSubProPtr sub) { if ( splitting() ) realEmissionME()->constructVertex(sub); else underlyingBornME()->constructVertex(sub); } void SubtractionDipole::generateSubCollision(SubProcess & sub) { if ( splitting() ) realEmissionME()->generateSubCollision(sub); else underlyingBornME()->generateSubCollision(sub); } void SubtractionDipole::persistentOutput(PersistentOStream & os) const { os << theSplitting << theApply << theSubtractionTest << theRealEmissionME << theUnderlyingBornME << theTildeKinematics << theInvertedTildeKinematics << theReweights << theRealEmitter << theRealEmission << theRealSpectator << theSubtractionParameters << theMergingMap << theSplittingMap << theIndexMap << theUnderlyingBornDiagrams << theRealEmissionDiagrams << lastRealEmissionKey << lastUnderlyingBornKey << theBornEmitter << theBornSpectator; } void SubtractionDipole::persistentInput(PersistentIStream & is, int) { is >> theSplitting >> theApply >> theSubtractionTest >> theRealEmissionME >> theUnderlyingBornME >> theTildeKinematics >> theInvertedTildeKinematics >> theReweights >> theRealEmitter >> theRealEmission >> theRealSpectator >> theSubtractionParameters >> theMergingMap >> theSplittingMap >> theIndexMap >> theUnderlyingBornDiagrams >> theRealEmissionDiagrams >> lastRealEmissionKey >> lastUnderlyingBornKey >> theBornEmitter >> theBornSpectator; } void SubtractionDipole::Init() { static ClassDocumentation<SubtractionDipole> documentation ("SubtractionDipole represents a dipole subtraction " "term in the formalism of Catani and Seymour."); static Reference<SubtractionDipole,MatchboxMEBase> interfaceUnderlyingBornME ("UnderlyingBornME", "The underlying Born matrix element.", &SubtractionDipole::theUnderlyingBornME, false, false, true, true, false); static Reference<SubtractionDipole,MatchboxMEBase> interfaceRealEmissionME ("RealEmissionME", "The real emission matrix element.", &SubtractionDipole::theRealEmissionME, false, false, true, true, false); static Reference<SubtractionDipole,TildeKinematics> interfaceTildeKinematics ("TildeKinematics", "Set the TildeKinematics object to be used.", &SubtractionDipole::theTildeKinematics, false, false, true, false, false); static Reference<SubtractionDipole,InvertedTildeKinematics> interfaceInvertedTildeKinematics ("InvertedTildeKinematics", "Set the InvertedTildeKinematics object to be used.", &SubtractionDipole::theInvertedTildeKinematics, false, false, true, true, false); static RefVector<SubtractionDipole,MatchboxReweightBase> interfaceReweights ("Reweights", "Reweight objects to be applied to this matrix element.", &SubtractionDipole::theReweights, -1, false, false, true, true, false); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeAbstractClass<SubtractionDipole,MEBase> describeSubtractionDipole("Herwig::SubtractionDipole", "HwMatchbox.so"); ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FFqgxDipole.cc�����������������������������������0000644�0001750�0001750�00000007567�11754474775�025420� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFqgxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFqgxDipole class. // #include "FFqgxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FFLightTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FFLightInvertedTildeKinematics.h" using namespace Herwig; FFqgxDipole::FFqgxDipole() : SubtractionDipole() {} FFqgxDipole::~FFqgxDipole() {} IBPtr FFqgxDipole::clone() const { return new_ptr(*this); } IBPtr FFqgxDipole::fullclone() const { return new_ptr(*this); } bool FFqgxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter > 1 && spectator > 1 && partons[emission]->id() == ParticleID::g && abs(partons[emitter]->id()) < 6 && partons[emitter]->mass() == ZERO && partons[spectator]->mass() == ZERO; } double FFqgxDipole::me2Avg(double ccme2) const { if ( jacobian() == 0.0 ) return 0.0; double y = subtractionParameters()[0]; double z = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()])); double CF = (SM().Nc()*SM().Nc()-1.)/(2.*SM().Nc()); double res = 8.*Constants::pi*CF*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= ( 2./(1.-z*(1.-y)) - (1.+z) ); res *= -ccme2; res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); return res; } double FFqgxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double y = subtractionParameters()[0]; double z = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()])); double CF = (SM().Nc()*SM().Nc()-1.)/(2.*SM().Nc()); double res = 8.*Constants::pi*CF*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= ( 2./(1.-z*(1.-y)) - (1.+z) ); res *= -underlyingBornME()->colourCorrelatedME2(make_pair(bornEmitter(),bornSpectator())); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void FFqgxDipole::persistentOutput(PersistentOStream &) const { } void FFqgxDipole::persistentInput(PersistentIStream &, int) { } void FFqgxDipole::Init() { static ClassDocumentation<FFqgxDipole> documentation ("FFqgxDipole"); DipoleRepository::registerDipole<FFqgxDipole,FFLightTildeKinematics,FFLightInvertedTildeKinematics> ("FFqgxDipole","FFLightTildeKinematics","FFLightInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FFqgxDipole,SubtractionDipole> describeHerwigFFqgxDipole("Herwig::FFqgxDipole", "HwMatchbox.so"); �����������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FFggxDipole.cc�����������������������������������0000644�0001750�0001750�00000010122�11754474775�025363� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFggxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFggxDipole class. // #include "FFggxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SpinCorrelationTensor.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FFLightTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/FFLightInvertedTildeKinematics.h" using namespace Herwig; FFggxDipole::FFggxDipole() : SubtractionDipole() {} FFggxDipole::~FFggxDipole() {} IBPtr FFggxDipole::clone() const { return new_ptr(*this); } IBPtr FFggxDipole::fullclone() const { return new_ptr(*this); } bool FFggxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter > 1 && spectator > 1 && partons[emission]->id() == ParticleID::g && partons[emitter]->id() == ParticleID::g && partons[spectator]->mass() == ZERO; } double FFggxDipole::me2Avg(double ccme2) const { if ( jacobian() == 0.0 ) return 0.0; double y = subtractionParameters()[0]; double z = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()])); double res = 1./(1.-z*(1.-y)) + 1./(1.-(1.-z)*(1.-y)) - 2 + z*(1.-z); res *= -ccme2; res *= 16.*Constants::pi*SM().Nc()*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); return res; } double FFggxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double y = subtractionParameters()[0]; double z = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()])); double diag = 1./(1.-z*(1.-y))+1./(1.-(1.-z)*(1.-y))-2.; Lorentz5Momentum pc = z*realEmissionME()->lastXComb().meMomenta()[realEmitter()] - (1.-z)*realEmissionME()->lastXComb().meMomenta()[realEmission()]; SpinCorrelationTensor corr(-diag,pc,prop/2.); double res = -underlyingBornME()->spinColourCorrelatedME2(make_pair(bornEmitter(),bornSpectator()), corr); res *= 16.*Constants::pi*SM().Nc()*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void FFggxDipole::persistentOutput(PersistentOStream &) const { } void FFggxDipole::persistentInput(PersistentIStream &, int) { } void FFggxDipole::Init() { static ClassDocumentation<FFggxDipole> documentation ("FFggxDipole"); DipoleRepository::registerDipole<FFggxDipole,FFLightTildeKinematics,FFLightInvertedTildeKinematics> ("FFggxDipole","FFLightTildeKinematics","FFLightInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FFggxDipole,SubtractionDipole> describeHerwigFFggxDipole("Herwig::FFggxDipole", "HwMatchbox.so"); ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IFggxDipole.cc�����������������������������������0000644�0001750�0001750�00000011042�11754474775�025370� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFggxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IFggxDipole class. // #include "IFggxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SpinCorrelationTensor.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IFLightTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IFLightInvertedTildeKinematics.h" using namespace Herwig; IFggxDipole::IFggxDipole() : SubtractionDipole() {} IFggxDipole::~IFggxDipole() {} IBPtr IFggxDipole::clone() const { return new_ptr(*this); } IBPtr IFggxDipole::fullclone() const { return new_ptr(*this); } bool IFggxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter < 2 && spectator > 1 && partons[emission]->id() == ParticleID::g && partons[emitter]->id() == ParticleID::g && partons[spectator]->mass() == ZERO; } double IFggxDipole::me2Avg(double ccme2) const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; double u = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double res = 1./(1.-x+u) + (1.-x)/x - 1. + x*(1.-x); res *= 16.*Constants::pi*SM().Nc()*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= -ccme2; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); return res; } double IFggxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; double u = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double diag = 1./(1.-x+u)-1.+x*(1.-x); Lorentz5Momentum pc = realEmissionME()->lastXComb().meMomenta()[realEmission()]/u - realEmissionME()->lastXComb().meMomenta()[realSpectator()]/(1.-u); Energy2 sc = realEmissionME()->lastXComb().meMomenta()[realEmission()]* realEmissionME()->lastXComb().meMomenta()[realSpectator()]; sc /= u*(1.-u)*(1.-x)/x; SpinCorrelationTensor corr(-diag,pc,sc); double res = -underlyingBornME()->spinColourCorrelatedME2(make_pair(bornEmitter(),bornSpectator()), corr); res *= 16.*Constants::pi*SM().Nc()*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void IFggxDipole::persistentOutput(PersistentOStream &) const { } void IFggxDipole::persistentInput(PersistentIStream &, int) { } void IFggxDipole::Init() { static ClassDocumentation<IFggxDipole> documentation ("IFggxDipole"); DipoleRepository::registerDipole<IFggxDipole,IFLightTildeKinematics,IFLightInvertedTildeKinematics> ("IFggxDipole","IFLightTildeKinematics","IFLightInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<IFggxDipole,SubtractionDipole> describeHerwigIFggxDipole("Herwig::IFggxDipole", "HwMatchbox.so"); ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IFqgxDipole.cc�����������������������������������0000644�0001750�0001750�00000010347�11754474775�025411� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFqgxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IFqgxDipole class. // #include "IFqgxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IFLightTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IFLightInvertedTildeKinematics.h" using namespace Herwig; IFqgxDipole::IFqgxDipole() : SubtractionDipole() {} IFqgxDipole::~IFqgxDipole() {} IBPtr IFqgxDipole::clone() const { return new_ptr(*this); } IBPtr IFqgxDipole::fullclone() const { return new_ptr(*this); } bool IFqgxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter < 2 && spectator > 1 && partons[emission]->id() == ParticleID::g && abs(partons[emitter]->id()) < 6 && partons[emitter]->mass() == ZERO && partons[spectator]->mass() == ZERO; } double IFqgxDipole::me2Avg(double ccme2) const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; double u = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double CF = (SM().Nc()*SM().Nc()-1.)/(2.*SM().Nc()); double res = 8.*Constants::pi*CF*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= ( 2./(1.-x+u) - (1.+x) + u*(1.+3.*x*(1.-u)) ); res *= -ccme2; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); return res; } double IFqgxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; double u = subtractionParameters()[1]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double CF = (SM().Nc()*SM().Nc()-1.)/(2.*SM().Nc()); double res = 8.*Constants::pi*CF*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= ( 2./(1.-x+u) - (1.+x) + u*(1.+3.*x*(1.-u)) ); res *= -underlyingBornME()->colourCorrelatedME2(make_pair(bornEmitter(),bornSpectator())); res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void IFqgxDipole::persistentOutput(PersistentOStream &) const { } void IFqgxDipole::persistentInput(PersistentIStream &, int) { } void IFqgxDipole::Init() { static ClassDocumentation<IFqgxDipole> documentation ("IFqgxDipole"); DipoleRepository::registerDipole<IFqgxDipole,IFLightTildeKinematics,IFLightInvertedTildeKinematics> ("IFqgxDipole","IFLightTildeKinematics","IFLightInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<IFqgxDipole,SubtractionDipole> describeHerwigIFqgxDipole("Herwig::IFqgxDipole", "HwMatchbox.so"); �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FFggxDipole.h������������������������������������0000644�0001750�0001750�00000006067�11754474775�025242� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFggxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFggxDipole_H #define HERWIG_FFggxDipole_H // // This is the declaration of the FFggxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief FFggxDipole implements the D_{g,g;k} subtraction dipole. * */ class FFggxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFggxDipole(); /** * The destructor. */ virtual ~FFggxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return true, if this dipole is symmetric with respect to emitter * and emission. */ virtual bool isSymmetric() const { return true; } /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFggxDipole & operator=(const FFggxDipole &); }; } #endif /* HERWIG_FFggxDipole_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/FFqqxDipole.h������������������������������������0000644�0001750�0001750�00000006072�11754474775�025262� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFqqxDipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFqqxDipole_H #define HERWIG_FFqqxDipole_H // // This is the declaration of the FFqqxDipole class. // #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief FFqqxDipole implements the D_{q,qbar;k} subtraction dipole. * */ class FFqqxDipole: public SubtractionDipole { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFqqxDipole(); /** * The destructor. */ virtual ~FFqqxDipole(); //@} public: /** * Return true, if this dipole applies to the selected * configuration. */ virtual bool canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const; /** * Return true, if this dipole is symmetric with respect to emitter * and emission. */ virtual bool isSymmetric() const { return true; } /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element averaged over spin correlations. */ virtual double me2Avg(double ccme2) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFqqxDipole & operator=(const FFqqxDipole &); }; } #endif /* HERWIG_FFqqxDipole_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Dipoles/IFgqxDipole.cc�����������������������������������0000644�0001750�0001750�00000007764�11754474775�025422� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFgqxDipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IFgqxDipole class. // #include "IFgqxDipole.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IFLightTildeKinematics.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/IFLightInvertedTildeKinematics.h" using namespace Herwig; IFgqxDipole::IFgqxDipole() : SubtractionDipole() {} IFgqxDipole::~IFgqxDipole() {} IBPtr IFgqxDipole::clone() const { return new_ptr(*this); } IBPtr IFgqxDipole::fullclone() const { return new_ptr(*this); } bool IFgqxDipole::canHandle(const cPDVector& partons, int emitter, int emission, int spectator) const { return emitter < 2 && spectator > 1 && partons[emitter]->id() == ParticleID::g && abs(partons[emission]->id()) < 6 && partons[emission]->mass() == ZERO && partons[spectator]->mass() == ZERO; } double IFgqxDipole::me2Avg(double ccme2) const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double res = 8.*Constants::pi*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= .5 * ( 1.-2.*x*(1.-x) ); res *= -ccme2; res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); return res; } double IFgqxDipole::me2() const { if ( jacobian() == 0.0 ) return 0.0; double x = subtractionParameters()[0]; Energy2 prop = 2.*((realEmissionME()->lastXComb().meMomenta()[realEmitter()])* (realEmissionME()->lastXComb().meMomenta()[realEmission()]))*x; double res = 8.*Constants::pi*(realEmissionME()->lastXComb().lastSHat())* (realEmissionME()->lastXComb().lastAlphaS())/prop; res *= .5 * ( 1.-2.*x*(1.-x) ); res *= -underlyingBornME()->colourCorrelatedME2(make_pair(bornEmitter(),bornSpectator())); res *= pow(realEmissionME()->lastXComb().lastSHat() / underlyingBornME()->lastXComb().lastSHat(), underlyingBornME()->lastXComb().mePartonData().size()-4.); res *= realEmissionME()->finalStateSymmetry() / underlyingBornME()->finalStateSymmetry(); lastME2(res); logME2(); return res; } void IFgqxDipole::persistentOutput(PersistentOStream &) const { } void IFgqxDipole::persistentInput(PersistentIStream &, int) { } void IFgqxDipole::Init() { static ClassDocumentation<IFgqxDipole> documentation ("IFgqxDipole"); DipoleRepository::registerDipole<IFgqxDipole,IFLightTildeKinematics,IFLightInvertedTildeKinematics> ("IFgqxDipole","IFLightTildeKinematics","IFLightInvertedTildeKinematics"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<IFgqxDipole,SubtractionDipole> describeHerwigIFgqxDipole("Herwig::IFgqxDipole", "HwMatchbox.so"); ������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Makefile.in����������������������������������������������0000644�0001750�0001750�00000065230�11756461700�023360� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/Matchbox DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwMatchbox_la_DEPENDENCIES = Base/libHwMatchboxBase.la \ Utility/libHwMatchboxUtility.la \ Phasespace/libHwMatchboxPhasespace.la \ Dipoles/libHwMatchboxDipoles.la \ InsertionOperators/libHwMatchboxInsertionOperators.la \ Powheg/libHwMatchboxPowheg.la \ Builtin/Processes/libHwMatchboxBuiltinProcesses.la am_HwMatchbox_la_OBJECTS = MatchboxFactory.lo HwMatchbox_la_OBJECTS = $(am_HwMatchbox_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwMatchbox_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwMatchbox_la_LDFLAGS) $(LDFLAGS) \ -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwMatchbox_la_SOURCES) DIST_SOURCES = $(HwMatchbox_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = \ Base Utility Phasespace \ Dipoles InsertionOperators Powheg \ Builtin pkglib_LTLIBRARIES = HwMatchbox.la HwMatchbox_la_LDFLAGS = -module -version-info 1:0:0 HwMatchbox_la_LIBADD = \ Base/libHwMatchboxBase.la \ Utility/libHwMatchboxUtility.la \ Phasespace/libHwMatchboxPhasespace.la \ Dipoles/libHwMatchboxDipoles.la \ InsertionOperators/libHwMatchboxInsertionOperators.la \ Powheg/libHwMatchboxPowheg.la \ Builtin/Processes/libHwMatchboxBuiltinProcesses.la HwMatchbox_la_SOURCES = \ MatchboxFactory.h MatchboxFactory.cc all: all-recursive .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/Matchbox/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/Matchbox/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwMatchbox.la: $(HwMatchbox_la_OBJECTS) $(HwMatchbox_la_DEPENDENCIES) $(EXTRA_HwMatchbox_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwMatchbox_la_LINK) -rpath $(pkglibdir) $(HwMatchbox_la_OBJECTS) $(HwMatchbox_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxFactory.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done cscopelist-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \ cscopelist-recursive ctags-recursive install-am install-strip \ tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ clean-pkglibLTLIBRARIES cscopelist cscopelist-recursive ctags \ ctags-recursive distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/MatchboxFactory.h����������������������������������������0000644�0001750�0001750�00000033272�11754474775�024600� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxFactory.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxFactory_H #define HERWIG_MatchboxFactory_H // // This is the declaration of the MatchboxFactory class. // #include "ThePEG/Handlers/SubProcessHandler.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxAmplitude.h" #include "Herwig++/MatrixElement/Matchbox/Utility/Tree2toNGenerator.h" #include "Herwig++/MatrixElement/Matchbox/Utility/MatchboxScaleChoice.h" #include "Herwig++/MatrixElement/Matchbox/Utility/MatchboxMECache.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/MatchboxPhasespace.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxMEBase.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxNLOME.h" #include "Herwig++/MatrixElement/Matchbox/Base/SubtractedME.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxFactory automatically sets up a NLO * QCD calculation carried out in dipole subtraction. * * @see \ref MatchboxFactoryInterfaces "The interfaces" * defined for MatchboxFactory. */ class MatchboxFactory: public SubProcessHandler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxFactory(); /** * The destructor. */ virtual ~MatchboxFactory(); //@} public: /** @name Process and diagram information */ //@{ /** * Return the diagram generator. */ Ptr<Tree2toNGenerator>::tptr diagramGenerator() const { return theDiagramGenerator; } /** * Set the diagram generator. */ void diagramGenerator(Ptr<Tree2toNGenerator>::ptr dg) { theDiagramGenerator = dg; } /** * Return the number of light flavours, this matrix * element is calculated for. */ unsigned int nLight() const { return theNLight; } /** * Set the number of light flavours, this matrix * element is calculated for. */ void nLight(unsigned int n) { theNLight = n; } /** * Return the order in \f$\alpha_S\f$. */ unsigned int orderInAlphaS() const { return theOrderInAlphaS; } /** * Set the order in \f$\alpha_S\f$. */ void orderInAlphaS(unsigned int o) { theOrderInAlphaS = o; } /** * Return the order in \f$\alpha_{EM}\f$. */ unsigned int orderInAlphaEW() const { return theOrderInAlphaEW; } /** * Set the order in \f$\alpha_{EM}\f$. */ void orderInAlphaEW(unsigned int o) { theOrderInAlphaEW = o; } /** * Return true, if Born contributions should be included. */ bool bornContributions() const { return theBornContributions; } /** * Switch on or off Born contributions */ void setBornContributions(bool on = true) { theBornContributions = on; } /** * Return true, if virtual contributions should be included. */ bool virtualContributions() const { return theVirtualContributions; } /** * Switch on or off virtual contributions */ void setVirtualContributions(bool on = true) { theVirtualContributions = on; } /** * Return true, if subtracted real emission contributions should be included. */ bool realContributions() const { return theRealContributions; } /** * Switch on or off subtracted real emission contributions */ void setRealContributions(bool on = true) { theRealContributions = on; } /** * Return true, if SubProcessGroups should be * setup from this MEGroup. If not, a single SubProcess * is constructed from the data provided by the * head matrix element. */ bool subProcessGroups() const { return theSubProcessGroups; } /** * Switch on or off producing subprocess groups. */ void setSubProcessGroups(bool on = true) { theSubProcessGroups = on; } //@} /** @name Phasespace generation and scale choice */ //@{ /** * Return the phase space generator to be used. */ Ptr<MatchboxPhasespace>::tptr phasespace() const { return thePhasespace; } /** * Set the phase space generator to be used. */ void phasespace(Ptr<MatchboxPhasespace>::ptr ps) { thePhasespace = ps; } /** * Set the scale choice object */ void scaleChoice(Ptr<MatchboxScaleChoice>::ptr sc) { theScaleChoice = sc; } /** * Return the scale choice object */ Ptr<MatchboxScaleChoice>::tptr scaleChoice() const { return theScaleChoice; } /** * Get the factorization scale factor */ double factorizationScaleFactor() const { return theFactorizationScaleFactor; } /** * Set the factorization scale factor */ void factorizationScaleFactor(double f) { theFactorizationScaleFactor = f; } /** * Get the renormalization scale factor */ double renormalizationScaleFactor() const { return theRenormalizationScaleFactor; } /** * Set the renormalization scale factor */ void renormalizationScaleFactor(double f) { theRenormalizationScaleFactor = f; } /** * Return true, if fixed couplings are used. */ bool fixedCouplings() const { return theFixedCouplings; } /** * Switch on fixed couplings. */ void setFixedCouplings(bool on = true) { theFixedCouplings = on; } /** * Return true, if veto scales should be set * for the real emission */ bool vetoScales() const { return theVetoScales; } /** * Switch on setting veto scales */ void doVetoScales() { theVetoScales = true; } /** * Switch off setting veto scales */ void noVetoScales() { theVetoScales = true; } //@} /** @name Amplitudes and caching */ //@{ /** * Return the amplitudes to be considered */ const vector<Ptr<MatchboxAmplitude>::ptr>& amplitudes() const { return theAmplitudes; } /** * Access the amplitudes to be considered */ vector<Ptr<MatchboxAmplitude>::ptr>& amplitudes() { return theAmplitudes; } /** * Set the ME cache object */ void cache(Ptr<MatchboxMECache>::ptr c) { theCache = c; } /** * Get the ME cache object */ Ptr<MatchboxMECache>::tptr cache() const { return theCache; } //@} /** @name Matrix element objects. */ //@{ /** * Return the Born matrix elements to be considered */ const vector<Ptr<MatchboxMEBase>::ptr>& bornMEs() const { return theBornMEs; } /** * Access the Born matrix elements to be considered */ vector<Ptr<MatchboxMEBase>::ptr>& bornMEs() { return theBornMEs; } /** * Return the virtual corrections to be considered */ const vector<Ptr<MatchboxInsertionOperator>::ptr>& virtuals() const { return theVirtuals; } /** * Access the virtual corrections to be considered */ vector<Ptr<MatchboxInsertionOperator>::ptr>& virtuals() { return theVirtuals; } /** * Return the produced NLO matrix elements */ const vector<Ptr<MatchboxNLOME>::ptr>& bornVirtualMEs() const { return theBornVirtualMEs; } /** * Access the produced NLO matrix elements */ vector<Ptr<MatchboxNLOME>::ptr>& bornVirtualMEs() { return theBornVirtualMEs; } /** * Return the real emission matrix elements to be considered */ const vector<Ptr<MatchboxMEBase>::ptr>& realEmissionMEs() const { return theRealEmissionMEs; } /** * Access the real emission matrix elements to be considered */ vector<Ptr<MatchboxMEBase>::ptr>& realEmissionMEs() { return theRealEmissionMEs; } /** * Return the produced subtracted matrix elements */ const vector<Ptr<SubtractedME>::ptr>& subtractedMEs() const { return theSubtractedMEs; } /** * Access the produced subtracted matrix elements */ vector<Ptr<SubtractedME>::ptr>& subtractedMEs() { return theSubtractedMEs; } //@} /** @name Setup the matrix elements */ //@{ /** * Return true if this object needs to be initialized before all * other objects (except those for which this function also returns * true). This default version always returns false, but subclasses * may override it to return true. */ virtual bool preInitialize() const { return true; } /** * Prepare a matrix element. */ void prepareME(Ptr<MatchboxMEBase>::ptr) const; /** * Setup everything */ void setup(); //@} /** @name Diagnostic information */ //@{ /** * Return true, if verbose */ bool verbose() const { return theVerbose; } /** * Switch on diagnostic information. */ void setVerbose(bool on = true) { theVerbose = on; } /** * Dump the setup */ void print(ostream&) const; /** * Return the subtraction data prefix. */ const string& subtractionData() const { return theSubtractionData; } /** * Set the subtraction data prefix. */ void subtractionData(const string& s) { theSubtractionData = s; } //@} /** @name Process generation */ //@{ /** * Return the particle groups. */ const map<string,PDVector>& particleGroups() const { return theParticleGroups; } /** * Access the particle groups. */ map<string,PDVector>& particleGroups() { return theParticleGroups; } //@} 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 diagram generator. */ Ptr<Tree2toNGenerator>::ptr theDiagramGenerator; /** * The number of light flavours, this matrix * element is calculated for. */ unsigned int theNLight; /** * The order in \f$\alpha_S\f$. */ unsigned int theOrderInAlphaS; /** * The order in \f$\alpha_{EM}\f$. */ unsigned int theOrderInAlphaEW; /** * Switch on or off Born contributions */ bool theBornContributions; /** * Switch on or off virtual contributions */ bool theVirtualContributions; /** * Switch on or off subtracted real emission contributions should be included. */ bool theRealContributions; /** * True, if SubProcessGroups should be * setup from this MEGroup. If not, a single SubProcess * is constructed from the data provided by the * head matrix element. */ bool theSubProcessGroups; /** * The phase space generator to be used. */ Ptr<MatchboxPhasespace>::ptr thePhasespace; /** * The scale choice object */ Ptr<MatchboxScaleChoice>::ptr theScaleChoice; /** * The factorization scale factor. */ double theFactorizationScaleFactor; /** * The renormalization scale factor. */ double theRenormalizationScaleFactor; /** * Use non-running couplings. */ bool theFixedCouplings; /** * True, if veto scales should be set * for the real emission */ bool theVetoScales; /** * The amplitudes to be considered */ vector<Ptr<MatchboxAmplitude>::ptr> theAmplitudes; /** * The ME cache object */ Ptr<MatchboxMECache>::ptr theCache; /** * The Born matrix elements to be considered */ vector<Ptr<MatchboxMEBase>::ptr> theBornMEs; /** * The virtual corrections to be considered */ vector<Ptr<MatchboxInsertionOperator>::ptr> theVirtuals; /** * The real emission matrix elements to be considered */ vector<Ptr<MatchboxMEBase>::ptr> theRealEmissionMEs; /** * The produced NLO matrix elements */ vector<Ptr<MatchboxNLOME>::ptr> theBornVirtualMEs; /** * The produced subtracted matrix elements */ vector<Ptr<SubtractedME>::ptr> theSubtractedMEs; /** * Switch on or off verbosity */ bool theVerbose; /** * Prefix for subtraction data */ string theSubtractionData; /** * Particle groups. */ map<string,PDVector> theParticleGroups; /** * Command to start a particle group. */ string startParticleGroup(string); /** * The name of the particle group currently edited. */ string particleGroupName; /** * The particle group currently edited. */ PDVector particleGroup; /** * Command to end a particle group. */ string endParticleGroup(string); /** * Command to set the process. */ string doProcess(string); /** * The process to consider in terms of particle groups. */ vector<string> process; /** * Generate subprocesses. */ set<PDVector> makeSubProcesses(const vector<string>&) const; /** * Generate matrix element objects for the given process. */ vector<Ptr<MatchboxMEBase>::ptr> makeMEs(const vector<string>&, unsigned int orderas) const; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxFactory & operator=(const MatchboxFactory &); }; } #endif /* HERWIG_MatchboxFactory_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/�������������������������������������������������0000755�0001750�0001750�00000000000�11756464210�022712� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/���������������������������������������0000755�0001750�0001750�00000000000�11756464210�024660� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbar2qqbarg.cc��������������0000644�0001750�0001750�00000022420�11754474775�031472� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEllbar2qqbarg.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxMEllbar2qqbarg class. // #include "MatchboxMEllbar2qqbarg.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/RandomHelpers.h" using namespace Herwig; MatchboxMEllbar2qqbarg::MatchboxMEllbar2qqbarg() : MatchboxMEBase(), theUserScale(0.0*GeV) {} MatchboxMEllbar2qqbarg::~MatchboxMEllbar2qqbarg() {} IBPtr MatchboxMEllbar2qqbarg::clone() const { return new_ptr(*this); } IBPtr MatchboxMEllbar2qqbarg::fullclone() const { return new_ptr(*this); } bool MatchboxMEllbar2qqbarg::generateKinematics(const double * r) { if ( phasespace() ) return MatchboxMEBase::generateKinematics(r); using namespace RandomHelpers; double x0 = .01; double xc = 1e-4; pair<double,double> xw1 = generate((piecewise(), inverse(1.,0.,1.-x0), match(flat(1.-x0,1.-xc))), r[0]); double x1 = xw1.first; pair<double,double> xw2 = generate((piecewise(), inverse(1.,0.,1.-x0), match(flat(1.-x0,1.-xc))), r[1]); double x2 = xw2.first; double mapX = xw1.second*xw2.second; double mu2 = sqr( getParticleData( mePartonData()[2]->id() )->mass() ) / lastSHat(); if ( x1 < 2.*sqrt(mu2) || x1 > 1. || x2 < ( (2.-x1)*(1.-x1+2.*mu2) - (1.-x1)*sqrt(x1*x1-4.*mu2) ) / ( 2.*(1.-x1+mu2) ) || x2 > ( (2.-x1)*(1.-x1+2.*mu2) + (1.-x1)*sqrt(x1*x1-4.*mu2) ) / ( 2.*(1.-x1+mu2) ) ) { jacobian(0.0); return false; } double x3 = 2.-x1-x2; double th1 = acos(2.*r[2]-1.); double phi1 = 2.*Constants::pi*r[3]; double phi2 = 2.*Constants::pi*r[4]; double ct12 = (sqr(x3)-sqr(x1)-sqr(x2)+8.*mu2) / ( 2. * sqrt(sqr(x1)-4.*mu2) * sqrt(sqr(x2)-4.*mu2) ); double st12 = sqrt(1.-sqr(ct12)); Axis n1 (0.,0.,1.); Axis n2 (st12,0.,ct12); Axis x3n3 = -sqrt(sqr(x1)-4.*mu2)*n1 -sqrt(sqr(x2)-4.*mu2)*n2; n2.rotate(phi1,n1); x3n3.rotate(phi1,n1); Axis xPrime (1.,0.,0.); xPrime.rotate(phi1,n1); n1.rotate(th1,xPrime); n2.rotate(th1,xPrime); x3n3.rotate(th1,xPrime); Axis zPrime = n1; n1.rotate(phi2,zPrime); n2.rotate(phi2,zPrime); x3n3.rotate(phi2,zPrime); meMomenta()[2] = Lorentz5Momentum(sqrt(mu2*lastSHat()),(sqrt(lastSHat())*sqrt(sqr(x1)-4.*mu2)/2.)*n1); meMomenta()[3] = Lorentz5Momentum(sqrt(mu2*lastSHat()),(sqrt(lastSHat())*sqrt(sqr(x2)-4.*mu2)/2.)*n2); meMomenta()[4] = Lorentz5Momentum(ZERO,(sqrt(lastSHat())/2.)*x3n3); jacobian(mapX/(128.*Constants::pi*Constants::pi*Constants::pi)); setScale(); logGenerateKinematics(r); return true; } double MatchboxMEllbar2qqbarg::me2() const { if ( matchboxAmplitude() ) return MatchboxMEBase::me2(); double res; if ( !calculateME2(res) ) return res; Lorentz5Momentum pq = mePartonData()[2]->id() > 0 ? meMomenta()[2] : meMomenta()[3]; Lorentz5Momentum pqbar = mePartonData()[2]->id() > 0 ? meMomenta()[3] : meMomenta()[2]; Lorentz5Momentum pl = mePartonData()[0]->id() > 0 ? - meMomenta()[1] : - meMomenta()[0]; Lorentz5Momentum plbar = mePartonData()[0]->id() > 0 ? - meMomenta()[0] : - meMomenta()[1]; Lorentz5Momentum pg = meMomenta()[4]; prepare(pl,plbar,pq,pqbar,pg,lastSHat(),mePartonData()[0],mePartonData()[2]); lastME2(MatchboxMEllbarqqbarg::evaluateME2()*me2Norm()); cacheME2(lastME2()); logME2(); return lastME2(); } Energy2 MatchboxMEllbar2qqbarg::factorizationScale() const { if ( theUserScale != ZERO ) return sqr(theUserScale); return lastSHat(); } Energy2 MatchboxMEllbar2qqbarg::renormalizationScale() const { if ( theUserScale != ZERO ) return sqr(theUserScale); return lastSHat(); } double MatchboxMEllbar2qqbarg::colourCorrelatedME2(pair<int,int> ij) const { if ( matchboxAmplitude() ) return MatchboxMEBase::colourCorrelatedME2(ij); generator()->logWarning(Exception() << "A non-exisiting colour correlation was requested " << "from the matrix element '" << name() << "'." << Exception::warning); lastME2(0.0); return lastME2(); } double MatchboxMEllbar2qqbarg::spinColourCorrelatedME2(pair<int,int> ij, const SpinCorrelationTensor& c) const { if ( matchboxAmplitude() ) return MatchboxMEBase::spinColourCorrelatedME2(ij,c); generator()->logWarning(Exception() << "A non-exisiting colour correlation was requested " << "from the matrix element '" << name() << "'." << Exception::warning); lastME2(0.0); return lastME2(); } void MatchboxMEllbar2qqbarg::getDiagrams() const { tcPDPtr g = getParticleData(ParticleID::g); tcPDPtr gamma = getParticleData(ParticleID::gamma); tcPDPtr Z0 = getParticleData(ParticleID::Z0); for ( PDVector::const_iterator l = theLeptonFlavours.begin(); l != theLeptonFlavours.end(); ++l ) for ( PDVector::const_iterator q = theQuarkFlavours.begin(); q != theQuarkFlavours.end(); ++q ) { add(new_ptr((Tree2toNDiagram(2), *l, (**l).CC(), 1, gamma, 3, *q, 4, *q, 3, (**q).CC(), 4, g, -1))); add(new_ptr((Tree2toNDiagram(2), *l, (**l).CC(), 1, gamma, 3, *q, 3, (**q).CC(), 5, (**q).CC(), 5, g, -2))); add(new_ptr((Tree2toNDiagram(2), *l, (**l).CC(), 1, Z0, 3, *q, 4, *q, 3, (**q).CC(), 4, g, -3))); add(new_ptr((Tree2toNDiagram(2), *l, (**l).CC(), 1, Z0, 3, *q, 3, (**q).CC(), 5, (**q).CC(), 5, g, -4))); } } Selector<MEBase::DiagramIndex> MatchboxMEllbar2qqbarg::diagrams(const DiagramVector &) const { Selector<MEBase::DiagramIndex> sel; tcPDPtr Z0 = getParticleData(ParticleID::Z0); double wGamma = sqr( sqr(generator()->maximumCMEnergy())/lastSHat() ); double wZ = sqr( sqr(generator()->maximumCMEnergy()) ) / ( sqr(lastSHat()-sqr(Z0->mass())) + sqr(Z0->mass())*sqr(Z0->width()) ); if ( meMomenta()[2]*meMomenta()[4] < meMomenta()[3]*meMomenta()[4] ) { sel.insert(wGamma,0); sel.insert(wZ,2); } else { sel.insert(wGamma,1); sel.insert(wZ,3); } return sel; } Selector<const ColourLines *> MatchboxMEllbar2qqbarg::colourGeometries(tcDiagPtr d) const { static const ColourLines cq("5 -7, 7 4 -6"); static const ColourLines cqbar("4 -5 -7, 7 -6"); static const ColourLines cbarq("-5 7, -7 -4 6"); static const ColourLines cbarqbar("-4 5 7, -7 6"); Selector<const ColourLines *> sel; if ( mePartonData()[2]->id() > 0 ) { if ( abs(d->id()) % 2 != 0 ) sel.insert(1.0, &cq); else sel.insert(1.0, &cqbar); } else { if ( abs(d->id()) % 2 != 0 ) sel.insert(1.0, &cbarq); else sel.insert(1.0, &cbarqbar); } return sel; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxMEllbar2qqbarg::doinit() { MatchboxMEBase::doinit(); MatchboxMEllbarqqbarg::doinit(*this); // comment out if working with massive quarks (flagMS1, also in FFM??xDipole.cc) // for ( PDVector::const_iterator q = theQuarkFlavours.begin(); // q != theQuarkFlavours.end(); ++q ) // if ( (**q).mass() != ZERO ) // Throw<InitException>() << "The matrix element '" // << name() << "' is only capable of " // << "producing massless quarks."; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxMEllbar2qqbarg::persistentOutput(PersistentOStream & os) const { MatchboxMEllbarqqbarg::persistentOutput(os); os << theLeptonFlavours << theQuarkFlavours << ounit(theUserScale,GeV); } void MatchboxMEllbar2qqbarg::persistentInput(PersistentIStream & is, int) { MatchboxMEllbarqqbarg::persistentInput(is); is >> theLeptonFlavours >> theQuarkFlavours >> iunit(theUserScale,GeV); } ClassDescription<MatchboxMEllbar2qqbarg> MatchboxMEllbar2qqbarg::initMatchboxMEllbar2qqbarg; // Definition of the static class description member. void MatchboxMEllbar2qqbarg::Init() { static ClassDocumentation<MatchboxMEllbar2qqbarg> documentation ("MatchboxMEllbar2qqbarg"); static RefVector<MatchboxMEllbar2qqbarg,ParticleData> interfaceLeptonFlavours ("LeptonFlavours", "The lepton flavours for this matrix element.", &MatchboxMEllbar2qqbarg::theLeptonFlavours, -1, false, false, true, true, false); static RefVector<MatchboxMEllbar2qqbarg,ParticleData> interfaceQuarkFlavours ("QuarkFlavours", "The quark flavours for this matrix element.", &MatchboxMEllbar2qqbarg::theQuarkFlavours, -1, false, false, true, true, false); static Parameter<MatchboxMEllbar2qqbarg,Energy> interfaceUserScale ("UserScale", "A user defined renormalization scale.", &MatchboxMEllbar2qqbarg::theUserScale, GeV, 0.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbarqqbarg.cc���������������0000644�0001750�0001750�00000031322�11754474775�031411� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEllbarqqbarg.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #include "MatchboxMEllbarqqbarg.h" using namespace Herwig; using namespace SpinorHelicity; double MatchboxMEllbarqqbarg::evaluateME2(bool photon) const { double Q2 = (momentum(0)+momentum(1)).m2(); double M2 = sqr(BMass/amplitudeScale()); double G2 = sqr(BWidth/amplitudeScale()); double BB1 = (16*(4*al*aq*vl*vq*((invariant(0,4)*invariant(1,3) - invariant(0,3)*invariant(1,4))*invariant(2,4) + 2*(-((invariant(0,2) + invariant(0,4))*invariant(1,3)) + invariant(0,3)*(invariant(1,2) + invariant(1,4)))* sqr(mass(2))) + sqr(al)*(2*(aq - vq)*(aq + vq)*(invariant(0,1) - 4*mass(0)*mass(1))*mass(2)*mass(3)* (invariant(2,4) + 2*sqr(mass(2))) + (sqr(aq) + sqr(vq))* (invariant(2,4)*(invariant(0,4)*invariant(1,3) + invariant(0,3)*invariant(1,4) - 2*invariant(3,4)*mass(0)*mass(1)) - 2*((invariant(0,2) + invariant(0,4))*invariant(1,3) + invariant(0,3)*(invariant(1,2) + invariant(1,4)) - 2*(invariant(2,3) + invariant(3,4))*mass(0)*mass(1))*sqr(mass(2)))) + sqr(vl)*(2*(aq - vq)*(aq + vq)*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3)* (invariant(2,4) + 2*sqr(mass(2))) + (sqr(aq) + sqr(vq))* (invariant(2,4)*(invariant(0,4)*invariant(1,3) + invariant(0,3)*invariant(1,4) + 2*invariant(3,4)*mass(0)*mass(1)) - 2*((invariant(0,2) + invariant(0,4))*invariant(1,3) + invariant(0,3)*(invariant(1,2) + invariant(1,4)) + 2*(invariant(2,3) + invariant(3,4))*mass(0)*mass(1))*sqr(mass(2))))))/sqr(invariant(2,4)); double BB2 = (16*(4*al*aq*vl*vq*((-(invariant(0,4)*invariant(1,2)) + invariant(0,2)*invariant(1,4))*invariant(3,4) + 2*((invariant(0,3) + invariant(0,4))*invariant(1,2) - invariant(0,2)*(invariant(1,3) + invariant(1,4)))* sqr(mass(3))) + sqr(al)*(2*(aq - vq)*(aq + vq)*invariant(3,4)*(invariant(0,1) - 4*mass(0)*mass(1))*mass(2)* mass(3) + invariant(3,4)*(invariant(0,4)*invariant(1,2) + invariant(0,2)*invariant(1,4) - 2*invariant(2,4)*mass(0)*mass(1))*(sqr(aq) + sqr(vq)) + 4*(aq - vq)*(aq + vq)*(invariant(0,1) - 4*mass(0)*mass(1))*mass(2)*mass(3)*sqr(mass(3)) - 2*((invariant(0,3) + invariant(0,4))*invariant(1,2) + invariant(0,2)*(invariant(1,3) + invariant(1,4)) - 2*(invariant(2,3) + invariant(2,4))*mass(0)*mass(1))*(sqr(aq) + sqr(vq))*sqr(mass(3))) + sqr(vl)*(2*(aq - vq)*(aq + vq)*invariant(3,4)*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3) + invariant(3,4)*(invariant(0,4)*invariant(1,2) + invariant(0,2)*invariant(1,4) + 2*invariant(2,4)*mass(0)*mass(1))*(sqr(aq) + sqr(vq)) + 4*(aq - vq)*(aq + vq)*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3)*sqr(mass(3)) - 2*((invariant(0,3) + invariant(0,4))*invariant(1,2) + invariant(0,2)*(invariant(1,3) + invariant(1,4)) + 2*(invariant(2,3) + invariant(2,4))*mass(0)*mass(1))*(sqr(aq) + sqr(vq))*sqr(mass(3)))))/sqr(invariant(3,4)); double BB12 = (16*(4*al*aq*vl*vq*(invariant(0,4)*(-invariant(1,2) + invariant(1,3))*invariant(2,3) - invariant(0,3)*(invariant(1,4)*invariant(2,3) + invariant(1,2)*(2*invariant(2,3) + invariant(2,4) + invariant(3,4))) + invariant(0,2)*(invariant(1,4)*invariant(2,3) + invariant(1,3)*(2*invariant(2,3) + invariant(2,4) + invariant(3,4)))) + sqr(vl)*(sqr(vq)*(2*invariant(0,2)*invariant(1,3)*invariant(2,3) + invariant(0,2)*invariant(1,4)*invariant(2,3) + invariant(0,2)*invariant(1,3)*invariant(2,4) - 2*invariant(0,2)*invariant(1,2)*invariant(3,4) + invariant(0,2)*invariant(1,3)*invariant(3,4) + invariant(0,3)*(invariant(1,4)*invariant(2,3) - 2*invariant(1,3)*invariant(2,4) + invariant(1,2)*(2*invariant(2,3) + invariant(2,4) + invariant(3,4))) + 4*invariant(2,3)*invariant(2,4)*mass(0)*mass(1) + 4*invariant(2,3)*invariant(3,4)*mass(0)*mass(1) + 2*(2*invariant(2,3) + invariant(2,4) + invariant(3,4))*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)* mass(3) + invariant(0,4)*((invariant(1,2) + invariant(1,3))*invariant(2,3) - 4*invariant(1,4)*mass(2)*mass(3)) + 4*mass(0)*mass(1)*sqr(invariant(2,3)) - 4*invariant(3,4)*mass(0)*mass(1)*sqr(mass(2)) - 4*invariant(2,4)*mass(0)*mass(1)*sqr(mass(3))) + sqr(aq)*(2*invariant(0,2)*invariant(1,3)*invariant(2,3) + invariant(0,2)*invariant(1,4)*invariant(2,3) + invariant(0,2)*invariant(1,3)*invariant(2,4) - 2*invariant(0,2)*invariant(1,2)*invariant(3,4) + invariant(0,2)*invariant(1,3)*invariant(3,4) + invariant(0,3)*(invariant(1,4)*invariant(2,3) - 2*invariant(1,3)*invariant(2,4) + invariant(1,2)*(2*invariant(2,3) + invariant(2,4) + invariant(3,4))) + 4*invariant(2,3)*invariant(2,4)*mass(0)*mass(1) + 4*invariant(2,3)*invariant(3,4)*mass(0)*mass(1) - 2*(2*invariant(2,3) + invariant(2,4) + invariant(3,4))*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)* mass(3) + invariant(0,4)*((invariant(1,2) + invariant(1,3))*invariant(2,3) + 4*invariant(1,4)*mass(2)*mass(3)) + 4*mass(0)*mass(1)*sqr(invariant(2,3)) - 4*invariant(3,4)*mass(0)*mass(1)*sqr(mass(2)) - 4*invariant(2,4)*mass(0)*mass(1)*sqr(mass(3)))) + sqr(al)*(sqr(vq)*(2*invariant(0,2)*invariant(1,3)*invariant(2,3) + invariant(0,2)*invariant(1,4)*invariant(2,3) + invariant(0,2)*invariant(1,3)*invariant(2,4) - 2*invariant(0,2)*invariant(1,2)*invariant(3,4) + invariant(0,2)*invariant(1,3)*invariant(3,4) + invariant(0,3)*(invariant(1,4)*invariant(2,3) - 2*invariant(1,3)*invariant(2,4) + invariant(1,2)*(2*invariant(2,3) + invariant(2,4) + invariant(3,4))) - 4*invariant(2,3)*invariant(2,4)*mass(0)*mass(1) - 4*invariant(2,3)*invariant(3,4)*mass(0)*mass(1) + 2*(2*invariant(2,3) + invariant(2,4) + invariant(3,4))*(invariant(0,1) - 4*mass(0)*mass(1))*mass(2)* mass(3) + invariant(0,4)*((invariant(1,2) + invariant(1,3))*invariant(2,3) - 4*invariant(1,4)*mass(2)*mass(3)) - 4*mass(0)*mass(1)*sqr(invariant(2,3)) + 4*invariant(3,4)*mass(0)*mass(1)*sqr(mass(2)) + 4*invariant(2,4)*mass(0)*mass(1)*sqr(mass(3))) + sqr(aq)*(2*invariant(0,2)*invariant(1,3)*invariant(2,3) + invariant(0,2)*invariant(1,4)*invariant(2,3) + invariant(0,2)*invariant(1,3)*invariant(2,4) - 2*invariant(0,2)*invariant(1,2)*invariant(3,4) + invariant(0,2)*invariant(1,3)*invariant(3,4) + invariant(0,3)*(invariant(1,4)*invariant(2,3) - 2*invariant(1,3)*invariant(2,4) + invariant(1,2)*(2*invariant(2,3) + invariant(2,4) + invariant(3,4))) - 4*invariant(2,3)*invariant(2,4)*mass(0)*mass(1) - 4*invariant(2,3)*invariant(3,4)*mass(0)*mass(1) - 2*(2*invariant(2,3) + invariant(2,4) + invariant(3,4))*(invariant(0,1) - 4*mass(0)*mass(1))*mass(2)* mass(3) + invariant(0,4)*((invariant(1,2) + invariant(1,3))*invariant(2,3) + 4*invariant(1,4)*mass(2)*mass(3)) - 4*mass(0)*mass(1)*sqr(invariant(2,3)) + 4*invariant(3,4)*mass(0)*mass(1)*sqr(mass(2)) + 4*invariant(2,4)*mass(0)*mass(1)*sqr(mass(3))))))/ (invariant(2,4)*invariant(3,4)); double res = ( BB1 + BB2 + BB12 ) / ( sqr(Q2-M2) + M2*G2 ); if ( photon ) { double PP1 = (16*sqr(el)*sqr(eq)*(invariant(0,4)*invariant(1,3)*(invariant(2,4) - 2*sqr(mass(2))) + invariant(0,3)*(invariant(1,4)*invariant(2,4) - 2*(invariant(1,2) + invariant(1,4))*sqr(mass(2))) + 2*(-(invariant(0,2)*invariant(1,3)*sqr(mass(2))) - (invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3)*(invariant(2,4) + 2*sqr(mass(2))) + mass(0)*mass(1)*(invariant(2,4)*invariant(3,4) - 2*(invariant(2,3) + invariant(3,4))*sqr(mass(2))))))/ sqr(invariant(2,4)); double PP2 = (16*sqr(el)*sqr(eq)*(invariant(3,4)*(invariant(0,4)*invariant(1,2) + invariant(0,2)*invariant(1,4) + 2*invariant(2,4)*mass(0)*mass(1)) - 2*invariant(3,4)*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3) - 2*((invariant(0,3) + invariant(0,4))*invariant(1,2) + invariant(0,2)*(invariant(1,3) + invariant(1,4)) + 2*(invariant(2,3) + invariant(2,4))*mass(0)*mass(1))*sqr(mass(3)) - 4*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3)*sqr(mass(3))))/sqr(invariant(3,4)); double PP12 = (16*sqr(el)*sqr(eq)*(2*invariant(0,2)*invariant(1,3)*invariant(2,3) + invariant(0,2)*invariant(1,4)*invariant(2,3) + invariant(0,2)*invariant(1,3)*invariant(2,4) - 2*invariant(0,2)*invariant(1,2)*invariant(3,4) + invariant(0,2)*invariant(1,3)*invariant(3,4) + invariant(0,3)*(invariant(1,4)*invariant(2,3) - 2*invariant(1,3)*invariant(2,4) + invariant(1,2)*(2*invariant(2,3) + invariant(2,4) + invariant(3,4))) + 4*invariant(2,3)*invariant(2,4)*mass(0)*mass(1) + 4*invariant(2,3)*invariant(3,4)*mass(0)*mass(1) + 2*(2*invariant(2,3) + invariant(2,4) + invariant(3,4))*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3) + invariant(0,4)*((invariant(1,2) + invariant(1,3))*invariant(2,3) - 4*invariant(1,4)*mass(2)*mass(3)) + 4*mass(0)*mass(1)*sqr(invariant(2,3)) - 4*invariant(3,4)*mass(0)*mass(1)*sqr(mass(2)) - 4*invariant(2,4)*mass(0)*mass(1)*sqr(mass(3))))/(invariant(2,4)*invariant(3,4)); double PB1 = (-16*el*eq*(al*aq*((-(invariant(0,4)*invariant(1,3)) + invariant(0,3)*invariant(1,4))*invariant(2,4) + 2*((invariant(0,2) + invariant(0,4))*invariant(1,3) - invariant(0,3)*(invariant(1,2) + invariant(1,4)))* sqr(mass(2))) + vl*vq*(-(invariant(0,4)*invariant(1,3)*(invariant(2,4) - 2*sqr(mass(2)))) + invariant(0,3)*(-(invariant(1,4)*invariant(2,4)) + 2*(invariant(1,2) + invariant(1,4))*sqr(mass(2))) + 2*(invariant(0,2)*invariant(1,3)*sqr(mass(2)) + (invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3)*(invariant(2,4) + 2*sqr(mass(2))) + mass(0)*mass(1)*(-(invariant(2,4)*invariant(3,4)) + 2*(invariant(2,3) + invariant(3,4))*sqr(mass(2)))))))/ sqr(invariant(2,4)); double PB2 = (16*el*eq*(al*aq*((-(invariant(0,4)*invariant(1,2)) + invariant(0,2)*invariant(1,4))*invariant(3,4) + 2*((invariant(0,3) + invariant(0,4))*invariant(1,2) - invariant(0,2)*(invariant(1,3) + invariant(1,4)))* sqr(mass(3))) + vl*vq*(invariant(3,4)* (invariant(0,4)*invariant(1,2) + invariant(0,2)*invariant(1,4) + 2*invariant(2,4)*mass(0)*mass(1)) - 2*invariant(3,4)*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3) - 2*((invariant(0,3) + invariant(0,4))*invariant(1,2) + invariant(0,2)*(invariant(1,3) + invariant(1,4)) + 2*(invariant(2,3) + invariant(2,4))*mass(0)*mass(1))*sqr(mass(3)) - 4*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3)*sqr(mass(3)))))/sqr(invariant(3,4)); double PB12 = (16*el*eq*(al*aq*(invariant(0,4)*(-invariant(1,2) + invariant(1,3))*invariant(2,3) - invariant(0,3)*(invariant(1,4)*invariant(2,3) + invariant(1,2)*(2*invariant(2,3) + invariant(2,4) + invariant(3,4))) + invariant(0,2)*(invariant(1,4)*invariant(2,3) + invariant(1,3)*(2*invariant(2,3) + invariant(2,4) + invariant(3,4)))) + vl*vq*(2*invariant(0,2)*invariant(1,3)*invariant(2,3) + invariant(0,2)*invariant(1,4)*invariant(2,3) + invariant(0,2)*invariant(1,3)*invariant(2,4) - 2*invariant(0,2)*invariant(1,2)*invariant(3,4) + invariant(0,2)*invariant(1,3)*invariant(3,4) + invariant(0,3)*(invariant(1,4)*invariant(2,3) - 2*invariant(1,3)*invariant(2,4) + invariant(1,2)*(2*invariant(2,3) + invariant(2,4) + invariant(3,4))) + 4*invariant(2,3)*invariant(2,4)*mass(0)*mass(1) + 4*invariant(2,3)*invariant(3,4)*mass(0)*mass(1) + 2*(2*invariant(2,3) + invariant(2,4) + invariant(3,4))*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3) + invariant(0,4)*((invariant(1,2) + invariant(1,3))*invariant(2,3) - 4*invariant(1,4)*mass(2)*mass(3))) + 4*vl*vq*mass(0)*mass(1)*(sqr(invariant(2,3)) - invariant(3,4)*sqr(mass(2)) - invariant(2,4)*sqr(mass(3)))))/ (invariant(2,4)*invariant(3,4)); res += ( PP1 + PP2 + PP12 ) / sqr(Q2) + 2.*(1.-M2/Q2)*( PB1 + PB2 + PB12 ) / ( sqr(Q2-M2) + M2*G2 ); } res *= 2.*Constants::pi*alphaS*(sqr(Nc)-1.); return res; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEqqbar2llbarg.h���������������0000644�0001750�0001750�00000011555�11754474775�031343� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEqqbar2llbarg.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxMEqqbar2llbarg_H #define HERWIG_MatchboxMEqqbar2llbarg_H // // This is the declaration of the MatchboxMEqqbar2llbarg class. // #include "Herwig++/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEPP2llbarJet.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxMEqqbar2llbarg implements the matrix element * for quark + anti-quark -> gluon + charged lepton pair * */ class MatchboxMEqqbar2llbarg: public MatchboxMEPP2llbarJet { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxMEqqbar2llbarg(); /** * The destructor. */ virtual ~MatchboxMEqqbar2llbarg(); //@} public: /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * With the information previously supplied with the * setKinematics(...) method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector &) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MatchboxMEqqbar2llbarg> initMatchboxMEqqbar2llbarg; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxMEqqbar2llbarg & operator=(const MatchboxMEqqbar2llbarg &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MatchboxMEqqbar2llbarg. */ template <> struct BaseClassTrait<Herwig::MatchboxMEqqbar2llbarg,1> { /** Typedef of the first base class of MatchboxMEqqbar2llbarg. */ typedef Herwig::MatchboxMEPP2llbarJet NthBase; }; /** This template specialization informs ThePEG about the name of * the MatchboxMEqqbar2llbarg class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MatchboxMEqqbar2llbarg> : public ClassTraitsBase<Herwig::MatchboxMEqqbar2llbarg> { /** Return a platform-independent class name */ static string className() { return "Herwig::MatchboxMEqqbar2llbarg"; } /** * The name of a file containing the dynamic library where the class * MatchboxMEqqbar2llbarg is implemented. It may also include several, space-separated, * libraries if the class MatchboxMEqqbar2llbarg depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMatchbox.so"; } }; /** @endcond */ } #endif /* HERWIG_MatchboxMEqqbar2llbarg_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEPP2llbarJet.cc���������������0000644�0001750�0001750�00000016072�11754474775�031205� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEPP2llbarJet.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxMEPP2llbarJet class. // #include "MatchboxMEPP2llbarJet.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; MatchboxMEPP2llbarJet::MatchboxMEPP2llbarJet() : MatchboxMEBase(), theZMass2(0.0*GeV2), theZWidth2(0.0*GeV2), theUserScale(0.0*GeV) {} MatchboxMEPP2llbarJet::~MatchboxMEPP2llbarJet() {} bool MatchboxMEPP2llbarJet::generateKinematics(const double * r) { if ( phasespace() ) return MatchboxMEBase::generateKinematics(r); if ( theZMass2 == 0.0*GeV2 ) { theZMass2 = sqr(getParticleData(ParticleID::Z0)->mass()); theZWidth2 = sqr(getParticleData(ParticleID::Z0)->width()); } Energy Q = sqrt(lastSHat()); Energy m1 = mePartonData()[2]->mass(); Energy m2 = mePartonData()[3]->mass(); // get the z mass and jacobian to map out the BW Energy QZmin = m1 + m2; Energy QZmax = Q; double muZ = theZMass2/sqr(Q); double gammaZ = theZWidth2/sqr(Q); double xqMin = atan((sqr(QZmin/Q)-muZ)/sqrt(muZ*gammaZ))/sqrt(muZ*gammaZ); double xqMax = atan((sqr(QZmax/Q)-muZ)/sqrt(muZ*gammaZ))/sqrt(muZ*gammaZ); double xq = xqMin+r[0]*(xqMax-xqMin); double qZ = muZ + sqrt(muZ*gammaZ)*tan(xq*sqrt(muZ*gammaZ)); Energy QZ = Q*sqrt(qZ); double bwWeight = sqr(qZ-muZ)+muZ*gammaZ; bwWeight *= xqMax-xqMin; double zMassWeight = bwWeight/(2.*Constants::pi); // the parton parton -> Z parton phasespace // map out the 1/pt^2 Energy ptMin = 1.0*GeV; Energy ptMax = (Q/2.)*(1.-sqr(QZ/Q)); double xtMin = 2.*log(ptMin/Q); double xtMax = log(sqr(ptMax/Q)+sqr(ptMin/Q)); double xt = xtMin + r[1]*(xtMax-xtMin); Energy pt = Q*sqrt(exp(xt)-sqr(ptMin/Q)); double mapPt = (sqr(pt)+sqr(ptMin))/sqr(Q); mapPt *= xtMax-xtMin; double phiJet = 2.*Constants::pi*r[2]; double cPhiJet = cos(phiJet); double sPhiJet = phiJet < Constants::pi ? sqrt(1.-sqr(cPhiJet)) : - sqrt(1.-sqr(cPhiJet)); Energy eJet = (sqr(Q)-sqr(QZ))/(2.*Q); double hemisphere = rnd() < 0.5 ? 1.0 : -1.0; Energy pJet3z = hemisphere*sqrt(sqr(eJet)-sqr(pt)); if ( abs((eJet-pt)/GeV) < Constants::epsilon ) pJet3z = ZERO; ThreeVector<Energy> pJet3 (pt*cPhiJet,pt*sPhiJet,pJet3z); if ( sqr(1.-sqr(QZ/Q))-4.*sqr(pt/Q) <= 0.0 ) { jacobian(0.0); return false; } double twoBodyWeight = mapPt*(1./sqrt(sqr(1.-sqr(QZ/Q))-4.*sqr(pt/Q)))/(8.*Constants::pi); Lorentz5Momentum pJet(0.0*GeV,pJet3); Lorentz5Momentum pZ(QZ,-pJet3); // decay the leptons in the Z rest frame double phiLepton = 2.*Constants::pi*r[3]; double cPhiLepton = cos(phiLepton); double sPhiLepton = phiLepton < Constants::pi ? sqrt(1.-sqr(cPhiLepton)) : - sqrt(1.-sqr(cPhiLepton)); double ctLepton = 2.*r[4]-1.; double stLepton = sqrt(1.-sqr(ctLepton)); Energy qLepton = sqrt((sqr(QZ)-sqr(m1-m2))*(sqr(QZ)-sqr(m1+m2)))/(2.*QZ); double decayWeight = (qLepton/QZ)/(4.*Constants::pi); Axis nLepton(cPhiLepton*stLepton,sPhiLepton*stLepton,ctLepton); Lorentz5Momentum pLepton(m1,qLepton*nLepton); Lorentz5Momentum pLeptonBar(m2,-qLepton*nLepton); Boost leptonBoost = pZ.boostVector(); pLepton.boost(leptonBoost); pLeptonBar.boost(leptonBoost); meMomenta()[2] = pLepton; meMomenta()[3] = pLeptonBar; meMomenta()[4] = pJet; jacobian(zMassWeight*twoBodyWeight*decayWeight); setScale(); logGenerateKinematics(r); return true; } Energy2 MatchboxMEPP2llbarJet::factorizationScale() const { if ( theUserScale != ZERO ) return sqr(theUserScale); return (meMomenta()[2]+meMomenta()[3]).m2(); } Energy2 MatchboxMEPP2llbarJet::renormalizationScale() const { if ( theUserScale != ZERO ) return sqr(theUserScale); return (meMomenta()[2]+meMomenta()[3]).m2(); } double MatchboxMEPP2llbarJet::colourCorrelatedME2(pair<int,int> ij) const { if ( matchboxAmplitude() ) return MatchboxMEBase::colourCorrelatedME2(ij); generator()->logWarning(Exception() << "The matrix element '" << name() << "' " << "is not capable of calculating colour- or spin correlated " << "matrix element squares." << Exception::warning); lastME2(0.0); return lastME2(); } double MatchboxMEPP2llbarJet::spinColourCorrelatedME2(pair<int,int> ij, const SpinCorrelationTensor& c) const { if ( matchboxAmplitude() ) return MatchboxMEBase::spinColourCorrelatedME2(ij,c); generator()->logWarning(Exception() << "The matrix element '" << name() << "' " << "is not capable of calculating colour- or spin correlated " << "matrix element squares." << Exception::warning); lastME2(0.0); return lastME2(); } void MatchboxMEPP2llbarJet::doinit() { MatchboxMEBase::doinit(); MatchboxMEllbarqqbarg::doinit(*this); for ( PDVector::const_iterator q = theQuarkFlavours.begin(); q != theQuarkFlavours.end(); ++q ) if ( (**q).mass() != ZERO ) Throw<InitException>() << "The matrix element '" << name() << "' is only capable of " << "producing massless quarks."; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxMEPP2llbarJet::persistentOutput(PersistentOStream & os) const { MatchboxMEllbarqqbarg::persistentOutput(os); os << theLeptonFlavours << theQuarkFlavours << ounit(theUserScale,GeV); } void MatchboxMEPP2llbarJet::persistentInput(PersistentIStream & is, int) { MatchboxMEllbarqqbarg::persistentInput(is); is >> theLeptonFlavours >> theQuarkFlavours >> iunit(theUserScale,GeV); } AbstractClassDescription<MatchboxMEPP2llbarJet> MatchboxMEPP2llbarJet::initMatchboxMEPP2llbarJet; // Definition of the static class description member. void MatchboxMEPP2llbarJet::Init() { static ClassDocumentation<MatchboxMEPP2llbarJet> documentation ("MatchboxMEPP2llbarJet"); static RefVector<MatchboxMEPP2llbarJet,ParticleData> interfaceLeptonFlavours ("LeptonFlavours", "The lepton flavours for this matrix element.", &MatchboxMEPP2llbarJet::theLeptonFlavours, -1, false, false, true, true, false); static RefVector<MatchboxMEPP2llbarJet,ParticleData> interfaceQuarkFlavours ("QuarkFlavours", "The quark flavours for this matrix element.", &MatchboxMEPP2llbarJet::theQuarkFlavours, -1, false, false, true, true, false); static Parameter<MatchboxMEPP2llbarJet,Energy> interfaceUserScale ("UserScale", "A user defined renormalization scale.", &MatchboxMEPP2llbarJet::theUserScale, GeV, 0.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEqqbar2llbarg.cc��������������0000644�0001750�0001750�00000011100�11754474775�031463� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEqqbar2llbarg.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxMEqqbar2llbarg class. // #include "MatchboxMEqqbar2llbarg.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; MatchboxMEqqbar2llbarg::MatchboxMEqqbar2llbarg() : MatchboxMEPP2llbarJet() {} MatchboxMEqqbar2llbarg::~MatchboxMEqqbar2llbarg() {} IBPtr MatchboxMEqqbar2llbarg::clone() const { return new_ptr(*this); } IBPtr MatchboxMEqqbar2llbarg::fullclone() const { return new_ptr(*this); } double MatchboxMEqqbar2llbarg::me2() const { if ( matchboxAmplitude() ) return MatchboxMEBase::me2(); double res; if ( !calculateME2(res) ) return res; Lorentz5Momentum pq = - ( mePartonData()[0]->id() > 0 ? meMomenta()[1] : meMomenta()[0] ); Lorentz5Momentum pqbar = - ( mePartonData()[1]->id() > 0 ? meMomenta()[1] : meMomenta()[0] ); Lorentz5Momentum pl = mePartonData()[2]->id() > 0 ? meMomenta()[2] : meMomenta()[3]; Lorentz5Momentum plbar = mePartonData()[2]->id() > 0 ? meMomenta()[3] : meMomenta()[2]; Lorentz5Momentum pg = meMomenta()[4]; prepare(pl,plbar,pq,pqbar,pg,lastSHat(),mePartonData()[2],mePartonData()[0]); lastME2(MatchboxMEllbarqqbarg::evaluateME2()*me2Norm()); cacheME2(lastME2()); logME2(); return lastME2(); } void MatchboxMEqqbar2llbarg::getDiagrams() const { tcPDPtr g = getParticleData(ParticleID::g); tcPDPtr gamma = getParticleData(ParticleID::gamma); tcPDPtr Z0 = getParticleData(ParticleID::Z0); for ( PDVector::const_iterator l = theLeptonFlavours.begin(); l != theLeptonFlavours.end(); ++l ) for ( PDVector::const_iterator q = theQuarkFlavours.begin(); q != theQuarkFlavours.end(); ++q ) { add(new_ptr((Tree2toNDiagram(3), *q, *q, (**q).CC(), 2, gamma, 4, *l, 4, (**l).CC(), 1, g, -1))); add(new_ptr((Tree2toNDiagram(3), *q, *q, (**q).CC(), 1, gamma, 4, *l, 4, (**l).CC(), 2, g, -2))); add(new_ptr((Tree2toNDiagram(3), *q, *q, (**q).CC(), 2, Z0 , 4, *l, 4, (**l).CC(), 1, g, -3))); add(new_ptr((Tree2toNDiagram(3), *q, *q, (**q).CC(), 1, Z0 , 4, *l, 4, (**l).CC(), 2, g, -4))); } } Selector<MEBase::DiagramIndex> MatchboxMEqqbar2llbarg::diagrams(const DiagramVector &) const { Selector<MEBase::DiagramIndex> sel; tcPDPtr Z0 = getParticleData(ParticleID::Z0); double wGamma = sqr( sqr(generator()->maximumCMEnergy())/(2.*(meMomenta()[2]*meMomenta()[3])) ); double wZ = sqr( sqr(generator()->maximumCMEnergy()) ) / ( sqr(2.*(meMomenta()[2]*meMomenta()[3])-sqr(Z0->mass())) + sqr(Z0->mass())*sqr(Z0->width()) ); if ( meMomenta()[0]*meMomenta()[4] < meMomenta()[1]*meMomenta()[4] ) { sel.insert(wGamma,0); sel.insert(wZ,2); } else { sel.insert(wGamma,1); sel.insert(wZ,3); } return sel; } Selector<const ColourLines *> MatchboxMEqqbar2llbarg::colourGeometries(tcDiagPtr d) const { static const ColourLines cq("1 7, -7 2 -3"); static const ColourLines cqbar("1 2 7, -3 -7"); static const ColourLines cbarq("-1 -7, 7 -2 3"); static const ColourLines cbarqbar("-1 -2 -7, 3 7"); Selector<const ColourLines *> sel; if ( mePartonData()[0]->id() > 0 ) { if ( abs(d->id()) % 2 != 0 ) sel.insert(1.0, &cq); else sel.insert(1.0, &cqbar); } else { if ( abs(d->id()) % 2 != 0 ) sel.insert(1.0, &cbarq); else sel.insert(1.0, &cbarqbar); } return sel; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxMEqqbar2llbarg::persistentOutput(PersistentOStream &) const { } void MatchboxMEqqbar2llbarg::persistentInput(PersistentIStream &, int) { } ClassDescription<MatchboxMEqqbar2llbarg> MatchboxMEqqbar2llbarg::initMatchboxMEqqbar2llbarg; // Definition of the static class description member. void MatchboxMEqqbar2llbarg::Init() { static ClassDocumentation<MatchboxMEqqbar2llbarg> documentation ("MatchboxMEqqbar2llbarg"); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMElP2lJetJet.h�����������������0000644�0001750�0001750�00000015333�11754474775�030704� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMElP2lJetJet.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxMElP2lJetJet_H #define HERWIG_MatchboxMElP2lJetJet_H // // This is the declaration of the MatchboxMElP2lJetJet class. // #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxMEBase.h" #include "Herwig++/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbarqqbarg.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer, Luca D'Errico * * \brief MatchboxMElP2lJetJet implements the matrix element * for neutral current, charged lepton 1+1 jet DIS with light quarks. * * @see \ref MatchboxMElP2lJetJetInterfaces "The interfaces" * defined for MatchboxMElP2lJetJet. */ class MatchboxMElP2lJetJet: public MatchboxMEBase, public MatchboxMEllbarqqbarg { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxMElP2lJetJet(); /** * The destructor. */ virtual ~MatchboxMElP2lJetJet(); //@} public: /** * The number of internal degreed of freedom used in the matrix * element. */ virtual int nDim() const { return phasespace() ? phasespace()->nDim(3) : 5; } /** * Return the order in \f$\alpha_S\f$ in which this matrix element * is given. */ virtual unsigned int orderInAlphaS() const { return 1; } /** * Return the order in \f$\alpha_{EM}\f$ in which this matrix * element is given. Returns 0. */ virtual unsigned int orderInAlphaEW() const { return 2; } /** * Generate internal degrees of freedom given nDim() uniform random * numbers in the interval ]0,1[. To help the phase space generator, * the 'dSigHatDR' should be a smooth function of these numbers, * although this is not strictly necessary. The return value should * be true of the generation succeeded. If so the generated momenta * should be stored in the meMomenta() vector. Derived classes * must call this method once internal degrees of freedom are setup * and finally return the result of this method. */ virtual bool generateKinematics(const double * r); /** * Return the renormalization scale for the last generated phasespace point. */ virtual Energy2 factorizationScale() const; /** * Return the renormalization scale for the last generated phasespace point. */ virtual Energy2 renormalizationScale() const; /** * Return true, if this matrix element provides the PDF * weight for the first incoming parton itself. */ virtual bool havePDFWeight1() const { return false; } /** * Return the number of light flavours, this matrix * element is calculated for. */ virtual unsigned int nLight() const { return theQuarkFlavours.size(); } /** * Return the colour correlated matrix element squared with * respect to the given two partons as appearing in mePartonData(), * suitably scaled by sHat() to give a dimension-less number. */ virtual double colourCorrelatedME2(pair<int,int>) const; /** * Return the colour and spin correlated matrix element squared for * the gluon indexed by the first argument using the given * correlation tensor. */ virtual double spinColourCorrelatedME2(pair<int,int> emitterSpectator, const SpinCorrelationTensor& c) 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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(); //@} protected: /** * The lepton flavours to be considered. */ PDVector theLeptonFlavours; /** * The quark flavours to be considered. */ PDVector theQuarkFlavours; /** * The Z mass squared */ Energy2 theZMass2; /** * The Z width squared */ Energy2 theZWidth2; private: /** * A user defined scale; if zero, the center of mass * energy is used. */ Energy theUserScale; private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<MatchboxMElP2lJetJet> initMatchboxMElP2lJetJet; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxMElP2lJetJet & operator=(const MatchboxMElP2lJetJet &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MatchboxMElP2lJetJet. */ template <> struct BaseClassTrait<Herwig::MatchboxMElP2lJetJet,1> { /** Typedef of the first base class of MatchboxMElP2lJetJet. */ typedef Herwig::MatchboxMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MatchboxMElP2lJetJet class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MatchboxMElP2lJetJet> : public ClassTraitsBase<Herwig::MatchboxMElP2lJetJet> { /** Return a platform-independent class name */ static string className() { return "Herwig::MatchboxMElP2lJetJet"; } /** * The name of a file containing the dynamic library where the class * MatchboxMElP2lJetJet is implemented. It may also include several, space-separated, * libraries if the class MatchboxMElP2lJetJet depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMatchbox.so"; } }; /** @endcond */ } #endif /* HERWIG_MatchboxMElP2lJetJet_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMElP2lJet.h��������������������0000644�0001750�0001750�00000017031�11754474775�030236� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMElP2lJet.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxMElP2lJet_H #define HERWIG_MatchboxMElP2lJet_H // // MatchboxMElP2lJet // #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxMEBase.h" #include "Herwig++/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbarqqbar.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxMElP2lJet implements the matrix element * for neutral current, charged lepton 1+0 jet DIS with light quarks. * * @see \ref MatchboxMElP2lJetInterfaces "The interfaces" * defined for MatchboxMElP2lJet. */ class MatchboxMElP2lJet: public MatchboxMEBase, public MatchboxMEllbarqqbar { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxMElP2lJet(); /** * The destructor. */ virtual ~MatchboxMElP2lJet(); //@} public: /** * Return the order in \f$\alpha_S\f$ in which this matrix element * is given. */ virtual unsigned int orderInAlphaS() const { return 0; } /** * Return the order in \f$\alpha_{EM}\f$ in which this matrix * element is given. Returns 0. */ virtual unsigned int orderInAlphaEW() const { return 2; } /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Evaluate the finite virtual correction for the * variables supplied through the Born XComb object * and possible additional random numbers. */ virtual double oneLoopInterference() const { return -8.*(lastAlphaS()/(2.*Constants::pi)) * ((SM().Nc()*SM().Nc()-1.0)/(2.*SM().Nc())) * me2(); } /** * Return true, if this matrix element is capable of calculating * one-loop (QCD) corrections. */ virtual bool haveOneLoop() const { return true; }; /** * Return true, if one loop corrections have been calculated in * dimensional reduction. Otherwise conventional dimensional * regularization is assumed. Note that renormalization is always * assumed to be MSbar. */ virtual bool isDR() const { return false; } /** * Return true, if one loop corrections are given in the conventions * of the integrated dipoles. */ virtual bool isCS() const { return true; } /** * Return the renormalization scale for the last generated phasespace point. */ virtual Energy2 factorizationScale() const; /** * Return the renormalization scale for the last generated phasespace point. */ virtual Energy2 renormalizationScale() const; /** * Return true, if this matrix element provides the PDF * weight for the first incoming parton itself. */ virtual bool havePDFWeight1() const { return false; } /** * Return the number of light flavours, this matrix * element is calculated for. */ virtual unsigned int nLight() const { return theQuarkFlavours.size(); } /** * Return the colour correlated matrix element squared with * respect to the given two partons as appearing in mePartonData(), * suitably scaled by sHat() to give a dimension-less number. */ virtual double colourCorrelatedME2(pair<int,int>) const; /** * Return the colour and spin correlated matrix element squared for * the gluon indexed by the first argument using the given * correlation tensor. */ virtual double spinColourCorrelatedME2(pair<int,int> emitterSpectator, const SpinCorrelationTensor& c) const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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 lepton flavours to be considered. */ PDVector theLeptonFlavours; /** * The quark flavours to be considered. */ PDVector theQuarkFlavours; /** * A user defined scale; if zero, the center of mass * energy is used. */ Energy theUserScale; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MatchboxMElP2lJet> initMatchboxMElP2lJet; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxMElP2lJet & operator=(const MatchboxMElP2lJet &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MatchboxMElP2lJet. */ template <> struct BaseClassTrait<Herwig::MatchboxMElP2lJet,1> { /** Typedef of the first base class of MatchboxMElP2lJet. */ typedef Herwig::MatchboxMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MatchboxMElP2lJet class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MatchboxMElP2lJet> : public ClassTraitsBase<Herwig::MatchboxMElP2lJet> { /** Return a platform-independent class name */ static string className() { return "Herwig::MatchboxMElP2lJet"; } /** * The name of a file containing the dynamic library where the class * MatchboxMElP2lJet is implemented. It may also include several, space-separated, * libraries if the class MatchboxMElP2lJet depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMatchbox.so"; } }; /** @endcond */ } #endif /* HERWIG_MatchboxMElP2lJet_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/Makefile.in����������������������������0000644�0001750�0001750�00000047613�11756461700�026741� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/Matchbox/Builtin/Processes DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwMatchboxBuiltinProcesses_la_LIBADD = am_libHwMatchboxBuiltinProcesses_la_OBJECTS = MatchboxMElg2lqqbar.lo \ MatchboxMEllbar2qqbar.lo MatchboxMEllbar2qqbarg.lo \ MatchboxMEllbarqqbar.lo MatchboxMEllbarqqbarg.lo \ MatchboxMElP2lJet.lo MatchboxMElP2lJetJet.lo \ MatchboxMElq2lqg.lo MatchboxMEPP2llbar.lo \ MatchboxMEPP2llbarJet.lo MatchboxMEqg2llbarq.lo \ MatchboxMEqqbar2llbarg.lo libHwMatchboxBuiltinProcesses_la_OBJECTS = \ $(am_libHwMatchboxBuiltinProcesses_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwMatchboxBuiltinProcesses_la_SOURCES) DIST_SOURCES = $(libHwMatchboxBuiltinProcesses_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwMatchboxBuiltinProcesses.la libHwMatchboxBuiltinProcesses_la_SOURCES = \ MatchboxMElg2lqqbar.cc \ MatchboxMElg2lqqbar.h \ MatchboxMEllbar2qqbar.cc \ MatchboxMEllbar2qqbarg.cc \ MatchboxMEllbar2qqbarg.h \ MatchboxMEllbar2qqbar.h \ MatchboxMEllbarqqbar.cc \ MatchboxMEllbarqqbarg.cc \ MatchboxMEllbarqqbarg.h \ MatchboxMEllbarqqbar.h \ MatchboxMElP2lJet.cc \ MatchboxMElP2lJet.h \ MatchboxMElP2lJetJet.cc \ MatchboxMElP2lJetJet.h \ MatchboxMElq2lqg.cc \ MatchboxMElq2lqg.h \ MatchboxMEPP2llbar.cc \ MatchboxMEPP2llbar.h \ MatchboxMEPP2llbarJet.cc \ MatchboxMEPP2llbarJet.h \ MatchboxMEqg2llbarq.cc \ MatchboxMEqg2llbarq.h \ MatchboxMEqqbar2llbarg.cc \ MatchboxMEqqbar2llbarg.h all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/Matchbox/Builtin/Processes/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/Matchbox/Builtin/Processes/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwMatchboxBuiltinProcesses.la: $(libHwMatchboxBuiltinProcesses_la_OBJECTS) $(libHwMatchboxBuiltinProcesses_la_DEPENDENCIES) $(EXTRA_libHwMatchboxBuiltinProcesses_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwMatchboxBuiltinProcesses_la_OBJECTS) $(libHwMatchboxBuiltinProcesses_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxMEPP2llbar.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxMEPP2llbarJet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxMElP2lJet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxMElP2lJetJet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxMElg2lqqbar.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxMEllbar2qqbar.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxMEllbar2qqbarg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxMEllbarqqbar.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxMEllbarqqbarg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxMElq2lqg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxMEqg2llbarq.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxMEqqbar2llbarg.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ���������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbar2qqbar.h����������������0000644�0001750�0001750�00000020002�11754474775�031157� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEllbar2qqbar.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxMEllbar2qqbar_H #define HERWIG_MatchboxMEllbar2qqbar_H // // MatchboxMEllbar2qqbar // #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxMEBase.h" #include "Herwig++/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbarqqbar.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer, Martin Stoll * * \brief MatchboxMEllbar2qqbar implements the * matrix element for charged lepton annihilation * into a light q qbar pair. * * @see \ref MatchboxMEllbar2qqbarInterfaces "The interfaces" * defined for MatchboxMEllbar2qqbar. */ class MatchboxMEllbar2qqbar: public MatchboxMEBase, public MatchboxMEllbarqqbar { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxMEllbar2qqbar(); /** * The destructor. */ virtual ~MatchboxMEllbar2qqbar(); //@} public: /** * Return the order in \f$\alpha_S\f$ in which this matrix element * is given. */ virtual unsigned int orderInAlphaS() const { return 0; } /** * Return the order in \f$\alpha_{EM}\f$ in which this matrix * element is given. Returns 0. */ virtual unsigned int orderInAlphaEW() const { return 2; } /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Evaluate the finite virtual correction for the * variables supplied through the Born XComb object * and possible additional random numbers. */ virtual double oneLoopInterference() const; /** * Return true, if this matrix element is capable of calculating * one-loop (QCD) corrections. */ virtual bool haveOneLoop() const { return true; }; /** * Return true, if one loop corrections have been calculated in * dimensional reduction. Otherwise conventional dimensional * regularization is assumed. Note that renormalization is always * assumed to be MSbar. */ virtual bool isDR() const { return false; } /** * Return true, if one loop corrections are given in the conventions * of the integrated dipoles. */ virtual bool isCS() const { return true; } /** * Return the renormalization scale for the last generated phasespace point. */ virtual Energy2 factorizationScale() const; /** * Return the renormalization scale for the last generated phasespace point. */ virtual Energy2 renormalizationScale() const; /** * Return the number of light flavours, this matrix * element is calculated for. */ virtual unsigned int nLight() const { return theQuarkFlavours.size(); } /** * Return true, if this matrix element provides the PDF * weight for the first incoming parton itself. */ virtual bool havePDFWeight1() const { return false; } /** * Return true, if this matrix element provides the PDF * weight for the second incoming parton itself. */ virtual bool havePDFWeight2() const { return false; } /** * Return the colour correlated matrix element squared with * respect to the given two partons as appearing in mePartonData(), * suitably scaled by sHat() to give a dimension-less number. */ virtual double colourCorrelatedME2(pair<int,int>) const; /** * Return the colour and spin correlated matrix element squared for * the gluon indexed by the first argument using the given * correlation tensor. */ virtual double spinColourCorrelatedME2(pair<int,int> emitterSpectator, const SpinCorrelationTensor& c) const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * With the information previously supplied with the * setKinematics(...) method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector &) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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 lepton flavours to be considered. */ PDVector theLeptonFlavours; /** * The quark flavours to be considered. */ PDVector theQuarkFlavours; /** * A user defined scale; if zero, the center of mass * energy is used. */ Energy theUserScale; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MatchboxMEllbar2qqbar> initMatchboxMEllbar2qqbar; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxMEllbar2qqbar & operator=(const MatchboxMEllbar2qqbar &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MatchboxMEllbar2qqbar. */ template <> struct BaseClassTrait<Herwig::MatchboxMEllbar2qqbar,1> { /** Typedef of the first base class of MatchboxMEllbar2qqbar. */ typedef Herwig::MatchboxMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MatchboxMEllbar2qqbar class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MatchboxMEllbar2qqbar> : public ClassTraitsBase<Herwig::MatchboxMEllbar2qqbar> { /** Return a platform-independent class name */ static string className() { return "Herwig::MatchboxMEllbar2qqbar"; } /** * The name of a file containing the dynamic library where the class * MatchboxMEllbar2qqbar is implemented. It may also include several, space-separated, * libraries if the class MatchboxMEllbar2qqbar depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMatchbox.so"; } }; /** @endcond */ } #endif /* HERWIG_MatchboxMEllbar2qqbar_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMElP2lJet.cc�������������������0000644�0001750�0001750�00000013075�11754474775�030400� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMElP2lJet.cc.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxMElP2lJet class. // #include "MatchboxMElP2lJet.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; MatchboxMElP2lJet::MatchboxMElP2lJet() : MatchboxMEBase(), theUserScale(0.0*GeV) {} MatchboxMElP2lJet::~MatchboxMElP2lJet() {} IBPtr MatchboxMElP2lJet::clone() const { return new_ptr(*this); } IBPtr MatchboxMElP2lJet::fullclone() const { return new_ptr(*this); } double MatchboxMElP2lJet::me2() const { if ( matchboxAmplitude() ) return MatchboxMEBase::me2(); double res; if ( !calculateME2(res) ) return res; Lorentz5Momentum pq = mePartonData()[1]->id() > 0 ? meMomenta()[3] : meMomenta()[1]; if ( mePartonData()[1]->id() < 0 ) pq = -pq; Lorentz5Momentum pqbar = mePartonData()[1]->id() < 0 ? meMomenta()[3] : meMomenta()[1]; if ( mePartonData()[1]->id() > 0 ) pqbar = -pqbar; Lorentz5Momentum pl = mePartonData()[0]->id() > 0 ? meMomenta()[2] : meMomenta()[0]; if ( mePartonData()[0]->id() < 0 ) pl = -pl; Lorentz5Momentum plbar = mePartonData()[0]->id() < 0 ? meMomenta()[2] : meMomenta()[0]; if ( mePartonData()[0]->id() > 0 ) plbar = -plbar; prepare(pl,plbar,pq,pqbar,lastSHat(),mePartonData()[0],mePartonData()[1]); lastME2(evaluateME2()*me2Norm()); cacheME2(lastME2()); logME2(); return lastME2(); } Energy2 MatchboxMElP2lJet::factorizationScale() const { if ( theUserScale != ZERO ) return sqr(theUserScale); return -(meMomenta()[0]-meMomenta()[2]).m2(); } Energy2 MatchboxMElP2lJet::renormalizationScale() const { if ( theUserScale != ZERO ) return sqr(theUserScale); return -(meMomenta()[0]-meMomenta()[2]).m2(); } double MatchboxMElP2lJet::colourCorrelatedME2(pair<int,int> ij) const { if ( matchboxAmplitude() ) return MatchboxMEBase::colourCorrelatedME2(ij); if ( !((ij.first == 1 && ij.second == 3) || (ij.second == 1 && ij.first == 3) ) ) { generator()->logWarning(Exception() << "A non-exisiting colour correlation was requested " << "from the matrix element '" << name() << "'." << Exception::warning); lastME2(0.0); return lastME2(); } return -me2(); } double MatchboxMElP2lJet::spinColourCorrelatedME2(pair<int,int>, const SpinCorrelationTensor&) const { generator()->logWarning(Exception() << "A non-exisiting spin correlation was requested " << "from the matrix element '" << name() << "'." << Exception::warning); lastME2(0.0); return lastME2(); } void MatchboxMElP2lJet::getDiagrams() const { tcPDPtr gamma = getParticleData(ParticleID::gamma); tcPDPtr Z0 = getParticleData(ParticleID::Z0); for ( PDVector::const_iterator l = theLeptonFlavours.begin(); l != theLeptonFlavours.end(); ++l ) for ( PDVector::const_iterator q = theQuarkFlavours.begin(); q != theQuarkFlavours.end(); ++q ) { add(new_ptr((Tree2toNDiagram(3), *l, gamma, *q, 1, *l, 2, *q, -1))); add(new_ptr((Tree2toNDiagram(3), *l, Z0, *q, 1, *l, 2, *q, -2))); } } Selector<const ColourLines *> MatchboxMElP2lJet::colourGeometries(tcDiagPtr) const { static const ColourLines c("3 5"); static const ColourLines cbar("-5 -3"); Selector<const ColourLines *> sel; if ( mePartonData()[1]->id() > 0 ) sel.insert(1.0, &c); else sel.insert(1.0, &cbar); return sel; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxMElP2lJet::doinit() { MatchboxMEBase::doinit(); MatchboxMEllbarqqbar::doinit(*this); } void MatchboxMElP2lJet::persistentOutput(PersistentOStream & os) const { MatchboxMEllbarqqbar::persistentOutput(os); os << theLeptonFlavours << theQuarkFlavours << ounit(theUserScale,GeV); } void MatchboxMElP2lJet::persistentInput(PersistentIStream & is, int) { MatchboxMEllbarqqbar::persistentInput(is); is >> theLeptonFlavours >> theQuarkFlavours >> iunit(theUserScale,GeV); } ClassDescription<MatchboxMElP2lJet> MatchboxMElP2lJet::initMatchboxMElP2lJet; // Definition of the static class description member. void MatchboxMElP2lJet::Init() { static ClassDocumentation<MatchboxMElP2lJet> documentation ("MatchboxMElP2lJet"); static RefVector<MatchboxMElP2lJet,ParticleData> interfaceLeptonFlavours ("LeptonFlavours", "The lepton flavours for this matrix element.", &MatchboxMElP2lJet::theLeptonFlavours, -1, false, false, true, true, false); static RefVector<MatchboxMElP2lJet,ParticleData> interfaceQuarkFlavours ("QuarkFlavours", "The quark flavours for this matrix element.", &MatchboxMElP2lJet::theQuarkFlavours, -1, false, false, true, true, false); static Parameter<MatchboxMElP2lJet,Energy> interfaceUserScale ("UserScale", "A user defined renormalization scale.", &MatchboxMElP2lJet::theUserScale, GeV, 0.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbarqqbar.cc����������������0000644�0001750�0001750�00000011576�11754474775�031253� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEllbarqqbar.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #include "MatchboxMEllbarqqbar.h" using namespace Herwig; using namespace SpinorHelicity; void MatchboxMEllbarqqbar::doinit(const HandlerBase& h) { // make sure this is initialized, as it may not have happened // before we get here due to the preinitRegister fiddling // for the dipoles h.generator()->standardModel()->init(); // Vff = ie \gamma^\mu ( v_V - a_V\gamma^5 ) with e > 0 // v_Z = (I_3 - 2 s^2 Q)/(2 s c) , a_Z = I_3/(2 s c) // v_\gamma = -Q , a_\gamma = 0 BMass = h.getParticleData(ParticleID::Z0)->mass(); BWidth = h.getParticleData(ParticleID::Z0)->width(); Nc = h.generator()->standardModel()->Nc(); alphaS = h.generator()->standardModel()->alphaS(); double s2tW = h.generator()->standardModel()->sin2ThetaW(); double thetaWFactor = 4.*sqrt(s2tW*(1.-s2tW)); double alphaEM = h.generator()->standardModel()->alphaEM(); double alphaEMFactor = sqrt(4.*Constants::pi*alphaEM); el = - h.generator()->standardModel()->ee() * alphaEMFactor; vl = h.generator()->standardModel()->ve() * alphaEMFactor/thetaWFactor; al = h.generator()->standardModel()->ae() * alphaEMFactor/thetaWFactor; quarkQEDCouplings = make_pair(- h.generator()->standardModel()->eu() * alphaEMFactor, - h.generator()->standardModel()->ed() * alphaEMFactor); quarkVectorCouplings = make_pair(h.generator()->standardModel()->vu() * alphaEMFactor/thetaWFactor, h.generator()->standardModel()->vd() * alphaEMFactor/thetaWFactor); quarkAxialCouplings = make_pair(h.generator()->standardModel()->au() * alphaEMFactor/thetaWFactor, h.generator()->standardModel()->ad() * alphaEMFactor/thetaWFactor); nPoints(4); } void MatchboxMEllbarqqbar::persistentOutput(PersistentOStream & os) const { os << ounit(BMass,GeV) << ounit(BWidth,GeV) << Nc << alphaS << el << vl << al << quarkQEDCouplings << quarkVectorCouplings << quarkAxialCouplings; } void MatchboxMEllbarqqbar::persistentInput(PersistentIStream & is) { is >> iunit(BMass,GeV) >> iunit(BWidth,GeV) >> Nc >> alphaS >> el >> vl >> al >> quarkQEDCouplings >> quarkVectorCouplings >> quarkAxialCouplings; nPoints(4); } void MatchboxMEllbarqqbar::prepare(const Lorentz5Momentum& pl, const Lorentz5Momentum& plbar, const Lorentz5Momentum& pq, const Lorentz5Momentum& pqbar, Energy2 sHat, cPDPtr lData, cPDPtr lbarData, cPDPtr qData, cPDPtr qbarData) const { amplitudeScale(sqrt(sHat)); momentum(0,pl,false,lData->mass()); momentum(1,plbar,false,lbarData->mass()); momentum(2,pq,false,qData->mass()); momentum(3,pqbar,false,qbarData->mass()); eq = abs(qData->id()) % 2 == 0 ? quarkQEDCouplings.first : quarkQEDCouplings.second; vq = abs(qData->id()) % 2 == 0 ? quarkVectorCouplings.first : quarkVectorCouplings.second; aq = abs(qData->id()) % 2 == 0 ? quarkAxialCouplings.first : quarkAxialCouplings.second; } double MatchboxMEllbarqqbar::evaluateME2(bool photon) const { double xQ2 = (momentum(0)+momentum(1)).m2(); double M2 = sqr(BMass/amplitudeScale()); double G2 = sqr(BWidth/amplitudeScale()); double BB = 8*(4*al*aq*vl*vq*(-(invariant(0,3)*invariant(1,2)) + invariant(0,2)*invariant(1,3)) + (invariant(0,3)*invariant(1,2) + invariant(0,2)*invariant(1,3) + 2*invariant(2,3)*mass(0)*mass(1) - 2*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3))*sqr(aq)*sqr(vl) + (invariant(0,3)*invariant(1,2) + invariant(0,2)*invariant(1,3) + 2*invariant(2,3)*mass(0)*mass(1) + 2*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3))*sqr(vl)*sqr(vq) + sqr(al)*((invariant(0,3)*invariant(1,2) + invariant(0,2)*invariant(1,3) - 2*invariant(2,3)*mass(0)*mass(1) - 2*(invariant(0,1) - 4*mass(0)*mass(1))*mass(2)*mass(3))*sqr(aq) + (invariant(0,3)*invariant(1,2) + invariant(0,2)*invariant(1,3) + 2*invariant(0,1)*mass(2)*mass(3) - 2*mass(0)*mass(1)*(invariant(2,3) + 4*mass(2)*mass(3)))*sqr(vq))); double res = BB / ( sqr(xQ2-M2) + M2*G2 ); if ( photon ) { double PP = 8*(invariant(0,3)*invariant(1,2) + invariant(0,2)*invariant(1,3) + 2*invariant(2,3)*mass(0)*mass(1) + 2*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3))*sqr(el)*sqr(eq); double PB = 8*el*eq*(al*aq*(-(invariant(0,3)*invariant(1,2)) + invariant(0,2)*invariant(1,3)) + vl*vq*(invariant(0,3)*invariant(1,2) + invariant(0,2)*invariant(1,3) + 2*invariant(2,3)*mass(0)*mass(1) + 2*(invariant(0,1) + 4*mass(0)*mass(1))*mass(2)*mass(3))); res += PP / sqr(xQ2) + 2.*(1.-M2/xQ2)*PB / ( sqr(xQ2-M2) + M2*G2 ); } return Nc*res; } ����������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMElq2lqg.h���������������������0000644�0001750�0001750�00000010641�11754474775�030164� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMElq2lqg.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxMElq2lqg_H #define HERWIG_MatchboxMElq2lqg_H // // This is the declaration of the MatchboxMElq2lqg class. // #include "Herwig++/MatrixElement/Matchbox/Builtin/Processes/MatchboxMElP2lJetJet.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxMElq2lqg implements the matrix element * for charged lepton + quark -> charged lepton + quark + gluon * */ class MatchboxMElq2lqg: public MatchboxMElP2lJetJet { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxMElq2lqg(); /** * The destructor. */ virtual ~MatchboxMElq2lqg(); //@} public: /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MatchboxMElq2lqg> initMatchboxMElq2lqg; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxMElq2lqg & operator=(const MatchboxMElq2lqg &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MatchboxMElq2lqg. */ template <> struct BaseClassTrait<Herwig::MatchboxMElq2lqg,1> { /** Typedef of the first base class of MatchboxMElq2lqg. */ typedef Herwig::MatchboxMElP2lJetJet NthBase; }; /** This template specialization informs ThePEG about the name of * the MatchboxMElq2lqg class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MatchboxMElq2lqg> : public ClassTraitsBase<Herwig::MatchboxMElq2lqg> { /** Return a platform-independent class name */ static string className() { return "Herwig::MatchboxMElq2lqg"; } /** * The name of a file containing the dynamic library where the class * MatchboxMElq2lqg is implemented. It may also include several, space-separated, * libraries if the class MatchboxMElq2lqg depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMatchbox.so"; } }; /** @endcond */ } #endif /* HERWIG_MatchboxMElq2lqg_H */ �����������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbar2qqbar.cc���������������0000644�0001750�0001750�00000020344�11756364747�031325� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEllbar2qqbar.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxMEllbar2qqbar class. // #include "MatchboxMEllbar2qqbar.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include <gsl/gsl_sf_dilog.h> using namespace Herwig; MatchboxMEllbar2qqbar::MatchboxMEllbar2qqbar() : MatchboxMEBase(), theUserScale(0.0*GeV) {} MatchboxMEllbar2qqbar::~MatchboxMEllbar2qqbar() {} IBPtr MatchboxMEllbar2qqbar::clone() const { return new_ptr(*this); } IBPtr MatchboxMEllbar2qqbar::fullclone() const { return new_ptr(*this); } double MatchboxMEllbar2qqbar::me2() const { if ( matchboxAmplitude() ) return MatchboxMEBase::me2(); double res; if ( !calculateME2(res) ) return res; Lorentz5Momentum pq = mePartonData()[2]->id() > 0 ? meMomenta()[2] : meMomenta()[3]; Lorentz5Momentum pqbar = mePartonData()[2]->id() > 0 ? meMomenta()[3] : meMomenta()[2]; Lorentz5Momentum pl = mePartonData()[0]->id() > 0 ? - meMomenta()[1] : - meMomenta()[0]; Lorentz5Momentum plbar = mePartonData()[0]->id() > 0 ? - meMomenta()[0] : - meMomenta()[1]; prepare(pl,plbar,pq,pqbar,lastSHat(),mePartonData()[0],mePartonData()[2]); lastME2(evaluateME2()*me2Norm()); cacheME2(lastME2()); logME2(); return lastME2(); } double MatchboxMEllbar2qqbar::oneLoopInterference() const { // case of massless quarks stolen from MatchboxMEllbarqqbarVirtual::me2() if ( mass(2)==0 && mass(3)==0 ) { return (lastAlphaS()/(2.*Constants::pi)) * ((SM().Nc()*SM().Nc()-1.0)/(2.*SM().Nc())) * ( sqr(Constants::pi) - 8. ) * me2(); } // massive quarks (same mass) & massless leptons // taken from Jersak,Laermann,Zerwas, Phys.Rev.D 25, pp.1218-1228 double v = sqrt( 1.-4*sqr(mass(2)) ); double realf1 = (SM().Nc()*SM().Nc()-1.0)/(2.*SM().Nc()) * lastAlphaS()/(2*Constants::pi) * ( -2 - (1.+2.*v*v)/(2*v)*log((1.-v)/(1.+v)) + (1.+v*v)/v * ( gsl_sf_dilog((1.-v)/(1.+v)) + sqr(Constants::pi)/3. - 1./4.*sqr(log((1.-v)/(1.+v))) + log((1.-v)/(1.+v))*log(2.*v/(1.+v)) ) // last term from different rausziehen of eps terms (right scaling of mass???) // -(1.+(1.+v*v)/(2.*v)*log((1.-v)/(1.+v))) * log(1./sqr(mass(2))) ); // +(1.+(1.+v*v)/(2.*v)*log((1.-v)/(1.+v))) * log(s/(4.*Constants::pi*renScale*renScale)) ); -(1.+(1.+v*v)/(2.*v)*log((1.-v)/(1.+v))) * log(4./(1.-v*v)) ); double realf2 = (SM().Nc()*SM().Nc()-1.0)/(2.*SM().Nc()) * lastAlphaS()/(2*Constants::pi) * (1.-v*v)/(2.*v) * log((1.-v)/(1.+v)); double imagf2 = (SM().Nc()*SM().Nc()-1.0)/(2.*SM().Nc()) * lastAlphaS()/(2*Constants::pi) * (1.-v*v)/(2*v) * Constants::pi; double xQ2 = (momentum(0)+momentum(1)).m2(); double M2 = sqr(BMass/amplitudeScale()); double G2 = sqr(BWidth/amplitudeScale()); double sVV = 32./3.*SM().Nc()/v * ( M2*(G2+M2)*sqr(el)*sqr(eq) - 2.*M2*el*eq*(vl*vq+el*eq)*xQ2 + (sqr(al)*sqr(vq)+sqr(vl*vq+el*eq))*sqr(xQ2) ) / ( sqr(xQ2-M2) + M2*G2 ); double sAA = 32./3.*SM().Nc()/v * sqr(aq)*(sqr(al)*sqr(vl))*sqr(xQ2) / ( sqr(xQ2-M2) + M2*G2 ); double sVA = 64./3.*SM().Nc()/v * ( 2.*vl*vq*xQ2 + el*eq*(xQ2-M2) ) / ( sqr(xQ2-M2) + M2*G2 ); double sVAprime = 64./3.*SM().Nc()/v * al*aq*el*eq*sqrt(G2)*sqrt(M2) / ( sqr(xQ2-M2) + M2*G2 ); double cost = ( -1. + 2.*invariant(0,2) ) / sqrt( (1.-4.*sqr(mass(0))) * (1.-4.*sqr(mass(2))) ); return 2.*realf1*me2() + 3./8.*(1.+sqr(cost)) * 2.*v*realf2*(sVV-v*v*sAA) + 3./4.*(1.-sqr(cost)) * v*realf2*sVV + 3./4.*cost*v*v*sVA * (-2)*v*v*sVAprime*imagf2; } Energy2 MatchboxMEllbar2qqbar::factorizationScale() const { if ( theUserScale != ZERO ) return sqr(theUserScale); return lastSHat(); } Energy2 MatchboxMEllbar2qqbar::renormalizationScale() const { if ( theUserScale != ZERO ) return sqr(theUserScale); return lastSHat(); } double MatchboxMEllbar2qqbar::colourCorrelatedME2(pair<int,int> ij) const { if ( matchboxAmplitude() ) return MatchboxMEBase::colourCorrelatedME2(ij); if ( ij.first == ij.second || ij.first < 2 || ij.first > 3 || ij.second < 2 || ij.second > 3 ) { generator()->logWarning(Exception() << "A non-exisiting colour correlation was requested " << "from the matrix element '" << name() << "'." << Exception::warning); lastME2(0.0); return lastME2(); } return -me2(); } double MatchboxMEllbar2qqbar::spinColourCorrelatedME2(pair<int,int>, const SpinCorrelationTensor&) const { generator()->logWarning(Exception() << "A non-exisiting spin correlation was requested " << "from the matrix element '" << name() << "'." << Exception::warning); lastME2(0.0); return lastME2(); } void MatchboxMEllbar2qqbar::getDiagrams() const { tcPDPtr gamma = getParticleData(ParticleID::gamma); tcPDPtr Z0 = getParticleData(ParticleID::Z0); for ( PDVector::const_iterator l = theLeptonFlavours.begin(); l != theLeptonFlavours.end(); ++l ) for ( PDVector::const_iterator q = theQuarkFlavours.begin(); q != theQuarkFlavours.end(); ++q ) { add(new_ptr((Tree2toNDiagram(2), *l, (**l).CC(), 1, gamma, 3, *q, 3, (**q).CC(), -1))); add(new_ptr((Tree2toNDiagram(2), *l, (**l).CC(), 1, Z0, 3, *q, 3, (**q).CC(), -2))); } } Selector<MEBase::DiagramIndex> MatchboxMEllbar2qqbar::diagrams(const DiagramVector &) const { Selector<MEBase::DiagramIndex> sel; tcPDPtr Z0 = getParticleData(ParticleID::Z0); double wGamma = sqr( sqr(generator()->maximumCMEnergy())/lastSHat() ); double wZ = sqr( sqr(generator()->maximumCMEnergy()) ) / ( sqr(lastSHat()-sqr(Z0->mass())) + sqr(Z0->mass())*sqr(Z0->width()) ); sel.insert(wGamma,0); sel.insert(wZ,1); return sel; } Selector<const ColourLines *> MatchboxMEllbar2qqbar::colourGeometries(tcDiagPtr) const { static const ColourLines c("4 -5"); static const ColourLines cbar("-4 5"); Selector<const ColourLines *> sel; if ( mePartonData()[2]->id() > 0 ) sel.insert(1.0, &c); else sel.insert(1.0, &cbar); return sel; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxMEllbar2qqbar::doinit() { MatchboxMEBase::doinit(); MatchboxMEllbarqqbar::doinit(*this); } void MatchboxMEllbar2qqbar::persistentOutput(PersistentOStream & os) const { MatchboxMEllbarqqbar::persistentOutput(os); os << theLeptonFlavours << theQuarkFlavours << ounit(theUserScale,GeV); } void MatchboxMEllbar2qqbar::persistentInput(PersistentIStream & is, int) { MatchboxMEllbarqqbar::persistentInput(is); is >> theLeptonFlavours >> theQuarkFlavours >> iunit(theUserScale,GeV); } ClassDescription<MatchboxMEllbar2qqbar> MatchboxMEllbar2qqbar::initMatchboxMEllbar2qqbar; // Definition of the static class description member. void MatchboxMEllbar2qqbar::Init() { static ClassDocumentation<MatchboxMEllbar2qqbar> documentation ("MatchboxMEllbar2qqbar"); static RefVector<MatchboxMEllbar2qqbar,ParticleData> interfaceLeptonFlavours ("LeptonFlavours", "The lepton flavours for this matrix element.", &MatchboxMEllbar2qqbar::theLeptonFlavours, -1, false, false, true, true, false); static RefVector<MatchboxMEllbar2qqbar,ParticleData> interfaceQuarkFlavours ("QuarkFlavours", "The quark flavours for this matrix element.", &MatchboxMEllbar2qqbar::theQuarkFlavours, -1, false, false, true, true, false); static Parameter<MatchboxMEllbar2qqbar,Energy> interfaceUserScale ("UserScale", "A user defined renormalization scale.", &MatchboxMEllbar2qqbar::theUserScale, GeV, 0.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMElg2lqqbar.cc�����������������0000644�0001750�0001750�00000007660�11754474775�031016� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMElg2lqqbar.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxMElg2lqqbar class. // #include "MatchboxMElg2lqqbar.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; MatchboxMElg2lqqbar::MatchboxMElg2lqqbar() : MatchboxMElP2lJetJet() {} MatchboxMElg2lqqbar::~MatchboxMElg2lqqbar() {} IBPtr MatchboxMElg2lqqbar::clone() const { return new_ptr(*this); } IBPtr MatchboxMElg2lqqbar::fullclone() const { return new_ptr(*this); } double MatchboxMElg2lqqbar::me2() const { if ( matchboxAmplitude() ) return MatchboxMEBase::me2(); double res; if ( !calculateME2(res) ) return res; Lorentz5Momentum pq = mePartonData()[3]->id() > 0 ? meMomenta()[3] : meMomenta()[4]; Lorentz5Momentum pqbar = mePartonData()[3]->id() < 0 ? meMomenta()[3] : meMomenta()[4]; Lorentz5Momentum pl = mePartonData()[0]->id() > 0 ? meMomenta()[2] : meMomenta()[0]; if ( mePartonData()[0]->id() < 0 ) pl = -pl; Lorentz5Momentum plbar = mePartonData()[0]->id() < 0 ? meMomenta()[2] : meMomenta()[0]; if ( mePartonData()[0]->id() > 0 ) plbar = -plbar; Lorentz5Momentum pg = -meMomenta()[1]; prepare(pl,plbar,pq,pqbar,pg,lastSHat(),mePartonData()[0],mePartonData()[3]); lastME2(-MatchboxMEllbarqqbarg::evaluateME2()*me2Norm()); cacheME2(lastME2()); logME2(); return lastME2(); } void MatchboxMElg2lqqbar::getDiagrams() const { tcPDPtr g = getParticleData(ParticleID::g); tcPDPtr gamma = getParticleData(ParticleID::gamma); tcPDPtr Z0 = getParticleData(ParticleID::Z0); for ( PDVector::const_iterator l = theLeptonFlavours.begin(); l != theLeptonFlavours.end(); ++l ) for ( PDVector::const_iterator q = theQuarkFlavours.begin(); q != theQuarkFlavours.end(); ++q ) { add(new_ptr((Tree2toNDiagram(4), *l, gamma, (**q).CC(), g, 1, *l, 2, *q, 3, (**q).CC(), -1))); add(new_ptr((Tree2toNDiagram(4), *l, gamma, *q, g, 1, *l, 3, *q, 2, (**q).CC(), -2))); add(new_ptr((Tree2toNDiagram(4), *l, Z0, (**q).CC(), g, 1, *l, 2, *q, 3, (**q).CC(), -1))); add(new_ptr((Tree2toNDiagram(4), *l, Z0, *q, g, 1, *l, 3, *q, 2, (**q).CC(), -2))); } } Selector<const ColourLines *> MatchboxMElg2lqqbar::colourGeometries(tcDiagPtr d) const { static const ColourLines ct("4 -3 6, -4 -7"); static const ColourLines cbart("-4 3 -6, 4 7"); static const ColourLines cu("-4 3 -7, 4 6"); static const ColourLines cbaru("4 -3 7, -4 -6"); Selector<const ColourLines *> sel; if ( mePartonData()[3]->id() > 0 ) { if ( abs(d->id()) % 2 != 0 ) sel.insert(1.0, &ct); else sel.insert(1.0, &cu); } else { if ( abs(d->id()) % 2 != 0 ) sel.insert(1.0, &cbart); else sel.insert(1.0, &cbaru); } return sel; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxMElg2lqqbar::persistentOutput(PersistentOStream &) const { } void MatchboxMElg2lqqbar::persistentInput(PersistentIStream &, int) { } ClassDescription<MatchboxMElg2lqqbar> MatchboxMElg2lqqbar::initMatchboxMElg2lqqbar; // Definition of the static class description member. void MatchboxMElg2lqqbar::Init() { static ClassDocumentation<MatchboxMElg2lqqbar> documentation ("MatchboxMElg2lqqbar"); } ��������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEqg2llbarq.h������������������0000644�0001750�0001750�00000012007�11754474775�030647� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEqg2llbarq.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxMEqg2llbarq_H #define HERWIG_MatchboxMEqg2llbarq_H // // This is the declaration of the MatchboxMEqg2llbarq class. // #include "Herwig++/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEPP2llbarJet.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxMEqg2llbarq implements the matrix element * for quark + gluon -> quark + charged lepton pair * */ class MatchboxMEqg2llbarq: public MatchboxMEPP2llbarJet { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxMEqg2llbarq(); /** * The destructor. */ virtual ~MatchboxMEqg2llbarq(); //@} public: /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * With the information previously supplied with the * setKinematics(...) method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector &) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * Set which of the incoming partons * is the incoming gluon. */ int theWhichGluon; /** * A user defined scale; if zero, the center of mass * energy is used. */ Energy theUserScale; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MatchboxMEqg2llbarq> initMatchboxMEqg2llbarq; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxMEqg2llbarq & operator=(const MatchboxMEqg2llbarq &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MatchboxMEqg2llbarq. */ template <> struct BaseClassTrait<Herwig::MatchboxMEqg2llbarq,1> { /** Typedef of the first base class of MatchboxMEqg2llbarq. */ typedef Herwig::MatchboxMEPP2llbarJet NthBase; }; /** This template specialization informs ThePEG about the name of * the MatchboxMEqg2llbarq class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MatchboxMEqg2llbarq> : public ClassTraitsBase<Herwig::MatchboxMEqg2llbarq> { /** Return a platform-independent class name */ static string className() { return "Herwig::MatchboxMEqg2llbarq"; } /** * The name of a file containing the dynamic library where the class * MatchboxMEqg2llbarq is implemented. It may also include several, space-separated, * libraries if the class MatchboxMEqg2llbarq depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMatchbox.so"; } }; /** @endcond */ } #endif /* HERWIG_MatchboxMEqg2llbarq_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMElg2lqqbar.h������������������0000644�0001750�0001750�00000010736�11754474775�030656� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMElg2lqqbar.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxMElg2lqqbar_H #define HERWIG_MatchboxMElg2lqqbar_H // // This is the declaration of the MatchboxMElg2lqqbar class. // #include "Herwig++/MatrixElement/Matchbox/Builtin/Processes/MatchboxMElP2lJetJet.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxMElg2lqqbar implements the matrix element * for charged lepton + gluon -> charged lepton + q + qbar * */ class MatchboxMElg2lqqbar: public MatchboxMElP2lJetJet { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxMElg2lqqbar(); /** * The destructor. */ virtual ~MatchboxMElg2lqqbar(); //@} public: /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MatchboxMElg2lqqbar> initMatchboxMElg2lqqbar; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxMElg2lqqbar & operator=(const MatchboxMElg2lqqbar &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MatchboxMElg2lqqbar. */ template <> struct BaseClassTrait<Herwig::MatchboxMElg2lqqbar,1> { /** Typedef of the first base class of MatchboxMElg2lqqbar. */ typedef Herwig::MatchboxMElP2lJetJet NthBase; }; /** This template specialization informs ThePEG about the name of * the MatchboxMElg2lqqbar class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MatchboxMElg2lqqbar> : public ClassTraitsBase<Herwig::MatchboxMElg2lqqbar> { /** Return a platform-independent class name */ static string className() { return "Herwig::MatchboxMElg2lqqbar"; } /** * The name of a file containing the dynamic library where the class * MatchboxMElg2lqqbar is implemented. It may also include several, space-separated, * libraries if the class MatchboxMElg2lqqbar depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMatchbox.so"; } }; /** @endcond */ } #endif /* HERWIG_MatchboxMElg2lqqbar_H */ ����������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbar2qqbarg.h���������������0000644�0001750�0001750�00000020034�11754474775�031333� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEllbar2qqbarg.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxMEllbar2qqbarg_H #define HERWIG_MatchboxMEllbar2qqbarg_H // // This is the declaration of the MatchboxMEllbar2qqbarg class. // #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxMEBase.h" #include "Herwig++/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbarqqbarg.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer, Martin Stoll * * \brief MatchboxMEllbar2qqbarg implements the * matrix element for charged lepton annihilation * into a light q qbar pair and a gluon. * * @see \ref MatchboxMEllbar2qqbargInterfaces "The interfaces" * defined for MatchboxMEllbar2qqbarg. */ class MatchboxMEllbar2qqbarg: public MatchboxMEBase, public MatchboxMEllbarqqbarg { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxMEllbar2qqbarg(); /** * The destructor. */ virtual ~MatchboxMEllbar2qqbarg(); //@} public: /** * The number of internal degreed of freedom used in the matrix * element. */ virtual int nDim() const { return phasespace() ? phasespace()->nDim(3) : 5; } /** * Return the order in \f$\alpha_S\f$ in which this matrix element * is given. */ virtual unsigned int orderInAlphaS() const { return 1; } /** * Return the order in \f$\alpha_{EM}\f$ in which this matrix * element is given. Returns 0. */ virtual unsigned int orderInAlphaEW() const { return 2; } /** * Generate internal degrees of freedom given nDim() uniform random * numbers in the interval ]0,1[. To help the phase space generator, * the 'dSigHatDR' should be a smooth function of these numbers, * although this is not strictly necessary. The return value should * be true of the generation succeeded. If so the generated momenta * should be stored in the meMomenta() vector. Derived classes * must call this method once internal degrees of freedom are setup * and finally return the result of this method. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the renormalization scale for the last generated phasespace point. */ virtual Energy2 factorizationScale() const; /** * Return the renormalization scale for the last generated phasespace point. */ virtual Energy2 renormalizationScale() const; /** * Return the number of light flavours, this matrix * element is calculated for. */ virtual unsigned int nLight() const { return theQuarkFlavours.size(); } /** * Return true, if this matrix element provides the PDF * weight for the first incoming parton itself. */ virtual bool havePDFWeight1() const { return false; } /** * Return true, if this matrix element provides the PDF * weight for the second incoming parton itself. */ virtual bool havePDFWeight2() const { return false; } /** * Return the colour correlated matrix element squared with * respect to the given two partons as appearing in mePartonData(), * suitably scaled by sHat() to give a dimension-less number. */ virtual double colourCorrelatedME2(pair<int,int>) const; /** * Return the colour and spin correlated matrix element squared for * the gluon indexed by the first argument using the given * correlation tensor. */ virtual double spinColourCorrelatedME2(pair<int,int> emitterSpectator, const SpinCorrelationTensor& c) const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * With the information previously supplied with the * setKinematics(...) method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector &) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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 lepton flavours to be considered. */ PDVector theLeptonFlavours; /** * The quark flavours to be considered. */ PDVector theQuarkFlavours; /** * A user defined scale; if zero, the center of mass * energy is used. */ Energy theUserScale; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MatchboxMEllbar2qqbarg> initMatchboxMEllbar2qqbarg; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxMEllbar2qqbarg & operator=(const MatchboxMEllbar2qqbarg &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MatchboxMEllbar2qqbarg. */ template <> struct BaseClassTrait<Herwig::MatchboxMEllbar2qqbarg,1> { /** Typedef of the first base class of MatchboxMEllbar2qqbarg. */ typedef Herwig::MatchboxMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MatchboxMEllbar2qqbarg class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MatchboxMEllbar2qqbarg> : public ClassTraitsBase<Herwig::MatchboxMEllbar2qqbarg> { /** Return a platform-independent class name */ static string className() { return "Herwig::MatchboxMEllbar2qqbarg"; } /** * The name of a file containing the dynamic library where the class * MatchboxMEllbar2qqbarg is implemented. It may also include several, space-separated, * libraries if the class MatchboxMEllbar2qqbarg depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMatchbox.so"; } }; /** @endcond */ } #endif /* HERWIG_MatchboxMEllbar2qqbarg_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/Makefile.am����������������������������0000644�0001750�0001750�00000001275�11754474775�026740� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwMatchboxBuiltinProcesses.la libHwMatchboxBuiltinProcesses_la_SOURCES = \ MatchboxMElg2lqqbar.cc \ MatchboxMElg2lqqbar.h \ MatchboxMEllbar2qqbar.cc \ MatchboxMEllbar2qqbarg.cc \ MatchboxMEllbar2qqbarg.h \ MatchboxMEllbar2qqbar.h \ MatchboxMEllbarqqbar.cc \ MatchboxMEllbarqqbarg.cc \ MatchboxMEllbarqqbarg.h \ MatchboxMEllbarqqbar.h \ MatchboxMElP2lJet.cc \ MatchboxMElP2lJet.h \ MatchboxMElP2lJetJet.cc \ MatchboxMElP2lJetJet.h \ MatchboxMElq2lqg.cc \ MatchboxMElq2lqg.h \ MatchboxMEPP2llbar.cc \ MatchboxMEPP2llbar.h \ MatchboxMEPP2llbarJet.cc \ MatchboxMEPP2llbarJet.h \ MatchboxMEqg2llbarq.cc \ MatchboxMEqg2llbarq.h \ MatchboxMEqqbar2llbarg.cc \ MatchboxMEqqbar2llbarg.h �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEPP2llbarJet.h����������������0000644�0001750�0001750�00000015074�11754474775�031050� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEPP2llbarJet.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxMEPP2llbarJet_H #define HERWIG_MatchboxMEPP2llbarJet_H // // This is the declaration of the MatchboxMEPP2llbarJet class. // #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxMEBase.h" #include "Herwig++/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbarqqbarg.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxMEPP2llbarJet implements charged lepton * pair plus jet production in hadron-hadron collisions. * * @see \ref MatchboxMEPP2llbarJetInterfaces "The interfaces" * defined for MatchboxMEPP2llbarJet. */ class MatchboxMEPP2llbarJet: public MatchboxMEBase, public MatchboxMEllbarqqbarg { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxMEPP2llbarJet(); /** * The destructor. */ virtual ~MatchboxMEPP2llbarJet(); //@} public: /** * The number of internal degreed of freedom used in the matrix * element. */ virtual int nDim() const { return phasespace() ? phasespace()->nDim(3) : 5; } /** * Return the order in \f$\alpha_S\f$ in which this matrix element * is given. */ virtual unsigned int orderInAlphaS() const { return 1; } /** * Return the order in \f$\alpha_{EM}\f$ in which this matrix * element is given. Returns 0. */ virtual unsigned int orderInAlphaEW() const { return 2; } /** * Generate internal degrees of freedom given nDim() uniform random * numbers in the interval ]0,1[. To help the phase space generator, * the 'dSigHatDR' should be a smooth function of these numbers, * although this is not strictly necessary. The return value should * be true of the generation succeeded. If so the generated momenta * should be stored in the meMomenta() vector. Derived classes * must call this method once internal degrees of freedom are setup * and finally return the result of this method. */ virtual bool generateKinematics(const double * r); /** * Return the renormalization scale for the last generated phasespace point. */ virtual Energy2 factorizationScale() const; /** * Return the renormalization scale for the last generated phasespace point. */ virtual Energy2 renormalizationScale() const; /** * Return the number of light flavours, this matrix * element is calculated for. */ virtual unsigned int nLight() const { return theQuarkFlavours.size(); } /** * Return the colour correlated matrix element squared with * respect to the given two partons as appearing in mePartonData(), * suitably scaled by sHat() to give a dimension-less number. */ virtual double colourCorrelatedME2(pair<int,int>) const; /** * Return the colour and spin correlated matrix element squared for * the gluon indexed by the first argument with and the * given correlation tensor build as p1^\mu p2^\nu */ virtual double spinColourCorrelatedME2(pair<int,int> emitterSpectator, const SpinCorrelationTensor& p2) 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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(); //@} protected: /** * The lepton flavours to be considered. */ PDVector theLeptonFlavours; /** * The quark flavours to be considered. */ PDVector theQuarkFlavours; /** * The Z mass squared */ Energy2 theZMass2; /** * The Z width squared */ Energy2 theZWidth2; private: /** * A user defined scale; if zero, the center of mass * energy is used. */ Energy theUserScale; private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<MatchboxMEPP2llbarJet> initMatchboxMEPP2llbarJet; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxMEPP2llbarJet & operator=(const MatchboxMEPP2llbarJet &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MatchboxMEPP2llbarJet. */ template <> struct BaseClassTrait<Herwig::MatchboxMEPP2llbarJet,1> { /** Typedef of the first base class of MatchboxMEPP2llbarJet. */ typedef Herwig::MatchboxMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MatchboxMEPP2llbarJet class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MatchboxMEPP2llbarJet> : public ClassTraitsBase<Herwig::MatchboxMEPP2llbarJet> { /** Return a platform-independent class name */ static string className() { return "Herwig::MatchboxMEPP2llbarJet"; } /** * The name of a file containing the dynamic library where the class * MatchboxMEPP2llbarJet is implemented. It may also include several, space-separated, * libraries if the class MatchboxMEPP2llbarJet depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMatchbox.so"; } }; /** @endcond */ } #endif /* HERWIG_MatchboxMEPP2llbarJet_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMElP2lJetJet.cc����������������0000644�0001750�0001750�00000021262�11754474775�031040� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMElP2lJetJet.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxMElP2lJetJet class. #include "MatchboxMElP2lJetJet.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; MatchboxMElP2lJetJet::MatchboxMElP2lJetJet() : MatchboxMEBase(), theZMass2(0.0*GeV2), theZWidth2(0.0*GeV2), theUserScale(0.0*GeV) {} MatchboxMElP2lJetJet::~MatchboxMElP2lJetJet() {} bool MatchboxMElP2lJetJet::generateKinematics(const double * r) { if ( phasespace() ) return MatchboxMEBase::generateKinematics(r); if ( theZMass2 == 0.0*GeV2 ) { theZMass2 = sqr(getParticleData(ParticleID::Z0)->mass()); theZWidth2 = sqr(getParticleData(ParticleID::Z0)->width()); } double x; Lorentz5Momentum nloMomenta[5]; Energy LeptonMass; if(fabs(mePartonData()[1]->id()) != 11 || fabs(mePartonData()[1]->id()) != 13 || fabs(mePartonData()[1]->id()) != 15){ x = lastX2(); nloMomenta[0] = meMomenta()[0]; nloMomenta[1] = meMomenta()[1]; LeptonMass = mePartonData()[0]->mass(); } else { x = lastX1(); nloMomenta[1] = meMomenta()[0]; nloMomenta[0] = meMomenta()[1]; LeptonMass = mePartonData()[1]->mass(); } // Defining variables double QZmin = 2.; double QZmax = sqrt(lastSHat())/ThePEG::GeV; Energy2 Q2=exp((log(sqr(QZmax))-log(sqr(QZmin)))*r[0]+log(sqr(QZmin)))*ThePEG::GeV2; double x0 = .01; double xB = x; double xi1Min = -log(1.+x0-xB); double xi1Max = -log(x0); double xi2Min = 1./(1.+2.*x0)*log(x0/(1.+x0)); double xi2Max = 1./(1.+2.*x0)*log((x0+1.)/x0); double xi1 = xi1Min + r[1]*(xi1Max-xi1Min); double xi2 = xi2Min + r[2]*(xi2Max-xi2Min); double xp = (1. + x0 - exp(-xi1)); double zp = ((1.+x0)*exp(xi2*(1.+2.*x0))-x0)/(1.+exp(xi2*(1.+2.*x0))); double x1 = -1./xp; double x2 = 1.-(1.-zp)/xp; double x3 = 2.+x1-x2; double PhiParton = 2.*Constants::pi*r[3]; double PhiLepton = 2.*Constants::pi*r[4]; // Partonic bit Energy pTParton = sqrt(Q2*(1.-xp)*(1.-zp)*zp/xp); Energy Parton2Energy = sqrt(Q2*sqr(x2)/4.+sqr(pTParton)); Energy Parton4Energy = sqrt(Q2*sqr(x3)/4.+sqr(pTParton)); // Parton momenta in the Breit frame (BF) nloMomenta[3] = Lorentz5Momentum(pTParton*std::cos(PhiParton), pTParton*std::sin(PhiParton), -0.5*sqrt(Q2)*x2,Parton2Energy); nloMomenta[4] = Lorentz5Momentum(-pTParton*std::cos(PhiParton), -pTParton*std::sin(PhiParton), -0.5*sqrt(Q2)*x3,Parton4Energy); Lorentz5Momentum px = (nloMomenta[3]+nloMomenta[4]); if(px.m2()> lastSHat()+sqr(LeptonMass)) { jacobian(0.0); return false; } // Leptonic bit Energy2 OutLeptonMagnitude2 = sqr(lastSHat()+sqr(LeptonMass)-px.m2())/ 4./lastSHat()-sqr(LeptonMass); if ( OutLeptonMagnitude2 < ZERO ) { jacobian(0.0); return false; } Energy OutLeptonMagnitude = sqrt(OutLeptonMagnitude2); Energy OutLeptonEnergy = sqrt(sqr(OutLeptonMagnitude)+sqr(LeptonMass)); if(OutLeptonEnergy >= sqrt(lastSHat())) { jacobian(0.0); return false; } Energy InLeptonMagnitude = nloMomenta[0].vect().mag(); double cThetaLepton = (nloMomenta[0].e()*OutLeptonEnergy-0.5*Q2-sqr(LeptonMass))/ InLeptonMagnitude/OutLeptonMagnitude; if(cThetaLepton < -1. || cThetaLepton > 1.) { jacobian(0.0); return false; } double sThetaLepton = sqrt(1.-sqr(cThetaLepton)); // Lepton momentum in the CM frame nloMomenta[2] = Lorentz5Momentum(OutLeptonMagnitude*sThetaLepton*std::cos(PhiLepton), OutLeptonMagnitude*sThetaLepton*std::sin(PhiLepton), OutLeptonMagnitude*cThetaLepton,OutLeptonEnergy); double betaZ = (px.z()*px.e()+OutLeptonMagnitude* (sqrt(lastSHat())-OutLeptonEnergy))/ (sqr(sqrt(lastSHat())-OutLeptonEnergy) +sqr(px.z())); Boost betaBFtoCM(0,0,-betaZ); if(betaZ>=1.) { jacobian(0.0); return false; } LorentzRotation rotX; double Theta = acos(cThetaLepton); rotX = LorentzRotation(); rotX.setRotate(-Theta,Axis(1.,0.,0.)); LorentzRotation rotZ; rotZ = LorentzRotation(); rotZ.setRotate(PhiLepton-0.5*Constants::pi, Axis(0.,0.,1.)); // Boosting partonic momenta // from BF to CM nloMomenta[3].boost(betaBFtoCM); nloMomenta[3] *= rotX; nloMomenta[3] *= rotZ; nloMomenta[4].boost(betaBFtoCM); nloMomenta[4] *= rotX; nloMomenta[4] *= rotZ; // Definig Weight double psWeight = 1./(64.*pow(2.*Constants::pi,3)); double jac = Q2/(InLeptonMagnitude*sqrt(lastSHat()))/sqr(xp); double InvQ2Weight = Q2*(log(sqr(QZmax))-log(sqr(QZmin)))/lastSHat(); // Mapping to flatten the Jacobian in the singular domain double mapX = (xi1Max-xi1Min)*(xi2Max-xi2Min)*(zp+x0)*(1.+x0-zp)*(1.+x0-xp); for(int i = 2; i < 5; i++) meMomenta()[i] = nloMomenta[i]; jacobian(mapX*psWeight*InvQ2Weight*jac); setScale(); logGenerateKinematics(r); return true; } Energy2 MatchboxMElP2lJetJet::factorizationScale() const { if ( theUserScale != ZERO ) return sqr(theUserScale); return -(meMomenta()[0]-meMomenta()[2]).m2(); } Energy2 MatchboxMElP2lJetJet::renormalizationScale() const { if ( theUserScale != ZERO ) return sqr(theUserScale); return -(meMomenta()[0]-meMomenta()[2]).m2(); } double MatchboxMElP2lJetJet::colourCorrelatedME2(pair<int,int> ij) const { if ( matchboxAmplitude() ) return MatchboxMEBase::colourCorrelatedME2(ij); generator()->logWarning(Exception() << "The matrix element '" << name() << "' " << "is not capable of calculating colour- or spin correlated " << "matrix element squares." << Exception::warning); lastME2(0.0); return lastME2(); } double MatchboxMElP2lJetJet::spinColourCorrelatedME2(pair<int,int> ij, const SpinCorrelationTensor& c) const { if ( matchboxAmplitude() ) return MatchboxMEBase::spinColourCorrelatedME2(ij,c); generator()->logWarning(Exception() << "The matrix element '" << name() << "' " << "is not capable of calculating colour- or spin correlated " << "matrix element squares." << Exception::warning); lastME2(0.0); return lastME2(); } void MatchboxMElP2lJetJet::doinit() { MatchboxMEBase::doinit(); MatchboxMEllbarqqbarg::doinit(*this); for ( PDVector::const_iterator q = theQuarkFlavours.begin(); q != theQuarkFlavours.end(); ++q ) if ( (**q).mass() != ZERO ) Throw<InitException>() << "The matrix element '" << name() << "' is only capable of " << "producing massless quarks."; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxMElP2lJetJet::persistentOutput(PersistentOStream & os) const { MatchboxMEllbarqqbarg::persistentOutput(os); os << theLeptonFlavours << theQuarkFlavours << ounit(theUserScale,GeV); } void MatchboxMElP2lJetJet::persistentInput(PersistentIStream & is, int) { MatchboxMEllbarqqbarg::persistentInput(is); is >> theLeptonFlavours >> theQuarkFlavours >> iunit(theUserScale,GeV); } AbstractClassDescription<MatchboxMElP2lJetJet> MatchboxMElP2lJetJet::initMatchboxMElP2lJetJet; // Definition of the static class description member. void MatchboxMElP2lJetJet::Init() { static ClassDocumentation<MatchboxMElP2lJetJet> documentation ("MatchboxMElP2lJetJet"); static RefVector<MatchboxMElP2lJetJet,ParticleData> interfaceLeptonFlavours ("LeptonFlavours", "The lepton flavours for this matrix element.", &MatchboxMElP2lJetJet::theLeptonFlavours, -1, false, false, true, true, false); static RefVector<MatchboxMElP2lJetJet,ParticleData> interfaceQuarkFlavours ("QuarkFlavours", "The quark flavours for this matrix element.", &MatchboxMElP2lJetJet::theQuarkFlavours, -1, false, false, true, true, false); static Parameter<MatchboxMElP2lJetJet,Energy> interfaceUserScale ("UserScale", "A user defined renormalization scale.", &MatchboxMElP2lJetJet::theUserScale, GeV, 0.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEqg2llbarq.cc�����������������0000644�0001750�0001750�00000014704�11754474775�031013� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEqg2llbarq.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxMEqg2llbarq class. // #include "MatchboxMEqg2llbarq.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; MatchboxMEqg2llbarq::MatchboxMEqg2llbarq() : MatchboxMEPP2llbarJet(), theWhichGluon(0) {} MatchboxMEqg2llbarq::~MatchboxMEqg2llbarq() {} IBPtr MatchboxMEqg2llbarq::clone() const { return new_ptr(*this); } IBPtr MatchboxMEqg2llbarq::fullclone() const { return new_ptr(*this); } double MatchboxMEqg2llbarq::me2() const { if ( matchboxAmplitude() ) return MatchboxMEBase::me2(); double res; if ( !calculateME2(res) ) return res; cPDPtr qid = theWhichGluon == 0 ? mePartonData()[1] : mePartonData()[0]; Lorentz5Momentum pq; if ( theWhichGluon == 0 ) { if ( mePartonData()[1]->id() < 0 ) pq = -meMomenta()[1]; else pq = meMomenta()[4]; } else { if ( mePartonData()[0]->id() < 0 ) pq = -meMomenta()[0]; else pq = meMomenta()[4]; } Lorentz5Momentum pqbar; if ( theWhichGluon == 0 ) { if ( mePartonData()[1]->id() > 0 ) pqbar = -meMomenta()[1]; else pqbar = meMomenta()[4]; } else { if ( mePartonData()[0]->id() > 0 ) pqbar = -meMomenta()[0]; else pqbar = meMomenta()[4]; } Lorentz5Momentum pl = mePartonData()[2]->id() > 0 ? meMomenta()[2] : meMomenta()[3]; Lorentz5Momentum plbar = mePartonData()[2]->id() < 0 ? meMomenta()[2] : meMomenta()[3]; Lorentz5Momentum pg = - ( theWhichGluon == 0 ? meMomenta()[0] : meMomenta()[1] ); prepare(pl,plbar,pq,pqbar,pg,lastSHat(),mePartonData()[2],qid); lastME2(-MatchboxMEllbarqqbarg::evaluateME2()*me2Norm()); cacheME2(lastME2()); logME2(); return lastME2(); } void MatchboxMEqg2llbarq::getDiagrams() const { tcPDPtr g = getParticleData(ParticleID::g); tcPDPtr gamma = getParticleData(ParticleID::gamma); tcPDPtr Z0 = getParticleData(ParticleID::Z0); for ( PDVector::const_iterator l = theLeptonFlavours.begin(); l != theLeptonFlavours.end(); ++l ) for ( PDVector::const_iterator q = theQuarkFlavours.begin(); q != theQuarkFlavours.end(); ++q ) { if ( theWhichGluon == 0 ) { add(new_ptr((Tree2toNDiagram(3), g, (**q).CC(), *q, 2, gamma, 4, *l, 4, (**l).CC(), 1, *q, -1))); add(new_ptr((Tree2toNDiagram(2), g, *q, 1, *q, 3, gamma, 4, *l, 4, (**l).CC(), 3, *q, -2))); add(new_ptr((Tree2toNDiagram(3), g, (**q).CC(), *q, 2, Z0, 4, *l, 4, (**l).CC(), 1, *q, -3))); add(new_ptr((Tree2toNDiagram(2), g, *q, 1, *q, 3, Z0, 4, *l, 4, (**l).CC(), 3, *q, -4))); } else { add(new_ptr((Tree2toNDiagram(3), *q, *q, g, 1, gamma, 4, *l, 4, (**l).CC(), 2, *q, -1))); add(new_ptr((Tree2toNDiagram(2), *q, g, 1, *q, 3, gamma, 4, *l, 4, (**l).CC(), 3, *q, -2))); add(new_ptr((Tree2toNDiagram(3), *q, *q, g, 1, Z0, 4, *l, 4, (**l).CC(), 2, *q, -3))); add(new_ptr((Tree2toNDiagram(2), *q, g, 1, *q, 3, Z0, 4, *l, 4, (**l).CC(), 3, *q, -4))); } } } Selector<MEBase::DiagramIndex> MatchboxMEqg2llbarq::diagrams(const DiagramVector &) const { Selector<MEBase::DiagramIndex> sel; tcPDPtr Z0 = getParticleData(ParticleID::Z0); double wGamma = sqr( sqr(generator()->maximumCMEnergy())/(2.*(meMomenta()[2]*meMomenta()[3])) ); double wZ = sqr( sqr(generator()->maximumCMEnergy()) ) / ( sqr(2.*(meMomenta()[2]*meMomenta()[3])-sqr(Z0->mass())) + sqr(Z0->mass())*sqr(Z0->width()) ); Energy2 wt = theWhichGluon == 0 ? meMomenta()[0]*meMomenta()[4] : meMomenta()[1]*meMomenta()[4]; if ( wt < lastSHat() ) { sel.insert(wGamma,0); sel.insert(wZ,2); } else { sel.insert(wGamma,1); sel.insert(wZ,3); } return sel; } Selector<const ColourLines *> MatchboxMEqg2llbarq::colourGeometries(tcDiagPtr d) const { Selector<const ColourLines *> sel; if ( theWhichGluon == 0 ) { static const ColourLines ct("1 7, -1 -2 3"); static const ColourLines cbart("-1 -7, 1 2 -3"); static const ColourLines cs("-1 2, 1 3 7"); static const ColourLines cbars("1 -2, -1 -3 -7"); if ( mePartonData()[1]->id() > 0 ) { if ( abs(d->id()) % 2 != 0 ) sel.insert(1.0, &ct); else sel.insert(1.0, &cs); } else { if ( abs(d->id()) % 2 != 0 ) sel.insert(1.0, &cbart); else sel.insert(1.0, &cbars); } } else { static const ColourLines ct("1 2 -3, 3 7"); static const ColourLines cbart("-1 -2 3, -3 -7"); static const ColourLines cs("1 -2, 2 3 7"); static const ColourLines cbars("-1 2, -2 -3 -7"); if ( mePartonData()[0]->id() > 0 ) { if ( abs(d->id()) % 2 != 0 ) sel.insert(1.0, &ct); else sel.insert(1.0, &cs); } else { if ( abs(d->id()) % 2 != 0 ) sel.insert(1.0, &cbart); else sel.insert(1.0, &cbars); } } return sel; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxMEqg2llbarq::persistentOutput(PersistentOStream & os) const { os << theWhichGluon; } void MatchboxMEqg2llbarq::persistentInput(PersistentIStream & is, int) { is >> theWhichGluon; } ClassDescription<MatchboxMEqg2llbarq> MatchboxMEqg2llbarq::initMatchboxMEqg2llbarq; // Definition of the static class description member. void MatchboxMEqg2llbarq::Init() { static ClassDocumentation<MatchboxMEqg2llbarq> documentation ("MatchboxMEqg2llbarq"); static Switch<MatchboxMEqg2llbarq,int> interfaceWhichGluon ("WhichGluon", "Set the position of the incoming gluon.", &MatchboxMEqg2llbarq::theWhichGluon, 0, false, false); static SwitchOption interfaceWhichGluonFirst (interfaceWhichGluon, "First", "From first incoming hadron.", 0); static SwitchOption interfaceWhichGluonSecond (interfaceWhichGluon, "Second", "From second incoming hadron.", 1); } ������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbarqqbar.h�����������������0000644�0001750�0001750�00000006462�11754474775�031113� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEllbarqqbar.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxMEllbarqqbar_H #define HERWIG_MatchboxMEllbarqqbar_H #include "ThePEG/Config/Complex.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SpinorHelicity.h" #include "Herwig++/MatrixElement/Matchbox/Utility/AmplitudeCache.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxMEllbarqqbar implements the * generic matrix element for processes with two * leptons and two light quarks. * */ class MatchboxMEllbarqqbar: public SpinorHelicity::AmplitudeCache<int> { public: virtual ~MatchboxMEllbarqqbar() {} protected: /** * The Boson mass */ Energy BMass; /** * The Boson width */ Energy BWidth; /** * The number of colours. */ double Nc; /** * The alpha s */ double alphaS; /** * Lepton QED coupling */ double el; /** * Lepton vector coupling */ double vl; /** * Lepton axial vector coupling */ double al; /** * Quark QED couplings */ pair<double,double> quarkQEDCouplings; /** * Quark vector couplings */ pair<double,double> quarkVectorCouplings; /** * Quark axial vector couplings */ pair<double,double> quarkAxialCouplings; /** * The last calculated inverse photon propagator. */ mutable double Q2; /** * The last calculated inverse Z propagator. */ mutable Complex Q2BW; /** * The last quark QED coupling */ mutable double eq; /** * The last quark vector coupling */ mutable double vq; /** * The last quark axial vector coupling */ mutable double aq; /** * Initialize couplings and masses. This default version * assumes Z/gamma exchange. */ virtual void doinit(const HandlerBase& h); /** * Write out persistently */ void persistentOutput(PersistentOStream & os) const; /** * Read in persistently */ void persistentInput(PersistentIStream & is); /** * Prepare for given momenta. */ void prepare(const Lorentz5Momentum& pl, const Lorentz5Momentum& plbar, const Lorentz5Momentum& pq, const Lorentz5Momentum& pqbar, Energy2 sHat, cPDPtr lData, cPDPtr lbarData, cPDPtr qData, cPDPtr qbarData) const; /** * Prepare for given momenta. */ void prepare(const Lorentz5Momentum& pl, const Lorentz5Momentum& plbar, const Lorentz5Momentum& pq, const Lorentz5Momentum& pqbar, Energy2 sHat, cPDPtr lData, cPDPtr qData) const { prepare(pl,plbar,pq,pqbar,sHat,lData,lData,qData,qData); } /** * Return the amplitude squared summed over helicities */ double evaluateME2(bool photon = true) const; }; } #endif // HERWIG_MatchboxMEllbarqqbar_H ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMElq2lqg.cc��������������������0000644�0001750�0001750�00000007707�11754474775�030333� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMElq2lqg.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxMElq2lqg class. // #include "MatchboxMElq2lqg.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; MatchboxMElq2lqg::MatchboxMElq2lqg() : MatchboxMElP2lJetJet() {} MatchboxMElq2lqg::~MatchboxMElq2lqg() {} IBPtr MatchboxMElq2lqg::clone() const { return new_ptr(*this); } IBPtr MatchboxMElq2lqg::fullclone() const { return new_ptr(*this); } double MatchboxMElq2lqg::me2() const { if ( matchboxAmplitude() ) return MatchboxMEBase::me2(); double res; if ( !calculateME2(res) ) return res; Lorentz5Momentum pq = mePartonData()[1]->id() > 0 ? meMomenta()[3] : meMomenta()[1]; if ( mePartonData()[1]->id() < 0 ) pq = -pq; Lorentz5Momentum pqbar = mePartonData()[1]->id() < 0 ? meMomenta()[3] : meMomenta()[1]; if ( mePartonData()[1]->id() > 0 ) pqbar = -pqbar; Lorentz5Momentum pl = mePartonData()[0]->id() > 0 ? meMomenta()[2] : meMomenta()[0]; if ( mePartonData()[0]->id() < 0 ) pl = -pl; Lorentz5Momentum plbar = mePartonData()[0]->id() < 0 ? meMomenta()[2] : meMomenta()[0]; if ( mePartonData()[0]->id() > 0 ) plbar = -plbar; Lorentz5Momentum pg = meMomenta()[4]; prepare(pl,plbar,pq,pqbar,pg,lastSHat(),mePartonData()[0],mePartonData()[1]); lastME2(MatchboxMEllbarqqbarg::evaluateME2()*me2Norm()); cacheME2(lastME2()); logME2(); return lastME2(); } void MatchboxMElq2lqg::getDiagrams() const { tcPDPtr g = getParticleData(ParticleID::g); tcPDPtr gamma = getParticleData(ParticleID::gamma); tcPDPtr Z0 = getParticleData(ParticleID::Z0); for ( PDVector::const_iterator l = theLeptonFlavours.begin(); l != theLeptonFlavours.end(); ++l ) for ( PDVector::const_iterator q = theQuarkFlavours.begin(); q != theQuarkFlavours.end(); ++q ) { add(new_ptr((Tree2toNDiagram(4), *l, gamma, (**q).CC(), *q, 1, *l, 2, *q, 3, g, -1))); add(new_ptr((Tree2toNDiagram(3), *l, gamma, *q, 1, *l, 2, *q, 5, *q, 5, g, -2))); add(new_ptr((Tree2toNDiagram(4), *l, Z0, (**q).CC(), *q, 1, *l, 2, *q, 3, g, -3))); add(new_ptr((Tree2toNDiagram(3), *l, Z0, *q, 1, *l, 2, *q, 5, *q, 5, g, -4))); } } Selector<const ColourLines *> MatchboxMElq2lqg::colourGeometries(tcDiagPtr d) const { static const ColourLines ci("4 7, -7 -3 6"); static const ColourLines cbari("-4 -7, 7 3 -6"); static const ColourLines cf("3 5 7, -7 6"); static const ColourLines cbarf("-3 -5 -7, 7 -6"); Selector<const ColourLines *> sel; if ( mePartonData()[1]->id() > 0 ) { if ( abs(d->id()) % 2 != 0 ) sel.insert(1.0, &ci); else sel.insert(1.0, &cf); } else { if ( abs(d->id()) % 2 != 0 ) sel.insert(1.0, &cbari); else sel.insert(1.0, &cbarf); } return sel; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxMElq2lqg::persistentOutput(PersistentOStream &) const { } void MatchboxMElq2lqg::persistentInput(PersistentIStream &, int) { } ClassDescription<MatchboxMElq2lqg> MatchboxMElq2lqg::initMatchboxMElq2lqg; // Definition of the static class description member. void MatchboxMElq2lqg::Init() { static ClassDocumentation<MatchboxMElq2lqg> documentation ("MatchboxMElq2lqg"); } ���������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEPP2llbar.cc������������������0000644�0001750�0001750�00000013240�11756364747�030533� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEPP2llbar.cc.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxMEPP2llbar class. // #include "MatchboxMEPP2llbar.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; MatchboxMEPP2llbar::MatchboxMEPP2llbar() : MatchboxMEBase(), theUserScale(0.0*GeV) {} MatchboxMEPP2llbar::~MatchboxMEPP2llbar() {} IBPtr MatchboxMEPP2llbar::clone() const { return new_ptr(*this); } IBPtr MatchboxMEPP2llbar::fullclone() const { return new_ptr(*this); } double MatchboxMEPP2llbar::me2() const { double res; if ( !calculateME2(res) ) return res; Lorentz5Momentum pq = - ( mePartonData()[0]->id() > 0 ? meMomenta()[1] : meMomenta()[0] ); Lorentz5Momentum pqbar = - ( mePartonData()[1]->id() > 0 ? meMomenta()[1] : meMomenta()[0] ); Lorentz5Momentum pl = mePartonData()[2]->id() > 0 ? meMomenta()[2] : meMomenta()[3]; Lorentz5Momentum plbar = mePartonData()[2]->id() > 0 ? meMomenta()[3] : meMomenta()[2]; prepare(pl,plbar,pq,pqbar,lastSHat(),mePartonData()[2],mePartonData()[0]); lastME2(evaluateME2()*me2Norm()); cacheME2(lastME2()); logME2(); return lastME2(); } Energy2 MatchboxMEPP2llbar::factorizationScale() const { if ( theUserScale != ZERO ) return sqr(theUserScale); return lastSHat(); } Energy2 MatchboxMEPP2llbar::renormalizationScale() const { if ( theUserScale != ZERO ) return sqr(theUserScale); return lastSHat(); } double MatchboxMEPP2llbar::colourCorrelatedME2(pair<int,int> ij) const { if ( ij.first == ij.second || ij.first > 1 || ij.second > 1 ) { generator()->logWarning(Exception() << "A non-exisiting colour correlation was requested " << "from the matrix element '" << name() << "'." << Exception::warning); lastME2(0.0); return lastME2(); } return -me2(); } double MatchboxMEPP2llbar::spinColourCorrelatedME2(pair<int,int>, const SpinCorrelationTensor&) const { generator()->logWarning(Exception() << "A non-exisiting spin correlation was requested " << "from the matrix element '" << name() << "'." << Exception::warning); lastME2(0.0); return lastME2(); } void MatchboxMEPP2llbar::getDiagrams() const { tcPDPtr gamma = getParticleData(ParticleID::gamma); tcPDPtr Z0 = getParticleData(ParticleID::Z0); for ( PDVector::const_iterator l = theLeptonFlavours.begin(); l != theLeptonFlavours.end(); ++l ) for ( PDVector::const_iterator q = theQuarkFlavours.begin(); q != theQuarkFlavours.end(); ++q ) { add(new_ptr((Tree2toNDiagram(2), *q, (**q).CC(), 1, gamma, 3, *l, 3, (**l).CC(), -1))); add(new_ptr((Tree2toNDiagram(2), *q, (**q).CC(), 1, Z0, 3, *l, 3, (**l).CC(), -2))); } } Selector<MEBase::DiagramIndex> MatchboxMEPP2llbar::diagrams(const DiagramVector &) const { Selector<MEBase::DiagramIndex> sel; tcPDPtr Z0 = getParticleData(ParticleID::Z0); double wGamma = sqr( sqr(generator()->maximumCMEnergy())/lastSHat() ); double wZ = sqr( sqr(generator()->maximumCMEnergy()) ) / ( sqr(lastSHat()-sqr(Z0->mass())) + sqr(Z0->mass())*sqr(Z0->width()) ); sel.insert(wGamma,0); sel.insert(wZ,1); return sel; } Selector<const ColourLines *> MatchboxMEPP2llbar::colourGeometries(tcDiagPtr) const { static const ColourLines c("1 -2"); static const ColourLines cbar("-1 2"); Selector<const ColourLines *> sel; if ( mePartonData()[0]->id() > 0 ) sel.insert(1.0, &c); else sel.insert(1.0, &cbar); return sel; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxMEPP2llbar::doinit() { MatchboxMEBase::doinit(); MatchboxMEllbarqqbar::doinit(*this); } void MatchboxMEPP2llbar::persistentOutput(PersistentOStream & os) const { MatchboxMEllbarqqbar::persistentOutput(os); os << theLeptonFlavours << theQuarkFlavours << ounit(theUserScale,GeV); } void MatchboxMEPP2llbar::persistentInput(PersistentIStream & is, int) { MatchboxMEllbarqqbar::persistentInput(is); is >> theLeptonFlavours >> theQuarkFlavours >> iunit(theUserScale,GeV); } ClassDescription<MatchboxMEPP2llbar> MatchboxMEPP2llbar::initMatchboxMEPP2llbar; // Definition of the static class description member. void MatchboxMEPP2llbar::Init() { static ClassDocumentation<MatchboxMEPP2llbar> documentation ("MatchboxMEPP2llbar"); static RefVector<MatchboxMEPP2llbar,ParticleData> interfaceLeptonFlavours ("LeptonFlavours", "The lepton flavours for this matrix element.", &MatchboxMEPP2llbar::theLeptonFlavours, -1, false, false, true, true, false); static RefVector<MatchboxMEPP2llbar,ParticleData> interfaceQuarkFlavours ("QuarkFlavours", "The quark flavours for this matrix element.", &MatchboxMEPP2llbar::theQuarkFlavours, -1, false, false, true, true, false); static Parameter<MatchboxMEPP2llbar,Energy> interfaceUserScale ("UserScale", "A user defined renormalization scale.", &MatchboxMEPP2llbar::theUserScale, GeV, 0.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEPP2llbar.h�������������������0000644�0001750�0001750�00000017322�11754474775�030403� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEPP2llbar.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxMEPP2llbar_H #define HERWIG_MatchboxMEPP2llbar_H // // MatchboxMEPP2llbar // #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxMEBase.h" #include "Herwig++/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbarqqbar.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxMEPP2llbar implements charged lepton * pair production in hadron-hadron collisions. * * @see \ref MatchboxMEPP2llbarInterfaces "The interfaces" * defined for MatchboxMEPP2llbar. */ class MatchboxMEPP2llbar: public MatchboxMEBase, public MatchboxMEllbarqqbar { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxMEPP2llbar(); /** * The destructor. */ virtual ~MatchboxMEPP2llbar(); //@} public: /** * Return the order in \f$\alpha_S\f$ in which this matrix element * is given. */ virtual unsigned int orderInAlphaS() const { return 0; } /** * Return the order in \f$\alpha_{EM}\f$ in which this matrix * element is given. Returns 0. */ virtual unsigned int orderInAlphaEW() const { return 2; } /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Evaluate the finite virtual correction for the * variables supplied through the Born XComb object * and possible additional random numbers. */ virtual double oneLoopInterference() const { return (lastAlphaS()/(2.*Constants::pi)) * ((SM().Nc()*SM().Nc()-1.0)/(2.*SM().Nc())) * ( sqr(Constants::pi) - 8. ) * me2(); } /** * Return true, if this matrix element is capable of calculating * one-loop (QCD) corrections. */ virtual bool haveOneLoop() const { return true; }; /** * Return true, if one loop corrections have been calculated in * dimensional reduction. Otherwise conventional dimensional * regularization is assumed. Note that renormalization is always * assumed to be MSbar. */ virtual bool isDR() const { return false; } /** * Return true, if one loop corrections are given in the conventions * of the integrated dipoles. */ virtual bool isCS() const { return true; } /** * Return the renormalization scale for the last generated phasespace point. */ virtual Energy2 factorizationScale() const; /** * Return the renormalization scale for the last generated phasespace point. */ virtual Energy2 renormalizationScale() const; /** * Return the number of light flavours, this matrix * element is calculated for. */ virtual unsigned int nLight() const { return theQuarkFlavours.size(); } /** * Return the colour correlated matrix element squared with * respect to the given two partons as appearing in mePartonData(), * suitably scaled by sHat() to give a dimension-less number. */ virtual double colourCorrelatedME2(pair<int,int>) const; /** * Return the colour and spin correlated matrix element squared for * the gluon indexed by the first argument using the given * correlation tensor. */ virtual double spinColourCorrelatedME2(pair<int,int> emitterSpectator, const SpinCorrelationTensor& c) const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * With the information previously supplied with the * setKinematics(...) method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector &) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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 lepton flavours to be considered. */ PDVector theLeptonFlavours; /** * The quark flavours to be considered. */ PDVector theQuarkFlavours; /** * A user defined scale; if zero, the center of mass * energy is used. */ Energy theUserScale; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MatchboxMEPP2llbar> initMatchboxMEPP2llbar; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxMEPP2llbar & operator=(const MatchboxMEPP2llbar &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MatchboxMEPP2llbar. */ template <> struct BaseClassTrait<Herwig::MatchboxMEPP2llbar,1> { /** Typedef of the first base class of MatchboxMEPP2llbar. */ typedef Herwig::MatchboxMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MatchboxMEPP2llbar class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MatchboxMEPP2llbar> : public ClassTraitsBase<Herwig::MatchboxMEPP2llbar> { /** Return a platform-independent class name */ static string className() { return "Herwig::MatchboxMEPP2llbar"; } /** * The name of a file containing the dynamic library where the class * MatchboxMEPP2llbar is implemented. It may also include several, space-separated, * libraries if the class MatchboxMEPP2llbar depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMatchbox.so"; } }; /** @endcond */ } #endif /* HERWIG_MatchboxMEPP2llbar_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbarqqbarg.h����������������0000644�0001750�0001750�00000004362�11754474775�031257� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEllbarqqbarg.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxMEllbarqqbarg_H #define HERWIG_MatchboxMEllbarqqbarg_H #include "Herwig++/MatrixElement/Matchbox/Builtin/Processes/MatchboxMEllbarqqbar.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxMEllbarqqbarg implements the * generic matrix element for processes with two * leptons, two light quarks and a gluon. * */ class MatchboxMEllbarqqbarg: public MatchboxMEllbarqqbar { protected: /** * Initialize couplings and masses. This default version * assumes Z/gamma exchange. */ virtual void doinit(const HandlerBase& h) { MatchboxMEllbarqqbar::doinit(h); nPoints(5); } /** * Write out persistently */ void persistentOutput(PersistentOStream & os) const { MatchboxMEllbarqqbar::persistentOutput(os); } /** * Read in persistently */ void persistentInput(PersistentIStream & is) { MatchboxMEllbarqqbar::persistentInput(is); nPoints(5); } /** * Prepare for given momenta. */ void prepare(const Lorentz5Momentum& pl, const Lorentz5Momentum& plbar, const Lorentz5Momentum& pq, const Lorentz5Momentum& pqbar, const Lorentz5Momentum& pg, Energy2 sHat, cPDPtr lData, cPDPtr lbarData, cPDPtr qData, cPDPtr qbarData) const { MatchboxMEllbarqqbar::prepare(pl,plbar,pq,pqbar,sHat,lData,lbarData,qData,qbarData); momentum(4,pg,false); } /** * Prepare for given momenta. */ void prepare(const Lorentz5Momentum& pl, const Lorentz5Momentum& plbar, const Lorentz5Momentum& pq, const Lorentz5Momentum& pqbar, const Lorentz5Momentum& pg, Energy2 sHat, cPDPtr lData, cPDPtr qData) const { prepare(pl,plbar,pq,pqbar,pg,sHat,lData,lData,qData,qData); } /** * Return the amplitude squared summed over helicities */ double evaluateME2(bool photon = true) const; }; } #endif // HERWIG_MatchboxMEllbarqqbarg_H ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Makefile.in��������������������������������������0000644�0001750�0001750�00000046300�11756461677�025000� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/Matchbox/Builtin DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = \ Processes all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/Matchbox/Builtin/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/Matchbox/Builtin/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done cscopelist-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \ cscopelist-recursive ctags-recursive install-am install-strip \ tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ cscopelist cscopelist-recursive ctags ctags-recursive \ distclean distclean-generic distclean-libtool distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-recursive uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Builtin/Makefile.am��������������������������������������0000644�0001750�0001750�00000000026�11754474775�024763� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������SUBDIRS = \ Processes ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Makefile.am����������������������������������������������0000644�0001750�0001750�00000001027�11755414304�023336� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������SUBDIRS = \ Base Utility Phasespace \ Dipoles InsertionOperators Powheg \ Builtin pkglib_LTLIBRARIES = HwMatchbox.la HwMatchbox_la_LDFLAGS = -module -version-info 1:0:0 HwMatchbox_la_LIBADD = \ Base/libHwMatchboxBase.la \ Utility/libHwMatchboxUtility.la \ Phasespace/libHwMatchboxPhasespace.la \ Dipoles/libHwMatchboxDipoles.la \ InsertionOperators/libHwMatchboxInsertionOperators.la \ Powheg/libHwMatchboxPowheg.la \ Builtin/Processes/libHwMatchboxBuiltinProcesses.la HwMatchbox_la_SOURCES = \ MatchboxFactory.h MatchboxFactory.cc ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/����������������������������������������������������0000755�0001750�0001750�00000000000�11756464210�022156� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/SubtractedME.h��������������������������������������0000644�0001750�0001750�00000023456�11754474775�024702� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SubtractedME.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SubtractedME_H #define HERWIG_SubtractedME_H // // This is the declaration of the SubtractedME class. // #include "ThePEG/MatrixElement/MEGroup.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxMEBase.h" #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief SubtractedME represents a subtracted real emission matrix element. * * @see \ref SubtractedMEInterfaces "The interfaces" * defined for SubtractedME. */ class SubtractedME: public MEGroup { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ SubtractedME(); /** * The destructor. */ virtual ~SubtractedME(); //@} public: /** @name Phasespace and subprocess information */ //@{ /** * Set the XComb object to be used in the next call to * generateKinematics() and dSigHatDR(). */ virtual void setXComb(tStdXCombPtr); /** * Return true, if the same additional random numbers * should be presented to any of the dependent * matrix elements. */ virtual bool uniformAdditional() const { return true; } /** * Given a process from the head matrix element, * return a list of diagrams which should be considered for * the given dependent matrix element. */ virtual MEBase::DiagramVector dependentDiagrams(const cPDVector& proc, tMEPtr depME) const; /** * Return true, if SubProcessGroups should be * setup from this MEGroup. If not, a single SubProcess * is constructed from the data provided by the * head matrix element. */ virtual bool subProcessGroups() const { return theSubProcessGroups; } /** * Switch on or off producing subprocess groups. */ void setSubProcessGroups(bool on = true) { theSubProcessGroups = on; } //@} /** @name Matrix element and dipole information */ //@{ /** * Return the subtraction dipoles. */ vector<Ptr<SubtractionDipole>::ptr> dipoles(); /** * Return the underlying born matrix elements. */ const vector<Ptr<MatchboxMEBase>::ptr>& borns() const { return theBorns; } /** * Access the underlying born matrix elements. */ vector<Ptr<MatchboxMEBase>::ptr>& borns() { return theBorns; } /** * Build up dipoles needed. */ void getDipoles(); /** * Return all dipoles matching the given Born process */ vector<Ptr<SubtractionDipole>::ptr> splitDipoles(const cPDVector&); /** * Return the subtraction dipoles. */ const vector<Ptr<SubtractionDipole>::ptr>& allDipoles() const { return theDipoles; } /** * Access the subtraction dipoles. */ vector<Ptr<SubtractionDipole>::ptr>& allDipoles() { return theDipoles; } //@} /** @name Veto scale settings */ //@{ /** * Set veto scales on the particles at the given * SubProcess which has been generated using this * matrix element. */ virtual void setVetoScales(tSubProPtr) const; /** * Return true, if veto scales should be set * for the real emission */ bool vetoScales() const { return theVetoScales; } /** * Switch on setting veto scales */ void doVetoScales() { theVetoScales = true; } /** * Switch off setting veto scales */ void noVetoScales() { theVetoScales = true; } //@} /** @name Diagnostic information */ //@{ /** * Dump the setup to an ostream */ void print(ostream&) const; /** * Collect information on the last evaluated phasespace * point for verification or debugging purposes. This * only called, if the StdXCombGroup did accumulate * a non-zero cross section from this ME group. */ virtual void lastEventStatistics(); /** * Print debug information on the last event */ void printLastEvent(ostream&) const; /** * Check the subtraction for the last event */ void lastEventSubtraction(); /** * Set a file to print subtraction check to */ void subtractionData(string n) { theSubtractionData = n; } /** * Return true, if verbose */ bool verbose() const { return theVerbose; } /** * Switch on or off verbosity for this subtracted ME */ void setVerbose(bool on = true) { theVerbose = on; } /** * Dump xcomb hierarchies. */ void dumpInfo(const string& prefix = "") const; //@} /** @name Setup of Subtracted ME objects */ //@{ /** * Return true if this object needs to be initialized before all * other objects (except those for which this function also returns * true). This default version always returns false, but subclasses * may override it to return true. */ virtual bool preInitialize() const { return true; } //@} 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans); /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} private: /** * The dipoles to be considered; the dipoles generated * can be accessed throught the dependent() matrxi element * vector, provided the head() is a MatchboxMEBase object. */ vector<Ptr<SubtractionDipole>::ptr> theDipoles; /** * The underlying Born matrix elements to be considered */ vector<Ptr<MatchboxMEBase>::ptr> theBorns; /** * File name to dump subtraction check to */ string theSubtractionData; /** * Simple envelope histogram to keep track of subtraction */ struct SubtractionHistogram { /** * The lower bound */ double lower; /** * The bins, indexed by upper bound. */ map<double,pair<double,double> > bins; /** * Constructor */ SubtractionHistogram(double low = 0.01, double up = 100., unsigned int nbins = 100); /** * Book an event. */ void book(double inv, double ratio) { map<double,pair<double,double> >::iterator b = bins.upper_bound(inv); if ( b == bins.end() ) return; b->second.first = min(b->second.first,abs(ratio)); b->second.second = max(b->second.second,abs(ratio)); } /** * Write to file given name and invariant. */ void dump(const std::string& prefix, const cPDVector& proc, int i, int j) const; }; /** * Define the key for the collinear subtraction data. */ typedef pair<cPDVector,pair<size_t, size_t> > CollinearSubtractionIndex; /** * subtraction data for collinear limits. */ map<CollinearSubtractionIndex,SubtractionHistogram> collinearHistograms; /** * Define the key for the soft subtraction data. */ typedef pair<cPDVector,size_t> SoftSubtractionIndex; /** * subtraction data for soft limits. */ map<SoftSubtractionIndex,SubtractionHistogram> softHistograms; /** * Switch to print full information on the * last phase space point. */ bool theVerbose; /** * True, if SubProcessGroups should be * setup from this MEGroup. If not, a single SubProcess * is constructed from the data provided by the * head matrix element. */ bool theSubProcessGroups; /** * True, if veto scales should be set * for the real emission */ bool theVetoScales; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SubtractedME & operator=(const SubtractedME &); }; } #endif /* HERWIG_SubtractedME_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/MatchboxReweightBase.h������������������������������0000644�0001750�0001750�00000006322�11754474775�026410� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxReweightBase.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxReweightBase_H #define HERWIG_MatchboxReweightBase_H // // This is the declaration of the MatchboxReweightBase class. // #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/Handlers/StandardXComb.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxReweightBase is the base class * for reweighting MatchboxMEBase matrix elements * as |M|^2 ( w_1 + ... + w_n ) * */ class MatchboxReweightBase: public HandlerBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxReweightBase(); /** * The destructor. */ virtual ~MatchboxReweightBase(); //@} public: /** * Clone this reweight. */ Ptr<MatchboxReweightBase>::ptr cloneMe() const { return dynamic_ptr_cast<Ptr<MatchboxReweightBase>::ptr>(clone()); } /** * Clone the dependencies, using a given prefix. */ virtual void cloneDependencies(const std::string& prefix = ""); /** * Set the XComb object. */ virtual void setXComb(tStdXCombPtr) = 0; /** * Return true, if applies to the process in the xcomb. */ virtual bool apply() const = 0; /** * Evaluate the reweight. */ virtual double evaluate() const = 0; /** * Set veto scales on the particles at the given * SubProcess which has been generated using this * matrix element. */ virtual void setVetoScales(tSubProPtr) const {} public: /** * Dump the setup to an ostream */ virtual void print(ostream&) const {} /** * Print debug information on the last event */ virtual void printLastEvent(ostream&) const {} /** * Dump xcomb hierarchies. */ virtual void dumpInfo(const string& prefix = "") const = 0; 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxReweightBase & operator=(const MatchboxReweightBase &); }; } #endif /* HERWIG_MatchboxReweightBase_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/MatchboxNLOME.h�������������������������������������0000644�0001750�0001750�00000026633�11754474775�024720� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxNLOME.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxNLOME_H #define HERWIG_MatchboxNLOME_H // // This is the declaration of the MatchboxNLOME class. // #include "ThePEG/MatrixElement/MEBase.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxMEBase.h" #include "Herwig++/MatrixElement/Matchbox/InsertionOperators/MatchboxInsertionOperator.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxNLOME assembles a MatchboxMEBase * and several MatchboxInsertionOperator objects to calculate * the Born + finite virtual cross section in a NLO * QCD calculation. * * @see \ref MatchboxNLOMEInterfaces "The interfaces" * defined for MatchboxNLOME. */ class MatchboxNLOME: public MEBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxNLOME(); /** * The destructor. */ virtual ~MatchboxNLOME(); //@} public: /** @name Subprocess and diagram information. */ //@{ /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const { theMatrixElement->diagrams(); useDiagrams(theMatrixElement); } /** * Return true, if this matrix element does not want to * make use of mirroring processes; in this case all * possible partonic subprocesses with a fixed assignment * of incoming particles need to be provided through the diagrams * added with the add(...) method. */ virtual bool noMirror () const { return true; } /** * With the information previously supplied with the * setKinematics(...) method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const { return matrixElement()->diagrams(dv); } /** * Select a diagram. Default version uses diagrams(const * DiagramVector &) to select a diagram according to the * weights. This is the only method used that should be outside of * MEBase. */ virtual DiagramIndex diagram(const DiagramVector & dv) const { return matrixElement()->diagram(dv); } /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const { return matrixElement()->colourGeometries(diag); } /** * Select a ColpurLines geometry. The default version returns a * colour geometry selected among the ones returned from * colourGeometries(tcDiagPtr). */ virtual const ColourLines & selectColourGeometry(tcDiagPtr diag) const { return matrixElement()->selectColourGeometry(diag); } /** * Return the order in \f$\alpha_S\f$ in which this matrix element * is given. */ virtual unsigned int orderInAlphaS() const { return virtuals().empty() ? theMatrixElement->orderInAlphaS() : theMatrixElement->orderInAlphaS() + 1; } /** * Return the order in \f$\alpha_{EM}\f$ in which this matrix * element is given. Returns 0. */ virtual unsigned int orderInAlphaEW() const { return theMatrixElement->orderInAlphaEW(); } //@} /** @name Phasespace generation */ //@{ /** * Set the XComb object to be used in the next call to * generateKinematics() and dSigHatDR(). */ virtual void setXComb(tStdXCombPtr); /** * Set the typed and momenta of the incoming and outgoing partons to * be used in subsequent calls to me() and colourGeometries() * according to the associated XComb object. If the function is * overridden in a sub class the new function must call the base * class one first. */ virtual void setKinematics() { matrixElement()->setKinematics(); } /** * Generate internal degrees of freedom given nDim() uniform random * numbers in the interval ]0,1[. To help the phase space generator, * the 'dSigHatDR' should be a smooth function of these numbers, * although this is not strictly necessary. The return value should * be true of the generation succeeded. If so the generated momenta * should be stored in the meMomenta() vector. */ virtual bool generateKinematics(const double * r); /** * The number of internal degreed of freedom used in the matrix * element. This default version returns 0; */ virtual int nDim() const { if ( theNDim < 0 ) getNDim(); return theNDim; } /** * Get the ranom numbers needed */ void getNDim() const; /** * Return true, if this matrix element will generate momenta for the * incoming partons itself. The matrix element is required to store * the incoming parton momenta in meMomenta()[0,1]. No mapping in * tau and y is performed by the PartonExtractor object, if a * derived class returns true here. The phase space jacobian is to * include a factor 1/(x1 x2). */ virtual bool haveX1X2() const { return theMatrixElement->haveX1X2(); } /** * Return true, if this matrix element expects * the incoming partons in their center-of-mass system */ virtual bool wantCMS () const { return theMatrixElement->wantCMS(); } /** * Return true, if the XComb steering this matrix element * should keep track of the random numbers used to generate * the last phase space point */ virtual bool keepRandomNumbers() const { return true; } /** * Clear the information previously provided by a call to * setKinematics(...). */ virtual void clearKinematics() { matrixElement()->clearKinematics(); } //@} /** @name Scale choices, couplings and PDFs */ //@{ /** * Return the scale associated with the phase space point provided * by the last call to setKinematics(). */ virtual Energy2 scale() const { return matrixElement()->scale(); } /** * Return the value of \f$\alpha_S\f$ associated with the phase * space point provided by the last call to setKinematics(). This * versions returns SM().alphaS(scale()). */ virtual double alphaS() const { return matrixElement()->alphaS(); } /** * Return the value of \f$\alpha_EM\f$ associated with the phase * space point provided by the last call to setKinematics(). This * versions returns SM().alphaEM(scale()). */ virtual double alphaEM() const { return matrixElement()->alphaEM(); } /** * Return true, if this matrix element provides the PDF * weight for the first incoming parton itself. */ virtual bool havePDFWeight1() const { return theMatrixElement->havePDFWeight1(); } /** * Return true, if this matrix element provides the PDF * weight for the second incoming parton itself. */ virtual bool havePDFWeight2() const { return theMatrixElement->havePDFWeight2(); } //@} /** @name Matrix elements and evaluation */ //@{ /** * Return the Born matrix element */ Ptr<MatchboxMEBase>::tcptr matrixElement() const { return theMatrixElement; } /** * Return the Born matrix element */ Ptr<MatchboxMEBase>::tptr matrixElement() { return theMatrixElement; } /** * Set the Born matrix element */ void matrixElement(Ptr<MatchboxMEBase>::ptr b) { theMatrixElement = b; } /** * Return the virtual corrections */ const vector<Ptr<MatchboxInsertionOperator>::ptr>& virtuals() const { return theVirtuals; } /** * Return the virtual corrections */ vector<Ptr<MatchboxInsertionOperator>::ptr>& virtuals() { return theVirtuals; } /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR() const; //@} /** @name Caching and diagnostic information */ //@{ /** * Inform this matrix element that a new phase space * point is about to be generated, so all caches should * be flushed. */ virtual void flushCaches(); /** * Dump the setup to an ostream */ void print(ostream&) const; /** * Print information on last event generated. */ void printLastEvent(ostream& os) const; /** * Dump xcomb hierarchies. */ void dumpInfo(const string& prefix = "") const; //@} /** @name Methods used to setup NLO ME objects */ //@{ /** * Clone the dependencies, using a given prefix. */ void cloneDependencies(const std::string& prefix = ""); //@} /** @name Methods required to setup the event record */ //@{ /** * construct the spin information for the interaction */ virtual void constructVertex(tSubProPtr sub) { matrixElement()->constructVertex(sub); } /** * Comlete a SubProcess object using the internal degrees of freedom * generated in the last generateKinematics() (and possible other * degrees of freedom which was intergated over in dSigHatDR(). This * default version does nothing. Will be made purely virtual in the * future. */ virtual void generateSubCollision(SubProcess & sub) { matrixElement()->generateSubCollision(sub); } //@} 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The Born matrix element */ Ptr<MatchboxMEBase>::ptr theMatrixElement; /** * The virtual corrections. */ vector<Ptr<MatchboxInsertionOperator>::ptr> theVirtuals; /** * The number of random variables needed */ mutable int theNDim; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxNLOME & operator=(const MatchboxNLOME &); }; } #endif /* HERWIG_MatchboxNLOME_H */ �����������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/MatchboxAmplitude.cc��������������������������������0000644�0001750�0001750�00000031454�11754474775�026125� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxAmplitude.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxAmplitude class. // #include "MatchboxAmplitude.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SpinorHelicity.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SU2Helper.h" #include "MatchboxMEBase.h" using namespace Herwig; MatchboxAmplitude::MatchboxAmplitude() : Amplitude(), theColourBasisDim(0), calculateTrees(true), calculateLoops(true) {} MatchboxAmplitude::~MatchboxAmplitude() {} void MatchboxAmplitude::persistentOutput(PersistentOStream & os) const { os << theLastXComb << theColourBasis << theColourBasisDim << theCrossingMap << theColourMap << theCrossingSigns << theAmplitudePartonData << theNLight; } void MatchboxAmplitude::persistentInput(PersistentIStream & is, int) { is >> theLastXComb >> theColourBasis >> theColourBasisDim >> theCrossingMap >> theColourMap >> theCrossingSigns >> theAmplitudePartonData >> theNLight; } void MatchboxAmplitude::cloneDependencies(const std::string&) { } Ptr<MatchboxMEBase>::ptr MatchboxAmplitude::makeME(const vector<PDVector>&) const { return new_ptr(MatchboxMEBase()); } void MatchboxAmplitude::dumpInfo(const string& prefix) const { generator()->log() << prefix << fullName() << " [" << this << "]\n"; generator()->log() << prefix << " | XComb " << lastXCombPtr() << " for "; if ( lastXCombPtr() ) { for ( cPDVector::const_iterator p = lastXComb().mePartonData().begin(); p != lastXComb().mePartonData().end(); ++p ) { generator()->log() << (**p).PDGName() << " "; } } generator()->log() << "\n"; } struct orderPartonData { bool operator()(const pair<tcPDPtr,int>& a, const pair<tcPDPtr,int>& b) const { if ( a.first == b.first ) return a.second < b.second; int acolour = a.first->iColour(); int bcolour = b.first->iColour(); if ( abs(acolour) != abs(bcolour) ) return abs(acolour) < abs(bcolour); if ( a.first->iSpin() != b.first->iSpin() ) return a.first->iSpin() < b.first->iSpin(); int acharge = a.first->iCharge(); int bcharge = b.first->iCharge(); if ( abs(acharge) != abs(bcharge) ) return abs(acharge) < abs(bcharge); if ( abs(a.first->id()) != abs(b.first->id()) ) return abs(a.first->id()) < abs(b.first->id()); return a.first->id() > b.first->id(); } }; void MatchboxAmplitude::fillCrossingMap(size_t shift) { theLastCrossingMap = crossingMap().find(lastXCombPtr()); if ( theLastCrossingMap != crossingMap().end() ) { assert(amplitudePartonData().find(lastXCombPtr()) != amplitudePartonData().end()); assert(colourMap().find(lastXCombPtr()) != colourMap().end()); theLastAmplitudePartonData = amplitudePartonData().find(lastXCombPtr()); theLastColourMap = colourMap().find(lastXCombPtr()); assert(crossingSigns().find(lastXCombPtr()) != crossingSigns().end()); theLastCrossingSign = crossingSigns().find(lastXCombPtr())->second; return; } else { crossingMap()[lastXCombPtr()] = vector<int>(mePartonData().size()); amplitudePartonData()[lastXCombPtr()] = cPDVector(mePartonData().size()); colourMap()[lastXCombPtr()] = map<size_t,size_t>(); theLastCrossingMap = crossingMap().find(lastXCombPtr()); theLastAmplitudePartonData = amplitudePartonData().find(lastXCombPtr()); theLastColourMap = colourMap().find(lastXCombPtr()); } double csign = 1.; set<pair<tcPDPtr,int>,orderPartonData > processLegs; for ( unsigned int l = 0; l < mePartonData().size(); ++l ) { if ( l > 1 ) processLegs.insert(make_pair(mePartonData()[l],l)); else { if ( mePartonData()[l]->CC() ) { processLegs.insert(make_pair(mePartonData()[l]->CC(),l)); if ( mePartonData()[l]->iSpin() == PDT::Spin1Half ) csign *= -1.; } else { processLegs.insert(make_pair(mePartonData()[l],l)); } } } lastCrossingSign(csign); crossingSigns()[lastXCombPtr()] = csign; set<pair<tcPDPtr,int> > amplitudeLegs; int ampCount = 0; // process legs are already sorted, we only need to arrange for // adjacent particles and anti-particles while ( !processLegs.empty() ) { set<pair<tcPDPtr,int>,orderPartonData >::iterator next = processLegs.begin(); while ( next->first->id() < 0 ) { if ( ++next == processLegs.end() ) break; } assert(next != processLegs.end()); lastCrossingMap()[ampCount] = next->second - shift; amplitudeLegs.insert(make_pair(next->first,ampCount)); tcPDPtr check = next->first; processLegs.erase(next); ++ampCount; if ( check->CC() ) { set<pair<tcPDPtr,int>,orderPartonData>::iterator checkcc = processLegs.end(); for ( set<pair<tcPDPtr,int>,orderPartonData>::iterator c = processLegs.begin(); c != processLegs.end(); ++c ) { if ( c->first == check->CC() ) { checkcc = c; break; } } if ( checkcc == processLegs.end() ) for ( set<pair<tcPDPtr,int>,orderPartonData>::iterator c = processLegs.begin(); c != processLegs.end(); ++c ) { assert(SU2Helper::SU2CC(check)->CC()); if ( c->first == SU2Helper::SU2CC(check)->CC() ) { checkcc = c; break; } } assert(checkcc != processLegs.end()); lastCrossingMap()[ampCount] = checkcc->second - shift; amplitudeLegs.insert(make_pair(checkcc->first,ampCount)); processLegs.erase(checkcc); ++ampCount; } } for ( set<pair<tcPDPtr,int> >::const_iterator l = amplitudeLegs.begin(); l != amplitudeLegs.end(); ++l ) lastAmplitudePartonData()[l->second] = l->first; if ( colourBasis() ) { assert(colourBasis()->indexMap().find(mePartonData()) != colourBasis()->indexMap().end()); const map<size_t,size_t> colourCross = colourBasis()->indexMap().find(mePartonData())->second; for ( size_t k = 0; k < lastCrossingMap().size(); ++k ) { if ( colourCross.find(lastCrossingMap()[k]) != colourCross.end() ) { lastColourMap()[k] = colourCross.find(lastCrossingMap()[k])->second; } } } } Lorentz5Momentum MatchboxAmplitude::amplitudeMomentum(int i) const { int iCrossed = lastCrossingMap()[i]; Lorentz5Momentum res = meMomenta()[iCrossed]; return iCrossed > 1 ? res : -res; } set<vector<int> > MatchboxAmplitude::generateHelicities() const { set<vector<int> > res; vector<int> current(lastAmplitudePartonData().size()); doGenerateHelicities(res,current,0); return res; } void MatchboxAmplitude::doGenerateHelicities(set<vector<int> >& res, vector<int>& current, size_t pos) const { if ( pos == lastAmplitudePartonData().size() ) { res.insert(current); return; } if ( lastAmplitudePartonData()[pos]->iSpin() == PDT::Spin0 || ( lastAmplitudePartonData()[pos]->iSpin() == PDT::Spin1 && lastAmplitudePartonData()[pos]->mass() != ZERO ) ) { current[pos] = 0; doGenerateHelicities(res,current,pos+1); } else if ( lastAmplitudePartonData()[pos]->iSpin() == PDT::Spin1Half || lastAmplitudePartonData()[pos]->iSpin() == PDT::Spin1 ) { current[pos] = 1; doGenerateHelicities(res,current,pos+1); current[pos] = -1; doGenerateHelicities(res,current,pos+1); } } void MatchboxAmplitude::prepareAmplitudes() { if ( !calculateTrees ) return; if ( lastAmplitudes().empty() ) { set<vector<int> > helicities = generateHelicities(); for ( set<vector<int> >::const_iterator h = helicities.begin(); h != helicities.end(); ++h ) lastAmplitudes().insert(make_pair(*h,CVector(colourBasisDim()))); lastLargeNAmplitudes() = lastAmplitudes(); } AmplitudeIterator amp = lastAmplitudes().begin(); AmplitudeIterator lamp = lastLargeNAmplitudes().begin(); for ( ;amp != lastAmplitudes().end(); ++amp, ++lamp ) { for ( size_t k = 0; k < colourBasisDim(); ++k ) amp->second(k) = evaluate(k,amp->first,lamp->second(k)); } calculateTrees = false; } void MatchboxAmplitude::prepareOneLoopAmplitudes() { if ( !calculateLoops ) return; if ( lastOneLoopAmplitudes().empty() ) { set<vector<int> > helicities = generateHelicities(); for ( set<vector<int> >::const_iterator h = helicities.begin(); h != helicities.end(); ++h ) lastOneLoopAmplitudes().insert(make_pair(*h,CVector(colourBasisDim()))); } for ( AmplitudeIterator amp = lastOneLoopAmplitudes().begin(); amp != lastOneLoopAmplitudes().end(); ++amp ) { for ( size_t k = 0; k < colourBasisDim(); ++k ) amp->second(k) = evaluateOneLoop(k,amp->first); } calculateLoops = false; } Complex MatchboxAmplitude::value(const tcPDVector&, const vector<Lorentz5Momentum>&, const vector<int>&) { assert(false && "ThePEG::Amplitude interface is not sufficient at the moment."); throw Exception() << "ThePEG::Amplitude interface is not sufficient at the moment." << Exception::abortnow; return 0.; } double MatchboxAmplitude::colourCorrelatedME2(pair<int,int> ij) const { double Nc = generator()->standardModel()->Nc(); double cfac = mePartonData()[ij.first]->id() == ParticleID::g ? Nc : (sqr(Nc)-1.)/(2.*Nc); return lastCrossingSign()*colourBasis()->colourCorrelatedME2(ij,mePartonData(),lastAmplitudes())/cfac; } // compare int vectors modulo certain element // which needs to differe between the two bool equalsModulo(unsigned int i, const vector<int>& a, const vector<int>& b) { assert(a.size()==b.size()); if ( a[i] == b[i] ) return false; for ( unsigned int k = 0; k < a.size(); ++k ) { if ( k == i ) continue; if ( a[k] != b[k] ) return false; } return true; } double MatchboxAmplitude::spinColourCorrelatedME2(pair<int,int> ij, const SpinCorrelationTensor& c) const { using namespace SpinorHelicity; Lorentz5Momentum p = meMomenta()[ij.first]; Lorentz5Momentum n = meMomenta()[ij.second]; LorentzVector<complex<Energy> > num = PlusSpinorCurrent(PlusConjugateSpinor(n),MinusSpinor(p)).eval(); complex<Energy> den = sqrt(2.)*PlusSpinorProduct(PlusConjugateSpinor(n),PlusSpinor(p)).eval(); LorentzVector<Complex> polarization(num.x()/den,num.y()/den,num.z()/den,num.t()/den); Complex pFactor = (polarization*c.momentum())/sqrt(abs(c.scale())); double avg = colourCorrelatedME2(ij)*(-c.diagonal()+ (c.scale() > ZERO ? 1. : -1.)*norm(pFactor)); Complex corr = 0.; int iCrossed = -1; for ( unsigned int k = 0; k < lastCrossingMap().size(); ++k ) if ( lastCrossingMap()[k] == ij.first ) { iCrossed = k; break; } assert(iCrossed >= 0); set<const CVector*> done; for ( AmplitudeConstIterator a = theLastAmplitudes.begin(); a != theLastAmplitudes.end(); ++a ) { if ( done.find(&(a->second)) != done.end() ) continue; AmplitudeConstIterator b = theLastAmplitudes.begin(); while ( !equalsModulo(iCrossed,a->first,b->first) ) if ( ++b == theLastAmplitudes.end() ) break; if ( b == theLastAmplitudes.end() || done.find(&(b->second)) != done.end() ) continue; done.insert(&(a->second)); done.insert(&(b->second)); if ( a->first[iCrossed] == 1 ) swap(a,b); corr += colourBasis()->interference(mePartonData(),a->second,b->second); } double Nc = generator()->standardModel()->Nc(); double cfac = mePartonData()[ij.first]->id() == ParticleID::g ? Nc : (sqr(Nc)-1.)/(2.*Nc); return avg + 2.*lastCrossingSign()*(c.scale() > ZERO ? 1. : -1.)*real(corr*sqr(pFactor))/cfac; } void MatchboxAmplitude::Init() { static ClassDocumentation<MatchboxAmplitude> documentation ("MatchboxAmplitude is the base class for amplitude " "implementations inside Matchbox."); static Reference<MatchboxAmplitude,ColourBasis> interfaceColourBasis ("ColourBasis", "Set the colour basis implementation.", &MatchboxAmplitude::theColourBasis, false, false, true, true, false); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeAbstractClass<MatchboxAmplitude,Amplitude> describeMatchboxAmplitude("Herwig::MatchboxAmplitude", "HwMatchbox.so"); ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/MatchboxReweightBase.cc�����������������������������0000644�0001750�0001750�00000003161�11754474775�026544� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxReweightBase.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxReweightBase class. // #include "MatchboxReweightBase.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; MatchboxReweightBase::MatchboxReweightBase() {} MatchboxReweightBase::~MatchboxReweightBase() {} void MatchboxReweightBase::cloneDependencies(const std::string&) {} void MatchboxReweightBase::persistentOutput(PersistentOStream &) const {} void MatchboxReweightBase::persistentInput(PersistentIStream &, int) {} void MatchboxReweightBase::Init() { static ClassDocumentation<MatchboxReweightBase> documentation ("MatchboxReweightBase"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeAbstractClass<MatchboxReweightBase,HandlerBase> describeMatchboxReweightBase("Herwig::MatchboxReweightBase", "HwMatchbox.so"); ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/Makefile.in�����������������������������������������0000644�0001750�0001750�00000045214�11756461677�024247� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/Matchbox/Base DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwMatchboxBase_la_LIBADD = am_libHwMatchboxBase_la_OBJECTS = DipoleRepository.lo \ MatchboxAmplitude.lo MatchboxMEBase.lo MatchboxNLOME.lo \ MatchboxReweightBase.lo SubtractedME.lo libHwMatchboxBase_la_OBJECTS = $(am_libHwMatchboxBase_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwMatchboxBase_la_SOURCES) DIST_SOURCES = $(libHwMatchboxBase_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwMatchboxBase.la libHwMatchboxBase_la_SOURCES = \ DipoleRepository.cc \ DipoleRepository.h \ MatchboxAmplitude.cc \ MatchboxAmplitude.h \ MatchboxMEBase.cc \ MatchboxMEBase.h \ MatchboxNLOME.cc \ MatchboxNLOME.h \ MatchboxReweightBase.cc \ MatchboxReweightBase.h \ SubtractedME.cc \ SubtractedME.h all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/Matchbox/Base/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/Matchbox/Base/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwMatchboxBase.la: $(libHwMatchboxBase_la_OBJECTS) $(libHwMatchboxBase_la_DEPENDENCIES) $(EXTRA_libHwMatchboxBase_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwMatchboxBase_la_OBJECTS) $(libHwMatchboxBase_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipoleRepository.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxAmplitude.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxMEBase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxNLOME.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxReweightBase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SubtractedME.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/DipoleRepository.cc���������������������������������0000644�0001750�0001750�00000002765�11754474775�026032� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleRepository.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #include "DipoleRepository.h" using namespace Herwig; vector<Ptr<SubtractionDipole>::ptr>& DipoleRepository::theDipoles() { static vector<Ptr<SubtractionDipole>::ptr> theDipoles_; return theDipoles_; } vector<Ptr<MatchboxInsertionOperator>::ptr>& DipoleRepository::theInsertionOperators() { static vector<Ptr<MatchboxInsertionOperator>::ptr> theInsertionOperators_; return theInsertionOperators_; } bool& DipoleRepository::initialized() { static bool theInitialized = false; return theInitialized; } void DipoleRepository::setup() { if ( initialized() ) return; try { BaseRepository::CheckDirectory(HERWIG_MatchboxDipoles); } catch (RepositoryNoDirectory& d) { d.handle(); BaseRepository::CreateDirectory(HERWIG_MatchboxDipoles); } try { BaseRepository::CheckDirectory(HERWIG_MatchboxInsertionOperators); } catch (RepositoryNoDirectory& d) { d.handle(); BaseRepository::CreateDirectory(HERWIG_MatchboxInsertionOperators); } try { BaseRepository::CheckDirectory(HERWIG_MatchboxTildes); } catch (RepositoryNoDirectory& d) { d.handle(); BaseRepository::CreateDirectory(HERWIG_MatchboxTildes); } initialized() = true; } �����������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/MatchboxNLOME.cc������������������������������������0000644�0001750�0001750�00000020761�11754474775�025052� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxNLOME.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxNLOME class. // #include "MatchboxNLOME.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Repository/Repository.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxAmplitude.h" #include <iterator> using std::ostream_iterator; using namespace Herwig; MatchboxNLOME::MatchboxNLOME() : MEBase(), theNDim(-1) {} MatchboxNLOME::~MatchboxNLOME() {} IBPtr MatchboxNLOME::clone() const { return new_ptr(*this); } IBPtr MatchboxNLOME::fullclone() const { return new_ptr(*this); } void MatchboxNLOME::cloneDependencies(const std::string& prefix) { Ptr<MatchboxMEBase>::ptr myMatrixElement = theMatrixElement->cloneMe(); ostringstream pname; pname << (prefix == "" ? fullName() : prefix) << "/" << myMatrixElement->name(); if ( ! (generator()->preinitRegister(myMatrixElement,pname.str()) ) ) throw InitException() << "Matrix element " << pname.str() << " already existing."; myMatrixElement->cloneDependencies(pname.str()); theMatrixElement = myMatrixElement; for ( vector<Ptr<MatchboxInsertionOperator>::ptr>::iterator v = virtuals().begin(); v != virtuals().end(); ++v ) { Ptr<MatchboxInsertionOperator>::ptr myIOP = (**v).cloneMe(); ostringstream pname; pname << (prefix == "" ? fullName() : prefix) << "/" << (**v).name(); if ( ! (generator()->preinitRegister(myIOP,pname.str()) ) ) throw InitException() << "Insertion operator " << pname.str() << " already existing."; *v = myIOP; (**v).setBorn(theMatrixElement); } } bool MatchboxNLOME::generateKinematics(const double * r) { for ( vector<Ptr<MatchboxInsertionOperator>::ptr>::iterator v = virtuals().begin(); v != virtuals().end(); ++v ) if ( (**v).nDimAdditional() ) (**v).additionalKinematics(r+theMatrixElement->nDim()); bool ret = matrixElement()->generateKinematics(r); jacobian(matrixElement()->lastXComb().jacobian()); return ret; } double MatchboxNLOME::me2() const { double res = !matrixElement()->onlyOneLoop() ? matrixElement()->me2() : 0.; if ( matrixElement()->haveOneLoop() ) { res += matrixElement()->oneLoopInterference(); } if ( !matrixElement()->onlyOneLoop() ) for ( vector<Ptr<MatchboxInsertionOperator>::ptr>::const_iterator v = virtuals().begin(); v != virtuals().end(); ++v ) res += (**v).me2(); return res; } CrossSection MatchboxNLOME::dSigHatDR() const { CrossSection res = !matrixElement()->onlyOneLoop() ? matrixElement()->dSigHatDR() : ZERO; if ( res == ZERO && !matrixElement()->onlyOneLoop() ) return res; if ( matrixElement()->haveOneLoop() ) { if ( matrixElement()->onlyOneLoop() ) matrixElement()->getPDFWeight(); double vme = matrixElement()->oneLoopInterference(); res += sqr(hbarc) * vme * jacobian() * lastMEPDFWeight() / (2.*lastSHat()); } if ( !matrixElement()->onlyOneLoop() ) for ( vector<Ptr<MatchboxInsertionOperator>::ptr>::const_iterator v = virtuals().begin(); v != virtuals().end(); ++v ) res += (**v).dSigHatDR(); lastMECrossSection(res); return res; } void MatchboxNLOME::flushCaches() { theMatrixElement->flushCaches(); for ( vector<Ptr<MatchboxInsertionOperator>::ptr>::const_iterator v = virtuals().begin(); v != virtuals().end(); ++v ) (**v).flushCaches(); } void MatchboxNLOME::setXComb(tStdXCombPtr xc) { MEBase::setXComb(xc); theMatrixElement->setXComb(xc); for ( vector<Ptr<MatchboxInsertionOperator>::ptr>::iterator v = virtuals().begin(); v != virtuals().end(); ++v ) (**v).setXComb(xc); } void MatchboxNLOME::getNDim() const { int maxadd = 0; for ( vector<Ptr<MatchboxInsertionOperator>::ptr>::const_iterator v = virtuals().begin(); v != virtuals().end(); ++v ) { if ( (**v).nDimAdditional() > 1 ) { throw InitException() << "at most one additional random number supported for " << "virtual corrections currently"; } maxadd = max(maxadd,(**v).nDimAdditional()); } theNDim = theMatrixElement->nDim() + maxadd; } void MatchboxNLOME::print(ostream& os) const { os << "--- MatchboxNLOME setup --------------------------------------------------------\n"; os << " '" << name() << "' using\n" << " matrix element '" << matrixElement()->name() << "' and insertion operators:\n"; for ( vector<Ptr<MatchboxInsertionOperator>::ptr>::const_iterator v = virtuals().begin(); v != virtuals().end(); ++v ) { os << " '" << (**v).name() << "' with " << ((**v).isDR() ? "" : "C") << "DR/" << ((**v).isCS() ? "CS" : "standard") << " conventions\n"; } os << "--------------------------------------------------------------------------------\n"; os << flush; } void MatchboxNLOME::printLastEvent(ostream& os) const { os << "--- MatchboxNLOME last event information ---------------------------------------\n"; os << " for matrix element '" << name() << "'\n"; os << " process considered:\n "; int in = 0; for ( cPDVector::const_iterator p = mePartonData().begin(); p != mePartonData().end(); ++p ) { os << (**p).PDGName() << " "; if ( ++in == 2 ) os << " -> "; } os << " kinematic environment as set by the XComb " << lastXCombPtr() << ":\n" << " sqrt(shat)/GeV = " << sqrt(lastSHat()/GeV2) << " x1 = " << lastX1() << " x2 = " << lastX2() << " alphaS = " << lastAlphaS() << "\n"; os << " momenta/GeV generated from random numbers\n "; copy(meInfo().begin(),meInfo().end(),ostream_iterator<double>(os," ")); os << ":\n "; for ( vector<Lorentz5Momentum>::const_iterator p = meMomenta().begin(); p != meMomenta().end(); ++p ) { os << (*p/GeV) << "\n "; } os << "last cross section/nb calculated was:\n " << (lastMECrossSection()/nanobarn) << " (pdf weight " << lastMEPDFWeight() << ")\n"; os << "--------------------------------------------------------------------------------\n"; os << flush; } void MatchboxNLOME::dumpInfo(const string& prefix) const { generator()->log() << prefix << fullName() << " [" << this << "]\n"; generator()->log() << prefix << " | XComb " << lastXCombPtr() << " for "; if ( lastXCombPtr() ) { for ( cPDVector::const_iterator p = lastXComb().mePartonData().begin(); p != lastXComb().mePartonData().end(); ++p ) { generator()->log() << (**p).PDGName() << " "; } } generator()->log() << "\n"; generator()->log() << prefix << " | Matrix element\n"; matrixElement()->dumpInfo(prefix+" | "); generator()->log() << prefix << " | Insertion operators\n"; for ( vector<Ptr<MatchboxInsertionOperator>::ptr>::const_iterator i = virtuals().begin(); i != virtuals().end(); ++i ) { (**i).dumpInfo(prefix+" | "); } } void MatchboxNLOME::doinit() { MEBase::doinit(); } void MatchboxNLOME::doinitrun() { MEBase::doinitrun(); } void MatchboxNLOME::persistentOutput(PersistentOStream & os) const { os << theMatrixElement << theVirtuals << theNDim; } void MatchboxNLOME::persistentInput(PersistentIStream & is, int) { is >> theMatrixElement >> theVirtuals >> theNDim; } void MatchboxNLOME::Init() { static ClassDocumentation<MatchboxNLOME> documentation ("MatchboxNLOME"); static Reference<MatchboxNLOME,MatchboxMEBase> interfaceBornME ("BornME", "The Born matrix element", &MatchboxNLOME::theMatrixElement, false, false, true, false, false); static RefVector<MatchboxNLOME,MatchboxInsertionOperator> interfaceVirtuals ("Virtuals", "The virtual corrections to be added.", &MatchboxNLOME::theVirtuals, -1, false, false, true, true, false); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<MatchboxNLOME,MEBase> describeMatchboxNLOME("Herwig::MatchboxNLOME", "HwMatchbox.so"); ���������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/MatchboxMEBase.cc�����������������������������������0000644�0001750�0001750�00000073467�11754474775�025307� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEBase.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxMEBase class. // #include "MatchboxMEBase.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDF/PDF.h" #include "ThePEG/PDT/PDT.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Handlers/StdXCombGroup.h" #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" #include "Herwig++/MatrixElement/Matchbox/Utility/DiagramDrawer.h" #include <iterator> using std::ostream_iterator; using namespace Herwig; MatchboxMEBase::MatchboxMEBase() : MEBase(), theFactorizationScaleFactor(1.0), theRenormalizationScaleFactor(1.0), theVerbose(false), theFixedCouplings(false), theNLight(0), theGetColourCorrelatedMEs(false) {} MatchboxMEBase::~MatchboxMEBase() {} void MatchboxMEBase::getDiagrams() const { if ( diagramGenerator() ) { vector<Ptr<Tree2toNDiagram>::ptr> diags; for ( vector<PDVector>::const_iterator p = subProcesses().begin(); p != subProcesses().end(); ++p ) { vector<Ptr<Tree2toNDiagram>::ptr> res = diagramGenerator()->generate(*p,orderInAlphaS(),orderInAlphaEW()); copy(res.begin(),res.end(),back_inserter(diags)); } if ( diags.empty() ) return; for ( vector<Ptr<Tree2toNDiagram>::ptr>::iterator d = diags.begin(); d != diags.end(); ++d ) { add(*d); } if ( theVerbose ) { string fname = name() + ".diagrams"; ifstream test(fname.c_str()); if ( !test ) { test.close(); ofstream out(fname.c_str()); for ( vector<Ptr<Tree2toNDiagram>::ptr>::const_iterator d = diags.begin(); d != diags.end(); ++d ) { DiagramDrawer::drawDiag(out,**d); out << "\n"; } } } return; } throw Exception() << "MatchboxMEBase::getDiagrams() expects a Tree2toNGenerator object.\n" << "Please check your setup." << Exception::abortnow; } Selector<MEBase::DiagramIndex> MatchboxMEBase::diagrams(const DiagramVector & diags) const { if ( phasespace() ) { return phasespace()->selectDiagrams(diags); } throw Exception() << "MatchboxMEBase::diagrams() expects a MatchboxPhasespace object.\n" << "Please check your setup." << Exception::abortnow; return Selector<MEBase::DiagramIndex>(); } Selector<const ColourLines *> MatchboxMEBase::colourGeometries(tcDiagPtr diag) const { if ( matchboxAmplitude() ) { if ( !matchboxAmplitude()->haveColourFlows() ) throw Exception() << "A colour flow implementation is not present." << Exception::abortnow; matchboxAmplitude()->prepareAmplitudes(); return matchboxAmplitude()->colourGeometries(diag); } throw Exception() << "MatchboxMEBase::colourGeometries() expects a MatchboxAmplitude object.\n" << "Please check your setup." << Exception::abortnow; return Selector<const ColourLines *>(); } unsigned int MatchboxMEBase::orderInAlphaS() const { if ( matchboxAmplitude() ) { return matchboxAmplitude()->orderInGs(); } throw Exception() << "MatchboxMEBase::orderInAlphaS() expects a MatchboxAmplitude object.\n" << "Please check your setup." << Exception::abortnow; return 0; } unsigned int MatchboxMEBase::orderInAlphaEW() const { if ( matchboxAmplitude() ) { return matchboxAmplitude()->orderInGem(); } throw Exception() << "MatchboxMEBase::orderInAlphaEW() expects a MatchboxAmplitude object.\n" << "Please check your setup." << Exception::abortnow; return 0; } void MatchboxMEBase::setXComb(tStdXCombPtr xc) { MEBase::setXComb(xc); for ( vector<Ptr<MatchboxReweightBase>::ptr>::iterator rw = theReweights.begin(); rw != theReweights.end(); ++rw ) (**rw).setXComb(xc); if ( phasespace() && !xc->head() ) phasespace()->prepare(xc,theVerbose); if ( scaleChoice() ) scaleChoice()->setXComb(xc); if ( cache() ) cache()->setXComb(xc); if ( matchboxAmplitude() ) matchboxAmplitude()->setXComb(xc); } double MatchboxMEBase::generateIncomingPartons(const double* r1, const double* r2) { // shamelessly stolen from PartonExtractor.cc Energy2 shmax = lastCuts().sHatMax(); Energy2 shmin = lastCuts().sHatMin(); Energy2 sh = shmin*pow(shmax/shmin, *r1); double ymax = lastCuts().yHatMax(); double ymin = lastCuts().yHatMin(); double km = log(shmax/shmin); ymax = min(ymax, log(lastCuts().x1Max()*sqrt(lastS()/sh))); ymin = max(ymin, -log(lastCuts().x2Max()*sqrt(lastS()/sh))); double y = ymin + (*r2)*(ymax - ymin); double x1 = exp(-0.5*log(lastS()/sh) + y); double x2 = exp(-0.5*log(lastS()/sh) - y); Lorentz5Momentum P1 = lastParticles().first->momentum(); LorentzMomentum p1 = lightCone((P1.rho() + P1.e())*x1, Energy()); p1.rotateY(P1.theta()); p1.rotateZ(P1.phi()); meMomenta()[0] = p1; Lorentz5Momentum P2 = lastParticles().second->momentum(); LorentzMomentum p2 = lightCone((P2.rho() + P2.e())*x2, Energy()); p2.rotateY(P2.theta()); p2.rotateZ(P2.phi()); meMomenta()[1] = p2; lastXCombPtr()->lastX1X2(make_pair(x1,x2)); lastXCombPtr()->lastSHat((meMomenta()[0]+meMomenta()[1]).m2()); return km*(ymax - ymin); } bool MatchboxMEBase::generateKinematics(const double * r) { if ( phasespace() ) { jacobian(phasespace()->generateKinematics(r,meMomenta())); if ( jacobian() == 0.0 ) return false; setScale(); logGenerateKinematics(r); return true; } throw Exception() << "MatchboxMEBase::generateKinematics() expects a MatchboxPhasespace object.\n" << "Please check your setup." << Exception::abortnow; return false; } int MatchboxMEBase::nDim() const { if ( phasespace() ) { size_t nout = diagrams().front()->partons().size()-2; int n = phasespace()->nDim(nout); return n; } throw Exception() << "MatchboxMEBase::nDim() expects a MatchboxPhasespace object.\n" << "Please check your setup." << Exception::abortnow; return 0; } void MatchboxMEBase::setScale() const { if ( haveX1X2() ) { lastXCombPtr()->lastSHat((meMomenta()[0]+meMomenta()[1]).m2()); } Energy2 fscale = factorizationScale()*factorizationScaleFactor(); Energy2 rscale = renormalizationScale()*renormalizationScaleFactor(); lastXCombPtr()->lastScale(fscale); if ( !fixedCouplings() ) { if ( rscale > lastCuts().scaleMin() ) lastXCombPtr()->lastAlphaS(SM().alphaS(rscale)); else lastXCombPtr()->lastAlphaS(SM().alphaS(lastCuts().scaleMin())); lastXCombPtr()->lastAlphaEM(SM().alphaEM(rscale)); } else { lastXCombPtr()->lastAlphaS(SM().alphaS()); lastXCombPtr()->lastAlphaEM(SM().alphaEM()); } logSetScale(); } Energy2 MatchboxMEBase::factorizationScale() const { if ( scaleChoice() ) { return scaleChoice()->factorizationScale(); } throw Exception() << "MatchboxMEBase::factorizationScale() expects a MatchboxScaleChoice object.\n" << "Please check your setup." << Exception::abortnow; return ZERO; } Energy2 MatchboxMEBase::renormalizationScale() const { if ( scaleChoice() ) { return scaleChoice()->renormalizationScale(); } throw Exception() << "MatchboxMEBase::renormalizationScale() expects a MatchboxScaleChoice object.\n" << "Please check your setup." << Exception::abortnow; return ZERO; } void MatchboxMEBase::setVetoScales(tSubProPtr subpro) const { for ( vector<Ptr<MatchboxReweightBase>::ptr>::const_iterator rw = theReweights.begin(); rw != theReweights.end(); ++rw ) { if ( !(**rw).apply() ) continue; (**rw).setVetoScales(subpro); } } void MatchboxMEBase::getPDFWeight(Energy2 factorizationScale) const { if ( !mePartonData()[0]->coloured() && !mePartonData()[1]->coloured() ) { lastMEPDFWeight(1.0); logPDFWeight(); return; } double w = 1.; if ( mePartonData()[0]->coloured() && havePDFWeight1() ) w *= pdf1(factorizationScale); if ( mePartonData()[1]->coloured() && havePDFWeight2() ) w *= pdf2(factorizationScale); lastMEPDFWeight(w); logPDFWeight(); } double MatchboxMEBase::pdf1(Energy2 fscale) const { assert(lastXCombPtr()->partonBins().first->pdf()); return lastXCombPtr()->partonBins().first->pdf()->xfx(lastParticles().first->dataPtr(), lastPartons().first->dataPtr(), fscale == ZERO ? lastScale() : fscale, lastX1())/lastX1(); } double MatchboxMEBase::pdf2(Energy2 fscale) const { assert(lastXCombPtr()->partonBins().second->pdf()); return lastXCombPtr()->partonBins().second->pdf()->xfx(lastParticles().second->dataPtr(), lastPartons().second->dataPtr(), fscale == ZERO ? lastScale() : fscale, lastX2())/lastX2(); } double MatchboxMEBase::me2() const { if ( matchboxAmplitude() ) { double res; if ( !calculateME2(res) ) return res; matchboxAmplitude()->prepareAmplitudes(); lastME2(matchboxAmplitude()->me2()* matchboxAmplitude()->lastCrossingSign()* me2Norm()); cacheME2(lastME2()); logME2(); return lastME2(); } throw Exception() << "MatchboxMEBase::me2() expects a MatchboxAmplitude object.\n" << "Please check your setup." << Exception::abortnow; return 0.; } double MatchboxMEBase::finalStateSymmetry() const { map<tStdXCombPtr,double>::const_iterator s = symmetryFactors.find(lastXCombPtr()); if ( s != symmetryFactors.end() ) return s->second; double symmetryFactor = 1.; map<long,int> counts; cPDVector checkData; copy(mePartonData().begin()+2,mePartonData().end(),back_inserter(checkData)); cPDVector::iterator p = checkData.begin(); while ( !checkData.empty() ) { if ( (**p).iSpin() == PDT::Spin0 || (**p).iSpin() == PDT::Spin1 ) { if ( counts.find((**p).id()) != counts.end() ) { counts[(**p).id()] += 1; } else { counts[(**p).id()] = 1; } checkData.erase(p); p = checkData.begin(); continue; } else if ( (**p).iSpin() == PDT::Spin1Half ) { assert((**p).CC()); long fid = abs((**p).id()); cPDPtr findCC = (**p).CC(); checkData.erase(p); p = checkData.begin(); for ( ; p != checkData.end(); ++p ) if ( (*p) == findCC ) break; if ( p != checkData.end() ) { if ( counts.find(fid) != counts.end() ) { counts[fid] += 1; } else { counts[fid] = 1; } checkData.erase(p); } p = checkData.begin(); continue; } else assert(false); } for ( map<long,int>::const_iterator c = counts.begin(); c != counts.end(); ++c ) { if ( c->second == 1 ) continue; if ( c->second == 2 ) symmetryFactor /= 2.; else if ( c->second == 3 ) symmetryFactor /= 6.; else if ( c->second == 4 ) symmetryFactor /= 24.; } symmetryFactors[lastXCombPtr()] = symmetryFactor; return symmetryFactor; } double MatchboxMEBase::me2Norm(unsigned int addAlphaS) const { // assume that we always have incoming // spin-1/2 or massless spin-1 particles double fac = 1./4.; if ( orderInAlphaS() > 0 || addAlphaS != 0 ) fac *= pow(lastAlphaS()/SM().alphaS(),double(orderInAlphaS()+addAlphaS)); if ( orderInAlphaEW() > 0 ) fac *= pow(lastAlphaEM()/SM().alphaEM(),double(orderInAlphaEW())); if ( mePartonData()[0]->iColour() == PDT::Colour3 || mePartonData()[0]->iColour() == PDT::Colour3bar ) fac /= SM().Nc(); else if ( mePartonData()[0]->iColour() == PDT::Colour8 ) fac /= (SM().Nc()*SM().Nc()-1.); if ( mePartonData()[1]->iColour() == PDT::Colour3 || mePartonData()[1]->iColour() == PDT::Colour3bar ) fac /= SM().Nc(); else if ( mePartonData()[1]->iColour() == PDT::Colour8 ) fac /= (SM().Nc()*SM().Nc()-1.); return finalStateSymmetry()*fac; } void MatchboxMEBase::storeColourCorrelatedMEs(double xme2) const { map<pair<int,int>,double>& ccs = colourCorrelatedMEs[lastXCombPtr()]; int n = meMomenta().size(); for ( int i = 0; i < n; ++i ) { if ( !mePartonData()[i]->coloured() ) continue; for ( int j = i+1; j < n; ++j ) { if ( !mePartonData()[j]->coloured() ) continue; if ( noDipole(i,j) ) continue; ccs[make_pair(i,j)] = colourCorrelatedME2(make_pair(i,j)); } } lastXCombPtr()->meta(MatchboxMetaKeys::ColourCorrelatedMEs,ccs); double& bme2 = bornMEs[lastXCombPtr()]; bme2 = xme2 >= 0. ? xme2 : me2(); lastXCombPtr()->meta(MatchboxMetaKeys::BornME,bme2); } CrossSection MatchboxMEBase::dSigHatDR() const { getPDFWeight(); if ( !lastXComb().willPassCuts() ) { lastMECrossSection(ZERO); return lastMECrossSection(); } double xme2 = me2(); if ( xme2 == 0. ) { lastMECrossSection(ZERO); return lastMECrossSection(); } if ( getColourCorrelatedMEs() ) storeColourCorrelatedMEs(xme2); CrossSection res = (sqr(hbarc)/(2.*lastSHat())) * jacobian() * xme2; double weight = 0.0; bool applied = false; for ( vector<Ptr<MatchboxReweightBase>::ptr>::const_iterator rw = theReweights.begin(); rw != theReweights.end(); ++rw ) { if ( !(**rw).apply() ) continue; weight += (**rw).evaluate(); applied = true; } if ( applied ) res *= weight; lastMECrossSection(res * lastMEPDFWeight()); return lastMECrossSection(); } double MatchboxMEBase::oneLoopInterference() const { if ( matchboxAmplitude() ) { double res; if ( !calculateME2(res,make_pair<int,int>(-1,-1)) ) return res; matchboxAmplitude()->prepareOneLoopAmplitudes(); lastME2(matchboxAmplitude()->oneLoopInterference()* matchboxAmplitude()->lastCrossingSign()* me2Norm(1)); cacheME2(lastME2(),make_pair<int,int>(-1,-1)); logME2(); return lastME2(); } throw Exception() << "MatchboxMEBase::oneLoopInterference() expects a MatchboxAmplitude object.\n" << "Please check your setup." << Exception::abortnow; return 0.; } bool MatchboxMEBase::haveOneLoop() const { if ( matchboxAmplitude() ) return matchboxAmplitude()->haveOneLoop(); return false; } bool MatchboxMEBase::onlyOneLoop() const { if ( matchboxAmplitude() ) return matchboxAmplitude()->onlyOneLoop(); return false; } bool MatchboxMEBase::isDR() const { if ( matchboxAmplitude() ) return matchboxAmplitude()->isDR(); return false; } bool MatchboxMEBase::isCS() const { if ( matchboxAmplitude() ) return matchboxAmplitude()->isCS(); return false; } vector<Ptr<SubtractionDipole>::ptr> MatchboxMEBase::getDipoles(const vector<Ptr<SubtractionDipole>::ptr>& dipoles, const vector<Ptr<MatchboxMEBase>::ptr>& borns) const { vector<Ptr<SubtractionDipole>::ptr> res; // keep track of the dipoles we already did set up set<pair<pair<pair<int,int>,int>,pair<Ptr<MatchboxMEBase>::tptr,Ptr<SubtractionDipole>::tptr> > > done; cPDVector rep = diagrams().front()->partons(); int nreal = rep.size(); // now loop over configs for ( int emitter = 0; emitter < nreal; ++emitter ) { for ( int spectator = 0; spectator < nreal; ++spectator ) { if ( emitter == spectator ) continue; for ( int emission = 2; emission < nreal; ++emission ) { if ( emission == emitter || emission == spectator ) continue; for ( vector<Ptr<MatchboxMEBase>::ptr>::const_iterator b = borns.begin(); b != borns.end(); ++b ) { if ( (**b).onlyOneLoop() ) continue; for ( vector<Ptr<SubtractionDipole>::ptr>::const_iterator d = dipoles.begin(); d != dipoles.end(); ++d ) { if ( !rep[emitter]->coloured() || !rep[emission]->coloured() || !rep[spectator]->coloured() ) { continue; } if ( noDipole(emitter,emission,spectator) ) { continue; } if ( done.find(make_pair(make_pair(make_pair(emitter,emission),spectator),make_pair(*b,*d))) != done.end() ) { continue; } if ( !(**d).canHandle(rep,emitter,emission,spectator) ) { continue; } // now get to work Ptr<SubtractionDipole>::ptr nDipole = (**d).cloneMe(); nDipole->realEmitter(emitter); nDipole->realEmission(emission); nDipole->realSpectator(spectator); nDipole->realEmissionME(const_cast<MatchboxMEBase*>(this)); nDipole->underlyingBornME(*b); nDipole->setupBookkeeping(); if ( !(nDipole->empty()) ) { res.push_back(nDipole); done.insert(make_pair(make_pair(make_pair(emitter,emission),spectator),make_pair(*b,*d))); if ( nDipole->isSymmetric() ) done.insert(make_pair(make_pair(make_pair(emission,emitter),spectator),make_pair(*b,*d))); ostringstream dname; dname << fullName() << "." << (**b).name() << "." << (**d).name() << ".[(" << emitter << "," << emission << ")," << spectator << "]"; if ( ! (generator()->preinitRegister(nDipole,dname.str()) ) ) throw InitException() << "Dipole " << dname.str() << " already existing."; nDipole->cloneDependencies(dname.str()); } } } } } } return res; } double MatchboxMEBase::colourCorrelatedME2(pair<int,int> ij) const { if ( matchboxAmplitude() ) { double res; if ( !calculateME2(res,ij) ) return res; matchboxAmplitude()->prepareAmplitudes(); lastME2(matchboxAmplitude()->colourCorrelatedME2(ij)* matchboxAmplitude()->lastCrossingSign()* me2Norm()); cacheME2(lastME2(),ij); logME2(); return lastME2(); } throw Exception() << "MatchboxMEBase::colourCorrelatedME2() expects a MatchboxAmplitude object.\n" << "Please check your setup." << Exception::abortnow; return 0.; } double MatchboxMEBase::spinColourCorrelatedME2(pair<int,int> ij, const SpinCorrelationTensor& c) const { if ( matchboxAmplitude() ) { double res; if ( !calculateME2(res,ij) ) return res; matchboxAmplitude()->prepareAmplitudes(); lastME2(matchboxAmplitude()->spinColourCorrelatedME2(ij,c)* matchboxAmplitude()->lastCrossingSign()* me2Norm()); cacheME2(lastME2(),ij); logME2(); return lastME2(); } throw Exception() << "MatchboxMEBase::spinColourCorrelatedME2() expects a MatchboxAmplitude object.\n" << "Please check your setup." << Exception::abortnow; return 0.; } void MatchboxMEBase::flushCaches() { if ( cache() ) cache()->flush(); if ( matchboxAmplitude() ) matchboxAmplitude()->flushCaches(); } void MatchboxMEBase::printLastEvent(ostream& os) const { os << "--- MatchboxMEBase last event information --------------------------------------\n"; os << " for matrix element '" << name() << "'\n"; os << " process considered:\n "; int in = 0; for ( cPDVector::const_iterator p = mePartonData().begin(); p != mePartonData().end(); ++p ) { os << (**p).PDGName() << " "; if ( ++in == 2 ) os << " -> "; } os << " kinematic environment as set by the XComb " << lastXCombPtr() << ":\n" << " sqrt(shat)/GeV = " << sqrt(lastSHat()/GeV2) << " x1 = " << lastX1() << " x2 = " << lastX2() << " alphaS = " << lastAlphaS() << "\n"; os << " momenta/GeV generated from random numbers\n "; copy(meInfo().begin(),meInfo().end(),ostream_iterator<double>(os," ")); os << ":\n "; for ( vector<Lorentz5Momentum>::const_iterator p = meMomenta().begin(); p != meMomenta().end(); ++p ) { os << (*p/GeV) << "\n "; } os << "last cross section/nb calculated was:\n " << (lastMECrossSection()/nanobarn) << " (pdf weight " << lastMEPDFWeight() << ")\n"; os << "--------------------------------------------------------------------------------\n"; os << flush; } void MatchboxMEBase::logGenerateKinematics(const double * r) const { if ( !theVerbose ) return; generator()->log() << "'" << name() << "' generated kinematics\nfrom " << nDim() << " random numbers:\n"; copy(r,r+nDim(),ostream_iterator<double>(generator()->log()," ")); generator()->log() << "\n"; generator()->log() << "storing phase space information in XComb " << lastXCombPtr() << "\n"; generator()->log() << "generated phase space point (in GeV):\n"; vector<Lorentz5Momentum>::const_iterator pit = meMomenta().begin(); cPDVector::const_iterator dit = mePartonData().begin(); for ( ; pit != meMomenta().end() ; ++pit, ++dit ) generator()->log() << (**dit).PDGName() << " : " << (*pit/GeV) << "\n"; generator()->log() << "with x1 = " << lastX1() << " x2 = " << lastX2() << "\n" << "and Jacobian = " << jacobian() << " sHat/GeV2 = " << (lastSHat()/GeV2) << "\n" << flush; } void MatchboxMEBase::logSetScale() const { if ( !theVerbose ) return; generator()->log() << "'" << name() << "' set scales using XComb " << lastXCombPtr() << ":\n" << "scale/GeV2 = " << (scale()/GeV2) << " xi_R = " << renormalizationScaleFactor() << " xi_F = " << factorizationScaleFactor() << "\n" << "alpha_s = " << lastAlphaS() << "\n" << flush; } void MatchboxMEBase::logPDFWeight() const { if ( !theVerbose ) return; generator()->log() << "'" << name() << "' calculated pdf weight = " << lastMEPDFWeight() << " from XComb " << lastXCombPtr() << "\n" << "x1 = " << lastX1() << " (" << (mePartonData()[0]->coloured() ? "" : "not ") << "used) " << "x2 = " << lastX2() << " (" << (mePartonData()[1]->coloured() ? "" : "not ") << "used)\n" << flush; } void MatchboxMEBase::logME2() const { if ( !theVerbose ) return; generator()->log() << "'" << name() << "' evaluated me2 using XComb " << lastXCombPtr() << "\n" << "and phase space point (in GeV):\n"; vector<Lorentz5Momentum>::const_iterator pit = meMomenta().begin(); cPDVector::const_iterator dit = mePartonData().begin(); for ( ; pit != meMomenta().end() ; ++pit, ++dit ) generator()->log() << (**dit).PDGName() << " : " << (*pit/GeV) << "\n"; generator()->log() << "with x1 = " << lastX1() << " x2 = " << lastX2() << "\n" << "sHat/GeV2 = " << (lastSHat()/GeV2) << " me2 = " << lastME2() << "\n" << flush; } void MatchboxMEBase::logDSigHatDR() const { if ( !theVerbose ) return; generator()->log() << "'" << name() << "' evaluated cross section using XComb " << lastXCombPtr() << "\n" << "Jacobian = " << jacobian() << " sHat/GeV2 = " << (lastSHat()/GeV2) << " dsig/nb = " << (lastMECrossSection()/nanobarn) << "\n" << flush; } void MatchboxMEBase::dumpInfo(const string& prefix) const { generator()->log() << prefix << fullName() << " [" << this << "]\n"; generator()->log() << prefix << " | XComb " << lastXCombPtr() << " for "; if ( lastXCombPtr() ) { for ( cPDVector::const_iterator p = lastXComb().mePartonData().begin(); p != lastXComb().mePartonData().end(); ++p ) { generator()->log() << (**p).PDGName() << " "; } } generator()->log() << "\n"; if ( !reweights().empty() ) { generator()->log() << prefix << " | Reweights\n"; for ( vector<Ptr<MatchboxReweightBase>::ptr>::const_iterator r = reweights().begin(); r != reweights().end(); ++r ) { (**r).dumpInfo(prefix + " | "); } } if ( phasespace() ) { generator()->log() << prefix << " | Phasespace\n"; phasespace()->dumpInfo(prefix + " | "); } if ( matchboxAmplitude() ) { generator()->log() << prefix << " | Amplitude\n"; matchboxAmplitude()->dumpInfo(prefix + " | "); } } void MatchboxMEBase::cloneDependencies(const std::string& prefix) { if ( phasespace() ) { Ptr<MatchboxPhasespace>::ptr myPhasespace = phasespace()->cloneMe(); ostringstream pname; pname << (prefix == "" ? fullName() : prefix) << "/" << myPhasespace->name(); if ( ! (generator()->preinitRegister(myPhasespace,pname.str()) ) ) throw InitException() << "Phasespace generator " << pname.str() << " already existing."; myPhasespace->cloneDependencies(pname.str()); phasespace(myPhasespace); } theAmplitude = dynamic_ptr_cast<Ptr<MatchboxAmplitude>::ptr>(amplitude()); if ( matchboxAmplitude() ) { Ptr<MatchboxAmplitude>::ptr myAmplitude = matchboxAmplitude()->cloneMe(); ostringstream pname; pname << (prefix == "" ? fullName() : prefix) << "/" << myAmplitude->name(); if ( ! (generator()->preinitRegister(myAmplitude,pname.str()) ) ) throw InitException() << "Amplitude " << pname.str() << " already existing."; myAmplitude->cloneDependencies(pname.str()); matchboxAmplitude(myAmplitude); amplitude(myAmplitude); matchboxAmplitude()->orderInGs(orderInAlphaS()); matchboxAmplitude()->orderInGem(orderInAlphaEW()); } if ( scaleChoice() ) { Ptr<MatchboxScaleChoice>::ptr myScaleChoice = scaleChoice()->cloneMe(); ostringstream pname; pname << (prefix == "" ? fullName() : prefix) << "/" << myScaleChoice->name(); if ( ! (generator()->preinitRegister(myScaleChoice,pname.str()) ) ) throw InitException() << "Scale choice " << pname.str() << " already existing."; scaleChoice(myScaleChoice); } for ( vector<Ptr<MatchboxReweightBase>::ptr>::iterator rw = theReweights.begin(); rw != theReweights.end(); ++rw ) { Ptr<MatchboxReweightBase>::ptr myReweight = (**rw).cloneMe(); ostringstream pname; pname << (prefix == "" ? fullName() : prefix) << "/" << (**rw).name(); if ( ! (generator()->preinitRegister(myReweight,pname.str()) ) ) throw InitException() << "Reweight " << pname.str() << " already existing."; myReweight->cloneDependencies(pname.str()); *rw = myReweight; } } void MatchboxMEBase::persistentOutput(PersistentOStream & os) const { os << theReweights << thePhasespace << theAmplitude << theScaleChoice << theDiagramGenerator << theSubprocesses << theFactorizationScaleFactor << theRenormalizationScaleFactor << theVerbose << theCache << theFixedCouplings << theNLight << theGetColourCorrelatedMEs << symmetryFactors; } void MatchboxMEBase::persistentInput(PersistentIStream & is, int) { is >> theReweights >> thePhasespace >> theAmplitude >> theScaleChoice >> theDiagramGenerator >> theSubprocesses >> theFactorizationScaleFactor >> theRenormalizationScaleFactor >> theVerbose >> theCache >> theFixedCouplings >> theNLight >> theGetColourCorrelatedMEs >> symmetryFactors; } void MatchboxMEBase::Init() { static ClassDocumentation<MatchboxMEBase> documentation ("MatchboxMEBase is the base class for matrix elements " "in the context of the matchbox NLO interface."); static RefVector<MatchboxMEBase,MatchboxReweightBase> interfaceReweights ("Reweights", "Reweight objects to be applied to this matrix element.", &MatchboxMEBase::theReweights, -1, false, false, true, true, false); static Reference<MatchboxMEBase,MatchboxPhasespace> interfacePhasespace ("Phasespace", "Set the phasespace generator to be used.", &MatchboxMEBase::thePhasespace, false, false, true, true, false); static Reference<MatchboxMEBase,Tree2toNGenerator> interfaceDiagramGenerator ("DiagramGenerator", "Set the diagram generator to be used.", &MatchboxMEBase::theDiagramGenerator, false, false, true, true, false); static Reference<MatchboxMEBase,MatchboxScaleChoice> interfaceScaleChoice ("ScaleChoice", "Set the scale choice to be used.", &MatchboxMEBase::theScaleChoice, false, false, true, true, false); static Reference<MatchboxMEBase,MatchboxMECache> interfaceMECache ("Cache", "Set the cache object to be used.", &MatchboxMEBase::theCache, false, false, true, true, false); static Parameter<MatchboxMEBase,double> interfaceFactorizationScaleFactor ("FactorizationScaleFactor", "The factorization scale factor.", &MatchboxMEBase::theFactorizationScaleFactor, 1.0, 0.0, 0, false, false, Interface::lowerlim); static Parameter<MatchboxMEBase,double> interfaceRenormalizationScaleFactor ("RenormalizationScaleFactor", "The renormalization scale factor.", &MatchboxMEBase::theRenormalizationScaleFactor, 1.0, 0.0, 0, false, false, Interface::lowerlim); static Switch<MatchboxMEBase,bool> interfaceVerbose ("Verbose", "Print full infomation on each evaluated phase space point.", &MatchboxMEBase::theVerbose, false, false, false); static SwitchOption interfaceVerboseOn (interfaceVerbose, "On", "On", true); static SwitchOption interfaceVerboseOff (interfaceVerbose, "Off", "Off", false); static Switch<MatchboxMEBase,bool> interfaceFixedCouplings ("FixedCouplings", "Indicate that no running couplings should be used.", &MatchboxMEBase::theFixedCouplings, false, false, false); static SwitchOption interfaceFixedCouplingsOn (interfaceFixedCouplings, "On", "On", true); static SwitchOption interfaceFixedCouplingsOff (interfaceFixedCouplings, "Off", "Off", false); } IBPtr MatchboxMEBase::clone() const { return new_ptr(*this); } IBPtr MatchboxMEBase::fullclone() const { return new_ptr(*this); } void MatchboxMEBase::doinit() { MEBase::doinit(); theAmplitude = dynamic_ptr_cast<Ptr<MatchboxAmplitude>::ptr>(amplitude()); if ( matchboxAmplitude() ) { if ( matchboxAmplitude()->colourBasis() ) { size_t dim = matchboxAmplitude()->colourBasis()->prepare(diagrams(),matchboxAmplitude()->noCorrelations()); matchboxAmplitude()->colourBasisDim(dim); } matchboxAmplitude()->nLight(nLight()); } } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<MatchboxMEBase,MEBase> describeHerwigMatchboxMEBase("Herwig::MatchboxMEBase", "HwMatchbox.so"); ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/MatchboxAmplitude.h���������������������������������0000644�0001750�0001750�00000034271�11754474775�025767� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxAmplitude.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxAmplitude_H #define HERWIG_MatchboxAmplitude_H // // This is the declaration of the MatchboxAmplitude class. // #include "ThePEG/MatrixElement/Amplitude.h" #include "ThePEG/Handlers/LastXCombInfo.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/MatrixElement/Matchbox/Utility/ColourBasis.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SpinCorrelationTensor.h" namespace Herwig { using namespace ThePEG; class MatchboxMEBase; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxAmplitude is the base class for amplitude * implementations inside Matchbox. * * @see \ref MatchboxAmplitudeInterfaces "The interfaces" * defined for MatchboxAmplitude. */ class MatchboxAmplitude: public Amplitude, public LastXCombInfo<StandardXComb> { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxAmplitude(); /** * The destructor. */ virtual ~MatchboxAmplitude(); //@} public: typedef map<vector<int>,CVector> AmplitudeMap; typedef map<vector<int>,CVector>::iterator AmplitudeIterator; typedef map<vector<int>,CVector>::const_iterator AmplitudeConstIterator; /** * Return the amplitude. Needs to be implemented from * ThePEG::Amplitude but is actually ill-defined, as colours of the * external particles are not specified. To this extent, this * implementation just asserts. */ virtual Complex value(const tcPDVector & particles, const vector<Lorentz5Momentum> & momenta, const vector<int> & helicities); /** @name Subprocess information */ //@{ /** * Return true, if this amplitude can handle the given process. */ virtual bool canHandle(const PDVector&) const { return false; } /** * Return a ME instance appropriate for this amplitude and the given * subprocesses */ Ptr<MatchboxMEBase>::ptr makeME(const vector<PDVector>&) const; /** * Return the amplitude parton data. */ const cPDVector& lastAmplitudePartonData() const { return theLastAmplitudePartonData->second; } /** * Access the amplitude parton data. */ cPDVector& lastAmplitudePartonData() { return theLastAmplitudePartonData->second; } /** * Access the amplitude parton data. */ map<tStdXCombPtr,cPDVector>& amplitudePartonData() { return theAmplitudePartonData; } /** * Return the number of light flavours */ unsigned int nLight() const { return theNLight; } /** * Set the number of light flavours */ void nLight(unsigned int n) { theNLight = n; } /** * Set the (tree-level) order in \f$g_S\f$ in which this matrix * element should be evaluated. */ virtual void orderInGs(unsigned int) {} /** * Return the (tree-level) order in \f$g_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInGs() const = 0; /** * Set the (tree-level) order in \f$g_{EM}\f$ in which this matrix * element should be evaluated. */ virtual void orderInGem(unsigned int) {} /** * Return the (tree-level) order in \f$g_{EM}\f$ in which this matrix * element is given. */ virtual unsigned int orderInGem() const = 0; /** * Return the Herwig++ StandardModel object */ Ptr<StandardModel>::tcptr standardModel() { if ( !theStandardModel ) theStandardModel = dynamic_ptr_cast<Ptr<StandardModel>::tcptr>(HandlerBase::standardModel()); return theStandardModel; } //@} /** @name Colour basis. */ //@{ /** * Return the colour basis. */ Ptr<ColourBasis>::tptr colourBasis() const { return theColourBasis; } /** * Set the colour basis dimensionality. */ void colourBasisDim(size_t dim) { theColourBasisDim = dim; } /** * Get the colour basis dimensionality. */ size_t colourBasisDim() const { return theColourBasisDim; } /** * Return true, if this amplitude will not require colour correlations. */ virtual bool noCorrelations() const { return !haveOneLoop(); } /** * Return true, if the colour basis is capable of assigning colour * flows. */ virtual bool haveColourFlows() const { return colourBasis() ? colourBasis()->haveColourFlows() : false; } /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const { return haveColourFlows() ? theColourBasis->colourGeometries(diag,lastLargeNAmplitudes()) : Selector<const ColourLines *>(); } /** * Return the colour crossing information as filled by the last call to * fillCrossingMap(...), mapping amplitude ids to colour basis ids. */ const map<size_t,size_t>& lastColourMap() const { return theLastColourMap->second; } /** * Access the colour crossing information. */ map<size_t,size_t>& lastColourMap() { return theLastColourMap->second; } /** * Access the colour crossing information. */ map<tStdXCombPtr,map<size_t,size_t> >& colourMap() { return theColourMap; } //@} /** @name Phasespace point, crossing and helicities */ //@{ /** * Set the xcomb object. */ virtual void setXComb(tStdXCombPtr xc) { theLastXComb = xc; fillCrossingMap(); } /** * Return the momentum as crossed appropriate for this amplitude. */ Lorentz5Momentum amplitudeMomentum(int) const; /** * Perform a normal ordering of external legs and fill the * crossing information as. This default implementation sorts * lexicographically in (abs(colour)/spin/abs(charge)), putting pairs * of particles/anti-particles where possible. */ virtual void fillCrossingMap(size_t shift = 0); /** * Return the crossing sign. */ double lastCrossingSign() const { return theLastCrossingSign; } /** * Set the crossing sign. */ void lastCrossingSign(double s) { theLastCrossingSign = s; } /** * Return the crossing information as filled by the last call to * fillCrossingMap(...), mapping amplitude ids to process ids. */ const vector<int>& lastCrossingMap() const { return theLastCrossingMap->second; } /** * Access the crossing information. */ vector<int>& lastCrossingMap() { return theLastCrossingMap->second; } /** * Access the crossing information. */ map<tStdXCombPtr,vector<int> >& crossingMap() { return theCrossingMap; } /** * Access the crossing signs. */ map<tStdXCombPtr,double>& crossingSigns() { return theCrossingSigns; } /** * Generate the helicity combinations. */ virtual set<vector<int> > generateHelicities() const; //@} /** @name Tree-level amplitudes */ //@{ /** * Calculate the tree level amplitudes for the phasespace point * stored in lastXComb. */ virtual void prepareAmplitudes(); /** * Return last evaluated helicity amplitudes. */ const AmplitudeMap& lastAmplitudes() const { return theLastAmplitudes; } /** * Access the last evaluated helicity amplitudes. */ AmplitudeMap& lastAmplitudes() { return theLastAmplitudes; } /** * Return last evaluated, leading colour helicity amplitudes. */ const AmplitudeMap& lastLargeNAmplitudes() const { return theLastLargeNAmplitudes; } /** * Access the last evaluated, leading colour helicity amplitudes. */ AmplitudeMap& lastLargeNAmplitudes() { return theLastLargeNAmplitudes; } /** * Return the matrix element squared. */ virtual double me2() const { return lastCrossingSign()*colourBasis()->me2(mePartonData(),lastAmplitudes()); } /** * Return the colour correlated matrix element. */ virtual double colourCorrelatedME2(pair<int,int> ij) const; /** * Return the colour and spin correlated matrix element. */ virtual double spinColourCorrelatedME2(pair<int,int> emitterSpectator, const SpinCorrelationTensor& c) const; /** * Evaluate the amplitude for the given colour tensor id and * helicity assignment */ virtual Complex evaluate(size_t, const vector<int>&, Complex&) { return 0.; } //@} /** @name One-loop amplitudes */ //@{ /** * Return true, if this amplitude is capable of calculating one-loop * (QCD) corrections. */ virtual bool haveOneLoop() const { return false; } /** * Return true, if this amplitude only provides * one-loop (QCD) corrections. */ virtual bool onlyOneLoop() const { return false; } /** * Return true, if one loop corrections have been calculated in * dimensional reduction. Otherwise conventional dimensional * regularization is assumed. Note that renormalization is always * assumed to be MSbar. */ bool isDR() const { return false; } /** * Return true, if one loop corrections are given in the conventions * of the integrated dipoles. */ bool isCS() const { return false; } /** * Return the value of the dimensional regularization * parameter. Note that renormalization scale dependence is fully * restored in DipoleIOperator. */ virtual Energy2 mu2() const { return 0.*GeV2; } /** * Calculate the one-loop amplitudes for the phasespace point * stored in lastXComb, if provided. */ virtual void prepareOneLoopAmplitudes(); /** * Return last evaluated one-loop helicity amplitudes. */ const AmplitudeMap& lastOneLoopAmplitudes() const { return theLastOneLoopAmplitudes; } /** * Access the last evaluated one-loop helicity amplitudes. */ AmplitudeMap& lastOneLoopAmplitudes() { return theLastOneLoopAmplitudes; } /** * Return the one-loop/tree interference. */ virtual double oneLoopInterference() const { return lastCrossingSign()*colourBasis()->interference(mePartonData(), lastOneLoopAmplitudes(),lastAmplitudes()); } /** * Evaluate the amplitude for the given colour tensor id and * helicity assignment */ virtual Complex evaluateOneLoop(size_t, const vector<int>&) { return 0.; } //@} /** @name Caching and helpers to setup amplitude objects. */ //@{ /** * Flush all cashes. */ virtual void flushCaches() { calculateTrees = true; calculateLoops = true; } /** * Clone this amplitude. */ Ptr<MatchboxAmplitude>::ptr cloneMe() const { return dynamic_ptr_cast<Ptr<MatchboxAmplitude>::ptr>(clone()); } /** * Clone the dependencies, using a given prefix. */ virtual void cloneDependencies(const std::string& prefix = ""); //@} /** @name Diagnostic information */ //@{ /** * Dump xcomb hierarchies. */ void dumpInfo(const string& prefix = "") 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * Recursively generate helicities */ void doGenerateHelicities(set<vector<int> >& res, vector<int>& current, size_t pos) const; /** * The Herwig++ StandardModel object */ Ptr<StandardModel>::tcptr theStandardModel; /** * The number of light flavours to be used. */ unsigned int theNLight; /** * The colour basis implementation to be used. */ Ptr<ColourBasis>::ptr theColourBasis; /** * The dimensionality of the colour basis for the processes covered * by the colour basis. */ size_t theColourBasisDim; /** * References to the amplitude values which have been contributing * to the last call of prepareAmplitudes. */ map<vector<int>,CVector> theLastAmplitudes; /** * References to the leading N amplitude values which have been * contributing to the last call of prepareAmplitudes. */ map<vector<int>,CVector> theLastLargeNAmplitudes; /** * References to the one-loop amplitude values which have been contributing * to the last call of prepareAmplitudes. */ map<vector<int>,CVector> theLastOneLoopAmplitudes; /** * The crossing information as filled by the last call to * fillCrossingMap() */ map<tStdXCombPtr,vector<int> > theCrossingMap; /** * The colour crossing information as filled by the last call to * fillCrossingMap() */ map<tStdXCombPtr,map<size_t,size_t> > theColourMap; /** * The crossing signs as filled by the last call to * fillCrossingMap() */ map<tStdXCombPtr,double> theCrossingSigns; /** * The amplitude parton data. */ map<tStdXCombPtr,cPDVector> theAmplitudePartonData; /** * The crossing information as filled by the last call to * fillCrossingMap() */ map<tStdXCombPtr,vector<int> >::iterator theLastCrossingMap; /** * The colour crossing information as filled by the last call to * fillCrossingMap() */ map<tStdXCombPtr,map<size_t,size_t> >::iterator theLastColourMap; /** * The amplitude parton data. */ map<tStdXCombPtr,cPDVector>::iterator theLastAmplitudePartonData; /** * The crossing sign. */ double theLastCrossingSign; /** * True, if tree amplitudes need to be recalculated. */ bool calculateTrees; /** * True, if loop amplitudes need to be recalculated. */ bool calculateLoops; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxAmplitude & operator=(const MatchboxAmplitude &); }; } #endif /* HERWIG_MatchboxAmplitude_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/DipoleRepository.h����������������������������������0000644�0001750�0001750�00000007162�11754474775�025670� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleRepository.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipoleRepository_H #define HERWIG_DipoleRepository_H #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" #include "Herwig++/MatrixElement/Matchbox/InsertionOperators/MatchboxInsertionOperator.h" #include "ThePEG/Repository/BaseRepository.h" #include "ThePEG/Pointer/Ptr.h" namespace Herwig { using namespace ThePEG; #define HERWIG_MatchboxDipoles "/Herwig/MatrixElements/Matchbox/Dipoles/" #define HERWIG_MatchboxTildes "/Herwig/MatrixElements/Matchbox/TildeKinematics/" #define HERWIG_MatchboxInsertionOperators "/Herwig/MatrixElements/Matchbox/InsertionOperators/" /** * \ingroup Matchbox * \author Simon Platzer * * \brief Repository of known subtraction dipoles. */ class DipoleRepository { public: /** * Return the known dipoles */ static const vector<Ptr<SubtractionDipole>::ptr>& dipoles() { return theDipoles(); } /** * Return the known insertion operators */ static const vector<Ptr<MatchboxInsertionOperator>::ptr>& insertionOperators() { return theInsertionOperators(); } public: /** * Register a dipole with associated tilde kinematics */ template<class DipoleT, class TildeKinematicsT, class InvertedTildeKinematicsT> static void registerDipole(string name, string tildeName, string invertedTildeName) { setup(); BaseRepository::PushDirectory(HERWIG_MatchboxTildes); typename Ptr<TildeKinematicsT>::ptr tilde; if ( !BaseRepository::GetPointer(HERWIG_MatchboxTildes + tildeName) ) { tilde = new_ptr(TildeKinematicsT()); BaseRepository::Register(tilde,tildeName); } else { tilde = dynamic_ptr_cast<typename Ptr<TildeKinematicsT>::ptr> (BaseRepository::GetPointer(HERWIG_MatchboxTildes + tildeName)); } typename Ptr<InvertedTildeKinematicsT>::ptr itilde; if ( !BaseRepository::GetPointer(HERWIG_MatchboxTildes + invertedTildeName) ) { itilde = new_ptr(InvertedTildeKinematicsT()); BaseRepository::Register(itilde,invertedTildeName); } else { itilde = dynamic_ptr_cast<typename Ptr<InvertedTildeKinematicsT>::ptr> (BaseRepository::GetPointer(HERWIG_MatchboxTildes + invertedTildeName)); } BaseRepository::PopDirectory(); BaseRepository::PushDirectory(HERWIG_MatchboxDipoles); typename Ptr<DipoleT>::ptr dip = new_ptr(DipoleT()); dip->tildeKinematics(tilde); dip->invertedTildeKinematics(itilde); BaseRepository::Register(dip,name); theDipoles().push_back(dip); BaseRepository::PopDirectory(); } /** * Register an insertion operator */ template<class InsertionOperatorT> static void registerInsertionOperator(string name) { setup(); BaseRepository::PushDirectory(HERWIG_MatchboxInsertionOperators); typename Ptr<InsertionOperatorT>::ptr iop = new_ptr(InsertionOperatorT()); BaseRepository::Register(iop,name); theInsertionOperators().push_back(iop); BaseRepository::PopDirectory(); } private: /** * The known dipoles */ static vector<Ptr<SubtractionDipole>::ptr>& theDipoles(); /** * The known insertion operators */ static vector<Ptr<MatchboxInsertionOperator>::ptr>& theInsertionOperators(); /** * True, if initialized. */ static bool& initialized(); /** * Setup directories in the repository */ static void setup(); }; } #endif // HERWIG_DipoleRepository_H ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/Makefile.am�����������������������������������������0000644�0001750�0001750�00000000504�11754474775�024230� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwMatchboxBase.la libHwMatchboxBase_la_SOURCES = \ DipoleRepository.cc \ DipoleRepository.h \ MatchboxAmplitude.cc \ MatchboxAmplitude.h \ MatchboxMEBase.cc \ MatchboxMEBase.h \ MatchboxNLOME.cc \ MatchboxNLOME.h \ MatchboxReweightBase.cc \ MatchboxReweightBase.h \ SubtractedME.cc \ SubtractedME.h ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/SubtractedME.cc�������������������������������������0000644�0001750�0001750�00000042006�11754474775�025030� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SubtractedME.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SubtractedME class. // #include "SubtractedME.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Repository/Repository.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Handlers/StdXCombGroup.h" #include "ThePEG/Utilities/Rebinder.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" using namespace Herwig; SubtractedME::SubtractedME() : MEGroup(), theSubtractionData(""), theVerbose(false), theSubProcessGroups(false), theVetoScales(false) {} SubtractedME::~SubtractedME() {} IBPtr SubtractedME::clone() const { return new_ptr(*this); } IBPtr SubtractedME::fullclone() const { return new_ptr(*this); } void SubtractedME::setXComb(tStdXCombPtr xc) { MEGroup::setXComb(xc); // only cluster real emission if ( lastCuts().jetFinder() ) lastCuts().jetFinder()->minOutgoing(lastXComb().mePartonData().size()-2); if ( verbose() ) { generator()->log() << "=== SubtractedME XComb hierarchies =============================================\n"; dumpInfo(); generator()->log() << "================================================================================\n"; } } MEBase::DiagramVector SubtractedME::dependentDiagrams(const cPDVector& proc, tMEPtr depME) const { Ptr<SubtractionDipole>::tptr dipole = dynamic_ptr_cast<Ptr<SubtractionDipole>::tptr>(depME); if ( !dipole ) { Throw<InitException>() << "A dependent matrix element of SubtractedME " << "has not been derived from SubtractionDipole. " << "Please check the corresponding input file."; } return dipole->underlyingBornDiagrams(proc); } vector<Ptr<SubtractionDipole>::ptr> SubtractedME::dipoles() { if ( allDipoles().empty() ) { allDipoles() = DipoleRepository::dipoles(); } if ( dependent().empty() ) getDipoles(); vector<Ptr<SubtractionDipole>::ptr> res; for ( MEVector::const_iterator k = dependent().begin(); k != dependent().end(); ++k ) res.push_back(dynamic_ptr_cast<Ptr<SubtractionDipole>::ptr>(*k)); return res; } void SubtractedME::getDipoles() { if ( !dependent().empty() ) return; if ( allDipoles().empty() ) { allDipoles() = DipoleRepository::dipoles(); } Ptr<MatchboxMEBase>::tptr real = dynamic_ptr_cast<Ptr<MatchboxMEBase>::tptr>(head()); if ( allDipoles().empty() || theBorns.empty() || !real ) Throw<InitException>() << "The SubtractedME '" << name() << "' could not generate " << "subtraction terms for the real emission " << "matrix element '" << real->name() << "'. " << "Please check the corresponding input file."; Ptr<MatchboxMEBase>::ptr myRealEmissionME = real->cloneMe(); ostringstream pname; pname << fullName() << "/" << myRealEmissionME->name(); if ( ! (generator()->preinitRegister(myRealEmissionME,pname.str()) ) ) throw InitException() << "Matrix element " << pname.str() << " already existing."; myRealEmissionME->cloneDependencies(pname.str()); head(myRealEmissionME); real = myRealEmissionME; MEVector dipMEs; vector<Ptr<SubtractionDipole>::ptr> genDipoles = real->getDipoles(allDipoles(),theBorns); if ( theSubtractionData != "" ) { theSubProcessGroups = true; for ( vector<Ptr<SubtractionDipole>::ptr>::const_iterator d = genDipoles.begin(); d != genDipoles.end(); ++d ) (**d).testSubtraction(); } if ( genDipoles.empty() ) Throw<InitException>() << "The SubtractedME '" << name() << "' could not generate " << "subtraction terms for the real emission " << "matrix element '" << real->name() << "'. " << "Please check the corresponding input file."; dipMEs.resize(genDipoles.size()); copy(genDipoles.begin(),genDipoles.end(),dipMEs.begin()); dependent() = dipMEs; } vector<Ptr<SubtractionDipole>::ptr> SubtractedME::splitDipoles(const cPDVector& born) { vector<Ptr<SubtractionDipole>::ptr> dips = dipoles(); vector<Ptr<SubtractionDipole>::ptr> res; for ( vector<Ptr<SubtractionDipole>::ptr>::iterator d = dips.begin(); d != dips.end(); ++d ) { for ( DiagramVector::const_iterator p = (**d).underlyingBornME()->diagrams().begin(); p != (**d).underlyingBornME()->diagrams().end(); ++p ) if ( born == (**p).partons() ) { res.push_back(*d); break; } } return res; } void SubtractedME::setVetoScales(tSubProPtr subpro) const { if ( !vetoScales() ) return; Ptr<SubtractionDipole>::tptr dipole; Energy pt; assert(head()->noMirror()); for ( MEVector::const_iterator d = dependent().begin(); d != dependent().end(); ++d ) { dipole = dynamic_ptr_cast<Ptr<SubtractionDipole>::ptr>(*d); assert(dipole); pt = dipole->lastPt(); if ( dipole->realEmitter() == 0 || dipole->realSpectator() == 0 ) { if ( subpro->incoming().first->vetoScale() < 0.0*GeV2 || subpro->incoming().first->vetoScale() > sqr(pt) ) subpro->incoming().first->vetoScale(sqr(pt)); } if ( dipole->realEmitter() == 1 || dipole->realSpectator() == 1 ) { if ( subpro->incoming().second->vetoScale() < 0.0*GeV2 || subpro->incoming().second->vetoScale() > sqr(pt) ) subpro->incoming().second->vetoScale(sqr(pt)); } if ( dipole->realEmitter() > 1 ) { if ( subpro->outgoing()[dipole->realEmitter()-2]->vetoScale() < 0.0*GeV2 || subpro->outgoing()[dipole->realEmitter()-2]->vetoScale() > sqr(pt) ) subpro->outgoing()[dipole->realEmitter()-2]->vetoScale(sqr(pt)); } if ( dipole->realSpectator() > 1 ) { if ( subpro->outgoing()[dipole->realSpectator()-2]->vetoScale() < 0.0*GeV2 || subpro->outgoing()[dipole->realSpectator()-2]->vetoScale() > sqr(pt) ) subpro->outgoing()[dipole->realSpectator()-2]->vetoScale(sqr(pt)); } if ( subpro->outgoing()[dipole->realEmission()-2]->vetoScale() < 0.0*GeV2 || subpro->outgoing()[dipole->realEmission()-2]->vetoScale() > sqr(pt) ) subpro->outgoing()[dipole->realEmission()-2]->vetoScale(sqr(pt)); } } void SubtractedME::doinit() { if ( dynamic_ptr_cast<Ptr<MatchboxMEBase>::tptr>(head()) ) { getDipoles(); } if ( theVerbose ) print(Repository::clog()); MEGroup::doinit(); } void SubtractedME::doinitrun() { MEGroup::doinitrun(); if ( theSubtractionData != "" ) { set<cPDVector> procs; for ( DiagramVector::const_iterator d = head()->diagrams().begin(); d != head()->diagrams().end(); ++d ) { if ( procs.find((**d).partons()) == procs.end() ) procs.insert((**d).partons()); } for ( set<cPDVector>::const_iterator p = procs.begin(); p != procs.end(); ++p ) { for ( size_t i = 0; i < (*p).size(); ++i ) { if ( !(*p)[i]->coloured() ) continue; if ( i > 1 && (*p)[i]->id() == ParticleID::g ) softHistograms[SoftSubtractionIndex(*p,i)] = SubtractionHistogram(0.001,20.); for ( size_t j = i+1; j < (*p).size(); ++j ) { if ( !(*p)[j]->coloured() ) continue; long iid = (*p)[i]->id(); long jid = (*p)[j]->id(); if ( i < 2 && j < 2 ) continue; if ( i < 2 && j > 1 ) { if ( abs(iid) < 7 && abs(jid) < 7 && iid != jid ) continue; } if ( i > 1 && j > 1 ) { if ( abs(iid) < 7 && abs(jid) < 7 && iid + jid != 0 ) continue; } collinearHistograms[CollinearSubtractionIndex(*p,make_pair(i,j))] = SubtractionHistogram(0.001,20.); } } } } } void SubtractedME::dofinish() { MEGroup::dofinish(); for ( map<CollinearSubtractionIndex,SubtractionHistogram>:: const_iterator b = collinearHistograms.begin(); b != collinearHistograms.end(); ++b ) { b->second.dump(theSubtractionData, b->first.first, b->first.second.first, b->first.second.second); } for ( map<SoftSubtractionIndex,SubtractionHistogram>:: const_iterator b = softHistograms.begin(); b != softHistograms.end(); ++b ) { b->second.dump(theSubtractionData, b->first.first, b->first.second, b->first.second); } } void SubtractedME::rebind(const TranslationMap & trans) { for ( vector<Ptr<SubtractionDipole>::ptr>::iterator d = theDipoles.begin(); d != theDipoles.end(); ++d ) *d = trans.translate(*d); MEGroup::rebind(trans); } IVector SubtractedME::getReferences() { IVector ret = MEGroup::getReferences(); for ( vector<Ptr<SubtractionDipole>::ptr>::const_iterator d = theDipoles.begin(); d != theDipoles.end(); ++d ) ret.push_back(*d); return ret; } void SubtractedME::print(ostream& os) const { os << "--- SubtractedME setup ---------------------------------------------------------\n"; os << " '" << name() << "' subtracting real emission\n '" << head()->name() << "' using the dipoles:\n"; for ( MEVector::const_iterator d = dependent().begin(); d != dependent().end(); ++d ) dynamic_ptr_cast<Ptr<SubtractionDipole>::tptr>(*d)->print(os); os << "--------------------------------------------------------------------------------\n"; os << flush; } void SubtractedME::printLastEvent(ostream& os) const { os << "--- SubtractedME last event information ----------------------------------------\n"; os << " for subtracted matrix element '" << name() << "'\n"; os << " real emission event information:\n"; dynamic_ptr_cast<Ptr<MatchboxMEBase>::tptr>(head())->printLastEvent(os); os << " dipoles event information:\n"; for ( MEVector::const_iterator d = dependent().begin(); d != dependent().end(); ++d ) dynamic_ptr_cast<Ptr<SubtractionDipole>::tptr>(*d)->printLastEvent(os); os << "--- end SubtractedME last event information ------------------------------------\n\n\n"; os << flush; } void SubtractedME::lastEventStatistics() { MEGroup::lastEventStatistics(); if ( !generator() ) return; /* if ( theVerbose ) printLastEvent(generator()->log()); */ if ( !collinearHistograms.empty() ) lastEventSubtraction(); } SubtractedME::SubtractionHistogram:: SubtractionHistogram(double low, double up, unsigned int nbins) : lower(low) { nbins = nbins + 1; double c = log10(up/low) / (nbins-1.); for ( unsigned int k = 1; k < nbins; ++k ) { bins[low*pow(10.0,k*c)] = make_pair(Constants::MaxDouble,0.); } } void SubtractedME::SubtractionHistogram:: dump(const std::string& prefix, const cPDVector& proc, int i, int j) const { ostringstream fname(""); for ( cPDVector::const_iterator p = proc.begin(); p != proc.end(); ++p ) fname << (**p).PDGName(); fname << "-" << i << "-" << j; ofstream out((prefix+fname.str()+".dat").c_str()); for ( map<double,pair<double,double> >::const_iterator b = bins.begin(); b != bins.end(); ++b ) { map<double,pair<double,double> >::const_iterator bp = b; --bp; if ( b->second.first != Constants::MaxDouble && b->second.second != 0. ) { if ( b != bins.begin() ) out << bp->first; else out << lower; out << " " << b->first << " " << b->second.first << " " << b->second.second << "\n" << flush; } } ofstream gpout((prefix+fname.str()+".gp").c_str()); gpout << "set terminal epslatex color solid;\n" << "set output '" << fname.str() << "-plot.tex';\n" << "set log x;\n" << "set size 0.5,0.6;\n" << "set yrange [0:5];\n" << "set xrange [0.01:100];\n"; if ( i != j ) { gpout << "set xlabel '$\\sqrt{s_{" << i << j << "}}/{\\rm GeV}$'\n"; } else { gpout << "set xlabel '$E_{" << i << "}/{\\rm GeV}$'\n"; } gpout << "plot 1 w lines lc rgbcolor \"#000000\" notitle, '" << fname.str() << ".dat' u (($1+$2)/2.):3:($4 < 4. ? $4 : 4.) w filledcurves lc rgbcolor \"#00AACC\" t " << "'$"; for ( size_t k = 0; k < proc.size(); k++ ) { if ( k == 2 ) gpout << "\\to "; gpout << (proc[k]->id() < 0 ? "\\bar{" : "") << (proc[k]->id() < 0 ? proc[k]->CC()->PDGName() : proc[k]->PDGName()) << (proc[k]->id() < 0 ? "}" : "") << " "; } gpout << "$';\n"; gpout << "reset;\n"; } void SubtractedME::lastEventSubtraction() { tStdXCombGroupPtr xc = dynamic_ptr_cast<tStdXCombGroupPtr>(lastXCombPtr()); CrossSection xcme2 = xc->lastHeadCrossSection(); CrossSection xcdip = ZERO; if ( xcme2 == ZERO ) return; for ( StdDepXCVector::const_iterator d = xc->dependent().begin(); d != xc->dependent().end(); ++d ) { if ( !(*d) ) continue; if ( !(**d).matrixElement()->apply() ) continue; xcdip += (**d).lastCrossSection(); } for ( size_t i = 0; i < meMomenta().size(); ++i ) { if ( i > 1 ) { if ( softHistograms.find(SoftSubtractionIndex(head()->mePartonData(),i)) != softHistograms.end() ) { softHistograms[SoftSubtractionIndex(head()->mePartonData(),i)]. book(meMomenta()[i].t()/GeV,abs(xcdip)/abs(xcme2)); } } for ( size_t j = i+1; j < meMomenta().size(); ++j ) { if ( collinearHistograms.find(CollinearSubtractionIndex(head()->mePartonData(),make_pair(i,j))) == collinearHistograms.end() ) continue; double s = sqrt(2.*meMomenta()[i]*meMomenta()[j])/GeV; collinearHistograms[CollinearSubtractionIndex(head()->mePartonData(),make_pair(i,j))]. book(s,abs(xcdip)/abs(xcme2)); } } } void SubtractedME::dumpInfo(const string& prefix) const { generator()->log() << prefix << fullName() << " [" << this << "]\n"; generator()->log() << prefix << " | XComb " << lastXCombPtr() << " for "; if ( lastXCombPtr() ) { for ( cPDVector::const_iterator p = lastXComb().mePartonData().begin(); p != lastXComb().mePartonData().end(); ++p ) { generator()->log() << (**p).PDGName() << " "; } } generator()->log() << "\n"; generator()->log() << prefix << " | Real emission ME\n"; dynamic_ptr_cast<Ptr<MatchboxMEBase>::tptr>(head())->dumpInfo(prefix+" | "); generator()->log() << prefix << " | Dipoles\n"; for ( MEVector::const_iterator k = dependent().begin(); k != dependent().end(); ++k ) { dynamic_ptr_cast<Ptr<SubtractionDipole>::ptr>(*k)->dumpInfo(prefix+" | "); } } void SubtractedME::persistentOutput(PersistentOStream & os) const { os << theDipoles << theBorns << theSubtractionData << theVerbose << theSubProcessGroups << theVetoScales; } void SubtractedME::persistentInput(PersistentIStream & is, int) { is >> theDipoles >> theBorns >> theSubtractionData >> theVerbose >> theSubProcessGroups >> theVetoScales; } void SubtractedME::Init() { static ClassDocumentation<SubtractedME> documentation ("SubtractedME represents a subtracted real emission matrix element."); static RefVector<SubtractedME,MatchboxMEBase> interfaceBorns ("Borns", "The underlying Born matrix elements to be considered", &SubtractedME::theBorns, -1, false, false, true, true, false); static Parameter<SubtractedME,string> interfaceSubtractionData ("SubtractionData", "File to dump subtraction check to.", &SubtractedME::theSubtractionData, "", false, false); static Switch<SubtractedME,bool> interfaceVerbose ("Verbose", "Print full infomation on each evaluated phase space point.", &SubtractedME::theVerbose, false, false, false); static SwitchOption interfaceVerboseOn (interfaceVerbose, "On", "On", true); static SwitchOption interfaceVerboseOff (interfaceVerbose, "Off", "Off", false); static Switch<SubtractedME,bool> interfaceSubProcessGroups ("SubProcessGroups", "Switch on or off production of sub-process groups.", &SubtractedME::theSubProcessGroups, false, false, false); static SwitchOption interfaceSubProcessGroupsOn (interfaceSubProcessGroups, "On", "On", true); static SwitchOption interfaceSubProcessGroupsOff (interfaceSubProcessGroups, "Off", "Off", false); static Switch<SubtractedME,bool> interfaceVetoScales ("VetoScales", "Switch on or off production of sub-process groups.", &SubtractedME::theVetoScales, true, false, false); static SwitchOption interfaceVetoScalesOn (interfaceVetoScales, "On", "On", true); static SwitchOption interfaceVetoScalesOff (interfaceVetoScales, "Off", "Off", false); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<SubtractedME,MEGroup> describeHerwigSubtractedME("Herwig::SubtractedME", "HwMatchbox.so"); ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Base/MatchboxMEBase.h������������������������������������0000644�0001750�0001750�00000050231�11754474775�025131� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxMEBase.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxMEBase_H #define HERWIG_MatchboxMEBase_H // // This is the declaration of the MatchboxMEBase class. // #include "ThePEG/MatrixElement/MEBase.h" #include "Herwig++/MatrixElement/Matchbox/Utility/SpinCorrelationTensor.h" #include "Herwig++/MatrixElement/Matchbox/Utility/Tree2toNGenerator.h" #include "Herwig++/MatrixElement/Matchbox/Utility/MatchboxScaleChoice.h" #include "Herwig++/MatrixElement/Matchbox/Utility/MatchboxMECache.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/MatchboxPhasespace.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxAmplitude.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxReweightBase.h" namespace Herwig { using namespace ThePEG; class SubtractionDipole; /** * \ingroup Matchbox * \author Simon Platzer * * \brief Keys for XComb meta information */ struct MatchboxMetaKeys { enum Keys { BornME, ColourCorrelatedMEs }; }; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxMEBase is the base class for matrix elements * in the context of the matchbox NLO interface. * * @see \ref MatchboxMEBaseInterfaces "The interfaces" * defined for MatchboxMEBase. */ class MatchboxMEBase: public MEBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxMEBase(); /** * The destructor. */ virtual ~MatchboxMEBase(); //@} public: /** @name Subprocess and diagram information. */ //@{ /** * Return the subprocesses. */ const vector<PDVector>& subProcesses() const { return theSubprocesses; } /** * Access the subprocesses. */ vector<PDVector>& subProcesses() { return theSubprocesses; } /** * Return the diagram generator. */ Ptr<Tree2toNGenerator>::tptr diagramGenerator() const { return theDiagramGenerator; } /** * Set the diagram generator. */ void diagramGenerator(Ptr<Tree2toNGenerator>::ptr gen) { theDiagramGenerator = gen; } /** * Return true, if this matrix element does not want to * make use of mirroring processes; in this case all * possible partonic subprocesses with a fixed assignment * of incoming particles need to be provided through the diagrams * added with the add(...) method. */ virtual bool noMirror () const { return true; } /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; using MEBase::getDiagrams; /** * With the information previously supplied with the * setKinematics(...) method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector &) const; using MEBase::diagrams; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Return the order in \f$\alpha_S\f$ in which this matrix element * is given. */ virtual unsigned int orderInAlphaS() const; using MEBase::orderInAlphaS; /** * Return the order in \f$\alpha_{EM}\f$ in which this matrix * element is given. Returns 0. */ virtual unsigned int orderInAlphaEW() const; using MEBase::orderInAlphaEW; /** * Return the number of light flavours, this matrix * element is calculated for. */ virtual unsigned int nLight() const { return theNLight; } /** * Set the number of light flavours, this matrix * element is calculated for. */ void nLight(unsigned int n) { theNLight = n; } //@} /** @name Phasespace generation */ //@{ /** * Return the phase space generator to be used. */ Ptr<MatchboxPhasespace>::tptr phasespace() const { return thePhasespace; } /** * Set the phase space generator to be used. */ void phasespace(Ptr<MatchboxPhasespace>::ptr ps) { thePhasespace = ps; } /** * Set the XComb object to be used in the next call to * generateKinematics() and dSigHatDR(). */ virtual void setXComb(tStdXCombPtr xc); /** * Generate incoming parton momenta. This default * implementation performs the standard mapping * from x1,x2 -> tau,y making 1/tau flat; incoming * parton momenta are stored in meMomenta()[0,1], * only massless partons are supported so far; * return the Jacobian of the mapping */ double generateIncomingPartons(const double* r1, const double* r2); /** * Generate internal degrees of freedom given nDim() uniform random * numbers in the interval ]0,1[. To help the phase space generator, * the 'dSigHatDR' should be a smooth function of these numbers, * although this is not strictly necessary. The return value should * be true of the generation succeeded. If so the generated momenta * should be stored in the meMomenta() vector. Derived classes * must call this method once internal degrees of freedom are setup * and finally return the result of this method. */ virtual bool generateKinematics(const double * r); /** * The number of internal degreed of freedom used in the matrix * element. */ virtual int nDim() const; /** * Return true, if this matrix element will generate momenta for the * incoming partons itself. The matrix element is required to store * the incoming parton momenta in meMomenta()[0,1]. No mapping in * tau and y is performed by the PartonExtractor object, if a * derived class returns true here. The phase space jacobian is to * include a factor 1/(x1 x2). */ virtual bool haveX1X2() const { return (phasespace() ? phasespace()->haveX1X2() : false); } /** * Return true, if this matrix element expects * the incoming partons in their center-of-mass system */ virtual bool wantCMS() const { return phasespace() ? phasespace()->wantCMS() : true; } /** * Return true, if the XComb steering this matrix element * should keep track of the random numbers used to generate * the last phase space point */ virtual bool keepRandomNumbers() const { return true; } /** * Return the meMomenta as generated at the last * phase space point. */ const vector<Lorentz5Momentum>& lastMEMomenta() const { return meMomenta(); } /** * Access the meMomenta. */ vector<Lorentz5Momentum>& lastMEMomenta() { return meMomenta(); } //@} /** @name Scale choices, couplings and PDFs */ //@{ /** * Set the scale choice object */ void scaleChoice(Ptr<MatchboxScaleChoice>::ptr sc) { theScaleChoice = sc; } /** * Return the scale choice object */ Ptr<MatchboxScaleChoice>::tptr scaleChoice() const { return theScaleChoice; } /** * Set scales and alphaS */ void setScale() const; /** * Return the scale associated with the phase space point provided * by the last call to setKinematics(). */ virtual Energy2 scale() const { return lastScale(); } /** * Return the renormalization scale for the last generated phasespace point. */ virtual Energy2 factorizationScale() const; /** * Get the factorization scale factor */ virtual double factorizationScaleFactor() const { return theFactorizationScaleFactor; } /** * Set the factorization scale factor */ void factorizationScaleFactor(double f) { theFactorizationScaleFactor = f; } /** * Return the renormalization scale for the last generated phasespace point. */ virtual Energy2 renormalizationScale() const; /** * Get the renormalization scale factor */ virtual double renormalizationScaleFactor() const { return theRenormalizationScaleFactor; } /** * Set the renormalization scale factor */ void renormalizationScaleFactor(double f) { theRenormalizationScaleFactor = f; } /** * Set veto scales on the particles at the given * SubProcess which has been generated using this * matrix element. */ virtual void setVetoScales(tSubProPtr) const; /** * Return true, if fixed couplings are used. */ bool fixedCouplings() const { return theFixedCouplings; } /** * Switch on fixed couplings. */ void setFixedCouplings(bool on = true) { theFixedCouplings = on; } /** * Return the value of \f$\alpha_S\f$ associated with the phase * space point provided by the last call to setKinematics(). This * versions returns SM().alphaS(scale()). */ virtual double alphaS() const { return lastAlphaS(); } /** * Return the value of \f$\alpha_EM\f$ associated with the phase * space point provided by the last call to setKinematics(). This * versions returns SM().alphaEM(scale()). */ virtual double alphaEM() const { return lastAlphaEM(); } /** * Return true, if this matrix element provides the PDF * weight for the first incoming parton itself. */ virtual bool havePDFWeight1() const { return diagrams().front()->partons()[0]->coloured(); } /** * Return true, if this matrix element provides the PDF * weight for the second incoming parton itself. */ virtual bool havePDFWeight2() const { return diagrams().front()->partons()[1]->coloured(); } /** * Set the PDF weight. */ void getPDFWeight(Energy2 factorizationScale = ZERO) const; /** * Supply the PDF weight for the first incoming parton. */ double pdf1(Energy2 factorizationScale = ZERO) const; /** * Supply the PDF weight for the second incoming parton. */ double pdf2(Energy2 factorizationScale = ZERO) const; //@} /** @name Amplitude information and matrix element evaluation */ //@{ /** * Return the amplitude. */ Ptr<MatchboxAmplitude>::tptr matchboxAmplitude() const { return theAmplitude; } /** * Set the amplitude. */ void matchboxAmplitude(Ptr<MatchboxAmplitude>::ptr amp) { theAmplitude = amp; } /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. */ virtual double me2() const; /** * Return the symmetry factor for identical final state particles. */ virtual double finalStateSymmetry() const; /** * Return the normalizing factor for the matrix element averaged * over quantum numbers and including running couplings. */ double me2Norm(unsigned int addAlphaS = 0) const; /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR() const; //@} /** @name One-loop corrections */ //@{ /** * Return the one-loop/tree interference. */ virtual double oneLoopInterference() const; /** * Return true, if this matrix element is capable of calculating * one-loop (QCD) corrections. */ virtual bool haveOneLoop() const; /** * Return true, if this matrix element only provides * one-loop (QCD) corrections. */ virtual bool onlyOneLoop() const; /** * Return true, if one loop corrections have been calculated in * dimensional reduction. Otherwise conventional dimensional * regularization is assumed. Note that renormalization is always * assumed to be MSbar. */ virtual bool isDR() const; /** * Return true, if one loop corrections are given in the conventions * of the integrated dipoles. */ virtual bool isCS() const; //@} /** @name Dipole subtraction */ //@{ /** * If this matrix element is considered a real * emission matrix element, return all subtraction * dipoles needed given a set of subtraction terms * and underlying Born matrix elements to choose * from. */ vector<Ptr<SubtractionDipole>::ptr> getDipoles(const vector<Ptr<SubtractionDipole>::ptr>&, const vector<Ptr<MatchboxMEBase>::ptr>&) const; /** * If this matrix element is considered a real emission matrix * element, but actually neglecting a subclass of the contributing * diagrams, return true if the given emitter-emission-spectator * configuration should not be considered when setting up * subtraction dipoles. */ virtual bool noDipole(int,int,int) const { return false; } /** * If this matrix element is considered an underlying Born matrix * element in the context of a subtracted real emission, but * actually neglecting a subclass of the contributing diagrams, * return true if the given emitter-spectator configuration * should not be considered when setting up subtraction dipoles. */ virtual bool noDipole(int,int) const { return false; } /** * Return the colour correlated matrix element squared with * respect to the given two partons as appearing in mePartonData(), * suitably scaled by sHat() to give a dimension-less number. */ virtual double colourCorrelatedME2(pair<int,int>) const; /** * Return the colour and spin correlated matrix element squared for * the gluon indexed by the first argument using the given * correlation tensor. */ virtual double spinColourCorrelatedME2(pair<int,int> emitterSpectator, const SpinCorrelationTensor& c) const; /** * Return true, if colour correlated matrix elements should be calculated * for later use */ bool getColourCorrelatedMEs() const { return theGetColourCorrelatedMEs; } /** * Switch on calculation of colour correlated matrix elements for * later use */ void doColourCorrelatedMEs() { theGetColourCorrelatedMEs = true; } /** * Calculate colour correlated matrix elements for later use */ void storeColourCorrelatedMEs(double xme2 = -1.) const; //@} /** @name Caching and diagnostic information */ //@{ /** * Set the ME cache object */ void cache(Ptr<MatchboxMECache>::ptr c) { theCache = c; } /** * Get the ME cache object */ Ptr<MatchboxMECache>::tptr cache() const { return theCache; } /** * Inform this matrix element that a new phase space * point is about to be generated, so all caches should * be flushed. */ virtual void flushCaches(); /** * Return true, if the matrix element needs to be * recalculated for the given phase space point. * If not, return the cached value in the given reference. */ bool calculateME2(double& xme2, const pair<int,int>& corr = make_pair(0,0)) const { if ( !cache() ) { xme2 = 0.; return true; } cache()->setXComb(lastXCombPtr()); return cache()->calculateME2(xme2,corr); } /** * Cache a calculated matrix element * for the last phase space point. */ void cacheME2(double xme2, const pair<int,int>& corr = make_pair(0,0)) const { if ( !cache() ) return; cache()->cacheME2(xme2,corr); } /** * Return true, if verbose */ bool verbose() const { return theVerbose; } /** * Switch on diagnostic information. */ void setVerbose(bool on = true) { theVerbose = on; } /** * Print debug information on the last event */ virtual void printLastEvent(ostream&) const; /** * Write out diagnostic information for * generateKinematics */ void logGenerateKinematics(const double * r) const; /** * Write out diagnostic information for * setting scales */ void logSetScale() const; /** * Write out diagnostic information for * pdf evaluation */ void logPDFWeight() const; /** * Write out diagnostic information for * me2 evaluation */ void logME2() const; /** * Write out diagnostic information * for dsigdr evaluation */ void logDSigHatDR() const; /** * Dump xcomb hierarchies. */ void dumpInfo(const string& prefix = "") const; //@} /** @name Reweight objects */ //@{ /** * Insert a reweight object */ void addReweight(Ptr<MatchboxReweightBase>::ptr rw) { theReweights.push_back(rw); } /** * Return the reweights */ const vector<Ptr<MatchboxReweightBase>::ptr>& reweights() const { return theReweights; } /** * Access the reweights */ vector<Ptr<MatchboxReweightBase>::ptr>& reweights() { return theReweights; } //@} /** @name Methods used to setup MatchboxMEBase objects */ //@{ /** * Return true if this object needs to be initialized before all * other objects (except those for which this function also returns * true). This default version always returns false, but subclasses * may override it to return true. */ virtual bool preInitialize() const { return true; } /** * Clone this matrix element. */ Ptr<MatchboxMEBase>::ptr cloneMe() const { return dynamic_ptr_cast<Ptr<MatchboxMEBase>::ptr>(clone()); } /** * Clone the dependencies, using a given prefix. */ void cloneDependencies(const std::string& prefix = ""); //@} 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(); //@} protected: /** * The final state symmetry factors. */ mutable map<tStdXCombPtr,double> symmetryFactors; private: /** * A vector of reweight objects the sum of which * should be applied to reweight this matrix element */ vector<Ptr<MatchboxReweightBase>::ptr> theReweights; /** * The phase space generator to be used. */ Ptr<MatchboxPhasespace>::ptr thePhasespace; /** * The amplitude to be used */ Ptr<MatchboxAmplitude>::ptr theAmplitude; /** * The diagram generator to be used. */ Ptr<Tree2toNGenerator>::ptr theDiagramGenerator; /** * The scale choice object */ Ptr<MatchboxScaleChoice>::ptr theScaleChoice; /** * The ME cache object */ Ptr<MatchboxMECache>::ptr theCache; /** * The subprocesses to be considered, if a diagram generator is * present. */ vector<PDVector> theSubprocesses; /** * The factorization scale factor. */ double theFactorizationScaleFactor; /** * The renormalization scale factor. */ double theRenormalizationScaleFactor; /** * Wether or not diagnostic information * should be written to the generator log */ bool theVerbose; /** * Use non-running couplings. */ bool theFixedCouplings; /** * The number of light flavours, this matrix * element is calculated for. */ unsigned int theNLight; /** * True, if colour correlated matrix elements should be calculated * for later use */ bool theGetColourCorrelatedMEs; /** * Map xcomb's to storage of Born matrix elements squared. */ mutable map<tStdXCombPtr,double> bornMEs; /** * Map xcomb's to storage of colour correlated matrix elements. */ mutable map<tStdXCombPtr,map<pair<int,int>,double> > colourCorrelatedMEs; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxMEBase & operator=(const MatchboxMEBase &); }; } #endif /* HERWIG_MatchboxMEBase_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/����������������������������������������������0000755�0001750�0001750�00000000000�11756464210�023360� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/TreePhasespace.h������������������������������0000644�0001750�0001750�00000010706�11754474775�026450� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TreePhasespace.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_TreePhasespace_H #define Herwig_TreePhasespace_H // // This is the declaration of the TreePhasespace class. // #include "Herwig++/MatrixElement/Matchbox/Phasespace/MatchboxPhasespace.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/PhasespaceHelpers.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer, Ken Arnold * * \brief TreePhasespace is a multichannel phasespace generator * adapting to singularity structures as determined from the matrix * elements diagrams. * * @see \ref TreePhasespaceInterfaces "The interfaces" * defined for TreePhasespace. */ class TreePhasespace: public MatchboxPhasespace { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ TreePhasespace(); /** * The destructor. */ virtual ~TreePhasespace(); //@} public: /** * Prepare a phase space generator for the given xcomb object. */ virtual void prepare(tStdXCombPtr, bool verbose = false); /** * Generate a phase space point and return its weight. */ virtual double generateKinematics(const double*, vector<Lorentz5Momentum>& momenta); /** * Return the number of random numbers required to produce a given * multiplicity final state. */ virtual int nDim(int nFinal) const { return 3*(nFinal - 1); // one additional number needed for channel selection } 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * Map xcomb's to channel vectors indexed by diagram id. */ map<tStdXCombPtr,map<Ptr<Tree2toNDiagram>::ptr,PhasespaceHelpers::PhasespaceTree> > channelMap; /** * The currently active channels. */ map<tStdXCombPtr,map<Ptr<Tree2toNDiagram>::ptr,PhasespaceHelpers::PhasespaceTree> >::iterator lastChannelsIterator; /** * The phasespace info object to be used. */ PhasespaceHelpers::PhasespaceInfo lastPhasespaceInfo; /** * Parameter steering from which on propagator virtualities are * sampled flat. */ double x0; /** * Parameter steering at which virtuality singularities of * propagators are actually cut off. */ double xc; /** * Return the currently active channels. */ map<Ptr<Tree2toNDiagram>::ptr,PhasespaceHelpers::PhasespaceTree>& lastChannels() { return lastChannelsIterator->second; } private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TreePhasespace & operator=(const TreePhasespace &); }; } #endif /* Herwig_TreePhasespace_H */ ����������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/FILightInvertedTildeKinematics.cc�������������0000644�0001750�0001750�00000007626�11754474775�031702� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FILightInvertedTildeKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FILightInvertedTildeKinematics class. // #include "FILightInvertedTildeKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; FILightInvertedTildeKinematics::FILightInvertedTildeKinematics() {} FILightInvertedTildeKinematics::~FILightInvertedTildeKinematics() {} IBPtr FILightInvertedTildeKinematics::clone() const { return new_ptr(*this); } IBPtr FILightInvertedTildeKinematics::fullclone() const { return new_ptr(*this); } bool FILightInvertedTildeKinematics::doMap(const double * r) { if ( ptMax() < ptCut() ) { jacobian(0.0); return false; } Lorentz5Momentum emitter = bornEmitterMomentum(); Lorentz5Momentum spectator = bornSpectatorMomentum(); double mapping = 1.0; pair<Energy,double> ptz = generatePtZ(mapping,r); if ( mapping == 0.0 ) { jacobian(0.0); return false; } Energy pt = ptz.first; double z = ptz.second; double y = sqr(pt/lastScale())/(z*(1.-z)); double x = 1./(1.+y); if ( x < spectatorX() ) { jacobian(0.0); return false; } mapping /= z*(1.-z); jacobian(mapping*(sqr(lastScale())/sHat())/(16.*sqr(Constants::pi))); double phi = 2.*Constants::pi*r[2]; Lorentz5Momentum kt = getKt(spectator,emitter,pt,phi,true); subtractionParameters().resize(2); subtractionParameters()[0] = x; subtractionParameters()[1] = z; realEmitterMomentum() = z*emitter + y*(1.-z)*spectator + kt; realEmissionMomentum() = (1.-z)*emitter + y*z*spectator - kt; realSpectatorMomentum() = (1.+y)*spectator; realEmitterMomentum().setMass(ZERO); realEmitterMomentum().rescaleEnergy(); realEmissionMomentum().setMass(ZERO); realEmissionMomentum().rescaleEnergy(); realSpectatorMomentum().setMass(ZERO); realSpectatorMomentum().rescaleEnergy(); return true; } Energy FILightInvertedTildeKinematics::lastPt() const { Energy scale = sqrt(2.*(bornEmitterMomentum()*bornSpectatorMomentum())); double x = subtractionParameters()[0]; double z = subtractionParameters()[1]; return scale * sqrt(z*(1.-z)*(1.-x)/x); } Energy FILightInvertedTildeKinematics::ptMax() const { double x = spectatorX(); return sqrt((1.-x)/x)*lastScale()/2.; } pair<double,double> FILightInvertedTildeKinematics::zBounds(Energy pt) const { double s = sqrt(1.-sqr(pt/ptMax())); return make_pair(0.5*(1.-s),0.5*(1.+s)); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FILightInvertedTildeKinematics::persistentOutput(PersistentOStream &) const { } void FILightInvertedTildeKinematics::persistentInput(PersistentIStream &, int) { } void FILightInvertedTildeKinematics::Init() { static ClassDocumentation<FILightInvertedTildeKinematics> documentation ("FILightInvertedTildeKinematics inverts the final-initial tilde " "kinematics."); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FILightInvertedTildeKinematics,InvertedTildeKinematics> describeHerwigFILightInvertedTildeKinematics("Herwig::FILightInvertedTildeKinematics", "HwMatchbox.so"); ����������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/MatchboxRambo.cc������������������������������0000644�0001750�0001750�00000011661�11754474775�026441� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxRambo.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxRambo class. // #include "MatchboxRambo.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/DescribeClass.h" #include "Herwig++/Utilities/GSLBisection.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; MatchboxRambo::MatchboxRambo() {} MatchboxRambo::~MatchboxRambo() {} IBPtr MatchboxRambo::clone() const { return new_ptr(*this); } IBPtr MatchboxRambo::fullclone() const { return new_ptr(*this); } static double weights[7] = { -1.,-1., 0.039788735772973833942, 0.00012598255637968550463, 1.3296564302788840628E-7, 7.0167897579949011130E-11, 2.2217170114046130768E-14 }; void MatchboxRambo::prepare(tStdXCombPtr xc, bool) { theLastXComb = xc; needToReshuffle = false; if ( xc ) { for ( cPDVector::const_iterator d = mePartonData().begin(); d != mePartonData().end(); ++d ) { if ( (**d).mass() != ZERO ) { needToReshuffle = true; break; } } } } double MatchboxRambo::generateKinematics(const double* r, vector<Lorentz5Momentum>& momenta) { size_t offset = dynamic_cast<const Tree2toNDiagram&>(*lastXComb().diagrams().front()).nSpace() > 0 ? 2 : 1; Energy w = sqrt(lastSHat()); size_t count = 0; Lorentz5Momentum Q; for ( vector<Lorentz5Momentum>::iterator k = momenta.begin() + offset; k != momenta.end(); ++k ) { Energy q = -w*log(r[count]*r[count+1]); double ct = 2.*r[count+2]-1.; double st = sqrt(1.-sqr(ct)); double phi = 2.*Constants::pi*r[count+3]; double cphi = cos(phi); double sphi = sqrt(1.-sqr(cphi)); if ( phi > Constants::pi ) sphi = -sphi; (*k).setMass(ZERO); (*k).setT(q); (*k).setX(q*cphi*st); (*k).setY(q*sphi*st); (*k).setZ(q*ct); count += 4; Q += *k; } Energy M = sqrt(Q.m2()); double x = w/M; Boost beta = -(Q.vect() * (1./M)); double gamma = Q.t()/M; double a = 1./(1.+gamma); for ( vector<Lorentz5Momentum>::iterator k = momenta.begin() + offset; k != momenta.end(); ++k ) { Energy q = (*k).t(); Energy bq = beta*(*k).vect(); (*k).setT(x*(gamma*q+bq)); (*k).setVect(x*((*k).vect()+(q+a*bq)*beta)); } size_t n = momenta.size()-offset; double weight = weights[n]; if ( !needToReshuffle ) { fillDiagramWeights(); return weight; } double xi; ReshuffleEquation solve(w,mePartonData().begin()+offset,mePartonData().end(), momenta.begin()+2,momenta.end()); GSLBisection solver(1e-10,1e-8,10000); try { xi = solver.value(solve,0.0,1.1); } catch (GSLBisection::GSLerror) { return 0.; } catch (GSLBisection::IntervalError) { return 0.; } weight *= pow(xi,3.*(n-1.)); Energy num = ZERO; Energy den = ZERO; cPDVector::const_iterator d = mePartonData().begin()+offset; for ( vector<Lorentz5Momentum>::iterator k = momenta.begin()+offset; k != momenta.end(); ++k, ++d ) { num += (*k).vect().mag2()/(*k).t(); Energy q = (*k).t(); (*k).setT(sqrt(sqr((**d).mass())+xi*xi*sqr((*k).t()))); (*k).setVect(xi*(*k).vect()); weight *= q/(*k).t(); den += (*k).vect().mag2()/(*k).t(); (*k).setMass((**d).mass()); } weight *= num/den; fillDiagramWeights(); return weight; } Energy MatchboxRambo::ReshuffleEquation::operator() (double xi) const { cPDVector::const_iterator d = dataBegin; vector<Lorentz5Momentum>::const_iterator p = momentaBegin; Energy res = -w; for ( ; d != dataEnd; ++d, ++p ) { res += sqrt(sqr((**d).mass()) + xi*xi*sqr(p->t())); } return res; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void MatchboxRambo::persistentOutput(PersistentOStream &) const { } void MatchboxRambo::persistentInput(PersistentIStream &, int) { } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<MatchboxRambo,MatchboxPhasespace> describeHerwigMatchboxRambo("Herwig::MatchboxRambo", "HwMatchbox.so"); void MatchboxRambo::Init() { static ClassDocumentation<MatchboxRambo> documentation ("MatchboxRambo implements RAMBO phase space generation."); } �������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/FFLightTildeKinematics.h����������������������0000644�0001750�0001750�00000005716�11754474775�030036� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFLightTildeKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFLightTildeKinematics_H #define HERWIG_FFLightTildeKinematics_H // // This is the declaration of the FFLightTildeKinematics class. // #include "Herwig++/MatrixElement/Matchbox/Phasespace/TildeKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief FFLightTildeKinematics implements the 'tilde' kinematics for * a final-final subtraction dipole. * */ class FFLightTildeKinematics: public TildeKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFLightTildeKinematics(); /** * The destructor. */ virtual ~FFLightTildeKinematics(); //@} public: /** * Perform the mapping to the tilde kinematics for the * last selected process and store all dimensionless * variables in the subtractionParameters() vector. * Return false, if the calculation of the tilde * kinematics was impossible for the selected configuration * and true on success. */ virtual bool doMap(); /** * Return the pt associated to the last merged splitting. */ virtual Energy lastPt() 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFLightTildeKinematics & operator=(const FFLightTildeKinematics &); }; } #endif /* HERWIG_FFLightTildeKinematics_H */ ��������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/FILightTildeKinematics.h����������������������0000644�0001750�0001750�00000005720�11754474775�030034� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FILightTildeKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FILightTildeKinematics_H #define HERWIG_FILightTildeKinematics_H // // This is the declaration of the FILightTildeKinematics class. // #include "Herwig++/MatrixElement/Matchbox/Phasespace/TildeKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief FILightTildeKinematics implements the 'tilde' kinematics for * a final-initial subtraction dipole. * */ class FILightTildeKinematics: public TildeKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FILightTildeKinematics(); /** * The destructor. */ virtual ~FILightTildeKinematics(); //@} public: /** * Perform the mapping to the tilde kinematics for the * last selected process and store all dimensionless * variables in the subtractionParameters() vector. * Return false, if the calculation of the tilde * kinematics was impossible for the selected configuration * and true on success. */ virtual bool doMap(); /** * Return the pt associated to the last merged splitting. */ virtual Energy lastPt() 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FILightTildeKinematics & operator=(const FILightTildeKinematics &); }; } #endif /* HERWIG_FILightTildeKinematics_H */ ������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/FFLightInvertedTildeKinematics.cc�������������0000644�0001750�0001750�00000007465�11754474775�031700� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFLightInvertedTildeKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFLightInvertedTildeKinematics class. // #include "FFLightInvertedTildeKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; FFLightInvertedTildeKinematics::FFLightInvertedTildeKinematics() {} FFLightInvertedTildeKinematics::~FFLightInvertedTildeKinematics() {} IBPtr FFLightInvertedTildeKinematics::clone() const { return new_ptr(*this); } IBPtr FFLightInvertedTildeKinematics::fullclone() const { return new_ptr(*this); } bool FFLightInvertedTildeKinematics::doMap(const double * r) { if ( ptMax() < ptCut() ) { jacobian(0.0); return false; } Lorentz5Momentum emitter = bornEmitterMomentum(); Lorentz5Momentum spectator = bornSpectatorMomentum(); double mapping = 1.0; pair<Energy,double> ptz = generatePtZ(mapping,r); if ( mapping == 0.0 ) { jacobian(0.0); return false; } Energy pt = ptz.first; double z = ptz.second; double y = sqr(pt/lastScale())/(z*(1.-z)); mapping /= z*(1.-z); jacobian(mapping*(1.-y)*(sqr(lastScale())/sHat())/(16.*sqr(Constants::pi))); double phi = 2.*Constants::pi*r[2]; Lorentz5Momentum kt = getKt(emitter,spectator,pt,phi); subtractionParameters().resize(2); subtractionParameters()[0] = y; subtractionParameters()[1] = z; realEmitterMomentum() = z*emitter + y*(1.-z)*spectator + kt; realEmissionMomentum() = (1.-z)*emitter + y*z*spectator - kt; realSpectatorMomentum() = (1.-y)*spectator; realEmitterMomentum().setMass(ZERO); realEmitterMomentum().rescaleEnergy(); realEmissionMomentum().setMass(ZERO); realEmissionMomentum().rescaleEnergy(); realSpectatorMomentum().setMass(ZERO); realSpectatorMomentum().rescaleEnergy(); return true; } Energy FFLightInvertedTildeKinematics::lastPt() const { Energy scale = sqrt(2.*(bornEmitterMomentum()*bornSpectatorMomentum())); double y = subtractionParameters()[0]; double z = subtractionParameters()[1]; return scale * sqrt(y*z*(1.-z)); } Energy FFLightInvertedTildeKinematics::ptMax() const { return lastScale()/2.; } pair<double,double> FFLightInvertedTildeKinematics::zBounds(Energy pt) const { double s = sqrt(1.-sqr(pt/ptMax())); return make_pair(0.5*(1.-s),0.5*(1.+s)); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FFLightInvertedTildeKinematics::persistentOutput(PersistentOStream &) const { } void FFLightInvertedTildeKinematics::persistentInput(PersistentIStream &, int) { } void FFLightInvertedTildeKinematics::Init() { static ClassDocumentation<FFLightInvertedTildeKinematics> documentation ("FFLightInvertedTildeKinematics inverts the final-final tilde " "kinematics."); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FFLightInvertedTildeKinematics,InvertedTildeKinematics> describeHerwigFFLightInvertedTildeKinematics("Herwig::FFLightInvertedTildeKinematics", "HwMatchbox.so"); �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/IILightInvertedTildeKinematics.cc�������������0000644�0001750�0001750�00000010461�11754474775�031674� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IILightInvertedTildeKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IILightInvertedTildeKinematics class. // #include "IILightInvertedTildeKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IILightInvertedTildeKinematics::IILightInvertedTildeKinematics() {} IILightInvertedTildeKinematics::~IILightInvertedTildeKinematics() {} IBPtr IILightInvertedTildeKinematics::clone() const { return new_ptr(*this); } IBPtr IILightInvertedTildeKinematics::fullclone() const { return new_ptr(*this); } bool IILightInvertedTildeKinematics::doMap(const double * r) { if ( ptMax() < ptCut() ) { jacobian(0.0); return false; } Lorentz5Momentum emitter = bornEmitterMomentum(); Lorentz5Momentum spectator = bornSpectatorMomentum(); double mapping = 1.0; pair<Energy,double> ptz = generatePtZ(mapping,r); if ( mapping == 0.0 ) { jacobian(0.0); return false; } Energy pt = ptz.first; double z = ptz.second; double ratio = sqr(pt/lastScale()); double x = ( z*(1.-z) - ratio ) / ( 1. - z ); double v = ratio / (1.-z); pt = lastScale()*sqrt(v*(1.-x-v)/x); if ( x < emitterX() || x > 1. || v > 1. || v > 1.-x ) { jacobian(0.0); return false; } mapping /= sqr(z*(1.-z)-ratio)/(1.-z); jacobian(mapping*(sqr(lastScale())/sHat())/(16.*sqr(Constants::pi))); subtractionParameters().resize(2); subtractionParameters()[0] = x; subtractionParameters()[1] = v; double phi = 2.*Constants::pi*r[2]; Lorentz5Momentum kt = getKt(emitter,spectator,pt,phi); realEmitterMomentum() = (1./x)*emitter; realEmissionMomentum() = ((1.-x-v)/x)*emitter+v*spectator+kt; realSpectatorMomentum() = spectator; K = realEmitterMomentum() + realSpectatorMomentum() - realEmissionMomentum(); K2 = K.m2(); Ktilde = emitter + spectator; KplusKtilde = K + Ktilde; KplusKtilde2 = KplusKtilde.m2(); realEmitterMomentum().setMass(ZERO); realEmitterMomentum().rescaleEnergy(); realEmissionMomentum().setMass(ZERO); realEmissionMomentum().rescaleEnergy(); realSpectatorMomentum().setMass(ZERO); realSpectatorMomentum().rescaleEnergy(); return true; } Energy IILightInvertedTildeKinematics::lastPt() const { Energy scale = sqrt(2.*(bornEmitterMomentum()*bornSpectatorMomentum())); double x = subtractionParameters()[0]; double v = subtractionParameters()[1]; return scale * sqrt(v*(1.-x-v)); } Energy IILightInvertedTildeKinematics::ptMax() const { double tau = emitterX()*spectatorX(); return (1.-tau)*lastScale()/2.; } pair<double,double> IILightInvertedTildeKinematics::zBounds(Energy pt) const { double tau = emitterX()*spectatorX(); double s = sqrt(1.-sqr(pt/ptMax())); return make_pair(0.5*(1.+tau-(1.-tau)*s),0.5*(1.+tau+(1.-tau)*s)); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IILightInvertedTildeKinematics::persistentOutput(PersistentOStream &) const { } void IILightInvertedTildeKinematics::persistentInput(PersistentIStream &, int) { } void IILightInvertedTildeKinematics::Init() { static ClassDocumentation<IILightInvertedTildeKinematics> documentation ("IILightInvertedTildeKinematics inverts the initial-initial tilde " "kinematics."); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<IILightInvertedTildeKinematics,InvertedTildeKinematics> describeHerwigIILightInvertedTildeKinematics("Herwig::IILightInvertedTildeKinematics", "HwMatchbox.so"); ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/Makefile.in�����������������������������������0000644�0001750�0001750�00000051173�11756461700�025435� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/Matchbox/Phasespace DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwMatchboxPhasespace_la_LIBADD = am_libHwMatchboxPhasespace_la_OBJECTS = \ FFLightInvertedTildeKinematics.lo FFLightTildeKinematics.lo \ FFMassiveInvertedTildeKinematics.lo \ FFMassiveTildeKinematics.lo FILightInvertedTildeKinematics.lo \ FILightTildeKinematics.lo IFLightInvertedTildeKinematics.lo \ IFLightTildeKinematics.lo IILightInvertedTildeKinematics.lo \ IILightTildeKinematics.lo InvertedTildeKinematics.lo \ MatchboxPhasespace.lo MatchboxRambo.lo PhasespaceHelpers.lo \ TildeKinematics.lo TreePhasespace.lo libHwMatchboxPhasespace_la_OBJECTS = \ $(am_libHwMatchboxPhasespace_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwMatchboxPhasespace_la_SOURCES) DIST_SOURCES = $(libHwMatchboxPhasespace_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwMatchboxPhasespace.la libHwMatchboxPhasespace_la_SOURCES = \ FFLightInvertedTildeKinematics.cc \ FFLightInvertedTildeKinematics.h \ FFLightTildeKinematics.cc \ FFLightTildeKinematics.h \ FFMassiveInvertedTildeKinematics.cc \ FFMassiveInvertedTildeKinematics.h \ FFMassiveTildeKinematics.cc \ FFMassiveTildeKinematics.h \ FILightInvertedTildeKinematics.cc \ FILightInvertedTildeKinematics.h \ FILightTildeKinematics.cc \ FILightTildeKinematics.h \ IFLightInvertedTildeKinematics.cc \ IFLightInvertedTildeKinematics.h \ IFLightTildeKinematics.cc \ IFLightTildeKinematics.h \ IILightInvertedTildeKinematics.cc \ IILightInvertedTildeKinematics.h \ IILightTildeKinematics.cc \ IILightTildeKinematics.h \ InvertedTildeKinematics.cc \ InvertedTildeKinematics.h \ MatchboxPhasespace.cc \ MatchboxPhasespace.h \ MatchboxRambo.cc \ MatchboxRambo.h \ PhasespaceHelpers.cc \ PhasespaceHelpers.h \ RandomHelpers.h \ TildeKinematics.cc \ TildeKinematics.h \ TreePhasespace.cc \ TreePhasespace.h all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/Matchbox/Phasespace/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/Matchbox/Phasespace/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwMatchboxPhasespace.la: $(libHwMatchboxPhasespace_la_OBJECTS) $(libHwMatchboxPhasespace_la_DEPENDENCIES) $(EXTRA_libHwMatchboxPhasespace_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwMatchboxPhasespace_la_OBJECTS) $(libHwMatchboxPhasespace_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFLightInvertedTildeKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFLightTildeKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFMassiveInvertedTildeKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFMassiveTildeKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FILightInvertedTildeKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FILightTildeKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IFLightInvertedTildeKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IFLightTildeKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IILightInvertedTildeKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IILightTildeKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/InvertedTildeKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxPhasespace.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxRambo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PhasespaceHelpers.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TildeKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TreePhasespace.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/RandomHelpers.h�������������������������������0000644�0001750�0001750�00000066627�11754474775�026334� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // RandomHelpers.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_RandomHelpers_H #define HERWIG_RandomHelpers_H #include "ThePEG/Config/ThePEG.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * \brief Phasespace generation utilities. */ namespace RandomHelpers { /** * \ingroup Matchbox * \author Simon Platzer * \brief Small helper. */ inline double sign(double x) { return x < 0. ? -1. : 1.; } /** * \ingroup Matchbox * \author Simon Platzer * \brief Define the generator concept. */ template<class Density> struct Generator { /** * Return the lower bound of the density generated. */ double lower() const; /** * Return the upper bound of the density generated. */ double upper() const; /** * Return the density's value */ double value(double x) const; /** * Return the density's normalization */ double normalization() const; /** * Generate the return value according to the implemented density, * given a flat random number on the unit interval. */ double operator()(double r) const; }; /** * \ingroup Matchbox * \author Simon Platzer * \brief A density expression. */ struct Expression {}; /** * \ingroup Matchbox * \author Simon Platzer * \brief Container base class for a general density. */ template<> struct Generator<Expression> { /** * The destructor. */ virtual ~Generator() {} /** * Return the lower bound of the density generated. */ virtual double lower() const = 0; /** * Return the upper bound of the density generated. */ virtual double upper() const = 0; /** * Return the density's value */ virtual double value(double x) const = 0; /** * Return the density's normalization */ virtual double normalization() const = 0; /** * Generate the return value according to the implemented density, * given a flat random number on the unit interval. */ virtual double operator()(double r) const = 0; }; /** * \ingroup Matchbox * \author Simon Platzer * \brief A density container. */ template<class Density> struct Container {}; /** * \ingroup Matchbox * \author Simon Platzer * \brief Container class for a general density. */ template<class Density> class Generator<Container<Density> > : public Generator<Expression> { /** * The generator. */ Generator<Density> generator; public: /** * Construct from generator. */ Generator(const Generator<Density>& gen) : generator(gen) {} /** * Return the lower bound of the density generated. */ virtual double lower() const { return generator.lower(); } /** * Return the upper bound of the density generated. */ virtual double upper() const { return generator.upper(); } /** * Return the density's value */ virtual double value(double x) const { return generator.value(x); } /** * Return the density's normalization */ virtual double normalization() const { return generator.normalization(); } /** * Generate the return value according to the implemented density, * given a flat random number on the unit interval. */ virtual double operator()(double r) const { return generator(r); } }; /** * \ingroup Matchbox * \author Simon Platzer * \brief Generate a random variable and return its weight. */ template<class Density> pair<double,double> generate(const Generator<Density>& gen, double r) { double x = gen(r); return make_pair(x,gen.normalization()/gen.value(x)); } /** * \ingroup Matchbox * \author Simon Platzer * \brief Remap a density to a new interval. */ template<class Density> struct Remap {}; /** * \ingroup Matchbox * \author Simon Platzer * \brief Generate a density remapped to a new interval. */ template<class Density> class Generator<Remap<Density> > { /** * The underlying generator. */ Generator<Density> theGenerator; /** * The new lower bound. */ double theLower; /** * The new upper bound. */ double theUpper; /** * Construct from generator and new boundaries. */ Generator(const Generator<Density>& gen, double low, double up) : theGenerator(gen), theLower(low), theUpper(up) { if ( low >= up ) throw std::logic_error("[Generator<Remap>] Invalid boundaries."); } /** * Return the generator. */ const Generator<Density>& generator() const { return theGenerator; } /** * Return the lower bound of the density generated. */ double lower() const { return theLower; } /** * Return the upper bound of the density generated. */ double upper() const { return theUpper; } /** * Return the density's value */ double value(double y) const { double xm = generator().lower(); double xp = generator().upper(); double ym = lower(); double yp = upper(); double x = ((xp-xm)/(yp-ym))*y+(yp*xm-ym*xp)/(yp-ym); return generator().value(x); } /** * Return the density's normalization */ double normalization() const { double xm = generator().lower(); double xp = generator().upper(); double ym = lower(); double yp = upper(); return ((yp-ym)/(xp-xm))*generator().normalization(); } /** * Generate the return value according to the implemented density, * given a flat random number on the unit interval. */ double operator()(double r) const { double xm = generator().lower(); double xp = generator().upper(); double ym = lower(); double yp = upper(); double x = ((yp-ym)/(xp-xm))*generator()(r)+(xp*ym-xm*yp)/(xp-xm); return x; } }; /** * \ingroup Matchbox * \author Simon Platzer * \brief Indicate remapping of a density. */ struct on { /** * The new lower boundary. */ double lower; /** * The new upper boundary. */ double upper; /** * Construct from boundaries. */ on(double a, double b) :lower(a), upper(b) {} }; /** * \ingroup Matchbox * \author Simon Platzer * \brief Construct a remapped density generator. */ template<class Density> Generator<Remap<Density> > operator*(const Generator<Density>& gen, const on& interval) { return Generator<Remap<Density> >(gen,interval.lower,interval.upper); } /** * \ingroup Matchbox * \author Simon Platzer * \brief Rescale a density. */ template<class Density> struct Rescale {}; /** * \ingroup Matchbox * \author Simon Platzer * \brief Generate a rescaled density. */ template<class Density> class Generator<Rescale<Density> > { /** * The underlying generator. */ Generator<Density> theGenerator; /** * The rescaling factor. */ double theScale; public: /** * Construct from generator and scale. */ Generator(const Generator<Density>& gen, double sc) : theGenerator(gen), theScale(sc) { } /** * Return the generator. */ const Generator<Density>& generator() const { return theGenerator; } /** * Return the scale */ double scale() const { return theScale; } /** * Return the lower bound of the density generated. */ double lower() const { return generator().lower(); } /** * Return the upper bound of the density generated. */ double upper() const { return generator().upper(); } /** * Return the density's value */ double value(double x) const { return scale()*generator().value(x); } /** * Return the density's normalization */ double normalization() const { return scale()*generator().normalization(); } /** * Generate the return value according to the implemented density, * given a flat random number on the unit interval. */ double operator()(double r) const { return generator()(r); } }; /** * \ingroup Matchbox * \author Simon Platzer * \brief Construct a rescaled density. */ template<class Density> Generator<Rescale<Density> > operator*(double a, const Generator<Density>& gen) { return Generator<Rescale<Density> >(gen,a); } /** * \ingroup Matchbox * \author Simon Platzer * \brief Add two densities. */ template<class Density1, class Density2> struct Sum {}; /** * \ingroup Matchbox * \author Simon Platzer * \brief Generate the sum of two densities. */ template<class Density1, class Density2> class Generator<Sum<Density1,Density2> > { /** * The first generator. */ Generator<Density1> theFirstGenerator; /** * The second generator. */ Generator<Density2> theSecondGenerator; /** * The lower boundary. */ double theLower; /** * The upper boundary. */ double theUpper; /** * The fraction of the unit interval considered for the first * generator. */ double theFraction; public: /** * Construct from generators. */ Generator(const Generator<Density1>& firstGen, const Generator<Density2>& secondGen) : theFirstGenerator(firstGen), theSecondGenerator(secondGen), theLower(min(firstGen.lower(),secondGen.lower())), theUpper(max(firstGen.upper(),secondGen.upper())), theFraction(1.) { theFraction = firstGenerator().normalization() / normalization(); } /** * Return the first generator. */ const Generator<Density1>& firstGenerator() const { return theFirstGenerator; } /** * Return the second generator. */ const Generator<Density2>& secondGenerator() const { return theSecondGenerator; } /** * Return the lower bound of the density generated. */ double lower() const { return theLower; } /** * Return the upper bound of the density generated. */ double upper() const { return theUpper; } /** * Return the fraction of the unit interval considered for the first * generator. */ double fraction() const { return theFraction; } /** * Return the density's value */ double value(double x) const { double res = 0.; if ( firstGenerator().lower() <= x && x <= firstGenerator().upper() ) res += firstGenerator().value(x); if ( secondGenerator().lower() <= x && x <= secondGenerator().upper() ) res += secondGenerator().value(x); return res; } /** * Return the density's normalization */ double normalization() const { return firstGenerator().normalization() + secondGenerator().normalization(); } /** * Generate the return value according to the implemented density, * given a flat random number on the unit interval. */ double operator()(double r) const { return r < fraction() ? firstGenerator()(r/fraction()) : secondGenerator()((r-fraction())/(1.-fraction())); } }; /** * \ingroup Matchbox * \author Simon Platzer * \brief Construct the sum of two densities. */ template<class Density1, class Density2> Generator<Sum<Density1,Density2> > operator+(const Generator<Density1>& first, const Generator<Density2>& second) { return Generator<Sum<Density1,Density2> >(first,second); } /** * \ingroup Matchbox * \author Simon Platzer * \brief Indicate that the argument density should be matched to the * previous one in a piecewise definition. */ template<class Density> struct matcher { /** * The generator to be matched. */ Generator<Density> generator; /** * Construct from generator. */ matcher(const Generator<Density>& gen) : generator(gen) {} }; /** * \ingroup Matchbox * \author Simon Platzer * \brief Indicate that the argument density should be matched to the * previous one in a piecewise definition. */ template<class Density> matcher<Density> match(const Generator<Density>& gen) { return matcher<Density>(gen); } /** * \ingroup Matchbox * \author Simon Platzer * \brief Construct the sum of two densities, matching the first * summand at its upper bound to the second at its lower bound. */ template<class Density1, class Density2> Generator<Sum<Density1,Rescale<Density2> > > operator+(const Generator<Density1>& first, const matcher<Density2>& second) { double matching = first.value(first.upper())/ second.generator.value(second.generator.lower()); return Generator<Sum<Density1,Rescale<Density2> > >(first,matching*second.generator); } /** * \ingroup Matchbox * \author Simon Platzer * \brief A piecewise defined density. */ template<class Density1, class Density2> struct Piecewise {}; /** * \ingroup Matchbox * \author Simon Platzer * \brief Placeholder when constructing piecewise defined densities. */ struct ToBeDefined {}; /** * \ingroup Matchbox * \author Simon Platzer * \brief Generate a piecewise defined density. */ template<class Density1, class Density2> class Generator<Piecewise<Density1,Density2> > { /** * The first generator. */ Generator<Density1> theFirstGenerator; /** * The second generator. */ Generator<Density2> theSecondGenerator; /** * The lower boundary. */ double theLower; /** * The transition value. */ double theIntermediate; /** * The upper boundary. */ double theUpper; /** * The fraction of the unit interval considered for the first * generator. */ double theFraction; public: /** * Construct from generators. */ Generator(const Generator<Density1>& firstGen, const Generator<Density2>& secondGen) : theFirstGenerator(firstGen), theSecondGenerator(secondGen), theLower(firstGen.lower()), theIntermediate(firstGen.upper()), theUpper(secondGen.upper()), theFraction(1.) { if ( firstGenerator().upper() != secondGenerator().lower() ) throw std::logic_error("[Generator<Piecewise>] Invalid boundaries."); theFraction = firstGenerator().normalization() / normalization(); } /** * Return the first generator. */ const Generator<Density1>& firstGenerator() const { return theFirstGenerator; } /** * Return the second generator. */ const Generator<Density2>& secondGenerator() const { return theSecondGenerator; } /** * Return the lower bound of the density generated. */ double lower() const { return theLower; } /** * Return the transition value. */ double intermediate() const { return theIntermediate; } /** * Return the upper bound of the density generated. */ double upper() const { return theUpper; } /** * Return the fraction of the unit interval considered for the first * generator. */ double fraction() const { return theFraction; } /** * Return the density's value */ double value(double x) const { return x < intermediate() ? firstGenerator().value(x) : secondGenerator().value(x); } /** * Return the density's normalization */ double normalization() const { return firstGenerator().normalization() + secondGenerator().normalization(); } /** * Generate the return value according to the implemented density, * given a flat random number on the unit interval. */ double operator()(double r) const { return r < fraction() ? firstGenerator()(r/fraction()) : secondGenerator()((r-fraction())/(1.-fraction())); } /** * Construct piecewise generators. */ template<class Density3> Generator<Piecewise<Piecewise<Density1,Density2>,Density3> > operator,(const Generator<Density3>& thirdGenerator) { return Generator<Piecewise<Piecewise<Density1,Density2>,Density3> > (*this,thirdGenerator); } /** * Construct piecewise generators. */ template<class Density3> Generator<Piecewise<Piecewise<Density1,Density2>,Rescale<Density3> > > operator,(const matcher<Density3>& thirdGenerator) { double matching = value(upper())/thirdGenerator.generator.value(upper()); return Generator<Piecewise<Piecewise<Density1,Density2>,Rescale<Density3> > > (*this,matching*thirdGenerator.generator); } }; /** * \ingroup Matchbox * \author Simon Platzer * \brief Generate a piecewise defined density. */ template<class Density> struct Generator<Piecewise<Density,ToBeDefined> > { /** * The first generator. */ Generator<Density> generator; /** * Construct from generator. */ Generator(const Generator<Density>& gen) : generator(gen) {} /** * Construct piecewise generators. */ template<class Density2> Generator<Piecewise<Density,Density2> > operator,(const Generator<Density2>& secondGen) { return Generator<Piecewise<Density,Density2> > (generator,secondGen); } /** * Construct piecewise generators. */ template<class Density2> Generator<Piecewise<Density,Rescale<Density2> > > operator,(const matcher<Density2>& secondGen) { double matching = generator.value(generator.upper())/secondGen.generator.value(generator.upper()); return Generator<Piecewise<Density,Rescale<Density2> > > (generator,matching*secondGen.generator); } }; /** * \ingroup Matchbox * \author Simon Platzer * \brief Generate a piecewise defined density. */ template<> struct Generator<Piecewise<ToBeDefined,ToBeDefined> > { /** * Construct piecewise generators. */ template<class Density> Generator<Piecewise<Density,ToBeDefined> > operator,(const Generator<Density>& gen) { return Generator<Piecewise<Density,ToBeDefined> >(gen); } }; /** * \ingroup Matchbox * \author Simon Platzer * \brief Construct a piecewise defined density. */ inline Generator<Piecewise<ToBeDefined,ToBeDefined> > piecewise() { return Generator<Piecewise<ToBeDefined,ToBeDefined> >(); } /** * \ingroup Matchbox * \author Simon Platzer * \brief A constant density. */ struct Flat {}; /** * \ingroup Matchbox * \author Simon Platzer * \brief Generate x flat. */ template<> class Generator<Flat> { /** * The lower boundary. */ double theLower; /** * The upper boundary. */ double theUpper; public: /** * Construct from boundaries. */ Generator(double low, double up) : theLower(low), theUpper(up) {} /** * Return the lower bound of the density generated. */ double lower() const { return theLower; } /** * Return the upper bound of the density generated. */ double upper() const { return theUpper; } /** * Return the density's value */ double value(double x) const { return x>=lower() && x<=upper() ? 1. : 0.; } /** * Return the density's normalization */ double normalization() const { return upper()-lower(); } /** * Generate the return value according to the implemented density, * given a flat random number on the unit interval. */ double operator()(double r) const { return lower() + r*(upper()-lower()); } }; /** * \ingroup Matchbox * \author Simon Platzer * \brief Construct a constant density. */ inline Generator<Flat> flat(double low, double up) { return Generator<Flat>(low,up); } /** * \ingroup Matchbox * \author Simon Platzer * \brief A zero density. */ struct Zero {}; /** * \ingroup Matchbox * \author Simon Platzer * \brief Generate nothing. */ template<> class Generator<Zero> { /** * The lower boundary. */ double theLower; /** * The upper boundary. */ double theUpper; public: /** * Construct from boundaries. */ Generator(double low, double up) : theLower(low), theUpper(up) {} /** * Return the lower bound of the density generated. */ double lower() const { return theLower; } /** * Return the upper bound of the density generated. */ double upper() const { return theUpper; } /** * Return the density's value */ double value(double x) const { return x>=lower() && x<=upper() ? Constants::epsilon : 0.; } /** * Return the density's normalization */ double normalization() const { return 0.; } /** * Generate the return value according to the implemented density, * given a flat random number on the unit interval. */ double operator()(double r) const { return lower() + r*(upper()-lower()); } }; /** * \ingroup Matchbox * \author Simon Platzer * \brief Construct a zero density. */ inline Generator<Zero> zero(double low, double up) { return Generator<Zero>(low,up); } /** * \ingroup Matchbox * \author Simon Platzer * \brief A density 1/|x-z| */ struct Inverse {}; /** * \ingroup Matchbox * \author Simon Platzer * \brief Generate x with density 1/|x-z| */ template<> class Generator<Inverse> { /** * The position of the pole */ double thePole; /** * The lower bound */ double theLower; /** * The upper bound */ double theUpper; /** * Scale for random numbers. */ double theScale; /** * Offset for random mnumbers. */ double theOffset; public: /** * Construct from pole and boundaries. */ Generator(double z, double l, double u) : thePole(z), theLower(l), theUpper(u), theScale(z < l ? log((u-z)/(l-z)) : log((z-l)/(z-u))), theOffset(z < l ? log(l-z) : log(z-u)) { if ( z >= l && z <= u ) throw std::logic_error("[Generator<Inverse>] Pole inside sampling interval."); } /** * Return the lower bound of the density generated. */ double lower() const { return theLower; } /** * Return the upper bound of the density generated. */ double upper() const { return theUpper; } /** * Return the position of the pole. */ double pole() const { return thePole; } /** * Return the scale for random numbers. */ double scale() const { return theScale; } /** * Return the offset for random mnumbers. */ double offset() const { return theOffset; } /** * Return the density's value */ double value(double x) const { return x>=lower() && x<=upper() ? 1/abs(x-pole()) : 0.; } /** * Return the density's normalization */ double normalization() const { return scale(); } /** * Generate the return value according to the implemented density, * given a flat random number on the unit interval. */ double operator()(double r) const { return pole() + sign(upper()-pole())*exp(scale()*r+offset()); } }; /** * \ingroup Matchbox * \author Simon Platzer * \brief Construct the density 1/|x-z| */ inline Generator<Inverse> inverse(double z, double lower, double upper) { return Generator<Inverse>(z,lower,upper); } /** * \ingroup Matchbox * \author Simon Platzer * \brief The density |(x-z)|^p */ struct Power {}; /** * \ingroup Matchbox * \author Simon Platzer * \brief Generate x with density |(x-z)|^p */ template<> class Generator<Power> { /** * The position of the pole */ double thePole; /** * The power */ double thePower; /** * The lower bound */ double theLower; /** * The upper bound */ double theUpper; /** * Scale for random numbers. */ double theScale; /** * Offset for random mnumbers. */ double theOffset; public: /** * Construct from pole, power and boundaries. */ Generator(double z, double p, double l, double u) : thePole(z), thePower(p), theLower(l), theUpper(u), theScale(z<=l ? (pow(u-z,1.+p)-pow(l-z,1.+p))/(1.+p) : (pow(z-l,1.+p)-pow(z-u,1.+p))/(1.+p)), theOffset(z<=l ? pow(l-z,1.+p)/(1.+p) : pow(z-u,1.+p)/(1.+p)) { if ( p == -1. ) throw std::logic_error("[Generator<Power>] Unit inverse. Consider using inverse()."); if ( z >= l && z <= u && p < 0. ) throw std::logic_error("[Generator<Power>] Pole inside sampling interval."); if ( z >= l && z <= u && p > 0. ) throw std::logic_error("[Generator<Power>] Zero inside sampling interval."); } /** * Return the lower bound of the density generated. */ double lower() const { return theLower; } /** * Return the upper bound of the density generated. */ double upper() const { return theUpper; } /** * Return the position of the pole. */ double pole() const { return thePole; } /** * Return the power. */ double power() const { return thePower; } /** * Return the scale for random numbers. */ double scale() const { return theScale; } /** * Return the offset for random mnumbers. */ double offset() const { return theOffset; } /** * Return the density's value */ double value(double x) const { return x>=lower() && x<=upper() ? pow(abs(x-pole()),power()) : 0.; } /** * Return the density's normalization */ double normalization() const { return scale(); } /** * Generate the return value according to the implemented density, * given a flat random number on the unit interval. */ double operator()(double r) const { return pole() + sign(upper()-pole())*pow((1.+power())*(scale()*r+offset()),1./(1.+power())); } }; /** * \ingroup Matchbox * \author Simon Platzer * \brief Construct the density |(x-z)|^p */ inline Generator<Power> power(double z, double p, double lower, double upper) { return Generator<Power>(z,p,lower,upper); } /** * \ingroup Matchbox * \author Simon Platzer * \brief The density 1/((x-z)^2 + abs(w z)) */ struct BreitWigner {}; /** * \ingroup Matchbox * \author Simon Platzer * \brief Generate x with density 1/((x-z)^2 + abs(w z)) */ template<> class Generator<BreitWigner> { /** * The position of the pole */ double thePole; /** * The width */ double theWidth; /** * The lower bound */ double theLower; /** * The upper bound */ double theUpper; /** * Scale for random numbers. */ double theScale; /** * Offset for random mnumbers. */ double theOffset; /** * The square root of width times pole. */ double theSqrtWidth; public: /** * Construct from pole, width and boundaries. */ Generator(double z, double w, double l, double u) : thePole(z), theWidth(w), theLower(l), theUpper(u), theScale((atan((u-z)/sqrt(abs(w*z)))-atan((l-z)/sqrt(abs(w*z))))/sqrt(abs(w*z))), theOffset(atan((l-z)/sqrt(abs(w*z)))/sqrt(abs(w*z))), theSqrtWidth(sqrt(abs(w*z))) { if ( w == 0. ) throw std::logic_error("[Generator<BreitWigner>] Zero width. Consider using power()."); } /** * Return the lower bound of the density generated. */ double lower() const { return theLower; } /** * Return the upper bound of the density generated. */ double upper() const { return theUpper; } /** * Return the position of the pole. */ double pole() const { return thePole; } /** * Return the width. */ double width() const { return theWidth; } /** * Return the scale for random numbers. */ double scale() const { return theScale; } /** * Return the offset for random mnumbers. */ double offset() const { return theOffset; } /** * The square root of width times pole. */ double sqrtWidth() const { return theSqrtWidth; } /** * Return the density's value */ double value(double x) const { return x>=lower() && x<=upper() ? 1./(sqr(x-pole())+abs(width()*pole())) : 0.; } /** * Return the density's normalization */ double normalization() const { return scale(); } /** * Generate the return value according to the implemented density, * given a flat random number on the unit interval. */ double operator()(double r) const { return pole() + sqrtWidth()*tan(sqrtWidth()*(scale()*r+offset())); } }; /** * \ingroup Matchbox * \author Simon Platzer * \brief Construct the density 1/((x-z)^2 + abs(w z)) */ inline Generator<BreitWigner> breitWigner(double z, double w, double lower, double upper) { return Generator<BreitWigner>(z,w,lower,upper); } } } #endif // HERWIG_RandomHelpers_H ���������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/FFMassiveInvertedTildeKinematics.h������������0000644�0001750�0001750�00000011265�11754474775�032073� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFMassiveInvertedTildeKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFMassiveInvertedTildeKinematics_H #define HERWIG_FFMassiveInvertedTildeKinematics_H // // This is the declaration of the FFMassiveInvertedTildeKinematics class. // #include "Herwig++/MatrixElement/Matchbox/Phasespace/InvertedTildeKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief FFMassiveInvertedTildeKinematics inverts the final-final tilde * kinematics. * */ class FFMassiveInvertedTildeKinematics: public Herwig::InvertedTildeKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFMassiveInvertedTildeKinematics(); /** * The destructor. */ virtual ~FFMassiveInvertedTildeKinematics(); //@} public: /** * Perform the mapping of the tilde kinematics for the * last selected process and store all dimensionless * variables in the subtractionParameters() vector. * Return false, if the calculation of the real * kinematics was impossible for the selected configuration * and true on success. */ virtual bool doMap(const double *); /** * Return the pt associated to the last generated splitting. */ virtual Energy lastPt() const; /** * Return the upper bound on pt */ virtual Energy ptMax() const; /** * Given a pt, return the boundaries on z * Note that allowing parton masses these bounds may be too loose */ virtual pair<double,double> zBounds(Energy pt) const; /** * For generated pt and z, check if this point is * kinematically allowed */ /*virtual*/ bool ptzAllowed(pair<Energy,double>) const; /** * Generate pt and z */ virtual pair<Energy,double> generatePtZ(double& jac, const double * r) const; public: /** * Triangular / Kallen function */ template <class T> inline T rootOfKallen (T a, T b, T c) const { return sqrt( a*a + b*b + c*c - 2.*( a*b+a*c+b*c ) ); } // TODO: remove in both /** * stolen from FFMassiveKinematics.h * Perform a rotation on both momenta such that the first one will * point along the (positive) z axis. Rotate back to the original * reference frame by applying rotateUz(returnedVector) to each momentum. */ ThreeVector<double> rotateToZ (Lorentz5Momentum& pTarget, Lorentz5Momentum& p1) { ThreeVector<double> oldAxis = pTarget.vect().unit(); double ct = oldAxis.z(); double st = sqrt( 1.-sqr(ct) ); // cos,sin(theta) double cp = oldAxis.x()/st; double sp = oldAxis.y()/st; // cos,sin(phi) pTarget.setZ( pTarget.vect().mag() ); pTarget.setX( 0.*GeV ); pTarget.setY( 0.*GeV ); Lorentz5Momentum p1old = p1; p1.setX( sp*p1old.x() - cp*p1old.y() ); p1.setY( ct*cp*p1old.x() + ct*sp*p1old.y() - st*p1old.z() ); p1.setZ( st*cp*p1old.x() + st*sp*p1old.y() + ct*p1old.z() ); return oldAxis; } 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFMassiveInvertedTildeKinematics & operator=(const FFMassiveInvertedTildeKinematics &); }; } #endif /* HERWIG_FFMassiveInvertedTildeKinematics_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/IFLightTildeKinematics.h����������������������0000644�0001750�0001750�00000005720�11754474775�030034� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFLightTildeKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IFLightTildeKinematics_H #define HERWIG_IFLightTildeKinematics_H // // This is the declaration of the IFLightTildeKinematics class. // #include "Herwig++/MatrixElement/Matchbox/Phasespace/TildeKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief IFLightTildeKinematics implements the 'tilde' kinematics for * a initial-final subtraction dipole. * */ class IFLightTildeKinematics: public TildeKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IFLightTildeKinematics(); /** * The destructor. */ virtual ~IFLightTildeKinematics(); //@} public: /** * Perform the mapping to the tilde kinematics for the * last selected process and store all dimensionless * variables in the subtractionParameters() vector. * Return false, if the calculation of the tilde * kinematics was impossible for the selected configuration * and true on success. */ virtual bool doMap(); /** * Return the pt associated to the last merged splitting. */ virtual Energy lastPt() 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IFLightTildeKinematics & operator=(const IFLightTildeKinematics &); }; } #endif /* HERWIG_IFLightTildeKinematics_H */ ������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/FFMassiveTildeKinematics.h��������������������0000644�0001750�0001750�00000006242�11754474775�030371� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFMassiveTildeKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFMassiveTildeKinematics_H #define HERWIG_FFMassiveTildeKinematics_H // // This is the declaration of the FFMassiveTildeKinematics class. // #include "Herwig++/MatrixElement/Matchbox/Phasespace/TildeKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief FFMassiveTildeKinematics implements the 'tilde' kinematics for * a final-final subtraction dipole. * */ class FFMassiveTildeKinematics: public TildeKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFMassiveTildeKinematics(); /** * The destructor. */ virtual ~FFMassiveTildeKinematics(); //@} public: /** * Perform the mapping to the tilde kinematics for the * last selected process and store all dimensionless * variables in the subtractionParameters() vector. * Return false, if the calculation of the tilde * kinematics was impossible for the selected configuration * and true on success. */ virtual bool doMap(); /** * Return the pt associated to the last merged splitting. */ virtual Energy lastPt() const; public: /** * Triangular / Kallen function */ template <class T> inline T rootOfKallen (T a, T b, T c) const { return sqrt( a*a + b*b + c*c - 2.*( a*b+a*c+b*c ) ); } 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFMassiveTildeKinematics & operator=(const FFMassiveTildeKinematics &); }; } #endif /* HERWIG_FFMassiveTildeKinematics_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/IFLightInvertedTildeKinematics.cc�������������0000644�0001750�0001750�00000010201�11754474775�031661� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFLightInvertedTildeKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IFLightInvertedTildeKinematics class. // #include "IFLightInvertedTildeKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IFLightInvertedTildeKinematics::IFLightInvertedTildeKinematics() {} IFLightInvertedTildeKinematics::~IFLightInvertedTildeKinematics() {} IBPtr IFLightInvertedTildeKinematics::clone() const { return new_ptr(*this); } IBPtr IFLightInvertedTildeKinematics::fullclone() const { return new_ptr(*this); } bool IFLightInvertedTildeKinematics::doMap(const double * r) { if ( ptMax() < ptCut() ) { jacobian(0.0); return false; } Lorentz5Momentum emitter = bornEmitterMomentum(); Lorentz5Momentum spectator = bornSpectatorMomentum(); double mapping = 1.0; pair<Energy,double> ptz = generatePtZ(mapping,r); if ( mapping == 0.0 ) { jacobian(0.0); return false; } Energy pt = ptz.first; double z = ptz.second; double ratio = sqr(pt/lastScale()); double x = ( z*(1.-z) - ratio ) / ( 1. - z - ratio ); double u = ratio / (1.-z); pt = lastScale()*sqrt(u*(1.-u)*(1.-x)/x); if ( x < emitterX() || x > 1. || u > 1. ) { jacobian(0.0); return false; } mapping /= sqr(z*(1.-z)-ratio)/(1.-z-ratio); jacobian(mapping*(sqr(lastScale())/sHat())/(16.*sqr(Constants::pi))); double phi = 2.*Constants::pi*r[2]; Lorentz5Momentum kt = getKt(emitter,spectator,pt,phi,true); subtractionParameters().resize(2); subtractionParameters()[0] = x; subtractionParameters()[1] = u; realEmitterMomentum() = (1./x)*emitter; realEmissionMomentum() = ((1.-x)*(1.-u)/x)*emitter + u*spectator + kt; realSpectatorMomentum() = ((1.-x)*u/x)*emitter + (1.-u)*spectator - kt; realEmitterMomentum().setMass(ZERO); realEmitterMomentum().rescaleEnergy(); realEmissionMomentum().setMass(ZERO); realEmissionMomentum().rescaleEnergy(); realSpectatorMomentum().setMass(ZERO); realSpectatorMomentum().rescaleEnergy(); return true; } Energy IFLightInvertedTildeKinematics::lastPt() const { Energy scale = sqrt(2.*(bornEmitterMomentum()*bornSpectatorMomentum())); double x = subtractionParameters()[0]; double u = subtractionParameters()[1]; return scale * sqrt(u*(1.-u)*(1.-x)); } Energy IFLightInvertedTildeKinematics::ptMax() const { double x = emitterX(); return sqrt(1.-x)*lastScale()/2.; } pair<double,double> IFLightInvertedTildeKinematics::zBounds(Energy pt) const { double s = sqrt(1.-sqr(pt/ptMax())); double x = emitterX(); return make_pair(0.5*(1.+x-(1.-x)*s),0.5*(1.+x+(1.-x)*s)); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IFLightInvertedTildeKinematics::persistentOutput(PersistentOStream &) const { } void IFLightInvertedTildeKinematics::persistentInput(PersistentIStream &, int) { } void IFLightInvertedTildeKinematics::Init() { static ClassDocumentation<IFLightInvertedTildeKinematics> documentation ("IFLightInvertedTildeKinematics inverts the initial-final tilde " "kinematics."); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<IFLightInvertedTildeKinematics,InvertedTildeKinematics> describeHerwigIFLightInvertedTildeKinematics("Herwig::IFLightInvertedTildeKinematics", "HwMatchbox.so"); �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/FILightInvertedTildeKinematics.h��������������0000644�0001750�0001750�00000006360�11754474775�031536� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FILightInvertedTildeKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FILightInvertedTildeKinematics_H #define HERWIG_FILightInvertedTildeKinematics_H // // This is the declaration of the FILightInvertedTildeKinematics class. // #include "Herwig++/MatrixElement/Matchbox/Phasespace/InvertedTildeKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief FILightInvertedTildeKinematics inverts the final-final tilde * kinematics. * */ class FILightInvertedTildeKinematics: public Herwig::InvertedTildeKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FILightInvertedTildeKinematics(); /** * The destructor. */ virtual ~FILightInvertedTildeKinematics(); //@} public: /** * Perform the mapping of the tilde kinematics for the * last selected process and store all dimensionless * variables in the subtractionParameters() vector. * Return false, if the calculation of the real * kinematics was impossible for the selected configuration * and true on success. */ virtual bool doMap(const double *); /** * Return the pt associated to the last generated splitting. */ virtual Energy lastPt() const; /** * Return the upper bound on pt */ virtual Energy ptMax() const; /** * Given a pt, return the boundaries on z */ virtual pair<double,double> zBounds(Energy pt) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FILightInvertedTildeKinematics & operator=(const FILightInvertedTildeKinematics &); }; } #endif /* HERWIG_FILightInvertedTildeKinematics_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/FFMassiveInvertedTildeKinematics.cc�����������0000644�0001750�0001750�00000025427�11755413470�032220� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFMassiveInvertedTildeKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFMassiveInvertedTildeKinematics class. // #include "FFMassiveInvertedTildeKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/RandomHelpers.h" // TODO: remove // only for checking for NaN or inf #include <gsl/gsl_math.h> using namespace Herwig; FFMassiveInvertedTildeKinematics::FFMassiveInvertedTildeKinematics() {} FFMassiveInvertedTildeKinematics::~FFMassiveInvertedTildeKinematics() {} IBPtr FFMassiveInvertedTildeKinematics::clone() const { return new_ptr(*this); } IBPtr FFMassiveInvertedTildeKinematics::fullclone() const { return new_ptr(*this); } bool FFMassiveInvertedTildeKinematics::doMap(const double * r) { if ( ptMax() < ptCut() ) { jacobian(0.0); return false; } Lorentz5Momentum emitter = bornEmitterMomentum(); Lorentz5Momentum spectator = bornSpectatorMomentum(); double mapping = 1.0; pair<Energy,double> ptz = generatePtZ(mapping,r); if ( mapping == 0.0 ) { jacobian(0.0); return false; } Energy pt = ptz.first; double z = ptz.second; Energy scale = (emitter+spectator).m(); // masses double mui2 = sqr( realEmitterData()->mass() / scale ); double mu2 = sqr( realEmissionData()->mass() / scale ); double muj2 = sqr( realSpectatorData()->mass() / scale ); double Mui2 = sqr( bornEmitterData()->mass() / scale ); double Muj2 = sqr( bornSpectatorData()->mass() / scale ); double y = ( sqr( pt / scale ) + sqr(1.-z)*mui2 + z*z*mu2 ) / (z*(1.-z)*(1.-mui2-mu2-muj2)); // TODO remove if well verified // now this is done in ptzAllowed!! // check (y,z) phasespace boundary // 2011-11-09: never occurred double bar = 1.-mui2-mu2-muj2; double ym = 2.*sqrt(mui2)*sqrt(mu2)/bar; double yp = 1. - 2.*sqrt(muj2)*(1.-sqrt(muj2))/bar; double zm = ( (2.*mui2+bar*y)*(1.-y) - sqrt(y*y-ym*ym)*sqrt(sqr(2.*muj2+bar-bar*y)-4.*muj2) ) / ( 2.*(1.-y)*(mui2+mu2+bar*y) ); double zp = ( (2.*mui2+bar*y)*(1.-y) + sqrt(y*y-ym*ym)*sqrt(sqr(2.*muj2+bar-bar*y)-4.*muj2) ) / ( 2.*(1.-y)*(mui2+mu2+bar*y) ); if ( y<ym || y>yp || z<zm || z>zp ) { cout << "A problem occurred in FFMassiveInvertedTildeKinematics::doMap: "; if(y<ym) cout << "y<ym " << endl; if(y>yp) cout << "y>yp " << endl; if(z<zm) cout << "z<zm " << endl; if(z>zp) cout << "z>zp " << endl; jacobian(0.0); return false; } mapping /= z*(1.-z); jacobian( mapping*(1.-y)*(sqr(lastScale())/sHat())/(16.*sqr(Constants::pi)) * sqr(1.-mui2-mu2-muj2) / rootOfKallen(1.,Mui2,Muj2) ); double phi = 2.*Constants::pi*r[2]; /* // not used ??? Lorentz5Momentum kt = getKt(emitter,spectator,pt,phi); */ subtractionParameters().resize(2); subtractionParameters()[0] = y; subtractionParameters()[1] = z; //ms if( gsl_isnan(z) || gsl_isnan(y) ) cout << "FFMassiveInvertedTildeKinematics::doMap nan/inf" << endl; // kinematics from FFMassiveKinematics.cc // updated 2011-08-23 // updated 2011-11-08 Energy2 sbar = sqr(scale) * (1.-mui2-mu2-muj2); // CMF: particle energies Energy Ei = ( sbar*(1.-(1.-z)*(1.-y)) + 2.*sqr(scale)*mui2 ) / (2.*scale); Energy E = ( sbar*(1.- z *(1.-y)) + 2.*sqr(scale)*mu2 ) / (2.*scale); Energy Ej = ( sbar*(1.- y ) + 2.*sqr(scale)*muj2 ) / (2.*scale); // CMF: momenta in z-direction (axis of pEmitter &pEmitter pSpectator) Energy qi3 = (2.*Ei*Ej-z*(1.-y)*sbar ) / 2./sqrt(Ej*Ej-sqr(scale)*muj2); Energy q3 = (2.*E *Ej-(1.-z)*(1.-y)*sbar) / 2./sqrt(Ej*Ej-sqr(scale)*muj2); Energy qj3 = sqrt( sqr(Ej) - sqr(scale)*muj2 ); // get z axis in the dipole's CMF which is parallel to pSpectator Boost toCMF = (emitter+spectator).findBoostToCM(); Lorentz5Momentum pjAux = spectator; pjAux.boost(toCMF); ThreeVector<double> pjAxis = pjAux.vect().unit(); // set the momenta in this special reference frame // note that pt might in some cases differ from the physical pt! Energy ptResc = sqrt( sqr(Ei)-sqr(scale)*mui2-sqr(qi3) ); Lorentz5Momentum em ( ptResc*cos(phi), -ptResc*sin(phi), qi3, Ei ); Lorentz5Momentum emm ( -ptResc*cos(phi), ptResc*sin(phi), q3, E ); Lorentz5Momentum spe ( 0.*GeV, 0.*GeV, qj3, Ej ); // rotate back em.rotateUz (pjAxis); emm.rotateUz(pjAxis); spe.rotateUz(pjAxis); // boost back em.boost (-toCMF); emm.boost(-toCMF); spe.boost(-toCMF); // mass shells, rescale energy em.setMass(scale*sqrt(mui2)); em.rescaleEnergy(); emm.setMass(scale*sqrt(mu2)); emm.rescaleEnergy(); spe.setMass(scale*sqrt(muj2)); spe.rescaleEnergy(); // book realEmitterMomentum() = em; realEmissionMomentum() = emm; realSpectatorMomentum() = spe; if(gsl_isnan(em.t()/GeV) || gsl_isnan(emm.t()/GeV) || gsl_isnan(spe.t()/GeV)) cout << "FFMassiveInvertedTildeKinematics::doMap momenta corrupt " << /*em/GeV << " " << emm/GeV << " " << spe/GeV << endl << " z " << z << " y " << y << " Ei " << Ei/GeV << " E " << E/GeV << " Ej " << Ej/GeV << " scale " << scale/GeV << " ptResc " << ptResc/GeV << endl << " masses " << realEmitterData()->mass()/GeV << " " << realEmissionData()->mass()/GeV << " " << realSpectatorData()->mass()/GeV <<*/ endl; return true; } Energy FFMassiveInvertedTildeKinematics::lastPt() const { Energy scale = (bornEmitterMomentum()+bornSpectatorMomentum()).m(); // masses double mui2 = sqr( realEmitterData()->mass() / scale ); double mu2 = sqr( realEmissionData()->mass() / scale ); double muj2 = sqr( realSpectatorData()->mass() / scale ); double y = subtractionParameters()[0]; double z = subtractionParameters()[1]; Energy ret = scale * sqrt( y * (1.-mui2-mu2-muj2) * z*(1.-z) - sqr(1.-z)*mui2 - sqr(z)*mu2 ); if(gsl_isnan(ret/GeV)) cout << "FFMassiveInvertedTildeKinematics::lastPt() nan" << endl; return ret; } Energy FFMassiveInvertedTildeKinematics::ptMax() const { Energy scale = (bornEmitterMomentum()+bornSpectatorMomentum()).m(); // masses double mui2 = sqr( realEmitterData()->mass() / scale ); double mu2 = sqr( realEmissionData()->mass() / scale ); double muj2 = sqr( realSpectatorData()->mass() / scale ); Energy ptmax = rootOfKallen( mui2, mu2, sqr(1.-sqrt(muj2)) ) / ( 2.-2.*sqrt(muj2) ) * scale; // TODO: remove // 2011-11-09: never occurred in the first place assert(ptmax>0.*GeV); return ptmax > 0.*GeV ? ptmax : 0.*GeV; } // Note that these bounds may be too loose pair<double,double> FFMassiveInvertedTildeKinematics::zBounds(Energy pt) const { Energy scale = (bornEmitterMomentum()+bornSpectatorMomentum()).m(); // masses double mui2 = sqr( realEmitterData()->mass() / scale ); double mu2 = sqr( realEmissionData()->mass() / scale ); double muj2 = sqr( realSpectatorData()->mass() / scale ); double zp = ( 1.+mui2-mu2+muj2-2.*sqrt(muj2) + rootOfKallen(mui2,mu2,sqr(1-sqrt(muj2))) * sqrt( 1.-sqr(pt/ptMax()) ) ) / ( 2.*sqr(1.-sqrt(muj2)) ); double zm = ( 1.+mui2-mu2+muj2-2.*sqrt(muj2) - rootOfKallen(mui2,mu2,sqr(1-sqrt(muj2))) * sqrt( 1.-sqr(pt/ptMax()) ) ) / ( 2.*sqr(1.-sqrt(muj2)) ); if(gsl_isnan(zp) || gsl_isnan(zm)) cout << "FFMassiveInvertedTildeKinematics::zBounds nan" << endl; return make_pair(zm,zp); } bool FFMassiveInvertedTildeKinematics::ptzAllowed(pair<Energy,double> ptz) const { // TODO: to be removed after verified assert( lastScale() == (bornEmitterMomentum()+bornSpectatorMomentum()).m() ); // masses double mui2 = sqr( realEmitterData()->mass() / lastScale() ); double mu2 = sqr( realEmissionData()->mass() / lastScale() ); double muj2 = sqr( realSpectatorData()->mass() / lastScale() ); Energy pt = ptz.first; double z = ptz.second; double y = ( sqr( pt / lastScale() ) + sqr(1.-z)*mui2 + z*z*mu2 ) / (z*(1.-z)*(1.-mui2-mu2-muj2)); // check (y,z) phasespace boundary // TODO: is y boundary necessary? double bar = 1.-mui2-mu2-muj2; double ym = 2.*sqrt(mui2)*sqrt(mu2)/bar; double yp = 1. - 2.*sqrt(muj2)*(1.-sqrt(muj2))/bar; double zm = ( (2.*mui2+bar*y)*(1.-y) - sqrt(y*y-ym*ym)*sqrt(sqr(2.*muj2+bar-bar*y)-4.*muj2) ) / ( 2.*(1.-y)*(mui2+mu2+bar*y) ); double zp = ( (2.*mui2+bar*y)*(1.-y) + sqrt(y*y-ym*ym)*sqrt(sqr(2.*muj2+bar-bar*y)-4.*muj2) ) / ( 2.*(1.-y)*(mui2+mu2+bar*y) ); if ( y<ym || y>yp || z<zm || z>zp ) return false; return true; } pair<Energy,double> FFMassiveInvertedTildeKinematics::generatePtZ(double& jac, const double * r) const { double kappaMin = ptCut() != ZERO ? sqr(ptCut()/ptMax()) : sqr(0.1*GeV/GeV); double kappa; using namespace RandomHelpers; if ( ptCut() > ZERO ) { pair<double,double> kw = generate(inverse(0.,kappaMin,1.),r[0]); kappa = kw.first; jac *= kw.second; } else { pair<double,double> kw = generate((piecewise(), flat(1e-4,kappaMin), match(inverse(0.,kappaMin,1.))),r[0]); kappa = kw.first; jac *= kw.second; } Energy pt = sqrt(kappa)*ptMax(); pair<double,double> zLims = zBounds(pt); pair<double,double> zw = generate(inverse(0.,zLims.first,zLims.second)+ inverse(1.,zLims.first,zLims.second),r[1]); double z = zw.first; jac *= zw.second; jac *= sqr(ptMax()/lastScale()); if( !ptzAllowed(make_pair(pt,z)) ) jac = 0.; return make_pair(pt,z); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FFMassiveInvertedTildeKinematics::persistentOutput(PersistentOStream &) const { } void FFMassiveInvertedTildeKinematics::persistentInput(PersistentIStream &, int) { } void FFMassiveInvertedTildeKinematics::Init() { static ClassDocumentation<FFMassiveInvertedTildeKinematics> documentation ("FFMassiveInvertedTildeKinematics inverts the final-final tilde " "kinematics."); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FFMassiveInvertedTildeKinematics,InvertedTildeKinematics> describeHerwigFFMassiveInvertedTildeKinematics("Herwig::FFMassiveInvertedTildeKinematics", "HwMatchbox.so"); �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/FILightTildeKinematics.cc���������������������0000644�0001750�0001750�00000005757�11754474775�030204� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FILightTildeKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FILightTildeKinematics class. // #include "FILightTildeKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; FILightTildeKinematics::FILightTildeKinematics() {} FILightTildeKinematics::~FILightTildeKinematics() {} IBPtr FILightTildeKinematics::clone() const { return new_ptr(*this); } IBPtr FILightTildeKinematics::fullclone() const { return new_ptr(*this); } bool FILightTildeKinematics::doMap() { Lorentz5Momentum emitter = realEmitterMomentum(); Lorentz5Momentum emission = realEmissionMomentum(); Lorentz5Momentum spectator = realSpectatorMomentum(); double x = (- emission*emitter + emission*spectator + emitter*spectator) / (emitter*spectator + emission*spectator); double z = emitter*spectator / (emitter*spectator + emission*spectator); subtractionParameters().resize(2); subtractionParameters()[0] = x; subtractionParameters()[1] = z; bornEmitterMomentum() = emitter+emission-(1.-x)*spectator; bornSpectatorMomentum() = x*spectator; bornEmitterMomentum().setMass(ZERO); bornEmitterMomentum().rescaleEnergy(); bornSpectatorMomentum().setMass(ZERO); bornSpectatorMomentum().rescaleEnergy(); return true; } Energy FILightTildeKinematics::lastPt() const { Energy scale = sqrt(2.*(bornEmitterMomentum()*bornSpectatorMomentum())); double x = subtractionParameters()[0]; double z = subtractionParameters()[1]; return scale * sqrt(z*(1.-z)*(1.-x)/x); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FILightTildeKinematics::persistentOutput(PersistentOStream &) const { } void FILightTildeKinematics::persistentInput(PersistentIStream &, int) { } void FILightTildeKinematics::Init() { static ClassDocumentation<FILightTildeKinematics> documentation ("FILightTildeKinematics implements the 'tilde' kinematics for " "a final-initial subtraction dipole."); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FILightTildeKinematics,TildeKinematics> describeHerwigFILightTildeKinematics("Herwig::FILightTildeKinematics", "HwMatchbox.so"); �����������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/MatchboxPhasespace.cc�������������������������0000644�0001750�0001750�00000010314�11754474775�027447� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxPhasespace.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxPhasespace class. // #include "MatchboxPhasespace.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" using namespace Herwig; MatchboxPhasespace::MatchboxPhasespace() {} MatchboxPhasespace::~MatchboxPhasespace() {} void MatchboxPhasespace::cloneDependencies(const std::string&) { } void MatchboxPhasespace::dumpInfo(const string& prefix) const { generator()->log() << prefix << fullName() << " [" << this << "]\n"; generator()->log() << prefix << " | XComb " << lastXCombPtr() << " for "; if ( lastXCombPtr() ) { for ( cPDVector::const_iterator p = lastXComb().mePartonData().begin(); p != lastXComb().mePartonData().end(); ++p ) { generator()->log() << (**p).PDGName() << " "; } } generator()->log() << "\n"; } pair<double,Lorentz5Momentum> MatchboxPhasespace::timeLikeWeight(const Tree2toNDiagram& diag, int branch) const { pair<int,int> children = diag.children(branch); if ( children.first == -1 ) { return make_pair(1.,meMomenta()[diag.externalId(branch)]); } pair<double,Lorentz5Momentum> res = timeLikeWeight(diag,children.first); pair<double,Lorentz5Momentum> other = timeLikeWeight(diag,children.second); res.first *= other.first; res.second += other.second; Energy2 mass2 = sqr(diag.allPartons()[branch]->mass()); Energy2 width2 = sqr(diag.allPartons()[branch]->width()); res.first /= sqr((res.second.m2()-mass2)/lastSHat()) + mass2*width2/sqr(lastSHat()); return res; } double MatchboxPhasespace::spaceLikeWeight(const Tree2toNDiagram& diag, const Lorentz5Momentum& incoming, int branch) const { if ( branch == -1 ) return 1.; pair<int,int> children = diag.children(branch); pair<double,Lorentz5Momentum> res = timeLikeWeight(diag,children.second); if ( children.first == diag.nSpace() - 1 ) { return res.first; } res.second = incoming - res.second; Energy2 mass2 = sqr(diag.allPartons()[branch]->mass()); Energy2 width2 = sqr(diag.allPartons()[branch]->width()); res.first /= sqr((res.second.m2()-mass2)/lastSHat()) + mass2*width2/sqr(lastSHat()); return res.first * spaceLikeWeight(diag,res.second,children.first); } void MatchboxPhasespace::fillDiagramWeights() { diagramWeights.clear(); for ( StandardXComb::DiagramVector::const_iterator d = lastXComb().diagrams().begin(); d != lastXComb().diagrams().end(); ++d ) { diagramWeights[(**d).id()] = spaceLikeWeight(dynamic_cast<const Tree2toNDiagram&>(**d),meMomenta()[0],0); } } Selector<MEBase::DiagramIndex> MatchboxPhasespace::selectDiagrams(const MEBase::DiagramVector& diags) const { Selector<MEBase::DiagramIndex> ret; for ( MEBase::DiagramIndex d = 0; d < diags.size(); ++d ) { ret.insert(diagramWeight(dynamic_cast<const Tree2toNDiagram&>(*diags[d])),d); } return ret; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeAbstractNoPIOClass<MatchboxPhasespace,HandlerBase> describeMatchboxPhasespace("Herwig::MatchboxPhasespace", "HwMatchbox.so"); void MatchboxPhasespace::Init() { static ClassDocumentation<MatchboxPhasespace> documentation ("MatchboxPhasespace defines an abstract interface to a phase " "space generator."); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/TreePhasespace.cc�����������������������������0000644�0001750�0001750�00000013143�11754474775�026604� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TreePhasespace.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TreePhasespace class. // #include "TreePhasespace.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.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; using namespace Herwig::PhasespaceHelpers; TreePhasespace::TreePhasespace() : x0(0.01), xc(1e-4) { lastPhasespaceInfo.x0 = x0; lastPhasespaceInfo.xc = xc; } TreePhasespace::~TreePhasespace() {} IBPtr TreePhasespace::clone() const { return new_ptr(*this); } IBPtr TreePhasespace::fullclone() const { return new_ptr(*this); } void TreePhasespace::prepare(tStdXCombPtr xco, bool) { theLastXComb = xco; lastChannelsIterator = channelMap.find(lastXCombPtr()); if ( lastChannelsIterator == channelMap.end() ) { map<Ptr<Tree2toNDiagram>::ptr,PhasespaceTree> channels; for ( StandardXComb::DiagramVector::const_iterator d = lastXComb().diagrams().begin(); d != lastXComb().diagrams().end(); ++d ) { PhasespaceTree tree; Ptr<Tree2toNDiagram>::ptr diag = dynamic_ptr_cast<Ptr<Tree2toNDiagram>::ptr>(*d); tree.setup(*diag); channels[diag] = tree; } channelMap[lastXCombPtr()] = channels; lastChannelsIterator = channelMap.find(lastXCombPtr()); } lastPhasespaceInfo.sHat = lastXComb().lastSHat(); lastPhasespaceInfo.sqrtSHat = sqrt(lastXComb().lastSHat()); lastPhasespaceInfo.weight = 1.; } double TreePhasespace::generateKinematics(const double* random, vector<Lorentz5Momentum>& momenta) { size_t nchannels = lastXComb().diagrams().size(); map<Ptr<Tree2toNDiagram>::ptr,PhasespaceHelpers::PhasespaceTree>::iterator ds = lastChannels().begin(); advance(ds,(size_t)(random[0]*nchannels)); Ptr<Tree2toNDiagram>::ptr channel = ds->first; ++random; lastPhasespaceInfo.rnd.numbers = random; lastPhasespaceInfo.rnd.nRnd = 3*momenta.size() - 10; cPDVector::const_iterator pd = mePartonData().begin(); vector<Lorentz5Momentum>::iterator p = momenta.begin(); for ( ; pd != mePartonData().end(); ++pd, ++p ) p->setMass((**pd).mass()); try { lastChannels()[channel].generateKinematics(lastPhasespaceInfo,momenta); } catch (Veto) { return 0.; } fillDiagramWeights(); double sum = 0.; for ( map<Ptr<Tree2toNDiagram>::ptr,PhasespaceHelpers::PhasespaceTree>::const_iterator d = lastChannels().begin(); d != lastChannels().end(); ++d ) sum += diagramWeight(*(d->first)); double piWeight = pow(2.*Constants::pi,(double)(3*(momenta.size()-2)-4)); return nchannels*lastPhasespaceInfo.weight*diagramWeight(*channel)/(sum*piWeight); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void TreePhasespace::doinit() { MatchboxPhasespace::doinit(); lastPhasespaceInfo.x0 = x0; lastPhasespaceInfo.xc = xc; } void TreePhasespace::doinitrun() { MatchboxPhasespace::doinitrun(); lastPhasespaceInfo.x0 = x0; lastPhasespaceInfo.xc = xc; } void TreePhasespace::persistentOutput(PersistentOStream & os) const { os << channelMap.size(); for ( map<tStdXCombPtr,map<Ptr<Tree2toNDiagram>::ptr,PhasespaceTree> >::const_iterator k = channelMap.begin(); k != channelMap.end(); ++k ) { os << k->first << k->second.size(); for ( map<Ptr<Tree2toNDiagram>::ptr,PhasespaceTree>::const_iterator l = k->second.begin(); l != k->second.end(); ++l ) { os << l->first; l->second.put(os); } } os << x0 << xc; } void TreePhasespace::persistentInput(PersistentIStream & is, int) { size_t nk; is >> nk; for ( size_t k = 0; k < nk; ++k ) { tStdXCombPtr xc; is >> xc; size_t nl; is >> nl; map<Ptr<Tree2toNDiagram>::ptr,PhasespaceTree> cm; for ( size_t l = 0; l < nl; ++l ) { Ptr<Tree2toNDiagram>::ptr ci; is >> ci; PhasespaceTree cp; cp.get(is); cm[ci] = cp; } channelMap[xc] = cm; } is >> x0 >> xc; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<TreePhasespace,MatchboxPhasespace> describeHerwigTreePhasespace("Herwig::TreePhasespace", "HwMatchbox.so"); void TreePhasespace::Init() { static ClassDocumentation<TreePhasespace> documentation ("TreePhasespace is a multichannel phasespace generator " "adapting to singularity structures as determined from the matrix " "elements diagrams."); static Parameter<TreePhasespace,double> interfaceX0 ("X0", "Set the cut below which flat virtuality sampling is imposed.", &TreePhasespace::x0, 0.01, 0.0, 0, false, false, Interface::lowerlim); static Parameter<TreePhasespace,double> interfaceXC ("XC", "Set the cut below which no virtualities are generated.", &TreePhasespace::xc, 1e-4, 0.0, 0, false, false, Interface::lowerlim); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/PhasespaceHelpers.cc��������������������������0000644�0001750�0001750�00000035673�11754474775�027323� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PhasespaceHelpers.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #include "PhasespaceHelpers.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/RandomHelpers.h" using namespace Herwig; using namespace Herwig::PhasespaceHelpers; using namespace Herwig::RandomHelpers; Energy PhasespaceInfo::generateMass(tcPDPtr data, const pair<Energy,Energy>& range) { double xlow = sqr(range.first)/sHat; if ( range.first < ZERO ) xlow = -xlow; double xup = sqr(range.second)/sHat; if ( range.second < ZERO ) xup = -xup; double mu = sqr(data->mass())/sHat; double gamma = sqr(data->width())/sHat; double r = rnd(); pair<double,double> event; if ( gamma == 0. ) { if ( mu < xlow || mu > xup ) { if ( abs(xlow-mu) < xc ) xlow = mu; if ( abs(xup-mu) < xc ) xup = mu; } if ( mu < xlow || mu > xup ) { event = generate(inverse(mu,xlow,xup),r); } else { pair<double,double> pLeft(xlow,xlow < mu-x0 ? mu-x0 : xlow); pair<double,double> pRight(xup > mu+x0 ? mu+x0 : xup,xup); pair<double,double> fLeft(pLeft.second < mu-x0 ? mu-x0 : pLeft.second,mu-xc); if ( fLeft.first >= fLeft.second ) fLeft.first = fLeft.second; pair<double,double> fRight(mu+xc,pRight.first > mu+x0 ? mu+x0 : pRight.first); if ( fRight.first >= fRight.second ) fRight.second = fRight.first; if ( pLeft.first != pLeft.second && fLeft.first != fLeft.second && fRight.first != fRight.second && pRight.first != pRight.second ) { event = generate((piecewise(), inverse(mu,pLeft.first,pLeft.second), match(flat(fLeft.first,fLeft.second))) + match((piecewise(), flat(fRight.first,fRight.second), match(inverse(mu,pRight.first,pRight.second)))), r); } else if ( pLeft.first == pLeft.second && fLeft.first != fLeft.second && fRight.first != fRight.second && pRight.first != pRight.second ) { event = generate(flat(fLeft.first,fLeft.second) + match((piecewise(), flat(fRight.first,fRight.second), match(inverse(mu,pRight.first,pRight.second)))), r); } else if ( pLeft.first != pLeft.second && fLeft.first != fLeft.second && fRight.first != fRight.second && pRight.first == pRight.second ) { event = generate((piecewise(), inverse(mu,pLeft.first,pLeft.second), match(flat(fLeft.first,fLeft.second))) + match(flat(fRight.first,fRight.second)), r); } else if ( pLeft.first == pLeft.second && fLeft.first == fLeft.second && fRight.first != fRight.second && pRight.first != pRight.second ) { event = generate((piecewise(), flat(fRight.first,fRight.second), match(inverse(mu,pRight.first,pRight.second))), r); } else if ( pLeft.first != pLeft.second && fLeft.first != fLeft.second && fRight.first == fRight.second && pRight.first == pRight.second ) { event = generate((piecewise(), inverse(mu,pLeft.first,pLeft.second), match(flat(fLeft.first,fLeft.second))), r); } else if ( pLeft.first == pLeft.second && fLeft.first != fLeft.second && fRight.first != fRight.second && pRight.first == pRight.second ) { event = generate(flat(fLeft.first,fLeft.second) + match(flat(fRight.first,fRight.second)), r); } else if ( pLeft.first == pLeft.second && fLeft.first == fLeft.second && fRight.first != fRight.second && pRight.first == pRight.second ) { event = generate(flat(fRight.first,fRight.second), r); } else if ( pLeft.first == pLeft.second && fLeft.first != fLeft.second && fRight.first == fRight.second && pRight.first == pRight.second ) { event = generate(flat(fLeft.first,fLeft.second), r); } else if ( pLeft.first == pLeft.second && fLeft.first == fLeft.second && fRight.first == fRight.second && pRight.first == pRight.second ) { throw Veto(); } else assert(false); } } else { event = generate(breitWigner(mu,gamma,xlow,xup),r); } weight *= event.second; Energy res = sqrt(abs(event.first)*sHat); if ( event.first < 0. ) res = -res; return res; } Lorentz5Momentum PhasespaceInfo::generateKt(const Lorentz5Momentum& p1, const Lorentz5Momentum& p2, Energy pt) { if ( (p1+p2).m2() <= ZERO ) { cerr << "cannot boost ... " << ((p1+p2).m2()/GeV2) << "\n"; throw Veto(); } Boost beta = (p1+p2).findBoostToCM(); Lorentz5Momentum p1c = p1; if (beta.mag2() > Constants::epsilon) { p1c.boost(beta); } Lorentz5Momentum k (0.*GeV,0.*GeV,0.*GeV,0.*GeV); double ct = p1c.vect().unit().z(); double st = sqrt(1.-ct*ct); double phi = 2.*Constants::pi*rnd(); weight *= 2.*Constants::pi; double cphi = cos(phi); double sphi = sqrt(1.-cphi*cphi); if (phi > Constants::pi) sphi = -sphi; // adding an output somewhere around here results in the correct behaviour // when compiling with g++-4.6.1 -O3 // cerr << "bla\n" << flush; if (st > Constants::epsilon) { double cchi = p1c.vect().unit().x()/st; double schi = p1c.vect().unit().y()/st; k.setX((cphi*cchi*ct-sphi*schi)*pt); k.setY((cphi*schi*ct+sphi*cchi)*pt); k.setZ(-cphi*st*pt); } else { k.setX(pt*cphi); k.setY(pt*sphi); k.setZ(0.*GeV); } if (beta.mag2() > Constants::epsilon) k.boost(-beta); return k; } void PhasespaceTree::setup(const Tree2toNDiagram& diag, int pos) { pair<int,int> dchildren = diag.children(pos); data = diag.allPartons()[pos]; spacelike = pos < diag.nSpace(); if ( pos == 0 ) externalId = 0; if ( dchildren.first == -1 ) { externalId = diag.externalId(pos); leafs.insert(externalId); return; } children.push_back(PhasespaceTree()); children.back().setup(diag,dchildren.first); children.push_back(PhasespaceTree()); children.back().setup(diag,dchildren.second); if ( !children[0].children.empty() && children[1].children.empty() && !spacelike ) swap(children[0],children[1]); if ( spacelike && !children[0].spacelike ) swap(children[0],children[1]); copy(children[0].leafs.begin(),children[0].leafs.end(), inserter(leafs,leafs.begin())); copy(children[1].leafs.begin(),children[1].leafs.end(), inserter(leafs,leafs.begin())); } void PhasespaceTree::init(const vector<Lorentz5Momentum>& meMomenta) { if ( children.empty() ) { massRange.first = meMomenta[externalId].mass(); massRange.second = massRange.first; momentum.setMass(meMomenta[externalId].mass()); if ( externalId == 1 ) momentum = meMomenta[1]; return; } children[0].init(meMomenta); children[1].init(meMomenta); if ( !children[0].spacelike && !children[1].spacelike ) { massRange.first = children[0].massRange.first + children[1].massRange.first; } } void PhasespaceTree::generateKinematics(PhasespaceInfo& info, vector<Lorentz5Momentum>& meMomenta) { if ( externalId == 0 ) { init(meMomenta); momentum = meMomenta[0]; } if ( children.empty() ) { if ( externalId != 1 ) meMomenta[externalId] = momentum; return; } // s-channel if ( externalId == 0 && children[0].externalId == 1 ) { children[1].momentum = meMomenta[0] + meMomenta[1]; children[1].momentum.setMass(info.sqrtSHat); children[1].momentum.rescaleEnergy(); children[1].generateKinematics(info,meMomenta); return; } if ( !spacelike ) { Energy mij = momentum.mass(); Energy mi,mj; // work out the mass for the first child if ( !children[0].children.empty() ) { Energy sumOthers = ZERO; for ( size_t k = 2; k < meMomenta.size(); ++k ) if ( children[1].leafs.find(k) != children[1].leafs.end() ) sumOthers += meMomenta[k].mass(); children[0].massRange.second = momentum.mass() - sumOthers; if ( children[0].massRange.second < children[0].massRange.first ) throw Veto(); if ( children[0].massRange.second > momentum.mass() ) throw Veto(); mi = info.generateMass(children[0].data,children[0].massRange); children[0].momentum.setMass(mi); } else { mi = children[0].momentum.mass(); } // work out the mass for the second child if ( !children[1].children.empty() ) { children[1].massRange.second = momentum.mass()-children[0].momentum.mass(); if ( children[1].massRange.second < children[1].massRange.first ) throw Veto(); mj = info.generateMass(children[1].data,children[1].massRange); children[1].momentum.setMass(mj); } else { mj = children[1].momentum.mass(); } Energy2 mij2 = sqr(mij); Energy2 mi2 = sqr(mi); Energy2 mj2 = sqr(mj); // perform the decay Energy4 lambda2 = sqr(mij2-mi2-mj2)-4.*mi2*mj2; if ( lambda2 < ZERO ) throw Veto(); Energy2 lambda = sqrt(lambda2); double phi = 2.*Constants::pi*info.rnd(); double cosPhi = cos(phi); double sinPhi = sqrt(1.-sqr(cosPhi)); if ( phi > Constants::pi ) sinPhi = -sinPhi; info.weight *= Constants::pi*lambda/(2.*mij2); double cosTheta = 2.*info.rnd() - 1.; double sinTheta = sqrt(1.-sqr(cosTheta)); Energy p = lambda/(2.*mij); children[0].momentum.setX(p*cosPhi*sinTheta); children[0].momentum.setY(p*sinPhi*sinTheta); children[0].momentum.setZ(p*cosTheta); children[0].momentum.rescaleEnergy(); if ( momentum.m2() <= ZERO ) { cerr << "cannot boost in decay ... " << (momentum.m2()/GeV2) << "\n"; throw Veto(); } Boost out = momentum.boostVector(); if ( out.mag2() > Constants::epsilon ) { children[0].momentum.boost(out); } children[1].momentum = momentum - children[0].momentum; children[1].momentum.setMass(mj); children[1].momentum.rescaleEnergy(); // go on with next branchings children[0].generateKinematics(info,meMomenta); children[1].generateKinematics(info,meMomenta); return; } // get the minimum mass of the `W' system Energy Wmin = ZERO; PhasespaceTree* current = &children[0]; while ( !(current->children.empty()) ) { Wmin += current->children[1].massRange.first; current = &(current->children[0]); } // get the CM energy avaialble Energy2 s = (momentum+meMomenta[1]).m2(); if ( s <= ZERO ) throw Veto(); // generate a mass for the timelike child Energy mi; if ( !children[1].children.empty() ) { children[1].massRange.second = sqrt(s)-Wmin; if ( children[1].massRange.second < children[1].massRange.first ) throw Veto(); mi = info.generateMass(children[1].data,children[1].massRange); children[1].momentum.setMass(mi); } else { mi = children[1].momentum.mass(); } Energy2 mi2 = sqr(mi); // wether or not this is the last 2->2 scatter bool lastScatter = children[0].children[0].children.empty(); // `W' mass relevant for the other boundaries Energy MW = Wmin; // generate a mass for second outgoing leg, if needed if ( lastScatter ) if ( !children[0].children[1].children.empty() ) { // get the maximum `W' mass Energy Wmax = sqrt(s)-children[1].momentum.mass(); children[0].children[1].massRange.second = Wmax; if ( children[0].children[1].massRange.second < children[0].children[1].massRange.first ) throw Veto(); MW = info.generateMass(children[0].children[1].data, children[0].children[1].massRange); children[0].children[1].momentum.setMass(MW); } Energy2 MW2 = sqr(MW); Energy ma = momentum.mass(); Energy2 ma2 = sqr(ma); if ( ma < ZERO ) ma2 = -ma2; Energy mb = meMomenta[1].mass(); Energy2 mb2 = sqr(mb); // pick the ys variable Energy2 ys = ZERO; if ( !lastScatter ) { ys = info.rnd()*(sqr(sqrt(s)-mi)-MW2); info.weight *= (sqr(sqrt(s)-mi)-MW2)/info.sHat; } Energy4 lambda2 = sqr(s-ma2-mb2)-4.*ma2*mb2; if ( lambda2 <= ZERO ) { throw Veto(); } Energy2 lambda = sqrt(lambda2); info.weight *= info.sHat/(4.*lambda); // get the boundaries on the momentum transfer Energy4 rho2 = sqr(s-ys-MW2-mi2)-4.*mi2*(ys+MW2); if ( rho2 < ZERO ) throw Veto(); Energy2 rho = sqrt(rho2); Energy4 tau2 = ys*(ma2-mb2+s) - sqr(s)+s*(ma2+mb2+mi2+MW2)-(mi2-MW2)*(ma2-mb2); pair<Energy2,Energy2> tBounds ((tau2-rho*lambda)/(2.*s),(tau2+rho*lambda)/(2.*s)); children[0].massRange.first = sqrt(abs(tBounds.first)); if ( tBounds.first < ZERO ) children[0].massRange.first = -children[0].massRange.first; children[0].massRange.second = sqrt(abs(tBounds.second)); if ( tBounds.second < ZERO ) children[0].massRange.second = -children[0].massRange.second; // generate a momentum transfer Energy mai = info.generateMass(children[0].data,children[0].massRange); children[0].momentum.setMass(mai); Energy2 t = sqr(mai); if ( mai < ZERO ) t = -t; Energy2 u = -s -t + ys + ma2 + mb2 + mi2 + MW2; Energy2 st = s - ma2 - mb2; Energy2 tt = t - mi2 - ma2; Energy2 ut = u - mi2 - mb2; // get the timelike momentum double xa = (-st*ut+2.*mb2*tt)/lambda2; double xb = (-st*tt+2.*ma2*ut)/lambda2; Energy2 pt2 = (st*tt*ut-ma2*sqr(ut)-mb2*sqr(tt)-mi2*sqr(st)+4.*ma2*mb2*mi2)/lambda2; if ( pt2 < ZERO ) throw Veto(); Energy pt = sqrt(pt2); children[1].momentum = xa*momentum + xb*meMomenta[1] + info.generateKt(momentum,meMomenta[1],pt); children[1].momentum.setMass(mi); children[1].momentum.rescaleEnergy(); children[0].momentum = momentum - children[1].momentum; children[0].momentum.setMass(mai); bool changeSign = false; if ( children[0].momentum.t() < ZERO && mai > ZERO ) changeSign = true; if ( mai < ZERO ) children[0].momentum.rescaleRho(); else children[0].momentum.rescaleEnergy(); if ( changeSign ) children[0].momentum.setT(-children[0].momentum.t()); children[1].generateKinematics(info,meMomenta); if ( !lastScatter ) { children[0].generateKinematics(info,meMomenta); } else { children[0].children[1].momentum = meMomenta[1] + children[0].momentum; children[0].children[1].momentum.setMass(MW); children[0].children[1].momentum.rescaleEnergy(); children[0].children[1].generateKinematics(info,meMomenta); } } void PhasespaceTree::put(PersistentOStream& os) const { os << children.size(); if ( !children.empty() ) { children[0].put(os); children[1].put(os); } os << data << externalId << leafs << spacelike; } void PhasespaceTree::get(PersistentIStream& is) { size_t nc; is >> nc; assert(nc == 0 || nc == 2); if ( nc == 2 ) { children.resize(2,PhasespaceTree()); children[0].get(is); children[1].get(is); } is >> data >> externalId >> leafs >> spacelike; } ���������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/IILightTildeKinematics.cc���������������������0000644�0001750�0001750�00000006266�11754474775�030203� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IILightTildeKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IILightTildeKinematics class. // #include "IILightTildeKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IILightTildeKinematics::IILightTildeKinematics() {} IILightTildeKinematics::~IILightTildeKinematics() {} IBPtr IILightTildeKinematics::clone() const { return new_ptr(*this); } IBPtr IILightTildeKinematics::fullclone() const { return new_ptr(*this); } Lorentz5Momentum IILightTildeKinematics::transform(const Lorentz5Momentum& k) const { LorentzMomentum res = k - 2.*((k*(K+Ktilde)/(K+Ktilde).m2())*(K+Ktilde)-((k*K)/(K.m2()))*Ktilde); return res; } bool IILightTildeKinematics::doMap() { Lorentz5Momentum emitter = realEmitterMomentum(); Lorentz5Momentum emission = realEmissionMomentum(); Lorentz5Momentum spectator = realSpectatorMomentum(); double x = (emitter*spectator - emitter*emission - spectator*emission)/(emitter*spectator); double v = (emitter*emission)/(emitter*spectator); subtractionParameters().resize(2); subtractionParameters()[0] = x; subtractionParameters()[1] = v; bornEmitterMomentum() = x * emitter; bornSpectatorMomentum() = spectator; bornEmitterMomentum().setMass(ZERO); bornEmitterMomentum().rescaleEnergy(); bornSpectatorMomentum().setMass(ZERO); bornSpectatorMomentum().rescaleEnergy(); K = emitter + spectator - emission; Ktilde = x * emitter + spectator; return true; } Energy IILightTildeKinematics::lastPt() const { Energy scale = sqrt(2.*(bornEmitterMomentum()*bornSpectatorMomentum())); double x = subtractionParameters()[0]; double v = subtractionParameters()[1]; return scale * sqrt(v*(1.-x-v)); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IILightTildeKinematics::persistentOutput(PersistentOStream &) const { } void IILightTildeKinematics::persistentInput(PersistentIStream &, int) { } void IILightTildeKinematics::Init() { static ClassDocumentation<IILightTildeKinematics> documentation ("IILightTildeKinematics implements the 'tilde' kinematics for " "a initial-initial subtraction dipole."); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<IILightTildeKinematics,TildeKinematics> describeHerwigIILightTildeKinematics("Herwig::IILightTildeKinematics", "HwMatchbox.so"); ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/IILightInvertedTildeKinematics.h��������������0000644�0001750�0001750�00000007666�11754474775�031553� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IILightInvertedTildeKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IILightInvertedTildeKinematics_H #define HERWIG_IILightInvertedTildeKinematics_H // // This is the declaration of the IILightInvertedTildeKinematics class. // #include "Herwig++/MatrixElement/Matchbox/Phasespace/InvertedTildeKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief IILightInvertedTildeKinematics inverts the final-final tilde * kinematics. * */ class IILightInvertedTildeKinematics: public Herwig::InvertedTildeKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IILightInvertedTildeKinematics(); /** * The destructor. */ virtual ~IILightInvertedTildeKinematics(); //@} public: /** * Perform the mapping of the tilde kinematics for the * last selected process and store all dimensionless * variables in the subtractionParameters() vector. * Return false, if the calculation of the real * kinematics was impossible for the selected configuration * and true on success. */ virtual bool doMap(const double *); /** * Return the pt associated to the last generated splitting. */ virtual Energy lastPt() const; /** * Return the upper bound on pt */ virtual Energy ptMax() const; /** * Given a pt, return the boundaries on z */ virtual pair<double,double> zBounds(Energy pt) const; /** * Return true, if this InvertedTildeKinematics object needs to transform * all other particles in the process except the emitter, emission and spectator */ virtual bool doesTransform() const { return true; } /** * If this InvertedTildeKinematics object needs to transform all other particles * in the process except the emitter, emission and spectator, return the transformed * momentum. */ virtual Lorentz5Momentum transform(const Lorentz5Momentum& p) const { return p-(2.*(KplusKtilde*p)/KplusKtilde2)*KplusKtilde+(2.*(Ktilde*p)/K2)*K; } 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: Lorentz5Momentum K; Energy2 K2; Lorentz5Momentum Ktilde; Lorentz5Momentum KplusKtilde; Energy2 KplusKtilde2; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IILightInvertedTildeKinematics & operator=(const IILightInvertedTildeKinematics &); }; } #endif /* HERWIG_IILightInvertedTildeKinematics_H */ ��������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/FFMassiveTildeKinematics.cc�������������������0000644�0001750�0001750�00000011274�11754474775�030530� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFMassiveTildeKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFMassiveTildeKinematics class. // #include "FFMassiveTildeKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" // TODO: remove // only for checking for NaN or inf #include <gsl/gsl_math.h> using namespace Herwig; FFMassiveTildeKinematics::FFMassiveTildeKinematics() {} FFMassiveTildeKinematics::~FFMassiveTildeKinematics() {} IBPtr FFMassiveTildeKinematics::clone() const { return new_ptr(*this); } IBPtr FFMassiveTildeKinematics::fullclone() const { return new_ptr(*this); } bool FFMassiveTildeKinematics::doMap() { Lorentz5Momentum emitter = realEmitterMomentum(); Lorentz5Momentum emission = realEmissionMomentum(); Lorentz5Momentum spectator = realSpectatorMomentum(); double y = emission*emitter / (emission*emitter + emission*spectator + emitter*spectator); double z = emitter*spectator / (emitter*spectator + emission*spectator); subtractionParameters().resize(2); subtractionParameters()[0] = y; subtractionParameters()[1] = z; //ms if( gsl_isnan(z) ) cout << "FFMassiveTildeKinematics::doMap z nan" << endl; if( gsl_isnan(y) ) cout << "FFMassiveTildeKinematics::doMap y nan" << " -- momenta " << emitter/GeV << " " << emission/GeV << " " << spectator/GeV << /*" -- theDipole-ids? " << theDipole->realEmitter() << " " << theDipole->realEmission() << " " << theDipole->realSpectator() <<*/ endl; Lorentz5Momentum pTot = emitter+emission+spectator; Energy scale = pTot.m(); // masses double mui2 = sqr( realEmitterData()->mass() / scale ); double mu2 = sqr( realEmissionData()->mass() / scale ); double muj2 = sqr( realSpectatorData()->mass() / scale ); double Mui2 = sqr( bornEmitterData()->mass() / scale ); double Muj2 = sqr( bornSpectatorData()->mass() / scale ); double bar = 1.-mui2-mu2-muj2; // from Catani,Seymour,Dittmaier,Trocsanyi (CSm!=0) (5.9) // has the right massless limit bornSpectatorMomentum() = rootOfKallen( 1., Mui2, Muj2 ) / rootOfKallen( 1., mui2+mu2+y*bar, muj2 ) * ( spectator - (pTot*spectator)/sqr(scale)*pTot ) + 0.5*( 1.+Muj2-Mui2 ) * pTot; bornEmitterMomentum() = pTot - bornSpectatorMomentum(); bornEmitterMomentum().setMass( sqrt(Mui2)*scale ); bornEmitterMomentum().rescaleEnergy(); bornSpectatorMomentum().setMass( sqrt(Muj2)*scale ); bornSpectatorMomentum().rescaleEnergy(); if(gsl_isnan(bornEmitterMomentum().t()/GeV) || gsl_isnan(bornSpectatorMomentum().t()/GeV)) cout << "FFMassiveTildeKinematics::doMap() nan" << endl; return true; } Energy FFMassiveTildeKinematics::lastPt() const { Energy scale = (bornEmitterMomentum()+bornSpectatorMomentum()).m(); // 2011-09-11 // TODO: remove assert ( scale==lastScale() ); double y = subtractionParameters()[0]; double z = subtractionParameters()[1]; // masses double mui2 = sqr( realEmitterData()->mass() / scale ); double mu2 = sqr( realEmissionData()->mass() / scale ); double muj2 = sqr( realSpectatorData()->mass() / scale ); Energy ret = scale * sqrt( y * (1.-mui2-mu2-muj2) * z*(1.-z) - sqr(1.-z)*mui2 - sqr(z)*mu2 ); if(gsl_isnan(ret/GeV)) cout << "FFMassiveTildeKinematics::lastPt() nan" << endl; return ret; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FFMassiveTildeKinematics::persistentOutput(PersistentOStream &) const { } void FFMassiveTildeKinematics::persistentInput(PersistentIStream &, int) { } void FFMassiveTildeKinematics::Init() { static ClassDocumentation<FFMassiveTildeKinematics> documentation ("FFMassiveTildeKinematics implements the 'tilde' kinematics for " "a final-final subtraction dipole."); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FFMassiveTildeKinematics,TildeKinematics> describeHerwigFFMassiveTildeKinematics("Herwig::FFMassiveTildeKinematics", "HwMatchbox.so"); ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/Makefile.am�����������������������������������0000644�0001750�0001750�00000001760�11754474775�025437� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwMatchboxPhasespace.la libHwMatchboxPhasespace_la_SOURCES = \ FFLightInvertedTildeKinematics.cc \ FFLightInvertedTildeKinematics.h \ FFLightTildeKinematics.cc \ FFLightTildeKinematics.h \ FFMassiveInvertedTildeKinematics.cc \ FFMassiveInvertedTildeKinematics.h \ FFMassiveTildeKinematics.cc \ FFMassiveTildeKinematics.h \ FILightInvertedTildeKinematics.cc \ FILightInvertedTildeKinematics.h \ FILightTildeKinematics.cc \ FILightTildeKinematics.h \ IFLightInvertedTildeKinematics.cc \ IFLightInvertedTildeKinematics.h \ IFLightTildeKinematics.cc \ IFLightTildeKinematics.h \ IILightInvertedTildeKinematics.cc \ IILightInvertedTildeKinematics.h \ IILightTildeKinematics.cc \ IILightTildeKinematics.h \ InvertedTildeKinematics.cc \ InvertedTildeKinematics.h \ MatchboxPhasespace.cc \ MatchboxPhasespace.h \ MatchboxRambo.cc \ MatchboxRambo.h \ PhasespaceHelpers.cc \ PhasespaceHelpers.h \ RandomHelpers.h \ TildeKinematics.cc \ TildeKinematics.h \ TreePhasespace.cc \ TreePhasespace.h ����������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/IILightTildeKinematics.h����������������������0000644�0001750�0001750�00000007144�11754474775�030041� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IILightTildeKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IILightTildeKinematics_H #define HERWIG_IILightTildeKinematics_H // // This is the declaration of the IILightTildeKinematics class. // #include "Herwig++/MatrixElement/Matchbox/Phasespace/TildeKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \breif IILightTildeKinematics implements the 'tilde' kinematics for * a initial-initial subtraction dipole. * */ class IILightTildeKinematics: public TildeKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IILightTildeKinematics(); /** * The destructor. */ virtual ~IILightTildeKinematics(); //@} public: /** * Perform the mapping to the tilde kinematics for the * last selected process and store all dimensionless * variables in the subtractionParameters() vector. * Return false, if the calculation of the tilde * kinematics was impossible for the selected configuration * and true on success. */ virtual bool doMap(); /** * Return the pt associated to the last merged splitting. */ virtual Energy lastPt() const; /** * Return true, if this TildeKinematics object needs to transform * all other particles in the process except the emitter and spectator */ virtual bool doesTransform() const { return true; } /** * If this TildeKinematics object needs to transform all other particles * in the process except the emitter and spectator, return the transformed * momentum. */ virtual Lorentz5Momentum transform(const Lorentz5Momentum& p) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The K momentum used to transform the final state. */ Lorentz5Momentum K; /** * The Ktilde momentum used to transform the final state. */ Lorentz5Momentum Ktilde; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IILightTildeKinematics & operator=(const IILightTildeKinematics &); }; } #endif /* HERWIG_IILightTildeKinematics_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/PhasespaceHelpers.h���������������������������0000644�0001750�0001750�00000006754�11754474775�027163� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PhasespaceHelpers.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PhasespaceHelpers_H #define HERWIG_PhasespaceHelpers_H #include "ThePEG/Config/ThePEG.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/MatchboxPhasespace.h" namespace Herwig { using namespace ThePEG; namespace PhasespaceHelpers { /** * \ingroup Matchbox * \author Simon Platzer * \brief General information for phasespace generation */ struct PhasespaceInfo { /** * The center of mass energy squared. */ Energy2 sHat; /** * The center of mass energy. */ Energy sqrtSHat; /** * The phasespace weight. */ double weight; /** * The random number generator. */ StreamingRnd rnd; /** * Parameter steering from which on propagator virtualities are * sampled flat. */ double x0; /** * Parameter steering at which virtuality singularities of * propagators are actually cut off. */ double xc; /** * Generate a mass for the given particle type and mass range. */ Energy generateMass(tcPDPtr, const pair<Energy,Energy>&); /** * Calculate a transverse momentum for the given momenta, * invariant pt and azimuth. */ Lorentz5Momentum generateKt(const Lorentz5Momentum& p1, const Lorentz5Momentum& p2, Energy pt); }; /** * \ingroup Matchbox * \author Simon Platzer, Ken Arnold * \brief A phasespace tree. */ struct PhasespaceTree { /** * Default constructor */ PhasespaceTree() : massRange(ZERO,ZERO), externalId(-1), spacelike(false) {} /** * The particle running along this line. */ tcPDPtr data; /** * The allowed mass range for this line. */ pair<Energy,Energy> massRange; /** * The momentum running along this line. */ Lorentz5Momentum momentum; /** * The external leg id of this line, if external. */ int externalId; /** * The children lines; if empty this is an external line. */ vector<PhasespaceTree> children; /** * External lines originating from this line. */ set<int> leafs; /** * Wether or not this is a spacelike line. */ bool spacelike; /** * Setup from diagram at given position. */ void setup(const Tree2toNDiagram&, int pos = 0); /** * Initialize using masses as given by mass() members of the * final state momenta */ void init(const vector<Lorentz5Momentum>&); /** * Generate kinematics for the children */ void generateKinematics(PhasespaceInfo&, vector<Lorentz5Momentum>&); /** * Write phasespace tree to ostream */ void put(PersistentOStream&) const; /** * Read phasespace tree from istream */ void get(PersistentIStream&); }; } } #endif // HERWIG_PhasespaceHelpers_H ��������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/FFLightTildeKinematics.cc���������������������0000644�0001750�0001750�00000005712�11754474775�030170� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFLightTildeKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFLightTildeKinematics class. // #include "FFLightTildeKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; FFLightTildeKinematics::FFLightTildeKinematics() {} FFLightTildeKinematics::~FFLightTildeKinematics() {} IBPtr FFLightTildeKinematics::clone() const { return new_ptr(*this); } IBPtr FFLightTildeKinematics::fullclone() const { return new_ptr(*this); } bool FFLightTildeKinematics::doMap() { Lorentz5Momentum emitter = realEmitterMomentum(); Lorentz5Momentum emission = realEmissionMomentum(); Lorentz5Momentum spectator = realSpectatorMomentum(); double y = emission*emitter / (emission*emitter + emission*spectator + emitter*spectator); double z = emitter*spectator / (emitter*spectator + emission*spectator); subtractionParameters().resize(2); subtractionParameters()[0] = y; subtractionParameters()[1] = z; bornEmitterMomentum() = emitter+emission-(y/(1.-y))*spectator; bornSpectatorMomentum() = spectator/(1.-y); bornEmitterMomentum().setMass(ZERO); bornEmitterMomentum().rescaleEnergy(); bornSpectatorMomentum().setMass(ZERO); bornSpectatorMomentum().rescaleEnergy(); return true; } Energy FFLightTildeKinematics::lastPt() const { Energy scale = sqrt(2.*(bornEmitterMomentum()*bornSpectatorMomentum())); double y = subtractionParameters()[0]; double z = subtractionParameters()[1]; return scale * sqrt(y*z*(1.-z)); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FFLightTildeKinematics::persistentOutput(PersistentOStream &) const { } void FFLightTildeKinematics::persistentInput(PersistentIStream &, int) { } void FFLightTildeKinematics::Init() { static ClassDocumentation<FFLightTildeKinematics> documentation ("FFLightTildeKinematics implements the 'tilde' kinematics for " "a final-final subtraction dipole."); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<FFLightTildeKinematics,TildeKinematics> describeHerwigFFLightTildeKinematics("Herwig::FFLightTildeKinematics", "HwMatchbox.so"); ������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/TildeKinematics.h�����������������������������0000644�0001750�0001750�00000020446�11754474775�026627� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TildeKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_TildeKinematics_H #define HERWIG_TildeKinematics_H // // This is the declaration of the TildeKinematics class. // #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief TildeKinematics is the base class for the 'tilde' * kinematics being used for subtraction terms in the * formalism of Catani and Seymour. * */ class TildeKinematics: public HandlerBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ TildeKinematics(); /** * The destructor. */ virtual ~TildeKinematics(); //@} public: /** * Clone this object */ Ptr<TildeKinematics>::ptr cloneMe() const { return dynamic_ptr_cast<Ptr<TildeKinematics>::ptr>(clone()); } /** * Dump xcomb hierarchies. */ void dumpInfo(const string& prefix = "") const; /** @name Access to kinematic quantities. */ //@{ /** * Return the momentum of the emitter in the real emission process */ const Lorentz5Momentum& realEmitterMomentum() const { return theRealXComb->meMomenta()[theDipole->realEmitter()]; } /** * Return the momentum of the emission in the real emission process */ const Lorentz5Momentum& realEmissionMomentum() const { return theRealXComb->meMomenta()[theDipole->realEmission()]; } /** * Return the momentum of the spectator in the real emission process */ const Lorentz5Momentum& realSpectatorMomentum() const { return theRealXComb->meMomenta()[theDipole->realSpectator()]; } /** * Return the momentum of the emitter in the underlying Born process */ const Lorentz5Momentum& bornEmitterMomentum() const { return theBornEmitterMomentum; } /** * Return the momentum of the spectator in the underlying Born process */ const Lorentz5Momentum& bornSpectatorMomentum() const { return theBornSpectatorMomentum; } /** * Return the vector of dimensionless variables calculated */ const vector<double>& subtractionParameters() const { return theDipole->subtractionParameters(); } /** * Return true, if this TildeKinematics object needs to transform * all other particles in the process except the emitter and spectator */ virtual bool doesTransform() const { return false; } /** * If this TildeKinematics object needs to transform all other particles * in the process except the emitter and spectator, return the transformed * momentum. */ virtual Lorentz5Momentum transform(const Lorentz5Momentum& p) const { return p; } //@} public: /** @name Access to process data. */ //@{ /** * Prepare given a dipole, and XCombs describing the real emission * and underlying Born processes, respectively. */ void prepare(tcStdXCombPtr newRealXComb, tcStdXCombPtr newBornXComb) { theRealXComb = newRealXComb; theBornXComb = newBornXComb; } /** * Set the current dipole */ void dipole(Ptr<SubtractionDipole>::tptr dip) { theDipole = dip; } /** * Return the current dipole */ Ptr<SubtractionDipole>::tptr dipole() { return theDipole; } /** * Return the current dipole */ Ptr<SubtractionDipole>::tcptr dipole() const { return theDipole; } /** * Perform the mapping to the tilde kinematics for the * last selected process and store all dimensionless * variables in the subtractionParameters() vector. * Return false, if the calculation of the tilde * kinematics was impossible for the selected configuration * and true on success. */ virtual bool doMap() = 0; /** * Return the pt associated to the last merged splitting. */ virtual Energy lastPt() const = 0; /** * Return the relevant dipole scale */ virtual Energy lastScale() const; /** * Return the particle type of the emitter in the real emission process */ cPDPtr realEmitterData() const { return (theDipole && theRealXComb) ? theRealXComb->mePartonData()[theDipole->realEmitter()] : cPDPtr(); } /** * Return the particle type of the emission in the real emission process */ cPDPtr realEmissionData() const { return (theDipole && theRealXComb) ? theRealXComb->mePartonData()[theDipole->realEmission()] : cPDPtr(); } /** * Return the particle type of the spectator in the real emission process */ cPDPtr realSpectatorData() const { return (theDipole && theRealXComb) ? theRealXComb->mePartonData()[theDipole->realSpectator()] : cPDPtr(); } /** * Return the particle type of the emitter in the underlying Born process */ cPDPtr bornEmitterData() const { return (theDipole && theBornXComb) ? theBornXComb->mePartonData()[theDipole->bornEmitter()] : cPDPtr(); } /** * Return the particle type of the spectator in the underlying Born process */ cPDPtr bornSpectatorData() const { return (theDipole && theBornXComb) ? theBornXComb->mePartonData()[theDipole->bornSpectator()] : cPDPtr(); } //@} protected: /** * Access the momentum of the emitter in the underlying Born process */ Lorentz5Momentum& bornEmitterMomentum() { return theBornEmitterMomentum; } /** * Access the momentum of the spectator in the underlying Born process */ Lorentz5Momentum& bornSpectatorMomentum() { return theBornSpectatorMomentum; } /** * Access the vector of dimensionless variables calculated */ vector<double>& subtractionParameters() { return theDipole->subtractionParameters(); } 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). protected: /** @name Standard Interfaced functions. */ //@{ /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans); /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} private: /** * The last dipole this TildeKinematics has been selected for */ Ptr<SubtractionDipole>::tptr theDipole; /** * The XComb object describing the real emission process */ tcStdXCombPtr theRealXComb; /** * The XComb object describing the underlying Born process */ tcStdXCombPtr theBornXComb; /** * The momentum of the emitter in the underlying Born process */ Lorentz5Momentum theBornEmitterMomentum; /** * The momentum of the spectator in the underlying Born process */ Lorentz5Momentum theBornSpectatorMomentum; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ TildeKinematics & operator=(const TildeKinematics &); }; } #endif /* HERWIG_TildeKinematics_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/IFLightTildeKinematics.cc���������������������0000644�0001750�0001750�00000005752�11754474775�030177� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFLightTildeKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IFLightTildeKinematics class. // #include "IFLightTildeKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IFLightTildeKinematics::IFLightTildeKinematics() {} IFLightTildeKinematics::~IFLightTildeKinematics() {} IBPtr IFLightTildeKinematics::clone() const { return new_ptr(*this); } IBPtr IFLightTildeKinematics::fullclone() const { return new_ptr(*this); } bool IFLightTildeKinematics::doMap() { Lorentz5Momentum emitter = realEmitterMomentum(); Lorentz5Momentum emission = realEmissionMomentum(); Lorentz5Momentum spectator = realSpectatorMomentum(); double x = (- emission*spectator + emitter*spectator + emitter*emission) / (emitter*emission + emitter*spectator); double u = emitter*emission / (emitter*emission + emitter*spectator); subtractionParameters().resize(2); subtractionParameters()[0] = x; subtractionParameters()[1] = u; bornEmitterMomentum() = x*emitter; bornSpectatorMomentum() = spectator + emission - (1.-x)*emitter; bornEmitterMomentum().setMass(ZERO); bornEmitterMomentum().rescaleEnergy(); bornSpectatorMomentum().setMass(ZERO); bornSpectatorMomentum().rescaleEnergy(); return true; } Energy IFLightTildeKinematics::lastPt() const { Energy scale = sqrt(2.*(bornEmitterMomentum()*bornSpectatorMomentum())); double x = subtractionParameters()[0]; double u = subtractionParameters()[1]; return scale * sqrt(u*(1.-u)*(1.-x)); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IFLightTildeKinematics::persistentOutput(PersistentOStream &) const { } void IFLightTildeKinematics::persistentInput(PersistentIStream &, int) { } void IFLightTildeKinematics::Init() { static ClassDocumentation<IFLightTildeKinematics> documentation ("IFLightTildeKinematics implements the 'tilde' kinematics for " "a initial-final subtraction dipole."); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<IFLightTildeKinematics,TildeKinematics> describeHerwigIFLightTildeKinematics("Herwig::IFLightTildeKinematics", "HwMatchbox.so"); ����������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/TildeKinematics.cc����������������������������0000644�0001750�0001750�00000005463�11754474775�026767� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // TildeKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the TildeKinematics class. // #include "TildeKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Utilities/Rebinder.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; TildeKinematics::TildeKinematics() : HandlerBase() {} TildeKinematics::~TildeKinematics() {} void TildeKinematics::dumpInfo(const string& prefix) const { generator()->log() << prefix << fullName() << " [" << this << "]\n"; } Energy TildeKinematics::lastScale() const { if ( ( theDipole->bornEmitter() < 2 && theDipole->bornSpectator() > 1 ) || ( theDipole->bornEmitter() > 1 && theDipole->bornSpectator() < 2 ) ) { return -(bornEmitterMomentum()-bornSpectatorMomentum()).m(); } return (bornEmitterMomentum()+bornSpectatorMomentum()).m(); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void TildeKinematics::rebind(const TranslationMap & trans) { theDipole = trans.translate(theDipole); HandlerBase::rebind(trans); } IVector TildeKinematics::getReferences() { IVector ret = HandlerBase::getReferences(); ret.push_back(theDipole); return ret; } void TildeKinematics::persistentOutput(PersistentOStream & os) const { os << theDipole << theRealXComb << theBornXComb << ounit(theBornEmitterMomentum,GeV) << ounit(theBornSpectatorMomentum,GeV); } void TildeKinematics::persistentInput(PersistentIStream & is, int) { is >> theDipole >> theRealXComb >> theBornXComb >> iunit(theBornEmitterMomentum,GeV) >> iunit(theBornSpectatorMomentum,GeV); } void TildeKinematics::Init() { static ClassDocumentation<TildeKinematics> documentation ("TildeKinematics is the base class for the 'tilde' " "kinematics being used for subtraction terms in the " "formalism of Catani and Seymour."); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeAbstractClass<TildeKinematics,HandlerBase> describeTildeKinematics("Herwig::TildeKinematics", "HwMatchbox.so"); �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/InvertedTildeKinematics.h���������������������0000644�0001750�0001750�00000026263�11754474775�030333� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // InvertedTildeKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_InvertedTildeKinematics_H #define HERWIG_InvertedTildeKinematics_H // // This is the declaration of the InvertedTildeKinematics class. // #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief InvertedTildeKinematics is the base class for the inverted 'tilde' * kinematics being used for subtraction terms in the * formalism of Catani and Seymour. * */ class InvertedTildeKinematics: public HandlerBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ InvertedTildeKinematics(); /** * The destructor. */ virtual ~InvertedTildeKinematics(); //@} public: /** @name Access to kinematic quantities. */ //@{ /** * Return the momentum of the emitter in the real emission process */ const Lorentz5Momentum& realEmitterMomentum() const { return theRealEmitterMomentum; } /** * Return the momentum of the emission in the real emission process */ const Lorentz5Momentum& realEmissionMomentum() const { return theRealEmissionMomentum; } /** * Return the momentum of the spectator in the real emission process */ const Lorentz5Momentum& realSpectatorMomentum() const { return theRealSpectatorMomentum; } /** * Return the momentum of the emitter in the underlying Born process */ const Lorentz5Momentum& bornEmitterMomentum() const { return theBornXComb->meMomenta()[theDipole->bornEmitter()]; } /** * Return the momentum of the spectator in the underlying Born process */ const Lorentz5Momentum& bornSpectatorMomentum() const { return theBornXComb->meMomenta()[theDipole->bornSpectator()]; } /** * Return the momentum fraction of the emitter */ double emitterX() const { return theDipole->bornEmitter() == 0 ? theBornXComb->lastX1() : theBornXComb->lastX2(); } /** * Return the momentum fraction of the spectator */ double spectatorX() const { return theDipole->bornSpectator() == 0 ? theBornXComb->lastX1() : theBornXComb->lastX2(); } /** * Return the vector of dimensionless variables calculated */ const vector<double>& subtractionParameters() const { return theDipole->subtractionParameters(); } /** * Return true, if this InvertedTildeKinematics object needs to transform * all other particles in the process except the emitter, emission and spectator */ virtual bool doesTransform() const { return false; } /** * If this InvertedTildeKinematics object needs to transform all other particles * in the process except the emitter, emission and spectator, return the transformed * momentum. */ virtual Lorentz5Momentum transform(const Lorentz5Momentum& p) const { return p; } /** * Return the centre of mass energy for the underlying Born configuration */ Energy2 sHat() const { return theBornXComb->lastSHat(); } //@} public: /** * Clone this object */ Ptr<InvertedTildeKinematics>::ptr cloneMe() const { return dynamic_ptr_cast<Ptr<InvertedTildeKinematics>::ptr>(clone()); } /** * Dump xcomb hierarchies. */ void dumpInfo(const string& prefix = "") const; /** @name Access to process data. */ //@{ /** * Prepare given a dipole, and XCombs describing the real emission * and underlying Born processes, respectively. */ void prepare(tcStdXCombPtr newRealXComb, tcStdXCombPtr newBornXComb) { theRealXComb = newRealXComb; theBornXComb = newBornXComb; } /** * Set the current dipole */ void dipole(Ptr<SubtractionDipole>::tptr dip) { theDipole = dip; } /** * Return the current dipole */ Ptr<SubtractionDipole>::tptr dipole() { return theDipole; } /** * Return the current dipole */ Ptr<SubtractionDipole>::tcptr dipole() const { return theDipole; } /** * Return the number of random numbers needed to generate * a real emission configuration off the underlying Born * configuration. */ virtual int nDimRadiation() const { return 3; } /** * Perform the mapping of the tilde kinematics for the * last selected process and store all dimensionless * variables in the subtractionParameters() vector. * Return false, if the calculation of the real * kinematics was impossible for the selected configuration * and true on success. */ virtual bool doMap(const double *) = 0; /** * Set an optional cutoff on the emission's * transverse momentum. */ void ptCut(Energy pt) { thePtCut = pt; } /** * Return the optional cutoff on the emission's * transverse momentum. */ Energy ptCut() const { return thePtCut; } /** * Return the random number index * corresponding to the evolution variable. */ virtual int evolutionVariable() const { return 0; } /** * Return the cutoff on the evolution * random number corresponding to the pt cut. */ virtual double evolutionCutoff() const { return 0.0; } /** * Return the pt associated to the last generated splitting. */ virtual Energy lastPt() const = 0; /** * Return the relevant dipole scale */ virtual Energy lastScale() const; /** * Return the upper bound on pt */ virtual Energy ptMax() const = 0; /** * Given a pt, return the boundaries on z */ virtual pair<double,double> zBounds(Energy pt) const = 0; /** * Generate pt and z */ virtual pair<Energy,double> generatePtZ(double& jac, const double * r) const; /** * Return the single particle phasespace weight in units * of sHat() for the last selected configuration. */ double jacobian() const { return theJacobian; } /** * Return the particle type of the emitter in the real emission process */ cPDPtr realEmitterData() const { return (theDipole && theRealXComb) ? theRealXComb->mePartonData()[theDipole->realEmitter()] : cPDPtr(); } /** * Return the particle type of the emission in the real emission process */ cPDPtr realEmissionData() const { return (theDipole && theRealXComb) ? theRealXComb->mePartonData()[theDipole->realEmission()] : cPDPtr(); } /** * Return the particle type of the spectator in the real emission process */ cPDPtr realSpectatorData() const { return (theDipole && theRealXComb) ? theRealXComb->mePartonData()[theDipole->realSpectator()] : cPDPtr(); } /** * Return the particle type of the emitter in the underlying Born process */ cPDPtr bornEmitterData() const { return (theDipole && theBornXComb) ? theBornXComb->mePartonData()[theDipole->bornEmitter()] : cPDPtr(); } /** * Return the particle type of the spectator in the underlying Born process */ cPDPtr bornSpectatorData() const { return (theDipole && theBornXComb) ? theBornXComb->mePartonData()[theDipole->bornSpectator()] : cPDPtr(); } //@} protected: /** * Access the momentum of the emitter in the real emission process */ Lorentz5Momentum& realEmitterMomentum() { return theRealEmitterMomentum; } /** * Access the momentum of the emission in the real emission process */ Lorentz5Momentum& realEmissionMomentum() { return theRealEmissionMomentum; } /** * Access the momentum of the spectator in the real emission process */ Lorentz5Momentum& realSpectatorMomentum() { return theRealSpectatorMomentum; } /** * Access the vector of dimensionless variables calculated */ vector<double>& subtractionParameters() { return theDipole->subtractionParameters(); } /** * Set the single particle phasespace weight in units * of sHat() for the last selected configuration. */ void jacobian(double w) { theJacobian = w; } /** * Calculate a transverse momentum for the given momenta, * invariant pt and azimuth. */ Lorentz5Momentum getKt(const Lorentz5Momentum& p1, const Lorentz5Momentum& p2, Energy pt, double phi, bool spacelike = false) 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). protected: /** @name Standard Interfaced functions. */ //@{ /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans); /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} private: /** * The last dipole this InvertedTildeKinematics has been selected for */ Ptr<SubtractionDipole>::tptr theDipole; /** * The XComb object describing the real emission process */ tcStdXCombPtr theRealXComb; /** * The XComb object describing the underlying Born process */ tcStdXCombPtr theBornXComb; /** * The momentum of the emitter in the real emission process */ Lorentz5Momentum theRealEmitterMomentum; /** * The momentum of the emission in the real emission process */ Lorentz5Momentum theRealEmissionMomentum; /** * The momentum of the spectator in the real emission process */ Lorentz5Momentum theRealSpectatorMomentum; /** * Return the single particle phasespace weight in units * of sHat() for the last selected configuration. */ double theJacobian; /** * The optional cutoff on the emission's * transverse momentum. */ Energy thePtCut; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ InvertedTildeKinematics & operator=(const InvertedTildeKinematics &); }; } #endif /* HERWIG_InvertedTildeKinematics_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/InvertedTildeKinematics.cc��������������������0000644�0001750�0001750�00000013114�11754474775�030460� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // InvertedTildeKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the InvertedTildeKinematics class. // #include <limits> #include "InvertedTildeKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Utilities/Rebinder.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/RandomHelpers.h" using namespace Herwig; InvertedTildeKinematics::InvertedTildeKinematics() : HandlerBase(), theJacobian(0.0), thePtCut(0.0*GeV) {} InvertedTildeKinematics::~InvertedTildeKinematics() {} void InvertedTildeKinematics::dumpInfo(const string& prefix) const { generator()->log() << prefix << fullName() << " [" << this << "]\n"; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). Lorentz5Momentum InvertedTildeKinematics::getKt(const Lorentz5Momentum& p1, const Lorentz5Momentum& p2, Energy pt, double phi, bool spacelike) const { Lorentz5Momentum P; if ( !spacelike ) P = p1 + p2; else P = p1 - p2; Energy2 Q2 = abs(P.m2()); Lorentz5Momentum Q = !spacelike ? Lorentz5Momentum(ZERO,ZERO,ZERO,sqrt(Q2),sqrt(Q2)) : Lorentz5Momentum(ZERO,ZERO,sqrt(Q2),ZERO,-sqrt(Q2)); if ( spacelike && Q.z() < P.z() ) Q.setZ(-Q.z()); bool boost = abs((P-Q).vect().mag2()/GeV2) > 1e-10 || abs((P-Q).t()/GeV) > 1e-5; Lorentz5Momentum inFrame1; if ( boost ) inFrame1 = p1 + ((P*p1-Q*p1)/(P*Q-Q.mass2()))*(P-Q); else inFrame1 = p1; Energy ptx = inFrame1.x(); Energy pty = inFrame1.y(); Energy q = 2.*inFrame1.z(); Energy Qp = sqrt(4.*(sqr(ptx)+sqr(pty))+sqr(q)); Energy Qy = sqrt(4.*sqr(pty)+sqr(q)); double cPhi = cos(phi); double sPhi = sqrt(1.-sqr(cPhi)); if ( phi > Constants::pi ) sPhi = -sPhi; Lorentz5Momentum kt; if ( !spacelike ) { kt.setT(ZERO); kt.setX(pt*Qy*cPhi/Qp); kt.setY(-pt*(4*ptx*pty*cPhi/Qp+q*sPhi)/Qy); kt.setZ(2.*pt*(-ptx*q*cPhi/Qp + pty*sPhi)/Qy); } else { kt.setT(2.*pt*(ptx*q*cPhi+pty*Qp*sPhi)/(q*Qy)); kt.setX(pt*(Qp*q*cPhi+4.*ptx*pty*sPhi)/(q*Qy)); kt.setY(pt*Qy*sPhi/q); kt.setZ(ZERO); } if ( boost ) kt = kt + ((P*kt-Q*kt)/(P*Q-Q.mass2()))*(P-Q); kt.setMass(-pt); kt.rescaleRho(); return kt; } Energy InvertedTildeKinematics::lastScale() const { if ( ( theDipole->bornEmitter() < 2 && theDipole->bornSpectator() > 1 ) || ( theDipole->bornEmitter() > 1 && theDipole->bornSpectator() < 2 ) ) { return -(bornEmitterMomentum()-bornSpectatorMomentum()).m(); } return (bornEmitterMomentum()+bornSpectatorMomentum()).m(); } pair<Energy,double> InvertedTildeKinematics::generatePtZ(double& jac, const double * r) const { double kappaMin = ptCut() != ZERO ? sqr(ptCut()/ptMax()) : sqr(0.1*GeV/GeV); double kappa; using namespace RandomHelpers; if ( ptCut() > ZERO ) { pair<double,double> kw = generate(inverse(0.,kappaMin,1.),r[0]); kappa = kw.first; jac *= kw.second; } else { pair<double,double> kw = generate((piecewise(), flat(1e-4,kappaMin), match(inverse(0.,kappaMin,1.))),r[0]); kappa = kw.first; jac *= kw.second; } Energy pt = sqrt(kappa)*ptMax(); pair<double,double> zLims = zBounds(pt); pair<double,double> zw = generate(inverse(0.,zLims.first,zLims.second)+ inverse(1.,zLims.first,zLims.second),r[1]); double z = zw.first; jac *= zw.second; jac *= sqr(ptMax()/lastScale()); return make_pair(pt,z); } void InvertedTildeKinematics::rebind(const TranslationMap & trans) { theDipole = trans.translate(theDipole); HandlerBase::rebind(trans); } IVector InvertedTildeKinematics::getReferences() { IVector ret = HandlerBase::getReferences(); ret.push_back(theDipole); return ret; } void InvertedTildeKinematics::persistentOutput(PersistentOStream & os) const { os << theDipole << theRealXComb << theBornXComb << ounit(theRealEmitterMomentum,GeV) << ounit(theRealEmissionMomentum,GeV) << ounit(theRealSpectatorMomentum,GeV) << theJacobian << ounit(thePtCut,GeV); } void InvertedTildeKinematics::persistentInput(PersistentIStream & is, int) { is >> theDipole >> theRealXComb >> theBornXComb >> iunit(theRealEmitterMomentum,GeV) >> iunit(theRealEmissionMomentum,GeV) >> iunit(theRealSpectatorMomentum,GeV) >> theJacobian >> iunit(thePtCut,GeV); } void InvertedTildeKinematics::Init() { static ClassDocumentation<InvertedTildeKinematics> documentation ("InvertedTildeKinematics is the base class for the inverted 'tilde' " "kinematics being used for subtraction terms in the " "formalism of Catani and Seymour."); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeAbstractClass<InvertedTildeKinematics,HandlerBase> describeInvertedTildeKinematics("Herwig::InvertedTildeKinematics", "HwMatchbox.so"); ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/MatchboxRambo.h�������������������������������0000644�0001750�0001750�00000007412�11754474775�026302� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxRambo.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef Herwig_MatchboxRambo_H #define Herwig_MatchboxRambo_H // // This is the declaration of the MatchboxRambo class. // #include "Herwig++/MatrixElement/Matchbox/Phasespace/MatchboxPhasespace.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author SDimon Platzer * * \brief MatchboxRambo implements RAMBO phase space generation. * */ class MatchboxRambo: public MatchboxPhasespace { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxRambo(); /** * The destructor. */ virtual ~MatchboxRambo(); //@} public: /** * Prepare a phase space generator for the given xcomb object. */ virtual void prepare(tStdXCombPtr, bool verbose = false); /** * Generate a phase space point and return its weight. */ virtual double generateKinematics(const double*, vector<Lorentz5Momentum>& momenta); /** * Return the number of random numbers required to produce a given * multiplicity final state. */ virtual int nDim(int nFinal) const { return 4*nFinal; } protected: /** * The function object defining the equation * to be solved. */ struct ReshuffleEquation { typedef double ArgType; typedef Energy ValType; static double aUnit() { return 1.; } static Energy vUnit() { return 1.*GeV; } Energy operator() (double xi) const; Energy w; cPDVector::const_iterator dataBegin; cPDVector::const_iterator dataEnd; vector<Lorentz5Momentum>::const_iterator momentaBegin; vector<Lorentz5Momentum>::const_iterator momentaEnd; ReshuffleEquation(Energy q, cPDVector::const_iterator dBegin, cPDVector::const_iterator dEnd, vector<Lorentz5Momentum>::const_iterator mBegin, vector<Lorentz5Momentum>::const_iterator mEnd) : w(q), dataBegin(dBegin), dataEnd(dEnd), momentaBegin(mBegin), momentaEnd(mEnd) {} }; 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxRambo & operator=(const MatchboxRambo &); /** * Whether or not we need to reshuffle. */ bool needToReshuffle; }; } #endif /* Herwig_MatchboxRambo_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/FFLightInvertedTildeKinematics.h��������������0000644�0001750�0001750�00000006360�11754474775�031533� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFLightInvertedTildeKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFLightInvertedTildeKinematics_H #define HERWIG_FFLightInvertedTildeKinematics_H // // This is the declaration of the FFLightInvertedTildeKinematics class. // #include "Herwig++/MatrixElement/Matchbox/Phasespace/InvertedTildeKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief FFLightInvertedTildeKinematics inverts the final-final tilde * kinematics. * */ class FFLightInvertedTildeKinematics: public Herwig::InvertedTildeKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFLightInvertedTildeKinematics(); /** * The destructor. */ virtual ~FFLightInvertedTildeKinematics(); //@} public: /** * Perform the mapping of the tilde kinematics for the * last selected process and store all dimensionless * variables in the subtractionParameters() vector. * Return false, if the calculation of the real * kinematics was impossible for the selected configuration * and true on success. */ virtual bool doMap(const double *); /** * Return the pt associated to the last generated splitting. */ virtual Energy lastPt() const; /** * Return the upper bound on pt */ virtual Energy ptMax() const; /** * Given a pt, return the boundaries on z */ virtual pair<double,double> zBounds(Energy pt) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFLightInvertedTildeKinematics & operator=(const FFLightInvertedTildeKinematics &); }; } #endif /* HERWIG_FFLightInvertedTildeKinematics_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/IFLightInvertedTildeKinematics.h��������������0000644�0001750�0001750�00000006360�11754474775�031536� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFLightInvertedTildeKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IFLightInvertedTildeKinematics_H #define HERWIG_IFLightInvertedTildeKinematics_H // // This is the declaration of the IFLightInvertedTildeKinematics class. // #include "Herwig++/MatrixElement/Matchbox/Phasespace/InvertedTildeKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief IFLightInvertedTildeKinematics inverts the final-final tilde * kinematics. * */ class IFLightInvertedTildeKinematics: public Herwig::InvertedTildeKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IFLightInvertedTildeKinematics(); /** * The destructor. */ virtual ~IFLightInvertedTildeKinematics(); //@} public: /** * Perform the mapping of the tilde kinematics for the * last selected process and store all dimensionless * variables in the subtractionParameters() vector. * Return false, if the calculation of the real * kinematics was impossible for the selected configuration * and true on success. */ virtual bool doMap(const double *); /** * Return the pt associated to the last generated splitting. */ virtual Energy lastPt() const; /** * Return the upper bound on pt */ virtual Energy ptMax() const; /** * Given a pt, return the boundaries on z */ virtual pair<double,double> zBounds(Energy pt) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IFLightInvertedTildeKinematics & operator=(const IFLightInvertedTildeKinematics &); }; } #endif /* HERWIG_IFLightInvertedTildeKinematics_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Phasespace/MatchboxPhasespace.h��������������������������0000644�0001750�0001750�00000011066�11754474775�027316� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxPhasespace.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxPhasespace_H #define HERWIG_MatchboxPhasespace_H // // This is the declaration of the MatchboxPhasespace class. // #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief Wrap around a vector of random numbers to behave as a stream * of those. */ struct StreamingRnd { /** * The random numbers */ const double* numbers; /** * The number of random numbers available. */ size_t nRnd; /** * Default constructor. */ StreamingRnd() : numbers(0), nRnd(0) {} /** * Construct from random numbers. */ explicit StreamingRnd(const double* newNumbers, size_t n) : numbers(newNumbers), nRnd(n) {} /** * Return next random number */ inline double operator()() { assert(numbers && nRnd > 0); const double ret = numbers[0]; ++numbers; --nRnd; return ret; } }; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxPhasespace defines an abstract interface to a phase * space generator. * */ class MatchboxPhasespace: public HandlerBase, public LastXCombInfo<StandardXComb> { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxPhasespace(); /** * The destructor. */ virtual ~MatchboxPhasespace(); //@} public: /** * Prepare a phase space generator for the given xcomb object. */ virtual void prepare(tStdXCombPtr, bool verbose = false) = 0; /** * Generate a phase space point and return its weight. */ virtual double generateKinematics(const double*, vector<Lorentz5Momentum>& momenta) = 0; /** * Return the number of random numbers required to produce a given * multiplicity final state. */ virtual int nDim(int nFinal) const = 0; /** * Return true, if this phasespace generator will generate incoming * partons itself. */ virtual bool haveX1X2() const { return false; } /** * Return true, if this phase space generator expects * the incoming partons in their center-of-mass system */ virtual bool wantCMS() const { return true; } /** * Fill a diagram selector for the last phase space point. */ virtual Selector<MEBase::DiagramIndex> selectDiagrams(const MEBase::DiagramVector&) const; /** * Return the momentum and weight appropriate to the given timelike * branch of the diagram. */ pair<double,Lorentz5Momentum> timeLikeWeight(const Tree2toNDiagram& diag, int branch) const; /** * Return the weight appropriate to the given spacelike branch of * the diagram. */ double spaceLikeWeight(const Tree2toNDiagram& diag, const Lorentz5Momentum& incoming, int branch) const; /** * Return the weight appropriate to the given diagram. */ double diagramWeight(const Tree2toNDiagram& diag) const { assert( !diagramWeights.empty() ); return diagramWeights.find(diag.id())->second; } /** * Fill the diagram weights. */ void fillDiagramWeights(); /** * Clone this phase space generator. */ Ptr<MatchboxPhasespace>::ptr cloneMe() const { return dynamic_ptr_cast<Ptr<MatchboxPhasespace>::ptr>(clone()); } /** * Clone the dependencies, using a given prefix. */ virtual void cloneDependencies(const std::string& prefix = ""); /** * Dump xcomb hierarchies. */ void dumpInfo(const string& prefix = "") const; public: /** * 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The diagram weights indexed by diagram id. */ map<int,double> diagramWeights; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxPhasespace & operator=(const MatchboxPhasespace &); }; } #endif /* HERWIG_MatchboxPhasespace_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/��������������������������������������������������0000755�0001750�0001750�00000000000�11756464210�022535� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/PowhegSplittingGenerator.h������������������������0000644�0001750�0001750�00000014367�11754474775�027736� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PowhegSplittingGenerator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PowhegSplittingGenerator_H #define HERWIG_PowhegSplittingGenerator_H // // This is the declaration of the PowhegSplittingGenerator class. // #include "ThePEG/Handlers/StepHandler.h" #include "ThePEG/Repository/UseRandom.h" #include "Herwig++/MatrixElement/Matchbox/Powheg/PowhegSplittingKernel.h" #include "Herwig++/Exsample2/exsample/exponential_generator.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief PowhegSplittingGenerator generates the POWHEG * real emission contribution. * * @see \ref PowhegSplittingGeneratorInterfaces "The interfaces" * defined for PowhegSplittingGenerator. */ class PowhegSplittingGenerator: public StepHandler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ PowhegSplittingGenerator(); /** * The destructor. */ virtual ~PowhegSplittingGenerator(); //@} public: /** @name Virtual functions required by the StepHandler class. */ //@{ /** * The main function called by the EventHandler class to * perform a step. Given the current state of an Event, this function * performs the event generation step and includes the result in a new * Step object int the Event record. * @param eh the EventHandler in charge of the Event generation. * @param tagged if not empty these are the only particles which should * be considered by the StepHandler. * @param hint a Hint object with possible information from previously * performed steps. * @throws Veto if the StepHandler requires the current step to be discarded. * @throws Stop if the generation of the current Event should be stopped * after this call. * @throws Exception if something goes wrong. */ virtual void handle(EventHandler & eh, const tPVector & tagged, const Hint & hint); //@} public: /** * Generate a splitting given the current event handler */ bool generate(EventHandler & eh); /** * Return the last selected splitting */ Ptr<PowhegSplittingKernel>::tcptr lastSplitting() const { return theLastSplitting; } /** * Return the last selected splitting */ Ptr<PowhegSplittingKernel>::tptr lastSplitting() { return theLastSplitting; } /** * Indicate that the next event should * be discarded owing to presampling. */ void setDiscardNext(bool f = true) { theDiscardNext = f; } /** * Return true, if the next event should * be discarded owing to presampling. */ bool discardNext() const { return theDiscardNext; } 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The pt cut to be applied for final-final dipoles. */ Energy theFFPtCut; /** * An optional screening scale for final-final dipoles; see * DipoleSplittingKernel */ Energy theFFScreeningScale; /** * The pt cut to be applied for final-initial dipoles. */ Energy theFIPtCut; /** * An optional screening scale for final-initial dipoles; see * DipoleSplittingKernel */ Energy theFIScreeningScale; /** * The pt cut to be applied for initial-initial dipoles. */ Energy theIIPtCut; /** * An optional screening scale for initial-initial dipoles; see * DipoleSplittingKernel */ Energy theIIScreeningScale; /** * Discard events which did not radiate. */ bool discardNoEmissions; typedef exsample::exponential_generator<PowhegSplittingKernel,UseRandom> ExponentialGenerator; typedef exsample::exponential_generator<PowhegSplittingKernel,UseRandom>* ExponentialGeneratorPtr; typedef multimap<XCombPtr,pair<Ptr<PowhegSplittingKernel>::ptr,ExponentialGeneratorPtr> > GeneratorMap; /** * Map xcombs to kernels and generators */ GeneratorMap theGeneratorMap; /** * The last selected splitting */ Ptr<PowhegSplittingKernel>::tptr theLastSplitting; /** * True, if verbose. */ bool theVerbose; /** * True, if the next event should be discarded * as the presampling has screwed the parton extractor * @TODO Provide PartonExtractor with backup facilities. */ bool theDiscardNext; /** * Add generators for the newly encountered process */ pair<GeneratorMap::iterator,GeneratorMap::iterator> getGenerators(EventHandler& eh); /** * Generate event from given kernel */ Energy generate(pair<Ptr<PowhegSplittingKernel>::ptr,ExponentialGeneratorPtr>&); /** * Set veto scales, if no radiation generated */ void veto(EventHandler & eh) const; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ PowhegSplittingGenerator & operator=(const PowhegSplittingGenerator &); }; } #endif /* HERWIG_PowhegSplittingGenerator_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/PowhegInclusiveME.cc������������������������������0000644�0001750�0001750�00000025175�11754474775�026432� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PowhegInclusiveME.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PowhegInclusiveME class. // #include "PowhegInclusiveME.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Repository/Repository.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Utilities/Rebinder.h" #include "ThePEG/Handlers/StdXCombGroup.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Powheg/PowhegInclusiveReweight.h" using namespace Herwig; PowhegInclusiveME::PowhegInclusiveME() : MEGroup(), theVerbose(false) {} PowhegInclusiveME::~PowhegInclusiveME() { } IBPtr PowhegInclusiveME::clone() const { return new_ptr(*this); } IBPtr PowhegInclusiveME::fullclone() const { return new_ptr(*this); } MEBase::DiagramVector PowhegInclusiveME::dependentDiagrams(const cPDVector& proc, tMEPtr depME) const { Ptr<SubtractionDipole>::tptr dipole = dynamic_ptr_cast<Ptr<SubtractionDipole>::tptr>(depME); return dipole->realEmissionDiagrams(proc); } void PowhegInclusiveME::setXComb(tStdXCombPtr xc) { MEGroup::setXComb(xc); MEVector::const_iterator me = dependent().begin(); tStdXCombGroupPtr group = dynamic_ptr_cast<tStdXCombGroupPtr>(xc); assert(group); StdDepXCVector::const_iterator depxc = group->dependent().begin(); for ( ; me != dependent().end(); ++me, ++depxc ) { theKernelMap[*me]->setXComb(*depxc); } // only cluster real emission if ( lastCuts().jetFinder() ) lastCuts().jetFinder()->minOutgoing(lastXComb().mePartonData().size()-1); if ( verbose() ) { generator()->log() << "=== PowhegInclusiveME XComb hierarchies ========================================\n"; dumpInfo(); generator()->log() << "================================================================================\n"; } } vector<Ptr<SubtractionDipole>::ptr> PowhegInclusiveME::dipoles() const { vector<Ptr<SubtractionDipole>::ptr> res; for ( MEVector::const_iterator k = dependent().begin(); k != dependent().end(); ++k ) res.push_back(dynamic_ptr_cast<Ptr<SubtractionDipole>::ptr>(*k)); return res; } void PowhegInclusiveME::setup(Ptr<MatchboxNLOME>::ptr newBornVirtual, const vector<Ptr<SubtractedME>::ptr>& newRealEmissions, bool bornScreening) { head(newBornVirtual); theSplittingKernels.clear(); theKernelMap.clear(); vector<Ptr<SubtractionDipole>::ptr> dipoles; for ( vector<Ptr<SubtractedME>::ptr>::const_iterator realit = newRealEmissions.begin(); realit != newRealEmissions.end(); ++realit ) { cPDVector rep = newBornVirtual->matrixElement()->diagrams().front()->partons(); vector<Ptr<SubtractionDipole>::ptr> dips = (**realit).splitDipoles(rep); for ( vector<Ptr<SubtractionDipole>::ptr>::iterator dip = dips.begin(); dip != dips.end(); ++dip ) { Ptr<SubtractionDipole>::ptr pdip = (**dip).cloneMe(); string pdipname = pdip->fullName(); ostringstream pdname; pdname << pdipname << ".Projection"; if ( !(generator()->preinitRegister(pdip,pdname.str())) ) throw InitException() << "Dipole '" << pdname.str() << "' already existing."; pdip->cloneDependencies(); Ptr<PowhegInclusiveReweight>::ptr reweight = new_ptr(PowhegInclusiveReweight()); ostringstream rwname; rwname << pdipname << ".InclusiveReweight"; if ( !(generator()->preinitRegister(reweight,rwname.str())) ) throw InitException() << "Reweight '" << rwname.str() << "' already existing."; reweight->projectionDipole(pdip); reweight->setup(*realit); pdip->doSplitting(); pdip->addReweight(reweight); Ptr<SubtractionDipole>::ptr sdip = (**dip).cloneMe(); string sdipname = sdip->fullName(); ostringstream sdname; sdname << sdipname << ".SplittingDipole"; if ( !(generator()->preinitRegister(sdip,sdname.str())) ) throw InitException() << "Dipole '" << sdname.str() << "' already existing."; sdip->cloneDependencies(); Ptr<PowhegSplittingKernel>::ptr split = new_ptr(PowhegSplittingKernel()); ostringstream skname; skname << sdipname << ".SplittingKernel"; if ( !(generator()->preinitRegister(split,skname.str())) ) throw InitException() << "Splitting kernel '" << skname.str() << "' already existing."; split->projectionDipole(sdip); split->setup(*realit); sdip->doSplitting(); if ( bornScreening ) { reweight->doBornScreening(); split->doBornScreening(); } else { reweight->noBornScreening(); split->noBornScreening(); } if ( theVerbose ) { sdip->print(Repository::clog()); split->print(Repository::clog()); } dipoles.push_back(pdip); theSplittingKernels.push_back(split); theKernelMap[pdip] = split; } } MEVector dipMEs; dipMEs.resize(dipoles.size()); copy(dipoles.begin(),dipoles.end(),dipMEs.begin()); dependent() = dipMEs; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void PowhegInclusiveME::doinit() { if ( theVerbose ) print(Repository::clog()); MEGroup::doinit(); } void PowhegInclusiveME::print(ostream& os) const { os << "--- PowhegInclusiveME setup ----------------------------------------------------\n"; os << " '" << name() << "' for Born/virtual\n '" << head()->name() << "':\n"; dynamic_ptr_cast<Ptr<MatchboxNLOME>::tptr>(head())->print(os); os << " using the dipoles:\n"; for ( MEVector::const_iterator d = dependent().begin(); d != dependent().end(); ++d ) { dynamic_ptr_cast<Ptr<SubtractionDipole>::tptr>(*d)->name(); dynamic_ptr_cast<Ptr<SubtractionDipole>::tptr>(*d)->reweights().front()->print(os); } os << " generated splitting kernels:\n"; for ( vector<Ptr<PowhegSplittingKernel>::ptr>::const_iterator sp = splittingKernels().begin(); sp != splittingKernels().end(); ++sp ) (**sp).print(os); os << "--------------------------------------------------------------------------------\n"; os << flush; } void PowhegInclusiveME::printLastEvent(ostream& os) const { os << "--- PowhegInclusiveME last event information -----------------------------------\n"; os << " '" << name() << "' for Born/virtual\n '" << head()->name() << "'\n"; os << " Born/virtual event information:\n"; dynamic_ptr_cast<Ptr<MatchboxNLOME>::tptr>(head())->printLastEvent(os); os << " dipoles event information:\n"; for ( MEVector::const_iterator d = dependent().begin(); d != dependent().end(); ++d ) { dynamic_ptr_cast<Ptr<SubtractionDipole>::tptr>(*d)->printLastEvent(os); dynamic_ptr_cast<Ptr<SubtractionDipole>::tptr>(*d)->reweights().front()->printLastEvent(os); } os << "--- end PowhegInclusiveME last event information -------------------------------\n\n\n"; os << flush; } void PowhegInclusiveME::dumpInfo(const string& prefix) const { generator()->log() << prefix << fullName() << " [" << this << "]\n"; generator()->log() << prefix << " | XComb " << lastXCombPtr() << " for "; if ( lastXCombPtr() ) { for ( cPDVector::const_iterator p = lastXComb().mePartonData().begin(); p != lastXComb().mePartonData().end(); ++p ) { generator()->log() << (**p).PDGName() << " "; } } generator()->log() << "\n"; generator()->log() << prefix << " | Born/virtual ME\n"; dynamic_ptr_cast<Ptr<MatchboxNLOME>::tptr>(head())->dumpInfo(prefix+" | "); generator()->log() << prefix << " | Dipoles\n"; for ( MEVector::const_iterator k = dependent().begin(); k != dependent().end(); ++k ) { dynamic_ptr_cast<Ptr<SubtractionDipole>::ptr>(*k)->dumpInfo(prefix+" | "); } } void PowhegInclusiveME::lastEventStatistics() { MEGroup::lastEventStatistics(); if ( !generator() ) return; /* if ( theVerbose ) printLastEvent(generator()->log()); */ } void PowhegInclusiveME::persistentOutput(PersistentOStream & os) const { os << theSplittingKernels << theKernelMap << theVerbose; } void PowhegInclusiveME::persistentInput(PersistentIStream & is, int) { is >> theSplittingKernels >> theKernelMap >> theVerbose; } void PowhegInclusiveME::rebind(const TranslationMap & trans) { map<Ptr<MEBase>::ptr,Ptr<PowhegSplittingKernel>::ptr> newKernelMap; for ( map<Ptr<MEBase>::ptr,Ptr<PowhegSplittingKernel>::ptr>::const_iterator mit = theKernelMap.begin(); mit != theKernelMap.end(); ++mit ) { newKernelMap[trans.translate(mit->first)] = trans.translate(mit->second); } theKernelMap = newKernelMap; MEGroup::rebind(trans); } IVector PowhegInclusiveME::getReferences() { IVector ret = MEGroup::getReferences(); for ( map<Ptr<MEBase>::ptr,Ptr<PowhegSplittingKernel>::ptr>::const_iterator mit = theKernelMap.begin(); mit != theKernelMap.end(); ++mit ) { ret.push_back(mit->first); ret.push_back(mit->second); } return ret; } void PowhegInclusiveME::Init() { static ClassDocumentation<PowhegInclusiveME> documentation ("PowhegInclusiveME represents a BBar function."); static RefVector<PowhegInclusiveME,PowhegSplittingKernel> interfaceSplittingKernels ("SplittingKernels", "The splitting kernels to be used.", &PowhegInclusiveME::theSplittingKernels, -1, false, false, true, true, false); static Switch<PowhegInclusiveME,bool> interfaceVerbose ("Verbose", "Print full infomation on each evaluated phase space point.", &PowhegInclusiveME::theVerbose, false, false, false); static SwitchOption interfaceVerboseOn (interfaceVerbose, "On", "On", true); static SwitchOption interfaceVerboseOff (interfaceVerbose, "Off", "Off", false); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<PowhegInclusiveME,MEGroup> describeHerwigPowhegInclusiveME("Herwig::PowhegInclusiveME", "HwMatchbox.so"); ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/PowhegInclusiveME.h�������������������������������0000644�0001750�0001750�00000014600�11754474775�026263� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PowhegInclusiveME.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PowhegInclusiveME_H #define HERWIG_PowhegInclusiveME_H // // This is the declaration of the PowhegInclusiveME class. // #include "ThePEG/MatrixElement/MEGroup.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxMEBase.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxNLOME.h" #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" #include "Herwig++/MatrixElement/Matchbox/Base/SubtractedME.h" #include "Herwig++/MatrixElement/Matchbox/Powheg/PowhegSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief PowhegInclusiveME represents a BBar function. * */ class PowhegInclusiveME: public MEGroup { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ PowhegInclusiveME(); /** * The destructor. */ virtual ~PowhegInclusiveME(); //@} public: /** * Setup from NLO ME and Subtracted ME's */ void setup(Ptr<MatchboxNLOME>::ptr, const vector<Ptr<SubtractedME>::ptr>&, bool bornScreening); /** * Return the dipoles used */ vector<Ptr<SubtractionDipole>::ptr> dipoles() const; /** * Return the splitting kernels */ const vector<Ptr<PowhegSplittingKernel>::ptr>& splittingKernels() const { return theSplittingKernels; } /** * Access the splitting kernels */ vector<Ptr<PowhegSplittingKernel>::ptr>& splittingKernels() { return theSplittingKernels; } /** * Return true, if SubProcessGroups should be * setup from this MEGroup. If not, a single SubProcess * is constructed from the data provided by the * head matrix element. */ virtual bool subProcessGroups() const { return false; } public: /** * Return true, if the same additional random numbers * should be presented to any of the dependent * matrix elements. */ virtual bool uniformAdditional() const { return true; } /** * Given a process from the head matrix element, * return a list of diagrams which should be considered for * the given dependent matrix element. */ virtual MEBase::DiagramVector dependentDiagrams(const cPDVector& proc, tMEPtr depME) const; /** * Set the XComb object to be used in the next call to * generateKinematics() and dSigHatDR(). */ virtual void setXComb(tStdXCombPtr); /** * Return true for MC summation of dependent * matrix elements, if feasible. */ virtual bool mcSumDependent() const { return false; } public: /** * Dump the setup to an ostream */ void print(ostream&) const; /** * Collect information on the last evaluated phasespace * point for verification or debugging purposes. This * only called, if the StdXCombGroup did accumulate * a non-zero cross section from this ME group. */ virtual void lastEventStatistics(); /** * Print debug information on the last event */ void printLastEvent(ostream&) const; /** * Dump xcomb hierarchies. */ void dumpInfo(const string& prefix = "") const; /** * Switch on verbosity for this subtracted ME */ void beVerbose() { theVerbose = true; } /** * Switch off verbosity for this subtracted ME */ void beQuiet() { theVerbose = false; } /** * Return true, if verbose */ bool verbose() const { return theVerbose; } 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans); /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} private: /** * The splitting kernels which need to be considered */ vector<Ptr<PowhegSplittingKernel>::ptr> theSplittingKernels; /** * Map dependent me's to splitting kernels to * properly setup the xcombs */ map<Ptr<MEBase>::ptr,Ptr<PowhegSplittingKernel>::ptr> theKernelMap; /** * Switch to print full information on the * last phase space point. */ bool theVerbose; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ PowhegInclusiveME & operator=(const PowhegInclusiveME &); }; } #endif /* HERWIG_PowhegInclusiveME_H */ ��������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/PowhegInclusiveReweight.h�������������������������0000644�0001750�0001750�00000006003�11754474775�027536� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PowhegInclusiveReweight.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PowhegInclusiveReweight_H #define HERWIG_PowhegInclusiveReweight_H // // This is the declaration of the PowhegInclusiveReweight class. // #include "Herwig++/MatrixElement/Matchbox/Powheg/ME2byDipoles.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief PowhegInclusiveReweight is used to transform * a subtraction dipole into a BBar real emission contribution. * */ class PowhegInclusiveReweight: public ME2byDipoles { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ PowhegInclusiveReweight(); /** * The destructor. */ virtual ~PowhegInclusiveReweight(); //@} public: /** * Evaluate the ratio. */ virtual double evaluate() const; /** * Return true, if 'Born screening' should be done */ bool bornScreening() const { return theBornScreening; } /** * Switch on 'Born screening' */ void doBornScreening() { theBornScreening = true; } /** * Switch off 'Born screening' */ void noBornScreening() { theBornScreening = false; } 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * True, if 'Born screening' should be done */ bool theBornScreening; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ PowhegInclusiveReweight & operator=(const PowhegInclusiveReweight &); }; } #endif /* HERWIG_PowhegInclusiveReweight_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/PowhegFactory.h�����������������������������������0000644�0001750�0001750�00000012614�11754474775�025512� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PowhegFactory.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PowhegFactory_H #define HERWIG_PowhegFactory_H // // This is the declaration of the PowhegFactory class. // #include "ThePEG/Handlers/SubProcessHandler.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxMEBase.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxNLOME.h" #include "Herwig++/MatrixElement/Matchbox/Base/SubtractedME.h" #include "Herwig++/MatrixElement/Matchbox/MatchboxFactory.h" #include "Herwig++/MatrixElement/Matchbox/Powheg/PowhegInclusiveME.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief PowhegFactory automatically sets up * a POWHEG matching * * @see \ref PowhegFactoryInterfaces "The interfaces" * defined for PowhegFactory. */ class PowhegFactory: public SubProcessHandler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ PowhegFactory(); /** * The destructor. */ virtual ~PowhegFactory(); //@} public: /** * Return the Born/virtual pieces to consider */ const vector<Ptr<MatchboxNLOME>::ptr>& bornVirtuals() const { return theBornVirtuals; } /** * Access the Born/virtual pieces to consider */ vector<Ptr<MatchboxNLOME>::ptr>& bornVirtuals() { return theBornVirtuals; } /** * Return the subtracted matrix elements to consider */ const vector<Ptr<SubtractedME>::ptr>& subtractedMEs() const { return theSubtractedMEs; } /** * Access the subtracted matrix elements to consider */ vector<Ptr<SubtractedME>::ptr>& subtractedMEs() { return theSubtractedMEs; } /** * Return true, if 'Born screening' should be done */ bool bornScreening() const { return theBornScreening; } /** * Switch on 'Born screening' */ void doBornScreening() { theBornScreening = true; } /** * Switch off 'Born screening' */ void noBornScreening() { theBornScreening = false; } /** * Return the inclusive (BBar) ME's generated */ const vector<Ptr<PowhegInclusiveME>::ptr>& inclusiveMEs() const { return theInclusiveMEs; } /** * Return the finite real emission contributions */ const vector<Ptr<MatchboxMEBase>::ptr>& realMEs() const { return theRealMEs; } public: /** * Return true if this object needs to be initialized before all * other objects (except those for which this function also returns * true). This default version always returns false, but subclasses * may override it to return true. */ virtual bool preInitialize() const { return true; } /** * Setup everything. */ void setup(); /** * Dump the setup */ void print(ostream&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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 Born/virtual pieces to consider */ vector<Ptr<MatchboxNLOME>::ptr> theBornVirtuals; /** * The subtracted matrix elements to consider */ vector<Ptr<SubtractedME>::ptr> theSubtractedMEs; /** * An optional NLO factory to pick matrix elements from */ Ptr<MatchboxFactory>::ptr theMatchboxFactory; /** * Wether or not 'Born screening' should be performed */ bool theBornScreening; /** * The inclusive (BBar) ME's generated */ vector<Ptr<PowhegInclusiveME>::ptr> theInclusiveMEs; /** * The finite real emission contributions */ vector<Ptr<MatchboxMEBase>::ptr> theRealMEs; /** * Switch on or off verbosity */ bool theVerbose; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ PowhegFactory & operator=(const PowhegFactory &); }; } #endif /* HERWIG_PowhegFactory_H */ ��������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/Makefile.in���������������������������������������0000644�0001750�0001750�00000045621�11756461700�024613� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/Matchbox/Powheg DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwMatchboxPowheg_la_LIBADD = am_libHwMatchboxPowheg_la_OBJECTS = ME2byDipoles.lo PowhegFactory.lo \ PowhegInclusiveME.lo PowhegInclusiveReweight.lo \ PowhegRealReweight.lo PowhegSplittingGenerator.lo \ PowhegSplittingKernel.lo libHwMatchboxPowheg_la_OBJECTS = $(am_libHwMatchboxPowheg_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwMatchboxPowheg_la_SOURCES) DIST_SOURCES = $(libHwMatchboxPowheg_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwMatchboxPowheg.la libHwMatchboxPowheg_la_SOURCES = \ ME2byDipoles.cc \ ME2byDipoles.h \ PowhegFactory.cc \ PowhegFactory.h \ PowhegInclusiveME.cc \ PowhegInclusiveME.h \ PowhegInclusiveReweight.cc \ PowhegInclusiveReweight.h \ PowhegRealReweight.cc \ PowhegRealReweight.h \ PowhegSplittingGenerator.cc \ PowhegSplittingGenerator.h \ PowhegSplittingKernel.cc \ PowhegSplittingKernel.h all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/Matchbox/Powheg/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/Matchbox/Powheg/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwMatchboxPowheg.la: $(libHwMatchboxPowheg_la_OBJECTS) $(libHwMatchboxPowheg_la_DEPENDENCIES) $(EXTRA_libHwMatchboxPowheg_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwMatchboxPowheg_la_OBJECTS) $(libHwMatchboxPowheg_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ME2byDipoles.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PowhegFactory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PowhegInclusiveME.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PowhegInclusiveReweight.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PowhegRealReweight.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PowhegSplittingGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PowhegSplittingKernel.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ���������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/PowhegFactory.cc����������������������������������0000644�0001750�0001750�00000017155�11754474775�025655� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PowhegFactory.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PowhegFactory class. // #include "PowhegFactory.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Command.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/Repository.h" #include "Herwig++/MatrixElement/Matchbox/Powheg/PowhegRealReweight.h" using namespace Herwig; PowhegFactory::PowhegFactory() : SubProcessHandler(), theBornScreening(true), theVerbose(false) {} PowhegFactory::~PowhegFactory() {} IBPtr PowhegFactory::clone() const { return new_ptr(*this); } IBPtr PowhegFactory::fullclone() const { return new_ptr(*this); } void PowhegFactory::setup() { theInclusiveMEs.clear(); theRealMEs.clear(); MEs().clear(); if ( theMatchboxFactory ) { theMatchboxFactory->init(); theBornVirtuals = theMatchboxFactory->bornVirtualMEs(); theSubtractedMEs = theMatchboxFactory->subtractedMEs(); } for ( vector<Ptr<MatchboxNLOME>::ptr>::const_iterator bv = bornVirtuals().begin(); bv != bornVirtuals().end(); ++bv ) { Ptr<PowhegInclusiveME>::ptr bbar = new_ptr(PowhegInclusiveME()); string pname = fullName() + "/" + (**bv).matrixElement()->name(); if ( ! (generator()->preinitRegister(bbar,pname) ) ) throw InitException() << "Powheg Inclusive ME " << pname << " already existing."; if ( theVerbose ) bbar->beVerbose(); else bbar->beQuiet(); bbar->setup(*bv,theSubtractedMEs,theBornScreening); theInclusiveMEs.push_back(bbar); MEs().push_back(bbar); } if ( theBornScreening ) { for ( vector<Ptr<SubtractedME>::ptr>::const_iterator real = subtractedMEs().begin(); real != subtractedMEs().end(); ++real ) { Ptr<MatchboxMEBase>::ptr realME = dynamic_ptr_cast<Ptr<MatchboxMEBase>::ptr>((**real).head()); assert(realME); Ptr<MatchboxMEBase>::ptr finitereal = realME->cloneMe(); string pname = fullName() + "/" + (**real).name(); if ( ! (generator()->preinitRegister(finitereal,pname) ) ) throw InitException() << "Powheg Finite Real ME " << pname << " already existing."; finitereal->reweights().clear(); vector<Ptr<SubtractionDipole>::ptr> dips = (**real).dipoles(); for ( vector<Ptr<SubtractionDipole>::ptr>::const_iterator dip = dips.begin(); dip != dips.end(); ++dip ) { Ptr<PowhegRealReweight>::ptr reweight = new_ptr(PowhegRealReweight()); string rwname = pname + "/" + (**dip).name() + ".FiniteRealReweight"; if ( !(generator()->preinitRegister(reweight,rwname)) ) throw InitException() << "Reweight '" << rwname << "' already existing."; reweight->setup(*dip,*real); finitereal->addReweight(reweight); } theRealMEs.push_back(finitereal); MEs().push_back(finitereal); } } } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void PowhegFactory::doinit() { setup(); if ( theVerbose ) print(Repository::clog()); SubProcessHandler::doinit(); } void PowhegFactory::print(ostream& os) const { os << "--- PowhegFactory setup --------------------------------------------------------\n"; os << " inclusive matrix elements generated:\n"; for ( vector<Ptr<PowhegInclusiveME>::ptr>::const_iterator bbar = theInclusiveMEs.begin(); bbar != theInclusiveMEs.end(); ++bbar ) { os << " '" << (**bbar).name() << "'\n"; } if ( theBornScreening ) { os << " finite real emission matrix elements generated:\n"; for ( vector<Ptr<MatchboxMEBase>::ptr>::const_iterator real = theRealMEs.begin(); real != theRealMEs.end(); ++real ) { os << "'" << (**real).name() << "'\n"; } } os << "--------------------------------------------------------------------------------\n"; os << flush; } void PowhegFactory::persistentOutput(PersistentOStream & os) const { os << theBornVirtuals << theSubtractedMEs << theMatchboxFactory << theBornScreening << theInclusiveMEs << theRealMEs << theVerbose; } void PowhegFactory::persistentInput(PersistentIStream & is, int) { is >> theBornVirtuals >> theSubtractedMEs >> theMatchboxFactory >> theBornScreening >> theInclusiveMEs >> theRealMEs >> theVerbose; } void PowhegFactory::Init() { static ClassDocumentation<PowhegFactory> documentation ("PowhegFactory", "NLO QCD corrections and POWHEG matching have been calculated " "using Matchbox \\cite{Platzer:2011bc}", "%\\cite{Platzer:2011bc}\n" "\\bibitem{Platzer:2011bc}\n" "S.~Platzer and S.~Gieseke,\n" "``Dipole Showers and Automated NLO Matching in Herwig++,''\n" "arXiv:1109.6256 [hep-ph].\n" "%%CITATION = ARXIV:1109.6256;%%"); static RefVector<PowhegFactory,MatchboxNLOME> interfaceBornVirtuals ("BornVirtuals", "Born processes along with virtual corrections to consider", &PowhegFactory::theBornVirtuals, -1, false, false, true, true, false); static RefVector<PowhegFactory,SubtractedME> interfaceSubtractedMEs ("SubtractedMEs", "The subtracted real emission matrix elements to consider", &PowhegFactory::theSubtractedMEs, -1, false, false, true, true, false); static Switch<PowhegFactory,bool> interfaceBornScreening ("BornScreening", "Switch on or off Born screening", &PowhegFactory::theBornScreening, true, false, false); static SwitchOption interfaceBornScreeningOn (interfaceBornScreening, "On", "Perform Born screening", true); static SwitchOption interfaceBornScreeningOff (interfaceBornScreening, "Off", "Do not perform Born screening", false); static Reference<PowhegFactory,MatchboxFactory> interfaceMatchboxFactory ("MatchboxFactory", "An optional MatchboxFactory object to pick matrix elements from.", &PowhegFactory::theMatchboxFactory, false, false, true, true, false); static RefVector<PowhegFactory,PowhegInclusiveME> interfaceInclusiveMEs ("InclusiveMEs", "The inclusive matrix elements generated", &PowhegFactory::theInclusiveMEs, -1, false, true, true, true, false); static RefVector<PowhegFactory,MatchboxMEBase> interfaceRealMEs ("RealMEs", "The finite real matrix elements generated", &PowhegFactory::theRealMEs, -1, false, true, true, true, false); static Switch<PowhegFactory,bool> interfaceVerbose ("Verbose", "Print full infomation on each evaluated phase space point.", &PowhegFactory::theVerbose, false, false, false); static SwitchOption interfaceVerboseOn (interfaceVerbose, "On", "On", true); static SwitchOption interfaceVerboseOff (interfaceVerbose, "Off", "Off", false); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<PowhegFactory,SubProcessHandler> describeHerwigPowhegFactory("Herwig::PowhegFactory", "HwMatchbox.so"); �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/PowhegRealReweight.h������������������������������0000644�0001750�0001750�00000006303�11754474775�026463� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PowhegRealReweight.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PowhegRealReweight_H #define HERWIG_PowhegRealReweight_H // // This is the declaration of the PowhegRealReweight class. // #include "Herwig++/MatrixElement/Matchbox/Powheg/ME2byDipoles.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \breif PowhegRealReweight is used to turn a real emission * matrix element into a real emission contribution encountered * when using POWHEG matching with Born screening. * */ class PowhegRealReweight: public ME2byDipoles { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ PowhegRealReweight(); /** * The destructor. */ virtual ~PowhegRealReweight(); //@} public: /** * Evaluate the ratio. */ virtual double evaluate() const; /** * Return true, if 'Born screening' should be done */ bool bornScreening() const { return theBornScreening; } /** * Switch on 'Born screening' */ void doBornScreening() { theBornScreening = true; } /** * Switch off 'Born screening' */ void noBornScreening() { theBornScreening = false; } /** * Set veto scales on the particles at the given * SubProcess which has been generated using this * matrix element. */ virtual void setVetoScales(tSubProPtr) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * True, if 'Born screening' should be done */ bool theBornScreening; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ PowhegRealReweight & operator=(const PowhegRealReweight &); }; } #endif /* HERWIG_PowhegRealReweight_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/PowhegSplittingGenerator.cc�����������������������0000644�0001750�0001750�00000034112�11754474775�030062� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PowhegSplittingGenerator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PowhegSplittingGenerator class. // #include "PowhegSplittingGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Handlers/StdXCombGroup.h" #include "ThePEG/PDF/PartonExtractor.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "PowhegInclusiveME.h" #include "ThePEG/PDF/PDF.h" using namespace Herwig; PowhegSplittingGenerator::PowhegSplittingGenerator() : StepHandler(), theFFPtCut(1.0*GeV), theFFScreeningScale(ZERO), theFIPtCut(1.0*GeV), theFIScreeningScale(ZERO), theIIPtCut(1.0*GeV), theIIScreeningScale(ZERO), discardNoEmissions(false), theVerbose(false), theDiscardNext(false) {} PowhegSplittingGenerator::~PowhegSplittingGenerator() { for ( GeneratorMap::iterator g = theGeneratorMap.begin(); g != theGeneratorMap.end(); ++g ) delete g->second.second; theGeneratorMap.clear(); } void PowhegSplittingGenerator:: handle(EventHandler & eh, const tPVector &, const Hint &) { if ( theVerbose ) { generator()->log() << "PowhegSplittingGenerator generating real emission off the sub-process\n" << (*(eh.lastXCombPtr()->subProcess())) << "\n" << "with x1 = " << eh.lastXCombPtr()->lastX1() << " x2 = " << eh.lastXCombPtr()->lastX2() << "\n" << flush; } if ( !generate(eh) ) { if ( theVerbose ) { generator()->log() << "PowhegSplittingGenerator did not select radiation above the IR cutoff\n" << flush; } if ( discardNext() ) { setDiscardNext(false); if ( theVerbose ) { generator()->log() << "Splitting kernels have been presampled, will discard this event.\n" << flush; } throw Veto(); } if ( discardNoEmissions ) throw Veto(); veto(eh); return; } if ( theVerbose ) { generator()->log() << "PowhegSplittingGenerator selected the kernel '" << lastSplitting()->name() << "' to generate radiation\n" << flush; } if ( discardNext() ) { setDiscardNext(false); if ( theVerbose ) { generator()->log() << "Splitting kernels have been presampled, will discard this event.\n" << flush; } throw Veto(); } SubProPtr oldSub = lastSplitting()->bornSubProcess(); SubProPtr newSub; try { Energy pt = lastSplitting()->projectionDipole()->lastPt(); newSub = lastSplitting()->construct(pt); } catch(Veto&) { if ( theVerbose ) { generator()->log() << "The generated real emission process did not pass the cuts.\n" << flush; } veto(eh); return; } tParticleSet firstS = oldSub->incoming().first->siblings(); assert(firstS.empty() || firstS.size() == 1); if ( !firstS.empty() ) { eh.currentStep()->removeParticle(*firstS.begin()); } tParticleSet secondS = oldSub->incoming().second->siblings(); assert(secondS.empty() || secondS.size() == 1); if ( !secondS.empty() ) { eh.currentStep()->removeParticle(*secondS.begin()); } // prevent the colliding particles from disappearing // in the initial state and appearing // in the final state when we've cut off all their // (physical) children; only applies to the case // where we have a parton extractor not build from // noPDF, so check wether the incoming particle // doesnt equal the incoming parton -- this needs fixing in ThePEG PPtr dummy = new_ptr(Particle(getParticleData(ParticleID::gamma))); bool usedDummy = false; if ( eh.currentStep()->incoming().first != oldSub->incoming().first ) { eh.currentStep()->addDecayProduct(eh.currentStep()->incoming().first,dummy); usedDummy = true; } if ( eh.currentStep()->incoming().second != oldSub->incoming().second ) { eh.currentStep()->addDecayProduct(eh.currentStep()->incoming().second,dummy); usedDummy = true; } eh.currentStep()->removeSubProcess(oldSub); eh.currentStep()->addSubProcess(newSub); // get rid of the dummy if ( usedDummy ) { eh.currentStep()->removeParticle(dummy); } eh.select(lastSplitting()->lastXCombPtr()); dynamic_ptr_cast<tStdDependentXCombPtr>(lastSplitting()->lastXCombPtr())->setPartonBinInstances(); eh.lastExtractor()->constructRemnants(lastSplitting()->lastXCombPtr()->partonBinInstances(), newSub, eh.currentStep()); if ( theVerbose ) { generator()->log() << "PowhegSplittingGenerator generated the real emission sub-process\n" << (*(eh.lastXCombPtr()->subProcess())) << "\n" << "with x1 = " << eh.lastXCombPtr()->lastX1() << " x2 = " << eh.lastXCombPtr()->lastX2() << "\n" << flush; } } bool PowhegSplittingGenerator::generate(EventHandler & eh) { pair<GeneratorMap::iterator,GeneratorMap::iterator> generators = getGenerators(eh); Energy winnerPt = 0.*GeV; Energy pt; GeneratorMap::iterator winner = theGeneratorMap.end(); for ( GeneratorMap::iterator gen = generators.first; gen != generators.second; ++gen ) { assert(gen->second.first->lastHeadXCombPtr() == eh.lastXCombPtr()); assert(gen->second.first->projectionDipole()->lastHeadXCombPtr() == eh.lastXCombPtr()); assert(gen->second.first->projectionDipole()->lastXCombPtr() == gen->second.first->lastXCombPtr()); pt = generate(gen->second); if ( pt > winnerPt ) { winnerPt = pt; winner = gen; } } if ( winner == theGeneratorMap.end() ) { theLastSplitting = Ptr<PowhegSplittingKernel>::tptr(); return false; } theLastSplitting = winner->second.first; return true; } void PowhegSplittingGenerator::veto(EventHandler & eh) const { tSubProPtr sub = eh.currentStep()->subProcesses().front(); if ( sub->incoming().first->coloured() ) { sub->incoming().first->vetoScale(ZERO); } if ( sub->incoming().second->coloured() ) { sub->incoming().first->vetoScale(ZERO); } for ( ParticleVector::const_iterator p = sub->outgoing().begin(); p != sub->outgoing().end(); ++p ) if ( (**p).coloured() ) (**p).vetoScale(ZERO); } IBPtr PowhegSplittingGenerator::clone() const { return new_ptr(*this); } IBPtr PowhegSplittingGenerator::fullclone() const { return new_ptr(*this); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void PowhegSplittingGenerator::persistentOutput(PersistentOStream & os) const { os << ounit(theFFPtCut,GeV) << ounit(theFFScreeningScale,GeV) << ounit(theFIPtCut,GeV) << ounit(theFIScreeningScale,GeV) << ounit(theIIPtCut,GeV) << ounit(theIIScreeningScale,GeV) << discardNoEmissions << theVerbose; } void PowhegSplittingGenerator::persistentInput(PersistentIStream & is, int) { is >> iunit(theFFPtCut,GeV) >> iunit(theFFScreeningScale,GeV) >> iunit(theFIPtCut,GeV) >> iunit(theFIScreeningScale,GeV) >> iunit(theIIPtCut,GeV) >> iunit(theIIScreeningScale,GeV) >> discardNoEmissions >> theVerbose; } pair<PowhegSplittingGenerator::GeneratorMap::iterator, PowhegSplittingGenerator::GeneratorMap::iterator> PowhegSplittingGenerator::getGenerators(EventHandler& eh) { tXCombPtr xc = eh.lastXCombPtr(); const ThePEG::StandardXComb& xcref = *dynamic_ptr_cast<tStdXCombPtr>(xc); if ( theVerbose ) { generator()->log() << "getting splitting generators for xcomb " << xc << " and process "; generator()->log() << xcref.mePartonData()[0]->PDGName() << " " << xcref.mePartonData()[1]->PDGName() << " -> "; for ( ThePEG::cPDVector::const_iterator pid = xcref.mePartonData().begin() + 2; pid != xcref.mePartonData().end(); ++pid ) generator()->log() << (**pid).PDGName() << " "; generator()->log() << "\n" << flush; } pair<GeneratorMap::iterator,GeneratorMap::iterator> res = theGeneratorMap.equal_range(xc); if ( res.first != res.second ) { if ( theVerbose ) generator()->log() << "generators already known\n" << flush; return res; } tStdXCombGroupPtr xcGrp = dynamic_ptr_cast<tStdXCombGroupPtr>(xc); if ( !xcGrp ) { if ( theVerbose ) generator()->log() << "xcomb is not an xcomb group\n" << flush; return make_pair(theGeneratorMap.end(),theGeneratorMap.end()); } Ptr<PowhegInclusiveME>::tptr me = dynamic_ptr_cast<Ptr<PowhegInclusiveME>::tptr>((*xcGrp).matrixElement()); if ( !me ) { if ( theVerbose ) generator()->log() << "matrix element is not a powheg inclusive me\n" << flush; return make_pair(theGeneratorMap.end(),theGeneratorMap.end()); } for ( vector<Ptr<PowhegSplittingKernel>::ptr>::iterator k = me->splittingKernels().begin(); k != me->splittingKernels().end(); ++k ) { if ( !(**k).apply() ) continue; if ( theVerbose ) generator()->log() << "initializing generator for kernel '" << (**k).name() << "'\n" << flush; assert((**k).lastHeadXCombPtr() == eh.lastXCombPtr()); assert((**k).projectionDipole()->lastHeadXCombPtr() == eh.lastXCombPtr()); assert((**k).lastXCombPtr() == (**k).projectionDipole()->lastXCombPtr()); (**k).splittingGenerator(this); if ( (**k).projectionDipole()->realEmitter() > 1 && (**k).projectionDipole()->realSpectator() > 1 ) { (**k).ptCut(theFFPtCut); (**k).screeningScale(theFFScreeningScale); } else if ( (**k).projectionDipole()->realEmitter() < 2 && (**k).projectionDipole()->realSpectator() < 2 ) { (**k).ptCut(theIIPtCut); (**k).screeningScale(theIIScreeningScale); } else { (**k).ptCut(theFIPtCut); (**k).screeningScale(theFIScreeningScale); } ExponentialGeneratorPtr gen = new ExponentialGenerator(); gen->sampling_parameters().maxtry = (**k).maxtry(); gen->sampling_parameters().presampling_points = (**k).presamplingPoints(); gen->function(*k); gen->initialize(); theGeneratorMap.insert(make_pair(xc,make_pair(*k,gen))); } return getGenerators(eh); } Energy PowhegSplittingGenerator::generate(pair<Ptr<PowhegSplittingKernel>::ptr,ExponentialGeneratorPtr>& gen) { double res = 0.; gen.first->splittingGenerator(this); while (true) { try { res = gen.second->generate(); } catch (exsample::exponential_regenerate&) { continue; } catch (exsample::hit_and_miss_maxtry&) { throw Veto(); } catch (exsample::selection_maxtry&) { throw Veto(); } break; } if ( theVerbose ) { generator()->log() << "Generating splitting from '" << gen.first->projectionDipole()->name() << "'.\n" << flush; if ( res == 0. ) generator()->log() << "Below infrared cutoff.\n" << flush; else generator()->log() << "pt/GeV = " << (gen.first->projectionDipole()->lastPt()/GeV) << ".\n" << flush; } if ( res == 0. ) return 0.*GeV; return gen.first->projectionDipole()->lastPt(); } void PowhegSplittingGenerator::Init() { static ClassDocumentation<PowhegSplittingGenerator> documentation ("PowhegSplittingGenerator"); static Parameter<PowhegSplittingGenerator,Energy> interfaceFFPtCut ("FFPtCut", "Set the pt infrared cutoff", &PowhegSplittingGenerator::theFFPtCut, GeV, 1.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); static Parameter<PowhegSplittingGenerator,Energy> interfaceFFScreeningScale ("FFScreeningScale", "Set the screening scale", &PowhegSplittingGenerator::theFFScreeningScale, GeV, 0.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); static Parameter<PowhegSplittingGenerator,Energy> interfaceFIPtCut ("FIPtCut", "Set the pt infrared cutoff", &PowhegSplittingGenerator::theFIPtCut, GeV, 1.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); static Parameter<PowhegSplittingGenerator,Energy> interfaceFIScreeningScale ("FIScreeningScale", "Set the screening scale", &PowhegSplittingGenerator::theFIScreeningScale, GeV, 0.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); static Parameter<PowhegSplittingGenerator,Energy> interfaceIIPtCut ("IIPtCut", "Set the pt infrared cutoff", &PowhegSplittingGenerator::theIIPtCut, GeV, 1.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); static Parameter<PowhegSplittingGenerator,Energy> interfaceIIScreeningScale ("IIScreeningScale", "Set the screening scale", &PowhegSplittingGenerator::theIIScreeningScale, GeV, 0.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); static Switch<PowhegSplittingGenerator,bool> interfaceVerbose ("Verbose", "", &PowhegSplittingGenerator::theVerbose, false, false, false); static SwitchOption interfaceVerboseOn (interfaceVerbose, "On", "", true); static SwitchOption interfaceVerboseOff (interfaceVerbose, "Off", "", false); static Switch<PowhegSplittingGenerator,bool> interfaceDiscardNoEmissions ("DiscardNoEmissions", "Discard events without radiation.", &PowhegSplittingGenerator::discardNoEmissions, false, false, false); static SwitchOption interfaceDiscardNoEmissionsOn (interfaceDiscardNoEmissions, "On", "Discard events without radiation.", true); static SwitchOption interfaceDiscardNoEmissionsOff (interfaceDiscardNoEmissions, "Off", "Do not discard events without radiation.", false); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<PowhegSplittingGenerator,StepHandler> describeHerwigPowhegSplittingGenerator("Herwig::PowhegSplittingGenerator", "HwMatchbox.so"); ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/PowhegInclusiveReweight.cc������������������������0000644�0001750�0001750�00000005217�11754474775�027702� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PowhegInclusiveReweight.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PowhegInclusiveReweight class. // #include "PowhegInclusiveReweight.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; PowhegInclusiveReweight::PowhegInclusiveReweight() : theBornScreening(true) {} PowhegInclusiveReweight::~PowhegInclusiveReweight() {} IBPtr PowhegInclusiveReweight::clone() const { return new_ptr(*this); } IBPtr PowhegInclusiveReweight::fullclone() const { return new_ptr(*this); } double PowhegInclusiveReweight::evaluate() const { if ( projectionDipole()->verbose() ) generator()->log() << "'" << name() << "' evaluating inclusive reweight\n"; double sratio; double ratio = ME2byDipoles::evaluate(sratio); if ( bornScreening() ) { if ( !projectionDipole()->underlyingBornME()-> lastXCombPtr()->willPassCuts() ) return 0.; double born = scaledBorn(); double screen = scaledBornScreen(); ratio *= born / ( born + screen ); } if ( projectionDipole()->verbose() ) generator()->log() << "'" << name() << "' done evaluating inclusive reweight\n"; return ratio - sratio; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void PowhegInclusiveReweight::persistentOutput(PersistentOStream & os) const { os << theBornScreening; } void PowhegInclusiveReweight::persistentInput(PersistentIStream & is, int) { is >> theBornScreening; } void PowhegInclusiveReweight::Init() { static ClassDocumentation<PowhegInclusiveReweight> documentation ("PowhegInclusiveReweight"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<PowhegInclusiveReweight,ME2byDipoles> describeHerwigPowhegInclusiveReweight("Herwig::PowhegInclusiveReweight", "HwMatchbox.so"); ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/Makefile.am���������������������������������������0000644�0001750�0001750�00000000633�11754474775�024612� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwMatchboxPowheg.la libHwMatchboxPowheg_la_SOURCES = \ ME2byDipoles.cc \ ME2byDipoles.h \ PowhegFactory.cc \ PowhegFactory.h \ PowhegInclusiveME.cc \ PowhegInclusiveME.h \ PowhegInclusiveReweight.cc \ PowhegInclusiveReweight.h \ PowhegRealReweight.cc \ PowhegRealReweight.h \ PowhegSplittingGenerator.cc \ PowhegSplittingGenerator.h \ PowhegSplittingKernel.cc \ PowhegSplittingKernel.h �����������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/PowhegRealReweight.cc�����������������������������0000644�0001750�0001750�00000007322�11754474775�026623� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PowhegRealReweight.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PowhegRealReweight class. // #include "PowhegRealReweight.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; PowhegRealReweight::PowhegRealReweight() : ME2byDipoles(), theBornScreening(true) {} PowhegRealReweight::~PowhegRealReweight() {} IBPtr PowhegRealReweight::clone() const { return new_ptr(*this); } IBPtr PowhegRealReweight::fullclone() const { return new_ptr(*this); } double PowhegRealReweight::evaluate() const { if ( !bornScreening() ) return 0.0; double dummy; double ratio = ME2byDipoles::evaluate(dummy); double born = scaledBorn(); double screen = scaledBornScreen(); ratio *= screen / ( born + screen ); return ratio; } void PowhegRealReweight::setVetoScales(tSubProPtr subpro) const { Energy pt = projectionDipole()->lastPt(); if ( projectionDipole()->realEmitter() == 0 || projectionDipole()->realSpectator() == 0 ) { if ( subpro->incoming().first->vetoScale() < 0.0*GeV2 || subpro->incoming().first->vetoScale() > sqr(pt) ) subpro->incoming().first->vetoScale(sqr(pt)); } if ( projectionDipole()->realEmitter() == 1 || projectionDipole()->realSpectator() == 1 ) { if ( subpro->incoming().second->vetoScale() < 0.0*GeV2 || subpro->incoming().second->vetoScale() > sqr(pt) ) subpro->incoming().second->vetoScale(sqr(pt)); } if ( projectionDipole()->realEmitter() > 1 ) { if ( subpro->outgoing()[projectionDipole()->realEmitter()-2]->vetoScale() < 0.0*GeV2 || subpro->outgoing()[projectionDipole()->realEmitter()-2]->vetoScale() > sqr(pt) ) subpro->outgoing()[projectionDipole()->realEmitter()-2]->vetoScale(sqr(pt)); } if ( projectionDipole()->realSpectator() > 1 ) { if ( subpro->outgoing()[projectionDipole()->realSpectator()-2]->vetoScale() < 0.0*GeV2 || subpro->outgoing()[projectionDipole()->realSpectator()-2]->vetoScale() > sqr(pt) ) subpro->outgoing()[projectionDipole()->realSpectator()-2]->vetoScale(sqr(pt)); } if ( subpro->outgoing()[projectionDipole()->realEmission()-2]->vetoScale() < 0.0*GeV2 || subpro->outgoing()[projectionDipole()->realEmission()-2]->vetoScale() > sqr(pt) ) subpro->outgoing()[projectionDipole()->realEmission()-2]->vetoScale(sqr(pt)); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void PowhegRealReweight::persistentOutput(PersistentOStream & os) const { os << theBornScreening; } void PowhegRealReweight::persistentInput(PersistentIStream & is, int) { is >> theBornScreening; } void PowhegRealReweight::Init() { static ClassDocumentation<PowhegRealReweight> documentation ("PowhegRealReweight"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<PowhegRealReweight,ME2byDipoles> describeHerwigPowhegRealReweight("Herwig::PowhegRealReweight", "HwMatchbox.so"); ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/PowhegSplittingKernel.h���������������������������0000644�0001750�0001750�00000017463�11754474775�027230� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PowhegSplittingKernel.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PowhegSplittingKernel_H #define HERWIG_PowhegSplittingKernel_H // // This is the declaration of the PowhegSplittingKernel class. // #include "Herwig++/MatrixElement/Matchbox/Powheg/ME2byDipoles.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/InvertedTildeKinematics.h" namespace Herwig { using namespace ThePEG; class PowhegSplittingGenerator; /** * \ingroup Matchbox * \author Simon Platzer * * \brief PowhegSplittingKernel implements the splitting * kernel entering the POWHEG Sudakov form factor. * */ class PowhegSplittingKernel: public ME2byDipoles { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ PowhegSplittingKernel(); /** * The destructor. */ virtual ~PowhegSplittingKernel(); //@} public: /** * Evaluate the ratio. */ virtual double evaluate() const; /** * Return true, if 'Born screening' should be done */ bool bornScreening() const { return theBornScreening; } /** * Switch on 'Born screening' */ void doBornScreening() { theBornScreening = true; } /** * Switch off 'Born screening' */ void noBornScreening() { theBornScreening = false; } /** * Set a pt cut */ void ptCut(Energy pt) { projectionDipole()->ptCut(pt); } /** * Set a screening scale */ void screeningScale(Energy s) { theScreeningScale = s; } /** * Set a reference to the splitting generator * making use of this kernel. */ void splittingGenerator(Ptr<PowhegSplittingGenerator>::tptr gen); public: /** * Set the XComb object steering the real emission. */ virtual void setXComb(tStdXCombPtr real); /** * Return the number of random numbers * needed to sample this kernel. */ int nDim() const; /** * Flag, which variables are free variables. */ const vector<bool>& sampleFlags(); /** * Return the support of the splitting kernel. * The lower bound on the first variable is * assumed to correspond to the cutoff on the * evolution variable. */ const pair<vector<double>,vector<double> >& support(); /** * Return the parameter point associated to the splitting * previously supplied through fixParameters. */ const vector<double>& parameterPoint(); /** * Indicate that presampling of this kernel * will be performed in the next calls to * evaluate until stopPresampling() is called. */ void startPresampling(); /** * Indicate that presampling of this kernel * is done until startPresampling() is called. */ void stopPresampling(); /** * Return the number of points to presample this * splitting generator. */ unsigned long presamplingPoints() const { return thePresamplingPoints; } /** * Return the maximum number of trials * to generate a splitting. */ unsigned long maxtry() const { return theMaxTry; } /** * Set the number of points to presample this * splitting generator. */ void presamplingPoints(unsigned long p) { thePresamplingPoints = p; } /** * Set the maximum number of trials * to generate a splitting. */ void maxtry(unsigned long p) { theMaxTry = p; } /** * Evalute the splitting kernel. */ double evaluate(const vector<double>&); /** * Return true, if currently being presampled */ bool presampling() const { return thePresampling; } /** * Return the index of the random number corresponding * to the evolution variable. */ int evolutionVariable() const; /** * Return the cutoff on the evolution * random number corresponding to the pt cut. */ double evolutionCutoff() const { return projectionDipole()->invertedTildeKinematics()->evolutionCutoff(); } public: /** * Return the subprocess from which splittings * have been generated. */ tSubProPtr bornSubProcess() const { return projectionDipole()->lastHeadXCombPtr()->subProcess(); } /** * Return a new subprocess, if selected for splitting */ tSubProPtr construct(Energy pt); public: /**@name Wrap to the exsample2 interface until this is finally cleaned up. */ //@{ inline const vector<bool>& variable_flags () { return sampleFlags(); } inline size_t evolution_variable () const { return evolutionVariable(); } inline double evolution_cutoff () const { return evolutionCutoff(); } inline const vector<double>& parameter_point () { return parameterPoint(); } inline void start_presampling () { startPresampling(); } inline void stop_presampling () { stopPresampling(); } inline size_t dimension () const { return nDim(); } inline unsigned long presampling_points () const { return presamplingPoints(); } //@} 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * True, if 'Born screening' should be done */ bool theBornScreening; /** * The number of points to presample this * splitting generator. */ unsigned long thePresamplingPoints; /** * The maximum number of trials * to generate a splitting. */ unsigned long theMaxTry; /** * An optional screening scale; see * DipoleSplittingKernel */ Energy theScreeningScale; /** * The range of born random numbers */ pair<int,int> theBornRandom; /** * The range of radiation random numbers */ pair<int,int> theRadiationRandom; /** * The last parameter point */ vector<double> theLastParameterPoint; /** * Random numbers used to presample the Born */ vector<double> thePresamplingPoint; /** * True, if currently being presampled */ bool thePresampling; /** * Backup of the Born XComb when being presampled. */ StdXCombPtr theXCombBackup; /** * Map Born XCombs to private ones used for presampling. */ map<StdXCombPtr,StdXCombPtr> thePresamplingXCombs; /** * A reference to the splitting generator * making use of this kernel. */ Ptr<PowhegSplittingGenerator>::tptr theGenerator; /** * The sampling flags */ vector<bool> theFlags; /** * The support. */ pair<vector<double>,vector<double> > theSupport; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ PowhegSplittingKernel & operator=(const PowhegSplittingKernel &); }; } #endif /* HERWIG_PowhegSplittingKernel_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/ME2byDipoles.h������������������������������������0000644�0001750�0001750�00000013245�11754474775�025170� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ME2byDipoles.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ME2byDipoles_H #define HERWIG_ME2byDipoles_H // // This is the declaration of the ME2byDipoles class. // #include "ThePEG/Handlers/LastXCombInfo.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxReweightBase.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxMEBase.h" #include "Herwig++/MatrixElement/Matchbox/Dipoles/SubtractionDipole.h" #include "Herwig++/MatrixElement/Matchbox/Base/SubtractedME.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief ME2byDipoles is the base class for all * quantities of type |M_R|^2 / \sum D * */ class ME2byDipoles: public MatchboxReweightBase, public LastXCombInfo<StandardXComb> { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ ME2byDipoles(); /** * The destructor. */ virtual ~ME2byDipoles(); //@} public: /** * Set the XComb object steering the real emission. */ virtual void setXComb(tStdXCombPtr real); /** * Return true, if applies to the process in the xcomb. */ virtual bool apply() const { return projectionDipole()->apply(); } /** * Evaluate the ratio. */ virtual double evaluate() const { double dummy; return evaluate(dummy); } /** * Evaluate the ratio. */ double evaluate(double&) const; public: /** * Return a scaled Born screening cross section */ double scaledBornScreen() const; /** * Return a scaled Born cross section */ double scaledBorn(Energy2 factorizationScale = ZERO) const; protected: /** * Setup dependent xcombs for a yet unknown * real emission xcomb. */ void getXCombs(tStdXCombPtr); public: /** * Return the real emission matrix element */ Ptr<MatchboxMEBase>::tcptr realME() const { return theRealME; } /** * Return the real emission matrix element */ Ptr<MatchboxMEBase>::tptr realME() { return theRealME; } /** * Set the real emission matrix element */ void realME(Ptr<MatchboxMEBase>::tptr me) { theRealME = me; } /** * Return the subtraction dipoles */ const vector<Ptr<SubtractionDipole>::ptr>& dipoles() const { return theDipoles; } /** * Access the subtraction dipoles */ vector<Ptr<SubtractionDipole>::ptr>& dipoles() { return theDipoles; } /** * Setup from a subtracted matrix element, calculating * |M_R|^2 / Dipoles */ void setup(Ptr<SubtractedME>::tptr); /** * Setup from a dipole and subtracted matrix element and * dipole calculating dip / Dipoles */ void setup(Ptr<SubtractionDipole>::tptr dip, Ptr<SubtractedME>::tptr); /** * Set the dipole to obtain Born cross sections for * further reweighting. */ void projectionDipole(Ptr<SubtractionDipole>::tptr dip) { theProjectionDipole = dip; } /** * Return the dipole to obtain Born cross sections for * further reweighting. */ Ptr<SubtractionDipole>::tcptr projectionDipole() const { return theProjectionDipole; } /** * Return the dipole to obtain Born cross sections for * further reweighting. */ Ptr<SubtractionDipole>::tptr projectionDipole() { return theProjectionDipole; } public: /** * Dump the setup to an ostream */ virtual void print(ostream&) const; /** * Print debug information on the last event */ virtual void printLastEvent(ostream&) const; /** * Dump xcomb hierarchies. */ void dumpInfo(const string& prefix = "") 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The real emission matrix element. */ Ptr<MatchboxMEBase>::ptr theRealME; /** * A dipole to obtain Born cross sections for * further reweighting. */ Ptr<SubtractionDipole>::ptr theProjectionDipole; /** * The dipoles to be considered. */ vector<Ptr<SubtractionDipole>::ptr> theDipoles; /** * A map of real xcombs to Born xcombs to * be used by the dipoles. */ map<StdXCombPtr,vector<StdDependentXCombPtr> > theXCombMap; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ME2byDipoles & operator=(const ME2byDipoles &); }; } #endif /* HERWIG_ME2byDipoles_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/ME2byDipoles.cc�����������������������������������0000644�0001750�0001750�00000025145�11754474775�025330� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ME2byDipoles.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ME2byDipoles class. // #include "ME2byDipoles.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; ME2byDipoles::ME2byDipoles() : MatchboxReweightBase() {} ME2byDipoles::~ME2byDipoles() {} IBPtr ME2byDipoles::clone() const { return new_ptr(*this); } IBPtr ME2byDipoles::fullclone() const { return new_ptr(*this); } void ME2byDipoles::setup(Ptr<SubtractedME>::tptr sub) { theRealME = dynamic_ptr_cast<Ptr<MatchboxMEBase>::ptr>(sub->head()); assert(theRealME); Ptr<MatchboxMEBase>::ptr nreal = theRealME->cloneMe(); ostringstream pname; pname << fullName() << "/" << nreal->name(); if ( ! (generator()->preinitRegister(nreal,pname.str()) ) ) throw InitException() << "Matrix element " << pname.str() << " already existing."; nreal->cloneDependencies(); theRealME = nreal; vector<Ptr<SubtractionDipole>::ptr> inDipoles = sub->dipoles(); theDipoles.clear(); for ( vector<Ptr<SubtractionDipole>::ptr>::iterator d = inDipoles.begin(); d != inDipoles.end(); ++d ) { Ptr<SubtractionDipole>::ptr ndipole = (**d).cloneMe(); ostringstream dname; dname << fullName() << "/" << (**d).name(); if ( ! (generator()->preinitRegister(ndipole,dname.str())) ) throw InitException() << "Dipole '" << dname.str() << "' already existing."; ndipole->cloneDependencies(); theDipoles.push_back(ndipole); } for ( vector<Ptr<SubtractionDipole>::ptr>::iterator d = theDipoles.begin(); d != theDipoles.end(); ++d ) (**d).doSubtraction(); } void ME2byDipoles::setup(Ptr<SubtractionDipole>::tptr dip, Ptr<SubtractedME>::tptr sub) { vector<Ptr<SubtractionDipole>::ptr> inDipoles = sub->dipoles(); theDipoles.clear(); for ( vector<Ptr<SubtractionDipole>::ptr>::iterator d = inDipoles.begin(); d != inDipoles.end(); ++d ) { Ptr<SubtractionDipole>::ptr ndipole = (**d).cloneMe(); ostringstream dname; dname << fullName() << "/" << (**d).name(); if ( ! (generator()->preinitRegister(ndipole,dname.str())) ) throw InitException() << "Dipole '" << dname.str() << "' already existing."; ndipole->cloneDependencies(); theDipoles.push_back(ndipole); if ( *d == dip ) { projectionDipole(theDipoles.back()); } } theRealME = Ptr<MatchboxMEBase>::ptr(); for ( vector<Ptr<SubtractionDipole>::ptr>::iterator d = theDipoles.begin(); d != theDipoles.end(); ++d ) (**d).doSubtraction(); } void ME2byDipoles::setXComb(tStdXCombPtr real) { assert(real); theLastXComb = real; map<StdXCombPtr,vector<StdDependentXCombPtr> >::iterator xcs = theXCombMap.find(theLastXComb); if ( xcs == theXCombMap.end() ) { getXCombs(theLastXComb); xcs = theXCombMap.find(theLastXComb); } if ( theRealME ) theRealME->setXComb(theLastXComb); vector<StdDependentXCombPtr>::iterator xcit = xcs->second.begin(); vector<Ptr<SubtractionDipole>::ptr>::iterator dip = theDipoles.begin(); for ( ; xcit != xcs->second.end(); ++xcit, ++dip ) (**dip).setXComb(*xcit); } double ME2byDipoles::scaledBornScreen() const { if ( projectionDipole()->verbose() ) generator()->log() << "'" << name() << "' evaluating Born screening\n"; Energy scale = projectionDipole()->lastDipoleScale(); Energy pt = projectionDipole()->lastPt(); if ( projectionDipole()->verbose() ) generator()->log() << "from pt/GeV = " << (pt/GeV) << " scale/GeV = " << (scale/GeV) << "\n" << flush; return pow(pt/scale,4.); } double ME2byDipoles::scaledBorn(Energy2 factorizationScale) const { if ( projectionDipole()->verbose() ) generator()->log() << "'" << name() << "' evaluating scaled Born\n" << flush; projectionDipole()->underlyingBornME()->setScale(); projectionDipole()->underlyingBornME()->getPDFWeight(factorizationScale); double me2 = projectionDipole()->underlyingBornME()->me2(); double pdf = projectionDipole()->underlyingBornME()->lastXComb().lastMEPDFWeight(); if ( projectionDipole()->verbose() ) generator()->log() << "'" << name() << "' done evaluating scaled Born\n" << flush; return me2 * pdf; } double ME2byDipoles::evaluate(double& sratio) const { if ( projectionDipole()->verbose() ) generator()->log() << "'" << name() << "' evaluating\n" << flush; double den = 0.0; sratio = 0.; double numDip = 0.0; for ( vector<Ptr<SubtractionDipole>::ptr>::const_iterator dip = theDipoles.begin(); dip != theDipoles.end(); ++dip ) { if ( !(**dip).apply() ) continue; tStdDependentXCombPtr depXComb = dynamic_ptr_cast<tStdDependentXCombPtr>((**dip).lastXCombPtr()); assert(depXComb); depXComb->setProcess(); if ( !(**dip).generateTildeKinematics() ) continue; depXComb->remakeIncoming(); depXComb->setIncomingPartons(); (**dip).realEmissionME()->setScale(); (**dip).underlyingBornME()->setScale(); double res = (**dip).me2(); den += abs(res); if ( depXComb->willPassCuts() ) sratio += res; if ( *dip == projectionDipole() ) { numDip = abs(res); } } if ( sratio != 0. ) { assert(abs(den) != 0.0); sratio /= den; } if ( theRealME ) { if ( !realME()->lastXCombPtr()->willPassCuts() ) return 0.0; } assert(abs(den) != 0.); double num = theRealME ? realME()->me2() : numDip; double res = num / den; if ( projectionDipole()->verbose() ) { generator()->log() << "'" << name() << "' done evaluating\n" << "numerator = " << num << " denominator = " << den << "\n" << flush; } return res; } void ME2byDipoles::getXCombs(tStdXCombPtr xc) { vector<StdDependentXCombPtr> xcs; for ( vector<Ptr<SubtractionDipole>::ptr>::iterator dip = theDipoles.begin(); dip != theDipoles.end(); ++dip ) { StdDependentXCombPtr depxc = (**dip).makeBornXComb(xc); xcs.push_back(depxc); } theXCombMap[xc] = xcs; } void ME2byDipoles::print(ostream& os) const { os << "--- ME2byDipoles setup ---------------------------------------------------------\n"; os << " '" << name() << "'\n" << " real emission matrix element '" << theRealME->name() << "'\n" << " projection dipole: '" << (projectionDipole() ? projectionDipole()->name() : "") << "'\n"; os << " associated dipoles are:\n"; for ( vector<Ptr<SubtractionDipole>::ptr>::const_iterator dip = theDipoles.begin(); dip != theDipoles.end(); ++dip ) { os << " '" << (**dip).name() << "'\n"; } os << "--------------------------------------------------------------------------------\n"; os << flush; } void ME2byDipoles::printLastEvent(ostream& os) const { os << "--- ME2byDipoles last event information ----------------------------------------\n"; os << " for ratio '" << name() << "'\n"; os << " real emission event information:\n"; if ( dynamic_ptr_cast<Ptr<MatchboxMEBase>::ptr>(theRealME) ) dynamic_ptr_cast<Ptr<MatchboxMEBase>::ptr>(theRealME)->printLastEvent(os); else if ( dynamic_ptr_cast<Ptr<SubtractionDipole>::ptr>(theRealME) ) dynamic_ptr_cast<Ptr<SubtractionDipole>::ptr>(theRealME)->printLastEvent(os); else os << " unknown MEBase object.\n"; if ( projectionDipole() ) { os << " projection dipole event information:\n"; projectionDipole()->printLastEvent(os); } os << " dipoles event information:\n"; for ( vector<Ptr<SubtractionDipole>::ptr>::const_iterator d = theDipoles.begin(); d != theDipoles.end(); ++d ) (**d).printLastEvent(os); os << "--- end ME2byDipoles last event information ------------------------------------\n"; os << flush; } void ME2byDipoles::dumpInfo(const string& prefix) const { generator()->log() << prefix << fullName() << " [" << this << "]\n"; generator()->log() << prefix << " | XComb " << lastXCombPtr() << " for "; if ( lastXCombPtr() ) { for ( cPDVector::const_iterator p = lastXComb().mePartonData().begin(); p != lastXComb().mePartonData().end(); ++p ) { generator()->log() << (**p).PDGName() << " "; } } generator()->log() << "\n"; if ( realME() ) { generator()->log() << prefix << " | Real emission ME\n"; realME()->dumpInfo(prefix+" | "); } generator()->log() << prefix << " | Projection dipole " << projectionDipole() << "\n"; generator()->log() << prefix << " | Denominator dipoles\n"; for ( vector<Ptr<SubtractionDipole>::ptr>::const_iterator d = dipoles().begin(); d != dipoles().end(); ++d ) { (**d).dumpInfo(prefix+" | "); } } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void ME2byDipoles::persistentOutput(PersistentOStream & os) const { os << theLastXComb << theRealME << theProjectionDipole << theDipoles; } void ME2byDipoles::persistentInput(PersistentIStream & is, int) { is >> theLastXComb >> theRealME >> theProjectionDipole >> theDipoles; } void ME2byDipoles::Init() { static ClassDocumentation<ME2byDipoles> documentation ("ME2byDipoles"); static Reference<ME2byDipoles,MatchboxMEBase> interfaceRealME ("RealME", "The real emission matrix element.", &ME2byDipoles::theRealME, false, false, true, false, false); static Reference<ME2byDipoles,SubtractionDipole> interfaceProjectionDipole ("ProjectionDipole", "The projection dipole.", &ME2byDipoles::theProjectionDipole, false, false, true, false, false); static RefVector<ME2byDipoles,SubtractionDipole> interfaceDipoles ("Dipoles", "The dipoles associated to the real emission matrix element.", &ME2byDipoles::theDipoles, -1, false, false, true, false, false); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeAbstractClass<ME2byDipoles,MatchboxReweightBase> describeME2byDipoles("Herwig::ME2byDipoles", "HwMatchbox.so"); ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/Powheg/PowhegSplittingKernel.cc��������������������������0000644�0001750�0001750�00000027031�11754474775�027356� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PowhegSplittingKernel.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PowhegSplittingKernel class. // #include "PowhegSplittingKernel.h" #include "PowhegSplittingGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Cuts/Cuts.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxNLOME.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/PDF/PartonExtractor.h" #include "ThePEG/Handlers/StdXCombGroup.h" #include <iterator> using std::ostream_iterator; using namespace Herwig; PowhegSplittingKernel::PowhegSplittingKernel() : ME2byDipoles(), theBornScreening(true), thePresamplingPoints(10000), theMaxTry(100000), theScreeningScale(ZERO), theBornRandom(0,0), theRadiationRandom(0,0), thePresampling(false) {} PowhegSplittingKernel::~PowhegSplittingKernel() {} IBPtr PowhegSplittingKernel::clone() const { return new_ptr(*this); } IBPtr PowhegSplittingKernel::fullclone() const { return new_ptr(*this); } void PowhegSplittingKernel::splittingGenerator(Ptr<PowhegSplittingGenerator>::tptr gen) { theGenerator = gen; } void PowhegSplittingKernel::setXComb(tStdXCombPtr real) { if ( real ) ME2byDipoles::setXComb(real); projectionDipole()->setXComb(real); if ( !real ) return; if ( theBornRandom.first == theBornRandom.second ) { theBornRandom.first = projectionDipole()->lastHeadXComb().pExtractor()-> nDims(projectionDipole()->lastHeadXComb().partonBins()).first; theBornRandom.second = theBornRandom.first + projectionDipole()->underlyingBornME()->nDim(); theRadiationRandom.first = theBornRandom.second + ( projectionDipole()->lastHeadXComb().matrixElement()->nDim() - // includes radiation & the coll remainders projectionDipole()->underlyingBornME()->nDim() - projectionDipole()->nDimRadiation() ); theRadiationRandom.second = theRadiationRandom.first + projectionDipole()->nDimRadiation(); } if ( thePresamplingXCombs.find(real->head()) == thePresamplingXCombs.end() ) { tStdXCombPtr bornxc = real->head(); thePresamplingXCombs[bornxc] = new_ptr(StandardXComb(bornxc->maxEnergy(),bornxc->particles(), bornxc->eventHandlerPtr(), const_ptr_cast<tSubHdlPtr>(bornxc->subProcessHandler()), bornxc->pExtractor(),bornxc->CKKWHandler(), bornxc->partonBins(),bornxc->cuts(), projectionDipole()->underlyingBornME(), bornxc->diagrams(),bornxc->mirror())); } } tSubProPtr PowhegSplittingKernel::construct(Energy pt) { // only cluster real emission if ( lastCuts().jetFinder() ) lastCuts().jetFinder()->minOutgoing(lastXComb().mePartonData().size()-2); tSubProPtr subpro = lastXCombPtr()->construct(); if ( projectionDipole()->realEmitter() == 0 || projectionDipole()->realSpectator() == 0 ) { if ( subpro->incoming().first->vetoScale() < 0.0*GeV2 || subpro->incoming().first->vetoScale() > sqr(pt) ) subpro->incoming().first->vetoScale(sqr(pt)); } if ( projectionDipole()->realEmitter() == 1 || projectionDipole()->realSpectator() == 1 ) { if ( subpro->incoming().second->vetoScale() < 0.0*GeV2 || subpro->incoming().second->vetoScale() > sqr(pt) ) subpro->incoming().second->vetoScale(sqr(pt)); } if ( projectionDipole()->realEmitter() > 1 ) { if ( subpro->outgoing()[projectionDipole()->realEmitter()-2]->vetoScale() < 0.0*GeV2 || subpro->outgoing()[projectionDipole()->realEmitter()-2]->vetoScale() > sqr(pt) ) subpro->outgoing()[projectionDipole()->realEmitter()-2]->vetoScale(sqr(pt)); } if ( projectionDipole()->realSpectator() > 1 ) { if ( subpro->outgoing()[projectionDipole()->realSpectator()-2]->vetoScale() < 0.0*GeV2 || subpro->outgoing()[projectionDipole()->realSpectator()-2]->vetoScale() > sqr(pt) ) subpro->outgoing()[projectionDipole()->realSpectator()-2]->vetoScale(sqr(pt)); } if ( subpro->outgoing()[projectionDipole()->realEmission()-2]->vetoScale() < 0.0*GeV2 || subpro->outgoing()[projectionDipole()->realEmission()-2]->vetoScale() > sqr(pt) ) subpro->outgoing()[projectionDipole()->realEmission()-2]->vetoScale(sqr(pt)); return subpro; } double PowhegSplittingKernel::evaluate() const { if ( projectionDipole()->verbose() ) generator()->log() << "'" << name() << "' evaluating\n"; if ( !projectionDipole()->underlyingBornME()-> lastXCombPtr()->willPassCuts() ) return 0.; double fscaleFactor = projectionDipole()->realEmissionME()->factorizationScaleFactor(); Energy2 fscale = fscaleFactor * (sqr(projectionDipole()->lastPt()) + sqr(theScreeningScale)); double dummy; double ratio = ME2byDipoles::evaluate(dummy); Energy2 bornSHat = projectionDipole()->underlyingBornME()->lastXComb().lastSHat(); double bornJacobian = projectionDipole()->underlyingBornME()->lastXComb().jacobian(); if ( projectionDipole()->verbose() ) generator()->log() << "Born sHat/GeV2 = " << (bornSHat/GeV2) << " Born Jacobian = " << bornJacobian << "\n" << flush; CrossSection born = sqr(hbarc) * scaledBorn(fscale) * bornJacobian / (2.*bornSHat); if ( born == ZERO ) { if ( projectionDipole()->verbose() ) generator()->log() << "'" << name() << "' done evaluating\n"; return 0.0; } if ( bornScreening() ) { born += sqr(hbarc) * scaledBornScreen() * bornJacobian / (2.*bornSHat); } ratio *= ( projectionDipole()->dSigHatDR(fscale) / born ); double rscaleFactor = projectionDipole()->realEmissionME()->renormalizationScaleFactor(); double runAlpha = SM().alphaS(rscaleFactor * (sqr(projectionDipole()->lastPt()) + sqr(theScreeningScale))); if ( projectionDipole()->verbose() ) generator()->log() << "real emission alpha_s = " << projectionDipole()->realEmissionME()->lastXComb().lastAlphaS() << " pt running alpha_s = " << runAlpha << " from pt/GeV = " << (projectionDipole()->lastPt()/GeV) << "\n" << flush; ratio *= runAlpha / projectionDipole()->realEmissionME()->lastXComb().lastAlphaS(); if ( projectionDipole()->verbose() ) generator()->log() << "'" << name() << "' done evaluating\n"; return ratio; } int PowhegSplittingKernel::nDim() const { return projectionDipole()->lastHeadXComb().pExtractor()-> nDims(projectionDipole()->lastHeadXComb().partonBins()).first + projectionDipole()->lastHeadXComb().pExtractor()-> nDims(projectionDipole()->lastHeadXComb().partonBins()).second + projectionDipole()->underlyingBornME()->nDim() + projectionDipole()->nDimRadiation(); } const vector<double>& PowhegSplittingKernel::parameterPoint() { assert(!presampling()); theLastParameterPoint.resize(nDim()); copy(projectionDipole()->lastHeadXComb().lastRandomNumbers().begin(), projectionDipole()->lastHeadXComb().lastRandomNumbers().begin() + theBornRandom.second, theLastParameterPoint.begin()); copy(projectionDipole()->lastHeadXComb().lastRandomNumbers().begin() + theRadiationRandom.first, projectionDipole()->lastHeadXComb().lastRandomNumbers().end(), theLastParameterPoint.begin() + theBornRandom.second); theLastParameterPoint[evolutionVariable()] = 1.; return theLastParameterPoint; } int PowhegSplittingKernel::evolutionVariable() const { return theBornRandom.second + projectionDipole()->invertedTildeKinematics()->evolutionVariable(); } const vector<bool>& PowhegSplittingKernel::sampleFlags() { if ( !theFlags.empty() ) return theFlags; theFlags.resize(nDim(),false); for ( int k = theBornRandom.second; k < theBornRandom.second + projectionDipole()->nDimRadiation(); ++k ) theFlags[k] = true; return theFlags; } const pair<vector<double>,vector<double> >& PowhegSplittingKernel::support() { if ( !theSupport.first.empty() ) return theSupport; vector<double> l(nDim(),0.0); vector<double> u(nDim(),1.0); theSupport.first = l; theSupport.second = u; return theSupport; } void PowhegSplittingKernel::startPresampling() { thePresampling = true; theXCombBackup = lastHeadXCombPtr(); lastXCombPtr()->head(thePresamplingXCombs[theXCombBackup]); ME2byDipoles::setXComb(lastXCombPtr()); projectionDipole()->setXComb(lastXCombPtr()); thePresamplingXCombs[theXCombBackup]->prepare(theXCombBackup->lastParticles()); } void PowhegSplittingKernel::stopPresampling() { thePresampling = false; lastXCombPtr()->head(theXCombBackup); projectionDipole()->setXComb(lastXCombPtr()); ME2byDipoles::setXComb(lastXCombPtr()); theGenerator->setDiscardNext(); } double PowhegSplittingKernel::evaluate(const vector<double>& p) { try { if ( projectionDipole()->verbose() ) generator()->log() << "'" << name() << "' preparing\n"; if ( presampling() ) { if ( projectionDipole()->verbose() ) generator()->log() << "presampling\n"; int bdim = thePresamplingXCombs[theXCombBackup]->nDim(); thePresamplingPoint.resize(bdim); copy(p.begin(),p.begin()+theBornRandom.second, thePresamplingPoint.begin()); copy(p.begin()+theBornRandom.second+projectionDipole()->nDimRadiation(),p.end(), thePresamplingPoint.begin()+theBornRandom.second); if ( thePresamplingXCombs[theXCombBackup]-> dSigDR(make_pair(0.0,0.0), bdim, &thePresamplingPoint[0]) == ZERO ) { if ( projectionDipole()->verbose() ) generator()->log() << "Born outside phase space\n"; return 0.0; } } const double * rad = &p[theBornRandom.second]; tStdDependentXCombPtr depXComb = dynamic_ptr_cast<tStdDependentXCombPtr>(lastXCombPtr()); assert(depXComb); depXComb->setProcess(); if ( !projectionDipole()->generateKinematics(rad) ) { return 0.0; } depXComb->remakeIncoming(); depXComb->setIncomingPartons(); return evaluate(); } catch (...) { if ( presampling() ) stopPresampling(); throw; } } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void PowhegSplittingKernel::persistentOutput(PersistentOStream & os) const { os << theBornScreening << thePresamplingPoints << theMaxTry << ounit(theScreeningScale,GeV) << theBornRandom << theRadiationRandom << theLastParameterPoint << thePresamplingPoint << thePresampling; } void PowhegSplittingKernel::persistentInput(PersistentIStream & is, int) { is >> theBornScreening >> thePresamplingPoints >> theMaxTry >> iunit(theScreeningScale,GeV) >> theBornRandom >> theRadiationRandom >> theLastParameterPoint >> thePresamplingPoint >> thePresampling; } void PowhegSplittingKernel::Init() { static ClassDocumentation<PowhegSplittingKernel> documentation ("PowhegSplittingKernel"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<PowhegSplittingKernel,ME2byDipoles> describeHerwigPowhegSplittingKernel("Herwig::PowhegSplittingKernel", "HwMatchbox.so"); �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/MatchboxFactory.cc���������������������������������������0000644�0001750�0001750�00000060376�11756364747�024742� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxFactory.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxFactory class. // #include "MatchboxFactory.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Command.h" #include "ThePEG/Utilities/StringUtils.h" #include "ThePEG/Repository/Repository.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" using namespace Herwig; using std::ostream_iterator; MatchboxFactory::MatchboxFactory() : SubProcessHandler(), theNLight(0), theOrderInAlphaS(0), theOrderInAlphaEW(0), theBornContributions(true), theVirtualContributions(true), theRealContributions(true), theSubProcessGroups(false), theFactorizationScaleFactor(1.0), theRenormalizationScaleFactor(1.0), theFixedCouplings(false), theVetoScales(false), theVerbose(false), theSubtractionData("") {} MatchboxFactory::~MatchboxFactory() {} IBPtr MatchboxFactory::clone() const { return new_ptr(*this); } IBPtr MatchboxFactory::fullclone() const { return new_ptr(*this); } void MatchboxFactory::prepareME(Ptr<MatchboxMEBase>::ptr me) const { Ptr<MatchboxAmplitude>::ptr amp = dynamic_ptr_cast<Ptr<MatchboxAmplitude>::ptr>((*me).amplitude()); me->matchboxAmplitude(amp); if ( diagramGenerator() && !me->diagramGenerator() ) me->diagramGenerator(diagramGenerator()); if ( me->nLight() == 0 ) me->nLight(nLight()); if ( phasespace() && !me->phasespace() ) me->phasespace(phasespace()); if ( scaleChoice() && !me->scaleChoice() ) me->scaleChoice(scaleChoice()); if ( me->factorizationScaleFactor() == 1.0 ) me->factorizationScaleFactor(factorizationScaleFactor()); if ( me->renormalizationScaleFactor() == 1.0 ) me->renormalizationScaleFactor(renormalizationScaleFactor()); if ( fixedCouplings() ) me->setFixedCouplings(); if ( cache() && !me->cache() ) me->cache(cache()); if ( verbose() ) me->setVerbose(); } struct ProjectQN { inline pair<int,pair<int,int> > operator()(PDPtr p) const { return pair<int,pair<int,int> >((*p).iSpin(),pair<int,int>((*p).iCharge(),(*p).iColour())); } }; string pid(const vector<pair<int,pair<int,int> > >& key) { ostringstream res; for ( vector<pair<int,pair<int,int> > >::const_iterator k = key.begin(); k != key.end(); ++k ) res << k->first << k->second.first << k->second.second; return res.str(); } vector<Ptr<MatchboxMEBase>::ptr> MatchboxFactory:: makeMEs(const vector<string>& proc, unsigned int orderas) const { typedef vector<pair<int,pair<int,int> > > QNKey; map<Ptr<MatchboxAmplitude>::ptr,map<QNKey,vector<PDVector> > > ampProcs; set<PDVector> processes = makeSubProcesses(proc); for ( vector<Ptr<MatchboxAmplitude>::ptr>::const_iterator amp = amplitudes().begin(); amp != amplitudes().end(); ++amp ) { (**amp).orderInGs(orderas); (**amp).orderInGem(orderInAlphaEW()); if ( (**amp).orderInGs() != orderas || (**amp).orderInGem() != orderInAlphaEW() ) continue; for ( set<PDVector>::const_iterator p = processes.begin(); p != processes.end(); ++p ) { if ( !(**amp).canHandle(*p) ) continue; QNKey key; transform(p->begin(),p->end(),back_inserter(key),ProjectQN()); ampProcs[*amp][key].push_back(*p); } } vector<Ptr<MatchboxMEBase>::ptr> res; for ( map<Ptr<MatchboxAmplitude>::ptr,map<QNKey,vector<PDVector> > >::const_iterator ap = ampProcs.begin(); ap != ampProcs.end(); ++ap ) { for ( map<QNKey,vector<PDVector> >::const_iterator m = ap->second.begin(); m != ap->second.end(); ++m ) { Ptr<MatchboxMEBase>::ptr me = ap->first->makeME(m->second); me->subProcesses() = m->second; me->amplitude(ap->first); string pname = "ME" + ap->first->name() + pid(m->first); if ( ! (generator()->preinitRegister(me,pname) ) ) throw InitException() << "Matrix element " << pname << " already existing."; res.push_back(me); } } return res; } void MatchboxFactory::setup() { if ( !amplitudes().empty() ) { if ( particleGroups().find("j") == particleGroups().end() ) throw InitException() << "Could not find a jet particle group named 'j'"; // rebind the particle data objects for ( map<string,PDVector>::iterator g = particleGroups().begin(); g != particleGroups().end(); ++g ) for ( PDVector::iterator p = g->second.begin(); p != g->second.end(); ++p ) { #ifndef NDEBUG long checkid = (**p).id(); #endif *p = getParticleData((**p).id()); assert((**p).id() == checkid); } nLight(particleGroups()["j"].size()); vector<Ptr<MatchboxMEBase>::ptr> ames = makeMEs(process,orderInAlphaS()); copy(ames.begin(),ames.end(),back_inserter(bornMEs())); if ( realContributions() ) { vector<string> rproc = process; rproc.push_back("j"); ames = makeMEs(rproc,orderInAlphaS()+1); copy(ames.begin(),ames.end(),back_inserter(realEmissionMEs())); } } // check if we have virtual contributions bool haveVirtuals = true; // check DR conventions of virtual contributions bool virtualsAreDR = false; bool virtualsAreCDR = false; // check finite term conventions of virtual contributions bool virtualsAreCS = false; bool virtualsAreStandard = false; // check and prepare the Born and virtual matrix elements for ( vector<Ptr<MatchboxMEBase>::ptr>::iterator born = bornMEs().begin(); born != bornMEs().end(); ++born ) { prepareME(*born); haveVirtuals &= (**born).haveOneLoop(); if ( (**born).haveOneLoop() ) { virtualsAreDR |= (**born).isDR(); virtualsAreCDR |= !(**born).isDR(); virtualsAreCS |= (**born).isCS(); virtualsAreStandard |= !(**born).isCS(); } } // check the additional insertion operators if ( !virtuals().empty() ) haveVirtuals = true; for ( vector<Ptr<MatchboxInsertionOperator>::ptr>::const_iterator virt = virtuals().begin(); virt != virtuals().end(); ++virt ) { virtualsAreDR |= (**virt).isDR(); virtualsAreCDR |= !(**virt).isDR(); virtualsAreCS |= (**virt).isCS(); virtualsAreStandard |= !(**virt).isCS(); } // check for consistent conventions on virtuals, if we are to include them if ( virtualContributions() ) { if ( virtualsAreDR && virtualsAreCDR ) { throw InitException() << "Virtual corrections use inconsistent regularization schemes.\n"; } if ( virtualsAreCS && virtualsAreStandard ) { throw InitException() << "Virtual corrections use inconsistent conventions on finite terms.\n"; } if ( !haveVirtuals ) { throw InitException() << "Could not find amplitudes for all virtual contributions needed.\n"; } } // prepare dipole insertion operators if ( virtualContributions() ) { for ( vector<Ptr<MatchboxInsertionOperator>::ptr>::const_iterator virt = DipoleRepository::insertionOperators().begin(); virt != DipoleRepository::insertionOperators().end(); ++virt ) { if ( virtualsAreDR ) (**virt).useDR(); else (**virt).useCDR(); if ( virtualsAreCS ) (**virt).useCS(); else (**virt).useNonCS(); } } // prepare the real emission matrix elements if ( realContributions() ) { for ( vector<Ptr<MatchboxMEBase>::ptr>::iterator real = realEmissionMEs().begin(); real != realEmissionMEs().end(); ++real ) { prepareME(*real); } } // start creating matrix elements MEs().clear(); // setup born and virtual contributions if ( !bornContributions() && virtualContributions() ) { throw InitException() << "Virtual corrections without Born contributions not yet supported.\n"; } if ( bornContributions() && !virtualContributions() ) { for ( vector<Ptr<MatchboxMEBase>::ptr>::iterator born = bornMEs().begin(); born != bornMEs().end(); ++born ) { if ( (**born).onlyOneLoop() ) continue; Ptr<MatchboxMEBase>::ptr bornme = (**born).cloneMe(); string pname = fullName() + "/" + (**born).name(); if ( ! (generator()->preinitRegister(bornme,pname) ) ) throw InitException() << "Matrix element " << pname << " already existing."; bornme->cloneDependencies(); MEs().push_back(bornme); } } if ( bornContributions() && virtualContributions() ) { bornVirtualMEs().clear(); for ( vector<Ptr<MatchboxMEBase>::ptr>::iterator born = bornMEs().begin(); born != bornMEs().end(); ++born ) { Ptr<MatchboxNLOME>::ptr nlo = new_ptr(MatchboxNLOME()); string pname = fullName() + "/" + (**born).name(); if ( ! (generator()->preinitRegister(nlo,pname) ) ) throw InitException() << "NLO ME " << pname << " already existing."; nlo->matrixElement(*born); nlo->virtuals().clear(); if ( !nlo->matrixElement()->onlyOneLoop() ) { for ( vector<Ptr<MatchboxInsertionOperator>::ptr>::const_iterator virt = virtuals().begin(); virt != virtuals().end(); ++virt ) { if ( (**virt).apply((**born).diagrams().front()->partons()) ) nlo->virtuals().push_back(*virt); } for ( vector<Ptr<MatchboxInsertionOperator>::ptr>::const_iterator virt = DipoleRepository::insertionOperators().begin(); virt != DipoleRepository::insertionOperators().end(); ++virt ) { if ( (**virt).apply((**born).diagrams().front()->partons()) ) nlo->virtuals().push_back(*virt); } if ( nlo->virtuals().empty() ) throw InitException() << "No insertion operators have been found for " << (**born).name() << "\n"; } nlo->cloneDependencies(); bornVirtualMEs().push_back(nlo); MEs().push_back(nlo); } } if ( realContributions() ) { if ( theSubtractionData != "" ) if ( theSubtractionData[theSubtractionData.size()-1] != '/' ) theSubtractionData += "/"; subtractedMEs().clear(); for ( vector<Ptr<MatchboxMEBase>::ptr>::iterator real = realEmissionMEs().begin(); real != realEmissionMEs().end(); ++real ) { Ptr<SubtractedME>::ptr sub = new_ptr(SubtractedME()); string pname = fullName() + "/" + (**real).name(); if ( ! (generator()->preinitRegister(sub,pname) ) ) throw InitException() << "Subtracted ME " << pname << " already existing."; sub->borns() = bornMEs(); sub->head(*real); sub->allDipoles().clear(); sub->dependent().clear(); sub->getDipoles(); if ( verbose() ) sub->setVerbose(); if ( subProcessGroups() ) sub->setSubProcessGroups(); if ( vetoScales() ) sub->doVetoScales(); if ( subtractionData() != "" ) sub->subtractionData(subtractionData()); subtractedMEs().push_back(sub); MEs().push_back(sub); } } } void MatchboxFactory::print(ostream& os) const { os << "--- MatchboxFactory setup -----------------------------------------------------------\n"; if ( !amplitudes().empty() ) { os << " generated Born matrix elements:\n"; for ( vector<Ptr<MatchboxMEBase>::ptr>::const_iterator m = bornMEs().begin(); m != bornMEs().end(); ++m ) { os << " '" << (**m).name() << "' for subprocesses:\n"; for ( vector<PDVector>::const_iterator p = (**m).subProcesses().begin(); p != (**m).subProcesses().end(); ++p ) { os << " "; for ( PDVector::const_iterator pp = p->begin(); pp != p->end(); ++pp ) { os << (**pp).PDGName() << " "; if ( pp == p->begin() + 1 ) os << "-> "; } os << "\n"; } } os << flush; os << " generated real emission matrix elements:\n"; for ( vector<Ptr<MatchboxMEBase>::ptr>::const_iterator m = realEmissionMEs().begin(); m != realEmissionMEs().end(); ++m ) { os << " '" << (**m).name() << "' for subprocesses:\n"; for ( vector<PDVector>::const_iterator p = (**m).subProcesses().begin(); p != (**m).subProcesses().end(); ++p ) { os << " "; for ( PDVector::const_iterator pp = p->begin(); pp != p->end(); ++pp ) { os << (**pp).PDGName() << " "; if ( pp == p->begin() + 1 ) os << "-> "; } os << "\n"; } } os << flush; } os << " generated Born+virtual matrix elements:\n"; for ( vector<Ptr<MatchboxNLOME>::ptr>::const_iterator bv = bornVirtualMEs().begin(); bv != bornVirtualMEs().end(); ++bv ) { (**bv).print(os); } os << " generated subtracted matrix elements:\n"; for ( vector<Ptr<SubtractedME>::ptr>::const_iterator sub = subtractedMEs().begin(); sub != subtractedMEs().end(); ++sub ) { os << " '" << (**sub).name() << "'\n"; } os << "--------------------------------------------------------------------------------\n"; os << flush; } void MatchboxFactory::doinit() { setup(); if ( theVerbose ) print(Repository::clog()); SubProcessHandler::doinit(); } void MatchboxFactory::persistentOutput(PersistentOStream & os) const { os << theDiagramGenerator << theNLight << theOrderInAlphaS << theOrderInAlphaEW << theBornContributions << theVirtualContributions << theRealContributions << theSubProcessGroups << thePhasespace << theScaleChoice << theFactorizationScaleFactor << theRenormalizationScaleFactor << theFixedCouplings << theVetoScales << theAmplitudes << theCache << theBornMEs << theVirtuals << theRealEmissionMEs << theBornVirtualMEs << theSubtractedMEs << theVerbose << theSubtractionData << theParticleGroups << process; } void MatchboxFactory::persistentInput(PersistentIStream & is, int) { is >> theDiagramGenerator >> theNLight >> theOrderInAlphaS >> theOrderInAlphaEW >> theBornContributions >> theVirtualContributions >> theRealContributions >> theSubProcessGroups >> thePhasespace >> theScaleChoice >> theFactorizationScaleFactor >> theRenormalizationScaleFactor >> theFixedCouplings >> theVetoScales >> theAmplitudes >> theCache >> theBornMEs >> theVirtuals >> theRealEmissionMEs >> theBornVirtualMEs >> theSubtractedMEs >> theVerbose >> theSubtractionData >> theParticleGroups >> process; } string MatchboxFactory::startParticleGroup(string name) { particleGroupName = StringUtils::stripws(name); particleGroup.clear(); return ""; } string MatchboxFactory::endParticleGroup(string) { if ( particleGroup.empty() ) throw InitException() << "Empty particle group."; particleGroups()[particleGroupName] = particleGroup; particleGroup.clear(); return ""; } string MatchboxFactory::doProcess(string in) { process = StringUtils::split(in); if ( process.size() < 3 ) throw InitException() << "Invalid process."; for ( vector<string>::iterator p = process.begin(); p != process.end(); ++p ) { *p = StringUtils::stripws(*p); } return ""; } struct SortPID { inline bool operator()(PDPtr a, PDPtr b) const { return a->id() < b->id(); } }; set<PDVector> MatchboxFactory:: makeSubProcesses(const vector<string>& proc) const { if ( proc.empty() ) throw InitException() << "No process specified."; vector<PDVector> allProcs(1); size_t pos = 0; typedef map<string,PDVector>::const_iterator GroupIterator; while ( pos < proc.size() ) { GroupIterator git = particleGroups().find(proc[pos]); if ( git == particleGroups().end() ) { throw InitException() << "particle group '" << proc[pos] << "' not defined."; } vector<PDVector> mine; for ( vector<PDVector>::const_iterator i = allProcs.begin(); i != allProcs.end(); ++i ) { for ( PDVector::const_iterator p = git->second.begin(); p != git->second.end(); ++p ) { PDVector v = *i; v.push_back(*p); mine.push_back(v); } } allProcs = mine; ++pos; } set<PDVector> allCheckedProcs; for ( vector<PDVector>::const_iterator p = allProcs.begin(); p != allProcs.end(); ++p ) { int charge = -(*p)[0]->iCharge() -(*p)[1]->iCharge(); for ( size_t k = 2; k < (*p).size(); ++k ) charge += (*p)[k]->iCharge(); if ( charge != 0 ) continue; PDVector pr = *p; sort(pr.begin()+2,pr.end(),SortPID()); allCheckedProcs.insert(pr); } return allCheckedProcs; } void MatchboxFactory::Init() { static ClassDocumentation<MatchboxFactory> documentation ("MatchboxFactory", "NLO QCD corrections have been calculated " "using Matchbox \\cite{Platzer:2011bc}", "%\\cite{Platzer:2011bc}\n" "\\bibitem{Platzer:2011bc}\n" "S.~Platzer and S.~Gieseke,\n" "``Dipole Showers and Automated NLO Matching in Herwig++,''\n" "arXiv:1109.6256 [hep-ph].\n" "%%CITATION = ARXIV:1109.6256;%%"); static Reference<MatchboxFactory,Tree2toNGenerator> interfaceDiagramGenerator ("DiagramGenerator", "Set the diagram generator.", &MatchboxFactory::theDiagramGenerator, false, false, true, true, false); static Parameter<MatchboxFactory,unsigned int> interfaceOrderInAlphaS ("OrderInAlphaS", "The order in alpha_s to consider.", &MatchboxFactory::theOrderInAlphaS, 0, 0, 0, false, false, Interface::lowerlim); static Parameter<MatchboxFactory,unsigned int> interfaceOrderInAlphaEW ("OrderInAlphaEW", "The order in alpha_EW", &MatchboxFactory::theOrderInAlphaEW, 2, 0, 0, false, false, Interface::lowerlim); static Switch<MatchboxFactory,bool> interfaceBornContributions ("BornContributions", "Switch on or off the Born contributions.", &MatchboxFactory::theBornContributions, true, false, false); static SwitchOption interfaceBornContributionsOn (interfaceBornContributions, "On", "Switch on Born contributions.", true); static SwitchOption interfaceBornContributionsOff (interfaceBornContributions, "Off", "Switch off Born contributions.", false); static Switch<MatchboxFactory,bool> interfaceVirtualContributions ("VirtualContributions", "Switch on or off the virtual contributions.", &MatchboxFactory::theVirtualContributions, true, false, false); static SwitchOption interfaceVirtualContributionsOn (interfaceVirtualContributions, "On", "Switch on virtual contributions.", true); static SwitchOption interfaceVirtualContributionsOff (interfaceVirtualContributions, "Off", "Switch off virtual contributions.", false); static Switch<MatchboxFactory,bool> interfaceRealContributions ("RealContributions", "Switch on or off the real contributions.", &MatchboxFactory::theRealContributions, true, false, false); static SwitchOption interfaceRealContributionsOn (interfaceRealContributions, "On", "Switch on real contributions.", true); static SwitchOption interfaceRealContributionsOff (interfaceRealContributions, "Off", "Switch off real contributions.", false); static Switch<MatchboxFactory,bool> interfaceSubProcessGroups ("SubProcessGroups", "Switch on or off production of sub-process groups.", &MatchboxFactory::theSubProcessGroups, false, false, false); static SwitchOption interfaceSubProcessGroupsOn (interfaceSubProcessGroups, "On", "On", true); static SwitchOption interfaceSubProcessGroupsOff (interfaceSubProcessGroups, "Off", "Off", false); static Reference<MatchboxFactory,MatchboxPhasespace> interfacePhasespace ("Phasespace", "Set the phasespace generator.", &MatchboxFactory::thePhasespace, false, false, true, true, false); static Reference<MatchboxFactory,MatchboxScaleChoice> interfaceScaleChoice ("ScaleChoice", "Set the scale choice object.", &MatchboxFactory::theScaleChoice, false, false, true, true, false); static Parameter<MatchboxFactory,double> interfaceFactorizationScaleFactor ("FactorizationScaleFactor", "The factorization scale factor.", &MatchboxFactory::theFactorizationScaleFactor, 1.0, 0.0, 0, false, false, Interface::lowerlim); static Parameter<MatchboxFactory,double> interfaceRenormalizationScaleFactor ("RenormalizationScaleFactor", "The renormalization scale factor.", &MatchboxFactory::theRenormalizationScaleFactor, 1.0, 0.0, 0, false, false, Interface::lowerlim); static Switch<MatchboxFactory,bool> interfaceFixedCouplings ("FixedCouplings", "Switch on or off fixed couplings.", &MatchboxFactory::theFixedCouplings, true, false, false); static SwitchOption interfaceFixedCouplingsOn (interfaceFixedCouplings, "On", "On", true); static SwitchOption interfaceFixedCouplingsOff (interfaceFixedCouplings, "Off", "Off", false); static Switch<MatchboxFactory,bool> interfaceVetoScales ("VetoScales", "Switch on or setting veto scales.", &MatchboxFactory::theVetoScales, true, false, false); static SwitchOption interfaceVetoScalesOn (interfaceVetoScales, "On", "On", true); static SwitchOption interfaceVetoScalesOff (interfaceVetoScales, "Off", "Off", false); static RefVector<MatchboxFactory,MatchboxAmplitude> interfaceAmplitudes ("Amplitudes", "The amplitude objects.", &MatchboxFactory::theAmplitudes, -1, false, false, true, true, false); static Reference<MatchboxFactory,MatchboxMECache> interfaceCache ("Cache", "Set the matrix element cache object.", &MatchboxFactory::theCache, false, false, true, true, false); static RefVector<MatchboxFactory,MatchboxMEBase> interfaceBornMEs ("BornMEs", "The Born matrix elements to be used", &MatchboxFactory::theBornMEs, -1, false, false, true, true, false); static RefVector<MatchboxFactory,MatchboxInsertionOperator> interfaceVirtuals ("Virtuals", "The virtual corrections to include", &MatchboxFactory::theVirtuals, -1, false, false, true, true, false); static RefVector<MatchboxFactory,MatchboxMEBase> interfaceRealEmissionMEs ("RealEmissionMEs", "The RealEmission matrix elements to be used", &MatchboxFactory::theRealEmissionMEs, -1, false, false, true, true, false); static RefVector<MatchboxFactory,MatchboxNLOME> interfaceBornVirtuals ("BornVirtualMEs", "The generated Born/virtual contributions", &MatchboxFactory::theBornVirtualMEs, -1, false, true, true, true, false); static RefVector<MatchboxFactory,SubtractedME> interfaceSubtractedMEs ("SubtractedMEs", "The generated Born/virtual contributions", &MatchboxFactory::theSubtractedMEs, -1, false, true, true, true, false); static Switch<MatchboxFactory,bool> interfaceVerbose ("Verbose", "Print full infomation on each evaluated phase space point.", &MatchboxFactory::theVerbose, false, false, false); static SwitchOption interfaceVerboseOn (interfaceVerbose, "On", "On", true); static SwitchOption interfaceVerboseOff (interfaceVerbose, "Off", "Off", false); static Parameter<MatchboxFactory,string> interfaceSubtractionData ("SubtractionData", "Prefix for subtraction check data.", &MatchboxFactory::theSubtractionData, "", false, false); static RefVector<MatchboxFactory,ParticleData> interfaceParticleGroup ("ParticleGroup", "The particle group just started.", &MatchboxFactory::particleGroup, -1, false, false, true, false, false); static Command<MatchboxFactory> interfaceStartParticleGroup ("StartParticleGroup", "Start a particle group.", &MatchboxFactory::startParticleGroup, false); static Command<MatchboxFactory> interfaceEndParticleGroup ("EndParticleGroup", "End a particle group.", &MatchboxFactory::endParticleGroup, false); static Command<MatchboxFactory> interfaceProcess ("Process", "Set the process to consider.", &MatchboxFactory::doProcess, false); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<MatchboxFactory,SubProcessHandler> describeHerwigMatchboxFactory("Herwig::MatchboxFactory", "HwMatchbox.so"); ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/InsertionOperators/��������������������������������������0000755�0001750�0001750�00000000000�11756464210�025155� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/InsertionOperators/MatchboxInsertionOperator.h�����������0000644�0001750�0001750�00000014512�11754474775�032524� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxInsertionOperator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MatchboxInsertionOperator_H #define HERWIG_MatchboxInsertionOperator_H // // This is the declaration of the MatchboxInsertionOperator class. // #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Handlers/LastXCombInfo.h" #include "Herwig++/MatrixElement/Matchbox/Base/MatchboxMEBase.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief MatchboxInsertionOperator is the base class for insertion operators. * * @see \ref MatchboxInsertionOperatorInterfaces "The interfaces" * defined for MatchboxInsertionOperator. */ class MatchboxInsertionOperator: public HandlerBase, public LastXCombInfo<StandardXComb> { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MatchboxInsertionOperator(); /** * The destructor. */ virtual ~MatchboxInsertionOperator(); //@} public: /** @name Process and phasespace information */ //@{ /** * Return true, if this virtual correction * applies to the given process. */ virtual bool apply(const cPDVector&) const = 0; /** * Set the Born matrix element this class represents * virtual corrections to. */ virtual void setBorn(Ptr<MatchboxMEBase>::tptr me) { theLastBorn = me; } /** * Return the Born matrix element this class represents * virtual corrections to. */ Ptr<MatchboxMEBase>::tptr lastBorn() { return theLastBorn; } /** * Return the Born matrix element this class represents * virtual corrections to. */ Ptr<MatchboxMEBase>::tcptr lastBorn() const { return theLastBorn; } /** * Set the XComb object steering the Born matrix * element this class represents virtual corrections to. */ virtual void setXComb(tStdXCombPtr xc) { theLastXComb = xc; } /** * Provide the additional random numbers */ void additionalKinematics(const double *); /** * Return the number of additional random variables * needed to calculate this virtual correction. */ virtual int nDimAdditional() const { return 0; } //@} /** @name Conventions */ //@{ /** * Change from CDR to DR */ virtual void useDR() { } /** * Change from DR to CDR */ virtual void useCDR() { } /** * Change to the simple convention */ virtual void useCS() { } /** * Change to the standard convention */ virtual void useNonCS() { } /** * Return true, if this virtual correction * has been calculated using dimensional reduction. * CDR is assumed otherwise. */ virtual bool isDR() const { return false; } /** * Return true, if the virtual correction has been calculated in the * dipole convention. */ virtual bool isCS() const { return false; } //@} /** @name Evaluate the insertion operator */ //@{ /** * Evaluate the finite virtual correction for the * variables supplied through the Born XComb object * and possible additional random numbers. */ virtual double me2() const = 0; /** * Evaluate the finite virtual correction for the * variables supplied through the Born XComb object * and possible additional random numbers. */ virtual CrossSection dSigHatDR() const { return sqr(hbarc) * me2() * lastBorn()->lastXComb().jacobian() * lastMEPDFWeight() / (2.*lastSHat()); } //@} /** @name Caching and helpers to setup insertion operator objects. */ //@{ /** * Inform this matrix element that a new phase space * point is about to be generated, so all caches should * be flushed. */ virtual void flushCaches() {} /** * Clone this matrix element. */ Ptr<MatchboxInsertionOperator>::ptr cloneMe() const { return dynamic_ptr_cast<Ptr<MatchboxInsertionOperator>::ptr>(clone()); } /** * Dump xcomb hierarchies. */ virtual void dumpInfo(const string& prefix = "") const = 0; //@} 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). protected: /** @name Standard Interfaced functions. */ //@{ /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans); /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} protected: /** * The additional random numbers requested by * this virtual correction. */ vector<double> additionalRandomNumbers; private: /** * The Born matrix element this class represents * virtual corrections to. */ Ptr<MatchboxMEBase>::tptr theLastBorn; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MatchboxInsertionOperator & operator=(const MatchboxInsertionOperator &); }; } #endif /* HERWIG_MatchboxInsertionOperator_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/InsertionOperators/DipolePKOperator.cc�������������������0000644�0001750�0001750�00000031314�11754474775�030670� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipolePKOperator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipolePKOperator class. // #include "DipolePKOperator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/Rebinder.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include "Herwig++/MatrixElement/Matchbox/Phasespace/RandomHelpers.h" using namespace Herwig; using Constants::pi; DipolePKOperator::DipolePKOperator() : MatchboxInsertionOperator(), CA(-1.0), CF(-1.0), gammaQuark(-1.0), gammaGluon(-1.0), KQuark(-1.0), KGluon(-1.0), theUseDR(false), theUseCS(false) {} DipolePKOperator::~DipolePKOperator() {} IBPtr DipolePKOperator::clone() const { return new_ptr(*this); } IBPtr DipolePKOperator::fullclone() const { return new_ptr(*this); } void DipolePKOperator::dumpInfo(const string& prefix) const { generator()->log() << prefix << fullName() << " [" << this << "]\n"; generator()->log() << prefix << " | XComb " << lastXCombPtr() << " for "; if ( lastXCombPtr() ) { for ( cPDVector::const_iterator p = lastXComb().mePartonData().begin(); p != lastXComb().mePartonData().end(); ++p ) { generator()->log() << (**p).PDGName() << " "; } } generator()->log() << " | Born ME\n"; lastBorn()->dumpInfo(prefix+" | "); } void DipolePKOperator::setBorn(Ptr<MatchboxMEBase>::tptr me) { MatchboxInsertionOperator::setBorn(me); if ( CA < 0. ) { CA = SM().Nc(); CF = (SM().Nc()*SM().Nc()-1.0)/(2.*SM().Nc()); gammaQuark = (3./2.)*CF; gammaGluon = (11./6.)*CA - (1./3.)*lastBorn()->nLight(); KQuark = (7./2.-sqr(pi)/6.)*CF; KGluon = (67./18.-sqr(pi)/6.)*CA-(5./9.)*lastBorn()->nLight(); } } double DipolePKOperator::gammaSoft() const { double res = (1.+log(1.-x))*PDFx(parton); if ( z > x ) res += (PDFxByz(parton) - z*PDFx(parton)) / (z*(1.-z)); return res; } double DipolePKOperator::softLogByz(tcPDPtr p) const { double res = ( sqr(log(1.-x))/2. - sqr(pi)/6. ) * PDFx(p); if ( z > x ) { res += (PDFxByz(p) - z*PDFx(p))*log(1.-z)/(z*(1.-z)); res -= PDFxByz(p)*log(z)/(z*(1.-z)); } return res; } double DipolePKOperator::softLog(tcPDPtr p) const { double res = sqr(log(1.-x)) * PDFx(p) / 2.; if ( z > x ) { res += (PDFxByz(p) - z*PDFx(p))*log(1.-z)/(z*(1.-z)); } return res; } double DipolePKOperator::KBarqq() const { assert(abs(parton->id()) < 6); double res = 2.*softLogByz(parton) + (sqr(pi) - 5.)*PDFx(parton); if ( z > x ) { res += PDFxByz(parton)*( (1.-z) - (1.+z)*log((1.-z)/z) ) / z; } return (res * CF); } double DipolePKOperator::KTildeqq() const { assert(abs(parton->id()) < 6); double res = 2.*CF*softLog(parton) - CF*(sqr(pi)/3.)*PDFx(parton); if ( z > x ) { res -= ( CF * (1.+z) * log(1.-z) ) * PDFxByz(parton) / z; } return res; } double DipolePKOperator::Pqq() const { assert(abs(parton->id()) < 6); double res = (3./2.+2.*log(1.-x)) * PDFx(parton); if ( z > x ) { res += 2.*(PDFxByz(parton) - z*PDFx(parton))/(z*(1.-z)); res -= PDFxByz(parton) * (1.+z)/z; } return (CF*res); } double DipolePKOperator::KBarqg() const { assert(parton->id() == ParticleID::g); if ( z < x ) return 0.0; double res = 0.0; double factor = CF * ( ( (1.+sqr(1.-z)) / z ) * log((1.-z)/z) + z ) / z; int nl= lastBorn()->nLight(); for ( int f = -lastBorn()->nLight(); f < nl; ++f ) { if ( f == 0 ) continue; res += PDFxByz(getParticleData(f))*factor; } return res; } double DipolePKOperator::KTildeqg() const { if ( z < x ) return 0.0; return Pqg() * log(1.-z); } double DipolePKOperator::Pqg() const { assert(parton->id() == ParticleID::g); if ( z < x ) return 0.0; double res = 0.0; double factor = CF * ( 1. + sqr(1.-z) ) / sqr(z); int nl = lastBorn()->nLight(); for ( int f = -lastBorn()->nLight(); f < nl; ++f ) { if ( f == 0 ) continue; res += PDFxByz(getParticleData(f))*factor; } return res; } double DipolePKOperator::KBargq() const { assert(abs(parton->id()) < 6); if ( z < x ) return 0.0; return PDFxByz(getParticleData(ParticleID::g)) * ( 0.5*(sqr(z)+sqr(1.-z))*log((1.-z)/z) + z*(1.-z) ) / z; } double DipolePKOperator::KTildegq() const { assert(abs(parton->id()) < 6); if ( z < x ) return 0.0; return Pgq() * log(1.-z); } double DipolePKOperator::Pgq() const { assert(abs(parton->id()) < 6); if ( z < x ) return 0.0; return 0.5 * ( sqr(z) + sqr(1.-z) ) * PDFxByz(getParticleData(ParticleID::g)) / z; } double DipolePKOperator::KBargg() const { assert(parton->id() == ParticleID::g); double res = 2.* CA* softLogByz(parton) + ( CA*( sqr(pi) - 50./9. ) + (8./9.)*lastBorn()->nLight() ) * PDFx(parton); if ( z > x ) { res += 2.*CA*((1.-z)/z-1.+z*(1.-z))*log((1.-z)/z)*PDFxByz(parton)/z; } return res; } double DipolePKOperator::KTildegg() const { assert(parton->id() == ParticleID::g); double res = 2.*CA*softLog(parton) - CA*(sqr(pi)/3.)*PDFx(parton); if ( z > x ) { res += ( 2.*CA * ( (1.-z)/z -1. + z*(1.-z) ) * log(1.-z) ) * PDFxByz(parton) / z; } return res; } double DipolePKOperator::Pgg() const { assert(parton->id() == ParticleID::g); double res = ( (11./6.) * CA - (1./3.) * lastBorn()->nLight() + 2.*CA*log(1.-x) ) * PDFx(parton); if ( z > x ) { res += 2. * CA * ( PDFxByz(parton) - z*PDFx(parton) ) / (z*(1.-z)); res += 2.* CA *( (1.-z)/z - 1. + z*(1.-z) ) * PDFxByz(parton) / z; } return res; } double DipolePKOperator::PDFx(tcPDPtr pd) const { map<pair<tcPDFPtr,tcPDPtr>,pair<double,double> >::iterator cached = pdfCache.find(make_pair(pdf,pd)); if ( cached == pdfCache.end() ) { pdfCache[make_pair(pdf,pd)] = make_pair(0.0,0.0); cached = pdfCache.find(make_pair(pdf,pd)); } if ( cached->second.first == 0.0 ) cached->second.first = pdf->xfx(particle,pd,scale,x)/x; return cached->second.first; } double DipolePKOperator::PDFxByz(tcPDPtr pd) const { map<pair<tcPDFPtr,tcPDPtr>,pair<double,double> >::iterator cached = pdfCache.find(make_pair(pdf,pd)); if ( cached == pdfCache.end() ) { pdfCache[make_pair(pdf,pd)] = make_pair(0.0,0.0); cached = pdfCache.find(make_pair(pdf,pd)); } if ( cached->second.second == 0.0 ) cached->second.second = pdf->xfx(particle,pd,scale,x/z)*z/x; return cached->second.second; } bool DipolePKOperator::apply(tcPDPtr pd) const { return pd->mass() == ZERO && (abs(pd->id()) < 6 || pd->id() == ParticleID::g); } bool DipolePKOperator::apply(const cPDVector& pd) const { if ( !apply(pd[0]) && !apply(pd[1]) ) return false; bool first = false; bool second = false; for ( cPDVector::const_iterator p = pd.begin(); p != pd.end(); ++p ) { if ( !first ) { if ( apply(*p) ) first = true; } else { if ( apply(*p) ) second = true; } } return first && second; } double DipolePKOperator::sumParton(int id) const { pdf = id == 0 ? lastXCombPtr()->partonBins().first->pdf() : lastXCombPtr()->partonBins().second->pdf(); x = id == 0 ? lastXCombPtr()->lastX1() : lastXCombPtr()->lastX2(); parton = id == 0 ? mePartonData()[0] : mePartonData()[1]; particle = id == 0 ? lastParticles().first->dataPtr() : lastParticles().second->dataPtr(); using namespace RandomHelpers; double r = additionalRandomNumbers.front(); double eps = 1e-3; pair<double,double> zw = generate((piecewise(), flat(0.0,x), match(inverse(0.0,x,1.0) + inverse(1.0+eps,x,1.0))),r); z = zw.first; double mapz = zw.second; for ( map<pair<tcPDFPtr,tcPDPtr>,pair<double,double> >::iterator cache = pdfCache.begin(); cache != pdfCache.end(); ++cache ) cache->second = make_pair(0.0,0.0); assert(pdf); double res = 0.; if ( mePartonData()[id]->id() == ParticleID::g ) res += (KBargg() + KBarqg())*lastBorn()->me2(); if ( abs(mePartonData()[id]->id()) < 6 ) res += (KBarqq() + KBargq())*lastBorn()->me2(); double theGammaSoft = 0.0; double thePqq = 0.0; double thePqg = 0.0; double thePgq = 0.0; double thePgg = 0.0; double ifCorrelated = 0.0; int idi = 2; vector<Lorentz5Momentum>::const_iterator Pi = meMomenta().begin() + 2; double disFinite = 0.0; for ( cPDVector::const_iterator i = mePartonData().begin() + 2; i != mePartonData().end(); ++i, ++Pi, ++idi ) { if ( !apply(*i) || lastBorn()->noDipole(idi,id) ) continue; ifCorrelated = lastBorn()->colourCorrelatedME2(make_pair(idi,id)); if ( theGammaSoft == 0.0 ) theGammaSoft = gammaSoft(); if ( mePartonData()[id]->id() == ParticleID::g && thePgg == 0.0 ) { thePqg = Pqg(); thePgg = Pgg(); } if ( abs(mePartonData()[id]->id()) < 6 && thePqq == 0.0 ) { thePgq = Pgq(); thePqq = Pqq(); } double theLog = log(scale/(2.*((*Pi)*meMomenta()[id]))); res += ( (**i).id() == ParticleID::g ? gammaGluon : gammaQuark ) * theGammaSoft * ifCorrelated; if ( mePartonData()[id]->id() == ParticleID::g ) { res += ( thePgg + thePqg ) * theLog * ifCorrelated; } if ( abs(mePartonData()[id]->id()) < 6 ) { res += ( thePqq + thePgq ) * theLog * ifCorrelated; if ( disFinite == 0.0 && z > x ) { disFinite = CF*PDFxByz(parton)*(1.+3.*z/2.)/z; } if ( z > x ) res -= disFinite*ifCorrelated; } if ( abs(mePartonData()[idi]->id()) < 6 ) { if ( disFinite == 0.0 && z > x ) { disFinite = CF*PDFxByz(parton)*(1.+3.*z/2.)/z; } if ( z > x ) res -= disFinite*ifCorrelated; } } if ( mePartonData()[ id == 0 ? 1 : 0 ]->coloured() && !lastBorn()->noDipole(id == 0 ? 0 : 1, id == 0 ? 1 : 0) ) { if ( mePartonData()[id]->id() == ParticleID::g && thePgg == 0.0 ) { thePqg = Pqg(); thePgg = Pgg(); } if ( abs(mePartonData()[id]->id()) < 6 && thePqq == 0.0 ) { thePgq = Pgq(); thePqq = Pqq(); } double theLog = log(scale/(2.*(meMomenta()[0]*meMomenta()[1]))); pair<int,int> corr = id == 0 ? make_pair(0,1) : make_pair(1,0); double iiCorrelated = lastBorn()->colourCorrelatedME2(corr); if ( mePartonData()[id]->id() == ParticleID::g ) { res += ( thePgg + thePqg ) * theLog * iiCorrelated; res -= ( KTildegg() + KTildeqg() ) * iiCorrelated; } if ( abs(mePartonData()[id]->id()) < 6 ) { res += ( thePqq + thePgq ) * theLog * iiCorrelated; res -= ( KTildeqq() + KTildegq() ) * iiCorrelated; } } return res * mapz; } double DipolePKOperator::me2() const { scale = lastBorn()->lastScale(); double res = 0.0; if ( apply(mePartonData()[0]) ) { if ( mePartonData()[0]->coloured() ) { if ( mePartonData()[1]->coloured() ) res += lastBorn()->pdf2()*sumParton(0); else res += sumParton(0); } } if ( apply(mePartonData()[1]) ) { if ( mePartonData()[1]->coloured() ) { if ( mePartonData()[0]->coloured() ) res += lastBorn()->pdf1()*sumParton(1); else res += sumParton(1); } } return (lastBorn()->lastAlphaS()/(2.*pi)) * res; } void DipolePKOperator::persistentOutput(PersistentOStream & os) const { os << CA << CF << gammaQuark << gammaGluon << KQuark << KGluon << theUseDR << theUseCS << ounit(scale,GeV2) << pdf << particle << x << z << pdfCache << parton; } void DipolePKOperator::persistentInput(PersistentIStream & is, int) { is >> CA >> CF >> gammaQuark >> gammaGluon >> KQuark >> KGluon >> theUseDR >> theUseCS >> iunit(scale,GeV2) >> pdf >> particle >> x >> z >> pdfCache >> parton; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<DipolePKOperator,MatchboxInsertionOperator> describeHerwigDipolePKOperator("Herwig::DipolePKOperator", "HwMatchbox.so"); void DipolePKOperator::Init() { static ClassDocumentation<DipolePKOperator> documentation ("DipolePKOperator"); DipoleRepository::registerInsertionOperator<DipolePKOperator>("LightPKOperator"); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/InsertionOperators/DipoleIOperator.h���������������������0000644�0001750�0001750�00000010037�11754474775�030407� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleIOperator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipoleIOperator_H #define HERWIG_DipoleIOperator_H // // This is the declaration of the DipoleIOperator class. // #include "Herwig++/MatrixElement/Matchbox/InsertionOperators/MatchboxInsertionOperator.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief DipoleIOperator implements the I(\epsilon) * insertion operator. * */ class DipoleIOperator: public MatchboxInsertionOperator { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ DipoleIOperator(); /** * The destructor. */ virtual ~DipoleIOperator(); //@} public: /** * Set the Born matrix element this class represents * virtual corrections to. */ virtual void setBorn(Ptr<MatchboxMEBase>::tptr me); /** * Evaluate the finite virtual correction for the * variables supplied through the Born XComb object * and possible additional random numbers. */ virtual double me2() const; /** * Return true, if contributions exist to * the given parton. */ bool apply(tcPDPtr) const; /** * Return true, if this virtual correction * applies to the given process. */ virtual bool apply(const cPDVector&) const; /** * Change from CDR to DR */ virtual void useDR() { theUseDR = true; } /** * Change from DR to CDR */ virtual void useCDR() { theUseDR = false; } /** * Change to the CS convention */ virtual void useCS() { theUseCS = true; } /** * Change to the standard convention */ virtual void useNonCS() { theUseCS = false; } /** * Return true, if dimensional reduction * is used. */ virtual bool isDR() const { return theUseDR; } /** * Return true, if the virtual correction has been calculated in the * dipole convention. */ virtual bool isCS() const { return theUseCS; } /** * Dump xcomb hierarchies. */ void dumpInfo(const string& prefix = "") 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(); 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: /** * C_A */ double CA; /** * C_F */ double CF; /** * \gamma_q */ double gammaQuark; /** * \gamma_g */ double gammaGluon; /** * \beta_0 */ double betaZero; /** * K_q */ double KQuark; /** * K_g */ double KGluon; /** * True, if dimensional reduction is used. */ bool theUseDR; /** * True, if dipole conventions are used. */ bool theUseCS; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DipoleIOperator & operator=(const DipoleIOperator &); }; } #endif /* HERWIG_DipoleIOperator_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/InsertionOperators/Makefile.in���������������������������0000644�0001750�0001750�00000045216�11756461700�027233� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/Matchbox/InsertionOperators DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwMatchboxInsertionOperators_la_LIBADD = am_libHwMatchboxInsertionOperators_la_OBJECTS = DipoleIOperator.lo \ DipoleMIOperator.lo DipolePKOperator.lo \ MatchboxInsertionOperator.lo libHwMatchboxInsertionOperators_la_OBJECTS = \ $(am_libHwMatchboxInsertionOperators_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwMatchboxInsertionOperators_la_SOURCES) DIST_SOURCES = $(libHwMatchboxInsertionOperators_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwMatchboxInsertionOperators.la libHwMatchboxInsertionOperators_la_SOURCES = \ DipoleIOperator.cc \ DipoleIOperator.h \ DipoleMIOperator.cc \ DipoleMIOperator.h \ DipolePKOperator.cc \ DipolePKOperator.h \ MatchboxInsertionOperator.cc \ MatchboxInsertionOperator.h all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/Matchbox/InsertionOperators/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/Matchbox/InsertionOperators/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwMatchboxInsertionOperators.la: $(libHwMatchboxInsertionOperators_la_OBJECTS) $(libHwMatchboxInsertionOperators_la_DEPENDENCIES) $(EXTRA_libHwMatchboxInsertionOperators_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwMatchboxInsertionOperators_la_OBJECTS) $(libHwMatchboxInsertionOperators_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipoleIOperator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipoleMIOperator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipolePKOperator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MatchboxInsertionOperator.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/InsertionOperators/DipolePKOperator.h��������������������0000644�0001750�0001750�00000015104�11754474775�030531� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipolePKOperator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipolePKOperator_H #define HERWIG_DipolePKOperator_H // // This is the declaration of the DipolePKOperator class. // #include "Herwig++/MatrixElement/Matchbox/InsertionOperators/MatchboxInsertionOperator.h" #include "ThePEG/PDF/PDF.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer * * \brief DipolePKOperator implements the P+K * insertion operator. * */ class DipolePKOperator: public MatchboxInsertionOperator { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ DipolePKOperator(); /** * The destructor. */ virtual ~DipolePKOperator(); //@} public: /** * Set the Born matrix element this class represents * virtual corrections to. */ virtual void setBorn(Ptr<MatchboxMEBase>::tptr me); /** * Return the number of additional random variables * needed to calculate this virtual correction. * We treat all integrations on equal footing. */ virtual int nDimAdditional() const { return 1; } /** * Evaluate the finite virtual correction for the * variables supplied through the Born XComb object * and possible additional random numbers. */ virtual double me2() const; /** * Evaluate the finite virtual correction for the * variables supplied through the Born XComb object * and possible additional random numbers. */ virtual CrossSection dSigHatDR() const { return sqr(hbarc) * me2() * lastBorn()->lastXComb().jacobian() / (2.*lastSHat()); } /** * Change from CDR to DR */ virtual void useDR() { theUseDR = true; } /** * Change from DR to CDR */ virtual void useCDR() { theUseDR = false; } /** * Change to the CS convention */ virtual void useCS() { theUseCS = true; } /** * Change to the standard convention */ virtual void useNonCS() { theUseCS = false; } /** * Return true, if dimensional reduction * is used. */ virtual bool isDR() const { return theUseDR; } /** * Return true, if the virtual correction has been calculated in the * dipole convention. */ virtual bool isCS() const { return theUseCS; } /** * Dump xcomb hierarchies. */ void dumpInfo(const string& prefix = "") const; public: /** * Return true, if contributions exist to * the given parton. */ bool apply(tcPDPtr) const; /** * Return true, if this virtual correction * applies to the given process. */ virtual bool apply(const cPDVector&) const; /** * The initial-final contribution */ double gammaSoft() const; /** * [(1/(1-z))*ln((1-z)/z)]_+ */ double softLogByz(tcPDPtr p) const; /** * [(1/(1-z))*ln((1-z))]_+ */ double softLog(tcPDPtr p) const; /** * The Kbar^{qq} contribution */ double KBarqq() const; /** * The Ktilde^{qq} contribution */ double KTildeqq() const; /** * The P^{qq} contribution */ double Pqq() const; /** * The Kbar^{qg} contribution */ double KBarqg() const; /** * The Ktilde^{qg} contribution */ double KTildeqg() const; /** * The P^{qg} contribution */ double Pqg() const; /** * The Kbar^{gq} contribution */ double KBargq() const; /** * The Ktilde^{gq} contribution */ double KTildegq() const; /** * The P^{gq} contribution */ double Pgq() const; /** * The Kbar^{gg} contribution */ double KBargg() const; /** * The Ktilde^{gg} contribution */ double KTildegg() const; /** * The P^{gg} contribution */ double Pgg() const; /** * Get all contributions for the indicated incoming parton. */ double sumParton(int id) 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(); 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: /** * C_A */ double CA; /** * C_F */ double CF; /** * \gamma_q */ double gammaQuark; /** * \gamma_g */ double gammaGluon; /** * K_q */ double KQuark; /** * K_g */ double KGluon; /** * True, if dimensional reduction is used. */ bool theUseDR; /** * True, if dipole conventions are used. */ bool theUseCS; /** * The scale to be used. */ mutable Energy2 scale; /** * The PDF to be used. */ mutable tcPDFPtr pdf; /** * The incoming parton type considered. */ mutable tcPDPtr particle; /** * The x to be used. */ mutable double x; /** * The convolution variable to be used. */ mutable double z; /** * Cache PDFs evaluated at x and x/z */ mutable map<pair<tcPDFPtr,tcPDPtr>,pair<double,double> > pdfCache; /** * The currently considered incoming parton. */ mutable tcPDPtr parton; /** * Get a PDF value at x */ double PDFx(tcPDPtr) const; /** * Get a PDF value at x/z */ double PDFxByz(tcPDPtr) const; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<DipolePKOperator> initDipolePKOperator; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DipolePKOperator & operator=(const DipolePKOperator &); }; } #endif /* HERWIG_DipolePKOperator_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/InsertionOperators/DipoleMIOperator.h��������������������0000644�0001750�0001750�00000010044�11754474775�030522� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleMIOperator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipoleMIOperator_H #define HERWIG_DipoleMIOperator_H // // This is the declaration of the DipoleMIOperator class. // #include "Herwig++/MatrixElement/Matchbox/InsertionOperators/MatchboxInsertionOperator.h" namespace Herwig { using namespace ThePEG; /** * \ingroup Matchbox * \author Simon Platzer, Martin Stoll * * \brief DipoleMIOperator implements the I(\epsilon) * insertion operator. * */ class DipoleMIOperator: public MatchboxInsertionOperator { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ DipoleMIOperator(); /** * The destructor. */ virtual ~DipoleMIOperator(); //@} public: /** * Set the Born matrix element this class represents * virtual corrections to. */ virtual void setBorn(Ptr<MatchboxMEBase>::tptr me); /** * Evaluate the finite virtual correction for the * variables supplied through the Born XComb object * and possible additional random numbers. */ virtual double me2() const; /** * Return true, if contributions exist to * the given parton. */ bool apply(tcPDPtr,bool=false) const; /** * Return true, if this virtual correction * applies to the given process. */ virtual bool apply(const cPDVector&) const; /** * Change from CDR to DR */ virtual void useDR() { theUseDR = true; } /** * Change from DR to CDR */ virtual void useCDR() { theUseDR = false; } /** * Return true, if dimensional reduction * is used. */ virtual bool isDR() const { return theUseDR; } /** * Dump xcomb hierarchies. */ void dumpInfo(const string& prefix = "") const; public: /** * Triangular / Kallen function */ template <class T> inline T rootOfKallen (T a, T b, T c) const { return sqrt( a*a + b*b + c*c - 2.*( a*b+a*c+b*c ) ); } 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; //@} private: /** * C_A */ double CA; /** * C_F */ double CF; /** * \gamma_q */ double gammaQuark; /** * \gamma_g */ double gammaGluon; /** * \Gamma_q */ double GammaQuark(const ParticleData&) const; /** * \Gamma_g */ double GammaGluon() const; /** * K_q */ double KQuark; /** * K_g */ double KGluon; /** * V_j */ double Vj(const ParticleData&, const ParticleData&, Energy2,double,bool=false) const; /** * True, if dimensional reduction is used. */ bool theUseDR; private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DipoleMIOperator & operator=(const DipoleMIOperator &); }; } #endif /* HERWIG_DipoleMIOperator_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/InsertionOperators/Makefile.am���������������������������0000644�0001750�0001750�00000000442�11754474775�027230� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwMatchboxInsertionOperators.la libHwMatchboxInsertionOperators_la_SOURCES = \ DipoleIOperator.cc \ DipoleIOperator.h \ DipoleMIOperator.cc \ DipoleMIOperator.h \ DipolePKOperator.cc \ DipolePKOperator.h \ MatchboxInsertionOperator.cc \ MatchboxInsertionOperator.h ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/InsertionOperators/MatchboxInsertionOperator.cc����������0000644�0001750�0001750�00000004541�11754474775�032663� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MatchboxInsertionOperator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MatchboxInsertionOperator class. // #include "MatchboxInsertionOperator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Utilities/Rebinder.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; MatchboxInsertionOperator::MatchboxInsertionOperator() : HandlerBase() {} MatchboxInsertionOperator::~MatchboxInsertionOperator() {} void MatchboxInsertionOperator::additionalKinematics(const double * r) { if ( nDimAdditional() ) { additionalRandomNumbers.resize(nDimAdditional()); copy(r,r+nDimAdditional(),additionalRandomNumbers.begin()); } } void MatchboxInsertionOperator::rebind(const TranslationMap & trans) { theLastBorn = trans.translate(theLastBorn); HandlerBase::rebind(trans); } IVector MatchboxInsertionOperator::getReferences() { IVector ret = HandlerBase::getReferences(); ret.push_back(theLastBorn); return ret; } void MatchboxInsertionOperator::persistentOutput(PersistentOStream & os) const { os << theLastXComb << theLastBorn; } void MatchboxInsertionOperator::persistentInput(PersistentIStream & is, int) { is >> theLastXComb >> theLastBorn; } void MatchboxInsertionOperator::Init() { static ClassDocumentation<MatchboxInsertionOperator> documentation ("MatchboxInsertionOperator is the base class for insertion operators"); } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeAbstractClass<MatchboxInsertionOperator,HandlerBase> describeMatchboxInsertionOperator("Herwig::MatchboxInsertionOperator", "HwMatchbox.so"); ���������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/InsertionOperators/DipoleMIOperator.cc�������������������0000644�0001750�0001750�00000027612�11754474775�030671� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleMIOperator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipoleMIOperator class. // #include "DipoleMIOperator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" #include <gsl/gsl_sf_dilog.h> // TODO: remove // only for checking for NaN or inf #include <gsl/gsl_math.h> using namespace Herwig; using Constants::pi; DipoleMIOperator::DipoleMIOperator() : MatchboxInsertionOperator(), CA(-1.0), CF(-1.0), gammaQuark(-1.0), gammaGluon(-1.0), KQuark(-1.0), KGluon(-1.0), theUseDR(false) {} DipoleMIOperator::~DipoleMIOperator() {} IBPtr DipoleMIOperator::clone() const { return new_ptr(*this); } IBPtr DipoleMIOperator::fullclone() const { return new_ptr(*this); } void DipoleMIOperator::dumpInfo(const string& prefix) const { generator()->log() << prefix << fullName() << " [" << this << "]\n"; generator()->log() << prefix << " | XComb " << lastXCombPtr() << " for "; if ( lastXCombPtr() ) { for ( cPDVector::const_iterator p = lastXComb().mePartonData().begin(); p != lastXComb().mePartonData().end(); ++p ) { generator()->log() << (**p).PDGName() << " "; } } generator()->log() << " | Born ME\n"; lastBorn()->dumpInfo(prefix+" | "); } void DipoleMIOperator::setBorn(Ptr<MatchboxMEBase>::tptr me) { MatchboxInsertionOperator::setBorn(me); CA = SM().Nc(); CF = (SM().Nc()*SM().Nc()-1.0)/(2.*SM().Nc()); gammaQuark = (3./2.)*CF; gammaGluon = (11./6.)*CA - (1./3.)*lastBorn()->nLight(); KQuark = (7./2.-sqr(pi)/6.)*CF; KGluon = (67./18.-sqr(pi)/6.)*CA-(5./9.)*lastBorn()->nLight(); if ( isDR() ) { gammaQuark -= CF/2.; gammaGluon -= CA/6.; } } bool DipoleMIOperator::apply(const cPDVector& pd) const { bool oneMassive = false; bool first = false; bool second = false; int i=0; for ( cPDVector::const_iterator p = pd.begin(); p != pd.end(); ++p, ++i ) { if ( abs((**p).id()) < 7&& (**p).mass() != ZERO ) oneMassive = true; if ( !first ) { if ( apply(*p, i<2 ? true : false) ) first = true; } else { if ( apply(*p, i<2 ? true : false) ) second = true; } } return first && second && oneMassive; } bool DipoleMIOperator::apply(tcPDPtr pd, bool incoming) const { return // pd->mass() == ZERO && // (abs(pd->id()) < 6 || pd->id() == ParticleID::g); ( abs(pd->id()) < 6 && !incoming && pd->mass() != ZERO ) || ( abs(pd->id()) < 6 && incoming && pd->mass() == ZERO ) || pd->id() == ParticleID::g; } double DipoleMIOperator::me2() const { double res = 0.; int idj = 0; int idk = 0; for ( cPDVector::const_iterator j = mePartonData().begin(); j != mePartonData().end(); ++j, ++idj ) { if ( !apply(*j) ) continue; idk = 0; for ( cPDVector::const_iterator k = mePartonData().begin(); k != mePartonData().end(); ++k, ++idk ) { if ( !apply(*k) ) continue; if ( j == k || lastBorn()->noDipole(idj,idk) ) continue; // new Energy2 sjk = 2.*meMomenta()[idj]*meMomenta()[idk]; double kappa=0.; // renormalization scale (should cancel with something) Energy2 mu2 = lastBorn()->renormalizationScale(); // outgoing partons start at id 2 // this is the I operator in the case of no initial-state hadrons (6.16) if( idj>=2 && idk>=2 ) res += ( ((**j).id() == ParticleID::g ? CA : CF) * (Vj(**j,**k,sjk,kappa)-sqr(pi)/3.) + ((**j).id() == ParticleID::g ? GammaGluon() : GammaQuark(**j)) + ((**j).id() == ParticleID::g ? gammaGluon : gammaQuark) * (1.+log(mu2/sjk)) + ((**j).id() == ParticleID::g ? KGluon : KQuark) ) * lastBorn()->colourCorrelatedME2(make_pair(idj,idk)); // additional terms in the case of one initial-state hadron (6.51) if( idj>=2 && idk<2 ) { res += ( ((**j).id() == ParticleID::g ? CA : CF) * (Vj(**j,**k,sjk,kappa)-sqr(pi)/3.) + ((**j).id() == ParticleID::g ? GammaGluon() : GammaQuark(**j)) + ((**j).id() == ParticleID::g ? gammaGluon : gammaQuark) * (1.+log(mu2/sjk)) + ((**j).id() == ParticleID::g ? KGluon : KQuark) ) * lastBorn()->colourCorrelatedME2(make_pair(idj,idk)); res += ( ((**k).id() == ParticleID::g ? CA : CF) * (Vj(**k,**j,sjk,2./3.,true)-sqr(pi)/3.) + // MAKE SURE lastScale() RETURNS (pi+pj)^2, NOT 2.*pi*pj !!!! ((**k).id() == ParticleID::g ? gammaGluon : gammaQuark) * ( log(lastScale()/mu2) + log(mu2/sjk) + 1. ) + ((**k).id() == ParticleID::g ? KGluon : KQuark) ) * lastBorn()->colourCorrelatedME2(make_pair(idk,idj)); } // additional terms in the case of two initial-state hadrons (6.66) if( idj<2 && idk<2 ) res += ( ((**j).id() == ParticleID::g ? CA : CF) * ( 0.5*sqr(log(lastScale()/sjk)) - sqr(pi)/3. ) + ((**j).id() == ParticleID::g ? gammaGluon : gammaQuark) * ( log(lastScale()/sjk) + 1. ) + ((**j).id() == ParticleID::g ? KGluon : KQuark) ) * lastBorn()->colourCorrelatedME2(make_pair(idj,idk)); } } res *= ( - lastBorn()->lastAlphaS() / (2.*pi) ); if( gsl_isnan(res) ) cout << "DipoleMIOperator::me2 nan" << endl; if( gsl_isinf(res) ) cout << "DipoleMIOperator::me2 inf" << endl; return res; } double DipoleMIOperator::GammaQuark(const ParticleData& j) const { // renormalization scale (should cancel with something) Energy2 mu2 = lastBorn()->renormalizationScale(); // massless quark: only finite remainder if( j.mass() == ZERO ) return gammaQuark * log(lastScale()/mu2); // massive quark return CF * ( log(lastScale()/mu2) + 0.5*log(sqr(j.mass())/mu2) - 2. ); } double DipoleMIOperator::GammaGluon() const { // main contribution cancels with VjNS, only finite 1/eps remainder return gammaGluon * log( lastScale() / lastBorn()->renormalizationScale() ); } double DipoleMIOperator::Vj(const ParticleData& j, const ParticleData& k, Energy2 sjk, double kappa, bool mFSetEmpty) const { double res = 0.; Energy2 mj2 = sqr(j.mass()), mk2 = sqr(k.mass()); Energy2 Qjk2 = sjk + mj2 + mk2; Energy Qjk = sqrt(Qjk2); Energy mj = j.mass(), mk = k.mass(); double vjk = rootOfKallen(Qjk2,mj2,mk2) / sjk; double rho = sqrt( abs(1.-vjk)/(1.+vjk) ); // abs() because for small mass 1.-vjk can get O(-1.e-16) double rhoj = sqrt( ( 1. - vjk + 2.*mj2/Qjk2 / (1.-mj2/Qjk2-mk2/Qjk2) ) / ( 1. + vjk + 2.*mj2/Qjk2 / (1.-mj2/Qjk2-mk2/Qjk2) ) ); double rhok = sqrt( ( 1. - vjk + 2.*mk2/Qjk2 / (1.-mj2/Qjk2-mk2/Qjk2) ) / ( 1. + vjk + 2.*mk2/Qjk2 / (1.-mj2/Qjk2-mk2/Qjk2) ) ); ParticleData l = ( mj2 == ZERO ? k : j ); // S part (6.20) // both masses zero if( mj2 == ZERO && mk2 == ZERO ) // only finite 1/eps^2 remainder res += 1./2.*sqr(log(Qjk2/sjk)); // one mass zero else if( mj2 == ZERO || mk2 == ZERO ) { Energy2 m2 = sqr(l.mass()); res += -1./4.*sqr(log(m2/sjk)) - sqr(pi)/12. - 1./2.*log(m2/sjk)*log(sjk/Qjk2) - 1./2.*log(m2/Qjk2)*log(sjk/Qjk2); // finite 1/eps^2 remainder res += 1./4.*sqr(log(Qjk2/sjk)); // finite 1/eps remainder res += 1./2.*log(m2/sjk)*log(Qjk2/sjk); } // no mass zero else if( mj2 != ZERO && mk2 != ZERO ) { res += 1./vjk * ( -1./4.*sqr(log(rhoj*rhoj)) - 1./4.*sqr(log(rhok*rhok)) - sqr(pi)/6. + ( rho==0. ? 0. : log(rho)*log(Qjk2/sjk) ) ); // finite 1/eps remainder res += 1./vjk * ( rho==0. ? 0. : log(rho)*log(Qjk2/sjk) ); } else cout << "problem occurred in DipoleMIOperator::Vj -- S part" << endl; // double resS = res; if(gsl_isnan(res)) cout << "Vj S nan" << " j " << j.id() << " k " << k.id() << endl; // NS part (6.21)-(6.26) // V_q (j is quark) // j is massive quark if( mj2 != ZERO ) { assert( abs(j.id()) < 7); res += gammaQuark/CF * log(sjk/Qjk2); // iff j and/or k is massive quark (6.21),(6.22) // k is massive quark (6.21) if( mk2 != ZERO ) { assert( abs(k.id()) < 7); res += 1./vjk * ( ( rho==0. ? 0. : log(rho*rho)*log(1.+rho*rho) ) + 2.*gsl_sf_dilog(rho*rho) - gsl_sf_dilog(1.-rhoj*rhoj) - gsl_sf_dilog(1.-rhok*rhok) - sqr(pi)/6. ) + log((Qjk-mk)/Qjk) - 2.*log((sqr(Qjk-mk)-mj2)/Qjk2) - 2.*mj2/sjk*log(mj/(Qjk-mk)) - mk/(Qjk-mk) + 2.*mk*(2.*mk-Qjk)/sjk + sqr(pi)/2.; } // k is massless parton (6.22) else { res += sqr(pi)/6. - gsl_sf_dilog(sjk/Qjk2) - 2.*log(sjk/Qjk2) - mj2/sjk*log(mj2/Qjk2); } } // V_q / V_g (j is massless parton) else { // k is massless parton if( mk == ZERO ) { // only contribution if j is gluon if( j.id() == ParticleID::g ) { // sum over all quark flavours if( !mFSetEmpty ) // TODO: make fmax depend on matrix element for( int f=1; f< 6; ++f ) { Energy2 mF2 = sqr( getParticleData(f)->mass() ); // only heavy quarks if( mF2 == ZERO ) continue; // sum only over quarks which meet special condition if( sjk <= 4.*sqrt(mF2)*(sqrt(mF2)+mk) ) continue; double rho1 = sqrt( 1. - 4.*mF2 / sqr(Qjk-mk) ); res += 2./3./CA * ( log((1.+rho1)/2.) - rho1/3.*(3.+sqr(rho1)) - 0.5*log(mF2/Qjk2) ); } } } // k is massive quark else { assert( abs(k.id()) < 7); // part common to j massless quark or gluon res += sqr(pi)/6. - gsl_sf_dilog(sjk/Qjk2); // j is massless (incoming) quark if( abs(j.id()) < 7) res += gammaQuark/CF * ( log(sjk/Qjk2) - 2.*log((Qjk-mk)/Qjk) - 2.*mk/(Qjk+mk) ); // j is gluon else if( j.id() == ParticleID::g ) { // part independent of other heavy quark flavours res += gammaGluon/CA * ( log(sjk/Qjk2) - 2.*log((Qjk-mk)/Qjk) - 2.*mk/(Qjk+mk) ) + (kappa-2./3.) * mk2/sjk * (1./CA*lastBorn()->nLight()-1.) * log(2.*mk/(Qjk+mk)); // part containing other heavy quark flavours if( !mFSetEmpty ) // TODO: make fmax dependent on matrix element for( int f=1; f< 6; ++f ) { Energy2 mF2 = sqr( getParticleData(f)->mass() ); // only heavy quarks if( mF2 == ZERO ) continue; // sum only over quarks which meet special condition if( sjk <= 4.*sqrt(mF2)*(sqrt(mF2)+mk) ) continue; double rho1 = sqrt( 1. - 4.*mF2 / sqr(Qjk-mk) ); double rho2 = sqrt( 1. - 4.*mF2 / (Qjk2-mk2) ); res += 2./3./CA * ( log((Qjk-mk)/Qjk) + mk*rho1*rho1*rho1/(Qjk+mk) + log((1.+rho1)/2.) - rho1/3.*(3.+sqr(rho1)) - 1./2.*log(mF2/Qjk2) ) + 1./CA * ( rho2*rho2*rho2*log((rho2-rho1)/(rho2+rho1)) - log((1.-rho1)/(1.+rho1)) - 8.*rho1*mF2/sjk ); } } } } return res; } void DipoleMIOperator::persistentOutput(PersistentOStream & os) const { os << CA << CF << gammaQuark << gammaGluon << KQuark << KGluon << theUseDR; } void DipoleMIOperator::persistentInput(PersistentIStream & is, int) { is >> CA >> CF >> gammaQuark >> gammaGluon >> KQuark >> KGluon >> theUseDR; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<DipoleMIOperator,MatchboxInsertionOperator> describeHerwigDipoleMIOperator("Herwig::DipoleMIOperator", "HwMatchbox.so"); void DipoleMIOperator::Init() { static ClassDocumentation<DipoleMIOperator> documentation ("DipoleMIOperator"); DipoleRepository::registerInsertionOperator<DipoleMIOperator>("MassiveIOperator"); } ����������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Matchbox/InsertionOperators/DipoleIOperator.cc��������������������0000644�0001750�0001750�00000013347�11754474775�030554� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleIOperator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2012 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipoleIOperator class. // #include "DipoleIOperator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/Throw.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/MatrixElement/Matchbox/Base/DipoleRepository.h" using namespace Herwig; using Constants::pi; DipoleIOperator::DipoleIOperator() : MatchboxInsertionOperator(), CA(-1.0), CF(-1.0), gammaQuark(-1.0), gammaGluon(-1.0), betaZero(-1.), KQuark(-1.0), KGluon(-1.0), theUseDR(false), theUseCS(false) {} DipoleIOperator::~DipoleIOperator() {} IBPtr DipoleIOperator::clone() const { return new_ptr(*this); } IBPtr DipoleIOperator::fullclone() const { return new_ptr(*this); } void DipoleIOperator::dumpInfo(const string& prefix) const { generator()->log() << prefix << fullName() << " [" << this << "]\n"; generator()->log() << prefix << " | XComb " << lastXCombPtr() << " for "; if ( lastXCombPtr() ) { for ( cPDVector::const_iterator p = lastXComb().mePartonData().begin(); p != lastXComb().mePartonData().end(); ++p ) { generator()->log() << (**p).PDGName() << " "; } } generator()->log() << " | Born ME\n"; lastBorn()->dumpInfo(prefix+" | "); } void DipoleIOperator::setBorn(Ptr<MatchboxMEBase>::tptr me) { MatchboxInsertionOperator::setBorn(me); if ( CA < 0. ) { CA = SM().Nc(); CF = (SM().Nc()*SM().Nc()-1.0)/(2.*SM().Nc()); gammaQuark = (3./2.)*CF; gammaGluon = (11./6.)*CA - (1./3.)*lastBorn()->nLight(); betaZero = gammaGluon; KQuark = (7./2.-sqr(pi)/6.)*CF; KGluon = (67./18.-sqr(pi)/6.)*CA-(5./9.)*lastBorn()->nLight(); if ( isDR() ) { gammaQuark -= CF/2.; gammaGluon -= CA/6.; } } } bool DipoleIOperator::apply(const cPDVector& pd) const { bool first = false; bool second = false; for ( cPDVector::const_iterator p = pd.begin(); p != pd.end(); ++p ) { if ( !first ) { if ( apply(*p) ) first = true; } else { if ( apply(*p) ) second = true; } } return first && second; } bool DipoleIOperator::apply(tcPDPtr pd) const { return pd->mass() == ZERO && (abs(pd->id()) < 6 || pd->id() == ParticleID::g); } double DipoleIOperator::me2() const { double res = 0.; int idi = 0; int idj = 0; Energy2 mu2 = 0.*GeV2; if ( !isCS() ) { assert(lastBorn()->matchboxAmplitude()); mu2 = lastBorn()->matchboxAmplitude()->mu2(); } for ( cPDVector::const_iterator i = mePartonData().begin(); i != mePartonData().end(); ++i, ++idi ) { if ( !apply(*i) ) continue; idj = 0; for ( cPDVector::const_iterator j = mePartonData().begin(); j != mePartonData().end(); ++j, ++idj ) { if ( !apply(*j) ) continue; if ( i == j || lastBorn()->noDipole(idi,idj) ) continue; double delta = 0.; if ( !isCS() ) { double xgammaGluon = gammaGluon; double xgammaQuark = gammaQuark; if ( isDR() ) { xgammaGluon += CA/6.; xgammaQuark += CF/2.; } delta = ((**i).id() == ParticleID::g ? xgammaGluon : xgammaQuark) * log(mu2/(2.*(meMomenta()[idi]*meMomenta()[idj]))); if ( (idi < 2 && idj < 2) || (idi > 1 && idj > 1) ) delta += ((**i).id() == ParticleID::g ? CA : CF) * sqr(pi) / 2.; } res += ( ((**i).id() == ParticleID::g ? CA : CF) * (-sqr(pi)/3.) + ((**i).id() == ParticleID::g ? gammaGluon : gammaQuark) + ((**i).id() == ParticleID::g ? KGluon : KQuark) + delta ) * lastBorn()->colourCorrelatedME2(make_pair(idi,idj)); } } if ( !isCS() ) { Energy2 muR2 = lastBorn()->renormalizationScale()* lastBorn()->renormalizationScaleFactor(); if ( muR2 != mu2 ) { res -= betaZero * lastBorn()->orderInAlphaS() * log(muR2/mu2) * lastBorn()->me2(); } } // include the finite renormalization for DR here; ATTENTION this // has to be mentioned in the manual! see hep-ph/9305239 for // details; this guarantees an expansion in alpha_s^\bar{MS} when // using dimensional reduction if ( isDR() ) res -= (CA/6.)*lastBorn()->orderInAlphaS()*lastBorn()->me2(); res *= ( - lastBorn()->lastAlphaS() / (2.*pi) ); return res; } void DipoleIOperator::persistentOutput(PersistentOStream & os) const { os << CA << CF << gammaQuark << gammaGluon << betaZero << KQuark << KGluon << theUseDR << theUseCS; } void DipoleIOperator::persistentInput(PersistentIStream & is, int) { is >> CA >> CF >> gammaQuark >> gammaGluon >> betaZero >> KQuark >> KGluon >> theUseDR >> theUseCS; } // *** Attention *** The following static variable is needed for the type // description system in ThePEG. Please check that the template arguments // are correct (the class and its base class), and that the constructor // arguments are correct (the class name and the name of the dynamically // loadable library where the class implementation can be found). DescribeClass<DipoleIOperator,MatchboxInsertionOperator> describeHerwigDipoleIOperator("Herwig::DipoleIOperator", "HwMatchbox.so"); void DipoleIOperator::Init() { static ClassDocumentation<DipoleIOperator> documentation ("DipoleIOperator"); DipoleRepository::registerInsertionOperator<DipoleIOperator>("LightIOperator"); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/MEfftoVH.cc�������������������������������������������������������0000644�0001750�0001750�00000036601�11754474776�021512� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEfftoVH class. // #include "MEfftoVH.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Cuts/Cuts.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/PDF/PolarizedBeamParticleData.h" using namespace Herwig; void MEfftoVH::persistentOutput(PersistentOStream & os) const { os << _shapeopt << _wplus << _wminus << _z0 << _higgs << _vertexFFW << _vertexFFZ << _vertexWWH << _maxflavour << ounit(_mh,GeV) << ounit(_wh,GeV) << _hmass; } void MEfftoVH::persistentInput(PersistentIStream & is, int) { is >> _shapeopt >> _wplus >> _wminus >> _z0 >> _higgs >> _vertexFFW >> _vertexFFZ >> _vertexWWH >> _maxflavour >> iunit(_mh,GeV) >> iunit(_wh,GeV) >> _hmass; } AbstractClassDescription<MEfftoVH> MEfftoVH::initMEfftoVH; // Definition of the static class description member. void MEfftoVH::Init() { static ClassDocumentation<MEfftoVH> documentation ("The MEfftoVH class is the base class for the Bjirken process f fbar -> V H"); static Switch<MEfftoVH,unsigned int> interfaceShapeOption ("ShapeScheme", "Option for the treatment of the Higgs resonance shape", &MEfftoVH::_shapeopt, 2, false, false); static SwitchOption interfaceStandardShapeFixed (interfaceShapeOption, "FixedBreitWigner", "Breit-Wigner s-channel resonanse", 1); static SwitchOption interfaceStandardShapeRunning (interfaceShapeOption, "MassGenerator", "Use the mass generator to give the shape", 2); static SwitchOption interfaceStandardShapeOnShell (interfaceShapeOption, "OnShell", "Produce an on-shell Higgs boson", 0); static Parameter<MEfftoVH,unsigned int> interfaceMaxFlavour ( "MaxFlavour", "The heaviest incoming quark flavour this matrix element is allowed to handle " "(if applicable).", &MEfftoVH::_maxflavour, 5, 1, 5, false, false, true); } unsigned int MEfftoVH::orderInAlphaS() const { return 0; } unsigned int MEfftoVH::orderInAlphaEW() const { return 3; } Energy2 MEfftoVH::scale() const { return sHat(); } int MEfftoVH::nDim() const { return 4 + int(_shapeopt>0); } void MEfftoVH::setKinematics() { DrellYanBase::setKinematics(); } Selector<MEBase::DiagramIndex> MEfftoVH::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) sel.insert(1.0, i); return sel; } Selector<const ColourLines *> MEfftoVH::colourGeometries(tcDiagPtr ) const { static ColourLines c1(""); static ColourLines c2("6 -7"); static ColourLines c3("1 -2"); static ColourLines c4("1 -2, 6 -7"); Selector<const ColourLines *> sel; if(mePartonData()[0]->coloured()) { if(mePartonData()[4]->coloured()) sel.insert(1.0, &c4); else sel.insert(1.0, &c3); } else { if(mePartonData()[4]->coloured()) sel.insert(1.0, &c2); else sel.insert(1.0, &c1); } return sel; } void MEfftoVH::doinit() { DrellYanBase::doinit(); // get the vedrtex pointers from the SM object tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(hwsm) { _vertexFFW = hwsm->vertexFFW(); _vertexFFZ = hwsm->vertexFFZ(); } else throw InitException() << "Wrong type of StandardModel object in " << "MEfftoVH::doinit() the Herwig++" << " version must be used" << Exception::runerror; // get the particle data objects for the intermediates _wplus = getParticleData(ParticleID::Wplus ); _wminus = getParticleData(ParticleID::Wminus); _z0 = getParticleData(ParticleID::Z0); // higgs stuff _mh = _higgs->mass(); _wh = _higgs->width(); if(_higgs->massGenerator()) { _hmass=dynamic_ptr_cast<GenericMassGeneratorPtr>(_higgs->massGenerator()); } if(_shapeopt==2&&!_hmass) throw InitException() << "If using the mass generator for the line shape in MEfftoVH::doinit()" << "the mass generator must be an instance of the GenericMassGenerator class" << Exception::runerror; } double MEfftoVH::me2() const { vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; SpinorWaveFunction q(meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction qbar(meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction f(meMomenta()[3],mePartonData()[3],outgoing); SpinorWaveFunction fbar(meMomenta()[4],mePartonData()[4],outgoing); for(unsigned int ix=0;ix<2;++ix) { q.reset(ix) ; fin.push_back(q); qbar.reset(ix); ain.push_back(qbar); f.reset(ix) ;fout.push_back(f); fbar.reset(ix);aout.push_back(fbar); } return helicityME(fin,ain,fout,aout,false)*sHat()*UnitRemoval::InvE2; } double MEfftoVH::helicityME(vector<SpinorWaveFunction> & fin , vector<SpinorBarWaveFunction> & ain , vector<SpinorBarWaveFunction> & fout, vector<SpinorWaveFunction> & aout, bool calc) const { // scale Energy2 mb2(scale()); // matrix element to be stored ProductionMatrixElement menew(PDT::Spin1Half,PDT::Spin1Half,PDT::Spin0, PDT::Spin1Half,PDT::Spin1Half); // work out the id of the vector boson int incharge = mePartonData()[0]->iCharge()+mePartonData()[1]->iCharge(); tcPDPtr vec; if(incharge==0) vec = _z0; else if(incharge>0) vec = _wplus; else vec = _wminus; // vertex for vector boson AbstractFFVVertexPtr vertex = vec==_z0 ? _vertexFFZ : _vertexFFW; // wavefunction for the scalar ScalarWaveFunction higgs(meMomenta()[2],mePartonData()[2],1.,outgoing); // calculate the matrix element VectorWaveFunction inter[2]; unsigned int ihel1,ihel2,ohel1,ohel2; Complex diag; double me(0.); for(ihel1=0;ihel1<2;++ihel1) { for(ihel2=0;ihel2<2;++ihel2) { // wavefunction for the intermediate 1st vector inter[0] = vertex->evaluate(mb2,1,vec,fin[ihel1],ain[ihel2]); // after the emission of the higgs inter[1] = _vertexWWH->evaluate(mb2,1,vec,inter[0],higgs); // boson decay piece for(ohel1=0;ohel1<2;++ohel1) { for(ohel2=0;ohel2<2;++ohel2) { diag = vertex->evaluate(sqr(inter[1].particle()->mass()), aout[ohel2],fout[ohel1],inter[1]); me += norm(diag); menew(ihel1,ihel2,0,ohel1,ohel2) = diag; } } } } // spin factor me *=0.25; tcPolarizedBeamPDPtr beam[2] = {dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[0]), dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[1])}; if( beam[0] || beam[1] ) { RhoDMatrix rho[2] = {beam[0] ? beam[0]->rhoMatrix() : RhoDMatrix(mePartonData()[0]->iSpin()), beam[1] ? beam[1]->rhoMatrix() : RhoDMatrix(mePartonData()[1]->iSpin())}; me = menew.average(rho[0],rho[1]); } // incoming colour factor if(mePartonData()[0]->coloured()) me /= 3.; // outgoing colour factor if(mePartonData()[3]->coloured()) me *= 3.; if(calc) _me.reset(menew); return me; } void MEfftoVH::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); hard.push_back(sub->outgoing()[1]); hard.push_back(sub->outgoing()[2]); // ensure right order if(hard[0]->id()<0) swap(hard[0],hard[1]); if(hard[3]->dataPtr()->iSpin()==PDT::Spin0) swap(hard[2],hard[3]); if(hard[4]->dataPtr()->iSpin()==PDT::Spin0) swap(hard[2],hard[4]); if(hard[3]->id()<0) swap(hard[3],hard[4]); vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; SpinorWaveFunction( fin ,hard[0],incoming,false,true); SpinorBarWaveFunction(ain ,hard[1],incoming,false,true); ScalarWaveFunction( hard[2],outgoing,true); SpinorBarWaveFunction(fout,hard[3],outgoing,true ,true); SpinorWaveFunction( aout,hard[4],outgoing,true ,true); helicityME(fin,ain,fout,aout,true); // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(_me); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<5;++ix) { tcSpinPtr spin = hard[ix]->spinInfo(); if(ix<2) { tcPolarizedBeamPDPtr beam = dynamic_ptr_cast<tcPolarizedBeamPDPtr>(hard[ix]->dataPtr()); if(beam) spin->rhoMatrix() = beam->rhoMatrix(); } spin->productionVertex(hardvertex); } } bool MEfftoVH::generateKinematics(const double * r) { using Constants::pi; // workout the ID of the vector boson tcPDPtr vec = mePartonData()[0]->iCharge()+mePartonData()[1]->iCharge()!=0 ? _wplus : _z0; // order determined randomly Energy e = sqrt(sHat())/2.0; Energy mh(_mh),mv; double jac(1.); if(UseRandom::rndbool()) { double rhomax,rhomin; // generate the mass of the Higgs if(_shapeopt!=0) { Energy mhmax = min(2.*e-vec->massMin(),mePartonData()[2]->massMax()); Energy mhmin = max(ZERO ,mePartonData()[2]->massMin()); if(mhmax<=mhmin) return false; rhomin = atan2((sqr(mhmin)-sqr(_mh)), _mh*_wh); rhomax = atan2((sqr(mhmax)-sqr(_mh)), _mh*_wh); mh = sqrt(_mh*_wh*tan(rhomin+r[3]*(rhomax-rhomin))+sqr(_mh)); jac *= rhomax-rhomin; } // generate the mass of the vector boson Energy2 mvmax2 = sqr(min(2.*e-mh,vec->massMax())); Energy2 mvmin2 = sqr(vec->massMin()); if(mvmax2<=mvmin2) return false; rhomin = atan2((mvmin2-sqr(vec->mass())), vec->mass()*vec->width()); rhomax = atan2((mvmax2-sqr(vec->mass())), vec->mass()*vec->width()); mv = sqrt(vec->mass()*vec->width()*tan(rhomin+r[1]*(rhomax-rhomin)) +sqr(vec->mass())); jac *= rhomax-rhomin; } else { // generate the mass of the vector boson Energy2 mvmax2 = sqr(min(2.*e,vec->massMax())); Energy2 mvmin2 = sqr(vec->massMin()); if(mvmax2<=mvmin2) return false; double rhomin = atan2((mvmin2-sqr(vec->mass())), vec->mass()*vec->width()); double rhomax = atan2((mvmax2-sqr(vec->mass())), vec->mass()*vec->width()); mv = sqrt(vec->mass()*vec->width()*tan(rhomin+r[1]*(rhomax-rhomin)) +sqr(vec->mass())); jac *= rhomax-rhomin; // generate the mass of the Higgs if(_shapeopt!=0) { Energy mhmax = min(2.*e-mv,mePartonData()[2]->massMax()); Energy mhmin = max(ZERO ,mePartonData()[2]->massMin()); if(mhmax<=mhmin) return false; rhomin = atan2((sqr(mhmin)-sqr(_mh)), _mh*_wh); rhomax = atan2((sqr(mhmax)-sqr(_mh)), _mh*_wh); mh = sqrt(_mh*_wh*tan(rhomin+r[3]*(rhomax-rhomin))+sqr(_mh)); jac *= rhomax-rhomin; } } if(mh+mv>2.*e) return false; // assign masses meMomenta()[2].setMass(mh); for(unsigned int ix=3;ix<5;++ix) meMomenta()[ix] = Lorentz5Momentum(mePartonData()[ix]->generateMass()); Energy q = ZERO; Lorentz5Momentum pvec(mv); try { q = SimplePhaseSpace:: getMagnitude(sHat(), meMomenta()[2].mass(), mv); } catch ( ImpossibleKinematics ) { return false; } Energy ptmin = max(lastCuts().minKT(mePartonData()[2]), lastCuts().minKT(vec)); Energy2 m22 = meMomenta()[2].mass2(); Energy2 m32 = pvec .mass2(); Energy2 e0e2 = 2.0*e*sqrt(sqr(q) + m22); Energy2 e1e2 = 2.0*e*sqrt(sqr(q) + m22); Energy2 e0e3 = 2.0*e*sqrt(sqr(q) + m32); Energy2 e1e3 = 2.0*e*sqrt(sqr(q) + m32); Energy2 pq = 2.0*e*q; double ctmin = -1.0,ctmax = 1.0; Energy2 thmin = lastCuts().minTij(mePartonData()[0], mePartonData()[2]); if ( thmin > ZERO ) ctmax = min(ctmax, (e0e2 - m22 - thmin)/pq); thmin = lastCuts().minTij(mePartonData()[1], mePartonData()[2]); if ( thmin > ZERO ) ctmin = max(ctmin, (thmin + m22 - e1e2)/pq); thmin = lastCuts().minTij(mePartonData()[1], mePartonData()[3]); if ( thmin > ZERO ) ctmax = min(ctmax, (e1e3 - m32 - thmin)/pq); thmin = lastCuts().minTij(mePartonData()[0], mePartonData()[3]); if ( thmin > ZERO ) ctmin = max(ctmin, (thmin + m32 - e0e3)/pq); if ( ptmin > ZERO ) { double ctm = 1.0 - sqr(ptmin/q); if ( ctm <= 0.0 ) return false; ctmin = max(ctmin, -sqrt(ctm)); ctmax = min(ctmax, sqrt(ctm)); } if ( ctmin >= ctmax ) return false; double cth = getCosTheta(ctmin, ctmax, r[0]); Energy pt = q*sqrt(1.0-sqr(cth)); double phi = UseRandom::rnd()*2.0*pi; meMomenta()[2].setX(pt*sin(phi)); meMomenta()[2].setY(pt*cos(phi)); meMomenta()[2].setZ(q*cth); pvec .setX(-pt*sin(phi)); pvec .setY(-pt*cos(phi)); pvec .setZ(-q*cth); meMomenta()[2].rescaleEnergy(); pvec .rescaleEnergy(); // decay of the vector boson bool test=Kinematics::twoBodyDecay(pvec,meMomenta()[3].mass(), meMomenta()[4].mass(), -1.+2*r[2],r[3]*2.*pi, meMomenta()[3],meMomenta()[4]); if(!test) return false; // check cuts vector<LorentzMomentum> out; tcPDVector tout; for(unsigned int ix=2;ix<5;++ix) { out .push_back(meMomenta()[ix]); tout.push_back(mePartonData()[ix]); } if ( !lastCuts().passCuts(tout, out, mePartonData()[0], mePartonData()[1]) ) return false; // jacobian factors // main piece jacobian((pq/sHat())*pi*jacobian()); // mass piece jacobian(jac*jacobian()); // decay piece Energy p2 = Kinematics::pstarTwoBodyDecay(mv,meMomenta()[3].mass(), meMomenta()[4].mass()); jacobian(p2/mv/8./sqr(pi)*jacobian()); // jacobian factor for the gauge boson jacobian((sqr(sqr(mv)-sqr(vec->mass()))+sqr(vec->mass()*vec->width()))/ (vec->mass()*vec->width())*jacobian()/sHat()); return true; } CrossSection MEfftoVH::dSigHatDR() const { using Constants::pi; // jacobian factor for the higgs InvEnergy2 bwfact(ZERO); Energy moff =meMomenta()[2].mass(); if(_shapeopt==1) { tcPDPtr h0 = mePartonData()[2]->iSpin()==PDT::Spin0 ? mePartonData()[2] : mePartonData()[3]; bwfact = h0->generateWidth(moff)*moff/pi/ (sqr(sqr(moff)-sqr(_mh))+sqr(_mh*_wh)); } else if(_shapeopt==2) { bwfact = _hmass->BreitWignerWeight(moff); } double jac1 = _shapeopt!=0 ? double(bwfact*(sqr(sqr(moff)-sqr(_mh))+sqr(_mh*_wh))/(_mh*_wh)) : 1.; // answer return jac1*me2()*jacobian()/(16.0*sqr(pi)*sHat())*sqr(hbarc); } double MEfftoVH::getCosTheta(double ctmin, double ctmax, double r) { double cth = 0.0; if ( ctmin <= -1.0 && ctmax >= 1.0 ) { jacobian((ctmax - ctmin)); cth = ctmin + r*jacobian(); } else if ( ctmin <= -1.0 ) { cth = 1.0 - (1.0 - ctmax)*pow((1.0 - ctmin)/(1.0 - ctmax), r); jacobian(log((1.0 - ctmin)/(1.0 - ctmax))*(1.0 - cth)); } else if ( ctmax >= 1.0 ) { cth = -1.0 + (1.0 + ctmin)*pow((1.0 + ctmax)/(1.0 + ctmin), r); jacobian(log((1.0 + ctmax)/(1.0 + ctmin))*(1.0 + cth)); } else { double zmin = 0.5*(1.0 - ctmax); double zmax = 0.5*(1.0 - ctmin); double A1 = (2.0*zmax - 1.0)/(zmax*(1.0-zmax)); double A0 = (2.0*zmin - 1.0)/(zmin*(1.0-zmin)); double A = r*(A1 - A0) + A0; double z = A < 2.0? 2.0/(sqrt(sqr(A) + 4.0) + 2 - A): 0.5*(A - 2.0 + sqrt(sqr(A) + 4.0))/A; cth = 1.0 - 2.0*z; jacobian(2.0*(A1 - A0)*sqr(z)*sqr(1.0 - z)/(sqr(z) + sqr(1.0 - z))); } return cth; } �������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/MEfftoVH.h��������������������������������������������������������0000644�0001750�0001750�00000020456�11754474776�021355� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEfftoVH_H #define HERWIG_MEfftoVH_H // // This is the declaration of the MEfftoVH class. // #include "DrellYanBase.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "Herwig++/PDT/GenericMassGenerator.h" namespace Herwig { using namespace ThePEG; /** * The MEfftoVH class is the base class for \f$f\bar{f}\to VH\f$ processes. * This base class handles the phase-space integration while * the inheriting classes implement the matrix element * * @see \ref MEfftoVHInterfaces "The interfaces" * defined for MEfftoVH. */ class MEfftoVH: public DrellYanBase { public: /** * The default constructor. */ MEfftoVH() : _shapeopt(2), _maxflavour(5), _mh(), _wh() {} /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Set the typed and momenta of the incoming and outgoing partons to * be used in subsequent calls to me() and colourGeometries() * according to the associated XComb object. If the function is * overridden in a sub class the new function must call the base * class one first. */ virtual void setKinematics(); /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Matrix element for \f$f\bar{f}\to V h^0\to f'\bar{f'} h^0\f$. * @param fin Spinors for incoming fermion * @param ain Spinors for incoming antifermion * @param fout Spinors for incoming fermion * @param aout Spinors for incoming antifermion * @param me Whether or not to calculate the matrix element for spin correlations */ double helicityME(vector<SpinorWaveFunction> & fin , vector<SpinorBarWaveFunction> & ain , vector<SpinorBarWaveFunction> & fout, vector<SpinorWaveFunction> & aout, bool me) const; /** * Used internally by generateKinematics, after calculating the * limits on cos(theta). */ virtual double getCosTheta(double cthmin, double cthmax, double r); /** * Access to the vector ParticleData objects */ //@{ /** * Access to the \f$W^+\f$ data */ PDPtr WPlus() const { return _wplus; } /** * Access to the \f$W^-\f$ data */ PDPtr WMinus() const { return _wminus; } /** * Access to the \f$Z^0\f$ data */ PDPtr Z0() const { return _z0; } /** * Access to the higgs data */ PDPtr higgs() const { return _higgs; } /** * Set the higgs data */ void higgs(PDPtr in) {_higgs =in;} //@} /** * Set the pointer to the vector-vector-Higgs vertex */ void setWWHVertex(AbstractVVSVertexPtr in) { _vertexWWH = in; } /** * Set the line shape treatment */ void lineShape(unsigned int in) {_shapeopt=in;} /** * Maximum flavour of the incoming partons */ unsigned int maxFlavour() const {return _maxflavour;} 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 static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<MEfftoVH> initMEfftoVH; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEfftoVH & operator=(const MEfftoVH &); private: /** * Defines the Higgs resonance shape */ unsigned int _shapeopt; /** * The allowed flavours of the incoming quarks */ unsigned int _maxflavour; /** * The intermediate vector bosons */ //@{ /** * \f$W^+\f$ */ PDPtr _wplus; /** * \f$W^-\f$ */ PDPtr _wminus; /** * \f$Z^0\f$ */ PDPtr _z0; /** * The higgs bosom */ PDPtr _higgs; //@} /** * The vertices for the calculation of the matrix element */ //@{ /** * Vertex for fermion-fermion-W */ AbstractFFVVertexPtr _vertexFFW; /** * Vertex for fermion-fermion-Z */ AbstractFFVVertexPtr _vertexFFZ; /** * Vertex for vector-vector-Higgs */ AbstractVVSVertexPtr _vertexWWH; //@} /** * On-shell mass for the higgs */ Energy _mh; /** * On-shell width for the higgs */ Energy _wh; /** * The mass generator for the Higgs */ GenericMassGeneratorPtr _hmass; /** * Matrix element for spin correlations */ ProductionMatrixElement _me; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEfftoVH. */ template <> struct BaseClassTrait<Herwig::MEfftoVH,1> { /** Typedef of the first base class of MEfftoVH. */ typedef Herwig::DrellYanBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEfftoVH class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEfftoVH> : public ClassTraitsBase<Herwig::MEfftoVH> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEfftoVH"; } }; /** @endcond */ } #endif /* HERWIG_MEfftoVH_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/ProductionMatrixElement.h�����������������������������������������0000644�0001750�0001750�00000051604�11754474776�024563� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ProductionMatrixElement.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ProductionMatrixElement_H #define HERWIG_ProductionMatrixElement_H // // This is the declaration of the ProductionMatrixElement class. #include <ThePEG/Config/ThePEG.h> #include <ThePEG/Utilities/ClassDescription.h> #include <ThePEG/EventRecord/RhoDMatrix.h> namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * * The storage of the helicity amplitude expression for the matrix element * of a hard process. Two incoming particles and an arbitary number of * external particles are supported. * * @see DecayMatrixElement * @see RhoDMatrix * @see HardVertex * * \author Peter Richardson */ class ProductionMatrixElement { public: /** @name Standard constructors and destructors. */ //@{ /** * Constructor for 2-1 scattering. * @param in1 \f$2S+1\f$ for the first incoming particle. * @param in2 \f$2S+1\f$ for the second incoming particle. * @param out \f$2S+1\f$ for the outgoing particle. */ ProductionMatrixElement(PDT::Spin in1,PDT::Spin in2,PDT::Spin out) { _nout=2; _inspin.resize(2); _inspin[0]=in1; _inspin[1]=in2; _outspin.push_back(out); setMESize(); } /** * Constructor for 2-2 scattering. * @param in1 \f$2S+1\f$ for the first incoming particle. * @param in2 \f$2S+1\f$ for the second incoming particle. * @param out1 \f$2S+1\f$ for the first outgoing particle. * @param out2 \f$2S+1\f$ for the second outgoing particle. */ ProductionMatrixElement(PDT::Spin in1,PDT::Spin in2,PDT::Spin out1, PDT::Spin out2) { _nout=2; _inspin.resize(2); _inspin[0]=in1; _inspin[1]=in2; _outspin.push_back(out1); _outspin.push_back(out2); setMESize(); } /** * Constructor for 2-3 scattering. * @param in1 \f$2S+1\f$ for the first incoming particle. * @param in2 \f$2S+1\f$ for the second incoming particle. * @param out1 \f$2S+1\f$ for the first outgoing particle. * @param out2 \f$2S+1\f$ for the second outgoing particle. * @param out3 \f$2S+1\f$ for the third outgoing particle. */ ProductionMatrixElement(PDT::Spin in1,PDT::Spin in2,PDT::Spin out1, PDT::Spin out2,PDT::Spin out3) { _inspin.resize(2); _nout=3; _inspin[0]=in1; _inspin[1]=in2; _outspin.push_back(out1); _outspin.push_back(out2); _outspin.push_back(out3); setMESize(); } /** * Constructor for 2-4 scattering. * @param in1 \f$2S+1\f$ for the first incoming particle. * @param in2 \f$2S+1\f$ for the second incoming particle. * @param out1 \f$2S+1\f$ for the first outgoing particle. * @param out2 \f$2S+1\f$ for the second outgoing particle. * @param out3 \f$2S+1\f$ for the third outgoing particle. * @param out4 \f$2S+1\f$ for the fourth outgoing particle. */ ProductionMatrixElement(PDT::Spin in1,PDT::Spin in2,PDT::Spin out1, PDT::Spin out2,PDT::Spin out3, PDT::Spin out4) { _nout=4; _inspin.resize(2); _inspin[0]=in1; _inspin[1]=in2; _outspin.push_back(out1); _outspin.push_back(out2); _outspin.push_back(out3); _outspin.push_back(out4); setMESize(); } /** * Constructor for 2-5 scattering. * @param in1 \f$2S+1\f$ for the first incoming particle. * @param in2 \f$2S+1\f$ for the second incoming particle. * @param out1 \f$2S+1\f$ for the first outgoing particle. * @param out2 \f$2S+1\f$ for the second outgoing particle. * @param out3 \f$2S+1\f$ for the third outgoing particle. * @param out4 \f$2S+1\f$ for the fourth outgoing particle. * @param out5 \f$2S+1\f$ for the fifth outgoing particle. */ ProductionMatrixElement(PDT::Spin in1,PDT::Spin in2,PDT::Spin out1, PDT::Spin out2,PDT::Spin out3, PDT::Spin out4, PDT::Spin out5) { _nout=5; _inspin.resize(2); _inspin[0]=in1; _inspin[1]=in2; _outspin.push_back(out1); _outspin.push_back(out2); _outspin.push_back(out3); _outspin.push_back(out4); _outspin.push_back(out5); setMESize(); } /** * Constructor for 2-6 scattering. * @param in1 \f$2S+1\f$ for the first incoming particle. * @param in2 \f$2S+1\f$ for the second incoming particle. * @param out1 \f$2S+1\f$ for the first outgoing particle. * @param out2 \f$2S+1\f$ for the second outgoing particle. * @param out3 \f$2S+1\f$ for the third outgoing particle. * @param out4 \f$2S+1\f$ for the fourth outgoing particle. * @param out5 \f$2S+1\f$ for the fifth outgoing particle. * @param out6 \f$2S+1\f$ for the sixth outgoing particle. */ ProductionMatrixElement(PDT::Spin in1,PDT::Spin in2,PDT::Spin out1, PDT::Spin out2,PDT::Spin out3, PDT::Spin out4, PDT::Spin out5, PDT::Spin out6) { _nout=6; _inspin.resize(2); _inspin[0]=in1; _inspin[1]=in2; _outspin.push_back(out1); _outspin.push_back(out2); _outspin.push_back(out3); _outspin.push_back(out4); _outspin.push_back(out5); _outspin.push_back(out6); setMESize(); } /** * Constructor for 2-n scattering. * @param in1 \f$2S+1\f$ for the first incoming particle. * @param in2 \f$2S+1\f$ for the second incoming particle. * @param out A vector containing \f$2S+1\f$ for the outgoing particles. */ ProductionMatrixElement(PDT::Spin in1,PDT::Spin in2,vector<PDT::Spin> out) { _inspin.resize(2); _nout=out.size(); _inspin[0]=in1; _inspin[1]=in2; _outspin=out; setMESize(); } /** * Default constructor. */ ProductionMatrixElement() {}; //@} public: /** @name Access to the spins of the particles. */ //@{ /** * Get the spins of the incoming particles particle * @return A vector containing \f$2S+1\f$ for the two incoming particles. */ vector<PDT::Spin> inspin() {return _inspin;} /** * Get the spins of the outgoing particles. * @return A vector containing \f$2S+1\f$ for the outgoing particles. */ vector<PDT::Spin> outspin() {return _outspin;} //@} public: /** @name Access to the individual helicity components. */ //@{ /** * Access the helicity components for a 2-1 scattering. This method supplies * the component but does not allow it to be changed. * @param in1 The helicity of the first incoming particle. * @param in2 The helicity of the second incoming particle. * @param out The helicity of the outgoing particle. * @return The matrix element for the given helicities. */ Complex operator () (unsigned int in1,unsigned int in2, unsigned int out) const { assert(_outspin.size()==1); unsigned int iloc = in1*_constants[1] + in2*_constants[2] + out*_constants[3]; assert(iloc<_matrixelement.size()); return _matrixelement[iloc]; } /** * Access the helicity components for a 2-1 scattering. This method supplies * the component and allows it to be changed. * @param in1 The helicity of the first incoming particle. * @param in2 The helicity of the second incoming particle. * @param out The helicity of the outgoing particle. * @return The matrix element for the given helicities. */ Complex & operator () (unsigned int in1,unsigned int in2, unsigned int out) { assert(_outspin.size()==1); unsigned int iloc = in1*_constants[1] + in2*_constants[2] + out*_constants[3]; assert(iloc<_matrixelement.size()); return _matrixelement[iloc]; } /** * Access the helicity components for a 2-2 scattering. This method supplies * the component but does not allow it to be changed. * @param in1 The helicity of the first incoming particle. * @param in2 The helicity of the second incoming particle. * @param out1 The helicity of the first outgoing particle. * @param out2 The helicity of the second outgoing particle. * @return The matrix element for the given helicities. */ Complex operator () (unsigned int in1,unsigned int in2, unsigned int out1,unsigned int out2) const { assert(_outspin.size()==2); unsigned int iloc = in1*_constants[1] + in2*_constants[2] + out1*_constants[3] + out2*_constants[4]; assert(iloc<_matrixelement.size()); return _matrixelement[iloc]; } /** * Access the helicity components for a 2-2 scattering. This method supplies * the component and allows it to be changed. * @param in1 The helicity of the first incoming particle. * @param in2 The helicity of the second incoming particle. * @param out1 The helicity of the first outgoing particle. * @param out2 The helicity of the second outgoing particle. * @return The matrix element for the given helicities. */ Complex & operator () (unsigned int in1,unsigned int in2, unsigned int out1,unsigned int out2) { assert(_outspin.size()==2); unsigned int iloc = in1*_constants[1] + in2*_constants[2] + out1*_constants[3] + out2*_constants[4]; assert(iloc<_matrixelement.size()); return _matrixelement[iloc]; } /** * Access the helicity components for a 2-3 scattering. This method supplies * the component but does not allow it to be changed. * @param in1 The helicity of the first incoming particle. * @param in2 The helicity of the second incoming particle. * @param out1 The helicity of the first outgoing particle. * @param out2 The helicity of the second outgoing particle. * @param out3 The helicity of the third outgoing particle. * @return The matrix element for the given helicities. */ Complex operator () (unsigned int in1,unsigned int in2, unsigned int out1,unsigned int out2, unsigned int out3) const { assert(_outspin.size()==3); vector<unsigned int> ivec(5); ivec[0]=in1; ivec[1]=in2; ivec[2]=out1; ivec[3]=out2; ivec[4]=out3; return (*this)(ivec); } /** * Access the helicity components for a 2-3 scattering. This method supplies * the component and allows it to be changed. * @param in1 The helicity of the first incoming particle. * @param in2 The helicity of the second incoming particle. * @param out1 The helicity of the first outgoing particle. * @param out2 The helicity of the second outgoing particle. * @param out3 The helicity of the third outgoing particle. * @return The matrix element for the given helicities. */ Complex & operator () (unsigned int in1,unsigned int in2, unsigned int out1,unsigned int out2, unsigned int out3) { assert(_outspin.size()==3); vector<unsigned int> ivec(5); ivec[0]=in1; ivec[1]=in2; ivec[2]=out1; ivec[3]=out2; ivec[4]=out3; return (*this)(ivec); } /** * Access the helicity components for a 2-4 scattering. This method supplies * the component but does not allow it to be changed. * @param in1 The helicity of the first incoming particle. * @param in2 The helicity of the second incoming particle. * @param out1 The helicity of the first outgoing particle. * @param out2 The helicity of the second outgoing particle. * @param out3 The helicity of the third outgoing particle. * @param out4 The helicity of the fourth outgoing particle. * @return The matrix element for the given helicities. */ Complex operator () (unsigned int in1,unsigned int in2, unsigned int out1,unsigned int out2, unsigned int out3,unsigned int out4) const { assert(_outspin.size()==4); vector<unsigned int> ivec(6); ivec[0]=in1; ivec[1]=in2; ivec[2]=out1; ivec[3]=out2; ivec[4]=out3; ivec[5]=out4; return (*this)(ivec); } /** * Access the helicity components for a 2-4 scattering. This method supplies * the component and allows it to be changed. * @param in1 The helicity of the first incoming particle. * @param in2 The helicity of the second incoming particle. * @param out1 The helicity of the first outgoing particle. * @param out2 The helicity of the second outgoing particle. * @param out3 The helicity of the third outgoing particle. * @param out4 The helicity of the fourth outgoing particle. * @return The matrix element for the given helicities. */ Complex & operator () (unsigned int in1,unsigned int in2, unsigned int out1,unsigned int out2, unsigned int out3, unsigned int out4) { assert(_outspin.size()==4); vector<unsigned int> ivec(6); ivec[0]=in1; ivec[1]=in2; ivec[2]=out1; ivec[3]=out2; ivec[4]=out3; ivec[5]=out4; return (*this)(ivec); } /** * Access the helicity components for a 2-5 scattering. This method supplies * the component but does not allow it to be changed. * @param in1 The helicity of the first incoming particle. * @param in2 The helicity of the second incoming particle. * @param out1 The helicity of the first outgoing particle. * @param out2 The helicity of the second outgoing particle. * @param out3 The helicity of the third outgoing particle. * @param out4 The helicity of the fourth outgoing particle. * @param out5 The helicity of the fifth outgoing particle. * @return The matrix element for the given helicities. */ Complex operator () (unsigned int in1,unsigned int in2, unsigned int out1,unsigned int out2, unsigned int out3,unsigned int out4, unsigned int out5) const { assert(_outspin.size()==5); vector<unsigned int> ivec(7); ivec[0]=in1; ivec[1]=in2; ivec[2]=out1; ivec[3]=out2; ivec[4]=out3; ivec[5]=out4; ivec[6]=out5; return (*this)(ivec); } /** * Access the helicity components for a 2-5 scattering. This method supplies * the component and allows it to be changed. * @param in1 The helicity of the first incoming particle. * @param in2 The helicity of the second incoming particle. * @param out1 The helicity of the first outgoing particle. * @param out2 The helicity of the second outgoing particle. * @param out3 The helicity of the third outgoing particle. * @param out4 The helicity of the fourth outgoing particle. * @param out5 The helicity of the fifth outgoing particle. * @return The matrix element for the given helicities. */ Complex & operator () (unsigned int in1,unsigned int in2, unsigned int out1,unsigned int out2, unsigned int out3, unsigned int out4, unsigned int out5) { assert(_outspin.size()==5); vector<unsigned int> ivec(7); ivec[0]=in1; ivec[1]=in2; ivec[2]=out1; ivec[3]=out2; ivec[4]=out3; ivec[5]=out4; ivec[6]=out5; return (*this)(ivec); } /** * Access the helicity components for a 2-6 scattering. This method supplies * the component but does not allow it to be changed. * @param in1 The helicity of the first incoming particle. * @param in2 The helicity of the second incoming particle. * @param out1 The helicity of the first outgoing particle. * @param out2 The helicity of the second outgoing particle. * @param out3 The helicity of the third outgoing particle. * @param out4 The helicity of the fourth outgoing particle. * @param out5 The helicity of the fifth outgoing particle. * @param out6 The helicity of the sixth outgoing particle. * @return The matrix element for the given helicities. */ Complex operator () (unsigned int in1,unsigned int in2, unsigned int out1,unsigned int out2, unsigned int out3,unsigned int out4, unsigned int out5,unsigned int out6) const { assert(_outspin.size()==6); vector<unsigned int> ivec(8); ivec[0]=in1; ivec[1]=in2; ivec[2]=out1; ivec[3]=out2; ivec[4]=out3; ivec[5]=out4; ivec[6]=out5; ivec[7]=out6; return (*this)(ivec); } /** * Access the helicity components for a 2-6 scattering. This method supplies * the component and allows it to be changed. * @param in1 The helicity of the first incoming particle. * @param in2 The helicity of the second incoming particle. * @param out1 The helicity of the first outgoing particle. * @param out2 The helicity of the second outgoing particle. * @param out3 The helicity of the third outgoing particle. * @param out4 The helicity of the fourth outgoing particle. * @param out5 The helicity of the fifth outgoing particle. * @param out6 The helicity of the sixth outgoing particle. * @return The matrix element for the given helicities. */ Complex & operator () (unsigned int in1,unsigned int in2, unsigned int out1,unsigned int out2, unsigned int out3, unsigned int out4, unsigned int out5, unsigned int out6) { assert(_outspin.size()==6); vector<unsigned int> ivec(8); ivec[0]=in1; ivec[1]=in2; ivec[2]=out1; ivec[3]=out2; ivec[4]=out3; ivec[5]=out4; ivec[6]=out5; ivec[7]=out6; return (*this)(ivec); } /** * Access the helicity components for a 2-n scattering. This method supplies * the component but does not allow it to be changed. * @param hel The helicities of the incoming and outgoing particles * @return The matrix element for the given helicities. */ Complex operator () (vector<unsigned int> hel) const { assert(_outspin.size() == hel.size()-2); unsigned int iloc(0),ix; // incoming and outgoing particles for(ix=0;ix<hel.size();++ix) iloc += hel[ix]*_constants[ix+1]; assert(iloc<_matrixelement.size()); return _matrixelement[iloc]; } /** * Access the helicity components for a 2-n scattering. This method supplies * the component and allows it to be changed. * @param hel The helicities of the incoming and outgoing particles * @return The matrix element for the given helicities. */ Complex & operator () (vector<unsigned int> hel) { assert(_outspin.size() == hel.size()-2); unsigned int iloc=0,ix; // incoming particles for(ix=0;ix<hel.size();++ix) iloc += hel[ix]*_constants[ix+1]; assert(iloc<_matrixelement.size()); return _matrixelement[iloc]; } //@} public: /** * Calculate the decay matrix for an incoming particle. */ RhoDMatrix calculateDMatrix(int,const RhoDMatrix &, const vector<RhoDMatrix> &) const; /** * Calculate the rho matrix for a given outgoing particle. */ RhoDMatrix calculateRhoMatrix(int,const RhoDMatrix &, const RhoDMatrix &, const vector<RhoDMatrix> &) const; /** * Compute the spin averaged matrix element */ double average() const; /** * Compute the spin average matrix element */ double average(const RhoDMatrix & in1, const RhoDMatrix & in2) const; /** * Compute the spin average matrix element */ Complex average(const ProductionMatrixElement & me2, const RhoDMatrix & in1, const RhoDMatrix & in2) const; public: /** * Reset the matrix element. */ void reset(const ProductionMatrixElement & x) const { _nout = x._nout; _inspin = x._inspin; _outspin = x._outspin; _matrixelement = x._matrixelement; _constants = x._constants; } /** * Standard Init function used to initialize the interfaces. */ static void Init(); private: /** * Set the size of the vector containing the matrix element. */ void setMESize() { unsigned int ix; int isize=_inspin[0]*_inspin[1]; for(ix=0;ix<_outspin.size();++ix) isize*=_outspin[ix]; // zero the matrix element _matrixelement.resize(isize,0.); // set up the constants for the mapping of helicity to vectro index _constants.resize(_outspin.size()+3); unsigned int temp=1; for(ix=_outspin.size()+1;ix>1;--ix) { temp*=_outspin[ix-2]; _constants[ix]=temp; } temp*=_inspin[1];_constants[1]=temp; temp*=_inspin[0];_constants[0]=temp; _constants[_outspin.size()+2]=1; } private: /** * Number of outgoing particles. */ mutable unsigned int _nout; /** * Spin of the incoming particles as 2s+1. */ mutable vector<PDT::Spin> _inspin; /** * Spins of the outgoing particles. */ mutable vector<PDT::Spin> _outspin; /** * Storage of the matrix element, a vector is better for memory usage. */ mutable vector<Complex> _matrixelement; /** * Constants needed to map the index of the vector to a helicity structure. */ mutable vector<int> _constants; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of ProductionMatrixElement. */ template <> struct BaseClassTrait<Herwig::ProductionMatrixElement,1> { /** Typedef of the base class of ProductionMatrixElement. */ typedef Base NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ProductionMatrixElement> : public ClassTraitsBase<Herwig::ProductionMatrixElement> { /** * Return the class name. */ static string className() { return "Herwig::ProductionMatrixElement"; } }; /** @endcond */ } #endif /* HERWIG_ProductionMatrixElement_H */ ����������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Makefile.am�������������������������������������������������������0000644�0001750�0001750�00000000517�11754474776�021616� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������SUBDIRS = General Lepton Hadron DIS Powheg Gamma Matchbox noinst_LTLIBRARIES = libHwME.la libHwME_la_SOURCES = \ HwMEBase.h HwMEBase.fh HwMEBase.cc \ MEfftoVH.h MEfftoVH.cc \ MEfftoffH.h MEfftoffH.cc \ HardVertex.fh HardVertex.h HardVertex.cc \ ProductionMatrixElement.h ProductionMatrixElement.cc \ DrellYanBase.h DrellYanBase.cc ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/HwMEBase.h��������������������������������������������������������0000644�0001750�0001750�00000017261�11754474776�021332� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_HwMEBase_H #define HERWIG_HwMEBase_H // // This is the declaration of the HwMEBase class. // #include "ThePEG/MatrixElement/MEBase.h" #include "Herwig++/Shower/Base/Branching.h" #include "Herwig++/Shower/Base/ShowerKinematics.h" #include "Herwig++/Shower/Base/ShowerTree.h" #include "Herwig++/Shower/Base/HardTree.h" #include "HwMEBase.fh" namespace Herwig { using namespace ThePEG; /** * The HwMEBase class serves a number of purposes * - it implements the phase space for \f$2\to2\f$ scattering processes * - it provides virtual members for the implementation of hard radiation * - it gives us greater control over the masses of the outgoing * particles so that they can be * - set massless where required by gauge invariance * - have their off-shell masses generated using the sophisticated approaches * available in Herwig++. * * @see \ref HwMEBaseInterfaces "The interfaces" * defined for HwMEBase. */ class HwMEBase: public MEBase { public: /** * Default constructor. */ HwMEBase() : lastTHat_(ZERO), lastUHat_(ZERO), lastPhi_(0.0), rescaleOption_(1) {} /** @name Virtual functions required by the MEBase class. */ //@{ /** * The number of internal degreed of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given 'nDim()' uniform * random numbers in the interval ]0,1[. To help the phase space * generator, the 'dSigHatDR()' should be a smooth function of these * numbers, although this is not strictly necessary. Return * false if the chosen points failed the kinematical cuts. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(). Uses * me(). */ virtual CrossSection dSigHatDR() const; /** * Set the typed and momenta of the incoming and outgoing partons to * be used in subsequent calls to me() and colourGeometries() * according to the associated XComb object. */ virtual void setKinematics(); //@} /** * Virtual members to be overridden by inheriting classes * which implement hard corrections */ //@{ /** * Has a POWHEG style correction */ virtual bool hasPOWHEGCorrection() {return false;} /** * Has an old fashioned ME correction */ virtual bool hasMECorrection() {return false;} /** * Initialize the ME correction */ virtual void initializeMECorrection(ShowerTreePtr , double & , double & ) {} /** * Apply the hard matrix element correction to a given hard process or decay */ virtual void applyHardMatrixElementCorrection(ShowerTreePtr) {} /** * Apply the soft matrix element correction * @param initial The particle from the hard process which started the * shower * @param parent The initial particle in the current branching * @param br The branching struct * @return If true the emission should be vetoed */ virtual bool softMatrixElementVeto(ShowerProgenitorPtr initial, ShowerParticlePtr parent, Branching br); /** * Apply the POWHEG style correction */ virtual HardTreePtr generateHardest(ShowerTreePtr) { return HardTreePtr(); } //@} 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 Access cached values in of the last set phase space point. */ //@{ /** * Return the \f$\hat{t}\f$ of the last set phase space point. */ Energy2 tHat() const { return lastTHat_; } /** * Return the \f$\hat{u}\f$ of the last set phase space point. */ Energy2 uHat() const { return lastUHat_; } /** * Return the azimuth angle of the last set phase space point. */ double phi() const { return lastPhi_; } //@} /** @name Set the cached values in of the last set phase space point. */ //@{ /** * Set the \f$\hat{t}\f$ of the last set phase space point. */ void tHat(Energy2 e2) { lastTHat_ = e2; } /** * Set the \f$\hat{u}\f$ of the last set phase space point. */ void uHat(Energy2 e2) { lastUHat_ = e2; } /** * Set the azimuth angle of the last set phase space point. */ void phi(double phi) { lastPhi_ = phi; } //@} /** * Set the treatment of the outgoing masses * @param iopt The option for the treatment of the mass */ void massOption(vector<unsigned int> iopt) { massOption_ = iopt; } /** * Rescaled momenta for the helicity ME */ //@{ /** * Set the treatment of the rescaling of the momenta for * the matrix element calculation * @param iopt The rescaling option */ void rescalingOption(unsigned int iopt) { rescaleOption_=iopt; } /** * rescale the momenta for the computation of the helicity matrix element */ bool rescaleMomenta(const vector<Lorentz5Momentum> &, const cPDVector &); /** * Access to the rescaled momenta */ const vector<Lorentz5Momentum> & rescaledMomenta() const { return rescaledMomenta_; } //@} /** * Generate the masses of the particles */ bool generateMasses(vector<Energy> & masses, double & mjac, const double *r); /** * Used internally by generateKinematics, after calculating the * limits on cos(theta). */ virtual double getCosTheta(double cthmin, double cthmax, const double * r); private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class without persistent data. */ static AbstractClassDescription<HwMEBase> initHwMEBase; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ HwMEBase & operator=(const HwMEBase &); private: /** * Option for the treatment of the particle masses */ vector<unsigned int> massOption_; /** * The \f$\hat{t}\f$ of the last set phase space point. */ Energy2 lastTHat_; /** * The \f$\hat{u}\f$ of the last set phase space point. */ Energy2 lastUHat_; /** * The azimuth angle of the last set phase space point. */ double lastPhi_; /** * Produced to produce rescaled momenta */ unsigned int rescaleOption_; /** * Rescaled momenta for use in ME calculations */ vector<Lorentz5Momentum> rescaledMomenta_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of HwMEBase. */ template <> struct BaseClassTrait<Herwig::HwMEBase,1> { /** Typedef of the first base class of HwMEBase. */ typedef MEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the HwMEBase class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::HwMEBase> : public ClassTraitsBase<Herwig::HwMEBase> { /** Return a platform-independent class name */ static string className() { return "Herwig::HwMEBase"; } }; /** @endcond */ } #endif /* HERWIG_HwMEBase_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/HwMEBase.fh�������������������������������������������������������0000644�0001750�0001750�00000000437�11754474776�021475� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the HwMEBase class. // #ifndef HERWIG_HwMEBase_FH #define HERWIG_HwMEBase_FH #include "ThePEG/Config/ThePEG.h" namespace Herwig { using namespace ThePEG; class HwMEBase; ThePEG_DECLARE_POINTERS(HwMEBase,HwMEBasePtr); } #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/HardVertex.cc�����������������������������������������������������0000644�0001750�0001750�00000003632�11754474776�022146� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HardVertex.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the HardVertex class. // // Author: Peter Richardson // #include "ThePEG/EventRecord/SpinInfo.h" #include "HardVertex.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace Herwig; NoPIOClassDescription<HardVertex> HardVertex::initHardVertex; // Definition of the static class description member. void HardVertex::Init() { static ClassDocumentation<HardVertex> documentation ("The HardVertex class implements the vertex for a hard " "interaction for the Herwig++ spin correlation algorithm"); } // method to get the rho matrix for a given outgoing particle RhoDMatrix HardVertex::getRhoMatrix(int i,bool) const { // get the rho matrices for the outgoing particles vector<RhoDMatrix> rhoout(outgoing().size()-1); for(int ix=0,N=outgoing().size();ix<N;++ix) { if(ix<i) rhoout[ix ] = outgoing()[ix]->DMatrix(); else if(ix>i) rhoout[ix-1] = outgoing()[ix]->DMatrix(); } // calculate the spin density matrix return _matrixelement. calculateRhoMatrix(i, incoming()[0]->rhoMatrix(), incoming()[1]->rhoMatrix(),rhoout); } // method to get the D matrix for an incoming particle RhoDMatrix HardVertex::getDMatrix(int i) const { // get rho rho matrices for the outgoing particles vector<RhoDMatrix> rhoout(outgoing().size()); for(unsigned int ix=0,N=outgoing().size();ix<N;++ix) rhoout[ix] = outgoing()[ix]->DMatrix(); // calculate the decay matrix return _matrixelement. calculateDMatrix(i,incoming()[1]->rhoMatrix(),rhoout); } ������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/DIS/��������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464207�020164� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/DIS/Makefile.in���������������������������������������������������0000644�0001750�0001750�00000051357�11756461677�022254� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/DIS DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwMEDIS_la_LIBADD = am_HwMEDIS_la_OBJECTS = DISBase.lo MENeutralCurrentDIS.lo \ MEChargedCurrentDIS.lo HwMEDIS_la_OBJECTS = $(am_HwMEDIS_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwMEDIS_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(HwMEDIS_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwMEDIS_la_SOURCES) DIST_SOURCES = $(HwMEDIS_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwMEDIS.la HwMEDIS_la_SOURCES = \ DISBase.h DISBase.cc \ MENeutralCurrentDIS.cc MENeutralCurrentDIS.h \ MEChargedCurrentDIS.cc MEChargedCurrentDIS.h HwMEDIS_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 4:1:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/DIS/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/DIS/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwMEDIS.la: $(HwMEDIS_la_OBJECTS) $(HwMEDIS_la_DEPENDENCIES) $(EXTRA_HwMEDIS_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwMEDIS_la_LINK) -rpath $(pkglibdir) $(HwMEDIS_la_OBJECTS) $(HwMEDIS_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DISBase.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEChargedCurrentDIS.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MENeutralCurrentDIS.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/DIS/MENeutralCurrentDIS.cc����������������������������������������0000644�0001750�0001750�00000030435�11754474775�024250� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MENeutralCurrentDIS class. // #include "MENeutralCurrentDIS.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/PDF/PolarizedBeamParticleData.h" using namespace Herwig; MENeutralCurrentDIS::MENeutralCurrentDIS() : _minflavour(1), _maxflavour(5), _gammaZ(0), _sinW(0.), _cosW(0.), _mz2(ZERO) { vector<unsigned int> mopt(2,0); mopt[0] = 1; massOption(mopt); } void MENeutralCurrentDIS::doinit() { DISBase::doinit(); _z0 = getParticleData(ThePEG::ParticleID::Z0); _gamma = getParticleData(ThePEG::ParticleID::gamma); // cast the SM pointer to the Herwig SM pointer tcHwSMPtr hwsm=ThePEG::dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if(!hwsm) throw InitException() << "Must be the Herwig++ StandardModel class in " << "MENeutralCurrentDIS::doinit" << Exception::abortnow; // vertices _theFFZVertex = hwsm->vertexFFZ(); _theFFPVertex = hwsm->vertexFFP(); // electroweak parameters _sinW = generator()->standardModel()->sin2ThetaW(); _cosW = sqrt(1.-_sinW); _sinW = sqrt(_sinW); _mz2 = sqr(_z0->mass()); } void MENeutralCurrentDIS::getDiagrams() const { // which intermediates to include bool gamma = _gammaZ==0 || _gammaZ==1; bool Z0 = _gammaZ==0 || _gammaZ==2; // create the diagrams for(int ix=11;ix<=14;++ix) { for(unsigned int iz=0;iz<2;++iz) { tPDPtr lep = getParticleData(ix); if(iz==1) lep = lep->CC(); for(int iy=_minflavour;iy<=_maxflavour;++iy) { tPDPtr quark = getParticleData(iy); // lepton quark scattering via gamma and Z if(gamma) add(new_ptr((Tree2toNDiagram(3), lep, _gamma, quark, 1, lep, 2, quark, -1))); if(Z0) add(new_ptr((Tree2toNDiagram(3), lep, _z0 , quark, 1, lep, 2, quark, -2))); // lepton antiquark scattering via gamma and Z quark = quark->CC(); if(gamma) add(new_ptr((Tree2toNDiagram(3), lep, _gamma, quark, 1, lep, 2, quark, -3))); if(Z0) add(new_ptr((Tree2toNDiagram(3), lep, _z0 , quark, 1, lep, 2, quark, -4))); } } } } unsigned int MENeutralCurrentDIS::orderInAlphaS() const { return 0; } unsigned int MENeutralCurrentDIS::orderInAlphaEW() const { return 2; } Selector<const ColourLines *> MENeutralCurrentDIS::colourGeometries(tcDiagPtr diag) const { static ColourLines c1("3 5"); static ColourLines c2("-3 -5"); Selector<const ColourLines *> sel; if ( diag->id() == -1 || diag->id() == -2 ) sel.insert(1.0, &c1); else sel.insert(1.0, &c2); return sel; } void MENeutralCurrentDIS::persistentOutput(PersistentOStream & os) const { os << _minflavour << _maxflavour << _gammaZ << _theFFZVertex << _theFFPVertex << _gamma << _z0 << _sinW << _cosW << ounit(_mz2,GeV2); } void MENeutralCurrentDIS::persistentInput(PersistentIStream & is, int) { is >> _minflavour >> _maxflavour >> _gammaZ >> _theFFZVertex >> _theFFPVertex >> _gamma >> _z0 >> _sinW >> _cosW >> iunit(_mz2,GeV2) ; } ClassDescription<MENeutralCurrentDIS> MENeutralCurrentDIS::initMENeutralCurrentDIS; // Definition of the static class description member. void MENeutralCurrentDIS::Init() { static ClassDocumentation<MENeutralCurrentDIS> documentation ("The MENeutralCurrentDIS class implements the matrix elements for leading-order " "neutral current deep inelastic scattering."); static Parameter<MENeutralCurrentDIS,int> interfaceMaxFlavour ("MaxFlavour", "The highest incoming quark flavour this matrix element is allowed to handle", &MENeutralCurrentDIS::_maxflavour, 5, 1, 5, false, false, Interface::limited); static Parameter<MENeutralCurrentDIS,int> interfaceMinFlavour ("MinFlavour", "The lightest incoming quark flavour this matrix element is allowed to handle", &MENeutralCurrentDIS::_minflavour, 1, 1, 5, false, false, Interface::limited); static Switch<MENeutralCurrentDIS,unsigned int> interfaceGammaZ ("GammaZ", "Which terms to include", &MENeutralCurrentDIS::_gammaZ, 0, false, false); static SwitchOption interfaceGammaZAll (interfaceGammaZ, "All", "Include both gamma and Z terms", 0); static SwitchOption interfaceGammaZGamma (interfaceGammaZ, "Gamma", "Only include the photon", 1); static SwitchOption interfaceGammaZZ (interfaceGammaZ, "Z", "Only include the Z", 2); } Selector<MEBase::DiagramIndex> MENeutralCurrentDIS::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if ( diags[i]->id() == -1 || diags[i]->id() == -3 ) sel.insert(meInfo()[0], i); else if ( diags[i]->id() == -2 || diags[i]->id() == -4 ) sel.insert(meInfo()[1], i); } return sel; } double MENeutralCurrentDIS::helicityME(vector<SpinorWaveFunction> & f1, vector<SpinorWaveFunction> & f2, vector<SpinorBarWaveFunction> & a1, vector<SpinorBarWaveFunction> & a2, bool lorder, bool qorder, bool calc) const { // scale Energy2 mb2(scale()); // matrix element to be stored ProductionMatrixElement menew (PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); ProductionMatrixElement gamma (PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); ProductionMatrixElement Zboson(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); // which intermediates to include bool gam = _gammaZ==0 || _gammaZ==1; bool Z0 = _gammaZ==0 || _gammaZ==2; // declare the variables we need VectorWaveFunction inter[2]; double me[3]={0.,0.,0.}; Complex diag1,diag2; // sum over helicities to get the matrix element unsigned int hel[4]; unsigned int lhel1,lhel2,qhel1,qhel2; for(lhel1=0;lhel1<2;++lhel1) { for(lhel2=0;lhel2<2;++lhel2) { // intermediate for photon if(gam) inter[0]=_theFFPVertex->evaluate(mb2,1,_gamma,f1[lhel1],a1[lhel2]); // intermediate for Z if(Z0) inter[1]=_theFFZVertex->evaluate(mb2,1,_z0 ,f1[lhel1],a1[lhel2]); for(qhel1=0;qhel1<2;++qhel1) { for(qhel2=0;qhel2<2;++qhel2) { hel[0] = lhel1; hel[1] = qhel1; hel[2] = lhel2; hel[3] = qhel2; if(!lorder) swap(hel[0],hel[2]); if(!qorder) swap(hel[1],hel[3]); // first the photon exchange diagram diag1 = gam ? _theFFPVertex->evaluate(mb2,f2[qhel1],a2[qhel2],inter[0]) : 0.; // then the Z exchange diagram diag2 = Z0 ? _theFFZVertex->evaluate(mb2,f2[qhel1],a2[qhel2],inter[1]) : 0.; // add up squares of individual terms me[1] += norm(diag1); gamma (hel[0],hel[1],hel[2],hel[3]) = diag1; me[2] += norm(diag2); Zboson(hel[0],hel[1],hel[2],hel[3]) = diag2; // the full thing including interference diag1 += diag2; me[0] += norm(diag1); menew(hel[0],hel[1],hel[2],hel[3]) = diag1; } } } } // spin and colour factor double colspin = 0.25; // results for(int ix=0;ix<3;++ix) me[ix] *= colspin; tcPolarizedBeamPDPtr beam[2] = {dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[0]), dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[1])}; if( beam[0] || beam[1] ) { RhoDMatrix rho[2] = {beam[0] ? beam[0]->rhoMatrix() : RhoDMatrix(mePartonData()[0]->iSpin()), beam[1] ? beam[1]->rhoMatrix() : RhoDMatrix(mePartonData()[1]->iSpin())}; me[0] = menew .average(rho[0],rho[1]); me[1] = gamma .average(rho[0],rho[1]); me[2] = Zboson.average(rho[0],rho[1]); } DVector save; save.push_back(me[1]); save.push_back(me[2]); meInfo(save); if(calc) _me.reset(menew); // analytic expression for testing // double test = 8.*sqr(4.*Constants::pi*generator()->standardModel()->alphaEM(mb2))* // sqr(double(mePartonData()[1]->iCharge())/3.)/sqr(tHat()) // *(sqr(sHat())+sqr(uHat())+4.*sqr(mePartonData()[0]->mass())*tHat())/4.; // cerr << "testing me " << me[0]/test << "\n"; return me[0]; } double MENeutralCurrentDIS::me2() const { vector<SpinorWaveFunction> f1,f2; vector<SpinorBarWaveFunction> a1,a2; bool lorder,qorder; SpinorWaveFunction l1,q1; SpinorBarWaveFunction l2,q2; // lepton wave functions if(mePartonData()[0]->id()>0) { lorder=true; l1 = SpinorWaveFunction (meMomenta()[0],mePartonData()[0],incoming); l2 = SpinorBarWaveFunction(meMomenta()[2],mePartonData()[2],outgoing); } else { lorder=false; l1 = SpinorWaveFunction (meMomenta()[2],mePartonData()[2],outgoing); l2 = SpinorBarWaveFunction(meMomenta()[0],mePartonData()[0],incoming); } // quark wave functions if(mePartonData()[1]->id()>0) { qorder = true; q1 = SpinorWaveFunction (meMomenta()[1],mePartonData()[1],incoming); q2 = SpinorBarWaveFunction(meMomenta()[3],mePartonData()[3],outgoing); } else { qorder = false; q1 = SpinorWaveFunction (meMomenta()[3],mePartonData()[3],outgoing); q2 = SpinorBarWaveFunction(meMomenta()[1],mePartonData()[1],incoming); } // wavefunctions for various helicities for(unsigned int ix=0;ix<2;++ix) { l1.reset(ix); f1.push_back(l1); l2.reset(ix); a1.push_back(l2); q1.reset(ix); f2.push_back(q1); q2.reset(ix); a2.push_back(q2); } return helicityME(f1,f2,a1,a2,lorder,qorder,false); } void MENeutralCurrentDIS::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); hard.push_back(sub->outgoing()[1]); unsigned int order[4]={0,1,2,3}; bool lorder(true),qorder(true); if(hard[0]->id()<0) { swap(order[0],order[2]); lorder = false; } if(hard[1]->id()<0) { swap(order[1],order[3]); qorder = false; } vector<SpinorWaveFunction> f1,f2; vector<SpinorBarWaveFunction> a1,a2; SpinorWaveFunction (f1,hard[order[0]],incoming,!lorder,true); SpinorWaveFunction (f2,hard[order[1]],incoming,!qorder,true); SpinorBarWaveFunction(a1,hard[order[2]],outgoing, lorder,true); SpinorBarWaveFunction(a2,hard[order[3]],outgoing, qorder,true); helicityME(f1,f2,a1,a2,lorder,qorder,false); // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(_me); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) { tSpinPtr spin = hard[ix]->spinInfo(); if(ix<2) { tcPolarizedBeamPDPtr beam = dynamic_ptr_cast<tcPolarizedBeamPDPtr>(hard[ix]->dataPtr()); if(beam) spin->rhoMatrix() = beam->rhoMatrix(); } spin->productionVertex(hardvertex); } } double MENeutralCurrentDIS::A(tcPDPtr lin, tcPDPtr, tcPDPtr qin, tcPDPtr, Energy2 q2) const { // photon only if(_gammaZ==1) return 0.; // everything else double r = _gammaZ==0 || _gammaZ==2 ? double(q2/(q2+_mz2)) : 0.; double eL,eQ,cvL,caL,cvQ,caQ;; if(abs(lin->id())%2==0) { eL = _gammaZ==0 ? generator()->standardModel()->enu() : 0.; cvL = 0.25*generator()->standardModel()->vnu(); caL = 0.25*generator()->standardModel()->anu(); } else { eL = _gammaZ==0 ? generator()->standardModel()->ee() : 0.; cvL = 0.25*generator()->standardModel()->ve(); caL = 0.25*generator()->standardModel()->ae(); } if(abs(qin->id())%2==0) { eQ = _gammaZ==0 ? generator()->standardModel()->eu() : 0.; cvQ = 0.25*generator()->standardModel()->vu(); caQ = 0.25*generator()->standardModel()->au(); } else { eQ = _gammaZ==0 ? generator()->standardModel()->ed() : 0.; cvQ = 0.25*generator()->standardModel()->vd(); caQ = 0.25*generator()->standardModel()->ad(); } double output = 4.*r*caL*caQ*(eL*eQ+2.*r*cvL*cvQ/sqr(_sinW*_cosW)) /sqr(_sinW*_cosW)/(sqr(eL*eQ)+2.*eL*eQ*r/sqr(_cosW*_sinW)*cvL*cvQ +sqr(r/sqr(_cosW*_sinW))*(sqr(cvL)+sqr(caL))*(sqr(cvQ)+sqr(caQ))); if(qin->id()<0) output *= -1.; if(lin->id()<0) output *= -1.; return output; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/DIS/MENeutralCurrentDIS.h�����������������������������������������0000644�0001750�0001750�00000017265�11755203715�024101� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MENeutralCurrentDIS_H #define HERWIG_MENeutralCurrentDIS_H // // This is the declaration of the MENeutralCurrentDIS class. // #include "DISBase.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" namespace Herwig { using namespace ThePEG; /** * The MENeutralCurrentDIS class provides the matrix elements for * neutral current DIS. * * For consistency both the incoming and outgoing quarks are assumed to be massless. * * @see \ref MENeutralCurrentDISInterfaces "The interfaces" * defined for MENeutralCurrentDIS. */ class MENeutralCurrentDIS: public DISBase { public: /** * The default constructor. */ MENeutralCurrentDIS(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Matrix element for \f$\ell q\to \gamma/Z \to \ell q\f$. * @param f1 Fermion on lepton line * @param a1 Anti-fermion on lepton line * @param f2 Fermion on quark line * @param a2 Anti-fermion on quark line * @param lorder The order of particles on the lepton line * @param qorder The order of particles on the quark line * @param me Whether or not to calculate the matrix element for spin correlations */ double helicityME(vector<SpinorWaveFunction> & f1 , vector<SpinorWaveFunction> & f2, vector<SpinorBarWaveFunction> & a1 , vector<SpinorBarWaveFunction> & a2, bool lorder, bool qorder, bool me) const; /** * Option for treatment of \f$\gamma/Z\f$ terms */ inline unsigned int gammaZOption() const {return _gammaZ;} /** * Calculate the coefficient A for the correlations in the hard * radiation */ virtual double A(tcPDPtr lin, tcPDPtr lout, tcPDPtr qin, tcPDPtr qout, Energy2 scale) 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(); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MENeutralCurrentDIS> initMENeutralCurrentDIS; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MENeutralCurrentDIS & operator=(const MENeutralCurrentDIS &); private: /** * Pointer to the vertices for the helicity calculations */ //@{ /** * Pointer to the Z vertex */ AbstractFFVVertexPtr _theFFZVertex; /** * Pointer to the photon vertex */ AbstractFFVVertexPtr _theFFPVertex; //@} /** * Pointers to the intermediate resonances */ //@{ /** * Pointer to the Z ParticleData object */ tcPDPtr _z0; /** * Pointer to the photon ParticleData object */ tcPDPtr _gamma; //@} /** * Switches to control the particles in the hard process */ //@{ /** * Minimumflavour of the incoming quarks */ int _minflavour; /** * Maximum flavour of the incoming quarks */ int _maxflavour; /** * Whether to include both \f$Z^0\f$ and \f$\gamma\f$ or only one */ unsigned int _gammaZ; //@} /** * Matrix element for spin correlations */ ProductionMatrixElement _me; /** * Electroweak parameters */ //@{ /** * \f$\sin\theta_W\f$ */ double _sinW; /** * \f$\cos\theta_W\f$ */ double _cosW; /** * The square of the Z mass */ Energy2 _mz2; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MENeutralCurrentDIS. */ template <> struct BaseClassTrait<Herwig::MENeutralCurrentDIS,1> { /** Typedef of the first base class of MENeutralCurrentDIS. */ typedef Herwig::DISBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MENeutralCurrentDIS class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MENeutralCurrentDIS> : public ClassTraitsBase<Herwig::MENeutralCurrentDIS> { /** Return a platform-independent class name */ static string className() { return "Herwig::MENeutralCurrentDIS"; } /** * The name of a file containing the dynamic library where the class * MENeutralCurrentDIS is implemented. It may also include several, space-separated, * libraries if the class MENeutralCurrentDIS depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEDIS.so"; } }; /** @endcond */ } #endif /* HERWIG_MENeutralCurrentDIS_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/DIS/Makefile.am���������������������������������������������������0000644�0001750�0001750�00000000356�11755414046�022217� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwMEDIS.la HwMEDIS_la_SOURCES = \ DISBase.h DISBase.cc \ MENeutralCurrentDIS.cc MENeutralCurrentDIS.h \ MEChargedCurrentDIS.cc MEChargedCurrentDIS.h HwMEDIS_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 4:1:0 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/DIS/MEChargedCurrentDIS.cc����������������������������������������0000644�0001750�0001750�00000024006�11754474775�024170� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEChargedCurrentDIS class. // #include "MEChargedCurrentDIS.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/PDF/PolarizedBeamParticleData.h" using namespace Herwig; MEChargedCurrentDIS::MEChargedCurrentDIS() : _maxflavour(5), _massopt(0) { vector<unsigned int> mopt(2,1); mopt[1] = _massopt; massOption(mopt); } void MEChargedCurrentDIS::doinit() { DISBase::doinit(); _wp = getParticleData(ThePEG::ParticleID::Wplus ); _wm = getParticleData(ThePEG::ParticleID::Wminus); // cast the SM pointer to the Herwig SM pointer tcHwSMPtr hwsm=ThePEG::dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if(!hwsm) throw InitException() << "Must be the Herwig++ StandardModel class in " << "MEChargedCurrentDIS::doinit" << Exception::abortnow; // vertices _theFFWVertex = hwsm->vertexFFW(); } void MEChargedCurrentDIS::getDiagrams() const { // possible quarks typedef std::vector<pair<long,long> > Pairvector; Pairvector quarkpair; quarkpair.reserve(6); // don't even think of putting 'break' in here! switch(_maxflavour) { case 6: quarkpair.push_back(make_pair(ParticleID::s, ParticleID::t)); quarkpair.push_back(make_pair(ParticleID::d, ParticleID::t)); quarkpair.push_back(make_pair(ParticleID::b, ParticleID::t)); case 5: quarkpair.push_back(make_pair(ParticleID::b, ParticleID::c)); quarkpair.push_back(make_pair(ParticleID::b, ParticleID::u)); case 4: quarkpair.push_back(make_pair(ParticleID::s, ParticleID::c)); quarkpair.push_back(make_pair(ParticleID::d, ParticleID::c)); case 3: quarkpair.push_back(make_pair(ParticleID::s, ParticleID::u)); case 2: quarkpair.push_back(make_pair(ParticleID::d, ParticleID::u)); default: ; } // create the diagrams for(int il1=11;il1<=14;++il1) { int il2 = il1%2==0 ? il1-1 : il1+1; for(unsigned int iz=0;iz<2;++iz) { tcPDPtr lepin = iz==1 ? getParticleData(il1) : getParticleData(-il1); tcPDPtr lepout = iz==1 ? getParticleData(il2) : getParticleData(-il2); tcPDPtr inter = lepin->iCharge()-lepout->iCharge()==3 ? _wp : _wm; for(unsigned int iq=0;iq<quarkpair.size();++iq) { tcPDPtr first = getParticleData(quarkpair[iq].first ); tcPDPtr second = getParticleData(quarkpair[iq].second); if(inter==_wp) { add(new_ptr((Tree2toNDiagram(3), lepin, inter, first , 1, lepout, 2, second , -1))); add(new_ptr((Tree2toNDiagram(3), lepin, inter, second->CC(), 1, lepout, 2, first->CC(), -2))); } else { add(new_ptr((Tree2toNDiagram(3), lepin, inter, second , 1, lepout, 2, first , -1))); add(new_ptr((Tree2toNDiagram(3), lepin, inter, first->CC(), 1, lepout, 2, second->CC(), -2))); } } } } } unsigned int MEChargedCurrentDIS::orderInAlphaS() const { return 0; } unsigned int MEChargedCurrentDIS::orderInAlphaEW() const { return 2; } Selector<const ColourLines *> MEChargedCurrentDIS::colourGeometries(tcDiagPtr diag) const { static ColourLines c1("3 5"); static ColourLines c2("-3 -5"); Selector<const ColourLines *> sel; if ( diag->id() == -1 ) sel.insert(1.0, &c1); else sel.insert(1.0, &c2); return sel; } void MEChargedCurrentDIS::persistentOutput(PersistentOStream & os) const { os << _theFFWVertex << _maxflavour << _wp << _wm << _massopt; } void MEChargedCurrentDIS::persistentInput(PersistentIStream & is, int) { is >> _theFFWVertex >> _maxflavour >> _wp >> _wm >> _massopt; } ClassDescription<MEChargedCurrentDIS> MEChargedCurrentDIS::initMEChargedCurrentDIS; // Definition of the static class description member. void MEChargedCurrentDIS::Init() { static ClassDocumentation<MEChargedCurrentDIS> documentation ("The MEChargedCurrentDIS class implements the matrix elements " "for leading-order charged current deep inelastic scattering"); static Parameter<MEChargedCurrentDIS,unsigned int> interfaceMaxFlavour ( "MaxFlavour", "The heaviest incoming quark flavour this matrix element is allowed to handle " "(if applicable).", &MEChargedCurrentDIS::_maxflavour, 5, 2, 6, false, false, true); static Switch<MEChargedCurrentDIS,unsigned int> interfaceMassOption ("MassOption", "Option for the treatment of the mass of the outgoing quarks", &MEChargedCurrentDIS::_massopt, 0, false, false); static SwitchOption interfaceMassOptionMassless (interfaceMassOption, "Massless", "Treat the outgoing quarks as massless", 0); static SwitchOption interfaceMassOptionMassive (interfaceMassOption, "Massive", "Treat the outgoing quarks as massive", 1); } Selector<MEBase::DiagramIndex> MEChargedCurrentDIS::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) sel.insert(1., i); return sel; } double MEChargedCurrentDIS::helicityME(vector<SpinorWaveFunction> & f1, vector<SpinorWaveFunction> & f2, vector<SpinorBarWaveFunction> & a1, vector<SpinorBarWaveFunction> & a2, bool lorder, bool qorder, bool calc) const { // scale Energy2 mb2(scale()); // matrix element to be stored ProductionMatrixElement menew(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); // pick a W boson tcPDPtr ipart = (mePartonData()[0]->iCharge()-mePartonData()[1]->iCharge())==3 ? _wp : _wm; // declare the variables we need VectorWaveFunction inter; double me(0.); Complex diag; // sum over helicities to get the matrix element unsigned int hel[4]; unsigned int lhel1,lhel2,qhel1,qhel2; for(lhel1=0;lhel1<2;++lhel1) { for(lhel2=0;lhel2<2;++lhel2) { // intermediate W inter = _theFFWVertex->evaluate(mb2,3,ipart,f1[lhel1],a1[lhel2]); for(qhel1=0;qhel1<2;++qhel1) { for(qhel2=0;qhel2<2;++qhel2) { hel[0] = lhel1; hel[1] = qhel1; hel[2] = lhel2; hel[3] = qhel2; if(!lorder) swap(hel[0],hel[2]); if(!qorder) swap(hel[1],hel[3]); diag = _theFFWVertex->evaluate(mb2,f2[qhel1],a2[qhel2],inter); me += norm(diag); menew(hel[0],hel[1],hel[2],hel[3]) = diag; } } } } // spin and colour factor me *= 0.25; tcPolarizedBeamPDPtr beam[2] = {dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[0]), dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[1])}; if( beam[0] || beam[1] ) { RhoDMatrix rho[2] = {beam[0] ? beam[0]->rhoMatrix() : RhoDMatrix(mePartonData()[0]->iSpin()), beam[1] ? beam[1]->rhoMatrix() : RhoDMatrix(mePartonData()[1]->iSpin())}; me = menew.average(rho[0],rho[1]); } if(calc) _me.reset(menew); return me; } double MEChargedCurrentDIS::me2() const { vector<SpinorWaveFunction> f1,f2; vector<SpinorBarWaveFunction> a1,a2; bool lorder,qorder; SpinorWaveFunction l1,q1; SpinorBarWaveFunction l2,q2; // lepton wave functions if(mePartonData()[0]->id()>0) { lorder=true; l1 = SpinorWaveFunction (meMomenta()[0],mePartonData()[0],incoming); l2 = SpinorBarWaveFunction(meMomenta()[2],mePartonData()[2],outgoing); } else { lorder=false; l1 = SpinorWaveFunction (meMomenta()[2],mePartonData()[2],outgoing); l2 = SpinorBarWaveFunction(meMomenta()[0],mePartonData()[0],incoming); } // quark wave functions if(mePartonData()[1]->id()>0) { qorder = true; q1 = SpinorWaveFunction (meMomenta()[1],mePartonData()[1],incoming); q2 = SpinorBarWaveFunction(meMomenta()[3],mePartonData()[3],outgoing); } else { qorder = false; q1 = SpinorWaveFunction (meMomenta()[3],mePartonData()[3],outgoing); q2 = SpinorBarWaveFunction(meMomenta()[1],mePartonData()[1],incoming); } // wavefunctions for various helicities for(unsigned int ix=0;ix<2;++ix) { l1.reset(ix); f1.push_back(l1); l2.reset(ix); a1.push_back(l2); q1.reset(ix); f2.push_back(q1); q2.reset(ix); a2.push_back(q2); } return helicityME(f1,f2,a1,a2,lorder,qorder,false); } void MEChargedCurrentDIS::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); hard.push_back(sub->outgoing()[1]); unsigned int order[4]={0,1,2,3}; bool lorder(true),qorder(true); if(hard[0]->id()<0) { swap(order[0],order[2]); lorder = false; } if(hard[1]->id()<0) { swap(order[1],order[3]); qorder = false; } vector<SpinorWaveFunction> f1,f2; vector<SpinorBarWaveFunction> a1,a2; SpinorWaveFunction (f1,hard[order[0]],incoming,!lorder,true); SpinorWaveFunction (f2,hard[order[1]],incoming,!qorder,true); SpinorBarWaveFunction(a1,hard[order[2]],outgoing, lorder,true); SpinorBarWaveFunction(a2,hard[order[3]],outgoing, qorder,true); helicityME(f1,f2,a1,a2,lorder,qorder,false); // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(_me); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) { tSpinPtr spin = hard[ix]->spinInfo(); if(ix<2) { tcPolarizedBeamPDPtr beam = dynamic_ptr_cast<tcPolarizedBeamPDPtr>(hard[ix]->dataPtr()); if(beam) spin->rhoMatrix() = beam->rhoMatrix(); } spin->productionVertex(hardvertex); } } double MEChargedCurrentDIS::A(tcPDPtr lin, tcPDPtr, tcPDPtr qin, tcPDPtr, Energy2) const { double output = 2.; if(qin->id()<0) output *= -1.; if(lin->id()<0) output *= -1; return output; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/DIS/DISBase.h�����������������������������������������������������0000644�0001750�0001750�00000022704�11754474775�021565� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_DISBase_H #define HERWIG_DISBase_H // // This is the declaration of the DISBase class. // #include "Herwig++/MatrixElement/HwMEBase.h" namespace Herwig { using namespace ThePEG; /** * The DISBase class is the base class for the implementation * of DIS type processes including corrections in both the old * fashioned matrix element and POWHEG approaches * * @see \ref DISBaseInterfaces "The interfaces" * defined for DISBase. */ class DISBase: public HwMEBase { public: /** * The default constructor. */ DISBase(); /** * The default constructor. */ virtual ~DISBase(); /** * Members for the old-fashioned matrix element correction */ //@{ /** * Has an old fashioned ME correction */ virtual bool hasMECorrection() {return true;} /** * Initialize the ME correction */ virtual void initializeMECorrection(ShowerTreePtr, double &, double & ); /** * Apply the hard matrix element correction to a given hard process or decay */ virtual void applyHardMatrixElementCorrection(ShowerTreePtr); /** * Apply the soft matrix element correction * @param initial The particle from the hard process which started the * shower * @param parent The initial particle in the current branching * @param br The branching struct * @return If true the emission should be vetoed */ virtual bool softMatrixElementVeto(ShowerProgenitorPtr, ShowerParticlePtr,Branching); //@} /** * Members for the POWHEG stype correction */ //@{ /** * Has a POWHEG style correction */ virtual bool hasPOWHEGCorrection() {return true;} /** * Apply the POWHEG style correction */ virtual HardTreePtr generateHardest(ShowerTreePtr); //@} public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR() 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(); 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 static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<DISBase> initDISBase; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DISBase & operator=(const DISBase &); protected: /** * The NLO weight */ double NLOWeight() const; /** * Calculate the coefficient A for the correlations */ virtual double A(tcPDPtr lin, tcPDPtr lout, tcPDPtr qin, tcPDPtr qout, Energy2 scale) const =0; /** * Members for the matrix element correction */ //@{ /** * Generate the values of \f$x_p\f$ and \f$z_p\f$ * @param xp The value of xp, output * @param zp The value of zp, output */ double generateComptonPoint(double &xp, double & zp); /** * Generate the values of \f$x_p\f$ and \f$z_p\f$ * @param xp The value of xp, output * @param zp The value of zp, output */ double generateBGFPoint(double &xp, double & zp); /** * Return the coefficients for the matrix element piece for * the QCD compton case. The output is the \f$a_i\f$ coefficients to * give the function as * \f$a_0+a_1\cos\phi+a_2\sin\phi+a_3\cos^2\phi+a_4\sin^2\phi\f$ * @param xp \f$x_p\f$ * @param x2 \f$x_2\f$ * @param xperp \f$x_\perp\f$ * @param norm Normalise to the large $l$ value of the ME */ vector<double> ComptonME(double xp, double x2, double xperp, bool norm); /** * Return the coefficients for the matrix element piece for * the QCD compton case. The output is the \f$a_i\f$ coefficients to * give the function as * \f$a_0+a_1\cos\phi+a_2\sin\phi+a_3\cos^2\phi+a_4\sin^2\phi\f$ * @param xp \f$x_p\f$ * @param x2 \f$x_3\f$ * @param x3 \f$x_2\f$ * @param xperp \f$x_\perp\f$ * @param norm Normalise to the large $l$ value of the ME */ vector<double> BGFME(double xp, double x2, double x3, double xperp, bool norm); //@} /** * Members for the POWHEG correction */ //@{ /** * Generate a Compton process */ void generateCompton(); /** * Generate a BGF process */ void generateBGF(); //@} private: /** * Parameters for the matrix element correction */ //@{ /** * Enchancement factor for ISR */ double initial_; /** * Enchancement factor for FSR */ double final_; /** * Relative fraction of compton and BGF processes to generate */ double procProb_; /** * Integral for compton process */ double comptonInt_; /** * Integral for BGF process */ double bgfInt_; //@} /** * Parameters for the POWHEG correction */ //@{ /** * Weight for the compton channel */ double comptonWeight_; /** * Weight for the BGF channel */ double BGFWeight_; /** * Minimum value of \f$p_T\f$ */ Energy pTmin_; //@} /** * Parameters for the point being generated */ //@{ /** * \f$Q^2\f$ */ Energy2 q2_; /** * */ double l_; /** * Borm momentum fraction */ double xB_; /** * Beam particle */ tcBeamPtr beam_; /** * Partons */ tcPDPtr partons_[2]; /** * Leptons */ tcPDPtr leptons_[2]; /** * PDF object */ tcPDFPtr pdf_; /** * Rotation to the Breit frame */ LorentzRotation rot_; /** * Lepton momenta */ Lorentz5Momentum pl_[2]; /** * Quark momenta */ Lorentz5Momentum pq_[2]; /** * q */ Lorentz5Momentum q_; /** * Compton parameters */ Energy pTCompton_; bool ComptonISFS_; vector<Lorentz5Momentum> ComptonMomenta_; /** * BGF parameters */ Energy pTBGF_; vector<Lorentz5Momentum> BGFMomenta_; //@} /** * The coefficient for the correlations */ double acoeff_; /** * Coupling */ ShowerAlphaPtr alpha_; /** * Gluon particle data object */ PDPtr gluon_; private: /** * The radiative variables */ //@{ /** * The \f$x_p\f$ or \f$z\f$ real integration variable */ double xp_; //@} /** * The hadron */ tcBeamPtr hadron_; /** * Selects a dynamic or fixed factorization scale */ unsigned int scaleOpt_; /** * The factorization scale */ Energy muF_; /** * Prefactor if variable scale used */ double scaleFact_; /** * Whether to generate the positive, negative or leading order contribution */ unsigned int contrib_; /** * Power for sampling \f$x_p\f$ */ double power_; /** * Jacobian for \f$x_p\f$ integral */ double jac_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DISBase. */ template <> struct BaseClassTrait<Herwig::DISBase,1> { /** Typedef of the first base class of DISBase. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the DISBase class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DISBase> : public ClassTraitsBase<Herwig::DISBase> { /** Return a platform-independent class name */ static string className() { return "Herwig::DISBase"; } /** * The name of a file containing the dynamic library where the class * MENeutralCurrentDIS is implemented. It may also include several, space-separated, * libraries if the class MENeutralCurrentDIS depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEDIS.so"; } }; /** @endcond */ } #endif /* HERWIG_DISBase_H */ ������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/DIS/MEChargedCurrentDIS.h�����������������������������������������0000644�0001750�0001750�00000016202�11754474775�024031� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEChargedCurrentDIS_H #define HERWIG_MEChargedCurrentDIS_H // // This is the declaration of the MEChargedCurrentDIS class. // #include "DISBase.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" namespace Herwig { using namespace ThePEG; /** * The MEChargedCurrentDIS class provides the matrix elements for * charged current DIS. * * By default both the incoming and outgong quarks are assumed to be massless * although the mass of the outgoing quark can be included if required. This * option should be used if top production is included. * * @see \ref MEChargedCurrentDISInterfaces "The interfaces" * defined for MEChargedCurrentDIS. */ class MEChargedCurrentDIS: public DISBase { public: /** * The default constructor. */ MEChargedCurrentDIS(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Matrix element for \f$\ell q\to \gamma/Z \to \ell q\f$. * @param f1 Fermion on lepton line * @param a1 Anti-fermion on lepton line * @param f2 Fermion on quark line * @param a2 Anti-fermion on quark line * @param lorder The order of particles on the lepton line * @param qorder The order of particles on the quark line * @param me Whether or not to calculate the matrix element for spin correlations */ double helicityME(vector<SpinorWaveFunction> & f1 , vector<SpinorWaveFunction> & f2, vector<SpinorBarWaveFunction> & a1 , vector<SpinorBarWaveFunction> & a2, bool lorder, bool qorder, bool me) const; /** * Calculate the coefficient A for the correlations in the hard * radiation */ virtual double A(tcPDPtr lin, tcPDPtr lout, tcPDPtr qin, tcPDPtr qout, Energy2 scale) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEChargedCurrentDIS> initMEChargedCurrentDIS; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEChargedCurrentDIS & operator=(const MEChargedCurrentDIS &); private: /** * Pointer to the vertex for the helicity calculations */ AbstractFFVVertexPtr _theFFWVertex; /** * The allowed flavours of the incoming quarks */ unsigned int _maxflavour; /** * Option for the mass of the outgoing quarks */ unsigned int _massopt; /** * Matrix element for spin correlations */ ProductionMatrixElement _me; /** * Pointers to the intermediates resonances */ //@{ /** * Pointer to the \f$W^+\f$ */ tcPDPtr _wp; /** * Pointer to the \f$W^-\f$ */ tcPDPtr _wm; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEChargedCurrentDIS. */ template <> struct BaseClassTrait<Herwig::MEChargedCurrentDIS,1> { /** Typedef of the first base class of MEChargedCurrentDIS. */ typedef Herwig::DISBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEChargedCurrentDIS class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEChargedCurrentDIS> : public ClassTraitsBase<Herwig::MEChargedCurrentDIS> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEChargedCurrentDIS"; } /** * The name of a file containing the dynamic library where the class * MEChargedCurrentDIS is implemented. It may also include several, space-separated, * libraries if the class MEChargedCurrentDIS depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEDIS.so"; } }; /** @endcond */ } #endif /* HERWIG_MEChargedCurrentDIS_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/DIS/DISBase.cc����������������������������������������������������0000644�0001750�0001750�00000146246�11754723074�021720� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the DISBase class. // #include "DISBase.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/Utilities/Maths.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/StandardMatchers.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Repository/CurrentGenerator.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "Herwig++/PDT/StandardMatchers.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include <numeric> using namespace Herwig; using namespace ThePEG::Helicity; // namespace { // using namespace Herwig; // using namespace ThePEG::Helicity; // void debuggingMatrixElement(bool BGF,const Lorentz5Momentum & pin, // const Lorentz5Momentum & p1, // const Lorentz5Momentum & p2, // tcPDPtr gluon, // const Lorentz5Momentum & pl1, // const Lorentz5Momentum & pl2, // const Lorentz5Momentum & pq1, // const Lorentz5Momentum & pq2, // tcPDPtr lepton1,tcPDPtr lepton2, // tcPDPtr quark1 ,tcPDPtr quark2, // Energy2 Q2,double phi, double x2, double x3, // double xperp, double zp, double xp, // const vector<double> & azicoeff, // bool normalize) { // tcHwSMPtr hwsm=ThePEG::dynamic_ptr_cast<tcHwSMPtr> // (CurrentGenerator::current().standardModel()); // assert(hwsm); // vector<AbstractFFVVertexPtr> weakVertex; // vector<PDPtr> bosons; // AbstractFFVVertexPtr strongVertex = hwsm->vertexFFG(); // if(lepton1->id()==lepton2->id()) { // weakVertex.push_back(hwsm->vertexFFZ()); // bosons.push_back(hwsm->getParticleData(ParticleID::Z0)); // weakVertex.push_back(hwsm->vertexFFP()); // bosons.push_back(hwsm->getParticleData(ParticleID::gamma)); // } // else { // weakVertex.push_back(hwsm->vertexFFW()); // bosons.push_back(hwsm->getParticleData(ParticleID::Wplus)); // } // if(!BGF) { // SpinorWaveFunction l1,q1,qp1; // SpinorBarWaveFunction l2,q2,qp2; // VectorWaveFunction gl(p2,gluon,outgoing); // if(lepton1->id()>0) { // l1 = SpinorWaveFunction (pl1,lepton1,incoming); // l2 = SpinorBarWaveFunction(pl2,lepton2,outgoing); // } // else { // l1 = SpinorWaveFunction (pl2,lepton2,outgoing); // l2 = SpinorBarWaveFunction(pl1,lepton1,incoming); // } // if(quark1->id()>0) { // q1 = SpinorWaveFunction (pq1,quark1,incoming); // q2 = SpinorBarWaveFunction(pq2,quark2,outgoing); // qp1 = SpinorWaveFunction (pin,quark1,incoming); // qp2 = SpinorBarWaveFunction(p1 ,quark2,outgoing); // } // else { // q1 = SpinorWaveFunction (pq2,quark2,outgoing); // q2 = SpinorBarWaveFunction(pq1,quark1,incoming); // qp1 = SpinorWaveFunction (p1 ,quark2,outgoing); // qp2 = SpinorBarWaveFunction(pin,quark1,incoming); // } // double lome(0.),realme(0.); // for(unsigned int lhel1=0;lhel1<2;++lhel1) { // l1.reset(lhel1); // for(unsigned int lhel2=0;lhel2<2;++lhel2) { // l2.reset(lhel2); // for(unsigned int qhel1=0;qhel1<2;++qhel1) { // q1.reset(qhel1); // qp1.reset(qhel1); // for(unsigned int qhel2=0;qhel2<2;++qhel2) { // q2.reset(qhel2); // qp2.reset(qhel2); // // leading order matrix element // Complex diagLO(0.); // for(unsigned int ix=0;ix<weakVertex.size();++ix) { // VectorWaveFunction inter = // weakVertex[ix]->evaluate(Q2,3,bosons[ix],l1,l2); // diagLO += weakVertex[ix]->evaluate(Q2,q1,q2,inter); // } // lome += norm(diagLO); // // real emission matrix element // for(unsigned int ghel=0;ghel<2;++ghel) { // gl.reset(2*ghel); // Complex diagReal(0.); // for(unsigned int ix=0;ix<weakVertex.size();++ix) { // VectorWaveFunction inter = // weakVertex[ix]->evaluate(Q2,3,bosons[ix],l1,l2); // SpinorWaveFunction off1 = // strongVertex->evaluate(Q2,5,qp1.particle(),qp1,gl); // Complex diag1 = weakVertex[ix]->evaluate(Q2,off1,qp2,inter); // SpinorBarWaveFunction off2 = // strongVertex->evaluate(Q2,5,qp2.particle(),qp2,gl); // Complex diag2 = weakVertex[ix]->evaluate(Q2,qp1,off2,inter); // diagReal += diag1+diag2; // } // realme += norm(diagReal); // } // } // } // } // } // double test1 = realme/lome/hwsm->alphaS(Q2)*Q2*UnitRemoval::InvE2; // double cphi(cos(phi)); // double test2; // if(normalize) { // test2 = 8.*Constants::pi/(1.-xp)/(1.-zp)* // (azicoeff[0]+azicoeff[1]*cphi+azicoeff[2]*sqr(cphi))* // (1.+sqr(xp)*(sqr(x2)+1.5*sqr(xperp))); // } // else { // test2 = 8.*Constants::pi/(1.-xp)/(1.-zp)* // (azicoeff[0]+azicoeff[1]*cphi+azicoeff[2]*sqr(cphi)); // } // cerr << "testing RATIO A " << test1/test2 << "\n"; // } // else { // SpinorWaveFunction l1,q1,qp1; // SpinorBarWaveFunction l2,q2,qp2; // VectorWaveFunction gl(pin,gluon,incoming); // if(lepton1->id()>0) { // l1 = SpinorWaveFunction (pl1,lepton1,incoming); // l2 = SpinorBarWaveFunction(pl2,lepton2,outgoing); // } // else { // l1 = SpinorWaveFunction (pl2,lepton2,outgoing); // l2 = SpinorBarWaveFunction(pl1,lepton1,incoming); // } // if(quark1->id()>0) { // q1 = SpinorWaveFunction (pq1,quark1 ,incoming); // q2 = SpinorBarWaveFunction(pq2,quark2 ,outgoing); // qp2 = SpinorBarWaveFunction(p1 ,quark2 ,outgoing); // qp1 = SpinorWaveFunction (p2 ,quark1->CC(),outgoing); // } // else { // q1 = SpinorWaveFunction (pq2,quark2 ,outgoing); // q2 = SpinorBarWaveFunction(pq1,quark1 ,incoming); // qp2 = SpinorBarWaveFunction(p2 ,quark1->CC(),outgoing); // qp1 = SpinorWaveFunction (p1 ,quark2 ,outgoing); // } // double lome(0.),realme(0.); // for(unsigned int lhel1=0;lhel1<2;++lhel1) { // l1.reset(lhel1); // for(unsigned int lhel2=0;lhel2<2;++lhel2) { // l2.reset(lhel2); // for(unsigned int qhel1=0;qhel1<2;++qhel1) { // q1.reset(qhel1); // qp1.reset(qhel1); // for(unsigned int qhel2=0;qhel2<2;++qhel2) { // q2.reset(qhel2); // qp2.reset(qhel2); // // leading order matrix element // Complex diagLO(0.); // for(unsigned int ix=0;ix<weakVertex.size();++ix) { // VectorWaveFunction inter = // weakVertex[ix]->evaluate(Q2,3,bosons[ix],l1,l2); // diagLO += weakVertex[ix]->evaluate(Q2,q1,q2,inter); // } // lome += norm(diagLO); // // real emission matrix element // for(unsigned int ghel=0;ghel<2;++ghel) { // gl.reset(2*ghel); // Complex diagReal(0.); // for(unsigned int ix=0;ix<weakVertex.size();++ix) { // VectorWaveFunction inter = // weakVertex[ix]->evaluate(Q2,3,bosons[ix],l1,l2); // SpinorWaveFunction off1 = // strongVertex->evaluate(Q2,5,qp1.particle(),qp1,gl); // Complex diag1 = weakVertex[ix]->evaluate(Q2,off1,qp2,inter); // SpinorBarWaveFunction off2 = // strongVertex->evaluate(Q2,5,qp2.particle(),qp2,gl); // Complex diag2 = weakVertex[ix]->evaluate(Q2,qp1,off2,inter); // diagReal += diag1+diag2; // } // realme += norm(diagReal); // } // } // } // } // } // double test1 = realme/lome/hwsm->alphaS(Q2)*Q2*UnitRemoval::InvE2; // double cphi(cos(phi)); // double test2; // if(normalize) { // test2 = 8.*Constants::pi/zp/(1.-zp)* // (azicoeff[0]+azicoeff[1]*cphi+azicoeff[2]*sqr(cphi))* // sqr(xp)*(sqr(x3)+sqr(x2)+3.*sqr(xperp)); // } // else { // test2 = 8.*Constants::pi/zp/(1.-zp)* // (azicoeff[0]+azicoeff[1]*cphi+azicoeff[2]*sqr(cphi)); // } // cerr << "testing RATIO B " << test1/test2 << "\n"; // } // } // } DISBase::DISBase() : initial_(6.), final_(3.), procProb_(0.35), comptonInt_(0.), bgfInt_(0.), comptonWeight_(50.), BGFWeight_(150.), pTmin_(0.1*GeV), scaleOpt_(1), muF_(100.*GeV), scaleFact_(1.), contrib_(0), power_(0.1) {} DISBase::~DISBase() {} void DISBase::persistentOutput(PersistentOStream & os) const { os << comptonInt_ << bgfInt_ << procProb_ << initial_ << final_ << alpha_ << ounit(pTmin_,GeV) << comptonWeight_ << BGFWeight_ << gluon_ << ounit(muF_,GeV) << scaleFact_ << scaleOpt_ << contrib_<< power_; } void DISBase::persistentInput(PersistentIStream & is, int) { is >> comptonInt_ >> bgfInt_ >> procProb_ >> initial_ >> final_ >> alpha_ >> iunit(pTmin_,GeV) >> comptonWeight_ >> BGFWeight_ >> gluon_ >> iunit(muF_,GeV) >> scaleFact_ >> scaleOpt_ >> contrib_ >> power_; } AbstractClassDescription<DISBase> DISBase::initDISBase; // Definition of the static class description member. void DISBase::Init() { static ClassDocumentation<DISBase> documentation ("The DISBase class provides the base class for the " "implementation of DIS type processes including the " "hard corrections in either the old-fashioned matrix " "element correction of POWHEG approaches"); static Parameter<DISBase,double> interfaceProcessProbability ("ProcessProbability", "The probabilty of the QCD compton process for the process selection", &DISBase::procProb_, 0.3, 0.0, 1., false, false, Interface::limited); static Reference<DISBase,ShowerAlpha> interfaceCoupling ("Coupling", "Pointer to the object to calculate the coupling for the correction", &DISBase::alpha_, false, false, true, false, false); static Parameter<DISBase,Energy> interfacepTMin ("pTMin", "The minimum pT", &DISBase::pTmin_, GeV, 1.*GeV, 0.0*GeV, 10.0*GeV, false, false, Interface::limited); static Parameter<DISBase,double> interfaceComptonWeight ("ComptonWeight", "Weight for the overestimate ofthe compton channel", &DISBase::comptonWeight_, 50.0, 0.0, 100.0, false, false, Interface::limited); static Parameter<DISBase,double> interfaceBGFWeight ("BGFWeight", "Weight for the overestimate of the BGF channel", &DISBase::BGFWeight_, 100.0, 0.0, 1000.0, false, false, Interface::limited); static Switch<DISBase,unsigned int> interfaceContribution ("Contribution", "Which contributions to the cross section to include", &DISBase::contrib_, 0, false, false); static SwitchOption interfaceContributionLeadingOrder (interfaceContribution, "LeadingOrder", "Just generate the leading order cross section", 0); static SwitchOption interfaceContributionPositiveNLO (interfaceContribution, "PositiveNLO", "Generate the positive contribution to the full NLO cross section", 1); static SwitchOption interfaceContributionNegativeNLO (interfaceContribution, "NegativeNLO", "Generate the negative contribution to the full NLO cross section", 2); static Switch<DISBase,unsigned int> interfaceScaleOption ("ScaleOption", "Option for the choice of factorization (and renormalization) scale", &DISBase::scaleOpt_, 1, false, false); static SwitchOption interfaceDynamic (interfaceScaleOption, "Dynamic", "Dynamic factorization scale equal to the current sqrt(sHat())", 1); static SwitchOption interfaceFixed (interfaceScaleOption, "Fixed", "Use a fixed factorization scale set with FactorizationScaleValue", 2); static Parameter<DISBase,Energy> interfaceFactorizationScale ("FactorizationScale", "Value to use in the event of a fixed factorization scale", &DISBase::muF_, GeV, 100.0*GeV, 1.0*GeV, 500.0*GeV, true, false, Interface::limited); static Parameter<DISBase,double> interfaceScaleFactor ("ScaleFactor", "The factor used before Q2 if using a running scale", &DISBase::scaleFact_, 1.0, 0.0, 10.0, false, false, Interface::limited); static Parameter<DISBase,double> interfaceSamplingPower ("SamplingPower", "Power for the sampling of xp", &DISBase::power_, 0.6, 0.0, 1., false, false, Interface::limited); } void DISBase::doinit() { HwMEBase::doinit(); // integrals of me over phase space double r5=sqrt(5.),darg((r5-1.)/(r5+1.)),ath(0.5*log((1.+1./r5)/(1.-1./r5))); comptonInt_ = 2.*(-21./20.-6./(5.*r5)*ath+sqr(Constants::pi)/3. -2.*Math::ReLi2(1.-darg)-2.*Math::ReLi2(1.-1./darg)); bgfInt_ = 121./9.-56./r5*ath; // extract the gluon ParticleData objects gluon_ = getParticleData(ParticleID::g); } void DISBase::initializeMECorrection(ShowerTreePtr tree, double & initial, double & final) { initial = initial_; final = final_; // incoming particles for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { if(QuarkMatcher::Check(cit->first->progenitor()->data())) { partons_[0] = cit->first->progenitor()->dataPtr(); pq_[0] = cit->first->progenitor()->momentum(); } else if(LeptonMatcher::Check(cit->first->progenitor()->data())) { leptons_[0] = cit->first->progenitor()->dataPtr(); pl_[0] = cit->first->progenitor()->momentum(); } } // outgoing particles for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { if(QuarkMatcher::Check(cit->first->progenitor()->data())) { partons_[1] = cit->first->progenitor()->dataPtr(); pq_[1] = cit->first->progenitor()->momentum(); } else if(LeptonMatcher::Check(cit->first->progenitor()->data())) { leptons_[1] = cit->first->progenitor()->dataPtr(); pl_[1] = cit->first->progenitor()->momentum(); } } // extract the born variables q_ =pl_[0]-pl_[1]; q2_ = -q_.m2(); double yB = (q_*pq_[0])/(pl_[0]*pq_[0]); l_ = 2./yB-1.; // calculate the A coefficient for the correlations acoeff_ = A(leptons_[0],leptons_[1], partons_[0],partons_[1],q2_); } void DISBase::applyHardMatrixElementCorrection(ShowerTreePtr tree) { static const double eps=1e-6; // find the incoming and outgoing quarks and leptons ShowerParticlePtr quark[2],lepton[2]; PPtr hadron; // incoming particles for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { if(QuarkMatcher::Check(cit->first->progenitor()->data())) { hadron = cit->first->original()->parents()[0]; quark [0] = cit->first->progenitor(); beam_ = cit->first->beam(); } else if(LeptonMatcher::Check(cit->first->progenitor()->data())) { lepton[0] = cit->first->progenitor(); } } pdf_ = beam_->pdf(); assert(beam_&&pdf_&&quark[0]&&lepton[0]); // outgoing particles for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { if(QuarkMatcher::Check(cit->first->progenitor()->data())) quark [1] = cit->first->progenitor(); else if(LeptonMatcher::Check(cit->first->progenitor()->data())) { lepton[1] = cit->first->progenitor(); } } // momentum fraction assert(quark[1]&&lepton[1]); xB_ = quark[0]->x(); // calculate the matrix element vector<double> azicoeff; // select the type of process bool BGF = UseRandom::rnd()>procProb_; double xp,zp,wgt,x1,x2,x3,xperp; // generate a QCD compton process if(!BGF) { wgt = generateComptonPoint(xp,zp); if(xp<eps) return; // common pieces Energy2 scale = q2_*((1.-xp)*(1-zp)*zp/xp+1.); wgt *= 2./3./Constants::pi*alpha_->value(scale)/procProb_; // PDF piece wgt *= pdf_->xfx(beam_,quark[0]->dataPtr(),scale,xB_/xp)/ pdf_->xfx(beam_,quark[0]->dataPtr(),q2_ ,xB_); // other bits xperp = sqrt(4.*(1.-xp)*(1.-zp)*zp/xp); x1 = -1./xp; x2 = 1.-(1.-zp)/xp; x3 = 2.+x1-x2; // matrix element pieces azicoeff = ComptonME(xp,x2,xperp,true); } // generate a BGF process else { wgt = generateBGFPoint(xp,zp); if(xp<eps) return; // common pieces Energy2 scale = q2_*((1.-xp)*(1-zp)*zp/xp+1); wgt *= 0.25/Constants::pi*alpha_->value(scale)/(1.-procProb_); // PDF piece wgt *= pdf_->xfx(beam_,gluon_ ,scale,xB_/xp)/ pdf_->xfx(beam_,quark[0]->dataPtr(),q2_ ,xB_); // other bits xperp = sqrt(4.*(1.-xp)*(1.-zp)*zp/xp); x1 = -1./xp; x2 = 1.-(1.-zp)/xp; x3 = 2.+x1-x2; // matrix element pieces azicoeff = BGFME(xp,x2,x3,xperp,true); } // compute the azimuthal average of the weight wgt *= (azicoeff[0]+0.5*azicoeff[2]); // decide whether or not to accept the weight if(UseRandom::rnd()>wgt) return; // if generate generate phi unsigned int itry(0); double phimax = std::accumulate(azicoeff.begin(),azicoeff.end(),0.); double phiwgt,phi; do { phi = UseRandom::rnd()*Constants::twopi; double cphi(cos(phi)); phiwgt = azicoeff[0]+azicoeff[1]*cphi+azicoeff[2]*sqr(cphi); ++itry; } while (phimax*UseRandom::rnd() > phiwgt && itry<200); if(itry==200) throw Exception() << "Too many tries in DISMECorrection" << "::applyHardMatrixElementCorrection() to" << " generate phi" << Exception::eventerror; // construct lorentz transform from lab to breit frame Lorentz5Momentum phadron = hadron->momentum(); phadron.setMass(0.*GeV); phadron.rescaleEnergy(); Lorentz5Momentum pcmf = phadron+0.5/xB_*q_; pcmf.rescaleMass(); LorentzRotation rot(-pcmf.boostVector()); Lorentz5Momentum pbeam = rot*phadron; Axis axis(pbeam.vect().unit()); double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); rot.rotate(-acos(axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); Lorentz5Momentum pl = rot*pl_[0]; rot.rotateZ(-atan2(pl.y(),pl.x())); pl_[0] *= rot; pl_[1] *= rot; pq_[0] *= rot; pq_[1] *= rot; // compute the new incoming and outgoing momenta Energy Q(sqrt(q2_)); Lorentz5Momentum p1 = Lorentz5Momentum( 0.5*Q*xperp*cos(phi), 0.5*Q*xperp*sin(phi), -0.5*Q*x2,0.*GeV,0.*GeV); p1.rescaleEnergy(); Lorentz5Momentum p2 = Lorentz5Momentum(-0.5*Q*xperp*cos(phi),-0.5*Q*xperp*sin(phi), -0.5*Q*x3,0.*GeV,0.*GeV); p2.rescaleEnergy(); Lorentz5Momentum pin(0.*GeV,0.*GeV,-0.5*x1*Q,-0.5*x1*Q,0.*GeV); // debuggingMatrixElement(BGF,pin,p1,p2,gluon_,pl_[0],pl_[1],pq_[0],pq_[1], // lepton[0]->dataPtr(),lepton[1]->dataPtr(), // quark [0]->dataPtr(),quark [1]->dataPtr(), // q2_,phi,x2,x3,xperp,zp,xp,azicoeff,true); // we need the Lorentz transform back to the lab rot.invert(); // transform the momenta to lab frame pin *= rot; p1 *= rot; p2 *= rot; // test to ensure outgoing particles can be put on-shell if(!BGF) { if(p1.e()<quark[1]->dataPtr()->constituentMass()) return; if(p2.e()<gluon_ ->constituentMass()) return; } else { if(p1.e()<quark[1]->dataPtr() ->constituentMass()) return; if(p2.e()<quark[0]->dataPtr()->CC()->constituentMass()) return; } // create the new particles and add to ShowerTree bool isquark = quark[0]->colourLine(); if(!BGF) { PPtr newin = new_ptr(Particle(*quark[0])); newin->set5Momentum(pin); PPtr newg = gluon_ ->produceParticle(p2 ); PPtr newout = quark[1]->dataPtr()->produceParticle(p1 ); ColinePtr col=isquark ? quark[0]->colourLine() : quark[0]->antiColourLine(); ColinePtr newline=new_ptr(ColourLine()); // final-state emission if(xp>zp) { col->removeColoured(newout,!isquark); col->addColoured(newin,!isquark); col->addColoured(newg,!isquark); newline->addColoured(newg,isquark); newline->addColoured(newout,!isquark); } // initial-state emission else { col->removeColoured(newin ,!isquark); col->addColoured(newout,!isquark); col->addColoured(newg,isquark); newline->addColoured(newg,!isquark); newline->addColoured(newin,!isquark); } PPtr orig; for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { if(cit->first->progenitor()!=quark[0]) continue; // remove old particles from colour line col->removeColoured(cit->first->copy(),!isquark); col->removeColoured(cit->first->progenitor(),!isquark); // insert new particles cit->first->copy(newin); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newin,1,false))); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; sp->x(xB_/xp); cit->first->perturbative(xp>zp); if(xp<=zp) orig=cit->first->original(); } for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { if(cit->first->progenitor()!=quark[1]) continue; // remove old particles from colour line col->removeColoured(cit->first->copy(),!isquark); col->removeColoured(cit->first->progenitor(),!isquark); // insert new particles cit->first->copy(newout); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newout,1,true))); cit->first->progenitor(sp); tree->outgoingLines()[cit->first]=sp; cit->first->perturbative(xp<=zp); if(xp>zp) orig=cit->first->original(); } assert(orig); // add the gluon ShowerParticlePtr sg=new_ptr(ShowerParticle(*newg,1,true)); ShowerProgenitorPtr gluon=new_ptr(ShowerProgenitor(orig,newg,sg)); gluon->perturbative(false); tree->outgoingLines().insert(make_pair(gluon,sg)); tree->hardMatrixElementCorrection(true); } else { PPtr newin = gluon_ ->produceParticle(pin); PPtr newqbar = quark[0]->dataPtr()->CC()->produceParticle(p2 ); PPtr newout = quark[1]->dataPtr() ->produceParticle(p1 ); ColinePtr col=isquark ? quark[0]->colourLine() : quark[0]->antiColourLine(); ColinePtr newline=new_ptr(ColourLine()); col ->addColoured(newin ,!isquark); newline->addColoured(newin , isquark); col ->addColoured(newout ,!isquark); newline->addColoured(newqbar, isquark); PPtr orig; for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { if(cit->first->progenitor()!=quark[0]) continue; // remove old particles from colour line col->removeColoured(cit->first->copy(),!isquark); col->removeColoured(cit->first->progenitor(),!isquark); // insert new particles cit->first->copy(newin); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newin,1,false))); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; sp->x(xB_/xp); cit->first->perturbative(false); orig=cit->first->original(); } for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { if(cit->first->progenitor()!=quark[1]) continue; // remove old particles from colour line col->removeColoured(cit->first->copy(),!isquark); col->removeColoured(cit->first->progenitor(),!isquark); // insert new particles cit->first->copy(newout); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newout,1,true))); cit->first->progenitor(sp); tree->outgoingLines()[cit->first]=sp; cit->first->perturbative(true); } assert(orig); // add the (anti)quark ShowerParticlePtr sqbar=new_ptr(ShowerParticle(*newqbar,1,true)); ShowerProgenitorPtr qbar=new_ptr(ShowerProgenitor(orig,newqbar,sqbar)); qbar->perturbative(false); tree->outgoingLines().insert(make_pair(qbar,sqbar)); tree->hardMatrixElementCorrection(true); } } bool DISBase::softMatrixElementVeto(ShowerProgenitorPtr initial, ShowerParticlePtr parent, Branching br) { bool veto = !UseRandom::rndbool(parent->isFinalState() ? 1./final_ : 1./initial_); // check if me correction should be applied long id[2]={initial->id(),parent->id()}; if(id[0]!=id[1]||id[1]==ParticleID::g) return veto; // get the pT Energy pT=br.kinematics->pT(); // check if hardest so far if(pT<initial->highestpT()) return veto; double kappa(sqr(br.kinematics->scale())/q2_),z(br.kinematics->z()); double zk((1.-z)*kappa); // final-state double wgt(0.); if(parent->isFinalState()) { double zp=z,xp=1./(1.+z*zk); double xperp = sqrt(4.*(1.-xp)*(1.-zp)*zp/xp); double x2 = 1.-(1.-zp)/xp; vector<double> azicoeff = ComptonME(xp,x2,xperp,false); wgt = (azicoeff[0]+0.5*azicoeff[2])*xp/(1.+sqr(z))/final_; if(wgt<.0||wgt>1.) { ostringstream wstring; wstring << "Soft ME correction weight too large or " << "negative for FSR in DISBase::" << "softMatrixElementVeto() soft weight " << " xp = " << xp << " zp = " << zp << " weight = " << wgt << "\n"; generator()->logWarning( Exception(wstring.str(), Exception::warning) ); } } else { double xp = 2.*z/(1.+zk+sqrt(sqr(1.+zk)-4.*z*zk)); double zp = 0.5* (1.-zk+sqrt(sqr(1.+zk)-4.*z*zk)); double xperp = sqrt(4.*(1.-xp)*(1.-zp)*zp/xp); double x1 = -1./xp, x2 = 1.-(1.-zp)/xp, x3 = 2.+x1-x2; // compton if(br.ids[0]!=ParticleID::g) { vector<double> azicoeff = ComptonME(xp,x2,xperp,false); wgt = (azicoeff[0]+0.5*azicoeff[2])*xp*(1.-z)/(1.-xp)/(1.+sqr(z))/ (1.-zp+xp-2.*xp*(1.-zp)); } // BGF else { vector<double> azicoeff = BGFME(xp,x2,x3,xperp,true); wgt = (azicoeff[0]+0.5*azicoeff[2])*xp/(1.-zp+xp-2.*xp*(1.-zp))/(sqr(z)+sqr(1.-z)); } wgt /=initial_; if(wgt<.0||wgt>1.) { ostringstream wstring; wstring << "Soft ME correction weight too large or " << "negative for ISR in DISBase::" << "softMatrixElementVeto() soft weight " << " xp = " << xp << " zp = " << zp << " weight = " << wgt << "\n"; generator()->logWarning( Exception(wstring.str(), Exception::warning) ); } } // if not vetoed if(UseRandom::rndbool(wgt)) { initial->highestpT(pT); return false; } // otherwise parent->setEvolutionScale(br.kinematics->scale()); return true; } double DISBase::generateComptonPoint(double &xp, double & zp) { static const double maxwgt = 1.; double wgt; do { xp = UseRandom::rnd(); double zpmin = xp, zpmax = 1./(1.+xp*(1.-xp)); zp = 1.-pow((1.-zpmin)/(1.-zpmax),UseRandom::rnd())*(1.-zpmax); wgt = log((1.-zpmin)/(1.-zpmax))*(1.-zp); if(UseRandom::rndbool()) swap(xp,zp); double xperp2 = 4.*(1.-xp)*(1.-zp)*zp/xp,x2=1.-(1.-zp)/xp; wgt *= 2.*(1.+sqr(xp)*(sqr(x2)+1.5*xperp2))/(1.-xp)/(1.-zp); if(wgt>maxwgt) { ostringstream wstring; wstring << "DISBase::generateComptonPoint " << "Weight greater than maximum " << "wgt = " << wgt << " maxwgt = 1\n"; generator()->logWarning( Exception(wstring.str(), Exception::warning) ); } } while(wgt<UseRandom::rnd()*maxwgt); return comptonInt_; } double DISBase::generateBGFPoint(double &xp, double & zp) { static const double maxwgt = 25.; double wgt; do { xp = UseRandom::rnd(); double zpmax = 1./(1.+xp*(1.-xp)), zpmin = 1.-zpmax; zp = 1.-pow((1.-zpmin)/(1.-zpmax),UseRandom::rnd())*(1.-zpmax); wgt = log((1.-zpmin)/(1.-zpmax))*(1.-zp); double x1 = -1./xp; double x2 = 1.-(1.-zp)/xp; double x3 = 2.+x1-x2; double xperp2 = 4.*(1.-xp)*(1.-zp)*zp/xp; wgt *= sqr(xp)/(1.-zp)*(sqr(x3)+sqr(x2)+3.*xperp2); if(wgt>maxwgt) { ostringstream wstring; wstring << "DISBase::generateBGFPoint " << "Weight greater than maximum " << "wgt = " << wgt << " maxwgt = 1\n"; generator()->logWarning( Exception(wstring.str(), Exception::warning) ); } } while(wgt<UseRandom::rnd()*maxwgt); return bgfInt_; // static const double maxwgt = 2.,npow=0.34,ac=1.0; // double wgt; // do { // double rho = UseRandom::rnd(); // xp = 1.-pow(rho,1./(1.-npow)); // wgt = (sqr(xp)+ac+sqr(1.-xp)); // if(wgt>1.+ac) cerr << "testing violates BGF maxA " << wgt << "\n"; // } // while(wgt<UseRandom::rnd()*(1.+ac)); // double xpwgt = -((6.-5.*npow+sqr(npow))*ac-3.*npow+sqr(npow)+4) // /(sqr(npow)*(npow-6.)+11.*npow-6.); // xpwgt *= pow(1.-xp,npow)/wgt; // double xp2(sqr(xp)),lxp(log(xp)),xp4(sqr(xp2)),lxp1(log(1.-xp)); // double zpwgt = (2.*xp4*(lxp+lxp1-3.)+4.*xp*xp2*(3.-lxp-lxp1) // +xp2*(-13.+lxp+lxp1)+xp*(+7.+lxp+lxp1)-lxp-lxp1-1.)/(1.+xp-xp2); // do { // double zpmax = 1./(1.+xp*(1.-xp)), zpmin = 1.-zpmax; // zp = 1.-pow((1.-zpmin)/(1.-zpmax),UseRandom::rnd())*(1.-zpmax); // wgt = log((1.-zpmin)/(1.-zpmax))*(1.-zp); // double x1 = -1./xp; // double x2 = 1.-(1.-zp)/xp; // double x3 = 2.+x1-x2; // double xperp2 = 4.*(1.-xp)*(1.-zp)*zp/xp; // wgt *= sqr(xp)/(1.-zp)*(sqr(x3)+sqr(x2)+3.*xperp2); // if(wgt>maxwgt*zpwgt) cerr << "testing violates BGF maxB " << wgt/xpwgt << "\n"; // } // while(wgt<UseRandom::rnd()*maxwgt); // return zpwgt*xpwgt; } vector<double> DISBase::ComptonME(double xp, double x2, double xperp, bool norm) { vector<double> output(3,0.); double cos2 = x2 /sqrt(sqr(x2)+sqr(xperp)); double sin2 = xperp/sqrt(sqr(x2)+sqr(xperp)); double root = sqrt(sqr(l_)-1.); output[0] = sqr(cos2)+acoeff_*cos2*l_+sqr(l_); output[1] = -acoeff_*cos2*root*sin2-2.*l_*root*sin2; output[2] = sqr(root)*sqr(sin2); double lo(1+acoeff_*l_+sqr(l_)); double denom = norm ? 1.+sqr(xp)*(sqr(x2)+1.5*sqr(xperp)) : 1.; double fact = sqr(xp)*(sqr(x2)+sqr(xperp))/lo; for(unsigned int ix=0;ix<output.size();++ix) output[ix] = ((ix==0 ? 1. : 0.) +fact*output[ix])/denom; return output; } vector<double> DISBase::BGFME(double xp, double x2, double x3, double xperp, bool norm) { vector<double> output(3,0.); double cos2 = x2 /sqrt(sqr(x2)+sqr(xperp)); double sin2 = xperp/sqrt(sqr(x2)+sqr(xperp)); double fact2 = sqr(xp)*(sqr(x2)+sqr(xperp)); double cos3 = x3 /sqrt(sqr(x3)+sqr(xperp)); double sin3 = xperp/sqrt(sqr(x3)+sqr(xperp)); double fact3 = sqr(xp)*(sqr(x3)+sqr(xperp)); double root = sqrt(sqr(l_)-1.); output[0] = fact2*(sqr(cos2)+acoeff_*cos2*l_+sqr(l_)) + fact3*(sqr(cos3)-acoeff_*cos3*l_+sqr(l_)); output[1] = - fact2*(acoeff_*cos2*root*sin2+2.*l_*root*sin2) - fact3*(acoeff_*cos3*root*sin3-2.*l_*root*sin3); output[2] = fact2*(sqr(root)*sqr(sin2)) + fact3*(sqr(root)*sqr(sin3)); double lo(1+acoeff_*l_+sqr(l_)); double denom = norm ? sqr(xp)*(sqr(x3)+sqr(x2)+3.*sqr(xperp))*lo : lo; for(unsigned int ix=0;ix<output.size();++ix) output[ix] /= denom; return output; } HardTreePtr DISBase::generateHardest(ShowerTreePtr tree) { ShowerParticlePtr quark[2],lepton[2]; PPtr hadron; // incoming particles for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { if(QuarkMatcher::Check(cit->first->progenitor()->data())) { hadron = cit->first->original()->parents()[0]; quark [0] = cit->first->progenitor(); beam_ = cit->first->beam(); } else if(LeptonMatcher::Check(cit->first->progenitor()->data())) { lepton[0] = cit->first->progenitor(); leptons_[0] = lepton[0]->dataPtr(); } } pdf_=beam_->pdf(); assert(beam_&&pdf_&&quark[0]&&lepton[0]); // outgoing particles for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { if(QuarkMatcher::Check(cit->first->progenitor()->data())) quark [1] = cit->first->progenitor(); else if(LeptonMatcher::Check(cit->first->progenitor()->data())) { lepton[1] = cit->first->progenitor(); leptons_[1] = lepton[1]->dataPtr(); } } assert(quark[1]&&lepton[1]); // Particle data objects for(unsigned int ix=0;ix<2;++ix) partons_[ix] = quark[ix]->dataPtr(); // extract the born variables q_ =lepton[0]->momentum()-lepton[1]->momentum(); q2_ = -q_.m2(); xB_ = quark[0]->x(); double yB = ( q_*quark[0]->momentum())/ (lepton[0]->momentum()*quark[0]->momentum()); l_ = 2./yB-1.; // construct lorentz transform from lab to breit frame Lorentz5Momentum phadron = hadron->momentum(); phadron.setMass(0.*GeV); phadron.rescaleRho(); Lorentz5Momentum pb = quark[0]->momentum(); Axis axis(q_.vect().unit()); double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); LorentzRotation rot_ = LorentzRotation(); if(axis.perp2()>1e-20) { rot_.setRotate(-acos(axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); rot_.rotateX(Constants::pi); } if(abs(1.-q_.e()/q_.vect().mag())>1e-6) rot_.boostZ( q_.e()/q_.vect().mag()); pb *= rot_; if(pb.perp2()/GeV2>1e-20) { Boost trans = -1./pb.e()*pb.vect(); trans.setZ(0.); rot_.boost(trans); } Lorentz5Momentum pl = rot_*lepton[0]->momentum(); rot_.rotateZ(-atan2(pl.y(),pl.x())); // momenta of the particles pl_[0]=rot_*lepton[0]->momentum(); pl_[1]=rot_*lepton[1]->momentum(); pq_[0]=rot_* quark[0]->momentum(); pq_[1]=rot_* quark[1]->momentum(); q_ *= rot_; // coefficient for the matrix elements acoeff_ = A(lepton[0]->dataPtr(),lepton[1]->dataPtr(), quark [0]->dataPtr(),quark [1]->dataPtr(),q2_); // generate a compton point generateCompton(); generateBGF(); // no valid emission, return if(pTCompton_<ZERO&&pTBGF_<ZERO) return HardTreePtr(); // type of emission, pick highest pT bool isCompton=pTCompton_>pTBGF_; // // find the sudakov for the branching // SudakovPtr sudakov; // // ISR // if(ComptonISFS_||!isCompton) { // BranchingList branchings=evolver()->splittingGenerator()->initialStateBranchings(); // long index = abs(partons_[0]->id()); // IdList br(3); // if(isCompton) { // br[0] = index; // br[1] = index; // br[2] = ParticleID::g; // } // else { // br[0] = ParticleID::g; // br[1] = abs(partons_[0]->id()); // br[2] = -abs(partons_[0]->id()); // } // for(BranchingList::const_iterator cit = branchings.lower_bound(index); // cit != branchings.upper_bound(index); ++cit ) { // IdList ids = cit->second.second; // if(ids[0]==br[0]&&ids[1]==br[1]&&ids[2]==br[2]) { // sudakov=cit->second.first; // break; // } // } // } // // FSR // else { // BranchingList branchings = // evolver()->splittingGenerator()->finalStateBranchings(); // long index=abs(partons_[1]->id()); // for(BranchingList::const_iterator cit = branchings.lower_bound(index); // cit != branchings.upper_bound(index); ++cit ) { // IdList ids = cit->second.second; // if(ids[0]==index&&ids[1]==index&&ids[2]==ParticleID::g) { // sudakov = cit->second.first; // break; // } // } // } // if(!sudakov) throw Exception() << "Can't find Sudakov for the hard emission in " // << "DISBase::generateHardest()" // << Exception::runerror; // add the leptons vector<HardBranchingPtr> spaceBranchings,allBranchings; spaceBranchings.push_back(new_ptr(HardBranching(lepton[0],SudakovPtr(), HardBranchingPtr(), HardBranching::Incoming))); allBranchings.push_back(spaceBranchings.back()); allBranchings.push_back(new_ptr(HardBranching(lepton[1],SudakovPtr(), HardBranchingPtr(), HardBranching::Outgoing))); // compton hardest if(isCompton) { rot_.invert(); for(unsigned int ix=0;ix<ComptonMomenta_.size();++ix) { ComptonMomenta_[ix].transform(rot_); } ShowerParticlePtr newqout (new_ptr(ShowerParticle(partons_[1],true))); newqout->set5Momentum(ComptonMomenta_[1]); ShowerParticlePtr newg(new_ptr(ShowerParticle(gluon_,true))); newg->set5Momentum(ComptonMomenta_[2]); ShowerParticlePtr newqin (new_ptr(ShowerParticle(partons_[0],false ))); newqin->set5Momentum(ComptonMomenta_[0]); if(ComptonISFS_) { ShowerParticlePtr newspace(new_ptr(ShowerParticle(partons_[0],false))); newspace->set5Momentum(ComptonMomenta_[0]-ComptonMomenta_[2]); HardBranchingPtr spaceBranch(new_ptr(HardBranching(newqin,SudakovPtr(), HardBranchingPtr(), HardBranching::Incoming))); HardBranchingPtr offBranch(new_ptr(HardBranching(newspace,SudakovPtr(), spaceBranch, HardBranching::Incoming))); spaceBranch->addChild(offBranch); HardBranchingPtr g(new_ptr(HardBranching(newg,SudakovPtr(),spaceBranch, HardBranching::Outgoing))); spaceBranch->addChild(g); HardBranchingPtr outBranch(new_ptr(HardBranching(newqout,SudakovPtr(), HardBranchingPtr(), HardBranching::Outgoing))); spaceBranchings.push_back(spaceBranch); allBranchings.push_back(offBranch); allBranchings.push_back(outBranch); ColinePtr newin(new_ptr(ColourLine())),newout(new_ptr(ColourLine())); newin->addColoured(newqin,partons_[0]->id()<0); newin->addColoured(newg ,partons_[0]->id()<0); newout->addColoured(newspace,partons_[0]->id()<0); newout->addColoured(newqout,partons_[1]->id()<0); newout->addColoured(newg ,partons_[1]->id()>0); ColinePtr newline(new_ptr(ColourLine())); newline->addColoured(newspace,newspace->dataPtr()->iColour()!=PDT::Colour3); newline->addColoured(newqout ,newspace->dataPtr()->iColour()!=PDT::Colour3); } else { ShowerParticlePtr newtime(new_ptr(ShowerParticle(partons_[1],true))); newtime->set5Momentum(ComptonMomenta_[1]+ComptonMomenta_[2]); HardBranchingPtr spaceBranch(new_ptr(HardBranching(newqin,SudakovPtr(), HardBranchingPtr(), HardBranching::Incoming))); HardBranchingPtr offBranch(new_ptr(HardBranching(newtime,SudakovPtr(), HardBranchingPtr(), HardBranching::Outgoing))); HardBranchingPtr g(new_ptr(HardBranching(newg,SudakovPtr(),offBranch, HardBranching::Outgoing))); HardBranchingPtr outBranch(new_ptr(HardBranching(newqout,SudakovPtr(),offBranch, HardBranching::Outgoing))); offBranch->addChild(outBranch); offBranch->addChild(g); spaceBranchings.push_back(spaceBranch); allBranchings.push_back(spaceBranch); allBranchings.push_back(offBranch); ColinePtr newline(new_ptr(ColourLine())); newline->addColoured(newqin ,newqin->dataPtr()->iColour()!=PDT::Colour3); newline->addColoured(newtime,newqin->dataPtr()->iColour()!=PDT::Colour3); } } // BGF hardest else { rot_.invert(); for(unsigned int ix=0;ix<BGFMomenta_.size();++ix) { BGFMomenta_[ix].transform(rot_); } ShowerParticlePtr newq (new_ptr(ShowerParticle(partons_[1],true))); newq->set5Momentum(BGFMomenta_[1]); ShowerParticlePtr newqbar(new_ptr(ShowerParticle(partons_[0]->CC(),true))); newqbar->set5Momentum(BGFMomenta_[2]); ShowerParticlePtr newg (new_ptr(ShowerParticle(gluon_,false))); newg->set5Momentum(BGFMomenta_[0]); ShowerParticlePtr newspace(new_ptr(ShowerParticle(partons_[0],false))); newspace->set5Momentum(BGFMomenta_[0]-BGFMomenta_[2]); HardBranchingPtr spaceBranch(new_ptr(HardBranching(newg,SudakovPtr(),HardBranchingPtr(), HardBranching::Incoming))); HardBranchingPtr offBranch(new_ptr(HardBranching(newspace,SudakovPtr(),spaceBranch, HardBranching::Incoming))); HardBranchingPtr qbar(new_ptr(HardBranching(newqbar,SudakovPtr(),spaceBranch, HardBranching::Outgoing))); spaceBranch->addChild(offBranch); spaceBranch->addChild(qbar); HardBranchingPtr outBranch(new_ptr(HardBranching(newq,SudakovPtr(), HardBranchingPtr(), HardBranching::Outgoing))); spaceBranchings.push_back(spaceBranch); allBranchings.push_back(offBranch); allBranchings.push_back(outBranch); ColinePtr newline(new_ptr(ColourLine())); newline->addColoured(newspace,newspace->dataPtr()->iColour()!=PDT::Colour3); newline->addColoured(newq ,newspace->dataPtr()->iColour()!=PDT::Colour3); } HardTreePtr newTree(new_ptr(HardTree(allBranchings,spaceBranchings, ShowerInteraction::QCD))); // Set the maximum pt for all other emissions and connect hard and shower tree Energy pT = isCompton ? pTCompton_ : pTBGF_; // incoming particles for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { // set maximum pT if(QuarkMatcher::Check(cit->first->progenitor()->data())) cit->first->maximumpT(pT); for(set<HardBranchingPtr>::iterator cjt=newTree->branchings().begin(); cjt!=newTree->branchings().end();++cjt) { if(!(*cjt)->branchingParticle()->isFinalState()&& (*cjt)->branchingParticle()->id()==cit->first->progenitor()->id()) { newTree->connect(cit->first->progenitor(),*cjt); tPPtr beam =cit->first->original(); if(!beam->parents().empty()) beam=beam->parents()[0]; (*cjt)->beam(beam); HardBranchingPtr parent=(*cjt)->parent(); while(parent) { parent->beam(beam); parent=parent->parent(); }; } } } // outgoing particles for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { // set maximum pT if(QuarkMatcher::Check(cit->first->progenitor()->data())) cit->first->maximumpT(pT); for(set<HardBranchingPtr>::iterator cjt=newTree->branchings().begin(); cjt!=newTree->branchings().end();++cjt) { if((*cjt)->branchingParticle()->isFinalState()&& (*cjt)->branchingParticle()->id()==cit->first->progenitor()->id()) { newTree->connect(cit->first->progenitor(),*cjt); } } } // set the evolution partners and scales ShowerParticleVector particles; for(set<HardBranchingPtr>::iterator cit=newTree->branchings().begin(); cit!=newTree->branchings().end();++cit) { particles.push_back((*cit)->branchingParticle()); } // evolver()->showerModel()->partnerFinder()-> // setInitialEvolutionScales(particles,true,ShowerInteraction::QCD,true); // // Calculate the shower variables: // evolver()->showerModel()->kinematicsReconstructor()-> // deconstructHardJets(newTree,evolver(),ShowerInteraction::QCD); // for(set<HardBranchingPtr>::iterator cjt=newTree->branchings().begin(); // cjt!=newTree->branchings().end();++cjt) { // if(cjt==newTree->branchings().begin()) { // (**cjt).showerMomentum((**cjt).branchingParticle()->momentum()); // ++cjt; // (**cjt).showerMomentum((**cjt).branchingParticle()->momentum()); // ++cjt; // } // // incoming // if((**cjt).status()==HardBranching::Incoming) { // quark[0]->set5Momentum((**cjt).showerMomentum()); // } // // outgoing // else { // quark[1]->set5Momentum((**cjt).showerMomentum()); // } // } return newTree; } void DISBase::generateCompton() { // maximum value of the xT double xT = sqrt((1.-xB_)/xB_); double xTMin = 2.*pTmin_/sqrt(q2_); double zp; // prefactor double a = alpha_->overestimateValue()*comptonWeight_/Constants::twopi; // loop to generate kinematics double wgt(0.),xp(0.); vector<double> azicoeff; do { wgt = 0.; // intergration variables dxT/xT^3 xT *= 1./sqrt(1.-2.*log(UseRandom::rnd())/a*sqr(xT)); // zp zp = UseRandom::rnd(); xp = 1./(1.+0.25*sqr(xT)/zp/(1.-zp)); // check allowed if(xp<xB_||xp>1.) continue; // phase-space piece of the weight wgt = 8.*(1.-xp)*zp/comptonWeight_; // PDF piece of the weight Energy2 scale = q2_*((1.-xp)*(1-zp)*zp/xp+1.); wgt *= pdf_->xfx(beam_,partons_[0],scale,xB_/xp)/ pdf_->xfx(beam_,partons_[0],q2_ ,xB_); // me piece of the weight double x2 = 1.-(1.-zp)/xp; azicoeff = ComptonME(xp,x2,xT,false); wgt *= 4./3.*alpha_->ratio(0.25*q2_*sqr(xT))*(azicoeff[0]+0.5*azicoeff[2]); if(wgt>1.||wgt<0.) { ostringstream wstring; wstring << "DISBase::generateCompton() " << "Weight greater than one or less than zero" << "wgt = " << wgt << "\n"; generator()->logWarning( Exception(wstring.str(), Exception::warning) ); } } while(xT>xTMin&&UseRandom::rnd()>wgt); if(xT<=xTMin) { pTCompton_=-GeV; return; } // generate phi unsigned int itry(0); double phimax = std::accumulate(azicoeff.begin(),azicoeff.end(),0.); double phiwgt,phi; do { phi = UseRandom::rnd()*Constants::twopi; double cphi(cos(phi)); phiwgt = azicoeff[0]+azicoeff[1]*cphi+azicoeff[2]*sqr(cphi); ++itry; } while (phimax*UseRandom::rnd() > phiwgt && itry<200); if(itry==200) throw Exception() << "Too many tries in DISMECorrection" << "::generateCompton() to" << " generate phi" << Exception::eventerror; // momenta for the configuration Energy Q(sqrt(q2_)); double x1 = -1./xp; double x2 = 1.-(1.-zp)/xp; double x3 = 2.+x1-x2; Lorentz5Momentum p1( 0.5*Q*xT*cos(phi), 0.5*Q*xT*sin(phi), -0.5*Q*x2, 0.5*Q*sqrt(sqr(xT)+sqr(x2))); Lorentz5Momentum p2(-0.5*Q*xT*cos(phi), -0.5*Q*xT*sin(phi), -0.5*Q*x3, 0.5*Q*sqrt(sqr(xT)+sqr(x3))); Lorentz5Momentum p0(ZERO,ZERO,-0.5*Q*x1,-0.5*Q*x1); pTCompton_ = 0.5*Q*xT; ComptonMomenta_.resize(3); ComptonMomenta_[0] = p0; ComptonMomenta_[1] = p1; ComptonMomenta_[2] = p2; ComptonISFS_ = zp>xp; // debuggingMatrixElement(false,p0,p1,p2,gluon_,pl_[0],pl_[1],pq_[0],pq_[1], // leptons_[0],leptons_[1], // partons_[0],partons_[1], // q2_,phi,x2,x3,xT,zp,xp,azicoeff,false); } void DISBase::generateBGF() { // maximum value of the xT double xT = (1.-xB_)/xB_; double xTMin = 2.*max(pTmin_,pTCompton_)/sqrt(q2_); double zp; // prefactor double a = alpha_->overestimateValue()*BGFWeight_/Constants::twopi; // loop to generate kinematics double wgt(0.),xp(0.); vector<double> azicoeff; do { wgt = 0.; // intergration variables dxT/xT^3 xT *= 1./sqrt(1.-2.*log(UseRandom::rnd())/a*sqr(xT)); // zp zp = UseRandom::rnd(); xp = 1./(1.+0.25*sqr(xT)/zp/(1.-zp)); // check allowed if(xp<xB_||xp>1.) continue; // phase-space piece of the weight wgt = 8.*sqr(1.-xp)*zp/BGFWeight_; // PDF piece of the weight Energy2 scale = q2_*((1.-xp)*(1-zp)*zp/xp+1.); wgt *= pdf_->xfx(beam_,gluon_ ,scale,xB_/xp)/ pdf_->xfx(beam_,partons_[0],q2_ ,xB_); // me piece of the weight double x1 = -1./xp; double x2 = 1.-(1.-zp)/xp; double x3 = 2.+x1-x2; azicoeff = BGFME(xp,x2,x3,xT,false); wgt *= 0.5*alpha_->ratio(0.25*q2_*sqr(xT))* (azicoeff[0]+0.5*azicoeff[2]); if(wgt>1.||wgt<0.) { ostringstream wstring; wstring << "DISBase::generateBGF() " << "Weight greater than one or less than zero" << "wgt = " << wgt << "\n"; generator()->logWarning( Exception(wstring.str(), Exception::warning) ); } } while(xT>xTMin&&UseRandom::rnd()>wgt); if(xT<=xTMin) { pTBGF_=-GeV; return; } // generate phi unsigned int itry(0); double phimax = std::accumulate(azicoeff.begin(),azicoeff.end(),0.); double phiwgt,phi; do { phi = UseRandom::rnd()*Constants::twopi; double cphi(cos(phi)); phiwgt = azicoeff[0]+azicoeff[1]*cphi+azicoeff[2]*sqr(cphi); ++itry; } while (phimax*UseRandom::rnd() > phiwgt && itry<200); if(itry==200) throw Exception() << "Too many tries in DISMECorrection" << "::generateBGF() to" << " generate phi" << Exception::eventerror; // momenta for the configuration Energy Q(sqrt(q2_)); double x1 = -1./xp; double x2 = 1.-(1.-zp)/xp; double x3 = 2.+x1-x2; Lorentz5Momentum p1( 0.5*Q*xT*cos(phi), 0.5*Q*xT*sin(phi), -0.5*Q*x2, 0.5*Q*sqrt(sqr(xT)+sqr(x2))); Lorentz5Momentum p2(-0.5*Q*xT*cos(phi), -0.5*Q*xT*sin(phi), -0.5*Q*x3, 0.5*Q*sqrt(sqr(xT)+sqr(x3))); Lorentz5Momentum p0(ZERO,ZERO,-0.5*Q*x1,-0.5*Q*x1); pTBGF_=0.5*Q*xT; BGFMomenta_.resize(3); BGFMomenta_[0]=p0; BGFMomenta_[1]=p1; BGFMomenta_[2]=p2; // debuggingMatrixElement(true,p0,p1,p2,gluon_,pl_[0],pl_[1],pq_[0],pq_[1], // leptons_[0],leptons_[1], // partons_[0],partons_[1], // q2_,phi,x2,x3,xT,zp,xp,azicoeff,false); } int DISBase::nDim() const { return HwMEBase::nDim() + (contrib_>0 ? 1 : 0 ); } bool DISBase::generateKinematics(const double * r) { // Born kinematics if(!HwMEBase::generateKinematics(r)) return false; if(contrib_!=0) { // hadron and momentum fraction if(HadronMatcher::Check(*lastParticles().first->dataPtr())) { hadron_ = dynamic_ptr_cast<tcBeamPtr>(lastParticles().first->dataPtr()); xB_ = lastX1(); } else { hadron_ = dynamic_ptr_cast<tcBeamPtr>(lastParticles().second->dataPtr()); xB_ = lastX2(); } // Q2 q2_ = -(meMomenta()[0]-meMomenta()[2]).m2(); // xp int ndim=nDim(); double rhomin = pow(1.-xB_,1.-power_); double rho = r[ndim-1]*rhomin; xp_ = 1.-pow(rho,1./(1.-power_)); jac_ = rhomin/(1.-power_)*pow(1.-xp_,power_); jacobian(jacobian()*jac_); } return true; } Energy2 DISBase::scale() const { return scaleOpt_ == 1 ? -sqr(scaleFact_)*tHat() : sqr(scaleFact_*muF_); } CrossSection DISBase::dSigHatDR() const { return NLOWeight()*HwMEBase::dSigHatDR(); } double DISBase::NLOWeight() const { // If only leading order is required return 1: if(contrib_==0) return 1.; // scale and prefactors Energy2 mu2(scale()); double aS = SM().alphaS(mu2); double CFfact = 4./3.*aS/Constants::twopi; double TRfact = 1./2.*aS/Constants::twopi; // LO + dipole subtracted virtual + collinear quark bit with LO pdf double virt = 1.+CFfact*(-4.5-1./3.*sqr(Constants::pi)+1.5*log(q2_/mu2/(1.-xB_)) +2.*log(1.-xB_)*log(q2_/mu2)+sqr(log(1.-xB_))); virt /= jac_; // PDF from leading-order double loPDF = hadron_->pdf()->xfx(hadron_,mePartonData()[1],mu2,xB_)/xB_; // NLO gluon PDF tcPDPtr gluon = getParticleData(ParticleID::g); double gPDF = hadron_->pdf()->xfx(hadron_,gluon,mu2,xB_/xp_)*xp_/xB_; // NLO quark PDF double qPDF = hadron_->pdf()->xfx(hadron_,mePartonData()[1],mu2,xB_/xp_)*xp_/xB_; // collinear counterterms // gluon double collg = TRfact/xp_*gPDF*(2.*xp_*(1.-xp_)+(sqr(xp_)+sqr(1.-xp_))*log((1.-xp_)*q2_/xp_/mu2)); // quark double collq = CFfact/xp_*qPDF*(1-xp_-2./(1.-xp_)*log(xp_)-(1.+xp_)*log((1.-xp_)/xp_*q2_/mu2))+ CFfact/xp_*(qPDF-xp_*loPDF)*(2./(1.-xp_)*log(q2_*(1.-xp_)/mu2)-1.5/(1.-xp_)); // calculate the A coefficient for the real pieces double a(A(mePartonData()[0],mePartonData()[2], mePartonData()[1],mePartonData()[3],q2_)); // cacluate lepton kinematic variables Lorentz5Momentum q = meMomenta()[0]-meMomenta()[2]; double yB = (q*meMomenta()[1])/(meMomenta()[0]*meMomenta()[1]); double l = 2./yB-1.; // q -> qg term double realq = CFfact/xp_/(1.+a*l+sqr(l))*qPDF/loPDF* (2.+2.*sqr(l)-xp_+3.*xp_*sqr(l)+a*l*(2.*xp_+1.)); // g -> q qbar term double realg =-TRfact/xp_/(1.+a*l+sqr(l))*gPDF/loPDF* ((1.+sqr(l)+2.*(1.-3.*sqr(l))*xp_*(1.-xp_)) +2.*a*l*(1.-2.*xp_*(1.-xp_))); // return the full result double wgt = virt+((collq+collg)/loPDF+realq+realg); // double f2g = gPDF/xp_*TRfact*((sqr(1-xp_)+sqr(xp_))*log((1-xp_)/xp_)+ // 8*xp_*(1.-xp_)-1.); // double f2q = // loPDF/jac_*(1.+CFfact*(-1.5*log(1.-xB_)+sqr(log(1.-xB_)) // -sqr(Constants::pi)/3.-4.5)) // +qPDF *CFfact/xp_*(3.+2.*xp_-(1.+xp_)*log(1.-xp_) // -(1.+sqr(xp_))/(1.-xp_)*log(xp_)) // +(qPDF-xp_*loPDF)*CFfact/xp_*(2.*log(1.-xp_)/(1.-xp_)-1.5/(1.-xp_)); // double wgt = (f2g+f2q)/loPDF; return contrib_ == 1 ? max(0.,wgt) : max(0.,-wgt); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/HardVertex.fh�����������������������������������������������������0000644�0001750�0001750�00000000455�11754474776�022156� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the HardVertex class. // #ifndef HERWIG_HardVertex_FH #define HERWIG_HardVertex_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { using namespace ThePEG; class HardVertex; ThePEG_DECLARE_POINTERS(HardVertex,HardVertexPtr); } #endif �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/�����������������������������������������������������������0000755�0001750�0001750�00000000000�11756464210�020770� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEPP2VVPowheg.cc�������������������������������������������0000644�0001750�0001750�00000634506�11754474775�023605� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEPP2VVPowheg.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2VVPowheg class. // #include "MEPP2VVPowheg.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "Herwig++/Decay/DecayMatrixElement.h" using namespace Herwig; MEPP2VVPowheg::MEPP2VVPowheg() : tiny(1.e-10), CF_(4./3.), TR_(0.5), NC_(3.), contrib_(1), channels_(0), nlo_alphaS_opt_(0) , fixed_alphaS_(0.1180346226), removebr_(1), scaleopt_(1), mu_F_(100.*GeV), mu_UV_(100.*GeV), ckm_(3,vector<Complex>(3,0.0)), helicityConservation_(true), realMESpinCorrelations_(true), power_(2.0), preqqbar_(3.7),preqg_(16.0),pregqbar_(11.0), b0_((11.-2./3.*5.)/4./Constants::pi), LambdaQCD_(91.118*GeV*exp(-1./2./((11.-2./3.*5.)/4./Constants::pi)/0.118)), min_pT_(2.*GeV){ massOption(vector<unsigned int>(2,1)); } void MEPP2VVPowheg::persistentOutput(PersistentOStream & os) const { os << contrib_ << channels_ << nlo_alphaS_opt_ << fixed_alphaS_ << removebr_ << scaleopt_ << ounit(mu_F_,GeV) << ounit(mu_UV_,GeV) << ckm_ << helicityConservation_ << FFPvertex_ << FFWvertex_ << FFZvertex_ << WWWvertex_ << FFGvertex_ << realMESpinCorrelations_ << showerAlphaS_ << power_ << preqqbar_ << preqg_ << pregqbar_ << prefactor_ << b0_ << ounit(LambdaQCD_,GeV) << ounit( min_pT_,GeV ); } void MEPP2VVPowheg::persistentInput(PersistentIStream & is, int) { is >> contrib_ >> channels_ >> nlo_alphaS_opt_ >> fixed_alphaS_ >> removebr_ >> scaleopt_ >> iunit(mu_F_,GeV) >> iunit(mu_UV_,GeV) >> ckm_ >> helicityConservation_ >> FFPvertex_ >> FFWvertex_ >> FFZvertex_ >> WWWvertex_ >> FFGvertex_ >> realMESpinCorrelations_ >> showerAlphaS_ >> power_ >> preqqbar_ >> preqg_ >> pregqbar_ >> prefactor_ >> b0_ >> iunit(LambdaQCD_,GeV) >> iunit( min_pT_, GeV ); } ClassDescription<MEPP2VVPowheg> MEPP2VVPowheg::initMEPP2VVPowheg; // Definition of the static class description member. void MEPP2VVPowheg::Init() { static ClassDocumentation<MEPP2VVPowheg> documentation ("The MEPP2VVPowheg class implements the NLO matrix elements for the production of" "pairs of electroweak vector bosons.", "The calcultaion of $W^+W^-$, $W^\\pm Z^0$ and $Z^0Z^0$ production" " in hadron collisions at next-to-leading order in the POWHEG scheme" " is described in \\cite{Hamilton:2010mb}.", "\\bibitem{Hamilton:2010mb}\n" " K.~Hamilton,\n" "%``A positive-weight next-to-leading order simulation of weak boson pair\n" "%production,''\n" "JHEP {\bf 1101} (2011) 009\n" "[arXiv:1009.5391 [hep-ph]].\n" "%%CITATION = JHEPA,1101,009;%%\n"); static Switch<MEPP2VVPowheg,unsigned int> interfaceContribution ("Contribution", "Which contributions to the cross section to include", &MEPP2VVPowheg::contrib_, 1, false, false); static SwitchOption interfaceContributionLeadingOrder (interfaceContribution, "LeadingOrder", "Just generate the leading order cross section", 0); static SwitchOption interfaceContributionPositiveNLO (interfaceContribution, "PositiveNLO", "Generate the positive contribution to the full NLO cross section", 1); static SwitchOption interfaceContributionNegativeNLO (interfaceContribution, "NegativeNLO", "Generate the negative contribution to the full NLO cross section", 2); static Switch<MEPP2VVPowheg,unsigned int> interfaceChannels ("Channels", "Which channels to include in the cross section", &MEPP2VVPowheg::channels_, 0, false, false); static SwitchOption interfaceChannelsAll (interfaceChannels, "All", "All channels required for the full NLO cross section: qqb, qg, gqb", 0); static SwitchOption interfaceChannelsAnnihilation (interfaceChannels, "Annihilation", "Only include the qqb annihilation channel, omitting qg and gqb channels", 1); static SwitchOption interfaceChannelsCompton (interfaceChannels, "Compton", "Only include the qg and gqb compton channels, omitting all qqb processes", 2); static Switch<MEPP2VVPowheg,unsigned int> interfaceNLOalphaSopt ("NLOalphaSopt", "An option allowing you to supply a fixed value of alpha_S " "through the FixedNLOAlphaS interface.", &MEPP2VVPowheg::nlo_alphaS_opt_, 0, false, false); static SwitchOption interfaceNLOalphaSoptRunningAlphaS (interfaceNLOalphaSopt, "RunningAlphaS", "Use the usual running QCD coupling evaluated at scale mu_UV2()", 0); static SwitchOption interfaceNLOalphaSoptFixedAlphaS (interfaceNLOalphaSopt, "FixedAlphaS", "Use a constant QCD coupling for comparison/debugging purposes", 1); static Parameter<MEPP2VVPowheg,double> interfaceFixedNLOalphaS ("FixedNLOalphaS", "The value of alphaS to use for the nlo weight if nlo_alphaS_opt_=1", &MEPP2VVPowheg::fixed_alphaS_, 0.1180346226, 0., 1.0, false, false, Interface::limited); static Switch<MEPP2VVPowheg,unsigned int> interfaceremovebr ("removebr", "Whether to multiply the event weights by the MCFM branching ratios", &MEPP2VVPowheg::removebr_, 1, false, false); static SwitchOption interfaceProductionCrossSection (interfaceremovebr, "true", "Do not multiply in the branching ratios (default running)", 1); static SwitchOption interfaceIncludeBRs (interfaceremovebr, "false", "Multiply by MCFM branching ratios for comparison/debugging purposes", 0); static Switch<MEPP2VVPowheg,unsigned int> interfaceScaleOption ("ScaleOption", "Option for running / fixing EW and QCD factorization & renormalization scales", &MEPP2VVPowheg::scaleopt_, 1, false, false); static SwitchOption interfaceDynamic (interfaceScaleOption, "Dynamic", "QCD factorization & renormalization scales are sqr(pV1+pV2). " "EW scale is (mV1^2+mV2^2)/2 (similar to MCatNLO)", 1); static SwitchOption interfaceFixed (interfaceScaleOption, "Fixed", "QCD factorization fixed to value by FactorizationScaleValue." "EW and QCD renormalization scales fixed by RenormalizationScaleValue.", 2); static Parameter<MEPP2VVPowheg,Energy> interfaceFactorizationScaleValue ("FactorizationScaleValue", "Value to use for the QCD factorization scale if fixed scales" "have been requested with the ScaleOption interface.", &MEPP2VVPowheg::mu_F_, GeV, 100.0*GeV, 50.0*GeV, 500.0*GeV, true, false, Interface::limited); static Parameter<MEPP2VVPowheg,Energy> interfaceRenormalizationScaleValue ("RenormalizationScaleValue", "Value to use for the EW and QCD renormalization scales if fixed " "scales have been requested with the ScaleOption interface.", &MEPP2VVPowheg::mu_UV_, GeV, 100.0*GeV, 50.0*GeV, 500.0*GeV, true, false, Interface::limited); static Switch<MEPP2VVPowheg,bool> interfaceSpinCorrelations ("SpinCorrelations", "Flag to select leading order spin correlations or a " "calculation taking into account the real NLO effects", &MEPP2VVPowheg::realMESpinCorrelations_, 1, false, false); static SwitchOption interfaceSpinCorrelationsLeadingOrder (interfaceSpinCorrelations, "LeadingOrder", "Decay bosons using a leading order 2->2 calculation of the " "production spin density matrix", 0); static SwitchOption interfaceSpinCorrelationsRealNLO (interfaceSpinCorrelations, "RealNLO", "Decay bosons using a production spin density matrix which " "takes into account the effects of real radiation", 1); static Reference<MEPP2VVPowheg,ShowerAlpha> interfaceCoupling ("Coupling", "The object calculating the strong coupling constant", &MEPP2VVPowheg::showerAlphaS_, false, false, true, false, false); static Parameter<MEPP2VVPowheg,double> interfacePower ("Power", "The power for the sampling of the matrix elements", &MEPP2VVPowheg::power_, 2.0, 1.0, 10.0, false, false, Interface::limited); static Parameter<MEPP2VVPowheg,double> interfacePrefactorqqbar ("Prefactorqqbar", "The prefactor for the sampling of the q qbar channel", &MEPP2VVPowheg::preqqbar_, 5.0, 0.0, 1000.0, false, false, Interface::limited); static Parameter<MEPP2VVPowheg,double> interfacePrefactorqg ("Prefactorqg", "The prefactor for the sampling of the q g channel", &MEPP2VVPowheg::preqg_, 3.0, 0.0, 1000.0, false, false, Interface::limited); static Parameter<MEPP2VVPowheg,double> interfacePrefactorgqbar ("Prefactorgqbar", "The prefactor for the sampling of the g qbar channel", &MEPP2VVPowheg::pregqbar_, 3.0, 0.0, 1000.0, false, false, Interface::limited); static Parameter<MEPP2VVPowheg, Energy> interfacepTMin ("minPt", "The pT cut on hardest emision generation" "2*(1-Beta)*exp(-sqr(intrinsicpT/RMS))/sqr(RMS)", &MEPP2VVPowheg::min_pT_, GeV, 2.*GeV, ZERO, 100000.0*GeV, false, false, Interface::limited); } Energy2 MEPP2VVPowheg::scale() const { // N.B. This scale is the electroweak scale! // It is used in the evaluation of the LO code // in the MEPP2VV base class. This means it // should appear in the denominator of the // NLOweight here and all other LO parts like // the function for the lumi ratio (Lhat). It // should also be used for evaluating any EW // parameters / vertices in the numerator. // The scaleopt_ == 1 "running" option is // chosen to be like the MC@NLO one (it ought // to be more like sHat instead?). return scaleopt_ == 1 ? // 0.5*(meMomenta()[2].m2()+meMomenta()[3].m2()) : sqr(mu_UV_); sHat() : sqr(mu_UV_); } Energy2 MEPP2VVPowheg::mu_F2() const { return scaleopt_ == 1 ? // ((H_.k1r()).m2()+k1r_perp2_lab_+(H_.k2r()).m2()+k2r_perp2_lab_)/2. : sqr(mu_F_); sHat() : sqr(mu_F_); } Energy2 MEPP2VVPowheg::mu_UV2() const { return scaleopt_ == 1 ? // ((H_.k1r()).m2()+k1r_perp2_lab_+(H_.k2r()).m2()+k2r_perp2_lab_)/2. : sqr(mu_UV_); sHat() : sqr(mu_UV_); } void MEPP2VVPowheg::doinit() { MEPP2VV::doinit(); // get the vertices we need // get a pointer to the standard model object in the run static const tcHwSMPtr hwsm = dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if (!hwsm) throw InitException() << "missing hwsm pointer in MEPP2VVPowheg::doinit()" << Exception::abortnow; // get pointers to all required Vertex objects FFPvertex_ = hwsm->vertexFFP(); FFZvertex_ = hwsm->vertexFFZ(); WWWvertex_ = hwsm->vertexWWW(); FFWvertex_ = hwsm->vertexFFW(); FFGvertex_ = hwsm->vertexFFG(); // get the ckm object Ptr<StandardCKM>::pointer theCKM=dynamic_ptr_cast<Ptr<StandardCKM>::pointer>(SM().CKM()); if(!theCKM) throw InitException() << "MEPP2VVPowheg::doinit() " << "the CKM object must be the Herwig one" << Exception::runerror; unsigned int ix,iy; // get the CKM matrix (unsquared for interference) vector< vector<Complex > > CKM(theCKM->getUnsquaredMatrix(SM().families())); for(ix=0;ix<3;++ix){for(iy=0;iy<3;++iy){ckm_[ix][iy]=CKM[ix][iy];}} // insert the different prefactors in the vector for easy look up prefactor_.push_back(preqqbar_); prefactor_.push_back(preqg_); prefactor_.push_back(pregqbar_); } int MEPP2VVPowheg::nDim() const { int output = MEPP2VV::nDim(); // See related comment in MEPP2VVPowheg::generateKinematics! if(contrib_>0) output += 2; return output; } bool MEPP2VVPowheg::generateKinematics(const double * r) { // N.B. A fix was made to make theta2 a radiative // variable in r4532. Originally theta2 was take to // be the azimuthal angle coming from the generation // of the Born kinematics inherited from MEPP2VV i.e. // before the change theta2 was a random number between // 0 and 2pi. On changing theta2 was set to be // theta2 = (*(r+3)) * 2.*Constants::pi; // and nDim returned if(contrib_>0) output += 3; // In the months following it was noticed that agreement // with MCFM was per mille at Tevatron energies but got // close to 1 percent for LHC energies (for all VV // processes). After searching back up the svn branch // running 2M events each time, the change was spotted // to occur on r4532. Changing: // if(contrib_>0) output += 3; // in ::nDim() and also, // xt = (*(r +nDim() -3)); // y = (*(r +nDim() -2)) * 2. - 1.; // theta2 = (*(r +nDim() -1)) * 2.*Constants::pi; // did not fix the problem. The following code gives the // same good level of agreement at LHC and TVT: double xt( -999.); double y( -999.); double theta2( -999.); if(contrib_>0) { // Generate the radiative integration variables: xt = (*(r +nDim() -2)); y = (*(r +nDim() -1)) * 2. - 1.; // KH 19th August - next line changed for phi in 0->pi not 0->2pi // theta2 = UseRandom::rnd() * 2.*Constants::pi; theta2 = UseRandom::rnd() *Constants::pi; } // Continue with lo matrix element code: bool output(MEPP2VV::generateKinematics(r)); // Work out the kinematics for the leading order / virtual process // and also get the leading order luminosity function: getKinematics(xt,y,theta2); return output; } double MEPP2VVPowheg::me2() const { double output(0.0); useMe(); output = MEPP2VV::me2(); double mcfm_brs(1.); if(!removebr_) { switch(MEPP2VV::process()) { case 1: // W+(->e+,nu_e) W-(->e-,nu_ebar) (MCFM: 61 [nproc]) mcfm_brs *= 0.109338816; mcfm_brs *= 0.109338816; break; case 2: // W+/-(mu+,nu_mu / mu-,nu_mubar) Z(nu_e,nu_ebar) // (MCFM: 72+77 [nproc]) mcfm_brs *= 0.109338816; mcfm_brs *= 0.06839002; break; case 3: // Z(mu-,mu+) Z(e-,e+) (MCFM: 86 [nproc]) mcfm_brs *= 0.034616433; mcfm_brs *= 0.034616433; mcfm_brs *= 2.; // as identical particle factor 1/2 is now obsolete. break; case 4: // W+(mu+,nu_mu) Z(nu_e,nu_ebar) (MCFM: 72 [nproc]) mcfm_brs *= 0.109338816; mcfm_brs *= 0.06839002; break; case 5: // W-(mu-,nu_mubar) Z(nu_e,nu_ebar) (MCFM: 77 [nproc]) mcfm_brs *= 0.109338816; mcfm_brs *= 0.06839002; break; } } // Store the value of the leading order squared matrix element: lo_me2_ = output; output *= NLOweight(); output *= mcfm_brs; return output; } void MEPP2VVPowheg::getKinematics(double xt, double y, double theta2) { // In this member we want to get the lo_lumi_ as this is a // common denominator in the NLO weight. We want also the // bornVVKinematics object and all of the realVVKinematics // objects needed for the NLO weight. // Check if the W- is first in W+W- production. Already confirmed // mePartonData()[0] is a quark, and mePartonData()[1] is an antiquark. // We assume mePartonData[2] and mePartonData[3] are, respectively, // W+/- Z, W+/- W-/+, or Z Z. bool wminus_first(false); if((mePartonData()[2]->id()==-24)&&(mePartonData()[3]->id()==24)) wminus_first=true; // Now get all data on the LO process needed for the NLO computation: // The +z hadron in the lab: hadron_A_=dynamic_ptr_cast<Ptr<BeamParticleData>::transient_const_pointer> (lastParticles().first->dataPtr()); // The -z hadron in the lab: hadron_B_=dynamic_ptr_cast<Ptr<BeamParticleData>::transient_const_pointer> (lastParticles().second->dataPtr()); // Leading order momentum fractions: double xa(lastX1()); // The +z momentum fraction in the lab. double xb(lastX2()); // The -z momentum fraction in the lab. // Particle data for incoming +z & -z QCD particles respectively: ab_ = lastPartons().first ->dataPtr(); // The +z momentum parton in the lab. bb_ = lastPartons().second->dataPtr(); // The -z momentum parton in the lab. // We checked TVT & LHC for all VV channels with 10K events: // lastParticles().first ->momentum().z() is always positive // lastParticles().second->momentum().z() is always negative // lastParticles().first ->momentum().z()*xa=lastPartons().first ->momentum().z() 1 in 10^6 // lastParticles().second->momentum().z()*xb=lastPartons().second->momentum().z() 1 in 10^6 // Set the quark and antiquark data pointers. quark_ = mePartonData()[0]; antiquark_ = mePartonData()[1]; if(quark_->id()<0) swap(quark_,antiquark_); // Now in _our_ calculation we basically define the +z axis as being // given by the direction of the incoming quark for q+qb & q+g processes // and the incoming gluon for g+qbar processes. So now we might need to // flip the values of hadron_A_, hadron_B_, ab_, bb_, xa, xb accordingly: if(ab_->id()!=quark_->id()) { swap(hadron_A_,hadron_B_); swap(ab_,bb_); swap(xa,xb); } // So hadron_A_ is the thing containing a quark (ab_) with momentum frac xa, // hadron_B_ is the thing containing an antiquark (bb_) with momentum frac xb. // Now get the partonic flux for the Born process: lo_lumi_ = hadron_A_->pdf()->xfx(hadron_A_,ab_,scale(),xa)/xa * hadron_B_->pdf()->xfx(hadron_B_,bb_,scale(),xb)/xb; // For W+W- events make sure k1 corresponds to the W+ momentum: if(MEPP2VV::process()==1&&wminus_first) swap(meMomenta()[2],meMomenta()[3]); // Create the object containing all 2->2 __kinematic__ information: B_ = bornVVKinematics(meMomenta(),xa,xb); // We checked that meMomenta()[0] (quark) is in the +z direction and meMomenta()[1] // is in the -z direction (antiquark). // Revert momentum swap in case meMomenta and mePartonData correlation // needs preserving for other things. if(MEPP2VV::process()==1&&wminus_first) swap(meMomenta()[2],meMomenta()[3]); // Check the Born kinematics objects is internally consistent: // B_.sanityCheck(); // If we are going beyond leading order then lets calculate all of // the necessary real emission kinematics. if(contrib_>0) { // Soft limit of the 2->3 real emission kinematics: S_ = realVVKinematics(B_, 1., y, theta2); // Soft-collinear limit of the 2->3 kinematics (emission in +z direction): SCp_ = realVVKinematics(B_, 1., 1., theta2); // Soft-collinear limit of the 2->3 kinematics (emission in -z direction): SCm_ = realVVKinematics(B_, 1.,-1., theta2); // Collinear limit of the 2->3 kinematics (emission in +z direction): Cp_ = realVVKinematics(B_, xt, 1., theta2); // Collinear limit of the 2->3 kinematics (emission in -z direction): Cm_ = realVVKinematics(B_, xt,-1., theta2); // The resolved 2->3 real emission kinematics: H_ = realVVKinematics(B_, xt, y, theta2); // Borrowed from VVhardGenerator (lab momenta of k1,k2): Energy pT(sqrt(H_.pT2_in_lab())); LorentzRotation yzRotation; yzRotation.setRotateX(-atan2(pT/GeV,sqrt(B_.sb())/GeV)); LorentzRotation boostFrompTisZero; boostFrompTisZero.setBoostY(-pT/sqrt(B_.sb()+pT*pT)); LorentzRotation boostFromYisZero; boostFromYisZero.setBoostZ(tanh(B_.Yb())); k1r_perp2_lab_ = (boostFromYisZero*boostFrompTisZero*yzRotation*(H_.k1r())).perp2(); k2r_perp2_lab_ = (boostFromYisZero*boostFrompTisZero*yzRotation*(H_.k2r())).perp2(); // Check all the real kinematics objects are internally consistent: // S_.sanityCheck(); // SCp_.sanityCheck(); // SCm_.sanityCheck(); // Cp_.sanityCheck(); // Cm_.sanityCheck(); // H_.sanityCheck(); } return; } double MEPP2VVPowheg::NLOweight() const { // If only leading order is required return 1: if(contrib_==0) return lo_me()/lo_me2_; // Calculate alpha_S and alpha_S/(2*pi). alphaS_ = nlo_alphaS_opt_==1 ? fixed_alphaS_ : SM().alphaS(mu_UV2()); double alsOn2pi(alphaS_/2./pi); // Particle data objects for the new plus and minus colliding partons. tcPDPtr gluon; gluon = getParticleData(ParticleID::g); // Get the all couplings. gW_ = sqrt(4.0*pi*SM().alphaEM(scale())/SM().sin2ThetaW()); sin2ThetaW_ = SM().sin2ThetaW(); double cosThetaW(sqrt(1.-sin2ThetaW_)); guL_ = gW_/2./cosThetaW*( 1.-4./3.*sin2ThetaW_); gdL_ = gW_/2./cosThetaW*(-1.+2./3.*sin2ThetaW_); guR_ = gW_/2./cosThetaW*( -4./3.*sin2ThetaW_); gdR_ = gW_/2./cosThetaW*( +2./3.*sin2ThetaW_); eZ_ = gW_*cosThetaW; eZ2_ = sqr(eZ_); // MCFM has gwsq = 0.4389585130009 -> gw = 0.662539442600115 // Here we have gW_ = 0.662888 // MCFM has xw = 0.22224653300000 -> sqrt(xw) = 0.471430306 // Here we have 0.222247 // MCFM has esq = 0.097557007645279 -> e = 0.31234117187024679 // Here we have 4.0*pi*SM().alphaEM(sqr(100.*GeV)) = 0.0976596 // If the process is W-Z instead of W+Z we must transform these // couplings as follows, according to NPB 383(1992)3-44 Eq.3.23 if(mePartonData()[2]->id()==-24&&mePartonData()[3]->id()==23) { swap(guL_,gdL_); eZ_ *= -1.; } // Get the CKM entry. Note that this code was debugged // considerably; the call to CKM(particle,particle) // did not appear to work, so we extract the elements // as follows below. The right numbers now appear to // to be associated with the right quarks. double Kij(-999.); // W+Z / W-Z if(abs(mePartonData()[2]->id())==24&&mePartonData()[3]->id()==23) { int up_id(-999),dn_id(-999); if(abs(quark_->id())%2==0&&abs(antiquark_->id())%2==1) { up_id = abs(quark_->id()); dn_id = abs(antiquark_->id()); } else if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==0) { up_id = abs(antiquark_->id()); dn_id = abs(quark_->id()); } else { cout << "MEPP2VVPowheg:" << endl; cout << "WZ needs an up and a down type quark as incoming!" << endl; } up_id /= 2; up_id -= 1; dn_id -= 1; dn_id /= 2; Kij = sqrt(SM().CKM(up_id,dn_id)); } // W+W- else if(abs(mePartonData()[2]->id())==24&&abs(mePartonData()[3]->id())==24) { if(abs(quark_->id())%2==0&&abs(antiquark_->id())%2==0) { int up_ida(abs(quark_->id())/2-1); int up_idb(abs(antiquark_->id())/2-1); Kij = sqrt(std::norm( CKM(up_ida,0)*CKM(up_idb,0) + CKM(up_ida,1)*CKM(up_idb,1) + CKM(up_ida,2)*CKM(up_idb,2))); } else if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==1) { int dn_ida((abs(quark_->id())-1)/2); int dn_idb((abs(antiquark_->id())-1)/2); Kij = sqrt(std::norm( CKM(0,dn_ida)*CKM(0,dn_idb) + CKM(1,dn_ida)*CKM(1,dn_idb) + CKM(2,dn_ida)*CKM(2,dn_idb))); } else { cout << "MEPP2VVPowheg:" << endl; cout << "WW needs 2 down-type / 2 up-type!" << endl; } } // ZZ else if(mePartonData()[2]->id()==23&&mePartonData()[3]->id()==23) { Kij = 2.*sqrt(2.)/gW_; } else { cout << "MEPP2VVPowheg: incompatible final state particles!" << endl; } Fij2_ = sqr(gW_/2./sqrt(2.)*Kij); // Get the leading order matrix element (this is necessary!) M_Born_ = M_Born_WZ(B_); // // Get the regular part of the virtual correction (only needed for sanityCheck()!) // M_V_regular_ = M_V_regular(S_); // // Get the q + qbar real emission matrix element (only needed for sanityCheck()!) // t_u_M_R_qqb_ = t_u_M_R_qqb(H_); // Calculate the integrand double wgt(0.); double wqqb(0.); double wgqb(0.); double wqg(0.); double wqqbvirt(0.); double wqqbcollin(0.); double wqqbreal(0.); double wqgcollin(0.); double wqgreal(0.); double wgqbcollin(0.); double wgqbreal(0.); if(channels_==0||channels_==1) { // q+qb wqqbvirt = Vtilde_universal(S_) + M_V_regular(S_)/lo_me2_; wqqbcollin = alsOn2pi*( Ctilde_Ltilde_qq_on_x(quark_,antiquark_,Cp_) + Ctilde_Ltilde_qq_on_x(quark_,antiquark_,Cm_) ); wqqbreal = alsOn2pi*Rtilde_Ltilde_qqb_on_x(quark_,antiquark_); wqqb = wqqbvirt + wqqbcollin + wqqbreal; } if(channels_==0||channels_==2) { // q+g wqgcollin = alsOn2pi*Ctilde_Ltilde_gq_on_x(quark_,gluon,Cm_); wqgreal = alsOn2pi*Rtilde_Ltilde_qg_on_x(quark_,gluon); wqg = wqgreal + wqgcollin; // g+qb wgqbcollin = alsOn2pi*Ctilde_Ltilde_gq_on_x(gluon,antiquark_,Cp_); wgqbreal = alsOn2pi*Rtilde_Ltilde_gqb_on_x(gluon,antiquark_); wgqb = wgqbreal+wgqbcollin; } // total contribution wgt = 1.+(wqqb+wgqb+wqg); // If restricting to qg, gqb channels then subtract the LO contribution: if(channels_==2) wgt -= 1.; if(isnan(wgt)||isinf(wgt)) { cout << "MEPP2VVPowheg:: NLO weight " << "is bad: wgt = " << wgt << endl; cout << "MEPP2VVPowheg sanityCheck invoked!" << endl; cout << ab_->PDGName() << ", " << bb_->PDGName() << ", " << mePartonData()[2]->PDGName() << ", " << mePartonData()[3]->PDGName() << endl; cout << "lo_me2_ - M_Born_ (rel) = " << lo_me2_-M_Born_ << " (" << (lo_me2_-M_Born_)/M_Born_ << ")\n"; cout << "lo_me2_, M_Born_ " << lo_me2_ << ", " << M_Born_ << endl; cout << "xr = " << H_.xr() << " 1-xr = " << 1.-H_.xr() << " y = " << H_.y() << endl; cout << "tkr = " << H_.tkr()/GeV2 << " ukr = " << H_.ukr()/GeV2 << endl; cout << "root(sb) = " << sqrt(B_.sb())/GeV << endl; cout << "sb+tb+ub = " << B_.sb()/GeV2 << " + " << B_.tb()/GeV2 << " + " << B_.ub()/GeV2 << endl; cout << "sqrt(k12) " << sqrt(H_.k12r())/GeV << endl; cout << "sqrt(k22) " << sqrt(H_.k22r())/GeV << endl; cout << "sqr(Kij) " << Kij*Kij << endl; cout << "wqqbvirt " << wqqbvirt << endl; cout << "wqqbcollin " << wqqbcollin << endl; cout << "wqqbreal " << wqqbreal << endl; cout << "wqqb " << wqqb << endl; cout << "wqgcollin " << wqgcollin << endl; cout << "wqgreal " << wqgreal << endl; cout << "wqg " << wqg << endl; cout << "wgqbcollin " << wgqbcollin << endl; cout << "wgqbreal " << wgqbreal << endl; cout << "wgqb " << wgqb << endl; cout << "wgt " << wgt << endl; throw Exception() << "MEPP2VVPowheg:: NLO weight " << "is bad: " << wgt << Exception::eventerror; } return contrib_==1 ? max(0.,wgt) : max(0.,-wgt); } double MEPP2VVPowheg::Lhat_ab(tcPDPtr a, tcPDPtr b, realVVKinematics Kinematics) const { if(!(abs(a->id())<=6||a->id()==21)||!(abs(b->id())<=6||b->id()==21)) cout << "MEPP2VVPowheg::Lhat_ab: Error," << "particle a = " << a->PDGName() << ", " << "particle b = " << b->PDGName() << endl; double nlo_lumi(-999.); double x1(Kinematics.x1r()),x2(Kinematics.x2r()); nlo_lumi = (hadron_A_->pdf()->xfx(hadron_A_,a,mu_F2(),x1)/x1) * (hadron_B_->pdf()->xfx(hadron_B_,b,mu_F2(),x2)/x2); return nlo_lumi / lo_lumi_; } double MEPP2VVPowheg::Vtilde_universal(realVVKinematics S) const { double xbar_y = S.xbar(); double y = S.y(); double eta1b(S.bornVariables().eta1b()); double eta2b(S.bornVariables().eta2b()); Energy2 sb(S.s2r()); return alphaS_/2./pi*CF_ * ( log(sb/mu_F2()) * (3. + 4.*log(eta1b)+4.*log(eta2b)) + 8.*sqr(log(eta1b)) +8.*sqr(log(eta2b)) - 2.*sqr(pi)/3. ) + alphaS_/2./pi*CF_ * ( 8./(1.+y)*log(sqrt(1.-xbar_y)/eta2b) + 8./(1.-y)*log(sqrt(1.-xbar_y)/eta1b) ); } double MEPP2VVPowheg::Ctilde_Ltilde_qq_on_x(tcPDPtr a, tcPDPtr b, realVVKinematics C) const { if(C.y()!= 1.&&C.y()!=-1.) cout << "\nCtilde_qq::y value not allowed."; if(C.y()== 1.&&!(abs(a->id())>0&&abs(a->id())<7)) cout << "\nCtilde_qq::for Cqq^plus a must be a quark! id = " << a->id() << "\n"; if(C.y()==-1.&&!(abs(b->id())>0&&abs(b->id())<7)) cout << "\nCtilde_qq::for Cqq^minus b must be a quark! id = " << b->id() << "\n"; double xt = C.xt(); double x = C.xr(); double etab = C.y() == 1. ? C.bornVariables().eta1b() : C.bornVariables().eta2b() ; Energy2 sb(C.s2r()); if(fabs(1.-xt)<=tiny||fabs(1.-H_.xr())<=tiny) return 0.; return ( ( (1./(1.-xt))*log(sb/mu_F2()/x)+4.*log(etab)/(1.-xt) + 2.*log(1.-xt)/(1.-xt) )*CF_*(1.+sqr(x)) + sqr(etab)*CF_*(1.-x) )*Lhat_ab(a,b,C) / x - ( ( (1./(1.-xt))*log(sb/mu_F2() )+4.*log(etab)/(1.-xt) + 2.*log(1.-xt)/(1.-xt) )*CF_*2. )*Lhat_ab(a,b,S_); } double MEPP2VVPowheg::Ctilde_Ltilde_gq_on_x(tcPDPtr a, tcPDPtr b, realVVKinematics C) const { if(C.y()!= 1.&&C.y()!=-1.) cout << "\nCtilde_gq::y value not allowed."; if(C.y()== 1.&&a->id()!=21) cout << "\nCtilde_gq::for Cgq^plus a must be a gluon! id = " << a->id() << "\n"; if(C.y()==-1.&&b->id()!=21) cout << "\nCtilde_gq::for Cgq^minus b must be a gluon! id = " << b->id() << "\n"; double xt = C.xt(); double x = C.xr(); double etab = C.y() == 1. ? C.bornVariables().eta1b() : C.bornVariables().eta2b() ; Energy2 sb(C.s2r()); return ( ( (1./(1.-xt))*log(sb/mu_F2()/x)+4.*log(etab)/(1.-xt) + 2.*log(1.-xt)/(1.-xt) )*(1.-x)*TR_*(sqr(x)+sqr(1.-x)) + sqr(etab)*TR_*2.*x*(1.-x) )*Lhat_ab(a,b,C) / x; } double MEPP2VVPowheg::Rtilde_Ltilde_qqb_on_x(tcPDPtr a , tcPDPtr b) const { if(!(abs(a->id())<=6||a->id()==21)||!(abs(b->id())<=6||b->id()==21)) cout << "MEPP2VVPowheg::Rtilde_Ltilde_qqb_on_x: Error," << "particle a = " << a->PDGName() << ", " << "particle b = " << b->PDGName() << endl; double xt(H_.xt()); double y(H_.y()); Energy2 s(H_.sr()); Energy2 sCp(Cp_.sr()); Energy2 sCm(Cm_.sr()); Energy2 t_u_M_R_qqb_H (t_u_M_R_qqb(H_ )); Energy2 t_u_M_R_qqb_Cp(t_u_M_R_qqb(Cp_)); Energy2 t_u_M_R_qqb_Cm(t_u_M_R_qqb(Cm_)); // Energy2 t_u_M_R_qqb_H (t_u_M_R_qqb_hel_amp(H_)); // Energy2 t_u_M_R_qqb_Cp(8.*pi*alphaS_*Cp_.sr()/Cp_.xr() // *CF_*(1.+sqr(Cp_.xr()))*lo_me2_); // Energy2 t_u_M_R_qqb_Cm(8.*pi*alphaS_*Cm_.sr()/Cm_.xr() // *CF_*(1.+sqr(Cm_.xr()))*lo_me2_); int config(0); if(fabs(1.-xt)<=tiny||fabs(1.-H_.xr())<=tiny) return 0.; if(fabs(1.-y )<=tiny) { t_u_M_R_qqb_H = t_u_M_R_qqb_Cp ; config = 1; } if(fabs(1.+y )<=tiny) { t_u_M_R_qqb_H = t_u_M_R_qqb_Cm ; config = -1; } if(fabs(H_.tkr()/s)<=tiny) { t_u_M_R_qqb_H = t_u_M_R_qqb_Cp ; config = 1; } if(fabs(H_.ukr()/s)<=tiny) { t_u_M_R_qqb_H = t_u_M_R_qqb_Cm ; config = -1; } if(config== 0) return ( ( (t_u_M_R_qqb_H*Lhat_ab(a,b,H_)/s - t_u_M_R_qqb_Cp*Lhat_ab(a,b,Cp_)/sCp) )*2./(1.-y)/(1.-xt) + ( (t_u_M_R_qqb_H*Lhat_ab(a,b,H_)/s - t_u_M_R_qqb_Cm*Lhat_ab(a,b,Cm_)/sCm) )*2./(1.+y)/(1.-xt) ) / lo_me2_ / 8. / pi / alphaS_; else if(config== 1) return ( (t_u_M_R_qqb_H*Lhat_ab(a,b,H_)/s - t_u_M_R_qqb_Cm*Lhat_ab(a,b,Cm_)/sCm) )*2./(1.+y)/(1.-xt) / lo_me2_ / 8. / pi / alphaS_; else if(config==-1) return ( (t_u_M_R_qqb_H*Lhat_ab(a,b,H_)/s - t_u_M_R_qqb_Cp*Lhat_ab(a,b,Cp_)/sCp) )*2./(1.-y)/(1.-xt) / lo_me2_ / 8. / pi / alphaS_; else throw Exception() << "MEPP2VVPowheg::Rtilde_Ltilde_qqb_on_x\n" << "The configuration is not identified as hard / soft / fwd collinear or bwd collinear." << "config = " << config << "\n" << "xt = " << xt << " 1.-xt = " << 1.-xt << "\n" << "y = " << y << " 1.-y = " << 1.-y << "\n" << Exception::eventerror; } double MEPP2VVPowheg::Rtilde_Ltilde_gqb_on_x(tcPDPtr a , tcPDPtr b) const { if(!(abs(a->id())<=6||a->id()==21)||!(abs(b->id())<=6||b->id()==21)) cout << "MEPP2VVPowheg::Rtilde_Ltilde_gqb_on_x: Error," << "particle a = " << a->PDGName() << ", " << "particle b = " << b->PDGName() << endl; double xt(H_.xt()); double y(H_.y()); Energy2 s(H_.sr()); Energy2 sCp(Cp_.sr()); Energy2 sCm(Cm_.sr()); Energy2 t_u_M_R_gqb_H (t_u_M_R_gqb(H_ )); Energy2 t_u_M_R_gqb_Cp(t_u_M_R_gqb(Cp_)); Energy2 t_u_M_R_gqb_Cm(t_u_M_R_gqb(Cm_)); // Energy2 t_u_M_R_gqb_H (t_u_M_R_gqb_hel_amp(H_)); // Energy2 t_u_M_R_gqb_Cp(8.*pi*alphaS_*Cp_.sr()/Cp_.xr()*(1.-Cp_.xr()) // *TR_*(sqr(Cp_.xr())+sqr(1.-Cp_.xr()))*lo_me2_); // Energy2 t_u_M_R_gqb_Cm(t_u_M_R_gqb(Cm_)); // // Energy2 t_u_M_R_gqb_Cm(t_u_M_R_gqb_hel_amp(Cm_)); int config(0); if(fabs(1.-xt)<=tiny||fabs(1.-H_.xr())<=tiny) return 0.; if(fabs(1.-y )<=tiny) { t_u_M_R_gqb_H = t_u_M_R_gqb_Cp ; config = 1; } if(fabs(1.+y )<=tiny) { t_u_M_R_gqb_H = t_u_M_R_gqb_Cm ; config = -1; } if(fabs(H_.tkr()/s)<=tiny) { t_u_M_R_gqb_H = t_u_M_R_gqb_Cp ; config = 1; } if(fabs(H_.ukr()/s)<=tiny) { t_u_M_R_gqb_H = t_u_M_R_gqb_Cm ; config = -1; } if(config== 0) return ( ( (t_u_M_R_gqb_H*Lhat_ab(a,b,H_)/s - t_u_M_R_gqb_Cp*Lhat_ab(a,b,Cp_)/sCp) )*2./(1.-y)/(1.-xt) + ( (t_u_M_R_gqb_H*Lhat_ab(a,b,H_)/s - t_u_M_R_gqb_Cm*Lhat_ab(a,b,Cm_)/sCm) )*2./(1.+y)/(1.-xt) ) / lo_me2_ / 8. / pi / alphaS_; else if(config== 1) return ( (t_u_M_R_gqb_H*Lhat_ab(a,b,H_)/s - t_u_M_R_gqb_Cm*Lhat_ab(a,b,Cm_)/sCm) )*2./(1.+y)/(1.-xt) / lo_me2_ / 8. / pi / alphaS_; else if(config==-1) return ( (t_u_M_R_gqb_H*Lhat_ab(a,b,H_)/s - t_u_M_R_gqb_Cp*Lhat_ab(a,b,Cp_)/sCp) )*2./(1.-y)/(1.-xt) / lo_me2_ / 8. / pi / alphaS_; else throw Exception() << "MEPP2VVPowheg::Rtilde_Ltilde_gqb_on_x\n" << "The configuration is not identified as hard / soft / fwd collinear or bwd collinear." << "config = " << config << "\n" << "xt = " << xt << " 1.-xt = " << 1.-xt << "\n" << "y = " << y << " 1.-y = " << 1.-y << "\n" << Exception::eventerror; } double MEPP2VVPowheg::Rtilde_Ltilde_qg_on_x(tcPDPtr a , tcPDPtr b) const { if(!(abs(a->id())<=6||a->id()==21)||!(abs(b->id())<=6||b->id()==21)) cout << "MEPP2VVPowheg::Rtilde_Ltilde_qg_on_x: Error," << "particle a = " << a->PDGName() << ", " << "particle b = " << b->PDGName() << endl; double xt(H_.xt()); double y(H_.y()); Energy2 s(H_.sr()); Energy2 sCp(Cp_.sr()); Energy2 sCm(Cm_.sr()); Energy2 t_u_M_R_qg_H (t_u_M_R_qg(H_ )); Energy2 t_u_M_R_qg_Cp(t_u_M_R_qg(Cp_)); Energy2 t_u_M_R_qg_Cm(t_u_M_R_qg(Cm_)); // Energy2 t_u_M_R_qg_H (t_u_M_R_qg_hel_amp(H_)); // Energy2 t_u_M_R_qg_Cp(t_u_M_R_qg(Cp_)); // // Energy2 t_u_M_R_qg_Cp(t_u_M_R_qg_hel_amp(Cp_)); // Energy2 t_u_M_R_qg_Cm(8.*pi*alphaS_*Cm_.sr()/Cm_.xr()*(1.-Cm_.xr()) // *TR_*(sqr(Cm_.xr())+sqr(1.-Cm_.xr()))*lo_me2_); int config(0); if(fabs(1.-xt)<=tiny||fabs(1.-H_.xr())<=tiny) return 0.; if(fabs(1.-y )<=tiny) { t_u_M_R_qg_H = t_u_M_R_qg_Cp ; config = 1; } if(fabs(1.+y )<=tiny) { t_u_M_R_qg_H = t_u_M_R_qg_Cm ; config = -1; } if(fabs(H_.tkr()/s)<=tiny) { t_u_M_R_qg_H = t_u_M_R_qg_Cp ; config = 1; } if(fabs(H_.ukr()/s)<=tiny) { t_u_M_R_qg_H = t_u_M_R_qg_Cm ; config = -1; } if(config== 0) return ( ( (t_u_M_R_qg_H*Lhat_ab(a,b,H_)/s - t_u_M_R_qg_Cp*Lhat_ab(a,b,Cp_)/sCp) )*2./(1.-y)/(1.-xt) + ( (t_u_M_R_qg_H*Lhat_ab(a,b,H_)/s - t_u_M_R_qg_Cm*Lhat_ab(a,b,Cm_)/sCm) )*2./(1.+y)/(1.-xt) ) / lo_me2_ / 8. / pi / alphaS_; else if(config== 1) return ( (t_u_M_R_qg_H*Lhat_ab(a,b,H_)/s - t_u_M_R_qg_Cm*Lhat_ab(a,b,Cm_)/sCm) )*2./(1.+y)/(1.-xt) / lo_me2_ / 8. / pi / alphaS_; else if(config==-1) return ( (t_u_M_R_qg_H*Lhat_ab(a,b,H_)/s - t_u_M_R_qg_Cp*Lhat_ab(a,b,Cp_)/sCp) )*2./(1.-y)/(1.-xt) / lo_me2_ / 8. / pi / alphaS_; else throw Exception() << "MEPP2VVPowheg::Rtilde_Ltilde_qg_on_x\n" << "The configuration is not identified as hard / soft / fwd collinear or bwd collinear." << "config = " << config << "\n" << "xt = " << xt << " 1.-xt = " << 1.-xt << "\n" << "y = " << y << " 1.-y = " << 1.-y << "\n" << Exception::eventerror; } /***************************************************************************/ // The following three functions are identically \tilde{I}_{4,t}, // \tilde{I}_{3,WZ} and \tilde{I}_{3,W} given in Eqs. B.8,B.9,B.10 // of NPB 383(1992)3-44, respectively. They are related to / derived // from the loop integrals in Eqs. A.3, A.5 and A.8 of the same paper. InvEnergy4 TildeI4t(Energy2 s, Energy2 t, Energy2 mW2, Energy2 mZ2); InvEnergy2 TildeI3WZ(Energy2 s, Energy2 mW2, Energy2 mZ2, double beta); InvEnergy2 TildeI3W(Energy2 s, Energy2 t, Energy2 mW2); /***************************************************************************/ // The following six functions are identically I_{dd}^{(1)}, I_{ud}^{(1)}, // I_{uu}^{(1)}, F_{u}^{(1)}, F_{d}^{(1)}, H^{(1)} from Eqs. B.4, B.5, B.3, // B.3, B.6, B.7 of NPB 383(1992)3-44, respectively. They make up the // one-loop matrix element. Ixx functions correspond to the graphs // with no TGC, Fx functions are due to non-TGC graphs interfering // with TGC graphs, while the H function is due purely to TGC graphs. double Idd1(Energy2 s,Energy2 t,Energy2 u,Energy2 mW2,Energy2 mZ2,double beta); double Iud1(Energy2 s,Energy2 t,Energy2 u,Energy2 mW2,Energy2 mZ2,double beta); double Iuu1(Energy2 s,Energy2 t,Energy2 u,Energy2 mW2,Energy2 mZ2,double beta); Energy2 Fu1(Energy2 s,Energy2 t,Energy2 u,Energy2 mW2,Energy2 mZ2,double beta); Energy2 Fd1(Energy2 s,Energy2 t,Energy2 u,Energy2 mW2,Energy2 mZ2,double beta); Energy4 H1 (Energy2 s,Energy2 t,Energy2 u,Energy2 mW2,Energy2 mZ2); /***************************************************************************/ // M_V_Regular is the regular part of the one-loop matrix element // exactly as defined in Eqs. B.1 and B.2 of of NPB 383(1992)3-44. double MEPP2VVPowheg::M_V_regular(realVVKinematics S) const { Energy2 s(S.bornVariables().sb()); Energy2 t(S.bornVariables().tb()); Energy2 u(S.bornVariables().ub()); Energy2 mW2(S.k12r()); // N.B. the diboson masses are preserved in getting Energy2 mZ2(S.k22r()); // the 2->2 from the 2->3 kinematics. double beta(S.betaxr()); // N.B. for x=1 \beta_x=\beta in NPB 383(1992)3-44. double cosThetaW(sqrt(1.-sin2ThetaW_)); double eZ2(eZ2_); double eZ(eZ_); double gdL(gdL_); double guL(guL_); double gdR(gdR_); double guR(guR_); // W+W- if(abs(mePartonData()[2]->id())==24&&abs(mePartonData()[3]->id())==24) { double e2(sqr(gW_)*sin2ThetaW_); if(abs(quark_->id())%2==0&&abs(antiquark_->id())%2==0) { // N.B. OLD eZ used to calculate new eZ2 *then* new eZ is set! if(quark_->id()==-antiquark_->id()) { eZ2 = 1./2.*sqr(s-mW2)/Fij2_ * (e2*e2/s/s*(sqr( 2./3.+eZ*(guL+guR)/2./e2*s/(s-mW2/sqr(cosThetaW))) +sqr( eZ*(guL-guR)/2./e2*s/(s-mW2/sqr(cosThetaW)))) ); eZ = -1./2./Fij2_/(gW_*gW_/4./sqrt(Fij2_))*(s-mW2) * (gW_*gW_*e2/4./s *( 2./3.+2.*eZ*guL/2./e2*s/(s-mW2/sqr(cosThetaW)))); } else { eZ2 =0.; eZ =0.; } gdL = gW_/sqrt(2.); guL = 0.; } else if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==1) { // N.B. OLD eZ used to calculate new eZ2 *then* new eZ is set! if(quark_->id()==-antiquark_->id()) { eZ2 = 1./2.*sqr(s-mW2)/Fij2_ * (e2*e2/s/s*(sqr(-1./3.+eZ*(gdL+gdR)/2./e2*s/(s-mW2/sqr(cosThetaW))) +sqr( eZ*(gdL-gdR)/2./e2*s/(s-mW2/sqr(cosThetaW)))) ); eZ = -1./2./Fij2_/(gW_*gW_/4./sqrt(Fij2_))*(s-mW2) * (gW_*gW_*e2/4./s *(-1./3.+2.*eZ*gdL/2./e2*s/(s-mW2/sqr(cosThetaW)))); } else { eZ2 =0.; eZ =0.; } guL = gW_/sqrt(2.); gdL = 0.; } } // ZZ else if(mePartonData()[2]->id()==23&&mePartonData()[3]->id()==23) { eZ = 0.; eZ2 = 0.; double gV2,gA2; gV2 = sqr(guL/2.-gW_/2./cosThetaW*2./3.*sin2ThetaW_); gA2 = sqr(guL/2.+gW_/2./cosThetaW*2./3.*sin2ThetaW_); guL = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; gV2 = sqr(gdL/2.+gW_/2./cosThetaW*1./3.*sin2ThetaW_); gA2 = sqr(gdL/2.-gW_/2./cosThetaW*1./3.*sin2ThetaW_); gdL = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; if(abs(quark_->id())%2==0&&abs(antiquark_->id())%2==0) gdL = guL; else if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==1) guL = gdL; else { cout << "MEPP2VVPowheg:" << endl; cout << "ZZ needs 2 down-type / 2 up-type!" << endl; } } return 4.*pi*alphaS_*Fij2_*CF_*(1./sqr(4.*pi))/NC_ * ( gdL*gdL*Idd1(s,t,u,mW2,mZ2,beta) + gdL*guL*Iud1(s,t,u,mW2,mZ2,beta) + guL*guL*Iuu1(s,t,u,mW2,mZ2,beta) - eZ/(s-mW2) * ( gdL*Fd1(s,t,u,mW2,mZ2,beta) - guL*Fu1(s,t,u,mW2,mZ2,beta) ) + eZ2/sqr(s-mW2) * H1(s,t,u,mW2,mZ2) ); } /***************************************************************************/ InvEnergy4 TildeI4t(Energy2 s, Energy2 t, Energy2 mW2, Energy2 mZ2) { double sqrBrackets; sqrBrackets = ( sqr(log(-t/mW2))/2.+log(-t/mW2)*log(-t/mZ2)/2. - 2.*log(-t/mW2)*log((mW2-t)/mW2)-2.*ReLi2(t/mW2) ); swap(mW2,mZ2); sqrBrackets+= ( sqr(log(-t/mW2))/2.+log(-t/mW2)*log(-t/mZ2)/2. - 2.*log(-t/mW2)*log((mW2-t)/mW2)-2.*ReLi2(t/mW2) ); swap(mW2,mZ2); return sqrBrackets/s/t; } InvEnergy2 TildeI3WZ(Energy2 s, Energy2 mW2, Energy2 mZ2, double beta) { Energy2 sig(mZ2+mW2); Energy2 del(mZ2-mW2); double sqrBrackets ; sqrBrackets = ( ReLi2(2.*mW2/(sig-del*(del/s+beta))) + ReLi2((1.-del/s+beta)/2.) + sqr(log((1.-del/s+beta)/2.))/2. + log((1.-del/s-beta)/2.)*log((1.+del/s-beta)/2.) ); beta *= -1; sqrBrackets -= ( ReLi2(2.*mW2/(sig-del*(del/s+beta))) + ReLi2((1.-del/s+beta)/2.) + sqr(log((1.-del/s+beta)/2.))/2. + log((1.-del/s-beta)/2.)*log((1.+del/s-beta)/2.) ); beta *= -1; swap(mW2,mZ2); del *= -1.; sqrBrackets += ( ReLi2(2.*mW2/(sig-del*(del/s+beta))) + ReLi2((1.-del/s+beta)/2.) + sqr(log((1.-del/s+beta)/2.))/2. + log((1.-del/s-beta)/2.)*log((1.+del/s-beta)/2.) ); swap(mW2,mZ2); del *= -1.; beta *= -1; swap(mW2,mZ2); del *= -1.; sqrBrackets -= ( ReLi2(2.*mW2/(sig-del*(del/s+beta))) + ReLi2((1.-del/s+beta)/2.) + sqr(log((1.-del/s+beta)/2.))/2. + log((1.-del/s-beta)/2.)*log((1.+del/s-beta)/2.) ); beta *= -1; swap(mW2,mZ2); del *= -1.; return sqrBrackets/s/beta; } InvEnergy2 TildeI3W(Energy2 s, Energy2 t, Energy2 mW2) { return 1./(mW2-t)*(sqr(log(mW2/s))/2.-sqr(log(-t/s))/2.-sqr(pi)/2.); } /***************************************************************************/ double Idd1(Energy2 s, Energy2 t, Energy2 u, Energy2 mW2, Energy2 mZ2, double beta) { Energy2 sig(mZ2+mW2); Energy2 del(mZ2-mW2); double Val(0.); Val += 2.*(22.*t*t+t*(19.*s-18.*sig)+18.*mW2*mZ2)/t/t - 8.*(u*t+2*s*sig)/mW2/mZ2 - 2.*sqr(t-u)/t/s/sqr(beta); Val += +( 2.*(8.*t*t+4.*t*(s-3.*sig)+4*sqr(sig)-5.*s*sig+s*s)/t/s/sqr(beta) + 4.*(t*(3.*u+s)-3.*mW2*mZ2)/t/t + 6.*(t+u)*sqr(t-u)/t/s/s/sqr(sqr(beta)) )*log(-t/s); Val += +( ( 8.*t*t*(-2.*s+del)+8.*t*(-s*s+3.*s*sig-2.*del*sig) - 2.*(s-sig)*(s*s-4.*s*sig+3.*del*sig) )/t/s/s/beta/beta + 16.*s*(t-mZ2)/(t*(u+s)-mW2*mZ2) + 2.*(4.*t*t+t*(10.*s-3.*mZ2-9.*mW2)+12.*mW2*mZ2)/t/t -6.*(s-del)*(t+u)*sqr(t-u)/t/s/s/s/sqr(sqr(beta)) )*log(-t/mW2); Val += ( - ( 4.*t*t*(2.*sig-3.*s) - 4.*t*(s-sig)*(2.*s-3.*sig) - 2.*(s-2.*sig)*sqr(s-sig) )/t/s/beta/beta + ( 4.*sig*t-3.*s*s+4.*s*sig - 4.*(mW2*mW2+mZ2*mZ2) )/t - 3.*sqr(t*t-u*u)/t/s/s/sqr(sqr(beta)) )*TildeI3WZ(s,mW2,mZ2,beta); Val += +( 4.*(t*u+2.*s*sig)/3./mW2/mZ2 - 4.*(t-2.*u)/3./t )*pi*pi; Val += -( 4.*s*(t*u-2.*mW2*mZ2)/t )*TildeI4t(s,t,mW2,mZ2); Val += ( 8.*(t-mW2)*(u*t-2.*mW2*mZ2)/t/t )*TildeI3W(s,t,mW2); swap(mW2,mZ2); del *= -1; Val += 2.*(22.*t*t+t*(19.*s-18.*sig)+18.*mW2*mZ2)/t/t - 8.*(u*t+2*s*sig)/mW2/mZ2 - 2.*sqr(t-u)/t/s/sqr(beta); Val += +( 2.*(8.*t*t+4.*t*(s-3.*sig)+4*sqr(sig)-5.*s*sig+s*s)/t/s/sqr(beta) + 4.*(t*(3.*u+s)-3.*mW2*mZ2)/t/t + 6.*(t+u)*sqr(t-u)/t/s/s/sqr(sqr(beta)) )*log(-t/s); Val += +( ( 8.*t*t*(-2.*s+del)+8.*t*(-s*s+3.*s*sig-2.*del*sig) - 2.*(s-sig)*(s*s-4.*s*sig+3.*del*sig) )/t/s/s/beta/beta + 16.*s*(t-mZ2)/(t*(u+s)-mW2*mZ2) + 2.*(4.*t*t+t*(10.*s-3.*mZ2-9.*mW2)+12.*mW2*mZ2)/t/t -6.*(s-del)*(t+u)*sqr(t-u)/t/s/s/s/sqr(sqr(beta)) )*log(-t/mW2); Val += ( - ( 4.*t*t*(2.*sig-3.*s) - 4.*t*(s-sig)*(2.*s-3.*sig) - 2.*(s-2.*sig)*sqr(s-sig) )/t/s/beta/beta + ( 4.*sig*t-3.*s*s+4.*s*sig - 4.*(mW2*mW2+mZ2*mZ2) )/t - 3.*sqr(t*t-u*u)/t/s/s/sqr(sqr(beta)) )*TildeI3WZ(s,mW2,mZ2,beta); Val += +( 4.*(t*u+2.*s*sig)/3./mW2/mZ2 - 4.*(t-2.*u)/3./t )*pi*pi; Val += -( 4.*s*(t*u-2.*mW2*mZ2)/t )*TildeI4t(s,t,mW2,mZ2); Val += ( 8.*(t-mW2)*(u*t-2.*mW2*mZ2)/t/t )*TildeI3W(s,t,mW2); swap(mW2,mZ2); del *= -1; return Val; } /***************************************************************************/ double Iud1(Energy2 s, Energy2 t, Energy2 u, Energy2 mW2, Energy2 mZ2, double beta) { Energy2 sig(mZ2+mW2); Energy2 del(mZ2-mW2); double Val(0.); Val += 2.*(4.*t*t+t*(9.*s-4.*sig)-18.*s*sig)/t/u + 8.*(t*u+2.*s*sig)/mW2/mZ2 + 4.*s*s*(2.*t-sig)/u/(mW2*mZ2-t*(u+s)) - 2.*sqr(t-u)/u/s/sqr(beta); Val += ( 2.*(8.*t*t-4.*t*(s+3.*sig)-(s-sig)*(3.*s+4.*sig))/u/s/sqr(beta) + 6.*(t+u)*sqr(t-u)/u/s/s/sqr(sqr(beta)) - 12.*s*(t-sig)/t/u )*log(-t/s); Val += ( (2./u/s/s/sqr(beta))*( 4.*t*t*(-2.*s+del) + 4.*t*(s*s+s*(mZ2+5.*mW2)-2.*sig*del) + (s-sig)*(3.*s*s+8.*mW2*s-3.*sig*del) ) + (2.*t*(18.*s+3.*mW2+mZ2)-24.*s*sig)/t/u - 8.*s*(2.*t*t-t*(3.*s+4.*mZ2+2.*mW2)+2.*mZ2*(s+sig)) /u/(mW2*mZ2-t*(u+s)) - 8.*s*s*t*(2.*t-sig)*(t-mZ2)/u/sqr(mW2*mZ2-t*(u+s)) + 6.*(s-del)*(s-sig)*sqr(t-u)/u/s/s/s/sqr(sqr(beta)) )*log(-t/mW2); Val += ( -2.*(2.*t*t*(2.*sig-3.*s)+6.*sig*t*(s-sig)+sqr(s-sig)*(s+2.*sig)) /u/s/sqr(beta) +3.*s*(4.*t-4.*sig-s)/u -3.*sqr(s-sig)*sqr(t-u)/u/s/s/sqr(sqr(beta)) )*TildeI3WZ(s,mW2,mZ2,beta); Val += ( 4.*(u+4.*s)/3./u - 4.*(u*t+2.*s*sig)/3./mW2/mZ2 )*pi*pi; Val += -( 16.*s*(t-sig)*(t-mW2)/t/u )*TildeI3W(s,t,mW2); Val += ( 8.*s*s*(t-sig)/u )*TildeI4t(s,t,mW2,mZ2); swap(t,u); Val += 2.*(4.*t*t+t*(9.*s-4.*sig)-18.*s*sig)/t/u + 8.*(t*u+2.*s*sig)/mW2/mZ2 + 4.*s*s*(2.*t-sig)/u/(mW2*mZ2-t*(u+s)) - 2.*sqr(t-u)/u/s/sqr(beta); Val += ( 2.*(8.*t*t-4.*t*(s+3.*sig)-(s-sig)*(3.*s+4.*sig))/u/s/sqr(beta) + 6.*(t+u)*sqr(t-u)/u/s/s/sqr(sqr(beta)) - 12.*s*(t-sig)/t/u )*log(-t/s); Val += ( (2./u/s/s/sqr(beta))*( 4.*t*t*(-2.*s+del) + 4.*t*(s*s+s*(mZ2+5.*mW2)-2.*sig*del) + (s-sig)*(3.*s*s+8.*mW2*s-3.*sig*del) ) + (2.*t*(18.*s+3.*mW2+mZ2)-24.*s*sig)/t/u - 8.*s*(2.*t*t-t*(3.*s+4.*mZ2+2.*mW2)+2.*mZ2*(s+sig)) /u/(mW2*mZ2-t*(u+s)) - 8.*s*s*t*(2.*t-sig)*(t-mZ2)/u/sqr(mW2*mZ2-t*(u+s)) + 6.*(s-del)*(s-sig)*sqr(t-u)/u/s/s/s/sqr(sqr(beta)) )*log(-t/mW2); Val += ( -2.*(2.*t*t*(2.*sig-3.*s)+6.*sig*t*(s-sig)+sqr(s-sig)*(s+2.*sig)) /u/s/sqr(beta) +3.*s*(4.*t-4.*sig-s)/u -3.*sqr(s-sig)*sqr(t-u)/u/s/s/sqr(sqr(beta)) )*TildeI3WZ(s,mW2,mZ2,beta); Val += ( 4.*(u+4.*s)/3./u - 4.*(u*t+2.*s*sig)/3./mW2/mZ2 )*pi*pi; Val += -( 16.*s*(t-sig)*(t-mW2)/t/u )*TildeI3W(s,t,mW2); Val += ( 8.*s*s*(t-sig)/u )*TildeI4t(s,t,mW2,mZ2); swap(t,u); swap(mW2,mZ2); del *= -1; Val += 2.*(4.*t*t+t*(9.*s-4.*sig)-18.*s*sig)/t/u + 8.*(t*u+2.*s*sig)/mW2/mZ2 + 4.*s*s*(2.*t-sig)/u/(mW2*mZ2-t*(u+s)) - 2.*sqr(t-u)/u/s/sqr(beta); Val += ( 2.*(8.*t*t-4.*t*(s+3.*sig)-(s-sig)*(3.*s+4.*sig))/u/s/sqr(beta) + 6.*(t+u)*sqr(t-u)/u/s/s/sqr(sqr(beta)) - 12.*s*(t-sig)/t/u )*log(-t/s); Val += ( (2./u/s/s/sqr(beta))*( 4.*t*t*(-2.*s+del) + 4.*t*(s*s+s*(mZ2+5.*mW2)-2.*sig*del) + (s-sig)*(3.*s*s+8.*mW2*s-3.*sig*del) ) + (2.*t*(18.*s+3.*mW2+mZ2)-24.*s*sig)/t/u - 8.*s*(2.*t*t-t*(3.*s+4.*mZ2+2.*mW2)+2.*mZ2*(s+sig)) /u/(mW2*mZ2-t*(u+s)) - 8.*s*s*t*(2.*t-sig)*(t-mZ2)/u/sqr(mW2*mZ2-t*(u+s)) + 6.*(s-del)*(s-sig)*sqr(t-u)/u/s/s/s/sqr(sqr(beta)) )*log(-t/mW2); Val += ( -2.*(2.*t*t*(2.*sig-3.*s)+6.*sig*t*(s-sig)+sqr(s-sig)*(s+2.*sig)) /u/s/sqr(beta) +3.*s*(4.*t-4.*sig-s)/u -3.*sqr(s-sig)*sqr(t-u)/u/s/s/sqr(sqr(beta)) )*TildeI3WZ(s,mW2,mZ2,beta); Val += ( 4.*(u+4.*s)/3./u - 4.*(u*t+2.*s*sig)/3./mW2/mZ2 )*pi*pi; Val += -( 16.*s*(t-sig)*(t-mW2)/t/u )*TildeI3W(s,t,mW2); Val += ( 8.*s*s*(t-sig)/u )*TildeI4t(s,t,mW2,mZ2); swap(mW2,mZ2); del *= -1; swap(t,u); swap(mW2,mZ2); del *= -1; Val += 2.*(4.*t*t+t*(9.*s-4.*sig)-18.*s*sig)/t/u + 8.*(t*u+2.*s*sig)/mW2/mZ2 + 4.*s*s*(2.*t-sig)/u/(mW2*mZ2-t*(u+s)) - 2.*sqr(t-u)/u/s/sqr(beta); Val += ( 2.*(8.*t*t-4.*t*(s+3.*sig)-(s-sig)*(3.*s+4.*sig))/u/s/sqr(beta) + 6.*(t+u)*sqr(t-u)/u/s/s/sqr(sqr(beta)) - 12.*s*(t-sig)/t/u )*log(-t/s); Val += ( (2./u/s/s/sqr(beta))*( 4.*t*t*(-2.*s+del) + 4.*t*(s*s+s*(mZ2+5.*mW2)-2.*sig*del) + (s-sig)*(3.*s*s+8.*mW2*s-3.*sig*del) ) + (2.*t*(18.*s+3.*mW2+mZ2)-24.*s*sig)/t/u - 8.*s*(2.*t*t-t*(3.*s+4.*mZ2+2.*mW2)+2.*mZ2*(s+sig)) /u/(mW2*mZ2-t*(u+s)) - 8.*s*s*t*(2.*t-sig)*(t-mZ2)/u/sqr(mW2*mZ2-t*(u+s)) + 6.*(s-del)*(s-sig)*sqr(t-u)/u/s/s/s/sqr(sqr(beta)) )*log(-t/mW2); Val += ( -2.*(2.*t*t*(2.*sig-3.*s)+6.*sig*t*(s-sig)+sqr(s-sig)*(s+2.*sig)) /u/s/sqr(beta) +3.*s*(4.*t-4.*sig-s)/u -3.*sqr(s-sig)*sqr(t-u)/u/s/s/sqr(sqr(beta)) )*TildeI3WZ(s,mW2,mZ2,beta); Val += ( 4.*(u+4.*s)/3./u - 4.*(u*t+2.*s*sig)/3./mW2/mZ2 )*pi*pi; Val += -( 16.*s*(t-sig)*(t-mW2)/t/u )*TildeI3W(s,t,mW2); Val += ( 8.*s*s*(t-sig)/u )*TildeI4t(s,t,mW2,mZ2); swap(t,u); swap(mW2,mZ2); del *= -1; return Val; } /***************************************************************************/ double Iuu1(Energy2 s, Energy2 t, Energy2 u, Energy2 mW2, Energy2 mZ2, double beta) { double Val(Idd1(s,u,t,mW2,mZ2,beta)); return Val; } /***************************************************************************/ Energy2 Fd1 (Energy2 s, Energy2 t, Energy2 u, Energy2 mW2, Energy2 mZ2, double beta) { Energy2 sig(mZ2+mW2); Energy2 del(mZ2-mW2); Energy2 Val(0.*GeV2); Val += 4.*(17.*t*t+t*(11.*s-13.*sig)+17.*(s*sig+mW2*mZ2))/t + 16.*(s-sig)*(t*u+2.*s*sig)/mW2/mZ2 + 4*s*s*(2.*t-sig)/(t*(u+s)-mW2*mZ2); Val += ( 8.*(t-u)/sqr(beta) - 4.*(3.*t*t-t*(s+3.*sig)+3.*(s*sig+mW2*mZ2))/t )*log(-t/s); Val += ( 8.*(t*t-t*(2.*s+3.*mW2+mZ2)+3.*(s*sig+mW2*mZ2))/t + 8.*s*(t*(3.*s+2.*sig)-2.*mZ2*(s+sig))/(t*(u+s)-mW2*mZ2) + 8.*s*s*t*(2.*t-sig)*(t-mZ2)/sqr(t*(u+s)-mW2*mZ2) - 8.*(s-del)*(t-u)/s/sqr(beta) )*log(-t/mW2); Val += ( 4.*(s-sig)*(t-u)/sqr(beta) + 4.*(sig-3.*s)*t + 4.*(4.*s*sig-mZ2*mZ2-mW2*mW2) )*TildeI3WZ(s,mW2,mZ2,beta); Val += -( 8.*(3.*t*t+2.*t*(2.*s-sig)+2.*(s*sig+mW2*mZ2))/3./t + 8.*(s-sig)*(t*u+2.*s*sig)/3./mW2/mZ2 )*pi*pi; Val += ( 4.*(s*t*t-s*(s+sig)*t+2.*s*(s*sig+mW2*mZ2)) )*TildeI4t(s,t,mW2,mZ2); Val += -( 8.*(t-mW2)*(t*t-t*(s+sig)+2.*(s*sig+mW2*mZ2))/t )*TildeI3W(s,t,mW2); swap(mW2,mZ2); del *= -1; Val += 4.*(17.*t*t+t*(11.*s-13.*sig)+17.*(s*sig+mW2*mZ2))/t + 16.*(s-sig)*(t*u+2.*s*sig)/mW2/mZ2 + 4*s*s*(2.*t-sig)/(t*(u+s)-mW2*mZ2); Val += ( 8.*(t-u)/sqr(beta) - 4.*(3.*t*t-t*(s+3.*sig)+3.*(s*sig+mW2*mZ2))/t )*log(-t/s); Val += ( 8.*(t*t-t*(2.*s+3.*mW2+mZ2)+3.*(s*sig+mW2*mZ2))/t + 8.*s*(t*(3.*s+2.*sig)-2.*mZ2*(s+sig))/(t*(u+s)-mW2*mZ2) + 8.*s*s*t*(2.*t-sig)*(t-mZ2)/sqr(t*(u+s)-mW2*mZ2) - 8.*(s-del)*(t-u)/s/sqr(beta) )*log(-t/mW2); Val += ( 4.*(s-sig)*(t-u)/sqr(beta) + 4.*(sig-3.*s)*t + 4.*(4.*s*sig-mZ2*mZ2-mW2*mW2) )*TildeI3WZ(s,mW2,mZ2,beta); Val += -( 8.*(3.*t*t+2.*t*(2.*s-sig)+2.*(s*sig+mW2*mZ2))/3./t + 8.*(s-sig)*(t*u+2.*s*sig)/3./mW2/mZ2 )*pi*pi; Val += ( 4.*(s*t*t-s*(s+sig)*t+2.*s*(s*sig+mW2*mZ2)) )*TildeI4t(s,t,mW2,mZ2); Val += -( 8.*(t-mW2)*(t*t-t*(s+sig)+2.*(s*sig+mW2*mZ2))/t )*TildeI3W(s,t,mW2); swap(mW2,mZ2); del *= -1; return Val; } /***************************************************************************/ Energy2 Fu1 (Energy2 s, Energy2 t, Energy2 u, Energy2 mW2, Energy2 mZ2, double beta) { Energy2 Val(Fd1(s,u,t,mW2,mZ2,beta)); return Val; } /***************************************************************************/ Energy4 H1 (Energy2 s, Energy2 t, Energy2 u, Energy2 mW2, Energy2 mZ2) { Energy2 sig(mZ2+mW2); Energy4 Val(0.*GeV2*GeV2); Val = 8.*t*t+8.*t*(s-sig)+s*s+6.*s*sig+mZ2*mZ2+10.*mW2*mZ2+mW2*mW2 - sqr(s-sig)*(t*u+2.*s*sig)/mW2/mZ2; Val *= ( 16.-8.*pi*pi/3.); return Val; } Energy2 t_u_Rdd(Energy2 s , Energy2 tk , Energy2 uk , Energy2 q1 , Energy2 q2, Energy2 mW2, Energy2 mZ2); Energy2 t_u_Rud(Energy2 s , Energy2 tk , Energy2 uk , Energy2 q1 , Energy2 q2, Energy2 q1h, Energy2 q2h, Energy2 mW2, Energy2 mZ2); Energy2 t_u_Ruu(Energy2 s , Energy2 tk , Energy2 uk, Energy2 q1h, Energy2 q2h, Energy2 mW2, Energy2 mZ2); Energy4 t_u_RZds(Energy2 s ,Energy2 tk , Energy2 uk , Energy2 q1, Energy2 q2, Energy2 s2,Energy2 mW2, Energy2 mZ2); Energy4 t_u_RZda(Energy2 s , Energy2 tk , Energy2 uk , Energy2 q1, Energy2 q2, Energy2 s2, Energy2 mW2, Energy2 mZ2); Energy4 t_u_RZd(Energy2 s , Energy2 tk , Energy2 uk , Energy2 q1 , Energy2 q2 , Energy2 s2 , Energy2 mW2, Energy2 mZ2); Energy4 t_u_RZu(Energy2 s , Energy2 tk , Energy2 uk , Energy2 q1h, Energy2 q2h, Energy2 s2 , Energy2 mW2, Energy2 mZ2); Energy6 t_u_RZs(Energy2 s , Energy2 tk , Energy2 uk , Energy2 q1, Energy2 q2, Energy2 s2, Energy2 mW2, Energy2 mZ2); Energy6 t_u_RZa(Energy2 s , Energy2 tk , Energy2 uk , Energy2 q1, Energy2 q2, Energy2 s2, Energy2 mW2, Energy2 mZ2); Energy6 t_u_RZ(Energy2 s , Energy2 tk , Energy2 uk , Energy2 q1, Energy2 q2, Energy2 s2 , Energy2 mW2, Energy2 mZ2); /***************************************************************************/ // t_u_M_R_qqb is the real emission q + qb -> n + g matrix element // exactly as defined in Eqs. C.1 of NPB 383(1992)3-44, multiplied by // tk * uk! Energy2 MEPP2VVPowheg::t_u_M_R_qqb(realVVKinematics R) const { // First the Born variables: Energy2 s2(R.s2r()); Energy2 mW2(R.k12r()); Energy2 mZ2(R.k22r()); // Then the rest: Energy2 s(R.sr()); Energy2 tk(R.tkr()); Energy2 uk(R.ukr()); Energy2 q1(R.q1r()); Energy2 q2(R.q2r()); Energy2 q1h(R.q1hatr()); Energy2 q2h(R.q2hatr()); double cosThetaW(sqrt(1.-sin2ThetaW_)); double eZ2(eZ2_); double eZ(eZ_); double gdL(gdL_); double guL(guL_); double gdR(gdR_); double guR(guR_); // W+W- if(abs(mePartonData()[2]->id())==24&&abs(mePartonData()[3]->id())==24) { double e2(sqr(gW_)*sin2ThetaW_); if(abs(quark_->id())%2==0&&abs(antiquark_->id())%2==0) { // N.B. OLD eZ used to calculate new eZ2 *then* new eZ is set! if(quark_->id()==-antiquark_->id()) { eZ2 = 1./2.*sqr(s2-mW2)/Fij2_ * (e2*e2/s2/s2*(sqr( 2./3.+eZ*(guL+guR)/2./e2*s2/(s2-mW2/sqr(cosThetaW))) +sqr( eZ*(guL-guR)/2./e2*s2/(s2-mW2/sqr(cosThetaW)))) ); eZ = -1./2./Fij2_/(gW_*gW_/4./sqrt(Fij2_))*(s2-mW2) * (gW_*gW_*e2/4./s2 *( 2./3.+2.*eZ*guL/2./e2*s2/(s2-mW2/sqr(cosThetaW)))); } else { eZ2 =0.; eZ =0.; } gdL = gW_/sqrt(2.); guL = 0.; } else if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==1) { // N.B. OLD eZ used to calculate new eZ2 *then* new eZ is set! if(quark_->id()==-antiquark_->id()) { eZ2 = 1./2.*sqr(s2-mW2)/Fij2_ * (e2*e2/s2/s2*(sqr(-1./3.+eZ*(gdL+gdR)/2./e2*s2/(s2-mW2/sqr(cosThetaW))) +sqr( eZ*(gdL-gdR)/2./e2*s2/(s2-mW2/sqr(cosThetaW)))) ); eZ = -1./2./Fij2_/(gW_*gW_/4./sqrt(Fij2_))*(s2-mW2) * (gW_*gW_*e2/4./s2 *(-1./3.+2.*eZ*gdL/2./e2*s2/(s2-mW2/sqr(cosThetaW)))); } else { eZ2 =0.; eZ =0.; } guL = gW_/sqrt(2.); gdL = 0.; } } // ZZ else if(mePartonData()[2]->id()==23&&mePartonData()[3]->id()==23) { eZ = 0.; eZ2 = 0.; double gV2,gA2; gV2 = sqr(guL/2.-gW_/2./cosThetaW*2./3.*sin2ThetaW_); gA2 = sqr(guL/2.+gW_/2./cosThetaW*2./3.*sin2ThetaW_); guL = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; gV2 = sqr(gdL/2.+gW_/2./cosThetaW*1./3.*sin2ThetaW_); gA2 = sqr(gdL/2.-gW_/2./cosThetaW*1./3.*sin2ThetaW_); gdL = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; if(abs(quark_->id())%2==0&&abs(antiquark_->id())%2==0) gdL = guL; else if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==1) guL = gdL; else { cout << "MEPP2VVPowheg:" << endl; cout << "ZZ needs 2 down-type / 2 up-type!" << endl; } } return -2.*pi*alphaS_*Fij2_*CF_/NC_ * ( gdL*gdL*t_u_Rdd(s,tk,uk,q1,q2,mW2,mZ2) + 2.*gdL*guL*t_u_Rud(s,tk,uk,q1,q2,q1h,q2h,mW2,mZ2) + guL*guL*t_u_Ruu(s,tk,uk,q1h,q2h,mW2,mZ2) - 2.*eZ/(s2-mW2) * ( gdL * t_u_RZd(s,tk,uk,q1 ,q2 ,s2,mW2,mZ2) - guL * t_u_RZu(s,tk,uk,q1h,q2h,s2,mW2,mZ2) ) + eZ2/sqr(s2-mW2) *t_u_RZ(s,tk,uk,q1,q2,s2,mW2,mZ2) ); } Energy2 t_u_Rdd(Energy2 s ,Energy2 tk ,Energy2 uk ,Energy2 q1,Energy2 q2, Energy2 mW2, Energy2 mZ2) { Energy2 Val(0.*GeV2); Val += 4.*(q2*(uk+2.*s+q2)+q1*(s+q1))/mW2/mZ2*uk + 16.*(uk+s)/q2*uk - 4.*(2.*uk+4.*s+q2)/mW2*uk - 4.*(2.*uk+5.*s+q2+2.*q1-mW2)/mZ2*uk + 4.*q1*s*(s+q1)/mW2/mZ2 + 16.*s*(s+q2-mZ2-mW2)/q1 - 4.*s*(4.*s+q2+q1)/mW2 + 16.*mW2*mZ2*s/q1/q2 + 4.*s + 16.*mZ2*(tk-2.*mW2)/q1/q2/q2*tk*uk + 16.*(2.*mZ2+mW2-tk)/q1/q2*tk*uk + 16.*mW2*(s-mZ2-mW2)/q1/q2*uk + 16.*mZ2*(q1-2.*mW2)/q2/q2*uk + 32.*mW2*mW2*mZ2/q1/q2/q2*uk + 16.*mW2/q1*uk + 4.*uk + 8./q2*tk*uk + 4.*q1/mW2/mZ2*tk*uk - 24./q1*tk*uk - 4./mW2*tk*uk; swap(mW2,mZ2); swap(q1,q2); swap(tk,uk); Val += 4.*(q2*(uk+2.*s+q2)+q1*(s+q1))/mW2/mZ2*uk + 16.*(uk+s)/q2*uk - 4.*(2.*uk+4.*s+q2)/mW2*uk - 4.*(2.*uk+5.*s+q2+2.*q1-mW2)/mZ2*uk + 4.*q1*s*(s+q1)/mW2/mZ2 + 16.*s*(s+q2-mZ2-mW2)/q1 - 4.*s*(4.*s+q2+q1)/mW2 + 16.*mW2*mZ2*s/q1/q2 + 4.*s + 16.*mZ2*(tk-2.*mW2)/q1/q2/q2*tk*uk + 16.*(2.*mZ2+mW2-tk)/q1/q2*tk*uk + 16.*mW2*(s-mZ2-mW2)/q1/q2*uk + 16.*mZ2*(q1-2.*mW2)/q2/q2*uk + 32.*mW2*mW2*mZ2/q1/q2/q2*uk + 16.*mW2/q1*uk + 4.*uk + 8./q2*tk*uk + 4.*q1/mW2/mZ2*tk*uk - 24./q1*tk*uk - 4./mW2*tk*uk; swap(mW2,mZ2); swap(q1,q2); swap(tk,uk); return Val; } Energy2 t_u_Rud(Energy2 s ,Energy2 tk ,Energy2 uk ,Energy2 q1,Energy2 q2, Energy2 q1h,Energy2 q2h,Energy2 mW2, Energy2 mZ2) { Energy2 Val(0.*GeV2); Val += (uk*s*(uk+3.*s+q1h)+s*s*(s+mZ2)-(s+uk)*(2.*mZ2*s+3.*mW2*s+mW2*q1h) ) * 8./q1/q2h/q2*uk - (uk*(uk+3.*s+q1h-mW2)-(q2+s)*(q2-s)+s*(q2-mW2)+q1h*(q2-mW2)+mW2*q2 ) * 4.*s/mZ2/q1/q2h*uk - 4.*((s+uk+q2h-2.*mZ2)*(s+q1h-mZ2)-mZ2*q1)/mW2/q2*uk + 4.*(2.*s*uk+2.*mW2*uk+5.*s*s+2.*q1h*s-2.*mZ2*s)/q1/q2h*uk + 4.*(2.*s*uk-s*s-2.*q1h*s+2.*mW2*s+2.*mW2*q1h)/q1/q2h/q2*tk*uk + ((2.*uk+s)*(s+q1h)+s*(q2+q2h)+2.*q2*(s+q2h)-q1*s+q1*q2+q1h*q2h ) /mW2/mZ2*uk + 8.*s*(uk-q1h+mZ2)/q1/q2*uk + 4.*s*(-uk+s-q2+q1+q1h)/mZ2/q2h*uk + 4.*s*(-uk-q2+q1h)/mZ2/q1*uk + 8.*(mZ2*uk-s*s+mW2*s-2.*mZ2*q1-2.*mZ2*q1h)/q2h/q2*uk + 2.*(-uk-9.*s-4.*q2-5.*q2h-3.*q1-4.*q1h+8.*mZ2)/mW2*uk + 2.*(-4.*uk+3.*s+5.*q1+4.*q1h)/q2h*uk + 2.*(s*tk+q2*tk+s*s-q2*q2+q1h*q2)/mW2/mZ2*tk - 8.*s*(tk+s+q1h)/mW2/q2*tk + 2.*(-tk+3.*s+q2-q1h)/mW2*tk - 8.*s*s*s/q1h/q2 - 2.*s*q2*(s+q2)/mW2/mZ2 + 2.*s*(2.*s+q2)/mZ2 + 2.*s*(2.*s+q2)/mW2 - 16.*s*s/q1h - 2.*s - 16.*s*s/q1h/q2*tk - 8.*s/q2*tk - 16.*s/q1h*tk + 6.*s/mZ2*tk + 4.*s/q1*uk + 4.*s/mZ2*uk + 12.*uk + 4.*s*(tk+q1h-mW2)/mZ2/q1/q2h*tk*uk + 2.*(s+4.*q1+5.*q1h-4.*mZ2)/q2*uk - 4.*s*s*s/q1h/q1/q2h/q2*tk*uk - 4.*s*s/q1h/q2h/q2*tk*uk - 4.*s*s/q1h/q1/q2*tk*uk + 8.*s*s/mW2/q1h/q2*tk*uk - 4.*s*s/q1h/q1/q2h*tk*uk + 4.*(s+mZ2)/mW2/q2*tk*uk - 4.*s/q1h/q2h*tk*uk - 4.*s/q1h/q1*tk*uk + 12.*s/mW2/q1h*tk*uk - (s+4.*q2)/mW2/mZ2*tk*uk - 4.*(s+2.*mZ2)/q2h/q2*tk*uk - 4.*(3.*s+2.*q1h)/q1/q2*tk*uk - 8.*mW2/q1/q2h*tk*uk + 8./q2h*tk*uk + 8./q1*tk*uk; swap(mW2,mZ2); swap(q1,q2); swap(tk,uk); swap(q1h,q2h); // Note this swap is done in accordance with MC@NLO. // It is not in NPB 383(1992)3-44 Eq.C.4! Val += (uk*s*(uk+3.*s+q1h)+s*s*(s+mZ2)-(s+uk)*(2.*mZ2*s+3.*mW2*s+mW2*q1h) ) * 8./q1/q2h/q2*uk - (uk*(uk+3.*s+q1h-mW2)-(q2+s)*(q2-s)+s*(q2-mW2)+q1h*(q2-mW2)+mW2*q2 ) * 4.*s/mZ2/q1/q2h*uk - 4.*((s+uk+q2h-2.*mZ2)*(s+q1h-mZ2)-mZ2*q1)/mW2/q2*uk + 4.*(2.*s*uk+2.*mW2*uk+5.*s*s+2.*q1h*s-2.*mZ2*s)/q1/q2h*uk + 4.*(2.*s*uk-s*s-2.*q1h*s+2.*mW2*s+2.*mW2*q1h)/q1/q2h/q2*tk*uk + ((2.*uk+s)*(s+q1h)+s*(q2+q2h)+2.*q2*(s+q2h)-q1*s+q1*q2+q1h*q2h ) /mW2/mZ2*uk + 8.*s*(uk-q1h+mZ2)/q1/q2*uk + 4.*s*(-uk+s-q2+q1+q1h)/mZ2/q2h*uk + 4.*s*(-uk-q2+q1h)/mZ2/q1*uk + 8.*(mZ2*uk-s*s+mW2*s-2.*mZ2*q1-2.*mZ2*q1h)/q2h/q2*uk + 2.*(-uk-9.*s-4.*q2-5.*q2h-3.*q1-4.*q1h+8.*mZ2)/mW2*uk + 2.*(-4.*uk+3.*s+5.*q1+4.*q1h)/q2h*uk + 2.*(s*tk+q2*tk+s*s-q2*q2+q1h*q2)/mW2/mZ2*tk - 8.*s*(tk+s+q1h)/mW2/q2*tk + 2.*(-tk+3.*s+q2-q1h)/mW2*tk - 8.*s*s*s/q1h/q2 - 2.*s*q2*(s+q2)/mW2/mZ2 + 2.*s*(2.*s+q2)/mZ2 + 2.*s*(2.*s+q2)/mW2 - 16.*s*s/q1h - 2.*s - 16.*s*s/q1h/q2*tk - 8.*s/q2*tk - 16.*s/q1h*tk + 6.*s/mZ2*tk + 4.*s/q1*uk + 4.*s/mZ2*uk + 12.*uk + 4.*s*(tk+q1h-mW2)/mZ2/q1/q2h*tk*uk + 2.*(s+4.*q1+5.*q1h-4.*mZ2)/q2*uk - 4.*s*s*s/q1h/q1/q2h/q2*tk*uk - 4.*s*s/q1h/q2h/q2*tk*uk - 4.*s*s/q1h/q1/q2*tk*uk + 8.*s*s/mW2/q1h/q2*tk*uk - 4.*s*s/q1h/q1/q2h*tk*uk + 4.*(s+mZ2)/mW2/q2*tk*uk - 4.*s/q1h/q2h*tk*uk - 4.*s/q1h/q1*tk*uk + 12.*s/mW2/q1h*tk*uk - (s+4.*q2)/mW2/mZ2*tk*uk - 4.*(s+2.*mZ2)/q2h/q2*tk*uk - 4.*(3.*s+2.*q1h)/q1/q2*tk*uk - 8.*mW2/q1/q2h*tk*uk + 8./q2h*tk*uk + 8./q1*tk*uk; swap(mW2,mZ2); swap(q1,q2); swap(tk,uk); swap(q1h,q2h); // Note this swap is done in accordance with MC@NLO. // It is not in NPB 383(1992)3-44 Eq.C.4! swap(tk,uk); swap(q1,q2h); swap(q2,q1h); Val += (uk*s*(uk+3.*s+q1h)+s*s*(s+mZ2)-(s+uk)*(2.*mZ2*s+3.*mW2*s+mW2*q1h) ) * 8./q1/q2h/q2*uk - (uk*(uk+3.*s+q1h-mW2)-(q2+s)*(q2-s)+s*(q2-mW2)+q1h*(q2-mW2)+mW2*q2 ) * 4.*s/mZ2/q1/q2h*uk - 4.*((s+uk+q2h-2.*mZ2)*(s+q1h-mZ2)-mZ2*q1)/mW2/q2*uk + 4.*(2.*s*uk+2.*mW2*uk+5.*s*s+2.*q1h*s-2.*mZ2*s)/q1/q2h*uk + 4.*(2.*s*uk-s*s-2.*q1h*s+2.*mW2*s+2.*mW2*q1h)/q1/q2h/q2*tk*uk + ((2.*uk+s)*(s+q1h)+s*(q2+q2h)+2.*q2*(s+q2h)-q1*s+q1*q2+q1h*q2h ) /mW2/mZ2*uk + 8.*s*(uk-q1h+mZ2)/q1/q2*uk + 4.*s*(-uk+s-q2+q1+q1h)/mZ2/q2h*uk + 4.*s*(-uk-q2+q1h)/mZ2/q1*uk + 8.*(mZ2*uk-s*s+mW2*s-2.*mZ2*q1-2.*mZ2*q1h)/q2h/q2*uk + 2.*(-uk-9.*s-4.*q2-5.*q2h-3.*q1-4.*q1h+8.*mZ2)/mW2*uk + 2.*(-4.*uk+3.*s+5.*q1+4.*q1h)/q2h*uk + 2.*(s*tk+q2*tk+s*s-q2*q2+q1h*q2)/mW2/mZ2*tk - 8.*s*(tk+s+q1h)/mW2/q2*tk + 2.*(-tk+3.*s+q2-q1h)/mW2*tk - 8.*s*s*s/q1h/q2 - 2.*s*q2*(s+q2)/mW2/mZ2 + 2.*s*(2.*s+q2)/mZ2 + 2.*s*(2.*s+q2)/mW2 - 16.*s*s/q1h - 2.*s - 16.*s*s/q1h/q2*tk - 8.*s/q2*tk - 16.*s/q1h*tk + 6.*s/mZ2*tk + 4.*s/q1*uk + 4.*s/mZ2*uk + 12.*uk + 4.*s*(tk+q1h-mW2)/mZ2/q1/q2h*tk*uk + 2.*(s+4.*q1+5.*q1h-4.*mZ2)/q2*uk - 4.*s*s*s/q1h/q1/q2h/q2*tk*uk - 4.*s*s/q1h/q2h/q2*tk*uk - 4.*s*s/q1h/q1/q2*tk*uk + 8.*s*s/mW2/q1h/q2*tk*uk - 4.*s*s/q1h/q1/q2h*tk*uk + 4.*(s+mZ2)/mW2/q2*tk*uk - 4.*s/q1h/q2h*tk*uk - 4.*s/q1h/q1*tk*uk + 12.*s/mW2/q1h*tk*uk - (s+4.*q2)/mW2/mZ2*tk*uk - 4.*(s+2.*mZ2)/q2h/q2*tk*uk - 4.*(3.*s+2.*q1h)/q1/q2*tk*uk - 8.*mW2/q1/q2h*tk*uk + 8./q2h*tk*uk + 8./q1*tk*uk; swap(tk,uk); swap(q1,q2h); swap(q2,q1h); swap(mW2,mZ2); swap(q1,q1h); swap(q2,q2h); Val += (uk*s*(uk+3.*s+q1h)+s*s*(s+mZ2)-(s+uk)*(2.*mZ2*s+3.*mW2*s+mW2*q1h) ) * 8./q1/q2h/q2*uk - (uk*(uk+3.*s+q1h-mW2)-(q2+s)*(q2-s)+s*(q2-mW2)+q1h*(q2-mW2)+mW2*q2 ) * 4.*s/mZ2/q1/q2h*uk - 4.*((s+uk+q2h-2.*mZ2)*(s+q1h-mZ2)-mZ2*q1)/mW2/q2*uk + 4.*(2.*s*uk+2.*mW2*uk+5.*s*s+2.*q1h*s-2.*mZ2*s)/q1/q2h*uk + 4.*(2.*s*uk-s*s-2.*q1h*s+2.*mW2*s+2.*mW2*q1h)/q1/q2h/q2*tk*uk + ((2.*uk+s)*(s+q1h)+s*(q2+q2h)+2.*q2*(s+q2h)-q1*s+q1*q2+q1h*q2h ) /mW2/mZ2*uk + 8.*s*(uk-q1h+mZ2)/q1/q2*uk + 4.*s*(-uk+s-q2+q1+q1h)/mZ2/q2h*uk + 4.*s*(-uk-q2+q1h)/mZ2/q1*uk + 8.*(mZ2*uk-s*s+mW2*s-2.*mZ2*q1-2.*mZ2*q1h)/q2h/q2*uk + 2.*(-uk-9.*s-4.*q2-5.*q2h-3.*q1-4.*q1h+8.*mZ2)/mW2*uk + 2.*(-4.*uk+3.*s+5.*q1+4.*q1h)/q2h*uk + 2.*(s*tk+q2*tk+s*s-q2*q2+q1h*q2)/mW2/mZ2*tk - 8.*s*(tk+s+q1h)/mW2/q2*tk + 2.*(-tk+3.*s+q2-q1h)/mW2*tk - 8.*s*s*s/q1h/q2 - 2.*s*q2*(s+q2)/mW2/mZ2 + 2.*s*(2.*s+q2)/mZ2 + 2.*s*(2.*s+q2)/mW2 - 16.*s*s/q1h - 2.*s - 16.*s*s/q1h/q2*tk - 8.*s/q2*tk - 16.*s/q1h*tk + 6.*s/mZ2*tk + 4.*s/q1*uk + 4.*s/mZ2*uk + 12.*uk + 4.*s*(tk+q1h-mW2)/mZ2/q1/q2h*tk*uk + 2.*(s+4.*q1+5.*q1h-4.*mZ2)/q2*uk - 4.*s*s*s/q1h/q1/q2h/q2*tk*uk - 4.*s*s/q1h/q2h/q2*tk*uk - 4.*s*s/q1h/q1/q2*tk*uk + 8.*s*s/mW2/q1h/q2*tk*uk - 4.*s*s/q1h/q1/q2h*tk*uk + 4.*(s+mZ2)/mW2/q2*tk*uk - 4.*s/q1h/q2h*tk*uk - 4.*s/q1h/q1*tk*uk + 12.*s/mW2/q1h*tk*uk - (s+4.*q2)/mW2/mZ2*tk*uk - 4.*(s+2.*mZ2)/q2h/q2*tk*uk - 4.*(3.*s+2.*q1h)/q1/q2*tk*uk - 8.*mW2/q1/q2h*tk*uk + 8./q2h*tk*uk + 8./q1*tk*uk; swap(mW2,mZ2); swap(q1,q1h); swap(q2,q2h); return Val; } Energy2 t_u_Ruu(Energy2 s ,Energy2 tk ,Energy2 uk ,Energy2 q1h,Energy2 q2h, Energy2 mW2, Energy2 mZ2) { return t_u_Rdd(s,tk,uk,q1h,q2h,mZ2,mW2); } Energy4 t_u_RZds(Energy2 s ,Energy2 tk ,Energy2 uk ,Energy2 q1,Energy2 q2, Energy2 s2, Energy2 mW2, Energy2 mZ2) { Energy4 Val(0.*GeV2*GeV2); Energy2 sig(mZ2+mW2); Val += ( q1*q2*(5./2.*s*s+5.*s*tk+3.*tk*tk)+(tk*uk*uk+q1*q1*q2)*(tk+s) + q1*(tk*tk*uk+s*uk*uk-s*s*tk+s*s*uk)+q1*q1*q1*(uk+s)-q1*q1*s*s2 ) * 8./q1/q2 - ( tk*tk*(4.*uk+s+q1-2.*q2)+tk*(sqr(q1+q2)-q1*s-3.*q2*s-2.*q1*q1) - q1*s*(4.*s-2.*q1-q2)+tk*uk*(q1+3.*s) ) * 4.*sig/q1/q2 - 4.*sig*sig*(s*(2.*s+q1)+tk*(uk+5./2.*tk+5.*s+q1+q2) )/mW2/mZ2 + 2.*sig*s2*(4.*sqr(s+tk)+tk*(uk+s+4.*q1+2.*q2)+2.*q1*(2.*s+q1) )/mW2/mZ2 + 4.*sig*sig*(s2+s-q1+q2)/q1/q2*tk - 16.*mW2*mZ2*(tk*uk/2.+q2*tk-q1*s)/q1/q2 - 4.*s2*s2*q1*(tk+s+q1)/mW2/mZ2 + sig*sig*sig*(uk+tk)/mW2/mZ2 + 4.*mW2*mZ2*sig*(uk+tk)/q1/q2; swap(mW2,mZ2); swap(q1,q2); swap(tk,uk); Val += ( q1*q2*(5./2.*s*s+5.*s*tk+3.*tk*tk)+(tk*uk*uk+q1*q1*q2)*(tk+s) + q1*(tk*tk*uk+s*uk*uk-s*s*tk+s*s*uk)+q1*q1*q1*(uk+s)-q1*q1*s*s2 ) * 8./q1/q2 - ( tk*tk*(4.*uk+s+q1-2.*q2)+tk*(sqr(q1+q2)-q1*s-3.*q2*s-2.*q1*q1) - q1*s*(4.*s-2.*q1-q2)+tk*uk*(q1+3.*s) ) * 4.*sig/q1/q2 - 4.*sig*sig*(s*(2.*s+q1)+tk*(uk+5./2.*tk+5.*s+q1+q2) )/mW2/mZ2 + 2.*sig*s2*(4.*sqr(s+tk)+tk*(uk+s+4.*q1+2.*q2)+2.*q1*(2.*s+q1) )/mW2/mZ2 + 4.*sig*sig*(s2+s-q1+q2)/q1/q2*tk - 16.*mW2*mZ2*(tk*uk/2.+q2*tk-q1*s)/q1/q2 - 4.*s2*s2*q1*(tk+s+q1)/mW2/mZ2 + sig*sig*sig*(uk+tk)/mW2/mZ2 + 4.*mW2*mZ2*sig*(uk+tk)/q1/q2; swap(mW2,mZ2); swap(q1,q2); swap(tk,uk); return Val; } Energy4 t_u_RZda(Energy2 s ,Energy2 tk ,Energy2 uk ,Energy2 q1,Energy2 q2, Energy2 s2, Energy2 mW2, Energy2 mZ2) { Energy4 Val(0.*GeV2*GeV2); Val += 4.*mZ2*(2.*uk*uk-s*tk+q1*(uk-tk-s+q1+0.5*q2)+q2*(s-3.*q2) ) /q1/q2*tk - 4.*mZ2*mZ2*(q1-tk-2.*s-q2)/q1/q2*tk - 2.*mZ2*(tk+2.*s+2.*q2)/mW2*tk - 2.*s2*(s+2.*q2)/mZ2*tk + 8.*mW2*mZ2*mZ2/q1/q2*tk + 2.*mZ2*mZ2/mW2*tk; swap(mW2,mZ2); // N.B. Here we subtract! Val -= 4.*mZ2*(2.*uk*uk-s*tk+q1*(uk-tk-s+q1+0.5*q2)+q2*(s-3.*q2) ) /q1/q2*tk - 4.*mZ2*mZ2*(q1-tk-2.*s-q2)/q1/q2*tk - 2.*mZ2*(tk+2.*s+2.*q2)/mW2*tk - 2.*s2*(s+2.*q2)/mZ2*tk + 8.*mW2*mZ2*mZ2/q1/q2*tk + 2.*mZ2*mZ2/mW2*tk; swap(mW2,mZ2); swap(q1,q2); // N.B. Here we subtract! swap(tk,uk); Val -= 4.*mZ2*(2.*uk*uk-s*tk+q1*(uk-tk-s+q1+0.5*q2)+q2*(s-3.*q2) ) /q1/q2*tk - 4.*mZ2*mZ2*(q1-tk-2.*s-q2)/q1/q2*tk - 2.*mZ2*(tk+2.*s+2.*q2)/mW2*tk - 2.*s2*(s+2.*q2)/mZ2*tk + 8.*mW2*mZ2*mZ2/q1/q2*tk + 2.*mZ2*mZ2/mW2*tk; swap(q1,q2); swap(tk,uk); swap(mW2,mZ2); // N.B. Here we add! swap(q1,q2); swap(tk,uk); Val += 4.*mZ2*(2.*uk*uk-s*tk+q1*(uk-tk-s+q1+0.5*q2)+q2*(s-3.*q2) ) /q1/q2*tk - 4.*mZ2*mZ2*(q1-tk-2.*s-q2)/q1/q2*tk - 2.*mZ2*(tk+2.*s+2.*q2)/mW2*tk - 2.*s2*(s+2.*q2)/mZ2*tk + 8.*mW2*mZ2*mZ2/q1/q2*tk + 2.*mZ2*mZ2/mW2*tk; swap(mW2,mZ2); swap(q1,q2); swap(tk,uk); return Val; } Energy4 t_u_RZd(Energy2 s , Energy2 tk , Energy2 uk , Energy2 q1 , Energy2 q2 , Energy2 s2, Energy2 mW2, Energy2 mZ2) { Energy4 Val(0.*GeV2*GeV2); Val = t_u_RZds(s,tk,uk,q1,q2,s2,mW2,mZ2) + t_u_RZda(s,tk,uk,q1,q2,s2,mW2,mZ2); return Val; } Energy4 t_u_RZu(Energy2 s , Energy2 tk , Energy2 uk , Energy2 q1h, Energy2 q2h, Energy2 s2, Energy2 mW2, Energy2 mZ2) { Energy4 Val(0.*GeV2*GeV2); Val = t_u_RZd(s,tk,uk,q1h,q2h,s2,mZ2,mW2); return Val; } Energy6 t_u_RZs(Energy2 s,Energy2 tk,Energy2 uk,Energy2 q1,Energy2 q2, Energy2 s2,Energy2 mW2,Energy2 mZ2) { Energy6 Val(0.*GeV2*GeV2*GeV2); Energy2 sig(mZ2+mW2); Val += 2.*sig*sig*s2*( tk*(3.*uk+9.*tk+19.*s+6.*q1+4.*q2)+8.*s*s+6.*q1*s + 2.*q1*q1 )/mW2/mZ2 - 2.*sig*sig*sig*(tk*(3.*uk+6.*tk+11.*s+2.*q1+2.*q2)+2.*s*(2.*s+q1)) / mW2/mZ2 - 2.*sig*s2*s2*(tk*(uk+4.*tk+9.*s+6.*q1+2.*q2)+4.*sqr(s+q1)-2.*q1*s) /mW2/mZ2 - 16.*sig*(2.*tk*(uk/2.-tk-s+q1+q2)-s*(3.*s/2.-2.*q1)) + 8.*s2*(s*(s/2.+tk)+4.*q1*(tk+s+q1)) + 4.*s2*s2*s2*q1*(tk+s+q1)/mW2/mZ2 + 8.*sig*sig*(2.*tk+s/2.) + 2.*sig*sig*sig*sig*tk/mW2/mZ2 + 32.*mW2*mZ2*s; swap(mW2,mZ2); swap(q1,q2); swap(tk,uk); Val += 2.*sig*sig*s2*( tk*(3.*uk+9.*tk+19.*s+6.*q1+4.*q2)+8.*s*s+6.*q1*s + 2.*q1*q1 )/mW2/mZ2 - 2.*sig*sig*sig*(tk*(3.*uk+6.*tk+11.*s+2.*q1+2.*q2)+2.*s*(2.*s+q1)) / mW2/mZ2 - 2.*sig*s2*s2*(tk*(uk+4.*tk+9.*s+6.*q1+2.*q2)+4.*sqr(s+q1)-2.*q1*s) /mW2/mZ2 - 16.*sig*(2.*tk*(uk/2.-tk-s+q1+q2)-s*(3.*s/2.-2.*q1)) + 8.*s2*(s*(s/2.+tk)+4.*q1*(tk+s+q1)) + 4.*s2*s2*s2*q1*(tk+s+q1)/mW2/mZ2 + 8.*sig*sig*(2.*tk+s/2.) + 2.*sig*sig*sig*sig*tk/mW2/mZ2 + 32.*mW2*mZ2*s; swap(mW2,mZ2); swap(q1,q2); swap(tk,uk); return Val; } Energy6 t_u_RZa(Energy2 s,Energy2 tk,Energy2 uk,Energy2 q1,Energy2 q2, Energy2 s2,Energy2 mW2,Energy2 mZ2) { Energy6 Val(0.*GeV2*GeV2*GeV2); Val += - 2.*mZ2*(2.*tk+11.*s+18.*q2)*tk - 2.*mZ2*mZ2*(2.*tk+3.*s+2.*q2)/mW2*tk + 2.*mZ2*s2*(tk+3.*s+4.*q2)/mW2*tk - 2.*s2*s2*(s+2.*q2)/mW2*tk + 2.*mZ2*mZ2*mZ2/mW2*tk + 20.*mZ2*mZ2*tk; swap(mW2,mZ2); Val -= - 2.*mZ2*(2.*tk+11.*s+18.*q2)*tk - 2.*mZ2*mZ2*(2.*tk+3.*s+2.*q2)/mW2*tk + 2.*mZ2*s2*(tk+3.*s+4.*q2)/mW2*tk - 2.*s2*s2*(s+2.*q2)/mW2*tk + 2.*mZ2*mZ2*mZ2/mW2*tk + 20.*mZ2*mZ2*tk; swap(mW2,mZ2); swap(q1,q2); swap(tk,uk); Val -= - 2.*mZ2*(2.*tk+11.*s+18.*q2)*tk - 2.*mZ2*mZ2*(2.*tk+3.*s+2.*q2)/mW2*tk + 2.*mZ2*s2*(tk+3.*s+4.*q2)/mW2*tk - 2.*s2*s2*(s+2.*q2)/mW2*tk + 2.*mZ2*mZ2*mZ2/mW2*tk + 20.*mZ2*mZ2*tk; swap(q1,q2); swap(tk,uk); swap(mW2,mZ2); swap(q1,q2); swap(tk,uk); Val += - 2.*mZ2*(2.*tk+11.*s+18.*q2)*tk - 2.*mZ2*mZ2*(2.*tk+3.*s+2.*q2)/mW2*tk + 2.*mZ2*s2*(tk+3.*s+4.*q2)/mW2*tk - 2.*s2*s2*(s+2.*q2)/mW2*tk + 2.*mZ2*mZ2*mZ2/mW2*tk + 20.*mZ2*mZ2*tk; swap(mW2,mZ2); swap(q1,q2); swap(tk,uk); return Val; } Energy6 t_u_RZ(Energy2 s , Energy2 tk , Energy2 uk , Energy2 q1, Energy2 q2, Energy2 s2, Energy2 mW2, Energy2 mZ2) { Energy6 Val(0.*GeV2*GeV2*GeV2); Val = t_u_RZs(s,tk,uk,q1,q2,s2,mW2,mZ2) + t_u_RZa(s,tk,uk,q1,q2,s2,mW2,mZ2); return Val; } /***************************************************************************/ // t_u_M_R_qg is the real emission q + qb -> n + g matrix element // exactly as defined in Eqs. C.9 of NPB 383(1992)3-44, multiplied by // tk * uk! Energy2 MEPP2VVPowheg::t_u_M_R_qg(realVVKinematics R) const { // First the Born variables: Energy2 s2(R.s2r()); Energy2 mW2(R.k12r()); Energy2 mZ2(R.k22r()); // Then the rest: Energy2 s(R.sr()); Energy2 tk(R.tkr()); Energy2 uk(R.ukr()); Energy2 q1(R.q1r()); Energy2 q2(R.q2r()); Energy2 q1h(R.q1hatr()); Energy2 q2h(R.q2hatr()); Energy2 w1(R.w1r()); Energy2 w2(R.w2r()); double cosThetaW(sqrt(1.-sin2ThetaW_)); double eZ2(eZ2_); double eZ(eZ_); double gdL(gdL_); double guL(guL_); double gdR(gdR_); double guR(guR_); // W+W- if(abs(mePartonData()[2]->id())==24&&abs(mePartonData()[3]->id())==24) { double e2(sqr(gW_)*sin2ThetaW_); if(abs(quark_->id())%2==0&&abs(antiquark_->id())%2==0) { // N.B. OLD eZ used to calculate new eZ2 *then* new eZ is set! if(quark_->id()==-antiquark_->id()) { eZ2 = 1./2.*sqr(s2-mW2)/Fij2_ * (e2*e2/s2/s2*(sqr( 2./3.+eZ*(guL+guR)/2./e2*s2/(s2-mW2/sqr(cosThetaW))) +sqr( eZ*(guL-guR)/2./e2*s2/(s2-mW2/sqr(cosThetaW)))) ); eZ = -1./2./Fij2_/(gW_*gW_/4./sqrt(Fij2_))*(s2-mW2) * (gW_*gW_*e2/4./s2 *( 2./3.+2.*eZ*guL/2./e2*s2/(s2-mW2/sqr(cosThetaW)))); } else { eZ2 =0.; eZ =0.; } gdL = gW_/sqrt(2.); guL = 0.; } else if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==1) { // N.B. OLD eZ used to calculate new eZ2 *then* new eZ is set! if(quark_->id()==-antiquark_->id()) { eZ2 = 1./2.*sqr(s2-mW2)/Fij2_ * (e2*e2/s2/s2*(sqr(-1./3.+eZ*(gdL+gdR)/2./e2*s2/(s2-mW2/sqr(cosThetaW))) +sqr( eZ*(gdL-gdR)/2./e2*s2/(s2-mW2/sqr(cosThetaW)))) ); eZ = -1./2./Fij2_/(gW_*gW_/4./sqrt(Fij2_))*(s2-mW2) * (gW_*gW_*e2/4./s2 *(-1./3.+2.*eZ*gdL/2./e2*s2/(s2-mW2/sqr(cosThetaW)))); } else { eZ2 =0.; eZ =0.; } guL = gW_/sqrt(2.); gdL = 0.; } } // ZZ else if(mePartonData()[2]->id()==23&&mePartonData()[3]->id()==23) { eZ = 0.; eZ2 = 0.; double gV2,gA2; gV2 = sqr(guL/2.-gW_/2./cosThetaW*2./3.*sin2ThetaW_); gA2 = sqr(guL/2.+gW_/2./cosThetaW*2./3.*sin2ThetaW_); guL = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; gV2 = sqr(gdL/2.+gW_/2./cosThetaW*1./3.*sin2ThetaW_); gA2 = sqr(gdL/2.-gW_/2./cosThetaW*1./3.*sin2ThetaW_); gdL = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; if(abs(quark_->id())%2==0&&abs(antiquark_->id())%2==0) gdL = guL; else if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==1) guL = gdL; else { cout << "MEPP2VVPowheg:" << endl; cout << "ZZ needs 2 down-type / 2 up-type!" << endl; } } Energy2 Val(0.*GeV2); swap(s,tk); swap(q2,w2); swap(q2h,w1); Val = -2.*pi*alphaS_*Fij2_*CF_/NC_ * ( gdL*gdL*t_u_Rdd(s,tk,uk,q1,q2,mW2,mZ2) + 2.*gdL*guL*t_u_Rud(s,tk,uk,q1,q2,q1h,q2h,mW2,mZ2) + guL*guL*t_u_Ruu(s,tk,uk,q1h,q2h,mW2,mZ2) - 2.*eZ/(s2-mW2) * ( gdL * t_u_RZd(s,tk,uk,q1 ,q2 ,s2,mW2,mZ2) - guL * t_u_RZu(s,tk,uk,q1h,q2h,s2,mW2,mZ2) ) + eZ2/sqr(s2-mW2) *t_u_RZ(s,tk,uk,q1,q2,s2,mW2,mZ2) ); swap(s,tk); swap(q2,w2); swap(q2h,w1); Val *= -tk/s * TR_/CF_; return Val; } /***************************************************************************/ // t_u_M_R_gqb is the real emission g + qb -> n + q matrix element // exactly as defined in Eqs. C.9 of NPB 383(1992)3-44, multiplied by // tk * uk! Energy2 MEPP2VVPowheg::t_u_M_R_gqb(realVVKinematics R) const { // First the Born variables: Energy2 s2(R.s2r()); Energy2 mW2(R.k12r()); Energy2 mZ2(R.k22r()); // Then the rest: Energy2 s(R.sr()); Energy2 tk(R.tkr()); Energy2 uk(R.ukr()); Energy2 q1(R.q1r()); Energy2 q2(R.q2r()); Energy2 q1h(R.q1hatr()); Energy2 q2h(R.q2hatr()); Energy2 w1(R.w1r()); Energy2 w2(R.w2r()); double cosThetaW(sqrt(1.-sin2ThetaW_)); double eZ2(eZ2_); double eZ(eZ_); double gdL(gdL_); double guL(guL_); double gdR(gdR_); double guR(guR_); // W+W- if(abs(mePartonData()[2]->id())==24&&abs(mePartonData()[3]->id())==24) { double e2(sqr(gW_)*sin2ThetaW_); if(abs(quark_->id())%2==0&&abs(antiquark_->id())%2==0) { // N.B. OLD eZ used to calculate new eZ2 *then* new eZ is set! if(quark_->id()==-antiquark_->id()) { eZ2 = 1./2.*sqr(s2-mW2)/Fij2_ * (e2*e2/s2/s2*(sqr( 2./3.+eZ*(guL+guR)/2./e2*s2/(s2-mW2/sqr(cosThetaW))) +sqr( eZ*(guL-guR)/2./e2*s2/(s2-mW2/sqr(cosThetaW)))) ); eZ = -1./2./Fij2_/(gW_*gW_/4./sqrt(Fij2_))*(s2-mW2) * (gW_*gW_*e2/4./s2 *( 2./3.+2.*eZ*guL/2./e2*s2/(s2-mW2/sqr(cosThetaW)))); } else { eZ2 =0.; eZ =0.; } gdL = gW_/sqrt(2.); guL = 0.; } else if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==1) { // N.B. OLD eZ used to calculate new eZ2 *then* new eZ is set! if(quark_->id()==-antiquark_->id()) { eZ2 = 1./2.*sqr(s2-mW2)/Fij2_ * (e2*e2/s2/s2*(sqr(-1./3.+eZ*(gdL+gdR)/2./e2*s2/(s2-mW2/sqr(cosThetaW))) +sqr( eZ*(gdL-gdR)/2./e2*s2/(s2-mW2/sqr(cosThetaW)))) ); eZ = -1./2./Fij2_/(gW_*gW_/4./sqrt(Fij2_))*(s2-mW2) * (gW_*gW_*e2/4./s2 *(-1./3.+2.*eZ*gdL/2./e2*s2/(s2-mW2/sqr(cosThetaW)))); } else { eZ2 =0.; eZ =0.; } guL = gW_/sqrt(2.); gdL = 0.; } } // ZZ else if(mePartonData()[2]->id()==23&&mePartonData()[3]->id()==23) { eZ = 0.; eZ2 = 0.; double gV2,gA2; gV2 = sqr(guL/2.-gW_/2./cosThetaW*2./3.*sin2ThetaW_); gA2 = sqr(guL/2.+gW_/2./cosThetaW*2./3.*sin2ThetaW_); guL = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; gV2 = sqr(gdL/2.+gW_/2./cosThetaW*1./3.*sin2ThetaW_); gA2 = sqr(gdL/2.-gW_/2./cosThetaW*1./3.*sin2ThetaW_); gdL = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; if(abs(quark_->id())%2==0&&abs(antiquark_->id())%2==0) gdL = guL; else if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==1) guL = gdL; else { cout << "MEPP2VVPowheg:" << endl; cout << "ZZ needs 2 down-type / 2 up-type!" << endl; } } Energy2 Val(0.*GeV2); swap(s,uk); swap(q1,w1); swap(q1h,w2); Val = -2.*pi*alphaS_*Fij2_*CF_/NC_ * ( gdL*gdL*t_u_Rdd(s,tk,uk,q1,q2,mW2,mZ2) + 2.*gdL*guL*t_u_Rud(s,tk,uk,q1,q2,q1h,q2h,mW2,mZ2) + guL*guL*t_u_Ruu(s,tk,uk,q1h,q2h,mW2,mZ2) - 2.*eZ/(s2-mW2) * ( gdL * t_u_RZd(s,tk,uk,q1 ,q2 ,s2,mW2,mZ2) - guL * t_u_RZu(s,tk,uk,q1h,q2h,s2,mW2,mZ2) ) + eZ2/sqr(s2-mW2) *t_u_RZ(s,tk,uk,q1,q2,s2,mW2,mZ2) ); swap(s,uk); swap(q1,w1); swap(q1h,w2); Val *= -uk/s * TR_/CF_; return Val; } /***************************************************************************/ // The following six functions are I_{dd}^{(0)}, I_{ud}^{(0)}, // I_{uu}^{(0)}, F_{u}^{(0)}, F_{d}^{(0)}, H^{(0)} from Eqs. 3.9 - 3.14 // They make up the Born matrix element. Ixx functions correspond to the // graphs with no TGC, Fx functions are due to non-TGC graphs interfering // with TGC graphs, while the H function is due purely to TGC graphs. double Idd0(Energy2 s,Energy2 t,Energy2 u,Energy2 mW2,Energy2 mZ2); double Iud0(Energy2 s,Energy2 t,Energy2 u,Energy2 mW2,Energy2 mZ2); double Iuu0(Energy2 s,Energy2 t,Energy2 u,Energy2 mW2,Energy2 mZ2); Energy2 Fu0(Energy2 s,Energy2 t,Energy2 u,Energy2 mW2,Energy2 mZ2); Energy2 Fd0(Energy2 s,Energy2 t,Energy2 u,Energy2 mW2,Energy2 mZ2); Energy4 H0 (Energy2 s,Energy2 t,Energy2 u,Energy2 mW2,Energy2 mZ2); /***************************************************************************/ // M_Born_WZ is the Born matrix element exactly as defined in Eqs. 3.3-3.14 // of of NPB 383(1992)3-44 (with a spin*colour averaging factor 1./4./NC_/NC_). double MEPP2VVPowheg::M_Born_WZ(bornVVKinematics B) const { Energy2 s(B.sb()); Energy2 t(B.tb()); Energy2 u(B.ub()); Energy2 mW2(B.k12b()); // N.B. the diboson masses are preserved in getting Energy2 mZ2(B.k22b()); // the 2->2 from the 2->3 kinematics. double cosThetaW(sqrt(1.-sin2ThetaW_)); double eZ2(eZ2_); double eZ(eZ_); double gdL(gdL_); double guL(guL_); double gdR(gdR_); double guR(guR_); // W+W- if(abs(mePartonData()[2]->id())==24&&abs(mePartonData()[3]->id())==24) { double e2(sqr(gW_)*sin2ThetaW_); if(abs(quark_->id())%2==0&&abs(antiquark_->id())%2==0) { // N.B. OLD eZ used to calculate new eZ2 *then* new eZ is set! if(quark_->id()==-antiquark_->id()) { eZ2 = 1./2.*sqr(s-mW2)/Fij2_ * (e2*e2/s/s*(sqr( 2./3.+eZ*(guL+guR)/2./e2*s/(s-mW2/sqr(cosThetaW))) +sqr( eZ*(guL-guR)/2./e2*s/(s-mW2/sqr(cosThetaW)))) ); eZ = -1./2./Fij2_/(gW_*gW_/4./sqrt(Fij2_))*(s-mW2) * (gW_*gW_*e2/4./s *( 2./3.+2.*eZ*guL/2./e2*s/(s-mW2/sqr(cosThetaW)))); } else { eZ2 =0.; eZ =0.; } gdL = gW_/sqrt(2.); guL = 0.; } else if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==1) { // N.B. OLD eZ used to calculate new eZ2 *then* new eZ is set! if(quark_->id()==-antiquark_->id()) { eZ2 = 1./2.*sqr(s-mW2)/Fij2_ * (e2*e2/s/s*(sqr(-1./3.+eZ*(gdL+gdR)/2./e2*s/(s-mW2/sqr(cosThetaW))) +sqr( eZ*(gdL-gdR)/2./e2*s/(s-mW2/sqr(cosThetaW)))) ); eZ = -1./2./Fij2_/(gW_*gW_/4./sqrt(Fij2_))*(s-mW2) * (gW_*gW_*e2/4./s *(-1./3.+2.*eZ*gdL/2./e2*s/(s-mW2/sqr(cosThetaW)))); } else { eZ2 =0.; eZ =0.; } guL = gW_/sqrt(2.); gdL = 0.; } } // ZZ else if(mePartonData()[2]->id()==23&&mePartonData()[3]->id()==23) { eZ = 0.; eZ2 = 0.; double gV2,gA2; gV2 = sqr(guL/2.-gW_/2./cosThetaW*2./3.*sin2ThetaW_); gA2 = sqr(guL/2.+gW_/2./cosThetaW*2./3.*sin2ThetaW_); guL = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; gV2 = sqr(gdL/2.+gW_/2./cosThetaW*1./3.*sin2ThetaW_); gA2 = sqr(gdL/2.-gW_/2./cosThetaW*1./3.*sin2ThetaW_); gdL = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; if(abs(quark_->id())%2==0&&abs(antiquark_->id())%2==0) gdL = guL; else if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==1) guL = gdL; else { cout << "MEPP2VVPowheg:" << endl; cout << "ZZ needs 2 down-type / 2 up-type!" << endl; } } return Fij2_/2./NC_ * ( gdL*gdL*Idd0(s,t,u,mW2,mZ2) + 2.*gdL*guL*Iud0(s,t,u,mW2,mZ2) + guL*guL*Iuu0(s,t,u,mW2,mZ2) - 2.*eZ/(s-mW2) * ( gdL*Fd0(s,t,u,mW2,mZ2) - guL*Fu0(s,t,u,mW2,mZ2) ) + eZ2/sqr(s-mW2) * H0(s,t,u,mW2,mZ2) ); } /***************************************************************************/ double Idd0(Energy2 s, Energy2 t, Energy2 u, Energy2 mW2, Energy2 mZ2) { return 8.*((u*t/mW2/mZ2-1.)/4.+s/2.*(mW2+mZ2)/mW2/mZ2) + 8.*(u/t-mW2*mZ2/t/t); } /***************************************************************************/ double Iud0(Energy2 s, Energy2 t, Energy2 u, Energy2 mW2, Energy2 mZ2) { return - 8.*((u*t/mW2/mZ2-1.)/4.+s/2.*(mW2+mZ2)/mW2/mZ2) + 8.*s/t/u*(mW2+mZ2); } /***************************************************************************/ double Iuu0(Energy2 s, Energy2 t, Energy2 u, Energy2 mW2, Energy2 mZ2) { return Idd0(s,u,t,mW2,mZ2); } /***************************************************************************/ Energy2 Fd0 (Energy2 s, Energy2 t, Energy2 u, Energy2 mW2, Energy2 mZ2) { return - 8.*s*( (u*t/mW2/mZ2-1.)*(1.-(mW2+mZ2)/s-4.*mW2*mZ2/s/t)/4. + (mW2+mZ2)/2./mW2/mZ2*(s-mW2-mZ2+2.*mW2*mZ2/t) ); } /***************************************************************************/ Energy2 Fu0 (Energy2 s, Energy2 t, Energy2 u, Energy2 mW2, Energy2 mZ2) { return Fd0(s,u,t,mW2,mZ2); } /***************************************************************************/ Energy4 H0 (Energy2 s, Energy2 t, Energy2 u, Energy2 mW2, Energy2 mZ2) { return 8.*s*s*(u*t/mW2/mZ2-1.)*( 1./4.-(mW2+mZ2)/2./s + (sqr(mW2+mZ2)+8.*mW2*mZ2)/4./s/s ) + 8.*s*s*(mW2+mZ2)/mW2/mZ2*(s/2.-mW2-mZ2+sqr(mW2-mZ2)/2./s); } /***************************************************************************/ bool MEPP2VVPowheg::sanityCheck() const { bool alarm(false); Energy2 prefacs(8.*pi*alphaS_*S_.sr() /S_.xr() ); Energy2 prefacsp(8.*pi*alphaS_*SCp_.sr() /SCp_.xr() ); Energy2 prefacsm(8.*pi*alphaS_*SCm_.sr() /SCm_.xr() ); Energy2 prefacp(8.*pi*alphaS_*Cp_.sr()/Cp_.xr()); Energy2 prefacm(8.*pi*alphaS_*Cm_.sr()/Cm_.xr()); double xp(Cp_.xr()); double xm(Cm_.xr()); double M_B_WW(M_Born_WW(B_)); double M_B_ZZ(M_Born_ZZ(B_)); double M_V_reg_WW(M_V_regular_WW(S_)); double M_V_reg_ZZ(M_V_regular_ZZ(S_)); Energy2 t_u_qqb_WW(t_u_M_R_qqb_WW(H_)); Energy2 t_u_qqb_ZZ(t_u_M_R_qqb_ZZ(H_)); // Check that the native leading order Herwig++ matrix // element is equivalent to the WZ leading order matrix // element in NPB 383 (1992) 3-44, with the relevant WZ->WW // WZ->ZZ transformation applied (M_Born_). // if(fabs((lo_me2_ - M_Born_)/M_Born_)>1.e-2) { // alarm=true; // cout << "lo_me2_ - M_Born_ (%) = " // << lo_me2_ - M_Born_ << " (" // << (lo_me2_ - M_Born_)/M_Born_*100. << ")\n"; // } // Check that the transformation from NPB 383 (1992) 3-44 WZ // matrix elements to WW matrix elements actually works, by // comparing them to the explicit WW matrix elements in // NPB 410 (1993) 280-324. if(abs(mePartonData()[2]->id())==24&&abs(mePartonData()[3]->id())==24) { if(fabs((M_Born_ -M_B_WW )/M_B_WW )>1.e-6) { alarm=true; cout << "WZ->WW transformation error!\n"; cout << "M_Born_ - M_B_WW (rel) = " << M_Born_ - M_B_WW << " (" << (M_Born_ - M_B_WW)/M_B_WW << ")\n"; cout << "M_Born_ = " << M_Born_ << endl; cout << "M_B_WW = " << M_B_WW << endl; } if(fabs((M_V_regular_-M_V_reg_WW)/M_V_reg_WW)>1.e-6) { alarm=true; cout << "WZ->WW transformation error!\n"; cout << "M_V_regular_ - M_V_reg_WW (rel) = " << M_V_regular_ - M_V_reg_WW << " (" << (M_V_regular_ - M_V_reg_WW)/M_V_reg_WW << ")\n"; cout << "M_V_regular_ = " << M_V_regular_ << endl; cout << "M_V_reg_WW = " << M_V_reg_WW << endl; } if(fabs((t_u_M_R_qqb_-t_u_qqb_WW)/t_u_qqb_WW)>1.e-6) { alarm=true; cout << "WZ->WW transformation error!\n"; cout << "t_u_M_R_qqb_ - t_u_qqb_WW (rel) = " << (t_u_M_R_qqb_ - t_u_qqb_WW)/GeV2 << " (" << (t_u_M_R_qqb_ - t_u_qqb_WW)/t_u_qqb_WW << ")\n"; cout << "t_u_M_R_qqb_ = " << t_u_M_R_qqb_/GeV2 << endl; cout << "t_u_qqb_WW = " << t_u_qqb_WW /GeV2 << endl; } } // Check that the transformation from NPB 383 (1992) 3-44 WZ // matrix elements to ZZ matrix elements actually works, by // comparing them to the explicit ZZ matrix elements in // NPB 357 (1991) 409-438. if(abs(mePartonData()[2]->id())==23&&abs(mePartonData()[3]->id())==23) { if(fabs((M_Born_ -M_B_ZZ )/M_B_ZZ )>1.e-6) { alarm=true; cout << "WZ->ZZ transformation error!\n"; cout << "M_Born_ - M_B_ZZ (rel) = " << M_Born_ - M_B_ZZ << " (" << (M_Born_ - M_B_ZZ)/M_B_ZZ << ")\n"; cout << "M_Born_ = " << M_Born_ << endl; cout << "M_B_ZZ = " << M_B_ZZ << endl; } if(fabs((M_V_regular_-M_V_reg_ZZ)/M_V_reg_ZZ)>1.e-6) { alarm=true; cout << "WZ->ZZ transformation error!\n"; cout << "M_V_regular_ - M_V_reg_ZZ (rel) = " << M_V_regular_ - M_V_reg_ZZ << " (" << (M_V_regular_ - M_V_reg_ZZ)/M_V_reg_ZZ << ")\n"; cout << "M_V_regular_ = " << M_V_regular_ << endl; cout << "M_V_reg_ZZ = " << M_V_reg_ZZ << endl; } if(fabs((t_u_M_R_qqb_-t_u_qqb_ZZ)/t_u_qqb_ZZ)>1.e-6) { alarm=true; cout << "WZ->ZZ transformation error!\n"; cout << "t_u_M_R_qqb_ - t_u_qqb_ZZ (rel) = " << (t_u_M_R_qqb_ - t_u_qqb_ZZ)/GeV2 << " (" << (t_u_M_R_qqb_ - t_u_qqb_ZZ)/t_u_qqb_ZZ << ")\n"; cout << "t_u_M_R_qqb_ = " << t_u_M_R_qqb_/GeV2 << endl; cout << "t_u_qqb_ZZ = " << t_u_qqb_ZZ /GeV2 << endl; } } // Check the soft limit of the q + qbar matrix element. Energy2 absDiff_qqbs = t_u_M_R_qqb(S_) - prefacs*2.*CF_*M_Born_; double relDiff_qqbs = absDiff_qqbs / t_u_M_R_qqb(S_); if(fabs(relDiff_qqbs)>1.e-6) { alarm=true; cout << "\n"; cout << "t_u_M_R_qqb(S_) " << t_u_M_R_qqb(S_) /GeV2 << endl; cout << "t_u_M_R_qqb(S_)-8*pi*alphaS*sHat/x*2*Cab*M_Born_ (rel):\n" << absDiff_qqbs / GeV2 << " (" << relDiff_qqbs << ")\n"; } // Check the positive soft-collinearlimit of the q + qbar matrix element. Energy2 absDiff_qqbsp = t_u_M_R_qqb(SCp_) - prefacsp*2.*CF_*M_Born_; double relDiff_qqbsp = absDiff_qqbsp / t_u_M_R_qqb(SCp_); if(fabs(relDiff_qqbsp)>1.e-6) { alarm=true; cout << "\n"; cout << "t_u_M_R_qqb(SCp_) " << t_u_M_R_qqb(SCp_)/GeV2 << endl; cout << "t_u_M_R_qqb(SCp_)-8*pi*alphaS*sHat/x*2*Cab*M_Born_ (rel):\n" << absDiff_qqbsp / GeV2 << " (" << relDiff_qqbsp << ")\n"; } // Check the negative soft-collinearlimit of the q + qbar matrix element. Energy2 absDiff_qqbsm = t_u_M_R_qqb(SCm_) - prefacsm*2.*CF_*M_Born_; double relDiff_qqbsm = absDiff_qqbsm / t_u_M_R_qqb(SCm_); if(fabs(relDiff_qqbsm)>1.e-6) { alarm=true; cout << "\n"; cout << "t_u_M_R_qqb(SCm_) " << t_u_M_R_qqb(SCm_)/GeV2 << endl; cout << "t_u_M_R_qqb(SCm_)-8*pi*alphaS*sHat/x*2*Cab*M_Born_ (rel):\n" << absDiff_qqbsm / GeV2 << " (" << relDiff_qqbsm << ")\n"; } // Check the positive collinearlimit of the q + qbar matrix element. Energy2 absDiff_qqbp = t_u_M_R_qqb(Cp_) - prefacp*CF_*(1.+xp*xp)*M_Born_; double relDiff_qqbp = absDiff_qqbp / t_u_M_R_qqb(Cp_); if(fabs(relDiff_qqbp)>1.e-6) { alarm=true; cout << "\n"; cout << "t_u_M_R_qqb(Cp_) " << t_u_M_R_qqb(Cp_) /GeV2 << endl; cout << "t_u_M_R_qqb(Cp_)-8*pi*alphaS*sHat/x*(1-x)*Pqq*M_Born_ (rel):\n" << absDiff_qqbp / GeV2 << " (" << relDiff_qqbp << ")\n"; } // Check the negative collinearlimit of the q + qbar matrix element. Energy2 absDiff_qqbm = t_u_M_R_qqb(Cm_) - prefacm*CF_*(1.+xm*xm)*M_Born_; double relDiff_qqbm = absDiff_qqbm / t_u_M_R_qqb(Cm_); if(fabs(relDiff_qqbm)>1.e-6) { alarm=true; cout << "\n"; cout << "t_u_M_R_qqb(Cm_) " << t_u_M_R_qqb(Cm_) /GeV2 << endl; cout << "t_u_M_R_qqb(Cm_)-8*pi*alphaS*sHat/x*(1-x)*Pqq*M_Born_ (rel):\n" << absDiff_qqbm / GeV2 << " (" << relDiff_qqbm << ")\n"; } // Check the positive collinear limit of the g + qbar matrix element. Energy2 absDiff_gqbp = t_u_M_R_gqb(Cp_) - prefacp*(1.-xp)*TR_*(xp*xp+sqr(1.-xp))*M_Born_; double relDiff_gqbp = absDiff_gqbp/ t_u_M_R_gqb(Cp_); if(fabs(relDiff_gqbp)>1.e-6) { alarm=true; cout << "\n"; cout << "t_u_M_R_gqb(Cp_) " << t_u_M_R_gqb(Cp_) /GeV2 << endl; cout << "t_u_M_R_gqb(Cp_)-8*pi*alphaS*sHat/x*(1-x)*Pgq*M_Born_ (rel):\n" << absDiff_gqbp / GeV2 << " (" << relDiff_gqbp << ")\n"; } // Check the negative collinear limit of the q + g matrix element. Energy2 absDiff_qgm = t_u_M_R_qg(Cm_) - prefacm*(1.-xm)*TR_*(xm*xm+sqr(1.-xm))*M_Born_; double relDiff_qgm = absDiff_qgm / t_u_M_R_qg(Cm_); if(fabs(relDiff_qgm)>1.e-6) { alarm=true; cout << "\n"; cout << "t_u_M_R_qg(Cm_) " << t_u_M_R_qg(Cm_) /GeV2 << endl; cout << "t_u_M_R_qg(Cm_)-8*pi*alphaS*sHat/x*(1-x)*Pgq*M_Born_ (rel):\n" << absDiff_qgm / GeV2 << " (" << relDiff_qgm << ")\n"; } return alarm; } /***************************************************************************/ // M_Born_ZZ is the Born matrix element exactly as defined in Eqs. 2.18-2.19 // of of NPB 357(1991)409-438. double MEPP2VVPowheg::M_Born_ZZ(bornVVKinematics B) const { Energy2 s(B.sb()); Energy2 t(B.tb()); Energy2 u(B.ub()); Energy2 mZ2(B.k22b()); // the 2->2 from the 2->3 kinematics. double cosThetaW(sqrt(1.-sin2ThetaW_)); double gV2,gA2,gX,gY,gZ; gV2 = sqr(guL_/2.-gW_/2./cosThetaW*2./3.*sin2ThetaW_); gA2 = sqr(guL_/2.+gW_/2./cosThetaW*2./3.*sin2ThetaW_); gX = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; gV2 = sqr(gdL_/2.+gW_/2./cosThetaW*1./3.*sin2ThetaW_); gA2 = sqr(gdL_/2.-gW_/2./cosThetaW*1./3.*sin2ThetaW_); gY = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; gZ = gX; if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==1) gZ = gY; return 1./NC_*sqr(gZ*2.)*(t/u+u/t+4.*mZ2*s/t/u-mZ2*mZ2*(1./t/t+1./u/u)); } /***************************************************************************/ // M_V_regular_ZZ is the one-loop ZZ matrix element exactly as defined in // Eqs. B.1 & B.2 of NPB 357(1991)409-438. double MEPP2VVPowheg::M_V_regular_ZZ(realVVKinematics S) const { Energy2 s(S.bornVariables().sb()); Energy2 t(S.bornVariables().tb()); Energy2 u(S.bornVariables().ub()); Energy2 mZ2(S.k22r()); // the 2->2 from the 2->3 kinematics. double beta(S.betaxr()); // N.B. for x=1 \beta_x=\beta in NPB 383(1992)3-44. double cosThetaW(sqrt(1.-sin2ThetaW_)); double gV2,gA2,gX,gY,gZ; gV2 = sqr(guL_/2.-gW_/2./cosThetaW*2./3.*sin2ThetaW_); gA2 = sqr(guL_/2.+gW_/2./cosThetaW*2./3.*sin2ThetaW_); gX = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; gV2 = sqr(gdL_/2.+gW_/2./cosThetaW*1./3.*sin2ThetaW_); gA2 = sqr(gdL_/2.-gW_/2./cosThetaW*1./3.*sin2ThetaW_); gY = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; gZ = gX; if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==1) gZ = gY; double M_V_reg(0.); M_V_reg = 2.*s*sqr(gZ*2.)*4.*pi*alphaS_*CF_/NC_/sqr(4.*pi)/2. *( 2.*sqr(t+mZ2)/sqr(beta)/s/t/u + 4.*s/(t-mZ2)/u - ( 16.*t*t*t+(28.*s-68.*mZ2)*t*t+(18.*s*s-36.*mZ2*s+88.*mZ2*mZ2)*t + 18.*mZ2*mZ2*s-36.*mZ2*mZ2*mZ2 )/t/t/s/u + ( 12.*s/(t-mZ2)/u-4.*mZ2*s/sqr(t-mZ2)/u+2.*(t+4.*s)/s/u - 6.*(s*s+mZ2*mZ2)/s/t/u+6.*mZ2*mZ2*(2.*mZ2-s)/t/t/s/u )*log(-t/mZ2) + ( - ( 5.*t*t*t+(8.*s-18.*mZ2)*t*t+(6.*s*s+25.*mZ2*mZ2)*t + 6.*mZ2*mZ2*s-12.*mZ2*mZ2*mZ2 )/t/t/s/u - 12.*mZ2*sqr(t+mZ2)/sqr(sqr(beta))/s/s/t/u + ( 3.*t*t-26.*mZ2*t-25.*mZ2*mZ2)/sqr(beta)/s/t/u )*log(s/mZ2) + ( (-2.*t*t+8.*mZ2*t-2.*s*s-12.*mZ2*mZ2)/u + 4.*mZ2*mZ2*(2.*mZ2-s)/t/u) / (s*t) * ( 2.*sqr(log(-t/mZ2))-4.*log(-t/mZ2)*log((mZ2-t)/mZ2)-4.*ReLi2(t/mZ2)) + ( 4.*(t*t-5.*mZ2*t+s*s+10.*mZ2*mZ2)/s/u + 4.*mZ2*(-s*s+2.*mZ2*s-10.*mZ2*mZ2)/s/t/u + 8.*mZ2*mZ2*mZ2*(2.*mZ2-s)/t/t/s/u ) / (t-mZ2) * (pi*pi/2.+log(-t/mZ2)*log(-t/s)-1./2.*sqr(log(-t/mZ2))) + ( ( (2.*s-3.*mZ2)*t*t+(6.*mZ2*mZ2-8.*mZ2*s)*t+2.*s*s*s-4.*mZ2*s*s + 12.*mZ2*mZ2*s-3.*mZ2*mZ2*mZ2 ) /s/t/u + 12.*mZ2*mZ2*sqr(t+mZ2)/sqr(sqr(beta))/s/s/t/u - (mZ2*t*t-30.*mZ2*mZ2*t-27.*mZ2*mZ2*mZ2)/beta/beta/s/t/u ) / (beta*s) * (pi*pi/3.+sqr(log((1.-beta)/(1.+beta)))+4.*ReLi2(-(1.-beta)/(1.+beta))) + (4.*(t+4.*s-4.*mZ2)/3./s/u+4.*sqr(s-2.*mZ2)/3./s/t/u)*pi*pi ); swap(t,u); M_V_reg += 2.*s*sqr(gZ*2.)*4.*pi*alphaS_*CF_/NC_/sqr(4.*pi)/2. *( 2.*sqr(t+mZ2)/sqr(beta)/s/t/u + 4.*s/(t-mZ2)/u - ( 16.*t*t*t+(28.*s-68.*mZ2)*t*t+(18.*s*s-36.*mZ2*s+88.*mZ2*mZ2)*t + 18.*mZ2*mZ2*s-36.*mZ2*mZ2*mZ2 )/t/t/s/u + ( 12.*s/(t-mZ2)/u-4.*mZ2*s/sqr(t-mZ2)/u+2.*(t+4.*s)/s/u - 6.*(s*s+mZ2*mZ2)/s/t/u+6.*mZ2*mZ2*(2.*mZ2-s)/t/t/s/u )*log(-t/mZ2) + ( - ( 5.*t*t*t+(8.*s-18.*mZ2)*t*t+(6.*s*s+25.*mZ2*mZ2)*t + 6.*mZ2*mZ2*s-12.*mZ2*mZ2*mZ2 )/t/t/s/u - 12.*mZ2*sqr(t+mZ2)/sqr(sqr(beta))/s/s/t/u + ( 3.*t*t-26.*mZ2*t-25.*mZ2*mZ2)/sqr(beta)/s/t/u )*log(s/mZ2) + ( (-2.*t*t+8.*mZ2*t-2.*s*s-12.*mZ2*mZ2)/u + 4.*mZ2*mZ2*(2.*mZ2-s)/t/u) / (s*t) * ( 2.*sqr(log(-t/mZ2))-4.*log(-t/mZ2)*log((mZ2-t)/mZ2)-4.*ReLi2(t/mZ2)) + ( 4.*(t*t-5.*mZ2*t+s*s+10.*mZ2*mZ2)/s/u + 4.*mZ2*(-s*s+2.*mZ2*s-10.*mZ2*mZ2)/s/t/u + 8.*mZ2*mZ2*mZ2*(2.*mZ2-s)/t/t/s/u ) / (t-mZ2) * (pi*pi/2.+log(-t/mZ2)*log(-t/s)-1./2.*sqr(log(-t/mZ2))) + ( ( (2.*s-3.*mZ2)*t*t+(6.*mZ2*mZ2-8.*mZ2*s)*t+2.*s*s*s-4.*mZ2*s*s + 12.*mZ2*mZ2*s-3.*mZ2*mZ2*mZ2 ) /s/t/u + 12.*mZ2*mZ2*sqr(t+mZ2)/sqr(sqr(beta))/s/s/t/u - (mZ2*t*t-30.*mZ2*mZ2*t-27.*mZ2*mZ2*mZ2)/beta/beta/s/t/u ) / (beta*s) * (pi*pi/3.+sqr(log((1.-beta)/(1.+beta)))+4.*ReLi2(-(1.-beta)/(1.+beta))) + (4.*(t+4.*s-4.*mZ2)/3./s/u+4.*sqr(s-2.*mZ2)/3./s/t/u)*pi*pi ); return M_V_reg; } /***************************************************************************/ // t_u_M_R_qqb_ZZ is the real emission q + qb -> n + g matrix element // exactly as defined in Eqs. C.1 of NPB 357(1991)409-438, multiplied by // tk * uk! Energy2 MEPP2VVPowheg::t_u_M_R_qqb_ZZ(realVVKinematics R) const { // First the Born variables: Energy2 mZ2(R.k22r()); // Then the rest: Energy2 s(R.sr()); Energy2 tk(R.tkr()); Energy2 uk(R.ukr()); Energy2 q1(R.q1r()); Energy2 q2(R.q2r()); Energy2 q1h(R.q1hatr()); Energy2 q2h(R.q2hatr()); double cosThetaW(sqrt(1.-sin2ThetaW_)); double gV2,gA2,gX,gY,gZ; gV2 = sqr(guL_/2.-gW_/2./cosThetaW*2./3.*sin2ThetaW_); gA2 = sqr(guL_/2.+gW_/2./cosThetaW*2./3.*sin2ThetaW_); gX = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; gV2 = sqr(gdL_/2.+gW_/2./cosThetaW*1./3.*sin2ThetaW_); gA2 = sqr(gdL_/2.-gW_/2./cosThetaW*1./3.*sin2ThetaW_); gY = sqrt(gV2*gV2+gA2*gA2+6.*gA2*gV2)/2.; gZ = gX; if(abs(quark_->id())%2==1&&abs(antiquark_->id())%2==1) gZ = gY; Energy2 t_u_qqb(0.*GeV2); t_u_qqb = (2.*s)*sqr(gZ*2.)*4.*pi*alphaS_*CF_/NC_/2. * ( - ( tk*uk*uk+2.*s*uk*uk-tk*tk*uk - 2.*s*tk*uk+mZ2*(tk*tk-uk*uk+2.*s*uk-2.*s*tk-2.*s*s) )/q1h/q1/q2h/s*tk + 2.*(tk*uk*uk-mZ2*uk*(s+3.*tk)+mZ2*mZ2*(2.*uk-s))/q1/q2/s + ( tk*uk*(uk+s)-mZ2*(uk*uk+3.*tk*uk+3.*s*uk+s*tk) + 2.*mZ2*mZ2*(uk+tk+2.*s) )/q1h/q1/q2/s*tk + ( tk*(uk*uk+tk*uk-s*s)+mZ2*(4.*s*uk-3.*tk*uk-tk*tk+4.*s*s) )/q1h/q2/s - ( tk*uk+s*uk-s*tk-s*s+2.*mZ2*(s-tk) ) /q1h/q1/s*tk + q2*(tk*uk-s*uk-2.*s*tk-2.*s*s)/q1/q2h/s + 2.*(tk*uk-tk*tk-s*tk-s*s+mZ2*(2.*s-uk))/q1/s - 2.*mZ2*(uk*uk-2.*mZ2*uk+2.*mZ2*mZ2)/q1/q1/q2/s*tk + (2.*s*uk+tk*tk+3.*s*tk+2*s*s)/q1h/s + q1*(uk+s)*(uk+tk)/q1h/q2h/s + (tk*uk+s*uk+3.*s*tk+2.*s*s-mZ2*(uk+tk+2.*s))/q1h/q2h/s*uk + (uk-tk)/2./q1h/q2h/s*(q1*(uk+s)/q2/tk-q2*(tk+s)/q1/uk)*tk*uk + (tk-2.*mZ2)*(uk-2.*mZ2)/q1h/q1/q2h/q2*tk*uk - (q1*q1+q2*q2)/q1/q2 - 2.*mZ2*(q2-2.*mZ2)/q1/q1/s*tk ); swap(tk ,uk ); swap(q1 ,q2 ); swap(q1h,q2h); t_u_qqb += (2.*s)*sqr(gZ*2.)*4.*pi*alphaS_*CF_/NC_/2. * ( - ( tk*uk*uk+2.*s*uk*uk-tk*tk*uk - 2.*s*tk*uk+mZ2*(tk*tk-uk*uk+2.*s*uk-2.*s*tk-2.*s*s) )/q1h/q1/q2h/s*tk + 2.*(tk*uk*uk-mZ2*uk*(s+3.*tk)+mZ2*mZ2*(2.*uk-s))/q1/q2/s + ( tk*uk*(uk+s)-mZ2*(uk*uk+3.*tk*uk+3.*s*uk+s*tk) + 2.*mZ2*mZ2*(uk+tk+2.*s) )/q1h/q1/q2/s*tk + ( tk*(uk*uk+tk*uk-s*s)+mZ2*(4.*s*uk-3.*tk*uk-tk*tk+4.*s*s) )/q1h/q2/s - ( tk*uk+s*uk-s*tk-s*s+2.*mZ2*(s-tk) ) /q1h/q1/s*tk + q2*(tk*uk-s*uk-2.*s*tk-2.*s*s)/q1/q2h/s + 2.*(tk*uk-tk*tk-s*tk-s*s+mZ2*(2.*s-uk))/q1/s - 2.*mZ2*(uk*uk-2.*mZ2*uk+2.*mZ2*mZ2)/q1/q1/q2/s*tk + (2.*s*uk+tk*tk+3.*s*tk+2*s*s)/q1h/s + q1*(uk+s)*(uk+tk)/q1h/q2h/s + (tk*uk+s*uk+3.*s*tk+2.*s*s-mZ2*(uk+tk+2.*s))/q1h/q2h/s*uk + (uk-tk)/2./q1h/q2h/s*(q1*(uk+s)/q2/tk-q2*(tk+s)/q1/uk)*tk*uk + (tk-2.*mZ2)*(uk-2.*mZ2)/q1h/q1/q2h/q2*tk*uk - (q1*q1+q2*q2)/q1/q2 - 2.*mZ2*(q2-2.*mZ2)/q1/q1/s*tk ); swap(tk ,uk ); swap(q1 ,q2 ); swap(q1h,q2h); swap(q1 ,q1h); swap(q2 ,q2h); t_u_qqb += (2.*s)*sqr(gZ*2.)*4.*pi*alphaS_*CF_/NC_/2. * ( - ( tk*uk*uk+2.*s*uk*uk-tk*tk*uk - 2.*s*tk*uk+mZ2*(tk*tk-uk*uk+2.*s*uk-2.*s*tk-2.*s*s) )/q1h/q1/q2h/s*tk + 2.*(tk*uk*uk-mZ2*uk*(s+3.*tk)+mZ2*mZ2*(2.*uk-s))/q1/q2/s + ( tk*uk*(uk+s)-mZ2*(uk*uk+3.*tk*uk+3.*s*uk+s*tk) + 2.*mZ2*mZ2*(uk+tk+2.*s) )/q1h/q1/q2/s*tk + ( tk*(uk*uk+tk*uk-s*s)+mZ2*(4.*s*uk-3.*tk*uk-tk*tk+4.*s*s) )/q1h/q2/s - ( tk*uk+s*uk-s*tk-s*s+2.*mZ2*(s-tk) ) /q1h/q1/s*tk + q2*(tk*uk-s*uk-2.*s*tk-2.*s*s)/q1/q2h/s + 2.*(tk*uk-tk*tk-s*tk-s*s+mZ2*(2.*s-uk))/q1/s - 2.*mZ2*(uk*uk-2.*mZ2*uk+2.*mZ2*mZ2)/q1/q1/q2/s*tk + (2.*s*uk+tk*tk+3.*s*tk+2*s*s)/q1h/s + q1*(uk+s)*(uk+tk)/q1h/q2h/s + (tk*uk+s*uk+3.*s*tk+2.*s*s-mZ2*(uk+tk+2.*s))/q1h/q2h/s*uk + (uk-tk)/2./q1h/q2h/s*(q1*(uk+s)/q2/tk-q2*(tk+s)/q1/uk)*tk*uk + (tk-2.*mZ2)*(uk-2.*mZ2)/q1h/q1/q2h/q2*tk*uk - (q1*q1+q2*q2)/q1/q2 - 2.*mZ2*(q2-2.*mZ2)/q1/q1/s*tk ); swap(q1 ,q1h); swap(q2 ,q2h); swap(tk ,uk ); swap(q1 ,q2h); swap(q2 ,q1h); t_u_qqb += (2.*s)*sqr(gZ*2.)*4.*pi*alphaS_*CF_/NC_/2. * ( - ( tk*uk*uk+2.*s*uk*uk-tk*tk*uk - 2.*s*tk*uk+mZ2*(tk*tk-uk*uk+2.*s*uk-2.*s*tk-2.*s*s) )/q1h/q1/q2h/s*tk + 2.*(tk*uk*uk-mZ2*uk*(s+3.*tk)+mZ2*mZ2*(2.*uk-s))/q1/q2/s + ( tk*uk*(uk+s)-mZ2*(uk*uk+3.*tk*uk+3.*s*uk+s*tk) + 2.*mZ2*mZ2*(uk+tk+2.*s) )/q1h/q1/q2/s*tk + ( tk*(uk*uk+tk*uk-s*s)+mZ2*(4.*s*uk-3.*tk*uk-tk*tk+4.*s*s) )/q1h/q2/s - ( tk*uk+s*uk-s*tk-s*s+2.*mZ2*(s-tk) ) /q1h/q1/s*tk + q2*(tk*uk-s*uk-2.*s*tk-2.*s*s)/q1/q2h/s + 2.*(tk*uk-tk*tk-s*tk-s*s+mZ2*(2.*s-uk))/q1/s - 2.*mZ2*(uk*uk-2.*mZ2*uk+2.*mZ2*mZ2)/q1/q1/q2/s*tk + (2.*s*uk+tk*tk+3.*s*tk+2*s*s)/q1h/s + q1*(uk+s)*(uk+tk)/q1h/q2h/s + (tk*uk+s*uk+3.*s*tk+2.*s*s-mZ2*(uk+tk+2.*s))/q1h/q2h/s*uk + (uk-tk)/2./q1h/q2h/s*(q1*(uk+s)/q2/tk-q2*(tk+s)/q1/uk)*tk*uk + (tk-2.*mZ2)*(uk-2.*mZ2)/q1h/q1/q2h/q2*tk*uk - (q1*q1+q2*q2)/q1/q2 - 2.*mZ2*(q2-2.*mZ2)/q1/q1/s*tk ); swap(tk ,uk ); swap(q1 ,q2h); swap(q2 ,q1h); return t_u_qqb; } /***************************************************************************/ // M_B_WW is the Born matrix element exactly as defined in Eqs. 3.2-3.8 // of of NPB 410(1993)280-384. double MEPP2VVPowheg::M_Born_WW(bornVVKinematics B) const { Energy2 s(B.sb()); Energy2 t(B.tb()); Energy2 u(B.ub()); Energy2 mW2(B.k12b()); // N.B. the diboson masses are preserved in getting bool up_type = abs(quark_->id())%2==0 ? true : false; double Qi = up_type ? 2./3. : -1./3. ; double giL = up_type ? guL_/2. : gdL_/2.; double giR = up_type ? guR_/2. : gdR_/2.; double e2 = sqr(gW_)*sin2ThetaW_; double cos2ThetaW(1.-sin2ThetaW_); double ctt_i(gW_*gW_*gW_*gW_/16.); InvEnergy2 cts_i(gW_*gW_*e2/4./s *(Qi+2.*eZ_*giL/e2*s/(s-mW2/cos2ThetaW))); InvEnergy4 css_i(e2*e2/s/s*(sqr(Qi+eZ_*(giL+giR)/e2*s/(s-mW2/cos2ThetaW)) +sqr( eZ_*(giL-giR)/e2*s/(s-mW2/cos2ThetaW))) ); ctt_i *= 8.*Fij2_/gW_/gW_; cts_i *= sqrt(8.*Fij2_/gW_/gW_); if(quark_->id()!=-antiquark_->id()) { cts_i = 0./GeV2; css_i = 0./GeV2/GeV2; } if(!up_type) swap(t,u); double signf = up_type ? 1. : -1.; return 1./4./NC_ * ( ctt_i*( 16.*(u*t/mW2/mW2-1.)*(1./4.+mW2*mW2/t/t)+16.*s/mW2) - cts_i*( 16.*(u*t/mW2/mW2-1.)*(s/4.-mW2/2.-mW2*mW2/t) + 16.*s*(s/mW2-2.+2.*mW2/t) ) *signf + css_i*( 8.*(u*t/mW2/mW2-1.)*(s*s/4.-s*mW2+3.*mW2*mW2) + 8.*s*s*(s/mW2-4.) ) ); } /***************************************************************************/ // M_V_regular_WW is the regular part of the one-loop WW matrix element // exactly as defined in Eqs. C.1 - C.7 of of NPB 410(1993)280-324 *** // modulo a factor 1/(2s) ***, which is a flux factor that those authors // absorb in the matrix element. double MEPP2VVPowheg::M_V_regular_WW(realVVKinematics S) const { Energy2 s(S.bornVariables().sb()); Energy2 t(S.bornVariables().tb()); Energy2 u(S.bornVariables().ub()); Energy2 mW2(S.k12r()); // N.B. the diboson masses are preserved in getting double beta(S.betaxr()); // N.B. for x=1 \beta_x=\beta in NPB 383(1992)3-44. bool up_type = abs(quark_->id())%2==0 ? true : false; double Qi = up_type ? 2./3. : -1./3.; double giL = up_type ? guL_/2. : gdL_/2.; double giR = up_type ? guR_/2. : gdR_/2.; double e2 = sqr(gW_)*sin2ThetaW_; double cos2ThetaW(1.-sin2ThetaW_); double ctt_i(gW_*gW_*gW_*gW_/16.); InvEnergy2 cts_i(gW_*gW_*e2/4./s *(Qi+2.*eZ_*giL/e2*s/(s-mW2/cos2ThetaW))); InvEnergy4 css_i(e2*e2/s/s*(sqr(Qi+eZ_*(giL+giR)/e2*s/(s-mW2/cos2ThetaW)) +sqr( eZ_*(giL-giR)/e2*s/(s-mW2/cos2ThetaW))) ); ctt_i *= 8.*Fij2_/gW_/gW_; cts_i *= sqrt(8.*Fij2_/gW_/gW_); if(quark_->id()!=-antiquark_->id()) { cts_i = 0./GeV2; css_i = 0./GeV2/GeV2; } if(!up_type) swap(t,u); double signf = up_type ? 1. : -1.; InvEnergy4 TildeI4 = ( 2.*sqr(log(-t/mW2))-4.*log((mW2-t)/mW2)*log(-t/mW2) - 4.*ReLi2(t/mW2) )/s/t; InvEnergy2 TildeI3t = 1./(mW2-t) *(sqr(log(mW2/s))/2.-sqr(log(-t/s))/2.-pi*pi/2.); InvEnergy2 TildeI3l = 1./s/beta*( 4.*ReLi2((beta-1.)/(beta+1.)) + sqr(log((1.-beta)/(1.+beta))) + pi*pi/3.); double Fup1_st(0.); Fup1_st = 4.*(80.*t*t+73.*s*t-140.*mW2*t+72.*mW2*mW2)/t/t - 4.*sqr(4.*t+s)/s/beta/beta/t - 128.*(t+2.*s)/mW2 + 64.*t*(t+s)/mW2/mW2 - (32.*(t*t-3.*s*t-3.*mW2*mW2)/t/t+128.*s/(t-mW2))*log(-t/mW2) + ( 8.*(6.*t*t+8.*s*t-19.*mW2*t+12.*mW2*mW2)/t/t - (32.*t*t-128.*s*t-26.*s*s)/s/beta/beta/t + 6.*sqr(4.*t+s)/s/sqr(sqr(beta))/t )*log(s/mW2) + 32.*s*(2.*mW2*mW2/t-u)*TildeI4 - 64.*(t-mW2)*(2.*mW2*mW2/t/t-u/t)*TildeI3t + ( (16.*t*(4.*mW2-u)-49.*s*s+72.*mW2*s-48.*mW2*mW2)/2./t + 2.*(8.*t*t-14.*s*t-3.*s*s)/beta/beta/t - 3.*sqr(4.*t+s)/2./sqr(sqr(beta))/t )*TildeI3l + 32./3.*( 2.*(t+2.*s)/mW2 - (3.*t+2.*s-4.*mW2)/t - t*(t+s)/mW2/mW2 )*pi*pi; Energy2 Jup1_st(0.*GeV2); Jup1_st = -128.*(t*t+2.*s*t+2.*s*s)/mW2 - 16.*(t*t-21.*s*t-26.*mW2*t+34.*mW2*s+17.*mW2*mW2)/t + 64.*s*t*(t+s)/mW2/mW2 +32.*s*s/(t-mW2) + ( 16.*(t-5.*s+2.*mW2)-48.*mW2*(2.*s+mW2)/t + 64.*s*(2.*t+s)/(t-mW2) - 32.*s*s*t/sqr(t-mW2) )*log(-t/mW2) + ( 16.*(4.*t+s)/beta/beta - 16.*(3.*t-2.*s) + 48.*mW2*(2.*t-2.*s-mW2)/t )*log(s/mW2) + 16.*s*(t*(2.*s+u)-2.*mW2*(2.*s+mW2))*TildeI4 + 32.*(t-mW2)*(2.*mW2*(2.*s+mW2)/t-2.*s-u)*TildeI3t + ( 32.*s*t-12.*s*s+32.*mW2*mW2 - 16.*mW2*(2.*t+7.*s)-4.*s*(4.*t+s)/beta/beta )*TildeI3l + 32./3.*( 2.*(t*t+2.*s*t+2.*s*s)/mW2 - s*t*(t+s)/mW2/mW2-2.*mW2*(2.*t-2.*s-mW2)/t-t-4.*s )*pi*pi; Energy4 Kup1_st(0.*GeV2*GeV2); Kup1_st = 16.*( 12.*t*t+20.*s*t-24.*mW2*t+17.*s*s-4.*mW2*s+12.*mW2*mW2 + s*s*t*(t+s)/mW2/mW2-2.*s*(2.*t*t+3.*s*t+2.*s*s)/mW2) *(2.-pi*pi/3.); return pi*alphaS_*CF_/NC_/(sqr(4.*pi)) * ( ctt_i*Fup1_st - cts_i*Jup1_st*signf + css_i*Kup1_st ); } /***************************************************************************/ // t_u_M_R_qqb is the real emission q + qb -> n + g matrix element // exactly as defined in Eqs. C.1 of NPB 383(1992)3-44, multiplied by // tk * uk! Energy2 MEPP2VVPowheg::t_u_M_R_qqb_WW(realVVKinematics R) const { // First the Born variables: Energy2 s2(R.s2r()); Energy2 mW2(R.k12r()); // Then the rest: Energy2 s(R.sr()); Energy2 tk(R.tkr()); Energy2 uk(R.ukr()); Energy2 q1(R.q1r()); Energy2 q2(R.q2r()); Energy2 q1h(R.q1hatr()); Energy2 q2h(R.q2hatr()); bool up_type = abs(quark_->id())%2==0 ? true : false; double Qi = up_type ? 2./3. : -1./3.; double giL = up_type ? guL_/2. : gdL_/2.; double giR = up_type ? guR_/2. : gdR_/2.; double e2 = sqr(gW_)*sin2ThetaW_; double cos2ThetaW(1.-sin2ThetaW_); double ctt_i(gW_*gW_*gW_*gW_/16.); InvEnergy2 cts_i(gW_*gW_*e2/4./s2*(Qi+2.*eZ_*giL/e2*s2/(s2-mW2/cos2ThetaW))); InvEnergy4 css_i(e2*e2/s2/s2*(sqr(Qi+eZ_*(giL+giR)/e2*s2/(s2-mW2/cos2ThetaW)) +sqr( eZ_*(giL-giR)/e2*s2/(s2-mW2/cos2ThetaW))) ); ctt_i *= 8.*Fij2_/gW_/gW_; cts_i *= sqrt(8.*Fij2_/gW_/gW_); if(quark_->id()!=-antiquark_->id()) { cts_i = 0./GeV2; css_i = 0./GeV2/GeV2; } if(!up_type) { swap(q1,q1h); swap(q2,q2h); } double signf = up_type ? 1. : -1.; Energy2 t_u_Xup(0.*GeV2); Energy4 t_u_Yup(0.*GeV2*GeV2); Energy6 t_u_Zup(0.*GeV2*GeV2*GeV2); t_u_Xup = 32.*mW2*(tk*uk+3.*q2*uk+q2*s+q1*q2)/q1/q2/q2*tk + 32.*mW2*q1/q2/q2*uk - 64.*mW2*s/q2 - 32.*tk*(uk-q2)/q1/q2*tk + 64.*mW2*mW2*mW2/q1/q1/q2*tk - 16.*(2.*tk-2.*s-q2)/q2*uk + 16.*s*(2.*s+2.*q1+q2/2.)/q2 - 8.*(4.*tk+uk+9.*s+2.*q2+2.*q1)/mW2*tk - 16.*s*(2.*s+q1)/mW2 - 64.*mW2*mW2*(tk*uk+q2*tk+q1*uk-q2*s/2.)/q1/q2/q2 + 8.*s2*q1*(tk+s+q1)/mW2/mW2; swap(tk,uk); swap(q1,q2); t_u_Xup += 32.*mW2*(tk*uk+3.*q2*uk+q2*s+q1*q2)/q1/q2/q2*tk + 32.*mW2*q1/q2/q2*uk - 64.*mW2*s/q2 - 32.*tk*(uk-q2)/q1/q2*tk + 64.*mW2*mW2*mW2/q1/q1/q2*tk - 16.*(2.*tk-2.*s-q2)/q2*uk + 16.*s*(2.*s+2.*q1+q2/2.)/q2 - 8.*(4.*tk+uk+9.*s+2.*q2+2.*q1)/mW2*tk - 16.*s*(2.*s+q1)/mW2 - 64.*mW2*mW2*(tk*uk+q2*tk+q1*uk-q2*s/2.)/q1/q2/q2 + 8.*s2*q1*(tk+s+q1)/mW2/mW2; swap(tk,uk); swap(q1,q2); t_u_Yup = - 16.*tk*(uk*(uk+s+q1)+q2*(s-2.*q1))/q1/q2*tk - 32.*mW2*mW2*s/q2 - 32.*mW2*mW2*mW2/q1/q2*tk + 16.*(2.*q2*uk+s*s+q1*s+5.*q2*s+q1*q2+2.*q2*q2)/q2*tk - 16.*(q2*q2+s*s-q2*s)/q1*tk + 16.*s*(q1*s+3./2.*q2*s+q1*q2-q1*q1)/q2 + 16.*mW2*tk*(4.*uk+s+q1-2.*q2)/q1/q2*tk + 16.*mW2*(3.*s*uk+q1*uk-q1*s-3.*q2*s-q1*q1+q2*q2)/q1/q2*tk + 16.*mW2*s*(q2-4.*s+2.*q1)/q2 - 8.*s2*(4.*tk+uk+9.*s+4.*q1+2.*q2)/mW2*tk - 16.*s2*(2.*s*s+2.*q1*s+q1*q1)/mW2 - 32.*mW2*mW2*(tk+uk/2.+2.*s-q1)/q1/q2*tk + 8.*s2*s2*q1*(tk+s+q1)/mW2/mW2; swap(tk,uk); swap(q1,q2); t_u_Yup += - 16.*tk*(uk*(uk+s+q1)+q2*(s-2.*q1))/q1/q2*tk - 32.*mW2*mW2*s/q2 - 32.*mW2*mW2*mW2/q1/q2*tk + 16.*(2.*q2*uk+s*s+q1*s+5.*q2*s+q1*q2+2.*q2*q2)/q2*tk - 16.*(q2*q2+s*s-q2*s)/q1*tk + 16.*s*(q1*s+3./2.*q2*s+q1*q2-q1*q1)/q2 + 16.*mW2*tk*(4.*uk+s+q1-2.*q2)/q1/q2*tk + 16.*mW2*(3.*s*uk+q1*uk-q1*s-3.*q2*s-q1*q1+q2*q2)/q1/q2*tk + 16.*mW2*s*(q2-4.*s+2.*q1)/q2 - 8.*s2*(4.*tk+uk+9.*s+4.*q1+2.*q2)/mW2*tk - 16.*s2*(2.*s*s+2.*q1*s+q1*q1)/mW2 - 32.*mW2*mW2*(tk+uk/2.+2.*s-q1)/q1/q2*tk + 8.*s2*s2*q1*(tk+s+q1)/mW2/mW2; swap(tk,uk); swap(q1,q2); t_u_Zup = 8.*s2*(9.*tk+3.*uk+20.*s+10.*q1+4.*q2)*tk + 8.*s2*(17./2.*s*s+10.*q1*s+6.*q1*q1) - 4.*s2*s2*(4.*tk+uk+9.*s+6.*q1+2.*q2)/mW2*tk - 8.*s2*s2*(2.*s*s+3.*q1*s+2.*q1*q1)/mW2 - 16.*mW2*(2.*tk+5.*uk+7.*s+6.*q1+6.*q2)*tk - 16.*mW2*s*(s+6.*q1) + 4.*s2*s2*s2*q1*(tk+s+q1)/mW2/mW2 + 48.*mW2*mW2*s2; swap(tk,uk); swap(q1,q2); t_u_Zup += 8.*s2*(9.*tk+3.*uk+20.*s+10.*q1+4.*q2)*tk + 8.*s2*(17./2.*s*s+10.*q1*s+6.*q1*q1) - 4.*s2*s2*(4.*tk+uk+9.*s+6.*q1+2.*q2)/mW2*tk - 8.*s2*s2*(2.*s*s+3.*q1*s+2.*q1*q1)/mW2 - 16.*mW2*(2.*tk+5.*uk+7.*s+6.*q1+6.*q2)*tk - 16.*mW2*s*(s+6.*q1) + 4.*s2*s2*s2*q1*(tk+s+q1)/mW2/mW2 + 48.*mW2*mW2*s2; swap(tk,uk); swap(q1,q2); return -pi*alphaS_*CF_/NC_ * ( ctt_i*t_u_Xup - cts_i*t_u_Yup*signf + css_i*t_u_Zup ); } /***************************************************************************/ // The game here is to get this helicity amplitude squared to return all the // same values as t_u_M_R_qqb above, TIMES a further factor tk*uk! Energy2 MEPP2VVPowheg::t_u_M_R_qqb_hel_amp(realVVKinematics R) const { using namespace ThePEG::Helicity; // qqb_hel_amps_.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, // PDT::Spin1,PDT::Spin1, // PDT::Spin1)); double sum_hel_amps_sqr(0.); tcPDPtr p1data(quark_); tcPDPtr p2data(antiquark_); tcPDPtr k1data(mePartonData()[2]); tcPDPtr k2data(mePartonData()[3]); tcPDPtr kdata(getParticleData(ParticleID::g)); if(k1data->id()==-24&&k2data->id()==24) swap(k1data,k2data); SpinorWaveFunction qSpinor(R.p1r(),p1data,incoming); SpinorBarWaveFunction qbSpinor(R.p2r(),p2data,incoming); vector<SpinorWaveFunction> q; vector<SpinorBarWaveFunction> qb; for(unsigned int ix=0;ix<2;ix++) { qSpinor.reset(ix); qbSpinor.reset(ix); q.push_back(qSpinor); qb.push_back(qbSpinor); } VectorWaveFunction v1Polarization(R.k1r(),k1data,outgoing); VectorWaveFunction v2Polarization(R.k2r(),k2data,outgoing); vector<VectorWaveFunction> v1; vector<VectorWaveFunction> v2; for(unsigned int ix=0;ix<3;ix++) { v1Polarization.reset(ix); v2Polarization.reset(ix); v1.push_back(v1Polarization); v2.push_back(v2Polarization); } VectorWaveFunction gPolarization(R.kr(),kdata,outgoing); vector<VectorWaveFunction> g; for(unsigned int ix=0;ix<3;ix+=2) { gPolarization.reset(ix); g.push_back(gPolarization); } AbstractFFVVertexPtr ffg = FFGvertex_; AbstractFFVVertexPtr ffv1 = k1data->id()==23 ? FFZvertex_ : FFWvertex_; AbstractFFVVertexPtr ffv2 = k2data->id()==23 ? FFZvertex_ : FFWvertex_; // Collecting information for intermediate fermions vector<tcPDPtr> tc; if(abs(k1data->id())==24&&abs(k2data->id())==24) { if(abs(p1data->id())%2==0) for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(1+2*ix)); else for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(2+2*ix)); } else if(k1data->id()==23&&k2data->id()==23) tc.push_back(p1data); else if(abs(k1data->id())==24&&k2data->id()==23) tc.push_back(p2data); // Loop over helicities summing the relevant diagrams for(unsigned int p1hel=0;p1hel<2;++p1hel) { for(unsigned int p2hel=0;p2hel<2;++p2hel) { for(unsigned int khel=0;khel<2;++khel) { SpinorWaveFunction p1_k = ffg->evaluate(mu_UV2(),5,p1data,q[p1hel],g[khel]); SpinorBarWaveFunction p2_k = ffg->evaluate(mu_UV2(),5,p2data,qb[p2hel],g[khel]); for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { // If helicity is exactly conserved (massless quarks) skip if p1hel=p2hel // but if the production ME is required first fill it with (0.,0.). if((p1hel==p2hel)&&helicityConservation_) { // if(getMatrix) { // if(khel==0) // qqb_hel_amps_(p1hel,p2hel,k1hel,k2hel,0) = Complex(0.,0.); // else // qqb_hel_amps_(p1hel,p2hel,k1hel,k2hel,2) = Complex(0.,0.); // } continue; } vector<Complex> diagrams; // Get all t-channel diagram contributions tcPDPtr intermediate_t; for(unsigned int ix=0;ix<tc.size();ix++) { intermediate_t = (!(k1data->id()==24&&k2data->id()==-24)) ? p2data : tc[ix]; SpinorWaveFunction p1_v1 = ffv1->evaluate(scale(),5,intermediate_t,q[p1hel],v1[k1hel]); SpinorBarWaveFunction p2_v2 = ffv2->evaluate(scale(),5,intermediate_t,qb[p2hel],v2[k2hel]); // First calculate all the off-shell fermion currents // Now calculate the 6 t-channel diagrams // q+qb->g+v1+v2, q+qb->v1+g+v2, q+qb->v1+v2+g if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p1data->id())%2==1))) { diagrams.push_back(ffv1->evaluate(scale(),p1_k,p2_v2,v1[k1hel])); diagrams.push_back(ffg->evaluate(mu_UV2(),p1_v1,p2_v2,g[khel])); diagrams.push_back(ffv2->evaluate(scale(),p1_v1,p2_k,v2[k2hel])); } intermediate_t = (!(k1data->id()==24&&k2data->id()==-24)) ? p1data : tc[ix]; SpinorWaveFunction p1_v2 = ffv2->evaluate(scale(),5,intermediate_t,q[p1hel],v2[k2hel]); SpinorBarWaveFunction p2_v1 = ffv1->evaluate(scale(),5,intermediate_t,qb[p2hel],v1[k1hel]); // q+qb->g+v2+v1, q+qb->v2+g+v1, q+qb->v2+v1+g if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p1data->id())%2==0))) { diagrams.push_back(ffv2->evaluate(scale(),p1_k,p2_v1,v2[k2hel])); diagrams.push_back(ffg->evaluate(mu_UV2(),p1_v2,p2_v1,g[khel])); diagrams.push_back(ffv1->evaluate(scale(),p1_v2,p2_k,v1[k1hel])); } } // Note: choosing 3 as the second argument in WWWvertex_->evaluate() // sets option 3 in thepeg/Helicity/Vertex/VertexBase.cc , which // means the propagator does not contain a width factor (which is // good re. gauge invariance). // If W+Z / W-Z calculate the two V+jet-like s-channel diagrams if(abs(k1data->id())==24&&k2data->id()==23) { // The off-shell s-channel boson current VectorWaveFunction k1_k2 = WWWvertex_->evaluate(scale(),3,k1data->CC(),v2[k2hel],v1[k1hel]); // q+qb->g+v1*->g+v1+v2, q+qb->v1*+g->v1+v2+g diagrams.push_back(ffv1->evaluate(scale(),p1_k,qb[p2hel],k1_k2)); diagrams.push_back(ffv1->evaluate(scale(),q[p1hel],p2_k,k1_k2)); } // If W+W- calculate the four V+jet-like s-channel diagrams if((k1data->id()==24&&k2data->id()==-24)&&(p1data->id()==-p2data->id())) { // The off-shell s-channel boson current VectorWaveFunction k1_k2; // q+qb->g+Z0*->g+v1+v2,q+qb->Z0*+g->v1+v2+g, tcPDPtr Z0 = getParticleData(ParticleID::Z0); k1_k2 = WWWvertex_->evaluate(scale(),3,Z0,v2[k2hel],v1[k1hel]); diagrams.push_back(FFZvertex_->evaluate(scale(),p1_k,qb[p2hel],k1_k2)); diagrams.push_back(FFZvertex_->evaluate(scale(),q[p1hel],p2_k,k1_k2)); // q+qb->g+gamma*->g+v1+v2,q+qb->gamma*+g->v1+v2+g, tcPDPtr gamma = getParticleData(ParticleID::gamma); k1_k2 = WWWvertex_->evaluate(scale(),3,gamma,v2[k2hel],v1[k1hel]); diagrams.push_back(FFPvertex_->evaluate(scale(),p1_k,qb[p2hel],k1_k2)); diagrams.push_back(FFPvertex_->evaluate(scale(),q[p1hel],p2_k,k1_k2)); } // Add up all diagrams to get the total amplitude: Complex hel_amp(0.); for(unsigned int ix=0;ix<diagrams.size();ix++) hel_amp += diagrams[ix]; // If we need to fill the production ME we do it here: // if(getMatrix) { // if(khel==0) // qqb_hel_amps_(p1hel,p2hel,k1hel,k2hel,0) = hel_amp; // else // qqb_hel_amps_(p1hel,p2hel,k1hel,k2hel,2) = hel_amp; // } sum_hel_amps_sqr += norm(hel_amp); } } } } } // Fill up the remaining bits of the production ME, corresponding // to longitudinal gluon polarization, with (0.,0.). // if(getMatrix) { // for(unsigned int p1hel=0;p1hel<2;++p1hel) { // for(unsigned int p2hel=0;p2hel<2;++p2hel) { // for(unsigned int k1hel=0;k1hel<3;++k1hel) { // for(unsigned int k2hel=0;k2hel<3;++k2hel) { // qqb_hel_amps_(p1hel,p2hel,k1hel,k2hel,1) = Complex(0.,0.); // } // } // } // } // } // Spin and colour averaging factors = 1/4 * CF * 1/3 = 1/9 sum_hel_amps_sqr /= 9.; // Symmetry factor for identical Z bosons in the final state if(k1data->id()==23&&k2data->id()==23) sum_hel_amps_sqr /= 2.; return sum_hel_amps_sqr*R.tkr()*R.ukr()*UnitRemoval::InvE2; } /***************************************************************************/ // The game here is to get this helicity amplitude squared to return all the // same values as t_u_M_R_qg above, TIMES a further factor tk*uk! Energy2 MEPP2VVPowheg::t_u_M_R_qg_hel_amp(realVVKinematics R) const { using namespace ThePEG::Helicity; // qg_hel_amps_.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1, // PDT::Spin1,PDT::Spin1, // PDT::Spin1Half)); double sum_hel_amps_sqr(0.); tcPDPtr p1data(quark_); tcPDPtr p2data(getParticleData(ParticleID::g)); tcPDPtr k1data(mePartonData()[2]); tcPDPtr k2data(mePartonData()[3]); tcPDPtr kdata (antiquark_->CC()); if(k1data->id()==-24&&k2data->id()==24) swap(k1data,k2data); SpinorWaveFunction qinSpinor(R.p1r(),p1data,incoming); SpinorBarWaveFunction qoutSpinor(R.kr(),kdata,outgoing); vector<SpinorWaveFunction> qin; vector<SpinorBarWaveFunction> qout; for(unsigned int ix=0;ix<2;ix++) { qinSpinor.reset(ix); qoutSpinor.reset(ix); qin.push_back(qinSpinor); qout.push_back(qoutSpinor); } VectorWaveFunction v1Polarization(R.k1r(),k1data,outgoing); VectorWaveFunction v2Polarization(R.k2r(),k2data,outgoing); vector<VectorWaveFunction> v1; vector<VectorWaveFunction> v2; for(unsigned int ix=0;ix<3;ix++) { v1Polarization.reset(ix); v2Polarization.reset(ix); v1.push_back(v1Polarization); v2.push_back(v2Polarization); } VectorWaveFunction gPolarization(R.p2r(),p2data,incoming); vector<VectorWaveFunction> g; for(unsigned int ix=0;ix<3;ix+=2) { gPolarization.reset(ix); g.push_back(gPolarization); } AbstractFFVVertexPtr ffg = FFGvertex_; AbstractFFVVertexPtr ffv1 = k1data->id()==23 ? FFZvertex_ : FFWvertex_; AbstractFFVVertexPtr ffv2 = k2data->id()==23 ? FFZvertex_ : FFWvertex_; // Collecting information for intermediate fermions vector<tcPDPtr> tc; if(abs(k1data->id())==24&&abs(k2data->id())==24) { if(abs(p1data->id())%2==0) for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(1+2*ix)); else for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(2+2*ix)); } else if(k1data->id()==23&&k2data->id()==23) tc.push_back(p1data); else if(abs(k1data->id())==24&&k2data->id()==23) tc.push_back(kdata->CC()); // Loop over helicities summing the relevant diagrams for(unsigned int p1hel=0;p1hel<2;++p1hel) { for(unsigned int p2hel=0;p2hel<2;++p2hel) { for(unsigned int khel=0;khel<2;++khel) { SpinorWaveFunction p1_p2 = ffg->evaluate(mu_UV2(),5,p1data,qin[p1hel],g[p2hel]); SpinorBarWaveFunction p2_k = ffg->evaluate(mu_UV2(),5,kdata->CC(),qout[khel],g[p2hel]); for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { // If helicity is exactly conserved (massless quarks) skip if p1hel!=khel // but if the production ME is required first fill it with (0.,0.). if((p1hel!=khel)&&helicityConservation_) { // if(getMatrix) { // if(p2hel==0) // qg_hel_amps_(p1hel,0,k1hel,k2hel,khel) = Complex(0.,0.); // else // qg_hel_amps_(p1hel,2,k1hel,k2hel,khel) = Complex(0.,0.); // } continue; } vector<Complex> diagrams; // Get all t-channel diagram contributions tcPDPtr intermediate_q; for(unsigned int ix=0;ix<tc.size();ix++) { intermediate_q = (!(k1data->id()==24&&k2data->id()==-24)) ? antiquark_ : tc[ix]; SpinorWaveFunction p1_v1 = ffv1->evaluate(scale(),5,intermediate_q,qin[p1hel],v1[k1hel]); SpinorBarWaveFunction k_v2 = ffv2->evaluate(scale(),5,intermediate_q,qout[khel],v2[k2hel]); // First calculate all the off-shell fermion currents // Now calculate the 6 abelian diagrams // q+g->v1+v2+q with 2 t-channel propagators, 1 s- and 1 t-channel and 2 t-channel ones. if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p1data->id())%2==1))) { diagrams.push_back(ffv2->evaluate(scale(),p1_v1,p2_k,v2[k2hel])); diagrams.push_back(ffg->evaluate(mu_UV2(),p1_v1,k_v2,g[p2hel])); diagrams.push_back(ffv1->evaluate(scale(),p1_p2,k_v2,v1[k1hel])); } intermediate_q = (!(k1data->id()==24&&k2data->id()==-24)) ? p1data : tc[ix]; SpinorWaveFunction p1_v2 = ffv2->evaluate(scale(),5,intermediate_q,qin[p1hel],v2[k2hel]); SpinorBarWaveFunction k_v1 = ffv1->evaluate(scale(),5,intermediate_q,qout[khel],v1[k1hel]); // q+g->v2+v1+q, with 2 t-channel propagators, 1 s- and 1 t-channel and 2 t-channel ones. if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p1data->id())%2==0))) { diagrams.push_back(ffv1->evaluate(scale(),p1_v2,p2_k,v1[k1hel])); diagrams.push_back(ffg->evaluate(mu_UV2(),p1_v2,k_v1,g[p2hel])); diagrams.push_back(ffv2->evaluate(scale(),p1_p2,k_v1,v2[k2hel])); } } // If W+Z / W-Z calculate the two V+jet-like s-channel diagrams if(abs(k1data->id())==24&&k2data->id()==23) { // The off-shell s-channel boson current VectorWaveFunction k1_k2 = WWWvertex_->evaluate(scale(),3,k1data->CC(),v2[k2hel],v1[k1hel]); // q+qb->g+v1*->g+v1+v2, q+qb->v1*+g->v1+v2+g diagrams.push_back(ffv1->evaluate(scale(),p1_p2,qout[khel],k1_k2)); diagrams.push_back(ffv1->evaluate(scale(),qin[p1hel],p2_k,k1_k2)); } // If W+W- calculate the four V+jet-like s-channel diagrams if((k1data->id()==24&&k2data->id()==-24)&&(p1data->id()==kdata->id())) { // The off-shell s-channel boson current VectorWaveFunction k1_k2; // q+qb->g+Z0*->g+v1+v2,q+qb->Z0*+g->v1+v2+g, tcPDPtr Z0 = getParticleData(ParticleID::Z0); k1_k2 = WWWvertex_->evaluate(scale(),3,Z0,v2[k2hel],v1[k1hel]); diagrams.push_back(FFZvertex_->evaluate(scale(),p1_p2,qout[khel],k1_k2)); diagrams.push_back(FFZvertex_->evaluate(scale(),qin[p1hel],p2_k,k1_k2)); // q+qb->g+gamma*->g+v1+v2,q+qb->gamma*+g->v1+v2+g, tcPDPtr gamma = getParticleData(ParticleID::gamma); k1_k2 = WWWvertex_->evaluate(scale(),3,gamma,v2[k2hel],v1[k1hel]); diagrams.push_back(FFPvertex_->evaluate(scale(),p1_p2,qout[khel],k1_k2)); diagrams.push_back(FFPvertex_->evaluate(scale(),qin[p1hel],p2_k,k1_k2)); } // Add up all diagrams to get the total amplitude: Complex hel_amp(0.); for(unsigned int ix=0;ix<diagrams.size();ix++) hel_amp += diagrams[ix]; // If we need to fill the production ME we do it here: // if(getMatrix) { // if(p2hel==0) // qg_hel_amps_(p1hel,0,k1hel,k2hel,khel) = hel_amp; // else // qg_hel_amps_(p1hel,2,k1hel,k2hel,khel) = hel_amp; // } sum_hel_amps_sqr += norm(hel_amp); } } } } } // Fill up the remaining bits of the production ME, corresponding // to longitudinal gluon polarization, with (0.,0.). // if(getMatrix) { // for(unsigned int p1hel=0;p1hel<2;++p1hel) { // for(unsigned int k1hel=0;k1hel<3;++k1hel) { // for(unsigned int k2hel=0;k2hel<3;++k2hel) { // for(unsigned int khel=0;khel<2;++khel) { // qg_hel_amps_(p1hel,1,k1hel,k2hel,khel) = Complex(0.,0.); // } // } // } // } // } // Spin and colour averaging factors = 1/4 * TR * 1/3 = 1/24 sum_hel_amps_sqr /= 24.; // Symmetry factor for identical Z bosons in the final state if(k1data->id()==23&&k2data->id()==23) sum_hel_amps_sqr /= 2.; return sum_hel_amps_sqr*R.tkr()*R.ukr()*UnitRemoval::InvE2; } /***************************************************************************/ // The game here is to get this helicity amplitude squared to return all the // same values as t_u_M_R_gqb above, TIMES a further factor tk*uk! Energy2 MEPP2VVPowheg::t_u_M_R_gqb_hel_amp(realVVKinematics R) const { using namespace ThePEG::Helicity; // gqb_hel_amps_.reset(ProductionMatrixElement(PDT::Spin1,PDT::Spin1Half, // PDT::Spin1,PDT::Spin1, // PDT::Spin1Half)); double sum_hel_amps_sqr(0.); tcPDPtr p1data(getParticleData(ParticleID::g)); tcPDPtr p2data(antiquark_); tcPDPtr k1data(mePartonData()[2]); tcPDPtr k2data(mePartonData()[3]); tcPDPtr kdata (quark_->CC()); if(k1data->id()==-24&&k2data->id()==24) swap(k1data,k2data); SpinorBarWaveFunction qbinSpinor(R.p2r(),p2data,incoming); SpinorWaveFunction qboutSpinor(R.kr(),kdata,outgoing); vector<SpinorBarWaveFunction> qbin; vector<SpinorWaveFunction> qbout; for(unsigned int ix=0;ix<2;ix++) { qbinSpinor.reset(ix); qboutSpinor.reset(ix); qbin.push_back(qbinSpinor); qbout.push_back(qboutSpinor); } VectorWaveFunction v1Polarization(R.k1r(),k1data,outgoing); VectorWaveFunction v2Polarization(R.k2r(),k2data,outgoing); vector<VectorWaveFunction> v1; vector<VectorWaveFunction> v2; for(unsigned int ix=0;ix<3;ix++) { v1Polarization.reset(ix); v2Polarization.reset(ix); v1.push_back(v1Polarization); v2.push_back(v2Polarization); } VectorWaveFunction gPolarization(R.p1r(),p1data,incoming); vector<VectorWaveFunction> g; for(unsigned int ix=0;ix<3;ix+=2) { gPolarization.reset(ix); g.push_back(gPolarization); } AbstractFFVVertexPtr ffg = FFGvertex_; AbstractFFVVertexPtr ffv1 = k1data->id()==23 ? FFZvertex_ : FFWvertex_; AbstractFFVVertexPtr ffv2 = k2data->id()==23 ? FFZvertex_ : FFWvertex_; // Collecting information for intermediate fermions vector<tcPDPtr> tc; if(abs(k1data->id())==24&&abs(k2data->id())==24) { if(abs(p2data->id())%2==0) for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(1+2*ix)); else for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(2+2*ix)); } else if(k1data->id()==23&&k2data->id()==23) tc.push_back(p2data); else if(abs(k1data->id())==24&&k2data->id()==23) tc.push_back(kdata->CC()); // Loop over helicities summing the relevant diagrams for(unsigned int p1hel=0;p1hel<2;++p1hel) { for(unsigned int p2hel=0;p2hel<2;++p2hel) { for(unsigned int khel=0;khel<2;++khel) { SpinorBarWaveFunction p1_p2 = ffg->evaluate(mu_UV2(),5,p2data,qbin[p2hel],g[p1hel]); SpinorWaveFunction p1_k = ffg->evaluate(mu_UV2(),5,kdata->CC(),qbout[khel],g[p1hel]); for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { // If helicity is exactly conserved (massless quarks) skip if p2hel!=khel // but if the production ME is required first fill it with (0.,0.). if((p2hel!=khel)&&helicityConservation_) { // if(getMatrix) { // if(p1hel==0) // gqb_hel_amps_(0,p2hel,k1hel,k2hel,khel) = Complex(0.,0.); // else // gqb_hel_amps_(2,p2hel,k1hel,k2hel,khel) = Complex(0.,0.); // } continue; } vector<Complex> diagrams; // Get all t-channel diagram contributions tcPDPtr intermediate_q; for(unsigned int ix=0;ix<tc.size();ix++) { intermediate_q = (!(k1data->id()==24&&k2data->id()==-24)) ? quark_ : tc[ix]; SpinorBarWaveFunction p2_v1 = ffv1->evaluate(scale(),5,intermediate_q,qbin[p2hel],v1[k1hel]); SpinorWaveFunction k_v2 = ffv2->evaluate(scale(),5,intermediate_q,qbout[khel],v2[k2hel]); // First calculate all the off-shell fermion currents // Now calculate the 6 abelian diagrams q+g->v1+v2+q // with 2 t-channel propagators, 1 s- and 1 t-channel // and 2 t-channel ones. if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p2data->id())%2==0))) { diagrams.push_back(ffv2->evaluate(scale(),p1_k,p2_v1,v2[k2hel])); diagrams.push_back(ffg->evaluate(mu_UV2(),k_v2,p2_v1,g[p1hel])); diagrams.push_back(ffv1->evaluate(scale(),k_v2,p1_p2,v1[k1hel])); } intermediate_q = (!(k1data->id()==24&&k2data->id()==-24)) ? p2data : tc[ix]; SpinorBarWaveFunction p2_v2 = ffv2->evaluate(scale(),5,intermediate_q,qbin[p2hel],v2[k2hel]); SpinorWaveFunction k_v1 = ffv1->evaluate(scale(),5,intermediate_q,qbout[khel],v1[k1hel]); // q+g->v2+v1+q, with 2 t-channel propagators, 1 s- and 1 t-channel and 2 t-channel ones. if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p2data->id())%2==1))) { diagrams.push_back(ffv1->evaluate(scale(),p1_k,p2_v2,v1[k1hel])); diagrams.push_back(ffg->evaluate(mu_UV2(),k_v1,p2_v2,g[p1hel])); diagrams.push_back(ffv2->evaluate(scale(),k_v1,p1_p2,v2[k2hel])); } } // If W+Z / W-Z calculate the two V+jet-like s-channel diagrams if(abs(k1data->id())==24&&k2data->id()==23) { // The off-shell s-channel boson current VectorWaveFunction k1_k2 = WWWvertex_->evaluate(scale(),3,k1data->CC(),v2[k2hel],v1[k1hel]); // q+qb->g+v1*->g+v1+v2, q+qb->v1*+g->v1+v2+g diagrams.push_back(ffv1->evaluate(scale(),qbout[khel],p1_p2,k1_k2)); diagrams.push_back(ffv1->evaluate(scale(),p1_k,qbin[p2hel],k1_k2)); } // If W+W- calculate the four V+jet-like s-channel diagrams if((k1data->id()==24&&k2data->id()==-24)&&(p2data->id()==kdata->id())) { // The off-shell s-channel boson current VectorWaveFunction k1_k2; // q+qb->g+Z0*->g+v1+v2,q+qb->Z0*+g->v1+v2+g, tcPDPtr Z0 = getParticleData(ParticleID::Z0); k1_k2 = WWWvertex_->evaluate(scale(),3,Z0,v2[k2hel],v1[k1hel]); diagrams.push_back(FFZvertex_->evaluate(scale(),qbout[khel],p1_p2,k1_k2)); diagrams.push_back(FFZvertex_->evaluate(scale(),p1_k,qbin[p2hel],k1_k2)); // q+qb->g+gamma*->g+v1+v2,q+qb->gamma*+g->v1+v2+g, tcPDPtr gamma = getParticleData(ParticleID::gamma); k1_k2 = WWWvertex_->evaluate(scale(),3,gamma,v2[k2hel],v1[k1hel]); diagrams.push_back(FFPvertex_->evaluate(scale(),qbout[khel],p1_p2,k1_k2)); diagrams.push_back(FFPvertex_->evaluate(scale(),p1_k,qbin[p2hel],k1_k2)); } // Add up all diagrams to get the total amplitude: Complex hel_amp(0.); for(unsigned int ix=0;ix<diagrams.size();ix++) hel_amp += diagrams[ix]; // If we need to fill the production ME we do it here: // if(getMatrix) { // if(p1hel==0) // gqb_hel_amps_(0,p2hel,k1hel,k2hel,khel) = hel_amp; // else // gqb_hel_amps_(2,p2hel,k1hel,k2hel,khel) = hel_amp; // } sum_hel_amps_sqr += norm(hel_amp); } } } } } // Fill up the remaining bits of the production ME, corresponding // to longitudinal gluon polarization, with (0.,0.). // if(getMatrix) { // for(unsigned int p2hel=0;p2hel<2;++p2hel) { // for(unsigned int k1hel=0;k1hel<3;++k1hel) { // for(unsigned int k2hel=0;k2hel<3;++k2hel) { // for(unsigned int khel=0;khel<2;++khel) { // gqb_hel_amps_(1,p2hel,k1hel,k2hel,khel) = Complex(0.,0.); // } // } // } // } // } // Spin and colour averaging factors = 1/4 * TR * 1/3 = 1/24 sum_hel_amps_sqr /= 24.; // Symmetry factor for identical Z bosons in the final state if(k1data->id()==23&&k2data->id()==23) sum_hel_amps_sqr /= 2.; return sum_hel_amps_sqr*R.tkr()*R.ukr()*UnitRemoval::InvE2; } double MEPP2VVPowheg::lo_me() const { using namespace ThePEG::Helicity; double sum_hel_amps_sqr(0.); tcPDPtr p1data(quark_); tcPDPtr p2data(antiquark_); tcPDPtr k1data(mePartonData()[2]); tcPDPtr k2data(mePartonData()[3]); if(k1data->id()==-24&&k2data->id()==24) swap(k1data,k2data); // Should never actually occur. SpinorWaveFunction qSpinor(B_.p1b(),p1data,incoming); SpinorBarWaveFunction qbSpinor(B_.p2b(),p2data,incoming); vector<SpinorWaveFunction> q; vector<SpinorBarWaveFunction> qb; for(unsigned int ix=0;ix<2;ix++) { qSpinor.reset(ix); qbSpinor.reset(ix); q.push_back(qSpinor); qb.push_back(qbSpinor); } VectorWaveFunction v1Polarization(B_.k1b(),k1data,outgoing); VectorWaveFunction v2Polarization(B_.k2b(),k2data,outgoing); vector<VectorWaveFunction> v1; vector<VectorWaveFunction> v2; for(unsigned int ix=0;ix<3;ix++) { v1Polarization.reset(ix); v2Polarization.reset(ix); v1.push_back(v1Polarization); v2.push_back(v2Polarization); } AbstractFFVVertexPtr ffv1 = k1data->id()==23 ? FFZvertex_ : FFWvertex_; AbstractFFVVertexPtr ffv2 = k2data->id()==23 ? FFZvertex_ : FFWvertex_; // Collecting information for intermediate fermions vector<tcPDPtr> tc; if(abs(k1data->id())==24&&abs(k2data->id())==24) { if(abs(p1data->id())%2==0) for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(1+2*ix)); else for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(2+2*ix)); } else if(k1data->id()==23&&k2data->id()==23) tc.push_back(p1data); else if(abs(k1data->id())==24&&k2data->id()==23) tc.push_back(p2data); // Loop over helicities summing the relevant diagrams for(unsigned int p1hel=0;p1hel<2;++p1hel) { for(unsigned int p2hel=0;p2hel<2;++p2hel) { if((p1hel==p2hel)&&helicityConservation_) continue; for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { vector<Complex> diagrams; // Get all t-channel diagram contributions tcPDPtr intermediate_t; for(unsigned int ix=0;ix<tc.size();ix++) { intermediate_t = (!(k1data->id()==24&&k2data->id()==-24)) ? p2data : tc[ix]; SpinorWaveFunction p1_v1 = ffv1->evaluate(scale(),5,intermediate_t,q[p1hel],v1[k1hel]); // First calculate all the off-shell fermion currents // Now calculate the 6 t-channel diagrams // q+qb->v1+v2 if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p1data->id())%2==1))) diagrams.push_back(ffv2->evaluate(scale(),p1_v1,qb[p2hel],v2[k2hel])); intermediate_t = (!(k1data->id()==24&&k2data->id()==-24)) ? p1data : tc[ix]; SpinorWaveFunction p1_v2 = ffv2->evaluate(scale(),5,intermediate_t,q[p1hel],v2[k2hel]); // q+qb->v2+v1 if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p1data->id())%2==0))) diagrams.push_back(ffv1->evaluate(scale(),p1_v2,qb[p2hel],v1[k1hel])); } // If W+Z / W-Z calculate the two V+jet-like s-channel diagrams if(abs(k1data->id())==24&&k2data->id()==23) { // The off-shell s-channel boson current VectorWaveFunction k1_k2 = WWWvertex_->evaluate(scale(),3,k1data->CC(),v2[k2hel],v1[k1hel]); // q+qb->v1*->v1+v2 diagrams.push_back(ffv1->evaluate(scale(),q[p1hel],qb[p2hel],k1_k2)); } // If W+W- calculate the four V+jet-like s-channel diagrams if((k1data->id()==24&&k2data->id()==-24)&&(p1data->id()==-p2data->id())) { // The off-shell s-channel boson current VectorWaveFunction k1_k2; // q+qb->Z0*->v1+v2 tcPDPtr Z0 = getParticleData(ParticleID::Z0); k1_k2 = WWWvertex_->evaluate(scale(),3,Z0,v2[k2hel],v1[k1hel]); diagrams.push_back(FFZvertex_->evaluate(scale(),q[p1hel],qb[p2hel],k1_k2)); // q+qb->gamma*->v1+v2 tcPDPtr gamma = getParticleData(ParticleID::gamma); k1_k2 = WWWvertex_->evaluate(scale(),3,gamma,v2[k2hel],v1[k1hel]); diagrams.push_back(FFPvertex_->evaluate(scale(),q[p1hel],qb[p2hel],k1_k2)); } // Add up all diagrams to get the total amplitude: Complex hel_amp(0.); for(unsigned int ix=0;ix<diagrams.size();ix++) hel_amp += diagrams[ix]; // If we need to fill the production ME we do it here: // if(getMatrix) lo_hel_amps_(p1hel,p2hel,k1hel,k2hel) = hel_amp; sum_hel_amps_sqr += norm(hel_amp); } } } } // Spin and colour averaging factors = 1/4 * 1/3 = 1/12 sum_hel_amps_sqr /= 12.; // Symmetry factor for identical Z bosons in the final state if(k1data->id()==23&&k2data->id()==23) sum_hel_amps_sqr /= 2.; return sum_hel_amps_sqr; } HardTreePtr MEPP2VVPowheg::generateHardest(ShowerTreePtr tree) { // Now we want to set these data vectors according to the particles we've // received from the current 2->2 hard collision: vector<ShowerProgenitorPtr> particlesToShower; for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit ) particlesToShower.push_back(cit->first); qProgenitor_ = particlesToShower[0]; qbProgenitor_ = particlesToShower[1]; showerQuark_ = particlesToShower[0]->progenitor(); showerAntiquark_ = particlesToShower[1]->progenitor(); qHadron_ = particlesToShower[0]->beam(); qbHadron_ = particlesToShower[1]->beam(); if(showerQuark_->id()<0) { swap(qProgenitor_,qbProgenitor_); swap(showerQuark_,showerAntiquark_); swap(qHadron_,qbHadron_); } // In _our_ calculation we basically define the +z axis as being given // by the direction of the incoming quark for q+qb & q+g processes and // the incoming gluon for g+qbar processes. So now we might need to flip // the beams, bjorken x values, colliding partons accordingly: flipped_ = showerQuark_->momentum().z()<ZERO ? true : false; assert(tree->outgoingLines().size()==2); for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit ) particlesToShower.push_back(cit->first); V1_ = particlesToShower[2]->progenitor(); V2_ = particlesToShower[3]->progenitor(); gluon_ = getParticleData(ParticleID::g)->produceParticle(); // Abort the run if V1_ and V2_ are not just pointers to different gauge bosons if(!V1_||!V2_) throw Exception() << "MEPP2VVPowheg::generateHardest()\n" << "one or both of the gauge boson pointers is null." << Exception::abortnow; if(!(abs(V1_->id())==24||V1_->id()==23)||!(abs(V2_->id())==24||V2_->id()==23)) throw Exception() << "MEPP2VVPowheg::generateHardest()\nmisidentified gauge bosons" << "V1_ = " << V1_->PDGName() << "\n" << "V2_ = " << V2_->PDGName() << "\n" << Exception::abortnow; // Order the gauge bosons in the same way as in the NLO calculation // (the same way as in the NLO matrix element): // W+(->e+,nu_e) W-(->e-,nu_ebar) (MCFM: 61 [nproc]) if(V1_->id()==-24&&V2_->id()== 24) swap(V1_,V2_); // W+/-(mu+,nu_mu / mu-,nu_mubar) Z(nu_e,nu_ebar) (MCFM: 72+77 [nproc]) if(V1_->id()== 23&&abs(V2_->id())== 24) swap(V1_,V2_); // *** N.B. *** // We should not have to do a swap in the ZZ case, even if the different // (off-shell) masses of the Z's are taken into account by generating // the Born variables using the WZ LO/NLO matrix element(s), because // those transformed matrix elements are, according to mathematica, // symmetric in the momenta (and therefore also the masses) of the 2 Z's. // If the vector bosons have decayed already then we may want to // to get the children_ (and any associated photons) to correct // spin correlations: StepPtr theSubProcess = generator()->eventHandler()->currentStep(); tPVector outgoing = theSubProcess->getFinalState(); children_.clear(); photons_.clear(); if(outgoing.size()>=4) { for(unsigned int ix=0;ix<outgoing.size();ix++) if(outgoing[ix]->parents()[0]&& (abs(outgoing[ix]->parents()[0]->id())==24|| abs(outgoing[ix]->parents()[0]->id())==23)) { if(outgoing[ix]->id()!=ParticleID::gamma) children_.push_back(outgoing[ix]); else photons_.push_back(outgoing[ix]); } assert(children_.size()==4); if(children_[0]->parents()[0]!=children_[1]->parents()[0]) swap(children_[0],children_[2]); if(children_[0]->parents()[0]!=children_[1]->parents()[0]) swap(children_[0],children_[3]); if(children_[0]->parents()[0]->id()!=V1_->id()) { swap(children_[0],children_[2]); swap(children_[1],children_[3]); } if(children_[0]->id()<0) swap(children_[0],children_[1]); if(children_[2]->id()<0) swap(children_[2],children_[3]); assert(children_[0]->parents()[0]==children_[1]->parents()[0]); assert(children_[2]->parents()[0]==children_[3]->parents()[0]); } // Now we want to construct a bornVVKinematics object. The // constructor for that needs all 4 momenta, q, qbar, V1_, V2_ // in that order, as well as the Bjorken xq and xqbar. // Get the momenta first: vector<Lorentz5Momentum> theBornMomenta; theBornMomenta.push_back(showerQuark_->momentum()); theBornMomenta.push_back(showerAntiquark_->momentum()); theBornMomenta.push_back(V1_->momentum()); theBornMomenta.push_back(V2_->momentum()); // N.B. if the showerQuark_ travels in the -z direction the born kinematics object // will detect this and rotate all particles by pi about the y axis! // Leading order momentum fractions: tcPPtr qHadron = generator()->currentEvent()->primaryCollision()->incoming().first; tcPPtr qbHadron = generator()->currentEvent()->primaryCollision()->incoming().second; assert(qHadron->children().size()>0&&qbHadron->children().size()>0); if(qHadron->children()[0]->id()<0) swap(qHadron,qbHadron); // quark and antiquark momentum fractions respectively double xa = showerQuark_ ->momentum().z()/qHadron ->momentum().z(); double xb = showerAntiquark_->momentum().z()/qbHadron->momentum().z(); // Create the object containing all 2->2 __kinematic__ information: B_ = bornVVKinematics(theBornMomenta,xa,xb); // lo_me_ is the colour & spin averaged n-body matrix element squared: lo_me_ = lo_me(true); // Attempt to generate some radiative variables and their kinematics: vector<Lorentz5Momentum> theRealMomenta; channel_ = 999; if(!getEvent(theRealMomenta,channel_)) return HardTreePtr(); // Set the maximum pT for subsequent emissions: pT_ < min_pT_ ? qProgenitor_ ->maximumpT(min_pT_) : qProgenitor_ ->maximumpT(pT_); pT_ < min_pT_ ? qbProgenitor_->maximumpT(min_pT_) : qbProgenitor_->maximumpT(pT_); // Determine whether the quark or antiquark emitted: fermionNumberOfMother_=0; if((channel_==0&&theRealMomenta[0].z()/theRealMomenta[4].z()>=ZERO)|| channel_==2) fermionNumberOfMother_ = 1; else if((channel_==0&&theRealMomenta[0].z()/theRealMomenta[4].z()<ZERO)|| channel_==1) fermionNumberOfMother_ = -1; assert(fermionNumberOfMother_!=0); // If the quark in the original tree was travelling in the -z direction // then we need to unflip the event (flips are automatically carried out // when the original quark travels in the in -z direction when the // bornVVKinematics object is created): if(flipped_) for(unsigned int ix=0;ix<theRealMomenta.size();ix++) theRealMomenta[ix].rotateY(-Constants::pi); // Randomly rotate the event about the beam axis: double randomPhi(UseRandom::rnd()*2.*Constants::pi); for(unsigned int ix=0;ix<theRealMomenta.size();ix++) theRealMomenta[ix].rotateZ(randomPhi); // Warn if momentum conservation is not obeyed: Lorentz5Momentum inMinusOut(theRealMomenta[0]+theRealMomenta[1] -theRealMomenta[2]-theRealMomenta[3] -theRealMomenta[4]); if(inMinusOut.t()>0.1*GeV||inMinusOut.x()>0.1*GeV|| inMinusOut.y()>0.1*GeV||inMinusOut.z()>0.1*GeV) cout << "MEPP2VVPowheg::generateHardest\n" << "Momentum imbalance in V1 V2 rest frame\n" << "P_in minus P_out = " << inMinusOut/GeV << endl; // From the radiative kinematics we now have to form ShowerParticle objects: ShowerParticlePtr p1; ShowerParticlePtr p2; ShowerParticlePtr k1(new_ptr(ShowerParticle(V1_->dataPtr(),true ))); ShowerParticlePtr k2(new_ptr(ShowerParticle(V2_->dataPtr(),true ))); ShowerParticlePtr k ; // q+qbar -> V1+V2+g if(channel_==0) { p1 = new_ptr(ShowerParticle(showerQuark_->dataPtr() ,false)); p2 = new_ptr(ShowerParticle(showerAntiquark_->dataPtr() ,false)); k = new_ptr(ShowerParticle(gluon_->dataPtr() ,true )); } // q+g -> V1+V2+q else if(channel_==1) { p1 = new_ptr(ShowerParticle(showerQuark_->dataPtr() ,false)); p2 = new_ptr(ShowerParticle(gluon_->dataPtr() ,false)); k = new_ptr(ShowerParticle(showerAntiquark_->dataPtr()->CC() ,true )); } // g+qbar -> V1+V2+qbar else { p1 = new_ptr(ShowerParticle(gluon_->dataPtr() ,false)); p2 = new_ptr(ShowerParticle(showerAntiquark_->dataPtr() ,false)); k = new_ptr(ShowerParticle(showerQuark_->dataPtr()->CC() ,true )); } // Set the momenta of the ShowerParticlePtr's: p1->set5Momentum(theRealMomenta[0]); p2->set5Momentum(theRealMomenta[1]); k1->set5Momentum(theRealMomenta[2]); k2->set5Momentum(theRealMomenta[3]); k ->set5Momentum(theRealMomenta[4]); // Then construct another set of ShowerPointers that will be // useful in creating the hardTree, using this information: ShowerParticlePtr mother; ShowerParticlePtr spacelikeSon; ShowerParticlePtr timelikeSon; ShowerParticlePtr spectator; if(fermionNumberOfMother_==1) { mother = new_ptr(ShowerParticle(showerQuark_->dataPtr() ,false)); spacelikeSon = p1; timelikeSon = k; spectator = p2; } else if(fermionNumberOfMother_==-1) { mother = new_ptr(ShowerParticle(showerAntiquark_->dataPtr(),false)); spacelikeSon = p2; timelikeSon = k; spectator = p1; } else { throw Exception() << "MEPP2VVPowheg::generateHardest()" << "Failed to determine whether the q or qbar branched" << Exception::runerror; } Lorentz5Momentum motherMomentum(spacelikeSon->momentum()-timelikeSon->momentum()); motherMomentum.rescaleMass(); mother->set5Momentum(motherMomentum); // Create HardBranchingPtrs for the particles HardBranchingPtr spacelikeSonBranching = new_ptr(HardBranching(spacelikeSon,SudakovPtr(),HardBranchingPtr() ,HardBranching::Incoming )); HardBranchingPtr timelikeSonBranching = new_ptr(HardBranching(timelikeSon ,SudakovPtr(),spacelikeSonBranching,HardBranching::Outgoing)); HardBranchingPtr spectatorBranching = new_ptr(HardBranching(spectator ,SudakovPtr(),HardBranchingPtr() ,HardBranching::Incoming )); HardBranchingPtr motherBranching = new_ptr(HardBranching(mother ,SudakovPtr(),spacelikeSonBranching,HardBranching::Incoming )); HardBranchingPtr V1_Branching = new_ptr(HardBranching(k1 ,SudakovPtr(),HardBranchingPtr() ,HardBranching::Outgoing)); HardBranchingPtr V2_Branching = new_ptr(HardBranching(k2 ,SudakovPtr(),HardBranchingPtr() ,HardBranching::Outgoing)); // N.B. The DrellYanHardGenerator first adds the timelikeSonBranching as a child // child of the spacelikeSonBranching before adding the motherBranching. We do // it the other way round in accordance with PowhegEvolver::checkShowerMomentum. spacelikeSonBranching->addChild(motherBranching); spacelikeSonBranching->addChild(timelikeSonBranching); motherBranching->colourPartner(spectatorBranching); spectatorBranching->colourPartner(motherBranching); vector<HardBranchingPtr> spacelikeBranchings,hardBranchings; spacelikeBranchings.push_back(fermionNumberOfMother_ == 1 ? spacelikeSonBranching : spectatorBranching); spacelikeBranchings.push_back(fermionNumberOfMother_ == -1 ? spacelikeSonBranching : spectatorBranching); hardBranchings.push_back(motherBranching); hardBranchings.push_back(spectatorBranching); hardBranchings.push_back(V1_Branching); hardBranchings.push_back(V2_Branching); // Recalculate the hard vertex for this event: // For spin correlations, if an emission occurs go calculate the relevant // combination of amplitudes for the ProductionMatrixElement. if(realMESpinCorrelations_) { // Here we reset the realVVKinematics n+1 momenta to be those // of the lab frame in order to calculate the spin correlations. // Note that these momenta are not used for anything else after // this. R_.p1r(theRealMomenta[0]); R_.p2r(theRealMomenta[1]); R_.k1r(theRealMomenta[2]); R_.k2r(theRealMomenta[3]); R_.kr (theRealMomenta[4]); if(channel_==0) t_u_M_R_qqb_hel_amp(R_,true); else if(channel_==1) t_u_M_R_qg_hel_amp (R_,true); else if(channel_==2) t_u_M_R_gqb_hel_amp(R_,true); recalculateVertex(); } // Construct the HardTree object needed to perform the showers HardTreePtr hardTree=new_ptr(HardTree(hardBranchings,spacelikeBranchings, ShowerInteraction::QCD)); if(hardTree->branchings().size()!=4) throw Exception() << "MEPP2VVPowheg::generateHardest()\n" << "The hardTree has " << hardTree->branchings().size() << "branchings\n" << hardTree << "\n" << Exception::runerror; if((motherBranching->parent()!=spacelikeSonBranching)&& spacelikeSonBranching->parent()!=HardBranchingPtr()&& spectatorBranching->parent()!=HardBranchingPtr()) throw Exception() << "MEPP2VVPowheg::generateHardest()\n" << "The parent-child relationships are not valid.\n" << "motherBranching->parent() = " << motherBranching->parent() << "\n" << "spacelikeSonBranching = " << spacelikeSonBranching << "\n" << "spectatorBranching->parent() = " << spectatorBranching->parent() << "\n" << "spacelikeSonBranching->parent() = " << spacelikeSonBranching->parent() << "\n" << Exception::runerror; if(fermionNumberOfMother_== 1) { hardTree->connect(showerQuark_ ,motherBranching ); hardTree->connect(showerAntiquark_,spectatorBranching); spacelikeSonBranching->beam(qProgenitor_ ->original()->parents()[0]); motherBranching ->beam(qProgenitor_ ->original()->parents()[0]); spectatorBranching ->beam(qbProgenitor_->original()->parents()[0]); } else if(fermionNumberOfMother_==-1) { hardTree->connect(showerAntiquark_,motherBranching ); hardTree->connect(showerQuark_ ,spectatorBranching); spacelikeSonBranching->beam(qbProgenitor_->original()->parents()[0]); motherBranching ->beam(qbProgenitor_->original()->parents()[0]); spectatorBranching ->beam(qProgenitor_ ->original()->parents()[0]); } // hardTree->connect(V1_ ,V1_Branching ); // hardTree->connect(V2_ ,V2_Branching ); // This if {...} else if {...} puts the mother and spectator on the same colour // line. If we don't do this, then when reconstructFinalStateShower calls // setInitialEvolutionScales it says it failed to set the colour partners, so // it can't set the scale and it just forgets the emission / event. This seems // like an unintrusive work-around until reconstructFinalStateShower is sorted. ColinePtr bornColourLine=new_ptr(ColourLine()); if(fermionNumberOfMother_== 1) { bornColourLine->addColoured(mother); bornColourLine->addAntiColoured(spectator); } else if(fermionNumberOfMother_==-1) { bornColourLine->addAntiColoured(mother); bornColourLine->addColoured(spectator); } // this is a pain but we need the boost, which we don't have yet here!! vector<Lorentz5Momentum> pin(2); vector<Lorentz5Momentum> pq (2); vector<HardBranchingPtr>::iterator cit; pin[0] = motherBranching ->branchingParticle()->momentum(); pin[1] = spectatorBranching->branchingParticle()->momentum(); Energy etemp = motherBranching ->beam()->momentum().z(); pq[0] = Lorentz5Momentum(ZERO, ZERO,etemp, abs(etemp)); etemp = spectatorBranching->beam()->momentum().z(); pq[1] = Lorentz5Momentum(ZERO, ZERO,etemp, abs(etemp)); // decompose the momenta double alpha[2],beta[2]; Energy2 p12=pq[0]*pq[1]; Lorentz5Momentum pt[2]; for(unsigned int ix=0;ix<2;++ix) { alpha[ix] = pin[ix]*pq[1]/p12; beta [ix] = pin[ix]*pq[0]/p12; pt[ix] = pin[ix]-alpha[ix]*pq[0]-beta[ix]*pq[1]; } // parton level centre-of-mass Lorentz5Momentum pcm=pin[0]+pin[1]; pcm.rescaleMass(); double rap=pcm.rapidity(); // hadron level cmf Energy2 s = (pq[0] +pq[1] ).m2(); // calculate the x values double x[2]={sqrt(pcm.mass2()/s*exp(2.*rap)),pcm.mass2()/s/x[0]}; if(pq[0].z()<ZERO) swap(x[0],x[1]); Lorentz5Momentum pnew = x[0]*pq[0]+x[1]*pq[1]; LorentzRotation toRest = LorentzRotation(-pcm .boostVector()); LorentzRotation fromRest = LorentzRotation( pnew.boostVector()); Lorentz5Momentum pv[2]= {fromRest*toRest*V1_Branching->branchingParticle()->momentum(), fromRest*toRest*V2_Branching->branchingParticle()->momentum()}; LorentzRotation R(-(mother->momentum()+spectator ->momentum()).boostVector()); R.boost((showerQuark_->momentum()+showerAntiquark_->momentum()).boostVector()); for(map<tShowerTreePtr,pair<tShowerProgenitorPtr,tShowerParticlePtr> >::const_iterator tit = tree->treelinks().begin(); tit != tree->treelinks().end();++tit) { ShowerTreePtr decayTree = tit->first; map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit = decayTree->incomingLines().begin(); // reset the momentum of the decay particle Lorentz5Momentum oldMomentum = cit->first->progenitor()->momentum(); Lorentz5Momentum newMomentum = tit->second.second == V1_ ? pv[0] : pv[1]; map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt; // reset the momenta of the decay products, LorentzRotation boostToORF(newMomentum.findBoostToCM(), newMomentum.e()/newMomentum.mass()); tPPtr children[2]; if(children_[0]->parents()[0]==cit->first->original()) { children[0] = children_[0]; children[1] = children_[1]; } else { children[0] = children_[2]; children[1] = children_[3]; } if(UseRandom::rndbool()) swap(children[0],children[1]); double originalTheta0 = (boostToORF*R*children[0]->momentum()).theta(); double originalPhi0 = (boostToORF*R*children[0]->momentum()).phi(); boostToORF.rotateZ(-originalPhi0); boostToORF.rotateY(-originalTheta0); double originalPhi1 = (boostToORF*children[1]->momentum()).phi(); LorentzRotation boost(oldMomentum.findBoostToCM(),oldMomentum.e()/oldMomentum.mass()); tPPtr newChildren[2]; for(cjt=decayTree->outgoingLines().begin(); cjt!=decayTree->outgoingLines().end();++cjt) { if(cjt->first->progenitor()->id()==children[0]->id()) newChildren[0] = cjt->first->progenitor(); else if(cjt->first->progenitor()->id()==children[1]->id()) newChildren[1] = cjt->first->progenitor(); } boost.rotateZ(-(boost*newChildren[0]->momentum()).phi()); boost.rotateY(-(boost*newChildren[0]->momentum()).theta()); boost.rotateZ(-(boost*newChildren[1]->momentum()).phi()); boost.rotateZ( originalPhi1); boost.rotateY( originalTheta0); boost.rotateZ( originalPhi0); boost.boost(-oldMomentum.findBoostToCM(), oldMomentum.e()/oldMomentum.mass()); for(cjt=decayTree->outgoingLines().begin(); cjt!=decayTree->outgoingLines().end();++cjt) { cjt->first->original() ->set5Momentum(cjt->first->progenitor()->momentum()); cjt->first->progenitor()->deepTransform(boost); cjt->first->original() ->deepTransform(boost); cjt->first->copy() ->deepTransform(boost); } } return hardTree; } double MEPP2VVPowheg::getResult(int channel, realVVKinematics R, Energy pT) { // This routine should return the integrand of the exact Sudakov form factor, // defined precisely as // KH 19th August - next 2 lines changed for phi in 0->pi not 0->2pi // \Delta(pT) = exp[ - \int_{pT}^{pTmax} dpT dYk d\phi/pi * getResult(...) ] // (Where phi is in 0->pi NOT 0->2*pi !) // Get pi for the prefactor: using Constants::pi; // Get the VV invariant mass^2: Energy2 p2 = B_.sb(); // Get the momentum fractions for the n+1 body event: double x1 = R.x1r(); double x2 = R.x2r(); // Reject the event if the x1 and x2 values are outside the phase space: if(x1<0.||x1>1.||x2<0.||x2>1.||x1*x2<p2/sqr(generator()->maximumCMEnergy())) return 0.; // Get the momentum fractions for the n body event: double x1b = B_.x1b(); double x2b = B_.x2b(); // Get the mandelstam variables needed to calculate the n+1 body matrix element: Energy2 s = R.sr() ; Energy2 t_u_MR_o_MB; double lo_lumi, nlo_lumi; // The luminosity function for the leading order n-body process: lo_lumi = qHadron_ ->pdf()->xfx(qHadron_ ,showerQuark_ ->dataPtr(),PDFScale_,x1b)* qbHadron_->pdf()->xfx(qbHadron_,showerAntiquark_->dataPtr(),PDFScale_,x2b); // Now we calculate the luminosity functions (product of the two pdfs) for the // real emission process(es) and also their matrix elements: // q + qbar -> V + V + g if(channel==0) { nlo_lumi = qHadron_ ->pdf()->xfx(qHadron_ ,showerQuark_ ->dataPtr() ,PDFScale_,x1) * qbHadron_->pdf()->xfx(qbHadron_,showerAntiquark_->dataPtr() ,PDFScale_,x2); t_u_MR_o_MB = t_u_M_R_qqb_hel_amp(R,false)/lo_me_; } // q + g -> V + V + q else if(channel==1) { nlo_lumi = qHadron_ ->pdf()->xfx(qHadron_ ,showerQuark_->dataPtr() ,PDFScale_,x1) * qbHadron_->pdf()->xfx(qbHadron_,getParticleData(ParticleID::g),PDFScale_,x2); t_u_MR_o_MB = t_u_M_R_qg_hel_amp(R,false)/lo_me_; } // g + qbar -> V + V + qbar else { nlo_lumi = qHadron_ ->pdf()->xfx(qHadron_ ,getParticleData(ParticleID::g),PDFScale_,x1) * qbHadron_->pdf()->xfx(qbHadron_,showerAntiquark_->dataPtr() ,PDFScale_,x2); t_u_MR_o_MB = t_u_M_R_gqb_hel_amp(R,false)/lo_me_; } // Multiply ratio of the real emission matrix elements to the Born matrix element // by the ratio of the pdfs for the real emission and born processes to get theWeight if(lo_lumi<=0.||nlo_lumi<=0.) return 0.; else return t_u_MR_o_MB * ( nlo_lumi/lo_lumi * p2/s ) * sqr(p2/s)/8./pi/pi / pT / p2 * GeV; } bool MEPP2VVPowheg::getEvent(vector<Lorentz5Momentum> & theRealMomenta, unsigned int & channel) { // Invariant mass of the colliding hadrons: Energy2 S = sqr(generator()->maximumCMEnergy()); // Born variables which are preserved (mass and rapidity of the diboson system): Energy2 p2 = B_.sb(); double Yb = B_.Yb(); // Born variables which are not preserved but are needed (the momentum fractions): double x1b(B_.x1b()), x2b(B_.x2b()); double x12b(x1b*x1b), x22b(x2b*x2b); // Maximum jet pT (half of the hadronic C.O.M. energy. N.B. this is overestimated a lot): Energy starting_pT = sqrt(S)/2.; // Initialize the pT_ *integration limit* i.e. the pT of the generated emission: pT_ = ZERO; // The pT *integration variable*: Energy pT; // The x_1 & x_2 momentum fractions corresponding to incoming momenta p1 & p2: double x1_(-999.), x2_(-999.); double x1 (-999.), x2 (-999.); // The jet rapidity *integration variable* and its limits: double Yk, minYk(-8.0), maxYk(8.0); // The theta2 integration variable (the azimuthal angle of the gluon w.r.t // V1 in the V1 & V2 rest frame: double theta2; // The realVVKinematics object corresponding to the current integration // set of integration variables: realVVKinematics R; // The veto algorithm rejection weight and a corresponding flag: double rejectionWeight; bool rejectEmission ; // Initialize the flag indicating the selected radiation channel: channel=999; // Some product of constants used for the crude distribution: double a(0.); for(int j=0;j<3;j++) { pT=starting_pT; a =(maxYk-minYk)*prefactor_[j]/2./b0_; do { // Generate next pT according to exp[- \int^{pTold}_{pT} dpT a*(power-1)/(pT^power)] // pT = GeV/pow( pow(GeV/pT,power_-1.) - log(UseRandom::rnd())/a // , 1./(power_-1.) ); // Generate next pT according to exp[- \int^{pTold}_{pT} dpT alpha1loop*prefactor/pT ] pT = LambdaQCD_*exp( 0.5*exp( log(log(sqr(pT/LambdaQCD_)))+log(UseRandom::rnd())/a ) ); // Generate rapidity of the jet: Yk = minYk + UseRandom::rnd()*(maxYk - minYk); // Generate the theta2 radiative variable: // KH 19th August - next line changed for phi in 0->pi not 0->2pi // theta2 = UseRandom::rnd() * 2.*Constants::pi; theta2 = UseRandom::rnd() * Constants::pi; // eT of the diboson system: Energy eT = sqrt(pT*pT+p2); // Calculate the eT and then solve for x_{\oplus} & x_{\ominus}: x1 = (pT*exp( Yk)+eT*exp( Yb))/sqrt(S); x2 = (pT*exp(-Yk)+eT*exp(-Yb))/sqrt(S); // Calculate the xr radiative variable: double xr(p2/(x1*x2*S)); // Then use this to calculate the y radiative variable: double y(-((xr+1.)/(xr-1.))*(xr*sqr(x1/x1b)-1.)/(xr*sqr(x1/x1b)+1.)); // The y value above should equal the one commented out below this line: // double y( ((xr+1.)/(xr-1.))*(xr*sqr(x2/x2b)-1.)/(xr*sqr(x2/x2b)+1.)); // Now we get the lower limit on the x integration, xbar: double omy(1.-y), opy(1.+y); double xbar1 = 2.*opy*x12b/(sqrt(sqr(1.+x12b)*sqr(omy)+16.*y*x12b)+omy*(1.-x1b)*(1.+x1b)); double xbar2 = 2.*omy*x22b/(sqrt(sqr(1.+x22b)*sqr(opy)-16.*y*x22b)+opy*(1.-x2b)*(1.+x2b)); double xbar = max(xbar1,xbar2); // Now we can calculate xtilde: double xt = (xr-xbar)/(1.-xbar); // Finally we can make the realVVKinematics object: R = realVVKinematics(B_,xt,y,theta2); // The next thing we have to do is set the QCD, EW and PDF scales using R: setTheScales(pT); // ... and so calculate rejection weight: rejectionWeight = getResult(j,R,pT); // If generating according to exp[- \int^{pTold}_{pT} dpT a*(power-1)/(pT^power)] // rejectionWeight/= showerAlphaS_->overestimateValue()*prefactor_[j]*pow(GeV/pT,power_); // If generating according to exp[- \int^{pTold}_{pT} dpT alpha1loop*prefactor/pT ] rejectionWeight/= 1./b0_/log(sqr(pT/LambdaQCD_))*prefactor_[j]*GeV/pT; rejectEmission = UseRandom::rnd()>rejectionWeight; // The event is a no-emission event if pT goes past min_pT_ - basically set to // outside the histogram bounds (hopefully histogram objects just ignore it then). if(pT<min_pT_) { pT=ZERO; rejectEmission = false; } if(rejectionWeight>1.) { ostringstream stream; stream << "MEPP2VVPowheg::getEvent weight for channel " << j << " is greater than one: " << rejectionWeight << endl; generator()->logWarning( Exception(stream.str(), Exception::warning) ); } } while(rejectEmission); // set pT of emission etc if(pT>pT_) { channel = j; pT_ = pT; Yk_ = Yk; R_ = R ; x1_ = x1; x2_ = x2; } } // Was this an (overall) no emission event? if(pT_<min_pT_) { pT_ = ZERO; channel = 3; } if(channel==3) return false; if(channel>3) throw Exception() << "MEPP2VVPowheg::getEvent() channel = " << channel << " pT = " << pT/GeV << " pT_ = " << pT_/GeV << Exception::abortnow; // Work out the momenta in the lab frame, reserving the mass and rapidity // of the VV system: LorentzRotation yzRotation; yzRotation.setRotateX(-atan2(pT_/GeV,sqrt(p2)/GeV)); LorentzRotation boostFrompTisZero; boostFrompTisZero.setBoostY(-pT_/sqrt(p2+pT_*pT_)); LorentzRotation boostFromYisZero; boostFromYisZero.setBoostZ(tanh(Yb)); theRealMomenta.resize(5); theRealMomenta[0] = Lorentz5Momentum(ZERO,ZERO, x1_*sqrt(S)/2., x1_*sqrt(S)/2.,ZERO); theRealMomenta[1] = Lorentz5Momentum(ZERO,ZERO,-x2_*sqrt(S)/2., x2_*sqrt(S)/2.,ZERO); theRealMomenta[2] = boostFromYisZero*boostFrompTisZero*yzRotation*(R_.k1r()); theRealMomenta[3] = boostFromYisZero*boostFrompTisZero*yzRotation*(R_.k2r()); theRealMomenta[4] = Lorentz5Momentum(ZERO, pT_, pT_*sinh(Yk_), pT_*cosh(Yk_),ZERO); return true; } void MEPP2VVPowheg::setTheScales(Energy pT) { // Work out the scales we want to use in the matrix elements and the pdfs: // Scale for alpha_S: pT^2 of the diboson system. QCDScale_ = max(pT*pT,sqr(min_pT_)); // Scale for real emission PDF: // pT^2+mVV^2 - as mcfm does in the case of a single W/Z boson). // Energy2 PDFScale_ = max(R.pT2_in_lab(),sqr(min_pT_))+R.s2r(); // pT^2 - as advocated by Nason & Ridolfi for ZZ production & Alioli et al for gg->h: PDFScale_ = max(pT*pT,sqr(min_pT_)); // Scale of electroweak vertices: mVV^2 the invariant mass of the diboson system. // EWScale_ = B_.sb(); // ... And this choice is more like what can be seen in mcatnlo_vbmain.f (weird). EWScale_ = 0.5*(B_.k12b()+B_.k22b()); return; } /***************************************************************************/ // This is identical to the code in the Powheg matrix element. It should // equal t_u_M_R_qqb in there, which is supposed to be the real emission ME // times tk*uk. Energy2 MEPP2VVPowheg::t_u_M_R_qqb_hel_amp(realVVKinematics R, bool getMatrix) const { using namespace ThePEG::Helicity; ProductionMatrixElement qqb_hel_amps(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1 ,PDT::Spin1 , PDT::Spin1); double sum_hel_amps_sqr(0.); tcPDPtr p1data(showerQuark_->dataPtr()); tcPDPtr p2data(showerAntiquark_->dataPtr()); tcPDPtr k1data(V1_->dataPtr()); tcPDPtr k2data(V2_->dataPtr()); tcPDPtr kdata(getParticleData(ParticleID::g)); if(k1data->id()==-24&&k2data->id()==24) swap(k1data,k2data); SpinorWaveFunction qSpinor(R.p1r(),p1data,incoming); SpinorBarWaveFunction qbSpinor(R.p2r(),p2data,incoming); vector<SpinorWaveFunction> q; vector<SpinorBarWaveFunction> qb; for(unsigned int ix=0;ix<2;ix++) { qSpinor.reset(ix); qbSpinor.reset(ix); q.push_back(qSpinor); qb.push_back(qbSpinor); } VectorWaveFunction v1Polarization(R.k1r(),k1data,outgoing); VectorWaveFunction v2Polarization(R.k2r(),k2data,outgoing); vector<VectorWaveFunction> v1; vector<VectorWaveFunction> v2; for(unsigned int ix=0;ix<3;ix++) { v1Polarization.reset(ix); v2Polarization.reset(ix); v1.push_back(v1Polarization); v2.push_back(v2Polarization); } VectorWaveFunction gPolarization(R.kr(),kdata,outgoing); vector<VectorWaveFunction> g; for(unsigned int ix=0;ix<3;ix+=2) { gPolarization.reset(ix); g.push_back(gPolarization); } AbstractFFVVertexPtr ffg = FFGvertex_; AbstractFFVVertexPtr ffv1 = k1data->id()==23 ? FFZvertex_ : FFWvertex_; AbstractFFVVertexPtr ffv2 = k2data->id()==23 ? FFZvertex_ : FFWvertex_; // Collecting information for intermediate fermions vector<tcPDPtr> tc; if(abs(k1data->id())==24&&abs(k2data->id())==24) { if(abs(p1data->id())%2==0) for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(1+2*ix)); else for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(2+2*ix)); } else if(k1data->id()==23&&k2data->id()==23) tc.push_back(p1data); else if(abs(k1data->id())==24&&k2data->id()==23) tc.push_back(p2data); // Loop over helicities summing the relevant diagrams for(unsigned int p1hel=0;p1hel<2;++p1hel) { for(unsigned int p2hel=0;p2hel<2;++p2hel) { for(unsigned int khel=0;khel<2;++khel) { SpinorWaveFunction p1_k = ffg->evaluate(QCDScale_,5,p1data,q[p1hel],g[khel]); SpinorBarWaveFunction p2_k = ffg->evaluate(QCDScale_,5,p2data,qb[p2hel],g[khel]); for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { // If helicity is exactly conserved (massless quarks) skip if p1hel=p2hel // but if the production ME is required first fill it with (0.,0.). if((p1hel==p2hel)&&helicityConservation_) { if(getMatrix) { if(khel==0) qqb_hel_amps(p1hel,p2hel,k1hel,k2hel,0) = Complex(0.,0.); else qqb_hel_amps(p1hel,p2hel,k1hel,k2hel,2) = Complex(0.,0.); } continue; } vector<Complex> diagrams; // Get all t-channel diagram contributions tcPDPtr intermediate_t; for(unsigned int ix=0;ix<tc.size();ix++) { intermediate_t = (!(k1data->id()==24&&k2data->id()==-24)) ? p2data : tc[ix]; // Note: choosing 5 as the second argument ffvX_->evaluate() sets // option 5 in thepeg/Helicity/Vertex/VertexBase.cc, which makes // the (fermion) propagator denominator massless: 1/p^2. // If W+Z / W-Z calculate the two V+jet-like s-channel diagrams SpinorWaveFunction p1_v1 = ffv1->evaluate(EWScale_,5,intermediate_t,q[p1hel],v1[k1hel]); SpinorBarWaveFunction p2_v2 = ffv2->evaluate(EWScale_,5,intermediate_t,qb[p2hel],v2[k2hel]); // First calculate all the off-shell fermion currents // Now calculate the 6 t-channel diagrams // q+qb->g+v1+v2, q+qb->v1+g+v2, q+qb->v1+v2+g if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p1data->id())%2==1))) { diagrams.push_back(ffv1->evaluate(EWScale_,p1_k,p2_v2,v1[k1hel])); diagrams.push_back(ffg->evaluate(QCDScale_,p1_v1,p2_v2,g[khel])); diagrams.push_back(ffv2->evaluate(EWScale_,p1_v1,p2_k,v2[k2hel])); } intermediate_t = (!(k1data->id()==24&&k2data->id()==-24)) ? p1data : tc[ix]; SpinorWaveFunction p1_v2 = ffv2->evaluate(EWScale_,5,intermediate_t,q[p1hel],v2[k2hel]); SpinorBarWaveFunction p2_v1 = ffv1->evaluate(EWScale_,5,intermediate_t,qb[p2hel],v1[k1hel]); // q+qb->g+v2+v1, q+qb->v2+g+v1, q+qb->v2+v1+g if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p1data->id())%2==0))) { diagrams.push_back(ffv2->evaluate(EWScale_,p1_k,p2_v1,v2[k2hel])); diagrams.push_back(ffg->evaluate(QCDScale_,p1_v2,p2_v1,g[khel])); diagrams.push_back(ffv1->evaluate(EWScale_,p1_v2,p2_k,v1[k1hel])); } } // Note: choosing 3 as the second argument in WWWvertex_->evaluate() // sets option 3 in thepeg/Helicity/Vertex/VertexBase.cc , which // means the propagator does not contain a width factor (which is // good re. gauge invariance). // If W+Z / W-Z calculate the two V+jet-like s-channel diagrams if(abs(k1data->id())==24&&k2data->id()==23) { // The off-shell s-channel boson current VectorWaveFunction k1_k2 = WWWvertex_->evaluate(EWScale_,3,k1data->CC(),v2[k2hel],v1[k1hel]); // q+qb->g+v1*->g+v1+v2, q+qb->v1*+g->v1+v2+g diagrams.push_back(ffv1->evaluate(EWScale_,p1_k,qb[p2hel],k1_k2)); diagrams.push_back(ffv1->evaluate(EWScale_,q[p1hel],p2_k,k1_k2)); } // If W+W- calculate the four V+jet-like s-channel diagrams if((k1data->id()==24&&k2data->id()==-24)&&(p1data->id()==-p2data->id())) { // The off-shell s-channel boson current VectorWaveFunction k1_k2; // q+qb->g+Z0*->g+v1+v2,q+qb->Z0*+g->v1+v2+g, tcPDPtr Z0 = getParticleData(ParticleID::Z0); k1_k2 = WWWvertex_->evaluate(EWScale_,3,Z0,v2[k2hel],v1[k1hel]); diagrams.push_back(FFZvertex_->evaluate(EWScale_,p1_k,qb[p2hel],k1_k2)); diagrams.push_back(FFZvertex_->evaluate(EWScale_,q[p1hel],p2_k,k1_k2)); // q+qb->g+gamma*->g+v1+v2,q+qb->gamma*+g->v1+v2+g, tcPDPtr gamma = getParticleData(ParticleID::gamma); k1_k2 = WWWvertex_->evaluate(EWScale_,3,gamma,v2[k2hel],v1[k1hel]); diagrams.push_back(FFPvertex_->evaluate(EWScale_,p1_k,qb[p2hel],k1_k2)); diagrams.push_back(FFPvertex_->evaluate(EWScale_,q[p1hel],p2_k,k1_k2)); } // Add up all diagrams to get the total amplitude: Complex hel_amp(0.); for(unsigned int ix=0;ix<diagrams.size();ix++) hel_amp += diagrams[ix]; // If we need to fill the production ME we do it here: if(getMatrix) { if(khel==0) qqb_hel_amps(p1hel,p2hel,k1hel,k2hel,0) = hel_amp; else qqb_hel_amps(p1hel,p2hel,k1hel,k2hel,2) = hel_amp; } sum_hel_amps_sqr += norm(hel_amp); } } } } } // Fill up the remaining bits of the production ME, corresponding // to longitudinal gluon polarization, with (0.,0.). if(getMatrix) { for(unsigned int p1hel=0;p1hel<2;++p1hel) { for(unsigned int p2hel=0;p2hel<2;++p2hel) { for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { qqb_hel_amps(p1hel,p2hel,k1hel,k2hel,1) = Complex(0.,0.); } } } } } // Calculate the production density matrix: if(getMatrix) { for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k1helpr=0;k1helpr<3;++k1helpr) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { for(unsigned int k2helpr=0;k2helpr<3;++k2helpr) { Complex theElement(0.,0.); // For each k1hel, k1helpr, k2hel, k2helpr sum over fermion and gluon spins... for(unsigned int p1hel=0;p1hel<2;++p1hel) { for(unsigned int p2hel=0;p2hel<2;++p2hel) { for(unsigned int khel=0;khel<3;khel+=2) { theElement += qqb_hel_amps(p1hel,p2hel,k1hel ,k2hel ,khel) *conj(qqb_hel_amps(p1hel,p2hel,k1helpr,k2helpr,khel)); } } } // ...and then set the production matrix element to the sum: productionMatrix_[k1hel][k1helpr][k2hel][k2helpr] = theElement; } } } } } // Spin and colour averaging factors = 1/4 * CF * 1/3 = 1/9 sum_hel_amps_sqr /= 9.; // Symmetry factor for identical Z bosons in the final state if(k1data->id()==23&&k2data->id()==23) sum_hel_amps_sqr /= 2.; return sum_hel_amps_sqr*R.tkr()*R.ukr()*UnitRemoval::InvE2; } /***************************************************************************/ // This is identical to the code in the Powheg matrix element. It should // equal t_u_M_R_qg in there, which is supposed to be the real emission ME // times tk*uk. Energy2 MEPP2VVPowheg::t_u_M_R_qg_hel_amp(realVVKinematics R, bool getMatrix) const { using namespace ThePEG::Helicity; ProductionMatrixElement qg_hel_amps(PDT::Spin1Half,PDT::Spin1, PDT::Spin1,PDT::Spin1, PDT::Spin1Half); double sum_hel_amps_sqr(0.); tcPDPtr p1data(showerQuark_->dataPtr()); tcPDPtr p2data(getParticleData(ParticleID::g)); tcPDPtr k1data(V1_->dataPtr()); tcPDPtr k2data(V2_->dataPtr()); tcPDPtr kdata (showerAntiquark_->dataPtr()->CC()); if(k1data->id()==-24&&k2data->id()==24) swap(k1data,k2data); SpinorWaveFunction qinSpinor(R.p1r(),p1data,incoming); SpinorBarWaveFunction qoutSpinor(R.kr(),kdata,outgoing); vector<SpinorWaveFunction> qin; vector<SpinorBarWaveFunction> qout; for(unsigned int ix=0;ix<2;ix++) { qinSpinor.reset(ix); qoutSpinor.reset(ix); qin.push_back(qinSpinor); qout.push_back(qoutSpinor); } VectorWaveFunction v1Polarization(R.k1r(),k1data,outgoing); VectorWaveFunction v2Polarization(R.k2r(),k2data,outgoing); vector<VectorWaveFunction> v1; vector<VectorWaveFunction> v2; for(unsigned int ix=0;ix<3;ix++) { v1Polarization.reset(ix); v2Polarization.reset(ix); v1.push_back(v1Polarization); v2.push_back(v2Polarization); } VectorWaveFunction gPolarization(R.p2r(),p2data,incoming); vector<VectorWaveFunction> g; for(unsigned int ix=0;ix<3;ix+=2) { gPolarization.reset(ix); g.push_back(gPolarization); } AbstractFFVVertexPtr ffg = FFGvertex_; AbstractFFVVertexPtr ffv1 = k1data->id()==23 ? FFZvertex_ : FFWvertex_; AbstractFFVVertexPtr ffv2 = k2data->id()==23 ? FFZvertex_ : FFWvertex_; // Collecting information for intermediate fermions vector<tcPDPtr> tc; if(abs(k1data->id())==24&&abs(k2data->id())==24) { if(abs(p1data->id())%2==0) for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(1+2*ix)); else for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(2+2*ix)); } else if(k1data->id()==23&&k2data->id()==23) tc.push_back(p1data); else if(abs(k1data->id())==24&&k2data->id()==23) tc.push_back(kdata->CC()); // Loop over helicities summing the relevant diagrams for(unsigned int p1hel=0;p1hel<2;++p1hel) { for(unsigned int p2hel=0;p2hel<2;++p2hel) { for(unsigned int khel=0;khel<2;++khel) { SpinorWaveFunction p1_p2 = ffg->evaluate(QCDScale_,5,p1data,qin[p1hel],g[p2hel]); SpinorBarWaveFunction p2_k = ffg->evaluate(QCDScale_,5,kdata->CC(),qout[khel],g[p2hel]); for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { // If helicity is exactly conserved (massless quarks) skip if p1hel!=khel // but if the production ME is required first fill it with (0.,0.). if((p1hel!=khel)&&helicityConservation_) { if(getMatrix) { if(p2hel==0) qg_hel_amps(p1hel,0,k1hel,k2hel,khel) = Complex(0.,0.); else qg_hel_amps(p1hel,2,k1hel,k2hel,khel) = Complex(0.,0.); } continue; } vector<Complex> diagrams; // Get all t-channel diagram contributions tcPDPtr intermediate_q; for(unsigned int ix=0;ix<tc.size();ix++) { intermediate_q = (!(k1data->id()==24&&k2data->id()==-24)) ? showerAntiquark_->dataPtr() : tc[ix]; SpinorWaveFunction p1_v1 = ffv1->evaluate(EWScale_,5,intermediate_q,qin[p1hel],v1[k1hel]); SpinorBarWaveFunction k_v2 = ffv2->evaluate(EWScale_,5,intermediate_q,qout[khel],v2[k2hel]); // First calculate all the off-shell fermion currents // Now calculate the 6 abelian diagrams // q+g->v1+v2+q with 2 t-channel propagators, 1 s- and 1 t-channel and 2 t-channel ones. if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p1data->id())%2==1))) { diagrams.push_back(ffv2->evaluate(EWScale_,p1_v1,p2_k,v2[k2hel])); diagrams.push_back(ffg->evaluate(QCDScale_,p1_v1,k_v2,g[p2hel])); diagrams.push_back(ffv1->evaluate(EWScale_,p1_p2,k_v2,v1[k1hel])); } intermediate_q = (!(k1data->id()==24&&k2data->id()==-24)) ? p1data : tc[ix]; SpinorWaveFunction p1_v2 = ffv2->evaluate(EWScale_,5,intermediate_q,qin[p1hel],v2[k2hel]); SpinorBarWaveFunction k_v1 = ffv1->evaluate(EWScale_,5,intermediate_q,qout[khel],v1[k1hel]); // q+g->v2+v1+q, with 2 t-channel propagators, 1 s- and 1 t-channel and 2 t-channel ones. if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p1data->id())%2==0))) { diagrams.push_back(ffv1->evaluate(EWScale_,p1_v2,p2_k,v1[k1hel])); diagrams.push_back(ffg->evaluate(QCDScale_,p1_v2,k_v1,g[p2hel])); diagrams.push_back(ffv2->evaluate(EWScale_,p1_p2,k_v1,v2[k2hel])); } } // Note: choosing 3 as the second argument in WWWvertex_->evaluate() // sets option 3 in thepeg/Helicity/Vertex/VertexBase.cc , which // means the propagator does not contain a width factor (which is // good re. gauge invariance). // If W+Z / W-Z calculate the two V+jet-like s-channel diagrams if(abs(k1data->id())==24&&k2data->id()==23) { // The off-shell s-channel boson current VectorWaveFunction k1_k2 = WWWvertex_->evaluate(EWScale_,3,k1data->CC(),v2[k2hel],v1[k1hel]); // q+qb->g+v1*->g+v1+v2, q+qb->v1*+g->v1+v2+g diagrams.push_back(ffv1->evaluate(EWScale_,p1_p2,qout[khel],k1_k2)); diagrams.push_back(ffv1->evaluate(EWScale_,qin[p1hel],p2_k,k1_k2)); } // If W+W- calculate the four V+jet-like s-channel diagrams if((k1data->id()==24&&k2data->id()==-24)&&(p1data->id()==kdata->id())) { // The off-shell s-channel boson current VectorWaveFunction k1_k2; // q+qb->g+Z0*->g+v1+v2,q+qb->Z0*+g->v1+v2+g, tcPDPtr Z0 = getParticleData(ParticleID::Z0); k1_k2 = WWWvertex_->evaluate(EWScale_,3,Z0,v2[k2hel],v1[k1hel]); diagrams.push_back(FFZvertex_->evaluate(EWScale_,p1_p2,qout[khel],k1_k2)); diagrams.push_back(FFZvertex_->evaluate(EWScale_,qin[p1hel],p2_k,k1_k2)); // q+qb->g+gamma*->g+v1+v2,q+qb->gamma*+g->v1+v2+g, tcPDPtr gamma = getParticleData(ParticleID::gamma); k1_k2 = WWWvertex_->evaluate(EWScale_,3,gamma,v2[k2hel],v1[k1hel]); diagrams.push_back(FFPvertex_->evaluate(EWScale_,p1_p2,qout[khel],k1_k2)); diagrams.push_back(FFPvertex_->evaluate(EWScale_,qin[p1hel],p2_k,k1_k2)); } // Add up all diagrams to get the total amplitude: Complex hel_amp(0.); for(unsigned int ix=0;ix<diagrams.size();ix++) hel_amp += diagrams[ix]; // If we need to fill the production ME we do it here: if(getMatrix) { if(p2hel==0) qg_hel_amps(p1hel,0,k1hel,k2hel,khel) = hel_amp; else qg_hel_amps(p1hel,2,k1hel,k2hel,khel) = hel_amp; } sum_hel_amps_sqr += norm(hel_amp); } } } } } // Fill up the remaining bits of the production ME, corresponding // to longitudinal gluon polarization, with (0.,0.). if(getMatrix) { for(unsigned int p1hel=0;p1hel<2;++p1hel) { for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { for(unsigned int khel=0;khel<2;++khel) { qg_hel_amps(p1hel,1,k1hel,k2hel,khel) = Complex(0.,0.); } } } } } // Calculate the production density matrix: if(getMatrix) { for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k1helpr=0;k1helpr<3;++k1helpr) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { for(unsigned int k2helpr=0;k2helpr<3;++k2helpr) { Complex theElement(0.,0.); // For each k1hel, k1helpr, k2hel, k2helpr sum over fermion and gluon spins... for(unsigned int p1hel=0;p1hel<2;++p1hel) { for(unsigned int p2hel=0;p2hel<3;p2hel+=2) { for(unsigned int khel=0;khel<2;++khel) { theElement += qg_hel_amps(p1hel,p2hel,k1hel ,k2hel ,khel) *conj(qg_hel_amps(p1hel,p2hel,k1helpr,k2helpr,khel)); } } } // ...and then set the production matrix element to the sum: productionMatrix_[k1hel][k1helpr][k2hel][k2helpr] = theElement; } } } } } // Spin and colour averaging factors = 1/4 * TR * 1/3 = 1/24 sum_hel_amps_sqr /= 24.; // Symmetry factor for identical Z bosons in the final state if(k1data->id()==23&&k2data->id()==23) sum_hel_amps_sqr /= 2.; return sum_hel_amps_sqr*R.tkr()*R.ukr()*UnitRemoval::InvE2; } /***************************************************************************/ // This is identical to the code in the Powheg matrix element. It should // equal t_u_M_R_gqb in there, which is supposed to be the real emission ME // times tk*uk. Energy2 MEPP2VVPowheg::t_u_M_R_gqb_hel_amp(realVVKinematics R, bool getMatrix) const { using namespace ThePEG::Helicity; ProductionMatrixElement gqb_hel_amps(PDT::Spin1,PDT::Spin1Half, PDT::Spin1,PDT::Spin1, PDT::Spin1Half); double sum_hel_amps_sqr(0.); tcPDPtr p1data(getParticleData(ParticleID::g)); tcPDPtr p2data(showerAntiquark_->dataPtr()); tcPDPtr k1data(V1_->dataPtr()); tcPDPtr k2data(V2_->dataPtr()); tcPDPtr kdata (showerQuark_->dataPtr()->CC()); if(k1data->id()==-24&&k2data->id()==24) swap(k1data,k2data); SpinorBarWaveFunction qbinSpinor(R.p2r(),p2data,incoming); SpinorWaveFunction qboutSpinor(R.kr(),kdata,outgoing); vector<SpinorBarWaveFunction> qbin; vector<SpinorWaveFunction> qbout; for(unsigned int ix=0;ix<2;ix++) { qbinSpinor.reset(ix); qboutSpinor.reset(ix); qbin.push_back(qbinSpinor); qbout.push_back(qboutSpinor); } VectorWaveFunction v1Polarization(R.k1r(),k1data,outgoing); VectorWaveFunction v2Polarization(R.k2r(),k2data,outgoing); vector<VectorWaveFunction> v1; vector<VectorWaveFunction> v2; for(unsigned int ix=0;ix<3;ix++) { v1Polarization.reset(ix); v2Polarization.reset(ix); v1.push_back(v1Polarization); v2.push_back(v2Polarization); } VectorWaveFunction gPolarization(R.p1r(),p1data,incoming); vector<VectorWaveFunction> g; for(unsigned int ix=0;ix<3;ix+=2) { gPolarization.reset(ix); g.push_back(gPolarization); } AbstractFFVVertexPtr ffg = FFGvertex_; AbstractFFVVertexPtr ffv1 = k1data->id()==23 ? FFZvertex_ : FFWvertex_; AbstractFFVVertexPtr ffv2 = k2data->id()==23 ? FFZvertex_ : FFWvertex_; // Collecting information for intermediate fermions vector<tcPDPtr> tc; if(abs(k1data->id())==24&&abs(k2data->id())==24) { if(abs(p2data->id())%2==0) for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(1+2*ix)); else for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(2+2*ix)); } else if(k1data->id()==23&&k2data->id()==23) tc.push_back(p2data); else if(abs(k1data->id())==24&&k2data->id()==23) tc.push_back(kdata->CC()); // Loop over helicities summing the relevant diagrams for(unsigned int p1hel=0;p1hel<2;++p1hel) { for(unsigned int p2hel=0;p2hel<2;++p2hel) { for(unsigned int khel=0;khel<2;++khel) { SpinorBarWaveFunction p1_p2 = ffg->evaluate(QCDScale_,5,p2data,qbin[p2hel],g[p1hel]); SpinorWaveFunction p1_k = ffg->evaluate(QCDScale_,5,kdata->CC(),qbout[khel],g[p1hel]); for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { // If helicity is exactly conserved (massless quarks) skip if p2hel!=khel // but if the production ME is required first fill it with (0.,0.). if((p2hel!=khel)&&helicityConservation_) { if(getMatrix) { if(p1hel==0) gqb_hel_amps(0,p2hel,k1hel,k2hel,khel) = Complex(0.,0.); else gqb_hel_amps(2,p2hel,k1hel,k2hel,khel) = Complex(0.,0.); } continue; } vector<Complex> diagrams; // Get all t-channel diagram contributions tcPDPtr intermediate_q; for(unsigned int ix=0;ix<tc.size();ix++) { intermediate_q = (!(k1data->id()==24&&k2data->id()==-24)) ? showerQuark_->dataPtr() : tc[ix]; SpinorBarWaveFunction p2_v1 = ffv1->evaluate(EWScale_,5,intermediate_q,qbin[p2hel],v1[k1hel]); SpinorWaveFunction k_v2 = ffv2->evaluate(EWScale_,5,intermediate_q,qbout[khel],v2[k2hel]); // First calculate all the off-shell fermion currents // Now calculate the 6 abelian diagrams q+g->v1+v2+q // with 2 t-channel propagators, 1 s- and 1 t-channel // and 2 t-channel ones. if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p2data->id())%2==0))) { diagrams.push_back(ffv2->evaluate(EWScale_,p1_k,p2_v1,v2[k2hel])); diagrams.push_back(ffg->evaluate(QCDScale_,k_v2,p2_v1,g[p1hel])); diagrams.push_back(ffv1->evaluate(EWScale_,k_v2,p1_p2,v1[k1hel])); } intermediate_q = (!(k1data->id()==24&&k2data->id()==-24)) ? p2data : tc[ix]; SpinorBarWaveFunction p2_v2 = ffv2->evaluate(EWScale_,5,intermediate_q,qbin[p2hel],v2[k2hel]); SpinorWaveFunction k_v1 = ffv1->evaluate(EWScale_,5,intermediate_q,qbout[khel],v1[k1hel]); // q+g->v2+v1+q, with 2 t-channel propagators, 1 s- and 1 t-channel and 2 t-channel ones. if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p2data->id())%2==1))) { diagrams.push_back(ffv1->evaluate(EWScale_,p1_k,p2_v2,v1[k1hel])); diagrams.push_back(ffg->evaluate(QCDScale_,k_v1,p2_v2,g[p1hel])); diagrams.push_back(ffv2->evaluate(EWScale_,k_v1,p1_p2,v2[k2hel])); } } // Note: choosing 3 as the second argument in WWWvertex_->evaluate() // sets option 3 in thepeg/Helicity/Vertex/VertexBase.cc , which // means the propagator does not contain a width factor (which is // good re. gauge invariance). // If W+Z / W-Z calculate the two V+jet-like s-channel diagrams if(abs(k1data->id())==24&&k2data->id()==23) { // The off-shell s-channel boson current VectorWaveFunction k1_k2 = WWWvertex_->evaluate(EWScale_,3,k1data->CC(),v2[k2hel],v1[k1hel]); // q+qb->g+v1*->g+v1+v2, q+qb->v1*+g->v1+v2+g diagrams.push_back(ffv1->evaluate(EWScale_,qbout[khel],p1_p2,k1_k2)); diagrams.push_back(ffv1->evaluate(EWScale_,p1_k,qbin[p2hel],k1_k2)); } // If W+W- calculate the four V+jet-like s-channel diagrams if((k1data->id()==24&&k2data->id()==-24)&&(p2data->id()==kdata->id())) { // The off-shell s-channel boson current VectorWaveFunction k1_k2; // q+qb->g+Z0*->g+v1+v2,q+qb->Z0*+g->v1+v2+g, tcPDPtr Z0 = getParticleData(ParticleID::Z0); k1_k2 = WWWvertex_->evaluate(EWScale_,3,Z0,v2[k2hel],v1[k1hel]); diagrams.push_back(FFZvertex_->evaluate(EWScale_,qbout[khel],p1_p2,k1_k2)); diagrams.push_back(FFZvertex_->evaluate(EWScale_,p1_k,qbin[p2hel],k1_k2)); // q+qb->g+gamma*->g+v1+v2,q+qb->gamma*+g->v1+v2+g, tcPDPtr gamma = getParticleData(ParticleID::gamma); k1_k2 = WWWvertex_->evaluate(EWScale_,3,gamma,v2[k2hel],v1[k1hel]); diagrams.push_back(FFPvertex_->evaluate(EWScale_,qbout[khel],p1_p2,k1_k2)); diagrams.push_back(FFPvertex_->evaluate(EWScale_,p1_k,qbin[p2hel],k1_k2)); } // Add up all diagrams to get the total amplitude: Complex hel_amp(0.); for(unsigned int ix=0;ix<diagrams.size();ix++) hel_amp += diagrams[ix]; // If we need to fill the production ME we do it here: if(getMatrix) { if(p1hel==0) gqb_hel_amps(0,p2hel,k1hel,k2hel,khel) = hel_amp; else gqb_hel_amps(2,p2hel,k1hel,k2hel,khel) = hel_amp; } sum_hel_amps_sqr += norm(hel_amp); } } } } } // Fill up the remaining bits of the production ME, corresponding // to longitudinal gluon polarization, with (0.,0.). if(getMatrix) { for(unsigned int p2hel=0;p2hel<2;++p2hel) { for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { for(unsigned int khel=0;khel<2;++khel) { gqb_hel_amps(1,p2hel,k1hel,k2hel,khel) = Complex(0.,0.); } } } } } // Calculate the production density matrix: if(getMatrix) { for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k1helpr=0;k1helpr<3;++k1helpr) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { for(unsigned int k2helpr=0;k2helpr<3;++k2helpr) { Complex theElement(0.,0.); // For each k1hel, k1helpr, k2hel, k2helpr sum over fermion and gluon spins... for(unsigned int p1hel=0;p1hel<3;p1hel+=2) { for(unsigned int p2hel=0;p2hel<2;++p2hel) { for(unsigned int khel=0;khel<2;++khel) { theElement += gqb_hel_amps(p1hel,p2hel,k1hel ,k2hel ,khel) *conj(gqb_hel_amps(p1hel,p2hel,k1helpr,k2helpr,khel)); } } } // ...and then set the production matrix element to the sum: productionMatrix_[k1hel][k1helpr][k2hel][k2helpr] = theElement; } } } } } // Spin and colour averaging factors = 1/4 * TR * 1/3 = 1/24 sum_hel_amps_sqr /= 24.; // Symmetry factor for identical Z bosons in the final state if(k1data->id()==23&&k2data->id()==23) sum_hel_amps_sqr /= 2.; return sum_hel_amps_sqr*R.tkr()*R.ukr()*UnitRemoval::InvE2; } /***************************************************************************/ // This returns exactly the same value as lo_me2_ when you put it in MEPP2VVPowheg.cc double MEPP2VVPowheg::lo_me(bool getMatrix) const { using namespace ThePEG::Helicity; ProductionMatrixElement lo_hel_amps(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1 ,PDT::Spin1); double sum_hel_amps_sqr(0.); tcPDPtr p1data(showerQuark_->dataPtr()); tcPDPtr p2data(showerAntiquark_->dataPtr()); tcPDPtr k1data(V1_->dataPtr()); tcPDPtr k2data(V2_->dataPtr()); if(k1data->id()==-24&&k2data->id()==24) swap(k1data,k2data); // Should never actually occur. // If you want to reproduce the spin correlations of MEPP2VV // you should evaluate this ME using the lab frame momenta // instead of the bornVVKinematics ones (partonic C.O.M. frame). SpinorWaveFunction qSpinor; SpinorBarWaveFunction qbSpinor; if(!getMatrix) { qSpinor=SpinorWaveFunction(B_.p1b(),p1data,incoming); qbSpinor=SpinorBarWaveFunction(B_.p2b(),p2data,incoming); } else { qSpinor=SpinorWaveFunction(showerQuark_->momentum(),p1data,incoming); qbSpinor=SpinorBarWaveFunction(showerAntiquark_->momentum(),p2data,incoming); } vector<SpinorWaveFunction> q; vector<SpinorBarWaveFunction> qb; for(unsigned int ix=0;ix<2;ix++) { qSpinor.reset(ix); qbSpinor.reset(ix); q.push_back(qSpinor); qb.push_back(qbSpinor); } // If you want to reproduce the spin correlations of MEPP2VV // you should evaluate this ME using the lab frame momenta // instead of the bornVVKinematics ones (partonic C.O.M. frame). VectorWaveFunction v1Polarization; VectorWaveFunction v2Polarization; if(!getMatrix) { v1Polarization=VectorWaveFunction(B_.k1b(),k1data,outgoing); v2Polarization=VectorWaveFunction(B_.k2b(),k2data,outgoing); } else { v1Polarization=VectorWaveFunction(V1_->momentum(),k1data,outgoing); v2Polarization=VectorWaveFunction(V2_->momentum(),k2data,outgoing); } vector<VectorWaveFunction> v1; vector<VectorWaveFunction> v2; for(unsigned int ix=0;ix<3;ix++) { v1Polarization.reset(ix); v2Polarization.reset(ix); v1.push_back(v1Polarization); v2.push_back(v2Polarization); } AbstractFFVVertexPtr ffv1 = k1data->id()==23 ? FFZvertex_ : FFWvertex_; AbstractFFVVertexPtr ffv2 = k2data->id()==23 ? FFZvertex_ : FFWvertex_; // Collecting information for intermediate fermions vector<tcPDPtr> tc; if(abs(k1data->id())==24&&abs(k2data->id())==24) { if(abs(p1data->id())%2==0) for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(1+2*ix)); else for(int ix=0;ix<3;++ix) tc.push_back(getParticleData(2+2*ix)); } else if(k1data->id()==23&&k2data->id()==23) tc.push_back(p1data); else if(abs(k1data->id())==24&&k2data->id()==23) tc.push_back(p2data); // Loop over helicities summing the relevant diagrams for(unsigned int p1hel=0;p1hel<2;++p1hel) { for(unsigned int p2hel=0;p2hel<2;++p2hel) { for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { if((p1hel==p2hel)&&helicityConservation_) { lo_hel_amps(p1hel,p2hel,k1hel,k2hel) = Complex(0.,0.); continue; } vector<Complex> diagrams; // Get all t-channel diagram contributions tcPDPtr intermediate_t; for(unsigned int ix=0;ix<tc.size();ix++) { intermediate_t = (!(k1data->id()==24&&k2data->id()==-24)) ? p2data : tc[ix]; SpinorWaveFunction p1_v1 = ffv1->evaluate(EWScale_,5,intermediate_t,q[p1hel],v1[k1hel]); // First calculate all the off-shell fermion currents // Now calculate the 6 t-channel diagrams // q+qb->v1+v2 if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p1data->id())%2==1))) diagrams.push_back(ffv2->evaluate(EWScale_,p1_v1,qb[p2hel],v2[k2hel])); intermediate_t = (!(k1data->id()==24&&k2data->id()==-24)) ? p1data : tc[ix]; SpinorWaveFunction p1_v2 = ffv2->evaluate(EWScale_,5,intermediate_t,q[p1hel],v2[k2hel]); // q+qb->v2+v1 if(!((k1data->id()==24&&k2data->id()==-24)&&(abs(p1data->id())%2==0))) diagrams.push_back(ffv1->evaluate(EWScale_,p1_v2,qb[p2hel],v1[k1hel])); } // Note: choosing 3 as the second argument in WWWvertex_->evaluate() // sets option 3 in thepeg/Helicity/Vertex/VertexBase.cc , which // means the propagator does not contain a width factor (which is // good re. gauge invariance). // If W+Z / W-Z calculate the two V+jet-like s-channel diagrams if(abs(k1data->id())==24&&k2data->id()==23) { // The off-shell s-channel boson current VectorWaveFunction k1_k2 = WWWvertex_->evaluate(EWScale_,3,k1data->CC(),v2[k2hel],v1[k1hel]); // q+qb->v1*->v1+v2 diagrams.push_back(ffv1->evaluate(EWScale_,q[p1hel],qb[p2hel],k1_k2)); } // If W+W- calculate the four V+jet-like s-channel diagrams if((k1data->id()==24&&k2data->id()==-24)&&(p1data->id()==-p2data->id())) { // The off-shell s-channel boson current VectorWaveFunction k1_k2; // q+qb->Z0*->v1+v2 tcPDPtr Z0 = getParticleData(ParticleID::Z0); k1_k2 = WWWvertex_->evaluate(EWScale_,3,Z0,v2[k2hel],v1[k1hel]); diagrams.push_back(FFZvertex_->evaluate(EWScale_,q[p1hel],qb[p2hel],k1_k2)); // q+qb->gamma*->v1+v2 tcPDPtr gamma = getParticleData(ParticleID::gamma); k1_k2 = WWWvertex_->evaluate(EWScale_,3,gamma,v2[k2hel],v1[k1hel]); diagrams.push_back(FFPvertex_->evaluate(EWScale_,q[p1hel],qb[p2hel],k1_k2)); } // Add up all diagrams to get the total amplitude: Complex hel_amp(0.); for(unsigned int ix=0;ix<diagrams.size();ix++) hel_amp += diagrams[ix]; // If we need to fill the production ME we do it here: if(getMatrix) lo_hel_amps(p1hel,p2hel,k1hel,k2hel) = hel_amp; sum_hel_amps_sqr += norm(hel_amp); } } } } // Calculate the production density matrix: if(getMatrix) { for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k1helpr=0;k1helpr<3;++k1helpr) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { for(unsigned int k2helpr=0;k2helpr<3;++k2helpr) { Complex theElement(0.,0.); // For each k1hel, k1helpr, k2hel, k2helpr sum over the fermion spins... for(unsigned int p1hel=0;p1hel<2;++p1hel) { for(unsigned int p2hel=0;p2hel<2;++p2hel) { if((p1hel==p2hel)&&helicityConservation_) continue; theElement += lo_hel_amps(p1hel,p2hel,k1hel ,k2hel ) *conj(lo_hel_amps(p1hel,p2hel,k1helpr,k2helpr)); } } // ...and then set the production matrix element to the sum: productionMatrix_[k1hel][k1helpr][k2hel][k2helpr] = theElement; } } } } } // Spin and colour averaging factors = 1/4 * 1/3 = 1/12 sum_hel_amps_sqr /= 12.; // Symmetry factor for identical Z bosons in the final state if(k1data->id()==23&&k2data->id()==23) sum_hel_amps_sqr /= 2.; return sum_hel_amps_sqr; } /***************************************************************************/ // This member selects a [2-body] decay mode and assigns children to the // vector bosons with momenta which are isotropic in their rest frames. bool MEPP2VVPowheg::isotropicDecayer() { using namespace ThePEG::Helicity; // Generate the children's momenta isotropically in // the rest frames of V1 and V2: double cth,phi; // First V1's children: cth = UseRandom::rnd()*2.-1.; phi = UseRandom::rnd()*2.*Constants::pi; Energy m1(V1_->momentum().m()); Energy m3(children_[0]->data().constituentMass()); Energy m4(children_[1]->data().constituentMass()); Energy p34(triangleFn(sqr(m1),sqr(m3),sqr(m4)) /2./m1); if(isnan(p34/GeV)||cth>1.||cth<-1.) return false; Energy pT34(p34*sqrt(1.-cth)*sqrt(1.+cth)); Lorentz5Momentum k3(pT34*sin(phi),pT34*cos(phi),p34 *cth, sqrt(p34*p34+sqr(m3)),m3); Lorentz5Momentum k4(-k3); k4.setE(sqrt(p34*p34+sqr(m4))); k4.setTau(m4); Boost boostToV1RF(R_.k1r().boostVector()); k3.boost(boostToV1RF); k3.rescaleRho(); k4.boost(boostToV1RF); k4.rescaleRho(); // Second V2's children: cth = UseRandom::rnd()*2.-1.; phi = UseRandom::rnd()*2.*Constants::pi; Energy m2(V2_->momentum().m()); Energy m5(children_[2]->data().constituentMass()); Energy m6(children_[3]->data().constituentMass()); Energy p56(triangleFn(sqr(m2),sqr(m5),sqr(m6)) /2./m2); if(isnan(p56/GeV)||cth>1.||cth<-1.) return false; Energy pT56(p56*sqrt(1.-cth)*sqrt(1.+cth)); Lorentz5Momentum k5(pT56*sin(phi),pT56*cos(phi),p56*cth, sqrt(p56*p56+sqr(m5)),m5); Lorentz5Momentum k6(-k5); k6.setE(sqrt(p56*p56+sqr(m6))); k6.setTau(m6); Boost boostToV2RF(R_.k2r().boostVector()); k5.boost(boostToV2RF); k5.rescaleRho(); k6.boost(boostToV2RF); k6.rescaleRho(); // Assign the momenta to the children: children_[0]->set5Momentum(k3); children_[1]->set5Momentum(k4); children_[2]->set5Momentum(k5); children_[3]->set5Momentum(k6); return true; } // Override 2->2 production matrix here: void MEPP2VVPowheg::recalculateVertex() { // Zero the squared amplitude; this equals sum_hel_amps_sqr if all // is working as it should: Complex productionMatrix2(0.,0.); for(unsigned int k1hel=0;k1hel<3;++k1hel) for(unsigned int k2hel=0;k2hel<3;++k2hel) productionMatrix2 += productionMatrix_[k1hel][k1hel][k2hel][k2hel]; // Get the vector wavefunctions: VectorWaveFunction v1Polarization; VectorWaveFunction v2Polarization; v1Polarization=VectorWaveFunction(R_.k1r(),V1_->dataPtr(),outgoing); v2Polarization=VectorWaveFunction(R_.k2r(),V2_->dataPtr(),outgoing); vector<VectorWaveFunction> v1; vector<VectorWaveFunction> v2; for(unsigned int ix=0;ix<3;ix++) { v1Polarization.reset(ix); v2Polarization.reset(ix); v1.push_back(v1Polarization); v2.push_back(v2Polarization); } AbstractFFVVertexPtr ffv1 = V1_->id()==23 ? FFZvertex_ : FFWvertex_; AbstractFFVVertexPtr ffv2 = V2_->id()==23 ? FFZvertex_ : FFWvertex_; bool vetoed(true); while(vetoed) { // Decay the bosons isotropically in their rest frames: isotropicDecayer(); // Get the spinor wavefunctions: SpinorWaveFunction k3Spinor(children_[0]->momentum(),children_[0]->dataPtr(),outgoing); SpinorBarWaveFunction k4Spinor(children_[1]->momentum(),children_[1]->dataPtr(),outgoing); SpinorWaveFunction k5Spinor(children_[2]->momentum(),children_[2]->dataPtr(),outgoing); SpinorBarWaveFunction k6Spinor(children_[3]->momentum(),children_[3]->dataPtr(),outgoing); vector<SpinorWaveFunction> k3,k5; vector<SpinorBarWaveFunction> k4,k6; for(unsigned int ix=0;ix<2;ix++) { k3Spinor.reset(ix); k4Spinor.reset(ix); k3.push_back(k3Spinor); k4.push_back(k4Spinor); k5Spinor.reset(ix); k6Spinor.reset(ix); k5.push_back(k5Spinor); k6.push_back(k6Spinor); } DecayMatrixElement decayAmps(PDT::Spin1,PDT::Spin1Half,PDT::Spin1Half); for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k3hel=0;k3hel<2;++k3hel) { for(unsigned int k4hel=0;k4hel<2;++k4hel) { decayAmps(k1hel,k3hel,k4hel) = ffv1->evaluate(EWScale_,k3[k3hel],k4[k4hel],v1[k1hel]); } } } Complex V1decayMatrix[3][3]; for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k1helpr=0;k1helpr<3;++k1helpr) { Complex theElement(0.,0.); for(unsigned int k3hel=0;k3hel<2;++k3hel) { for(unsigned int k4hel=0;k4hel<2;++k4hel) { theElement += decayAmps(k1hel,k3hel,k4hel) *conj(decayAmps(k1helpr,k3hel,k4hel)); } } V1decayMatrix[k1hel][k1helpr] = theElement; } } Complex V1decayMatrix2(0.,0.); for(unsigned int k1hel=0;k1hel<3;++k1hel) V1decayMatrix2 += V1decayMatrix[k1hel][k1hel]; for(unsigned int k2hel=0;k2hel<3;++k2hel) { for(unsigned int k5hel=0;k5hel<2;++k5hel) { for(unsigned int k6hel=0;k6hel<2;++k6hel) { decayAmps(k2hel,k5hel,k6hel) = ffv2->evaluate(EWScale_,k5[k5hel],k6[k6hel],v2[k2hel]); } } } Complex V2decayMatrix[3][3]; for(unsigned int k2hel=0;k2hel<3;++k2hel) { for(unsigned int k2helpr=0;k2helpr<3;++k2helpr) { Complex theElement(0.,0.); for(unsigned int k5hel=0;k5hel<2;++k5hel) { for(unsigned int k6hel=0;k6hel<2;++k6hel) { theElement += decayAmps(k2hel,k5hel,k6hel) *conj(decayAmps(k2helpr,k5hel,k6hel)); } } V2decayMatrix[k2hel][k2helpr] = theElement; } } Complex V2decayMatrix2(0.,0.); for(unsigned int k2hel=0;k2hel<3;++k2hel) V2decayMatrix2 += V2decayMatrix[k2hel][k2hel]; // Contract the production matrix and the decay matrices: Complex meTimesV1V2denominators(0.,0.); for(unsigned int k1hel=0;k1hel<3;++k1hel) { for(unsigned int k1helpr=0;k1helpr<3;++k1helpr) { for(unsigned int k2hel=0;k2hel<3;++k2hel) { for(unsigned int k2helpr=0;k2helpr<3;++k2helpr) { meTimesV1V2denominators += productionMatrix_[k1hel][k1helpr][k2hel][k2helpr] *V1decayMatrix[k1hel][k1helpr] *V2decayMatrix[k2hel][k2helpr]; } } } } if(imag(meTimesV1V2denominators)/real(meTimesV1V2denominators)>1.e-7) cout << "MEPP2VVPowheg warning\n" << "the matrix element's imaginary part is large " << meTimesV1V2denominators << endl; if(imag(productionMatrix2)/real(productionMatrix2)>1.e-7) cout << "MEPP2VVPowheg warning\n" << "the production matrix element's imaginary part is large " << productionMatrix2 << endl; if(imag(V1decayMatrix2)/real(V1decayMatrix2)>1.e-7) cout << "MEPP2VVPowheg warning\n" << "the V1 decay matrix element's imaginary part is large " << V1decayMatrix2 << endl; if(imag(V2decayMatrix2)/real(V2decayMatrix2)>1.e-7) cout << "MEPP2VVPowheg warning\n" << "the V2 decay matrix element's imaginary part is large " << V2decayMatrix2 << endl; // Need branching ratio at least in here I would think ---> double decayWeight( real(meTimesV1V2denominators) / real(productionMatrix2*V1decayMatrix2*V2decayMatrix2)); if(decayWeight>1.) cout << "MEPP2VVPowheg::recalculateVertex decayWeight > 1., decayWeight = " << decayWeight << endl; if(decayWeight<0.) cout << "MEPP2VVPowheg::recalculateVertex decayWeight < 0., decayWeight = " << decayWeight << endl; if(UseRandom::rnd()<decayWeight) vetoed = false; else vetoed = true; } return; } Energy2 MEPP2VVPowheg::triangleFn(Energy2 m12,Energy2 m22, Energy2 m32) { Energy4 lambda2(m12*m12+m22*m22+m32*m32-2.*m12*m22-2.*m12*m32-2.*m22*m32); if(lambda2>=ZERO) { return sqrt(lambda2); } else { generator()->log() << "MEPP2VVPowheg::triangleFn " << "kinematic instability, imaginary triangle function\n"; return -999999.*GeV2; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEqq2gZ2ffPowheg.cc����������������������������������������0000644�0001750�0001750�00000033407�11754474775�024323� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEqq2gZ2ffPowheg.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEqq2gZ2ffPowheg class. // #include "MEqq2gZ2ffPowheg.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/Utilities/Maths.h" using namespace Herwig; using Herwig::Math::ReLi2; MEqq2gZ2ffPowheg::MEqq2gZ2ffPowheg() : _gluon(), TR_(0.5), CF_(4./3.), _contrib(1) ,_nlo_alphaS_opt(0), _fixed_alphaS(0.115895), _a(0.5) ,_p(0.7) , _eps(1.0e-8), _scaleopt(1), _fixedScale(100.*GeV), _scaleFact(1.) { massOption(vector<unsigned int>(2,1)); } void MEqq2gZ2ffPowheg::doinit() { // gluon ParticleData object _gluon = getParticleData(ParticleID::g); MEqq2gZ2ff::doinit(); } Energy2 MEqq2gZ2ffPowheg::scale() const { return _scaleopt == 0 ? sqr(_fixedScale) : _scaleFact*sHat(); } void MEqq2gZ2ffPowheg::persistentOutput(PersistentOStream & os) const { os << _contrib << _nlo_alphaS_opt << _fixed_alphaS << _a << _p << _gluon << _scaleopt << ounit(_fixedScale,GeV) << _scaleFact; } void MEqq2gZ2ffPowheg::persistentInput(PersistentIStream & is, int) { is >> _contrib >> _nlo_alphaS_opt >> _fixed_alphaS >> _a >> _p >> _gluon >> _scaleopt >> iunit(_fixedScale,GeV) >> _scaleFact; } ClassDescription<MEqq2gZ2ffPowheg> MEqq2gZ2ffPowheg::initMEqq2gZ2ffPowheg; // Definition of the static class description member. void MEqq2gZ2ffPowheg::Init() { static ClassDocumentation<MEqq2gZ2ffPowheg> documentation ("The MEqq2gZ2ffPowheg class implements the matrix element for" "q qbar to Standard Model fermions via Z and photon exchange using" " helicity amplitude techniques including the NLO correction in" " the POWHEG formalism", "The qq$\\to\\gamma/Z\\to$ff POWHEG matrix element is described in \\cite{Hamilton:2008pd}.", "%\\cite{Hamilton:2008pd}\n" "\\bibitem{Hamilton:2008pd}\n" " K.~Hamilton, P.~Richardson and J.~Tully,\n" " %``A Positive-Weight Next-to-Leading Order Monte Carlo Simulation of Drell-Yan\n" " %Vector Boson Production,''\n" " JHEP {\\bf 0810} (2008) 015\n" " [arXiv:0806.0290 [hep-ph]].\n" " %%CITATION = JHEPA,0810,015;%%\n" ); static Switch<MEqq2gZ2ffPowheg,unsigned int> interfaceContribution ("Contribution", "Which contributions to the cross section to include", &MEqq2gZ2ffPowheg::_contrib, 1, false, false); static SwitchOption interfaceContributionLeadingOrder (interfaceContribution, "LeadingOrder", "Just generate the leading order cross section", 0); static SwitchOption interfaceContributionPositiveNLO (interfaceContribution, "PositiveNLO", "Generate the positive contribution to the full NLO cross section", 1); static SwitchOption interfaceContributionNegativeNLO (interfaceContribution, "NegativeNLO", "Generate the negative contribution to the full NLO cross section", 2); static Switch<MEqq2gZ2ffPowheg,unsigned int> interfaceNLOalphaSopt ("NLOalphaSopt", "Whether to use a fixed or a running QCD coupling for the NLO weight", &MEqq2gZ2ffPowheg::_nlo_alphaS_opt, 0, false, false); static SwitchOption interfaceNLOalphaSoptRunningAlphaS (interfaceNLOalphaSopt, "RunningAlphaS", "Use the usual running QCD coupling evaluated at scale scale()", 0); static SwitchOption interfaceNLOalphaSoptFixedAlphaS (interfaceNLOalphaSopt, "FixedAlphaS", "Use a constant QCD coupling for comparison/debugging purposes", 1); static Parameter<MEqq2gZ2ffPowheg,double> interfaceFixedNLOalphaS ("FixedNLOalphaS", "The value of alphaS to use for the nlo weight if _nlo_alphaS_opt=1", &MEqq2gZ2ffPowheg::_fixed_alphaS, 0.115895, 0., 1.0, false, false, Interface::limited); static Parameter<MEqq2gZ2ffPowheg,double> interfaceCorrectionCoefficient ("CorrectionCoefficient", "The magnitude of the correction term to reduce the negative contribution", &MEqq2gZ2ffPowheg::_a, 0.5, -10., 10.0, false, false, Interface::limited); static Parameter<MEqq2gZ2ffPowheg,double> interfaceCorrectionPower ("CorrectionPower", "The power of the correction term to reduce the negative contribution", &MEqq2gZ2ffPowheg::_p, 0.7, 0.0, 1.0, false, false, Interface::limited); static Switch<MEqq2gZ2ffPowheg,unsigned int> interfaceScaleOption ("ScaleOption", "Option for the scale to be used", &MEqq2gZ2ffPowheg::_scaleopt, 1, false, false); static SwitchOption interfaceScaleOptionFixed (interfaceScaleOption, "Fixed", "Use a fixed scale", 0); static SwitchOption interfaceScaleOptionsHat (interfaceScaleOption, "Dynamic", "Use the off-shell vector boson mass as the scale", 1); static Parameter<MEqq2gZ2ffPowheg,Energy> interfaceFixedScale ("FixedScale", "The fixed scale to use if required", &MEqq2gZ2ffPowheg::_fixedScale, GeV, 100.0*GeV, 10.0*GeV, 1000.0*GeV, false, false, Interface::limited); static Parameter<MEqq2gZ2ffPowheg,double> interfaceScaleFactor ("ScaleFactor", "The factor used before sHat if using a running scale", &MEqq2gZ2ffPowheg::_scaleFact, 1.0, 0.0, 10.0, false, false, Interface::limited); } int MEqq2gZ2ffPowheg::nDim() const { return 3; } bool MEqq2gZ2ffPowheg::generateKinematics(const double * r) { _xt=*(r+1); _v =*(r+2); return MEqq2gZ2ff::generateKinematics(r); } CrossSection MEqq2gZ2ffPowheg::dSigHatDR() const { // Get Born momentum fractions xbar_a and xbar_b: _xb_a = lastX1(); _xb_b = lastX2(); return MEqq2gZ2ff::dSigHatDR()*NLOweight(); } double MEqq2gZ2ffPowheg::NLOweight() const { // If only leading order is required return 1: if(_contrib==0) return 1.; useMe(); // Get particle data for QCD particles: _parton_a=mePartonData()[0]; _parton_b=mePartonData()[1]; // get BeamParticleData objects for PDF's _hadron_A=dynamic_ptr_cast<Ptr<BeamParticleData>::transient_const_pointer> (lastParticles().first->dataPtr()); _hadron_B=dynamic_ptr_cast<Ptr<BeamParticleData>::transient_const_pointer> (lastParticles().second->dataPtr()); // If necessary swap the particle data vectors so that _xb_a, // mePartonData[0], beam[0] relate to the inbound quark: if(!(lastPartons().first ->dataPtr()==_parton_a&& lastPartons().second->dataPtr()==_parton_b)) { swap(_xb_a ,_xb_b); swap(_hadron_A,_hadron_B); } // calculate the PDF's for the Born process _oldq = _hadron_A->pdf()->xfx(_hadron_A,_parton_a,scale(),_xb_a)/_xb_a; _oldqbar = _hadron_B->pdf()->xfx(_hadron_B,_parton_b,scale(),_xb_b)/_xb_b; // Calculate alpha_S _alphaS2Pi = _nlo_alphaS_opt==1 ? _fixed_alphaS : SM().alphaS(scale()); _alphaS2Pi /= 2.*Constants::pi; // Calculate the invariant mass of the dilepton pair _mll2 = sHat(); _mu2 = scale(); // Calculate the integrand // q qbar contribution double wqqvirt = Vtilde_qq(); double wqqcollin = Ctilde_qq(x(_xt,1.),1.) + Ctilde_qq(x(_xt,0.),0.); double wqqreal = Ftilde_qq(_xt,_v); double wqq = wqqvirt+wqqcollin+wqqreal; // q g contribution double wqgcollin = Ctilde_qg(x(_xt,0.),0.); double wqgreal = Ftilde_qg(_xt,_v); double wqg = wqgreal+wqgcollin; // g qbar contribution double wgqbarcollin = Ctilde_gq(x(_xt,1.),1.); double wgqbarreal = Ftilde_gq(_xt,_v); double wgqbar = wgqbarreal+wgqbarcollin; // total double wgt = 1.+(wqq+wqg+wgqbar); //trick to try and reduce neg wgt contribution if(_xt<1.-_eps) wgt += _a*(1./pow(1.-_xt,_p)-(1.-pow(_eps,1.-_p))/(1.-_p)/(1.-_eps)); assert(!isinf(wgt)&&!isnan(wgt)); // return the answer return _contrib==1 ? max(0.,wgt) : max(0.,-wgt); } double MEqq2gZ2ffPowheg::x(double xt, double v) const { double x0(xbar(v)); return x0+(1.-x0)*xt; } double MEqq2gZ2ffPowheg::x_a(double x, double v) const { if(x==1.) return _xb_a; if(v==0.) return _xb_a; if(v==1.) return _xb_a/x; return (_xb_a/sqrt(x))*sqrt((1.-(1.-x)*(1.-v))/(1.-(1.-x)*v)); } double MEqq2gZ2ffPowheg::x_b(double x, double v) const { if(x==1.) return _xb_b; if(v==0.) return _xb_b/x; if(v==1.) return _xb_b; return (_xb_b/sqrt(x))*sqrt((1.-(1.-x)*v)/(1.-(1.-x)*(1.-v))); } double MEqq2gZ2ffPowheg::xbar(double v) const { double xba2(sqr(_xb_a)), xbb2(sqr(_xb_b)), omv(-999.); double xbar1(-999.), xbar2(-999.); if(v==1.) return _xb_a; if(v==0.) return _xb_b; omv = 1.-v; xbar1=4.* v*xba2/ (sqrt(sqr(1.+xba2)*4.*sqr(omv)+16.*(1.-2.*omv)*xba2)+2.*omv*(1.-_xb_a)*(1.+_xb_a)); xbar2=4.*omv*xbb2/ (sqrt(sqr(1.+xbb2)*4.*sqr( v)+16.*(1.-2.* v)*xbb2)+2.* v*(1.-_xb_b)*(1.+_xb_b)); return max(xbar1,xbar2); } double MEqq2gZ2ffPowheg::Ltilde_qq(double x, double v) const { if(x==1.) return 1.; double xa(x_a(x,v)),xb(x_b(x,v)); double newq = (_hadron_A->pdf()->xfx(_hadron_A,_parton_a,scale(), xa)/ xa); double newqbar = (_hadron_B->pdf()->xfx(_hadron_B,_parton_b,scale(), xb)/ xb); return( newq * newqbar / _oldq / _oldqbar ); } double MEqq2gZ2ffPowheg::Ltilde_qg(double x, double v) const { double xa(x_a(x,v)),xb(x_b(x,v)); double newq = (_hadron_A->pdf()->xfx(_hadron_A,_parton_a,scale(), xa)/ xa); double newg2 = (_hadron_B->pdf()->xfx(_hadron_B,_gluon ,scale(), xb)/ xb); return( newq * newg2 / _oldq / _oldqbar ); } double MEqq2gZ2ffPowheg::Ltilde_gq(double x, double v) const { double xa(x_a(x,v)),xb(x_b(x,v)); double newg1 = (_hadron_A->pdf()->xfx(_hadron_A,_gluon ,scale(), xa)/ xa); double newqbar = (_hadron_B->pdf()->xfx(_hadron_B,_parton_b,scale(), xb)/ xb); return( newg1 * newqbar / _oldq / _oldqbar ); } double MEqq2gZ2ffPowheg::Vtilde_qq() const { return _alphaS2Pi*CF_*(-3.*log(_mu2/_mll2)+(2.*sqr(Constants::pi)/3.)-8.); } double MEqq2gZ2ffPowheg::Ccalbar_qg(double x) const { return (sqr(x)+sqr(1.-x))*(log(_mll2/(_mu2*x))+2.*log(1.-x))+2.*x*(1.-x); } double MEqq2gZ2ffPowheg::Ctilde_qg(double x, double v) const { return _alphaS2Pi*TR_ * ((1.-xbar(v))/x) * Ccalbar_qg(x)*Ltilde_qg(x,v); } double MEqq2gZ2ffPowheg::Ctilde_gq(double x, double v) const { return _alphaS2Pi*TR_ * ((1.-xbar(v))/x) * Ccalbar_qg(x)*Ltilde_gq(x,v); } double MEqq2gZ2ffPowheg::Ctilde_qq(double x, double v) const { double wgt = ((1.-x)/x+(1.+x*x)/(1.-x)/x*(2.*log(1.-x)-log(x)))*Ltilde_qq(x,v) - 4.*log(1.-x)/(1.-x) + 2./(1.-xbar(v))*log(1.-xbar(v))*log(1.-xbar(v)) + (2./(1.-xbar(v))*log(1.-xbar(v))-2./(1.-x)+(1.+x*x)/x/(1.-x)*Ltilde_qq(x,v)) *log(_mll2/_mu2); return _alphaS2Pi*CF_*(1.-xbar(v))*wgt; } double MEqq2gZ2ffPowheg::Fcal_qq(double x, double v) const { return (sqr(1.-x)*(1.-2.*v*(1.-v))+2.*x)/x*Ltilde_qq(x,v); } double MEqq2gZ2ffPowheg::Fcal_qg(double x, double v) const { return ((1.-xbar(v))/x)* (2.*x*(1.-x)*v+sqr((1.-x)*v)+sqr(x)+sqr(1.-x))*Ltilde_qg(x,v); } double MEqq2gZ2ffPowheg::Fcal_gq(double x, double v) const { return ((1.-xbar(v))/x)* (2.*x*(1.-x)*(1.-v)+sqr((1.-x)*(1.-v))+sqr(x)+sqr(1.-x))*Ltilde_gq(x,v); } double MEqq2gZ2ffPowheg::Ftilde_qg(double xt, double v) const { return _alphaS2Pi*TR_* ( Fcal_qg(x(xt,v),v) - Fcal_qg(x(xt,0.),0.) )/v; } double MEqq2gZ2ffPowheg::Ftilde_gq(double xt, double v) const { return _alphaS2Pi*TR_* ( Fcal_gq(x(xt,v),v) - Fcal_gq(x(xt,1.),1.) )/(1.-v); } double MEqq2gZ2ffPowheg::Ftilde_qq(double xt, double v) const { double eps(1e-10); // is emission into regular or singular region? if(xt>=0. && xt<1.-eps && v>eps && v<1.-eps) { // x<1, v>0, v<1 (regular emission, neither soft or collinear): return _alphaS2Pi*CF_* (( ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,1.),1.) ) / (1.-v)+ ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,0.),0.) ) / v )/(1.-xt) + ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) + ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v); } else { // make sure emission is actually in the allowed phase space: if(!(v>=0. && v<=1. && xt>=0. && xt<=1.)) { ostringstream s; s << "MEqq2gZ2ffPowheg::Ftilde_qq : \n" << "xt(" << xt << ") and / or v(" << v << ") not in the phase space."; generator()->logWarning(Exception(s.str(),Exception::warning)); return 0.; } // is emission soft singular? if(xt>=1.-eps) { // x=1: if(v<=eps) { // x==1, v=0 (soft and collinear with particle b): return _alphaS2Pi*CF_* ( ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) ); } else if(v>=1.-eps) { // x==1, v=1 (soft and collinear with particle a): return _alphaS2Pi*CF_* ( ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v ); } else { // x==1, 0<v<1 (soft wide angle emission): return _alphaS2Pi*CF_* ( ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) + ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v ); } } else { // x<1: if(v<=eps) { // x<1 but v=0 (collinear with particle b, but not soft): return _alphaS2Pi*CF_* ( ( ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,1.),1.) ) / (1.-v) )/(1.-xt) + ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) ); } else if(v>=1.-eps) { // x<1 but v=1 (collinear with particle a, but not soft): return _alphaS2Pi*CF_* ( ( ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,0.),0.) ) / v )/(1.-xt) + ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v ); } } } return 0.; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/Makefile.in������������������������������������������������0000644�0001750�0001750�00000054742�11756461700�023052� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/Powheg DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwPowhegMEHadron_la_LIBADD = am_HwPowhegMEHadron_la_OBJECTS = MEqq2gZ2ffPowheg.lo \ MEqq2W2ffPowheg.lo MEPP2HiggsPowheg.lo MEPP2WHPowheg.lo \ MEPP2ZHPowheg.lo MEPP2VVPowheg.lo VVKinematics.lo \ MEPP2HiggsVBFPowheg.lo HwPowhegMEHadron_la_OBJECTS = $(am_HwPowhegMEHadron_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwPowhegMEHadron_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwPowhegMEHadron_la_LDFLAGS) \ $(LDFLAGS) -o $@ HwPowhegMELepton_la_LIBADD = am_HwPowhegMELepton_la_OBJECTS = MEee2gZ2qqPowheg.lo HwPowhegMELepton_la_OBJECTS = $(am_HwPowhegMELepton_la_OBJECTS) HwPowhegMELepton_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwPowhegMELepton_la_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwPowhegMEHadron_la_SOURCES) \ $(HwPowhegMELepton_la_SOURCES) DIST_SOURCES = $(HwPowhegMEHadron_la_SOURCES) \ $(HwPowhegMELepton_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwPowhegMEHadron.la HwPowhegMELepton.la HwPowhegMEHadron_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 5:0:1 HwPowhegMEHadron_la_SOURCES = \ MEqq2gZ2ffPowheg.cc MEqq2gZ2ffPowheg.h \ MEqq2W2ffPowheg.cc MEqq2W2ffPowheg.h \ MEPP2HiggsPowheg.cc MEPP2HiggsPowheg.h \ MEPP2WHPowheg.cc MEPP2WHPowheg.h \ MEPP2ZHPowheg.cc MEPP2ZHPowheg.h \ MEPP2VVPowheg.cc MEPP2VVPowheg.h \ VVKinematics.cc VVKinematics.h \ MEPP2HiggsVBFPowheg.h MEPP2HiggsVBFPowheg.cc HwPowhegMELepton_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 1:0:0 HwPowhegMELepton_la_SOURCES = \ MEee2gZ2qqPowheg.cc MEee2gZ2qqPowheg.h all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/Powheg/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/Powheg/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwPowhegMEHadron.la: $(HwPowhegMEHadron_la_OBJECTS) $(HwPowhegMEHadron_la_DEPENDENCIES) $(EXTRA_HwPowhegMEHadron_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwPowhegMEHadron_la_LINK) -rpath $(pkglibdir) $(HwPowhegMEHadron_la_OBJECTS) $(HwPowhegMEHadron_la_LIBADD) $(LIBS) HwPowhegMELepton.la: $(HwPowhegMELepton_la_OBJECTS) $(HwPowhegMELepton_la_DEPENDENCIES) $(EXTRA_HwPowhegMELepton_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwPowhegMELepton_la_LINK) -rpath $(pkglibdir) $(HwPowhegMELepton_la_OBJECTS) $(HwPowhegMELepton_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2HiggsPowheg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2HiggsVBFPowheg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2VVPowheg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2WHPowheg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2ZHPowheg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEee2gZ2qqPowheg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEqq2W2ffPowheg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEqq2gZ2ffPowheg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VVKinematics.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEPP2HiggsVBFPowheg.h��������������������������������������0000644�0001750�0001750�00000015205�11754474775�024500� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEPP2HiggsVBFPowheg_H #define HERWIG_MEPP2HiggsVBFPowheg_H // // This is the declaration of the MEPP2HiggsVBFPowheg class. // #include "Herwig++/MatrixElement/Hadron/MEPP2HiggsVBF.h" #include "ThePEG/PDF/BeamParticleData.h" namespace Herwig { using namespace ThePEG; /** * Typedef for BeamParticleData */ typedef Ptr<BeamParticleData>::transient_const_pointer tcBeamPtr; /** * Here is the documentation of the MEPP2HiggsVBFPowheg class. * * @see \ref MEPP2HiggsVBFPowhegInterfaces "The interfaces" * defined for MEPP2HiggsVBFPowheg. */ class MEPP2HiggsVBFPowheg: public Herwig::MEPP2HiggsVBF { public: /** * The default constructor. */ MEPP2HiggsVBFPowheg(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR() 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(); protected: /** * The NLO weight */ double NLOWeight() const; /** * Leading order matrix element */ Energy4 loMatrixElement(const Lorentz5Momentum &p1, const Lorentz5Momentum &p2, const Lorentz5Momentum &q1, const Lorentz5Momentum &q2, double G1, double G2) 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(); //@} 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2HiggsVBFPowheg> initMEPP2HiggsVBFPowheg; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2HiggsVBFPowheg & operator=(const MEPP2HiggsVBFPowheg &); private: /** * The Born variables */ //@{ /** * \f$x_B\f$ */ double _xB; /** * Partons */ tcPDPtr _partons[5]; mutable Energy2 _q2; //@} /** * The radiative variables */ //@{ /** * The \f$x_p\f$ or \f$z\f$ real integration variable */ double _xp; /** * The \f$z_p\f$ real integration variable */ double _zp; /** * The \f$fi\f$ real integration variable */ double _phi; //@} /** * The variables to get the right boost */ //@{ /** * LO momenta */ Lorentz5Momentum _loMomenta[4]; /** * The transfered (virtual boson) momentum */ mutable Lorentz5Momentum _pa; /** * The incoming quark momentum */ mutable Lorentz5Momentum _pb; /** * The outgoing quark momentum */ Lorentz5Momentum _pc; /** * The incoming quark momentum */ Lorentz5Momentum _pbother; /** * The outgoing quark momentum */ Lorentz5Momentum _pcother; //@} /** * Electroweak parameters */ //@{ /** * The square of the Z mass */ Energy2 _mz2; /** * The square of the W mass */ Energy2 _mw2; //@} /** * The first hadron */ tcBeamPtr _hadron; /** * Selects a dynamic or fixed factorization scale */ unsigned int scaleOpt_; /** * The factorization scale */ Energy muF_; /** * Prefactor if variable scale used */ double scaleFact_; /** * Whether to generate the positive, negative or leading order contribution */ unsigned int contrib_; /** * Power for sampling \f$x_p\f$ */ double power_; /** * Jacobian for \f$x_p\f$ integral */ double jac_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2HiggsVBFPowheg. */ template <> struct BaseClassTrait<Herwig::MEPP2HiggsVBFPowheg,1> { /** Typedef of the first base class of MEPP2HiggsVBFPowheg. */ typedef Herwig::MEPP2HiggsVBF NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2HiggsVBFPowheg class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2HiggsVBFPowheg> : public ClassTraitsBase<Herwig::MEPP2HiggsVBFPowheg> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2HiggsVBFPowheg"; } /** * The name of a file containing the dynamic library where the class * MEPP2HiggsVBFPowheg is implemented. It may also include several, space-separated, * libraries if the class MEPP2HiggsVBFPowheg depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so HwPowhegMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2HiggsVBFPowheg_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEPP2VVPowheg.h��������������������������������������������0000644�0001750�0001750�00000053161�11754474775�023437� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEPP2VVPowheg_H #define HERWIG_MEPP2VVPowheg_H // // This is the declaration of the MEPP2VVPowheg class. // #include "Herwig++/MatrixElement/Hadron/MEPP2VV.h" #include "ThePEG/PDF/BeamParticleData.h" #include "Herwig++/MatrixElement/Powheg/VVKinematics.h" #include "Herwig++/Utilities/Maths.h" #include "Herwig++/Models/StandardModel/StandardCKM.h" namespace Herwig { using namespace ThePEG; using Math::ReLi2; using Constants::pi; /** * Here is the documentation of the MEPP2VVPowheg class. * * @see \ref MEPP2VVPowhegInterfaces "The interfaces" * defined for MEPP2VVPowheg. */ class MEPP2VVPowheg: public MEPP2VV { /** * Typedef for the BeamParticleData object */ typedef Ptr<BeamParticleData>::transient_const_pointer tcBeamPtr; public: /** * The default constructor. */ MEPP2VVPowheg(); /** @name Member functions for the generation of hard QCD radiation */ //@{ /** * Has a POWHEG style correction */ virtual bool hasPOWHEGCorrection() {return true;} /** * Apply the POWHEG style correction */ virtual HardTreePtr generateHardest(ShowerTreePtr); //@} public: /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * This member check the collinear limits of the * real emission matrix elements are equal to the * appropriate combinations of Born ME's multiplied * by the splitting functions. */ bool sanityCheck() const; /** * Return the CKM matrix elements. */ Complex CKM(int ix,int iy) const { return ckm_[ix][iy]; } 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 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(); //@} public: /** * Function to set the born variables. */ void getKinematics(double xt, double y, double theta2); /** * Calculate the correction weight with which leading-order * configurations are re-weighted. */ double NLOweight() const; /** * Calculate the ratio of the NLO luminosity to the LO * luminosity function for the \f$q\bar{q}\f$ initiated channel. */ double Lhat_ab(tcPDPtr a, tcPDPtr b, realVVKinematics Kinematics) const; /** * Calculate the universal soft-virtual contribution to the NLO weight. */ double Vtilde_universal(realVVKinematics S) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Ctilde_Ltilde_qq_on_x(tcPDPtr a,tcPDPtr b,realVVKinematics C) const; /** * Function for calculation of the \f$gq\f$ initiated real * contribution. */ double Ctilde_Ltilde_gq_on_x(tcPDPtr a,tcPDPtr b,realVVKinematics C) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Rtilde_Ltilde_qqb_on_x(tcPDPtr a,tcPDPtr b) const; /** * Function for calculation of the \f$qg\f$ initiated real * contribution. */ double Rtilde_Ltilde_qg_on_x(tcPDPtr a,tcPDPtr b) const; /** * Function for calculation of the \f$gqb\f$ initiated real * contribution. */ double Rtilde_Ltilde_gqb_on_x(tcPDPtr a,tcPDPtr b) const; /** * The regular part of the virtual correction matrix element(s). * For WZ production this is given by Equation B.2 in NPB 383 (1992) * 3-44 *** modulo a factor 1/(2s) ***, which is a flux factor that * those authors absorb in the matrix element. */ double M_V_regular(realVVKinematics S) const; /** * Member variable to store the * regular part of the virtual correction matrix element(s). * For WZ production this is given by Equation B.2 in NPB 383 (1992) * 3-44 *** modulo a factor 1/(2s) ***, which is a flux factor that * those authors absorb in the matrix element. */ mutable double M_V_regular_; /** * The matrix element q + qb -> n + g times tk*uk */ Energy2 t_u_M_R_qqb(realVVKinematics R) const; /** * Member variable to store the matrix element q + qb -> n + g times tk*uk */ mutable Energy2 t_u_M_R_qqb_; /** * The matrix element q + g -> n + q times tk*uk */ Energy2 t_u_M_R_qg(realVVKinematics R) const; /** * Member variable to store the matrix element q + g -> n + q times tk*uk */ mutable Energy2 t_u_M_R_qg_; /** * The matrix element g + qb -> n + q times tk*uk */ Energy2 t_u_M_R_gqb(realVVKinematics R) const; /** * Member variable to store the matrix element g + qb -> n + q times tk*uk */ mutable Energy2 t_u_M_R_gqb_; /** * The matrix element q + qb -> n + g times (tk*uk)^2 - using helicity amplitudes */ Energy2 t_u_M_R_qqb_hel_amp(realVVKinematics R) const; /** * Member variable to store the * matrix element q + qb -> n + g times (tk*uk)^2 - using helicity amplitudes */ mutable Energy2 t_u_M_R_qqb_hel_amp_; /** * The matrix element q + g -> n + q times (tk*uk)^2 - using helicity amplitudes */ Energy2 t_u_M_R_qg_hel_amp(realVVKinematics R) const; /** * Member variable to store the * matrix element q + g -> n + q times (tk*uk)^2 - using helicity amplitudes */ mutable Energy2 t_u_M_R_qg_hel_amp_; /** * The matrix element g + qb -> n + qb times (tk*uk)^2 - using helicity amplitudes */ Energy2 t_u_M_R_gqb_hel_amp(realVVKinematics R) const; /** * Member variable to store the * matrix element g + qb -> n + qb times (tk*uk)^2 - using helicity amplitudes */ mutable Energy2 t_u_M_R_gqb_hel_amp_; /** * The leading order matrix element - using helicity amplitudes */ double lo_me() const; /** * The Born matrix element as given in Equation 3.1 - 3.3 in NPB 383 * (1992) *** modulo a factor 1/(2s) ***, which is a flux factor that * those authors absorb in the matrix element. */ double M_Born_WZ(bornVVKinematics B) const; /** * Member variable to store the * Born matrix element as given in Equation 3.1 - 3.3 in NPB 383 * (1992) *** modulo a factor 1/(2s) ***, which is a flux factor that * those authors absorb in the matrix element. */ mutable double M_Born_; /** * The Born matrix element as given in Equation 2.18 - 2.19 in NPB 357 * (1991) *** modulo a factor 1/(2s) ***, which is a flux factor that * those authors absorb in the matrix element. */ double M_Born_ZZ(bornVVKinematics B) const; /** * M_V_regular_ZZ is the regular part of the one-loop ZZ matrix element * exactly as defined in Eqs. B.1 & B.2 of NPB 357(1991)409-438 *** * modulo a factor 1/(2s) ***, which is a flux factor that * those authors absorb in the matrix element. */ double M_V_regular_ZZ(realVVKinematics S) const; /** * t_u_M_R_qqb_ZZ is the q + qb -> n + g times tk*uk real emission * matrix element as defined in Eq. C.1 of NPB 357(1991)409-438 *** * modulo a factor 1/(2s) ***, which is a flux factor that * those authors absorb in the matrix element. */ Energy2 t_u_M_R_qqb_ZZ(realVVKinematics R) const; /** * The Born matrix element as given in Equation 3.2 - 3.8 in NPB 410 * (1993) *** modulo a factor 1/(2s) ***, which is a flux factor that * those authors absorb in the matrix element. */ double M_Born_WW(bornVVKinematics B) const; /** * M_V_regular_WW is the regular part of the one-loop WW matrix element * exactly as defined in Eqs. C.1 - C.7 of of NPB 410(1993)280-324 *** * modulo a factor 1/(2s) ***, which is a flux factor that * those authors absorb in the matrix element. */ double M_V_regular_WW(realVVKinematics S) const; /** * t_u_M_R_qqb_WW is the q + qb -> n + g times tk*uk real emission * matrix element as defined in Eq. D.1-D.5 of NPB 410(1993)280-324 *** * modulo a factor 1/(2s) ***, which is a flux factor that * those authors absorb in the matrix element. */ Energy2 t_u_M_R_qqb_WW(realVVKinematics R) const; /** * Return the factorion scale squared. */ Energy2 mu_F2() const; /** * Return the renormalisation scale squared. */ Energy2 mu_UV2() const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const { return new_ptr(*this); } //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2VVPowheg> initMEPP2VVPowheg; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2VVPowheg & operator=(const MEPP2VVPowheg &); private: /** * Parameters for the NLO weight */ //@{ /** * Parameter to determine when to use limiting value of real emission * matrix elements, to avoid rounding error issues. */ double tiny; /** * The BeamParticleData object for the plus and minus direction hadrons */ tcBeamPtr hadron_A_; tcBeamPtr hadron_B_; /** * Born / virtual 2->2 kinematics. */ bornVVKinematics B_; /** * Soft limit of the 2->3 real emission kinematics. */ realVVKinematics S_; /** * Soft-collinear limit of the 2->3 kinematics (emission in +z direction). */ realVVKinematics SCp_; /** * The collinear limit of the 2->3 kinematics (emission in -z direction). */ realVVKinematics SCm_; /** * The collinear limit of the 2->3 kinematics (emission in +z direction). */ realVVKinematics Cp_; /** * The collinear limit of the 2->3 kinematics (emission in -z direction). */ realVVKinematics Cm_; /** * The resolved 2->3 real emission kinematics: */ realVVKinematics H_; /** * The ParticleData object for the plus and minus lo partons */ tcPDPtr ab_, bb_; /** * The ParticleData object for the quark and antiquark * (which can be in a different order to ab_ and bb_). */ tcPDPtr quark_, antiquark_; /** * Values of the PDF's before radiation */ double lo_lumi_; /** * The value of the leading order qqbar->VV matrix element */ mutable double lo_me2_; /** * The CF_ colour factor */ double CF_; /** * The TR_ colour factor */ double TR_; /** * The number of colours */ double NC_; /** * The weak coupling and the sin (squared) of the Weinberg angle */ mutable double gW_, sin2ThetaW_; /** * The up and down, left handed, quark-boson couplings */ mutable double guL_, gdL_; /** * The up and down, right handed, quark-boson couplings (for WW & ZZ) */ mutable double guR_, gdR_; /** * The TGC coupling */ mutable double eZ_; /** * The TGC coupling squared. This is useful for debugging purposes * when one wants to turn of t-channel * TGC interference contributions * but leave the pure TGC contributions intact. It is also needed in * order to transform WZ matrix elements into WW ones. */ mutable double eZ2_; /** * The CKM factor (Fij^2) */ mutable double Fij2_; /** * Whether to generate the positive, negative or leading order contribution */ unsigned int contrib_; /** * Whether to generate all channels contributions or just qqb or just * qg+gqb contributions */ unsigned int channels_; /** * Whether to use a fixed or a running QCD coupling for the NLO weight */ unsigned int nlo_alphaS_opt_; /** * The value of alphaS to use for the nlo weight if nlo_alphaS_opt_=1 */ double fixed_alphaS_; /** * Flag to remove or multiply in MCFM branching fractions for testing */ unsigned int removebr_; /** * Selects a dynamic (sHat) or fixed factorization scale */ unsigned int scaleopt_; /** * The factorization scale */ Energy mu_F_; /** * The renormalization scale */ Energy mu_UV_; /** * The pT of V1 in a radiative event in the lab frame (for scale setting only) */ Energy2 k1r_perp2_lab_; /** * The pT of V2 in a radiative event in the lab frame (for scale setting only) */ Energy2 k2r_perp2_lab_; /** * The ckm matrix elements (unsquared, to allow interference) */ vector< vector<Complex> > ckm_; /** * Option to impose helicity conservation on the real NLO ME's (greatly improves evaluation time). */ bool helicityConservation_; /** * The q + qb -> v1 + v2 + g helicity amplitudes */ mutable ProductionMatrixElement qqb_hel_amps_; /** * The q + g -> v1 + v2 + q helicity amplitudes */ mutable ProductionMatrixElement qg_hel_amps_; /** * The g + qb -> v1 + v2 + qb helicity amplitudes */ mutable ProductionMatrixElement gqb_hel_amps_; //@} /** * The vertices */ //@{ /** * The photon fermion-antifermion vertex */ AbstractFFVVertexPtr FFPvertex_; /** * The W fermion-antifermion vertex */ AbstractFFVVertexPtr FFWvertex_; /** * The Z fermion-antifermionvertex */ AbstractFFVVertexPtr FFZvertex_; /** * The triple electroweak gauge boson vertex */ AbstractVVVVertexPtr WWWvertex_; /** * The quark-antiquark gluon vertex */ AbstractFFVVertexPtr FFGvertex_; //@} /** * The value of \f$\alpha_S\f$ used for the calculation */ mutable double alphaS_; protected: /** * Returns the matrix element for a given type of process, * rapidity of the jet \f$y_j\f$ and transverse momentum \f$p_T\f$ * @param emis_type the type of emission, * (0 is \f$q\bar{q}\to Vg\f$, 1 is \f$qg\to Vq\f$ and 2 is \f$g\bar{q}\to V\bar{q}\f$) * @param pT The transverse momentum of the jet * @param R The object containing the kinematics */ double getResult(int emis_type, realVVKinematics R, Energy pT); /** * generates the hardest emission (yj,p) * @param pnew The momenta of the new particles * @param emissiontype The type of emission, as for getResult * @return Whether not an emission was generated */ bool getEvent(vector<Lorentz5Momentum> & pnew,unsigned int & emissiontype); /** * sets the QCD, EW and PDF scales * @param pT The pT of the current step in the veto algorithm */ void setTheScales(Energy pT); /** * The matrix element q + qb -> n + g times tk*uk */ Energy2 t_u_M_R_qqb_hel_amp(realVVKinematics R, bool getMatrix) const; /** * The matrix element q + g -> n + q times tk*uk */ Energy2 t_u_M_R_qg_hel_amp(realVVKinematics R, bool getMatrix) const; /** * The matrix element g + qb -> n + q times tk*uk */ Energy2 t_u_M_R_gqb_hel_amp(realVVKinematics R, bool getMatrix) const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ double lo_me(bool getMatrix) const; /** * Recalculate hard vertex to include spin correlations for radiative events. */ void recalculateVertex(); /** * Member which selects a two body decay mode for each vector * boson and distributes decay products isotropically */ bool isotropicDecayer(); /** * The triangle function lambda(x,y,z)=sqrt(x^2+y^2+z^2-2*x*y-2*y*z-2*x*z) */ Energy2 triangleFn(Energy2,Energy2,Energy2); private: /** * If this boolean is true the n+1 body helicity amplitudes will be * used to calculate a hard vertex based on those kinematics for spin * correlations in the decays. */ bool realMESpinCorrelations_; /** * The colour & spin averaged n-body (leading order) matrix element squared. */ double lo_me_; /** * The resolved 2->3 real emission kinematics. */ realVVKinematics R_; /** * This specifies the emitting configuration: * 1: q + qbar -> V1 + V2 + g * 2: q + g -> V1 + V2 + q * 3: g + qbar -> V1 + V2 + qbar. */ unsigned int channel_; /** * Identifies the space-like mother of the branching * as quark (+1) or antiquark (-1): */ int fermionNumberOfMother_; /** * Pointer to the object calculating the strong coupling */ ShowerAlphaPtr showerAlphaS_; /** * Constants for the sampling. The distribution is assumed to have the * form \f$\frac{c}{{\rm GeV}}\times\left(\frac{{\rm GeV}}{p_T}\right)^n\f$ */ //@{ /** * The power, \f$n\f$, for the sampling */ double power_; /** * The prefactor, \f$c\f$ for the \f$q\bar{q}\f$ channel */ double preqqbar_; /** * The prefactor, \f$c\f$ for the \f$qg\f$ channel */ double preqg_; /** * The prefactor, \f$c\f$ for the \f$g\bar{q}\f$ channel */ double pregqbar_; /** * The QCD beta function divided by 4pi, (11-2/3*nf)/4/pi, with nf = 5. */ double b0_; /** * The fundamental QCD scale in the one-loop alpha_{S} used for the crude * (not the very crude) overestimate of the Sudakov exponent. The default * value is set so such that alphaS(MZ), neglecting all flavour threshold * effects i.e. MZ*exp(-1/2/b0_/alphaS(MZ)). */ Energy LambdaQCD_; /** * The prefactors as a vector for easy use */ vector<double> prefactor_; //@} /** * Properties of the incoming particles */ //@{ /** * Pointers to the ShowerProgenitor objects for the partons */ ShowerProgenitorPtr qProgenitor_; ShowerProgenitorPtr qbProgenitor_; /** * Pointers to the Shower particle objects for the partons */ ShowerParticlePtr showerQuark_; ShowerParticlePtr showerAntiquark_; /** * Pointers to the BeamParticleData objects */ tcBeamPtr qHadron_; tcBeamPtr qbHadron_; //@} /** * Properties of the boson and jets */ //@{ /** * Pointers to the Shower particle objects for the partons */ PPtr gluon_; ShowerParticlePtr V1_; ShowerParticlePtr V2_; vector<PPtr> children_; vector<PPtr> photons_; /** * Flag indicating if the q & qbar are flipped or not i.e. this * is true if q enters from the -z direction in the lab frame. */ bool flipped_; /** * the rapidity of the jet */ double Yk_; /** * The transverse momentum of the jet */ Energy pT_; //@} /** * The transverse momentum of the jet */ Energy min_pT_; // Work out the scales we want to use in the matrix elements and the pdfs: /** * Scale for alpha_S: pT^2 of the diboson system. */ Energy2 QCDScale_; /** * Scale for real emission PDF: */ Energy2 PDFScale_; /** * Scale of electroweak vertices: mVV^2 the invariant mass of the diboson system. */ Energy2 EWScale_; /** * A matrix to hold the home-grown production matrix element */ mutable Complex productionMatrix_[3][3][3][3]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2VVPowheg. */ template <> struct BaseClassTrait<Herwig::MEPP2VVPowheg,1> { /** Typedef of the first base class of MEPP2VVPowheg. */ typedef Herwig::MEPP2VV NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2VVPowheg class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2VVPowheg> : public ClassTraitsBase<Herwig::MEPP2VVPowheg> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2VVPowheg"; } /** * The name of a file containing the dynamic library where the class * MEPP2VVPowheg is implemented. It may also include several, space-separated, * libraries if the class MEPP2VVPowheg depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so HwPowhegMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2VVPowheg_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEPP2WHPowheg.cc�������������������������������������������0000644�0001750�0001750�00000032565�11754474775�023565� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2WHPowheg class. // #include "MEPP2WHPowheg.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Repository/EventGenerator.h" using namespace Herwig; MEPP2WHPowheg::MEPP2WHPowheg() : _gluon(), TR_(0.5), CF_(4./3.), _contrib(1) ,_nlo_alphaS_opt(0), _fixed_alphaS(0.115895), _a(0.5) ,_p(0.7) , _eps(1.0e-8), _scaleopt(1), _fixedScale(100.*GeV), _scaleFact(1.) {} ClassDescription<MEPP2WHPowheg> MEPP2WHPowheg::initMEPP2WHPowheg; // Definition of the static class description member. void MEPP2WHPowheg::persistentOutput(PersistentOStream & os) const { os << _contrib << _nlo_alphaS_opt << _fixed_alphaS << _a << _p << _gluon << _scaleopt << ounit(_fixedScale,GeV) << _scaleFact; } void MEPP2WHPowheg::persistentInput(PersistentIStream & is, int) { is >> _contrib >> _nlo_alphaS_opt >> _fixed_alphaS >> _a >> _p >> _gluon >> _scaleopt >> iunit(_fixedScale,GeV) >> _scaleFact; } void MEPP2WHPowheg::Init() { static ClassDocumentation<MEPP2WHPowheg> documentation ("The MEPP2WHPowheg class implements the matrix element for the Bjorken" " process q qbar -> WH", "The PP$\\to$W Higgs POWHEG matrix element is described in \\cite{Hamilton:2009za}.", "%\\cite{Hamilton:2009za}\n" "\\bibitem{Hamilton:2009za}\n" " K.~Hamilton, P.~Richardson and J.~Tully,\n" " ``A Positive-Weight Next-to-Leading Order Monte Carlo Simulation for Higgs\n" " Boson Production,''\n" " JHEP {\\bf 0904} (2009) 116\n" " [arXiv:0903.4345 [hep-ph]].\n" " %%CITATION = JHEPA,0904,116;%%\n" ); static Switch<MEPP2WHPowheg,unsigned int> interfaceContribution ("Contribution", "Which contributions to the cross section to include", &MEPP2WHPowheg::_contrib, 1, false, false); static SwitchOption interfaceContributionLeadingOrder (interfaceContribution, "LeadingOrder", "Just generate the leading order cross section", 0); static SwitchOption interfaceContributionPositiveNLO (interfaceContribution, "PositiveNLO", "Generate the positive contribution to the full NLO cross section", 1); static SwitchOption interfaceContributionNegativeNLO (interfaceContribution, "NegativeNLO", "Generate the negative contribution to the full NLO cross section", 2); static Switch<MEPP2WHPowheg,unsigned int> interfaceNLOalphaSopt ("NLOalphaSopt", "Whether to use a fixed or a running QCD coupling for the NLO weight", &MEPP2WHPowheg::_nlo_alphaS_opt, 0, false, false); static SwitchOption interfaceNLOalphaSoptRunningAlphaS (interfaceNLOalphaSopt, "RunningAlphaS", "Use the usual running QCD coupling evaluated at scale scale()", 0); static SwitchOption interfaceNLOalphaSoptFixedAlphaS (interfaceNLOalphaSopt, "FixedAlphaS", "Use a constant QCD coupling for comparison/debugging purposes", 1); static Parameter<MEPP2WHPowheg,double> interfaceFixedNLOalphaS ("FixedNLOalphaS", "The value of alphaS to use for the nlo weight if _nlo_alphaS_opt=1", &MEPP2WHPowheg::_fixed_alphaS, 0.115895, 0., 1.0, false, false, Interface::limited); static Parameter<MEPP2WHPowheg,double> interfaceCorrectionCoefficient ("CorrectionCoefficient", "The magnitude of the correction term to reduce the negative contribution", &MEPP2WHPowheg::_a, 0.5, -10., 10.0, false, false, Interface::limited); static Parameter<MEPP2WHPowheg,double> interfaceCorrectionPower ("CorrectionPower", "The power of the correction term to reduce the negative contribution", &MEPP2WHPowheg::_p, 0.7, 0.0, 1.0, false, false, Interface::limited); static Switch<MEPP2WHPowheg,unsigned int> interfaceFactorizationScaleOption ("FactorizationScaleOption", "Option for the scale to be used", &MEPP2WHPowheg::_scaleopt, 1, false, false); static SwitchOption interfaceScaleOptionFixed (interfaceFactorizationScaleOption, "Fixed", "Use a fixed scale", 0); static SwitchOption interfaceScaleOptionsHat (interfaceFactorizationScaleOption, "Dynamic", "Use the mass of the vector boson-Higgs boson system", 1); static Parameter<MEPP2WHPowheg,Energy> interfaceFactorizationScaleValue ("FactorizationScaleValue", "The fixed scale to use if required", &MEPP2WHPowheg::_fixedScale, GeV, 100.0*GeV, 10.0*GeV, 1000.0*GeV, false, false, Interface::limited); static Parameter<MEPP2WHPowheg,double> interfaceScaleFactor ("ScaleFactor", "The factor used before sHat if using a running scale", &MEPP2WHPowheg::_scaleFact, 1.0, 0.0, 10.0, false, false, Interface::limited); } void MEPP2WHPowheg::doinit() { // gluon ParticleData object _gluon = getParticleData(ParticleID::g); MEPP2WH::doinit(); } Energy2 MEPP2WHPowheg::scale() const { return _scaleopt == 0 ? sqr(_fixedScale) : _scaleFact*sHat(); } int MEPP2WHPowheg::nDim() const { return 7; } bool MEPP2WHPowheg::generateKinematics(const double * r) { _xt=*(r+5); _v =*(r+6); return MEPP2WH::generateKinematics(r); } CrossSection MEPP2WHPowheg::dSigHatDR() const { // Get Born momentum fractions xbar_a and xbar_b: _xb_a = lastX1(); _xb_b = lastX2(); return MEPP2WH::dSigHatDR()*NLOweight(); } double MEPP2WHPowheg::NLOweight() const { // If only leading order is required return 1: if(_contrib==0) return 1.; useMe(); // Get particle data for QCD particles: _parton_a=mePartonData()[0]; _parton_b=mePartonData()[1]; // get BeamParticleData objects for PDF's _hadron_A=dynamic_ptr_cast<Ptr<BeamParticleData>::transient_const_pointer> (lastParticles().first->dataPtr()); _hadron_B=dynamic_ptr_cast<Ptr<BeamParticleData>::transient_const_pointer> (lastParticles().second->dataPtr()); // If necessary swap the particle data vectors so that _xb_a, // mePartonData[0], beam[0] relate to the inbound quark: if(!(lastPartons().first ->dataPtr()==_parton_a&& lastPartons().second->dataPtr()==_parton_b)) { swap(_xb_a ,_xb_b); swap(_hadron_A,_hadron_B); } // calculate the PDF's for the Born process _oldq = _hadron_A->pdf()->xfx(_hadron_A,_parton_a,scale(),_xb_a)/_xb_a; _oldqbar = _hadron_B->pdf()->xfx(_hadron_B,_parton_b,scale(),_xb_b)/_xb_b; // Calculate alpha_S _alphaS2Pi = _nlo_alphaS_opt==1 ? _fixed_alphaS : SM().alphaS(scale()); _alphaS2Pi /= 2.*Constants::pi; // Calculate the invariant mass of the dilepton pair _mll2 = sHat(); _mu2 = scale(); // Calculate the integrand // q qbar contribution double wqqvirt = Vtilde_qq(); double wqqcollin = Ctilde_qq(x(_xt,1.),1.) + Ctilde_qq(x(_xt,0.),0.); double wqqreal = Ftilde_qq(_xt,_v); double wqq = wqqvirt+wqqcollin+wqqreal; // q g contribution double wqgcollin = Ctilde_qg(x(_xt,0.),0.); double wqgreal = Ftilde_qg(_xt,_v); double wqg = wqgreal+wqgcollin; // g qbar contribution double wgqbarcollin = Ctilde_gq(x(_xt,1.),1.); double wgqbarreal = Ftilde_gq(_xt,_v); double wgqbar = wgqbarreal+wgqbarcollin; // total double wgt = 1.+(wqq+wqg+wgqbar); // KMH - 06/08 - This seems to give wrong NLO results for // associated Higgs so I'm omitting it. // //trick to try and reduce neg wgt contribution // if(_xt<1.-_eps) // wgt += _a*(1./pow(1.-_xt,_p)-(1.-pow(_eps,1.-_p))/(1.-_p)/(1.-_eps)); // return the answer assert(!isinf(wgt)&&!isnan(wgt)); return _contrib==1 ? max(0.,wgt) : max(0.,-wgt); } double MEPP2WHPowheg::x(double xt, double v) const { double x0(xbar(v)); return x0+(1.-x0)*xt; } double MEPP2WHPowheg::x_a(double x, double v) const { if(x==1.) return _xb_a; if(v==0.) return _xb_a; if(v==1.) return _xb_a/x; return (_xb_a/sqrt(x))*sqrt((1.-(1.-x)*(1.-v))/(1.-(1.-x)*v)); } double MEPP2WHPowheg::x_b(double x, double v) const { if(x==1.) return _xb_b; if(v==0.) return _xb_b/x; if(v==1.) return _xb_b; return (_xb_b/sqrt(x))*sqrt((1.-(1.-x)*v)/(1.-(1.-x)*(1.-v))); } double MEPP2WHPowheg::xbar(double v) const { double xba2(sqr(_xb_a)), xbb2(sqr(_xb_b)), omv(-999.); double xbar1(-999.), xbar2(-999.); if(v==1.) return _xb_a; if(v==0.) return _xb_b; omv = 1.-v; xbar1=4.* v*xba2/ (sqrt(sqr(1.+xba2)*4.*sqr(omv)+16.*(1.-2.*omv)*xba2)+2.*omv*(1.-_xb_a)*(1.+_xb_a)); xbar2=4.*omv*xbb2/ (sqrt(sqr(1.+xbb2)*4.*sqr( v)+16.*(1.-2.* v)*xbb2)+2.* v*(1.-_xb_b)*(1.+_xb_b)); return max(xbar1,xbar2); } double MEPP2WHPowheg::Ltilde_qq(double x, double v) const { if(x==1.) return 1.; double xa(x_a(x,v)),xb(x_b(x,v)); double newq = (_hadron_A->pdf()->xfx(_hadron_A,_parton_a,scale(), xa)/ xa); double newqbar = (_hadron_B->pdf()->xfx(_hadron_B,_parton_b,scale(), xb)/ xb); return( newq * newqbar / _oldq / _oldqbar ); } double MEPP2WHPowheg::Ltilde_qg(double x, double v) const { double xa(x_a(x,v)),xb(x_b(x,v)); double newq = (_hadron_A->pdf()->xfx(_hadron_A,_parton_a,scale(), xa)/ xa); double newg2 = (_hadron_B->pdf()->xfx(_hadron_B,_gluon ,scale(), xb)/ xb); return( newq * newg2 / _oldq / _oldqbar ); } double MEPP2WHPowheg::Ltilde_gq(double x, double v) const { double xa(x_a(x,v)),xb(x_b(x,v)); double newg1 = (_hadron_A->pdf()->xfx(_hadron_A,_gluon ,scale(), xa)/ xa); double newqbar = (_hadron_B->pdf()->xfx(_hadron_B,_parton_b,scale(), xb)/ xb); return( newg1 * newqbar / _oldq / _oldqbar ); } double MEPP2WHPowheg::Vtilde_qq() const { return _alphaS2Pi*CF_*(-3.*log(_mu2/_mll2)+(2.*sqr(Constants::pi)/3.)-8.); } double MEPP2WHPowheg::Ccalbar_qg(double x) const { return (sqr(x)+sqr(1.-x))*(log(_mll2/(_mu2*x))+2.*log(1.-x))+2.*x*(1.-x); } double MEPP2WHPowheg::Ctilde_qg(double x, double v) const { return _alphaS2Pi*TR_ * ((1.-xbar(v))/x) * Ccalbar_qg(x)*Ltilde_qg(x,v); } double MEPP2WHPowheg::Ctilde_gq(double x, double v) const { return _alphaS2Pi*TR_ * ((1.-xbar(v))/x) * Ccalbar_qg(x)*Ltilde_gq(x,v); } double MEPP2WHPowheg::Ctilde_qq(double x, double v) const { double wgt = ((1.-x)/x+(1.+x*x)/(1.-x)/x*(2.*log(1.-x)-log(x)))*Ltilde_qq(x,v) - 4.*log(1.-x)/(1.-x) + 2./(1.-xbar(v))*log(1.-xbar(v))*log(1.-xbar(v)) + (2./(1.-xbar(v))*log(1.-xbar(v))-2./(1.-x)+(1.+x*x)/x/(1.-x)*Ltilde_qq(x,v)) *log(_mll2/_mu2); return _alphaS2Pi*CF_*(1.-xbar(v))*wgt; } double MEPP2WHPowheg::Fcal_qq(double x, double v) const { return (sqr(1.-x)*(1.-2.*v*(1.-v))+2.*x)/x*Ltilde_qq(x,v); } double MEPP2WHPowheg::Fcal_qg(double x, double v) const { return ((1.-xbar(v))/x)* (2.*x*(1.-x)*v+sqr((1.-x)*v)+sqr(x)+sqr(1.-x))*Ltilde_qg(x,v); } double MEPP2WHPowheg::Fcal_gq(double x, double v) const { return ((1.-xbar(v))/x)* (2.*x*(1.-x)*(1.-v)+sqr((1.-x)*(1.-v))+sqr(x)+sqr(1.-x))*Ltilde_gq(x,v); } double MEPP2WHPowheg::Ftilde_qg(double xt, double v) const { return _alphaS2Pi*TR_* ( Fcal_qg(x(xt,v),v) - Fcal_qg(x(xt,0.),0.) )/v; } double MEPP2WHPowheg::Ftilde_gq(double xt, double v) const { return _alphaS2Pi*TR_* ( Fcal_gq(x(xt,v),v) - Fcal_gq(x(xt,1.),1.) )/(1.-v); } double MEPP2WHPowheg::Ftilde_qq(double xt, double v) const { double eps(1e-10); // is emission into regular or singular region? if(xt>=0. && xt<1.-eps && v>eps && v<1.-eps) { // x<1, v>0, v<1 (regular emission, neither soft or collinear): return _alphaS2Pi*CF_* (( ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,1.),1.) ) / (1.-v)+ ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,0.),0.) ) / v )/(1.-xt) + ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) + ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v); } else { // make sure emission is actually in the allowed phase space: if(!(v>=0. && v<=1. && xt>=0. && xt<=1.)) { ostringstream s; s << "MEPP2WHPowheg::Ftilde_qq : \n" << "xt(" << xt << ") and / or v(" << v << ") not in the phase space."; generator()->logWarning(Exception(s.str(),Exception::warning)); return 0.; } // is emission soft singular? if(xt>=1.-eps) { // x=1: if(v<=eps) { // x==1, v=0 (soft and collinear with particle b): return _alphaS2Pi*CF_* ( ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) ); } else if(v>=1.-eps) { // x==1, v=1 (soft and collinear with particle a): return _alphaS2Pi*CF_* ( ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v ); } else { // x==1, 0<v<1 (soft wide angle emission): return _alphaS2Pi*CF_* ( ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) + ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v ); } } else { // x<1: if(v<=eps) { // x<1 but v=0 (collinear with particle b, but not soft): return _alphaS2Pi*CF_* ( ( ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,1.),1.) ) / (1.-v) )/(1.-xt) + ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) ); } else if(v>=1.-eps) { // x<1 but v=1 (collinear with particle a, but not soft): return _alphaS2Pi*CF_* ( ( ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,0.),0.) ) / v )/(1.-xt) + ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v ); } } } return 0.; } �������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEPP2WHPowheg.h��������������������������������������������0000644�0001750�0001750�00000023157�11754474775�023424� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEPP2WHPowheg_H #define HERWIG_MEPP2WHPowheg_H // // This is the declaration of the MEPP2WHPowheg class. // #include "Herwig++/MatrixElement/Hadron/MEPP2WH.h" #include "ThePEG/PDF/BeamParticleData.h" namespace Herwig { using namespace ThePEG; /** * The MEPP2WHPowheg class provides the next-to-leading order * matrix elements for \f$W^\pm\f$ in assoication with a Higgs boson * in the PoOWHEG scheme. * * @see \ref MEPP2WHPowhegInterfaces "The interfaces" * defined for MEPP2WHPowheg. */ class MEPP2WHPowheg: public MEPP2WH { public: /** * Default constructor */ MEPP2WHPowheg(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * The number of internal degreed of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given 'nDim()' uniform * random numbers in the interval ]0,1[. To help the phase space * generator, the 'dSigHatDR()' should be a smooth function of these * numbers, although this is not strictly necessary. Return * false if the chosen points failed the kinematical cuts. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(). Uses * me(). */ virtual CrossSection dSigHatDR() 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(); protected: /** * Calculate the correction weight with which leading-order * configurations are re-weighted. */ double NLOweight() const; /** * Calculate the variable \f$x=M_{B}^2/s\f$ from the integration variables. */ double x(double xt, double v) const; /** * Calculate the momentum fraction of the first parton. */ double x_a(double x, double v) const; /** * Calculate the momentum fraction of second parton. */ double x_b(double x, double v) const; /** * Calculate the minimum of \f$x\f$. */ double xbar(double v) const; /** * Calculate the ratio of the radiative luminosity funcion to the * Born luminosity function for the \f$qg\f$ initiated channel. */ double Ltilde_qg(double x, double v) const; /** * Calculate the ratio of the radiative luminosity funcion to the * Born luminosity function for the \f$g\bar{q}\f$ initiated channel. */ double Ltilde_gq(double x, double v) const; /** * Calculate the ratio of the radiative luminosity funcion to the * Born luminosity function for the \f$q\bar{q}\f$ initiated channel. */ double Ltilde_qq(double x, double v) const; /** * Calculate the soft-virtual contribution to the NLO weight. */ double Vtilde_qq() const; /** * Function for calculation of the \f$g\bar{q}\f$ and \f$g\bar{q}\f$ * initiated real contribution. */ double Ccalbar_qg(double x) const; /** * Function for calculation of the \f$qg\f$ * initiated real contribution. */ double Fcal_qg(double x, double v) const; /** * Function for calculation of the \f$g\bar{q}\f$ initiated real * contribution. */ double Fcal_gq(double x, double v) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Fcal_qq(double x, double v) const; /** * Function for calculation of the \f$qg\f$ initiated real * contribution. */ double Ftilde_qg(double xt, double v) const; /** * Function for calculation of the \f$g\bar{q}\f$ initiated real * contribution. */ double Ftilde_gq(double xt, double v) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Ftilde_qq(double xt, double v) const; /** * Function for calculation of the \f$qg\f$ initiated real * contribution. */ double Ctilde_qg(double x, double v) const; /** * Function for calculation of the \f$g\bar{q}\f$ initiated real * contribution. */ double Ctilde_gq(double x, double v) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Ctilde_qq(double x, double v) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2WHPowheg> initMEPP2WHPowheg; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2WHPowheg & operator=(const MEPP2WHPowheg &); private: /** * The momentum fraction of the first parton in the Born process */ mutable double _xb_a; /** * The momentum fraction of the second parton in the Born process */ mutable double _xb_b; /** * The ParticleData object for the first parton in the Born process */ mutable tcPDPtr _parton_a; /** * The ParticleData object for the second parton in the Born process */ mutable tcPDPtr _parton_b; /** * The BeamParticleData object for the first hadron */ mutable Ptr<BeamParticleData>::transient_const_pointer _hadron_A; /** * The BeamParticleData object for the second hadron */ mutable Ptr<BeamParticleData>::transient_const_pointer _hadron_B; /** * the ParticleData object for the gluon */ tcPDPtr _gluon; /** * The \f$T_R\f$ colour factor */ const double TR_; /** * The \f$C_F\f$ colour factor */ const double CF_; /** * The value of \f$\frac{\alpha_S}{2\pi}\f$ used for the calculation */ mutable double _alphaS2Pi; /** * The mass squared of the lepton pair */ mutable Energy2 _mll2; /** * The renormalization/factorization scale */ mutable Energy2 _mu2; /** * Parameters for the NLO weight */ //@{ /** * Whether to generate the positive, negative or leading order contribution */ unsigned int _contrib; /** * Whether to use a fixed or a running QCD coupling for the NLO weight */ unsigned int _nlo_alphaS_opt; /** * The value of alphaS to use for the nlo weight if _nloalphaSopt=1 */ double _fixed_alphaS; /** * The magnitude of the correction term to reduce the negative contribution */ double _a; /** * The power of the correction term to reduce the negative contribution */ double _p; /** * Cut-off for the correction function */ double _eps; //@} /** * Choice of the scale */ //@{ /** * Type of scale */ unsigned int _scaleopt; /** * Fixed scale if used */ Energy _fixedScale; /** * Prefactor if variable scale used */ double _scaleFact; //@} /** * Radiation variables */ //@{ /** * The \f$\tilde{x}\f$ variable */ double _xt; /** * The \f$v\f$ angular variable */ double _v; //@} /** * Values of the PDF's before radiation */ //@{ /** * For the quark */ mutable double _oldq; /** * For the antiquark */ mutable double _oldqbar; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2WHPowheg. */ template <> struct BaseClassTrait<Herwig::MEPP2WHPowheg,1> { /** Typedef of the first base class of MEPP2WHPowheg. */ typedef Herwig::MEPP2WH NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2WHPowheg class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2WHPowheg> : public ClassTraitsBase<Herwig::MEPP2WHPowheg> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2WHPowheg"; } /** * The name of a file containing the dynamic library where the class * MEPP2WHPowheg is implemented. It may also include several, space-separated, * libraries if the class MEPP2WHPowheg depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so HwPowhegMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2WHPowheg_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEPP2ZHPowheg.h��������������������������������������������0000644�0001750�0001750�00000023057�11754474775�023426� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEPP2ZHPowheg_H #define HERWIG_MEPP2ZHPowheg_H // // This is the declaration of the MEPP2ZHPowheg class. // #include "Herwig++/MatrixElement/Hadron/MEPP2ZH.h" #include "ThePEG/PDF/BeamParticleData.h" namespace Herwig { using namespace ThePEG; /** * The MEPP2ZHPowheg class implements the matrix element * for \f$q\bar{q}\to Z^0h^0\f$. * * @see \ref MEPP2ZHPowhegInterfaces "The interfaces" * defined for MEPP2ZHPowheg. */ class MEPP2ZHPowheg: public MEPP2ZH { public: /** * The default constructor. */ MEPP2ZHPowheg(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * The number of internal degreed of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given 'nDim()' uniform * random numbers in the interval ]0,1[. To help the phase space * generator, the 'dSigHatDR()' should be a smooth function of these * numbers, although this is not strictly necessary. Return * false if the chosen points failed the kinematical cuts. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(). Uses * me(). */ virtual CrossSection dSigHatDR() 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(); protected: /** * Calculate the correction weight with which leading-order * configurations are re-weighted. */ double NLOweight() const; /** * Calculate the variable \f$x=M_{B}^2/s\f$ from the integration variables. */ double x(double xt, double v) const; /** * Calculate the momentum fraction of the first parton. */ double x_a(double x, double v) const; /** * Calculate the momentum fraction of second parton. */ double x_b(double x, double v) const; /** * Calculate the minimum of \f$x\f$. */ double xbar(double v) const; /** * Calculate the ratio of the radiative luminosity funcion to the * Born luminosity function for the \f$qg\f$ initiated channel. */ double Ltilde_qg(double x, double v) const; /** * Calculate the ratio of the radiative luminosity funcion to the * Born luminosity function for the \f$g\bar{q}\f$ initiated channel. */ double Ltilde_gq(double x, double v) const; /** * Calculate the ratio of the radiative luminosity funcion to the * Born luminosity function for the \f$q\bar{q}\f$ initiated channel. */ double Ltilde_qq(double x, double v) const; /** * Calculate the soft-virtual contribution to the NLO weight. */ double Vtilde_qq() const; /** * Function for calculation of the \f$g\bar{q}\f$ and \f$g\bar{q}\f$ * initiated real contribution. */ double Ccalbar_qg(double x) const; /** * Function for calculation of the \f$qg\f$ * initiated real contribution. */ double Fcal_qg(double x, double v) const; /** * Function for calculation of the \f$g\bar{q}\f$ initiated real * contribution. */ double Fcal_gq(double x, double v) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Fcal_qq(double x, double v) const; /** * Function for calculation of the \f$qg\f$ initiated real * contribution. */ double Ftilde_qg(double xt, double v) const; /** * Function for calculation of the \f$g\bar{q}\f$ initiated real * contribution. */ double Ftilde_gq(double xt, double v) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Ftilde_qq(double xt, double v) const; /** * Function for calculation of the \f$qg\f$ initiated real * contribution. */ double Ctilde_qg(double x, double v) const; /** * Function for calculation of the \f$g\bar{q}\f$ initiated real * contribution. */ double Ctilde_gq(double x, double v) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Ctilde_qq(double x, double v) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2ZHPowheg> initMEPP2ZHPowheg; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2ZHPowheg & operator=(const MEPP2ZHPowheg &); private: /** * The momentum fraction of the first parton in the Born process */ mutable double _xb_a; /** * The momentum fraction of the second parton in the Born process */ mutable double _xb_b; /** * The ParticleData object for the first parton in the Born process */ mutable tcPDPtr _parton_a; /** * The ParticleData object for the second parton in the Born process */ mutable tcPDPtr _parton_b; /** * The BeamParticleData object for the first hadron */ mutable Ptr<BeamParticleData>::transient_const_pointer _hadron_A; /** * The BeamParticleData object for the second hadron */ mutable Ptr<BeamParticleData>::transient_const_pointer _hadron_B; /** * the ParticleData object for the gluon */ tcPDPtr _gluon; /** * The \f$T_R\f$ colour factor */ const double TR_; /** * The \f$C_F\f$ colour factor */ const double CF_; /** * The value of \f$\frac{\alpha_S}{2\pi}\f$ used for the calculation */ mutable double _alphaS2Pi; /** * The mass squared of the lepton pair */ mutable Energy2 _mll2; /** * The renormalization/factorization scale */ mutable Energy2 _mu2; /** * Parameters for the NLO weight */ //@{ /** * Whether to generate the positive, negative or leading order contribution */ unsigned int _contrib; /** * Whether to use a fixed or a running QCD coupling for the NLO weight */ unsigned int _nlo_alphaS_opt; /** * The value of alphaS to use for the nlo weight if _nloalphaSopt=1 */ double _fixed_alphaS; /** * The magnitude of the correction term to reduce the negative contribution */ double _a; /** * The power of the correction term to reduce the negative contribution */ double _p; /** * Cut-off for the correction function */ double _eps; //@} /** * Choice of the scale */ //@{ /** * Type of scale */ unsigned int _scaleopt; /** * Fixed scale if used */ Energy _fixedScale; /** * Prefactor if variable scale used */ double _scaleFact; //@} /** * Radiation variables */ //@{ /** * The \f$\tilde{x}\f$ variable */ double _xt; /** * The \f$v\f$ angular variable */ double _v; //@} /** * Values of the PDF's before radiation */ //@{ /** * For the quark */ mutable double _oldq; /** * For the antiquark */ mutable double _oldqbar; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2ZHPowheg. */ template <> struct BaseClassTrait<Herwig::MEPP2ZHPowheg,1> { /** Typedef of the first base class of MEPP2ZHPowheg. */ typedef Herwig::MEPP2ZH NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2ZHPowheg class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2ZHPowheg> : public ClassTraitsBase<Herwig::MEPP2ZHPowheg> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2ZHPowheg"; } /** * The name of a file containing the dynamic library where the class * MEPP2ZHPowheg is implemented. It may also include several, space-separated, * libraries if the class MEPP2ZHPowheg depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so HwPowhegMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2ZHPowheg_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEqq2W2ffPowheg.h������������������������������������������0000644�0001750�0001750�00000023432�11754474775�024010� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEqq2W2ffPowheg.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEqq2W2ffPowheg_H #define HERWIG_MEqq2W2ffPowheg_H // // This is the declaration of the MEqq2W2ffPowheg class. // #include "Herwig++/MatrixElement/Hadron/MEqq2W2ff.h" #include "ThePEG/PDF/BeamParticleData.h" namespace Herwig { using namespace ThePEG; /** * The MEqq2W2ffPowheg class implements the matrix element for \f$q\bar{q'}\to W^\pm\f$ * including the decay of the \f$W^\pm\f$ to Standard Model fermions. * * @see \ref MEqq2W2ffPowhegInterfaces "The interfaces" * defined for MEqq2W2ffPowheg. */ class MEqq2W2ffPowheg: public MEqq2W2ff { public: /** * The default constructor. */ MEqq2W2ffPowheg(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * The number of internal degreed of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given 'nDim()' uniform * random numbers in the interval ]0,1[. To help the phase space * generator, the 'dSigHatDR()' should be a smooth function of these * numbers, although this is not strictly necessary. Return * false if the chosen points failed the kinematical cuts. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(). Uses * me(). */ virtual CrossSection dSigHatDR() 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(); protected: /** * Calculate the correction weight with which leading-order * configurations are re-weighted. */ double NLOweight() const; /** * Calculate the variable \f$x=M_{B}^2/s\f$ from the integration variables. */ double x(double xt, double v) const; /** * Calculate the momentum fraction of the first parton. */ double x_a(double x, double v) const; /** * Calculate the momentum fraction of second parton. */ double x_b(double x, double v) const; /** * Calculate the minimum of \f$x\f$. */ double xbar(double v) const; /** * Calculate the ratio of the radiative luminosity funcion to the * Born luminosity function for the \f$qg\f$ initiated channel. */ double Ltilde_qg(double x, double v) const; /** * Calculate the ratio of the radiative luminosity funcion to the * Born luminosity function for the \f$g\bar{q}\f$ initiated channel. */ double Ltilde_gq(double x, double v) const; /** * Calculate the ratio of the radiative luminosity funcion to the * Born luminosity function for the \f$q\bar{q}\f$ initiated channel. */ double Ltilde_qq(double x, double v) const; /** * Calculate the soft-virtual contribution to the NLO weight. */ double Vtilde_qq() const; /** * Function for calculation of the \f$g\bar{q}\f$ and \f$g\bar{q}\f$ * initiated real contribution. */ double Ccalbar_qg(double x) const; /** * Function for calculation of the \f$qg\f$ * initiated real contribution. */ double Fcal_qg(double x, double v) const; /** * Function for calculation of the \f$g\bar{q}\f$ initiated real * contribution. */ double Fcal_gq(double x, double v) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Fcal_qq(double x, double v) const; /** * Function for calculation of the \f$qg\f$ initiated real * contribution. */ double Ftilde_qg(double xt, double v) const; /** * Function for calculation of the \f$g\bar{q}\f$ initiated real * contribution. */ double Ftilde_gq(double xt, double v) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Ftilde_qq(double xt, double v) const; /** * Function for calculation of the \f$qg\f$ initiated real * contribution. */ double Ctilde_qg(double x, double v) const; /** * Function for calculation of the \f$g\bar{q}\f$ initiated real * contribution. */ double Ctilde_gq(double x, double v) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Ctilde_qq(double x, double v) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEqq2W2ffPowheg> initMEqq2W2ffPowheg; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEqq2W2ffPowheg & operator=(const MEqq2W2ffPowheg &); private: /** * The momentum fraction of the first parton in the Born process */ mutable double _xb_a; /** * The momentum fraction of the second parton in the Born process */ mutable double _xb_b; /** * The ParticleData object for the first parton in the Born process */ mutable tcPDPtr _parton_a; /** * The ParticleData object for the second parton in the Born process */ mutable tcPDPtr _parton_b; /** * The BeamParticleData object for the first hadron */ mutable Ptr<BeamParticleData>::transient_const_pointer _hadron_A; /** * The BeamParticleData object for the second hadron */ mutable Ptr<BeamParticleData>::transient_const_pointer _hadron_B; /** * the ParticleData object for the gluon */ tcPDPtr _gluon; /** * The \f$T_R\f$ colour factor */ const double TR_; /** * The \f$C_F\f$ colour factor */ const double CF_; /** * The value of \f$\frac{\alpha_S}{2\pi}\f$ used for the calculation */ mutable double _alphaS2Pi; /** * The mass squared of the lepton pair */ mutable Energy2 _mll2; /** * The renormalization/factorization scale */ mutable Energy2 _mu2; /** * Parameters for the NLO weight */ //@{ /** * Whether to generate the positive, negative or leading order contribution */ unsigned int _contrib; /** * Whether to use a fixed or a running QCD coupling for the NLO weight */ unsigned int _nlo_alphaS_opt; /** * The value of alphaS to use for the nlo weight if _nloalphaSopt=1 */ double _fixed_alphaS; /** * The magnitude of the correction term to reduce the negative contribution */ double _a; /** * The power of the correction term to reduce the negative contribution */ double _p; /** * Cut-off for the correction function */ double _eps; //@} /** * Choice of the scale */ //@{ /** * Type of scale */ unsigned int _scaleopt; /** * Fixed scale if used */ Energy _fixedScale; /** * Prefactor if variable scale used */ double _scaleFact; //@} /** * Radiation variables */ //@{ /** * The \f$\tilde{x}\f$ variable */ double _xt; /** * The \f$v\f$ angular variable */ double _v; //@} /** * Values of the PDF's before radiation */ //@{ /** * For the quark */ mutable double _oldq; /** * For the antiquark */ mutable double _oldqbar; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEqq2W2ffPowheg. */ template <> struct BaseClassTrait<Herwig::MEqq2W2ffPowheg,1> { /** Typedef of the first base class of MEqq2W2ffPowheg. */ typedef Herwig::MEqq2W2ff NthBase; }; /** This template specialization informs ThePEG about the name of * the MEqq2W2ffPowheg class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEqq2W2ffPowheg> : public ClassTraitsBase<Herwig::MEqq2W2ffPowheg> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEqq2W2ffPowheg"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the MEqq2W2ffPowheg class and any other class on which it depends * (except the base class). */ static string library() { return "HwMEHadron.so HwPowhegMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEqq2W2ffPowheg_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEee2gZ2qqPowheg.cc����������������������������������������0000644�0001750�0001750�00000030071�11754474775�024313� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEee2gZ2qqPowheg class. // #include "MEee2gZ2qqPowheg.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/PDF/PolarizedBeamParticleData.h" #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "Herwig++/Utilities/Maths.h" using namespace Herwig; IBPtr MEee2gZ2qqPowheg::clone() const { return new_ptr(*this); } IBPtr MEee2gZ2qqPowheg::fullclone() const { return new_ptr(*this); } void MEee2gZ2qqPowheg::persistentOutput(PersistentOStream & os) const { os << contrib_ << yPow_ << zPow_; } void MEee2gZ2qqPowheg::persistentInput(PersistentIStream & is, int) { is >> contrib_ >> yPow_ >> zPow_; } ClassDescription<MEee2gZ2qqPowheg> MEee2gZ2qqPowheg::initMEee2gZ2qqPowheg; // Definition of the static class description member. void MEee2gZ2qqPowheg::Init() { static ClassDocumentation<MEee2gZ2qqPowheg> documentation ("The MEee2gZ2qqPowheg class implements the next-to-leading order " "matrix element for e+e- > q qbar in the POWHEG scheme"); static Switch<MEee2gZ2qqPowheg,unsigned int> interfaceContribution ("Contribution", "Which contributions to the cross section to include", &MEee2gZ2qqPowheg::contrib_, 1, false, false); static SwitchOption interfaceContributionLeadingOrder (interfaceContribution, "LeadingOrder", "Just generate the leading order cross section", 0); static SwitchOption interfaceContributionPositiveNLO (interfaceContribution, "PositiveNLO", "Generate the positive contribution to the full NLO cross section", 1); static SwitchOption interfaceContributionNegativeNLO (interfaceContribution, "NegativeNLO", "Generate the negative contribution to the full NLO cross section", 2); static Parameter<MEee2gZ2qqPowheg,double> interfacezPower ("zPower", "The sampling power for z", &MEee2gZ2qqPowheg::zPow_, 0.5, 0.0, 1.0, false, false, Interface::limited); static Parameter<MEee2gZ2qqPowheg,double> interfaceyPower ("yPower", "The sampling power for y", &MEee2gZ2qqPowheg::yPow_, 0.9, 0.0, 1.0, false, false, Interface::limited); } int MEee2gZ2qqPowheg::nDim() const { return MEee2gZ2qq::nDim() + ( contrib_>0 ? 3 : 0 ); } bool MEee2gZ2qqPowheg::generateKinematics(const double * r) { // Generate the radiative integration variables: if(contrib_>0) { z_ = r[nDim()-1]; y_ = r[nDim()-2]; phi_ = r[nDim()-3]*Constants::twopi; } // Continue with lo matrix element code: return MEee2gZ2qq::generateKinematics(r); } double MEee2gZ2qqPowheg::me2() const { // if leading order just return the LO matrix element if(contrib_==0) return MEee2gZ2qq::me2(); // cast the vertices tcFFVVertexPtr Zvertex = dynamic_ptr_cast<tcFFVVertexPtr>(FFZVertex()); tcFFVVertexPtr Pvertex = dynamic_ptr_cast<tcFFVVertexPtr>(FFPVertex()); // compute the spinors vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; SpinorWaveFunction ein (rescaledMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction pin (rescaledMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction qkout(rescaledMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction qbout(rescaledMomenta()[3],mePartonData()[3],outgoing); for(unsigned int ix=0;ix<2;++ix) { ein.reset(ix) ; fin.push_back( ein ); pin.reset(ix) ; ain.push_back( pin ); qkout.reset(ix); fout.push_back(qkout); qbout.reset(ix); aout.push_back(qbout); } // me to be returned ProductionMatrixElement output(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); ProductionMatrixElement gammaME(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); ProductionMatrixElement ZbosonME(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); ProductionMatrixElement nloME(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); // wavefunctions for the intermediate particles VectorWaveFunction interZ,interG; // temporary storage of the different diagrams // sum over helicities to get the matrix element unsigned int inhel1,inhel2,outhel1,outhel2; double total[4]={0.,0.,0.,0.}; LorentzPolarizationVector momDiff = (rescaledMomenta()[2]-rescaledMomenta()[3])/2./ (rescaledMomenta()[2].mass()+rescaledMomenta()[3].mass()); for(inhel1=0;inhel1<2;++inhel1) { for(inhel2=0;inhel2<2;++inhel2) { // intermediate Z interZ = FFZVertex()->evaluate(scale(),1,Z0(),fin[inhel1],ain[inhel2]); // intermediate photon interG = FFPVertex()->evaluate(scale(),1,gamma(),fin[inhel1],ain[inhel2]); // scalars Complex scalar1 = interZ.wave().dot(momDiff); Complex scalar2 = interG.wave().dot(momDiff); for(outhel1=0;outhel1<2;++outhel1) { for(outhel2=0;outhel2<2;++outhel2) { // first the Z exchange diagram Complex diag1 = FFZVertex()->evaluate(scale(),aout[outhel2],fout[outhel1], interZ); // then the photon exchange diagram Complex diag2 = FFPVertex()->evaluate(scale(),aout[outhel2],fout[outhel1], interG); // extra stuff for NLO LorentzPolarizationVector left = aout[outhel2].wave(). leftCurrent(fout[outhel1].wave()); LorentzPolarizationVector right = aout[outhel2].wave().rightCurrent(fout[outhel1].wave()); Complex scalar = aout[outhel2].wave().scalar(fout[outhel1].wave()); // nlo specific pieces Complex diag3 = Complex(0.,1.)*Zvertex->norm()* (Zvertex->right()*( left.dot(interZ.wave())) + Zvertex-> left()*(right.dot(interZ.wave())) - ( Zvertex-> left()+Zvertex->right())*scalar1*scalar); diag3 += Complex(0.,1.)*Pvertex->norm()* (Pvertex->right()*( left.dot(interG.wave())) + Pvertex-> left()*(right.dot(interG.wave())) - ( Pvertex-> left()+Pvertex->right())*scalar2*scalar); // add up squares of individual terms total[1] += norm(diag1); ZbosonME(inhel1,inhel2,outhel1,outhel2) = diag1; total[2] += norm(diag2); gammaME (inhel1,inhel2,outhel1,outhel2) = diag2; // the full thing including interference diag1 += diag2; total[0] += norm(diag1); output(inhel1,inhel2,outhel1,outhel2)=diag1; // nlo piece total[3] += real(diag1*conj(diag3) + diag3*conj(diag1)); nloME(inhel1,inhel2,outhel1,outhel2)=diag3; } } } } // spin average for(int ix=0;ix<4;++ix) total[ix] *= 0.25; // special for polarization beams if needed tcPolarizedBeamPDPtr beam[2] = {dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[0]), dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[1])}; if( beam[0] || beam[1] ) { RhoDMatrix rho[2] = {beam[0] ? beam[0]->rhoMatrix() : RhoDMatrix(mePartonData()[0]->iSpin()), beam[1] ? beam[1]->rhoMatrix() : RhoDMatrix(mePartonData()[1]->iSpin())}; total[0] = output .average(rho[0],rho[1]); total[1] = ZbosonME.average(rho[0],rho[1]); total[2] = gammaME .average(rho[0],rho[1]); total[3] = real(output.average(nloME ,rho[0],rho[1]) + nloME .average(output,rho[0],rho[1])); } // colour average for(int ix=0;ix<4;++ix) total[ix]*= 3.; // save the stuff for diagram selection DVector save; save.push_back(total[2]); save.push_back(total[1]); meInfo(save); // now for the NLO bit double mu2 = 0.25*sqr(rescaledMomenta()[2].mass()+rescaledMomenta()[3].mass())/sHat(); double mu = sqrt(mu2); double mu4 = sqr(mu2); double lmu = log(mu); double v = sqrt(1.-4.*mu2),v2(sqr(v)); double omv = 4.*mu2/(1.+v); double f1,f2,fNS,VNS; double CF=4./3.; double aS = SM().alphaS(scale()); double r = omv/(1.+v),lr(log(r)); // normal form if(mu>1e-4) { f1 = CF*aS/Constants::pi* ( +1. + 3.*log(0.5*(1.+v)) - 1.5*log(0.5*(1.+v2)) + sqr(Constants::pi)/6. - 0.5*sqr(lr) - (1.+v2)/v*(lr*log(1.+v2) + sqr(Constants::pi)/12. -0.5*log(4.*mu2)*lr + 0.25*sqr(lr))); fNS = -0.5*(1.+2.*v2)*lr/v + 1.5*lr - 2./3.*sqr(Constants::pi) + 0.5*sqr(lr) + (1.+v2)/v*(Herwig::Math::ReLi2(r) + sqr(Constants::pi)/3. - 0.25*sqr(lr) + lr*log((2.*v/ (1.+v)))); VNS = 1.5*log(0.5*(1.+v2)) + 0.5*(1.+v2)/v*( 2.*lr*log(2.*(1.+v2)/sqr(1.+v)) + 2.*Herwig::Math::ReLi2(sqr(r)) - 2.*Herwig::Math::ReLi2(2.*v/(1.+v)) - sqr(Constants::pi)/6.) + log(1.-mu) - 2.*log(1.-2.*mu) - 4.*mu2/(1.+v2)*log(mu/(1.-mu)) - mu/(1.-mu) + 4.*(2.*mu2-mu)/(1.+v2) + 0.5*sqr(Constants::pi); f2 = CF*aS/Constants::pi*mu2*lr/v; } // small mass limit else { f1 = -CF*aS/Constants::pi/6.* ( - 6. - 24.*lmu*mu2 - 15.*mu4 - 12.*mu4*lmu - 24.*mu4*sqr(lmu) + 2.*mu4*sqr(Constants::pi) - 12.*mu2*mu4 - 96.*mu2*mu4*sqr(lmu) + 8.*mu2*mu4*sqr(Constants::pi) - 80.*mu2*mu4*lmu); fNS = - mu2/18.*( + 36.*lmu - 36. - 45.*mu2 + 216.*lmu*mu2 - 24.*mu2*sqr(Constants::pi) + 72.*mu2*sqr(lmu) - 22.*mu4 + 1032.*mu4 * lmu - 96.*mu4*sqr(Constants::pi) + 288.*mu4*sqr(lmu)); VNS = - mu2/1260.*(-6930. + 7560.*lmu + 2520.*mu - 16695.*mu2 + 1260.*mu2*sqr(Constants::pi) + 12600.*lmu*mu2 + 1344.*mu*mu2 - 52780.*mu4 + 36960.*mu4*lmu + 5040.*mu4*sqr(Constants::pi) - 12216.*mu*mu4); f2 = CF*aS*mu2/Constants::pi*( 2.*lmu + 4.*mu2*lmu + 2.*mu2 + 12.*mu4*lmu + 7.*mu4); } // add up bits for f1 f1 += CF*aS/Constants::pi*(fNS+VNS); // now for the real correction double jac = 1.; // generate y double yminus = 0.; double yplus = 1.-2.*mu*(1.-mu)/(1.-2*mu2); double rhoymax = pow(yplus-yminus,1.-yPow_); double rhoy = y_*rhoymax; double y = yminus+pow(rhoy,1./(1.-yPow_)); jac *= pow(y-yminus,yPow_)*rhoymax/(1.-yPow_); // generate z double vt = sqrt(max(sqr(2.*mu2+(1.-2.*mu2)*(1.-y))-4.*mu2,0.))/(1.-2.*mu2)/(1.-y); double zplus = (1.+vt)*(1.-2.*mu2)*y/2./(mu2 +(1.-2.*mu2)*y); double zminus = (1.-vt)*(1.-2.*mu2)*y/2./(mu2 +(1.-2.*mu2)*y); double rhozmax = pow(zplus-zminus,1.-zPow_); double rhoz = z_*rhozmax; double z = zminus+pow(rhoz,1./(1.-zPow_)); jac *= pow(z-zminus,zPow_)*rhozmax/(1.-zPow_); // calculate x1,x2,x3 and xT double x2 = 1. - y*(1.-2.*mu2); double x1 = 1. - z*(x2-2.*mu2); double x3 = 2.-x1-x2; double xT = sqrt(max(0.,sqr(x3) -0.25*sqr(sqr(x2)+sqr(x3)-sqr(x1))/(sqr(x2)-4.*mu2))); // calculate the momenta Energy M = sqrt(sHat()); Lorentz5Momentum pspect(ZERO,ZERO,-0.5*M*sqrt(max(sqr(x2)-4.*mu2,0.)),0.5*M*x2,M*mu); Lorentz5Momentum pemit (-0.5*M*xT*cos(phi_),-0.5*M*xT*sin(phi_), 0.5*M*sqrt(max(sqr(x1)-sqr(xT)-4.*mu2,0.)),0.5*M*x1,M*mu); Lorentz5Momentum pgluon( 0.5*M*xT*cos(phi_), 0.5*M*xT*sin(phi_), 0.5*M*sqrt(max(sqr(x3)-sqr(xT),0.)),0.5*M*x3,ZERO); if(abs(pspect.z()+pemit.z()-pgluon.z())/M<1e-6) pgluon.setZ(-pgluon.z()); else if(abs(pspect.z()-pemit.z()+pgluon.z())/M<1e-6) pemit .setZ(- pemit.z()); // loop over the possible emitting partons vector<cPDPtr> partons(mePartonData()); partons.push_back(gluon()); double realwgt(0.); for(unsigned int iemit=0;iemit<2;++iemit) { // boost and rotate momenta LorentzRotation eventFrame( ( rescaledMomenta()[2] + rescaledMomenta()[3] ).findBoostToCM() ); Lorentz5Momentum spectator = eventFrame*rescaledMomenta()[2+iemit]; eventFrame.rotateZ( -spectator.phi() ); eventFrame.rotateY( -spectator.theta() ); eventFrame.invert(); vector<Lorentz5Momentum> momenta(rescaledMomenta()); if(iemit==0) { momenta[3] = eventFrame*pspect; momenta[2] = eventFrame*pemit ; } else { momenta[2] = eventFrame*pspect; momenta[3] = eventFrame*pemit ; } momenta.push_back(eventFrame*pgluon); // calculate the weight if(1.-x1>1e-5 && 1.-x2>1e-5) realwgt += meRatio(partons,momenta,iemit,true); } // total real emission contribution double realFact = 0.25*(1.-y)*jac* sqr(1.-2.*mu2)/sqrt(1.-4.*mu2)/Constants::twopi* 2.*CF*aS*realwgt; // the born + virtual + real total[0] = total[0]*(1. + f1 + realFact) + f2*total[3]; if(contrib_==2) total[0] *=-1.; return max(total[0],0.); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEqq2gZ2ffPowheg.h�����������������������������������������0000644�0001750�0001750�00000023477�11754474775�024173� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEqq2gZ2ffPowheg.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEqq2gZ2ffPowheg_H #define HERWIG_MEqq2gZ2ffPowheg_H // // This is the declaration of the MEqq2gZ2ffPowheg class. // #include "Herwig++/MatrixElement/Hadron/MEqq2gZ2ff.h" #include "ThePEG/PDF/BeamParticleData.h" namespace Herwig { using namespace ThePEG; /** * The MEqq2gZ2ffPowheg class implements the products of Standard Model * fermion antifermion pairs via the \f$Z^0\f$ resonance including * photon interference terms. * * @see \ref MEqq2gZ2ffPowhegInterfaces "The interfaces" * defined for MEqq2gZ2ffPowheg. */ class MEqq2gZ2ffPowheg: public MEqq2gZ2ff { public: /** * The default constructor. */ MEqq2gZ2ffPowheg(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * The number of internal degreed of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given 'nDim()' uniform * random numbers in the interval ]0,1[. To help the phase space * generator, the 'dSigHatDR()' should be a smooth function of these * numbers, although this is not strictly necessary. Return * false if the chosen points failed the kinematical cuts. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(). Uses * me(). */ virtual CrossSection dSigHatDR() 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(); protected: /** * Calculate the correction weight with which leading-order * configurations are re-weighted. */ double NLOweight() const; /** * Calculate the variable \f$x=M_{B}^2/s\f$ from the integration variables. */ double x(double xt, double v) const; /** * Calculate the momentum fraction of the first parton. */ double x_a(double x, double v) const; /** * Calculate the momentum fraction of the second parton. */ double x_b(double x, double v) const; /** * Calculate the minimum of \f$x\f$. */ double xbar(double v) const; /** * Calculate the ratio of the radiative luminosity funcion to the * Born luminosity function for the \f$qg\f$ initiated channel. */ double Ltilde_qg(double x, double v) const; /** * Calculate the ratio of the radiative luminosity funcion to the * Born luminosity function for the \f$g\bar{q}\f$ initiated channel. */ double Ltilde_gq(double x, double v) const; /** * Calculate the ratio of the radiative luminosity funcion to the * Born luminosity function for the \f$q\bar{q}\f$ initiated channel. */ double Ltilde_qq(double x, double v) const; /** * Calculate the soft-virtual contribution to the NLO weight. */ double Vtilde_qq() const; /** * Function for calculation of the \f$qg\f$ and \f$g\bar{q}\f$ initiated real * contributions. */ double Ccalbar_qg(double x) const; /** * Function for calculation of the \f$qg\f$ * initiated real contribution. */ double Fcal_qg(double x, double v) const; /** * Function for calculation of the \f$g\bar{q}\f$ initiated real * contribution. */ double Fcal_gq(double x, double v) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Fcal_qq(double x, double v) const; /** * Function for calculation of the \f$qg\f$ initiated real * contribution. */ double Ftilde_qg(double xt, double v) const; /** * Function for calculation of the \f$g\bar{q}\f$ initiated real * contribution. */ double Ftilde_gq(double xt, double v) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Ftilde_qq(double xt, double v) const; /** * Function for calculation of the \f$qg\f$ initiated real * contribution. */ double Ctilde_qg(double x, double v) const; /** * Function for calculation of the \f$g\bar{q}\f$ initiated real * contribution. */ double Ctilde_gq(double x, double v) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Ctilde_qq(double x, double v) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEqq2gZ2ffPowheg> initMEqq2gZ2ffPowheg; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEqq2gZ2ffPowheg & operator=(const MEqq2gZ2ffPowheg &); private: /** * The momentum fraction of the first parton in the Born process */ mutable double _xb_a; /** * The momentum fraction of the second parton in the Born process */ mutable double _xb_b; /** * The ParticleData object for the first parton in the Born process */ mutable tcPDPtr _parton_a; /** * The ParticleData object for the second parton in the Born process */ mutable tcPDPtr _parton_b; /** * The BeamParticleData object for the first hadron */ mutable Ptr<BeamParticleData>::transient_const_pointer _hadron_A; /** * The BeamParticleData object for the second hadron */ mutable Ptr<BeamParticleData>::transient_const_pointer _hadron_B; /** * the ParticleData object for the gluon */ tcPDPtr _gluon; /** * The \f$T_R\f$ colour factor */ const double TR_; /** * The \f$C_F\f$ colour factor */ const double CF_; /** * The value of \f$\frac{\alpha_S}{2\pi}\f$ used for the calculation */ mutable double _alphaS2Pi; /** * The mass squared of the lepton pair */ mutable Energy2 _mll2; /** * The renormalization/factorization scale */ mutable Energy2 _mu2; /** * Parameters for the NLO weight */ //@{ /** * Whether to generate the positive, negative or leading order contribution */ unsigned int _contrib; /** * Whether to use a fixed or a running QCD coupling for the NLO weight */ unsigned int _nlo_alphaS_opt; /** * The value of alphaS to use for the nlo weight if _nloalphaSopt=1 */ double _fixed_alphaS; /** * The magnitude of the correction term to reduce the negative contribution */ double _a; /** * The power of the correction term to reduce the negative contribution */ double _p; /** * Cut-off for the correction function */ double _eps; //@} /** * Choice of the scale */ //@{ /** * Type of scale */ unsigned int _scaleopt; /** * Fixed scale if used */ Energy _fixedScale; /** * Prefactor if variable scale used */ double _scaleFact; //@} /** * Radiation variables */ //@{ /** * The \f$\tilde{x}\f$ variable */ double _xt; /** * The \f$v\f$ angular variable */ double _v; //@} /** * Values of the PDF's before radiation */ //@{ /** * For the quark */ mutable double _oldq; /** * For the antiquark */ mutable double _oldqbar; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEqq2gZ2ffPowheg. */ template <> struct BaseClassTrait<Herwig::MEqq2gZ2ffPowheg,1> { /** Typedef of the first base class of MEqq2gZ2ffPowheg. */ typedef Herwig::MEqq2gZ2ff NthBase; }; /** This template specialization informs ThePEG about the name of * the MEqq2gZ2ffPowheg class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEqq2gZ2ffPowheg> : public ClassTraitsBase<Herwig::MEqq2gZ2ffPowheg> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEqq2gZ2ffPowheg"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the MEqq2gZ2ffPowheg class and any other class on which it depends * (except the base class). */ static string library() { return "HwMEHadron.so HwPowhegMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEqq2gZ2ffPowheg_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEPP2HiggsPowheg.h�����������������������������������������0000644�0001750�0001750�00000026274�11754474775�024152� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEPP2HiggsPowheg.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEPP2HiggsPowheg_H #define HERWIG_MEPP2HiggsPowheg_H // // This is the declaration of the MEPP2HiggsPowheg class. // #include "Herwig++/MatrixElement/Hadron/MEPP2Higgs.h" #include "ThePEG/PDF/BeamParticleData.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The MEPP2HiggsPowheg class implements the matrix element for the process * pp->Higgs with different Higgs shape prescriptions (see details in hep-ph/9505211) * and the NLL corrected Higgs width (see details in the FORTRAN HERWIG manual). * * @see \ref MEPP2HiggsPowhegInterfaces "The interfaces" * defined for MEPP2HiggsPowheg. */ class MEPP2HiggsPowheg: public MEPP2Higgs { public: /** * The default constructor. */ MEPP2HiggsPowheg(); public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() 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(); /** * Function to set the born variables. */ void get_born_variables() const; /** * Calculate the correction weight with which leading-order * configurations are re-weighted. */ double NLOweight() const; /** * Invariant required for the evaluation of next-to-leading order * quantities (Frixione et al. NPB.383 WZ production at colliders). */ Energy2 s(double xt, double y) const { return p2_/x(xt,y); } /** * Invariant required for the evaluation of next-to-leading order * quantities (Frixione et al. NPB.383 WZ production at colliders). */ Energy2 tk(double xt, double y) const { double x_xt_y(x(xt,y)); return -0.5*p2_/x_xt_y*(1.- x_xt_y)*(1.-y); } /** * Invariant required for the evaluation of next-to-leading order * quantities (Frixione et al. NPB.383 WZ production at colliders). */ Energy2 uk(double xt, double y) const { double x_xt_y(x(xt,y)); return -0.5*p2_/x_xt_y*(1.- x_xt_y)*(1.+y); } /** * Calculate the minimum of \f$x\f$. */ double xbar(double y) const; /** * Calculate auxiliary function of \f$\bar{x}(y)\f$, \f$\bar{\eta}(y)\f$. */ double etabar(double y) const; /** * Calculate the variable \f$x=p^{2}/s\f$ from the integration variables. */ double x(double xt, double y) const { double x0(xbar(y)); return x0+(1.-x0)*xt; } /** * Calculate the momentum fraction of the plus parton. */ double xp(double x, double y) const; /** * Calculate the momentum fraction of the minus parton. */ double xm(double x, double y) const; /** * Calculate the ratio of the NLO luminosity to the LO * luminosity function for the \f$q\bar{q}\f$ initiated channel. */ double Lhat_ab(tcPDPtr a, tcPDPtr b, double x, double y) const; /** * Calculate the universal soft-virtual contribution to the NLO weight. */ double Vtilde_universal() const; /** * Function for calculation of the \f$gg\f$ initiated real * contribution. */ double Ctilde_Ltilde_gg_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const; /** * Function for calculation of the \f$qg\f$ initiated real * contribution. */ double Ctilde_Ltilde_qg_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const; /** * Function for calculation of the \f$gq\f$ initiated real * contribution. */ double Ctilde_Ltilde_gq_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const; /** * The regular part of the virtual correction matrix element(s) */ double M_V_regular() const; /** * The matrix element q + qbar -> n + g times tk*uk */ Energy2 t_u_M_R_qqbar(double xt, double y) const; /** * The matrix element qbar + q -> n + g times tk*uk */ Energy2 t_u_M_R_qbarq(double xt, double y) const; /** * The matrix element g + g -> n + g times tk*uk */ Energy2 t_u_M_R_gg(double xt, double y) const; /** * The matrix element q + g -> n + q times tk*uk */ Energy2 t_u_M_R_qg(double xt, double y) const; /** * The matrix element g + q -> n + q times tk*uk */ Energy2 t_u_M_R_gq(double xt, double y) const; /** * Function for calculation of the \f$q\bar{q}\f$ initiated real * contribution. */ double Rtilde_Ltilde_qqbar_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const; /** * Function for calculation of the \f$\bar{q}q\f$ initiated real * contribution. */ double Rtilde_Ltilde_qbarq_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const; /** * Function for calculation of the \f$qq\f$ * initiated real contribution. */ double Rtilde_Ltilde_gg_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const; /** * Function for calculation of the \f$qg\f$ initiated real * contribution. */ double Rtilde_Ltilde_qg_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const; /** * Function for calculation of the \f$gq\f$ initiated real * contribution. */ double Rtilde_Ltilde_gq_on_x(tcPDPtr a,tcPDPtr b,double xt,double y) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2HiggsPowheg> initMEPP2HiggsPowheg; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2HiggsPowheg & operator=(const MEPP2HiggsPowheg &); private: /** * Parameters for the NLO weight */ //@{ /** * The colour factors */ const double CF_ , CA_ , TR_; /** * Number of light flavours (in the beta function beta0_) */ const int nlf_; /** * (Proportional to) The beta function */ const double beta0_; /** * Whether to generate the positive, negative or leading order contribution */ unsigned int contrib_; /** * Whether to use a fixed or a running QCD coupling for the NLO weight */ unsigned int nlo_alphaS_opt_; /** * The value of alphaS to use for the nlo weight if nlo_alphaS_opt_=1 */ double fixed_alphaS_; //@} /** * Radiation variables */ //@{ /** * The \f$\tilde{x}\f$ variable */ double xt_; /** * The \f$y\f$ angular variable */ double y_; //@} /** * Values of the PDF's before radiation */ mutable double lo_lumi_; /** * The value of the leading order gg->H matrix element */ mutable double lo_ggME_; /** * The invariant mass of the lo final state. */ mutable Energy2 p2_ ; /** * The invariant mass of the lo final state. */ mutable Energy2 s2_ ; /** * The momentum fraction of the plus parton in the Born process */ mutable double xbp_; /** * The momentum fraction of the minus parton in the Born process */ mutable double xbm_; /** * The sqrt(1-xbp_) */ mutable double etabarp_; /** * The sqrt(1-xbm_) */ mutable double etabarm_; /** * The ParticleData object for the plus lo parton */ mutable tcPDPtr a_lo_; /** * The ParticleData object for the minus lo parton */ mutable tcPDPtr b_lo_; /** * The BeamParticleData object for the plus direction hadron */ mutable Ptr<BeamParticleData>::transient_const_pointer hadron_A_; /** * The BeamParticleData object for the minus direction hadron */ mutable Ptr<BeamParticleData>::transient_const_pointer hadron_B_; /** * The value of \f$\alpha_S\f$ used for the calculation */ mutable double alphaS_; /** * Selects a dynamic (sHat) or fixed factorization scale */ unsigned int scaleopt_; /** * The factorization scale */ Energy mu_F_; /** * The renormalization scale */ Energy mu_UV_; /** * Prefactor if variable scale used */ double scaleFact_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the base classes of MEPP2HiggsPowheg. */ template <> struct BaseClassTrait<Herwig::MEPP2HiggsPowheg,1> { /** Typedef of the first base class of MEPP2HiggsPowheg. */ typedef Herwig::MEPP2Higgs NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2HiggsPowheg class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2HiggsPowheg> : public ClassTraitsBase<Herwig::MEPP2HiggsPowheg> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2HiggsPowheg"; } /** * The name of a file containing the dynamic library where the class * MEPP2HiggsPowheg is implemented. It may also include several, space-separated, * libraries if the class MEPP2HiggsPowheg depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so HwPowhegMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2HiggsPowheg_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/VVKinematics.h���������������������������������������������0000644�0001750�0001750�00000032370�11754474775�023530� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_VVKinematics_H #define HERWIG_VVKinematics_H // // This is the declaration of the VVKinematics class. // #include "ThePEG/Vectors/Lorentz5Vector.h" namespace Herwig { using namespace ThePEG; /** \ingroup VVKinematics * The bornVVKinematics class is used to store information on the * the kinematics of the real emission processes needed for the * evaluation of matrix elements in the real part of the NLO process. */ class bornVVKinematics { public: /** * Default constructor */ bornVVKinematics(); /** * Meaningful constructor: takes the momenta * and Bjorken x values of the partons involved * in the 2->2 scattering of the leading order * / virtual process and calculates all interesting * Mandelstam and Born variables. */ bornVVKinematics(vector<Lorentz5Momentum> Momenta, double x1, double x2); public: /** * Read-only access to all of the above member variables. */ /** * @name Leading order momentum fractions and associated etabar's: */ //@{ /** * Leading order momentum fraction for first particle */ double x1b() const { return x1b_; } /** * Leading order etabar for first particle */ double eta1b() const { return eta1b_; } /** * Leading order momentum fraction for second particle */ double x2b() const { return x2b_; } /** * Leading order etabar for second particle */ double eta2b() const { return eta2b_; } //@} /** * @name The Born momenta according to the notation of the FMNR papers, * in the diboson centre of mass frame: */ //@{ /** * Momentum \f$p_1\f$ */ Lorentz5Momentum p1b() const { return p1b_; } /** * Momentum \f$p_2\f$ */ Lorentz5Momentum p2b() const { return p2b_; } /** * Momentum \f$k_1\f$ */ Lorentz5Momentum k1b() const { return k1b_; } /** * Momentum \f$k_2\f$ */ Lorentz5Momentum k2b() const { return k2b_; } //@} /** * @name The diboson invariant mass / shat, that and uhat: */ //@{ /** * \f$\hat s\f$ */ Energy2 sb() const { return sb_; } /** * \f$\hat t\f$ */ Energy2 tb() const { return tb_; } /** * \f$\hat u\f$ */ Energy2 ub() const { return ub_; } //@} /** * The diboson rapidity: * Note Yb_ = + lastY() if flipped = false * but Yb_ = - lastY() if flipped = true. * Yb_ is always defined with the quark travelling in the +z direction! */ double Yb() const { return Yb_; } /** * @name Masses of the final state bosons: */ //@{ /** * Mass squared og the first boson */ Energy2 k12b() const { return k12b_; } /** * Mass squared og the second boson */ Energy2 k22b() const { return k22b_; } //@} /** * Polar and azimuthal angles of the dibosons in their rest frame: */ double theta1b() const { return theta1b_; } /** * A check to make sure that the momenta calculated from * the energies and angles are equal to those of meMomenta(). */ void sanityCheck() const; private: /** * Invariants required for the evaluation of 2-> 2 next-to-leading * order quantities (Frixione et al. NPB.383 WZ production at colliders). */ /** * @name Leading order momentum fractions and associated etabar's: */ //@{ /** * Leading order momentum fraction for first particle */ double x1b_; /** * Leading order etabar for first particle */ double eta1b_; /** * Leading order momentum fraction for second particle */ double x2b_; /** * Leading order etabar for second particle */ double eta2b_; //@} /** * @name The Born momenta according to the notation of the FMNR papers, * in the diboson centre of mass frame: */ //@{ /** * Momentum \f$p_1\f$ */ Lorentz5Momentum p1b_; /** * Momentum \f$p_2\f$ */ Lorentz5Momentum p2b_; /** * Momentum \f$k_1\f$ */ Lorentz5Momentum k1b_; /** * Momentum \f$k_2\f$ */ Lorentz5Momentum k2b_; //@} /** * @name The diboson invariant mass / shat, that and uhat: */ //@{ /** * \f$\hat s\f$ */ Energy2 sb_; /** * \f$\hat t\f$ */ Energy2 tb_; /** * \f$\hat u\f$ */ Energy2 ub_; //@} /** * The diboson rapidity: * Note Yb_ = + lastY() if flipped = false * but Yb_ = - lastY() if flipped = true. * Yb_ is always defined with the quark travelling in the +z direction! */ double Yb_; /** * @name Masses of the final state bosons: */ //@{ /** * Mass squared og the first boson */ Energy2 k12b_; /** * Mass squared og the second boson */ Energy2 k22b_; //@} /** * Polar angle of the dibosons in their rest frame: */ double theta1b_; }; /** \ingroup VVKinematics * The realVVKinematics class is used to store information on the * the kinematics of the real emission processes needed for the * evaluation of matrix elements in the real part of the NLO process. */ class realVVKinematics { public: /** * Default constructor */ realVVKinematics(); /** * Meaningful constructor: takes the Born variables * from the leading order /virtual 2->2 process and * the raw \f$\tilde{x}, y\f$ radiative variables and turns * these into a set of 2->3 momenta with associated * Mandelstam variables, Bjorken x values etc. * @param bornVariables The object for the Born kinematics * @param xt The \f$\tilde{x}\f$ radiative variable. * @param y The angular radiative variable (the cosine * of the polar angle of the emitted gluon in the partonic * @param theta2 The angle \f$\theta_2\f$ * CMS frame). */ realVVKinematics(bornVVKinematics bornVariables,double xt, double y, double theta2); /** * A check to make sure that the momenta calculated from * the energies and angles are equal to those of meMomenta(). */ void sanityCheck() const; public: /** * Read-only access to all of the above member variables. */ /** * The bornVVKinematics underlying the 2->3 kinematics */ bornVVKinematics bornVariables() const { return bornVariables_; } /** * The lower bound on the x integration: */ double xbar() const { return xbar_; } /** * @name The `raw' radiative variables. */ //@{ /** * The \f$\tilde{x}\f$ radiative variable */ double xt() const { return xt_; } /** * The \f$y\f$ radiative variable */ double y() const { return y_; } /** * The \f$x_r\f$ radiative variable */ double xr() const { return xr_; } //@} /** * The momentum fraction of the parton incident from the +z direction. */ double x1r() const { return x1r_; } /** * The momentum fraction of the parton incident from the -z direction. */ double x2r() const { return x2r_; } /** * Invariants required for the evaluation of next-to-leading order * quantities (Frixione et al. NPB.383 WZ production at colliders). */ /** * @name First the Born variables: */ //@{ /** * \f$s_2\f$ variable from Frixione et al. NPB.383,3 */ Energy2 s2r() const { return s2r_; } /** * \f$k_1^2\f$ mass of first vector boson */ Energy2 k12r() const { return k12r_; } /** * \f$k_2^2\f$ mass of second vector boson */ Energy2 k22r() const { return k22r_; } /** * \f$\theta_1\f$ angle from Frixione et al. NPB.383,3 */ double theta1r() const { return theta1r_; } /** * \f$\theta_2\f$ angle from Frixione et al. NPB.383,3 */ double theta2r() const { return theta2r_; } //@} /** * @name Then the rest: */ //@{ /** * \f$p_T^2\f$ in the lab frame */ Energy2 pT2_in_lab() const { return tkr_*ukr_/sr_; } /** * \f$s\f$ from Frixione et al. NPB.383,3 */ Energy2 sr() const { return sr_; } /** * \f$t_k\f$ from Frixione et al. NPB.383,3 */ Energy2 tkr() const { return tkr_; } /** * \f$u_k\f$ from Frixione et al. NPB.383,3 */ Energy2 ukr() const { return ukr_; } /** * \f$\cos\psi\f$ from Frixione et al. NPB.383,3 */ double cpsir() const { return cpsir_; } /** * \f$\cos\psi'\f$ from Frixione et al. NPB.383,3 */ double cpsipr() const { return cpsiprr_; } /** * \f$\beta_x\f$ from Frixione et al. NPB.383,3 */ double betaxr() const { return betaxr_; } /** * \f$v_1\f$ variable from Frixione et al. NPB.383,3 */ double v1r() const { return v1r_; } /** * \f$v_2\f$ variable from Frixione et al. NPB.383,3 */ double v2r() const { return v2r_; } /** * \f$q_1\f$ variable from Frixione et al. NPB.383,3 */ Energy2 q1r() const { return q1r_; } /** * \f$q_2\f$ variable from Frixione et al. NPB.383,3 */ Energy2 q2r() const { return q2r_; } /** * \f$\hat q_1\f$ variable from Frixione et al. NPB.383,3 */ Energy2 q1hatr() const { return q1hatr_; } /** * \f$\hat q_2\f$ variable from Frixione et al. NPB.383,3 */ Energy2 q2hatr() const { return q2hatr_; } /** * \f$\hat w_1\f$ variable from Frixione et al. NPB.383,3 */ Energy2 w1r() const { return w1r_; } /** * \f$\hat w_2\f$ variable from Frixione et al. NPB.383,3 */ Energy2 w2r() const { return w2r_; } /** * 4-momentum \f$p_1\f$ from Frixione et al. NPB.383,3 */ Lorentz5Momentum p1r() const { return p1r_; } /** * 4-momentum \f$p_2\f$ from Frixione et al. NPB.383,3 */ Lorentz5Momentum p2r() const { return p2r_; } /** * 4-momentum \f$k\f$ from Frixione et al. NPB.383,3 */ Lorentz5Momentum kr() const { return kr_ ; } /** * 4-momentum \f$k_1\f$ from Frixione et al. NPB.383,3 */ Lorentz5Momentum k1r() const { return k1r_; } /** * 4-momentum \f$k_2\f$ from Frixione et al. NPB.383,3 */ Lorentz5Momentum k2r() const { return k2r_; } /** * Set 4-momentum \f$p_1\f$ from Frixione et al. NPB.383,3 */ void p1r(Lorentz5Momentum p1r) { p1r_ = p1r; } /** * Set 4-momentum \f$p_2\f$ from Frixione et al. NPB.383,3 */ void p2r(Lorentz5Momentum p2r) { p2r_ = p2r; } /** * Set 4-momentum \f$k\f$ from Frixione et al. NPB.383,3 */ void kr (Lorentz5Momentum kr ) { kr_ = kr ; } /** * Set 4-momentum \f$k_1\f$ from Frixione et al. NPB.383,3 */ void k1r(Lorentz5Momentum k1r) { k1r_ = k1r; } /** * Set 4-momentum \f$k_2\f$ from Frixione et al. NPB.383,3 */ void k2r(Lorentz5Momentum k2r) { k2r_ = k2r; } //@} private: /** * The bornVVKinematics object underlying the 2->3 kinematics. */ bornVVKinematics bornVariables_; /** * The lower bound on the x integration. */ double xbar_; // The `raw' radiative variables. /** * @name The `raw' radiative variables. */ //@{ /** * The \f$\tilde{x}\f$ radiative variable */ double xt_; /** * The \f$y\f$ radiative variable */ double y_; /** * The \f$x_r\f$ radiative variable */ double xr_; //@} /** * The momentum fraction of the parton incident from the +z direction. */ double x1r_; /** * The momentum fraction of the parton incident from the -z direction. */ double x2r_; /** * Invariants required for the evaluation of next-to-leading order * quantities (Frixione et al. NPB.383 WZ production at colliders). */ /** * @name First the Born variables: */ //@{ /** * \f$s_2\f$ variable from Frixione et al. NPB.383,3 */ Energy2 s2r_; /** * \f$k_1^2\f$ mass of first vector boson */ Energy2 k12r_; /** * \f$k_2^2\f$ mass of second vector boson */ Energy2 k22r_; /** * \f$\theta_1\f$ angle from Frixione et al. NPB.383,3 */ double theta1r_; /** * \f$\theta_2\f$ angle from Frixione et al. NPB.383,3 */ double theta2r_; //@} /** * @name Then the rest: */ //@{ /** * \f$s\f$ from Frixione et al. NPB.383,3 */ Energy2 sr_; /** * \f$t_k\f$ from Frixione et al. NPB.383,3 */ Energy2 tkr_; /** * \f$u_k\f$ from Frixione et al. NPB.383,3 */ Energy2 ukr_; /** * \f$\cos\psi\f$ from Frixione et al. NPB.383,3 */ double cpsir_; /** * \f$\cos\psi'\f$ from Frixione et al. NPB.383,3 */ double cpsiprr_; /** * \f$\beta_x\f$ from Frixione et al. NPB.383,3 */ double betaxr_; /** * \f$v_1\f$ variable from Frixione et al. NPB.383,3 */ double v1r_; /** * \f$v_2\f$ variable from Frixione et al. NPB.383,3 */ double v2r_; /** * \f$q_1\f$ variable from Frixione et al. NPB.383,3 */ Energy2 q1r_; /** * \f$q_2\f$ variable from Frixione et al. NPB.383,3 */ Energy2 q2r_; /** * \f$\hat q_1\f$ variable from Frixione et al. NPB.383,3 */ Energy2 q1hatr_; /** * \f$\hat q_2\f$ variable from Frixione et al. NPB.383,3 */ Energy2 q2hatr_; /** * \f$\hat w_1\f$ variable from Frixione et al. NPB.383,3 */ Energy2 w1r_; /** * \f$\hat w_2\f$ variable from Frixione et al. NPB.383,3 */ Energy2 w2r_; /** * 4-momentum \f$p_1\f$ from Frixione et al. NPB.383,3 */ Lorentz5Momentum p1r_; /** * 4-momentum \f$p_2\f$ from Frixione et al. NPB.383,3 */ Lorentz5Momentum p2r_; /** * 4-momentum \f$k\f$ from Frixione et al. NPB.383,3 */ Lorentz5Momentum kr_; /** * 4-momentum \f$k_1\f$ from Frixione et al. NPB.383,3 */ Lorentz5Momentum k1r_; /** * 4-momentum \f$k_2\f$ from Frixione et al. NPB.383,3 */ Lorentz5Momentum k2r_; //@} }; } #endif /* HERWIG_VVKinematics_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/Makefile.am������������������������������������������������0000644�0001750�0001750�00000001153�11755414157�023030� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwPowhegMEHadron.la HwPowhegMELepton.la HwPowhegMEHadron_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 5:0:1 HwPowhegMEHadron_la_SOURCES = \ MEqq2gZ2ffPowheg.cc MEqq2gZ2ffPowheg.h \ MEqq2W2ffPowheg.cc MEqq2W2ffPowheg.h \ MEPP2HiggsPowheg.cc MEPP2HiggsPowheg.h \ MEPP2WHPowheg.cc MEPP2WHPowheg.h \ MEPP2ZHPowheg.cc MEPP2ZHPowheg.h \ MEPP2VVPowheg.cc MEPP2VVPowheg.h \ VVKinematics.cc VVKinematics.h \ MEPP2HiggsVBFPowheg.h MEPP2HiggsVBFPowheg.cc HwPowhegMELepton_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 1:0:0 HwPowhegMELepton_la_SOURCES = \ MEee2gZ2qqPowheg.cc MEee2gZ2qqPowheg.h ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/VVKinematics.cc��������������������������������������������0000644�0001750�0001750�00000044240�11754474775�023665� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // VVKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the VVKinematics class. // #include "VVKinematics.h" using namespace Herwig; bornVVKinematics::bornVVKinematics() {} bornVVKinematics::bornVVKinematics(vector<Lorentz5Momentum> Momenta, double x1, double x2) { // Leading order momentum fractions and associated etabar's: x1b_ = x1; eta1b_ = sqrt(1.-x1b_); x2b_ = x2; eta2b_ = sqrt(1.-x2b_); // The Born momenta according to the notation of the FMNR papers, // in the diboson centre of mass frame: p1b_ = Momenta[0]; p2b_ = Momenta[1]; k1b_ = Momenta[2]; k2b_ = Momenta[3]; // The diboson invariant mass / shat, that and uhat: sb_ = (p1b_+p2b_).m2(); tb_ = (p1b_-k1b_).m2(); ub_ = (p1b_-k2b_).m2(); // Masses of the final state bosons: k12b_ = k1b_.m2(); k22b_ = k2b_.m2(); // Boost the momenta so they are in the diboson centre of mass frame // with the quark along the +z direction: Lorentz5Momentum ktot(k1b_+k2b_); Boost CMSBoostb(-ktot.boostVector()); p1b_.boost(CMSBoostb); p2b_.boost(CMSBoostb); k1b_.boost(CMSBoostb); k2b_.boost(CMSBoostb); if(p1b_.z()<0.*GeV) { p1b_.rotateY(Constants::pi); p2b_.rotateY(Constants::pi); k1b_.rotateY(Constants::pi); k2b_.rotateY(Constants::pi); } // The diboson rapidity: Yb_ = 0.5*log(x1b_/x2b_); // N.B. this gives the diboson rapidity in the lab (lastY()) IF p1 is in the +z // direction otherwise Yb_ is minus the diboson rapidity in the lab (-lastY()). // Polar and azimuthal angles of the dibosons in their rest frame: theta1b_ = acos(k1b_.z()/k1b_.vect().mag()); } void bornVVKinematics::sanityCheck() const { // The masses and angles can be used to reconstruct the momenta in // the diboson centre of mass frame as follows (as a sanity check): Energy4 lambda = sb_*sb_+k12b_*k12b_+k22b_*k22b_ -2.*sb_*k12b_- 2.*sb_*k22b_ - 2.*k12b_*k22b_; Energy p = sqrt(lambda)/2./sqrt(sb_); Energy pt = p*sin(theta1b_); Energy pl = p*cos(theta1b_); Lorentz5Momentum p1b(0.*GeV,0.*GeV, p1b_.t(),p1b_.t(),0.*GeV); Lorentz5Momentum p2b(0.*GeV,0.*GeV,-p2b_.t(),p2b_.t(),0.*GeV); double eventAzimuth = atan2(k1b_.x(),k1b_.y()); Lorentz5Momentum k1b( pt*sin(eventAzimuth), pt*cos(eventAzimuth), pl, sqrt(p*p+k12b_),sqrt(k12b_)); Lorentz5Momentum k2b(-pt*sin(eventAzimuth),-pt*cos(eventAzimuth),-pl, sqrt(p*p+k22b_),sqrt(k22b_)); // Checks showed these momenta agreed with p1b_,p2b_,k1b_,k2b_ to within // 0.01 eV. These therefore correspond to theta's of Frixione et al. Lorentz5Momentum p1bdiff(p1b_-p1b); Lorentz5Momentum p2bdiff(p2b_-p2b); Lorentz5Momentum k1bdiff(k1b_-k1b); Lorentz5Momentum k2bdiff(k2b_-k2b); if(p1bdiff.x()/GeV>1.e-7||p1bdiff.y()/GeV>1.e-7||p1bdiff.z()/GeV>1.e-7|| p1bdiff.t()/GeV>1.e-7||p1bdiff.tau()/GeV>1.e-7) { cout << "\n\n\nbornVVKinematics:\n"; cout << "p1b_ = " << p1b_/GeV << endl; cout << "p1b = " << p1b/GeV << endl; cout << "p1bdiff = " << p1bdiff/GeV << endl; } if(p2bdiff.x()/GeV>1.e-7||p2bdiff.y()/GeV>1.e-7||p2bdiff.z()/GeV>1.e-7|| p2bdiff.t()/GeV>1.e-7||p2bdiff.tau()/GeV>1.e-7) { cout << "\n\n\nbornVVKinematics:\n"; cout << "p2b_ = " << p2b_/GeV << endl; cout << "p2b = " << p2b/GeV << endl; cout << "p2bdiff = " << p2bdiff/GeV << endl; } if(k1bdiff.x()/GeV>1.e-7||k1bdiff.y()/GeV>1.e-7||k1bdiff.z()/GeV>1.e-7|| k1bdiff.t()/GeV>1.e-7||k1bdiff.tau()/GeV>1.e-7) { cout << "\n\n\nbornVVKinematics:\n"; cout << "k1b_ = " << k1b_/GeV << endl; cout << "k1b = " << k1b/GeV << endl; cout << "k1bdiff = " << k1bdiff/GeV << endl; } if(k2bdiff.x()/GeV>1.e-7||k2bdiff.y()/GeV>1.e-7||k2bdiff.z()/GeV>1.e-7|| k2bdiff.t()/GeV>1.e-7||k2bdiff.tau()/GeV>1.e-7) { cout << "\n\n\nbornVVKinematics:\n"; cout << "k2b_ = " << k2b_/GeV << endl; cout << "k2b = " << k2b/GeV << endl; cout << "k2bdiff = " << k2bdiff/GeV << endl; } return; } realVVKinematics::realVVKinematics() {} realVVKinematics::realVVKinematics(bornVVKinematics bornVariables, double xt, double y, double theta2) { // Store the bornVVKinematics object bornVariables_ = bornVariables; // Store the `raw' radiative variables xt_ = xt; y_ = y ; theta2r_ = theta2; // First we get the lower limit on the x integration, xbar: if(y_== 1.) xbar_ = bornVariables.x1b(); else if(y_==-1.) xbar_ = bornVariables.x2b(); else { double x1b(bornVariables.x1b()), x2b(bornVariables.x2b()); double x12b(x1b*x1b) , x22b(x2b*x2b); double omy(1.-y_); double opy(1.+y_); double xbar1=2.*opy*x12b/ (sqrt(sqr(1.+x12b)*sqr(omy)+16.*y_*x12b)+omy*(1.-x1b)*(1.+x1b)); double xbar2=2.*omy*x22b/ (sqrt(sqr(1.+x22b)*sqr(opy)-16.*y_*x22b)+opy*(1.-x2b)*(1.+x2b)); xbar_ = max(xbar1,xbar2); } // Then we calculate x from \tilde{x}: xr_ = xt_==1. ? 1. : xbar_+(1.-xbar_)*xt_; if(xr_== 1.) x1r_ = bornVariables.x1b(); else if(y_ ==-1.) x1r_ = bornVariables.x1b(); else if(y_ == 1.) x1r_ = bornVariables.x1b()/xr_; else x1r_ = (bornVariables.x1b()/sqrt(xr_)) * sqrt((2.-(1.-xr_)*(1.-y_))/(2.-(1.-xr_)*(1.+y_))); if(xr_== 1.) x2r_ = bornVariables.x2b(); else if(y_ ==-1.) x2r_ = bornVariables.x2b()/xr_; else if(y_ == 1.) x2r_ = bornVariables.x2b(); else x2r_ = (bornVariables.x2b()/sqrt(xr_)) * sqrt((2.-(1.-xr_)*(1.+y_))/(2.-(1.-xr_)*(1.-y_))); // The diboson invariant mass is preserved as are the individual // diboson masses, as are theta1 and theta2: s2r_ = bornVariables.sb(); k12r_ = bornVariables.k12b(); k22r_ = bornVariables.k22b(); theta1r_ = bornVariables.theta1b(); if(xt_==1.) { // Now determine the variables of Frixione et al. for this x and y. // Eq.2.6 of WZ paper NPB 383(1992) 3-44): sr_ = s2r_; tkr_ = 0.*GeV2; ukr_ = 0.*GeV2; // Eq.2.12 of WZ paper NPB 383(1992) 3-44: cpsir_ = -1.; cpsiprr_= 999.; } else if(y_== 1.) { // Now determine the variables of Frixione et al. for this x and y. // Eq.2.6 of WZ paper NPB 383(1992) 3-44): sr_ = s2r_/xr_; tkr_ = 0.*GeV2; ukr_ = -sr_*(1.-xr_); // Eq.2.12 of WZ paper NPB 383(1992) 3-44: cpsir_ = -1.; cpsiprr_= 1.; } else if(y_==-1.) { // Now determine the variables of Frixione et al. for this x and y. // Eq.2.6 of WZ paper NPB 383(1992) 3-44): sr_ = s2r_/xr_; tkr_ = -sr_*(1.-xr_); ukr_ = 0.*GeV2; // Eq.2.12 of WZ paper NPB 383(1992) 3-44: cpsir_ = -1.; cpsiprr_= -1.; } else { // Now determine the variables of Frixione et al. for this x and y. // Eq.2.6 of WZ paper NPB 383(1992) 3-44): sr_ = s2r_/xr_; tkr_ = -0.5*sr_*(1.-xr_)*(1.-y_); ukr_ = -0.5*sr_*(1.-xr_)*(1.+y_); // Eq.2.12 of WZ paper NPB 383(1992) 3-44: double omxy((1.-xr_)*y_); double opx(1.+xr_); cpsir_ = -8.*xr_/(opx+omxy)/(opx-omxy)+1.; cpsiprr_ = (1.+y_-xr_*(1.-y_))/(1.+y_+xr_*(1.-y_)); // If an unphysical value of cos(psi) or cos(psi^prime) results, // and if the kinematics are also extreme (x-> 1) try setting // cpsir_ or cpsiprr_ to +/-1. accordingly. double tiny(1.e-10); double roundingError(0.); if(!(fabs(cpsir_)<=1.&&fabs(cpsiprr_)<=1.)) { if(cpsir_ > 1.&&cpsir_ < 1.+tiny) { roundingError=cpsir_-1.; cpsir_ = 1.; } if(cpsir_ < -1.&&cpsir_ > -1.-tiny) { roundingError=cpsir_+1.; cpsir_ =-1.; } if(cpsiprr_ > 1.&&cpsiprr_ < 1.+tiny) { roundingError=cpsiprr_-1.; cpsiprr_=1.; } if(cpsiprr_ < -1.&&cpsiprr_ > -1.-tiny) { roundingError=cpsiprr_+1.; cpsiprr_=-1.; } if(fabs(roundingError)>=tiny) throw Exception() << "realVVKinematics::realVVKinematics:\n" << "cosine of psi or psi^prime not in range -1,1.\n" << "1.-xr_ = " << 1.-xr_ << "\n" << "y_ = " << y_ << "\n" << "cpsir_ = " << cpsir_ << "\n" << "1.+cpsir_ = " << 1.+cpsir_ << "\n" << "1.-cpsir_ = " << 1.-cpsir_ << "\n" << "cpsiprr_ = " << cpsiprr_ << "\n" << "1.+cpsiprr_ = " << 1.+cpsiprr_ << "\n" << "1.-cpsiprr_ = " << 1.-cpsiprr_ << "\n" << "Consider increasing the local variable tiny" << "\n" << Exception::warning; } } // Remainder of Eq.2.12 of WZ paper NPB 383(1992) 3-44: Energy rs2(sqrt(s2r_ )); Energy m1(sqrt(k12r_)); Energy m2(sqrt(k22r_)); betaxr_ = sqrt(rs2+m1+m2) * sqrt(rs2-m1+m2) * sqrt(rs2-m1-m2) * sqrt(rs2+m1-m2) / s2r_; v1r_ = s2r_*betaxr_/(s2r_-(m2-m1)*(m2+m1)); v2r_ = s2r_*betaxr_/(s2r_+(m2-m1)*(m2+m1)); // Eq.2.13 of WZ paper NPB 383(1992) 3-44: if(xt_==1.) { q1r_ = k12r_ - 0.5*(sr_ )*betaxr_/v1r_*(1.-v1r_*cos(theta1r_)); q2r_ = k22r_ - 0.5*(sr_ )*betaxr_/v2r_*(1.-v2r_*cos(theta1r_)); } else if(y_== 1.) { q1r_ = k12r_ - 0.5*(sr_ )*betaxr_/v1r_*(1.-v1r_*cos(theta1r_)); q2r_ = k22r_ - 0.5*(sr_*xr_ )*betaxr_/v2r_*(1.-v2r_*cos(theta1r_)); } else if(y_==-1.) { q1r_ = k12r_ - 0.5*(sr_*xr_ )*betaxr_/v1r_*(1.-v1r_*cos(theta1r_)); q2r_ = k22r_ - 0.5*(sr_ )*betaxr_/v2r_*(1.-v2r_*cos(theta1r_)); } else { q1r_ = k12r_ - 0.5*(sr_+tkr_)*betaxr_/v1r_*(1.-v1r_*cos(theta1r_)); q2r_ = k22r_ - 0.5*(sr_+ukr_)*betaxr_/v2r_*(1.+v2r_*cos(theta2r_) *sin(theta1r_)*sqrt(1.-cpsir_)*sqrt(1.+cpsir_) +v2r_*cos(theta1r_)*cpsir_); } // Eq.2.7 of WZ paper NPB 383(1992) 3-44 (s2 was already defined above): q1hatr_ = k12r_ + k22r_ - sr_ - tkr_ - q1r_; q2hatr_ = k12r_ + k22r_ - sr_ - ukr_ - q2r_; w1r_ = k12r_ - q1r_ + q2r_ - tkr_; w2r_ = k22r_ + q1r_ - q2r_ - ukr_; // Reconstruct the momenta. k1b_, k2b_ should not have changed modulo // +/- conventions for things like sin(psi) and sin(psi^prime) (cf // Eq.2.12 of WZ paper). Energy p10r( (sr_ +tkr_)/2./sqrt(s2r_)); Energy p20r( (sr_ +ukr_)/2./sqrt(s2r_)); Energy k0r (-(ukr_+tkr_)/2./sqrt(s2r_)); double spsir = sqrt(1.-cpsir_ )*sqrt(1.+cpsir_ ); double spsiprr = sqrt(1.-cpsiprr_)*sqrt(1.+cpsiprr_); p1r_ = Lorentz5Momentum(0.*GeV,0.*GeV,p10r,p10r,0.*GeV); p2r_ = Lorentz5Momentum(0.*GeV, p20r*spsir ,p20r*cpsir_ ,p20r,0.*GeV); kr_ = Lorentz5Momentum(0.*GeV, k0r *spsiprr,k0r *cpsiprr_,k0r ,0.*GeV); k1r_ = Lorentz5Momentum(sqrt(s2r_)*v1r_*sin(theta2r_)*sin(theta1r_), sqrt(s2r_)*v1r_*cos(theta2r_)*sin(theta1r_), sqrt(s2r_)*v1r_*cos(theta1r_), sqrt(s2r_),sqrt(k12r_)); k2r_ = Lorentz5Momentum(sqrt(s2r_)*-v2r_*sin(theta2r_)*sin(theta1r_), sqrt(s2r_)*-v2r_*cos(theta2r_)*sin(theta1r_), sqrt(s2r_)*-v2r_*cos(theta1r_), sqrt(s2r_),sqrt(k22r_)); k1r_ *= betaxr_/2./v1r_; k2r_ *= betaxr_/2./v2r_; k1r_.setTau(sqrt(k12r_)); k2r_.setTau(sqrt(k22r_)); return; } void realVVKinematics::sanityCheck() const { // Sanity check: reconstruct the momenta and check agreement with // k1b_, k2b_. These should not have changed modulo +/- conventions // for things like sin(psi) and sin(psi^prime) (cf Eq.2.12 of WZ paper). Energy p10r( (sr_ +tkr_)/2./sqrt(s2r_)); Energy p20r( (sr_ +ukr_)/2./sqrt(s2r_)); Energy k0r (-(ukr_+tkr_)/2./sqrt(s2r_)); double spsir = sqrt(1-cpsir_ )*sqrt(1.+cpsir_ ); double spsiprr = sqrt(1-cpsiprr_)*sqrt(1.+cpsiprr_); Lorentz5Momentum p1r(0.*GeV,0.*GeV,p10r,p10r,0.*GeV); Lorentz5Momentum p2r(0.*GeV, p20r*spsir ,p20r*cpsir_ ,p20r,0.*GeV); Lorentz5Momentum kr (0.*GeV, k0r *spsiprr,k0r *cpsiprr_,k0r ,0.*GeV); Lorentz5Momentum k1r(sqrt(s2r_)*v1r_*sin(theta2r_)*sin(theta1r_), sqrt(s2r_)*v1r_*cos(theta2r_)*sin(theta1r_), sqrt(s2r_)*v1r_*cos(theta1r_), sqrt(s2r_),sqrt(k12r_)); Lorentz5Momentum k2r(sqrt(s2r_)*-v2r_*sin(theta2r_)*sin(theta1r_), sqrt(s2r_)*-v2r_*cos(theta2r_)*sin(theta1r_), sqrt(s2r_)*-v2r_*cos(theta1r_), sqrt(s2r_),sqrt(k22r_)); k1r *= betaxr_/2./v1r_; k2r *= betaxr_/2./v2r_; k1r.setTau(sqrt(k12r_)); k2r.setTau(sqrt(k22r_)); // Check that everything is on shell (nearly): if((p1r.m()-p1r.mass())/MeV>5.||(p2r.m()-p2r.mass())/MeV>5.|| (kr.m() -kr.mass() )/MeV>5.|| (k1r.m()-k1r.mass())/MeV>5.||(k2r.m()-k2r.mass())/MeV>5.) { cout << "\nrealVVKinematics off-shell particle(s) reconstructed:\n"; cout << "p1r = " << p1r /GeV << " " << "mass = " << p1r.mass()/GeV << " m = " << p1r.m()/GeV << endl; cout << "p2r = " << p2r /GeV << " " << "mass = " << p2r.mass()/GeV << " m = " << p2r.m()/GeV << endl; cout << "kr = " << kr /GeV << " " << "mass = " << kr.mass() /GeV << " m = " << kr.m() /GeV << endl; cout << "k1r = " << k1r /GeV << " " << "mass = " << k1r.mass()/GeV << " m = " << k1r.m()/GeV << endl; cout << "k2r = " << k2r /GeV << " " << "mass = " << k2r.mass()/GeV << " m = " << k2r.m()/GeV << endl; } // Check that the total momentum is conserved: Lorentz5Momentum total; total = p1r+p2r-kr-k1r-k2r; if(total.x()/MeV>0.1||total.y()/MeV>0.1||total.z()/MeV>0.1|| total.t()/MeV>0.1) cout << "\nrealVVKinematics momentum imbalance = " << total/GeV << endl; // OK rescale all spatial components so the invariant length // equals exactly the invariant length element of the 5Vector. p1r.rescaleRho(); p2r.rescaleRho(); kr.rescaleRho(); k1r.rescaleRho(); k2r.rescaleRho(); // Check that the total momentum is still conserved after the rescaling: total = p1r+p2r-kr-k1r-k2r; if(total.x()/MeV>0.1||total.y()/MeV>0.1||total.z()/MeV>0.1|| total.t()/MeV>0.1) cout << "\nrealVVKinematics momentum imbalance = " << total/GeV << endl; // Check that the final state momenta k1 and k2 are the same as // they are in the 2->2 process up to an azimuthal rotation; note // that the azimuthal angle of k1 and k2 in their rest frame is // defined by the radiative variable theta2 which is in turn defined // w.r.t the transverse momentum of the emitted parton, while in // the born process the azimuthal angle of k1 / k2 is basically // meaningless (random). Lorentz5Momentum k1diff(bornVariables_.k1b()-k1r); Lorentz5Momentum k2diff(bornVariables_.k2b()-k2r); Energy k1pTdiff(bornVariables_.k1b().perp()-k1r.perp()); Energy k2pTdiff(bornVariables_.k2b().perp()-k2r.perp()); if(k1pTdiff/GeV>1.e-7||k1diff.z()/GeV>1.e-7|| k1diff.t()/GeV>1.e-7||k1diff.tau()/GeV>1.e-7) { cout << "\n\n\nrealVVKinematics:\n"; cout << "k1b = " << bornVariables_.k1b()/GeV << endl; cout << "k1r = " << k1r /GeV << endl; cout << "k1diff = " << k1diff/GeV << endl; cout << "pTdiff = " << k1pTdiff/GeV << endl; } if(k2pTdiff/GeV>1.e-7||k2diff.z()/GeV>1.e-7|| k2diff.t()/GeV>1.e-7||k2diff.tau()/GeV>1.e-7) { cout << "\n\n\nrealVVKinematics:\n"; cout << "k2b = " << bornVariables_.k2b()/GeV << endl; cout << "k2r = " << k2r /GeV << endl; cout << "k2diff = " << k2diff/GeV << endl; cout << "pTdiff = " << k2pTdiff/GeV << endl; } // Check also that for y_=+/-1 you also get Born-like initial state momenta if(xt_!=1.&&y_== 1.) { Lorentz5Momentum p1bdiff = (p1r-kr-bornVariables_.p1b()); if(p1bdiff.x()/GeV>1.e-7||p1bdiff.y()/GeV>1.e-7||p1bdiff.z()/GeV>1.e-7|| p1bdiff.t()/GeV>1.e-7||p1bdiff.tau()/GeV>1.e-7) { cout << "\n\n\nrealVVKinematics: error for y_= 1.\n"; cout << "p1r-kr = " << (p1r-kr) /GeV << endl; cout << "p1b = " << bornVariables_.p1b() /GeV << endl; cout << "p1r-kr-p1b = " << (p1r-kr-bornVariables_.p1b())/GeV << endl; } Lorentz5Momentum p2bdiff = (p2r-bornVariables_.p2b()); if(p2bdiff.x()/GeV>1.e-7||p2bdiff.y()/GeV>1.e-7||p2bdiff.z()/GeV>1.e-7|| p2bdiff.t()/GeV>1.e-7||p2bdiff.tau()/GeV>1.e-7) { cout << "\n\n\nrealVVKinematics: error for y_=-1.\n"; cout << "p2r = " << p2r /GeV << endl; cout << "p2b = " << bornVariables_.p2b() /GeV << endl; cout << "p2r-p2b = " << (p2r-bornVariables_.p2b())/GeV << endl; } } if(xt_!=1.&&y_==-1.) { Lorentz5Momentum p2bdiff = (p2r-kr-bornVariables_.p2b()); if(p2bdiff.x()/GeV>1.e-7||p2bdiff.y()/GeV>1.e-7||p2bdiff.z()/GeV>1.e-7|| p2bdiff.t()/GeV>1.e-7||p2bdiff.tau()/GeV>1.e-7) { cout << "\n\n\nrealVVKinematics: error for y_=-1.\n"; cout << "p2r-kr = " << (p2r-kr) /GeV << endl; cout << "p2b = " << bornVariables_.p2b() /GeV << endl; cout << "p2r-kr-p2b = " << (p2r-kr-bornVariables_.p2b())/GeV << endl; } Lorentz5Momentum p1bdiff = (p1r-bornVariables_.p1b()); if(p1bdiff.x()/GeV>1.e-7||p1bdiff.y()/GeV>1.e-7||p1bdiff.z()/GeV>1.e-7|| p1bdiff.t()/GeV>1.e-7||p1bdiff.tau()/GeV>1.e-7) { cout << "\n\n\nrealVVKinematics: error for y_=-1.\n"; cout << "p1r = " << p1r /GeV << endl; cout << "p1b = " << bornVariables_.p1b() /GeV << endl; cout << "p1r-p1b = " << (p1r-bornVariables_.p1b())/GeV << endl; } } // And that for xt_=1 you also get the Born initial state momenta if(xt_== 1.) { Lorentz5Momentum p1bdiff = (p1r-bornVariables_.p1b()); if(p1bdiff.x()/GeV>1.e-7||p1bdiff.y()/GeV>1.e-7||p1bdiff.z()/GeV>1.e-7|| p1bdiff.t()/GeV>1.e-7||p1bdiff.tau()/GeV>1.e-7) { cout << "\n\n\nrealVVKinematics: error for xt_= 1.\n"; cout << "p1r = " << p1r /GeV << endl; cout << "p1b = " << bornVariables_.p1b() /GeV << endl; cout << "p1r-p1b = " << (p1r-bornVariables_.p1b())/GeV << endl; } Lorentz5Momentum p2bdiff = (p2r-bornVariables_.p2b()); if(p2bdiff.x()/GeV>1.e-7||p2bdiff.y()/GeV>1.e-7||p2bdiff.z()/GeV>1.e-7|| p2bdiff.t()/GeV>1.e-7||p2bdiff.tau()/GeV>1.e-7) { cout << "\n\n\nrealVVKinematics: error for xt_= 1.\n"; cout << "p2r = " << p2r /GeV << endl; cout << "p2b = " << bornVariables_.p2b() /GeV << endl; cout << "p2r-p2b = " << (p2r-bornVariables_.p2b())/GeV << endl; } } return; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEPP2HiggsPowheg.cc����������������������������������������0000644�0001750�0001750�00000046326�11754474775�024310� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEPP2HiggsPowheg.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2HiggsPowheg class. // #include "MEPP2HiggsPowheg.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Cuts/Cuts.h" using namespace Herwig; MEPP2HiggsPowheg::MEPP2HiggsPowheg() : CF_(4./3.) , CA_(3.) , TR_(0.5) , nlf_(5) , beta0_((11.*CA_/3. - 4.*TR_*nlf_/3.)/(4.*Constants::pi)) , contrib_(1) , nlo_alphaS_opt_(0) , fixed_alphaS_(0.118109485), scaleopt_(1), mu_F_(100.*GeV) , mu_UV_(100.*GeV) , scaleFact_(1.) {} ClassDescription<MEPP2HiggsPowheg> MEPP2HiggsPowheg::initMEPP2HiggsPowheg; // Definition of the static class description member. void MEPP2HiggsPowheg::persistentOutput(PersistentOStream & os) const { os << contrib_ << nlo_alphaS_opt_ << fixed_alphaS_ << scaleopt_ << ounit(mu_F_,GeV) << ounit(mu_UV_,GeV) << scaleFact_ ; } void MEPP2HiggsPowheg::persistentInput(PersistentIStream & is, int) { is >> contrib_ >> nlo_alphaS_opt_ >> fixed_alphaS_ >> scaleopt_ >> iunit(mu_F_,GeV) >> iunit(mu_UV_,GeV) >> scaleFact_ ; } void MEPP2HiggsPowheg::Init() { static ClassDocumentation<MEPP2HiggsPowheg> documentation ("The MEPP2HiggsPowheg class implements the matrix elements for" " Higgs production (with decay H->W-W+) in hadron-hadron collisions.", "The PP$\\to$Higgs POWHEG matrix element is described in \\cite{Hamilton:2009za}.", "%\\cite{Hamilton:2009za}\n" "\\bibitem{Hamilton:2009za}\n" " K.~Hamilton, P.~Richardson and J.~Tully,\n" " %``A Positive-Weight Next-to-Leading Order Monte Carlo Simulation for Higgs\n" " %Boson Production,''\n" " JHEP {\\bf 0904} (2009) 116\n" " [arXiv:0903.4345 [hep-ph]].\n" " %%CITATION = JHEPA,0904,116;%%\n" ); static Switch<MEPP2HiggsPowheg,unsigned int> interfaceContribution ("Contribution", "Which contributions to the cross section to include", &MEPP2HiggsPowheg::contrib_, 1, false, false); static SwitchOption interfaceContributionLeadingOrder (interfaceContribution, "LeadingOrder", "Just generate the leading order cross section", 0); static SwitchOption interfaceContributionPositiveNLO (interfaceContribution, "PositiveNLO", "Generate the positive contribution to the full NLO cross section", 1); static SwitchOption interfaceContributionNegativeNLO (interfaceContribution, "NegativeNLO", "Generate the negative contribution to the full NLO cross section", 2); static Switch<MEPP2HiggsPowheg,unsigned int> interfaceNLOalphaSopt ("NLOalphaSopt", "Whether to use a fixed or a running QCD coupling for the NLO weight", &MEPP2HiggsPowheg::nlo_alphaS_opt_, 0, false, false); static SwitchOption interfaceNLOalphaSoptRunningAlphaS (interfaceNLOalphaSopt, "RunningAlphaS", "Use the usual running QCD coupling evaluated at scale scale()", 0); static SwitchOption interfaceNLOalphaSoptFixedAlphaS (interfaceNLOalphaSopt, "FixedAlphaS", "Use a constant QCD coupling for comparison/debugging purposes", 1); static Parameter<MEPP2HiggsPowheg,double> interfaceFixedNLOalphaS ("FixedNLOalphaS", "The value of alphaS to use for the nlo weight if nlo_alphaS_opt_=1", &MEPP2HiggsPowheg::fixed_alphaS_, 0.11803463, 0., 1.0, false, false, Interface::limited); static Switch<MEPP2HiggsPowheg,unsigned int> interfaceFactorizationScaleOption ("FactorizationScaleOption", "Option for the choice of factorization (and renormalization) scale", &MEPP2HiggsPowheg::scaleopt_, 1, false, false); static SwitchOption interfaceDynamic (interfaceFactorizationScaleOption, "Dynamic", "Dynamic factorization scale equal to the current sqrt(sHat())", 1); static SwitchOption interfaceFixed (interfaceFactorizationScaleOption, "Fixed", "Use a fixed factorization scale set with FactorizationScaleValue", 2); static Parameter<MEPP2HiggsPowheg,Energy> interfaceFactorizationScaleValue ("FactorizationScaleValue", "Value to use in the event of a fixed factorization scale", &MEPP2HiggsPowheg::mu_F_, GeV, 100.0*GeV, 50.0*GeV, 500.0*GeV, true, false, Interface::limited); static Parameter<MEPP2HiggsPowheg,Energy> interfaceRenormalizationScaleValue ("RenormalizationScaleValue", "Value to use for the (UV) renormalization scale", &MEPP2HiggsPowheg::mu_UV_, GeV, 100.0*GeV, 50.0*GeV, 500.0*GeV, true, false, Interface::limited); static Parameter<MEPP2HiggsPowheg,double> interfaceScaleFactor ("ScaleFactor", "The factor used before sHat if using a running scale", &MEPP2HiggsPowheg::scaleFact_, 1.0, 0.0, 10.0, false, false, Interface::limited); } Energy2 MEPP2HiggsPowheg::scale() const { return scaleopt_ == 1 ? sqr(scaleFact_)*sHat() : sqr(scaleFact_*mu_F_); } int MEPP2HiggsPowheg::nDim() const { return 2; } bool MEPP2HiggsPowheg::generateKinematics(const double * r) { // Generate the radiative integration variables: xt_= *r; y_ = *(r+1) * 2. - 1.; // Continue with lo matrix element code: return MEPP2Higgs::generateKinematics(r); } double MEPP2HiggsPowheg::me2() const { useMe(); double output = MEPP2Higgs::me2(); if (mePartonData()[0]->id() == ParticleID::g && mePartonData()[1]->id() == ParticleID::g) { get_born_variables(); // NB - lo_ggME_ equals sqr(alphaS/(pi*vev))* // sqr(p2_)/576. _ALL_IN_MeVs_! lo_ggME_ = output; output *= NLOweight(); } return output; } double MEPP2HiggsPowheg::NLOweight() const { // If only leading order is required return 1: if(contrib_==0) return 1.; // ATTENTION!!! - for consistency with LO matrix element ALL // energy dimensions should be understood as MeVs! // If necessary swap the particle data vectors so that xbp_, // mePartonData[0], beam[0] relate to the inbound particle a. // [ Irrelevant for gg collisions!! Kept as an aide memoire. ] if(!(lastPartons().first ->dataPtr()==a_lo_&& lastPartons().second->dataPtr()==b_lo_)) { swap(xbp_ ,xbm_ ); swap(etabarp_ ,etabarm_ ); swap(hadron_A_,hadron_B_); } // calculate the PDF's for the Born process lo_lumi_ = hadron_A_->pdf()->xfx(hadron_A_,a_lo_,scale(),xbp_)/xbp_ * hadron_B_->pdf()->xfx(hadron_B_,b_lo_,scale(),xbm_)/xbm_; // Calculate alpha_S and alpha_S/(2*pi) alphaS_ = nlo_alphaS_opt_==1 ? fixed_alphaS_ : SM().alphaS(scale()); double alsOn2pi(alphaS_/2./Constants::pi); // Particle data objects for the new plus and minus colliding partons. tcPDPtr a_nlo, b_nlo; // Calculate the integrand double wgt(0.); // g g contribution a_nlo=getParticleData(ParticleID::g); b_nlo=getParticleData(ParticleID::g); double wggvirt = Vtilde_universal() + M_V_regular()/lo_ggME_; double wggcollin = alsOn2pi * ( Ctilde_Ltilde_gg_on_x(a_nlo,b_nlo,xt_, 1.) + Ctilde_Ltilde_gg_on_x(a_nlo,b_nlo,xt_,-1.)); double wggreal = alsOn2pi * Rtilde_Ltilde_gg_on_x(a_nlo,b_nlo,xt_,y_); double wgg = wggvirt + wggcollin + wggreal; // g q + g qbar contributions a_nlo=getParticleData(ParticleID::g); double wgqcollin(0.) , wgqreal(0.) , wgq(0.) ; for(int ix=1; ix<=nlf_; ++ix) { b_nlo=getParticleData( ix); wgqcollin = alsOn2pi*Ctilde_Ltilde_qg_on_x(a_nlo,b_nlo,xt_,-1.); wgqreal = alsOn2pi*Rtilde_Ltilde_gq_on_x(a_nlo,b_nlo,xt_,y_); wgq += wgqreal+wgqcollin; b_nlo=getParticleData(-ix); wgqcollin = alsOn2pi*Ctilde_Ltilde_qg_on_x(a_nlo,b_nlo,xt_,-1.); wgqreal = alsOn2pi*Rtilde_Ltilde_gq_on_x(a_nlo,b_nlo,xt_,y_); wgq += wgqreal+wgqcollin; } // q g + qbar g contributions b_nlo=getParticleData(ParticleID::g); double wqgcollin(0.) , wqgreal(0.) , wqg(0.) ; for(int ix=1; ix<=nlf_; ++ix) { a_nlo=getParticleData( ix); wqgcollin = alsOn2pi*Ctilde_Ltilde_qg_on_x(a_nlo,b_nlo,xt_, 1.); wqgreal = alsOn2pi*Rtilde_Ltilde_qg_on_x(a_nlo,b_nlo,xt_,y_); wqg += wqgreal+wqgcollin; a_nlo=getParticleData(-ix); wqgcollin = alsOn2pi*Ctilde_Ltilde_qg_on_x(a_nlo,b_nlo,xt_, 1.); wqgreal = alsOn2pi*Rtilde_Ltilde_qg_on_x(a_nlo,b_nlo,xt_,y_); wqg += wqgreal+wqgcollin; } // q qbar + qbar q contributions double wqqbarreal(0.), wqqbar(0.); for(int ix=1; ix<=nlf_; ++ix) { a_nlo=getParticleData( ix); b_nlo=getParticleData(-ix); wqqbarreal = alsOn2pi*Rtilde_Ltilde_qqbar_on_x(a_nlo,b_nlo,xt_,y_); wqqbar += wqqbarreal; a_nlo=getParticleData(-ix); b_nlo=getParticleData( ix); wqqbarreal = alsOn2pi*Rtilde_Ltilde_qbarq_on_x(a_nlo,b_nlo,xt_,y_); wqqbar += wqqbarreal; } // total wgt = 1.+(wgg+wgq+wqg+wqqbar); return contrib_==1 ? max(0.,wgt) : max(0.,-wgt); } void MEPP2HiggsPowheg::get_born_variables() const { assert(meMomenta().size()==3); // Particle data for QCD particles: a_lo_=mePartonData()[0]; b_lo_=mePartonData()[1]; // BeamParticleData objects for PDF's hadron_A_=dynamic_ptr_cast<Ptr<BeamParticleData>::transient_const_pointer> (lastParticles().first->dataPtr()); hadron_B_=dynamic_ptr_cast<Ptr<BeamParticleData>::transient_const_pointer> (lastParticles().second->dataPtr()); // Leading order momentum fractions and associated etabar's xbp_ = lastX1(); etabarp_ = sqrt(1.-xbp_); xbm_ = lastX2(); etabarm_ = sqrt(1.-xbm_); // Assign Born variables p2_ = sHat(); s2_ = p2_; return; } double MEPP2HiggsPowheg::xbar(double y) const { double xbp2(sqr(xbp_)), xbm2(sqr(xbm_)); double omy(-999.) , opy( 999.) ; double xbar1(-999.) , xbar2(-999.) ; if(y== 1.) return xbp_; if(y==-1.) return xbm_; omy = 1.-y; opy = 1.+y; xbar1=2.*opy*xbp2/ (sqrt(sqr(1.+xbp2)*sqr(omy)+16.*y*xbp2)+omy*(1.-xbp_)*(1.+xbp_)); xbar2=2.*omy*xbm2/ (sqrt(sqr(1.+xbm2)*sqr(opy)-16.*y*xbm2)+opy*(1.-xbm_)*(1.+xbm_)); return max(xbar1,xbar2); } double MEPP2HiggsPowheg::etabar(double y) const { return sqrt(1.-xbar(y)); } double MEPP2HiggsPowheg::xp(double x, double y) const { if(x== 1.) return xbp_ ; if(y==-1.) return xbp_ ; if(y== 1.) return xbp_/x; return (xbp_/sqrt(x))*sqrt((2.-(1.-x)*(1.-y))/(2.-(1.-x)*(1.+y))); } double MEPP2HiggsPowheg::xm(double x, double y) const { if(x== 1.) return xbm_ ; if(y==-1.) return xbm_/x; if(y== 1.) return xbm_ ; return (xbm_/sqrt(x))*sqrt((2.-(1.-x)*(1.+y))/(2.-(1.-x)*(1.-y))); } double MEPP2HiggsPowheg::Lhat_ab(tcPDPtr a, tcPDPtr b, double x, double y) const { double nlo_lumi(-999.); double xp_x_y(xp(x,y)),xm_x_y(xm(x,y)); nlo_lumi = (hadron_A_->pdf()->xfx(hadron_A_,a,scale(),xp_x_y)/xp_x_y) * (hadron_B_->pdf()->xfx(hadron_B_,b,scale(),xm_x_y)/xm_x_y); return nlo_lumi / lo_lumi_; } double MEPP2HiggsPowheg::Vtilde_universal() const { return alphaS_/2./Constants::pi*CA_ * ( log(p2_/scale())*( 2.*(2.*Constants::pi*beta0_/CA_) + 4.*log(etabarp_)+4.*log(etabarm_)) + 8.*sqr(log(etabarp_)) + 8.*sqr(log(etabarm_)) - 2.*sqr(Constants::pi)/3. ) + alphaS_/2./Constants::pi*CA_ * ( 8./(1.+y_)*log(etabar(y_)/etabarm_) + 8./(1.-y_)*log(etabar(y_)/etabarp_) ); } double MEPP2HiggsPowheg::Ctilde_Ltilde_gg_on_x(tcPDPtr a, tcPDPtr b, double xt, double y ) const { if(y!= 1.&&y!=-1.) { cout << "\nCtilde_gg::y value not allowed."; } if(y== 1.&&a->id()!=21) cout << "\nCtilde_gg::for Cgg^plus a must be a gluon! id = " << a->id() << "\n"; if(y==-1.&&b->id()!=21) cout << "\nCtilde_gg::for Cgg^minus b must be a gluon! id = " << b->id() << "\n"; double x_pm = x(xt,y); double etabar_pm = y == 1. ? etabarp_ : etabarm_ ; return ( ( (1./(1.-xt))*log(p2_/scale()/x_pm)+4.*log(etabar_pm)/(1.-xt) + 2.*log(1.-xt)/(1.-xt) )*2.*CA_*(x_pm+sqr(1.-x_pm)/x_pm+x_pm*sqr(1.-x_pm)) )*Lhat_ab(a,b,x_pm,y) / x_pm - ( ( (1./(1.-xt))*log(p2_/scale() )+4.*log(etabar_pm)/(1.-xt) + 2.*log(1.-xt)/(1.-xt) )*2.*CA_ ); } double MEPP2HiggsPowheg::Ctilde_Ltilde_qg_on_x(tcPDPtr a, tcPDPtr b, double xt, double y ) const { if(y!= 1.&&y!=-1.) { cout << "\nCtilde_qg::y value not allowed."; } if(y== 1.&&!(abs(a->id())>0&&abs(a->id())<7)) cout << "\nCtilde_qg::for Cqg^plus a must be a quark! id = " << a->id() << "\n"; if(y==-1.&&!(abs(b->id())>0&&abs(b->id())<7)) cout << "\nCtilde_qg::for Cqg^minus b must be a quark! id = " << b->id() << "\n"; double x_pm = x(xt,y); double etabar_pm = y == 1. ? etabarp_ : etabarm_ ; return ( ( (1./(1.-xt))*log(p2_/scale()/x_pm)+4.*log(etabar_pm)/(1.-xt) + 2.*log(1.-xt)/(1.-xt) )*(1.-x_pm)*CF_*(1.+sqr(1.-x_pm))/x_pm + sqr(etabar_pm)*CF_*x_pm )*Lhat_ab(a,b,x_pm,y) / x_pm; } double MEPP2HiggsPowheg::Ctilde_Ltilde_gq_on_x(tcPDPtr a, tcPDPtr b, double xt, double y ) const { if(y!= 1.&&y!=-1.) { cout << "\nCtilde_gq::y value not allowed."; } if(y== 1.&&a->id()!=21) cout << "\nCtilde_gq::for Cgq^plus a must be a gluon! id = " << a->id() << "\n"; if(y==-1.&&b->id()!=21) cout << "\nCtilde_gq::for Cgq^minus b must be a gluon! id = " << b->id() << "\n"; double x_pm = x(xt,y); double etabar_pm = y == 1. ? etabarp_ : etabarm_ ; return ( ( (1./(1.-xt))*log(p2_/scale()/x_pm)+4.*log(etabar_pm)/(1.-xt) + 2.*log(1.-xt)/(1.-xt) )*(1.-x_pm)*TR_*(sqr(x_pm)+sqr(1.-x_pm)) + sqr(etabar_pm)*TR_*2.*x_pm*(1.-x_pm) )*Lhat_ab(a,b,x_pm,y) / x_pm; } double MEPP2HiggsPowheg::M_V_regular() const { // If the we are using a dynamic scale we use the same scale // for the renormalization scale as for the factorization scale Energy2 mu_UV2 = scaleopt_ == 1 ? scale() : sqr(mu_UV_); return alphaS_/2./Constants::pi*CA_* ( 11./3. + 4.*sqr(Constants::pi)/3. - (4.*Constants::pi*beta0_/CA_)*log(p2_/mu_UV2) )*lo_ggME_; } Energy2 MEPP2HiggsPowheg::t_u_M_R_qqbar(double xt, double y) const { return 8.*Constants::pi*alphaS_*32./9./sqr(p2_)/s(xt,y)*tk(xt,y)*uk(xt,y) *( sqr(tk(xt,y)) + sqr(uk(xt,y)) )*lo_ggME_; } Energy2 MEPP2HiggsPowheg::t_u_M_R_qbarq(double xt, double y) const { return 8.*Constants::pi*alphaS_*32./9./sqr(p2_)/s(xt,y)*uk(xt,y)*tk(xt,y) *( sqr(uk(xt,y)) + sqr(tk(xt,y)) )*lo_ggME_; } Energy2 MEPP2HiggsPowheg::t_u_M_R_gg(double xt, double y) const { return 8.*Constants::pi*alphaS_*3./sqr(p2_)/s(xt,y) *( sqr(sqr(p2_ )) + sqr(sqr(s( xt,y))) + sqr(sqr(tk(xt,y))) + sqr(sqr(uk(xt,y))) )*lo_ggME_; } Energy2 MEPP2HiggsPowheg::t_u_M_R_qg(double xt, double y) const { return 8.*Constants::pi*alphaS_*-4./3./sqr(p2_)*uk(xt,y) *( sqr(s(xt,y)) + sqr(uk(xt,y)) )*lo_ggME_; } Energy2 MEPP2HiggsPowheg::t_u_M_R_gq(double xt, double y) const { return 8.*Constants::pi*alphaS_*-4./3./sqr(p2_)*tk(xt,y) *( sqr(s(xt,y)) + sqr(tk(xt,y)) )*lo_ggME_; } double MEPP2HiggsPowheg::Rtilde_Ltilde_qqbar_on_x(tcPDPtr a , tcPDPtr b, double xt, double y ) const { return ( ( 1./s(xt ,y ) * t_u_M_R_qqbar(xt ,y )*Lhat_ab(a,b,x(xt ,y ),y ) - 1./s(xt , 1.) * t_u_M_R_qqbar(xt , 1.)*Lhat_ab(a,b,x(xt , 1.), 1.) - 1./s( 1.,y ) * t_u_M_R_qqbar( 1.,y ) + 1./s( 1., 1.) * t_u_M_R_qqbar( 1., 1.) )*2./(1.-y)/(1.-xt) + ( 1./s(xt ,y ) * t_u_M_R_qqbar(xt ,y )*Lhat_ab(a,b,x(xt ,y ),y ) - 1./s(xt ,-1.) * t_u_M_R_qqbar(xt ,-1.)*Lhat_ab(a,b,x(xt ,-1.),-1.) - 1./s( 1.,y ) * t_u_M_R_qqbar( 1.,y ) + 1./s( 1.,-1.) * t_u_M_R_qqbar( 1.,-1.) )*2./(1.+y)/(1.-xt) ) / lo_ggME_ / 8. / Constants::pi / alphaS_; } double MEPP2HiggsPowheg::Rtilde_Ltilde_qbarq_on_x(tcPDPtr a , tcPDPtr b, double xt, double y ) const { return ( ( 1./s(xt ,y ) * t_u_M_R_qbarq(xt ,y )*Lhat_ab(a,b,x(xt ,y ),y ) - 1./s(xt , 1.) * t_u_M_R_qbarq(xt , 1.)*Lhat_ab(a,b,x(xt , 1.), 1.) - 1./s( 1.,y ) * t_u_M_R_qbarq( 1.,y ) + 1./s( 1., 1.) * t_u_M_R_qbarq( 1., 1.) )*2./(1.-y)/(1.-xt) + ( 1./s(xt ,y ) * t_u_M_R_qbarq(xt ,y )*Lhat_ab(a,b,x(xt ,y ),y ) - 1./s(xt ,-1.) * t_u_M_R_qbarq(xt ,-1.)*Lhat_ab(a,b,x(xt ,-1.),-1.) - 1./s( 1.,y ) * t_u_M_R_qbarq( 1.,y ) + 1./s( 1.,-1.) * t_u_M_R_qbarq( 1.,-1.) )*2./(1.+y)/(1.-xt) ) / lo_ggME_ / 8. / Constants::pi / alphaS_; } double MEPP2HiggsPowheg::Rtilde_Ltilde_gg_on_x(tcPDPtr a , tcPDPtr b, double xt, double y ) const { return ( ( 1./s(xt ,y ) * t_u_M_R_gg(xt ,y )*Lhat_ab(a,b,x(xt ,y ),y ) - 1./s(xt , 1.) * t_u_M_R_gg(xt , 1.)*Lhat_ab(a,b,x(xt , 1.), 1.) - 1./s( 1.,y ) * t_u_M_R_gg( 1.,y ) + 1./s( 1., 1.) * t_u_M_R_gg( 1., 1.) )*2./(1.-y)/(1.-xt) + ( 1./s(xt ,y ) * t_u_M_R_gg(xt ,y )*Lhat_ab(a,b,x(xt ,y ),y ) - 1./s(xt ,-1.) * t_u_M_R_gg(xt ,-1.)*Lhat_ab(a,b,x(xt ,-1.),-1.) - 1./s( 1.,y ) * t_u_M_R_gg( 1.,y ) + 1./s( 1.,-1.) * t_u_M_R_gg( 1.,-1.) )*2./(1.+y)/(1.-xt) ) / lo_ggME_ / 8. / Constants::pi / alphaS_; } double MEPP2HiggsPowheg::Rtilde_Ltilde_gq_on_x(tcPDPtr a , tcPDPtr b, double xt, double y ) const { return ( ( 1./s(xt ,y ) * t_u_M_R_gq(xt ,y )*Lhat_ab(a,b,x(xt ,y ),y ) - 1./s(xt , 1.) * t_u_M_R_gq(xt , 1.)*Lhat_ab(a,b,x(xt , 1.), 1.) - 1./s( 1.,y ) * t_u_M_R_gq( 1.,y ) + 1./s( 1., 1.) * t_u_M_R_gq( 1., 1.) )*2./(1.-y)/(1.-xt) + ( 1./s(xt ,y ) * t_u_M_R_gq(xt ,y )*Lhat_ab(a,b,x(xt ,y ),y ) - 1./s(xt ,-1.) * t_u_M_R_gq(xt ,-1.)*Lhat_ab(a,b,x(xt ,-1.),-1.) - 1./s( 1.,y ) * t_u_M_R_gq( 1.,y ) + 1./s( 1.,-1.) * t_u_M_R_gq( 1.,-1.) )*2./(1.+y)/(1.-xt) ) / lo_ggME_ / 8. / Constants::pi / alphaS_; } double MEPP2HiggsPowheg::Rtilde_Ltilde_qg_on_x(tcPDPtr a , tcPDPtr b, double xt, double y ) const { return ( ( 1./s(xt ,y ) * t_u_M_R_qg(xt ,y )*Lhat_ab(a,b,x(xt ,y ),y ) - 1./s(xt , 1.) * t_u_M_R_qg(xt , 1.)*Lhat_ab(a,b,x(xt , 1.), 1.) - 1./s( 1.,y ) * t_u_M_R_qg( 1.,y ) + 1./s( 1., 1.) * t_u_M_R_qg( 1., 1.) )*2./(1.-y)/(1.-xt) + ( 1./s(xt ,y ) * t_u_M_R_qg(xt ,y )*Lhat_ab(a,b,x(xt ,y ),y ) - 1./s(xt ,-1.) * t_u_M_R_qg(xt ,-1.)*Lhat_ab(a,b,x(xt ,-1.),-1.) - 1./s( 1.,y ) * t_u_M_R_qg( 1.,y ) + 1./s( 1.,-1.) * t_u_M_R_qg( 1.,-1.) )*2./(1.+y)/(1.-xt) ) / lo_ggME_ / 8. / Constants::pi / alphaS_; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEPP2ZHPowheg.cc�������������������������������������������0000644�0001750�0001750�00000032416�11754474775�023563� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2ZHPowheg class. // #include "MEPP2ZHPowheg.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/PDT/DecayMode.h" using namespace Herwig; MEPP2ZHPowheg::MEPP2ZHPowheg() : _gluon(), TR_(0.5), CF_(4./3.), _contrib(1) ,_nlo_alphaS_opt(0), _fixed_alphaS(0.115895), _a(0.5) ,_p(0.7) , _eps(1.0e-8), _scaleopt(1), _fixedScale(100.*GeV), _scaleFact(1.) {} void MEPP2ZHPowheg::persistentOutput(PersistentOStream & os) const { os << _contrib << _nlo_alphaS_opt << _fixed_alphaS << _a << _p << _gluon << _scaleopt << ounit(_fixedScale,GeV) << _scaleFact; } void MEPP2ZHPowheg::persistentInput(PersistentIStream & is, int) { is >> _contrib >> _nlo_alphaS_opt >> _fixed_alphaS >> _a >> _p >> _gluon >> _scaleopt >> iunit(_fixedScale,GeV) >> _scaleFact; } ClassDescription<MEPP2ZHPowheg> MEPP2ZHPowheg::initMEPP2ZHPowheg; // Definition of the static class description member. void MEPP2ZHPowheg::Init() { static ClassDocumentation<MEPP2ZHPowheg> documentation ("The MEPP2ZHPowheg class implements the matrix element for q qbar -> Z H", "The PP$\\to$Z Higgs POWHEG matrix element is described in \\cite{Hamilton:2009za}.", "\\bibitem{Hamilton:2009za}\n" " K.~Hamilton, P.~Richardson and J.~Tully,\n" " %``A Positive-Weight Next-to-Leading Order Monte Carlo Simulation for Higgs\n" " %Boson Production,''\n" " JHEP {\\bf 0904} (2009) 116\n" " [arXiv:0903.4345 [hep-ph]].\n" " %%CITATION = JHEPA,0904,116;%%\n" ); static Switch<MEPP2ZHPowheg,unsigned int> interfaceContribution ("Contribution", "Which contributions to the cross section to include", &MEPP2ZHPowheg::_contrib, 1, false, false); static SwitchOption interfaceContributionLeadingOrder (interfaceContribution, "LeadingOrder", "Just generate the leading order cross section", 0); static SwitchOption interfaceContributionPositiveNLO (interfaceContribution, "PositiveNLO", "Generate the positive contribution to the full NLO cross section", 1); static SwitchOption interfaceContributionNegativeNLO (interfaceContribution, "NegativeNLO", "Generate the negative contribution to the full NLO cross section", 2); static Switch<MEPP2ZHPowheg,unsigned int> interfaceNLOalphaSopt ("NLOalphaSopt", "Whether to use a fixed or a running QCD coupling for the NLO weight", &MEPP2ZHPowheg::_nlo_alphaS_opt, 0, false, false); static SwitchOption interfaceNLOalphaSoptRunningAlphaS (interfaceNLOalphaSopt, "RunningAlphaS", "Use the usual running QCD coupling evaluated at scale scale()", 0); static SwitchOption interfaceNLOalphaSoptFixedAlphaS (interfaceNLOalphaSopt, "FixedAlphaS", "Use a constant QCD coupling for comparison/debugging purposes", 1); static Parameter<MEPP2ZHPowheg,double> interfaceFixedNLOalphaS ("FixedNLOalphaS", "The value of alphaS to use for the nlo weight if _nlo_alphaS_opt=1", &MEPP2ZHPowheg::_fixed_alphaS, 0.115895, 0., 1.0, false, false, Interface::limited); static Parameter<MEPP2ZHPowheg,double> interfaceCorrectionCoefficient ("CorrectionCoefficient", "The magnitude of the correction term to reduce the negative contribution", &MEPP2ZHPowheg::_a, 0.5, -10., 10.0, false, false, Interface::limited); static Parameter<MEPP2ZHPowheg,double> interfaceCorrectionPower ("CorrectionPower", "The power of the correction term to reduce the negative contribution", &MEPP2ZHPowheg::_p, 0.7, 0.0, 1.0, false, false, Interface::limited); static Switch<MEPP2ZHPowheg,unsigned int> interfaceFactorizationScaleOption ("FactorizationScaleOption", "Option for the scale to be used", &MEPP2ZHPowheg::_scaleopt, 1, false, false); static SwitchOption interfaceScaleOptionFixed (interfaceFactorizationScaleOption, "Fixed", "Use a fixed scale", 0); static SwitchOption interfaceScaleOptionsHat (interfaceFactorizationScaleOption, "Dynamic", "Use the mass of the vector boson-Higgs boson system", 1); static Parameter<MEPP2ZHPowheg,Energy> interfaceFactorizationScaleValue ("FactorizationScaleValue", "The fixed scale to use if required", &MEPP2ZHPowheg::_fixedScale, GeV, 100.0*GeV, 10.0*GeV, 1000.0*GeV, false, false, Interface::limited); static Parameter<MEPP2ZHPowheg,double> interfaceScaleFactor ("ScaleFactor", "The factor used before sHat if using a running scale", &MEPP2ZHPowheg::_scaleFact, 1.0, 0.0, 10.0, false, false, Interface::limited); } void MEPP2ZHPowheg::doinit() { // gluon ParticleData object _gluon = getParticleData(ParticleID::g); MEPP2ZH::doinit(); } Energy2 MEPP2ZHPowheg::scale() const { return _scaleopt == 0 ? sqr(_fixedScale) : _scaleFact*sHat(); } int MEPP2ZHPowheg::nDim() const { return 7; } bool MEPP2ZHPowheg::generateKinematics(const double * r) { _xt=*(r+5); _v =*(r+6); return MEPP2ZH::generateKinematics(r); } CrossSection MEPP2ZHPowheg::dSigHatDR() const { // Get Born momentum fractions xbar_a and xbar_b: _xb_a = lastX1(); _xb_b = lastX2(); return MEPP2ZH::dSigHatDR()*NLOweight(); } double MEPP2ZHPowheg::NLOweight() const { // If only leading order is required return 1: if(_contrib==0) return 1.; useMe(); // Get particle data for QCD particles: _parton_a=mePartonData()[0]; _parton_b=mePartonData()[1]; // get BeamParticleData objects for PDF's _hadron_A=dynamic_ptr_cast<Ptr<BeamParticleData>::transient_const_pointer> (lastParticles().first->dataPtr()); _hadron_B=dynamic_ptr_cast<Ptr<BeamParticleData>::transient_const_pointer> (lastParticles().second->dataPtr()); // If necessary swap the particle data vectors so that _xb_a, // mePartonData[0], beam[0] relate to the inbound quark: if(!(lastPartons().first ->dataPtr()==_parton_a&& lastPartons().second->dataPtr()==_parton_b)) { swap(_xb_a ,_xb_b); swap(_hadron_A,_hadron_B); } // calculate the PDF's for the Born process _oldq = _hadron_A->pdf()->xfx(_hadron_A,_parton_a,scale(),_xb_a)/_xb_a; _oldqbar = _hadron_B->pdf()->xfx(_hadron_B,_parton_b,scale(),_xb_b)/_xb_b; // Calculate alpha_S _alphaS2Pi = _nlo_alphaS_opt==1 ? _fixed_alphaS : SM().alphaS(scale()); _alphaS2Pi /= 2.*Constants::pi; // Calculate the invariant mass of the dilepton pair _mll2 = sHat(); _mu2 = scale(); // Calculate the integrand // q qbar contribution double wqqvirt = Vtilde_qq(); double wqqcollin = Ctilde_qq(x(_xt,1.),1.) + Ctilde_qq(x(_xt,0.),0.); double wqqreal = Ftilde_qq(_xt,_v); double wqq = wqqvirt+wqqcollin+wqqreal; // q g contribution double wqgcollin = Ctilde_qg(x(_xt,0.),0.); double wqgreal = Ftilde_qg(_xt,_v); double wqg = wqgreal+wqgcollin; // g qbar contribution double wgqbarcollin = Ctilde_gq(x(_xt,1.),1.); double wgqbarreal = Ftilde_gq(_xt,_v); double wgqbar = wgqbarreal+wgqbarcollin; // total double wgt = 1.+(wqq+wqg+wgqbar); // KMH - 06/08 - This seems to give wrong NLO results for // associated Higgs so I'm omitting it. // //trick to try and reduce neg wgt contribution // if(_xt<1.-_eps) // wgt += _a*(1./pow(1.-_xt,_p)-(1.-pow(_eps,1.-_p))/(1.-_p)/(1.-_eps)); // return the answer assert(!isinf(wgt)&&!isnan(wgt)); return _contrib==1 ? max(0.,wgt) : max(0.,-wgt); } double MEPP2ZHPowheg::x(double xt, double v) const { double x0(xbar(v)); return x0+(1.-x0)*xt; } double MEPP2ZHPowheg::x_a(double x, double v) const { if(x==1.) return _xb_a; if(v==0.) return _xb_a; if(v==1.) return _xb_a/x; return (_xb_a/sqrt(x))*sqrt((1.-(1.-x)*(1.-v))/(1.-(1.-x)*v)); } double MEPP2ZHPowheg::x_b(double x, double v) const { if(x==1.) return _xb_b; if(v==0.) return _xb_b/x; if(v==1.) return _xb_b; return (_xb_b/sqrt(x))*sqrt((1.-(1.-x)*v)/(1.-(1.-x)*(1.-v))); } double MEPP2ZHPowheg::xbar(double v) const { double xba2(sqr(_xb_a)), xbb2(sqr(_xb_b)), omv(-999.); double xbar1(-999.), xbar2(-999.); if(v==1.) return _xb_a; if(v==0.) return _xb_b; omv = 1.-v; xbar1=4.* v*xba2/ (sqrt(sqr(1.+xba2)*4.*sqr(omv)+16.*(1.-2.*omv)*xba2)+2.*omv*(1.-_xb_a)*(1.+_xb_a)); xbar2=4.*omv*xbb2/ (sqrt(sqr(1.+xbb2)*4.*sqr( v)+16.*(1.-2.* v)*xbb2)+2.* v*(1.-_xb_b)*(1.+_xb_b)); return max(xbar1,xbar2); } double MEPP2ZHPowheg::Ltilde_qq(double x, double v) const { if(x==1.) return 1.; double xa(x_a(x,v)),xb(x_b(x,v)); double newq = (_hadron_A->pdf()->xfx(_hadron_A,_parton_a,scale(), xa)/ xa); double newqbar = (_hadron_B->pdf()->xfx(_hadron_B,_parton_b,scale(), xb)/ xb); return( newq * newqbar / _oldq / _oldqbar ); } double MEPP2ZHPowheg::Ltilde_qg(double x, double v) const { double xa(x_a(x,v)),xb(x_b(x,v)); double newq = (_hadron_A->pdf()->xfx(_hadron_A,_parton_a,scale(), xa)/ xa); double newg2 = (_hadron_B->pdf()->xfx(_hadron_B,_gluon ,scale(), xb)/ xb); return( newq * newg2 / _oldq / _oldqbar ); } double MEPP2ZHPowheg::Ltilde_gq(double x, double v) const { double xa(x_a(x,v)),xb(x_b(x,v)); double newg1 = (_hadron_A->pdf()->xfx(_hadron_A,_gluon ,scale(), xa)/ xa); double newqbar = (_hadron_B->pdf()->xfx(_hadron_B,_parton_b,scale(), xb)/ xb); return( newg1 * newqbar / _oldq / _oldqbar ); } double MEPP2ZHPowheg::Vtilde_qq() const { return _alphaS2Pi*CF_*(-3.*log(_mu2/_mll2)+(2.*sqr(Constants::pi)/3.)-8.); } double MEPP2ZHPowheg::Ccalbar_qg(double x) const { return (sqr(x)+sqr(1.-x))*(log(_mll2/(_mu2*x))+2.*log(1.-x))+2.*x*(1.-x); } double MEPP2ZHPowheg::Ctilde_qg(double x, double v) const { return _alphaS2Pi*TR_ * ((1.-xbar(v))/x) * Ccalbar_qg(x)*Ltilde_qg(x,v); } double MEPP2ZHPowheg::Ctilde_gq(double x, double v) const { return _alphaS2Pi*TR_ * ((1.-xbar(v))/x) * Ccalbar_qg(x)*Ltilde_gq(x,v); } double MEPP2ZHPowheg::Ctilde_qq(double x, double v) const { double wgt = ((1.-x)/x+(1.+x*x)/(1.-x)/x*(2.*log(1.-x)-log(x)))*Ltilde_qq(x,v) - 4.*log(1.-x)/(1.-x) + 2./(1.-xbar(v))*log(1.-xbar(v))*log(1.-xbar(v)) + (2./(1.-xbar(v))*log(1.-xbar(v))-2./(1.-x)+(1.+x*x)/x/(1.-x)*Ltilde_qq(x,v)) *log(_mll2/_mu2); return _alphaS2Pi*CF_*(1.-xbar(v))*wgt; } double MEPP2ZHPowheg::Fcal_qq(double x, double v) const { return (sqr(1.-x)*(1.-2.*v*(1.-v))+2.*x)/x*Ltilde_qq(x,v); } double MEPP2ZHPowheg::Fcal_qg(double x, double v) const { return ((1.-xbar(v))/x)* (2.*x*(1.-x)*v+sqr((1.-x)*v)+sqr(x)+sqr(1.-x))*Ltilde_qg(x,v); } double MEPP2ZHPowheg::Fcal_gq(double x, double v) const { return ((1.-xbar(v))/x)* (2.*x*(1.-x)*(1.-v)+sqr((1.-x)*(1.-v))+sqr(x)+sqr(1.-x))*Ltilde_gq(x,v); } double MEPP2ZHPowheg::Ftilde_qg(double xt, double v) const { return _alphaS2Pi*TR_* ( Fcal_qg(x(xt,v),v) - Fcal_qg(x(xt,0.),0.) )/v; } double MEPP2ZHPowheg::Ftilde_gq(double xt, double v) const { return _alphaS2Pi*TR_* ( Fcal_gq(x(xt,v),v) - Fcal_gq(x(xt,1.),1.) )/(1.-v); } double MEPP2ZHPowheg::Ftilde_qq(double xt, double v) const { double eps(1e-10); // is emission into regular or singular region? if(xt>=0. && xt<1.-eps && v>eps && v<1.-eps) { // x<1, v>0, v<1 (regular emission, neither soft or collinear): return _alphaS2Pi*CF_* (( ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,1.),1.) ) / (1.-v)+ ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,0.),0.) ) / v )/(1.-xt) + ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) + ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v); } else { // make sure emission is actually in the allowed phase space: if(!(v>=0. && v<=1. && xt>=0. && xt<=1.)) { ostringstream s; s << "MEPP2ZHPowheg::Ftilde_qq : \n" << "xt(" << xt << ") and / or v(" << v << ") not in the phase space."; generator()->logWarning(Exception(s.str(),Exception::warning)); return 0.; } // is emission soft singular? if(xt>=1.-eps) { // x=1: if(v<=eps) { // x==1, v=0 (soft and collinear with particle b): return _alphaS2Pi*CF_* ( ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) ); } else if(v>=1.-eps) { // x==1, v=1 (soft and collinear with particle a): return _alphaS2Pi*CF_* ( ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v ); } else { // x==1, 0<v<1 (soft wide angle emission): return _alphaS2Pi*CF_* ( ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) + ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v ); } } else { // x<1: if(v<=eps) { // x<1 but v=0 (collinear with particle b, but not soft): return _alphaS2Pi*CF_* ( ( ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,1.),1.) ) / (1.-v) )/(1.-xt) + ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) ); } else if(v>=1.-eps) { // x<1 but v=1 (collinear with particle a, but not soft): return _alphaS2Pi*CF_* ( ( ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,0.),0.) ) / v )/(1.-xt) + ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v ); } } } return 0.; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEPP2HiggsVBFPowheg.cc�������������������������������������0000644�0001750�0001750�00000054223�11756364747�024640� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2HiggsVBFPowheg class. // #include "MEPP2HiggsVBFPowheg.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/PDT/StandardMatchers.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" //ACDC test //#include "ThePEG/Repository/UseRandom.h" using namespace Herwig; MEPP2HiggsVBFPowheg::MEPP2HiggsVBFPowheg() : scaleOpt_(1), muF_(100.*GeV), scaleFact_(1.), contrib_(1), power_(0.1) {} int MEPP2HiggsVBFPowheg::nDim() const { //ACDC test // return 0; return MEPP2HiggsVBF::nDim()+3; } //ACDC test (delete r) bool MEPP2HiggsVBFPowheg::generateKinematics(const double * r) { //bool MEPP2HiggsVBFPowheg::generateKinematics(const double * ) { int ndim = nDim(); //ACDC test double r3 = r[ndim-3]; //double r3 = UseRandom::rnd(); // Born kinematics //ACDC test (comment next line out) if(!MEPP2HiggsVBF::generateKinematics(r)) return false; // hadron and momentum fraction // set Q2 process momenta if(r3 > 0.5) { r3 = 2.*(r3-0.5); if(lastPartons().first ->dataPtr()==mePartonData()[0]&& lastPartons().second->dataPtr()==mePartonData()[1]) { _hadron = dynamic_ptr_cast<tcBeamPtr>(lastParticles().first->dataPtr()); _xB = lastX1(); } else { _hadron = dynamic_ptr_cast<tcBeamPtr>(lastParticles().second->dataPtr()); _xB = lastX2(); } _partons[0] = mePartonData()[0]; _partons[1] = mePartonData()[1]; _partons[4] = mePartonData()[4]; if(!swapOrder()) { _pb = meMomenta()[0]; _pc = meMomenta()[2]; _pbother = meMomenta()[1]; _pcother = meMomenta()[3]; _partons[2] = mePartonData()[2]; _partons[3] = mePartonData()[3]; } else { _pb = meMomenta()[0]; _pc = meMomenta()[3]; _pbother = meMomenta()[1]; _pcother = meMomenta()[2]; _partons[2] = mePartonData()[3]; _partons[3] = mePartonData()[2]; } } else { r3 = 2.*r3; if(lastPartons().first ->dataPtr()==mePartonData()[0]&& lastPartons().second->dataPtr()==mePartonData()[1]) { _hadron = dynamic_ptr_cast<tcBeamPtr>(lastParticles().second->dataPtr()); _xB = lastX2(); } else { _hadron = dynamic_ptr_cast<tcBeamPtr>(lastParticles().first->dataPtr()); _xB = lastX1(); } _partons[0] = mePartonData()[1]; _partons[1] = mePartonData()[0]; _partons[4] = mePartonData()[4]; if(!swapOrder()) { _pb = meMomenta()[1]; _pc = meMomenta()[3]; _pbother = meMomenta()[0]; _pcother = meMomenta()[2]; _partons[2] = mePartonData()[3]; _partons[3] = mePartonData()[2]; } else { _pb = meMomenta()[1]; _pc = meMomenta()[2]; _pbother = meMomenta()[0]; _pcother = meMomenta()[3]; _partons[2] = mePartonData()[2]; _partons[3] = mePartonData()[3]; } } // LO Momenta assignment _loMomenta[0] = _pb; _loMomenta[1] = _pbother; _loMomenta[2] = _pc; _loMomenta[3] = _pcother; _pa = _pc-_pb; // xp double rhomin = pow(1.-_xB,1.-power_); //ACDC test double rho = r[ndim-1]*rhomin; //double rho = UseRandom::rnd()*rhomin; _xp = 1.-pow(rho,1./(1.-power_)); // zp //ACDC test _zp = r[ndim-2]; //_zp = UseRandom::rnd(); // phi _phi = r3*Constants::twopi; jac_ = rhomin/(1.-power_)*pow(1.-_xp,power_); return true; } IBPtr MEPP2HiggsVBFPowheg::clone() const { return new_ptr(*this); } IBPtr MEPP2HiggsVBFPowheg::fullclone() const { return new_ptr(*this); } void MEPP2HiggsVBFPowheg::persistentOutput(PersistentOStream & os) const { os << ounit(muF_,GeV) << scaleFact_ << scaleOpt_ << contrib_ << ounit(_mz2,GeV2) << ounit(_mw2,GeV2) << power_; } void MEPP2HiggsVBFPowheg::persistentInput(PersistentIStream & is, int) { is >> iunit(muF_,GeV) >> scaleFact_ >> scaleOpt_ >> contrib_ >> iunit(_mz2,GeV2) >> iunit(_mw2,GeV2) >> power_; } ClassDescription<MEPP2HiggsVBFPowheg> MEPP2HiggsVBFPowheg::initMEPP2HiggsVBFPowheg; // Definition of the static class description member. void MEPP2HiggsVBFPowheg::Init() { static ClassDocumentation<MEPP2HiggsVBFPowheg> documentation ("The MENeutralCurrentDISPowheg class implements the NLO matrix element" " for neutral current DIS in the Powheg scheme."); static Switch<MEPP2HiggsVBFPowheg,unsigned int> interfaceContribution ("Contribution", "Which contributions to the cross section to include", &MEPP2HiggsVBFPowheg::contrib_, 1, false, false); static SwitchOption interfaceContributionLeadingOrder (interfaceContribution, "LeadingOrder", "Just generate the leading order cross section", 0); static SwitchOption interfaceContributionPositiveNLO (interfaceContribution, "PositiveNLO", "Generate the positive contribution to the full NLO cross section", 1); static SwitchOption interfaceContributionNegativeNLO (interfaceContribution, "NegativeNLO", "Generate the negative contribution to the full NLO cross section", 2); static Switch<MEPP2HiggsVBFPowheg,unsigned int> interfaceScaleOption ("ScaleOption", "Option for the choice of factorization (and renormalization) scale", &MEPP2HiggsVBFPowheg::scaleOpt_, 1, false, false); static SwitchOption interfaceDynamic (interfaceScaleOption, "Dynamic", "Dynamic factorization scale equal to the current sqrt(sHat())", 1); static SwitchOption interfaceFixed (interfaceScaleOption, "Fixed", "Use a fixed factorization scale set with FactorizationScaleValue", 2); static Parameter<MEPP2HiggsVBFPowheg,Energy> interfaceFactorizationScale ("FactorizationScale", "Value to use in the event of a fixed factorization scale", &MEPP2HiggsVBFPowheg::muF_, GeV, 100.0*GeV, 1.0*GeV, 500.0*GeV, true, false, Interface::limited); static Parameter<MEPP2HiggsVBFPowheg,double> interfaceScaleFactor ("ScaleFactor", "The factor used before Q2 if using a running scale", &MEPP2HiggsVBFPowheg::scaleFact_, 1.0, 0.0, 10.0, false, false, Interface::limited); static Parameter<MEPP2HiggsVBFPowheg,double> interfaceSamplingPower ("SamplingPower", "Power for the sampling of xp", &MEPP2HiggsVBFPowheg::power_, 0.6, 0.0, 1., false, false, Interface::limited); } Energy2 MEPP2HiggsVBFPowheg::scale() const { return scaleOpt_ == 1 ? sqr(scaleFact_)*MEPP2HiggsVBF::scale() : sqr(scaleFact_*muF_); } CrossSection MEPP2HiggsVBFPowheg::dSigHatDR() const { return NLOWeight()*MEPP2HiggsVBF::dSigHatDR(); } double MEPP2HiggsVBFPowheg::NLOWeight() const { // If only leading order is required return 1: if(contrib_==0) return 1.; // Boost Axis axis(_pa.vect().unit()); LorentzRotation rot; double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); rot = LorentzRotation(); if(axis.perp2()>1e-20) { rot.setRotate(-acos(axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); rot.rotateX(Constants::pi); } if(abs(1.-_pa.e()/_pa.vect().mag())>1e-6) rot.boostZ(_pa.e()/_pa.vect().mag()); _pb *= rot; if(_pb.perp2()/GeV2>1e-20) { Boost trans = -1./_pb.e()*_pb.vect(); trans.setZ(0.); rot.boost(trans); } // momenta of particles Lorentz5Momentum p1, p2,p1other,p2other; _pa *= rot; _q2 = -_pa.m2(); p1 = rot*_loMomenta[0]; p2 = rot*_loMomenta[2]; p1other = rot*_loMomenta[1]; p2other = rot*_loMomenta[3]; // scale and prefactors Energy2 mu2 = scale(); Energy Q = sqrt(_q2); // double aS = 2.*SM().alphaS(mu2); double aS = 2*0.113291076960184; double CFfact = 4./3.*aS/Constants::twopi; double TRfact = 1./2.*aS/Constants::twopi; double wgt = 0.; // Breit frame variables double x1 = -1./_xp; double x2 = 1.-(1.-_zp)/_xp; double x3 = 2.+x1-x2; double xT = 2*sqrt((1.-_xp)*(1.-_zp)*_zp/_xp); vector<Lorentz5Momentum> nloMomenta; nloMomenta.resize(3); nloMomenta[0] = Lorentz5Momentum(ZERO,ZERO,-0.5*Q*x1,-0.5*Q*x1); nloMomenta[1] = Lorentz5Momentum( 0.5*Q*xT*cos(_phi), 0.5*Q*xT*sin(_phi), -0.5*Q*x2, 0.5*Q*sqrt(sqr(xT)+sqr(x2))); nloMomenta[2] = Lorentz5Momentum(-0.5*Q*xT*cos(_phi), -0.5*Q*xT*sin(_phi), -0.5*Q*x3, 0.5*Q*sqrt(sqr(xT)+sqr(x3))); Lorentz5Momentum qnlo = nloMomenta[2]+nloMomenta[1]-nloMomenta[0]; Lorentz5Momentum r1 = -nloMomenta[0]/x1; Lorentz5Momentum r2 = nloMomenta[1]/x2; Lorentz5Momentum r3 = -nloMomenta[2]/x3; // LO + dipole subtracted virtual + collinear quark bit with LO pdf double virt = 1.+CFfact*(-4.5-1./3.*sqr(Constants::pi)+ 1.5*log(_q2/mu2/(1.-_xB))+ 2.*log(1.-_xB)*log(_q2/mu2)+ sqr(log(1.-_xB))); // PDF from leading-order double loPDF = _hadron->pdf()->xfx(_hadron,_partons[0],mu2,_xB)/_xB; // NLO gluon PDF tcPDPtr gluon = getParticleData(ParticleID::g); double gPDF = _hadron->pdf()->xfx(_hadron,gluon,mu2,_xB/_xp)*_xp/_xB; // NLO quark PDF double qPDF = _hadron->pdf()->xfx(_hadron,_partons[0],mu2,_xB/_xp)*_xp/_xB; // collinear counterterms // gluon double collg = TRfact/_xp*gPDF*(2.*_xp*(1.-_xp)+(sqr(_xp)+sqr(1.-_xp))* log((1.-_xp)*_q2/_xp/mu2)); // quark double collq = CFfact/_xp*qPDF*(1-_xp-2./(1.-_xp)*log(_xp)-(1.+_xp)* log((1.-_xp)/_xp*_q2/mu2))+ CFfact/_xp*(qPDF-_xp*loPDF)*(2./(1.-_xp)* log(_q2*(1.-_xp)/mu2)-1.5/(1.-_xp)); // Electroweak coefficients double c0L,c1L,c0R,c1R; //Energy2 mb2; // W if(_partons[0]->id()!=_partons[2]->id()) { //mb2 = _mw2; c0L = sqrt(0.5); c0R = 0; c1L = sqrt(0.5); c1R = 0; } // Z else { //mb2 = _mz2; if(abs(_partons[0]->id())%2==0) { c0L = generator()->standardModel()->vu()+ generator()->standardModel()->au(); c0R = generator()->standardModel()->vu()- generator()->standardModel()->au(); } else { c0L = generator()->standardModel()->vd()+ generator()->standardModel()->ad(); c0R = generator()->standardModel()->vd()- generator()->standardModel()->ad(); } if(abs(_partons[1]->id())%2==0) { c1L = generator()->standardModel()->vu()+ generator()->standardModel()->au(); c1R = generator()->standardModel()->vu()- generator()->standardModel()->au(); } else { c1L = generator()->standardModel()->vd()+ generator()->standardModel()->ad(); c1R = generator()->standardModel()->vd()- generator()->standardModel()->ad(); } c0L *= 0.25; c0R *= 0.25; c1L *= 0.25; c1R *= 0.25; } // Matrix element variables double G1 = sqr(c0L*c1L)+sqr(c0R*c1R); double G2 = sqr(c0L*c1R)+sqr(c0R*c1L); Energy4 term1,term2,term3,loME; if(_partons[0]->id()>0) { if(_partons[1]->id()>0) { term1 = loMatrixElement(r1 ,p1other,qnlo+r1,p2other,G1,G2); term2 = loMatrixElement(r2-qnlo,p1other,r2 ,p2other,G1,G2); term3 = loMatrixElement(r3 ,p1other,qnlo+r3,p2other,G1,G2); loME = loMatrixElement(p1 ,p1other,p2 ,p2other,G1,G2); } else { term1 = loMatrixElement(r1 ,p2other,qnlo+r1,p1other,G1,G2); term2 = loMatrixElement(r2-qnlo,p2other,r2 ,p1other,G1,G2); term3 = loMatrixElement(r3 ,p2other,qnlo+r3,p1other,G1,G2); loME = loMatrixElement(p1 ,p2other,p2 ,p1other,G1,G2); } } else { if(_partons[1]->id()>0) { term1 = loMatrixElement(qnlo+r1,p1other,r1 ,p2other,G1,G2); term2 = loMatrixElement(r2 ,p1other,r2-qnlo,p2other,G1,G2); term3 = loMatrixElement(qnlo+r3,p1other,r3 ,p2other,G1,G2); loME = loMatrixElement(p2 ,p1other,p1 ,p2other,G1,G2); } else { term1 = loMatrixElement(qnlo+r1,p2other,r1 ,p1other,G1,G2); term2 = loMatrixElement(r2 ,p2other,r2-qnlo,p1other,G1,G2); term3 = loMatrixElement(qnlo+r3,p2other,r3 ,p1other,G1,G2); loME = loMatrixElement(p2 ,p2other,p1 ,p1other,G1,G2); } } if(1-_xp > 1e-10 && 1.-_zp > 1e-10){ // q -> qg term double real1 = (term1+sqr(_xp)*sqr(x2)*term2)/loME; double dipole1 = (sqr(_xp)+sqr(_zp)); double realq = CFfact*qPDF/loPDF/_xp/((1.-_xp)*(1.-_zp))*(real1-dipole1); // g -> q qbar term double real2 = sqr(_xp)/loME*(sqr(x2)*term2+sqr(x3)*term3); double dipole2 = sqr(_xp)+sqr(1.-_xp); double realg = TRfact*gPDF/loPDF/_xp/(1.-_zp)*(real2-dipole2); // Return The Full Result wgt = virt+jac_*((collq+collg)/loPDF+realq+realg); } return contrib_ == 1 ? max(0.,wgt) : max(0.,-wgt); } void MEPP2HiggsVBFPowheg::doinit() { MEPP2HiggsVBF::doinit(); // electroweak parameters _mz2 = sqr(getParticleData(ParticleID::Z0)->mass()); _mw2 = sqr(getParticleData(ParticleID::Wplus)->mass()); tcPDPtr gluon = getParticleData(ParticleID::g); } Energy4 MEPP2HiggsVBFPowheg:: loMatrixElement(const Lorentz5Momentum &p1, const Lorentz5Momentum &p2, const Lorentz5Momentum &q1, const Lorentz5Momentum &q2, double G1, double G2) const { return G1*(p1*p2)*(q1*q2) + G2*(p1*q2)*(q1*p2); } // double g; // g = 1./sqrt(SM().sin2ThetaW()); // g = 1./sqrt((1.-SM().sin2ThetaW())*SM().sin2ThetaW()); // vector<SpinorWaveFunction> f1,f2; // vector<SpinorBarWaveFunction> a1,a2; // Lorentz5Momentum phiggs = rot*meMomenta()[4]; // ScalarWaveFunction higgs(phiggs,mePartonData()[4],1.,outgoing); // SpinorWaveFunction fin1,fin2; // SpinorBarWaveFunction ain1,ain2; // if(_partons[0]->id()>0) { // fin1 = SpinorWaveFunction(nloMomenta[0],_partons[0],incoming); // ain1 = SpinorBarWaveFunction(nloMomenta[1],_partons[2],outgoing); // } // else { // fin1 = SpinorWaveFunction(nloMomenta[1],_partons[2],outgoing); // ain1 = SpinorBarWaveFunction(nloMomenta[0],_partons[0],incoming); // } // if(_partons[1]->id()>0) { // fin2 = SpinorWaveFunction(p1other,_partons[1],incoming); // ain2 = SpinorBarWaveFunction(p2other,_partons[3],outgoing); // } // else { // fin2 = SpinorWaveFunction(p2other,_partons[3],outgoing); // ain2 = SpinorBarWaveFunction(p1other,_partons[1],incoming); // } // VectorWaveFunction gwave(nloMomenta[2],gluon,outgoing); // vector<VectorWaveFunction> g1; // for(unsigned int ix=0;ix<2;++ix) { // fin1.reset(ix); f1.push_back(fin1); // fin2.reset(ix); f2.push_back(fin2); // ain1.reset(ix); a1.push_back(ain1); // ain2.reset(ix); a2.push_back(ain2); // gwave.reset(2*ix); g1.push_back(gwave); // } // AbstractFFVVertexPtr vertex[2]; // tcPDPtr vec[2]; // for(unsigned int ix=0;ix<2;++ix) { // int icharge; // icharge = _partons[ix]->iCharge()-_partons[ix+2]->iCharge(); // if(icharge==0) vec[ix] = _z0; // else if(icharge>0) vec[ix] = _wplus; // else vec[ix] = _wminus; // vertex[ix] = vec[ix]==_z0 ? _vertexFFZ : _vertexFFW; // } // tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // AbstractFFVVertexPtr gvertex = hwsm->vertexFFG(); // VectorWaveFunction inter[2]; // Complex diag[2]; // double me(0.); // nloMomenta[0].setMass(ZERO); // nloMomenta[1].setMass(ZERO); // nloMomenta[2].setMass(ZERO); // for(unsigned int i1=0;i1<2;++i1) { // unsigned int i2=i1; // // wavefunction for the 1st intermediate vector // inter[0] = vertex[1]->evaluate(scale(),1,vec[1],f2[i1],a2[i2]); // for(unsigned int i3=0;i3<2;++i3) { // unsigned int i4=i3; // for(unsigned int ig=0;ig<2;++ig) { // SpinorWaveFunction soff = // gvertex->evaluate(scale(),5,f1[i3].getParticle(), // f1[i3],g1[ig]); // SpinorBarWaveFunction aoff = // gvertex->evaluate(scale(),5,a1[i4].getParticle(), // a1[i4],g1[ig]); // inter[1] = vertex[0]->evaluate(scale(),1,vec[0],soff,a1[i4]); // diag[0] = _vertexWWH->evaluate(scale(),inter[0],inter[1],higgs); // inter[1] = vertex[0]->evaluate(scale(),1,vec[0],f1[i3],aoff); // diag[1] = _vertexWWH->evaluate(scale(),inter[0],inter[1],higgs); // // cerr << "testing helicity " // // << i1 << " " << i2 << " " << i3 << " " << i4 << " " // // << ig << " " << (diag[0]+diag[1])/(abs(diag[0])+abs(diag[1])) // // << "\n"; // me += norm(diag[0]+diag[1]); // } // } // } // // spin factor // me *=0.25; // cerr << "testing the quark emission " // << fact*8.*Constants::pi*SM().alphaS(scale())/(-1.-x1)/(1.-x2)/_q2 // *(sqr(x1)*term1+sqr(x2)*term2)*sqr(MeV2)/me << "\n"; // vector<SpinorWaveFunction> f1,f2; // vector<SpinorBarWaveFunction> a1,a2; // Lorentz5Momentum phiggs = rot*meMomenta()[4]; // ScalarWaveFunction higgs(phiggs,mePartonData()[4],1.,outgoing); // SpinorWaveFunction fin1,fin2; // SpinorBarWaveFunction ain1,ain2; // if(_partons[0]->id()>0) { // fin1 = SpinorWaveFunction(nloMomenta[2],_partons[0]->CC(),outgoing); // ain1 = SpinorBarWaveFunction(nloMomenta[1],_partons[2],outgoing); // } // else { // fin1 = SpinorWaveFunction(nloMomenta[1],_partons[2],outgoing); // ain1 = SpinorBarWaveFunction(nloMomenta[2],_partons[0]->CC(),outgoing); // } // if(_partons[1]->id()>0) { // fin2 = SpinorWaveFunction(p1other,_partons[1],incoming); // ain2 = SpinorBarWaveFunction(p2other,_partons[3],outgoing); // } // else { // fin2 = SpinorWaveFunction(p2other,_partons[3],outgoing); // ain2 = SpinorBarWaveFunction(p1other,_partons[1],incoming); // } // VectorWaveFunction gwave(nloMomenta[0],gluon,incoming); // vector<VectorWaveFunction> g1; // for(unsigned int ix=0;ix<2;++ix) { // fin1.reset(ix); f1.push_back(fin1); // fin2.reset(ix); f2.push_back(fin2); // ain1.reset(ix); a1.push_back(ain1); // ain2.reset(ix); a2.push_back(ain2); // gwave.reset(2*ix); // g1.push_back(gwave); // } // AbstractFFVVertexPtr vertex[2]; // tcPDPtr vec[2]; // for(unsigned int ix=0;ix<2;++ix) { // int icharge; // icharge = _partons[ix]->iCharge()-_partons[ix+2]->iCharge(); // if(icharge==0) vec[ix] = _z0; // else if(icharge>0) vec[ix] = _wplus; // else vec[ix] = _wminus; // vertex[ix] = vec[ix]==_z0 ? _vertexFFZ : _vertexFFW; // } // tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // AbstractFFVVertexPtr gvertex = hwsm->vertexFFG(); // VectorWaveFunction inter[2]; // Complex diag[2]; // double me(0.); // nloMomenta[0].setMass(ZERO); // nloMomenta[1].setMass(ZERO); // nloMomenta[2].setMass(ZERO); // unsigned int o[2]={1,0}; // for(unsigned int i1=0;i1<2;++i1) { // unsigned int i2=i1; // // wavefunction for the 1st intermediate vector // inter[0] = vertex[1]->evaluate(scale(),1,vec[1],f2[i1],a2[i2]); // for(unsigned int i3=0;i3<2;++i3) { // unsigned int i4=o[i3]; // for(unsigned int ig=0;ig<2;++ig) { // SpinorWaveFunction soff = // gvertex->evaluate(scale(),5,f1[i3].getParticle(), // f1[i3],g1[ig]); // SpinorBarWaveFunction aoff = // gvertex->evaluate(scale(),5,a1[i4].getParticle(), // a1[i4],g1[ig]); // inter[1] = vertex[0]->evaluate(scale(),1,vec[0],soff,a1[i4]); // diag[0] = _vertexWWH->evaluate(scale(),inter[0],inter[1],higgs); // inter[1] = vertex[0]->evaluate(scale(),1,vec[0],f1[i3],aoff); // diag[1] = _vertexWWH->evaluate(scale(),inter[0],inter[1],higgs); // // cerr << "testing helicity " // // << i1 << " " << i2 << " " << i3 << " " << i4 << " " // // << ig << " " << (diag[0]+diag[1])/(abs(diag[0])+abs(diag[1])) // // << "\n"; // me += norm(diag[0]+diag[1]); // } // } // } // // spin factor // me *=0.25; // cerr << "testing the gluon emission " // << fact*8.*Constants::pi*SM().alphaS(scale())/(1.-x2)/(1.-x3)/_q2 // *(sqr(x3)*term3+sqr(x2)*term2)*sqr(MeV2)/me << "\n"; // Energy2 D1 = -_q2-mb2; // Energy2 D2 = (p1other-p2other).m2()-mb2; // double e = sqrt(4.*Constants::pi*SM().alphaEM(scale())); // InvEnergy6 fact = 4.*pow(e*g,6)*mb2/sqr(D1)/sqr(D2); // cerr << "testing LO ME in NLO code " // << fact*loME*MeV2/_mestore << "\n"; // vector<SpinorWaveFunction> f1,f2; // vector<SpinorBarWaveFunction> a1,a2; // Lorentz5Momentum phiggs = rot*meMomenta()[4]; // ScalarWaveFunction higgs(phiggs,mePartonData()[4],1.,outgoing); // SpinorWaveFunction fin1,fin2; // SpinorBarWaveFunction ain1,ain2; // if(_partons[0]->id()>0) { // fin1 = SpinorWaveFunction(p1,_partons[0],incoming); // ain1 = SpinorBarWaveFunction(p2,_partons[2],outgoing); // } // else { // fin1 = SpinorWaveFunction(p2,_partons[2],outgoing); // ain1 = SpinorBarWaveFunction(p1,_partons[0],incoming); // } // if(_partons[1]->id()>0) { // fin2 = SpinorWaveFunction(p1other,_partons[1],incoming); // ain2 = SpinorBarWaveFunction(p2other,_partons[3],outgoing); // } // else { // fin2 = SpinorWaveFunction(p2other,_partons[3],outgoing); // ain2 = SpinorBarWaveFunction(p1other,_partons[1],incoming); // } // for(unsigned int ix=0;ix<2;++ix) { // fin1.reset(ix); f1.push_back(fin1); // fin2.reset(ix); f2.push_back(fin2); // ain1.reset(ix); a1.push_back(ain1); // ain2.reset(ix); a2.push_back(ain2); // } // AbstractFFVVertexPtr vertex[2]; // tcPDPtr vec[2]; // for(unsigned int ix=0;ix<2;++ix) { // int icharge; // icharge = _partons[ix]->iCharge()-_partons[ix+2]->iCharge(); // if(icharge==0) vec[ix] = _z0; // else if(icharge>0) vec[ix] = _wplus; // else vec[ix] = _wminus; // vertex[ix] = vec[ix]==_z0 ? _vertexFFZ : _vertexFFW; // } // VectorWaveFunction inter[2]; // Complex diag; // double me(0.); // for(unsigned int i1=0;i1<2;++i1) { // for(unsigned int i2=0;i2<2;++i2) { // // wavefunction for the 1st intermediate vector // inter[0] = vertex[0]->evaluate(scale(),1,vec[1],f2[i1],a2[i2]); // for(unsigned int i3=0;i3<2;++i3) { // for(unsigned int i4=0;i4<2;++i4) { // // wavefunction for the 2nd intermediate vector // inter[1] = vertex[1]->evaluate(scale(),1,vec[0],f1[i3],a1[i4]); // // matrix element // diag = _vertexWWH->evaluate(scale(),inter[0],inter[1],higgs); // me += norm(diag); // } // } // } // } // // spin factor // me *=0.25; // cerr << "testing helicity computation " << me/_mestore << "\n"; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEqq2W2ffPowheg.cc�����������������������������������������0000644�0001750�0001750�00000033256�11754474775�024153� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEqq2W2ffPowheg.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEqq2W2ffPowheg class. // #include "MEqq2W2ffPowheg.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/Utilities/Maths.h" using namespace Herwig; using Herwig::Math::ReLi2; MEqq2W2ffPowheg::MEqq2W2ffPowheg() : _gluon(), TR_(0.5), CF_(4./3.), _contrib(1) ,_nlo_alphaS_opt(0), _fixed_alphaS(0.115895), _a(0.5) ,_p(0.7) , _eps(1.0e-8), _scaleopt(1), _fixedScale(100.*GeV), _scaleFact(1.) { massOption(vector<unsigned int>(2,1)); } void MEqq2W2ffPowheg::doinit() { // gluon ParticleData object _gluon = getParticleData(ParticleID::g); MEqq2W2ff::doinit(); } Energy2 MEqq2W2ffPowheg::scale() const { return _scaleopt == 0 ? sqr(_fixedScale) : _scaleFact*sHat(); } void MEqq2W2ffPowheg::persistentOutput(PersistentOStream & os) const { os << _contrib << _nlo_alphaS_opt << _fixed_alphaS << _a << _p << _gluon << _scaleopt << ounit(_fixedScale,GeV) << _scaleFact; } void MEqq2W2ffPowheg::persistentInput(PersistentIStream & is, int) { is >> _contrib >> _nlo_alphaS_opt >> _fixed_alphaS >> _a >> _p >> _gluon >> _scaleopt >> iunit(_fixedScale,GeV) >> _scaleFact; } ClassDescription<MEqq2W2ffPowheg> MEqq2W2ffPowheg::initMEqq2W2ffPowheg; // Definition of the static class description member. void MEqq2W2ffPowheg::Init() { static ClassDocumentation<MEqq2W2ffPowheg> documentation ("The MEqq2W2ffPowheg class implements the matrix element for" "q qbar to Standard Model fermions via W exchange using helicity amplitude" "techniques including the NLO correction in the POWHEG formalism", "The qq$\\to$W$\\to$ff POWHEG matrix element is described in \\cite{Hamilton:2008pd}.", "%\\cite{Hamilton:2008pd}\n" "\\bibitem{Hamilton:2008pd}\n" " K.~Hamilton, P.~Richardson and J.~Tully,\n" " ``A Positive-Weight Next-to-Leading Order Monte Carlo Simulation of Drell-Yan\n" " Vector Boson Production,''\n" " JHEP {\\bf 0810} (2008) 015\n" " [arXiv:0806.0290 [hep-ph]].\n" " %%CITATION = JHEPA,0810,015;%%\n"); static Switch<MEqq2W2ffPowheg,unsigned int> interfaceContribution ("Contribution", "Which contributions to the cross section to include", &MEqq2W2ffPowheg::_contrib, 1, false, false); static SwitchOption interfaceContributionLeadingOrder (interfaceContribution, "LeadingOrder", "Just generate the leading order cross section", 0); static SwitchOption interfaceContributionPositiveNLO (interfaceContribution, "PositiveNLO", "Generate the positive contribution to the full NLO cross section", 1); static SwitchOption interfaceContributionNegativeNLO (interfaceContribution, "NegativeNLO", "Generate the negative contribution to the full NLO cross section", 2); static Switch<MEqq2W2ffPowheg,unsigned int> interfaceNLOalphaSopt ("NLOalphaSopt", "Whether to use a fixed or a running QCD coupling for the NLO weight", &MEqq2W2ffPowheg::_nlo_alphaS_opt, 0, false, false); static SwitchOption interfaceNLOalphaSoptRunningAlphaS (interfaceNLOalphaSopt, "RunningAlphaS", "Use the usual running QCD coupling evaluated at scale scale()", 0); static SwitchOption interfaceNLOalphaSoptFixedAlphaS (interfaceNLOalphaSopt, "FixedAlphaS", "Use a constant QCD coupling for comparison/debugging purposes", 1); static Parameter<MEqq2W2ffPowheg,double> interfaceFixedNLOalphaS ("FixedNLOalphaS", "The value of alphaS to use for the nlo weight if _nlo_alphaS_opt=1", &MEqq2W2ffPowheg::_fixed_alphaS, 0.115895, 0., 1.0, false, false, Interface::limited); static Parameter<MEqq2W2ffPowheg,double> interfaceCorrectionCoefficient ("CorrectionCoefficient", "The magnitude of the correction term to reduce the negative contribution", &MEqq2W2ffPowheg::_a, 0.5, -10., 10.0, false, false, Interface::limited); static Parameter<MEqq2W2ffPowheg,double> interfaceCorrectionPower ("CorrectionPower", "The power of the correction term to reduce the negative contribution", &MEqq2W2ffPowheg::_p, 0.7, 0.0, 1.0, false, false, Interface::limited); static Switch<MEqq2W2ffPowheg,unsigned int> interfaceScaleOption ("ScaleOption", "Option for the scale to be used", &MEqq2W2ffPowheg::_scaleopt, 1, false, false); static SwitchOption interfaceScaleOptionFixed (interfaceScaleOption, "Fixed", "Use a fixed scale", 0); static SwitchOption interfaceScaleOptionsHat (interfaceScaleOption, "Dynamic", "Use the off-shell vector boson mass as the scale", 1); static Parameter<MEqq2W2ffPowheg,Energy> interfaceFixedScale ("FixedScale", "The fixed scale to use if required", &MEqq2W2ffPowheg::_fixedScale, GeV, 100.0*GeV, 10.0*GeV, 1000.0*GeV, false, false, Interface::limited); static Parameter<MEqq2W2ffPowheg,double> interfaceScaleFactor ("ScaleFactor", "The factor used before sHat if using a running scale", &MEqq2W2ffPowheg::_scaleFact, 1.0, 0.0, 10.0, false, false, Interface::limited); } int MEqq2W2ffPowheg::nDim() const { return 3; } bool MEqq2W2ffPowheg::generateKinematics(const double * r) { _xt=*(r+1); _v =*(r+2); return MEqq2W2ff::generateKinematics(r); } CrossSection MEqq2W2ffPowheg::dSigHatDR() const { // Get Born momentum fractions xbar_a and xbar_b: _xb_a = lastX1(); _xb_b = lastX2(); return MEqq2W2ff::dSigHatDR()*NLOweight(); } double MEqq2W2ffPowheg::NLOweight() const { // If only leading order is required return 1: if(_contrib==0) return 1.; useMe(); // Get particle data for QCD particles: _parton_a=mePartonData()[0]; _parton_b=mePartonData()[1]; // get BeamParticleData objects for PDF's _hadron_A=dynamic_ptr_cast<Ptr<BeamParticleData>::transient_const_pointer> (lastParticles().first->dataPtr()); _hadron_B=dynamic_ptr_cast<Ptr<BeamParticleData>::transient_const_pointer> (lastParticles().second->dataPtr()); // If necessary swap the particle data vectors so that _xb_a, // mePartonData[0], beam[0] relate to the inbound quark: if(!(lastPartons().first ->dataPtr()==_parton_a&& lastPartons().second->dataPtr()==_parton_b)) { swap(_xb_a ,_xb_b); swap(_hadron_A,_hadron_B); } // calculate the PDF's for the Born process _oldq = _hadron_A->pdf()->xfx(_hadron_A,_parton_a,scale(),_xb_a)/_xb_a; _oldqbar = _hadron_B->pdf()->xfx(_hadron_B,_parton_b,scale(),_xb_b)/_xb_b; // Calculate alpha_S _alphaS2Pi = _nlo_alphaS_opt==1 ? _fixed_alphaS : SM().alphaS(scale()); _alphaS2Pi /= 2.*Constants::pi; // Calculate the invariant mass of the dilepton pair _mll2 = sHat(); _mu2 = scale(); // Calculate the integrand // q qbar contribution double wqqvirt = Vtilde_qq(); double wqqcollin = Ctilde_qq(x(_xt,1.),1.) + Ctilde_qq(x(_xt,0.),0.); double wqqreal = Ftilde_qq(_xt,_v); double wqq = wqqvirt+wqqcollin+wqqreal; // q g contribution double wqgcollin = Ctilde_qg(x(_xt,0.),0.); double wqgreal = Ftilde_qg(_xt,_v); double wqg = wqgreal+wqgcollin; // g qbar contribution double wgqbarcollin = Ctilde_gq(x(_xt,1.),1.); double wgqbarreal = Ftilde_gq(_xt,_v); double wgqbar = wgqbarreal+wgqbarcollin; // total double wgt = 1.+(wqq+wqg+wgqbar); //trick to try and reduce neg wgt contribution if(_xt<1.-_eps) wgt += _a*(1./pow(1.-_xt,_p)-(1.-pow(_eps,1.-_p))/(1.-_p)/(1.-_eps)); // return the answer assert(!isinf(wgt)&&!isnan(wgt)); return _contrib==1 ? max(0.,wgt) : max(0.,-wgt); } double MEqq2W2ffPowheg::x(double xt, double v) const { double x0(xbar(v)); return x0+(1.-x0)*xt; } double MEqq2W2ffPowheg::x_a(double x, double v) const { if(x==1.) return _xb_a; if(v==0.) return _xb_a; if(v==1.) return _xb_a/x; return (_xb_a/sqrt(x))*sqrt((1.-(1.-x)*(1.-v))/(1.-(1.-x)*v)); } double MEqq2W2ffPowheg::x_b(double x, double v) const { if(x==1.) return _xb_b; if(v==0.) return _xb_b/x; if(v==1.) return _xb_b; return (_xb_b/sqrt(x))*sqrt((1.-(1.-x)*v)/(1.-(1.-x)*(1.-v))); } double MEqq2W2ffPowheg::xbar(double v) const { double xba2(sqr(_xb_a)), xbb2(sqr(_xb_b)), omv(-999.); double xbar1(-999.), xbar2(-999.); if(v==1.) return _xb_a; if(v==0.) return _xb_b; omv = 1.-v; xbar1=4.* v*xba2/ (sqrt(sqr(1.+xba2)*4.*sqr(omv)+16.*(1.-2.*omv)*xba2)+2.*omv*(1.-_xb_a)*(1.+_xb_a)); xbar2=4.*omv*xbb2/ (sqrt(sqr(1.+xbb2)*4.*sqr( v)+16.*(1.-2.* v)*xbb2)+2.* v*(1.-_xb_b)*(1.+_xb_b)); return max(xbar1,xbar2); } double MEqq2W2ffPowheg::Ltilde_qq(double x, double v) const { if(x==1.) return 1.; double xa(x_a(x,v)),xb(x_b(x,v)); double newq = (_hadron_A->pdf()->xfx(_hadron_A,_parton_a,scale(), xa)/ xa); double newqbar = (_hadron_B->pdf()->xfx(_hadron_B,_parton_b,scale(), xb)/ xb); return( newq * newqbar / _oldq / _oldqbar ); } double MEqq2W2ffPowheg::Ltilde_qg(double x, double v) const { double xa(x_a(x,v)),xb(x_b(x,v)); double newq = (_hadron_A->pdf()->xfx(_hadron_A,_parton_a,scale(), xa)/ xa); double newg2 = (_hadron_B->pdf()->xfx(_hadron_B,_gluon ,scale(), xb)/ xb); return( newq * newg2 / _oldq / _oldqbar ); } double MEqq2W2ffPowheg::Ltilde_gq(double x, double v) const { double xa(x_a(x,v)),xb(x_b(x,v)); double newg1 = (_hadron_A->pdf()->xfx(_hadron_A,_gluon ,scale(), xa)/ xa); double newqbar = (_hadron_B->pdf()->xfx(_hadron_B,_parton_b,scale(), xb)/ xb); return( newg1 * newqbar / _oldq / _oldqbar ); } double MEqq2W2ffPowheg::Vtilde_qq() const { return _alphaS2Pi*CF_*(-3.*log(_mu2/_mll2)+(2.*sqr(Constants::pi)/3.)-8.); } double MEqq2W2ffPowheg::Ccalbar_qg(double x) const { return (sqr(x)+sqr(1.-x))*(log(_mll2/(_mu2*x))+2.*log(1.-x))+2.*x*(1.-x); } double MEqq2W2ffPowheg::Ctilde_qg(double x, double v) const { return _alphaS2Pi*TR_ * ((1.-xbar(v))/x) * Ccalbar_qg(x)*Ltilde_qg(x,v); } double MEqq2W2ffPowheg::Ctilde_gq(double x, double v) const { return _alphaS2Pi*TR_ * ((1.-xbar(v))/x) * Ccalbar_qg(x)*Ltilde_gq(x,v); } double MEqq2W2ffPowheg::Ctilde_qq(double x, double v) const { double wgt = ((1.-x)/x+(1.+x*x)/(1.-x)/x*(2.*log(1.-x)-log(x)))*Ltilde_qq(x,v) - 4.*log(1.-x)/(1.-x) + 2./(1.-xbar(v))*log(1.-xbar(v))*log(1.-xbar(v)) + (2./(1.-xbar(v))*log(1.-xbar(v))-2./(1.-x)+(1.+x*x)/x/(1.-x)*Ltilde_qq(x,v)) *log(_mll2/_mu2); return _alphaS2Pi*CF_*(1.-xbar(v))*wgt; } double MEqq2W2ffPowheg::Fcal_qq(double x, double v) const { return (sqr(1.-x)*(1.-2.*v*(1.-v))+2.*x)/x*Ltilde_qq(x,v); } double MEqq2W2ffPowheg::Fcal_qg(double x, double v) const { return ((1.-xbar(v))/x)* (2.*x*(1.-x)*v+sqr((1.-x)*v)+sqr(x)+sqr(1.-x))*Ltilde_qg(x,v); } double MEqq2W2ffPowheg::Fcal_gq(double x, double v) const { return ((1.-xbar(v))/x)* (2.*x*(1.-x)*(1.-v)+sqr((1.-x)*(1.-v))+sqr(x)+sqr(1.-x))*Ltilde_gq(x,v); } double MEqq2W2ffPowheg::Ftilde_qg(double xt, double v) const { return _alphaS2Pi*TR_* ( Fcal_qg(x(xt,v),v) - Fcal_qg(x(xt,0.),0.) )/v; } double MEqq2W2ffPowheg::Ftilde_gq(double xt, double v) const { return _alphaS2Pi*TR_* ( Fcal_gq(x(xt,v),v) - Fcal_gq(x(xt,1.),1.) )/(1.-v); } double MEqq2W2ffPowheg::Ftilde_qq(double xt, double v) const { double eps(1e-10); // is emission into regular or singular region? if(xt>=0. && xt<1.-eps && v>eps && v<1.-eps) { // x<1, v>0, v<1 (regular emission, neither soft or collinear): return _alphaS2Pi*CF_* (( ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,1.),1.) ) / (1.-v)+ ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,0.),0.) ) / v )/(1.-xt) + ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) + ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v); } else { // make sure emission is actually in the allowed phase space: if(!(v>=0. && v<=1. && xt>=0. && xt<=1.)) { ostringstream s; s << "MEqq2W2ffPowheg::Ftilde_qq : \n" << "xt(" << xt << ") and / or v(" << v << ") not in the phase space."; generator()->logWarning(Exception(s.str(),Exception::warning)); return 0.; } // is emission soft singular? if(xt>=1.-eps) { // x=1: if(v<=eps) { // x==1, v=0 (soft and collinear with particle b): return _alphaS2Pi*CF_* ( ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) ); } else if(v>=1.-eps) { // x==1, v=1 (soft and collinear with particle a): return _alphaS2Pi*CF_* ( ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v ); } else { // x==1, 0<v<1 (soft wide angle emission): return _alphaS2Pi*CF_* ( ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) + ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v ); } } else { // x<1: if(v<=eps) { // x<1 but v=0 (collinear with particle b, but not soft): return _alphaS2Pi*CF_* ( ( ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,1.),1.) ) / (1.-v) )/(1.-xt) + ( log(1.-xbar(v)) - log(1.-_xb_a))*2./(1.-v) ); } else if(v>=1.-eps) { // x<1 but v=1 (collinear with particle a, but not soft): return _alphaS2Pi*CF_* ( ( ( Fcal_qq(x(xt, v), v) - Fcal_qq(x(xt,0.),0.) ) / v )/(1.-xt) + ( log(1.-xbar(v)) - log(1.-_xb_b))*2./v ); } } } return 0.; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Powheg/MEee2gZ2qqPowheg.h�����������������������������������������0000644�0001750�0001750�00000011317�11754474775�024157� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEee2gZ2qqPowheg_H #define HERWIG_MEee2gZ2qqPowheg_H // // This is the declaration of the MEee2gZ2qqPowheg class. // #include "Herwig++/MatrixElement/Lepton/MEee2gZ2qq.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the MEee2gZ2qqPowheg class. * * @see \ref MEee2gZ2qqPowhegInterfaces "The interfaces" * defined for MEee2gZ2qqPowheg. */ class MEee2gZ2qqPowheg: public MEee2gZ2qq { public: /** * The default constructor. */ MEee2gZ2qqPowheg() : contrib_(1), zPow_(0.5), yPow_(0.9) {} public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() 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(); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEee2gZ2qqPowheg> initMEee2gZ2qqPowheg; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEee2gZ2qqPowheg & operator=(const MEee2gZ2qqPowheg &); private: /** * Whether to generate the positive, negative or leading order contribution */ unsigned int contrib_; /** * Phase-space sampling for z */ double zPow_; /** * Phase-space sampling for y */ double yPow_; /** * Radiation variables */ //@{ /** * The \f$\tilde{x}\f$ variable */ double z_; /** * The \f$y\f$ angular variable */ double y_; /** * The azimuth */ double phi_; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEee2gZ2qqPowheg. */ template <> struct BaseClassTrait<Herwig::MEee2gZ2qqPowheg,1> { /** Typedef of the first base class of MEee2gZ2qqPowheg. */ typedef Herwig::MEee2gZ2qq NthBase; }; /** This template specialization informs ThePEG about the name of * the MEee2gZ2qqPowheg class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEee2gZ2qqPowheg> : public ClassTraitsBase<Herwig::MEee2gZ2qqPowheg> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEee2gZ2qqPowheg"; } /** * The name of a file containing the dynamic library where the class * MEee2gZ2qqPowheg is implemented. It may also include several, space-separated, * libraries if the class MEee2gZ2qqPowheg depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMELepton.so HwPowhegMELepton.so"; } }; /** @endcond */ } #endif /* HERWIG_MEee2gZ2qqPowheg_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/DrellYanBase.cc���������������������������������������������������0000644�0001750�0001750�00000110571�11754474776�022400� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the DrellYanBase class. // #include "DrellYanBase.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" using namespace Herwig; DrellYanBase::DrellYanBase() : _channelwgtA(0.12), _channelwgtB(2.00), _nover(0), _maxwgt(0.), _power(2.0),_preqqbar(6.5),_preqg(4.0),_pregqbar(4.0), _min_pt(2.*GeV) {} void DrellYanBase::persistentOutput(PersistentOStream & os) const { os << _channelwgtA << _channelwgtB << _channelweights << _alpha << _power << _preqqbar << _preqg << _pregqbar << ounit( _min_pt, GeV ) << _prefactor; } void DrellYanBase::persistentInput(PersistentIStream & is, int) { is >> _channelwgtA >> _channelwgtB >> _channelweights >> _alpha >> _power >> _preqqbar >> _preqg >> _pregqbar >> iunit( _min_pt, GeV ) >> _prefactor; } AbstractClassDescription<DrellYanBase> DrellYanBase::initDrellYanBase; // Definition of the static class description member. void DrellYanBase::Init() { static ClassDocumentation<DrellYanBase> documentation ("The DrellYanBase class provides a base class for the" " corrections to Drell-Yan type processes"); static Parameter<DrellYanBase,double> interfaceQQbarChannelWeight ("QQbarChannelWeight", "The relative weights of the q qbar abd q g channels for selection." " This is a technical parameter for the phase-space generation and " "should not affect the results only the efficiency and fraction" " of events with weight > 1.", &DrellYanBase::_channelwgtA, 0.12, 0.01, 100., false, false, Interface::limited); static Parameter<DrellYanBase,double> interfaceQGChannelWeight ("QGChannelWeight", "The relative weights of the qg abd qbar g channels for selection." " This is a technical parameter for the phase-space generation and " "should not affect the results only the efficiency and fraction", &DrellYanBase::_channelwgtB, 2., 0.01, 100., false, false, Interface::limited); static Reference<DrellYanBase,ShowerAlpha> interfaceCoupling ("Coupling", "Pointer to the object to calculate the coupling for the correction", &DrellYanBase::_alpha, false, false, true, false, false); static Parameter<DrellYanBase,double> interfacePower ("Power", "The power for the sampling of the matrix elements", &DrellYanBase::_power, 2.0, 1.0, 10.0, false, false, Interface::limited); static Parameter<DrellYanBase,double> interfacePrefactorqqbar ("Prefactorqqbar", "The prefactor for the sampling of the q qbar channel", &DrellYanBase::_preqqbar, 5.0, 0.0, 1000.0, false, false, Interface::limited); static Parameter<DrellYanBase,double> interfacePrefactorqg ("Prefactorqg", "The prefactor for the sampling of the q g channel", &DrellYanBase::_preqg, 3.0, 0.0, 1000.0, false, false, Interface::limited); static Parameter<DrellYanBase,double> interfacePrefactorgqbar ("Prefactorgqbar", "The prefactor for the sampling of the g qbar channel", &DrellYanBase::_pregqbar, 3.0, 0.0, 1000.0, false, false, Interface::limited); static Parameter<DrellYanBase, Energy> interfacePtMin ("minPt", "The pt cut on hardest emision generation" "2*(1-Beta)*exp(-sqr(intrinsicpT/RMS))/sqr(RMS)", &DrellYanBase::_min_pt, GeV, 2.*GeV, ZERO, 100000.0*GeV, false, false, Interface::limited); } void DrellYanBase::doinit() { HwMEBase::doinit(); _channelweights.push_back(_channelwgtA/(1.+_channelwgtA)); _channelweights.push_back(_channelweights[0]+1./(1.+_channelwgtA)/(1+_channelwgtB)); _channelweights.push_back(1.0); _prefactor.push_back(_preqqbar); _prefactor.push_back(_preqg); _prefactor.push_back(_pregqbar); } void DrellYanBase::dofinish() { HwMEBase::dofinish(); if(_nover==0) return; generator()->log() << "DrellYanBase when applying the hard correction " << _nover << " weights larger than one were generated of which" << " the largest was " << _maxwgt << "\n"; } void DrellYanBase::applyHardMatrixElementCorrection(ShowerTreePtr tree) { // get the quark,antiquark and the gauge boson // get the quarks map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit; ShowerParticleVector incoming; vector<tcBeamPtr> beams; for(cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { incoming.push_back(cit->first->progenitor()); beams.push_back(cit->first->beam()); } // ensure that the quark is first if(incoming[0]->id()<incoming[1]->id()) { swap(incoming[0],incoming[1]); swap(beams[0],beams[1]); } Lorentz5Momentum pboson; for( map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt= tree->outgoingLines().begin(); cjt != tree->outgoingLines().end();++cjt ) { pboson += cjt->first->original()->momentum(); } pboson.rescaleMass(); // calculate the momenta unsigned int iemit,itype; vector<Lorentz5Momentum> pnew; LorentzRotation trans; pair<double,double> xnew; // if not accepted return if(!applyHard(incoming,beams,pboson,iemit,itype,pnew,trans,xnew)) return; // if applying ME correction create the new particles if(itype==0) { // get the momenta of the new particles Lorentz5Momentum pquark(pnew[0]),panti(pnew[1]),pgluon(pnew[2]); if(iemit==2) swap(pquark,panti); // ensure gluon can be put on shell Lorentz5Momentum ptest(pgluon); if(ptest.boost(-(pquark+panti).boostVector()).e() < getParticleData(ParticleID::g)->constituentMass()) return; // create the new gluon PPtr newg= getParticleData(ParticleID::g)->produceParticle(pgluon); PPtr newq,newa; ColinePtr col; // make the new particles if(iemit==1) { col=incoming[0]->colourLine(); newq = getParticleData(incoming[0]->id())->produceParticle(pquark); newa = new_ptr(Particle(*incoming[1])); col->removeAntiColoured(newa); newa->set5Momentum(panti); } else { col=incoming[1]->antiColourLine(); newa = getParticleData(incoming[1]->id())->produceParticle(panti); newq = new_ptr(Particle(*incoming[0])); col->removeColoured(newq); newq->set5Momentum(pquark); } // set the colour lines ColinePtr newline=new_ptr(ColourLine()); if(iemit==1) { newline->addColoured(newq); newline->addColoured(newg); col->addAntiColoured(newg); col->addAntiColoured(newa); } else { newline->addAntiColoured(newa); newline->addAntiColoured(newg); col->addColoured(newg); col->addColoured(newq); } // change the existing quark and antiquark PPtr orig; for(cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { if(cit->first->progenitor()->id()==newq->id()) { // remove old particles from colour line col->removeColoured(cit->first->copy()); col->removeColoured(cit->first->progenitor()); // insert new particles cit->first->copy(newq); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newq,1,false))); sp->x(xnew.first); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; cit->first->perturbative(iemit!=1); if(iemit==1) orig=cit->first->original(); } else { // remove old particles from colour line col->removeAntiColoured(cit->first->copy()); col->removeColoured(cit->first->progenitor()); // insert new particles cit->first->copy(newa); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newa,1,false))); sp->x(xnew.second); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; cit->first->perturbative(iemit==1); if(iemit==2) orig=cit->first->original(); } } // fix the momentum of the gauge boson Boost boostv=pboson.findBoostToCM(); trans *=LorentzRotation(boostv); for( map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt= tree->outgoingLines().begin(); cjt != tree->outgoingLines().end();++cjt ) { cjt->first->progenitor()->transform(trans); cjt->first->copy()->transform(trans); } tree->hardMatrixElementCorrection(true); // add the gluon ShowerParticlePtr sg=new_ptr(ShowerParticle(*newg,1,true)); ShowerProgenitorPtr gluon=new_ptr(ShowerProgenitor(orig,newg,sg)); gluon->perturbative(false); tree->outgoingLines().insert(make_pair(gluon,sg)); } else if(itype==1) { Lorentz5Momentum pin(pnew[0]),pout(pnew[1]),pgluon(pnew[2]); if(iemit==2) swap(pin,pout); // ensure outgoing quark can be put on-shell Lorentz5Momentum ptest(pout); if(ptest.boost(-(pin+pgluon).boostVector()).e() < incoming[1]->dataPtr()->constituentMass()) return; // create the new gluon PPtr newg = getParticleData(ParticleID::g)->produceParticle(pgluon); // create the new outgoing quark PPtr newout= getParticleData(-incoming[1]->id())->produceParticle(pout); // create the new incoming quark PPtr newin = new_ptr(Particle(*incoming[0])); newin->set5Momentum(pin); // colour info ColinePtr col=incoming[0]->colourLine(); col->removeColoured(newin); ColinePtr newline=new_ptr(ColourLine()); newline->addColoured(newout); newline->addColoured(newg); col->addAntiColoured(newg); col->addColoured(newin); // change the existing incoming partons PPtr orig; for(cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { if(cit->first->progenitor()->id()==newin->id()) { // remove old particles from colour line col->removeColoured(cit->first->copy()); col->removeColoured(cit->first->progenitor()); // insert new particles cit->first->copy(newin); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newin,1,false))); sp->x(xnew.first); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; cit->first->perturbative(true); } else { // remove old particles from colour line col->removeAntiColoured(cit->first->copy()); col->removeColoured(cit->first->progenitor()); // insert new particles cit->first->copy(newg); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newg,1,false))); sp->x(xnew.second); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; cit->first->perturbative(false); orig=cit->first->original(); } } // fix the momentum of the gauge boson Boost boostv=pboson.findBoostToCM(); trans *=LorentzRotation(boostv); for( map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt= tree->outgoingLines().begin(); cjt != tree->outgoingLines().end();++cjt ) { cjt->first->progenitor()->transform(trans); cjt->first->copy()->transform(trans); } tree->hardMatrixElementCorrection(true); // add the outgoing quark ShowerParticlePtr sout=new_ptr(ShowerParticle(*newout,1,true)); ShowerProgenitorPtr out=new_ptr(ShowerProgenitor(orig,newout,sout)); out->perturbative(false); tree->outgoingLines().insert(make_pair(out,sout)); } else if(itype==2) { Lorentz5Momentum pin(pnew[0]),pout(pnew[1]),pgluon(pnew[2]); if(iemit==2) swap(pin,pout); // ensure outgoing antiquark can be put on-shell Lorentz5Momentum ptest(pout); if(ptest.boost(-(pin+pgluon).boostVector()).e() < incoming[0]->dataPtr()->constituentMass()) return; // create the new gluon PPtr newg = getParticleData(ParticleID::g)->produceParticle(pgluon); // create the new outgoing antiquark PPtr newout= getParticleData(-incoming[0]->id())->produceParticle(pout); // create the new incoming antiquark PPtr newin = new_ptr(Particle(*incoming[1])); newin->set5Momentum(pin); // colour info ColinePtr col=incoming[0]->colourLine(); col->removeAntiColoured(newin); ColinePtr newline=new_ptr(ColourLine()); newline->addAntiColoured(newout); newline->addAntiColoured(newg); col->addColoured(newg); col->addAntiColoured(newin); // change the existing incoming partons PPtr orig; for(cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { if(cit->first->progenitor()->id()==newin->id()) { // remove old particles from colour line col->removeAntiColoured(cit->first->copy()); col->removeColoured(cit->first->progenitor()); // insert new particles cit->first->copy(newin); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newin,1,false))); sp->x(xnew.second); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; cit->first->perturbative(true); } else { // remove old particles from colour line col->removeColoured(cit->first->copy()); col->removeColoured(cit->first->progenitor()); // insert new particles cit->first->copy(newg); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newg,1,false))); sp->x(xnew.first); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; cit->first->perturbative(false); orig=cit->first->original(); } } // fix the momentum of the gauge boson Boost boostv=pboson.findBoostToCM(); trans *=LorentzRotation(boostv); for( map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt= tree->outgoingLines().begin(); cjt != tree->outgoingLines().end();++cjt ) { cjt->first->progenitor()->transform(trans); cjt->first->copy()->transform(trans); } tree->hardMatrixElementCorrection(true); // add the outgoing antiquark ShowerParticlePtr sout=new_ptr(ShowerParticle(*newout,1,true)); ShowerProgenitorPtr out=new_ptr(ShowerProgenitor(orig,newout,sout)); out->perturbative(false); tree->outgoingLines().insert(make_pair(out,sout)); } } bool DrellYanBase::applyHard(ShowerParticleVector quarks, vector<tcBeamPtr> beams, Lorentz5Momentum boson, unsigned int & iemit,unsigned int & itype, vector<Lorentz5Momentum> & pnew, LorentzRotation & trans, pair<double,double> & xout) { // check that quark along +z and qbar along -z bool quarkplus=quarks[0]->momentum().z()>quarks[1]->momentum().z(); // calculate the limits on s Energy mb = sqrt(mb2_); Energy2 smin=mb2_; Energy2 s= (generator()->currentEvent()->incoming().first ->momentum()+ generator()->currentEvent()->incoming().second->momentum()).m2(); Energy2 smax(s); // calculate the rapidity of the boson double yB=0.5*log((boson.e()+boson.z())/ (boson.e()-boson.z())); if(!quarkplus) yB=-yB; // if no phase-space return if(smax<smin) return false; // get the evolution scales (this needs improving) double kappa[2]={1.,1.}; // get the momentum fractions for the leading order process // and the values of the PDF's double x[2],fx[2]; tcPDFPtr pdf[2]; for(unsigned int ix=0;ix<quarks.size();++ix) { x[ix]=quarks[ix]->x(); assert(beams[ix]); pdf[ix]=beams[ix]->pdf(); assert(pdf[ix]); fx[ix]=pdf[ix]->xfx(beams[ix],quarks[ix]->dataPtr(),mb2_,x[ix]); } // select the type of process and generate the kinematics double rn(UseRandom::rnd()); Energy2 shat(ZERO),uhat(ZERO),that(ZERO); double weight(0.),xnew[2]={1.,1.}; // generate the value of s according to 1/s^2 shat = smax*smin/(smin+UseRandom::rnd()*(smax-smin)); Energy2 jacobian = sqr(shat)*(1./smin-1./smax); double sbar=shat/mb2_; // calculate limits on that Energy2 tmax=mb2_*kappa[0]*(1.-sbar)/(kappa[0]+sbar); Energy2 tmin=shat*(1.-sbar)/(kappa[1]+sbar); // calculate the limits on uhat Energy2 umax(mb2_-shat-tmin),umin(mb2_-shat-tmax); // check inside phase space if(tmax<tmin||umax<umin) return false; // q qbar -> g V if(rn<_channelweights[0]) { // generate t and u according to 1/t+1/u // generate in 1/t if(UseRandom::rndbool(0.5)) { that=tmax*pow(tmin/tmax,UseRandom::rnd()); uhat=mb2_-shat-that; jacobian *=log(tmin/tmax); } // generate in 1/u else { uhat=umax*pow(umin/umax,UseRandom::rnd()); that=mb2_-shat-uhat; jacobian *=log(umin/umax); } Energy4 jacobian2 = jacobian * 2.*uhat*that/(shat-mb2_); // new scale (this is mt^2=pt^2+mb^2) Energy2 scale(uhat*that/shat+mb2_); // the PDF's with the emitted gluon double fxnew[2]; xnew[0]=exp(yB)/sqrt(s)*sqrt(shat*(mb2_-uhat)/(mb2_-that)); xnew[1]=shat/(s*xnew[0]); for(unsigned int ix=0;ix<2;++ix) {fxnew[ix]=pdf[ix]->xfx(beams[ix],quarks[ix]->dataPtr(),scale,xnew[ix]);} // jacobian and me parts of the weight weight=jacobian2*(sqr(mb2_-that)+sqr(mb2_-uhat))/(sqr(shat)*that*uhat); // pdf part of the weight weight *=fxnew[0]*fxnew[1]*x[0]*x[1]/(fx[0]*fx[1]*xnew[0]*xnew[1]); // finally coupling, colour factor and different channel pieces weight *= 2./3./Constants::pi/_channelweights[0]*_alpha->value(scale); // select the emiting particle iemit=1; if(UseRandom::rnd()<sqr(mb2_-uhat)/(sqr(mb2_-uhat)+sqr(mb2_-that))) iemit=2; itype=0; } // incoming gluon else { // generate t if(rn>_channelweights[1]) { swap(tmax,tmin); tmax=mb2_-shat-tmax; tmin=mb2_-shat-tmin; } that=tmax*pow(tmin/tmax,UseRandom::rnd()); uhat=mb2_-shat-that; Energy4 jacobian2 = jacobian * that*log(tmax/tmin); // new scale (this is mt^2=pt^2+mb^2) Energy2 scale(uhat*that/shat+mb2_); // g qbar -> qbar V double fxnew[2]; if(rn<_channelweights[1]) { itype=2; xnew[0]=exp(yB)/sqrt(s)*sqrt(shat*(mb2_-uhat)/(mb2_-that)); xnew[1]=shat/(s*xnew[0]); fxnew[0]=pdf[0]->xfx(beams[0],getParticleData(ParticleID::g),scale,xnew[0]); fxnew[1]=pdf[1]->xfx(beams[1],quarks[1]->dataPtr(),scale,xnew[1]); jacobian2/=(_channelweights[1]-_channelweights[0]); } // q g -> q V else { itype=1; xnew[0]=exp(yB)/sqrt(s)*sqrt(shat*(mb2_-that)/(mb2_-uhat)); xnew[1]=shat/(s*xnew[0]); fxnew[0]=pdf[0]->xfx(beams[0],quarks[0]->dataPtr(),scale,xnew[0]); fxnew[1]=pdf[1]->xfx(beams[1],getParticleData(ParticleID::g),scale,xnew[1]); jacobian2/=(_channelweights[2]-_channelweights[1]); } // jacobian and me parts of the weight weight=-jacobian2*(sqr(mb2_-that)+sqr(mb2_-shat))/(sqr(shat)*shat*that); // pdf part of the weight weight *=fxnew[0]*fxnew[1]*x[0]*x[1]/(fx[0]*fx[1]*xnew[0]*xnew[1]); // finally coupling, colour factor and different channel pieces weight *= 0.25/Constants::pi*_alpha->value(scale); // select the emiting particle iemit=1; if(UseRandom::rnd()<sqr(mb2_-that)/(sqr(mb2_-that)+sqr(mb2_-shat))) iemit=2; } // if me correction should be applied if(weight>1.) { ++_nover; _maxwgt=max(_maxwgt,weight); weight=1.; } if(UseRandom::rnd()>weight) return false; // construct the momenta in the rest frame of the boson Lorentz5Momentum pb(ZERO,ZERO,ZERO,mb,mb),pspect,pg,pemit; double cos3 = 0.0; if(itype==0) { pg = Lorentz5Momentum(ZERO,ZERO,ZERO,0.5*(shat-mb2_)/mb,ZERO); Energy2 tp(that),up(uhat); double zsign(-1.); if(iemit==2) { tp=uhat; up=that; zsign=1.; } pspect = Lorentz5Momentum(ZERO,ZERO,zsign*0.5*(mb2_-tp)/mb, 0.5*(mb2_-tp)/mb,ZERO); Energy eemit=0.5*(mb2_-up)/mb; cos3 = 0.5/pspect.z()/pg.e()*(sqr(pspect.e())+sqr(pg.e())-sqr(eemit)); } else { pg=Lorentz5Momentum(ZERO,ZERO,ZERO,0.5*(mb2_-uhat)/mb,ZERO); double zsign(1.); if(iemit==1) { if(itype==1) zsign=-1.; pspect=Lorentz5Momentum(ZERO,ZERO,0.5*zsign*(shat-mb2_)/mb, 0.5*(shat-mb2_)/mb); Energy eemit=0.5*(mb2_-that)/mb; cos3 = 0.5/pspect.z()/pg.e()*(sqr(pspect.e())+sqr(pg.e())-sqr(eemit)); } else { if(itype==2) zsign=-1.; pspect=Lorentz5Momentum(ZERO,ZERO,0.5*zsign*(mb2_-that)/mb, 0.5*(mb2_-that)/mb); Energy eemit=0.5*(shat-mb2_)/mb; cos3 = 0.5/pspect.z()/pg.e()*(-sqr(pspect.e())-sqr(pg.e())+sqr(eemit)); } } // rotate the gluon double sin3(sqrt(1.-sqr(cos3))); double phi(Constants::twopi*UseRandom::rnd()); pg.setX(pg.e()*sin3*cos(phi)); pg.setY(pg.e()*sin3*sin(phi)); pg.setZ(pg.e()*cos3); if(itype==0) { pemit=pb+pg-pspect; } else { if(iemit==1) pemit=pb+pspect-pg; else pemit=pspect+pg-pb; } pemit.rescaleMass(); // find the new CMF Lorentz5Momentum pp[2]; if(itype==0) { if(iemit==1) { pp[0]=pemit; pp[1]=pspect; } else { pp[0]=pspect; pp[1]=pemit; } } else if(itype==1) { pp[1]=pg; if(iemit==1) pp[0]=pemit; else pp[0]=pspect; } else { pp[0]=pg; if(iemit==1) pp[1]=pemit; else pp[1]=pspect; } Lorentz5Momentum pz= quarkplus ? pp[0] : pp[1]; pp[0]/=xnew[0]; pp[1]/=xnew[1]; Lorentz5Momentum plab(pp[0]+pp[1]); plab.rescaleMass(); // construct the boost to rest frame of plab trans=LorentzRotation(plab.findBoostToCM()); pz.transform(trans); // rotate so emitting particle along z axis // rotate so in x-z plane trans.rotateZ(-atan2(pz.y(),pz.x())); // rotate so along trans.rotateY(-acos(pz.z()/pz.vect().mag())); // undo azimuthal rotation trans.rotateZ(atan2(pz.y(),pz.x())); // perform the transforms pb .transform(trans); pspect.transform(trans); pg .transform(trans); pemit .transform(trans); // momenta to be returned pnew.push_back(pemit); pnew.push_back(pspect); pnew.push_back(pg); pnew.push_back(pb); xout.first=xnew[0]; xout.second=xnew[1]; return true; } bool DrellYanBase::softMatrixElementVeto(ShowerProgenitorPtr initial, ShowerParticlePtr parent,Branching br) { if(parent->isFinalState()) return false; // check if me correction should be applied long id[2]={initial->id(),parent->id()}; if(id[0]!=id[1]||id[1]==ParticleID::g) return false; // get the pT Energy pT=br.kinematics->pT(); // check if hardest so far if(pT<initial->highestpT()) return false; // compute the invariants double kappa(sqr(br.kinematics->scale())/mb2_),z(br.kinematics->z()); Energy2 shat(mb2_/z*(1.+(1.-z)*kappa)),that(-(1.-z)*kappa*mb2_),uhat(-(1.-z)*shat); // check which type of process // g qbar double wgt(1.); if(id[0]>0&&br.ids[0]==ParticleID::g) wgt=mb2_/(shat+uhat)*(sqr(mb2_-that)+sqr(mb2_-shat))/(sqr(shat+uhat)+sqr(uhat)); else if(id[0]>0&&br.ids[0]==id[0]) wgt=mb2_/(shat+uhat)*(sqr(mb2_-uhat)+sqr(mb2_-that))/(sqr(shat)+sqr(shat+uhat)); else if(id[0]<0&&br.ids[0]==ParticleID::g) wgt=mb2_/(shat+uhat)*(sqr(mb2_-that)+sqr(mb2_-shat))/(sqr(shat+uhat)+sqr(uhat)); else if(id[0]<0&&br.ids[0]==-id[0]) wgt=mb2_/(shat+uhat)*(sqr(mb2_-uhat)+sqr(mb2_-that))/(sqr(shat)+sqr(shat+uhat)); else return false; if(wgt<.0||wgt>1.) generator()->log() << "Soft ME correction weight too large or " << "negative in DrellYanBase::" << "softMatrixElementVeto()soft weight " << " sbar = " << shat/mb2_ << " tbar = " << that/mb2_ << "weight = " << wgt << "\n"; // if not vetoed if(UseRandom::rndbool(wgt)) { initial->highestpT(pT); return false; } // otherwise parent->setEvolutionScale(br.kinematics->scale()); return true; } HardTreePtr DrellYanBase::generateHardest(ShowerTreePtr tree) { useMe(); // get the particles to be showered _beams.clear(); _partons.clear(); // find the incoming particles ShowerParticleVector incoming; map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit; _quarkplus = true; vector<ShowerProgenitorPtr> particlesToShower; //progenitor particles are produced in z direction. for( cit = tree->incomingLines().begin(); cit != tree->incomingLines().end(); ++cit ) { incoming.push_back( cit->first->progenitor() ); _beams.push_back( cit->first->beam() ); _partons.push_back( cit->first->progenitor()->dataPtr() ); // check that quark is along +ve z direction if(cit->first->progenitor()->id() > 0 && cit->first->progenitor()->momentum().z() < ZERO ) _quarkplus = false; particlesToShower.push_back( cit->first ); } Lorentz5Momentum pboson; for( map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt= tree->outgoingLines().begin(); cjt != tree->outgoingLines().end();++cjt ) { pboson += cjt->first->original()->momentum(); } pboson.rescaleMass(); // calculate the rapidity of the boson _yb = 0.5 * log((pboson.e()+pboson.z())/(pboson.e()-pboson.z())); _yb *= _quarkplus ? 1. : -1.; _mass = pboson.mass(); // we are assuming quark first, swap order to ensure this // if antiquark first if(_partons[0]->id()<_partons[1]->id()) { swap(_partons[0],_partons[1]); swap(_beams[0],_beams[1]); } vector<Lorentz5Momentum> pnew; int emission_type(-1); // generate the hard emission and return if no emission if(!getEvent(pnew,emission_type)) { // for(unsigned int ix=0;ix<particlesToShower.size();++ix) // particlesToShower[ix]->maximumpT(_min_pt); return HardTreePtr(); } // construct the HardTree object needed to perform the showers ShowerParticleVector newparticles; // make the particles for the HardTree tcPDPtr gluon=getParticleData(ParticleID::g); // create the partons int iemit; // q qbar -> g V if(emission_type==0) { newparticles.push_back(new_ptr(ShowerParticle(_partons[0] ,false))); newparticles.push_back(new_ptr(ShowerParticle(_partons[1] ,false))); newparticles.push_back(new_ptr(ShowerParticle(gluon , true))); iemit = pnew[0].z()/pnew[2].rapidity()>ZERO ? 0 : 1; } // q g -> q V else if(emission_type==1) { iemit=1; newparticles.push_back(new_ptr(ShowerParticle(_partons[0] ,false))); newparticles.push_back(new_ptr(ShowerParticle(gluon ,false))); newparticles.push_back(new_ptr(ShowerParticle(_partons[1]->CC(), true))); } // g qbar -> qbar V else { iemit=0; newparticles.push_back(new_ptr(ShowerParticle(gluon ,false))); newparticles.push_back(new_ptr(ShowerParticle(_partons[1] ,false))); newparticles.push_back(new_ptr(ShowerParticle(_partons[0]->CC(), true))); } // set the momenta for(unsigned int ix=0;ix<3;++ix) newparticles[ix]->set5Momentum(pnew[ix]); // create the off-shell particle Lorentz5Momentum poff=pnew[iemit]-pnew[2]; poff.rescaleMass(); newparticles.push_back(new_ptr(ShowerParticle(_partons[iemit],false))); newparticles.back()->set5Momentum(poff); // compute the boost for the bosons LorentzRotation boost(pboson.findBoostToCM()); boost.boost(pnew[3].boostVector()); for( map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt= tree->outgoingLines().begin(); cjt != tree->outgoingLines().end();++cjt ) { newparticles.push_back(new_ptr(ShowerParticle(cjt->first->original()->dataPtr(), true))); newparticles.back()->set5Momentum(boost*cjt->first->original()->momentum()); } vector<HardBranchingPtr> inBranch,hardBranch; // create the branchings for the incoming particles inBranch.push_back(new_ptr(HardBranching(newparticles[0],SudakovPtr(), HardBranchingPtr(),HardBranching::Incoming))); inBranch.push_back(new_ptr(HardBranching(newparticles[1],SudakovPtr(), HardBranchingPtr(),HardBranching::Incoming))); // intermediate IS particle hardBranch.push_back(new_ptr(HardBranching(newparticles[3],SudakovPtr(), inBranch[iemit],HardBranching::Incoming))); inBranch[iemit]->addChild(hardBranch.back()); // create the branching for the emitted jet inBranch[iemit]->addChild(new_ptr(HardBranching(newparticles[2],SudakovPtr(), inBranch[iemit],HardBranching::Outgoing))); // set the colour partners hardBranch.back()->colourPartner(inBranch[iemit==0 ? 1 : 0]); inBranch[iemit==0 ? 1 : 0]->colourPartner(hardBranch.back()); // add other particle hardBranch.push_back(inBranch[iemit==0 ? 1 : 0]); // outgoing particles for(unsigned int ix=4;ix<newparticles.size();++ix) { hardBranch.push_back(new_ptr(HardBranching(newparticles[ix],SudakovPtr(), HardBranchingPtr(),HardBranching::Outgoing))); } // make the tree HardTreePtr hardtree=new_ptr(HardTree(hardBranch,inBranch,ShowerInteraction::QCD)); // connect the ShowerParticles with the branchings // and set the maximum pt for the radiation set<HardBranchingPtr> hard=hardtree->branchings(); for(unsigned int ix=0;ix<particlesToShower.size();++ix) { if( _pt < _min_pt ) particlesToShower[ix]->maximumpT(_min_pt); else particlesToShower[ix]->maximumpT(_pt); for(set<HardBranchingPtr>::const_iterator mit=hard.begin(); mit!=hard.end();++mit) { if(particlesToShower[ix]->progenitor()->id()==(*mit)->branchingParticle()->id()&& (( particlesToShower[ix]->progenitor()->isFinalState()&& (**mit).status()==HardBranching::Outgoing)|| (!particlesToShower[ix]->progenitor()->isFinalState()&& (**mit).status()==HardBranching::Incoming))) { hardtree->connect(particlesToShower[ix]->progenitor(),*mit); if((**mit).status()==HardBranching::Incoming) { (*mit)->beam(particlesToShower[ix]->original()->parents()[0]); } HardBranchingPtr parent=(*mit)->parent(); while(parent) { parent->beam(particlesToShower[ix]->original()->parents()[0]); parent=parent->parent(); }; } } } ColinePtr newline=new_ptr(ColourLine()); for(set<HardBranchingPtr>::const_iterator cit=hardtree->branchings().begin(); cit!=hardtree->branchings().end();++cit) { if((**cit).branchingParticle()->dataPtr()->iColour()==PDT::Colour3) newline->addColoured((**cit).branchingParticle()); else if((**cit).branchingParticle()->dataPtr()->iColour()==PDT::Colour3bar) newline->addAntiColoured((**cit).branchingParticle()); } // return the tree return hardtree; } double DrellYanBase::getResult(int emis_type, Energy pt, double yj) { Energy2 s=sqr(generator()->maximumCMEnergy()); Energy2 m2(sqr(_mass)); Energy2 scale = m2+sqr(pt); Energy et=sqrt(scale); // longitudinal real correction fractions double x = pt*exp( yj)/sqrt(s)+et*exp( _yb)/sqrt(s); double y = pt*exp(-yj)/sqrt(s)+et*exp(-_yb)/sqrt(s); // reject if outside region if(x<0.||x>1.||y<0.||y>1.||x*y<m2/s) return 0.; // longitudinal born fractions double x1 = _mass*exp( _yb)/sqrt(s); double y1 = _mass*exp(-_yb)/sqrt(s); // mandelstam variables Energy2 th = -sqrt(s)*x*pt*exp(-yj); Energy2 uh = -sqrt(s)*y*pt*exp( yj); Energy2 sh = m2-th-uh; double res; // pdf part of the cross section double pdf[4]; pdf[0]=_beams[0]->pdf()->xfx(_beams[0],_partons[0],m2,x1); pdf[1]=_beams[1]->pdf()->xfx(_beams[1],_partons[1],m2,y1); //qqbar2Zg using Constants::pi; if(emis_type==0) { pdf[2]=_beams[0]->pdf()->xfx(_beams[0],_partons[0],scale,x); pdf[3]=_beams[1]->pdf()->xfx(_beams[1],_partons[1],scale,y); res = 4./3./pi*(sqr(th-m2)+sqr(uh-m2))*pt/(sh*uh*th)*GeV; } //qg2Zq else if(emis_type==1) { pdf[2]=_beams[0]->pdf()->xfx(_beams[0],_partons[0],scale,x); pdf[3]=_beams[1]->pdf()->xfx(_beams[1],getParticleData(ParticleID::g),scale,y); res = -1./2./pi*(sqr(uh-m2)+sqr(sh-m2))*pt/(sh*sh*uh)*GeV; } //qbarg2Zqbar else { pdf[2]=_beams[0]->pdf()->xfx(_beams[0],getParticleData(ParticleID::g),scale,x); pdf[3]=_beams[1]->pdf()->xfx(_beams[1],_partons[1],scale,y); res =- 1./2./pi*(sqr(th-m2)+sqr(sh-m2))*pt/(sh*sh*th)*GeV; } //deals with pdf zero issue at large x if(pdf[0]<=0.||pdf[1]<=0.||pdf[2]<=0.||pdf[3]<=0.) { res=0.; } else { res*=pdf[2]*pdf[3]/pdf[0]/pdf[1]*m2/sh; } res*=_alpha->ratio(scale); return res; } bool DrellYanBase::getEvent(vector<Lorentz5Momentum> & pnew, int & emis_type){ // pt cut-off // Energy minp = 0.1*GeV; // maximum pt (half of centre-of-mass energy) Energy maxp = 0.5*generator()->maximumCMEnergy(); // set pt of emission to zero _pt=ZERO; //Working Variables Energy pt; double yj; // limits on the rapidity of the jet double minyj = -8.0,maxyj = 8.0; bool reject; double wgt; emis_type=-1; for(int j=0;j<3;j++) { pt=maxp; double a = _alpha->overestimateValue()*_prefactor[j]*(maxyj-minyj)/(_power-1.); do { // generate next pt pt=GeV/pow(pow(GeV/pt,_power-1)-log(UseRandom::rnd())/a,1./(_power-1.)); // generate rapidity of the jet yj=UseRandom::rnd()*(maxyj-minyj)+ minyj; // calculate rejection weight wgt=getResult(j,pt,yj); wgt/= _prefactor[j]*pow(GeV/pt,_power); reject = UseRandom::rnd()>wgt; //no emission event if p goes past p min - basically set to outside //of the histogram bounds (hopefully hist object just ignores it) if(pt<_min_pt){ pt=ZERO; reject = false; } if(wgt>1.0) { ostringstream s; s << "DrellYanBase::getEvent weight for channel " << j << "is " << wgt << " which is greater than 1"; generator()->logWarning( Exception(s.str(), Exception::warning) ); } } while(reject); // set pt of emission etc if(pt>_pt){ emis_type = j; _pt=pt; _yj=yj; } } //was this an (overall) no emission event? if(_pt<_min_pt){ _pt=ZERO; emis_type = 3; } if(emis_type==3) return false; // generate the momenta of the particles // hadron-hadron cmf Energy2 s=sqr(generator()->maximumCMEnergy()); // transverse energy Energy2 m2(sqr(_mass)); Energy et=sqrt(m2+sqr(_pt)); // first calculate all the kinematic variables // longitudinal real correction fractions double x = _pt*exp( _yj)/sqrt(s)+et*exp( _yb)/sqrt(s); double y = _pt*exp(-_yj)/sqrt(s)+et*exp(-_yb)/sqrt(s); // that and uhat Energy2 th = -sqrt(s)*x*_pt*exp(-_yj); Energy2 uh = -sqrt(s)*y*_pt*exp( _yj); Energy2 sh = x*y*s; if(emis_type==1) swap(th,uh); // decide which was the emitting particle unsigned int iemit=1; // from q qbar if(emis_type==0) { if(UseRandom::rnd()<sqr(m2-uh)/(sqr(m2-uh)+sqr(m2-th))) iemit=2; } else { if(UseRandom::rnd()<sqr(m2-th)/(sqr(m2-th)+sqr(m2-sh))) iemit=2; } // reconstruct the momenta in the rest frame of the gauge boson Lorentz5Momentum pb(ZERO,ZERO,ZERO,_mass,_mass),pspect,pg,pemit; double cos3; if(emis_type==0) { pg=Lorentz5Momentum(ZERO,ZERO,ZERO,0.5*(sh-m2)/_mass,ZERO); Energy2 tp(th),up(uh); double zsign(-1.); if(iemit==2) { swap(tp,up); zsign=1; } pspect = Lorentz5Momentum(ZERO,ZERO ,zsign*0.5*(m2-tp)/_mass,0.5*(m2-tp)/_mass, ZERO); Energy eemit=0.5*(m2-up)/_mass; cos3 = 0.5/pspect.z()/pg.e()*(sqr(pspect.e())+sqr(pg.e())-sqr(eemit)); } else { pg=Lorentz5Momentum(ZERO,ZERO,ZERO,0.5*(m2-uh)/_mass,ZERO); double zsign(1.); if(iemit==1) { if(emis_type==1) zsign=-1.; pspect=Lorentz5Momentum(ZERO,ZERO,0.5*zsign*(sh-m2)/_mass,0.5*(sh-m2)/_mass); Energy eemit=0.5*(m2-th)/_mass; cos3 = 0.5/pspect.z()/pg.e()*(sqr(pspect.e())+sqr(pg.e())-sqr(eemit)); } else { if(emis_type==2) zsign=-1.; pspect=Lorentz5Momentum(ZERO,ZERO,0.5*zsign*(m2-th)/_mass,0.5*(m2-th)/_mass); Energy eemit=0.5*(sh-m2)/_mass; cos3 = 0.5/pspect.z()/pg.e()*(-sqr(pspect.e())-sqr(pg.e())+sqr(eemit)); } } // rotate the gluon double sin3(sqrt(1.-sqr(cos3))),phi(Constants::twopi*UseRandom::rnd()); pg.setX(pg.e()*sin3*cos(phi)); pg.setY(pg.e()*sin3*sin(phi)); pg.setZ(pg.e()*cos3); if(emis_type==0) { pemit=pb+pg-pspect; } else { if(iemit==1) pemit=pb+pspect-pg; else pemit=pspect+pg-pb; } pemit .setMass(ZERO); pg .setMass(ZERO); pspect.setMass(ZERO); // find the new CMF Lorentz5Momentum pp[2]; if(emis_type==0) { pp[0]=pemit; pp[1]=pspect; if(iemit==2) swap(pp[0],pp[1]); } else if(emis_type==1) { pp[1]=pg; if(iemit==1) pp[0]=pemit; else pp[0]=pspect; } else { pp[0]=pg; if(iemit==1) pp[1]=pemit; else pp[1]=pspect; } Lorentz5Momentum pz= _quarkplus ? pp[0] : pp[1]; pp[0]/=x; pp[1]/=y; Lorentz5Momentum plab(pp[0]+pp[1]); plab.rescaleMass(); // construct the boost to rest frame of plab LorentzRotation trans=LorentzRotation(plab.findBoostToCM()); pz.transform(trans); // rotate so emitting particle along z axis // rotate so in x-z plane trans.rotateZ(-atan2(pz.y(),pz.x())); // rotate so along trans.rotateY(-acos(pz.z()/pz.vect().mag())); // undo azimuthal rotation trans.rotateZ(atan2(pz.y(),pz.x())); // perform the transforms pb .transform(trans); pspect.transform(trans); pg .transform(trans); pemit .transform(trans); // copy the momenta for the new particles pnew.resize(4); if(emis_type==0) { pnew[0]=pemit; pnew[1]=pspect; if(iemit==2) swap(pnew[0],pnew[1]); pnew[2]=pg; } else if(emis_type==1) { pnew[0]=pemit; pnew[2]=pspect; if(iemit==2) swap(pnew[0],pnew[2]); pnew[1]=pg; } else if(emis_type==2) { pnew[1]=pspect; pnew[2]=pemit; if(iemit==1) swap(pnew[1],pnew[2]); pnew[0]=pg; } pnew[3]=pb; return true; } ���������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/�����������������������������������������������������������0000755�0001750�0001750�00000000000�11756464207�020760� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2WH.cc�������������������������������������������������0000644�0001750�0001750�00000011665�11754474776�022374� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2WH class. // #include "MEPP2WH.h" #include "ThePEG/PDT/DecayMode.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/Models/StandardModel/StandardModel.h" using namespace Herwig; MEPP2WH::MEPP2WH() : _plusminus(0) {} ClassDescription<MEPP2WH> MEPP2WH::initMEPP2WH; // Definition of the static class description member. void MEPP2WH::persistentOutput(PersistentOStream & os) const { os << _plusminus; } void MEPP2WH::persistentInput(PersistentIStream & is, int) { is >> _plusminus; } void MEPP2WH::Init() { static ClassDocumentation<MEPP2WH> documentation ("The MEPP2WH class implements the matrix element for the Bjorken" " process q qbar -> WH"); static Switch<MEPP2WH,unsigned int> interfacePlusMinus ("Wcharge", "Which intermediate W bosons to include", &MEPP2WH::_plusminus, 0, false, false); static SwitchOption interfacePlusMinusAll (interfacePlusMinus, "Both", "Include W+ and W-", 0); static SwitchOption interfacePlusMinusPlus (interfacePlusMinus, "Plus", "Only include W+", 1); static SwitchOption interfacePlusMinusMinus (interfacePlusMinus, "Minus", "Only include W-", 2); } void MEPP2WH::getDiagrams() const { // which intgermediates to include bool wplus =_plusminus==0||_plusminus==1; bool wminus=_plusminus==0||_plusminus==2; tPDPtr higgs = getParticleData(ParticleID::h0); // possible incoming particles typedef std::vector<pair<long,long> > Pairvector; // possible parents vector<PDPair> parentpair; parentpair.reserve(6); // don't even think of putting 'break' in here! switch(maxFlavour()) { case 5: parentpair.push_back(make_pair(getParticleData(ParticleID::b), getParticleData(ParticleID::cbar))); parentpair.push_back(make_pair(getParticleData(ParticleID::b), getParticleData(ParticleID::ubar))); case 4: parentpair.push_back(make_pair(getParticleData(ParticleID::s), getParticleData(ParticleID::cbar))); parentpair.push_back(make_pair(getParticleData(ParticleID::d), getParticleData(ParticleID::cbar))); case 3: parentpair.push_back(make_pair(getParticleData(ParticleID::s), getParticleData(ParticleID::ubar))); case 2: parentpair.push_back(make_pair(getParticleData(ParticleID::d), getParticleData(ParticleID::ubar))); default: ; } // possible children typedef Selector<tDMPtr> DecaySelector; // for W+ DecaySelector wpdec = getParticleData(ParticleID::Wplus)->decaySelector(); vector<PDPair> wpdecays; for(DecaySelector::const_iterator cit=wpdec.begin();cit!=wpdec.end();++cit) { if(cit->second->orderedProducts().size()!=2) continue; if(cit->second->orderedProducts()[0]->id()>0) wpdecays.push_back(make_pair(cit->second->orderedProducts()[0], cit->second->orderedProducts()[1])); else wpdecays.push_back(make_pair(cit->second->orderedProducts()[1], cit->second->orderedProducts()[0])); } // for W- DecaySelector wmdec = getParticleData(ParticleID::Wminus)->decaySelector(); vector<PDPair> wmdecays; for(DecaySelector::const_iterator cit=wmdec.begin();cit!=wmdec.end();++cit) { if(cit->second->orderedProducts().size()!=2) continue; if(cit->second->orderedProducts()[0]->id()>0) wmdecays.push_back(make_pair(cit->second->orderedProducts()[0], cit->second->orderedProducts()[1])); else wmdecays.push_back(make_pair(cit->second->orderedProducts()[1], cit->second->orderedProducts()[0])); } vector<PDPair>::const_iterator parent = parentpair.begin(); for (; parent != parentpair.end(); ++parent) { // W- modes if(wminus) { for(unsigned int ix=0;ix<wmdecays.size();++ix) { add(new_ptr((Tree2toNDiagram(2), parent->first, parent->second, 1, WMinus(), 3, higgs, 3, WMinus(), 5, wmdecays[ix].first,5, wmdecays[ix].second,-1))); } } // W+ modes if(wplus) { for(unsigned int ix=0;ix<wpdecays.size();++ix) { add(new_ptr((Tree2toNDiagram(2), parent->second->CC(), parent->first->CC(), 1, WPlus(), 3, higgs, 3, WPlus(), 5, wpdecays[ix].first, 5, wpdecays[ix].second, -1))); } } } } void MEPP2WH::doinit() { // get the vedrtex pointers from the SM object tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if(!hwsm) throw InitException() << "Wrong type of StandardModel object in " << "MEPP2WH::doinit() the Herwig++" << " version must be used" << Exception::runerror; // set the vertex setWWHVertex(hwsm->vertexWWH()); higgs(getParticleData(ParticleID::h0)); MEfftoVH::doinit(); } ���������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2ZH.cc�������������������������������������������������0000644�0001750�0001750�00000004453�11754474776�022374� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2ZH class. // #include "MEPP2ZH.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/PDT/DecayMode.h" #include "Herwig++/Models/StandardModel/StandardModel.h" using namespace Herwig; MEPP2ZH::MEPP2ZH() {} void MEPP2ZH::getDiagrams() const { // find possible Z decays typedef Selector<tDMPtr> DecaySelector; DecaySelector Zdec = Z0()->decaySelector(); vector<PDPair> Zdecays; for(DecaySelector::const_iterator cit=Zdec.begin();cit!=Zdec.end();++cit) { if(cit->second->orderedProducts().size()!=2) continue; if(cit->second->orderedProducts()[0]->id()>0) Zdecays.push_back(make_pair(cit->second->orderedProducts()[0], cit->second->orderedProducts()[1])); else Zdecays.push_back(make_pair(cit->second->orderedProducts()[1], cit->second->orderedProducts()[0])); } // create the diagrams for ( int ix=1; ix<=int(maxFlavour()); ++ix ) { tcPDPtr q = getParticleData(ix); tcPDPtr qbar = q->CC(); for(unsigned int iz=0;iz<Zdecays.size();++iz) { add(new_ptr((Tree2toNDiagram(2), q, qbar, 1, Z0(), 3, higgs(), 3, Z0(), 5, Zdecays[iz].first,5, Zdecays[iz].second,-1))); } } } void MEPP2ZH::persistentOutput(PersistentOStream & ) const { } void MEPP2ZH::persistentInput(PersistentIStream & , int) { } ClassDescription<MEPP2ZH> MEPP2ZH::initMEPP2ZH; // Definition of the static class description member. void MEPP2ZH::Init() { static ClassDocumentation<MEPP2ZH> documentation ("The MEPP2ZH class implements the matrix element for q qbar -> Z H"); } void MEPP2ZH::doinit() { // get the vedrtex pointers from the SM object tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if(!hwsm) throw InitException() << "Wrong type of StandardModel object in " << "MEeeto2ZH::doinit() the Herwig++" << " version must be used" << Exception::runerror; // set the vertex setWWHVertex(hwsm->vertexWWH()); higgs(getParticleData(ParticleID::h0)); MEfftoVH::doinit(); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2ZJet.h������������������������������������������������0000644�0001750�0001750�00000023710�11754474776�022566� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEPP2ZJet_H #define HERWIG_MEPP2ZJet_H // // This is the declaration of the MEPP2ZJet class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The MEPP2ZJet class implements the matrix element for the production * of a Z boson + a jet including the decay of the Z including \f$Z/\gamma\f$ * interference * * @see \ref MEPP2ZJetInterfaces "The interfaces" * defined for MEPP2ZJet. */ class MEPP2ZJet: public HwMEBase { public: /** * The default constructor. */ MEPP2ZJet(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Used internally by generateKinematics, after calculating the * limits on cos(theta). */ double getCosTheta(double cthmin, double cthmax, const double r); /** * Matrix elements for the different subprocesses */ //@{ /** * Matrix element for \f$q\bar{q}\to Z/\gamma g\f$. * @param fin Spinors for incoming quark * @param ain Spinors for incoming antiquark * @param gout Polarization vectors for the outgoing gluon * @param lm Spinors for outgoing lepton * @param lp Spinors for outgoing antilepton * @param me Whether or not to calculate the matrix element for spin correlations **/ InvEnergy2 qqbarME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, vector<VectorWaveFunction> & gout, vector<SpinorBarWaveFunction> & lm, vector<SpinorWaveFunction> & lp, bool me=false) const; /** * Matrix element for \f$qg\to Z/\gamma q\f$. * @param fin Spinors for incoming quark * @param gin Polarization vectors for the incoming gluon * @param fout Spinors for outgoing quark * @param lm Spinors for outgoing lepton * @param lp Spinors for outgoing antilepton * @param me Whether or not to calculate the matrix element for spin correlations **/ InvEnergy2 qgME(vector<SpinorWaveFunction> & fin,vector<VectorWaveFunction> & gin, vector<SpinorBarWaveFunction> & fout, vector<SpinorBarWaveFunction> & lm, vector<SpinorWaveFunction> & lp, bool me=false) const; /** * Matrix element for \f$\bar{q}g\to Z/\gamma\bar{q}\f$. * @param fin Spinors for incoming antiquark * @param gin Polarization vectors for the incoming gluon * @param fout Spinors for outgoing antiquark * @param lm Spinors for outgoing lepton * @param lp Spinors for outgoing antilepton * @param me Whether or not to calculate the matrix element for spin correlations **/ InvEnergy2 qbargME(vector<SpinorBarWaveFunction> & fin, vector<VectorWaveFunction> & gin, vector<SpinorWaveFunction> & fout, vector<SpinorBarWaveFunction> & lm, vector<SpinorWaveFunction> & lp, bool me=false) const; //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2ZJet> initMEPP2ZJet; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2ZJet & operator=(const MEPP2ZJet &); private: /** * Vertices for the helicity amplitude calculation */ //@{ /** * Pointer to the Z vertex */ AbstractFFVVertexPtr _theFFZVertex; /** * Pointer to the photon vertex */ AbstractFFVVertexPtr _theFFPVertex; /** * Pointer to the \f$qqg\f$ vertex */ AbstractFFVVertexPtr _theQQGVertex; //@} /** * @name Pointers to the \f$Z^0\f$ and \f$\gamma\f$ ParticleData objects */ //@{ /** * Pointer to the Z ParticleData object */ tcPDPtr _z0; /** * Pointer to the photon ParticleData object */ tcPDPtr _gamma; //@} /** * @name Switches to control the particles in the hard process */ //@{ /** * Subprocesses to include */ unsigned int _process; /** * Allowed flavours for the incoming quarks */ int _maxflavour; /** * Control over which Z decay modes to include */ int _zdec; /** * Which terms to include */ unsigned int _gammaZ; /** * Option for the treatment of the W off-shell effects */ unsigned int _widthopt; //@} /** * Probability of selecting \f$1/s^2\f$ for the jacobian * transformation of the boson mass */ double _pprob; /** * Matrix element for spin correlations */ mutable ProductionMatrixElement _me; /** * Storage of the scale to avoid the need to recalculate */ Energy2 _scale; /** * Storage of the off-shell Z mass to avoid the need to recalculate */ Energy2 _mz2; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2ZJet. */ template <> struct BaseClassTrait<Herwig::MEPP2ZJet,1> { /** Typedef of the first base class of MEPP2ZJet. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2ZJet class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2ZJet> : public ClassTraitsBase<Herwig::MEPP2ZJet> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2ZJet"; } /** * The name of a file containing the dynamic library where the class * MEPP2ZJet is implemented. It may also include several, space-separated, * libraries if the class MEPP2ZJet depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2ZJet_H */ ��������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEqq2gZ2ff.h�����������������������������������������������0000644�0001750�0001750�00000016336�11754474776�023000� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEqq2gZ2ff.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEqq2gZ2ff_H #define HERWIG_MEqq2gZ2ff_H // // This is the declaration of the MEqq2gZ2ff class. // #include "Herwig++/MatrixElement/DrellYanBase.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The MEqq2gZ2ff class implements the products of Standard Model * fermion antifermion pairs via the \f$Z^0\f$ resonance including * photon interference terms. * * @see \ref MEqq2gZ2ffInterfaces "The interfaces" * defined for MEqq2gZ2ff. */ class MEqq2gZ2ff: public DrellYanBase { public: /** * The default constructor. */ MEqq2gZ2ff(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Matrix element for \f$q\bar{q}\to \gamma/Z \to f\bar{f}\f$. * @param fin Spinors for incoming quark * @param ain Spinors for incoming antiquark * @param fout Spinors for incoming quark * @param aout Spinors for incoming antiquark * @param me Whether or not to calculate the matrix element for spin correlations */ double qqbarME(vector<SpinorWaveFunction> & fin , vector<SpinorBarWaveFunction> & ain , vector<SpinorBarWaveFunction> & fout, vector<SpinorWaveFunction> & aout, bool me) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEqq2gZ2ff> initMEqq2gZ2ff; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEqq2gZ2ff & operator=(const MEqq2gZ2ff &); private: /** * Pointer to the vertices for the helicity calculations */ //@{ /** * Pointer to the Z vertex */ AbstractFFVVertexPtr _theFFZVertex; /** * Pointer to the photon vertex */ AbstractFFVVertexPtr _theFFPVertex; //@} /** * Pointers to the intermediate resonances */ //@{ /** * Pointer to the Z ParticleData object */ tcPDPtr _z0; /** * Pointer to the photon ParticleData object */ tcPDPtr _gamma; //@} /** * Switches to control the particles in the hard process */ //@{ /** * Minimum allowed flavour for the incoming quarks */ int _minflavour; /** * Maximum allowed flavour for the incoming quarks */ int _maxflavour; /** * Whether to include both \f$Z^0\f$ and \f$\gamma\f$ or only one */ unsigned int _gammaZ; /** * Which processes to include */ int _process; //@} /** * Matrix element for spin correlations */ ProductionMatrixElement _me; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEqq2gZ2ff. */ template <> struct BaseClassTrait<Herwig::MEqq2gZ2ff,1> { /** Typedef of the first base class of MEqq2gZ2ff. */ typedef Herwig::DrellYanBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEqq2gZ2ff class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEqq2gZ2ff> : public ClassTraitsBase<Herwig::MEqq2gZ2ff> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEqq2gZ2ff"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the MEqq2gZ2ff class and any other class on which it depends * (except the base class). */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEqq2gZ2ff_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/Makefile.in������������������������������������������������0000644�0001750�0001750�00000056354�11756461677�023052� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/Hadron DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwMEHadron_la_LIBADD = am_HwMEHadron_la_OBJECTS = MEqq2gZ2ff.lo MEqq2W2ff.lo MEPP2GammaJet.lo \ MEQCD2to2.lo MEPP2HiggsJet.lo MEPP2GammaGamma.lo MEPP2QQ.lo \ MEPP2QQHiggs.lo MEPP2Higgs.lo MEPP2WH.lo MEPP2ZH.lo \ MEPP2WJet.lo MEPP2ZJet.lo MEPP2VV.lo MEPP2VGamma.lo \ MEPP2HiggsVBF.lo MEMinBias.lo HwMEHadron_la_OBJECTS = $(am_HwMEHadron_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwMEHadron_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwMEHadron_la_LDFLAGS) $(LDFLAGS) \ -o $@ HwMEHadronFast_la_LIBADD = am_HwMEHadronFast_la_OBJECTS = MEQCD2to2Fast.lo HwMEHadronFast_la_OBJECTS = $(am_HwMEHadronFast_la_OBJECTS) HwMEHadronFast_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwMEHadronFast_la_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwMEHadron_la_SOURCES) $(HwMEHadronFast_la_SOURCES) DIST_SOURCES = $(HwMEHadron_la_SOURCES) $(HwMEHadronFast_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwMEHadron.la HwMEHadronFast.la HwMEHadron_la_SOURCES = \ MEqq2gZ2ff.cc MEqq2gZ2ff.h \ MEqq2W2ff.cc MEqq2W2ff.h \ MEPP2GammaJet.h MEPP2GammaJet.cc\ MEQCD2to2.h MEQCD2to2.cc\ MEPP2HiggsJet.h MEPP2HiggsJet.cc\ MEPP2GammaGamma.h MEPP2GammaGamma.cc \ MEPP2QQ.h MEPP2QQ.cc \ MEPP2QQHiggs.h MEPP2QQHiggs.cc \ MEPP2Higgs.h MEPP2Higgs.cc\ MEPP2WH.h MEPP2WH.cc \ MEPP2ZH.h MEPP2ZH.cc \ MEPP2WJet.cc MEPP2WJet.h \ MEPP2ZJet.cc MEPP2ZJet.h \ MEPP2VV.cc MEPP2VV.h \ MEPP2VGamma.cc MEPP2VGamma.h \ MEPP2HiggsVBF.cc MEPP2HiggsVBF.h \ MEMinBias.h MEMinBias.cc HwMEHadron_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 5:0:0 HwMEHadronFast_la_SOURCES = \ MEQCD2to2Fast.h MEQCD2to2Fast.cc HwMEHadronFast_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 3:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/Hadron/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/Hadron/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwMEHadron.la: $(HwMEHadron_la_OBJECTS) $(HwMEHadron_la_DEPENDENCIES) $(EXTRA_HwMEHadron_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwMEHadron_la_LINK) -rpath $(pkglibdir) $(HwMEHadron_la_OBJECTS) $(HwMEHadron_la_LIBADD) $(LIBS) HwMEHadronFast.la: $(HwMEHadronFast_la_OBJECTS) $(HwMEHadronFast_la_DEPENDENCIES) $(EXTRA_HwMEHadronFast_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwMEHadronFast_la_LINK) -rpath $(pkglibdir) $(HwMEHadronFast_la_OBJECTS) $(HwMEHadronFast_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEMinBias.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2GammaGamma.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2GammaJet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2Higgs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2HiggsJet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2HiggsVBF.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2QQ.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2QQHiggs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2VGamma.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2VV.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2WH.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2WJet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2ZH.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEPP2ZJet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEQCD2to2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEQCD2to2Fast.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEqq2W2ff.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEqq2gZ2ff.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2Higgs.cc����������������������������������������������0000644�0001750�0001750�00000157122�11754474776�023116� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEPP2Higgs.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2Higgs class. // #include "MEPP2Higgs.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Cuts/Cuts.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/Utilities/Maths.h" using namespace Herwig; const complex<Energy2> MEPP2Higgs::epsi_ = complex<Energy2>(ZERO,-1.e-10*GeV2); MEPP2Higgs::MEPP2Higgs() : scaleopt_(1), mu_F_(100.*GeV), shapeOption_(2), processOption_(1), minFlavour_(4), maxFlavour_(5), mh_(ZERO), wh_(ZERO), minLoop_(6),maxLoop_(6),massOption_(0), mu_R_opt_(1),mu_F_opt_(1), channelwgtA_(0.45),channelwgtB_(0.15), ggPow_(1.6), qgPow_(1.6), enhance_(1.1), nover_(0), ntry_(0), ngen_(0), maxwgt_(0.), power_(2.0), pregg_(7.), preqg_(3.), pregqbar_(3.), minpT_(2.*GeV) {} ClassDescription<MEPP2Higgs> MEPP2Higgs::initMEPP2Higgs; // Definition of the static class description member. void MEPP2Higgs::persistentOutput(PersistentOStream & os) const { os << HGGVertex_ << HFFVertex_ << shapeOption_ << processOption_ << minFlavour_ << maxFlavour_ << hmass_ << ounit(mh_,GeV) << ounit(wh_,GeV) << minLoop_ << maxLoop_ << massOption_ << alpha_ << prefactor_ << power_ << pregg_ << preqg_ << pregqbar_ << ounit( minpT_, GeV ) << ggPow_ << qgPow_ << enhance_ << channelwgtA_ << channelwgtB_ << channelWeights_ << mu_R_opt_ << mu_F_opt_; } void MEPP2Higgs::persistentInput(PersistentIStream & is, int) { is >> HGGVertex_ >> HFFVertex_ >> shapeOption_ >> processOption_ >> minFlavour_ >> maxFlavour_ >> hmass_ >> iunit(mh_,GeV) >> iunit(wh_,GeV) >> minLoop_ >> maxLoop_ >> massOption_ >> alpha_ >> prefactor_ >> power_ >> pregg_ >> preqg_ >> pregqbar_ >> iunit( minpT_, GeV ) >> ggPow_ >> qgPow_ >> enhance_ >> channelwgtA_ >> channelwgtB_ >> channelWeights_ >> mu_R_opt_ >> mu_F_opt_; } void MEPP2Higgs::Init() { static ClassDocumentation<MEPP2Higgs> documentation ("The MEPP2Higgs class implements the matrix elements for" " Higgs production (with decay H->W-W+) in hadron-hadron collisions" " including the generation of additional hard QCD radiation in " "gg to h0 processes in the POWHEG scheme", "Hard QCD radiation for $gg\\to h^0$ processes in the" " POWHEG scheme \\cite{Hamilton:2009za}.", "%\\cite{Hamilton:2009za}\n" "\\bibitem{Hamilton:2009za}\n" " K.~Hamilton, P.~Richardson and J.~Tully,\n" " ``A Positive-Weight Next-to-Leading Order Monte Carlo Simulation for Higgs\n" " Boson Production,''\n" " JHEP {\\bf 0904}, 116 (2009)\n" " [arXiv:0903.4345 [hep-ph]].\n" " %%CITATION = JHEPA,0904,116;%%\n"); static Switch<MEPP2Higgs,unsigned int> interfaceFactorizationScaleOption ("FactorizationScaleOption", "Option for the choice of factorization scale", &MEPP2Higgs::scaleopt_, 1, false, false); static SwitchOption interfaceDynamic (interfaceFactorizationScaleOption, "Dynamic", "Dynamic factorization scale equal to the current sqrt(sHat())", 1); static SwitchOption interfaceFixed (interfaceFactorizationScaleOption, "Fixed", "Use a fixed factorization scale set with FactorizationScaleValue", 2); static Parameter<MEPP2Higgs,Energy> interfaceFactorizationScaleValue ("FactorizationScaleValue", "Value to use in the event of a fixed factorization scale", &MEPP2Higgs::mu_F_, GeV, 100.0*GeV, 50.0*GeV, 500.0*GeV, true, false, Interface::limited); static Reference<MEPP2Higgs,ShowerAlpha> interfaceCoupling ("Coupling", "Pointer to the object to calculate the coupling for the correction", &MEPP2Higgs::alpha_, false, false, true, false, false); static Switch<MEPP2Higgs,unsigned int> interfaceShapeOption ("ShapeScheme", "Option for the treatment of the Higgs resonance shape", &MEPP2Higgs::shapeOption_, 1, false, false); static SwitchOption interfaceStandardShapeFixed (interfaceShapeOption, "FixedBreitWigner", "Breit-Wigner s-channel resonanse", 1); static SwitchOption interfaceStandardShapeRunning (interfaceShapeOption, "MassGenerator", "Use the mass generator to give the shape", 2); static Switch<MEPP2Higgs,unsigned int> interfaceProcess ("Process", "Which subprocesses to include", &MEPP2Higgs::processOption_, 1, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all subprocesses", 1); static SwitchOption interfaceProcess1 (interfaceProcess, "qqbar", "Only include the incoming q qbar subprocess", 2); static SwitchOption interfaceProcessgg (interfaceProcess, "gg", "Only include the incoming gg subprocess", 3); static Parameter<MEPP2Higgs,unsigned int> interfaceMinimumInLoop ("MinimumInLoop", "The minimum flavour of the quarks to include in the loops", &MEPP2Higgs::minLoop_, 6, 5, 6, false, false, Interface::limited); static Parameter<MEPP2Higgs,unsigned int> interfaceMaximumInLoop ("MaximumInLoop", "The maximum flavour of the quarks to include in the loops", &MEPP2Higgs::maxLoop_, 6, 5, 6, false, false, Interface::limited); static Switch<MEPP2Higgs,unsigned int> interfaceMassOption ("MassOption", "Option for the treatment of the masses in the loop diagrams", &MEPP2Higgs::massOption_, 0, false, false); static SwitchOption interfaceMassOptionFull (interfaceMassOption, "Full", "Include the full mass dependence", 0); static SwitchOption interfaceMassOptionLarge (interfaceMassOption, "Large", "Use the heavy mass limit", 1); static Parameter<MEPP2Higgs,int> interfaceMinimumFlavour ("MinimumFlavour", "The minimum flavour of the incoming quarks in the hard process", &MEPP2Higgs::minFlavour_, 4, 3, 5, false, false, Interface::limited); static Parameter<MEPP2Higgs,int> interfaceMaximumFlavour ("MaximumFlavour", "The maximum flavour of the incoming quarks in the hard process", &MEPP2Higgs::maxFlavour_, 5, 3, 5, false, false, Interface::limited); static Parameter<MEPP2Higgs,double> interfaceQGChannelWeight ("QGChannelWeight", "The relative weights of the g g and q g channels for selection." " This is a technical parameter for the phase-space generation and " "should not affect the results only the efficiency and fraction" " of events with weight > 1.", &MEPP2Higgs::channelwgtA_, 0.45, 0., 1.e10, false, false, Interface::limited); static Parameter<MEPP2Higgs,double> interfaceQbarGChannelWeight ("QbarGChannelWeight", "The relative weights of the g g abd qbar g channels for selection." " This is a technical parameter for the phase-space generation and " "should not affect the results only the efficiency and fraction", &MEPP2Higgs::channelwgtB_, 0.15, 0., 1.e10, false, false, Interface::limited); static Parameter<MEPP2Higgs,double> interfaceGGPower ("GGPower", "Power for the phase-space sampling of the gg channel", &MEPP2Higgs::ggPow_, 1.6, 1.0, 3.0, false, false, Interface::limited); static Parameter<MEPP2Higgs,double> interfaceQGPower ("QGPower", "Power for the phase-space sampling of the qg and qbarg channels", &MEPP2Higgs::qgPow_, 1.6, 1.0, 3.0, false, false, Interface::limited); static Parameter<MEPP2Higgs,double> interfaceEnhancementFactor ("InitialEnhancementFactor", "The enhancement factor for initial-state radiation in the shower to ensure" " the weight for the matrix element correction is less than one.", &MEPP2Higgs::enhance_, 1.1, 1.0, 10.0, false, false, Interface::limited); static Parameter<MEPP2Higgs,double> interfacePower ("Power", "The power for the sampling of the matrix elements", &MEPP2Higgs::power_, 2.0, 1.0, 10.0, false, false, Interface::limited); static Parameter<MEPP2Higgs,double> interfacePrefactorgg ("Prefactorgg", "The prefactor for the sampling of the q qbar channel", &MEPP2Higgs::pregg_, 7.0, 0.0, 1000.0, false, false, Interface::limited); static Parameter<MEPP2Higgs,double> interfacePrefactorqg ("Prefactorqg", "The prefactor for the sampling of the q g channel", &MEPP2Higgs::preqg_, 3.0, 0.0, 1000.0, false, false, Interface::limited); static Parameter<MEPP2Higgs,double> interfacePrefactorgqbar ("Prefactorgqbar", "The prefactor for the sampling of the g qbar channel", &MEPP2Higgs::pregqbar_, 3.0, 0.0, 1000.0, false, false, Interface::limited); static Parameter<MEPP2Higgs, Energy> interfacePtMin ("minPt", "The pt cut on hardest emision generation" "2*(1-Beta)*exp(-sqr(intrinsicpT/RMS))/sqr(RMS)", &MEPP2Higgs::minpT_, GeV, 2.*GeV, ZERO, 100000.0*GeV, false, false, Interface::limited); static Switch<MEPP2Higgs,unsigned int> interface_mu_R_Option ("mu_R_Option", "Option to use pT or mT as the scale in alphaS", &MEPP2Higgs::mu_R_opt_, 1, false, false); static SwitchOption interface_mu_R_Option_mT (interface_mu_R_Option, "mT", "Use mT as the scale in alpha_S", 0); static SwitchOption interface_mu_R_Option_pT (interface_mu_R_Option, "pT", "Use pT as the scale in alpha_S", 1); static Switch<MEPP2Higgs,unsigned int> interface_mu_F_Option ("mu_F_Option", "Option to use pT or mT as the factorization scale in the PDFs", &MEPP2Higgs::mu_F_opt_, 1, false, false); static SwitchOption interface_mu_F_Option_mT (interface_mu_F_Option, "mT", "Use mT as the scale in the PDFs", 0); static SwitchOption interface_mu_F_Option_pT (interface_mu_F_Option, "pT", "Use pT as the scale in the PDFs", 1); } void MEPP2Higgs::doinit() { HwMEBase::doinit(); // get the vertex pointers from the SM object tcHwSMPtr theSM = dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(!theSM) { throw InitException() << "Wrong type of StandardModel object in MEPP2Higgs::doinit()," << " the Herwig++ version must be used" << Exception::runerror; } HGGVertex_ = theSM->vertexHGG(); HFFVertex_ = theSM->vertexFFH(); // get the mass generator for the higgs PDPtr h0 = getParticleData(ParticleID::h0); mh_ = h0->mass(); wh_ = h0->generateWidth(mh_); if(h0->massGenerator()) { hmass_=dynamic_ptr_cast<GenericMassGeneratorPtr>(h0->massGenerator()); } if(shapeOption_==2&&!hmass_) throw InitException() << "If using the mass generator for the line shape in MEPP2Higgs::doinit()" << "the mass generator must be an instance of the GenericMassGenerator class" << Exception::runerror; // stuff for the ME correction double total = 1.+channelwgtA_+channelwgtB_; channelWeights_.push_back(1./total); channelWeights_.push_back(channelWeights_.back()+channelwgtA_/total); channelWeights_.push_back(channelWeights_.back()+channelwgtB_/total); // insert the different prefactors in the vector for easy look up prefactor_.push_back(pregg_); prefactor_.push_back(preqg_); prefactor_.push_back(preqg_); prefactor_.push_back(pregqbar_); prefactor_.push_back(pregqbar_); } void MEPP2Higgs::dofinish() { HwMEBase::dofinish(); if(ntry_==0) return; generator()->log() << "MEPP2Higgs when applying the hard correction " << "generated " << ntry_ << " trial emissions of which " << ngen_ << " were accepted\n"; if(nover_==0) return; generator()->log() << "MEPP2Higgs when applying the hard correction " << nover_ << " weights larger than one were generated of which" << " the largest was " << maxwgt_ << "\n"; } unsigned int MEPP2Higgs::orderInAlphaS() const { return 2; } unsigned int MEPP2Higgs::orderInAlphaEW() const { return 1; } Energy2 MEPP2Higgs::scale() const { return scaleopt_ == 1 ? sHat() : sqr(mu_F_); } int MEPP2Higgs::nDim() const { return 0; } bool MEPP2Higgs::generateKinematics(const double *) { Lorentz5Momentum pout = meMomenta()[0] + meMomenta()[1]; pout.rescaleMass(); meMomenta()[2].setMass(pout.mass()); meMomenta()[2] = LorentzMomentum(pout.x(),pout.y(),pout.z(),pout.t()); jacobian(1.0); // check whether it passes all the cuts: returns true if it does vector<LorentzMomentum> out(1,meMomenta()[2]); tcPDVector tout(1,mePartonData()[2]); return lastCuts().passCuts(tout, out, mePartonData()[0], mePartonData()[1]); } void MEPP2Higgs::getDiagrams() const { tcPDPtr h0=getParticleData(ParticleID::h0); // gg -> H process if(processOption_==1||processOption_==3) { tcPDPtr g=getParticleData(ParticleID::g); add(new_ptr((Tree2toNDiagram(2), g, g, 1, h0, -1))); } // q qbar -> H processes if(processOption_==1||processOption_==2) { for ( int i = minFlavour_; i <= maxFlavour_; ++i ) { tcPDPtr q = getParticleData(i); tcPDPtr qb = q->CC(); add(new_ptr((Tree2toNDiagram(2), q, qb, 1, h0, -2))); } } } CrossSection MEPP2Higgs::dSigHatDR() const { using Constants::pi; InvEnergy2 bwfact; if(shapeOption_==1) { bwfact = mePartonData()[2]->generateWidth(sqrt(sHat()))*sqrt(sHat())/pi/ (sqr(sHat()-sqr(mh_))+sqr(mh_*wh_)); } else { bwfact = hmass_->BreitWignerWeight(sqrt(sHat())); } double cs = me2() * jacobian() * pi * double(UnitRemoval::E4 * bwfact/sHat()); return UnitRemoval::InvE2 * sqr(hbarc) * cs; } double MEPP2Higgs::me2() const { double output(0.0); ScalarWaveFunction hout(meMomenta()[2],mePartonData()[2],outgoing); // Safety code to garantee the reliable behaviour of Higgs shape limits // (important for heavy and broad Higgs resonance). Energy hmass = meMomenta()[2].m(); tcPDPtr h0 = mePartonData()[2]; Energy mass = h0->mass(); Energy halfmass = .5*mass; if (.0*GeV > hmass) return 0.0; // stricly speaking the condition is applicable if // h0->widthUpCut() == h0->widthLoCut()... if (h0->widthLoCut() > halfmass) { if ( mass + h0->widthUpCut() < hmass || mass - h0->widthLoCut() > hmass ) return 0.0; } else { if (mass + halfmass < hmass || halfmass > hmass) return 0.0; } if (mePartonData()[0]->id() == ParticleID::g && mePartonData()[1]->id() == ParticleID::g) { VectorWaveFunction gin1(meMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction gin2(meMomenta()[1],mePartonData()[1],incoming); vector<VectorWaveFunction> g1,g2; for(unsigned int i = 0; i < 2; ++i) { gin1.reset(2*i); g1.push_back(gin1); gin2.reset(2*i); g2.push_back(gin2); } output = ggME(g1,g2,hout,false); } else { if (mePartonData()[0]->id() == -mePartonData()[1]->id()) { SpinorWaveFunction qin (meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction qbin(meMomenta()[1],mePartonData()[1],incoming); vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; for (unsigned int i = 0; i < 2; ++i) { qin.reset(i); fin.push_back(qin); qbin.reset(i); ain.push_back(qbin); } output = qqME(fin,ain,hout,false); } else assert(false); } return output; } Selector<MEBase::DiagramIndex> MEPP2Higgs::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for (DiagramIndex i = 0; i < diags.size(); ++i) sel.insert(1.0, i); return sel; } Selector<const ColourLines *> MEPP2Higgs::colourGeometries(tcDiagPtr diag) const { // colour lines static const ColourLines line1("1 -2,2 -1"); static const ColourLines line2("1 -2"); // select the colour flow Selector<const ColourLines *> sel; if (diag->id() == -1) { sel.insert(1.0, &line1); } else { sel.insert(1.0, &line2); } // return the answer return sel; } void MEPP2Higgs::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); if(hard[0]->id() < hard[1]->id()) { swap(hard[0],hard[1]); } // identify the process and calculate the matrix element if(hard[0]->id() == ParticleID::g && hard[1]->id() == ParticleID::g) { vector<VectorWaveFunction> g1,g2; vector<SpinorBarWaveFunction> q; vector<SpinorWaveFunction> qbar; VectorWaveFunction (g1,hard[0],incoming,false,true,true); VectorWaveFunction (g2,hard[1],incoming,false,true,true); ScalarWaveFunction hout(hard[2],outgoing,true); g1[1] = g1[2]; g2[1] = g2[2]; ggME(g1,g2,hout,true); } else { vector<SpinorWaveFunction> q1; vector<SpinorBarWaveFunction> q2; SpinorWaveFunction (q1,hard[0],incoming,false,true); SpinorBarWaveFunction (q2,hard[1],incoming,false,true); ScalarWaveFunction hout(hard[2],outgoing,true); qqME(q1,q2,hout,true); } // construct the vertex HardVertexPtr hardvertex = new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(me_); // set the pointers and to and from the vertex for(unsigned int i = 0; i < 3; ++i) (hard[i]->spinInfo())->productionVertex(hardvertex); } double MEPP2Higgs::ggME(vector<VectorWaveFunction> g1, vector<VectorWaveFunction> g2, ScalarWaveFunction & in, bool calc) const { ProductionMatrixElement newme(PDT::Spin1,PDT::Spin1,PDT::Spin0); Energy2 s(sHat()); double me2(0.0); for(int i = 0; i < 2; ++i) { for(int j = 0; j < 2; ++j) { Complex diag = HGGVertex_->evaluate(s,g1[i],g2[j],in); me2 += norm(diag); if(calc) newme(2*i, 2*j, 0) = diag; } } if(calc) me_.reset(newme); // initial colour and spin factors: colour -> (8/64) and spin -> (1/4) return me2/32.; } double MEPP2Higgs::qqME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, ScalarWaveFunction & in, bool calc) const { ProductionMatrixElement newme(PDT::Spin1Half,PDT::Spin1Half,PDT::Spin0); Energy2 s(scale()); double me2(0.0); for(int i = 0; i < 2; ++i) { for(int j = 0; j < 2; ++j) { Complex diag = HFFVertex_->evaluate(s,fin[i],ain[j],in); me2+=norm(diag); if(calc) newme(i, j, 0) = diag; } } if(calc) me_.reset(newme); // final colour/spin factors return me2/12.; } void MEPP2Higgs::applyHardMatrixElementCorrection(ShowerTreePtr tree) { useMe(); assert(tree->outgoingLines().size()==1); if(tree->incomingLines().begin()->second->id()!=ParticleID::g) return; // get gluons and Higgs // get the gluons map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit; ShowerParticleVector incoming; vector<tcBeamPtr> beams; for(cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { incoming.push_back(cit->first->progenitor()); beams.push_back(cit->first->beam()); } if(incoming[0]->momentum().z()<ZERO) { swap(incoming[0],incoming[1]); swap(beams[0],beams[1]); } // get the Higgs PPtr higgs; higgs=tree->outgoingLines().begin()->first->copy(); // calculate the momenta unsigned int iemit,itype; vector<Lorentz5Momentum> pnew; pair<double,double> xnew; // if not accepted return tPDPtr out; if(!applyHard(incoming,beams,higgs,iemit,itype,pnew,xnew,out)) return; // if applying ME correction create the new particles if(itype==0) { // ensure gluon can be put on shell Lorentz5Momentum ptest(pnew[2]); if(ptest.boost(-(pnew[0]+pnew[1]).boostVector()).e() < getParticleData(ParticleID::g)->constituentMass()) return; // create the new gluon PPtr newg= getParticleData(ParticleID::g)->produceParticle(pnew[2]); PPtr newg1,newg2; ColinePtr col; bool colour = UseRandom::rndbool(); // make the new particles if(iemit==0) { newg1 = incoming[0]->dataPtr()->produceParticle(pnew[0]); if(colour) { col = incoming[0]->colourLine(); incoming[0]->antiColourLine()->addAntiColoured(newg1); } else { col = incoming[0]->antiColourLine(); incoming[0]->colourLine()->addColoured(newg1); } newg2 = new_ptr(Particle(*incoming[1])); col->removeColoured(newg2,colour); newg2->set5Momentum(pnew[1]); } else { newg2 = incoming[1]->dataPtr()->produceParticle(pnew[1]); if(colour) { col= incoming[1]->antiColourLine(); incoming[1]->colourLine()->addColoured(newg2); } else { col= incoming[1]->colourLine(); incoming[1]->antiColourLine()->addAntiColoured(newg2); } newg1 = new_ptr(Particle(*incoming[0])); col->removeColoured(newg1,!colour); newg1->set5Momentum(pnew[0]); } // set the colour lines ColinePtr newline=new_ptr(ColourLine()); if(iemit==0) { newline->addColoured(newg1,!colour); newline->addColoured(newg ,!colour); col ->addColoured(newg , colour); col ->addColoured(newg2, colour); } else { newline->addColoured(newg2, colour); newline->addColoured(newg , colour); col ->addColoured(newg ,!colour); col ->addColoured(newg1,!colour); } // change the existing gluons PPtr orig; for(cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { // remove old particles from colour line ColinePtr l1=cit->first->copy()-> colourLine(); ColinePtr l2=cit->first->copy()->antiColourLine(); l1->removeColoured (cit->first->copy() ); l1->removeColoured (cit->first->progenitor()); l2->removeAntiColoured(cit->first->copy() ); l2->removeAntiColoured(cit->first->progenitor()); if(cit->first->progenitor()->momentum().z()/newg1->momentum().z()>0) { // insert new particles cit->first->copy(newg1); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newg1,1,false))); sp->x(xnew.first); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; cit->first->perturbative(iemit!=0); if(iemit==0) orig=cit->first->original(); } else { // insert new particles cit->first->copy(newg2); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newg2,1,false))); sp->x(xnew.second); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; cit->first->perturbative(iemit==0); if(iemit==1) orig=cit->first->original(); } } // fix the momentum of the higgs map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt=tree->outgoingLines().begin(); Boost boostv=cjt->first->progenitor()->momentum().findBoostToCM(); LorentzRotation trans(pnew[3].boostVector()); trans *=LorentzRotation(boostv); cjt->first->progenitor()->transform(trans); cjt->first->copy()->transform(trans); tree->hardMatrixElementCorrection(true); // add the gluon ShowerParticlePtr sg=new_ptr(ShowerParticle(*newg,1,true)); ShowerProgenitorPtr gluon=new_ptr(ShowerProgenitor(orig,newg,sg)); gluon->perturbative(false); tree->outgoingLines().insert(make_pair(gluon,sg)); } else if(itype==1) { // ensure outgoing quark can be put on-shell Lorentz5Momentum ptest(pnew[2]); if(ptest.boost(-(pnew[0]+pnew[1]).boostVector()).e() < out->constituentMass()) return; // create the new particles PPtr newqout = out->produceParticle(pnew[2]); PPtr newqin,newg; if(iemit==0) { newqin = out ->produceParticle(pnew[0]); newg = new_ptr(Particle(*incoming[1])); newg->set5Momentum(pnew[1]); incoming[0]->colourLine() ->addColoured(newqin); incoming[0]->antiColourLine()->addColoured(newqout); } else { newg = new_ptr(Particle(*incoming[0])); newg->set5Momentum(pnew[0]); newqin = out ->produceParticle(pnew[1]); incoming[1]->colourLine() ->addColoured(newqin); incoming[1]->antiColourLine()->addColoured(newqout); } // change the existing incoming partons PPtr orig; for(cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { // remove old particles from colour line ColinePtr l1=cit->first->copy()-> colourLine(); ColinePtr l2=cit->first->copy()->antiColourLine(); l1->removeColoured (cit->first->copy() ); l1->removeColoured (cit->first->progenitor()); l2->removeAntiColoured(cit->first->copy() ); l2->removeAntiColoured(cit->first->progenitor()); if(cit->first->progenitor()->momentum().z()/newqin->momentum().z()>0.) { // insert new particles cit->first->copy(newqin); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newqin,1,false))); sp->x(iemit==0 ? xnew.first : xnew.second ); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; cit->first->perturbative(false); orig=cit->first->original(); } else { // insert new particles cit->first->copy(newg); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newg,1,false))); sp->x(iemit==1 ? xnew.first : xnew.second ); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; cit->first->perturbative(true); } } // fix the momentum of the higgs map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt=tree->outgoingLines().begin(); Boost boostv=cjt->first->progenitor()->momentum().findBoostToCM(); LorentzRotation trans(pnew[3].boostVector()); trans *=LorentzRotation(boostv); cjt->first->progenitor()->transform(trans); cjt->first->copy()->transform(trans); tree->hardMatrixElementCorrection(true); // add the outgoing quark ShowerParticlePtr sout=new_ptr(ShowerParticle(*newqout,1,true)); ShowerProgenitorPtr out=new_ptr(ShowerProgenitor(orig,newqout,sout)); out->perturbative(false); tree->outgoingLines().insert(make_pair(out,sout)); } else if(itype==2) { // ensure outgoing antiquark can be put on-shell Lorentz5Momentum ptest(pnew[2]); if(ptest.boost(-(pnew[0]+pnew[1]).boostVector()).e() < incoming[0]->dataPtr()->constituentMass()) return; // create the new particles PPtr newqout = out->produceParticle(pnew[2]); PPtr newqin,newg; if(iemit==0) { newqin = out ->produceParticle(pnew[0]); newg = new_ptr(Particle(*incoming[1])); newg->set5Momentum(pnew[1]); incoming[0]->colourLine() ->addAntiColoured(newqout); incoming[0]->antiColourLine()->addAntiColoured(newqin); } else { newg = new_ptr(Particle(*incoming[0])); newg->set5Momentum(pnew[0]); newqin = out ->produceParticle(pnew[1]); incoming[1]->colourLine() ->addAntiColoured(newqout); incoming[1]->antiColourLine()->addAntiColoured(newqin); } // change the existing incoming partons PPtr orig; for(cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { // remove old particles from colour line ColinePtr l1=cit->first->copy()-> colourLine(); ColinePtr l2=cit->first->copy()->antiColourLine(); l1->removeColoured (cit->first->copy() ); l1->removeColoured (cit->first->progenitor()); l2->removeAntiColoured(cit->first->copy() ); l2->removeAntiColoured(cit->first->progenitor()); if(cit->first->progenitor()->momentum().z()/newqin->momentum().z()>0.) { // insert new particles cit->first->copy(newqin); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newqin,1,false))); sp->x(iemit==0 ? xnew.first : xnew.second ); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; cit->first->perturbative(false); orig=cit->first->original(); } else { // insert new particles cit->first->copy(newg); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newg,1,false))); sp->x(iemit==1 ? xnew.first : xnew.second ); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; cit->first->perturbative(true); } } // fix the momentum of the higgs map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt=tree->outgoingLines().begin(); Boost boostv=cjt->first->progenitor()->momentum().findBoostToCM(); LorentzRotation trans(pnew[3].boostVector()); trans *=LorentzRotation(boostv); cjt->first->progenitor()->transform(trans); cjt->first->copy()->transform(trans); tree->hardMatrixElementCorrection(true); // add the outgoing antiquark ShowerParticlePtr sout=new_ptr(ShowerParticle(*newqout,1,true)); ShowerProgenitorPtr out=new_ptr(ShowerProgenitor(orig,newqout,sout)); out->perturbative(false); tree->outgoingLines().insert(make_pair(out,sout)); } } bool MEPP2Higgs::softMatrixElementVeto(ShowerProgenitorPtr initial, ShowerParticlePtr parent,Branching br) { if(parent->isFinalState()) return false; // check if me correction should be applied long id[2]={initial->id(),parent->id()}; // must have started as a gluon if(id[0]!=ParticleID::g) return false; // must be a gluon going into the hard process if(br.ids[1]!=ParticleID::g) return false; // get the pT Energy pT=br.kinematics->pT(); // check if hardest so far if(pT<initial->highestpT()) return false; // compute the invariants double kappa(sqr(br.kinematics->scale())/mh2_),z(br.kinematics->z()); Energy2 shat(mh2_/z*(1.+(1.-z)*kappa)),that(-(1.-z)*kappa*mh2_),uhat(-(1.-z)*shat); // check which type of process Energy2 me; // g g if(br.ids[0]==ParticleID::g&&br.ids[2]==ParticleID::g) { double split = 6.*(z/(1.-z)+(1.-z)/z+z*(1.-z)); me = ggME(shat,that,uhat)/split; } // q g else if(br.ids[0] >= 1 && br.ids[0] <= 5 && br.ids[2]==br.ids[0]) { double split = 4./3./z*(1.+sqr(1.-z)); me = qgME(shat,uhat,that)/split; } // qbar g else if(br.ids[0] <= -1 && br.ids[0] >= -5 && br.ids[2]==br.ids[0]) { double split = 4./3./z*(1.+sqr(1.-z)); me = qbargME(shat,uhat,that)/split; } else { return false; } InvEnergy2 pre = 0.125/Constants::pi/loME()*sqr(mh2_)*that/shat/(shat+uhat); double wgt = -pre*me/enhance_; if(wgt<.0||wgt>1.) generator()->log() << "Soft ME correction weight too large or " << "negative in MEPP2Higgs::" << "softMatrixElementVeto()\n soft weight " << " sbar = " << shat/mh2_ << " tbar = " << that/mh2_ << "weight = " << wgt << " for " << br.ids[0] << " " << br.ids[1] << " " << br.ids[2] << "\n"; // if not vetoed if(UseRandom::rndbool(wgt)) { initial->highestpT(pT); return false; } // otherwise parent->setEvolutionScale(br.kinematics->scale()); return true; } HardTreePtr MEPP2Higgs::generateHardest(ShowerTreePtr tree) { if(tree->incomingLines().begin()->second->id()!=ParticleID::g) return HardTreePtr(); useMe(); // get the particles to be showered beams_.clear(); partons_.clear(); // find the incoming particles ShowerParticleVector incoming; map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit; vector<ShowerProgenitorPtr> particlesToShower; for( cit = tree->incomingLines().begin(); cit != tree->incomingLines().end(); ++cit ) { incoming.push_back( cit->first->progenitor() ); beams_.push_back( cit->first->beam() ); partons_.push_back( cit->first->progenitor()->dataPtr() ); particlesToShower.push_back( cit->first ); } // find the higgs boson PPtr higgs; if(tree->outgoingLines().size() == 1) { higgs = tree->outgoingLines().begin()->first->copy(); } else { higgs = tree->outgoingLines().begin()->first->copy()->parents()[0]; } // calculate the rapidity of the higgs yh_ = 0.5 * log((higgs->momentum().e()+higgs->momentum().z())/ (higgs->momentum().e()-higgs->momentum().z())); mass_=higgs->mass(); mh2_ = sqr(mass_); vector<Lorentz5Momentum> pnew; int emission_type(-1); // generate the hard emission and return if no emission if(!getEvent(pnew,emission_type)) { for(unsigned int ix=0;ix<particlesToShower.size();++ix) particlesToShower[ix]->maximumpT(minpT_); return HardTreePtr(); } // construct the HardTree object needed to perform the showers ShowerParticleVector newparticles(4); // create the partons int iemit=-1; // g g -> h g if(emission_type==0) { newparticles[0] = new_ptr(ShowerParticle(partons_[0] ,false)); newparticles[1] = new_ptr(ShowerParticle(partons_[1] ,false)); iemit = pnew[0].z()/pnew[3].z()>0. ? 0 : 1; } // g q -> H q else if(emission_type==1) { newparticles[0] = new_ptr(ShowerParticle(partons_[0] ,false)); newparticles[1] = new_ptr(ShowerParticle(out_ ,false)); iemit = 1; } // q g -> H q else if(emission_type==2) { newparticles[0] = new_ptr(ShowerParticle(out_ ,false)); newparticles[1] = new_ptr(ShowerParticle(partons_[1] ,false)); iemit = 0; } // g qbar -> H qbar else if(emission_type==3) { newparticles[0] = new_ptr(ShowerParticle(partons_[0] ,false)); newparticles[1] = new_ptr(ShowerParticle(out_ ,false)); iemit = 1; } // qbar g -> H qbar else if(emission_type==4) { newparticles[0] = new_ptr(ShowerParticle(out_ ,false)); newparticles[1] = new_ptr(ShowerParticle(partons_[1] ,false)); iemit = 0; } // create the jet newparticles[3] = new_ptr(ShowerParticle(out_ , true)); // create the boson newparticles[2] = new_ptr(ShowerParticle(higgs->dataPtr(),true)); // set the momenta for(unsigned int ix=0;ix<4;++ix) newparticles[ix]->set5Momentum(pnew[ix]); // create the off-shell particle Lorentz5Momentum poff=pnew[iemit]-pnew[3]; poff.rescaleMass(); newparticles.push_back(new_ptr(ShowerParticle(partons_[iemit],false))); newparticles.back()->set5Momentum(poff); vector<HardBranchingPtr> inBranch,hardBranch; // create the branchings for the incoming particles inBranch.push_back(new_ptr(HardBranching(newparticles[0],SudakovPtr(), HardBranchingPtr(),HardBranching::Incoming))); inBranch.push_back(new_ptr(HardBranching(newparticles[1],SudakovPtr(), HardBranchingPtr(),HardBranching::Incoming))); // create the branching for the emitted jet inBranch[iemit]->addChild(new_ptr(HardBranching(newparticles[3],SudakovPtr(), inBranch[iemit],HardBranching::Outgoing))); // intermediate IS particle hardBranch.push_back(new_ptr(HardBranching(newparticles[4],SudakovPtr(), inBranch[iemit],HardBranching::Incoming))); inBranch[iemit]->addChild(hardBranch.back()); // set the colour partners hardBranch.back()->colourPartner(inBranch[iemit==0 ? 1 : 0]); inBranch[iemit==0 ? 1 : 0]->colourPartner(hardBranch.back()); // add other particle hardBranch.push_back(inBranch[iemit==0 ? 1 : 0]); // outgoing Higgs boson hardBranch.push_back(new_ptr(HardBranching(newparticles[2],SudakovPtr(), HardBranchingPtr(),HardBranching::Outgoing))); // make the tree HardTreePtr hardtree=new_ptr(HardTree(hardBranch,inBranch,ShowerInteraction::QCD)); // connect the ShowerParticles with the branchings // and set the maximum pt for the radiation set<HardBranchingPtr> hard=hardtree->branchings(); for(unsigned int ix=0;ix<particlesToShower.size();++ix) { if( pt_ < minpT_ ) particlesToShower[ix]->maximumpT(minpT_); else particlesToShower[ix]->maximumpT(pt_); for(set<HardBranchingPtr>::const_iterator mit=hard.begin(); mit!=hard.end();++mit) { if(particlesToShower[ix]->progenitor()->id()==(*mit)->branchingParticle()->id()&& (( particlesToShower[ix]->progenitor()->isFinalState()&& (**mit).status()==HardBranching::Outgoing)|| (!particlesToShower[ix]->progenitor()->isFinalState()&& (**mit).status()==HardBranching::Incoming))) { if(particlesToShower[ix]->progenitor()->momentum().z()/ (*mit)->branchingParticle()->momentum().z()<0.) continue; hardtree->connect(particlesToShower[ix]->progenitor(),*mit); if((**mit).status()==HardBranching::Incoming) { (*mit)->beam(particlesToShower[ix]->original()->parents()[0]); } HardBranchingPtr parent=(*mit)->parent(); while(parent) { parent->beam(particlesToShower[ix]->original()->parents()[0]); parent=parent->parent(); }; } } } ColinePtr cline1 = new_ptr(ColourLine()); ColinePtr cline2 = new_ptr(ColourLine()); unsigned int ng(0); for(set<HardBranchingPtr>::const_iterator cit=hardtree->branchings().begin(); cit!=hardtree->branchings().end();++cit) { if((**cit).branchingParticle()->dataPtr()->iColour()!=PDT::Colour8) continue; if(ng==0) { cline1->addColoured ((**cit).branchingParticle()); cline2->addAntiColoured((**cit).branchingParticle()); ++ng; } else { cline2->addColoured ((**cit).branchingParticle()); cline1->addAntiColoured((**cit).branchingParticle()); } } // return the answer return hardtree; } bool MEPP2Higgs::applyHard(ShowerParticleVector gluons, vector<tcBeamPtr> beams,PPtr higgs, unsigned int & iemit, unsigned int & itype, vector<Lorentz5Momentum> & pnew, pair<double,double> & xout, tPDPtr & out) { ++ntry_; // calculate the limits on s Energy mh(higgs->mass()); mh2_=sqr(mh); Energy2 smin=mh2_; Energy2 s= (generator()->currentEvent()->incoming().first->momentum()+ generator()->currentEvent()->incoming().second->momentum()).m2(); Energy2 smax(s); // calculate the rapidity of the higgs double yH = 0.5*log((higgs->momentum().e()+higgs->momentum().z())/ (higgs->momentum().e()-higgs->momentum().z())); // if no phase-space return if(smax<smin) return false; // get the evolution scales (this needs improving) double kappa[2]={1.,1.}; // get the momentum fractions for the leading order process // and the values of the PDF's double x[2],fx[2]; tcPDFPtr pdf[2]; for(unsigned int ix=0;ix<gluons.size();++ix) { x[ix]=gluons[ix]->x(); assert(beams[ix]); pdf[ix]=beams[ix]->pdf(); assert(pdf[ix]); fx[ix]=pdf[ix]->xfx(beams[ix],gluons[ix]->dataPtr(),mh2_,x[ix]); } // leading order ME Energy4 lome = loME(); // select the type of process and generate the kinematics double rn(UseRandom::rnd()); Energy2 shat(ZERO),uhat(ZERO),that(ZERO); double weight(0.),xnew[2]={1.,1.}; // gg -> H g if(rn<channelWeights_[0]) { // generate the value of s according to 1/s^n double rhomax(pow(smin/mh2_,1.-ggPow_)),rhomin(pow(smax/mh2_,1.-ggPow_)); double rho = rhomin+UseRandom::rnd()*(rhomax-rhomin); shat = mh2_*pow(rho,1./(1.-ggPow_)); Energy2 jacobian = mh2_/(ggPow_-1.)*(rhomax-rhomin)*pow(shat/mh2_,ggPow_); double sbar=shat/mh2_; // calculate limits on that Energy2 tmax=mh2_*kappa[0]*(1.-sbar)/(kappa[0]+sbar); Energy2 tmin=shat*(1.-sbar)/(kappa[1]+sbar); // calculate the limits on uhat Energy2 umax(mh2_-shat-tmin),umin(mh2_-shat-tmax); // check inside phase space if(tmax<tmin||umax<umin) return false; // generate t and u according to 1/t+1/u // generate in 1/t if(UseRandom::rndbool(0.5)) { that=tmax*pow(tmin/tmax,UseRandom::rnd()); uhat=mh2_-shat-that; jacobian *=log(tmin/tmax); } // generate in 1/u else { uhat=umax*pow(umin/umax,UseRandom::rnd()); that=mh2_-shat-uhat; jacobian *=log(umin/umax); } Energy4 jacobian2 = jacobian * 2.*uhat*that/(shat-mh2_); // new scale (this is mt^2=pt^2+mh^2) Energy2 scale(uhat*that/shat+mh2_); // the PDF's with the emitted gluon double fxnew[2]; xnew[0]=exp(yH)/sqrt(s)*sqrt(shat*(mh2_-uhat)/(mh2_-that)); xnew[1]=shat/(s*xnew[0]); if(xnew[0]<=0.||xnew[0]>=1.||xnew[1]<=0.||xnew[1]>=1.) return false; for(unsigned int ix=0;ix<2;++ix) fxnew[ix]=pdf[ix]->xfx(beams[ix],gluons[ix]->dataPtr(),scale,xnew[ix]); // jacobian and me parts of the weight weight = jacobian2*ggME(shat,uhat,that)/lome*mh2_/sqr(shat); // pdf part of the weight weight *=fxnew[0]*fxnew[1]*x[0]*x[1]/(fx[0]*fx[1]*xnew[0]*xnew[1]); // finally coupling and different channel pieces weight *= 1./16./sqr(Constants::pi)*alpha_->value(scale)/channelWeights_[0]; itype=0; iemit = that>uhat ? 0 : 1; out = getParticleData(ParticleID::g); } // incoming quark or antiquark else { // generate the value of s according to 1/s^n double rhomax(pow(smin/mh2_,1.-qgPow_)),rhomin(pow(smax/mh2_,1.-qgPow_)); double rho = rhomin+UseRandom::rnd()*(rhomax-rhomin); shat = mh2_*pow(rho,1./(1.-qgPow_)); Energy2 jacobian = mh2_/(qgPow_-1.)*(rhomax-rhomin)*pow(shat/mh2_,qgPow_); double sbar=shat/mh2_; // calculate limits on that Energy2 tmax=mh2_*kappa[0]*(1.-sbar)/(kappa[0]+sbar); Energy2 tmin=shat*(1.-sbar)/(kappa[1]+sbar); // calculate the limits on uhat Energy2 umax(mh2_-shat-tmin),umin(mh2_-shat-tmax); // check inside phase space if(tmax<tmin||umax<umin) return false; // generate t bool order(UseRandom::rndbool()); Energy4 jacobian2; if(order) { uhat=umax*pow(umin/umax,UseRandom::rnd()); that=mh2_-shat-uhat; jacobian2 = jacobian * uhat*log(umax/umin); } else { that=tmax*pow(tmin/tmax,UseRandom::rnd()); uhat=mh2_-shat-that; jacobian2 = jacobian * that*log(tmax/tmin); } InvEnergy4 mewgt; // new scale (this is mt^2=pt^2+mh^2) Energy2 scale(uhat*that/shat+mh2_); double fxnew[2]; xnew[0]=exp(yH)/sqrt(s)*sqrt(shat*(mh2_-uhat)/(mh2_-that)); xnew[1]=shat/(s*xnew[0]); if(xnew[0]<=0.||xnew[0]>=1.||xnew[1]<=0.||xnew[1]>=1.) return false; if(rn<channelWeights_[1]) { itype = 1; // q g -> H q if(!order) { out = quarkFlavour(pdf[0],scale,xnew[0],beams[0],fxnew[0],false); fxnew[1]=pdf[1]->xfx(beams[1],gluons[1]->dataPtr(),scale,xnew[1]); iemit = 0; mewgt = qgME(shat,uhat,that)/lome*mh2_/sqr(shat); } // g q -> H q else { fxnew[0]=pdf[0]->xfx(beams[0],gluons[0]->dataPtr(),scale,xnew[0]); out = quarkFlavour(pdf[1],scale,xnew[1],beams[1],fxnew[1],false); iemit = 1; mewgt = qgME(shat,that,uhat)/lome*mh2_/sqr(shat); } jacobian2 /= (channelWeights_[1]-channelWeights_[0]); } else { itype=2; // qbar g -> H qbar if(!order) { out = quarkFlavour(pdf[0],scale,xnew[0],beams[0],fxnew[0],true); fxnew[1]=pdf[1]->xfx(beams[1],gluons[1]->dataPtr(),scale,xnew[1]); iemit = 0; mewgt = qbargME(shat,uhat,that)/lome*mh2_/sqr(shat); } // g qbar -> H qbar else { fxnew[0]=pdf[0]->xfx(beams[0],gluons[0]->dataPtr(),scale,xnew[0]); out = quarkFlavour(pdf[1],scale,xnew[1],beams[1],fxnew[1],true); iemit = 1; mewgt = qbargME(shat,that,uhat)/lome*mh2_/sqr(shat); } jacobian2/=(channelWeights_[2]-channelWeights_[1]); } // weight (factor of 2 as pick q(bar)g or gq(bar) weight = 2.*jacobian2*mewgt; // pdf part of the weight weight *=fxnew[0]*fxnew[1]*x[0]*x[1]/(fx[0]*fx[1]*xnew[0]*xnew[1]); // finally coupling and different channel pieces weight *= 1./16./sqr(Constants::pi)*alpha_->value(scale); } // if me correction should be applied if(weight>1.) { ++nover_; maxwgt_ = max( maxwgt_ , weight); weight=1.; } if(UseRandom::rnd()>weight) return false; ++ngen_; // construct the momenta Energy roots = 0.5*sqrt(s); Energy pt = sqrt(uhat*that/shat); Energy mt = sqrt(uhat*that/shat+mh2_); Lorentz5Momentum pin[2]={Lorentz5Momentum(ZERO,ZERO, xnew[0]*roots,xnew[0]*roots), Lorentz5Momentum(ZERO,ZERO,-xnew[1]*roots,xnew[1]*roots)}; double phi = Constants::twopi*UseRandom::rnd(); Lorentz5Momentum pH(pt*cos(phi),pt*sin(phi),mt*sinh(yH),mt*cosh(yH)); Lorentz5Momentum pJ(pin[0]+pin[1]-pH); // momenta to be returned pnew.push_back(pin[0]); pnew.push_back(pin[1]); pnew.push_back(pJ); pnew.push_back(pH); xout.first = xnew[0]; xout.second = xnew[1]; return true; } Energy2 MEPP2Higgs::ggME(Energy2 s, Energy2 t, Energy2 u) { Energy2 output; if(massOption_==0) { complex<Energy> me[2][2][2]; me[1][1][1] = ZERO; me[1][1][0] = ZERO; me[0][1][0] = ZERO; me[0][1][1] = ZERO; for(unsigned int ix=minLoop_; ix<=maxLoop_; ++ix ) { Energy2 mf2=sqr(getParticleData(long(ix))->mass()); bi_[1]=B(s,mf2); bi_[2]=B(u,mf2); bi_[3]=B(t,mf2); bi_[4]=B(mh2_,mf2); bi_[1]=bi_[1]-bi_[4]; bi_[2]=bi_[2]-bi_[4]; bi_[3]=bi_[3]-bi_[4]; ci_[1]=C(s,mf2); ci_[2]=C(u,mf2); ci_[3]=C(t,mf2); ci_[7]=C(mh2_,mf2); ci_[4]=(s*ci_[1]-mh2_*ci_[7])/(s-mh2_); ci_[5]=(u*ci_[2]-mh2_*ci_[7])/(u-mh2_); ci_[6]=(t*ci_[3]-mh2_*ci_[7])/(t-mh2_); di_[1]=D(t,u,s,mf2); di_[2]=D(s,t,u,mf2); di_[3]=D(s,u,t,mf2); me[1][1][1]+=me1(s,u,t,mf2,1,2,3,4,5,6); me[1][1][0]+=me2(s,u,t,mf2); me[0][1][0]+=me1(u,s,t,mf2,2,1,3,5,4,6); me[0][1][1]+=me1(t,u,s,mf2,3,2,1,6,5,4); } me[0][0][0]=-me[1][1][1]; me[0][0][1]=-me[1][1][0]; me[1][0][1]=-me[0][1][0]; me[1][0][0]=-me[0][1][1]; output = real(me[0][0][0]*conj(me[0][0][0])+ me[0][0][1]*conj(me[0][0][1])+ me[0][1][0]*conj(me[0][1][0])+ me[0][1][1]*conj(me[0][1][1])+ me[1][0][0]*conj(me[1][0][0])+ me[1][0][1]*conj(me[1][0][1])+ me[1][1][0]*conj(me[1][1][0])+ me[1][1][1]*conj(me[1][1][1])); output *= 3./8.; } else { output=32./3.* (pow<4,1>(s)+pow<4,1>(t)+pow<4,1>(u)+pow<4,1>(mh2_))/s/t/u; } // spin and colour factors return output/4./64.; } Energy2 MEPP2Higgs::qgME(Energy2 s, Energy2 t, Energy2 u) { Energy2 output; if(massOption_==0) { complex<Energy2> A(ZERO); Energy2 si(u-mh2_); for(unsigned int ix=minLoop_;ix<=maxLoop_;++ix) { Energy2 mf2=sqr(getParticleData(long(ix))->mass()); A += mf2*(2.+2.*double(u/si)*(B(u,mf2)-B(mh2_,mf2)) +double((4.*mf2-s-t)/si)*Complex(u*C(u,mf2)-mh2_*C(mh2_,mf2))); } output =-4.*(sqr(s)+sqr(t))/sqr(si)/u*real(A*conj(A)); } else{ output =-4.*(sqr(s)+sqr(t))/u/9.; } // final colour/spin factors return output/24.; } Energy2 MEPP2Higgs::qbargME(Energy2 s, Energy2 t, Energy2 u) { Energy2 output; if(massOption_==0) { complex<Energy2> A(ZERO); Energy2 si(u-mh2_); for(unsigned int ix=minLoop_;ix<=maxLoop_;++ix) { Energy2 mf2=sqr(getParticleData(long(ix))->mass()); A+=mf2*(2.+2.*double(u/si)*(B(u,mf2)-B(mh2_,mf2)) +double((4.*mf2-s-t)/si)*Complex(u*C(u,mf2)-mh2_*C(mh2_,mf2))); } output =-4.*(sqr(s)+sqr(t))/sqr(si)/u*real(A*conj(A)); } else { output =-4.*(sqr(s)+sqr(t))/u/9.; } // final colour/spin factors return output/24.; } Energy4 MEPP2Higgs::loME() const { Complex I(0); if(massOption_==0) { for(unsigned int ix=minLoop_;ix<=maxLoop_;++ix) { double x = sqr(getParticleData(long(ix))->mass())/mh2_; I += 3.*x*(2.+(4.*x-1.)*F(x)); } } else { I = 1.; } return sqr(mh2_)/576./Constants::pi*norm(I); } tPDPtr MEPP2Higgs::quarkFlavour(tcPDFPtr pdf, Energy2 scale, double x, tcBeamPtr beam, double & pdfweight, bool anti) { vector<double> weights; vector<tPDPtr> partons; pdfweight = 0.; if(!anti) { for(unsigned int ix=1;ix<=5;++ix) { partons.push_back(getParticleData(long(ix))); weights.push_back(pdf->xfx(beam,partons.back(),scale,x)); pdfweight += weights.back(); } } else { for(unsigned int ix=1;ix<=5;++ix) { partons.push_back(getParticleData(-long(ix))); weights.push_back(pdf->xfx(beam,partons.back(),scale,x)); pdfweight += weights.back(); } } double wgt=UseRandom::rnd()*pdfweight; for(unsigned int ix=0;ix<weights.size();++ix) { if(wgt<=weights[ix]) return partons[ix]; wgt -= weights[ix]; } assert(false); return tPDPtr(); } Complex MEPP2Higgs::B(Energy2 s,Energy2 mf2) const { Complex output,pii(0.,Constants::pi); double rat=s/(4.*mf2); if(s<ZERO) output=2.-2.*sqrt(1.-1./rat)*log(sqrt(-rat)+sqrt(1.-rat)); else if(s>=ZERO&&rat<1.) output=2.-2.*sqrt(1./rat-1.)*asin(sqrt(rat)); else output=2.-sqrt(1.-1./rat)*(2.*log(sqrt(rat)+sqrt(rat-1.))-pii); return output; } complex<InvEnergy2> MEPP2Higgs::C(Energy2 s,Energy2 mf2) const { complex<InvEnergy2> output; Complex pii(0.,Constants::pi); double rat=s/(4.*mf2); if(s<ZERO) output=2.*sqr(log(sqrt(-rat)+sqrt(1.-rat)))/s; else if(s>=ZERO&&rat<1.) output=-2.*sqr(asin(sqrt(rat)))/s; else { double cosh=log(sqrt(rat)+sqrt(rat-1.)); output=2.*(sqr(cosh)-sqr(Constants::pi)/4.-pii*cosh)/s; } return output; } Complex MEPP2Higgs::dIntegral(Energy2 a, Energy2 b, double y0) const { Complex output; if(b==ZERO) output=0.; else { Complex y1=0.5*(1.+sqrt(1.-4.*(a+epsi_)/b)); Complex y2=1.-y1; Complex z1=y0/(y0-y1); Complex z2=(y0-1.)/(y0-y1); Complex z3=y0/(y0-y2); Complex z4=(y0-1.)/(y0-y2); output=Math::Li2(z1)-Math::Li2(z2)+Math::Li2(z3)-Math::Li2(z4); } return output; } complex<InvEnergy4> MEPP2Higgs::D(Energy2 s,Energy2 t, Energy2, Energy2 mf2) const { Complex output,pii(0.,Constants::pi); Energy4 st=s*t; Energy4 root=sqrt(sqr(st)-4.*st*mf2*(s+t-mh2_)); double xp=0.5*(st+root)/st,xm=1-xp; output = 2.*(-dIntegral(mf2,s,xp)-dIntegral(mf2,t,xp) +dIntegral(mf2,mh2_,xp)+log(-xm/xp) *(log((mf2+epsi_)/GeV2)-log((mf2+epsi_-s*xp*xm)/GeV2) +log((mf2+epsi_-mh2_*xp*xm)/GeV2)-log((mf2+epsi_-t*xp*xm)/GeV2))); return output/root; } complex<Energy> MEPP2Higgs::me1(Energy2 s,Energy2 t,Energy2 u, Energy2 mf2, unsigned int i ,unsigned int j ,unsigned int k , unsigned int i1,unsigned int j1,unsigned int k1) const { Energy2 s1(s-mh2_),t1(t-mh2_),u1(u-mh2_); return mf2*4.*sqrt(2.*s*t*u)* (-4.*(1./(u*t)+1./(u*u1)+1./(t*t1)) -4.*((2.*s+t)*bi_[k]/sqr(u1)+(2.*s+u)*bi_[j]/sqr(t1))/s -(s-4.*mf2)*(s1*ci_[i1]+(u-s)*ci_[j1]+(t-s)*ci_[k1])/(s*t*u) -8.*mf2*(ci_[j1]/(t*t1)+ci_[k1]/(u*u1)) +0.5*(s-4.*mf2)*(s*t*di_[k]+u*s*di_[j]-u*t*di_[i])/(s*t*u) +4.*mf2*di_[i]/s -2.*(u*ci_[k]+t*ci_[j]+u1*ci_[k1]+t1*ci_[j1]-u*t*di_[i])/sqr(s)); } complex<Energy> MEPP2Higgs::me2(Energy2 s,Energy2 t,Energy2 u, Energy2 mf2) const { Energy2 s1(s-mh2_),t1(t-mh2_),u1(u-mh2_); return mf2*4.*sqrt(2.*s*t*u)*(4.*mh2_+(mh2_-4.*mf2)*(s1*ci_[4]+t1*ci_[5]+u1*ci_[6]) -0.5*(mh2_-4.*mf2)*(s*t*di_[3]+u*s*di_[2]+u*t*di_[1]) )/ (s*t*u); } Complex MEPP2Higgs::F(double x) const { if(x<.25) { double root = sqrt(1.-4.*x); Complex pii(0.,Constants::pi); return 0.5*sqr(log((1.+root)/(1.-root))-pii); } else { return -2.*sqr(asin(0.5/sqrt(x))); } } bool MEPP2Higgs::getEvent(vector<Lorentz5Momentum> & pnew, int & emis_type){ // maximum pt (half of centre-of-mass energy) Energy maxp = 0.5*generator()->maximumCMEnergy(); // set pt of emission to zero pt_=ZERO; //Working Variables Energy pt; double yj; // limits on the rapidity of the jet double minyj = -8.0,maxyj = 8.0; bool reject; double wgt; emis_type=-1; tcPDPtr outParton; for(int j=0;j<5;++j) { pt = maxp; do { double a = alpha_->overestimateValue()*prefactor_[j]*(maxyj-minyj)/(power_-1.); // generate next pt pt=GeV/pow(pow(GeV/pt,power_-1)-log(UseRandom::rnd())/a,1./(power_-1.)); // generate rapidity of the jet yj=UseRandom::rnd()*(maxyj-minyj)+ minyj; // calculate rejection weight wgt=getResult(j,pt,yj,outParton); wgt/= prefactor_[j]*pow(GeV/pt,power_); reject = UseRandom::rnd()>wgt; //no emission event if p goes past p min - basically set to outside //of the histogram bounds (hopefully hist object just ignores it) if(pt<minpT_){ pt=ZERO; reject = false; } if(wgt>1.0) { ostringstream s; s << "MEPP2Higgs::getEvent weight for channel " << j << "is " << wgt << " which is greater than 1"; generator()->logWarning( Exception(s.str(), Exception::warning) ); } } while(reject); // set pt of emission etc if(pt>pt_){ emis_type = j; pt_=pt; yj_=yj; out_ = outParton; } } //was this an (overall) no emission event? if(pt_<minpT_){ pt_=ZERO; emis_type = 5; } if(emis_type==5) return false; // generate the momenta of the particles // hadron-hadron cmf Energy2 s=sqr(generator()->maximumCMEnergy()); // transverse energy Energy et=sqrt(mh2_+sqr(pt_)); // first calculate all the kinematic variables // longitudinal real correction fractions double x = pt_*exp( yj_)/sqrt(s)+et*exp( yh_)/sqrt(s); double y = pt_*exp(-yj_)/sqrt(s)+et*exp(-yh_)/sqrt(s); // that and uhat // Energy2 th = -sqrt(s)*x*pt_*exp(-yj_); // Energy2 uh = -sqrt(s)*y*pt_*exp( yj_); // Energy2 sh = x*y*s; // reconstruct the momenta // incoming momenta pnew.push_back(Lorentz5Momentum(ZERO,ZERO, x*0.5*sqrt(s), x*0.5*sqrt(s),ZERO)); pnew.push_back(Lorentz5Momentum(ZERO,ZERO, -y*0.5*sqrt(s), y*0.5*sqrt(s),ZERO)); // outgoing momenta double phi(Constants::twopi*UseRandom::rnd()); double sphi(sin(phi)),cphi(cos(phi)); pnew.push_back(Lorentz5Momentum( cphi*pt_, sphi*pt_, et*sinh(yh_), et*cosh(yh_), mass_)); pnew.push_back(Lorentz5Momentum(-cphi*pt_,-sphi*pt_,pt_*sinh(yj_), pt_*cosh(yj_),ZERO)); return true; } double MEPP2Higgs::getResult(int emis_type, Energy pt, double yj, tcPDPtr & outParton) { Energy2 s=sqr(generator()->maximumCMEnergy()); Energy2 scale = mh2_+sqr(pt); Energy et=sqrt(scale); scale = mu_F_opt_==0 ? mh2_+sqr(pt) : sqr(pt) ; // longitudinal real correction fractions double x = pt*exp( yj)/sqrt(s)+et*exp( yh_)/sqrt(s); double y = pt*exp(-yj)/sqrt(s)+et*exp(-yh_)/sqrt(s); // reject if outside region if(x<0.||x>1.||y<0.||y>1.||x*y<mh2_/s) return 0.; // longitudinal born fractions double x1 = mass_*exp( yh_)/sqrt(s); double y1 = mass_*exp(-yh_)/sqrt(s); // mandelstam variables Energy2 th = -sqrt(s)*x*pt*exp(-yj); Energy2 uh = -sqrt(s)*y*pt*exp( yj); Energy2 sh = mh2_-th-uh; InvEnergy2 res = InvEnergy2(); // pdf part of the cross section double pdf[4]; if(mu_F_opt_==0) { // As in original version ... pdf[0]=beams_[0]->pdf()->xfx(beams_[0],partons_[0],mh2_,x1); pdf[1]=beams_[1]->pdf()->xfx(beams_[1],partons_[1],mh2_,y1); } else { // As in Nason and Ridolfi paper ... pdf[0]=beams_[0]->pdf()->xfx(beams_[0],partons_[0],scale,x1); pdf[1]=beams_[1]->pdf()->xfx(beams_[1],partons_[1],scale,y1); } // g g -> H g if(emis_type==0) { outParton = partons_[1]; pdf[2]=beams_[0]->pdf()->xfx(beams_[0],partons_[0],scale,x); pdf[3]=beams_[1]->pdf()->xfx(beams_[1],partons_[1],scale,y); res = ggME(sh,uh,th)/loME(); } // q g -> H q else if(emis_type==1) { outParton = quarkFlavour(beams_[0]->pdf(),scale,x,beams_[0],pdf[2],false); pdf[3]=beams_[1]->pdf()->xfx(beams_[1],partons_[1],scale,y); res = qgME(sh,uh,th)/loME(); } // g q -> H q else if(emis_type==2) { pdf[2]=beams_[0]->pdf()->xfx(beams_[0],partons_[0],scale,x); outParton = quarkFlavour(beams_[1]->pdf(),scale,y,beams_[1],pdf[3],false); res = qgME(sh,th,uh)/loME(); } // qbar g -> H qbar else if(emis_type==3) { outParton = quarkFlavour(beams_[0]->pdf(),scale,x,beams_[0],pdf[2],true); pdf[3]=beams_[1]->pdf()->xfx(beams_[1],partons_[1],scale,y); res = qbargME(sh,uh,th)/loME(); } // g qbar -> H qbar else if(emis_type==4) { pdf[2]=beams_[0]->pdf()->xfx(beams_[0],partons_[0],scale,x); outParton = quarkFlavour(beams_[1]->pdf(),scale,y,beams_[1],pdf[3],true); res = qbargME(sh,th,uh)/loME(); } //deals with pdf zero issue at large x if(pdf[0]<=0.||pdf[1]<=0.||pdf[2]<=0.||pdf[3]<=0.) { res = ZERO; } else { res *= pdf[2]*pdf[3]/pdf[0]/pdf[1]*mh2_/sh; } scale = mu_R_opt_==0 ? mh2_+sqr(pt) : sqr(pt) ; return alpha_->ratio(scale)/8./sqr(Constants::pi)*mh2_/sh*GeV*pt*res; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2GammaJet.cc�������������������������������������������0000644�0001750�0001750�00000044212�11754474776�023535� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEPP2GammaJet.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2GammaJet class. // #include "MEPP2GammaJet.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" using namespace Herwig; MEPP2GammaJet::MEPP2GammaJet() : _maxflavour(5), _processopt(0) { massOption(vector<unsigned int>(2,0)); } void MEPP2GammaJet::rebind(const TranslationMap & trans) { // dummy = trans.translate(dummy); HwMEBase::rebind(trans); _gluonvertex =trans.translate(_gluonvertex ); _photonvertex=trans.translate(_photonvertex); } IVector MEPP2GammaJet::getReferences() { IVector ret = HwMEBase::getReferences(); ret.push_back(_gluonvertex); ret.push_back(_photonvertex); return ret; } void MEPP2GammaJet::doinit() { // get the vedrtex pointers from the SM object tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(hwsm) { _gluonvertex = hwsm->vertexFFG(); _photonvertex = hwsm->vertexFFP(); } else throw InitException() << "Wrong type of StandardModel object in " << "MEPP2GammaJet::doinit() the Herwig++" << " version must be used" << Exception::runerror; // call the base class HwMEBase::doinit(); } void MEPP2GammaJet::getDiagrams() const { // need the gluon and the photon in all processes tcPDPtr g = getParticleData(ParticleID::g); tcPDPtr p = getParticleData(ParticleID::gamma); // for each quark species there are three subprocesses for ( int iq=1; iq<=_maxflavour; ++iq ) { tcPDPtr q = getParticleData(iq); tcPDPtr qb = q->CC(); // q qbar to gamma gluon (two diagrams) if(_processopt==0||_processopt==1) { add(new_ptr((Tree2toNDiagram(3), q, qb, qb, 1, p, 2, g, -1))); add(new_ptr((Tree2toNDiagram(3), q, q, qb, 2, p, 1, g, -2))); } // q gluon to gamma q (two diagrams) if(_processopt==0||_processopt==2) { add(new_ptr((Tree2toNDiagram(3), q, q, g, 1, p, 2, q, -3))); add(new_ptr((Tree2toNDiagram(2), q, g, 1, q , 3, p, 3, q, -4))); } // qbar gluon to gamma qbar (two diagrams) if(_processopt==0||_processopt==3) { add(new_ptr((Tree2toNDiagram(3), qb, qb, g, 1, p, 2, qb, -5))); add(new_ptr((Tree2toNDiagram(2), qb, g, 1, qb , 3, p, 3, qb, -6))); } } } unsigned int MEPP2GammaJet::orderInAlphaS() const { return 1; } unsigned int MEPP2GammaJet::orderInAlphaEW() const { return 1; } Energy2 MEPP2GammaJet::scale() const { Energy2 s(sHat()),u(uHat()),t(tHat()); return 2.*s*t*u/(s*s+t*t+u*u); } Selector<MEBase::DiagramIndex> MEPP2GammaJet::diagrams(const DiagramVector & diags) const { // This example corresponds to the diagrams specified in the example // in the getDiagrams() function. double diag1(0.5),diag2(0.5); diag1 = meInfo()[0]; diag2 = meInfo()[1]; Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if ( abs(diags[i]->id())%2 == 1 ) sel.insert(diag1, i); else sel.insert(diag2, i); } return sel; } void MEPP2GammaJet::persistentOutput(PersistentOStream & os) const { os << _gluonvertex << _photonvertex << _maxflavour << _processopt; } void MEPP2GammaJet::persistentInput(PersistentIStream & is, int) { is >> _gluonvertex >> _photonvertex >> _maxflavour >> _processopt; } ClassDescription<MEPP2GammaJet> MEPP2GammaJet::initMEPP2GammaJet; // Definition of the static class description member. void MEPP2GammaJet::Init() { static ClassDocumentation<MEPP2GammaJet> documentation ("The MEPP2GammaJet class implements the matrix element for" " hadron-hadron to photon+jet"); static Parameter<MEPP2GammaJet,int> interfaceMaximumFlavour ("MaximumFlavour", "The maximum flavour of the quarks in the process", &MEPP2GammaJet::_maxflavour, 5, 1, 5, false, false, Interface::limited); static Switch<MEPP2GammaJet,unsigned int> interfaceProcesses ("Process", "Subprocesses to include", &MEPP2GammaJet::_processopt, 0, false, false); static SwitchOption interfaceProcessesAll (interfaceProcesses, "All", "Include all the subprocesses", 0); static SwitchOption interfaceProcessesqqbar (interfaceProcesses, "qqbar", "Only include the incoming q qbar subprocess", 1); static SwitchOption interfaceProcessesqg (interfaceProcesses, "qg", "Only include the incoming q g subprocess", 2); static SwitchOption interfaceProcessesqbarg (interfaceProcesses, "qbarg", "Only include the incoming qbar g subprocess", 3); } Selector<const ColourLines *> MEPP2GammaJet::colourGeometries(tcDiagPtr diag) const { // q qbar to gamma gluon colour lines static const ColourLines qqbar1("1 5, -5 -2 -3"); static const ColourLines qqbar2("1 2 5, -5 -3"); // q gluon to gamma q colour lines static const ColourLines qg1("1 2 -3, 3 5"); static const ColourLines qg2("1 -2, 2 3 5"); // qbar gluon to gamma qbar lines static const ColourLines qbarg1("-1 -2 3, -3 -5"); static const ColourLines qbarg2("-1 2, -2 -3 -5"); // only one flow per diagram so insert the right one Selector<const ColourLines *> sel; switch (diag->id()) { case -1 : sel.insert(1.0, &qqbar1); break; case -2 : sel.insert(1.0, &qqbar2); break; case -3 : sel.insert(1.0, &qg1); break; case -4 : sel.insert(1.0, &qg2); break; case -5 : sel.insert(1.0, &qbarg1); break; case -6 : sel.insert(1.0, &qbarg2); break; } return sel; } double MEPP2GammaJet::me2() const { // total matrix element and the various components double me(0.); // first case, q qbar to gluon photon if(mePartonData()[0]->id()==-mePartonData()[1]->id()) { // order of the particles unsigned int iq(1),iqb(0),ip(3),ig(2); if(mePartonData()[0]->id()>0) swap(iq,iqb); if(mePartonData()[3]->id()==ParticleID::g) swap(ig, ip); // calculate the spinors and polarization vectors vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> pout,gout; SpinorWaveFunction qin (meMomenta()[iq ],mePartonData()[iq ],incoming); SpinorBarWaveFunction qbin(meMomenta()[iqb],mePartonData()[iqb],incoming); VectorWaveFunction glout(meMomenta()[ig ],mePartonData()[ig ],outgoing); VectorWaveFunction phout(meMomenta()[ip ],mePartonData()[ip ],outgoing); for(unsigned int ix=0;ix<2;++ix) { qin.reset(ix) ; fin.push_back( qin ); qbin.reset(ix) ; ain.push_back( qbin); glout.reset(2*ix);gout.push_back(glout); phout.reset(2*ix);pout.push_back(phout); } // calculate the matrix element me = qqbarME(fin,ain,gout,pout,false)/9.; // Energy2 mt(scale()); // double coupling=sqr(4.*pi)*SM().alphaEM(0.)*SM().alphaS(mt)* // sqr(mePartonData()[0]->charge()); // Energy2 t(tHat()),u(uHat()); // double me2=8./9./u/t*(t*t+u*u)*coupling; // cerr << "testing matrix element A" // << me << " " // << me2 << " " << me/me2 // << endl; } else if(mePartonData()[0]->id()>0&&mePartonData()[1]->id()) { // order of the particles unsigned int iqin(0),iqout(2),ip(3),ig(1); if(mePartonData()[0]->id()==ParticleID::g ) swap(iqin,ig); if(mePartonData()[2]->id()==ParticleID::gamma) swap(ip,iqout); // calculate the spinors and polarization vectors vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> fout; vector<VectorWaveFunction> pout,gin; SpinorWaveFunction qin (meMomenta()[iqin ],mePartonData()[iqin ],incoming); SpinorBarWaveFunction qout(meMomenta()[iqout],mePartonData()[iqout],outgoing); VectorWaveFunction glin(meMomenta()[ig ],mePartonData()[ig ],incoming); VectorWaveFunction phout(meMomenta()[ip ],mePartonData()[ip ],outgoing); for(unsigned int ix=0;ix<2;++ix) { qin.reset(ix) ;fin.push_back( qin ); qout.reset(ix) ;fout.push_back( qout); glin.reset(2*ix) ;gin.push_back( glin); phout.reset(2*ix);pout.push_back(phout); } // calculate the matrix element me = qgME(fin,gin,pout,fout,false)/24.; // Energy2 mt(scale()); // double coupling=sqr(4.*pi)*SM().alphaEM(0.)*SM().alphaS(mt); // Energy2 s(sHat()),t(tHat()),u(uHat()); // double me2=-1./3./s/t*(s*s+t*t+2.*u*(s+t+u))*coupling* // sqr(mePartonData()[0]->charge()); // cerr << "testing matrix element B" // << me << " " // << me2 << " " << me/me2 // << endl; } else { // order of the particles unsigned int iqin(0),iqout(2),ip(3),ig(1); if(mePartonData()[0]->id()==ParticleID::g ) swap(iqin,ig); if(mePartonData()[2]->id()==ParticleID::gamma) swap(ip,iqout); // calculate the spinors and polarization vectors vector<SpinorBarWaveFunction> ain; vector<SpinorWaveFunction> aout; vector<VectorWaveFunction> pout,gin; SpinorBarWaveFunction qin (meMomenta()[iqin ],mePartonData()[iqin ],incoming); SpinorWaveFunction qout(meMomenta()[iqout],mePartonData()[iqout],outgoing); VectorWaveFunction glin(meMomenta()[ig ],mePartonData()[ig ],incoming); VectorWaveFunction phout(meMomenta()[ip ],mePartonData()[ip ],outgoing); for(unsigned int ix=0;ix<2;++ix) { qin.reset(ix) ;ain.push_back( qin ); qout.reset(ix) ;aout.push_back( qout); glin.reset(2*ix) ;gin.push_back( glin); phout.reset(2*ix);pout.push_back(phout); } // calculate the matrix element me=qbargME(ain,gin,pout,aout,false)/24.; // Energy2 mt(scale()); // double coupling=sqr(4.*pi)*SM().alphaEM(0.)*SM().alphaS(mt); // Energy2 s(sHat()),t(tHat()),u(uHat()); // double me2=-1./3./s/t*(s*s+t*t+2.*u*(s+t+u))*coupling* // sqr(mePartonData()[0]->charge()); // cerr << "testing matrix element C" // << me << " " // << me2 << " " << me/me2 // << endl; } return me; } double MEPP2GammaJet::qqbarME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, vector<VectorWaveFunction> & gout, vector<VectorWaveFunction> & pout, bool calc) const { // the particles should be in the order // for the incoming // 0 incoming fermion (u spinor) // 1 incoming antifermion (vbar spinor) // for the outgoing // 0 outgoing gluon // 1 outgoing photon // me to be returned ProductionMatrixElement newme(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1); // wavefunction for the intermediate particles SpinorWaveFunction inter; unsigned int inhel1,inhel2,outhel1,outhel2; Energy2 mt(scale()); Complex diag[3]; double me(0.),diag1(0.),diag2(0.); for(inhel1=0;inhel1<2;++inhel1) { for(inhel2=0;inhel2<2;++inhel2) { for(outhel1=0;outhel1<2;++outhel1) { for(outhel2=0;outhel2<2;++outhel2) { // first diagram inter = _gluonvertex->evaluate(mt,5,fin[inhel1].particle()->CC(), fin[inhel1],gout[outhel1]); diag[0] = _photonvertex->evaluate(ZERO,inter,ain[inhel2],pout[outhel2]); // second diagram inter = _photonvertex->evaluate(ZERO,5,fin[inhel1].particle()->CC(), fin[inhel1],pout[outhel2]); diag[1] = _gluonvertex->evaluate(mt,inter,ain[inhel2],gout[outhel1]); // compute the running totals diag[2]=diag[0]+diag[1]; diag1 +=norm(diag[0]); diag2 +=norm(diag[1]); me +=norm(diag[2]); // matrix element if(calc) newme(inhel1,inhel2,2*outhel1,2*outhel2)=diag[2]; } } } } // save the info on the diagrams if(!calc) { DVector save; save.push_back(diag1); save.push_back(diag2); meInfo(save); } // return the answer if(calc) _me.reset(newme); return me; } double MEPP2GammaJet::qgME(vector<SpinorWaveFunction> & fin, vector<VectorWaveFunction> & gin, vector<VectorWaveFunction> & pout, vector<SpinorBarWaveFunction> & fout, bool calc) const { // the particles should be in the order // for the incoming // 0 incoming fermion (u spinor) // 1 incoming gluon // for the outgoing // 0 outgoing photon // 1 outgoing fermion (ubar spinor) // me to be returned ProductionMatrixElement newme(PDT::Spin1Half,PDT::Spin1, PDT::Spin1,PDT::Spin1Half); // wavefunction for the intermediate particles SpinorWaveFunction inter; unsigned int inhel1,inhel2,outhel1,outhel2; Energy2 mt(scale()); Complex diag[3]; double me(0.),diag1(0.),diag2(0.); for(inhel1=0;inhel1<2;++inhel1) { for(inhel2=0;inhel2<2;++inhel2) { for(outhel1=0;outhel1<2;++outhel1) { for(outhel2=0;outhel2<2;++outhel2) { // first diagram inter = _photonvertex->evaluate(ZERO,5,fin[inhel1].particle()->CC(), fin[inhel1],pout[outhel1]); diag[0]=_gluonvertex->evaluate(mt,inter,fout[outhel2],gin[inhel2]); // second diagram inter = _gluonvertex->evaluate(mt,5,fin[inhel1].particle()->CC(), fin[inhel1],gin[inhel2]); diag[1]=_photonvertex->evaluate(ZERO,inter,fout[outhel2],pout[outhel1]); // compute the running totals diag[2]=diag[0]+diag[1]; diag1 +=norm(diag[0]); diag2 +=norm(diag[1]); me +=norm(diag[2]); // matrix element if(calc) newme(inhel1,2*inhel2,2*outhel1,outhel2)=diag[2]; } } } } // save the info on the diagrams if(!calc) { DVector save; save.push_back(diag1); save.push_back(diag2); meInfo(save); } // return the answer if(calc) _me.reset(newme); return me; } double MEPP2GammaJet::qbargME(vector<SpinorBarWaveFunction> & ain, vector<VectorWaveFunction> & gin, vector<VectorWaveFunction> & pout, vector<SpinorWaveFunction> & aout, bool calc) const { // the particles should be in the order // for the incoming // 0 incoming fermion (vbar spinor) // 1 incoming gluon // for the outgoing // 0 outgoing photon // 1 outgoing fermion (v spinor) //me to be returned ProductionMatrixElement newme(PDT::Spin1Half,PDT::Spin1, PDT::Spin1,PDT::Spin1Half); // wavefunction for the intermediate particles SpinorBarWaveFunction inter; SpinorWaveFunction interb; unsigned int inhel1,inhel2,outhel1,outhel2; Energy2 mt(scale()); Complex diag[3]; double me(0.),diag1(0.),diag2(0.); for(inhel1=0;inhel1<2;++inhel1) { for(inhel2=0;inhel2<2;++inhel2) { for(outhel1=0;outhel1<2;++outhel1) { for(outhel2=0;outhel2<2;++outhel2) { // first diagram inter = _photonvertex->evaluate(ZERO,5,ain[inhel1].particle()->CC(), ain[inhel1],pout[outhel1]); diag[0]=_gluonvertex->evaluate(mt,aout[outhel2],inter,gin[inhel2]); // second diagram inter = _gluonvertex->evaluate(mt,5,ain[inhel1].particle()->CC(), ain[inhel1],gin[inhel2]); diag[1]=_photonvertex->evaluate(ZERO,aout[outhel2],inter,pout[outhel1]); // compute the running totals diag[2]=diag[0]+diag[1]; diag1 +=norm(diag[0]); diag2 +=norm(diag[1]); me +=norm(diag[2]); // matrix element if(calc) newme(inhel1,2*inhel2,2*outhel1,outhel2)=diag[2]; } } } } // save the info on the diagrams if(!calc) { DVector save; save.push_back(diag1); save.push_back(diag2); meInfo(save); } // return the answer if(calc) _me.reset(newme); return me; } void MEPP2GammaJet::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first);hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]);hard.push_back(sub->outgoing()[1]); // order of particles unsigned int order[4]={0,1,2,3}; // identify the process and calculate matrix element if(hard[0]->id()==ParticleID::g||hard[1]->id()==ParticleID::g) { if(hard[0]->id()==ParticleID::g ) swap(order[0],order[1]); if(hard[3]->id()==ParticleID::gamma) swap(order[2],order[3]); if(hard[order[0]]->id()>0) { vector<SpinorWaveFunction> q; vector<SpinorBarWaveFunction> qb; vector<VectorWaveFunction> p,g; SpinorWaveFunction (q ,hard[order[0]],incoming,false,true); VectorWaveFunction (g ,hard[order[1]],incoming,false,true,true); VectorWaveFunction (p ,hard[order[2]],outgoing,true ,true,true); SpinorBarWaveFunction(qb,hard[order[3]],outgoing,true,true); qgME(q,g,p,qb,true); } else { vector<SpinorWaveFunction> q; vector<SpinorBarWaveFunction> qb; vector<VectorWaveFunction> p,g; SpinorBarWaveFunction(qb,hard[order[0]],incoming,false,true); VectorWaveFunction (g ,hard[order[1]],incoming,false,true,true); VectorWaveFunction (p ,hard[order[2]],outgoing,true ,true,true); SpinorWaveFunction (q ,hard[order[3]],outgoing,true,true); qbargME(qb,g,p,q,true); } } else { if(hard[0]->id()<0) swap(order[0],order[1]); if(hard[2]->id()==ParticleID::gamma) swap(order[2],order[3]); vector<SpinorWaveFunction> q; vector<SpinorBarWaveFunction> qb; vector<VectorWaveFunction> p,g; SpinorWaveFunction (q ,hard[order[0]],incoming,false,true); SpinorBarWaveFunction(qb,hard[order[1]],incoming,false,true); VectorWaveFunction (g ,hard[order[2]],outgoing,true ,true,true); VectorWaveFunction (p ,hard[order[3]],outgoing,true ,true,true); p[1]=p[2];g[1]=g[2]; qqbarME(q,qb,g,p,true); } // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(_me); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) hard[order[ix]]->spinInfo()->productionVertex(hardvertex); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2HiggsVBF.h��������������������������������������������0000644�0001750�0001750�00000024741�11754474776�023316� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEPP2HiggsVBF_H #define HERWIG_MEPP2HiggsVBF_H // // This is the declaration of the MEPP2HiggsVBF class. // #include "Herwig++/MatrixElement/MEfftoffH.h" namespace Herwig { using namespace ThePEG; /** * The MEPP2HiggsVBF class provides the matrix elements for the * production of the Higgs boson via the vector boson fusion mechanism * in hadron collisions * * @see \ref MEPP2HiggsVBFInterfaces "The interfaces" * defined for MEPP2HiggsVBF. */ class MEPP2HiggsVBF: public MEfftoffH { /** * Struct to contain the hadronic system */ struct tChannelPair{ /** * The hadron */ PPtr hadron; /** * The beam particle data object */ tcBeamPtr beam; /** * The incoming particle */ ShowerParticlePtr incoming; /** * The outgoing particle */ ShowerParticlePtr outgoing; /** * The PDF */ tcPDFPtr pdf; }; public: /** * The default constructor. */ MEPP2HiggsVBF(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; //@} /** * Virtual members to be overridden by inheriting classes * which implement hard corrections */ //@{ /** * Has a POWHEG style correction */ virtual bool hasPOWHEGCorrection() {return true;} /** * Has an old fashioned ME correction */ virtual bool hasMECorrection() {return true;} /** * Initialize the ME correction */ virtual void initializeMECorrection(ShowerTreePtr , double & , double & ); /** * Apply the hard matrix element correction to a given hard process or decay */ virtual void applyHardMatrixElementCorrection(ShowerTreePtr); /** * Apply the soft matrix element correction * @param initial The particle from the hard process which started the * shower * @param parent The initial particle in the current branching * @param br The branching struct * @return If true the emission should be vetoed */ virtual bool softMatrixElementVeto(ShowerProgenitorPtr, ShowerParticlePtr,Branching); /** * Apply the POWHEG style correction */ virtual HardTreePtr generateHardest(ShowerTreePtr); //@} 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: /** * Generate the hardest emission in the POWHEG approach */ //@{ /** * Generate a Compton process */ void generateCompton(unsigned int system); /** * Generate a BGF process */ void generateBGF(unsigned int system); /** * Matrix element piece for the Compton process */ double comptonME(unsigned int system, double xT,double xp, double zp, double phi); /** * Matrix element piece for the Compton process */ double BGFME(unsigned int system, double xT,double xp, double zp, double phi); /** * Leading order matrix element */ Energy4 loMatrixElement(const Lorentz5Momentum &p1, const Lorentz5Momentum &p2, const Lorentz5Momentum &q1, const Lorentz5Momentum &q2, double G1, double G2) const; //@} /** * Generate the hard emission in the old-fashioned matrix element correction approach */ //@{ /** * Generate the values of \f$x_p\f$ and \f$z_p\f$ * @param xp The value of xp, output * @param zp The value of zp, output */ double generateComptonPoint(double &xp, double & zp); /** * Generate the values of \f$x_p\f$ and \f$z_p\f$ * @param xp The value of xp, output * @param zp The value of zp, output */ double generateBGFPoint(double &xp, double & zp); /** * Return the coefficients for the matrix element piece for * the QCD compton case. The output is the \f$a_i\f$ coefficients to * give the function as * \f$a_0+a_1\cos\phi+a_2\sin\phi+a_3\cos^2\phi+a_4\sin^2\phi\f$ * @param xp \f$x_p\f$ * @param x2 \f$x_2\f$ * @param xperp \f$x_\perp\f$ * @param l Scaled momentum of incoming spectator * @param m Scaled momentum of outgoing spectator * */ vector<double> ComptonME(double xp, double x2, double xperp, LorentzVector<double> l, LorentzVector<double> m); /** * Return the coefficients for the matrix element piece for * the QCD compton case. The output is the \f$a_i\f$ coefficients to * give the function as * \f$a_0+a_1\cos\phi+a_2\sin\phi+a_3\cos^2\phi+a_4\sin^2\phi\f$ * @param xp \f$x_p\f$ * @param x2 \f$x_3\f$ * @param x3 \f$x_2\f$ * @param xperp \f$x_\perp\f$ * @param l Scaled momentum of incoming spectator * @param m Scaled momentum of outgoing spectator * */ vector<double> BGFME(double xp, double x2, double x3, double xperp, LorentzVector<double> l, LorentzVector<double> m); /** * Calculate the coefficient A for the correlations */ double A(tcPDPtr qin1, tcPDPtr qout1, tcPDPtr qin2, tcPDPtr qout2); //@} 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(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2HiggsVBF> initMEPP2HiggsVBF; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2HiggsVBF & operator=(const MEPP2HiggsVBF &); private: /** * Parameters for the hard POWHEG emission */ //@{ /** * Pointer to the object calculating the strong coupling */ ShowerAlphaPtr alpha_; /** * Weight for the compton channel */ double comptonWeight_; /** * Weight for the BGF channel */ double BGFWeight_; /** * Minimum value of \f$p_T\f$ */ Energy pTmin_; /** * Gluon particle data object */ PDPtr gluon_; //@} /** * Properties of the emission */ //@{ /** * Beam particle */ tcBeamPtr beam_[2]; /** * PDF object */ tcPDFPtr pdf_[2]; /** * Partons */ tcPDPtr partons_[2][4]; /** * q */ Lorentz5Momentum q_[2]; /** * \f$Q^2\f$ */ Energy2 q2_[2]; /** * Coupling factor */ double acoeff_; /** * Lorentz vectors for the matrix element */ LorentzVector<double> l_; /** * Lorentz vectors for the matrix element */ LorentzVector<double> m_; /** * Born momentum fraction */ double xB_[2]; /** * Rotation to the Breit frame */ LorentzRotation rot_[2]; /** * Quark momenta for spectator system */ Lorentz5Momentum pother_[2][2]; /** * Quark momenta for emitting system */ Lorentz5Momentum psystem_[2][2]; /** * Higgs momenta */ Lorentz5Momentum phiggs_[2]; /** * Transverse momenta for the compton emissions */ Energy pTCompton_[2]; /** * Transverse momenta for the BGF emissions */ Energy pTBGF_[2]; /** * Whether the Compton radiation is ISR or FSR */ bool ComptonISFS_[2]; /** * Momenta of the particles for a compton emission */ vector<Lorentz5Momentum> ComptonMomenta_[2]; /** * Momenta of the particles for a BGF emission */ vector<Lorentz5Momentum> BGFMomenta_[2]; /** * the systems */ vector<tChannelPair> systems_; /** * Higgs boson */ ShowerParticlePtr higgs_; //@} /** * Parameters for the matrix element correction */ //@{ /** * Enchancement factor for ISR */ double initial_; /** * Enchancement factor for FSR */ double final_; /** * Relative fraction of compton and BGF processes to generate */ double procProb_; /** * Integral for compton process */ double comptonInt_; /** * Integral for BGF process */ double bgfInt_; /** * Number of weights greater than 1 */ unsigned int nover_; /** * Maximum weight */ pair<double,double> maxwgt_; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2HiggsVBF. */ template <> struct BaseClassTrait<Herwig::MEPP2HiggsVBF,1> { /** Typedef of the first base class of MEPP2HiggsVBF. */ typedef Herwig::MEfftoffH NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2HiggsVBF class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2HiggsVBF> : public ClassTraitsBase<Herwig::MEPP2HiggsVBF> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2HiggsVBF"; } /** * The name of a file containing the dynamic library where the class * MEPP2HiggsVBF is implemented. It may also include several, space-separated, * libraries if the class MEPP2HiggsVBF depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2HiggsVBF_H */ �������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2WJet.cc�����������������������������������������������0000644�0001750�0001750�00000070721�11754474776�022725� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2WJet class. // #include "MEPP2WJet.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "ThePEG/Cuts/Cuts.h" #include "Herwig++/MatrixElement/HardVertex.h" using namespace Herwig; MEPP2WJet::MEPP2WJet() : _process(0), _maxflavour(5), _plusminus(0), _wdec(0), _widthopt(1) {} void MEPP2WJet::doinit() { HwMEBase::doinit(); _wplus = getParticleData(ThePEG::ParticleID::Wplus ); _wminus = getParticleData(ThePEG::ParticleID::Wminus); // cast the SM pointer to the Herwig SM pointer ThePEG::Ptr<Herwig::StandardModel>::transient_const_pointer hwsm=ThePEG::dynamic_ptr_cast< ThePEG::Ptr<Herwig::StandardModel> ::transient_const_pointer>(standardModel()); // do the initialisation if(!hwsm) throw InitException() << "Must be Herwig::StandardModel in MEPP2WJet::doinit()" << Exception::runerror; // set the vertex pointers _theFFWVertex = hwsm->vertexFFW(); _theQQGVertex = hwsm->vertexFFG(); } ClassDescription<MEPP2WJet> MEPP2WJet::initMEPP2WJet; // Definition of the static class description member. void MEPP2WJet::Init() { static ClassDocumentation<MEPP2WJet> documentation ("The MEPP2WJet class implements the matrix element for W + jet production"); static Parameter<MEPP2WJet,unsigned int> interfaceMaxFlavour ( "MaxFlavour", "The heaviest incoming quark flavour this matrix element is allowed to handle " "(if applicable).", &MEPP2WJet::_maxflavour, 5, 0, 8, false, false, true); static Switch<MEPP2WJet,unsigned int> interfaceProcess ("Process", "Which subprocesses to include", &MEPP2WJet::_process, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all subprocesses", 0); static SwitchOption interfaceProcessqqbar (interfaceProcess, "qqbar", "Only include q qbar -> W g process", 1); static SwitchOption interfaceProcessqg (interfaceProcess, "qg", "Only include the q g -> W q process", 2); static SwitchOption interfaceProcessqbarg (interfaceProcess, "qbarg", "Only include the qbar g -> W qbar process", 3); static Switch<MEPP2WJet,unsigned int> interfacePlusMinus ("Wcharge", "Which intermediate W bosons to include", &MEPP2WJet::_plusminus, 0, false, false); static SwitchOption interfacePlusMinusAll (interfacePlusMinus, "Both", "Include W+ and W-", 0); static SwitchOption interfacePlusMinusPlus (interfacePlusMinus, "Plus", "Only include W+", 1); static SwitchOption interfacePlusMinusMinus (interfacePlusMinus, "Minus", "Only include W-", 2); static Switch<MEPP2WJet,unsigned int> interfaceWDecay ("WDecay", "Which processes to include", &MEPP2WJet::_wdec, 0, false, false); static SwitchOption interfaceWDecayAll (interfaceWDecay, "All", "Include all SM fermions as outgoing particles", 0); static SwitchOption interfaceWDecayQuarks (interfaceWDecay, "Quarks", "Only include outgoing quarks", 1); static SwitchOption interfaceWDecayLeptons (interfaceWDecay, "Leptons", "All include outgoing leptons", 2); static SwitchOption interfaceWDecayElectron (interfaceWDecay, "Electron", "Only include outgoing e nu_e", 3); static SwitchOption interfaceWDecayMuon (interfaceWDecay, "Muon", "Only include outgoing mu nu_mu", 4); static SwitchOption interfaceWDecayTau (interfaceWDecay, "Tau", "Only include outgoing tauu nu_tau", 5); static SwitchOption interfaceWDecayUpDown (interfaceWDecay, "UpDown", "Only include outgoing u dbar/ d ubar", 6); static SwitchOption interfaceWDecayUpStrange (interfaceWDecay, "UpStrange", "Only include outgoing u sbar/ s ubar", 7); static SwitchOption interfaceWDecayUpBottom (interfaceWDecay, "UpBottom", "Only include outgoing u bbar/ b ubar", 8); static SwitchOption interfaceWDecayCharmDown (interfaceWDecay, "CharmDown", "Only include outgoing c dbar/ d cbar", 9); static SwitchOption interfaceWDecayCharmStrange (interfaceWDecay, "CharmStrange", "Only include outgoing c sbar/ s cbar", 10); static SwitchOption interfaceWDecayCharmBottom (interfaceWDecay, "CharmBottom", "Only include outgoing c bbar/ b cbar", 11); static Switch<MEPP2WJet,unsigned int> interfaceWidthOption ("WidthOption", "The option for handling the width of the off-shell W boson", &MEPP2WJet::_widthopt, 1, false, false); static SwitchOption interfaceWidthOptionFixedDenominator (interfaceWidthOption, "FixedDenominator", "Use a fixed with in the W propagator but the full matrix element" " in the numerator", 1); static SwitchOption interfaceWidthOptionAllRunning (interfaceWidthOption, "AllRunning", "Use a running width in the W propagator and the full matrix " "element in the numerator", 2); } void MEPP2WJet::getDiagrams() const { // which intgermediates to include bool wplus = _plusminus==0 || _plusminus==1; bool wminus = _plusminus==0 || _plusminus==2; // possible incoming and outgoing particles typedef std::vector<pair<long,long> > Pairvector; // possible parents Pairvector parentpair; parentpair.reserve(6); // don't even think of putting 'break' in here! switch(_maxflavour) { case 5: parentpair.push_back(make_pair(ParticleID::b, ParticleID::cbar)); parentpair.push_back(make_pair(ParticleID::b, ParticleID::ubar)); case 4: parentpair.push_back(make_pair(ParticleID::s, ParticleID::cbar)); parentpair.push_back(make_pair(ParticleID::d, ParticleID::cbar)); case 3: parentpair.push_back(make_pair(ParticleID::s, ParticleID::ubar)); case 2: parentpair.push_back(make_pair(ParticleID::d, ParticleID::ubar)); default: ; } // possible children Pairvector childpair; childpair.reserve(9); childpair.push_back(make_pair(ParticleID::eminus, ParticleID::nu_ebar)); childpair.push_back(make_pair(ParticleID::muminus, ParticleID::nu_mubar)); childpair.push_back(make_pair(ParticleID::tauminus, ParticleID::nu_taubar)); childpair.push_back(make_pair(ParticleID::d, ParticleID::ubar)); childpair.push_back(make_pair(ParticleID::s, ParticleID::ubar)); childpair.push_back(make_pair(ParticleID::b, ParticleID::ubar)); childpair.push_back(make_pair(ParticleID::d, ParticleID::cbar)); childpair.push_back(make_pair(ParticleID::s, ParticleID::cbar)); childpair.push_back(make_pair(ParticleID::b, ParticleID::cbar)); // gluon for diagrams tcPDPtr g = getParticleData(ParticleID::g); // loop over the children bool lepton,quark; Pairvector::const_iterator child = childpair.begin(); for (; child != childpair.end(); ++child) { // allowed leptonic decay lepton=child->first>10&& (_wdec==0||_wdec==2|| (abs(child->first)-5)/2==int(_wdec)); // allowed quark decay quark =abs(child->second)<10&& (_wdec==0||_wdec==1|| (abs(child->second)==2&&(abs(child->first)+11)/2==int(_wdec))|| (abs(child->second)==4&&(abs(child->first)+17)/2==int(_wdec))); // if decay not allowed skip if(!(quark||lepton)) continue; // decay products tcPDPtr lNeg1 = getParticleData(child->first); tcPDPtr lNeg2 = getParticleData(child->second); tcPDPtr lPos1 = lNeg2->CC(); tcPDPtr lPos2 = lNeg1->CC(); Pairvector::const_iterator parent = parentpair.begin(); for (; parent != parentpair.end(); ++parent) { // parents tcPDPtr qNeg1 = getParticleData(parent->first); tcPDPtr qNeg2 = getParticleData(parent->second); tcPDPtr qPos1 = qNeg2->CC(); tcPDPtr qPos2 = qNeg1->CC(); // diagrams // q qbar annhilation processes if(_process==0||_process==1) { // q qbar -> W- g if(wminus) { add(new_ptr((Tree2toNDiagram(3), qNeg1, qNeg2, qNeg2, 1, _wminus, 2, g, 4, lNeg1, 4, lNeg2, -1))); add(new_ptr((Tree2toNDiagram(3), qNeg1, qNeg1, qNeg2, 2, _wminus, 1, g, 4, lNeg1, 4, lNeg2, -2))); } // q qbar -> W+ g if(wplus) { add(new_ptr((Tree2toNDiagram(3), qPos1, qPos2, qPos2, 1, _wplus, 2, g, 4, lPos1, 4, lPos2, -3))); add(new_ptr((Tree2toNDiagram(3), qPos1, qPos1, qPos2, 2, _wplus, 1, g, 4, lPos1, 4, lPos2, -4))); } } // q g compton if(_process==0||_process==2) { if(wminus) { add(new_ptr((Tree2toNDiagram(3), qNeg1, qPos1, g , 1, _wminus, 2, qPos1, 4, lNeg1, 4, lNeg2, -5))); add(new_ptr((Tree2toNDiagram(2), qNeg1, g, 1, qNeg1, 3, _wminus, 3, qPos1, 4, lNeg1, 4, lNeg2, -6))); } if(wplus) { add(new_ptr((Tree2toNDiagram(3), qPos1, qNeg1, g, 1, _wplus, 2, qNeg1, 4, lPos1, 4, lPos2, -7))); add(new_ptr((Tree2toNDiagram(2), qPos1, g, 1, qNeg1, 3, _wplus, 3, qNeg1, 4, lPos1, 4, lPos2, -8))); } } // qbar g compton if(_process==0||_process==3) { if(wminus) { add(new_ptr((Tree2toNDiagram(3), qNeg2, qPos2, g, 1, _wminus, 2, qPos2, 4, lNeg1, 4, lNeg2, -9 ))); add(new_ptr((Tree2toNDiagram(2), qNeg2, g, 1, qNeg2, 3, _wminus, 3, qPos2, 4, lNeg1, 4, lNeg2, -10))); } if(wplus) { add(new_ptr((Tree2toNDiagram(3), qPos2, qNeg2, g, 1, _wplus, 2, qNeg2, 4, lPos1, 4, lPos2, -11))); add(new_ptr((Tree2toNDiagram(2), qPos2, g, 1, qPos2, 3, _wplus, 3, qNeg2, 4, lPos1, 4, lPos2, -12))); } } } } } unsigned int MEPP2WJet::orderInAlphaS() const { return 1; } unsigned int MEPP2WJet::orderInAlphaEW() const { return 2; } void MEPP2WJet::persistentOutput(PersistentOStream & os) const { os << _theFFWVertex << _theQQGVertex << _wplus << _widthopt << _wminus << _process << _maxflavour << _plusminus << _wdec; } void MEPP2WJet::persistentInput(PersistentIStream & is, int) { is >> _theFFWVertex >> _theQQGVertex >> _wplus >> _widthopt >> _wminus >> _process >> _maxflavour >> _plusminus >> _wdec; } int MEPP2WJet::nDim() const { return 5; } Selector<const ColourLines *> MEPP2WJet::colourGeometries(tcDiagPtr diag) const { // colour lines for q qbar -> W g static const ColourLines cqqbar[4]={ColourLines("1 -2 5,-3 -5"), ColourLines("1 5, -5 2 -3"), ColourLines("1 -2 5,-3 -5,6 -7"), ColourLines("1 5, -5 2 -3,6 -7")}; // colour lines for q g -> W q static const ColourLines cqg [4]={ColourLines("1 2 -3,3 5"), ColourLines("1 -2,2 3 5"), ColourLines("1 2 -3,3 5,6 -7"), ColourLines("1 -2,2 3 5,6 -7")}; // colour lines for qbar q -> W qbar static const ColourLines cqbarg[4]={ColourLines("-1 -2 3,-3 -5"), ColourLines("-1 2,-2 -3 -5"), ColourLines("-1 -2 3,-3 -5,6 -7"), ColourLines("-1 2,-2 -3 -5,6 -7")}; // select the correct line unsigned int icol = mePartonData()[3]->coloured() ? 2 : 0; Selector<const ColourLines *> sel; switch(abs(diag->id())) { case 1 : case 3: sel.insert(1.0, &cqqbar[icol]); break; case 2 : case 4: sel.insert(1.0, &cqqbar[icol+1]); break; case 5 : case 7: sel.insert(1.0, &cqg[icol]); break; case 6 : case 8: sel.insert(1.0, &cqg[icol+1]); break; case 9 : case 11: sel.insert(1.0, &cqbarg[icol]); break; case 10 : case 12: sel.insert(1.0, &cqbarg[icol+1]); break; } return sel; } Selector<MEBase::DiagramIndex> MEPP2WJet::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { int id=abs(diags[i]->id()); if (id <= 2 ) sel.insert(meInfo()[id- 1],i); else if(id <= 4 ) sel.insert(meInfo()[id- 3],i); else if(id <= 6 ) sel.insert(meInfo()[id- 5],i); else if(id <= 8 ) sel.insert(meInfo()[id- 7],i); else if(id <= 10) sel.insert(meInfo()[id- 9],i); else if(id <= 12) sel.insert(meInfo()[id-11],i); } return sel; } Energy2 MEPP2WJet::scale() const { return _scale; } CrossSection MEPP2WJet::dSigHatDR() const { return me2()*jacobian()/(16.0*sqr(Constants::pi)*sHat())*sqr(hbarc); } bool MEPP2WJet::generateKinematics(const double * r) { // initialize jacobian jacobian(1.); // cms energy Energy ecm=sqrt(sHat()); // find the right W pointer tcPDPtr wdata = mePartonData()[3]->iCharge()+mePartonData()[4]->iCharge() > 0 ? _wplus :_wminus; // first generate the mass of the off-shell gauge boson // minimum mass of the tcPDVector ptemp; ptemp.push_back(mePartonData()[3]); ptemp.push_back(mePartonData()[4]); Energy2 minMass2 = max(lastCuts().minSij(mePartonData()[3],mePartonData()[4]), lastCuts().minS(ptemp)); // minimum pt of the jet Energy ptmin = max(lastCuts().minKT(mePartonData()[2]), lastCuts().minKT(wdata)); // maximum mass of the gauge boson so pt is possible Energy2 maxMass2 = min(ecm*(ecm-2.*ptmin),lastCuts().maxS(ptemp)); if(maxMass2<=ZERO||minMass2<ZERO) return false; // also impose the limits from the ParticleData object minMass2 = max(minMass2,sqr(wdata->massMin())); maxMass2 = min(maxMass2,sqr(wdata->massMax())); // return if not kinematically possible if(minMass2>maxMass2) return false; // generation of the mass Energy M(wdata->mass()),Gamma(wdata->width()); Energy2 M2(sqr(M)),MG(M*Gamma); double rhomin = atan2((minMass2-M2),MG); double rhomax = atan2((maxMass2-M2),MG); _mw2=M2+MG*tan(rhomin+r[1]*(rhomax-rhomin)); Energy mw=sqrt(_mw2); // jacobian jacobian(jacobian()*(sqr(_mw2-M2)+sqr(MG))/MG*(rhomax-rhomin)/sHat()); // set the masses of the outgoing particles in the 2-2 scattering meMomenta()[2].setMass(ZERO); Lorentz5Momentum pw(mw); // generate the polar angle of the hard scattering double ctmin(-1.0), ctmax(1.0); Energy q(ZERO); try { q = SimplePhaseSpace::getMagnitude(sHat(), meMomenta()[2].mass(),mw); } catch ( ImpossibleKinematics ) { return false; } Energy2 pq = sqrt(sHat())*q; if ( ptmin > ZERO ) { double ctm = 1.0 - sqr(ptmin/q); if ( ctm <= 0.0 ) return false; ctmin = max(ctmin, -sqrt(ctm)); ctmax = min(ctmax, sqrt(ctm)); } if ( ctmin >= ctmax ) return false; double cth = getCosTheta(ctmin, ctmax, r[0]); // momenta of particle in hard scattering Energy pt = q*sqrt(1.0-sqr(cth)); double phi=2.0*Constants::pi*r[2]; meMomenta()[2].setVect(Momentum3( pt*sin(phi), pt*cos(phi), q*cth)); pw.setVect( Momentum3(-pt*sin(phi),-pt*cos(phi),-q*cth)); meMomenta()[2].rescaleEnergy(); pw.rescaleEnergy(); // set the scale _scale = _mw2+sqr(pt); // generate the momenta of the W decay products meMomenta()[3].setMass(mePartonData()[3]->mass()); meMomenta()[4].setMass(mePartonData()[4]->mass()); Energy q2 = ZERO; try { q2 = SimplePhaseSpace::getMagnitude(_mw2, meMomenta()[3].mass(), meMomenta()[4].mass()); } catch ( ImpossibleKinematics ) { return false; } double cth2 =-1.+2.*r[3]; double phi2=Constants::twopi*r[4]; Energy pt2 =q2*sqrt(1.-sqr(cth2)); Lorentz5Momentum pl[2]={Lorentz5Momentum( pt2*cos(phi2), pt2*sin(phi2), q2*cth2,ZERO, meMomenta()[3].mass()), Lorentz5Momentum(-pt2*cos(phi2),-pt2*sin(phi2),-q2*cth2,ZERO, meMomenta()[4].mass())}; pl[0].rescaleEnergy(); pl[1].rescaleEnergy(); Boost boostv(pw.boostVector()); pl[0].boost(boostv); pl[1].boost(boostv); meMomenta()[3] = pl[0]; meMomenta()[4] = pl[1]; // check passes all the cuts vector<LorentzMomentum> out(3); out[0] = meMomenta()[2]; out[1] = meMomenta()[3]; out[2] = meMomenta()[4]; tcPDVector tout(3); tout[0] = mePartonData()[2]; tout[1] = mePartonData()[3]; tout[2] = mePartonData()[4]; if ( !lastCuts().passCuts(tout, out, mePartonData()[0], mePartonData()[1]) ) return false; // jacobian jacobian((pq/sHat())*Constants::pi*jacobian()/8./sqr(Constants::pi)*q2/mw); return true; } double MEPP2WJet::getCosTheta(double ctmin, double ctmax, const double r) { double cth = 0.0; double zmin = 0.5*(1.0 - ctmax); double zmax = 0.5*(1.0 - ctmin); if ( zmin <= 0.0 || zmax >= 1.0 ) { jacobian((ctmax - ctmin)*jacobian()); cth = ctmin + r*(ctmax-ctmin); } else { double A1 = (2.0*zmax - 1.0)/(zmax*(1.0-zmax)); double A0 = (2.0*zmin - 1.0)/(zmin*(1.0-zmin)); double A = r*(A1 - A0) + A0; double z = A < 2.0? 2.0/(sqrt(sqr(A) + 4.0) + 2 - A): 0.5*(A - 2.0 + sqrt(sqr(A) + 4.0))/A; cth = 1.0 - 2.0*z; jacobian((2.0*(A1 - A0)*sqr(z)*sqr(1.0 - z)/(sqr(z) + sqr(1.0 - z)))*jacobian()); } return cth; } double MEPP2WJet::me2() const { InvEnergy2 output(ZERO); // construct spinors for the leptons (always the same) vector<SpinorBarWaveFunction> lm; vector<SpinorWaveFunction> lp; SpinorBarWaveFunction lmout(meMomenta()[3],mePartonData()[3],outgoing); SpinorWaveFunction lpout(meMomenta()[4],mePartonData()[4],outgoing); for(unsigned int ix=0;ix<2;++ix) { lmout.reset(ix);lm.push_back(lmout); lpout.reset(ix);lp.push_back(lpout); } // q g to q W if(mePartonData()[0]->id()<=6&&mePartonData()[0]->id()>0&& mePartonData()[1]->id()==ParticleID::g) { // polarization states for the particles vector<SpinorWaveFunction> fin; vector<VectorWaveFunction> gin; vector<SpinorBarWaveFunction> fout; SpinorWaveFunction qin (meMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction glin(meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction qout(meMomenta()[2],mePartonData()[2],outgoing); for(unsigned int ix=0;ix<2;++ix) { qin.reset(ix) ; fin.push_back(qin); glin.reset(2*ix); gin.push_back(glin); qout.reset(ix);fout.push_back(qout); } output=qgME(fin,gin,fout,lm,lp); } // qbar g to qbar W else if(mePartonData()[0]->id()>=-6&&mePartonData()[0]->id()<0&& mePartonData()[1]->id()==ParticleID::g) { vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> gin; vector<SpinorWaveFunction> aout; SpinorBarWaveFunction qbin (meMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction glin (meMomenta()[1],mePartonData()[1],incoming); SpinorWaveFunction qbout(meMomenta()[2],mePartonData()[2],outgoing); for(unsigned int ix=0;ix<2;++ix) { qbin.reset(ix) ; ain.push_back(qbin); glin.reset(2*ix) ; gin.push_back(glin); qbout.reset(ix);aout.push_back(qbout); } output=qbargME(ain,gin,aout,lm,lp); } // q qbar to g W else { vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> gout; SpinorWaveFunction qin (meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction qbin(meMomenta()[1],mePartonData()[1],incoming); VectorWaveFunction glout(meMomenta()[2],mePartonData()[2],outgoing); for(unsigned int ix=0;ix<2;++ix) { qin.reset(ix) ; fin.push_back(qin); qbin.reset(ix) ; ain.push_back(qbin); glout.reset(2*ix); gout.push_back(glout); } output=qqbarME(fin,ain,gout,lm,lp); } return output*sHat(); } InvEnergy2 MEPP2WJet::qqbarME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, vector<VectorWaveFunction> & gout, vector<SpinorBarWaveFunction> & lm, vector<SpinorWaveFunction> & lp, bool calc) const { // if calculation spin corrections construct the me if(calc) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1Half, PDT::Spin1Half)); // some integers unsigned int ihel1,ihel2,ohel1,ohel2,ohel3; // find the right W pointer tcPDPtr wdata = mePartonData()[3]->iCharge()+mePartonData()[4]->iCharge() > 0 ? _wplus :_wminus; // compute the W current for speed VectorWaveFunction bcurr[2][2]; for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { bcurr[ohel2][ohel3] = _theFFWVertex->evaluate(_mw2,_widthopt,wdata, lp[ohel3],lm[ohel2]); } } double me[3]={0.,0.,0.}; Complex diag[2]; SpinorWaveFunction inters; SpinorBarWaveFunction interb; for(ihel1=0;ihel1<2;++ihel1) { for(ihel2=0;ihel2<2;++ihel2) { for(ohel1=0;ohel1<2;++ohel1) { // intermediates for the diagrams inters=_theQQGVertex->evaluate(_scale,5,mePartonData()[0], fin[ihel1],gout[ohel1]); interb=_theQQGVertex->evaluate(_scale,5,mePartonData()[1], ain[ihel2],gout[ohel1]); for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { diag[0] = _theFFWVertex->evaluate(_mw2,fin[ihel1],interb, bcurr[ohel2][ohel3]); diag[1] = _theFFWVertex->evaluate(_mw2,inters,ain[ihel2], bcurr[ohel2][ohel3]); // diagram contributions me[1] += norm(diag[0]); me[2] += norm(diag[1]); // total diag[0] += diag[1]; me[0] += norm(diag[0]); if(calc) _me(ihel1,ihel2,2*ohel1,ohel2,ohel3) = diag[0]; } } } } } // results // initial state spin and colour average double colspin=1./9./4.; // and C_F N_c from matrix element colspin *= 4.; // colour factor for the W decay if(mePartonData()[3]->coloured()) colspin*=3.; DVector save; for(unsigned int ix=0;ix<3;++ix) { me[ix]*=colspin; if(ix>0) save.push_back(me[ix]); } meInfo(save); return me[0] * UnitRemoval::InvE2; } InvEnergy2 MEPP2WJet::qgME(vector<SpinorWaveFunction> & fin, vector<VectorWaveFunction> & gin, vector<SpinorBarWaveFunction> & fout, vector<SpinorBarWaveFunction> & lm, vector<SpinorWaveFunction> & lp, bool calc) const { // if calculation spin corrections construct the me if(calc) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1, PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half)); // find the right W pointer tcPDPtr wdata = mePartonData()[3]->iCharge()+mePartonData()[4]->iCharge() > 0 ? _wplus :_wminus; // some integers unsigned int ihel1,ihel2,ohel1,ohel2,ohel3; // compute the leptonic W current for speed VectorWaveFunction bcurr[2][2]; for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { bcurr[ohel2][ohel3] = _theFFWVertex->evaluate(_mw2,_widthopt,wdata, lp[ohel3],lm[ohel2]); } } // compute the matrix elements double me[3]={0.,0.,0.}; Complex diag[2]; SpinorWaveFunction inters; SpinorBarWaveFunction interb; for(ihel1=0;ihel1<2;++ihel1) { for(ihel2=0;ihel2<2;++ihel2) { for(ohel1=0;ohel1<2;++ohel1) { // intermediates for the diagrams interb=_theQQGVertex->evaluate(_scale,5,mePartonData()[2], fout[ohel1],gin[ihel2]); inters=_theQQGVertex->evaluate(_scale,5,mePartonData()[0], fin[ihel1],gin[ihel2]); for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { diag[0]=_theFFWVertex->evaluate(_mw2,fin[ihel1],interb, bcurr[ohel2][ohel3]); diag[1]=_theFFWVertex->evaluate(_mw2,inters,fout[ohel1], bcurr[ohel2][ohel3]); // diagram contributions me[1] += norm(diag[0]); me[2] += norm(diag[1]); // total diag[0] += diag[1]; me[0] += norm(diag[0]); if(calc) _me(ihel1,2*ihel2,ohel1,ohel2,ohel3) = diag[0]; } } } } } // results // initial state spin and colour average double colspin=1./24./4.; // and C_F N_c from matrix element colspin *=4.; // colour factor for the W decay if(mePartonData()[3]->coloured()) colspin*=3.; DVector save; for(unsigned int ix=0;ix<3;++ix) { me[ix]*=colspin; if(ix>0) save.push_back(me[ix]); } meInfo(save); return me[0] * UnitRemoval::InvE2; } InvEnergy2 MEPP2WJet::qbargME(vector<SpinorBarWaveFunction> & fin, vector<VectorWaveFunction> & gin, vector<SpinorWaveFunction> & fout, vector<SpinorBarWaveFunction> & lm, vector<SpinorWaveFunction> & lp, bool calc) const { // if calculation spin corrections construct the me if(calc) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1, PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half)); // find the right W pointer tcPDPtr wdata = mePartonData()[3]->iCharge()+mePartonData()[4]->iCharge() > 0 ? _wplus :_wminus; // some integers unsigned int ihel1,ihel2,ohel1,ohel2,ohel3; // compute the leptonic W current for speed VectorWaveFunction bcurr[2][2]; for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { bcurr[ohel2][ohel3] = _theFFWVertex->evaluate(_mw2,_widthopt,wdata, lp[ohel3],lm[ohel2]); } } // compute the matrix elements double me[3]={0.,0.,0.}; Complex diag[2]; SpinorWaveFunction inters; SpinorBarWaveFunction interb; for(ihel1=0;ihel1<2;++ihel1) { for(ihel2=0;ihel2<2;++ihel2) { for(ohel1=0;ohel1<2;++ohel1) { // intermediates for the diagrams inters=_theQQGVertex->evaluate(_scale,5,mePartonData()[2], fout[ohel1],gin[ihel2]); interb=_theQQGVertex->evaluate(_scale,5,mePartonData()[0], fin[ihel1],gin[ihel2]); for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { diag[0]= _theFFWVertex->evaluate(_mw2,inters,fin[ihel1], bcurr[ohel2][ohel3]); diag[1]= _theFFWVertex->evaluate(_mw2,fout[ohel1],interb, bcurr[ohel2][ohel3]); // diagram contributions me[1] += norm(diag[0]); me[2] += norm(diag[1]); // total diag[0] += diag[1]; me[0] += norm(diag[0]); if(calc) _me(ihel1,2*ihel2,ohel1,ohel2,ohel3) = diag[0]; } } } } } // results // initial state spin and colour average double colspin=1./24./4.; // and C_F N_c from matrix element colspin *= 4.; // colour factor for the W decay if(mePartonData()[3]->coloured()) colspin*=3.; DVector save; for(unsigned int ix=0;ix<3;++ix) { me[ix]*=colspin; if(ix>0) save.push_back(me[ix]); } meInfo(save); return me[0] * UnitRemoval::InvE2; } void MEPP2WJet::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard(5); // incoming hard[0]=sub->incoming().first; hard[1]=sub->incoming().second; if((hard[0]->id()<0&&hard[1]->id()<=6)|| hard[0]->id()==ParticleID::g) swap(hard[0],hard[1]); // outgoing for(unsigned int ix=0;ix<3;++ix) { unsigned int iloc; PPtr mother=sub->outgoing()[ix]->parents()[0]; if(mother&&abs(mother->id())==ParticleID::Wplus) { if(sub->outgoing()[ix]->id()>0) iloc=3; else iloc=4; } else iloc=2; hard[iloc]=sub->outgoing()[ix]; } // wavefunctions for the W decay products vector<SpinorBarWaveFunction> lm; vector<SpinorWaveFunction> lp; SpinorBarWaveFunction(lm,hard[3],outgoing,true,true); SpinorWaveFunction (lp,hard[4],outgoing,true,true); // identify hard process and calculate matrix element // q g to q W if(hard[0]->id()<=6&&hard[0]->id()>0&&hard[1]->id()==ParticleID::g) { vector<SpinorWaveFunction> fin; vector<VectorWaveFunction> gin; vector<SpinorBarWaveFunction> fout; SpinorWaveFunction (fin ,hard[0],incoming,false,true); VectorWaveFunction (gin ,hard[1],incoming,false,true,true); SpinorBarWaveFunction (fout,hard[2],outgoing,true ,true); gin[1]=gin[2]; qgME(fin,gin,fout,lm,lp,true); } // qbar g to qbar W else if(hard[0]->id()>=-6&&hard[0]->id()<0&&hard[1]->id()==ParticleID::g) { vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> gin; vector<SpinorWaveFunction> aout; SpinorBarWaveFunction(ain ,hard[0],incoming,false,true); VectorWaveFunction (gin ,hard[1],incoming,false,true,true); SpinorWaveFunction (aout,hard[2],outgoing,true ,true); gin[1]=gin[2]; qbargME(ain,gin,aout,lm,lp,true); } // q qbar to g W else { vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> gout; SpinorWaveFunction (fin ,hard[0],incoming,false,true); SpinorBarWaveFunction(ain ,hard[1],incoming,false,true); VectorWaveFunction (gout,hard[2],outgoing,true ,true,true); gout[1]=gout[2]; qqbarME(fin,ain,gout,lm,lp,true); } // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(_me); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<5;++ix) (hard[ix]->spinInfo())->productionVertex(hardvertex); } �����������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2GammaJet.h��������������������������������������������0000644�0001750�0001750�00000021407�11754474776�023400� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEPP2GammaJet.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEPP2GammaJet_H #define HERWIG_MEPP2GammaJet_H // // This is the declaration of the MEPP2GammaJet class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** \ingroup MatrixElements * The MEPP2GammaJet class implements the matrix element for photon+jet * production in hadron-hadron collisions. * * @see \ref MEPP2GammaJetInterfaces "The interfaces" * defined for MEPP2GammaJet. */ class MEPP2GammaJet: public HwMEBase { public: /** * The default constructor. */ MEPP2GammaJet(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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 { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans) ; /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} private: /** * Members to return the matrix elements for the different subprocesses */ //@{ /** * Matrix element for \f$q\bar{q}\to g\gamma\f$. * @param fin Spinors for incoming quark * @param ain Spinors for incoming antiquark * @param gout Polarization vectors for the outgoing gluon * @param pout Polarization vectors for the outgoing photon * @param me Whether or not to calculate the matrix element for spin correlations */ double qqbarME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, vector<VectorWaveFunction> & gout, vector<VectorWaveFunction> & pout, bool me) const; /** * Matrix element for \f$qg\to \gamma q\f$. * @param fin Spinors for incoming quark * @param gin Polarization vectors for the incoming gluon * @param pout Polarization vectors for the outgoing photon * @param fout Spinors for outgoing quark * @param me Whether or not to calculate the matrix element for spin correlations */ double qgME(vector<SpinorWaveFunction> & fin,vector<VectorWaveFunction> & gin, vector<VectorWaveFunction> & pout,vector<SpinorBarWaveFunction> & fout, bool me) const; /** * Matrix element for \f$\bar{q}g\to \gamma \bar{q}\f$. * @param ain Spinors for the incoming antiquark * @param gin Polarization vectors for the incoming gluon * @param pout Polarization vectors for the outgoing photon * @param aout Spinors for the outgoing antiquark * @param me Whether or not to calculate the matrix element for spin correlations */ double qbargME(vector<SpinorBarWaveFunction> & ain, vector<VectorWaveFunction> & gin, vector<VectorWaveFunction> & pout, vector<SpinorWaveFunction> & aout, bool me) const; //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2GammaJet> initMEPP2GammaJet; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2GammaJet & operator=(const MEPP2GammaJet &); private: /** * Pointer to the quark-antiquark-gluon vertex */ AbstractFFVVertexPtr _gluonvertex; /** * Pointer to the quark-antiquark-photon vertex */ AbstractFFVVertexPtr _photonvertex; /** * Maximum PDG code of the quarks allowed */ int _maxflavour; /** * Option for which processes to include */ unsigned int _processopt; /** * Matrix element for spin correlations */ ProductionMatrixElement _me; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2GammaJet. */ template <> struct BaseClassTrait<Herwig::MEPP2GammaJet,1> { /** Typedef of the first base class of MEPP2GammaJet. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2GammaJet class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2GammaJet> : public ClassTraitsBase<Herwig::MEPP2GammaJet> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2GammaJet"; } /** * The name of a file containing the dynamic library where the class * MEPP2GammaJet is implemented. It may also include several, space-separated, * libraries if the class MEPP2GammaJet depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2GammaJet_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2GammaGamma.cc�����������������������������������������0000644�0001750�0001750�00000030064�11754474776�024035� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEPP2GammaGamma.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2GammaGamma class. // #include "MEPP2GammaGamma.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" using namespace Herwig; IBPtr MEPP2GammaGamma::clone() const { return new_ptr(*this); } IBPtr MEPP2GammaGamma::fullclone() const { return new_ptr(*this); } unsigned int MEPP2GammaGamma::orderInAlphaS() const { return 0; } unsigned int MEPP2GammaGamma::orderInAlphaEW() const { return 2; } void MEPP2GammaGamma::doinit() { // get the vedrtex pointers from the SM object tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(hwsm) {_photonvertex = hwsm->vertexFFP();} else throw InitException() << "Wrong type of StandardModel object in " << "MEPP2GammaGamma::doinit() the Herwig++" << " version must be used" << Exception::runerror; // call the base class HwMEBase::doinit(); } void MEPP2GammaGamma::getDiagrams() const { // diagrams for q qbar to gamma gamma tcPDPtr p = getParticleData(ParticleID::gamma); if(_process==0||_process==1) { for ( int i = 1; i <= 5; ++i ) { tcPDPtr q = getParticleData(i); tcPDPtr qb = q->CC(); // t channel add(new_ptr((Tree2toNDiagram(3), q, qb, qb, 1, p, 2, p, -1))); // u channel add(new_ptr((Tree2toNDiagram(3), q, qb, qb, 2, p, 1, p, -2))); } } // diagrams for g g to gamma gamma (this is garbage) tcPDPtr g = getParticleData(ParticleID::g); if(_process==0||_process==2) add(new_ptr((Tree2toNDiagram(2), g, g, 1, p, 3, p, 3, p, -3))); } Energy2 MEPP2GammaGamma::scale() const { Energy2 s(sHat()),u(uHat()),t(tHat()); return 2.*s*t*u/(s*s+t*t+u*u); } Selector<MEBase::DiagramIndex> MEPP2GammaGamma::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) if ( diags[i]->id() == -1 ) sel.insert(_diagwgt[0], i); else if ( diags[i]->id() == -2 ) sel.insert(_diagwgt[1], i); else if ( diags[i]->id() == -3 ) sel.insert(1.0, i); return sel; } Selector<const ColourLines *> MEPP2GammaGamma::colourGeometries(tcDiagPtr diag) const { // q qbar colour lines static const ColourLines cqqbar("1 -2 -3"); // g g colour lines static const ColourLines cgluon("1 -2,-1 2"); // selector Selector<const ColourLines *> sel; if ( diag->id() == -1 || diag->id() == -2 ) sel.insert(1.0, &cqqbar); else sel.insert(1.0, &cgluon); return sel; } void MEPP2GammaGamma::persistentOutput(PersistentOStream & os) const { os << _photonvertex << _maxflavour << _process; } void MEPP2GammaGamma::persistentInput(PersistentIStream & is, int) { is >> _photonvertex >> _maxflavour >> _process; } ClassDescription<MEPP2GammaGamma> MEPP2GammaGamma::initMEPP2GammaGamma; // Definition of the static class description member. void MEPP2GammaGamma::Init() { static ClassDocumentation<MEPP2GammaGamma> documentation ("The MEPP2GammaGamma class implements the matrix element for photon pair" " production in hadron collisions."); static Parameter<MEPP2GammaGamma,unsigned int> interfaceMaximumFlavour ("MaximumFlavour", "The maximum flavour of the quarks in the process", &MEPP2GammaGamma::_maxflavour, 5, 1, 5, false, false, Interface::limited); static Switch<MEPP2GammaGamma,unsigned int> interfaceProcess ("Process", "Subprocesses to include", &MEPP2GammaGamma::_process, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all the subprocesses", 0); static SwitchOption interfaceProcessqqbar (interfaceProcess, "qqbar", "Only include the incoming q qbar subproces", 1); static SwitchOption interfaceProcessgg (interfaceProcess, "gg", "Only include the incoming gg subprocess", 2); } double MEPP2GammaGamma::me2() const { // total matrix element double me(0.); // g g to gamma gamma if(mePartonData()[0]->id()==ParticleID::g) { VectorWaveFunction g1in(meMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction g2in(meMomenta()[1],mePartonData()[1],incoming); VectorWaveFunction p1out(meMomenta()[2],mePartonData()[2],outgoing); VectorWaveFunction p2out(meMomenta()[3],mePartonData()[3],outgoing); vector<VectorWaveFunction> g1,g2,p1,p2; for(unsigned int ix=0;ix<2;++ix) { g1in.reset(2*ix) ;g1.push_back( g1in); g2in.reset(2*ix) ;g2.push_back( g2in); p1out.reset(2*ix);p1.push_back(p1out); p2out.reset(2*ix);p2.push_back(p2out); } // calculate the matrix element me = ggME(g1,g2,p1,p2,false); } // q qbar to gamma gamma else { unsigned int iq(1),iqb(0); if(mePartonData()[0]->id()>0){iq=0;iqb=1;} SpinorWaveFunction qin (meMomenta()[iq ],mePartonData()[iq ],incoming); SpinorBarWaveFunction qbin(meMomenta()[iqb],mePartonData()[iqb],incoming); VectorWaveFunction p1out(meMomenta()[ 2 ],mePartonData()[ 2 ],outgoing); VectorWaveFunction p2out(meMomenta()[ 3 ],mePartonData()[ 3 ],outgoing); vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> p1,p2; for(unsigned int ix=0;ix<2;++ix) { qin.reset(ix) ;fin.push_back( qin ); qbin.reset(ix) ;ain.push_back( qbin); p1out.reset(2*ix); p1.push_back(p1out); p2out.reset(2*ix); p2.push_back(p2out); } // calculate the matrix element me= qqbarME(fin,ain,p1,p2,false); } return me; } double MEPP2GammaGamma::qqbarME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, vector<VectorWaveFunction> & p1, vector<VectorWaveFunction> & p2, bool calc) const { // the particles should be in the order // for the incoming // 0 incoming fermion (u spinor) // 1 incoming antifermion (vbar spinor) // for the outgoing // 0 first outgoing photon // 1 second outgoing photon // me to be returned ProductionMatrixElement newme(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1); // wavefunction for the intermediate particles SpinorWaveFunction inter; unsigned int inhel1,inhel2,outhel1,outhel2; Complex diag[3]; double me(0.),diag1(0.),diag2(0.); for(inhel1=0;inhel1<2;++inhel1) { for(inhel2=0;inhel2<2;++inhel2) { for(outhel1=0;outhel1<2;++outhel1) { for(outhel2=0;outhel2<2;++outhel2) { // first diagram inter = _photonvertex->evaluate(ZERO,5,fin[inhel1].particle()->CC(), fin[inhel1],p1[outhel1]); diag[0] = _photonvertex->evaluate(ZERO,inter,ain[inhel2],p2[outhel2]); // second diagram inter = _photonvertex->evaluate(ZERO,5,fin[inhel1].particle()->CC(), fin[inhel1],p2[outhel2]); diag[1] = _photonvertex->evaluate(ZERO,inter,ain[inhel2],p1[outhel1]); // compute the running totals diag[2]=diag[0]+diag[1]; diag1 += norm(diag[0]); diag2 += norm(diag[1]); me += norm(diag[2]); // matrix element if(calc) newme(inhel1,inhel2,2*outhel1,2*outhel2)=diag[2]; } } } } // save the info on the diagrams if(!calc) { _diagwgt[0]=diag1; _diagwgt[1]=diag2; } // check versus analytic result // Energy2 s(sHat()),u(uHat()),t(tHat()); // double test = 2./3.*sqr(4.*Constants::pi*SM().alphaEM(ZERO))*(t/u+u/t)* // pow(double(mePartonData()[0]->iCharge())/3.,4); // cerr << "testing me " << 12./me*test << endl; // return the answer (including colour and spin factor) if(calc) _me.reset(newme); // this is 1/3 colour average, 1/4 spin aver, 1/2 identical particles return me/24.; } double MEPP2GammaGamma::ggME(vector<VectorWaveFunction> &, vector<VectorWaveFunction> &, vector<VectorWaveFunction> &, vector<VectorWaveFunction> &, bool calc) const { // we probably need some basis rotation here ????? // get the scales Energy2 s(sHat()),u(uHat()),t(tHat()); Complex me[2][2][2][2]; double charge(11./9.); // ++++ me[1][1][1][1] = charge*ggme(s,t,u); // +++- me[1][1][1][0] =-charge; // ++-+ me[1][1][0][1] =-charge; // ++-- me[1][1][0][0] =-charge; // +-++ me[1][0][1][1] =-charge; // +-+- me[1][0][1][0] = charge*ggme(u,t,s); // +--+ me[1][0][0][1] = charge*ggme(t,s,u); // +--- me[1][0][0][0] = charge; // -+++ me[0][1][1][1] =-charge; // -++- me[0][1][1][0] =-me[1][0][0][1]; // -+-+ me[0][1][0][1] =-me[1][0][1][0]; // -+-- me[0][1][0][0] = charge; // --++ me[0][0][1][1] = charge; // --+- me[0][0][1][0] = charge; // ---+ me[0][0][0][1] = charge; // ---- me[0][0][0][0] =-me[1][1][1][1]; ProductionMatrixElement newme(PDT::Spin1,PDT::Spin1, PDT::Spin1,PDT::Spin1); unsigned int inhel1,inhel2,outhel1,outhel2; double sum(0.); for(inhel1=0;inhel1<2;++inhel1) { for(inhel2=0;inhel2<2;++inhel2) { for(outhel1=0;outhel1<2;++outhel1) { for(outhel2=0;outhel2<2;++outhel2) { sum+=real( me[inhel1][inhel2][outhel1][outhel2]* conj(me[inhel1][inhel2][outhel1][outhel2])); // matrix element if(calc) newme(2*inhel1,2*inhel2, 2*outhel1,2*outhel2)=me[inhel1][inhel2][outhel1][outhel2]; } } } } // double pi2(sqr(pi)); // Energy2 s2(sqr(s)),t2(sqr(t)),u2(sqr(u)); // double alntu=log(t/u); // double alnst=log(-s/t); // double alnsu=alnst+alntu; // double test=5.*4. // +sqr((2.*s2+2.*(u2-t2)*alntu+(t2+u2)*(sqr(alntu)+pi2))/s2) // +sqr((2.*u2+2.*(t2-s2)*alnst+(t2+s2)* sqr(alnst) )/u2) // +sqr((2.*t2+2.*(u2-s2)*alnsu+(u2+s2)* sqr(alnsu) )/t2) // +4.*pi2*(sqr((t2-s2+(t2+s2)*alnst)/u2)+sqr((u2-s2+(u2+s2)*alnsu)/t2)); // cerr << "testing ratio " << sum/test/sqr(charge)*2. << endl; // final factors if(calc) _me.reset(newme); return 0.25*sum*sqr(SM().alphaS(scale())*SM().alphaEM(ZERO)); } void MEPP2GammaGamma::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first);hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]);hard.push_back(sub->outgoing()[1]); // order of particles unsigned int order[4]={0,1,2,3}; // identify the process and calculate matrix element vector<VectorWaveFunction> g1,g2,p1,p2; if(hard[0]->id()==ParticleID::g) { VectorWaveFunction (g1,hard[order[0]],incoming,false,true,true); VectorWaveFunction (g2,hard[order[1]],incoming,false,true,true); VectorWaveFunction (p1,hard[order[2]],outgoing,true ,true,true); VectorWaveFunction (p2,hard[order[3]],outgoing,true ,true,true); g1[1]=g1[2];g2[1]=g2[2];p1[1]=p1[2];p2[1]=p2[2]; ggME(g1,g2,p1,p2,true); } else { if(hard[order[0]]->id()<0) swap(order[0],order[1]); vector<SpinorWaveFunction> q; vector<SpinorBarWaveFunction> qb; SpinorWaveFunction (q ,hard[order[0]],incoming,false,true); SpinorBarWaveFunction(qb,hard[order[1]],incoming,false,true); VectorWaveFunction (p1,hard[order[2]],outgoing,true ,true,true); VectorWaveFunction (p2,hard[order[3]],outgoing,true ,true,true); p1[1]=p1[2];p2[1]=p2[2]; qqbarME(q,qb,p1,p2,true); } // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(_me); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) hard[order[ix]]->spinInfo()->productionVertex(hardvertex); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2ZH.h��������������������������������������������������0000644�0001750�0001750�00000007210�11754474776�022230� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEPP2ZH_H #define HERWIG_MEPP2ZH_H // // This is the declaration of the MEPP2ZH class. // #include "Herwig++/MatrixElement/MEfftoVH.h" namespace Herwig { using namespace ThePEG; /** * The MEPP2ZH class implements the matrix element * for \f$q\bar{q}\to Z^0h^0\f$. * * @see \ref MEPP2ZHInterfaces "The interfaces" * defined for MEPP2ZH. */ class MEPP2ZH: public MEfftoVH { public: /** * The default constructor. */ MEPP2ZH(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2ZH> initMEPP2ZH; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2ZH & operator=(const MEPP2ZH &); private: /** * The allowed flavours of the incoming quarks */ int _maxflavour; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2ZH. */ template <> struct BaseClassTrait<Herwig::MEPP2ZH,1> { /** Typedef of the first base class of MEPP2ZH. */ typedef Herwig::MEfftoVH NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2ZH class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2ZH> : public ClassTraitsBase<Herwig::MEPP2ZH> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2ZH"; } /** * The name of a file containing the dynamic library where the class * MEPP2ZH is implemented. It may also include several, space-separated, * libraries if the class MEPP2ZH depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2ZH_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2WH.h��������������������������������������������������0000644�0001750�0001750�00000007324�11754474776�022233� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEPP2WH_H #define HERWIG_MEPP2WH_H // // This is the declaration of the MEPP2WH class. // #include "Herwig++/MatrixElement/MEfftoVH.h" namespace Herwig { using namespace ThePEG; /** * The MEPP2WH class provides the matrix elements for the production of * the \f$W^\pm\f$ boson in association with the Higgs in hadron collisions. * * @see \ref MEPP2WHInterfaces "The interfaces" * defined for MEPP2WH. */ class MEPP2WH: public MEfftoVH { public: /** * Default constructor */ MEPP2WH(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2WH> initMEPP2WH; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2WH & operator=(const MEPP2WH &); private: /** * Which intermediate \f$W^\pm\f$ bosons to include */ unsigned int _plusminus; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2WH. */ template <> struct BaseClassTrait<Herwig::MEPP2WH,1> { /** Typedef of the first base class of MEPP2WH. */ typedef Herwig::MEfftoVH NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2WH class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2WH> : public ClassTraitsBase<Herwig::MEPP2WH> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2WH"; } /** * The name of a file containing the dynamic library where the class * MEPP2WH is implemented. It may also include several, space-separated, * libraries if the class MEPP2WH depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2WH_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2QQ.h��������������������������������������������������0000644�0001750�0001750�00000025414�11754474776�022236� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEPP2QQ.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEPP2QQ_H #define HERWIG_MEPP2QQ_H // // This is the declaration of the MEPP2QQ class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The MEPP2QQ class implements the production of a heavy quark-antiquark * pair via QCD. * * @see \ref MEPP2QQInterfaces "The interfaces" * defined for MEPP2QQ. */ class MEPP2QQ: public HwMEBase { public: /** * The default constructor. */ MEPP2QQ(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Members to calculate the matrix elements */ //@{ /** * Matrix element for \f$gg\to q\bar{q}\f$ * @param g1 The wavefunctions for the first incoming gluon * @param g2 The wavefunctions for the second incoming gluon * @param q The wavefunction for the outgoing quark * @param qbar The wavefunction for the outgoing antiquark * @param flow The colour flow */ double gg2qqbarME(vector<VectorWaveFunction> &g1,vector<VectorWaveFunction> &g2, vector<SpinorBarWaveFunction> & q,vector<SpinorWaveFunction> & qbar, unsigned int flow) const; /** * Matrix element for \f$q\bar{q}\to q\bar{q}\f$ * @param q1 The wavefunction for the incoming quark * @param q2 The wavefunction for the incoming antiquark * @param q3 The wavefunction for the outgoing quark * @param q4 The wavefunction for the outgoing antiquark * @param flow The colour flow */ double qqbar2qqbarME(vector<SpinorWaveFunction> & q1, vector<SpinorBarWaveFunction> & q2, vector<SpinorBarWaveFunction> & q3, vector<SpinorWaveFunction> & q4, unsigned int flow) const; /** * Matrix element for \f$qq\to qq\f$ * @param q1 The wavefunction for the first incoming quark * @param q2 The wavefunction for the second incoming quark * @param q3 The wavefunction for the first outgoing quark * @param q4 The wavefunction for the second outgoing quark * @param flow The colour flow */ double qq2qqME(vector<SpinorWaveFunction> & q1, vector<SpinorWaveFunction> & q2, vector<SpinorBarWaveFunction> & q3, vector<SpinorBarWaveFunction> & q4, unsigned int flow) const; /** * Matrix element for \f$\bar{q}\bar{q}\to \bar{q}\bar{q}\f$ * @param q1 The wavefunction for the first incoming antiquark * @param q2 The wavefunction for the second incoming antiquark * @param q3 The wavefunction for the first outgoing antiquark * @param q4 The wavefunction for the second outgoing antiquark * @param flow The colour flow */ double qbarqbar2qbarqbarME(vector<SpinorBarWaveFunction> & q1, vector<SpinorBarWaveFunction> & q2, vector<SpinorWaveFunction> & q3, vector<SpinorWaveFunction> & q4, unsigned int flow) const; /** * Matrix element for \f$qg\to qg\f$ * @param qin The wavefunction for the incoming quark * @param g2 The wavefunction for the incoming gluon * @param qout The wavefunction for the outgoing quark * @param g4 The wavefunction for the outgoing gluon * @param flow The colour flow */ double qg2qgME(vector<SpinorWaveFunction> & qin,vector<VectorWaveFunction> &g2, vector<SpinorBarWaveFunction> & qout,vector<VectorWaveFunction> &g4, unsigned int flow) const; /** * Matrix elements for \f$\bar{q}g\to \bar{q}g\f$. * @param qin The wavefunction for the incoming antiquark * @param g2 The wavefunction for the incoming gluon * @param qout The wavefunction for the outgoing antiquark * @param g4 The wavefunction for the outgoing gluon * @param flow The colour flow */ double qbarg2qbargME(vector<SpinorBarWaveFunction> & qin, vector<VectorWaveFunction> &g2, vector<SpinorWaveFunction> & qout,vector<VectorWaveFunction> &g4, unsigned int flow) const; //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans) ; /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2QQ> initMEPP2QQ; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2QQ & operator=(const MEPP2QQ &); private: /** * Vertices needed to compute the diagrams */ //@{ /** * \f$ggg\f$ vertex */ AbstractVVVVertexPtr _gggvertex; /** * \f$q\bar{q}g\f$ vertex */ AbstractFFVVertexPtr _qqgvertex; //@} /** * Quark Flavour */ unsigned int _quarkflavour; /** * Processes to include */ unsigned int _process; /** * Option for the treatment of bottom and lighter * quark masses */ unsigned int _bottomopt; /** * Option for the treatment of top quark masses */ unsigned int _topopt; /** * Maximum numbere of quark flavours to include */ unsigned int _maxflavour; /** * Colour flow */ mutable unsigned int _flow; /** * Diagram */ mutable unsigned int _diagram; /** * Matrix element */ mutable ProductionMatrixElement _me; /** * ParticleData objects of the partons */ //@{ /** * The gluon */ PDPtr _gluon; /** * the quarks */ vector<PDPtr> _quark; /** * the antiquarks */ vector<PDPtr> _antiquark; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2QQ. */ template <> struct BaseClassTrait<Herwig::MEPP2QQ,1> { /** Typedef of the first base class of MEPP2QQ. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2QQ class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2QQ> : public ClassTraitsBase<Herwig::MEPP2QQ> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2QQ"; } /** * The name of a file containing the dynamic library where the class * MEPP2QQ is implemented. It may also include several, space-separated, * libraries if the class MEPP2QQ depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2QQ_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2QQHiggs.h���������������������������������������������0000644�0001750�0001750�00000023427�11754474776�023222� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEPP2QQHiggs_H #define HERWIG_MEPP2QQHiggs_H // // This is the declaration of the MEPP2QQHiggs class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/PDT/GenericMassGenerator.h" namespace Herwig { using namespace ThePEG; /** * The MEPP2QQHiggs class implements the matrix elements for * \f$gg\to Q \bar Q h^0\f$ and \f$q\bar q\to Q \bar Q h^0\f$. * * @see \ref MEPP2QQHiggsInterfaces "The interfaces" * defined for MEPP2QQHiggs. */ class MEPP2QQHiggs: public HwMEBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MEPP2QQHiggs(); //@} public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Set the typed and momenta of the incoming and outgoing partons to * be used in subsequent calls to me() and colourGeometries() * according to the associated XComb object. If the function is * overridden in a sub class the new function must call the base * class one first. */ virtual void setKinematics(); /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} protected: /** * Members to calculate the matrix elements */ //@{ /** * Matrix element for \f$gg\to Q\bar{Q}h^0\f$ * @param g1 The wavefunctions for the first incoming gluon * @param g2 The wavefunctions for the second incoming gluon * @param q The wavefunction for the outgoing quark * @param qbar The wavefunction for the outgoing antiquark * @param h The wavefunction for the outgoing Higgs boson * @param flow The colour flow */ double ggME(vector<VectorWaveFunction> &g1,vector<VectorWaveFunction> &g2, vector<SpinorBarWaveFunction> & q,vector<SpinorWaveFunction> & qbar, ScalarWaveFunction & h, unsigned int flow) const; /** * Matrix element for \f$q\bar{q}\to Q\bar{Q}h^0\f$ * @param q1 The wavefunction for the incoming quark * @param q2 The wavefunction for the incoming antiquark * @param q3 The wavefunction for the outgoing quark * @param q4 The wavefunction for the outgoing antiquark * @param h The wavefunction for the outgoing Higgs boson * @param flow The colour flow */ double qqME(vector<SpinorWaveFunction> & q1, vector<SpinorBarWaveFunction> & q2, vector<SpinorBarWaveFunction> & q3, vector<SpinorWaveFunction> & q4, ScalarWaveFunction & h, unsigned int flow) const; //@} /** * Generate the polar angle */ double getCosTheta(double ctmin, double ctmax, double r); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2QQHiggs> initMEPP2QQHiggs; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2QQHiggs & operator=(const MEPP2QQHiggs &); private: /** * Switches to control the subprocess */ //@{ /** * Quark Flavour */ unsigned int quarkFlavour_; /** * Processes to include */ unsigned int process_; //@} /** * Switches etc for the Higgs mass generation */ //@{ /** * Defines the Higgs resonance shape */ unsigned int shapeOpt_; /** * On-shell mass for the higgs */ Energy mh_; /** * On-shell width for the higgs */ Energy wh_; /** * The mass generator for the Higgs */ GenericMassGeneratorPtr hmass_; //@} /** * Vertices needed to compute the diagrams */ //@{ /** * \f$ggg\f$ vertex */ AbstractVVVVertexPtr GGGVertex_; /** * \f$q\bar{q}g\f$ vertex */ AbstractFFVVertexPtr QQGVertex_; /** * \f$q\bar q h^0\f$ vertex */ AbstractFFSVertexPtr QQHVertex_; //@} /** * ParticleData objects of the particles */ //@{ /** * The gluon */ PDPtr gluon_; /** * The Higgs boson */ PDPtr higgs_; /** * the quarks */ vector<PDPtr> quark_; /** * the antiquarks */ vector<PDPtr> antiquark_; //@} /** * Parameters for the phase-space generation */ //@{ /** * Power for the phase-space mapping */ double alpha_; //@} /** * Colour flow */ mutable unsigned int flow_; /** * Diagram */ mutable unsigned int diagram_; /** * Matrix element */ mutable ProductionMatrixElement me_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2QQHiggs. */ template <> struct BaseClassTrait<Herwig::MEPP2QQHiggs,1> { /** Typedef of the first base class of MEPP2QQHiggs. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2QQHiggs class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2QQHiggs> : public ClassTraitsBase<Herwig::MEPP2QQHiggs> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2QQHiggs"; } /** * The name of a file containing the dynamic library where the class * MEPP2QQHiggs is implemented. It may also include several, space-separated, * libraries if the class MEPP2QQHiggs depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2QQHiggs_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEqq2W2ff.cc�����������������������������������������������0000644�0001750�0001750�00000027214�11754474776�022761� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEqq2W2ff.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEqq2W2ff class. // #include "MEqq2W2ff.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" #include "Herwig++/MatrixElement/HardVertex.h" #include <cassert> using namespace Herwig; MEqq2W2ff::MEqq2W2ff() : _maxflavour(5), _plusminus(0), _process(0) { massOption(vector<unsigned int>(2,1)); } void MEqq2W2ff::doinit() { DrellYanBase::doinit(); _wp=getParticleData(ThePEG::ParticleID::Wplus); _wm=getParticleData(ThePEG::ParticleID::Wminus); // cast the SM pointer to the Herwig SM pointer tcHwSMPtr hwsm=ThePEG::dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(hwsm) _theFFWVertex = hwsm->vertexFFW(); else throw InitException() << "Must be the Herwig++ StandardModel class in " << "MEqq2W2ff::doinit" << Exception::abortnow; } void MEqq2W2ff::getDiagrams() const { // which intgermediates to include bool wplus =_plusminus==0||_plusminus==1; bool wminus=_plusminus==0||_plusminus==2; // possible incoming and outgoing particles typedef std::vector<pair<long,long> > Pairvector; // possible parents Pairvector parentpair; parentpair.reserve(6); // don't even think of putting 'break' in here! switch(_maxflavour) { case 5: parentpair.push_back(make_pair(ParticleID::b, ParticleID::cbar)); parentpair.push_back(make_pair(ParticleID::b, ParticleID::ubar)); case 4: parentpair.push_back(make_pair(ParticleID::s, ParticleID::cbar)); parentpair.push_back(make_pair(ParticleID::d, ParticleID::cbar)); case 3: parentpair.push_back(make_pair(ParticleID::s, ParticleID::ubar)); case 2: parentpair.push_back(make_pair(ParticleID::d, ParticleID::ubar)); default: ; } // possible children Pairvector childpair; childpair.reserve(9); childpair.push_back(make_pair(ParticleID::eminus, ParticleID::nu_ebar)); childpair.push_back(make_pair(ParticleID::muminus, ParticleID::nu_mubar)); childpair.push_back(make_pair(ParticleID::tauminus, ParticleID::nu_taubar)); childpair.push_back(make_pair(ParticleID::d, ParticleID::ubar)); childpair.push_back(make_pair(ParticleID::s, ParticleID::ubar)); childpair.push_back(make_pair(ParticleID::b, ParticleID::ubar)); childpair.push_back(make_pair(ParticleID::d, ParticleID::cbar)); childpair.push_back(make_pair(ParticleID::s, ParticleID::cbar)); childpair.push_back(make_pair(ParticleID::b, ParticleID::cbar)); // loop over the children bool lepton,quark; Pairvector::const_iterator child = childpair.begin(); for (; child != childpair.end(); ++child) { assert(child->first > 0 && child->second < 0); // allowed leptonic decay lepton = child->first > 10 && (_process==0 || _process==2 || (child->first - 5)/2 == int(_process)); // allowed quark decay quark = child->first < 10 && (_process==0 || _process==1 || (child->second == -2 && (child->first + 11)/2 == int(_process)) || (child->second == -4 && (child->first + 17)/2 == int(_process)) ); // if decay not allowed skip if(!(quark || lepton)) continue; // decay products tcPDPtr lNeg1 = getParticleData(child->first); tcPDPtr lNeg2 = getParticleData(child->second); tcPDPtr lPos1 = lNeg2->CC(); tcPDPtr lPos2 = lNeg1->CC(); Pairvector::const_iterator parent = parentpair.begin(); for (; parent != parentpair.end(); ++parent) { // parents tcPDPtr qNeg1 = getParticleData(parent->first); tcPDPtr qNeg2 = getParticleData(parent->second); tcPDPtr qPos1 = qNeg2->CC(); tcPDPtr qPos2 = qNeg1->CC(); // diagrams if(wminus) add(new_ptr((Tree2toNDiagram(2), qNeg1, qNeg2, 1, _wm, 3, lNeg1, 3, lNeg2, -1))); if(wplus) add(new_ptr((Tree2toNDiagram(2), qPos1, qPos2, 1, _wp, 3, lPos1, 3, lPos2, -2))); } } } Energy2 MEqq2W2ff::scale() const { return sHat(); } double MEqq2W2ff::me2() const { vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; SpinorWaveFunction q (meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction qbar(meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction f (meMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction fbar(meMomenta()[3],mePartonData()[3],outgoing); for(unsigned int ix=0;ix<2;++ix) { q.reset(ix) ; fin.push_back(q); qbar.reset(ix); ain.push_back(qbar); f.reset(ix) ;fout.push_back(f); fbar.reset(ix);aout.push_back(fbar); } return qqbarME(fin,ain,fout,aout,false); } unsigned int MEqq2W2ff::orderInAlphaS() const { return 0; } unsigned int MEqq2W2ff::orderInAlphaEW() const { return 2; } Selector<MEBase::DiagramIndex> MEqq2W2ff::diagrams(const DiagramVector &) const { Selector<DiagramIndex> sel; sel.insert(1.0, 0); return sel; } Selector<const ColourLines *> MEqq2W2ff::colourGeometries(tcDiagPtr) const { static const ColourLines c1("1 -2"); static const ColourLines c2("1 -2,4 -5"); Selector<const ColourLines *> sel; if(abs(mePartonData()[2]->id())<=6) sel.insert(1.0, &c2); else sel.insert(1.0, &c1); return sel; } void MEqq2W2ff::persistentOutput(PersistentOStream & os) const { os << _maxflavour << _plusminus << _process << _theFFWVertex << _wp << _wm; } void MEqq2W2ff::persistentInput(PersistentIStream & is, int) { is >> _maxflavour >> _plusminus >> _process >> _theFFWVertex >> _wp >> _wm; } ClassDescription<MEqq2W2ff> MEqq2W2ff::initMEqq2W2ff; // Definition of the static class description member. void MEqq2W2ff::Init() { static ClassDocumentation<MEqq2W2ff> documentation ("The MEqq2W2ff class implements the matrix element for" "q qbar to Standard Model fermions via W exchange using helicity amplitude" "techniques"); static Parameter<MEqq2W2ff,unsigned int> interfaceMaxFlavour ( "MaxFlavour", "The heaviest incoming quark flavour this matrix element is allowed to handle " "(if applicable).", &MEqq2W2ff::_maxflavour, 5, 0, 5, false, false, true); static Switch<MEqq2W2ff,unsigned int> interfacePlusMinus ("Wcharge", "Which intermediate W bosons to include", &MEqq2W2ff::_plusminus, 0, false, false); static SwitchOption interfacePlusMinusAll (interfacePlusMinus, "Both", "Include W+ and W-", 0); static SwitchOption interfacePlusMinusPlus (interfacePlusMinus, "Plus", "Only include W+", 1); static SwitchOption interfacePlusMinusMinus (interfacePlusMinus, "Minus", "Only include W-", 2); static Switch<MEqq2W2ff,unsigned int> interfaceProcess ("Process", "Which processes to include", &MEqq2W2ff::_process, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all SM fermions as outgoing particles", 0); static SwitchOption interfaceProcessQuarks (interfaceProcess, "Quarks", "Only include outgoing quarks", 1); static SwitchOption interfaceProcessLeptons (interfaceProcess, "Leptons", "All include outgoing leptons", 2); static SwitchOption interfaceProcessElectron (interfaceProcess, "Electron", "Only include outgoing e nu_e", 3); static SwitchOption interfaceProcessMuon (interfaceProcess, "Muon", "Only include outgoing mu nu_mu", 4); static SwitchOption interfaceProcessTau (interfaceProcess, "Tau", "Only include outgoing tauu nu_tau", 5); static SwitchOption interfaceProcessUpDown (interfaceProcess, "UpDown", "Only include outgoing u dbar/ d ubar", 6); static SwitchOption interfaceProcessUpStrange (interfaceProcess, "UpStrange", "Only include outgoing u sbar/ s ubar", 7); static SwitchOption interfaceProcessUpBottom (interfaceProcess, "UpBottom", "Only include outgoing u bbar/ b ubar", 8); static SwitchOption interfaceProcessCharmDown (interfaceProcess, "CharmDown", "Only include outgoing c dbar/ d cbar", 9); static SwitchOption interfaceProcessCharmStrange (interfaceProcess, "CharmStrange", "Only include outgoing c sbar/ s cbar", 10); static SwitchOption interfaceProcessCharmBottom (interfaceProcess, "CharmBottom", "Only include outgoing c bbar/ b cbar", 11); } double MEqq2W2ff::qqbarME(vector<SpinorWaveFunction> & fin , vector<SpinorBarWaveFunction> & ain , vector<SpinorBarWaveFunction> & fout, vector<SpinorWaveFunction> & aout, bool calc) const { // matrix element to be stored ProductionMatrixElement newme(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); // positive or negative W boson bool positive = mePartonData()[0]->iCharge() + mePartonData()[1]->iCharge() > 0; unsigned int ihel1,ihel2,ohel1,ohel2; // sum over helicities to get the matrix element double me = 0.; VectorWaveFunction inter; for(ihel1=0;ihel1<2;++ihel1) { for(ihel2=0;ihel2<2;++ihel2) { for(ohel1=0;ohel1<2;++ohel1) { for(ohel2=0;ohel2<2;++ohel2) { Complex diag = 0.0; if (positive) { // the Wp exchange inter = _theFFWVertex->evaluate(scale(),1,_wp,fin[ihel1],ain[ihel2]); diag = _theFFWVertex->evaluate(scale(),aout[ohel2],fout[ohel1],inter); } else { // the Wm exchange inter = _theFFWVertex->evaluate(scale(),1,_wm,fin[ihel1],ain[ihel2]); diag = _theFFWVertex->evaluate(scale(),aout[ohel2],fout[ohel1],inter); } // sum over helicities me += real(diag*conj(diag)); if(calc) newme(ihel1,ihel2,ohel1,ohel2) = diag; } } } } // results // spin and colour factor double colspin=1./12.; if(abs(fout[0].id())<=6) colspin*=3.; if(calc) _me.reset(newme); return me*colspin; } void MEqq2W2ff::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first);hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]);hard.push_back(sub->outgoing()[1]); // order of particles unsigned int order[4]={0,1,2,3}; if(hard[0]->id()<0){order[0]=1;order[1]=0;} if(hard[2]->id()<0){order[2]=3;order[3]=2;} vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; SpinorWaveFunction( fin ,hard[order[0]],incoming,false,true); SpinorBarWaveFunction(ain ,hard[order[1]],incoming,false,true); SpinorBarWaveFunction(fout,hard[order[2]],outgoing,true ,true); SpinorWaveFunction( aout,hard[order[3]],outgoing,true ,true); qqbarME(fin,ain,fout,aout,true); // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(_me); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) hard[order[ix]]->spinInfo()->productionVertex(hardvertex); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEqq2W2ff.h������������������������������������������������0000644�0001750�0001750�00000015667�11754474776�022634� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEqq2W2ff.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEqq2W2ff_H #define HERWIG_MEqq2W2ff_H // // This is the declaration of the MEqq2W2ff class. // #include "Herwig++/MatrixElement/DrellYanBase.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The MEqq2W2ff class implements the matrix element for \f$q\bar{q'}\to W^\pm\f$ * including the decay of the \f$W^\pm\f$ to Standard Model fermions. * * @see \ref MEqq2W2ffInterfaces "The interfaces" * defined for MEqq2W2ff. */ class MEqq2W2ff: public DrellYanBase { public: /** * The default constructor. */ MEqq2W2ff(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Matrix element for \f$q\bar{q}\to \gamma/Z \to f\bar{f}\f$. * @param fin Spinors for incoming quark * @param ain Spinors for incoming antiquark * @param fout Spinors for incoming quark * @param aout Spinors for incoming antiquark * @param me Whether or not to calculate the matrix element for spin correlations */ double qqbarME(vector<SpinorWaveFunction> & fin , vector<SpinorBarWaveFunction> & ain , vector<SpinorBarWaveFunction> & fout, vector<SpinorWaveFunction> & aout, bool me) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEqq2W2ff> initMEqq2W2ff; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEqq2W2ff & operator=(const MEqq2W2ff &); private: /** * Pointer to the W vertex */ AbstractFFVVertexPtr _theFFWVertex; /** * Pointers to the intermediates resonances */ //@{ /** * Pointer to the \f$W^+\f$ */ tcPDPtr _wp; /** * Pointer to the \f$W^-\f$ */ tcPDPtr _wm; //@} /** * Switches to control the particles in the hard process */ //@{ /** * The allowed flavours of the incoming quarks */ unsigned int _maxflavour; /** * Which intermediate \f$W^\pm\f$ bosons to include */ unsigned int _plusminus; /** * Which decay products of the \f$W^\pm\f$ to include */ unsigned int _process; //@} /** * Matrix element for spin correlations */ ProductionMatrixElement _me; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEqq2W2ff. */ template <> struct BaseClassTrait<Herwig::MEqq2W2ff,1> { /** Typedef of the first base class of MEqq2W2ff. */ typedef Herwig::DrellYanBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEqq2W2ff class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEqq2W2ff> : public ClassTraitsBase<Herwig::MEqq2W2ff> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEqq2W2ff"; } /** Return the name(s) of the shared library (or libraries) be loaded to get * access to the MEqq2W2ff class and any other class on which it depends * (except the base class). */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEqq2W2ff_H */ �������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEqq2gZ2ff.cc����������������������������������������������0000644�0001750�0001750�00000027122�11754474776�023131� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEqq2gZ2ff.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEqq2gZ2ff class. // #include "MEqq2gZ2ff.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/MatrixElement/HardVertex.h" using namespace Herwig; MEqq2gZ2ff::MEqq2gZ2ff() : _minflavour(1), _maxflavour(5), _gammaZ(0), _process(0) { massOption(vector<unsigned int>(2,1)); } void MEqq2gZ2ff::doinit() { DrellYanBase::doinit(); _z0=getParticleData(ThePEG::ParticleID::Z0); _gamma=getParticleData(ThePEG::ParticleID::gamma); // cast the SM pointer to the Herwig SM pointer tcHwSMPtr hwsm=ThePEG::dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(hwsm) { _theFFZVertex = hwsm->vertexFFZ(); _theFFPVertex = hwsm->vertexFFP(); } else throw InitException() << "Must be the Herwig++ StandardModel class in " << "MEqq2gZ2ff::doinit" << Exception::abortnow; } void MEqq2gZ2ff::getDiagrams() const { // which intermediates to include bool gamma = _gammaZ==0 || _gammaZ==1; bool Z0 = _gammaZ==0 || _gammaZ==2; // loop over the processes we need for ( int ix=1; ix<17; ++ix ) { // increment counter to switch between quarks and leptons if(ix==7) ix+=4; // is it a valid quark process bool quark = ix<=6 && (_process==0 || _process==1 || _process-10==ix); // is it a valid lepton process bool lepton= ix>=11 && ix<=16 && (_process==0 || _process==2 || (_process==3 && ix%2==1) || (_process==4 && ix%2==0) || (ix%2==0 && (ix-10)/2==_process-7) || (ix%2==1 && (ix-9)/2 ==_process-4) ); // if not a valid process continue if(!(quark||lepton)) continue; tcPDPtr lm = getParticleData(ix); tcPDPtr lp = lm->CC(); for(int i = _minflavour; i <= _maxflavour; ++i) { tcPDPtr q = getParticleData(i); tcPDPtr qb = q->CC(); if(Z0) add(new_ptr((Tree2toNDiagram(2), q, qb, 1, _z0 , 3, lm, 3, lp, -1))); if(gamma) add(new_ptr((Tree2toNDiagram(2), q, qb, 1, _gamma, 3, lm, 3, lp, -2))); } } } Energy2 MEqq2gZ2ff::scale() const { return sHat(); } double MEqq2gZ2ff::me2() const { vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; SpinorWaveFunction q(meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction qbar(meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction f(meMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction fbar(meMomenta()[3],mePartonData()[3],outgoing); for(unsigned int ix=0;ix<2;++ix) { q.reset(ix) ; fin.push_back(q); qbar.reset(ix); ain.push_back(qbar); f.reset(ix) ;fout.push_back(f); fbar.reset(ix);aout.push_back(fbar); } return qqbarME(fin,ain,fout,aout,false); } unsigned int MEqq2gZ2ff::orderInAlphaS() const { return 0; } unsigned int MEqq2gZ2ff::orderInAlphaEW() const { return 2; } Selector<MEBase::DiagramIndex> MEqq2gZ2ff::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if ( diags[i]->id() == -1 ) sel.insert(meInfo()[0], i); else if ( diags[i]->id() == -2 ) sel.insert(meInfo()[1], i); } return sel; } Selector<const ColourLines *> MEqq2gZ2ff::colourGeometries(tcDiagPtr) const { static const ColourLines c1("1 -2"); static const ColourLines c2("1 -2,4 -5"); Selector<const ColourLines *> sel; if(abs(mePartonData()[2]->id())<=6) sel.insert(1.0, &c2); else sel.insert(1.0, &c1); return sel; } void MEqq2gZ2ff::persistentOutput(PersistentOStream & os) const { os << _minflavour << _maxflavour << _gammaZ << _process << _theFFZVertex << _theFFPVertex << _gamma << _z0; } void MEqq2gZ2ff::persistentInput(PersistentIStream & is, int) { is >> _minflavour >> _maxflavour >> _gammaZ >> _process >> _theFFZVertex >> _theFFPVertex >> _gamma >> _z0; } ClassDescription<MEqq2gZ2ff> MEqq2gZ2ff::initMEqq2gZ2ff; // Definition of the static class description member. void MEqq2gZ2ff::Init() { static ClassDocumentation<MEqq2gZ2ff> documentation ("The MEqq2gZ2ff class implements the matrix element for" "q qbar to Standard Model fermions via Z and photon exchange using" " helicity amplitude techniques"); static Parameter<MEqq2gZ2ff,int> interfaceMaxFlavour ("MaxFlavour", "The maximum incoming quark flavour this matrix element is allowed to handle", &MEqq2gZ2ff::_maxflavour, 5, 1, 5, false, false, Interface::limited); static Parameter<MEqq2gZ2ff,int> interfaceMinFlavour ("MinFlavour", "The minimum incoming quark flavour this matrix element is allowed to handle", &MEqq2gZ2ff::_minflavour, 1, 1, 5, false, false, Interface::limited); static Switch<MEqq2gZ2ff,unsigned int> interfaceGammaZ ("GammaZ", "Which terms to include", &MEqq2gZ2ff::_gammaZ, 0, false, false); static SwitchOption interfaceGammaZAll (interfaceGammaZ, "All", "Include both gamma and Z terms", 0); static SwitchOption interfaceGammaZGamma (interfaceGammaZ, "Gamma", "Only include the photon", 1); static SwitchOption interfaceGammaZZ (interfaceGammaZ, "Z", "Only include the Z", 2); static Switch<MEqq2gZ2ff,int> interfaceProcess ("Process", "Which process to included", &MEqq2gZ2ff::_process, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all SM fermions as outgoing particles", 0); static SwitchOption interfaceProcessQuarks (interfaceProcess, "Quarks", "All include the quarks as outgoing particles", 1); static SwitchOption interfaceProcessLeptons (interfaceProcess, "Leptons", "Only include the leptons as outgoing particles", 2); static SwitchOption interfaceProcessChargedLeptons (interfaceProcess, "ChargedLeptons", "Only include the charged leptons as outgoing particles", 3); static SwitchOption interfaceProcessNeutrinos (interfaceProcess, "Neutrinos", "Only include the neutrinos as outgoing particles", 4); static SwitchOption interfaceProcessElectron (interfaceProcess, "Electron", "Only include e+e- as outgoing particles", 5); static SwitchOption interfaceProcessMuon (interfaceProcess, "Muon", "Only include mu+mu- as outgoing particles", 6); static SwitchOption interfaceProcessTau (interfaceProcess, "Tau", "Only include tau+tau- as outgoing particles", 7); static SwitchOption interfaceProcessNu_e (interfaceProcess, "Nu_e", "Only include nu_e ne_ebar as outgoing particles", 8); static SwitchOption interfaceProcessnu_mu (interfaceProcess, "Nu_mu", "Only include nu_mu nu_mubar as outgoing particles", 9); static SwitchOption interfaceProcessnu_tau (interfaceProcess, "Nu_tau", "Only include nu_tau nu_taubar as outgoing particles", 10); static SwitchOption interfaceProcessDown (interfaceProcess, "Down", "Only include d dbar as outgoing particles", 11); static SwitchOption interfaceProcessUp (interfaceProcess, "Up", "Only include u ubar as outgoing particles", 12); static SwitchOption interfaceProcessStrange (interfaceProcess, "Strange", "Only include s sbar as outgoing particles", 13); static SwitchOption interfaceProcessCharm (interfaceProcess, "Charm", "Only include c cbar as outgoing particles", 14); static SwitchOption interfaceProcessBottom (interfaceProcess, "Bottom", "Only include b bbar as outgoing particles", 15); static SwitchOption interfaceProcessTop (interfaceProcess, "Top", "Only include t tbar as outgoing particles", 16); } double MEqq2gZ2ff::qqbarME(vector<SpinorWaveFunction> & fin , vector<SpinorBarWaveFunction> & ain , vector<SpinorBarWaveFunction> & fout, vector<SpinorWaveFunction> & aout, bool calc) const { // scale Energy2 mb2(scale()); // matrix element to be stored ProductionMatrixElement menew(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half); // which intermediates to include bool gamma=_gammaZ==0||_gammaZ==1; bool Z0 =_gammaZ==0||_gammaZ==2; // declare the variables we need unsigned int ihel1,ihel2,ohel1,ohel2; VectorWaveFunction inter[2],test; double me[3]={0.,0.,0.}; Complex diag1,diag2; // sum over helicities to get the matrix element for(ihel1=0;ihel1<2;++ihel1) { for(ihel2=0;ihel2<2;++ihel2) { // intermediate for Z if(Z0) inter[0]=_theFFZVertex->evaluate(mb2,1,_z0 ,fin[ihel1],ain[ihel2]); // intermediate for photon if(gamma) inter[1]=_theFFPVertex->evaluate(mb2,1,_gamma,fin[ihel1],ain[ihel2]); for(ohel1=0;ohel1<2;++ohel1) { for(ohel2=0;ohel2<2;++ohel2) { // first the Z exchange diagram diag1 = Z0 ? _theFFZVertex->evaluate(mb2,aout[ohel2],fout[ohel1],inter[0]) : 0.; // first the photon exchange diagram diag2 = gamma ? _theFFPVertex->evaluate(mb2,aout[ohel2],fout[ohel1],inter[1]) : 0.; // add up squares of individual terms me[1] += real(diag1*conj(diag1)); me[2] += real(diag2*conj(diag2)); // the full thing including interference diag1 +=diag2; me[0] += real(diag1*conj(diag1)); if(calc) menew(ihel1,ihel2,ohel1,ohel2) = diag1; } } } } // spin and colour factor double colspin=1./12.; if(abs(fout[0].id())<=6) colspin*=3.; // results // factor 12 from 4 helicity and 3 colour for(int ix=0;ix<3;++ix){me[ix]*=colspin;} DVector save; save.push_back(me[1]); save.push_back(me[2]); meInfo(save); if(calc) _me.reset(menew); return me[0]; } void MEqq2gZ2ff::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first);hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]);hard.push_back(sub->outgoing()[1]); // order of particles unsigned int order[4]={0,1,2,3}; if(hard[0]->id()<0){order[0]=1;order[1]=0;} if(hard[2]->id()<0){order[2]=3;order[3]=2;} vector<SpinorWaveFunction> fin,aout; vector<SpinorBarWaveFunction> ain,fout; SpinorWaveFunction( fin ,hard[order[0]],incoming,false,true); SpinorBarWaveFunction(ain ,hard[order[1]],incoming,false,true); SpinorBarWaveFunction(fout,hard[order[2]],outgoing,true ,true); SpinorWaveFunction( aout,hard[order[3]],outgoing,true ,true); qqbarME(fin,ain,fout,aout,true); // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(_me); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) hard[order[ix]]->spinInfo()->productionVertex(hardvertex); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEQCD2to2Fast.h��������������������������������������������0000644�0001750�0001750�00000023373�11754474776�023331� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEQCD2to2Fast.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEQCD2to2Fast_H #define HERWIG_MEQCD2to2Fast_H // // This is the declaration of the MEQCD2to2Fast class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "ThePEG/Repository/UseRandom.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The MEQCD2to2Fast class implements the matrix elements for * QCD \f$2\to2\f$ scattering processes using hard coded formulae and * as such can not include spin correlations. It is designed to be a faster * replacement for MEQCD2to2 for use in the underlying event. * * @see \ref MEQCD2to2FastInterfaces "The interfaces" * defined for MEQCD2to2Fast. */ class MEQCD2to2Fast: public HwMEBase { public: /** * The default constructor. */ MEQCD2to2Fast() :_maxflavour(5),_process(0) { massOption(vector<unsigned int>(2,0)); } /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) 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(); protected: /** * Members to calculate the matrix elements */ //@{ /** * Matrix element for \f$gg\to gg\f$. */ double gg2ggME() const { Energy2 u(uHat()),t(tHat()),s(sHat()); double output = 9./4.*(3.-t*u/s/s-s*u/t/t-s*t/u/u); double flow[3]={(1.-u*t/s/s-s*t/u/u+t*t/s/u), (1.-t*u/s/s-s*u/t/t+u*u/s/t), (1.-t*s/u/u-u*s/t/t+s*s/u/t)}; _flow = 1+UseRandom::rnd3(flow[0],flow[1],flow[2]); double diag[3]={(sqr(u)+sqr(t))/sqr(s), (sqr(s)+sqr(u))/sqr(t), (sqr(s)+sqr(t))/sqr(u)}; if(_flow==1) diag[1]=0; else if(_flow==2) diag[2]=0; else if(_flow==3) diag[0]=0; _diagram=1+UseRandom::rnd3(diag[0],diag[1],diag[2]); return output; } /** * Matrix element for \f$gg\to q\bar{q}\f$ */ double gg2qqbarME() const { Energy2 u(uHat()),t(tHat()),s(sHat()); Energy4 u2(sqr(u)),t2(sqr(t)),s2(sqr(s)); double output =(1./6./u/t-3./8./s2)*(t2+u2); double flow[2]={u2/(u2+t2),t2/(u2+t2)}; _flow = 1+UseRandom::rnd2(flow[0],flow[1]); _diagram=3+_flow; return output; } /** * Matrix element for \f$q\bar{q}\to gg\f$ */ double qqbar2ggME() const { Energy2 u(uHat()),t(tHat()),s(sHat()); Energy4 s2(sqr(s)),u2(sqr(u)),t2(sqr(t)); double output = 0.5*(32./27./u/t-8./3./s2)*(t2+u2); double flow[2] = {u2/(u2+t2),t2/(t2+u2)}; _flow=1+UseRandom::rnd2(flow[0],flow[1]); _diagram=6+_flow; return output; } /** * Matrix element for \f$qg\to qg\f$ */ double qg2qgME() const { Energy2 u(uHat()),t(tHat()),s(sHat()); Energy4 s2(sqr(s)),u2(sqr(u)),t2(sqr(t)); double output = (-4./9./s/u+1./t2)*(s2+u2); double flow[2]={u2/(s2+u2),s2/(s2+u2)}; _flow=1+UseRandom::rnd2(flow[0],flow[1]); _diagram=9+_flow; return output; } /** * Matrix elements for \f$\bar{q}g\to \bar{q}g\f$. */ double qbarg2qbargME() const { // scale Energy2 u(uHat()),t(tHat()),s(sHat()); Energy4 u2(sqr(u)),s2(sqr(s)); // t2(sqr(t)) double flow[2]={u2/(s2+u2),s2/(s2+u2)}; _flow=1+UseRandom::rnd2(flow[0],flow[1]); _diagram=12+_flow; return (-4./9./s/u+1./t/t)*(s*s+u*u); } /** * Matrix element for \f$qq\to qq\f$ */ double qq2qqME() const { Energy2 u(uHat()),t(tHat()); Energy4 s2(sqr(sHat())),u2(sqr(u)),t2(sqr(t)); double output; if(mePartonData()[0]->id()==mePartonData()[1]->id()) { output = 0.5*(4./9.*((s2+u2)/t2+(s2+t2)/u2) -8./27.*s2/u/t); double flow[2]={(s2+u2)/t2,(s2+t2)/u2}; _flow=1+UseRandom::rnd2(flow[0],flow[1]); } else { output = 4./9.*(s2+u2)/t2; _flow=2; } _diagram = 15+_flow; return output; } /** * Matrix element for \f$\bar{q}\bar{q}\to \bar{q}\bar{q}\f$ */ double qbarqbar2qbarqbarME() const { Energy2 u(uHat()),t(tHat()); Energy4 u2(sqr(u)),t2(sqr(t)),s2(sqr(sHat())); double output; if(mePartonData()[0]->id()==mePartonData()[1]->id()) { output = 0.5*(4./9.*((s2+u2)/t2+(s2+t2)/u2) -8./27.*s2/u/t); double flow[2]={(s2+u2)/t2,(s2+t2)/u2}; _flow=1+UseRandom::rnd2(flow[0],flow[1]); } else { output = 4./9.*(s2+u2)/t2; _flow = 2; } _diagram = 17+_flow; // final part of colour and spin factors return output; } /** * Matrix element for \f$q\bar{q}\to q\bar{q}\f$ */ double qqbar2qqbarME() const { // type of process bool diagon[2]={mePartonData()[0]->id()== -mePartonData()[1]->id(), mePartonData()[0]->id()== mePartonData()[2]->id()}; // scale Energy2 u(uHat()),t(tHat()),s(sHat()); Energy4 s2(sqr(s)),t2(sqr(t)),u2(sqr(u)); double output; if(diagon[0]&&diagon[1]) { output= (4./9.*((s2+u2)/t2+(u2+t2)/s2) -8./27.*u2/s/t); double flow[2]={(t2+u2)/s2,(s2+u2)/t2}; _flow=1+UseRandom::rnd2(flow[0],flow[1]); } else if(diagon[0]) { output = (4./9.*(t2+u2)/s2); _flow=1; } else { output = (4./9.*(s2+u2)/t2); _flow=2; } _diagram=19+_flow; return output; } //@} 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEQCD2to2Fast> initMEQCD2to2Fast; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEQCD2to2Fast & operator=(const MEQCD2to2Fast &); private: /** * Maximum numbere of quark flavours to include */ unsigned int _maxflavour; /** * Processes to include */ unsigned int _process; /** * Colour flow */ mutable unsigned int _flow; /** * Diagram */ mutable unsigned int _diagram; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEQCD2to2Fast. */ template <> struct BaseClassTrait<Herwig::MEQCD2to2Fast,1> { /** Typedef of the first base class of MEQCD2to2Fast. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEQCD2to2Fast class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEQCD2to2Fast> : public ClassTraitsBase<Herwig::MEQCD2to2Fast> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEQCD2to2Fast"; } /** * The name of a file containing the dynamic library where the class * MEQCD2to2Fast is implemented. It may also include several, space-separated, * libraries if the class MEQCD2to2Fast depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadronFast.so"; } }; /** @endcond */ } #endif /* HERWIG_MEQCD2to2Fast_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2VV.h��������������������������������������������������0000644�0001750�0001750�00000017565�11754474776�022260� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEPP2VV_H #define HERWIG_MEPP2VV_H // // This is the declaration of the MEPP2VV class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" namespace Herwig { using namespace ThePEG; /** * The MEPP2VV class implements the production of \f$W^+W^-\f$, * \f$W^\pm Z^0\f$ and \f$Z^0Z^o\f$ in hadron-hadron collisions. * * @see \ref MEPP2VVInterfaces "The interfaces" * defined for MEPP2VV. */ class MEPP2VV: public HwMEBase { public: /** * The default constructor. */ MEPP2VV(); public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Return the process being run (WW/ZZ/WZ). */ virtual int process() const { return process_; } /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Used internally by generateKinematics, after calculating the * limits on cos(theta). */ virtual double getCosTheta(double cthmin, double cthmax, const double * r); /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Matrix element for \f$f\bar{f}\to W^+W^-\f$. * @param f1 Spinors for the incoming fermion * @param a1 Spinors for the incoming antifermion * @param v1 The first outgoing W polarization vectors * @param v2 The second outgoing W polarization vectors * @param me Whether or not to calculate the matrix element for spin correlations */ double WWME(vector<SpinorWaveFunction> & f1, vector<SpinorBarWaveFunction> & a1, vector<VectorWaveFunction> & v1, vector<VectorWaveFunction> & v2, bool me) const; /** * Matrix element for \f$f\bar{f}\to W^\pm Z^0\f$. * @param f1 Spinors for the incoming fermion * @param a1 Spinors for the incoming antifermion * @param v1 The outgoing W polarization vectors * @param v2 The outgoing Z polarization vectors * @param me Whether or not to calculate the matrix element for spin correlations */ double WZME(vector<SpinorWaveFunction> & f1, vector<SpinorBarWaveFunction> & a1, vector<VectorWaveFunction> & v1, vector<VectorWaveFunction> & v2, bool me) const; /** * Matrix element for \f$f\bar{f}\to Z^0Z^0\f$. * @param f1 Spinors for the incoming fermion * @param a1 Spinors for the incoming antifermion * @param v1 The first outgoing Z polarization vectors * @param v2 The second outgoing Z polarization vectors * @param me Whether or not to calculate the matrix element for spin correlations */ double ZZME(vector<SpinorWaveFunction> & f1, vector<SpinorBarWaveFunction> & a1, vector<VectorWaveFunction> & v1, vector<VectorWaveFunction> & v2, bool me) const; 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2VV> initMEPP2VV; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2VV & operator=(const MEPP2VV &); private: /** * Vertices */ //@{ /** * FFPVertex */ AbstractFFVVertexPtr FFPvertex_; /** * FFWVertex */ AbstractFFVVertexPtr FFWvertex_; /** * FFZVertex */ AbstractFFVVertexPtr FFZvertex_; /** * WWW Vertex */ AbstractVVVVertexPtr WWWvertex_; //@} /** * Processes */ unsigned int process_; /** * Allowed flavours of the incoming quarks */ int maxflavour_; /** * Treatment of the the boson masses */ unsigned int massOption_; /** * The matrix element */ mutable ProductionMatrixElement me_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2VV. */ template <> struct BaseClassTrait<Herwig::MEPP2VV,1> { /** Typedef of the first base class of MEPP2VV. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2VV class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2VV> : public ClassTraitsBase<Herwig::MEPP2VV> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2VV"; } /** * The name of a file containing the dynamic library where the class * MEPP2VV is implemented. It may also include several, space-separated, * libraries if the class MEPP2VV depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2VV_H */ �������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/Makefile.am������������������������������������������������0000644�0001750�0001750�00000001466�11755414653�023022� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwMEHadron.la HwMEHadron_la_SOURCES = \ MEqq2gZ2ff.cc MEqq2gZ2ff.h \ MEqq2W2ff.cc MEqq2W2ff.h \ MEPP2GammaJet.h MEPP2GammaJet.cc\ MEQCD2to2.h MEQCD2to2.cc\ MEPP2HiggsJet.h MEPP2HiggsJet.cc\ MEPP2GammaGamma.h MEPP2GammaGamma.cc \ MEPP2QQ.h MEPP2QQ.cc \ MEPP2QQHiggs.h MEPP2QQHiggs.cc \ MEPP2Higgs.h MEPP2Higgs.cc\ MEPP2WH.h MEPP2WH.cc \ MEPP2ZH.h MEPP2ZH.cc \ MEPP2WJet.cc MEPP2WJet.h \ MEPP2ZJet.cc MEPP2ZJet.h \ MEPP2VV.cc MEPP2VV.h \ MEPP2VGamma.cc MEPP2VGamma.h \ MEPP2HiggsVBF.cc MEPP2HiggsVBF.h \ MEMinBias.h MEMinBias.cc HwMEHadron_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 5:0:0 pkglib_LTLIBRARIES += HwMEHadronFast.la HwMEHadronFast_la_SOURCES = \ MEQCD2to2Fast.h MEQCD2to2Fast.cc HwMEHadronFast_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 3:0:0 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2VV.cc�������������������������������������������������0000644�0001750�0001750�00000042400�11754474776�022400� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2VV class. // #include "MEPP2VV.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/MatrixElement/HardVertex.h" using namespace Herwig; MEPP2VV::MEPP2VV() : process_(0), maxflavour_(5), massOption_(2) {} unsigned int MEPP2VV::orderInAlphaS() const { return 0; } unsigned int MEPP2VV::orderInAlphaEW() const { return 2; } ClassDescription<MEPP2VV> MEPP2VV::initMEPP2VV; // Definition of the static class description member. void MEPP2VV::Init() { static ClassDocumentation<MEPP2VV> documentation ("The MEPP2VV class simulates the production of W+W-, " "W+/-Z0 and Z0Z0 in hadron-hadron collisions using the 2->2" " matrix elements"); static Switch<MEPP2VV,unsigned int> interfaceProcess ("Process", "Which processes to include", &MEPP2VV::process_, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all the processes", 0); static SwitchOption interfaceProcessWW (interfaceProcess, "WW", "Only include W+W-", 1); static SwitchOption interfaceProcessWZ (interfaceProcess, "WZ", "Only include W+/-Z", 2); static SwitchOption interfaceProcessZZ (interfaceProcess, "ZZ", "Only include ZZ", 3); static SwitchOption interfaceProcessWpZ (interfaceProcess, "WpZ", "Only include W+ Z", 4); static SwitchOption interfaceProcessWmZ (interfaceProcess, "WmZ", "Only include W- Z", 5); static Parameter<MEPP2VV,int> interfaceMaximumFlavour ("MaximumFlavour", "The maximum flavour allowed for the incoming quarks", &MEPP2VV::maxflavour_, 5, 2, 5, false, false, Interface::limited); static Switch<MEPP2VV,unsigned int> interfaceMassOption ("MassOption", "Option for the treatment of the boson masses", &MEPP2VV::massOption_, 1, false, false); static SwitchOption interfaceMassOptionOnMassShell (interfaceMassOption, "OnMassShell", "The boson is produced on its mass shell", 1); static SwitchOption interfaceMassOption2 (interfaceMassOption, "OffShell", "The bosons are generated off-shell using the mass and width generator.", 2); } void MEPP2VV::persistentOutput(PersistentOStream & os) const { os << FFPvertex_ << FFWvertex_ << FFZvertex_ << WWWvertex_ << process_ << massOption_ << maxflavour_; } void MEPP2VV::persistentInput(PersistentIStream & is, int) { is >> FFPvertex_ >> FFWvertex_ >> FFZvertex_ >> WWWvertex_ >> process_ >> massOption_ >> maxflavour_; } Energy2 MEPP2VV::scale() const { return sHat(); } IBPtr MEPP2VV::clone() const { return new_ptr(*this); } IBPtr MEPP2VV::fullclone() const { return new_ptr(*this); } void MEPP2VV::doinit() { HwMEBase::doinit(); // mass option massOption(vector<unsigned int>(2,massOption_)); rescalingOption(2); // get the vertices we need // get a pointer to the standard model object in the run static const tcHwSMPtr hwsm = dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if (!hwsm) throw InitException() << "hwsm pointer is null in" << " MEPP2VV::doinit()" << Exception::abortnow; // get pointers to all required Vertex objects FFZvertex_ = hwsm->vertexFFZ(); FFPvertex_ = hwsm->vertexFFP(); WWWvertex_ = hwsm->vertexWWW(); FFWvertex_ = hwsm->vertexFFW(); } double MEPP2VV::getCosTheta(double ctmin, double ctmax, const double * r) { double rand = *r; Energy2 m12 = sqr(meMomenta()[2].mass()); Energy2 m22 = sqr(meMomenta()[3].mass()); Energy2 D1 = sHat()-m12-m22; Energy4 lambda = sqr(D1) - 4*m12*m22; double D = D1 / sqrt(lambda); if(mePartonData()[2]->id()==ParticleID::Z0&& mePartonData()[3]->id()==ParticleID::Z0) { double prob = 0.5; double costh; double fraction1 = (D-ctmax)/(D-ctmin); double fraction2 = (D+ctmin)/(D+ctmax); if(rand<=prob) { rand /=prob; costh = D - (D - ctmin) * pow(fraction1, rand); } else { rand = (rand-prob)/(1.-prob); costh =-D + (D + ctmax) * pow(fraction2, rand); } jacobian(1./(prob /((costh - D) * log(fraction1))- (1.-prob)/((costh + D) * log(fraction2)))); return costh; } else { double fraction = (D-ctmax)/(D-ctmin); double costh = D - (D - ctmin) * pow(fraction, rand); jacobian((costh - D) * log(fraction)); return costh; } } Selector<const ColourLines *> MEPP2VV::colourGeometries(tcDiagPtr diag) const { static ColourLines cs("1 -2"); static ColourLines ct("1 2 -3"); Selector<const ColourLines *> sel; if(abs(diag->partons()[2]->id())==24&&abs(diag->partons()[3]->id())==24) { if(diag->id()<=-4) sel.insert(1.0, &cs); else sel.insert(1.0, &ct); } else if(abs(diag->partons()[2]->id())==24&&diag->partons()[3]->id()==23) { if(diag->id()==-3) sel.insert(1.0, &cs); else sel.insert(1.0, &ct); } else { sel.insert(1.0, &ct); } return sel; } void MEPP2VV::getDiagrams() const { typedef std::vector<pair<tcPDPtr,tcPDPtr> > Pairvector; tcPDPtr wPlus = getParticleData(ParticleID::Wplus ); tcPDPtr wMinus = getParticleData(ParticleID::Wminus); tcPDPtr z0 = getParticleData(ParticleID::Z0 ); tcPDPtr gamma = getParticleData(ParticleID::gamma); // W+ W- if(process_==0||process_==1) { for(int ix=1;ix<=maxflavour_;++ix) { tcPDPtr qk = getParticleData(ix); tcPDPtr w1 = ix%2==0 ? wPlus : wMinus; tcPDPtr w2 = ix%2!=0 ? wPlus : wMinus; for(int iy=1;iy<=maxflavour_;++iy) { if(abs(ix-iy)%2!=0) continue; tcPDPtr qb = getParticleData(-iy); // s channel photon add(new_ptr((Tree2toNDiagram(2), qk, qb, 1, gamma, 3, w1, 3, w2, -4))); // s-channel Z add(new_ptr((Tree2toNDiagram(2), qk, qb, 1, z0, 3, w1, 3, w2, -5))); // t-channel if(ix%2==0) { int idiag=0; for(int iz=1;iz<=5;iz+=2) { --idiag; tcPDPtr tc = getParticleData(iz); add(new_ptr((Tree2toNDiagram(3), qk, tc, qb, 1, w1, 2, w2, idiag))); } } else { int idiag=0; for(int iz=2;iz<=6;iz+=2) { --idiag; tcPDPtr tc = getParticleData(iz); add(new_ptr((Tree2toNDiagram(3), qk, tc, qb, 1, w1, 2, w2, idiag))); } } } } } // W+/- Z if(process_==0||process_==2||process_==4||process_==5) { // possible parents Pairvector parentpair; parentpair.reserve(6); // don't even think of putting 'break' in here! switch(maxflavour_) { case 5: parentpair.push_back(make_pair(getParticleData(ParticleID::b), getParticleData(ParticleID::cbar))); parentpair.push_back(make_pair(getParticleData(ParticleID::b), getParticleData(ParticleID::ubar))); case 4: parentpair.push_back(make_pair(getParticleData(ParticleID::s), getParticleData(ParticleID::cbar))); parentpair.push_back(make_pair(getParticleData(ParticleID::d), getParticleData(ParticleID::cbar))); case 3: parentpair.push_back(make_pair(getParticleData(ParticleID::s), getParticleData(ParticleID::ubar))); case 2: parentpair.push_back(make_pair(getParticleData(ParticleID::d), getParticleData(ParticleID::ubar))); default: ; } // W+ Z if(process_==0||process_==2||process_==4) { for(unsigned int ix=0;ix<parentpair.size();++ix) { add(new_ptr((Tree2toNDiagram(3), parentpair[ix].second->CC(), parentpair[ix].first, parentpair[ix].first->CC(), 1, wPlus, 2, z0, -1))); add(new_ptr((Tree2toNDiagram(3), parentpair[ix].second->CC(), parentpair[ix].second->CC() , parentpair[ix].first->CC(), 2, wPlus, 1, z0, -2))); add(new_ptr((Tree2toNDiagram(2), parentpair[ix].second->CC(), parentpair[ix].first->CC(), 1, wPlus, 3, wPlus, 3, z0, -3))); } } // W- Z if(process_==0||process_==2||process_==5) { for(unsigned int ix=0;ix<parentpair.size();++ix) { add(new_ptr((Tree2toNDiagram(3), parentpair[ix].first, parentpair[ix].second->CC(), parentpair[ix].second, 1, wMinus, 2, z0, -1))); add(new_ptr((Tree2toNDiagram(3), parentpair[ix].first, parentpair[ix].first , parentpair[ix].second, 2, wMinus, 1, z0, -2))); add(new_ptr((Tree2toNDiagram(2), parentpair[ix].first, parentpair[ix].second, 1, wMinus, 3, wMinus, 3, z0, -3))); } } } // Z Z if(process_==0||process_==3) { for(int ix=1;ix<=maxflavour_;++ix) { tcPDPtr qk = getParticleData(ix); tcPDPtr qb = qk->CC(); add(new_ptr((Tree2toNDiagram(3), qk, qk, qb, 1, z0, 2, z0, -1))); add(new_ptr((Tree2toNDiagram(3), qk, qk, qb, 2, z0, 1, z0, -2))); } } } Selector<MEBase::DiagramIndex> MEPP2VV::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) sel.insert(meInfo()[abs(diags[i]->id())-1], i); return sel; } double MEPP2VV::me2() const { // setup momenta and particle data for the external wavefunctions // incoming SpinorWaveFunction em_in( meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction ep_in( meMomenta()[1],mePartonData()[1],incoming); // outgoing VectorWaveFunction v1_out(meMomenta()[2],mePartonData()[2],outgoing); VectorWaveFunction v2_out(meMomenta()[3],mePartonData()[3],outgoing); vector<SpinorWaveFunction> f1; vector<SpinorBarWaveFunction> a1; vector<VectorWaveFunction> v1,v2; // calculate the wavefunctions for(unsigned int ix=0;ix<3;++ix) { if(ix<2) { em_in.reset(ix); f1.push_back(em_in); ep_in.reset(ix); a1.push_back(ep_in); } v1_out.reset(ix); v1.push_back(v1_out); v2_out.reset(ix); v2.push_back(v2_out); } if(mePartonData()[2]->id()==ParticleID::Z0&& mePartonData()[3]->id()==ParticleID::Z0) { return ZZME(f1,a1,v1,v2,false); } else if(abs(mePartonData()[2]->id())==ParticleID::Wplus&& abs(mePartonData()[3]->id())==ParticleID::Wplus) { return WWME(f1,a1,v1,v2,false); } else { return WZME(f1,a1,v1,v2,false); } } double MEPP2VV::WWME(vector<SpinorWaveFunction> & f1, vector<SpinorBarWaveFunction> & a1, vector<VectorWaveFunction> & v1, vector<VectorWaveFunction> & v2, bool calc) const { double output(0.); vector<double> me(5,0.0); if(calc) me_.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1)); // particle data for the t-channel intermediate tcPDPtr tc[3]; if(f1[0].particle()->id()%2==0) { for (int ix=0;ix<3;++ix) tc[ix] = getParticleData(1+2*ix); } else { for (int ix=0;ix<3;++ix) tc[ix] = getParticleData(2+2*ix); } tcPDPtr gamma = getParticleData(ParticleID::gamma); tcPDPtr z0 = getParticleData(ParticleID::Z0); vector<Complex> diag(5,0.0); VectorWaveFunction interP,interZ; bool sChannel = f1[0].particle()->id() == -a1[0].particle()->id(); for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { if(sChannel) { interP = FFPvertex_->evaluate(scale(),3,gamma,f1[ihel1],a1[ihel2]); interZ = FFZvertex_->evaluate(scale(),3,z0 ,f1[ihel1],a1[ihel2]); } for(unsigned int ohel1=0;ohel1<3;++ohel1) { for(unsigned int ohel2=0;ohel2<3;++ohel2) { // s-channel photon diag[3] = sChannel ? WWWvertex_->evaluate(scale(),interP,v2[ohel2],v1[ohel1]) : 0.; // s-channel Z0 diag[4] = sChannel ? WWWvertex_->evaluate(scale(),interZ,v2[ohel2],v1[ohel1]) : 0.; // t-channel for(unsigned int ix=0;ix<3;++ix) { SpinorWaveFunction inter = FFWvertex_->evaluate(scale(),5,tc[ix],f1[ihel1],v1[ohel1]); diag[ix] = FFWvertex_->evaluate(scale(),inter,a1[ihel2],v2[ohel2]); } // individual diagrams for (size_t ii=0; ii<5; ++ii) me[ii] += std::norm(diag[ii]); // full matrix element diag[0] += diag[1]+diag[2]+diag[3]+diag[4]; output += std::norm(diag[0]); // storage of the matrix element for spin correlations if(calc) me_(ihel1,ihel2,ohel1,ohel2) = diag[0]; } } } } DVector save(5); for (size_t i = 0; i < 5; ++i) { save[i] = 0.25 * me[i]; } meInfo(save); return 0.25*output/3.; } double MEPP2VV::WZME(vector<SpinorWaveFunction> & f1, vector<SpinorBarWaveFunction> & a1, vector<VectorWaveFunction> & v1, vector<VectorWaveFunction> & v2, bool calc) const { double output(0.); vector<double> me(5,0.0); if(calc) me_.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1)); vector<Complex> diag(3,0.0); SpinorWaveFunction inter; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { VectorWaveFunction interW = FFWvertex_->evaluate(scale(),3,v1[0].particle(), f1[ihel1],a1[ihel2]); for(unsigned int ohel1=0;ohel1<3;++ohel1) { for(unsigned int ohel2=0;ohel2<3;++ohel2) { // t-channel diagrams inter = FFWvertex_->evaluate(scale(),5,a1[ihel1].particle(), f1[ihel1],v1[ohel1]); diag[0] = FFZvertex_->evaluate(scale(),inter,a1[ihel2],v2[ohel2]); inter = FFZvertex_->evaluate(scale(),5,f1[ihel1].particle(), f1[ihel1] ,v2[ohel2]); diag[1] = FFWvertex_->evaluate(scale(),inter,a1[ihel2],v1[ohel1]); // s-channel diagram diag[2] = WWWvertex_->evaluate(scale(),interW,v1[ohel1],v2[ohel2]); // individual diagrams for (size_t ii=0; ii<3; ++ii) me[ii] += std::norm(diag[ii]); // full matrix element diag[0] += diag[1]+diag[2]; output += std::norm(diag[0]); // storage of the matrix element for spin correlations if(calc) me_(ihel1,ihel2,ohel1,ohel2) = diag[0]; } } } } DVector save(5); for (size_t i = 0; i < 5; ++i) { save[i] = 0.25 * me[i]; } meInfo(save); return 0.25*output/3.; } double MEPP2VV::ZZME(vector<SpinorWaveFunction> & f1, vector<SpinorBarWaveFunction> & a1, vector<VectorWaveFunction> & v1, vector<VectorWaveFunction> & v2, bool calc) const { double output(0.); vector<double> me(5,0.0); if(calc) me_.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1)); vector<Complex> diag(2,0.0); SpinorWaveFunction inter; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<3;++ohel1) { for(unsigned int ohel2=0;ohel2<3;++ohel2) { inter = FFZvertex_->evaluate(scale(),5,f1[ihel1].particle(), f1[ihel1],v1[ohel1]); diag[0] = FFZvertex_->evaluate(scale(),inter,a1[ihel2],v2[ohel2]); inter = FFZvertex_->evaluate(scale(),5,f1[ihel1].particle(), f1[ihel1] ,v2[ohel2]); diag[1] = FFZvertex_->evaluate(scale(),inter,a1[ihel2],v1[ohel1]); // individual diagrams for (size_t ii=0; ii<2; ++ii) me[ii] += std::norm(diag[ii]); // full matrix element diag[0] += diag[1]; output += std::norm(diag[0]); // storage of the matrix element for spin correlations if(calc) me_(ihel1,ihel2,ohel1,ohel2) = diag[0]; } } } } // identical particle factor output /= 2.; DVector save(5); for (size_t i = 0; i < 5; ++i) { save[i] = 0.25 * me[i]; } meInfo(save); return 0.25*output/3.; } void MEPP2VV::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); hard.push_back(sub->outgoing()[1]); // order of particles unsigned int order[4]={0,1,2,3}; if(hard[order[0]]->id()<0) swap(order[0],order[1]); vector<SpinorWaveFunction> q; vector<SpinorBarWaveFunction> qb; SpinorWaveFunction (q ,hard[order[0]],incoming,false); SpinorBarWaveFunction(qb,hard[order[1]],incoming,false); vector<VectorWaveFunction> w1,w2; // q qbar -> Z Z if(hard[order[2]]->id()==ParticleID::Z0&& hard[order[3]]->id()==ParticleID::Z0) { VectorWaveFunction (w1,hard[order[2]],outgoing,true ,false); VectorWaveFunction (w2,hard[order[3]],outgoing,true ,false); ZZME(q,qb,w1,w2,true); } // q qbar -> W W else if(abs(hard[order[2]]->id())==ParticleID::Wplus&& abs(hard[order[3]]->id())==ParticleID::Wplus) { if((hard[order[0]]->id()%2==1&&hard[order[2]]->id()==ParticleID::Wplus)|| (hard[order[0]]->id()%2==0&&hard[order[2]]->id()==ParticleID::Wminus)) swap(order[2],order[3]); VectorWaveFunction (w1,hard[order[2]],outgoing,true ,false); VectorWaveFunction (w2,hard[order[3]],outgoing,true ,false); WWME(q,qb,w1,w2,true); } // q qbar -> W Z else { if(abs(hard[order[2]]->id())!=ParticleID::Wplus) swap(order[2],order[3]); VectorWaveFunction (w1,hard[order[2]],outgoing,true ,false); VectorWaveFunction (w2,hard[order[3]],outgoing,true ,false); WZME(q,qb,w1,w2,true); } // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(me_); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) hard[order[ix]]->spinInfo()->productionVertex(hardvertex); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEQCD2to2.cc�����������������������������������������������0000644�0001750�0001750�00000125754�11754474776�022657� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEQCD2to2.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEQCD2to2 class. // #include "MEQCD2to2.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Cuts/Cuts.h" #include "Herwig++/MatrixElement/HardVertex.h" using namespace Herwig;MEQCD2to2::MEQCD2to2():_maxflavour(5),_process(0) { massOption(vector<unsigned int>(2,0)); } void MEQCD2to2::rebind(const TranslationMap & trans) { _ggggvertex = trans.translate(_ggggvertex); _gggvertex = trans.translate( _gggvertex); _qqgvertex = trans.translate( _qqgvertex); _gluon = trans.translate( _gluon); for(unsigned int ix=0;ix<_quark.size();++ix) {_quark[ix]=trans.translate(_quark[ix]);} for(unsigned int ix=0;ix<_antiquark.size();++ix) {_antiquark[ix]=trans.translate(_quark[ix]);} HwMEBase::rebind(trans); } IVector MEQCD2to2::getReferences() { IVector ret = HwMEBase::getReferences(); ret.push_back(_ggggvertex); ret.push_back(_gggvertex); ret.push_back(_qqgvertex); ret.push_back(_gluon); for(unsigned int ix=0;ix<_quark.size();++ix) {ret.push_back(_quark[ix]);} for(unsigned int ix=0;ix<_antiquark.size();++ix) {ret.push_back(_antiquark[ix]);} return ret; } void MEQCD2to2::doinit() { // call the base class HwMEBase::doinit(); // get the vedrtex pointers from the SM object tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(hwsm) { _qqgvertex = hwsm->vertexFFG(); _gggvertex = hwsm->vertexGGG(); _ggggvertex = hwsm->vertexGGGG(); } else throw InitException() << "Wrong type of StandardModel object in " << "MEQCD2to2::doinit() the Herwig++ version must be used" << Exception::runerror; // get the particle data objects _gluon=getParticleData(ParticleID::g); for(int ix=1;ix<=int(_maxflavour);++ix) { _quark.push_back( getParticleData( ix)); _antiquark.push_back(getParticleData(-ix)); } } Energy2 MEQCD2to2::scale() const { Energy2 s(sHat()),u(uHat()),t(tHat()); return 2.*s*t*u/(s*s+t*t+u*u); } void MEQCD2to2::persistentOutput(PersistentOStream & os) const { os << _ggggvertex << _gggvertex << _qqgvertex << _maxflavour << _process << _gluon << _quark << _antiquark; } void MEQCD2to2::persistentInput(PersistentIStream & is, int) { is >> _ggggvertex >> _gggvertex >> _qqgvertex >> _maxflavour >> _process >> _gluon >> _quark >> _antiquark; } unsigned int MEQCD2to2::orderInAlphaS() const { return 2; } unsigned int MEQCD2to2::orderInAlphaEW() const { return 0; } ClassDescription<MEQCD2to2> MEQCD2to2::initMEQCD2to2; // Definition of the static class description member. void MEQCD2to2::Init() { static ClassDocumentation<MEQCD2to2> documentation ("The MEQCD2to2 class implements the QCD 2->2 processes in hadron-hadron" " collisions"); static Parameter<MEQCD2to2,unsigned int> interfaceMaximumFlavour ("MaximumFlavour", "The maximum flavour of the quarks in the process", &MEQCD2to2::_maxflavour, 5, 1, 5, false, false, Interface::limited); static Switch<MEQCD2to2,unsigned int> interfaceProcess ("Process", "Which subprocesses to include", &MEQCD2to2::_process, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all subprocesses", 0); static SwitchOption interfaceProcess1 (interfaceProcess, "gg2gg", "Include only gg->gg subprocesses", 1); static SwitchOption interfaceProcess2 (interfaceProcess, "gg2qqbar", "Include only gg -> q qbar processes", 2); static SwitchOption interfaceProcessqqbargg (interfaceProcess, "qqbar2gg", "Include only q qbar -> gg processes", 3); static SwitchOption interfaceProcessqgqg (interfaceProcess, "qg2qg", "Include only q g -> q g processes", 4); static SwitchOption interfaceProcessqbargqbarg (interfaceProcess, "qbarg2qbarg", "Include only qbar g -> qbar g processes", 5); static SwitchOption interfaceProcessqqqq (interfaceProcess, "qq2qq", "Include only q q -> q q processes", 6); static SwitchOption interfaceProcessqbarqbarqbarqbar (interfaceProcess, "qbarqbar2qbarqbar", "Include only qbar qbar -> qbar qbar processes", 7); static SwitchOption interfaceProcessqqbarqqbar (interfaceProcess, "qqbar2qqbar", "Include only q qbar -> q qbar processes", 8); } Selector<MEBase::DiagramIndex> MEQCD2to2::diagrams(const DiagramVector & diags) const { // select the diagram, this is easy for us as we have already done it Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if(diags[i]->id()==-int(_diagram)) sel.insert(1.0, i); else sel.insert(0., i); } return sel; } double MEQCD2to2::gg2qqbarME(vector<VectorWaveFunction> &g1, vector<VectorWaveFunction> &g2, vector<SpinorBarWaveFunction> & q, vector<SpinorWaveFunction> & qbar, unsigned int iflow) const { // scale Energy2 mt(scale()); // matrix element to be stored if(iflow!=0) _me.reset(ProductionMatrixElement(PDT::Spin1,PDT::Spin1, PDT::Spin1Half,PDT::Spin1Half)); // calculate the matrix element double output(0.),sumdiag[3]={0.,0.,0.},sumflow[2]={0.,0.}; Complex diag[3],flow[2]; VectorWaveFunction interv; SpinorWaveFunction inters; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { interv=_gggvertex->evaluate(mt,5,_gluon,g1[ihel1],g2[ihel2]); for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { //first t-channel diagram inters =_qqgvertex->evaluate(mt,5,qbar[ohel2].particle(), qbar[ohel2],g2[ihel2]); diag[0]=_qqgvertex->evaluate(mt,inters,q[ohel1],g1[ihel1]); //second t-channel diagram inters =_qqgvertex->evaluate(mt,5,qbar[ohel2].particle(), qbar[ohel2],g1[ihel1]); diag[1]=_qqgvertex->evaluate(mt,inters,q[ohel1],g2[ihel2]); // s-channel diagram diag[2]=_qqgvertex->evaluate(mt,qbar[ohel2],q[ohel1],interv); // colour flows flow[0]=diag[0]+diag[2]; flow[1]=diag[1]-diag[2]; // sums for(unsigned int ix=0;ix<3;++ix) sumdiag[ix] += norm(diag[ix]); for(unsigned int ix=0;ix<2;++ix) sumflow[ix] += norm(flow[ix]); // total output +=real(flow[0]*conj(flow[0])+flow[1]*conj(flow[1]) -0.25*flow[0]*conj(flow[1])); // store the me if needed if(iflow!=0) _me(2*ihel1,2*ihel2,ohel1,ohel2)=flow[iflow-1]; } } } } // test code vs me from ESW //Energy2 u(uHat()),t(tHat()),s(sHat()); //double alphas(4.*pi*SM().alphaS(mt)); //cerr << "testing matrix element " // << 48.*(1./6./u/t-3./8./s/s)*(t*t+u*u)*sqr(alphas)/output << endl; // select a colour flow _flow=1+UseRandom::rnd2(sumflow[0],sumflow[1]); // select a diagram ensuring it is one of those in the selected colour flow sumdiag[_flow%2]=0.; _diagram=4+UseRandom::rnd3(sumdiag[0],sumdiag[1],sumdiag[2]); // final part of colour and spin factors return output/48.; } double MEQCD2to2::qqbar2ggME(vector<SpinorWaveFunction> & q, vector<SpinorBarWaveFunction> & qbar, vector<VectorWaveFunction> &g1, vector<VectorWaveFunction> &g2, unsigned int iflow) const { // scale Energy2 mt(scale()); // matrix element to be stored if(iflow!=0) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1)); // calculate the matrix element double output(0.),sumdiag[3]={0.,0.,0.},sumflow[2]={0.,0.}; Complex diag[3],flow[2]; VectorWaveFunction interv; SpinorWaveFunction inters; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { interv=_qqgvertex->evaluate(mt,5,_gluon,q[ihel1],qbar[ihel2]); for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // first t-channel diagram inters=_qqgvertex->evaluate(mt,5,q[ihel1].particle()->CC(), q[ihel1],g1[ohel1]); diag[0]=_qqgvertex->evaluate(mt,inters,qbar[ihel2],g2[ohel2]); // second t-channel diagram inters=_qqgvertex->evaluate(mt,5,q[ihel1].particle()->CC(), q[ihel1],g2[ohel2]); diag[1]=_qqgvertex->evaluate(mt,inters,qbar[ihel2],g1[ohel1]); // s-channel diagram diag[2]=_gggvertex->evaluate(mt,g1[ohel1],g2[ohel2],interv); // colour flows flow[0]=diag[0]-diag[2]; flow[1]=diag[1]+diag[2]; // sums for(unsigned int ix=0;ix<3;++ix) sumdiag[ix] += norm(diag[ix]); for(unsigned int ix=0;ix<2;++ix) sumflow[ix] += norm(flow[ix]); // total output +=real(flow[0]*conj(flow[0])+flow[1]*conj(flow[1]) -0.25*flow[0]*conj(flow[1])); // store the me if needed if(iflow!=0) _me(ihel1,ihel2,2*ohel1,2*ohel2)=flow[iflow-1]; } } } } // test code vs me from ESW //Energy2 u(uHat()),t(tHat()),s(sHat()); //double alphas(4.*pi*SM().alphaS(mt)); //cerr << "testing matrix element " // << 27./2.*0.5*(32./27./u/t-8./3./s/s)*(t*t+u*u)*sqr(alphas)/output << endl; //select a colour flow _flow=1+UseRandom::rnd2(sumflow[0],sumflow[1]); // select a diagram ensuring it is one of those in the selected colour flow sumdiag[_flow%2]=0.; _diagram=7+UseRandom::rnd3(sumdiag[0],sumdiag[1],sumdiag[2]); // final part of colour and spin factors return 2.*output/27.; } double MEQCD2to2::qg2qgME(vector<SpinorWaveFunction> & qin, vector<VectorWaveFunction> &g2, vector<SpinorBarWaveFunction> & qout, vector<VectorWaveFunction> &g4, unsigned int iflow) const { // scale Energy2 mt(scale()); // matrix element to be stored if(iflow!=0) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1, PDT::Spin1Half,PDT::Spin1)); // calculate the matrix element double output(0.),sumdiag[3]={0.,0.,0.},sumflow[2]={0.,0.}; Complex diag[3],flow[2]; VectorWaveFunction interv; SpinorWaveFunction inters,inters2; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { inters=_qqgvertex->evaluate(mt,5,qin[ihel1].particle()->CC(), qin[ihel1],g2[ihel2]); for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // s-channel diagram diag[0]=_qqgvertex->evaluate(mt,inters,qout[ohel1],g4[ohel2]); // first t-channel inters2=_qqgvertex->evaluate(mt,5,qin[ihel1].particle()->CC(), qin[ihel1],g4[ohel2]); diag[1]=_qqgvertex->evaluate(mt,inters2,qout[ohel1],g2[ihel2]); // second t-channel interv=_qqgvertex->evaluate(mt,5,_gluon,qin[ihel1],qout[ohel1]); diag[2]=_gggvertex->evaluate(mt,g2[ihel2],g4[ohel2],interv); // colour flows flow[0]=diag[0]-diag[2]; flow[1]=diag[1]+diag[2]; // sums for(unsigned int ix=0;ix<3;++ix) sumdiag[ix] += norm(diag[ix]); for(unsigned int ix=0;ix<2;++ix) sumflow[ix] += norm(flow[ix]); // total output +=real(flow[0]*conj(flow[0])+flow[1]*conj(flow[1]) -0.25*flow[0]*conj(flow[1])); // store the me if needed if(iflow!=0) _me(ihel1,2*ihel2,ohel1,2*ohel2)=flow[iflow-1]; } } } } // test code vs me from ESW //Energy2 u(uHat()),t(tHat()),s(sHat()); //double alphas(4.*pi*SM().alphaS(mt)); //cerr << "testing matrix element " // << 18./output*(-4./9./s/u+1./t/t)*(s*s+u*u)*sqr(alphas) << endl; //select a colour flow _flow=1+UseRandom::rnd2(sumflow[0],sumflow[1]); // select a diagram ensuring it is one of those in the selected colour flow sumdiag[_flow%2]=0.; _diagram=10+UseRandom::rnd3(sumdiag[0],sumdiag[1],sumdiag[2]); // final part of colour and spin factors return output/18.; } double MEQCD2to2::gg2ggME(vector<VectorWaveFunction> &g1,vector<VectorWaveFunction> &g2, vector<VectorWaveFunction> &g3,vector<VectorWaveFunction> &g4, unsigned int iflow) const { // colour factors for different flows static const double c1 = 4.*( sqr(9.)/8.-3.*9./8.+1.-0.75/9.); static const double c2 = 4.*(-0.25*9. +1.-0.75/9.); // scale Energy2 mt(scale()); // // matrix element to be stored if(iflow!=0) _me.reset(ProductionMatrixElement(PDT::Spin1,PDT::Spin1, PDT::Spin1,PDT::Spin1)); // calculate the matrix element double output(0.),sumdiag[3]={0.,0.,0.},sumflow[3]={0.,0.,0.}; Complex diag[3],flow[3]; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // s-channel diagram diag[0]=_ggggvertex->evaluate(mt,1,g3[ohel1],g1[ihel1], g4[ohel2],g2[ihel2]); // t-channel diag[1]=_ggggvertex->evaluate(mt,1,g1[ihel1],g2[ihel2], g3[ohel1],g4[ohel2]); // u-channel diag[2]=_ggggvertex->evaluate(mt,1,g2[ihel2],g1[ihel1], g3[ohel1],g4[ohel2]); // colour flows flow[0] = diag[0]-diag[2]; flow[1] = -diag[0]-diag[1]; flow[2] = diag[1]+diag[2]; // sums for(unsigned int ix=0;ix<3;++ix) { sumdiag[ix] += norm(diag[ix]); sumflow[ix] += norm(flow[ix]); } // total output += c1*(norm(flow[0])+norm(flow[1])+norm(flow[2])) +2.*c2*real(flow[0]*conj(flow[1])+flow[0]*conj(flow[2])+ flow[1]*conj(flow[2])); // store the me if needed if(iflow!=0) _me(2*ihel1,2*ihel2,2*ohel1,2*ohel2)=flow[iflow-1]; } } } } // spin, colour and identical particle factorsxs output /= 4.*64.*2.; // test code vs me from ESW // Energy2 u(uHat()),t(tHat()),s(sHat()); // using Constants::pi; // double alphas(4.*pi*SM().alphaS(mt)); // cerr << "testing matrix element " // << 1./output*9./4.*(3.-t*u/s/s-s*u/t/t-s*t/u/u)*sqr(alphas) << endl; // select a colour flow _flow=1+UseRandom::rnd3(sumflow[0],sumflow[1],sumflow[2]); // and diagram if(_flow==1) _diagram = 1+2*UseRandom::rnd2(sumdiag[0],sumdiag[2]); else if(_flow==2) _diagram = 1+ UseRandom::rnd2(sumdiag[0],sumdiag[1]); else if(_flow==3) _diagram = 2+ UseRandom::rnd2(sumdiag[1],sumdiag[2]); // final part of colour and spin factors return output; } double MEQCD2to2::qbarg2qbargME(vector<SpinorBarWaveFunction> & qin, vector<VectorWaveFunction> &g2, vector<SpinorWaveFunction> & qout, vector<VectorWaveFunction> &g4, unsigned int iflow) const { // scale Energy2 mt(scale()); // matrix element to be stored if(iflow!=0) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1, PDT::Spin1Half,PDT::Spin1)); // calculate the matrix element double output(0.),sumdiag[3]={0.,0.,0.},sumflow[2]={0.,0.}; Complex diag[3],flow[2]; VectorWaveFunction interv; SpinorBarWaveFunction inters,inters2; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { inters=_qqgvertex->evaluate(mt,5,qin[ihel1].particle()->CC(), qin[ihel1],g2[ihel2]); for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // s-channel diagram diag[0]=_qqgvertex->evaluate(mt,qout[ohel1],inters,g4[ohel2]); // first t-channel inters2=_qqgvertex->evaluate(mt,5,qin[ihel1].particle()->CC(), qin[ihel1],g4[ohel2]); diag[1]=_qqgvertex->evaluate(mt,qout[ohel1],inters2,g2[ihel2]); // second t-channel interv=_qqgvertex->evaluate(mt,5,_gluon,qout[ohel1],qin[ihel1]); diag[2]=_gggvertex->evaluate(mt,g2[ihel2],g4[ohel2],interv); // colour flows flow[0]=diag[0]+diag[2]; flow[1]=diag[1]-diag[2]; // sums for(unsigned int ix=0;ix<3;++ix) sumdiag[ix] += norm(diag[ix]); for(unsigned int ix=0;ix<2;++ix) sumflow[ix] += norm(flow[ix]); // total output +=real(flow[0]*conj(flow[0])+flow[1]*conj(flow[1]) -0.25*flow[0]*conj(flow[1])); // store the me if needed if(iflow!=0) _me(ihel1,2*ihel2,ohel1,2*ohel2)=flow[iflow-1]; } } } } // test code vs me from ESW //Energy2 u(uHat()),t(tHat()),s(sHat()); //double alphas(4.*pi*SM().alphaS(mt)); //cerr << "testing matrix element " // << 18./output*(-4./9./s/u+1./t/t)*(s*s+u*u)*sqr(alphas) << endl; //select a colour flow _flow=1+UseRandom::rnd2(sumflow[0],sumflow[1]); // select a diagram ensuring it is one of those in the selected colour flow sumdiag[_flow%2]=0.; _diagram=13+UseRandom::rnd3(sumdiag[0],sumdiag[1],sumdiag[2]); // final part of colour and spin factors return output/18.; } double MEQCD2to2::qq2qqME(vector<SpinorWaveFunction> & q1, vector<SpinorWaveFunction> & q2, vector<SpinorBarWaveFunction> & q3, vector<SpinorBarWaveFunction> & q4, unsigned int iflow) const { // identify special case of identical quarks bool identical(q1[0].id()==q2[0].id()); // scale Energy2 mt(scale()); // matrix element to be stored if(iflow!=0) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half)); // calculate the matrix element double output(0.),sumdiag[2]={0.,0.}; Complex diag[2]; VectorWaveFunction interv; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // first diagram interv = _qqgvertex->evaluate(mt,5,_gluon,q1[ihel1],q3[ohel1]); diag[0] = _qqgvertex->evaluate(mt,q2[ihel2],q4[ohel2],interv); // second diagram if identical if(identical) { interv = _qqgvertex->evaluate(mt,5,_gluon,q1[ihel1],q4[ohel2]); diag[1]=_qqgvertex->evaluate(mt,q2[ihel2],q3[ohel1],interv); } else diag[1]=0.; // sum of diagrams for(unsigned int ix=0;ix<2;++ix) sumdiag[ix] += norm(diag[ix]); // total output +=real(diag[0]*conj(diag[0])+diag[1]*conj(diag[1]) +2./3.*diag[0]*conj(diag[1])); // store the me if needed if(iflow!=0) _me(ihel1,ihel2,ohel1,ohel2)=diag[iflow-1]; } } } } // identical particle symmetry factor if needed if(identical) output*=0.5; // test code vs me from ESW //Energy2 u(uHat()),t(tHat()),s(sHat()); //double alphas(4.*pi*SM().alphaS(mt)); //if(identical) // {cerr << "testing matrix element A " // << 18./output*0.5*(4./9.*((s*s+u*u)/t/t+(s*s+t*t)/u/u) // -8./27.*s*s/u/t)*sqr(alphas) << endl;} //else // {cerr << "testing matrix element B " // << 18./output*(4./9.*(s*s+u*u)/t/t)*sqr(alphas) << endl;} //select a colour flow _flow=1+UseRandom::rnd2(sumdiag[0],sumdiag[1]); // select a diagram ensuring it is one of those in the selected colour flow sumdiag[_flow%2]=0.; _diagram=16+UseRandom::rnd2(sumdiag[0],sumdiag[1]); // final part of colour and spin factors return output/18.; } double MEQCD2to2::qbarqbar2qbarqbarME(vector<SpinorBarWaveFunction> & q1, vector<SpinorBarWaveFunction> & q2, vector<SpinorWaveFunction> & q3, vector<SpinorWaveFunction> & q4, unsigned int iflow) const { // identify special case of identical quarks bool identical(q1[0].id()==q2[0].id()); // scale Energy2 mt(scale()); // matrix element to be stored if(iflow!=0) {_me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half));} // calculate the matrix element double output(0.),sumdiag[2]={0.,0.}; Complex diag[2]; VectorWaveFunction interv; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // first diagram interv = _qqgvertex->evaluate(mt,5,_gluon,q3[ohel1],q1[ihel1]); diag[0] = _qqgvertex->evaluate(mt,q4[ohel2],q2[ihel2],interv); // second diagram if identical if(identical) { interv = _qqgvertex->evaluate(mt,5,_gluon,q4[ohel2],q1[ihel1]); diag[1]=_qqgvertex->evaluate(mt,q3[ohel1],q2[ihel2],interv); } else diag[1]=0.; // sum of diagrams for(unsigned int ix=0;ix<2;++ix) sumdiag[ix] += norm(diag[ix]); // total output +=real(diag[0]*conj(diag[0])+diag[1]*conj(diag[1]) +2./3.*diag[0]*conj(diag[1])); // store the me if needed if(iflow!=0) _me(ihel1,ihel2,ohel1,ohel2)=diag[iflow-1]; } } } } // identical particle symmetry factor if needed if(identical){output*=0.5;} // test code vs me from ESW // Energy2 u(uHat()),t(tHat()),s(sHat()); // double alphas(4.*pi*SM().alphaS(mt)); // if(identical) // {cerr << "testing matrix element A " // << 18./output*0.5*(4./9.*((s*s+u*u)/t/t+(s*s+t*t)/u/u) // -8./27.*s*s/u/t)*sqr(alphas) << endl;} // else // {cerr << "testing matrix element B " // << 18./output*(4./9.*(s*s+u*u)/t/t)*sqr(alphas) << endl;} //select a colour flow _flow=1+UseRandom::rnd2(sumdiag[0],sumdiag[1]); // select a diagram ensuring it is one of those in the selected colour flow sumdiag[_flow%2]=0.; _diagram=18+UseRandom::rnd2(sumdiag[0],sumdiag[1]); // final part of colour and spin factors return output/18.; } double MEQCD2to2::qqbar2qqbarME(vector<SpinorWaveFunction> & q1, vector<SpinorBarWaveFunction> & q2, vector<SpinorBarWaveFunction> & q3, vector<SpinorWaveFunction> & q4, unsigned int iflow) const { // type of process bool diagon[2]={q1[0].id()== -q2[0].id(), q1[0].id()== -q3[0].id()}; // scale Energy2 mt(scale()); // matrix element to be stored if(iflow!=0) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half)); // calculate the matrix element double output(0.),sumdiag[2]={0.,0.}; Complex diag[2]; VectorWaveFunction interv; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // first diagram if(diagon[0]) { interv = _qqgvertex->evaluate(mt,5,_gluon,q1[ihel1],q2[ihel2]); diag[0] = _qqgvertex->evaluate(mt,q4[ohel2],q3[ohel1],interv); } else diag[0]=0.; // second diagram if(diagon[1]) { interv = _qqgvertex->evaluate(mt,5,_gluon,q1[ihel1],q3[ohel1]); diag[1]=_qqgvertex->evaluate(mt,q4[ohel2],q2[ihel2],interv); } else diag[1]=0.; // sum of diagrams for(unsigned int ix=0;ix<2;++ix) sumdiag[ix] += norm(diag[ix]); // total output +=real(diag[0]*conj(diag[0])+diag[1]*conj(diag[1]) +2./3.*diag[0]*conj(diag[1])); // store the me if needed if(iflow!=0){_me(ihel1,ihel2,ohel1,ohel2)=diag[iflow-1];} } } } } // test code vs me from ESW // Energy2 u(uHat()),t(tHat()),s(sHat()); // double alphas(4.*pi*SM().alphaS(mt)); // if(diagon[0]&&diagon[1]) { // cerr << "testing matrix element A " // << q1[0].id() << " " << q2[0].id() << " -> " // << q3[0].id() << " " << q4[0].id() << " " // << 18./output*0.5*(4./9.*((s*s+u*u)/t/t+(u*u+t*t)/s/s) // -8./27.*u*u/s/t)*sqr(alphas) << endl; // } // else if(diagon[0]) { // cerr << "testing matrix element B " // << q1[0].id() << " " << q2[0].id() << " -> " // << q3[0].id() << " " << q4[0].id() << " " // << 18./output*(4./9.*(t*t+u*u)/s/s)*sqr(alphas) << endl; // } // else if(diagon[1]) { // cerr << "testing matrix element C " // << q1[0].id() << " " << q2[0].id() << " -> " // << q3[0].id() << " " << q4[0].id() << " " // << 18./output*(4./9.*(s*s+u*u)/t/t)*sqr(alphas) << endl; // } //select a colour flow _flow=1+UseRandom::rnd2(sumdiag[0],sumdiag[1]); // select a diagram ensuring it is one of those in the selected colour flow sumdiag[_flow%2]=0.; _diagram=20+UseRandom::rnd2(sumdiag[0],sumdiag[1]); // final part of colour and spin factors return output/18.; } void MEQCD2to2::getDiagrams() const { // gg-> gg subprocess if(_process==0||_process==1) { // s-channel add(new_ptr((Tree2toNDiagram(2),_gluon,_gluon, 1, _gluon, 3,_gluon, 3, _gluon, -1))); // first t-channel add(new_ptr((Tree2toNDiagram(3),_gluon,_gluon,_gluon, 1,_gluon, 2,_gluon,-2))); // second t-channel add(new_ptr((Tree2toNDiagram(3),_gluon,_gluon,_gluon, 2,_gluon, 1,_gluon,-3))); } // processes involving one quark line for(unsigned int ix=0;ix<_maxflavour;++ix) { // gg -> q qbar subprocesses if(_process==0||_process==2) { // first t-channel add(new_ptr((Tree2toNDiagram(3),_gluon,_antiquark[ix],_gluon, 1,_quark[ix], 2,_antiquark[ix],-4))); // interchange add(new_ptr((Tree2toNDiagram(3),_gluon,_antiquark[ix],_gluon, 2,_quark[ix], 1,_antiquark[ix],-5))); // s-channel add(new_ptr((Tree2toNDiagram(2),_gluon,_gluon, 1, _gluon, 3,_quark[ix], 3, _antiquark[ix], -6))); } // q qbar -> g g subprocesses if(_process==0||_process==3) { // first t-channel add(new_ptr((Tree2toNDiagram(3),_quark[ix],_antiquark[ix],_antiquark[ix], 1,_gluon, 2,_gluon,-7))); // second t-channel add(new_ptr((Tree2toNDiagram(3),_quark[ix],_antiquark[ix],_antiquark[ix], 2,_gluon, 1,_gluon,-8))); // s-channel add(new_ptr((Tree2toNDiagram(2),_quark[ix], _antiquark[ix], 1, _gluon, 3, _gluon, 3, _gluon,-9))); } // q g -> q g subprocesses if(_process==0||_process==4) { // s-channel add(new_ptr((Tree2toNDiagram(2),_quark[ix], _gluon, 1, _quark[ix], 3, _quark[ix], 3, _gluon,-10))); // quark t-channel add(new_ptr((Tree2toNDiagram(3),_quark[ix],_quark[ix],_gluon, 2,_quark[ix],1,_gluon,-11))); // gluon t-channel add(new_ptr((Tree2toNDiagram(3),_quark[ix],_gluon,_gluon, 1,_quark[ix],2,_gluon,-12))); } // qbar g -> qbar g subprocesses if(_process==0||_process==5) { // s-channel add(new_ptr((Tree2toNDiagram(2),_antiquark[ix], _gluon, 1, _antiquark[ix], 3, _antiquark[ix], 3, _gluon,-13))); // quark t-channel add(new_ptr((Tree2toNDiagram(3),_antiquark[ix],_antiquark[ix],_gluon, 2,_antiquark[ix],1,_gluon,-14))); // gluon t-channel add(new_ptr((Tree2toNDiagram(3),_antiquark[ix],_gluon,_gluon, 1,_antiquark[ix],2,_gluon,-15))); } // processes involving two quark lines for(unsigned int iy=ix;iy<_maxflavour;++iy) { // q q -> q q subprocesses if(_process==0||_process==6) { // gluon t-channel add(new_ptr((Tree2toNDiagram(3),_quark[ix],_gluon,_quark[iy], 1,_quark[ix],2,_quark[iy],-16))); // exchange for identical quarks if(ix==iy) add(new_ptr((Tree2toNDiagram(3),_quark[ix],_gluon,_quark[iy], 2,_quark[ix],1,_quark[iy],-17))); } // qbar qbar -> qbar qbar subprocesses if(_process==0||_process==7) { // gluon t-channel add(new_ptr((Tree2toNDiagram(3),_antiquark[ix],_gluon,_antiquark[iy], 1,_antiquark[ix],2,_antiquark[iy],-18))); // exchange for identical quarks if(ix==iy) add(new_ptr((Tree2toNDiagram(3),_antiquark[ix],_gluon,_antiquark[iy], 2,_antiquark[ix],1,_antiquark[iy],-19))); } } for(unsigned int iy=0;iy<_maxflavour;++iy) { // q qbar -> q qbar if(_process==0||_process==8) { // gluon s-channel add(new_ptr((Tree2toNDiagram(2),_quark[ix], _antiquark[ix], 1, _gluon, 3, _quark[iy], 3, _antiquark[iy],-20))); // gluon t-channel add(new_ptr((Tree2toNDiagram(3),_quark[ix],_gluon,_antiquark[iy], 1,_quark[ix],2,_antiquark[iy],-21))); } } } } Selector<const ColourLines *> MEQCD2to2::colourGeometries(tcDiagPtr diag) const { // colour lines for gg to gg static const ColourLines cgggg[12]={ColourLines("1 -2, -1 -3 -5, 5 -4, 2 3 4"),// A_2 s ColourLines("-1 2, 1 3 5, -5 4, -2 -3 -4"),// A_1 s ColourLines("1 5, -1 -2 3, -3 -4, -5 2 4"),// A_1 u ColourLines("-1 -5, 1 2 -3, 3 4, 5 -2 -4"),// A_2 u ColourLines("1 -2, -1 -3 -4, 4 -5, 2 3 5"),// B_2 s ColourLines("-1 2, 1 3 4, -4 5, -2 -3 -5"),// B_1 s ColourLines("1 4, -1 -2 3, -3 -5, -4 2 5"),// B_1 t ColourLines("-1 -4, 1 2 -3, 3 5, 4 -2 -5"),// B_2 t ColourLines("1 4, -1 -2 -5, 3 5, -3 2 -4"),// C_1 t ColourLines("-1 -4, 1 2 5, -3 -5, 3 -2 4"),// C_2 t ColourLines("1 5, -1 -2 -4, 3 4, -3 2 -5"),// C_1 u ColourLines("-1 -5, 1 2 4, -3 -4, 3 -2 5") // C_2 u }; // colour lines for gg to q qbar static const ColourLines cggqq[4]={ColourLines("1 4, -1 -2 3, -3 -5"), ColourLines("3 4, -3 -2 1, -1 -5"), ColourLines("2 -1, 1 3 4, -2 -3 -5"), ColourLines("1 -2, -1 -3 -5, 2 3 4")}; // colour lines for q qbar to gg static const ColourLines cqqgg[4]={ColourLines("1 4, -4 -2 5, -3 -5"), ColourLines("1 5, -3 -4, 4 -2 -5"), ColourLines("1 3 4, -4 5, -2 -3 -5"), ColourLines("1 3 5, -5 4, -2 -3 -4")}; // colour lines for q g to q g static const ColourLines cqgqg[4]={ColourLines("1 -2, 2 3 5, 4 -5"), ColourLines("1 5, 3 4,-3 2 -5 "), ColourLines("1 2 -3, 3 5, -5 -2 4"), ColourLines("1 -2 5,3 2 4,-3 -5")}; // colour lines for qbar g -> qbar g static const ColourLines cqbgqbg[4]={ColourLines("-1 2, -2 -3 -5, -4 5"), ColourLines("-1 -5, -3 -4, 3 -2 5"), ColourLines("-1 -2 3, -3 -5, 5 2 -4"), ColourLines("-1 2 -5,-3 -2 -4, 3 5")}; // colour lines for q q -> q q static const ColourLines cqqqq[2]={ColourLines("1 2 5,3 -2 4"), ColourLines("1 2 4,3 -2 5")}; // colour lines for qbar qbar -> qbar qbar static const ColourLines cqbqbqbqb[2]={ColourLines("-1 -2 -5,-3 2 -4"), ColourLines("-1 -2 -4,-3 2 -5")}; // colour lines for q qbar -> q qbar static const ColourLines cqqbqqb[2]={ColourLines("1 3 4,-2 -3 -5"), ColourLines("1 2 -3,4 -2 -5")}; // select the colour flow (as all ready picked just insert answer) Selector<const ColourLines *> sel; switch(abs(diag->id())) { // gg -> gg subprocess case 1: if(_flow==1) { sel.insert(0.5, &cgggg[0]); sel.insert(0.5, &cgggg[1]); } else { sel.insert(0.5, &cgggg[4]); sel.insert(0.5, &cgggg[5]); } break; case 2: if(_flow==2) { sel.insert(0.5, &cgggg[6]); sel.insert(0.5, &cgggg[7]); } else { sel.insert(0.5, &cgggg[8]); sel.insert(0.5, &cgggg[9]); } break; case 3: if(_flow==1) { sel.insert(0.5, &cgggg[2]); sel.insert(0.5, &cgggg[3]); } else { sel.insert(0.5, &cgggg[10]); sel.insert(0.5, &cgggg[11]); } break; // gg -> q qbar subprocess case 4: case 5: sel.insert(1.0, &cggqq[abs(diag->id())-4]); break; case 6: sel.insert(1.0, &cggqq[1+_flow]); break; // q qbar -> gg subprocess case 7: case 8: sel.insert(1.0, &cqqgg[abs(diag->id())-7]); break; case 9: sel.insert(1.0, &cqqgg[1+_flow]); break; // q g -> q g subprocess case 10: case 11: sel.insert(1.0, &cqgqg[abs(diag->id())-10]); break; case 12: sel.insert(1.0, &cqgqg[1+_flow]); break; // q g -> q g subprocess case 13: case 14: sel.insert(1.0, &cqbgqbg[abs(diag->id())-13]); break; case 15: sel.insert(1.0, &cqbgqbg[1+_flow]); break; // q q -> q q subprocess case 16: case 17: sel.insert(1.0, &cqqqq[abs(diag->id())-16]); break; // qbar qbar -> qbar qbar subprocess case 18: case 19: sel.insert(1.0, &cqbqbqbqb[abs(diag->id())-18]); break; // q qbar -> q qbar subprocess case 20: case 21: sel.insert(1.0, &cqqbqqb[abs(diag->id())-20]); break; } return sel; } double MEQCD2to2::me2() const { // total matrix element double me(0.); // gg initiated processes if(mePartonData()[0]->id()==ParticleID::g&&mePartonData()[1]->id()==ParticleID::g) { // gg -> gg if(mePartonData()[2]->id()==ParticleID::g) { VectorWaveFunction g1w(meMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction g2w(meMomenta()[1],mePartonData()[1],incoming); VectorWaveFunction g3w(meMomenta()[2],mePartonData()[2],outgoing); VectorWaveFunction g4w(meMomenta()[3],mePartonData()[3],outgoing); vector<VectorWaveFunction> g1,g2,g3,g4; for(unsigned int ix=0;ix<2;++ix) { g1w.reset(2*ix);g1.push_back(g1w); g2w.reset(2*ix);g2.push_back(g2w); g3w.reset(2*ix);g3.push_back(g3w); g4w.reset(2*ix);g4.push_back(g4w); } // calculate the matrix element me = gg2ggME(g1,g2,g3,g4,0); } // gg -> q qbar else { VectorWaveFunction g1w(meMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction g2w(meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction qw(meMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction qbarw(meMomenta()[3],mePartonData()[3],outgoing); vector<VectorWaveFunction> g1,g2; vector<SpinorBarWaveFunction> q; vector<SpinorWaveFunction> qbar; for(unsigned int ix=0;ix<2;++ix) { g1w.reset(2*ix);g1.push_back(g1w); g2w.reset(2*ix);g2.push_back(g2w); qw.reset(ix);q.push_back(qw); qbarw.reset(ix);qbar.push_back(qbarw); } // calculate the matrix element me=gg2qqbarME(g1,g2,q,qbar,0); } } // quark first processes else if(mePartonData()[0]->id()>0) { // q g -> q g if(mePartonData()[1]->id()==ParticleID::g) { SpinorWaveFunction qinw(meMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction g2w(meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction qoutw(meMomenta()[2],mePartonData()[2],outgoing); VectorWaveFunction g4w(meMomenta()[3],mePartonData()[3],outgoing); vector<VectorWaveFunction> g2,g4; vector<SpinorWaveFunction> qin; vector<SpinorBarWaveFunction> qout; for(unsigned int ix=0;ix<2;++ix) { qinw.reset(ix);qin.push_back(qinw); g2w.reset(2*ix);g2.push_back(g2w); qoutw.reset(ix);qout.push_back(qoutw); g4w.reset(2*ix);g4.push_back(g4w); } // calculate the matrix element me = qg2qgME(qin,g2,qout,g4,0); } else if(mePartonData()[1]->id()<0) { // q qbar initiated processes( q qbar -> gg) if(mePartonData()[2]->id()==ParticleID::g) { SpinorWaveFunction qw(meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction qbarw(meMomenta()[1],mePartonData()[1],incoming); VectorWaveFunction g1w(meMomenta()[2],mePartonData()[2],outgoing); VectorWaveFunction g2w(meMomenta()[3],mePartonData()[3],outgoing); vector<VectorWaveFunction> g1,g2; vector<SpinorWaveFunction> q; vector<SpinorBarWaveFunction> qbar; for(unsigned int ix=0;ix<2;++ix) { qw.reset(ix);q.push_back(qw); qbarw.reset(ix);qbar.push_back(qbarw); g1w.reset(2*ix);g1.push_back(g1w); g2w.reset(2*ix);g2.push_back(g2w); } // calculate the matrix element me = qqbar2ggME(q,qbar,g1,g2,0); } // q qbar to q qbar else { SpinorWaveFunction q1w(meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction q2w(meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction q3w(meMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction q4w(meMomenta()[3],mePartonData()[3],outgoing); vector<SpinorWaveFunction> q1,q4; vector<SpinorBarWaveFunction> q2,q3; for(unsigned int ix=0;ix<2;++ix) { q1w.reset(ix);q1.push_back(q1w); q2w.reset(ix);q2.push_back(q2w); q3w.reset(ix);q3.push_back(q3w); q4w.reset(ix);q4.push_back(q4w); } // calculate the matrix element me = qqbar2qqbarME(q1,q2,q3,q4,0); } } // q q -> q q else if(mePartonData()[1]->id()>0) { SpinorWaveFunction q1w(meMomenta()[0],mePartonData()[0],incoming); SpinorWaveFunction q2w(meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction q3w(meMomenta()[2],mePartonData()[2],outgoing); SpinorBarWaveFunction q4w(meMomenta()[3],mePartonData()[3],outgoing); vector<SpinorWaveFunction> q1,q2; vector<SpinorBarWaveFunction> q3,q4; for(unsigned int ix=0;ix<2;++ix) { q1w.reset(ix);q1.push_back(q1w); q2w.reset(ix);q2.push_back(q2w); q3w.reset(ix);q3.push_back(q3w); q4w.reset(ix);q4.push_back(q4w); } // calculate the matrix element me = qq2qqME(q1,q2,q3,q4,0); } } // antiquark first processes else if(mePartonData()[0]->id()<0) { // qbar g -> qbar g if(mePartonData()[1]->id()==ParticleID::g) { SpinorBarWaveFunction qinw(meMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction g2w(meMomenta()[1],mePartonData()[1],incoming); SpinorWaveFunction qoutw(meMomenta()[2],mePartonData()[2],outgoing); VectorWaveFunction g4w(meMomenta()[3],mePartonData()[3],outgoing); vector<VectorWaveFunction> g2,g4; vector<SpinorBarWaveFunction> qin; vector<SpinorWaveFunction> qout; for(unsigned int ix=0;ix<2;++ix) { qinw.reset(ix);qin.push_back(qinw); g2w.reset(2*ix);g2.push_back(g2w); qoutw.reset(ix);qout.push_back(qoutw); g4w.reset(2*ix);g4.push_back(g4w); } // calculate the matrix element me = qbarg2qbargME(qin,g2,qout,g4,0); } // qbar qbar -> qbar qbar else if(mePartonData()[1]->id()<0) { SpinorBarWaveFunction q1w(meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction q2w(meMomenta()[1],mePartonData()[1],incoming); SpinorWaveFunction q3w(meMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction q4w(meMomenta()[3],mePartonData()[3],outgoing); vector<SpinorBarWaveFunction> q1,q2; vector<SpinorWaveFunction> q3,q4; for(unsigned int ix=0;ix<2;++ix) { q1w.reset(ix);q1.push_back(q1w); q2w.reset(ix);q2.push_back(q2w); q3w.reset(ix);q3.push_back(q3w); q4w.reset(ix);q4.push_back(q4w); } // calculate the matrix element me = qbarqbar2qbarqbarME(q1,q2,q3,q4,0); } } else throw Exception() << "Unknown process in MEQCD2to2::me2()" << Exception::abortnow; // return the answer return me; } void MEQCD2to2::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first);hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]);hard.push_back(sub->outgoing()[1]); // order of particles unsigned int order[4]={0,1,2,3}; // identify the process and calculate the matrix element if(hard[0]->id()==ParticleID::g&&hard[1]->id()==ParticleID::g) { // gg -> gg if(hard[2]->id()==ParticleID::g) { vector<VectorWaveFunction> g1,g2,g3,g4; VectorWaveFunction(g1,hard[0],incoming,false,true,true); VectorWaveFunction(g2,hard[1],incoming,false,true,true); VectorWaveFunction(g3,hard[2],outgoing,true ,true,true); VectorWaveFunction(g4,hard[3],outgoing,true ,true,true); g1[1]=g1[2];g2[1]=g2[2];g3[1]=g3[2];g4[1]=g4[2]; gg2ggME(g1,g2,g3,g4,_flow); } // gg -> q qbar else { if(hard[2]->id()<0) swap(order[2],order[3]); vector<VectorWaveFunction> g1,g2; vector<SpinorBarWaveFunction> q; vector<SpinorWaveFunction> qbar; VectorWaveFunction( g1,hard[ 0 ],incoming,false,true,true); VectorWaveFunction( g2,hard[ 1 ],incoming,false,true,true); SpinorBarWaveFunction(q ,hard[order[2]],outgoing,true ,true); SpinorWaveFunction( qbar,hard[order[3]],outgoing,true ,true); g1[1]=g1[2];g2[1]=g2[2]; gg2qqbarME(g1,g2,q,qbar,_flow); } } else if(hard[0]->id()==ParticleID::g||hard[1]->id()==ParticleID::g) { if(hard[0]->id()==ParticleID::g) swap(order[0],order[1]); if(hard[2]->id()==ParticleID::g) swap(order[2],order[3]); // q g -> q g if(hard[order[0]]->id()>0) { vector<VectorWaveFunction> g2,g4; vector<SpinorWaveFunction> qin; vector<SpinorBarWaveFunction> qout; SpinorWaveFunction( qin,hard[order[0]],incoming,false,true); VectorWaveFunction( g2,hard[order[1]],incoming,false,true,true); SpinorBarWaveFunction(qout,hard[order[2]],outgoing,true ,true); VectorWaveFunction( g4,hard[order[3]],outgoing,true ,true,true); g2[1]=g2[2];g4[1]=g4[2]; qg2qgME(qin,g2,qout,g4,_flow); } // qbar g -> qbar g else { vector<VectorWaveFunction> g2,g4; vector<SpinorBarWaveFunction> qin; vector<SpinorWaveFunction> qout; SpinorBarWaveFunction( qin,hard[order[0]],incoming,false,true); VectorWaveFunction( g2,hard[order[1]],incoming,false,true,true); SpinorWaveFunction( qout,hard[order[2]],outgoing,true ,true); VectorWaveFunction( g4,hard[order[3]],outgoing,true ,true,true); g2[1]=g2[2];g4[1]=g4[2]; qbarg2qbargME(qin,g2,qout,g4,_flow); } } else if(hard[0]->id()>0||hard[1]->id()>0) { if(hard[2]->id()==ParticleID::g) { if(hard[0]->id()<0) swap(order[0],order[1]); vector<SpinorBarWaveFunction> qbar; vector<SpinorWaveFunction> q; vector<VectorWaveFunction> g3,g4; SpinorWaveFunction( q ,hard[order[0]],incoming,false,true); SpinorBarWaveFunction(qbar,hard[order[1]],incoming,false,true); VectorWaveFunction( g3,hard[ 2 ],outgoing,true ,true,true); VectorWaveFunction( g4,hard[ 3 ],outgoing,true ,true,true); g3[1]=g3[2];g4[1]=g4[2]; qqbar2ggME(q,qbar,g3,g4,_flow); } // q q -> q q else if(hard[0]->id()>0&&hard[1]->id()>0) { if(hard[2]->id()!=hard[0]->id()) swap(order[2],order[3]); vector<SpinorWaveFunction> q1,q2; vector<SpinorBarWaveFunction> q3,q4; SpinorWaveFunction( q1,hard[order[0]],incoming,false,true); SpinorWaveFunction( q2,hard[order[1]],incoming,false,true); SpinorBarWaveFunction(q3,hard[order[2]],outgoing,true ,true); SpinorBarWaveFunction(q4,hard[order[3]],outgoing,true ,true); qq2qqME(q1,q2,q3,q4,_flow); } // q qbar -> q qbar else { if(hard[0]->id()<0) swap(order[0],order[1]); if(hard[2]->id()<0) swap(order[2],order[3]); vector<SpinorWaveFunction> q1,q4; vector<SpinorBarWaveFunction> q2,q3; SpinorWaveFunction( q1,hard[order[0]],incoming,false,true); SpinorBarWaveFunction(q2,hard[order[1]],incoming,false,true); SpinorBarWaveFunction(q3,hard[order[2]],outgoing,true ,true); SpinorWaveFunction( q4,hard[order[3]],outgoing,true ,true); qqbar2qqbarME(q1,q2,q3,q4,_flow); } } else if (hard[0]->id()<0&&hard[1]->id()<0) { if(hard[2]->id()!=hard[0]->id()) swap(order[2],order[3]); vector<SpinorBarWaveFunction> q1,q2; vector<SpinorWaveFunction> q3,q4; SpinorBarWaveFunction(q1,hard[order[0]],incoming,false,true); SpinorBarWaveFunction(q2,hard[order[1]],incoming,false,true); SpinorWaveFunction( q3,hard[order[2]],outgoing,true ,true); SpinorWaveFunction( q4,hard[order[3]],outgoing,true ,true); qbarqbar2qbarqbarME(q1,q2,q3,q4,_flow); } else throw Exception() << "Unknown process in MEQCD2to2::constructVertex()" << Exception::runerror; // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(_me); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) hard[order[ix]]->spinInfo()->productionVertex(hardvertex); } ��������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2WJet.h������������������������������������������������0000644�0001750�0001750�00000023247�11754474776�022570� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEPP2WJet_H #define HERWIG_MEPP2WJet_H // // This is the declaration of the MEPP2WJet class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.fh" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The MEPP2WJet class implements the matrix element for the production of * a W boson and a jet including the decay of the W. * * @see \ref MEPP2WJetInterfaces "The interfaces" * defined for MEPP2WJet. */ class MEPP2WJet: public HwMEBase { public: /** * The default constructor. */ MEPP2WJet(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Used internally by generateKinematics, after calculating the * limits on cos(theta). */ double getCosTheta(double cthmin, double cthmax, const double r); /** * Matrix elements for the different subprocesses */ //@{ /** * Matrix element for \f$q\bar{q}\to W^\pm g\f$. * @param fin Spinors for incoming quark * @param ain Spinors for incoming antiquark * @param gout Polarization vectors for the outgoing gluon * @param lm Spinors for outgoing lepton * @param lp Spinors for outgoing antilepton * @param me Whether or not to calculate the matrix element for spin correlations **/ InvEnergy2 qqbarME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, vector<VectorWaveFunction> & gout, vector<SpinorBarWaveFunction> & lm, vector<SpinorWaveFunction> & lp, bool me=false) const; /** * Matrix element for \f$qg\to W^\pm q\f$. * @param fin Spinors for incoming quark * @param gin Polarization vectors for the incoming gluon * @param fout Spinors for outgoing quark * @param lm Spinors for outgoing lepton * @param lp Spinors for outgoing antilepton * @param me Whether or not to calculate the matrix element for spin correlations **/ InvEnergy2 qgME(vector<SpinorWaveFunction> & fin, vector<VectorWaveFunction> & gin, vector<SpinorBarWaveFunction> & fout, vector<SpinorBarWaveFunction> & lm, vector<SpinorWaveFunction> & lp, bool me=false) const; /** * Matrix element for \f$\bar{q}g\to W^\pm\bar{q}\f$. * @param fin Spinors for incoming antiquark * @param gin Polarization vectors for the incoming gluon * @param fout Spinors for outgoing antiquark * @param lm Spinors for outgoing lepton * @param lp Spinors for outgoing antilepton * @param me Whether or not to calculate the matrix element for spin correlations **/ InvEnergy2 qbargME(vector<SpinorBarWaveFunction> & fin, vector<VectorWaveFunction> & gin, vector<SpinorWaveFunction> & fout, vector<SpinorBarWaveFunction> & lm, vector<SpinorWaveFunction> & lp, bool me=false) const; //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2WJet> initMEPP2WJet; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2WJet & operator=(const MEPP2WJet &); private: /** * Vertices for the helicity amplitude calculation */ //@{ /** * Pointer to the W vertex */ AbstractFFVVertexPtr _theFFWVertex; /** * Pointer to the \f$qqg\f$ vertex */ AbstractFFVVertexPtr _theQQGVertex; //@} /** * @name Pointers to the W ParticleData objects */ //@{ /** * The \f$W^+\f$ data pointer */ tcPDPtr _wplus; /** * The \f$W^-\f$ data pointer */ tcPDPtr _wminus; //@} /** * @name Switches to control the particles in the hard process */ //@{ /** * Subprocesses to include */ unsigned int _process; /** * Allowed flavours for the incoming quarks */ unsigned int _maxflavour; /** * Which charge states to include */ unsigned int _plusminus; /** * W decay modes */ unsigned int _wdec; /** * Option for the treatment of the W off-shell effects */ unsigned int _widthopt; //@} /** * Matrix element for spin correlations */ mutable ProductionMatrixElement _me; /** * Storage of the scale to avoid the need to recalculate */ Energy2 _scale; /** * Storage of the off-shell W mass to avoid the need to recalculate */ Energy2 _mw2; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2WJet. */ template <> struct BaseClassTrait<Herwig::MEPP2WJet,1> { /** Typedef of the first base class of MEPP2WJet. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2WJet class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2WJet> : public ClassTraitsBase<Herwig::MEPP2WJet> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2WJet"; } /** * The name of a file containing the dynamic library where the class * MEPP2WJet is implemented. It may also include several, space-separated, * libraries if the class MEPP2WJet depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2WJet_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2VGamma.cc���������������������������������������������0000644�0001750�0001750�00000031032�11754474776�023214� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2VGamma class. // #include "MEPP2VGamma.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "Herwig++/MatrixElement/HardVertex.h" using namespace Herwig; MEPP2VGamma::MEPP2VGamma() : process_(0), maxflavour_(5), massOption_(2) {} unsigned int MEPP2VGamma::orderInAlphaS() const { return 0; } unsigned int MEPP2VGamma::orderInAlphaEW() const { return 2; } ClassDescription<MEPP2VGamma> MEPP2VGamma::initMEPP2VGamma; // Definition of the static class description member. void MEPP2VGamma::Init() { static ClassDocumentation<MEPP2VGamma> documentation ("The MEPP2VGamma class simulates the production of" " W+/-gamma and Z0gamma in hadron-hadron collisions" " using the 2->2 matrix elements"); static Switch<MEPP2VGamma,unsigned int> interfaceProcess ("Process", "Which processes to include", &MEPP2VGamma::process_, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all the processes", 0); static SwitchOption interfaceProcessWGamma (interfaceProcess, "WGamma", "Only include W+/-gamma", 1); static SwitchOption interfaceProcessZGamma (interfaceProcess, "ZGamma", "Only include ZGamma", 2); static Parameter<MEPP2VGamma,int> interfaceMaximumFlavour ("MaximumFlavour", "The maximum flavour allowed for the incoming quarks", &MEPP2VGamma::maxflavour_, 5, 2, 5, false, false, Interface::limited); static Switch<MEPP2VGamma,unsigned int> interfaceMassOption ("MassOption", "Option for the treatment of the boson masses", &MEPP2VGamma::massOption_, 1, false, false); static SwitchOption interfaceMassOptionOnMassShell (interfaceMassOption, "OnMassShell", "The boson is produced on its mass shell", 1); static SwitchOption interfaceMassOption2 (interfaceMassOption, "OffShell", "The bosons are generated off-shell using the mass and width generator.", 2); } void MEPP2VGamma::persistentOutput(PersistentOStream & os) const { os << FFPvertex_ << FFWvertex_ << FFZvertex_ << WWWvertex_ << process_ << massOption_; } void MEPP2VGamma::persistentInput(PersistentIStream & is, int) { is >> FFPvertex_ >> FFWvertex_ >> FFZvertex_ >> WWWvertex_ >> process_ >> massOption_; } Energy2 MEPP2VGamma::scale() const { return sHat(); } IBPtr MEPP2VGamma::clone() const { return new_ptr(*this); } IBPtr MEPP2VGamma::fullclone() const { return new_ptr(*this); } void MEPP2VGamma::doinit() { HwMEBase::doinit(); // mass option vector<unsigned int> mopt(2,1); mopt[0]=massOption_; massOption(mopt); rescalingOption(2); // get the vertices we need // get a pointer to the standard model object in the run static const tcHwSMPtr hwsm = dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if (!hwsm) throw InitException() << "hwsm pointer is null in" << " MEPP2VGamma::doinit()" << Exception::abortnow; // get pointers to all required Vertex objects FFZvertex_ = hwsm->vertexFFZ(); FFPvertex_ = hwsm->vertexFFP(); WWWvertex_ = hwsm->vertexWWW(); FFWvertex_ = hwsm->vertexFFW(); } Selector<const ColourLines *> MEPP2VGamma::colourGeometries(tcDiagPtr diag) const { static ColourLines cs("1 -2"); static ColourLines ct("1 2 -3"); Selector<const ColourLines *> sel; if(diag->id()<-2) sel.insert(1.0, &cs); else sel.insert(1.0, &ct); return sel; } void MEPP2VGamma::getDiagrams() const { typedef std::vector<pair<tcPDPtr,tcPDPtr> > Pairvector; tcPDPtr wPlus = getParticleData(ParticleID::Wplus ); tcPDPtr wMinus = getParticleData(ParticleID::Wminus); tcPDPtr z0 = getParticleData(ParticleID::Z0 ); tcPDPtr gamma = getParticleData(ParticleID::gamma); // W+/- gamma if(process_==0||process_==1) { // possible parents Pairvector parentpair; parentpair.reserve(6); // don't even think of putting 'break' in here! switch(maxflavour_) { case 5: parentpair.push_back(make_pair(getParticleData(ParticleID::b), getParticleData(ParticleID::cbar))); parentpair.push_back(make_pair(getParticleData(ParticleID::b), getParticleData(ParticleID::ubar))); case 4: parentpair.push_back(make_pair(getParticleData(ParticleID::s), getParticleData(ParticleID::cbar))); parentpair.push_back(make_pair(getParticleData(ParticleID::d), getParticleData(ParticleID::cbar))); case 3: parentpair.push_back(make_pair(getParticleData(ParticleID::s), getParticleData(ParticleID::ubar))); case 2: parentpair.push_back(make_pair(getParticleData(ParticleID::d), getParticleData(ParticleID::ubar))); default: ; } // W+ gamma for(unsigned int ix=0;ix<parentpair.size();++ix) { add(new_ptr((Tree2toNDiagram(3), parentpair[ix].second->CC(), parentpair[ix].first, parentpair[ix].first->CC(), 1, wPlus, 2, gamma, -1))); add(new_ptr((Tree2toNDiagram(3), parentpair[ix].second->CC(), parentpair[ix].second->CC() , parentpair[ix].first->CC(), 2, wPlus, 1, gamma, -2))); add(new_ptr((Tree2toNDiagram(2), parentpair[ix].second->CC(), parentpair[ix].first->CC(), 1, wPlus, 3, wPlus, 3, gamma, -3))); } // W- gamma for(unsigned int ix=0;ix<parentpair.size();++ix) { add(new_ptr((Tree2toNDiagram(3), parentpair[ix].first, parentpair[ix].second->CC(), parentpair[ix].second, 1, wMinus, 2, gamma, -1))); add(new_ptr((Tree2toNDiagram(3), parentpair[ix].first, parentpair[ix].first , parentpair[ix].second, 2, wMinus, 1, gamma, -2))); add(new_ptr((Tree2toNDiagram(2), parentpair[ix].first, parentpair[ix].second, 1, wMinus, 3, wMinus, 3, gamma, -3))); } } if(process_==0||process_==2) { for(int ix=1;ix<=maxflavour_;++ix) { tcPDPtr qk = getParticleData(ix); tcPDPtr qb = qk->CC(); add(new_ptr((Tree2toNDiagram(3), qk, qk, qb, 1, z0, 2, gamma, -1))); add(new_ptr((Tree2toNDiagram(3), qk, qk, qb, 2, z0, 1, gamma, -2))); } } } Selector<MEBase::DiagramIndex> MEPP2VGamma::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) sel.insert(meInfo()[abs(diags[i]->id())], i); return sel; } double MEPP2VGamma::me2() const { // setup momenta and particle data for the external wavefunctions // incoming SpinorWaveFunction em_in( meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction ep_in( meMomenta()[1],mePartonData()[1],incoming); // outgoing VectorWaveFunction v1_out(meMomenta()[2],mePartonData()[2],outgoing); VectorWaveFunction v2_out(meMomenta()[3],mePartonData()[3],outgoing); vector<SpinorWaveFunction> f1; vector<SpinorBarWaveFunction> a1; vector<VectorWaveFunction> v1,v2; // calculate the wavefunctions for(unsigned int ix=0;ix<3;++ix) { if(ix<2) { em_in.reset(ix); f1.push_back(em_in); ep_in.reset(ix); a1.push_back(ep_in); } v1_out.reset(ix); v1.push_back(v1_out); if(ix!=1) { v2_out.reset(ix); v2.push_back(v2_out); } } if(mePartonData()[2]->id()==ParticleID::Z0) { return ZGammaME(f1,a1,v1,v2,false); } else { return WGammaME(f1,a1,v1,v2,false); } } double MEPP2VGamma::ZGammaME(vector<SpinorWaveFunction> & f1, vector<SpinorBarWaveFunction> & a1, vector<VectorWaveFunction> & v1, vector<VectorWaveFunction> & v2, bool calc) const { double output(0.); vector<double> me(3,0.0); if(calc) me_.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1)); vector<Complex> diag(2,0.0); SpinorWaveFunction inter; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<3;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { inter = FFZvertex_->evaluate(scale(),5,f1[ihel1].particle(), f1[ihel1],v1[ohel1]); diag[0] = FFPvertex_->evaluate(scale(),inter,a1[ihel2],v2[ohel2]); inter = FFPvertex_->evaluate(scale(),5,f1[ihel1].particle(), f1[ihel1] ,v2[ohel2]); diag[1] = FFZvertex_->evaluate(scale(),inter,a1[ihel2],v1[ohel1]); // individual diagrams for (size_t ii=0; ii<2; ++ii) me[ii] += std::norm(diag[ii]); // full matrix element diag[0] += diag[1]; output += std::norm(diag[0]); // storage of the matrix element for spin correlations if(calc) me_(ihel1,ihel2,ohel1,ohel2) = diag[0]; } } } } DVector save(3); for (size_t i = 0; i < 3; ++i) { save[i] = 0.25 * me[i]; } meInfo(save); return 0.25*output/3.; } double MEPP2VGamma::WGammaME(vector<SpinorWaveFunction> & f1, vector<SpinorBarWaveFunction> & a1, vector<VectorWaveFunction> & v1, vector<VectorWaveFunction> & v2, bool calc) const { double output(0.); vector<double> me(3,0.0); if(calc) me_.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1)); vector<Complex> diag(3,0.0); SpinorWaveFunction inter; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { VectorWaveFunction interW = FFWvertex_->evaluate(scale(),3,v1[0].particle(), f1[ihel1],a1[ihel2]); for(unsigned int ohel1=0;ohel1<3;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // t-channel diagrams inter = FFWvertex_->evaluate(scale(),5,a1[ihel1].particle(), f1[ihel1],v1[ohel1]); diag[0] = FFPvertex_->evaluate(scale(),inter,a1[ihel2],v2[ohel2]); inter = FFPvertex_->evaluate(scale(),5,f1[ihel1].particle(), f1[ihel1] ,v2[ohel2]); diag[1] = FFWvertex_->evaluate(scale(),inter,a1[ihel2],v1[ohel1]); // s-channel diagram diag[2] = WWWvertex_->evaluate(scale(),interW,v1[ohel1],v2[ohel2]); // individual diagrams for (size_t ii=0; ii<3; ++ii) me[ii] += std::norm(diag[ii]); // full matrix element diag[0] += diag[1]+diag[2]; output += std::norm(diag[0]); // storage of the matrix element for spin correlations if(calc) me_(ihel1,ihel2,ohel1,ohel2) = diag[0]; } } } } DVector save(3); for (size_t i = 0; i < 3; ++i) save[i] = 0.25 * me[i]; meInfo(save); // spin and colour factors output *= 0.25/3.; // testing code // int iu = abs(mePartonData()[0]->id()); // int id = abs(mePartonData()[1]->id()); // if(iu%2!=0) swap(iu,id); // iu = (iu-2)/2; // id = (id-1)/2; // double ckm = SM().CKM(iu,id); // InvEnergy4 dsigdt = Constants::pi*sqr(SM().alphaEM(scale())) // /6./sqr(sHat())/SM().sin2ThetaW()*sqr(1./(1.+tHat()/uHat())-1./3.)* // (sqr(tHat())+sqr(uHat())+2.*sqr(getParticleData(ParticleID::Wplus)->mass())*sHat())/ // tHat()/uHat(); // double test = 16.*ckm*Constants::pi*sqr(sHat())*dsigdt; // cerr << "testing W gamma " << test << " " << output << " " // << (test-output)/(test+output) << "\n"; return output; } void MEPP2VGamma::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); hard.push_back(sub->outgoing()[1]); // order of particles unsigned int order[4]={0,1,2,3}; if(hard[order[0]]->id()<0) swap(order[0],order[1]); vector<SpinorWaveFunction> q; vector<SpinorBarWaveFunction> qb; SpinorWaveFunction (q ,hard[order[0]],incoming,false); SpinorBarWaveFunction(qb,hard[order[1]],incoming,false); vector<VectorWaveFunction> w1,w2; if(hard[order[2]]->id()==ParticleID::gamma) swap(order[2],order[3]); VectorWaveFunction (w1,hard[order[2]],outgoing,true ,false); VectorWaveFunction (w2,hard[order[3]],outgoing,true ,true ); w2[1]=w2[2]; // q qbar -> Z gamma if(hard[order[2]]->id()==ParticleID::Z0) { ZGammaME(q,qb,w1,w2,true); } // q qbar -> W gamma else { WGammaME(q,qb,w1,w2,true); } // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(me_); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) hard[order[ix]]->spinInfo()->productionVertex(hardvertex); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEMinBias.h������������������������������������������������0000644�0001750�0001750�00000013027�11754474776�022712� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEMinBias_H #define HERWIG_MEMinBias_H // // This is the declaration of the MEMinBias class. // #include "Herwig++/MatrixElement/HwMEBase.h" namespace Herwig { using namespace ThePEG; /** * The MEMinBias class provides a simple colour singlet exchange matrix element * to be used in the soft component of the multiple scattering model of the * underlying event * * @see \ref MEMinBiasInterfaces "The interfaces" * defined for MEMinBias. */ class MEMinBias: public HwMEBase { public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Set the typed and momenta of the incoming and outgoing partons to * be used in subsequent calls to me() and colourGeometries() * according to the associated XComb object. If the function is * overridden in a sub class the new function must call the base * class one first. */ virtual void setKinematics(); /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; //@} public: /** * 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEMinBias> initMEMinBias; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEMinBias & operator=(const MEMinBias &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEMinBias. */ template <> struct BaseClassTrait<Herwig::MEMinBias,1> { /** Typedef of the first base class of MEMinBias. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEMinBias class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEMinBias> : public ClassTraitsBase<Herwig::MEMinBias> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEMinBias"; } /** * The name of a file containing the dynamic library where the class * MEMinBias is implemented. It may also include several, space-separated, * libraries if the class MEMinBias depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() {return "HwMEHadron.so";} }; /** @endcond */ } #endif /* HERWIG_MEMinBias_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2ZJet.cc�����������������������������������������������0000644�0001750�0001750�00000072221�11754474776�022725� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2ZJet class. // #include "MEPP2ZJet.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Helicity/Vertex/Vector/FFVVertex.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "ThePEG/Cuts/Cuts.h" #include "Herwig++/MatrixElement/HardVertex.h" using namespace Herwig; MEPP2ZJet::MEPP2ZJet() : _process(0), _maxflavour(5), _zdec(0), _gammaZ(0), _widthopt(1), _pprob(0.5) {} void MEPP2ZJet::doinit() { HwMEBase::doinit(); _z0 = getParticleData(ThePEG::ParticleID::Z0 ); _gamma = getParticleData(ThePEG::ParticleID::gamma); // cast the SM pointer to the Herwig SM pointer ThePEG::Ptr<Herwig::StandardModel>::transient_const_pointer hwsm=ThePEG::dynamic_ptr_cast< ThePEG::Ptr<Herwig::StandardModel> ::transient_const_pointer>(standardModel()); // do the initialisation if(!hwsm) throw InitException() << "Must be Herwig::StandardModel in MEPP2ZJet::doinit()" << Exception::runerror; // set the vertex pointers _theFFZVertex = hwsm->vertexFFZ(); _theFFPVertex = hwsm->vertexFFP(); _theQQGVertex = hwsm->vertexFFG(); } ClassDescription<MEPP2ZJet> MEPP2ZJet::initMEPP2ZJet; // Definition of the static class description member. void MEPP2ZJet::Init() { static ClassDocumentation<MEPP2ZJet> documentation ("The MEPP2ZJet class implements the matrix element for Z/gamma+ jet production"); static Parameter<MEPP2ZJet,int> interfaceMaxFlavour ( "MaxFlavour", "The heaviest incoming quark flavour this matrix element is allowed to handle " "(if applicable).", &MEPP2ZJet::_maxflavour, 5, 0, 8, false, false, true); static Switch<MEPP2ZJet,int> interfaceZDecay ("ZDecay", "Which process to included", &MEPP2ZJet::_zdec, 0, false, false); static SwitchOption interfaceZDecayAll (interfaceZDecay, "All", "Include all SM fermions as outgoing particles", 0); static SwitchOption interfaceZDecayQuarks (interfaceZDecay, "Quarks", "All include the quarks as outgoing particles", 1); static SwitchOption interfaceZDecayLeptons (interfaceZDecay, "Leptons", "Only include the leptons as outgoing particles", 2); static SwitchOption interfaceZDecayChargedLeptons (interfaceZDecay, "ChargedLeptons", "Only include the charged leptons as outgoing particles", 3); static SwitchOption interfaceZDecayNeutrinos (interfaceZDecay, "Neutrinos", "Only include the neutrinos as outgoing particles", 4); static SwitchOption interfaceZDecayElectron (interfaceZDecay, "Electron", "Only include e+e- as outgoing particles", 5); static SwitchOption interfaceZDecayMuon (interfaceZDecay, "Muon", "Only include mu+mu- as outgoing particles", 6); static SwitchOption interfaceZDecayTau (interfaceZDecay, "Tau", "Only include tau+tau- as outgoing particles", 7); static SwitchOption interfaceZDecayNu_e (interfaceZDecay, "Nu_e", "Only include nu_e ne_ebar as outgoing particles", 8); static SwitchOption interfaceZDecaynu_mu (interfaceZDecay, "Nu_mu", "Only include nu_mu nu_mubar as outgoing particles", 9); static SwitchOption interfaceZDecaynu_tau (interfaceZDecay, "Nu_tau", "Only include nu_tau nu_taubar as outgoing particles", 10); static SwitchOption interfaceZDecayDown (interfaceZDecay, "Down", "Only include d dbar as outgoing particles", 11); static SwitchOption interfaceZDecayUp (interfaceZDecay, "Up", "Only include u ubar as outgoing particles", 12); static SwitchOption interfaceZDecayStrange (interfaceZDecay, "Strange", "Only include s sbar as outgoing particles", 13); static SwitchOption interfaceZDecayCharm (interfaceZDecay, "Charm", "Only include c cbar as outgoing particles", 14); static SwitchOption interfaceZDecayBottom (interfaceZDecay, "Bottom", "Only include b bbar as outgoing particles", 15); static SwitchOption interfaceZDecayTop (interfaceZDecay, "Top", "Only include t tbar as outgoing particles", 16); static Switch<MEPP2ZJet,unsigned int> interfaceProcess ("Process", "Which subprocesses to include", &MEPP2ZJet::_process, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all subprocesses", 0); static SwitchOption interfaceProcessqqbar (interfaceProcess, "qqbar", "Only include q qbar -> Z/gamma g process", 1); static SwitchOption interfaceProcessqg (interfaceProcess, "qg", "Only include the q g -> Z/gamma q process", 2); static SwitchOption interfaceProcessqbarg (interfaceProcess, "qbarg", "Only include the qbar g -> Z/gamma qbar process", 3); static Parameter<MEPP2ZJet,double> interfacePhotonProbablity ("PhotonProbablity", "Probability for using the \\f$1/s^2\\f$ piece for the" " generation of the gauge boson mass", &MEPP2ZJet::_pprob, 0.5, 0.0, 1.0, false, false, Interface::limited); static Switch<MEPP2ZJet,unsigned int> interfaceGammaZ ("GammaZ", "Which terms to include", &MEPP2ZJet::_gammaZ, 0, false, false); static SwitchOption interfaceGammaZAll (interfaceGammaZ, "All", "Include both gamma and Z terms", 0); static SwitchOption interfaceGammaZGamma (interfaceGammaZ, "Gamma", "Only include the photon", 1); static SwitchOption interfaceGammaZZ (interfaceGammaZ, "Z", "Only include the Z", 2); static Switch<MEPP2ZJet,unsigned int> interfaceWidthOption ("WidthOption", "The option for handling the width of the off-shell W boson", &MEPP2ZJet::_widthopt, 1, false, false); static SwitchOption interfaceWidthOptionFixedDenominator (interfaceWidthOption, "FixedDenominator", "Use a fxied with in the W propagator but the full matrix element" " in the numerator", 1); static SwitchOption interfaceWidthOptionAllRunning (interfaceWidthOption, "AllRunning", "Use a running width in the W propagator and the full matrix " "element in the numerator", 2); } void MEPP2ZJet::getDiagrams() const { // which intermediates to include bool gamma = _gammaZ==0 || _gammaZ==1; bool Z0 = _gammaZ==0 || _gammaZ==2; // pointer for gluon tcPDPtr g = getParticleData(ParticleID::g); bool quark,lepton; for ( int ix=1; ix<17; ++ix ) { // increment counter to switch between quarks and leptons if(ix==7) ix+=4; // is it a valid quark process quark=ix<=6&&(_zdec==0||_zdec==1||_zdec-10==ix); // is it a valid lepton process lepton=ix>=11&&ix<=16&& (_zdec==0||_zdec==2||(_zdec==3&&ix%2==1)|| (_zdec==4&&ix%2==0)||(ix%2==0&&(ix-10)/2==_zdec-7)|| (ix%2==1&&(ix-9)/2==_zdec-4)); // if not a validf process continue if(!(quark||lepton)) continue; // pointer for Z decay products tcPDPtr lm = getParticleData(ix); tcPDPtr lp = lm->CC(); for (int i = 1; i <= _maxflavour; ++i ) { tcPDPtr q = getParticleData(i); tcPDPtr qb = q->CC(); // q qbar -> Z g -> l+l- g if(_process==0||_process==1) { if(gamma) add(new_ptr((Tree2toNDiagram(3), q, q, qb, 1, _gamma, 2, g, 4, lm, 4, lp, -1))); if(Z0) add(new_ptr((Tree2toNDiagram(3), q, q, qb, 1, _z0, 2, g, 4, lm, 4, lp, -2))); if(gamma) add(new_ptr((Tree2toNDiagram(3), q, q, qb, 2, _gamma, 1, g, 4, lm, 4, lp, -3))); if(Z0) add(new_ptr((Tree2toNDiagram(3), q, q, qb, 2, _z0, 1, g, 4, lm, 4, lp, -4))); } // q g -> Z q -> l+l- qbar if(_process==0||_process==2) { if(gamma) add(new_ptr((Tree2toNDiagram(3), q, q, g, 1, _gamma, 2, q, 4, lm, 4, lp, -5))); if(Z0) add(new_ptr((Tree2toNDiagram(3), q, q, g, 1, _z0, 2, q, 4, lm, 4, lp, -6))); if(gamma) add(new_ptr((Tree2toNDiagram(2), q, g, 1, q, 3, _gamma, 3, q, 4, lm, 4, lp, -7))); if(Z0) add(new_ptr((Tree2toNDiagram(2), q, g, 1, q, 3, _z0, 3, q, 4, lm, 4, lp, -8))); } // qbar g -> Z qbar -> l+l- qbar if(_process==0||_process==3) { if(gamma) add(new_ptr((Tree2toNDiagram(3), qb, qb, g, 1, _gamma, 2, qb, 4, lm, 4, lp, -9 ))); if(Z0) add(new_ptr((Tree2toNDiagram(3), qb, qb, g, 1, _z0, 2, qb, 4, lm, 4, lp, -10))); if(gamma) add(new_ptr((Tree2toNDiagram(2), qb, g, 1, qb, 3, _gamma, 3, qb, 4, lm, 4, lp, -11))); if(Z0) add(new_ptr((Tree2toNDiagram(2), qb, g, 1, qb, 3, _z0, 3, qb, 4, lm, 4, lp, -12))); } } } } unsigned int MEPP2ZJet::orderInAlphaS() const { return 1; } unsigned int MEPP2ZJet::orderInAlphaEW() const { return 2; } void MEPP2ZJet::persistentOutput(PersistentOStream & os) const { os << _theFFZVertex << _theFFPVertex << _theQQGVertex << _z0 << _widthopt << _gamma << _process << _maxflavour << _zdec << _pprob << _gammaZ; } void MEPP2ZJet::persistentInput(PersistentIStream & is, int) { is >> _theFFZVertex >> _theFFPVertex >> _theQQGVertex >> _z0 >> _widthopt >> _gamma >> _process >> _maxflavour >> _zdec >> _pprob >> _gammaZ; } int MEPP2ZJet::nDim() const { return 5; } Selector<const ColourLines *> MEPP2ZJet::colourGeometries(tcDiagPtr diag) const { // colour lines for q qbar -> Z g static const ColourLines cqqbar[4]={ColourLines("1 2 5,-3 -5"), ColourLines("1 5,-5 2 -3"), ColourLines("1 2 5,-3 -5, 6 -7"), ColourLines("1 5,-5 2 -3, 6 -7")}; // colour lines for q g -> Z q static const ColourLines cqg [4]={ColourLines("1 2 -3,3 5"), ColourLines("1 -2,2 3 5"), ColourLines("1 2 -3,3 5, 6 -7"), ColourLines("1 -2,2 3 5, 6 -7")}; // colour lines for qbar q -> Z qbar static const ColourLines cqbarg[4]={ColourLines("-1 -2 3,-3 -5"), ColourLines("-1 2,-2 -3 -5"), ColourLines("-1 -2 3,-3 -5, 6 -7"), ColourLines("-1 2,-2 -3 -5, 6 -7")}; // select the correct line unsigned int icol = mePartonData()[3]->coloured() ? 2 : 0; Selector<const ColourLines *> sel; switch(abs(diag->id())) { case 1 : case 2: sel.insert(1.0, &cqqbar[icol]); break; case 3 : case 4: sel.insert(1.0, &cqqbar[icol+1]); break; case 5 : case 6: sel.insert(1.0, &cqg[icol]); break; case 7 : case 8: sel.insert(1.0, &cqg[icol+1]); break; case 9 : case 10: sel.insert(1.0, &cqbarg[icol]); break; case 11 : case 12: sel.insert(1.0, &cqbarg[icol+1]); break; } return sel; } Selector<MEBase::DiagramIndex> MEPP2ZJet::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { int id=abs(diags[i]->id()); if (id <= 4 ) sel.insert(meInfo()[id-1],i); else if(id <= 8 ) sel.insert(meInfo()[id-5],i); else if(id <= 12) sel.insert(meInfo()[id-9],i); } return sel; } Energy2 MEPP2ZJet::scale() const { return _scale; } CrossSection MEPP2ZJet::dSigHatDR() const { return me2()*jacobian()/(16.0*sqr(Constants::pi)*sHat())*sqr(hbarc); } bool MEPP2ZJet::generateKinematics(const double * r) { // initialize jacobian jacobian(1.); // cms energy Energy ecm=sqrt(sHat()); // first generate the mass of the off-shell gauge boson // minimum mass of the tcPDVector ptemp; ptemp.push_back(mePartonData()[3]); ptemp.push_back(mePartonData()[4]); Energy2 minMass2 = max(lastCuts().minSij(mePartonData()[3],mePartonData()[4]), lastCuts().minS(ptemp)); // minimum pt of the jet Energy ptmin = max(lastCuts().minKT(mePartonData()[2]), lastCuts().minKT(_z0)); // maximum mass of the gauge boson so pt is possible Energy2 maxMass2 = min(ecm*(ecm-2.*ptmin),lastCuts().maxS(ptemp)); if(maxMass2<=ZERO||minMass2<ZERO) return false; // also impose the limits from the ParticleData object minMass2 = max(minMass2,sqr(_z0->massMin())); maxMass2 = min(maxMass2,sqr(_z0->massMax())); // also impose the limits from the ParticleData object if(maxMass2<minMass2) return false; // generation of the mass Energy M(_z0->mass()),Gamma(_z0->width()); Energy2 M2(sqr(M)),MG(M*Gamma); double rhomin = atan2((minMass2-M2),MG); double rhomax = atan2((maxMass2-M2),MG); if(r[1]<_pprob) { double rand=r[1]/_pprob; _mz2=minMass2*maxMass2/(minMass2+rand*(maxMass2-minMass2)); } else { double rand=(r[1]-_pprob)/(1.-_pprob); _mz2=M2+MG*tan(rhomin+rand*(rhomax-rhomin)); } Energy mz=sqrt(_mz2); InvEnergy2 emjac1 = _pprob*minMass2*maxMass2/(maxMass2-minMass2)/sqr(_mz2); InvEnergy2 emjac2 = (1.-_pprob)*MG/(rhomax-rhomin)/(sqr(_mz2-M2)+sqr(MG)); // jacobian jacobian(jacobian()/sHat()/(emjac1+emjac2)); // set the masses of the outgoing particles to 2-2 scattering meMomenta()[2].setMass(ZERO); Lorentz5Momentum pz(mz); // generate the polar angle of the hard scattering double ctmin(-1.0), ctmax(1.0); Energy q(ZERO); try { q = SimplePhaseSpace::getMagnitude(sHat(), meMomenta()[2].mass(),mz); } catch ( ImpossibleKinematics ) { return false; } Energy2 pq = sqrt(sHat())*q; if ( ptmin > ZERO ) { double ctm = 1.0 - sqr(ptmin/q); if ( ctm <= 0.0 ) return false; ctmin = max(ctmin, -sqrt(ctm)); ctmax = min(ctmax, sqrt(ctm)); } if ( ctmin >= ctmax ) return false; double cth = getCosTheta(ctmin, ctmax, r[0]); Energy pt = q*sqrt(1.0-sqr(cth)); double phi = 2.0*Constants::pi*r[2]; meMomenta()[2].setVect(Momentum3( pt*sin(phi), pt*cos(phi), q*cth)); pz.setVect( Momentum3(-pt*sin(phi),-pt*cos(phi),-q*cth)); meMomenta()[2].rescaleEnergy(); pz.rescaleEnergy(); // set the scale _scale = _mz2+sqr(pt); // generate the momenta of the Z decay products meMomenta()[3].setMass(mePartonData()[3]->mass()); meMomenta()[4].setMass(mePartonData()[4]->mass()); Energy q2 = ZERO; try { q2 = SimplePhaseSpace::getMagnitude(_mz2, meMomenta()[3].mass(), meMomenta()[4].mass()); } catch ( ImpossibleKinematics ) { return false; } double cth2 =-1.+2.*r[3]; double phi2=Constants::twopi*r[4]; Energy pt2 =q2*sqrt(1.-sqr(cth2)); Lorentz5Momentum pl[2]={Lorentz5Momentum( pt2*cos(phi2), pt2*sin(phi2), q2*cth2,ZERO, meMomenta()[3].mass()), Lorentz5Momentum(-pt2*cos(phi2),-pt2*sin(phi2),-q2*cth2,ZERO, meMomenta()[4].mass())}; pl[0].rescaleEnergy(); pl[1].rescaleEnergy(); Boost boostv(pz.boostVector()); pl[0].boost(boostv); pl[1].boost(boostv); meMomenta()[3] = pl[0]; meMomenta()[4] = pl[1]; // check passes all the cuts vector<LorentzMomentum> out(3); tcPDVector tout(3); for(unsigned int ix=0;ix<3;++ix) { out[ ix] = meMomenta()[ix+2]; tout[ix] = mePartonData()[ix+2]; } if ( !lastCuts().passCuts(tout, out, mePartonData()[0], mePartonData()[1]) ) return false; // jacobian jacobian((pq/sHat())*Constants::pi*jacobian()/8./sqr(Constants::pi)*q2/mz); return true; } double MEPP2ZJet::getCosTheta(double ctmin, double ctmax, const double r) { double cth = 0.0; double zmin = 0.5*(1.0 - ctmax); double zmax = 0.5*(1.0 - ctmin); if ( zmin <= 0.0 || zmax >= 1.0 ) { jacobian((ctmax - ctmin)*jacobian()); cth = ctmin + r*(ctmax-ctmin); } else { double A1 = (2.0*zmax - 1.0)/(zmax*(1.0-zmax)); double A0 = (2.0*zmin - 1.0)/(zmin*(1.0-zmin)); double A = r*(A1 - A0) + A0; double z = A < 2.0? 2.0/(sqrt(sqr(A) + 4.0) + 2 - A): 0.5*(A - 2.0 + sqrt(sqr(A) + 4.0))/A; cth = 1.0 - 2.0*z; jacobian((2.0*(A1 - A0)*sqr(z)*sqr(1.0 - z)/(sqr(z) + sqr(1.0 - z)))*jacobian()); } return cth; } double MEPP2ZJet::me2() const { InvEnergy2 output(ZERO); // construct spinors for the leptons (always the same) vector<SpinorBarWaveFunction> lm; vector<SpinorWaveFunction> lp; SpinorBarWaveFunction lmout(meMomenta()[3],mePartonData()[3],outgoing); SpinorWaveFunction lpout(meMomenta()[4],mePartonData()[4],outgoing); for(unsigned int ix=0;ix<2;++ix) { lmout.reset(ix);lm.push_back(lmout); lpout.reset(ix);lp.push_back(lpout); } // q g to q Z if(mePartonData()[0]->id()<=6&&mePartonData()[0]->id()>0&& mePartonData()[1]->id()==ParticleID::g) { // polarization states for the particles vector<SpinorWaveFunction> fin; vector<VectorWaveFunction> gin; vector<SpinorBarWaveFunction> fout; SpinorWaveFunction qin (meMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction glin(meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction qout(meMomenta()[2],mePartonData()[2],outgoing); for(unsigned int ix=0;ix<2;++ix) { qin.reset(ix) ; fin.push_back(qin); glin.reset(2*ix); gin.push_back(glin); qout.reset(ix);fout.push_back(qout); } output=qgME(fin,gin,fout,lm,lp); } // qbar g to qbar Z else if(mePartonData()[0]->id()>=-6&&mePartonData()[0]->id()<0&& mePartonData()[1]->id()==ParticleID::g) { vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> gin; vector<SpinorWaveFunction> aout; SpinorBarWaveFunction qbin (meMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction glin (meMomenta()[1],mePartonData()[1],incoming); SpinorWaveFunction qbout(meMomenta()[2],mePartonData()[2],outgoing); for(unsigned int ix=0;ix<2;++ix) { qbin .reset(ix ); ain .push_back(qbin ); glin .reset(2*ix); gin .push_back(glin ); qbout.reset(ix ); aout.push_back(qbout); } output=qbargME(ain,gin,aout,lm,lp); } // q qbar to g Z else { vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> gout; SpinorWaveFunction qin (meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction qbin(meMomenta()[1],mePartonData()[1],incoming); VectorWaveFunction glout(meMomenta()[2],mePartonData()[2],outgoing); for(unsigned int ix=0;ix<2;++ix) { qin.reset(ix) ; fin.push_back(qin); qbin.reset(ix) ; ain.push_back(qbin); glout.reset(2*ix); gout.push_back(glout); } output=qqbarME(fin,ain,gout,lm,lp); } return output*sHat(); } InvEnergy2 MEPP2ZJet::qqbarME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, vector<VectorWaveFunction> & gout, vector<SpinorBarWaveFunction> & lm, vector<SpinorWaveFunction> & lp, bool calc) const { // if calculation spin corrections construct the me if(calc) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1,PDT::Spin1Half, PDT::Spin1Half)); // diagrams to include bool gamma = _gammaZ==0 || _gammaZ==1; bool Z0 = _gammaZ==0 || _gammaZ==2; // some integers unsigned int ihel1,ihel2,ohel1,ohel2,ohel3; // compute the leptonic photon and Z currents for speed VectorWaveFunction bcurr[2][2][2]; for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { // photon current if(gamma) bcurr[0][ohel2][ohel3]= _theFFPVertex->evaluate(_mz2,1,_gamma,lp[ohel3],lm[ohel2]); // Z current if(Z0) bcurr[1][ohel2][ohel3]= _theFFZVertex->evaluate(_mz2,_widthopt,_z0,lp[ohel3],lm[ohel2]); } } // compute the matrix elements double me[5]={0.,0.,0.,0.,0.}; Complex diag[4]; SpinorWaveFunction inters; SpinorBarWaveFunction interb; for(ihel1=0;ihel1<2;++ihel1) { for(ihel2=0;ihel2<2;++ihel2) { for(ohel1=0;ohel1<2;++ohel1) { // intermediates for the diagrams inters=_theQQGVertex->evaluate(_scale,5,mePartonData()[0], fin[ihel1],gout[ohel1]); interb=_theQQGVertex->evaluate(_scale,5,mePartonData()[1], ain[ihel2],gout[ohel1]); for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { diag[0] = gamma ? _theFFPVertex->evaluate(_mz2,fin[ihel1],interb, bcurr[0][ohel2][ohel3]) : 0.; diag[1]= Z0 ? _theFFZVertex->evaluate(_mz2,fin[ihel1],interb, bcurr[1][ohel2][ohel3]) : 0.; diag[2]= gamma ? _theFFPVertex->evaluate(_mz2,inters,ain[ihel2], bcurr[0][ohel2][ohel3]) : 0.; diag[3]= Z0 ? _theFFZVertex->evaluate(_mz2,inters,ain[ihel2], bcurr[1][ohel2][ohel3]) : 0.; // diagram contributions me[1] += norm(diag[0]); me[2] += norm(diag[1]); me[3] += norm(diag[2]); me[4] += norm(diag[3]); // total diag[0] += diag[1] + diag[2] + diag[3]; me[0] += norm(diag[0]); if(calc) _me(ihel1,ihel2,2*ohel1,ohel2,ohel3) = diag[0]; } } } } } // results // initial state spin and colour average double colspin = 1./9./4.; // and C_F N_c from matrix element colspin *= 4.; // and for Z decay products if(mePartonData()[3]->coloured()) colspin *= 3.; DVector save; for(unsigned int ix=0;ix<5;++ix) { me[ix] *= colspin; if(ix>0) save.push_back(me[ix]); } meInfo(save); return me[0]*UnitRemoval::InvE2; } InvEnergy2 MEPP2ZJet::qgME(vector<SpinorWaveFunction> & fin, vector<VectorWaveFunction> & gin, vector<SpinorBarWaveFunction> & fout, vector<SpinorBarWaveFunction> & lm, vector<SpinorWaveFunction> & lp, bool calc) const { // diagrams to include bool gamma = _gammaZ==0 || _gammaZ==1; bool Z0 = _gammaZ==0 || _gammaZ==2; // if calculation spin corrections construct the me if(calc) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1, PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half)); // some integers unsigned int ihel1,ihel2,ohel1,ohel2,ohel3; // compute the leptonic photon and Z currents for speed VectorWaveFunction bcurr[2][2][2]; for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { // photon current if(gamma) bcurr[0][ohel2][ohel3]= _theFFPVertex->evaluate(_mz2,1,_gamma,lp[ohel3],lm[ohel2]); // Z current if(Z0) bcurr[1][ohel2][ohel3]= _theFFZVertex->evaluate(_mz2,_widthopt,_z0,lp[ohel3],lm[ohel2]); } } // compute the matrix elements double me[5]={0.,0.,0.,0.,0.}; Complex diag[4]; SpinorWaveFunction inters; SpinorBarWaveFunction interb; Energy2 _scale=scale(); for(ihel1=0;ihel1<2;++ihel1) { for(ihel2=0;ihel2<2;++ihel2) { for(ohel1=0;ohel1<2;++ohel1) { // intermediates for the diagrams interb=_theQQGVertex->evaluate(_scale,5,mePartonData()[2], fout[ohel1],gin[ihel2]); inters=_theQQGVertex->evaluate(_scale,5,mePartonData()[0], fin[ihel1],gin[ihel2]); for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { diag[0]=gamma ? _theFFPVertex->evaluate(_mz2,fin[ihel1],interb, bcurr[0][ohel2][ohel3]) : 0.; diag[1]=Z0 ? _theFFZVertex->evaluate(_mz2,fin[ihel1],interb, bcurr[1][ohel2][ohel3]) : 0.; diag[2]=gamma ? _theFFPVertex->evaluate(_mz2,inters,fout[ohel1], bcurr[0][ohel2][ohel3]) : 0.; diag[3]=Z0 ? _theFFZVertex->evaluate(_mz2,inters,fout[ohel1], bcurr[1][ohel2][ohel3]) : 0.; // diagram contributions me[1] += norm(diag[0]); me[2] += norm(diag[1]); me[3] += norm(diag[2]); me[4] += norm(diag[3]); // total diag[0] += diag[1] + diag[2] + diag[3]; me[0] += norm(diag[0]); if(calc) _me(ihel1,2*ihel2,ohel1,ohel2,ohel3) = diag[0]; } } } } } // results // initial state spin and colour average double colspin = 1./24./4.; // and C_F N_c from matrix element colspin *= 4.; // and for Z decay products if(mePartonData()[3]->coloured()) colspin *= 3.; DVector save; for(unsigned int ix=0;ix<5;++ix) { me[ix] *= colspin; if(ix>0) save.push_back(me[ix]); } meInfo(save); return me[0]*UnitRemoval::InvE2; } InvEnergy2 MEPP2ZJet::qbargME(vector<SpinorBarWaveFunction> & fin, vector<VectorWaveFunction> & gin, vector<SpinorWaveFunction> & fout, vector<SpinorBarWaveFunction> & lm, vector<SpinorWaveFunction> & lp, bool calc) const { // diagrams to include bool gamma = _gammaZ==0 || _gammaZ==1; bool Z0 = _gammaZ==0 || _gammaZ==2; // if calculation spin corrections construct the me if(calc) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1, PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half)); // some integers unsigned int ihel1,ihel2,ohel1,ohel2,ohel3; // compute the leptonic photon and Z currents for speed VectorWaveFunction bcurr[2][2][2]; for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { // photon current if(gamma) bcurr[0][ohel2][ohel3]= _theFFPVertex->evaluate(_mz2,1,_gamma,lp[ohel3],lm[ohel2]); // Z current if(Z0) bcurr[1][ohel2][ohel3]= _theFFZVertex->evaluate(_mz2,_widthopt,_z0,lp[ohel3],lm[ohel2]); } } // compute the matrix elements double me[5]={0.,0.,0.,0.,0.}; Complex diag[4]; SpinorWaveFunction inters; SpinorBarWaveFunction interb; Energy2 _scale=scale(); for(ihel1=0;ihel1<2;++ihel1) { for(ihel2=0;ihel2<2;++ihel2) { for(ohel1=0;ohel1<2;++ohel1) { // intermediates for the diagrams inters=_theQQGVertex->evaluate(_scale,5,mePartonData()[2], fout[ohel1],gin[ihel2]); interb=_theQQGVertex->evaluate(_scale,5,mePartonData()[0], fin[ihel1],gin[ihel2]); for(ohel2=0;ohel2<2;++ohel2) { for(ohel3=0;ohel3<2;++ohel3) { diag[0]= gamma ? _theFFPVertex->evaluate(_mz2,inters,fin[ihel1], bcurr[0][ohel2][ohel3]) : 0.; diag[1]= Z0 ? _theFFZVertex->evaluate(_mz2,inters,fin[ihel1], bcurr[1][ohel2][ohel3]) : 0.; diag[2]= gamma ? _theFFPVertex->evaluate(_mz2,fout[ohel1],interb, bcurr[0][ohel2][ohel3]) : 0.; diag[3]= Z0 ? _theFFZVertex->evaluate(_mz2,fout[ohel1],interb, bcurr[1][ohel2][ohel3]) : 0.; // diagram contributions me[1] += norm(diag[0]); me[2] += norm(diag[1]); me[3] += norm(diag[2]); me[4] += norm(diag[3]); // total diag[0] += diag[1] + diag[2] + diag[3]; me[0] += norm(diag[0]); if(calc) _me(ihel1,2*ihel2,ohel1,ohel2,ohel3) = diag[0]; } } } } } // results // initial state spin and colour average double colspin = 1./24./4.; // and C_F N_c from matrix element colspin *= 4.; // and for Z decay products if(mePartonData()[3]->coloured()) colspin*=3.; DVector save; for(unsigned int ix=0;ix<5;++ix) { me[ix] *= colspin; if(ix>0) save.push_back(me[ix]); } meInfo(save); return me[0]*UnitRemoval::InvE2; } void MEPP2ZJet::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard(5); // incoming hard[0]=sub->incoming().first; hard[1]=sub->incoming().second; if((hard[0]->id()<0&&hard[1]->id()<=6)|| hard[0]->id()==ParticleID::g) swap(hard[0],hard[1]); // outgoing for(unsigned int ix=0;ix<3;++ix) { unsigned int iloc; PPtr mother=sub->outgoing()[ix]->parents()[0]; if(mother&&(mother->id()==ParticleID::gamma||mother->id()==ParticleID::Z0)) { if(sub->outgoing()[ix]->id()>0) iloc=3; else iloc=4; } else iloc=2; hard[iloc]=sub->outgoing()[ix]; } // wavefunctions for the Z decay products vector<SpinorBarWaveFunction> lm; vector<SpinorWaveFunction> lp; SpinorBarWaveFunction(lm,hard[3],outgoing,true,true); SpinorWaveFunction (lp,hard[4],outgoing,true,true); // identify hard process and calculate matrix element // q g to q Z if(hard[0]->id()<=6&&hard[0]->id()>0&&hard[1]->id()==ParticleID::g) { vector<SpinorWaveFunction> fin; vector<VectorWaveFunction> gin; vector<SpinorBarWaveFunction> fout; SpinorWaveFunction (fin ,hard[0],incoming,false,true); VectorWaveFunction (gin ,hard[1],incoming,false,true,true); SpinorBarWaveFunction (fout,hard[2],outgoing,true ,true); gin[1]=gin[2]; qgME(fin,gin,fout,lm,lp,true); } // qbar g to qbar Z else if(hard[0]->id()>=-6&&hard[0]->id()<0&&hard[1]->id()==ParticleID::g) { vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> gin; vector<SpinorWaveFunction> aout; SpinorBarWaveFunction(ain ,hard[0],incoming,false,true); VectorWaveFunction (gin ,hard[1],incoming,false,true,true); SpinorWaveFunction (aout,hard[2],outgoing,true ,true); gin[1]=gin[2]; qbargME(ain,gin,aout,lm,lp,true); } // q qbar to g Z else { vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> gout; SpinorWaveFunction (fin ,hard[0],incoming,false,true); SpinorBarWaveFunction(ain ,hard[1],incoming,false,true); VectorWaveFunction (gout,hard[2],outgoing,true ,true,true); gout[1]=gout[2]; qqbarME(fin,ain,gout,lm,lp,true); } // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(_me); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<5;++ix) (hard[ix]->spinInfo())->productionVertex(hardvertex); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2VGamma.h����������������������������������������������0000644�0001750�0001750�00000015706�11754474776�023070� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEPP2VGamma_H #define HERWIG_MEPP2VGamma_H // // This is the declaration of the MEPP2VGamma class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" namespace Herwig { using namespace ThePEG; /** * The MEPP2VGamma class implements the . * * @see \ref MEPP2VGammaInterfaces "The interfaces" * defined for MEPP2VGamma. */ class MEPP2VGamma: public HwMEBase { public: /** * The default constructor. */ MEPP2VGamma(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Matrix element for \f$f\bar{f}\to W^\pm \gamma\f$. * @param f1 Spinors for the incoming fermion * @param a1 Spinors for the incoming antifermion * @param v1 \f$W^\pm\f$ wavefunction * @param v2 \f$\gamma\f$ wavefunction * @param me Whether or not to calculate the matrix element for spin correlations */ double WGammaME(vector<SpinorWaveFunction> & f1, vector<SpinorBarWaveFunction> & a1, vector<VectorWaveFunction> & v1, vector<VectorWaveFunction> & v2, bool me) const; /** * Matrix element for \f$f\bar{f}\to Z^0 \gamma\f$. * @param f1 Spinors for the incoming fermion * @param a1 Spinors for the incoming antifermion * @param v1 \f$Z^0\f$ wavefunction * @param v2 \f$\gamma\f$ wavefunction * @param me Whether or not to calculate the matrix element for spin correlations */ double ZGammaME(vector<SpinorWaveFunction> & f1, vector<SpinorBarWaveFunction> & a1, vector<VectorWaveFunction> & v1, vector<VectorWaveFunction> & v2, bool me) const; 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2VGamma> initMEPP2VGamma; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2VGamma & operator=(const MEPP2VGamma &); private: /** * Vertices */ //@{ /** * FFPVertex */ AbstractFFVVertexPtr FFPvertex_; /** * FFWVertex */ AbstractFFVVertexPtr FFWvertex_; /** * FFZVertex */ AbstractFFVVertexPtr FFZvertex_; /** * WWW Vertex */ AbstractVVVVertexPtr WWWvertex_; //@} /** * Processes */ unsigned int process_; /** * Allowed flavours of the incoming quarks */ int maxflavour_; /** * Treatment of the the boson masses */ unsigned int massOption_; /** * The matrix element */ mutable ProductionMatrixElement me_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2VGamma. */ template <> struct BaseClassTrait<Herwig::MEPP2VGamma,1> { /** Typedef of the first base class of MEPP2VGamma. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2VGamma class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2VGamma> : public ClassTraitsBase<Herwig::MEPP2VGamma> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2VGamma"; } /** * The name of a file containing the dynamic library where the class * MEPP2VGamma is implemented. It may also include several, space-separated, * libraries if the class MEPP2VGamma depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2VGamma_H */ ����������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2HiggsVBF.cc�������������������������������������������0000644�0001750�0001750�00000167051�11756364747�023454� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2HiggsVBF class. // #include "MEPP2HiggsVBF.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/PDT/StandardMatchers.h" #include <numeric> #include "Herwig++/Utilities/Maths.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Repository/CurrentGenerator.h" using namespace Herwig; // namespace { // using namespace Herwig; // using namespace ThePEG; // using namespace ThePEG::Helicity; // void debuggingMatrixElement(bool BGF, // tcPDPtr partons1, tcPDPtr partons2, // tcPDPtr partons3, tcPDPtr partons4, // const Lorentz5Momentum & psystem0, // const Lorentz5Momentum & psystem1, // const Lorentz5Momentum & pother0, // const Lorentz5Momentum & pother1, // const Lorentz5Momentum & p0, // const Lorentz5Momentum & p1, // const Lorentz5Momentum & p2, // const Lorentz5Momentum & phiggs, // Energy2 Q12, Energy2 scale, // double old) { // // get the vertex and the boson // tcHwSMPtr hwsm=ThePEG::dynamic_ptr_cast<tcHwSMPtr> // (CurrentGenerator::current().standardModel()); // assert(hwsm); // tcPDPtr boson; // AbstractFFVVertexPtr weakVertex; // AbstractFFVVertexPtr strongVertex = hwsm->vertexFFG(); // AbstractVVSVertexPtr higgsVertex = hwsm->vertexWWH(); // if(partons1->id()==partons2->id()) { // weakVertex = hwsm->vertexFFZ(); // boson = hwsm->getParticleData(ParticleID::Z0); // } // else { // weakVertex = hwsm->vertexFFW(); // boson = hwsm->getParticleData(ParticleID::Wplus); // } // tcPDPtr hdata = hwsm->getParticleData(ParticleID::h0); // tcPDPtr gluon = hwsm->getParticleData(ParticleID::g); // SpinorWaveFunction q1,q2; // SpinorBarWaveFunction qbar1,qbar2; // if(partons1->id()>0) { // q1 = SpinorWaveFunction (psystem0,partons1,incoming); // qbar1 = SpinorBarWaveFunction(psystem1,partons2,outgoing); // } // else { // q1 = SpinorWaveFunction (psystem1,partons2,outgoing); // qbar1 = SpinorBarWaveFunction(psystem0,partons1,incoming); // } // if(partons3->id()>0) { // q2 = SpinorWaveFunction (pother0,partons3,incoming); // qbar2 = SpinorBarWaveFunction(pother1,partons4,outgoing); // } // else { // q2 = SpinorWaveFunction (pother1,partons4,outgoing); // qbar2 = SpinorBarWaveFunction(pother0,partons3,incoming); // } // ScalarWaveFunction higgs(phiggs,hdata,outgoing); // if(!BGF) { // SpinorWaveFunction q1p; // SpinorBarWaveFunction qbar1p; // if(partons1->id()>0) { // q1p = SpinorWaveFunction (p0 ,partons1,incoming); // qbar1p = SpinorBarWaveFunction(p1 ,partons2,outgoing); // } // else { // q1p = SpinorWaveFunction (p1 ,partons2,outgoing); // qbar1p = SpinorBarWaveFunction(p0 ,partons1,incoming); // } // VectorWaveFunction gl(p2,gluon,outgoing); // double lome(0.),realme(0.); // for(unsigned int lhel1=0;lhel1<2;++lhel1) { // q2.reset(lhel1); // for(unsigned int lhel2=0;lhel2<2;++lhel2) { // qbar2.reset(lhel2); // VectorWaveFunction off1 // = weakVertex->evaluate(scale,3,boson,q2,qbar2); // VectorWaveFunction off2 // = higgsVertex->evaluate(scale,3,boson,off1,higgs); // for(unsigned int qhel1=0;qhel1<2;++qhel1) { // q1.reset(qhel1); // q1p.reset(qhel1); // for(unsigned int qhel2=0;qhel2<2;++qhel2) { // qbar1.reset(qhel2); // qbar1p.reset(qhel2); // Complex diag = weakVertex->evaluate(scale,q1,qbar1,off2); // lome += norm(diag); // for(unsigned int ghel=0;ghel<2;++ghel) { // gl.reset(2*ghel); // SpinorWaveFunction inter1 = // strongVertex->evaluate(Q12,5,q1p.particle(),q1p,gl); // Complex diag1 = weakVertex->evaluate(scale,inter1,qbar1p,off2); // SpinorBarWaveFunction inter2 = // strongVertex->evaluate(Q12,5,qbar1p.particle(),qbar1p,gl); // Complex diag2 = weakVertex->evaluate(scale,q1p,inter2,off2); // realme += norm(diag1+diag2); // } // } // } // } // } // double test1 = realme/lome/hwsm->alphaS(Q12)*Q12*UnitRemoval::InvE2; // cerr << "testing ratio A " << old/test1 << "\n"; // } // else { // SpinorWaveFunction q1p; // SpinorBarWaveFunction qbar1p; // if(partons1->id()>0) { // q1p = SpinorWaveFunction (p2,partons1->CC(),outgoing); // qbar1p = SpinorBarWaveFunction(p1,partons2 ,outgoing); // } // else { // q1p = SpinorWaveFunction (p1,partons2 ,outgoing); // qbar1p = SpinorBarWaveFunction(p2,partons1->CC(),outgoing); // } // VectorWaveFunction gl(p0,gluon,incoming); // double lome(0.),realme(0.); // for(unsigned int lhel1=0;lhel1<2;++lhel1) { // q2.reset(lhel1); // for(unsigned int lhel2=0;lhel2<2;++lhel2) { // qbar2.reset(lhel2); // VectorWaveFunction off1 // = weakVertex->evaluate(scale,3,boson,q2,qbar2); // VectorWaveFunction off2 // = higgsVertex->evaluate(scale,3,boson,off1,higgs); // for(unsigned int qhel1=0;qhel1<2;++qhel1) { // q1.reset(qhel1); // q1p.reset(qhel1); // for(unsigned int qhel2=0;qhel2<2;++qhel2) { // qbar1.reset(qhel2); // qbar1p.reset(qhel2); // Complex diag = weakVertex->evaluate(scale,q1,qbar1,off2); // lome += norm(diag); // for(unsigned int ghel=0;ghel<2;++ghel) { // gl.reset(2*ghel); // SpinorWaveFunction inter1 = // strongVertex->evaluate(Q12,5,q1p.particle(),q1p,gl); // Complex diag1 = weakVertex->evaluate(scale,inter1,qbar1p,off2); // SpinorBarWaveFunction inter2 = // strongVertex->evaluate(Q12,5,qbar1p.particle(),qbar1p,gl); // Complex diag2 = weakVertex->evaluate(scale,q1p,inter2,off2); // realme += norm(diag1+diag2); // } // } // } // } // } // double test1 = realme/lome/hwsm->alphaS(Q12)*Q12*UnitRemoval::InvE2; // cerr << "testing ratio B " << old/test1 << "\n"; // } // } //} MEPP2HiggsVBF::MEPP2HiggsVBF() : comptonWeight_(8.), BGFWeight_(30.), pTmin_(1.*GeV),initial_(10.),final_(8.), procProb_(0.5), comptonInt_(0.), bgfInt_(0.), nover_(0),maxwgt_(make_pair(0.,0.)) {} void MEPP2HiggsVBF::doinit() { gluon_ = getParticleData(ParticleID::g); // integrals of me over phase space double r5=sqrt(5.),darg((r5-1.)/(r5+1.)),ath(0.5*log((1.+1./r5)/(1.-1./r5))); comptonInt_ = 2.*(-21./20.-6./(5.*r5)*ath+sqr(Constants::pi)/3. -2.*Math::ReLi2(1.-darg)-2.*Math::ReLi2(1.-1./darg)); bgfInt_ = 121./9.-56./r5*ath; // get the vertex pointers from the SM object tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); if(!hwsm) throw InitException() << "Wrong type of StandardModel object in " << "MEPP2HiggsVBF::doinit() the Herwig++" << " version must be used" << Exception::runerror; // set the vertex setWWHVertex(hwsm->vertexWWH()); higgs(getParticleData(ParticleID::h0)); MEfftoffH::doinit(); } void MEPP2HiggsVBF::dofinish() { MEfftoffH::dofinish(); if(nover_==0) return; generator()->log() << "VBFMECorrection when applying the hard correction " << nover_ << " weights larger than one were generated of which" << " the largest was " << maxwgt_.first << " for the QCD compton" << " processes and " << maxwgt_.second << " for the BGF process\n"; } void MEPP2HiggsVBF::getDiagrams() const { // get the quark particle data objects as we'll be using them tcPDPtr q[6],qbar[6]; for ( int ix=0; ix<5; ++ix ) { q [ix] = getParticleData(ix+1); qbar[ix] = q[ix]->CC(); } // WW processes if(process()==0||process()==1) { std::vector<pair<tcPDPtr,tcPDPtr> > parentpair; parentpair.reserve(6); // don't even think of putting 'break' in here! switch(maxFlavour()) { case 5: if (minFlavour()<=4) parentpair.push_back(make_pair(getParticleData(ParticleID::b), getParticleData(ParticleID::c))); if (minFlavour()<=2) parentpair.push_back(make_pair(getParticleData(ParticleID::b), getParticleData(ParticleID::u))); case 4: if (minFlavour()<=3) parentpair.push_back(make_pair(getParticleData(ParticleID::s), getParticleData(ParticleID::c))); if (minFlavour()<=1) parentpair.push_back(make_pair(getParticleData(ParticleID::d), getParticleData(ParticleID::c))); case 3: if (minFlavour()<=2) parentpair.push_back(make_pair(getParticleData(ParticleID::s), getParticleData(ParticleID::u))); case 2: if (minFlavour()<=1) parentpair.push_back(make_pair(getParticleData(ParticleID::d), getParticleData(ParticleID::u))); default: ; } for(unsigned int ix=0;ix<parentpair.size();++ix) { for(unsigned int iy=0;iy<parentpair.size();++iy) { // q1 q2 -> q1' q2' h if(parentpair[ix].first->id()<parentpair[iy].second->id()) { add(new_ptr((Tree2toNDiagram(4), parentpair[ix].first, WMinus(), WPlus(), parentpair[iy].second, 1, parentpair[ix].second, 3, parentpair[iy].first, 2, higgs(),-1))); } else { add(new_ptr((Tree2toNDiagram(4), parentpair[iy].second, WPlus(), WMinus(), parentpair[ix].first, 1, parentpair[iy].first, 3, parentpair[ix].second, 2, higgs(),-1))); } // q1 qbar2 -> q1' qbar2' h add(new_ptr((Tree2toNDiagram(4), parentpair[ix].first, WMinus(), WPlus(), parentpair[iy].first->CC(), 1, parentpair[ix].second, 3, parentpair[iy].second->CC(), 2, higgs(),-1))); add(new_ptr((Tree2toNDiagram(4),parentpair[iy].second, WPlus(), WMinus(), parentpair[ix].second->CC(), 1, parentpair[iy].first, 3, parentpair[ix].first->CC(), 2, higgs(),-1))); // qbar1 qbar2 -> qbar1' qbar2' h if(parentpair[ix].first->id()<parentpair[ix].second->id()) { add(new_ptr((Tree2toNDiagram(4), parentpair[ix].first->CC(), WPlus(), WMinus(), parentpair[iy].second->CC(), 1, parentpair[ix].second->CC(), 3, parentpair[iy].first->CC(), 2, higgs(),-1))); } else { add(new_ptr((Tree2toNDiagram(4), parentpair[iy].second->CC(), WMinus(), WPlus(), parentpair[ix].first->CC(), 1, parentpair[iy].first->CC(), 3, parentpair[ix].second->CC(), 2, higgs(),-1))); } } } } // ZZ processes if(process()==0||process()==2) { for(unsigned int ix=minFlavour()-1;ix<maxFlavour();++ix) { for(unsigned int iy=ix;iy<maxFlavour();++iy) { // q q -> q q H add(new_ptr((Tree2toNDiagram(4), q[ix], Z0(), Z0(), q[iy], 1, q[ix], 3, q[iy], 2, higgs(),-2))); // qbar qbar -> qbar qbar H add(new_ptr((Tree2toNDiagram(4), qbar[ix], Z0(), Z0(), qbar[iy], 1, qbar[ix], 3, qbar[iy], 2, higgs(),-2))); } // q qbar -> q qbar H for(unsigned int iy=minFlavour()-1;iy<maxFlavour();++iy) { add(new_ptr((Tree2toNDiagram(4), q[ix], Z0(), Z0(), qbar[iy], 1, q[ix], 3, qbar[iy], 2, higgs(),-2))); } } } } void MEPP2HiggsVBF::persistentOutput(PersistentOStream & os) const { os << initial_ << final_ << alpha_ << ounit(pTmin_,GeV) << comptonWeight_ << BGFWeight_ << gluon_ << comptonInt_ << bgfInt_ << procProb_; } void MEPP2HiggsVBF::persistentInput(PersistentIStream & is, int) { is >> initial_ >> final_ >> alpha_ >> iunit(pTmin_,GeV) >> comptonWeight_ >> BGFWeight_ >> gluon_ >> comptonInt_ >> bgfInt_ >> procProb_; } ClassDescription<MEPP2HiggsVBF> MEPP2HiggsVBF::initMEPP2HiggsVBF; // Definition of the static class description member. void MEPP2HiggsVBF::Init() { static ClassDocumentation<MEPP2HiggsVBF> documentation ("The MEPP2HiggsVBF class implements Higgs production via vector-boson fusion"); static Reference<MEPP2HiggsVBF,ShowerAlpha> interfaceShowerAlphaQCD ("ShowerAlphaQCD", "The object calculating the strong coupling constant", &MEPP2HiggsVBF::alpha_, false, false, true, false, false); static Parameter<MEPP2HiggsVBF,Energy> interfacepTMin ("pTMin", "The minimum pT", &MEPP2HiggsVBF::pTmin_, GeV, 1.*GeV, 0.0*GeV, 10.0*GeV, false, false, Interface::limited); static Parameter<MEPP2HiggsVBF,double> interfaceComptonWeight ("ComptonWeight", "Weight for the overestimate ofthe compton channel", &MEPP2HiggsVBF::comptonWeight_, 50.0, 0.0, 100.0, false, false, Interface::limited); static Parameter<MEPP2HiggsVBF,double> interfaceBGFWeight ("BGFWeight", "Weight for the overestimate of the BGF channel", &MEPP2HiggsVBF::BGFWeight_, 100.0, 0.0, 1000.0, false, false, Interface::limited); static Parameter<MEPP2HiggsVBF,double> interfaceProcessProbability ("ProcessProbability", "The probabilty of the QCD compton process for the process selection", &MEPP2HiggsVBF::procProb_, 0.3, 0.0, 1., false, false, Interface::limited); } HardTreePtr MEPP2HiggsVBF::generateHardest(ShowerTreePtr tree) { pair< tShowerParticlePtr, tShowerParticlePtr> first,second; pair<tcBeamPtr,tcBeamPtr> beams; pair<tPPtr,tPPtr> hadrons; // get the incoming particles for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { if(!first.first) { first.first = cit->first->progenitor(); beams.first = cit->first->beam(); hadrons.first = cit->first->original()->parents()[0]; } else { second.first = cit->first->progenitor(); beams.second = cit->first->beam(); hadrons.second = cit->first->original()->parents()[0]; } } // and the outgoing for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt=tree->outgoingLines().begin();cjt!=tree->outgoingLines().end();++cjt) { if(cjt->first->progenitor()->id()==ParticleID::h0) { higgs_ = cjt->first->progenitor(); } else { if(abs(cjt->first->progenitor()->id())>5) continue; if(cjt->first->progenitor()->colourLine()&& cjt->first->progenitor()->colourLine()==first.first->colourLine()) { first.second = cjt->first->progenitor(); continue; } if(cjt->first->progenitor()->antiColourLine()&& cjt->first->progenitor()->antiColourLine()==first.first->antiColourLine()) { first.second = cjt->first->progenitor(); continue; } if(cjt->first->progenitor()->colourLine()&& cjt->first->progenitor()->colourLine()==second.first->colourLine()) { second.second = cjt->first->progenitor(); continue; } if(cjt->first->progenitor()->antiColourLine()&& cjt->first->progenitor()->antiColourLine()==second.first->antiColourLine()) { second.second = cjt->first->progenitor(); continue; } } } // loop over the two possible emitting systems q_ [0] = first .second->momentum()-first .first->momentum(); q2_[0] = -q_[0].m2(); q_ [1] = second.second->momentum()-second.first->momentum(); q2_[1] = -q_[1].m2(); for(unsigned int ix=0;ix<2;++ix) { if(ix==1) { swap(first,second); swap(beams.first,beams.second); } // check beam, all particles assert(beams.first && higgs_ && first .first && first.second && second.first && second.second); // beam and pdf beam_[ix] = beams.first; pdf_ [ix] = beam_[ix]->pdf(); assert(beam_[ix] && pdf_[ix] ); // Particle data objects partons_[ix][0] = first. first->dataPtr(); partons_[ix][1] = first.second->dataPtr(); partons_[ix][2] = second. first->dataPtr(); partons_[ix][3] = second.second->dataPtr(); // extract the born variables xB_[ix] = first.first->x(); Lorentz5Momentum pb = first.first->momentum(); Axis axis(q_[ix].vect().unit()); double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); rot_[ix] = LorentzRotation(); if(axis.perp2()>1e-20) { rot_[ix].setRotate(-acos(axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); rot_[ix].rotateX(Constants::pi); } if(abs(1.-q_[ix].e()/q_[ix].vect().mag())>1e-6) rot_[ix].boostZ( q_[ix].e()/q_[ix].vect().mag()); pb *= rot_[ix]; if(pb.perp2()/GeV2>1e-20) { Boost trans = -1./pb.e()*pb.vect(); trans.setZ(0.); rot_[ix].boost(trans); } // momenta of the particles phiggs_ [ix] = rot_[ix]*higgs_->momentum(); pother_ [ix][0] = rot_[ix]*second. first->momentum(); pother_ [ix][1] = rot_[ix]*second.second->momentum(); psystem_[ix][0] = rot_[ix]* first. first->momentum(); psystem_[ix][1] = rot_[ix]* first.second->momentum(); q_[ix] *= rot_[ix]; pTCompton_[ix] = pTBGF_[ix] = ZERO; // generate a compton point generateCompton(ix); // generate a BGF point generateBGF(ix); } // no valid emissions, return if(pTCompton_[0]<ZERO && pTCompton_[1]<ZERO&& pTBGF_ [0]<ZERO && pTBGF_ [1]<ZERO) { for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { if(QuarkMatcher::Check(cit->first->progenitor()->data())) cit->first->maximumpT(pTmin_); } for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { if(QuarkMatcher::Check(cit->first->progenitor()->data())) cit->first->maximumpT(pTmin_); } return HardTreePtr(); } // find the maximum pT emission unsigned int system = 0; bool isCompton = false; Energy pTmax = -GeV; for(unsigned int ix=0;ix<2;++ix) { if(pTCompton_[ix]>pTmax) { pTmax = pTCompton_[ix]; isCompton = true; system = ix; } if(pTBGF_[ix]>pTmax) { pTmax = pTBGF_[ix]; isCompton = false; system = ix; } } if(system==0) { swap(first,second); swap(beams.first,beams.second); } // add the non emitting particles vector<HardBranchingPtr> spaceBranchings,allBranchings; spaceBranchings.push_back(new_ptr(HardBranching(second.first,SudakovPtr(), HardBranchingPtr(), HardBranching::Incoming))); allBranchings.push_back(spaceBranchings.back()); allBranchings.push_back(new_ptr(HardBranching(second.second,SudakovPtr(), HardBranchingPtr(), HardBranching::Outgoing))); allBranchings.push_back(new_ptr(HardBranching(higgs_,SudakovPtr(), HardBranchingPtr(), HardBranching::Outgoing))); rot_[system].invert(); // compton hardest if(isCompton) { for(unsigned int ix=0;ix<ComptonMomenta_[system].size();++ix) { ComptonMomenta_[system][ix].transform(rot_[system]); } ShowerParticlePtr newqout (new_ptr(ShowerParticle(partons_[system][1],true))); newqout->set5Momentum(ComptonMomenta_[system][1]); ShowerParticlePtr newg(new_ptr(ShowerParticle(gluon_,true))); newg->set5Momentum(ComptonMomenta_[system][2]); ShowerParticlePtr newqin (new_ptr(ShowerParticle(partons_[system][0],false ))); newqin->set5Momentum(ComptonMomenta_[system][0]); if(ComptonISFS_[system]) { ShowerParticlePtr newspace(new_ptr(ShowerParticle(partons_[system][0],false))); newspace->set5Momentum(ComptonMomenta_[system][0]-ComptonMomenta_[system][2]); HardBranchingPtr spaceBranch(new_ptr(HardBranching(newqin,SudakovPtr(), HardBranchingPtr(), HardBranching::Incoming))); HardBranchingPtr offBranch(new_ptr(HardBranching(newspace,SudakovPtr(), spaceBranch, HardBranching::Incoming))); spaceBranch->addChild(offBranch); HardBranchingPtr g(new_ptr(HardBranching(newg,SudakovPtr(),spaceBranch, HardBranching::Outgoing))); spaceBranch->addChild(g); HardBranchingPtr outBranch(new_ptr(HardBranching(newqout,SudakovPtr(), HardBranchingPtr(), HardBranching::Outgoing))); spaceBranchings.push_back(spaceBranch); allBranchings.push_back(offBranch); allBranchings.push_back(outBranch); ColinePtr newline(new_ptr(ColourLine())); newline->addColoured(newspace,newspace->dataPtr()->iColour()!=PDT::Colour3); newline->addColoured(newqout ,newspace->dataPtr()->iColour()!=PDT::Colour3); } else { ShowerParticlePtr newtime(new_ptr(ShowerParticle(partons_[system][1],true))); newtime->set5Momentum(ComptonMomenta_[system][1]+ComptonMomenta_[system][2]); HardBranchingPtr spaceBranch(new_ptr(HardBranching(newqin,SudakovPtr(), HardBranchingPtr(), HardBranching::Incoming))); HardBranchingPtr offBranch(new_ptr(HardBranching(newtime,SudakovPtr(), HardBranchingPtr(), HardBranching::Outgoing))); HardBranchingPtr g(new_ptr(HardBranching(newg,SudakovPtr(),offBranch, HardBranching::Outgoing))); HardBranchingPtr outBranch(new_ptr(HardBranching(newqout,SudakovPtr(),offBranch, HardBranching::Outgoing))); offBranch->addChild(outBranch); offBranch->addChild(g); spaceBranchings.push_back(spaceBranch); allBranchings.push_back(spaceBranch); allBranchings.push_back(offBranch); ColinePtr newline(new_ptr(ColourLine())); newline->addColoured(newqin ,newqin->dataPtr()->iColour()!=PDT::Colour3); newline->addColoured(newtime,newqin->dataPtr()->iColour()!=PDT::Colour3); } } // BGF hardest else { for(unsigned int ix=0;ix<BGFMomenta_[system].size();++ix) { BGFMomenta_[system][ix].transform(rot_[system]); } ShowerParticlePtr newq (new_ptr(ShowerParticle(partons_[system][1],true))); newq->set5Momentum(BGFMomenta_[system][1]); ShowerParticlePtr newqbar(new_ptr(ShowerParticle(partons_[system][0]->CC(),true))); newqbar->set5Momentum(BGFMomenta_[system][2]); ShowerParticlePtr newg (new_ptr(ShowerParticle(gluon_,false))); newg->set5Momentum(BGFMomenta_[system][0]); ShowerParticlePtr newspace(new_ptr(ShowerParticle(partons_[system][0],false))); newspace->set5Momentum(BGFMomenta_[system][0]-BGFMomenta_[system][2]); HardBranchingPtr spaceBranch(new_ptr(HardBranching(newg,SudakovPtr(),HardBranchingPtr(), HardBranching::Incoming))); HardBranchingPtr offBranch(new_ptr(HardBranching(newspace,SudakovPtr(),spaceBranch, HardBranching::Incoming))); HardBranchingPtr qbar(new_ptr(HardBranching(newqbar,SudakovPtr(),spaceBranch, HardBranching::Outgoing))); spaceBranch->addChild(offBranch); spaceBranch->addChild(qbar); HardBranchingPtr outBranch(new_ptr(HardBranching(newq,SudakovPtr(), HardBranchingPtr(), HardBranching::Outgoing))); spaceBranchings.push_back(spaceBranch); allBranchings.push_back(offBranch); allBranchings.push_back(outBranch); ColinePtr newline(new_ptr(ColourLine())); newline->addColoured(newspace,newspace->dataPtr()->iColour()!=PDT::Colour3); newline->addColoured(newq ,newspace->dataPtr()->iColour()!=PDT::Colour3); } HardTreePtr newTree(new_ptr(HardTree(allBranchings,spaceBranchings, ShowerInteraction::QCD))); // Set the maximum pt for all other emissions and connect hard and shower tree Energy pT = isCompton ? pTCompton_[system] : pTBGF_[system]; // incoming particles for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { // set maximum pT if(QuarkMatcher::Check(cit->first->progenitor()->data())) cit->first->maximumpT(pT); set<HardBranchingPtr>::iterator cjt=newTree->branchings().begin(); if(cit->first->progenitor()==first.first) { ++cjt;++cjt;++cjt; } newTree->connect(cit->first->progenitor(),*cjt); tPPtr beam =cit->first->original(); if(!beam->parents().empty()) beam=beam->parents()[0]; (*cjt)->beam(beam); HardBranchingPtr parent=(*cjt)->parent(); while(parent) { parent->beam(beam); parent=parent->parent(); }; } // outgoing particles for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { // set maximum pT if(QuarkMatcher::Check(cit->first->progenitor()->data())) cit->first->maximumpT(pT); for(set<HardBranchingPtr>::iterator cjt=newTree->branchings().begin(); cjt!=newTree->branchings().end();++cjt) { if((*cjt)->branchingParticle()->isFinalState()&& (*cjt)->branchingParticle()->id()==cit->first->progenitor()->id()) { newTree->connect(cit->first->progenitor(),*cjt); } } } // set the evolution partners and scales ShowerParticleVector particles; for(set<HardBranchingPtr>::iterator cit=newTree->branchings().begin(); cit!=newTree->branchings().end();++cit) { particles.push_back((*cit)->branchingParticle()); } for(set<HardBranchingPtr>::iterator cjt=newTree->branchings().begin(); cjt!=newTree->branchings().end();++cjt) { if(cjt==newTree->branchings().begin()) { (**cjt).showerMomentum((**cjt).branchingParticle()->momentum()); ++cjt; (**cjt).showerMomentum((**cjt).branchingParticle()->momentum()); ++cjt; (**cjt).showerMomentum((**cjt).branchingParticle()->momentum()); ++cjt; } } return newTree; } void MEPP2HiggsVBF::generateCompton(unsigned int system) { // calculate the A coefficient for the correlations acoeff_ = A(partons_[system][0],partons_[system][1], partons_[system][2],partons_[system][3]); // maximum value of the xT double xT = sqrt((1.-xB_[system])/xB_[system]); double xTMin = 2.*pTmin_/sqrt(q2_[system]); double zp; // prefactor double a = alpha_->overestimateValue()*comptonWeight_/Constants::twopi; // loop to generate kinematics double wgt(0.),xp(0.); l_ = 2.*pother_[system][0]/sqrt(q2_[system]); m_ = 2.*pother_[system][1]/sqrt(q2_[system]); vector<double> azicoeff; do { wgt = 0.; // intergration variables dxT/xT^3 xT *= 1./sqrt(1.-2.*log(UseRandom::rnd())/a*sqr(xT)); // dz zp = UseRandom::rnd(); xp = 1./(1.+0.25*sqr(xT)/zp/(1.-zp)); // check allowed if(xp<xB_[system]||xp>1.) continue; // phase-space piece of the weight wgt = 8.*(1.-xp)*zp/comptonWeight_; // PDF piece of the weight Energy2 mu2 = q2_[system]*((1.-xp)*(1-zp)*zp/xp+1.); double pdf = pdf_[system]->xfx(beam_[system],partons_[system][0], mu2 ,xB_[system]/xp)/ pdf_[system]->xfx(beam_[system],partons_[system][0], scale(),xB_[system] ); wgt *= max(pdf,0.); // me piece of the weight // double me = comptonME(system,xT,xp,zp,phi); double x2 = 1.-(1.-zp)/xp; azicoeff = ComptonME(xp,x2,xT,l_,m_); double me = 4./3.*alpha_->ratio(0.25*q2_[system]*sqr(xT))* (azicoeff[0]+0.5*azicoeff[2]+0.5*azicoeff[4]); wgt *= me; if(wgt>1.||wgt<0.) { ostringstream wstring; wstring << "MEPP2HiggsVBF::generateCompton() " << "Weight greater than one or less than zero" << "wgt = " << wgt << "\n"; generator()->logWarning( Exception(wstring.str(), Exception::warning) ); } } while(xT>xTMin&&UseRandom::rnd()>wgt); if(xT<=xTMin) { pTCompton_[system]=-GeV; return; } // generate phi unsigned int itry(0); double phimax = std::accumulate(azicoeff.begin(),azicoeff.end(),0.); double phiwgt,phi; do { phi = UseRandom::rnd()*Constants::twopi; double cphi(cos(phi)),sphi(sin(phi)); phiwgt = azicoeff[0]+azicoeff[5]*sphi*cphi +azicoeff[1]*cphi+azicoeff[2]*sqr(cphi) +azicoeff[3]*sphi+azicoeff[4]*sqr(sphi); ++itry; } while (phimax*UseRandom::rnd() > phiwgt && itry<200); if(itry==200) throw Exception() << "Too many tries in MEPP2HiggsVBF" << "::generateCompton() to" << " generate phi" << Exception::eventerror; // momenta for the configuration Energy Q(sqrt(q2_[system])); double x1 = -1./xp; double x2 = 1.-(1.-zp)/xp; double x3 = 2.+x1-x2; Lorentz5Momentum p1( 0.5*Q*xT*cos(phi), 0.5*Q*xT*sin(phi), -0.5*Q*x2, 0.5*Q*sqrt(sqr(xT)+sqr(x2))); Lorentz5Momentum p2(-0.5*Q*xT*cos(phi), -0.5*Q*xT*sin(phi), -0.5*Q*x3, 0.5*Q*sqrt(sqr(xT)+sqr(x3))); Lorentz5Momentum p0(ZERO,ZERO,-0.5*Q*x1,-0.5*Q*x1); pTCompton_[system] = 0.5*Q*xT; ComptonMomenta_[system].resize(3); ComptonMomenta_[system][0] = p0; ComptonMomenta_[system][1] = p1; ComptonMomenta_[system][2] = p2; ComptonISFS_[system] = zp>xp; } double MEPP2HiggsVBF::comptonME(unsigned int system, double xT, double xp, double zp, double phi) { // scale and prefactors double CFfact = 4./3.*alpha_->ratio(0.25*q2_[system]*sqr(xT)); Energy Q(sqrt(q2_[system])); double x1 = -1./xp; double x2 = 1.-(1.-zp)/xp; double x3 = 2.+x1-x2; //set NLO momenta Lorentz5Momentum p1( 0.5*Q*xT*cos(phi), 0.5*Q*xT*sin(phi), -0.5*Q*x2, 0.5*Q*sqrt(sqr(xT)+sqr(x2))); Lorentz5Momentum p2(-0.5*Q*xT*cos(phi), -0.5*Q*xT*sin(phi), -0.5*Q*x3, 0.5*Q*sqrt(sqr(xT)+sqr(x3))); Lorentz5Momentum p0(ZERO,ZERO,-0.5*Q*x1,-0.5*Q*x1); Lorentz5Momentum qnlo = p2+p1-p0; // Breit frame variables Lorentz5Momentum r1 = -p0/x1; Lorentz5Momentum r2 = p1/x2; // electroweak parameters //Energy2 mz2 = sqr(Z0()->mass()); //Energy2 mw2 = sqr(WPlus()->mass()); double c0L,c1L,c0R,c1R; //Energy2 mb2; // W if(partons_[system][0]->id()!=partons_[system][1]->id()) { //mb2 = mw2; c0L = sqrt(0.5); c0R = 0; c1L = sqrt(0.5); c1R = 0; } // Z else { //mb2 = mz2; if(abs(partons_[system][0]->id())%2==0) { c0L = generator()->standardModel()->vu()+ generator()->standardModel()->au(); c0R = generator()->standardModel()->vu()- generator()->standardModel()->au(); } else { c0L = generator()->standardModel()->vd()+ generator()->standardModel()->ad(); c0R = generator()->standardModel()->vd()- generator()->standardModel()->ad(); } if(abs(partons_[system][2]->id())%2==0) { c1L = generator()->standardModel()->vu()+ generator()->standardModel()->au(); c1R = generator()->standardModel()->vu()- generator()->standardModel()->au(); } else { c1L = generator()->standardModel()->vd()+ generator()->standardModel()->ad(); c1R = generator()->standardModel()->vd()- generator()->standardModel()->ad(); } c0L *= 0.25; c0R *= 0.25; c1L *= 0.25; c1R *= 0.25; } // Matrix element variables double G1 = sqr(c0L*c1L)+sqr(c0R*c1R); double G2 = sqr(c0L*c1R)+sqr(c0R*c1L); //Energy4 term1,term2,term3,loME; Energy4 term1,term2,loME; if(partons_[system][0]->id()>0) { if(partons_[system][2]->id()>0) { term1 = loMatrixElement(r1 ,pother_[system][0], qnlo+r1 ,pother_[system][1],G1,G2); term2 = loMatrixElement(r2-qnlo ,pother_[system][0], r2 ,pother_[system][1],G1,G2); loME = loMatrixElement(psystem_[system][0],pother_[system][0], psystem_[system][1],pother_[system][1],G1,G2); } else { term1 = loMatrixElement(r1 ,pother_[system][1], qnlo+r1 ,pother_[system][0],G1,G2); term2 = loMatrixElement(r2-qnlo ,pother_[system][1], r2 ,pother_[system][0],G1,G2); loME = loMatrixElement(psystem_[system][0],pother_[system][1], psystem_[system][1],pother_[system][0],G1,G2); } } else { if(partons_[system][2]->id()>0) { term1 = loMatrixElement(qnlo+r1 ,pother_[system][0], r1 ,pother_[system][1],G1,G2); term2 = loMatrixElement(r2 ,pother_[system][0], r2-qnlo ,pother_[system][1],G1,G2); loME = loMatrixElement(psystem_[system][1],pother_[system][0], psystem_[system][0],pother_[system][1],G1,G2); } else { term1 = loMatrixElement(qnlo+r1,pother_[system][1],r1 , pother_[system][0],G1,G2); term2 = loMatrixElement(r2 ,pother_[system][1],r2-qnlo, pother_[system][0],G1,G2); loME = loMatrixElement(psystem_[system][1],pother_[system][1], psystem_[system][0],pother_[system][0],G1,G2); } } double R1 = term1/loME; double R2 = sqr(x2)/(sqr(x2)+sqr(xT))*(term2/loME); // debuggingMatrixElement(false, // partons_[system][0],partons_[system][1], // partons_[system][2],partons_[system][3], // psystem_[system][0],psystem_[system][1], // pother_ [system][0],pother_ [system][1], // p0,p1,p2,phiggs_[system],q2_[system],scale(), // 8.*Constants::pi/(1.-xp)/(1.-zp)*(R1+sqr(xp)*(sqr(x2)+sqr(xT))*R2)); // cerr << "testing pieces A " << R1 << " " << sqr(xp)*(sqr(x2)+sqr(xT)) << " " << R2 << "\n"; return CFfact*(R1+sqr(xp)*(sqr(x2)+sqr(xT))*R2); } void MEPP2HiggsVBF::generateBGF(unsigned int system) { // maximum value of the xT double xT = (1.-xB_[system])/xB_[system]; double xTMin = 2.*pTmin_/sqrt(q2_[system]); double zp; // prefactor double a = alpha_->overestimateValue()*BGFWeight_/Constants::twopi; // loop to generate kinematics double wgt(0.),xp(0.); l_ = 2.*pother_[system][0]/sqrt(q2_[system]); m_ = 2.*pother_[system][1]/sqrt(q2_[system]); vector<double> azicoeff; do { wgt = 0.; // intergration variables dxT/xT^3 xT *= 1./sqrt(1.-2.*log(UseRandom::rnd())/a*sqr(xT)); // dzp zp = UseRandom::rnd(); xp = 1./(1.+0.25*sqr(xT)/zp/(1.-zp)); // check allowed if(xp<xB_[system]||xp>1.) continue; // phase-space piece of the weight wgt = 8.*sqr(1.-xp)*zp/BGFWeight_; // PDF piece of the weight Energy2 mu2 = q2_[system]*((1.-xp)*(1-zp)*zp/xp+1.); wgt *= pdf_[system]->xfx(beam_[system],gluon_ , mu2 ,xB_[system]/xp)/ pdf_[system]->xfx(beam_[system],partons_[system][0], scale(),xB_[system]); // me piece of the weight //double me = BGFME(system,xT,xp,zp,phi); double x1 = -1./xp; double x2 = 1.-(1.-zp)/xp; double x3 = 2.+x1-x2; azicoeff = BGFME(xp,x2,x3,xT,l_,m_); double me = 0.5*alpha_->ratio(0.25*q2_[system]*sqr(xT))* (azicoeff[0]+0.5*azicoeff[2]+0.5*azicoeff[4]); wgt *= me; if(wgt>1.||wgt<0.) { ostringstream wstring; wstring << "MEPP2HiggsVBF::generateBGF() " << "Weight greater than one or less than zero" << "wgt = " << wgt << "\n"; generator()->logWarning( Exception(wstring.str(), Exception::warning) ); } } while(xT>xTMin&&UseRandom::rnd()>wgt); if(xT<=xTMin) { pTBGF_[system] = -GeV; return; } // generate phi unsigned int itry(0); double phimax = std::accumulate(azicoeff.begin(),azicoeff.end(),0.); double phiwgt,phi; do { phi = UseRandom::rnd()*Constants::twopi; double cphi(cos(phi)),sphi(sin(phi)); phiwgt = azicoeff[0]+azicoeff[5]*sphi*cphi +azicoeff[1]*cphi+azicoeff[2]*sqr(cphi) +azicoeff[3]*sphi+azicoeff[4]*sqr(sphi); ++itry; } while (phimax*UseRandom::rnd() > phiwgt && itry<200); if(itry==200) throw Exception() << "Too many tries in MEPP2HiggsVBF" << "::generateBGF() to" << " generate phi" << Exception::eventerror; // momenta for the configuration Energy Q(sqrt(q2_[system])); double x1 = -1./xp; double x2 = 1.-(1.-zp)/xp; double x3 = 2.+x1-x2; Lorentz5Momentum p1( 0.5*Q*xT*cos(phi), 0.5*Q*xT*sin(phi), -0.5*Q*x2, 0.5*Q*sqrt(sqr(xT)+sqr(x2))); Lorentz5Momentum p2(-0.5*Q*xT*cos(phi), -0.5*Q*xT*sin(phi), -0.5*Q*x3, 0.5*Q*sqrt(sqr(xT)+sqr(x3))); Lorentz5Momentum p0(ZERO,ZERO,-0.5*Q*x1,-0.5*Q*x1); pTBGF_[system] = 0.5*Q*xT; BGFMomenta_[system].resize(3); BGFMomenta_[system][0] = p0; BGFMomenta_[system][1] = p1; BGFMomenta_[system][2] = p2; } double MEPP2HiggsVBF::BGFME(unsigned int system, double xT, double xp, double zp, double phi) { // scale and prefactors double TRfact = 0.5*alpha_->ratio(0.25*q2_[system]*sqr(xT)); Energy Q(sqrt(q2_[system])); double x1 = -1./xp; double x2 = 1.-(1.-zp)/xp; double x3 = 2.+x1-x2; // Set NLO momenta Lorentz5Momentum p1( 0.5*Q*xT*cos(phi), 0.5*Q*xT*sin(phi), -0.5*Q*x2, 0.5*Q*sqrt(sqr(xT)+sqr(x2))); Lorentz5Momentum p2(-0.5*Q*xT*cos(phi), -0.5*Q*xT*sin(phi), -0.5*Q*x3, 0.5*Q*sqrt(sqr(xT)+sqr(x3))); Lorentz5Momentum p0(ZERO,ZERO,-0.5*Q*x1,-0.5*Q*x1); Lorentz5Momentum qnlo = p2+p1-p0; // Breit frame variables Lorentz5Momentum r2 = p1/x2; Lorentz5Momentum r3 = -p2/x3; // electroweak parameters //Energy2 mz2 = sqr(Z0()->mass()); //Energy2 mw2 = sqr(WPlus()->mass()); double c0L,c1L,c0R,c1R; //Energy2 mb2; // W if(partons_[system][0]->id()!=partons_[system][1]->id()) { //mb2 = mw2; c0L = sqrt(0.5); c0R = 0; c1L = sqrt(0.5); c1R = 0; } // Z else { //mb2 = mz2; if(abs(partons_[system][0]->id())%2==0) { c0L = generator()->standardModel()->vu()+ generator()->standardModel()->au(); c0R = generator()->standardModel()->vu()- generator()->standardModel()->au(); } else { c0L = generator()->standardModel()->vd()+ generator()->standardModel()->ad(); c0R = generator()->standardModel()->vd()- generator()->standardModel()->ad(); } if(abs(partons_[system][2]->id())%2==0) { c1L = generator()->standardModel()->vu()+ generator()->standardModel()->au(); c1R = generator()->standardModel()->vu()- generator()->standardModel()->au(); } else { c1L = generator()->standardModel()->vd()+ generator()->standardModel()->ad(); c1R = generator()->standardModel()->vd()- generator()->standardModel()->ad(); } c0L *= 0.25; c0R *= 0.25; c1L *= 0.25; c1R *= 0.25; } // Matrix element variables double G1 = sqr(c0L*c1L)+sqr(c0R*c1R); double G2 = sqr(c0L*c1R)+sqr(c0R*c1L); //Energy4 term1,term2,term3,loME; Energy4 term2,term3,loME; if(partons_[system][0]->id()>0) { if(partons_[system][2]->id()>0) { term2 = loMatrixElement(r2-qnlo,pother_[system][0], r2 ,pother_[system][1],G1,G2); term3 = loMatrixElement(r3 ,pother_[system][0], qnlo+r3,pother_[system][1],G1,G2); loME = loMatrixElement(psystem_[system][0],pother_[system][0], psystem_[system][1],pother_[system][1],G1,G2); } else { term2 = loMatrixElement(r2-qnlo,pother_[system][1], r2 ,pother_[system][0],G1,G2); term3 = loMatrixElement(r3 ,pother_[system][1], qnlo+r3,pother_[system][0],G1,G2); loME = loMatrixElement(psystem_[system][0],pother_[system][1], psystem_[system][1],pother_[system][0],G1,G2); } } else { if(partons_[system][2]->id()>0) { term2 = loMatrixElement(r2 ,pother_[system][0], r2-qnlo,pother_[system][1],G1,G2); term3 = loMatrixElement(qnlo+r3,pother_[system][0], r3 ,pother_[system][1],G1,G2); loME = loMatrixElement(psystem_[system][1],pother_[system][0], psystem_[system][0],pother_[system][1],G1,G2); } else { term2 = loMatrixElement(r2 ,pother_[system][1], r2-qnlo,pother_[system][0],G1,G2); term3 = loMatrixElement(qnlo+r3,pother_[system][1], r3 ,pother_[system][0],G1,G2); loME = loMatrixElement(psystem_[system][1],pother_[system][1], psystem_[system][0],pother_[system][0],G1,G2); } } double R3 = sqr(x3)/(sqr(x3)+sqr(xT))*(term3/loME); double R2 = sqr(x2)/(sqr(x2)+sqr(xT))*(term2/loME); // debuggingMatrixElement(true, // partons_[system][0],partons_[system][1], // partons_[system][2],partons_[system][3], // psystem_[system][0],psystem_[system][1], // pother_ [system][0],pother_ [system][1], // p0,p1,p2,phiggs_[system],q2_[system], // 8.*Constants::pi/zp/(1.-zp)*(sqr(xp)*(sqr(x3)+sqr(xT))*R3+ // sqr(xp)*(sqr(x2)+sqr(xT))*R2)); return TRfact* (sqr(xp)*(sqr(x3)+sqr(xT))*R3+ sqr(xp)*(sqr(x2)+sqr(xT))*R2); } Energy4 MEPP2HiggsVBF::loMatrixElement(const Lorentz5Momentum &p1, const Lorentz5Momentum &p2, const Lorentz5Momentum &q1, const Lorentz5Momentum &q2, double G1, double G2) const { return G1*(p1*p2)*(q1*q2) + G2*(p1*q2)*(q1*p2); } void MEPP2HiggsVBF::initializeMECorrection(ShowerTreePtr tree, double & initial, double & final) { systems_.clear(); for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { if(QuarkMatcher::Check(cit->first->progenitor()->data())) { systems_.push_back(tChannelPair()); systems_.back().hadron = cit->first->original()->parents()[0]; systems_.back().beam = cit->first->beam(); systems_.back().incoming = cit->first->progenitor(); systems_.back().pdf = systems_.back().beam->pdf(); } } vector<ShowerParticlePtr> outgoing; for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cjt=tree->outgoingLines().begin();cjt!=tree->outgoingLines().end();++cjt) { if(cjt->first->progenitor()->id()==ParticleID::h0) higgs_ = cjt->first->progenitor(); else if(QuarkMatcher::Check(cjt->first->progenitor()->data())) outgoing.push_back(cjt->first->progenitor()); } assert(outgoing.size()==2&&higgs_); // match up the quarks for(unsigned int ix=0;ix<systems_.size();++ix) { if(systems_[ix].incoming->colourLine()) { for(unsigned int iy=0;iy<outgoing.size();++iy) { if(outgoing[iy]->colourLine()==systems_[ix].incoming->colourLine()) { systems_[ix].outgoing=outgoing[iy]; break; } } } else { for(unsigned int iy=0;iy<outgoing.size();++iy) { if(outgoing[iy]->antiColourLine()==systems_[ix].incoming->antiColourLine()) { systems_[ix].outgoing=outgoing[iy]; break; } } } } assert(systems_[0].outgoing&&systems_[1].outgoing); assert(systems_.size()==2); initial = initial_; final = final_; } void MEPP2HiggsVBF::applyHardMatrixElementCorrection(ShowerTreePtr tree) { static const double eps = 1e-6; // select emitting line if(UseRandom::rndbool()) swap(systems_[0],systems_[1]); // extract the born variables q_[0] = systems_[0].outgoing->momentum()-systems_[0].incoming->momentum(); q2_[0] = -q_[0].m2(); Energy Q = sqrt(q2_[0]); xB_[0] = systems_[0].incoming->x(); // construct lorentz transform from lab to breit frame Lorentz5Momentum phadron = systems_[0].hadron->momentum(); phadron.setMass(0.*GeV); phadron.rescaleEnergy(); Lorentz5Momentum pcmf = phadron+0.5/xB_[0]*q_[0]; pcmf.rescaleMass(); LorentzRotation rot(-pcmf.boostVector()); Lorentz5Momentum pbeam = rot*phadron; Axis axis(pbeam.vect().unit()); double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); rot.rotate(-acos(axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); Lorentz5Momentum pout = rot*(systems_[1].outgoing->momentum()+higgs_->momentum()); rot.rotateZ(-atan2(pout.y(),pout.x())); // calculate the A coefficient for the correlations acoeff_ = A(systems_[0].incoming->dataPtr(),systems_[0].outgoing->dataPtr(), systems_[1].incoming->dataPtr(),systems_[1].outgoing->dataPtr()); vector<double> azicoeff; // select the type of process bool BGF = UseRandom::rnd()>procProb_; double wgt,xp,zp,x1,x2,x3,xperp; l_ = 2.*(rot*systems_[1].incoming->momentum())/Q; m_ = 2.*(rot*systems_[1].outgoing->momentum())/Q; // compton process if(!BGF) { wgt = generateComptonPoint(xp,zp); if(xp<eps) return; // common pieces Energy2 mu2 = q2_[0]*((1.-xp)*(1-zp)*zp/xp+1); wgt *= 2./3./Constants::pi*alpha_->value(mu2)/procProb_; // PDF piece wgt *= systems_[0].pdf->xfx(systems_[0].beam, systems_[0].incoming->dataPtr(),mu2 ,xB_[0]/xp)/ systems_[0].pdf->xfx(systems_[0].beam, systems_[0].incoming->dataPtr(),scale(),xB_[0] ); // numerator factors wgt /= (1.-xp)*(1.-zp); // other bits xperp = sqrt(4.*(1.-xp)*(1.-zp)*zp/xp); x1 = -1./xp; x2 = 1.-(1.-zp)/xp; x3 = 2.+x1-x2; // matrix element pieces azicoeff = ComptonME(xp,x2,xperp,l_,m_); } else { wgt = generateBGFPoint(xp,zp); if(xp<1e-6) return; // common pieces Energy2 mu2 = q2_[0]*((1.-xp)*(1-zp)*zp/xp+1); wgt *= 0.25/Constants::pi*alpha_->value(mu2)/(1.-procProb_); // PDF piece wgt *= systems_[0].pdf->xfx(systems_[0].beam, gluon_ ,mu2 ,xB_[0]/xp)/ systems_[0].pdf->xfx(systems_[0].beam, systems_[0].incoming->dataPtr(),scale(),xB_[0] ); // numerator factors wgt /= (1.-zp); // other bits xperp = sqrt(4.*(1.-xp)*(1.-zp)*zp/xp); x1 = -1./xp; x2 = 1.-(1.-zp)/xp; x3 = 2.+x1-x2; // matrix element pieces azicoeff = BGFME(xp,x2,x3,xperp,l_,m_); } // compute the azimuthal average of the weight wgt *= azicoeff[0]+0.5*(azicoeff[2]+azicoeff[4]); // finally factor as picked one line wgt *= 2.; // decide whether or not to accept the weight if(UseRandom::rnd()>wgt) return; // if accepted generate generate phi unsigned int itry(0); double phimax = std::accumulate(azicoeff.begin(),azicoeff.end(),0.); double phiwgt,phi; do { phi = UseRandom::rnd()*Constants::twopi; double cphi(cos(phi)),sphi(sin(phi)); phiwgt = azicoeff[0]+azicoeff[5]*sphi*cphi +azicoeff[1]*cphi+azicoeff[2]*sqr(cphi) +azicoeff[3]*sphi+azicoeff[4]*sqr(sphi); ++itry; } while (phimax*UseRandom::rnd() > phiwgt && itry<200); if(itry==200) throw Exception() << "Too many tries in VBFMECorrection" << "::applyHardMatrixElementCorrection() to" << " generate phi" << Exception::eventerror; // compute the new incoming and outgoing momenta Lorentz5Momentum p1 = Lorentz5Momentum( 0.5*Q*xperp*cos(phi), 0.5*Q*xperp*sin(phi), -0.5*Q*x2,0.*GeV,0.*GeV); p1.rescaleEnergy(); Lorentz5Momentum p2 = Lorentz5Momentum(-0.5*Q*xperp*cos(phi),-0.5*Q*xperp*sin(phi), -0.5*Q*x3,0.*GeV,0.*GeV); p2.rescaleEnergy(); Lorentz5Momentum pin(0.*GeV,0.*GeV,-0.5*x1*Q,-0.5*x1*Q,0.*GeV); // debugging code to test vs helicity amplitude expression for matrix elements // double cphi(cos(phi)),sphi(sin(phi)); // double old = (azicoeff[0]+azicoeff[5]*sphi*cphi // +azicoeff[1]*cphi+azicoeff[2]*sqr(cphi) // +azicoeff[3]*sphi+azicoeff[4]*sqr(sphi)); // if(!BGF) { // old *= 8.*Constants::pi/(1.-xp)/(1.-zp); // } // else { // old *= 8.*Constants::pi/zp/(1.-zp); // } // debuggingMatrixElement(BGF, // systems_[0].incoming->dataPtr(), // systems_[0].outgoing->dataPtr(), // systems_[1].incoming->dataPtr(), // systems_[1].outgoing->dataPtr(), // rot*systems_[0].incoming->momentum(), // rot*systems_[0].outgoing->momentum(), // rot*systems_[1].incoming->momentum(), // rot*systems_[1].outgoing->momentum(), // pin,p1,p2,rot*higgs_->momentum(), // q2_[0],scale(),old); // we need inverse of the rotation, i.e back to lab from breit rot.invert(); // transform the momenta to lab frame pin *= rot; p1 *= rot; p2 *= rot; // test to ensure outgoing particles can be put on-shell if(!BGF) { if(p1.e()<systems_[0].outgoing->dataPtr()->constituentMass()) return; if(p2.e()<gluon_ ->constituentMass()) return; } else { if(p1.e()<systems_[0].outgoing->dataPtr() ->constituentMass()) return; if(p2.e()<systems_[0].incoming->dataPtr()->CC()->constituentMass()) return; } // stats for weights > 1 if(wgt>1.) { ++nover_; if(!BGF) maxwgt_.first = max(maxwgt_.first ,wgt); else maxwgt_.second = max(maxwgt_.second,wgt); } // create the new particles and add to ShowerTree bool isquark = systems_[0].incoming->colourLine(); if(!BGF) { PPtr newin = new_ptr(Particle(*systems_[0].incoming)); newin->set5Momentum(pin); PPtr newg = gluon_ ->produceParticle(p2 ); PPtr newout = systems_[0].outgoing->dataPtr()->produceParticle(p1 ); ColinePtr col=isquark ? systems_[0].incoming->colourLine() : systems_[0].incoming->antiColourLine(); ColinePtr newline=new_ptr(ColourLine()); // final-state emission if(xp>zp) { col->removeColoured(newout,!isquark); col->addColoured(newin,!isquark); col->addColoured(newg,!isquark); newline->addColoured(newg,isquark); newline->addColoured(newout,!isquark); } // initial-state emission else { col->removeColoured(newin ,!isquark); col->addColoured(newout,!isquark); col->addColoured(newg,isquark); newline->addColoured(newg,!isquark); newline->addColoured(newin,!isquark); } PPtr orig; for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { if(cit->first->progenitor()!=systems_[0].incoming) continue; // remove old particles from colour line col->removeColoured(cit->first->copy(),!isquark); col->removeColoured(cit->first->progenitor(),!isquark); // insert new particles cit->first->copy(newin); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newin,1,false))); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; sp->x(xB_[0]/xp); cit->first->perturbative(xp>zp); if(xp<=zp) orig=cit->first->original(); } for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { if(cit->first->progenitor()!=systems_[0].outgoing) continue; // remove old particles from colour line col->removeColoured(cit->first->copy(),!isquark); col->removeColoured(cit->first->progenitor(),!isquark); // insert new particles cit->first->copy(newout); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newout,1,true))); cit->first->progenitor(sp); tree->outgoingLines()[cit->first]=sp; cit->first->perturbative(xp<=zp); if(xp>zp) orig=cit->first->original(); } assert(orig); // add the gluon ShowerParticlePtr sg=new_ptr(ShowerParticle(*newg,1,true)); ShowerProgenitorPtr gluon=new_ptr(ShowerProgenitor(orig,newg,sg)); gluon->perturbative(false); tree->outgoingLines().insert(make_pair(gluon,sg)); tree->hardMatrixElementCorrection(true); } else { PPtr newin = gluon_ ->produceParticle(pin); PPtr newqbar = systems_[0].incoming->dataPtr()->CC()->produceParticle(p2 ); PPtr newout = systems_[0].outgoing->dataPtr() ->produceParticle(p1 ); ColinePtr col=isquark ? systems_[0].incoming->colourLine() : systems_[0].incoming->antiColourLine(); ColinePtr newline=new_ptr(ColourLine()); col ->addColoured(newin ,!isquark); newline->addColoured(newin , isquark); col ->addColoured(newout ,!isquark); newline->addColoured(newqbar, isquark); PPtr orig; for(map<ShowerProgenitorPtr,ShowerParticlePtr>::const_iterator cit=tree->incomingLines().begin();cit!=tree->incomingLines().end();++cit) { if(cit->first->progenitor()!=systems_[0].incoming) continue; // remove old particles from colour line col->removeColoured(cit->first->copy(),!isquark); col->removeColoured(cit->first->progenitor(),!isquark); // insert new particles cit->first->copy(newin); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newin,1,false))); cit->first->progenitor(sp); tree->incomingLines()[cit->first]=sp; sp->x(xB_[0]/xp); cit->first->perturbative(false); orig=cit->first->original(); } for(map<ShowerProgenitorPtr,tShowerParticlePtr>::const_iterator cit=tree->outgoingLines().begin();cit!=tree->outgoingLines().end();++cit) { if(cit->first->progenitor()!=systems_[0].outgoing) continue; // remove old particles from colour line col->removeColoured(cit->first->copy(),!isquark); col->removeColoured(cit->first->progenitor(),!isquark); // insert new particles cit->first->copy(newout); ShowerParticlePtr sp(new_ptr(ShowerParticle(*newout,1,true))); cit->first->progenitor(sp); tree->outgoingLines()[cit->first]=sp; cit->first->perturbative(true); } assert(orig); // add the (anti)quark ShowerParticlePtr sqbar=new_ptr(ShowerParticle(*newqbar,1,true)); ShowerProgenitorPtr qbar=new_ptr(ShowerProgenitor(orig,newqbar,sqbar)); qbar->perturbative(false); tree->outgoingLines().insert(make_pair(qbar,sqbar)); tree->hardMatrixElementCorrection(true); } } double MEPP2HiggsVBF::A(tcPDPtr qin1, tcPDPtr qout1, tcPDPtr qin2, tcPDPtr ) { double output; // charged current if(qin1->id()!=qout1->id()) { output = 2; } // neutral current else { double cvl,cal,cvq,caq; if(abs(qin2->id())%2==0) { cvl = generator()->standardModel()->vu(); cal = generator()->standardModel()->au(); } else { cvl = generator()->standardModel()->vd(); cal = generator()->standardModel()->ad(); } if(abs(qin1->id())%2==0) { cvq = generator()->standardModel()->vu(); caq = generator()->standardModel()->au(); } else { cvq = generator()->standardModel()->vd(); caq = generator()->standardModel()->ad(); } output = 8.*cvl*cal*cvq*caq/(sqr(cvl)+sqr(cal))/(sqr(cvq)+sqr(caq)); } if(qin1->id()<0) output *= -1.; if(qin2->id()<0) output *= -1; return output; } double MEPP2HiggsVBF::generateComptonPoint(double &xp, double & zp) { static const double maxwgt = 50.; double wgt,xperp2,x2; do { xp = UseRandom::rnd(); double zpmin = xp, zpmax = 1./(1.+xp*(1.-xp)); zp = 1.-pow((1.-zpmin)/(1.-zpmax),UseRandom::rnd())*(1.-zpmax); wgt = log((1.-zpmin)/(1.-zpmax))*(1.-zp); if(UseRandom::rndbool()) swap(xp,zp); xperp2 = 4.*(1.-xp)*(1.-zp)*zp/xp; x2 = 1.-(1.-zp)/xp; wgt *= 2.*(1.+sqr(xp)*(sqr(x2)+1.5*xperp2))/(1.-xp)/(1.-zp); if(wgt>maxwgt) if(wgt>maxwgt) { ostringstream wstring; wstring << "MEPP2HiggsVBF::generateComptonPoint() " << "Weight greater than maximum" << "wgt = " << wgt << " maxwgt = " << maxwgt << "\n"; generator()->logWarning( Exception(wstring.str(), Exception::warning) ); } } while(wgt<UseRandom::rnd()*maxwgt); return comptonInt_/((1.+sqr(xp)*(sqr(x2)+1.5*xperp2))/(1.-xp)/(1.-zp)); } double MEPP2HiggsVBF::generateBGFPoint(double &xp, double & zp) { static const double maxwgt = 25.; double wgt; double x2,x3,xperp2; do { xp = UseRandom::rnd(); double zpmax = 1./(1.+xp*(1.-xp)), zpmin = 1.-zpmax; zp = 1.-pow((1.-zpmin)/(1.-zpmax),UseRandom::rnd())*(1.-zpmax); wgt = log((1.-zpmin)/(1.-zpmax))*(1.-zp); double x1 = -1./xp; x2 = 1.-(1.-zp)/xp; x3 = 2.+x1-x2; xperp2 = 4.*(1.-xp)*(1.-zp)*zp/xp; wgt *= sqr(xp)/(1.-zp)*(sqr(x3)+sqr(x2)+3.*xperp2); if(wgt>maxwgt) { ostringstream wstring; wstring << "DISBase::generateBGFPoint " << "Weight greater than maximum " << "wgt = " << wgt << " maxwgt = 1\n"; generator()->logWarning( Exception(wstring.str(), Exception::warning) ); } } while(wgt<UseRandom::rnd()*maxwgt); return bgfInt_/sqr(xp)*(1.-zp)/(sqr(x3)+sqr(x2)+3.*xperp2); } bool MEPP2HiggsVBF::softMatrixElementVeto(ShowerProgenitorPtr initial, ShowerParticlePtr parent,Branching br) { bool veto = !UseRandom::rndbool(parent->isFinalState() ? 1./final_ : 1./initial_); // check if me correction should be applied long id[2]={initial->id(),parent->id()}; if(id[0]!=id[1]||id[1]==ParticleID::g) return veto; // if not from the right side if(initial->progenitor()!=systems_[0].incoming && initial->progenitor()!=systems_[0].outgoing) return veto; // get the pT Energy pT=br.kinematics->pT(); // check if hardest so far if(pT<initial->highestpT()) return veto; double kappa(sqr(br.kinematics->scale())/q2_[0]),z(br.kinematics->z()); double zk((1.-z)*kappa); // final-state double wgt(0.); if(parent->isFinalState()) { double zp=z,xp=1./(1.+z*zk); double xperp = sqrt(4.*(1.-xp)*(1.-zp)*zp/xp); double x2 = 1.-(1.-zp)/xp; vector<double> azicoeff = ComptonME(xp,x2,xperp,l_,m_); wgt = (azicoeff[0]+0.5*azicoeff[2]+0.5*azicoeff[4])* xp/(1.+sqr(z))/final_; if(wgt<.0||wgt>1.) { ostringstream wstring; wstring << "Soft ME correction weight too large or " << "negative for FSR in MEPP2HiggsVBF::" << "softMatrixElementVeto() soft weight " << " xp = " << xp << " zp = " << zp << " weight = " << wgt << "\n"; generator()->logWarning( Exception(wstring.str(), Exception::warning) ); } } else { double xp = 2.*z/(1.+zk+sqrt(sqr(1.+zk)-4.*z*zk)); double zp = 0.5* (1.-zk+sqrt(sqr(1.+zk)-4.*z*zk)); double xperp = sqrt(4.*(1.-xp)*(1.-zp)*zp/xp); double x1 = -1./xp, x2 = 1.-(1.-zp)/xp, x3 = 2.+x1-x2; // compton if(br.ids[0]!=ParticleID::g) { vector<double> azicoeff = ComptonME(xp,x2,xperp,l_,m_); wgt = (azicoeff[0]+0.5*azicoeff[2]+0.5*azicoeff[4])* xp*(1.-z)/(1.-xp)/(1.+sqr(z))/(1.-zp+xp-2.*xp*(1.-zp)); } // BGF else { vector<double> azicoeff = BGFME(xp,x2,x3,xperp,l_,m_); wgt = (azicoeff[0]+0.5*azicoeff[2]+0.5*azicoeff[4])* xp/(1.-zp+xp-2.*xp*(1.-zp))/(sqr(z)+sqr(1.-z)); } wgt /=initial_; if(wgt<.0||wgt>1.) { ostringstream wstring; wstring << "Soft ME correction weight too large or " << "negative for ISR in MEPP2HiggsVBF::" << "softMatrixElementVeto() soft weight " << " xp = " << xp << " zp = " << zp << " weight = " << wgt << "\n"; generator()->logWarning( Exception(wstring.str(), Exception::warning) ); } } // if not vetoed if(UseRandom::rndbool(wgt)) { initial->highestpT(pT); return false; } // otherwise parent->setEvolutionScale(br.kinematics->scale()); return true; } vector<double> MEPP2HiggsVBF::ComptonME(double xp, double x2, double xperp, LorentzVector<double> l, LorentzVector<double> m) { vector<double> output(6,0.); double cos2 = x2 /sqrt(sqr(x2)+sqr(xperp)); double sin2 = xperp/sqrt(sqr(x2)+sqr(xperp)); // no phi dependence output[0] = l.t()*m.t()-l.z()*m.z()*sqr(cos2)+0.5*acoeff_*cos2*(l.t()*m.z()-l.z()*m.t()); // cos(phi) output[1] = sin2*(-l.x()*m.t()-l.t()*m.x() + 0.5*acoeff_*cos2*(l.z()*m.x()-m.z()*l.x())); // cos(phi)^2 output[2] = +sqr(sin2)*l.x()*m.x(); // sin(phi) output[3] = sin2*(-l.t()*m.y()-l.y()*m.t() + 0.5*acoeff_*cos2*(l.z()*m.y()-m.z()*l.y())); // sin(phi)^2 output[4] = +sqr(sin2)*l.y()*m.y(); // sin(phi)cos(phi) output[5] = +sqr(sin2)*(m.y()*l.x()+m.x()*l.y()); // additional factors double denom = -l.z()*m.z()+l.t()*m.t()+0.5*acoeff_*(l.t()*m.z()-l.z()*m.t()); double fact = sqr(xp)*(sqr(x2)+sqr(xperp))/denom; for(unsigned int ix=0;ix<output.size();++ix) output[ix] *=fact; output[0] += 1.; return output; } vector<double> MEPP2HiggsVBF::BGFME(double xp, double x2, double x3, double xperp, LorentzVector<double> l, LorentzVector<double> m) { vector<double> output(6,0.); double denom = -l.z()*m.z()+l.t()*m.t()+0.5*acoeff_*(l.t()*m.z()-l.z()*m.t()); double cos2 = x2 /sqrt(sqr(x2)+sqr(xperp)); double sin2 = xperp/sqrt(sqr(x2)+sqr(xperp)); double fact2 = sqr(xp)*(sqr(x2)+sqr(xperp))/denom; double cos3 = x3 /sqrt(sqr(x3)+sqr(xperp)); double sin3 = xperp/sqrt(sqr(x3)+sqr(xperp)); double fact3 = sqr(xp)*(sqr(x3)+sqr(xperp))/denom; // no phi dependence output[0] = fact2*(l.t()*m.t()-l.z()*m.z()*sqr(cos2) + 0.5*acoeff_*cos2*(l.t()*m.z()-l.z()*m.t())) + fact3*(l.t()*m.t()-l.z()*m.z()*sqr(cos3) - 0.5*acoeff_*cos3*(l.t()*m.z()-l.z()*m.t())); // cos(phi) output[1] = fact2*sin2*( - l.x()*m.t()-l.t()*m.x() + 0.5*acoeff_*cos2*(l.z()*m.x()-m.z()*l.x())) - fact3*sin3*( - l.x()*m.t()-l.t()*m.x() - 0.5*acoeff_*cos3*(l.z()*m.x()-m.z()*l.x())) ; // cos(phi)^2 output[2] = (fact2*sqr(sin2)+fact3*sqr(sin3))*l.x()*m.x(); // sin(phi) output[3] = fact2*sin2*( - l.t()*m.y()-l.y()*m.t() + 0.5*acoeff_*cos2*(l.z()*m.y()-m.z()*l.y())) - fact3*sin3*( - l.t()*m.y()-l.y()*m.t() - 0.5*acoeff_*cos3*(l.z()*m.y()-m.z()*l.y())); // sin(phi)^2 output[4] = (fact2*sqr(sin2)+fact3*sqr(sin3))*l.y()*m.y(); // sin(phi)cos(phi) output[5] = (fact2*sqr(sin2)+fact3*sqr(sin3))*(m.y()*l.x()+m.x()*l.y()); // return the answer return output; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEMinBias.cc�����������������������������������������������0000644�0001750�0001750�00000006446�11754474776�023057� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEMinBias class. // #include "MEMinBias.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" //#include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" void MEMinBias::getDiagrams() const { int maxflav(2); // Pomeron data tcPDPtr pom = getParticleData(990); for ( int i = 1; i <= maxflav; ++i ) { for( int j=1; j <= i; ++j){ tcPDPtr q1 = getParticleData(i); tcPDPtr q1b = q1->CC(); tcPDPtr q2 = getParticleData(j); tcPDPtr q2b = q2->CC(); // For each flavour we add: //qq -> qq add(new_ptr((Tree2toNDiagram(3), q1, pom, q2, 1, q1, 2, q2, -1))); //qqb -> qqb add(new_ptr((Tree2toNDiagram(3), q1, pom, q2b, 1, q1, 2, q2b, -2))); //qbqb -> qbqb add(new_ptr((Tree2toNDiagram(3), q1b, pom, q2b, 1, q1b, 2, q2b, -3))); } } } Energy2 MEMinBias::scale() const { return sqr(10*GeV); } int MEMinBias::nDim() const { return 0; } void MEMinBias::setKinematics() { HwMEBase::setKinematics(); // Always call the base class method first. } bool MEMinBias::generateKinematics(const double *) { // generate the masses of the particles for ( int i = 2, N = meMomenta().size(); i < N; ++i ) { meMomenta()[i] = Lorentz5Momentum(mePartonData()[i]->generateMass()); } Energy q = ZERO; try { q = SimplePhaseSpace:: getMagnitude(sHat(), meMomenta()[2].mass(), meMomenta()[3].mass()); } catch ( ImpossibleKinematics ) { return false; } Energy pt = ZERO; meMomenta()[2].setVect(Momentum3( pt, pt, q)); meMomenta()[3].setVect(Momentum3(-pt, -pt, -q)); meMomenta()[2].rescaleEnergy(); meMomenta()[3].rescaleEnergy(); jacobian(1.0); return true; } double MEMinBias::me2() const { return 1.0; } CrossSection MEMinBias::dSigHatDR() const { return me2()*jacobian()/sHat()*sqr(hbarc); } unsigned int MEMinBias::orderInAlphaS() const { return 0; } unsigned int MEMinBias::orderInAlphaEW() const { return 2; } Selector<MEBase::DiagramIndex> MEMinBias::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) sel.insert(1.0, i); return sel; } Selector<const ColourLines *> MEMinBias::colourGeometries(tcDiagPtr diag) const { static ColourLines qq("1 4, 3 5"); static ColourLines qqb("1 4, -3 -5"); static ColourLines qbqb("-1 -4, -3 -5"); Selector<const ColourLines *> sel; switch(diag->id()){ case -1: sel.insert(1.0, &qq); break; case -2: sel.insert(1.0, &qqb); break; case -3: sel.insert(1.0, &qbqb); break; } return sel; } IBPtr MEMinBias::clone() const { return new_ptr(*this); } IBPtr MEMinBias::fullclone() const { return new_ptr(*this); } ClassDescription<MEMinBias> MEMinBias::initMEMinBias; // Definition of the static class description member. void MEMinBias::Init() { static ClassDocumentation<MEMinBias> documentation ("There is no documentation for the MEMinBias class"); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2Higgs.h�����������������������������������������������0000644�0001750�0001750�00000045044�11754474776�022757� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEPP2Higgs.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEPP2Higgs_H #define HERWIG_MEPP2Higgs_H // // This is the declaration of the MEPP2Higgs class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" #include "Herwig++/PDT/GenericMassGenerator.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The MEPP2Higgs class implements the matrix element for the process * pp->Higgs with different Higgs shape prescriptions (see details in hep-ph/9505211) * and the NLL corrected Higgs width (see details in the FORTRAN HERWIG manual). * * @see \ref MEPP2HiggsInterfaces "The interfaces" * defined for MEPP2Higgs. */ class MEPP2Higgs: public HwMEBase { public: /** * The default constructor. */ MEPP2Higgs(); /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(). Uses * me(). */ virtual CrossSection dSigHatDR() const; /** * Set the typed and momenta of the incoming and outgoing partons to * be used in subsequent calls to me() and colourGeometries() * according to the associated XComb object. */ virtual void setKinematics() { HwMEBase::setKinematics(); mh2_ = sHat(); } public: /** @name Member functions for the generation of hard QCD radiation */ //@{ /** * Has a POWHEG style correction */ virtual bool hasPOWHEGCorrection() {return true;} /** * Has an old fashioned ME correction */ virtual bool hasMECorrection() {return true;} /** * Initialize the ME correction */ virtual void initializeMECorrection(ShowerTreePtr tree, double & initial, double & final) { final = 1.; initial = tree->incomingLines().begin()->second->id()==ParticleID::g ? enhance_ : 1.; } /** * Apply the hard matrix element correction to a given hard process or decay */ virtual void applyHardMatrixElementCorrection(ShowerTreePtr); /** * Apply the soft matrix element correction * @param initial The particle from the hard process which started the * shower * @param parent The initial particle in the current branching * @param br The branching struct * @return If true the emission should be vetoed */ virtual bool softMatrixElementVeto(ShowerProgenitorPtr initial, ShowerParticlePtr parent, Branching br); /** * Apply the POWHEG style correction */ virtual HardTreePtr generateHardest(ShowerTreePtr); //@} public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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 { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} protected: /** * Members to calculate the real emission matrix elements */ //@{ /** * The leading-order matrix element for \f$gg\to H\f$ */ Energy4 loME() const; /** * The matrix element for \f$gg\to H g\f$ */ Energy2 ggME(Energy2 s, Energy2 t, Energy2 u); /** * The matrix element for \f$qg\to H q\f$ */ Energy2 qgME(Energy2 s, Energy2 t, Energy2 u); /** * The matrix element for \f$qbarg\to H qbar\f$ */ Energy2 qbargME(Energy2 s, Energy2 t, Energy2 u); //@} /** * Members to calculate the functions for the loop diagrams */ //@{ /** * The \f$B(s)\f$ function of NBP339 (1990) 38-66 * @param s The scale * @param mf2 The fermion mass squared. */ Complex B(Energy2 s,Energy2 mf2) const; /** * The \f$C(s)\f$ function of NBP339 (1990) 38-66 * @param s The scale * @param mf2 The fermion mass squared. */ complex<InvEnergy2> C(Energy2 s,Energy2 mf2) const; /** * The \f$C(s)\f$ function of NBP339 (1990) 38-66 * @param s The \f$s\f$ invariant * @param t The \f$t\f$ invariant * @param u The \f$u\f$ invariant * @param mf2 The fermion mass squared */ complex<InvEnergy4> D(Energy2 s,Energy2 t, Energy2 u,Energy2 mf2) const; /** * The integral \f$\int\frac{dy}{y-y_0}\log(a-i\epsilon-b y(1-y))\f$ * from NBP339 (1990) 38-66. * @param a The parameter \f$a\f$. * @param b The parameter \f$b\f$. * @param y0 The parameter \f$y_0\f$. */ Complex dIntegral(Energy2 a, Energy2 b, double y0) const; /** * The \f$M_{+++}\f$ matrix element of NBP339 (1990) 38-66. * @param s The \f$s\f$ invariant * @param t The \f$t\f$ invariant * @param u The \f$u\f$ invariant * @param mf2 The fermion mass squared. * @param i Which of the stored values to use for \f$D(u,t)\f$. * @param j Which of the stored values to use for \f$D(u,s)\f$. * @param k Which of the stored values to use for \f$D(s,t)\f$. * @param i1 Which of the stored values to use for \f$C_1(s)\f$. * @param j1 Which of the stored values to use for \f$C_1(t)\f$. * @param k1 Which of the stored values to use for \f$C_1(u)\f$. */ complex<Energy> me1(Energy2 s,Energy2 t,Energy2 u, Energy2 mf2, unsigned int i,unsigned int j, unsigned int k, unsigned int i1,unsigned int j1, unsigned int k1) const; /** * The \f$M_{++-}\f$ matrix element of NBP339 (1990) 38-66. * @param s The \f$s\f$ invariant * @param t The \f$t\f$ invariant * @param u The \f$u\f$ invariant * @param mf2 The fermion mass squared. */ complex<Energy> me2(Energy2 s,Energy2 t,Energy2 u, Energy2 mf2) const; /** * The \f$F(x)\f$ function for the leading-order result */ Complex F(double x) const; //@} /** * Method to extract the PDF weight for quark/antiquark * initiated processes and select the quark flavour */ tPDPtr quarkFlavour(tcPDFPtr pdf, Energy2 scale, double x, tcBeamPtr beam, double & pdfweight, bool anti); /** * Return the momenta and type of hard matrix element correction * @param gluons The original incoming particles. * @param beams The BeamParticleData objects * @param higgs The original outgoing higgs * @param iemit Whether the first (0) or second (1) particle emitted * the radiation * @param itype The type of radiated particle (0 is gluon, 1 is quark * and 2 is antiquark) * @param pnew The momenta of the new particles * @param xnew The new values of the momentuym fractions * @param out The ParticleData object for the outgoing parton * @return Whether or not the matrix element correction needs to be applied */ bool applyHard(ShowerParticleVector gluons, vector<tcBeamPtr> beams, PPtr higgs,unsigned int & iemit, unsigned int & itype,vector<Lorentz5Momentum> & pnew, pair<double,double> & xnew, tPDPtr & out); /** * generates the hardest emission (yj,p) * @param pnew The momenta of the new particles * @param emissiontype The type of emission, as for getResult * @return Whether not an emission was generated */ bool getEvent(vector<Lorentz5Momentum> & pnew,int & emissiontype); /** * Returns the matrix element for a given type of process, * rapidity of the jet \f$y_j\f$ and transverse momentum \f$p_T\f$ * @param emis_type the type of emission, * (0 is \f$gg\to h^0g\f$, 1 is \f$qg\to h^0q\f$ and 2 is \f$g\bar{q}\to h^0\bar{q}\f$) * @param pt The transverse momentum of the jet * @param yj The rapidity of the jet * @param outParton the outgoing parton */ double getResult(int emis_type, Energy pt, double yj,tcPDPtr & outParton); private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2Higgs> initMEPP2Higgs; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2Higgs & operator=(const MEPP2Higgs &); //@} /** * Members to return the matrix elements for the different subprocesses */ //@{ /** * Calculates the matrix element for the process g,g->h (via quark loops) * @param g1 a vector of wave functions of the first incoming gluon * @param g2 a vector of wave functions of the second incoming gluon * @param calc Whether or not to calculate the matrix element for spin correlations * @return the amlitude value. */ double ggME(vector<VectorWaveFunction> g1, vector<VectorWaveFunction> g2, ScalarWaveFunction &, bool calc) const; /** * Calculates the matrix element for the process q,qbar->h * @param fin a vector of quark spinors * @param ain a vector of anti-quark spinors * @param calc Whether or not to calculate the matrix element for spin correlations * @return the amlitude value. */ double qqME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, ScalarWaveFunction &, bool calc) const; //@} private: /** * Selects a dynamic (sHat) or fixed factorization scale */ unsigned int scaleopt_; /** * The value associated to the fixed factorization scale option */ Energy mu_F_; /** * Defines the Higgs resonance shape */ unsigned int shapeOption_; /** * The processes to be included (GG->H and/or qq->H) */ unsigned int processOption_; /** * Minimum flavour of incoming quarks */ int minFlavour_; /** * Maximum flavour of incoming quarks */ int maxFlavour_; /** * Matrix element for spin correlations */ ProductionMatrixElement me_; /** * Pointer to the H-> 2 gluon vertex (used in gg->H) */ AbstractVVSVertexPtr HGGVertex_; /** * Pointer to the fermion-fermion Higgs vertex (used in qq->H) */ AbstractFFSVertexPtr HFFVertex_; /** * The mass generator for the Higgs */ GenericMassGeneratorPtr hmass_; /** * On-shell mass for the higgs */ Energy mh_; /** * On-shell width for the higgs */ Energy wh_; /** * Stuff for the ME correction */ //@{ /** * Parameters for the evaluation of the loops for the * matrix elements */ //@{ /** * Minimum flavour of quarks to include in the loops */ unsigned int minLoop_; /** * Maximum flavour of quarks to include in the loops */ unsigned int maxLoop_; /** * Option for treatment of the fermion loops */ unsigned int massOption_; /** * Option for dynamic scale choice in alpha_S (0=mT,>0=pT) */ unsigned int mu_R_opt_; /** * Option for dynamic scale choice in PDFs (0=mT,>0=pT) */ unsigned int mu_F_opt_; //@} //@} /** * Small complex number to regularize some integrals */ static const complex<Energy2> epsi_; /** * Storage of the loop functions */ //@{ /** * B functions */ mutable Complex bi_[5]; /** * C functions */ mutable complex<InvEnergy2> ci_[8]; /** * D functions */ mutable complex<InvEnergy4> di_[4]; //@} /** * Pointer to the object calculating the strong coupling */ ShowerAlphaPtr alpha_; /** * Mass squared of Higgs */ Energy2 mh2_; /** * Relative weight of the \f$qg\f$ to the \f$gg\f$ channel */ double channelwgtA_; /** * Relative weight for the \f$\bar{q}g\f$ to the \f$gg\f$ channel */ double channelwgtB_; /** * Weights for the channels as a vector */ vector<double> channelWeights_; /** * Power for the \f$\frac{{\rm d}\hat{s}}{\hat{s}^n}\f$ importance sampling * of the \f$gg\f$ component */ double ggPow_; /** * Power for the \f$\frac{{\rm d}\hat{s}}{\hat{s}^n}\f$ importance sampling * of the \f$qg\f$ and \f$\bar{q}g\f$ components */ double qgPow_; /** * The enhancement factor for initial-state radiation */ double enhance_; /** * Number of weights greater than 1 */ unsigned int nover_; /** * Number of attempts */ unsigned int ntry_; /** * Number which suceed */ unsigned int ngen_; /** * Maximum weight */ double maxwgt_; //@} /** * Constants for the sampling. The distribution is assumed to have the * form \f$\frac{c}{{\rm GeV}}\times\left(\frac{{\rm GeV}}{p_T}\right)^n\f$ */ //@{ /** * The power, \f$n\f$, for the sampling */ double power_; /** * The prefactor, \f$c\f$ for the \f$gg\f$ channel */ double pregg_; /** * The prefactor, \f$c\f$ for the \f$qg\f$ channel */ double preqg_; /** * The prefactor, \f$c\f$ for the \f$g\bar{q}\f$ channel */ double pregqbar_; /** * The prefactors as a vector for easy use */ vector<double> prefactor_; //@} /** * The transverse momentum of the jet */ Energy minpT_; /** * Properties of the incoming particles */ //@{ /** * Pointers to the BeamParticleData objects */ vector<tcBeamPtr> beams_; /** * Pointers to the ParticleDataObjects for the partons */ vector<tcPDPtr> partons_; //@} /** * Properties of the boson and jets */ //@{ /** * The rapidity of the Higgs boson */ double yh_; /** * The mass of the Higgs boson */ Energy mass_; /** * the rapidity of the jet */ double yj_; /** * The transverse momentum of the jet */ Energy pt_; /** * The outgoing parton */ tcPDPtr out_; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the base classes of MEPP2Higgs. */ template <> struct BaseClassTrait<Herwig::MEPP2Higgs,1> { /** Typedef of the first base class of MEPP2Higgs. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2Higgs class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2Higgs> : public ClassTraitsBase<Herwig::MEPP2Higgs> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2Higgs"; } /** * The name of a file containing the dynamic library where the class * MEPP2Higgs is implemented. It may also include several, space-separated, * libraries if the class MEPP2Higgs depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2Higgs_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEQCD2to2Fast.cc�������������������������������������������0000644�0001750�0001750�00000031624�11754474776�023465� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEQCD2to2Fast.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEQCD2to2Fast class. // #include "MEQCD2to2Fast.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Cuts/Cuts.h" using namespace Herwig; IBPtr MEQCD2to2Fast::clone() const { return new_ptr(*this); } IBPtr MEQCD2to2Fast::fullclone() const { return new_ptr(*this); } Energy2 MEQCD2to2Fast::scale() const { Energy2 s(sHat()),u(uHat()),t(tHat()); return 2.*s*t*u/(s*s+t*t+u*u); } void MEQCD2to2Fast::persistentOutput(PersistentOStream & os) const { os << _maxflavour << _process; } void MEQCD2to2Fast::persistentInput(PersistentIStream & is, int) { is >> _maxflavour >> _process; } unsigned int MEQCD2to2Fast::orderInAlphaS() const { return 2; } unsigned int MEQCD2to2Fast::orderInAlphaEW() const { return 0; } ClassDescription<MEQCD2to2Fast> MEQCD2to2Fast::initMEQCD2to2Fast; // Definition of the static class description member. void MEQCD2to2Fast::Init() { static ClassDocumentation<MEQCD2to2Fast> documentation ("The MEQCD2to2Fast class implements the QCD 2->2 processes in hadron-hadron" " collisions"); static Parameter<MEQCD2to2Fast,unsigned int> interfaceMaximumFlavour ("MaximumFlavour", "The maximum flavour of the quarks in the process", &MEQCD2to2Fast::_maxflavour, 5, 1, 5, false, false, Interface::limited); static Switch<MEQCD2to2Fast,unsigned int> interfaceProcess ("Process", "Which subprocesses to include", &MEQCD2to2Fast::_process, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all subprocesses", 0); static SwitchOption interfaceProcess1 (interfaceProcess, "gg2gg", "Include only gg->gg subprocesses", 1); static SwitchOption interfaceProcess2 (interfaceProcess, "gg2qqbar", "Include only gg -> q qbar processes", 2); static SwitchOption interfaceProcessqqbargg (interfaceProcess, "qqbar2gg", "Include only q qbar -> gg processes", 3); static SwitchOption interfaceProcessqgqg (interfaceProcess, "qg2qg", "Include only q g -> q g processes", 4); static SwitchOption interfaceProcessqbargqbarg (interfaceProcess, "qbarg2qbarg", "Include only qbar g -> qbar g processes", 5); static SwitchOption interfaceProcessqqqq (interfaceProcess, "qq2qq", "Include only q q -> q q processes", 6); static SwitchOption interfaceProcessqbarqbarqbarqbar (interfaceProcess, "qbarqbar2qbarqbar", "Include only qbar qbar -> qbar qbar processes", 7); static SwitchOption interfaceProcessqqbarqqbar (interfaceProcess, "qqbar2qqbar", "Include only q qbar -> q qbar processes", 8); } Selector<MEBase::DiagramIndex> MEQCD2to2Fast::diagrams(const DiagramVector & diags) const { // select the diagram, this is easy for us as we have already done it Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if(diags[i]->id()==-int(_diagram)) sel.insert(1.0, i); else sel.insert(0., i); } return sel; } void MEQCD2to2Fast::getDiagrams() const { // get the particle data objects PDPtr gluon=getParticleData(ParticleID::g); vector<PDPtr> quark,antiquark; for(int ix=1;ix<=int(_maxflavour);++ix) { quark.push_back( getParticleData( ix)); antiquark.push_back(getParticleData(-ix)); } // gg-> gg subprocess if(_process==0||_process==1) { // s-channel add(new_ptr((Tree2toNDiagram(2),gluon,gluon, 1, gluon, 3,gluon, 3, gluon, -1))); // first t-channel add(new_ptr((Tree2toNDiagram(3),gluon,gluon,gluon, 1,gluon, 2,gluon,-2))); // second t-channel add(new_ptr((Tree2toNDiagram(3),gluon,gluon,gluon, 2,gluon, 1,gluon,-3))); } // processes involving one quark line for(unsigned int ix=0;ix<_maxflavour;++ix) { // gg -> q qbar subprocesses if(_process==0||_process==2) { // first t-channel add(new_ptr((Tree2toNDiagram(3),gluon,antiquark[ix],gluon, 1,quark[ix], 2,antiquark[ix],-4))); // interchange add(new_ptr((Tree2toNDiagram(3),gluon,antiquark[ix],gluon, 2,quark[ix], 1,antiquark[ix],-5))); // s-channel add(new_ptr((Tree2toNDiagram(2),gluon,gluon, 1, gluon, 3,quark[ix], 3, antiquark[ix], -6))); } // q qbar -> g g subprocesses if(_process==0||_process==3) { // first t-channel add(new_ptr((Tree2toNDiagram(3),quark[ix],antiquark[ix],antiquark[ix], 1,gluon, 2,gluon,-7))); // second t-channel add(new_ptr((Tree2toNDiagram(3),quark[ix],antiquark[ix],antiquark[ix], 2,gluon, 1,gluon,-8))); // s-channel add(new_ptr((Tree2toNDiagram(2),quark[ix], antiquark[ix], 1, gluon, 3, gluon, 3, gluon,-9))); } // q g -> q g subprocesses if(_process==0||_process==4) { // s-channel add(new_ptr((Tree2toNDiagram(2),quark[ix], gluon, 1, quark[ix], 3, quark[ix], 3, gluon,-10))); // quark t-channel add(new_ptr((Tree2toNDiagram(3),quark[ix],quark[ix],gluon, 2,quark[ix],1,gluon,-11))); // gluon t-channel add(new_ptr((Tree2toNDiagram(3),quark[ix],gluon,gluon, 1,quark[ix],2,gluon,-12))); } // qbar g -> qbar g subprocesses if(_process==0||_process==5) { // s-channel add(new_ptr((Tree2toNDiagram(2),antiquark[ix], gluon, 1, antiquark[ix], 3, antiquark[ix], 3, gluon,-13))); // quark t-channel add(new_ptr((Tree2toNDiagram(3),antiquark[ix],antiquark[ix],gluon, 2,antiquark[ix],1,gluon,-14))); // gluon t-channel add(new_ptr((Tree2toNDiagram(3),antiquark[ix],gluon,gluon, 1,antiquark[ix],2,gluon,-15))); } // processes involving two quark lines for(unsigned int iy=ix;iy<_maxflavour;++iy) { // q q -> q q subprocesses if(_process==0||_process==6) { // gluon t-channel add(new_ptr((Tree2toNDiagram(3),quark[ix],gluon,quark[iy], 1,quark[ix],2,quark[iy],-16))); // exchange for identical quarks if(ix==iy) add(new_ptr((Tree2toNDiagram(3),quark[ix],gluon,quark[iy], 2,quark[ix],1,quark[iy],-17))); } // qbar qbar -> qbar qbar subprocesses if(_process==0||_process==7) { // gluon t-channel add(new_ptr((Tree2toNDiagram(3),antiquark[ix],gluon,antiquark[iy], 1,antiquark[ix],2,antiquark[iy],-18))); // exchange for identical quarks if(ix==iy) add(new_ptr((Tree2toNDiagram(3),antiquark[ix],gluon,antiquark[iy], 2,antiquark[ix],1,antiquark[iy],-19))); } } for(unsigned int iy=0;iy<_maxflavour;++iy) { // q qbar -> q qbar if(_process==0||_process==8) { // gluon s-channel add(new_ptr((Tree2toNDiagram(2),quark[ix], antiquark[ix], 1, gluon, 3, quark[iy], 3, antiquark[iy],-20))); // gluon t-channel add(new_ptr((Tree2toNDiagram(3),quark[ix],gluon,antiquark[iy], 1,quark[ix],2,antiquark[iy],-21))); } } } } Selector<const ColourLines *> MEQCD2to2Fast::colourGeometries(tcDiagPtr diag) const { // colour lines for gg to gg static const ColourLines cgggg[12]={ColourLines("1 -2, -1 -3 -5, 5 -4, 2 3 4"),// A_2 s ColourLines("-1 2, 1 3 5, -5 4, -2 -3 -4"),// A_1 s ColourLines("1 5, -1 -2 3, -3 -4, -5 2 4"),// A_1 u ColourLines("-1 -5, 1 2 -3, 3 4, 5 -2 -4"),// A_2 u ColourLines("1 -2, -1 -3 -4, 4 -5, 2 3 5"),// B_2 s ColourLines("-1 2, 1 3 4, -4 5, -2 -3 -5"),// B_1 s ColourLines("1 4, -1 -2 3, -3 -5, -4 2 5"),// B_1 t ColourLines("-1 -4, 1 2 -3, 3 5, 4 -2 -5"),// B_2 t ColourLines("1 4, -1 -2 -5, 3 5, -3 2 -4"),// C_1 t ColourLines("-1 -4, 1 2 5, -3 -5, 3 -2 4"),// C_2 t ColourLines("1 5, -1 -2 -4, 3 4, -3 2 -5"),// C_1 u ColourLines("-1 -5, 1 2 4, -3 -4, 3 -2 5") // C_2 u }; // colour lines for gg to q qbar static const ColourLines cggqq[4]={ColourLines("1 4, -1 -2 3, -3 -5"), ColourLines("3 4, -3 -2 1, -1 -5"), ColourLines("2 -1, 1 3 4, -2 -3 -5"), ColourLines("1 -2, -1 -3 -5, 2 3 4")}; // colour lines for q qbar to gg static const ColourLines cqqgg[4]={ColourLines("1 4, -4 -2 5, -3 -5"), ColourLines("1 5, -3 -4, 4 -2 -5"), ColourLines("1 3 4, -4 5, -2 -3 -5"), ColourLines("1 3 5, -5 4, -2 -3 -4")}; // colour lines for q g to q g static const ColourLines cqgqg[4]={ColourLines("1 -2, 2 3 5, 4 -5"), ColourLines("1 5, 3 4,-3 2 -5 "), ColourLines("1 2 -3, 3 5, -5 -2 4"), ColourLines("1 -2 5,3 2 4,-3 -5")}; // colour lines for qbar g -> qbar g static const ColourLines cqbgqbg[4]={ColourLines("-1 2, -2 -3 -5, -4 5"), ColourLines("-1 -5, -3 -4, 3 -2 5"), ColourLines("-1 -2 3, -3 -5, 5 2 -4"), ColourLines("-1 2 -5,-3 -2 -4, 3 5")}; // colour lines for q q -> q q static const ColourLines cqqqq[2]={ColourLines("1 2 5,3 -2 4"), ColourLines("1 2 4,3 -2 5")}; // colour lines for qbar qbar -> qbar qbar static const ColourLines cqbqbqbqb[2]={ColourLines("-1 -2 -5,-3 2 -4"), ColourLines("-1 -2 -4,-3 2 -5")}; // colour lines for q qbar -> q qbar static const ColourLines cqqbqqb[2]={ColourLines("1 3 4,-2 -3 -5"), ColourLines("1 2 -3,4 -2 -5")}; // select the colour flow (as all ready picked just insert answer) Selector<const ColourLines *> sel; switch(abs(diag->id())) { // gg -> gg subprocess case 1: if(_flow==1) { sel.insert(0.5, &cgggg[0]); sel.insert(0.5, &cgggg[1]); } else { sel.insert(0.5, &cgggg[4]); sel.insert(0.5, &cgggg[5]); } break; case 2: if(_flow==2) { sel.insert(0.5, &cgggg[6]); sel.insert(0.5, &cgggg[7]); } else { sel.insert(0.5, &cgggg[8]); sel.insert(0.5, &cgggg[9]); } break; case 3: if(_flow==1) { sel.insert(0.5, &cgggg[2]); sel.insert(0.5, &cgggg[3]); } else { sel.insert(0.5, &cgggg[10]); sel.insert(0.5, &cgggg[11]); } break; // gg -> q qbar subprocess case 4: case 5: sel.insert(1.0, &cggqq[abs(diag->id())-4]); break; case 6: sel.insert(1.0, &cggqq[1+_flow]); break; // q qbar -> gg subprocess case 7: case 8: sel.insert(1.0, &cqqgg[abs(diag->id())-7]); break; case 9: sel.insert(1.0, &cqqgg[1+_flow]); break; // q g -> q g subprocess case 10: case 11: sel.insert(1.0, &cqgqg[abs(diag->id())-10]); break; case 12: sel.insert(1.0, &cqgqg[1+_flow]); break; // q g -> q g subprocess case 13: case 14: sel.insert(1.0, &cqbgqbg[abs(diag->id())-13]); break; case 15: sel.insert(1.0, &cqbgqbg[1+_flow]); break; // q q -> q q subprocess case 16: case 17: sel.insert(1.0, &cqqqq[abs(diag->id())-16]); break; // qbar qbar -> qbar qbar subprocess case 18: case 19: sel.insert(1.0, &cqbqbqbqb[abs(diag->id())-18]); break; // q qbar -> q qbar subprocess case 20: case 21: sel.insert(1.0, &cqqbqqb[abs(diag->id())-20]); break; } return sel; } double MEQCD2to2Fast::me2() const { // total matrix element double me(0.); // gg initiated processes if(mePartonData()[0]->id()==ParticleID::g&&mePartonData()[1]->id()==ParticleID::g) { // gg -> gg if(mePartonData()[2]->id()==ParticleID::g) me = gg2ggME(); // gg -> q qbar else me=gg2qqbarME(); } // quark first processes else if(mePartonData()[0]->id()>0) { // q g -> q g if(mePartonData()[1]->id()==ParticleID::g) me = qg2qgME(); else if(mePartonData()[1]->id()<0) { // q qbar initiated processes( q qbar -> gg) if(mePartonData()[2]->id()==ParticleID::g) me = qqbar2ggME(); // q qbar to q qbar else me = qqbar2qqbarME(); } // q q -> q q else if(mePartonData()[1]->id()>0) me = qq2qqME(); } // antiquark first processes else if(mePartonData()[0]->id()<0) { // qbar g -> qbar g if(mePartonData()[1]->id()==ParticleID::g) me = qbarg2qbargME(); // qbar qbar -> qbar qbar else if(mePartonData()[1]->id()<0) me = qbarqbar2qbarqbarME(); } else { throw Exception() << "Unknown process in MEQCD2to2Fast::me2()" << Exception::abortnow; } // multpliy by alpha_S^2 and return answer double alphas(4.*Constants::pi*SM().alphaS(scale())); return me*sqr(alphas); } ������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2HiggsJet.h��������������������������������������������0000644�0001750�0001750�00000034172�11754474776�023422� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEPP2HiggsJet.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEPP2HiggsJet_H #define HERWIG_MEPP2HiggsJet_H // // This is the declaration of the MEPP2HiggsJet class. // #include "ThePEG/MatrixElement/ME2to2Base.h" #include "Herwig++/Utilities/Maths.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/PDT/GenericMassGenerator.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The MEPP2HiggsJet class implements the matrix element for Higgs+jet production. * * @see \ref MEPP2HiggsJetInterfaces "The interfaces" * defined for MEPP2HiggsJet. */ class MEPP2HiggsJet: public ME2to2Base { public: /** * The default constructor. */ MEPP2HiggsJet() : _shapeopt(2),_maxflavour(5), _process(0), _minloop(6),_maxloop(6),_massopt(0) , _mh(ZERO),_wh(ZERO) {} /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the matrix element for the kinematical configuation * previously provided by the last call to setKinematics(). Uses * me(). */ virtual CrossSection dSigHatDR() const; /** * The number of internal degreed of freedom used in the matrix * element. */ virtual int nDim() const; /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Members to return the matrix elements for the different subprocesses */ //@{ /** * Matrix element for \f$q\bar{q}\to Hg\f$. * @param fin Spinors for incoming quark * @param ain Spinors for incoming antiquark * @param hout Wavefunction for the outgoing higgs * @param gout Polarization vectors for the outgoing gluon * @param me Whether or not to calculate the matrix element for spin correlations **/ double qqbarME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, ScalarWaveFunction & hout, vector<VectorWaveFunction> & gout, bool me) const; /** * Matrix element for \f$qg\to Hq\f$. * @param fin Spinors for incoming quark * @param gin Polarization vectors for the incoming gluon * @param hout Wavefunction for the outgoing higgs * @param fout Spinors for outgoing quark * @param me Whether or not to calculate the matrix element for spin correlations **/ double qgME(vector<SpinorWaveFunction> & fin,vector<VectorWaveFunction> & gin, ScalarWaveFunction & hout, vector<SpinorBarWaveFunction> & fout, bool me) const; /** * Matrix element for \f$\bar{q}g\to H\bar{q}\f$. * @param fin Spinors for incoming antiquark * @param gin Polarization vectors for the incoming gluon * @param hout Wavefunction for the outgoing higgs * @param fout Spinors for outgoing antiquark * @param me Whether or not to calculate the matrix element for spin correlations **/ double qbargME(vector<SpinorBarWaveFunction> & fin,vector<VectorWaveFunction> & gin, ScalarWaveFunction & hout, vector<SpinorWaveFunction> & fout, bool me) const; /** * Matrix element for \f$gg\to Hg\f$. * @param g1 Polarization vectors for the first incoming gluon * @param g2 Polarization vectors for the second incoming gluon * @param hout Wavefunction for the outgoing higgs * @param g4 Polarization vectors for the outgoing gluon * @param me Whether or not to calculate the matrix element for spin correlations **/ double ggME(vector<VectorWaveFunction> g1, vector<VectorWaveFunction> g2, ScalarWaveFunction & hout, vector<VectorWaveFunction> g4, bool me) const; //@} private: /** * Members to calculate the functions for the loop diagrams */ //@{ /** * The \f$W_1(s)\f$ function of NPB297 (1988) 221-243. * @param s The invariant * @param mf2 The fermion mass squared */ Complex W1(Energy2 s,Energy2 mf2) const { double root = sqrt(abs(1.-4.*mf2/s)); if(s<ZERO) return 2.*root*asinh(0.5*sqrt(-s/mf2)); else if(s<4.*mf2) return 2.*root*asin(0.5*sqrt( s/mf2)); else return root*(2.*acosh(0.5*sqrt(s/mf2)) -Constants::pi*Complex(0.,1.)); } /** * The \f$W_2(s)\f$ function of NPB297 (1988) 221-243. * @param s The invariant * @param mf2 The fermion mass squared */ Complex W2(Energy2 s,Energy2 mf2) const { double root=0.5*sqrt(abs(s)/mf2); if(s<ZERO) return 4.*sqr(asinh(root)); else if(s<4.*mf2) return -4.*sqr(asin(root)); else return 4.*sqr(acosh(root))-sqr(Constants::pi) -4.*Constants::pi*acosh(root)*Complex(0.,1.); } /** * The \f$W_3(s,t,u,v)\f$ function of NPB297 (1988) 221-243. * @param s The \f$s\f$ invariant * @param t The \f$t\f$ invariant * @param u The \f$u\f$ invariant * @param v The \f$u\f$ invariant * @param mf2 The fermion mass squared. */ Complex W3(Energy2 s, Energy2 t, Energy2 u, Energy2 v, Energy2 mf2) const { return I3(s,t,u,v,mf2)-I3(s,t,u,s,mf2)-I3(s,t,u,u,mf2); } /** * The \f$I_3(s,t,u,v)\f$ function of NPB297 (1988) 221-243. * @param s The \f$s\f$ invariant * @param t The \f$t\f$ invariant * @param u The \f$u\f$ invariant * @param v The \f$v\f$ invariant * @param mf2 The fermion mass squared */ Complex I3(Energy2 s, Energy2 t, Energy2 u, Energy2 v, Energy2 mf2) const { double ratio=(4.*mf2*t/(u*s)),root(sqrt(1+ratio)); if(v==ZERO) return 0.; Complex y=0.5*(1.+sqrt(1.-4.*(mf2+_epsi*MeV*MeV)/v)); Complex xp=0.5*(1.+root),xm=0.5*(1.-root); Complex output = Math::Li2(xm/(xm-y))-Math::Li2(xp/(xp-y))+ Math::Li2(xm/(y-xp))-Math::Li2(xp/(y-xm))+ log(-xm/xp)*log(1.-_epsi-v/mf2*xp*xm); return output*2./root; } /** * The \f$b_2(s,t,u)\f$ function of NPB297 (1988) 221-243. * @param s The \f$s\f$ invariant * @param t The \f$t\f$ invariant * @param u The \f$u\f$ invariant * @param mf2 The fermion mass squared. */ Complex b2(Energy2 s, Energy2 t, Energy2 u, Energy2 mf2) const { Energy2 mh2(s+u+t); complex<Energy2> output=s*(u-s)/(s+u)+2.*u*t*(u+2.*s)/sqr(s+u)*(W1(t,mf2)-W1(mh2,mf2)) +(mf2-0.25*s)*(0.5*(W2(s,mf2)+W2(mh2,mf2))-W2(t,mf2)+W3(s,t,u,mh2,mf2)) +sqr(s)*(2.*mf2/sqr(s+u)-0.5/(s+u))*(W2(t,mf2)-W2(mh2,mf2)) +0.5*u*t/s*(W2(mh2,mf2)-2.*W2(t,mf2)) +0.125*(s-12.*mf2-4.*u*t/s)*W3(t,s,u,mh2,mf2); return output*mf2/sqr(mh2); } /** * The \f$b_2(s,t,u)\f$ function of NPB297 (1988) 221-243. * @param s The \f$s\f$ invariant * @param t The \f$t\f$ invariant * @param u The \f$u\f$ invariant * @param mf2 The fermion mass squared. */ Complex b4(Energy2 s, Energy2 t, Energy2 u, Energy2 mf2) const { Energy2 mh2(s+t+u); return mf2/mh2*(-2./3.+(mf2/mh2-0.25)*(W2(t,mf2)-W2(mh2,mf2)+W3(s,t,u,mh2,mf2))); } /** * The \f$A_2(s,t,u)\f$ function of NPB297 (1988) 221-243. * @param s The \f$s\f$ invariant * @param t The \f$t\f$ invariant * @param u The \f$u\f$ invariant * @param mf2 The fermion mass squared. */ Complex A2(Energy2 s, Energy2 t, Energy2 u, Energy2 mf2) const { return b2(s,t,u,mf2)+b2(s,u,t,mf2); } /** * The \f$A_4(s,t,u)\f$ function of NPB297 (1988) 221-243. * @param s The \f$s\f$ invariant * @param t The \f$t\f$ invariant * @param u The \f$u\f$ invariant * @param mf2 The fermion mass squared. */ Complex A4(Energy2 s, Energy2 t, Energy2 u, Energy2 mf2) const { return b4(s,t,u,mf2)+b4(u,s,t,mf2)+b4(t,u,s,mf2); } //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2HiggsJet> initMEPP2HiggsJet; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2HiggsJet & operator=(const MEPP2HiggsJet &); private: /** * Defines the Higgs resonance shape */ unsigned int _shapeopt; /** * Maximum PDG code of the quarks allowed */ unsigned int _maxflavour; /** * Option for which processes to include */ unsigned int _process; /** * Matrix element for spin correlations */ ProductionMatrixElement _me; /** * Minimum flavour of quarks to include in the loops */ int _minloop; /** * Maximum flavour of quarks to include in the loops */ int _maxloop; /** * Option for treatment of the fermion loops */ unsigned int _massopt; /** * Small complex number to regularize some integrals */ static const Complex _epsi; /** * On-shell mass for the higgs */ Energy _mh; /** * On-shell width for the higgs */ Energy _wh; /** * The mass generator for the Higgs */ GenericMassGeneratorPtr _hmass; /** * Storage of the loop functions */ //@{ /** * B functions */ mutable Complex _bi[5]; /** * C functions */ mutable Complex _ci[8]; /** * D functions */ mutable Complex _di[4]; //@} /** * Storage of the diagram weights for the \f$gg\to Hg\f$ subprocess */ mutable double _diagwgt[3]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2HiggsJet. */ template <> struct BaseClassTrait<Herwig::MEPP2HiggsJet,1> { /** Typedef of the first base class of MEPP2HiggsJet. */ typedef ME2to2Base NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2HiggsJet class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2HiggsJet> : public ClassTraitsBase<Herwig::MEPP2HiggsJet> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2HiggsJet"; } /** * The name of a file containing the dynamic library where the class * MEPP2HiggsJet is implemented. It may also include several, space-separated, * libraries if the class MEPP2HiggsJet depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2HiggsJet_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2QQ.cc�������������������������������������������������0000644�0001750�0001750�00000114773�11754474776�022403� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEPP2QQ.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2QQ class. // #include "MEPP2QQ.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "ThePEG/Repository/EventGenerator.h" using namespace Herwig; MEPP2QQ::MEPP2QQ() : _quarkflavour(6), _process(0), _bottomopt(1), _topopt(1), _maxflavour(5) { } void MEPP2QQ::rebind(const TranslationMap & trans) { _gggvertex = trans.translate( _gggvertex); _qqgvertex = trans.translate( _qqgvertex); _gluon = trans.translate( _gluon); for(unsigned int ix=0;ix<_quark.size();++ix) _quark[ix]=trans.translate(_quark[ix]); for(unsigned int ix=0;ix<_antiquark.size();++ix) _antiquark[ix]=trans.translate(_quark[ix]); HwMEBase::rebind(trans); } IVector MEPP2QQ::getReferences() { IVector ret = HwMEBase::getReferences(); ret.push_back(_gggvertex); ret.push_back(_qqgvertex); ret.push_back(_gluon); for(unsigned int ix=0;ix<_quark.size();++ix) ret.push_back(_quark[ix]); for(unsigned int ix=0;ix<_antiquark.size();++ix) ret.push_back(_antiquark[ix]); return ret; } void MEPP2QQ::doinit() { HwMEBase::doinit(); // handling of masses if(_quarkflavour==6) { massOption(vector<unsigned int>(2,_topopt)); } else { massOption(vector<unsigned int>(2,_bottomopt)); } // get the vertex pointers from the SM object tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(hwsm) { _qqgvertex = hwsm->vertexFFG(); _gggvertex = hwsm->vertexGGG(); } else throw InitException() << "Wrong type of StandardModel object in " << "MEPP2QQ::doinit() the Herwig++ version must be used" << Exception::runerror; // get the particle data objects _gluon=getParticleData(ParticleID::g); for(int ix=1;ix<=6;++ix) { _quark.push_back( getParticleData( ix)); _antiquark.push_back(getParticleData(-ix)); } } Energy2 MEPP2QQ::scale() const { Energy2 mq2 = max(meMomenta()[2].mass2(),meMomenta()[3].mass2()); Energy2 s(0.5*sHat()),u(0.5*(uHat()-mq2)),t(0.5*(tHat()-mq2)); return 4.*s*t*u/(s*s+t*t+u*u); } void MEPP2QQ::persistentOutput(PersistentOStream & os) const { os << _gggvertex << _qqgvertex << _quarkflavour << _bottomopt << _topopt << _process << _gluon << _quark << _antiquark << _maxflavour; } void MEPP2QQ::persistentInput(PersistentIStream & is, int) { is >> _gggvertex >> _qqgvertex >> _quarkflavour >> _bottomopt >> _topopt >> _process >> _gluon >> _quark >> _antiquark >> _maxflavour; } unsigned int MEPP2QQ::orderInAlphaS() const { return 2; } unsigned int MEPP2QQ::orderInAlphaEW() const { return 0; } ClassDescription<MEPP2QQ> MEPP2QQ::initMEPP2QQ; // Definition of the static class description member. void MEPP2QQ::Init() { static ClassDocumentation<MEPP2QQ> documentation ("The MEPP2QQ class implements the matrix element for" " heavy quark pair production"); static Switch<MEPP2QQ,unsigned int> interfaceQuarkType ("QuarkType", "The type of quark", &MEPP2QQ::_quarkflavour, 6, false, false); static SwitchOption interfaceQuarkTypeCharm (interfaceQuarkType, "Charm", "Produce charm-anticharm", 4); static SwitchOption interfaceQuarkTypeBottom (interfaceQuarkType, "Bottom", "Produce bottom-antibottom", 5); static SwitchOption interfaceQuarkTypeTop (interfaceQuarkType, "Top", "Produce top-antitop", 6); static Switch<MEPP2QQ,unsigned int> interfaceProcess ("Process", "Which subprocesses to include", &MEPP2QQ::_process, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all subprocesses", 0); static SwitchOption interfaceProcessPair (interfaceProcess, "Pair", "Only include quark-antiquark pair production subprocesses", 1); static SwitchOption interfaceProcess1 (interfaceProcess, "gg2qqbar", "Include only gg -> q qbar processes", 2); static SwitchOption interfaceProcessqgqg (interfaceProcess, "qg2qg", "Include only q g -> q g processes", 4); static SwitchOption interfaceProcessqbargqbarg (interfaceProcess, "qbarg2qbarg", "Include only qbar g -> qbar g processes", 5); static SwitchOption interfaceProcessqqqq (interfaceProcess, "qq2qq", "Include only q q -> q q processes", 6); static SwitchOption interfaceProcessqbarqbarqbarqbar (interfaceProcess, "qbarqbar2qbarqbar", "Include only qbar qbar -> qbar qbar processes", 7); static SwitchOption interfaceProcessqqbarqqbar (interfaceProcess, "qqbar2qqbar", "Include only q qbar -> q qbar processes", 8); static Switch<MEPP2QQ,unsigned int> interfaceTopMassOption ("TopMassOption", "Option for the treatment of the top quark mass", &MEPP2QQ::_topopt, 1, false, false); static SwitchOption interfaceTopMassOptionOnMassShell (interfaceTopMassOption, "OnMassShell", "The top is produced on its mass shell", 1); static SwitchOption interfaceTopMassOption2 (interfaceTopMassOption, "OffShell", "The top is generated off-shell using the mass and width generator.", 2); static Switch<MEPP2QQ,unsigned int> interfaceBottomMassOption ("CharmBottomMassOption", "Option for the treatment of bottom and lighter quark masses", &MEPP2QQ::_bottomopt, 1, false, false); static SwitchOption interfaceBottomMassOptionOnMassShell (interfaceBottomMassOption, "OnMassShell", "The bottom is produced on its mass shell, this mass used everywhere", 1); static SwitchOption interfaceBottomMassOptionZeroMass (interfaceBottomMassOption, "ZeroMass", "The bottom is generated on mass shell, but zero mass is used in" " the matrix element", 0); static Parameter<MEPP2QQ,unsigned int> interfaceMaximumFlavour ("MaximumFlavour", "The maximum flavour of the quarks in the process", &MEPP2QQ::_maxflavour, 5, 1, 5, false, false, Interface::limited); } Selector<MEBase::DiagramIndex> MEPP2QQ::diagrams(const DiagramVector & diags) const { // select the diagram, this is easy for us as we have already done it Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if(diags[i]->id()==-int(_diagram)) sel.insert(1.0, i); else sel.insert(0., i); } return sel; } double MEPP2QQ::gg2qqbarME(vector<VectorWaveFunction> &g1, vector<VectorWaveFunction> &g2, vector<SpinorBarWaveFunction> & q, vector<SpinorWaveFunction> & qbar, unsigned int iflow) const { // scale Energy2 mt(scale()); Energy mass = q[0].mass(); // matrix element to be stored if(iflow!=0) _me.reset(ProductionMatrixElement(PDT::Spin1,PDT::Spin1, PDT::Spin1Half,PDT::Spin1Half)); // calculate the matrix element double output(0.),sumdiag[3]={0.,0.,0.},sumflow[2]={0.,0.}; Complex diag[3],flow[2]; VectorWaveFunction interv; SpinorWaveFunction inters; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { interv=_gggvertex->evaluate(mt,5,_gluon,g1[ihel1],g2[ihel2]); for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { //first t-channel diagram inters =_qqgvertex->evaluate(mt,3,qbar[ohel2].particle(), qbar[ohel2],g2[ihel2],mass); diag[0]=_qqgvertex->evaluate(mt,inters,q[ohel1],g1[ihel1]); //second t-channel diagram inters =_qqgvertex->evaluate(mt,3,qbar[ohel2].particle(), qbar[ohel2],g1[ihel1],mass); diag[1]=_qqgvertex->evaluate(mt,inters,q[ohel1],g2[ihel2]); // s-channel diagram diag[2]=_qqgvertex->evaluate(mt,qbar[ohel2],q[ohel1],interv); // colour flows flow[0]=diag[0]+diag[2]; flow[1]=diag[1]-diag[2]; // sums for(unsigned int ix=0;ix<3;++ix) sumdiag[ix] += norm(diag[ix]); for(unsigned int ix=0;ix<2;++ix) sumflow[ix] += norm(flow[ix]); // total output +=real(flow[0]*conj(flow[0])+flow[1]*conj(flow[1]) -0.25*flow[0]*conj(flow[1])); // store the me if needed if(iflow!=0) _me(2*ihel1,2*ihel2,ohel1,ohel2)=flow[iflow-1]; } } } } // select a colour flow _flow=1+UseRandom::rnd2(sumflow[0],sumflow[1]); // select a diagram ensuring it is one of those in the selected colour flow sumdiag[_flow%2]=0.; _diagram=4+UseRandom::rnd3(sumdiag[0],sumdiag[1],sumdiag[2]); // final part of colour and spin factors // Energy2 mq2=sqr(getParticleData(6)->mass()); // double tau1=(tHat()-mq2)/sHat(),tau2=(uHat()-mq2)/sHat(),rho=4*mq2/sHat(); // double test=(1./6./tau1/tau2-3./8.)*sqr(4.*pi*SM().alphaS(mt))* // (sqr(tau1)+sqr(tau2)+rho-0.25*sqr(rho)/tau1/tau2); // cerr << "testing matrix element " // << output/48./test << "\n"; return output/48.; } double MEPP2QQ::qg2qgME(vector<SpinorWaveFunction> & qin, vector<VectorWaveFunction> &g2, vector<SpinorBarWaveFunction> & qout, vector<VectorWaveFunction> &g4, unsigned int iflow) const { // scale Energy2 mt(scale()); Energy mass = qout[0].mass(); // matrix element to be stored if(iflow!=0) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1, PDT::Spin1Half,PDT::Spin1)); // calculate the matrix element double output(0.),sumdiag[3]={0.,0.,0.},sumflow[2]={0.,0.}; Complex diag[3],flow[2]; VectorWaveFunction interv; SpinorWaveFunction inters,inters2; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { inters=_qqgvertex->evaluate(mt,3,qin[ihel1].particle()->CC(), qin[ihel1],g2[ihel2],mass); for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // s-channel diagram diag[0]=_qqgvertex->evaluate(mt,inters,qout[ohel1],g4[ohel2]); // first t-channel inters2=_qqgvertex->evaluate(mt,3,qin[ihel1].particle()->CC(), qin[ihel1],g4[ohel2],mass); diag[1]=_qqgvertex->evaluate(mt,inters2,qout[ohel1],g2[ihel2]); // second t-channel interv=_qqgvertex->evaluate(mt,5,_gluon,qin[ihel1],qout[ohel1]); diag[2]=_gggvertex->evaluate(mt,g2[ihel2],g4[ohel2],interv); // colour flows flow[0]=diag[0]-diag[2]; flow[1]=diag[1]+diag[2]; // sums for(unsigned int ix=0;ix<3;++ix) sumdiag[ix] += norm(diag[ix]); for(unsigned int ix=0;ix<2;++ix) sumflow[ix] += norm(flow[ix]); // total output +=real(flow[0]*conj(flow[0])+flow[1]*conj(flow[1]) -0.25*flow[0]*conj(flow[1])); // store the me if needed if(iflow!=0) _me(ihel1,2*ihel2,ohel1,2*ohel2)=flow[iflow-1]; } } } } // test code vs me from ESW //Energy2 u(uHat()),t(tHat()),s(sHat()); //double alphas(4.*pi*SM().alphaS(mt)); //cerr << "testing matrix element " // << 18./output*(-4./9./s/u+1./t/t)*(s*s+u*u)*sqr(alphas) << endl; //select a colour flow _flow=1+UseRandom::rnd2(sumflow[0],sumflow[1]); // select a diagram ensuring it is one of those in the selected colour flow sumdiag[_flow%2]=0.; _diagram=10+UseRandom::rnd3(sumdiag[0],sumdiag[1],sumdiag[2]); // final part of colour and spin factors return output/18.; } double MEPP2QQ::qbarg2qbargME(vector<SpinorBarWaveFunction> & qin, vector<VectorWaveFunction> &g2, vector<SpinorWaveFunction> & qout, vector<VectorWaveFunction> &g4, unsigned int iflow) const { // scale Energy2 mt(scale()); Energy mass = qout[0].mass(); // matrix element to be stored if(iflow!=0) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1, PDT::Spin1Half,PDT::Spin1)); // calculate the matrix element double output(0.),sumdiag[3]={0.,0.,0.},sumflow[2]={0.,0.}; Complex diag[3],flow[2]; VectorWaveFunction interv; SpinorBarWaveFunction inters,inters2; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { inters=_qqgvertex->evaluate(mt,3,qin[ihel1].particle()->CC(), qin[ihel1],g2[ihel2],mass); for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // s-channel diagram diag[0]=_qqgvertex->evaluate(mt,qout[ohel1],inters,g4[ohel2]); // first t-channel inters2=_qqgvertex->evaluate(mt,3,qin[ihel1].particle()->CC(), qin[ihel1],g4[ohel2],mass); diag[1]=_qqgvertex->evaluate(mt,qout[ohel1],inters2,g2[ihel2]); // second t-channel interv=_qqgvertex->evaluate(mt,5,_gluon,qout[ohel1],qin[ihel1]); diag[2]=_gggvertex->evaluate(mt,g2[ihel2],g4[ohel2],interv); // colour flows flow[0]=diag[0]+diag[2]; flow[1]=diag[1]-diag[2]; // sums for(unsigned int ix=0;ix<3;++ix) sumdiag[ix] += norm(diag[ix]); for(unsigned int ix=0;ix<2;++ix) sumflow[ix] += norm(flow[ix]); // total output +=real(flow[0]*conj(flow[0])+flow[1]*conj(flow[1]) -0.25*flow[0]*conj(flow[1])); // store the me if needed if(iflow!=0) _me(ihel1,2*ihel2,ohel1,2*ohel2)=flow[iflow-1]; } } } } // test code vs me from ESW //Energy2 u(uHat()),t(tHat()),s(sHat()); //double alphas(4.*pi*SM().alphaS(mt)); //cerr << "testing matrix element " // << 18./output*(-4./9./s/u+1./t/t)*(s*s+u*u)*sqr(alphas) << endl; //select a colour flow _flow=1+UseRandom::rnd2(sumflow[0],sumflow[1]); // select a diagram ensuring it is one of those in the selected colour flow sumdiag[_flow%2]=0.; _diagram=13+UseRandom::rnd3(sumdiag[0],sumdiag[1],sumdiag[2]); // final part of colour and spin factors return output/18.; } double MEPP2QQ::qq2qqME(vector<SpinorWaveFunction> & q1, vector<SpinorWaveFunction> & q2, vector<SpinorBarWaveFunction> & q3, vector<SpinorBarWaveFunction> & q4, unsigned int iflow) const { // identify special case of identical quarks bool identical(q1[0].id()==q2[0].id()); // scale Energy2 mt(scale()); // matrix element to be stored if(iflow!=0) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half)); // calculate the matrix element double output(0.),sumdiag[2]={0.,0.}; Complex diag[2]; VectorWaveFunction interv; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // first diagram interv = _qqgvertex->evaluate(mt,5,_gluon,q1[ihel1],q3[ohel1]); diag[0] = _qqgvertex->evaluate(mt,q2[ihel2],q4[ohel2],interv); // second diagram if identical if(identical) { interv = _qqgvertex->evaluate(mt,5,_gluon,q1[ihel1],q4[ohel2]); diag[1]=_qqgvertex->evaluate(mt,q2[ihel2],q3[ohel1],interv); } else diag[1]=0.; // sum of diagrams for(unsigned int ix=0;ix<2;++ix) sumdiag[ix] += norm(diag[ix]); // total output +=real(diag[0]*conj(diag[0])+diag[1]*conj(diag[1]) +2./3.*diag[0]*conj(diag[1])); // store the me if needed if(iflow!=0) _me(ihel1,ihel2,ohel1,ohel2)=diag[iflow-1]; } } } } // identical particle symmetry factor if needed if(identical) output*=0.5; // test code vs me from ESW //Energy2 u(uHat()),t(tHat()),s(sHat()); //double alphas(4.*pi*SM().alphaS(mt)); //if(identical) // {cerr << "testing matrix element A " // << 18./output*0.5*(4./9.*((s*s+u*u)/t/t+(s*s+t*t)/u/u) // -8./27.*s*s/u/t)*sqr(alphas) << endl;} //else // {cerr << "testing matrix element B " // << 18./output*(4./9.*(s*s+u*u)/t/t)*sqr(alphas) << endl;} //select a colour flow _flow=1+UseRandom::rnd2(sumdiag[0],sumdiag[1]); // select a diagram ensuring it is one of those in the selected colour flow sumdiag[_flow%2]=0.; _diagram=16+UseRandom::rnd2(sumdiag[0],sumdiag[1]); // final part of colour and spin factors return output/18.; } double MEPP2QQ::qbarqbar2qbarqbarME(vector<SpinorBarWaveFunction> & q1, vector<SpinorBarWaveFunction> & q2, vector<SpinorWaveFunction> & q3, vector<SpinorWaveFunction> & q4, unsigned int iflow) const { // identify special case of identical quarks bool identical(q1[0].id()==q2[0].id()); // scale Energy2 mt(scale()); // matrix element to be stored if(iflow!=0) {_me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half));} // calculate the matrix element double output(0.),sumdiag[2]={0.,0.}; Complex diag[2]; VectorWaveFunction interv; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // first diagram interv = _qqgvertex->evaluate(mt,5,_gluon,q3[ohel1],q1[ihel1]); diag[0] = _qqgvertex->evaluate(mt,q4[ohel2],q2[ihel2],interv); // second diagram if identical if(identical) { interv = _qqgvertex->evaluate(mt,5,_gluon,q4[ohel2],q1[ihel1]); diag[1]=_qqgvertex->evaluate(mt,q3[ohel1],q2[ihel2],interv); } else diag[1]=0.; // sum of diagrams for(unsigned int ix=0;ix<2;++ix) sumdiag[ix] += norm(diag[ix]); // total output +=real(diag[0]*conj(diag[0])+diag[1]*conj(diag[1]) +2./3.*diag[0]*conj(diag[1])); // store the me if needed if(iflow!=0) _me(ihel1,ihel2,ohel1,ohel2)=diag[iflow-1]; } } } } // identical particle symmetry factor if needed if(identical){output*=0.5;} // test code vs me from ESW // Energy2 u(uHat()),t(tHat()),s(sHat()); // double alphas(4.*pi*SM().alphaS(mt)); // if(identical) // {cerr << "testing matrix element A " // << 18./output*0.5*(4./9.*((s*s+u*u)/t/t+(s*s+t*t)/u/u) // -8./27.*s*s/u/t)*sqr(alphas) << endl;} // else // {cerr << "testing matrix element B " // << 18./output*(4./9.*(s*s+u*u)/t/t)*sqr(alphas) << endl;} //select a colour flow _flow=1+UseRandom::rnd2(sumdiag[0],sumdiag[1]); // select a diagram ensuring it is one of those in the selected colour flow sumdiag[_flow%2]=0.; _diagram=18+UseRandom::rnd2(sumdiag[0],sumdiag[1]); // final part of colour and spin factors return output/18.; } double MEPP2QQ::qqbar2qqbarME(vector<SpinorWaveFunction> & q1, vector<SpinorBarWaveFunction> & q2, vector<SpinorBarWaveFunction> & q3, vector<SpinorWaveFunction> & q4, unsigned int iflow) const { // type of process bool diagon[2]={q1[0].id()== -q2[0].id(), q1[0].id()== -q3[0].id()}; // scale Energy2 mt(scale()); // matrix element to be stored if(iflow!=0) _me.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half)); // calculate the matrix element double output(0.),sumdiag[2]={0.,0.}; Complex diag[2]; VectorWaveFunction interv; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel1=0;ohel1<2;++ohel1) { for(unsigned int ohel2=0;ohel2<2;++ohel2) { // first diagram if(diagon[0]) { interv = _qqgvertex->evaluate(mt,5,_gluon,q1[ihel1],q2[ihel2]); diag[0] = _qqgvertex->evaluate(mt,q4[ohel2],q3[ohel1],interv); } else diag[0]=0.; // second diagram if(diagon[1]) { interv = _qqgvertex->evaluate(mt,5,_gluon,q1[ihel1],q3[ohel1]); diag[1]=_qqgvertex->evaluate(mt,q4[ohel2],q2[ihel2],interv); } else diag[1]=0.; // sum of diagrams for(unsigned int ix=0;ix<2;++ix) sumdiag[ix] += norm(diag[ix]); // total output +=real(diag[0]*conj(diag[0])+diag[1]*conj(diag[1]) +2./3.*diag[0]*conj(diag[1])); // store the me if needed if(iflow!=0) _me(ihel1,ihel2,ohel1,ohel2)=diag[iflow-1]; } } } } //select a colour flow _flow=1+UseRandom::rnd2(sumdiag[0],sumdiag[1]); // select a diagram ensuring it is one of those in the selected colour flow sumdiag[_flow%2]=0.; _diagram=20+UseRandom::rnd2(sumdiag[0],sumdiag[1]); // final part of colour and spin factors // Energy2 mq2=sqr(getParticleData(6)->mass()); // double tau1=(tHat()-mq2)/sHat(),tau2=(uHat()-mq2)/sHat(),rho=4*mq2/sHat(); // cerr << "testing matrix element " // << output/18./(4./9.*sqr(4.*pi*SM().alphaS(mt))*(sqr(tau1)+sqr(tau2)+0.5*rho)) // << "\n"; return output/18.; } void MEPP2QQ::getDiagrams() const { // gg -> q qbar subprocesses if(_process==0||_process==1||_process==2) { // first t-channel add(new_ptr((Tree2toNDiagram(3),_gluon,_antiquark[_quarkflavour-1],_gluon, 1,_quark[_quarkflavour-1], 2,_antiquark[_quarkflavour-1],-4))); // interchange add(new_ptr((Tree2toNDiagram(3),_gluon,_antiquark[_quarkflavour-1],_gluon, 2,_quark[_quarkflavour-1], 1,_antiquark[_quarkflavour-1],-5))); // s-channel add(new_ptr((Tree2toNDiagram(2),_gluon,_gluon, 1, _gluon, 3,_quark[_quarkflavour-1], 3, _antiquark[_quarkflavour-1], -6))); } // q g -> q g subprocesses if(_process==0||_process==4) { // s-channel add(new_ptr((Tree2toNDiagram(2),_quark[_quarkflavour-1], _gluon, 1, _quark[_quarkflavour-1], 3, _quark[_quarkflavour-1], 3, _gluon,-10))); // quark t-channel add(new_ptr((Tree2toNDiagram(3),_quark[_quarkflavour-1], _quark[_quarkflavour-1],_gluon, 2,_quark[_quarkflavour-1],1,_gluon,-11))); // gluon t-channel add(new_ptr((Tree2toNDiagram(3),_quark[_quarkflavour-1],_gluon,_gluon, 1,_quark[_quarkflavour-1],2,_gluon,-12))); } // qbar g -> qbar g subprocesses if(_process==0||_process==5) { // s-channel add(new_ptr((Tree2toNDiagram(2),_antiquark[_quarkflavour-1], _gluon, 1, _antiquark[_quarkflavour-1], 3, _antiquark[_quarkflavour-1], 3, _gluon,-13))); // quark t-channel add(new_ptr((Tree2toNDiagram(3),_antiquark[_quarkflavour-1], _antiquark[_quarkflavour-1],_gluon, 2,_antiquark[_quarkflavour-1],1,_gluon,-14))); // gluon t-channel add(new_ptr((Tree2toNDiagram(3),_antiquark[_quarkflavour-1],_gluon,_gluon, 1,_antiquark[_quarkflavour-1],2,_gluon,-15))); } // processes involving two quark lines for(unsigned int iy=0;iy<_maxflavour;++iy) { // q q -> q q subprocesses if(_process==0||_process==6) { // gluon t-channel add(new_ptr((Tree2toNDiagram(3),_quark[_quarkflavour-1],_gluon,_quark[iy], 1,_quark[_quarkflavour-1],2,_quark[iy],-16))); // exchange for identical quarks if(_quarkflavour-1==iy) add(new_ptr((Tree2toNDiagram(3),_quark[_quarkflavour-1],_gluon,_quark[iy], 2,_quark[_quarkflavour-1],1,_quark[iy],-17))); } // qbar qbar -> qbar qbar subprocesses if(_process==0||_process==7) { // gluon t-channel add(new_ptr((Tree2toNDiagram(3),_antiquark[_quarkflavour-1],_gluon,_antiquark[iy], 1,_antiquark[_quarkflavour-1],2,_antiquark[iy],-18))); // exchange for identical quarks if(_quarkflavour-1==iy) add(new_ptr((Tree2toNDiagram(3),_antiquark[_quarkflavour-1],_gluon,_antiquark[iy], 2,_antiquark[_quarkflavour-1],1,_antiquark[iy],-19))); } // q qbar -> q qbar if(_process==0||_process==1||_process==8) { // gluon s-channel add(new_ptr((Tree2toNDiagram(2),_quark[iy], _antiquark[iy], 1, _gluon, 3, _quark[_quarkflavour-1], 3, _antiquark[_quarkflavour-1],-20))); if(_process!=1) { // gluon t-channel add(new_ptr((Tree2toNDiagram(3),_quark[iy],_gluon,_antiquark[_quarkflavour-1], 1,_quark[iy],2,_antiquark[_quarkflavour-1],-21))); // gluon t-channel add(new_ptr((Tree2toNDiagram(3),_quark[_quarkflavour-1],_gluon,_antiquark[iy], 1,_quark[_quarkflavour-1],2,_antiquark[iy],-21))); } } } } Selector<const ColourLines *> MEPP2QQ::colourGeometries(tcDiagPtr diag) const { // colour lines for gg to q qbar static const ColourLines cggqq[4]={ColourLines("1 4, -1 -2 3, -3 -5"), ColourLines("3 4, -3 -2 1, -1 -5"), ColourLines("2 -1, 1 3 4, -2 -3 -5"), ColourLines("1 -2, -1 -3 -5, 2 3 4")}; // colour lines for q g to q g static const ColourLines cqgqg[4]={ColourLines("1 -2, 2 3 5, 4 -5"), ColourLines("1 5, 3 4,-3 2 -5 "), ColourLines("1 2 -3, 3 5, -5 -2 4"), ColourLines("1 -2 5,3 2 4,-3 -5")}; // colour lines for qbar g -> qbar g static const ColourLines cqbgqbg[4]={ColourLines("-1 2, -2 -3 -5, -4 5"), ColourLines("-1 -5, -3 -4, 3 -2 5"), ColourLines("-1 -2 3, -3 -5, 5 2 -4"), ColourLines("-1 2 -5,-3 -2 -4, 3 5")}; // colour lines for q q -> q q static const ColourLines cqqqq[2]={ColourLines("1 2 5,3 -2 4"), ColourLines("1 2 4,3 -2 5")}; // colour lines for qbar qbar -> qbar qbar static const ColourLines cqbqbqbqb[2]={ColourLines("-1 -2 -5,-3 2 -4"), ColourLines("-1 -2 -4,-3 2 -5")}; // colour lines for q qbar -> q qbar static const ColourLines cqqbqqb[2]={ColourLines("1 3 4,-2 -3 -5"), ColourLines("1 2 -3,4 -2 -5")}; // select the colour flow (as all ready picked just insert answer) Selector<const ColourLines *> sel; switch(abs(diag->id())) { // gg -> q qbar subprocess case 4: case 5: sel.insert(1.0, &cggqq[abs(diag->id())-4]); break; case 6: sel.insert(1.0, &cggqq[1+_flow]); break; // q g -> q g subprocess case 10: case 11: sel.insert(1.0, &cqgqg[abs(diag->id())-10]); break; case 12: sel.insert(1.0, &cqgqg[1+_flow]); break; // q g -> q g subprocess case 13: case 14: sel.insert(1.0, &cqbgqbg[abs(diag->id())-13]); break; case 15: sel.insert(1.0, &cqbgqbg[1+_flow]); break; // q q -> q q subprocess case 16: case 17: sel.insert(1.0, &cqqqq[abs(diag->id())-16]); break; // qbar qbar -> qbar qbar subprocess case 18: case 19: sel.insert(1.0, &cqbqbqbqb[abs(diag->id())-18]); break; // q qbar -> q qbar subprocess case 20: case 21: sel.insert(1.0, &cqqbqqb[abs(diag->id())-20]); break; } return sel; } double MEPP2QQ::me2() const { // total matrix element double me(0.); // gg initiated processes if(mePartonData()[0]->id()==ParticleID::g&&mePartonData()[1]->id()==ParticleID::g) { VectorWaveFunction g1w(rescaledMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction g2w(rescaledMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction qw(rescaledMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction qbarw(rescaledMomenta()[3],mePartonData()[3],outgoing); vector<VectorWaveFunction> g1,g2; vector<SpinorBarWaveFunction> q; vector<SpinorWaveFunction> qbar; for(unsigned int ix=0;ix<2;++ix) { g1w.reset(2*ix);g1.push_back(g1w); g2w.reset(2*ix);g2.push_back(g2w); qw.reset(ix);q.push_back(qw); qbarw.reset(ix);qbar.push_back(qbarw); } // calculate the matrix element me=gg2qqbarME(g1,g2,q,qbar,0); } // quark first processes else if(mePartonData()[0]->id()>0) { // q g -> q g if(mePartonData()[1]->id()==ParticleID::g) { SpinorWaveFunction qinw(rescaledMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction g2w(rescaledMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction qoutw(rescaledMomenta()[2],mePartonData()[2],outgoing); VectorWaveFunction g4w(rescaledMomenta()[3],mePartonData()[3],outgoing); vector<VectorWaveFunction> g2,g4; vector<SpinorWaveFunction> qin; vector<SpinorBarWaveFunction> qout; for(unsigned int ix=0;ix<2;++ix) { qinw.reset(ix);qin.push_back(qinw); g2w.reset(2*ix);g2.push_back(g2w); qoutw.reset(ix);qout.push_back(qoutw); g4w.reset(2*ix);g4.push_back(g4w); } // calculate the matrix element me = qg2qgME(qin,g2,qout,g4,0); } // q qbar to q qbar else if(mePartonData()[1]->id()<0) { SpinorWaveFunction q1w(rescaledMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction q2w(rescaledMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction q3w(rescaledMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction q4w(rescaledMomenta()[3],mePartonData()[3],outgoing); vector<SpinorWaveFunction> q1,q4; vector<SpinorBarWaveFunction> q2,q3; for(unsigned int ix=0;ix<2;++ix) { q1w.reset(ix);q1.push_back(q1w); q2w.reset(ix);q2.push_back(q2w); q3w.reset(ix);q3.push_back(q3w); q4w.reset(ix);q4.push_back(q4w); } // calculate the matrix element me = qqbar2qqbarME(q1,q2,q3,q4,0); } // q q -> q q else if(mePartonData()[1]->id()>0) { SpinorWaveFunction q1w(rescaledMomenta()[0],mePartonData()[0],incoming); SpinorWaveFunction q2w(rescaledMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction q3w(rescaledMomenta()[2],mePartonData()[2],outgoing); SpinorBarWaveFunction q4w(rescaledMomenta()[3],mePartonData()[3],outgoing); vector<SpinorWaveFunction> q1,q2; vector<SpinorBarWaveFunction> q3,q4; for(unsigned int ix=0;ix<2;++ix) { q1w.reset(ix);q1.push_back(q1w); q2w.reset(ix);q2.push_back(q2w); q3w.reset(ix);q3.push_back(q3w); q4w.reset(ix);q4.push_back(q4w); } // calculate the matrix element me = qq2qqME(q1,q2,q3,q4,0); } } // antiquark first processes else if(mePartonData()[0]->id()<0) { // qbar g -> qbar g if(mePartonData()[1]->id()==ParticleID::g) { SpinorBarWaveFunction qinw(rescaledMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction g2w(rescaledMomenta()[1],mePartonData()[1],incoming); SpinorWaveFunction qoutw(rescaledMomenta()[2],mePartonData()[2],outgoing); VectorWaveFunction g4w(rescaledMomenta()[3],mePartonData()[3],outgoing); vector<VectorWaveFunction> g2,g4; vector<SpinorBarWaveFunction> qin; vector<SpinorWaveFunction> qout; for(unsigned int ix=0;ix<2;++ix) { qinw.reset(ix);qin.push_back(qinw); g2w.reset(2*ix);g2.push_back(g2w); qoutw.reset(ix);qout.push_back(qoutw); g4w.reset(2*ix);g4.push_back(g4w); } // calculate the matrix element me = qbarg2qbargME(qin,g2,qout,g4,0); } // qbar qbar -> qbar qbar else if(mePartonData()[1]->id()<0) { SpinorBarWaveFunction q1w(rescaledMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction q2w(rescaledMomenta()[1],mePartonData()[1],incoming); SpinorWaveFunction q3w(rescaledMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction q4w(rescaledMomenta()[3],mePartonData()[3],outgoing); vector<SpinorBarWaveFunction> q1,q2; vector<SpinorWaveFunction> q3,q4; for(unsigned int ix=0;ix<2;++ix) { q1w.reset(ix);q1.push_back(q1w); q2w.reset(ix);q2.push_back(q2w); q3w.reset(ix);q3.push_back(q3w); q4w.reset(ix);q4.push_back(q4w); } // calculate the matrix element me = qbarqbar2qbarqbarME(q1,q2,q3,q4,0); } } else throw Exception() << "Unknown process in MEPP2QQ::me2()" << Exception::abortnow; // return the answer return me; } void MEPP2QQ::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]); hard.push_back(sub->outgoing()[1]); // identify the process and calculate the matrix element if(hard[0]->id()==ParticleID::g&&hard[1]->id()==ParticleID::g) { if(hard[2]->id()<0) swap(hard[2],hard[3]); vector<VectorWaveFunction> g1,g2; vector<SpinorBarWaveFunction> q; vector<SpinorWaveFunction> qbar; // off-shell wavefunctions for the spin correlations VectorWaveFunction( g1,hard[0],incoming,false,true,true); VectorWaveFunction( g2,hard[1],incoming,false,true,true); SpinorBarWaveFunction(q ,hard[2],outgoing,true ,true); SpinorWaveFunction( qbar,hard[3],outgoing,true ,true); g1[1]=g1[2];g2[1]=g2[2]; // on-shell for matrix element vector<Lorentz5Momentum> momenta; cPDVector data; for(unsigned int ix=0;ix<4;++ix) { momenta.push_back(hard[ix]->momentum()); data .push_back(hard[ix]->dataPtr()); } rescaleMomenta(momenta,data); VectorWaveFunction g1w(rescaledMomenta()[0],data[0],incoming); VectorWaveFunction g2w(rescaledMomenta()[1],data[1],incoming); SpinorBarWaveFunction qw(rescaledMomenta()[2],data[2],outgoing); SpinorWaveFunction qbarw(rescaledMomenta()[3],data[3],outgoing); for(unsigned int ix=0;ix<2;++ix) { g1w.reset(2*ix); g1 [ix] = g1w ; g2w.reset(2*ix); g2 [ix] = g2w ; qw.reset(ix); q [ix] = qw ; qbarw.reset(ix); qbar[ix] = qbarw; } gg2qqbarME(g1,g2,q,qbar,_flow); } else if(hard[0]->id()==ParticleID::g||hard[1]->id()==ParticleID::g) { if(hard[0]->id()==ParticleID::g) swap(hard[0],hard[1]); if(hard[2]->id()==ParticleID::g) swap(hard[2],hard[3]); // on-shell for matrix element vector<Lorentz5Momentum> momenta; cPDVector data; for(unsigned int ix=0;ix<4;++ix) { momenta.push_back(hard[ix]->momentum()); data .push_back(hard[ix]->dataPtr()); } rescaleMomenta(momenta,data); vector<VectorWaveFunction> g2,g4; VectorWaveFunction(g2,hard[1],incoming,false,true,true); VectorWaveFunction(g4,hard[3],outgoing,true ,true,true); VectorWaveFunction gin (rescaledMomenta()[1],data[1],incoming); VectorWaveFunction gout(rescaledMomenta()[3],data[3],outgoing); for(unsigned int ix=0;ix<2;++ix) { gin .reset(2*ix); g2 [ix] = gin ; gout.reset(2*ix); g4 [ix] = gout; } // q g -> q g if(hard[0]->id()>0) { vector<SpinorWaveFunction> q1; vector<SpinorBarWaveFunction> q3; SpinorWaveFunction( q1,hard[0],incoming,false,true); SpinorBarWaveFunction(q3,hard[2],outgoing,true ,true); SpinorWaveFunction qin (rescaledMomenta()[0],data[0],incoming); SpinorBarWaveFunction qout(rescaledMomenta()[2],data[2],outgoing); for(unsigned int ix=0;ix<2;++ix) { qin .reset(ix); q1[ix] = qin ; qout.reset(ix); q3[ix] = qout; } qg2qgME(q1,g2,q3,g4,_flow); } // qbar g -> qbar g else { vector<SpinorBarWaveFunction> q1; vector<SpinorWaveFunction> q3; SpinorBarWaveFunction(q1,hard[0],incoming,false,true); SpinorWaveFunction( q3,hard[2],outgoing,true ,true); SpinorBarWaveFunction qin (rescaledMomenta()[0],data[0],incoming); SpinorWaveFunction qout(rescaledMomenta()[2],data[2],outgoing); for(unsigned int ix=0;ix<2;++ix) { qin .reset(ix); q1[ix] = qin ; qout.reset(ix); q3[ix] = qout; } qbarg2qbargME(q1,g2,q3,g4,_flow); } } else if(hard[0]->id()>0||hard[1]->id()>0) { // q q -> q q if(hard[0]->id()>0&&hard[1]->id()>0) { if(hard[2]->id()!=hard[0]->id()) swap(hard[2],hard[3]); vector<SpinorWaveFunction> q1,q2; vector<SpinorBarWaveFunction> q3,q4; SpinorWaveFunction( q1,hard[0],incoming,false,true); SpinorWaveFunction( q2,hard[1],incoming,false,true); SpinorBarWaveFunction(q3,hard[2],outgoing,true ,true); SpinorBarWaveFunction(q4,hard[3],outgoing,true ,true); // on-shell for matrix element vector<Lorentz5Momentum> momenta; cPDVector data; for(unsigned int ix=0;ix<4;++ix) { momenta.push_back(hard[ix]->momentum()); data .push_back(hard[ix]->dataPtr()); } rescaleMomenta(momenta,data); SpinorWaveFunction q1w(rescaledMomenta()[0],data[0],incoming); SpinorWaveFunction q2w(rescaledMomenta()[1],data[1],incoming); SpinorBarWaveFunction q3w(rescaledMomenta()[2],data[2],outgoing); SpinorBarWaveFunction q4w(rescaledMomenta()[3],data[3],outgoing); for(unsigned int ix=0;ix<2;++ix) { q1w.reset(ix);q1[ix] = q1w; q2w.reset(ix);q2[ix] = q2w; q3w.reset(ix);q3[ix] = q3w; q4w.reset(ix);q4[ix] = q4w; } qq2qqME(q1,q2,q3,q4,_flow); } // q qbar -> q qbar else { if(hard[0]->id()<0) swap(hard[0],hard[1]); if(hard[2]->id()<0) swap(hard[2],hard[3]); vector<SpinorWaveFunction> q1,q4; vector<SpinorBarWaveFunction> q2,q3; // off-shell for spin correlations SpinorWaveFunction( q1,hard[0],incoming,false,true); SpinorBarWaveFunction(q2,hard[1],incoming,false,true); SpinorBarWaveFunction(q3,hard[2],outgoing,true ,true); SpinorWaveFunction( q4,hard[3],outgoing,true ,true); // on-shell for matrix element vector<Lorentz5Momentum> momenta; cPDVector data; for(unsigned int ix=0;ix<4;++ix) { momenta.push_back(hard[ix]->momentum()); data .push_back(hard[ix]->dataPtr()); } rescaleMomenta(momenta,data); SpinorWaveFunction q1w(rescaledMomenta()[0],data[0],incoming); SpinorBarWaveFunction q2w(rescaledMomenta()[1],data[1],incoming); SpinorBarWaveFunction q3w(rescaledMomenta()[2],data[2],outgoing); SpinorWaveFunction q4w(rescaledMomenta()[3],data[3],outgoing); for(unsigned int ix=0;ix<2;++ix) { q1w.reset(ix);q1[ix] = q1w; q2w.reset(ix);q2[ix] = q2w; q3w.reset(ix);q3[ix] = q3w; q4w.reset(ix);q4[ix] = q4w; } qqbar2qqbarME(q1,q2,q3,q4,_flow); } } else if (hard[0]->id()<0&&hard[1]->id()<0) { if(hard[2]->id()!=hard[0]->id()) swap(hard[2],hard[3]); vector<SpinorBarWaveFunction> q1,q2; vector<SpinorWaveFunction> q3,q4; SpinorBarWaveFunction(q1,hard[0],incoming,false,true); SpinorBarWaveFunction(q2,hard[1],incoming,false,true); SpinorWaveFunction( q3,hard[2],outgoing,true ,true); SpinorWaveFunction( q4,hard[3],outgoing,true ,true); // on-shell for matrix element vector<Lorentz5Momentum> momenta; cPDVector data; for(unsigned int ix=0;ix<4;++ix) { momenta.push_back(hard[ix]->momentum()); data .push_back(hard[ix]->dataPtr()); } rescaleMomenta(momenta,data); SpinorBarWaveFunction q1w(rescaledMomenta()[0],data[0],incoming); SpinorBarWaveFunction q2w(rescaledMomenta()[1],data[1],incoming); SpinorWaveFunction q3w(rescaledMomenta()[2],data[2],outgoing); SpinorWaveFunction q4w(rescaledMomenta()[3],data[3],outgoing); for(unsigned int ix=0;ix<2;++ix) { q1w.reset(ix);q1[ix] = q1w; q2w.reset(ix);q2[ix] = q2w; q3w.reset(ix);q3[ix] = q3w; q4w.reset(ix);q4[ix] = q4w; } qbarqbar2qbarqbarME(q1,q2,q3,q4,_flow); } else throw Exception() << "Unknown process in MEPP2QQ::constructVertex()" << Exception::runerror; // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(_me); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) hard[ix]->spinInfo()->productionVertex(hardvertex); } �����herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2GammaGamma.h������������������������������������������0000644�0001750�0001750�00000020450�11754474776�023675� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEPP2GammaGamma.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEPP2GammaGamma_H #define HERWIG_MEPP2GammaGamma_H // // This is the declaration of the MEPP2GammaGamma class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The MEPP2GammaGamma class implements the production of photon pairs in * hadron hadron collisions. * * @see \ref MEPP2GammaGammaInterfaces "The interfaces" * defined for MEPP2GammaGamma. */ class MEPP2GammaGamma: public HwMEBase { public: /** * The default constructor. */ MEPP2GammaGamma() : _maxflavour(5),_process(0) { massOption(vector<unsigned int>(2,0)); } /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Members to return the matrix elements for the different subprocesses */ //@{ /** * Matrix element for \f$q\bar{q}\to \gamma\gamma\f$. * @param fin Spinors for incoming quark * @param ain Spinors for incoming antiquark * @param p1 Polarization vectors for the first outgoing photon * @param p2 Polarization vectors for the second outgoing photon * @param me Whether or not to calculate the matrix element for spin correlations */ double qqbarME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, vector<VectorWaveFunction> & p1 , vector<VectorWaveFunction> & p2 , bool me) const; /** * Matrix element for \f$gg \to \gamma\gamma\f$. * @param g1 Polarization vectors for the first incoming gluon * @param g2 Polarization vectors for the second incoming gluon * @param p1 Polarization vectors for the first outgoing photon * @param p2 Polarization vectors for the second outgoing photon * @param me Whether or not to calculate the matrix element for spin correlations */ double ggME(vector<VectorWaveFunction> & g1 , vector<VectorWaveFunction> & g2 , vector<VectorWaveFunction> & p1 , vector<VectorWaveFunction> & p2 , bool me) const; //@} /** * \f$gg\to\gamma\gamma\f$ matrix element for the \f$++++\f$ helicity configuration. * @param s The \f$s\f$ invariant * @param t The \f$t\f$ invariant * @param u The \f$u\f$ invariant */ Complex ggme(Energy2 s,Energy2 t,Energy2 u) const { double ltu(log(abs(t/u))); double frac1((t-u)/s),frac2((sqr(t)+sqr(u))/sqr(s)); double thetatu = (t/u<0) ? 0 : 1; double thetat = (t<ZERO) ? 0 : 1; double thetau = (u<ZERO) ? 0 : 1; using Constants::pi; return Complex(1.+frac1*ltu+0.5*frac2*(sqr(ltu)+sqr(pi)*thetatu), -pi*(thetat-thetau)*(frac1+frac2*ltu)); } private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEPP2GammaGamma> initMEPP2GammaGamma; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEPP2GammaGamma & operator=(const MEPP2GammaGamma &); private: /** * Pointer to the quark-antiquark-photon vertex */ AbstractFFVVertexPtr _photonvertex; /** * Maximum PDG code of the quarks allowed */ unsigned int _maxflavour; /** * Option for which processes to include */ unsigned int _process; /** * Matrix element for spin correlations */ ProductionMatrixElement _me; /** * weights for the different quark annhilation diagrams */ mutable double _diagwgt[2]; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEPP2GammaGamma. */ template <> struct BaseClassTrait<Herwig::MEPP2GammaGamma,1> { /** Typedef of the first base class of MEPP2GammaGamma. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEPP2GammaGamma class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEPP2GammaGamma> : public ClassTraitsBase<Herwig::MEPP2GammaGamma> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEPP2GammaGamma"; } /** * The name of a file containing the dynamic library where the class * MEPP2GammaGamma is implemented. It may also include several, space-separated, * libraries if the class MEPP2GammaGamma depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEPP2GammaGamma_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2QQHiggs.cc��������������������������������������������0000644�0001750�0001750�00000055015�11754474776�023356� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2QQH class. // #include "MEPP2QQHiggs.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/Cuts/Cuts.h" #include "Herwig++/MatrixElement/HardVertex.h" using namespace Herwig; MEPP2QQHiggs::MEPP2QQHiggs() : quarkFlavour_(6), process_(0), shapeOpt_(2), mh_(), wh_(), alpha_(1.1) {} ClassDescription<MEPP2QQHiggs> MEPP2QQHiggs::initMEPP2QQHiggs; // Definition of the static class description member. void MEPP2QQHiggs::Init() { static ClassDocumentation<MEPP2QQHiggs> documentation ("The MEPP2QQHiggs class implements the matrix elements for the " "production of the Higgs boson in association with a heavy quark-antiquark pair"); static Switch<MEPP2QQHiggs,unsigned int> interfaceQuarkType ("QuarkType", "The type of quark", &MEPP2QQHiggs::quarkFlavour_, 6, false, false); static SwitchOption interfaceQuarkTypeBottom (interfaceQuarkType, "Bottom", "Produce bottom-antibottom", 5); static SwitchOption interfaceQuarkTypeTop (interfaceQuarkType, "Top", "Produce top-antitop", 6); static Switch<MEPP2QQHiggs,unsigned int> interfaceProcess ("Process", "Which subprocesses to include", &MEPP2QQHiggs::process_, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all subprocesses", 0); static SwitchOption interfaceProcess1 (interfaceProcess, "gg", "Include only gg -> QQbarH processes", 1); static SwitchOption interfaceProcessqbarqbarqbarqbar (interfaceProcess, "qqbar", "Include only qbar qbar -> QQbarH processes", 2); static Switch<MEPP2QQHiggs,unsigned int> interfaceShapeOption ("ShapeScheme", "Option for the treatment of the Higgs resonance shape", &MEPP2QQHiggs::shapeOpt_, 2, false, false); static SwitchOption interfaceStandardShapeFixed (interfaceShapeOption, "FixedBreitWigner", "Breit-Wigner s-channel resonance", 1); static SwitchOption interfaceStandardShapeRunning (interfaceShapeOption, "MassGenerator", "Use the mass generator to give the shape", 2); static SwitchOption interfaceStandardShapeOnShell (interfaceShapeOption, "OnShell", "Produce an on-shell Higgs boson", 0); static Parameter<MEPP2QQHiggs,double> interfaceAlpha ("Alpha", "Power for the generation of the tranverse mass in the pT mapping", &MEPP2QQHiggs::alpha_, 1.1, 0.0, 10.0, false, false, Interface::limited); } Energy2 MEPP2QQHiggs::scale() const { return sHat(); // return sqr(mePartonData()[2]->mass()+mePartonData()[3]->mass()+ // mePartonData()[4]->mass()); } int MEPP2QQHiggs::nDim() const { return 4 + int(shapeOpt_>0); } unsigned int MEPP2QQHiggs::orderInAlphaS() const { return 2; } unsigned int MEPP2QQHiggs::orderInAlphaEW() const { return 1; } IBPtr MEPP2QQHiggs::clone() const { return new_ptr(*this); } IBPtr MEPP2QQHiggs::fullclone() const { return new_ptr(*this); } void MEPP2QQHiggs::setKinematics() { HwMEBase::setKinematics(); } void MEPP2QQHiggs::persistentOutput(PersistentOStream & os) const { os << quarkFlavour_ << process_ << shapeOpt_ << ounit(mh_,GeV) << ounit(wh_,GeV) << hmass_ << GGGVertex_ << QQGVertex_ << QQHVertex_ << gluon_ << higgs_ << quark_ << antiquark_ << alpha_; } void MEPP2QQHiggs::persistentInput(PersistentIStream & is, int) { is >> quarkFlavour_ >> process_ >> shapeOpt_ >> iunit(mh_,GeV) >> iunit(wh_,GeV) >> hmass_ >> GGGVertex_ >> QQGVertex_ >> QQHVertex_ >> gluon_ >> higgs_ >> quark_ >> antiquark_ >> alpha_; } void MEPP2QQHiggs::doinit() { HwMEBase::doinit(); // stuff for the higgs mass higgs_=getParticleData(ParticleID::h0); mh_ = higgs_->mass(); wh_ = higgs_->width(); if(higgs_->massGenerator()) { hmass_=dynamic_ptr_cast<GenericMassGeneratorPtr>(higgs_->massGenerator()); } if(shapeOpt_==2&&!hmass_) throw InitException() << "If using the mass generator for the line shape in MEPP2QQHiggs::doinit()" << "the mass generator must be an instance of the GenericMassGenerator class" << Exception::runerror; // get the vertex pointers from the SM object tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(!hwsm) throw InitException() << "Wrong type of StandardModel object in " << "MEPP2QQHiggs::doinit() the Herwig++" << " version must be used" << Exception::runerror; GGGVertex_ = hwsm->vertexGGG(); QQGVertex_ = hwsm->vertexFFG(); QQHVertex_ = hwsm->vertexFFH(); // get the particle data objects gluon_=getParticleData(ParticleID::g); for(int ix=1;ix<=6;++ix) { quark_.push_back( getParticleData( ix)); antiquark_.push_back(getParticleData(-ix)); } } bool MEPP2QQHiggs::generateKinematics(const double * r) { jacobian(1.); // CMS energy Energy rs = sqrt(sHat()); // quark mass Energy mq(quark_[quarkFlavour_-1]->mass()); // generate the higgs mass Energy mh(mh_); if(shapeOpt_!=0) { Energy mhmax = min(rs-2.*mq,higgs_->massMax()); Energy mhmin = max(ZERO ,higgs_->massMin()); if(mhmax<=mhmin) return false; double rhomin = atan2((sqr(mhmin)-sqr(mh_)), mh_*wh_); double rhomax = atan2((sqr(mhmax)-sqr(mh_)), mh_*wh_); mh = sqrt(mh_*wh_*tan(rhomin+r[4]*(rhomax-rhomin))+sqr(mh_)); jacobian(jacobian()*(rhomax-rhomin)); } if(rs<mh+2.*mq) return false; // limits for virtual quark mass Energy2 mmin(sqr(mq+mh)),mmax(sqr(rs-mq)); double rhomin,rhomax; if(alpha_==0.) { rhomin = mmin/sqr(mq); rhomax = mmax/sqr(mq); } else if(alpha_==1.) { rhomax = log((mmax-sqr(mq))/sqr(mq)); rhomin = log((mmin-sqr(mq))/sqr(mq)); } else { rhomin = pow((mmax-sqr(mq))/sqr(mq),1.-alpha_); rhomax = pow((mmin-sqr(mq))/sqr(mq),1.-alpha_); jacobian(jacobian()/(alpha_-1.)); } // branch for mass smoothing Energy2 m132,m232; Energy p1,p2; // first branch if(r[1]<=0.5) { double rtemp = 2.*r[1]; double rho = rhomin+rtemp*(rhomax-rhomin); if(alpha_==0) m132 = sqr(mq)*rho; else if(alpha_==1) m132 = sqr(mq)*(exp(rho)+1.); else m132 = sqr(mq)*(pow(rho,1./(1.-alpha_))+1.); Energy m13 = sqrt(m132); try { p1 = SimplePhaseSpace::getMagnitude(sHat(), m13, mq); p2 = SimplePhaseSpace::getMagnitude(m132,mq,mh); } catch ( ImpossibleKinematics ) { return false; } Energy ptmin = lastCuts().minKT(mePartonData()[3]); double ctmin = -1.0, ctmax = 1.0; if ( ptmin > ZERO ) { double ctm = 1.0 - sqr(ptmin/p1); if ( ctm <= 0.0 ) return false; ctmin = max(ctmin, -sqrt(ctm)); ctmax = min(ctmax, sqrt(ctm)); } double cos1 = getCosTheta(ctmin,ctmax,r[0]); double sin1(sqrt(1.-sqr(cos1))); double phi1 = Constants::twopi*UseRandom::rnd(); Lorentz5Momentum p13(sin1*p1*cos(phi1),sin1*p1*sin(phi1),cos1*p1, sqrt(sqr(p1)+m132),m13); meMomenta()[3].setVect(Momentum3(-sin1*p1*cos(phi1),-sin1*p1*sin(phi1),-cos1*p1)); meMomenta()[3].setMass(mq); meMomenta()[3].rescaleEnergy(); bool test=Kinematics::twoBodyDecay(p13,mq,mh,-1.+2*r[2],r[3]*Constants::twopi, meMomenta()[2],meMomenta()[4]); if(!test) return false; m232 = (meMomenta()[3]+meMomenta()[4]).m2(); double D = 2./(pow(sqr(mq)/(m132-sqr(mq)),alpha_)+ pow(sqr(mq)/(m232-sqr(mq)),alpha_)); jacobian(0.5*jacobian()*rs/m13*sqr(mq)*D*(rhomax-rhomin)/sHat()); } // second branch else { double rtemp = 2.*(r[1]-0.5); double rho = rhomin+rtemp*(rhomax-rhomin); if(alpha_==0) m232 = sqr(mq)*rho; else if(alpha_==1) m232 = sqr(mq)*(exp(rho)+1.); else m232 = sqr(mq)*(pow(rho,1./(1.-alpha_))+1.); Energy m23 = sqrt(m232); try { p1 = SimplePhaseSpace::getMagnitude(sHat(), m23, mq); p2 = SimplePhaseSpace::getMagnitude(m232,mq,mh); } catch ( ImpossibleKinematics ) { return false; } Energy ptmin = lastCuts().minKT(mePartonData()[2]); double ctmin = -1.0, ctmax = 1.0; if ( ptmin > ZERO ) { double ctm = 1.0 - sqr(ptmin/p1); if ( ctm <= 0.0 ) return false; ctmin = max(ctmin, -sqrt(ctm)); ctmax = min(ctmax, sqrt(ctm)); } double cos1 = getCosTheta(ctmin,ctmax,r[0]); double sin1(sqrt(1.-sqr(cos1))); double phi1 = Constants::twopi*UseRandom::rnd(); Lorentz5Momentum p23(-sin1*p1*cos(phi1),-sin1*p1*sin(phi1),-cos1*p1, sqrt(sqr(p1)+m232),m23); meMomenta()[2].setVect(Momentum3(sin1*p1*cos(phi1),sin1*p1*sin(phi1),cos1*p1)); meMomenta()[2].setMass(mq); meMomenta()[2].rescaleEnergy(); bool test=Kinematics::twoBodyDecay(p23,mq,mh,-1.+2*r[2],r[3]*Constants::twopi, meMomenta()[3],meMomenta()[4]); if(!test) return false; m132 = (meMomenta()[2]+meMomenta()[4]).m2(); double D = 2./(pow(sqr(mq)/(m132-sqr(mq)),alpha_)+ pow(sqr(mq)/(m232-sqr(mq)),alpha_)); jacobian(0.5*jacobian()*rs/m23*sqr(mq)*D*(rhomax-rhomin)/sHat()); } // calculate jacobian jacobian(0.125*jacobian()*p1*p2/sHat()); // check cuts vector<LorentzMomentum> out; tcPDVector tout; for(unsigned int ix=2;ix<5;++ix) { out .push_back(meMomenta()[ix]); tout.push_back(mePartonData()[ix]); } return lastCuts().passCuts(tout, out, mePartonData()[0], mePartonData()[1]); } CrossSection MEPP2QQHiggs::dSigHatDR() const { using Constants::pi; // jacobian factor for the higgs InvEnergy2 bwfact; Energy moff = meMomenta()[4].mass(); if(shapeOpt_==1) { bwfact = mePartonData()[4]->generateWidth(moff)*moff/pi/ (sqr(sqr(moff)-sqr(mh_))+sqr(mh_*wh_)); } else { bwfact = hmass_->BreitWignerWeight(moff); } double jac1 = shapeOpt_==0 ? 1. : double(bwfact*(sqr(sqr(moff)-sqr(mh_))+sqr(mh_*wh_))/(mh_*wh_)); return sqr(hbarc)*me2()*jacobian()*jac1/sHat()/pow(Constants::twopi,3); } void MEPP2QQHiggs::getDiagrams() const { tPDPtr Q = quark_[quarkFlavour_-1]; tPDPtr QB = antiquark_[quarkFlavour_-1]; // gg -> q qbar h0 subprocesses if(process_==0||process_==1) { // first t-channel add(new_ptr((Tree2toNDiagram(3), gluon_, QB, gluon_, 1, Q, 4, Q , 2, QB, 4, higgs_, -1))); add(new_ptr((Tree2toNDiagram(4), gluon_, QB, QB, gluon_, 1, Q, 3, QB, 2, higgs_, -2))); add(new_ptr((Tree2toNDiagram(3),gluon_,QB,gluon_, 1, Q, 2, QB, 5, QB, 5, higgs_, -3))); // interchange add(new_ptr((Tree2toNDiagram(3),gluon_,Q,gluon_, 2, Q, 4, Q , 1, QB, 4, higgs_, -4))); add(new_ptr((Tree2toNDiagram(4),gluon_,Q,Q,gluon_, 3, Q, 1, QB, 2, higgs_, -5))); add(new_ptr((Tree2toNDiagram(3),gluon_,Q,gluon_, 2, Q, 1, QB, 5, QB, 5, higgs_, -6))); // s-channel add(new_ptr((Tree2toNDiagram(2),gluon_,gluon_, 1, gluon_, 3, Q, 4, Q, 3, QB, 4, higgs_, -7))); add(new_ptr((Tree2toNDiagram(2),gluon_,gluon_, 1, gluon_, 3,Q, 3, QB, 5, QB, 5, higgs_, -8))); } // q qbar -> q qbar if(process_==0||process_==2) { for(unsigned int ix=1;ix<5;++ix) { // gluon s-channel add(new_ptr((Tree2toNDiagram(2),quark_[ix-1], antiquark_[ix-1], 1, gluon_, 3, Q, 4, Q , 3, QB, 4, higgs_, -9))); add(new_ptr((Tree2toNDiagram(2),quark_[ix-1], antiquark_[ix-1], 1, gluon_, 3, Q, 3, QB, 5, QB, 5, higgs_, -10))); } } } double MEPP2QQHiggs::me2() const { // total matrix element double me(0.); // gg initiated processes if(mePartonData()[0]->id()==ParticleID::g) { VectorWaveFunction g1w(meMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction g2w(meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction qw(meMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction qbarw(meMomenta()[3],mePartonData()[3],outgoing); ScalarWaveFunction higgs(meMomenta()[4],mePartonData()[4],1.,outgoing); vector<VectorWaveFunction> g1,g2; vector<SpinorBarWaveFunction> q; vector<SpinorWaveFunction> qbar; for(unsigned int ix=0;ix<2;++ix) { g1w.reset(2*ix);g1.push_back(g1w); g2w.reset(2*ix);g2.push_back(g2w); qw.reset(ix);q.push_back(qw); qbarw.reset(ix);qbar.push_back(qbarw); } // calculate the matrix element me=ggME(g1,g2,q,qbar,higgs,0); } // q qbar initiated else { SpinorWaveFunction q1w(meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction q2w(meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction q3w(meMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction q4w(meMomenta()[3],mePartonData()[3],outgoing); ScalarWaveFunction higgs(meMomenta()[4],mePartonData()[4],1.,outgoing); vector<SpinorWaveFunction> q1,q4; vector<SpinorBarWaveFunction> q2,q3; for(unsigned int ix=0;ix<2;++ix) { q1w.reset(ix);q1.push_back(q1w); q2w.reset(ix);q2.push_back(q2w); q3w.reset(ix);q3.push_back(q3w); q4w.reset(ix);q4.push_back(q4w); } // calculate the matrix element me = qqME(q1,q2,q3,q4,higgs,0); } return me*sHat()*UnitRemoval::InvE2; } double MEPP2QQHiggs::ggME(vector<VectorWaveFunction> &g1, vector<VectorWaveFunction> &g2, vector<SpinorBarWaveFunction> & q, vector<SpinorWaveFunction> & qbar, ScalarWaveFunction & hwave, unsigned int iflow) const { // scale Energy2 mt(scale()); Energy mass = q[0].mass(); // matrix element to be stored if(iflow!=0) me_.reset(ProductionMatrixElement(PDT::Spin1,PDT::Spin1, PDT::Spin1Half,PDT::Spin1Half, PDT::Spin0)); // calculate the matrix element double output(0.),sumflow[2]={0.,0.}; double sumdiag[8]={0.,0.,0.,0.,0.,0.,0.,0.}; Complex diag[8],flow[2]; VectorWaveFunction interv; SpinorWaveFunction inters,QBoff; SpinorBarWaveFunction intersb,Qoff; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { interv = GGGVertex_->evaluate(mt,5,gluon_,g1[ihel1],g2[ihel2]); for(unsigned int ohel1=0;ohel1<2;++ohel1) { Qoff = QQHVertex_->evaluate(mt,3,q[ohel1].particle(), q[ohel1],hwave,mass); for(unsigned int ohel2=0;ohel2<2;++ohel2) { QBoff = QQHVertex_->evaluate(mt,3,qbar[ohel2].particle(), qbar[ohel2],hwave,mass); // 1st diagram inters = QQGVertex_->evaluate(mt,1,qbar[ohel2].particle(), qbar[ohel2],g2[ihel2],mass); diag[0] = QQGVertex_->evaluate(mt,inters,Qoff,g1[ihel1]); // 2nd diagram intersb = QQGVertex_->evaluate(mt,1,q[ohel1].particle(), q[ohel1],g1[ihel1],mass); diag[1] = QQHVertex_->evaluate(mt,inters,intersb,hwave); // 3rd diagram diag[2] = QQGVertex_->evaluate(mt,QBoff,intersb,g2[ihel2]); // 4th diagram inters = QQGVertex_->evaluate(mt,1,qbar[ohel2].particle(), qbar[ohel2],g1[ihel1],mass); diag[3] = QQGVertex_->evaluate(mt,inters,Qoff,g2[ihel2]); // 5th diagram intersb = QQGVertex_->evaluate(mt,1,q[ohel1].particle(), q[ohel1],g2[ihel2],mass); diag[4] = QQHVertex_->evaluate(mt,inters,intersb,hwave); // 6th diagram diag[5] = QQGVertex_->evaluate(mt,QBoff,intersb,g1[ihel1]); // 7th diagram diag[6] = QQGVertex_->evaluate(mt,qbar[ohel2],Qoff ,interv); // 8th diagram diag[7] = QQGVertex_->evaluate(mt,QBoff ,q[ohel1],interv); // colour flows flow[0]=diag[0]+diag[1]+diag[2]+(diag[6]+diag[7]); flow[1]=diag[3]+diag[4]+diag[5]-(diag[6]+diag[7]); // sums for(unsigned int ix=0;ix<8;++ix) sumdiag[ix] += norm(diag[ix]); for(unsigned int ix=0;ix<2;++ix) sumflow[ix] += norm(flow[ix]); // total output +=real(flow[0]*conj(flow[0])+flow[1]*conj(flow[1]) -0.25*flow[0]*conj(flow[1])); // store the me if needed if(iflow!=0) me_(2*ihel1,2*ihel2,ohel1,ohel2,0)=flow[iflow-1]; } } } } // select a colour flow flow_ = 1 + UseRandom::rnd2(sumflow[0],sumflow[1]); if(flow_==1) sumdiag[0]=sumdiag[1]=sumdiag[2]=0.; else sumdiag[3]=sumdiag[4]=sumdiag[5]=0.; // select a diagram from that flow double prob = UseRandom::rnd(); for(unsigned int ix=0;ix<8;++ix) { if(prob<=sumdiag[ix]) { diagram_=1+ix; break; } prob -= sumdiag[ix]; } // final part of colour and spin factors return output/48.; } double MEPP2QQHiggs::qqME(vector<SpinorWaveFunction> & q1, vector<SpinorBarWaveFunction> & q2, vector<SpinorBarWaveFunction> & q3, vector<SpinorWaveFunction> & q4, ScalarWaveFunction & hwave, unsigned int iflow) const { // scale Energy2 mt(scale()); Energy mass = q3[0].mass(); // matrix element to be stored if(iflow!=0) me_.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half, PDT::Spin0)); // calculate the matrix element double output(0.),sumdiag[2]={0.,0.}; Complex diag[2]; VectorWaveFunction interv; SpinorWaveFunction QBoff; SpinorBarWaveFunction Qoff; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { interv = QQGVertex_->evaluate(mt,5,gluon_,q1[ihel1],q2[ihel2]); for(unsigned int ohel1=0;ohel1<2;++ohel1) { Qoff = QQHVertex_->evaluate(mt,3,q3[ohel1].particle(), q3[ohel1],hwave,mass); for(unsigned int ohel2=0;ohel2<2;++ohel2) { QBoff = QQHVertex_->evaluate(mt,3,q4[ohel2].particle(), q4[ohel2],hwave,mass); // 1st diagram diag[0] = QQGVertex_->evaluate(mt,q4[ohel2],Qoff,interv); // 2nd diagram diag[1] = QQGVertex_->evaluate(mt,QBoff,q3[ohel1],interv); // sum of diagrams for(unsigned int ix=0;ix<2;++ix) sumdiag[ix] += norm(diag[ix]); diag[0] += diag[1]; output += norm(diag[0]); if(iflow!=0) me_(ihel1,ihel2,ohel1,ohel2,0) = diag[0]; } } } } // only 1 colour flow flow_=1; // select a diagram diagram_ = 9+UseRandom::rnd2(sumdiag[0],sumdiag[1]); // final part of colour and spin factors return output/18.; } Selector<const ColourLines *> MEPP2QQHiggs::colourGeometries(tcDiagPtr diag) const { // colour lines for gg -> Q Qbar H static const ColourLines cgg[10]= {ColourLines("1 4 5, -1 -2 3 , -3 -6 "), ColourLines("1 5 , -1 -2 -3 4, -4 -6 "), ColourLines("1 4 , -1 -2 3 , -3 -5 -6"), ColourLines("3 4 5, 1 2 -3 , -1 -6 "), ColourLines("4 5 , 1 2 3 -4, -1 -6"), ColourLines("3 4 , 1 2 -3 , -1 -5 -6"), ColourLines("1 3 4 5, -1 2, -2 -3 -6"), ColourLines("2 3 4 5, 1 -2, -1 -3 -6"), ColourLines("1 3 4, -1 2, -2 -3 -5 -6"), ColourLines("2 3 4, 1 -2, -1 -3 -5 -6")}; // colour lines for q qbar -> Q Qbar H static const ColourLines cqq[2]= {ColourLines("1 3 4 5, -2 -3 -6"), ColourLines("1 3 4 , -2 -3 -5 -6")}; // select the colour flow (as all ready picked just insert answer) Selector<const ColourLines *> sel; switch(abs(diag->id())) { // gg -> q qbar subprocess case 1: case 2: case 3: case 4: case 5: case 6: sel.insert(1.0, &cgg[abs(diag->id())-1]); break; case 7: sel.insert(1.0, &cgg[5 + flow_]); break; case 8: sel.insert(1.0, &cgg[7 + flow_]); break; // q qbar -> q qbar subprocess case 9: case 10: sel.insert(1.0, &cqq[abs(diag->id())-9]); break; } return sel; } Selector<MEBase::DiagramIndex> MEPP2QQHiggs::diagrams(const DiagramVector & diags) const { // select the diagram, this is easy for us as we have already done it Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if(diags[i]->id()==-int(diagram_)) sel.insert(1.0, i); else sel.insert(0., i); } return sel; } void MEPP2QQHiggs::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); for(unsigned int ix=0;ix<3;++ix) hard.push_back(sub->outgoing()[ix]); // identify the process and calculate the matrix element if(hard[0]->id()<0) swap(hard[0],hard[1]); if(hard[2]->id()==ParticleID::h0) swap(hard[2],hard[4]); if(hard[3]->id()==ParticleID::h0) swap(hard[3],hard[4]); if(hard[2]->id()<0) swap(hard[2],hard[3]); if(hard[0]->id()==ParticleID::g) { vector<VectorWaveFunction> g1,g2; vector<SpinorBarWaveFunction> q; vector<SpinorWaveFunction> qbar; // off-shell wavefunctions for the spin correlations VectorWaveFunction( g1,hard[0],incoming,false,true,true); VectorWaveFunction( g2,hard[1],incoming,false,true,true); SpinorBarWaveFunction(q ,hard[2],outgoing,true ,true); SpinorWaveFunction( qbar,hard[3],outgoing,true ,true); ScalarWaveFunction hwave( hard[4],outgoing,true); g1[1]=g1[2];g2[1]=g2[2]; ggME(g1,g2,q,qbar,hwave,flow_); } // q qbar -> Q Qbar Higgs else { vector<SpinorWaveFunction> q1,q4; vector<SpinorBarWaveFunction> q2,q3; // off-shell for spin correlations SpinorWaveFunction( q1,hard[0],incoming,false,true); SpinorBarWaveFunction(q2,hard[1],incoming,false,true); SpinorBarWaveFunction(q3,hard[2],outgoing,true ,true); SpinorWaveFunction( q4,hard[3],outgoing,true ,true); ScalarWaveFunction hwave( hard[4],outgoing,true); qqME(q1,q2,q3,q4,hwave,flow_); } // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(me_); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<5;++ix) hard[ix]->spinInfo()->productionVertex(hardvertex); } double MEPP2QQHiggs::getCosTheta(double ctmin, double ctmax, double r) { double cth = 0.0; static const double eps = 1.0e-6; if ( 1.0 + ctmin <= eps && 1.0 - ctmax <= eps ) { cth = ctmin + r*(ctmax-ctmin); jacobian(jacobian()*(ctmax - ctmin)); } else if ( 1.0 + ctmin <= eps ) { cth = 1.0 - (1.0 - ctmax)*pow((1.0 - ctmin)/(1.0 - ctmax), r); jacobian(jacobian()*log((1.0 - ctmin)/(1.0 - ctmax))*(1.0 - cth)); } else if ( 1.0 - ctmax <= eps ) { cth = -1.0 + (1.0 + ctmin)*pow((1.0 + ctmax)/(1.0 + ctmin), r); jacobian(jacobian()*log((1.0 + ctmax)/(1.0 + ctmin))*(1.0 + cth)); } else { double zmin = 0.5*(1.0 - ctmax); double zmax = 0.5*(1.0 - ctmin); double A1 = -ctmin/(zmax*(1.0-zmax)); double A0 = -ctmax/(zmin*(1.0-zmin)); double A = r*(A1 - A0) + A0; double z = A < 2.0? 2.0/(sqrt(sqr(A) + 4.0) + 2 - A): 0.5*(A - 2.0 + sqrt(sqr(A) + 4.0))/A; cth = 1.0 - 2.0*z; jacobian(jacobian()*2.0*(A1 - A0)*sqr(z)*sqr(1.0 - z)/(sqr(z) + sqr(1.0 - z))); } return cth; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEPP2HiggsJet.cc�������������������������������������������0000644�0001750�0001750�00000076307�11754474776�023566� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEPP2HiggsJet.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2HiggsJet class. // #include "MEPP2HiggsJet.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Handlers/StandardXComb.h" #include "ThePEG/Cuts/Cuts.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/MatrixElement/HardVertex.h" using namespace Herwig; const Complex MEPP2HiggsJet::_epsi = Complex(0.,-1.e-20); IBPtr MEPP2HiggsJet::clone() const { return new_ptr(*this); } IBPtr MEPP2HiggsJet::fullclone() const { return new_ptr(*this); } unsigned int MEPP2HiggsJet::orderInAlphaS() const { return 3; } unsigned int MEPP2HiggsJet::orderInAlphaEW() const { return 1; } void MEPP2HiggsJet::persistentOutput(PersistentOStream & os) const { os << _shapeopt << _maxflavour << _process << _minloop << _maxloop << _massopt << ounit(_mh,GeV) << ounit(_wh,GeV) << _hmass; } void MEPP2HiggsJet::persistentInput(PersistentIStream & is, int) { is >> _shapeopt >> _maxflavour >> _process >> _minloop >> _maxloop >> _massopt >> iunit(_mh,GeV) >> iunit(_wh,GeV) >> _hmass; } ClassDescription<MEPP2HiggsJet> MEPP2HiggsJet::initMEPP2HiggsJet; // Definition of the static class description member. void MEPP2HiggsJet::Init() { static ClassDocumentation<MEPP2HiggsJet> documentation ("The MEPP2HiggsJet class implements the matrix elements for" " Higgs+Jet production in hadron-hadron collisions.", "The theoretical calculations of \\cite{Baur:1989cm} and \\cite{Ellis:1987xu}" " were used for the Higgs+jet matrix element in hadron-hadron collisions.", "\\bibitem{Baur:1989cm} U.~Baur and E.~W.~N.~Glover," "Nucl.\\ Phys.\\ B {\\bf 339} (1990) 38.\n" "\\bibitem{Ellis:1987xu} R.~K.~Ellis, I.~Hinchliffe, M.~Soldate and " "J.~J.~van der Bij, Nucl.\\ Phys.\\ B {\\bf 297} (1988) 221."); static Parameter<MEPP2HiggsJet,unsigned int> interfaceMaximumFlavour ("MaximumFlavour", "The maximum flavour of the quarks in the process", &MEPP2HiggsJet::_maxflavour, 5, 1, 5, false, false, Interface::limited); static Switch<MEPP2HiggsJet,unsigned int> interfaceShapeOption ("ShapeScheme", "Option for the treatment of the Higgs resonance shape", &MEPP2HiggsJet::_shapeopt, 1, false, false); static SwitchOption interfaceStandardShapeFixed (interfaceShapeOption, "FixedBreitWigner", "Breit-Wigner s-channel resonanse", 1); static SwitchOption interfaceStandardShapeRunning (interfaceShapeOption, "MassGenerator", "Use the mass generator to give the shape", 2); static Switch<MEPP2HiggsJet,unsigned int> interfaceProcess ("Process", "Which subprocesses to include", &MEPP2HiggsJet::_process, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all subprocesses", 0); static SwitchOption interfaceProcess1 (interfaceProcess, "qqbar", "Only include the incoming q qbar subprocess", 1); static SwitchOption interfaceProcessqg (interfaceProcess, "qg", "Only include the incoming qg subprocess", 2); static SwitchOption interfaceProcessqbarg (interfaceProcess, "qbarg", "Only include the incoming qbar g subprocess", 3); static SwitchOption interfaceProcessgg (interfaceProcess, "gg", "Only include the incoming gg subprocess", 4); static Parameter<MEPP2HiggsJet,int> interfaceMinimumInLoop ("MinimumInLoop", "The minimum flavour of the quarks to include in the loops", &MEPP2HiggsJet::_minloop, 6, 4, 6, false, false, Interface::limited); static Parameter<MEPP2HiggsJet,int> interfaceMaximumInLoop ("MaximumInLoop", "The maximum flavour of the quarks to include in the loops", &MEPP2HiggsJet::_maxloop, 6, 4, 6, false, false, Interface::limited); static Switch<MEPP2HiggsJet,unsigned int> interfaceMassOption ("MassOption", "Option for the treatment of the masses in the loop diagrams", &MEPP2HiggsJet::_massopt, 0, false, false); static SwitchOption interfaceMassOptionFull (interfaceMassOption, "Full", "Include the full mass dependence", 0); static SwitchOption interfaceMassOptionLarge (interfaceMassOption, "Large", "Use the heavy mass limit", 1); } bool MEPP2HiggsJet::generateKinematics(const double * r) { Energy ptmin = max(lastCuts().minKT(mePartonData()[2]), lastCuts().minKT(mePartonData()[3])); Energy e = sqrt(sHat())/2.0; // generate the mass of the higgs boson Energy2 mhmax2 = sHat()-4.*ptmin*e; Energy2 mhmin2 =ZERO; if(mhmax2<=mhmin2) return false; double rhomin = atan2((mhmin2-sqr(_mh)), _mh*_wh); double rhomax = atan2((mhmax2-sqr(_mh)), _mh*_wh); Energy mh = sqrt(_mh*_wh*tan(rhomin+r[1]*(rhomax-rhomin))+sqr(_mh)); // assign masses if(mePartonData()[2]->id()!=ParticleID::h0) { meMomenta()[2].setMass(ZERO); meMomenta()[3].setMass(mh); } else { meMomenta()[3].setMass(ZERO); meMomenta()[2].setMass(mh); } Energy q = ZERO; try { q = SimplePhaseSpace:: getMagnitude(sHat(), meMomenta()[2].mass(), meMomenta()[3].mass()); } catch ( ImpossibleKinematics ) { return false; } Energy2 m22 = meMomenta()[2].mass2(); Energy2 m32 = meMomenta()[3].mass2(); Energy2 e0e2 = 2.0*e*sqrt(sqr(q) + m22); Energy2 e1e2 = 2.0*e*sqrt(sqr(q) + m22); Energy2 e0e3 = 2.0*e*sqrt(sqr(q) + m32); Energy2 e1e3 = 2.0*e*sqrt(sqr(q) + m32); Energy2 pq = 2.0*e*q; double ctmin = -1.0,ctmax = 1.0; Energy2 thmin = lastCuts().minTij(mePartonData()[0], mePartonData()[2]); if ( thmin > ZERO ) ctmax = min(ctmax, (e0e2 - m22 - thmin)/pq); thmin = lastCuts().minTij(mePartonData()[1], mePartonData()[2]); if ( thmin > ZERO ) ctmin = max(ctmin, (thmin + m22 - e1e2)/pq); thmin = lastCuts().minTij(mePartonData()[1], mePartonData()[3]); if ( thmin > ZERO ) ctmax = min(ctmax, (e1e3 - m32 - thmin)/pq); thmin = lastCuts().minTij(mePartonData()[0], mePartonData()[3]); if ( thmin > ZERO ) ctmin = max(ctmin, (thmin + m32 - e0e3)/pq); if ( ptmin > ZERO ) { double ctm = 1.0 - sqr(ptmin/q); if ( ctm <= 0.0 ) return false; ctmin = max(ctmin, -sqrt(ctm)); ctmax = min(ctmax, sqrt(ctm)); } if ( ctmin >= ctmax ) return false; double cth = getCosTheta(ctmin, ctmax, r); Energy pt = q*sqrt(1.0-sqr(cth)); phi(rnd(2.0*Constants::pi)); meMomenta()[2].setX(pt*sin(phi())); meMomenta()[2].setY(pt*cos(phi())); meMomenta()[2].setZ(q*cth); meMomenta()[3].setX(-pt*sin(phi())); meMomenta()[3].setY(-pt*cos(phi())); meMomenta()[3].setZ(-q*cth); meMomenta()[2].rescaleEnergy(); meMomenta()[3].rescaleEnergy(); vector<LorentzMomentum> out(2); out[0] = meMomenta()[2]; out[1] = meMomenta()[3]; tcPDVector tout(2); tout[0] = mePartonData()[2]; tout[1] = mePartonData()[3]; if ( !lastCuts().passCuts(tout, out, mePartonData()[0], mePartonData()[1]) ) return false; tHat(pq*cth + m22 - e0e2); uHat(m22 + m32 - sHat() - tHat()); // main piece jacobian((pq/sHat())*Constants::pi*jacobian()); // mass piece jacobian((rhomax-rhomin)*jacobian()); return true; } void MEPP2HiggsJet::getDiagrams() const { tcPDPtr h0=getParticleData(ParticleID::h0); tcPDPtr g =getParticleData(ParticleID::g); tcPDPtr q[6],qb[6]; for(int ix=0;ix<int(_maxflavour);++ix) { q [ix]=getParticleData( ix+1); qb[ix]=getParticleData(-ix-1); } // q qbar -> H g if(_process==0||_process==1) {for(unsigned int ix=0;ix<_maxflavour;++ix) {add(new_ptr((Tree2toNDiagram(2), q[ix], qb[ix], 1, g , 3, h0, 3, g, -1)));}} // q g -> H g if(_process==0||_process==2) {for(unsigned int ix=0;ix<_maxflavour;++ix) {add(new_ptr((Tree2toNDiagram(3), q[ix], g, g, 2, h0, 1, q[ix], -2)));}} // qbar g -> H qbar if(_process==0||_process==3) {for(unsigned int ix=0;ix<_maxflavour;++ix) {add(new_ptr((Tree2toNDiagram(3), qb[ix], g, g, 2, h0, 1, qb[ix], -3)));}} // g g -> H g if(_process==0||_process==4) { // t channel add(new_ptr((Tree2toNDiagram(3), g, g, g, 1, h0, 2, g, -4))); // u channel add(new_ptr((Tree2toNDiagram(3), g, g, g, 2, h0, 1, g, -5))); // s channel add(new_ptr((Tree2toNDiagram(2), g, g, 1, g , 3, h0, 3, g, -6))); } } Energy2 MEPP2HiggsJet::scale() const { return meMomenta()[2].perp2()+ meMomenta()[2].m2(); } double MEPP2HiggsJet::me2() const { useMe(); double output(0.); // g g to H g if(mePartonData()[0]->id()==ParticleID::g&&mePartonData()[1]->id()==ParticleID::g) { // order of the particles unsigned int ih(2),ig(3); if(mePartonData()[3]->id()==ParticleID::h0){ig=2;ih=3;} VectorWaveFunction glin1(meMomenta()[ 0],mePartonData()[ 0],incoming); VectorWaveFunction glin2(meMomenta()[ 1],mePartonData()[ 1],incoming); ScalarWaveFunction hout(meMomenta()[ih],mePartonData()[ih],outgoing); VectorWaveFunction glout(meMomenta()[ig],mePartonData()[ig],outgoing); vector<VectorWaveFunction> g1,g2,g4; for(unsigned int ix=0;ix<2;++ix) { glin1.reset(2*ix);g1.push_back(glin1); glin2.reset(2*ix);g2.push_back(glin2); glout.reset(2*ix);g4.push_back(glout); } // calculate the matrix element output = ggME(g1,g2,hout,g4,false); } // qg -> H q else if(mePartonData()[0]->id()>0&&mePartonData()[1]->id()==ParticleID::g) { // order of the particles unsigned int iq(0),iqb(3),ih(2),ig(1); if(mePartonData()[0]->id()==ParticleID::g){iq=1;ig=0;} if(mePartonData()[3]->id()==ParticleID::h0){iqb=2;ih=3;} // calculate the spinors and polarization vectors vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> fout; vector<VectorWaveFunction> gin; SpinorWaveFunction qin (meMomenta()[iq ],mePartonData()[iq ],incoming); VectorWaveFunction glin(meMomenta()[ig ],mePartonData()[ig ],incoming); ScalarWaveFunction hout(meMomenta()[ih ],mePartonData()[ih ],outgoing); SpinorBarWaveFunction qout(meMomenta()[iqb],mePartonData()[iqb],outgoing); for(unsigned int ix=0;ix<2;++ix) { qin.reset(ix) ; fin.push_back( qin); qout.reset(ix) ;fout.push_back(qout); glin.reset(2*ix); gin.push_back(glin); } // calculate the matrix element output = qgME(fin,gin,hout,fout,false); } // qbar g -> H q else if(mePartonData()[0]->id()<0&&mePartonData()[1]->id()==ParticleID::g) { // order of the particles unsigned int iq(0),iqb(3),ih(2),ig(1); if(mePartonData()[0]->id()==ParticleID::g){iq=1;ig=0;} if(mePartonData()[3]->id()==ParticleID::h0){iqb=2;ih=3;} // calculate the spinors and polarization vectors vector<SpinorBarWaveFunction> fin; vector<SpinorWaveFunction> fout; vector<VectorWaveFunction> gin; SpinorBarWaveFunction qin (meMomenta()[iq ],mePartonData()[iq ],incoming); VectorWaveFunction glin(meMomenta()[ig ],mePartonData()[ig ],incoming); ScalarWaveFunction hout(meMomenta()[ih ],mePartonData()[ih ],outgoing); SpinorWaveFunction qout(meMomenta()[iqb],mePartonData()[iqb],outgoing); for(unsigned int ix=0;ix<2;++ix) { qin.reset(ix) ; fin.push_back( qin); qout.reset(ix) ;fout.push_back(qout); glin.reset(2*ix); gin.push_back(glin); } // calculate the matrix element output = qbargME(fin,gin,hout,fout,false); } // q qbar to H g else if(mePartonData()[0]->id()==-mePartonData()[1]->id()) { // order of the particles unsigned int iq(0),iqb(1),ih(2),ig(3); if(mePartonData()[0]->id()<0){iq=1;iqb=0;} if(mePartonData()[2]->id()==ParticleID::g){ig=2;ih=3;} // calculate the spinors and polarization vectors vector<SpinorWaveFunction> fin; vector<SpinorBarWaveFunction> ain; vector<VectorWaveFunction> gout; SpinorWaveFunction qin (meMomenta()[iq ],mePartonData()[iq ],incoming); SpinorBarWaveFunction qbin(meMomenta()[iqb],mePartonData()[iqb],incoming); ScalarWaveFunction hout(meMomenta()[ih ],mePartonData()[ih ],outgoing); VectorWaveFunction glout(meMomenta()[ig ],mePartonData()[ig ],outgoing); for(unsigned int ix=0;ix<2;++ix) { qin.reset(ix) ; fin.push_back( qin); qbin.reset(ix) ; ain.push_back( qbin); glout.reset(2*ix);gout.push_back(glout); } // calculate the matrix element output = qqbarME(fin,ain,hout,gout,false); } else throw Exception() << "Unknown subprocess in MEPP2HiggsJet::me2()" << Exception::runerror; // return the answer return output; } double MEPP2HiggsJet::qqbarME(vector<SpinorWaveFunction> & fin, vector<SpinorBarWaveFunction> & ain, ScalarWaveFunction & hout, vector<VectorWaveFunction> & gout, bool calc) const { // the particles should be in the order // for the incoming // 0 incoming fermion (u spinor) // 1 incoming antifermion (vbar spinor) // for the outgoing // 0 outgoing higgs // 1 outgoing gluon // me to be returned ProductionMatrixElement newme(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin0,PDT::Spin1); // get the kinematic invariants Energy2 s(sHat()),u(uHat()),t(tHat()),mh2(hout.m2()),et(scale()); // calculate the loop function complex<Energy2> A5 = Energy2(); for ( int ix=_minloop; ix<=_maxloop; ++ix ) { // full mass dependance if(_massopt==0) { Energy2 mf2=sqr(getParticleData(ix)->mass()); A5+= mf2*(4.+4.*double(s/(u+t))*(W1(s,mf2)-W1(mh2,mf2)) +(1.-4.*double(mf2/(u+t)))*(W2(s,mf2)-W2(mh2,mf2))); } // infinite mass limit else { A5+=2.*(s-mh2)/3.; } } // multiply by the rest of the form factors using Constants::pi; double g(sqrt(4.*pi*SM().alphaEM(mh2)/SM().sin2ThetaW())); double gs(sqrt(4.*pi*SM().alphaS(et))); Energy mw(getParticleData(ParticleID::Wplus)->mass()); complex<InvEnergy> A5c = A5 * Complex(0.,1.)*g*sqr(gs)*gs/(32.*s*sqr(pi)*mw); // compute the matrix element LorentzPolarizationVectorE fcurrent; complex<Energy2> fdotp; complex<Energy> epsdot[2]; Complex diag; Lorentz5Momentum ps(fin[0].momentum()+ain[0].momentum()); ps.rescaleMass(); for(unsigned int ix=0;ix<2;++ix){epsdot[ix]=gout[ix].wave().dot(ps);} Energy2 denom(-ps*gout[0].momentum()); LorentzSpinorBar<double> atemp; double output(0.); for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { // compute the fermion current atemp=ain[ihel2].wave(); fcurrent=UnitRemoval::E*fin[ihel1].wave().vectorCurrent(atemp); fdotp = -(fcurrent.dot(gout[0].momentum())); for(unsigned int ghel=0;ghel<2;++ghel) { // calculate the matrix element diag=A5c*(fcurrent.dot(gout[ghel].wave()) -fdotp*epsdot[ghel]/denom); // calculate the matrix element output+=real(diag*conj(diag)); if(calc) newme(ihel1,ihel2,0,2*ghel)=diag; } } } // test with glover form // final colour/spin factors if(calc) _me.reset(newme); return output/9.; } double MEPP2HiggsJet::qgME(vector<SpinorWaveFunction> & fin, vector<VectorWaveFunction> & gin, ScalarWaveFunction & hout, vector<SpinorBarWaveFunction> & fout,bool calc) const { // the particles should be in the order // for the incoming // 0 incoming fermion (u spinor) // 1 incoming gluon // for the outgoing // 0 outgoing higgs // 1 outgoing fermion (ubar spinor) // me to be returned ProductionMatrixElement newme(PDT::Spin1Half,PDT::Spin1, PDT::Spin0,PDT::Spin1Half); // get the kinematic invariants Energy2 s(sHat()),u(uHat()),t(tHat()),mh2(hout.m2()),et(scale()); // calculate the loop function complex<Energy2> A5 = Energy2(); for(int ix=_minloop;ix<=_maxloop;++ix) { if(_massopt==0) { Energy2 mf2=sqr(getParticleData(ix)->mass()); A5+= mf2*(4.+4.*double(u/(s+t))*(W1(u,mf2)-W1(mh2,mf2)) +(1.-4.*double(mf2/(s+t)))*(W2(u,mf2)-W2(mh2,mf2))); } else { A5+=2.*(u-mh2)/3.; } } // multiply by the rest of the form factors using Constants::pi; double g(sqrt(4.*pi*SM().alphaEM(mh2)/SM().sin2ThetaW())); double gs(sqrt(4.*pi*SM().alphaS(et))); Energy mw(getParticleData(ParticleID::Wplus)->mass()); complex<InvEnergy> A5c =A5*Complex(0.,1.)*g*sqr(gs)*gs/(32.*u*sqr(pi)*mw); // compute the matrix element LorentzPolarizationVectorE fcurrent; complex<Energy2> fdotp; complex<Energy> epsdot[2]; Complex diag; Lorentz5Momentum pu(fin[0].momentum()+fout[0].momentum()); pu.rescaleMass(); for(unsigned int ix=0;ix<2;++ix){epsdot[ix]=gin[ix].wave().dot(pu);} Energy2 denom(pu*gin[0].momentum()); LorentzSpinorBar<double> atemp; double output(0.); for(unsigned int ihel=0;ihel<2;++ihel) { for(unsigned int ohel=0;ohel<2;++ohel) { // compute the fermion current atemp=fout[ohel].wave(); fcurrent=UnitRemoval::E*fin[ihel].wave().vectorCurrent(atemp); fdotp=fcurrent.dot(gin[0].momentum()); for(unsigned int ghel=0;ghel<2;++ghel) { // calculate the matrix element diag=A5c*(fcurrent.dot(gin[ghel].wave())-fdotp*epsdot[ghel]/denom); // calculate the matrix element output+=real(diag*conj(diag)); if(calc) newme(ihel,2*ghel,0,ohel)=diag; } } } // final colour/spin factors if(calc) _me.reset(newme); return output/24.; } double MEPP2HiggsJet::qbargME(vector<SpinorBarWaveFunction> & fin, vector<VectorWaveFunction> & gin, ScalarWaveFunction & hout, vector<SpinorWaveFunction> & fout,bool calc) const { // the particles should be in the order // for the incoming // 0 incoming antifermion (vbar spinor) // 1 incoming gluon // for the outgoing // 0 outgoing higgs // 1 outgoing antifermion (v spinor) // me to be returned ProductionMatrixElement newme(PDT::Spin1Half,PDT::Spin1, PDT::Spin0,PDT::Spin1Half); // get the kinematic invariants Energy2 s(sHat()),u(uHat()),t(tHat()),mh2(hout.m2()),et(scale()); // calculate the loop function complex<Energy2> A5 = Energy2(); for(int ix=_minloop;ix<=_maxloop;++ix) { if(_massopt==0) { Energy2 mf2=sqr(getParticleData(ix)->mass()); A5+= mf2*(4.+4.*double(u/(s+t))*(W1(u,mf2)-W1(mh2,mf2)) +(1.-4.*double(mf2/(s+t)))*(W2(u,mf2)-W2(mh2,mf2))); } else { A5+=2.*(u-mh2)/3.; } } // multiply by the rest of the form factors using Constants::pi; double g(sqrt(4.*pi*SM().alphaEM(mh2)/SM().sin2ThetaW())); double gs(sqrt(4.*pi*SM().alphaS(et))); Energy mw(getParticleData(ParticleID::Wplus)->mass()); complex<InvEnergy> A5c = A5*Complex(0.,1.)*g*sqr(gs)*gs/(32.*u*sqr(pi)*mw); // compute the matrix element LorentzPolarizationVectorE fcurrent; complex<Energy2> fdotp; complex<Energy> epsdot[2]; Complex diag; Lorentz5Momentum pu(fin[0].momentum()+fout[0].momentum()); pu.rescaleMass(); for(unsigned int ix=0;ix<2;++ix){epsdot[ix]=gin[ix].wave().dot(pu);} Energy2 denom(pu*gin[0].momentum()); LorentzSpinorBar<double> atemp; double output(0.); for(unsigned int ihel=0;ihel<2;++ihel) { for(unsigned int ohel=0;ohel<2;++ohel) { // compute the fermion current atemp=fin[ihel].wave(); fcurrent=UnitRemoval::E*fout[ohel].wave().vectorCurrent(atemp); fdotp=fcurrent.dot(gin[0].momentum()); for(unsigned int ghel=0;ghel<2;++ghel) { // calculate the matrix element diag=A5c*(fcurrent.dot(gin[ghel].wave())-fdotp*epsdot[ghel]/denom); // calculate the matrix element output+=real(diag*conj(diag)); if(calc) newme(ihel,2*ghel,0,ohel)=diag; } } } // final colour/spin factors if(calc) _me.reset(newme); return output/24.; } Selector<MEBase::DiagramIndex> MEPP2HiggsJet::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if(abs(diags[i]->id())<4) sel.insert(1.0, i); else sel.insert(_diagwgt[abs(diags[i]->id())-4], i); } return sel; } Selector<const ColourLines *> MEPP2HiggsJet::colourGeometries(tcDiagPtr diag) const { // colour lines for q qbar -> h0 g static const ColourLines cqqbar("1 3 5,-2 -3 -5"); // colour lines for q g -> h0 q static const ColourLines cqg("1 2 -3, 3 -2 5"); // colour lines for qbar q -> h0 qbar static const ColourLines cqbarg("-1 -2 3, -3 2 -5"); // colour lines for g g -> h0 g static const ColourLines cgg[6]={ColourLines("1 2 5, -3 -5, 3 -2 -1"), ColourLines("-1 -2 -5, 3 5, -3 2 1"), ColourLines("1 5, -1 -2 3, -3 2 -5"), ColourLines("-1 -5, 1 2 -3, 3 -2 5"), ColourLines("1 3 5, -5 -3 -2, 2 -1"), ColourLines("-1 -3 -5, 5 3 2 ,-2 1")}; // select the colour flow Selector<const ColourLines *> sel; if ( diag->id() == -1) sel.insert(1.0, &cqqbar); else if ( diag->id() == -2) sel.insert(1.0, &cqg); else if ( diag->id() == -3) sel.insert(1.0, &cqbarg); else { sel.insert(0.5, &cgg[2*(abs(diag->id())-4) ]); sel.insert(0.5, &cgg[2*(abs(diag->id())-4)+1]); } // return the answer return sel; } double MEPP2HiggsJet::ggME(vector<VectorWaveFunction> g1, vector<VectorWaveFunction> g2, ScalarWaveFunction & hout, vector<VectorWaveFunction> g4, bool calc) const { // the particles should be in the order // for the incoming // 0 first incoming gluon // 1 second incoming gluon // for the outgoing // 0 outgoing higgs // 1 outgoing gluon // me to be returned ProductionMatrixElement newme(PDT::Spin1,PDT::Spin1, PDT::Spin0,PDT::Spin1); // get the kinematic invariants Energy2 s(sHat()),u(uHat()),t(tHat()),mh2(hout.m2()),et(scale()); // calculate the loop functions Complex A4stu(0.),A2stu(0.),A2tsu(0.),A2ust(0.); Complex A5s(0.),A5t(0.),A5u(0.); for(int ix=_minloop;ix<=_maxloop;++ix) { Energy2 mf2=sqr(getParticleData(ix)->mass()); // loop functions if(_massopt==0) { A4stu+=A4(s,t,u,mf2); A2stu+=A2(s,t,u,mf2); A2tsu+=A2(u,s,t,mf2); A2ust+=A2(t,s,u,mf2); A5s+= mf2/s*(4.+4.*double(s/(u+t))*(W1(s,mf2)-W1(mh2,mf2)) +(1.-4.*double(mf2/(u+t)))*(W2(s,mf2)-W2(mh2,mf2))); A5t+= mf2/t*(4.+4.*double(t/(s+u))*(W1(t,mf2)-W1(mh2,mf2)) +(1.-4.*double(mf2/(s+u)))*(W2(t,mf2)-W2(mh2,mf2))); A5u+= mf2/u*(4.+4.*double(u/(s+t))*(W1(u,mf2)-W1(mh2,mf2)) +(1.-4.*double(mf2/(s+t)))*(W2(u,mf2)-W2(mh2,mf2))); } else { A4stu=-1./3.; A2stu=-sqr(s/mh2)/3.; A2tsu=-sqr(t/mh2)/3.; A2ust=-sqr(u/mh2)/3.; A5s+=2.*(s-mh2)/3./s; A5t+=2.*(t-mh2)/3./t; A5u+=2.*(u-mh2)/3./u; } } Complex A3stu=0.5*(A2stu+A2ust+A2tsu-A4stu); // compute the dot products for the matrix element complex<InvEnergy> eps[3][4][2]; Energy2 pdot[4][4]; pdot[0][0]=ZERO; pdot[0][1]= g1[0].momentum()*g2[0].momentum(); pdot[0][2]=-1.*g1[0].momentum()*g4[0].momentum(); pdot[0][3]=-1.*g1[0].momentum()*hout.momentum(); pdot[1][0]= pdot[0][1]; pdot[1][1]= ZERO; pdot[1][2]=-1.*g2[0].momentum()*g4[0].momentum(); pdot[1][3]=-1.*g2[0].momentum()*hout.momentum(); pdot[2][0]= pdot[0][2]; pdot[2][1]= pdot[1][2]; pdot[2][2]= ZERO; pdot[2][3]= g4[0].momentum()*hout.momentum(); pdot[3][0]=pdot[0][3]; pdot[3][1]=pdot[1][3]; pdot[3][2]=pdot[2][3]; pdot[3][3]=mh2; for(unsigned int ix=0;ix<2;++ix) { eps[0][0][ix]=InvEnergy(); eps[0][1][ix]=g1[ix].wave().dot(g2[0].momentum())/pdot[0][1]; eps[0][2][ix]=-1.*g1[ix].wave().dot(g4[0].momentum())/pdot[0][2]; eps[0][3][ix]=-1.*g1[ix].wave().dot(hout.momentum())/ pdot[0][3]; eps[1][0][ix]=g2[ix].wave().dot(g1[0].momentum())/ pdot[1][0]; eps[1][1][ix]=InvEnergy(); eps[1][2][ix]=-1.*g2[ix].wave().dot(g4[0].momentum())/pdot[1][2]; eps[1][3][ix]=-1.*g2[ix].wave().dot(hout.momentum())/ pdot[1][3]; eps[2][0][ix]=g4[ix].wave().dot(g1[0].momentum())/ pdot[2][0]; eps[2][1][ix]=g4[ix].wave().dot(g2[0].momentum())/ pdot[2][1]; eps[2][2][ix]=InvEnergy(); eps[2][3][ix]=-1.*g4[ix].wave().dot(hout.momentum())/ pdot[2][3]; } // prefactors using Constants::pi; double g(sqrt(4.*pi*SM().alphaEM(mh2)/SM().sin2ThetaW())); double gs(sqrt(4.*pi*SM().alphaS(et))); Energy mw(getParticleData(ParticleID::Wplus)->mass()); Energy3 pre=g*sqr(mh2)*gs*sqr(gs)/(32.*sqr(pi)*mw); // compute the matrix element double output(0.); Complex diag[4],wdot[3][3]; _diagwgt[0]=0.; _diagwgt[1]=0.; _diagwgt[2]=0.; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { for(unsigned int ohel=0;ohel<2;++ohel) { wdot[0][1]=g1[ihel1].wave().dot(g2[ihel2].wave()); wdot[0][2]=g1[ihel1].wave().dot(g4[ohel ].wave()); wdot[1][0]=wdot[0][1]; wdot[1][2]=g2[ihel2].wave().dot(g4[ohel ].wave()); wdot[2][0]=wdot[0][2]; wdot[2][1]=wdot[1][2]; // last piece diag[3]=pre*A3stu*(eps[0][2][ihel1]*eps[1][0][ihel2]*eps[2][1][ohel]- eps[0][1][ihel1]*eps[1][2][ihel2]*eps[2][0][ohel]+ (eps[2][0][ohel ]-eps[2][1][ohel ])*wdot[0][1]/pdot[0][1]+ (eps[1][2][ihel2]-eps[1][0][ihel2])*wdot[0][2]/pdot[0][2]+ (eps[0][1][ihel1]-eps[0][2][ihel1])*wdot[1][2]/pdot[1][2]); // first piece diag[3]+=pre*( +A2stu*(eps[0][1][ihel1]*eps[1][0][ihel2]-wdot[0][1]/pdot[0][1])* (eps[2][0][ohel ]-eps[2][1][ohel ]) +A2ust*(eps[0][2][ihel1]*eps[2][0][ohel ]-wdot[0][2]/pdot[0][2])* (eps[1][2][ihel2]-eps[1][0][ihel2]) +A2tsu*(eps[1][2][ihel2]*eps[2][1][ohel ]-wdot[1][2]/pdot[1][2])* (eps[0][1][ihel1]-eps[0][2][ihel1]) ); output+=real(diag[3]*conj(diag[3])); // matrix element if needed if(calc) newme(2*ihel1,2*ihel2,0,2*ohel)=diag[3]; // different diagrams diag[0] = A5t*UnitRemoval::InvE*(-eps[0][3][ihel1]* (-2.*eps[2][1][ohel ]*eps[1][0][ihel2]*pdot[2][1]*pdot[1][0] -2.*eps[1][2][ihel2]*eps[2][0][ohel ]*pdot[1][2]*pdot[2][0] +wdot[1][2]*(pdot[0][1]+pdot[0][2])) -2.*eps[2][1][ohel ]*pdot[2][1]*wdot[0][1] -2.*eps[1][2][ihel2]*pdot[1][2]*wdot[0][2] +wdot[1][2]*(eps[0][1][ihel1]*pdot[0][1]+ eps[0][2][ihel1]*pdot[0][2])); diag[1] = A5u*UnitRemoval::InvE*(-eps[1][3][ihel2]* (+2.*eps[0][1][ihel1]*eps[2][0][ohel ]*pdot[0][1]*pdot[2][0] +2.*eps[0][2][ihel1]*eps[2][1][ohel ]*pdot[0][2]*pdot[2][1] -wdot[0][2]*(pdot[1][0]+pdot[1][2])) +2.*eps[2][0][ohel ]*pdot[2][0]*wdot[0][1] +2.*eps[0][2][ihel1]*pdot[0][2]*wdot[2][1] -wdot[0][2]*(eps[1][0][ihel2]*pdot[1][0]+ eps[1][2][ihel2]*pdot[1][2])); diag[2] = A5s*UnitRemoval::InvE*(-eps[2][3][ohel ]* (+2.*eps[0][1][ihel1]*eps[1][2][ihel2]*pdot[0][1]*pdot[1][2] -2.*eps[1][0][ihel2]*eps[0][2][ihel1]*pdot[1][0]*pdot[1][3] +wdot[0][1]*(pdot[2][0]-pdot[2][1])) +2.*eps[0][1][ihel1]*pdot[0][1]*wdot[1][2] -2.*eps[1][0][ihel2]*pdot[1][0]*wdot[0][2] +wdot[0][1]*(eps[2][0][ohel]*pdot[2][0]- eps[2][1][ohel]*pdot[2][1])); _diagwgt[0]+=real(diag[0]*conj(diag[0])); _diagwgt[1]+=real(diag[1]*conj(diag[1])); _diagwgt[2]+=real(diag[2]*conj(diag[2])); } } } // final colour and spin factors if(calc){_me.reset(newme);} return 3.*output/32.; } void MEPP2HiggsJet::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first);hard.push_back(sub->incoming().second); hard.push_back(sub->outgoing()[0]);hard.push_back(sub->outgoing()[1]); // ensure correct order or particles if((hard[0]->id()==ParticleID::g&&hard[1]->id()!=ParticleID::g)|| (hard[0]->id()<0&&hard[1]->id()<6)) swap(hard[0],hard[1]); if(hard[2]->id()!=ParticleID::h0) swap(hard[2],hard[3]); // different processes // g g to H g if(hard[0]->id()==ParticleID::g) { vector<VectorWaveFunction> g1,g2,g4; VectorWaveFunction(g1,hard[0],incoming,false,true,true); VectorWaveFunction(g2,hard[1],incoming,false,true,true); VectorWaveFunction(g4,hard[3],outgoing,true ,true,true); ScalarWaveFunction hout(hard[2],outgoing,true); g1[1]=g1[2];g2[1]=g2[2];g4[1]=g4[2]; ggME(g1,g2,hout,g4,true); } // qg -> H q else if(hard[0]->id()>0&&hard[1]->id()==ParticleID::g) { vector<VectorWaveFunction> g2; vector<SpinorWaveFunction> qin; vector<SpinorBarWaveFunction> qout; SpinorWaveFunction( qin,hard[0],incoming,false,true); VectorWaveFunction( g2,hard[1],incoming,false,true,true); SpinorBarWaveFunction(qout,hard[3],outgoing,true ,true); ScalarWaveFunction hout(hard[2],outgoing,true); g2[1]=g2[2]; qgME(qin,g2,hout,qout,true); } // qbar g -> H q else if(hard[0]->id()<0&&hard[1]->id()==ParticleID::g) { vector<VectorWaveFunction> g2; vector<SpinorBarWaveFunction> qin; vector<SpinorWaveFunction> qout; SpinorBarWaveFunction( qin,hard[0],incoming,false,true); VectorWaveFunction( g2,hard[1],incoming,false,true,true); SpinorWaveFunction( qout,hard[3],outgoing,true ,true); ScalarWaveFunction hout(hard[2],outgoing,true); g2[1]=g2[2]; qbargME(qin,g2,hout,qout,true); } // q qbar to H g else if(hard[0]->id()==-hard[1]->id()) { vector<SpinorBarWaveFunction> qbar; vector<SpinorWaveFunction> q; vector<VectorWaveFunction> g4; SpinorWaveFunction( q ,hard[0],incoming,false,true); SpinorBarWaveFunction(qbar,hard[1],incoming,false,true); VectorWaveFunction( g4,hard[3],outgoing,true ,true,true); ScalarWaveFunction hout(hard[2],outgoing,true); g4[1]=g4[2]; qqbarME(q,qbar,hout,g4,true); } else throw Exception() << "Unknown subprocess in MEPP2HiggsJet::constructVertex()" << Exception::runerror; // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(_me); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<4;++ix) { (hard[ix]->spinInfo())-> productionVertex(hardvertex); } } int MEPP2HiggsJet::nDim() const { return 2; } void MEPP2HiggsJet::doinit() { ME2to2Base::doinit(); tcPDPtr h0=getParticleData(ParticleID::h0); _mh = h0->mass(); _wh = h0->generateWidth(_mh); if(h0->massGenerator()) { _hmass=dynamic_ptr_cast<GenericMassGeneratorPtr>(h0->massGenerator()); } if(_shapeopt==2&&!_hmass) throw InitException() << "If using the mass generator for the line shape in MEPP2HiggsJet::doinit()" << "the mass generator must be an instance of the GenericMassGenerator class" << Exception::runerror; } CrossSection MEPP2HiggsJet::dSigHatDR() const { using Constants::pi; InvEnergy2 bwfact; Energy moff = mePartonData()[2]->id()==ParticleID::h0 ? meMomenta()[2].mass() : meMomenta()[3].mass(); if(_shapeopt==1) { tcPDPtr h0 = mePartonData()[2]->id()==ParticleID::h0 ? mePartonData()[2] : mePartonData()[3]; bwfact = h0->generateWidth(moff)*moff/pi/ (sqr(sqr(moff)-sqr(_mh))+sqr(_mh*_wh)); } else { bwfact = _hmass->BreitWignerWeight(moff); } return me2()*jacobian()/(16.0*sqr(Constants::pi)*sHat())*sqr(hbarc)* (sqr(sqr(moff)-sqr(_mh))+sqr(_mh*_wh))/(_mh*_wh)*bwfact; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/Hadron/MEQCD2to2.h������������������������������������������������0000644�0001750�0001750�00000027360�11754474776�022513� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEQCD2to2.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEQCD2to2_H #define HERWIG_MEQCD2to2_H // // This is the declaration of the MEQCD2to2 class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVVertex.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" namespace Herwig { using namespace ThePEG; using namespace ThePEG::Helicity; /** * The MEQCD2to2 class provides the matrix elements for \f$2\to2\f$ * QCD scattering processes in hadron-hadron collisions. * * @see \ref MEQCD2to2Interfaces "The interfaces" * defined for MEQCD2to2. */ class MEQCD2to2: public HwMEBase { public: /** * The default constructor. */ MEQCD2to2(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Members to calculate the matrix elements */ //@{ /** * Matrix element for \f$gg\to gg\f$. * @param g1 The wavefunctions for the first incoming gluon * @param g2 The wavefunctions for the second incoming gluon * @param g3 The wavefunctions for the first outgoing gluon * @param g4 The wavefunctions for the second outgoing gluon * @param flow The colour flow */ double gg2ggME(vector<VectorWaveFunction> &g1,vector<VectorWaveFunction> &g2, vector<VectorWaveFunction> &g3,vector<VectorWaveFunction> &g4, unsigned int flow) const; /** * Matrix element for \f$gg\to q\bar{q}\f$ * @param g1 The wavefunctions for the first incoming gluon * @param g2 The wavefunctions for the second incoming gluon * @param q The wavefunction for the outgoing quark * @param qbar The wavefunction for the outgoing antiquark * @param flow The colour flow */ double gg2qqbarME(vector<VectorWaveFunction> &g1,vector<VectorWaveFunction> &g2, vector<SpinorBarWaveFunction> & q,vector<SpinorWaveFunction> & qbar, unsigned int flow) const; /** * Matrix element for \f$q\bar{q}\to gg\f$ * @param q The wavefunction for the incoming quark * @param qbar The wavefunction for the incoming antiquark * @param g1 The wavefunctions for the first outgoing gluon * @param g2 The wavefunctions for the second outgoing gluon * @param flow The colour flow */ double qqbar2ggME(vector<SpinorWaveFunction> & q,vector<SpinorBarWaveFunction> & qbar, vector<VectorWaveFunction> &g1,vector<VectorWaveFunction> &g2, unsigned int flow) const; /** * Matrix element for \f$qg\to qg\f$ * @param qin The wavefunction for the incoming quark * @param g2 The wavefunction for the incoming gluon * @param qout The wavefunction for the outgoing quark * @param g4 The wavefunction for the outgoing gluon * @param flow The colour flow */ double qg2qgME(vector<SpinorWaveFunction> & qin,vector<VectorWaveFunction> &g2, vector<SpinorBarWaveFunction> & qout,vector<VectorWaveFunction> &g4, unsigned int flow) const; /** * Matrix elements for \f$\bar{q}g\to \bar{q}g\f$. * @param qin The wavefunction for the incoming antiquark * @param g2 The wavefunction for the incoming gluon * @param qout The wavefunction for the outgoing antiquark * @param g4 The wavefunction for the outgoing gluon * @param flow The colour flow */ double qbarg2qbargME(vector<SpinorBarWaveFunction> & qin, vector<VectorWaveFunction> &g2, vector<SpinorWaveFunction> & qout,vector<VectorWaveFunction> &g4, unsigned int flow) const; /** * Matrix element for \f$qq\to qq\f$ * @param q1 The wavefunction for the first incoming quark * @param q2 The wavefunction for the second incoming quark * @param q3 The wavefunction for the first outgoing quark * @param q4 The wavefunction for the second outgoing quark * @param flow The colour flow */ double qq2qqME(vector<SpinorWaveFunction> & q1, vector<SpinorWaveFunction> & q2, vector<SpinorBarWaveFunction> & q3, vector<SpinorBarWaveFunction> & q4, unsigned int flow) const; /** * Matrix element for \f$\bar{q}\bar{q}\to \bar{q}\bar{q}\f$ * @param q1 The wavefunction for the first incoming antiquark * @param q2 The wavefunction for the second incoming antiquark * @param q3 The wavefunction for the first outgoing antiquark * @param q4 The wavefunction for the second outgoing antiquark * @param flow The colour flow */ double qbarqbar2qbarqbarME(vector<SpinorBarWaveFunction> & q1, vector<SpinorBarWaveFunction> & q2, vector<SpinorWaveFunction> & q3, vector<SpinorWaveFunction> & q4, unsigned int flow) const; /** * Matrix element for \f$q\bar{q}\to q\bar{q}\f$ * @param q1 The wavefunction for the incoming quark * @param q2 The wavefunction for the incoming antiquark * @param q3 The wavefunction for the outgoing quark * @param q4 The wavefunction for the outgoing antiquark * @param flow The colour flow */ double qqbar2qqbarME(vector<SpinorWaveFunction> & q1, vector<SpinorBarWaveFunction> & q2, vector<SpinorBarWaveFunction> & q3, vector<SpinorWaveFunction> & q4, unsigned int flow) const; //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Rebind pointer to other Interfaced objects. Called in the setup phase * after all objects used in an EventGenerator has been cloned so that * the pointers will refer to the cloned objects afterwards. * @param trans a TranslationMap relating the original objects to * their respective clones. * @throws RebindException if no cloned object was found for a given * pointer. */ virtual void rebind(const TranslationMap & trans) ; /** * Return a vector of all pointers to Interfaced objects used in this * object. * @return a vector of pointers. */ virtual IVector getReferences(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEQCD2to2> initMEQCD2to2; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEQCD2to2 & operator=(const MEQCD2to2 &); private: /** * Vertices needed to compute the diagrams */ //@{ /** * \f$gggg\f$ vertex */ AbstractVVVVVertexPtr _ggggvertex; /** * \f$ggg\f$ vertex */ AbstractVVVVertexPtr _gggvertex; /** * \f$q\bar{q}g\f$ vertex */ AbstractFFVVertexPtr _qqgvertex; //@} /** * Maximum numbere of quark flavours to include */ unsigned int _maxflavour; /** * Processes to include */ unsigned int _process; /** * Colour flow */ mutable unsigned int _flow; /** * Diagram */ mutable unsigned int _diagram; /** * Matrix element */ mutable ProductionMatrixElement _me; /** * ParticleData objects of the partons */ //@{ /** * The gluon */ PDPtr _gluon; /** * the quarks */ vector<PDPtr> _quark; /** * the antiquarks */ vector<PDPtr> _antiquark; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEQCD2to2. */ template <> struct BaseClassTrait<Herwig::MEQCD2to2,1> { /** Typedef of the first base class of MEQCD2to2. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEQCD2to2 class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEQCD2to2> : public ClassTraitsBase<Herwig::MEQCD2to2> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEQCD2to2"; } /** * The name of a file containing the dynamic library where the class * MEQCD2to2 is implemented. It may also include several, space-separated, * libraries if the class MEQCD2to2 depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMEHadron.so"; } }; /** @endcond */ } #endif /* HERWIG_MEQCD2to2_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/����������������������������������������������������������0000755�0001750�0001750�00000000000�11756464207�021122� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/GeneralfftoffH.h������������������������������������������0000644�0001750�0001750�00000006453�11754474776�024175� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_GeneralfftoffH_H #define HERWIG_GeneralfftoffH_H // // This is the declaration of the GeneralfftoffH class. // #include "Herwig++/MatrixElement/MEfftoffH.h" #include "GeneralfftoffH.fh" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the GeneralfftoffH class. * * @see \ref GeneralfftoffHInterfaces "The interfaces" * defined for GeneralfftoffH. */ class GeneralfftoffH: public MEfftoffH { public: /** * Type of process */ enum Process {Lepton,Hadron}; public: /** * The default constructor. */ GeneralfftoffH(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; //@} /** * Set up the matrix element */ void setProcessInfo(Process proc, PDPtr higgs, AbstractVVSVertexPtr vertex, unsigned int shapeOpt, unsigned int process); 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; //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<GeneralfftoffH> initGeneralfftoffH; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GeneralfftoffH & operator=(const GeneralfftoffH &); private: /** * The type of process */ Process _proc; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of GeneralfftoffH. */ template <> struct BaseClassTrait<Herwig::GeneralfftoffH,1> { /** Typedef of the first base class of GeneralfftoffH. */ typedef Herwig::MEfftoffH NthBase; }; /** This template specialization informs ThePEG about the name of * the GeneralfftoffH class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::GeneralfftoffH> : public ClassTraitsBase<Herwig::GeneralfftoffH> { /** Return a platform-independent class name */ static string className() { return "Herwig::GeneralfftoffH"; } }; /** @endcond */ } #endif /* HERWIG_GeneralfftoffH_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEvv2vs.h�������������������������������������������������0000644�0001750�0001750�00000013055�11754474776�022621� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEvv2vs_H #define HERWIG_MEvv2vs_H // // This is the declaration of the MEvv2vs class. // #include "GeneralHardME.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" namespace Herwig { using namespace ThePEG; using Helicity::VectorWaveFunction; using Helicity::ScalarWaveFunction; /** * This is the implementation of the matrix element for * \f$2\to 2\f$ massless vector-boson pair to a vector and scalar boson. * It inherits from GeneralHardME and implements the appropriate virtual * member functions. * * @see \ref MEvv2vsInterfaces "The interfaces" * defined for MEvv2vs. */ class MEvv2vs: public GeneralHardME { public: /** * Typedef for VectorWaveFunction */ typedef vector<VectorWaveFunction> VBVector; public: /** @name Virtual functions required by the GeneralHardME class. */ //@{ /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; //@} /** * Construct the vertex information for the spin correlations * @param sub Pointer to the relevent SubProcess */ virtual void constructVertex(tSubProPtr sub); private: /** * Compute the matrix element for \f$V\, V\to V\, V\f$ * @param vin1 VectorWaveFunctions for first incoming particle * @param vin2 VectorWaveFunctions for second incoming particle * @param vout1 VectorWaveFunctions for first outgoing particle * @param mc Whether vout1 is massless or not * @param sout2 ScalarWaveFunction for outgoing particle * @param me2 colour averaged, spin summed ME * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @return ProductionMatrixElement containing results of * helicity calculations */ ProductionMatrixElement vv2vsHeME(VBVector & vin1, VBVector & vin2, VBVector & vout1, bool mc, ScalarWaveFunction & sout2, double & me2, bool first ) 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(); 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEvv2vs> initMEvv2vs; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEvv2vs & operator=(const MEvv2vs &); private: /** * Store the dynamically casted VVSVertex and VSSVertex pointers */ vector<pair<AbstractVVSVertexPtr, AbstractVSSVertexPtr> > scalar_; /** * Store the dynamically casted VVVVertex and VVSVertex pointers */ vector<pair<AbstractVVVVertexPtr, AbstractVVSVertexPtr> > vector_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEvv2vs. */ template <> struct BaseClassTrait<Herwig::MEvv2vs,1> { /** Typedef of the first base class of MEvv2vs. */ typedef Herwig::GeneralHardME NthBase; }; /** This template specialization informs ThePEG about the name of * the MEvv2vs class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEvv2vs> : public ClassTraitsBase<Herwig::MEvv2vs> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEvv2vs"; } /** * The name of a file containing the dynamic library where the class * MEvv2vs is implemented. It may also include several, space-separated, * libraries if the class MEvv2vs depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "MEvv2vs.so"; } }; /** @endcond */ } #endif /* HERWIG_MEvv2vs_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEvv2vv.h�������������������������������������������������0000644�0001750�0001750�00000014033�11754474776�022621� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEvv2vv.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEvv2vv_H #define HERWIG_MEvv2vv_H // // This is the declaration of the MEvv2vv class. // #include "GeneralHardME.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVVertex.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" namespace Herwig { using namespace ThePEG; using Helicity::VectorWaveFunction; /** * This is the implementation of the matrix element for * \f$2\to 2\f$ massless vector-boson pair to vector-boson pair. It inherits from * GeneralHardME and implements the appropriate virtual member functions. * * @see \ref MEvv2vvInterfaces "The interfaces" * defined for MEvv2vv. */ class MEvv2vv: public GeneralHardME { public: /** * Typedef for VectorWaveFunction */ typedef vector<VectorWaveFunction> VBVector; public: /** @name Virtual functions required by the GeneralHardME class. */ //@{ /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; //@} /** * Construct the vertex information for the spin correlations * @param sub Pointer to the relevent SubProcess */ virtual void constructVertex(tSubProPtr sub); private: /** * Compute the matrix element for \f$V\, V\to V\, V\f$ * @param vin1 VectorWaveFunctions for first incoming particle * @param vin2 VectorWaveFunctions for second incoming particle * @param vout1 VectorWaveFunctions for first outgoing particle * @param mc Whether vout1 is massless or not * @param vout2 VectorWaveFunctions for outgoing particle * @param md Whether vout2 is massless or not * @param me2 colour averaged, spin summed ME * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @return ProductionMatrixElement containing results of * helicity calculations */ ProductionMatrixElement vv2vvHeME(VBVector & vin1, VBVector & vin2, VBVector & vout1, bool mc, VBVector & vout2, bool md, double & me2, bool first ) const; protected: /** * A debugging function to test the value of me2 against an * analytic function. * @param me2 The value of the \f$ |\bar{\mathcal{M}}|^2 \f$ */ virtual void debug(double me2) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEvv2vv> initMEvv2vv; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEvv2vv & operator=(const MEvv2vv &); private: /** * Store the dynamically casted VVSVertex pointers */ vector<pair<AbstractVVSVertexPtr, AbstractVVSVertexPtr> > scalar_; /** * Store the dynamically casted VVVVertex pointers */ vector<pair<AbstractVVVVertexPtr, AbstractVVVVertexPtr> > vector_; /** * Store the dynamically casted VVTVertex pointers */ vector<pair<AbstractVVTVertexPtr, AbstractVVTVertexPtr> > tensor_; /** * Store the dynamically casted VVVVVertex pointer */ AbstractVVVVVertexPtr fourPointVertex_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEvv2vv. */ template <> struct BaseClassTrait<Herwig::MEvv2vv,1> { /** Typedef of the first base class of MEvv2vv. */ typedef Herwig::GeneralHardME NthBase; }; /** This template specialization informs ThePEG about the name of * the MEvv2vv class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEvv2vv> : public ClassTraitsBase<Herwig::MEvv2vv> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEvv2vv"; } }; /** @endcond */ } #endif /* HERWIG_MEvv2vv_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEff2vv.h�������������������������������������������������0000644�0001750�0001750�00000015260�11754474776�022564� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEff2vv.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEff2vv_H #define HERWIG_MEff2vv_H // // This is the declaration of the MEff2vv class. // #include "GeneralHardME.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" namespace Herwig { using namespace ThePEG; using ThePEG::Helicity::SpinorWaveFunction; using ThePEG::Helicity::SpinorBarWaveFunction; using ThePEG::Helicity::VectorWaveFunction; /** * This class implements the matrix element calculation for a generic * \f$\Psi \Psi \rightarrow V^{\mu} V^{\nu}\f$ process. * * @see \ref MEff2vvInterfaces "The interfaces" * defined for MEff2vv. */ class MEff2vv: public GeneralHardME { public: /** Vector of SpinorWaveFunctions objects */ typedef vector<SpinorWaveFunction> SpinorVector; /** Vector of SpinorBarWaveFunction objects. */ typedef vector<SpinorBarWaveFunction> SpinorBarVector; /** Vector of VectorWaveFunction objects. */ typedef vector<VectorWaveFunction> VBVector; public: /** * The default constructor. */ MEff2vv() : vector_(0), tensor_(0), scalar_(0) {} /** @name Virtual functions required by the GeneralHardME class. */ //@{ /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; //@} /** * Construct the vertex information for the spin correlations * @param sub Pointer to the relevent SubProcess */ virtual void constructVertex(tSubProPtr sub); protected: /** * A debugging function to test the value of me2 against an * analytic function. * @param me2 \f$ |\bar{\mathcal{M}}|^2 \f$ */ virtual void debug(double me2) const; private: /** * Compute the production matrix element. * @param sp Spinors for first incoming fermion * @param sbar SpinorBar Wavefunctions for incoming anti-fermion * @param v1 A vector of VectorWaveFunction objects for the first vector * @param m1 Whether v1 is massless or not * @param v2 A vector of VectorWaveFunction objects for the second vector * @param m2 Whether v2 is massless or not * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @param me2 The value of the \f$ |\bar{\mathcal{M}}|^2 \f$ */ ProductionMatrixElement ff2vvME(const SpinorVector & sp, const SpinorBarVector sbar, const VBVector & v1, bool m1, const VBVector & v2, bool m2, double & me2, bool first) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEff2vv> initMEff2vv; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEff2vv & operator=(const MEff2vv &); private: /** * Storage for a dynamically cast vertices for a tchannel vector * intermediate */ vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > fermion_; /** * Storage for a dynamically cast vertices for a schannel vector * intermediate */ vector<pair<AbstractFFVVertexPtr, AbstractVVVVertexPtr> > vector_; /** * Storage for a dynamically cast vertices for a schannel scalar * intermediate */ vector<pair<AbstractFFTVertexPtr, AbstractVVTVertexPtr> > tensor_; /** * Storage for a dynamically cast vertices for a schannel scalar * intermediate for massless external vector bosons */ vector<pair<AbstractFFSVertexPtr, AbstractVVSVertexPtr> > scalar_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEff2vv. */ template <> struct BaseClassTrait<Herwig::MEff2vv,1> { /** Typedef of the first base class of MEff2vv. */ typedef Herwig::GeneralHardME NthBase; }; /** This template specialization informs ThePEG about the name of * the MEff2vv class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEff2vv> : public ClassTraitsBase<Herwig::MEff2vv> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEff2vv"; } }; /** @endcond */ } #endif /* HERWIG_MEff2vv_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/GeneralfftoVH.fh������������������������������������������0000644�0001750�0001750�00000000456�11754474776�024152� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the GeneralfftoVH class. // #ifndef HERWIG_GeneralfftoVH_FH #define HERWIG_GeneralfftoVH_FH #include "ThePEG/Config/ThePEG.h" namespace Herwig { class GeneralfftoVH; ThePEG_DECLARE_POINTERS(Herwig::GeneralfftoVH,GeneralfftoVHPtr); } #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEff2sv.cc������������������������������������������������0000644�0001750�0001750�00000020042�11754474776�022711� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEff2sv.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEff2sv class. // #include "MEff2sv.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; void MEff2sv::doinit() { GeneralHardME::doinit(); scalar_.resize(numberOfDiags()); vector_.resize(numberOfDiags()); fermion_.resize(numberOfDiags()); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin0,PDT::Spin1)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin0,PDT::Spin1)); for(HPCount i = 0; i < numberOfDiags(); ++i) { const HPDiagram & current = getProcessInfo()[i]; if( current.channelType == HPDiagram::sChannel ) { if( current.intermediate->iSpin() == PDT::Spin0 ) scalar_[i] = make_pair(dynamic_ptr_cast<AbstractFFSVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractVSSVertexPtr>(current.vertices.second)); else if( current.intermediate->iSpin() == PDT::Spin1 ) vector_[i] = make_pair(dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractVVSVertexPtr>(current.vertices.second)); } else if( current.channelType == HPDiagram::tChannel ) { if(current.intermediate->iSpin() == PDT::Spin1Half) { if( current.ordered.second ) fermion_[i] = make_pair(dynamic_ptr_cast<AbstractFFSVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.second)); else fermion_[i] = make_pair(dynamic_ptr_cast<AbstractFFSVertexPtr>(current.vertices.second), dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.first)); } } } } void MEff2sv::doinitrun() { GeneralHardME::doinitrun(); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin0,PDT::Spin1)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin0,PDT::Spin1)); } void MEff2sv::persistentOutput(PersistentOStream & os) const { os << scalar_ << vector_ << fermion_; } void MEff2sv::persistentInput(PersistentIStream & is, int) { is >> scalar_ >> vector_ >> fermion_; } ClassDescription<MEff2sv> MEff2sv::initMEff2sv; // Definition of the static class description member. void MEff2sv::Init() { static ClassDocumentation<MEff2sv> documentation ("MEff2sv implements the ME calculation of the fermion-antifermion " "to vector-scalar hard process."); } double MEff2sv::me2() const { //set up wavefunctions SpinorVector ina(2); SpinorBarVector inb(2); VBVector outa(3); ScalarWaveFunction sca(rescaledMomenta()[2], mePartonData()[2], Complex(1.), outgoing); for(unsigned int ih = 0; ih < 2; ++ih) { ina[ih] = SpinorWaveFunction(rescaledMomenta()[0], mePartonData()[0], ih, incoming); inb[ih] = SpinorBarWaveFunction(rescaledMomenta()[1], mePartonData()[1], ih, incoming); outa[2*ih] = VectorWaveFunction(rescaledMomenta()[3], mePartonData()[3], 2*ih, outgoing); } if( mePartonData()[2]->mass() > ZERO ) { outa[1] = VectorWaveFunction(rescaledMomenta()[3], mePartonData()[3], 1, outgoing); } double full_me(0.); ffb2svHeME(ina, inb, sca, outa, full_me,true); return full_me; } ProductionMatrixElement MEff2sv::ffb2svHeME(SpinorVector & sp, SpinorBarVector & spbar, ScalarWaveFunction & sca, VBVector & vec, double & me2, bool first) const { Energy2 m2(scale()); bool mv = mePartonData()[2]->mass() == ZERO; // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); me2 = 0.; for(unsigned int ihel1 = 0; ihel1 < 2; ++ihel1) { for(unsigned int ihel2 = 0; ihel2 < 2; ++ihel2) { for(unsigned int ovhel = 0; ovhel < 3; ++ovhel) { if( mv && ovhel == 1 ) continue; vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr offshell(current.intermediate); if( current.channelType == HPDiagram::sChannel ) { if( offshell->iSpin() == PDT::Spin0 ) { ScalarWaveFunction interS = scalar_[ix].first-> evaluate(m2, 1, offshell, sp[ihel1], spbar[ihel2]); diag = scalar_[ix].second->evaluate(m2, vec[ovhel], sca, interS); } else if( offshell->iSpin() == PDT::Spin1 ) { VectorWaveFunction interV = vector_[ix].first-> evaluate(m2, 1, offshell, sp[ihel1], spbar[ihel2]); diag = vector_[ix].second->evaluate(m2, vec[ovhel], interV, sca); } else diag = 0.0; } else if( current.channelType == HPDiagram::tChannel ) { if( offshell->iSpin() == PDT::Spin1Half ) { if( current.ordered.second ) { SpinorBarWaveFunction interFB = fermion_[ix].second-> evaluate(m2, 3, offshell, spbar[ihel2], vec[ovhel]); diag = fermion_[ix].first-> evaluate(m2, sp[ihel1], interFB, sca); } else { SpinorBarWaveFunction interFB = fermion_[ix].first-> evaluate(m2, 3, offshell, spbar[ihel2], sca); diag = fermion_[ix].second-> evaluate(m2, sp[ihel1], interFB, vec[ovhel]); } } } else diag = 0.; me[ix] += norm(diag); diagramME()[ix](ihel1, ihel2, 0, ovhel) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](ihel1, ihel2, 0, ovhel) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) for(size_t ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } void MEff2sv::constructVertex(tSubProPtr sub) { // Hard proces external particles ParticleVector hdp = hardParticles(sub); SpinorVector sp; SpinorBarVector spbar; VBVector vec; bool mv(hdp[3]->dataPtr()->mass() == ZERO); SpinorWaveFunction (sp, hdp[0], incoming, false); SpinorBarWaveFunction (spbar, hdp[1], incoming, false); ScalarWaveFunction sca ( hdp[2], outgoing, true); VectorWaveFunction (vec, hdp[3], outgoing, true, mv); //Need to use rescale momenta to calculate matrix element setRescaledMomenta(hdp); // wavefunctions with rescaled momenta SpinorWaveFunction spr(rescaledMomenta()[0], hdp[0]->dataPtr(), incoming); SpinorBarWaveFunction sbr(rescaledMomenta()[1], hdp[1]->dataPtr(), incoming); sca = ScalarWaveFunction (rescaledMomenta()[2], hdp[2]->dataPtr(), outgoing); VectorWaveFunction vr(rescaledMomenta()[3], hdp[3]->dataPtr(), mv, outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { spr.reset(ihel); sp[ihel] = spr; sbr.reset(ihel); spbar[ihel] = sbr; vr.reset(2*ihel); vec[2*ihel] = vr; } if( !mv ) { vr.reset(1); vec[1] = vr; } double dummy(0.); ProductionMatrixElement prodme = ffb2svHeME(sp, spbar, sca, vec, dummy,false); createVertex(prodme,hdp); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEfv2tf.cc������������������������������������������������0000644�0001750�0001750�00000032650�11754474776�022722� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEfv2tf class. // #include "MEfv2tf.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IBPtr MEfv2tf::clone() const { return new_ptr(*this); } IBPtr MEfv2tf::fullclone() const { return new_ptr(*this); } void MEfv2tf::persistentOutput(PersistentOStream & os) const { os << fermion_ << vector_ << fourPoint_; } void MEfv2tf::persistentInput(PersistentIStream & is, int) { is >> fermion_ >> vector_ >> fourPoint_; } ClassDescription<MEfv2tf> MEfv2tf::initMEfv2tf; // Definition of the static class description member. void MEfv2tf::Init() { static ClassDocumentation<MEfv2tf> documentation ("The MEfv2tf class implements the general matrix element for " "fermion-vector -> tensor fermion."); } double MEfv2tf::me2() const { // check tensor mass bool tMass = meMomenta()[2].mass()!=ZERO; // first setup wavefunctions for external particles SpinorVector sp(2); SpinorBarVector sbar(2); VBVector vec(3); TBVector ten(5); for( unsigned int i = 0; i < 5; ++i ) { if(i<2) { if(mePartonData()[0]->id()>0) { sp[i] = SpinorWaveFunction (rescaledMomenta()[0], mePartonData()[0], i, incoming); sbar[i] = SpinorBarWaveFunction(rescaledMomenta()[3], mePartonData()[3], i, outgoing); } else { sp[i] = SpinorWaveFunction (rescaledMomenta()[3], mePartonData()[3], i, outgoing); sbar[i] = SpinorBarWaveFunction(rescaledMomenta()[0], mePartonData()[0], i, incoming); } } if( tMass || i==0 || i==4) { ten[i] = TensorWaveFunction(rescaledMomenta()[2], mePartonData()[2],i , outgoing); } if(i!=1 &&i<3) { vec[i] = VectorWaveFunction(rescaledMomenta()[1], mePartonData()[1],i , incoming); } } // calculate the ME double full_me(0.); if(mePartonData()[0]->id()>0) { fv2tfHeME(sp,vec,ten,sbar,full_me,true); } else { fbv2tfbHeME(sbar,vec,ten,sp,full_me,true); } // debugging tests if needed #ifndef NDEBUG if( debugME() ) debug(full_me); #endif // return the answer return full_me; } void MEfv2tf::doinit() { GeneralHardME::doinit(); fermion_ .resize(numberOfDiags()); vector_ .resize(numberOfDiags()); fourPoint_ .resize(numberOfDiags()); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1 , PDT::Spin2 , PDT::Spin1Half)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1 , PDT::Spin2 , PDT::Spin1Half)); for(HPCount i = 0; i < numberOfDiags(); ++i) { const HPDiagram & current = getProcessInfo()[i]; if(current.channelType == HPDiagram::sChannel) { if(current.intermediate->iSpin() != PDT::Spin1Half) throw InitException() << "MEfv2tf:doinit() - Cannot find correct " << "s-channel from diagram. Vertex not cast! " << Exception::runerror; fermion_[i] = make_pair(dynamic_ptr_cast<AbstractFFTVertexPtr>(current.vertices.second), dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.first)); } else if(current.channelType == HPDiagram::tChannel) { if(current.intermediate->iSpin() == PDT::Spin1Half) fermion_[i] = make_pair(dynamic_ptr_cast<AbstractFFTVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.second)); else if(current.intermediate->iSpin() == PDT::Spin1) vector_[i] = make_pair(dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractVVTVertexPtr>(current.vertices.second)); else throw InitException() << "MEfv2tf:doinit() - Cannot find correct " << "t-channel from diagram. Vertex not cast! " << Exception::runerror; } else if(current.channelType == HPDiagram::fourPoint) { fourPoint_[i] = dynamic_ptr_cast<AbstractFFVTVertexPtr>(current.vertices.first); } } } void MEfv2tf::doinitrun() { GeneralHardME::doinitrun(); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1 , PDT::Spin2 , PDT::Spin1Half)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1 , PDT::Spin2 , PDT::Spin1Half)); } ProductionMatrixElement MEfv2tf::fv2tfHeME(const SpinorVector & sp, const VBVector & vec, const TBVector & ten, const SpinorBarVector & sb, double & full_me, bool first) const { // scale const Energy2 q2(scale()); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); bool tMass = meMomenta()[2].mass() != ZERO; // flow over the helicities and diagrams for(unsigned int if1 = 0; if1 < 2; ++if1) { for(unsigned int iv=0; iv<3;iv+=2) { for(unsigned int it=0; it<5; ++it) { if( (it>0&&it<4) && !tMass ) continue; for(unsigned int if2 = 0; if2 < 2; ++if2) { vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr internal(current.intermediate); if(current.channelType == HPDiagram::sChannel) { SpinorWaveFunction interF = fermion_[ix].second-> evaluate(q2,5,internal,sp[if1],vec[iv]); diag = fermion_[ix].first-> evaluate(q2,interF,sb[if2],ten[it]); } else if(current.channelType == HPDiagram::tChannel) { if(internal->iSpin()==PDT::Spin1Half) { SpinorBarWaveFunction interFB = fermion_[ix].second-> evaluate(q2,5,internal,sb[if2],vec[iv]); diag = fermion_[ix].first-> evaluate(q2,sp[if1],interFB,ten[it]); } else { VectorWaveFunction interV = vector_[ix].first-> evaluate(q2, 1, internal, sp[if1], sb[if2]); diag = vector_[ix].second->evaluate(q2, interV, vec[iv],ten[it]); } } else if(current.channelType == HPDiagram::fourPoint) { diag = fourPoint_[ix]-> evaluate(q2,sp[if1],sb[if2],vec[iv],ten[it]); } // diagram me[ix] += norm(diag); diagramME()[ix](if1,iv,it,if2) = diag; // contributions to the different colour flows for(unsigned int iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](if1,iv,it,if2) = flows[iy]; // contribution to the squared matrix element for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) for(unsigned int ij = 0; ij < numberOfFlows(); ++ij) full_me += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; full_me = selectColourFlow(flow,me,full_me); return flowME()[colourFlow()]; } ProductionMatrixElement MEfv2tf::fbv2tfbHeME(const SpinorBarVector & sb, const VBVector & vec, const TBVector & ten, const SpinorVector & sp, double & full_me, bool first) const { // scale const Energy2 q2(scale()); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); bool tMass = meMomenta()[2].mass() != ZERO; // flow over the helicities and diagrams for(unsigned int if1 = 0; if1 < 2; ++if1) { for(unsigned int iv=0; iv<3;iv+=2) { for(unsigned int it=0; it<5; ++it) { if( (it>0&&it<4) && !tMass ) continue; for(unsigned int if2 = 0; if2 < 2; ++if2) { vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr internal(current.intermediate); if(current.channelType == HPDiagram::sChannel) { SpinorBarWaveFunction interFB = fermion_[ix].second-> evaluate(q2,5,internal,sb[if1],vec[iv]); diag = fermion_[ix].first-> evaluate(q2,sp[if2],interFB,ten[it]); } else if(current.channelType == HPDiagram::tChannel) { if(internal->iSpin()==PDT::Spin1Half) { SpinorWaveFunction interF = fermion_[ix].second-> evaluate(q2,5,internal,sp[if2],vec[iv]); diag = fermion_[ix].first-> evaluate(q2,interF,sb[if1],ten[it]); } else { VectorWaveFunction interV = vector_[ix].first-> evaluate(q2, 1, internal, sp[if2], sb[if1]); diag = vector_[ix].second->evaluate(q2, interV, vec[iv],ten[it]); } } else if(current.channelType == HPDiagram::fourPoint) { diag = fourPoint_[ix]-> evaluate(q2,sp[if2],sb[if1],vec[iv],ten[it]); } // diagram me[ix] += norm(diag); diagramME()[ix](if1,iv,it,if2) = diag; // contributions to the different colour flows for(unsigned int iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](if1,iv,it,if2) = flows[iy]; // contribution to the squared matrix element for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) for(unsigned int ij = 0; ij < numberOfFlows(); ++ij) full_me += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; full_me = selectColourFlow(flow,me,full_me); return flowME()[colourFlow()]; } void MEfv2tf::debug(double me2) const { if( !generator()->logfile().is_open() ) return; long id1 = mePartonData()[0]->id(); long id2 = mePartonData()[1]->id(); long id4 = mePartonData()[3]->id(); if(id1==-id4||abs(id1)>5) return; if(id2!=ParticleID::g) return; unsigned int iloc(0); for(;iloc<vector_.size();++iloc) if(vector_[iloc].first) break; double gs = abs(vector_[iloc].second->norm()); InvEnergy kappa = abs(vector_[iloc].first->norm())*UnitRemoval::InvE; Energy2 mg2 = sqr(meMomenta()[2].mass()); double anal2 = -3./8.*sqr(gs)*sqr(kappa)/36.*(4.*sHat()*tHat()+uHat()*mg2)* (sqr(tHat()-mg2)+sqr(sHat()-mg2))/sHat()/tHat()/uHat(); double diff = abs((anal2 - me2)/(anal2+me2)); if( diff > 1e-4 ) { generator()->log() << mePartonData()[0]->PDGName() << "," << mePartonData()[1]->PDGName() << "->" << mePartonData()[2]->PDGName() << "," << mePartonData()[3]->PDGName() << " difference: " << setprecision(10) << diff << " ratio: " << anal2/me2 << '\n'; } } void MEfv2tf::constructVertex(tSubProPtr sub) { ParticleVector ext = hardParticles(sub); VBVector v1; vector<TensorWaveFunction> t3; bool mc = !(ext[2]->momentum().mass() > ZERO); SpinorVector sp; SpinorBarVector sbar; VectorWaveFunction(v1, ext[1], incoming, false, true); TensorWaveFunction(t3, ext[2], outgoing, true, mc); double dummy(0.); //Need to use rescale momenta to calculate matrix element setRescaledMomenta(ext); // wavefunctions with rescaled momenta VectorWaveFunction vec(rescaledMomenta()[1], ext[1]->dataPtr(), incoming); TensorWaveFunction ten(rescaledMomenta()[2], ext[2]->dataPtr(), outgoing); if( ext[0]->id() > 0 ) { SpinorWaveFunction (sp , ext[0], incoming, false); SpinorBarWaveFunction(sbar, ext[3], outgoing, true); SpinorWaveFunction spr (rescaledMomenta()[0], ext[0]->dataPtr(), incoming); SpinorBarWaveFunction sbr(rescaledMomenta()[3], ext[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { spr.reset(ihel); sp[ihel] = spr; vec.reset(2*ihel); v1[ihel] = vec; ten.reset(4*ihel); t3[4*ihel] = ten; sbr.reset(ihel); sbar[ihel] = sbr; } if( !mc ) { for(unsigned int ihel=1;ihel<4;++ihel) { ten.reset(ihel); t3[ihel] = ten; } } ProductionMatrixElement pme = fv2tfHeME(sp, v1, t3, sbar, dummy,false); createVertex(pme,ext); } else { SpinorBarWaveFunction(sbar, ext[0], incoming, false); SpinorWaveFunction(sp, ext[3], outgoing, true); SpinorBarWaveFunction sbr(rescaledMomenta()[0], ext[0]->dataPtr(), incoming); SpinorWaveFunction spr (rescaledMomenta()[3], ext[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { sbr.reset(ihel); sbar[ihel] = sbr; vec.reset(2*ihel); v1[ihel] = vec; ten.reset(4*ihel); t3[4*ihel] = ten; spr.reset(ihel); sp[ihel] = spr; } if( !mc ) { for(unsigned int ihel=1;ihel<4;++ihel) { ten.reset(ihel); t3[ihel] = ten; } } ProductionMatrixElement pme = fbv2tfbHeME(sbar, v1, t3, sp, dummy,false); createVertex(pme,ext); } } ����������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/Makefile.in�����������������������������������������������0000644�0001750�0001750�00000047446�11756461677�023216� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = MatrixElement/General DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwGeneralME_la_LIBADD = am_libHwGeneralME_la_OBJECTS = GeneralHardME.lo MEvv2ff.lo MEvv2ss.lo \ MEfv2fs.lo MEff2ss.lo MEff2ff.lo MEff2vv.lo MEfv2vf.lo \ MEff2vs.lo MEff2sv.lo MEvv2vv.lo MEvv2vs.lo MEff2tv.lo \ MEvv2tv.lo MEfv2tf.lo GeneralfftoVH.lo GeneralfftoffH.lo \ GeneralQQHiggs.lo libHwGeneralME_la_OBJECTS = $(am_libHwGeneralME_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwGeneralME_la_SOURCES) DIST_SOURCES = $(libHwGeneralME_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwGeneralME.la libHwGeneralME_la_SOURCES = \ GeneralHardME.cc GeneralHardME.h GeneralHardME.fh \ MEvv2ff.cc MEvv2ff.h \ MEvv2ss.cc MEvv2ss.h \ MEfv2fs.cc MEfv2fs.h \ MEff2ss.cc MEff2ss.h \ MEff2ff.cc MEff2ff.h \ MEff2vv.cc MEff2vv.h \ MEfv2vf.cc MEfv2vf.h \ MEff2vs.cc MEff2vs.h \ MEff2sv.cc MEff2sv.h \ MEvv2vv.cc MEvv2vv.h \ MEvv2vs.cc MEvv2vs.h \ MEff2tv.cc MEff2tv.h \ MEvv2tv.cc MEvv2tv.h \ MEfv2tf.cc MEfv2tf.h \ GeneralfftoVH.cc GeneralfftoVH.h GeneralfftoVH.fh\ GeneralfftoffH.cc GeneralfftoffH.h GeneralfftoffH.fh\ GeneralQQHiggs.cc GeneralQQHiggs.h GeneralQQHiggs.fh all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu MatrixElement/General/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu MatrixElement/General/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwGeneralME.la: $(libHwGeneralME_la_OBJECTS) $(libHwGeneralME_la_DEPENDENCIES) $(EXTRA_libHwGeneralME_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwGeneralME_la_OBJECTS) $(libHwGeneralME_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeneralHardME.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeneralQQHiggs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeneralfftoVH.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeneralfftoffH.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEff2ff.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEff2ss.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEff2sv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEff2tv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEff2vs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEff2vv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEfv2fs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEfv2tf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEfv2vf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEvv2ff.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEvv2ss.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEvv2tv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEvv2vs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEvv2vv.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/GeneralfftoffH.fh�����������������������������������������0000644�0001750�0001750�00000000464�11754474776�024337� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the GeneralfftoffH class. // #ifndef HERWIG_GeneralfftoffH_FH #define HERWIG_GeneralfftoffH_FH #include "ThePEG/Config/ThePEG.h" namespace Herwig { class GeneralfftoffH; ThePEG_DECLARE_POINTERS(Herwig::GeneralfftoffH,GeneralfftoffHPtr); } #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/GeneralfftoVH.cc������������������������������������������0000644�0001750�0001750�00000014222�11754474776�024136� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the GeneralfftoVH class. // #include "GeneralfftoVH.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include"ThePEG/Utilities/EnumIO.h" #include "ThePEG/PDT/DecayMode.h" using namespace Herwig; GeneralfftoVH::GeneralfftoVH() {} void GeneralfftoVH::getDiagrams() const { if(process_==Lepton) { for(long ix=11;ix<=13;ix+=2) { tcPDPtr eplus = getParticleData( ix); tcPDPtr eminus = getParticleData(-ix); // find possible Z decays typedef Selector<tDMPtr> DecaySelector; DecaySelector Zdec = Z0()->decaySelector(); vector<PDPair> Zdecays; for(DecaySelector::const_iterator cit=Zdec.begin();cit!=Zdec.end();++cit) { if(cit->second->orderedProducts().size()!=2) continue; if(cit->second->orderedProducts()[0]->id()>0) Zdecays.push_back(make_pair(cit->second->orderedProducts()[0], cit->second->orderedProducts()[1])); else Zdecays.push_back(make_pair(cit->second->orderedProducts()[1], cit->second->orderedProducts()[0])); } // create the diagrams for(unsigned int ix=0;ix<Zdecays.size();++ix) { add(new_ptr((Tree2toNDiagram(2), eminus, eplus, 1, Z0(), 3, higgs(), 3, Z0(), 5, Zdecays[ix].first,5, Zdecays[ix].second,-1))); } } } else if(process_==HadronZ) { // find possible Z decays typedef Selector<tDMPtr> DecaySelector; DecaySelector Zdec = Z0()->decaySelector(); vector<PDPair> Zdecays; for(DecaySelector::const_iterator cit=Zdec.begin();cit!=Zdec.end();++cit) { if(cit->second->orderedProducts().size()!=2) continue; if(cit->second->orderedProducts()[0]->id()>0) Zdecays.push_back(make_pair(cit->second->orderedProducts()[0], cit->second->orderedProducts()[1])); else Zdecays.push_back(make_pair(cit->second->orderedProducts()[1], cit->second->orderedProducts()[0])); } // create the diagrams for ( int ix=1; ix<=int(maxFlavour()); ++ix ) { tcPDPtr q = getParticleData(ix); tcPDPtr qbar = q->CC(); for(unsigned int iz=0;iz<Zdecays.size();++iz) { add(new_ptr((Tree2toNDiagram(2), q, qbar, 1, Z0(), 3, higgs(), 3, Z0(), 5, Zdecays[iz].first,5, Zdecays[iz].second,-1))); } } } else if(process_==HadronWplus||process_==HadronWminus) { // possible incoming particles typedef std::vector<pair<long,long> > Pairvector; // possible parents vector<PDPair> parentpair; parentpair.reserve(6); // don't even think of putting 'break' in here! switch(maxFlavour()) { case 5: parentpair.push_back(make_pair(getParticleData(ParticleID::b), getParticleData(ParticleID::cbar))); parentpair.push_back(make_pair(getParticleData(ParticleID::b), getParticleData(ParticleID::ubar))); case 4: parentpair.push_back(make_pair(getParticleData(ParticleID::s), getParticleData(ParticleID::cbar))); parentpair.push_back(make_pair(getParticleData(ParticleID::d), getParticleData(ParticleID::cbar))); case 3: parentpair.push_back(make_pair(getParticleData(ParticleID::s), getParticleData(ParticleID::ubar))); case 2: parentpair.push_back(make_pair(getParticleData(ParticleID::d), getParticleData(ParticleID::ubar))); default: ; } // possible children typedef Selector<tDMPtr> DecaySelector; // for W+ DecaySelector wpdec = getParticleData(ParticleID::Wplus)->decaySelector(); vector<PDPair> wpdecays; for(DecaySelector::const_iterator cit=wpdec.begin();cit!=wpdec.end();++cit) { if(cit->second->orderedProducts().size()!=2) continue; if(cit->second->orderedProducts()[0]->id()>0) wpdecays.push_back(make_pair(cit->second->orderedProducts()[0], cit->second->orderedProducts()[1])); else wpdecays.push_back(make_pair(cit->second->orderedProducts()[1], cit->second->orderedProducts()[0])); } // for W- DecaySelector wmdec = getParticleData(ParticleID::Wminus)->decaySelector(); vector<PDPair> wmdecays; for(DecaySelector::const_iterator cit=wmdec.begin();cit!=wmdec.end();++cit) { if(cit->second->orderedProducts().size()!=2) continue; if(cit->second->orderedProducts()[0]->id()>0) wmdecays.push_back(make_pair(cit->second->orderedProducts()[0], cit->second->orderedProducts()[1])); else wmdecays.push_back(make_pair(cit->second->orderedProducts()[1], cit->second->orderedProducts()[0])); } vector<PDPair>::const_iterator parent = parentpair.begin(); for (; parent != parentpair.end(); ++parent) { // W- modes if(process_==HadronWminus) { for(unsigned int ix=0;ix<wmdecays.size();++ix) { add(new_ptr((Tree2toNDiagram(2), parent->first, parent->second, 1, WMinus(), 3, higgs(), 3, WMinus(), 5, wmdecays[ix].first,5, wmdecays[ix].second,-1))); } } else { // W+ modes for(unsigned int ix=0;ix<wpdecays.size();++ix) { add(new_ptr((Tree2toNDiagram(2), parent->second->CC(), parent->first->CC(), 1, WPlus(), 3, higgs(), 3, WPlus(), 5, wpdecays[ix].first, 5, wpdecays[ix].second, -1))); } } } } else assert(false); } IBPtr GeneralfftoVH::clone() const { return new_ptr(*this); } IBPtr GeneralfftoVH::fullclone() const { return new_ptr(*this); } void GeneralfftoVH::persistentOutput(PersistentOStream & os) const { os << oenum(process_); } void GeneralfftoVH::persistentInput(PersistentIStream & is, int) { is >> ienum(process_); } ClassDescription<GeneralfftoVH> GeneralfftoVH::initGeneralfftoVH; // Definition of the static class description member. void GeneralfftoVH::Init() { static ClassDocumentation<GeneralfftoVH> documentation ("The GeneralfftoVH class provides"); } void GeneralfftoVH::setProcessInfo(Process proc, PDPtr hin, AbstractVVSVertexPtr vertex, unsigned int shapeOpt) { higgs(hin); process_ = proc; setWWHVertex(vertex); lineShape(shapeOpt); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEvv2ss.cc������������������������������������������������0000644�0001750�0001750�00000023651�11754474776�022757� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEvv2ss.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEvv2ss class. // #include "MEvv2ss.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using ThePEG::Helicity::TensorWaveFunction; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; void MEvv2ss::doinit() { GeneralHardME::doinit(); scalar1_.resize(numberOfDiags()); scalar2_.resize(numberOfDiags()); vector_ .resize(numberOfDiags()); tensor_ .resize(numberOfDiags()); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin0, PDT::Spin0)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin0, PDT::Spin0)); for(size_t i = 0; i < numberOfDiags(); ++i ) { HPDiagram dg = getProcessInfo()[i]; if( !dg.intermediate ) { contact_ = dynamic_ptr_cast<AbstractVVSSVertexPtr>(dg.vertices.first); } else if(dg.channelType == HPDiagram::tChannel) { AbstractVSSVertexPtr vss1 = dynamic_ptr_cast<AbstractVSSVertexPtr>(dg.vertices.first); AbstractVSSVertexPtr vss2 = dynamic_ptr_cast<AbstractVSSVertexPtr>(dg.vertices.second); scalar2_[i] = make_pair(vss1, vss2); } else { if( dg.intermediate->iSpin() == PDT::Spin0 ) { AbstractVVSVertexPtr vvs = dynamic_ptr_cast<AbstractVVSVertexPtr>(dg.vertices.first); AbstractSSSVertexPtr sss = dynamic_ptr_cast<AbstractSSSVertexPtr>(dg.vertices.second); scalar1_[i] = make_pair(vvs, sss); } else if( dg.intermediate->iSpin() == PDT::Spin1 ) { AbstractVVVVertexPtr vvv = dynamic_ptr_cast<AbstractVVVVertexPtr>(dg.vertices.first); AbstractVSSVertexPtr vss = dynamic_ptr_cast<AbstractVSSVertexPtr>(dg.vertices.second); vector_[i] = make_pair(vvv, vss); } else if( dg.intermediate->iSpin() == PDT::Spin2 ) { AbstractVVTVertexPtr vvt = dynamic_ptr_cast<AbstractVVTVertexPtr>(dg.vertices.first); AbstractSSTVertexPtr sst = dynamic_ptr_cast<AbstractSSTVertexPtr>(dg.vertices.second); tensor_[i] = make_pair(vvt, sst); } } } } void MEvv2ss::doinitrun() { GeneralHardME::doinitrun(); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin0, PDT::Spin0)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin0, PDT::Spin0)); } double MEvv2ss::me2() const { VBVector v1(2), v2(2); for( size_t i = 0; i < 2; ++i ) { v1[i] = VectorWaveFunction(rescaledMomenta()[0],mePartonData()[0], 2*i, incoming); v2[i] = VectorWaveFunction(rescaledMomenta()[1],mePartonData()[1], 2*i, incoming); } ScalarWaveFunction sca1(rescaledMomenta()[2],mePartonData()[2], Complex(1.,0.),outgoing); ScalarWaveFunction sca2(rescaledMomenta()[3],mePartonData()[3], Complex(1.,0.),outgoing); double full_me(0.); vv2ssME(v1, v2, sca1, sca2, full_me , true); #ifndef NDEBUG if( debugME() ) debug(full_me); #endif return full_me; } ProductionMatrixElement MEvv2ss::vv2ssME(const VBVector & v1, const VBVector & v2, const ScalarWaveFunction & sca1, const ScalarWaveFunction & sca2, double & me2, bool first) const { const Energy2 m2(scale()); const Energy masst = sca1.mass(), massu = sca2.mass(); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); //loop over vector helicities for(unsigned int iv1 = 0; iv1 < 2; ++iv1) { for(unsigned int iv2 = 0; iv2 < 2; ++iv2) { vector<Complex> flows(numberOfFlows(),0.); // loop over diagrams for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; // do four-point diag first if(current.channelType == HPDiagram::fourPoint) { diag = contact_->evaluate(m2, v1[iv1], v2[iv2], sca1, sca2); } else { tcPDPtr offshell = current.intermediate; if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) { ScalarWaveFunction interS = scalar2_[ix].first-> evaluate(m2, 3, offshell, v1[iv1], sca1, masst); diag = scalar2_[ix].second->evaluate(m2, v2[iv2], interS, sca2); } else { ScalarWaveFunction interS = scalar2_[ix].first-> evaluate(m2, 3, offshell, v1[iv1], sca2, massu); diag = scalar2_[ix].second->evaluate(m2, v2[iv2], interS, sca1); } } else if(current.channelType == HPDiagram::sChannel) { if(offshell->iSpin() == PDT::Spin0) { ScalarWaveFunction interS = scalar1_[ix].first-> evaluate(m2, 1, offshell, v1[iv1], v2[iv2]); diag = scalar1_[ix].second->evaluate(m2, interS, sca1, sca2); } else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interV = vector_[ix].first-> evaluate(m2, 1, offshell, v1[iv1], v2[iv2]); diag = vector_[ix].second->evaluate(m2, interV, sca1, sca2); } else if(offshell->iSpin() == PDT::Spin2) { TensorWaveFunction interT = tensor_[ix].first-> evaluate(m2, 1, offshell, v1[iv1], v2[iv2]); diag = tensor_[ix].second->evaluate(m2, sca1, sca2, interT); } } else diag = 0.; } me[ix] += norm(diag); diagramME()[ix](2*iv1, 2*iv2, 0, 0) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](2*iv1, 2*iv2, 0, 0) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) for(size_t ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } void MEvv2ss::persistentOutput(PersistentOStream & os) const { os << scalar1_ << scalar2_ << vector_ << tensor_ << contact_; } void MEvv2ss::persistentInput(PersistentIStream & is, int) { is >> scalar1_ >> scalar2_ >> vector_ >> tensor_ >> contact_; } ClassDescription<MEvv2ss> MEvv2ss::initMEvv2ss; // Definition of the static class description member. void MEvv2ss::Init() { static ClassDocumentation<MEvv2ss> documentation ("This class implements the ME for the vector-vector to scalar-scalar " "hard-process"); } void MEvv2ss::constructVertex(tSubProPtr sub) { ParticleVector ext = hardParticles(sub); VBVector v1, v2; // set up the wavefunctions with real momenta VectorWaveFunction(v1, ext[0], incoming, false, true); VectorWaveFunction(v2, ext[1], incoming, false, true); ScalarWaveFunction sca1(ext[2], outgoing, true); ScalarWaveFunction sca2(ext[3], outgoing, true); // calculate rescaled moment setRescaledMomenta(ext); // wavefunctions with rescaled momenta VectorWaveFunction v1r (rescaledMomenta()[0], ext[0]->dataPtr(), incoming); VectorWaveFunction v2r (rescaledMomenta()[1], ext[1]->dataPtr(), incoming); sca1 = ScalarWaveFunction(rescaledMomenta()[2], ext[2]->dataPtr(), outgoing); sca2 = ScalarWaveFunction(rescaledMomenta()[3], ext[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { v1r.reset(2*ihel); v1[ihel] = v1r; v2r.reset(2*ihel); v2[ihel] = v2r; } double dummy(0.); ProductionMatrixElement pme = vv2ssME(v1, v2, sca1, sca2, dummy , false); #ifndef NDEBUG if( debugME() ) debug(dummy); #endif createVertex(pme,ext); } void MEvv2ss::debug(double me2) const { if( !generator()->logfile().is_open() ) return; if( mePartonData()[0]->id() != 21 || mePartonData()[1]->id() != 21) return; long id3 = abs(mePartonData()[2]->id()); long id4 = abs(mePartonData()[3]->id()); int type = -1; //SUSY gg>~q~q if( ((id3 >= 1000001 && id3 <= 1000006 ) && (id4 >= 1000001 && id4 <= 1000006 ) ) || ((id3 >= 2000001 && id3 <= 2000006 ) && (id4 >= 2000001 && id4 <= 2000006 ) ) ) { type = 0; } // Sextet production else if(mePartonData()[2]->iColour() == PDT::Colour6 && mePartonData()[3]->iColour() == PDT::Colour6bar ) { type = 1; } else { return; } double gs4 = sqr( 4.*Constants::pi*SM().alphaS(scale())); int Nc = SM().Nc(); Energy4 s2 = sqr(sHat()); Energy2 m3s = meMomenta()[2].m2(); Energy2 m4s = meMomenta()[3].m2(); Energy4 spt2 = uHat()*tHat() - m3s*m4s; Energy2 t3 = tHat()-m3s, u4 = uHat()-m4s; Energy4 t3s = sqr(t3) , u4s = sqr(u4); Energy8 pre = gs4*(sqr(spt2) + s2*m3s*m4s); // matrix element double analytic(0.); // triplet scalars if(type==0) { analytic = pre*Nc* ( u4s + t3s - s2/sqr(Nc) )/2./(sqr(Nc) - 1.)/s2/t3s/u4s; } // sextet scalars else if(type==1) { analytic = pre*(Nc+2.)/(sqr(Nc)-1.)/Nc* ((Nc+2.)*(Nc-1.)/t3s/u4s - sqr(Nc)/t3/u4/s2); } double diff = abs(analytic - me2)/(analytic+me2); if( diff > 1e-10 ) { generator()->log() << mePartonData()[0]->PDGName() << "," << mePartonData()[1]->PDGName() << "->" << mePartonData()[2]->PDGName() << "," << mePartonData()[3]->PDGName() << " difference: " << setprecision(10) << diff << " ratio: " << analytic/me2 << '\n'; } } ���������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/GeneralHardME.fh������������������������������������������0000644�0001750�0001750�00000000507�11754474776�024053� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the GeneralHardME class. // #ifndef HERWIG_GeneralHardME_FH #define HERWIG_GeneralHardME_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class GeneralHardME; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::GeneralHardME,GeneralHardMEPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEfv2vf.cc������������������������������������������������0000644�0001750�0001750�00000032363�11754474776�022725� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEfv2vf.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEfv2vf class. // #include "MEfv2vf.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; using ThePEG::Helicity::SpinorWaveFunction; using ThePEG::Helicity::SpinorBarWaveFunction; using ThePEG::Helicity::VectorWaveFunction; void MEfv2vf::doinit() { GeneralHardME::doinit(); fermion_.resize(numberOfDiags()); vector_.resize(numberOfDiags()); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1, PDT::Spin1, PDT::Spin1Half)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1, PDT::Spin1, PDT::Spin1Half)); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { HPDiagram diagram = getProcessInfo()[ix]; PDT::Spin offspin = diagram.intermediate->iSpin(); if(diagram.channelType == HPDiagram::sChannel || ( diagram.channelType == HPDiagram::tChannel && offspin == PDT::Spin1Half)) { AbstractFFVVertexPtr vert1 = dynamic_ptr_cast<AbstractFFVVertexPtr> (diagram.vertices.first); AbstractFFVVertexPtr vert2 = dynamic_ptr_cast<AbstractFFVVertexPtr> (diagram.vertices.second); fermion_[ix] = make_pair(vert1, vert2); } else { if(offspin == PDT::Spin1) { AbstractFFVVertexPtr vert1 = dynamic_ptr_cast<AbstractFFVVertexPtr> (diagram.vertices.first); AbstractVVVVertexPtr vert2 = dynamic_ptr_cast<AbstractVVVVertexPtr> (diagram.vertices.second); vector_[ix] = make_pair(vert1, vert2); } } } } void MEfv2vf::doinitrun() { GeneralHardME::doinitrun(); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1, PDT::Spin1, PDT::Spin1Half)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1, PDT::Spin1, PDT::Spin1Half)); } double MEfv2vf::me2() const { //wavefunctions SpinorVector sp(2); VBVector vecIn(2), vecOut(3); SpinorBarVector spb(2); double fullme(0.); bool mc = !(mePartonData()[2]->mass() > ZERO); if(mePartonData()[0]->id() > 0) { for(unsigned int i = 0; i < 2; ++i) { sp[i] = SpinorWaveFunction(rescaledMomenta()[0], mePartonData()[0], i, incoming); vecIn[i] = VectorWaveFunction(rescaledMomenta()[1], mePartonData()[1], 2*i, incoming); vecOut[2*i] = VectorWaveFunction(rescaledMomenta()[2], mePartonData()[2], 2*i, outgoing); spb[i] = SpinorBarWaveFunction(rescaledMomenta()[3], mePartonData()[3], i, outgoing); } if( !mc ) vecOut[1] = VectorWaveFunction(rescaledMomenta()[2], mePartonData()[2], 1, outgoing); fv2vfHeME(sp, vecIn, vecOut, mc, spb, fullme,true); } else { for(unsigned int i = 0; i < 2; ++i) { spb[i] = SpinorBarWaveFunction(rescaledMomenta()[0], mePartonData()[0], i, incoming); vecIn[i] = VectorWaveFunction(rescaledMomenta()[1], mePartonData()[1], 2*i, incoming); vecOut[2*i] = VectorWaveFunction(rescaledMomenta()[2], mePartonData()[2], 2*i, outgoing); sp[i] = SpinorWaveFunction(rescaledMomenta()[3], mePartonData()[3], i, outgoing); } if( !mc ) vecOut[1] = VectorWaveFunction(rescaledMomenta()[2], mePartonData()[2], 1, outgoing); fbv2vfbHeME(spb, vecIn, vecOut, mc, sp, fullme,true); } #ifndef NDEBUG if( debugME() ) debug(fullme); #endif return fullme; } ProductionMatrixElement MEfv2vf::fv2vfHeME(const SpinorVector & spIn, const VBVector & vecIn, const VBVector & vecOut, bool mc, const SpinorBarVector & spbOut, double & me2, bool first) const { const Energy2 q2(scale()); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); me2 = 0.; //loop over helicities for(unsigned int ifh = 0; ifh < 2; ++ifh) { for(unsigned int ivh = 0; ivh < 2; ++ivh) { for(unsigned int ovh = 0; ovh < 3; ++ovh) { if(mc && ovh == 1) ++ovh; for(unsigned int ofh = 0; ofh < 2; ++ofh) { vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if(current.channelType == HPDiagram::tChannel) { //t-chan spin-1/2 if(offshell->iSpin() == PDT::Spin1Half) { SpinorBarWaveFunction interFB = fermion_[ix].second-> evaluate(q2, 3, offshell, spbOut[ofh], vecIn[ivh]); diag = fermion_[ix].first-> evaluate(q2, spIn[ifh], interFB, vecOut[ovh]); } else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interV = vector_[ix].second-> evaluate(q2, 3, offshell, vecIn[ivh], vecOut[ovh]); diag = vector_[ix].first-> evaluate(q2, spIn[ifh], spbOut[ofh], interV); } else diag = 0.0; } else if(current.channelType == HPDiagram::sChannel) { SpinorBarWaveFunction interFB = fermion_[ix].second-> evaluate(q2, 1, offshell, spbOut[ofh], vecOut[ovh]); diag = fermion_[ix].first-> evaluate(q2, spIn[ifh], interFB, vecIn[ivh]); } me[ix] += norm(diag); diagramME()[ix](ifh, 2*ivh, ovh, ofh) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](ifh, 2*ivh, ovh, ofh) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) for(size_t ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } ProductionMatrixElement MEfv2vf::fbv2vfbHeME(const SpinorBarVector & spbIn, const VBVector & vecIn, const VBVector & vecOut, bool mc, const SpinorVector & spOut, double & me2, bool first) const { const Energy2 q2(scale()); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); me2 = 0.; //loop over helicities for(unsigned int ifh = 0; ifh < 2; ++ifh) { for(unsigned int ivh = 0; ivh < 2; ++ivh) { for(unsigned int ovh = 0; ovh < 3; ++ovh) { if(mc && ovh == 1) ++ovh; for(unsigned int ofh = 0; ofh < 2; ++ofh) { vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if(current.channelType == HPDiagram::tChannel) { if(offshell->iSpin() == PDT::Spin1Half) { SpinorBarWaveFunction interFB = fermion_[ix].first-> evaluate(q2, 3, offshell, spbIn[ifh], vecOut[ovh]); diag = fermion_[ix].second-> evaluate(q2, spOut[ofh], interFB, vecIn[ivh]); } else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interV = vector_[ix].first-> evaluate(q2, 3, offshell, spOut[ofh], spbIn[ifh]); diag = vector_[ix].second-> evaluate(q2, vecIn[ivh], interV, vecOut[ovh]); } else diag = 0.0; } else if(current.channelType == HPDiagram::sChannel) { if(offshell->iSpin() == PDT::Spin1Half) { SpinorBarWaveFunction interFB = fermion_[ix].first-> evaluate(q2, 1, offshell, spbIn[ifh], vecIn[ivh]); diag = fermion_[ix].second-> evaluate(q2, spOut[ofh], interFB, vecOut[ovh]); } } me[ix] += norm(diag); diagramME()[ix](ifh, ivh, ovh, ofh) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](ifh, ivh, ovh, ofh) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) for(size_t ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } void MEfv2vf::persistentOutput(PersistentOStream & os) const { os << fermion_ << vector_; } void MEfv2vf::persistentInput(PersistentIStream & is, int) { is >> fermion_ >> vector_; } ClassDescription<MEfv2vf> MEfv2vf::initMEfv2vf; // Definition of the static class description member. void MEfv2vf::Init() { static ClassDocumentation<MEfv2vf> documentation ("This is the implementation of the matrix element for a fermion-vector boson" "to a vector-fermion."); } void MEfv2vf::constructVertex(tSubProPtr sub) { ParticleVector ext = hardParticles(sub); VBVector v1, v3; bool mc = !(ext[2]->data().mass() > ZERO); SpinorVector sp; SpinorBarVector sbar; VectorWaveFunction(v1, ext[1], incoming, false, true); VectorWaveFunction(v3, ext[2], outgoing, true, mc); double dummy(0.); //Need to use rescale momenta to calculate matrix element setRescaledMomenta(ext); // wavefunctions with rescaled momenta VectorWaveFunction vir(rescaledMomenta()[1], ext[1]->dataPtr(), incoming); VectorWaveFunction vor(rescaledMomenta()[2], ext[2]->dataPtr(), outgoing); if( ext[0]->id() > 0 ) { SpinorWaveFunction (sp , ext[0], incoming, false); SpinorBarWaveFunction(sbar, ext[3], outgoing, true); SpinorWaveFunction spr (rescaledMomenta()[0], ext[0]->dataPtr(), incoming); SpinorBarWaveFunction sbr(rescaledMomenta()[3], ext[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { spr.reset(ihel); sp[ihel] = spr; vir.reset(2*ihel); v1[ihel] = vir; vor.reset(2*ihel); v3[2*ihel] = vor; sbr.reset(ihel); sbar[ihel] = sbr; } if( !mc ) { vor.reset(1); v3[1] = vor; } ProductionMatrixElement pme = fv2vfHeME(sp, v1, v3, mc, sbar, dummy,false); createVertex(pme,ext); } else { SpinorBarWaveFunction(sbar, ext[0], incoming, false); SpinorWaveFunction(sp, ext[3], outgoing, true); SpinorBarWaveFunction sbr(rescaledMomenta()[0], ext[0]->dataPtr(), incoming); SpinorWaveFunction spr (rescaledMomenta()[3], ext[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { sbr.reset(ihel); sbar[ihel] = sbr; vir.reset(2*ihel); v1[ihel] = vir; vor.reset(2*ihel); v3[2*ihel] = vor; spr.reset(ihel); sp[ihel] = spr; } if( !mc ) { vor.reset(1); v3[1] = vor; } ProductionMatrixElement pme = fbv2vfbHeME(sbar, v1, v3, mc, sp, dummy,false); createVertex(pme,ext); } #ifndef NDEBUG if( debugME() ) debug(dummy); #endif } void MEfv2vf::debug(double me2) const { if( !generator()->logfile().is_open() ) return; long id1 = abs(mePartonData()[0]->id()); long id4 = abs(mePartonData()[3]->id()); if( (id1 != 1 && id1 != 2) || mePartonData()[1]->id() != 21 || mePartonData()[2]->id() != 5100021 || (id4 != 5100001 && id4 != 5100002 && id4 != 6100001 && id4 != 6100002) ) return; tcSMPtr sm = generator()->standardModel(); double gs4 = sqr( 4.*Constants::pi*sm->alphaS(scale()) ); Energy2 s(sHat()); Energy2 mf2 = meMomenta()[2].m2(); // Energy4 spt2 = uHat()*tHat() - sqr(mf2); //swap t and u as formula defines process vf->vf Energy2 t3(uHat() - mf2), u4(tHat() - mf2); Energy4 s2(sqr(s)), t3s(sqr(t3)), u4s(sqr(u4)); double analytic = -gs4*( 5.*s2/12./t3s + s2*s/t3s/u4 + 11.*s*u4/6./t3s + 5.*u4s/12./t3s + u4s*u4/s/t3s)/3.; double diff = abs(analytic - me2); if( diff > 1e-4 ) { generator()->log() << mePartonData()[0]->PDGName() << "," << mePartonData()[1]->PDGName() << "->" << mePartonData()[2]->PDGName() << "," << mePartonData()[3]->PDGName() << " difference: " << setprecision(10) << diff << " ratio: " << analytic/me2 << '\n'; } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/GeneralfftoVH.h�������������������������������������������0000644�0001750�0001750�00000007260�11754474776�024004� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_GeneralfftoVH_H #define HERWIG_GeneralfftoVH_H // // This is the declaration of the GeneralfftoVH class. // #include "Herwig++/MatrixElement/MEfftoVH.h" #include "GeneralfftoVH.fh" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the GeneralfftoVH class. * * @see \ref GeneralfftoVHInterfaces "The interfaces" * defined for GeneralfftoVH. */ class GeneralfftoVH: public MEfftoVH { public: /** * Type of process */ enum Process {Lepton,HadronWplus,HadronWminus,HadronZ}; public: /** * The default constructor. */ GeneralfftoVH(); /** @name Virtual functions required by the MEBase class. */ //@{ /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; //@} /** * Set up the matrix element */ void setProcessInfo(Process proc, PDPtr higgs, AbstractVVSVertexPtr vertex, unsigned int shapeOpt); 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; //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<GeneralfftoVH> initGeneralfftoVH; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GeneralfftoVH & operator=(const GeneralfftoVH &); private: /** * The vector boson */ Process process_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of GeneralfftoVH. */ template <> struct BaseClassTrait<Herwig::GeneralfftoVH,1> { /** Typedef of the first base class of GeneralfftoVH. */ typedef Herwig::MEfftoVH NthBase; }; /** This template specialization informs ThePEG about the name of * the GeneralfftoVH class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::GeneralfftoVH> : public ClassTraitsBase<Herwig::GeneralfftoVH> { /** Return a platform-independent class name */ static string className() { return "Herwig::GeneralfftoVH"; } /** * The name of a file containing the dynamic library where the class * GeneralfftoVH is implemented. It may also include several, space-separated, * libraries if the class GeneralfftoVH depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "GeneralfftoVH.so"; } }; /** @endcond */ } #endif /* HERWIG_GeneralfftoVH_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEvv2tv.h�������������������������������������������������0000644�0001750�0001750�00000012401�11754474776�022614� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEvv2tv_H #define HERWIG_MEvv2tv_H // // This is the declaration of the MEvv2tv class. // #include "GeneralHardME.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVTVertex.h" namespace Herwig { using namespace ThePEG; using ThePEG::Helicity::VectorWaveFunction; using ThePEG::Helicity::TensorWaveFunction; /** * Here is the documentation of the MEvv2tv class. * * @see \ref MEvv2tvInterfaces "The interfaces" * defined for MEvv2tv. */ class MEvv2tv: public GeneralHardME { /** Vector of VectorWaveFunctions. */ typedef vector<VectorWaveFunction> VBVector; /** Vector of TensorWaveFunctions. */ typedef vector<TensorWaveFunction> TBVector; public: /** * The default constructor. */ MEvv2tv() : vector_(0), fourPoint_(0) {} /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Construct the vertex information for the spin correlations * @param sub Pointer to the relevent SubProcess */ virtual void constructVertex(tSubProPtr sub); 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. */ void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** @name Functions to calculate production matrix elements and me2. */ //@{ /** * Calculate me2 and the production matrix element for the normal mode. * @param vec1 Vector of VectorWaveFunction for the 1st incoming boson * @param vec2 Vector of VectorWaveFunction for the 2nd incoming boson * @param ten TensorWaveFunction for outgoing tensor. * @param vec3 Vector of VectorWaveFunction for the outgoing boson * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @param full_me The value of me2 calculation */ ProductionMatrixElement vv2tvHeME(const VBVector & vec1, const VBVector & vec2, const TBVector & ten, const VBVector & vec3, double & full_me, bool first) const; /** * A debugging function to test the value of me2 against an * analytic function. * @param me2 The value of the \f$ |\bar{\mathcal{M}}|^2 \f$ */ virtual void debug(double me2) const; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEvv2tv> initMEvv2tv; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEvv2tv & operator=(const MEvv2tv &); private: /** * Store a pair of FFTVertex and FFVVertex pointers */ vector<pair<AbstractVVVVertexPtr, AbstractVVTVertexPtr> > vector_; /** * The four point vertex */ vector<AbstractVVVTVertexPtr> fourPoint_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEvv2tv. */ template <> struct BaseClassTrait<Herwig::MEvv2tv,1> { /** Typedef of the first base class of MEvv2tv. */ typedef Herwig::GeneralHardME NthBase; }; /** This template specialization informs ThePEG about the name of * the MEvv2tv class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEvv2tv> : public ClassTraitsBase<Herwig::MEvv2tv> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEvv2tv"; } }; /** @endcond */ } #endif /* HERWIG_MEvv2tv_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEvv2vs.cc������������������������������������������������0000644�0001750�0001750�00000021417�11754474776�022760� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEvv2vs class. // #include "MEvv2vs.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using ThePEG::Helicity::ScalarWaveFunction; using ThePEG::Helicity::VectorWaveFunction; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; IBPtr MEvv2vs::clone() const { return new_ptr(*this); } IBPtr MEvv2vs::fullclone() const { return new_ptr(*this); } void MEvv2vs::persistentOutput(PersistentOStream & os) const { os << scalar_ << vector_; } void MEvv2vs::persistentInput(PersistentIStream & is, int) { is >> scalar_ >> vector_; } ClassDescription<MEvv2vs> MEvv2vs::initMEvv2vs; // Definition of the static class description member. void MEvv2vs::Init() { static ClassDocumentation<MEvv2vs> documentation ("The MEvv2vs class implements the general matrix elements" " for vector vector -> vector scalar"); } void MEvv2vs::doinit() { GeneralHardME::doinit(); scalar_.resize(numberOfDiags()); vector_.resize(numberOfDiags()); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin1, PDT::Spin0)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin1, PDT::Spin0)); for(size_t i = 0; i < numberOfDiags(); ++i) { HPDiagram diag = getProcessInfo()[i]; tcPDPtr offshell = diag.intermediate; assert(offshell); if(offshell->iSpin() == PDT::Spin0) { AbstractVVSVertexPtr vert1; AbstractVSSVertexPtr vert2; if(diag.channelType == HPDiagram::sChannel || (diag.channelType == HPDiagram::tChannel && diag.ordered.second)) { vert1 = dynamic_ptr_cast<AbstractVVSVertexPtr>(diag.vertices.first ); vert2 = dynamic_ptr_cast<AbstractVSSVertexPtr>(diag.vertices.second); } else { vert1 = dynamic_ptr_cast<AbstractVVSVertexPtr>(diag.vertices.second); vert2 = dynamic_ptr_cast<AbstractVSSVertexPtr>(diag.vertices.first ); } scalar_[i] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin1) { AbstractVVVVertexPtr vert1; AbstractVVSVertexPtr vert2; if(diag.channelType == HPDiagram::sChannel || (diag.channelType == HPDiagram::tChannel && diag.ordered.second)) { vert1 = dynamic_ptr_cast<AbstractVVVVertexPtr>(diag.vertices.first ); vert2 = dynamic_ptr_cast<AbstractVVSVertexPtr>(diag.vertices.second); } else { vert1 = dynamic_ptr_cast<AbstractVVVVertexPtr>(diag.vertices.second); vert2 = dynamic_ptr_cast<AbstractVVSVertexPtr>(diag.vertices.first ); } vector_[i] = make_pair(vert1, vert2); } } } void MEvv2vs::doinitrun() { GeneralHardME::doinitrun(); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin1, PDT::Spin0)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin1, PDT::Spin0)); } double MEvv2vs::me2() const { VBVector va(2), vb(2), vc(3); for(unsigned int i = 0; i < 2; ++i) { va[i] = VectorWaveFunction(rescaledMomenta()[0], mePartonData()[0], 2*i, incoming); vb[i] = VectorWaveFunction(rescaledMomenta()[1], mePartonData()[1], 2*i, incoming); } //always 0 and 2 polarisations for(unsigned int i = 0; i < 2; ++i) { vc[2*i] = VectorWaveFunction(rescaledMomenta()[2], mePartonData()[2], 2*i, outgoing); } bool mc = !(mePartonData()[2]->mass() > ZERO); //massive vector, also 1 if( !mc ) vc[1] = VectorWaveFunction(rescaledMomenta()[2], mePartonData()[2], 1, outgoing); ScalarWaveFunction sd(rescaledMomenta()[3], mePartonData()[3], outgoing); double full_me(0.); vv2vsHeME(va, vb, vc, mc, sd, full_me,true); return full_me; } ProductionMatrixElement MEvv2vs::vv2vsHeME(VBVector & vin1, VBVector & vin2, VBVector & vout1, bool mc, ScalarWaveFunction & sd, double & me2, bool first) const { const Energy2 q2(scale()); const Energy mass = vout1[0].mass(); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); // flow over the helicities and diagrams for(unsigned int ihel1 = 0; ihel1 < 2; ++ihel1) { for(unsigned int ihel2 = 0; ihel2 < 2; ++ihel2) { for(unsigned int ohel1 = 0; ohel1 < 3; ++ohel1) { if(mc && ohel1 == 1) ++ohel1; vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if(!offshell) continue; if(current.channelType == HPDiagram::sChannel) { if(offshell->iSpin() == PDT::Spin0) { ScalarWaveFunction interS = scalar_[ix].first-> evaluate(q2, 1, offshell,vin1[ihel1], vin2[ihel2]); diag = scalar_[ix].second-> evaluate(q2, vout1[ohel1], sd, interS); } else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interV = vector_[ix].first-> evaluate(q2, 1, offshell, vin1[ihel1], vin2[ihel2]); diag = vector_[ix].second-> evaluate(q2, vout1[ohel1], interV, sd); } else assert(false); } else if(current.channelType == HPDiagram::tChannel) { if(offshell->iSpin() == PDT::Spin0) { if(current.ordered.second) { ScalarWaveFunction interS = scalar_[ix]. first->evaluate(q2, 3, offshell, vin1[ihel1],vout1[ohel1], mass); diag = scalar_[ix].second-> evaluate(q2, vin2[ihel2], sd, interS); } else { ScalarWaveFunction interS = scalar_[ix].first-> evaluate(q2, 3, offshell, vin2[ihel2],vout1[ohel1], mass); diag = scalar_[ix].second-> evaluate(q2, vin1[ihel1], sd, interS); } } else if(offshell->iSpin() == PDT::Spin1) { if(current.ordered.second) { VectorWaveFunction interV = vector_[ix]. first->evaluate(q2, 3, offshell, vin1[ihel1],vout1[ohel1], mass); diag = vector_[ix].second-> evaluate(q2, vin2[ihel2], interV, sd); } else { VectorWaveFunction interV = vector_[ix].first-> evaluate(q2, 3, offshell, vin2[ihel2],vout1[ohel1], mass); diag = vector_[ix].second-> evaluate(q2, vin1[ihel1], interV, sd); } } else assert(false); } else assert(false); me[ix] += norm(diag); diagramME()[ix](2*ihel1, 2*ihel2, ohel1,0) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](2*ihel1, 2*ihel2, ohel1, 0) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) for(size_t ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } void MEvv2vs::constructVertex(tSubProPtr sub) { ParticleVector ext = hardParticles(sub); // set wave functions with real momenta VBVector v1, v2, v3; VectorWaveFunction(v1, ext[0], incoming, false, true); VectorWaveFunction(v2, ext[1], incoming, false, true); //function to calculate me2 expects massless incoming vectors // and this constructor sets the '1' polarisation at element [2] //in the vector bool mc = !(ext[2]->data().mass() > ZERO); VectorWaveFunction(v3, ext[2], outgoing, true, mc); ScalarWaveFunction sd(ext[3], outgoing, true); // Need to use rescale momenta to calculate matrix element setRescaledMomenta(ext); // wave functions with rescaled momenta VectorWaveFunction vr1(rescaledMomenta()[0], ext[0]->dataPtr(), incoming); VectorWaveFunction vr2(rescaledMomenta()[1], ext[1]->dataPtr(), incoming); VectorWaveFunction vr3(rescaledMomenta()[2], ext[2]->dataPtr(), outgoing); ScalarWaveFunction sr4(rescaledMomenta()[3], ext[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { vr1.reset(2*ihel); v1[ihel] = vr1; vr2.reset(2*ihel); v2[ihel] = vr2; vr3.reset(2*ihel); v3[2*ihel] = vr3; } if( !mc ) { vr3.reset(1); v3[1] = vr3; } double dummy(0.); ProductionMatrixElement pme = vv2vsHeME(v1, v2, v3, mc, sd, dummy,false); createVertex(pme,ext); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEff2ss.h�������������������������������������������������0000644�0001750�0001750�00000014635�11754474776�022563� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEff2ss.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEff2ss_H #define HERWIG_MEff2ss_H // // This is the declaration of the MEff2ss class. // #include "GeneralHardME.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractSSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractSSTVertex.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" namespace Herwig { using namespace ThePEG; using ThePEG::Helicity::SpinorWaveFunction; using ThePEG::Helicity::SpinorBarWaveFunction; using ThePEG::Helicity::ScalarWaveFunction; /** * The MEff2ss class is designed to implement the matrix element for a * fermion-antifermion to scalar-scalar hard process. It inherits from * GeneralHardME and implements the appropriate virtual functions for this * specific spin combination. * * @see \ref MEff2ssInterfaces "The interfaces" * defined for MEff2ss. * @see GeneralHardME */ class MEff2ss: public GeneralHardME { public: /** Vector of SpinorWaveFunctions objects */ typedef vector<SpinorWaveFunction> SpinorVector; /** Vector of SpinorBarWaveFunction objects. */ typedef vector<SpinorBarWaveFunction> SpinorBarVector; public: /** * The default constructor. */ MEff2ss() : fermion_(0), vector_(0), tensor_(0) {} /** @name Virtual functions required by the MEBase class. */ //@{ /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; //@} /** * Construct the vertex information for the spin correlations * @param sub Pointer to the relevent SubProcess */ virtual void constructVertex(tSubProPtr sub); protected: /** * A debugging function to test the value of me2 against an * analytic function. * @param me2 The value of the \f$ |\bar{\mathcal{M}}|^2 \f$ */ virtual void debug(double me2) 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(); 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEff2ss> initMEff2ss; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEff2ss & operator=(const MEff2ss &); private: /** * Calculate the matrix element * @param sp A vector of SpinorWaveFunction objects * @param sbar A vector of SpinorBarWaveFunction objects * @param sca1 A ScalarWaveFunction for an outgoing scalar * @param sca2 A ScalarWaveFunction for the other outgoing scalar * @param me2 The spin averaged matrix element * @param first Whether or not first call to decide if colour decomposition etc * should be calculated */ ProductionMatrixElement ff2ssME(const SpinorVector & sp, const SpinorBarVector & sbar, const ScalarWaveFunction & sca1, const ScalarWaveFunction & sca2, double & me2, bool first) const; private: /** * Storage for dynamically cast vertices for a diagram with intermediate * fermion */ vector<pair<AbstractFFSVertexPtr, AbstractFFSVertexPtr> > fermion_; /** * Storage for dynamically cast vertices for a diagram with intermediate * vector */ vector<pair<AbstractFFSVertexPtr, AbstractSSSVertexPtr> > scalar_; /** * Storage for dynamically cast vertices for a diagram with intermediate * vector */ vector<pair<AbstractFFVVertexPtr, AbstractVSSVertexPtr> > vector_; /** * Storage for dynamically cast vertices for a diagram with intermediate * tensor */ vector<pair<AbstractFFTVertexPtr, AbstractSSTVertexPtr> > tensor_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEff2ss. */ template <> struct BaseClassTrait<Herwig::MEff2ss,1> { /** Typedef of the first base class of MEff2ss. */ typedef Herwig::GeneralHardME NthBase; }; /** This template specialization informs ThePEG about the name of * the MEff2ss class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEff2ss> : public ClassTraitsBase<Herwig::MEff2ss> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEff2ss"; } }; /** @endcond */ } #endif /* HERWIG_MEff2ss_H */ ���������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEfv2fs.cc������������������������������������������������0000644�0001750�0001750�00000031742�11754474776�022722� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEfv2fs.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEfv2fs class. // #include "MEfv2fs.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; void MEfv2fs::doinit() { GeneralHardME::doinit(); scalar_.resize(numberOfDiags()); fermion_.resize(numberOfDiags()); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1, PDT::Spin1Half, PDT::Spin0)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1, PDT::Spin1Half, PDT::Spin0)); for(size_t ix = 0; ix < numberOfDiags(); ++ix) { HPDiagram curr = getProcessInfo()[ix]; if(curr.channelType == HPDiagram::tChannel) { AbstractFFSVertexPtr ffs = dynamic_ptr_cast<AbstractFFSVertexPtr>(curr.vertices.first); if( curr.intermediate->iSpin() == PDT::Spin0 ) { AbstractVSSVertexPtr vss = dynamic_ptr_cast<AbstractVSSVertexPtr>(curr.vertices.second); scalar_[ix] = make_pair(ffs, vss); } else { AbstractFFVVertexPtr ffv = dynamic_ptr_cast<AbstractFFVVertexPtr>(curr.vertices.second); fermion_[ix] = make_pair(ffs, ffv); } } else { AbstractFFVVertexPtr ffv = dynamic_ptr_cast<AbstractFFVVertexPtr>(curr.vertices.first); AbstractFFSVertexPtr ffs = dynamic_ptr_cast<AbstractFFSVertexPtr>(curr.vertices.second); fermion_[ix] = make_pair(ffs, ffv); } } } void MEfv2fs::doinitrun() { GeneralHardME::doinitrun(); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1, PDT::Spin1Half, PDT::Spin0)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1, PDT::Spin1Half, PDT::Spin0)); } double MEfv2fs::me2() const { //massless vector VecWFVector vecIn(2); ScalarWaveFunction scaOut(rescaledMomenta()[3], mePartonData()[3], Complex(1.,0.), outgoing); double fullme(0.); if( mePartonData()[0]->id() > 0 ) { SpinorVector spIn(2); SpinorBarVector spbOut(2); for(size_t ih = 0; ih < 2; ++ih) { spIn[ih] = SpinorWaveFunction(rescaledMomenta()[0], mePartonData()[0], ih, incoming); spbOut[ih] = SpinorBarWaveFunction(rescaledMomenta()[2], mePartonData()[2], ih, outgoing); vecIn[ih] = VectorWaveFunction(rescaledMomenta()[1], mePartonData()[1], 2*ih, incoming); } fv2fbsHeME(spIn, vecIn, spbOut, scaOut, fullme,true); } else { SpinorBarVector spbIn(2); SpinorVector spOut(2); for(size_t ih = 0; ih < 2; ++ih) { spbIn[ih] = SpinorBarWaveFunction(rescaledMomenta()[0], mePartonData()[0], ih, incoming); spOut[ih] = SpinorWaveFunction(rescaledMomenta()[2], mePartonData()[2], ih, outgoing); vecIn[ih] = VectorWaveFunction(rescaledMomenta()[1], mePartonData()[1], 2*ih, incoming); } fbv2fsHeME(spbIn, vecIn, spOut, scaOut, fullme,true); } #ifndef NDEBUG if( debugME() ) debug(fullme); #endif return fullme; } ProductionMatrixElement MEfv2fs::fv2fbsHeME(const SpinorVector & spIn, const VecWFVector & vecIn, const SpinorBarVector & spbOut, const ScalarWaveFunction & scaOut, double & me2, bool first) const { const Energy2 q2(scale()); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); me2 = 0.; for(unsigned int ihel1 = 0; ihel1 < 2; ++ihel1) { for(unsigned int ihel2 = 0; ihel2 < 2; ++ihel2) { for(unsigned int ohel1 = 0; ohel1 < 2; ++ohel1) { vector<Complex> flows(numberOfFlows(),0.); for(size_t ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if( current.channelType == HPDiagram::tChannel ) { if( offshell->iSpin() == PDT::Spin0 ) { ScalarWaveFunction interS = scalar_[ix].first-> evaluate(q2, 3, offshell, spIn[ihel1], spbOut[ohel1]); diag = scalar_[ix].second-> evaluate(q2, vecIn[ihel2], scaOut, interS); } else if( offshell->iSpin() == PDT::Spin1Half ) { SpinorBarWaveFunction interFB = fermion_[ix].second-> evaluate(q2, 3, offshell,spbOut[ohel1],vecIn[ihel2]); diag = fermion_[ix].first-> evaluate(q2, spIn[ihel1], interFB, scaOut); } else diag = 0.0; } else if( current.channelType == HPDiagram::sChannel ) { // check if take intermediate massless unsigned int propOpt = abs(offshell->id()) != abs(spIn[ihel1].particle()->id()) ? 1 : 5; SpinorWaveFunction interF = fermion_[ix].second-> evaluate(q2, propOpt, offshell, spIn[ihel1], vecIn[ihel2]); diag = fermion_[ix].first-> evaluate(q2, interF, spbOut[ohel1], scaOut); } else diag = 0.0; me[ix] += norm(diag); diagramME()[ix](ihel1, 2*ihel2, ohel1, 0) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](ihel1, 2*ihel2, ohel1, 0) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) for(size_t ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } ProductionMatrixElement MEfv2fs::fbv2fsHeME(const SpinorBarVector & spbIn, const VecWFVector & vecIn, const SpinorVector & spOut, const ScalarWaveFunction & scaOut, double & me2, bool first) const { const Energy2 q2(scale()); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); me2 = 0.; for(unsigned int ihel1 = 0; ihel1 < 2; ++ihel1) { for(unsigned int ihel2 = 0; ihel2 < 2; ++ihel2) { for(unsigned int ohel1 = 0; ohel1 < 2; ++ohel1) { vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if( current.channelType == HPDiagram::tChannel ) { if( offshell->iSpin() == PDT::Spin0 ) { ScalarWaveFunction interS = scalar_[ix].first-> evaluate(q2, 3, offshell, spOut[ohel1], spbIn[ihel1]); diag = scalar_[ix].second-> evaluate(q2, vecIn[ihel2], interS, scaOut); } else if( offshell->iSpin() == PDT::Spin1Half ) { SpinorBarWaveFunction interFB = fermion_[ix].first-> evaluate(q2, 3, offshell, spbIn[ihel1], scaOut); diag = fermion_[ix].second-> evaluate(q2, spOut[ohel1], interFB, vecIn[ihel2]); } else diag = 0.0; } else if( current.channelType == HPDiagram::sChannel ) { // check if take intermediate massless unsigned int propOpt = abs(offshell->id()) != abs(spbIn[ihel1].particle()->id()) ? 1 : 5; SpinorBarWaveFunction interFB = fermion_[ix].second-> evaluate(q2, propOpt, offshell, spbIn[ihel1], vecIn[ihel2]); diag = fermion_[ix].first-> evaluate(q2, spOut[ohel1], interFB, scaOut); } else diag = 0.0; me[ix] += norm(diag); diagramME()[ix](ihel1, 2*ihel2, ohel1, 0) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](ihel1, 2*ihel2, ohel1, 0) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) for(size_t ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } void MEfv2fs::persistentOutput(PersistentOStream & os) const { os << scalar_ << fermion_; } void MEfv2fs::persistentInput(PersistentIStream & is, int) { is >> scalar_ >> fermion_; } ClassDescription<MEfv2fs> MEfv2fs::initMEfv2fs; // Definition of the static class description member. void MEfv2fs::Init() { static ClassDocumentation<MEfv2fs> documentation ("This class implements the matrix element for a fermion-vector to " "a fermioin-scalar."); } void MEfv2fs::constructVertex(tSubProPtr subp) { ParticleVector external = hardParticles(subp); //calculate production ME VecWFVector vecIn; VectorWaveFunction(vecIn, external[1], incoming, false, true); ScalarWaveFunction scaOut(external[3], outgoing, true); //Need to use rescale momenta to calculate matrix element setRescaledMomenta(external); double dummy(0.); if( external[0]->id() > 0 ) { SpinorVector spIn; SpinorBarVector spbOut; SpinorWaveFunction (spIn, external[0], incoming, false); SpinorBarWaveFunction(spbOut, external[2], outgoing, true); SpinorWaveFunction spr (rescaledMomenta()[0], external[0]->dataPtr(), incoming); VectorWaveFunction vr (rescaledMomenta()[1], external[1]->dataPtr(), incoming); SpinorBarWaveFunction sbr (rescaledMomenta()[2], external[2]->dataPtr(), outgoing); scaOut = ScalarWaveFunction(rescaledMomenta()[3], external[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { spr.reset(ihel); spIn[ihel] = spr; vr.reset(2*ihel); vecIn[ihel] = vr; sbr.reset(ihel); spbOut[ihel] = sbr; } ProductionMatrixElement prodME = fv2fbsHeME(spIn, vecIn, spbOut, scaOut, dummy,false); createVertex(prodME,external); } else { SpinorBarVector spbIn; SpinorVector spOut; SpinorBarWaveFunction(spbIn, external[0], incoming, false); SpinorWaveFunction (spOut, external[2], outgoing, true); SpinorBarWaveFunction sbr (rescaledMomenta()[0], external[0]->dataPtr(), incoming); VectorWaveFunction vr (rescaledMomenta()[1], external[1]->dataPtr(), incoming); SpinorWaveFunction spr (rescaledMomenta()[2], external[2]->dataPtr(), outgoing); scaOut = ScalarWaveFunction(rescaledMomenta()[3], external[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { sbr.reset(ihel); spbIn[ihel] = sbr; vr.reset(2*ihel); vecIn[ihel] = vr; spr.reset(ihel); spOut[ihel] = spr; } ProductionMatrixElement prodME = fbv2fsHeME(spbIn, vecIn, spOut, scaOut, dummy,false); createVertex(prodME,external); } #ifndef NDEBUG if( debugME() ) debug(dummy/96.); #endif } void MEfv2fs::debug(double me2) const { if( !generator()->logfile().is_open() ) return; long id1 = abs(mePartonData()[0]->id()); long id4 = abs(mePartonData()[3]->id()); if( (id1 != 1 && id1 != 2) || mePartonData()[1]->id() != 21 || mePartonData()[2]->id() != 1000021 || (id4 != 1000001 && id4 != 1000002 && id4 != 2000001 && id4 != 2000002) ) return; tcSMPtr sm = generator()->standardModel(); double gs4 = sqr( 4.*Constants::pi*sm->alphaS(scale()) ); int Nc = sm->Nc(); Energy2 m3s = sqr(mePartonData()[2]->mass()); Energy2 m4s = sqr(mePartonData()[3]->mass()); //formula has vf->fs so swap t and u Energy2 s(sHat()), t3(uHat() - m3s), u4(tHat() - m4s); double analytic = -gs4*( u4 + 2.*(m4s - m3s)*(1. + m3s/t3 + m4s/u4) )* ( sqr(u4) + sqr(s) - sqr(t3)/sqr(Nc) )/s/t3/u4/4.; double diff = abs( analytic - me2); if( diff > 1e-4 ) { generator()->log() << mePartonData()[0]->PDGName() << "," << mePartonData()[1]->PDGName() << "->" << mePartonData()[2]->PDGName() << "," << mePartonData()[3]->PDGName() << " difference: " << setprecision(10) << diff << " ratio: " << analytic/me2 << '\n'; } } ������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEfv2vf.h�������������������������������������������������0000644�0001750�0001750�00000015460�11754474776�022566� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEfv2vf.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEfv2vf_H #define HERWIG_MEfv2vf_H // // This is the declaration of the MEfv2vf class. // #include "GeneralHardME.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" namespace Herwig { using namespace ThePEG; /** * This class implements the matrix element for a fermion and a vector * boson to a fermion and a vector boson. It inherits from GeneralHardME * and implements the appropriate virtual functions. * * @see \ref MEfv2vfInterfaces "The interfaces" * defined for MEfv2vf. */ class MEfv2vf: public GeneralHardME { public: /** A vector of SpinorWaveFunctions. */ typedef vector<Helicity::SpinorWaveFunction> SpinorVector; /** A vector of SpinorBarWaveFunctions. */ typedef vector<Helicity::SpinorBarWaveFunction> SpinorBarVector; /** A vector of VectorWaveFunctions. */ typedef vector<Helicity::VectorWaveFunction> VBVector; public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; //@} /** * Construct the vertex information for the spin correlations * @param sub Pointer to the relevent SubProcess */ virtual void constructVertex(tSubProPtr sub); private: /** @name Functions to calculate the Helicity MatrixElement.*/ //@{ /** * Calculate the matrix element for an incoming fermion * @param spIn A vector of spinors for the incoming fermion * @param vecIn A vector of VectorWaveFunctions for the incoming boson * @param spbOut A vector of SpinorBarWaveFunctions for the outgoing fermion * @param vecOut A vector of VectorWaveFunctions for the outgoing boson * @param mc If the outgoing vector is massless or not * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @param mesq The matrix element squared */ ProductionMatrixElement fv2vfHeME(const SpinorVector & spIn, const VBVector & vecIn, const VBVector & vecOut, bool mc, const SpinorBarVector & spbOut, double & mesq, bool first) const; /** * Calculate the matrix element for an incoming anti-fermion * @param spbIn A vector of SpinorBarWaveFunctions for the incoming anti-fermion * @param vecIn A vector of VectorWaveFunctions for the incoming boson * @param spOut A vector of Spinors for the outgoing antifermion * @param vecOut A vector of VectorWaveFunctions for the outgoing boson * @param mc If the outgoing vector is massless or not * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @param mesq The matrix element squared */ ProductionMatrixElement fbv2vfbHeME(const SpinorBarVector & spbIn, const VBVector & vecIn, const VBVector & vecOut, bool mc, const SpinorVector & spOut, double & mesq, bool first) const; //@} protected: /** * A debugging function to test the value of me2 against an * analytic function. * @param me2 The value of the \f$ |\bar{\mathcal{M}}|^2 \f$ */ virtual void debug(double me2) 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(); 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEfv2vf> initMEfv2vf; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEfv2vf & operator=(const MEfv2vf &); private: /** @name Store dynamically casted vertices. */ //@{ /** * A pair off FFVVertex pointers */ vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > fermion_; /** * A pair of FFVVertex, VVVertex pointers */ vector<pair<AbstractFFVVertexPtr, AbstractVVVVertexPtr> > vector_; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEfv2vf. */ template <> struct BaseClassTrait<Herwig::MEfv2vf,1> { /** Typedef of the first base class of MEfv2vf. */ typedef Herwig::GeneralHardME NthBase; }; /** This template specialization informs ThePEG about the name of * the MEfv2vf class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEfv2vf> : public ClassTraitsBase<Herwig::MEfv2vf> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEfv2vf"; } }; /** @endcond */ } #endif /* HERWIG_MEfv2vf_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEvv2ff.cc������������������������������������������������0000644�0001750�0001750�00000023434�11754474776�022724� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEvv2ff.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEvv2ff class. // #include "MEvv2ff.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using ThePEG::Helicity::TensorWaveFunction; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; void MEvv2ff::doinit() { GeneralHardME::doinit(); scalar_ .resize(numberOfDiags()); fermion_.resize(numberOfDiags()); vector_ .resize(numberOfDiags()); tensor_ .resize(numberOfDiags()); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1 , PDT::Spin1, PDT::Spin1Half, PDT::Spin1Half)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1 , PDT::Spin1, PDT::Spin1Half, PDT::Spin1Half)); for( size_t i = 0; i < numberOfDiags(); ++i ) { HPDiagram dg = getProcessInfo()[i]; if( dg.channelType == HPDiagram::tChannel ) { AbstractFFVVertexPtr ffv1 = dynamic_ptr_cast<AbstractFFVVertexPtr>(dg.vertices.first); AbstractFFVVertexPtr ffv2 = dynamic_ptr_cast<AbstractFFVVertexPtr>(dg.vertices.second); fermion_[i] = make_pair(ffv1, ffv2); } else if( dg.channelType == HPDiagram::sChannel ) { if( dg.intermediate->iSpin() == PDT::Spin0 ) { AbstractVVSVertexPtr vvs = dynamic_ptr_cast<AbstractVVSVertexPtr>(dg.vertices.first ); AbstractFFSVertexPtr ffs = dynamic_ptr_cast<AbstractFFSVertexPtr>(dg.vertices.second); scalar_[i] = make_pair(vvs,ffs); } else if( dg.intermediate->iSpin() == PDT::Spin1) { AbstractVVVVertexPtr vvv = dynamic_ptr_cast<AbstractVVVVertexPtr>(dg.vertices.first); AbstractFFVVertexPtr ffv = dynamic_ptr_cast<AbstractFFVVertexPtr>(dg.vertices.second); vector_[i] = make_pair(vvv,ffv); } else if(dg.intermediate->iSpin() == PDT::Spin2) { AbstractVVTVertexPtr vvt = dynamic_ptr_cast<AbstractVVTVertexPtr>(dg.vertices.first); AbstractFFTVertexPtr fft = dynamic_ptr_cast<AbstractFFTVertexPtr>(dg.vertices.second); tensor_[i] = make_pair(vvt,fft); } } } } void MEvv2ff::doinitrun() { GeneralHardME::doinitrun(); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin1Half, PDT::Spin1Half)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin1Half, PDT::Spin1Half)); } double MEvv2ff::me2() const { // Set up wavefuctions VBVector v1(2), v2(2); SpinorVector sp(2); SpinorBarVector sbar(2); for( size_t i = 0; i < 2; ++i ) { v1[i] = VectorWaveFunction(rescaledMomenta()[0],mePartonData()[0], 2*i, incoming); v2[i] = VectorWaveFunction(rescaledMomenta()[1],mePartonData()[1], 2*i, incoming); sbar[i] = SpinorBarWaveFunction(rescaledMomenta()[2], mePartonData()[2], i, outgoing); sp[i] = SpinorWaveFunction(rescaledMomenta()[3], mePartonData()[3], i, outgoing); } double full_me(0.); vv2ffME(v1, v2, sbar, sp, full_me,true); #ifndef NDEBUG if( debugME() ) debug(full_me); #endif return full_me; } ProductionMatrixElement MEvv2ff::vv2ffME(const VBVector & v1, const VBVector & v2, const SpinorBarVector & sbar,const SpinorVector & sp, double & me2, bool first) const { const Energy mass = sp[0].mass(); const Energy2 q2 = scale(); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); //sum over vector helicities for(unsigned int iv1 = 0; iv1 < 2; ++iv1) { for(unsigned int iv2 = 0; iv2 < 2; ++iv2) { //sum over fermion helicities for(unsigned int of1 = 0; of1 < 2; ++of1) { for(unsigned int of2 = 0; of2 < 2; ++of2) { vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; PDPtr offshell = current.intermediate; if(current.channelType == HPDiagram::tChannel && offshell->iSpin() == PDT::Spin1Half) { if(current.ordered.second) { SpinorWaveFunction interF = fermion_[ix].second-> evaluate(q2, 3, offshell, sp[of2], v2[iv2], mass); diag = fermion_[ix].first-> evaluate(q2, interF, sbar[of1], v1[iv1]); } else { SpinorWaveFunction interF = fermion_[ix].second-> evaluate(q2, 3, offshell, sp[of2], v1[iv1], mass); diag = fermion_[ix].first-> evaluate(q2, interF, sbar[of1], v2[iv2]); } } else if(current.channelType == HPDiagram::sChannel) { if(offshell->iSpin() == PDT::Spin0) { ScalarWaveFunction interS = scalar_[ix].first-> evaluate(q2, 1, offshell, v1[iv1], v2[iv2]); diag = scalar_[ix].second-> evaluate(q2, sp[of2], sbar[of1], interS); } else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interV = vector_[ix].first-> evaluate(q2, 1, offshell, v1[iv1], v2[iv2]); diag = vector_[ix].second-> evaluate(q2, sp[of2], sbar[of1], interV); } else if(offshell->iSpin() == PDT::Spin2) { TensorWaveFunction interT = tensor_[ix].first-> evaluate(q2, 1, offshell, v1[iv1], v2[iv2]); diag = tensor_[ix].second-> evaluate(q2, sp[of2], sbar[of1], interT); } } else diag = 0.; me[ix] += norm(diag); diagramME()[ix](2*iv1, 2*iv2, of1, of2) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](2*iv1, 2*iv2, of1, of2) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) for(size_t ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } void MEvv2ff::persistentOutput(PersistentOStream & os) const { os << scalar_ << fermion_ << vector_ << tensor_; } void MEvv2ff::persistentInput(PersistentIStream & is, int) { is >> scalar_ >> fermion_ >> vector_ >> tensor_; } ClassDescription<MEvv2ff> MEvv2ff::initMEvv2ff; // Definition of the static class description member. void MEvv2ff::Init() { static ClassDocumentation<MEvv2ff> documentation ("The MEvv2ff class handles the ME calculation for the general " "spin configuration vector-vector to fermion-antifermion\n."); } void MEvv2ff::constructVertex(tSubProPtr sub) { ParticleVector ext = hardParticles(sub); // wavefunction with real momenta VBVector v1, v2; VectorWaveFunction(v1, ext[0], incoming, false, true); VectorWaveFunction(v2, ext[1], incoming, false, true); SpinorBarVector sbar; SpinorBarWaveFunction(sbar, ext[2], outgoing, true); SpinorVector sp; SpinorWaveFunction(sp, ext[3], outgoing, true); // rescale momenta setRescaledMomenta(ext); // wavefuncions with rescaled momenta VectorWaveFunction v1r(rescaledMomenta()[0], ext[0]->dataPtr(), incoming); VectorWaveFunction v2r(rescaledMomenta()[1], ext[1]->dataPtr(), incoming); SpinorBarWaveFunction sbr(rescaledMomenta()[2], ext[2]->dataPtr(), outgoing); SpinorWaveFunction spr(rescaledMomenta()[3], ext[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { v1r.reset(2*ihel); v1[ihel] = v1r; v2r.reset(2*ihel); v2[ihel] = v2r; sbr.reset(ihel); sbar[ihel] = sbr; spr.reset(ihel); sp[ihel] = spr; } double dummy(0.); ProductionMatrixElement pme = vv2ffME(v1, v2, sbar, sp, dummy,false); #ifndef NDEBUG if( debugME() ) debug(dummy); #endif createVertex(pme,ext); } void MEvv2ff::debug(double me2) const { if( !generator()->logfile().is_open() ) return; long id3(abs(mePartonData()[2]->id())), id4(abs(mePartonData()[3]->id())); if( mePartonData()[0]->id() != 21 || mePartonData()[1]->id() != 21 || id3 != id4 || (id3 != 1000021 && id3 != 5100002 && id3 != 5100001 && id3 != 6100002 && id3 != 6100001) ) return; tcSMPtr sm = generator()->standardModel(); double gs4 = sqr( 4.*Constants::pi*sm->alphaS(scale()) ); int Nc = sm->Nc(); Energy2 s(sHat()); Energy2 mf2 = meMomenta()[2].m2(); Energy4 spt2 = uHat()*tHat() - sqr(mf2); Energy2 t3(tHat() - mf2), u4(uHat() - mf2); double analytic(0.); if( id3 == 1000021 ) { analytic = gs4*sqr(Nc)*u4*t3* ( sqr(u4) + sqr(t3) + 4.*mf2*s*spt2/u4/t3 ) * ( 1./sqr(s*t3) + 1./sqr(s*u4) + 1./sqr(u4*t3) )/2./(Nc*Nc - 1.); } else { double brac = sqr(s)/6./t3/u4 - 3./8.; analytic = gs4*( -4.*sqr(mf2)*brac/t3/u4 + 4.*mf2*brac/s + brac - 1./3. + 3.*t3*u4/4/s/s); } double diff = abs(analytic - me2); if( diff > 1e-4 ) { generator()->log() << mePartonData()[0]->PDGName() << "," << mePartonData()[1]->PDGName() << "->" << mePartonData()[2]->PDGName() << "," << mePartonData()[3]->PDGName() << " difference: " << setprecision(10) << diff << " ratio: " << analytic/me2 << '\n'; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEvv2ff.h�������������������������������������������������0000644�0001750�0001750�00000013763�11754474776�022572� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEvv2ff.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEvv2ff_H #define HERWIG_MEvv2ff_H // // This is the declaration of the MEvv2ff class. // #include "GeneralHardME.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" namespace Herwig { using namespace ThePEG; using ThePEG::Helicity::SpinorWaveFunction; using ThePEG::Helicity::SpinorBarWaveFunction; using ThePEG::Helicity::VectorWaveFunction; /** * This class is designed to implement the matrix element for the * \f$2 \rightarrow 2\f$ process vector-vector to fermion-antifermion pair. It * inherits from GeneralHardME and implements the me2() virtual function. * * @see \ref MEvv2ffInterfaces "The Interfaces" * defined for MEvv2ff. * @see GeneralHardME * */ class MEvv2ff: public GeneralHardME { public: /** A Vector of VectorWaveFunction objects. */ typedef vector<VectorWaveFunction> VBVector; /** A vector of SpinorBarWaveFunction objects. */ typedef vector<SpinorWaveFunction> SpinorVector; /** A vector of SpinorBarWaveFunction objects. */ typedef vector<SpinorBarWaveFunction> SpinorBarVector; public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; //@} /** * Construct the vertex information for the spin correlations * @param sub Pointer to the relevent SubProcess */ virtual void constructVertex(tSubProPtr sub); private: /** * Calculate the value of the matrix element */ ProductionMatrixElement vv2ffME(const VBVector & v1, const VBVector & v2, const SpinorBarVector & sbar, const SpinorVector & sp, double & me2, bool first) const; protected: /** * A debugging function to test the value of me2 against an * analytic function. * @param me2 The value of the \f$ |\bar{\mathcal{M}}|^2 \f$ */ virtual void debug(double me2) 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(); 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEvv2ff> initMEvv2ff; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEvv2ff & operator=(const MEvv2ff &); private: /** @name Dynamically casted vertices. */ //@{ /** * Intermediate scalar */ vector<pair<AbstractVVSVertexPtr, AbstractFFSVertexPtr > > scalar_; /** * Intermediate fermion */ vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > fermion_; /** * Intermediate vector */ vector<pair<AbstractVVVVertexPtr, AbstractFFVVertexPtr> > vector_; /** * Intermediate tensor */ vector<pair<AbstractVVTVertexPtr, AbstractFFTVertexPtr> > tensor_; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEvv2ff. */ template <> struct BaseClassTrait<Herwig::MEvv2ff,1> { /** Typedef of the first base class of MEvv2ff. */ typedef Herwig::GeneralHardME NthBase; }; /** This template specialization informs ThePEG about the name of * the MEvv2ff class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEvv2ff> : public ClassTraitsBase<Herwig::MEvv2ff> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEvv2ff"; } }; /** @endcond */ } #endif /* HERWIG_MEvv2ff_H */ �������������herwig++-2.6.0.orig/MatrixElement/General/GeneralQQHiggs.fh�����������������������������������������0000644�0001750�0001750�00000000464�11754474776�024260� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the GeneralQQHiggs class. // #ifndef HERWIG_GeneralQQHiggs_FH #define HERWIG_GeneralQQHiggs_FH #include "ThePEG/Config/ThePEG.h" namespace Herwig { class GeneralQQHiggs; ThePEG_DECLARE_POINTERS(Herwig::GeneralQQHiggs,GeneralQQHiggsPtr); } #endif ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEff2vv.cc������������������������������������������������0000644�0001750�0001750�00000023743�11754474776�022727� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEff2vv.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEff2vv class. // #include "MEff2vv.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using ThePEG::Helicity::ScalarWaveFunction; using ThePEG::Helicity::TensorWaveFunction; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; void MEff2vv::doinit() { GeneralHardME::doinit(); fermion_.resize(numberOfDiags()); vector_.resize(numberOfDiags()); tensor_.resize(numberOfDiags()); scalar_.resize(numberOfDiags()); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1, PDT::Spin1)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1, PDT::Spin1)); for(HPCount i = 0; i < numberOfDiags(); ++i) { const HPDiagram & current = getProcessInfo()[i]; if(current.channelType == HPDiagram::tChannel) { if(current.intermediate->iSpin() == PDT::Spin1Half) fermion_[i] = make_pair(dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.second)); } else if(current.channelType == HPDiagram::sChannel) { if(current.intermediate->iSpin() == PDT::Spin0) scalar_[i] = make_pair(dynamic_ptr_cast<AbstractFFSVertexPtr>(current.vertices.first ), dynamic_ptr_cast<AbstractVVSVertexPtr>(current.vertices.second)); if(current.intermediate->iSpin() == PDT::Spin1) vector_[i] = make_pair(dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractVVVVertexPtr>(current.vertices.second)); if(current.intermediate->iSpin() == PDT::Spin2) tensor_[i] = make_pair(dynamic_ptr_cast<AbstractFFTVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractVVTVertexPtr>(current.vertices.second)); } } } void MEff2vv::doinitrun() { GeneralHardME::doinitrun(); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1, PDT::Spin1)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1, PDT::Spin1)); } double MEff2vv::me2() const { SpinorVector sp(2); SpinorBarVector sbar(2); // vector bool mc = !(mePartonData()[2]->mass() > ZERO); bool md = !(mePartonData()[3]->mass() > ZERO); VBVector v1(3), v2(3); for( unsigned int i = 0; i < 2; ++i ) { sp[i] = SpinorWaveFunction(rescaledMomenta()[0], mePartonData()[0], i, incoming); sbar[i] = SpinorBarWaveFunction(rescaledMomenta()[1], mePartonData()[1], i, incoming); v1[2*i] = VectorWaveFunction(rescaledMomenta()[2], mePartonData()[2],2*i , outgoing); v2[2*i] = VectorWaveFunction(rescaledMomenta()[3], mePartonData()[3], 2*i, outgoing); } if( !mc ) v1[1] = VectorWaveFunction(rescaledMomenta()[2], mePartonData()[2], 1, outgoing); if( !md ) v2[1] = VectorWaveFunction(rescaledMomenta()[3], mePartonData()[3], 1, outgoing); double full_me(0.); ff2vvME(sp, sbar, v1, mc, v2, md, full_me,true); #ifndef NDEBUG if( debugME() ) debug(full_me); #endif return full_me; } ProductionMatrixElement MEff2vv::ff2vvME(const SpinorVector & sp, const SpinorBarVector sbar, const VBVector & v1, bool m1, const VBVector & v2, bool m2, double & me2, bool first) const { const Energy2 q2 = scale(); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); me2 = 0.; //Loop over helicities and calculate diagrams for(unsigned int if1 = 0; if1 < 2; ++if1) { for(unsigned int if2 = 0; if2 < 2; ++if2) { for(unsigned int vh1 = 0; vh1 < 3; ++vh1) { if( vh1 == 1 && m1 ) ++vh1; for(unsigned int vh2 = 0; vh2 < 3; ++vh2) { if( vh2 == 1 && m2 ) ++vh2; vector<Complex> flows(numberOfFlows(),0.); //loop and calculate diagrams for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; Complex diag(0.); if(current.channelType == HPDiagram::tChannel) { if(current.intermediate->iSpin() == PDT::Spin1Half) { if(current.ordered.second) { SpinorWaveFunction interF = fermion_[ix].first-> evaluate(q2, 3, offshell, sp[if1], v1[vh1]); diag = fermion_[ix].second-> evaluate(q2, interF, sbar[if2],v2[vh2]); } else { SpinorWaveFunction interF = fermion_[ix].first-> evaluate(q2, 3 , offshell, sp[if1], v2[vh2]); diag = fermion_[ix].second-> evaluate(q2, interF, sbar[if2],v1[vh1]); } } } else if(current.channelType == HPDiagram::sChannel) { if(current.intermediate->iSpin() == PDT::Spin0) { ScalarWaveFunction interS = scalar_[ix].first-> evaluate(q2, 1, offshell, sp[if1], sbar[if2]); diag = scalar_[ix].second-> evaluate(q2, v1[vh1], v2[vh2],interS); } else if(current.intermediate->iSpin() == PDT::Spin1) { VectorWaveFunction interV = vector_[ix].first-> evaluate(q2, 1, offshell, sp[if1], sbar[if2]); diag = vector_[ix].second-> evaluate(q2, v1[vh1],v2[vh2], interV); } else if(current.intermediate->iSpin() == PDT::Spin2) { TensorWaveFunction interT = tensor_[ix].first-> evaluate(q2, 1, offshell, sp[if1], sbar[if2]); diag = tensor_[ix].second-> evaluate(q2, v1[vh1], v2[vh2],interT); } } me[ix] += norm(diag); diagramME()[ix](if1, if2, vh1, vh2) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](if1, if2, vh1, vh2) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) for(size_t ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } void MEff2vv::persistentOutput(PersistentOStream & os) const { os << fermion_ << vector_ << tensor_ << scalar_; } void MEff2vv::persistentInput(PersistentIStream & is, int) { is >> fermion_ >> vector_ >> tensor_ >> scalar_; } ClassDescription<MEff2vv> MEff2vv::initMEff2vv; // Definition of the static class description member. void MEff2vv::Init() { static ClassDocumentation<MEff2vv> documentation ("This class implements the matrix element calculation of the 2->2 " "process, fermion-antifermion -> vector vector"); } void MEff2vv::constructVertex(tSubProPtr sub) { //get particles ParticleVector ext = hardParticles(sub); vector<SpinorWaveFunction> sp; SpinorWaveFunction(sp, ext[0], incoming, false); vector<SpinorBarWaveFunction> sbar; SpinorBarWaveFunction(sbar, ext[1], incoming, false); vector<VectorWaveFunction> v1, v2; bool mc = !(ext[2]->data().mass() > ZERO); bool md = !(ext[3]->data().mass() > ZERO); VectorWaveFunction(v1, ext[2], outgoing, true, mc); VectorWaveFunction(v2, ext[3], outgoing, true, md); //Need to use rescale momenta to calculate matrix element setRescaledMomenta(ext); // wavefunctions with rescaled momenta SpinorWaveFunction spr (rescaledMomenta()[0], ext[0]->dataPtr(), incoming); SpinorBarWaveFunction sbr(rescaledMomenta()[1], ext[1]->dataPtr(), incoming); VectorWaveFunction vr1 (rescaledMomenta()[2], ext[2]->dataPtr(), outgoing); VectorWaveFunction vr2 (rescaledMomenta()[3], ext[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { spr.reset(ihel); sp[ihel] = spr; sbr.reset(ihel); sbar[ihel] = sbr; vr1.reset(2*ihel); v1[2*ihel] = vr1; vr2.reset(2*ihel); v2[2*ihel] = vr2; } if( !mc ) { vr1.reset(1); v1[1] = vr1; } if( !md ) { vr2.reset(1); v2[1] = vr2; } double dummy(0.); ProductionMatrixElement pme = ff2vvME(sp, sbar, v1, mc, v2, md, dummy,false); #ifndef NDEBUG if( debugME() ) debug(dummy); #endif createVertex(pme,ext); } void MEff2vv::debug(double me2) const { if( !generator()->logfile().is_open() ) return; if( (mePartonData()[0]->id() != 1 && mePartonData()[0]->id() != 2) || (mePartonData()[1]->id() != -1 && mePartonData()[1]->id() != -2) || mePartonData()[2]->id() != 5100021 || mePartonData()[3]->id() != 5100021 ) return; tcSMPtr sm = generator()->standardModel(); double gs4 = sqr( 4.*Constants::pi*sm->alphaS(scale()) ); Energy2 s(sHat()); Energy2 mf2 = meMomenta()[2].m2(); Energy2 t3(tHat() - mf2), u4(uHat() - mf2); double analytic = gs4*( mf2*( (57.*s/t3/u4) - (4.*s*s*s/t3/t3/u4/u4) - (108./s) ) + (20.*s*s/t3/u4) - 93. + (108.*t3*u4/s/s) )/27.; double diff = abs( analytic - me2 ); if( diff > 1e-4 ) { generator()->log() << mePartonData()[0]->PDGName() << "," << mePartonData()[1]->PDGName() << "->" << mePartonData()[2]->PDGName() << "," << mePartonData()[3]->PDGName() << " difference: " << setprecision(10) << diff << " ratio: " << analytic/me2 << '\n'; } } �����������������������������herwig++-2.6.0.orig/MatrixElement/General/GeneralHardME.h�������������������������������������������0000644�0001750�0001750�00000030645�11754474776�023713� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // GeneralHardME.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_GeneralHardME_H #define HERWIG_GeneralHardME_H // // This is the declaration of the GeneralHardME class. // #include "Herwig++/MatrixElement/HwMEBase.h" #include "ThePEG/Utilities/Exception.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Models/General/HPDiagram.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "Herwig++/MatrixElement/HardVertex.h" #include "ThePEG/EventRecord/SpinInfo.h" #include "ThePEG/PDF/PolarizedBeamParticleData.h" #include "GeneralHardME.fh" namespace Herwig { using namespace ThePEG; using Helicity::VertexBasePtr; /** * This defines the GeneralHardME class that is designed to serve as a * base class for matrix elements of specific spin structures when those * structures are created by a a general model, i.e. a SUSY production * ME. It stores a vector of diagram structures that contain the required * to calculate the matrix element. * * @see HwMEBase */ class GeneralHardME: public HwMEBase { public: /** * Convenient typedef for size_type of HPDiagram vector */ typedef vector<HPDiagram>::size_type HPCount; /** * Enum for the possible colour structures */ enum ColourStructure {UNDEFINED, Colour11to11,Colour11to33bar,Colour11to88, Colour33to33,Colour33barto11,Colour33barto33bar, Colour33barto66bar, Colour33barto6bar6, Colour33to61, Colour3bar3barto6bar1, Colour33to16, Colour3bar3barto16bar, Colour38to3bar6, Colour38to63bar, Colour33barto18,Colour33barto81,Colour33barto88, Colour38to13,Colour38to31, Colour38to83,Colour38to38, Colour3bar3barto3bar3bar, Colour3bar8to13bar,Colour3bar8to3bar1, Colour3bar8to83bar,Colour3bar8to3bar8, Colour88to11,Colour88to33bar, Colour88to66bar,Colour88to88, Colour88to18,Colour88to81}; public: /** * The default constructor. */ GeneralHardME(); public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const = 0; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const { if(scaleChoice_==0) { return scaleFactor_*sHat(); } else { assert( scaleChoice_== 1 ); Energy2 mbar = 0.5*(meMomenta()[2].mass2()+meMomenta()[3].mass2()); Energy2 t = 0.5*(tHat()-mbar); Energy2 u = 0.5*(uHat()-mbar); Energy2 s = 0.5*sHat(); return scaleFactor_*4.*s*t*u/(s*s+t*t+u*u); } } /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; //@} /** * Set the diagrams and matrix of colour factors. * @param process vector of MEDiagram with information that * will allow the diagrams to be created in the specific matrix element * @param colour The colour structure for the process * @param debug Whether to compare the numerical answer to an analytical * formula (This is only stored for certain processes. It is intended * for quick checks of the matrix elements). * @param scaleOption The option of what scale to use * @param scaleFactor The prefactor for the scale */ void setProcessInfo(const vector<HPDiagram> & process, ColourStructure colour, bool debug, unsigned int scaleOption, double scaleFactor); 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 Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} protected: /** * A debugging function to test the value of me2 against an * analytic function. This is to be overidden in an inheriting class. */ virtual void debug(double ) const {} protected: /** * Access the HPDiagrams that store the required information * to create the diagrams */ const vector<HPDiagram> & getProcessInfo() const { return diagrams_; } /** * Return the incoming pair * @return Pair of particle ids for the incoming particles */ pair<long, long> getIncoming() const { return incoming_; } /** * Return the outgoing pair * @return Pair of particle ids for the outgoing particles */ pair<long, long> getOutgoing() const { return outgoing_; } /** * Return the matrix of colour factors */ const vector<DVector> & getColourFactors() const { return colour_; } /** * Get the number of diagrams in this process */ HPCount numberOfDiags() const { return numberOfDiagrams_; } /** * Access number of colour flows */ size_t numberOfFlows() const { return numberOfFlows_; } /** * Whether to print the debug information */ bool debugME() const { return debug_; } /** * Set/Get Info on the selected diagram and colour flow */ //@{ /** * Colour flow */ unsigned int colourFlow() const {return flow_;} /** * Colour flow */ void colourFlow(unsigned int flow) const {flow_=flow;} /** * Diagram */ unsigned int diagram() const {return diagram_;} /** * Diagram */ void diagram(unsigned int diag) const {diagram_=diag;} //@} /** * Calculate weight and select colour flow */ double selectColourFlow(vector<double> & flow, vector<double> & me,double average) const; /** * Access to the colour flow matrix element */ vector<ProductionMatrixElement> & flowME() const { return flowME_; } /** * Access to the diagram matrix element */ vector<ProductionMatrixElement> & diagramME() const { return diagramME_; } /** * Access to the colour structure */ ColourStructure colour() const {return colourStructure_;} /** * Extract the paricles from the subprocess */ ParticleVector hardParticles(tSubProPtr subp) { ParticleVector output(4); output[0] = subp->incoming().first; output[1] = subp->incoming().second; output[2] = subp->outgoing()[0]; output[3] = subp->outgoing()[1]; //ensure particle ordering is the same as it was when //the diagrams were created if( output[0]->id() != getIncoming().first ) swap(output[0], output[1]); if( output[2]->id() != getOutgoing().first ) swap(output[2], output[3]); // return answer return output; } /** * Set the rescaled momenta */ void setRescaledMomenta(const ParticleVector & external) { cPDVector data(4); vector<Lorentz5Momentum> momenta(4); for( size_t i = 0; i < 4; ++i ) { data[i] = external[i]->dataPtr(); momenta[i] = external[i]->momentum(); } rescaleMomenta(momenta, data); } /** * Create the vertes */ void createVertex(ProductionMatrixElement & me, ParticleVector & external) { HardVertexPtr hardvertex = new_ptr(HardVertex()); hardvertex->ME(me); for(ParticleVector::size_type i = 0; i < 4; ++i) { tSpinPtr spin = external[i]->spinInfo(); if(i<2) { tcPolarizedBeamPDPtr beam = dynamic_ptr_cast<tcPolarizedBeamPDPtr>(external[i]->dataPtr()); if(beam) spin->rhoMatrix() = beam->rhoMatrix(); } spin->productionVertex(hardvertex); } } private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<GeneralHardME> initGeneralHardME; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GeneralHardME & operator=(const GeneralHardME &); private: /** * External particles */ //@{ /** * Store incoming particles */ pair<long, long> incoming_; /** * Store the outgoing particles */ pair<long, long> outgoing_; //@} /** * Diagrams */ //@{ /** * Store all diagrams as a vector of structures */ vector<HPDiagram> diagrams_; /** * Store the number of diagrams for fast retrieval */ HPCount numberOfDiagrams_; //@} /** * Colour information */ //@{ /** * The colour structure */ ColourStructure colourStructure_; /** * Store colour factors for ME calc. */ vector<DVector> colour_; /** * The number of colourflows. */ unsigned int numberOfFlows_; //@} /** * Whether to test the value of me2 against the analytical function */ bool debug_; /** * The scale chocie */ unsigned int scaleChoice_; /** * The scale factor */ double scaleFactor_; /** * Info on the selected diagram and colour flow */ //@{ /** * Colour flow */ mutable unsigned int flow_; /** * Diagram */ mutable unsigned int diagram_; //@} /** * Storage of the matrix elements */ //@{ /** * Matrix elements for the different colour flows */ mutable vector<ProductionMatrixElement> flowME_; /** * Matrix elements for the different Feynman diagrams */ mutable vector<ProductionMatrixElement> diagramME_; //@} }; /** Exception class to indicate a problem has occurred with setting up to matrix element.*/ class MEException : public Exception {}; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of GeneralHardME. */ template <> struct BaseClassTrait<Herwig::GeneralHardME,1> { /** Typedef of the first base class of GeneralHardME. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the GeneralHardME class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::GeneralHardME> : public ClassTraitsBase<Herwig::GeneralHardME> { /** Return a platform-independent class name */ static string className() { return "Herwig::GeneralHardME"; } }; /** @endcond */ } #endif /* HERWIG_GeneralHardME_H */ �������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEff2ss.cc������������������������������������������������0000644�0001750�0001750�00000025566�11754474776�022726� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEff2ss.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEff2ss class. // #include "MEff2ss.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using ThePEG::Helicity::VectorWaveFunction; using ThePEG::Helicity::TensorWaveFunction; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; void MEff2ss::doinit() { GeneralHardME::doinit(); fermion_.resize(numberOfDiags()); scalar_ .resize(numberOfDiags()); vector_ .resize(numberOfDiags()); tensor_ .resize(numberOfDiags()); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin0 , PDT::Spin0 )); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin0 , PDT::Spin0 )); for(HPCount i = 0; i < numberOfDiags(); ++i) { const HPDiagram & current = getProcessInfo()[i]; if(current.channelType == HPDiagram::tChannel) { if(current.intermediate->iSpin() == PDT::Spin1Half) fermion_[i] = make_pair(dynamic_ptr_cast<AbstractFFSVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractFFSVertexPtr>(current.vertices.second)); else throw InitException() << "MEFF2ss:doinit() - t-channel" << " intermediate must be a fermion " << Exception::runerror; } else if(current.channelType == HPDiagram::sChannel) { if(current.intermediate->iSpin() == PDT::Spin0) scalar_[i] = make_pair(dynamic_ptr_cast<AbstractFFSVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractSSSVertexPtr>(current.vertices.second)); else if(current.intermediate->iSpin() == PDT::Spin1) vector_[i] = make_pair(dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractVSSVertexPtr>(current.vertices.second)); else if(current.intermediate->iSpin() == PDT::Spin2) tensor_[i] = make_pair(dynamic_ptr_cast<AbstractFFTVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractSSTVertexPtr>(current.vertices.second)); else throw InitException() << "MEFF2ss:doinit() - s-channel" << " intermediate must be a vector or tensor " << Exception::runerror; } else throw InitException() << "MEFF2ss:doinit() - Cannot find correct " << "channel from diagram. Vertex not cast! " << Exception::runerror; } } void MEff2ss::doinitrun() { GeneralHardME::doinitrun(); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin0 , PDT::Spin0 )); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin0 , PDT::Spin0 )); } double MEff2ss::me2() const { // first setup wavefunctions for external particles SpinorVector sp(2); SpinorBarVector sbar(2); for( unsigned int i = 0; i < 2; ++i ) { sp[i] = SpinorWaveFunction (rescaledMomenta()[0], mePartonData()[0], i, incoming); sbar[i] = SpinorBarWaveFunction(rescaledMomenta()[1], mePartonData()[1], i, incoming); } ScalarWaveFunction sca1(rescaledMomenta()[2], mePartonData()[2], 1., outgoing); ScalarWaveFunction sca2(rescaledMomenta()[3], mePartonData()[3], 1., outgoing); // calculate the ME double full_me(0.); ff2ssME(sp, sbar, sca1, sca2, full_me,true); // debugging tests if needed #ifndef NDEBUG if( debugME() ) debug(full_me); #endif // return the answer return full_me; } ProductionMatrixElement MEff2ss::ff2ssME(const SpinorVector & sp, const SpinorBarVector & sbar, const ScalarWaveFunction & sca1, const ScalarWaveFunction & sca2, double & me2, bool first) const { // scale const Energy2 q2(scale()); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); // flow over the helicities and diagrams for(unsigned int if1 = 0; if1 < 2; ++if1) { for(unsigned int if2 = 0; if2 < 2; ++if2) { vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr internal(current.intermediate); if(current.channelType == HPDiagram::tChannel && internal->iSpin() == PDT::Spin1Half) { if(current.ordered.second) { SpinorBarWaveFunction interFB = fermion_[ix].second-> evaluate(q2, 3, internal, sbar[if2], sca2); diag = fermion_[ix].first->evaluate(q2, sp[if1], interFB, sca1); } else { SpinorBarWaveFunction interFB = fermion_[ix].second-> evaluate(q2, 3, internal, sbar[if2], sca1); diag = fermion_[ix].first->evaluate(q2, sp[if1], interFB, sca2); } } else if(current.channelType == HPDiagram::sChannel) { if(internal->iSpin() == PDT::Spin0) { ScalarWaveFunction interS = scalar_[ix].first-> evaluate(q2, 1, internal, sp[if1], sbar[if2]); diag = scalar_[ix].second->evaluate(q2, interS, sca2, sca1); } else if(internal->iSpin() == PDT::Spin1) { VectorWaveFunction interV = vector_[ix].first-> evaluate(q2, 1, internal, sp[if1], sbar[if2]); diag = vector_[ix].second->evaluate(q2, interV, sca2, sca1); } else if(internal->iSpin() == PDT::Spin2) { TensorWaveFunction interT = tensor_[ix].first-> evaluate(q2, 1, internal, sp[if1], sbar[if2]); diag = tensor_[ix].second ->evaluate(q2, sca2, sca1, interT); } } // diagram me[ix] += norm(diag); diagramME()[ix](if1,if2,0,0) = diag; // contributions to the different colour flows for(unsigned int iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](if1,if2,0,0) = flows[iy]; // contribution to the squared matrix element for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) for(unsigned int ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } void MEff2ss::persistentOutput(PersistentOStream & os) const { os << fermion_ << scalar_ << vector_ << tensor_; } void MEff2ss::persistentInput(PersistentIStream & is, int) { is >> fermion_ >> scalar_ >> vector_ >> tensor_; } ClassDescription<MEff2ss> MEff2ss::initMEff2ss; // Definition of the static class description member. void MEff2ss::Init() { static ClassDocumentation<MEff2ss> documentation ("MEff2ss implements the ME calculation of the fermion-antifermion " "to scalar-scalar hard process."); } void MEff2ss::constructVertex(tSubProPtr sub) { //get particles ParticleVector ext = hardParticles(sub); //First calculate wave functions with off-shell momenta //to calculate correct spin information SpinorVector sp; SpinorBarVector sbar; SpinorWaveFunction (sp , ext[0], incoming, false); SpinorBarWaveFunction (sbar, ext[1], incoming, false); ScalarWaveFunction sca1( ext[2], outgoing, true); ScalarWaveFunction sca2( ext[3], outgoing, true); // Need to use rescale momenta to calculate matrix element setRescaledMomenta(ext); // wave functions with rescaled momenta SpinorWaveFunction spr(rescaledMomenta()[0], ext[0]->dataPtr(), incoming); SpinorBarWaveFunction sbr(rescaledMomenta()[1], ext[1]->dataPtr(), incoming); sca1 = ScalarWaveFunction(rescaledMomenta()[2], ext[2]->dataPtr(), outgoing); sca2 = ScalarWaveFunction(rescaledMomenta()[3], ext[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { spr.reset(ihel); sp[ihel] = spr; sbr.reset(ihel); sbar[ihel] = sbr; } double dummy(0.); ProductionMatrixElement pme = ff2ssME(sp, sbar, sca1, sca2, dummy,false); #ifndef NDEBUG if( debugME() ) debug(dummy/36.); #endif createVertex(pme,ext); } void MEff2ss::debug(double me2) const { if( !generator()->logfile().is_open() ) return; long id1 = mePartonData()[0]->id(); long id2 = mePartonData()[1]->id(); long id3 = mePartonData()[2]->id(); long id4 = mePartonData()[3]->id(); if( (abs(id1) != 1 && abs(id1) != 2) || (abs(id2) != 1 && abs(id2) != 2) || ( abs(id3) != 1000001 && abs(id3) != 1000002 && abs(id3) != 2000001 && abs(id3) != 2000002 ) || ( abs(id4) != 1000001 && abs(id4) != 1000002 && abs(id4) != 2000001 && abs(id4) != 2000002 ) ) return; tcSMPtr sm = generator()->standardModel(); double gs4 = sqr( 4.*Constants::pi*sm->alphaS(scale()) ); int Nc = sm->Nc(); double Cf = (sqr(Nc) - 1)/2./Nc; Energy2 s(sHat()); Energy2 mgos = sqr( getParticleData(ParticleID::SUSY_g)->mass()); Energy2 m3s = sqr(mePartonData()[2]->mass()); Energy2 m4s = sqr(mePartonData()[3]->mass()); Energy4 spt2 = uHat()*tHat() - m3s*m4s; Energy2 tgl(tHat() - mgos), ugl(uHat() - mgos); unsigned int alpha = abs(id3)/1000000; unsigned int beta = abs(id4)/1000000; bool iflav = ( abs(id1) == abs(id2) ); unsigned int oflav = ( abs(id3) - abs(id1) ) % 10; double analytic(0.); if( alpha != beta ) { if( ( id1 > 0 && id2 > 0) || ( id1 < 0 && id2 < 0) ) { analytic = spt2/sqr(tgl); if( iflav ) analytic += spt2/sqr(ugl); } else { analytic = s*mgos/sqr(tgl); } } else { if( oflav != 0 ) { analytic = 2.*spt2/sqr(s); } else if( ( id1 > 0 && id2 > 0) || ( id1 < 0 && id2 < 0) ) { analytic = s*mgos/sqr(tgl); if( iflav ) { analytic += s*mgos/sqr(ugl) - 2.*s*mgos/Nc/tgl/ugl; } analytic /= ( iflav ? 2. : 1.); } else { analytic = spt2/sqr(tgl); if( iflav ) { analytic += 2.*spt2/sqr(s) - 2.*spt2/Nc/s/tgl; } } } analytic *= gs4*Cf/2./Nc; double diff = abs(analytic - me2); if( diff > 1e-4 ) { generator()->log() << mePartonData()[0]->PDGName() << "," << mePartonData()[1]->PDGName() << "->" << mePartonData()[2]->PDGName() << "," << mePartonData()[3]->PDGName() << " difference: " << setprecision(10) << diff << " ratio: " << analytic/me2 << '\n'; } } ������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEfv2tf.h�������������������������������������������������0000644�0001750�0001750�00000015131�11754474776�022557� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEfv2tf_H #define HERWIG_MEfv2tf_H // // This is the declaration of the MEfv2tf class. // #include "GeneralHardME.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVTVertex.h" namespace Herwig { using namespace ThePEG; using ThePEG::Helicity::SpinorWaveFunction; using ThePEG::Helicity::SpinorBarWaveFunction; using ThePEG::Helicity::VectorWaveFunction; using ThePEG::Helicity::TensorWaveFunction; /** * Here is the documentation of the MEfv2tf class. * * @see \ref MEfv2tfInterfaces "The interfaces" * defined for MEfv2tf. */ class MEfv2tf: public GeneralHardME { /** Vector of SpinorWaveFunctions. */ typedef vector<SpinorWaveFunction> SpinorVector; /** Vector of SpinorBarWaveFunctions. */ typedef vector<SpinorBarWaveFunction> SpinorBarVector; /** Vector of VectorWaveFunctions. */ typedef vector<VectorWaveFunction> VBVector; /** Vector of TensorWaveFunctions. */ typedef vector<TensorWaveFunction> TBVector; public: /** * The default constructor. */ MEfv2tf() : fermion_(0), vector_(0), fourPoint_(0) {} /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Construct the vertex information for the spin correlations * @param sub Pointer to the relevent SubProcess */ virtual void constructVertex(tSubProPtr sub); 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. */ void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** @name Functions to calculate production matrix elements and me2. */ //@{ /** * Calculate me2 and the production matrix element for the normal mode. * @param spIn Vector of SpinorWaveFunction for the incoming fermion * @param vecIn Vector of VectorWaveFunction for incoming boson * @param spbOut Vector of SpinorBarWaveFunction for outgoing fermion * @param tenOut TensorWaveFunction for outgoing tensor. * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @param full_me The value of me2 calculation */ ProductionMatrixElement fv2tfHeME(const SpinorVector & spIn, const VBVector & vecIn, const TBVector & tenOut, const SpinorBarVector & spbOut, double & full_me, bool first) const; /** * Calculate me2 and the production matrix element for the cc mode. * @param spbIn Vector of SpinorBarWaveFunction for the incoming fermion * @param vecIn Vector of VectorWaveFunction for incoming boson * @param spOut Vector of SpinorWaveFunction for outgoing fermion * @param tenOut TensorWaveFunction for outgoing tensor. * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @param full_me The value of me2 calculation */ ProductionMatrixElement fbv2tfbHeME(const SpinorBarVector & spbIn, const VBVector & vecIn, const TBVector & tenOut, const SpinorVector & spOut, double & full_me, bool first) const; //@} /** * A debugging function to test the value of me2 against an * analytic function. * @param me2 The value of the \f$ |\bar{\mathcal{M}}|^2 \f$ */ virtual void debug(double me2) const; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEfv2tf> initMEfv2tf; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEfv2tf & operator=(const MEfv2tf &); private: /** * Store a pair of FFTVertex and FFVVertex pointers */ vector<pair<AbstractFFTVertexPtr, AbstractFFVVertexPtr> > fermion_; /** * Store a pair of FFTVertex and VVTVertex pointers */ vector<pair<AbstractFFVVertexPtr, AbstractVVTVertexPtr> > vector_; /** * The four point vertex */ vector<AbstractFFVTVertexPtr> fourPoint_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEfv2tf. */ template <> struct BaseClassTrait<Herwig::MEfv2tf,1> { /** Typedef of the first base class of MEfv2tf. */ typedef Herwig::GeneralHardME NthBase; }; /** This template specialization informs ThePEG about the name of * the MEfv2tf class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEfv2tf> : public ClassTraitsBase<Herwig::MEfv2tf> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEfv2tf"; } }; /** @endcond */ } #endif /* HERWIG_MEfv2tf_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/GeneralfftoffH.cc�����������������������������������������0000644�0001750�0001750�00000012540�11754474776�024325� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the GeneralfftoffH class. // #include "GeneralfftoffH.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include"ThePEG/Utilities/EnumIO.h" using namespace Herwig; GeneralfftoffH::GeneralfftoffH() {} IBPtr GeneralfftoffH::clone() const { return new_ptr(*this); } IBPtr GeneralfftoffH::fullclone() const { return new_ptr(*this); } void GeneralfftoffH::persistentOutput(PersistentOStream & os) const { os << oenum(_proc); } void GeneralfftoffH::persistentInput(PersistentIStream & is, int) { is >> ienum(_proc); } ClassDescription<GeneralfftoffH> GeneralfftoffH::initGeneralfftoffH; // Definition of the static class description member. void GeneralfftoffH::Init() { static ClassDocumentation<GeneralfftoffH> documentation ("There is no documentation for the GeneralfftoffH class"); } void GeneralfftoffH::getDiagrams() const { if(_proc==Lepton) { for(long ix=11;ix<=13;ix+=1) { tcPDPtr em(getParticleData(ix)); tcPDPtr ep(em->CC()); // WW processes if(process()==0||process()==1) { tcPDPtr nue(getParticleData(ix+1)); tcPDPtr nueb(nue->CC()); add(new_ptr((Tree2toNDiagram(4), em, WMinus(), WPlus(), ep, 1, nue, 4, nueb, 2, higgs(),-1))); } // ZZ processes if(process()==0||process()==2) { add(new_ptr((Tree2toNDiagram(4), em, Z0(), Z0(), ep, 1, em, 4, ep, 2, higgs(),-2))); } } } else { // WW processes if(process()==0||process()==1) { std::vector<pair<tcPDPtr,tcPDPtr> > parentpair; parentpair.reserve(6); // don't even think of putting 'break' in here! switch(maxFlavour()) { case 5: if (minFlavour()<=4) parentpair.push_back(make_pair(getParticleData(ParticleID::b), getParticleData(ParticleID::c))); if (minFlavour()<=2) parentpair.push_back(make_pair(getParticleData(ParticleID::b), getParticleData(ParticleID::u))); case 4: if (minFlavour()<=3) parentpair.push_back(make_pair(getParticleData(ParticleID::s), getParticleData(ParticleID::c))); if (minFlavour()<=1) parentpair.push_back(make_pair(getParticleData(ParticleID::d), getParticleData(ParticleID::c))); case 3: if (minFlavour()<=2) parentpair.push_back(make_pair(getParticleData(ParticleID::s), getParticleData(ParticleID::u))); case 2: if (minFlavour()<=1) parentpair.push_back(make_pair(getParticleData(ParticleID::d), getParticleData(ParticleID::u))); default: ; } for(unsigned int ix=0;ix<parentpair.size();++ix) { for(unsigned int iy=0;iy<parentpair.size();++iy) { // q1 q2 -> q1' q2' h if(parentpair[ix].first->id()<parentpair[iy].second->id()) { add(new_ptr((Tree2toNDiagram(4), parentpair[ix].first, WMinus(), WPlus(), parentpair[iy].second, 1, parentpair[ix].second, 4, parentpair[iy].first, 2, higgs(),-1))); } else { add(new_ptr((Tree2toNDiagram(4), parentpair[iy].second, WPlus(), WMinus(), parentpair[ix].first, 1, parentpair[iy].first, 4, parentpair[ix].second, 2, higgs(),-1))); } // q1 qbar2 -> q1' qbar2' h add(new_ptr((Tree2toNDiagram(4), parentpair[ix].first, WMinus(), WPlus(), parentpair[iy].first->CC(), 1, parentpair[ix].second, 4, parentpair[iy].second->CC(), 2, higgs(),-1))); add(new_ptr((Tree2toNDiagram(4),parentpair[iy].second, WPlus(), WMinus(), parentpair[ix].second->CC(), 1, parentpair[iy].first, 4, parentpair[ix].first->CC(), 2, higgs(),-1))); // qbar1 qbar2 -> qbar1' qbar2' h if(parentpair[ix].first->id()<parentpair[ix].second->id()) { add(new_ptr((Tree2toNDiagram(4), parentpair[ix].first->CC(), WPlus(), WMinus(), parentpair[iy].second->CC(), 1, parentpair[ix].second->CC(), 4, parentpair[iy].first->CC(), 2, higgs(),-1))); } else { add(new_ptr((Tree2toNDiagram(4), parentpair[iy].second->CC(), WMinus(), WPlus(), parentpair[ix].first->CC(), 1, parentpair[iy].first->CC(), 4, parentpair[ix].second->CC(), 2, higgs(),-1))); } } } } // ZZ processes if(process()==0||process()==2) { // get the quark particle data objects as we'll be using them tcPDPtr q[6],qbar[6]; for ( int ix=0; ix<5; ++ix ) { q [ix] = getParticleData(ix+1); qbar[ix] = q[ix]->CC(); } for(unsigned int ix=minFlavour()-1;ix<maxFlavour();++ix) { for(unsigned int iy=ix;iy<maxFlavour();++iy) { // q q -> q q H add(new_ptr((Tree2toNDiagram(4), q[ix], Z0(), Z0(), q[iy], 1, q[ix], 4, q[iy], 2, higgs(),-2))); // qbar qbar -> qbar qbar H add(new_ptr((Tree2toNDiagram(4), qbar[ix], Z0(), Z0(), qbar[iy], 1, qbar[ix], 4, qbar[iy], 2, higgs(),-2))); } // q qbar -> q qbar H for(unsigned int iy=minFlavour()-1;iy<maxFlavour();++iy) { add(new_ptr((Tree2toNDiagram(4), q[ix], Z0(), Z0(), qbar[iy], 1, q[ix], 4, qbar[iy], 2, higgs(),-2))); } } } } } void GeneralfftoffH::setProcessInfo(Process proc, PDPtr hin, AbstractVVSVertexPtr vertex, unsigned int shapeOpt, unsigned int iproc) { higgs(hin); _proc = proc; setWWHVertex(vertex); lineShape(shapeOpt); process(iproc); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/Makefile.am�����������������������������������������������0000644�0001750�0001750�00000001131�11754474776�023164� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwGeneralME.la libHwGeneralME_la_SOURCES = \ GeneralHardME.cc GeneralHardME.h GeneralHardME.fh \ MEvv2ff.cc MEvv2ff.h \ MEvv2ss.cc MEvv2ss.h \ MEfv2fs.cc MEfv2fs.h \ MEff2ss.cc MEff2ss.h \ MEff2ff.cc MEff2ff.h \ MEff2vv.cc MEff2vv.h \ MEfv2vf.cc MEfv2vf.h \ MEff2vs.cc MEff2vs.h \ MEff2sv.cc MEff2sv.h \ MEvv2vv.cc MEvv2vv.h \ MEvv2vs.cc MEvv2vs.h \ MEff2tv.cc MEff2tv.h \ MEvv2tv.cc MEvv2tv.h \ MEfv2tf.cc MEfv2tf.h \ GeneralfftoVH.cc GeneralfftoVH.h GeneralfftoVH.fh\ GeneralfftoffH.cc GeneralfftoffH.h GeneralfftoffH.fh\ GeneralQQHiggs.cc GeneralQQHiggs.h GeneralQQHiggs.fh ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/GeneralQQHiggs.cc�����������������������������������������0000644�0001750�0001750�00000055427�11754474776�024261� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEPP2QQH class. // #include "GeneralQQHiggs.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "Herwig++/Models/StandardModel/StandardModel.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "Herwig++/Utilities/Kinematics.h" #include "ThePEG/Cuts/Cuts.h" #include "Herwig++/MatrixElement/HardVertex.h" using namespace Herwig; GeneralQQHiggs::GeneralQQHiggs() : quarkFlavour_(6), process_(0), shapeOpt_(2), mh_(), wh_(), alpha_(1.1) {} ClassDescription<GeneralQQHiggs> GeneralQQHiggs::initGeneralQQHiggs; // Definition of the static class description member. void GeneralQQHiggs::Init() { static ClassDocumentation<GeneralQQHiggs> documentation ("The GeneralQQHiggs class implements the matrix elements for the " "production of the Higgs boson in association with a heavy quark-antiquark pair"); static Switch<GeneralQQHiggs,unsigned int> interfaceQuarkType ("QuarkType", "The type of quark", &GeneralQQHiggs::quarkFlavour_, 6, false, false); static SwitchOption interfaceQuarkTypeBottom (interfaceQuarkType, "Bottom", "Produce bottom-antibottom", 5); static SwitchOption interfaceQuarkTypeTop (interfaceQuarkType, "Top", "Produce top-antitop", 6); static Switch<GeneralQQHiggs,unsigned int> interfaceProcess ("Process", "Which subprocesses to include", &GeneralQQHiggs::process_, 0, false, false); static SwitchOption interfaceProcessAll (interfaceProcess, "All", "Include all subprocesses", 0); static SwitchOption interfaceProcess1 (interfaceProcess, "gg", "Include only gg -> QQbarH processes", 1); static SwitchOption interfaceProcessqbarqbarqbarqbar (interfaceProcess, "qqbar", "Include only qbar qbar -> QQbarH processes", 2); static Switch<GeneralQQHiggs,unsigned int> interfaceShapeOption ("ShapeScheme", "Option for the treatment of the Higgs resonance shape", &GeneralQQHiggs::shapeOpt_, 2, false, false); static SwitchOption interfaceStandardShapeFixed (interfaceShapeOption, "FixedBreitWigner", "Breit-Wigner s-channel resonance", 1); static SwitchOption interfaceStandardShapeRunning (interfaceShapeOption, "MassGenerator", "Use the mass generator to give the shape", 2); static SwitchOption interfaceStandardShapeOnShell (interfaceShapeOption, "OnShell", "Produce an on-shell Higgs boson", 0); static Parameter<GeneralQQHiggs,double> interfaceAlpha ("Alpha", "Power for the generation of the tranverse mass in the pT mapping", &GeneralQQHiggs::alpha_, 1.1, 0.0, 10.0, false, false, Interface::limited); } Energy2 GeneralQQHiggs::scale() const { return sHat(); } int GeneralQQHiggs::nDim() const { return 4 + int(shapeOpt_>0); } unsigned int GeneralQQHiggs::orderInAlphaS() const { return 2; } unsigned int GeneralQQHiggs::orderInAlphaEW() const { return 1; } IBPtr GeneralQQHiggs::clone() const { return new_ptr(*this); } IBPtr GeneralQQHiggs::fullclone() const { return new_ptr(*this); } void GeneralQQHiggs::setKinematics() { MEBase::setKinematics(); } void GeneralQQHiggs::persistentOutput(PersistentOStream & os) const { os << quarkFlavour_ << process_ << shapeOpt_ << ounit(mh_,GeV) << ounit(wh_,GeV) << hmass_ << GGGVertex_ << QQGVertex_ << QQHVertex_ << gluon_ << higgs_ << quark_ << antiquark_ << alpha_; } void GeneralQQHiggs::persistentInput(PersistentIStream & is, int) { is >> quarkFlavour_ >> process_ >> shapeOpt_ >> iunit(mh_,GeV) >> iunit(wh_,GeV) >> hmass_ >> GGGVertex_ >> QQGVertex_ >> QQHVertex_ >> gluon_ >> higgs_ >> quark_ >> antiquark_ >> alpha_; } void GeneralQQHiggs::doinit() { MEBase::doinit(); // stuff for the higgs mass mh_ = higgs_->mass(); wh_ = higgs_->width(); if(higgs_->massGenerator()) { hmass_=dynamic_ptr_cast<GenericMassGeneratorPtr>(higgs_->massGenerator()); } if(shapeOpt_==2&&!hmass_) throw InitException() << "If using the mass generator for the line shape in GeneralQQHiggs::doinit()" << "the mass generator must be an instance of the GenericMassGenerator class" << Exception::runerror; // get the vertex pointers from the SM object tcHwSMPtr hwsm= dynamic_ptr_cast<tcHwSMPtr>(standardModel()); // do the initialisation if(!hwsm) throw InitException() << "Wrong type of StandardModel object in " << "GeneralQQHiggs::doinit() the Herwig++" << " version must be used" << Exception::runerror; GGGVertex_ = hwsm->vertexGGG(); QQGVertex_ = hwsm->vertexFFG(); // get the particle data objects gluon_=getParticleData(ParticleID::g); for(int ix=1;ix<=6;++ix) { quark_.push_back( getParticleData( ix)); antiquark_.push_back(getParticleData(-ix)); } } bool GeneralQQHiggs::generateKinematics(const double * r) { jacobian(1.); // CMS energy Energy rs = sqrt(sHat()); // quark mass Energy mq(quark_[quarkFlavour_-1]->mass()); // generate the higgs mass Energy mh(mh_); if(shapeOpt_!=0) { Energy mhmax = min(rs-2.*mq,higgs_->massMax()); Energy mhmin = max(ZERO ,higgs_->massMin()); if(mhmax<=mhmin) return false; double rhomin = atan2((sqr(mhmin)-sqr(mh_)), mh_*wh_); double rhomax = atan2((sqr(mhmax)-sqr(mh_)), mh_*wh_); mh = sqrt(mh_*wh_*tan(rhomin+r[4]*(rhomax-rhomin))+sqr(mh_)); jacobian(jacobian()*(rhomax-rhomin)); } if(rs<mh+2.*mq) return false; // limits for virtual quark mass Energy2 mmin(sqr(mq+mh)),mmax(sqr(rs-mq)); double rhomin,rhomax; if(alpha_==0.) { rhomin = mmin/sqr(mq); rhomax = mmax/sqr(mq); } else if(alpha_==1.) { rhomax = log((mmax-sqr(mq))/sqr(mq)); rhomin = log((mmin-sqr(mq))/sqr(mq)); } else { rhomin = pow((mmax-sqr(mq))/sqr(mq),1.-alpha_); rhomax = pow((mmin-sqr(mq))/sqr(mq),1.-alpha_); jacobian(jacobian()/(alpha_-1.)); } // branch for mass smoothing Energy2 m132,m232; Energy p1,p2; // first branch if(r[1]<=0.5) { double rtemp = 2.*r[1]; double rho = rhomin+rtemp*(rhomax-rhomin); if(alpha_==0) m132 = sqr(mq)*rho; else if(alpha_==1) m132 = sqr(mq)*(exp(rho)+1.); else m132 = sqr(mq)*(pow(rho,1./(1.-alpha_))+1.); Energy m13 = sqrt(m132); try { p1 = SimplePhaseSpace::getMagnitude(sHat(), m13, mq); p2 = SimplePhaseSpace::getMagnitude(m132,mq,mh); } catch ( ImpossibleKinematics ) { return false; } Energy ptmin = lastCuts().minKT(mePartonData()[3]); double ctmin = -1.0, ctmax = 1.0; if ( ptmin > ZERO ) { double ctm = 1.0 - sqr(ptmin/p1); if ( ctm <= 0.0 ) return false; ctmin = max(ctmin, -sqrt(ctm)); ctmax = min(ctmax, sqrt(ctm)); } double cos1 = getCosTheta(ctmin,ctmax,r[0]); double sin1(sqrt(1.-sqr(cos1))); double phi1 = Constants::twopi*UseRandom::rnd(); Lorentz5Momentum p13(sin1*p1*cos(phi1),sin1*p1*sin(phi1),cos1*p1, sqrt(sqr(p1)+m132),m13); meMomenta()[3].setVect(Momentum3(-sin1*p1*cos(phi1),-sin1*p1*sin(phi1),-cos1*p1)); meMomenta()[3].setMass(mq); meMomenta()[3].rescaleEnergy(); bool test=Kinematics::twoBodyDecay(p13,mq,mh,-1.+2*r[2],r[3]*Constants::twopi, meMomenta()[2],meMomenta()[4]); if(!test) return false; m232 = (meMomenta()[3]+meMomenta()[4]).m2(); double D = 2./(pow(sqr(mq)/(m132-sqr(mq)),alpha_)+ pow(sqr(mq)/(m232-sqr(mq)),alpha_)); jacobian(0.5*jacobian()*rs/m13*sqr(mq)*D*(rhomax-rhomin)/sHat()); } // second branch else { double rtemp = 2.*(r[1]-0.5); double rho = rhomin+rtemp*(rhomax-rhomin); if(alpha_==0) m232 = sqr(mq)*rho; else if(alpha_==1) m232 = sqr(mq)*(exp(rho)+1.); else m232 = sqr(mq)*(pow(rho,1./(1.-alpha_))+1.); Energy m23 = sqrt(m232); try { p1 = SimplePhaseSpace::getMagnitude(sHat(), m23, mq); p2 = SimplePhaseSpace::getMagnitude(m232,mq,mh); } catch ( ImpossibleKinematics ) { return false; } Energy ptmin = lastCuts().minKT(mePartonData()[2]); double ctmin = -1.0, ctmax = 1.0; if ( ptmin > ZERO ) { double ctm = 1.0 - sqr(ptmin/p1); if ( ctm <= 0.0 ) return false; ctmin = max(ctmin, -sqrt(ctm)); ctmax = min(ctmax, sqrt(ctm)); } double cos1 = getCosTheta(ctmin,ctmax,r[0]); double sin1(sqrt(1.-sqr(cos1))); double phi1 = Constants::twopi*UseRandom::rnd(); Lorentz5Momentum p23(-sin1*p1*cos(phi1),-sin1*p1*sin(phi1),-cos1*p1, sqrt(sqr(p1)+m232),m23); meMomenta()[2].setVect(Momentum3(sin1*p1*cos(phi1),sin1*p1*sin(phi1),cos1*p1)); meMomenta()[2].setMass(mq); meMomenta()[2].rescaleEnergy(); bool test=Kinematics::twoBodyDecay(p23,mq,mh,-1.+2*r[2],r[3]*Constants::twopi, meMomenta()[3],meMomenta()[4]); if(!test) return false; m132 = (meMomenta()[2]+meMomenta()[4]).m2(); double D = 2./(pow(sqr(mq)/(m132-sqr(mq)),alpha_)+ pow(sqr(mq)/(m232-sqr(mq)),alpha_)); jacobian(0.5*jacobian()*rs/m23*sqr(mq)*D*(rhomax-rhomin)/sHat()); } // calculate jacobian jacobian(0.125*jacobian()*p1*p2/sHat()); // check cuts vector<LorentzMomentum> out; tcPDVector tout; for(unsigned int ix=2;ix<5;++ix) { out .push_back(meMomenta()[ix]); tout.push_back(mePartonData()[ix]); } return lastCuts().passCuts(tout, out, mePartonData()[0], mePartonData()[1]); } CrossSection GeneralQQHiggs::dSigHatDR() const { using Constants::pi; // jacobian factor for the higgs InvEnergy2 bwfact(ZERO); Energy moff = meMomenta()[4].mass(); if(shapeOpt_==1) { bwfact = mePartonData()[4]->generateWidth(moff)*moff/pi/ (sqr(sqr(moff)-sqr(mh_))+sqr(mh_*wh_)); } else if(shapeOpt_==2) { bwfact = hmass_->BreitWignerWeight(moff); } double jac1 = shapeOpt_==0 ? 1. : double(bwfact*(sqr(sqr(moff)-sqr(mh_))+sqr(mh_*wh_))/(mh_*wh_)); return sqr(hbarc)*me2()*jacobian()*jac1/sHat()/pow(Constants::twopi,3); } void GeneralQQHiggs::getDiagrams() const { tPDPtr Q = quark_[quarkFlavour_-1]; tPDPtr QB = antiquark_[quarkFlavour_-1]; // gg -> q qbar h0 subprocesses if(process_==0||process_==1) { // first t-channel add(new_ptr((Tree2toNDiagram(3), gluon_, QB, gluon_, 1, Q, 4, Q , 2, QB, 4, higgs_, -1))); add(new_ptr((Tree2toNDiagram(4), gluon_, QB, QB, gluon_, 1, Q, 3, QB, 2, higgs_, -2))); add(new_ptr((Tree2toNDiagram(3),gluon_,QB,gluon_, 1, Q, 2, QB, 5, QB, 5, higgs_, -3))); // interchange add(new_ptr((Tree2toNDiagram(3),gluon_,Q,gluon_, 2, Q, 4, Q , 1, QB, 4, higgs_, -4))); add(new_ptr((Tree2toNDiagram(4),gluon_,Q,Q,gluon_, 3, Q, 1, QB, 2, higgs_, -5))); add(new_ptr((Tree2toNDiagram(3),gluon_,Q,gluon_, 2, Q, 1, QB, 5, QB, 5, higgs_, -6))); // s-channel add(new_ptr((Tree2toNDiagram(2),gluon_,gluon_, 1, gluon_, 3, Q, 4, Q, 3, QB, 4, higgs_, -7))); add(new_ptr((Tree2toNDiagram(2),gluon_,gluon_, 1, gluon_, 3,Q, 3, QB, 5, QB, 5, higgs_, -8))); } // q qbar -> q qbar if(process_==0||process_==2) { for(unsigned int ix=1;ix<5;++ix) { // gluon s-channel add(new_ptr((Tree2toNDiagram(2),quark_[ix-1], antiquark_[ix-1], 1, gluon_, 3, Q, 4, Q , 3, QB, 4, higgs_, -9))); add(new_ptr((Tree2toNDiagram(2),quark_[ix-1], antiquark_[ix-1], 1, gluon_, 3, Q, 3, QB, 5, QB, 5, higgs_, -10))); } } } double GeneralQQHiggs::me2() const { // total matrix element double me(0.); // gg initiated processes if(mePartonData()[0]->id()==ParticleID::g) { VectorWaveFunction g1w(meMomenta()[0],mePartonData()[0],incoming); VectorWaveFunction g2w(meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction qw(meMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction qbarw(meMomenta()[3],mePartonData()[3],outgoing); ScalarWaveFunction higgs(meMomenta()[4],mePartonData()[4],1.,outgoing); vector<VectorWaveFunction> g1,g2; vector<SpinorBarWaveFunction> q; vector<SpinorWaveFunction> qbar; for(unsigned int ix=0;ix<2;++ix) { g1w.reset(2*ix);g1.push_back(g1w); g2w.reset(2*ix);g2.push_back(g2w); qw.reset(ix);q.push_back(qw); qbarw.reset(ix);qbar.push_back(qbarw); } // calculate the matrix element me=ggME(g1,g2,q,qbar,higgs,0); } // q qbar initiated else { SpinorWaveFunction q1w(meMomenta()[0],mePartonData()[0],incoming); SpinorBarWaveFunction q2w(meMomenta()[1],mePartonData()[1],incoming); SpinorBarWaveFunction q3w(meMomenta()[2],mePartonData()[2],outgoing); SpinorWaveFunction q4w(meMomenta()[3],mePartonData()[3],outgoing); ScalarWaveFunction higgs(meMomenta()[4],mePartonData()[4],1.,outgoing); vector<SpinorWaveFunction> q1,q4; vector<SpinorBarWaveFunction> q2,q3; for(unsigned int ix=0;ix<2;++ix) { q1w.reset(ix);q1.push_back(q1w); q2w.reset(ix);q2.push_back(q2w); q3w.reset(ix);q3.push_back(q3w); q4w.reset(ix);q4.push_back(q4w); } // calculate the matrix element me = qqME(q1,q2,q3,q4,higgs,0); } return me*sHat()*UnitRemoval::InvE2; } double GeneralQQHiggs::ggME(vector<VectorWaveFunction> &g1, vector<VectorWaveFunction> &g2, vector<SpinorBarWaveFunction> & q, vector<SpinorWaveFunction> & qbar, ScalarWaveFunction & hwave, unsigned int iflow) const { // scale Energy2 mt(scale()); Energy mass = q[0].mass(); // matrix element to be stored if(iflow!=0) me_.reset(ProductionMatrixElement(PDT::Spin1,PDT::Spin1, PDT::Spin1Half,PDT::Spin1Half, PDT::Spin0)); // calculate the matrix element double output(0.),sumflow[2]={0.,0.}; double sumdiag[8]={0.,0.,0.,0.,0.,0.,0.,0.}; Complex diag[8],flow[2]; VectorWaveFunction interv; SpinorWaveFunction inters,QBoff; SpinorBarWaveFunction intersb,Qoff; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { interv = GGGVertex_->evaluate(mt,5,gluon_,g1[ihel1],g2[ihel2]); for(unsigned int ohel1=0;ohel1<2;++ohel1) { Qoff = QQHVertex_->evaluate(mt,3,q[ohel1].particle(), q[ohel1],hwave,mass); for(unsigned int ohel2=0;ohel2<2;++ohel2) { QBoff = QQHVertex_->evaluate(mt,3,qbar[ohel2].particle(), qbar[ohel2],hwave,mass); // 1st diagram inters = QQGVertex_->evaluate(mt,1,qbar[ohel2].particle(), qbar[ohel2],g2[ihel2],mass); diag[0] = QQGVertex_->evaluate(mt,inters,Qoff,g1[ihel1]); // 2nd diagram intersb = QQGVertex_->evaluate(mt,1,q[ohel1].particle(), q[ohel1],g1[ihel1],mass); diag[1] = QQHVertex_->evaluate(mt,inters,intersb,hwave); // 3rd diagram diag[2] = QQGVertex_->evaluate(mt,QBoff,intersb,g2[ihel2]); // 4th diagram inters = QQGVertex_->evaluate(mt,1,qbar[ohel2].particle(), qbar[ohel2],g1[ihel1],mass); diag[3] = QQGVertex_->evaluate(mt,inters,Qoff,g2[ihel2]); // 5th diagram intersb = QQGVertex_->evaluate(mt,1,q[ohel1].particle(), q[ohel1],g2[ihel2],mass); diag[4] = QQHVertex_->evaluate(mt,inters,intersb,hwave); // 6th diagram diag[5] = QQGVertex_->evaluate(mt,QBoff,intersb,g1[ihel1]); // 7th diagram diag[6] = QQGVertex_->evaluate(mt,qbar[ohel2],Qoff ,interv); // 8th diagram diag[7] = QQGVertex_->evaluate(mt,QBoff ,q[ohel1],interv); // colour flows flow[0]=diag[0]+diag[1]+diag[2]+(diag[6]+diag[7]); flow[1]=diag[3]+diag[4]+diag[5]-(diag[6]+diag[7]); // sums for(unsigned int ix=0;ix<8;++ix) sumdiag[ix] += norm(diag[ix]); for(unsigned int ix=0;ix<2;++ix) sumflow[ix] += norm(flow[ix]); // total output +=real(flow[0]*conj(flow[0])+flow[1]*conj(flow[1]) -0.25*flow[0]*conj(flow[1])); // store the me if needed if(iflow!=0) me_(2*ihel1,2*ihel2,ohel1,ohel2,0)=flow[iflow-1]; } } } } // select a colour flow flow_ = 1 + UseRandom::rnd2(sumflow[0],sumflow[1]); if(flow_==1) sumdiag[0]=sumdiag[1]=sumdiag[2]=0.; else sumdiag[3]=sumdiag[4]=sumdiag[5]=0.; // select a diagram from that flow double prob = UseRandom::rnd(); for(unsigned int ix=0;ix<8;++ix) { if(prob<=sumdiag[ix]) { diagram_=1+ix; break; } prob -= sumdiag[ix]; } // final part of colour and spin factors return output/48.; } double GeneralQQHiggs::qqME(vector<SpinorWaveFunction> & q1, vector<SpinorBarWaveFunction> & q2, vector<SpinorBarWaveFunction> & q3, vector<SpinorWaveFunction> & q4, ScalarWaveFunction & hwave, unsigned int iflow) const { // scale Energy2 mt(scale()); Energy mass = q3[0].mass(); // matrix element to be stored if(iflow!=0) me_.reset(ProductionMatrixElement(PDT::Spin1Half,PDT::Spin1Half, PDT::Spin1Half,PDT::Spin1Half, PDT::Spin0)); // calculate the matrix element double output(0.),sumdiag[2]={0.,0.}; Complex diag[2]; VectorWaveFunction interv; SpinorWaveFunction QBoff; SpinorBarWaveFunction Qoff; for(unsigned int ihel1=0;ihel1<2;++ihel1) { for(unsigned int ihel2=0;ihel2<2;++ihel2) { interv = QQGVertex_->evaluate(mt,5,gluon_,q1[ihel1],q2[ihel2]); for(unsigned int ohel1=0;ohel1<2;++ohel1) { Qoff = QQHVertex_->evaluate(mt,3,q3[ohel1].particle(), q3[ohel1],hwave,mass); for(unsigned int ohel2=0;ohel2<2;++ohel2) { QBoff = QQHVertex_->evaluate(mt,3,q4[ohel2].particle(), q4[ohel2],hwave,mass); // 1st diagram diag[0] = QQGVertex_->evaluate(mt,q4[ohel2],Qoff,interv); // 2nd diagram diag[1] = QQGVertex_->evaluate(mt,QBoff,q3[ohel1],interv); // sum of diagrams for(unsigned int ix=0;ix<2;++ix) sumdiag[ix] += norm(diag[ix]); diag[0] += diag[1]; output += norm(diag[0]); if(iflow!=0) me_(ihel1,ihel2,ohel1,ohel2,0) = diag[0]; } } } } // only 1 colour flow flow_=1; // select a diagram diagram_ = 9+UseRandom::rnd2(sumdiag[0],sumdiag[1]); // final part of colour and spin factors return output/18.; } Selector<const ColourLines *> GeneralQQHiggs::colourGeometries(tcDiagPtr diag) const { // colour lines for gg -> Q Qbar H static const ColourLines cgg[10]= {ColourLines("1 4 5, -1 -2 3 , -3 -6 "), ColourLines("1 5 , -1 -2 -3 4, -4 -6 "), ColourLines("1 4 , -1 -2 3 , -3 -5 -6"), ColourLines("3 4 5, 1 2 -3 , -1 -6 "), ColourLines("4 5 , 1 2 3 -4, -1 -6"), ColourLines("3 4 , 1 2 -3 , -1 -5 -6"), ColourLines("1 3 4 5, -1 2, -2 -3 -6"), ColourLines("2 3 4 5, 1 -2, -1 -3 -6"), ColourLines("1 3 4, -1 2, -2 -3 -5 -6"), ColourLines("2 3 4, 1 -2, -1 -3 -5 -6")}; // colour lines for q qbar -> Q Qbar H static const ColourLines cqq[2]= {ColourLines("1 3 4 5, -2 -3 -6"), ColourLines("1 3 4 , -2 -3 -5 -6")}; // select the colour flow (as all ready picked just insert answer) Selector<const ColourLines *> sel; switch(abs(diag->id())) { // gg -> q qbar subprocess case 1: case 2: case 3: case 4: case 5: case 6: sel.insert(1.0, &cgg[abs(diag->id())-1]); break; case 7: sel.insert(1.0, &cgg[5 + flow_]); break; case 8: sel.insert(1.0, &cgg[7 + flow_]); break; // q qbar -> q qbar subprocess case 9: case 10: sel.insert(1.0, &cqq[abs(diag->id())-9]); break; } return sel; } Selector<MEBase::DiagramIndex> GeneralQQHiggs::diagrams(const DiagramVector & diags) const { // select the diagram, this is easy for us as we have already done it Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if(diags[i]->id()==-int(diagram_)) sel.insert(1.0, i); else sel.insert(0., i); } return sel; } void GeneralQQHiggs::constructVertex(tSubProPtr sub) { // extract the particles in the hard process ParticleVector hard; hard.push_back(sub->incoming().first); hard.push_back(sub->incoming().second); for(unsigned int ix=0;ix<3;++ix) hard.push_back(sub->outgoing()[ix]); // identify the process and calculate the matrix element if(hard[0]->id()<0) swap(hard[0],hard[1]); if(hard[2]->id()==higgs_->id()) swap(hard[2],hard[4]); if(hard[3]->id()==higgs_->id()) swap(hard[3],hard[4]); if(hard[2]->id()<0) swap(hard[2],hard[3]); if(hard[2]->id()<0) swap(hard[2],hard[3]); if(hard[0]->id()==ParticleID::g) { vector<VectorWaveFunction> g1,g2; vector<SpinorBarWaveFunction> q; vector<SpinorWaveFunction> qbar; // off-shell wavefunctions for the spin correlations VectorWaveFunction( g1,hard[0],incoming,false,true,true); VectorWaveFunction( g2,hard[1],incoming,false,true,true); SpinorBarWaveFunction(q ,hard[2],outgoing,true ,true); SpinorWaveFunction( qbar,hard[3],outgoing,true ,true); ScalarWaveFunction hwave( hard[4],outgoing,true); g1[1]=g1[2];g2[1]=g2[2]; ggME(g1,g2,q,qbar,hwave,flow_); } // q qbar -> Q Qbar Higgs else { vector<SpinorWaveFunction> q1,q4; vector<SpinorBarWaveFunction> q2,q3; // off-shell for spin correlations SpinorWaveFunction( q1,hard[0],incoming,false,true); SpinorBarWaveFunction(q2,hard[1],incoming,false,true); SpinorBarWaveFunction(q3,hard[2],outgoing,true ,true); SpinorWaveFunction( q4,hard[3],outgoing,true ,true); ScalarWaveFunction hwave( hard[4],outgoing,true); qqME(q1,q2,q3,q4,hwave,flow_); } // construct the vertex HardVertexPtr hardvertex=new_ptr(HardVertex()); // set the matrix element for the vertex hardvertex->ME(me_); // set the pointers and to and from the vertex for(unsigned int ix=0;ix<5;++ix) hard[ix]->spinInfo()->productionVertex(hardvertex); } double GeneralQQHiggs::getCosTheta(double ctmin, double ctmax, double r) { double cth = 0.0; static const double eps = 1.0e-6; if ( 1.0 + ctmin <= eps && 1.0 - ctmax <= eps ) { cth = ctmin + r*(ctmax-ctmin); jacobian(jacobian()*(ctmax - ctmin)); } else if ( 1.0 + ctmin <= eps ) { cth = 1.0 - (1.0 - ctmax)*pow((1.0 - ctmin)/(1.0 - ctmax), r); jacobian(jacobian()*log((1.0 - ctmin)/(1.0 - ctmax))*(1.0 - cth)); } else if ( 1.0 - ctmax <= eps ) { cth = -1.0 + (1.0 + ctmin)*pow((1.0 + ctmax)/(1.0 + ctmin), r); jacobian(jacobian()*log((1.0 + ctmax)/(1.0 + ctmin))*(1.0 + cth)); } else { double zmin = 0.5*(1.0 - ctmax); double zmax = 0.5*(1.0 - ctmin); double A1 = -ctmin/(zmax*(1.0-zmax)); double A0 = -ctmax/(zmin*(1.0-zmin)); double A = r*(A1 - A0) + A0; double z = A < 2.0? 2.0/(sqrt(sqr(A) + 4.0) + 2 - A): 0.5*(A - 2.0 + sqrt(sqr(A) + 4.0))/A; cth = 1.0 - 2.0*z; jacobian(jacobian()*2.0*(A1 - A0)*sqr(z)*sqr(1.0 - z)/(sqr(z) + sqr(1.0 - z))); } return cth; } void GeneralQQHiggs::setProcessInfo(unsigned int quark, PDPtr hin, AbstractFFSVertexPtr vertex, unsigned int shapeOpt, unsigned int proc) { quarkFlavour_ = quark; higgs_ = hin; QQHVertex_ = vertex; process_ = proc; shapeOpt_ = shapeOpt; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEvv2tv.cc������������������������������������������������0000644�0001750�0001750�00000023164�11754474776�022762� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEvv2tv class. // #include "MEvv2tv.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; IBPtr MEvv2tv::clone() const { return new_ptr(*this); } IBPtr MEvv2tv::fullclone() const { return new_ptr(*this); } void MEvv2tv::persistentOutput(PersistentOStream & os) const { os << vector_ << fourPoint_; } void MEvv2tv::persistentInput(PersistentIStream & is, int) { is >> vector_ >> fourPoint_; } ClassDescription<MEvv2tv> MEvv2tv::initMEvv2tv; // Definition of the static class description member. void MEvv2tv::Init() { static ClassDocumentation<MEvv2tv> documentation ("The MEvv2tv class implements the general matrix element " "for vector vector -> tensor vector."); } double MEvv2tv::me2() const { // check tensor and outgoing vector mass bool tMass = meMomenta()[2].mass()!=ZERO; bool vMass = meMomenta()[3].mass()!=ZERO; // first setup wavefunctions for external particles VBVector vec1(3),vec2(3),vec3(3); TBVector ten(5); for( unsigned int i = 0; i < 5; ++i ) { if(i!=1 &&i<3) { vec1[i] = VectorWaveFunction(rescaledMomenta()[0], mePartonData()[0],i , incoming); vec2[i] = VectorWaveFunction(rescaledMomenta()[1], mePartonData()[1],i , incoming); } if( tMass || i==0 || i==4) { ten[i] = TensorWaveFunction(rescaledMomenta()[2], mePartonData()[2],i , outgoing); } if(i<3 && (i!=1||vMass) ) { vec3[i] = VectorWaveFunction(rescaledMomenta()[3], mePartonData()[3],i , outgoing); } } // calculate the ME double full_me(0.); vv2tvHeME(vec1,vec2,ten,vec3,full_me,true); // debugging tests if needed #ifndef NDEBUG if( debugME() ) debug(full_me); #endif // return the answer return full_me; } void MEvv2tv::doinit() { GeneralHardME::doinit(); vector_ .resize(numberOfDiags()); fourPoint_ .resize(numberOfDiags()); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin2, PDT::Spin1)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin2, PDT::Spin1)); for(HPCount i = 0; i < numberOfDiags(); ++i) { const HPDiagram & current = getProcessInfo()[i]; if(current.channelType == HPDiagram::tChannel) { if(current.intermediate->iSpin() != PDT::Spin1) throw InitException() << "MEvv2tv:doinit() - Cannot find correct " << "t-channel from diagram. Vertex not cast! " << Exception::runerror; if( current.ordered.second ) vector_[i] = make_pair(dynamic_ptr_cast<AbstractVVVVertexPtr>(current.vertices.second), dynamic_ptr_cast<AbstractVVTVertexPtr>(current.vertices.first )); else vector_[i] = make_pair(dynamic_ptr_cast<AbstractVVVVertexPtr>(current.vertices.first ), dynamic_ptr_cast<AbstractVVTVertexPtr>(current.vertices.second)); } else if (current.channelType == HPDiagram::sChannel) { if(current.intermediate->iSpin() != PDT::Spin1) throw InitException() << "MEvv2tv:doinit() - Cannot find correct " << "s-channel from diagram. Vertex not cast! " << Exception::runerror; vector_[i] = make_pair(dynamic_ptr_cast<AbstractVVVVertexPtr>(current.vertices.first ), dynamic_ptr_cast<AbstractVVTVertexPtr>(current.vertices.second)); } else if(current.channelType == HPDiagram::fourPoint) { fourPoint_[i] = dynamic_ptr_cast<AbstractVVVTVertexPtr>(current.vertices.first); } } } void MEvv2tv::doinitrun() { GeneralHardME::doinitrun(); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin2, PDT::Spin1)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin2, PDT::Spin1)); } ProductionMatrixElement MEvv2tv::vv2tvHeME(const VBVector & vec1, const VBVector & vec2, const TBVector & ten, const VBVector & vec3, double & full_me, bool first) const { // scale const Energy2 q2(scale()); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); bool tMass = meMomenta()[2].mass() != ZERO; bool vMass = meMomenta()[3].mass() != ZERO; // flow over the helicities and diagrams for(unsigned int iv1 = 0; iv1 < 3; iv1+=2) { for(unsigned int iv2 = 0; iv2 < 3; iv2+=2) { for(unsigned int it=0; it<5; ++it) { if( (it>0&&it<4) && !tMass ) continue; for(unsigned int iv3=0; iv3<3;++iv3) { if(iv3==1&&!vMass) continue; vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr internal(current.intermediate); if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) { VectorWaveFunction interV = vector_[ix].first-> evaluate(q2, 1, internal, vec2[iv2], vec3[iv3]); diag = vector_[ix].second-> evaluate(q2,interV,vec1[iv1],ten[it]); } else { VectorWaveFunction interV = vector_[ix].first-> evaluate(q2, 1, internal, vec3[iv3], vec1[iv1]); diag = vector_[ix].second-> evaluate(q2,interV,vec2[iv2],ten[it]); } } else if(current.channelType == HPDiagram::sChannel) { VectorWaveFunction interV = vector_[ix].first-> evaluate(q2, 1, internal, vec1[iv1], vec2[iv2]); diag = vector_[ix].second->evaluate(q2, interV, vec3[iv3],ten[it]); } else if(current.channelType == HPDiagram::fourPoint) { diag = fourPoint_[ix]-> evaluate(q2,vec1[iv1],vec2[iv2],vec3[iv3],ten[it]); } // diagram me[ix] += norm(diag); diagramME()[ix](iv1,iv2,it,iv3) = diag; // contributions to the different colour flows for(unsigned int iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](iv1,iv2,it,iv3) = flows[iy]; // contribution to the squared matrix element for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) for(unsigned int ij = 0; ij < numberOfFlows(); ++ij) full_me += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; full_me = selectColourFlow(flow,me,full_me); return flowME()[colourFlow()]; } void MEvv2tv::debug(double me2) const { if( !generator()->logfile().is_open() ) return; long id1 = mePartonData()[0]->id(); long id2 = mePartonData()[1]->id(); long id4 = mePartonData()[3]->id(); if(id1 != ParticleID::g || id2 != ParticleID::g || id4 != ParticleID::g ) return; unsigned int iloc(0); for(;iloc<vector_.size();++iloc) if(vector_[iloc].first) break; double gs = abs(vector_[iloc].second->norm()); InvEnergy kappa = abs(vector_[iloc].first->norm())*UnitRemoval::InvE; Energy2 mg2 = sqr(meMomenta()[2].mass()); double anal2 = 3./32.*sqr(gs)*sqr(kappa)/sHat()/tHat()/uHat() *(pow<4,1>(sHat()-mg2)+pow<4,1>(tHat()-mg2)+pow<4,1>(uHat()-mg2)); double diff = abs((anal2 - me2)/(anal2+me2)); if( diff > 1e-4 ) { generator()->log() << mePartonData()[0]->PDGName() << "," << mePartonData()[1]->PDGName() << "->" << mePartonData()[2]->PDGName() << "," << mePartonData()[3]->PDGName() << " difference: " << setprecision(10) << diff << " ratio: " << anal2/me2 << '\n'; } } void MEvv2tv::constructVertex(tSubProPtr sub) { ParticleVector ext = hardParticles(sub); // set wave functions with real momenta VBVector v1, v2; VectorWaveFunction(v1, ext[0], incoming, false, true); VectorWaveFunction(v2, ext[1], incoming, false, true); //function to calculate me2 expects massless incoming vectors // and this constructor sets the '1' polarisation at element [2] //in the vector bool mc = !(ext[2]->momentum().mass() > ZERO); bool md = !(ext[3]->data() .mass() > ZERO); VBVector v4; vector<TensorWaveFunction> t3; TensorWaveFunction(t3, ext[2], outgoing, true, mc); VectorWaveFunction(v4, ext[3], outgoing, true, md); // Need to use rescale momenta to calculate matrix element setRescaledMomenta(ext); // wave functions with rescaled momenta VectorWaveFunction vr1(rescaledMomenta()[0], ext[0]->dataPtr(), incoming); VectorWaveFunction vr2(rescaledMomenta()[1], ext[1]->dataPtr(), incoming); TensorWaveFunction tr3(rescaledMomenta()[2], ext[2]->dataPtr(), outgoing); VectorWaveFunction vr4(rescaledMomenta()[3], ext[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { vr1.reset(2*ihel); v1[ihel] = vr1; vr2.reset(2*ihel); v2[ihel] = vr2; tr3.reset(4*ihel); t3[4*ihel] = tr3; vr4.reset(2*ihel); v4[2*ihel] = vr4; } if( !md ) { vr4.reset(1); v4[1] = vr4; } if( !mc ) { for(unsigned int ihel=1;ihel<4;++ihel) { tr3.reset(ihel); t3[ihel] = tr3; } } double dummy(0.); ProductionMatrixElement pme = vv2tvHeME(v1, v2, t3, v4,dummy,false); createVertex(pme,ext); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEvv2vv.cc������������������������������������������������0000644�0001750�0001750�00000030031�11754474776�022753� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEvv2vv.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEvv2vv class. // #include "MEvv2vv.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using ThePEG::Helicity::ScalarWaveFunction; using ThePEG::Helicity::TensorWaveFunction; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; void MEvv2vv::doinit() { GeneralHardME::doinit(); scalar_.resize(numberOfDiags()); vector_.resize(numberOfDiags()); tensor_.resize(numberOfDiags()); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin1, PDT::Spin1)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin1, PDT::Spin1)); for(size_t i = 0; i < numberOfDiags(); ++i) { HPDiagram diag = getProcessInfo()[i]; tcPDPtr offshell = diag.intermediate; if(!offshell) fourPointVertex_ = dynamic_ptr_cast<AbstractVVVVVertexPtr> (diag.vertices.first); else if(offshell->iSpin() == PDT::Spin0) { AbstractVVSVertexPtr vert1 = dynamic_ptr_cast<AbstractVVSVertexPtr> (diag.vertices.first); AbstractVVSVertexPtr vert2 = dynamic_ptr_cast<AbstractVVSVertexPtr> (diag.vertices.second); scalar_[i] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin1) { AbstractVVVVertexPtr vert1 = dynamic_ptr_cast<AbstractVVVVertexPtr> (diag.vertices.first); AbstractVVVVertexPtr vert2 = dynamic_ptr_cast<AbstractVVVVertexPtr> (diag.vertices.second); vector_[i] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin2) { AbstractVVTVertexPtr vert1 = dynamic_ptr_cast<AbstractVVTVertexPtr> (diag.vertices.first); AbstractVVTVertexPtr vert2 = dynamic_ptr_cast<AbstractVVTVertexPtr> (diag.vertices.second); tensor_[i] = make_pair(vert1, vert2); } } } void MEvv2vv::doinitrun() { GeneralHardME::doinitrun(); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin1, PDT::Spin1)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1, PDT::Spin1, PDT::Spin1, PDT::Spin1)); } double MEvv2vv::me2() const { VBVector va(2), vb(2), vc(3), vd(3); for(unsigned int i = 0; i < 2; ++i) { va[i] = VectorWaveFunction(rescaledMomenta()[0], mePartonData()[0], 2*i, incoming); vb[i] = VectorWaveFunction(rescaledMomenta()[1], mePartonData()[1], 2*i, incoming); } //always 0 and 2 polarisations for(unsigned int i = 0; i < 2; ++i) { vc[2*i] = VectorWaveFunction(rescaledMomenta()[2], mePartonData()[2], 2*i, outgoing); vd[2*i] = VectorWaveFunction(rescaledMomenta()[3], mePartonData()[3], 2*i, outgoing); } bool mc = !(mePartonData()[2]->mass() > ZERO); //massive vector, also 1 if( !mc ) vc[1] = VectorWaveFunction(rescaledMomenta()[2], mePartonData()[2], 1, outgoing); bool md = !(mePartonData()[3]->mass() > ZERO); if( !md ) vd[1] = VectorWaveFunction(rescaledMomenta()[3], mePartonData()[3], 1, outgoing); double full_me(0.); vv2vvHeME(va, vb, vc, mc, vd, md, full_me,true); #ifndef NDEBUG if( debugME() ) debug(full_me); #endif return full_me; } ProductionMatrixElement MEvv2vv::vv2vvHeME(VBVector & vin1, VBVector & vin2, VBVector & vout1, bool mc, VBVector & vout2, bool md, double & me2, bool first) const { const Energy2 q2(scale()); const Energy mass = vout1[0].mass(); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); // flow over the helicities and diagrams for(unsigned int ihel1 = 0; ihel1 < 2; ++ihel1) { for(unsigned int ihel2 = 0; ihel2 < 2; ++ihel2) { for(unsigned int ohel1 = 0; ohel1 < 3; ++ohel1) { if(mc && ohel1 == 1) ++ohel1; for(unsigned int ohel2 = 0; ohel2 < 3; ++ohel2) { if(md && ohel2 == 1) ++ohel2; vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if(!offshell) continue; if(current.channelType == HPDiagram::sChannel) { if(offshell->iSpin() == PDT::Spin0) { ScalarWaveFunction interS = scalar_[ix].first->evaluate(q2, 1, offshell, vin1[ihel1], vin2[ihel2]); diag = scalar_[ix].second-> evaluate(q2, vout1[ohel1], vout2[ohel2], interS); } else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interV = vector_[ix].first-> evaluate(q2, 1, offshell, vin1[ihel1], vin2[ihel2]); diag = vector_[ix].second-> evaluate(q2, vout1[ohel1], vout2[ohel2], interV); if(colour()==Colour88to88 || colour()==Colour88to66bar) diag += fourPointVertex_->evaluate(q2, 0, vout1[ohel1], vin2[ihel2], vout2[ohel2], vin1[ihel1]); } else if(offshell->iSpin() == PDT::Spin2) { TensorWaveFunction interT = tensor_[ix].first-> evaluate(q2, 1, offshell, vin1[ihel1], vin2[ihel2]); diag = tensor_[ix].second-> evaluate(q2, vout1[ohel1], vout2[ohel2],interT); } else assert(false); } else if(current.channelType == HPDiagram::tChannel) { if(offshell->iSpin() == PDT::Spin0) { if(current.ordered.second) { ScalarWaveFunction interS = scalar_[ix]. first->evaluate(q2, 3, offshell, vin1[ihel1],vout1[ohel1], mass); diag = scalar_[ix].second-> evaluate(q2, vin2[ihel2], vout2[ohel2], interS); } else { ScalarWaveFunction interS = scalar_[ix].first-> evaluate(q2, 3, offshell, vin2[ihel2],vout1[ohel1], mass); diag = scalar_[ix].second-> evaluate(q2, vin1[ihel1], vout2[ohel2], interS); } } else if(offshell->iSpin() == PDT::Spin1) { if(current.ordered.second) { VectorWaveFunction interV = vector_[ix]. first->evaluate(q2, 3, offshell, vin1[ihel1],vout1[ohel1], mass); diag = vector_[ix].second-> evaluate(q2, vin2[ihel2], interV, vout2[ohel2]); if(colour()==Colour88to88 || colour()==Colour88to66bar) diag += fourPointVertex_->evaluate(q2, 0, vin1[ihel1], vin2[ihel2], vout1[ohel1], vout2[ohel2]); } else { VectorWaveFunction interV = vector_[ix].first-> evaluate(q2, 3, offshell, vin2[ihel2],vout1[ohel1], mass); diag = vector_[ix].second-> evaluate(q2, vin1[ihel1], interV, vout2[ohel2]); if(colour()==Colour88to88 || colour()==Colour88to66bar) diag += fourPointVertex_-> evaluate(q2, 0, vin2[ihel2], vin1[ihel1], vout1[ohel1], vout2[ohel2]); } } else if(offshell->iSpin() == PDT::Spin2) { if(current.ordered.second) { TensorWaveFunction interT = tensor_[ix].first-> evaluate(q2, 3, offshell, vin1[ihel1],vout1[ohel1], mass); diag = tensor_[ix].second-> evaluate(q2, vin2[ihel2], vout2[ohel2], interT); } else { TensorWaveFunction interT = tensor_[ix].first-> evaluate(q2, 3, offshell, vin2[ihel2],vout1[ohel1], mass); diag = tensor_[ix].second-> evaluate(q2, vin1[ihel1], vout2[ohel2], interT); } } else assert(false); } else if(current.channelType == HPDiagram::fourPoint) { if(colour()==Colour88to88||colour()==Colour88to66bar) diag = 0.; else diag = fourPointVertex_->evaluate(q2, 0, vin1[ihel1], vin2[ihel2], vout1[ohel1], vout2[ohel2]); } else assert(false); me[ix] += norm(diag); diagramME()[ix](2*ihel1, 2*ihel2, ohel1, ohel2) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](2*ihel1, 2*ihel2, ohel1, ohel2) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) for(size_t ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } void MEvv2vv::persistentOutput(PersistentOStream & os) const { os << scalar_ << vector_ << tensor_ << fourPointVertex_; } void MEvv2vv::persistentInput(PersistentIStream & is, int) { is >> scalar_ >> vector_ >> tensor_ >> fourPointVertex_; } ClassDescription<MEvv2vv> MEvv2vv::initMEvv2vv; // Definition of the static class description member. void MEvv2vv::Init() { static ClassDocumentation<MEvv2vv> documentation ("This is the implementation of the 2 to 2 ME for a pair" "of massless vector-bosons to a pair of vector bosons"); } void MEvv2vv::constructVertex(tSubProPtr sub) { ParticleVector ext = hardParticles(sub); // set wave functions with real momenta VBVector v1, v2, v3, v4; VectorWaveFunction(v1, ext[0], incoming, false, true); VectorWaveFunction(v2, ext[1], incoming, false, true); //function to calculate me2 expects massless incoming vectors // and this constructor sets the '1' polarisation at element [2] //in the vector bool mc = !(ext[2]->data().mass() > ZERO); bool md = !(ext[3]->data().mass() > ZERO); VectorWaveFunction(v3, ext[2], outgoing, true, mc); VectorWaveFunction(v4, ext[3], outgoing, true, md); // Need to use rescale momenta to calculate matrix element setRescaledMomenta(ext); // wave functions with rescaled momenta VectorWaveFunction vr1(rescaledMomenta()[0], ext[0]->dataPtr(), incoming); VectorWaveFunction vr2(rescaledMomenta()[1], ext[1]->dataPtr(), incoming); VectorWaveFunction vr3(rescaledMomenta()[2], ext[2]->dataPtr(), outgoing); VectorWaveFunction vr4(rescaledMomenta()[3], ext[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { vr1.reset(2*ihel); v1[ihel] = vr1; vr2.reset(2*ihel); v2[ihel] = vr2; vr3.reset(2*ihel); v3[2*ihel] = vr3; vr4.reset(2*ihel); v4[2*ihel] = vr4; } if( !mc ) { vr3.reset(1); v3[1] = vr3; } if( !md ) { vr4.reset(1); v4[1] = vr4; } double dummy(0.); ProductionMatrixElement pme = vv2vvHeME(v1, v2, v3, mc, v4, md, dummy,false); #ifndef NDEBUG if( debugME() ) debug(dummy); #endif createVertex(pme,ext); } void MEvv2vv::debug(double me2) const { if( !generator()->logfile().is_open() ) return; if( mePartonData()[0]->id() != 21 || mePartonData()[1]->id() != 21 || mePartonData()[2]->id() != 5100021 || mePartonData()[3]->id() != 5100021 ) return; tcSMPtr sm = generator()->standardModel(); double gs4 = sqr( 4.*Constants::pi*sm->alphaS(scale()) ); Energy2 s(sHat()); Energy2 mf2 = meMomenta()[2].m2(); Energy2 t3(tHat() - mf2), u4(uHat() - mf2); Energy4 s2(sqr(s)), t3s(sqr(t3)), u4s(sqr(u4)); Energy4 num = s2 + t3s + u4s; double analytic = 3.*mf2*( mf2*num/t3s/u4s - num/s/t3/u4 ) + 1. + sqr(num)*num/4./s2/t3s/u4s - t3*u4/s2; analytic *= 9.*gs4/8.; double diff = abs( analytic - me2 ); if( diff > 1e-4 ) { generator()->log() << mePartonData()[0]->PDGName() << "," << mePartonData()[1]->PDGName() << "->" << mePartonData()[2]->PDGName() << "," << mePartonData()[3]->PDGName() << " difference: " << setprecision(10) << diff << " ratio: " << analytic/me2 << '\n'; } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEfv2fs.h�������������������������������������������������0000644�0001750�0001750�00000016046�11754474776�022564� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEfv2fs.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEfv2fs_H #define HERWIG_MEfv2fs_H // // This is the declaration of the MEfv2fs class. // #include "GeneralHardME.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" namespace Herwig { using namespace ThePEG; using ThePEG::Helicity::SpinorWaveFunction; using ThePEG::Helicity::SpinorBarWaveFunction; using ThePEG::Helicity::VectorWaveFunction; using ThePEG::Helicity::ScalarWaveFunction; /** * This class is designed to implement the matrix element for * fermion-vector to fermion scalar. It inherits from GeneralHardME * and implements the required virtual functions. * * @see @see \ref MEfv2fsInterfaces "The Interfaces" * defined for MEfv2fs. * @see GeneralHardME */ class MEfv2fs: public GeneralHardME { /** Vector of SpinorWaveFunctions. */ typedef vector<SpinorWaveFunction> SpinorVector; /** Vector of SpinorBarWaveFunctions. */ typedef vector<SpinorBarWaveFunction> SpinorBarVector; /** Vector of VectorWaveFunctions. */ typedef vector<VectorWaveFunction> VecWFVector; public: /** * The default constructor. */ MEfv2fs() : scalar_(0), fermion_(0) {} public: /** @name Virtual functions required by the GeneralHardME class. */ //@{ /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; //@} /** * Construct the vertex information for the spin correlations * @param subp Pointer to the relevent SubProcess */ virtual void constructVertex(tSubProPtr subp); private: /** @name Functions to calculate production matrix elements and me2. */ //@{ /** * Calculate me2 and the production matrix element for the normal mode. * @param spIn Vector of SpinorWaveFunction for the incoming fermion * @param vecIn Vector of VectorWaveFunction for incoming boson * @param spbOut Vector of SpinorBarWaveFunction for outgoing fermion * @param scaOut ScalarWaveFunction for outgoing scalar. * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @param full_me The value of me2 calculation */ ProductionMatrixElement fv2fbsHeME(const SpinorVector & spIn, const VecWFVector & vecIn, const SpinorBarVector & spbOut, const ScalarWaveFunction & scaOut, double & full_me, bool first) const; /** * Calculate me2 and the production matrix element for the cc mode. * @param spbIn Vector of SpinorBarWaveFunction for the incoming fermion * @param vecIn Vector of VectorWaveFunction for incoming boson * @param spOut Vector of SpinorWaveFunction for outgoing fermion * @param scaOut ScalarWaveFunction for outgoing scalar. * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @param full_me The value of me2 calculation */ ProductionMatrixElement fbv2fsHeME(const SpinorBarVector & spbIn, const VecWFVector & vecIn, const SpinorVector & spOut, const ScalarWaveFunction & scaOut, double & full_me, bool first) const; //@} protected: /** * A debugging function to test the value of me2 against an * analytic function. * @param me2 The value of the \f$ |\bar{\mathcal{M}}|^2 \f$ */ virtual void debug(double me2) 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(); 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. */ void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEfv2fs> initMEfv2fs; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEfv2fs & operator=(const MEfv2fs &); private: /** * Store a pair of FFSVertex and VSSVertex pointers */ vector<pair<AbstractFFSVertexPtr, AbstractVSSVertexPtr> > scalar_; /** * Store a pair of FFSVertex and FFVVertex pointers */ vector<pair<AbstractFFSVertexPtr, AbstractFFVVertexPtr> > fermion_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEfv2fs. */ template <> struct BaseClassTrait<Herwig::MEfv2fs,1> { /** Typedef of the first base class of MEfv2fs. */ typedef Herwig::GeneralHardME NthBase; }; /** This template specialization informs ThePEG about the name of * the MEfv2fs class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEfv2fs> : public ClassTraitsBase<Herwig::MEfv2fs> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEfv2fs"; } }; /** @endcond */ } #endif /* HERWIG_MEfv2fs_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEff2ff.h�������������������������������������������������0000644�0001750�0001750�00000016165�11754474776�022531� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEff2ff.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEff2ff_H #define HERWIG_MEff2ff_H // // This is the declaration of the MEff2ff class. // #include "GeneralHardME.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::SpinorWaveFunction; using Helicity::SpinorBarWaveFunction; /** * This is the implementation of the \f$ 2\to 2\f$ matrix element for * a \f$ \Psi \Psi \to \Psi \Psi\f$ process. It inherits from * GeneralHardME and implements the appropriate virtual functions. * * @see \ref MEff2ffInterfaces "The Interfaces" * defined for MEff2ff. * @see GeneralHardME */ class MEff2ff: public GeneralHardME { public: /** Vector of SpinorWaveFunctions. */ typedef vector<SpinorWaveFunction> SpinorVector; /** Vector of SpinorBarWaveFunctions. */ typedef vector<SpinorBarWaveFunction> SpinorBarVector; public: /** * The default constructor. */ MEff2ff() : scalar_(0), vector_(0), tensor_(0), spin_(4), sbar_(4) {} public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; //@} private: /** @name Functions to compute the ProductionMatrixElement. */ //@{ /** * Compute the matrix element for \f$\Psi\bar{\Psi}\to\Psi\bar{\Psi}\f$ * @param me2 colour averaged, spin summed ME * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @return ProductionMatrixElement containing results of * helicity calculations */ ProductionMatrixElement ffb2ffbHeME(double & me2, bool first) const; /** * Compute the matrix element for \f$\Psi\Psi\to\Psi\Psi\f$ * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @return ProductionMatrixElement containing results of * helicity calculations */ ProductionMatrixElement ff2ffHeME(double & me2, bool first) const; /** * Compute the matrix element for * \f$\bar{\Psi}\bar{\Psi}\to\bar{\Psi}\bar{\Psi}\f$ * @param me2 colour averaged, spin summed ME * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @return ProductionMatrixElement containing results of * helicity calculations */ ProductionMatrixElement fbfb2fbfbHeME(double & me2, bool first) const; /** * Compute the matrix element for \f$\Psi\bar{\Psi}\to\lambda\lambda\f$ * @param me2 colour averaged, spin summed ME * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @return ProductionMatrixElement containing results of * helicity calculations */ ProductionMatrixElement ffb2mfmfHeME(double & me2, bool first) const; //@} /** * Construct the vertex information for the spin correlations * @param sub Pointer to the relevent SubProcess */ virtual void constructVertex(tSubProPtr sub); protected: /** * A debugging function to test the value of me2 against an * analytic function. * @param me2 The value of the \f$ |\bar{\mathcal{M}}|^2 \f$ */ virtual void debug(double me2) 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(); 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEff2ff> initMEff2ff; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEff2ff & operator=(const MEff2ff &); private: /** * Store the vector of FFSVertex pairs */ vector<pair<AbstractFFSVertexPtr, AbstractFFSVertexPtr> > scalar_; /** * Store the vector of FFVVertex pairs */ vector<pair<AbstractFFVVertexPtr, AbstractFFVVertexPtr> > vector_; /** * Store the vector of FFTVertex pairs */ vector<pair<AbstractFFTVertexPtr, AbstractFFTVertexPtr> > tensor_; /** * Spinors */ mutable vector<vector<SpinorWaveFunction> > spin_; /** * Barred spinors */ mutable vector<vector<SpinorBarWaveFunction> > sbar_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEff2ff. */ template <> struct BaseClassTrait<Herwig::MEff2ff,1> { /** Typedef of the first base class of MEff2ff. */ typedef Herwig::GeneralHardME NthBase; }; /** This template specialization informs ThePEG about the name of * the MEff2ff class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEff2ff> : public ClassTraitsBase<Herwig::MEff2ff> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEff2ff"; } }; /** @endcond */ } #endif /* HERWIG_MEff2ff_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/GeneralHardME.cc������������������������������������������0000644�0001750�0001750�00000107524�11754474776�024052� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // GeneralHardME.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the GeneralHardME class. // #include "GeneralHardME.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/MatrixElement/Tree2toNDiagram.h" #include "ThePEG/Utilities/EnumIO.h" #include "ThePEG/PDF/PolarizedBeamParticleData.h" #include <numeric> using namespace Herwig; GeneralHardME::GeneralHardME() : incoming_(0, 0), outgoing_(0, 0), diagrams_(0), numberOfDiagrams_(0), colour_(0), numberOfFlows_(0) , debug_(false), scaleChoice_(0), scaleFactor_(1.) { massOption(vector<unsigned int>(2,1)); } void GeneralHardME::setProcessInfo(const vector<HPDiagram> & alldiagrams, ColourStructure colour, bool debug, unsigned int scaleOption, double scaleFactor) { // external particles incoming_ = alldiagrams.at(0).incoming; outgoing_ = alldiagrams.at(0).outgoing; diagrams_ = alldiagrams; numberOfDiagrams_ = alldiagrams.size(); // debug option debug_ = debug; // scale choice scaleChoice_ = scaleOption; scaleFactor_ = scaleFactor; // OffShell options pair<bool, bool> offshell(make_pair(false, false)); vector<unsigned int> mopt(2,1); if( getParticleData(outgoing_.first )->widthGenerator() || getParticleData(outgoing_.first )-> massGenerator()) { offshell.first = true; mopt[0] = 2; } if( getParticleData(outgoing_.second)->widthGenerator() || getParticleData(outgoing_.second)-> massGenerator() ) { offshell.second = true; mopt[1] = 2; } if(outgoing_.first == incoming_.first || outgoing_.first == incoming_.second ) mopt[0] = 0; if(outgoing_.second == incoming_.first || outgoing_.second == incoming_.second ) mopt[1] = 0; massOption(mopt); if( offshell.first == true && offshell.second == true && abs(outgoing_.first) == abs(outgoing_.second) ) rescalingOption(3); // colour structure colourStructure_ = colour; switch (colour) { // colour neutral process case Colour11to11: colour_ = vector<DVector>(1,DVector(1,1.)); numberOfFlows_ = 1; break; // colour neutral -> 3 3bar or swap process case Colour11to33bar: case Colour33barto11: colour_ = vector<DVector>(1,DVector(1,3.)); numberOfFlows_ = 1; break; // colour neutral -> 8 8 process or swap case Colour11to88: case Colour88to11 : colour_ = vector<DVector>(1,DVector(1,8.)); numberOfFlows_ = 1; break; // colour 33 -> 33 or 3bar3bar -> 3bar3bar process // or colour 33bar -> 33bar case Colour33to33: case Colour3bar3barto3bar3bar: case Colour33barto33bar: colour_ = vector<DVector>(6, DVector(6, 0.)); colour_[0][0] = colour_[1][1] = 2.; colour_[2][2] = colour_[3][3] = 9.; colour_[0][1] = colour_[1][0] = -2./3.; colour_[0][2] = colour_[2][0] = 0.; colour_[0][3] = colour_[3][0] = 4.; colour_[1][2] = colour_[2][1] = 4.; colour_[1][3] = colour_[3][1] = 0.; colour_[2][3] = colour_[3][2] = 3.; numberOfFlows_ = 4; break; // colour 3 3bar -> 6 6bar case Colour33barto66bar: case Colour33barto6bar6: colour_ = vector<DVector>(8, DVector(8, 0.)); // diagonals for(unsigned int ix=0;ix<4;++ix){ colour_[ix][ix] = 1.5; colour_[ix+4][ix+4] = 27./16.; } colour_[0][1] = colour_[1][0] = 0.5; colour_[0][2] = colour_[2][0] = 0.5; colour_[0][3] = colour_[3][0] = 0.; colour_[0][4] = colour_[4][0] = 3./8.; colour_[0][5] = colour_[5][0] = 1./8.; colour_[0][6] = colour_[6][0] = 1./8.; colour_[0][7] = colour_[7][0] = 0.; // 1 colour_[1][2] = colour_[2][1] = 0.; colour_[1][3] = colour_[3][1] = 0.5; colour_[1][4] = colour_[4][1] = 1./8.; colour_[1][5] = colour_[5][1] = 3./8.; colour_[1][6] = colour_[6][1] = 0.; colour_[1][7] = colour_[7][1] = 1./8.; // 2 colour_[2][3] = colour_[3][2] = 0.5; colour_[2][4] = colour_[4][2] = 1./8.; colour_[2][5] = colour_[5][2] = 0.; colour_[2][6] = colour_[6][2] = 3./8.; colour_[2][7] = colour_[7][2] = 1./8.; // 3 colour_[3][4] = colour_[4][3] = 0.; colour_[3][5] = colour_[5][3] = 1./8.; colour_[3][6] = colour_[6][3] = 1./8.; colour_[3][7] = colour_[7][3] = 3./8.; // 4 colour_[4][5] = colour_[5][4] = 9./16.; colour_[4][6] = colour_[6][4] = 9./16.; colour_[4][7] = colour_[7][4] = 3./16.; // 5 colour_[5][6] = colour_[6][5] = 3./16.; colour_[5][7] = colour_[7][5] = 9./16.; //6 colour_[6][7] = colour_[7][6] = 9./16.; numberOfFlows_ = 8; break; // colour 33bar -> 88, 88 -> 33bar case Colour33barto88: case Colour88to33bar: case Colour38to83: case Colour38to38: case Colour3bar8to83bar: case Colour3bar8to3bar8: colour_ = vector<DVector>(3, DVector(3, 0.)); colour_[0][0] = colour_[1][1] = 16./3.; colour_[0][1] = colour_[1][0] = -2./3.; colour_[2][2]=24.; colour_[0][2] = colour_[2][0] = 4.; colour_[1][2] = colour_[2][1] = 4.; numberOfFlows_ = 3; break; case Colour88to88: colour_ = vector<DVector>(6, DVector(6, 0.)); colour_[0][0] = colour_[1][1] = colour_[2][2]=92./3.; colour_[0][1] = colour_[1][0] = -16./3.; colour_[0][2] = colour_[2][0] = -16./3.; colour_[2][1] = colour_[1][2] = -16./3.; colour_[0][3] = colour_[3][0] = 64./3.; colour_[0][4] = colour_[4][0] = 64./3.; colour_[0][5] = colour_[5][0] = - 8./3.; colour_[1][3] = colour_[3][1] = - 8./3.; colour_[1][4] = colour_[4][1] = 64./3.; colour_[1][5] = colour_[5][1] = 64./3.; colour_[2][3] = colour_[3][2] = 64./3.; colour_[2][4] = colour_[4][2] = - 8./3.; colour_[2][5] = colour_[5][2] = 64./3.; colour_[3][3] = colour_[4][4] = colour_[5][5] = 64.; colour_[3][4] = colour_[4][3] = 8.; colour_[3][5] = colour_[5][3] = 8.; colour_[4][5] = colour_[5][4] = 8.; numberOfFlows_ = 6; break; case Colour33barto18 : case Colour33barto81 : case Colour38to13 : case Colour38to31 : case Colour3bar8to13bar: case Colour3bar8to3bar1: colour_ = vector<DVector>(1,DVector(1,4.)); numberOfFlows_ = 1; break; case Colour88to18 : case Colour88to81: colour_ = vector<DVector>(1,DVector(1,24.)); numberOfFlows_ = 1; break; case Colour88to66bar: colour_ = vector<DVector>(12, DVector(12, 0.)); // diagonals for(unsigned int ix=0;ix<12;++ix) colour_[ix][ix] = 4.; // 1 1 block colour_[ 0][ 1] = colour_[ 1][ 0] = 4./3.; colour_[ 0][ 2] = colour_[ 2][ 0] = 4./3.; colour_[ 0][ 3] = colour_[ 3][ 0] = 0.5 ; colour_[ 1][ 2] = colour_[ 2][ 1] = 0.5 ; colour_[ 1][ 3] = colour_[ 3][ 1] = 4./3.; colour_[ 2][ 3] = colour_[ 3][2] = 4./3.; // 1 2 and 2 1 blocks colour_[ 0][ 4] = colour_[ 4][ 0] = 4./3.; colour_[ 1][ 5] = colour_[ 5][ 1] = 4./3.; colour_[ 2][ 6] = colour_[ 6][ 2] = 4./3.; colour_[ 3][ 7] = colour_[ 7][ 3] = 4./3.; colour_[ 0][ 7] = colour_[ 7][ 0] = -1./6.; colour_[ 1][ 6] = colour_[ 6][ 1] = -1./6.; colour_[ 2][ 5] = colour_[ 5][ 2] = -1./6.; colour_[ 3][ 4] = colour_[ 4][ 3] = -1./6.; // 1 3 and 3 1 blocks colour_[ 0][11] = colour_[11][ 0] = 4./3.; colour_[ 1][10] = colour_[10][ 1] = 4./3.; colour_[ 2][ 9] = colour_[ 9][ 2] = 4./3.; colour_[ 3][ 8] = colour_[ 8][ 3] = 4./3.; colour_[ 0][ 8] = colour_[ 8][ 0] = -1./6.; colour_[ 1][ 9] = colour_[ 9][ 1] = -1./6.; colour_[ 2][10] = colour_[10][ 2] = -1./6.; colour_[ 3][11] = colour_[11][ 3] = -1./6.; // 2 2 block colour_[ 4][ 5] = colour_[ 5][ 4] = 4./3.; colour_[ 4][ 6] = colour_[ 6][ 4] = 4./3.; colour_[ 4][ 7] = colour_[ 7][ 4] = 0.5 ; colour_[ 5][ 6] = colour_[ 6][ 5] = 0.5 ; colour_[ 5][ 7] = colour_[ 7][ 5] = 4./3.; colour_[ 6][ 7] = colour_[ 7][ 6] = 4./3.; // 2 3 and 3 2 blocks colour_[ 4][ 8] = colour_[ 8][ 4] = -0.5 ; colour_[ 4][ 9] = colour_[ 9][ 4] = -1./6.; colour_[ 4][10] = colour_[10][ 4] = -1./6.; colour_[ 4][11] = colour_[11][ 4] = 0.5 ; colour_[ 5][ 8] = colour_[ 8][ 5] = -1./6.; colour_[ 5][ 9] = colour_[ 9][ 5] = -0.5 ; colour_[ 5][10] = colour_[10][ 5] = 0.5 ; colour_[ 5][11] = colour_[11][ 5] = -1./6.; colour_[ 6][ 8] = colour_[ 8][ 6] = -1./6.; colour_[ 6][ 9] = colour_[ 9][ 6] = 0.5 ; colour_[ 6][10] = colour_[10][ 6] = -0.5 ; colour_[ 6][11] = colour_[11][ 6] = -1./6.; colour_[ 7][ 8] = colour_[ 8][ 7] = 0.5 ; colour_[ 7][ 9] = colour_[ 9][ 7] = -1./6.; colour_[ 7][10] = colour_[10][ 7] = -1./6.; colour_[ 7][11] = colour_[11][ 7] = -0.5 ; // 3 3 block colour_[ 8][ 9] = colour_[ 9][ 8] = 4./3.; colour_[ 8][10] = colour_[10][ 8] = 4./3.; colour_[ 8][11] = colour_[11][ 8] = 0.5 ; colour_[ 9][10] = colour_[10][ 9] = 0.5 ; colour_[ 9][11] = colour_[11][ 9] = 4./3.; colour_[10][11] = colour_[11][10] = 4./3.; numberOfFlows_ = 12; break; case Colour33to61: case Colour33to16: case Colour3bar3barto6bar1: case Colour3bar3barto16bar: colour_ = vector<DVector>(2, DVector(2, 0.)); colour_[1][1] = colour_[0][0] = 9./4.; colour_[0][1] = colour_[1][0] = 3./4.; numberOfFlows_ = 2; break; case Colour38to3bar6: case Colour38to63bar: colour_ = vector<DVector>(8, DVector(8, 0.)); // diagonals for(unsigned int ix=0;ix<8;++ix) colour_[ix][ix] = 3.; colour_[0][1] = colour_[1][0] = 1.; colour_[0][2] = colour_[2][0] = 1.; colour_[0][3] = colour_[3][0] = 0.; colour_[0][4] = colour_[4][0] = 1.; colour_[0][5] = colour_[5][0] = 3.; colour_[0][6] = colour_[6][0] = 1.; colour_[0][7] = colour_[7][0] = 0.; // 1 colour_[1][2] = colour_[2][1] = 0.; colour_[1][3] = colour_[3][1] = 1.; colour_[1][4] = colour_[4][1] = 3.; colour_[1][5] = colour_[5][1] = 1.; colour_[1][6] = colour_[6][1] = 0.; colour_[1][7] = colour_[7][1] = 1.; // 2 colour_[2][3] = colour_[3][2] = 1.; colour_[2][4] = colour_[4][2] = 0.; colour_[2][5] = colour_[5][2] = 1.; colour_[2][6] = colour_[6][2] = 3.; colour_[2][7] = colour_[7][2] = 1.; // 3 colour_[3][4] = colour_[4][3] = 1.; colour_[3][5] = colour_[5][3] = 0.; colour_[3][6] = colour_[6][3] = 1.; colour_[3][7] = colour_[7][3] = 3.; // 4 colour_[4][5] = colour_[5][4] = 1.; colour_[4][6] = colour_[6][4] = 0.; colour_[4][7] = colour_[7][4] = 1.; // 5 colour_[5][6] = colour_[6][5] = 1.; colour_[5][7] = colour_[7][5] = 0.; //6 colour_[6][7] = colour_[7][6] = 1.; numberOfFlows_ = 8; break; default: assert(false); } } void GeneralHardME::getDiagrams() const { //get ParticleData pointers for external particles tcPDPtr ina = getParticleData(getIncoming().first); tcPDPtr inb = getParticleData(getIncoming().second); tcPDPtr outa = getParticleData(getOutgoing().first); tcPDPtr outb = getParticleData(getOutgoing().second); for(HPCount idx = 0; idx < numberOfDiagrams_; ++idx) { const HPDiagram & current = getProcessInfo()[idx]; tcPDPtr offshell = current.intermediate; if(!offshell) continue; //t-channel if(current.channelType == HPDiagram::tChannel) { if(offshell->id() < 0) offshell = offshell->CC(); if(current.ordered.second) add(new_ptr((Tree2toNDiagram(3), ina, offshell, inb, 1, outa, 2, outb, -(idx+1)))); else add(new_ptr((Tree2toNDiagram(3), ina, offshell, inb, 2, outa, 1, outb, -(idx+1)))); } //s-channel else if(current.channelType == HPDiagram::sChannel) add(new_ptr((Tree2toNDiagram(2), ina, inb, 1, offshell, 3, outa, 3, outb, -(idx+1)))); else throw MEException() << "getDiagrams() - Unknown diagram in matrix element " << fullName() << Exception::runerror; } } unsigned int GeneralHardME::orderInAlphaS() const { unsigned int order(0); for(HPCount idx = 0; idx < numberOfDiagrams_; ++idx) { unsigned int tOrder = diagrams_[idx].vertices.first->orderInGs() + diagrams_[idx].vertices.second->orderInGs(); if(tOrder > order) order = tOrder; } return order; } unsigned int GeneralHardME::orderInAlphaEW() const { unsigned int order(0); for(HPCount idx = 0; idx < numberOfDiagrams_; ++idx) { unsigned int tOrder = diagrams_[idx].vertices.first->orderInGem() + diagrams_[idx].vertices.second->orderInGem(); if(tOrder > order) order = tOrder; } return order; } Selector<MEBase::DiagramIndex> GeneralHardME::diagrams(const DiagramVector & diags) const { Selector<DiagramIndex> sel; for ( DiagramIndex i = 0; i < diags.size(); ++i ) { if(abs(diags[i]->id()) == int(diagram_+1)) sel.insert(1., i); } return sel; } void GeneralHardME::persistentOutput(PersistentOStream & os) const { os << incoming_ << outgoing_ << diagrams_ << colour_ << oenum(colourStructure_) << numberOfDiagrams_ << numberOfFlows_ << debug_ << scaleChoice_ << scaleFactor_; } void GeneralHardME::persistentInput(PersistentIStream & is, int) { is >> incoming_ >> outgoing_ >> diagrams_ >> colour_ >> ienum(colourStructure_) >> numberOfDiagrams_ >> numberOfFlows_ >> debug_ >> scaleChoice_ >> scaleFactor_; } AbstractClassDescription<GeneralHardME> GeneralHardME::initGeneralHardME; // Definition of the static class description member. void GeneralHardME::Init() { static ClassDocumentation<GeneralHardME> documentation ("This class is designed to be a base class for a specific spin " "configuration where no matrix element exists, i.e. when processes " "are created automaticlly for a different model."); } Selector<const ColourLines *> GeneralHardME::colourGeometries(tcDiagPtr diag) const { // get the current diagram const HPDiagram & current = getProcessInfo()[abs(diag->id()) - 1]; Selector<const ColourLines *> sel; switch(colourStructure_) { case Colour11to11: static ColourLines f11to11(""); sel.insert(1.,&f11to11); break; case Colour11to33bar: static ColourLines f11to33bar[2]={ColourLines("4 -5"), ColourLines("4 2 -5")}; if(current.channelType == HPDiagram::tChannel) sel.insert(1.,&f11to33bar[1]); else sel.insert(1.,&f11to33bar[0]); break; case Colour11to88: static ColourLines f11to88[2]={ColourLines("4 -5, 5 -4"), ColourLines("4 2 -5,5 -2 4")}; if(current.channelType == HPDiagram::tChannel) sel.insert(1.,&f11to88[1]); else sel.insert(1.,&f11to88[0]); break; case Colour33to33: static ColourLines f33to33[4]={ColourLines("1 2 5, 3 -2 4"), ColourLines("1 2 4, 3 -2 5"), ColourLines("1 4, 3 5"), ColourLines("1 5, 3 4")}; static ColourLines f33to33s[4]={ColourLines("1 3:1 4, 2 3:2 5"), ColourLines("1 3:2 4, 2 3:1 5"), ColourLines("1 3:1 5, 2 3:2 4"), ColourLines("1 3:2 5, 2 3:1 4")}; if(current.intermediate->iColour() == PDT::Colour8) sel.insert(1.,current.ordered.second ? &f33to33[0] : &f33to33[1]); else if(current.intermediate->iColour() == PDT::Colour6) { sel.insert(1., &f33to33s[2*(flow_-2)+UseRandom::irnd(0,2)]); } else sel.insert(1.,current.ordered.second ? &f33to33[2] : &f33to33[3]); break; case Colour3bar3barto3bar3bar: static ColourLines f3bar3barto3bar3bar[4]={ColourLines("-1 -2 -5, -3 2 -4"), ColourLines("-1 -2 -4, -3 2 -5"), ColourLines("-1 -4, -3 -5"), ColourLines("-1 -5, -3 -4")}; static ColourLines f3bar3barto3bar3bars[2] ={ColourLines("-1 -3:1 -4, -2 -3:2 -5"), ColourLines("-1 -3:2 -4, -2 -3:1 -5")}; if(current.intermediate->iColour() == PDT::Colour8) sel.insert(1.,current.ordered.second ? &f3bar3barto3bar3bar[0] : &f3bar3barto3bar3bar[1]); else if(current.intermediate->iColour() == PDT::Colour6bar) { sel.insert(1., &f3bar3barto3bar3bars[flow_]); } else sel.insert(1.,current.ordered.second ? &f3bar3barto3bar3bar[2] : &f3bar3barto3bar3bar[3]); break; case Colour33barto33bar: static ColourLines f33barto33bar[4]={ColourLines("1 2 -3, 4 -2 -5"), ColourLines("1 3 4, -2 -3 -5"), ColourLines("1 4, -3 -5"), ColourLines("1 -2, 4 -5")}; if(current.channelType == HPDiagram::tChannel) sel.insert(1.,current.intermediate->iColour() == PDT::Colour8 ? &f33barto33bar[0] : &f33barto33bar[2]); else sel.insert(1.,current.intermediate->iColour() == PDT::Colour8 ? &f33barto33bar[1] : &f33barto33bar[3]); break; case Colour33barto11: static ColourLines f33barto11[2]={ColourLines("1 -2"), ColourLines("1 2 -3")}; if(current.channelType == HPDiagram::tChannel) sel.insert(1.,&f33barto11[1]); else sel.insert(1.,&f33barto11[0]); break; case Colour33barto88: static ColourLines f33barto88[5]={ColourLines("1 4, -4 2 5, -5 -3"), ColourLines("1 5, -5 2 4, -4 -3"), ColourLines("1 3 4, -5 -3 -2, -4 5"), ColourLines("1 3 5, -4 -3 -2, -5 4"), ColourLines("1 -2,4 -5, 5 -4")}; if(current.channelType == HPDiagram::tChannel) sel.insert(1.,current.ordered.second ? &f33barto88[0] : &f33barto88[1]); else if(current.intermediate->iColour() == PDT::Colour8) sel.insert(1.,&f33barto88[flow_+2]); else sel.insert(1.,&f33barto88[4]); break; case Colour33barto18: static ColourLines f33barto18[3]={ColourLines("1 2 5, -3 -5"), ColourLines("1 5, -5 2 -3"), ColourLines("1 3 5,-2 -3 -5")}; if(current.channelType == HPDiagram::tChannel) sel.insert(1.,current.ordered.second ? &f33barto18[0] : &f33barto18[1]); else sel.insert(1.,&f33barto18[2]); break; case Colour33barto81: static ColourLines f33barto81[3]={ColourLines("1 4, -4 2 -3"), ColourLines("-3 -4, 1 2 4"), ColourLines("1 3 4,-2 -3 -4")}; if(current.channelType == HPDiagram::tChannel) sel.insert(1.,current.ordered.second ? &f33barto81[0] : &f33barto81[1]); else sel.insert(1.,&f33barto81[2]); break; case Colour88to11: static ColourLines f88barto11[2]={ColourLines("1 -2, 2 -1"), ColourLines("1 -2 -3, 3 2 -1")}; if(current.channelType == HPDiagram::tChannel) sel.insert(1.,&f88barto11[1]); else sel.insert(1.,&f88barto11[0]); break; case Colour88to33bar: static ColourLines f88to33bar[5]={ColourLines("1 4, -3 -5, 3 2 -1"), ColourLines("-1 -5, 1 2 -3, 3 4"), ColourLines("2 -1, 1 3 4, -2 -3 -5"), ColourLines("1 -2, -1 -3 -5, 2 3 4"), ColourLines("1 -2, 2 -1, 4 -5")}; if(current.channelType == HPDiagram::tChannel) sel.insert(1.,current.ordered.second ? &f88to33bar[0] : &f88to33bar[1]); else if(current.intermediate->iColour() == PDT::Colour8 ) sel.insert(1.,&f88to33bar[flow_+2]); else sel.insert(1.,&f88to33bar[4]); break; case Colour88to88: static ColourLines f88to88[15]={ColourLines("1 -2, -1 -3 -4, 4 -5, 2 3 5"), ColourLines("-1 2, 1 3 4, -4 5, -2 -3 -5"), ColourLines("1 -2, -1 -3 -5, 5 -4, 2 3 4"), ColourLines("-1 2, 1 3 5, -5 4, -2 -3 -4"), ColourLines("1 4, -1 -2 3, -3 -5, -4 2 5"), ColourLines("-1 -4, 1 2 -3, 3 5, 4 -2 -5"), ColourLines("1 4, -1 -2 -5, 3 5, -3 2 -4"), ColourLines("-1 -4, 1 2 5, -3 -5, 3 -2 4"), ColourLines("1 5, -1 -2 3, -3 -4, -5 2 4"), ColourLines("-1 -5, 1 2 -3, 3 4, 5 -2 -4"), ColourLines("1 5, -1 -2 -4, 3 4, -3 2 -5"), ColourLines("-1 -5, 1 2 4, -3 -4, 3 -2 5"), ColourLines("1 -2, 2 -1, 4 -5, 5 -4"), ColourLines("1 4, -1 -4, 3 5, -5 -3"), ColourLines("1 5, -1 -5, 3 4, -3 -4")}; if(current.channelType == HPDiagram::sChannel) { if(current.intermediate->iColour() == PDT::Colour8) { if(flow_==0) { sel.insert(0.5, &f88to88[0]); sel.insert(0.5, &f88to88[1]); } else if(flow_==2) { sel.insert(0.5, &f88to88[2]); sel.insert(0.5, &f88to88[3]); } else assert(false); } else { sel.insert(1., &f88to88[12]); } } else if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) { if(current.intermediate->iColour() == PDT::Colour8) { if(flow_==0) { sel.insert(0.25, &f88to88[4]); sel.insert(0.25, &f88to88[5]); } else if(flow_==1) { sel.insert(0.25, &f88to88[6]); sel.insert(0.25, &f88to88[7]); } else assert(false); } else sel.insert(1., &f88to88[13]); } else { if(current.intermediate->iColour() == PDT::Colour8) { if(flow_==2) { sel.insert(0.25, &f88to88[8]); sel.insert(0.25, &f88to88[9]); } else if(flow_==1) { sel.insert(0.25, &f88to88[10]); sel.insert(0.25, &f88to88[11]); } else assert(false); } else sel.insert(1., &f88to88[14]); } } break; case Colour38to13: static ColourLines f38to13[2]={ColourLines("1 2 -3, 3 5"), ColourLines("1-2, 2 3 5" )}; if(current.channelType == HPDiagram::tChannel) sel.insert(1.,&f38to13[0]); else sel.insert(1.,&f38to13[1]); break; case Colour38to31: static ColourLines f38to31[2]={ColourLines("1 2 -3, 3 4"), ColourLines("1-2, 2 3 4 ")}; if(current.channelType == HPDiagram::tChannel) sel.insert(1.,&f38to31[0]); else sel.insert(1.,&f38to31[1]); break; case Colour3bar8to13bar: static ColourLines f3bar8to13bar[2]={ColourLines("-1 2 3, -3 -5 "), ColourLines("-1 2, -5 -3 -2")}; if(current.channelType == HPDiagram::tChannel) sel.insert(1.,&f3bar8to13bar[0]); else sel.insert(1.,&f3bar8to13bar[1]); break; case Colour3bar8to3bar1: static ColourLines f3bar8to3bar1[2]={ColourLines("-1 2 3, -3 -4 "), ColourLines("-1 2, -4 -3 -2")}; if(current.channelType == HPDiagram::tChannel) sel.insert(1.,&f3bar8to3bar1[0]); else sel.insert(1.,&f3bar8to3bar1[1]); break; case Colour38to83: static ColourLines f38to83[4]={ColourLines("1 4, -4 2 -3, 3 5"), ColourLines("1 -2, 2 3 4, 5 -4"), ColourLines("1 2 4, -4 -3, 3 -2 5"), ColourLines("1 2 -3, -4 -2 5, 3 4")}; if(current.channelType == HPDiagram::sChannel) sel.insert(1.,&f38to83[1]); else { if(current.intermediate->iColour() == PDT::Colour8) sel.insert(1.,&f38to83[flow_+2]); else sel.insert(1.,&f38to83[0]); } break; case Colour38to38: static ColourLines f38to38[4]={ColourLines("1 5, -5 2 -3, 3 4"), ColourLines("1 -2, 2 3 5, 4 -5"), ColourLines("1 2 5, -5 -3, 3 -2 4"), ColourLines("1 2 -3, -5 -2 4, 3 5")}; if(current.channelType == HPDiagram::sChannel) sel.insert(1.,&f38to38[1]); else { if(current.intermediate->iColour() == PDT::Colour8) sel.insert(1.,&f38to38[flow_+2]); else sel.insert(1.,&f38to38[0]); } break; case Colour3bar8to83bar: static ColourLines f3bar8to83bar[4]={ColourLines("-1 -4, 3 2 4, -3 -5"), ColourLines("-1 2, -4 -3 -2, 4 -5"), ColourLines("-1 -2 -4,-3 2 -5,3 4"), ColourLines("-1 -2 3, -5 2 4, -3 -4")}; if(current.channelType == HPDiagram::sChannel) sel.insert(1.,&f3bar8to83bar[1]); else { if(current.intermediate->iColour() == PDT::Colour8) sel.insert(1.,&f3bar8to83bar[flow_+2]); else sel.insert(1.,&f3bar8to83bar[0]); } break; case Colour3bar8to3bar8: static ColourLines f3bar8to3bar8[4]={ColourLines("-1 -5, 3 2 5, -3 -4"), ColourLines("-1 2, -5 -3 -2, 5 -4"), ColourLines("-1 -2 -5,-3 2 -4,3 5"), ColourLines("-1 -2 3, -4 2 5, -3 -5")}; if(current.channelType == HPDiagram::sChannel) sel.insert(1.,&f3bar8to3bar8[1]); else { if(current.intermediate->iColour() == PDT::Colour8) sel.insert(1.,&f3bar8to3bar8[flow_+2]); else sel.insert(1.,&f3bar8to3bar8[0]); } break; case Colour88to18: static ColourLines f88to18[6]={ColourLines(" 1 3 5, -1 2, -2 -3 -5"), ColourLines(" -1 -3 -5, 1 -2, 2 3 5"), ColourLines(" 1 2 -3, -1 -2 -5, 3 5"), ColourLines("-1 -2 3, 1 2 5, -3 -5"), ColourLines(" 1 5, -1 2 3, -3 -2 -5"), ColourLines("-1 -5, 1 -2 -3, 3 2 5")}; if(current.channelType == HPDiagram::sChannel) sel.insert(1.,&f88to18[UseRandom::irnd(0,2)]); else if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) sel.insert(1.,&f88to18[UseRandom::irnd(2,4)]); else sel.insert(1.,&f88to18[UseRandom::irnd(4,6)]); } break; case Colour88to81: static ColourLines f88to81[6]={ColourLines(" 1 3 4, -1 2, -2 -3 -4"), ColourLines(" -1 -3 -4, 1 -2, 2 3 4"), ColourLines(" 1 4, -1 2 3, -3 -2 -4"), ColourLines(" -1 -4, 1 -2 -3, 3 2 4"), ColourLines(" 1 2 -3, -1 -2 -4, 3 4"), ColourLines(" -1 -2 3, 1 2 4, -3 -4")}; if(current.channelType == HPDiagram::sChannel) sel.insert(1.,&f88to81[UseRandom::irnd(0,2)]); else if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) sel.insert(1.,&f88to81[UseRandom::irnd(2,4)]); else sel.insert(1.,&f88to81[UseRandom::irnd(4,6)]); } break; case Colour33barto66bar: static ColourLines f33barto66bars[8] ={ColourLines("1 3 4:1, -2 -3 -5:1, 4:2 -5:2"), ColourLines("1 3 4:1, -2 -3 -5:2, 4:2 -5:1"), ColourLines("1 3 4:2, -2 -3 -5:1, 4:1 -5:2"), ColourLines("1 3 4:2, -2 -3 -5:2, 4:1 -5:1"), ColourLines(""), ColourLines(""), ColourLines(""), ColourLines(""),}; static ColourLines f33barto66bart[8] ={ColourLines(""), ColourLines(""), ColourLines(""), ColourLines(""), ColourLines("1 4:1, 4:2 2 -5:1, -3 -5:2"), ColourLines("1 4:1, 4:2 2 -5:2, -3 -5:1"), ColourLines("1 4:2, 4:1 2 -5:1, -3 -5:2"), ColourLines("1 4:2, 4:1 2 -5:2, -3 -5:1")}; if(current.channelType == HPDiagram::sChannel) sel.insert(1.,&f33barto66bars[flow_]); else if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) sel.insert(1.,&f33barto66bart[flow_]); else assert(false); } break; case Colour33barto6bar6: static ColourLines f33barto6bar6s[8] ={ColourLines("1 3 5:1, -2 -3 -4:1, -4:2 5:2"), ColourLines("1 3 5:1, -2 -3 -4:2, -4:1 5:2"), ColourLines("1 3 5:2, -2 -3 -4:1, -4:2 5:1"), ColourLines("1 3 5:2, -2 -3 -4:2, -4:1 5:1"), ColourLines(""), ColourLines(""), ColourLines(""), ColourLines("")}; static ColourLines f33barto6bar6u[8] ={ColourLines(""), ColourLines(""), ColourLines(""), ColourLines(""), ColourLines("1 5:1, 5:2 2 -4:1, -3 -4:2"), ColourLines("1 5:1, 5:2 2 -4:2, -3 -4:1"), ColourLines("1 5:2, 5:1 2 -4:1, -3 -4:2"), ColourLines("1 5:2, 5:1 2 -4:2, -3 -4:1")}; if(current.channelType == HPDiagram::sChannel) sel.insert(1.,&f33barto6bar6s[flow_]); else if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) assert(false); else sel.insert(1.,&f33barto6bar6u[flow_]); } break; case Colour88to66bar: static ColourLines f88to66t[12]= {ColourLines("1 4:2, 4:1 2:1 3, -1 2:2 -5:2, -3 -5:1"), ColourLines("1 4:1, 4:2 2:2 3, -1 2:1 -5:2, -3 -5:1"), ColourLines("1 4:2, 4:1 2:1 3, -1 2:2 -5:1, -3 -5:2"), ColourLines("1 4:1, 4:2 2:2 3, -1 2:1 -5:1, -3 -5:2"), ColourLines("1 4:2, 4:1 2:2 -5:2, -1 2:1 3, -3 -5:1"), ColourLines("1 4:1, 4:2 2:2 -5:2, -1 2:1 3, -3 -5:1"), ColourLines("1 4:2, 4:1 2:2 -5:1, -1 2:1 3, -3 -5:2"), ColourLines("1 4:1, 4:2 2:2 -5:1, -1 2:1 3, -3 -5:2"), ColourLines(""),ColourLines(""), ColourLines(""),ColourLines("")}; static ColourLines f88to66u[12]= {ColourLines("1 2:2 4:2, 4:1 3, -1 -5:2, -3 2:1 -5:1"), ColourLines("1 2:1 4:1, 4:2 3, -1 -5:2, -3 2:2 -5:1"), ColourLines("1 2:2 4:2, 4:1 3, -1 -5:1, -3 2:1 -5:2"), ColourLines("1 2:1 4:1, 4:2 3, -1 -5:1, -3 2:2 -5:2"), ColourLines(""),ColourLines(""), ColourLines(""),ColourLines(""), ColourLines("-1 -5:1, -5:2 2:2 4:1, 1 2:1 -3, 3 4:2"), ColourLines("-1 -5:1, -5:2 2:2 4:2, 1 2:1 -3, 3 4:1"), ColourLines("-1 -5:2, -5:1 2:2 4:1, 1 2:1 -3, 3 4:2"), ColourLines("-1 -5:2, -5:1 2:2 4:2, 1 2:1 -3, 3 4:1")}; static ColourLines f88to66s[12]= {ColourLines(""),ColourLines(""), ColourLines(""),ColourLines(""), ColourLines("1 3 4:2, 4:1 -5:2, -1 2, -2 -3 -5:1"), ColourLines("1 3 4:1, 4:2 -5:2, -1 2, -2 -3 -5:1"), ColourLines("1 3 4:2, 4:1 -5:1, -1 2, -2 -3 -5:2"), ColourLines("1 3 4:1, 4:2 -5:1, -1 2, -2 -3 -5:2"), ColourLines("-1 -3 -5:1, -5:2 4:1, 1 -2, 2 3 4:2"), ColourLines("-1 -3 -5:1, -5:2 4:2, 1 -2, 2 3 4:1"), ColourLines("-1 -3 -5:2, -5:1 4:1, 1 -2, 2 3 4:2"), ColourLines("-1 -3 -5:2, -5:1 4:2, 1 -2, 2 3 4:1")}; if(current.channelType == HPDiagram::sChannel) sel.insert(1., &f88to66s[flow_]); else if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) { sel.insert(1., &f88to66t[flow_]); } else { sel.insert(1., &f88to66u[flow_]); } } break; case Colour33to61: static ColourLines f33to61t[2] ={ColourLines("1 4:1, 3 2 4:2"), ColourLines("1 4:2, 3 2 4:1")}; static ColourLines f33to61u[2] ={ColourLines("1 2 4:1, 3 4:2"), ColourLines("1 2 4:2, 3 4:1")}; if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) sel.insert(1., &f33to61t[flow_]); else sel.insert(1., &f33to61u[flow_]); } else assert(false); break; case Colour33to16: static ColourLines f33to16t[2] ={ColourLines("1 2 5:1, 3 5:2"), ColourLines("1 2 5:2, 3 5:1")}; static ColourLines f33to16u[2] ={ColourLines("1 5:1, 3 2 5:2"), ColourLines("1 5:2, 3 2 5:1")}; if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) sel.insert(1., &f33to16t[flow_]); else sel.insert(1., &f33to16u[flow_]); } else assert(false); break; case Colour3bar3barto6bar1: static ColourLines f3bar3barto6bar1t[2] ={ColourLines("-1 -4:1, -3 -2 -4:2"), ColourLines("-1 -4:2, -3 -2 -4:1")}; static ColourLines f3bar3barto6bar1u[2] ={ColourLines("-1 -2 -4:1, -3 -4:2"), ColourLines("-1 -2 -4:2, -3 -4:1")}; if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) sel.insert(1., &f3bar3barto6bar1t[flow_]); else sel.insert(1., &f3bar3barto6bar1u[flow_]); } break; case Colour3bar3barto16bar: static ColourLines f3bar3barto16bart[2] ={ColourLines("-1 -2 -5:1, -3 -5:2"), ColourLines("-1 -2 -5:2, -3 -5:1")}; static ColourLines f3bar3barto16baru[2] ={ColourLines("-1 -5:1, -3 -2 -5:2"), ColourLines("-1 -5:2, -3 -2 -5:1")}; if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) sel.insert(1., &f3bar3barto16bart[flow_]); else sel.insert(1., &f3bar3barto16baru[flow_]); } break; case Colour38to3bar6: static ColourLines f38to3bar6t[8] ={ColourLines("1 2:1 -3, -4 2:2 5:1, 3 5:2"), ColourLines("1 2:1 -3, -4 2:2 5:2, 3 5:1"), ColourLines("1 2:1 5:1, -4 2:2 -3, 3 5:2"), ColourLines("1 2:1 5:2, -4 2:2 -3, 3 5:1"), ColourLines(""),ColourLines(""), ColourLines(""),ColourLines("")}; static ColourLines f38to3bar6u[8] ={ColourLines(""),ColourLines(""), ColourLines(""),ColourLines(""), ColourLines("1 5:1, 3 2 5:2, -4 -3"), ColourLines("1 5:2, 3 2 5:1, -4 -3"), ColourLines(""),ColourLines("")}; static ColourLines f38to3bar6s[8] ={ColourLines(""),ColourLines(""), ColourLines(""),ColourLines(""), ColourLines(""),ColourLines(""), ColourLines("1 -2, 2 3 5:1, -4 5:2"), ColourLines("1 -2, 2 3 5:2, -4 5:1")}; if(current.channelType == HPDiagram::sChannel) sel.insert(1., &f38to3bar6s[flow_]); else if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) sel.insert(1., &f38to3bar6t[flow_]); else sel.insert(1., &f38to3bar6u[flow_]); } break; case Colour38to63bar: static ColourLines f38to63baru[8] ={ColourLines("1 2:1 -3, -5 2:2 4:1, 3 4:2"), ColourLines("1 2:1 -3, -5 2:2 4:2, 3 4:1"), ColourLines("1 2:1 4:1, -5 2:2 -3, 3 4:2"), ColourLines("1 2:1 4:2, -5 2:2 -3, 3 4:1"), ColourLines(""),ColourLines(""), ColourLines(""),ColourLines("")}; static ColourLines f38to63bart[8] ={ColourLines(""),ColourLines(""), ColourLines(""),ColourLines(""), ColourLines("1 4:1, 3 2 4:2, -5 -3"), ColourLines("1 4:2, 3 2 4:1, -5 -3"), ColourLines(""),ColourLines("")}; static ColourLines f38to63bars[8] ={ColourLines(""),ColourLines(""), ColourLines(""),ColourLines(""), ColourLines(""),ColourLines(""), ColourLines("1 -2, 2 3 4:1, -5 4:2"), ColourLines("1 -2, 2 3 4:2, -5 4:1")}; if(current.channelType == HPDiagram::sChannel) sel.insert(1., &f38to63bars[flow_]); else if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) sel.insert(1., &f38to63bart[flow_]); else sel.insert(1., &f38to63baru[flow_]); } break; default: assert(false); } return sel; } double GeneralHardME:: selectColourFlow(vector<double> & flow,vector<double> & me, double average) const { // spin average double output = 0.25*average; // special for beam polarization tcPolarizedBeamPDPtr beam[2] = {dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[0]), dynamic_ptr_cast<tcPolarizedBeamPDPtr>(mePartonData()[1])}; if( beam[0] || beam[1] ) { RhoDMatrix rho[2] = {beam[0] ? beam[0]->rhoMatrix() : RhoDMatrix(mePartonData()[0]->iSpin()), beam[1] ? beam[1]->rhoMatrix() : RhoDMatrix(mePartonData()[1]->iSpin())}; for(unsigned int ix = 0;ix<numberOfFlows();++ix) flow[ix] = flowME_[ix].average(rho[0],rho[1]); for(unsigned int ix = 0;ix<numberOfDiags();++ix) me [ix] = diagramME_[ix].average(rho[0],rho[1]); output = 0.; for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) for(unsigned int ij = 0; ij < numberOfFlows(); ++ij) output += real(getColourFactors()[ii][ij]* flowME_[ii].average(flowME_[ij],rho[0],rho[1])); // correction for photons and gluons if(mePartonData()[0]->id()==ParticleID::g || mePartonData()[0]->id()==ParticleID::gamma) output *= 1.5; if(mePartonData()[1]->id()==ParticleID::g || mePartonData()[1]->id()==ParticleID::gamma) output *= 1.5; } // select the colour flow double maxWgt = UseRandom::rnd()*std::accumulate(flow.begin(),flow.end(),0.); flow_ = flow.size(); for(unsigned int ix=0;ix<flow.size();++ix) { if(flow[ix]>=maxWgt) { flow_=ix; break; } maxWgt -= flow[ix]; } assert(flow_<flow.size()); // select the diagram for(unsigned int ix=0;ix<numberOfDiags();++ix) { const HPDiagram & current = getProcessInfo()[ix]; bool found=false; for(unsigned int iy = 0; iy < current.colourFlow.size(); ++iy) { if(current.colourFlow[iy].first==flow_) { me[ix] *= sqr(current.colourFlow[iy].second); found = true; } } // set to zero if four point diagram or doesn't contribute to colour flow if(!found || current.channelType == HPDiagram::fourPoint) me[ix]=0.; } maxWgt = UseRandom::rnd()*std::accumulate(me.begin(),me.end(),0.); for(unsigned int ix=0;ix<me.size();++ix) { if(me[ix]>maxWgt) { diagram_=ix; break; } maxWgt -= me[ix]; } // colour factors output /= max(1,abs(int(mePartonData()[0]->iColour()))); output /= max(1,abs(int(mePartonData()[1]->iColour()))); // identical particle factor output *= mePartonData()[2]->id() == mePartonData()[3]->id() ? 0.5 : 1; // return the answer return output; } void GeneralHardME::doinitrun() { HwMEBase::doinitrun(); for(unsigned int ix=0;ix<diagrams_.size();++ix) { diagrams_[ix].vertices.first ->initrun(); diagrams_[ix].vertices.second->initrun(); } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEff2ff.cc������������������������������������������������0000644�0001750�0001750�00000064277�11754474776�022676� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEff2ff.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEff2ff class. // #include "MEff2ff.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using ThePEG::Helicity::VectorWaveFunction; using ThePEG::Helicity::ScalarWaveFunction; using ThePEG::Helicity::TensorWaveFunction; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; void MEff2ff::doinit() { GeneralHardME::doinit(); scalar_.resize(numberOfDiags()); vector_.resize(numberOfDiags()); tensor_.resize(numberOfDiags()); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1Half)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1Half)); for(size_t ix = 0;ix < numberOfDiags(); ++ix) { const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if(offshell->iSpin() == PDT::Spin0) { AbstractFFSVertexPtr vert1 = dynamic_ptr_cast<AbstractFFSVertexPtr> (current.vertices.first); AbstractFFSVertexPtr vert2 = dynamic_ptr_cast<AbstractFFSVertexPtr> (current.vertices.second); scalar_[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin1) { AbstractFFVVertexPtr vert1 = dynamic_ptr_cast<AbstractFFVVertexPtr> (current.vertices.first); AbstractFFVVertexPtr vert2 = dynamic_ptr_cast<AbstractFFVVertexPtr> (current.vertices.second); vector_[ix] = make_pair(vert1, vert2); } else if(offshell->iSpin() == PDT::Spin2) { AbstractFFTVertexPtr vert1 = dynamic_ptr_cast<AbstractFFTVertexPtr> (current.vertices.first); AbstractFFTVertexPtr vert2 = dynamic_ptr_cast<AbstractFFTVertexPtr> (current.vertices.second); tensor_[ix] = make_pair(vert1, vert2); } } } void MEff2ff::doinitrun() { GeneralHardME::doinitrun(); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1Half)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1Half)); } double MEff2ff::me2() const { tcPDPtr ina (mePartonData()[0]), inb (mePartonData()[1]); tcPDPtr outa(mePartonData()[2]), outb(mePartonData()[3]); for(unsigned int ix=0;ix<4;++ix) { spin_[ix].clear(); sbar_[ix].clear(); for(unsigned int ih=0;ih<2;++ih) { spin_[ix].push_back(SpinorWaveFunction (rescaledMomenta()[ix], mePartonData()[ix], ih, ix<2 ? incoming : outgoing)); sbar_[ix].push_back(SpinorBarWaveFunction(rescaledMomenta()[ix], mePartonData()[ix], ih, ix<2 ? incoming : outgoing)); } } bool majorana(false); if( (!outa->CC() && !outb->CC() ) || ((abs(outa->id()) > 1000000 && abs(outa->id()) < 2000000) && (abs(outb->id()) > 1000000 && abs(outb->id()) < 2000000)) ) majorana = true; double full_me(0.); if( ina->id() > 0 && inb->id() < 0) { if(majorana) ffb2mfmfHeME(full_me,true); else ffb2ffbHeME (full_me,true); } else if( ina->id() > 0 && inb->id() > 0 ) ff2ffHeME(full_me,true); else if( ina->id() < 0 && inb->id() < 0 ) fbfb2fbfbHeME(full_me,true); else throw MEException() << "MEff2ff::me2() - Cannot find correct function to deal with process " << ina->PDGName() << "," << inb->PDGName() << "->" << outa->PDGName() << "," << outb->PDGName() << "\n"; #ifndef NDEBUG if( debugME() ) debug(full_me); #endif return full_me; } ProductionMatrixElement MEff2ff::ffb2ffbHeME(double & me2, bool first) const { const Energy2 q2(scale()); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); // flow over the helicities and diagrams for(unsigned int ifhel1 = 0; ifhel1 < 2; ++ifhel1) { for(unsigned int ifhel2 = 0; ifhel2 < 2; ++ifhel2) { for(unsigned int ofhel1 = 0; ofhel1 < 2; ++ofhel1) { for(unsigned int ofhel2 = 0; ofhel2 < 2; ++ofhel2) { vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if(current.channelType == HPDiagram::tChannel) { if(offshell->iSpin() == PDT::Spin0) { ScalarWaveFunction interS = scalar_[ix].second-> evaluate(q2, 3, offshell,spin_[3][ofhel2], sbar_[1][ifhel2]); diag = scalar_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[2][ofhel1], interS); } else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interV = vector_[ix].second-> evaluate(q2, 3, offshell,spin_[3][ofhel2], sbar_[1][ifhel2]); diag = -vector_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[2][ofhel1], interV); } else if(offshell->iSpin() == PDT::Spin2) { TensorWaveFunction interT = tensor_[ix].second-> evaluate(q2, 3, offshell,spin_[3][ofhel2], sbar_[1][ifhel2]); diag = tensor_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[2][ofhel1], interT); } } else if(current.channelType == HPDiagram::sChannel) { if(offshell->iSpin() == PDT::Spin0) { ScalarWaveFunction interS = scalar_[ix].second-> evaluate(q2, 1, offshell,spin_[3][ofhel2],sbar_[2][ofhel1]); diag = scalar_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[1][ifhel2], interS); } else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interV = vector_[ix].second-> evaluate(q2, 1, offshell,spin_[3][ofhel2],sbar_[2][ofhel1]); diag = vector_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[1][ifhel2], interV); } else if(offshell->iSpin() == PDT::Spin2) { TensorWaveFunction interT = tensor_[ix].second-> evaluate(q2, 1, offshell,spin_[3][ofhel2],sbar_[2][ofhel1]); diag = tensor_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[1][ifhel2], interT); } } else assert(false); me[ix] += norm(diag); diagramME()[ix](ifhel1, ifhel2, ofhel1, ofhel2) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](ifhel1, ifhel2, ofhel1, ofhel2) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) { for(size_t ij = 0; ij < numberOfFlows(); ++ij) { me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); } } // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } ProductionMatrixElement MEff2ff:: ff2ffHeME(double & me2, bool first) const { const Energy2 q2(scale()); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); // flow over the helicities and diagrams for(unsigned int ifhel1 = 0; ifhel1 < 2; ++ifhel1) { for(unsigned int ifhel2 = 0; ifhel2 < 2; ++ifhel2) { for(unsigned int ofhel1 = 0; ofhel1 < 2; ++ofhel1) { for(unsigned int ofhel2 = 0; ofhel2 < 2; ++ofhel2) { vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if(current.channelType == HPDiagram::tChannel) { if(offshell->iSpin() == PDT::Spin0) { if(current.ordered.second) { ScalarWaveFunction interS = scalar_[ix].second-> evaluate(q2, 3, offshell,spin_[1][ifhel2],sbar_[3][ofhel2]); diag = scalar_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[2][ofhel1], interS); } else { ScalarWaveFunction interS = scalar_[ix].second-> evaluate(q2, 3, offshell,spin_[1][ifhel2],sbar_[2][ofhel1]); diag = scalar_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[3][ofhel2], interS); } } else if(offshell->iSpin() == PDT::Spin1) { if(current.ordered.second) { VectorWaveFunction interV = vector_[ix].second-> evaluate(q2, 3, offshell,spin_[1][ifhel2],sbar_[3][ofhel2]); diag = vector_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[2][ofhel1], interV); } else { VectorWaveFunction interV = vector_[ix].second-> evaluate(q2, 3, offshell,spin_[1][ifhel2],sbar_[2][ofhel1]); diag = -vector_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[3][ofhel2], interV); } } else if(offshell->iSpin() == PDT::Spin2) { if(current.ordered.second) { TensorWaveFunction interT = tensor_[ix].second-> evaluate(q2, 3, offshell,spin_[1][ifhel2],sbar_[3][ofhel2]); diag = tensor_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[2][ofhel1], interT); } else { TensorWaveFunction interT = tensor_[ix].second-> evaluate(q2, 3, offshell,spin_[1][ifhel2],sbar_[2][ofhel1]); diag = tensor_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[3][ofhel2], interT); } } } else if(current.channelType == HPDiagram::sChannel) { if(offshell->iSpin() == PDT::Spin0) { ScalarWaveFunction interS = scalar_[ix].second-> evaluate(q2, 1, offshell,spin_[3][ofhel2],sbar_[2][ofhel1]); diag = scalar_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[1][ifhel2], interS); } else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interV = vector_[ix].second-> evaluate(q2, 1, offshell,spin_[3][ofhel2],sbar_[2][ofhel1]); diag = vector_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[1][ifhel2], interV); } else if(offshell->iSpin() == PDT::Spin2) { TensorWaveFunction interT = tensor_[ix].second-> evaluate(q2, 1, offshell,spin_[3][ofhel2],sbar_[2][ofhel1]); diag = tensor_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[1][ifhel2], interT); } } else assert(false); me[ix] += norm(diag); diagramME()[ix](ifhel1, ifhel2, ofhel1, ofhel2) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](ifhel1, ifhel2, ofhel1, ofhel2) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) for(size_t ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } ProductionMatrixElement MEff2ff::fbfb2fbfbHeME(double & me2, bool first) const { const Energy2 q2(scale()); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); // flow over the helicities and diagrams for(unsigned int ifhel1 = 0; ifhel1 < 2; ++ifhel1) { for(unsigned int ifhel2 = 0; ifhel2 < 2; ++ifhel2) { for(unsigned int ofhel1 = 0; ofhel1 < 2; ++ofhel1) { for(unsigned int ofhel2 = 0; ofhel2 < 2; ++ofhel2) { vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if(current.channelType == HPDiagram::tChannel) { if(offshell->iSpin() == PDT::Spin0) { if(current.ordered.second) { ScalarWaveFunction interS = scalar_[ix].second-> evaluate(q2, 3, offshell,spin_[3][ofhel2],sbar_[1][ifhel2]); diag = scalar_[ix].first-> evaluate(q2, spin_[2][ofhel1], sbar_[0][ifhel1], interS); } else { ScalarWaveFunction interS = scalar_[ix].second-> evaluate(q2, 3, offshell,spin_[2][ofhel1],sbar_[1][ifhel2]); diag = -scalar_[ix].first-> evaluate(q2, spin_[3][ofhel2], sbar_[0][ifhel1], interS); } } else if(offshell->iSpin() == PDT::Spin1) { if(current.ordered.second) { VectorWaveFunction interV = vector_[ix].second-> evaluate(q2, 3, offshell,spin_[3][ofhel2],sbar_[1][ifhel2]); diag = vector_[ix].first-> evaluate(q2, spin_[2][ofhel1], sbar_[0][ifhel1], interV); } else { VectorWaveFunction interV = vector_[ix].second-> evaluate(q2, 3, offshell,spin_[2][ofhel1],sbar_[1][ifhel2]); diag = -vector_[ix].first-> evaluate(q2, spin_[3][ofhel2], sbar_[0][ifhel1], interV); } } else if(offshell->iSpin() == PDT::Spin2) { if(current.ordered.second) { TensorWaveFunction interT = tensor_[ix].second-> evaluate(q2, 3, offshell,spin_[3][ofhel2],sbar_[1][ifhel2]); diag = tensor_[ix].first-> evaluate(q2, spin_[2][ofhel1], sbar_[0][ifhel1], interT); } else { TensorWaveFunction interT = tensor_[ix].second-> evaluate(q2, 3, offshell,spin_[2][ofhel1],sbar_[1][ifhel2]); diag = -tensor_[ix].first-> evaluate(q2, spin_[3][ofhel2], sbar_[0][ifhel1], interT); } } } else if(current.channelType == HPDiagram::sChannel) { if(offshell->iSpin() == PDT::Spin0) { ScalarWaveFunction interS = scalar_[ix].second-> evaluate(q2, 1, offshell,spin_[3][ofhel2],sbar_[2][ofhel1]); diag = scalar_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[1][ifhel2], interS); } else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interV = vector_[ix].second-> evaluate(q2, 1, offshell,spin_[3][ofhel2],sbar_[2][ofhel1]); diag = vector_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[1][ifhel2], interV); } else if(offshell->iSpin() == PDT::Spin2) { TensorWaveFunction interT = tensor_[ix].second-> evaluate(q2, 1, offshell,spin_[3][ofhel2],sbar_[2][ofhel1]); diag = tensor_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[1][ifhel2], interT); } } else { assert(false); } me[ix] += norm(diag); diagramME()[ix](ifhel1, ifhel2, ofhel1, ofhel2) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](ifhel1, ifhel2, ofhel1, ofhel2) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) for(size_t ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } ProductionMatrixElement MEff2ff::ffb2mfmfHeME(double & me2, bool first) const { const Energy2 q2(scale()); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); // flow over the helicities and diagrams for(unsigned int ifhel1 = 0; ifhel1 < 2; ++ifhel1) { for(unsigned int ifhel2 = 0; ifhel2 < 2; ++ifhel2) { for(unsigned int ofhel1 = 0; ofhel1 < 2; ++ofhel1) { for(unsigned int ofhel2 = 0; ofhel2 < 2; ++ofhel2) { vector<Complex> flows(numberOfFlows(),0.); for(size_t ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr offshell = current.intermediate; if(current.channelType == HPDiagram::tChannel) { if(offshell->iSpin() == PDT::Spin0) { if(current.ordered.second) { ScalarWaveFunction interS = scalar_[ix].second-> evaluate(q2, 3, offshell,spin_[3][ofhel2],sbar_[1][ifhel2]); diag = scalar_[ix].first-> evaluate(q2, spin_[0][ifhel1],sbar_[2][ofhel1],interS); } else { ScalarWaveFunction interS = scalar_[ix].second-> evaluate(q2, 3, offshell,spin_[2][ofhel1],sbar_[1][ifhel2]); diag = -scalar_[ix].first-> evaluate(q2, spin_[0][ifhel1],sbar_[3][ofhel2],interS); } } else if(offshell->iSpin() == PDT::Spin1) { if(current.ordered.second) { VectorWaveFunction interV = vector_[ix].second-> evaluate(q2, 3, offshell,spin_[3][ofhel2],sbar_[1][ifhel2]); diag = vector_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[2][ofhel1], interV); } else { VectorWaveFunction interV = vector_[ix].second-> evaluate(q2, 3, offshell,spin_[2][ofhel1],sbar_[1][ifhel2]); diag = vector_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[3][ofhel2], interV); } } else if(offshell->iSpin() == PDT::Spin2) { if(current.ordered.second) { TensorWaveFunction interT = tensor_[ix].second-> evaluate(q2, 3, offshell,spin_[3][ofhel2],sbar_[1][ifhel2]); diag = tensor_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[2][ofhel1], interT); } else { TensorWaveFunction interT = tensor_[ix].second-> evaluate(q2, 3, offshell,spin_[2][ofhel1],sbar_[1][ifhel2]); diag = tensor_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[3][ofhel2], interT); } } } else if(current.channelType == HPDiagram::sChannel) { if(offshell->iSpin() == PDT::Spin0) { ScalarWaveFunction interS = scalar_[ix].second-> evaluate(q2, 1, offshell,spin_[3][ofhel2],sbar_[2][ofhel1]); diag = scalar_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[1][ifhel2], interS); } else if(offshell->iSpin() == PDT::Spin1) { VectorWaveFunction interV = vector_[ix].second-> evaluate(q2, 1, offshell,spin_[3][ofhel2],sbar_[2][ofhel1]); diag = vector_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[1][ifhel2], interV); } else if(offshell->iSpin() == PDT::Spin2) { TensorWaveFunction interT = tensor_[ix].second-> evaluate(q2, 1, offshell,spin_[3][ofhel2],sbar_[2][ofhel1]); diag = tensor_[ix].first-> evaluate(q2, spin_[0][ifhel1], sbar_[1][ifhel2], interT); } } else assert(false); me[ix] += norm(diag); diagramME()[ix](ifhel1, ifhel2, ofhel1, ofhel2) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](ifhel1, ifhel2, ofhel1, ofhel2) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) for(size_t ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } void MEff2ff::constructVertex(tSubProPtr subp) { // Hard process external particles ParticleVector hardpro = hardParticles(subp); //Need to use rescale momenta to calculate matrix element setRescaledMomenta(hardpro); for(unsigned int ix=0;ix<4;++ix) { spin_[ix].clear(); sbar_[ix].clear(); for(unsigned int ih=0;ih<2;++ih) { SpinorWaveFunction (spin_[ix],hardpro[ix], ix<2 ? incoming : outgoing,ix>1); SpinorBarWaveFunction(sbar_[ix],hardpro[ix], ix<2 ? incoming : outgoing,ix>1); } } double dummy(0.); //pick which process we are doing if( hardpro[0]->id() > 0) { //majorana if( (!hardpro[2]->dataPtr()->CC() && !hardpro[3]->dataPtr()->CC() ) || ((abs(hardpro[2]->id()) > 1000000 && abs(hardpro[2]->id()) < 2000000) && (abs(hardpro[3]->id()) > 1000000 && abs(hardpro[3]->id()) < 2000000)) ) { ProductionMatrixElement prodME = ffb2mfmfHeME(dummy,false); createVertex(prodME,hardpro); } //ffbar->ffbar else if( hardpro[1]->id() < 0 ) { ProductionMatrixElement prodME = ffb2ffbHeME(dummy,false); createVertex(prodME,hardpro); } //ff2ff else { ProductionMatrixElement prodME = ff2ffHeME(dummy,false); createVertex(prodME,hardpro); } } //fbarfbar->fbarfbar else { ProductionMatrixElement prodME = fbfb2fbfbHeME(dummy,false); createVertex(prodME,hardpro); } #ifndef NDEBUG if( debugME() ) debug(dummy); #endif } void MEff2ff::persistentOutput(PersistentOStream & os) const { os << scalar_ << vector_ << tensor_; } void MEff2ff::persistentInput(PersistentIStream & is, int) { is >> scalar_ >> vector_ >> tensor_; } ClassDescription<MEff2ff> MEff2ff::initMEff2ff; // Definition of the static class description member. void MEff2ff::Init() { static ClassDocumentation<MEff2ff> documentation ("This is the implementation of the matrix element for fermion-" "antifermion -> fermion-antifermion."); } void MEff2ff::debug(double me2) const { if( !generator()->logfile().is_open() ) return; long id1 = mePartonData()[0]->id(); long id2 = mePartonData()[1]->id(); long id3 = mePartonData()[2]->id(); long id4 = mePartonData()[3]->id(); long aid1 = abs(mePartonData()[0]->id()); long aid2 = abs(mePartonData()[1]->id()); long aid3 = abs(mePartonData()[2]->id()); long aid4 = abs(mePartonData()[3]->id()); if( (aid1 != 1 && aid1 != 2) || (aid2 != 1 && aid2 != 2) ) return; double analytic(0.); if( id3 == id4 && id3 == 1000021 ) { tcSMPtr sm = generator()->standardModel(); double gs4 = sqr( 4.*Constants::pi*sm->alphaS(scale()) ); int Nc = sm->Nc(); double Cf = (sqr(Nc) - 1.)/2./Nc; Energy2 mgo2 = meMomenta()[3].m2(); long squark = (aid1 == 1) ? 1000001 : 1000002; Energy2 muL2 = sqr(getParticleData(squark)->mass()); Energy2 deltaL = muL2 - mgo2; Energy2 muR2 = sqr(getParticleData(squark + 1000000)->mass()); Energy2 deltaR = muR2 - mgo2; Energy2 s(sHat()); Energy2 m3s = meMomenta()[2].m2(); Energy2 m4s = meMomenta()[3].m2(); Energy4 spt2 = uHat()*tHat() - m3s*m4s; Energy2 t3(tHat() - m3s), u4(uHat() - m4s); double Cl = 2.*spt2*( (u4*u4 - deltaL*deltaL) + (t3*t3 - deltaL*deltaL) - (s*s/Nc/Nc) )/s/s/(u4 - deltaL)/(t3 - deltaL); Cl += deltaL*deltaL*( (1./sqr(t3 - deltaL)) + (1./sqr(u4 - deltaL)) - ( sqr( (1./(t3 - deltaL)) - (1./(u4 - deltaL)) )/Nc/Nc ) ); double Cr = 2.*spt2*( (u4*u4 - deltaR*deltaR) + (t3*t3 - deltaR*deltaR) - (s*s/Nc/Nc) )/s/s/(u4 - deltaR)/(t3 - deltaR); Cr += deltaR*deltaR*( (1./sqr(t3 - deltaR)) + (1./sqr(u4 - deltaR)) - ( sqr( (1./(t3 - deltaR)) - (1./(u4 - deltaR)) )/Nc/Nc ) ); analytic = gs4*Cf*(Cl + Cr)/4.; } else if( (aid3 == 5100001 || aid3 == 5100002 || aid3 == 6100001 || aid3 == 6100002) && (aid4 == 5100001 || aid4 == 5100002 || aid4 == 6100001 || aid4 == 6100002) ) { tcSMPtr sm = generator()->standardModel(); double gs4 = sqr( 4.*Constants::pi*sm->alphaS(scale()) ); Energy2 s(sHat()); Energy2 mf2 = meMomenta()[2].m2(); Energy2 t3(tHat() - mf2), u4(uHat() - mf2); Energy4 s2(sqr(s)), t3s(sqr(t3)), u4s(sqr(u4)); bool iflav = (aid2 - aid1 == 0); int alpha(aid3/1000000), beta(aid4/1000000); bool oflav = ((aid3 - aid1) % 10 == 0); if( alpha != beta ) { if( ( id1 > 0 && id2 > 0) || ( id1 < 0 && id2 < 0) ) { if( iflav ) analytic = gs4*( mf2*(2.*s2*s/t3s/u4s - 4.*s/t3/u4) + 2.*sqr(s2)/t3s/u4s - 8.*s2/t3/u4 + 5. )/9.; else analytic = gs4*( -2.*mf2*(1./t3 + u4/t3s) + 0.5 + 2.*u4s/t3s)/9.; } else analytic = gs4*( 2.*mf2*(1./t3 + u4/t3s) + 5./2. + 4.*u4/t3 + 2.*u4s/t3s)/9.; } else { if( ( id1 > 0 && id2 > 0) || ( id1 < 0 && id2 < 0) ) { if( iflav ) { analytic = gs4*( mf2*(6.*t3/u4s + 6.*u4/t3s - s/t3/u4) + 2.*(3.*t3s/u4s + 3.*u4s/t3s + 4.*s2/t3/u4 - 5.) )/27.; } else analytic = 2.*gs4*( -mf2*s/t3s + 0.25 + s2/t3s )/9.; } else { if( iflav ) { if( oflav ) analytic = gs4*( 2.*mf2*(4./s + s/t3s - 1./t3) + 23./6.+ 2.*s2/t3s + 8.*s/3./t3 + 6.*t3/s + 8.*t3s/s2 )/9.; else analytic = 4.*gs4*( 2.*mf2/s + (t3s + u4s)/s2)/9.; } else analytic = gs4*(4.*mf2*s/t3s + 5. + 4.*s2/t3s + 8.*s/t3 )/18.; } } if( id3 == id4 ) analytic /= 2.; } else return; double diff = abs(analytic - me2); if( diff > 1e-4 ) { generator()->log() << mePartonData()[0]->PDGName() << "," << mePartonData()[1]->PDGName() << "->" << mePartonData()[2]->PDGName() << "," << mePartonData()[3]->PDGName() << " difference: " << setprecision(10) << diff << " ratio: " << analytic/me2 << '\n'; } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEff2sv.h�������������������������������������������������0000644�0001750�0001750�00000014720�11754474776�022561� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEff2sv.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEff2sv_H #define HERWIG_MEff2sv_H // // This is the declaration of the MEff2sv class. // #include "GeneralHardME.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" namespace Herwig { using namespace ThePEG; using Helicity::SpinorWaveFunction; using Helicity::SpinorBarWaveFunction; using Helicity::VectorWaveFunction; using Helicity::ScalarWaveFunction; /** * The MEff2sv class is designed to implement the matrix element for a * fermion-antifermion to vector-scalar hard process. It inherits from * GeneralHardME and implements the appropriate virtual functions for this * specific spin combination. * * @see \ref MEff2svInterfaces "The interfaces" * defined for MEff2sv. * @see GeneralHardME */ class MEff2sv: public GeneralHardME { public: /** @name Typedefs */ //@{ /** * A vector of SpinorWaveFunctions */ typedef vector<SpinorWaveFunction> SpinorVector; /** * A vector of SpinorWaveBarFunctions */ typedef vector<SpinorBarWaveFunction> SpinorBarVector; /** * A vector of VectorWaveFunctions */ typedef vector<VectorWaveFunction> VBVector; //@} public: /** * The default constructor. */ MEff2sv() : scalar_(0), vector_(0), fermion_(0) {} /** @name Virtual functions required by the MEBase class. */ //@{ /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; //@} /** * Construct the vertex information for the spin correlations * @param sub Pointer to the relevent SubProcess */ virtual void constructVertex(tSubProPtr sub); 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 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEff2sv> initMEff2sv; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEff2sv & operator=(const MEff2sv &); private: /** @name Functions to compute the ProductionMatrixElement. */ //@{ /** * Compute the matrix element for \f$\Psi\bar{\Psi}\to\Psi\bar{\Psi}\f$ * @param sp Spinors for first incoming particle * @param spbar SpinorBar Wavefunctions for second incoming particle * @param vec VectorWaveFunctions for outgoing vector * @param sca Outgoing ScalarWaveFunction * @param me2 colour averaged, spin summed ME * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @return ProductionMatrixElement containing results of * helicity calculations */ ProductionMatrixElement ffb2svHeME(SpinorVector & sp, SpinorBarVector & spbar, ScalarWaveFunction & sca, VBVector & vec, double & me2,bool first) const; //@} private: /** * Storage for dynamically cast vertices for a diagram with intermediate * scalar */ vector<pair<AbstractFFSVertexPtr, AbstractVSSVertexPtr> > scalar_; /** * Storage for dynamically cast vertices for a diagram with intermediate * vector */ vector<pair<AbstractFFVVertexPtr, AbstractVVSVertexPtr> > vector_; /** * Storage for dynamically cast vertices for a diagram with intermediate * fermion */ vector<pair<AbstractFFSVertexPtr, AbstractFFVVertexPtr> > fermion_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEff2sv. */ template <> struct BaseClassTrait<Herwig::MEff2sv,1> { /** Typedef of the first base class of MEff2sv. */ typedef Herwig::GeneralHardME NthBase; }; /** This template specialization informs ThePEG about the name of * the MEff2sv class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEff2sv> : public ClassTraitsBase<Herwig::MEff2sv> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEff2sv"; } }; /** @endcond */ } #endif /* HERWIG_MEff2sv_H */ ������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEff2tv.cc������������������������������������������������0000644�0001750�0001750�00000030325�11754474776�022717� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the MEff2tv class. // #include "MEff2tv.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IBPtr MEff2tv::clone() const { return new_ptr(*this); } IBPtr MEff2tv::fullclone() const { return new_ptr(*this); } void MEff2tv::persistentOutput(PersistentOStream & os) const { os << fermion_ << vector_ << fourPoint_; } void MEff2tv::persistentInput(PersistentIStream & is, int) { is >> fermion_ >> vector_ >> fourPoint_; } ClassDescription<MEff2tv> MEff2tv::initMEff2tv; // Definition of the static class description member. void MEff2tv::Init() { static ClassDocumentation<MEff2tv> documentation ("The MEff2tv class implements the general matrix element for " "fermion-antifermion -> tensor vector"); } double MEff2tv::me2() const { // first setup wavefunctions for external particles SpinorVector sp(2); SpinorBarVector sbar(2); VBVector vec(3); TBVector ten(5); bool tMass = meMomenta()[2].mass()!=ZERO; bool vMass = meMomenta()[3].mass()!=ZERO; for( unsigned int i = 0; i < 5; ++i ) { if(i<2) { sp[i] = SpinorWaveFunction (rescaledMomenta()[0], mePartonData()[0], i, incoming); sbar[i] = SpinorBarWaveFunction(rescaledMomenta()[1], mePartonData()[1], i, incoming); } if( tMass || i==0 || i==4) { ten[i] = TensorWaveFunction(rescaledMomenta()[2], mePartonData()[2],i , outgoing); } if(i<3 && (i!=1||vMass) ) { vec[i] = VectorWaveFunction(rescaledMomenta()[3], mePartonData()[3],i , outgoing); } } // calculate the ME double full_me(0.); ffb2tvHeME(sp, sbar, ten, vec, full_me,true); // debugging tests if needed #ifndef NDEBUG if( debugME() ) debug(full_me); #endif // return the answer return full_me; } void MEff2tv::doinit() { GeneralHardME::doinit(); fermion_ .resize(numberOfDiags()); vector_ .resize(numberOfDiags()); fourPoint_ .resize(numberOfDiags()); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin2 , PDT::Spin1 )); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin2 , PDT::Spin1 )); for(HPCount i = 0; i < numberOfDiags(); ++i) { const HPDiagram & current = getProcessInfo()[i]; if(current.channelType == HPDiagram::tChannel) { if(current.intermediate->iSpin() != PDT::Spin1Half) throw InitException() << "MEff2tv:doinit() - Cannot find correct " << "t-channel from diagram. Vertex not cast! " << Exception::runerror; if( current.ordered.second ) fermion_[i] = make_pair(dynamic_ptr_cast<AbstractFFTVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.second)); else fermion_[i] = make_pair(dynamic_ptr_cast<AbstractFFTVertexPtr>(current.vertices.second), dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.first)); } else if(current.channelType == HPDiagram::sChannel) { if(current.intermediate->iSpin() != PDT::Spin1) throw InitException() << "MEff2tv:doinit() - Cannot find correct " << "s-channel from diagram. Vertex not cast! " << Exception::runerror; vector_[i] = make_pair(dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractVVTVertexPtr>(current.vertices.second)); } else if(current.channelType == HPDiagram::fourPoint) { fourPoint_[i] = dynamic_ptr_cast<AbstractFFVTVertexPtr>(current.vertices.first); } } } void MEff2tv::doinitrun() { GeneralHardME::doinitrun(); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin2 , PDT::Spin1 )); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin2 , PDT::Spin1 )); } ProductionMatrixElement MEff2tv:: ffb2tvHeME(SpinorVector & sp, SpinorBarVector & sb, TBVector & ten, VBVector & vec, double & me2,bool first) const { // scale const Energy2 q2(scale()); // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); bool tMass = meMomenta()[2].mass() != ZERO; bool vMass = meMomenta()[3].mass() != ZERO; // flow over the helicities and diagrams for(unsigned int if1 = 0; if1 < 2; ++if1) { for(unsigned int if2 = 0; if2 < 2; ++if2) { for(unsigned int it=0; it<5; ++it) { if( (it>0&&it<4) && !tMass ) continue; for(unsigned int iv=0; iv<3;++iv) { if(iv==1&&!vMass) continue; vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr internal(current.intermediate); if(current.channelType == HPDiagram::tChannel) { if(current.ordered.second) { SpinorBarWaveFunction interFB = fermion_[ix].second-> evaluate(q2,5,internal,sb[if2],vec[iv]); diag = fermion_[ix].first-> evaluate(q2,sp[if1],interFB,ten[it]); } else { SpinorWaveFunction interF = fermion_[ix].second-> evaluate(q2,5,internal,sp[if1],vec[iv]); diag = fermion_[ix].first-> evaluate(q2,interF,sb[if2],ten[it]); } } else if(current.channelType == HPDiagram::sChannel) { VectorWaveFunction interV = vector_[ix].first-> evaluate(q2, 1, internal, sp[if1], sb[if2],vec[iv].mass()); diag = vector_[ix].second->evaluate(q2, interV, vec[iv],ten[it], vec[iv].mass()); } else if(current.channelType == HPDiagram::fourPoint) { diag = fourPoint_[ix]-> evaluate(q2,sp[if1],sb[if2],vec[iv],ten[it]); } // diagram me[ix] += norm(diag); diagramME()[ix](if1,if2,it,iv) = diag; // contributions to the different colour flows for(unsigned int iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](if1,if2,it,iv) = flows[iy]; // contribution to the squared matrix element for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) for(unsigned int ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } void MEff2tv::debug(double me2) const { if( !generator()->logfile().is_open() ) return; long id1 = mePartonData()[0]->id(); long id2 = mePartonData()[1]->id(); long id4 = mePartonData()[3]->id(); if(id1==-id2&&id1<=5&&id4==ParticleID::g) { unsigned int iloc(0); for(;iloc<vector_.size();++iloc) if(vector_[iloc].first) break; double gs = abs(vector_[iloc].first->norm()); InvEnergy kappa = abs(vector_[iloc].second->norm())*UnitRemoval::InvE; Energy2 mg2 = sqr(meMomenta()[2].mass()); double anal = sqr(gs)*sqr(kappa)/36.*(4.*uHat()*tHat()+sHat()*mg2)* (sqr(tHat()-mg2)+sqr(uHat()-mg2))/sHat()/tHat()/uHat(); double diff = abs((anal - me2)/(anal+me2)); if( diff > 1e-4 ) { generator()->log() << mePartonData()[0]->PDGName() << "," << mePartonData()[1]->PDGName() << "->" << mePartonData()[2]->PDGName() << "," << mePartonData()[3]->PDGName() << " difference: " << setprecision(10) << diff << " ratio: " << anal/me2 << '\n'; } } else if(id1==-id2&&id1==ParticleID::eminus&&id4==ParticleID::gamma) { unsigned int iloc(0); for(;iloc<vector_.size();++iloc) if(vector_[iloc].first) break; double gs = abs(vector_[iloc].first->norm()); InvEnergy kappa = abs(vector_[iloc].second->norm())*UnitRemoval::InvE; Energy2 mg2 = sqr(meMomenta()[2].mass()); double anal = sqr(gs)*sqr(kappa)/16./tHat()/uHat()/sHat()* (4.*uHat()*tHat()+mg2*sHat())*(sqr(uHat()-mg2)+sqr(tHat()-mg2)); double diff = abs((anal - me2)/(anal+me2)); if( diff > 1e-4 ) { generator()->log() << mePartonData()[0]->PDGName() << "," << mePartonData()[1]->PDGName() << "->" << mePartonData()[2]->PDGName() << "," << mePartonData()[3]->PDGName() << " difference: " << setprecision(10) << diff << " ratio: " << anal/me2 << '\n'; } } else if(id1==-id2&&id1==ParticleID::eminus&&id4==ParticleID::Z0) { unsigned int iloc(0); for(;iloc<vector_.size();++iloc) if(vector_[iloc].first) break; double gs = abs(vector_[iloc].first->norm()); InvEnergy kappa = abs(vector_[iloc].second->norm())*UnitRemoval::InvE; Energy2 mg2 = sqr(meMomenta()[2].mass()); Energy2 mz2 = sqr(meMomenta()[3].mass()); double sw2 = SM().sin2ThetaW(); double anal = sqr(gs)*sqr(kappa)/48./16./sw2/(1.-sw2)* 2.*(1.-4.*sw2+8.*sqr(sw2))/sqr(tHat())/sqr(uHat())/sqr(sHat()-mz2)* (8.*pow<3,1>(mz2)*uHat()*tHat()*(3.*mg2*(mg2-uHat()-tHat())+4.*uHat()*tHat()) +2.*sqr(mz2)*uHat()*tHat()*(27.*pow<3,1>(mg2)-42.*sqr(mg2)*(uHat()+tHat()) +15.*mg2*(sqr(uHat())+sqr(tHat())) +80.*mg2*uHat()*tHat() -28.*(sqr(uHat())*tHat()+uHat()*sqr(tHat()))) +mz2*(3.*pow<4,1>(mg2)*(-sqr(uHat())-sqr(tHat())+12.*uHat()*tHat()) +6.*pow<3,1>(mg2)*(pow<3,1>(uHat()) -12.*(sqr(uHat())*tHat()+uHat()*sqr(tHat())) +pow<3,1>(tHat())) +3.*sqr(mg2)*(-pow<4,1>(uHat())+14.*pow<3,1>(uHat())*tHat() +62.*sqr(uHat()*tHat())+14.*uHat()*pow<3,1>(tHat()) -pow<4,1>(tHat())) +6.*mg2*(-pow<4,1>(uHat())*tHat() -23.*(pow<3,1>(uHat())*sqr(tHat())+pow<3,1>(tHat())*sqr(uHat())) -uHat()*pow<4,1>(tHat())) +36.*(pow<4,1>(uHat())*sqr(tHat())+pow<4,1>(tHat())*sqr(uHat())) +52.*pow<3,1>(tHat()*uHat())) +3.*tHat()*uHat()*(-mg2+uHat()+tHat())* (-sqr(mg2)+mg2*(uHat()+tHat())-4.*uHat()*tHat())* (2.*sqr(mg2)-2.*mg2*(uHat()+tHat())+sqr(uHat())+sqr(tHat()))); double diff = abs((anal - me2)/(anal+me2)); if( diff > 1e-4 ) { generator()->log() << mePartonData()[0]->PDGName() << "," << mePartonData()[1]->PDGName() << "->" << mePartonData()[2]->PDGName() << "," << mePartonData()[3]->PDGName() << " difference: " << setprecision(10) << diff << " anal : " << anal << " code : " << me2 << " ratio: " << anal/me2 << '\n'; } } } void MEff2tv::constructVertex(tSubProPtr sub) { ParticleVector ext = hardParticles(sub); vector<SpinorWaveFunction> sp; SpinorWaveFunction(sp, ext[0], incoming, false); vector<SpinorBarWaveFunction> sbar; SpinorBarWaveFunction(sbar, ext[1], incoming, false); vector<VectorWaveFunction> v2; vector<TensorWaveFunction> t1; bool mc = !(ext[2]->momentum().mass() > ZERO); bool md = !(ext[3]->data() .mass() > ZERO); TensorWaveFunction(t1, ext[2], outgoing, true, mc); VectorWaveFunction(v2, ext[3], outgoing, true, md); // Need to use rescale momenta to calculate matrix element setRescaledMomenta(ext); SpinorWaveFunction spr (rescaledMomenta()[0], ext[0]->dataPtr(), incoming); SpinorBarWaveFunction sbr(rescaledMomenta()[1], ext[1]->dataPtr(), incoming); TensorWaveFunction tr1 (rescaledMomenta()[2], ext[2]->dataPtr(), outgoing); VectorWaveFunction vr2 (rescaledMomenta()[3], ext[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { spr.reset(ihel); sp[ihel] = spr; sbr.reset(ihel); sbar[ihel] = sbr; tr1.reset(4*ihel); t1[4*ihel] = tr1; vr2.reset(2*ihel); v2[2*ihel] = vr2; } if( !mc ) { for(unsigned int ihel=1;ihel<4;++ihel) { tr1.reset(ihel); t1[ihel] = tr1; } } if( !md ) { vr2.reset(1); v2[1] = vr2; } double dummy(0.); ProductionMatrixElement pme = ffb2tvHeME(sp, sbar, t1, v2,dummy,false); createVertex(pme,ext); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEff2tv.h�������������������������������������������������0000644�0001750�0001750�00000013634�11754474776�022565� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEff2tv_H #define HERWIG_MEff2tv_H // // This is the declaration of the MEff2tv class. // #include "GeneralHardME.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/TensorWaveFunction.h" #include "ThePEG/Helicity/Vertex/AbstractFFTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVTVertex.h" namespace Herwig { using namespace ThePEG; using Helicity::SpinorWaveFunction; using Helicity::SpinorBarWaveFunction; using Helicity::VectorWaveFunction; using Helicity::TensorWaveFunction; /** * Here is the documentation of the MEff2tv class. * * @see \ref MEff2tvInterfaces "The interfaces" * defined for MEff2tv. */ class MEff2tv: public GeneralHardME { public: /** @name Typedefs */ //@{ /** * A vector of SpinorWaveFunctions */ typedef vector<SpinorWaveFunction> SpinorVector; /** * A vector of SpinorWaveBarFunctions */ typedef vector<SpinorBarWaveFunction> SpinorBarVector; /** * A vector of VectorWaveFunctions */ typedef vector<VectorWaveFunction> VBVector; /** * A vector of VectorWaveFunctions */ typedef vector<TensorWaveFunction> TBVector; //@} public: /** * The default constructor. */ MEff2tv() : fermion_(0), vector_(0), fourPoint_(0) {} /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Construct the vertex information for the spin correlations * @param sub Pointer to the relevent SubProcess */ virtual void constructVertex(tSubProPtr sub); 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. */ void doinit(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEff2tv> initMEff2tv; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEff2tv & operator=(const MEff2tv &); private: /** @name Functions to compute the ProductionMatrixElement. */ //@{ /** * Compute the matrix element for \f$\Psi\bar{\Psi}\to\Psi\bar{\Psi}\f$ * @param sp Spinors for first incoming particle * @param spbar SpinorBar Wavefunctions for second incoming particle * @param vec VectorWaveFunctions for outgoing vector * @param ten Outgoing TensorWaveFunction * @param me2 colour averaged, spin summed ME * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @return ProductionMatrixElement containing results of * helicity calculations */ ProductionMatrixElement ffb2tvHeME(SpinorVector & sp, SpinorBarVector & spbar, TBVector & ten, VBVector & vec, double & me2,bool first) const; //@} /** * A debugging function to test the value of me2 against an * analytic function. * @param me2 The value of the \f$ |\bar{\mathcal{M}}|^2 \f$ */ virtual void debug(double me2) const; private: /** * Store a pair of FFTVertex and FFVVertex pointers */ vector<pair<AbstractFFTVertexPtr, AbstractFFVVertexPtr> > fermion_; /** * Store a pair of FFTVertex and VVTVertex pointers */ vector<pair<AbstractFFVVertexPtr, AbstractVVTVertexPtr> > vector_; /** * The four point vertex */ vector<AbstractFFVTVertexPtr> fourPoint_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEff2tv. */ template <> struct BaseClassTrait<Herwig::MEff2tv,1> { /** Typedef of the first base class of MEff2tv. */ typedef Herwig::GeneralHardME NthBase; }; /** This template specialization informs ThePEG about the name of * the MEff2tv class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEff2tv> : public ClassTraitsBase<Herwig::MEff2tv> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEff2tv"; } }; /** @endcond */ } #endif /* HERWIG_MEff2tv_H */ ����������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEff2vs.cc������������������������������������������������0000644�0001750�0001750�00000020042�11754474776�022711� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEff2vs.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MEff2vs class. // #include "MEff2vs.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; using ThePEG::Helicity::incoming; using ThePEG::Helicity::outgoing; void MEff2vs::doinit() { GeneralHardME::doinit(); scalar_.resize(numberOfDiags()); vector_.resize(numberOfDiags()); fermion_.resize(numberOfDiags()); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1,PDT::Spin0)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1,PDT::Spin0)); for(HPCount i = 0; i < numberOfDiags(); ++i) { const HPDiagram & current = getProcessInfo()[i]; if( current.channelType == HPDiagram::sChannel ) { if( current.intermediate->iSpin() == PDT::Spin0 ) scalar_[i] = make_pair(dynamic_ptr_cast<AbstractFFSVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractVSSVertexPtr>(current.vertices.second)); else if( current.intermediate->iSpin() == PDT::Spin1 ) vector_[i] = make_pair(dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractVVSVertexPtr>(current.vertices.second)); } else if( current.channelType == HPDiagram::tChannel ) { if(current.intermediate->iSpin() == PDT::Spin1Half) { if( current.ordered.second ) fermion_[i] = make_pair(dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.first), dynamic_ptr_cast<AbstractFFSVertexPtr>(current.vertices.second)); else fermion_[i] = make_pair(dynamic_ptr_cast<AbstractFFVVertexPtr>(current.vertices.second), dynamic_ptr_cast<AbstractFFSVertexPtr>(current.vertices.first)); } } } } void MEff2vs::doinitrun() { GeneralHardME::doinitrun(); flowME().resize(numberOfFlows(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1,PDT::Spin0)); diagramME().resize(numberOfDiags(), ProductionMatrixElement(PDT::Spin1Half, PDT::Spin1Half, PDT::Spin1,PDT::Spin0)); } void MEff2vs::persistentOutput(PersistentOStream & os) const { os << scalar_ << vector_ << fermion_; } void MEff2vs::persistentInput(PersistentIStream & is, int) { is >> scalar_ >> vector_ >> fermion_; } ClassDescription<MEff2vs> MEff2vs::initMEff2vs; // Definition of the static class description member. void MEff2vs::Init() { static ClassDocumentation<MEff2vs> documentation ("MEff2vs implements the ME calculation of the fermion-antifermion " "to vector-scalar hard process."); } double MEff2vs::me2() const { //set up wavefunctions SpinorVector ina(2); SpinorBarVector inb(2); VBVector outa(3); ScalarWaveFunction sca(rescaledMomenta()[3], mePartonData()[3], Complex(1.), outgoing); for(unsigned int ih = 0; ih < 2; ++ih) { ina[ih] = SpinorWaveFunction(rescaledMomenta()[0], mePartonData()[0], ih, incoming); inb[ih] = SpinorBarWaveFunction(rescaledMomenta()[1], mePartonData()[1], ih, incoming); outa[2*ih] = VectorWaveFunction(rescaledMomenta()[2], mePartonData()[2], 2*ih, outgoing); } if( mePartonData()[2]->mass() > ZERO ) { outa[1] = VectorWaveFunction(rescaledMomenta()[2], mePartonData()[2], 1, outgoing); } double full_me(0.); ffb2vsHeME(ina, inb, outa, sca, full_me,true); return full_me; } ProductionMatrixElement MEff2vs::ffb2vsHeME(SpinorVector & sp, SpinorBarVector & spbar, VBVector & vec, ScalarWaveFunction & sca, double & me2, bool first) const { Energy2 m2(scale()); bool mv = mePartonData()[2]->mass() == ZERO; // weights for the selection of the diagram vector<double> me(numberOfDiags(), 0.); // weights for the selection of the colour flow vector<double> flow(numberOfFlows(),0.); me2 = 0.; for(unsigned int ihel1 = 0; ihel1 < 2; ++ihel1) { for(unsigned int ihel2 = 0; ihel2 < 2; ++ihel2) { for(unsigned int ovhel = 0; ovhel < 3; ++ovhel) { if( mv && ovhel == 1 ) continue; vector<Complex> flows(numberOfFlows(),0.); for(HPCount ix = 0; ix < numberOfDiags(); ++ix) { Complex diag(0.); const HPDiagram & current = getProcessInfo()[ix]; tcPDPtr offshell(current.intermediate); if( current.channelType == HPDiagram::sChannel ) { if( offshell->iSpin() == PDT::Spin0 ) { ScalarWaveFunction interS = scalar_[ix].first-> evaluate(m2, 1, offshell, sp[ihel1], spbar[ihel2]); diag = scalar_[ix].second->evaluate(m2, vec[ovhel], sca, interS); } else if( offshell->iSpin() == PDT::Spin1 ) { VectorWaveFunction interV = vector_[ix].first-> evaluate(m2, 1, offshell, sp[ihel1], spbar[ihel2]); diag = vector_[ix].second->evaluate(m2, vec[ovhel], interV, sca); } else diag = 0.0; } else if( current.channelType == HPDiagram::tChannel ) { if( offshell->iSpin() == PDT::Spin1Half ) { if( current.ordered.second ) { SpinorBarWaveFunction interFB = fermion_[ix].second-> evaluate(m2, 3, offshell, spbar[ihel2], sca); diag = fermion_[ix].first-> evaluate(m2, sp[ihel1], interFB, vec[ovhel]); } else { SpinorBarWaveFunction interFB = fermion_[ix].first-> evaluate(m2, 3, offshell, spbar[ihel2], vec[ovhel]); diag = fermion_[ix].second-> evaluate(m2, sp[ihel1], interFB, sca); } } } else diag = 0.0; me[ix] += norm(diag); diagramME()[ix](ihel1, ihel2, ovhel, 0) = diag; //Compute flows for(size_t iy = 0; iy < current.colourFlow.size(); ++iy) { assert(current.colourFlow[iy].first<flows.size()); flows[current.colourFlow[iy].first] += current.colourFlow[iy].second * diag; } } // MEs for the different colour flows for(unsigned int iy = 0; iy < numberOfFlows(); ++iy) flowME()[iy](ihel1, ihel2, ovhel, 0) = flows[iy]; //Now add flows to me2 with appropriate colour factors for(size_t ii = 0; ii < numberOfFlows(); ++ii) for(size_t ij = 0; ij < numberOfFlows(); ++ij) me2 += getColourFactors()[ii][ij]*(flows[ii]*conj(flows[ij])).real(); // contribution to the colour flow for(unsigned int ii = 0; ii < numberOfFlows(); ++ii) { flow[ii] += getColourFactors()[ii][ii]*norm(flows[ii]); } } } } // if not computing the cross section return the selected colour flow if(!first) return flowME()[colourFlow()]; me2 = selectColourFlow(flow,me,me2); return flowME()[colourFlow()]; } void MEff2vs::constructVertex(tSubProPtr sub) { // Hard proces external particles ParticleVector hdp = hardParticles(sub); // wavefunctions with real momenta SpinorVector sp; SpinorBarVector spbar; VBVector vec; bool mv(hdp[2]->dataPtr()->mass() == ZERO); SpinorWaveFunction (sp, hdp[0], incoming, false); SpinorBarWaveFunction (spbar, hdp[1], incoming, false); VectorWaveFunction (vec, hdp[2], outgoing, true, mv); ScalarWaveFunction sca( hdp[3], outgoing, true); //Need to use rescale momenta to calculate matrix element setRescaledMomenta(hdp); // wavefunctions with rescaled momenta SpinorWaveFunction spr( rescaledMomenta()[0], hdp[0]->dataPtr(), incoming); SpinorBarWaveFunction sbr(rescaledMomenta()[1], hdp[1]->dataPtr(), incoming); VectorWaveFunction vr( rescaledMomenta()[2], hdp[2]->dataPtr(), outgoing); sca = ScalarWaveFunction( rescaledMomenta()[3], hdp[3]->dataPtr(), outgoing); for( unsigned int ihel = 0; ihel < 2; ++ihel ) { spr.reset(ihel); sp[ihel] = spr; sbr.reset(ihel); spbar[ihel] = sbr; vr.reset(2*ihel); vec[2*ihel] = vr; } if( !mv ) { vr.reset(1); vec[1] = vr; } double dummy(0.); ProductionMatrixElement prodme = ffb2vsHeME(sp, spbar, vec, sca, dummy,false); createVertex(prodme,hdp); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/GeneralQQHiggs.h������������������������������������������0000644�0001750�0001750�00000023261�11754474776�024112� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_GeneralQQHiggs_H #define HERWIG_GeneralQQHiggs_H // // This is the declaration of the GeneralQQHiggs class. // #include "ThePEG/MatrixElement/MEBase.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "Herwig++/PDT/GenericMassGenerator.h" #include "GeneralQQHiggs.fh" namespace Herwig { using namespace ThePEG; /** * The GeneralQQHiggs class implements the matrix elements for * \f$gg\to Q \bar Q h^0\f$ and \f$q\bar q\to Q \bar Q h^0\f$. * * @see \ref GeneralQQHiggsInterfaces "The interfaces" * defined for GeneralQQHiggs. */ class GeneralQQHiggs: public MEBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ GeneralQQHiggs(); //@} /** * Initialisation if used in a general model */ /** * Set up the matrix element */ void setProcessInfo(unsigned int quark, PDPtr higgs, AbstractFFSVertexPtr vertex, unsigned int shapeOpt, unsigned int proc); public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Set the typed and momenta of the incoming and outgoing partons to * be used in subsequent calls to me() and colourGeometries() * according to the associated XComb object. If the function is * overridden in a sub class the new function must call the base * class one first. */ virtual void setKinematics(); /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR() const; /** * Add all possible diagrams with the add() function. */ virtual void getDiagrams() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} protected: /** * Members to calculate the matrix elements */ //@{ /** * Matrix element for \f$gg\to Q\bar{Q}h^0\f$ * @param g1 The wavefunctions for the first incoming gluon * @param g2 The wavefunctions for the second incoming gluon * @param q The wavefunction for the outgoing quark * @param qbar The wavefunction for the outgoing antiquark * @param h The wavefunction for the outgoing Higgs boson * @param flow The colour flow */ double ggME(vector<VectorWaveFunction> &g1,vector<VectorWaveFunction> &g2, vector<SpinorBarWaveFunction> & q,vector<SpinorWaveFunction> & qbar, ScalarWaveFunction & h, unsigned int flow) const; /** * Matrix element for \f$q\bar{q}\to Q\bar{Q}h^0\f$ * @param q1 The wavefunction for the incoming quark * @param q2 The wavefunction for the incoming antiquark * @param q3 The wavefunction for the outgoing quark * @param q4 The wavefunction for the outgoing antiquark * @param h The wavefunction for the outgoing Higgs boson * @param flow The colour flow */ double qqME(vector<SpinorWaveFunction> & q1, vector<SpinorBarWaveFunction> & q2, vector<SpinorBarWaveFunction> & q3, vector<SpinorWaveFunction> & q4, ScalarWaveFunction & h, unsigned int flow) const; //@} /** * Generate the polar angle */ double getCosTheta(double ctmin, double ctmax, double r); 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<GeneralQQHiggs> initGeneralQQHiggs; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ GeneralQQHiggs & operator=(const GeneralQQHiggs &); private: /** * Switches to control the subprocess */ //@{ /** * Quark Flavour */ unsigned int quarkFlavour_; /** * Processes to include */ unsigned int process_; //@} /** * Switches etc for the Higgs mass generation */ //@{ /** * Defines the Higgs resonance shape */ unsigned int shapeOpt_; /** * On-shell mass for the higgs */ Energy mh_; /** * On-shell width for the higgs */ Energy wh_; /** * The mass generator for the Higgs */ GenericMassGeneratorPtr hmass_; //@} /** * Vertices needed to compute the diagrams */ //@{ /** * \f$ggg\f$ vertex */ AbstractVVVVertexPtr GGGVertex_; /** * \f$q\bar{q}g\f$ vertex */ AbstractFFVVertexPtr QQGVertex_; /** * \f$q\bar q h^0\f$ vertex */ AbstractFFSVertexPtr QQHVertex_; //@} /** * ParticleData objects of the particles */ //@{ /** * The gluon */ PDPtr gluon_; /** * The Higgs boson */ PDPtr higgs_; /** * the quarks */ vector<PDPtr> quark_; /** * the antiquarks */ vector<PDPtr> antiquark_; //@} /** * Parameters for the phase-space generation */ //@{ /** * Power for the phase-space mapping */ double alpha_; //@} /** * Colour flow */ mutable unsigned int flow_; /** * Diagram */ mutable unsigned int diagram_; /** * Matrix element */ mutable ProductionMatrixElement me_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of GeneralQQHiggs. */ template <> struct BaseClassTrait<Herwig::GeneralQQHiggs,1> { /** Typedef of the first base class of GeneralQQHiggs. */ typedef MEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the GeneralQQHiggs class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::GeneralQQHiggs> : public ClassTraitsBase<Herwig::GeneralQQHiggs> { /** Return a platform-independent class name */ static string className() { return "Herwig::GeneralQQHiggs"; } }; /** @endcond */ } #endif /* HERWIG_GeneralQQHiggs_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEvv2ss.h�������������������������������������������������0000644�0001750�0001750�00000014322�11754474776�022614� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEvv2ss.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEvv2ss_H #define HERWIG_MEvv2ss_H // // This is the declaration of the MEvv2ss class. // #include "GeneralHardME.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractSSTVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractSSSVertex.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" namespace Herwig { using namespace ThePEG; using ThePEG::Helicity::VectorWaveFunction; using ThePEG::Helicity::ScalarWaveFunction; /** * This is the implementation of the matrix element for the process * vector-vector to scalar-scalar. It inherits from GeneralHardME and * implements the required virtual functions. * * @see \ref MEff2ffInterfaces "The Interfaces" * defined for MEff2ff. * @see GeneralHardME */ class MEvv2ss: public GeneralHardME { public: /** A vector of VectorWaveFunction objects*/ typedef vector<VectorWaveFunction> VBVector; public: /** @name Virtual functions required by the MEBase class. */ //@{ /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; //@} /** * Set the Hardvertex for the spin correlations * @param sub */ virtual void constructVertex(tSubProPtr sub); private: /** * Calculate the matrix element. * @param v1 A vector of VectorWaveFunction objects for the first boson * @param v2 A vector of VectorWaveFunction objects for the second boson * @param sca1 A ScalarWaveFunction for the first outgoing * @param sca2 A ScalarWaveFunction for the second outgoing * @param me2 The value of the spin-summed matrix element squared * (to be calculated) * @param first Whether or not first call to decide if colour decomposition etc * should be calculated */ ProductionMatrixElement vv2ssME(const VBVector & v1, const VBVector & v2, const ScalarWaveFunction & sca1, const ScalarWaveFunction & sca2, double & me2, bool first) const; protected: /** * A debugging function to test the value of me2 against an * analytic function. * @param me2 The value of the \f$ |\bar{\mathcal{M}}|^2 \f$ */ virtual void debug(double me2) 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(); 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEvv2ss> initMEvv2ss; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEvv2ss & operator=(const MEvv2ss &); private: /** @name The dynamically casted vertices. */ //@{ /** * Intermediate s-channel scalar */ vector<pair<AbstractVVSVertexPtr, AbstractSSSVertexPtr> > scalar1_; /** * Intermediate t-channel scalar */ vector<pair<AbstractVSSVertexPtr, AbstractVSSVertexPtr> > scalar2_; /** * Intermediate s-channel vector */ vector<pair<AbstractVVVVertexPtr, AbstractVSSVertexPtr> > vector_; /** * Intermediate s-channel tensor */ vector<pair<AbstractVVTVertexPtr, AbstractSSTVertexPtr> > tensor_; /** * The contact vertex */ AbstractVVSSVertexPtr contact_; //@} }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEvv2ss. */ template <> struct BaseClassTrait<Herwig::MEvv2ss,1> { /** Typedef of the first base class of MEvv2ss. */ typedef Herwig::GeneralHardME NthBase; }; /** This template specialization informs ThePEG about the name of * the MEvv2ss class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEvv2ss> : public ClassTraitsBase<Herwig::MEvv2ss> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEvv2ss"; } }; /** @endcond */ } #endif /* HERWIG_MEvv2ss_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/General/MEff2vs.h�������������������������������������������������0000644�0001750�0001750�00000014720�11754474776�022561� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MEff2vs.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MEff2vs_H #define HERWIG_MEff2vs_H // // This is the declaration of the MEff2vs class. // #include "GeneralHardME.h" #include "ThePEG/Helicity/Vertex/AbstractFFSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVSSVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" #include "ThePEG/Helicity/WaveFunction/SpinorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/SpinorBarWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/VectorWaveFunction.h" #include "ThePEG/Helicity/WaveFunction/ScalarWaveFunction.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" namespace Herwig { using namespace ThePEG; using Helicity::SpinorWaveFunction; using Helicity::SpinorBarWaveFunction; using Helicity::VectorWaveFunction; using Helicity::ScalarWaveFunction; /** * The MEff2vs class is designed to implement the matrix element for a * fermion-antifermion to vector-scalar hard process. It inherits from * GeneralHardME and implements the appropriate virtual functions for this * specific spin combination. * * @see \ref MEff2vsInterfaces "The interfaces" * defined for MEff2vs. * @see GeneralHardME */ class MEff2vs: public GeneralHardME { public: /** @name Typedefs */ //@{ /** * A vector of SpinorWaveFunctions */ typedef vector<SpinorWaveFunction> SpinorVector; /** * A vector of SpinorWaveBarFunctions */ typedef vector<SpinorBarWaveFunction> SpinorBarVector; /** * A vector of VectorWaveFunctions */ typedef vector<VectorWaveFunction> VBVector; //@} public: /** * The default constructor. */ MEff2vs() : scalar_(0), vector_(0), fermion_(0) {} /** @name Virtual functions required by the MEBase class. */ //@{ /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; //@} /** * Construct the vertex information for the spin correlations * @param sub Pointer to the relevent SubProcess */ virtual void constructVertex(tSubProPtr sub); 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 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MEff2vs> initMEff2vs; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEff2vs & operator=(const MEff2vs &); private: /** @name Functions to compute the ProductionMatrixElement. */ //@{ /** * Compute the matrix element for \f$\Psi\bar{\Psi}\to\Psi\bar{\Psi}\f$ * @param sp Spinors for first incoming particle * @param spbar SpinorBar Wavefunctions for second incoming particle * @param vec VectorWaveFunctions for outgoing vector * @param sca Outgoing ScalarWaveFunction * @param me2 colour averaged, spin summed ME * @param first Whether or not first call to decide if colour decomposition etc * should be calculated * @return ProductionMatrixElement containing results of * helicity calculations */ ProductionMatrixElement ffb2vsHeME(SpinorVector & sp, SpinorBarVector & spbar, VBVector & vec, ScalarWaveFunction & sca, double & me2,bool first) const; //@} private: /** * Storage for dynamically cast vertices for a diagram with intermediate * scalar */ vector<pair<AbstractFFSVertexPtr, AbstractVSSVertexPtr> > scalar_; /** * Storage for dynamically cast vertices for a diagram with intermediate * vector */ vector<pair<AbstractFFVVertexPtr, AbstractVVSVertexPtr> > vector_; /** * Storage for dynamically cast vertices for a diagram with intermediate * fermion */ vector<pair<AbstractFFVVertexPtr, AbstractFFSVertexPtr> > fermion_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEff2vs. */ template <> struct BaseClassTrait<Herwig::MEff2vs,1> { /** Typedef of the first base class of MEff2vs. */ typedef Herwig::GeneralHardME NthBase; }; /** This template specialization informs ThePEG about the name of * the MEff2vs class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEff2vs> : public ClassTraitsBase<Herwig::MEff2vs> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEff2vs"; } }; /** @endcond */ } #endif /* HERWIG_MEff2vs_H */ ������������������������������������������������herwig++-2.6.0.orig/MatrixElement/HardVertex.h������������������������������������������������������0000644�0001750�0001750�00000006141�11754474776�022006� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HardVertex.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_HardVertex_H #define HERWIG_HardVertex_H // // This is the declaration of the HardVertex class. #include "ThePEG/EventRecord/HelicityVertex.h" #include "ProductionMatrixElement.h" #include "HardVertex.fh" // #include "HardVertex.xh" namespace Herwig { using namespace ThePEG; /** \ingroup Helicity * \author Peter Richardson * * The HardVertex class is designed to implement the vertex for a * hard interaction for the Herwig++ spin correlation algorithm. * It inherits from the HelicityVertex class of ThePEG and implements * the methods to calculate the \f$\rho\f$ and \f$D\f$ matrices. * * The ProductionMatrixElement class is used to store the matrix element * and this class performs the calculations of the matrices. * * @see HelicityVertex * @see ProductionMatrixElement */ class HardVertex: public HelicityVertex { public: /** * Access to the matrix element */ //@{ /** * Get the matrix element */ const ProductionMatrixElement & ME() const { return _matrixelement; } /** * Set the matrix element */ void ME(const ProductionMatrixElement & in) const { _matrixelement.reset(in); } //@} public: /** * Standard Init function used to initialize the interfaces. */ static void Init(); public: /** * Method to calculate the \f$\rho\f$ matrix for one of the outgoing particles * @param iout The outgoing particle we are calculating the \f$\rho\f$ matrix for. */ virtual RhoDMatrix getRhoMatrix(int iout,bool) const; /** * Method to calculate the \f$D\f$ matrix for an incoming particle. * @param in The incoming particle we are calculating the \f$D\f$ matrix for. */ virtual RhoDMatrix getDMatrix(int in) const; private: /** * Describe a concrete class without persistent data. */ static NoPIOClassDescription<HardVertex> initHardVertex; /** * Private and non-existent assignment operator. */ HardVertex & operator=(const HardVertex &); private: /** * Storage of the matrix element. */ ProductionMatrixElement _matrixelement; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** * The following template specialization informs ThePEG about the * base class of HardVertex. */ template <> struct BaseClassTrait<Herwig::HardVertex,1> { /** Typedef of the base class of HardVertex. */ typedef ThePEG::HelicityVertex NthBase; }; /** * The following template specialization informs ThePEG about the * name of this class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::HardVertex> : public ClassTraitsBase<Herwig::HardVertex> { /** * Return the class name. */ static string className() { return "Herwig::HardVertex"; } }; /** @endcond */ } #endif /* HERWIG_HardVertex_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/DrellYanBase.h����������������������������������������������������0000644�0001750�0001750�00000017621�11754474776�022244� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_DrellYanBase_H #define HERWIG_DrellYanBase_H // // This is the declaration of the DrellYanBase class. // #include "HwMEBase.h" #include "Herwig++/Shower/Couplings/ShowerAlpha.h" namespace Herwig { using namespace ThePEG; /** * The DrellYanBase class class provides a base class for the implemented * of Drell-Yan type processes and provides the matrix element and POWHEG * style hard corrections * * @see \ref DrellYanBaseInterfaces "The interfaces" * defined for DrellYanBase. */ class DrellYanBase: public HwMEBase { public: /** * The default constructor. */ DrellYanBase(); /** * Has a POWHEG style correction */ virtual bool hasPOWHEGCorrection() {return _alpha;} /** * Has an old fashioned ME correction */ virtual bool hasMECorrection() {return _alpha;} /** * Initialize the ME correction */ virtual void initializeMECorrection(ShowerTreePtr, double & initial, double & final) { final = 1.; initial = 1.; } /** * Apply the hard matrix element correction to a given hard process or decay */ virtual void applyHardMatrixElementCorrection(ShowerTreePtr); /** * Apply the soft matrix element correction * @param initial The particle from the hard process which started the * shower * @param parent The initial particle in the current branching * @param br The branching struct * @return If true the emission should be vetoed */ virtual bool softMatrixElementVeto(ShowerProgenitorPtr initial, ShowerParticlePtr parent, Branching br); /** * Apply the POWHEG style correction */ virtual HardTreePtr generateHardest(ShowerTreePtr); /** * Set the typed and momenta of the incoming and outgoing partons to * be used in subsequent calls to me() and colourGeometries() * according to the associated XComb object. */ virtual void setKinematics() { HwMEBase::setKinematics(); mb2_ = sHat(); } protected: /** * Return the momenta and type of hard matrix element correction * @param quarks The original incoming particles. * @param beams The BeamParticleData objects * @param boson The momentum of the original outgoing gauge boson * @param iemit Whether the first (0) or second (1) particle emitted * the radiation * @param itype The type of radiated particle (0 is gluon, 1 is quark * and 2 is antiquark) * @param pnew The momenta of the new particles * @param trans The LorentzRotation from the boson rest frame to the new lab * @param xnew The new values of the momentuym fractions * @return Whether or not the matrix element correction needs to be applied */ bool applyHard(ShowerParticleVector quarks, vector<tcBeamPtr> beams, Lorentz5Momentum boson,unsigned int & iemit, unsigned int & itype,vector<Lorentz5Momentum> & pnew, LorentzRotation & trans, pair<double,double> & xnew); /** * Returns the matrix element for a given type of process, * rapidity of the jet \f$y_j\f$ and transverse momentum \f$p_T\f$ * @param emis_type the type of emission, * (0 is \f$q\bar{q}\to Vg\f$, 1 is \f$qg\to Vq\f$ and 2 is \f$g\bar{q}\to V\bar{q}\f$) * @param pt The transverse momentum of the jet * @param yj The rapidity of the jet */ double getResult(int emis_type, Energy pt, double yj); /** * generates the hardest emission (yj,p) * @param pnew The momenta of the new particles * @param emissiontype The type of emission, as for getResult * @return Whether not an emission was generated */ bool getEvent(vector<Lorentz5Momentum> & pnew,int & emissiontype); 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 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(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<DrellYanBase> initDrellYanBase; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DrellYanBase & operator=(const DrellYanBase &); private: /** * Mass squared of the vector boson */ Energy2 mb2_; /** * Parameters for the old-style ME correction */ //@{ /** * Relative weight for the \f$q\bar{q}\f$ and \f$q/\bar{q}g\f$ channels */ double _channelwgtA; /** * Relative weight for the \f$qg\f$ and \f$\bar{q}g\f$ channels */ double _channelwgtB; /** * Weights for the channels as a vector */ vector<double> _channelweights; /** * Number of weights greater than 1 */ unsigned int _nover; /** * Maximum weight */ double _maxwgt; //@} /** * Constants for the sampling. The distribution is assumed to have the * form \f$\frac{c}{{\rm GeV}}\times\left(\frac{{\rm GeV}}{p_T}\right)^n\f$ */ //@{ /** * The power, \f$n\f$, for the sampling */ double _power; /** * The prefactor, \f$c\f$ for the \f$q\bar{q}\f$ channel */ double _preqqbar; /** * The prefactor, \f$c\f$ for the \f$qg\f$ channel */ double _preqg; /** * The prefactor, \f$c\f$ for the \f$g\bar{q}\f$ channel */ double _pregqbar; /** * The prefactors as a vector for easy use */ vector<double> _prefactor; //@} /** * Properties of the incoming particles */ //@{ /** * Pointers to the BeamParticleData objects */ vector<tcBeamPtr> _beams; /** * Pointers to the ParticleDataObjects for the partons */ vector<tcPDPtr> _partons; //@} /** * Properties of the boson and jets */ //@{ /** * The rapidity of the gauge boson */ double _yb; /** * The mass of the gauge boson */ Energy _mass; /** * Whether the quark is in the + or - z direction */ bool _quarkplus; /** * the rapidity of the jet */ double _yj; /** * The transverse momentum of the jet */ Energy _pt; //@} /** * The transverse momentum of the jet */ Energy _min_pt; /** * Pointer to the object calculating the strong coupling */ ShowerAlphaPtr _alpha; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DrellYanBase. */ template <> struct BaseClassTrait<Herwig::DrellYanBase,1> { /** Typedef of the first base class of DrellYanBase. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the DrellYanBase class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DrellYanBase> : public ClassTraitsBase<Herwig::DrellYanBase> { /** Return a platform-independent class name */ static string className() { return "Herwig::DrellYanBase"; } }; /** @endcond */ } #endif /* HERWIG_DrellYanBase_H */ ���������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/ProductionMatrixElement.cc����������������������������������������0000644�0001750�0001750�00000012213�11754474776�024712� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ProductionMatrixElement.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ProductionMatrixElement class. // // Author: Peter Richardson // #include "ProductionMatrixElement.h" #include "ThePEG/Interface/ClassDocumentation.h" using namespace Herwig; // calculate a decay matrix for one of the incoming particles RhoDMatrix ProductionMatrixElement:: calculateDMatrix(int id, const RhoDMatrix & rhoin, const vector<RhoDMatrix> & rhoout) const { // vectors for the helicities vector<unsigned int> ihel1(_outspin.size()+2),ihel2(_outspin.size()+2); // rhomatrix to be returned RhoDMatrix output(_inspin[id], false); // loop over all helicity components of the matrix element // outer loop Complex temp; unsigned int ix,iy; int ixa,iya; for(ix=0;ix<_matrixelement.size();++ix) { // map the vector index to the helicities for(ixa=_outspin.size()+1;ixa>=0;--ixa) {ihel1[ixa]=(ix%_constants[ixa])/_constants[ixa+1];} // inner loop for(iy=0;iy<_matrixelement.size();++iy) { // map the vector index to the helicities for(iya=_outspin.size()+1;iya>=0;--iya) {ihel2[iya]=(iy%_constants[iya])/_constants[iya+1];} // matrix element piece temp=_matrixelement[ix]*conj(_matrixelement[iy]); // spin density matrices for the outgoing particles for(unsigned int iz=0;iz<_outspin.size();++iz) {temp*=rhoout[iz](ihel1[iz+2],ihel2[iz+2]);} // construct the spin density matrix if(id==0) { temp*=rhoin(ihel1[1],ihel2[1]); output(ihel1[0],ihel2[0])+=temp; } else { temp*=rhoin(ihel1[0],ihel2[0]); output(ihel1[1],ihel2[1])+=temp; } } } // return the answer return output; } // calculate the rho matrix for a given outgoing particle RhoDMatrix ProductionMatrixElement:: calculateRhoMatrix(int id,const RhoDMatrix & rhoin0, const RhoDMatrix & rhoin1, const vector<RhoDMatrix> & rhoout) const { unsigned int ix,iy; int ixa,iya; // vectors for the helicities vector<unsigned int> ihel1(_outspin.size()+2),ihel2(_outspin.size()+2); // rhomatrix to be returned RhoDMatrix output(_outspin[id], false); // loop over all helicity components of the matrix element // outer loop Complex temp; for(ix=0;ix<_matrixelement.size();++ix) { // map the vector index to the helicities for(ixa=_outspin.size()+1;ixa>=0;--ixa) ihel1[ixa]=(ix%_constants[ixa])/_constants[ixa+1]; // inner loop for(iy=0;iy<_matrixelement.size();++iy) { // map the vector index to the helicities for(iya=_outspin.size()+1;iya>=0;--iya) ihel2[iya] = (iy%_constants[iya])/_constants[iya+1]; // matrix element piece temp = _matrixelement[ix]*conj(_matrixelement[iy]); // spin denisty matrix for the incoming particles temp *= rhoin0(ihel1[0],ihel2[0]); temp *= rhoin1(ihel1[1],ihel2[1]); // spin density matrix for the outgoing particles for(unsigned int iz=0;iz<_outspin.size()-1;++iz) { if(int(iz)<id) temp *= rhoout[iz](ihel1[iz+2],ihel2[iz+2]); else temp *= rhoout[iz](ihel1[iz+3],ihel2[iz+3]); } output(ihel1[id+2],ihel2[id+2])+=temp; } } // normalise the matrix so it has unit trace output.normalize(); // return the answer return output; } double ProductionMatrixElement::average() const { double output(0.); for(unsigned int ix=0;ix<_matrixelement.size();++ix) { output += norm(_matrixelement[ix]); } return output; } double ProductionMatrixElement::average(const RhoDMatrix & in1, const RhoDMatrix & in2) const { Complex output(0.); for( int ihel1=0;ihel1<int(_inspin[0]);++ihel1) { for( int ihel2=0;ihel2<int(_inspin[1]);++ihel2) { int loc1 = ihel1*_constants[1] + ihel2*_constants[2]; for( int jhel1=0;jhel1<int(_inspin[0]);++jhel1) { for( int jhel2=0;jhel2<int(_inspin[1]);++jhel2) { int loc2 = jhel1*_constants[1] + jhel2*_constants[2]; Complex fact = in1(ihel1,jhel1)*in2(ihel2,jhel2); for(int ohel=0;ohel<_constants[2];++ohel) { output += fact *_matrixelement[loc1+ohel]*conj(_matrixelement[loc2+ohel]); } } } } } return real(output); } Complex ProductionMatrixElement::average(const ProductionMatrixElement & me2, const RhoDMatrix & in1, const RhoDMatrix & in2) const { Complex output(0.); for( int ihel1=0;ihel1<int(_inspin[0]);++ihel1) { for( int ihel2=0;ihel2<int(_inspin[1]);++ihel2) { int loc1 = ihel1*_constants[1] + ihel2*_constants[2]; for( int jhel1=0;jhel1<int(_inspin[0]);++jhel1) { for( int jhel2=0;jhel2<int(_inspin[1]);++jhel2) { int loc2 = jhel1*_constants[1] + jhel2*_constants[2]; Complex fact = in1(ihel1,jhel1)*in2(ihel2,jhel2); for(int ohel=0;ohel<_constants[2];++ohel) { output += fact *_matrixelement[loc1+ohel]*conj(me2._matrixelement[loc2+ohel]); } } } } } return output; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/MatrixElement/MEfftoffH.h�������������������������������������������������������0000644�0001750�0001750�00000021564�11754474776�021544� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_MEfftoffH_H #define HERWIG_MEfftoffH_H // // This is the declaration of the MEfftoffH class. // #include "HwMEBase.h" #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" #include "Herwig++/MatrixElement/ProductionMatrixElement.h" #include "Herwig++/PDT/GenericMassGenerator.h" namespace Herwig { using namespace ThePEG; /** * The MEfftoffH class is the base class for vector boson fusion type * processes in Herwig++. * * @see \ref MEfftoffHInterfaces "The interfaces" * defined for MEfftoffH. */ class MEfftoffH: public HwMEBase { public: /** * The default constructor. */ MEfftoffH() : _shapeopt(2), _maxflavour(5), _minflavour(1), _process(0), _mh(), _wh(), _swap(false) {} /** @name Virtual functions required by the MEBase class. */ //@{ /** * Return the order in \f$\alpha_S\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaS() const; /** * Return the order in \f$\alpha_{EW}\f$ in which this matrix * element is given. */ virtual unsigned int orderInAlphaEW() const; /** * The matrix element for the kinematical configuration * previously provided by the last call to setKinematics(), suitably * scaled by sHat() to give a dimension-less number. * @return the matrix element scaled with sHat() to give a * dimensionless number. */ virtual double me2() const; /** * Return the scale associated with the last set phase space point. */ virtual Energy2 scale() const; /** * Set the typed and momenta of the incoming and outgoing partons to * be used in subsequent calls to me() and colourGeometries() * according to the associated XComb object. If the function is * overridden in a sub class the new function must call the base * class one first. */ virtual void setKinematics(); /** * The number of internal degrees of freedom used in the matrix * element. */ virtual int nDim() const; /** * Generate internal degrees of freedom given nDim() uniform * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space * generator, the dSigHatDR should be a smooth function of these * numbers, although this is not strictly necessary. * @param r a pointer to the first of nDim() consecutive random numbers. * @return true if the generation succeeded, otherwise false. */ virtual bool generateKinematics(const double * r); /** * Return the matrix element squared differential in the variables * given by the last call to generateKinematics(). */ virtual CrossSection dSigHatDR() const; /** * Get diagram selector. With the information previously supplied with the * setKinematics method, a derived class may optionally * override this method to weight the given diagrams with their * (although certainly not physical) relative probabilities. * @param dv the diagrams to be weighted. * @return a Selector relating the given diagrams to their weights. */ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; /** * Return a Selector with possible colour geometries for the selected * diagram weighted by their relative probabilities. * @param diag the diagram chosen. * @return the possible colour geometries weighted by their * relative probabilities. */ virtual Selector<const ColourLines *> colourGeometries(tcDiagPtr diag) const; /** * Construct the vertex of spin correlations. */ virtual void constructVertex(tSubProPtr); //@} 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: /** * Matrix element for \f$ff\to h^0\to ff h^0\f$. * @param f1 Spinors for first incoming fermion * @param f2 Spinors for second incoming fermion * @param a1 Spinors for first outgoing fermion * @param a2 Spinors for second outgoing fermion * @param swap1 Whether or not to swap the order for the first fermion line * @param swap2 Whether or not to swap the order for the second fermion line * @param me Whether or not to calculate the matrix element for spin correlations */ double helicityME(vector<SpinorWaveFunction> & f1 , vector<SpinorWaveFunction> & f2 , vector<SpinorBarWaveFunction> & a1, vector<SpinorBarWaveFunction> & a2, bool swap1, bool swap2, bool me) const; /** * Access to the vector ParticleData objects */ //@{ /** * Access to the \f$W^+\f$ data */ PDPtr WPlus() const {return _wplus;} /** * Access to the \f$W^-\f$ data */ PDPtr WMinus() const {return _wminus;} /** * Access to the \f$Z^0\f$ data */ PDPtr Z0() const {return _z0;} /** * Access to the Higgs boson */ PDPtr higgs() const {return _higgs;} /** * Set the Higgs boson */ void higgs(PDPtr in) {_higgs=in;} //@} /** * Set the pointer to the vector-vector-Higgs vertex */ void setWWHVertex(AbstractVVSVertexPtr in) { _vertexWWH = in; } /** * Set the line shape treatment */ void lineShape(unsigned int in) {_shapeopt=in;} /** * Which process to generate */ unsigned int process() const {return _process;} /** * Whether momenta are swapped */ bool swapOrder() {return _swap;} /** * Which process to generate */ void process(unsigned int in) {_process = in;} /** * Maximum flavour of the incoming partons */ unsigned int maxFlavour() const {return _maxflavour;} /** * Minimum flavour of the incoming partons */ unsigned int minFlavour() const {return _minflavour;} 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 static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<MEfftoffH> initMEfftoffH; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MEfftoffH & operator=(const MEfftoffH &); private: /** * Defines the Higgs resonance shape */ unsigned int _shapeopt; /** * Maximum flavour of the quarks involved */ unsigned int _maxflavour; /** * Minimum flavour of the quarks involved */ unsigned int _minflavour; /** * Whether to include $WW$ and $ZZ$ processes or both */ unsigned int _process; /** * The intermediate vector bosons */ //@{ /** * \f$W^+\f$ */ PDPtr _wplus; /** * \f$W^-\f$ */ PDPtr _wminus; /** * \f$Z^0\f$ */ PDPtr _z0; /** * Higgs boson */ PDPtr _higgs; //@} /** * The vertices for the calculation of the matrix element */ //@{ /** * Vertex for fermion-fermion-W */ AbstractFFVVertexPtr _vertexFFW; /** * Vertex for fermion-fermion-Z */ AbstractFFVVertexPtr _vertexFFZ; /** * Vertex for vector-vector-Higgs */ AbstractVVSVertexPtr _vertexWWH; //@} /** * On-shell mass for the higgs */ Energy _mh; /** * On-shell width for the higgs */ Energy _wh; /** * The mass generator for the Higgs */ GenericMassGeneratorPtr _hmass; /** * Matrix element for spin correlations */ mutable ProductionMatrixElement _me; /** * if order swaped */ bool _swap; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MEfftoffH. */ template <> struct BaseClassTrait<Herwig::MEfftoffH,1> { /** Typedef of the first base class of MEfftoffH. */ typedef Herwig::HwMEBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MEfftoffH class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MEfftoffH> : public ClassTraitsBase<Herwig::MEfftoffH> { /** Return a platform-independent class name */ static string className() { return "Herwig::MEfftoffH"; } }; /** @endcond */ } #endif /* HERWIG_MEfftoffH_H */ ��������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/AUTHORS�������������������������������������������������������������������������0000644�0001750�0001750�00000001033�11755432212�016022� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������============ Herwig++ 2.6 ============ Please contact <herwig@projects.hepforge.org> for any queries. ======== Authors: ======== Ken Arnold Luca d'Errico Stefan Gieseke David Grellscheid Keith Hamilton Andreas Papaefstathiou Simon Plätzer Peter Richardson Christian Röhr Alex Schofield Mike Seymour Andrzej Siódmok Martin Stoll Bryan Webber David Winn =============== Former authors: =============== Manuel Bähr Martyn Gigg Seyi Latunde-Dada Alberto Ribon Pavel RůžiÄka Alexander Sherstnev Philip Stephens Louise Suter Jon Tully �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/ChangeLog�����������������������������������������������������������������������0000644�0001750�0001750�00000213705�11754474776�016563� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Please consult the version control log file for newer entries. 2009-09-30 Leif Lönnblad <Leif.Lonnblad@thep.lu.se> * src/defaults/HerwigDefaults.in: Change the way the DefaultStrategy object select which particles are included in a run. 2009-09-29 Leif Lönnblad <Leif.Lonnblad@thep.lu.se> * src/Makefile.am (install-data-hook): Install the Herwig repository inside the default ThePEG repository. * PDT/GenericMassGenerator.cc, PDT/GenericWidthGenerator.cc (setParticle): First check if the argument is a valid name of a (particle) object, then check if the argument is a general particle name. 2006-10-27 Martyn Gigg <m.a.gigg@dur.ac.uk> * Helicity/Vertex/Susy/* : Tidy up and correction of some minor errors * MatrixElement/{MEff2ff, MEff2ss, MEfv2fs, MEvv2ff, MEvv2ss} : Tidy up of code and moved of diagrams and getDiagrams functions to base class since they are generic * MatrixElement/GeneralHardME.{h, cc} : Implemented getDiagrams() member function here instead of in derived classes * Models/General/HardProcessConstructor.cc : Tidy up of code * Models/General/HPDiagram : Fixed doxygen warning and removed uneeded ThePEG header 2006-10-23 Martyn Gigg <m.a.gigg@dur.ac.uk> * MatrixElement/VVFFbarME.*, VVSSME.*, FFbarSSME.* : Renamed matrix elements to be more in line with naming convention * Models/General/HardProcessConstructor.{h, cc} : Changes to reflect renaming of MatrixElements 2006-10-19 Martyn Gigg <m.a.gigg@dur.ac.uk> * Helicity/Vertex/Susy/SSCNZWVertex.* : Added chargino-neutralino-W vertex. * Helicity/Vertex/Susy/* : Various corrections to vertices. * Models/Susy/SusyBase.{h, cc} : Added SSCNWVertex to vertex list 2006-10-19 Martyn Gigg <m.a.gigg@dur.ac.uk> * Helicity/Vertex/Susy/SSCC{Z, P}Vertex.* : Added chargino-chargino-photon and chargino-chargino-Z vertices * Models/Susy/SusyBase.{h, cc} : Added new vertices to list 2006-10-18 Martyn Gigg <m.a.gigg@dur.ac.uk> * Helicity/Vertex/Scalar/FFSVertex.{h, cc} : Added an integer param to the setCoupling method to identify off-shell particle in vertex * Helicity/Vertex/Susy/* : Fixed compiler warnings and various bugs within the majorana vertices * Helicity/Vertex/StandardModel/SMFFHVertex.h : Updated to use new setCoupling method in FFSVertex * Decay/General/FFSDecayer.cc, Decay/General/SFFDecayer.cc : Updated to use new setCoupling in FFSVertex 2006-10-10 Martyn Gigg <m.a.gigg@dur.ac.uk> * MatrixElement/MEff2ff.* : Added matrix element for ffbar to ffbar * MatrixElement/MEfv2fs.cc : Corrected diagram calculation * Models/General/HardProcessConstructor.cc, HPDiagram.icc : Changes in line with matrix element changes * Helicity/Vertex/Susy/SSNNZVertex.* : Added neutralino-neutralino- Z vertex * Helicity/Vertex/Susy/SSCFSVertex.icc : Fixed typo with sin2Theta where sqrt was forgotten * Models/Susy/SusyBase.{h, cc} : Added SSNNZVertex to list of vertices within the Model 2006-10-03 Martyn Gigg <m.a.gigg@dur.ac.uk> * Models/General/HPDiagram.*, Models/General/HardProcessConstructor.* : Changes to the way colourflows are calculated * MatrixElement/GeneralHardME.* : Changes in matrix element implementation to reflect the changes in the HardProcessConstructor and HPDiagram * Helicity/Vertex/StandardModel/*.icc, Helicity/Vertex/Susy/*.icc : Replaced memebrs that set the order in alphaS and alphaEM that had been removed * Helicity/Vertex/Susy/{SSGFSVertex.cc, SSNFSVertex.cc} : Changed setCoupling so that vertex is evaluated properly if fermion flow direction is reversed 2006-08-18 Martyn Gigg <m.a.gigg@dur.ac.uk> * Models/General/HPDiagram.{h, icc} : Split off declaration of HPDiagram structure to separate file and made some changes to the information that it stores so that MEDiagram in GeneralHardME could be removed * Models/General/HardProcessConstructor.* : Changes to use new object creation methods of ThePEG and tidy up of code (not complete) * MatrixElement/{GeneralHardME.*, VVFFbarME.*, VVSSME.*} : Changes to MatrixElements to be compatible with new way in which HardProcessConstructor creates them 2006-08-17 Martyn Gigg <m.a.gigg@dur.ac.uk> * MatrixElement/GeneralHardME.{h, icc, cc}, * MatrixElement/VVFFbar.{h, icc, cc} : Changed the method of calculating the matrix element colour flows * Models/StandardModel/StandardModel.{h, cc} : Removed obselete doinitrun method and removed call to setupModel from doinit * Models/General/* : Changes to the structure of automatic decayer, decaymode and matrix element creation to utilise new functions in ThePEG. Requires up-to-date version of ThePEG. * Decay/General/* : Removed old members not needed now the decayers are created properly in the EventGenerator and modeNumber virtual function is now implemented. This required a new member function colourConnections() that must be called in the me2() function of each inheriting decayer. * src/{LEP.in, Model.in} : Removed double initilisation from LEP.in and removed reference to model pointer from HardProcessConstructor * Models/Susy/SusyBase.{h, icc, cc} : Implemented getReferences virtual function so that MixingMatrix objects get cloned. * Helicity/Vertex/Susy/* : Removed references to SusyBase object and changed the way in which MixingMatrices were retrieved. They are now taken from the current event generator and not the Repository. * Helicity/Vertex/Scalar/SVVLoopVertex.{h, icc} : Replaced interface doinit, doinitrun and dofinish members that were mistakenly removed. * Helicity/Vertex/GeneralSVVVertex.icc : Correctly set the type of vertex in the constructor 2006-07-26 Martyn Gigg <m.a.gigg@dur.ac.uk> * Models/Susy/SusyBase.*, Models/General/TwoBodyDecayConstructor.cc, * Models/General/HardProcessConstructor.cc: Changed use of stringstream to comply with the new changes in the ThePEG and uninlined 2 functions in SusyBase that should not have been inlined 2006-07-24 Martyn Gigg <m.a.gigg@dur.ac.uk> * Helicity/Vertex/Susy/* : Clean up to tidy up code and remove some unecessary member functions 2006-07-22 David Grellscheid <David.Grellscheid@durham.ac.uk> * Helicity/Vertex/*Model/*Vertex.*, Models/*Model/*: Fixed memory leak problem with theback-references to StandardModel by the Vertex classes. Cleanup of Vertex classes. * MatrixElement/*.*cc, Decay/Perturbative/*.cc: Used new Model typedefs HwSMPtr and HwRSPtr 2006-07-18 Martyn Gigg <m.a.gigg@dur.ac.uk> * MatrixElement/Makefile.am : Fixed spelling error that meant some files were not included in tar ball * src/Model.in : Now creates HardProcessConstructor object by default * Helicity/Vertex/Susy/SSGSGSGVertex.* : Added gluon-gluino- gluino vertex * Models/Susy/SusyBase.* : Added gluon-gluino-gluino vertex to list of vertices * Helicity/Vertex/Susy/SSNFSVertex : Corrected error with retrieving particle mass * Helicity/Vertex/Scalar/GeneralSVVVertex.h : Changes so that class shows up in doxygen documentation * Shower/ShowerHandler.cc : Changed how to deduce whether a particle is a decay product * Models/General/TwoBodyDecayConstructor.cc : Taken out repository stats output * Decay/MamboDecayer.cc : Fixed colourlines for decaying colour octet states * Decay/General/GeneralTwoBodyDecayer.cc : Taken out statement printing decay modes 2006-07-07 Peter Richardson <Peter.Richardson@durham.ac.uk> * Merged latest changes from trunk 2006-07-05 Martyn Gigg <m.a.gigg@dur.ac.uk> * Helicity/Vertex/Scalar/VSSVeretex.cc : Corrected mistake in function evaluating the vertex 2006-06-30 Martyn Gigg <m.a.gigg@dur.ac.uk> * MatrixElement/VVSSME.*, FFbarSSME.*: Added new matrix elements * Helicity/Vertex/* : Tidy up of documentation and added new gluon gluon-squark-squark vertex * lib/Makefile.am : StandardModel vertices are now dynamically loaded * Models/General/HardProcessConstructor.cc : Changed the way diagrams are created for matrix elements * Models/Susy/SusyBase.* : Added new vertex to model 2006-07-22 David Grellscheid <David.Grellscheid@durham.ac.uk> * Helicity/Vertex/*Model/*Vertex.*, Models/*Model/*: Fixed memory leak problem with theback-references to StandardModel by the Vertex classes. Cleanup of Vertex classes. * MatrixElement/*.*cc, Decay/Perturbative/*.cc: Used new Model typedefs HwSMPtr and HwRSPtr 2006-06-30 David Grellscheid <David.Grellscheid@durham.ac.uk> * Models/StandardModel/O2AlphaS.*: changed LambdaQCD() output to return vector starting with Lambda_0 instead of Lambda_1. In line with ThePEG 2006-06-30 David Grellscheid <David.Grellscheid@durham.ac.uk> * Models/StandardModel/O2AlphaS.*: changed LambdaQCD() output to return vector starting with Lambda_0 instead of Lambda_1. In line with ThePEG 2006-06-13 David Grellscheid <David.Grellscheid@durham.ac.uk> * Decay/Perturbative/Makefile.am: SMWZDecayer and SMTopDecayer need to be built by default. Split out HwPerturbativeHiggsDecay.so 2006-06-13 David Grellscheid <David.Grellscheid@durham.ac.uk> * Decay/Perturbative/Makefile.am: SMWZDecayer and SMTopDecayer need to be built by default. Split out HwPerturbativeHiggsDecay.so 2006-06-07 David Grellscheid <David.Grellscheid@durham.ac.uk> * */Makefile.am, acinclude.m4, configure.ac: New decayers only get built when requested in configure flag. Apple Looptool problem fixed. Optionally, all Looptool-dependent code can be disabled. 2006-06-07 David Grellscheid <David.Grellscheid@durham.ac.uk> * */Makefile.am, acinclude.m4, configure.ac: New decayers only get built when requested in configure flag. Apple Looptool problem fixed. Optionally, all Looptool-dependent code can be disabled. 2006-06-01 David Grellscheid <David.Grellscheid@durham.ac.uk> * Analysis/LEPEventShapes.*, Utilities/Histogram.*, Utilities/Statistic.*: Added support for weighted events. * src/Herwig++.cc: counter now only updates for every 1% of events. 2006-06-01 David Grellscheid <David.Grellscheid@durham.ac.uk> * Analysis/LEPEventShapes.*, Utilities/Histogram.*, Utilities/Statistic.*: Added support for weighted events. * src/Herwig++.cc: counter now only updates for every 1% of events. 2006-05-30 Martyn Gigg <m.a.gigg@dur.ac.uk> * Helicity/Vertex/VertexBase.h (Repository): Added storage for the order in g_s and alpha_em of the vertex * Helicity/Vertex/StandardModel, Helicity/Vertex/Susy (Repository) : Changed vertices to incorporate new method for storing order in couplings and added gluon-sfermion-sfermion vertex * MatrixElement/GeneralHardME, MatrixElement/FFbarSSME (Repository): Added new matrix elements * Decay/MamboDecayer.*, Decay/General (Repository) : Tidy up * lib/Makefile.am (Repository) : Statically linked new matrix element library * Models/General/* (Repository) : Changed to create new matrix elements and general tidy up * Models/Susy/SusyBase.* (Repository) : Incorporate new vertices into model * Models/Susy/MixingMatrix.icc (Repository) : Changed constructor to use initialisation syntax 2006-05-30 Martyn Gigg <m.a.gigg@dur.ac.uk> * Models/General (Repository): Added HardProcessConstructor class * Models/Susy/MixingMatrix (Repository): Modified range checking when returning element of matrix to use at() member of vector * Decay/General (Repository): Tidy up of decayers * Helicity/Vertex/Susy (Repository): Fixed bugs where if was using assignment rather than testing for equality 2006-06-18 Martyn Gigg <m.a.gigg@dur.ac.uk> * configure.ac (Repository): Added Susy vertices directory * Models/StandardModel/O2AlphaS.h (Repository): Merged from main branch * Models/General (Repository): Modified classes to use new decayers * Models/Susy (Repository): Modified SusyBase reading member funtion * Helicity/Vertex/Susy (Repository): Added Susy Directory and Vertices * Models/General/ (Repository): Added New Decayers and and altered old ones to change the way they search lists 2006-03-13 Peter Richardson <Peter.Richardson@durham.ac.uk> * MatrixElement/MEPP2HiggsJet.icc (Repository): added matrix element for gamma gamma and Higgs + jet production 2006-03-13 Martyn Gigg <m.a.gigg@dur.ac.uk> * Models/General/TwoBodyDecayConstructor.cc (Repository): Changed in order to create new decayers * Models/Makefile.am, configure.ac (Repository): Altered to include Susy directory * Models/Susy (Repository): Added Susy directory and SusyBase class 2006-03-13 Peter Richardson <Peter.Richardson@durham.ac.uk> * MatrixElement/MEPP2HiggsJet.icc (Repository): added matrix element for gamma gamma and Higgs + jet production 2006-03-09 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/General (Repository): Added FFSDecayer,VVVDecayer,SSSDecayer 2006-03-02 Peter Richardson <Peter.Richardson@durham.ac.uk> * Models/StandardModel/O2AlphaS: Added a 2-loop alphaS class using the same approach as FORTRAN HERWIG to make comparisions easier. 2006-03-02 Peter Richardson <Peter.Richardson@durham.ac.uk> * Models/StandardModel/O2AlphaS: Added a 2-loop alphaS class using the same approach as FORTRAN HERWIG to make comparisions easier. 2006-02-27 Peter Richardson <Peter.Richardson@durham.ac.uk> * MatrixElement/MEPP2GammaJet.h (Repository): spin correlation code added to gamma+jets ME 2006-02-27 Peter Richardson <Peter.Richardson@durham.ac.uk> * MatrixElement/MEQCD2to2 (Repository): QCD 2-to-2 matrix elements added 2006-02-27 Peter Richardson <Peter.Richardson@durham.ac.uk> * MatrixElement/MEPP2GammaJet.h (Repository): spin correlation code added to gamma+jets ME 2006-02-27 Peter Richardson <Peter.Richardson@durham.ac.uk> * MatrixElement/MEQCD2to2 (Repository): QCD 2-to-2 matrix elements added 2006-02-22 Peter Richardson <Peter.Richardson@durham.ac.uk> * Finished the removal of the VectorMesonDecayerBase and TensorMesonDecayerBase classes 2006-02-22 Peter Richardson <Peter.Richardson@durham.ac.uk> * Base class changed in a number of Vector decayers in preparation for the removal of the VectorMesonDecayerBase class. 2006-02-22 Peter Richardson <Peter.Richardson@durham.ac.uk> * Finished the removal of the VectorMesonDecayerBase and TensorMesonDecayerBase classes 2006-02-22 Peter Richardson <Peter.Richardson@durham.ac.uk> * Base class changed in a number of Vector decayers in preparation for the removal of the VectorMesonDecayerBase class. 2006-02-21 Peter Richardson <Peter.Richardson@durham.ac.uk> * changes to fix change conservation problems from branch merge and change base class of TensorMeson2MesonDecayer. 2006-02-21 Peter Richardson <Peter.Richardson@durham.ac.uk> * changes to include the matrix element for gamma+jet 2006-02-21 Peter Richardson <Peter.Richardson@durham.ac.uk> * changes to fix change conservation problems from branch merge and change base class of TensorMeson2MesonDecayer. 2006-02-21 Peter Richardson <Peter.Richardson@durham.ac.uk> * changes to include the matrix element for gamma+jet 2006-02-20 Martyn Gigg <m.a.gigg@dur.ac.uk> * Models/General/TwoBodyDecayConstructor.cc (Repository): Changes to create newly added decayers * Decay/General (Repository): Added more decayers for bsm study * Helicity/Vertex/VertexBase.h (Repository): Changed getLeft() and getRight() from protected to public * Helicity/WaveFunction/ScalarWaveFunction.cc (Repository): Changed one of the special constructors to set particle pointer and momentum properly * Helicity/Vertex/Scalar/GeneralSVVVertex.cc (Repository): Documentation changes * Models/RSModel/RSModel.icc (Repository): Added RS Vertices to storage in base class * Models/StandardModel/StandardModel.cc (Repository): Initialized running mass object in doinit * Decay/General/GeneralTwoBodyDecayer.h (Repository): Changes to store pointer to vertex in each decayer 2006-02-16 David Grellscheid <David.Grellscheid@durham.ac.uk> * src/HerwigDefaults.in: New handling of cuts in ThePEG 2006-02-16 David Grellscheid <David.Grellscheid@durham.ac.uk> * src/HerwigDefaults.in: New handling of cuts in ThePEG 2006-02-07 David Grellscheid <David.Grellscheid@durham.ac.uk> * configure.ac, README, AUTHORS: Last updates, tagged and published as Herwig++-2.0-beta release. Merged release branch into main up until tag herwig-2-0-beta 2006-02-07 David Grellscheid <David.Grellscheid@durham.ac.uk> * configure.ac, README, AUTHORS: Last updates, tagged and published as Herwig++-2.0-beta release. Merged release branch into main up until tag herwig-2-0-beta 2006-02-03 David Grellscheid <David.Grellscheid@durham.ac.uk> * MatrixElement/MEqq2W2ll.cc: Bugfix for unititialized variable. Solves imbalance between W+ and W-. 2006-02-03 David Grellscheid <David.Grellscheid@durham.ac.uk> * MatrixElement/MEqq2W2ll.cc: Bugfix for unititialized variable. Solves imbalance between W+ and W-. 2006-02-02 David Grellscheid <David.Grellscheid@durham.ac.uk> * Shower/ShowerHandler.cc, Hadronization/PartonSplitter.cc: Added eventerror for spacelike gluons in PartonSplitter. Added check for QCD-FSR when doing ME corrections. 2006-02-02 David Grellscheid <David.Grellscheid@durham.ac.uk> * Shower/ShowerHandler.cc, Hadronization/PartonSplitter.cc: Added eventerror for spacelike gluons in PartonSplitter. Added check for QCD-FSR when doing ME corrections. 2006-02-01 David Grellscheid <David.Grellscheid@durham.ac.uk> * all: Branched off herwig-2-0-beta-release branch, then merged Decay Radiation branch. Structural changes to decayers. * Utilities/Math.cc, Decay/Perturbative/SMTopDecayer.h, SMHiggsGGHiggsPPDecayer.h, SMHiggsFermionsDecayer.h: Temporary fixes to allow compilation. 2006-02-01 David Grellscheid <David.Grellscheid@durham.ac.uk> * all: Branched off herwig-2-0-beta-release branch, then merged Decay Radiation branch. Structural changes to decayers. * Utilities/Math.cc, Decay/Perturbative/SMTopDecayer.h, SMHiggsGGHiggsPPDecayer.h, SMHiggsFermionsDecayer.h: Temporary fixes to allow compilation. 2006-01-31 David Grellscheid <David.Grellscheid@durham.ac.uk> * src/Shower.in, Shower/SplittingFunctions: Individual PDFMax limits for efficiency. * Decay/HwDecayHandler.cc: Added vertex setting to handle displaced vertices. 2006-01-31 Martyn Gigg <m.a.gigg@dur.ac.uk> * src/HerwigDefaults.in: Updating after main-to-bsm merge * Models/General/TwoBodyDecayConstructor.cc: Added creation of FFV decayer * Decay/General/FFVDecayer.h (Repository): Added FFVDecayer for bsm 2006-01-31 David Grellscheid <David.Grellscheid@durham.ac.uk> * src/Shower.in, Shower/SplittingFunctions: Individual PDFMax limits for efficiency. * Decay/HwDecayHandler.cc: Added vertex setting to handle displaced vertices. 2006-01-26 David Grellscheid <David.Grellscheid@durham.ac.uk> * MatrixElements/*: New qq->W->ll and ee->gZ->qq matrix elements. Replaced default qq->gZ->ll * src/Analysis.in, Analysis/SimpleLHCAnalysis.*, Analysis/Histogram.*, Analysis/BasicConsistency.*: Added SimpleLHCAnalysis, cleaned up Histogram class and BasicConsistency analysis. * src/Shower.in, Shower/PartnerFinder.cc, Shower/KinematicsReconstructor.cc, Shower/Evolver.cc, Shower/BackwardEvolver.cc: fixed ISR/FSR crash for LHC. This is NOT a permanent solution, there is no timelike showering of ISR particles at the moment! 2006-01-26 David Grellscheid <David.Grellscheid@durham.ac.uk> * MatrixElements/*: New qq->W->ll and ee->gZ->qq matrix elements. Replaced default qq->gZ->ll * src/Analysis.in, Analysis/SimpleLHCAnalysis.*, Analysis/Histogram.*, Analysis/BasicConsistency.*: Added SimpleLHCAnalysis, cleaned up Histogram class and BasicConsistency analysis. * src/Shower.in, Shower/PartnerFinder.cc, Shower/KinematicsReconstructor.cc, Shower/Evolver.cc, Shower/BackwardEvolver.cc: fixed ISR/FSR crash for LHC. This is NOT a permanent solution, there is no timelike showering of ISR particles at the moment! 2006-01-24 David Grellscheid <David.Grellscheid@durham.ac.uk> * PDF/MRST.cc: Restructured for speed, high-x problem unchanged 2006-01-24 David Grellscheid <David.Grellscheid@durham.ac.uk> * PDF/MRST.cc: Restructured for speed, high-x problem unchanged 2006-01-24 David Grellscheid <David.Grellscheid@durham.ac.uk> * PDF/MRST.cc: Restructured for speed, high-x problem unchanged 2006-01-23 David Grellscheid <David.Grellscheid@durham.ac.uk> * Analysis/*: Added more simple analysis handlers for multiplicity checking and general consistency. * src/Hadronization.in: reset s-quark weight to 1.0 * PDF/MRST.cc: Added GeV2 to fix wrong PDF behaviour 2006-01-23 Peter Richardson <Peter.Richardson@durham.ac.uk> * Added basic analysis handlers 2006-01-23 David Grellscheid <David.Grellscheid@durham.ac.uk> * Analysis/*: Added more simple analysis handlers for multiplicity checking and general consistency. * src/Hadronization.in: reset s-quark weight to 1.0 * PDF/MRST.cc: Added GeV2 to fix wrong PDF behaviour 2006-01-23 Peter Richardson <Peter.Richardson@durham.ac.uk> * Added basic analysis handlers 2006-01-23 David Grellscheid <David.Grellscheid@durham.ac.uk> * Analysis/*: Added more simple analysis handlers for multiplicity checking and general consistency. * src/Hadronization.in: reset s-quark weight to 1.0 * PDF/MRST.cc: Added GeV2 to fix wrong PDF behaviour 2006-01-23 Peter Richardson <Peter.Richardson@durham.ac.uk> * Added basic analysis handlers 2006-01-20 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/General/VFFDecayer.icc (Repository): Altered default contructor to set which list to search * Models/General/TwoBodyDecayConstructor.cc (Repository): Added functionality to create decaymodes dynamically 2006-01-06 Peter Richardson <Peter.Richardson@durham.ac.uk> * Various changes to get the forced splitting to work * Shower/Makefile.am (Repository): Change to Makefile due to move of SudakovFormFactor to SplittingFunctions directory 2006-01-06 Peter Richardson <Peter.Richardson@durham.ac.uk> * Various changes to get the forced splitting to work * Shower/Makefile.am (Repository): Change to Makefile due to move of SudakovFormFactor to SplittingFunctions directory 2006-01-06 Peter Richardson <Peter.Richardson@durham.ac.uk> * Various changes to get the forced splitting to work * Shower/Makefile.am (Repository): Change to Makefile due to move of SudakovFormFactor to SplittingFunctions directory 2005-12-22 Peter Richardson <Peter.Richardson@durham.ac.uk> * Shower/ForwardEvolver.cc (Repository): SplttingFunctions and related classes cleaned up and moved to new directory 2005-12-22 Peter Richardson <Peter.Richardson@durham.ac.uk> * Shower/ForwardEvolver.cc (Repository): SplttingFunctions and related classes cleaned up and moved to new directory 2005-12-22 Peter Richardson <Peter.Richardson@durham.ac.uk> * Shower/ForwardEvolver.cc (Repository): SplttingFunctions and related classes cleaned up and moved to new directory 2005-12-18 David Grellscheid <David.Grellscheid@durham.ac.uk> * Shower/SudakovFormFactor.cc: Veto bugs fixed * Shower/KinematicsReconstructor.cc, Shower/BackwardEvolver.cc: wrapped forced splittings in '#ifdef PHILSCODE', to make Shower testing work (also in PDF/BaryonRemnants.cc) * Shower/SplittingGenerator.cc: small change, wrapped some 'cout' in a DEBUG_LEVEL test * Hadronization/ClusterHadronizationHandler.cc: added missing Remnant code * src/Shower.in: typo c->c,cbar fixed to g->c,cbar; cleaned up arrangement 2005-12-18 David Grellscheid <David.Grellscheid@durham.ac.uk> * Shower/SudakovFormFactor.cc: Veto bugs fixed * Shower/KinematicsReconstructor.cc, Shower/BackwardEvolver.cc: wrapped forced splittings in '#ifdef PHILSCODE', to make Shower testing work (also in PDF/BaryonRemnants.cc) * Shower/SplittingGenerator.cc: small change, wrapped some 'cout' in a DEBUG_LEVEL test * Hadronization/ClusterHadronizationHandler.cc: added missing Remnant code * src/Shower.in: typo c->c,cbar fixed to g->c,cbar; cleaned up arrangement 2005-12-18 David Grellscheid <David.Grellscheid@durham.ac.uk> * Shower/SudakovFormFactor.cc: Veto bugs fixed * Shower/KinematicsReconstructor.cc, Shower/BackwardEvolver.cc: wrapped forced splittings in '#ifdef PHILSCODE', to make Shower testing work (also in PDF/BaryonRemnants.cc) * Shower/SplittingGenerator.cc: small change, wrapped some 'cout' in a DEBUG_LEVEL test * Hadronization/ClusterHadronizationHandler.cc: added missing Remnant code * src/Shower.in: typo c->c,cbar fixed to g->c,cbar; cleaned up arrangement 2005-12-17 David Grellscheid <David.Grellscheid@durham.ac.uk> * Shower/*, src/*.in ( and others ): Full merge of Stefan's Shower changes, Phil's refactoring of forced splitting, Peter's Remnant class and Durham bugfixes. NOT tested yet. * PDF/BaryonRemnants.cc: Remnant and forced splitting don't work together so far. File contains #defines to choose version. This must be resolved! NOT tested yet. 2005-12-17 David Grellscheid <David.Grellscheid@durham.ac.uk> * Shower/*, src/*.in ( and others ): Full merge of Stefan's Shower changes, Phil's refactoring of forced splitting, Peter's Remnant class and Durham bugfixes. NOT tested yet. * PDF/BaryonRemnants.cc: Remnant and forced splitting don't work together so far. File contains #defines to choose version. This must be resolved! NOT tested yet. 2005-12-17 David Grellscheid <David.Grellscheid@durham.ac.uk> * Shower/*, src/*.in ( and others ): Full merge of Stefan's Shower changes, Phil's refactoring of forced splitting, Peter's Remnant class and Durham bugfixes. NOT tested yet. * PDF/BaryonRemnants.cc: Remnant and forced splitting don't work together so far. File contains #defines to choose version. This must be resolved! NOT tested yet. 2005-12-15 Martyn Gigg <m.a.gigg@dur.ac.uk> * Helicity/Vertex/Scalar/FFSVertex.h (Repository): Changed access for getting left and right components 2005-12-09 Martyn Gigg <m.a.gigg@dur.ac.uk> * Models/General/TwoBodyDecayConstructor.h (Repository): Added functions to create decayer and decay list 2005-12-09 Martyn Gigg <dph3mag@d52.phyip3.dur.ac.uk> * Decay/General/GeneralTwoBodyDecayer.cc (Repository): Added two body decayer class files 2005-11-15 Pete's account <Peter.Richardson@durham.ac.uk> * src/StandardModelVertices.in: changes to decay structure to avoid code duplication 2005-11-15 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Radiation/FFDipole.cc (Repository): changes to FF Dipole 2005-11-15 Pete's account <Peter.Richardson@durham.ac.uk> * src/StandardModelVertices.in: changes to decay structure to avoid code duplication 2005-11-15 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Radiation/FFDipole.cc (Repository): changes to FF Dipole 2005-11-04 Martyn Gigg <dph3mag@d31.phyip3.dur.ac.uk> * Helicity/Vertex/VertexBase.h (Repository): Changed VertexBase to allow for enumerating inheriting vertices 2005-11-01 Martyn Gigg <m.a.gigg@dur.ac.uk> * Models/General/DecayConstructor.h (Repository): Added DecayConstructor and other files for BSM structure 2005-10-25 Martyn Gigg <dph3mag@d31.phyip3.dur.ac.uk> * Decay/Perturbative/SMHiggsGGHiggsPPDecayer.h (Repository): Renamed SMHDecayer to SMHiggsGGHiggsPPDecayer 2005-10-25 Peter Richardson <Peter.Richardson@durham.ac.uk> * src (Repository): correction to ensure HGG and HPP work and minor structure for vertices 2005-10-25 Peter Richardson <Peter.Richardson@durham.ac.uk> * Models/General/ModelGenerator.fh (Repository): added files for new branch 2005-10-25 Martyn Gigg <dph3mag@d31.phyip3.dur.ac.uk> * Decay/Perturbative/SMHiggsGGHiggsPPDecayer.h (Repository): Renamed SMHDecayer to SMHiggsGGHiggsPPDecayer 2005-10-25 Peter Richardson <Peter.Richardson@durham.ac.uk> * src (Repository): correction to ensure HGG and HPP work and minor structure for vertices 2005-10-25 Martyn Gigg <dph3mag@d31.phyip3.dur.ac.uk> * Decay/Perturbative/SMHiggsGGHiggsPPDecayer.h (Repository): Renamed SMHDecayer to SMHiggsGGHiggsPPDecayer 2005-10-25 Peter Richardson <Peter.Richardson@durham.ac.uk> * src (Repository): correction to ensure HGG and HPP work and minor structure for vertices 2005-10-24 Martyn Gigg <dph3mag@d31.phyip3.dur.ac.uk> * Helicity/Vertex/StandardModel/SMHPPVertex.h (Repository): Added SMHPPVertex class * Helicity/Vertex/StandardModel/SMHGGVertex.h (Repository): Added SMHGGVertex * Helicity/Vertex/Scalar/SVVLoopVertex.h (Repository): Added SVVLoopVertex class * Helicity/Vertex/Scalar/GeneralSVVVertex.h (Repository): Added GeneralSVVVertex class * Decay/Perturbative/SMHDecayer.h (Repository): Added HVV decayer 2005-10-24 Martyn Gigg <dph3mag@d31.phyip3.dur.ac.uk> * Helicity/Vertex/StandardModel/SMHPPVertex.h (Repository): Added SMHPPVertex class * Helicity/Vertex/StandardModel/SMHGGVertex.h (Repository): Added SMHGGVertex * Helicity/Vertex/Scalar/SVVLoopVertex.h (Repository): Added SVVLoopVertex class * Helicity/Vertex/Scalar/GeneralSVVVertex.h (Repository): Added GeneralSVVVertex class * Decay/Perturbative/SMHDecayer.h (Repository): Added HVV decayer 2005-10-24 Martyn Gigg <dph3mag@d31.phyip3.dur.ac.uk> * Helicity/Vertex/StandardModel/SMHPPVertex.h (Repository): Added SMHPPVertex class * Helicity/Vertex/StandardModel/SMHGGVertex.h (Repository): Added SMHGGVertex * Helicity/Vertex/Scalar/SVVLoopVertex.h (Repository): Added SVVLoopVertex class * Helicity/Vertex/Scalar/GeneralSVVVertex.h (Repository): Added GeneralSVVVertex class * Decay/Perturbative/SMHDecayer.h (Repository): Added HVV decayer 2005-10-19 Peter Richardson <Peter.Richardson@durham.ac.uk> * Helicity/Vertex/StandardModel/SMFFHVertex.cc (Repository): changes to remove hard-wired value of pi * Helicity/WaveFunction/ScalarWaveFunction.cc (Repository): changes to correctly return rho matrix * Decay/Perturbative/SMWZDecayer.icc (Repository): modifications to SMWZDecayer to clean up code using new constructors to produce spinInfo * Helicity/Vertex/Vector/FFVVertex.h (Repository): added .fh file for FFVVertex * Decay/Perturbative/SMWZDecayer.h (Repository): added decayer for H -> f fbar * Helicity/Vertex/Scalar/Makefile.am (Repository): changes to include .fh file for FFSVertex 2005-10-19 Peter Richardson <Peter.Richardson@durham.ac.uk> * Helicity/Vertex/StandardModel/SMFFHVertex.cc (Repository): changes to remove hard-wired value of pi * Helicity/WaveFunction/ScalarWaveFunction.cc (Repository): changes to correctly return rho matrix * Decay/Perturbative/SMWZDecayer.icc (Repository): modifications to SMWZDecayer to clean up code using new constructors to produce spinInfo * Helicity/Vertex/Vector/FFVVertex.h (Repository): added .fh file for FFVVertex * Decay/Perturbative/SMWZDecayer.h (Repository): added decayer for H -> f fbar * Helicity/Vertex/Scalar/Makefile.am (Repository): changes to include .fh file for FFSVertex 2005-10-19 Peter Richardson <Peter.Richardson@durham.ac.uk> * Helicity/Vertex/StandardModel/SMFFHVertex.cc (Repository): changes to remove hard-wired value of pi * Helicity/WaveFunction/ScalarWaveFunction.cc (Repository): changes to correctly return rho matrix * Decay/Perturbative/SMWZDecayer.icc (Repository): modifications to SMWZDecayer to clean up code using new constructors to produce spinInfo * Helicity/Vertex/Vector/FFVVertex.h (Repository): added .fh file for FFVVertex * Decay/Perturbative/SMWZDecayer.h (Repository): added decayer for H -> f fbar * Helicity/Vertex/Scalar/Makefile.am (Repository): changes to include .fh file for FFSVertex 2005-10-07 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/Perturbative/SMTopDecayer.h (Repository): Added TopDecayer 2005-10-07 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/HwDecayHandler.cc (Repository): changes so the reference to the PartonicHadronizer can be set to null to switch off hadronization. 2005-10-07 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/Perturbative/SMTopDecayer.h (Repository): Added TopDecayer 2005-10-07 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/HwDecayHandler.cc (Repository): changes so the reference to the PartonicHadronizer can be set to null to switch off hadronization. 2005-10-07 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/Perturbative/SMTopDecayer.h (Repository): Added TopDecayer 2005-10-07 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/HwDecayHandler.cc (Repository): changes so the reference to the PartonicHadronizer can be set to null to switch off hadronization. 2005-10-05 David Grellscheid <David.Grellscheid@durham.ac.uk> * acinclude.m4: Fixed bug #8. CLHEPINCLUDE is used correctly now 2005-10-05 David Grellscheid <David.Grellscheid@durham.ac.uk> * acinclude.m4: Fixed bug #8. CLHEPINCLUDE is used correctly now 2005-10-05 David Grellscheid <David.Grellscheid@durham.ac.uk> * acinclude.m4: Fixed bug #8. CLHEPINCLUDE is used correctly now 2005-09-30 David Grellscheid <David.Grellscheid@durham.ac.uk> * configure.ac, Makefile.am: configure switches for Mac OS X 2005-09-30 David Grellscheid <David.Grellscheid@durham.ac.uk> * configure.ac, Makefile.am: configure switches for Mac OS X 2005-09-30 David Grellscheid <David.Grellscheid@durham.ac.uk> * configure.ac, Makefile.am: configure switches for Mac OS X 2005-09-29 David Grellscheid <David.Grellscheid@durham.ac.uk> * src/Hw64Decays.in, src/Decays.in: Activated Mambo decayer for 5-body decays in Hw64Decays.in to keep code working * Utilities/Math.cc: inlined power series 2005-09-29 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/Math.h (Repository): changes so private power series for dilog is not publically visible * Decay/MamboDecayer.h (Repository): removed 5 body decay option from Hw64Decayer 2005-09-29 David Grellscheid <David.Grellscheid@durham.ac.uk> * src/Hw64Decays.in, src/Decays.in: Activated Mambo decayer for 5-body decays in Hw64Decays.in to keep code working * Utilities/Math.cc: inlined power series 2005-09-29 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/Math.h (Repository): changes so private power series for dilog is not publically visible * Decay/MamboDecayer.h (Repository): removed 5 body decay option from Hw64Decayer 2005-09-29 David Grellscheid <David.Grellscheid@durham.ac.uk> * src/Hw64Decays.in, src/Decays.in: Activated Mambo decayer for 5-body decays in Hw64Decays.in to keep code working * Utilities/Math.cc: inlined power series 2005-09-29 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/Math.h (Repository): changes so private power series for dilog is not publically visible * Decay/MamboDecayer.h (Repository): removed 5 body decay option from Hw64Decayer 2005-09-28 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Baryon/BaryonFactorizedDecayer.h (Repository): added all .so files needed by library to all classes to ensure correct dynamic loading * Helicity/Vertex/Tensor/FFTVertex.fh (Repository): added .fh to define pointers for the tensor vertices 2005-09-28 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Baryon/BaryonFactorizedDecayer.h (Repository): added all .so files needed by library to all classes to ensure correct dynamic loading * Helicity/Vertex/Tensor/FFTVertex.fh (Repository): added .fh to define pointers for the tensor vertices 2005-09-28 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Baryon/BaryonFactorizedDecayer.h (Repository): added all .so files needed by library to all classes to ensure correct dynamic loading * Helicity/Vertex/Tensor/FFTVertex.fh (Repository): added .fh to define pointers for the tensor vertices 2005-09-27 kmh <kmh@phyip3.dur.ac.uk> * Decay/Radiation/FFDipole.cc (Module): Implemented boost factor added some histogramming (PAW). 2005-09-27 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/MamboDecayer.cc (Repository): Added class description and removed obsolete function (Repository): Removed unused variables 2005-09-27 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/DecayPhaseSpaceMode.cc (Repository): change to unmask parameters 2005-09-27 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/MamboDecayer.cc (Repository): Added class description and removed obsolete function (Repository): Removed unused variables 2005-09-27 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/DecayPhaseSpaceMode.cc (Repository): change to unmask parameters 2005-09-27 kmh <kmh@phyip3.dur.ac.uk> * Decay/Radiation/FFDipole.cc (Module): Implemented boost factor added some histogramming (PAW). 2005-09-27 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/MamboDecayer.cc (Repository): Added class description and removed obsolete function (Repository): Removed unused variables 2005-09-27 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/DecayPhaseSpaceMode.cc (Repository): change to unmask parameters 2005-09-26 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/MamboDecayer.cc (Repository): Added MamboDecayer 2005-09-26 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/MamboDecayer.cc (Repository): Added MamboDecayer 2005-09-26 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/MamboDecayer.cc (Repository): Added MamboDecayer 2005-09-23 David Grellscheid <David.Grellscheid@durham.ac.uk> * */*.h, */Makefile.am, src/*.in: Restructuring of libraries to clean up dependencies. Many parts turned into modules. make clean && make recommended. 2005-09-23 David Grellscheid <David.Grellscheid@durham.ac.uk> * */*.h, */Makefile.am, src/*.in: Restructuring of libraries to clean up dependencies. Many parts turned into modules. make clean && make recommended. 2005-09-23 David Grellscheid <David.Grellscheid@durham.ac.uk> * */*.h, */Makefile.am, src/*.in: Restructuring of libraries to clean up dependencies. Many parts turned into modules. make clean && make recommended. 2005-09-22 David Grellscheid <David.Grellscheid@durham.ac.uk> * Shower/*, UnderlyingEvent/*, lib/Makefile.am, src/UnderlyingEvent.in, src/Shower.in: Turned Shower and UA5 into modules. * src/LEPbb.in, src/HerwigDefaults.in, lib/Makefile.am, MatrixElement/*: Turned HwME.so into a module. * Decay/*, PDF/*, PDT/*: bugfixes and warning eliminations from -Wshadow 2005-09-22 David Grellscheid <David.Grellscheid@durham.ac.uk> * Shower/*, UnderlyingEvent/*, lib/Makefile.am, src/UnderlyingEvent.in, src/Shower.in: Turned Shower and UA5 into modules. * src/LEPbb.in, src/HerwigDefaults.in, lib/Makefile.am, MatrixElement/*: Turned HwME.so into a module. * Decay/*, PDF/*, PDT/*: bugfixes and warning eliminations from -Wshadow 2005-09-22 David Grellscheid <David.Grellscheid@durham.ac.uk> * Shower/*, UnderlyingEvent/*, lib/Makefile.am, src/UnderlyingEvent.in, src/Shower.in: Turned Shower and UA5 into modules. * src/LEPbb.in, src/HerwigDefaults.in, lib/Makefile.am, MatrixElement/*: Turned HwME.so into a module. * Decay/*, PDF/*, PDT/*: bugfixes and warning eliminations from -Wshadow 2005-09-21 David Grellscheid <David.Grellscheid@durham.ac.uk> * Helicity/Vertex/RSModel/RSModel*Vertex.h: modified the library() lines to take care of dependency on HwRSModel.so 2005-09-22 Peter Richardson <Peter.Richardson@durham.ac.uk> * Helicity/WaveFunction/ScalarWaveFunction.cc (Repository): minor changes to ensure special constructor returns a wavefunction 2005-09-21 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic/BtoSGammaDecayer.h (Repository): minor fixes and cleanup of b to s gamma code * Hadronization/PartonicHadronizer.cc (Repository): bug fix to solve problems when vetoing hadronization if intermediates removed 2005-09-21 David Grellscheid <David.Grellscheid@durham.ac.uk> * Helicity/Vertex/RSModel/RSModel*Vertex.h: modified the library() lines to take care of dependency on HwRSModel.so 2005-09-22 Peter Richardson <Peter.Richardson@durham.ac.uk> * Helicity/WaveFunction/ScalarWaveFunction.cc (Repository): minor changes to ensure special constructor returns a wavefunction 2005-09-21 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic/BtoSGammaDecayer.h (Repository): minor fixes and cleanup of b to s gamma code * Hadronization/PartonicHadronizer.cc (Repository): bug fix to solve problems when vetoing hadronization if intermediates removed 2005-09-21 David Grellscheid <David.Grellscheid@durham.ac.uk> * Helicity/Vertex/RSModel/RSModel*Vertex.h: modified the library() lines to take care of dependency on HwRSModel.so 2005-09-22 Peter Richardson <Peter.Richardson@durham.ac.uk> * Helicity/WaveFunction/ScalarWaveFunction.cc (Repository): minor changes to ensure special constructor returns a wavefunction 2005-09-21 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic/BtoSGammaDecayer.h (Repository): minor fixes and cleanup of b to s gamma code * Hadronization/PartonicHadronizer.cc (Repository): bug fix to solve problems when vetoing hadronization if intermediates removed 2005-09-20 Pete's account <Peter.Richardson@durham.ac.uk> * MatrixElement/MEee2Z.icc (Repository): Added files for e+e- > Z matrix element * Decay/Radiation/FFDipole.icc (Repository): Merged Keith's code into the structure 2005-09-20 Pete's account <Peter.Richardson@durham.ac.uk> * MatrixElement/MEee2Z.icc (Repository): Added files for e+e- > Z matrix element * Decay/Radiation/FFDipole.icc (Repository): Merged Keith's code into the structure 2005-09-19 Pete's account <Peter.Richardson@durham.ac.uk> * Makefile.am (Repository): changes for new directories * Decay/Hw64Decayer.cc (Repository): added changes from main branch * Utilities/Interpolator.cc (Repository): minor bug fixes * Hadronization/PartonicHadronizer.cc (Repository): minor bug fixes * Utilities/Math.h (Repository): added math namesapce for mathematical functions and included the dilog from FORTRAN HERWIG. 2005-09-19 David Grellscheid <David.Grellscheid@durham.ac.uk> * PDF/*: Removed obsolete MRST99_1.*, renamed MRST.so to HwMRST.so * Helicity/Vertex/RSModel/*, Models/RSModel/*: Made RS model dynamically loadable. 2005-09-19 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/Interpolator.cc (Repository): minor bug fixes * Hadronization/PartonicHadronizer.cc (Repository): minor bug fixes * Utilities/Math.h (Repository): added math namesapce for mathematical functions and included the dilog from FORTRAN HERWIG. 2005-09-19 David Grellscheid <David.Grellscheid@durham.ac.uk> * PDF/*: Removed obsolete MRST99_1.*, renamed MRST.so to HwMRST.so * Helicity/Vertex/RSModel/*, Models/RSModel/*: Made RS model dynamically loadable. 2005-09-19 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/Interpolator.cc (Repository): minor bug fixes * Hadronization/PartonicHadronizer.cc (Repository): minor bug fixes * Utilities/Math.h (Repository): added math namesapce for mathematical functions and included the dilog from FORTRAN HERWIG. 2005-09-19 Pete's account <Peter.Richardson@durham.ac.uk> * Makefile.am (Repository): changes for new directories * Decay/Hw64Decayer.cc (Repository): added changes from main branch * Utilities/Interpolator.cc (Repository): minor bug fixes * Hadronization/PartonicHadronizer.cc (Repository): minor bug fixes * Utilities/Math.h (Repository): added math namesapce for mathematical functions and included the dilog from FORTRAN HERWIG. 2005-09-19 David Grellscheid <David.Grellscheid@durham.ac.uk> * PDF/*: Removed obsolete MRST99_1.*, renamed MRST.so to HwMRST.so * Helicity/Vertex/RSModel/*, Models/RSModel/*: Made RS model dynamically loadable. 2005-09-19 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/Interpolator.cc (Repository): minor bug fixes * Hadronization/PartonicHadronizer.cc (Repository): minor bug fixes * Utilities/Math.h (Repository): added math namesapce for mathematical functions and included the dilog from FORTRAN HERWIG. 2005-09-15 David Grellscheid <David.Grellscheid@durham.ac.uk> * ** multiple files **: small changes to reduce compile warnings when extra warning flags are enabled. 2005-09-15 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Radiation (Repository): changes to add the basic structure for the YODA code 2005-09-30 David Grellscheid <David.Grellscheid@durham.ac.uk> * Doc/refman.conf (Repository): changes due change in name of repository * configure.ac, Makefile.am: configure switches for Mac OS X 2005-09-29 David Grellscheid <David.Grellscheid@durham.ac.uk> * src/Hw64Decays.in, src/Decays.in: Activated Mambo decayer for 5-body decays in Hw64Decays.in to keep code working * Utilities/Math.cc: inlined power series 2005-09-29 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/Math.h (Repository): changes so private power series for dilog is not publically visible * Decay/MamboDecayer.h (Repository): removed 5 body decay option from Hw64Decayer 2005-09-28 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Baryon/BaryonFactorizedDecayer.h (Repository): added all .so files needed by library to all classes to ensure correct dynamic loading * Helicity/Vertex/Tensor/FFTVertex.fh (Repository): added .fh to define pointers for the tensor vertices 2005-09-27 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/MamboDecayer.cc (Repository): Added class description and removed obsolete function (Repository): Removed unused variables 2005-09-27 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/DecayPhaseSpaceMode.cc (Repository): change to unmask parameters 2005-09-26 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/MamboDecayer.cc (Repository): Added MamboDecayer 2005-09-23 David Grellscheid <David.Grellscheid@durham.ac.uk> * */*.h, */Makefile.am, src/*.in: Restructuring of libraries to clean up dependencies. Many parts turned into modules. make clean && make recommended. 2005-09-22 David Grellscheid <David.Grellscheid@durham.ac.uk> * Shower/*, UnderlyingEvent/*, lib/Makefile.am, src/UnderlyingEvent.in, src/Shower.in: Turned Shower and UA5 into modules. * src/LEPbb.in, src/HerwigDefaults.in, lib/Makefile.am, MatrixElement/*: Turned HwME.so into a module. * Decay/*, PDF/*, PDT/*: bugfixes and warning eliminations from -Wshadow 2005-09-21 David Grellscheid <David.Grellscheid@durham.ac.uk> * Helicity/Vertex/RSModel/RSModel*Vertex.h: modified the library() lines to take care of dependency on HwRSModel.so 2005-09-22 Peter Richardson <Peter.Richardson@durham.ac.uk> * Helicity/WaveFunction/ScalarWaveFunction.cc (Repository): minor changes to ensure special constructor returns a wavefunction 2005-09-21 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic/BtoSGammaDecayer.h (Repository): minor fixes and cleanup of b to s gamma code * Hadronization/PartonicHadronizer.cc (Repository): bug fix to solve problems when vetoing hadronization if intermediates removed 2005-09-19 David Grellscheid <David.Grellscheid@durham.ac.uk> * PDF/*: Removed obsolete MRST99_1.*, renamed MRST.so to HwMRST.so * Helicity/Vertex/RSModel/*, Models/RSModel/*: Made RS model dynamically loadable. 2005-09-19 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/Interpolator.cc (Repository): minor bug fixes * Hadronization/PartonicHadronizer.cc (Repository): minor bug fixes * Utilities/Math.h (Repository): added math namesapce for mathematical functions and included the dilog from FORTRAN HERWIG. 2005-09-15 David Grellscheid <David.Grellscheid@durham.ac.uk> * ** multiple files **: small changes to reduce compile warnings when extra warning flags are enabled. >>>>>>> 1.44 2005-09-15 Peter Richardson <Peter.Richardson@durham.ac.uk> * Doc/refman.conf (Repository): changes due change in name of repository 2005-09-15 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/WeakCurrents/FourPionNovosibirskCurrent.cc (Repository): minor bug fixes 2005-09-15 David Grellscheid <David.Grellscheid@durham.ac.uk> * ** multiple files **: small changes to reduce compile warnings when extra warning flags are enabled. 2005-09-15 Peter Richardson <Peter.Richardson@durham.ac.uk> * Doc/refman.conf (Repository): changes due change in name of repository 2005-09-15 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/WeakCurrents/FourPionNovosibirskCurrent.cc (Repository): minor bug fixes 2005-09-15 David Grellscheid <David.Grellscheid@durham.ac.uk> * ** multiple files **: small changes to reduce compile warnings when extra warning flags are enabled. 2005-09-15 Peter Richardson <Peter.Richardson@durham.ac.uk> * Doc/refman.conf (Repository): changes due change in name of repository 2005-09-15 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/WeakCurrents/FourPionNovosibirskCurrent.cc (Repository): minor bug fixes 2005-09-15 David Grellscheid <David.Grellscheid@durham.ac.uk> * ** multiple files **: small changes to reduce compile warnings when extra warning flags are enabled. 2005-09-15 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Radiation (Repository): changes to add the basic structure for the YODA code 2005-09-30 David Grellscheid <David.Grellscheid@durham.ac.uk> * Doc/refman.conf (Repository): changes due change in name of repository * configure.ac, Makefile.am: configure switches for Mac OS X 2005-09-29 David Grellscheid <David.Grellscheid@durham.ac.uk> * src/Hw64Decays.in, src/Decays.in: Activated Mambo decayer for 5-body decays in Hw64Decays.in to keep code working * Utilities/Math.cc: inlined power series 2005-09-29 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/Math.h (Repository): changes so private power series for dilog is not publically visible * Decay/MamboDecayer.h (Repository): removed 5 body decay option from Hw64Decayer 2005-09-28 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Baryon/BaryonFactorizedDecayer.h (Repository): added all .so files needed by library to all classes to ensure correct dynamic loading * Helicity/Vertex/Tensor/FFTVertex.fh (Repository): added .fh to define pointers for the tensor vertices 2005-09-27 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/MamboDecayer.cc (Repository): Added class description and removed obsolete function (Repository): Removed unused variables 2005-09-27 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/DecayPhaseSpaceMode.cc (Repository): change to unmask parameters 2005-09-26 Martyn Gigg <m.a.gigg@dur.ac.uk> * Decay/MamboDecayer.cc (Repository): Added MamboDecayer 2005-09-23 David Grellscheid <David.Grellscheid@durham.ac.uk> * */*.h, */Makefile.am, src/*.in: Restructuring of libraries to clean up dependencies. Many parts turned into modules. make clean && make recommended. 2005-09-22 David Grellscheid <David.Grellscheid@durham.ac.uk> * Shower/*, UnderlyingEvent/*, lib/Makefile.am, src/UnderlyingEvent.in, src/Shower.in: Turned Shower and UA5 into modules. * src/LEPbb.in, src/HerwigDefaults.in, lib/Makefile.am, MatrixElement/*: Turned HwME.so into a module. * Decay/*, PDF/*, PDT/*: bugfixes and warning eliminations from -Wshadow 2005-09-21 David Grellscheid <David.Grellscheid@durham.ac.uk> * Helicity/Vertex/RSModel/RSModel*Vertex.h: modified the library() lines to take care of dependency on HwRSModel.so 2005-09-22 Peter Richardson <Peter.Richardson@durham.ac.uk> * Helicity/WaveFunction/ScalarWaveFunction.cc (Repository): minor changes to ensure special constructor returns a wavefunction 2005-09-21 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic/BtoSGammaDecayer.h (Repository): minor fixes and cleanup of b to s gamma code * Hadronization/PartonicHadronizer.cc (Repository): bug fix to solve problems when vetoing hadronization if intermediates removed 2005-09-19 David Grellscheid <David.Grellscheid@durham.ac.uk> * PDF/*: Removed obsolete MRST99_1.*, renamed MRST.so to HwMRST.so * Helicity/Vertex/RSModel/*, Models/RSModel/*: Made RS model dynamically loadable. 2005-09-19 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/Interpolator.cc (Repository): minor bug fixes * Hadronization/PartonicHadronizer.cc (Repository): minor bug fixes * Utilities/Math.h (Repository): added math namesapce for mathematical functions and included the dilog from FORTRAN HERWIG. 2005-09-15 David Grellscheid <David.Grellscheid@durham.ac.uk> * ** multiple files **: small changes to reduce compile warnings when extra warning flags are enabled. >>>>>>> 1.44 2005-09-15 Peter Richardson <Peter.Richardson@durham.ac.uk> * Doc/refman.conf (Repository): changes due change in name of repository 2005-09-15 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/WeakCurrents/FourPionNovosibirskCurrent.cc (Repository): minor bug fixes 2005-09-15 David Grellscheid <David.Grellscheid@durham.ac.uk> * ** multiple files **: small changes to reduce compile warnings when extra warning flags are enabled. 2005-09-15 Peter Richardson <Peter.Richardson@durham.ac.uk> * Doc/refman.conf (Repository): changes due change in name of repository 2005-09-15 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/WeakCurrents/FourPionNovosibirskCurrent.cc (Repository): minor bug fixes 2005-09-13 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay: changes to many classes due to the new base class * Hadronization changes to tidy up the PartonicHadronizer and allow the hadronization to produce off-shell particles. * Decay/HwDecayerBase.h (Repository): added new base class for decayers including the Initialize feature of the DecayIntegrator and dataBaseOutput so this can be used for classes not built on DecayIntegrator. * PDT/GenericWidthGenerator.h: changes so that the mass generator only includes the numerator factor when generating a mass without the weight to avoid biases towards high masses. * Decay/DecayConfig.h (Repository): this was really the .fh file for Hw64Decayer and has been renamed as such. * Decay/ExampleDecayer (Repository): removed the ExampleDecayer as it served little purpose and should be replaced by information on the Wiki. 2005-09-13 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay: changes to many classes due to the new base class * Hadronization changes to tidy up the PartonicHadronizer and allow the hadronization to produce off-shell particles. * Decay/HwDecayerBase.h (Repository): added new base class for decayers including the Initialize feature of the DecayIntegrator and dataBaseOutput so this can be used for classes not built on DecayIntegrator. * PDT/GenericWidthGenerator.h: changes so that the mass generator only includes the numerator factor when generating a mass without the weight to avoid biases towards high masses. * Decay/DecayConfig.h (Repository): this was really the .fh file for Hw64Decayer and has been renamed as such. * Decay/ExampleDecayer (Repository): removed the ExampleDecayer as it served little purpose and should be replaced by information on the Wiki. 2005-09-13 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay: changes to many classes due to the new base class * Hadronization changes to tidy up the PartonicHadronizer and allow the hadronization to produce off-shell particles. * Decay/HwDecayerBase.h (Repository): added new base class for decayers including the Initialize feature of the DecayIntegrator and dataBaseOutput so this can be used for classes not built on DecayIntegrator. * PDT/GenericWidthGenerator.h: changes so that the mass generator only includes the numerator factor when generating a mass without the weight to avoid biases towards high masses. * Decay/DecayConfig.h (Repository): this was really the .fh file for Hw64Decayer and has been renamed as such. * Decay/ExampleDecayer (Repository): removed the ExampleDecayer as it served little purpose and should be replaced by information on the Wiki. 2005-09-13 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay: changes to many classes due to the new base class * Hadronization changes to tidy up the PartonicHadronizer and allow the hadronization to produce off-shell particles. * Decay/HwDecayerBase.h (Repository): added new base class for decayers including the Initialize feature of the DecayIntegrator and dataBaseOutput so this can be used for classes not built on DecayIntegrator. * PDT/GenericWidthGenerator.h: changes so that the mass generator only includes the numerator factor when generating a mass without the weight to avoid biases towards high masses. * Decay/DecayConfig.h (Repository): this was really the .fh file for Hw64Decayer and has been renamed as such. * Decay/ExampleDecayer (Repository): removed the ExampleDecayer as it served little purpose and should be replaced by information on the Wiki. 2005-09-13 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay: changes to many classes due to the new base class * Hadronization changes to tidy up the PartonicHadronizer and allow the hadronization to produce off-shell particles. * Decay/HwDecayerBase.h (Repository): added new base class for decayers including the Initialize feature of the DecayIntegrator and dataBaseOutput so this can be used for classes not built on DecayIntegrator. * PDT/GenericWidthGenerator.h: changes so that the mass generator only includes the numerator factor when generating a mass without the weight to avoid biases towards high masses. * Decay/DecayConfig.h (Repository): this was really the .fh file for Hw64Decayer and has been renamed as such. * Decay/ExampleDecayer (Repository): removed the ExampleDecayer as it served little purpose and should be replaced by information on the Wiki. 2005-09-08 Peter Richardson <Peter.Richardson@durham.ac.uk> * src/HerwigDefaults.in (Repository): changes for the new treatment of hadronization in partonic decays * Decay/Baryon/SU3BaryonDecupletOctetPhotonDecayer.cc (Repository): various minor bug fixes to the decays 2005-09-08 David Grellscheid <dgrell@d2.phyip3.dur.ac.uk> * lib/Makefile.am: added libHwPartonicDecay.la to the list of libraries 2005-09-08 Peter Richardson <Peter.Richardson@durham.ac.uk> * src/HerwigDefaults.in (Repository): changes for the new treatment of hadronization in partonic decays * Decay/Baryon/SU3BaryonDecupletOctetPhotonDecayer.cc (Repository): various minor bug fixes to the decays 2005-09-08 David Grellscheid <dgrell@d2.phyip3.dur.ac.uk> * lib/Makefile.am: added libHwPartonicDecay.la to the list of libraries 2005-09-08 Peter Richardson <Peter.Richardson@durham.ac.uk> * src/HerwigDefaults.in (Repository): changes for the new treatment of hadronization in partonic decays * Decay/Baryon/SU3BaryonDecupletOctetPhotonDecayer.cc (Repository): various minor bug fixes to the decays 2005-09-08 David Grellscheid <dgrell@d2.phyip3.dur.ac.uk> * lib/Makefile.am: added libHwPartonicDecay.la to the list of libraries 2005-09-08 Peter Richardson <Peter.Richardson@durham.ac.uk> * src/HerwigDefaults.in (Repository): changes for the new treatment of hadronization in partonic decays * Decay/Baryon/SU3BaryonDecupletOctetPhotonDecayer.cc (Repository): various minor bug fixes to the decays 2005-09-08 David Grellscheid <dgrell@d2.phyip3.dur.ac.uk> * lib/Makefile.am: added libHwPartonicDecay.la to the list of libraries 2005-09-08 Peter Richardson <Peter.Richardson@durham.ac.uk> * src/HerwigDefaults.in (Repository): changes for the new treatment of hadronization in partonic decays * Decay/Baryon/SU3BaryonDecupletOctetPhotonDecayer.cc (Repository): various minor bug fixes to the decays 2005-09-08 David Grellscheid <dgrell@d2.phyip3.dur.ac.uk> * lib/Makefile.am: added libHwPartonicDecay.la to the list of libraries 2005-09-05 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/HerwigRun.cc: changes to documentation to remove some doxygen errors and more changes due to change in random numbers from ThePEG 2005-09-05 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/HerwigRun.cc: changes to documentation to remove some doxygen errors and more changes due to change in random numbers from ThePEG 2005-09-05 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/HerwigRun.cc: changes to documentation to remove some doxygen errors and more changes due to change in random numbers from ThePEG 2005-09-05 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/HerwigRun.cc: changes to documentation to remove some doxygen errors and more changes due to change in random numbers from ThePEG 2005-09-05 Peter Richardson <Peter.Richardson@durham.ac.uk> * Utilities/HerwigRun.cc: changes to documentation to remove some doxygen errors and more changes due to change in random numbers from ThePEG 2005-09-04 Peter Richardson <Peter.Richardson@durham.ac.uk> * Doc/tagfileThePEG.tag (Repository): changes to documentation so that include is not scanned by doxygen and duplicate base classes do not appear * Utilities/Kinematics.cc (Repository): Changes for the changes to random numbers from ThePEG and improvements to documentation 2005-09-04 Peter Richardson <Peter.Richardson@durham.ac.uk> * Doc/tagfileThePEG.tag (Repository): changes to documentation so that include is not scanned by doxygen and duplicate base classes do not appear * Utilities/Kinematics.cc (Repository): Changes for the changes to random numbers from ThePEG and improvements to documentation 2005-09-04 Peter Richardson <Peter.Richardson@durham.ac.uk> * Doc/tagfileThePEG.tag (Repository): changes to documentation so that include is not scanned by doxygen and duplicate base classes do not appear * Utilities/Kinematics.cc (Repository): Changes for the changes to random numbers from ThePEG and improvements to documentation 2005-09-04 Peter Richardson <Peter.Richardson@durham.ac.uk> * Doc/tagfileThePEG.tag (Repository): changes to documentation so that include is not scanned by doxygen and duplicate base classes do not appear * Utilities/Kinematics.cc (Repository): Changes for the changes to random numbers from ThePEG and improvements to documentation 2005-09-04 Peter Richardson <Peter.Richardson@durham.ac.uk> * Doc/tagfileThePEG.tag (Repository): changes to documentation so that include is not scanned by doxygen and duplicate base classes do not appear * Utilities/Kinematics.cc (Repository): Changes for the changes to random numbers from ThePEG and improvements to documentation 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/HwDecayHandler.icc (Repository): changes to partonic decays 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic/BtoSGammaDecayer.fh (Repository): added new partonic decayers for b to s gamma and weak partonic decays 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Hadronization/PartonicHadronizer.h (Repository): added new class for hadronization of partonic b and c decays. * Hadronization/PartonSplitter.h (Repository): changes to the hadronization to ensure only the taggws particles are hadronized. * PDT/GenericWidthGenerator.icc (Repository): S->VV shape and naive running width option added * Decay/ScalarMeson/PScalarVectorFermionsDecayer.cc (Repository): various minor fixes to the decay classes. * Decay/ScalarMeson/ScalarVectorVectorDecayer.icc (Repository): added new decayer for S -> VV 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic (Repository): added files for b to s gamma hadronic mass spectra 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Helicity/WaveFunction/SpinorWaveFunction.icc (Repository): changes to helicity classes to move large inlined members to the .cc files * Makefile.am (Repository): Interfaces now made automatically * Decay/Partonic/QuarkoniumDecayer.icc (Repository): changes to move partonic decayers into a sperate directory * Decay/HeavyDecayer.icc (Repository): changes to move partonic decayers into a seperate directory 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Changes for changes to the LorentzRotation in ThePEG 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/HwDecayHandler.icc (Repository): changes to partonic decays 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic/BtoSGammaDecayer.fh (Repository): added new partonic decayers for b to s gamma and weak partonic decays 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Hadronization/PartonicHadronizer.h (Repository): added new class for hadronization of partonic b and c decays. * Hadronization/PartonSplitter.h (Repository): changes to the hadronization to ensure only the taggws particles are hadronized. * PDT/GenericWidthGenerator.icc (Repository): S->VV shape and naive running width option added * Decay/ScalarMeson/PScalarVectorFermionsDecayer.cc (Repository): various minor fixes to the decay classes. * Decay/ScalarMeson/ScalarVectorVectorDecayer.icc (Repository): added new decayer for S -> VV 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic (Repository): added files for b to s gamma hadronic mass spectra 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Helicity/WaveFunction/SpinorWaveFunction.icc (Repository): changes to helicity classes to move large inlined members to the .cc files * Makefile.am (Repository): Interfaces now made automatically * Decay/Partonic/QuarkoniumDecayer.icc (Repository): changes to move partonic decayers into a sperate directory * Decay/HeavyDecayer.icc (Repository): changes to move partonic decayers into a seperate directory 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Changes for changes to the LorentzRotation in ThePEG 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/HwDecayHandler.icc (Repository): changes to partonic decays 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic/BtoSGammaDecayer.fh (Repository): added new partonic decayers for b to s gamma and weak partonic decays 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Hadronization/PartonicHadronizer.h (Repository): added new class for hadronization of partonic b and c decays. * Hadronization/PartonSplitter.h (Repository): changes to the hadronization to ensure only the taggws particles are hadronized. * PDT/GenericWidthGenerator.icc (Repository): S->VV shape and naive running width option added * Decay/ScalarMeson/PScalarVectorFermionsDecayer.cc (Repository): various minor fixes to the decay classes. * Decay/ScalarMeson/ScalarVectorVectorDecayer.icc (Repository): added new decayer for S -> VV 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic (Repository): added files for b to s gamma hadronic mass spectra 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Helicity/WaveFunction/SpinorWaveFunction.icc (Repository): changes to helicity classes to move large inlined members to the .cc files * Makefile.am (Repository): Interfaces now made automatically * Decay/Partonic/QuarkoniumDecayer.icc (Repository): changes to move partonic decayers into a sperate directory * Decay/HeavyDecayer.icc (Repository): changes to move partonic decayers into a seperate directory 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Changes for changes to the LorentzRotation in ThePEG 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/HwDecayHandler.icc (Repository): changes to partonic decays 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic/BtoSGammaDecayer.fh (Repository): added new partonic decayers for b to s gamma and weak partonic decays 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Hadronization/PartonicHadronizer.h (Repository): added new class for hadronization of partonic b and c decays. * Hadronization/PartonSplitter.h (Repository): changes to the hadronization to ensure only the taggws particles are hadronized. * PDT/GenericWidthGenerator.icc (Repository): S->VV shape and naive running width option added * Decay/ScalarMeson/PScalarVectorFermionsDecayer.cc (Repository): various minor fixes to the decay classes. * Decay/ScalarMeson/ScalarVectorVectorDecayer.icc (Repository): added new decayer for S -> VV 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic (Repository): added files for b to s gamma hadronic mass spectra 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Helicity/WaveFunction/SpinorWaveFunction.icc (Repository): changes to helicity classes to move large inlined members to the .cc files * Makefile.am (Repository): Interfaces now made automatically * Decay/Partonic/QuarkoniumDecayer.icc (Repository): changes to move partonic decayers into a sperate directory * Decay/HeavyDecayer.icc (Repository): changes to move partonic decayers into a seperate directory 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Changes for changes to the LorentzRotation in ThePEG 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/HwDecayHandler.icc (Repository): changes to partonic decays 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic/BtoSGammaDecayer.fh (Repository): added new partonic decayers for b to s gamma and weak partonic decays 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Hadronization/PartonicHadronizer.h (Repository): added new class for hadronization of partonic b and c decays. * Hadronization/PartonSplitter.h (Repository): changes to the hadronization to ensure only the taggws particles are hadronized. * PDT/GenericWidthGenerator.icc (Repository): S->VV shape and naive running width option added * Decay/ScalarMeson/PScalarVectorFermionsDecayer.cc (Repository): various minor fixes to the decay classes. * Decay/ScalarMeson/ScalarVectorVectorDecayer.icc (Repository): added new decayer for S -> VV 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Decay/Partonic (Repository): added files for b to s gamma hadronic mass spectra 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Helicity/WaveFunction/SpinorWaveFunction.icc (Repository): changes to helicity classes to move large inlined members to the .cc files * Makefile.am (Repository): Interfaces now made automatically * Decay/Partonic/QuarkoniumDecayer.icc (Repository): changes to move partonic decayers into a sperate directory * Decay/HeavyDecayer.icc (Repository): changes to move partonic decayers into a seperate directory 2005-09-01 Peter Richardson <Peter.Richardson@durham.ac.uk> * Changes for changes to the LorentzRotation in ThePEG �����������������������������������������������������������herwig++-2.6.0.orig/PDF/����������������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464205�015376� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/IncomingPhotonEvolver.h�����������������������������������������������������0000644�0001750�0001750�00000013374�11754474775�022070� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_IncomingPhotonEvolver_H #define HERWIG_IncomingPhotonEvolver_H // // This is the declaration of the IncomingPhotonEvolver class. // #include "ThePEG/Handlers/StepHandler.h" namespace Herwig { using namespace ThePEG; /** * The IncomingPhotonEvolver class performs the backward evolution * of a photon in a partonic process to a quark or antiquark so that * the event can be showered. * * @see \ref IncomingPhotonEvolverInterfaces "The interfaces" * defined for IncomingPhotonEvolver. */ class IncomingPhotonEvolver: public StepHandler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IncomingPhotonEvolver(); //@} public: /** @name Virtual functions required by the StepHandler class. */ //@{ /** * The main function called by the EventHandler class to * perform a step. Given the current state of an Event, this function * performs the event generation step and includes the result in a new * Step object int the Event record. * @param eh the EventHandler in charge of the Event generation. * @param tagged if not empty these are the only particles which should * be considered by the StepHandler. * @param hint a Hint object with possible information from previously * performed steps. * @throws Veto if the StepHandler requires the current step to be discarded. * @throws Stop if the generation of the current Event should be stopped * after this call. * @throws Exception if something goes wrong. */ virtual void handle(EventHandler & eh, const tPVector & tagged, const Hint & hint); //@} 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: /** * Compute boost parameter along z axis to get (Ep, any perp, qp) * from (E, same perp, q). */ inline double getBeta(const double E, const double q, const double Ep, const double qp) const {return (q*E-qp*Ep)/(sqr(qp)+sqr(E));} 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<IncomingPhotonEvolver> initIncomingPhotonEvolver; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IncomingPhotonEvolver & operator=(const IncomingPhotonEvolver &); private: /** * PDF set to use. Overrides the one that is associated with the beam particle. */ PDFPtr PDF_; /** * The maximum value of the PDF for the sample */ double PDFMax_; /** * The power for the sampling of the PDF */ double PDFPower_; /** * The minimum starting scale for the evolution */ Energy minpT_; /** * The minimum space-like virtuality of the photon */ Energy minVirtuality_; /** * Maximum number of attempts to generate the scale of the * branching */ unsigned int vetoTries_; /** * Maximum number of attempts to regenerate the virtuality */ unsigned int virtualityTries_; /** * Photon ParticleData object */ tcPDPtr photon_; /** * Partons to backward evolve to */ vector<tcPDPtr> partons_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of IncomingPhotonEvolver. */ template <> struct BaseClassTrait<Herwig::IncomingPhotonEvolver,1> { /** Typedef of the first base class of IncomingPhotonEvolver. */ typedef StepHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the IncomingPhotonEvolver class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::IncomingPhotonEvolver> : public ClassTraitsBase<Herwig::IncomingPhotonEvolver> { /** Return a platform-independent class name */ static string className() { return "Herwig::IncomingPhotonEvolver"; } /** * The name of a file containing the dynamic library where the class * IncomingPhotonEvolver is implemented. It may also include several, space-separated, * libraries if the class IncomingPhotonEvolver depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwIncomingPhotonEvolver.so"; } }; /** @endcond */ } #endif /* HERWIG_IncomingPhotonEvolver_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/MPIPDF.fh�������������������������������������������������������������������0000644�0001750�0001750�00000000435�11754474775�016711� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the MPIPDF class. // #ifndef HERWIG_MPIPDF_FH #define HERWIG_MPIPDF_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class MPIPDF; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::MPIPDF,MPIPDFPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/IncomingPhotonEvolver.cc����������������������������������������������������0000644�0001750�0001750�00000034671�11754474775�022231� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the IncomingPhotonEvolver class. // #include "IncomingPhotonEvolver.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Handlers/EventHandler.h" #include "ThePEG/EventRecord/Event.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/PDF/BeamParticleData.h" #include "ThePEG/PDF/PartonExtractor.h" using namespace Herwig; IncomingPhotonEvolver::IncomingPhotonEvolver() : PDFMax_(80.), PDFPower_(1.0), minpT_(2.*GeV), minVirtuality_(1e-3*GeV), vetoTries_(10000), virtualityTries_(10) {} void IncomingPhotonEvolver:: handle(EventHandler & eh, const tPVector & , const Hint & ) { // extract the incoming partons from the hard process PPair incomingPartons = eh.currentEvent()->primarySubProcess()->incoming(); // check one and only one is a photon if(!( (incomingPartons.first->id() == ParticleID::gamma && incomingPartons.second->id() != ParticleID::gamma) || (incomingPartons.first->id() != ParticleID::gamma && incomingPartons.second->id() == ParticleID::gamma))) return; // extract the incoming hadrons from the event PPair incomingHadrons = eh.currentEvent()->incoming(); // calculate the value of x double x[2] = {incomingPartons.first ->momentum().t()/incomingHadrons.first ->momentum().t(), incomingPartons.second->momentum().t()/incomingHadrons.second->momentum().t()}; // swap order so photon first if(incomingPartons.first->id()!=ParticleID::gamma) { swap(incomingPartons.first,incomingPartons.second); swap(incomingHadrons.first,incomingHadrons.second); swap(x[0],x[1]); } // calculate CMF momentum get the pt scale for the process Energy ptmax(generator()->maximumCMEnergy()); Lorentz5Momentum pcmf; for(ParticleVector::const_iterator cit=eh.currentEvent()->primarySubProcess()->outgoing().begin(), end=eh.currentEvent()->primarySubProcess()->outgoing().end(); cit!=end;++cit) { pcmf += (**cit).momentum(); Energy pttest = (**cit).momentum().perp(); if(pttest<ptmax&&ptmax>minpT_) ptmax=pttest; } if(ptmax==generator()->maximumCMEnergy()) ptmax=minpT_; // limits for the z integrand double lower = 1./PDFPower_; double upper = lower/pow(x[0],PDFPower_); // extract the PDF for the beam particle Ptr<BeamParticleData>::transient_const_pointer beam = dynamic_ptr_cast<Ptr<BeamParticleData>::transient_const_pointer> (incomingHadrons.first->dataPtr()); assert(beam); // get the PDF tcPDFPtr pdf; if ( PDF_ ) pdf = PDF_; else pdf = beam->pdf(); assert(pdf); // power for the sampling double wgt = PDFMax_*SM().alphaEM()/Constants::pi/PDFPower_* (1./pow(x[0],PDFPower_)-1.); unsigned int virtualityAttempts(0); Lorentz5Momentum pin,pout,pgamma; // p and n vectors Energy mag = incomingHadrons.first->momentum().t(); Lorentz5Momentum p(ZERO,ZERO, mag,mag); Lorentz5Momentum n(ZERO,ZERO,-mag,mag); if(incomingHadrons.first->momentum().z()<ZERO) swap(p,n); Energy2 pdotn = p*n; tcPDPtr quark; // generate the momenta do { ++virtualityAttempts; Energy pt(ptmax); quark = tcPDPtr(); // generate the values of pt and z for the branching double z,pdftotal,rwgt; unsigned int vetoAttempts(0); Energy scale; do { scale = max(pt,minpT_); // new value of pT pt *= pow(UseRandom::rnd(),0.5/wgt); // new value of z z = lower+UseRandom::rnd()*(upper-lower); z = pow(1./z/PDFPower_,1./PDFPower_); // the weight rwgt = 0.5*(1.+sqr(1.-z)); // denominator of the pdf bit rwgt /= pdf->xfx(beam,photon_,sqr(scale),x[0]); // numerator of the pdf bit pdftotal = 0.; for(unsigned int ix=0;ix<partons_.size();++ix) { double pdfval = pdf->xfx(beam,partons_[ix],sqr(scale),x[0]/z); if(pdfval>0.) pdftotal += pdfval*sqr(double(partons_[ix]->iCharge())/3.); } rwgt *= pdftotal; // finally divide by the overestimate of the PDF bit rwgt /= PDFMax_/pow(z,PDFPower_); if(rwgt>1.) generator()->logWarning( Exception("IncomingPhotonEvolver::handle() " "Veto algorithm weight greater than one.", Exception::warning) ); if(UseRandom::rnd()<=rwgt) break; ++vetoAttempts; } while (vetoAttempts<vetoTries_); if(vetoAttempts==vetoTries_) throw Exception() << "Too many attempts to generate scale in backward " << "photon evolution in IncomingPhotonEvolver::handle()" << Exception::eventerror; // now select the flavour of the emitted parton pdftotal *= UseRandom::rnd(); // construct the kinematics // calculate the momenta of the partons involved in the branching double betaq = 0.5*z*sqr(pt)/(x[0]*(1.-z)*pdotn); double phi = Constants::twopi*UseRandom::rnd(); pin = x[0]/z*p; pout = (1.-z)*x[0]/z*p+betaq*n+ Lorentz5Momentum(pt*cos(phi),pt*sin(phi),0.*GeV,0.*GeV); pgamma = pin-pout; pout .rescaleMass(); pgamma.rescaleMass(); for(unsigned int ix=0;ix<partons_.size();++ix) { double pdfval = pdf->xfx(beam,partons_[ix],sqr(scale),x[0]/z); if(pdfval<=0.) continue; pdfval *= sqr(double(partons_[ix]->iCharge())/3.); if(pdftotal<pdfval) { quark = partons_[ix]; break; } pdftotal -= pdfval; } assert(quark); } while(-pgamma.mass()<=minVirtuality_&&virtualityAttempts<virtualityTries_); if(virtualityAttempts==virtualityTries_) throw Exception() << "Too many attempts to generate virtuality in backward " << "photon evolution in IncomingPhotonEvolver::handle()" << Exception::eventerror; // compute the boosts for momentum conservation Energy2 shat = (incomingPartons.first ->momentum()+ incomingPartons.second->momentum()).m2(); Energy2 S = (p+n).m2(); Lorentz5Momentum pother = incomingPartons.second->momentum(); // find alphas and betas in terms of desired basis double a[2] = {pgamma*n/pdotn,pother*n/pdotn}; double b[2] = {pgamma*p/pdotn,pother*p/pdotn}; Lorentz5Momentum p1p = pgamma - a[0]*p - b[0]*n; Lorentz5Momentum p2p = pother - a[1]*p - b[1]*n; // compute kappa Energy2 A = a[0]*b[1]*S; Energy2 B = shat - (a[0]*b[0]+a[1]*b[1])*S - (p1p+p2p).m2(); Energy2 C = a[1]*b[0]*S; double rad = 1.-4.*A*C/sqr(B); if(rad < 0.) throw Exception() << "Can't generate backward evolution of the photon" << " in IncomingPhotonEvolver::handle()" << Exception::eventerror; double kp = B/(2.*A)*(1.+sqrt(rad)); // now compute k1, k2 rad = kp*(b[0]+kp*b[1])/(kp*a[0]+a[1])*(x[0]/x[1]); if(rad <= 0.) throw Exception() << "Can't generate backward evolution of the photon" << " in IncomingPhotonEvolver::handle()" << Exception::eventerror; double k1 = sqrt(rad); double k2 = kp/k1; double beta[2] = {getBeta((a[0]+b[0]), (a[0]-b[0]), (k1*a[0]+b[0]/k1), (k1*a[0]-b[0]/k1)), getBeta((a[1]+b[1]), (a[1]-b[1]), (a[1]/k2+k2*b[1]), (a[1]/k2-k2*b[1]))}; if (p.z() > ZERO) { beta[0] = -beta[0]; beta[1] = -beta[1]; } // apply the boosts Boost betaboost(0, 0, beta[0]); pin .boost(betaboost); pgamma.boost(betaboost); pout .boost(betaboost); betaboost = Boost(0, 0, beta[1]); pother.boost(betaboost); Lorentz5Momentum newcmf = pother+pgamma; pcmf.rescaleMass(); if(pin.e()/p.e()>1.||pin.z()/p.z()>1.) throw Exception() << "Can't generate backward evolution of the photon" << " in IncomingPhotonEvolver::handle()" << Exception::eventerror; if(pother.e()/n.e()>1.||pother.z()/n.z()>1.) throw Exception() << "Can't generate backward evolution of the photon" << " in IncomingPhotonEvolver::handle()" << Exception::eventerror; if(newcmf.m()<ZERO||newcmf.e()<ZERO) throw Exception() << "Can't generate backward evolution of the photon" << " in IncomingPhotonEvolver::handle()" << Exception::eventerror; Boost toRest = pcmf.findBoostToCM(); Boost fromRest = newcmf.boostVector(); // apply the boosts to the outgoing particles for(ParticleVector::const_iterator cit=eh.currentEvent()->primarySubProcess()->outgoing().begin(), end=eh.currentEvent()->primarySubProcess()->outgoing().end(); cit!=end;++cit) { (**cit).deepBoost( toRest); (**cit).deepBoost(fromRest); newcmf -= (**cit).momentum(); } // now sort out the event record // make the new outgoing parton PPtr newOutgoing = quark->produceParticle(pout); // make the new incoming parton PPtr newIncoming = quark->produceParticle(pin); // and new other PPtr newOther = incomingPartons.second->dataPtr()-> produceParticle(pother); // colour connections if(newIncoming->id()>0) { ColinePtr newline = ColourLine::create(newIncoming); newline->addColoured(newOutgoing); } else { ColinePtr newline = ColourLine::create(newIncoming,true); newline->addAntiColoured(newOutgoing); } if(incomingPartons.second->colourLine()) incomingPartons.second->colourLine()->addColoured(newOther); if(incomingPartons.second->antiColourLine()) incomingPartons.second->antiColourLine()->addAntiColoured(newOther); // sort out the remnants // get the parton extractor PartonExtractor & pex = *eh.lastExtractor(); // get the new partons tPPair newp = make_pair(newIncoming,newOther); // Creates the new remnants and returns the new PartonBinInstances PBIPair newbins = pex.newRemnants(incomingPartons, newp, eh.currentStep()); // reset the momenta of the old incoming partons incomingPartons.first ->set5Momentum(pgamma); incomingPartons.second->set5Momentum(pother); // sort out the mother/child stuff incomingHadrons.first ->abandonChild(incomingPartons.first); incomingHadrons.second->abandonChild(incomingPartons.second); newIncoming->addChild(incomingPartons.first); newOther->addChild(incomingPartons.second); newIncoming->addChild(newOutgoing); // add the new particles eh.currentEvent()->primarySubProcess()->addOutgoing(newOutgoing,false); eh.currentStep()->addParticle(newOutgoing); eh.currentEvent()->primarySubProcess()->changeIncoming(newIncoming, incomingPartons.first); eh.currentEvent()->primarySubProcess()->changeIncoming(newOther, incomingPartons.second); eh.currentStep()->addIntermediate(newIncoming); eh.currentStep()->addIntermediate(newOther ); // clean up the remnants ParticleVector children = incomingHadrons.first->children(); for(unsigned int ix=0;ix<children.size();++ix) { if(children[ix]==newIncoming) continue; PPtr temp = children[ix]; incomingHadrons.first->abandonChild(temp); ParticleVector childrenB = temp->children(); for(unsigned int iy=0;iy<childrenB.size();++iy) { temp->abandonChild(childrenB[ix]); incomingHadrons.first->addChild(childrenB[ix]); } eh.currentStep()->removeParticle(temp); } children = incomingHadrons.second->children(); for(unsigned int ix=0;ix<children.size();++ix) { if(children[ix]==newOther) continue; PPtr temp = children[ix]; incomingHadrons.second->abandonChild(temp); ParticleVector childrenB = temp->children(); for(unsigned int iy=0;iy<childrenB.size();++iy) { temp->abandonChild(childrenB[ix]); incomingHadrons.second->addChild(childrenB[ix]); } eh.currentStep()->removeParticle(temp); } } IBPtr IncomingPhotonEvolver::clone() const { return new_ptr(*this); } IBPtr IncomingPhotonEvolver::fullclone() const { return new_ptr(*this); } void IncomingPhotonEvolver::persistentOutput(PersistentOStream & os) const { os << PDFMax_ << PDFPower_ << ounit(minpT_,GeV) << ounit(minVirtuality_,GeV) << vetoTries_ << virtualityTries_ << photon_ << partons_; } void IncomingPhotonEvolver::persistentInput(PersistentIStream & is, int) { is >> PDFMax_ >> PDFPower_ >> iunit(minpT_,GeV) >> iunit(minVirtuality_,GeV) >> vetoTries_ >> virtualityTries_ >> photon_ >> partons_; } ClassDescription<IncomingPhotonEvolver> IncomingPhotonEvolver::initIncomingPhotonEvolver; // Definition of the static class description member. void IncomingPhotonEvolver::Init() { static ClassDocumentation<IncomingPhotonEvolver> documentation ("The IncomingPhotonEvolver class performs the backward" " evolution of a photon extracted from a hadron to a quark" " or antiquark so that the event can be showered."); static Parameter<IncomingPhotonEvolver,Energy> interfaceminpT ("minpT", "The minimum pT scale to start the evolution", &IncomingPhotonEvolver::minpT_, GeV, 2.0*GeV, 10.0*GeV, 0.5*GeV, false, false, Interface::limited); static Reference<IncomingPhotonEvolver,PDFBase> interfacePDF ("PDF", "PDF set to use. Overrides the one that is associated with the beam particle.", &IncomingPhotonEvolver::PDF_, false, false, true, true, false); static Parameter<IncomingPhotonEvolver,double> interfacePDFMax ("PDFMax", "The maximum value for the overestimate of the branching probability", &IncomingPhotonEvolver::PDFMax_, 50.0, 1.0, 1000.0, false, false, Interface::limited); static Parameter<IncomingPhotonEvolver,double> interfacePDFPower ("PDFPower", "The power for the overestimate of the branching probability", &IncomingPhotonEvolver::PDFPower_, 1.0, 0.01, 10.0, false, false, Interface::limited); static Parameter<IncomingPhotonEvolver,Energy> interfaceMinimumVirtuality ("MinimumVirtuality", "The minimum virtuality of the photon", &IncomingPhotonEvolver::minVirtuality_, GeV, 1.0e-5*GeV, 1.e-6*GeV, 1.0*GeV, false, false, Interface::limited); static Parameter<IncomingPhotonEvolver,unsigned int> interfaceVetoTries ("VetoTries", "Maximum number of attempts in the veto alogrithm loop", &IncomingPhotonEvolver::vetoTries_, 5000, 1, 100000, false, false, Interface::limited); static Parameter<IncomingPhotonEvolver,unsigned int> interfaceVirtualityTries ("VirtualityTries", "Maximum number of attempts to generate the virtuality", &IncomingPhotonEvolver::virtualityTries_, 5, 1, 100, false, false, Interface::limited); } void IncomingPhotonEvolver::doinit() { StepHandler::doinit(); photon_ = getParticleData(ParticleID::gamma); for(int ix=1;ix<=5;++ix) { partons_.push_back(getParticleData(ix)); partons_.push_back(partons_.back()->CC()); } } �����������������������������������������������������������������������herwig++-2.6.0.orig/PDF/MinBiasPDF.fh���������������������������������������������������������������0000644�0001750�0001750�00000000465�11754474775�017611� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the MinBiasPDF class. // #ifndef HERWIG_MinBiasPDF_FH #define HERWIG_MinBiasPDF_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class MinBiasPDF; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::MinBiasPDF,MinBiasPDFPtr); } #endif �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/SatPDF.h��������������������������������������������������������������������0000644�0001750�0001750�00000013341�11754474775�016645� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SatPDF.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_SatPDF_H #define HERWIG_SatPDF_H // // This is the declaration of the SatPDF class. // #include "ThePEG/PDF/PDFBase.h" namespace Herwig { using namespace ThePEG; /** * The SatPDF class defines * a modified pdf which uses an existing pdf object to add * modifications like removing the valence part of it, which * is needed in the backward evolution of secondary scatters. * * \author Manuel B\"ahr * * @see \ref SatPDFInterfaces "The interfaces" * defined for SatPDF. */ class SatPDF: public PDFBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ inline SatPDF() : thePDF(PDFPtr()), theX0(1E-4), theExp(0.0) {} /** * The copy constructor. */ inline SatPDF(const SatPDF & x) : PDFBase(x), thePDF(x.thePDF), theX0(x.theX0), theExp(x.theExp) {} /** * The destructor. */ virtual ~SatPDF(); //@} public: /** @name Virtual functions to be overridden by sub-classes. */ //@{ /** * Return true if this PDF can handle the extraction of partons from * the given \a particle. */ virtual bool canHandleParticle(tcPDPtr particle) const; /** * Return the partons which this PDF may extract from the given * \a particle. */ virtual cPDVector partons(tcPDPtr particle) const; /** * The density. Return the pdf for the given \a parton inside the * given \a particle for the virtuality \a partonScale and momentum * fraction \a x. The \a particle is assumed to have a virtuality \a * particleScale. */ virtual double xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps=0.0, Energy2 particleScale = ZERO) const; /** * The valence density. Return the pdf for the given cvalence \a * parton inside the given \a particle for the virtuality \a * partonScale and momentum fraction \a x. The \a particle is * assumed to have a virtuality \a particleScale. If not overidden * by a sub class this implementation will assume that the * difference between a quark and anti-quark distribution is due do * valense quarks, but return zero for anything else. */ virtual double xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps=0.0, Energy2 particleScale = ZERO) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline virtual IBPtr clone() const { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ inline virtual IBPtr fullclone() const { return new_ptr(*this); } //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<SatPDF> initSatPDF; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ SatPDF & operator=(const SatPDF &); /** * pointer to the underlying ThePEG::PDFBase object, we are modifying. */ PDFPtr thePDF; /** * x from where the extrapolation f(x) = f(theX0) * (x/theX0)**theExp * is used for the pdf's. */ double theX0; /** * the exponent of the pdf extrapolation for small x (x < theX0). */ double theExp; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of SatPDF. */ template <> struct BaseClassTrait<Herwig::SatPDF,1> { /** Typedef of the first base class of SatPDF. */ typedef PDFBase NthBase; }; /** This template specialization informs ThePEG about the name of * the SatPDF class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::SatPDF> : public ClassTraitsBase<Herwig::SatPDF> { /** Return a platform-independent class name */ static string className() { return "Herwig::SatPDF"; } /** * The name of a file containing the dynamic library where the class * SatPDF is implemented. It may also include several, space-separated, * libraries if the class SatPDF depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwSatPDF.so"; } }; /** @endcond */ } #ifndef HERWIG_TEMPLATES_IN_CC_FILE // #include "SatPDF.tcc" #endif #endif /* HERWIG_SatPDF_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/MRST.h����������������������������������������������������������������������0000644�0001750�0001750�00000023602�11754474775�016352� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MRST.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MRST_H #define HERWIG_MRST_H #include <ThePEG/PDF/PDFBase.h> #include <iostream> #include <fstream> #include <string> #include <cmath> namespace Herwig { using namespace ThePEG; /** \ingroup PDF * * Implementation of the MRST PDFs * * @see \ref MRSTInterfaces "The interfaces" * defined for MRST. */ class MRST : public PDFBase { /** * Enumeration to storage the types of partons */ enum PDFFlavour { upValence = 1, dnValence, glu, upSea, chm, str, bot, dnSea }; /** * Enum for type of pdf to return */ enum PDFType {Sea,Valence,Total}; public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor. */ MRST(); //@} public: /** @name Virtual functions from PDFBase */ //@{ /** * Return true if this PDF can handle the extraction of parton from the * given particle ie. if the particle is a proton or neutron. * @param particle The particle */ virtual bool canHandleParticle(tcPDPtr particle) const; /** * Return the parton types which are described by these parton * densities. * @param p The particle */ virtual cPDVector partons(tcPDPtr p) const; /** * Return x times the pdf for the given parameters * @param particle The beam particle * @param parton The parton for which to return the PDF. * @param partonScale The scale at which to evaluate the PDF. * @param x The momentum fraction * @param eps ??? an unknown parameter from ThePEG. * @param particleScale The scale for the particle */ virtual double xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps = 0.0, Energy2 particleScale = ZERO) const; /** * Return x times the valence pdf for the given parameters * @param particle The beam particle * @param parton The parton for which to return the PDF. * @param partonScale The scale at which to evaluate the PDF. * @param x The momentum fraction * @param eps ??? an unknown parameter from ThePEG. * @param particleScale The scale for the particle */ virtual double xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps = 0.0, Energy2 particleScale = ZERO) const; /** * The sea density. Return the pdf for the given cvalence \a * parton inside the given \a particle for the virtuality \a * partonScale and momentum fraction \a x. The \a particle is * assumed to have a virtuality \a particleScale. If not overidden * by a sub class this implementation will assume that the * difference between a quark and anti-quark distribution is due do * valense quarks. */ virtual double xfsx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps = 0.0, Energy2 particleScale = ZERO) 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(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ inline 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. */ inline virtual IBPtr fullclone() const; //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MRST> initMRST; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MRST & operator=(const MRST &); private: /** * This function interpolates the PDF value for the given * bin numbers and fractional positions inside the bin. It is a helper function for pdfValue() * * @param i The PDF flavour * @param n The x bin index * @param m The q^2 bin index * @param u The fractional position along the current x bin * @param t The fractional position along the current q^2 bin */ inline double lookup(PDFFlavour i, int n, int m, double u, double t) const; /** * This function calculates the PDF value for the given particles and a given x and q * @param x The energy fraction * @param q2 The scale * @param particle The beam particle * @param parton The parton for which to return the PDF. * @param type Type of PDF, sea, valence or total. */ double pdfValue(double x, Energy2 q2, tcPDPtr particle, tcPDPtr parton,PDFType type) const; /** * Returns an integer j such that x lies inbetween xx[j] and xx[j+1]. * @param xx The x values * @param n The number of values * @param x The x value */ inline int locate(double xx[],int n,double x) const; /** * Return the estimate of the derivative at \f$x_2\f$ obtained by a polynomial * interpolatio using the three points \f$(x_i,y_i)\f$ * @param x1 The \f$x\f$ value at the first point * @param x2 The \f$x\f$ value at the second point * @param x3 The \f$x\f$ value at the third point * @param y1 The \f$y\f$ value at the first point * @param y2 The \f$y\f$ value at the second point * @param y3 The \f$y\f$ value at the third point */ inline double polderivative(double x1, double x2, double x3, double y1, double y2, double y3) const; /** * Read the data from the file */ virtual void readSetup(istream &); /** * Initialize the data * @param reread Whether or not to reread the data */ void initialize(bool reread = true); private: /** * Parameters for the MRST data tables */ //@{ /** * Number of distributions to interpolate */ static const int np=8; /** * Number of points in \f$x\f$ for the interpolation */ static const int nx=49; /** * Number of points in \f$q^2\f$ for the interpolation */ static const int nq=37; /** * \f$q^2\f$ bin where charm introduced */ static const int nqc0=2; /** * \f$q^2\f$ bin where bottom introduced */ static const int nqb0=11; /** * Parameter for the FORTRAN interpolation */ static const int ntenth=23; /** * Minimum value of \f$x\f$ */ static const double xmin; /** * Maximum value of \f$x\f$ */ static const double xmax; /** * Minimum value of \f$q^2\f$. */ static const Energy2 qsqmin; /** * Maximum value of \f$q^2\f$. */ static const Energy2 qsqmax; /** * Mass squared of the charm quark */ static const Energy2 mc2; /** * Mass squared of the bottom quark */ static const Energy2 mb2; //@} /** * Use FORTRAN or C++ MRST interpolation */ unsigned _inter; /** * X value to switch from cubic to linear */ double _xswitch; /** * The name of the file */ string _file; /** * Array containing the data to be interpolated */ // double data[np+1][nx+1][nq+1]; vector<vector<vector<double> > > data; /** * Array containing the data to be interpolated */ // double data[np+1][nx+1][nq+1]; vector<vector<vector<double> > > fdata; /** * The \f$x\f$ values for interpolation */ static double xx[nx+1]; /** * The \f$x\f$ values for interpolation */ static double lxx[nx+1]; /** * The \f$x\f$ values for interpolation */ static double lxxb[nx+1]; /** * The \f$q^2\f$ values for interpolation */ static double qq[nq+1]; /** * The \f$q^2\f$ values for interpolation */ static double lqq[nq+1]; /** * Coefficients used for interpolation */ double c[np+1][nx][nq][5][5]; /** * The powers n0 for the FORTRAN interpolation */ static double n0[np+1]; /** * where or not initialized */ static bool initialized; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MRST. */ template <> struct BaseClassTrait<Herwig::MRST,1> { /** Typedef of the first base class of MRST. */ typedef PDFBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MRST class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MRST>: public ClassTraitsBase<Herwig::MRST> { /** Return a platform-independent class name */ static string className() { return "Herwig::MRST"; } /** * The name of a file containing the dynamic library where the class * MRST is implemented. It may also include several, space-separated, * libraries if the class MRST depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwMRST.so"; } }; /** @endcond */ } #include "MRST.icc" #endif ������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/Makefile.in�����������������������������������������������������������������0000644�0001750�0001750�00000066317�11756461701�017456� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = PDF DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(noinst_LTLIBRARIES) $(pkglib_LTLIBRARIES) HwIncomingPhotonEvolver_la_LIBADD = am_HwIncomingPhotonEvolver_la_OBJECTS = IncomingPhotonEvolver.lo HwIncomingPhotonEvolver_la_OBJECTS = \ $(am_HwIncomingPhotonEvolver_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwIncomingPhotonEvolver_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ $(HwIncomingPhotonEvolver_la_LDFLAGS) $(LDFLAGS) -o $@ HwMRST_la_LIBADD = am_HwMRST_la_OBJECTS = MRST.lo HwMRST_la_OBJECTS = $(am_HwMRST_la_OBJECTS) HwMRST_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(HwMRST_la_LDFLAGS) $(LDFLAGS) -o $@ HwPomeronFlux_la_LIBADD = am_HwPomeronFlux_la_OBJECTS = PomeronFlux.lo HwPomeronFlux_la_OBJECTS = $(am_HwPomeronFlux_la_OBJECTS) HwPomeronFlux_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwPomeronFlux_la_LDFLAGS) \ $(LDFLAGS) -o $@ HwPomeronPDF_la_LIBADD = am_HwPomeronPDF_la_OBJECTS = PomeronPDF.lo HwPomeronPDF_la_OBJECTS = $(am_HwPomeronPDF_la_OBJECTS) HwPomeronPDF_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwPomeronPDF_la_LDFLAGS) \ $(LDFLAGS) -o $@ HwReggeonPDF_la_LIBADD = am_HwReggeonPDF_la_OBJECTS = ReggeonPDF.lo HwReggeonPDF_la_OBJECTS = $(am_HwReggeonPDF_la_OBJECTS) HwReggeonPDF_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwReggeonPDF_la_LDFLAGS) \ $(LDFLAGS) -o $@ HwSatPDF_la_LIBADD = am_HwSatPDF_la_OBJECTS = SatPDF.lo HwSatPDF_la_OBJECTS = $(am_HwSatPDF_la_OBJECTS) HwSatPDF_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(HwSatPDF_la_LDFLAGS) $(LDFLAGS) -o $@ libHwMPIPDF_la_LIBADD = am_libHwMPIPDF_la_OBJECTS = MPIPDF.lo MinBiasPDF.lo libHwMPIPDF_la_OBJECTS = $(am_libHwMPIPDF_la_OBJECTS) libHwRemDecayer_la_LIBADD = am_libHwRemDecayer_la_OBJECTS = HwRemDecayer.lo libHwRemDecayer_la_OBJECTS = $(am_libHwRemDecayer_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwIncomingPhotonEvolver_la_SOURCES) $(HwMRST_la_SOURCES) \ $(HwPomeronFlux_la_SOURCES) $(HwPomeronPDF_la_SOURCES) \ $(HwReggeonPDF_la_SOURCES) $(HwSatPDF_la_SOURCES) \ $(libHwMPIPDF_la_SOURCES) $(libHwRemDecayer_la_SOURCES) DIST_SOURCES = $(HwIncomingPhotonEvolver_la_SOURCES) \ $(HwMRST_la_SOURCES) $(HwPomeronFlux_la_SOURCES) \ $(HwPomeronPDF_la_SOURCES) $(HwReggeonPDF_la_SOURCES) \ $(HwSatPDF_la_SOURCES) $(libHwMPIPDF_la_SOURCES) \ $(libHwRemDecayer_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwMRST.la HwPomeronPDF.la HwReggeonPDF.la \ HwPomeronFlux.la HwSatPDF.la HwIncomingPhotonEvolver.la HwMRST_la_SOURCES = \ MRST.cc MRST.h MRST.icc HwMRST_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:1:0 EXTRA_DIST = mrst diffraction HwPomeronPDF_la_SOURCES = \ PomeronPDF.cc PomeronPDF.h HwPomeronPDF_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 1:0:0 HwReggeonPDF_la_SOURCES = \ ReggeonPDF.cc ReggeonPDF.h HwReggeonPDF_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 1:0:0 HwPomeronFlux_la_SOURCES = \ PomeronFlux.h PomeronFlux.cc HwPomeronFlux_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:0:0 noinst_LTLIBRARIES = libHwRemDecayer.la libHwMPIPDF.la libHwRemDecayer_la_SOURCES = \ HwRemDecayer.h HwRemDecayer.cc HwRemDecayer.fh libHwMPIPDF_la_SOURCES = \ MPIPDF.h MPIPDF.cc MPIPDF.fh \ MinBiasPDF.h MinBiasPDF.cc MinBiasPDF.fh HwSatPDF_la_SOURCES = \ SatPDF.h SatPDF.cc HwSatPDF_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 4:0:0 HwIncomingPhotonEvolver_la_SOURCES = \ IncomingPhotonEvolver.h IncomingPhotonEvolver.cc HwIncomingPhotonEvolver_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 4:0:0 all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu PDF/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu PDF/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwIncomingPhotonEvolver.la: $(HwIncomingPhotonEvolver_la_OBJECTS) $(HwIncomingPhotonEvolver_la_DEPENDENCIES) $(EXTRA_HwIncomingPhotonEvolver_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwIncomingPhotonEvolver_la_LINK) -rpath $(pkglibdir) $(HwIncomingPhotonEvolver_la_OBJECTS) $(HwIncomingPhotonEvolver_la_LIBADD) $(LIBS) HwMRST.la: $(HwMRST_la_OBJECTS) $(HwMRST_la_DEPENDENCIES) $(EXTRA_HwMRST_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwMRST_la_LINK) -rpath $(pkglibdir) $(HwMRST_la_OBJECTS) $(HwMRST_la_LIBADD) $(LIBS) HwPomeronFlux.la: $(HwPomeronFlux_la_OBJECTS) $(HwPomeronFlux_la_DEPENDENCIES) $(EXTRA_HwPomeronFlux_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwPomeronFlux_la_LINK) -rpath $(pkglibdir) $(HwPomeronFlux_la_OBJECTS) $(HwPomeronFlux_la_LIBADD) $(LIBS) HwPomeronPDF.la: $(HwPomeronPDF_la_OBJECTS) $(HwPomeronPDF_la_DEPENDENCIES) $(EXTRA_HwPomeronPDF_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwPomeronPDF_la_LINK) -rpath $(pkglibdir) $(HwPomeronPDF_la_OBJECTS) $(HwPomeronPDF_la_LIBADD) $(LIBS) HwReggeonPDF.la: $(HwReggeonPDF_la_OBJECTS) $(HwReggeonPDF_la_DEPENDENCIES) $(EXTRA_HwReggeonPDF_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwReggeonPDF_la_LINK) -rpath $(pkglibdir) $(HwReggeonPDF_la_OBJECTS) $(HwReggeonPDF_la_LIBADD) $(LIBS) HwSatPDF.la: $(HwSatPDF_la_OBJECTS) $(HwSatPDF_la_DEPENDENCIES) $(EXTRA_HwSatPDF_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwSatPDF_la_LINK) -rpath $(pkglibdir) $(HwSatPDF_la_OBJECTS) $(HwSatPDF_la_LIBADD) $(LIBS) libHwMPIPDF.la: $(libHwMPIPDF_la_OBJECTS) $(libHwMPIPDF_la_DEPENDENCIES) $(EXTRA_libHwMPIPDF_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwMPIPDF_la_OBJECTS) $(libHwMPIPDF_la_LIBADD) $(LIBS) libHwRemDecayer.la: $(libHwRemDecayer_la_OBJECTS) $(libHwRemDecayer_la_DEPENDENCIES) $(EXTRA_libHwRemDecayer_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwRemDecayer_la_OBJECTS) $(libHwRemDecayer_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/HwRemDecayer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IncomingPhotonEvolver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MPIPDF.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MRST.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MinBiasPDF.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PomeronFlux.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PomeronPDF.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ReggeonPDF.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SatPDF.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @WANT_LOCAL_PDF_FALSE@uninstall-local: @WANT_LOCAL_PDF_FALSE@install-data-local: clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ clean-pkglibLTLIBRARIES mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-local uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES clean-pkglibLTLIBRARIES \ cscopelist ctags dist-hook distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkglibLTLIBRARIES \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-local \ uninstall-pkglibLTLIBRARIES @WANT_LOCAL_PDF_TRUE@install-data-local: @WANT_LOCAL_PDF_TRUE@ for i in `find $(srcdir)/mrst -name '*.dat'`; \ @WANT_LOCAL_PDF_TRUE@ do \ @WANT_LOCAL_PDF_TRUE@ $(install_sh_DATA) $$i $(DESTDIR)$(pkgdatadir)/PDF/$${i#$(srcdir)/}; \ @WANT_LOCAL_PDF_TRUE@ done @WANT_LOCAL_PDF_TRUE@ for i in `find $(srcdir)/diffraction -name '*.data'`; \ @WANT_LOCAL_PDF_TRUE@ do \ @WANT_LOCAL_PDF_TRUE@ $(install_sh_DATA) $$i $(DESTDIR)$(pkgdatadir)/PDF/$${i#$(srcdir)/}; \ @WANT_LOCAL_PDF_TRUE@ done @WANT_LOCAL_PDF_TRUE@uninstall-local: @WANT_LOCAL_PDF_TRUE@ rm -rf $(DESTDIR)$(pkgdatadir)/PDF dist-hook: rm -rf `find $(distdir)/mrst -name '.svn' -or -name '.cvsignore' -or -name 'CVS'` rm -rf `find $(distdir)/diffraction -name '.svn' -or -name '.cvsignore' -or -name 'CVS'` # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/MinBiasPDF.cc���������������������������������������������������������������0000644�0001750�0001750�00000004345�11754474775�017602� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MinBiasPDF.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MinBiasPDF class. // #include "MinBiasPDF.h" #include "ThePEG/Interface/ClassDocumentation.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "MinBiasPDF.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/EnumParticles.h" #include <cassert> using namespace Herwig; using namespace ThePEG; bool MinBiasPDF::canHandleParticle(tcPDPtr particle) const { assert(thePDF); return thePDF->canHandleParticle(particle); } cPDVector MinBiasPDF::partons(tcPDPtr particle) const { assert(thePDF); return thePDF->partons(particle); } double MinBiasPDF::xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps, Energy2 particleScale) const { assert(thePDF); return thePDF->xfvx(particle, parton, partonScale, x, eps, particleScale); } double MinBiasPDF::xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps, Energy2 particleScale) const { assert(thePDF); return thePDF->xfvx(particle, parton, partonScale, x, eps, particleScale); } void MinBiasPDF::persistentOutput(PersistentOStream & os) const { os << thePDF; } void MinBiasPDF::persistentInput(PersistentIStream & is, int) { is >> thePDF; } ClassDescription<MinBiasPDF> MinBiasPDF::initMinBiasPDF; // Definition of the static class description member. void MinBiasPDF::Init() { static ClassDocumentation<MinBiasPDF> documentation ("MinBiasPDF is used to modify any given parton density. Currently it only returns the valence part"); static Reference<MinBiasPDF,PDFBase> interfacePDF ("PDF", "pointer to the pdf, which will be modified", &MinBiasPDF::thePDF, false, false, true, false); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/MPIPDF.cc�������������������������������������������������������������������0000644�0001750�0001750�00000004121�11754474775�016675� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MPIPDF.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the MPIPDF class. // #include "MPIPDF.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/EnumParticles.h" #include <cassert> using namespace Herwig; using namespace ThePEG; MPIPDF::~MPIPDF() {} IBPtr MPIPDF::clone() const { return new_ptr(*this); } IBPtr MPIPDF::fullclone() const { return new_ptr(*this); } bool MPIPDF::canHandleParticle(tcPDPtr particle) const { assert(thePDF); return thePDF->canHandleParticle(particle); } cPDVector MPIPDF::partons(tcPDPtr particle) const { assert(thePDF); return thePDF->partons(particle); } double MPIPDF::xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps, Energy2 particleScale) const { // returns the density with removed valence part. assert(thePDF); return thePDF->xfsx(particle, parton, partonScale, x, eps, particleScale); } double MPIPDF::xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps, Energy2 particleScale) const { // Here we should return the actual valence density. assert(thePDF); return thePDF->xfvx(particle, parton, partonScale, x, eps, particleScale); } void MPIPDF::persistentOutput(PersistentOStream & os) const { os << thePDF; } void MPIPDF::persistentInput(PersistentIStream & is, int) { is >> thePDF; } ClassDescription<MPIPDF> MPIPDF::initMPIPDF; // Definition of the static class description member. void MPIPDF::Init() { static ClassDocumentation<MPIPDF> documentation ("The MPIPDF class wraps other PDF classes to provide " "sea-quark-only PDFs."); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/MPIPDF.h��������������������������������������������������������������������0000644�0001750�0001750�00000012556�11754474775�016552� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MPIPDF.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MPIPDF_H #define HERWIG_MPIPDF_H // // This is the declaration of the MPIPDF class. // #include "ThePEG/PDF/PDFBase.h" #include "MPIPDF.fh" namespace Herwig { using namespace ThePEG; /** * The MPIPDF class defines * a modified pdf which uses an existing pdf object to add * modifications like removing the valence part of it, which * is needed in the backward evolution of secondary scatters. * * \author Manuel B\"ahr * * @see \ref MPIPDFInterfaces "The interfaces" * defined for MPIPDF. */ class MPIPDF: public PDFBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The constructor which takes a PDF object as argument, to work with. */ MPIPDF(cPDFPtr orig = cPDFPtr()) : thePDF(orig) {} /** * The destructor. */ virtual ~MPIPDF(); //@} public: /** @name Virtual functions to be overridden by sub-classes. */ //@{ /** * Return true if this PDF can handle the extraction of partons from * the given \a particle. */ virtual bool canHandleParticle(tcPDPtr particle) const; /** * Return the partons which this PDF may extract from the given * \a particle. */ virtual cPDVector partons(tcPDPtr particle) const; /** * The density. Return the pdf for the given \a parton inside the * given \a particle for the virtuality \a partonScale and momentum * fraction \a x. The \a particle is assumed to have a virtuality \a * particleScale. For MPIPDF, only the sea quark densities * are included here! */ virtual double xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps = 0.0, Energy2 particleScale = ZERO) const; /** * The valence density. Return the pdf for the given cvalence \a * parton inside the given \a particle for the virtuality \a * partonScale and momentum fraction \a x. The \a particle is * assumed to have a virtuality \a particleScale. If not overidden * by a sub class this implementation will assume that the * difference between a quark and anti-quark distribution is due do * valense quarks, but return zero for anything else. */ virtual double xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps = 0.0, Energy2 particleScale = ZERO) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MPIPDF> initMPIPDF; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MPIPDF & operator=(const MPIPDF &); /** * pointer to the underlying ThePEG::PDFBase object, we are modifying. */ cPDFPtr thePDF; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MPIPDF. */ template <> struct BaseClassTrait<Herwig::MPIPDF,1> { /** Typedef of the first base class of MPIPDF. */ typedef PDFBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MPIPDF class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MPIPDF> : public ClassTraitsBase<Herwig::MPIPDF> { /** Return a platform-independent class name */ static string className() { return "Herwig::MPIPDF"; } /** * The name of a file containing the dynamic library where the class * MPIPDF is implemented. It may also include several, space-separated, * libraries if the class MPIPDF depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_MPIPDF_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/PomeronFlux.cc��������������������������������������������������������������0000644�0001750�0001750�00000020743�11754474775�020204� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the PomeronFlux class. // #include "PomeronFlux.h" #include "ThePEG/Utilities/Maths.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/EnumParticles.h" #include "ThePEG/StandardModel/StandardModelBase.h" #include "ThePEG/Repository/EventGenerator.h" using namespace ThePEG; using namespace Herwig; PomeronFlux::PomeronFlux() : q2min_(ZERO) , q2max_(10.*GeV2), xiMin_(1.0e-7) , xiMax_(1.0), alfa0P_(1.104) , alfapP_(0.06/GeV2), betaP_(5.5/GeV2), normP_(1./GeV2), alfa0R_(0.5) , alfapR_(0.3/GeV2), betaR_(1.6/GeV2), normR_(1./GeV2), nR_(0.0013) , PDFFit_(0) {} bool PomeronFlux::canHandleParticle(tcPDPtr particle) const { return ( abs(particle->id()) == ParticleID::pplus ); } cPDVector PomeronFlux::partons(tcPDPtr) const { cPDVector ret; ret.push_back(getParticleData( ParticleID::pomeron)); ret.push_back(getParticleData( ParticleID::reggeon)); return ret; } double PomeronFlux::xfl(tcPDPtr, tcPDPtr parton, Energy2 qq, double l, Energy2 ) const { // extra factor of Q^2 to cancel jacobian and sort out dimensions if(parton->id()==ParticleID::pomeron) return normP_*qq*exp(-(betaP_ + 2.*alfapP_*l)*qq + 2.*(alfa0P_ - 1)*l); else if(parton->id()==ParticleID::reggeon) return nR_*normR_*qq*exp(-(betaR_ + 2.*alfapR_*l)*qq + 2.*(alfa0R_ - 1)*l); else { assert(false); return 0.; } } double PomeronFlux::xfvl(tcPDPtr, tcPDPtr, Energy2, double, Energy2) const { // valence density is zero return 0.0; } ClassDescription<PomeronFlux> PomeronFlux::initPomeronFlux; // Definition of the static class description member. void PomeronFlux::Init() { static ClassDocumentation<PomeronFlux> documentation ("The PomeronFlux provides the PDF for a pomeron inside" " an incoming proton"); static Parameter<PomeronFlux,Energy2> interfaceQ2Min ("Q2Min", "Minimum value of the magnitude of Q^2 for the pomeron/reggeon", &PomeronFlux::q2min_, GeV2, ZERO, ZERO, 100.0*GeV2, false, false, Interface::limited); static Parameter<PomeronFlux,Energy2> interfaceQ2Max ("Q2Max", "Maximum value of the magnitude of Q^2 for the pomeron/reggeon", &PomeronFlux::q2max_, GeV2, 4.0*GeV2, ZERO, 100.0*GeV2, false, false, Interface::limited); static Parameter<PomeronFlux,double> interfaceXiMin ("XiMin", "Minimum value of the pomeron/reggeon xi", &PomeronFlux::xiMin_, 1.0e-7 , 0., 1., false, false, Interface::limited); static Parameter<PomeronFlux,double> interfaceXiMax ("XiMax", "Maximum value of the pomeron/reggeon xi", &PomeronFlux::xiMax_, 1., 0., 1., false, false, Interface::limited); static Parameter<PomeronFlux,double> interfaceAlpha0Pomeron ("Alpha0Pomeron", "The coefficient of the intercept of alpha pomeron", &PomeronFlux::alfa0P_, 1.104, 0.0, 0, true, false, Interface::lowerlim); static Parameter<PomeronFlux,InvEnergy2> interfaceAlphaPrimePomeron ("AlphaPrimePomeron", "The coefficient of the t dependence of alpha of pomeron", &PomeronFlux::alfapP_, 1./GeV2, 0.06/GeV2, 0./GeV2, 1./GeV2, false, false, Interface::limited); static Parameter<PomeronFlux,InvEnergy2> interfaceBPomeron ("BPomeron", "The coefficient of the t dependence of the exponential term of pomeron", &PomeronFlux::betaP_, 1./GeV2, 5.5/GeV2, 0./GeV2, 10./GeV2, false, false, Interface::limited); static Parameter<PomeronFlux,double> interfaceAlpha0Reggeon ("Alpha0Reggeon", "The coefficient of the intercept of alpha reggeon", &PomeronFlux::alfa0R_, 0.5, 0.0, 0, true, false, Interface::lowerlim); static Parameter<PomeronFlux,InvEnergy2> interfaceAlphaPrimeReggeon ("AlphaPrimeReggeon", "The coefficient of the t dependence of alpha of reggeon", &PomeronFlux::alfapR_, 1./GeV2, 0.3/GeV2, 0./GeV2, 1./GeV2, false, false, Interface::limited); static Parameter<PomeronFlux,InvEnergy2> interfaceBReggeon ("BReggeon", "The coefficient of the t dependence of the exponential term reggeon", &PomeronFlux::betaR_, 1/GeV2, 1.6/GeV2, 0./GeV2, 10./GeV2, false, false, Interface::limited); static Parameter<PomeronFlux,double> interfacenR ("nR", "Reggeon flux factor", &PomeronFlux::nR_, 0.0017, 0.0, 0, true, false, Interface::lowerlim); static Switch<PomeronFlux,int> interfacePDFFit ("PDFFit", "The pomeron/regeon flux parameters are set according" " to choice of pomeron/regeon structure function fit. ", &PomeronFlux::PDFFit_, 0, false, false); static SwitchOption interfacePDFFitUser (interfacePDFFit, "User", "Default (set for fit Hera 2007) or user setting.", 0); static SwitchOption interfacePDFFitPomeron2007 (interfacePDFFit, "Pomeron2007", "Pomeron structure function fit is Hera 2007.", 1); static SwitchOption interfacePDFFitPomeron2006A (interfacePDFFit, "Pomeron2006A", "Pomeron structure function fit is Hera 2006 A.", 2); static SwitchOption interfacePDFFitPomeron2006B (interfacePDFFit, "Pomeron2006B", "Pomeron structure function fit is Hera 2006 B.", 3); } double PomeronFlux::flattenScale(tcPDPtr proton, tcPDPtr parton, const PDFCuts & c, double l, double z, double & jacobian) const { double x = exp(-l); Energy2 qqmax = min(q2max_,0.25*sqr(x)*c.sMax()); Energy2 qqmin = max(q2min_, sqr(proton->mass()*x)/(1-x)); if(qqmin>=qqmax) { jacobian = 0.; return 0.; } InvEnergy2 k =ZERO; if(parton->id()==ParticleID::pomeron) k = betaP_ + 2.*l*alfapP_; else if(parton->id()==ParticleID::reggeon) k = betaR_ + 2.*l*alfapR_; else assert(false); double rho = exp(-k*qqmax) + z * ( exp(-k*qqmin) - exp(-k*qqmax) ); Energy2 scale = -log(rho)/k; // jacobian factor (1/Q^2max_)(dQ^2/dz) / Q^2 (to make dimensionless) jacobian *= (exp(-k*qqmin) - exp(-k*qqmax))/(rho*k*scale); // return Q^2/Q^2_max return scale/c.scaleMaxL(l); } double PomeronFlux::flattenL(tcPDPtr, tcPDPtr parton, const PDFCuts&, double z, double & jacobian) const { const double lMax = -log(xiMin_); const double lMin = -log(xiMax_); // cout<<"lMin "<<lMin<<" lMax "<<lMax<<endl; if(parton->id()==ParticleID::pomeron) { jacobian *= lMax - lMin; return lMin + z*(lMax - lMin); } else if(parton->id()==ParticleID::reggeon) { double k = 2.*(alfa0R_ - 1.); double rho =exp(k*lMin) + z*(exp(k*lMax) - exp(k*lMin)); jacobian *= (exp(k*lMax) - exp(k*lMin))/(rho*k); return log(rho)/k; } else { assert(false); return 0.; } } Energy2 PomeronFlux::intxFx(double x, Energy2 qqmin, Energy2 qqmax, double alfa0, InvEnergy2 alfap, InvEnergy2 beta) const { InvEnergy2 k = beta - 2.*log(x)*alfap; return exp(-2.*(alfa0 - 1.)*log(x))*(exp(-qqmin*k) - exp(-qqmax*k))/k; } void PomeronFlux::persistentOutput(PersistentOStream & os) const { os << ounit(q2min_,GeV2) << ounit(q2max_,GeV2) << xiMin_ << xiMax_ << alfa0P_ << ounit(alfapP_,1./GeV2) << ounit(betaP_,1./GeV2) << ounit(normP_,1./GeV2) << alfa0R_ << ounit(alfapR_,1./GeV2) << ounit(betaR_,1./GeV2) << ounit(normR_,1./GeV2) << nR_ << PDFFit_; } void PomeronFlux::persistentInput(PersistentIStream & is, int) { is >> iunit(q2min_,GeV2) >> iunit(q2max_,GeV2) >> xiMin_ >> xiMax_ >> alfa0P_ >> iunit(alfapP_,1./GeV2) >> iunit(betaP_,1./GeV2) >> iunit(normP_,1./GeV2) >> alfa0R_ >> iunit(alfapR_,1./GeV2) >> iunit(betaR_,1./GeV2) >> iunit(normR_,1./GeV2) >> nR_ >> PDFFit_; } void PomeronFlux::doinit() { PDFBase::doinit(); setFluxPar(); // compute the normalisation factor double xp = 0.003; Energy2 tkinmin = sqr(getParticleData(ParticleID::pplus)->mass()*xp)/(1-xp); normP_ = 1./(intxFx(xp,tkinmin , 1.*GeV2, alfa0P_, alfapP_, betaP_ )); normR_ = 1./(intxFx(xp,tkinmin , 1.*GeV2, alfa0R_, alfapR_, betaR_ )); } void PomeronFlux::setFluxPar() { switch(PDFFit_){ case 0: break; case 1: alfa0P_ = 1.104; nR_ = 0.0013; break; case 2: alfa0P_ = 1.118; nR_ = 0.0017; break; case 3: alfa0P_ = 1.111; nR_ = 0.0014; break; default: throw Exception() << "Invalid fit in PomeronFlux::setFluxPar()" << Exception::runerror; } } �����������������������������herwig++-2.6.0.orig/PDF/PomeronPDF.cc���������������������������������������������������������������0000644�0001750�0001750�00000032503�11754474775�017674� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DifractivePDF.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #include "PomeronPDF.h" #include <ThePEG/PDT/ParticleData.h> #include <ThePEG/PDT/EnumParticles.h> #include <ThePEG/Persistency/PersistentOStream.h> #include <ThePEG/Persistency/PersistentIStream.h> #include <ThePEG/Repository/EventGenerator.h> #include <ThePEG/Interface/ClassDocumentation.h> #include <ThePEG/Interface/Parameter.h> #include <ThePEG/Interface/Switch.h> #include <istream> #include <iostream> #include <string> using namespace std; using namespace ThePEG; using namespace Herwig; const int PomeronPDF::nPDFFlavour_ = 3; PomeronPDF::PomeronPDF() : pdfTable_(nPDFFlavour_, vector<vector<double> >() ), lxGrid_(nPDFFlavour_, vector<double>() ), lqqGrid_ (nPDFFlavour_, vector<double>() ), fileName_(3), nxPoints_(100), nqPoints_(88), PDFFit_(0) {} bool PomeronPDF::canHandleParticle(tcPDPtr particle) const { return ( abs(particle->id()) == ParticleID::pomeron ); } cPDVector PomeronPDF::partons(tcPDPtr p) const { // Return the parton types which are described by these parton // densities. cPDVector ret; if ( canHandleParticle(p) ) { ret.push_back(getParticleData( ParticleID::g)); if(PDFFit_==0) { ret.push_back(getParticleData( ParticleID::c)); ret.push_back(getParticleData( ParticleID::cbar)); } ret.push_back(getParticleData( ParticleID::d)); ret.push_back(getParticleData( ParticleID::dbar)); ret.push_back(getParticleData( ParticleID::u)); ret.push_back(getParticleData( ParticleID::ubar)); ret.push_back(getParticleData( ParticleID::s)); ret.push_back(getParticleData( ParticleID::sbar)); } return ret; } #ifdef NDEBUG double PomeronPDF::xfx(tcPDPtr, tcPDPtr parton, Energy2 qq, double x, double, Energy2) const { #else double PomeronPDF::xfx(tcPDPtr particle, tcPDPtr parton, Energy2 qq, double x, double, Energy2) const { #endif // assert particle is pomeron assert(particle->id()==ParticleID::pomeron); switch(parton->id()) { case ParticleID::g: return getPDFValue(gluon , x, qq); case ParticleID::u: case ParticleID::ubar: case ParticleID::d: case ParticleID::dbar: case ParticleID::s: case ParticleID::sbar: return PDFFit_==0 ? getPDFValue(singlet, x, qq)/6. : getPDFValue(singlet, x, qq); case ParticleID::c: case ParticleID::cbar: return PDFFit_==0 ? getPDFValue(charm , x, qq)*9./8. : 0.; case ParticleID::b: case ParticleID::bbar: return 0; default: assert(false); return 0.; } } #ifdef NDEBUG double PomeronPDF::xfvx(tcPDPtr, tcPDPtr parton, Energy2 qq, double x, double, Energy2) const { #else double PomeronPDF::xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 qq, double x, double, Energy2) const { #endif // assert particle is pomeron assert(particle->id()==ParticleID::pomeron); // valence parton is just gluon if(parton->id() == ParticleID::g){ return getPDFValue(gluon , x, qq); } else return 0.; } double PomeronPDF::getPDFValue(PDFFlavour flPDF, double x, Energy2 qq) const { // compute log(x) and log(q2) // Fit 2007 contains l= logx. Fit 2006 contains l = logl/log10 double l, lmax, lmin, lqqmin, lqqmax; if(!PDFFit_) { l = log(x); lmin = lxGrid_.at(flPDF).at(0); lmax = lxGrid_.at(flPDF).at(nxPoints_- 1); lqqmin = lqqGrid_.at(flPDF).at(0); lqqmax = lqqGrid_.at(flPDF).at(nqPoints_ -1); } else { l = log(x)/log(10); lmin = lxGrid_.at(flPDF).at(0); lmax = lxGrid_.at(flPDF).at(nxPoints_- 1); lqqmin = lqqGrid_.at(flPDF).at(0); lqqmax = lqqGrid_.at(flPDF).at(nqPoints_ -1); } double lqq = log(qq/GeV2); // find the x location in the table if(l <= lmin ) { if( lqq <= lqqmin) { double pdf00 = pdfTable_.at(flPDF).at(0).at(0); double pdf10 = pdfTable_.at(flPDF).at(1).at(0); if(boundary_==0){ double lqq1 = lqqGrid_.at(flPDF).at(1); double lqq0 = lqqGrid_.at(flPDF).at(0); double dq = lqq1 - lqq0; double qdq = (lqq - lqq0)/dq; return pdf00 + qdq*(pdf10 - pdf00); } else return pdf00; } else if( lqq >= lqqmax) { double pdf10 = pdfTable_.at(flPDF).at(nqPoints_-1).at(0); double pdf00 = pdfTable_.at(flPDF).at(nqPoints_-2).at(0); if(boundary_==0){ double lqq0 = lqqGrid_.at(flPDF).at(nqPoints_-2); double lqq1 = lqqGrid_.at(flPDF).at(nqPoints_-1); double dq = lqq1 - lqq0; double qdq = (lqq - lqq1)/dq; return pdf10 + qdq*(pdf10 - pdf00); } else return pdf10; } // (x< xmin) unsigned int qIndx = 0; for(; qIndx < lqqGrid_[flPDF].size(); ++qIndx ) if(lqq < lqqGrid_[flPDF][qIndx] ) break; assert(qIndx > 0); double pdf10 = pdfTable_.at(flPDF).at(qIndx).at(0); double pdf00 = pdfTable_.at(flPDF).at(qIndx-1).at(0); double lqq0 = lqqGrid_.at(flPDF).at(qIndx-1); double lqq1 = lqqGrid_.at(flPDF).at(qIndx); double dq = lqq1 - lqq0; double qdq = (lqq - lqq0)/dq; return pdf00 + qdq*(pdf10 - pdf00); } else if (l >= lmax ) { if( lqq <= lqqmin){ double pdf01 = pdfTable_.at(flPDF).at(0).at(nxPoints_-1); double pdf11 = pdfTable_.at(flPDF).at(1).at(nxPoints_-1); if(boundary_==0){ double lqq1 = lqqGrid_.at(flPDF).at(1); double lqq0 = lqqGrid_.at(flPDF).at(0); double dq = lqq1 - lqq0; double qdq = (lqq - lqq0)/dq; return pdf01 + qdq*(pdf11 - pdf01); } else return pdf01; } else if( lqq >= lqqmax){ double pdf11 = pdfTable_.at(flPDF).at(nqPoints_-1).at(nxPoints_-1); double pdf01 = pdfTable_.at(flPDF).at(nqPoints_-2).at(nxPoints_-1); if(boundary_==0){ double lqq1 = lqqGrid_.at(flPDF).at(nqPoints_-1); double lqq0 = lqqGrid_.at(flPDF).at(nqPoints_-2); double dq = lqq1 - lqq0; double qdq = ( lqq - lqq1 )/dq; return pdf11 + qdq*( pdf11 - pdf01); } else return pdf11; } unsigned int qIndx = 0; for(; qIndx < lqqGrid_.at(flPDF).size(); ++qIndx ) if(lqq < lqqGrid_.at(flPDF).at(qIndx) ) break; assert(qIndx > 0); double pdf01 = pdfTable_.at(flPDF).at(qIndx-1).at(nxPoints_-1); double pdf11 = pdfTable_.at(flPDF).at(qIndx ).at(nxPoints_-1); double lqq0 = lqqGrid_.at(flPDF).at(qIndx-1); double lqq1 = lqqGrid_.at(flPDF).at(qIndx); double dq = lqq1 - lqq0; double qdq = (lqq - lqq0)/dq; return pdf01 + qdq*(pdf11 - pdf01); } else { unsigned int xIndx = 0; for(; xIndx < lxGrid_.at(flPDF).size(); ++xIndx ) if (l < lxGrid_.at(flPDF).at(xIndx) ) break; assert(xIndx > 0); double lx0 = lxGrid_.at(flPDF).at(xIndx-1); double lx1 = lxGrid_.at(flPDF).at(xIndx); double dl = lx1 - lx0; double ldl = (l - lx0)/dl; if( lqq <= lqqmin) { double pdf00 = pdfTable_.at(flPDF).at(0).at(xIndx-1); double pdf10 = pdfTable_.at(flPDF).at(1).at(xIndx-1); double pdf01 = pdfTable_.at(flPDF).at(0).at(xIndx); double pdf11 = pdfTable_.at(flPDF).at(1).at(xIndx); if(boundary_==0){ double lqq0 = lqqGrid_.at(flPDF).at(0); double lqq1 = lqqGrid_.at(flPDF).at(1); double dq = lqq1 - lqq0; double qdq = (lqq - lqq0)/dq; return pdf00 + ldl*(pdf01 - pdf00) + qdq*(pdf10 - pdf00) + qdq*ldl*(pdf11 - pdf01 + pdf00 - pdf10); } else return pdf00 + ldl*(pdf01 - pdf00); } else if(lqq >= lqqmax){ double pdf00 = pdfTable_.at(flPDF).at(nqPoints_-2).at(xIndx-1); double pdf10 = pdfTable_.at(flPDF).at(nqPoints_-1).at(xIndx-1); double pdf01 = pdfTable_.at(flPDF).at(nqPoints_-2).at(xIndx); double pdf11 = pdfTable_.at(flPDF).at(nqPoints_-1).at(xIndx); if(boundary_==0){ double lqq0 = lqqGrid_.at(flPDF).at(nqPoints_-2); double lqq1 = lqqGrid_.at(flPDF).at(nqPoints_-1); double dq = lqq1 - lqq0 ; double qdq = ( lqq - lqq0)/dq; return pdf10 + ldl*(pdf11 - pdf10) + qdq*(pdf10 - pdf00) + qdq*ldl*(pdf11 - pdf01 + pdf00 - pdf10); } else return pdf10 + ldl*(pdf11 - pdf10); } else { unsigned int qIndx = 0; for(; qIndx < lqqGrid_.at(flPDF).size(); ++qIndx ) if(lqq < lqqGrid_.at(flPDF).at(qIndx) ) break; double lqq0 = lqqGrid_.at(flPDF).at(qIndx-1); double lqq1 = lqqGrid_.at(flPDF).at(qIndx); double dq = lqq1 - lqq0; double qdq = (lqq - lqq0)/dq; double pdf00 = pdfTable_.at(flPDF).at(qIndx-1).at(xIndx-1); double pdf01 = pdfTable_.at(flPDF).at(qIndx-1).at(xIndx); double pdf10 = pdfTable_.at(flPDF).at(qIndx).at(xIndx-1); double pdf11 = pdfTable_.at(flPDF).at(qIndx).at(xIndx); return pdf00 + ldl*(pdf01 - pdf00) + qdq*(pdf10 - pdf00) + ldl*qdq*(pdf11 - pdf01 + pdf00 - pdf10); } } throw Exception() << "Problem in PomeronPDF::getPDFValue() " << Exception::runerror; return 0; } void PomeronPDF::loadTables() const { double dtemp; // helper variable for reading ifstream datafile; for(int pdfIndx = 0; pdfIndx < nPDFFlavour_; ++pdfIndx ) { // Set correct size for vectors pdfTable_.at(pdfIndx).resize(nqPoints_); lqqGrid_.at(pdfIndx).resize(nqPoints_); lxGrid_.at(pdfIndx).resize(nxPoints_); string name = rootName_ + fileName_.at(pdfIndx); datafile.open(name.c_str(), ios::in ); if(!datafile.is_open()) throw Exception() << "Could not open file '" << name << "' in PomeronPDF::loadTables()" << Exception::runerror; // read lx points for (unsigned int xIndx = 0; xIndx < lxGrid_ .at(pdfIndx).size(); ++xIndx) datafile >> lxGrid_.at(pdfIndx).at(xIndx); // read qq points for (unsigned int qIndx = 0; qIndx < lqqGrid_.at(pdfIndx).size(); ++qIndx) { datafile >> dtemp; lqqGrid_.at(pdfIndx).at(qIndx) = log(dtemp); } // read xf(lx, qq) table for (unsigned int qIndx = 0; qIndx < pdfTable_.at(pdfIndx).size(); ++qIndx) { pdfTable_.at(pdfIndx).at(qIndx).resize(nxPoints_); for (unsigned int xIndx = 0; xIndx < pdfTable_.at(pdfIndx).at(qIndx).size(); ++xIndx) { datafile >> pdfTable_.at(pdfIndx).at(qIndx).at(xIndx); if(datafile.eof()) throw Exception() << "Error while reading " << fileName_.at(pdfIndx) << " too few data points in file" << "in PomeronPDF::loadTables()" << Exception::runerror; } } datafile >> dtemp; if(!datafile.eof()) throw Exception() << "Error reading end of " << fileName_.at(pdfIndx) << " too many data points in file" << "in PomeronPDF::loadTables()" << Exception::runerror; datafile.close(); } } void PomeronPDF::doinit() { PDFBase::doinit(); switch(PDFFit_){ case 0: fileName_.at(0) = "2007/h12007jetsdpdf_charm.data"; fileName_.at(1) = "2007/h12007jetsdpdf_gluon.data"; fileName_.at(2) = "2007/h12007jetsdpdf_singlet.data"; break; case 1: fileName_.at(0) = "2006/h12006jetspdf_singlet_fitA.data"; fileName_.at(1) = "2006/h12006jetspdf_gluon_fitA.data"; fileName_.at(2) = "2006/h12006jetspdf_singlet_fitA.data"; nxPoints_ = 100; nqPoints_ = 30; break; case 2: fileName_.at(0) = "2006/h12006jetspdf_singlet_fitB.data"; fileName_.at(1) = "2006/h12006jetspdf_gluon_fitB.data"; fileName_.at(2) = "2006/h12006jetspdf_singlet_fitB.data"; nxPoints_ = 100; nqPoints_ = 30; break; default: assert(false); } loadTables(); } ClassDescription<PomeronPDF> PomeronPDF::initPomeronPDF; // Definition of the static class description member. void PomeronPDF::Init(){ static ClassDocumentation<PomeronPDF> documentation ("Implementation of the Diffractive PDFs"); static Switch<PomeronPDF,int> interfacePDFFit ("PDFFit", "Switch between different PDF fits.", &PomeronPDF::PDFFit_, 0, true, false); static SwitchOption interfacePDFFit2007 (interfacePDFFit, "2007", "Hera fit 2007", 0); static SwitchOption interfacePDFFit2006A (interfacePDFFit, "2006A", "Hera fit A 2006", 1); static SwitchOption interfacePDFFit2006B (interfacePDFFit, "2006B", "Hera fit B 2006", 2); static Parameter<PomeronPDF,string> interfaceRootName ("RootName", "Root name for the input files", &PomeronPDF::rootName_, "", false, false); static Switch<PomeronPDF,int> interfaceBoundary ("Boundary", "Switch between different beheviours at out of PDF range.", &PomeronPDF::boundary_, 0, true, false); static SwitchOption interfaceBounderyExtrapolate (interfaceBoundary, "Extrapolate", "Extrapolate the PDF when it is out of range.", 0); static SwitchOption interfaceBounderyFreeze (interfaceBoundary, "Freeze", "Freeze the value of PDF at the boundary.", 1); } IBPtr PomeronPDF::clone() const { return new_ptr(*this); } IBPtr PomeronPDF::fullclone() const { return new_ptr(*this); } void PomeronPDF::persistentOutput(PersistentOStream & os) const { os << lxGrid_ << lqqGrid_ << pdfTable_ << PDFFit_ << nxPoints_ << nqPoints_ << rootName_ << boundary_; } void PomeronPDF::persistentInput(PersistentIStream & is, int) { is >> lxGrid_ >> lqqGrid_ >> pdfTable_ >> PDFFit_ >> nxPoints_>> nqPoints_ >> rootName_ >> boundary_; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/PomeronPDF.h����������������������������������������������������������������0000644�0001750�0001750�00000015304�11754474775�017536� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PomeronPDF.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PomeronPDF_H #define HERWIG_PomeronPDF_H #include <ThePEG/PDF/PDFBase.h> #include <iostream> #include <fstream> #include <string> #include <cmath> namespace Herwig { using namespace ThePEG; /** \ingroup PDF * * Implementation of the PomeronPDF PDFs * * @see \ref PomeronPDFInterfaces "The interfaces" * defined for PomeronPDF. */ class PomeronPDF : public PDFBase { public: /** @name Standard constructors and destructors. */ //@{ /** * Default constructor. */ PomeronPDF(); /** @name Virtual functions from PDFBase */ //@{ /** * Return true if this PDF can handle the extraction of parton from the * given particle ie. if the particle is a proton or neutron. * @param particle The particle */ virtual bool canHandleParticle(tcPDPtr particle) const; /** * Return the parton types which are described by these parton * densities. * @param p The particle */ virtual cPDVector partons(tcPDPtr p) const; /** * Return x times the pdf for the given parameters * @param particle The beam particle * @param parton The parton for which to return the PDF. * @param partonScale The scale at which to evaluate the PDF. * @param x The momentum fraction * @param eps ??? an unknown parameter from ThePEG. * @param particleScale The scale for the particle */ virtual double xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps = 0.0, Energy2 particleScale = ZERO) const; /** * Return x times the valence pdf for the given parameters * @param particle The beam particle * @param parton The parton for which to return the PDF. * @param partonScale The scale at which to evaluate the PDF. * @param x The momentum fraction * @param eps ??? an unknown parameter from ThePEG. * @param particleScale The scale for the particle */ virtual double xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps = 0.0, Energy2 particleScale = ZERO) 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(); 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(); 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: /** * Enumeration to storage the types of partons */ enum PDFFlavour {charm, gluon, singlet}; /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<PomeronPDF> initPomeronPDF; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ PomeronPDF & operator=(const PomeronPDF &); private: /** * This function calculates the PDF value for the given particles and a given x and q * @param flPDF Flavour of the PDF function * @param x The x of the pomeron * @param qq The scale * */ double getPDFValue(PDFFlavour flPDF, double x, Energy2 qq) const; /** * Load the PDF tables from file to the vectors. */ void loadTables() const; private: /** * Number of PDF flavours */ static const int nPDFFlavour_; /** * Vector of matrixes of PDF functions for different flavours: * pdfTable [Flavours][Q^2][log x] */ mutable vector<vector<vector<double> > > pdfTable_; /** * Vector of grid with log x values: lxGrid [Flavours] [log x] */ mutable vector<vector<double> > lxGrid_; /** * Vector of grid with log qq values: lxGrid [Flavours] [log qq] */ mutable vector<vector<double> > lqqGrid_; /** * Vector of names of PDF data files for each flavour */ vector<string> fileName_; /** * Base of the filename */ string rootName_; /** * Number of ln x points */ int nxPoints_; /** * Number of qq flavours */ int nqPoints_; /** * Switch between different PDF fits. Possible values: 0 fit 2007, 1 fit A 2006, 2 fit B 2006 */ int PDFFit_; /** * Switch between different aproaches when the values are out of PDF range: 0 Extrapolate, 1 Freeze */ int boundary_; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of PomeronPDF. */ template <> struct BaseClassTrait<Herwig::PomeronPDF,1> { /** Typedef of the first base class of PomeronPDF. */ typedef PDFBase NthBase; }; /** This template specialization informs ThePEG about the name of * the PomeronPDF class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::PomeronPDF>: public ClassTraitsBase<Herwig::PomeronPDF> { /** Return a platform-independent class name */ static string className() { return "Herwig::PomeronPDF"; } /** * The name of a file containing the dynamic library where the class * PomeronPDF is implemented. It may also include several, space-separated, * libraries if the class PomeronPDF depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwPomeronPDF.so"; } }; /** @endcond */ } #endif ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/PomeronFlux.h���������������������������������������������������������������0000644�0001750�0001750�00000016665�11754474775�020056� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef Herwig_PomeronFlux_H #define Herwig_PomeronFlux_H // // This is the declaration of the PomeronFlux class. // #include "ThePEG/PDF/PDFBase.h" namespace Herwig { using namespace ThePEG; /** * Here is the documentation of the PomeronFlux class. * * @see \ref PomeronFluxInterfaces "The interfaces" * defined for PomeronFlux. */ class PomeronFlux: public PDFBase { public: /** * Default constructor */ PomeronFlux(); /** @name Virtual functions to be overridden by sub-classes. */ //@{ /** * Return true if this PDF can handle the extraction of partons from * the given \a particle. */ virtual bool canHandleParticle(tcPDPtr particle) const; /** * Return the partons which this PDF may extract from the given * \a particle. */ virtual cPDVector partons(tcPDPtr particle) const; /** * The density. Return the pdf for the given \a parton inside the * given \a particle for the virtuality \a partonScale and * logarithmic momentum fraction \a l \f$(l=\log(1/x)\f$. The \a * particle is assumed to have a virtuality \a particleScale. */ virtual double xfl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double l, Energy2 particleScale = ZERO) const; /** * The valence density. Return the pdf for the given cvalence \a * parton inside the given \a particle for the virtuality \a * partonScale and logarithmic momentum fraction \a l * \f$(l=\log(1/x)\f$. The \a particle is assumed to have a * virtuality \a particleScale. If not overidden by a sub class this * will return zero. */ virtual double xfvl(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double l, Energy2 particleScale = ZERO) const; /** * Generate scale (as a fraction of the maximum scale). If the PDF * contains strange peaks which can be difficult to handle, this * function may be overwritten to return an appropriate scale * \f$Q^2/Q^2_{\max}\f$ for a \a z uniformly distributed in * ]0,1[. Also the jacobobian of the \f$Q^2/Q^2_{\max}\rightarrow * z\f$ variable transformation must multiply the \a jacobian * argument. The default version will simply use the function * \f$Q^2/Q^2_{\max} = (Q^2_{\max}/Q^2_{\min})^(z-1)\f$ or, if * \f$Q^2_{\min}\f$ is zero, \f$Q^2/Q^2_{\max} = z\f$ (where the * limits are set by \a cut). */ virtual double flattenScale(tcPDPtr particle, tcPDPtr parton, const PDFCuts & cut, double l, double z, double & jacobian) const; /** * Generate a momentum fraction. If the PDF contains strange peaks * which can be difficult to handle, this function may be * overwritten to return an appropriate \f$l=\log(1/x)\f$ for a \a z * uniformly distributed in ]0,1[. Also the jacobobian of the * \f$l\rightarrow z\f$ variable transformation must in the function * multiply the \a jacobian argument. The default version will * simply use the function \f$l(z) = l_{\min} + * z*(l_{\max}-l_{\min})\f$ (where the limits are set by \a cut). */ virtual double flattenL(tcPDPtr particle, tcPDPtr parton, const PDFCuts &cut, double z, double & jacobian) 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(); /** * Set normalization constant Ap of the pomeron flux. */ virtual void doinit(); protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is an concrete class without persistent data. */ static ClassDescription<PomeronFlux> initPomeronFlux; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ PomeronFlux & operator=(const PomeronFlux &); private: /** * Integrated pomeron/regeon flux over qq in the range qqmin ... qqmax * (with normalization constant Ap = 1 GeV2). * The flux normalization constant is obtained \f$x_p*intFx_p = 1\f$, * where x_p = 0.003. */ Energy2 intxFx(double x, Energy2 qqmin, Energy2 qqmax, double alfa0, InvEnergy2 alfap, InvEnergy2 beta) const; /** * Helper function in doinit() which sets the parameters of the * pomeron/regeon flux according to user setup. */ void setFluxPar(); private: /** * Minimum \f$Q^2\f$ for the pomeron/reggeon */ Energy2 q2min_; /** * Maximum \f$Q^2\f$ for the pomeron/reggeon */ Energy2 q2max_; /** * Cut on the minimum xi */ double xiMin_; /** * Cut on the maximum xi */ double xiMax_; /** * Pomeron intercept */ double alfa0P_; /** * Pomeron slope */ InvEnergy2 alfapP_; /** * Parameter of pomeron flux Bp */ InvEnergy2 betaP_; /** * Normalization constant of the pomeron flux */ InvEnergy2 normP_; /** * Reggeon intercept */ double alfa0R_; /** * Reggeon slope */ InvEnergy2 alfapR_; /** * Parameter of reggeon flux Bp */ InvEnergy2 betaR_; /** * Normalization constant of the reggeon flux */ InvEnergy2 normR_; /** * Factor of the pomeron flux */ double nR_; /** * Switch between pomeron/regeon structure function fits. * The flux parameters are set according to the fit choice. */ int PDFFit_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of PomeronFlux. */ template <> struct BaseClassTrait<Herwig::PomeronFlux,1> { /** Typedef of the first base class of PomeronFlux. */ typedef PDFBase NthBase; }; /** This template specialization informs ThePEG about the name of * the PomeronFlux class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::PomeronFlux> : public ClassTraitsBase<Herwig::PomeronFlux> { /** Return a platform-independent class name */ static string className() { return "Herwig::PomeronFlux"; } /** * The name of a file containing the dynamic library where the class * PomeronFlux is implemented. It may also include several, space-separated, * libraries if the class PomeronFlux depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwPomeronFlux.so"; } }; /** @endcond */ } #endif /* Herwig_PomeronFlux_H */ ���������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/Makefile.am�����������������������������������������������������������������0000644�0001750�0001750�00000004243�11755414006�017426� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwMRST.la HwMRST_la_SOURCES = \ MRST.cc MRST.h MRST.icc ## add this to produce tests of the PDFs ## HwMRST_la_CPPFLAGS=$(AM_CPPFLAGS) -DMRST_TESTING HwMRST_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 7:1:0 EXTRA_DIST = mrst diffraction pkglib_LTLIBRARIES += HwPomeronPDF.la HwPomeronPDF_la_SOURCES = \ PomeronPDF.cc PomeronPDF.h ## add this to produce tests of the PDFs ## HwDIFFRACTIVEPDF_la_CPPFLAGS=$(AM_CPPFLAGS) -DDIFFRACTIVEPDF_TESTING HwPomeronPDF_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 1:0:0 pkglib_LTLIBRARIES += HwReggeonPDF.la HwReggeonPDF_la_SOURCES = \ ReggeonPDF.cc ReggeonPDF.h ## add this to produce tests of the PDFs ## HwDIFFRACTIVEPDF_la_CPPFLAGS=$(AM_CPPFLAGS) -DDIFFRACTIVEPDF_TESTING HwReggeonPDF_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 1:0:0 pkglib_LTLIBRARIES += HwPomeronFlux.la HwPomeronFlux_la_SOURCES = \ PomeronFlux.h PomeronFlux.cc HwPomeronFlux_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 2:0:0 ## bound into HwShower.la noinst_LTLIBRARIES = libHwRemDecayer.la libHwRemDecayer_la_SOURCES = \ HwRemDecayer.h HwRemDecayer.cc HwRemDecayer.fh ## bound into HwShower.la noinst_LTLIBRARIES += libHwMPIPDF.la libHwMPIPDF_la_SOURCES = \ MPIPDF.h MPIPDF.cc MPIPDF.fh \ MinBiasPDF.h MinBiasPDF.cc MinBiasPDF.fh pkglib_LTLIBRARIES += HwSatPDF.la HwSatPDF_la_SOURCES = \ SatPDF.h SatPDF.cc HwSatPDF_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 4:0:0 pkglib_LTLIBRARIES += HwIncomingPhotonEvolver.la HwIncomingPhotonEvolver_la_SOURCES = \ IncomingPhotonEvolver.h IncomingPhotonEvolver.cc HwIncomingPhotonEvolver_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 4:0:0 if WANT_LOCAL_PDF install-data-local: for i in `find $(srcdir)/mrst -name '*.dat'`; \ do \ $(install_sh_DATA) $$i $(DESTDIR)$(pkgdatadir)/PDF/$${i#$(srcdir)/}; \ done for i in `find $(srcdir)/diffraction -name '*.data'`; \ do \ $(install_sh_DATA) $$i $(DESTDIR)$(pkgdatadir)/PDF/$${i#$(srcdir)/}; \ done uninstall-local: rm -rf $(DESTDIR)$(pkgdatadir)/PDF endif dist-hook: rm -rf `find $(distdir)/mrst -name '.svn' -or -name '.cvsignore' -or -name 'CVS'` rm -rf `find $(distdir)/diffraction -name '.svn' -or -name '.cvsignore' -or -name 'CVS'` �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/ReggeonPDF.h����������������������������������������������������������������0000644�0001750�0001750�00000012743�11754474775�017511� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ReggeonPDF.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ReggeonPDF_H #define HERWIG_ReggeonPDF_H #include <ThePEG/PDF/PDFBase.h> #include <iostream> #include <fstream> #include <string> #include <cmath> namespace Herwig { using namespace ThePEG; /** \ingroup PDF * * Implementation of the ReggeonPDF PDFs * * @see \ref ReggeonPDFInterfaces "The interfaces" * defined for ReggeonPDF * This class is wrapper of Reggeon structure function. Which is most likely * simulated by pion structure function. */ class ReggeonPDF : public PDFBase { public: /** * Default constructor */ ReggeonPDF() : particleID_(111) {} /** @name Virtual functions from PDFBase */ //@{ /** * Return true if this PDF can handle the extraction of parton from the * given particle ie. if the particle is a proton or neutron. * @param particle The particle */ virtual bool canHandleParticle(tcPDPtr particle) const; /** * Return the parton types which are described by these parton * densities. * @param p The particle */ virtual cPDVector partons(tcPDPtr p) const; /** * Return x times the pdf for the given parameters * @param particle The beam particle * @param parton The parton for which to return the PDF. * @param partonScale The scale at which to evaluate the PDF. * @param x The momentum fraction * @param eps ??? an unknown parameter from ThePEG. * @param particleScale The scale for the particle */ virtual double xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps = 0.0, Energy2 particleScale = ZERO) const; /** * Return x times the valence pdf for the given parameters * @param particle The beam particle * @param parton The parton for which to return the PDF. * @param partonScale The scale at which to evaluate the PDF. * @param x The momentum fraction * @param eps ??? an unknown parameter from ThePEG. * @param particleScale The scale for the particle */ virtual double xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps = 0.0, Energy2 particleScale = ZERO) 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(); 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(); //@} 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 static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<ReggeonPDF> initReggeonPDF; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ReggeonPDF & operator=(const ReggeonPDF &); /** * Pointer to the concrete PDF reggeon structure function. */ PDFPtr ptrPDF_; /** * PDG code for the particle */ long particleID_; /** * Pointer to the particle */ PDPtr particle_; }; } namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ReggeonPDF. */ template <> struct BaseClassTrait<Herwig::ReggeonPDF,1> { /** Typedef of the first base class of ReggeonPDF. */ typedef PDFBase NthBase; }; /** This template specialization informs ThePEG about the name of * the ReggeonPDF class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ReggeonPDF>: public ClassTraitsBase<Herwig::ReggeonPDF> { /** Return a platform-independent class name */ static string className() { return "Herwig::ReggeonPDF"; } /** * The name of a file containing the dynamic library where the class * ReggeonPDF is implemented. It may also include several, space-separated, * libraries if the class ReggeonPDF depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwReggeonPDF.so"; } }; /** @endcond */ } #endif �����������������������������herwig++-2.6.0.orig/PDF/HwRemDecayer.cc�������������������������������������������������������������0000644�0001750�0001750�00000117415�11755164166�020237� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HwRemDecayer.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the HwRemDecayer class. // #include "HwRemDecayer.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Utilities/UtilityBase.h" #include "ThePEG/Utilities/SimplePhaseSpace.h" #include "ThePEG/Utilities/Throw.h" #include "Herwig++/Shower/ShowerHandler.h" using namespace Herwig; namespace{ const bool dbg = false; void reShuffle(Lorentz5Momentum &p1, Lorentz5Momentum &p2, Energy m1, Energy m2){ Lorentz5Momentum ptotal(p1+p2); ptotal.rescaleMass(); if( ptotal.m() < m1+m2 ) { if(dbg) cerr << "Not enough energy to perform reshuffling \n"; throw HwRemDecayer::ExtraSoftScatterVeto(); } Boost boostv = -ptotal.boostVector(); ptotal.boost(boostv); p1.boost(boostv); // set the masses and energies, p1.setMass(m1); p1.setE(0.5/ptotal.m()*(ptotal.m2()+sqr(m1)-sqr(m2))); p1.rescaleRho(); // boost back to the lab p1.boost(-boostv); p2.boost(boostv); // set the masses and energies, p2.setMass(m2); p2.setE(0.5/ptotal.m()*(ptotal.m2()+sqr(m2)-sqr(m1))); p2.rescaleRho(); // boost back to the lab p2.boost(-boostv); } } void HwRemDecayer::initialize(pair<tRemPPtr, tRemPPtr> rems, tPPair beam, Step & step, Energy forcedSplitScale) { // the step thestep = &step; // valence content of the hadrons theContent.first = getHadronContent(beam.first); theContent.second = getHadronContent(beam.second); // momentum extracted from the hadrons theUsed.first = Lorentz5Momentum(); theUsed.second = Lorentz5Momentum(); theMaps.first.clear(); theMaps.second.clear(); theX.first = 0.0; theX.second = 0.0; theRems = rems; _forcedSplitScale = forcedSplitScale; // check remnants attached to the right hadrons if( (theRems.first && parent(theRems.first ) != beam.first ) || (theRems.second && parent(theRems.second) != beam.second) ) throw Exception() << "Remnant order wrong in " << "HwRemDecayer::initialize(...)" << Exception::runerror; return; } void HwRemDecayer::split(tPPtr parton, HadronContent & content, tRemPPtr rem, Lorentz5Momentum & used, PartnerMap &partners, tcPDFPtr pdf, bool first) { theBeam = parent(rem); theBeamData = dynamic_ptr_cast<Ptr<BeamParticleData>::const_pointer> (theBeam->dataPtr()); double currentx = parton->momentum().rho()/theBeam->momentum().rho(); double check = rem==theRems.first ? theX.first : theX.second; check += currentx; if(1.0-check < 1e-3) throw ShowerHandler::ExtraScatterVeto(); bool anti; Lorentz5Momentum lastp(parton->momentum()); int lastID(parton->id()); Energy oldQ(_forcedSplitScale); _pdf = pdf; //do nothing if already valence quark if(first && content.isValenceQuark(parton)) { //set the extracted value, because otherwise no RemID could be generated. content.extract(lastID); // add the particle to the colour partners partners.push_back(make_pair(parton, tPPtr())); //set the sign anti = parton->hasAntiColour() && parton->id()!=ParticleID::g; if(rem==theRems.first) theanti.first = anti; else theanti.second = anti; // add the x and return if(rem==theRems.first) theX.first += currentx; else theX.second += currentx; return; } //or gluon for secondaries else if(!first && lastID == ParticleID::g) { partners.push_back(make_pair(parton, tPPtr())); // add the x and return if(rem==theRems.first) theX.first += currentx; else theX.second += currentx; return; } // if a sea quark.antiquark forced splitting to a gluon // Create the new parton with its momentum and parent/child relationship set PPtr newSea; if( lastID != ParticleID::g ) { newSea = forceSplit(rem, -lastID, oldQ, currentx, lastp, used,content); ColinePtr cl = new_ptr(ColourLine()); if(newSea->id() > 0) cl-> addColoured(newSea); else cl->addAntiColoured(newSea); // if a secondard scatter finished so return if(!first || content.isValenceQuark(ParticleID::g) ){ partners.push_back(make_pair(parton, newSea)); // add the x and return if(rem==theRems.first) theX.first += currentx; else theX.second += currentx; if(first) content.extract(ParticleID::g); return; } } // otherwise evolve back to valence // final valence splitting PPtr newValence = forceSplit(rem, 0, oldQ, currentx , lastp, used, content); // extract from the hadron to allow remnant to be determined content.extract(newValence->id()); // case of a gluon going into the hard subprocess if( lastID == ParticleID::g ) { partners.push_back(make_pair(parton, tPPtr())); anti = newValence->hasAntiColour(); if(rem==theRems.first) theanti.first = anti; else theanti.second = anti; parton->colourLine(!anti)->addColoured(newValence, anti); // add the x and return if(rem==theRems.first) theX.first += currentx; else theX.second += currentx; return; } //The valence quark will always be connected to the sea quark with opposite sign tcPPtr particle; if(lastID*newValence->id() < 0){ particle = parton; partners.push_back(make_pair(newSea, tPPtr())); } else { particle = newSea; partners.push_back(make_pair(parton, tPPtr())); } anti = newValence->hasAntiColour(); if(rem==theRems.first) theanti.first = anti; else theanti.second = anti; if(particle->colourLine()) particle->colourLine()->addAntiColoured(newValence); if(particle->antiColourLine()) particle->antiColourLine()->addColoured(newValence); // add the x and return if(rem==theRems.first) theX.first += currentx; else theX.second += currentx; return; } void HwRemDecayer::doSplit(pair<tPPtr, tPPtr> partons, pair<tcPDFPtr, tcPDFPtr> pdfs, bool first) { if(theRems.first) { ParticleVector children=theRems.first->children(); for(unsigned int ix=0;ix<children.size();++ix) { if(children[ix]->dataPtr()==theRems.first->dataPtr()) theRems.first = dynamic_ptr_cast<RemPPtr>(children[ix]); } } if(theRems.second) { ParticleVector children=theRems.second->children(); for(unsigned int ix=0;ix<children.size();++ix) { if(children[ix]->dataPtr()==theRems.second->dataPtr()) theRems.second = dynamic_ptr_cast<RemPPtr>(children[ix]); } } // forced splitting for first parton if(partons.first->data().coloured()) { try { split(partons.first, theContent.first, theRems.first, theUsed.first, theMaps.first, pdfs.first, first); } catch(ShowerHandler::ExtraScatterVeto) { theX.first -= partons.first->momentum().rho()/ parent(theRems.first)->momentum().rho(); throw ShowerHandler::ExtraScatterVeto(); } } // forced splitting for second parton if(partons.second->data().coloured()) { try { split(partons.second, theContent.second, theRems.second, theUsed.second, theMaps.second, pdfs.second, first); // additional check for the remnants // if can't do the rescale veto the emission if(!first&&partons.first->data().coloured()&& partons.second->data().coloured()) { Lorentz5Momentum pnew[2]= {theRems.first->momentum() - theUsed.first - partons.first->momentum(), theRems.second->momentum() - theUsed.second - partons.second->momentum()}; pnew[0].setMass(getParticleData(theContent.first.RemID())->constituentMass()); pnew[0].rescaleEnergy(); pnew[1].setMass(getParticleData(theContent.second.RemID())->constituentMass()); pnew[1].rescaleEnergy(); for(unsigned int iy=0; iy<theRems.first->children().size(); ++iy) pnew[0] += theRems.first->children()[iy]->momentum(); for(unsigned int iy=0; iy<theRems.second->children().size(); ++iy) pnew[1] += theRems.second->children()[iy]->momentum(); Lorentz5Momentum ptotal= theRems.first ->momentum()-partons.first ->momentum()+ theRems.second->momentum()-partons.second->momentum(); if(ptotal.m() < (pnew[0].m() + pnew[1].m()) ) { if(partons.second->id() != ParticleID::g){ if(partons.second==theMaps.second.back().first) theUsed.second -= theMaps.second.back().second->momentum(); else theUsed.second -= theMaps.second.back().first->momentum(); thestep->removeParticle(theMaps.second.back().first); thestep->removeParticle(theMaps.second.back().second); } theMaps.second.pop_back(); throw ShowerHandler::ExtraScatterVeto(); } } } catch(ShowerHandler::ExtraScatterVeto){ if(!partons.first||!partons.second|| !theRems.first||!theRems.second) throw ShowerHandler::ExtraScatterVeto(); //case of the first forcedSplitting worked fine theX.first -= partons.first->momentum().rho()/ parent(theRems.first)->momentum().rho(); theX.second -= partons.second->momentum().rho()/ parent(theRems.second)->momentum().rho(); //case of the first interaction //throw veto immediately, because event get rejected anyway. if(first) throw ShowerHandler::ExtraScatterVeto(); //secondary interactions have to end on a gluon, if parton //was NOT a gluon, the forced splitting particles must be removed if(partons.first->id() != ParticleID::g) { if(partons.first==theMaps.first.back().first) theUsed.first -= theMaps.first.back().second->momentum(); else theUsed.first -= theMaps.first.back().first->momentum(); thestep->removeParticle(theMaps.first.back().first); thestep->removeParticle(theMaps.first.back().second); } theMaps.first.pop_back(); throw ShowerHandler::ExtraScatterVeto(); } } // veto if not enough energy for extraction if( !first &&(theRems.first ->momentum().e() - partons.first ->momentum().e() < 1.0e-3*MeV || theRems.second->momentum().e() - partons.second->momentum().e() < 1.0e-3*MeV )) { if(partons.first->id() != ParticleID::g) { if(partons.first==theMaps.first.back().first) theUsed.first -= theMaps.first.back().second->momentum(); else theUsed.first -= theMaps.first.back().first->momentum(); thestep->removeParticle(theMaps.first.back().first); thestep->removeParticle(theMaps.first.back().second); } theMaps.first.pop_back(); if(partons.second->id() != ParticleID::g) { if(partons.second==theMaps.second.back().first) theUsed.second -= theMaps.second.back().second->momentum(); else theUsed.second -= theMaps.second.back().first->momentum(); thestep->removeParticle(theMaps.second.back().first); thestep->removeParticle(theMaps.second.back().second); } theMaps.second.pop_back(); throw ShowerHandler::ExtraScatterVeto(); } } void HwRemDecayer::mergeColour(tPPtr pold, tPPtr pnew, bool anti) const { ColinePtr clnew, clold; //save the corresponding colour lines clold = pold->colourLine(anti); clnew = pnew->colourLine(!anti); assert(clold); if(clnew){//there is already a colour line (not the final diquark) if( (clnew->coloured().size() + clnew->antiColoured().size()) > 1 ){ if( (clold->coloured().size() + clold->antiColoured().size()) > 1 ){ //join the colour lines //I don't use the join method, because potentially only (anti)coloured //particles belong to one colour line if(clold!=clnew){//procs are not already connected while ( !clnew->coloured().empty() ) { tPPtr p = clnew->coloured()[0]; clnew->removeColoured(p); clold->addColoured(p); } while ( !clnew->antiColoured().empty() ) { tPPtr p = clnew->antiColoured()[0]; clnew->removeAntiColoured(p); clold->addAntiColoured(p); } } }else{ //if pold is the only member on it's //colour line, remove it. clold->removeColoured(pold, anti); //and add it to clnew clnew->addColoured(pold, anti); } } else{//pnnew is the only member on it's colour line. clnew->removeColoured(pnew, !anti); clold->addColoured(pnew, !anti); } } else {//there is no coline at all for pnew clold->addColoured(pnew, !anti); } } void HwRemDecayer::fixColours(PartnerMap partners, bool anti, double colourDisrupt) const { PartnerMap::iterator prev; tPPtr pnew, pold; assert(partners.size()>=2); PartnerMap::iterator it=partners.begin(); while(it != partners.end()) { //skip the first one to have a partner if(it==partners.begin()){ it++; continue; } prev = it - 1; //determine the particles to work with pold = prev->first; if(prev->second){ if(pold->hasAntiColour() != anti) pold = prev->second; } assert(pold); pnew = it->first; if(it->second) { if(it->second->colourLine(!anti)) //look for the opposite colour pnew = it->second; } assert(pnew); // Implement the disruption of colour connections if( it != partners.end()-1 ) {//last one is diquark-has to be connected //has to be inside the if statement, so that the probability is //correctly counted: if( UseRandom::rnd() < colourDisrupt ){ if(!it->second){//check, whether we have a gluon mergeColour(pnew, pnew, anti); }else{ if(pnew==it->first)//be careful about the order mergeColour(it->second, it->first, anti); else mergeColour(it->first, it->second, anti); } it = partners.erase(it); continue; } } // regular merging mergeColour(pold, pnew, anti); //end of loop it++; } return; } PPtr HwRemDecayer::forceSplit(const tRemPPtr rem, long child, Energy &lastQ, double &lastx, Lorentz5Momentum &pf, Lorentz5Momentum &p, HadronContent & content) const { static const double eps=1e-6; // beam momentum Lorentz5Momentum beam = theBeam->momentum(); // the last scale is minimum of last value and upper limit Energy minQ=_range*_kinCutoff*sqrt(lastx)/(1-lastx); if(minQ>lastQ) lastQ=minQ; // generate the new value of qtilde // weighted towards the lower value: dP/dQ = 1/Q -> Q(R) = // Q0 (Qmax/Q0)^R Energy q; unsigned int ntry=0,maxtry=100; double zmin= lastx ,zmax,yy; if(1-lastx<eps) throw ShowerHandler::ExtraScatterVeto(); do { q = minQ*pow(lastQ/minQ,UseRandom::rnd()); yy = 1.+0.5*sqr(_kinCutoff/q); zmax = yy - sqrt(sqr(yy)-1.); ++ntry; } while(zmax<zmin&&ntry<maxtry); if(ntry==maxtry) { throw Exception() << "Can't set scale and z for forced splitting in " << "HwRemDecayer::forceSplit() " << Exception::eventerror; } if(zmax-zmin<eps) throw ShowerHandler::ExtraScatterVeto(); // now generate z as in FORTRAN HERWIG // use y = ln(z/(1-z)) as integration variable double ymin=log(zmin/(1.-zmin)); double ymax=log(zmax/(1.-zmax)); double dely=ymax-ymin; unsigned int nz=_nbinmax; dely/=nz; yy=ymin+0.5*dely; vector<int> ids; if(child!=0) ids.push_back(ParticleID::g); else { ids=content.flav; for(unsigned int ix=0;ix<ids.size();++ix) ids[ix] *= content.sign; } // probabilities of the different types of possible splitting map<long,pair<double,vector<double> > > partonprob; double ptotal(0.); for(unsigned int iflav=0;iflav<ids.size();++iflav) { // only do each parton once if(partonprob.find(ids[iflav])!=partonprob.end()) continue; // particle data object tcPDPtr in = getParticleData(ids[iflav]); double psum(0.); vector<double> prob; for(unsigned int iz=0;iz<nz;++iz) { double ez=exp(yy); double wr=1.+ez; double zr=wr/ez; double wz=1./wr; double zz=wz*ez; double az=wz*zz*_alpha->value(sqr(max(wz*q,_kinCutoff))); // g -> q qbar if(ids[iflav]==ParticleID::g) { // calculate splitting function // SP as q is always less than forcedSplitScale, the pdf scale is fixed // pdfval = _pdf->xfx(theBeamData,in,sqr(q),lastx*zr); double pdfval=_pdf->xfx(theBeamData,in,sqr(_forcedSplitScale),lastx*zr); if(pdfval>0.) psum += pdfval*az*0.5*(sqr(zz)+sqr(wz)); } // q -> q g else { // calculate splitting function // SP as q is always less than forcedSplitScale, the pdf scale is fixed // pdfval = _pdf->xfx(theBeamData,in,sqr(q),lastx*zr); double pdfval=_pdf->xfx(theBeamData,in,sqr(_forcedSplitScale),lastx*zr); if(pdfval>0.) psum += pdfval*az*4./3.*(1.+sqr(wz))*zr; } if(psum>0.) prob.push_back(psum); yy+=dely; } if(psum>0.) partonprob[ids[iflav]] = make_pair(psum,prob); ptotal+=psum; } // select the flavour if(ptotal==0.) throw ShowerHandler::ExtraScatterVeto(); ptotal *= UseRandom::rnd(); map<long,pair<double,vector<double> > >::const_iterator pit; for(pit=partonprob.begin();pit!=partonprob.end();++pit) { if(pit->second.first>=ptotal) break; else ptotal -= pit->second.first; } if(pit==partonprob.end()) throw Exception() << "Can't select parton for forced backward evolution in " << "HwRemDecayer::forceSplit" << Exception::eventerror; // select z unsigned int iz=0; for(;iz<pit->second.second.size();++iz) { if(pit->second.second[iz]>ptotal) break; } if(iz==pit->second.second.size()) --iz; double ey=exp(ymin+dely*(float(iz+1)-UseRandom::rnd())); double z=ey/(1.+ey); Energy2 pt2=sqr((1.-z)*q)- z*sqr(_kinCutoff); // create the particle if(pit->first!=ParticleID::g) child=pit->first; PPtr parton = getParticleData(child)->produceParticle(); Energy2 emittedm2 = sqr(parton->dataPtr()->constituentMass()); // Now boost pcm and pf to z only frame Lorentz5Momentum p_ref = Lorentz5Momentum(ZERO, beam.vect()); Lorentz5Momentum n_ref = Lorentz5Momentum(ZERO, -beam.vect()); // generate phi and compute pt of branching double phi = Constants::twopi*UseRandom::rnd(); Energy pt=sqrt(pt2); Lorentz5Momentum qt = LorentzMomentum(pt*cos(phi), pt*sin(phi), ZERO, ZERO); Axis axis(p_ref.vect().unit()); if(axis.perp2()>0.) { LorentzRotation rot; double sinth(sqrt(sqr(axis.x())+sqr(axis.y()))); rot.setRotate(acos(axis.z()),Axis(-axis.y()/sinth,axis.x()/sinth,0.)); qt.transform(rot); } // compute alpha for previous particle Energy2 p_dot_n = p_ref*n_ref; double lastalpha = pf*n_ref/p_dot_n; Lorentz5Momentum qtout=qt; Energy2 qtout2=-qt*qt; double alphaout=(1.-z)/z*lastalpha; double betaout=0.5*(emittedm2+qtout2)/alphaout/p_dot_n; Lorentz5Momentum k=alphaout*p_ref+betaout*n_ref+qtout; k.rescaleMass(); parton->set5Momentum(k); pf+=k; lastQ=q; lastx/=z; p += parton->momentum(); thestep->addDecayProduct(rem,parton,false); return parton; } void HwRemDecayer::setRemMasses() const { // get the masses of the remnants Energy mrem[2]; Lorentz5Momentum ptotal,pnew[2]; vector<tRemPPtr> theprocessed; theprocessed.push_back(theRems.first); theprocessed.push_back(theRems.second); // one remnant in e.g. DIS if(!theprocessed[0]||!theprocessed[1]) { tRemPPtr rem = theprocessed[0] ? theprocessed[0] : theprocessed[1]; Lorentz5Momentum deltap(rem->momentum()); // find the diquark and momentum we still need in the energy tPPtr diquark; vector<PPtr> progenitors; for(unsigned int ix=0;ix<rem->children().size();++ix) { if(!DiquarkMatcher::Check(rem->children()[ix]->data())) { progenitors.push_back(rem->children()[ix]); deltap -= rem->children()[ix]->momentum(); } else diquark = rem->children()[ix]; } // now find the total momentum of the hadronic final-state to // reshuffle against // find the hadron for this remnant tPPtr hadron=rem; do hadron=hadron->parents()[0]; while(!hadron->parents().empty()); // find incoming parton to hard process from this hadron tPPtr hardin = generator()->currentEvent()->primaryCollision()->incoming().first==hadron ? generator()->currentEvent()->primarySubProcess()->incoming().first : generator()->currentEvent()->primarySubProcess()->incoming().second; tPPtr parent=hardin; vector<PPtr> tempprog; // find the outgoing particles emitted from the backward shower do { assert(!parent->parents().empty()); tPPtr newparent=parent->parents()[0]; if(newparent==hadron) break; for(unsigned int ix=0;ix<newparent->children().size();++ix) { if(newparent->children()[ix]!=parent) findChildren(newparent->children()[ix],tempprog); } parent=newparent; } while(parent!=hadron); // add to list of potential particles to reshuffle against in right order for(unsigned int ix=tempprog.size();ix>0;--ix) progenitors.push_back(tempprog[ix-1]); // final-state particles which are colour connected tColinePair lines = make_pair(hardin->colourLine(),hardin->antiColourLine()); vector<PPtr> others; for(ParticleVector::const_iterator cit = generator()->currentEvent()->primarySubProcess()->outgoing().begin(); cit!= generator()->currentEvent()->primarySubProcess()->outgoing().end();++cit) { // colour connected if(lines.first&&lines.first==(**cit).colourLine()) { findChildren(*cit,progenitors); continue; } // anticolour connected if(lines.second&&lines.second==(**cit).antiColourLine()) { findChildren(*cit,progenitors); continue; } // not connected for(unsigned int ix=0;ix<(**cit).children().size();++ix) others.push_back((**cit).children()[ix]); } // work out how much of the system needed for rescaling unsigned int iloc=0; Lorentz5Momentum psystem,ptotal; do { psystem+=progenitors[iloc]->momentum(); ptotal = psystem + deltap; ptotal.rescaleMass(); psystem.rescaleMass(); ++iloc; if(ptotal.mass() > psystem.mass() + diquark->mass() && psystem.mass()>1*MeV && DISRemnantOpt_<2 && ptotal.e() > 0.*GeV ) break; } while(iloc<progenitors.size()); if(ptotal.mass() > psystem.mass() + diquark->mass()) --iloc; if(iloc==progenitors.size()) { // try touching the lepton in dis as a last restort for(unsigned int ix=0;ix<others.size();++ix) { progenitors.push_back(others[ix]); psystem+=progenitors[iloc]->momentum(); ptotal = psystem + deltap; ptotal.rescaleMass(); psystem.rescaleMass(); ++iloc; } --iloc; if(ptotal.mass() > psystem.mass() + diquark->mass()) { if(DISRemnantOpt_==0||DISRemnantOpt_==2) Throw<Exception>() << "Warning had to adjust the momentum of the" << " non-colour connected" << " final-state, e.g. the scattered lepton in DIS" << Exception::warning; else throw Exception() << "Can't set remnant momentum without adjusting " << "the momentum of the" << " non-colour connected" << " final-state, e.g. the scattered lepton in DIS" << " vetoing event" << Exception::eventerror; } else { throw Exception() << "Can't put the remnant on-shell in HwRemDecayer::setRemMasses()" << Exception::eventerror; } } psystem.rescaleMass(); LorentzRotation R = Utilities::getBoostToCM(make_pair(psystem, deltap)); Energy pz = SimplePhaseSpace::getMagnitude(sqr(ptotal.mass()), psystem.mass(), diquark->mass()); LorentzRotation Rs(-(R*psystem).boostVector()); Rs.boost(0.0, 0.0, pz/sqrt(sqr(pz) + sqr(psystem.mass()))); Rs = Rs*R; // put remnant on shell deltap.transform(R); deltap.setMass(diquark->mass()); deltap.setE(sqrt(sqr(diquark->mass())+sqr(pz))); deltap.rescaleRho(); R.invert(); deltap.transform(R); Rs = R*Rs; // apply transformation to required particles to absorb recoil for(unsigned int ix=0;ix<=iloc;++ix) { progenitors[ix]->deepTransform(Rs); } diquark->set5Momentum(deltap); } // two remnants else { for(unsigned int ix=0;ix<2;++ix) { if(!theprocessed[ix]) continue; pnew[ix]=Lorentz5Momentum(); for(unsigned int iy=0;iy<theprocessed[ix]->children().size();++iy) { pnew[ix]+=theprocessed[ix]->children()[iy]->momentum(); } mrem[ix]=sqrt(pnew[ix].m2()); } // now find the remnant remnant cmf frame Lorentz5Momentum prem[2]={theprocessed[0]->momentum(), theprocessed[1]->momentum()}; ptotal=prem[0]+prem[1]; ptotal.rescaleMass(); // boost momenta to this frame if(ptotal.m()< (pnew[0].m()+pnew[1].m())) throw Exception() << "Not enough energy in both remnants in " << "HwRemDecayer::setRemMasses() " << Exception::eventerror; Boost boostv(-ptotal.boostVector()); ptotal.boost(boostv); for(unsigned int ix=0;ix<2;++ix) { prem[ix].boost(boostv); // set the masses and energies, prem[ix].setMass(mrem[ix]); prem[ix].setE(0.5/ptotal.m()*(sqr(ptotal.m())+sqr(mrem[ix])-sqr(mrem[1-ix]))); prem[ix].rescaleRho(); // boost back to the lab prem[ix].boost(-boostv); // set the momenta of the remnants theprocessed[ix]->set5Momentum(prem[ix]); } // boost the decay products Lorentz5Momentum ptemp; for(unsigned int ix=0;ix<2;++ix) { Boost btorest(-pnew[ix].boostVector()); Boost bfmrest( prem[ix].boostVector()); for(unsigned int iy=0;iy<theprocessed[ix]->children().size();++iy) { ptemp=theprocessed[ix]->children()[iy]->momentum(); ptemp.boost(btorest); ptemp.boost(bfmrest); theprocessed[ix]->children()[iy]->set5Momentum(ptemp); } } } } void HwRemDecayer::initSoftInteractions(Energy ptmin, InvEnergy2 beta){ ptmin_ = ptmin; beta_ = beta; } Energy HwRemDecayer::softPt() const { Energy2 pt2(ZERO); double xmin(0.0), xmax(1.0), x(0); if(beta_ == ZERO){ return UseRandom::rnd(0.0,(double)(ptmin_/GeV))*GeV; } if(beta_ < ZERO){ xmin = 1.0; xmax = exp( -beta_*sqr(ptmin_) ); }else{ xmin = exp( -beta_*sqr(ptmin_) ); xmax = 1.0; } x = UseRandom::rnd(xmin, xmax); pt2 = 1.0/beta_ * log(1/x); if( pt2 < ZERO || pt2 > sqr(ptmin_) ) throw Exception() << "HwRemDecayer::softPt generation of pt " << "outside allowed range [0," << ptmin_/GeV << "]." << Exception::runerror; return sqrt(pt2); } void HwRemDecayer::softKinematics(Lorentz5Momentum &r1, Lorentz5Momentum &r2, Lorentz5Momentum &g1, Lorentz5Momentum &g2) const { g1 = Lorentz5Momentum(); g2 = Lorentz5Momentum(); //All necessary variables for the two soft gluons Energy pt(softPt()), pz(ZERO); Energy2 pz2(ZERO); double phi(UseRandom::rnd(2.*Constants::pi)); double x_g1(0.0), x_g2(0.0); //Get the external momenta tcPPair beam(generator()->currentEventHandler()->currentCollision()->incoming()); Lorentz5Momentum P1(beam.first->momentum()), P2(beam.second->momentum()); if(dbg){ cerr << "new event --------------------\n" << *(beam.first) << *(softRems_.first) << "-------------------\n" << *(beam.second) << *(softRems_.second) << endl; } //Get x_g1 and x_g2 //first limits double xmin = sqr(ptmin_)/4.0/(P1+P2).m2(); double x1max = (r1.e()+abs(r1.z()))/(P1.e() + abs(P1.z())); double x2max = (r2.e()+abs(r2.z()))/(P2.e() + abs(P2.z())); //now generate according to 1/x x_g1 = xmin * exp(UseRandom::rnd(log(x1max/xmin))); x_g2 = xmin * exp(UseRandom::rnd(log(x2max/xmin))); if(dbg) cerr << x1max << " " << x_g1 << endl << x2max << " " << x_g2 << endl; Lorentz5Momentum ig1, ig2, cmf; ig1 = x_g1*P1; ig2 = x_g2*P2; ig1.setMass(mg_); ig2.setMass(mg_); ig1.rescaleEnergy(); ig2.rescaleEnergy(); cmf = ig1 + ig2; //boost vector from cmf to lab Boost boostv(cmf.boostVector()); //outgoing gluons in cmf g1.setMass(mg_); g2.setMass(mg_); g1.setX(pt*cos(phi)); g2.setX(-pt*cos(phi)); g1.setY(pt*sin(phi)); g2.setY(-pt*sin(phi)); pz2 = cmf.m2()/4 - sqr(mg_) - sqr(pt); if(pz2/GeV2 < 0.0){ if(dbg) cerr << "EXCEPTION not enough energy...." << endl; throw ExtraSoftScatterVeto(); } if(UseRandom::rndbool()) pz = sqrt(pz2); else pz = -sqrt(pz2); if(dbg) cerr << "pz has been calculated to: " << pz/GeV << endl; g1.setZ(pz); g2.setZ(-pz); g1.rescaleEnergy(); g2.rescaleEnergy(); if(dbg){ cerr << "check inv mass in cmf frame: " << (g1+g2).m()/GeV << " vs. lab frame: " << (ig1+ig2).m()/GeV << endl; } g1.boost(boostv); g2.boost(boostv); //recalc the remnant momenta Lorentz5Momentum r1old(r1), r2old(r2); r1 -= ig1; r2 -= ig2; try{ reShuffle(r1, r2, r1old.m(), r2old.m()); }catch(ExtraSoftScatterVeto){ r1 = r1old; r2 = r2old; throw ExtraSoftScatterVeto(); } if(dbg){ cerr << "remnant 1,2 momenta: " << r1/GeV << "--" << r2/GeV << endl; cerr << "remnant 1,2 masses: " << r1.m()/GeV << " " << r2.m()/GeV << endl; cerr << "check momenta in the lab..." << (-r1old-r2old+r1+r2+g1+g2)/GeV << endl; } } void HwRemDecayer::doSoftInteractions(unsigned int N) { if(N == 0) return; if(!softRems_.first || !softRems_.second) throw Exception() << "HwRemDecayer::doSoftInteractions: no " << "Remnants available." << Exception::runerror; if( ptmin_ == -1.*GeV ) throw Exception() << "HwRemDecayer::doSoftInteractions: init " << "code has not been called! call initSoftInteractions." << Exception::runerror; Lorentz5Momentum g1, g2; Lorentz5Momentum r1(softRems_.first->momentum()), r2(softRems_.second->momentum()); unsigned int tries(1), i(0); for(i=0; i<N; i++){ //check how often this scattering has been regenerated if(tries > maxtrySoft_) break; if(dbg){ cerr << "new try \n" << *softRems_.first << *softRems_.second << endl; } try{ softKinematics(r1, r2, g1, g2); }catch(ExtraSoftScatterVeto){ tries++; i--; continue; } PPair oldrems = softRems_; PPair gluons = make_pair(addParticle(softRems_.first, ParticleID::g, g1), addParticle(softRems_.second, ParticleID::g, g2)); //now reset the remnants with the new ones softRems_.first = addParticle(softRems_.first, softRems_.first->id(), r1); softRems_.second = addParticle(softRems_.second, softRems_.second->id(), r2); //do the colour connections pair<bool, bool> anti = make_pair(oldrems.first->hasAntiColour(), oldrems.second->hasAntiColour()); ColinePtr cl1 = new_ptr(ColourLine()); ColinePtr cl2 = new_ptr(ColourLine()); if( UseRandom::rnd() < colourDisrupt_ ){//this is the member variable, i.e. SOFT colour disruption //connect the remnants independent of the gluons oldrems.first->colourLine(anti.first)->addColoured(softRems_.first, anti.first); oldrems.second->colourLine(anti.second)->addColoured(softRems_.second, anti.second); //connect the gluons to each other cl1->addColoured(gluons.first); cl1->addAntiColoured(gluons.second); cl2->addColoured(gluons.second); cl2->addAntiColoured(gluons.first); }else{ //connect the remnants to the gluons oldrems.first->colourLine(anti.first)->addColoured(gluons.first, anti.first); oldrems.second->colourLine(anti.second)->addColoured(gluons.second, anti.second); //and the remaining colour line to the final remnant cl1->addColoured(softRems_.first, anti.first); cl1->addColoured(gluons.first, !anti.first); cl2->addColoured(softRems_.second, anti.second); cl2->addColoured(gluons.second, !anti.second); } //reset counter tries = 1; } if(dbg) cerr << "generated " << i << "th soft scatters\n"; } void HwRemDecayer::finalize(double colourDisrupt, unsigned int softInt){ PPair diquarks; //Do the final Rem->Diquark or Rem->quark "decay" if(theRems.first) { diquarks.first = finalSplit(theRems.first, theContent.first.RemID(), theUsed.first); theMaps.first.push_back(make_pair(diquarks.first, tPPtr())); } if(theRems.second) { diquarks.second = finalSplit(theRems.second, theContent.second.RemID(), theUsed.second); theMaps.second.push_back(make_pair(diquarks.second, tPPtr())); } setRemMasses(); if(theRems.first) { fixColours(theMaps.first, theanti.first, colourDisrupt); if(theContent.first.hadron->id()==ParticleID::pomeron&& pomeronStructure_==0) fixColours(theMaps.first, !theanti.first, colourDisrupt); } if(theRems.second) { fixColours(theMaps.second, theanti.second, colourDisrupt); if(theContent.second.hadron->id()==ParticleID::pomeron&& pomeronStructure_==0) fixColours(theMaps.second, !theanti.second, colourDisrupt); } if( !theRems.first || !theRems.second ) return; //stop here if we don't have two remnants softRems_ = diquarks; doSoftInteractions(softInt); } HwRemDecayer::HadronContent HwRemDecayer::getHadronContent(tcPPtr hadron) const { HadronContent hc; hc.hadron = hadron->dataPtr(); long id(hadron->id()); // baryon if(BaryonMatcher::Check(hadron->data())) { hc.sign = id < 0? -1: 1; hc.flav.push_back((id = abs(id)/10)%10); hc.flav.push_back((id /= 10)%10); hc.flav.push_back((id /= 10)%10); hc.extracted = -1; } else if(hadron->data().id()==ParticleID::gamma || (hadron->data().id()==ParticleID::pomeron && pomeronStructure_==1)) { hc.sign = 1; for(int ix=1;ix<6;++ix) { hc.flav.push_back( ix); hc.flav.push_back(-ix); } } else if(hadron->data().id()==ParticleID::pomeron ) { hc.sign = 1; hc.flav.push_back(ParticleID::g); hc.flav.push_back(ParticleID::g); } else if(hadron->data().id()==ParticleID::reggeon ) { hc.sign = 1; for(int ix=1;ix<3;++ix) { hc.flav.push_back( ix); hc.flav.push_back(-ix); } } hc.pomeronStructure = pomeronStructure_; return hc; } long HwRemDecayer::HadronContent::RemID() const{ if(extracted == -1) throw Exception() << "Try to build a Diquark id without " << "having extracted something in " << "HwRemDecayer::RemID(...)" << Exception::runerror; //the hadron was a meson or photon if(flav.size()==2) return sign*flav[(extracted+1)%2]; long remId; int id1(sign*flav[(extracted+1)%3]), id2(sign*flav[(extracted+2)%3]), sign(0), spin(0); if (abs(id1) > abs(id2)) swap(id1, id2); sign = (id1 < 0) ? -1 : 1; // Needed for the spin 0/1 part remId = id2*1000+id1*100; // Now decide if we have spin 0 diquark or spin 1 diquark if(id1 == id2) spin = 3; // spin 1 else spin = 1; // otherwise spin 0 remId += sign*spin; return remId; } tPPtr HwRemDecayer::addParticle(tcPPtr parent, long id, Lorentz5Momentum p) const { PPtr newp = new_ptr(Particle(getParticleData(id))); newp->set5Momentum(p); // Add the new remnant to the step, but don't do colour connections thestep->addDecayProduct(parent,newp,false); return newp; } void HwRemDecayer::findChildren(tPPtr part,vector<PPtr> & particles) const { if(part->children().empty()) particles.push_back(part); else { for(unsigned int ix=0;ix<part->children().size();++ix) findChildren(part->children()[ix],particles); } } ParticleVector HwRemDecayer::decay(const DecayMode &, const Particle &, Step &) const { throw Exception() << "HwRemDecayer::decay(...) " << "must not be called explicitely." << Exception::runerror; } void HwRemDecayer::persistentOutput(PersistentOStream & os) const { os << ounit(_kinCutoff, GeV) << _range << _zbin << _ybin << _nbinmax << _alpha << DISRemnantOpt_ << maxtrySoft_ << colourDisrupt_ << pomeronStructure_ << ounit(mg_,GeV); } void HwRemDecayer::persistentInput(PersistentIStream & is, int) { is >> iunit(_kinCutoff, GeV) >> _range >> _zbin >> _ybin >> _nbinmax >> _alpha >> DISRemnantOpt_ >> maxtrySoft_ >> colourDisrupt_ >> pomeronStructure_ >> iunit(mg_,GeV); } ClassDescription<HwRemDecayer> HwRemDecayer::initHwRemDecayer; // Definition of the static class description member. void HwRemDecayer::Init() { static ClassDocumentation<HwRemDecayer> documentation ("The HwRemDecayer class decays the remnant for Herwig++"); static Parameter<HwRemDecayer,double> interfaceZBinSize ("ZBinSize", "The size of the vbins in z for the interpolation of the splitting function.", &HwRemDecayer::_zbin, 0.05, 0.001, 0.1, false, false, Interface::limited); static Parameter<HwRemDecayer,int> interfaceMaxBin ("MaxBin", "Maximum number of z bins", &HwRemDecayer::_nbinmax, 100, 10, 1000, false, false, Interface::limited); static Reference<HwRemDecayer,ShowerAlpha> interfaceAlphaS ("AlphaS", "Pointer to object to calculate the strong coupling", &HwRemDecayer::_alpha, false, false, true, false, false); static Parameter<HwRemDecayer,Energy> interfaceKinCutoff ("KinCutoff", "Parameter kinCutoff used to constrain qtilde", &HwRemDecayer::_kinCutoff, GeV, 0.75*GeV, 0.5*GeV, 10.0*GeV, false, false, Interface::limited); static Parameter<HwRemDecayer,double> interfaceEmissionRange ("EmissionRange", "Factor above the minimum possible value in which the forced splitting is allowed.", &HwRemDecayer::_range, 1.1, 1.0, 10.0, false, false, Interface::limited); static Switch<HwRemDecayer,unsigned int> interfaceDISRemnantOption ("DISRemnantOption", "Options for the treatment of the remnant in DIS", &HwRemDecayer::DISRemnantOpt_, 0, false, false); static SwitchOption interfaceDISRemnantOptionDefault (interfaceDISRemnantOption, "Default", "Use the minimum number of particles needed to take the recoil" " and allow the lepton to be used if needed", 0); static SwitchOption interfaceDISRemnantOptionNoLepton (interfaceDISRemnantOption, "NoLepton", "Use the minimum number of particles needed to take the recoil but" " veto events where the lepton kinematics would need to be altered", 1); static SwitchOption interfaceDISRemnantOptionAllParticles (interfaceDISRemnantOption, "AllParticles", "Use all particles in the colour connected system to take the recoil" " and use the lepton if needed.", 2); static SwitchOption interfaceDISRemnantOptionAllParticlesNoLepton (interfaceDISRemnantOption, "AllParticlesNoLepton", "Use all the particles in the colour connected system to take the" " recoil but don't use the lepton.", 3); static Parameter<HwRemDecayer,unsigned int> interfaceMaxTrySoft ("MaxTrySoft", "The maximum number of regeneration attempts for an additional soft scattering", &HwRemDecayer::maxtrySoft_, 10, 0, 100, false, false, Interface::limited); static Parameter<HwRemDecayer,double> interfacecolourDisrupt ("colourDisrupt", "Fraction of connections to additional soft subprocesses, which are colour disrupted.", &HwRemDecayer::colourDisrupt_, 1.0, 0.0, 1.0, false, false, Interface::limited); static Switch<HwRemDecayer,unsigned int> interfacePomeronStructure ("PomeronStructure", "Option for the treatment of the valance structure of the pomeron", &HwRemDecayer::pomeronStructure_, 0, false, false); static SwitchOption interfacePomeronStructureGluon (interfacePomeronStructure, "Gluon", "Assume the pomeron is a two gluon state", 0); static SwitchOption interfacePomeronStructureQQBar (interfacePomeronStructure, "QQBar", "Assumne the pomeron is q qbar as for the photon," " this option is not recommended and is provide for compatiblity with POMWIG", 1); } bool HwRemDecayer::canHandle(tcPDPtr particle, tcPDPtr parton) const { if(!(StandardQCDPartonMatcher::Check(*parton) || parton->id()==ParticleID::gamma)) return false; return HadronMatcher::Check(*particle) || particle->id()==ParticleID::gamma || particle->id()==ParticleID::pomeron || particle->id()==ParticleID::reggeon; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/mrst/�����������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464205�016363� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/mrst/2008/������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464205�016754� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/mrst/2008/mrstMCal.dat������������������������������������������������������0000644�0001750�0001750�00000430760�11754474775�021215� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 0.02318 0.01029 12.04329 0.81780 0.00000 0.00000 0.42849 0.81780 0.02329 0.01039 15.58813 0.85388 0.00000 0.00000 0.46675 0.85388 0.02345 0.01055 21.84668 0.92632 0.00000 0.00000 0.54248 0.92632 0.02357 0.01067 27.14104 0.99538 0.07033 0.00000 0.61396 0.99538 0.02370 0.01079 33.48524 1.08469 0.16572 0.00000 0.70583 1.08469 0.02381 0.01090 39.63136 1.17679 0.26305 0.00000 0.80012 1.17679 0.02392 0.01101 46.13978 1.27938 0.37064 0.00000 0.90481 1.27938 0.02404 0.01112 53.73338 1.40480 0.50132 0.00000 1.03245 1.40480 0.02414 0.01122 60.92623 1.52858 0.62964 0.00000 1.15814 1.52858 0.02424 0.01132 68.40675 1.66189 0.76727 0.00000 1.29326 1.66188 0.02432 0.01140 74.72301 1.77777 0.88655 0.00000 1.41056 1.77776 0.02449 0.01157 89.35409 2.05650 1.17243 0.00000 1.69230 2.05650 0.02463 0.01171 102.92217 2.33352 1.45547 0.27535 1.97185 2.33352 0.02479 0.01187 119.50425 2.68593 1.81445 0.64518 2.32701 2.68593 0.02496 0.01204 138.36974 3.10266 2.23784 1.07955 2.74654 3.10266 0.02511 0.01220 156.93936 3.52759 2.66866 1.52007 3.17394 3.52759 0.02526 0.01235 177.09790 4.00385 3.15071 2.01167 3.65262 4.00384 0.02538 0.01248 194.92059 4.43679 3.58836 2.45709 4.08754 4.43679 0.02553 0.01264 217.87741 5.00964 4.16681 3.04476 4.66273 5.00963 0.02567 0.01277 239.41920 5.56152 4.72356 3.60950 5.21666 5.56152 0.02579 0.01290 260.19971 6.10623 5.27264 4.16579 5.76320 6.10622 0.02594 0.01306 287.98056 6.85208 6.02396 4.92608 6.51134 6.85208 0.02609 0.01322 315.54398 7.61070 6.78762 5.69803 7.27207 7.61070 0.02623 0.01336 342.63889 8.37337 7.55493 6.47299 8.03668 8.37336 0.02637 0.01350 370.94839 9.18712 8.37327 7.29884 8.85236 9.18712 0.02650 0.01365 399.84375 10.03466 9.22521 8.15803 9.70174 10.03466 0.02663 0.01378 428.27185 10.88434 10.07902 9.01860 10.55315 10.88434 0.02675 0.01391 456.01035 11.72780 10.92632 9.87219 11.39821 11.72780 0.02687 0.01404 484.82175 12.61845 11.82077 10.77289 12.29045 12.61845 0.02700 0.01416 514.06232 13.53685 12.74287 11.70105 13.21040 13.53685 0.02711 0.01428 542.68726 14.44949 13.65899 12.62288 14.12449 14.44949 0.02722 0.01440 570.52130 15.34950 14.56226 13.53150 15.02587 15.34950 0.02733 0.01452 599.31189 16.29286 15.50888 14.48345 15.97059 16.29286 0.02744 0.01463 628.45270 17.26045 16.47964 15.45942 16.93951 17.26045 0.02755 0.01474 656.90033 18.21682 17.43902 16.42373 17.89714 18.21682 0.02765 0.01485 684.48749 19.15517 18.38020 17.36954 18.83667 19.15517 0.02775 0.01495 712.97314 20.13505 19.36292 18.35691 19.81774 20.13505 0.02595 0.01294 10.58237 0.69839 0.00000 0.00000 0.36649 0.69839 0.02608 0.01307 13.59161 0.73002 0.00000 0.00000 0.39998 0.73002 0.02627 0.01327 18.83139 0.79270 0.00000 0.00000 0.46546 0.79270 0.02642 0.01342 23.20221 0.85174 0.06012 0.00000 0.52657 0.85174 0.02657 0.01358 28.38061 0.92732 0.14091 0.00000 0.60434 0.92732 0.02671 0.01372 33.34556 1.00455 0.22262 0.00000 0.68344 1.00455 0.02684 0.01385 38.55524 1.08989 0.31224 0.00000 0.77056 1.08989 0.02698 0.01400 44.57877 1.19339 0.42024 0.00000 0.87595 1.19339 0.02711 0.01413 50.23621 1.29477 0.52551 0.00000 0.97896 1.29478 0.02723 0.01425 56.07542 1.40323 0.63767 0.00000 1.08896 1.40323 0.02732 0.01435 60.97321 1.49696 0.73432 0.00000 1.18391 1.49696 0.02753 0.01456 72.21687 1.72064 0.96411 0.00000 1.41014 1.72064 0.02770 0.01475 82.51199 1.94078 1.18940 0.21958 1.63244 1.94079 0.02790 0.01495 94.95674 2.21821 1.47245 0.51182 1.91221 2.21821 0.02811 0.01517 108.95415 2.54303 1.80296 0.85162 2.23940 2.54303 0.02829 0.01536 122.58259 2.87112 2.13608 1.19294 2.56959 2.87112 0.02848 0.01556 137.22606 3.23558 2.50549 1.57044 2.93612 3.23558 0.02864 0.01572 150.05328 3.56424 2.83819 1.90970 3.26647 3.56425 0.02883 0.01592 166.42339 3.99565 3.27437 2.35368 3.69986 3.99565 0.02900 0.01609 181.64124 4.40792 3.69079 2.77685 4.11386 4.40792 0.02916 0.01625 196.19872 4.81189 4.09851 3.19066 4.51940 4.81190 0.02935 0.01646 215.48514 5.36075 4.65203 3.75177 5.07020 5.36076 0.02954 0.01665 234.43675 5.91439 5.20998 4.31672 5.62564 5.91441 0.02972 0.01683 252.89949 6.46672 5.76627 4.87946 6.17962 6.46673 0.02989 0.01702 272.02420 7.05171 6.35517 5.47470 6.76623 7.05172 0.03007 0.01720 291.37924 7.65657 6.96380 6.08945 7.37267 7.65659 0.03023 0.01737 310.26709 8.25879 7.56953 6.70089 7.97635 8.25880 0.03039 0.01753 328.55746 8.85275 8.16677 7.30343 8.57167 8.85277 0.03055 0.01769 347.41473 9.47601 8.79327 7.93521 9.19628 9.47603 0.03071 0.01785 366.41357 10.11473 9.43515 8.58221 9.83632 10.11475 0.03086 0.01800 384.88226 10.74570 10.06909 9.22096 10.46852 10.74572 0.03100 0.01815 402.72040 11.36443 10.69060 9.84698 11.08841 11.36446 0.03115 0.01829 421.05347 12.00947 11.33842 10.49929 11.73461 12.00950 0.03129 0.01844 439.48856 12.66747 11.99913 11.16439 12.39374 12.66750 0.03143 0.01858 457.37341 13.31446 12.64868 11.81810 13.04180 13.31449 0.03156 0.01871 474.61447 13.94612 13.28275 12.45608 13.67446 13.94615 0.03170 0.01885 492.31384 14.60255 13.94161 13.11885 14.33190 14.60259 0.02897 0.01601 9.31363 0.59974 0.00000 0.00000 0.31519 0.59974 0.02911 0.01617 11.86438 0.62752 0.00000 0.00000 0.34455 0.62752 0.02934 0.01641 16.24365 0.68182 0.00000 0.00000 0.40125 0.68182 0.02951 0.01660 19.84529 0.73234 0.05143 0.00000 0.45352 0.73234 0.02970 0.01680 24.06453 0.79635 0.11989 0.00000 0.51939 0.79635 0.02986 0.01697 28.06883 0.86114 0.18853 0.00000 0.58578 0.86114 0.03001 0.01714 32.23323 0.93216 0.26321 0.00000 0.65833 0.93217 0.03018 0.01732 37.00637 1.01762 0.35252 0.00000 0.74539 1.01762 0.03033 0.01748 41.45318 1.10072 0.43895 0.00000 0.82987 1.10072 0.03047 0.01764 46.00996 1.18904 0.53044 0.00000 0.91951 1.18904 0.03059 0.01776 49.80827 1.26494 0.60883 0.00000 0.99644 1.26494 0.03083 0.01803 58.45507 1.44468 0.79380 0.00000 1.17836 1.44469 0.03105 0.01825 66.27811 1.61996 0.97348 0.17547 1.35547 1.61996 0.03128 0.01851 75.64002 1.83889 1.19723 0.40698 1.57640 1.83890 0.03153 0.01878 86.06147 2.09288 1.45608 0.67368 1.83241 2.09289 0.03176 0.01902 96.10950 2.34720 1.71469 0.93924 2.08851 2.34721 0.03199 0.01926 106.80801 2.62743 1.99916 1.23054 2.37050 2.62744 0.03218 0.01946 116.10349 2.87831 2.25349 1.49042 2.62282 2.87833 0.03241 0.01971 127.87103 3.20527 2.58454 1.82805 2.95148 3.20529 0.03262 0.01993 138.72200 3.51550 2.89831 2.14753 3.26317 3.51552 0.03281 0.02013 149.02768 3.81756 3.20356 2.45792 3.56656 3.81757 0.03306 0.02038 162.57642 4.22517 3.61515 2.87593 3.97582 4.22519 0.03329 0.02062 175.78175 4.63339 4.02705 3.29373 4.38557 4.63341 0.03351 0.02084 188.54976 5.03795 4.43499 3.70712 4.79153 5.03797 0.03373 0.02107 201.68074 5.46375 4.86413 4.14161 5.21871 5.46378 0.03395 0.02129 214.87666 5.90132 5.30491 4.58756 5.65762 5.90135 0.03415 0.02150 227.66812 6.33444 5.74103 5.02850 6.09198 6.33448 0.03435 0.02170 239.97827 6.75934 6.16872 5.46066 6.51803 6.75937 0.03455 0.02190 252.59341 7.20286 6.61501 5.91141 6.96271 7.20290 0.03475 0.02210 265.22827 7.65508 7.06992 6.37063 7.41604 7.65512 0.03494 0.02229 277.44128 8.09964 7.51702 6.82179 7.86165 8.09968 0.03512 0.02247 289.17380 8.53357 7.95332 7.26189 8.29657 8.53362 0.03530 0.02265 301.17004 8.98397 8.40609 7.71845 8.74795 8.98402 0.03549 0.02283 313.17038 9.44138 8.86581 8.18188 9.20632 9.44144 0.03566 0.02300 324.75513 9.88927 9.31588 8.63545 9.65511 9.88932 0.03583 0.02317 335.87042 10.32480 9.75347 9.07633 10.09149 10.32485 0.03600 0.02333 347.22900 10.77566 10.20640 9.53256 10.54322 10.77573 0.03099 0.01817 8.63945 0.54876 0.00000 0.00000 0.28865 0.54876 0.03116 0.01835 10.94826 0.57450 0.00000 0.00000 0.31583 0.57450 0.03142 0.01863 14.87735 0.62439 0.00000 0.00000 0.36789 0.62439 0.03161 0.01884 18.08012 0.67042 0.04686 0.00000 0.41553 0.67043 0.03182 0.01907 21.80567 0.72838 0.10888 0.00000 0.47517 0.72839 0.03200 0.01926 25.31891 0.78671 0.17070 0.00000 0.53495 0.78671 0.03218 0.01946 28.95226 0.85032 0.23765 0.00000 0.59995 0.85032 0.03237 0.01966 33.09398 0.92647 0.31732 0.00000 0.67756 0.92648 0.03253 0.01984 36.93293 1.00019 0.39407 0.00000 0.75254 1.00020 0.03270 0.02002 40.84906 1.07822 0.47499 0.00000 0.83176 1.07823 0.03283 0.02016 44.10057 1.14504 0.54408 0.00000 0.89953 1.14505 0.03311 0.02046 51.46362 1.30254 0.70634 0.00000 1.05900 1.30255 0.03335 0.02072 58.07458 1.45524 0.86306 0.15323 1.21337 1.45525 0.03362 0.02101 65.93589 1.64492 1.05712 0.35432 1.40486 1.64494 0.03391 0.02131 74.62984 1.86371 1.28034 0.58465 1.62549 1.86373 0.03417 0.02159 82.96062 2.08161 1.50215 0.81273 1.84501 2.08163 0.03444 0.02186 91.77975 2.32049 1.74489 1.06165 2.08549 2.32051 0.03466 0.02209 99.40285 2.53340 1.96093 1.28271 2.29969 2.53342 0.03493 0.02237 109.00412 2.80963 2.24088 1.56862 2.57746 2.80966 0.03517 0.02262 117.81219 3.07055 2.50503 1.83793 2.83972 3.07058 0.03539 0.02285 126.13960 3.32360 2.76099 2.09854 3.09398 3.32364 0.03568 0.02313 137.03427 3.66364 3.10465 2.44799 3.43552 3.66368 0.03595 0.02341 147.59799 4.00267 3.44702 2.79570 3.77593 4.00271 0.03620 0.02366 157.76317 4.33727 3.78471 3.13831 4.11181 4.33732 0.03646 0.02392 168.16980 4.68807 4.13854 3.49698 4.46386 4.68812 0.03671 0.02417 178.58133 5.04719 4.50058 3.86369 4.82419 5.04724 0.03696 0.02441 188.63106 5.40137 4.85749 4.22495 5.17950 5.40143 0.03719 0.02463 198.26465 5.74767 5.20633 4.57784 5.52685 5.74773 0.03742 0.02486 208.09923 6.10798 5.56916 4.94468 5.88820 6.10804 0.03766 0.02509 217.91235 6.47418 5.93782 5.31724 6.25542 6.47425 0.03788 0.02530 227.36395 6.83311 6.29905 5.68213 6.61530 6.83318 0.03809 0.02550 236.41277 7.18245 6.65054 6.03706 6.96553 7.18253 0.03831 0.02571 245.63503 7.54407 7.01431 6.40426 7.32804 7.54415 0.03853 0.02591 254.83009 7.91030 7.38266 6.77595 7.69515 7.91039 0.03873 0.02611 263.67911 8.26798 7.74233 7.13878 8.05365 8.26808 0.03893 0.02629 272.14435 8.61494 8.09116 7.49058 8.40138 8.61504 0.03913 0.02648 280.76993 8.97327 8.45136 7.85376 8.76048 8.97337 0.03257 0.01988 8.18898 0.51525 0.00000 0.00000 0.27120 0.51525 0.03275 0.02008 10.33674 0.53964 0.00000 0.00000 0.29693 0.53964 0.03303 0.02039 13.96778 0.58658 0.00000 0.00000 0.34590 0.58658 0.03324 0.02062 16.90793 0.62964 0.04383 0.00000 0.39046 0.62965 0.03347 0.02087 20.30992 0.68360 0.10158 0.00000 0.44599 0.68360 0.03367 0.02109 23.50268 0.73765 0.15891 0.00000 0.50140 0.73766 0.03387 0.02130 26.79072 0.79638 0.22076 0.00000 0.56143 0.79639 0.03408 0.02152 30.52337 0.86644 0.29411 0.00000 0.63284 0.86645 0.03426 0.02172 33.96984 0.93402 0.36452 0.00000 0.70160 0.93403 0.03444 0.02191 37.47357 1.00533 0.43854 0.00000 0.77403 1.00534 0.03459 0.02207 40.37399 1.06624 0.50157 0.00000 0.83582 1.06625 0.03490 0.02240 46.91564 1.20930 0.64908 0.00000 0.98072 1.20931 0.03517 0.02268 52.75471 1.34739 0.79092 0.13883 1.12036 1.34741 0.03547 0.02300 59.66427 1.51821 0.96584 0.32029 1.29288 1.51823 0.03579 0.02333 67.26715 1.71440 1.16616 0.52723 1.49077 1.71442 0.03608 0.02363 74.51758 1.90898 1.36440 0.73130 1.68687 1.90900 0.03638 0.02393 82.15865 2.12148 1.58051 0.95316 1.90086 2.12151 0.03663 0.02418 88.73681 2.31023 1.77219 1.14950 2.09083 2.31027 0.03693 0.02449 96.98878 2.55429 2.01973 1.40258 2.33632 2.55433 0.03720 0.02476 104.52840 2.78403 2.25248 1.64013 2.56731 2.78407 0.03745 0.02501 111.63087 3.00616 2.47733 1.86931 2.79056 3.00621 0.03777 0.02532 120.88695 3.30368 2.77824 2.17560 3.08948 3.30374 0.03808 0.02562 129.82481 3.59930 3.07698 2.47931 3.38639 3.59936 0.03837 0.02590 138.39249 3.89013 3.37069 2.77759 3.67841 3.89019 0.03866 0.02618 147.13147 4.19410 3.67750 3.08890 3.98355 4.19417 0.03894 0.02645 155.84300 4.50436 3.99049 3.40623 4.29494 4.50444 0.03922 0.02671 164.22281 4.80950 4.29818 3.71796 4.60113 4.80958 0.03948 0.02696 172.22986 5.10705 4.59811 4.02165 4.89967 5.10714 0.03975 0.02721 180.37828 5.41586 4.90927 4.33654 5.20945 5.41595 0.04001 0.02745 188.48390 5.72894 5.22464 4.65554 5.52347 5.72904 0.04026 0.02769 196.26779 6.03506 5.53292 4.96722 5.83049 6.03517 0.04051 0.02791 203.69887 6.33234 5.83221 5.26970 6.12859 6.33245 0.04075 0.02814 211.25194 6.63940 6.14128 5.58195 6.43648 6.63952 0.04100 0.02836 218.76202 6.94970 6.45355 5.89733 6.74760 6.94982 0.04123 0.02857 225.97054 7.25212 6.75784 6.20455 7.05079 7.25225 0.04146 0.02877 232.84923 7.54491 7.05237 6.50185 7.34430 7.54504 0.04169 0.02898 239.84103 7.84670 7.35592 6.80817 7.64681 7.84684 0.03383 0.02130 7.85717 0.49100 0.00000 0.00000 0.25856 0.49100 0.03403 0.02151 9.88692 0.51438 0.00000 0.00000 0.28322 0.51439 0.03433 0.02184 13.30073 0.55917 0.00000 0.00000 0.32993 0.55918 0.03455 0.02208 16.05050 0.60006 0.04161 0.00000 0.37224 0.60007 0.03480 0.02235 19.21909 0.65109 0.09625 0.00000 0.42477 0.65110 0.03501 0.02258 22.18172 0.70205 0.15031 0.00000 0.47701 0.70206 0.03522 0.02281 25.22282 0.75725 0.20847 0.00000 0.53343 0.75726 0.03545 0.02305 28.66412 0.82289 0.27724 0.00000 0.60037 0.82291 0.03565 0.02326 31.83217 0.88606 0.34309 0.00000 0.66464 0.88607 0.03584 0.02347 35.04438 0.95255 0.41215 0.00000 0.73219 0.95256 0.03600 0.02363 37.69738 1.00922 0.47084 0.00000 0.78970 1.00924 0.03633 0.02398 43.66268 1.14197 0.60781 0.00000 0.92419 1.14198 0.03663 0.02429 48.96327 1.26967 0.73908 0.12858 1.05337 1.26970 0.03696 0.02463 55.21236 1.42715 0.90044 0.29613 1.21246 1.42718 0.03730 0.02498 62.06223 1.60740 1.08463 0.48656 1.39433 1.60744 0.03762 0.02530 68.57095 1.78563 1.26632 0.67378 1.57399 1.78566 0.03794 0.02563 75.40720 1.97970 1.46382 0.87671 1.76948 1.97975 0.03821 0.02590 81.27468 2.15164 1.63853 1.05583 1.94256 2.15168 0.03854 0.02622 88.61304 2.37338 1.86357 1.28610 2.16566 2.37343 0.03884 0.02651 95.29766 2.58158 2.07463 1.50170 2.37504 2.58163 0.03911 0.02678 101.57774 2.78242 2.27805 1.70921 2.57695 2.78248 0.03946 0.02712 109.73849 3.05077 2.54962 1.98586 2.84663 3.05084 0.03979 0.02743 117.59455 3.31672 2.81853 2.25946 3.11380 3.31679 0.04011 0.02773 125.10381 3.57773 3.08228 2.52753 3.37594 3.57781 0.04043 0.02803 132.74242 3.84993 3.35717 2.80668 3.64925 3.85002 0.04074 0.02833 140.33675 4.12715 3.63697 3.09058 3.92754 4.12724 0.04104 0.02861 147.62332 4.39921 3.91146 3.36888 4.20060 4.39931 0.04133 0.02887 154.56932 4.66401 4.17850 3.63948 4.46632 4.66411 0.04162 0.02914 161.62167 4.93830 4.45503 3.91953 4.74153 4.93841 0.04191 0.02940 168.62108 5.21587 4.73478 4.20270 5.02001 5.21600 0.04219 0.02965 175.32811 5.48681 5.00776 4.47890 5.29178 5.48694 0.04245 0.02989 181.71785 5.74947 5.27233 4.74649 5.55523 5.74961 0.04272 0.03013 188.19965 6.02035 5.54512 5.02228 5.82690 6.02049 0.04299 0.03036 194.63159 6.29365 5.82029 5.30039 6.10097 6.29381 0.04325 0.03059 200.79346 6.55962 6.08802 5.57089 6.36766 6.55978 0.04350 0.03081 206.66266 6.81673 6.34680 5.83228 6.62546 6.81690 0.04375 0.03103 212.61777 7.08139 6.61312 6.10121 6.89081 7.08156 0.03829 0.02634 6.91040 0.42350 0.00000 0.00000 0.22337 0.42350 0.03854 0.02660 8.60487 0.44405 0.00000 0.00000 0.24500 0.44406 0.03892 0.02701 11.40688 0.48272 0.00000 0.00000 0.28529 0.48273 0.03921 0.02732 13.62531 0.51747 0.03534 0.00000 0.32124 0.51748 0.03953 0.02764 16.14729 0.56029 0.08123 0.00000 0.36532 0.56030 0.03980 0.02793 18.47678 0.60256 0.12613 0.00000 0.40868 0.60258 0.04008 0.02821 20.84266 0.64790 0.17399 0.00000 0.45506 0.64792 0.04037 0.02851 23.49220 0.70132 0.23006 0.00000 0.50957 0.70134 0.04063 0.02877 25.90787 0.75226 0.28328 0.00000 0.56145 0.75229 0.04088 0.02903 28.33629 0.80548 0.33868 0.00000 0.61557 0.80552 0.04108 0.02923 30.32707 0.85054 0.38545 0.00000 0.66133 0.85058 0.04152 0.02966 34.75890 0.95514 0.49363 0.00000 0.76741 0.95519 0.04191 0.03004 38.63858 1.05469 0.59620 0.10073 0.86819 1.05474 0.04234 0.03046 43.15744 1.17617 0.72098 0.23070 0.99104 1.17623 0.04280 0.03090 48.04951 1.31375 0.86189 0.37684 1.12998 1.31381 0.04322 0.03130 52.64354 1.44840 0.99949 0.51907 1.26585 1.44848 0.04365 0.03170 57.41608 1.59367 1.14766 0.67178 1.41231 1.59376 0.04401 0.03203 61.47215 1.72129 1.27763 0.80545 1.54090 1.72139 0.04446 0.03243 66.49579 1.88453 1.44367 0.97587 1.70529 1.88463 0.04485 0.03279 71.02716 2.03653 1.59810 1.13410 1.85829 2.03665 0.04522 0.03312 75.24726 2.18210 1.74586 1.28527 2.00476 2.18223 0.04569 0.03353 80.68009 2.37509 1.94157 1.48524 2.19887 2.37523 0.04614 0.03393 85.85830 2.56477 2.13376 1.68136 2.38958 2.56492 0.04656 0.03429 90.76248 2.74953 2.32084 1.87206 2.57529 2.74969 0.04700 0.03466 95.70743 2.94081 2.51441 2.06918 2.76752 2.94099 0.04742 0.03503 100.58136 3.13426 2.71006 2.26825 2.96187 3.13445 0.04783 0.03537 105.21941 3.32285 2.90070 2.46209 3.15130 3.32305 0.04822 0.03570 109.60696 3.50527 3.08504 2.64940 3.33451 3.50549 0.04862 0.03602 114.02852 3.69311 3.27477 2.84208 3.52313 3.69334 0.04901 0.03635 118.38481 3.88209 3.46560 3.03577 3.71288 3.88234 0.04939 0.03665 122.52988 4.06553 3.65078 3.22364 3.89703 4.06579 0.04975 0.03695 126.45242 4.24244 3.82931 3.40468 4.07460 4.24271 0.05012 0.03724 130.40602 4.42397 4.01246 3.59035 4.25680 4.42425 0.05048 0.03753 134.30374 4.60620 4.19627 3.77662 4.43968 4.60650 0.05084 0.03781 138.01474 4.78268 4.37426 3.95692 4.61679 4.78300 0.05117 0.03808 141.52861 4.95253 4.54552 4.13036 4.78721 4.95286 0.05152 0.03835 145.07338 5.12659 4.72100 4.30802 4.96185 5.12693 0.04376 0.03254 6.08014 0.36650 0.00000 0.00000 0.19363 0.36651 0.04409 0.03287 7.48133 0.38459 0.00000 0.00000 0.21263 0.38460 0.04460 0.03337 9.75620 0.41795 0.00000 0.00000 0.24735 0.41797 0.04499 0.03374 11.52358 0.44739 0.02993 0.00000 0.27781 0.44742 0.04541 0.03415 13.50343 0.48315 0.06828 0.00000 0.31463 0.48319 0.04578 0.03450 15.30807 0.51802 0.10537 0.00000 0.35041 0.51806 0.04614 0.03485 17.11977 0.55501 0.14449 0.00000 0.38828 0.55506 0.04654 0.03522 19.12581 0.59814 0.18986 0.00000 0.43233 0.59820 0.04689 0.03554 20.93558 0.63888 0.23253 0.00000 0.47386 0.63895 0.04723 0.03586 22.73793 0.68108 0.27657 0.00000 0.51681 0.68115 0.04751 0.03611 24.20349 0.71655 0.31348 0.00000 0.55288 0.71663 0.04811 0.03665 27.43069 0.79810 0.39806 0.00000 0.63567 0.79819 0.04863 0.03711 30.20875 0.87479 0.47731 0.07808 0.71341 0.87490 0.04923 0.03763 33.40152 0.96734 0.57265 0.17775 0.80710 0.96747 0.04986 0.03817 36.81078 1.07094 0.67907 0.28854 0.91186 1.07109 0.05044 0.03866 39.97086 1.17124 0.78186 0.39519 1.01318 1.17140 0.05103 0.03916 43.21396 1.27835 0.89143 0.50855 1.12130 1.27854 0.05153 0.03957 45.94011 1.37161 0.98668 0.60688 1.21538 1.37181 0.05214 0.04007 49.28002 1.48983 1.10727 0.73112 1.33457 1.49005 0.05269 0.04051 52.25968 1.59893 1.21843 0.84545 1.44452 1.59917 0.05320 0.04091 55.00756 1.70260 1.32395 0.95382 1.54894 1.70285 0.05385 0.04142 58.50802 1.83887 1.46253 1.09595 1.68616 1.83915 0.05447 0.04191 61.80709 1.97162 1.59742 1.23411 1.81979 1.97193 0.05506 0.04236 64.89905 2.09986 1.72763 1.36734 1.94884 2.10019 0.05566 0.04282 67.98560 2.23160 1.86131 1.50398 2.08138 2.23196 0.05626 0.04326 70.99787 2.36382 1.99540 1.64092 2.21436 2.36420 0.05683 0.04369 73.83739 2.49179 2.12511 1.77330 2.34305 2.49219 0.05737 0.04409 76.49996 2.61474 2.24970 1.90036 2.46667 2.61518 0.05792 0.04449 79.16006 2.74053 2.37710 2.03022 2.59312 2.74099 0.05846 0.04488 81.75870 2.86629 2.50443 2.15993 2.71953 2.86677 0.05899 0.04526 84.21115 2.98762 2.62724 2.28498 2.84146 2.98812 0.05949 0.04562 86.51376 3.10396 2.74496 2.40480 2.95837 3.10448 0.06000 0.04598 88.81721 3.22269 2.86507 2.52701 3.07767 3.22324 0.06051 0.04634 91.07071 3.34122 2.98496 2.64894 3.19675 3.34179 0.06100 0.04668 93.20055 3.45542 3.10044 2.76635 3.31148 3.45602 0.06146 0.04701 95.20316 3.56477 3.21100 2.87873 3.42133 3.56540 0.06194 0.04734 97.20946 3.67630 3.32374 2.99329 3.53336 3.67695 0.04762 0.03680 5.64480 0.33747 0.00000 0.00000 0.17848 0.33749 0.04801 0.03717 6.89160 0.35428 0.00000 0.00000 0.19611 0.35431 0.04863 0.03774 8.89277 0.38487 0.00000 0.00000 0.22794 0.38491 0.04909 0.03816 10.42907 0.41156 0.02711 0.00000 0.25553 0.41161 0.04960 0.03862 12.13426 0.44367 0.06157 0.00000 0.28861 0.44374 0.05005 0.03902 13.67563 0.47473 0.09465 0.00000 0.32049 0.47480 0.05049 0.03941 15.21181 0.50746 0.12930 0.00000 0.35401 0.50754 0.05097 0.03983 16.90067 0.54536 0.16923 0.00000 0.39274 0.54545 0.05140 0.04020 18.41419 0.58094 0.20656 0.00000 0.42904 0.58105 0.05182 0.04056 19.91263 0.61760 0.24489 0.00000 0.46639 0.61772 0.05215 0.04084 21.12481 0.64828 0.27687 0.00000 0.49760 0.64841 0.05288 0.04145 23.77573 0.71837 0.34971 0.00000 0.56881 0.71852 0.05352 0.04198 26.03292 0.78380 0.41745 0.06690 0.63519 0.78397 0.05425 0.04257 28.60500 0.86221 0.49839 0.15172 0.71464 0.86241 0.05502 0.04318 31.32749 0.94934 0.58808 0.24533 0.80282 0.94957 0.05573 0.04373 33.83001 1.03312 0.67412 0.33484 0.88753 1.03337 0.05646 0.04429 36.37823 1.12203 0.76526 0.42938 0.97734 1.12231 0.05707 0.04476 38.50518 1.19899 0.84403 0.51092 1.05505 1.19929 0.05782 0.04532 41.09273 1.29602 0.94322 0.61339 1.15296 1.29635 0.05849 0.04582 43.38479 1.38506 1.03413 0.70715 1.24278 1.38543 0.05911 0.04628 45.48511 1.46925 1.12001 0.79558 1.32766 1.46964 0.05991 0.04686 48.14236 1.57934 1.23220 0.91096 1.43861 1.57976 0.06067 0.04741 50.62837 1.68598 1.34079 1.02249 1.54605 1.68644 0.06140 0.04792 52.94235 1.78848 1.44508 1.12949 1.64928 1.78897 0.06213 0.04843 55.23705 1.89325 1.55162 1.23869 1.75478 1.89379 0.06285 0.04894 57.46194 1.99791 1.65798 1.34761 1.86014 1.99847 0.06355 0.04941 59.54611 2.09874 1.76041 1.45243 1.96162 2.09934 0.06421 0.04986 61.48890 2.19521 1.85837 1.55262 2.05871 2.19585 0.06488 0.05032 63.41870 2.29351 1.95814 1.65459 2.15761 2.29418 0.06555 0.05076 65.29313 2.39139 2.05746 1.75605 2.25608 2.39209 0.06619 0.05119 67.05235 2.48546 2.15289 1.85350 2.35071 2.48620 0.06680 0.05159 68.69530 2.57534 2.24403 1.94653 2.44111 2.57611 0.06742 0.05200 70.33045 2.66676 2.33671 2.04109 2.53305 2.66756 0.06804 0.05240 71.92173 2.75770 2.42890 2.13511 2.62450 2.75854 0.06863 0.05279 73.41812 2.84503 2.51740 2.22535 2.71231 2.84590 0.06920 0.05315 74.81830 2.92840 2.60188 2.31145 2.79613 2.92930 0.06978 0.05352 76.21436 3.01316 2.68775 2.39896 2.88136 3.01410 0.05080 0.04016 5.35747 0.31859 0.00000 0.00000 0.16863 0.31863 0.05126 0.04057 6.50149 0.33456 0.00000 0.00000 0.18536 0.33461 0.05196 0.04119 8.32214 0.36332 0.00000 0.00000 0.21527 0.36339 0.05251 0.04165 9.70741 0.38819 0.02526 0.00000 0.24098 0.38827 0.05309 0.04216 11.23435 0.41791 0.05716 0.00000 0.27160 0.41800 0.05362 0.04260 12.60601 0.44647 0.08760 0.00000 0.30093 0.44658 0.05413 0.04302 13.96557 0.47641 0.11934 0.00000 0.33160 0.47653 0.05469 0.04348 15.45225 0.51091 0.15573 0.00000 0.36688 0.51105 0.05518 0.04388 16.77789 0.54315 0.18960 0.00000 0.39979 0.54331 0.05567 0.04427 18.08446 0.57624 0.22424 0.00000 0.43351 0.57641 0.05606 0.04459 19.13730 0.60383 0.25305 0.00000 0.46160 0.60401 0.05691 0.04525 21.42775 0.66657 0.31835 0.00000 0.52539 0.66679 0.05765 0.04583 23.36152 0.72482 0.37876 0.05976 0.58452 0.72506 0.05850 0.04647 25.55063 0.79425 0.45055 0.13515 0.65492 0.79453 0.05940 0.04714 27.85213 0.87097 0.52967 0.21790 0.73263 0.87129 0.06022 0.04775 29.95404 0.94437 0.60519 0.29662 0.80690 0.94473 0.06106 0.04836 32.08136 1.02189 0.68479 0.37938 0.88527 1.02228 0.06177 0.04887 33.84721 1.08871 0.75331 0.45046 0.95278 1.08913 0.06264 0.04949 35.98368 1.17259 0.83921 0.53940 1.03749 1.17305 0.06342 0.05003 37.86559 1.24925 0.91762 0.62045 1.11487 1.24975 0.06415 0.05053 39.58141 1.32145 0.99141 0.69660 1.18772 1.32199 0.06507 0.05116 41.74042 1.41549 1.08742 0.79557 1.28257 1.41607 0.06596 0.05176 43.74849 1.50620 1.17996 0.89083 1.37403 1.50683 0.06680 0.05232 45.60734 1.59304 1.26848 0.98186 1.46157 1.59371 0.06765 0.05288 47.44094 1.68149 1.35859 1.07443 1.55069 1.68220 0.06849 0.05343 49.20937 1.76950 1.44820 1.16643 1.63936 1.77026 0.06929 0.05395 50.85752 1.85401 1.53421 1.25465 1.72449 1.85481 0.07006 0.05444 52.38652 1.93460 1.61621 1.33871 1.80566 1.93545 0.07083 0.05493 53.89808 2.01646 1.69946 1.42400 1.88809 2.01736 0.07160 0.05542 55.35936 2.09773 1.78208 1.50861 1.96992 2.09866 0.07234 0.05588 56.72456 2.17561 1.86124 1.58963 2.04832 2.17659 0.07304 0.05632 57.99386 2.24981 1.93663 1.66677 2.12301 2.25083 0.07376 0.05676 59.25174 2.32507 2.01309 1.74497 2.19877 2.32613 0.07447 0.05720 60.47046 2.39974 2.08894 1.82252 2.27392 2.40085 0.07515 0.05762 61.61163 2.47127 2.16157 1.89676 2.34591 2.47242 0.07581 0.05801 62.67504 2.53938 2.23073 1.96744 2.41445 2.54057 0.07647 0.05842 63.73100 2.60848 2.30087 2.03910 2.48398 2.60970 0.05350 0.04296 5.14679 0.30493 0.00000 0.00000 0.16150 0.30498 0.05401 0.04339 6.21495 0.32029 0.00000 0.00000 0.17757 0.32035 0.05480 0.04406 7.90343 0.34771 0.00000 0.00000 0.20608 0.34779 0.05541 0.04456 9.17892 0.37124 0.02390 0.00000 0.23042 0.37135 0.05607 0.04510 10.57714 0.39921 0.05394 0.00000 0.25923 0.39933 0.05665 0.04557 11.82692 0.42596 0.08246 0.00000 0.28671 0.42610 0.05723 0.04603 13.06028 0.45387 0.11208 0.00000 0.31532 0.45404 0.05786 0.04652 14.40319 0.48591 0.14591 0.00000 0.34809 0.48610 0.05841 0.04695 15.59585 0.51575 0.17728 0.00000 0.37856 0.51595 0.05896 0.04737 16.76718 0.54626 0.20927 0.00000 0.40967 0.54648 0.05940 0.04770 17.70811 0.57163 0.23580 0.00000 0.43552 0.57187 0.06035 0.04842 19.74658 0.62913 0.29573 0.00000 0.49401 0.62941 0.06119 0.04903 21.45580 0.68226 0.35091 0.05467 0.54798 0.68257 0.06215 0.04973 23.38058 0.74533 0.41622 0.12337 0.61197 0.74568 0.06315 0.05044 25.39329 0.81472 0.48789 0.19846 0.68230 0.81512 0.06408 0.05110 27.22200 0.88084 0.55601 0.26961 0.74924 0.88128 0.06503 0.05175 29.06385 0.95039 0.62756 0.34413 0.81961 0.95088 0.06583 0.05230 30.58602 1.01015 0.68893 0.40791 0.88002 1.01068 0.06681 0.05295 32.41959 1.08491 0.76561 0.48746 0.95558 1.08549 0.06768 0.05354 34.02746 1.15301 0.83538 0.55971 1.02436 1.15364 0.06849 0.05407 35.48753 1.21696 0.90084 0.62741 1.08893 1.21763 0.06954 0.05475 37.31675 1.29999 0.98575 0.71510 1.17273 1.30071 0.07053 0.05539 39.01009 1.37981 1.06732 0.79924 1.25327 1.38059 0.07147 0.05599 40.57071 1.45600 1.14511 0.87939 1.33012 1.45683 0.07242 0.05659 42.10354 1.53336 1.22406 0.96067 1.40813 1.53425 0.07336 0.05717 43.57562 1.61012 1.30236 1.04121 1.48553 1.61107 0.07426 0.05773 44.94193 1.68363 1.37730 1.11824 1.55963 1.68463 0.07511 0.05825 46.20454 1.75356 1.44857 1.19145 1.63011 1.75461 0.07598 0.05878 47.44796 1.82441 1.52076 1.26556 1.70151 1.82551 0.07684 0.05930 48.64542 1.89458 1.59222 1.33890 1.77222 1.89573 0.07766 0.05979 49.75996 1.96168 1.66054 1.40898 1.83981 1.96288 0.07845 0.06026 50.79247 2.02546 1.72547 1.47555 1.90406 2.02671 0.07925 0.06073 51.81208 2.09002 1.79118 1.54290 1.96910 2.09132 0.08004 0.06120 52.79638 2.15394 1.85623 1.60956 2.03349 2.15529 0.08080 0.06164 53.71482 2.21505 1.91840 1.67325 2.09503 2.21645 0.08153 0.06206 54.56775 2.27313 1.97748 1.73376 2.15353 2.27458 0.08227 0.06249 55.41185 2.33194 2.03730 1.79501 2.21275 2.33343 0.06413 0.05300 4.55955 0.26724 0.00000 0.00000 0.14185 0.26740 0.06488 0.05354 5.41033 0.28085 0.00000 0.00000 0.15607 0.28104 0.06606 0.05438 6.72546 0.30447 0.00000 0.00000 0.18060 0.30471 0.06696 0.05500 7.69509 0.32423 0.02008 0.00000 0.20105 0.32451 0.06794 0.05568 8.73853 0.34727 0.04487 0.00000 0.22480 0.34759 0.06880 0.05627 9.65564 0.36892 0.06804 0.00000 0.24708 0.36929 0.06966 0.05684 10.54742 0.39120 0.09177 0.00000 0.26996 0.39161 0.07059 0.05746 11.50437 0.41642 0.11852 0.00000 0.29580 0.41688 0.07141 0.05800 12.34271 0.43961 0.14303 0.00000 0.31953 0.44011 0.07222 0.05853 13.15604 0.46307 0.16775 0.00000 0.34351 0.46361 0.07287 0.05894 13.80244 0.48239 0.18807 0.00000 0.36323 0.48296 0.07427 0.05984 15.18282 0.52562 0.23339 0.00000 0.40733 0.52627 0.07551 0.06061 16.31186 0.56498 0.27451 0.04098 0.44741 0.56570 0.07691 0.06148 17.55995 0.61102 0.32250 0.09178 0.49425 0.61182 0.07839 0.06237 18.84030 0.66093 0.37438 0.14652 0.54498 0.66183 0.07975 0.06319 19.98235 0.70783 0.42303 0.19768 0.59259 0.70880 0.08114 0.06400 21.11264 0.75653 0.47346 0.25059 0.64201 0.75759 0.08230 0.06468 22.03193 0.79789 0.51623 0.29538 0.68395 0.79903 0.08372 0.06550 23.12161 0.84905 0.56908 0.35061 0.73581 0.85028 0.08499 0.06622 24.06148 0.89512 0.61662 0.40022 0.78248 0.89643 0.08616 0.06688 24.90225 0.93794 0.66077 0.44624 0.82586 0.93934 0.08767 0.06772 25.93850 0.99294 0.71744 0.50523 0.88155 0.99444 0.08909 0.06851 26.88083 1.04522 0.77126 0.56119 0.93446 1.04681 0.09044 0.06925 27.73473 1.09457 0.82205 0.61395 0.98441 1.09626 0.09180 0.06998 28.55964 1.14419 0.87308 0.66692 1.03461 1.14598 0.09313 0.07070 29.33875 1.19293 0.92319 0.71891 1.08392 1.19482 0.09441 0.07138 30.05019 1.23916 0.97071 0.76817 1.13069 1.24114 0.09562 0.07202 30.69747 1.28276 1.01551 0.81459 1.17478 1.28483 0.09684 0.07266 31.32505 1.32656 1.06050 0.86120 1.21908 1.32871 0.09805 0.07329 31.92002 1.36956 1.10468 0.90694 1.26257 1.37181 0.09920 0.07389 32.46526 1.41035 1.14657 0.95031 1.30382 1.41269 0.10030 0.07446 32.96275 1.44884 1.18609 0.99120 1.34273 1.45125 0.10141 0.07503 33.44673 1.48750 1.22580 1.03229 1.38184 1.49000 0.10251 0.07559 33.90671 1.52550 1.26482 1.07265 1.42026 1.52809 0.10357 0.07612 34.32939 1.56157 1.30186 1.11096 1.45673 1.56423 0.10457 0.07663 34.71605 1.59562 1.33682 1.14712 1.49116 1.59836 0.10559 0.07714 35.09295 1.62987 1.37199 1.18348 1.52580 1.63269 0.07974 0.06551 4.07564 0.23595 0.00000 0.00000 0.12557 0.23644 0.08090 0.06620 4.73353 0.24801 0.00000 0.00000 0.13817 0.24857 0.08269 0.06726 5.72582 0.26826 0.00000 0.00000 0.15923 0.26893 0.08406 0.06806 6.43721 0.28472 0.01677 0.00000 0.17628 0.28548 0.08555 0.06892 7.18686 0.30347 0.03707 0.00000 0.19567 0.30433 0.08687 0.06967 7.83327 0.32075 0.05569 0.00000 0.21351 0.32170 0.08817 0.07040 8.45126 0.33824 0.07446 0.00000 0.23152 0.33927 0.08957 0.07119 9.10331 0.35772 0.09529 0.00000 0.25156 0.35885 0.09081 0.07187 9.66552 0.37537 0.11412 0.00000 0.26970 0.37659 0.09203 0.07254 10.20319 0.39300 0.13287 0.00000 0.28780 0.39430 0.09300 0.07307 10.62513 0.40736 0.14812 0.00000 0.30253 0.40873 0.09511 0.07420 11.51093 0.43903 0.18168 0.00000 0.33498 0.44057 0.09695 0.07518 12.21249 0.46736 0.21161 0.03007 0.36398 0.46903 0.09904 0.07627 12.97038 0.49996 0.24597 0.06680 0.39731 0.50179 0.10122 0.07740 13.72946 0.53470 0.28251 0.10574 0.43280 0.53670 0.10322 0.07841 14.39085 0.56682 0.31623 0.14157 0.46559 0.56898 0.10524 0.07944 15.03082 0.59968 0.35068 0.17811 0.49911 0.60200 0.10693 0.08028 15.54052 0.62721 0.37952 0.20864 0.52719 0.62967 0.10899 0.08130 16.13189 0.66082 0.41469 0.24582 0.56145 0.66344 0.11082 0.08219 16.63064 0.69068 0.44592 0.27880 0.59189 0.69346 0.11250 0.08301 17.06766 0.71811 0.47460 0.30904 0.61985 0.72103 0.11465 0.08404 17.59405 0.75289 0.51095 0.34735 0.65529 0.75600 0.11667 0.08501 18.06062 0.78551 0.54502 0.38323 0.68852 0.78878 0.11857 0.08591 18.47299 0.81592 0.57678 0.41666 0.71950 0.81935 0.12048 0.08680 18.86153 0.84612 0.60833 0.44984 0.75027 0.84972 0.12235 0.08767 19.21914 0.87544 0.63895 0.48204 0.78014 0.87920 0.12412 0.08849 19.53731 0.90294 0.66768 0.51224 0.80816 0.90686 0.12580 0.08926 19.81951 0.92859 0.69448 0.54042 0.83430 0.93266 0.12748 0.09003 20.08602 0.95410 0.72114 0.56844 0.86029 0.95831 0.12914 0.09078 20.33187 0.97889 0.74706 0.59568 0.88556 0.98325 0.13072 0.09150 20.55100 1.00218 0.77141 0.62127 0.90930 1.00668 0.13221 0.09217 20.74536 1.02394 0.79417 0.64520 0.93148 1.02857 0.13372 0.09284 20.92911 1.04561 0.81685 0.66903 0.95358 1.05037 0.13521 0.09350 21.09838 1.06670 0.83894 0.69226 0.97510 1.07160 0.13663 0.09413 21.24908 1.08655 0.85973 0.71412 0.99535 1.09158 0.13798 0.09472 21.38254 1.10513 0.87920 0.73460 1.01431 1.11028 0.13934 0.09532 21.50827 1.12367 0.89863 0.75505 1.03322 1.12894 0.09264 0.07435 3.84238 0.22006 0.00000 0.00000 0.11736 0.22103 0.09413 0.07516 4.39685 0.23125 0.00000 0.00000 0.12907 0.23233 0.09646 0.07640 5.22013 0.24964 0.00000 0.00000 0.14823 0.25090 0.09822 0.07733 5.79924 0.26431 0.01503 0.00000 0.16348 0.26570 0.10014 0.07833 6.40108 0.28077 0.03297 0.00000 0.18056 0.28231 0.10184 0.07920 6.91346 0.29575 0.04922 0.00000 0.19607 0.29742 0.10350 0.08005 7.39773 0.31073 0.06544 0.00000 0.21157 0.31254 0.10529 0.08096 7.90289 0.32724 0.08326 0.00000 0.22863 0.32920 0.10687 0.08176 8.33369 0.34206 0.09922 0.00000 0.24392 0.34415 0.10842 0.08253 8.74162 0.35673 0.11499 0.00000 0.25906 0.35895 0.10966 0.08314 9.05894 0.36860 0.12772 0.00000 0.27129 0.37092 0.11232 0.08445 9.71711 0.39452 0.15548 0.00000 0.29798 0.39708 0.11464 0.08557 10.22553 0.41743 0.17995 0.02477 0.32156 0.42019 0.11726 0.08682 10.76542 0.44351 0.20776 0.05473 0.34836 0.44649 0.11999 0.08811 11.29647 0.47097 0.23699 0.08615 0.37658 0.47420 0.12247 0.08927 11.75089 0.49609 0.26370 0.11478 0.40236 0.49954 0.12498 0.09043 12.18284 0.52152 0.29071 0.14369 0.42847 0.52521 0.12706 0.09139 12.52111 0.54264 0.31313 0.16765 0.45014 0.54651 0.12959 0.09254 12.90670 0.56819 0.34024 0.19659 0.47636 0.57230 0.13183 0.09355 13.22581 0.59068 0.36410 0.22204 0.49943 0.59500 0.13388 0.09446 13.50045 0.61117 0.38584 0.24521 0.52046 0.61568 0.13649 0.09562 13.82454 0.63693 0.41317 0.27433 0.54689 0.64168 0.13893 0.09670 14.10509 0.66085 0.43856 0.30136 0.57144 0.66584 0.14122 0.09770 14.34722 0.68296 0.46203 0.32635 0.59413 0.68817 0.14351 0.09869 14.56976 0.70473 0.48516 0.35097 0.61649 0.71016 0.14575 0.09965 14.76917 0.72569 0.50744 0.37469 0.63801 0.73133 0.14786 0.10055 14.94168 0.74519 0.52818 0.39678 0.65804 0.75103 0.14984 0.10140 15.09034 0.76324 0.54740 0.41725 0.67660 0.76927 0.15184 0.10224 15.22641 0.78106 0.56638 0.43747 0.69491 0.78727 0.15379 0.10306 15.34771 0.79824 0.58471 0.45700 0.71259 0.80465 0.15564 0.10383 15.45190 0.81427 0.60182 0.47524 0.72908 0.82085 0.15739 0.10456 15.54071 0.82914 0.61771 0.49219 0.74439 0.83589 0.15915 0.10528 15.62112 0.84385 0.63344 0.50898 0.75954 0.85076 0.16088 0.10600 15.69156 0.85807 0.64867 0.52525 0.77419 0.86515 0.16253 0.10667 15.75087 0.87136 0.66292 0.54048 0.78790 0.87860 0.16409 0.10730 15.80023 0.88372 0.67619 0.55467 0.80065 0.89111 0.16566 0.10794 15.84351 0.89597 0.68936 0.56876 0.81330 0.90351 0.10429 0.08154 3.69957 0.20962 0.00000 0.00000 0.11201 0.21117 0.10609 0.08245 4.18419 0.22018 0.00000 0.00000 0.12308 0.22188 0.10888 0.08383 4.89517 0.23725 0.00000 0.00000 0.14094 0.23920 0.11100 0.08488 5.38772 0.25068 0.01385 0.00000 0.15494 0.25281 0.11329 0.08599 5.89404 0.26557 0.03021 0.00000 0.17046 0.26791 0.11532 0.08697 6.32076 0.27898 0.04490 0.00000 0.18441 0.28150 0.11729 0.08792 6.72041 0.29229 0.05943 0.00000 0.19824 0.29499 0.11942 0.08893 7.13347 0.30683 0.07528 0.00000 0.21334 0.30973 0.12130 0.08982 7.48261 0.31978 0.08937 0.00000 0.22677 0.32286 0.12313 0.09067 7.81053 0.33253 0.10321 0.00000 0.23998 0.33577 0.12459 0.09135 8.06376 0.34277 0.11432 0.00000 0.25060 0.34615 0.12772 0.09279 8.58375 0.36498 0.13838 0.00000 0.27360 0.36866 0.13045 0.09404 8.97644 0.38443 0.15941 0.02143 0.29372 0.38837 0.13350 0.09541 9.38716 0.40637 0.18309 0.04714 0.31641 0.41061 0.13667 0.09683 9.78467 0.42927 0.20779 0.07388 0.34008 0.43381 0.13955 0.09810 10.11926 0.45002 0.23016 0.09806 0.36153 0.45486 0.14245 0.09936 10.43206 0.47088 0.25262 0.12230 0.38308 0.47600 0.14484 0.10040 10.67307 0.48806 0.27113 0.14226 0.40084 0.49342 0.14774 0.10165 10.94309 0.50870 0.29336 0.16622 0.42217 0.51435 0.15030 0.10274 11.16231 0.52674 0.31280 0.18715 0.44081 0.53264 0.15264 0.10373 11.34748 0.54307 0.33040 0.20609 0.45769 0.54920 0.15559 0.10497 11.56124 0.56344 0.35238 0.22975 0.47875 0.56987 0.15836 0.10612 11.74144 0.58221 0.37265 0.25157 0.49818 0.58892 0.16094 0.10719 11.89268 0.59943 0.39128 0.27162 0.51601 0.60641 0.16350 0.10824 12.02751 0.61627 0.40951 0.29125 0.53345 0.62350 0.16601 0.10926 12.14422 0.63237 0.42696 0.31005 0.55014 0.63985 0.16836 0.11021 12.24135 0.64724 0.44311 0.32746 0.56556 0.65496 0.17057 0.11110 12.32156 0.66092 0.45798 0.34351 0.57976 0.66886 0.17278 0.11198 12.39145 0.67433 0.47259 0.35928 0.59369 0.68249 0.17494 0.11284 12.45019 0.68719 0.48662 0.37444 0.60706 0.69557 0.17698 0.11365 12.49723 0.69910 0.49965 0.38853 0.61945 0.70768 0.17890 0.11441 12.53406 0.71008 0.51168 0.40156 0.63089 0.71886 0.18083 0.11516 12.56409 0.72088 0.52354 0.41441 0.64215 0.72985 0.18272 0.11590 12.58682 0.73126 0.53496 0.42679 0.65298 0.74042 0.18452 0.11659 12.60248 0.74091 0.54559 0.43834 0.66305 0.75024 0.18621 0.11724 12.61208 0.74982 0.55544 0.44905 0.67237 0.75932 0.18792 0.11790 12.61676 0.75860 0.56516 0.45964 0.68157 0.76828 0.11516 0.08775 3.60145 0.20186 0.00000 0.00000 0.10808 0.20409 0.11724 0.08875 4.03363 0.21191 0.00000 0.00000 0.11865 0.21434 0.12046 0.09027 4.66142 0.22795 0.00000 0.00000 0.13549 0.23069 0.12290 0.09141 5.09060 0.24041 0.01295 0.00000 0.14854 0.24339 0.12552 0.09263 5.52769 0.25411 0.02813 0.00000 0.16287 0.25734 0.12784 0.09370 5.89289 0.26634 0.04165 0.00000 0.17566 0.26980 0.13010 0.09473 6.23224 0.27839 0.05495 0.00000 0.18825 0.28207 0.13252 0.09583 6.58015 0.29147 0.06935 0.00000 0.20190 0.29539 0.13465 0.09679 6.87195 0.30304 0.08208 0.00000 0.21397 0.30718 0.13673 0.09772 7.14403 0.31436 0.09452 0.00000 0.22577 0.31871 0.13838 0.09845 7.35277 0.32342 0.10446 0.00000 0.23521 0.32794 0.14192 0.10001 7.77754 0.34293 0.12586 0.00000 0.25554 0.34782 0.14499 0.10135 8.09133 0.35989 0.14443 0.01904 0.27320 0.36509 0.14841 0.10283 8.41481 0.37887 0.16520 0.04174 0.29296 0.38443 0.15196 0.10434 8.72301 0.39853 0.18670 0.06520 0.31342 0.40445 0.15516 0.10570 8.97820 0.41622 0.20604 0.08627 0.33183 0.42248 0.15838 0.10705 9.21274 0.43387 0.22534 0.10727 0.35020 0.44046 0.16103 0.10815 9.39042 0.44832 0.24115 0.12447 0.36524 0.45519 0.16423 0.10947 9.58579 0.46556 0.26003 0.14499 0.38321 0.47277 0.16704 0.11062 9.74106 0.48054 0.27645 0.16283 0.39881 0.48804 0.16960 0.11166 9.86940 0.49401 0.29123 0.17890 0.41286 0.50179 0.17283 0.11296 10.01368 0.51072 0.30959 0.19886 0.43029 0.51883 0.17584 0.11416 10.13130 0.52601 0.32643 0.21717 0.44626 0.53444 0.17865 0.11527 10.22639 0.53994 0.34180 0.23391 0.46082 0.54866 0.18143 0.11637 10.30753 0.55348 0.35677 0.25021 0.47499 0.56249 0.18413 0.11742 10.37408 0.56634 0.37102 0.26575 0.48845 0.57563 0.18666 0.11840 10.42593 0.57814 0.38414 0.28007 0.50083 0.58769 0.18903 0.11932 10.46541 0.58893 0.39617 0.29321 0.51216 0.59873 0.19139 0.12022 10.49626 0.59945 0.40792 0.30607 0.52322 0.60949 0.19370 0.12110 10.51846 0.60947 0.41915 0.31838 0.53377 0.61975 0.19587 0.12192 10.53243 0.61870 0.42952 0.32976 0.54350 0.62920 0.19791 0.12269 10.53949 0.62716 0.43906 0.34025 0.55243 0.63787 0.19996 0.12345 10.54092 0.63543 0.44842 0.35055 0.56118 0.64635 0.20196 0.12420 10.53687 0.64334 0.45739 0.36044 0.56955 0.65446 0.20385 0.12490 10.52826 0.65063 0.46571 0.36963 0.57729 0.66195 0.20564 0.12555 10.51599 0.65734 0.47337 0.37811 0.58442 0.66883 0.20743 0.12621 10.49969 0.66391 0.48092 0.38647 0.59141 0.67559 0.13544 0.09844 3.47242 0.19046 0.00000 0.00000 0.10242 0.19430 0.13801 0.09958 3.82799 0.19968 0.00000 0.00000 0.11219 0.20380 0.14197 0.10133 4.33605 0.21410 0.00000 0.00000 0.12746 0.21865 0.14496 0.10264 4.67532 0.22508 0.01163 0.00000 0.13909 0.22997 0.14817 0.10404 5.01532 0.23698 0.02507 0.00000 0.15166 0.24222 0.15098 0.10525 5.29515 0.24746 0.03690 0.00000 0.16274 0.25302 0.15371 0.10642 5.55158 0.25766 0.04841 0.00000 0.17352 0.26352 0.15664 0.10767 5.81073 0.26861 0.06075 0.00000 0.18508 0.27480 0.15920 0.10875 6.02503 0.27820 0.07155 0.00000 0.19521 0.28467 0.16169 0.10979 6.22221 0.28749 0.08202 0.00000 0.20502 0.29424 0.16366 0.11062 6.37167 0.29486 0.09033 0.00000 0.21281 0.30184 0.16787 0.11236 6.67067 0.31058 0.10803 0.00000 0.22941 0.31803 0.17149 0.11385 6.88158 0.32406 0.12321 0.01576 0.24364 0.33191 0.17550 0.11548 7.09255 0.33895 0.13999 0.03436 0.25937 0.34726 0.17964 0.11714 7.28694 0.35418 0.15717 0.05336 0.27546 0.36295 0.18335 0.11862 7.44210 0.36770 0.17244 0.07025 0.28977 0.37689 0.18705 0.12008 7.57916 0.38103 0.18752 0.08692 0.30387 0.39063 0.19009 0.12126 7.67874 0.39183 0.19976 0.10045 0.31531 0.40177 0.19373 0.12268 7.78301 0.40457 0.21423 0.11646 0.32882 0.41491 0.19691 0.12390 7.86107 0.41550 0.22669 0.13025 0.34043 0.42620 0.19980 0.12500 7.92150 0.42524 0.23782 0.14257 0.35079 0.43625 0.20341 0.12636 7.98366 0.43717 0.25150 0.15775 0.36350 0.44858 0.20677 0.12762 8.02824 0.44796 0.26392 0.17154 0.37501 0.45973 0.20987 0.12877 8.05858 0.45767 0.27515 0.18404 0.38539 0.46977 0.21293 0.12990 8.07856 0.46698 0.28598 0.19612 0.39538 0.47942 0.21588 0.13098 8.08868 0.47573 0.29620 0.20753 0.40478 0.48848 0.21864 0.13198 8.09023 0.48366 0.30552 0.21796 0.41332 0.49670 0.22121 0.13290 8.08503 0.49083 0.31398 0.22746 0.42106 0.50414 0.22375 0.13381 8.07364 0.49773 0.32219 0.23669 0.42853 0.51131 0.22623 0.13469 8.05680 0.50422 0.32996 0.24546 0.43559 0.51806 0.22855 0.13550 8.03595 0.51014 0.33707 0.25351 0.44203 0.52421 0.23072 0.13626 8.01208 0.51549 0.34356 0.26088 0.44789 0.52979 0.23288 0.13701 7.98426 0.52066 0.34988 0.26806 0.45356 0.53519 0.23499 0.13773 7.95323 0.52554 0.35588 0.27491 0.45893 0.54028 0.23697 0.13841 7.92059 0.52999 0.36139 0.28123 0.46385 0.54493 0.23883 0.13904 7.88701 0.53403 0.36644 0.28703 0.46833 0.54915 0.24069 0.13967 7.85062 0.53794 0.37136 0.29270 0.47268 0.55324 0.16349 0.11198 3.35407 0.17825 0.00000 0.00000 0.09659 0.18496 0.16667 0.11331 3.63106 0.18647 0.00000 0.00000 0.10543 0.19357 0.17155 0.11533 4.01880 0.19904 0.00000 0.00000 0.11895 0.20674 0.17520 0.11684 4.26941 0.20840 0.01022 0.00000 0.12903 0.21656 0.17911 0.11843 4.51521 0.21836 0.02186 0.00000 0.13976 0.22700 0.18251 0.11982 4.71339 0.22700 0.03196 0.00000 0.14906 0.23606 0.18581 0.12114 4.89152 0.23528 0.04167 0.00000 0.15799 0.24475 0.18931 0.12255 5.06789 0.24405 0.05195 0.00000 0.16745 0.25395 0.19237 0.12376 5.21075 0.25164 0.06085 0.00000 0.17563 0.26190 0.19531 0.12492 5.33962 0.25890 0.06939 0.00000 0.18347 0.26952 0.19764 0.12584 5.43550 0.26461 0.07611 0.00000 0.18964 0.27551 0.20257 0.12776 5.62221 0.27661 0.09027 0.00000 0.20262 0.28811 0.20679 0.12938 5.74298 0.28673 0.10224 0.01265 0.21358 0.29873 0.21142 0.13115 5.85700 0.29774 0.11530 0.02740 0.22551 0.31029 0.21616 0.13294 5.95498 0.30879 0.12846 0.04227 0.23753 0.32191 0.22037 0.13451 6.02685 0.31846 0.14002 0.05534 0.24804 0.33206 0.22453 0.13604 6.08406 0.32783 0.15128 0.06808 0.25826 0.34191 0.22792 0.13728 6.12065 0.33530 0.16031 0.07831 0.26644 0.34977 0.23196 0.13874 6.15263 0.34399 0.17087 0.09030 0.27597 0.35892 0.23546 0.13999 6.17045 0.35133 0.17984 0.10051 0.28405 0.36665 0.23861 0.14111 6.17873 0.35777 0.18777 0.10955 0.29115 0.37344 0.24253 0.14249 6.17896 0.36554 0.19741 0.12056 0.29976 0.38163 0.24613 0.14374 6.16957 0.37242 0.20604 0.13046 0.30742 0.38890 0.24943 0.14487 6.15303 0.37851 0.21376 0.13934 0.31423 0.39534 0.25267 0.14597 6.12963 0.38424 0.22110 0.14783 0.32068 0.40141 0.25577 0.14701 6.10063 0.38952 0.22795 0.15577 0.32665 0.40701 0.25865 0.14796 6.06809 0.39422 0.23411 0.16296 0.33200 0.41200 0.26130 0.14883 6.03332 0.39838 0.23965 0.16945 0.33677 0.41643 0.26392 0.14968 5.99463 0.40230 0.24495 0.17569 0.34130 0.42062 0.26644 0.15049 5.95326 0.40592 0.24991 0.18156 0.34551 0.42449 0.26879 0.15124 5.91114 0.40915 0.25440 0.18690 0.34929 0.42794 0.27098 0.15192 5.86895 0.41200 0.25845 0.19175 0.35266 0.43100 0.27314 0.15259 5.82433 0.41469 0.26234 0.19643 0.35588 0.43390 0.27523 0.15324 5.77839 0.41717 0.26599 0.20086 0.35887 0.43658 0.27719 0.15383 5.73298 0.41937 0.26931 0.20490 0.36156 0.43896 0.27902 0.15438 5.68857 0.42132 0.27231 0.20858 0.36396 0.44107 0.28083 0.15492 5.64245 0.42315 0.27519 0.21215 0.36624 0.44306 0.20626 0.13108 3.22298 0.16319 0.00000 0.00000 0.08984 0.17543 0.21021 0.13263 3.41340 0.17008 0.00000 0.00000 0.09746 0.18286 0.21620 0.13497 3.67174 0.18031 0.00000 0.00000 0.10881 0.19390 0.22066 0.13668 3.82927 0.18772 0.00858 0.00000 0.11705 0.20190 0.22538 0.13849 3.97810 0.19542 0.01818 0.00000 0.12563 0.21021 0.22947 0.14005 4.09377 0.20194 0.02636 0.00000 0.13293 0.21727 0.23339 0.14153 4.19402 0.20808 0.03410 0.00000 0.13982 0.22392 0.23754 0.14308 4.28935 0.21446 0.04217 0.00000 0.14698 0.23082 0.24112 0.14440 4.36333 0.21987 0.04907 0.00000 0.15308 0.23669 0.24454 0.14566 4.42721 0.22497 0.05560 0.00000 0.15884 0.24221 0.24723 0.14665 4.47272 0.22892 0.06068 0.00000 0.16332 0.24650 0.25289 0.14869 4.55561 0.23707 0.07122 0.00000 0.17257 0.25533 0.25765 0.15039 4.59521 0.24377 0.07997 0.00952 0.18021 0.26260 0.26283 0.15222 4.62384 0.25089 0.08935 0.02046 0.18836 0.27032 0.26805 0.15403 4.63895 0.25784 0.09863 0.03130 0.19637 0.27787 0.27263 0.15559 4.64094 0.26376 0.10662 0.04067 0.20323 0.28430 0.27710 0.15710 4.63276 0.26936 0.11428 0.04968 0.20975 0.29037 0.28070 0.15829 4.61895 0.27371 0.12032 0.05681 0.21487 0.29511 0.28493 0.15967 4.59446 0.27864 0.12727 0.06505 0.22070 0.30047 0.28855 0.16083 4.56647 0.28268 0.13308 0.07198 0.22553 0.30488 0.29177 0.16185 4.53609 0.28614 0.13814 0.07803 0.22969 0.30865 0.29573 0.16308 4.49175 0.29017 0.14417 0.08531 0.23461 0.31306 0.29932 0.16418 4.44486 0.29361 0.14948 0.09175 0.23887 0.31684 0.30257 0.16515 4.39691 0.29654 0.15413 0.09744 0.24256 0.32006 0.30572 0.16607 4.34558 0.29919 0.15848 0.10281 0.24595 0.32298 0.30869 0.16692 4.29247 0.30151 0.16246 0.10777 0.24899 0.32556 0.31141 0.16769 4.23992 0.30348 0.16597 0.11219 0.25163 0.32775 0.31389 0.16837 4.18867 0.30514 0.16907 0.11612 0.25391 0.32961 0.31630 0.16902 4.13568 0.30661 0.17198 0.11986 0.25600 0.33127 0.31860 0.16962 4.08233 0.30789 0.17465 0.12333 0.25787 0.33271 0.32072 0.17017 4.03064 0.30894 0.17702 0.12645 0.25949 0.33391 0.32266 0.17065 3.98100 0.30979 0.17911 0.12923 0.26087 0.33490 0.32455 0.17112 3.93034 0.31052 0.18108 0.13189 0.26212 0.33576 0.32637 0.17155 3.87984 0.31112 0.18288 0.13437 0.26323 0.33647 0.32804 0.17193 3.83132 0.31158 0.18448 0.13660 0.26417 0.33703 0.32959 0.17228 3.78503 0.31191 0.18589 0.13861 0.26496 0.33745 0.33110 0.17261 3.73802 0.31216 0.18722 0.14053 0.26566 0.33778 0.24550 0.14770 3.11039 0.15093 0.00000 0.00000 0.08468 0.16914 0.24996 0.14937 3.24140 0.15674 0.00000 0.00000 0.09130 0.17555 0.25669 0.15187 3.41307 0.16515 0.00000 0.00000 0.10096 0.18487 0.26165 0.15370 3.50987 0.17110 0.00737 0.00000 0.10783 0.19147 0.26687 0.15560 3.59673 0.17716 0.01550 0.00000 0.11486 0.19819 0.27136 0.15722 3.66067 0.18219 0.02234 0.00000 0.12074 0.20379 0.27563 0.15874 3.71295 0.18684 0.02873 0.00000 0.12620 0.20897 0.28011 0.16032 3.75925 0.19159 0.03532 0.00000 0.13181 0.21426 0.28395 0.16167 3.79222 0.19555 0.04088 0.00000 0.13651 0.21867 0.28760 0.16293 3.81802 0.19923 0.04609 0.00000 0.14089 0.22277 0.29045 0.16391 3.83444 0.20204 0.05011 0.00000 0.14426 0.22591 0.29638 0.16591 3.85844 0.20771 0.05836 0.00000 0.15111 0.23224 0.30132 0.16755 3.85355 0.21227 0.06509 0.00754 0.15665 0.23732 0.30662 0.16928 3.83667 0.21698 0.07220 0.01610 0.16245 0.24258 0.31189 0.17095 3.80896 0.22146 0.07913 0.02447 0.16802 0.24758 0.31645 0.17237 3.77599 0.22516 0.08500 0.03162 0.17269 0.25170 0.32084 0.17370 3.73615 0.22855 0.09055 0.03840 0.17703 0.25548 0.32433 0.17474 3.69873 0.23110 0.09486 0.04372 0.18036 0.25833 0.32838 0.17591 3.64875 0.23390 0.09975 0.04979 0.18407 0.26146 0.33181 0.17687 3.60091 0.23610 0.10378 0.05483 0.18706 0.26392 0.33481 0.17769 3.55448 0.23791 0.10723 0.05919 0.18958 0.26595 0.33846 0.17866 3.49260 0.23992 0.11130 0.06437 0.19247 0.26820 0.34171 0.17949 3.43191 0.24152 0.11480 0.06891 0.19488 0.27001 0.34461 0.18020 3.37326 0.24279 0.11782 0.07286 0.19689 0.27144 0.34736 0.18085 3.31328 0.24383 0.12060 0.07655 0.19867 0.27263 0.34993 0.18142 3.25355 0.24465 0.12308 0.07991 0.20018 0.27358 0.35224 0.18192 3.19633 0.24525 0.12523 0.08287 0.20143 0.27427 0.35432 0.18234 3.14198 0.24566 0.12710 0.08548 0.20245 0.27476 0.35631 0.18272 3.08710 0.24594 0.12881 0.08793 0.20331 0.27510 0.35817 0.18306 3.03300 0.24607 0.13034 0.09017 0.20402 0.27529 0.35985 0.18334 2.98157 0.24609 0.13167 0.09216 0.20458 0.27534 0.36136 0.18357 2.93298 0.24600 0.13281 0.09392 0.20499 0.27527 0.36282 0.18377 2.88413 0.24582 0.13385 0.09557 0.20531 0.27511 0.36419 0.18395 2.83612 0.24556 0.13478 0.09709 0.20553 0.27485 0.36543 0.18408 2.79057 0.24523 0.13558 0.09844 0.20565 0.27451 0.36655 0.18419 2.74762 0.24484 0.13626 0.09964 0.20570 0.27412 0.36762 0.18427 2.70447 0.24439 0.13687 0.10077 0.20567 0.27365 0.31575 0.17622 2.87346 0.13024 0.00000 0.00000 0.07635 0.16005 0.32066 0.17791 2.92594 0.13436 0.00000 0.00000 0.08137 0.16472 0.32798 0.18038 2.98621 0.14008 0.00000 0.00000 0.08843 0.17122 0.33329 0.18215 3.00748 0.14394 0.00561 0.00000 0.09328 0.17562 0.33881 0.18395 3.01923 0.14772 0.01165 0.00000 0.09809 0.17993 0.34347 0.18545 3.02197 0.15074 0.01663 0.00000 0.10199 0.18338 0.34784 0.18683 3.01871 0.15343 0.02120 0.00000 0.10552 0.18645 0.35236 0.18823 3.00948 0.15607 0.02581 0.00000 0.10904 0.18946 0.35617 0.18939 2.99706 0.15818 0.02964 0.00000 0.11191 0.19187 0.35974 0.19045 2.98155 0.16008 0.03316 0.00000 0.11452 0.19403 0.36249 0.19125 2.96697 0.16148 0.03584 0.00000 0.11648 0.19562 0.36809 0.19283 2.92993 0.16418 0.04123 0.00000 0.12033 0.19866 0.37262 0.19406 2.88140 0.16620 0.04552 0.00509 0.12332 0.20092 0.37735 0.19528 2.82179 0.16815 0.04993 0.01074 0.12631 0.20308 0.38190 0.19638 2.75587 0.16983 0.05412 0.01617 0.12904 0.20492 0.38570 0.19724 2.69341 0.17109 0.05757 0.02070 0.13120 0.20626 0.38924 0.19798 2.62850 0.17210 0.06074 0.02492 0.13309 0.20731 0.39196 0.19850 2.57362 0.17275 0.06315 0.02816 0.13446 0.20797 0.39501 0.19902 2.50627 0.17334 0.06581 0.03180 0.13587 0.20852 0.39748 0.19938 2.44631 0.17367 0.06794 0.03477 0.13692 0.20879 0.39957 0.19965 2.39124 0.17384 0.06971 0.03729 0.13772 0.20888 0.40198 0.19989 2.32156 0.17386 0.07174 0.04023 0.13852 0.20877 0.40403 0.20001 2.25651 0.17370 0.07342 0.04275 0.13907 0.20847 0.40576 0.20006 2.19617 0.17341 0.07481 0.04490 0.13943 0.20801 0.40730 0.20003 2.13661 0.17299 0.07603 0.04686 0.13963 0.20741 0.40865 0.19993 2.07916 0.17245 0.07708 0.04861 0.13969 0.20668 0.40978 0.19978 2.02566 0.17185 0.07795 0.05012 0.13964 0.20587 0.41071 0.19959 1.97608 0.17119 0.07865 0.05142 0.13949 0.20502 0.41153 0.19935 1.92714 0.17045 0.07926 0.05261 0.13925 0.20407 0.41222 0.19907 1.87988 0.16966 0.07977 0.05368 0.13893 0.20305 0.41278 0.19877 1.83581 0.16884 0.08017 0.05460 0.13857 0.20202 0.41322 0.19844 1.79488 0.16802 0.08049 0.05540 0.13816 0.20098 0.41357 0.19808 1.75438 0.16714 0.08074 0.05612 0.13769 0.19989 0.41384 0.19770 1.71519 0.16624 0.08093 0.05677 0.13718 0.19875 0.41402 0.19730 1.67853 0.16533 0.08106 0.05733 0.13665 0.19763 0.41413 0.19690 1.64440 0.16444 0.08114 0.05781 0.13610 0.19653 0.41418 0.19647 1.61053 0.16351 0.08118 0.05824 0.13552 0.19538 0.37659 0.19991 2.60936 0.11277 0.00000 0.00000 0.06930 0.15219 0.38140 0.20137 2.61342 0.11567 0.00000 0.00000 0.07305 0.15537 0.38844 0.20345 2.60732 0.11951 0.00000 0.00000 0.07817 0.15957 0.39345 0.20489 2.58571 0.12198 0.00433 0.00000 0.08157 0.16226 0.39857 0.20631 2.55628 0.12428 0.00892 0.00000 0.08483 0.16474 0.40282 0.20744 2.52658 0.12603 0.01264 0.00000 0.08740 0.16661 0.40674 0.20845 2.49484 0.12752 0.01599 0.00000 0.08965 0.16817 0.41071 0.20943 2.45810 0.12890 0.01933 0.00000 0.09183 0.16958 0.41398 0.21019 2.42396 0.12994 0.02205 0.00000 0.09355 0.17063 0.41699 0.21086 2.38936 0.13082 0.02453 0.00000 0.09506 0.17147 0.41926 0.21133 2.36092 0.13142 0.02639 0.00000 0.09617 0.17204 0.42375 0.21219 2.29786 0.13249 0.03007 0.00000 0.09825 0.17295 0.42724 0.21276 2.23297 0.13316 0.03293 0.00359 0.09976 0.17344 0.43073 0.21322 2.15899 0.13367 0.03581 0.00753 0.10117 0.17369 0.43389 0.21350 2.08194 0.13396 0.03848 0.01124 0.10235 0.17365 0.43637 0.21360 2.01244 0.13403 0.04062 0.01429 0.10317 0.17337 0.43852 0.21356 1.94309 0.13392 0.04255 0.01709 0.10380 0.17288 0.44005 0.21343 1.88635 0.13370 0.04397 0.01921 0.10417 0.17233 0.44161 0.21315 1.81877 0.13330 0.04550 0.02155 0.10445 0.17149 0.44275 0.21280 1.76024 0.13283 0.04669 0.02343 0.10456 0.17061 0.44358 0.21241 1.70771 0.13231 0.04766 0.02500 0.10455 0.16969 0.44439 0.21181 1.64276 0.13153 0.04871 0.02681 0.10440 0.16840 0.44490 0.21115 1.58349 0.13069 0.04955 0.02832 0.10413 0.16706 0.44517 0.21046 1.52960 0.12982 0.05022 0.02959 0.10378 0.16571 0.44524 0.20970 1.47735 0.12887 0.05077 0.03073 0.10333 0.16427 0.44514 0.20889 1.42781 0.12788 0.05120 0.03173 0.10280 0.16279 0.44489 0.20807 1.38237 0.12688 0.05153 0.03257 0.10224 0.16132 0.44452 0.20724 1.34082 0.12590 0.05177 0.03327 0.10165 0.15989 0.44403 0.20637 1.30033 0.12487 0.05195 0.03391 0.10101 0.15841 0.44343 0.20548 1.26171 0.12382 0.05206 0.03446 0.10034 0.15692 0.44276 0.20459 1.22608 0.12280 0.05212 0.03493 0.09966 0.15547 0.44204 0.20373 1.19333 0.12180 0.05214 0.03532 0.09899 0.15407 0.44123 0.20282 1.16123 0.12078 0.05212 0.03566 0.09828 0.15263 0.44034 0.20190 1.13046 0.11975 0.05206 0.03596 0.09756 0.15120 0.43943 0.20100 1.10192 0.11875 0.05197 0.03620 0.09684 0.14981 0.43850 0.20013 1.07556 0.11779 0.05186 0.03640 0.09615 0.14848 0.43750 0.19922 1.04960 0.11681 0.05173 0.03657 0.09543 0.14712 0.42899 0.21940 2.32960 0.09795 0.00000 0.00000 0.06296 0.14403 0.43325 0.22044 2.30344 0.09995 0.00000 0.00000 0.06570 0.14594 0.43936 0.22185 2.25740 0.10247 0.00000 0.00000 0.06932 0.14824 0.44362 0.22276 2.21146 0.10399 0.00336 0.00000 0.07163 0.14955 0.44785 0.22359 2.15965 0.10532 0.00687 0.00000 0.07377 0.15060 0.45128 0.22419 2.11309 0.10625 0.00968 0.00000 0.07539 0.15125 0.45435 0.22467 2.06717 0.10697 0.01217 0.00000 0.07676 0.15167 0.45737 0.22506 2.01741 0.10757 0.01462 0.00000 0.07802 0.15191 0.45979 0.22531 1.97357 0.10796 0.01660 0.00000 0.07897 0.15196 0.46192 0.22546 1.93092 0.10823 0.01837 0.00000 0.07976 0.15187 0.46347 0.22552 1.89699 0.10838 0.01968 0.00000 0.08031 0.15172 0.46638 0.22547 1.82460 0.10851 0.02224 0.00000 0.08126 0.15117 0.46845 0.22525 1.75589 0.10844 0.02420 0.00260 0.08187 0.15048 0.47028 0.22482 1.68008 0.10818 0.02613 0.00542 0.08233 0.14949 0.47169 0.22417 1.60342 0.10775 0.02787 0.00803 0.08259 0.14826 0.47255 0.22343 1.53604 0.10722 0.02924 0.01015 0.08266 0.14698 0.47304 0.22254 1.47028 0.10656 0.03044 0.01207 0.08258 0.14556 0.47319 0.22170 1.41749 0.10594 0.03130 0.01350 0.08241 0.14430 0.47306 0.22058 1.35571 0.10510 0.03221 0.01507 0.08210 0.14266 0.47269 0.21950 1.30310 0.10429 0.03289 0.01631 0.08173 0.14114 0.47215 0.21843 1.25656 0.10348 0.03342 0.01733 0.08132 0.13969 0.47121 0.21700 1.19986 0.10240 0.03398 0.01849 0.08072 0.13778 0.47008 0.21556 1.14888 0.10131 0.03439 0.01945 0.08007 0.13592 0.46881 0.21415 1.10315 0.10025 0.03469 0.02023 0.07940 0.13414 0.46737 0.21268 1.05934 0.09915 0.03492 0.02093 0.07868 0.13231 0.46579 0.21119 1.01827 0.09803 0.03507 0.02152 0.07792 0.13050 0.46415 0.20974 0.98100 0.09695 0.03516 0.02201 0.07717 0.12875 0.46248 0.20833 0.94724 0.09590 0.03520 0.02242 0.07643 0.12710 0.46070 0.20688 0.91463 0.09484 0.03520 0.02277 0.07566 0.12542 0.45884 0.20543 0.88379 0.09377 0.03516 0.02307 0.07488 0.12375 0.45698 0.20402 0.85556 0.09275 0.03509 0.02332 0.07412 0.12217 0.45514 0.20266 0.82980 0.09177 0.03500 0.02351 0.07339 0.12066 0.45322 0.20128 0.80472 0.09078 0.03488 0.02368 0.07264 0.11914 0.45125 0.19989 0.78084 0.08979 0.03474 0.02381 0.07188 0.11764 0.44931 0.19855 0.75882 0.08884 0.03459 0.02392 0.07116 0.11620 0.44742 0.19727 0.73860 0.08794 0.03444 0.02400 0.07046 0.11485 0.44546 0.19596 0.71880 0.08703 0.03427 0.02406 0.06975 0.11347 0.48358 0.23832 1.97927 0.08278 0.00000 0.00000 0.05575 0.13278 0.48671 0.23865 1.93200 0.08399 0.00000 0.00000 0.05751 0.13337 0.49101 0.23896 1.85956 0.08538 0.00000 0.00000 0.05972 0.13377 0.49385 0.23902 1.79920 0.08612 0.00245 0.00000 0.06103 0.13374 0.49651 0.23893 1.73520 0.08666 0.00497 0.00000 0.06217 0.13342 0.49851 0.23872 1.68030 0.08696 0.00695 0.00000 0.06296 0.13295 0.50018 0.23840 1.62812 0.08710 0.00869 0.00000 0.06357 0.13233 0.50165 0.23793 1.57345 0.08713 0.01037 0.00000 0.06407 0.13152 0.50268 0.23743 1.52665 0.08705 0.01170 0.00000 0.06439 0.13071 0.50346 0.23685 1.48221 0.08689 0.01288 0.00000 0.06460 0.12983 0.50392 0.23633 1.44756 0.08672 0.01374 0.00000 0.06471 0.12907 0.50446 0.23504 1.37545 0.08622 0.01540 0.00000 0.06479 0.12732 0.50444 0.23376 1.31044 0.08566 0.01663 0.00177 0.06471 0.12568 0.50394 0.23215 1.24048 0.08493 0.01782 0.00366 0.06448 0.12374 0.50291 0.23030 1.17136 0.08407 0.01887 0.00539 0.06410 0.12162 0.50157 0.22849 1.11186 0.08320 0.01967 0.00677 0.06365 0.11964 0.49985 0.22654 1.05488 0.08226 0.02034 0.00801 0.06312 0.11758 0.49818 0.22485 1.00986 0.08144 0.02081 0.00892 0.06261 0.11585 0.49586 0.22271 0.95798 0.08040 0.02128 0.00990 0.06194 0.11372 0.49358 0.22075 0.91445 0.07944 0.02162 0.01066 0.06130 0.11182 0.49131 0.21890 0.87643 0.07854 0.02187 0.01128 0.06067 0.11006 0.48819 0.21650 0.83071 0.07736 0.02211 0.01198 0.05983 0.10782 0.48506 0.21418 0.79016 0.07622 0.02227 0.01254 0.05901 0.10571 0.48195 0.21196 0.75421 0.07514 0.02236 0.01299 0.05821 0.10373 0.47869 0.20971 0.72016 0.07403 0.02241 0.01338 0.05738 0.10176 0.47536 0.20747 0.68857 0.07295 0.02241 0.01371 0.05655 0.09984 0.47210 0.20534 0.66018 0.07191 0.02238 0.01397 0.05576 0.09803 0.46893 0.20330 0.63469 0.07092 0.02232 0.01418 0.05500 0.09633 0.46567 0.20124 0.61026 0.06993 0.02224 0.01436 0.05422 0.09464 0.46237 0.19920 0.58734 0.06895 0.02214 0.01451 0.05346 0.09299 0.45918 0.19725 0.56651 0.06802 0.02202 0.01462 0.05273 0.09143 0.45610 0.19540 0.54764 0.06714 0.02190 0.01470 0.05203 0.08997 0.45295 0.19352 0.52937 0.06626 0.02176 0.01477 0.05133 0.08851 0.44978 0.19166 0.51208 0.06538 0.02162 0.01482 0.05064 0.08708 0.44673 0.18989 0.49623 0.06455 0.02147 0.01485 0.04998 0.08573 0.44380 0.18820 0.48175 0.06377 0.02132 0.01487 0.04935 0.08446 0.44080 0.18649 0.46764 0.06298 0.02116 0.01487 0.04871 0.08319 0.52690 0.25158 1.64716 0.07091 0.00000 0.00000 0.04920 0.12032 0.52855 0.25107 1.59099 0.07158 0.00000 0.00000 0.05023 0.11990 0.53053 0.25009 1.50883 0.07223 0.00000 0.00000 0.05141 0.11888 0.53160 0.24918 1.44497 0.07246 0.00178 0.00000 0.05202 0.11787 0.53234 0.24806 1.37924 0.07253 0.00358 0.00000 0.05247 0.11660 0.53266 0.24696 1.32422 0.07244 0.00498 0.00000 0.05271 0.11535 0.53266 0.24578 1.27298 0.07225 0.00619 0.00000 0.05283 0.11404 0.53236 0.24440 1.22030 0.07195 0.00735 0.00000 0.05283 0.11255 0.53182 0.24310 1.17598 0.07161 0.00826 0.00000 0.05276 0.11118 0.53108 0.24176 1.13450 0.07123 0.00905 0.00000 0.05262 0.10981 0.53033 0.24065 1.10256 0.07089 0.00962 0.00000 0.05247 0.10869 0.52829 0.23811 1.03716 0.07008 0.01070 0.00000 0.05205 0.10624 0.52608 0.23578 0.98001 0.06930 0.01149 0.00122 0.05159 0.10408 0.52313 0.23302 0.91955 0.06836 0.01223 0.00251 0.05099 0.10163 0.51961 0.23003 0.86081 0.06732 0.01286 0.00368 0.05028 0.09908 0.51605 0.22722 0.81100 0.06633 0.01333 0.00460 0.04959 0.09677 0.51214 0.22430 0.76394 0.06530 0.01372 0.00541 0.04885 0.09446 0.50869 0.22183 0.72720 0.06443 0.01397 0.00600 0.04821 0.09255 0.50427 0.21879 0.68534 0.06335 0.01422 0.00663 0.04740 0.09026 0.50017 0.21606 0.65060 0.06238 0.01438 0.00712 0.04666 0.08826 0.49627 0.21353 0.62055 0.06148 0.01450 0.00751 0.04598 0.08644 0.49115 0.21030 0.58476 0.06033 0.01459 0.00794 0.04509 0.08417 0.48618 0.20724 0.55335 0.05924 0.01463 0.00828 0.04424 0.08206 0.48140 0.20436 0.52575 0.05822 0.01463 0.00855 0.04344 0.08012 0.47652 0.20147 0.49982 0.05719 0.01461 0.00878 0.04263 0.07821 0.47166 0.19864 0.47596 0.05619 0.01456 0.00897 0.04184 0.07637 0.46698 0.19596 0.45467 0.05524 0.01449 0.00912 0.04110 0.07466 0.46251 0.19343 0.43568 0.05436 0.01441 0.00923 0.04039 0.07307 0.45797 0.19090 0.41759 0.05347 0.01432 0.00933 0.03969 0.07150 0.45347 0.18841 0.40072 0.05260 0.01421 0.00940 0.03900 0.06998 0.44915 0.18606 0.38546 0.05178 0.01410 0.00945 0.03834 0.06856 0.44504 0.18383 0.37171 0.05100 0.01399 0.00949 0.03773 0.06724 0.44087 0.18160 0.35846 0.05023 0.01387 0.00951 0.03711 0.06592 0.43674 0.17940 0.34598 0.04948 0.01375 0.00952 0.03651 0.06465 0.43278 0.17731 0.33458 0.04876 0.01362 0.00953 0.03594 0.06345 0.42901 0.17534 0.32421 0.04809 0.01350 0.00952 0.03540 0.06234 0.42518 0.17335 0.31413 0.04741 0.01337 0.00951 0.03487 0.06122 0.55983 0.25963 1.34564 0.06180 0.00000 0.00000 0.04323 0.10700 0.55977 0.25822 1.28828 0.06208 0.00000 0.00000 0.04372 0.10586 0.55913 0.25587 1.20657 0.06222 0.00000 0.00000 0.04417 0.10386 0.55823 0.25396 1.14554 0.06212 0.00128 0.00000 0.04430 0.10219 0.55686 0.25178 1.08393 0.06187 0.00257 0.00000 0.04429 0.10029 0.55533 0.24977 1.03320 0.06155 0.00356 0.00000 0.04416 0.09855 0.55356 0.24772 0.98662 0.06115 0.00440 0.00000 0.04396 0.09682 0.55137 0.24544 0.93936 0.06066 0.00520 0.00000 0.04366 0.09493 0.54920 0.24337 0.90009 0.06018 0.00581 0.00000 0.04335 0.09325 0.54689 0.24130 0.86373 0.05967 0.00635 0.00000 0.04300 0.09162 0.54490 0.23962 0.83598 0.05924 0.00673 0.00000 0.04271 0.09031 0.54026 0.23590 0.77982 0.05827 0.00743 0.00000 0.04200 0.08753 0.53584 0.23259 0.73182 0.05738 0.00794 0.00085 0.04135 0.08514 0.53051 0.22880 0.68171 0.05635 0.00840 0.00174 0.04057 0.08251 0.52458 0.22478 0.63364 0.05524 0.00879 0.00254 0.03972 0.07984 0.51892 0.22110 0.59335 0.05422 0.00907 0.00316 0.03893 0.07747 0.51296 0.21735 0.55569 0.05318 0.00929 0.00370 0.03812 0.07513 0.50787 0.21422 0.52657 0.05231 0.00943 0.00410 0.03745 0.07324 0.50153 0.21042 0.49367 0.05125 0.00956 0.00451 0.03662 0.07100 0.49579 0.20706 0.46661 0.05032 0.00963 0.00483 0.03588 0.06907 0.49044 0.20399 0.44338 0.04946 0.00968 0.00508 0.03521 0.06734 0.48356 0.20010 0.41592 0.04837 0.00970 0.00536 0.03436 0.06520 0.47699 0.19646 0.39201 0.04735 0.00969 0.00557 0.03356 0.06324 0.47078 0.19306 0.37115 0.04641 0.00967 0.00574 0.03282 0.06145 0.46452 0.18969 0.35168 0.04547 0.00962 0.00588 0.03208 0.05971 0.45837 0.18642 0.33387 0.04455 0.00956 0.00600 0.03137 0.05805 0.45251 0.18334 0.31807 0.04370 0.00949 0.00608 0.03070 0.05652 0.44698 0.18047 0.30404 0.04290 0.00942 0.00615 0.03008 0.05511 0.44142 0.17760 0.29075 0.04211 0.00933 0.00620 0.02947 0.05373 0.43594 0.17481 0.27840 0.04134 0.00924 0.00624 0.02887 0.05240 0.43073 0.17217 0.26728 0.04061 0.00915 0.00626 0.02830 0.05117 0.42581 0.16970 0.25729 0.03993 0.00906 0.00628 0.02778 0.05003 0.42085 0.16723 0.24770 0.03926 0.00897 0.00628 0.02726 0.04890 0.41596 0.16482 0.23869 0.03860 0.00887 0.00628 0.02675 0.04781 0.41131 0.16253 0.23049 0.03797 0.00877 0.00628 0.02627 0.04679 0.40690 0.16038 0.22304 0.03739 0.00868 0.00626 0.02582 0.04584 0.40246 0.15823 0.21583 0.03681 0.00858 0.00625 0.02537 0.04491 0.58321 0.26294 1.08077 0.05486 0.00000 0.00000 0.03781 0.09333 0.58131 0.26062 1.02685 0.05486 0.00000 0.00000 0.03791 0.09172 0.57788 0.25692 0.95148 0.05461 0.00000 0.00000 0.03785 0.08910 0.57491 0.25403 0.89669 0.05428 0.00092 0.00000 0.03765 0.08705 0.57135 0.25082 0.84218 0.05381 0.00184 0.00000 0.03733 0.08480 0.56794 0.24794 0.79785 0.05332 0.00253 0.00000 0.03698 0.08281 0.56438 0.24508 0.75758 0.05279 0.00311 0.00000 0.03658 0.08087 0.56029 0.24196 0.71716 0.05217 0.00366 0.00000 0.03611 0.07881 0.55650 0.23917 0.68389 0.05160 0.00408 0.00000 0.03566 0.07701 0.55264 0.23643 0.65333 0.05101 0.00444 0.00000 0.03520 0.07528 0.54945 0.23423 0.63019 0.05053 0.00469 0.00000 0.03482 0.07392 0.54230 0.22947 0.58378 0.04947 0.00515 0.00000 0.03399 0.07107 0.53579 0.22530 0.54476 0.04852 0.00548 0.00060 0.03325 0.06867 0.52822 0.22062 0.50445 0.04745 0.00577 0.00122 0.03240 0.06607 0.52007 0.21574 0.46618 0.04632 0.00601 0.00177 0.03152 0.06347 0.51249 0.21133 0.43442 0.04530 0.00618 0.00220 0.03072 0.06121 0.50470 0.20690 0.40498 0.04427 0.00630 0.00257 0.02992 0.05901 0.49816 0.20326 0.38238 0.04342 0.00638 0.00284 0.02926 0.05724 0.49014 0.19887 0.35704 0.04240 0.00644 0.00312 0.02847 0.05518 0.48299 0.19503 0.33634 0.04150 0.00647 0.00333 0.02779 0.05342 0.47641 0.19154 0.31867 0.04069 0.00648 0.00350 0.02716 0.05186 0.46803 0.18717 0.29791 0.03966 0.00648 0.00368 0.02639 0.04994 0.46015 0.18311 0.27995 0.03871 0.00646 0.00382 0.02567 0.04821 0.45276 0.17936 0.26436 0.03784 0.00642 0.00393 0.02501 0.04664 0.44540 0.17566 0.24989 0.03697 0.00638 0.00402 0.02436 0.04513 0.43821 0.17209 0.23671 0.03614 0.00632 0.00409 0.02374 0.04369 0.43143 0.16876 0.22507 0.03536 0.00626 0.00414 0.02316 0.04238 0.42507 0.16567 0.21477 0.03464 0.00620 0.00418 0.02262 0.04118 0.41872 0.16260 0.20504 0.03393 0.00613 0.00421 0.02210 0.04001 0.41250 0.15962 0.19603 0.03324 0.00606 0.00423 0.02159 0.03889 0.40663 0.15683 0.18795 0.03259 0.00599 0.00424 0.02112 0.03785 0.40110 0.15422 0.18070 0.03199 0.00593 0.00425 0.02067 0.03690 0.39557 0.15162 0.17376 0.03139 0.00585 0.00425 0.02024 0.03596 0.39014 0.14910 0.16725 0.03081 0.00578 0.00424 0.01982 0.03506 0.38500 0.14671 0.16135 0.03026 0.00571 0.00424 0.01942 0.03423 0.38015 0.14448 0.15599 0.02975 0.00564 0.00422 0.01905 0.03345 0.37528 0.14225 0.15081 0.02924 0.00557 0.00421 0.01868 0.03268 0.59783 0.26202 0.85425 0.04954 0.00000 0.00000 0.03288 0.07981 0.59405 0.25884 0.80631 0.04930 0.00000 0.00000 0.03272 0.07795 0.58779 0.25385 0.74027 0.04875 0.00000 0.00000 0.03232 0.07503 0.58274 0.25004 0.69324 0.04824 0.00066 0.00000 0.03191 0.07281 0.57701 0.24589 0.64699 0.04760 0.00130 0.00000 0.03141 0.07043 0.57175 0.24222 0.60975 0.04699 0.00178 0.00000 0.03092 0.06837 0.56643 0.23863 0.57623 0.04635 0.00219 0.00000 0.03041 0.06639 0.56052 0.23475 0.54287 0.04564 0.00256 0.00000 0.02984 0.06432 0.55518 0.23134 0.51561 0.04500 0.00285 0.00000 0.02933 0.06253 0.54986 0.22802 0.49076 0.04436 0.00309 0.00000 0.02882 0.06084 0.54553 0.22538 0.47205 0.04384 0.00326 0.00000 0.02842 0.05952 0.53605 0.21972 0.43480 0.04271 0.00356 0.00000 0.02754 0.05678 0.52763 0.21485 0.40390 0.04173 0.00377 0.00042 0.02678 0.05451 0.51804 0.20944 0.37224 0.04064 0.00396 0.00086 0.02593 0.05209 0.50793 0.20388 0.34244 0.03950 0.00410 0.00125 0.02508 0.04970 0.49868 0.19891 0.31790 0.03849 0.00420 0.00155 0.02431 0.04765 0.48931 0.19398 0.29531 0.03747 0.00427 0.00181 0.02356 0.04567 0.48153 0.18995 0.27808 0.03665 0.00431 0.00199 0.02295 0.04410 0.47211 0.18514 0.25886 0.03566 0.00434 0.00219 0.02223 0.04229 0.46380 0.18097 0.24324 0.03480 0.00436 0.00233 0.02161 0.04075 0.45621 0.17721 0.22998 0.03403 0.00436 0.00245 0.02105 0.03940 0.44665 0.17252 0.21448 0.03306 0.00434 0.00257 0.02037 0.03775 0.43772 0.16820 0.20112 0.03217 0.00432 0.00266 0.01974 0.03628 0.42943 0.16424 0.18958 0.03136 0.00428 0.00274 0.01916 0.03495 0.42121 0.16035 0.17890 0.03056 0.00425 0.00280 0.01860 0.03368 0.41326 0.15662 0.16921 0.02979 0.00420 0.00284 0.01807 0.03248 0.40580 0.15316 0.16067 0.02908 0.00415 0.00288 0.01758 0.03139 0.39884 0.14996 0.15314 0.02842 0.00411 0.00290 0.01713 0.03040 0.39192 0.14680 0.14605 0.02777 0.00406 0.00292 0.01668 0.02944 0.38519 0.14375 0.13949 0.02715 0.00400 0.00293 0.01626 0.02852 0.37886 0.14090 0.13361 0.02656 0.00395 0.00294 0.01586 0.02768 0.37294 0.13825 0.12836 0.02602 0.00390 0.00294 0.01550 0.02691 0.36702 0.13562 0.12333 0.02549 0.00385 0.00294 0.01514 0.02615 0.36125 0.13307 0.11863 0.02497 0.00380 0.00294 0.01479 0.02543 0.35580 0.13068 0.11436 0.02448 0.00375 0.00293 0.01447 0.02476 0.35068 0.12844 0.11049 0.02403 0.00370 0.00292 0.01417 0.02414 0.34556 0.12621 0.10676 0.02357 0.00365 0.00291 0.01387 0.02353 0.60446 0.25738 0.66493 0.04531 0.00000 0.00000 0.02844 0.06690 0.59882 0.25341 0.62406 0.04487 0.00000 0.00000 0.02811 0.06495 0.58979 0.24727 0.56845 0.04408 0.00000 0.00000 0.02749 0.06197 0.58273 0.24264 0.52948 0.04341 0.00046 0.00000 0.02696 0.05976 0.57492 0.23766 0.49153 0.04264 0.00091 0.00000 0.02635 0.05742 0.56790 0.23330 0.46124 0.04192 0.00125 0.00000 0.02579 0.05542 0.56093 0.22908 0.43417 0.04120 0.00153 0.00000 0.02523 0.05353 0.55332 0.22457 0.40742 0.04042 0.00178 0.00000 0.02463 0.05156 0.54655 0.22063 0.38571 0.03972 0.00197 0.00000 0.02410 0.04989 0.53989 0.21684 0.36603 0.03903 0.00214 0.00000 0.02358 0.04831 0.53454 0.21384 0.35128 0.03848 0.00225 0.00000 0.02317 0.04710 0.52296 0.20747 0.32212 0.03731 0.00245 0.00000 0.02230 0.04459 0.51286 0.20205 0.29816 0.03631 0.00259 0.00030 0.02157 0.04255 0.50152 0.19610 0.27380 0.03520 0.00270 0.00062 0.02077 0.04039 0.48973 0.19005 0.25102 0.03406 0.00280 0.00090 0.01997 0.03829 0.47908 0.18469 0.23238 0.03306 0.00286 0.00111 0.01927 0.03649 0.46841 0.17941 0.21532 0.03206 0.00290 0.00129 0.01859 0.03479 0.45963 0.17514 0.20236 0.03126 0.00292 0.00142 0.01804 0.03344 0.44909 0.17007 0.18798 0.03030 0.00293 0.00156 0.01740 0.03190 0.43987 0.16570 0.17634 0.02948 0.00293 0.00166 0.01685 0.03061 0.43151 0.16179 0.16649 0.02875 0.00293 0.00174 0.01636 0.02948 0.42105 0.15694 0.15501 0.02783 0.00291 0.00183 0.01576 0.02811 0.41136 0.15251 0.14516 0.02700 0.00289 0.00190 0.01522 0.02689 0.40242 0.14845 0.13667 0.02624 0.00287 0.00195 0.01473 0.02580 0.39361 0.14451 0.12884 0.02549 0.00283 0.00199 0.01426 0.02477 0.38512 0.14074 0.12175 0.02478 0.00280 0.00202 0.01381 0.02380 0.37722 0.13725 0.11551 0.02413 0.00277 0.00205 0.01339 0.02292 0.36987 0.13405 0.11002 0.02353 0.00273 0.00206 0.01302 0.02213 0.36261 0.13089 0.10485 0.02294 0.00269 0.00207 0.01265 0.02136 0.35557 0.12786 0.10008 0.02237 0.00266 0.00208 0.01230 0.02063 0.34897 0.12504 0.09581 0.02184 0.00262 0.00209 0.01197 0.01997 0.34282 0.12242 0.09199 0.02135 0.00258 0.00209 0.01167 0.01936 0.33671 0.11984 0.08835 0.02087 0.00255 0.00209 0.01138 0.01877 0.33075 0.11734 0.08494 0.02041 0.00251 0.00208 0.01109 0.01820 0.32516 0.11500 0.08184 0.01997 0.00247 0.00208 0.01083 0.01768 0.31992 0.11282 0.07904 0.01957 0.00244 0.00207 0.01058 0.01720 0.31469 0.11065 0.07634 0.01916 0.00241 0.00206 0.01034 0.01673 0.60391 0.24956 0.50976 0.04178 0.00000 0.00000 0.02445 0.05492 0.59648 0.24490 0.47613 0.04118 0.00000 0.00000 0.02401 0.05303 0.58482 0.23777 0.43085 0.04017 0.00000 0.00000 0.02327 0.05018 0.57587 0.23244 0.39953 0.03937 0.00032 0.00000 0.02268 0.04809 0.56613 0.22677 0.36929 0.03847 0.00064 0.00000 0.02202 0.04592 0.55748 0.22185 0.34533 0.03767 0.00087 0.00000 0.02144 0.04407 0.54901 0.21711 0.32406 0.03689 0.00106 0.00000 0.02088 0.04234 0.53986 0.21209 0.30316 0.03604 0.00123 0.00000 0.02028 0.04056 0.53180 0.20775 0.28629 0.03529 0.00136 0.00000 0.01975 0.03906 0.52396 0.20359 0.27107 0.03457 0.00147 0.00000 0.01925 0.03766 0.51771 0.20032 0.25971 0.03400 0.00155 0.00000 0.01886 0.03658 0.50433 0.19343 0.23736 0.03280 0.00168 0.00000 0.01804 0.03439 0.49279 0.18763 0.21915 0.03177 0.00177 0.00022 0.01736 0.03261 0.47998 0.18131 0.20073 0.03066 0.00184 0.00045 0.01663 0.03076 0.46682 0.17494 0.18361 0.02953 0.00190 0.00065 0.01590 0.02897 0.45505 0.16935 0.16966 0.02854 0.00194 0.00081 0.01527 0.02746 0.44336 0.16389 0.15695 0.02757 0.00196 0.00094 0.01466 0.02604 0.43382 0.15949 0.14733 0.02679 0.00197 0.00104 0.01418 0.02492 0.42245 0.15431 0.13668 0.02587 0.00198 0.00114 0.01362 0.02366 0.41257 0.14987 0.12810 0.02509 0.00198 0.00121 0.01315 0.02260 0.40367 0.14591 0.12085 0.02439 0.00197 0.00127 0.01273 0.02168 0.39259 0.14104 0.11242 0.02353 0.00196 0.00134 0.01222 0.02058 0.38240 0.13661 0.10520 0.02274 0.00194 0.00138 0.01176 0.01961 0.37304 0.13259 0.09899 0.02203 0.00192 0.00142 0.01134 0.01874 0.36387 0.12868 0.09326 0.02134 0.00190 0.00145 0.01094 0.01792 0.35509 0.12497 0.08809 0.02069 0.00187 0.00147 0.01057 0.01716 0.34694 0.12155 0.08354 0.02009 0.00185 0.00149 0.01022 0.01647 0.33940 0.11842 0.07954 0.01954 0.00182 0.00150 0.00991 0.01585 0.33197 0.11535 0.07577 0.01900 0.00180 0.00151 0.00961 0.01525 0.32480 0.11241 0.07230 0.01849 0.00177 0.00152 0.00932 0.01469 0.31811 0.10969 0.06920 0.01801 0.00175 0.00152 0.00905 0.01418 0.31189 0.10717 0.06642 0.01757 0.00172 0.00152 0.00881 0.01371 0.30572 0.10468 0.06377 0.01714 0.00169 0.00152 0.00857 0.01326 0.29974 0.10229 0.06128 0.01672 0.00167 0.00151 0.00834 0.01283 0.29414 0.10006 0.05903 0.01633 0.00164 0.00151 0.00813 0.01243 0.28890 0.09798 0.05700 0.01597 0.00162 0.00150 0.00793 0.01207 0.28369 0.09593 0.05503 0.01561 0.00160 0.00150 0.00773 0.01171 0.59691 0.23909 0.38497 0.03862 0.00000 0.00000 0.02088 0.04414 0.58781 0.23385 0.35816 0.03788 0.00000 0.00000 0.02039 0.04240 0.57372 0.22590 0.32238 0.03669 0.00000 0.00000 0.01959 0.03980 0.56306 0.22002 0.29791 0.03578 0.00022 0.00000 0.01899 0.03792 0.55156 0.21380 0.27445 0.03479 0.00044 0.00000 0.01833 0.03598 0.54146 0.20844 0.25598 0.03392 0.00060 0.00000 0.01776 0.03435 0.53166 0.20332 0.23966 0.03308 0.00073 0.00000 0.01721 0.03283 0.52117 0.19794 0.22371 0.03218 0.00085 0.00000 0.01664 0.03128 0.51201 0.19330 0.21090 0.03140 0.00093 0.00000 0.01614 0.02999 0.50316 0.18889 0.19938 0.03066 0.00101 0.00000 0.01567 0.02878 0.49615 0.18543 0.19081 0.03007 0.00106 0.00000 0.01531 0.02786 0.48126 0.17821 0.17402 0.02885 0.00114 0.00000 0.01456 0.02601 0.46856 0.17218 0.16042 0.02782 0.00120 0.00017 0.01394 0.02452 0.45459 0.16566 0.14672 0.02671 0.00125 0.00034 0.01328 0.02298 0.44036 0.15914 0.13403 0.02560 0.00129 0.00049 0.01263 0.02151 0.42776 0.15346 0.12374 0.02463 0.00131 0.00061 0.01208 0.02027 0.41534 0.14796 0.11438 0.02370 0.00133 0.00071 0.01155 0.01912 0.40526 0.14355 0.10731 0.02295 0.00133 0.00078 0.01114 0.01823 0.39332 0.13839 0.09951 0.02207 0.00134 0.00085 0.01065 0.01722 0.38302 0.13399 0.09322 0.02133 0.00133 0.00091 0.01025 0.01638 0.37379 0.13009 0.08792 0.02067 0.00133 0.00095 0.00989 0.01566 0.36236 0.12531 0.08177 0.01986 0.00132 0.00100 0.00946 0.01480 0.35190 0.12098 0.07650 0.01913 0.00131 0.00104 0.00907 0.01404 0.34235 0.11707 0.07197 0.01848 0.00129 0.00106 0.00873 0.01337 0.33304 0.11329 0.06780 0.01784 0.00127 0.00109 0.00840 0.01274 0.32415 0.10972 0.06403 0.01724 0.00126 0.00110 0.00808 0.01216 0.31594 0.10644 0.06072 0.01669 0.00124 0.00112 0.00780 0.01163 0.30838 0.10345 0.05780 0.01619 0.00122 0.00113 0.00755 0.01116 0.30095 0.10053 0.05506 0.01571 0.00120 0.00113 0.00730 0.01071 0.29381 0.09774 0.05252 0.01524 0.00119 0.00114 0.00706 0.01029 0.28717 0.09516 0.05026 0.01481 0.00117 0.00114 0.00685 0.00990 0.28101 0.09278 0.04823 0.01442 0.00115 0.00114 0.00665 0.00955 0.27492 0.09045 0.04629 0.01403 0.00113 0.00114 0.00645 0.00921 0.26904 0.08820 0.04448 0.01366 0.00111 0.00113 0.00627 0.00889 0.26354 0.08611 0.04284 0.01332 0.00110 0.00113 0.00610 0.00860 0.25841 0.08418 0.04135 0.01300 0.00108 0.00112 0.00594 0.00833 0.25332 0.08226 0.03991 0.01268 0.00106 0.00112 0.00579 0.00807 0.58420 0.22645 0.28636 0.03561 0.00000 0.00000 0.01771 0.03471 0.57360 0.22077 0.26561 0.03476 0.00000 0.00000 0.01720 0.03317 0.55733 0.21221 0.23814 0.03343 0.00000 0.00000 0.01640 0.03090 0.54514 0.20592 0.21952 0.03244 0.00015 0.00000 0.01581 0.02927 0.53212 0.19931 0.20178 0.03138 0.00030 0.00000 0.01518 0.02760 0.52077 0.19365 0.18788 0.03045 0.00041 0.00000 0.01464 0.02621 0.50984 0.18827 0.17566 0.02957 0.00050 0.00000 0.01412 0.02493 0.49822 0.18264 0.16376 0.02865 0.00058 0.00000 0.01359 0.02363 0.48814 0.17783 0.15423 0.02785 0.00064 0.00000 0.01314 0.02255 0.47846 0.17327 0.14569 0.02709 0.00069 0.00000 0.01271 0.02155 0.47084 0.16972 0.13936 0.02650 0.00072 0.00000 0.01238 0.02079 0.45477 0.16234 0.12697 0.02528 0.00078 0.00000 0.01170 0.01927 0.44118 0.15622 0.11698 0.02426 0.00082 0.00013 0.01115 0.01806 0.42634 0.14966 0.10694 0.02317 0.00085 0.00026 0.01057 0.01682 0.41137 0.14315 0.09767 0.02209 0.00087 0.00038 0.01001 0.01564 0.39821 0.13751 0.09016 0.02116 0.00089 0.00046 0.00953 0.01467 0.38532 0.13208 0.08334 0.02027 0.00090 0.00054 0.00908 0.01377 0.37493 0.12776 0.07820 0.01956 0.00090 0.00060 0.00872 0.01307 0.36269 0.12273 0.07252 0.01873 0.00090 0.00066 0.00831 0.01229 0.35218 0.11846 0.06795 0.01804 0.00090 0.00070 0.00797 0.01164 0.34281 0.11469 0.06410 0.01742 0.00090 0.00073 0.00767 0.01109 0.33127 0.11010 0.05962 0.01668 0.00089 0.00077 0.00731 0.01043 0.32077 0.10597 0.05579 0.01601 0.00088 0.00080 0.00699 0.00986 0.31122 0.10224 0.05249 0.01541 0.00087 0.00082 0.00670 0.00936 0.30194 0.09866 0.04946 0.01483 0.00086 0.00084 0.00643 0.00888 0.29313 0.09529 0.04671 0.01429 0.00085 0.00085 0.00617 0.00845 0.28502 0.09220 0.04429 0.01379 0.00083 0.00086 0.00594 0.00806 0.27758 0.08940 0.04216 0.01334 0.00082 0.00087 0.00573 0.00771 0.27029 0.08667 0.04016 0.01291 0.00081 0.00087 0.00553 0.00738 0.26331 0.08407 0.03831 0.01249 0.00080 0.00087 0.00534 0.00707 0.25683 0.08167 0.03665 0.01211 0.00078 0.00087 0.00517 0.00679 0.25085 0.07947 0.03517 0.01176 0.00077 0.00087 0.00501 0.00653 0.24495 0.07732 0.03375 0.01142 0.00076 0.00087 0.00485 0.00629 0.23926 0.07525 0.03242 0.01109 0.00075 0.00087 0.00471 0.00605 0.23396 0.07333 0.03121 0.01079 0.00073 0.00087 0.00457 0.00584 0.22903 0.07155 0.03012 0.01051 0.00072 0.00086 0.00444 0.00565 0.22415 0.06980 0.02906 0.01024 0.00071 0.00086 0.00432 0.00546 0.56651 0.21215 0.20976 0.03262 0.00000 0.00000 0.01491 0.02666 0.55458 0.20615 0.19417 0.03169 0.00000 0.00000 0.01441 0.02535 0.53644 0.19717 0.17367 0.03027 0.00000 0.00000 0.01364 0.02344 0.52295 0.19062 0.15989 0.02921 0.00010 0.00000 0.01308 0.02208 0.50863 0.18377 0.14681 0.02810 0.00020 0.00000 0.01249 0.02070 0.49625 0.17794 0.13661 0.02716 0.00028 0.00000 0.01200 0.01956 0.48439 0.17243 0.12767 0.02626 0.00034 0.00000 0.01153 0.01851 0.47187 0.16669 0.11898 0.02532 0.00039 0.00000 0.01104 0.01745 0.46108 0.16181 0.11205 0.02452 0.00043 0.00000 0.01063 0.01658 0.45076 0.15720 0.10585 0.02377 0.00046 0.00000 0.01025 0.01578 0.44268 0.15363 0.10125 0.02318 0.00049 0.00000 0.00996 0.01517 0.42574 0.14626 0.09228 0.02198 0.00053 0.00000 0.00937 0.01396 0.41153 0.14018 0.08505 0.02099 0.00055 0.00010 0.00888 0.01301 0.39613 0.13371 0.07779 0.01994 0.00057 0.00020 0.00838 0.01204 0.38071 0.12734 0.07109 0.01891 0.00059 0.00030 0.00790 0.01113 0.36724 0.12186 0.06567 0.01803 0.00060 0.00037 0.00749 0.01039 0.35414 0.11661 0.06075 0.01719 0.00061 0.00043 0.00710 0.00970 0.34363 0.11246 0.05703 0.01653 0.00061 0.00047 0.00680 0.00917 0.33132 0.10764 0.05292 0.01576 0.00061 0.00052 0.00646 0.00858 0.32082 0.10358 0.04962 0.01512 0.00061 0.00055 0.00617 0.00810 0.31148 0.10001 0.04683 0.01456 0.00060 0.00058 0.00592 0.00769 0.30004 0.09568 0.04358 0.01388 0.00060 0.00061 0.00562 0.00720 0.28968 0.09180 0.04080 0.01327 0.00059 0.00063 0.00536 0.00678 0.28030 0.08832 0.03840 0.01273 0.00059 0.00065 0.00513 0.00641 0.27122 0.08498 0.03619 0.01221 0.00058 0.00066 0.00490 0.00607 0.26264 0.08185 0.03418 0.01173 0.00057 0.00067 0.00470 0.00575 0.25476 0.07900 0.03242 0.01129 0.00056 0.00068 0.00451 0.00547 0.24756 0.07641 0.03086 0.01089 0.00055 0.00069 0.00434 0.00522 0.24053 0.07391 0.02939 0.01050 0.00054 0.00069 0.00418 0.00498 0.23382 0.07153 0.02803 0.01014 0.00054 0.00069 0.00403 0.00476 0.22761 0.06934 0.02681 0.00981 0.00053 0.00069 0.00389 0.00456 0.22189 0.06734 0.02572 0.00950 0.00052 0.00069 0.00376 0.00438 0.21626 0.06538 0.02468 0.00921 0.00051 0.00069 0.00364 0.00421 0.21085 0.06351 0.02370 0.00892 0.00050 0.00069 0.00352 0.00404 0.20582 0.06177 0.02281 0.00866 0.00049 0.00068 0.00341 0.00389 0.20115 0.06017 0.02200 0.00842 0.00049 0.00068 0.00331 0.00376 0.19654 0.05860 0.02122 0.00818 0.00048 0.00068 0.00322 0.00362 0.54452 0.19663 0.15124 0.02959 0.00000 0.00000 0.01245 0.01998 0.53148 0.19045 0.13989 0.02860 0.00000 0.00000 0.01198 0.01891 0.51177 0.18125 0.12505 0.02713 0.00000 0.00000 0.01127 0.01736 0.49722 0.17457 0.11512 0.02605 0.00007 0.00000 0.01075 0.01626 0.48188 0.16764 0.10573 0.02492 0.00014 0.00000 0.01022 0.01516 0.46869 0.16175 0.09843 0.02397 0.00019 0.00000 0.00977 0.01425 0.45612 0.15622 0.09204 0.02308 0.00023 0.00000 0.00935 0.01342 0.44293 0.15050 0.08585 0.02215 0.00026 0.00000 0.00892 0.01259 0.43162 0.14565 0.08091 0.02136 0.00029 0.00000 0.00856 0.01190 0.42086 0.14109 0.07649 0.02063 0.00031 0.00000 0.00822 0.01128 0.41246 0.13757 0.07322 0.02006 0.00033 0.00000 0.00797 0.01081 0.39497 0.13034 0.06683 0.01891 0.00035 0.00000 0.00745 0.00988 0.38040 0.12443 0.06167 0.01796 0.00037 0.00008 0.00704 0.00916 0.36472 0.11817 0.05649 0.01697 0.00039 0.00017 0.00661 0.00842 0.34913 0.11204 0.05171 0.01601 0.00040 0.00024 0.00619 0.00774 0.33560 0.10682 0.04782 0.01519 0.00040 0.00030 0.00585 0.00718 0.32252 0.10183 0.04429 0.01442 0.00041 0.00035 0.00553 0.00668 0.31208 0.09791 0.04162 0.01381 0.00041 0.00039 0.00527 0.00629 0.29992 0.09338 0.03866 0.01311 0.00041 0.00042 0.00499 0.00586 0.28958 0.08959 0.03628 0.01253 0.00041 0.00045 0.00475 0.00551 0.28044 0.08626 0.03426 0.01203 0.00041 0.00047 0.00455 0.00521 0.26928 0.08224 0.03191 0.01142 0.00040 0.00050 0.00431 0.00486 0.25922 0.07866 0.02988 0.01088 0.00040 0.00051 0.00409 0.00456 0.25015 0.07546 0.02814 0.01040 0.00040 0.00053 0.00390 0.00430 0.24141 0.07240 0.02652 0.00994 0.00039 0.00054 0.00372 0.00406 0.23318 0.06954 0.02506 0.00951 0.00039 0.00055 0.00355 0.00383 0.22565 0.06695 0.02376 0.00913 0.00038 0.00055 0.00341 0.00364 0.21878 0.06461 0.02262 0.00878 0.00037 0.00056 0.00327 0.00346 0.21211 0.06234 0.02154 0.00845 0.00037 0.00056 0.00314 0.00329 0.20574 0.06020 0.02054 0.00814 0.00036 0.00056 0.00302 0.00314 0.19988 0.05824 0.01964 0.00785 0.00036 0.00056 0.00291 0.00300 0.19449 0.05644 0.01884 0.00759 0.00035 0.00056 0.00281 0.00288 0.18920 0.05469 0.01807 0.00733 0.00035 0.00056 0.00271 0.00276 0.18413 0.05302 0.01734 0.00709 0.00034 0.00056 0.00262 0.00264 0.17942 0.05148 0.01668 0.00687 0.00033 0.00055 0.00254 0.00254 0.17507 0.05006 0.01609 0.00666 0.00033 0.00055 0.00246 0.00245 0.17077 0.04867 0.01551 0.00646 0.00032 0.00055 0.00238 0.00236 0.51892 0.18032 0.10730 0.02649 0.00000 0.00000 0.01031 0.01459 0.50499 0.17409 0.09931 0.02549 0.00000 0.00000 0.00987 0.01374 0.48405 0.16485 0.08891 0.02401 0.00000 0.00000 0.00923 0.01253 0.46869 0.15818 0.08197 0.02293 0.00005 0.00000 0.00876 0.01167 0.45259 0.15129 0.07542 0.02183 0.00009 0.00000 0.00829 0.01082 0.43881 0.14547 0.07033 0.02089 0.00013 0.00000 0.00789 0.01012 0.42576 0.14003 0.06588 0.02002 0.00015 0.00000 0.00752 0.00948 0.41212 0.13442 0.06157 0.01913 0.00018 0.00000 0.00715 0.00885 0.40049 0.12969 0.05812 0.01838 0.00020 0.00000 0.00684 0.00833 0.38947 0.12526 0.05504 0.01768 0.00021 0.00000 0.00655 0.00786 0.38091 0.12185 0.05275 0.01714 0.00022 0.00000 0.00633 0.00751 0.36316 0.11489 0.04827 0.01605 0.00024 0.00000 0.00589 0.00682 0.34848 0.10923 0.04464 0.01517 0.00025 0.00007 0.00553 0.00628 0.33279 0.10328 0.04099 0.01425 0.00026 0.00014 0.00517 0.00575 0.31728 0.09750 0.03759 0.01337 0.00027 0.00020 0.00483 0.00525 0.30391 0.09259 0.03483 0.01263 0.00027 0.00025 0.00454 0.00485 0.29105 0.08794 0.03231 0.01193 0.00028 0.00029 0.00427 0.00448 0.28084 0.08429 0.03040 0.01138 0.00028 0.00032 0.00406 0.00421 0.26900 0.08011 0.02828 0.01076 0.00028 0.00035 0.00383 0.00390 0.25899 0.07662 0.02656 0.01024 0.00028 0.00038 0.00364 0.00366 0.25017 0.07357 0.02510 0.00980 0.00028 0.00040 0.00347 0.00345 0.23946 0.06990 0.02339 0.00926 0.00027 0.00042 0.00328 0.00321 0.22983 0.06665 0.02192 0.00879 0.00027 0.00043 0.00310 0.00300 0.22119 0.06375 0.02064 0.00837 0.00027 0.00044 0.00295 0.00282 0.21290 0.06100 0.01946 0.00798 0.00026 0.00045 0.00281 0.00265 0.20511 0.05843 0.01839 0.00761 0.00026 0.00045 0.00267 0.00250 0.19802 0.05611 0.01743 0.00728 0.00026 0.00046 0.00255 0.00236 0.19157 0.05402 0.01659 0.00699 0.00025 0.00046 0.00245 0.00224 0.18531 0.05200 0.01580 0.00670 0.00025 0.00046 0.00235 0.00213 0.17937 0.05010 0.01506 0.00644 0.00025 0.00046 0.00225 0.00203 0.17391 0.04836 0.01439 0.00619 0.00024 0.00046 0.00216 0.00193 0.16890 0.04678 0.01380 0.00597 0.00024 0.00046 0.00209 0.00185 0.16400 0.04524 0.01322 0.00576 0.00023 0.00046 0.00201 0.00177 0.15931 0.04377 0.01269 0.00556 0.00023 0.00046 0.00194 0.00169 0.15497 0.04242 0.01220 0.00537 0.00023 0.00046 0.00187 0.00163 0.15096 0.04118 0.01175 0.00520 0.00022 0.00045 0.00181 0.00156 0.14702 0.03996 0.01132 0.00503 0.00022 0.00045 0.00175 0.00150 0.49034 0.16360 0.07487 0.02337 0.00000 0.00000 0.00846 0.01035 0.47575 0.15743 0.06946 0.02238 0.00000 0.00000 0.00806 0.00971 0.45393 0.14833 0.06245 0.02093 0.00000 0.00000 0.00749 0.00879 0.43802 0.14179 0.05776 0.01990 0.00003 0.00000 0.00708 0.00815 0.42141 0.13506 0.05333 0.01883 0.00006 0.00000 0.00667 0.00751 0.40729 0.12941 0.04989 0.01794 0.00008 0.00000 0.00632 0.00699 0.39396 0.12415 0.04687 0.01712 0.00010 0.00000 0.00601 0.00652 0.38010 0.11874 0.04394 0.01628 0.00012 0.00000 0.00568 0.00605 0.36833 0.11421 0.04159 0.01557 0.00013 0.00000 0.00542 0.00568 0.35724 0.10998 0.03947 0.01492 0.00014 0.00000 0.00517 0.00533 0.34864 0.10674 0.03790 0.01443 0.00015 0.00000 0.00498 0.00508 0.33093 0.10015 0.03481 0.01342 0.00016 0.00000 0.00461 0.00458 0.31636 0.09482 0.03229 0.01262 0.00017 0.00006 0.00432 0.00420 0.30089 0.08926 0.02973 0.01179 0.00018 0.00012 0.00401 0.00382 0.28570 0.08389 0.02734 0.01100 0.00018 0.00018 0.00373 0.00347 0.27268 0.07935 0.02539 0.01033 0.00018 0.00022 0.00349 0.00319 0.26023 0.07508 0.02359 0.00971 0.00019 0.00025 0.00327 0.00293 0.25039 0.07174 0.02222 0.00923 0.00019 0.00028 0.00311 0.00274 0.23903 0.06794 0.02070 0.00869 0.00019 0.00030 0.00292 0.00254 0.22947 0.06477 0.01945 0.00824 0.00019 0.00032 0.00276 0.00237 0.22109 0.06202 0.01840 0.00786 0.00019 0.00034 0.00263 0.00223 0.21094 0.05873 0.01715 0.00740 0.00019 0.00035 0.00247 0.00206 0.20186 0.05582 0.01608 0.00699 0.00018 0.00037 0.00233 0.00192 0.19374 0.05324 0.01515 0.00664 0.00018 0.00037 0.00221 0.00180 0.18599 0.05079 0.01428 0.00630 0.00018 0.00038 0.00210 0.00169 0.17872 0.04852 0.01349 0.00599 0.00018 0.00039 0.00199 0.00159 0.17212 0.04648 0.01278 0.00572 0.00018 0.00039 0.00190 0.00150 0.16615 0.04464 0.01216 0.00547 0.00017 0.00039 0.00182 0.00142 0.16037 0.04287 0.01157 0.00523 0.00017 0.00039 0.00174 0.00135 0.15489 0.04121 0.01102 0.00501 0.00017 0.00039 0.00166 0.00128 0.14987 0.03970 0.01053 0.00481 0.00016 0.00039 0.00160 0.00122 0.14528 0.03832 0.01009 0.00463 0.00016 0.00039 0.00154 0.00116 0.14080 0.03698 0.00966 0.00445 0.00016 0.00039 0.00148 0.00111 0.13652 0.03572 0.00926 0.00428 0.00016 0.00038 0.00142 0.00106 0.13257 0.03455 0.00890 0.00413 0.00015 0.00038 0.00137 0.00102 0.12893 0.03348 0.00857 0.00399 0.00015 0.00038 0.00132 0.00098 0.12535 0.03244 0.00825 0.00386 0.00015 0.00037 0.00128 0.00094 0.45943 0.14682 0.05133 0.02027 0.00000 0.00000 0.00686 0.00712 0.44440 0.14082 0.04785 0.01933 0.00000 0.00000 0.00652 0.00665 0.42205 0.13201 0.04333 0.01796 0.00000 0.00000 0.00602 0.00598 0.40583 0.12571 0.04029 0.01698 0.00002 0.00000 0.00567 0.00552 0.38899 0.11926 0.03741 0.01598 0.00004 0.00000 0.00531 0.00506 0.37473 0.11386 0.03515 0.01516 0.00006 0.00000 0.00502 0.00468 0.36134 0.10885 0.03316 0.01440 0.00007 0.00000 0.00475 0.00435 0.34747 0.10373 0.03122 0.01362 0.00008 0.00000 0.00448 0.00402 0.33575 0.09945 0.02965 0.01298 0.00009 0.00000 0.00425 0.00375 0.32474 0.09548 0.02823 0.01239 0.00009 0.00000 0.00405 0.00351 0.31625 0.09245 0.02717 0.01194 0.00010 0.00000 0.00389 0.00334 0.29882 0.08631 0.02507 0.01104 0.00011 0.00000 0.00358 0.00299 0.28458 0.08138 0.02333 0.01032 0.00011 0.00005 0.00334 0.00273 0.26955 0.07625 0.02155 0.00959 0.00012 0.00011 0.00309 0.00246 0.25488 0.07134 0.01988 0.00889 0.00012 0.00015 0.00285 0.00223 0.24237 0.06721 0.01850 0.00831 0.00012 0.00019 0.00266 0.00204 0.23048 0.06335 0.01722 0.00778 0.00013 0.00022 0.00249 0.00187 0.22113 0.06035 0.01624 0.00736 0.00013 0.00024 0.00235 0.00174 0.21039 0.05694 0.01514 0.00690 0.00013 0.00026 0.00220 0.00161 0.20138 0.05411 0.01424 0.00652 0.00013 0.00028 0.00208 0.00150 0.19351 0.05167 0.01347 0.00619 0.00013 0.00029 0.00197 0.00140 0.18403 0.04876 0.01257 0.00581 0.00013 0.00031 0.00185 0.00130 0.17558 0.04619 0.01178 0.00547 0.00013 0.00032 0.00174 0.00120 0.16806 0.04393 0.01110 0.00517 0.00012 0.00032 0.00164 0.00113 0.16089 0.04179 0.01046 0.00489 0.00012 0.00033 0.00155 0.00105 0.15421 0.03981 0.00987 0.00464 0.00012 0.00033 0.00147 0.00099 0.14816 0.03804 0.00935 0.00441 0.00012 0.00033 0.00140 0.00093 0.14269 0.03644 0.00889 0.00421 0.00012 0.00033 0.00134 0.00088 0.13742 0.03492 0.00845 0.00401 0.00012 0.00033 0.00128 0.00084 0.13244 0.03349 0.00805 0.00383 0.00011 0.00033 0.00122 0.00079 0.12788 0.03219 0.00768 0.00367 0.00011 0.00033 0.00117 0.00075 0.12373 0.03101 0.00735 0.00352 0.00011 0.00033 0.00112 0.00072 0.11969 0.02987 0.00703 0.00338 0.00011 0.00033 0.00107 0.00069 0.11583 0.02879 0.00674 0.00325 0.00011 0.00032 0.00103 0.00065 0.11228 0.02780 0.00647 0.00313 0.00010 0.00032 0.00099 0.00063 0.10902 0.02689 0.00622 0.00301 0.00010 0.00032 0.00096 0.00060 0.10582 0.02601 0.00598 0.00291 0.00010 0.00032 0.00092 0.00058 0.42675 0.13028 0.03459 0.01726 0.00000 0.00000 0.00551 0.00474 0.41152 0.12455 0.03249 0.01639 0.00000 0.00000 0.00522 0.00441 0.38897 0.11616 0.02975 0.01512 0.00000 0.00000 0.00479 0.00394 0.37269 0.11018 0.02787 0.01423 0.00001 0.00000 0.00449 0.00362 0.35587 0.10409 0.02608 0.01332 0.00003 0.00000 0.00419 0.00330 0.34169 0.09902 0.02466 0.01257 0.00004 0.00000 0.00394 0.00304 0.32842 0.09433 0.02339 0.01189 0.00005 0.00000 0.00372 0.00282 0.31475 0.08956 0.02213 0.01119 0.00005 0.00000 0.00349 0.00259 0.30323 0.08559 0.02111 0.01062 0.00006 0.00000 0.00330 0.00241 0.29247 0.08192 0.02018 0.01010 0.00006 0.00000 0.00313 0.00225 0.28419 0.07912 0.01947 0.00970 0.00007 0.00000 0.00300 0.00213 0.26728 0.07349 0.01806 0.00891 0.00007 0.00000 0.00275 0.00190 0.25355 0.06899 0.01686 0.00829 0.00008 0.00005 0.00255 0.00172 0.23914 0.06434 0.01563 0.00765 0.00008 0.00010 0.00235 0.00155 0.22516 0.05992 0.01446 0.00706 0.00008 0.00014 0.00216 0.00139 0.21332 0.05623 0.01348 0.00656 0.00008 0.00017 0.00201 0.00127 0.20212 0.05278 0.01257 0.00611 0.00009 0.00020 0.00187 0.00116 0.19335 0.05012 0.01187 0.00576 0.00009 0.00021 0.00176 0.00108 0.18332 0.04712 0.01107 0.00538 0.00009 0.00023 0.00164 0.00099 0.17495 0.04464 0.01042 0.00506 0.00009 0.00025 0.00154 0.00092 0.16767 0.04250 0.00986 0.00479 0.00009 0.00026 0.00146 0.00086 0.15892 0.03996 0.00919 0.00447 0.00009 0.00027 0.00137 0.00080 0.15117 0.03774 0.00861 0.00419 0.00009 0.00028 0.00128 0.00074 0.14428 0.03578 0.00811 0.00395 0.00008 0.00028 0.00121 0.00069 0.13775 0.03394 0.00764 0.00373 0.00008 0.00028 0.00114 0.00065 0.13168 0.03224 0.00720 0.00352 0.00008 0.00029 0.00108 0.00061 0.12620 0.03073 0.00682 0.00334 0.00008 0.00029 0.00102 0.00057 0.12127 0.02937 0.00648 0.00318 0.00008 0.00029 0.00097 0.00054 0.11652 0.02807 0.00615 0.00302 0.00008 0.00029 0.00093 0.00051 0.11205 0.02686 0.00585 0.00288 0.00008 0.00029 0.00088 0.00048 0.10797 0.02576 0.00558 0.00275 0.00008 0.00028 0.00084 0.00046 0.10427 0.02477 0.00533 0.00263 0.00008 0.00028 0.00081 0.00044 0.10066 0.02381 0.00510 0.00252 0.00007 0.00028 0.00077 0.00042 0.09724 0.02290 0.00488 0.00242 0.00007 0.00028 0.00074 0.00040 0.09409 0.02207 0.00468 0.00232 0.00007 0.00027 0.00071 0.00038 0.09120 0.02131 0.00449 0.00223 0.00007 0.00027 0.00069 0.00037 0.08837 0.02058 0.00432 0.00215 0.00007 0.00027 0.00066 0.00035 0.39287 0.11426 0.02289 0.01442 0.00000 0.00000 0.00437 0.00305 0.37768 0.10886 0.02175 0.01363 0.00000 0.00000 0.00412 0.00282 0.35526 0.10100 0.02022 0.01249 0.00000 0.00000 0.00377 0.00251 0.33916 0.09543 0.01914 0.01169 0.00001 0.00000 0.00352 0.00229 0.32258 0.08977 0.01808 0.01089 0.00002 0.00000 0.00327 0.00208 0.30867 0.08508 0.01723 0.01023 0.00002 0.00000 0.00306 0.00191 0.29571 0.08076 0.01645 0.00963 0.00003 0.00000 0.00287 0.00176 0.28241 0.07638 0.01567 0.00902 0.00004 0.00000 0.00269 0.00162 0.27126 0.07275 0.01501 0.00852 0.00004 0.00000 0.00253 0.00150 0.26087 0.06941 0.01441 0.00807 0.00004 0.00000 0.00240 0.00139 0.25291 0.06687 0.01395 0.00773 0.00004 0.00000 0.00229 0.00132 0.23673 0.06178 0.01300 0.00705 0.00005 0.00000 0.00209 0.00117 0.22367 0.05775 0.01219 0.00652 0.00005 0.00004 0.00193 0.00106 0.21004 0.05360 0.01133 0.00599 0.00005 0.00009 0.00177 0.00095 0.19690 0.04968 0.01051 0.00549 0.00006 0.00012 0.00162 0.00085 0.18583 0.04642 0.00982 0.00508 0.00006 0.00015 0.00150 0.00077 0.17542 0.04341 0.00916 0.00470 0.00006 0.00018 0.00139 0.00071 0.16730 0.04109 0.00865 0.00442 0.00006 0.00019 0.00130 0.00066 0.15806 0.03847 0.00808 0.00410 0.00006 0.00021 0.00121 0.00060 0.15039 0.03633 0.00760 0.00385 0.00006 0.00022 0.00113 0.00056 0.14373 0.03449 0.00719 0.00363 0.00006 0.00023 0.00107 0.00052 0.13577 0.03232 0.00670 0.00337 0.00006 0.00024 0.00100 0.00048 0.12875 0.03041 0.00627 0.00315 0.00006 0.00024 0.00093 0.00045 0.12253 0.02875 0.00590 0.00296 0.00006 0.00025 0.00088 0.00042 0.11666 0.02719 0.00555 0.00278 0.00006 0.00025 0.00082 0.00039 0.11122 0.02576 0.00523 0.00262 0.00006 0.00025 0.00078 0.00037 0.10632 0.02448 0.00494 0.00248 0.00006 0.00025 0.00074 0.00034 0.10193 0.02334 0.00469 0.00235 0.00006 0.00025 0.00070 0.00033 0.09771 0.02226 0.00445 0.00223 0.00005 0.00025 0.00066 0.00031 0.09375 0.02125 0.00422 0.00212 0.00005 0.00025 0.00063 0.00029 0.09015 0.02033 0.00402 0.00202 0.00005 0.00024 0.00060 0.00028 0.08688 0.01951 0.00384 0.00193 0.00005 0.00024 0.00058 0.00027 0.08372 0.01871 0.00367 0.00184 0.00005 0.00024 0.00055 0.00025 0.08071 0.01796 0.00350 0.00176 0.00005 0.00024 0.00053 0.00024 0.07796 0.01728 0.00335 0.00169 0.00005 0.00023 0.00051 0.00023 0.07543 0.01666 0.00322 0.00162 0.00005 0.00023 0.00049 0.00022 0.07297 0.01605 0.00309 0.00156 0.00005 0.00023 0.00047 0.00021 0.35835 0.09897 0.01487 0.01179 0.00000 0.00000 0.00342 0.00189 0.34339 0.09398 0.01435 0.01110 0.00000 0.00000 0.00322 0.00174 0.32142 0.08673 0.01362 0.01010 0.00000 0.00000 0.00292 0.00154 0.30570 0.08162 0.01307 0.00941 0.00001 0.00000 0.00272 0.00141 0.28960 0.07645 0.01249 0.00872 0.00001 0.00000 0.00251 0.00127 0.27614 0.07218 0.01201 0.00815 0.00002 0.00000 0.00234 0.00117 0.26365 0.06826 0.01155 0.00763 0.00002 0.00000 0.00219 0.00107 0.25089 0.06430 0.01108 0.00712 0.00002 0.00000 0.00204 0.00098 0.24024 0.06104 0.01067 0.00670 0.00003 0.00000 0.00192 0.00091 0.23034 0.05804 0.01028 0.00631 0.00003 0.00000 0.00181 0.00084 0.22279 0.05578 0.00998 0.00603 0.00003 0.00000 0.00173 0.00079 0.20751 0.05126 0.00935 0.00546 0.00003 0.00000 0.00156 0.00070 0.19525 0.04769 0.00880 0.00502 0.00004 0.00004 0.00144 0.00063 0.18252 0.04405 0.00821 0.00458 0.00004 0.00008 0.00131 0.00057 0.17033 0.04062 0.00762 0.00418 0.00004 0.00011 0.00119 0.00051 0.16013 0.03780 0.00713 0.00384 0.00004 0.00014 0.00110 0.00046 0.15057 0.03520 0.00666 0.00354 0.00004 0.00016 0.00101 0.00042 0.14316 0.03320 0.00629 0.00332 0.00004 0.00017 0.00095 0.00039 0.13476 0.03097 0.00587 0.00306 0.00004 0.00018 0.00088 0.00036 0.12782 0.02915 0.00552 0.00286 0.00004 0.00019 0.00082 0.00034 0.12182 0.02759 0.00521 0.00269 0.00004 0.00020 0.00077 0.00031 0.11468 0.02575 0.00485 0.00249 0.00004 0.00021 0.00072 0.00029 0.10839 0.02416 0.00454 0.00232 0.00004 0.00021 0.00067 0.00027 0.10286 0.02277 0.00426 0.00217 0.00004 0.00021 0.00063 0.00025 0.09765 0.02147 0.00400 0.00203 0.00004 0.00022 0.00059 0.00024 0.09284 0.02028 0.00377 0.00191 0.00004 0.00022 0.00055 0.00022 0.08853 0.01922 0.00355 0.00180 0.00004 0.00022 0.00052 0.00021 0.08466 0.01828 0.00337 0.00170 0.00004 0.00022 0.00049 0.00020 0.08097 0.01739 0.00319 0.00161 0.00004 0.00021 0.00047 0.00019 0.07751 0.01656 0.00302 0.00152 0.00004 0.00021 0.00045 0.00018 0.07437 0.01581 0.00287 0.00145 0.00004 0.00021 0.00042 0.00017 0.07153 0.01513 0.00274 0.00138 0.00004 0.00021 0.00040 0.00016 0.06879 0.01449 0.00261 0.00131 0.00004 0.00021 0.00039 0.00016 0.06619 0.01388 0.00249 0.00125 0.00004 0.00020 0.00037 0.00015 0.06381 0.01332 0.00238 0.00120 0.00003 0.00020 0.00035 0.00014 0.06164 0.01282 0.00228 0.00115 0.00003 0.00020 0.00034 0.00014 0.05952 0.01233 0.00219 0.00110 0.00003 0.00019 0.00033 0.00013 0.32365 0.08459 0.00950 0.00942 0.00000 0.00000 0.00264 0.00113 0.30912 0.08005 0.00937 0.00883 0.00000 0.00000 0.00247 0.00104 0.28788 0.07348 0.00913 0.00799 0.00000 0.00000 0.00223 0.00092 0.27275 0.06886 0.00890 0.00740 0.00000 0.00000 0.00207 0.00084 0.25732 0.06421 0.00862 0.00682 0.00001 0.00000 0.00190 0.00076 0.24447 0.06039 0.00837 0.00634 0.00001 0.00000 0.00177 0.00069 0.23260 0.05689 0.00812 0.00591 0.00001 0.00000 0.00165 0.00064 0.22052 0.05338 0.00784 0.00549 0.00002 0.00000 0.00153 0.00058 0.21047 0.05049 0.00759 0.00514 0.00002 0.00000 0.00143 0.00054 0.20118 0.04785 0.00734 0.00483 0.00002 0.00000 0.00135 0.00050 0.19410 0.04586 0.00715 0.00459 0.00002 0.00000 0.00128 0.00047 0.17986 0.04191 0.00673 0.00413 0.00002 0.00000 0.00115 0.00042 0.16851 0.03881 0.00635 0.00378 0.00002 0.00004 0.00105 0.00038 0.15679 0.03566 0.00593 0.00343 0.00003 0.00007 0.00096 0.00034 0.14564 0.03272 0.00552 0.00310 0.00003 0.00010 0.00087 0.00031 0.13635 0.03031 0.00516 0.00284 0.00003 0.00012 0.00080 0.00028 0.12771 0.02810 0.00482 0.00261 0.00003 0.00014 0.00073 0.00025 0.12103 0.02642 0.00455 0.00243 0.00003 0.00015 0.00068 0.00024 0.11350 0.02455 0.00424 0.00223 0.00003 0.00016 0.00063 0.00022 0.10731 0.02302 0.00398 0.00208 0.00003 0.00017 0.00059 0.00020 0.10198 0.02173 0.00376 0.00195 0.00003 0.00018 0.00055 0.00019 0.09565 0.02020 0.00349 0.00179 0.00003 0.00018 0.00051 0.00018 0.09012 0.01889 0.00326 0.00166 0.00003 0.00019 0.00047 0.00017 0.08526 0.01774 0.00306 0.00155 0.00003 0.00019 0.00044 0.00015 0.08070 0.01668 0.00286 0.00145 0.00003 0.00019 0.00041 0.00015 0.07651 0.01570 0.00269 0.00135 0.00003 0.00019 0.00039 0.00014 0.07276 0.01484 0.00253 0.00127 0.00003 0.00019 0.00037 0.00013 0.06942 0.01408 0.00239 0.00120 0.00003 0.00019 0.00035 0.00012 0.06623 0.01336 0.00226 0.00113 0.00003 0.00018 0.00033 0.00012 0.06325 0.01269 0.00214 0.00107 0.00003 0.00018 0.00031 0.00011 0.06056 0.01209 0.00203 0.00101 0.00003 0.00018 0.00029 0.00011 0.05812 0.01155 0.00194 0.00096 0.00003 0.00018 0.00028 0.00010 0.05578 0.01103 0.00184 0.00092 0.00003 0.00018 0.00027 0.00010 0.05356 0.01055 0.00175 0.00087 0.00003 0.00017 0.00026 0.00009 0.05154 0.01011 0.00167 0.00083 0.00003 0.00017 0.00024 0.00009 0.04969 0.00970 0.00160 0.00080 0.00002 0.00017 0.00023 0.00009 0.04790 0.00932 0.00153 0.00076 0.00002 0.00017 0.00022 0.00008 0.28925 0.07128 0.00597 0.00735 0.00000 0.00000 0.00200 0.00066 0.27534 0.06721 0.00605 0.00686 0.00000 0.00000 0.00187 0.00061 0.25509 0.06135 0.00610 0.00616 0.00000 0.00000 0.00168 0.00054 0.24073 0.05726 0.00605 0.00568 0.00000 0.00000 0.00155 0.00049 0.22614 0.05315 0.00595 0.00521 0.00001 0.00000 0.00142 0.00045 0.21404 0.04978 0.00584 0.00482 0.00001 0.00000 0.00131 0.00041 0.20291 0.04671 0.00570 0.00447 0.00001 0.00000 0.00122 0.00038 0.19162 0.04365 0.00555 0.00413 0.00001 0.00000 0.00113 0.00035 0.18227 0.04113 0.00539 0.00385 0.00001 0.00000 0.00105 0.00032 0.17366 0.03884 0.00524 0.00360 0.00001 0.00000 0.00098 0.00030 0.16713 0.03712 0.00511 0.00341 0.00001 0.00000 0.00093 0.00028 0.15404 0.03373 0.00483 0.00305 0.00002 0.00000 0.00084 0.00025 0.14367 0.03108 0.00456 0.00277 0.00002 0.00003 0.00076 0.00023 0.13303 0.02841 0.00427 0.00250 0.00002 0.00007 0.00069 0.00021 0.12297 0.02593 0.00397 0.00225 0.00002 0.00009 0.00062 0.00019 0.11464 0.02391 0.00371 0.00205 0.00002 0.00011 0.00057 0.00017 0.10692 0.02207 0.00346 0.00187 0.00002 0.00013 0.00052 0.00016 0.10100 0.02068 0.00326 0.00173 0.00002 0.00014 0.00048 0.00015 0.09435 0.01913 0.00304 0.00159 0.00002 0.00015 0.00044 0.00014 0.08890 0.01788 0.00285 0.00147 0.00002 0.00015 0.00041 0.00013 0.08423 0.01682 0.00268 0.00137 0.00002 0.00016 0.00038 0.00012 0.07872 0.01558 0.00249 0.00126 0.00002 0.00016 0.00035 0.00011 0.07391 0.01451 0.00232 0.00116 0.00002 0.00016 0.00033 0.00011 0.06971 0.01358 0.00217 0.00108 0.00002 0.00016 0.00031 0.00010 0.06578 0.01273 0.00203 0.00101 0.00002 0.00016 0.00029 0.00009 0.06218 0.01195 0.00190 0.00094 0.00002 0.00016 0.00027 0.00009 0.05897 0.01126 0.00178 0.00088 0.00002 0.00016 0.00025 0.00008 0.05612 0.01066 0.00168 0.00083 0.00002 0.00016 0.00024 0.00008 0.05341 0.01008 0.00159 0.00078 0.00002 0.00016 0.00022 0.00008 0.05088 0.00956 0.00150 0.00073 0.00002 0.00016 0.00021 0.00007 0.04860 0.00908 0.00142 0.00069 0.00002 0.00015 0.00020 0.00007 0.04655 0.00866 0.00135 0.00066 0.00002 0.00015 0.00019 0.00007 0.04458 0.00825 0.00128 0.00062 0.00002 0.00015 0.00018 0.00007 0.04272 0.00787 0.00122 0.00059 0.00002 0.00015 0.00017 0.00006 0.04102 0.00752 0.00116 0.00056 0.00002 0.00014 0.00017 0.00006 0.03948 0.00721 0.00111 0.00054 0.00002 0.00014 0.00016 0.00006 0.03799 0.00691 0.00106 0.00052 0.00002 0.00014 0.00015 0.00006 0.25559 0.05913 0.00369 0.00558 0.00000 0.00000 0.00149 0.00039 0.24246 0.05556 0.00388 0.00519 0.00000 0.00000 0.00139 0.00036 0.22342 0.05043 0.00406 0.00463 0.00000 0.00000 0.00124 0.00032 0.20998 0.04686 0.00411 0.00425 0.00000 0.00000 0.00114 0.00030 0.19637 0.04329 0.00411 0.00387 0.00000 0.00000 0.00104 0.00027 0.18514 0.04038 0.00407 0.00357 0.00000 0.00000 0.00096 0.00025 0.17485 0.03774 0.00401 0.00329 0.00001 0.00000 0.00089 0.00023 0.16445 0.03510 0.00392 0.00302 0.00001 0.00000 0.00081 0.00021 0.15588 0.03295 0.00382 0.00281 0.00001 0.00000 0.00076 0.00020 0.14802 0.03101 0.00372 0.00261 0.00001 0.00000 0.00071 0.00019 0.14207 0.02955 0.00364 0.00247 0.00001 0.00000 0.00067 0.00018 0.13021 0.02668 0.00344 0.00219 0.00001 0.00000 0.00059 0.00016 0.12087 0.02446 0.00326 0.00198 0.00001 0.00003 0.00054 0.00015 0.11135 0.02224 0.00305 0.00177 0.00001 0.00006 0.00048 0.00013 0.10240 0.02018 0.00283 0.00158 0.00001 0.00008 0.00043 0.00012 0.09504 0.01852 0.00264 0.00144 0.00001 0.00010 0.00039 0.00011 0.08826 0.01702 0.00246 0.00130 0.00001 0.00011 0.00036 0.00010 0.08309 0.01588 0.00232 0.00120 0.00001 0.00012 0.00033 0.00010 0.07730 0.01463 0.00215 0.00110 0.00001 0.00013 0.00030 0.00009 0.07258 0.01362 0.00201 0.00101 0.00001 0.00013 0.00028 0.00009 0.06855 0.01277 0.00189 0.00094 0.00001 0.00014 0.00026 0.00008 0.06382 0.01178 0.00175 0.00086 0.00001 0.00014 0.00024 0.00008 0.05971 0.01093 0.00162 0.00079 0.00001 0.00014 0.00022 0.00007 0.05614 0.01020 0.00151 0.00073 0.00001 0.00014 0.00021 0.00007 0.05280 0.00953 0.00141 0.00068 0.00001 0.00014 0.00019 0.00006 0.04976 0.00892 0.00132 0.00063 0.00001 0.00014 0.00018 0.00006 0.04706 0.00838 0.00124 0.00059 0.00001 0.00014 0.00017 0.00006 0.04467 0.00791 0.00116 0.00055 0.00001 0.00014 0.00016 0.00006 0.04240 0.00746 0.00110 0.00052 0.00001 0.00013 0.00015 0.00005 0.04029 0.00705 0.00103 0.00049 0.00001 0.00013 0.00014 0.00005 0.03840 0.00668 0.00098 0.00046 0.00001 0.00013 0.00014 0.00005 0.03669 0.00636 0.00093 0.00044 0.00001 0.00013 0.00013 0.00005 0.03506 0.00604 0.00088 0.00041 0.00001 0.00013 0.00012 0.00005 0.03352 0.00575 0.00083 0.00039 0.00001 0.00012 0.00012 0.00004 0.03213 0.00549 0.00079 0.00037 0.00001 0.00012 0.00011 0.00004 0.03086 0.00525 0.00076 0.00036 0.00001 0.00012 0.00011 0.00004 0.02964 0.00502 0.00072 0.00034 0.00001 0.00012 0.00010 0.00004 0.19195 0.03857 0.00137 0.00294 0.00000 0.00000 0.00078 0.00017 0.18077 0.03596 0.00159 0.00271 0.00000 0.00000 0.00072 0.00016 0.16468 0.03226 0.00181 0.00239 0.00000 0.00000 0.00063 0.00014 0.15342 0.02970 0.00191 0.00217 0.00000 0.00000 0.00058 0.00013 0.14213 0.02716 0.00196 0.00195 0.00000 0.00000 0.00052 0.00012 0.13288 0.02511 0.00197 0.00178 0.00000 0.00000 0.00048 0.00012 0.12447 0.02326 0.00196 0.00163 0.00000 0.00000 0.00044 0.00011 0.11605 0.02144 0.00193 0.00148 0.00000 0.00000 0.00040 0.00010 0.10917 0.01996 0.00189 0.00136 0.00000 0.00000 0.00037 0.00010 0.10290 0.01863 0.00185 0.00126 0.00000 0.00000 0.00034 0.00009 0.09820 0.01765 0.00181 0.00118 0.00000 0.00000 0.00032 0.00009 0.08891 0.01573 0.00171 0.00103 0.00001 0.00000 0.00028 0.00008 0.08170 0.01426 0.00162 0.00092 0.00001 0.00002 0.00025 0.00007 0.07443 0.01281 0.00150 0.00081 0.00001 0.00005 0.00022 0.00007 0.06770 0.01149 0.00139 0.00072 0.00001 0.00006 0.00020 0.00006 0.06223 0.01043 0.00129 0.00064 0.00001 0.00008 0.00018 0.00006 0.05725 0.00949 0.00119 0.00058 0.00001 0.00009 0.00016 0.00005 0.05349 0.00879 0.00112 0.00053 0.00001 0.00009 0.00015 0.00005 0.04933 0.00802 0.00103 0.00048 0.00001 0.00010 0.00014 0.00005 0.04597 0.00741 0.00096 0.00044 0.00001 0.00010 0.00013 0.00005 0.04313 0.00690 0.00090 0.00040 0.00001 0.00010 0.00012 0.00004 0.03982 0.00631 0.00082 0.00037 0.00001 0.00010 0.00011 0.00004 0.03698 0.00581 0.00076 0.00033 0.00001 0.00010 0.00010 0.00004 0.03452 0.00538 0.00070 0.00031 0.00001 0.00010 0.00009 0.00004 0.03226 0.00499 0.00065 0.00028 0.00001 0.00010 0.00008 0.00004 0.03020 0.00464 0.00060 0.00026 0.00001 0.00010 0.00008 0.00003 0.02839 0.00433 0.00056 0.00024 0.00001 0.00010 0.00007 0.00003 0.02679 0.00406 0.00053 0.00023 0.00001 0.00010 0.00007 0.00003 0.02529 0.00381 0.00049 0.00021 0.00001 0.00009 0.00007 0.00003 0.02391 0.00358 0.00046 0.00020 0.00001 0.00009 0.00006 0.00003 0.02267 0.00338 0.00044 0.00019 0.00001 0.00009 0.00006 0.00003 0.02156 0.00320 0.00041 0.00018 0.00001 0.00009 0.00006 0.00003 0.02050 0.00302 0.00039 0.00017 0.00001 0.00009 0.00005 0.00003 0.01951 0.00287 0.00037 0.00016 0.00001 0.00009 0.00005 0.00003 0.01862 0.00272 0.00035 0.00015 0.00001 0.00008 0.00005 0.00003 0.01781 0.00259 0.00033 0.00014 0.00001 0.00008 0.00005 0.00003 0.01704 0.00247 0.00031 0.00014 0.00001 0.00008 0.00005 0.00003 0.13540 0.02305 0.00051 0.00135 0.00000 0.00000 0.00036 0.00011 0.12650 0.02132 0.00066 0.00123 0.00000 0.00000 0.00033 0.00010 0.11381 0.01888 0.00081 0.00107 0.00000 0.00000 0.00029 0.00009 0.10501 0.01721 0.00087 0.00096 0.00000 0.00000 0.00026 0.00009 0.09626 0.01557 0.00091 0.00085 0.00000 0.00000 0.00023 0.00008 0.08916 0.01425 0.00093 0.00077 0.00000 0.00000 0.00021 0.00007 0.08276 0.01308 0.00093 0.00070 0.00000 0.00000 0.00019 0.00007 0.07641 0.01192 0.00091 0.00063 0.00000 0.00000 0.00017 0.00006 0.07126 0.01100 0.00089 0.00057 0.00000 0.00000 0.00016 0.00006 0.06661 0.01018 0.00087 0.00052 0.00000 0.00000 0.00015 0.00006 0.06315 0.00957 0.00085 0.00049 0.00000 0.00000 0.00014 0.00005 0.05640 0.00840 0.00080 0.00042 0.00000 0.00000 0.00012 0.00005 0.05122 0.00753 0.00075 0.00037 0.00000 0.00002 0.00011 0.00005 0.04608 0.00667 0.00069 0.00032 0.00000 0.00004 0.00009 0.00004 0.04138 0.00590 0.00063 0.00028 0.00000 0.00005 0.00008 0.00004 0.03762 0.00530 0.00058 0.00025 0.00000 0.00006 0.00007 0.00004 0.03425 0.00476 0.00053 0.00022 0.00000 0.00006 0.00007 0.00003 0.03173 0.00437 0.00049 0.00020 0.00001 0.00007 0.00006 0.00003 0.02897 0.00395 0.00045 0.00018 0.00001 0.00007 0.00006 0.00003 0.02677 0.00361 0.00042 0.00016 0.00001 0.00007 0.00005 0.00003 0.02493 0.00334 0.00039 0.00015 0.00001 0.00007 0.00005 0.00003 0.02281 0.00302 0.00035 0.00014 0.00001 0.00007 0.00004 0.00003 0.02100 0.00276 0.00032 0.00012 0.00001 0.00007 0.00004 0.00002 0.01945 0.00254 0.00029 0.00011 0.00001 0.00007 0.00004 0.00002 0.01804 0.00233 0.00027 0.00010 0.00001 0.00007 0.00004 0.00002 0.01677 0.00215 0.00025 0.00010 0.00001 0.00007 0.00003 0.00002 0.01566 0.00200 0.00023 0.00009 0.00001 0.00007 0.00003 0.00002 0.01468 0.00186 0.00022 0.00008 0.00001 0.00007 0.00003 0.00002 0.01378 0.00173 0.00020 0.00008 0.00001 0.00006 0.00003 0.00002 0.01294 0.00162 0.00019 0.00007 0.00001 0.00006 0.00003 0.00002 0.01220 0.00152 0.00018 0.00007 0.00001 0.00006 0.00003 0.00002 0.01155 0.00143 0.00016 0.00007 0.00001 0.00006 0.00003 0.00002 0.01092 0.00135 0.00015 0.00006 0.00001 0.00006 0.00003 0.00002 0.01034 0.00127 0.00015 0.00006 0.00001 0.00006 0.00002 0.00002 0.00982 0.00120 0.00014 0.00006 0.00001 0.00006 0.00002 0.00002 0.00935 0.00114 0.00013 0.00005 0.00001 0.00005 0.00002 0.00002 0.00891 0.00108 0.00012 0.00005 0.00001 0.00005 0.00002 0.00002 0.08793 0.01227 0.00019 0.00051 0.00000 0.00000 0.00015 0.00007 0.08143 0.01125 0.00027 0.00047 0.00000 0.00000 0.00013 0.00007 0.07223 0.00981 0.00035 0.00040 0.00000 0.00000 0.00012 0.00006 0.06593 0.00885 0.00038 0.00035 0.00000 0.00000 0.00010 0.00006 0.05972 0.00790 0.00040 0.00031 0.00000 0.00000 0.00009 0.00005 0.05472 0.00716 0.00040 0.00028 0.00000 0.00000 0.00008 0.00005 0.05026 0.00650 0.00040 0.00025 0.00000 0.00000 0.00007 0.00004 0.04588 0.00585 0.00039 0.00022 0.00000 0.00000 0.00007 0.00004 0.04236 0.00534 0.00038 0.00020 0.00000 0.00000 0.00006 0.00004 0.03922 0.00489 0.00037 0.00018 0.00000 0.00000 0.00006 0.00003 0.03690 0.00456 0.00036 0.00017 0.00000 0.00000 0.00005 0.00003 0.03242 0.00394 0.00033 0.00014 0.00000 0.00000 0.00004 0.00003 0.02904 0.00348 0.00031 0.00012 0.00000 0.00001 0.00004 0.00003 0.02574 0.00303 0.00028 0.00011 0.00000 0.00003 0.00003 0.00002 0.02278 0.00264 0.00025 0.00009 0.00000 0.00003 0.00003 0.00002 0.02045 0.00234 0.00023 0.00008 0.00000 0.00004 0.00003 0.00002 0.01838 0.00207 0.00021 0.00007 0.00000 0.00004 0.00003 0.00002 0.01686 0.00188 0.00019 0.00007 0.00000 0.00004 0.00002 0.00002 0.01522 0.00168 0.00017 0.00006 0.00001 0.00005 0.00002 0.00002 0.01393 0.00152 0.00016 0.00005 0.00001 0.00005 0.00002 0.00002 0.01286 0.00139 0.00014 0.00005 0.00001 0.00005 0.00002 0.00002 0.01164 0.00125 0.00013 0.00005 0.00001 0.00005 0.00002 0.00002 0.01061 0.00113 0.00012 0.00004 0.00001 0.00005 0.00002 0.00002 0.00974 0.00103 0.00011 0.00004 0.00001 0.00005 0.00002 0.00002 0.00895 0.00094 0.00010 0.00004 0.00001 0.00004 0.00002 0.00002 0.00825 0.00086 0.00009 0.00003 0.00001 0.00004 0.00002 0.00001 0.00765 0.00079 0.00008 0.00003 0.00001 0.00004 0.00002 0.00001 0.00712 0.00073 0.00008 0.00003 0.00001 0.00004 0.00002 0.00001 0.00663 0.00068 0.00007 0.00003 0.00001 0.00004 0.00002 0.00001 0.00619 0.00063 0.00007 0.00003 0.00001 0.00004 0.00002 0.00001 0.00580 0.00058 0.00006 0.00003 0.00001 0.00004 0.00002 0.00001 0.00545 0.00055 0.00006 0.00003 0.00001 0.00004 0.00002 0.00002 0.00513 0.00051 0.00005 0.00003 0.00001 0.00004 0.00002 0.00002 0.00483 0.00048 0.00005 0.00003 0.00001 0.00004 0.00002 0.00002 0.00456 0.00045 0.00005 0.00002 0.00001 0.00004 0.00002 0.00002 0.00432 0.00042 0.00004 0.00002 0.00001 0.00004 0.00002 0.00002 0.00409 0.00040 0.00004 0.00002 0.00001 0.00004 0.00002 0.00002 0.05080 0.00554 0.00007 0.00015 0.00000 0.00000 0.00005 0.00004 0.04656 0.00502 0.00010 0.00014 0.00000 0.00000 0.00004 0.00004 0.04063 0.00431 0.00013 0.00012 0.00000 0.00000 0.00004 0.00003 0.03661 0.00384 0.00014 0.00010 0.00000 0.00000 0.00003 0.00003 0.03270 0.00338 0.00014 0.00009 0.00000 0.00000 0.00003 0.00003 0.02959 0.00302 0.00014 0.00008 0.00000 0.00000 0.00003 0.00002 0.02684 0.00271 0.00014 0.00007 0.00000 0.00000 0.00002 0.00002 0.02417 0.00240 0.00013 0.00006 0.00000 0.00000 0.00002 0.00002 0.02205 0.00217 0.00013 0.00006 0.00000 0.00000 0.00002 0.00002 0.02018 0.00196 0.00012 0.00005 0.00000 0.00000 0.00002 0.00002 0.01881 0.00181 0.00012 0.00005 0.00000 0.00000 0.00002 0.00002 0.01620 0.00153 0.00011 0.00004 0.00000 0.00000 0.00002 0.00001 0.01427 0.00133 0.00010 0.00003 0.00000 0.00001 0.00001 0.00001 0.01242 0.00114 0.00009 0.00003 0.00000 0.00002 0.00001 0.00001 0.01079 0.00097 0.00008 0.00003 0.00000 0.00002 0.00001 0.00001 0.00954 0.00084 0.00007 0.00002 0.00000 0.00002 0.00001 0.00001 0.00844 0.00074 0.00006 0.00002 0.00001 0.00003 0.00001 0.00001 0.00765 0.00066 0.00006 0.00002 0.00001 0.00003 0.00001 0.00001 0.00681 0.00058 0.00005 0.00002 0.00001 0.00003 0.00001 0.00001 0.00616 0.00052 0.00005 0.00002 0.00001 0.00003 0.00001 0.00001 0.00563 0.00047 0.00004 0.00002 0.00001 0.00003 0.00001 0.00001 0.00503 0.00042 0.00004 0.00002 0.00001 0.00003 0.00001 0.00001 0.00453 0.00037 0.00003 0.00002 0.00001 0.00003 0.00001 0.00001 0.00411 0.00033 0.00003 0.00002 0.00001 0.00003 0.00001 0.00001 0.00374 0.00030 0.00003 0.00002 0.00001 0.00003 0.00001 0.00001 0.00342 0.00027 0.00002 0.00002 0.00001 0.00003 0.00001 0.00001 0.00314 0.00025 0.00002 0.00002 0.00001 0.00003 0.00001 0.00001 0.00290 0.00023 0.00002 0.00002 0.00001 0.00003 0.00001 0.00001 0.00267 0.00021 0.00002 0.00002 0.00001 0.00003 0.00001 0.00001 0.00248 0.00019 0.00002 0.00002 0.00001 0.00003 0.00001 0.00001 0.00230 0.00018 0.00002 0.00002 0.00001 0.00003 0.00001 0.00001 0.00215 0.00017 0.00002 0.00002 0.00001 0.00003 0.00002 0.00001 0.00201 0.00015 0.00002 0.00002 0.00001 0.00003 0.00002 0.00002 0.00188 0.00014 0.00001 0.00002 0.00001 0.00003 0.00002 0.00002 0.00176 0.00013 0.00001 0.00002 0.00001 0.00003 0.00002 0.00002 0.00166 0.00013 0.00001 0.00002 0.00002 0.00003 0.00002 0.00002 0.00156 0.00012 0.00001 0.00002 0.00002 0.00003 0.00002 0.00002 0.00849 0.00042 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00755 0.00037 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00628 0.00031 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00546 0.00026 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00468 0.00022 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00408 0.00019 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00357 0.00016 0.00000 0.00001 0.00000 0.00000 0.00000 0.00000 0.00309 0.00014 0.00000 0.00001 0.00000 0.00000 0.00000 0.00001 0.00272 0.00012 0.00000 0.00001 0.00000 0.00000 0.00001 0.00001 0.00240 0.00011 0.00000 0.00001 0.00000 0.00000 0.00001 0.00001 0.00217 0.00010 0.00000 0.00001 0.00000 0.00000 0.00001 0.00001 0.00176 0.00008 0.00000 0.00001 0.00001 0.00000 0.00001 0.00001 0.00147 0.00006 0.00000 0.00001 0.00001 0.00000 0.00001 0.00001 0.00121 0.00005 0.00000 0.00001 0.00001 0.00001 0.00001 0.00001 0.00099 0.00004 0.00000 0.00001 0.00001 0.00001 0.00001 0.00001 0.00083 0.00003 0.00000 0.00001 0.00001 0.00001 0.00001 0.00001 0.00070 0.00003 0.00000 0.00001 0.00001 0.00001 0.00001 0.00001 0.00061 0.00002 0.00000 0.00001 0.00001 0.00001 0.00001 0.00001 0.00052 0.00002 0.00000 0.00001 0.00001 0.00001 0.00001 0.00001 0.00045 0.00002 0.00000 0.00002 0.00001 0.00001 0.00002 0.00002 0.00040 0.00002 0.00000 0.00002 0.00002 0.00002 0.00002 0.00002 0.00034 0.00001 0.00000 0.00002 0.00002 0.00002 0.00002 0.00002 0.00030 0.00001 0.00000 0.00002 0.00002 0.00002 0.00002 0.00002 0.00026 0.00001 0.00000 0.00002 0.00002 0.00002 0.00002 0.00002 0.00023 0.00001 0.00000 0.00003 0.00003 0.00003 0.00003 0.00003 0.00020 0.00001 0.00000 0.00003 0.00003 0.00003 0.00003 0.00003 0.00018 0.00001 0.00000 0.00003 0.00003 0.00003 0.00003 0.00003 0.00016 0.00001 0.00000 0.00003 0.00003 0.00003 0.00003 0.00003 0.00015 0.00001 0.00000 0.00003 0.00003 0.00003 0.00003 0.00003 0.00013 0.00001 0.00000 0.00003 0.00003 0.00003 0.00003 0.00003 0.00012 0.00001 0.00000 0.00003 0.00003 0.00003 0.00003 0.00003 0.00011 0.00001 0.00000 0.00003 0.00003 0.00003 0.00003 0.00003 0.00010 0.00001 0.00000 0.00003 0.00003 0.00003 0.00003 0.00003 0.00009 0.00001 0.00000 0.00003 0.00003 0.00003 0.00003 0.00003 0.00008 0.00001 0.00000 0.00003 0.00003 0.00003 0.00003 0.00003 0.00008 0.00001 0.00000 0.00003 0.00003 0.00003 0.00003 0.00003 0.00007 0.00001 0.00000 0.00003 0.00003 0.00003 0.00003 0.00003 ����������������herwig++-2.6.0.orig/PDF/mrst/1998/������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464205�016775� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/mrst/1998/lo05a.dat���������������������������������������������������������0000644�0001750�0001750�00000430760�11754474775�020434� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 0.01518 0.00513 3.68244 0.86800 0.00000 0.00000 0.44989 0.88043 0.01534 0.00518 6.24307 0.88205 0.00003 0.00000 0.46639 0.89442 0.01559 0.00524 11.05139 0.91886 0.03227 0.00000 0.50684 0.93116 0.01577 0.00529 15.37825 0.95997 0.08412 0.00000 0.55058 0.97222 0.01597 0.00534 20.54786 1.02269 0.14877 0.00000 0.61607 1.03488 0.01613 0.00539 25.87997 1.08763 0.22202 0.00000 0.68336 1.09976 0.01630 0.00544 31.48650 1.16556 0.30272 0.00000 0.76355 1.17764 0.01647 0.00549 38.19562 1.26306 0.40640 0.00000 0.86343 1.27508 0.01662 0.00553 44.69263 1.36120 0.51210 0.00000 0.96361 1.37316 0.01676 0.00558 51.42669 1.47041 0.62615 0.00000 1.07479 1.48232 0.01688 0.00562 57.20334 1.56638 0.72756 0.00000 1.17232 1.57825 0.01713 0.00570 70.62117 1.80214 0.97596 0.00042 1.41135 1.81391 0.01734 0.00578 83.50434 2.04055 1.22977 0.21520 1.65256 2.05224 0.01759 0.00586 99.26808 2.34878 1.55816 0.62424 1.96387 2.36037 0.01784 0.00596 117.13634 2.72076 1.94525 1.00765 2.33902 2.73224 0.01807 0.00604 134.87820 3.10372 2.34531 1.42250 2.72482 3.11511 0.01831 0.00614 154.38010 3.53791 2.80142 1.90329 3.16184 3.54920 0.01851 0.00621 171.60985 3.93600 3.21652 2.33137 3.56226 3.94722 0.01875 0.00631 193.78899 4.46512 3.76652 2.89798 4.09416 4.47623 0.01896 0.00640 214.89481 4.98110 4.30575 3.45978 4.61257 4.99213 0.01916 0.00648 234.93695 5.48855 4.82956 3.99390 5.12222 5.49949 0.01941 0.00659 261.98752 6.18910 5.55546 4.74104 5.82554 6.19994 0.01965 0.00669 289.01031 6.90776 6.30033 5.50879 6.54676 6.91850 0.01987 0.00679 315.12421 7.62426 7.03684 6.25919 7.26565 7.63491 0.02010 0.00689 342.80673 8.39819 7.83575 7.07966 8.04192 8.40875 0.02032 0.00699 370.71918 9.19912 8.65815 7.91829 8.84513 9.20959 0.02054 0.00708 398.31635 10.00621 9.48773 8.76657 9.65435 10.01660 0.02074 0.00718 425.10541 10.80590 10.30763 9.60252 10.45602 10.81622 0.02094 0.00727 452.96622 11.65207 11.17527 10.48807 11.30416 11.66230 0.02115 0.00737 481.05176 12.52131 12.06456 11.39334 12.17534 12.53147 0.02134 0.00746 508.69336 13.38978 12.95374 12.30020 13.04562 13.39986 0.02153 0.00755 535.18030 14.23688 13.81822 13.17835 13.89443 14.24690 0.02171 0.00764 563.08673 15.13941 14.74174 14.12059 14.79866 15.14936 0.02190 0.00773 590.49207 16.04276 15.66159 15.05309 15.70368 16.05264 0.02208 0.00781 617.67798 16.94849 16.58568 15.99294 16.61098 16.95831 0.02225 0.00790 643.85529 17.83243 17.48656 16.90825 17.49641 17.84218 0.02242 0.00798 670.62598 18.74867 18.41889 17.85379 18.41415 18.75837 0.01868 0.00648 3.61785 0.76598 0.00000 0.00000 0.39539 0.77333 0.01889 0.00654 5.86376 0.77983 0.00003 0.00000 0.41136 0.78714 0.01920 0.00664 9.94786 0.81356 0.02900 0.00000 0.44821 0.82082 0.01944 0.00672 13.53065 0.84981 0.07493 0.00000 0.48672 0.85703 0.01969 0.00680 17.73643 0.90363 0.13082 0.00000 0.54291 0.91080 0.01990 0.00688 22.00579 0.95875 0.19306 0.00000 0.60005 0.96588 0.02011 0.00695 26.43816 1.02401 0.26063 0.00000 0.66723 1.03108 0.02033 0.00703 31.67731 1.10484 0.34641 0.00000 0.75010 1.11188 0.02053 0.00711 36.69535 1.18550 0.43288 0.00000 0.83251 1.19249 0.02072 0.00718 41.84610 1.27446 0.52524 0.00000 0.92315 1.28141 0.02087 0.00723 46.22931 1.35212 0.60673 0.00000 1.00213 1.35904 0.02119 0.00736 56.29525 1.54109 0.80419 0.00036 1.19389 1.54794 0.02147 0.00747 65.82890 1.73004 1.00344 0.16773 1.38522 1.73683 0.02179 0.00760 77.34151 1.97162 1.25825 0.48455 1.62942 1.97834 0.02212 0.00773 90.22787 2.25974 1.55494 0.77678 1.92024 2.26638 0.02243 0.00786 102.87527 2.55317 1.85826 1.08981 2.21608 2.55975 0.02273 0.00799 116.63111 2.88253 2.20072 1.44918 2.54784 2.88904 0.02299 0.00810 128.66806 3.18179 2.50960 1.76616 2.84906 3.18825 0.02330 0.00824 144.01862 3.57604 2.91536 2.18213 3.24567 3.58243 0.02358 0.00837 158.49641 3.95717 3.30993 2.59142 3.62885 3.96349 0.02384 0.00848 172.12665 4.32906 3.69021 2.97724 4.00261 4.33534 0.02417 0.00863 190.37146 4.83835 4.21326 3.51318 4.51423 4.84455 0.02448 0.00878 208.43709 5.35634 4.74567 4.05964 5.03439 5.36248 0.02478 0.00892 225.74153 5.86871 5.26796 4.58931 5.54876 5.87479 0.02507 0.00906 243.95296 6.41814 5.83079 5.16501 6.10017 6.42416 0.02536 0.00920 262.16998 6.98269 6.40607 5.74916 6.66663 6.98865 0.02564 0.00933 280.05777 7.54783 6.98283 6.33661 7.23356 7.55374 0.02591 0.00946 297.30496 8.10435 7.54945 6.91204 7.79175 8.11020 0.02617 0.00959 315.13217 8.68978 8.14579 7.51842 8.37884 8.69558 0.02644 0.00972 332.98895 9.28774 8.75358 8.13482 8.97841 9.29349 0.02669 0.00985 350.46606 9.88200 9.35831 8.74942 9.57419 9.88770 0.02693 0.00997 367.11212 10.45864 9.94319 9.34137 10.15226 10.46430 0.02717 0.01009 384.57391 11.07021 10.56553 9.97430 10.76526 11.07583 0.02741 0.01021 401.61096 11.67919 11.18202 10.59701 11.37564 11.68476 0.02764 0.01033 418.44214 12.28721 11.79905 11.22254 11.98498 12.29275 0.02787 0.01044 434.56937 12.87802 12.39804 11.82917 12.57703 12.88352 0.02809 0.01056 450.98129 13.48785 13.01534 12.45318 13.18812 13.49331 0.02298 0.00818 3.55346 0.67520 0.00000 0.00000 0.34747 0.67888 0.02325 0.00828 5.50631 0.68869 0.00002 0.00000 0.36279 0.69235 0.02365 0.00843 8.95244 0.71953 0.02605 0.00000 0.39632 0.72315 0.02395 0.00855 11.90193 0.75147 0.06672 0.00000 0.43021 0.75505 0.02427 0.00868 15.30522 0.79759 0.11499 0.00000 0.47835 0.80113 0.02455 0.00879 18.70564 0.84428 0.16779 0.00000 0.52679 0.84779 0.02482 0.00890 22.19174 0.89875 0.22430 0.00000 0.58292 0.90223 0.02511 0.00902 26.26192 0.96554 0.29514 0.00000 0.65144 0.96899 0.02536 0.00913 30.11768 1.03156 0.36574 0.00000 0.71897 1.03498 0.02560 0.00923 34.03689 1.10370 0.44038 0.00000 0.79255 1.10710 0.02580 0.00932 37.34534 1.16625 0.50572 0.00000 0.85623 1.16962 0.02622 0.00950 44.85603 1.31694 0.66232 0.00032 1.00931 1.32027 0.02658 0.00966 51.87140 1.46588 0.81836 0.13065 1.16028 1.46916 0.02699 0.00985 60.22972 1.65417 1.01555 0.37589 1.35081 1.65740 0.02742 0.01005 69.46667 1.87603 1.24230 0.59844 1.57497 1.87922 0.02782 0.01023 78.42588 2.09952 1.47159 0.83442 1.80052 2.10267 0.02822 0.01042 88.06633 2.34786 1.72790 1.10274 2.05090 2.35096 0.02855 0.01058 96.41977 2.57144 1.95700 1.33713 2.27616 2.57451 0.02896 0.01077 106.97157 2.86339 2.25532 1.64207 2.57011 2.86642 0.02932 0.01095 116.83355 3.14315 2.54302 1.93977 2.85161 3.14614 0.02966 0.01111 126.03609 3.41400 2.81808 2.21795 3.12404 3.41695 0.03009 0.01133 138.25069 3.78189 3.19353 2.60162 3.49391 3.78480 0.03049 0.01153 150.23653 4.15288 3.57260 2.98973 3.86673 4.15576 0.03088 0.01172 161.61246 4.51692 3.94145 3.36270 4.23247 4.51976 0.03126 0.01192 173.49684 4.90446 4.33631 3.76564 4.62168 4.90727 0.03164 0.01211 185.28712 5.29980 4.73699 4.17141 5.01863 5.30257 0.03200 0.01230 196.78310 5.69293 5.13620 4.57707 5.41328 5.69567 0.03234 0.01247 207.79007 6.07766 5.52601 4.97199 5.79941 6.08037 0.03269 0.01265 219.09509 6.48001 5.93397 5.38590 6.20316 6.48269 0.03303 0.01283 230.34398 6.88859 6.34740 5.80422 6.61310 6.89124 0.03336 0.01300 241.29128 7.29246 6.75669 6.21933 7.01826 7.29509 0.03367 0.01317 251.65173 7.68231 7.15042 6.61692 7.40931 7.68491 0.03398 0.01333 262.47256 8.09390 7.56770 7.04054 7.82209 8.09647 0.03429 0.01350 272.95639 8.50158 7.97872 7.45476 8.23095 8.50413 0.03459 0.01366 283.27148 8.90688 8.38856 7.86947 8.63737 8.90942 0.03488 0.01382 293.10349 9.29900 8.78469 8.26989 9.03053 9.30151 0.03517 0.01397 303.05762 9.70200 9.19117 8.67996 9.43458 9.70449 0.02594 0.00938 3.51555 0.62675 0.00000 0.00000 0.32216 0.62888 0.02625 0.00950 5.30646 0.63997 0.00002 0.00000 0.33706 0.64208 0.02672 0.00970 8.41536 0.66920 0.02445 0.00000 0.36876 0.67127 0.02707 0.00985 11.03924 0.69884 0.06231 0.00000 0.40019 0.70088 0.02744 0.01001 14.03720 0.74093 0.10659 0.00000 0.44415 0.74294 0.02776 0.01015 17.00514 0.78326 0.15452 0.00000 0.48807 0.78524 0.02807 0.01029 20.02570 0.83219 0.20535 0.00000 0.53852 0.83415 0.02840 0.01044 23.52700 0.89180 0.26863 0.00000 0.59973 0.89374 0.02869 0.01057 26.82255 0.95040 0.33126 0.00000 0.65971 0.95232 0.02898 0.01071 30.15309 1.01406 0.39709 0.00000 0.72469 1.01596 0.02920 0.01081 32.95134 1.06903 0.45443 0.00000 0.78069 1.07091 0.02969 0.01104 39.26056 1.20067 0.59100 0.00030 0.91452 1.20251 0.03011 0.01124 45.10521 1.32988 0.72605 0.11283 1.04559 1.33169 0.03059 0.01147 52.01289 1.49212 0.89552 0.32385 1.20988 1.49390 0.03109 0.01171 59.58908 1.68193 1.08896 0.51350 1.40179 1.68367 0.03155 0.01194 66.88609 1.87189 1.28330 0.71339 1.59364 1.87361 0.03202 0.01217 74.68806 2.08172 1.49927 0.93938 1.80533 2.08340 0.03241 0.01236 81.40891 2.26962 1.69126 1.13567 1.99475 2.27128 0.03288 0.01261 89.85031 2.51369 1.93997 1.38971 2.24065 2.51532 0.03331 0.01282 97.69725 2.74636 2.17866 1.63658 2.47491 2.74797 0.03370 0.01302 104.98046 2.97058 2.40576 1.86604 2.70057 2.97216 0.03420 0.01328 114.59908 3.27368 2.71436 2.18119 3.00548 3.27524 0.03467 0.01352 123.98669 3.57780 3.02443 2.49849 3.31126 3.57933 0.03511 0.01376 132.84715 3.87481 3.32468 2.80183 3.60982 3.87632 0.03556 0.01399 142.06322 4.18965 3.64485 3.12838 3.92618 4.19114 0.03600 0.01423 151.16048 4.50945 3.96832 3.45573 4.24745 4.51092 0.03642 0.01445 159.99336 4.82623 4.28942 3.78184 4.56560 4.82767 0.03682 0.01467 168.41481 5.13510 4.60181 4.09813 4.87575 5.13653 0.03722 0.01488 177.03108 5.45700 4.92768 4.42859 5.19892 5.45841 0.03762 0.01510 185.57016 5.78276 5.25678 4.76138 5.52592 5.78416 0.03800 0.01530 193.85184 6.10376 5.58162 5.09070 5.84808 6.10513 0.03836 0.01550 201.65910 6.41264 5.89310 5.40505 6.15805 6.41400 0.03872 0.01570 209.79239 6.73786 6.22245 5.73929 6.48437 6.73922 0.03909 0.01590 217.63766 7.05899 6.54573 6.06488 6.80656 7.06033 0.03943 0.01609 225.33791 7.37746 6.86738 6.39022 7.12604 7.37879 0.03977 0.01628 232.65437 7.68475 7.17746 6.70353 7.43428 7.68607 0.04010 0.01646 240.03790 7.99976 7.49481 7.02354 7.75025 8.00107 0.02828 0.01034 3.48837 0.59428 0.00000 0.00000 0.30531 0.59555 0.02862 0.01049 5.16844 0.60729 0.00002 0.00000 0.31990 0.60853 0.02914 0.01072 8.05287 0.63541 0.02338 0.00000 0.35036 0.63662 0.02952 0.01090 10.46378 0.66351 0.05935 0.00000 0.38014 0.66470 0.02993 0.01108 13.19955 0.70294 0.10097 0.00000 0.42133 0.70410 0.03029 0.01125 15.89031 0.74239 0.14570 0.00000 0.46228 0.74353 0.03063 0.01141 18.61470 0.78769 0.19284 0.00000 0.50902 0.78882 0.03100 0.01159 21.75654 0.84263 0.25121 0.00000 0.56547 0.84374 0.03133 0.01174 24.70025 0.89642 0.30871 0.00000 0.62055 0.89751 0.03164 0.01190 27.66303 0.95460 0.36888 0.00000 0.67997 0.95567 0.03189 0.01202 30.14391 1.00469 0.42111 0.00000 0.73104 1.00575 0.03243 0.01228 35.71024 1.12412 0.54494 0.00028 0.85253 1.12515 0.03290 0.01252 40.83618 1.24076 0.66675 0.10165 0.97092 1.24177 0.03343 0.01278 46.85941 1.38650 0.81883 0.29126 1.11860 1.38749 0.03399 0.01307 53.42973 1.55614 0.99149 0.46049 1.29021 1.55710 0.03450 0.01333 59.72612 1.72513 1.16416 0.63810 1.46096 1.72607 0.03502 0.01359 66.42747 1.91099 1.35523 0.83807 1.64858 1.91191 0.03546 0.01382 72.17590 2.07679 1.52443 1.01106 1.81581 2.07769 0.03599 0.01410 79.36631 2.29136 1.74280 1.23410 2.03209 2.29224 0.03646 0.01434 86.02460 2.49515 1.95165 1.45012 2.23738 2.49601 0.03689 0.01457 92.18044 2.69088 2.14966 1.65015 2.43446 2.69173 0.03745 0.01487 100.28083 2.95458 2.41786 1.92405 2.69986 2.95541 0.03797 0.01515 108.15595 3.21822 2.68642 2.19888 2.96506 3.21903 0.03847 0.01542 115.55888 3.47482 2.94556 2.46064 3.22311 3.47562 0.03897 0.01569 123.23465 3.74601 3.22112 2.74171 3.49572 3.74679 0.03946 0.01596 130.78375 4.02062 3.49865 3.02255 3.77171 4.02140 0.03992 0.01621 138.09111 4.29189 3.77342 3.30161 4.04426 4.29265 0.04037 0.01646 145.03664 4.55568 4.04004 3.57154 4.30926 4.55643 0.04081 0.01670 152.12305 4.82993 4.31749 3.85291 4.58469 4.83067 0.04125 0.01695 159.12541 5.10678 4.59701 4.13555 4.86271 5.10752 0.04168 0.01718 165.89978 5.37897 4.87232 4.41468 5.13599 5.37969 0.04208 0.01741 172.26764 5.64030 5.13569 4.68045 5.39834 5.64102 0.04248 0.01763 178.88937 5.91493 5.41371 4.96264 5.67399 5.91564 0.04289 0.01786 185.25558 6.18548 5.68591 5.23678 5.94554 6.18619 0.04327 0.01808 191.49365 6.45332 5.95633 5.51032 6.21432 6.45402 0.04364 0.01829 197.40677 6.71127 6.21652 5.77324 6.47316 6.71197 0.04401 0.01850 203.35986 6.97522 6.48233 6.04126 6.73800 6.97591 0.03023 0.01116 3.46702 0.57013 0.00000 0.00000 0.29285 0.57086 0.03061 0.01133 5.06337 0.58296 0.00002 0.00000 0.30719 0.58367 0.03116 0.01159 7.78166 0.61023 0.02257 0.00000 0.33670 0.61092 0.03158 0.01179 10.03696 0.63718 0.05713 0.00000 0.36526 0.63785 0.03202 0.01200 12.58273 0.67465 0.09680 0.00000 0.40441 0.67529 0.03241 0.01219 15.07400 0.71199 0.13918 0.00000 0.44318 0.71261 0.03278 0.01237 17.58636 0.75465 0.18362 0.00000 0.48721 0.75526 0.03318 0.01257 20.47217 0.80618 0.23843 0.00000 0.54018 0.80677 0.03353 0.01274 23.16639 0.85647 0.29222 0.00000 0.59171 0.85705 0.03388 0.01291 25.86942 0.91068 0.34831 0.00000 0.64711 0.91125 0.03415 0.01305 28.12686 0.95725 0.39687 0.00000 0.69461 0.95780 0.03474 0.01335 33.17249 1.06789 0.51159 0.00027 0.80723 1.06843 0.03525 0.01361 37.79736 1.17553 0.62396 0.09372 0.91653 1.17604 0.03582 0.01391 43.20707 1.30951 0.76371 0.26818 1.05236 1.31001 0.03643 0.01423 49.08310 1.46482 0.92172 0.42306 1.20956 1.46530 0.03698 0.01452 54.69190 1.61899 1.07915 0.58505 1.36541 1.61945 0.03755 0.01482 60.64011 1.78798 1.25280 0.76686 1.53608 1.78843 0.03802 0.01507 65.72558 1.93828 1.40610 0.92363 1.68774 1.93872 0.03859 0.01538 72.06629 2.13222 1.60338 1.12518 1.88332 2.13264 0.03911 0.01565 77.91979 2.31589 1.79153 1.31987 2.06842 2.31631 0.03958 0.01591 83.31506 2.49185 1.96944 1.49961 2.24566 2.49225 0.04018 0.01624 90.39440 2.72828 2.20981 1.74515 2.48370 2.72867 0.04075 0.01655 97.25583 2.96398 2.44984 1.99086 2.72090 2.96436 0.04129 0.01685 103.68510 3.19280 2.68082 2.22421 2.95109 3.19317 0.04183 0.01715 110.33495 3.43405 2.92590 2.47426 3.19370 3.43441 0.04236 0.01744 116.85600 3.67776 3.17213 2.72346 3.43873 3.67813 0.04287 0.01773 123.15311 3.91798 3.41540 2.97059 3.68017 3.91834 0.04335 0.01800 129.12375 4.15111 3.65097 3.20914 3.91444 4.15146 0.04383 0.01827 135.20210 4.39300 3.89565 3.45734 4.15747 4.39335 0.04431 0.01854 141.19426 4.63673 4.14168 3.70617 4.40230 4.63707 0.04477 0.01880 146.97998 4.87592 4.38360 3.95152 4.64254 4.87627 0.04521 0.01905 152.40591 5.10517 4.61461 4.18467 4.87276 5.10551 0.04565 0.01930 158.04028 5.34574 4.85814 4.43195 5.11430 5.34608 0.04609 0.01955 163.44283 5.58230 5.09611 4.67164 5.35181 5.58264 0.04650 0.01979 168.72942 5.81617 5.33223 4.91055 5.58657 5.81651 0.04690 0.02002 173.73129 6.04107 5.55909 5.13985 5.81232 6.04141 0.04731 0.02025 178.75746 6.27087 5.79049 5.37323 6.04297 6.27121 0.03724 0.01418 3.39811 0.50046 0.00000 0.00000 0.25722 0.50019 0.03771 0.01443 4.74657 0.51264 0.00002 0.00000 0.27073 0.51236 0.03842 0.01481 6.98996 0.53738 0.02019 0.00000 0.29743 0.53708 0.03895 0.01510 8.81034 0.56100 0.05068 0.00000 0.32246 0.56070 0.03952 0.01540 10.83264 0.59289 0.08477 0.00000 0.35583 0.59258 0.04001 0.01567 12.78092 0.62427 0.12051 0.00000 0.38846 0.62395 0.04049 0.01593 14.72161 0.65951 0.15743 0.00000 0.42490 0.65918 0.04101 0.01622 16.92324 0.70157 0.20237 0.00000 0.46822 0.70124 0.04146 0.01647 18.95601 0.74219 0.24594 0.00000 0.50993 0.74185 0.04190 0.01671 20.97504 0.78549 0.29091 0.00000 0.55427 0.78516 0.04225 0.01691 22.64741 0.82240 0.32951 0.00000 0.59200 0.82207 0.04300 0.01733 26.34026 0.90916 0.41968 0.00023 0.68048 0.90882 0.04366 0.01770 29.67546 0.99250 0.50684 0.07266 0.76529 0.99216 0.04441 0.01812 33.52017 1.09500 0.61389 0.20706 0.86939 1.09465 0.04519 0.01857 37.64029 1.21228 0.73335 0.32436 0.98833 1.21194 0.04591 0.01898 41.52393 1.32738 0.85101 0.44575 1.10490 1.32704 0.04663 0.01940 45.59593 1.45224 0.97945 0.58064 1.23122 1.45191 0.04724 0.01975 49.04064 1.56224 1.09176 0.69576 1.34241 1.56191 0.04798 0.02018 53.29134 1.70289 1.23496 0.84241 1.48448 1.70256 0.04864 0.02057 57.17770 1.83490 1.37036 0.98290 1.61774 1.83458 0.04926 0.02092 60.72429 1.96033 1.49728 1.11138 1.74429 1.96002 0.05003 0.02138 65.33586 2.12748 1.66741 1.28558 1.91285 2.12718 0.05077 0.02181 69.76177 2.29266 1.83585 1.45844 2.07933 2.29236 0.05147 0.02222 73.86555 2.45168 1.99651 1.62105 2.23956 2.45140 0.05216 0.02264 78.07693 2.61811 2.16582 1.79422 2.40717 2.61784 0.05285 0.02304 82.16776 2.78497 2.33459 1.96537 2.57518 2.78472 0.05350 0.02343 86.08746 2.94832 2.50025 2.13403 2.73960 2.94808 0.05412 0.02380 89.77434 3.10583 2.65960 2.29574 2.89810 3.10560 0.05475 0.02417 93.50108 3.26826 2.82415 2.46302 3.06152 3.26805 0.05536 0.02454 97.14677 3.43094 2.98858 2.62967 3.22516 3.43073 0.05595 0.02489 100.64462 3.58970 3.14942 2.79315 3.38483 3.58951 0.05651 0.02522 103.89980 3.74102 3.30209 2.94753 3.53699 3.74084 0.05708 0.02556 107.26506 3.89907 3.46239 3.11069 3.69589 3.89891 0.05764 0.02590 110.46277 4.05359 3.61802 3.26773 3.85123 4.05344 0.05818 0.02622 113.57884 4.20570 3.77185 3.42373 4.00413 4.20556 0.05869 0.02653 116.50865 4.35129 3.91895 3.57272 4.15045 4.35117 0.05921 0.02684 119.43383 4.49936 4.06828 3.72362 4.29926 4.49926 0.04592 0.01818 3.32177 0.43816 0.00000 0.00000 0.22578 0.43775 0.04653 0.01854 4.44005 0.44961 0.00002 0.00000 0.23840 0.44919 0.04744 0.01908 6.26416 0.47189 0.01798 0.00000 0.26242 0.47148 0.04812 0.01949 7.71341 0.49247 0.04474 0.00000 0.28426 0.49207 0.04885 0.01993 9.29877 0.51944 0.07388 0.00000 0.31254 0.51904 0.04949 0.02031 10.80231 0.54563 0.10386 0.00000 0.33984 0.54523 0.05010 0.02068 12.28168 0.57450 0.13433 0.00000 0.36978 0.57411 0.05076 0.02109 13.93891 0.60853 0.17095 0.00000 0.40492 0.60814 0.05135 0.02144 15.45187 0.64102 0.20601 0.00000 0.43838 0.64064 0.05191 0.02178 16.93923 0.67526 0.24179 0.00000 0.47353 0.67489 0.05236 0.02206 18.16087 0.70420 0.27226 0.00000 0.50321 0.70384 0.05334 0.02266 20.82458 0.77146 0.34257 0.00020 0.57199 0.77111 0.05419 0.02318 23.19327 0.83521 0.40963 0.05600 0.63704 0.83488 0.05515 0.02377 25.88194 0.91263 0.49095 0.15892 0.71589 0.91231 0.05616 0.02439 28.72286 1.00004 0.58046 0.24719 0.80477 0.99975 0.05708 0.02497 31.36570 1.08482 0.66758 0.33755 0.89086 1.08455 0.05802 0.02555 34.10384 1.17581 0.76167 0.43692 0.98314 1.17555 0.05881 0.02604 36.39427 1.25519 0.84313 0.52083 1.06358 1.25495 0.05977 0.02663 39.18974 1.35573 0.94601 0.62670 1.16540 1.35552 0.06062 0.02717 41.71972 1.44924 1.04242 0.72728 1.26001 1.44905 0.06141 0.02766 44.00365 1.53734 1.13198 0.81834 1.34911 1.53717 0.06241 0.02828 46.94503 1.65375 1.25104 0.94085 1.46678 1.65361 0.06336 0.02888 49.73855 1.76775 1.36787 1.06135 1.58195 1.76765 0.06426 0.02944 52.29894 1.87657 1.47829 1.17360 1.69183 1.87649 0.06515 0.03000 54.90473 1.98959 1.59383 1.29235 1.80591 1.98954 0.06604 0.03056 57.40948 2.10203 1.70806 1.40870 1.91937 2.10201 0.06688 0.03108 59.78946 2.21133 1.81942 1.52261 2.02962 2.21134 0.06768 0.03158 62.00834 2.31601 1.92581 1.63105 2.13519 2.31605 0.06848 0.03208 64.23380 2.42329 2.03499 1.74255 2.24335 2.42336 0.06927 0.03258 66.39220 2.53005 2.14338 1.85288 2.35097 2.53015 0.07003 0.03306 68.44891 2.63365 2.24882 1.96055 2.45538 2.63377 0.07075 0.03351 70.34598 2.73180 2.34827 2.06155 2.55429 2.73196 0.07147 0.03396 72.29848 2.83385 2.45228 2.16791 2.65710 2.83403 0.07219 0.03441 74.13376 2.93300 2.55254 2.26948 2.75698 2.93321 0.07288 0.03484 75.91459 3.03017 2.65127 2.37005 2.85486 3.03041 0.07354 0.03525 77.57690 3.12272 2.74520 2.46560 2.94807 3.12299 0.07420 0.03567 79.22430 3.21639 2.84006 2.56187 3.04240 3.21668 0.05197 0.02118 3.27072 0.40484 0.00000 0.00000 0.20909 0.40464 0.05268 0.02162 4.26242 0.41580 0.00002 0.00000 0.22115 0.41561 0.05374 0.02229 5.86369 0.43666 0.01674 0.00000 0.24363 0.43647 0.05453 0.02279 7.12073 0.45556 0.04144 0.00000 0.26371 0.45539 0.05537 0.02332 8.48369 0.47990 0.06791 0.00000 0.28927 0.47974 0.05611 0.02379 9.76436 0.50333 0.09484 0.00000 0.31375 0.50318 0.05683 0.02425 11.01532 0.52889 0.12195 0.00000 0.34030 0.52875 0.05760 0.02474 12.40615 0.55877 0.15427 0.00000 0.37123 0.55864 0.05828 0.02517 13.66736 0.58710 0.18499 0.00000 0.40047 0.58699 0.05894 0.02559 14.89954 0.61674 0.21613 0.00000 0.43097 0.61664 0.05946 0.02593 15.90648 0.64167 0.24251 0.00000 0.45658 0.64159 0.06060 0.02665 18.08508 0.69919 0.30297 0.00019 0.51554 0.69913 0.06158 0.02729 20.00393 0.75328 0.36016 0.04786 0.57085 0.75325 0.06270 0.02801 22.16110 0.81846 0.42897 0.13546 0.63738 0.81846 0.06388 0.02876 24.42074 0.89145 0.50409 0.20981 0.71175 0.89148 0.06495 0.02945 26.50579 0.96174 0.57668 0.28542 0.78327 0.96180 0.06604 0.03016 28.65021 1.03669 0.65458 0.36805 0.85944 1.03678 0.06696 0.03075 30.43144 1.10169 0.72161 0.43738 0.92544 1.10181 0.06807 0.03146 32.59051 1.18356 0.80577 0.52435 1.00850 1.18371 0.06906 0.03210 34.53225 1.25928 0.88422 0.60655 1.08527 1.25946 0.06998 0.03269 36.27307 1.33025 0.95669 0.68051 1.15718 1.33047 0.07114 0.03345 38.50155 1.42355 1.05255 0.77956 1.25167 1.42381 0.07225 0.03416 40.60409 1.51442 1.14612 0.87646 1.34364 1.51472 0.07329 0.03483 42.51674 1.60070 1.23404 0.96617 1.43093 1.60104 0.07433 0.03550 44.45325 1.68991 1.32566 1.06071 1.52114 1.69029 0.07535 0.03616 46.30192 1.77824 1.41577 1.15285 1.61043 1.77866 0.07633 0.03678 48.04917 1.86373 1.50325 1.24269 1.69683 1.86419 0.07725 0.03738 49.66874 1.94527 1.58647 1.32784 1.77921 1.94577 0.07818 0.03797 51.28493 2.02852 1.67156 1.41507 1.86330 2.02906 0.07910 0.03856 52.84356 2.11104 1.75569 1.50103 1.94663 2.11162 0.07997 0.03912 54.32217 2.19084 1.83726 1.58465 2.02720 2.19145 0.08080 0.03966 55.67789 2.26617 1.91389 1.66276 2.10325 2.26682 0.08164 0.04019 57.06943 2.34427 1.99384 1.74484 2.18207 2.34496 0.08247 0.04072 58.36747 2.41985 2.07056 1.82284 2.25835 2.42057 0.08327 0.04123 59.62379 2.49373 2.14594 1.89992 2.33290 2.49449 0.08402 0.04172 60.79072 2.56388 2.21743 1.97292 2.40367 2.56467 0.08479 0.04221 61.94125 2.63465 2.28940 2.04622 2.47507 2.63548 0.05679 0.02372 3.23000 0.38253 0.00000 0.00000 0.19792 0.38254 0.05757 0.02423 4.13555 0.39312 0.00002 0.00000 0.20956 0.39314 0.05876 0.02501 5.58758 0.41295 0.01586 0.00000 0.23094 0.41299 0.05964 0.02558 6.71781 0.43069 0.03913 0.00000 0.24981 0.43075 0.06058 0.02620 7.93560 0.45324 0.06379 0.00000 0.27353 0.45332 0.06141 0.02674 9.07223 0.47482 0.08868 0.00000 0.29611 0.47492 0.06221 0.02727 10.17669 0.49818 0.11355 0.00000 0.32042 0.49829 0.06307 0.02783 11.39793 0.52532 0.14303 0.00000 0.34856 0.52545 0.06382 0.02833 12.49995 0.55092 0.17091 0.00000 0.37504 0.55108 0.06456 0.02881 13.57172 0.57757 0.19903 0.00000 0.40251 0.57774 0.06515 0.02920 14.44434 0.59990 0.22276 0.00000 0.42550 0.60009 0.06641 0.03003 16.32156 0.65116 0.27688 0.00018 0.47813 0.65138 0.06752 0.03076 17.96325 0.69907 0.32776 0.04266 0.52722 0.69933 0.06876 0.03158 19.79557 0.75649 0.38864 0.12053 0.58593 0.75678 0.07007 0.03244 21.70264 0.82040 0.45471 0.18611 0.65116 0.82073 0.07127 0.03323 23.45176 0.88163 0.51821 0.25249 0.71357 0.88200 0.07249 0.03404 25.24085 0.94660 0.58603 0.32470 0.77972 0.94701 0.07351 0.03471 26.71914 1.00271 0.64414 0.38501 0.83679 1.00316 0.07475 0.03553 28.50177 1.07308 0.71678 0.46034 0.90831 1.07357 0.07585 0.03625 30.09744 1.13790 0.78423 0.53126 0.97415 1.13844 0.07687 0.03692 31.52044 1.19843 0.84628 0.59480 1.03559 1.19901 0.07817 0.03777 33.33386 1.27771 0.92807 0.67959 1.11601 1.27834 0.07940 0.03858 35.03629 1.35462 1.00758 0.76222 1.19398 1.35530 0.08055 0.03934 36.57598 1.42736 1.08198 0.83838 1.26769 1.42808 0.08171 0.04009 38.12883 1.50231 1.15927 0.91840 1.34361 1.50308 0.08285 0.04084 39.60334 1.57626 1.23500 0.99608 1.41849 1.57708 0.08394 0.04155 40.99130 1.64761 1.30829 1.07161 1.49072 1.64848 0.08496 0.04221 42.27205 1.71546 1.37780 1.14296 1.55938 1.71637 0.08599 0.04288 43.54515 1.78454 1.44867 1.21586 1.62927 1.78549 0.08701 0.04354 44.76743 1.85281 1.51853 1.28747 1.69833 1.85381 0.08798 0.04417 45.92301 1.91866 1.58610 1.35697 1.76492 1.91971 0.08890 0.04477 46.97741 1.98065 1.64940 1.42169 1.82761 1.98174 0.08983 0.04537 48.05758 2.04479 1.71531 1.48959 1.89245 2.04593 0.09075 0.04597 49.05885 2.10667 1.77835 1.55389 1.95501 2.10785 0.09162 0.04653 50.02613 2.16705 1.84019 1.61733 2.01603 2.16827 0.09246 0.04707 50.92106 2.22424 1.89869 1.67727 2.07383 2.22550 0.09331 0.04762 51.79964 2.28182 1.95745 1.73730 2.13202 2.28312 0.06085 0.02613 3.19378 0.36613 0.00000 0.00000 0.18955 0.36610 0.06171 0.02670 4.03502 0.37640 0.00002 0.00000 0.20084 0.37639 0.06301 0.02757 5.37431 0.39539 0.01516 0.00000 0.22132 0.39541 0.06398 0.02822 6.40918 0.41221 0.03731 0.00000 0.23922 0.41225 0.06501 0.02891 7.51848 0.43337 0.06056 0.00000 0.26150 0.43343 0.06592 0.02951 8.54820 0.45353 0.08388 0.00000 0.28263 0.45362 0.06680 0.03010 9.54456 0.47520 0.10705 0.00000 0.30522 0.47532 0.06774 0.03073 10.64140 0.50028 0.13440 0.00000 0.33127 0.50042 0.06856 0.03129 11.62724 0.52385 0.16014 0.00000 0.35567 0.52402 0.06937 0.03183 12.58248 0.54827 0.18601 0.00000 0.38089 0.54846 0.07001 0.03226 13.35786 0.56868 0.20777 0.00000 0.40194 0.56890 0.07140 0.03319 15.01807 0.61534 0.25720 0.00017 0.44992 0.61560 0.07261 0.03400 16.46149 0.65875 0.30345 0.03883 0.49446 0.65905 0.07397 0.03491 18.06292 0.71054 0.35854 0.10954 0.54750 0.71089 0.07541 0.03586 19.72087 0.76790 0.41801 0.16874 0.60614 0.76831 0.07672 0.03674 21.23395 0.82262 0.47495 0.22841 0.66200 0.82308 0.07805 0.03763 22.77463 0.88048 0.53553 0.29309 0.72099 0.88099 0.07917 0.03837 24.04215 0.93026 0.58724 0.34690 0.77171 0.93081 0.08052 0.03927 25.56394 0.99248 0.65167 0.41389 0.83504 0.99309 0.08173 0.04007 26.92084 1.04961 0.71130 0.47676 0.89315 1.05027 0.08284 0.04081 28.12565 1.10279 0.76597 0.53289 0.94721 1.10350 0.08426 0.04174 29.65516 1.17223 0.83783 0.60758 1.01775 1.17300 0.08560 0.04263 31.08496 1.23937 0.90746 0.68014 1.08591 1.24020 0.08686 0.04345 32.37159 1.30266 0.97239 0.74677 1.15015 1.30355 0.08812 0.04429 33.66507 1.36770 1.03966 0.81663 1.21613 1.36865 0.08936 0.04510 34.88776 1.43169 1.10538 0.88421 1.28102 1.43269 0.09053 0.04587 36.03455 1.49327 1.16884 0.94977 1.34344 1.49433 0.09165 0.04660 37.08847 1.55167 1.22885 1.01154 1.40263 1.55278 0.09277 0.04733 38.13279 1.61099 1.28991 1.07451 1.46273 1.61215 0.09387 0.04805 39.13180 1.66948 1.34994 1.13621 1.52199 1.67070 0.09492 0.04873 40.07352 1.72578 1.40790 1.19598 1.57901 1.72706 0.09592 0.04938 40.92907 1.77865 1.46205 1.25150 1.63256 1.77998 0.09693 0.05004 41.80413 1.83327 1.51837 1.30967 1.68785 1.83464 0.09793 0.05068 42.61046 1.88583 1.57208 1.36460 1.74107 1.88726 0.09888 0.05129 43.38823 1.93704 1.62469 1.41872 1.79291 1.93852 0.09978 0.05188 44.10533 1.98545 1.67437 1.46976 1.84191 1.98697 0.10070 0.05247 44.80675 2.03408 1.72416 1.52078 1.89114 2.03566 0.07576 0.03576 3.05765 0.31874 0.00000 0.00000 0.16547 0.31885 0.07691 0.03657 3.71094 0.32792 0.00002 0.00000 0.17557 0.32808 0.07866 0.03781 4.72923 0.34428 0.01302 0.00000 0.19327 0.34450 0.07996 0.03873 5.49848 0.35830 0.03177 0.00000 0.20826 0.35857 0.08134 0.03971 6.31010 0.37541 0.05091 0.00000 0.22639 0.37573 0.08256 0.04056 7.05063 0.39146 0.06972 0.00000 0.24332 0.39183 0.08373 0.04138 7.75761 0.40838 0.08808 0.00000 0.26107 0.40880 0.08499 0.04227 8.52490 0.42768 0.10944 0.00000 0.28125 0.42815 0.08610 0.04304 9.20581 0.44558 0.12927 0.00000 0.29991 0.44610 0.08718 0.04379 9.85775 0.46388 0.14895 0.00000 0.31894 0.46445 0.08804 0.04438 10.38182 0.47904 0.16535 0.00000 0.33467 0.47964 0.08989 0.04566 11.48651 0.51323 0.20210 0.00014 0.37007 0.51392 0.09150 0.04677 12.42825 0.54456 0.23597 0.02862 0.40243 0.54532 0.09331 0.04802 13.45200 0.58140 0.27572 0.08034 0.44041 0.58224 0.09522 0.04932 14.49332 0.62156 0.31797 0.12279 0.48174 0.62250 0.09696 0.05050 15.42784 0.65935 0.35786 0.16506 0.52058 0.66038 0.09872 0.05170 16.36506 0.69881 0.39978 0.21032 0.56109 0.69993 0.10019 0.05269 17.12464 0.73238 0.43516 0.24753 0.59551 0.73357 0.10198 0.05390 18.02311 0.77387 0.47873 0.29333 0.63803 0.77516 0.10357 0.05496 18.81368 0.81156 0.51866 0.33590 0.67662 0.81294 0.10503 0.05593 19.50453 0.84628 0.55486 0.37345 0.71215 0.84773 0.10688 0.05717 20.37022 0.89116 0.60198 0.42298 0.75806 0.89272 0.10863 0.05833 21.16773 0.93411 0.64718 0.47060 0.80195 0.93576 0.11027 0.05941 21.87235 0.97414 0.68884 0.51381 0.84286 0.97589 0.11191 0.06049 22.57285 1.01493 0.73165 0.55877 0.88453 1.01677 0.11352 0.06154 23.22383 1.05466 0.77305 0.60182 0.92509 1.05659 0.11504 0.06253 23.82682 1.09257 0.81270 0.64324 0.96379 1.09459 0.11648 0.06346 24.37295 1.12822 0.84989 0.68194 1.00018 1.13032 0.11792 0.06440 24.90754 1.16415 0.88743 0.72111 1.03685 1.16634 0.11934 0.06532 25.41137 1.19929 0.92405 0.75917 1.07270 1.20157 0.12069 0.06619 25.88124 1.23288 0.95916 0.79580 1.10697 1.23525 0.12197 0.06700 26.30087 1.26417 0.99170 0.82954 1.13890 1.26662 0.12326 0.06783 26.72791 1.29634 1.02539 0.86476 1.17170 1.29886 0.12453 0.06863 27.11206 1.32700 1.05721 0.89767 1.20298 1.32960 0.12574 0.06941 27.48080 1.35674 1.08825 0.92998 1.23331 1.35941 0.12689 0.07013 27.81589 1.38466 1.11736 0.96025 1.26179 1.38741 0.12805 0.07087 28.13850 1.41252 1.14634 0.99029 1.29020 1.41534 0.09547 0.05040 2.86346 0.27654 0.00000 0.00000 0.14378 0.27689 0.09707 0.05155 3.34882 0.28442 0.00002 0.00000 0.15249 0.28485 0.09949 0.05328 4.08790 0.29794 0.01084 0.00000 0.16725 0.29850 0.10128 0.05456 4.63276 0.30918 0.02623 0.00000 0.17939 0.30984 0.10319 0.05590 5.19808 0.32249 0.04152 0.00000 0.19363 0.32325 0.10485 0.05708 5.70461 0.33478 0.05624 0.00000 0.20674 0.33563 0.10647 0.05820 6.18119 0.34748 0.07034 0.00000 0.22021 0.34842 0.10819 0.05940 6.69053 0.36175 0.08650 0.00000 0.23529 0.36279 0.10971 0.06045 7.13631 0.37481 0.10130 0.00000 0.24906 0.37594 0.11117 0.06146 7.55746 0.38797 0.11579 0.00000 0.26290 0.38919 0.11234 0.06226 7.89242 0.39878 0.12775 0.00000 0.27424 0.40007 0.11485 0.06397 8.58576 0.42280 0.15417 0.00012 0.29939 0.42424 0.11703 0.06545 9.16326 0.44445 0.17813 0.02044 0.32201 0.44603 0.11948 0.06710 9.77556 0.46952 0.20581 0.05707 0.34815 0.47125 0.12203 0.06880 10.38573 0.49638 0.23473 0.08652 0.37612 0.49828 0.12435 0.07034 10.92244 0.52128 0.26164 0.11545 0.40200 0.52333 0.12670 0.07188 11.45095 0.54694 0.28955 0.14604 0.42865 0.54914 0.12865 0.07316 11.87120 0.56848 0.31280 0.17085 0.45100 0.57081 0.13101 0.07469 12.35926 0.59477 0.34109 0.20103 0.47827 0.59726 0.13310 0.07605 12.78187 0.61839 0.36673 0.22879 0.50274 0.62102 0.13502 0.07728 13.14306 0.63987 0.38968 0.25296 0.52500 0.64263 0.13744 0.07882 13.58831 0.66734 0.41926 0.28453 0.55345 0.67027 0.13972 0.08027 13.99081 0.69332 0.44730 0.31455 0.58033 0.69640 0.14184 0.08161 14.33730 0.71722 0.47281 0.34143 0.60508 0.72045 0.14397 0.08294 14.67683 0.74134 0.49881 0.36917 0.63003 0.74472 0.14603 0.08423 14.98428 0.76454 0.52365 0.39541 0.65405 0.76808 0.14798 0.08544 15.26416 0.78647 0.54722 0.42046 0.67674 0.79015 0.14982 0.08657 15.51221 0.80689 0.56911 0.44362 0.69787 0.81070 0.15165 0.08769 15.75054 0.82729 0.59103 0.46688 0.71898 0.83123 0.15345 0.08879 15.96984 0.84705 0.61221 0.48927 0.73942 0.85112 0.15515 0.08983 16.17098 0.86578 0.63237 0.51068 0.75881 0.86997 0.15676 0.09079 16.34517 0.88305 0.65086 0.53019 0.77669 0.88736 0.15838 0.09177 16.52149 0.90070 0.66993 0.55049 0.79496 0.90513 0.15996 0.09272 16.67322 0.91732 0.68771 0.56921 0.81219 0.92187 0.16147 0.09362 16.81807 0.93336 0.70498 0.58753 0.82880 0.93802 0.16290 0.09447 16.94600 0.94830 0.72106 0.60456 0.84428 0.95307 0.16433 0.09532 17.06516 0.96307 0.73693 0.62133 0.85959 0.96795 0.11035 0.06228 2.71339 0.25397 0.00000 0.00000 0.13212 0.25464 0.11230 0.06366 3.11051 0.26097 0.00002 0.00000 0.13993 0.26176 0.11525 0.06572 3.70661 0.27277 0.00956 0.00000 0.15293 0.27374 0.11743 0.06724 4.13943 0.28239 0.02303 0.00000 0.16343 0.28350 0.11975 0.06884 4.58383 0.29359 0.03619 0.00000 0.17555 0.29486 0.12178 0.07022 4.97765 0.30385 0.04872 0.00000 0.18660 0.30525 0.12373 0.07155 5.34474 0.31432 0.06058 0.00000 0.19782 0.31585 0.12581 0.07296 5.73328 0.32597 0.07407 0.00000 0.21028 0.32765 0.12764 0.07418 6.07035 0.33656 0.08631 0.00000 0.22156 0.33836 0.12940 0.07536 6.38605 0.34713 0.09820 0.00000 0.23280 0.34906 0.13081 0.07629 6.63544 0.35576 0.10795 0.00000 0.24195 0.35779 0.13381 0.07827 7.14521 0.37478 0.12932 0.00011 0.26209 0.37702 0.13641 0.07997 7.56303 0.39176 0.14851 0.01649 0.28002 0.39419 0.13933 0.08186 7.99825 0.41122 0.17047 0.04589 0.30054 0.41385 0.14235 0.08380 8.42544 0.43184 0.19316 0.06923 0.32226 0.43470 0.14510 0.08554 8.79593 0.45078 0.21408 0.09197 0.34217 0.45384 0.14787 0.08729 9.15610 0.47011 0.23561 0.11582 0.36249 0.47339 0.15015 0.08872 9.43856 0.48622 0.25339 0.13502 0.37940 0.48966 0.15292 0.09044 9.76179 0.50571 0.27487 0.15819 0.39987 0.50937 0.15536 0.09195 10.03830 0.52309 0.29419 0.17936 0.41811 0.52694 0.15758 0.09331 10.27071 0.53877 0.31136 0.19764 0.43455 0.54279 0.16039 0.09501 10.55348 0.55867 0.33333 0.22138 0.45543 0.56291 0.16302 0.09661 10.80513 0.57734 0.35401 0.24380 0.47501 0.58179 0.16546 0.09806 11.01653 0.59437 0.37266 0.26369 0.49288 0.59900 0.16790 0.09952 11.22134 0.61144 0.39156 0.28412 0.51078 0.61626 0.17026 0.10091 11.40259 0.62772 0.40947 0.30330 0.52788 0.63273 0.17249 0.10221 11.56505 0.64301 0.42638 0.32150 0.54393 0.64820 0.17457 0.10342 11.70602 0.65715 0.44198 0.33823 0.55877 0.66250 0.17664 0.10463 11.83897 0.67117 0.45751 0.35494 0.57351 0.67669 0.17867 0.10580 11.95815 0.68466 0.47241 0.37093 0.58770 0.69035 0.18059 0.10690 12.06571 0.69738 0.48653 0.38615 0.60107 0.70322 0.18239 0.10792 12.15570 0.70902 0.49940 0.39993 0.61332 0.71501 0.18421 0.10895 12.24650 0.72088 0.51263 0.41422 0.62581 0.72701 0.18597 0.10994 12.31989 0.73194 0.52486 0.42730 0.63747 0.73821 0.18765 0.11088 12.38969 0.74257 0.53670 0.44006 0.64868 0.74899 0.18924 0.11177 12.44906 0.75241 0.54767 0.45187 0.65906 0.75895 0.19082 0.11265 12.50182 0.76207 0.55843 0.46343 0.66927 0.76874 0.12307 0.07266 2.58651 0.23882 0.00000 0.00000 0.12429 0.23989 0.12533 0.07421 2.92600 0.24515 0.00002 0.00000 0.13142 0.24637 0.12874 0.07653 3.43015 0.25567 0.00865 0.00000 0.14314 0.25714 0.13126 0.07823 3.79203 0.26415 0.02077 0.00000 0.15249 0.26581 0.13393 0.08000 4.16067 0.27391 0.03249 0.00000 0.16316 0.27577 0.13626 0.08154 4.48471 0.28279 0.04355 0.00000 0.17283 0.28482 0.13849 0.08301 4.78459 0.29177 0.05394 0.00000 0.18257 0.29397 0.14088 0.08456 5.09966 0.30171 0.06568 0.00000 0.19331 0.30409 0.14296 0.08591 5.37118 0.31068 0.07626 0.00000 0.20298 0.31323 0.14497 0.08720 5.62372 0.31960 0.08649 0.00000 0.21256 0.32230 0.14657 0.08822 5.82215 0.32683 0.09484 0.00000 0.22032 0.32966 0.14997 0.09038 6.22372 0.34269 0.11303 0.00010 0.23729 0.34578 0.15292 0.09223 6.54853 0.35673 0.12924 0.01402 0.25230 0.36006 0.15621 0.09428 6.88178 0.37271 0.14766 0.03892 0.26935 0.37630 0.15961 0.09637 7.20484 0.38951 0.16655 0.05850 0.28724 0.39338 0.16268 0.09824 7.48170 0.40481 0.18385 0.07747 0.30354 0.40893 0.16578 0.10010 7.74790 0.42034 0.20153 0.09725 0.32006 0.42472 0.16833 0.10163 7.95410 0.43319 0.21606 0.11307 0.33372 0.43777 0.17139 0.10345 8.18702 0.44864 0.23349 0.13206 0.35015 0.45348 0.17410 0.10504 8.38419 0.46234 0.24910 0.14933 0.36471 0.46740 0.17655 0.10647 8.54710 0.47461 0.26288 0.16415 0.37776 0.47988 0.17965 0.10826 8.74295 0.49010 0.28043 0.18331 0.39424 0.49563 0.18254 0.10992 8.91469 0.50454 0.29686 0.20130 0.40960 0.51031 0.18521 0.11144 9.05547 0.51760 0.31157 0.21716 0.42351 0.52360 0.18786 0.11294 9.19035 0.53063 0.32642 0.23339 0.43739 0.53686 0.19043 0.11437 9.30664 0.54298 0.34040 0.24854 0.45056 0.54942 0.19284 0.11571 9.40909 0.55451 0.35354 0.26285 0.46286 0.56116 0.19509 0.11695 9.49577 0.56511 0.36560 0.27595 0.47417 0.57195 0.19733 0.11818 9.57579 0.57557 0.37756 0.28897 0.48535 0.58260 0.19951 0.11936 9.64523 0.58556 0.38898 0.30137 0.49605 0.59278 0.20157 0.12048 9.70659 0.59494 0.39975 0.31314 0.50610 0.60234 0.20349 0.12151 9.75539 0.60346 0.40952 0.32374 0.51524 0.61103 0.20543 0.12254 9.80451 0.61213 0.41953 0.33471 0.52453 0.61986 0.20731 0.12353 9.84041 0.62013 0.42872 0.34468 0.53315 0.62802 0.20909 0.12448 9.87443 0.62781 0.43761 0.35440 0.54141 0.63586 0.21077 0.12535 9.90141 0.63488 0.44580 0.36334 0.54902 0.64306 0.21245 0.12622 9.92310 0.64176 0.45379 0.37206 0.55646 0.65009 0.13453 0.08202 2.47572 0.22750 0.00000 0.00000 0.11845 0.22903 0.13708 0.08371 2.77355 0.23328 0.00002 0.00000 0.12504 0.23501 0.14090 0.08622 3.21204 0.24279 0.00795 0.00000 0.13576 0.24483 0.14371 0.08806 3.52386 0.25039 0.01905 0.00000 0.14425 0.25266 0.14669 0.08997 3.83948 0.25907 0.02969 0.00000 0.15384 0.26158 0.14927 0.09162 4.11512 0.26692 0.03966 0.00000 0.16249 0.26964 0.15175 0.09319 4.36861 0.27481 0.04898 0.00000 0.17114 0.27773 0.15440 0.09485 4.63338 0.28349 0.05945 0.00000 0.18063 0.28664 0.15670 0.09629 4.86033 0.29130 0.06885 0.00000 0.18914 0.29464 0.15892 0.09766 5.07013 0.29901 0.07789 0.00000 0.19753 0.30254 0.16068 0.09874 5.23423 0.30525 0.08524 0.00000 0.20431 0.30893 0.16442 0.10102 5.56345 0.31886 0.10119 0.00009 0.21905 0.32285 0.16765 0.10297 5.82663 0.33084 0.11531 0.01228 0.23200 0.33511 0.17125 0.10512 6.09288 0.34438 0.13128 0.03403 0.24663 0.34896 0.17496 0.10730 6.34818 0.35852 0.14754 0.05102 0.26188 0.36342 0.17830 0.10925 6.56462 0.37132 0.16236 0.06738 0.27569 0.37652 0.18165 0.11119 6.77064 0.38424 0.17743 0.08437 0.28962 0.38973 0.18440 0.11277 6.92832 0.39487 0.18974 0.09789 0.30107 0.40060 0.18771 0.11464 7.10431 0.40759 0.20445 0.11405 0.31478 0.41360 0.19062 0.11628 7.25181 0.41880 0.21757 0.12869 0.32688 0.42508 0.19325 0.11774 7.37140 0.42879 0.22909 0.14119 0.33766 0.43530 0.19656 0.11956 7.51340 0.44134 0.24370 0.15728 0.35121 0.44814 0.19964 0.12125 7.63597 0.45297 0.25731 0.17233 0.36377 0.46004 0.20248 0.12278 7.73389 0.46341 0.26944 0.18553 0.37509 0.47074 0.20530 0.12429 7.82660 0.47380 0.28163 0.19900 0.38633 0.48138 0.20801 0.12573 7.90402 0.48357 0.29306 0.21150 0.39694 0.49139 0.21055 0.12707 7.97073 0.49265 0.30375 0.22328 0.40680 0.50070 0.21292 0.12830 8.02523 0.50095 0.31352 0.23401 0.41582 0.50921 0.21527 0.12952 8.07414 0.50910 0.32318 0.24464 0.42471 0.51757 0.21755 0.13069 8.11468 0.51685 0.33235 0.25473 0.43317 0.52552 0.21970 0.13179 8.14933 0.52409 0.34099 0.26427 0.44109 0.53296 0.22170 0.13280 8.17448 0.53062 0.34877 0.27283 0.44825 0.53966 0.22371 0.13381 8.19975 0.53725 0.35674 0.28168 0.45551 0.54647 0.22565 0.13477 8.21457 0.54331 0.36401 0.28967 0.46219 0.55270 0.22750 0.13569 8.22855 0.54911 0.37103 0.29744 0.46858 0.55868 0.22923 0.13654 8.23759 0.55441 0.37747 0.30458 0.47444 0.56414 0.23095 0.13738 8.24227 0.55956 0.38373 0.31151 0.48015 0.56943 0.15525 0.09864 2.28777 0.21099 0.00000 0.00000 0.11003 0.21364 0.15827 0.10052 2.52821 0.21590 0.00002 0.00000 0.11578 0.21882 0.16278 0.10330 2.87740 0.22388 0.00692 0.00000 0.12501 0.22722 0.16610 0.10532 3.12196 0.23017 0.01652 0.00000 0.13221 0.23382 0.16958 0.10741 3.36690 0.23726 0.02561 0.00000 0.14026 0.24123 0.17260 0.10921 3.57867 0.24362 0.03405 0.00000 0.14745 0.24787 0.17549 0.11091 3.77149 0.24995 0.04185 0.00000 0.15457 0.25447 0.17856 0.11270 3.97084 0.25687 0.05056 0.00000 0.16233 0.26167 0.18121 0.11425 4.14011 0.26304 0.05833 0.00000 0.16924 0.26809 0.18377 0.11571 4.29501 0.26910 0.06575 0.00000 0.17599 0.27439 0.18579 0.11687 4.41529 0.27397 0.07175 0.00000 0.18142 0.27945 0.19008 0.11928 4.65284 0.28449 0.08465 0.00008 0.19312 0.29039 0.19375 0.12133 4.83880 0.29368 0.09599 0.00994 0.20332 0.29992 0.19782 0.12358 5.02224 0.30396 0.10869 0.02747 0.21473 0.31058 0.20199 0.12584 5.19436 0.31456 0.12149 0.04100 0.22649 0.32158 0.20573 0.12785 5.33723 0.32407 0.13305 0.05394 0.23704 0.33144 0.20947 0.12983 5.47057 0.33357 0.14473 0.06728 0.24759 0.34130 0.21252 0.13143 5.57016 0.34131 0.15419 0.07781 0.25620 0.34934 0.21617 0.13332 5.67841 0.35048 0.16541 0.09031 0.26640 0.35886 0.21937 0.13496 5.76723 0.35851 0.17534 0.10156 0.27534 0.36719 0.22223 0.13641 5.83642 0.36557 0.18399 0.11109 0.28323 0.37453 0.22582 0.13822 5.91633 0.37438 0.19489 0.12329 0.29307 0.38367 0.22916 0.13987 5.98282 0.38246 0.20497 0.13462 0.30212 0.39207 0.23220 0.14136 6.03187 0.38962 0.21386 0.14447 0.31017 0.39952 0.23522 0.14282 6.07682 0.39668 0.22275 0.15447 0.31813 0.40687 0.23810 0.14419 6.11093 0.40325 0.23101 0.16368 0.32555 0.41371 0.24079 0.14546 6.13825 0.40930 0.23869 0.17230 0.33241 0.42001 0.24327 0.14663 6.15776 0.41476 0.24565 0.18011 0.33862 0.42571 0.24574 0.14777 6.17308 0.42008 0.25249 0.18781 0.34469 0.43126 0.24811 0.14886 6.18265 0.42507 0.25894 0.19506 0.35042 0.43648 0.25034 0.14987 6.18899 0.42970 0.26498 0.20189 0.35574 0.44131 0.25240 0.15080 6.18955 0.43382 0.27037 0.20796 0.36050 0.44562 0.25448 0.15173 6.19012 0.43798 0.27589 0.21423 0.36532 0.44998 0.25646 0.15260 6.18338 0.44171 0.28085 0.21983 0.36968 0.45389 0.25834 0.15342 6.17694 0.44527 0.28563 0.22527 0.37384 0.45763 0.26010 0.15418 6.16791 0.44848 0.28999 0.23023 0.37762 0.46100 0.26184 0.15492 6.15572 0.45155 0.29419 0.23502 0.38126 0.46423 0.18319 0.12002 2.06245 0.19387 0.00000 0.00000 0.10150 0.19859 0.18678 0.12206 2.24967 0.19782 0.00001 0.00000 0.10635 0.20291 0.19212 0.12505 2.51734 0.20416 0.00587 0.00000 0.11402 0.20981 0.19602 0.12720 2.70149 0.20908 0.01397 0.00000 0.11993 0.21514 0.20009 0.12941 2.88348 0.21456 0.02153 0.00000 0.12643 0.22104 0.20361 0.13130 3.03899 0.21944 0.02848 0.00000 0.13219 0.22628 0.20695 0.13308 3.17878 0.22424 0.03485 0.00000 0.13784 0.23144 0.21047 0.13493 3.32155 0.22944 0.04189 0.00000 0.14394 0.23701 0.21352 0.13653 3.44140 0.23405 0.04813 0.00000 0.14933 0.24193 0.21643 0.13802 3.54959 0.23853 0.05404 0.00000 0.15455 0.24670 0.21873 0.13920 3.63279 0.24210 0.05879 0.00000 0.15872 0.25052 0.22357 0.14164 3.79371 0.24976 0.06892 0.00007 0.16764 0.25868 0.22769 0.14370 3.91602 0.25636 0.07773 0.00781 0.17533 0.26571 0.23224 0.14593 4.03207 0.26367 0.08751 0.02151 0.18383 0.27348 0.23684 0.14815 4.13748 0.27109 0.09725 0.03196 0.19248 0.28138 0.24094 0.15009 4.22208 0.27766 0.10596 0.04186 0.20015 0.28836 0.24500 0.15200 4.29852 0.28414 0.11467 0.05198 0.20774 0.29525 0.24831 0.15352 4.35322 0.28936 0.12166 0.05991 0.21386 0.30080 0.25222 0.15529 4.40968 0.29545 0.12988 0.06924 0.22104 0.30730 0.25563 0.15682 4.45410 0.30072 0.13711 0.07757 0.22728 0.31292 0.25866 0.15816 4.48556 0.30530 0.14333 0.08457 0.23271 0.31778 0.26244 0.15980 4.51953 0.31092 0.15111 0.09346 0.23942 0.32378 0.26592 0.16129 4.54504 0.31600 0.15824 0.10166 0.24551 0.32922 0.26906 0.16260 4.55934 0.32042 0.16445 0.10870 0.25086 0.33394 0.27216 0.16389 4.57070 0.32474 0.17063 0.11582 0.25609 0.33856 0.27509 0.16508 4.57472 0.32867 0.17630 0.12231 0.26091 0.34277 0.27781 0.16617 4.57511 0.33223 0.18153 0.12835 0.26531 0.34660 0.28031 0.16715 4.57120 0.33539 0.18623 0.13377 0.26925 0.35000 0.28277 0.16810 4.56436 0.33842 0.19081 0.13908 0.27305 0.35327 0.28512 0.16900 4.55389 0.34121 0.19508 0.14404 0.27659 0.35628 0.28732 0.16982 4.54214 0.34375 0.19905 0.14868 0.27985 0.35903 0.28933 0.17056 4.52735 0.34595 0.20256 0.15278 0.28271 0.36142 0.29136 0.17130 4.51259 0.34817 0.20614 0.15699 0.28560 0.36383 0.29325 0.17197 4.49312 0.35007 0.20931 0.16070 0.28814 0.36590 0.29505 0.17260 4.47470 0.35187 0.21235 0.16430 0.29056 0.36787 0.29672 0.17318 4.45540 0.35346 0.21509 0.16756 0.29271 0.36960 0.29836 0.17373 4.43398 0.35492 0.21770 0.17068 0.29476 0.37122 0.22542 0.14955 1.78178 0.17401 0.00000 0.00000 0.09208 0.18303 0.22968 0.15163 1.91859 0.17683 0.00001 0.00000 0.09591 0.18634 0.23598 0.15465 2.11023 0.18131 0.00477 0.00000 0.10188 0.19154 0.24052 0.15680 2.23890 0.18474 0.01129 0.00000 0.10640 0.19549 0.24521 0.15897 2.36367 0.18851 0.01729 0.00000 0.11130 0.19979 0.24924 0.16082 2.46867 0.19183 0.02274 0.00000 0.11560 0.20357 0.25304 0.16253 2.56125 0.19505 0.02767 0.00000 0.11976 0.20722 0.25702 0.16429 2.65414 0.19851 0.03309 0.00000 0.12420 0.21111 0.26045 0.16579 2.73081 0.20153 0.03783 0.00000 0.12809 0.21452 0.26368 0.16719 2.79853 0.20444 0.04228 0.00000 0.13181 0.21778 0.26622 0.16827 2.84983 0.20674 0.04583 0.00000 0.13477 0.22036 0.27152 0.17050 2.94559 0.21162 0.05333 0.00006 0.14100 0.22580 0.27599 0.17234 3.01472 0.21574 0.05977 0.00579 0.14629 0.23041 0.28086 0.17430 3.07569 0.22023 0.06683 0.01589 0.15206 0.23541 0.28574 0.17622 3.12707 0.22467 0.07376 0.02347 0.15783 0.24036 0.29002 0.17786 3.16533 0.22852 0.07987 0.03057 0.16285 0.24465 0.29423 0.17943 3.19720 0.23224 0.08591 0.03776 0.16775 0.24881 0.29761 0.18066 3.21721 0.23517 0.09071 0.04333 0.17164 0.25209 0.30155 0.18206 3.23437 0.23852 0.09628 0.04982 0.17612 0.25582 0.30495 0.18325 3.24560 0.24136 0.10112 0.05556 0.17996 0.25900 0.30794 0.18425 3.24949 0.24373 0.10523 0.06032 0.18324 0.26166 0.31163 0.18547 3.25037 0.24658 0.11032 0.06632 0.18722 0.26487 0.31498 0.18654 3.24687 0.24910 0.11492 0.07179 0.19078 0.26771 0.31795 0.18745 3.23736 0.25117 0.11886 0.07643 0.19381 0.27005 0.32085 0.18832 3.22605 0.25316 0.12274 0.08108 0.19674 0.27230 0.32355 0.18909 3.21035 0.25488 0.12625 0.08527 0.19936 0.27426 0.32602 0.18977 3.19349 0.25638 0.12945 0.08912 0.20171 0.27598 0.32827 0.19037 3.17506 0.25764 0.13228 0.09255 0.20376 0.27744 0.33045 0.19092 3.15482 0.25880 0.13501 0.09587 0.20570 0.27879 0.33251 0.19141 3.13269 0.25979 0.13752 0.09894 0.20745 0.27996 0.33440 0.19186 3.11075 0.26065 0.13983 0.10179 0.20903 0.28099 0.33609 0.19223 3.08788 0.26134 0.14182 0.10427 0.21036 0.28180 0.33779 0.19261 3.06514 0.26202 0.14386 0.10682 0.21171 0.28262 0.33935 0.19290 3.03982 0.26248 0.14560 0.10902 0.21281 0.28320 0.34083 0.19318 3.01600 0.26291 0.14727 0.11114 0.21385 0.28375 0.34217 0.19341 2.99242 0.26323 0.14875 0.11304 0.21474 0.28418 0.34345 0.19361 2.96756 0.26347 0.15013 0.11483 0.21554 0.28450 0.26441 0.17387 1.57726 0.15872 0.00000 0.00000 0.08532 0.17273 0.26907 0.17583 1.68481 0.16077 0.00001 0.00000 0.08845 0.17532 0.27589 0.17864 1.83283 0.16398 0.00405 0.00000 0.09328 0.17933 0.28078 0.18061 1.93011 0.16642 0.00957 0.00000 0.09689 0.18234 0.28578 0.18257 2.02276 0.16906 0.01459 0.00000 0.10077 0.18555 0.29005 0.18422 2.09967 0.17138 0.01911 0.00000 0.10414 0.18835 0.29403 0.18572 2.16614 0.17361 0.02316 0.00000 0.10736 0.19102 0.29817 0.18726 2.23167 0.17597 0.02757 0.00000 0.11077 0.19383 0.30172 0.18855 2.28485 0.17803 0.03141 0.00000 0.11373 0.19627 0.30503 0.18973 2.33075 0.17998 0.03498 0.00000 0.11654 0.19857 0.30762 0.19064 2.36499 0.18151 0.03782 0.00000 0.11875 0.20038 0.31299 0.19247 2.42633 0.18471 0.04376 0.00005 0.12337 0.20412 0.31747 0.19395 2.46779 0.18736 0.04882 0.00460 0.12724 0.20724 0.32228 0.19551 2.50055 0.19019 0.05430 0.01258 0.13140 0.21054 0.32703 0.19694 2.52493 0.19292 0.05961 0.01849 0.13549 0.21374 0.33115 0.19815 2.54035 0.19522 0.06425 0.02399 0.13900 0.21643 0.33515 0.19928 2.55058 0.19739 0.06880 0.02950 0.14236 0.21897 0.33832 0.20012 2.55406 0.19905 0.07236 0.03374 0.14499 0.22090 0.34198 0.20106 2.55292 0.20087 0.07646 0.03863 0.14797 0.22304 0.34510 0.20182 2.54901 0.20237 0.07999 0.04293 0.15048 0.22482 0.34779 0.20243 2.54059 0.20356 0.08295 0.04645 0.15257 0.22622 0.35107 0.20313 2.52703 0.20493 0.08657 0.05087 0.15507 0.22786 0.35400 0.20370 2.51128 0.20608 0.08982 0.05486 0.15726 0.22925 0.35654 0.20414 2.49207 0.20694 0.09256 0.05820 0.15905 0.23029 0.35900 0.20454 2.47181 0.20772 0.09523 0.06153 0.16076 0.23124 0.36123 0.20485 2.44880 0.20830 0.09761 0.06448 0.16223 0.23197 0.36325 0.20509 2.42581 0.20876 0.09975 0.06719 0.16351 0.23256 0.36504 0.20527 2.40249 0.20907 0.10162 0.06957 0.16459 0.23299 0.36674 0.20540 2.37807 0.20930 0.10341 0.07187 0.16558 0.23332 0.36831 0.20548 2.35270 0.20942 0.10502 0.07396 0.16642 0.23352 0.36974 0.20553 2.32815 0.20947 0.10648 0.07589 0.16716 0.23364 0.37098 0.20552 2.30359 0.20941 0.10773 0.07755 0.16773 0.23363 0.37222 0.20552 2.27926 0.20935 0.10899 0.07925 0.16831 0.23362 0.37330 0.20543 2.25340 0.20913 0.11004 0.08069 0.16870 0.23345 0.37432 0.20535 2.22915 0.20892 0.11103 0.08207 0.16907 0.23328 0.37521 0.20524 2.20560 0.20867 0.11190 0.08330 0.16935 0.23305 0.37604 0.20510 2.18122 0.20834 0.11269 0.08444 0.16955 0.23274 0.33553 0.21184 1.30519 0.13363 0.00000 0.00000 0.07497 0.15826 0.34038 0.21329 1.37946 0.13467 0.00001 0.00000 0.07719 0.15979 0.34735 0.21528 1.47833 0.13630 0.00317 0.00000 0.08055 0.16210 0.35225 0.21663 1.54059 0.13752 0.00745 0.00000 0.08300 0.16379 0.35715 0.21790 1.59751 0.13883 0.01127 0.00000 0.08558 0.16552 0.36128 0.21894 1.64344 0.13995 0.01466 0.00000 0.08779 0.16700 0.36506 0.21983 1.68135 0.14101 0.01766 0.00000 0.08987 0.16837 0.36893 0.22070 1.71719 0.14210 0.02089 0.00000 0.09202 0.16977 0.37220 0.22139 1.74506 0.14303 0.02366 0.00000 0.09387 0.17094 0.37520 0.22198 1.76763 0.14388 0.02621 0.00000 0.09559 0.17201 0.37751 0.22242 1.78374 0.14453 0.02821 0.00000 0.09692 0.17283 0.38219 0.22321 1.80899 0.14585 0.03235 0.00005 0.09965 0.17445 0.38599 0.22379 1.82202 0.14688 0.03581 0.00322 0.10187 0.17571 0.38998 0.22431 1.82658 0.14790 0.03950 0.00876 0.10419 0.17694 0.39374 0.22466 1.82437 0.14878 0.04299 0.01279 0.10637 0.17800 0.39689 0.22486 1.81781 0.14943 0.04599 0.01648 0.10817 0.17877 0.39986 0.22497 1.80771 0.14997 0.04888 0.02012 0.10984 0.17941 0.40212 0.22496 1.79608 0.15030 0.05109 0.02288 0.11108 0.17980 0.40461 0.22486 1.77867 0.15057 0.05359 0.02602 0.11241 0.18010 0.40666 0.22471 1.76164 0.15073 0.05571 0.02875 0.11349 0.18028 0.40831 0.22446 1.74309 0.15074 0.05744 0.03094 0.11432 0.18027 0.41025 0.22408 1.71812 0.15066 0.05953 0.03366 0.11526 0.18016 0.41189 0.22365 1.69316 0.15048 0.06136 0.03607 0.11602 0.17994 0.41317 0.22314 1.66734 0.15017 0.06285 0.03805 0.11655 0.17956 0.41434 0.22261 1.64130 0.14981 0.06428 0.03999 0.11701 0.17912 0.41527 0.22201 1.61427 0.14936 0.06550 0.04169 0.11732 0.17855 0.41604 0.22139 1.58834 0.14886 0.06658 0.04322 0.11755 0.17794 0.41665 0.22075 1.56325 0.14833 0.06750 0.04454 0.11767 0.17730 0.41715 0.22008 1.53780 0.14773 0.06835 0.04579 0.11773 0.17659 0.41752 0.21937 1.51231 0.14709 0.06908 0.04691 0.11771 0.17581 0.41780 0.21868 1.48813 0.14644 0.06974 0.04793 0.11764 0.17503 0.41793 0.21797 1.46475 0.14577 0.07026 0.04878 0.11750 0.17423 0.41806 0.21726 1.44171 0.14510 0.07078 0.04965 0.11736 0.17343 0.41800 0.21649 1.41818 0.14434 0.07117 0.05036 0.11711 0.17251 0.41794 0.21576 1.39622 0.14363 0.07154 0.05103 0.11687 0.17165 0.41781 0.21505 1.37532 0.14292 0.07184 0.05162 0.11660 0.17079 0.41760 0.21429 1.35409 0.14216 0.07209 0.05214 0.11628 0.16989 0.39881 0.23954 1.14076 0.11222 0.00000 0.00000 0.06641 0.14656 0.40321 0.24028 1.19535 0.11273 0.00001 0.00000 0.06805 0.14730 0.40941 0.24119 1.26530 0.11352 0.00263 0.00000 0.07049 0.14837 0.41367 0.24172 1.30714 0.11409 0.00615 0.00000 0.07224 0.14912 0.41781 0.24212 1.34336 0.11469 0.00925 0.00000 0.07403 0.14984 0.42124 0.24239 1.37152 0.11519 0.01197 0.00000 0.07555 0.15043 0.42430 0.24255 1.39321 0.11563 0.01434 0.00000 0.07693 0.15091 0.42735 0.24263 1.41235 0.11607 0.01686 0.00000 0.07835 0.15136 0.42986 0.24264 1.42613 0.11643 0.01900 0.00000 0.07954 0.15171 0.43209 0.24256 1.43584 0.11673 0.02095 0.00000 0.08062 0.15198 0.43378 0.24246 1.44206 0.11694 0.02247 0.00000 0.08144 0.15216 0.43708 0.24211 1.44797 0.11732 0.02557 0.00004 0.08309 0.15244 0.43964 0.24170 1.44614 0.11755 0.02811 0.00243 0.08438 0.15255 0.44216 0.24113 1.43637 0.11770 0.03078 0.00658 0.08567 0.15252 0.44435 0.24034 1.42118 0.11770 0.03326 0.00955 0.08680 0.15230 0.44603 0.23952 1.40424 0.11759 0.03535 0.01223 0.08767 0.15196 0.44747 0.23860 1.38488 0.11738 0.03733 0.01485 0.08843 0.15149 0.44845 0.23774 1.36671 0.11713 0.03882 0.01680 0.08895 0.15100 0.44935 0.23661 1.34261 0.11671 0.04046 0.01899 0.08943 0.15028 0.44998 0.23557 1.32048 0.11629 0.04184 0.02087 0.08979 0.14958 0.45032 0.23452 1.29840 0.11580 0.04293 0.02236 0.08998 0.14882 0.45056 0.23313 1.26985 0.11512 0.04421 0.02418 0.09014 0.14778 0.45060 0.23178 1.24243 0.11442 0.04532 0.02577 0.09021 0.14672 0.45035 0.23041 1.21544 0.11367 0.04618 0.02705 0.09013 0.14561 0.45001 0.22902 1.18872 0.11289 0.04699 0.02830 0.09001 0.14448 0.44945 0.22760 1.16192 0.11205 0.04766 0.02937 0.08979 0.14327 0.44883 0.22623 1.13668 0.11122 0.04823 0.03031 0.08953 0.14210 0.44811 0.22489 1.11278 0.11039 0.04868 0.03111 0.08923 0.14094 0.44728 0.22352 1.08891 0.10953 0.04909 0.03185 0.08889 0.13975 0.44634 0.22213 1.06542 0.10866 0.04942 0.03251 0.08850 0.13853 0.44538 0.22081 1.04340 0.10781 0.04970 0.03309 0.08810 0.13736 0.44434 0.21951 1.02248 0.10696 0.04989 0.03356 0.08767 0.13620 0.44331 0.21822 1.00196 0.10612 0.05009 0.03404 0.08724 0.13505 0.44209 0.21688 0.98144 0.10523 0.05019 0.03441 0.08674 0.13385 0.44094 0.21562 0.96237 0.10440 0.05029 0.03476 0.08628 0.13272 0.43978 0.21440 0.94442 0.10358 0.05035 0.03506 0.08580 0.13162 0.43853 0.21315 0.92638 0.10274 0.05037 0.03531 0.08530 0.13050 0.45451 0.25956 1.03654 0.09356 0.00000 0.00000 0.05872 0.13527 0.45801 0.25950 1.07673 0.09381 0.00001 0.00000 0.05996 0.13538 0.46279 0.25922 1.12571 0.09418 0.00225 0.00000 0.06177 0.13550 0.46596 0.25888 1.15286 0.09444 0.00525 0.00000 0.06305 0.13552 0.46887 0.25836 1.17440 0.09468 0.00785 0.00000 0.06431 0.13548 0.47121 0.25783 1.19009 0.09486 0.01011 0.00000 0.06535 0.13540 0.47319 0.25721 1.20050 0.09500 0.01204 0.00000 0.06629 0.13525 0.47507 0.25647 1.20819 0.09509 0.01408 0.00000 0.06722 0.13503 0.47655 0.25577 1.21246 0.09515 0.01580 0.00000 0.06798 0.13480 0.47774 0.25502 1.21358 0.09517 0.01734 0.00000 0.06865 0.13451 0.47859 0.25439 1.21326 0.09517 0.01853 0.00000 0.06915 0.13426 0.48008 0.25293 1.20662 0.09509 0.02094 0.00003 0.07010 0.13361 0.48105 0.25156 1.19543 0.09493 0.02289 0.00191 0.07080 0.13296 0.48181 0.24990 1.17694 0.09464 0.02489 0.00515 0.07145 0.13212 0.48208 0.24804 1.15415 0.09423 0.02672 0.00743 0.07195 0.13108 0.48202 0.24625 1.13142 0.09376 0.02822 0.00946 0.07227 0.13002 0.48171 0.24438 1.10716 0.09322 0.02963 0.01142 0.07249 0.12887 0.48121 0.24276 1.08575 0.09270 0.03067 0.01286 0.07258 0.12785 0.48033 0.24071 1.05865 0.09200 0.03178 0.01446 0.07259 0.12653 0.47941 0.23887 1.03446 0.09134 0.03270 0.01582 0.07253 0.12531 0.47832 0.23710 1.01128 0.09065 0.03340 0.01688 0.07237 0.12412 0.47676 0.23482 0.98192 0.08974 0.03422 0.01815 0.07211 0.12256 0.47511 0.23266 0.95435 0.08886 0.03489 0.01926 0.07181 0.12105 0.47330 0.23054 0.92800 0.08795 0.03539 0.02012 0.07142 0.11956 0.47142 0.22843 0.90224 0.08703 0.03585 0.02096 0.07101 0.11807 0.46936 0.22631 0.87693 0.08608 0.03620 0.02165 0.07053 0.11656 0.46732 0.22430 0.85340 0.08517 0.03648 0.02226 0.07005 0.11511 0.46527 0.22237 0.83141 0.08428 0.03669 0.02277 0.06955 0.11373 0.46313 0.22043 0.80971 0.08337 0.03686 0.02323 0.06902 0.11233 0.46092 0.21850 0.78862 0.08245 0.03697 0.02363 0.06847 0.11093 0.45878 0.21666 0.76902 0.08158 0.03705 0.02397 0.06793 0.10960 0.45663 0.21489 0.75063 0.08072 0.03708 0.02424 0.06738 0.10832 0.45449 0.21313 0.73265 0.07988 0.03711 0.02451 0.06684 0.10704 0.45219 0.21134 0.71494 0.07901 0.03707 0.02470 0.06626 0.10575 0.45002 0.20966 0.69854 0.07819 0.03704 0.02489 0.06571 0.10453 0.44789 0.20805 0.68324 0.07741 0.03698 0.02503 0.06517 0.10337 0.44568 0.20641 0.66799 0.07660 0.03690 0.02515 0.06461 0.10219 0.51363 0.27606 0.95264 0.07392 0.00000 0.00000 0.04993 0.12062 0.51556 0.27498 0.97819 0.07406 0.00001 0.00000 0.05084 0.12014 0.51792 0.27320 1.00618 0.07425 0.00190 0.00000 0.05212 0.11937 0.51926 0.27177 1.01886 0.07437 0.00441 0.00000 0.05299 0.11873 0.52022 0.27010 1.02619 0.07442 0.00655 0.00000 0.05381 0.11801 0.52086 0.26859 1.03003 0.07444 0.00838 0.00000 0.05447 0.11734 0.52118 0.26706 1.02990 0.07441 0.00992 0.00000 0.05503 0.11665 0.52128 0.26535 1.02708 0.07433 0.01153 0.00000 0.05555 0.11586 0.52120 0.26380 1.02274 0.07423 0.01287 0.00000 0.05596 0.11515 0.52089 0.26225 1.01625 0.07410 0.01405 0.00000 0.05629 0.11441 0.52054 0.26100 1.01023 0.07398 0.01496 0.00000 0.05653 0.11380 0.51946 0.25822 0.99291 0.07364 0.01675 0.00003 0.05694 0.11242 0.51822 0.25575 0.97402 0.07328 0.01818 0.00146 0.05719 0.11116 0.51649 0.25292 0.94870 0.07279 0.01962 0.00391 0.05736 0.10968 0.51422 0.24983 0.92032 0.07216 0.02089 0.00560 0.05738 0.10804 0.51185 0.24698 0.89365 0.07153 0.02192 0.00708 0.05729 0.10649 0.50924 0.24406 0.86634 0.07083 0.02285 0.00850 0.05712 0.10488 0.50687 0.24159 0.84319 0.07021 0.02352 0.00952 0.05692 0.10349 0.50374 0.23855 0.81484 0.06939 0.02422 0.01064 0.05659 0.10177 0.50085 0.23587 0.79010 0.06865 0.02477 0.01157 0.05626 0.10024 0.49795 0.23336 0.76711 0.06792 0.02518 0.01228 0.05588 0.09878 0.49416 0.23017 0.73853 0.06696 0.02563 0.01313 0.05536 0.09693 0.49045 0.22717 0.71223 0.06603 0.02598 0.01386 0.05483 0.09521 0.48677 0.22429 0.68769 0.06511 0.02621 0.01441 0.05426 0.09355 0.48304 0.22145 0.66398 0.06420 0.02642 0.01493 0.05368 0.09190 0.47919 0.21867 0.64114 0.06328 0.02654 0.01535 0.05307 0.09025 0.47551 0.21604 0.62017 0.06240 0.02662 0.01571 0.05247 0.08871 0.47196 0.21353 0.60084 0.06155 0.02666 0.01600 0.05189 0.08726 0.46834 0.21103 0.58195 0.06069 0.02667 0.01626 0.05129 0.08581 0.46470 0.20855 0.56381 0.05983 0.02664 0.01647 0.05068 0.08439 0.46121 0.20623 0.54710 0.05902 0.02660 0.01665 0.05010 0.08305 0.45780 0.20403 0.53161 0.05825 0.02652 0.01677 0.04952 0.08177 0.45441 0.20185 0.51654 0.05749 0.02645 0.01690 0.04896 0.08050 0.45092 0.19965 0.50189 0.05671 0.02633 0.01698 0.04836 0.07924 0.44763 0.19759 0.48839 0.05599 0.02622 0.01705 0.04780 0.07807 0.44447 0.19563 0.47589 0.05529 0.02610 0.01710 0.04726 0.07695 0.44123 0.19365 0.46354 0.05459 0.02596 0.01713 0.04672 0.07583 0.56120 0.28502 0.89447 0.05824 0.00000 0.00000 0.04200 0.10522 0.56122 0.28295 0.90750 0.05839 0.00001 0.00000 0.04269 0.10435 0.56073 0.27971 0.91793 0.05857 0.00163 0.00000 0.04362 0.10300 0.56000 0.27723 0.91881 0.05864 0.00375 0.00000 0.04421 0.10198 0.55877 0.27446 0.91484 0.05863 0.00553 0.00000 0.04474 0.10084 0.55750 0.27204 0.90944 0.05860 0.00703 0.00000 0.04515 0.09983 0.55597 0.26966 0.90129 0.05852 0.00828 0.00000 0.04547 0.09880 0.55411 0.26707 0.89064 0.05839 0.00956 0.00000 0.04575 0.09768 0.55234 0.26479 0.88003 0.05825 0.01061 0.00000 0.04595 0.09667 0.55041 0.26252 0.86814 0.05807 0.01153 0.00000 0.04608 0.09567 0.54880 0.26071 0.85815 0.05791 0.01223 0.00000 0.04615 0.09487 0.54505 0.25677 0.83369 0.05748 0.01359 0.00003 0.04624 0.09312 0.54152 0.25334 0.80992 0.05705 0.01465 0.00114 0.04622 0.09157 0.53727 0.24948 0.78062 0.05650 0.01569 0.00303 0.04609 0.08980 0.53243 0.24536 0.74934 0.05583 0.01659 0.00430 0.04585 0.08789 0.52778 0.24163 0.72095 0.05518 0.01729 0.00541 0.04554 0.08613 0.52291 0.23786 0.69264 0.05448 0.01791 0.00645 0.04518 0.08433 0.51871 0.23471 0.66925 0.05385 0.01834 0.00719 0.04483 0.08283 0.51343 0.23089 0.64125 0.05304 0.01877 0.00798 0.04434 0.08099 0.50868 0.22753 0.61721 0.05232 0.01909 0.00864 0.04389 0.07938 0.50413 0.22443 0.59538 0.05161 0.01931 0.00913 0.04342 0.07788 0.49829 0.22053 0.56860 0.05069 0.01955 0.00971 0.04279 0.07601 0.49274 0.21689 0.54431 0.04982 0.01971 0.01019 0.04218 0.07427 0.48734 0.21345 0.52210 0.04897 0.01979 0.01054 0.04157 0.07262 0.48197 0.21007 0.50084 0.04813 0.01984 0.01087 0.04095 0.07100 0.47657 0.20676 0.48063 0.04729 0.01984 0.01113 0.04031 0.06944 0.47145 0.20367 0.46227 0.04650 0.01982 0.01134 0.03970 0.06797 0.46656 0.20079 0.44554 0.04576 0.01976 0.01150 0.03911 0.06658 0.46164 0.19791 0.42935 0.04500 0.01969 0.01165 0.03852 0.06521 0.45678 0.19507 0.41396 0.04425 0.01960 0.01175 0.03793 0.06389 0.45216 0.19242 0.39988 0.04354 0.01950 0.01184 0.03737 0.06264 0.44772 0.18991 0.38695 0.04287 0.01938 0.01189 0.03683 0.06147 0.44330 0.18743 0.37443 0.04221 0.01927 0.01194 0.03630 0.06032 0.43883 0.18497 0.36238 0.04155 0.01912 0.01196 0.03575 0.05918 0.43463 0.18266 0.35132 0.04092 0.01898 0.01198 0.03525 0.05811 0.43062 0.18048 0.34114 0.04033 0.01884 0.01198 0.03476 0.05711 0.42654 0.17829 0.33115 0.03974 0.01869 0.01196 0.03427 0.05612 0.59755 0.28790 0.84663 0.04613 0.00000 0.00000 0.03492 0.08955 0.59551 0.28491 0.84881 0.04632 0.00001 0.00000 0.03544 0.08847 0.59195 0.28035 0.84442 0.04653 0.00139 0.00000 0.03613 0.08681 0.58897 0.27696 0.83562 0.04662 0.00320 0.00000 0.03653 0.08556 0.58539 0.27326 0.82260 0.04662 0.00469 0.00000 0.03686 0.08422 0.58213 0.27005 0.81000 0.04659 0.00592 0.00000 0.03709 0.08303 0.57870 0.26692 0.79577 0.04652 0.00693 0.00000 0.03726 0.08184 0.57487 0.26357 0.77934 0.04638 0.00796 0.00000 0.03737 0.08056 0.57141 0.26063 0.76424 0.04622 0.00880 0.00000 0.03743 0.07946 0.56787 0.25776 0.74860 0.04602 0.00952 0.00000 0.03743 0.07837 0.56500 0.25548 0.73593 0.04585 0.01005 0.00000 0.03741 0.07750 0.55859 0.25059 0.70687 0.04542 0.01109 0.00002 0.03729 0.07561 0.55284 0.24638 0.68027 0.04498 0.01187 0.00089 0.03712 0.07397 0.54619 0.24168 0.64903 0.04444 0.01264 0.00236 0.03684 0.07213 0.53888 0.23677 0.61673 0.04380 0.01327 0.00334 0.03646 0.07017 0.53213 0.23233 0.58811 0.04316 0.01375 0.00417 0.03606 0.06841 0.52522 0.22788 0.56014 0.04248 0.01415 0.00494 0.03560 0.06664 0.51934 0.22421 0.53749 0.04190 0.01442 0.00549 0.03518 0.06518 0.51210 0.21978 0.51082 0.04116 0.01467 0.00606 0.03464 0.06341 0.50571 0.21592 0.48824 0.04048 0.01486 0.00653 0.03414 0.06186 0.49968 0.21239 0.46805 0.03984 0.01496 0.00687 0.03365 0.06045 0.49204 0.20797 0.44359 0.03901 0.01506 0.00726 0.03301 0.05870 0.48487 0.20387 0.42170 0.03823 0.01511 0.00758 0.03240 0.05708 0.47799 0.20006 0.40197 0.03748 0.01510 0.00781 0.03180 0.05557 0.47120 0.19632 0.38326 0.03673 0.01507 0.00803 0.03121 0.05410 0.46453 0.19266 0.36570 0.03598 0.01501 0.00818 0.03061 0.05268 0.45823 0.18926 0.34987 0.03528 0.01493 0.00830 0.03004 0.05137 0.45228 0.18610 0.33559 0.03462 0.01484 0.00839 0.02950 0.05015 0.44631 0.18297 0.32187 0.03397 0.01473 0.00847 0.02896 0.04895 0.44042 0.17994 0.30893 0.03334 0.01461 0.00851 0.02842 0.04778 0.43488 0.17710 0.29718 0.03274 0.01449 0.00855 0.02791 0.04669 0.42965 0.17441 0.28648 0.03215 0.01436 0.00856 0.02743 0.04567 0.42446 0.17175 0.27615 0.03158 0.01422 0.00857 0.02696 0.04468 0.41923 0.16913 0.26631 0.03102 0.01408 0.00856 0.02649 0.04371 0.41432 0.16668 0.25731 0.03050 0.01394 0.00855 0.02604 0.04281 0.40968 0.16438 0.24908 0.03000 0.01380 0.00853 0.02562 0.04196 0.40499 0.16207 0.24105 0.02950 0.01365 0.00850 0.02520 0.04112 0.62324 0.28586 0.80090 0.03700 0.00000 0.00000 0.02867 0.07420 0.61905 0.28206 0.79381 0.03722 0.00001 0.00000 0.02909 0.07306 0.61237 0.27635 0.77712 0.03744 0.00119 0.00000 0.02960 0.07133 0.60716 0.27213 0.76055 0.03752 0.00272 0.00000 0.02989 0.07005 0.60126 0.26762 0.74049 0.03753 0.00396 0.00000 0.03008 0.06865 0.59603 0.26373 0.72245 0.03750 0.00498 0.00000 0.03021 0.06744 0.59079 0.25996 0.70378 0.03740 0.00580 0.00000 0.03027 0.06625 0.58505 0.25596 0.68328 0.03725 0.00662 0.00000 0.03028 0.06499 0.57995 0.25250 0.66513 0.03709 0.00728 0.00000 0.03026 0.06388 0.57486 0.24914 0.64707 0.03690 0.00784 0.00000 0.03019 0.06280 0.57079 0.24648 0.63273 0.03673 0.00826 0.00000 0.03011 0.06195 0.56192 0.24082 0.60112 0.03629 0.00904 0.00002 0.02989 0.06012 0.55412 0.23598 0.57325 0.03587 0.00963 0.00070 0.02965 0.05855 0.54525 0.23063 0.54156 0.03534 0.01018 0.00185 0.02930 0.05680 0.53581 0.22506 0.50955 0.03471 0.01061 0.00260 0.02886 0.05499 0.52713 0.22009 0.48181 0.03411 0.01093 0.00323 0.02842 0.05335 0.51836 0.21517 0.45511 0.03349 0.01119 0.00381 0.02794 0.05172 0.51104 0.21113 0.43376 0.03295 0.01135 0.00420 0.02753 0.05037 0.50212 0.20626 0.40904 0.03225 0.01149 0.00462 0.02699 0.04879 0.49430 0.20204 0.38835 0.03163 0.01158 0.00495 0.02651 0.04742 0.48705 0.19820 0.37012 0.03104 0.01161 0.00519 0.02604 0.04618 0.47792 0.19344 0.34825 0.03030 0.01163 0.00546 0.02543 0.04463 0.46938 0.18906 0.32889 0.02961 0.01161 0.00568 0.02486 0.04320 0.46135 0.18498 0.31164 0.02894 0.01155 0.00582 0.02431 0.04190 0.45346 0.18101 0.29541 0.02828 0.01148 0.00595 0.02377 0.04063 0.44572 0.17717 0.28035 0.02762 0.01139 0.00604 0.02325 0.03941 0.43846 0.17361 0.26689 0.02702 0.01129 0.00611 0.02275 0.03829 0.43165 0.17031 0.25483 0.02647 0.01118 0.00616 0.02227 0.03725 0.42488 0.16705 0.24333 0.02591 0.01106 0.00619 0.02179 0.03623 0.41827 0.16388 0.23257 0.02536 0.01093 0.00621 0.02132 0.03525 0.41206 0.16093 0.22284 0.02484 0.01081 0.00621 0.02089 0.03435 0.40618 0.15817 0.21405 0.02436 0.01068 0.00621 0.02048 0.03352 0.40038 0.15545 0.20559 0.02388 0.01055 0.00620 0.02007 0.03270 0.39461 0.15278 0.19763 0.02340 0.01041 0.00617 0.01967 0.03189 0.38921 0.15028 0.19037 0.02296 0.01028 0.00615 0.01929 0.03114 0.38412 0.14795 0.18375 0.02255 0.01016 0.00612 0.01894 0.03045 0.37899 0.14561 0.17731 0.02213 0.01003 0.00608 0.01858 0.02978 0.63889 0.27985 0.75325 0.03017 0.00000 0.00000 0.02327 0.05981 0.63261 0.27535 0.73852 0.03037 0.00001 0.00000 0.02361 0.05873 0.62289 0.26864 0.71204 0.03056 0.00101 0.00000 0.02400 0.05711 0.61554 0.26373 0.68952 0.03063 0.00230 0.00000 0.02420 0.05591 0.60744 0.25853 0.66431 0.03061 0.00333 0.00000 0.02432 0.05459 0.60035 0.25409 0.64242 0.03056 0.00416 0.00000 0.02439 0.05346 0.59337 0.24983 0.62075 0.03045 0.00482 0.00000 0.02439 0.05236 0.58586 0.24532 0.59764 0.03028 0.00548 0.00000 0.02434 0.05119 0.57927 0.24142 0.57765 0.03010 0.00600 0.00000 0.02427 0.05018 0.57280 0.23766 0.55827 0.02989 0.00644 0.00000 0.02416 0.04920 0.56765 0.23472 0.54312 0.02971 0.00676 0.00000 0.02406 0.04843 0.55654 0.22847 0.51056 0.02928 0.00734 0.00002 0.02378 0.04679 0.54689 0.22317 0.48262 0.02887 0.00777 0.00055 0.02350 0.04538 0.53606 0.21737 0.45166 0.02838 0.00817 0.00144 0.02313 0.04381 0.52470 0.21136 0.42103 0.02777 0.00847 0.00202 0.02269 0.04222 0.51440 0.20603 0.39483 0.02721 0.00867 0.00250 0.02227 0.04078 0.50409 0.20077 0.36997 0.02663 0.00883 0.00293 0.02182 0.03936 0.49556 0.19645 0.35041 0.02612 0.00892 0.00322 0.02142 0.03822 0.48526 0.19133 0.32798 0.02548 0.00898 0.00352 0.02092 0.03686 0.47628 0.18691 0.30938 0.02492 0.00901 0.00376 0.02047 0.03568 0.46802 0.18290 0.29319 0.02440 0.00900 0.00392 0.02004 0.03463 0.45768 0.17794 0.27396 0.02374 0.00897 0.00411 0.01950 0.03333 0.44808 0.17340 0.25710 0.02314 0.00892 0.00425 0.01900 0.03213 0.43917 0.16918 0.24228 0.02253 0.00884 0.00434 0.01852 0.03105 0.43043 0.16509 0.22842 0.02194 0.00875 0.00442 0.01805 0.03001 0.42188 0.16120 0.21566 0.02140 0.00864 0.00447 0.01759 0.02899 0.41392 0.15759 0.20435 0.02089 0.00853 0.00451 0.01715 0.02806 0.40650 0.15425 0.19432 0.02040 0.00842 0.00453 0.01675 0.02723 0.39917 0.15095 0.18479 0.01991 0.00831 0.00454 0.01634 0.02642 0.39206 0.14775 0.17592 0.01943 0.00819 0.00454 0.01595 0.02563 0.38539 0.14478 0.16794 0.01899 0.00807 0.00453 0.01558 0.02491 0.37910 0.14202 0.16077 0.01857 0.00795 0.00451 0.01524 0.02425 0.37291 0.13931 0.15389 0.01816 0.00784 0.00449 0.01490 0.02360 0.36679 0.13665 0.14748 0.01777 0.00771 0.00446 0.01456 0.02297 0.36108 0.13418 0.14164 0.01740 0.00760 0.00444 0.01425 0.02238 0.35571 0.13186 0.13636 0.01705 0.00749 0.00440 0.01396 0.02184 0.35034 0.12954 0.13125 0.01670 0.00738 0.00437 0.01367 0.02129 0.64529 0.27060 0.70217 0.02498 0.00000 0.00000 0.01867 0.04692 0.63699 0.26555 0.68149 0.02516 0.00001 0.00000 0.01895 0.04595 0.62439 0.25807 0.64770 0.02532 0.00085 0.00000 0.01926 0.04449 0.61505 0.25262 0.62095 0.02535 0.00193 0.00000 0.01939 0.04344 0.60489 0.24692 0.59227 0.02531 0.00278 0.00000 0.01945 0.04229 0.59612 0.24206 0.56795 0.02523 0.00346 0.00000 0.01946 0.04131 0.58760 0.23740 0.54457 0.02509 0.00399 0.00000 0.01942 0.04036 0.57850 0.23250 0.52014 0.02490 0.00451 0.00000 0.01934 0.03935 0.57058 0.22830 0.49935 0.02471 0.00491 0.00000 0.01926 0.03847 0.56285 0.22428 0.47958 0.02450 0.00525 0.00000 0.01913 0.03762 0.55675 0.22112 0.46430 0.02433 0.00549 0.00000 0.01902 0.03696 0.54370 0.21448 0.43209 0.02389 0.00594 0.00002 0.01873 0.03556 0.53251 0.20887 0.40504 0.02347 0.00625 0.00043 0.01845 0.03436 0.52007 0.20273 0.37564 0.02299 0.00653 0.00112 0.01809 0.03304 0.50714 0.19645 0.34703 0.02242 0.00673 0.00157 0.01768 0.03170 0.49550 0.19091 0.32289 0.02189 0.00685 0.00193 0.01728 0.03051 0.48395 0.18546 0.30026 0.02135 0.00694 0.00225 0.01686 0.02933 0.47446 0.18102 0.28267 0.02087 0.00699 0.00246 0.01651 0.02839 0.46307 0.17575 0.26269 0.02030 0.00700 0.00268 0.01606 0.02728 0.45320 0.17123 0.24629 0.01980 0.00699 0.00285 0.01566 0.02633 0.44417 0.16716 0.23219 0.01932 0.00696 0.00296 0.01529 0.02546 0.43295 0.16215 0.21556 0.01874 0.00690 0.00309 0.01483 0.02440 0.42260 0.15758 0.20110 0.01820 0.00683 0.00318 0.01440 0.02345 0.41301 0.15336 0.18850 0.01769 0.00675 0.00324 0.01399 0.02258 0.40367 0.14928 0.17680 0.01719 0.00665 0.00329 0.01359 0.02174 0.39463 0.14536 0.16615 0.01669 0.00655 0.00331 0.01321 0.02094 0.38625 0.14176 0.15674 0.01623 0.00645 0.00333 0.01284 0.02022 0.37846 0.13844 0.14844 0.01582 0.00635 0.00333 0.01249 0.01957 0.37077 0.13519 0.14060 0.01541 0.00624 0.00333 0.01216 0.01893 0.36329 0.13208 0.13335 0.01501 0.00613 0.00332 0.01184 0.01832 0.35634 0.12919 0.12688 0.01463 0.00603 0.00330 0.01154 0.01775 0.34986 0.12646 0.12112 0.01428 0.00592 0.00328 0.01125 0.01724 0.34349 0.12379 0.11561 0.01393 0.00582 0.00326 0.01098 0.01675 0.33718 0.12121 0.11046 0.01360 0.00572 0.00323 0.01071 0.01625 0.33130 0.11882 0.10579 0.01329 0.00562 0.00321 0.01046 0.01579 0.32579 0.11657 0.10159 0.01300 0.00553 0.00318 0.01022 0.01537 0.32029 0.11434 0.09756 0.01272 0.00543 0.00315 0.00999 0.01496 0.64295 0.25918 0.64784 0.02125 0.00000 0.00000 0.01463 0.03554 0.63286 0.25365 0.62276 0.02135 0.00001 0.00000 0.01488 0.03477 0.61773 0.24551 0.58389 0.02139 0.00072 0.00000 0.01513 0.03362 0.60661 0.23966 0.55452 0.02135 0.00161 0.00000 0.01523 0.03278 0.59469 0.23356 0.52387 0.02124 0.00231 0.00000 0.01528 0.03183 0.58445 0.22838 0.49835 0.02111 0.00286 0.00000 0.01528 0.03103 0.57458 0.22344 0.47435 0.02093 0.00328 0.00000 0.01523 0.03026 0.56412 0.21829 0.44964 0.02071 0.00369 0.00000 0.01514 0.02943 0.55506 0.21390 0.42889 0.02052 0.00401 0.00000 0.01505 0.02871 0.54631 0.20968 0.40941 0.02029 0.00426 0.00000 0.01493 0.02802 0.53942 0.20638 0.39449 0.02010 0.00445 0.00000 0.01482 0.02748 0.52483 0.19945 0.36357 0.01964 0.00477 0.00001 0.01456 0.02636 0.51240 0.19364 0.33808 0.01921 0.00500 0.00034 0.01430 0.02540 0.49864 0.18735 0.31084 0.01873 0.00519 0.00088 0.01398 0.02434 0.48444 0.18096 0.28471 0.01821 0.00532 0.00121 0.01360 0.02325 0.47182 0.17529 0.26295 0.01771 0.00540 0.00149 0.01326 0.02230 0.45934 0.16976 0.24276 0.01720 0.00544 0.00172 0.01291 0.02138 0.44911 0.16532 0.22722 0.01677 0.00545 0.00188 0.01260 0.02063 0.43693 0.16006 0.20975 0.01627 0.00543 0.00204 0.01221 0.01973 0.42642 0.15556 0.19551 0.01582 0.00541 0.00216 0.01187 0.01896 0.41690 0.15148 0.18337 0.01538 0.00536 0.00223 0.01156 0.01831 0.40511 0.14650 0.16918 0.01485 0.00529 0.00232 0.01117 0.01750 0.39428 0.14198 0.15697 0.01437 0.00522 0.00238 0.01081 0.01676 0.38430 0.13783 0.14640 0.01392 0.00513 0.00241 0.01048 0.01609 0.37460 0.13382 0.13666 0.01349 0.00505 0.00244 0.01015 0.01545 0.36526 0.12999 0.12784 0.01307 0.00495 0.00245 0.00982 0.01485 0.35664 0.12648 0.12011 0.01267 0.00486 0.00245 0.00953 0.01430 0.34867 0.12326 0.11333 0.01230 0.00477 0.00245 0.00926 0.01380 0.34082 0.12011 0.10697 0.01194 0.00467 0.00244 0.00899 0.01332 0.33323 0.11709 0.10111 0.01160 0.00458 0.00243 0.00872 0.01286 0.32619 0.11430 0.09590 0.01128 0.00449 0.00241 0.00848 0.01244 0.31963 0.11170 0.09128 0.01098 0.00440 0.00239 0.00826 0.01204 0.31319 0.10917 0.08687 0.01069 0.00432 0.00237 0.00805 0.01165 0.30687 0.10669 0.08279 0.01042 0.00423 0.00234 0.00784 0.01129 0.30099 0.10439 0.07911 0.01017 0.00415 0.00232 0.00764 0.01096 0.29550 0.10226 0.07580 0.00993 0.00407 0.00229 0.00745 0.01065 0.29001 0.10013 0.07262 0.00970 0.00399 0.00226 0.00727 0.01035 0.63335 0.24535 0.59048 0.01786 0.00000 0.00000 0.01149 0.02630 0.62162 0.23952 0.56254 0.01792 0.00001 0.00000 0.01169 0.02571 0.60419 0.23101 0.52071 0.01791 0.00059 0.00000 0.01189 0.02480 0.59150 0.22489 0.49011 0.01783 0.00132 0.00000 0.01197 0.02413 0.57807 0.21851 0.45886 0.01767 0.00189 0.00000 0.01199 0.02342 0.56659 0.21313 0.43318 0.01751 0.00233 0.00000 0.01197 0.02280 0.55556 0.20806 0.40939 0.01733 0.00266 0.00000 0.01190 0.02219 0.54397 0.20276 0.38523 0.01710 0.00298 0.00000 0.01181 0.02154 0.53402 0.19824 0.36519 0.01688 0.00322 0.00000 0.01172 0.02099 0.52442 0.19393 0.34660 0.01665 0.00342 0.00000 0.01161 0.02045 0.51689 0.19059 0.33248 0.01646 0.00355 0.00000 0.01152 0.02002 0.50100 0.18361 0.30359 0.01603 0.00379 0.00001 0.01128 0.01913 0.48756 0.17776 0.28014 0.01564 0.00395 0.00026 0.01104 0.01839 0.47286 0.17142 0.25547 0.01518 0.00408 0.00067 0.01074 0.01758 0.45778 0.16500 0.23205 0.01468 0.00416 0.00093 0.01043 0.01673 0.44444 0.15938 0.21278 0.01421 0.00420 0.00113 0.01012 0.01601 0.43132 0.15392 0.19507 0.01373 0.00421 0.00131 0.00980 0.01531 0.42066 0.14952 0.18154 0.01334 0.00421 0.00142 0.00954 0.01472 0.40797 0.14433 0.16651 0.01289 0.00418 0.00153 0.00922 0.01404 0.39707 0.13990 0.15438 0.01251 0.00414 0.00162 0.00894 0.01347 0.38723 0.13595 0.14410 0.01214 0.00409 0.00167 0.00869 0.01296 0.37512 0.13110 0.13216 0.01168 0.00403 0.00172 0.00837 0.01234 0.36409 0.12670 0.12195 0.01125 0.00395 0.00176 0.00808 0.01179 0.35392 0.12271 0.11322 0.01087 0.00387 0.00178 0.00780 0.01128 0.34407 0.11886 0.10521 0.01049 0.00380 0.00180 0.00753 0.01080 0.33462 0.11520 0.09801 0.01014 0.00371 0.00180 0.00728 0.01035 0.32595 0.11185 0.09172 0.00980 0.00363 0.00180 0.00704 0.00994 0.31800 0.10877 0.08624 0.00949 0.00355 0.00179 0.00681 0.00957 0.31017 0.10577 0.08112 0.00919 0.00347 0.00178 0.00659 0.00922 0.30260 0.10291 0.07645 0.00891 0.00339 0.00176 0.00639 0.00888 0.29560 0.10026 0.07230 0.00865 0.00332 0.00174 0.00620 0.00857 0.28912 0.09780 0.06863 0.00840 0.00325 0.00173 0.00603 0.00828 0.28277 0.09540 0.06514 0.00816 0.00318 0.00171 0.00586 0.00800 0.27654 0.09308 0.06193 0.00793 0.00311 0.00168 0.00568 0.00773 0.27077 0.09094 0.05904 0.00772 0.00304 0.00166 0.00552 0.00748 0.26538 0.08894 0.05645 0.00753 0.00298 0.00164 0.00538 0.00725 0.26003 0.08696 0.05397 0.00733 0.00291 0.00162 0.00525 0.00703 0.61691 0.23028 0.53173 0.01513 0.00000 0.00000 0.00885 0.01878 0.60381 0.22423 0.50226 0.01513 0.00001 0.00000 0.00902 0.01837 0.58448 0.21544 0.45928 0.01504 0.00048 0.00000 0.00918 0.01774 0.57049 0.20919 0.42861 0.01492 0.00108 0.00000 0.00924 0.01727 0.55581 0.20270 0.39784 0.01472 0.00153 0.00000 0.00925 0.01674 0.54334 0.19724 0.37285 0.01454 0.00188 0.00000 0.00923 0.01628 0.53145 0.19209 0.34999 0.01434 0.00214 0.00000 0.00918 0.01583 0.51898 0.18675 0.32704 0.01411 0.00239 0.00000 0.00909 0.01534 0.50830 0.18222 0.30820 0.01389 0.00257 0.00000 0.00900 0.01493 0.49810 0.17791 0.29089 0.01365 0.00272 0.00000 0.00890 0.01454 0.49012 0.17454 0.27783 0.01346 0.00282 0.00000 0.00881 0.01423 0.47335 0.16759 0.25146 0.01303 0.00299 0.00001 0.00861 0.01356 0.45925 0.16180 0.23033 0.01265 0.00310 0.00020 0.00841 0.01299 0.44390 0.15550 0.20834 0.01221 0.00319 0.00051 0.00816 0.01241 0.42824 0.14922 0.18777 0.01176 0.00323 0.00071 0.00789 0.01178 0.41444 0.14374 0.17100 0.01135 0.00325 0.00086 0.00763 0.01123 0.40095 0.13841 0.15573 0.01094 0.00324 0.00098 0.00737 0.01070 0.39005 0.13412 0.14418 0.01060 0.00322 0.00107 0.00717 0.01026 0.37715 0.12911 0.13145 0.01018 0.00319 0.00115 0.00691 0.00977 0.36611 0.12485 0.12122 0.00983 0.00315 0.00120 0.00668 0.00937 0.35619 0.12104 0.11261 0.00950 0.00310 0.00124 0.00646 0.00899 0.34401 0.11639 0.10269 0.00911 0.00304 0.00128 0.00620 0.00854 0.33294 0.11220 0.09429 0.00875 0.00297 0.00130 0.00597 0.00813 0.32282 0.10840 0.08715 0.00842 0.00290 0.00131 0.00574 0.00777 0.31306 0.10475 0.08063 0.00810 0.00284 0.00131 0.00553 0.00742 0.30373 0.10128 0.07482 0.00780 0.00276 0.00131 0.00532 0.00708 0.29518 0.09812 0.06977 0.00752 0.00270 0.00131 0.00513 0.00679 0.28733 0.09523 0.06537 0.00726 0.00263 0.00130 0.00496 0.00653 0.27964 0.09241 0.06130 0.00702 0.00257 0.00129 0.00479 0.00628 0.27226 0.08973 0.05760 0.00678 0.00250 0.00127 0.00464 0.00603 0.26544 0.08726 0.05433 0.00657 0.00244 0.00126 0.00450 0.00581 0.25913 0.08498 0.05145 0.00638 0.00238 0.00124 0.00436 0.00559 0.25295 0.08276 0.04872 0.00620 0.00233 0.00123 0.00423 0.00538 0.24693 0.08060 0.04622 0.00600 0.00227 0.00121 0.00409 0.00520 0.24136 0.07861 0.04396 0.00583 0.00222 0.00119 0.00397 0.00503 0.23618 0.07676 0.04195 0.00566 0.00217 0.00117 0.00386 0.00488 0.23104 0.07493 0.04005 0.00550 0.00212 0.00115 0.00375 0.00473 0.59464 0.21416 0.47263 0.01268 0.00000 0.00000 0.00675 0.01298 0.58043 0.20802 0.44285 0.01262 0.00001 0.00000 0.00689 0.01273 0.55962 0.19911 0.40030 0.01246 0.00039 0.00000 0.00704 0.01234 0.54465 0.19281 0.37052 0.01232 0.00087 0.00000 0.00709 0.01201 0.52903 0.18633 0.34106 0.01211 0.00123 0.00000 0.00709 0.01163 0.51581 0.18088 0.31739 0.01191 0.00150 0.00000 0.00707 0.01131 0.50329 0.17575 0.29601 0.01170 0.00170 0.00000 0.00701 0.01099 0.49021 0.17045 0.27476 0.01147 0.00189 0.00000 0.00694 0.01065 0.47904 0.16597 0.25746 0.01125 0.00203 0.00000 0.00687 0.01036 0.46842 0.16173 0.24172 0.01102 0.00213 0.00000 0.00677 0.01009 0.46015 0.15845 0.22993 0.01083 0.00221 0.00000 0.00669 0.00988 0.44283 0.15163 0.20630 0.01043 0.00233 0.00001 0.00651 0.00940 0.42833 0.14597 0.18761 0.01010 0.00241 0.00015 0.00634 0.00900 0.41261 0.13986 0.16843 0.00971 0.00246 0.00039 0.00615 0.00857 0.39670 0.13378 0.15064 0.00931 0.00248 0.00053 0.00592 0.00810 0.38277 0.12849 0.13629 0.00894 0.00248 0.00064 0.00571 0.00772 0.36919 0.12338 0.12333 0.00857 0.00247 0.00073 0.00550 0.00735 0.35822 0.11930 0.11359 0.00827 0.00245 0.00079 0.00532 0.00705 0.34533 0.11452 0.10293 0.00793 0.00241 0.00085 0.00511 0.00668 0.33435 0.11047 0.09444 0.00765 0.00237 0.00089 0.00493 0.00636 0.32452 0.10685 0.08738 0.00738 0.00233 0.00091 0.00477 0.00611 0.31250 0.10245 0.07927 0.00704 0.00227 0.00094 0.00456 0.00580 0.30164 0.09851 0.07242 0.00671 0.00222 0.00095 0.00437 0.00551 0.29171 0.09494 0.06666 0.00645 0.00216 0.00095 0.00419 0.00525 0.28215 0.09153 0.06143 0.00620 0.00210 0.00096 0.00402 0.00500 0.27307 0.08831 0.05679 0.00595 0.00204 0.00095 0.00387 0.00476 0.26477 0.08537 0.05278 0.00573 0.00199 0.00095 0.00373 0.00455 0.25718 0.08268 0.04932 0.00551 0.00193 0.00094 0.00359 0.00437 0.24978 0.08008 0.04611 0.00530 0.00188 0.00093 0.00347 0.00420 0.24270 0.07760 0.04319 0.00511 0.00183 0.00091 0.00334 0.00403 0.23618 0.07533 0.04063 0.00493 0.00178 0.00090 0.00323 0.00387 0.23015 0.07322 0.03839 0.00476 0.00174 0.00089 0.00312 0.00373 0.22427 0.07118 0.03627 0.00459 0.00169 0.00088 0.00302 0.00360 0.21853 0.06921 0.03434 0.00446 0.00165 0.00086 0.00292 0.00346 0.21322 0.06739 0.03261 0.00433 0.00161 0.00085 0.00283 0.00334 0.20831 0.06571 0.03106 0.00421 0.00157 0.00083 0.00274 0.00323 0.20345 0.06406 0.02960 0.00408 0.00153 0.00082 0.00266 0.00312 0.56748 0.19735 0.41459 0.01040 0.00000 0.00000 0.00511 0.00870 0.55244 0.19123 0.38548 0.01032 0.00000 0.00000 0.00524 0.00855 0.53052 0.18240 0.34459 0.01016 0.00031 0.00000 0.00535 0.00831 0.51484 0.17616 0.31647 0.01000 0.00069 0.00000 0.00537 0.00813 0.49861 0.16975 0.28898 0.00977 0.00097 0.00000 0.00537 0.00790 0.48493 0.16440 0.26712 0.00957 0.00118 0.00000 0.00536 0.00768 0.47196 0.15940 0.24758 0.00939 0.00133 0.00000 0.00533 0.00745 0.45851 0.15424 0.22832 0.00917 0.00148 0.00000 0.00526 0.00723 0.44709 0.14988 0.21275 0.00895 0.00158 0.00000 0.00519 0.00705 0.43624 0.14575 0.19871 0.00875 0.00166 0.00000 0.00511 0.00685 0.42782 0.14257 0.18826 0.00860 0.00171 0.00000 0.00505 0.00669 0.41025 0.13598 0.16753 0.00824 0.00179 0.00001 0.00490 0.00637 0.39563 0.13054 0.15130 0.00793 0.00185 0.00011 0.00476 0.00610 0.37987 0.12470 0.13481 0.00758 0.00188 0.00029 0.00459 0.00582 0.36400 0.11890 0.11967 0.00721 0.00188 0.00040 0.00441 0.00551 0.35014 0.11388 0.10758 0.00691 0.00188 0.00048 0.00425 0.00522 0.33668 0.10905 0.09676 0.00662 0.00186 0.00054 0.00408 0.00494 0.32587 0.10519 0.08871 0.00637 0.00184 0.00059 0.00393 0.00475 0.31321 0.10069 0.07994 0.00608 0.00180 0.00062 0.00375 0.00449 0.30245 0.09690 0.07299 0.00583 0.00177 0.00065 0.00361 0.00427 0.29287 0.09353 0.06725 0.00561 0.00173 0.00067 0.00348 0.00409 0.28120 0.08944 0.06069 0.00533 0.00168 0.00068 0.00332 0.00388 0.27069 0.08577 0.05518 0.00507 0.00163 0.00069 0.00317 0.00368 0.26113 0.08246 0.05059 0.00484 0.00159 0.00069 0.00304 0.00350 0.25197 0.07931 0.04643 0.00463 0.00154 0.00069 0.00291 0.00332 0.24328 0.07633 0.04277 0.00443 0.00149 0.00068 0.00279 0.00316 0.23536 0.07364 0.03962 0.00425 0.00145 0.00068 0.00268 0.00301 0.22812 0.07119 0.03692 0.00409 0.00141 0.00067 0.00258 0.00288 0.22107 0.06881 0.03442 0.00393 0.00136 0.00066 0.00248 0.00276 0.21435 0.06655 0.03217 0.00378 0.00132 0.00065 0.00238 0.00265 0.20818 0.06447 0.03020 0.00364 0.00129 0.00064 0.00230 0.00255 0.20249 0.06257 0.02847 0.00351 0.00125 0.00063 0.00222 0.00245 0.19695 0.06072 0.02685 0.00338 0.00122 0.00062 0.00214 0.00236 0.19159 0.05894 0.02537 0.00326 0.00118 0.00061 0.00207 0.00227 0.18665 0.05729 0.02405 0.00315 0.00115 0.00060 0.00200 0.00218 0.18206 0.05578 0.02287 0.00306 0.00112 0.00059 0.00194 0.00211 0.17752 0.05429 0.02176 0.00297 0.00109 0.00058 0.00188 0.00203 0.53621 0.18044 0.35887 0.00852 0.00000 0.00000 0.00375 0.00554 0.52060 0.17441 0.33123 0.00842 0.00000 0.00000 0.00385 0.00550 0.49799 0.16578 0.29298 0.00822 0.00025 0.00000 0.00395 0.00539 0.48194 0.15968 0.26702 0.00803 0.00054 0.00000 0.00399 0.00530 0.46535 0.15345 0.24193 0.00782 0.00076 0.00000 0.00398 0.00517 0.45142 0.14826 0.22217 0.00764 0.00092 0.00000 0.00396 0.00506 0.43832 0.14342 0.20467 0.00744 0.00104 0.00000 0.00392 0.00494 0.42474 0.13845 0.18758 0.00724 0.00114 0.00000 0.00387 0.00480 0.41323 0.13426 0.17388 0.00706 0.00122 0.00000 0.00383 0.00466 0.40236 0.13032 0.16160 0.00689 0.00127 0.00000 0.00377 0.00453 0.39393 0.12728 0.15250 0.00675 0.00131 0.00000 0.00371 0.00443 0.37649 0.12100 0.13462 0.00644 0.00137 0.00001 0.00360 0.00422 0.36202 0.11583 0.12077 0.00617 0.00140 0.00009 0.00349 0.00403 0.34645 0.11033 0.10686 0.00587 0.00142 0.00022 0.00334 0.00382 0.33079 0.10488 0.09419 0.00560 0.00142 0.00029 0.00321 0.00361 0.31726 0.10016 0.08415 0.00532 0.00141 0.00035 0.00307 0.00344 0.30419 0.09563 0.07524 0.00504 0.00139 0.00040 0.00294 0.00327 0.29370 0.09201 0.06865 0.00486 0.00137 0.00043 0.00284 0.00313 0.28148 0.08783 0.06153 0.00462 0.00134 0.00046 0.00271 0.00295 0.27113 0.08432 0.05594 0.00441 0.00131 0.00048 0.00261 0.00280 0.26194 0.08121 0.05133 0.00423 0.00128 0.00049 0.00251 0.00268 0.25076 0.07745 0.04611 0.00400 0.00124 0.00049 0.00238 0.00253 0.24070 0.07408 0.04175 0.00380 0.00120 0.00050 0.00227 0.00240 0.23164 0.07106 0.03813 0.00362 0.00116 0.00050 0.00217 0.00227 0.22296 0.06819 0.03487 0.00344 0.00112 0.00050 0.00207 0.00215 0.21472 0.06548 0.03202 0.00330 0.00108 0.00049 0.00197 0.00205 0.20725 0.06303 0.02958 0.00316 0.00105 0.00048 0.00189 0.00196 0.20048 0.06080 0.02748 0.00302 0.00102 0.00048 0.00181 0.00188 0.19390 0.05866 0.02556 0.00290 0.00099 0.00047 0.00174 0.00179 0.18761 0.05664 0.02383 0.00279 0.00095 0.00046 0.00167 0.00171 0.18185 0.05479 0.02232 0.00268 0.00093 0.00046 0.00160 0.00164 0.17658 0.05306 0.02101 0.00258 0.00090 0.00045 0.00155 0.00158 0.17145 0.05139 0.01977 0.00248 0.00087 0.00044 0.00150 0.00153 0.16650 0.04980 0.01865 0.00238 0.00085 0.00043 0.00144 0.00146 0.16193 0.04834 0.01765 0.00229 0.00082 0.00042 0.00139 0.00141 0.15771 0.04700 0.01676 0.00221 0.00080 0.00042 0.00135 0.00135 0.15354 0.04567 0.01592 0.00214 0.00078 0.00041 0.00131 0.00130 0.50180 0.16347 0.30634 0.00674 0.00000 0.00000 0.00275 0.00339 0.48591 0.15763 0.28073 0.00664 0.00000 0.00000 0.00283 0.00340 0.46298 0.14929 0.24576 0.00648 0.00019 0.00000 0.00290 0.00338 0.44680 0.14345 0.22241 0.00631 0.00042 0.00000 0.00293 0.00334 0.43012 0.13751 0.20003 0.00614 0.00059 0.00000 0.00293 0.00326 0.41618 0.13257 0.18254 0.00598 0.00071 0.00000 0.00291 0.00319 0.40316 0.12794 0.16718 0.00582 0.00080 0.00000 0.00287 0.00313 0.38970 0.12321 0.15228 0.00565 0.00087 0.00000 0.00282 0.00305 0.37832 0.11924 0.14043 0.00550 0.00093 0.00000 0.00278 0.00297 0.36762 0.11552 0.12988 0.00534 0.00097 0.00000 0.00274 0.00289 0.35936 0.11265 0.12212 0.00520 0.00099 0.00000 0.00270 0.00283 0.34225 0.10676 0.10696 0.00493 0.00103 0.00001 0.00260 0.00270 0.32809 0.10193 0.09534 0.00472 0.00105 0.00006 0.00251 0.00259 0.31295 0.09680 0.08378 0.00448 0.00106 0.00016 0.00240 0.00247 0.29784 0.09171 0.07336 0.00425 0.00105 0.00021 0.00230 0.00232 0.28479 0.08733 0.06517 0.00403 0.00104 0.00026 0.00219 0.00221 0.27223 0.08314 0.05794 0.00382 0.00102 0.00029 0.00209 0.00210 0.26224 0.07983 0.05262 0.00366 0.00100 0.00031 0.00201 0.00200 0.25058 0.07600 0.04691 0.00346 0.00098 0.00034 0.00191 0.00189 0.24074 0.07279 0.04245 0.00330 0.00095 0.00035 0.00182 0.00180 0.23205 0.06995 0.03881 0.00315 0.00093 0.00036 0.00175 0.00172 0.22150 0.06653 0.03471 0.00297 0.00090 0.00036 0.00166 0.00162 0.21203 0.06350 0.03132 0.00282 0.00087 0.00037 0.00157 0.00152 0.20355 0.06075 0.02850 0.00267 0.00084 0.00037 0.00149 0.00145 0.19546 0.05815 0.02598 0.00252 0.00081 0.00036 0.00142 0.00138 0.18782 0.05572 0.02378 0.00240 0.00078 0.00036 0.00136 0.00131 0.18088 0.05352 0.02190 0.00230 0.00075 0.00036 0.00130 0.00124 0.17458 0.05153 0.02030 0.00221 0.00073 0.00035 0.00125 0.00119 0.16849 0.04961 0.01884 0.00211 0.00070 0.00035 0.00119 0.00113 0.16271 0.04779 0.01753 0.00202 0.00068 0.00034 0.00115 0.00109 0.15743 0.04614 0.01639 0.00194 0.00066 0.00034 0.00110 0.00105 0.15257 0.04463 0.01540 0.00187 0.00064 0.00033 0.00106 0.00099 0.14785 0.04317 0.01446 0.00179 0.00062 0.00032 0.00102 0.00094 0.14332 0.04176 0.01362 0.00173 0.00060 0.00032 0.00098 0.00090 0.13915 0.04048 0.01287 0.00167 0.00058 0.00031 0.00095 0.00087 0.13531 0.03929 0.01221 0.00161 0.00057 0.00031 0.00092 0.00084 0.13153 0.03812 0.01159 0.00155 0.00055 0.00030 0.00088 0.00081 0.46495 0.14671 0.25757 0.00520 0.00000 0.00000 0.00200 0.00198 0.44902 0.14114 0.23437 0.00510 0.00000 0.00000 0.00206 0.00204 0.42617 0.13320 0.20309 0.00493 0.00015 0.00000 0.00211 0.00208 0.41012 0.12763 0.18246 0.00479 0.00032 0.00000 0.00213 0.00207 0.39368 0.12199 0.16291 0.00464 0.00045 0.00000 0.00214 0.00204 0.37998 0.11731 0.14775 0.00450 0.00054 0.00000 0.00213 0.00201 0.36719 0.11298 0.13453 0.00436 0.00060 0.00000 0.00209 0.00199 0.35404 0.10855 0.12182 0.00421 0.00066 0.00000 0.00206 0.00194 0.34296 0.10484 0.11178 0.00409 0.00070 0.00000 0.00203 0.00189 0.33255 0.10136 0.10289 0.00396 0.00073 0.00000 0.00200 0.00185 0.32453 0.09869 0.09637 0.00385 0.00074 0.00000 0.00197 0.00181 0.30799 0.09321 0.08376 0.00365 0.00077 0.00000 0.00189 0.00172 0.29438 0.08873 0.07419 0.00348 0.00078 0.00005 0.00182 0.00165 0.27985 0.08400 0.06476 0.00329 0.00078 0.00011 0.00174 0.00159 0.26546 0.07933 0.05631 0.00310 0.00077 0.00015 0.00166 0.00150 0.25306 0.07533 0.04972 0.00292 0.00076 0.00018 0.00158 0.00143 0.24118 0.07152 0.04395 0.00275 0.00075 0.00021 0.00150 0.00135 0.23174 0.06850 0.03976 0.00263 0.00073 0.00022 0.00144 0.00129 0.22080 0.06503 0.03527 0.00247 0.00071 0.00024 0.00136 0.00122 0.21159 0.06213 0.03178 0.00234 0.00069 0.00025 0.00129 0.00116 0.20344 0.05958 0.02895 0.00224 0.00067 0.00025 0.00124 0.00111 0.19361 0.05651 0.02577 0.00211 0.00064 0.00026 0.00117 0.00104 0.18488 0.05377 0.02316 0.00198 0.00062 0.00026 0.00111 0.00099 0.17701 0.05132 0.02101 0.00187 0.00060 0.00026 0.00106 0.00095 0.16953 0.04900 0.01909 0.00177 0.00058 0.00026 0.00101 0.00091 0.16253 0.04685 0.01743 0.00168 0.00056 0.00026 0.00096 0.00085 0.15618 0.04490 0.01601 0.00159 0.00054 0.00026 0.00092 0.00081 0.15043 0.04314 0.01481 0.00152 0.00052 0.00025 0.00088 0.00077 0.14488 0.04145 0.01371 0.00145 0.00050 0.00025 0.00084 0.00073 0.13963 0.03985 0.01273 0.00138 0.00049 0.00025 0.00081 0.00070 0.13483 0.03840 0.01188 0.00132 0.00047 0.00025 0.00077 0.00067 0.13044 0.03708 0.01114 0.00127 0.00046 0.00025 0.00074 0.00065 0.12618 0.03581 0.01045 0.00121 0.00044 0.00025 0.00071 0.00062 0.12207 0.03458 0.00983 0.00118 0.00043 0.00024 0.00068 0.00059 0.11830 0.03346 0.00928 0.00114 0.00042 0.00024 0.00066 0.00056 0.11485 0.03242 0.00879 0.00110 0.00041 0.00024 0.00063 0.00054 0.11147 0.03141 0.00833 0.00105 0.00040 0.00024 0.00061 0.00052 0.42660 0.13049 0.21335 0.00388 0.00000 0.00000 0.00140 0.00110 0.41090 0.12520 0.19279 0.00380 0.00000 0.00000 0.00146 0.00117 0.38844 0.11772 0.16540 0.00368 0.00011 0.00000 0.00152 0.00122 0.37271 0.11250 0.14751 0.00358 0.00024 0.00000 0.00154 0.00123 0.35672 0.10721 0.13075 0.00341 0.00034 0.00000 0.00154 0.00126 0.34345 0.10284 0.11786 0.00328 0.00041 0.00000 0.00154 0.00126 0.33110 0.09881 0.10670 0.00318 0.00045 0.00000 0.00153 0.00124 0.31842 0.09470 0.09604 0.00306 0.00049 0.00000 0.00150 0.00121 0.30776 0.09128 0.08767 0.00295 0.00052 0.00000 0.00148 0.00119 0.29778 0.08807 0.08032 0.00285 0.00054 0.00000 0.00145 0.00117 0.29009 0.08561 0.07495 0.00277 0.00055 0.00000 0.00143 0.00116 0.27433 0.08058 0.06466 0.00261 0.00057 0.00000 0.00137 0.00112 0.26143 0.07648 0.05692 0.00248 0.00058 0.00003 0.00132 0.00107 0.24773 0.07217 0.04934 0.00233 0.00058 0.00008 0.00125 0.00103 0.23422 0.06793 0.04263 0.00215 0.00057 0.00011 0.00118 0.00098 0.22258 0.06433 0.03744 0.00202 0.00056 0.00013 0.00112 0.00094 0.21147 0.06090 0.03292 0.00191 0.00055 0.00014 0.00107 0.00089 0.20270 0.05818 0.02965 0.00181 0.00053 0.00015 0.00103 0.00084 0.19255 0.05507 0.02618 0.00170 0.00052 0.00016 0.00097 0.00079 0.18404 0.05248 0.02349 0.00161 0.00050 0.00017 0.00093 0.00076 0.17655 0.05021 0.02133 0.00152 0.00049 0.00017 0.00088 0.00073 0.16754 0.04748 0.01891 0.00142 0.00047 0.00017 0.00083 0.00069 0.15951 0.04507 0.01693 0.00134 0.00045 0.00017 0.00080 0.00064 0.15231 0.04292 0.01531 0.00128 0.00044 0.00017 0.00075 0.00060 0.14549 0.04089 0.01388 0.00122 0.00042 0.00017 0.00071 0.00056 0.13914 0.03900 0.01263 0.00114 0.00041 0.00017 0.00067 0.00054 0.13340 0.03729 0.01157 0.00107 0.00039 0.00017 0.00064 0.00052 0.12823 0.03575 0.01068 0.00102 0.00038 0.00017 0.00062 0.00050 0.12325 0.03427 0.00987 0.00096 0.00037 0.00017 0.00059 0.00048 0.11853 0.03289 0.00915 0.00091 0.00036 0.00017 0.00056 0.00046 0.11423 0.03163 0.00852 0.00087 0.00035 0.00017 0.00053 0.00044 0.11030 0.03049 0.00798 0.00083 0.00034 0.00017 0.00051 0.00042 0.10650 0.02938 0.00747 0.00080 0.00033 0.00017 0.00049 0.00040 0.10288 0.02833 0.00702 0.00076 0.00032 0.00017 0.00047 0.00038 0.09955 0.02736 0.00662 0.00073 0.00031 0.00017 0.00045 0.00036 0.09649 0.02648 0.00626 0.00071 0.00031 0.00017 0.00044 0.00035 0.09348 0.02561 0.00593 0.00068 0.00030 0.00017 0.00042 0.00034 0.38735 0.11512 0.17415 0.00299 0.00000 0.00000 0.00092 0.00049 0.37213 0.11019 0.15633 0.00291 0.00000 0.00000 0.00096 0.00055 0.35048 0.10322 0.13284 0.00278 0.00008 0.00000 0.00101 0.00062 0.33536 0.09838 0.11769 0.00268 0.00018 0.00000 0.00102 0.00065 0.32002 0.09351 0.10361 0.00257 0.00025 0.00000 0.00103 0.00069 0.30732 0.08950 0.09285 0.00247 0.00030 0.00000 0.00103 0.00071 0.29555 0.08579 0.08361 0.00238 0.00033 0.00000 0.00101 0.00071 0.28351 0.08203 0.07484 0.00228 0.00037 0.00000 0.00100 0.00071 0.27344 0.07889 0.06799 0.00220 0.00039 0.00000 0.00098 0.00071 0.26402 0.07596 0.06202 0.00213 0.00040 0.00000 0.00096 0.00069 0.25678 0.07373 0.05770 0.00207 0.00041 0.00000 0.00094 0.00068 0.24202 0.06917 0.04944 0.00193 0.00042 0.00000 0.00090 0.00066 0.22998 0.06548 0.04326 0.00181 0.00043 0.00002 0.00086 0.00064 0.21718 0.06162 0.03727 0.00171 0.00043 0.00006 0.00082 0.00060 0.20462 0.05781 0.03201 0.00160 0.00042 0.00007 0.00078 0.00058 0.19389 0.05458 0.02797 0.00150 0.00041 0.00009 0.00073 0.00056 0.18368 0.05152 0.02447 0.00140 0.00040 0.00010 0.00069 0.00053 0.17561 0.04914 0.02195 0.00134 0.00039 0.00010 0.00066 0.00049 0.16635 0.04638 0.01929 0.00124 0.00038 0.00010 0.00063 0.00046 0.15862 0.04407 0.01725 0.00116 0.00037 0.00010 0.00059 0.00045 0.15180 0.04207 0.01562 0.00110 0.00036 0.00010 0.00057 0.00045 0.14361 0.03968 0.01380 0.00104 0.00035 0.00010 0.00053 0.00042 0.13633 0.03757 0.01232 0.00099 0.00034 0.00010 0.00050 0.00039 0.12990 0.03570 0.01111 0.00093 0.00033 0.00010 0.00048 0.00036 0.12381 0.03393 0.01004 0.00086 0.00031 0.00010 0.00045 0.00034 0.11811 0.03228 0.00912 0.00081 0.00030 0.00010 0.00043 0.00031 0.11297 0.03081 0.00834 0.00077 0.00030 0.00010 0.00040 0.00030 0.10834 0.02948 0.00768 0.00073 0.00029 0.00010 0.00038 0.00029 0.10390 0.02822 0.00709 0.00070 0.00028 0.00010 0.00036 0.00028 0.09974 0.02702 0.00656 0.00067 0.00027 0.00010 0.00034 0.00026 0.09594 0.02594 0.00610 0.00064 0.00026 0.00010 0.00032 0.00025 0.09247 0.02496 0.00571 0.00061 0.00026 0.00010 0.00031 0.00024 0.08912 0.02402 0.00534 0.00058 0.00025 0.00010 0.00030 0.00024 0.08593 0.02311 0.00501 0.00055 0.00025 0.00010 0.00029 0.00022 0.08301 0.02228 0.00472 0.00053 0.00024 0.00010 0.00028 0.00021 0.08034 0.02153 0.00446 0.00051 0.00024 0.00010 0.00027 0.00020 0.07771 0.02079 0.00422 0.00049 0.00023 0.00010 0.00026 0.00019 0.34791 0.10018 0.13936 0.00201 0.00000 0.00000 0.00067 0.00026 0.33332 0.09565 0.12427 0.00197 0.00000 0.00000 0.00071 0.00031 0.31268 0.08926 0.10462 0.00188 0.00006 0.00000 0.00074 0.00038 0.29833 0.08485 0.09209 0.00180 0.00013 0.00000 0.00074 0.00042 0.28380 0.08043 0.08049 0.00173 0.00018 0.00000 0.00074 0.00044 0.27182 0.07679 0.07171 0.00167 0.00021 0.00000 0.00073 0.00044 0.26076 0.07344 0.06425 0.00161 0.00024 0.00000 0.00073 0.00044 0.24949 0.07005 0.05719 0.00155 0.00026 0.00000 0.00072 0.00043 0.24008 0.06724 0.05171 0.00150 0.00028 0.00000 0.00071 0.00043 0.23132 0.06462 0.04695 0.00144 0.00029 0.00000 0.00068 0.00044 0.22461 0.06261 0.04352 0.00139 0.00029 0.00000 0.00066 0.00044 0.21092 0.05856 0.03702 0.00129 0.00030 0.00000 0.00062 0.00042 0.19977 0.05529 0.03220 0.00123 0.00031 0.00001 0.00060 0.00040 0.18802 0.05183 0.02756 0.00117 0.00031 0.00004 0.00057 0.00038 0.17657 0.04848 0.02354 0.00107 0.00031 0.00005 0.00054 0.00036 0.16682 0.04564 0.02046 0.00098 0.00030 0.00005 0.00051 0.00035 0.15756 0.04295 0.01781 0.00091 0.00029 0.00006 0.00049 0.00034 0.15023 0.04085 0.01592 0.00088 0.00029 0.00006 0.00045 0.00033 0.14187 0.03845 0.01394 0.00082 0.00028 0.00006 0.00043 0.00031 0.13491 0.03646 0.01242 0.00076 0.00027 0.00006 0.00040 0.00029 0.12880 0.03472 0.01121 0.00072 0.00027 0.00006 0.00038 0.00028 0.12149 0.03265 0.00987 0.00068 0.00026 0.00006 0.00035 0.00026 0.11502 0.03084 0.00878 0.00065 0.00025 0.00006 0.00034 0.00024 0.10928 0.02922 0.00790 0.00060 0.00024 0.00006 0.00032 0.00023 0.10387 0.02770 0.00712 0.00056 0.00024 0.00006 0.00030 0.00022 0.09886 0.02629 0.00645 0.00053 0.00023 0.00006 0.00029 0.00021 0.09435 0.02503 0.00589 0.00050 0.00022 0.00006 0.00027 0.00020 0.09029 0.02390 0.00541 0.00048 0.00022 0.00006 0.00026 0.00019 0.08640 0.02282 0.00499 0.00045 0.00021 0.00006 0.00024 0.00018 0.08276 0.02182 0.00461 0.00043 0.00021 0.00006 0.00023 0.00017 0.07945 0.02091 0.00428 0.00041 0.00020 0.00006 0.00022 0.00016 0.07643 0.02008 0.00400 0.00039 0.00020 0.00006 0.00021 0.00015 0.07353 0.01929 0.00374 0.00037 0.00020 0.00006 0.00020 0.00014 0.07076 0.01853 0.00351 0.00036 0.00020 0.00006 0.00019 0.00014 0.06823 0.01784 0.00330 0.00035 0.00019 0.00006 0.00019 0.00013 0.06592 0.01720 0.00311 0.00034 0.00019 0.00006 0.00018 0.00012 0.06366 0.01659 0.00294 0.00032 0.00019 0.00006 0.00017 0.00012 0.30888 0.08630 0.10957 0.00134 0.00000 0.00000 0.00045 0.00012 0.29514 0.08218 0.09707 0.00130 0.00000 0.00000 0.00048 0.00017 0.27573 0.07639 0.08093 0.00124 0.00004 0.00000 0.00051 0.00022 0.26227 0.07242 0.07074 0.00120 0.00009 0.00000 0.00053 0.00025 0.24878 0.06843 0.06141 0.00113 0.00012 0.00000 0.00052 0.00027 0.23768 0.06517 0.05439 0.00107 0.00015 0.00000 0.00051 0.00028 0.22742 0.06219 0.04845 0.00104 0.00016 0.00000 0.00050 0.00028 0.21700 0.05917 0.04288 0.00101 0.00018 0.00000 0.00049 0.00029 0.20833 0.05666 0.03859 0.00098 0.00018 0.00000 0.00048 0.00029 0.20029 0.05433 0.03489 0.00094 0.00019 0.00000 0.00046 0.00029 0.19416 0.05256 0.03223 0.00090 0.00019 0.00000 0.00045 0.00028 0.18167 0.04898 0.02722 0.00082 0.00019 0.00000 0.00043 0.00027 0.17155 0.04609 0.02354 0.00077 0.00019 0.00001 0.00042 0.00027 0.16091 0.04308 0.02003 0.00073 0.00019 0.00002 0.00038 0.00026 0.15056 0.04016 0.01700 0.00067 0.00019 0.00003 0.00037 0.00025 0.14175 0.03769 0.01470 0.00063 0.00018 0.00003 0.00035 0.00023 0.13343 0.03537 0.01274 0.00060 0.00018 0.00003 0.00034 0.00022 0.12693 0.03356 0.01135 0.00056 0.00017 0.00003 0.00032 0.00020 0.11948 0.03149 0.00989 0.00052 0.00017 0.00003 0.00030 0.00019 0.11330 0.02978 0.00879 0.00049 0.00016 0.00003 0.00028 0.00019 0.10792 0.02829 0.00791 0.00045 0.00015 0.00003 0.00026 0.00018 0.10149 0.02652 0.00694 0.00042 0.00015 0.00003 0.00024 0.00018 0.09581 0.02497 0.00615 0.00039 0.00014 0.00003 0.00022 0.00017 0.09079 0.02361 0.00552 0.00037 0.00014 0.00003 0.00021 0.00015 0.08608 0.02232 0.00496 0.00034 0.00014 0.00003 0.00020 0.00014 0.08171 0.02113 0.00449 0.00032 0.00014 0.00003 0.00019 0.00013 0.07779 0.02007 0.00409 0.00030 0.00014 0.00003 0.00018 0.00013 0.07427 0.01913 0.00376 0.00029 0.00014 0.00003 0.00017 0.00012 0.07092 0.01822 0.00346 0.00028 0.00014 0.00003 0.00016 0.00012 0.06777 0.01738 0.00319 0.00026 0.00014 0.00003 0.00015 0.00011 0.06492 0.01662 0.00296 0.00025 0.00013 0.00003 0.00015 0.00011 0.06234 0.01594 0.00276 0.00024 0.00013 0.00003 0.00014 0.00010 0.05986 0.01528 0.00258 0.00022 0.00013 0.00003 0.00013 0.00010 0.05749 0.01465 0.00242 0.00022 0.00013 0.00003 0.00012 0.00009 0.05533 0.01408 0.00227 0.00021 0.00013 0.00003 0.00012 0.00009 0.05337 0.01356 0.00214 0.00020 0.00013 0.00003 0.00011 0.00009 0.05147 0.01305 0.00202 0.00018 0.00013 0.00003 0.00011 0.00008 0.27105 0.07360 0.08459 0.00094 0.00000 0.00000 0.00028 0.00002 0.25827 0.06990 0.07445 0.00091 0.00000 0.00000 0.00029 0.00006 0.24031 0.06473 0.06152 0.00086 0.00003 0.00000 0.00031 0.00010 0.22791 0.06118 0.05343 0.00084 0.00006 0.00000 0.00032 0.00012 0.21549 0.05765 0.04606 0.00080 0.00009 0.00000 0.00032 0.00014 0.20532 0.05477 0.04056 0.00076 0.00010 0.00000 0.00032 0.00015 0.19600 0.05213 0.03594 0.00073 0.00011 0.00000 0.00032 0.00014 0.18654 0.04947 0.03164 0.00070 0.00012 0.00000 0.00031 0.00014 0.17868 0.04727 0.02834 0.00067 0.00012 0.00000 0.00031 0.00015 0.17139 0.04524 0.02551 0.00064 0.00013 0.00000 0.00030 0.00015 0.16583 0.04369 0.02349 0.00062 0.00013 0.00000 0.00029 0.00016 0.15459 0.04057 0.01971 0.00058 0.00013 0.00000 0.00028 0.00016 0.14553 0.03806 0.01696 0.00054 0.00013 0.00000 0.00026 0.00015 0.13605 0.03546 0.01435 0.00051 0.00012 0.00001 0.00024 0.00014 0.12684 0.03293 0.01211 0.00046 0.00012 0.00001 0.00022 0.00014 0.11905 0.03082 0.01042 0.00043 0.00011 0.00001 0.00021 0.00014 0.11172 0.02883 0.00899 0.00040 0.00011 0.00001 0.00019 0.00013 0.10599 0.02728 0.00798 0.00038 0.00010 0.00001 0.00018 0.00013 0.09946 0.02552 0.00693 0.00036 0.00010 0.00001 0.00017 0.00011 0.09405 0.02408 0.00614 0.00034 0.00009 0.00001 0.00016 0.00009 0.08934 0.02282 0.00551 0.00032 0.00009 0.00001 0.00015 0.00010 0.08376 0.02133 0.00482 0.00029 0.00008 0.00001 0.00015 0.00010 0.07887 0.02003 0.00426 0.00026 0.00008 0.00001 0.00014 0.00009 0.07455 0.01888 0.00382 0.00024 0.00007 0.00001 0.00013 0.00008 0.07049 0.01781 0.00343 0.00023 0.00007 0.00001 0.00012 0.00008 0.06673 0.01682 0.00310 0.00022 0.00007 0.00001 0.00011 0.00008 0.06337 0.01594 0.00282 0.00020 0.00007 0.00001 0.00010 0.00008 0.06037 0.01516 0.00258 0.00019 0.00007 0.00001 0.00010 0.00007 0.05751 0.01441 0.00237 0.00018 0.00007 0.00001 0.00009 0.00007 0.05484 0.01372 0.00219 0.00018 0.00007 0.00001 0.00009 0.00006 0.05243 0.01309 0.00203 0.00017 0.00007 0.00001 0.00008 0.00006 0.05026 0.01252 0.00189 0.00016 0.00007 0.00001 0.00008 0.00006 0.04817 0.01198 0.00176 0.00014 0.00007 0.00001 0.00008 0.00005 0.04618 0.01147 0.00165 0.00014 0.00007 0.00001 0.00007 0.00005 0.04437 0.01100 0.00155 0.00013 0.00007 0.00001 0.00007 0.00005 0.04272 0.01058 0.00146 0.00013 0.00007 0.00001 0.00007 0.00005 0.04112 0.01017 0.00138 0.00012 0.00007 0.00001 0.00006 0.00005 0.23455 0.06172 0.06372 0.00051 0.00000 0.00000 0.00020 0.00002 0.22283 0.05847 0.05572 0.00051 0.00000 0.00000 0.00022 0.00005 0.20643 0.05394 0.04560 0.00051 0.00002 0.00000 0.00023 0.00007 0.19519 0.05083 0.03933 0.00049 0.00004 0.00000 0.00024 0.00009 0.18398 0.04775 0.03367 0.00046 0.00006 0.00000 0.00024 0.00010 0.17482 0.04524 0.02948 0.00044 0.00007 0.00000 0.00023 0.00010 0.16642 0.04295 0.02598 0.00042 0.00007 0.00000 0.00022 0.00011 0.15795 0.04065 0.02275 0.00040 0.00007 0.00000 0.00021 0.00011 0.15093 0.03875 0.02028 0.00039 0.00007 0.00000 0.00021 0.00010 0.14445 0.03701 0.01818 0.00038 0.00007 0.00000 0.00020 0.00011 0.13951 0.03568 0.01668 0.00037 0.00007 0.00000 0.00020 0.00011 0.12954 0.03301 0.01390 0.00033 0.00007 0.00000 0.00019 0.00011 0.12155 0.03088 0.01189 0.00031 0.00007 0.00000 0.00018 0.00011 0.11323 0.02866 0.01000 0.00028 0.00007 0.00000 0.00016 0.00011 0.10517 0.02652 0.00839 0.00026 0.00007 0.00000 0.00015 0.00010 0.09839 0.02473 0.00719 0.00024 0.00006 0.00000 0.00014 0.00009 0.09203 0.02306 0.00618 0.00021 0.00006 0.00000 0.00014 0.00009 0.08707 0.02176 0.00547 0.00020 0.00006 0.00000 0.00013 0.00009 0.08142 0.02030 0.00473 0.00020 0.00006 0.00000 0.00012 0.00008 0.07676 0.01910 0.00418 0.00019 0.00005 0.00000 0.00011 0.00007 0.07273 0.01806 0.00374 0.00018 0.00005 0.00000 0.00010 0.00007 0.06796 0.01682 0.00326 0.00017 0.00005 0.00000 0.00010 0.00006 0.06380 0.01574 0.00288 0.00015 0.00005 0.00000 0.00009 0.00006 0.06012 0.01480 0.00258 0.00014 0.00004 0.00000 0.00009 0.00006 0.05669 0.01392 0.00231 0.00012 0.00004 0.00000 0.00008 0.00005 0.05353 0.01311 0.00208 0.00012 0.00004 0.00000 0.00007 0.00005 0.05071 0.01240 0.00189 0.00011 0.00004 0.00000 0.00007 0.00005 0.04820 0.01177 0.00173 0.00010 0.00004 0.00000 0.00007 0.00005 0.04581 0.01116 0.00159 0.00010 0.00004 0.00000 0.00006 0.00004 0.04358 0.01060 0.00146 0.00010 0.00004 0.00000 0.00006 0.00004 0.04157 0.01009 0.00136 0.00009 0.00004 0.00000 0.00006 0.00004 0.03976 0.00963 0.00126 0.00009 0.00004 0.00000 0.00005 0.00004 0.03803 0.00920 0.00118 0.00008 0.00004 0.00000 0.00005 0.00004 0.03639 0.00879 0.00110 0.00007 0.00004 0.00000 0.00005 0.00004 0.03490 0.00842 0.00103 0.00007 0.00004 0.00000 0.00005 0.00004 0.03354 0.00808 0.00097 0.00007 0.00004 0.00000 0.00005 0.00003 0.03222 0.00775 0.00092 0.00007 0.00004 0.00000 0.00004 0.00003 0.16807 0.04171 0.03369 0.00021 0.00000 0.00000 0.00007 0.00000 0.15873 0.03927 0.02906 0.00020 0.00000 0.00000 0.00008 0.00001 0.14575 0.03591 0.02333 0.00020 0.00001 0.00000 0.00008 0.00002 0.13692 0.03363 0.01985 0.00020 0.00001 0.00000 0.00009 0.00002 0.12819 0.03138 0.01676 0.00018 0.00001 0.00000 0.00008 0.00004 0.12110 0.02956 0.01450 0.00016 0.00001 0.00000 0.00008 0.00005 0.11467 0.02791 0.01264 0.00014 0.00001 0.00000 0.00007 0.00005 0.10821 0.02627 0.01095 0.00013 0.00001 0.00000 0.00008 0.00005 0.10287 0.02492 0.00968 0.00013 0.00001 0.00000 0.00008 0.00005 0.09798 0.02369 0.00860 0.00013 0.00001 0.00000 0.00008 0.00004 0.09427 0.02275 0.00784 0.00013 0.00001 0.00000 0.00008 0.00004 0.08683 0.02089 0.00645 0.00012 0.00001 0.00000 0.00007 0.00004 0.08091 0.01941 0.00546 0.00011 0.00001 0.00000 0.00006 0.00004 0.07479 0.01788 0.00454 0.00010 0.00001 0.00000 0.00006 0.00004 0.06893 0.01642 0.00377 0.00009 0.00001 0.00000 0.00006 0.00004 0.06403 0.01521 0.00321 0.00009 0.00001 0.00000 0.00005 0.00004 0.05947 0.01409 0.00274 0.00008 0.00001 0.00000 0.00005 0.00004 0.05595 0.01322 0.00241 0.00007 0.00001 0.00000 0.00004 0.00003 0.05198 0.01225 0.00207 0.00007 0.00001 0.00000 0.00004 0.00003 0.04872 0.01145 0.00182 0.00006 0.00001 0.00000 0.00004 0.00003 0.04591 0.01077 0.00162 0.00006 0.00001 0.00000 0.00004 0.00003 0.04260 0.00997 0.00141 0.00005 0.00001 0.00000 0.00003 0.00003 0.03974 0.00927 0.00124 0.00005 0.00001 0.00000 0.00003 0.00003 0.03723 0.00867 0.00111 0.00004 0.00001 0.00000 0.00003 0.00003 0.03490 0.00811 0.00099 0.00004 0.00001 0.00000 0.00003 0.00002 0.03277 0.00760 0.00089 0.00004 0.00001 0.00000 0.00003 0.00002 0.03088 0.00714 0.00081 0.00003 0.00001 0.00000 0.00002 0.00002 0.02920 0.00675 0.00074 0.00004 0.00001 0.00000 0.00002 0.00002 0.02761 0.00637 0.00068 0.00003 0.00001 0.00000 0.00002 0.00001 0.02615 0.00602 0.00062 0.00003 0.00001 0.00000 0.00002 0.00001 0.02483 0.00571 0.00057 0.00003 0.00001 0.00000 0.00002 0.00002 0.02365 0.00542 0.00054 0.00002 0.00001 0.00000 0.00002 0.00002 0.02252 0.00516 0.00050 0.00002 0.00001 0.00000 0.00002 0.00002 0.02146 0.00491 0.00046 0.00002 0.00001 0.00000 0.00002 0.00001 0.02050 0.00468 0.00044 0.00002 0.00001 0.00000 0.00002 0.00001 0.01963 0.00448 0.00041 0.00002 0.00001 0.00000 0.00002 0.00001 0.01879 0.00428 0.00039 0.00002 0.00001 0.00000 0.00001 0.00001 0.11197 0.02610 0.01574 0.00007 0.00000 0.00000 0.00002 -0.00001 0.10506 0.02442 0.01339 0.00007 0.00000 0.00000 0.00002 0.00000 0.09554 0.02212 0.01054 0.00006 0.00000 0.00000 0.00002 0.00001 0.08913 0.02058 0.00885 0.00006 0.00000 0.00000 0.00002 0.00002 0.08284 0.01907 0.00737 0.00005 0.00000 0.00000 0.00002 0.00001 0.07777 0.01786 0.00631 0.00005 0.00000 0.00000 0.00002 0.00001 0.07318 0.01677 0.00544 0.00005 0.00000 0.00000 0.00002 0.00001 0.06861 0.01569 0.00466 0.00005 0.00000 0.00000 0.00002 0.00001 0.06487 0.01480 0.00408 0.00005 0.00000 0.00000 0.00002 0.00002 0.06147 0.01400 0.00360 0.00004 0.00000 0.00000 0.00002 0.00002 0.05892 0.01339 0.00326 0.00004 0.00000 0.00000 0.00002 0.00001 0.05380 0.01219 0.00265 0.00003 0.00000 0.00000 0.00002 0.00001 0.04976 0.01124 0.00222 0.00003 0.00000 0.00000 0.00002 0.00001 0.04562 0.01027 0.00183 0.00003 0.00000 0.00000 0.00002 0.00001 0.04169 0.00936 0.00151 0.00003 0.00000 0.00000 0.00002 0.00001 0.03844 0.00860 0.00127 0.00003 0.00000 0.00000 0.00002 0.00001 0.03543 0.00791 0.00108 0.00002 0.00000 0.00000 0.00001 0.00001 0.03312 0.00738 0.00095 0.00002 0.00000 0.00000 0.00001 0.00001 0.03054 0.00679 0.00081 0.00002 0.00000 0.00000 0.00001 0.00001 0.02844 0.00631 0.00071 0.00002 0.00000 0.00000 0.00001 0.00001 0.02665 0.00590 0.00063 0.00002 0.00000 0.00000 0.00001 0.00001 0.02455 0.00542 0.00055 0.00002 0.00000 0.00000 0.00001 0.00001 0.02273 0.00500 0.00048 0.00002 0.00000 0.00000 0.00001 0.00001 0.02116 0.00465 0.00043 0.00002 0.00000 0.00000 0.00001 0.00001 0.01971 0.00432 0.00038 0.00001 0.00000 0.00000 0.00001 0.00001 0.01840 0.00403 0.00034 0.00001 0.00000 0.00000 0.00001 0.00001 0.01724 0.00376 0.00031 0.00001 0.00000 0.00000 0.00001 0.00001 0.01621 0.00353 0.00028 0.00001 0.00000 0.00000 0.00001 0.00001 0.01524 0.00332 0.00026 0.00001 0.00000 0.00000 0.00001 0.00001 0.01436 0.00312 0.00024 0.00001 0.00000 0.00000 0.00000 0.00000 0.01357 0.00295 0.00022 0.00001 0.00000 0.00000 0.00000 0.00000 0.01287 0.00279 0.00020 0.00001 0.00000 0.00000 0.00001 0.00000 0.01220 0.00264 0.00019 0.00001 0.00000 0.00000 0.00001 0.00000 0.01157 0.00250 0.00018 0.00001 0.00000 0.00000 0.00000 0.00000 0.01100 0.00237 0.00017 0.00001 0.00000 0.00000 0.00000 0.00000 0.01049 0.00226 0.00016 0.00001 0.00000 0.00000 0.00000 0.00000 0.01000 0.00215 0.00015 0.00001 0.00000 0.00000 0.00000 0.00000 0.06774 0.01478 0.00625 0.00003 0.00000 0.00000 0.00000 -0.00001 0.06310 0.01373 0.00524 0.00002 0.00000 0.00000 0.00000 0.00000 0.05679 0.01231 0.00404 0.00002 0.00000 0.00000 0.00000 0.00000 0.05257 0.01136 0.00335 0.00001 0.00000 0.00000 0.00000 0.00000 0.04845 0.01045 0.00275 0.00002 0.00000 0.00000 0.00000 0.00000 0.04515 0.00972 0.00232 0.00002 0.00000 0.00000 0.00000 0.00000 0.04221 0.00906 0.00198 0.00002 0.00000 0.00000 0.00000 0.00000 0.03930 0.00842 0.00168 0.00002 0.00000 0.00000 0.00000 0.00000 0.03693 0.00790 0.00146 0.00002 0.00000 0.00000 0.00000 0.00000 0.03479 0.00743 0.00128 0.00002 0.00000 0.00000 0.00000 0.00000 0.03318 0.00707 0.00115 0.00002 0.00000 0.00000 0.00000 0.00000 0.03001 0.00638 0.00093 0.00001 0.00000 0.00000 0.00000 0.00000 0.02753 0.00583 0.00077 0.00001 0.00000 0.00000 0.00000 0.00000 0.02500 0.00528 0.00063 0.00001 0.00000 0.00000 0.00000 0.00000 0.02264 0.00477 0.00052 0.00001 0.00000 0.00000 0.00000 0.00000 0.02069 0.00435 0.00043 0.00001 0.00000 0.00000 0.00000 0.00000 0.01891 0.00396 0.00037 0.00001 0.00000 0.00000 0.00000 0.00000 0.01756 0.00367 0.00032 0.00001 0.00000 0.00000 0.00000 0.00000 0.01606 0.00335 0.00027 0.00001 0.00000 0.00000 0.00000 0.00000 0.01484 0.00309 0.00024 0.00001 0.00000 0.00000 0.00000 0.00000 0.01381 0.00287 0.00021 0.00000 0.00000 0.00000 0.00000 0.00000 0.01262 0.00262 0.00018 0.00001 0.00000 0.00000 0.00000 0.00000 0.01159 0.00240 0.00016 0.00001 0.00000 0.00000 0.00000 0.00000 0.01072 0.00221 0.00014 0.00000 0.00000 0.00000 0.00000 0.00000 0.00991 0.00204 0.00013 0.00000 0.00000 0.00000 0.00000 0.00000 0.00919 0.00189 0.00012 0.00000 0.00000 0.00000 0.00000 0.00000 0.00855 0.00176 0.00010 0.00000 0.00000 0.00000 0.00000 0.00000 0.00800 0.00164 0.00010 0.00000 0.00000 0.00000 0.00000 0.00000 0.00748 0.00153 0.00009 0.00000 0.00000 0.00000 0.00000 0.00000 0.00700 0.00143 0.00008 0.00000 0.00000 0.00000 0.00000 0.00000 0.00658 0.00134 0.00007 0.00000 0.00000 0.00000 0.00000 0.00000 0.00620 0.00126 0.00007 0.00000 0.00000 0.00000 0.00000 0.00000 0.00585 0.00119 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00552 0.00112 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00523 0.00106 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00496 0.00101 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.00471 0.00095 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.03566 0.00721 0.00195 -0.00001 0.00000 0.00000 0.00000 0.00000 0.03294 0.00665 0.00161 0.00000 0.00000 0.00000 0.00000 0.00000 0.02927 0.00589 0.00122 0.00000 0.00000 0.00000 0.00000 0.00000 0.02685 0.00539 0.00100 0.00000 0.00000 0.00000 0.00000 0.00000 0.02451 0.00491 0.00081 0.00000 0.00000 0.00000 0.00000 0.00000 0.02267 0.00453 0.00067 0.00000 0.00000 0.00000 0.00000 0.00000 0.02103 0.00419 0.00057 0.00000 0.00000 0.00000 0.00000 0.00000 0.01942 0.00386 0.00048 0.00000 0.00000 0.00000 0.00000 0.00000 0.01812 0.00360 0.00041 0.00000 0.00000 0.00000 0.00000 0.00000 0.01695 0.00336 0.00036 0.00000 0.00000 0.00000 0.00000 0.00000 0.01609 0.00318 0.00032 0.00000 0.00000 0.00000 0.00000 0.00000 0.01438 0.00284 0.00026 0.00000 0.00000 0.00000 0.00000 0.00000 0.01306 0.00257 0.00021 0.00000 0.00000 0.00000 0.00000 0.00000 0.01174 0.00231 0.00017 0.00000 0.00000 0.00000 0.00000 0.00000 0.01051 0.00206 0.00014 0.00000 0.00000 0.00000 0.00000 0.00000 0.00951 0.00186 0.00012 0.00000 0.00000 0.00000 0.00000 0.00000 0.00861 0.00168 0.00010 0.00000 0.00000 0.00000 0.00000 0.00000 0.00793 0.00154 0.00009 0.00000 0.00000 0.00000 0.00000 0.00000 0.00718 0.00139 0.00007 0.00000 0.00000 0.00000 0.00000 0.00000 0.00658 0.00127 0.00007 0.00000 0.00000 0.00000 0.00000 0.00000 0.00607 0.00118 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00549 0.00106 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.00500 0.00096 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00459 0.00088 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00421 0.00081 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00387 0.00074 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00357 0.00068 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00332 0.00063 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00308 0.00059 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00286 0.00055 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00267 0.00051 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00250 0.00048 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00235 0.00045 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00220 0.00042 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00207 0.00039 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00196 0.00037 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00185 0.00035 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00443 0.00074 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.00399 0.00066 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00342 0.00057 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00306 0.00050 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00272 0.00045 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00245 0.00040 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00223 0.00037 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00201 0.00033 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00183 0.00030 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00168 0.00028 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00157 0.00026 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00136 0.00022 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00120 0.00020 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00105 0.00017 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00091 0.00015 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00080 0.00013 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00070 0.00011 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00063 0.00010 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00056 0.00009 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00050 0.00008 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00045 0.00007 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00039 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00035 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00031 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00028 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00025 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00023 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00021 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00019 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00017 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00016 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00014 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00013 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00012 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00011 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00011 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00010 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 ����������������herwig++-2.6.0.orig/PDF/mrst/2002/������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464205�016746� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/mrst/2002/mrst2002nlo.dat���������������������������������������������������0000644�0001750�0001750�00000430760�11754474775�021467� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 0.00949 0.00208 -8.77372 0.89445 0.00000 0.00000 0.43318 0.89446 0.00964 0.00215 -8.32812 0.87515 0.00000 0.00000 0.41881 0.87515 0.00987 0.00224 -7.02499 0.87250 0.00466 0.00000 0.42304 0.87251 0.01004 0.00230 -5.62283 0.88842 0.02443 0.00000 0.44368 0.88844 0.01021 0.00237 -3.67463 0.92274 0.06674 0.00000 0.48273 0.92277 0.01035 0.00244 -1.58222 0.96663 0.11633 0.00000 0.53055 0.96665 0.01049 0.00250 0.86927 1.02348 0.17883 0.00000 0.59105 1.02351 0.01064 0.00256 4.01960 1.10155 0.26261 0.00000 0.67287 1.10158 0.01076 0.00262 7.14643 1.18180 0.34770 0.00000 0.75629 1.18183 0.01088 0.00267 10.43863 1.26801 0.43848 0.00000 0.84548 1.26805 0.01098 0.00271 13.56663 1.35241 0.52641 0.00000 0.93217 1.35245 0.01119 0.00281 20.74887 1.55173 0.73305 0.05062 1.13626 1.55178 0.01136 0.00289 27.70611 1.75402 0.94142 0.21093 1.34249 1.75407 0.01156 0.00298 36.42443 2.01480 1.20875 0.49550 1.60751 2.01485 0.01176 0.00308 46.80023 2.32731 1.52788 0.81577 1.92430 2.32737 0.01195 0.00317 57.28436 2.64527 1.85166 1.14354 2.24601 2.64533 0.01214 0.00326 68.97627 3.00252 2.21464 1.50982 2.60694 3.00260 0.01229 0.00333 79.90306 3.33936 2.55610 1.85411 2.94674 3.33944 0.01248 0.00343 94.02904 3.77751 2.99973 2.30111 3.38839 3.77759 0.01265 0.00351 107.39060 4.19462 3.42158 2.72589 3.80853 4.19471 0.01280 0.00359 120.66338 4.61214 3.84335 3.15033 4.22876 4.61223 0.01300 0.00369 138.78865 5.18713 4.42362 3.73394 4.80711 5.18723 0.01319 0.00379 156.91684 5.76679 5.00812 4.32155 5.38985 5.76689 0.01336 0.00388 174.77083 6.34149 5.58727 4.90357 5.96737 6.34160 0.01354 0.00397 194.28268 6.97716 6.22729 5.54644 6.60578 6.97727 0.01371 0.00406 214.01826 7.62414 6.87846 6.20036 7.25541 7.62426 0.01388 0.00415 233.65202 8.27294 7.53115 6.85564 7.90666 8.27306 0.01403 0.00423 253.24161 8.92684 8.18866 7.51557 8.56283 8.92697 0.01419 0.00432 273.29608 9.59910 8.86449 8.19380 9.23733 9.59924 0.01434 0.00440 294.43326 10.31674 9.58558 8.91725 9.95713 10.31688 0.01449 0.00448 314.61292 11.00346 10.27554 9.60942 10.64588 11.00360 0.01463 0.00456 335.06009 11.70878 10.98389 10.31987 11.35309 11.70893 0.01478 0.00464 355.75555 12.42425 11.70236 11.04043 12.07044 12.42440 0.01492 0.00472 377.24124 13.17554 12.45660 11.79672 12.82356 13.17570 0.01506 0.00479 398.12357 13.90942 13.19324 12.53531 13.55916 13.90958 0.01519 0.00487 418.33475 14.62390 13.91033 13.25423 14.27526 14.62407 0.01532 0.00494 439.77859 15.39044 14.67947 14.02522 15.04342 15.39062 0.01140 0.00280 -6.48061 0.75237 0.00000 0.00000 0.37083 0.75238 0.01162 0.00290 -5.88722 0.74668 0.00000 0.00000 0.36921 0.74670 0.01193 0.00306 -4.44160 0.76062 0.00621 0.00000 0.38882 0.76064 0.01215 0.00317 -3.01309 0.78582 0.03113 0.00000 0.41791 0.78586 0.01239 0.00329 -1.12404 0.82691 0.08005 0.00000 0.46289 0.82695 0.01259 0.00339 0.84627 0.87407 0.13206 0.00000 0.51330 0.87412 0.01278 0.00349 3.09468 0.93125 0.19421 0.00000 0.57347 0.93130 0.01299 0.00360 5.91521 1.00611 0.27409 0.00000 0.65142 1.00617 0.01316 0.00369 8.66791 1.08094 0.35316 0.00000 0.72886 1.08101 0.01333 0.00378 11.53542 1.16001 0.43623 0.00000 0.81038 1.16008 0.01347 0.00385 14.20367 1.23522 0.51453 0.00000 0.88748 1.23530 0.01376 0.00401 20.25734 1.41029 0.69602 0.04384 1.06647 1.41038 0.01401 0.00414 26.00884 1.58426 0.87531 0.18190 1.24368 1.58436 0.01429 0.00429 33.09232 1.80456 1.10136 0.42440 1.46747 1.80467 0.01457 0.00445 41.38921 2.06409 1.36668 0.69203 1.73051 2.06420 0.01484 0.00460 49.65532 2.32439 1.63208 0.96206 1.99390 2.32452 0.01510 0.00475 58.75433 2.61315 1.92586 1.25984 2.28568 2.61329 0.01533 0.00487 67.12776 2.88144 2.19820 1.53555 2.55641 2.88159 0.01560 0.00503 77.84684 3.22724 2.54880 1.89015 2.90509 3.22740 0.01584 0.00516 87.88490 3.55343 2.87914 2.22396 3.23376 3.55359 0.01606 0.00529 97.74361 3.87659 3.20602 2.55399 3.55915 3.87676 0.01634 0.00545 111.05292 4.31708 3.65114 3.00304 4.00240 4.31727 0.01661 0.00561 124.22823 4.75713 4.09542 3.45096 4.44497 4.75732 0.01686 0.00575 137.09482 5.19018 4.53238 3.89126 4.88034 5.19039 0.01711 0.00590 150.95825 5.66330 5.00930 4.37150 5.35572 5.66352 0.01736 0.00605 164.88377 6.14195 5.49162 4.85701 5.83654 6.14218 0.01760 0.00618 178.61484 6.61830 5.97138 5.33976 6.31490 6.61854 0.01782 0.00632 192.17154 7.09408 6.45031 5.82148 6.79254 7.09433 0.01805 0.00645 205.98802 7.58137 6.94072 6.31466 7.28166 7.58162 0.01827 0.00659 220.36679 8.09595 7.45833 6.83496 7.79802 8.09622 0.01848 0.00671 234.06197 8.58740 7.95262 7.33178 8.29114 8.58768 0.01869 0.00683 247.75987 9.08666 8.45452 7.83607 8.79194 9.08694 0.01890 0.00696 261.59457 9.59219 8.96269 8.34662 9.29902 9.59248 0.01910 0.00708 275.80753 10.11836 9.49143 8.87769 9.82669 10.11866 0.01930 0.00720 289.55667 10.63033 10.00582 9.39429 10.34007 10.63064 0.01948 0.00731 302.79431 11.12656 10.50434 9.89488 10.83763 11.12689 0.01968 0.00743 316.69882 11.65454 11.03458 10.42721 11.36693 11.65486 0.01354 0.00359 -4.77065 0.63821 0.00000 0.00000 0.31954 0.63823 0.01382 0.00374 -4.10253 0.64129 0.00000 0.00000 0.32598 0.64131 0.01423 0.00396 -2.62913 0.66463 0.00681 0.00000 0.35400 0.66467 0.01452 0.00413 -1.25320 0.69403 0.03349 0.00000 0.38661 0.69408 0.01483 0.00430 0.50093 0.73677 0.08364 0.00000 0.43257 0.73683 0.01509 0.00445 2.28837 0.78306 0.13406 0.00000 0.48153 0.78313 0.01534 0.00460 4.28457 0.83690 0.19228 0.00000 0.53784 0.83698 0.01561 0.00475 6.73858 0.90517 0.26494 0.00000 0.60866 0.90526 0.01585 0.00489 9.09944 0.97205 0.33552 0.00000 0.67769 0.97215 0.01607 0.00502 11.53606 1.04184 0.40882 0.00000 0.74950 1.04194 0.01625 0.00513 13.76261 1.10678 0.47647 0.00000 0.81601 1.10690 0.01664 0.00535 18.76175 1.25624 0.63154 0.03705 0.96870 1.25637 0.01697 0.00555 23.43089 1.40226 0.78221 0.15321 1.11738 1.40240 0.01733 0.00577 29.09365 1.58447 0.96945 0.35549 1.30247 1.58463 0.01772 0.00601 35.63385 1.79608 1.18613 0.57511 1.51698 1.79626 0.01807 0.00622 42.06938 2.00580 1.40031 0.79407 1.72924 2.00599 0.01843 0.00644 49.07264 2.23594 1.63484 1.03284 1.96187 2.23615 0.01873 0.00662 55.43145 2.44713 1.84957 1.25111 2.17507 2.44735 0.01909 0.00684 63.50291 2.71723 2.12387 1.52961 2.44754 2.71747 0.01942 0.00704 70.99653 2.97004 2.38031 1.78968 2.70240 2.97029 0.01971 0.00723 78.28457 3.21832 2.63185 2.04450 2.95251 3.21858 0.02010 0.00746 88.02813 3.55384 2.97140 2.38815 3.29029 3.55412 0.02046 0.00769 97.59013 3.88645 3.30773 2.72826 3.62499 3.88675 0.02079 0.00790 106.86125 4.21174 3.63643 3.06045 3.95219 4.21206 0.02114 0.00811 116.73310 4.56349 3.99151 3.41895 4.30579 4.56382 0.02147 0.00832 126.59267 4.91758 4.34880 3.77956 4.66167 4.91793 0.02179 0.00853 136.24287 5.26774 4.70195 4.13579 5.01349 5.26811 0.02210 0.00872 145.68896 5.61490 5.05186 4.48858 5.36218 5.61528 0.02240 0.00891 155.28049 5.96934 5.40904 4.84860 5.71813 5.96973 0.02271 0.00910 165.16019 6.34035 5.78269 5.22503 6.09060 6.34076 0.02300 0.00929 174.55202 6.69411 6.13893 5.58387 6.44573 6.69453 0.02327 0.00946 183.84837 7.05031 6.49745 5.94483 6.80321 7.05075 0.02355 0.00964 193.22128 7.41047 6.85992 6.30974 7.16464 7.41092 0.02383 0.00982 202.77043 7.78268 7.23437 6.68658 7.53808 7.78315 0.02410 0.00999 211.97313 8.14371 7.59752 7.05198 7.90027 8.14418 0.02435 0.01015 220.79713 8.49242 7.94822 7.40480 8.25007 8.49291 0.02461 0.01032 229.99185 8.86096 8.31875 7.77746 8.61969 8.86146 0.01508 0.00427 -3.93120 0.58008 0.00000 0.00000 0.29308 0.58011 0.01541 0.00447 -3.23760 0.58700 0.00000 0.00000 0.30300 0.58704 0.01590 0.00476 -1.77433 0.61405 0.00695 0.00000 0.33422 0.61410 0.01625 0.00497 -0.44530 0.64470 0.03389 0.00000 0.36774 0.64477 0.01662 0.00519 1.21695 0.68729 0.08359 0.00000 0.41319 0.68737 0.01694 0.00538 2.88941 0.73223 0.13229 0.00000 0.46051 0.73232 0.01724 0.00557 4.73494 0.78347 0.18758 0.00000 0.51396 0.78357 0.01757 0.00576 6.97794 0.84740 0.25557 0.00000 0.58016 0.84752 0.01785 0.00594 9.11811 0.90937 0.32096 0.00000 0.64405 0.90950 0.01812 0.00611 11.31506 0.97361 0.38844 0.00000 0.71009 0.97376 0.01834 0.00624 13.30142 1.03268 0.45001 0.00000 0.77055 1.03283 0.01880 0.00653 17.73389 1.16775 0.59027 0.03332 0.90850 1.16793 0.01920 0.00678 21.83171 1.29846 0.72528 0.13748 1.04159 1.29865 0.01965 0.00706 26.75568 1.46019 0.89166 0.31800 1.20589 1.46041 0.02012 0.00735 32.39435 1.64647 1.08262 0.51214 1.39475 1.64671 0.02054 0.00762 37.90089 1.82979 1.27006 0.70434 1.58033 1.83005 0.02098 0.00789 43.85120 2.02968 1.47400 0.91256 1.78244 2.02996 0.02134 0.00812 49.20949 2.21175 1.65934 1.10145 1.96629 2.21204 0.02178 0.00840 55.97559 2.44353 1.89501 1.34132 2.20019 2.44385 0.02217 0.00865 62.22376 2.65945 2.11428 1.56425 2.41794 2.65979 0.02253 0.00889 68.26365 2.87039 2.32823 1.78149 2.63051 2.87075 0.02299 0.00918 76.28989 3.15396 2.61553 2.07288 2.91610 3.15433 0.02343 0.00946 84.12408 3.43377 2.89877 2.35991 3.19776 3.43417 0.02384 0.00972 91.68584 3.70637 3.17452 2.63914 3.47206 3.70679 0.02426 0.00999 99.67827 3.99929 3.47053 2.93857 3.76664 3.99974 0.02466 0.01025 107.63239 4.29328 3.76748 3.23882 4.06222 4.29375 0.02505 0.01050 115.38149 4.58288 4.05982 3.53424 4.35329 4.58336 0.02542 0.01074 122.92606 4.86868 4.34818 3.82546 4.64046 4.86919 0.02579 0.01098 130.56891 5.15992 4.64195 4.12207 4.93305 5.16044 0.02616 0.01122 138.39085 5.46314 4.94761 4.43048 5.23756 5.46368 0.02651 0.01145 145.81749 5.75196 5.23872 4.72419 5.52761 5.75252 0.02685 0.01167 153.12079 6.04120 5.53010 5.01800 5.81798 6.04178 0.02718 0.01188 160.47615 6.33339 5.82442 5.31474 6.11130 6.33398 0.02752 0.01210 167.93085 6.63404 6.12716 5.61985 6.41306 6.63466 0.02785 0.01231 175.09798 6.92510 6.42017 5.91510 6.70515 6.92573 0.02815 0.01251 181.95259 7.20562 6.70254 6.19957 6.98665 7.20627 0.02847 0.01272 189.05937 7.50088 6.99964 6.49878 7.28288 7.50155 0.01632 0.00488 -3.39432 0.54219 0.00000 0.00000 0.27570 0.54222 0.01670 0.00512 -2.68889 0.55138 0.00000 0.00000 0.28764 0.55142 0.01726 0.00546 -1.24137 0.58043 0.00698 0.00000 0.32054 0.58050 0.01766 0.00571 0.04965 0.61158 0.03385 0.00000 0.35433 0.61167 0.01809 0.00598 1.64359 0.65371 0.08287 0.00000 0.39910 0.65382 0.01845 0.00621 3.23333 0.69744 0.13013 0.00000 0.44502 0.69756 0.01881 0.00643 4.97295 0.74668 0.18320 0.00000 0.49629 0.74681 0.01918 0.00666 7.07022 0.80745 0.24780 0.00000 0.55915 0.80760 0.01950 0.00687 9.05965 0.86593 0.30952 0.00000 0.61940 0.86610 0.01982 0.00707 11.09394 0.92629 0.37294 0.00000 0.68142 0.92647 0.02007 0.00723 12.91921 0.98132 0.43033 0.00000 0.73773 0.98151 0.02060 0.00757 16.97404 1.10660 0.56052 0.03080 0.86567 1.10683 0.02106 0.00786 20.69474 1.22702 0.68499 0.12691 0.98827 1.22726 0.02157 0.00819 25.13498 1.37512 0.83749 0.29287 1.13873 1.37539 0.02211 0.00854 30.18761 1.54468 1.01147 0.47015 1.31066 1.54497 0.02261 0.00886 35.09393 1.71068 1.18137 0.64478 1.47875 1.71100 0.02310 0.00918 40.36762 1.89083 1.36536 0.83303 1.66095 1.89118 0.02352 0.00945 45.08698 2.05403 1.53165 1.00286 1.82579 2.05440 0.02403 0.00978 51.02271 2.26108 1.74237 1.21777 2.03479 2.26148 0.02448 0.01008 56.48165 2.45329 1.93774 1.41677 2.22867 2.45370 0.02490 0.01035 61.73395 2.64031 2.12761 1.60991 2.41720 2.64075 0.02543 0.01069 68.68108 2.89074 2.38157 1.86794 2.66949 2.89121 0.02593 0.01102 75.43356 3.13698 2.63106 2.12118 2.91744 3.13748 0.02640 0.01133 81.92833 3.37619 2.87324 2.36682 3.15821 3.37671 0.02688 0.01164 88.75328 3.63199 3.13196 2.62894 3.41554 3.63254 0.02735 0.01195 95.52649 3.88813 3.39090 2.89115 3.67314 3.88871 0.02779 0.01224 102.10081 4.13969 3.64505 3.14835 3.92606 4.14028 0.02822 0.01252 108.47434 4.38708 3.89486 3.40100 4.17471 4.38770 0.02864 0.01279 114.91882 4.63880 4.14897 3.65792 4.42767 4.63945 0.02907 0.01307 121.48032 4.89978 4.41226 3.92394 4.68984 4.90045 0.02947 0.01333 127.70406 5.14817 4.66282 4.17707 4.93936 5.14886 0.02986 0.01359 133.79224 5.39587 4.91254 4.42919 5.18810 5.39658 0.03025 0.01384 139.91830 5.64591 5.16461 4.68365 5.43919 5.64665 0.03063 0.01410 146.10077 5.90233 5.42299 4.94437 5.69662 5.90309 0.03101 0.01434 152.03314 6.15017 5.67269 5.19628 5.94542 6.15095 0.03136 0.01457 157.69495 6.38865 5.91291 5.43858 6.18479 6.38945 0.03172 0.01481 163.54074 6.63884 6.16484 5.69259 6.43587 6.63966 0.01732 0.00538 -3.01874 0.51503 0.00000 0.00000 0.26313 0.51507 0.01774 0.00564 -2.30858 0.52565 0.00000 0.00000 0.27634 0.52570 0.01836 0.00604 -0.87964 0.55581 0.00694 0.00000 0.31011 0.55589 0.01881 0.00632 0.37808 0.58706 0.03357 0.00000 0.34383 0.58716 0.01928 0.00662 1.91615 0.62856 0.08179 0.00000 0.38781 0.62868 0.01968 0.00688 3.44010 0.67116 0.12775 0.00000 0.43247 0.67130 0.02007 0.00713 5.09726 0.71869 0.17895 0.00000 0.48191 0.71885 0.02049 0.00740 7.08300 0.77691 0.24084 0.00000 0.54208 0.77709 0.02085 0.00763 8.95832 0.83265 0.29967 0.00000 0.59948 0.83285 0.02119 0.00786 10.87030 0.88998 0.35993 0.00000 0.65837 0.89019 0.02147 0.00804 12.57592 0.94193 0.41415 0.00000 0.71152 0.94216 0.02206 0.00842 16.35217 1.05983 0.53674 0.02892 0.83191 1.06009 0.02257 0.00876 19.79765 1.17258 0.65337 0.11902 0.94671 1.17286 0.02314 0.00913 23.88812 1.31063 0.79563 0.27422 1.08698 1.31094 0.02374 0.00952 28.52057 1.46798 0.95722 0.43917 1.24655 1.46832 0.02428 0.00988 32.99973 1.62144 1.11441 0.60103 1.40197 1.62181 0.02484 0.01024 37.79512 1.78740 1.28404 0.77489 1.56985 1.78781 0.02530 0.01055 42.06641 1.93713 1.43673 0.93109 1.72112 1.93756 0.02586 0.01092 47.42271 2.12661 1.62972 1.12823 1.91243 2.12707 0.02636 0.01125 52.33374 2.30204 1.80819 1.31029 2.08944 2.30253 0.02683 0.01156 57.04238 2.47225 1.98111 1.48645 2.26105 2.47276 0.02742 0.01194 63.24893 2.69949 2.21173 1.72110 2.49004 2.70003 0.02797 0.01231 69.26282 2.92235 2.43770 1.95078 2.71450 2.92292 0.02850 0.01266 75.03210 3.13837 2.65658 2.17307 2.93199 3.13898 0.02903 0.01301 81.06882 3.36857 2.88957 2.40942 3.16362 3.36921 0.02955 0.01335 87.04743 3.59868 3.12235 2.64544 3.39510 3.59934 0.03004 0.01368 92.83473 3.82416 3.35033 2.87643 3.62186 3.82486 0.03051 0.01399 98.42773 4.04536 3.57384 3.10274 3.84423 4.04608 0.03098 0.01430 104.07521 4.27016 3.80093 3.33261 4.07020 4.27091 0.03145 0.01461 109.80355 4.50252 4.03551 3.56988 4.30369 4.50330 0.03190 0.01490 115.23309 4.72355 4.25862 3.79552 4.52577 4.72435 0.03233 0.01519 120.52393 4.94328 4.48028 4.01955 4.74648 4.94410 0.03276 0.01547 125.84422 5.16497 4.70391 4.24554 4.96915 5.16582 0.03319 0.01575 131.19695 5.39175 4.93258 4.47651 5.19688 5.39263 0.03360 0.01602 136.32578 5.61071 5.15331 4.69942 5.41673 5.61161 0.03399 0.01628 141.21327 5.82113 5.36540 4.91356 5.62799 5.82205 0.03439 0.01654 146.24440 6.04136 5.58729 5.13751 5.84906 6.04230 0.02105 0.00746 -2.01784 0.44042 0.00000 0.00000 0.22818 0.44049 0.02163 0.00785 -1.31040 0.45422 0.00000 0.00000 0.24409 0.45431 0.02249 0.00844 0.03784 0.48612 0.00665 0.00000 0.27895 0.48626 0.02312 0.00886 1.18018 0.51658 0.03189 0.00000 0.31144 0.51676 0.02377 0.00931 2.53805 0.55523 0.07666 0.00000 0.35212 0.55544 0.02434 0.00970 3.85685 0.59372 0.11803 0.00000 0.39229 0.59396 0.02488 0.01007 5.26350 0.63559 0.16311 0.00000 0.43573 0.63586 0.02546 0.01046 6.91776 0.68576 0.21649 0.00000 0.48751 0.68607 0.02596 0.01080 8.45877 0.73309 0.26651 0.00000 0.53619 0.73342 0.02645 0.01113 10.01546 0.78129 0.31727 0.00000 0.58566 0.78164 0.02683 0.01140 11.37920 0.82418 0.36214 0.00000 0.62954 0.82456 0.02766 0.01196 14.36667 0.92056 0.46262 0.02350 0.72796 0.92099 0.02837 0.01245 17.04381 1.01133 0.55678 0.09642 0.82042 1.01180 0.02917 0.01299 20.16994 1.12097 0.67009 0.22102 0.93187 1.12149 0.03000 0.01356 23.65702 1.24422 0.79705 0.35141 1.05695 1.24479 0.03076 0.01407 26.98315 1.36301 0.91910 0.47786 1.17734 1.36362 0.03154 0.01460 30.49911 1.49008 1.04937 0.61218 1.30598 1.49074 0.03218 0.01504 33.58433 1.60327 1.16515 0.73129 1.42044 1.60396 0.03297 0.01557 37.41702 1.74537 1.31032 0.88040 1.56403 1.74611 0.03366 0.01604 40.89690 1.87586 1.44347 1.01696 1.69582 1.87665 0.03431 0.01647 44.19626 2.00130 1.57129 1.14785 1.82241 2.00212 0.03513 0.01703 48.49745 2.16724 1.74019 1.32057 1.98979 2.16811 0.03590 0.01755 52.62388 2.32865 1.90432 1.48822 2.15251 2.32957 0.03663 0.01804 56.54943 2.48405 2.06222 1.64935 2.30912 2.48502 0.03736 0.01853 60.60110 2.64781 2.22842 1.81872 2.47405 2.64882 0.03808 0.01901 64.58750 2.81063 2.39359 1.98694 2.63800 2.81168 0.03877 0.01947 68.41279 2.96906 2.55421 2.15041 2.79748 2.97016 0.03942 0.01991 72.07294 3.12323 2.71041 2.30925 2.95262 3.12437 0.04007 0.02034 75.75237 3.27937 2.86856 2.47001 3.10972 3.28056 0.04072 0.02078 79.43970 3.43921 3.03034 2.63432 3.27048 3.44043 0.04134 0.02119 82.92653 3.59097 3.18393 2.79030 3.42312 3.59224 0.04193 0.02158 86.28275 3.74038 3.33503 2.94363 3.57333 3.74168 0.04252 0.02197 89.65052 3.89087 3.48723 3.09804 3.72463 3.89221 0.04311 0.02237 93.00562 4.04362 3.64164 3.25461 3.87817 4.04500 0.04368 0.02274 96.20560 4.19058 3.79016 3.40518 4.02586 4.19199 0.04421 0.02310 99.24033 4.33127 3.93231 3.54926 4.16725 4.33272 0.04476 0.02346 102.33412 4.47742 4.07994 3.69881 4.31409 4.47891 0.02594 0.01062 -1.22224 0.37863 0.00000 0.00000 0.19864 0.37876 0.02677 0.01121 -0.53839 0.39402 0.00000 0.00000 0.21577 0.39420 0.02799 0.01208 0.70365 0.42567 0.00615 0.00000 0.24983 0.42592 0.02888 0.01271 1.71942 0.45417 0.02930 0.00000 0.27999 0.45448 0.02981 0.01337 2.89423 0.48903 0.06969 0.00000 0.31652 0.48940 0.03061 0.01394 4.01284 0.52287 0.10602 0.00000 0.35174 0.52329 0.03138 0.01448 5.18311 0.55889 0.14484 0.00000 0.38903 0.55935 0.03220 0.01506 6.53355 0.60118 0.18993 0.00000 0.43264 0.60169 0.03292 0.01556 7.77411 0.64052 0.23163 0.00000 0.47309 0.64108 0.03360 0.01604 9.01538 0.68021 0.27355 0.00000 0.51383 0.68081 0.03415 0.01642 10.08265 0.71492 0.30999 0.00000 0.54935 0.71556 0.03532 0.01724 12.39503 0.79217 0.39083 0.01876 0.62827 0.79288 0.03633 0.01794 14.42817 0.86383 0.46547 0.07673 0.70132 0.86461 0.03745 0.01872 16.76088 0.94921 0.55406 0.17503 0.78819 0.95006 0.03863 0.01953 19.32154 1.04386 0.65195 0.27628 0.88434 1.04479 0.03970 0.02027 21.72888 1.13398 0.74494 0.37332 0.97578 1.13498 0.04078 0.02101 24.23913 1.22930 0.84307 0.47521 1.07240 1.23037 0.04169 0.02163 26.40681 1.31310 0.92914 0.56437 1.15724 1.31423 0.04279 0.02238 29.07261 1.41744 1.03618 0.67506 1.26281 1.41864 0.04377 0.02304 31.46754 1.51244 1.13351 0.77555 1.35888 1.51371 0.04467 0.02365 33.71074 1.60287 1.22604 0.87092 1.45026 1.60420 0.04581 0.02443 36.60027 1.72135 1.34713 0.99554 1.56993 1.72276 0.04689 0.02516 39.34248 1.83562 1.46379 1.11545 1.68528 1.83710 0.04790 0.02584 41.92720 1.94483 1.57520 1.22984 1.79549 1.94638 0.04892 0.02652 44.55514 2.05856 1.69109 1.34866 1.91020 2.06018 0.04992 0.02719 47.12215 2.17101 1.80561 1.46599 2.02358 2.17269 0.05087 0.02782 49.56158 2.27960 1.91614 1.57913 2.13305 2.28135 0.05177 0.02842 51.87003 2.38438 2.02270 1.68812 2.23863 2.38619 0.05267 0.02902 54.17910 2.49009 2.13019 1.79802 2.34513 2.49196 0.05356 0.02961 56.46213 2.59719 2.23901 1.90917 2.45301 2.59913 0.05441 0.03017 58.61531 2.69868 2.34212 2.01446 2.55522 2.70068 0.05522 0.03071 60.65936 2.79756 2.44250 2.11688 2.65477 2.79961 0.05603 0.03125 62.70548 2.89697 2.54342 2.21984 2.75486 2.89908 0.05684 0.03178 64.72136 2.99704 2.64496 2.32337 2.85558 2.99920 0.05762 0.03229 66.63391 3.09295 2.74224 2.42253 2.95210 3.09516 0.05835 0.03277 68.43781 3.18438 2.83498 2.51703 3.04411 3.18665 0.05910 0.03326 70.25642 3.27860 2.93051 2.61431 3.13891 3.28092 0.02956 0.01322 -0.83446 0.34765 0.00000 0.00000 0.18357 0.34785 0.03059 0.01397 -0.17227 0.36338 0.00000 0.00000 0.20085 0.36365 0.03211 0.01507 0.99895 0.39417 0.00580 0.00000 0.23379 0.39453 0.03321 0.01585 1.93775 0.42113 0.02751 0.00000 0.26223 0.42157 0.03436 0.01668 3.00639 0.45351 0.06505 0.00000 0.29608 0.45402 0.03535 0.01738 4.01205 0.48451 0.09835 0.00000 0.32832 0.48508 0.03631 0.01806 5.05210 0.51710 0.13355 0.00000 0.36206 0.51774 0.03732 0.01878 6.23875 0.55496 0.17400 0.00000 0.40109 0.55567 0.03820 0.01940 7.31974 0.58990 0.21112 0.00000 0.43702 0.59067 0.03905 0.01999 8.39509 0.62496 0.24826 0.00000 0.47302 0.62579 0.03972 0.02047 9.30926 0.65532 0.28021 0.00000 0.50409 0.65619 0.04116 0.02147 11.27665 0.72250 0.35072 0.01630 0.57277 0.72347 0.04240 0.02233 12.98622 0.78428 0.41525 0.06654 0.63579 0.78533 0.04378 0.02329 14.92632 0.85727 0.49124 0.15133 0.71012 0.85842 0.04522 0.02428 17.03505 0.93753 0.57451 0.23787 0.79172 0.93878 0.04653 0.02518 18.99973 1.01339 0.65303 0.32022 0.86877 1.01473 0.04786 0.02609 21.03105 1.09308 0.73533 0.40609 0.94962 1.09451 0.04897 0.02684 22.76766 1.16258 0.80695 0.48063 1.02006 1.16409 0.05031 0.02775 24.88993 1.24869 0.89557 0.57271 1.10727 1.25029 0.05150 0.02856 26.78390 1.32667 0.97573 0.65586 1.18622 1.32836 0.05259 0.02929 28.54429 1.40047 1.05148 0.73430 1.26087 1.40223 0.05398 0.03023 30.79484 1.49659 1.15003 0.83618 1.35807 1.49845 0.05529 0.03110 32.91600 1.58880 1.24448 0.93370 1.45125 1.59075 0.05651 0.03192 34.90359 1.67654 1.33427 1.02631 1.53989 1.67857 0.05775 0.03274 36.90509 1.76724 1.42699 1.12179 1.63148 1.76937 0.05895 0.03354 38.85122 1.85661 1.51829 1.21575 1.72169 1.85882 0.06010 0.03430 40.68907 1.94252 1.60601 1.30593 1.80839 1.94481 0.06118 0.03501 42.41593 2.02496 1.69013 1.39234 1.89156 2.02733 0.06227 0.03573 44.13763 2.10795 1.77478 1.47926 1.97527 2.11039 0.06334 0.03643 45.82512 2.19149 1.85993 1.56661 2.05951 2.19401 0.06436 0.03710 47.41388 2.27056 1.94051 1.64925 2.13923 2.27315 0.06533 0.03773 48.90855 2.34708 2.01845 1.72911 2.21637 2.34975 0.06631 0.03836 50.40235 2.42394 2.09673 1.80930 2.29384 2.42668 0.06728 0.03899 51.86338 2.50091 2.17507 1.88951 2.37140 2.50371 0.06820 0.03959 53.24466 2.57449 2.24995 1.96616 2.44554 2.57736 0.06908 0.04016 54.54279 2.64446 2.32115 2.03901 2.51604 2.64740 0.06997 0.04073 55.84184 2.71620 2.39411 2.11363 2.58830 2.71920 0.03267 0.01559 -0.58756 0.32769 0.00000 0.00000 0.17376 0.32797 0.03388 0.01647 0.05630 0.34346 0.00000 0.00000 0.19095 0.34382 0.03566 0.01776 1.17436 0.37338 0.00552 0.00000 0.22286 0.37387 0.03695 0.01869 2.05795 0.39913 0.02615 0.00000 0.24997 0.39970 0.03829 0.01965 3.05237 0.42967 0.06162 0.00000 0.28187 0.43033 0.03945 0.02047 3.98027 0.45864 0.09276 0.00000 0.31199 0.45938 0.04057 0.02126 4.93192 0.48885 0.12544 0.00000 0.34326 0.48967 0.04175 0.02209 6.00877 0.52367 0.16272 0.00000 0.37916 0.52457 0.04277 0.02281 6.98376 0.55562 0.19675 0.00000 0.41203 0.55659 0.04376 0.02351 7.94949 0.58757 0.23066 0.00000 0.44485 0.58861 0.04455 0.02406 8.76364 0.61503 0.25964 0.00000 0.47297 0.61612 0.04622 0.02522 10.50706 0.67556 0.32333 0.01469 0.53489 0.67677 0.04765 0.02621 12.00871 0.73086 0.38126 0.05987 0.59134 0.73217 0.04925 0.02731 13.69887 0.79582 0.44906 0.13587 0.65755 0.79725 0.05092 0.02845 15.52232 0.86681 0.52292 0.21291 0.72978 0.86836 0.05244 0.02949 17.20973 0.93355 0.59219 0.28585 0.79762 0.93521 0.05397 0.03052 18.94313 1.00331 0.66444 0.36152 0.86846 1.00507 0.05525 0.03139 20.41381 1.06378 0.72694 0.42682 0.92982 1.06565 0.05679 0.03243 22.20247 1.13843 0.80399 0.50718 1.00550 1.14040 0.05816 0.03334 23.79060 1.20578 0.87341 0.57946 1.07374 1.20785 0.05941 0.03418 25.25800 1.26922 0.93872 0.64735 1.13799 1.27138 0.06101 0.03524 27.12309 1.35149 1.02332 0.73514 1.22126 1.35377 0.06251 0.03623 28.87161 1.43010 1.10406 0.81882 1.30079 1.43249 0.06391 0.03716 30.50250 1.50465 1.18058 0.89803 1.37617 1.50714 0.06532 0.03809 32.13255 1.58130 1.25915 0.97925 1.45365 1.58389 0.06670 0.03899 33.71178 1.65661 1.33632 1.05895 1.52975 1.65930 0.06800 0.03984 35.19578 1.72876 1.41020 1.13519 1.60264 1.73155 0.06924 0.04064 36.58236 1.79771 1.48076 1.20794 1.67228 1.80059 0.07047 0.04144 37.96121 1.86700 1.55164 1.28098 1.74224 1.86997 0.07169 0.04224 39.30330 1.93641 1.62260 1.35404 1.81230 1.93947 0.07285 0.04298 40.56509 2.00203 1.68968 1.42309 1.87855 2.00518 0.07395 0.04369 41.74358 2.06524 1.75424 1.48948 1.94233 2.06847 0.07506 0.04440 42.91987 2.12866 1.81902 1.55610 2.00633 2.13197 0.07616 0.04510 44.06357 2.19192 1.88360 1.62246 2.07015 2.19531 0.07720 0.04577 45.14175 2.25228 1.94522 1.68575 2.13104 2.25575 0.07819 0.04640 46.15208 2.30957 2.00369 1.74580 2.18882 2.31311 0.07920 0.04704 47.15696 2.36808 2.06337 1.80706 2.24783 2.37169 0.03535 0.01770 -0.41216 0.31337 0.00000 0.00000 0.16665 0.31372 0.03672 0.01870 0.21584 0.32904 0.00000 0.00000 0.18366 0.32948 0.03873 0.02016 1.29104 0.35816 0.00530 0.00000 0.21465 0.35875 0.04019 0.02120 2.13149 0.38289 0.02506 0.00000 0.24067 0.38358 0.04170 0.02228 3.06900 0.41196 0.05887 0.00000 0.27102 0.41276 0.04301 0.02321 3.93799 0.43935 0.08835 0.00000 0.29949 0.44024 0.04426 0.02409 4.82338 0.46774 0.11911 0.00000 0.32888 0.46872 0.04559 0.02503 5.81878 0.50026 0.15400 0.00000 0.36242 0.50134 0.04675 0.02584 6.71569 0.52998 0.18571 0.00000 0.39301 0.53114 0.04786 0.02661 7.60108 0.55961 0.21724 0.00000 0.42346 0.56085 0.04874 0.02722 8.34261 0.58493 0.24402 0.00000 0.44941 0.58624 0.05061 0.02852 9.92426 0.64059 0.30272 0.01351 0.50638 0.64203 0.05222 0.02963 11.27706 0.69118 0.35584 0.05501 0.55806 0.69274 0.05402 0.03085 12.78976 0.75034 0.41774 0.12465 0.61840 0.75203 0.05589 0.03212 14.41224 0.81468 0.48485 0.19488 0.68392 0.81651 0.05758 0.03327 15.90563 0.87492 0.54753 0.26109 0.74520 0.87687 0.05929 0.03442 17.43193 0.93763 0.61266 0.32952 0.80895 0.93971 0.06071 0.03537 18.71915 0.99176 0.66873 0.38829 0.86390 0.99394 0.06243 0.03652 20.27877 1.05836 0.73766 0.46041 0.93149 1.06067 0.06395 0.03753 21.65798 1.11828 0.79958 0.52510 0.99226 1.12070 0.06535 0.03846 22.92638 1.17452 0.85762 0.58563 1.04926 1.17704 0.06712 0.03962 24.53118 1.24720 0.93256 0.66364 1.12290 1.24986 0.06878 0.04071 26.02937 1.31644 1.00386 0.73777 1.19301 1.31922 0.07034 0.04173 27.42168 1.38192 1.07125 0.80776 1.25930 1.38482 0.07190 0.04275 28.80505 1.44896 1.14016 0.87921 1.32712 1.45197 0.07342 0.04374 30.14150 1.51469 1.20769 0.94919 1.39362 1.51782 0.07487 0.04467 31.39242 1.57749 1.27217 1.01595 1.45712 1.58073 0.07623 0.04554 32.55605 1.63733 1.33357 1.07945 1.51761 1.64066 0.07759 0.04642 33.71082 1.69736 1.39515 1.14311 1.57829 1.70080 0.07894 0.04728 34.82860 1.75728 1.45657 1.20655 1.63884 1.76082 0.08021 0.04809 35.87833 1.81388 1.51459 1.26646 1.69604 1.81752 0.08143 0.04886 36.85312 1.86819 1.57021 1.32386 1.75089 1.87192 0.08265 0.04963 37.82508 1.92265 1.62599 1.38140 1.80591 1.92647 0.08385 0.05040 38.76569 1.97680 1.68143 1.43855 1.86059 1.98070 0.08500 0.05112 39.65037 2.02839 1.73424 1.49297 1.91269 2.03238 0.08609 0.05180 40.47744 2.07728 1.78428 1.54453 1.96206 2.08136 0.08720 0.05250 41.29602 2.12706 1.83520 1.59698 2.01232 2.13122 0.04648 0.02690 0.06367 0.27436 0.00000 0.00000 0.14701 0.27512 0.04852 0.02836 0.63440 0.28919 0.00000 0.00000 0.16297 0.29011 0.05151 0.03047 1.56991 0.31525 0.00458 0.00000 0.19061 0.31640 0.05365 0.03197 2.27636 0.33659 0.02154 0.00000 0.21304 0.33791 0.05587 0.03352 3.04236 0.36102 0.05019 0.00000 0.23857 0.36251 0.05779 0.03484 3.73725 0.38356 0.07462 0.00000 0.26203 0.38520 0.05961 0.03609 4.43029 0.40648 0.09967 0.00000 0.28581 0.40827 0.06154 0.03740 5.19315 0.43227 0.12758 0.00000 0.31247 0.43421 0.06321 0.03853 5.86976 0.45552 0.15264 0.00000 0.33647 0.45759 0.06481 0.03961 6.53021 0.47849 0.17731 0.00000 0.36015 0.48068 0.06608 0.04047 7.07142 0.49778 0.19792 0.00000 0.37998 0.50007 0.06877 0.04226 8.21066 0.53975 0.24265 0.01025 0.42309 0.54226 0.07106 0.04378 9.16209 0.57730 0.28250 0.04159 0.46159 0.57999 0.07361 0.04546 10.20235 0.62055 0.32825 0.09373 0.50587 0.62345 0.07625 0.04719 11.29615 0.66687 0.37709 0.14544 0.55323 0.66997 0.07863 0.04873 12.28456 0.70963 0.42209 0.19355 0.59691 0.71292 0.08102 0.05028 13.27709 0.75358 0.46825 0.24263 0.64176 0.75706 0.08300 0.05155 14.09685 0.79092 0.50738 0.28416 0.67984 0.79456 0.08539 0.05308 15.07708 0.83644 0.55503 0.33464 0.72623 0.84026 0.08750 0.05442 15.93171 0.87696 0.59741 0.37946 0.76751 0.88095 0.08942 0.05563 16.70472 0.91456 0.63667 0.42091 0.80579 0.91870 0.09185 0.05716 17.66689 0.96258 0.68678 0.47373 0.85466 0.96692 0.09413 0.05859 18.55168 1.00784 0.73396 0.52341 0.90071 1.01236 0.09625 0.05991 19.36311 1.05027 0.77815 0.56989 0.94385 1.05495 0.09836 0.06122 20.15207 1.09306 0.82269 0.61667 0.98736 1.09791 0.10042 0.06249 20.90635 1.13473 0.86604 0.66217 1.02972 1.13974 0.10237 0.06368 21.60210 1.17416 0.90704 0.70517 1.06979 1.17933 0.10419 0.06480 22.23865 1.21133 0.94566 0.74564 1.10755 1.21663 0.10602 0.06591 22.86542 1.24843 0.98421 0.78602 1.14524 1.25388 0.10781 0.06699 23.45951 1.28497 1.02217 0.82574 1.18236 1.29056 0.10950 0.06802 24.01502 1.31941 1.05793 0.86317 1.21733 1.32513 0.11111 0.06898 24.51949 1.35199 1.09176 0.89854 1.25042 1.35784 0.11272 0.06995 25.02043 1.38459 1.12560 0.93393 1.28353 1.39057 0.11430 0.07090 25.49633 1.41665 1.15888 0.96870 1.31609 1.42275 0.11581 0.07180 25.93983 1.44704 1.19041 1.00166 1.34694 1.45326 0.11724 0.07264 26.35060 1.47569 1.22014 1.03271 1.37603 1.48202 0.11868 0.07350 26.74912 1.50453 1.25007 1.06397 1.40531 1.51097 0.06390 0.04170 0.45209 0.24268 0.00000 0.00000 0.13071 0.24434 0.06695 0.04377 0.95411 0.25598 0.00000 0.00000 0.14503 0.25790 0.07139 0.04675 1.74147 0.27829 0.00383 0.00000 0.16876 0.28058 0.07455 0.04884 2.31503 0.29596 0.01794 0.00000 0.18742 0.29853 0.07781 0.05099 2.91845 0.31569 0.04149 0.00000 0.20815 0.31853 0.08060 0.05280 3.45331 0.33353 0.06113 0.00000 0.22684 0.33662 0.08324 0.05452 3.97453 0.35134 0.08092 0.00000 0.24543 0.35465 0.08603 0.05631 4.53517 0.37100 0.10258 0.00000 0.26590 0.37455 0.08842 0.05784 5.02388 0.38849 0.12177 0.00000 0.28409 0.39225 0.09071 0.05929 5.49497 0.40560 0.14049 0.00000 0.30185 0.40955 0.09252 0.06043 5.87173 0.41971 0.15585 0.00000 0.31647 0.42381 0.09633 0.06282 6.65299 0.45008 0.18884 0.00754 0.34790 0.45451 0.09955 0.06483 7.28743 0.47680 0.21774 0.03049 0.37551 0.48149 0.10311 0.06703 7.96286 0.50707 0.25040 0.06834 0.40675 0.51207 0.10677 0.06928 8.65690 0.53894 0.28468 0.10519 0.43960 0.54424 0.11006 0.07128 9.27060 0.56791 0.31580 0.13900 0.46944 0.57349 0.11334 0.07326 9.87402 0.59725 0.34727 0.17303 0.49965 0.60311 0.11605 0.07488 10.36002 0.62176 0.37351 0.20134 0.52486 0.62784 0.11929 0.07681 10.93195 0.65131 0.40512 0.23540 0.55525 0.65766 0.12213 0.07850 11.42194 0.67731 0.43291 0.26532 0.58198 0.68390 0.12471 0.08002 11.85600 0.70111 0.45833 0.29263 0.60644 0.70791 0.12796 0.08192 12.38530 0.73110 0.49035 0.32700 0.63726 0.73817 0.13098 0.08368 12.86269 0.75903 0.52015 0.35896 0.66595 0.76635 0.13378 0.08530 13.29298 0.78493 0.54779 0.38857 0.69256 0.79248 0.13656 0.08689 13.69954 0.81062 0.57518 0.41789 0.71894 0.81840 0.13925 0.08843 14.08282 0.83542 0.60163 0.44619 0.74441 0.84342 0.14178 0.08987 14.42931 0.85862 0.62637 0.47266 0.76824 0.86683 0.14414 0.09120 14.73909 0.88021 0.64940 0.49727 0.79042 0.88861 0.14649 0.09253 15.04072 0.90164 0.67225 0.52170 0.81243 0.91023 0.14879 0.09381 15.31806 0.92241 0.69441 0.54538 0.83376 0.93119 0.15096 0.09502 15.57573 0.94192 0.71523 0.56763 0.85381 0.95087 0.15300 0.09615 15.80200 0.96008 0.73462 0.58834 0.87247 0.96919 0.15503 0.09728 16.02527 0.97819 0.75396 0.60900 0.89108 0.98747 0.15703 0.09838 16.23133 0.99577 0.77274 0.62907 0.90915 1.00520 0.15893 0.09942 16.42051 1.01232 0.79043 0.64797 0.92616 1.02191 0.16071 0.10040 16.59310 1.02781 0.80700 0.66567 0.94210 1.03754 0.16251 0.10137 16.75499 1.04320 0.82347 0.68327 0.95793 1.05308 0.07897 0.05429 0.64754 0.22686 0.00000 0.00000 0.12250 0.22950 0.08283 0.05680 1.10413 0.23900 0.00000 0.00000 0.13563 0.24199 0.08841 0.06036 1.80146 0.25885 0.00340 0.00000 0.15689 0.26234 0.09235 0.06286 2.29827 0.27429 0.01586 0.00000 0.17331 0.27813 0.09640 0.06540 2.81111 0.29128 0.03650 0.00000 0.19130 0.29548 0.09984 0.06754 3.25907 0.30647 0.05350 0.00000 0.20733 0.31098 0.10310 0.06955 3.68919 0.32145 0.07045 0.00000 0.22309 0.32625 0.10652 0.07164 4.14506 0.33781 0.08880 0.00000 0.24027 0.34291 0.10945 0.07342 4.53802 0.35224 0.10492 0.00000 0.25539 0.35760 0.11224 0.07511 4.91368 0.36627 0.12056 0.00000 0.27008 0.37188 0.11444 0.07643 5.20939 0.37770 0.13325 0.00000 0.28203 0.38350 0.11904 0.07918 5.81637 0.40216 0.16032 0.00619 0.30756 0.40837 0.12293 0.08148 6.29976 0.42344 0.18379 0.02497 0.32974 0.42998 0.12719 0.08398 6.80480 0.44730 0.21004 0.05577 0.35458 0.45421 0.13156 0.08652 7.31562 0.47214 0.23731 0.08544 0.38042 0.47943 0.13547 0.08877 7.76048 0.49449 0.26183 0.11240 0.40366 0.50212 0.13935 0.09099 8.19134 0.51692 0.28640 0.13930 0.42697 0.52488 0.14253 0.09279 8.53212 0.53543 0.30666 0.16145 0.44620 0.54366 0.14633 0.09494 8.92849 0.55759 0.33090 0.18793 0.46921 0.56614 0.14965 0.09679 9.26367 0.57693 0.35206 0.21102 0.48931 0.58577 0.15265 0.09846 9.55594 0.59447 0.37124 0.23192 0.50752 0.60356 0.15641 0.10054 9.90673 0.61638 0.39521 0.25802 0.53028 0.62579 0.15990 0.10245 10.21834 0.63661 0.41733 0.28211 0.55129 0.64631 0.16312 0.10420 10.49530 0.65523 0.43771 0.30428 0.57064 0.66520 0.16629 0.10592 10.75090 0.67348 0.45769 0.32601 0.58960 0.68371 0.16936 0.10757 10.98903 0.69100 0.47688 0.34688 0.60780 0.70148 0.17223 0.10910 11.20058 0.70725 0.49470 0.36626 0.62471 0.71797 0.17490 0.11052 11.38589 0.72224 0.51115 0.38414 0.64029 0.73317 0.17755 0.11192 11.56448 0.73704 0.52741 0.40183 0.65570 0.74820 0.18013 0.11327 11.72408 0.75123 0.54301 0.41880 0.67047 0.76260 0.18256 0.11454 11.87144 0.76453 0.55764 0.43472 0.68432 0.77609 0.18483 0.11572 11.99658 0.77675 0.57112 0.44939 0.69706 0.78850 0.18710 0.11690 12.11925 0.78892 0.58453 0.46400 0.70974 0.80084 0.18931 0.11804 12.22905 0.80060 0.59744 0.47807 0.72194 0.81271 0.19141 0.11911 12.32819 0.81155 0.60955 0.49127 0.73336 0.82382 0.19338 0.12011 12.41711 0.82175 0.62085 0.50358 0.74402 0.83418 0.19535 0.12111 12.49722 0.83177 0.63197 0.51572 0.75449 0.84435 0.09300 0.06565 0.77383 0.21653 0.00000 0.00000 0.11714 0.22023 0.09753 0.06848 1.19575 0.22772 0.00000 0.00000 0.12935 0.23184 0.10405 0.07248 1.82778 0.24572 0.00309 0.00000 0.14879 0.25045 0.10863 0.07526 2.27067 0.25955 0.01440 0.00000 0.16362 0.26470 0.11332 0.07808 2.72135 0.27461 0.03303 0.00000 0.17970 0.28018 0.11730 0.08045 3.11069 0.28795 0.04824 0.00000 0.19391 0.29389 0.12105 0.08267 3.48034 0.30100 0.06327 0.00000 0.20776 0.30728 0.12497 0.08497 3.86770 0.31513 0.07943 0.00000 0.22273 0.32177 0.12832 0.08692 4.19876 0.32752 0.09354 0.00000 0.23584 0.33446 0.13150 0.08877 4.51321 0.33951 0.10716 0.00000 0.24850 0.34673 0.13400 0.09020 4.75768 0.34919 0.11812 0.00000 0.25872 0.35664 0.13923 0.09318 5.25541 0.36981 0.14140 0.00533 0.28044 0.37772 0.14362 0.09566 5.64550 0.38759 0.16141 0.02145 0.29915 0.39590 0.14841 0.09835 6.04674 0.40738 0.18363 0.04780 0.31995 0.41611 0.15331 0.10107 6.44737 0.42779 0.20653 0.07295 0.34140 0.43695 0.15767 0.10346 6.79186 0.44602 0.22697 0.09566 0.36055 0.45556 0.16198 0.10582 7.12131 0.46417 0.24730 0.11817 0.37960 0.47407 0.16550 0.10772 7.37784 0.47901 0.26393 0.13656 0.39519 0.48922 0.16970 0.10997 7.67319 0.49667 0.28372 0.15843 0.41374 0.50724 0.17335 0.11191 7.92008 0.51199 0.30089 0.17740 0.42983 0.52287 0.17664 0.11365 8.13232 0.52578 0.31636 0.19447 0.44432 0.53694 0.18075 0.11581 8.38339 0.54287 0.33556 0.21565 0.46229 0.55438 0.18454 0.11778 8.60325 0.55855 0.35317 0.23508 0.47878 0.57037 0.18804 0.11959 8.79606 0.57289 0.36931 0.25288 0.49387 0.58500 0.19147 0.12134 8.96990 0.58680 0.38499 0.27018 0.50852 0.59920 0.19478 0.12302 9.12995 0.60008 0.39999 0.28674 0.52252 0.61276 0.19785 0.12458 9.26957 0.61233 0.41383 0.30203 0.53543 0.62525 0.20071 0.12601 9.38922 0.62353 0.42653 0.31605 0.54726 0.63669 0.20355 0.12743 9.50322 0.63455 0.43904 0.32988 0.55891 0.64794 0.20629 0.12878 9.60184 0.64501 0.45095 0.34305 0.56997 0.65862 0.20886 0.13006 9.69221 0.65479 0.46209 0.35538 0.58031 0.66860 0.21126 0.13123 9.76586 0.66368 0.47226 0.36666 0.58974 0.67769 0.21366 0.13239 9.83744 0.67252 0.48237 0.37787 0.59911 0.68671 0.21599 0.13352 9.89892 0.68092 0.49203 0.38859 0.60804 0.69530 0.21819 0.13458 9.95315 0.68877 0.50106 0.39863 0.61638 0.70332 0.22025 0.13556 10.00058 0.69604 0.50945 0.40796 0.62411 0.71075 0.22230 0.13654 10.04066 0.70311 0.51764 0.41709 0.63166 0.71798 0.10635 0.07613 0.86483 0.20886 0.00000 0.00000 0.11321 0.21367 0.11147 0.07920 1.25844 0.21926 0.00000 0.00000 0.12466 0.22456 0.11878 0.08354 1.83905 0.23577 0.00286 0.00000 0.14265 0.24176 0.12391 0.08654 2.24046 0.24832 0.01328 0.00000 0.15625 0.25479 0.12914 0.08957 2.64417 0.26189 0.03039 0.00000 0.17086 0.26884 0.13356 0.09210 2.98980 0.27382 0.04425 0.00000 0.18369 0.28119 0.13772 0.09447 3.31491 0.28541 0.05787 0.00000 0.19612 0.29317 0.14204 0.09691 3.65243 0.29788 0.07240 0.00000 0.20946 0.30603 0.14574 0.09898 3.93882 0.30876 0.08504 0.00000 0.22108 0.31724 0.14924 0.10093 4.20938 0.31924 0.09719 0.00000 0.23226 0.32805 0.15198 0.10244 4.41752 0.32765 0.10691 0.00000 0.24122 0.33670 0.15770 0.10558 4.83834 0.34548 0.12746 0.00471 0.26020 0.35504 0.16249 0.10817 5.16349 0.36075 0.14502 0.01894 0.27643 0.37074 0.16770 0.11097 5.49330 0.37762 0.16439 0.04212 0.29436 0.38808 0.17300 0.11379 5.81887 0.39491 0.18421 0.06409 0.31271 0.40583 0.17770 0.11626 6.09564 0.41024 0.20180 0.08383 0.32900 0.42157 0.18233 0.11868 6.35727 0.42539 0.21920 0.10327 0.34510 0.43713 0.18611 0.12063 6.55806 0.43769 0.23333 0.11906 0.35817 0.44975 0.19059 0.12293 6.78704 0.45225 0.25007 0.13777 0.37365 0.46470 0.19448 0.12491 6.97634 0.46482 0.26453 0.15391 0.38702 0.47759 0.19797 0.12667 7.13682 0.47605 0.27748 0.16837 0.39897 0.48911 0.20232 0.12884 7.32393 0.48988 0.29346 0.18622 0.41371 0.50331 0.20632 0.13083 7.48541 0.50248 0.30806 0.20252 0.42715 0.51625 0.21000 0.13263 7.62505 0.51395 0.32136 0.21739 0.43940 0.52802 0.21359 0.13438 7.74784 0.52497 0.33420 0.23174 0.45118 0.53934 0.21705 0.13605 7.85938 0.53546 0.34643 0.24543 0.46240 0.55010 0.22025 0.13759 7.95468 0.54505 0.35766 0.25802 0.47269 0.55995 0.22322 0.13900 8.03423 0.55377 0.36790 0.26951 0.48205 0.56891 0.22616 0.14039 8.10897 0.56231 0.37797 0.28080 0.49124 0.57769 0.22899 0.14171 8.17094 0.57034 0.38748 0.29150 0.49989 0.58594 0.23165 0.14295 8.22716 0.57784 0.39636 0.30149 0.50797 0.59364 0.23411 0.14409 8.27034 0.58458 0.40441 0.31057 0.51526 0.60058 0.23657 0.14522 8.31176 0.59127 0.41240 0.31959 0.52249 0.60745 0.23895 0.14630 8.34504 0.59757 0.41998 0.32817 0.52934 0.61394 0.24119 0.14731 8.37319 0.60343 0.42704 0.33617 0.53570 0.61997 0.24328 0.14826 8.39666 0.60883 0.43359 0.34359 0.54158 0.62553 0.24537 0.14919 8.41393 0.61403 0.43993 0.35081 0.54727 0.63089 0.13178 0.09521 0.98984 0.19752 0.00000 0.00000 0.10751 0.20468 0.13785 0.09863 1.33841 0.20662 0.00000 0.00000 0.11774 0.21438 0.14647 0.10341 1.84031 0.22079 0.00251 0.00000 0.13351 0.22937 0.15247 0.10670 2.17989 0.23140 0.01163 0.00000 0.14524 0.24055 0.15855 0.10998 2.51496 0.24271 0.02650 0.00000 0.15769 0.25245 0.16366 0.11272 2.79764 0.25256 0.03841 0.00000 0.16850 0.26278 0.16844 0.11526 3.05955 0.26203 0.04999 0.00000 0.17886 0.27269 0.17339 0.11787 3.32727 0.27209 0.06223 0.00000 0.18987 0.28321 0.17760 0.12006 3.55174 0.28080 0.07278 0.00000 0.19937 0.29231 0.18159 0.12213 3.76188 0.28915 0.08288 0.00000 0.20847 0.30102 0.18468 0.12372 3.92069 0.29576 0.09087 0.00000 0.21568 0.30791 0.19112 0.12700 4.23784 0.30968 0.10765 0.00386 0.23083 0.32241 0.19647 0.12969 4.47668 0.32148 0.12185 0.01549 0.24366 0.33468 0.20226 0.13257 4.71274 0.33436 0.13734 0.03434 0.25767 0.34808 0.20811 0.13544 4.94101 0.34739 0.15304 0.05202 0.27185 0.36162 0.21326 0.13795 5.13095 0.35881 0.16683 0.06775 0.28428 0.37348 0.21832 0.14038 5.30655 0.36997 0.18033 0.08312 0.29645 0.38508 0.22241 0.14232 5.43753 0.37890 0.19118 0.09547 0.30621 0.39435 0.22724 0.14460 5.58404 0.38938 0.20394 0.11001 0.31767 0.40524 0.23141 0.14654 5.70241 0.39833 0.21488 0.12247 0.32747 0.41453 0.23514 0.14826 5.79980 0.40624 0.22458 0.13353 0.33615 0.42274 0.23974 0.15036 5.90975 0.41586 0.23644 0.14708 0.34673 0.43274 0.24396 0.15227 6.00147 0.42452 0.24717 0.15935 0.35628 0.44174 0.24781 0.15399 6.07812 0.43233 0.25689 0.17047 0.36490 0.44985 0.25155 0.15564 6.14126 0.43970 0.26614 0.18110 0.37307 0.45751 0.25513 0.15720 6.19655 0.44664 0.27490 0.19117 0.38079 0.46474 0.25843 0.15863 6.24096 0.45292 0.28288 0.20036 0.38780 0.47127 0.26147 0.15993 6.27500 0.45854 0.29008 0.20868 0.39409 0.47712 0.26446 0.16120 6.30542 0.46402 0.29713 0.21683 0.40024 0.48282 0.26733 0.16240 6.32666 0.46906 0.30370 0.22446 0.40593 0.48807 0.27001 0.16351 6.34504 0.47374 0.30982 0.23158 0.41122 0.49295 0.27247 0.16452 6.35503 0.47786 0.31529 0.23797 0.41592 0.49725 0.27493 0.16553 6.36371 0.48193 0.32070 0.24430 0.42056 0.50150 0.27729 0.16648 6.36682 0.48570 0.32578 0.25027 0.42488 0.50543 0.27950 0.16736 6.36730 0.48916 0.33048 0.25581 0.42887 0.50905 0.28157 0.16818 6.36555 0.49231 0.33481 0.26092 0.43252 0.51235 0.28361 0.16897 6.35921 0.49529 0.33896 0.26584 0.43599 0.51546 0.16783 0.12049 1.10349 0.18514 0.00000 0.00000 0.10154 0.19605 0.17496 0.12417 1.40133 0.19273 0.00000 0.00000 0.11039 0.20434 0.18498 0.12927 1.81865 0.20430 0.00215 0.00000 0.12373 0.21688 0.19189 0.13273 2.09392 0.21282 0.00992 0.00000 0.13349 0.22605 0.19884 0.13616 2.35940 0.22177 0.02250 0.00000 0.14371 0.23567 0.20465 0.13900 2.57953 0.22947 0.03245 0.00000 0.15246 0.24391 0.21004 0.14161 2.77975 0.23678 0.04201 0.00000 0.16075 0.25170 0.21559 0.14426 2.98059 0.24444 0.05200 0.00000 0.16945 0.25988 0.22029 0.14648 3.14650 0.25101 0.06055 0.00000 0.17689 0.26687 0.22471 0.14856 3.30002 0.25725 0.06867 0.00000 0.18396 0.27351 0.22812 0.15014 3.41344 0.26213 0.07500 0.00000 0.18948 0.27868 0.23518 0.15339 3.63619 0.27232 0.08824 0.00307 0.20101 0.28948 0.24099 0.15602 3.79790 0.28082 0.09930 0.01226 0.21063 0.29849 0.24723 0.15881 3.95170 0.28998 0.11123 0.02708 0.22100 0.30817 0.25348 0.16155 4.09601 0.29908 0.12316 0.04080 0.23135 0.31780 0.25894 0.16392 4.21218 0.30694 0.13352 0.05289 0.24030 0.32610 0.26425 0.16619 4.31579 0.31450 0.14356 0.06459 0.24894 0.33409 0.26851 0.16798 4.38941 0.32043 0.15151 0.07387 0.25575 0.34036 0.27350 0.17005 4.46891 0.32731 0.16078 0.08472 0.26367 0.34762 0.27778 0.17180 4.53038 0.33309 0.16865 0.09394 0.27036 0.35374 0.28158 0.17333 4.57793 0.33811 0.17555 0.10205 0.27619 0.35904 0.28623 0.17517 4.62784 0.34411 0.18389 0.11188 0.28321 0.36539 0.29044 0.17682 4.66607 0.34942 0.19136 0.12071 0.28945 0.37100 0.29427 0.17830 4.69505 0.35413 0.19805 0.12864 0.29501 0.37598 0.29794 0.17968 4.71405 0.35844 0.20433 0.13612 0.30017 0.38055 0.30143 0.18097 4.72815 0.36246 0.21022 0.14317 0.30499 0.38480 0.30463 0.18214 4.73589 0.36601 0.21553 0.14954 0.30929 0.38857 0.30754 0.18318 4.73776 0.36910 0.22026 0.15525 0.31309 0.39185 0.31040 0.18420 4.73714 0.37207 0.22485 0.16081 0.31676 0.39501 0.31310 0.18513 4.73059 0.37471 0.22906 0.16595 0.32007 0.39782 0.31562 0.18599 4.72330 0.37715 0.23298 0.17073 0.32313 0.40041 0.31790 0.18675 4.71144 0.37920 0.23640 0.17496 0.32576 0.40259 0.32017 0.18750 4.69870 0.38120 0.23978 0.17914 0.32835 0.40473 0.32232 0.18820 4.68260 0.38297 0.24290 0.18304 0.33070 0.40663 0.32434 0.18883 4.66572 0.38457 0.24577 0.18663 0.33283 0.40834 0.32620 0.18942 4.64838 0.38599 0.24838 0.18992 0.33476 0.40986 0.32802 0.18997 4.62798 0.38725 0.25084 0.19305 0.33652 0.41122 0.22412 0.15649 1.20120 0.16927 0.00000 0.00000 0.09436 0.18671 0.23231 0.16021 1.43826 0.17501 0.00000 0.00000 0.10153 0.19322 0.24367 0.16526 1.75920 0.18353 0.00175 0.00000 0.11207 0.20278 0.25140 0.16863 1.96381 0.18968 0.00804 0.00000 0.11961 0.20962 0.25909 0.17192 2.15502 0.19603 0.01814 0.00000 0.12736 0.21665 0.26545 0.17460 2.30986 0.20139 0.02600 0.00000 0.13390 0.22256 0.27130 0.17704 2.44713 0.20639 0.03345 0.00000 0.13999 0.22805 0.27727 0.17947 2.58111 0.21155 0.04113 0.00000 0.14628 0.23370 0.28227 0.18149 2.68940 0.21590 0.04762 0.00000 0.15159 0.23846 0.28695 0.18336 2.78787 0.21999 0.05374 0.00000 0.15659 0.24293 0.29051 0.18475 2.85809 0.22312 0.05844 0.00000 0.16042 0.24634 0.29783 0.18758 2.99216 0.22958 0.06817 0.00228 0.16833 0.25336 0.30378 0.18983 3.08313 0.23486 0.07618 0.00909 0.17482 0.25908 0.31008 0.19215 3.16323 0.24042 0.08469 0.01997 0.18168 0.26509 0.31630 0.19439 3.23390 0.24579 0.09306 0.02991 0.18837 0.27090 0.32167 0.19627 3.28666 0.25031 0.10022 0.03855 0.19404 0.27578 0.32682 0.19803 3.32961 0.25453 0.10705 0.04680 0.19941 0.28034 0.33087 0.19936 3.35604 0.25774 0.11237 0.05325 0.20353 0.28380 0.33558 0.20089 3.38128 0.26136 0.11849 0.06072 0.20824 0.28770 0.33956 0.20214 3.39747 0.26432 0.12362 0.06700 0.21214 0.29090 0.34304 0.20320 3.40621 0.26680 0.12805 0.07245 0.21546 0.29357 0.34724 0.20443 3.41038 0.26965 0.13332 0.07898 0.21935 0.29664 0.35099 0.20550 3.40871 0.27207 0.13797 0.08477 0.22272 0.29926 0.35435 0.20642 3.40283 0.27413 0.14207 0.08992 0.22566 0.30148 0.35750 0.20723 3.39065 0.27589 0.14583 0.09470 0.22827 0.30338 0.36046 0.20797 3.37616 0.27746 0.14932 0.09915 0.23065 0.30507 0.36312 0.20860 3.35912 0.27876 0.15241 0.10313 0.23271 0.30648 0.36550 0.20913 3.33993 0.27980 0.15511 0.10665 0.23445 0.30761 0.36781 0.20963 3.31934 0.28076 0.15770 0.11005 0.23610 0.30864 0.36994 0.21005 3.29574 0.28149 0.16002 0.11314 0.23749 0.30944 0.37191 0.21043 3.27287 0.28214 0.16215 0.11599 0.23877 0.31014 0.37365 0.21072 3.24853 0.28257 0.16396 0.11847 0.23977 0.31061 0.37537 0.21100 3.22371 0.28297 0.16574 0.12091 0.24074 0.31104 0.37695 0.21123 3.19742 0.28322 0.16733 0.12314 0.24155 0.31132 0.37841 0.21142 3.17165 0.28339 0.16877 0.12518 0.24225 0.31152 0.37975 0.21158 3.14663 0.28350 0.17006 0.12703 0.24285 0.31164 0.38101 0.21169 3.11993 0.28349 0.17123 0.12876 0.24332 0.31163 0.27668 0.18694 1.24278 0.15581 0.00000 0.00000 0.08861 0.17977 0.28532 0.19038 1.43558 0.16019 0.00000 0.00000 0.09453 0.18488 0.29714 0.19496 1.68932 0.16657 0.00147 0.00000 0.10306 0.19221 0.30509 0.19795 1.84630 0.17109 0.00676 0.00000 0.10906 0.19736 0.31291 0.20083 1.98881 0.17569 0.01519 0.00000 0.11514 0.20255 0.31932 0.20313 2.10178 0.17952 0.02167 0.00000 0.12021 0.20685 0.32516 0.20519 2.19951 0.18303 0.02775 0.00000 0.12486 0.21077 0.33105 0.20720 2.29238 0.18659 0.03394 0.00000 0.12959 0.21472 0.33595 0.20884 2.36580 0.18955 0.03913 0.00000 0.13354 0.21801 0.34050 0.21035 2.43134 0.19230 0.04400 0.00000 0.13724 0.22105 0.34393 0.21144 2.47630 0.19436 0.04769 0.00000 0.14002 0.22332 0.35090 0.21361 2.55922 0.19856 0.05527 0.00180 0.14571 0.22793 0.35649 0.21529 2.61046 0.20191 0.06144 0.00715 0.15029 0.23160 0.36232 0.21696 2.65025 0.20535 0.06791 0.01565 0.15505 0.23534 0.36799 0.21850 2.68156 0.20858 0.07419 0.02332 0.15960 0.23883 0.37280 0.21975 2.70123 0.21119 0.07950 0.02992 0.16338 0.24166 0.37735 0.22086 2.71324 0.21355 0.08450 0.03616 0.16687 0.24419 0.38085 0.22165 2.71630 0.21524 0.08833 0.04099 0.16947 0.24601 0.38487 0.22251 2.71519 0.21709 0.09270 0.04652 0.17239 0.24798 0.38821 0.22318 2.70988 0.21853 0.09632 0.05114 0.17476 0.24951 0.39108 0.22369 2.70071 0.21966 0.09940 0.05511 0.17671 0.25071 0.39446 0.22423 2.68439 0.22085 0.10301 0.05982 0.17892 0.25196 0.39743 0.22465 2.66537 0.22178 0.10615 0.06395 0.18077 0.25292 0.40003 0.22496 2.64480 0.22249 0.10889 0.06759 0.18233 0.25365 0.40239 0.22516 2.62016 0.22297 0.11134 0.07092 0.18362 0.25412 0.40457 0.22530 2.59458 0.22333 0.11360 0.07400 0.18476 0.25446 0.40648 0.22537 2.56838 0.22353 0.11555 0.07673 0.18569 0.25464 0.40812 0.22538 2.54187 0.22358 0.11723 0.07910 0.18640 0.25465 0.40970 0.22535 2.51457 0.22358 0.11882 0.08139 0.18705 0.25460 0.41108 0.22524 2.48582 0.22341 0.12020 0.08343 0.18751 0.25437 0.41235 0.22513 2.45838 0.22323 0.12146 0.08531 0.18792 0.25413 0.41340 0.22495 2.43097 0.22292 0.12249 0.08691 0.18815 0.25375 0.41442 0.22477 2.40329 0.22259 0.12350 0.08847 0.18836 0.25335 0.41532 0.22454 2.37511 0.22216 0.12436 0.08989 0.18845 0.25284 0.41611 0.22429 2.34795 0.22171 0.12513 0.09116 0.18848 0.25231 0.41682 0.22404 2.32200 0.22125 0.12580 0.09231 0.18847 0.25177 0.41742 0.22374 2.29513 0.22069 0.12638 0.09336 0.18837 0.25112 0.37195 0.23566 1.24887 0.13215 0.00000 0.00000 0.07878 0.16795 0.38023 0.23802 1.37994 0.13471 0.00000 0.00000 0.08292 0.17092 0.39125 0.24097 1.54382 0.13829 0.00111 0.00000 0.08869 0.17498 0.39847 0.24278 1.63924 0.14076 0.00506 0.00000 0.09264 0.17771 0.40538 0.24440 1.72061 0.14319 0.01130 0.00000 0.09654 0.18036 0.41094 0.24561 1.78220 0.14515 0.01600 0.00000 0.09971 0.18245 0.41587 0.24661 1.83251 0.14686 0.02034 0.00000 0.10255 0.18428 0.42072 0.24750 1.87722 0.14853 0.02468 0.00000 0.10536 0.18602 0.42467 0.24816 1.91048 0.14988 0.02827 0.00000 0.10765 0.18739 0.42828 0.24872 1.93860 0.15109 0.03161 0.00000 0.10976 0.18862 0.43090 0.24906 1.95558 0.15194 0.03409 0.00000 0.11129 0.18947 0.43612 0.24965 1.98279 0.15361 0.03913 0.00122 0.11436 0.19109 0.44013 0.24996 1.99219 0.15485 0.04314 0.00483 0.11675 0.19225 0.44413 0.25013 1.99093 0.15600 0.04727 0.01053 0.11912 0.19329 0.44783 0.25011 1.98338 0.15694 0.05119 0.01557 0.12127 0.19406 0.45080 0.24996 1.97135 0.15758 0.05443 0.01983 0.12296 0.19452 0.45345 0.24966 1.95471 0.15803 0.05741 0.02381 0.12442 0.19476 0.45533 0.24930 1.93701 0.15822 0.05964 0.02682 0.12542 0.19476 0.45736 0.24876 1.91318 0.15831 0.06213 0.03023 0.12647 0.19460 0.45894 0.24821 1.88998 0.15828 0.06415 0.03304 0.12724 0.19433 0.46015 0.24762 1.86662 0.15812 0.06583 0.03541 0.12780 0.19395 0.46142 0.24678 1.83491 0.15778 0.06774 0.03817 0.12833 0.19330 0.46239 0.24591 1.80364 0.15734 0.06936 0.04056 0.12868 0.19256 0.46312 0.24503 1.77332 0.15683 0.07073 0.04264 0.12889 0.19176 0.46358 0.24406 1.74145 0.15619 0.07190 0.04448 0.12894 0.19081 0.46390 0.24307 1.70996 0.15550 0.07294 0.04617 0.12891 0.18982 0.46404 0.24208 1.67958 0.15478 0.07381 0.04763 0.12878 0.18880 0.46403 0.24109 1.65051 0.15402 0.07452 0.04888 0.12857 0.18776 0.46394 0.24009 1.62129 0.15323 0.07518 0.05006 0.12832 0.18668 0.46367 0.23903 1.59215 0.15236 0.07570 0.05108 0.12797 0.18553 0.46338 0.23803 1.56462 0.15153 0.07616 0.05202 0.12762 0.18442 0.46295 0.23702 1.53838 0.15068 0.07650 0.05279 0.12720 0.18330 0.46249 0.23600 1.51208 0.14981 0.07682 0.05353 0.12677 0.18216 0.46192 0.23496 1.48615 0.14890 0.07705 0.05418 0.12627 0.18098 0.46133 0.23395 1.46153 0.14801 0.07724 0.05475 0.12578 0.17983 0.46071 0.23298 1.43833 0.14716 0.07739 0.05526 0.12529 0.17873 0.45999 0.23197 1.41495 0.14625 0.07747 0.05570 0.12474 0.17757 0.45485 0.27190 1.20817 0.11153 0.00000 0.00000 0.07006 0.15644 0.46165 0.27284 1.29788 0.11300 0.00000 0.00000 0.07299 0.15781 0.47037 0.27374 1.40401 0.11496 0.00087 0.00000 0.07694 0.15952 0.47585 0.27409 1.46130 0.11626 0.00395 0.00000 0.07957 0.16059 0.48090 0.27421 1.50601 0.11748 0.00877 0.00000 0.08211 0.16152 0.48480 0.27415 1.53756 0.11841 0.01235 0.00000 0.08412 0.16217 0.48813 0.27394 1.56088 0.11917 0.01561 0.00000 0.08586 0.16264 0.49124 0.27357 1.57890 0.11985 0.01883 0.00000 0.08753 0.16299 0.49366 0.27316 1.59037 0.12036 0.02147 0.00000 0.08886 0.16318 0.49579 0.27270 1.59852 0.12078 0.02389 0.00000 0.09006 0.16330 0.49722 0.27223 1.60106 0.12102 0.02566 0.00000 0.09089 0.16329 0.49991 0.27114 1.60015 0.12145 0.02923 0.00089 0.09251 0.16315 0.50174 0.27006 1.58946 0.12166 0.03203 0.00349 0.09369 0.16287 0.50330 0.26869 1.56951 0.12174 0.03485 0.00757 0.09480 0.16238 0.50445 0.26712 1.54510 0.12164 0.03748 0.01112 0.09570 0.16165 0.50513 0.26559 1.52003 0.12139 0.03962 0.01409 0.09632 0.16084 0.50546 0.26394 1.49227 0.12100 0.04154 0.01682 0.09677 0.15987 0.50542 0.26248 1.46720 0.12056 0.04294 0.01886 0.09699 0.15894 0.50514 0.26064 1.43582 0.11994 0.04448 0.02114 0.09714 0.15772 0.50469 0.25897 1.40720 0.11932 0.04570 0.02300 0.09716 0.15656 0.50406 0.25737 1.38010 0.11867 0.04669 0.02454 0.09708 0.15542 0.50301 0.25527 1.34508 0.11775 0.04778 0.02632 0.09687 0.15388 0.50181 0.25326 1.31184 0.11682 0.04867 0.02783 0.09656 0.15236 0.50053 0.25134 1.28056 0.11590 0.04940 0.02912 0.09621 0.15090 0.49901 0.24935 1.24903 0.11490 0.04999 0.03024 0.09574 0.14934 0.49741 0.24739 1.21840 0.11389 0.05049 0.03126 0.09524 0.14780 0.49576 0.24550 1.18953 0.11289 0.05089 0.03212 0.09471 0.14629 0.49407 0.24369 1.16253 0.11191 0.05118 0.03284 0.09416 0.14484 0.49232 0.24187 1.13566 0.11091 0.05144 0.03352 0.09358 0.14337 0.49043 0.24003 1.10952 0.10989 0.05161 0.03408 0.09294 0.14188 0.48863 0.23830 1.08494 0.10891 0.05175 0.03459 0.09233 0.14047 0.48678 0.23662 1.06203 0.10795 0.05181 0.03499 0.09171 0.13910 0.48490 0.23494 1.03917 0.10699 0.05186 0.03538 0.09107 0.13773 0.48295 0.23325 1.01699 0.10601 0.05186 0.03570 0.09041 0.13635 0.48105 0.23164 0.99611 0.10507 0.05184 0.03597 0.08976 0.13502 0.47921 0.23011 0.97655 0.10418 0.05180 0.03621 0.08914 0.13377 0.47726 0.22854 0.95715 0.10326 0.05171 0.03640 0.08849 0.13248 0.52585 0.29829 1.14835 0.09372 0.00000 0.00000 0.06207 0.14436 0.53047 0.29769 1.20858 0.09454 0.00000 0.00000 0.06413 0.14452 0.53595 0.29639 1.27488 0.09556 0.00070 0.00000 0.06682 0.14452 0.53910 0.29522 1.30665 0.09618 0.00315 0.00000 0.06855 0.14440 0.54171 0.29379 1.32748 0.09672 0.00698 0.00000 0.07018 0.14413 0.54352 0.29243 1.33988 0.09707 0.00978 0.00000 0.07142 0.14379 0.54484 0.29102 1.34640 0.09731 0.01230 0.00000 0.07246 0.14335 0.54584 0.28940 1.34821 0.09745 0.01477 0.00000 0.07341 0.14277 0.54644 0.28793 1.34673 0.09750 0.01676 0.00000 0.07413 0.14220 0.54684 0.28647 1.34320 0.09751 0.01858 0.00000 0.07476 0.14160 0.54689 0.28523 1.33756 0.09744 0.01990 0.00000 0.07517 0.14106 0.54669 0.28254 1.32113 0.09723 0.02252 0.00067 0.07591 0.13983 0.54608 0.28014 1.29999 0.09694 0.02454 0.00261 0.07639 0.13867 0.54497 0.27735 1.27100 0.09650 0.02656 0.00565 0.07675 0.13727 0.54338 0.27436 1.23895 0.09590 0.02839 0.00826 0.07695 0.13569 0.54161 0.27159 1.20844 0.09526 0.02986 0.01041 0.07698 0.13416 0.53953 0.26873 1.17655 0.09451 0.03115 0.01237 0.07688 0.13254 0.53751 0.26629 1.14924 0.09381 0.03206 0.01381 0.07669 0.13112 0.53489 0.26332 1.11599 0.09291 0.03305 0.01541 0.07638 0.12935 0.53240 0.26067 1.08648 0.09207 0.03382 0.01670 0.07603 0.12775 0.52993 0.25821 1.05931 0.09124 0.03442 0.01775 0.07564 0.12625 0.52659 0.25507 1.02502 0.09014 0.03506 0.01895 0.07507 0.12430 0.52330 0.25210 0.99312 0.08907 0.03556 0.01995 0.07448 0.12244 0.52010 0.24931 0.96359 0.08804 0.03595 0.02080 0.07387 0.12068 0.51669 0.24649 0.93451 0.08696 0.03623 0.02152 0.07320 0.11889 0.51329 0.24374 0.90655 0.08589 0.03646 0.02216 0.07251 0.11714 0.50997 0.24113 0.88056 0.08486 0.03662 0.02270 0.07183 0.11548 0.50674 0.23866 0.85659 0.08387 0.03672 0.02313 0.07115 0.11389 0.50347 0.23620 0.83290 0.08287 0.03678 0.02353 0.07046 0.11231 0.50012 0.23376 0.81021 0.08187 0.03679 0.02386 0.06975 0.11075 0.49695 0.23146 0.78895 0.08092 0.03678 0.02415 0.06907 0.10927 0.49384 0.22927 0.76942 0.08000 0.03673 0.02436 0.06840 0.10786 0.49070 0.22708 0.74999 0.07908 0.03667 0.02457 0.06772 0.10645 0.48754 0.22491 0.73135 0.07817 0.03657 0.02472 0.06704 0.10506 0.48450 0.22285 0.71388 0.07729 0.03646 0.02485 0.06638 0.10374 0.48160 0.22090 0.69762 0.07646 0.03635 0.02496 0.06575 0.10250 0.47860 0.21893 0.68165 0.07562 0.03620 0.02503 0.06510 0.10123 0.59868 0.32011 1.06386 0.07527 0.00000 0.00000 0.05297 0.12840 0.59997 0.31758 1.09774 0.07564 0.00000 0.00000 0.05426 0.12748 0.60065 0.31357 1.12948 0.07601 0.00054 0.00000 0.05587 0.12600 0.60042 0.31055 1.13979 0.07618 0.00243 0.00000 0.05686 0.12487 0.59958 0.30728 1.14113 0.07626 0.00536 0.00000 0.05773 0.12362 0.59847 0.30439 1.13826 0.07624 0.00747 0.00000 0.05835 0.12248 0.59704 0.30156 1.13174 0.07613 0.00935 0.00000 0.05883 0.12132 0.59518 0.29850 1.12133 0.07594 0.01116 0.00000 0.05921 0.12003 0.59335 0.29582 1.11030 0.07572 0.01261 0.00000 0.05947 0.11888 0.59143 0.29322 1.09835 0.07547 0.01392 0.00000 0.05967 0.11775 0.58969 0.29112 1.08708 0.07522 0.01485 0.00000 0.05975 0.11682 0.58575 0.28665 1.06035 0.07464 0.01669 0.00048 0.05985 0.11482 0.58203 0.28279 1.03292 0.07407 0.01809 0.00188 0.05982 0.11307 0.57755 0.27847 0.99918 0.07336 0.01945 0.00404 0.05967 0.11107 0.57257 0.27395 0.96370 0.07252 0.02066 0.00588 0.05939 0.10895 0.56781 0.26986 0.93132 0.07170 0.02160 0.00738 0.05903 0.10699 0.56280 0.26574 0.89862 0.07081 0.02242 0.00872 0.05859 0.10499 0.55844 0.26231 0.87159 0.07001 0.02297 0.00969 0.05815 0.10331 0.55304 0.25818 0.83931 0.06903 0.02355 0.01076 0.05757 0.10127 0.54817 0.25455 0.81122 0.06813 0.02399 0.01160 0.05702 0.09947 0.54358 0.25123 0.78590 0.06728 0.02431 0.01229 0.05647 0.09781 0.53764 0.24705 0.75454 0.06617 0.02463 0.01305 0.05572 0.09572 0.53197 0.24315 0.72583 0.06511 0.02487 0.01368 0.05499 0.09376 0.52661 0.23953 0.69962 0.06411 0.02504 0.01420 0.05428 0.09193 0.52112 0.23592 0.67432 0.06309 0.02513 0.01463 0.05354 0.09012 0.51575 0.23243 0.65020 0.06209 0.02518 0.01500 0.05280 0.08836 0.51061 0.22915 0.62806 0.06114 0.02520 0.01531 0.05208 0.08671 0.50572 0.22609 0.60790 0.06024 0.02517 0.01555 0.05139 0.08517 0.50082 0.22304 0.58808 0.05933 0.02513 0.01577 0.05070 0.08364 0.49593 0.22006 0.56938 0.05844 0.02505 0.01593 0.05000 0.08214 0.49131 0.21726 0.55191 0.05760 0.02496 0.01607 0.04935 0.08074 0.48689 0.21462 0.53609 0.05679 0.02485 0.01617 0.04871 0.07943 0.48245 0.21199 0.52038 0.05599 0.02474 0.01626 0.04807 0.07811 0.47804 0.20941 0.50547 0.05520 0.02460 0.01631 0.04744 0.07683 0.47384 0.20697 0.49157 0.05445 0.02446 0.01636 0.04684 0.07562 0.46986 0.20467 0.47869 0.05374 0.02432 0.01639 0.04626 0.07449 0.46581 0.20236 0.46618 0.05303 0.02417 0.01639 0.04568 0.07335 0.65473 0.33177 0.97748 0.06071 0.00000 0.00000 0.04481 0.11187 0.65236 0.32742 0.99261 0.06084 0.00000 0.00000 0.04559 0.11028 0.64786 0.32092 1.00061 0.06088 0.00042 0.00000 0.04648 0.10789 0.64405 0.31622 0.99668 0.06082 0.00190 0.00000 0.04698 0.10616 0.63962 0.31129 0.98553 0.06067 0.00417 0.00000 0.04737 0.10435 0.63550 0.30704 0.97317 0.06047 0.00580 0.00000 0.04761 0.10277 0.63128 0.30298 0.95882 0.06020 0.00722 0.00000 0.04775 0.10123 0.62655 0.29867 0.94136 0.05986 0.00857 0.00000 0.04780 0.09958 0.62229 0.29495 0.92503 0.05952 0.00965 0.00000 0.04779 0.09815 0.61809 0.29138 0.90855 0.05917 0.01061 0.00000 0.04774 0.09676 0.61460 0.28855 0.89445 0.05885 0.01129 0.00000 0.04765 0.09566 0.60704 0.28260 0.86291 0.05813 0.01261 0.00035 0.04739 0.09332 0.60036 0.27755 0.83316 0.05747 0.01359 0.00138 0.04710 0.09133 0.59272 0.27199 0.79839 0.05667 0.01453 0.00296 0.04669 0.08912 0.58458 0.26626 0.76283 0.05578 0.01535 0.00429 0.04617 0.08682 0.57708 0.26114 0.73117 0.05493 0.01597 0.00535 0.04564 0.08476 0.56943 0.25604 0.69988 0.05403 0.01649 0.00630 0.04506 0.08269 0.56296 0.25185 0.67459 0.05326 0.01682 0.00697 0.04452 0.08098 0.55511 0.24685 0.64477 0.05230 0.01717 0.00770 0.04385 0.07894 0.54815 0.24250 0.61917 0.05145 0.01742 0.00828 0.04323 0.07716 0.54172 0.23855 0.59645 0.05065 0.01758 0.00873 0.04264 0.07554 0.53355 0.23362 0.56867 0.04963 0.01774 0.00923 0.04187 0.07352 0.52587 0.22907 0.54354 0.04867 0.01783 0.00963 0.04114 0.07166 0.51870 0.22486 0.52082 0.04776 0.01788 0.00996 0.04043 0.06994 0.51150 0.22072 0.49922 0.04685 0.01787 0.01023 0.03972 0.06826 0.50450 0.21674 0.47878 0.04596 0.01785 0.01045 0.03901 0.06664 0.49789 0.21302 0.46018 0.04513 0.01780 0.01063 0.03835 0.06513 0.49168 0.20957 0.44341 0.04434 0.01772 0.01076 0.03771 0.06374 0.48548 0.20615 0.42701 0.04356 0.01764 0.01088 0.03708 0.06236 0.47938 0.20283 0.41171 0.04279 0.01753 0.01096 0.03645 0.06103 0.47363 0.19972 0.39744 0.04207 0.01742 0.01102 0.03586 0.05978 0.46820 0.19681 0.38467 0.04139 0.01730 0.01106 0.03530 0.05863 0.46277 0.19392 0.37202 0.04071 0.01717 0.01109 0.03474 0.05748 0.45742 0.19110 0.36010 0.04005 0.01703 0.01110 0.03419 0.05637 0.45235 0.18844 0.34905 0.03942 0.01689 0.01111 0.03366 0.05532 0.44757 0.18595 0.33884 0.03883 0.01676 0.01110 0.03317 0.05434 0.44275 0.18346 0.32901 0.03823 0.01661 0.01108 0.03268 0.05337 0.69524 0.33521 0.89327 0.04943 0.00000 0.00000 0.03756 0.09541 0.68913 0.32923 0.89482 0.04943 0.00000 0.00000 0.03800 0.09345 0.67942 0.32055 0.88618 0.04928 0.00034 0.00000 0.03842 0.09060 0.67207 0.31439 0.87267 0.04910 0.00150 0.00000 0.03861 0.08860 0.66411 0.30806 0.85348 0.04883 0.00328 0.00000 0.03871 0.08654 0.65708 0.30267 0.83523 0.04854 0.00454 0.00000 0.03871 0.08478 0.65019 0.29757 0.81623 0.04820 0.00563 0.00000 0.03864 0.08309 0.64273 0.29223 0.79483 0.04779 0.00666 0.00000 0.03850 0.08133 0.63619 0.28766 0.77570 0.04740 0.00746 0.00000 0.03834 0.07981 0.62987 0.28332 0.75695 0.04701 0.00818 0.00000 0.03816 0.07836 0.62475 0.27991 0.74165 0.04666 0.00868 0.00000 0.03797 0.07722 0.61389 0.27279 0.70839 0.04591 0.00963 0.00027 0.03754 0.07483 0.60452 0.26681 0.67844 0.04523 0.01034 0.00103 0.03711 0.07283 0.59404 0.26030 0.64457 0.04443 0.01099 0.00220 0.03659 0.07065 0.58312 0.25367 0.61059 0.04356 0.01155 0.00317 0.03598 0.06841 0.57324 0.24779 0.58085 0.04274 0.01196 0.00395 0.03540 0.06643 0.56330 0.24198 0.55193 0.04189 0.01229 0.00462 0.03477 0.06447 0.55505 0.23726 0.52894 0.04117 0.01250 0.00509 0.03423 0.06287 0.54513 0.23166 0.50211 0.04029 0.01270 0.00561 0.03356 0.06098 0.53643 0.22680 0.47931 0.03951 0.01283 0.00600 0.03295 0.05934 0.52850 0.22244 0.45931 0.03879 0.01291 0.00631 0.03238 0.05787 0.51851 0.21703 0.43512 0.03788 0.01297 0.00664 0.03166 0.05605 0.50922 0.21205 0.41345 0.03702 0.01299 0.00691 0.03097 0.05439 0.50061 0.20749 0.39402 0.03623 0.01298 0.00712 0.03033 0.05286 0.49206 0.20303 0.37578 0.03543 0.01293 0.00728 0.02968 0.05138 0.48381 0.19875 0.35860 0.03466 0.01286 0.00741 0.02905 0.04997 0.47607 0.19478 0.34310 0.03394 0.01279 0.00752 0.02846 0.04866 0.46885 0.19112 0.32924 0.03327 0.01270 0.00759 0.02791 0.04746 0.46168 0.18750 0.31574 0.03260 0.01260 0.00765 0.02735 0.04628 0.45469 0.18401 0.30326 0.03195 0.01248 0.00768 0.02681 0.04515 0.44812 0.18074 0.29165 0.03134 0.01237 0.00771 0.02630 0.04409 0.44197 0.17771 0.28135 0.03076 0.01226 0.00772 0.02583 0.04312 0.43582 0.17470 0.27117 0.03019 0.01214 0.00772 0.02535 0.04215 0.42981 0.17178 0.26165 0.02964 0.01201 0.00771 0.02489 0.04122 0.42414 0.16903 0.25286 0.02912 0.01189 0.00769 0.02445 0.04035 0.41880 0.16646 0.24476 0.02863 0.01177 0.00767 0.02404 0.03954 0.41346 0.16391 0.23701 0.02814 0.01164 0.00764 0.02362 0.03874 0.72153 0.33199 0.81289 0.04078 0.00000 0.00000 0.03120 0.07961 0.71176 0.32464 0.80453 0.04069 0.00000 0.00000 0.03141 0.07753 0.69707 0.31412 0.78422 0.04042 0.00027 0.00000 0.03153 0.07457 0.68637 0.30677 0.76432 0.04015 0.00119 0.00000 0.03152 0.07252 0.67512 0.29929 0.74007 0.03981 0.00260 0.00000 0.03144 0.07044 0.66538 0.29298 0.71830 0.03946 0.00358 0.00000 0.03131 0.06868 0.65603 0.28706 0.69672 0.03909 0.00442 0.00000 0.03113 0.06702 0.64610 0.28093 0.67336 0.03865 0.00520 0.00000 0.03089 0.06529 0.63752 0.27571 0.65300 0.03824 0.00581 0.00000 0.03065 0.06383 0.62928 0.27077 0.63339 0.03783 0.00635 0.00000 0.03040 0.06243 0.62274 0.26693 0.61784 0.03748 0.00672 0.00000 0.03017 0.06135 0.60897 0.25894 0.58467 0.03673 0.00742 0.00020 0.02966 0.05910 0.59727 0.25230 0.55575 0.03606 0.00792 0.00078 0.02919 0.05724 0.58438 0.24511 0.52378 0.03529 0.00838 0.00166 0.02864 0.05523 0.57111 0.23785 0.49219 0.03447 0.00877 0.00237 0.02803 0.05319 0.55924 0.23146 0.46493 0.03370 0.00904 0.00294 0.02745 0.05140 0.54742 0.22520 0.43874 0.03292 0.00925 0.00343 0.02684 0.04964 0.53773 0.22014 0.41822 0.03226 0.00937 0.00376 0.02633 0.04823 0.52616 0.21417 0.39446 0.03147 0.00948 0.00412 0.02571 0.04656 0.51608 0.20902 0.37445 0.03076 0.00955 0.00440 0.02515 0.04513 0.50697 0.20442 0.35708 0.03012 0.00957 0.00461 0.02464 0.04386 0.49558 0.19874 0.33624 0.02931 0.00958 0.00483 0.02399 0.04229 0.48507 0.19355 0.31773 0.02856 0.00956 0.00501 0.02338 0.04086 0.47538 0.18881 0.30126 0.02786 0.00951 0.00514 0.02281 0.03957 0.46586 0.18421 0.28595 0.02718 0.00945 0.00524 0.02225 0.03832 0.45669 0.17980 0.27161 0.02651 0.00937 0.00532 0.02171 0.03713 0.44816 0.17574 0.25876 0.02589 0.00929 0.00538 0.02120 0.03604 0.44024 0.17201 0.24735 0.02532 0.00920 0.00542 0.02073 0.03504 0.43240 0.16832 0.23627 0.02475 0.00910 0.00545 0.02026 0.03406 0.42482 0.16480 0.22613 0.02420 0.00900 0.00546 0.01981 0.03313 0.41770 0.16150 0.21670 0.02368 0.00889 0.00546 0.01938 0.03227 0.41107 0.15846 0.20841 0.02320 0.00879 0.00545 0.01899 0.03147 0.40447 0.15544 0.20023 0.02273 0.00868 0.00544 0.01859 0.03069 0.39805 0.15252 0.19263 0.02227 0.00857 0.00543 0.01821 0.02994 0.39201 0.14979 0.18563 0.02183 0.00847 0.00540 0.01785 0.02923 0.38634 0.14723 0.17921 0.02143 0.00837 0.00538 0.01751 0.02858 0.38069 0.14471 0.17310 0.02102 0.00826 0.00535 0.01718 0.02794 0.73491 0.32344 0.73694 0.03411 0.00000 0.00000 0.02568 0.06499 0.72175 0.31497 0.72140 0.03394 0.00000 0.00000 0.02573 0.06298 0.70246 0.30299 0.69305 0.03357 0.00021 0.00000 0.02567 0.06014 0.68870 0.29470 0.66902 0.03324 0.00095 0.00000 0.02556 0.05820 0.67448 0.28635 0.64179 0.03285 0.00206 0.00000 0.02538 0.05624 0.66234 0.27934 0.61813 0.03247 0.00283 0.00000 0.02517 0.05460 0.65083 0.27283 0.59537 0.03207 0.00348 0.00000 0.02494 0.05308 0.63875 0.26611 0.57136 0.03161 0.00408 0.00000 0.02465 0.05150 0.62839 0.26043 0.55078 0.03119 0.00454 0.00000 0.02438 0.05017 0.61852 0.25507 0.53121 0.03078 0.00495 0.00000 0.02411 0.04891 0.61077 0.25093 0.51601 0.03044 0.00522 0.00000 0.02387 0.04794 0.59455 0.24236 0.48404 0.02971 0.00573 0.00015 0.02335 0.04593 0.58093 0.23529 0.45682 0.02906 0.00610 0.00059 0.02289 0.04429 0.56606 0.22769 0.42727 0.02833 0.00642 0.00125 0.02235 0.04252 0.55091 0.22006 0.39844 0.02756 0.00668 0.00178 0.02177 0.04075 0.53746 0.21338 0.37385 0.02685 0.00686 0.00220 0.02123 0.03920 0.52419 0.20687 0.35049 0.02613 0.00699 0.00256 0.02068 0.03770 0.51339 0.20165 0.33240 0.02554 0.00706 0.00280 0.02022 0.03650 0.50058 0.19550 0.31160 0.02482 0.00712 0.00305 0.01967 0.03509 0.48948 0.19023 0.29422 0.02419 0.00714 0.00325 0.01917 0.03389 0.47951 0.18555 0.27926 0.02363 0.00714 0.00339 0.01873 0.03282 0.46714 0.17979 0.26147 0.02291 0.00712 0.00354 0.01816 0.03152 0.45577 0.17455 0.24577 0.02225 0.00707 0.00366 0.01764 0.03035 0.44535 0.16978 0.23189 0.02165 0.00702 0.00375 0.01716 0.02928 0.43518 0.16518 0.21912 0.02105 0.00695 0.00381 0.01668 0.02826 0.42542 0.16079 0.20721 0.02048 0.00687 0.00385 0.01623 0.02729 0.41638 0.15675 0.19661 0.01995 0.00679 0.00388 0.01580 0.02641 0.40804 0.15306 0.18725 0.01946 0.00671 0.00390 0.01541 0.02561 0.39980 0.14943 0.17820 0.01898 0.00662 0.00391 0.01502 0.02482 0.39188 0.14597 0.16996 0.01851 0.00653 0.00391 0.01465 0.02408 0.38445 0.14273 0.16234 0.01808 0.00644 0.00390 0.01430 0.02339 0.37758 0.13976 0.15568 0.01768 0.00635 0.00389 0.01398 0.02276 0.37074 0.13681 0.14911 0.01728 0.00626 0.00387 0.01366 0.02214 0.36413 0.13398 0.14305 0.01689 0.00617 0.00385 0.01335 0.02154 0.35791 0.13133 0.13748 0.01653 0.00608 0.00383 0.01305 0.02099 0.35210 0.12886 0.13239 0.01620 0.00599 0.00380 0.01278 0.02048 0.34634 0.12643 0.12757 0.01586 0.00591 0.00377 0.01252 0.01998 0.73676 0.31068 0.66562 0.02888 0.00000 0.00000 0.02094 0.05190 0.72053 0.30135 0.64499 0.02864 0.00000 0.00000 0.02090 0.05007 0.69715 0.28829 0.61129 0.02818 0.00017 0.00000 0.02073 0.04752 0.68072 0.27933 0.58481 0.02780 0.00076 0.00000 0.02056 0.04578 0.66394 0.27035 0.55610 0.02736 0.00163 0.00000 0.02033 0.04404 0.64974 0.26288 0.53169 0.02695 0.00224 0.00000 0.02010 0.04260 0.63640 0.25596 0.50871 0.02653 0.00274 0.00000 0.01985 0.04126 0.62252 0.24887 0.48492 0.02607 0.00320 0.00000 0.01955 0.03989 0.61070 0.24289 0.46480 0.02565 0.00355 0.00000 0.01928 0.03873 0.59949 0.23728 0.44585 0.02525 0.00386 0.00000 0.01901 0.03765 0.59076 0.23297 0.43137 0.02491 0.00406 0.00000 0.01878 0.03682 0.57259 0.22408 0.40126 0.02420 0.00444 0.00012 0.01829 0.03511 0.55746 0.21678 0.37610 0.02359 0.00470 0.00045 0.01786 0.03371 0.54107 0.20898 0.34920 0.02290 0.00493 0.00095 0.01736 0.03222 0.52449 0.20120 0.32325 0.02218 0.00511 0.00135 0.01684 0.03074 0.50989 0.19443 0.30134 0.02153 0.00522 0.00165 0.01636 0.02946 0.49556 0.18786 0.28073 0.02088 0.00530 0.00191 0.01588 0.02822 0.48399 0.18262 0.26494 0.02034 0.00534 0.00209 0.01548 0.02723 0.47032 0.17647 0.24689 0.01970 0.00536 0.00227 0.01500 0.02608 0.45854 0.17122 0.23193 0.01915 0.00536 0.00241 0.01458 0.02510 0.44802 0.16658 0.21915 0.01864 0.00534 0.00251 0.01420 0.02424 0.43502 0.16089 0.20406 0.01802 0.00530 0.00261 0.01372 0.02319 0.42314 0.15573 0.19084 0.01744 0.00526 0.00268 0.01328 0.02225 0.41229 0.15105 0.17921 0.01692 0.00520 0.00274 0.01288 0.02140 0.40178 0.14657 0.16861 0.01640 0.00513 0.00277 0.01248 0.02059 0.39172 0.14230 0.15877 0.01591 0.00506 0.00280 0.01211 0.01982 0.38244 0.13839 0.15005 0.01546 0.00499 0.00281 0.01176 0.01913 0.37391 0.13482 0.14240 0.01504 0.00491 0.00282 0.01144 0.01850 0.36550 0.13132 0.13503 0.01463 0.00484 0.00282 0.01112 0.01788 0.35747 0.12800 0.12837 0.01424 0.00476 0.00281 0.01082 0.01730 0.34994 0.12489 0.12222 0.01388 0.00468 0.00280 0.01054 0.01676 0.34302 0.12206 0.11688 0.01354 0.00461 0.00279 0.01028 0.01628 0.33613 0.11925 0.11162 0.01321 0.00453 0.00277 0.01002 0.01580 0.32950 0.11656 0.10680 0.01289 0.00445 0.00275 0.00977 0.01534 0.32328 0.11405 0.10238 0.01259 0.00438 0.00272 0.00954 0.01492 0.31747 0.11171 0.09834 0.01231 0.00431 0.00270 0.00933 0.01452 0.31174 0.10942 0.09455 0.01203 0.00424 0.00268 0.00911 0.01414 0.72848 0.29470 0.59889 0.02465 0.00000 0.00000 0.01690 0.04054 0.70957 0.28477 0.57481 0.02434 0.00000 0.00000 0.01681 0.03895 0.68270 0.27098 0.53783 0.02380 0.00014 0.00000 0.01660 0.03676 0.66402 0.26158 0.51014 0.02338 0.00060 0.00000 0.01640 0.03528 0.64511 0.25223 0.48103 0.02291 0.00129 0.00000 0.01616 0.03381 0.62923 0.24448 0.45670 0.02249 0.00177 0.00000 0.01593 0.03259 0.61441 0.23734 0.43418 0.02206 0.00216 0.00000 0.01568 0.03147 0.59911 0.23006 0.41120 0.02159 0.00251 0.00000 0.01540 0.03032 0.58614 0.22396 0.39198 0.02118 0.00278 0.00000 0.01514 0.02936 0.57389 0.21823 0.37402 0.02079 0.00301 0.00000 0.01489 0.02846 0.56442 0.21386 0.36049 0.02047 0.00316 0.00000 0.01468 0.02778 0.54478 0.20487 0.33260 0.01979 0.00343 0.00009 0.01424 0.02637 0.52855 0.19754 0.30968 0.01921 0.00362 0.00034 0.01385 0.02523 0.51108 0.18974 0.28549 0.01857 0.00378 0.00072 0.01342 0.02402 0.49352 0.18199 0.26239 0.01791 0.00390 0.00102 0.01296 0.02283 0.47815 0.17528 0.24307 0.01731 0.00398 0.00124 0.01255 0.02179 0.46315 0.16880 0.22505 0.01672 0.00402 0.00143 0.01213 0.02080 0.45112 0.16366 0.21139 0.01624 0.00403 0.00156 0.01179 0.02001 0.43695 0.15765 0.19587 0.01568 0.00404 0.00169 0.01139 0.01910 0.42480 0.15254 0.18307 0.01518 0.00402 0.00178 0.01103 0.01833 0.41399 0.14803 0.17223 0.01474 0.00400 0.00185 0.01071 0.01765 0.40070 0.14253 0.15951 0.01420 0.00396 0.00192 0.01032 0.01683 0.38861 0.13756 0.14844 0.01370 0.00391 0.00197 0.00996 0.01609 0.37761 0.13307 0.13876 0.01324 0.00385 0.00201 0.00963 0.01543 0.36701 0.12878 0.13001 0.01280 0.00379 0.00203 0.00931 0.01481 0.35689 0.12472 0.12191 0.01238 0.00373 0.00204 0.00900 0.01421 0.34759 0.12100 0.11478 0.01200 0.00367 0.00204 0.00872 0.01368 0.33909 0.11762 0.10856 0.01165 0.00360 0.00204 0.00846 0.01320 0.33071 0.11431 0.10257 0.01130 0.00354 0.00204 0.00821 0.01273 0.32275 0.11118 0.09721 0.01097 0.00347 0.00203 0.00797 0.01229 0.31530 0.10826 0.09226 0.01067 0.00341 0.00202 0.00774 0.01188 0.30848 0.10562 0.08799 0.01039 0.00335 0.00200 0.00754 0.01151 0.30170 0.10299 0.08380 0.01011 0.00329 0.00198 0.00733 0.01114 0.29520 0.10048 0.07997 0.00984 0.00322 0.00196 0.00714 0.01080 0.28911 0.09814 0.07647 0.00960 0.00317 0.00194 0.00696 0.01048 0.28344 0.09597 0.07328 0.00936 0.00311 0.00193 0.00679 0.01019 0.27786 0.09385 0.07030 0.00914 0.00305 0.00190 0.00662 0.00990 0.71139 0.27634 0.53668 0.02111 0.00000 0.00000 0.01350 0.03095 0.69025 0.26605 0.51043 0.02074 0.00000 0.00000 0.01340 0.02964 0.66053 0.25186 0.47177 0.02014 0.00011 0.00000 0.01317 0.02785 0.64004 0.24226 0.44381 0.01969 0.00048 0.00000 0.01297 0.02664 0.61947 0.23275 0.41510 0.01920 0.00102 0.00000 0.01273 0.02544 0.60229 0.22490 0.39144 0.01877 0.00139 0.00000 0.01251 0.02445 0.58636 0.21771 0.36983 0.01834 0.00169 0.00000 0.01228 0.02354 0.57000 0.21041 0.34807 0.01789 0.00196 0.00000 0.01203 0.02262 0.55619 0.20430 0.33003 0.01749 0.00217 0.00000 0.01180 0.02185 0.54320 0.19860 0.31329 0.01711 0.00234 0.00000 0.01158 0.02113 0.53322 0.19426 0.30084 0.01680 0.00245 0.00000 0.01139 0.02059 0.51260 0.18537 0.27536 0.01617 0.00265 0.00007 0.01100 0.01947 0.49565 0.17815 0.25472 0.01563 0.00279 0.00026 0.01067 0.01857 0.47752 0.17051 0.23319 0.01504 0.00290 0.00054 0.01030 0.01761 0.45940 0.16296 0.21283 0.01444 0.00298 0.00077 0.00991 0.01667 0.44362 0.15644 0.19595 0.01390 0.00302 0.00093 0.00956 0.01587 0.42830 0.15017 0.18033 0.01338 0.00304 0.00107 0.00921 0.01509 0.41607 0.14523 0.16859 0.01295 0.00305 0.00116 0.00893 0.01449 0.40174 0.13947 0.15533 0.01245 0.00304 0.00126 0.00859 0.01378 0.38949 0.13457 0.14448 0.01202 0.00302 0.00132 0.00830 0.01319 0.37863 0.13028 0.13534 0.01163 0.00299 0.00137 0.00804 0.01267 0.36535 0.12506 0.12469 0.01116 0.00295 0.00142 0.00772 0.01204 0.35331 0.12036 0.11547 0.01073 0.00290 0.00145 0.00743 0.01148 0.34239 0.11612 0.10746 0.01034 0.00286 0.00147 0.00716 0.01098 0.33192 0.11210 0.10027 0.00997 0.00280 0.00148 0.00691 0.01050 0.32196 0.10829 0.09364 0.00962 0.00275 0.00149 0.00666 0.01006 0.31283 0.10482 0.08783 0.00929 0.00269 0.00149 0.00644 0.00966 0.30452 0.10167 0.08279 0.00900 0.00264 0.00148 0.00623 0.00929 0.29634 0.09860 0.07797 0.00871 0.00259 0.00147 0.00603 0.00894 0.28860 0.09570 0.07366 0.00843 0.00253 0.00146 0.00584 0.00861 0.28137 0.09300 0.06969 0.00818 0.00248 0.00145 0.00566 0.00831 0.27478 0.09056 0.06630 0.00795 0.00243 0.00144 0.00550 0.00804 0.26823 0.08814 0.06297 0.00772 0.00238 0.00142 0.00534 0.00777 0.26198 0.08585 0.05994 0.00750 0.00233 0.00141 0.00519 0.00751 0.25613 0.08371 0.05718 0.00730 0.00229 0.00139 0.00505 0.00728 0.25069 0.08172 0.05467 0.00711 0.00224 0.00137 0.00492 0.00706 0.24536 0.07979 0.05233 0.00692 0.00220 0.00135 0.00479 0.00685 0.68680 0.25634 0.47887 0.01803 0.00000 0.00000 0.01068 0.02310 0.66390 0.24591 0.45148 0.01762 0.00000 0.00000 0.01056 0.02206 0.63198 0.23163 0.41238 0.01699 0.00009 0.00000 0.01034 0.02064 0.61016 0.22201 0.38485 0.01652 0.00038 0.00000 0.01016 0.01969 0.58837 0.21254 0.35711 0.01603 0.00081 0.00000 0.00994 0.01876 0.57028 0.20476 0.33453 0.01560 0.00109 0.00000 0.00974 0.01798 0.55358 0.19766 0.31415 0.01519 0.00132 0.00000 0.00954 0.01727 0.53653 0.19048 0.29386 0.01475 0.00153 0.00000 0.00932 0.01656 0.52220 0.18450 0.27717 0.01438 0.00168 0.00000 0.00912 0.01596 0.50875 0.17891 0.26179 0.01402 0.00181 0.00000 0.00893 0.01540 0.49848 0.17470 0.25047 0.01373 0.00189 0.00000 0.00877 0.01498 0.47732 0.16606 0.22747 0.01314 0.00204 0.00005 0.00844 0.01412 0.46003 0.15908 0.20907 0.01265 0.00214 0.00020 0.00815 0.01343 0.44162 0.15173 0.19009 0.01212 0.00221 0.00041 0.00784 0.01270 0.42332 0.14450 0.17230 0.01158 0.00226 0.00058 0.00752 0.01198 0.40746 0.13828 0.15767 0.01111 0.00229 0.00070 0.00723 0.01137 0.39213 0.13233 0.14424 0.01064 0.00230 0.00080 0.00695 0.01078 0.37996 0.12765 0.13423 0.01027 0.00229 0.00087 0.00671 0.01032 0.36574 0.12221 0.12299 0.00983 0.00228 0.00093 0.00644 0.00979 0.35363 0.11761 0.11384 0.00946 0.00226 0.00098 0.00621 0.00935 0.34294 0.11358 0.10619 0.00913 0.00223 0.00101 0.00600 0.00896 0.32991 0.10871 0.09733 0.00873 0.00219 0.00104 0.00574 0.00849 0.31814 0.10434 0.08970 0.00836 0.00215 0.00106 0.00551 0.00807 0.30751 0.10041 0.08310 0.00804 0.00211 0.00107 0.00529 0.00770 0.29735 0.09669 0.07723 0.00772 0.00206 0.00108 0.00509 0.00735 0.28772 0.09317 0.07183 0.00742 0.00202 0.00108 0.00490 0.00702 0.27891 0.08998 0.06713 0.00715 0.00197 0.00108 0.00472 0.00672 0.27092 0.08710 0.06308 0.00691 0.00193 0.00107 0.00456 0.00646 0.26308 0.08428 0.05919 0.00667 0.00189 0.00106 0.00440 0.00620 0.25569 0.08164 0.05576 0.00644 0.00184 0.00105 0.00426 0.00596 0.24878 0.07918 0.05260 0.00623 0.00180 0.00104 0.00412 0.00574 0.24252 0.07697 0.04991 0.00604 0.00176 0.00103 0.00400 0.00554 0.23630 0.07478 0.04727 0.00586 0.00172 0.00102 0.00387 0.00535 0.23038 0.07270 0.04488 0.00568 0.00168 0.00100 0.00375 0.00516 0.22486 0.07077 0.04271 0.00551 0.00165 0.00099 0.00365 0.00499 0.21973 0.06898 0.04075 0.00536 0.00161 0.00098 0.00354 0.00484 0.21472 0.06724 0.03893 0.00521 0.00158 0.00096 0.00345 0.00469 0.65598 0.23533 0.42532 0.01529 0.00000 0.00000 0.00835 0.01683 0.63180 0.22496 0.39761 0.01486 0.00000 0.00000 0.00824 0.01605 0.59834 0.21085 0.35901 0.01422 0.00007 0.00000 0.00804 0.01497 0.57562 0.20140 0.33243 0.01376 0.00030 0.00000 0.00787 0.01425 0.55307 0.19214 0.30609 0.01328 0.00063 0.00000 0.00769 0.01354 0.53443 0.18456 0.28487 0.01287 0.00085 0.00000 0.00751 0.01296 0.51731 0.17767 0.26593 0.01248 0.00103 0.00000 0.00734 0.01243 0.49991 0.17073 0.24725 0.01207 0.00119 0.00000 0.00715 0.01189 0.48534 0.16496 0.23201 0.01172 0.00130 0.00000 0.00698 0.01144 0.47170 0.15959 0.21804 0.01139 0.00140 0.00000 0.00682 0.01102 0.46133 0.15556 0.20786 0.01113 0.00146 0.00000 0.00669 0.01070 0.44005 0.14731 0.18733 0.01060 0.00157 0.00004 0.00641 0.01006 0.42274 0.14068 0.17108 0.01016 0.00163 0.00015 0.00618 0.00954 0.40440 0.13371 0.15450 0.00968 0.00168 0.00031 0.00592 0.00900 0.38627 0.12690 0.13908 0.00921 0.00172 0.00043 0.00566 0.00847 0.37061 0.12106 0.12650 0.00880 0.00173 0.00052 0.00542 0.00801 0.35554 0.11549 0.11504 0.00839 0.00173 0.00060 0.00519 0.00758 0.34365 0.11113 0.10658 0.00807 0.00172 0.00064 0.00501 0.00724 0.32978 0.10608 0.09712 0.00770 0.00170 0.00069 0.00479 0.00685 0.31801 0.10182 0.08945 0.00738 0.00168 0.00072 0.00460 0.00653 0.30766 0.09810 0.08309 0.00711 0.00166 0.00074 0.00444 0.00624 0.29510 0.09362 0.07577 0.00677 0.00162 0.00076 0.00423 0.00590 0.28378 0.08961 0.06950 0.00646 0.00159 0.00078 0.00405 0.00560 0.27358 0.08601 0.06411 0.00619 0.00155 0.00078 0.00388 0.00533 0.26390 0.08262 0.05934 0.00593 0.00151 0.00078 0.00373 0.00507 0.25472 0.07943 0.05497 0.00568 0.00148 0.00078 0.00358 0.00484 0.24637 0.07653 0.05119 0.00546 0.00144 0.00078 0.00344 0.00462 0.23881 0.07393 0.04794 0.00526 0.00141 0.00077 0.00331 0.00443 0.23140 0.07139 0.04484 0.00506 0.00137 0.00076 0.00319 0.00425 0.22445 0.06902 0.04211 0.00488 0.00134 0.00076 0.00308 0.00407 0.21796 0.06681 0.03960 0.00471 0.00130 0.00075 0.00297 0.00392 0.21209 0.06483 0.03748 0.00456 0.00127 0.00074 0.00288 0.00377 0.20628 0.06287 0.03541 0.00441 0.00124 0.00073 0.00279 0.00364 0.20076 0.06101 0.03354 0.00426 0.00121 0.00071 0.00270 0.00350 0.19562 0.05929 0.03184 0.00413 0.00118 0.00070 0.00261 0.00338 0.19085 0.05770 0.03031 0.00401 0.00116 0.00069 0.00254 0.00327 0.18621 0.05616 0.02890 0.00389 0.00113 0.00068 0.00246 0.00317 0.62013 0.21386 0.37588 0.01282 0.00000 0.00000 0.00645 0.01197 0.59512 0.20373 0.34850 0.01239 0.00000 0.00000 0.00635 0.01140 0.56078 0.19002 0.31115 0.01176 0.00005 0.00000 0.00618 0.01062 0.53759 0.18089 0.28590 0.01132 0.00023 0.00000 0.00604 0.01009 0.51470 0.17198 0.26125 0.01087 0.00049 0.00000 0.00588 0.00958 0.49586 0.16471 0.24157 0.01049 0.00066 0.00000 0.00573 0.00915 0.47864 0.15813 0.22418 0.01013 0.00080 0.00000 0.00559 0.00876 0.46121 0.15153 0.20719 0.00976 0.00091 0.00000 0.00543 0.00837 0.44666 0.14606 0.19343 0.00944 0.00100 0.00000 0.00529 0.00804 0.43308 0.14097 0.18087 0.00915 0.00107 0.00000 0.00516 0.00774 0.42280 0.13717 0.17182 0.00892 0.00112 0.00000 0.00505 0.00751 0.40176 0.12942 0.15366 0.00845 0.00119 0.00003 0.00483 0.00704 0.38473 0.12320 0.13945 0.00806 0.00124 0.00011 0.00464 0.00667 0.36677 0.11671 0.12508 0.00765 0.00127 0.00023 0.00443 0.00627 0.34909 0.11037 0.11183 0.00724 0.00129 0.00032 0.00422 0.00589 0.33389 0.10497 0.10110 0.00689 0.00130 0.00039 0.00403 0.00556 0.31932 0.09983 0.09140 0.00654 0.00129 0.00044 0.00385 0.00525 0.30787 0.09583 0.08429 0.00628 0.00128 0.00048 0.00370 0.00500 0.29456 0.09121 0.07639 0.00596 0.00126 0.00051 0.00353 0.00472 0.28329 0.08732 0.07002 0.00570 0.00124 0.00053 0.00338 0.00449 0.27343 0.08393 0.06477 0.00547 0.00122 0.00054 0.00325 0.00429 0.26150 0.07987 0.05876 0.00519 0.00119 0.00056 0.00310 0.00404 0.25078 0.07624 0.05364 0.00493 0.00116 0.00056 0.00295 0.00382 0.24115 0.07299 0.04926 0.00471 0.00114 0.00057 0.00282 0.00363 0.23205 0.06995 0.04542 0.00450 0.00111 0.00057 0.00270 0.00345 0.22344 0.06708 0.04191 0.00430 0.00107 0.00056 0.00259 0.00328 0.21562 0.06449 0.03888 0.00412 0.00105 0.00056 0.00248 0.00313 0.20857 0.06217 0.03630 0.00396 0.00102 0.00055 0.00239 0.00300 0.20168 0.05991 0.03383 0.00380 0.00099 0.00055 0.00230 0.00287 0.19523 0.05781 0.03168 0.00365 0.00096 0.00054 0.00221 0.00275 0.18921 0.05585 0.02971 0.00352 0.00094 0.00053 0.00213 0.00264 0.18380 0.05410 0.02805 0.00340 0.00091 0.00052 0.00206 0.00254 0.17844 0.05237 0.02642 0.00328 0.00089 0.00052 0.00199 0.00244 0.17336 0.05074 0.02497 0.00316 0.00087 0.00051 0.00192 0.00235 0.16864 0.04923 0.02365 0.00306 0.00084 0.00050 0.00186 0.00227 0.16427 0.04783 0.02246 0.00296 0.00082 0.00049 0.00180 0.00219 0.16003 0.04648 0.02137 0.00287 0.00080 0.00048 0.00175 0.00211 0.58038 0.19239 0.33042 0.01058 0.00000 0.00000 0.00492 0.00830 0.55500 0.18265 0.30387 0.01017 0.00000 0.00000 0.00484 0.00791 0.52037 0.16954 0.26831 0.00959 0.00004 0.00000 0.00469 0.00736 0.49713 0.16085 0.24466 0.00918 0.00018 0.00000 0.00458 0.00699 0.47429 0.15240 0.22187 0.00877 0.00038 0.00000 0.00444 0.00663 0.45558 0.14554 0.20386 0.00843 0.00051 0.00000 0.00433 0.00633 0.43854 0.13934 0.18807 0.00811 0.00061 0.00000 0.00421 0.00606 0.42136 0.13316 0.17279 0.00778 0.00070 0.00000 0.00408 0.00578 0.40707 0.12804 0.16049 0.00750 0.00076 0.00000 0.00397 0.00555 0.39376 0.12330 0.14933 0.00724 0.00082 0.00000 0.00386 0.00534 0.38374 0.11976 0.14135 0.00704 0.00085 0.00000 0.00377 0.00517 0.36327 0.11258 0.12544 0.00664 0.00090 0.00002 0.00359 0.00484 0.34677 0.10684 0.11312 0.00631 0.00093 0.00008 0.00344 0.00458 0.32945 0.10087 0.10078 0.00596 0.00096 0.00017 0.00328 0.00430 0.31247 0.09506 0.08949 0.00561 0.00097 0.00024 0.00311 0.00403 0.29794 0.09013 0.08041 0.00532 0.00097 0.00029 0.00297 0.00380 0.28405 0.08546 0.07227 0.00503 0.00096 0.00033 0.00282 0.00358 0.27319 0.08184 0.06635 0.00481 0.00095 0.00035 0.00271 0.00341 0.26060 0.07766 0.05979 0.00455 0.00093 0.00037 0.00258 0.00321 0.24998 0.07415 0.05454 0.00433 0.00092 0.00039 0.00246 0.00304 0.24071 0.07111 0.05024 0.00415 0.00090 0.00040 0.00236 0.00290 0.22953 0.06747 0.04535 0.00392 0.00087 0.00040 0.00224 0.00273 0.21953 0.06423 0.04120 0.00372 0.00085 0.00041 0.00213 0.00258 0.21056 0.06134 0.03767 0.00354 0.00083 0.00041 0.00203 0.00244 0.20212 0.05865 0.03459 0.00337 0.00080 0.00041 0.00194 0.00232 0.19415 0.05611 0.03179 0.00321 0.00078 0.00040 0.00185 0.00220 0.18694 0.05383 0.02939 0.00306 0.00075 0.00040 0.00177 0.00210 0.18046 0.05178 0.02734 0.00294 0.00073 0.00039 0.00170 0.00200 0.17413 0.04979 0.02541 0.00281 0.00071 0.00039 0.00163 0.00191 0.16822 0.04795 0.02372 0.00270 0.00069 0.00038 0.00157 0.00183 0.16272 0.04624 0.02217 0.00259 0.00067 0.00038 0.00151 0.00175 0.15780 0.04471 0.02088 0.00250 0.00065 0.00037 0.00146 0.00169 0.15292 0.04320 0.01962 0.00240 0.00063 0.00036 0.00140 0.00162 0.14831 0.04179 0.01850 0.00232 0.00062 0.00036 0.00135 0.00156 0.14404 0.04048 0.01748 0.00223 0.00060 0.00035 0.00131 0.00150 0.14008 0.03927 0.01656 0.00216 0.00058 0.00034 0.00127 0.00145 0.13626 0.03810 0.01573 0.00209 0.00057 0.00034 0.00123 0.00140 0.53779 0.17131 0.28877 0.00858 0.00000 0.00000 0.00370 0.00561 0.51247 0.16208 0.26344 0.00821 0.00000 0.00000 0.00364 0.00535 0.47812 0.14973 0.23006 0.00768 0.00003 0.00000 0.00352 0.00499 0.45519 0.14157 0.20821 0.00731 0.00014 0.00000 0.00342 0.00474 0.43277 0.13368 0.18739 0.00695 0.00029 0.00000 0.00332 0.00450 0.41446 0.12729 0.17108 0.00665 0.00039 0.00000 0.00322 0.00430 0.39786 0.12155 0.15690 0.00638 0.00047 0.00000 0.00313 0.00411 0.38119 0.11582 0.14330 0.00609 0.00053 0.00000 0.00303 0.00392 0.36737 0.11111 0.13242 0.00586 0.00058 0.00000 0.00294 0.00376 0.35452 0.10675 0.12259 0.00564 0.00062 0.00000 0.00285 0.00361 0.34489 0.10351 0.11564 0.00547 0.00064 0.00000 0.00279 0.00350 0.32526 0.09694 0.10183 0.00513 0.00068 0.00002 0.00264 0.00328 0.30952 0.09171 0.09125 0.00485 0.00070 0.00006 0.00253 0.00309 0.29305 0.08629 0.08074 0.00456 0.00071 0.00013 0.00240 0.00290 0.27698 0.08105 0.07120 0.00428 0.00072 0.00018 0.00227 0.00271 0.26327 0.07661 0.06359 0.00404 0.00071 0.00021 0.00216 0.00255 0.25023 0.07242 0.05681 0.00380 0.00071 0.00024 0.00205 0.00240 0.24007 0.06918 0.05192 0.00363 0.00070 0.00025 0.00196 0.00229 0.22833 0.06545 0.04653 0.00342 0.00068 0.00027 0.00186 0.00215 0.21844 0.06234 0.04224 0.00324 0.00067 0.00028 0.00177 0.00204 0.20985 0.05964 0.03874 0.00309 0.00065 0.00029 0.00170 0.00194 0.19953 0.05643 0.03479 0.00291 0.00063 0.00029 0.00160 0.00182 0.19031 0.05357 0.03146 0.00275 0.00061 0.00029 0.00152 0.00172 0.18207 0.05104 0.02863 0.00261 0.00059 0.00029 0.00145 0.00162 0.17435 0.04867 0.02619 0.00248 0.00058 0.00029 0.00138 0.00154 0.16708 0.04646 0.02397 0.00236 0.00056 0.00029 0.00131 0.00146 0.16051 0.04447 0.02208 0.00224 0.00054 0.00028 0.00125 0.00139 0.15463 0.04269 0.02048 0.00215 0.00052 0.00028 0.00120 0.00132 0.14888 0.04097 0.01896 0.00205 0.00051 0.00027 0.00115 0.00126 0.14356 0.03937 0.01765 0.00196 0.00049 0.00027 0.00110 0.00121 0.13859 0.03789 0.01645 0.00188 0.00047 0.00026 0.00106 0.00115 0.13416 0.03658 0.01545 0.00181 0.00046 0.00026 0.00102 0.00111 0.12978 0.03528 0.01448 0.00173 0.00045 0.00025 0.00098 0.00106 0.12565 0.03407 0.01362 0.00167 0.00043 0.00025 0.00094 0.00102 0.12183 0.03294 0.01284 0.00161 0.00042 0.00024 0.00091 0.00098 0.11830 0.03191 0.01214 0.00155 0.00041 0.00024 0.00088 0.00095 0.11490 0.03092 0.01151 0.00150 0.00040 0.00023 0.00085 0.00091 0.49337 0.15096 0.25079 0.00682 0.00000 0.00000 0.00275 0.00369 0.46849 0.14234 0.22697 0.00649 0.00000 0.00000 0.00269 0.00353 0.43494 0.13086 0.19605 0.00602 0.00002 0.00000 0.00260 0.00330 0.41265 0.12331 0.17609 0.00571 0.00010 0.00000 0.00253 0.00314 0.39096 0.11604 0.15729 0.00541 0.00022 0.00000 0.00244 0.00299 0.37332 0.11018 0.14267 0.00515 0.00029 0.00000 0.00237 0.00285 0.35738 0.10492 0.13008 0.00492 0.00035 0.00000 0.00230 0.00273 0.34144 0.09970 0.11810 0.00468 0.00040 0.00000 0.00222 0.00261 0.32825 0.09541 0.10857 0.00449 0.00043 0.00000 0.00215 0.00250 0.31603 0.09146 0.10001 0.00430 0.00046 0.00000 0.00208 0.00241 0.30690 0.08853 0.09400 0.00417 0.00048 0.00000 0.00203 0.00233 0.28835 0.08260 0.08213 0.00389 0.00050 0.00001 0.00192 0.00218 0.27353 0.07790 0.07312 0.00366 0.00052 0.00005 0.00183 0.00206 0.25809 0.07305 0.06426 0.00343 0.00052 0.00009 0.00173 0.00193 0.24309 0.06838 0.05627 0.00320 0.00053 0.00013 0.00163 0.00180 0.23033 0.06443 0.04995 0.00301 0.00052 0.00015 0.00155 0.00169 0.21825 0.06072 0.04435 0.00282 0.00051 0.00017 0.00147 0.00159 0.20887 0.05786 0.04034 0.00268 0.00051 0.00018 0.00140 0.00151 0.19806 0.05459 0.03595 0.00252 0.00049 0.00019 0.00132 0.00142 0.18899 0.05185 0.03248 0.00238 0.00048 0.00020 0.00126 0.00134 0.18113 0.04950 0.02966 0.00227 0.00047 0.00020 0.00120 0.00128 0.17172 0.04669 0.02649 0.00213 0.00045 0.00021 0.00113 0.00120 0.16334 0.04421 0.02384 0.00200 0.00044 0.00021 0.00107 0.00113 0.15587 0.04201 0.02160 0.00189 0.00042 0.00021 0.00102 0.00107 0.14890 0.03997 0.01968 0.00179 0.00041 0.00020 0.00097 0.00101 0.14234 0.03806 0.01794 0.00170 0.00040 0.00020 0.00092 0.00095 0.13644 0.03635 0.01646 0.00161 0.00038 0.00020 0.00088 0.00091 0.13117 0.03483 0.01522 0.00154 0.00037 0.00020 0.00084 0.00086 0.12603 0.03335 0.01404 0.00147 0.00036 0.00019 0.00080 0.00082 0.12128 0.03199 0.01303 0.00140 0.00034 0.00019 0.00077 0.00078 0.11686 0.03073 0.01211 0.00134 0.00033 0.00018 0.00073 0.00075 0.11293 0.02961 0.01135 0.00128 0.00032 0.00018 0.00070 0.00072 0.10904 0.02851 0.01061 0.00123 0.00031 0.00018 0.00068 0.00069 0.10539 0.02748 0.00995 0.00118 0.00030 0.00017 0.00065 0.00066 0.10201 0.02653 0.00936 0.00113 0.00029 0.00017 0.00063 0.00063 0.09890 0.02566 0.00883 0.00109 0.00028 0.00016 0.00060 0.00061 0.09591 0.02482 0.00835 0.00105 0.00028 0.00016 0.00058 0.00059 0.44799 0.13158 0.21630 0.00529 0.00000 0.00000 0.00201 0.00237 0.42391 0.12364 0.19420 0.00501 0.00000 0.00000 0.00197 0.00227 0.39160 0.11311 0.16592 0.00462 0.00002 0.00000 0.00189 0.00214 0.37025 0.10623 0.14789 0.00437 0.00008 0.00000 0.00184 0.00204 0.34957 0.09962 0.13110 0.00411 0.00016 0.00000 0.00177 0.00195 0.33280 0.09431 0.11815 0.00390 0.00022 0.00000 0.00172 0.00186 0.31771 0.08957 0.10708 0.00371 0.00026 0.00000 0.00166 0.00179 0.30267 0.08488 0.09663 0.00352 0.00030 0.00000 0.00160 0.00171 0.29027 0.08103 0.08837 0.00336 0.00032 0.00000 0.00155 0.00164 0.27880 0.07749 0.08099 0.00322 0.00034 0.00000 0.00150 0.00158 0.27027 0.07487 0.07585 0.00311 0.00035 0.00000 0.00146 0.00153 0.25297 0.06960 0.06576 0.00289 0.00037 0.00001 0.00137 0.00143 0.23921 0.06544 0.05816 0.00271 0.00038 0.00003 0.00131 0.00135 0.22493 0.06116 0.05075 0.00252 0.00038 0.00007 0.00123 0.00126 0.21111 0.05704 0.04413 0.00235 0.00038 0.00009 0.00116 0.00118 0.19941 0.05359 0.03893 0.00220 0.00038 0.00011 0.00110 0.00111 0.18836 0.05034 0.03435 0.00205 0.00037 0.00012 0.00103 0.00104 0.17982 0.04786 0.03111 0.00195 0.00036 0.00013 0.00099 0.00099 0.17000 0.04501 0.02756 0.00182 0.00035 0.00014 0.00093 0.00093 0.16179 0.04265 0.02477 0.00172 0.00034 0.00014 0.00088 0.00088 0.15470 0.04061 0.02253 0.00163 0.00033 0.00014 0.00084 0.00083 0.14622 0.03820 0.02001 0.00152 0.00032 0.00015 0.00079 0.00078 0.13871 0.03607 0.01792 0.00143 0.00031 0.00015 0.00075 0.00073 0.13202 0.03419 0.01616 0.00135 0.00030 0.00014 0.00071 0.00069 0.12581 0.03245 0.01466 0.00127 0.00029 0.00014 0.00067 0.00065 0.11998 0.03082 0.01331 0.00120 0.00028 0.00014 0.00063 0.00062 0.11474 0.02937 0.01217 0.00114 0.00027 0.00014 0.00060 0.00059 0.11008 0.02808 0.01122 0.00108 0.00026 0.00014 0.00058 0.00056 0.10554 0.02683 0.01031 0.00103 0.00025 0.00013 0.00055 0.00053 0.10136 0.02569 0.00954 0.00098 0.00024 0.00013 0.00052 0.00051 0.09747 0.02463 0.00884 0.00093 0.00023 0.00013 0.00050 0.00048 0.09403 0.02369 0.00826 0.00089 0.00022 0.00012 0.00048 0.00046 0.09063 0.02277 0.00770 0.00085 0.00022 0.00012 0.00046 0.00044 0.08744 0.02191 0.00721 0.00082 0.00021 0.00012 0.00044 0.00042 0.08450 0.02112 0.00677 0.00079 0.00020 0.00012 0.00042 0.00041 0.08179 0.02039 0.00637 0.00075 0.00020 0.00011 0.00041 0.00039 0.07919 0.01969 0.00601 0.00073 0.00019 0.00011 0.00039 0.00038 0.40251 0.11339 0.18515 0.00401 0.00000 0.00000 0.00144 0.00148 0.37952 0.10617 0.16490 0.00378 0.00000 0.00000 0.00141 0.00143 0.34886 0.09666 0.13935 0.00346 0.00001 0.00000 0.00136 0.00136 0.32869 0.09047 0.12326 0.00326 0.00006 0.00000 0.00131 0.00130 0.30923 0.08455 0.10842 0.00305 0.00012 0.00000 0.00126 0.00124 0.29352 0.07980 0.09707 0.00289 0.00016 0.00000 0.00122 0.00120 0.27943 0.07558 0.08745 0.00274 0.00019 0.00000 0.00118 0.00115 0.26544 0.07142 0.07844 0.00259 0.00022 0.00000 0.00114 0.00110 0.25393 0.06801 0.07135 0.00246 0.00023 0.00000 0.00110 0.00106 0.24332 0.06489 0.06505 0.00235 0.00025 0.00000 0.00106 0.00102 0.23545 0.06259 0.06070 0.00226 0.00025 0.00000 0.00103 0.00099 0.21954 0.05796 0.05220 0.00209 0.00027 0.00001 0.00097 0.00092 0.20693 0.05432 0.04587 0.00196 0.00027 0.00002 0.00092 0.00087 0.19390 0.05059 0.03974 0.00182 0.00027 0.00005 0.00086 0.00082 0.18135 0.04703 0.03431 0.00168 0.00027 0.00007 0.00081 0.00076 0.17075 0.04404 0.03007 0.00157 0.00027 0.00008 0.00076 0.00072 0.16078 0.04124 0.02637 0.00146 0.00026 0.00009 0.00072 0.00067 0.15311 0.03911 0.02376 0.00138 0.00026 0.00009 0.00068 0.00064 0.14431 0.03667 0.02093 0.00129 0.00025 0.00010 0.00064 0.00060 0.13697 0.03465 0.01872 0.00121 0.00024 0.00010 0.00061 0.00057 0.13065 0.03292 0.01695 0.00114 0.00024 0.00010 0.00058 0.00054 0.12313 0.03088 0.01498 0.00106 0.00023 0.00010 0.00054 0.00050 0.11648 0.02908 0.01334 0.00100 0.00022 0.00010 0.00051 0.00047 0.11058 0.02749 0.01198 0.00094 0.00021 0.00010 0.00048 0.00044 0.10511 0.02602 0.01082 0.00088 0.00020 0.00010 0.00046 0.00042 0.09999 0.02466 0.00978 0.00083 0.00019 0.00010 0.00043 0.00040 0.09541 0.02344 0.00891 0.00078 0.00018 0.00009 0.00041 0.00038 0.09134 0.02237 0.00818 0.00074 0.00018 0.00009 0.00039 0.00036 0.08739 0.02133 0.00750 0.00070 0.00017 0.00009 0.00037 0.00034 0.08376 0.02038 0.00692 0.00067 0.00016 0.00009 0.00035 0.00032 0.08038 0.01950 0.00639 0.00064 0.00016 0.00009 0.00034 0.00031 0.07741 0.01872 0.00596 0.00061 0.00015 0.00008 0.00032 0.00029 0.07447 0.01796 0.00554 0.00058 0.00015 0.00008 0.00031 0.00028 0.07172 0.01725 0.00517 0.00056 0.00014 0.00008 0.00030 0.00027 0.06919 0.01660 0.00484 0.00053 0.00014 0.00008 0.00028 0.00026 0.06686 0.01600 0.00455 0.00051 0.00013 0.00008 0.00027 0.00025 0.06464 0.01543 0.00428 0.00049 0.00013 0.00007 0.00026 0.00024 0.35768 0.09653 0.15719 0.00296 0.00000 0.00000 0.00101 0.00090 0.33603 0.09007 0.13886 0.00277 0.00000 0.00000 0.00099 0.00088 0.30733 0.08159 0.11604 0.00253 0.00001 0.00000 0.00095 0.00084 0.28854 0.07610 0.10184 0.00237 0.00004 0.00000 0.00092 0.00081 0.27049 0.07087 0.08889 0.00221 0.00009 0.00000 0.00089 0.00078 0.25597 0.06669 0.07905 0.00208 0.00012 0.00000 0.00085 0.00075 0.24299 0.06299 0.07078 0.00197 0.00014 0.00000 0.00082 0.00073 0.23016 0.05935 0.06309 0.00185 0.00016 0.00000 0.00079 0.00070 0.21963 0.05638 0.05709 0.00176 0.00017 0.00000 0.00076 0.00067 0.20994 0.05366 0.05177 0.00167 0.00018 0.00000 0.00074 0.00065 0.20279 0.05167 0.04813 0.00161 0.00018 0.00000 0.00071 0.00063 0.18835 0.04766 0.04105 0.00148 0.00019 0.00000 0.00067 0.00059 0.17696 0.04453 0.03583 0.00138 0.00019 0.00002 0.00063 0.00056 0.16523 0.04133 0.03081 0.00127 0.00019 0.00003 0.00059 0.00052 0.15397 0.03828 0.02640 0.00117 0.00019 0.00005 0.00056 0.00049 0.14451 0.03573 0.02299 0.00109 0.00019 0.00005 0.00052 0.00046 0.13564 0.03336 0.02003 0.00101 0.00018 0.00006 0.00049 0.00043 0.12884 0.03155 0.01796 0.00095 0.00018 0.00006 0.00046 0.00041 0.12106 0.02950 0.01573 0.00089 0.00017 0.00007 0.00044 0.00038 0.11459 0.02779 0.01399 0.00083 0.00017 0.00007 0.00041 0.00036 0.10904 0.02634 0.01261 0.00078 0.00016 0.00007 0.00039 0.00034 0.10245 0.02463 0.01108 0.00073 0.00016 0.00007 0.00036 0.00032 0.09664 0.02313 0.00982 0.00068 0.00015 0.00007 0.00034 0.00030 0.09150 0.02181 0.00877 0.00063 0.00014 0.00007 0.00032 0.00028 0.08676 0.02060 0.00789 0.00060 0.00014 0.00007 0.00030 0.00027 0.08233 0.01947 0.00711 0.00056 0.00013 0.00007 0.00029 0.00025 0.07838 0.01847 0.00645 0.00053 0.00013 0.00006 0.00027 0.00024 0.07487 0.01758 0.00590 0.00050 0.00012 0.00006 0.00026 0.00023 0.07148 0.01673 0.00539 0.00047 0.00012 0.00006 0.00024 0.00021 0.06837 0.01595 0.00495 0.00045 0.00011 0.00006 0.00023 0.00020 0.06548 0.01523 0.00456 0.00042 0.00011 0.00006 0.00022 0.00019 0.06294 0.01460 0.00424 0.00040 0.00010 0.00006 0.00021 0.00019 0.06044 0.01398 0.00393 0.00039 0.00010 0.00005 0.00020 0.00018 0.05811 0.01340 0.00366 0.00037 0.00009 0.00005 0.00019 0.00017 0.05596 0.01287 0.00342 0.00035 0.00009 0.00005 0.00019 0.00016 0.05399 0.01239 0.00320 0.00034 0.00009 0.00005 0.00018 0.00016 0.05211 0.01193 0.00301 0.00032 0.00009 0.00005 0.00017 0.00015 0.31409 0.08111 0.13222 0.00212 0.00000 0.00000 0.00070 0.00053 0.29401 0.07541 0.11585 0.00198 0.00000 0.00000 0.00068 0.00053 0.26752 0.06797 0.09572 0.00179 0.00001 0.00000 0.00065 0.00052 0.25027 0.06317 0.08334 0.00167 0.00003 0.00000 0.00063 0.00050 0.23376 0.05862 0.07216 0.00155 0.00006 0.00000 0.00061 0.00049 0.22053 0.05499 0.06374 0.00146 0.00008 0.00000 0.00059 0.00047 0.20875 0.05179 0.05672 0.00137 0.00010 0.00000 0.00056 0.00046 0.19713 0.04866 0.05023 0.00129 0.00011 0.00000 0.00054 0.00044 0.18764 0.04611 0.04520 0.00122 0.00012 0.00000 0.00052 0.00042 0.17891 0.04377 0.04077 0.00116 0.00012 0.00000 0.00050 0.00041 0.17250 0.04207 0.03776 0.00111 0.00013 0.00000 0.00049 0.00040 0.15959 0.03866 0.03194 0.00102 0.00013 0.00000 0.00045 0.00037 0.14944 0.03600 0.02768 0.00095 0.00013 0.00001 0.00043 0.00035 0.13904 0.03329 0.02363 0.00087 0.00013 0.00002 0.00040 0.00033 0.12909 0.03072 0.02009 0.00080 0.00013 0.00003 0.00037 0.00031 0.12076 0.02858 0.01738 0.00074 0.00013 0.00004 0.00035 0.00029 0.11297 0.02660 0.01504 0.00068 0.00013 0.00004 0.00033 0.00027 0.10704 0.02510 0.01342 0.00064 0.00012 0.00004 0.00031 0.00026 0.10026 0.02339 0.01168 0.00059 0.00012 0.00005 0.00029 0.00024 0.09464 0.02198 0.01033 0.00056 0.00011 0.00005 0.00027 0.00023 0.08983 0.02078 0.00927 0.00052 0.00011 0.00005 0.00026 0.00022 0.08414 0.01937 0.00810 0.00048 0.00011 0.00005 0.00024 0.00020 0.07914 0.01814 0.00714 0.00045 0.00010 0.00005 0.00023 0.00019 0.07473 0.01705 0.00635 0.00042 0.00010 0.00005 0.00021 0.00018 0.07068 0.01607 0.00569 0.00039 0.00009 0.00004 0.00020 0.00017 0.06690 0.01515 0.00510 0.00037 0.00009 0.00004 0.00019 0.00016 0.06354 0.01433 0.00461 0.00035 0.00008 0.00004 0.00018 0.00015 0.06056 0.01362 0.00420 0.00033 0.00008 0.00004 0.00017 0.00014 0.05769 0.01293 0.00382 0.00031 0.00008 0.00004 0.00016 0.00013 0.05506 0.01230 0.00350 0.00029 0.00007 0.00004 0.00015 0.00013 0.05263 0.01172 0.00321 0.00028 0.00007 0.00004 0.00014 0.00012 0.05049 0.01122 0.00298 0.00026 0.00007 0.00004 0.00014 0.00012 0.04839 0.01072 0.00276 0.00025 0.00006 0.00004 0.00013 0.00011 0.04644 0.01026 0.00256 0.00024 0.00006 0.00003 0.00012 0.00011 0.04465 0.00984 0.00238 0.00023 0.00006 0.00003 0.00012 0.00010 0.04300 0.00945 0.00223 0.00022 0.00006 0.00003 0.00011 0.00010 0.04144 0.00909 0.00209 0.00021 0.00006 0.00003 0.00011 0.00009 0.27237 0.06720 0.11008 0.00147 0.00000 0.00000 0.00047 0.00031 0.25401 0.06225 0.09565 0.00137 0.00000 0.00000 0.00046 0.00031 0.22992 0.05582 0.07812 0.00123 0.00000 0.00000 0.00044 0.00031 0.21430 0.05169 0.06747 0.00114 0.00002 0.00000 0.00042 0.00031 0.19942 0.04779 0.05794 0.00106 0.00004 0.00000 0.00041 0.00030 0.18754 0.04469 0.05082 0.00099 0.00006 0.00000 0.00039 0.00029 0.17700 0.04197 0.04493 0.00093 0.00007 0.00000 0.00038 0.00028 0.16665 0.03931 0.03954 0.00087 0.00008 0.00000 0.00036 0.00027 0.15820 0.03715 0.03537 0.00082 0.00008 0.00000 0.00035 0.00026 0.15046 0.03518 0.03173 0.00078 0.00009 0.00000 0.00033 0.00026 0.14480 0.03375 0.02927 0.00075 0.00009 0.00000 0.00032 0.00025 0.13342 0.03089 0.02454 0.00068 0.00009 0.00000 0.00030 0.00023 0.12452 0.02867 0.02112 0.00063 0.00009 0.00001 0.00028 0.00022 0.11542 0.02642 0.01789 0.00058 0.00009 0.00002 0.00026 0.00021 0.10676 0.02429 0.01509 0.00053 0.00009 0.00002 0.00025 0.00019 0.09954 0.02252 0.01296 0.00049 0.00009 0.00003 0.00023 0.00018 0.09281 0.02089 0.01114 0.00045 0.00009 0.00003 0.00021 0.00017 0.08770 0.01965 0.00989 0.00042 0.00008 0.00003 0.00020 0.00016 0.08188 0.01826 0.00856 0.00039 0.00008 0.00003 0.00019 0.00015 0.07707 0.01711 0.00753 0.00036 0.00008 0.00003 0.00018 0.00014 0.07297 0.01614 0.00672 0.00034 0.00007 0.00003 0.00017 0.00014 0.06814 0.01500 0.00584 0.00031 0.00007 0.00003 0.00015 0.00013 0.06390 0.01400 0.00512 0.00029 0.00007 0.00003 0.00014 0.00012 0.06017 0.01313 0.00453 0.00027 0.00006 0.00003 0.00014 0.00011 0.05676 0.01233 0.00404 0.00025 0.00006 0.00003 0.00013 0.00010 0.05359 0.01160 0.00360 0.00023 0.00006 0.00003 0.00012 0.00010 0.05077 0.01095 0.00324 0.00022 0.00005 0.00003 0.00011 0.00009 0.04828 0.01038 0.00294 0.00021 0.00005 0.00003 0.00011 0.00009 0.04588 0.00983 0.00267 0.00019 0.00005 0.00003 0.00010 0.00008 0.04370 0.00933 0.00244 0.00018 0.00005 0.00003 0.00010 0.00008 0.04168 0.00887 0.00223 0.00017 0.00005 0.00002 0.00009 0.00007 0.03992 0.00848 0.00206 0.00016 0.00004 0.00002 0.00009 0.00007 0.03818 0.00808 0.00190 0.00016 0.00004 0.00002 0.00008 0.00007 0.03657 0.00772 0.00176 0.00015 0.00004 0.00002 0.00008 0.00006 0.03510 0.00739 0.00164 0.00014 0.00004 0.00002 0.00007 0.00006 0.03374 0.00709 0.00153 0.00013 0.00004 0.00002 0.00007 0.00006 0.03246 0.00681 0.00143 0.00013 0.00004 0.00002 0.00007 0.00006 0.23299 0.05482 0.09061 0.00099 0.00000 0.00000 0.00031 0.00018 0.21645 0.05059 0.07806 0.00091 0.00000 0.00000 0.00030 0.00019 0.19487 0.04512 0.06300 0.00082 0.00000 0.00000 0.00029 0.00019 0.18095 0.04163 0.05396 0.00076 0.00001 0.00000 0.00028 0.00018 0.16775 0.03834 0.04595 0.00070 0.00003 0.00000 0.00026 0.00018 0.15724 0.03574 0.04001 0.00065 0.00004 0.00000 0.00025 0.00018 0.14795 0.03346 0.03514 0.00061 0.00005 0.00000 0.00024 0.00017 0.13887 0.03125 0.03071 0.00057 0.00005 0.00000 0.00023 0.00017 0.13148 0.02945 0.02732 0.00053 0.00006 0.00000 0.00022 0.00016 0.12472 0.02782 0.02436 0.00050 0.00006 0.00000 0.00021 0.00016 0.11980 0.02664 0.02238 0.00048 0.00006 0.00000 0.00021 0.00015 0.10993 0.02428 0.01860 0.00044 0.00006 0.00000 0.00019 0.00015 0.10223 0.02246 0.01589 0.00040 0.00006 0.00001 0.00018 0.00014 0.09441 0.02061 0.01335 0.00037 0.00006 0.00001 0.00017 0.00013 0.08699 0.01888 0.01117 0.00034 0.00006 0.00001 0.00016 0.00012 0.08082 0.01744 0.00952 0.00031 0.00006 0.00002 0.00015 0.00011 0.07510 0.01612 0.00813 0.00028 0.00006 0.00002 0.00014 0.00011 0.07077 0.01513 0.00718 0.00026 0.00005 0.00002 0.00013 0.00010 0.06586 0.01401 0.00617 0.00024 0.00005 0.00002 0.00012 0.00009 0.06181 0.01309 0.00539 0.00023 0.00005 0.00002 0.00011 0.00009 0.05837 0.01232 0.00479 0.00021 0.00005 0.00002 0.00010 0.00008 0.05432 0.01141 0.00414 0.00019 0.00004 0.00002 0.00010 0.00008 0.05079 0.01062 0.00361 0.00018 0.00004 0.00002 0.00009 0.00007 0.04769 0.00993 0.00317 0.00017 0.00004 0.00002 0.00008 0.00007 0.04487 0.00930 0.00282 0.00015 0.00004 0.00002 0.00008 0.00006 0.04224 0.00873 0.00250 0.00014 0.00004 0.00002 0.00007 0.00006 0.03992 0.00822 0.00224 0.00013 0.00003 0.00002 0.00007 0.00006 0.03788 0.00777 0.00203 0.00013 0.00003 0.00002 0.00007 0.00005 0.03591 0.00734 0.00183 0.00012 0.00003 0.00002 0.00006 0.00005 0.03413 0.00696 0.00167 0.00011 0.00003 0.00002 0.00006 0.00005 0.03248 0.00660 0.00152 0.00011 0.00003 0.00002 0.00006 0.00004 0.03105 0.00629 0.00140 0.00010 0.00003 0.00002 0.00005 0.00004 0.02963 0.00599 0.00129 0.00009 0.00003 0.00001 0.00005 0.00004 0.02833 0.00571 0.00119 0.00009 0.00003 0.00001 0.00005 0.00004 0.02714 0.00545 0.00110 0.00009 0.00002 0.00001 0.00004 0.00004 0.02605 0.00522 0.00103 0.00008 0.00002 0.00001 0.00004 0.00004 0.02502 0.00500 0.00096 0.00008 0.00002 0.00001 0.00004 0.00003 0.16267 0.03458 0.05895 0.00039 0.00000 0.00000 0.00012 0.00006 0.14991 0.03165 0.04987 0.00036 0.00000 0.00000 0.00012 0.00006 0.13345 0.02792 0.03926 0.00032 0.00000 0.00000 0.00011 0.00007 0.12294 0.02556 0.03304 0.00029 0.00001 0.00000 0.00011 0.00007 0.11306 0.02335 0.02764 0.00027 0.00001 0.00000 0.00010 0.00007 0.10525 0.02162 0.02370 0.00025 0.00002 0.00000 0.00010 0.00006 0.09841 0.02011 0.02053 0.00023 0.00002 0.00000 0.00009 0.00006 0.09176 0.01866 0.01769 0.00021 0.00002 0.00000 0.00009 0.00006 0.08639 0.01749 0.01554 0.00020 0.00002 0.00000 0.00008 0.00006 0.08150 0.01643 0.01368 0.00019 0.00002 0.00000 0.00008 0.00006 0.07797 0.01567 0.01247 0.00018 0.00002 0.00000 0.00008 0.00006 0.07092 0.01416 0.01017 0.00016 0.00002 0.00000 0.00007 0.00005 0.06547 0.01300 0.00855 0.00015 0.00002 0.00000 0.00007 0.00005 0.05998 0.01184 0.00706 0.00013 0.00002 0.00000 0.00006 0.00005 0.05482 0.01076 0.00581 0.00012 0.00002 0.00001 0.00006 0.00004 0.05056 0.00987 0.00487 0.00011 0.00002 0.00001 0.00005 0.00004 0.04664 0.00905 0.00410 0.00010 0.00002 0.00001 0.00005 0.00004 0.04371 0.00845 0.00358 0.00009 0.00002 0.00001 0.00005 0.00004 0.04039 0.00777 0.00303 0.00009 0.00002 0.00001 0.00004 0.00003 0.03767 0.00721 0.00262 0.00008 0.00002 0.00001 0.00004 0.00003 0.03538 0.00675 0.00230 0.00007 0.00002 0.00001 0.00004 0.00003 0.03271 0.00621 0.00196 0.00007 0.00002 0.00001 0.00003 0.00003 0.03038 0.00574 0.00169 0.00006 0.00002 0.00001 0.00003 0.00003 0.02836 0.00534 0.00147 0.00006 0.00002 0.00001 0.00003 0.00002 0.02653 0.00497 0.00129 0.00005 0.00001 0.00001 0.00003 0.00002 0.02483 0.00464 0.00113 0.00005 0.00001 0.00001 0.00003 0.00002 0.02334 0.00434 0.00101 0.00005 0.00001 0.00001 0.00002 0.00002 0.02204 0.00409 0.00091 0.00004 0.00001 0.00001 0.00002 0.00002 0.02079 0.00384 0.00081 0.00004 0.00001 0.00001 0.00002 0.00002 0.01967 0.00363 0.00073 0.00004 0.00001 0.00001 0.00002 0.00002 0.01863 0.00342 0.00066 0.00003 0.00001 0.00001 0.00002 0.00002 0.01774 0.00325 0.00061 0.00003 0.00001 0.00001 0.00002 0.00001 0.01686 0.00308 0.00056 0.00003 0.00001 0.00001 0.00002 0.00001 0.01605 0.00293 0.00051 0.00003 0.00001 0.00001 0.00002 0.00001 0.01532 0.00278 0.00047 0.00003 0.00001 0.00000 0.00001 0.00001 0.01465 0.00266 0.00044 0.00003 0.00001 0.00000 0.00001 0.00001 0.01402 0.00254 0.00040 0.00002 0.00001 0.00000 0.00001 0.00001 0.10529 0.01998 0.03584 0.00013 0.00000 0.00000 0.00004 0.00002 0.09618 0.01813 0.02973 0.00012 0.00000 0.00000 0.00004 0.00002 0.08457 0.01580 0.02278 0.00010 0.00000 0.00000 0.00003 0.00002 0.07724 0.01434 0.01880 0.00009 0.00000 0.00000 0.00003 0.00002 0.07041 0.01299 0.01542 0.00008 0.00000 0.00000 0.00003 0.00002 0.06506 0.01193 0.01301 0.00008 0.00001 0.00000 0.00003 0.00002 0.06041 0.01103 0.01109 0.00007 0.00001 0.00000 0.00003 0.00002 0.05593 0.01016 0.00941 0.00007 0.00001 0.00000 0.00003 0.00002 0.05233 0.00946 0.00815 0.00006 0.00001 0.00000 0.00003 0.00002 0.04907 0.00884 0.00708 0.00006 0.00001 0.00000 0.00002 0.00002 0.04674 0.00839 0.00639 0.00005 0.00001 0.00000 0.00002 0.00002 0.04211 0.00751 0.00510 0.00005 0.00001 0.00000 0.00002 0.00002 0.03857 0.00684 0.00422 0.00004 0.00001 0.00000 0.00002 0.00002 0.03503 0.00618 0.00342 0.00004 0.00001 0.00000 0.00002 0.00001 0.03173 0.00556 0.00276 0.00004 0.00001 0.00000 0.00002 0.00001 0.02903 0.00506 0.00227 0.00003 0.00001 0.00000 0.00002 0.00001 0.02657 0.00461 0.00188 0.00003 0.00001 0.00000 0.00001 0.00001 0.02474 0.00427 0.00162 0.00003 0.00001 0.00000 0.00001 0.00001 0.02269 0.00390 0.00135 0.00002 0.00001 0.00000 0.00001 0.00001 0.02102 0.00360 0.00115 0.00002 0.00001 0.00000 0.00001 0.00001 0.01963 0.00335 0.00100 0.00002 0.00001 0.00000 0.00001 0.00001 0.01801 0.00305 0.00084 0.00002 0.00001 0.00000 0.00001 0.00001 0.01661 0.00281 0.00071 0.00002 0.00001 0.00000 0.00001 0.00001 0.01540 0.00259 0.00061 0.00002 0.00000 0.00000 0.00001 0.00001 0.01432 0.00240 0.00053 0.00001 0.00000 0.00000 0.00001 0.00001 0.01332 0.00222 0.00046 0.00001 0.00000 0.00000 0.00001 0.00001 0.01245 0.00207 0.00041 0.00001 0.00000 0.00000 0.00001 0.00001 0.01169 0.00194 0.00036 0.00001 0.00000 0.00000 0.00001 0.00001 0.01097 0.00181 0.00032 0.00001 0.00000 0.00000 0.00001 0.00000 0.01033 0.00170 0.00029 0.00001 0.00000 0.00000 0.00001 0.00000 0.00973 0.00160 0.00026 0.00001 0.00000 0.00000 0.00000 0.00000 0.00922 0.00151 0.00024 0.00001 0.00000 0.00000 0.00000 0.00000 0.00872 0.00143 0.00021 0.00001 0.00000 0.00000 0.00000 0.00000 0.00827 0.00135 0.00020 0.00001 0.00000 0.00000 0.00000 0.00000 0.00786 0.00128 0.00018 0.00001 0.00000 0.00000 0.00000 0.00000 0.00748 0.00121 0.00017 0.00001 0.00000 0.00000 0.00000 0.00000 0.00713 0.00115 0.00015 0.00001 0.00000 0.00000 0.00000 0.00000 0.06165 0.01027 0.01986 0.00003 0.00000 0.00000 0.00001 0.00001 0.05576 0.00923 0.01611 0.00003 0.00000 0.00000 0.00001 0.00000 0.04836 0.00793 0.01198 0.00002 0.00000 0.00000 0.00001 0.00000 0.04374 0.00713 0.00967 0.00002 0.00000 0.00000 0.00001 0.00000 0.03948 0.00639 0.00776 0.00002 0.00000 0.00000 0.00001 0.00000 0.03618 0.00583 0.00642 0.00002 0.00000 0.00000 0.00001 0.00000 0.03333 0.00534 0.00538 0.00002 0.00000 0.00000 0.00001 0.00000 0.03061 0.00488 0.00449 0.00001 0.00000 0.00000 0.00001 0.00000 0.02845 0.00452 0.00383 0.00001 0.00000 0.00000 0.00000 0.00000 0.02649 0.00419 0.00327 0.00001 0.00000 0.00000 0.00000 0.00000 0.02511 0.00396 0.00292 0.00001 0.00000 0.00000 0.00000 0.00000 0.02238 0.00350 0.00228 0.00001 0.00000 0.00000 0.00000 0.00000 0.02032 0.00316 0.00185 0.00001 0.00000 0.00000 0.00000 0.00000 0.01827 0.00283 0.00146 0.00001 0.00000 0.00000 0.00000 0.00000 0.01639 0.00252 0.00116 0.00001 0.00000 0.00000 0.00000 0.00000 0.01486 0.00227 0.00093 0.00001 0.00000 0.00000 0.00000 0.00000 0.01348 0.00205 0.00076 0.00001 0.00000 0.00000 0.00000 0.00000 0.01246 0.00189 0.00064 0.00001 0.00000 0.00000 0.00000 0.00000 0.01133 0.00171 0.00053 0.00000 0.00000 0.00000 0.00000 0.00000 0.01042 0.00157 0.00044 0.00000 0.00000 0.00000 0.00000 0.00000 0.00966 0.00145 0.00038 0.00000 0.00000 0.00000 0.00000 0.00000 0.00879 0.00131 0.00031 0.00000 0.00000 0.00000 0.00000 0.00000 0.00805 0.00119 0.00026 0.00000 0.00000 0.00000 0.00000 0.00000 0.00740 0.00109 0.00022 0.00000 0.00000 0.00000 0.00000 0.00000 0.00684 0.00101 0.00019 0.00000 0.00000 0.00000 0.00000 0.00000 0.00632 0.00093 0.00016 0.00000 0.00000 0.00000 0.00000 0.00000 0.00586 0.00086 0.00014 0.00000 0.00000 0.00000 0.00000 0.00000 0.00548 0.00080 0.00013 0.00000 0.00000 0.00000 0.00000 0.00000 0.00510 0.00074 0.00011 0.00000 0.00000 0.00000 0.00000 0.00000 0.00478 0.00069 0.00010 0.00000 0.00000 0.00000 0.00000 0.00000 0.00448 0.00065 0.00009 0.00000 0.00000 0.00000 0.00000 0.00000 0.00422 0.00061 0.00008 0.00000 0.00000 0.00000 0.00000 0.00000 0.00397 0.00057 0.00007 0.00000 0.00000 0.00000 0.00000 0.00000 0.00375 0.00054 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00354 0.00051 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00336 0.00048 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.00319 0.00045 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.03131 0.00446 0.00962 0.00000 0.00000 0.00000 0.00000 0.00000 0.02800 0.00397 0.00761 0.00000 0.00000 0.00000 0.00000 0.00000 0.02390 0.00335 0.00546 0.00000 0.00000 0.00000 0.00000 0.00000 0.02137 0.00298 0.00430 0.00000 0.00000 0.00000 0.00000 0.00000 0.01907 0.00264 0.00336 0.00000 0.00000 0.00000 0.00000 0.00000 0.01730 0.00239 0.00272 0.00000 0.00000 0.00000 0.00000 0.00000 0.01580 0.00217 0.00223 0.00000 0.00000 0.00000 0.00000 0.00000 0.01437 0.00196 0.00182 0.00000 0.00000 0.00000 0.00000 0.00000 0.01325 0.00180 0.00153 0.00000 0.00000 0.00000 0.00000 0.00000 0.01224 0.00166 0.00128 0.00000 0.00000 0.00000 0.00000 0.00000 0.01154 0.00156 0.00113 0.00000 0.00000 0.00000 0.00000 0.00000 0.01016 0.00136 0.00086 0.00000 0.00000 0.00000 0.00000 0.00000 0.00912 0.00122 0.00068 0.00000 0.00000 0.00000 0.00000 0.00000 0.00811 0.00108 0.00052 0.00000 0.00000 0.00000 0.00000 0.00000 0.00719 0.00095 0.00040 0.00000 0.00000 0.00000 0.00000 0.00000 0.00645 0.00085 0.00032 0.00000 0.00000 0.00000 0.00000 0.00000 0.00579 0.00076 0.00025 0.00000 0.00000 0.00000 0.00000 0.00000 0.00531 0.00069 0.00021 0.00000 0.00000 0.00000 0.00000 0.00000 0.00478 0.00062 0.00017 0.00000 0.00000 0.00000 0.00000 0.00000 0.00436 0.00056 0.00014 0.00000 0.00000 0.00000 0.00000 0.00000 0.00401 0.00051 0.00012 0.00000 0.00000 0.00000 0.00000 0.00000 0.00361 0.00046 0.00010 0.00000 0.00000 0.00000 0.00000 0.00000 0.00328 0.00042 0.00008 0.00000 0.00000 0.00000 0.00000 0.00000 0.00299 0.00038 0.00007 0.00000 0.00000 0.00000 0.00000 0.00000 0.00274 0.00035 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00251 0.00032 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.00231 0.00029 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00214 0.00027 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00198 0.00025 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00184 0.00023 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00172 0.00021 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00161 0.00020 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00150 0.00019 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00141 0.00017 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00133 0.00016 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00125 0.00015 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00118 0.00014 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00348 0.00031 0.00100 0.00000 0.00000 0.00000 0.00000 0.00000 0.00301 0.00027 0.00074 0.00000 0.00000 0.00000 0.00000 0.00000 0.00245 0.00022 0.00048 0.00000 0.00000 0.00000 0.00000 0.00000 0.00212 0.00019 0.00035 0.00000 0.00000 0.00000 0.00000 0.00000 0.00183 0.00016 0.00025 0.00000 0.00000 0.00000 0.00000 0.00000 0.00162 0.00014 0.00019 0.00000 0.00000 0.00000 0.00000 0.00000 0.00144 0.00012 0.00015 0.00000 0.00000 0.00000 0.00000 0.00000 0.00127 0.00011 0.00011 0.00000 0.00000 0.00000 0.00000 0.00000 0.00115 0.00010 0.00009 0.00000 0.00000 0.00000 0.00000 0.00000 0.00103 0.00009 0.00007 0.00000 0.00000 0.00000 0.00000 0.00000 0.00096 0.00008 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00081 0.00007 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00071 0.00006 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00061 0.00005 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00052 0.00004 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00046 0.00004 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00040 0.00003 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00036 0.00003 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00031 0.00003 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00028 0.00002 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00025 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00022 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00019 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00017 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00015 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00014 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00012 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00011 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00010 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00009 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00008 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00008 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00007 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00006 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00006 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00006 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00005 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 ����������������herwig++-2.6.0.orig/PDF/mrst/2001/������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464205�016745� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/mrst/2001/lo2002.dat��������������������������������������������������������0000644�0001750�0001750�00000430760�11754474775�020402� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 0.02868 0.01983 3.26262 0.79781 0.00000 0.00000 0.40487 0.79815 0.02946 0.02010 5.73797 0.81178 0.00000 0.00000 0.42127 0.81220 0.03064 0.02049 10.20858 0.84814 0.01526 0.00000 0.46118 0.84868 0.03150 0.02076 14.17109 0.88969 0.05245 0.00000 0.50528 0.89031 0.03242 0.02104 18.93278 0.94703 0.11887 0.00000 0.56528 0.94775 0.03321 0.02128 23.82756 1.01552 0.19143 0.00000 0.63602 1.01632 0.03396 0.02150 28.96789 1.09314 0.27327 0.00000 0.71577 1.09401 0.03477 0.02173 34.82466 1.18633 0.37124 0.00000 0.81120 1.18729 0.03546 0.02192 40.71563 1.29013 0.47901 0.00000 0.91691 1.29116 0.03613 0.02210 46.50583 1.39393 0.58661 0.00000 1.02254 1.39503 0.03666 0.02223 51.66962 1.49380 0.68946 0.00000 1.12385 1.49496 0.03778 0.02252 63.15939 1.72569 0.92763 0.05195 1.35875 1.72697 0.03873 0.02275 73.79615 1.95489 1.16215 0.19082 1.59051 1.95627 0.03979 0.02299 86.51966 2.24862 1.46171 0.52762 1.88703 2.25011 0.04087 0.02323 101.03897 2.60399 1.82303 0.89522 2.24527 2.60561 0.04184 0.02343 115.08780 2.96410 2.18843 1.26852 2.60792 2.96582 0.04280 0.02361 129.97009 3.36007 2.58963 1.67852 3.00640 3.36190 0.04358 0.02376 142.82649 3.71283 2.94667 2.04229 3.36122 3.71474 0.04451 0.02392 159.41597 4.18942 3.42835 2.53209 3.84026 4.19144 0.04531 0.02405 174.54755 4.63656 3.87992 2.99073 4.28953 4.63867 0.04603 0.02416 188.85797 5.07072 4.31808 3.43525 4.72561 5.07291 0.04693 0.02429 207.83775 5.66886 4.92122 4.04629 5.32616 5.67116 0.04775 0.02440 226.11504 6.25999 5.51695 4.64933 5.91950 6.26238 0.04850 0.02448 243.74278 6.84644 6.10765 5.24674 6.50799 6.84891 0.04923 0.02456 261.96274 7.47330 6.73868 5.88436 7.13686 7.47586 0.04993 0.02463 279.90930 8.09913 7.36855 6.52058 7.76463 8.10177 0.05057 0.02468 297.57956 8.73981 8.01298 7.17091 8.40711 8.74252 0.05116 0.02472 314.22507 9.34869 8.62536 7.78878 9.01767 9.35147 0.05173 0.02475 331.45432 9.99965 9.27979 8.44864 9.67030 10.00251 0.05229 0.02477 348.40161 10.64589 9.92939 9.10352 10.31815 10.64880 0.05280 0.02479 364.93622 11.29623 10.58289 9.76196 10.97001 11.29920 0.05327 0.02480 380.46472 11.90770 11.19732 10.38103 11.58291 11.91073 0.05373 0.02479 396.62225 12.56871 11.86128 11.04958 12.24533 12.57179 0.05417 0.02479 412.44385 13.21597 12.51143 11.70423 12.89398 13.21911 0.05458 0.02478 427.80600 13.86195 13.16013 12.35717 13.54127 13.86514 0.05496 0.02477 442.43796 14.48409 13.78483 12.98585 14.16463 14.48732 0.05534 0.02475 457.20325 15.11524 14.41855 13.62357 14.79701 15.11852 0.02692 0.01519 3.13149 0.71227 0.00000 0.00000 0.36207 0.71248 0.02752 0.01541 5.31808 0.72562 0.00000 0.00000 0.37757 0.72588 0.02840 0.01574 9.20957 0.75892 0.01362 0.00000 0.41401 0.75925 0.02905 0.01597 12.61190 0.79602 0.04662 0.00000 0.45336 0.79640 0.02974 0.01622 16.66411 0.84656 0.10531 0.00000 0.50625 0.84700 0.03034 0.01642 20.78629 0.90606 0.16840 0.00000 0.56774 0.90655 0.03091 0.01662 25.09068 0.97297 0.23905 0.00000 0.63653 0.97351 0.03151 0.01682 29.97438 1.05291 0.32323 0.00000 0.71844 1.05349 0.03203 0.01700 34.84647 1.14105 0.41490 0.00000 0.80827 1.14168 0.03254 0.01716 39.62848 1.22905 0.50626 0.00000 0.89788 1.22972 0.03294 0.01729 43.86596 1.31308 0.59293 0.00000 0.98317 1.31378 0.03378 0.01756 53.26447 1.50747 0.79289 0.04337 1.18021 1.50824 0.03451 0.01779 61.92062 1.69857 0.98870 0.15915 1.37356 1.69941 0.03531 0.01804 72.21783 1.94211 1.23740 0.43945 1.61956 1.94301 0.03613 0.01829 83.90821 2.23501 1.53557 0.74325 1.91498 2.23599 0.03687 0.01850 95.17340 2.53043 1.83566 1.05028 2.21263 2.53147 0.03760 0.01871 107.06820 2.85408 2.16394 1.38623 2.53849 2.85518 0.03820 0.01888 117.31633 3.14156 2.45521 1.68340 2.82778 3.14272 0.03892 0.01908 130.48875 3.52827 2.84642 2.08172 3.21664 3.52949 0.03955 0.01925 142.47543 3.89014 3.21220 2.45368 3.58037 3.89141 0.04011 0.01941 153.78651 4.24065 3.56624 2.81328 3.93257 4.24197 0.04081 0.01959 168.74200 4.72190 4.05190 3.30586 4.41593 4.72329 0.04146 0.01976 183.11401 5.19642 4.53049 3.79083 4.89238 5.19786 0.04206 0.01991 196.94373 5.66603 5.00384 4.27006 5.36378 5.66751 0.04264 0.02005 211.20070 6.16655 5.50806 4.78004 5.86607 6.16809 0.04320 0.02019 225.22888 6.66570 6.01076 5.28830 6.36691 6.66729 0.04372 0.02031 238.99991 7.17504 6.52341 5.80611 6.87783 7.17667 0.04420 0.02042 251.96388 7.65876 7.01022 6.29771 7.36302 7.66043 0.04468 0.02053 265.34985 8.17457 7.52908 6.82133 7.88028 8.17628 0.04513 0.02063 278.50803 8.68626 8.04375 7.34060 8.39339 8.68801 0.04556 0.02073 291.31647 9.19996 8.56024 7.86141 8.90842 9.20175 0.04596 0.02081 303.34460 9.68293 9.04582 8.35104 9.39263 9.68475 0.04635 0.02090 315.82574 10.20351 9.56899 8.87823 9.91445 10.20536 0.04673 0.02098 328.04739 10.71326 10.08129 9.39447 10.42541 10.71514 0.04708 0.02105 339.89142 11.22098 10.59141 9.90829 10.93427 11.22289 0.04742 0.02111 351.16357 11.70956 11.08225 10.40260 11.42393 11.71149 0.04775 0.02118 362.53439 12.20503 11.57999 10.90383 11.92047 12.20699 0.02752 0.01297 3.00003 0.63319 0.00000 0.00000 0.32247 0.63330 0.02799 0.01319 4.91515 0.64588 0.00000 0.00000 0.33705 0.64601 0.02870 0.01351 8.26911 0.67621 0.01208 0.00000 0.37016 0.67639 0.02923 0.01375 11.15678 0.70912 0.04116 0.00000 0.40505 0.70932 0.02978 0.01400 14.56106 0.75332 0.09265 0.00000 0.45131 0.75354 0.03026 0.01421 17.98239 0.80451 0.14701 0.00000 0.50426 0.80477 0.03071 0.01442 21.53110 0.86159 0.20739 0.00000 0.56298 0.86186 0.03120 0.01463 25.53732 0.92938 0.27894 0.00000 0.63251 0.92969 0.03162 0.01482 29.49489 1.00328 0.35595 0.00000 0.70789 1.00360 0.03203 0.01500 33.37272 1.07689 0.43255 0.00000 0.78293 1.07724 0.03235 0.01515 36.78235 1.14659 0.50458 0.00000 0.85372 1.14695 0.03304 0.01545 44.31506 1.30711 0.67002 0.03564 1.01658 1.30751 0.03362 0.01571 51.20881 1.46389 0.83096 0.13065 1.17533 1.46432 0.03428 0.01600 59.35304 1.66237 1.03400 0.36017 1.37597 1.66284 0.03496 0.01630 68.53975 1.89936 1.27564 0.60684 1.61517 1.89987 0.03557 0.01656 77.34644 2.13702 1.51743 0.85467 1.85478 2.13756 0.03618 0.01683 86.60695 2.39622 1.78073 1.12462 2.11592 2.39679 0.03668 0.01705 94.55816 2.62563 2.01348 1.36249 2.34692 2.62623 0.03729 0.01732 104.72718 2.93255 2.32437 1.67956 2.65572 2.93319 0.03782 0.01755 113.95283 3.21882 2.61409 1.97464 2.94362 3.21948 0.03830 0.01777 122.63343 3.49526 2.89365 2.25904 3.22154 3.49595 0.03890 0.01803 134.06477 3.87318 3.27546 2.64685 3.60130 3.87390 0.03947 0.01828 145.02022 4.24473 3.65060 3.02753 3.97455 4.24548 0.03999 0.01851 155.53078 4.61129 4.02047 3.40250 4.34267 4.61207 0.04051 0.01874 166.32872 5.00056 4.41299 3.80002 4.73348 5.00136 0.04101 0.01897 176.93851 5.38819 4.80376 4.19561 5.12259 5.38902 0.04148 0.01918 187.31253 5.78211 5.20060 4.59693 5.51789 5.78296 0.04192 0.01937 197.07011 6.15587 5.57707 4.97757 5.89293 6.15674 0.04236 0.01957 207.11261 6.55309 5.97699 5.38161 6.29143 6.55398 0.04279 0.01976 216.97545 6.94676 6.37329 5.78191 6.68634 6.94768 0.04319 0.01994 226.54674 7.34075 6.76974 6.18210 7.08150 7.34169 0.04356 0.02011 235.53401 7.71112 7.14241 6.55829 7.45296 7.71208 0.04394 0.02028 244.82532 8.10884 7.54242 6.96178 7.85175 8.10981 0.04431 0.02045 253.92348 8.49829 7.93412 7.35689 8.24226 8.49928 0.04466 0.02061 262.71765 8.88514 8.32309 7.74907 8.63012 8.88615 0.04499 0.02076 271.07822 9.25703 8.69697 8.12597 9.00294 9.25805 0.04532 0.02091 279.50790 9.63397 9.07591 8.50793 9.38083 9.63500 0.02896 0.01281 2.92297 0.58993 0.00000 0.00000 0.30079 0.59000 0.02940 0.01304 4.68731 0.60221 0.00000 0.00000 0.31483 0.60229 0.03006 0.01339 7.74613 0.63086 0.01122 0.00000 0.34605 0.63096 0.03054 0.01364 10.35384 0.66143 0.03814 0.00000 0.37846 0.66155 0.03106 0.01391 13.40764 0.70212 0.08565 0.00000 0.42107 0.70226 0.03150 0.01415 16.45225 0.74878 0.13525 0.00000 0.46935 0.74893 0.03193 0.01437 19.59612 0.80050 0.19005 0.00000 0.52260 0.80067 0.03238 0.01461 23.13335 0.86171 0.25476 0.00000 0.58542 0.86189 0.03278 0.01482 26.60437 0.92792 0.32387 0.00000 0.65300 0.92812 0.03316 0.01502 30.00150 0.99379 0.39251 0.00000 0.72019 0.99401 0.03346 0.01518 32.97251 1.05579 0.45669 0.00000 0.78321 1.05601 0.03410 0.01553 39.51831 1.19818 0.60365 0.03151 0.92776 1.19842 0.03466 0.01582 45.48229 1.33664 0.74598 0.11546 1.06805 1.33691 0.03528 0.01615 52.49380 1.51113 0.92472 0.31792 1.24454 1.51142 0.03592 0.01650 60.36674 1.71846 1.13637 0.53426 1.45391 1.71877 0.03651 0.01682 67.88602 1.92555 1.34730 0.75075 1.66281 1.92588 0.03709 0.01713 75.76931 2.15071 1.57626 0.98580 1.88976 2.15106 0.03757 0.01739 82.52126 2.34949 1.77814 1.19239 2.09000 2.34986 0.03816 0.01771 91.12516 2.61441 2.04676 1.46668 2.35667 2.61480 0.03867 0.01799 98.91364 2.86093 2.29649 1.72133 2.60470 2.86134 0.03914 0.01825 106.22652 3.09849 2.53695 1.96622 2.84363 3.09892 0.03974 0.01858 115.82823 3.42225 2.86432 2.29910 3.16909 3.42270 0.04030 0.01889 125.01170 3.73990 3.18530 2.62517 3.48830 3.74036 0.04081 0.01917 133.80266 4.05257 3.50106 2.94559 3.80243 4.05306 0.04133 0.01946 142.81082 4.38375 3.83525 3.28438 4.13503 4.38425 0.04183 0.01974 151.65273 4.71318 4.16761 3.62115 4.46584 4.71370 0.04231 0.02001 160.27245 5.04696 4.50410 3.96175 4.80089 5.04750 0.04276 0.02026 168.37471 5.36344 4.82311 4.28458 5.11856 5.36399 0.04320 0.02051 176.69308 5.69896 5.16114 4.62639 5.45526 5.69953 0.04364 0.02076 184.85721 6.03127 5.49589 4.96480 5.78871 6.03185 0.04405 0.02099 192.76157 6.36308 5.82998 5.30233 6.12160 6.36367 0.04444 0.02121 200.18300 6.67497 6.14401 5.61958 6.43449 6.67558 0.04484 0.02144 207.83394 7.00895 6.48013 5.95889 6.76948 7.00957 0.04522 0.02166 215.32581 7.33600 6.80927 6.29115 7.09751 7.33663 0.04559 0.02187 222.55305 7.66023 7.13547 6.62030 7.42266 7.66087 0.04594 0.02207 229.41829 7.97167 7.44876 6.93635 7.73497 7.97233 0.04629 0.02228 236.33766 8.28722 7.76617 7.25654 8.05140 8.28789 0.03047 0.01319 2.86823 0.56058 0.00000 0.00000 0.28608 0.56062 0.03090 0.01344 4.52917 0.57256 0.00000 0.00000 0.29973 0.57261 0.03155 0.01382 7.38722 0.60003 0.01064 0.00000 0.32963 0.60010 0.03202 0.01410 9.80574 0.62899 0.03608 0.00000 0.36034 0.62907 0.03253 0.01439 12.62365 0.66730 0.08088 0.00000 0.40046 0.66739 0.03297 0.01465 15.41586 0.71088 0.12725 0.00000 0.44557 0.71098 0.03339 0.01489 18.28915 0.75898 0.17828 0.00000 0.49513 0.75909 0.03383 0.01516 21.51347 0.81575 0.23837 0.00000 0.55342 0.81587 0.03422 0.01539 24.66093 0.87680 0.30217 0.00000 0.61577 0.87693 0.03460 0.01561 27.73858 0.93748 0.36548 0.00000 0.67770 0.93761 0.03490 0.01579 30.41881 0.99433 0.42440 0.00000 0.73552 0.99447 0.03554 0.01617 36.31118 1.12460 0.55902 0.02877 0.86783 1.12476 0.03609 0.01650 41.66076 1.25085 0.68895 0.10533 0.99581 1.25102 0.03670 0.01687 47.92530 1.40939 0.85152 0.28979 1.15625 1.40958 0.03735 0.01726 54.93362 1.59703 1.04326 0.48599 1.34582 1.59724 0.03793 0.01761 61.60695 1.78387 1.23375 0.68171 1.53438 1.78409 0.03852 0.01797 68.58638 1.98651 1.44000 0.89368 1.73871 1.98674 0.03901 0.01827 74.55205 2.16504 1.62148 1.07958 1.91863 2.16529 0.03960 0.01863 82.13134 2.40226 1.86221 1.32564 2.15750 2.40253 0.04012 0.01895 88.97979 2.62259 2.08560 1.55364 2.37926 2.62287 0.04060 0.01924 95.39880 2.83455 2.30031 1.77251 2.59251 2.83484 0.04121 0.01962 103.80615 3.12270 2.59189 2.06926 2.88227 3.12300 0.04177 0.01997 111.83379 3.40493 2.87729 2.35944 3.16599 3.40525 0.04231 0.02030 119.50406 3.68224 3.15752 2.64406 3.44467 3.68257 0.04284 0.02064 127.34692 3.97532 3.45348 2.94432 3.73910 3.97567 0.04336 0.02096 135.03825 4.26661 3.74754 3.24254 4.03169 4.26698 0.04385 0.02127 142.51753 4.56102 4.04453 3.54338 4.32731 4.56140 0.04432 0.02156 149.54393 4.84001 4.32593 3.82836 4.60743 4.84040 0.04478 0.02186 156.74277 5.13521 4.62351 4.12948 4.90374 5.13561 0.04524 0.02214 163.80406 5.42740 4.91801 4.42743 5.19702 5.42781 0.04568 0.02242 170.62720 5.71860 5.21139 4.72403 5.48924 5.71902 0.04609 0.02268 177.03300 5.99230 5.48713 5.00279 5.76389 5.99274 0.04651 0.02295 183.62106 6.28472 5.78157 5.30023 6.05726 6.28516 0.04692 0.02321 190.07216 6.57105 6.06990 5.59149 6.34452 6.57151 0.04731 0.02346 196.28477 6.85446 6.35518 5.87953 6.62881 6.85493 0.04768 0.02369 202.18208 7.12651 6.62899 6.15594 6.90168 7.12699 0.04805 0.02393 208.12401 7.40207 6.90632 6.43587 7.17807 7.40256 0.03192 0.01378 2.82572 0.53857 0.00000 0.00000 0.27504 0.53860 0.03235 0.01405 4.40852 0.55032 0.00000 0.00000 0.28839 0.55035 0.03300 0.01445 7.11577 0.57689 0.01019 0.00000 0.31729 0.57694 0.03348 0.01475 9.39295 0.60464 0.03452 0.00000 0.34672 0.60469 0.03399 0.01507 12.03518 0.64114 0.07728 0.00000 0.38496 0.64120 0.03443 0.01535 14.64013 0.68242 0.12124 0.00000 0.42771 0.68248 0.03486 0.01562 17.31306 0.72782 0.16945 0.00000 0.47450 0.72789 0.03531 0.01590 20.30601 0.78127 0.22610 0.00000 0.52942 0.78135 0.03570 0.01615 23.21488 0.83849 0.28596 0.00000 0.58788 0.83857 0.03608 0.01640 26.05705 0.89530 0.34530 0.00000 0.64589 0.89540 0.03639 0.01659 28.52342 0.94834 0.40033 0.00000 0.69986 0.94844 0.03703 0.01701 33.93570 1.06964 0.52581 0.02674 0.82312 1.06975 0.03759 0.01737 38.83460 1.18687 0.64657 0.09786 0.94201 1.18699 0.03822 0.01777 44.55217 1.33364 0.79722 0.26902 1.09060 1.33378 0.03888 0.01820 50.92841 1.50679 0.97431 0.45040 1.26560 1.50694 0.03947 0.01859 56.98413 1.67875 1.14978 0.63085 1.43920 1.67890 0.04007 0.01898 63.30437 1.86485 1.33935 0.82586 1.62693 1.86502 0.04057 0.01930 68.69711 2.02854 1.50587 0.99659 1.79194 2.02872 0.04118 0.01970 75.53069 2.24547 1.72618 1.22196 2.01045 2.24566 0.04172 0.02006 81.69555 2.44663 1.93027 1.43045 2.21299 2.44684 0.04221 0.02038 87.46497 2.63986 2.12615 1.63029 2.40746 2.64008 0.04284 0.02080 95.00524 2.90200 2.39159 1.90065 2.67114 2.90222 0.04343 0.02119 102.19433 3.15837 2.65101 2.16461 2.92894 3.15861 0.04398 0.02156 109.05212 3.40989 2.90534 2.42311 3.18177 3.41014 0.04454 0.02193 116.05089 3.67521 3.17343 2.69530 3.44839 3.67548 0.04508 0.02229 122.90907 3.93872 3.43960 2.96542 3.71315 3.93900 0.04560 0.02263 129.56332 4.20448 3.70784 3.23733 3.98007 4.20477 0.04608 0.02296 135.81158 4.45620 3.96188 3.49477 4.23287 4.45650 0.04657 0.02329 142.20132 4.72207 4.23004 3.76630 4.49981 4.72239 0.04705 0.02361 148.46581 4.98511 4.49531 4.03485 4.76389 4.98543 0.04752 0.02392 154.50826 5.24682 4.75911 4.30171 5.02657 5.24716 0.04795 0.02421 160.18079 5.49279 5.00704 4.55251 5.27346 5.49313 0.04839 0.02450 166.00214 5.75504 5.27125 4.81957 5.53662 5.75540 0.04882 0.02479 171.70244 6.01185 5.52996 5.08107 5.79432 6.01221 0.04924 0.02507 177.18365 6.26566 5.78557 5.33931 6.04897 6.26604 0.04963 0.02534 182.38333 6.50916 6.03077 5.58697 6.29326 6.50954 0.05003 0.02561 187.62083 6.75573 6.27904 5.83772 6.54063 6.75612 0.03797 0.01721 2.69348 0.47450 0.00000 0.00000 0.24288 0.47450 0.03847 0.01757 4.04496 0.48549 0.00000 0.00000 0.25528 0.48549 0.03921 0.01810 6.31127 0.50933 0.00888 0.00000 0.28116 0.50933 0.03975 0.01849 8.17950 0.53347 0.02993 0.00000 0.30678 0.53348 0.04033 0.01891 10.31671 0.56468 0.06670 0.00000 0.33951 0.56469 0.04083 0.01928 12.38737 0.59924 0.10364 0.00000 0.37537 0.59925 0.04132 0.01963 14.49100 0.63682 0.14371 0.00000 0.41418 0.63684 0.04183 0.02001 16.82839 0.68072 0.19043 0.00000 0.45936 0.68074 0.04229 0.02034 19.06514 0.72695 0.23900 0.00000 0.50668 0.72697 0.04273 0.02067 21.24462 0.77272 0.28702 0.00000 0.55351 0.77275 0.04308 0.02092 23.11173 0.81489 0.33095 0.00000 0.59650 0.81493 0.04383 0.02148 27.18173 0.91074 0.43050 0.02100 0.69407 0.91078 0.04448 0.02195 30.82492 1.00244 0.52533 0.07673 0.78723 1.00249 0.04521 0.02249 35.02410 1.11605 0.64238 0.21040 0.90244 1.11611 0.04598 0.02306 39.65190 1.24852 0.77834 0.35013 1.03653 1.24858 0.04668 0.02358 44.00408 1.37882 0.91176 0.48782 1.16828 1.37890 0.04740 0.02410 48.51014 1.51877 1.05479 0.63547 1.30967 1.51886 0.04799 0.02454 52.32898 1.64109 1.17963 0.76390 1.43316 1.64119 0.04871 0.02508 57.11964 1.80166 1.34319 0.93178 1.59512 1.80177 0.04936 0.02555 61.41471 1.94968 1.49381 1.08615 1.74435 1.94980 0.04995 0.02598 65.41017 2.09108 1.63757 1.23328 1.88684 2.09122 0.05071 0.02654 70.58760 2.28137 1.83079 1.43069 2.07849 2.28152 0.05142 0.02707 75.49496 2.46647 2.01859 1.62236 2.26485 2.46663 0.05209 0.02756 80.14552 2.64697 2.20159 1.80892 2.44651 2.64714 0.05277 0.02805 84.85535 2.83603 2.39311 2.00393 2.63671 2.83622 0.05343 0.02854 89.45599 3.02327 2.58272 2.19689 2.82505 3.02347 0.05407 0.02900 93.87942 3.21055 2.77221 2.38950 3.01335 3.21076 0.05466 0.02944 98.02464 3.38761 2.95133 2.57152 3.19137 3.38784 0.05527 0.02988 102.23146 3.57334 3.13910 2.76217 3.37805 3.57359 0.05586 0.03031 106.34715 3.75674 3.32449 2.95034 3.56237 3.75700 0.05644 0.03072 110.28783 3.93803 3.50764 3.13610 3.74452 3.93831 0.05697 0.03111 113.98627 4.10837 3.67973 3.31063 3.91567 4.10866 0.05753 0.03151 117.74758 4.28855 3.86165 3.49497 4.09666 4.28885 0.05807 0.03190 121.43068 4.46498 4.03978 3.67548 4.27388 4.46530 0.05859 0.03228 124.94939 4.63836 4.21477 3.85270 4.44800 4.63869 0.05908 0.03263 128.27834 4.80431 4.38224 4.02226 4.61465 4.80465 0.05958 0.03299 131.62738 4.97217 4.55162 4.19374 4.78321 4.97253 0.04638 0.02307 2.56090 0.41689 0.00000 0.00000 0.21391 0.41689 0.04701 0.02355 3.69835 0.42709 0.00000 0.00000 0.22535 0.42710 0.04795 0.02427 5.56534 0.44829 0.00768 0.00000 0.24836 0.44830 0.04864 0.02480 7.07013 0.46907 0.02571 0.00000 0.27044 0.46910 0.04938 0.02536 8.76387 0.49544 0.05701 0.00000 0.29816 0.49547 0.05002 0.02585 10.37198 0.52398 0.08767 0.00000 0.32784 0.52402 0.05064 0.02633 11.98657 0.55461 0.12051 0.00000 0.35955 0.55466 0.05131 0.02683 13.76401 0.59007 0.15848 0.00000 0.39614 0.59013 0.05189 0.02728 15.43300 0.62671 0.19721 0.00000 0.43375 0.62678 0.05245 0.02771 17.05379 0.66287 0.23537 0.00000 0.47084 0.66294 0.05290 0.02805 18.42010 0.69568 0.26975 0.00000 0.50438 0.69577 0.05387 0.02878 21.37328 0.76969 0.34706 0.01611 0.57991 0.76979 0.05471 0.02942 23.97900 0.83965 0.41981 0.05878 0.65117 0.83977 0.05566 0.03013 26.93309 0.92522 0.50845 0.16067 0.73815 0.92536 0.05665 0.03088 30.13773 1.02356 0.60991 0.26543 0.83794 1.02372 0.05756 0.03156 33.11150 1.11915 0.70828 0.36743 0.93481 1.11934 0.05848 0.03225 36.15660 1.22083 0.81271 0.47576 1.03776 1.22103 0.05925 0.03282 38.71291 1.30899 0.90312 0.56921 1.12696 1.30921 0.06019 0.03352 41.87431 1.42328 1.02009 0.68983 1.24249 1.42353 0.06103 0.03414 44.68345 1.52783 1.12697 0.79988 1.34811 1.52810 0.06180 0.03470 47.27382 1.62698 1.22823 0.90398 1.44823 1.62727 0.06278 0.03543 50.58855 1.75899 1.36286 1.04216 1.58145 1.75930 0.06371 0.03611 53.70292 1.88644 1.49275 1.17531 1.71003 1.88679 0.06458 0.03674 56.62513 2.00973 1.61828 1.30384 1.83435 2.01010 0.06546 0.03738 59.54999 2.13760 1.74836 1.43687 1.96324 2.13800 0.06632 0.03800 62.39303 2.26374 1.87662 1.56797 2.09036 2.26416 0.06714 0.03860 65.08789 2.38845 2.00333 1.69731 2.21599 2.38890 0.06792 0.03916 67.60527 2.50605 2.12278 1.81920 2.33444 2.50652 0.06871 0.03972 70.12897 2.62821 2.24678 1.94562 2.45745 2.62871 0.06948 0.04027 72.58965 2.74851 2.36886 2.07006 2.57857 2.74903 0.07022 0.04080 74.91754 2.86630 2.48833 2.19172 2.69713 2.86685 0.07092 0.04129 77.10139 2.97694 2.60054 2.30600 2.80850 2.97751 0.07163 0.04180 79.28922 3.09260 2.71778 2.42527 2.92488 3.09320 0.07233 0.04229 81.43156 3.20585 2.83257 2.54207 3.03885 3.20648 0.07301 0.04277 83.45605 3.31621 2.94438 2.65576 3.14987 3.31686 0.07365 0.04322 85.36254 3.42147 3.05101 2.76415 3.25577 3.42215 0.07430 0.04367 87.27650 3.52777 3.15868 2.87360 3.36270 3.52847 0.05240 0.02762 2.48319 0.38619 0.00000 0.00000 0.19846 0.38621 0.05313 0.02820 3.50346 0.39591 0.00000 0.00000 0.20933 0.39593 0.05424 0.02905 5.15614 0.41560 0.00702 0.00000 0.23071 0.41565 0.05506 0.02968 6.46943 0.43454 0.02341 0.00000 0.25086 0.43461 0.05593 0.03034 7.93229 0.45829 0.05177 0.00000 0.27586 0.45837 0.05669 0.03093 9.30309 0.48362 0.07908 0.00000 0.30226 0.48371 0.05743 0.03149 10.66881 0.51059 0.10812 0.00000 0.33024 0.51070 0.05821 0.03208 12.16301 0.54162 0.14152 0.00000 0.36233 0.54175 0.05890 0.03260 13.54828 0.57331 0.17516 0.00000 0.39492 0.57345 0.05957 0.03311 14.89047 0.60451 0.20823 0.00000 0.42699 0.60467 0.06011 0.03351 16.00948 0.63255 0.23775 0.00000 0.45571 0.63272 0.06125 0.03437 18.41388 0.69546 0.30375 0.01366 0.52004 0.69566 0.06225 0.03511 20.51386 0.75446 0.36537 0.04975 0.58025 0.75468 0.06337 0.03595 22.86632 0.82600 0.43979 0.13570 0.65312 0.82626 0.06455 0.03682 25.38924 0.90742 0.52415 0.22310 0.73590 0.90772 0.06562 0.03761 27.70743 0.98592 0.60527 0.30751 0.81560 0.98625 0.06672 0.03841 30.06165 1.06886 0.69080 0.39655 0.89973 1.06922 0.06762 0.03908 32.02379 1.14037 0.76442 0.47293 0.97221 1.14076 0.06874 0.03988 34.42388 1.23227 0.85885 0.57065 1.06528 1.23270 0.06972 0.04060 36.54174 1.31588 0.94466 0.65932 1.14989 1.31634 0.07063 0.04125 38.48119 1.39475 1.02551 0.74275 1.22968 1.39524 0.07179 0.04208 40.93817 1.49895 1.13219 0.85263 1.33502 1.49948 0.07289 0.04286 43.23027 1.59902 1.23456 0.95794 1.43614 1.59959 0.07392 0.04359 45.36345 1.69523 1.33289 1.05898 1.53333 1.69584 0.07495 0.04432 47.47777 1.79429 1.43404 1.16279 1.63336 1.79494 0.07596 0.04503 49.52445 1.89172 1.53348 1.26479 1.73171 1.89241 0.07693 0.04571 51.44099 1.98722 1.63086 1.36454 1.82807 1.98794 0.07784 0.04635 53.22641 2.07708 1.72247 1.45837 1.91874 2.07784 0.07876 0.04699 54.99727 2.16973 1.81687 1.55494 2.01219 2.17053 0.07967 0.04761 56.71874 2.26077 1.90960 1.64979 2.10401 2.26161 0.08054 0.04821 58.32988 2.34926 1.99968 1.74186 2.19324 2.35014 0.08135 0.04877 59.84075 2.43236 2.08427 1.82831 2.27702 2.43327 0.08219 0.04934 61.33371 2.51842 2.17183 1.91770 2.36377 2.51937 0.08301 0.04990 62.79562 2.60270 2.25756 2.00524 2.44871 2.60368 0.08380 0.05043 64.16315 2.68426 2.34050 2.08987 2.53091 2.68527 0.08454 0.05094 65.44534 2.76184 2.41938 2.17034 2.60908 2.76289 0.08530 0.05145 66.73000 2.84007 2.49892 2.25148 2.68792 2.84116 0.05715 0.03136 2.42799 0.36574 0.00000 0.00000 0.18815 0.36578 0.05798 0.03200 3.36870 0.37511 0.00000 0.00000 0.19862 0.37516 0.05923 0.03296 4.87796 0.39377 0.00657 0.00000 0.21888 0.39385 0.06016 0.03367 6.06483 0.41145 0.02186 0.00000 0.23772 0.41155 0.06114 0.03442 7.37665 0.43343 0.04823 0.00000 0.26089 0.43355 0.06201 0.03507 8.59396 0.45662 0.07333 0.00000 0.28510 0.45677 0.06284 0.03570 9.79977 0.48117 0.09986 0.00000 0.31062 0.48134 0.06372 0.03637 11.11283 0.50930 0.13025 0.00000 0.33976 0.50950 0.06451 0.03695 12.31847 0.53777 0.16059 0.00000 0.36909 0.53798 0.06526 0.03752 13.48456 0.56575 0.19036 0.00000 0.39790 0.56599 0.06587 0.03797 14.44853 0.59071 0.21673 0.00000 0.42350 0.59096 0.06716 0.03892 16.51036 0.64649 0.27549 0.01209 0.48065 0.64679 0.06829 0.03975 18.29681 0.69850 0.33001 0.04400 0.53382 0.69884 0.06955 0.04068 20.27912 0.76116 0.39543 0.11983 0.59774 0.76153 0.07089 0.04165 22.38585 0.83194 0.46902 0.19630 0.66982 0.83236 0.07211 0.04253 24.30636 0.89975 0.53935 0.26969 0.73879 0.90021 0.07334 0.04341 26.24369 0.97103 0.61312 0.34672 0.81121 0.97154 0.07436 0.04414 27.84888 1.03222 0.67634 0.41250 0.87333 1.03277 0.07562 0.04504 29.79465 1.11033 0.75688 0.49610 0.95256 1.11092 0.07673 0.04582 31.50170 1.18108 0.82975 0.57163 1.02428 1.18172 0.07775 0.04654 33.05585 1.24755 0.89813 0.64240 1.09163 1.24823 0.07906 0.04746 35.00805 1.33484 0.98781 0.73505 1.18002 1.33557 0.08029 0.04831 36.81817 1.41830 1.07348 0.82346 1.26450 1.41909 0.08145 0.04911 38.49089 1.49817 1.15539 0.90789 1.34530 1.49900 0.08261 0.04991 40.13471 1.57992 1.23916 0.99412 1.42798 1.58081 0.08375 0.05069 41.72011 1.66013 1.32131 1.07865 1.50908 1.66107 0.08483 0.05143 43.18865 1.73819 1.40119 1.16074 1.58798 1.73918 0.08585 0.05212 44.55335 1.81153 1.47622 1.23782 1.66210 1.81257 0.08688 0.05282 45.89378 1.88669 1.55306 1.31668 1.73802 1.88777 0.08790 0.05350 47.19325 1.96040 1.62841 1.39400 1.81249 1.96153 0.08887 0.05415 48.39732 2.03161 1.70116 1.46859 1.88441 2.03279 0.08978 0.05475 49.52603 2.09847 1.76946 1.53861 1.95193 2.09969 0.09071 0.05537 50.62695 2.16718 1.83962 1.61047 2.02130 2.16844 0.09162 0.05598 51.70497 2.23446 1.90831 1.68084 2.08924 2.23577 0.09250 0.05656 52.70356 2.29920 1.97439 1.74849 2.15459 2.30055 0.09333 0.05710 53.63582 2.36064 2.03708 1.81266 2.21660 2.36203 0.09417 0.05765 54.56806 2.42253 2.10023 1.87729 2.27907 2.42396 0.06088 0.03436 2.38644 0.35085 0.00000 0.00000 0.18064 0.35089 0.06179 0.03506 3.26756 0.35995 0.00000 0.00000 0.19079 0.36001 0.06315 0.03611 4.67103 0.37782 0.00623 0.00000 0.21021 0.37791 0.06415 0.03688 5.76611 0.39457 0.02071 0.00000 0.22807 0.39469 0.06522 0.03770 6.96949 0.41524 0.04561 0.00000 0.24990 0.41539 0.06616 0.03841 8.07825 0.43689 0.06910 0.00000 0.27253 0.43706 0.06707 0.03909 9.17199 0.45970 0.09383 0.00000 0.29626 0.45989 0.06803 0.03982 10.35901 0.48574 0.12205 0.00000 0.32328 0.48597 0.06888 0.04046 11.44149 0.51191 0.15004 0.00000 0.35029 0.51217 0.06970 0.04107 12.48721 0.53761 0.17748 0.00000 0.37679 0.53790 0.07036 0.04156 13.34657 0.56042 0.20164 0.00000 0.40021 0.56072 0.07178 0.04260 15.17888 0.61124 0.25534 0.01101 0.45236 0.61159 0.07300 0.04350 16.75773 0.65842 0.30496 0.04004 0.50066 0.65882 0.07439 0.04450 18.49826 0.71500 0.36421 0.10892 0.55846 0.71544 0.07584 0.04555 20.33705 0.77858 0.43053 0.17798 0.62330 0.77908 0.07717 0.04650 22.00474 0.83924 0.49362 0.24398 0.68508 0.83979 0.07851 0.04746 23.67981 0.90278 0.55958 0.31301 0.74972 0.90339 0.07963 0.04825 25.06247 0.95716 0.61594 0.37179 0.80501 0.95781 0.08100 0.04921 26.72903 1.02628 0.68741 0.44615 0.87521 1.02699 0.08222 0.05006 28.18592 1.08871 0.75190 0.51315 0.93858 1.08947 0.08333 0.05084 29.50754 1.14721 0.81225 0.57576 0.99793 1.14802 0.08476 0.05182 31.15910 1.22372 0.89109 0.65741 1.07551 1.22459 0.08610 0.05274 32.68489 1.29669 0.96621 0.73512 1.14947 1.29762 0.08736 0.05360 34.08889 1.36630 1.03781 0.80909 1.21999 1.36729 0.08863 0.05446 35.46172 1.43731 1.11077 0.88439 1.29190 1.43836 0.08987 0.05530 36.78291 1.50687 1.18223 0.95808 1.36233 1.50797 0.09105 0.05609 37.99901 1.57427 1.25140 1.02934 1.43054 1.57544 0.09216 0.05683 39.12754 1.63754 1.31632 1.09619 1.49457 1.63876 0.09328 0.05758 40.22980 1.70213 1.38255 1.16434 1.55992 1.70341 0.09438 0.05830 41.29673 1.76542 1.44744 1.23108 1.62394 1.76675 0.09544 0.05900 42.27973 1.82635 1.50987 1.29524 1.68556 1.82774 0.09643 0.05965 43.20103 1.88354 1.56847 1.35547 1.74340 1.88498 0.09744 0.06031 44.09311 1.94206 1.62840 1.41701 1.80256 1.94354 0.09844 0.06095 44.96663 1.99935 1.68707 1.47726 1.86049 2.00089 0.09939 0.06157 45.77141 2.05431 1.74334 1.53501 1.91605 2.05590 0.10029 0.06215 46.52093 2.10639 1.79664 1.58971 1.96869 2.10803 0.10121 0.06274 47.26964 2.15882 1.85031 1.64477 2.02169 2.16051 0.07498 0.04604 2.25181 0.30806 0.00000 0.00000 0.15901 0.30818 0.07620 0.04696 2.95898 0.31626 0.00000 0.00000 0.16817 0.31643 0.07804 0.04833 4.05921 0.33171 0.00525 0.00000 0.18501 0.33195 0.07940 0.04934 4.89571 0.34568 0.01734 0.00000 0.19999 0.34597 0.08085 0.05040 5.79716 0.36255 0.03799 0.00000 0.21790 0.36290 0.08212 0.05131 6.60800 0.37974 0.05688 0.00000 0.23599 0.38015 0.08334 0.05220 7.39669 0.39759 0.07649 0.00000 0.25468 0.39804 0.08465 0.05313 8.24267 0.41774 0.09863 0.00000 0.27572 0.41826 0.08580 0.05395 8.99608 0.43755 0.12010 0.00000 0.29629 0.43811 0.08691 0.05473 9.72084 0.45692 0.14106 0.00000 0.31639 0.45754 0.08780 0.05535 10.30415 0.47379 0.15919 0.00000 0.33384 0.47445 0.08971 0.05668 11.53397 0.51106 0.19910 0.00808 0.37232 0.51181 0.09136 0.05782 12.57260 0.54515 0.23543 0.02934 0.40743 0.54598 0.09322 0.05909 13.69010 0.58538 0.27813 0.07951 0.44880 0.58631 0.09517 0.06041 14.84513 0.62980 0.32508 0.12882 0.49437 0.63082 0.09695 0.06160 15.87280 0.67155 0.36908 0.17526 0.53715 0.67266 0.09875 0.06279 16.88836 0.71475 0.41452 0.22325 0.58138 0.71596 0.10024 0.06378 17.71461 0.75134 0.45295 0.26370 0.61881 0.75263 0.10206 0.06497 18.68894 0.79711 0.50092 0.31408 0.66559 0.79850 0.10367 0.06602 19.52887 0.83805 0.54377 0.35902 0.70741 0.83953 0.10515 0.06697 20.27999 0.87604 0.58349 0.40063 0.74619 0.87760 0.10703 0.06817 21.19949 0.92504 0.63467 0.45414 0.79619 0.92671 0.10880 0.06930 22.03647 0.97131 0.68295 0.50458 0.84339 0.97309 0.11046 0.07034 22.79333 1.01497 0.72848 0.55208 0.88791 1.01684 0.11212 0.07138 23.51808 1.05892 0.77427 0.59981 0.93271 1.06089 0.11374 0.07239 24.20925 1.10174 0.81887 0.64628 0.97635 1.10381 0.11528 0.07334 24.82849 1.14258 0.86137 0.69051 1.01795 1.14474 0.11672 0.07423 25.39969 1.18077 0.90112 0.73186 1.05685 1.18302 0.11818 0.07512 25.94404 1.21922 0.94112 0.77345 1.09603 1.22156 0.11961 0.07598 26.46735 1.25676 0.98017 0.81404 1.13426 1.25919 0.12097 0.07680 26.93728 1.29241 1.01723 0.85254 1.17056 1.29492 0.12224 0.07757 27.37732 1.32585 1.05201 0.88867 1.20462 1.32844 0.12354 0.07835 27.78925 1.35948 1.08698 0.92498 1.23887 1.36216 0.12482 0.07911 28.19261 1.39242 1.12123 0.96053 1.27241 1.39518 0.12604 0.07983 28.55477 1.42362 1.15366 0.99420 1.30418 1.42645 0.12719 0.08051 28.88815 1.45303 1.18424 1.02593 1.33412 1.45594 0.12835 0.08119 29.21946 1.48256 1.21494 1.05779 1.36420 1.48554 0.09303 0.06145 2.10760 0.27033 0.00000 0.00000 0.13989 0.27068 0.09473 0.06264 2.65769 0.27755 0.00000 0.00000 0.14800 0.27800 0.09729 0.06440 3.49266 0.29059 0.00436 0.00000 0.16234 0.29117 0.09918 0.06569 4.11005 0.30197 0.01428 0.00000 0.17466 0.30265 0.10118 0.06704 4.76128 0.31537 0.03110 0.00000 0.18904 0.31617 0.10294 0.06821 5.33204 0.32865 0.04600 0.00000 0.20317 0.32955 0.10463 0.06933 5.87883 0.34222 0.06123 0.00000 0.21753 0.34322 0.10643 0.07051 6.45775 0.35736 0.07823 0.00000 0.23351 0.35846 0.10802 0.07154 6.96000 0.37188 0.09433 0.00000 0.24875 0.37308 0.10954 0.07252 7.44091 0.38602 0.10997 0.00000 0.26359 0.38731 0.11076 0.07330 7.81901 0.39810 0.12323 0.00000 0.27621 0.39946 0.11337 0.07495 8.60599 0.42450 0.15214 0.00579 0.30377 0.42603 0.11562 0.07637 9.25510 0.44827 0.17804 0.02098 0.32852 0.44995 0.11815 0.07794 9.93317 0.47584 0.20796 0.05660 0.35717 0.47767 0.12079 0.07955 10.61643 0.50568 0.24022 0.09088 0.38813 0.50769 0.12319 0.08101 11.21067 0.53328 0.26998 0.12267 0.41672 0.53545 0.12560 0.08246 11.78651 0.56145 0.30030 0.15510 0.44589 0.56378 0.12760 0.08365 12.24675 0.58504 0.32565 0.18213 0.47029 0.58751 0.13003 0.08508 12.77498 0.61403 0.35676 0.21523 0.50027 0.61667 0.13217 0.08633 13.22244 0.63968 0.38426 0.24446 0.52678 0.64247 0.13412 0.08747 13.61530 0.66323 0.40948 0.27123 0.55110 0.66615 0.13661 0.08889 14.08356 0.69312 0.44148 0.30516 0.58197 0.69622 0.13893 0.09022 14.50153 0.72105 0.47136 0.33682 0.61080 0.72431 0.14109 0.09144 14.87063 0.74707 0.49919 0.36628 0.63766 0.75048 0.14325 0.09265 15.21404 0.77287 0.52679 0.39547 0.66430 0.77644 0.14535 0.09382 15.53733 0.79786 0.55351 0.42373 0.69009 0.80158 0.14734 0.09492 15.81584 0.82125 0.57852 0.45017 0.71424 0.82511 0.14920 0.09594 16.07046 0.84303 0.60183 0.47480 0.73674 0.84704 0.15106 0.09695 16.30416 0.86463 0.62494 0.49921 0.75903 0.86877 0.15288 0.09794 16.52645 0.88561 0.64739 0.52294 0.78070 0.88988 0.15461 0.09887 16.71795 0.90522 0.66840 0.54512 0.80096 0.90962 0.15624 0.09974 16.89700 0.92360 0.68809 0.56593 0.81996 0.92813 0.15787 0.10061 17.05516 0.94173 0.70752 0.58646 0.83869 0.94637 0.15948 0.10145 17.21004 0.95947 0.72655 0.60656 0.85704 0.96424 0.16100 0.10226 17.34270 0.97603 0.74433 0.62535 0.87417 0.98091 0.16244 0.10301 17.46212 0.99154 0.76099 0.64295 0.89021 0.99653 0.16389 0.10377 17.57961 1.00707 0.77768 0.66059 0.90629 1.01217 0.10663 0.07280 2.01579 0.25015 0.00000 0.00000 0.12967 0.25083 0.10874 0.07417 2.48183 0.25674 0.00000 0.00000 0.13713 0.25755 0.11189 0.07620 3.17843 0.26836 0.00387 0.00000 0.15003 0.26937 0.11421 0.07767 3.68446 0.27826 0.01262 0.00000 0.16087 0.27943 0.11667 0.07922 4.21085 0.28977 0.02738 0.00000 0.17335 0.29110 0.11882 0.08055 4.66455 0.30097 0.04019 0.00000 0.18538 0.30245 0.12089 0.08182 5.09493 0.31230 0.05317 0.00000 0.19750 0.31392 0.12308 0.08316 5.54668 0.32484 0.06754 0.00000 0.21088 0.32662 0.12500 0.08432 5.93185 0.33669 0.08095 0.00000 0.22345 0.33860 0.12685 0.08543 6.29950 0.34820 0.09394 0.00000 0.23565 0.35024 0.12833 0.08630 6.58401 0.35790 0.10482 0.00000 0.24590 0.36004 0.13148 0.08815 7.17093 0.37898 0.12838 0.00469 0.26813 0.38135 0.13418 0.08973 7.64692 0.39775 0.14927 0.01697 0.28789 0.40032 0.13721 0.09147 8.13336 0.41928 0.17314 0.04567 0.31051 0.42207 0.14037 0.09326 8.61465 0.44228 0.19855 0.07292 0.33464 0.44531 0.14322 0.09486 9.02626 0.46332 0.22174 0.09793 0.35669 0.46657 0.14608 0.09645 9.41928 0.48461 0.24518 0.12324 0.37898 0.48808 0.14844 0.09776 9.72910 0.50230 0.26463 0.14418 0.39749 0.50594 0.15130 0.09931 10.07723 0.52378 0.28823 0.16956 0.41997 0.52765 0.15381 0.10067 10.36800 0.54265 0.30894 0.19181 0.43970 0.54670 0.15610 0.10189 10.61944 0.55983 0.32781 0.21206 0.45767 0.56407 0.15899 0.10343 10.91247 0.58142 0.35151 0.23747 0.48025 0.58588 0.16168 0.10484 11.16961 0.60143 0.37348 0.26102 0.50118 0.60610 0.16419 0.10615 11.39190 0.61990 0.39377 0.28277 0.52051 0.62478 0.16668 0.10743 11.59326 0.63804 0.41371 0.30412 0.53949 0.64311 0.16909 0.10866 11.78047 0.65551 0.43293 0.32470 0.55779 0.66078 0.17136 0.10981 11.93552 0.67166 0.45071 0.34375 0.57470 0.67711 0.17348 0.11088 12.07599 0.68666 0.46723 0.36145 0.59042 0.69227 0.17560 0.11194 12.19972 0.70135 0.48345 0.37882 0.60582 0.70713 0.17766 0.11297 12.31603 0.71557 0.49916 0.39565 0.62075 0.72152 0.17961 0.11393 12.41136 0.72871 0.51370 0.41124 0.63455 0.73482 0.18144 0.11483 12.50033 0.74102 0.52733 0.42585 0.64748 0.74728 0.18327 0.11571 12.57309 0.75297 0.54060 0.44010 0.66005 0.75938 0.18507 0.11658 12.64433 0.76467 0.55359 0.45404 0.67237 0.77123 0.18677 0.11740 12.70122 0.77547 0.56562 0.46696 0.68374 0.78216 0.18837 0.11817 12.75058 0.78553 0.57683 0.47901 0.69435 0.79235 0.18998 0.11893 12.79834 0.79558 0.58805 0.49107 0.70495 0.80253 0.11815 0.08211 1.94675 0.23654 0.00000 0.00000 0.12279 0.23759 0.12061 0.08362 2.35670 0.24265 0.00000 0.00000 0.12978 0.24388 0.12428 0.08585 2.96251 0.25323 0.00353 0.00000 0.14165 0.25473 0.12698 0.08746 3.39672 0.26211 0.01149 0.00000 0.15147 0.26381 0.12984 0.08916 3.84360 0.27232 0.02487 0.00000 0.16266 0.27424 0.13232 0.09060 4.22391 0.28213 0.03630 0.00000 0.17331 0.28423 0.13471 0.09198 4.58195 0.29197 0.04781 0.00000 0.18396 0.29426 0.13723 0.09344 4.95526 0.30281 0.06048 0.00000 0.19565 0.30529 0.13945 0.09469 5.26926 0.31293 0.07216 0.00000 0.20650 0.31558 0.14157 0.09589 5.56826 0.32274 0.08347 0.00000 0.21701 0.32556 0.14326 0.09683 5.79676 0.33092 0.09284 0.00000 0.22575 0.33388 0.14685 0.09882 6.26475 0.34863 0.11304 0.00401 0.24463 0.35187 0.14993 0.10051 6.63903 0.36427 0.13082 0.01448 0.26128 0.36776 0.15337 0.10237 7.01442 0.38204 0.15095 0.03890 0.28017 0.38581 0.15694 0.10427 7.38026 0.40085 0.17219 0.06185 0.30012 0.40490 0.16015 0.10596 7.68867 0.41791 0.19142 0.08275 0.31821 0.42223 0.16336 0.10764 7.97939 0.43505 0.21073 0.10378 0.33637 0.43963 0.16601 0.10900 8.20579 0.44920 0.22666 0.12108 0.35136 0.45399 0.16920 0.11063 8.45534 0.46622 0.24583 0.14188 0.36940 0.47128 0.17199 0.11204 8.66109 0.48108 0.26256 0.16002 0.38515 0.48637 0.17453 0.11332 8.83646 0.49453 0.27772 0.17645 0.39941 0.50004 0.17773 0.11490 9.03643 0.51129 0.29661 0.19691 0.41717 0.51706 0.18070 0.11636 9.20893 0.52672 0.31402 0.21578 0.43355 0.53274 0.18345 0.11770 9.35480 0.54087 0.33001 0.23310 0.44857 0.54712 0.18618 0.11901 9.48316 0.55463 0.34560 0.24998 0.46320 0.56112 0.18881 0.12028 9.60085 0.56785 0.36058 0.26622 0.47725 0.57455 0.19128 0.12144 9.69392 0.57992 0.37432 0.28111 0.49011 0.58684 0.19359 0.12252 9.77727 0.59111 0.38705 0.29491 0.50203 0.59822 0.19588 0.12359 9.84687 0.60195 0.39944 0.30836 0.51361 0.60926 0.19810 0.12462 9.91121 0.61243 0.41142 0.32137 0.52480 0.61992 0.20020 0.12558 9.96019 0.62200 0.42241 0.33332 0.53505 0.62967 0.20217 0.12648 10.00577 0.63097 0.43272 0.34453 0.54465 0.63881 0.20413 0.12736 10.03830 0.63956 0.44264 0.35534 0.55387 0.64757 0.20605 0.12822 10.07016 0.64796 0.45236 0.36593 0.56291 0.65614 0.20786 0.12902 10.09198 0.65564 0.46128 0.37566 0.57117 0.66397 0.20956 0.12978 10.10918 0.66276 0.46958 0.38472 0.57885 0.67124 0.21127 0.13053 10.12504 0.66986 0.47785 0.39377 0.58651 0.67848 0.12859 0.09019 1.89094 0.22627 0.00000 0.00000 0.11762 0.22777 0.13137 0.09181 2.25945 0.23199 0.00000 0.00000 0.12423 0.23371 0.13551 0.09420 2.79898 0.24175 0.00328 0.00000 0.13531 0.24380 0.13855 0.09593 3.18145 0.24984 0.01065 0.00000 0.14436 0.25214 0.14175 0.09773 3.57155 0.25907 0.02299 0.00000 0.15459 0.26163 0.14453 0.09927 3.90005 0.26783 0.03342 0.00000 0.16422 0.27062 0.14720 0.10074 4.20738 0.27658 0.04385 0.00000 0.17379 0.27959 0.15002 0.10228 4.52598 0.28616 0.05529 0.00000 0.18424 0.28940 0.15248 0.10360 4.79090 0.29503 0.06573 0.00000 0.19385 0.29847 0.15483 0.10486 5.04263 0.30360 0.07582 0.00000 0.20315 0.30725 0.15671 0.10585 5.23294 0.31070 0.08412 0.00000 0.21082 0.31451 0.16068 0.10794 5.62023 0.32600 0.10195 0.00353 0.22731 0.33014 0.16408 0.10970 5.92610 0.33942 0.11754 0.01274 0.24176 0.34385 0.16786 0.11164 6.22761 0.35455 0.13507 0.03415 0.25804 0.35931 0.17177 0.11361 6.51739 0.37044 0.15341 0.05411 0.27510 0.37553 0.17527 0.11536 6.75842 0.38474 0.16992 0.07219 0.29045 0.39013 0.17878 0.11709 6.98283 0.39901 0.18641 0.09028 0.30578 0.40471 0.18165 0.11850 7.15553 0.41074 0.19994 0.10509 0.31837 0.41669 0.18510 0.12016 7.34227 0.42473 0.21611 0.12278 0.33340 0.43098 0.18812 0.12160 7.49420 0.43688 0.23016 0.13815 0.34645 0.44339 0.19086 0.12290 7.62175 0.44782 0.24283 0.15200 0.35822 0.45457 0.19428 0.12450 7.76378 0.46133 0.25851 0.16916 0.37277 0.46839 0.19746 0.12598 7.88397 0.47371 0.27291 0.18491 0.38612 0.48105 0.20040 0.12732 7.98301 0.48499 0.28606 0.19930 0.39829 0.49258 0.20330 0.12864 8.06712 0.49587 0.29879 0.21324 0.41005 0.50372 0.20609 0.12990 8.14285 0.50628 0.31100 0.22661 0.42132 0.51438 0.20870 0.13105 8.19902 0.51570 0.32209 0.23879 0.43154 0.52402 0.21113 0.13213 8.24850 0.52440 0.33237 0.25006 0.44099 0.53293 0.21354 0.13318 8.28641 0.53275 0.34229 0.26097 0.45010 0.54150 0.21588 0.13419 8.32045 0.54080 0.35186 0.27150 0.45887 0.54976 0.21807 0.13513 8.34278 0.54808 0.36059 0.28112 0.46684 0.55723 0.22013 0.13601 8.36343 0.55490 0.36876 0.29013 0.47431 0.56423 0.22216 0.13686 8.37331 0.56135 0.37656 0.29875 0.48140 0.57085 0.22416 0.13770 8.38298 0.56766 0.38419 0.30719 0.48834 0.57734 0.22603 0.13848 8.38535 0.57336 0.39115 0.31491 0.49464 0.58320 0.22779 0.13920 8.38486 0.57862 0.39760 0.32207 0.50047 0.58862 0.22956 0.13993 8.38322 0.58385 0.40403 0.32921 0.50627 0.59401 0.14764 0.10404 1.80353 0.21107 0.00000 0.00000 0.11006 0.21365 0.15098 0.10583 2.11301 0.21614 0.00000 0.00000 0.11607 0.21902 0.15594 0.10846 2.55937 0.22464 0.00291 0.00000 0.12595 0.22796 0.15957 0.11035 2.87010 0.23154 0.00942 0.00000 0.13386 0.23519 0.16337 0.11232 3.18232 0.23931 0.02028 0.00000 0.14268 0.24330 0.16665 0.11398 3.44068 0.24656 0.02927 0.00000 0.15085 0.25086 0.16978 0.11556 3.67984 0.25373 0.03819 0.00000 0.15888 0.25832 0.17309 0.11722 3.92538 0.26153 0.04790 0.00000 0.16759 0.26642 0.17596 0.11863 4.12555 0.26863 0.05664 0.00000 0.17548 0.27378 0.17870 0.11998 4.31508 0.27548 0.06506 0.00000 0.18309 0.28089 0.18087 0.12102 4.45568 0.28108 0.07189 0.00000 0.18929 0.28669 0.18545 0.12323 4.73854 0.29305 0.08649 0.00288 0.20253 0.29908 0.18936 0.12508 4.95681 0.30344 0.09912 0.01038 0.21400 0.30984 0.19368 0.12710 5.16489 0.31501 0.11316 0.02776 0.22677 0.32181 0.19810 0.12914 5.35963 0.32697 0.12768 0.04375 0.23996 0.33418 0.20206 0.13094 5.51734 0.33761 0.14060 0.05809 0.25171 0.34518 0.20598 0.13270 5.66052 0.34811 0.15339 0.07232 0.26331 0.35605 0.20919 0.13413 5.76796 0.35666 0.16380 0.08389 0.27276 0.36490 0.21302 0.13580 5.87933 0.36670 0.17610 0.09755 0.28390 0.37530 0.21635 0.13724 5.96719 0.37534 0.18670 0.10934 0.29349 0.38425 0.21935 0.13853 6.03830 0.38305 0.19619 0.11990 0.30206 0.39223 0.22309 0.14011 6.11282 0.39243 0.20781 0.13284 0.31252 0.40196 0.22654 0.14156 6.17261 0.40094 0.21840 0.14464 0.32203 0.41078 0.22972 0.14287 6.21818 0.40858 0.22798 0.15532 0.33061 0.41873 0.23282 0.14413 6.25244 0.41585 0.23715 0.16558 0.33880 0.42628 0.23581 0.14534 6.28121 0.42276 0.24590 0.17538 0.34659 0.43346 0.23858 0.14643 6.29687 0.42888 0.25375 0.18419 0.35354 0.43983 0.24114 0.14744 6.30929 0.43451 0.26099 0.19233 0.35995 0.44570 0.24367 0.14842 6.31318 0.43981 0.26790 0.20012 0.36602 0.45123 0.24612 0.14937 6.31486 0.44488 0.27454 0.20762 0.37185 0.45653 0.24839 0.15023 6.30932 0.44938 0.28051 0.21438 0.37706 0.46123 0.25053 0.15103 6.30391 0.45359 0.28611 0.22072 0.38193 0.46563 0.25262 0.15181 6.29080 0.45745 0.29135 0.22670 0.38645 0.46968 0.25467 0.15256 6.27796 0.46123 0.29649 0.23256 0.39088 0.47364 0.25658 0.15326 6.26108 0.46456 0.30111 0.23786 0.39483 0.47715 0.25836 0.15390 6.24327 0.46761 0.30537 0.24275 0.39846 0.48036 0.26015 0.15454 6.22460 0.47063 0.30960 0.24761 0.40206 0.48354 0.17373 0.12133 1.70789 0.19490 0.00000 0.00000 0.10220 0.19946 0.17776 0.12328 1.95929 0.19923 0.00000 0.00000 0.10755 0.20419 0.18372 0.12613 2.31552 0.20632 0.00254 0.00000 0.11614 0.21188 0.18804 0.12817 2.55809 0.21196 0.00818 0.00000 0.12287 0.21795 0.19255 0.13027 2.79732 0.21821 0.01754 0.00000 0.13026 0.22466 0.19641 0.13204 2.99106 0.22394 0.02514 0.00000 0.13697 0.23077 0.20008 0.13371 3.16802 0.22953 0.03259 0.00000 0.14350 0.23674 0.20394 0.13544 3.34746 0.23556 0.04063 0.00000 0.15051 0.24315 0.20725 0.13691 3.49002 0.24095 0.04775 0.00000 0.15675 0.24887 0.21042 0.13831 3.62437 0.24613 0.05458 0.00000 0.16275 0.25437 0.21290 0.13938 3.72152 0.25029 0.06005 0.00000 0.16756 0.25878 0.21813 0.14163 3.91383 0.25913 0.07165 0.00229 0.17775 0.26813 0.22256 0.14351 4.05724 0.26669 0.08157 0.00822 0.18647 0.27613 0.22741 0.14554 4.18690 0.27496 0.09245 0.02192 0.19602 0.28488 0.23234 0.14756 4.30321 0.28336 0.10352 0.03433 0.20573 0.29376 0.23671 0.14933 4.39319 0.29069 0.11326 0.04532 0.21424 0.30153 0.24101 0.15104 4.47119 0.29784 0.12278 0.05613 0.22255 0.30909 0.24451 0.15241 4.52691 0.30357 0.13047 0.06485 0.22924 0.31516 0.24864 0.15400 4.57965 0.31017 0.13942 0.07501 0.23699 0.32216 0.25221 0.15536 4.61829 0.31577 0.14706 0.08371 0.24358 0.32810 0.25541 0.15656 4.64661 0.32069 0.15384 0.09143 0.24941 0.33332 0.25936 0.15802 4.67091 0.32655 0.16203 0.10079 0.25640 0.33956 0.26297 0.15933 4.68644 0.33177 0.16941 0.10925 0.26268 0.34513 0.26627 0.16050 4.69353 0.33638 0.17602 0.11683 0.26825 0.35005 0.26946 0.16162 4.69273 0.34065 0.18226 0.12403 0.27348 0.35462 0.27253 0.16268 4.68881 0.34466 0.18817 0.13087 0.27841 0.35891 0.27532 0.16362 4.67717 0.34809 0.19338 0.13692 0.28269 0.36260 0.27792 0.16448 4.66483 0.35122 0.19816 0.14250 0.28662 0.36596 0.28043 0.16530 4.64674 0.35406 0.20265 0.14776 0.29025 0.36903 0.28287 0.16609 4.62772 0.35675 0.20695 0.15281 0.29372 0.37194 0.28510 0.16679 4.60505 0.35903 0.21074 0.15731 0.29673 0.37443 0.28719 0.16744 4.58366 0.36117 0.21429 0.16152 0.29954 0.37675 0.28922 0.16805 4.55729 0.36300 0.21755 0.16541 0.30206 0.37877 0.29119 0.16865 4.53147 0.36480 0.22073 0.16923 0.30452 0.38074 0.29302 0.16918 4.50409 0.36631 0.22354 0.17263 0.30665 0.38241 0.29471 0.16967 4.47710 0.36765 0.22611 0.17575 0.30857 0.38390 0.29641 0.17015 4.44952 0.36896 0.22865 0.17885 0.31047 0.38535 0.21385 0.14498 1.59831 0.17554 0.00000 0.00000 0.09319 0.18409 0.21874 0.14706 1.78910 0.17893 0.00000 0.00000 0.09772 0.18802 0.22589 0.15005 2.05304 0.18435 0.00214 0.00000 0.10482 0.19422 0.23102 0.15216 2.22726 0.18855 0.00684 0.00000 0.11024 0.19898 0.23633 0.15432 2.39445 0.19311 0.01461 0.00000 0.11607 0.20411 0.24083 0.15611 2.52568 0.19719 0.02074 0.00000 0.12124 0.20867 0.24507 0.15778 2.64318 0.20111 0.02668 0.00000 0.12619 0.21304 0.24950 0.15950 2.76007 0.20528 0.03303 0.00000 0.13144 0.21767 0.25325 0.16093 2.84923 0.20891 0.03852 0.00000 0.13601 0.22170 0.25684 0.16230 2.93261 0.21239 0.04378 0.00000 0.14037 0.22555 0.25962 0.16333 2.99037 0.21511 0.04791 0.00000 0.14380 0.22856 0.26542 0.16546 3.10142 0.22082 0.05658 0.00171 0.15098 0.23486 0.27029 0.16722 3.17889 0.22560 0.06388 0.00614 0.15701 0.24014 0.27555 0.16908 3.24107 0.23070 0.07175 0.01630 0.16348 0.24576 0.28082 0.17089 3.29141 0.23571 0.07960 0.02534 0.16990 0.25129 0.28543 0.17244 3.32557 0.23996 0.08639 0.03323 0.17540 0.25599 0.28992 0.17392 3.35084 0.24399 0.09294 0.04088 0.18067 0.26046 0.29353 0.17508 3.36541 0.24715 0.09815 0.04699 0.18483 0.26396 0.29773 0.17639 3.37275 0.25065 0.10410 0.05399 0.18952 0.26785 0.30132 0.17748 3.37397 0.25353 0.10912 0.05992 0.19345 0.27107 0.30450 0.17843 3.37039 0.25599 0.11351 0.06513 0.19685 0.27382 0.30836 0.17955 3.35840 0.25878 0.11872 0.07134 0.20081 0.27696 0.31186 0.18052 3.34267 0.26118 0.12334 0.07689 0.20428 0.27967 0.31500 0.18138 3.32340 0.26319 0.12741 0.08180 0.20728 0.28196 0.31799 0.18215 3.29952 0.26493 0.13118 0.08639 0.21000 0.28396 0.32084 0.18287 3.27449 0.26652 0.13471 0.09072 0.21252 0.28579 0.32338 0.18348 3.24630 0.26773 0.13774 0.09447 0.21460 0.28722 0.32572 0.18403 3.21917 0.26881 0.14051 0.09792 0.21648 0.28849 0.32794 0.18451 3.18886 0.26966 0.14303 0.10110 0.21813 0.28952 0.33008 0.18497 3.15859 0.27043 0.14543 0.10414 0.21967 0.29046 0.33199 0.18535 3.12751 0.27097 0.14748 0.10679 0.22093 0.29115 0.33379 0.18570 3.09829 0.27146 0.14940 0.10927 0.22210 0.29178 0.33546 0.18599 3.06653 0.27174 0.15109 0.11151 0.22304 0.29218 0.33710 0.18628 3.03544 0.27200 0.15274 0.11370 0.22395 0.29257 0.33858 0.18650 3.00461 0.27211 0.15415 0.11561 0.22467 0.29278 0.33993 0.18670 2.97499 0.27215 0.15542 0.11734 0.22529 0.29292 0.34128 0.18689 2.94503 0.27217 0.15667 0.11906 0.22588 0.29304 0.25165 0.16486 1.52201 0.16031 0.00000 0.00000 0.08646 0.17346 0.25709 0.16693 1.67294 0.16300 0.00000 0.00000 0.09039 0.17675 0.26497 0.16987 1.87730 0.16720 0.00186 0.00000 0.09641 0.18182 0.27057 0.17192 2.00829 0.17039 0.00594 0.00000 0.10091 0.18561 0.27633 0.17398 2.13063 0.17379 0.01262 0.00000 0.10567 0.18963 0.28114 0.17567 2.22373 0.17676 0.01780 0.00000 0.10980 0.19311 0.28565 0.17722 2.30542 0.17958 0.02276 0.00000 0.11372 0.19640 0.29034 0.17882 2.38501 0.18254 0.02802 0.00000 0.11782 0.19984 0.29426 0.18012 2.44303 0.18505 0.03250 0.00000 0.12132 0.20275 0.29800 0.18134 2.49680 0.18745 0.03676 0.00000 0.12465 0.20552 0.30085 0.18225 2.53214 0.18928 0.04006 0.00000 0.12721 0.20764 0.30679 0.18412 2.59744 0.19307 0.04695 0.00136 0.13253 0.21201 0.31171 0.18562 2.63854 0.19616 0.05266 0.00488 0.13693 0.21557 0.31697 0.18718 2.66454 0.19936 0.05874 0.01292 0.14154 0.21926 0.32215 0.18864 2.68041 0.20239 0.06470 0.01996 0.14600 0.22276 0.32662 0.18986 2.68613 0.20486 0.06978 0.02602 0.14975 0.22563 0.33092 0.19099 2.68513 0.20712 0.07462 0.03186 0.15326 0.22827 0.33434 0.19185 2.67966 0.20883 0.07843 0.03647 0.15598 0.23027 0.33825 0.19278 2.66567 0.21060 0.08270 0.04168 0.15896 0.23237 0.34155 0.19353 2.64974 0.21200 0.08626 0.04606 0.16140 0.23403 0.34444 0.19416 2.63197 0.21312 0.08934 0.04986 0.16346 0.23538 0.34788 0.19484 2.60453 0.21428 0.09293 0.05435 0.16577 0.23680 0.35095 0.19542 2.57600 0.21519 0.09608 0.05832 0.16774 0.23793 0.35366 0.19588 2.54649 0.21585 0.09880 0.06179 0.16938 0.23879 0.35618 0.19626 2.51426 0.21631 0.10127 0.06498 0.17078 0.23941 0.35856 0.19659 2.48188 0.21666 0.10356 0.06798 0.17205 0.23992 0.36061 0.19682 2.44871 0.21678 0.10548 0.07054 0.17300 0.24016 0.36249 0.19701 2.41730 0.21684 0.10721 0.07287 0.17384 0.24034 0.36422 0.19714 2.38416 0.21673 0.10875 0.07499 0.17449 0.24032 0.36587 0.19724 2.35149 0.21658 0.11019 0.07700 0.17508 0.24026 0.36729 0.19727 2.31936 0.21629 0.11139 0.07872 0.17548 0.24004 0.36862 0.19730 2.28918 0.21601 0.11251 0.08033 0.17584 0.23982 0.36980 0.19726 2.25778 0.21557 0.11345 0.08175 0.17603 0.23942 0.37095 0.19722 2.22704 0.21513 0.11436 0.08313 0.17621 0.23903 0.37195 0.19713 2.19735 0.21461 0.11510 0.08431 0.17626 0.23854 0.37284 0.19703 2.16913 0.21408 0.11576 0.08538 0.17627 0.23804 0.37372 0.19692 2.14072 0.21353 0.11640 0.08643 0.17626 0.23751 0.32233 0.19772 1.41660 0.13515 0.00000 0.00000 0.07592 0.15808 0.32814 0.19948 1.51496 0.13683 0.00000 0.00000 0.07893 0.16033 0.33642 0.20192 1.64231 0.13936 0.00149 0.00000 0.08341 0.16365 0.34219 0.20355 1.71870 0.14120 0.00471 0.00000 0.08663 0.16601 0.34802 0.20515 1.78546 0.14310 0.00995 0.00000 0.08994 0.16842 0.35277 0.20639 1.83245 0.14468 0.01388 0.00000 0.09271 0.17040 0.35717 0.20750 1.87143 0.14612 0.01759 0.00000 0.09528 0.17220 0.36167 0.20860 1.90714 0.14759 0.02146 0.00000 0.09792 0.17403 0.36533 0.20943 1.92946 0.14876 0.02466 0.00000 0.10007 0.17547 0.36881 0.21021 1.94947 0.14986 0.02770 0.00000 0.10211 0.17683 0.37139 0.21074 1.95990 0.15064 0.02999 0.00000 0.10362 0.17779 0.37668 0.21179 1.97502 0.15220 0.03472 0.00095 0.10669 0.17969 0.38094 0.21256 1.97735 0.15337 0.03855 0.00338 0.10913 0.18113 0.38536 0.21327 1.96617 0.15444 0.04252 0.00889 0.11157 0.18245 0.38953 0.21382 1.94791 0.15530 0.04631 0.01361 0.11380 0.18352 0.39301 0.21419 1.92647 0.15586 0.04946 0.01759 0.11556 0.18423 0.39624 0.21445 1.90124 0.15625 0.05239 0.02135 0.11712 0.18474 0.39872 0.21459 1.87791 0.15645 0.05465 0.02428 0.11827 0.18502 0.40140 0.21462 1.84602 0.15648 0.05710 0.02752 0.11940 0.18510 0.40358 0.21457 1.81633 0.15638 0.05910 0.03020 0.12025 0.18503 0.40541 0.21445 1.78778 0.15619 0.06079 0.03249 0.12091 0.18485 0.40743 0.21419 1.74970 0.15577 0.06269 0.03513 0.12153 0.18441 0.40914 0.21388 1.71311 0.15526 0.06431 0.03743 0.12197 0.18387 0.41054 0.21350 1.67801 0.15467 0.06566 0.03939 0.12223 0.18323 0.41171 0.21305 1.64229 0.15396 0.06683 0.04116 0.12235 0.18244 0.41275 0.21256 1.60736 0.15321 0.06790 0.04280 0.12239 0.18161 0.41350 0.21201 1.57387 0.15238 0.06873 0.04415 0.12228 0.18068 0.41414 0.21148 1.54255 0.15157 0.06946 0.04537 0.12214 0.17977 0.41460 0.21087 1.51103 0.15066 0.07006 0.04645 0.12188 0.17875 0.41500 0.21026 1.48030 0.14975 0.07062 0.04746 0.12159 0.17772 0.41521 0.20962 1.45124 0.14880 0.07103 0.04829 0.12123 0.17665 0.41540 0.20901 1.42398 0.14792 0.07141 0.04906 0.12088 0.17565 0.41541 0.20833 1.39679 0.14693 0.07166 0.04971 0.12042 0.17453 0.41541 0.20766 1.37017 0.14597 0.07192 0.05034 0.11996 0.17344 0.41529 0.20697 1.34514 0.14500 0.07208 0.05085 0.11947 0.17234 0.41512 0.20631 1.32164 0.14407 0.07220 0.05130 0.11898 0.17127 0.41494 0.20563 1.29807 0.14312 0.07231 0.05174 0.11847 0.17019 0.38673 0.22404 1.33826 0.11382 0.00000 0.00000 0.06722 0.14590 0.39217 0.22524 1.40140 0.11486 0.00000 0.00000 0.06955 0.14727 0.39976 0.22680 1.47840 0.11636 0.00123 0.00000 0.07292 0.14919 0.40492 0.22777 1.52014 0.11739 0.00386 0.00000 0.07526 0.15048 0.41002 0.22864 1.55244 0.11839 0.00812 0.00000 0.07761 0.15170 0.41406 0.22923 1.57173 0.11917 0.01123 0.00000 0.07949 0.15261 0.41772 0.22970 1.58553 0.11983 0.01413 0.00000 0.08120 0.15339 0.42139 0.23012 1.59583 0.12047 0.01711 0.00000 0.08291 0.15411 0.42426 0.23034 1.59822 0.12091 0.01953 0.00000 0.08425 0.15459 0.42696 0.23053 1.59949 0.12131 0.02181 0.00000 0.08550 0.15501 0.42888 0.23059 1.59659 0.12153 0.02349 0.00000 0.08639 0.15524 0.43272 0.23062 1.58542 0.12192 0.02692 0.00070 0.08813 0.15560 0.43567 0.23050 1.56827 0.12212 0.02965 0.00249 0.08945 0.15572 0.43855 0.23020 1.53953 0.12213 0.03242 0.00652 0.09067 0.15562 0.44105 0.22971 1.50615 0.12194 0.03499 0.00990 0.09168 0.15526 0.44296 0.22912 1.47345 0.12161 0.03707 0.01270 0.09239 0.15474 0.44458 0.22843 1.43885 0.12115 0.03897 0.01532 0.09293 0.15407 0.44570 0.22777 1.40915 0.12068 0.04040 0.01732 0.09326 0.15340 0.44670 0.22685 1.37179 0.11995 0.04190 0.01950 0.09347 0.15241 0.44737 0.22596 1.33845 0.11923 0.04310 0.02127 0.09355 0.15144 0.44781 0.22509 1.30761 0.11851 0.04409 0.02277 0.09353 0.15047 0.44805 0.22387 1.26829 0.11747 0.04515 0.02446 0.09335 0.14911 0.44807 0.22266 1.23155 0.11644 0.04603 0.02591 0.09309 0.14775 0.44788 0.22147 1.19735 0.11540 0.04673 0.02713 0.09275 0.14640 0.44746 0.22019 1.16358 0.11428 0.04730 0.02819 0.09230 0.14496 0.44696 0.21893 1.13097 0.11317 0.04780 0.02917 0.09183 0.14353 0.44622 0.21765 1.10069 0.11205 0.04814 0.02995 0.09128 0.14208 0.44549 0.21643 1.07255 0.11098 0.04843 0.03065 0.09075 0.14072 0.44456 0.21515 1.04491 0.10986 0.04863 0.03124 0.09014 0.13928 0.44360 0.21389 1.01813 0.10876 0.04881 0.03179 0.08953 0.13787 0.44252 0.21263 0.99335 0.10767 0.04889 0.03223 0.08888 0.13648 0.44151 0.21145 0.97012 0.10664 0.04897 0.03263 0.08828 0.13518 0.44029 0.21020 0.94752 0.10557 0.04896 0.03294 0.08761 0.13381 0.43910 0.20898 0.92539 0.10452 0.04896 0.03324 0.08695 0.13247 0.43785 0.20778 0.90492 0.10349 0.04890 0.03348 0.08629 0.13117 0.43662 0.20663 0.88582 0.10252 0.04883 0.03367 0.08565 0.12993 0.43535 0.20546 0.86673 0.10153 0.04875 0.03386 0.08500 0.12868 0.44455 0.24514 1.26848 0.09529 0.00000 0.00000 0.05951 0.13471 0.44906 0.24561 1.30553 0.09593 0.00000 0.00000 0.06131 0.13534 0.45518 0.24607 1.34612 0.09681 0.00103 0.00000 0.06384 0.13611 0.45918 0.24622 1.36348 0.09735 0.00321 0.00000 0.06554 0.13653 0.46300 0.24621 1.37212 0.09782 0.00673 0.00000 0.06718 0.13683 0.46586 0.24604 1.37297 0.09813 0.00924 0.00000 0.06845 0.13694 0.46836 0.24577 1.37032 0.09834 0.01155 0.00000 0.06956 0.13695 0.47079 0.24541 1.36433 0.09851 0.01391 0.00000 0.07065 0.13688 0.47252 0.24495 1.35442 0.09854 0.01578 0.00000 0.07144 0.13666 0.47412 0.24448 1.34422 0.09855 0.01753 0.00000 0.07217 0.13644 0.47513 0.24402 1.33347 0.09848 0.01880 0.00000 0.07265 0.13615 0.47704 0.24294 1.30720 0.09825 0.02137 0.00053 0.07356 0.13546 0.47829 0.24187 1.27945 0.09793 0.02337 0.00189 0.07417 0.13472 0.47924 0.24053 1.24198 0.09742 0.02536 0.00494 0.07465 0.13370 0.47971 0.23896 1.20177 0.09673 0.02715 0.00745 0.07493 0.13245 0.47976 0.23741 1.16458 0.09598 0.02857 0.00950 0.07502 0.13118 0.47951 0.23576 1.12679 0.09514 0.02984 0.01138 0.07498 0.12980 0.47908 0.23432 1.09535 0.09438 0.03077 0.01281 0.07486 0.12858 0.47819 0.23247 1.05736 0.09335 0.03172 0.01433 0.07457 0.12698 0.47721 0.23078 1.02418 0.09240 0.03245 0.01556 0.07424 0.12552 0.47613 0.22918 0.99412 0.09148 0.03304 0.01658 0.07387 0.12413 0.47447 0.22706 0.95679 0.09024 0.03364 0.01771 0.07330 0.12230 0.47271 0.22503 0.92248 0.08904 0.03410 0.01867 0.07270 0.12053 0.47088 0.22308 0.89113 0.08788 0.03445 0.01946 0.07208 0.11884 0.46883 0.22107 0.86078 0.08669 0.03471 0.02013 0.07139 0.11711 0.46674 0.21910 0.83169 0.08551 0.03491 0.02074 0.07070 0.11541 0.46454 0.21717 0.80526 0.08435 0.03501 0.02121 0.06998 0.11376 0.46244 0.21536 0.78081 0.08327 0.03509 0.02163 0.06929 0.11221 0.46015 0.21349 0.75720 0.08215 0.03510 0.02196 0.06856 0.11063 0.45787 0.21166 0.73441 0.08106 0.03510 0.02227 0.06784 0.10909 0.45555 0.20989 0.71365 0.08001 0.03504 0.02250 0.06711 0.10761 0.45338 0.20822 0.69420 0.07902 0.03498 0.02272 0.06644 0.10621 0.45102 0.20650 0.67561 0.07801 0.03487 0.02286 0.06572 0.10480 0.44870 0.20481 0.65740 0.07701 0.03476 0.02301 0.06502 0.10341 0.44640 0.20318 0.64075 0.07606 0.03462 0.02311 0.06434 0.10208 0.44418 0.20163 0.62530 0.07516 0.03447 0.02318 0.06368 0.10083 0.44193 0.20007 0.60989 0.07426 0.03432 0.02325 0.06302 0.09957 0.50714 0.26515 1.18215 0.07573 0.00000 0.00000 0.05087 0.12092 0.50993 0.26456 1.19479 0.07610 0.00000 0.00000 0.05216 0.12078 0.51342 0.26345 1.20216 0.07654 0.00083 0.00000 0.05389 0.12040 0.51543 0.26245 1.19800 0.07674 0.00258 0.00000 0.05499 0.11998 0.51713 0.26125 1.18636 0.07686 0.00537 0.00000 0.05601 0.11942 0.51811 0.26004 1.17198 0.07685 0.00732 0.00000 0.05674 0.11880 0.51879 0.25880 1.15605 0.07678 0.00909 0.00000 0.05734 0.11813 0.51928 0.25741 1.13721 0.07664 0.01087 0.00000 0.05789 0.11735 0.51930 0.25606 1.11809 0.07642 0.01225 0.00000 0.05824 0.11655 0.51926 0.25475 1.09938 0.07619 0.01354 0.00000 0.05854 0.11577 0.51896 0.25362 1.08315 0.07594 0.01445 0.00000 0.05870 0.11508 0.51807 0.25116 1.04674 0.07536 0.01627 0.00039 0.05894 0.11354 0.51693 0.24892 1.01252 0.07476 0.01766 0.00138 0.05902 0.11212 0.51520 0.24630 0.97068 0.07397 0.01900 0.00358 0.05894 0.11040 0.51291 0.24343 0.92788 0.07304 0.02017 0.00535 0.05870 0.10851 0.51049 0.24075 0.88978 0.07211 0.02107 0.00678 0.05836 0.10672 0.50777 0.23798 0.85216 0.07112 0.02185 0.00807 0.05793 0.10486 0.50533 0.23565 0.82160 0.07026 0.02240 0.00904 0.05752 0.10329 0.50204 0.23274 0.78579 0.06915 0.02293 0.01005 0.05692 0.10133 0.49896 0.23014 0.75506 0.06814 0.02333 0.01085 0.05635 0.09958 0.49600 0.22773 0.72771 0.06720 0.02362 0.01150 0.05578 0.09796 0.49198 0.22463 0.69448 0.06597 0.02389 0.01221 0.05500 0.09589 0.48807 0.22170 0.66440 0.06480 0.02409 0.01280 0.05424 0.09394 0.48426 0.21894 0.63736 0.06369 0.02420 0.01327 0.05349 0.09211 0.48027 0.21616 0.61163 0.06256 0.02425 0.01367 0.05270 0.09029 0.47634 0.21344 0.58716 0.06146 0.02428 0.01402 0.05193 0.08851 0.47243 0.21084 0.56538 0.06041 0.02423 0.01427 0.05116 0.08683 0.46874 0.20841 0.54530 0.05943 0.02419 0.01449 0.05045 0.08527 0.46490 0.20595 0.52622 0.05843 0.02409 0.01466 0.04971 0.08370 0.46113 0.20355 0.50788 0.05746 0.02399 0.01481 0.04898 0.08218 0.45743 0.20126 0.49142 0.05654 0.02386 0.01491 0.04828 0.08074 0.45396 0.19911 0.47600 0.05568 0.02374 0.01500 0.04762 0.07940 0.45034 0.19692 0.46151 0.05481 0.02358 0.01505 0.04694 0.07805 0.44680 0.19479 0.44732 0.05396 0.02343 0.01510 0.04628 0.07674 0.44335 0.19275 0.43450 0.05315 0.02326 0.01512 0.04565 0.07550 0.44007 0.19082 0.42265 0.05240 0.02310 0.01512 0.04505 0.07433 0.43676 0.18888 0.41086 0.05163 0.02293 0.01513 0.04444 0.07317 0.55864 0.27875 1.09213 0.05994 0.00000 0.00000 0.04315 0.10690 0.55929 0.27703 1.08692 0.06018 0.00000 0.00000 0.04405 0.10618 0.55957 0.27427 1.07075 0.06041 0.00067 0.00000 0.04520 0.10496 0.55923 0.27209 1.05198 0.06046 0.00207 0.00000 0.04587 0.10395 0.55844 0.26966 1.02709 0.06041 0.00430 0.00000 0.04645 0.10280 0.55728 0.26743 1.00324 0.06026 0.00583 0.00000 0.04681 0.10169 0.55592 0.26521 0.97934 0.06006 0.00719 0.00000 0.04708 0.10058 0.55425 0.26281 0.95307 0.05979 0.00855 0.00000 0.04728 0.09936 0.55242 0.26061 0.92906 0.05947 0.00957 0.00000 0.04735 0.09821 0.55059 0.25848 0.90590 0.05915 0.01053 0.00000 0.04739 0.09710 0.54889 0.25673 0.88712 0.05884 0.01119 0.00000 0.04735 0.09618 0.54505 0.25295 0.84639 0.05813 0.01249 0.00029 0.04720 0.09417 0.54141 0.24963 0.81011 0.05745 0.01346 0.00102 0.04697 0.09239 0.53696 0.24583 0.76801 0.05659 0.01438 0.00263 0.04659 0.09034 0.53189 0.24181 0.72622 0.05563 0.01515 0.00391 0.04608 0.08815 0.52702 0.23812 0.68993 0.05470 0.01572 0.00492 0.04554 0.08615 0.52190 0.23438 0.65476 0.05372 0.01620 0.00582 0.04494 0.08412 0.51751 0.23126 0.62667 0.05289 0.01652 0.00649 0.04440 0.08243 0.51193 0.22746 0.59446 0.05184 0.01681 0.00717 0.04368 0.08038 0.50688 0.22410 0.56718 0.05091 0.01701 0.00771 0.04303 0.07858 0.50216 0.22102 0.54321 0.05004 0.01715 0.00814 0.04240 0.07694 0.49599 0.21711 0.51457 0.04892 0.01725 0.00859 0.04158 0.07487 0.49011 0.21346 0.48893 0.04787 0.01730 0.00896 0.04079 0.07295 0.48452 0.21005 0.46618 0.04689 0.01730 0.00925 0.04004 0.07118 0.47882 0.20666 0.44483 0.04590 0.01725 0.00949 0.03927 0.06943 0.47325 0.20337 0.42464 0.04494 0.01719 0.00969 0.03852 0.06774 0.46786 0.20026 0.40694 0.04404 0.01710 0.00982 0.03780 0.06617 0.46281 0.19737 0.39068 0.04320 0.01700 0.00994 0.03713 0.06472 0.45766 0.19447 0.37543 0.04236 0.01687 0.01002 0.03645 0.06328 0.45262 0.19165 0.36082 0.04154 0.01674 0.01009 0.03579 0.06189 0.44777 0.18898 0.34785 0.04077 0.01659 0.01013 0.03516 0.06059 0.44323 0.18648 0.33572 0.04005 0.01646 0.01016 0.03457 0.05937 0.43858 0.18398 0.32446 0.03933 0.01630 0.01017 0.03398 0.05817 0.43403 0.18152 0.31345 0.03863 0.01614 0.01017 0.03339 0.05700 0.42967 0.17921 0.30358 0.03797 0.01599 0.01016 0.03284 0.05591 0.42553 0.17702 0.29450 0.03735 0.01583 0.01014 0.03233 0.05489 0.42137 0.17483 0.28548 0.03672 0.01568 0.01011 0.03181 0.05387 0.59911 0.28658 0.99794 0.04756 0.00000 0.00000 0.03628 0.09275 0.59736 0.28374 0.97994 0.04774 0.00000 0.00000 0.03689 0.09163 0.59412 0.27935 0.94753 0.04786 0.00054 0.00000 0.03760 0.08986 0.59124 0.27602 0.91919 0.04783 0.00166 0.00000 0.03798 0.08849 0.58782 0.27242 0.88609 0.04770 0.00344 0.00000 0.03825 0.08697 0.58441 0.26921 0.85680 0.04749 0.00463 0.00000 0.03837 0.08559 0.58094 0.26608 0.82856 0.04724 0.00568 0.00000 0.03841 0.08424 0.57705 0.26274 0.79850 0.04693 0.00672 0.00000 0.03839 0.08278 0.57333 0.25976 0.77240 0.04658 0.00748 0.00000 0.03829 0.08147 0.56970 0.25689 0.74744 0.04623 0.00819 0.00000 0.03817 0.08020 0.56662 0.25457 0.72795 0.04591 0.00867 0.00000 0.03802 0.07917 0.55987 0.24963 0.68651 0.04519 0.00961 0.00022 0.03765 0.07698 0.55380 0.24535 0.65080 0.04451 0.01030 0.00076 0.03726 0.07507 0.54671 0.24055 0.61075 0.04369 0.01092 0.00195 0.03673 0.07293 0.53903 0.23553 0.57189 0.04277 0.01143 0.00288 0.03611 0.07070 0.53187 0.23100 0.53874 0.04191 0.01179 0.00360 0.03549 0.06869 0.52453 0.22645 0.50710 0.04101 0.01208 0.00424 0.03483 0.06668 0.51835 0.22270 0.48215 0.04026 0.01226 0.00471 0.03426 0.06504 0.51070 0.21818 0.45402 0.03932 0.01241 0.00517 0.03353 0.06307 0.50390 0.21422 0.43044 0.03849 0.01250 0.00554 0.03288 0.06136 0.49762 0.21062 0.40994 0.03773 0.01254 0.00582 0.03227 0.05981 0.48957 0.20609 0.38578 0.03676 0.01255 0.00612 0.03149 0.05789 0.48200 0.20189 0.36434 0.03585 0.01253 0.00635 0.03075 0.05613 0.47489 0.19801 0.34552 0.03501 0.01247 0.00653 0.03005 0.05451 0.46775 0.19417 0.32805 0.03417 0.01239 0.00667 0.02936 0.05294 0.46081 0.19046 0.31161 0.03336 0.01230 0.00679 0.02868 0.05143 0.45421 0.18700 0.29739 0.03260 0.01218 0.00686 0.02805 0.05004 0.44804 0.18378 0.28436 0.03190 0.01207 0.00692 0.02745 0.04875 0.44183 0.18059 0.27226 0.03120 0.01194 0.00695 0.02686 0.04750 0.43578 0.17748 0.26070 0.03052 0.01181 0.00698 0.02629 0.04628 0.43002 0.17458 0.25055 0.02989 0.01168 0.00699 0.02575 0.04516 0.42463 0.17185 0.24105 0.02930 0.01155 0.00699 0.02524 0.04411 0.41919 0.16915 0.23234 0.02871 0.01141 0.00697 0.02474 0.04310 0.41386 0.16650 0.22381 0.02814 0.01127 0.00696 0.02425 0.04210 0.40880 0.16402 0.21622 0.02760 0.01113 0.00693 0.02379 0.04118 0.40403 0.16168 0.20927 0.02710 0.01100 0.00691 0.02336 0.04032 0.39924 0.15934 0.20237 0.02660 0.01086 0.00688 0.02293 0.03946 0.62884 0.28922 0.90105 0.03808 0.00000 0.00000 0.03022 0.07880 0.62460 0.28532 0.87431 0.03821 0.00000 0.00000 0.03060 0.07746 0.61773 0.27941 0.83136 0.03826 0.00043 0.00000 0.03101 0.07540 0.61227 0.27502 0.79731 0.03818 0.00133 0.00000 0.03117 0.07385 0.60619 0.27034 0.75975 0.03802 0.00274 0.00000 0.03124 0.07217 0.60056 0.26625 0.72792 0.03778 0.00366 0.00000 0.03120 0.07068 0.59500 0.26232 0.69792 0.03751 0.00448 0.00000 0.03110 0.06925 0.58895 0.25814 0.66661 0.03718 0.00526 0.00000 0.03096 0.06771 0.58342 0.25448 0.64032 0.03683 0.00583 0.00000 0.03075 0.06637 0.57807 0.25097 0.61530 0.03649 0.00636 0.00000 0.03055 0.06507 0.57367 0.24817 0.59628 0.03617 0.00671 0.00000 0.03034 0.06404 0.56419 0.24225 0.55638 0.03548 0.00738 0.00016 0.02986 0.06186 0.55586 0.23717 0.52282 0.03484 0.00787 0.00057 0.02940 0.06000 0.54636 0.23153 0.48612 0.03408 0.00829 0.00145 0.02882 0.05793 0.53631 0.22573 0.45113 0.03325 0.00862 0.00213 0.02817 0.05582 0.52711 0.22053 0.42174 0.03247 0.00885 0.00265 0.02755 0.05394 0.51780 0.21535 0.39402 0.03167 0.00901 0.00310 0.02690 0.05208 0.51007 0.21112 0.37238 0.03100 0.00911 0.00343 0.02635 0.05057 0.50064 0.20606 0.34835 0.03018 0.00918 0.00375 0.02567 0.04879 0.49234 0.20166 0.32837 0.02946 0.00920 0.00400 0.02507 0.04725 0.48475 0.19768 0.31116 0.02880 0.00920 0.00419 0.02451 0.04588 0.47514 0.19272 0.29110 0.02797 0.00916 0.00438 0.02381 0.04419 0.46617 0.18814 0.27343 0.02719 0.00911 0.00453 0.02315 0.04264 0.45783 0.18393 0.25807 0.02648 0.00903 0.00464 0.02254 0.04123 0.44954 0.17981 0.24394 0.02577 0.00894 0.00472 0.02193 0.03988 0.44152 0.17584 0.23070 0.02509 0.00884 0.00479 0.02135 0.03858 0.43397 0.17216 0.21938 0.02446 0.00873 0.00483 0.02081 0.03740 0.42694 0.16874 0.20902 0.02388 0.00862 0.00485 0.02030 0.03631 0.41993 0.16538 0.19950 0.02330 0.00850 0.00486 0.01981 0.03526 0.41311 0.16212 0.19042 0.02275 0.00839 0.00487 0.01932 0.03424 0.40669 0.15909 0.18250 0.02223 0.00827 0.00486 0.01888 0.03331 0.40066 0.15624 0.17510 0.02174 0.00816 0.00485 0.01846 0.03244 0.39466 0.15345 0.16838 0.02127 0.00804 0.00483 0.01804 0.03160 0.38878 0.15071 0.16180 0.02080 0.00792 0.00481 0.01764 0.03078 0.38324 0.14815 0.15598 0.02037 0.00781 0.00478 0.01727 0.03003 0.37802 0.14575 0.15067 0.01997 0.00770 0.00475 0.01692 0.02933 0.37279 0.14335 0.14540 0.01956 0.00759 0.00472 0.01656 0.02863 0.64832 0.28728 0.80359 0.03093 0.00000 0.00000 0.02493 0.06548 0.64160 0.28240 0.77142 0.03100 0.00000 0.00000 0.02514 0.06406 0.63116 0.27513 0.72243 0.03099 0.00035 0.00000 0.02533 0.06193 0.62319 0.26980 0.68563 0.03088 0.00105 0.00000 0.02535 0.06034 0.61455 0.26419 0.64642 0.03067 0.00217 0.00000 0.02529 0.05865 0.60681 0.25935 0.61415 0.03042 0.00288 0.00000 0.02515 0.05719 0.59929 0.25473 0.58421 0.03014 0.00351 0.00000 0.02498 0.05579 0.59121 0.24985 0.55340 0.02981 0.00410 0.00000 0.02476 0.05431 0.58401 0.24563 0.52817 0.02946 0.00453 0.00000 0.02451 0.05302 0.57708 0.24159 0.50426 0.02913 0.00492 0.00000 0.02426 0.05179 0.57148 0.23841 0.48644 0.02883 0.00517 0.00000 0.02403 0.05083 0.55954 0.23169 0.44946 0.02818 0.00565 0.00012 0.02352 0.04880 0.54919 0.22599 0.41893 0.02758 0.00599 0.00042 0.02304 0.04709 0.53757 0.21971 0.38621 0.02688 0.00628 0.00107 0.02247 0.04521 0.52546 0.21331 0.35550 0.02613 0.00649 0.00157 0.02185 0.04331 0.51452 0.20763 0.33001 0.02543 0.00663 0.00195 0.02126 0.04164 0.50355 0.20201 0.30622 0.02472 0.00672 0.00227 0.02067 0.04001 0.49452 0.19743 0.28783 0.02414 0.00677 0.00250 0.02017 0.03869 0.48364 0.19201 0.26765 0.02342 0.00678 0.00272 0.01956 0.03715 0.47412 0.18732 0.25099 0.02280 0.00677 0.00289 0.01903 0.03582 0.46547 0.18309 0.23676 0.02223 0.00675 0.00302 0.01854 0.03465 0.45463 0.17787 0.22033 0.02152 0.00669 0.00315 0.01793 0.03321 0.44458 0.17307 0.20596 0.02086 0.00662 0.00324 0.01737 0.03191 0.43530 0.16869 0.19356 0.02025 0.00655 0.00331 0.01685 0.03074 0.42615 0.16441 0.18225 0.01966 0.00646 0.00336 0.01634 0.02961 0.41732 0.16031 0.17169 0.01909 0.00636 0.00339 0.01585 0.02854 0.40910 0.15654 0.16274 0.01857 0.00626 0.00341 0.01540 0.02757 0.40144 0.15304 0.15457 0.01809 0.00617 0.00342 0.01498 0.02668 0.39388 0.14962 0.14713 0.01761 0.00607 0.00342 0.01458 0.02583 0.38653 0.14631 0.14003 0.01715 0.00597 0.00341 0.01418 0.02500 0.37966 0.14324 0.13390 0.01673 0.00587 0.00340 0.01382 0.02425 0.37322 0.14037 0.12816 0.01633 0.00578 0.00339 0.01348 0.02355 0.36686 0.13757 0.12299 0.01594 0.00568 0.00336 0.01314 0.02288 0.36062 0.13482 0.11793 0.01557 0.00558 0.00334 0.01282 0.02223 0.35478 0.13227 0.11348 0.01522 0.00549 0.00332 0.01252 0.02163 0.34930 0.12989 0.10943 0.01489 0.00541 0.00329 0.01224 0.02108 0.34381 0.12750 0.10541 0.01456 0.00532 0.00327 0.01196 0.02052 0.65819 0.28132 0.70779 0.02555 0.00000 0.00000 0.02035 0.05315 0.64909 0.27561 0.67282 0.02557 0.00000 0.00000 0.02045 0.05178 0.63526 0.26717 0.62135 0.02548 0.00027 0.00000 0.02048 0.04973 0.62494 0.26106 0.58401 0.02532 0.00083 0.00000 0.02042 0.04822 0.61393 0.25467 0.54522 0.02508 0.00170 0.00000 0.02028 0.04664 0.60426 0.24922 0.51399 0.02481 0.00225 0.00000 0.02009 0.04529 0.59496 0.24404 0.48537 0.02452 0.00273 0.00000 0.01988 0.04400 0.58506 0.23861 0.45625 0.02418 0.00318 0.00000 0.01962 0.04265 0.57637 0.23396 0.43287 0.02384 0.00349 0.00000 0.01936 0.04150 0.56804 0.22951 0.41079 0.02351 0.00378 0.00000 0.01910 0.04039 0.56140 0.22604 0.39461 0.02323 0.00396 0.00000 0.01887 0.03954 0.54731 0.21874 0.36131 0.02261 0.00431 0.00009 0.01837 0.03774 0.53524 0.21258 0.33424 0.02206 0.00454 0.00031 0.01792 0.03624 0.52183 0.20586 0.30573 0.02142 0.00473 0.00080 0.01739 0.03461 0.50802 0.19906 0.27930 0.02074 0.00487 0.00116 0.01682 0.03298 0.49566 0.19306 0.25762 0.02012 0.00494 0.00143 0.01630 0.03156 0.48336 0.18716 0.23756 0.01949 0.00499 0.00166 0.01578 0.03018 0.47330 0.18239 0.22218 0.01897 0.00501 0.00182 0.01534 0.02907 0.46129 0.17677 0.20549 0.01835 0.00500 0.00198 0.01482 0.02779 0.45084 0.17192 0.19180 0.01781 0.00497 0.00209 0.01436 0.02669 0.44140 0.16758 0.18018 0.01732 0.00494 0.00218 0.01395 0.02572 0.42966 0.16224 0.16688 0.01671 0.00488 0.00226 0.01344 0.02455 0.41883 0.15737 0.15533 0.01615 0.00481 0.00232 0.01297 0.02349 0.40888 0.15292 0.14542 0.01564 0.00474 0.00236 0.01254 0.02254 0.39915 0.14862 0.13645 0.01514 0.00466 0.00239 0.01212 0.02164 0.38978 0.14450 0.12810 0.01466 0.00458 0.00241 0.01172 0.02078 0.38112 0.14074 0.12109 0.01422 0.00449 0.00241 0.01135 0.02001 0.37308 0.13725 0.11470 0.01382 0.00441 0.00241 0.01101 0.01930 0.36518 0.13386 0.10890 0.01343 0.00433 0.00241 0.01068 0.01863 0.35752 0.13059 0.10340 0.01305 0.00425 0.00240 0.01037 0.01798 0.35041 0.12757 0.09867 0.01270 0.00417 0.00238 0.01008 0.01739 0.34374 0.12475 0.09424 0.01237 0.00409 0.00237 0.00981 0.01684 0.33719 0.12201 0.09029 0.01206 0.00402 0.00235 0.00954 0.01633 0.33079 0.11933 0.08641 0.01175 0.00394 0.00233 0.00929 0.01582 0.32482 0.11685 0.08302 0.01146 0.00387 0.00231 0.00905 0.01536 0.31923 0.11453 0.07993 0.01120 0.00380 0.00229 0.00883 0.01493 0.31363 0.11222 0.07688 0.01093 0.00373 0.00226 0.00861 0.01451 0.65918 0.27194 0.61565 0.02145 0.00000 0.00000 0.01643 0.04212 0.64788 0.26554 0.57998 0.02141 0.00000 0.00000 0.01646 0.04086 0.63096 0.25616 0.52870 0.02123 0.00021 0.00000 0.01640 0.03901 0.61851 0.24943 0.49248 0.02102 0.00065 0.00000 0.01628 0.03767 0.60538 0.24244 0.45555 0.02075 0.00132 0.00000 0.01610 0.03626 0.59401 0.23652 0.42637 0.02046 0.00175 0.00000 0.01589 0.03508 0.58314 0.23094 0.39989 0.02015 0.00211 0.00000 0.01567 0.03395 0.57166 0.22510 0.37320 0.01981 0.00244 0.00000 0.01541 0.03278 0.56172 0.22014 0.35214 0.01948 0.00267 0.00000 0.01515 0.03178 0.55219 0.21541 0.33230 0.01916 0.00289 0.00000 0.01490 0.03084 0.54468 0.21174 0.31797 0.01889 0.00302 0.00000 0.01469 0.03011 0.52882 0.20406 0.28869 0.01830 0.00326 0.00007 0.01423 0.02859 0.51534 0.19762 0.26520 0.01779 0.00342 0.00023 0.01382 0.02733 0.50049 0.19063 0.24081 0.01720 0.00355 0.00059 0.01335 0.02597 0.48535 0.18361 0.21848 0.01658 0.00363 0.00085 0.01285 0.02462 0.47190 0.17746 0.20034 0.01602 0.00367 0.00105 0.01240 0.02346 0.45860 0.17144 0.18369 0.01547 0.00369 0.00121 0.01195 0.02233 0.44778 0.16659 0.17101 0.01501 0.00369 0.00132 0.01158 0.02143 0.43496 0.16091 0.15739 0.01447 0.00367 0.00143 0.01114 0.02040 0.42386 0.15604 0.14628 0.01400 0.00364 0.00151 0.01076 0.01952 0.41389 0.15169 0.13692 0.01357 0.00360 0.00157 0.01042 0.01875 0.40156 0.14638 0.12628 0.01305 0.00354 0.00162 0.01000 0.01782 0.39024 0.14153 0.11708 0.01258 0.00348 0.00166 0.00962 0.01698 0.37989 0.13714 0.10924 0.01214 0.00342 0.00168 0.00927 0.01624 0.36982 0.13292 0.10219 0.01172 0.00335 0.00170 0.00893 0.01553 0.36015 0.12887 0.09564 0.01132 0.00328 0.00171 0.00861 0.01487 0.35129 0.12520 0.09019 0.01095 0.00321 0.00170 0.00832 0.01427 0.34306 0.12181 0.08522 0.01062 0.00315 0.00170 0.00805 0.01373 0.33502 0.11853 0.08075 0.01029 0.00308 0.00169 0.00779 0.01321 0.32724 0.11536 0.07650 0.00998 0.00302 0.00168 0.00754 0.01271 0.32006 0.11245 0.07287 0.00969 0.00295 0.00167 0.00731 0.01227 0.31333 0.10973 0.06948 0.00942 0.00289 0.00166 0.00710 0.01185 0.30677 0.10711 0.06646 0.00916 0.00283 0.00164 0.00689 0.01146 0.30034 0.10455 0.06350 0.00891 0.00278 0.00162 0.00669 0.01108 0.29438 0.10219 0.06093 0.00868 0.00272 0.00161 0.00651 0.01073 0.28882 0.09999 0.05859 0.00846 0.00267 0.00159 0.00634 0.01041 0.28324 0.09779 0.05627 0.00825 0.00262 0.00157 0.00617 0.01009 0.65212 0.25972 0.52880 0.01824 0.00000 0.00000 0.01313 0.03254 0.63885 0.25279 0.49399 0.01812 0.00000 0.00000 0.01310 0.03146 0.61919 0.24271 0.44488 0.01786 0.00017 0.00000 0.01298 0.02987 0.60490 0.23552 0.41092 0.01761 0.00050 0.00000 0.01284 0.02872 0.58994 0.22811 0.37685 0.01730 0.00102 0.00000 0.01264 0.02753 0.57713 0.22188 0.35034 0.01699 0.00134 0.00000 0.01244 0.02654 0.56496 0.21602 0.32648 0.01668 0.00161 0.00000 0.01222 0.02560 0.55217 0.20992 0.30264 0.01633 0.00186 0.00000 0.01197 0.02462 0.54119 0.20478 0.28410 0.01601 0.00203 0.00000 0.01174 0.02380 0.53070 0.19988 0.26668 0.01570 0.00218 0.00000 0.01151 0.02302 0.52250 0.19611 0.25426 0.01544 0.00228 0.00000 0.01132 0.02243 0.50525 0.18823 0.22904 0.01489 0.00245 0.00005 0.01091 0.02119 0.49068 0.18167 0.20904 0.01441 0.00256 0.00017 0.01056 0.02016 0.47477 0.17458 0.18854 0.01387 0.00264 0.00043 0.01015 0.01907 0.45866 0.16752 0.16997 0.01331 0.00269 0.00062 0.00973 0.01800 0.44445 0.16135 0.15502 0.01281 0.00271 0.00076 0.00935 0.01707 0.43047 0.15535 0.14140 0.01232 0.00271 0.00088 0.00898 0.01619 0.41915 0.15053 0.13109 0.01191 0.00270 0.00096 0.00867 0.01548 0.40583 0.14492 0.12012 0.01144 0.00267 0.00103 0.00831 0.01468 0.39435 0.14013 0.11122 0.01103 0.00264 0.00108 0.00800 0.01400 0.38407 0.13587 0.10375 0.01067 0.00261 0.00112 0.00773 0.01340 0.37144 0.13068 0.09533 0.01022 0.00256 0.00116 0.00739 0.01269 0.35988 0.12598 0.08808 0.00981 0.00251 0.00118 0.00708 0.01205 0.34937 0.12173 0.08194 0.00945 0.00245 0.00120 0.00680 0.01148 0.33920 0.11765 0.07644 0.00909 0.00240 0.00120 0.00653 0.01095 0.32946 0.11377 0.07136 0.00875 0.00234 0.00121 0.00628 0.01044 0.32057 0.11026 0.06714 0.00845 0.00229 0.00120 0.00605 0.01000 0.31234 0.10702 0.06331 0.00817 0.00224 0.00120 0.00584 0.00959 0.30435 0.10390 0.05988 0.00790 0.00219 0.00119 0.00564 0.00920 0.29661 0.10089 0.05663 0.00764 0.00213 0.00118 0.00545 0.00883 0.28951 0.09815 0.05386 0.00740 0.00209 0.00117 0.00527 0.00850 0.28285 0.09558 0.05127 0.00718 0.00204 0.00116 0.00510 0.00819 0.27641 0.09312 0.04898 0.00697 0.00199 0.00114 0.00495 0.00791 0.27009 0.09071 0.04673 0.00677 0.00195 0.00113 0.00479 0.00762 0.26426 0.08850 0.04478 0.00658 0.00191 0.00112 0.00466 0.00737 0.25883 0.08644 0.04301 0.00640 0.00187 0.00110 0.00453 0.00714 0.25339 0.08439 0.04126 0.00623 0.00183 0.00109 0.00440 0.00690 0.63788 0.24522 0.44842 0.01561 0.00000 0.00000 0.01036 0.02449 0.62291 0.23792 0.41561 0.01543 0.00000 0.00000 0.01031 0.02360 0.60094 0.22737 0.37005 0.01510 0.00013 0.00000 0.01017 0.02229 0.58509 0.21990 0.33910 0.01481 0.00038 0.00000 0.01001 0.02136 0.56863 0.21223 0.30846 0.01447 0.00078 0.00000 0.00982 0.02039 0.55467 0.20583 0.28495 0.01415 0.00102 0.00000 0.00963 0.01959 0.54146 0.19984 0.26396 0.01383 0.00122 0.00000 0.00943 0.01884 0.52764 0.19362 0.24314 0.01349 0.00141 0.00000 0.00921 0.01806 0.51588 0.18842 0.22715 0.01317 0.00153 0.00000 0.00900 0.01740 0.50465 0.18346 0.21217 0.01287 0.00164 0.00000 0.00880 0.01679 0.49594 0.17967 0.20161 0.01263 0.00170 0.00000 0.00864 0.01632 0.47769 0.17177 0.18028 0.01211 0.00182 0.00004 0.00829 0.01534 0.46237 0.16521 0.16355 0.01167 0.00189 0.00012 0.00798 0.01454 0.44573 0.15818 0.14660 0.01118 0.00195 0.00031 0.00764 0.01370 0.42902 0.15121 0.13139 0.01068 0.00197 0.00045 0.00729 0.01287 0.41435 0.14516 0.11924 0.01023 0.00198 0.00055 0.00698 0.01216 0.40000 0.13930 0.10825 0.00980 0.00197 0.00063 0.00668 0.01148 0.38842 0.13460 0.09999 0.00945 0.00196 0.00069 0.00643 0.01095 0.37489 0.12917 0.09126 0.00904 0.00194 0.00074 0.00614 0.01034 0.36326 0.12454 0.08420 0.00868 0.00191 0.00077 0.00590 0.00983 0.35289 0.12045 0.07832 0.00837 0.00188 0.00080 0.00568 0.00938 0.34022 0.11548 0.07172 0.00799 0.00184 0.00082 0.00541 0.00885 0.32867 0.11099 0.06607 0.00765 0.00179 0.00084 0.00517 0.00837 0.31821 0.10695 0.06130 0.00734 0.00175 0.00084 0.00495 0.00795 0.30813 0.10310 0.05706 0.00704 0.00171 0.00085 0.00474 0.00756 0.29850 0.09943 0.05314 0.00676 0.00166 0.00085 0.00454 0.00719 0.28976 0.09613 0.04991 0.00650 0.00162 0.00084 0.00437 0.00687 0.28168 0.09309 0.04698 0.00627 0.00158 0.00084 0.00421 0.00657 0.27387 0.09017 0.04436 0.00605 0.00154 0.00083 0.00405 0.00629 0.26633 0.08737 0.04188 0.00584 0.00150 0.00082 0.00390 0.00602 0.25943 0.08482 0.03978 0.00564 0.00147 0.00081 0.00377 0.00578 0.25297 0.08243 0.03781 0.00546 0.00143 0.00081 0.00364 0.00556 0.24674 0.08016 0.03608 0.00529 0.00140 0.00080 0.00352 0.00535 0.24065 0.07793 0.03439 0.00512 0.00137 0.00079 0.00341 0.00515 0.23505 0.07590 0.03292 0.00497 0.00134 0.00077 0.00330 0.00497 0.22983 0.07401 0.03159 0.00483 0.00131 0.00076 0.00321 0.00480 0.22462 0.07213 0.03027 0.00469 0.00128 0.00075 0.00311 0.00464 0.61733 0.22897 0.37536 0.01335 0.00000 0.00000 0.00808 0.01793 0.60097 0.22147 0.34532 0.01312 0.00000 0.00000 0.00802 0.01723 0.57712 0.21068 0.30417 0.01274 0.00010 0.00000 0.00786 0.01620 0.56007 0.20308 0.27664 0.01242 0.00029 0.00000 0.00772 0.01547 0.54244 0.19533 0.24972 0.01207 0.00059 0.00000 0.00754 0.01472 0.52761 0.18889 0.22932 0.01175 0.00077 0.00000 0.00736 0.01410 0.51364 0.18289 0.21122 0.01144 0.00092 0.00000 0.00719 0.01352 0.49908 0.17668 0.19340 0.01110 0.00105 0.00000 0.00700 0.01291 0.48678 0.17151 0.17988 0.01080 0.00114 0.00000 0.00682 0.01242 0.47506 0.16660 0.16724 0.01052 0.00122 0.00000 0.00665 0.01194 0.46602 0.16286 0.15842 0.01029 0.00126 0.00000 0.00651 0.01159 0.44713 0.15509 0.14070 0.00982 0.00134 0.00003 0.00622 0.01085 0.43137 0.14868 0.12692 0.00941 0.00139 0.00009 0.00597 0.01025 0.41435 0.14183 0.11312 0.00897 0.00142 0.00023 0.00569 0.00961 0.39736 0.13508 0.10084 0.00852 0.00144 0.00032 0.00541 0.00899 0.38253 0.12925 0.09111 0.00814 0.00144 0.00040 0.00516 0.00846 0.36809 0.12362 0.08236 0.00776 0.00143 0.00045 0.00492 0.00796 0.35648 0.11913 0.07582 0.00745 0.00142 0.00049 0.00472 0.00757 0.34299 0.11396 0.06895 0.00710 0.00139 0.00053 0.00449 0.00712 0.33143 0.10957 0.06343 0.00680 0.00137 0.00055 0.00430 0.00675 0.32117 0.10570 0.05884 0.00653 0.00134 0.00057 0.00413 0.00642 0.30868 0.10103 0.05373 0.00621 0.00131 0.00058 0.00392 0.00604 0.29734 0.09681 0.04936 0.00592 0.00128 0.00059 0.00373 0.00570 0.28711 0.09304 0.04570 0.00566 0.00124 0.00059 0.00357 0.00539 0.27730 0.08945 0.04245 0.00542 0.00121 0.00060 0.00341 0.00511 0.26794 0.08603 0.03945 0.00518 0.00118 0.00059 0.00326 0.00485 0.25950 0.08299 0.03700 0.00498 0.00114 0.00059 0.00312 0.00462 0.25170 0.08018 0.03477 0.00478 0.00111 0.00059 0.00300 0.00441 0.24419 0.07749 0.03278 0.00460 0.00108 0.00058 0.00288 0.00421 0.23695 0.07491 0.03091 0.00443 0.00106 0.00057 0.00277 0.00402 0.23036 0.07259 0.02932 0.00427 0.00103 0.00057 0.00267 0.00385 0.22418 0.07040 0.02784 0.00413 0.00100 0.00056 0.00258 0.00370 0.21827 0.06834 0.02654 0.00399 0.00098 0.00055 0.00249 0.00355 0.21248 0.06631 0.02527 0.00385 0.00095 0.00054 0.00240 0.00341 0.20718 0.06447 0.02417 0.00373 0.00093 0.00054 0.00232 0.00329 0.20225 0.06276 0.02317 0.00362 0.00091 0.00053 0.00225 0.00317 0.19733 0.06106 0.02218 0.00351 0.00089 0.00052 0.00218 0.00306 0.59138 0.21149 0.31004 0.01135 0.00000 0.00000 0.00623 0.01275 0.57395 0.20393 0.28322 0.01109 0.00000 0.00000 0.00615 0.01222 0.54870 0.19312 0.24693 0.01067 0.00007 0.00000 0.00601 0.01145 0.53076 0.18554 0.22299 0.01034 0.00022 0.00000 0.00587 0.01090 0.51232 0.17785 0.19982 0.00999 0.00044 0.00000 0.00572 0.01034 0.49691 0.17150 0.18247 0.00968 0.00057 0.00000 0.00556 0.00987 0.48245 0.16560 0.16718 0.00938 0.00068 0.00000 0.00542 0.00944 0.46743 0.15951 0.15221 0.00906 0.00078 0.00000 0.00525 0.00900 0.45483 0.15448 0.14099 0.00878 0.00084 0.00000 0.00511 0.00863 0.44283 0.14969 0.13050 0.00852 0.00089 0.00000 0.00497 0.00828 0.43364 0.14607 0.12327 0.00832 0.00092 0.00000 0.00485 0.00802 0.41448 0.13857 0.10879 0.00789 0.00098 0.00002 0.00461 0.00748 0.39857 0.13240 0.09763 0.00752 0.00101 0.00006 0.00441 0.00704 0.38148 0.12584 0.08655 0.00713 0.00103 0.00016 0.00419 0.00657 0.36453 0.11942 0.07679 0.00675 0.00104 0.00023 0.00397 0.00613 0.34980 0.11389 0.06910 0.00641 0.00103 0.00028 0.00377 0.00575 0.33551 0.10858 0.06222 0.00608 0.00102 0.00032 0.00358 0.00539 0.32407 0.10435 0.05711 0.00582 0.00101 0.00035 0.00343 0.00511 0.31084 0.09951 0.05177 0.00552 0.00099 0.00038 0.00325 0.00479 0.29955 0.09541 0.04750 0.00527 0.00097 0.00040 0.00310 0.00453 0.28956 0.09181 0.04397 0.00505 0.00095 0.00041 0.00297 0.00430 0.27746 0.08748 0.04004 0.00478 0.00093 0.00042 0.00281 0.00403 0.26650 0.08358 0.03671 0.00454 0.00090 0.00042 0.00267 0.00379 0.25665 0.08011 0.03391 0.00433 0.00087 0.00042 0.00254 0.00358 0.24725 0.07682 0.03145 0.00413 0.00085 0.00042 0.00242 0.00338 0.23829 0.07369 0.02918 0.00394 0.00082 0.00042 0.00231 0.00320 0.23025 0.07092 0.02732 0.00377 0.00080 0.00042 0.00221 0.00304 0.22283 0.06836 0.02564 0.00361 0.00078 0.00041 0.00212 0.00289 0.21573 0.06593 0.02415 0.00347 0.00076 0.00041 0.00203 0.00276 0.20888 0.06360 0.02274 0.00333 0.00074 0.00040 0.00195 0.00263 0.20268 0.06150 0.02156 0.00320 0.00072 0.00040 0.00187 0.00251 0.19686 0.05953 0.02044 0.00309 0.00070 0.00039 0.00180 0.00241 0.19133 0.05768 0.01947 0.00298 0.00068 0.00039 0.00174 0.00231 0.18591 0.05586 0.01852 0.00287 0.00066 0.00038 0.00168 0.00221 0.18096 0.05421 0.01770 0.00277 0.00065 0.00038 0.00162 0.00213 0.17637 0.05269 0.01695 0.00268 0.00063 0.00037 0.00157 0.00205 0.17179 0.05117 0.01622 0.00260 0.00062 0.00037 0.00151 0.00197 0.56092 0.19322 0.25257 0.00953 0.00000 0.00000 0.00473 0.00878 0.54275 0.18575 0.22919 0.00925 0.00000 0.00000 0.00466 0.00840 0.51656 0.17511 0.19788 0.00883 0.00005 0.00000 0.00453 0.00785 0.49807 0.16770 0.17749 0.00851 0.00016 0.00000 0.00441 0.00745 0.47916 0.16020 0.15795 0.00817 0.00032 0.00000 0.00427 0.00705 0.46345 0.15405 0.14348 0.00788 0.00042 0.00000 0.00415 0.00672 0.44876 0.14834 0.13080 0.00760 0.00050 0.00000 0.00403 0.00641 0.43356 0.14248 0.11845 0.00730 0.00057 0.00000 0.00389 0.00609 0.42088 0.13765 0.10930 0.00706 0.00061 0.00000 0.00377 0.00583 0.40882 0.13307 0.10076 0.00682 0.00065 0.00000 0.00366 0.00558 0.39963 0.12962 0.09492 0.00664 0.00067 0.00000 0.00357 0.00540 0.38053 0.12249 0.08328 0.00626 0.00071 0.00001 0.00338 0.00502 0.36474 0.11665 0.07438 0.00594 0.00073 0.00005 0.00322 0.00471 0.34787 0.11048 0.06563 0.00560 0.00074 0.00011 0.00304 0.00438 0.33123 0.10446 0.05797 0.00527 0.00074 0.00016 0.00287 0.00407 0.31683 0.09930 0.05198 0.00499 0.00074 0.00020 0.00272 0.00381 0.30293 0.09436 0.04665 0.00471 0.00073 0.00023 0.00257 0.00356 0.29183 0.09045 0.04270 0.00449 0.00072 0.00025 0.00246 0.00337 0.27906 0.08599 0.03861 0.00425 0.00070 0.00026 0.00232 0.00315 0.26820 0.08221 0.03534 0.00404 0.00069 0.00028 0.00221 0.00297 0.25861 0.07891 0.03265 0.00385 0.00067 0.00029 0.00211 0.00281 0.24705 0.07496 0.02967 0.00364 0.00065 0.00030 0.00199 0.00262 0.23662 0.07141 0.02714 0.00344 0.00063 0.00030 0.00189 0.00246 0.22728 0.06826 0.02504 0.00327 0.00061 0.00030 0.00179 0.00232 0.21839 0.06528 0.02318 0.00311 0.00059 0.00030 0.00170 0.00219 0.20994 0.06247 0.02148 0.00295 0.00058 0.00030 0.00162 0.00206 0.20241 0.05997 0.02009 0.00282 0.00056 0.00030 0.00155 0.00196 0.19545 0.05768 0.01883 0.00270 0.00054 0.00030 0.00148 0.00186 0.18882 0.05551 0.01772 0.00258 0.00053 0.00030 0.00141 0.00177 0.18244 0.05343 0.01667 0.00247 0.00051 0.00029 0.00135 0.00168 0.17667 0.05156 0.01578 0.00237 0.00050 0.00029 0.00130 0.00161 0.17128 0.04982 0.01496 0.00228 0.00049 0.00029 0.00125 0.00153 0.16616 0.04818 0.01423 0.00219 0.00047 0.00029 0.00120 0.00147 0.16116 0.04657 0.01353 0.00211 0.00046 0.00028 0.00116 0.00141 0.15660 0.04512 0.01291 0.00203 0.00045 0.00028 0.00111 0.00135 0.15238 0.04378 0.01236 0.00196 0.00044 0.00028 0.00108 0.00130 0.14818 0.04245 0.01182 0.00190 0.00043 0.00028 0.00104 0.00125 0.52683 0.17460 0.20283 0.00786 0.00000 0.00000 0.00354 0.00585 0.50824 0.16735 0.18288 0.00759 0.00000 0.00000 0.00348 0.00559 0.48158 0.15706 0.15643 0.00718 0.00004 0.00000 0.00336 0.00521 0.46286 0.14992 0.13941 0.00688 0.00012 0.00000 0.00326 0.00494 0.44380 0.14273 0.12325 0.00657 0.00024 0.00000 0.00315 0.00466 0.42806 0.13687 0.11140 0.00630 0.00031 0.00000 0.00305 0.00443 0.41340 0.13145 0.10108 0.00605 0.00036 0.00000 0.00295 0.00422 0.39826 0.12589 0.09109 0.00579 0.00041 0.00000 0.00284 0.00400 0.38572 0.12134 0.08374 0.00558 0.00045 0.00000 0.00275 0.00383 0.37379 0.11702 0.07691 0.00537 0.00047 0.00000 0.00266 0.00366 0.36475 0.11379 0.07227 0.00521 0.00049 0.00000 0.00259 0.00353 0.34601 0.10711 0.06307 0.00488 0.00051 0.00001 0.00244 0.00327 0.33059 0.10167 0.05609 0.00462 0.00052 0.00003 0.00232 0.00306 0.31419 0.09595 0.04928 0.00433 0.00053 0.00008 0.00218 0.00284 0.29809 0.09039 0.04336 0.00405 0.00053 0.00011 0.00205 0.00263 0.28424 0.08566 0.03875 0.00382 0.00052 0.00014 0.00194 0.00246 0.27090 0.08113 0.03467 0.00359 0.00052 0.00016 0.00183 0.00229 0.26029 0.07755 0.03167 0.00341 0.00051 0.00017 0.00174 0.00216 0.24814 0.07350 0.02857 0.00321 0.00050 0.00018 0.00164 0.00201 0.23784 0.07008 0.02610 0.00304 0.00048 0.00019 0.00155 0.00189 0.22878 0.06710 0.02407 0.00289 0.00047 0.00019 0.00148 0.00179 0.21789 0.06354 0.02183 0.00272 0.00046 0.00020 0.00139 0.00167 0.20810 0.06036 0.01994 0.00256 0.00045 0.00020 0.00131 0.00156 0.19936 0.05754 0.01837 0.00243 0.00043 0.00020 0.00125 0.00147 0.19108 0.05489 0.01699 0.00230 0.00042 0.00020 0.00118 0.00138 0.18322 0.05238 0.01572 0.00218 0.00041 0.00020 0.00112 0.00130 0.17624 0.05018 0.01469 0.00207 0.00040 0.00020 0.00107 0.00123 0.16981 0.04815 0.01375 0.00198 0.00039 0.00020 0.00102 0.00117 0.16370 0.04624 0.01293 0.00189 0.00038 0.00020 0.00097 0.00111 0.15783 0.04441 0.01215 0.00180 0.00037 0.00020 0.00093 0.00105 0.15255 0.04277 0.01150 0.00173 0.00036 0.00020 0.00089 0.00100 0.14761 0.04124 0.01089 0.00165 0.00035 0.00020 0.00085 0.00096 0.14294 0.03981 0.01035 0.00159 0.00034 0.00020 0.00082 0.00091 0.13838 0.03841 0.00983 0.00152 0.00034 0.00020 0.00079 0.00087 0.13424 0.03715 0.00938 0.00147 0.00033 0.00020 0.00076 0.00084 0.13041 0.03599 0.00897 0.00141 0.00032 0.00020 0.00073 0.00080 0.12660 0.03483 0.00857 0.00136 0.00032 0.00020 0.00070 0.00077 0.48996 0.15602 0.16043 0.00636 0.00000 0.00000 0.00261 0.00375 0.47126 0.14908 0.14377 0.00611 0.00000 0.00000 0.00256 0.00358 0.44456 0.13929 0.12190 0.00573 0.00003 0.00000 0.00246 0.00334 0.42592 0.13253 0.10797 0.00546 0.00008 0.00000 0.00238 0.00316 0.40703 0.12575 0.09486 0.00518 0.00017 0.00000 0.00229 0.00298 0.39151 0.12025 0.08535 0.00495 0.00022 0.00000 0.00221 0.00283 0.37709 0.11517 0.07710 0.00473 0.00026 0.00000 0.00213 0.00269 0.36225 0.10998 0.06915 0.00451 0.00029 0.00000 0.00204 0.00255 0.35003 0.10575 0.06337 0.00432 0.00032 0.00000 0.00197 0.00243 0.33841 0.10175 0.05800 0.00415 0.00034 0.00000 0.00190 0.00232 0.32966 0.09876 0.05438 0.00401 0.00035 0.00000 0.00185 0.00224 0.31154 0.09262 0.04722 0.00374 0.00037 0.00001 0.00174 0.00207 0.29670 0.08762 0.04184 0.00352 0.00038 0.00002 0.00164 0.00193 0.28098 0.08239 0.03661 0.00328 0.00039 0.00005 0.00154 0.00179 0.26564 0.07734 0.03211 0.00306 0.00038 0.00008 0.00144 0.00165 0.25249 0.07305 0.02862 0.00287 0.00038 0.00009 0.00136 0.00154 0.23988 0.06897 0.02554 0.00269 0.00037 0.00010 0.00128 0.00143 0.22988 0.06575 0.02328 0.00254 0.00037 0.00011 0.00121 0.00135 0.21848 0.06212 0.02096 0.00238 0.00036 0.00012 0.00114 0.00125 0.20884 0.05907 0.01912 0.00225 0.00035 0.00012 0.00108 0.00118 0.20039 0.05641 0.01761 0.00213 0.00034 0.00012 0.00102 0.00111 0.19028 0.05325 0.01595 0.00200 0.00034 0.00012 0.00096 0.00103 0.18121 0.05044 0.01455 0.00188 0.00033 0.00012 0.00090 0.00096 0.17314 0.04796 0.01339 0.00177 0.00032 0.00012 0.00085 0.00090 0.16553 0.04563 0.01237 0.00167 0.00031 0.00012 0.00081 0.00085 0.15831 0.04343 0.01143 0.00158 0.00030 0.00012 0.00076 0.00080 0.15194 0.04151 0.01067 0.00150 0.00030 0.00012 0.00073 0.00075 0.14607 0.03974 0.00998 0.00142 0.00029 0.00012 0.00069 0.00071 0.14052 0.03808 0.00938 0.00136 0.00028 0.00012 0.00066 0.00068 0.13518 0.03649 0.00881 0.00129 0.00028 0.00012 0.00063 0.00064 0.13041 0.03508 0.00833 0.00123 0.00027 0.00012 0.00060 0.00061 0.12594 0.03376 0.00788 0.00118 0.00027 0.00012 0.00058 0.00058 0.12174 0.03253 0.00749 0.00113 0.00026 0.00012 0.00055 0.00056 0.11764 0.03132 0.00710 0.00108 0.00026 0.00012 0.00053 0.00053 0.11393 0.03024 0.00677 0.00104 0.00025 0.00012 0.00051 0.00051 0.11050 0.02925 0.00647 0.00100 0.00025 0.00012 0.00049 0.00049 0.10709 0.02826 0.00618 0.00096 0.00025 0.00012 0.00047 0.00047 0.45113 0.13780 0.12488 0.00502 0.00000 0.00000 0.00189 0.00230 0.43262 0.13128 0.11126 0.00480 0.00000 0.00000 0.00185 0.00220 0.40631 0.12211 0.09354 0.00447 0.00002 0.00000 0.00177 0.00205 0.38803 0.11581 0.08238 0.00423 0.00006 0.00000 0.00170 0.00195 0.36957 0.10951 0.07195 0.00399 0.00012 0.00000 0.00163 0.00184 0.35450 0.10442 0.06445 0.00380 0.00015 0.00000 0.00157 0.00174 0.34054 0.09974 0.05798 0.00362 0.00018 0.00000 0.00151 0.00166 0.32621 0.09497 0.05179 0.00343 0.00020 0.00000 0.00145 0.00157 0.31446 0.09110 0.04731 0.00328 0.00022 0.00000 0.00139 0.00149 0.30332 0.08745 0.04316 0.00313 0.00023 0.00000 0.00134 0.00143 0.29495 0.08473 0.04039 0.00302 0.00024 0.00000 0.00130 0.00137 0.27769 0.07915 0.03492 0.00280 0.00026 0.00000 0.00121 0.00127 0.26360 0.07464 0.03083 0.00262 0.00026 0.00001 0.00115 0.00118 0.24875 0.06993 0.02690 0.00244 0.00027 0.00004 0.00107 0.00109 0.23434 0.06540 0.02352 0.00226 0.00027 0.00005 0.00100 0.00101 0.22203 0.06157 0.02091 0.00211 0.00027 0.00006 0.00094 0.00094 0.21026 0.05794 0.01863 0.00197 0.00027 0.00006 0.00088 0.00087 0.20096 0.05509 0.01695 0.00185 0.00027 0.00007 0.00083 0.00082 0.19041 0.05188 0.01524 0.00173 0.00026 0.00007 0.00078 0.00076 0.18151 0.04920 0.01388 0.00163 0.00026 0.00007 0.00073 0.00071 0.17374 0.04686 0.01277 0.00154 0.00026 0.00007 0.00070 0.00067 0.16447 0.04411 0.01155 0.00144 0.00025 0.00007 0.00065 0.00062 0.15618 0.04165 0.01053 0.00134 0.00024 0.00007 0.00061 0.00058 0.14883 0.03949 0.00967 0.00126 0.00024 0.00007 0.00058 0.00054 0.14193 0.03748 0.00893 0.00119 0.00023 0.00007 0.00054 0.00051 0.13539 0.03558 0.00825 0.00112 0.00023 0.00007 0.00051 0.00048 0.12964 0.03393 0.00769 0.00106 0.00023 0.00007 0.00049 0.00045 0.12435 0.03241 0.00719 0.00100 0.00022 0.00007 0.00046 0.00043 0.11937 0.03099 0.00675 0.00095 0.00022 0.00007 0.00044 0.00040 0.11459 0.02963 0.00633 0.00091 0.00022 0.00007 0.00042 0.00038 0.11033 0.02842 0.00598 0.00086 0.00021 0.00007 0.00040 0.00036 0.10634 0.02730 0.00566 0.00082 0.00021 0.00007 0.00038 0.00035 0.10262 0.02626 0.00537 0.00079 0.00021 0.00007 0.00037 0.00033 0.09897 0.02524 0.00509 0.00075 0.00021 0.00007 0.00035 0.00032 0.09568 0.02432 0.00485 0.00072 0.00020 0.00007 0.00034 0.00030 0.09265 0.02348 0.00464 0.00069 0.00020 0.00007 0.00032 0.00029 0.08964 0.02265 0.00442 0.00066 0.00020 0.00007 0.00031 0.00028 0.41110 0.12024 0.09556 0.00387 0.00000 0.00000 0.00135 0.00135 0.39304 0.11420 0.08467 0.00367 0.00000 0.00000 0.00131 0.00130 0.36749 0.10573 0.07062 0.00339 0.00001 0.00000 0.00125 0.00121 0.34983 0.09995 0.06185 0.00320 0.00004 0.00000 0.00120 0.00115 0.33207 0.09419 0.05373 0.00300 0.00008 0.00000 0.00115 0.00109 0.31764 0.08956 0.04794 0.00284 0.00010 0.00000 0.00110 0.00103 0.30431 0.08532 0.04296 0.00270 0.00012 0.00000 0.00105 0.00098 0.29067 0.08100 0.03822 0.00255 0.00014 0.00000 0.00101 0.00093 0.27954 0.07751 0.03483 0.00242 0.00015 0.00000 0.00096 0.00089 0.26900 0.07422 0.03168 0.00231 0.00016 0.00000 0.00093 0.00085 0.26112 0.07179 0.02960 0.00222 0.00016 0.00000 0.00090 0.00082 0.24490 0.06680 0.02549 0.00205 0.00017 0.00000 0.00084 0.00075 0.23171 0.06278 0.02244 0.00191 0.00017 0.00001 0.00078 0.00070 0.21788 0.05860 0.01952 0.00177 0.00017 0.00002 0.00073 0.00065 0.20451 0.05461 0.01703 0.00163 0.00017 0.00003 0.00068 0.00060 0.19314 0.05125 0.01512 0.00151 0.00017 0.00003 0.00064 0.00055 0.18232 0.04806 0.01344 0.00140 0.00017 0.00003 0.00059 0.00051 0.17379 0.04557 0.01222 0.00132 0.00017 0.00003 0.00056 0.00048 0.16416 0.04279 0.01097 0.00123 0.00017 0.00003 0.00052 0.00045 0.15606 0.04046 0.00998 0.00115 0.00017 0.00003 0.00049 0.00042 0.14899 0.03844 0.00917 0.00108 0.00017 0.00003 0.00047 0.00039 0.14061 0.03606 0.00829 0.00101 0.00017 0.00003 0.00043 0.00037 0.13314 0.03396 0.00755 0.00094 0.00017 0.00003 0.00041 0.00034 0.12654 0.03211 0.00693 0.00088 0.00017 0.00003 0.00038 0.00032 0.12035 0.03039 0.00639 0.00083 0.00017 0.00003 0.00036 0.00030 0.11451 0.02878 0.00590 0.00077 0.00017 0.00003 0.00034 0.00028 0.10940 0.02737 0.00550 0.00073 0.00017 0.00003 0.00032 0.00026 0.10470 0.02609 0.00514 0.00069 0.00017 0.00003 0.00030 0.00025 0.10029 0.02489 0.00482 0.00066 0.00017 0.00003 0.00029 0.00024 0.09606 0.02374 0.00452 0.00062 0.00017 0.00003 0.00027 0.00022 0.09231 0.02273 0.00427 0.00059 0.00017 0.00003 0.00026 0.00021 0.08879 0.02179 0.00403 0.00056 0.00017 0.00003 0.00025 0.00020 0.08553 0.02092 0.00383 0.00054 0.00017 0.00003 0.00024 0.00019 0.08233 0.02007 0.00362 0.00051 0.00017 0.00003 0.00023 0.00018 0.07946 0.01931 0.00345 0.00049 0.00017 0.00003 0.00022 0.00018 0.07682 0.01861 0.00329 0.00047 0.00017 0.00003 0.00021 0.00017 0.07419 0.01792 0.00314 0.00045 0.00016 0.00003 0.00020 0.00016 0.37061 0.10357 0.07179 0.00289 0.00000 0.00000 0.00094 0.00075 0.35326 0.09807 0.06327 0.00273 0.00000 0.00000 0.00091 0.00072 0.32881 0.09039 0.05238 0.00251 0.00001 0.00000 0.00086 0.00068 0.31199 0.08516 0.04564 0.00235 0.00003 0.00000 0.00083 0.00065 0.29514 0.07997 0.03945 0.00220 0.00005 0.00000 0.00079 0.00062 0.28152 0.07583 0.03507 0.00207 0.00007 0.00000 0.00075 0.00059 0.26898 0.07203 0.03132 0.00195 0.00008 0.00000 0.00072 0.00056 0.25617 0.06818 0.02777 0.00184 0.00009 0.00000 0.00068 0.00053 0.24578 0.06509 0.02524 0.00174 0.00009 0.00000 0.00066 0.00051 0.23594 0.06218 0.02291 0.00166 0.00010 0.00000 0.00063 0.00048 0.22862 0.06003 0.02136 0.00159 0.00010 0.00000 0.00061 0.00047 0.21359 0.05564 0.01834 0.00146 0.00010 0.00000 0.00056 0.00043 0.20142 0.05211 0.01611 0.00135 0.00010 0.00000 0.00053 0.00040 0.18871 0.04847 0.01398 0.00124 0.00010 0.00001 0.00049 0.00037 0.17649 0.04500 0.01217 0.00114 0.00010 0.00001 0.00045 0.00034 0.16614 0.04208 0.01079 0.00106 0.00010 0.00001 0.00042 0.00032 0.15631 0.03934 0.00958 0.00098 0.00010 0.00001 0.00039 0.00029 0.14859 0.03720 0.00870 0.00092 0.00010 0.00001 0.00037 0.00028 0.13991 0.03481 0.00781 0.00085 0.00010 0.00001 0.00035 0.00026 0.13264 0.03282 0.00710 0.00079 0.00010 0.00001 0.00032 0.00024 0.12631 0.03110 0.00652 0.00074 0.00010 0.00001 0.00031 0.00023 0.11884 0.02909 0.00589 0.00069 0.00010 0.00001 0.00028 0.00021 0.11219 0.02731 0.00536 0.00064 0.00010 0.00001 0.00027 0.00020 0.10634 0.02575 0.00492 0.00060 0.00010 0.00001 0.00025 0.00018 0.10088 0.02431 0.00453 0.00056 0.00010 0.00001 0.00023 0.00017 0.09573 0.02295 0.00418 0.00052 0.00010 0.00001 0.00022 0.00016 0.09124 0.02178 0.00389 0.00049 0.00010 0.00001 0.00021 0.00015 0.08712 0.02071 0.00363 0.00046 0.00010 0.00001 0.00020 0.00014 0.08327 0.01971 0.00341 0.00044 0.00010 0.00001 0.00019 0.00014 0.07958 0.01876 0.00319 0.00041 0.00010 0.00001 0.00018 0.00013 0.07632 0.01793 0.00301 0.00039 0.00010 0.00001 0.00017 0.00012 0.07326 0.01715 0.00284 0.00037 0.00010 0.00001 0.00016 0.00012 0.07044 0.01643 0.00270 0.00036 0.00010 0.00001 0.00015 0.00011 0.06767 0.01573 0.00255 0.00034 0.00010 0.00001 0.00015 0.00011 0.06520 0.01511 0.00243 0.00032 0.00010 0.00001 0.00014 0.00010 0.06293 0.01454 0.00232 0.00031 0.00010 0.00001 0.00013 0.00010 0.06067 0.01397 0.00220 0.00029 0.00010 0.00001 0.00013 0.00009 0.33031 0.08799 0.05287 0.00209 0.00000 0.00000 0.00064 0.00039 0.31388 0.08306 0.04637 0.00197 0.00000 0.00000 0.00062 0.00038 0.29082 0.07620 0.03812 0.00180 0.00001 0.00000 0.00059 0.00037 0.27504 0.07155 0.03306 0.00168 0.00002 0.00000 0.00056 0.00035 0.25928 0.06695 0.02844 0.00156 0.00003 0.00000 0.00053 0.00034 0.24660 0.06330 0.02520 0.00146 0.00004 0.00000 0.00050 0.00032 0.23496 0.05996 0.02244 0.00138 0.00005 0.00000 0.00048 0.00031 0.22311 0.05658 0.01984 0.00129 0.00005 0.00000 0.00046 0.00029 0.21355 0.05389 0.01800 0.00122 0.00005 0.00000 0.00044 0.00028 0.20450 0.05135 0.01630 0.00115 0.00005 0.00000 0.00042 0.00027 0.19780 0.04948 0.01518 0.00111 0.00005 0.00000 0.00040 0.00026 0.18407 0.04568 0.01300 0.00101 0.00005 0.00000 0.00037 0.00024 0.17300 0.04264 0.01140 0.00093 0.00005 0.00000 0.00035 0.00022 0.16148 0.03951 0.00988 0.00085 0.00005 0.00000 0.00032 0.00021 0.15046 0.03654 0.00859 0.00078 0.00005 0.00000 0.00030 0.00019 0.14116 0.03406 0.00760 0.00072 0.00005 0.00000 0.00028 0.00018 0.13237 0.03173 0.00675 0.00066 0.00005 0.00000 0.00026 0.00017 0.12549 0.02992 0.00612 0.00062 0.00005 0.00000 0.00024 0.00016 0.11778 0.02791 0.00549 0.00057 0.00005 0.00000 0.00022 0.00014 0.11134 0.02624 0.00499 0.00053 0.00005 0.00000 0.00021 0.00014 0.10576 0.02480 0.00458 0.00050 0.00005 0.00000 0.00020 0.00013 0.09918 0.02312 0.00414 0.00046 0.00005 0.00000 0.00018 0.00012 0.09336 0.02163 0.00376 0.00042 0.00005 0.00000 0.00017 0.00011 0.08824 0.02034 0.00345 0.00039 0.00005 0.00000 0.00016 0.00010 0.08348 0.01915 0.00318 0.00037 0.00005 0.00000 0.00015 0.00010 0.07901 0.01803 0.00293 0.00034 0.00005 0.00000 0.00014 0.00009 0.07512 0.01707 0.00273 0.00032 0.00005 0.00000 0.00013 0.00009 0.07156 0.01619 0.00254 0.00030 0.00005 0.00000 0.00012 0.00008 0.06825 0.01538 0.00238 0.00029 0.00005 0.00000 0.00012 0.00008 0.06507 0.01460 0.00223 0.00027 0.00005 0.00000 0.00011 0.00007 0.06228 0.01393 0.00210 0.00025 0.00005 0.00000 0.00011 0.00007 0.05966 0.01329 0.00198 0.00024 0.00005 0.00000 0.00010 0.00007 0.05726 0.01271 0.00188 0.00023 0.00005 0.00000 0.00010 0.00006 0.05490 0.01215 0.00178 0.00022 0.00005 0.00000 0.00009 0.00006 0.05280 0.01164 0.00169 0.00021 0.00005 0.00000 0.00009 0.00006 0.05087 0.01119 0.00161 0.00020 0.00005 0.00000 0.00008 0.00005 0.04896 0.01073 0.00153 0.00019 0.00005 0.00000 0.00008 0.00005 0.29084 0.07366 0.03810 0.00147 0.00000 0.00000 0.00043 0.00019 0.27551 0.06931 0.03326 0.00137 0.00000 0.00000 0.00041 0.00019 0.25408 0.06328 0.02716 0.00124 0.00000 0.00000 0.00039 0.00019 0.23948 0.05922 0.02346 0.00116 0.00001 0.00000 0.00037 0.00018 0.22495 0.05521 0.02010 0.00107 0.00002 0.00000 0.00035 0.00017 0.21333 0.05204 0.01776 0.00100 0.00002 0.00000 0.00033 0.00017 0.20269 0.04916 0.01578 0.00094 0.00002 0.00000 0.00031 0.00016 0.19189 0.04625 0.01391 0.00087 0.00002 0.00000 0.00030 0.00015 0.18321 0.04394 0.01260 0.00082 0.00002 0.00000 0.00028 0.00015 0.17501 0.04176 0.01139 0.00078 0.00002 0.00000 0.00027 0.00014 0.16897 0.04017 0.01060 0.00074 0.00002 0.00000 0.00026 0.00014 0.15660 0.03693 0.00906 0.00067 0.00002 0.00000 0.00024 0.00013 0.14667 0.03435 0.00793 0.00062 0.00002 0.00000 0.00022 0.00012 0.13639 0.03170 0.00687 0.00056 0.00002 0.00000 0.00021 0.00011 0.12660 0.02921 0.00597 0.00051 0.00002 0.00000 0.00019 0.00010 0.11838 0.02713 0.00528 0.00047 0.00002 0.00000 0.00017 0.00010 0.11063 0.02519 0.00468 0.00043 0.00002 0.00000 0.00016 0.00009 0.10458 0.02368 0.00425 0.00040 0.00002 0.00000 0.00015 0.00009 0.09784 0.02202 0.00381 0.00037 0.00002 0.00000 0.00014 0.00008 0.09221 0.02064 0.00346 0.00034 0.00002 0.00000 0.00013 0.00007 0.08736 0.01945 0.00318 0.00032 0.00002 0.00000 0.00012 0.00007 0.08166 0.01807 0.00287 0.00029 0.00002 0.00000 0.00011 0.00007 0.07663 0.01686 0.00260 0.00027 0.00002 0.00000 0.00011 0.00006 0.07222 0.01581 0.00239 0.00025 0.00002 0.00000 0.00010 0.00006 0.06814 0.01484 0.00220 0.00023 0.00002 0.00000 0.00009 0.00005 0.06431 0.01394 0.00202 0.00022 0.00002 0.00000 0.00009 0.00005 0.06100 0.01316 0.00188 0.00020 0.00002 0.00000 0.00008 0.00005 0.05797 0.01245 0.00176 0.00019 0.00002 0.00000 0.00008 0.00005 0.05516 0.01180 0.00164 0.00018 0.00002 0.00000 0.00007 0.00004 0.05247 0.01118 0.00154 0.00017 0.00002 0.00000 0.00007 0.00004 0.05011 0.01064 0.00145 0.00016 0.00002 0.00000 0.00006 0.00004 0.04791 0.01013 0.00136 0.00015 0.00002 0.00000 0.00006 0.00004 0.04589 0.00967 0.00129 0.00014 0.00002 0.00000 0.00006 0.00004 0.04391 0.00922 0.00122 0.00014 0.00002 0.00000 0.00006 0.00003 0.04215 0.00882 0.00116 0.00013 0.00002 0.00000 0.00005 0.00003 0.04054 0.00846 0.00110 0.00012 0.00002 0.00000 0.00005 0.00003 0.03894 0.00810 0.00105 0.00012 0.00002 0.00000 0.00005 0.00003 0.25273 0.06067 0.02681 0.00099 0.00000 0.00000 0.00028 0.00008 0.23863 0.05690 0.02330 0.00092 0.00000 0.00000 0.00027 0.00009 0.21902 0.05170 0.01892 0.00083 0.00000 0.00000 0.00025 0.00009 0.20572 0.04821 0.01628 0.00077 0.00000 0.00000 0.00024 0.00009 0.19255 0.04478 0.01390 0.00071 0.00000 0.00000 0.00022 0.00009 0.18205 0.04208 0.01226 0.00066 0.00000 0.00000 0.00021 0.00009 0.17247 0.03964 0.01087 0.00061 0.00000 0.00000 0.00020 0.00008 0.16277 0.03717 0.00956 0.00057 0.00000 0.00000 0.00019 0.00008 0.15502 0.03522 0.00865 0.00054 0.00000 0.00000 0.00018 0.00008 0.14770 0.03338 0.00781 0.00050 0.00000 0.00000 0.00017 0.00007 0.14233 0.03205 0.00727 0.00048 0.00000 0.00000 0.00016 0.00007 0.13137 0.02934 0.00621 0.00043 0.00000 0.00000 0.00015 0.00007 0.12261 0.02720 0.00543 0.00040 0.00000 0.00000 0.00014 0.00006 0.11357 0.02500 0.00470 0.00036 0.00000 0.00000 0.00013 0.00006 0.10501 0.02294 0.00408 0.00033 0.00000 0.00000 0.00012 0.00006 0.09785 0.02124 0.00361 0.00030 0.00000 0.00000 0.00011 0.00005 0.09112 0.01964 0.00320 0.00027 0.00000 0.00000 0.00010 0.00005 0.08588 0.01841 0.00290 0.00025 0.00000 0.00000 0.00009 0.00005 0.08008 0.01706 0.00260 0.00023 0.00000 0.00000 0.00009 0.00004 0.07525 0.01594 0.00236 0.00021 0.00000 0.00000 0.00008 0.00004 0.07109 0.01499 0.00217 0.00020 0.00000 0.00000 0.00008 0.00004 0.06624 0.01388 0.00196 0.00018 0.00000 0.00000 0.00007 0.00004 0.06196 0.01291 0.00178 0.00017 0.00000 0.00000 0.00006 0.00003 0.05823 0.01206 0.00163 0.00016 0.00000 0.00000 0.00006 0.00003 0.05478 0.01129 0.00150 0.00014 0.00000 0.00000 0.00006 0.00003 0.05155 0.01057 0.00138 0.00013 0.00000 0.00000 0.00005 0.00003 0.04878 0.00996 0.00128 0.00012 0.00000 0.00000 0.00005 0.00003 0.04624 0.00940 0.00119 0.00012 0.00000 0.00000 0.00005 0.00003 0.04389 0.00889 0.00112 0.00011 0.00000 0.00000 0.00004 0.00002 0.04165 0.00840 0.00104 0.00010 0.00000 0.00000 0.00004 0.00002 0.03970 0.00797 0.00098 0.00010 0.00000 0.00000 0.00004 0.00002 0.03787 0.00758 0.00092 0.00009 0.00000 0.00000 0.00004 0.00002 0.03620 0.00722 0.00087 0.00009 0.00000 0.00000 0.00004 0.00002 0.03457 0.00687 0.00082 0.00008 0.00000 0.00000 0.00003 0.00002 0.03312 0.00656 0.00078 0.00008 0.00000 0.00000 0.00003 0.00002 0.03180 0.00628 0.00074 0.00007 0.00000 0.00000 0.00003 0.00002 0.03049 0.00600 0.00071 0.00007 0.00000 0.00000 0.00003 0.00002 0.18247 0.03892 0.01221 0.00040 0.00000 0.00000 0.00011 0.00001 0.17114 0.03625 0.01054 0.00037 0.00000 0.00000 0.00010 0.00002 0.15550 0.03261 0.00849 0.00033 0.00000 0.00000 0.00009 0.00002 0.14501 0.03018 0.00727 0.00030 0.00000 0.00000 0.00009 0.00002 0.13468 0.02782 0.00618 0.00027 0.00000 0.00000 0.00008 0.00002 0.12655 0.02598 0.00543 0.00025 0.00000 0.00000 0.00008 0.00002 0.11916 0.02432 0.00481 0.00023 0.00000 0.00000 0.00007 0.00002 0.11172 0.02265 0.00422 0.00022 0.00000 0.00000 0.00007 0.00002 0.10584 0.02135 0.00382 0.00020 0.00000 0.00000 0.00006 0.00002 0.10030 0.02013 0.00345 0.00019 0.00000 0.00000 0.00006 0.00002 0.09628 0.01925 0.00321 0.00018 0.00000 0.00000 0.00006 0.00002 0.08809 0.01746 0.00274 0.00016 0.00000 0.00000 0.00005 0.00002 0.08160 0.01606 0.00239 0.00015 0.00000 0.00000 0.00005 0.00002 0.07497 0.01464 0.00207 0.00013 0.00000 0.00000 0.00005 0.00002 0.06876 0.01333 0.00180 0.00012 0.00000 0.00000 0.00004 0.00002 0.06360 0.01225 0.00160 0.00011 0.00000 0.00000 0.00004 0.00002 0.05879 0.01124 0.00142 0.00010 0.00000 0.00000 0.00003 0.00001 0.05507 0.01047 0.00129 0.00009 0.00000 0.00000 0.00003 0.00001 0.05099 0.00963 0.00115 0.00008 0.00000 0.00000 0.00003 0.00001 0.04761 0.00895 0.00105 0.00007 0.00000 0.00000 0.00003 0.00001 0.04472 0.00836 0.00096 0.00007 0.00000 0.00000 0.00003 0.00001 0.04138 0.00769 0.00086 0.00006 0.00000 0.00000 0.00002 0.00001 0.03845 0.00710 0.00078 0.00006 0.00000 0.00000 0.00002 0.00001 0.03591 0.00659 0.00072 0.00005 0.00000 0.00000 0.00002 0.00001 0.03359 0.00614 0.00066 0.00005 0.00000 0.00000 0.00002 0.00001 0.03141 0.00571 0.00061 0.00004 0.00000 0.00000 0.00002 0.00001 0.02957 0.00535 0.00056 0.00004 0.00000 0.00000 0.00002 0.00001 0.02788 0.00502 0.00052 0.00004 0.00000 0.00000 0.00002 0.00001 0.02634 0.00472 0.00049 0.00004 0.00000 0.00000 0.00001 0.00001 0.02487 0.00444 0.00045 0.00003 0.00000 0.00000 0.00001 0.00001 0.02359 0.00420 0.00043 0.00003 0.00000 0.00000 0.00001 0.00001 0.02240 0.00397 0.00040 0.00003 0.00000 0.00000 0.00001 0.00001 0.02133 0.00377 0.00038 0.00003 0.00000 0.00000 0.00001 0.00001 0.02028 0.00357 0.00036 0.00003 0.00000 0.00000 0.00001 0.00001 0.01935 0.00339 0.00034 0.00002 0.00000 0.00000 0.00001 0.00001 0.01851 0.00324 0.00032 0.00002 0.00000 0.00000 0.00001 0.00001 0.01767 0.00308 0.00030 0.00002 0.00000 0.00000 0.00001 0.00001 0.12254 0.02280 0.00486 0.00013 0.00000 0.00000 0.00003 0.00000 0.11410 0.02108 0.00418 0.00012 0.00000 0.00000 0.00003 0.00000 0.10255 0.01875 0.00335 0.00011 0.00000 0.00000 0.00003 0.00001 0.09488 0.01722 0.00287 0.00010 0.00000 0.00000 0.00003 0.00001 0.08739 0.01574 0.00244 0.00009 0.00000 0.00000 0.00003 0.00001 0.08156 0.01460 0.00215 0.00008 0.00000 0.00000 0.00002 0.00001 0.07629 0.01357 0.00190 0.00007 0.00000 0.00000 0.00002 0.00001 0.07102 0.01255 0.00168 0.00007 0.00000 0.00000 0.00002 0.00001 0.06690 0.01176 0.00152 0.00006 0.00000 0.00000 0.00002 0.00001 0.06302 0.01102 0.00137 0.00006 0.00000 0.00000 0.00002 0.00001 0.06023 0.01049 0.00128 0.00005 0.00000 0.00000 0.00002 0.00001 0.05460 0.00943 0.00110 0.00005 0.00000 0.00000 0.00002 0.00001 0.05016 0.00860 0.00096 0.00004 0.00000 0.00000 0.00002 0.00001 0.04568 0.00777 0.00083 0.00004 0.00000 0.00000 0.00001 0.00001 0.04152 0.00701 0.00073 0.00003 0.00000 0.00000 0.00001 0.00001 0.03810 0.00639 0.00064 0.00003 0.00000 0.00000 0.00001 0.00001 0.03493 0.00582 0.00057 0.00003 0.00000 0.00000 0.00001 0.00000 0.03251 0.00538 0.00052 0.00003 0.00000 0.00000 0.00001 0.00000 0.02987 0.00491 0.00047 0.00002 0.00000 0.00000 0.00001 0.00000 0.02770 0.00453 0.00042 0.00002 0.00000 0.00000 0.00001 0.00000 0.02585 0.00421 0.00039 0.00002 0.00000 0.00000 0.00001 0.00000 0.02374 0.00384 0.00035 0.00002 0.00000 0.00000 0.00001 0.00000 0.02189 0.00352 0.00032 0.00002 0.00000 0.00000 0.00001 0.00000 0.02031 0.00325 0.00029 0.00001 0.00000 0.00000 0.00001 0.00000 0.01888 0.00300 0.00026 0.00001 0.00000 0.00000 0.00001 0.00000 0.01754 0.00277 0.00024 0.00001 0.00000 0.00000 0.00001 0.00000 0.01641 0.00258 0.00022 0.00001 0.00000 0.00000 0.00000 0.00000 0.01539 0.00241 0.00021 0.00001 0.00000 0.00000 0.00000 0.00000 0.01446 0.00226 0.00019 0.00001 0.00000 0.00000 0.00000 0.00000 0.01358 0.00211 0.00018 0.00001 0.00000 0.00000 0.00000 0.00000 0.01282 0.00198 0.00017 0.00001 0.00000 0.00000 0.00000 0.00000 0.01211 0.00187 0.00016 0.00001 0.00000 0.00000 0.00000 0.00000 0.01148 0.00176 0.00015 0.00001 0.00000 0.00000 0.00000 0.00000 0.01086 0.00166 0.00014 0.00001 0.00000 0.00000 0.00000 0.00000 0.01032 0.00157 0.00013 0.00001 0.00000 0.00000 0.00000 0.00000 0.00983 0.00149 0.00012 0.00001 0.00000 0.00000 0.00000 0.00000 0.00934 0.00142 0.00012 0.00001 0.00000 0.00000 0.00000 0.00000 0.07481 0.01184 0.00161 0.00003 0.00000 0.00000 0.00001 0.00000 0.06910 0.01086 0.00139 0.00003 0.00000 0.00000 0.00001 0.00000 0.06135 0.00954 0.00113 0.00003 0.00000 0.00000 0.00001 0.00000 0.05626 0.00868 0.00097 0.00002 0.00000 0.00000 0.00001 0.00000 0.05134 0.00786 0.00083 0.00002 0.00000 0.00000 0.00001 0.00000 0.04755 0.00723 0.00074 0.00002 0.00000 0.00000 0.00001 0.00000 0.04416 0.00668 0.00066 0.00002 0.00000 0.00000 0.00001 0.00000 0.04077 0.00612 0.00058 0.00002 0.00000 0.00000 0.00001 0.00000 0.03817 0.00570 0.00053 0.00001 0.00000 0.00000 0.00001 0.00000 0.03571 0.00531 0.00048 0.00001 0.00000 0.00000 0.00000 0.00000 0.03397 0.00503 0.00045 0.00001 0.00000 0.00000 0.00000 0.00000 0.03047 0.00447 0.00039 0.00001 0.00000 0.00000 0.00000 0.00000 0.02774 0.00404 0.00034 0.00001 0.00000 0.00000 0.00000 0.00000 0.02501 0.00361 0.00030 0.00001 0.00000 0.00000 0.00000 0.00000 0.02251 0.00323 0.00026 0.00001 0.00000 0.00000 0.00000 0.00000 0.02047 0.00291 0.00023 0.00001 0.00000 0.00000 0.00000 0.00000 0.01860 0.00263 0.00020 0.00001 0.00000 0.00000 0.00000 0.00000 0.01718 0.00241 0.00019 0.00001 0.00000 0.00000 0.00000 0.00000 0.01565 0.00219 0.00017 0.00001 0.00000 0.00000 0.00000 0.00000 0.01440 0.00200 0.00015 0.00000 0.00000 0.00000 0.00000 0.00000 0.01334 0.00184 0.00014 0.00000 0.00000 0.00000 0.00000 0.00000 0.01215 0.00167 0.00012 0.00000 0.00000 0.00000 0.00000 0.00000 0.01111 0.00152 0.00011 0.00000 0.00000 0.00000 0.00000 0.00000 0.01023 0.00139 0.00010 0.00000 0.00000 0.00000 0.00000 0.00000 0.00944 0.00127 0.00009 0.00000 0.00000 0.00000 0.00000 0.00000 0.00871 0.00117 0.00008 0.00000 0.00000 0.00000 0.00000 0.00000 0.00810 0.00108 0.00008 0.00000 0.00000 0.00000 0.00000 0.00000 0.00754 0.00100 0.00007 0.00000 0.00000 0.00000 0.00000 0.00000 0.00704 0.00093 0.00007 0.00000 0.00000 0.00000 0.00000 0.00000 0.00657 0.00087 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00617 0.00081 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00580 0.00076 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.00547 0.00071 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.00514 0.00067 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.00486 0.00063 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00461 0.00059 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00436 0.00056 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.03992 0.00518 0.00042 0.00001 0.00000 0.00000 0.00000 0.00000 0.03652 0.00470 0.00037 0.00001 0.00000 0.00000 0.00000 0.00000 0.03198 0.00407 0.00030 0.00000 0.00000 0.00000 0.00000 0.00000 0.02902 0.00367 0.00027 0.00000 0.00000 0.00000 0.00000 0.00000 0.02620 0.00329 0.00023 0.00000 0.00000 0.00000 0.00000 0.00000 0.02405 0.00300 0.00021 0.00000 0.00000 0.00000 0.00000 0.00000 0.02214 0.00274 0.00019 0.00000 0.00000 0.00000 0.00000 0.00000 0.02026 0.00249 0.00017 0.00000 0.00000 0.00000 0.00000 0.00000 0.01882 0.00230 0.00015 0.00000 0.00000 0.00000 0.00000 0.00000 0.01748 0.00213 0.00014 0.00000 0.00000 0.00000 0.00000 0.00000 0.01654 0.00200 0.00013 0.00000 0.00000 0.00000 0.00000 0.00000 0.01465 0.00176 0.00011 0.00000 0.00000 0.00000 0.00000 0.00000 0.01319 0.00157 0.00010 0.00000 0.00000 0.00000 0.00000 0.00000 0.01176 0.00139 0.00009 0.00000 0.00000 0.00000 0.00000 0.00000 0.01046 0.00123 0.00008 0.00000 0.00000 0.00000 0.00000 0.00000 0.00941 0.00110 0.00007 0.00000 0.00000 0.00000 0.00000 0.00000 0.00846 0.00098 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00775 0.00089 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.00699 0.00080 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.00637 0.00072 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00586 0.00066 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00528 0.00059 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00478 0.00053 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00437 0.00048 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00399 0.00044 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00365 0.00040 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00337 0.00037 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00311 0.00034 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00289 0.00031 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00268 0.00029 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00250 0.00027 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00233 0.00025 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00218 0.00023 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00204 0.00022 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00192 0.00020 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00181 0.00019 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00170 0.00018 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00512 0.00036 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00456 0.00032 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00384 0.00026 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00338 0.00023 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00296 0.00020 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00265 0.00018 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00238 0.00016 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00212 0.00014 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00193 0.00013 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00175 0.00011 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00163 0.00011 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00139 0.00009 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00122 0.00008 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00105 0.00007 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00090 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00079 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00069 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00061 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00054 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00048 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00043 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00037 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00033 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00029 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00026 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00023 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00021 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00019 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00017 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00016 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00014 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00013 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00012 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00011 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00010 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00010 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00009 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 ����������������herwig++-2.6.0.orig/PDF/mrst/2007/������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464205�016753� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/mrst/2007/mrst2007lomod.dat�������������������������������������������������0000644�0001750�0001750�00000430760�11754474775�022023� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 0.02366 0.01081 9.07020 0.83158 0.00000 0.00000 0.43256 0.83158 0.02383 0.01095 12.48341 0.86348 0.00000 0.00000 0.46703 0.86348 0.02408 0.01115 18.65619 0.93210 0.00000 0.00000 0.53938 0.93210 0.02426 0.01129 23.97873 1.00041 0.06542 0.00000 0.61032 1.00041 0.02445 0.01145 30.42459 1.09094 0.16238 0.00000 0.70356 1.09094 0.02461 0.01158 36.72531 1.18593 0.26281 0.00000 0.80084 1.18593 0.02476 0.01170 43.44030 1.29302 0.37502 0.00000 0.91008 1.29302 0.02492 0.01184 51.31299 1.42510 0.51245 0.00000 1.04442 1.42510 0.02506 0.01195 58.79745 1.55632 0.64823 0.00000 1.17756 1.55632 0.02520 0.01207 66.60634 1.69841 0.79467 0.00000 1.32148 1.69841 0.02531 0.01216 73.20739 1.82222 0.92187 0.00000 1.44672 1.82222 0.02553 0.01234 88.53299 2.12126 1.22802 0.00172 1.74875 2.12126 0.02573 0.01251 102.75306 2.41926 1.53204 0.30236 2.04929 2.41927 0.02595 0.01269 120.16188 2.79906 1.91842 0.70038 2.43186 2.79906 0.02617 0.01288 139.97977 3.24856 2.37463 1.16843 2.88419 3.24857 0.02638 0.01305 159.48859 3.70700 2.83902 1.64333 3.34513 3.70700 0.02658 0.01323 180.66284 4.22072 3.35864 2.17334 3.86133 4.22073 0.02675 0.01337 199.37390 4.68746 3.83018 2.65335 4.33009 4.68747 0.02696 0.01355 223.45438 5.30441 4.45286 3.28610 4.94945 5.30442 0.02714 0.01371 246.03366 5.89830 5.05172 3.89372 5.54543 5.89830 0.02731 0.01385 267.79172 6.48372 5.64164 4.49154 6.13274 6.48373 0.02752 0.01403 296.84021 7.28408 6.44759 5.30734 6.93545 7.28408 0.02772 0.01420 325.62436 8.09696 7.26566 6.13449 7.75051 8.09696 0.02791 0.01436 353.88416 8.91304 8.08652 6.96373 8.56861 8.91305 0.02810 0.01452 383.36743 9.78234 8.96051 7.84596 9.43988 9.78235 0.02828 0.01468 413.42319 10.68644 9.86915 8.76253 10.34589 10.68645 0.02845 0.01483 442.94604 11.59115 10.77809 9.67888 11.25238 11.59117 0.02862 0.01497 471.72626 12.48836 11.67923 10.58689 12.15123 12.48837 0.02878 0.01511 501.56931 13.43383 12.62861 11.54310 13.09835 13.43385 0.02894 0.01525 531.82843 14.40778 13.60635 12.52746 14.07388 14.40779 0.02910 0.01539 561.41571 15.37430 14.57644 13.50378 15.04191 15.37432 0.02924 0.01551 590.14099 16.32567 15.53114 14.46430 15.99468 16.32568 0.02939 0.01564 619.84021 17.32247 16.53127 15.47024 16.99288 17.32248 0.02954 0.01577 649.84717 18.34259 17.55465 16.49930 18.01437 18.34261 0.02968 0.01589 679.12280 19.35028 18.56542 17.51542 19.02335 19.35030 0.02981 0.01600 707.48151 20.33768 19.55571 18.51075 20.01197 20.33770 0.02994 0.01612 736.73621 21.36765 20.58858 19.54867 21.04315 21.36767 0.02700 0.01348 7.96348 0.71306 0.00000 0.00000 0.37131 0.71306 0.02720 0.01365 10.86776 0.74096 0.00000 0.00000 0.40142 0.74096 0.02749 0.01390 16.03893 0.80013 0.00000 0.00000 0.46377 0.80013 0.02771 0.01408 20.43001 0.85827 0.05570 0.00000 0.52417 0.85828 0.02793 0.01427 25.68217 0.93452 0.13748 0.00000 0.60274 0.93453 0.02812 0.01444 30.75863 1.01376 0.22139 0.00000 0.68394 1.01376 0.02831 0.01460 36.11567 1.10233 0.31437 0.00000 0.77436 1.10234 0.02850 0.01476 42.33580 1.21067 0.42730 0.00000 0.88463 1.21068 0.02867 0.01491 48.19603 1.31747 0.53802 0.00000 0.99307 1.31747 0.02883 0.01505 54.26094 1.43230 0.65659 0.00000 1.10947 1.43231 0.02896 0.01516 59.35228 1.53176 0.75896 0.00000 1.21016 1.53177 0.02924 0.01540 71.06065 1.77002 1.00334 0.00137 1.45098 1.77003 0.02947 0.01560 81.78095 2.00507 1.24354 0.23937 1.68819 2.00508 0.02974 0.01583 94.75594 2.30171 1.54584 0.55146 1.98721 2.30172 0.03001 0.01607 109.35155 2.64921 1.89910 0.91466 2.33712 2.64922 0.03026 0.01629 123.55772 3.00016 2.25517 1.27957 2.69022 3.00018 0.03052 0.01650 138.81337 3.38985 2.64991 1.68304 3.08203 3.38987 0.03072 0.01668 152.16571 3.74098 3.00517 2.04541 3.43489 3.74100 0.03098 0.01690 169.18658 4.20131 3.47042 2.51912 3.89728 4.20134 0.03120 0.01710 184.99269 4.64076 3.91414 2.97019 4.33852 4.64079 0.03141 0.01728 200.09329 5.07076 4.34799 3.41067 4.77013 5.07078 0.03167 0.01750 220.06784 5.65396 4.93600 4.00695 5.35535 5.65399 0.03192 0.01772 239.66544 6.24129 5.52778 4.60635 5.94454 6.24132 0.03215 0.01792 258.72931 6.82631 6.11690 5.20250 6.53128 6.82635 0.03239 0.01812 278.44409 7.44481 6.73943 5.83194 7.15146 7.44485 0.03261 0.01831 298.36728 8.08333 7.38184 6.48100 7.79161 8.08337 0.03283 0.01850 317.77621 8.71782 8.01995 7.12532 8.42762 8.71786 0.03303 0.01868 336.54990 9.34290 8.64841 7.75955 9.05411 9.34294 0.03324 0.01885 355.87140 9.99745 9.30631 8.42317 9.71007 9.99751 0.03344 0.01903 375.31610 10.66748 9.97959 9.10200 10.38146 10.66753 0.03364 0.01919 394.19354 11.32841 10.64358 9.77122 11.04368 11.32847 0.03382 0.01935 412.39755 11.97531 11.29334 10.42585 11.69177 11.97537 0.03401 0.01951 431.09399 12.64933 11.97022 11.10760 12.36699 12.64939 0.03419 0.01967 449.86148 13.33539 12.65907 11.80120 13.05421 13.33545 0.03437 0.01982 468.05460 14.00947 13.33579 12.48241 13.72940 14.00954 0.03454 0.01996 485.57220 14.66669 13.99549 13.14633 14.38766 14.66676 0.03471 0.02010 503.53693 15.34889 14.68017 13.83524 15.07090 15.34897 0.03069 0.01656 6.99648 0.61443 0.00000 0.00000 0.32026 0.61443 0.03092 0.01677 9.46487 0.63885 0.00000 0.00000 0.34657 0.63885 0.03126 0.01708 13.79128 0.68989 0.00000 0.00000 0.40035 0.68990 0.03151 0.01730 17.40904 0.73940 0.04744 0.00000 0.45179 0.73941 0.03177 0.01754 21.68345 0.80364 0.11643 0.00000 0.51802 0.80365 0.03200 0.01774 25.76971 0.86976 0.18657 0.00000 0.58582 0.86977 0.03222 0.01794 30.04086 0.94305 0.26365 0.00000 0.66070 0.94306 0.03244 0.01814 34.95436 1.03198 0.35652 0.00000 0.75127 1.03199 0.03264 0.01832 39.54406 1.11898 0.44690 0.00000 0.83968 1.11899 0.03284 0.01849 44.25797 1.21190 0.54303 0.00000 0.93395 1.21192 0.03299 0.01863 48.18958 1.29193 0.62556 0.00000 1.01502 1.29194 0.03331 0.01892 57.15152 1.48213 0.82101 0.00109 1.20742 1.48215 0.03359 0.01917 65.25593 1.66800 1.01131 0.19002 1.39514 1.66802 0.03391 0.01945 74.96340 1.90046 1.24863 0.43556 1.62963 1.90048 0.03424 0.01974 85.76724 2.17022 1.52334 0.71863 1.90146 2.17025 0.03454 0.02001 96.17752 2.44026 1.79777 1.00048 2.17333 2.44029 0.03484 0.02028 107.25268 2.73763 2.09948 1.30952 2.47252 2.73766 0.03509 0.02050 116.86543 3.00361 2.36901 1.58502 2.73998 3.00365 0.03539 0.02077 129.01874 3.34979 2.71941 1.94252 3.08793 3.34983 0.03567 0.02101 140.21144 3.67786 3.05115 2.28043 3.41753 3.67791 0.03591 0.02123 150.82655 3.99682 3.37341 2.60826 3.73787 3.99687 0.03623 0.02150 164.75859 4.42647 3.80719 3.04898 4.16925 4.42652 0.03653 0.02176 178.31473 4.85603 4.24057 3.48875 4.60040 4.85609 0.03681 0.02201 191.40092 5.28105 4.66910 3.92318 5.02689 5.28111 0.03710 0.02226 204.83585 5.72756 5.11907 4.37894 5.47485 5.72763 0.03738 0.02250 218.31612 6.18567 5.58052 4.84598 5.93436 6.18575 0.03764 0.02272 231.36015 6.63825 6.03621 5.30687 6.38823 6.63833 0.03789 0.02294 243.89775 7.08170 6.48255 5.75805 6.83289 7.08178 0.03814 0.02316 256.72339 7.54365 6.94738 6.22766 7.29604 7.54374 0.03839 0.02337 269.55334 8.01408 7.42060 6.70554 7.76764 8.01418 0.03863 0.02357 281.93805 8.47588 7.88502 7.17433 8.23053 8.47598 0.03886 0.02376 293.81683 8.92579 8.33739 7.63079 8.68147 8.92590 0.03909 0.02396 305.95276 9.39249 8.80654 8.10401 9.14919 9.39260 0.03932 0.02415 318.07233 9.86545 9.28189 8.58335 9.62315 9.86556 0.03953 0.02433 329.76175 10.32818 9.74689 9.05210 10.08683 10.32831 0.03974 0.02451 340.96423 10.77755 10.19838 9.50713 10.53709 10.77768 0.03995 0.02468 352.39966 11.24220 10.66516 9.97746 11.00263 11.24233 0.03312 0.01871 6.48074 0.56323 0.00000 0.00000 0.29374 0.56323 0.03338 0.01895 8.71949 0.58580 0.00000 0.00000 0.31805 0.58581 0.03376 0.01930 12.60485 0.63256 0.00000 0.00000 0.36730 0.63257 0.03404 0.01955 15.82258 0.67755 0.04310 0.00000 0.41404 0.67756 0.03433 0.01981 19.59520 0.73552 0.10543 0.00000 0.47383 0.73553 0.03458 0.02004 23.17697 0.79484 0.16841 0.00000 0.53468 0.79485 0.03482 0.02026 26.89844 0.86025 0.23729 0.00000 0.60154 0.86026 0.03508 0.02049 31.15475 0.93921 0.31985 0.00000 0.68200 0.93923 0.03530 0.02070 35.10921 1.01610 0.39982 0.00000 0.76018 1.01612 0.03552 0.02089 39.15126 1.09788 0.48453 0.00000 0.84318 1.09790 0.03569 0.02104 42.50878 1.16805 0.55700 0.00000 0.91432 1.16808 0.03606 0.02137 50.11974 1.33404 0.72779 0.00095 1.08231 1.33407 0.03637 0.02166 56.94827 1.49530 0.89310 0.16527 1.24526 1.49534 0.03673 0.02197 65.07397 1.69584 1.09808 0.37767 1.44765 1.69588 0.03710 0.02230 74.05653 1.92721 1.33396 0.62108 1.68090 1.92725 0.03744 0.02260 82.65697 2.15753 1.56829 0.86209 1.91290 2.15758 0.03778 0.02290 91.75272 2.40987 1.82460 1.12500 2.16690 2.40993 0.03807 0.02315 99.60578 2.63454 2.05251 1.35829 2.39292 2.63460 0.03841 0.02346 109.48273 2.92564 2.34746 1.65963 2.68562 2.92570 0.03872 0.02373 118.53139 3.20026 2.62542 1.94316 2.96164 3.20033 0.03901 0.02397 127.07339 3.46618 2.89437 2.21712 3.22883 3.46626 0.03937 0.02429 138.22931 3.82287 3.25483 2.58382 3.58709 3.82296 0.03971 0.02458 149.02731 4.17788 3.61333 2.94807 3.94356 4.17798 0.04004 0.02486 159.40056 4.52769 3.96634 3.30639 4.29470 4.52779 0.04036 0.02513 170.00134 4.89374 4.33555 3.68081 4.66207 4.89384 0.04068 0.02540 180.58994 5.26786 4.71272 4.06300 5.03746 5.26797 0.04098 0.02566 190.79234 5.63612 5.08383 4.43879 5.40692 5.63625 0.04127 0.02590 200.55952 5.99574 5.44609 4.80541 5.76764 5.99588 0.04156 0.02615 210.51302 6.36917 5.82213 5.18576 6.14216 6.36930 0.04185 0.02639 220.43213 6.74823 6.20375 5.57157 6.52229 6.74838 0.04213 0.02662 229.97256 7.11922 6.57713 5.94888 6.89428 7.11937 0.04239 0.02683 239.09229 7.47964 6.93979 6.31522 7.25563 7.47980 0.04265 0.02705 248.37852 7.85247 7.31486 6.69395 7.62940 7.85264 0.04291 0.02727 257.62228 8.22929 7.69387 7.07654 8.00713 8.22947 0.04317 0.02747 266.50970 8.59700 8.06364 7.44970 8.37570 8.59719 0.04341 0.02767 275.00174 8.95322 8.42180 7.81103 8.73273 8.95341 0.04365 0.02787 283.64520 9.32067 8.79120 8.18361 9.10099 9.32086 0.03498 0.02041 6.13536 0.52948 0.00000 0.00000 0.27625 0.52948 0.03526 0.02067 8.22148 0.55082 0.00000 0.00000 0.29922 0.55083 0.03568 0.02105 11.81531 0.59473 0.00000 0.00000 0.34546 0.59474 0.03598 0.02132 14.77010 0.63672 0.04023 0.00000 0.38910 0.63673 0.03630 0.02161 18.21447 0.69056 0.09814 0.00000 0.44464 0.69057 0.03657 0.02186 21.46766 0.74539 0.15642 0.00000 0.50091 0.74541 0.03683 0.02210 24.83249 0.80563 0.21990 0.00000 0.56250 0.80565 0.03711 0.02235 28.66401 0.87806 0.29572 0.00000 0.63634 0.87809 0.03736 0.02257 32.20930 0.94835 0.36890 0.00000 0.70784 0.94838 0.03759 0.02279 35.81995 1.02288 0.44617 0.00000 0.78351 1.02292 0.03778 0.02295 38.80980 1.08666 0.51210 0.00000 0.84819 1.08670 0.03818 0.02331 45.55868 1.23698 0.66691 0.00086 1.00038 1.23702 0.03853 0.02362 51.57695 1.38236 0.81609 0.14930 1.14734 1.38241 0.03892 0.02396 58.70229 1.56239 1.00028 0.34036 1.32911 1.56245 0.03933 0.02432 66.53792 1.76917 1.21129 0.55836 1.53766 1.76924 0.03970 0.02465 74.00317 1.97416 1.42004 0.77330 1.74422 1.97423 0.04008 0.02498 81.86190 2.19787 1.64746 1.00685 1.96947 2.19795 0.04040 0.02525 88.61882 2.39635 1.84898 1.21335 2.16922 2.39644 0.04078 0.02558 97.08227 2.65263 2.10886 1.47917 2.42700 2.65272 0.04113 0.02587 104.80379 2.89356 2.35293 1.72838 2.66924 2.89366 0.04144 0.02614 112.06613 3.12614 2.58835 1.96844 2.90301 3.12625 0.04184 0.02648 121.51340 3.43708 2.90282 2.28871 3.21542 3.43720 0.04222 0.02681 130.61909 3.74548 3.21449 2.60571 3.52519 3.74561 0.04258 0.02711 139.33240 4.04838 3.52039 2.91652 3.82934 4.04852 0.04294 0.02741 148.20369 4.36437 3.83934 3.24031 4.14656 4.36452 0.04330 0.02770 157.03224 4.68636 4.16419 3.56981 4.46975 4.68652 0.04363 0.02798 165.50919 5.00242 4.48290 3.89286 4.78691 5.00258 0.04395 0.02824 173.59793 5.31023 4.79319 4.20718 5.09576 5.31041 0.04428 0.02851 181.81505 5.62904 5.11447 4.53245 5.41560 5.62923 0.04460 0.02877 189.97807 5.95187 5.43968 4.86154 5.73942 5.95206 0.04490 0.02902 197.80595 6.26705 5.75710 5.18261 6.05554 6.26725 0.04519 0.02925 205.26749 6.57256 6.06472 5.49363 6.36193 6.57278 0.04549 0.02949 212.84416 6.88790 6.38215 5.81446 6.67815 6.88813 0.04578 0.02972 220.36563 7.20593 6.70223 6.13786 6.99703 7.20616 0.04606 0.02995 227.57787 7.51562 7.01386 6.45261 7.30753 7.51586 0.04633 0.03016 234.45189 7.81503 7.31509 6.75679 7.60771 7.81529 0.04660 0.03038 241.43127 8.12330 7.62519 7.06983 7.91674 8.12357 0.03648 0.02180 5.88041 0.50498 0.00000 0.00000 0.26355 0.50498 0.03678 0.02208 7.85486 0.52542 0.00000 0.00000 0.28554 0.52543 0.03722 0.02248 11.23652 0.56724 0.00000 0.00000 0.32957 0.56725 0.03754 0.02278 14.00105 0.60703 0.03813 0.00000 0.37093 0.60705 0.03788 0.02309 17.20911 0.65786 0.09283 0.00000 0.42338 0.65788 0.03817 0.02335 20.22689 0.70945 0.14769 0.00000 0.47633 0.70947 0.03845 0.02361 23.33732 0.76594 0.20727 0.00000 0.53411 0.76597 0.03875 0.02388 26.86715 0.83368 0.27822 0.00000 0.60319 0.83371 0.03901 0.02411 30.12302 0.89923 0.34652 0.00000 0.66988 0.89927 0.03926 0.02434 33.42966 0.96857 0.41847 0.00000 0.74031 0.96861 0.03946 0.02452 36.16127 1.02779 0.47973 0.00000 0.80038 1.02783 0.03989 0.02490 42.30732 1.16695 0.62317 0.00080 0.94132 1.16700 0.04027 0.02523 47.76242 1.30109 0.76091 0.13797 1.07697 1.30115 0.04069 0.02560 54.19625 1.46666 0.93044 0.31398 1.24419 1.46673 0.04113 0.02598 61.24351 1.65619 1.12399 0.51412 1.43539 1.65627 0.04153 0.02633 67.93269 1.84348 1.31486 0.71082 1.62418 1.84357 0.04193 0.02668 74.94997 2.04727 1.52218 0.92392 1.82944 2.04737 0.04227 0.02697 80.96469 2.22760 1.70540 1.11184 2.01098 2.22771 0.04269 0.02732 88.47541 2.45984 1.94107 1.35310 2.24464 2.45995 0.04306 0.02764 95.30652 2.67760 2.16181 1.57870 2.46365 2.67772 0.04340 0.02792 101.71379 2.88733 2.37423 1.79550 2.67451 2.88747 0.04383 0.02829 110.02437 3.16704 2.65730 2.08402 2.95561 3.16719 0.04424 0.02863 118.00949 3.44374 2.93710 2.36885 3.23361 3.44389 0.04463 0.02895 125.62845 3.71485 3.21107 2.64745 3.50591 3.71501 0.04502 0.02927 133.36423 3.99704 3.49607 2.93701 3.78927 3.99721 0.04540 0.02958 141.04193 4.28394 3.78569 3.23101 4.07731 4.28413 0.04577 0.02988 148.39502 4.56497 4.06925 3.51866 4.35940 4.56518 0.04612 0.03016 155.39447 4.83814 4.34477 3.79798 4.63355 4.83835 0.04647 0.03044 162.48862 5.12054 4.62951 4.08649 4.91693 5.12077 0.04681 0.03072 169.51987 5.40596 4.91720 4.37783 5.20329 5.40620 0.04715 0.03099 176.24768 5.68414 5.19752 4.66158 5.48236 5.68439 0.04746 0.03124 182.64737 5.95334 5.46872 4.93599 5.75240 5.95360 0.04778 0.03149 189.13263 6.23075 5.74812 5.21859 6.03065 6.23102 0.04810 0.03174 195.55785 6.51009 6.02941 5.50301 6.31080 6.51038 0.04840 0.03198 201.70689 6.78169 6.30285 5.77939 6.58317 6.78198 0.04869 0.03220 207.55687 7.04391 6.56680 6.04611 6.84611 7.04421 0.04899 0.03243 213.48586 7.31350 6.83812 6.32022 7.11642 7.31381 0.04163 0.02675 5.15040 0.43649 0.00000 0.00000 0.22804 0.43650 0.04200 0.02709 6.80841 0.45436 0.00000 0.00000 0.24723 0.45438 0.04255 0.02759 9.59410 0.49027 0.00000 0.00000 0.28502 0.49029 0.04295 0.02795 11.82906 0.52388 0.03221 0.00000 0.31997 0.52391 0.04337 0.02832 14.38445 0.56626 0.07790 0.00000 0.36373 0.56630 0.04374 0.02865 16.75673 0.60879 0.12322 0.00000 0.40742 0.60883 0.04409 0.02896 19.17403 0.65489 0.17195 0.00000 0.45462 0.65495 0.04447 0.02929 21.88703 0.70964 0.22945 0.00000 0.51051 0.70971 0.04480 0.02958 24.36397 0.76216 0.28431 0.00000 0.56401 0.76223 0.04512 0.02986 26.85673 0.81727 0.34165 0.00000 0.62005 0.81735 0.04537 0.03008 28.90009 0.86403 0.39014 0.00000 0.66753 0.86411 0.04592 0.03054 33.44957 0.97291 0.50267 0.00062 0.77793 0.97301 0.04639 0.03095 37.42582 1.07671 0.60955 0.10734 0.88302 1.07682 0.04693 0.03140 42.05719 1.20349 0.73971 0.24289 1.01121 1.20362 0.04749 0.03186 47.06540 1.34705 0.88671 0.39536 1.15620 1.34720 0.04801 0.03229 51.76191 1.48747 1.03018 0.54368 1.29790 1.48764 0.04853 0.03272 56.63353 1.63882 1.18454 0.70284 1.45050 1.63900 0.04897 0.03307 60.76723 1.77161 1.31979 0.84200 1.58432 1.77181 0.04951 0.03350 65.87799 1.94120 1.49232 1.01916 1.75514 1.94142 0.04998 0.03389 70.47986 2.09890 1.65256 1.18344 1.91390 2.09913 0.05043 0.03424 74.75804 2.24967 1.80563 1.34014 2.06563 2.24992 0.05099 0.03468 80.25473 2.44917 2.00800 1.54704 2.26633 2.44944 0.05152 0.03510 85.48305 2.64490 2.20638 1.74959 2.46316 2.64519 0.05203 0.03549 90.42516 2.83520 2.39913 1.94619 2.65449 2.83551 0.05254 0.03588 95.39863 3.03187 2.59820 2.14903 2.85216 3.03220 0.05304 0.03626 100.29173 3.23041 2.79906 2.35353 3.05167 3.23076 0.05351 0.03662 104.93932 3.42359 2.99441 2.55227 3.24577 3.42396 0.05397 0.03697 109.32909 3.61021 3.18304 2.74405 3.43323 3.61060 0.05442 0.03731 113.74519 3.80200 3.37683 2.94096 3.62585 3.80241 0.05488 0.03765 118.08972 3.99471 3.57148 3.13864 3.81937 3.99514 0.05531 0.03797 122.21742 4.18148 3.76008 3.33009 4.00691 4.18193 0.05573 0.03827 126.11768 4.36129 3.94160 3.51427 4.18744 4.36176 0.05614 0.03858 130.04422 4.54565 4.12766 3.70299 4.37251 4.54614 0.05656 0.03888 133.90953 4.73037 4.31406 3.89197 4.55793 4.73088 0.05696 0.03917 137.58543 4.90911 4.49437 4.07472 4.73733 4.90963 0.05734 0.03945 141.06190 5.08089 4.66764 4.25029 4.90974 5.08144 0.05773 0.03973 144.56499 5.25674 4.84497 4.42992 5.08621 5.25730 0.04768 0.03277 4.50643 0.37823 0.00000 0.00000 0.19783 0.37825 0.04815 0.03318 5.88895 0.39389 0.00000 0.00000 0.21461 0.39392 0.04886 0.03379 8.16341 0.42468 0.00000 0.00000 0.24700 0.42473 0.04938 0.03423 9.95090 0.45297 0.02712 0.00000 0.27644 0.45304 0.04992 0.03469 11.96176 0.48814 0.06510 0.00000 0.31278 0.48822 0.05040 0.03509 13.80173 0.52298 0.10231 0.00000 0.34861 0.52307 0.05086 0.03547 15.65330 0.56034 0.14191 0.00000 0.38690 0.56045 0.05136 0.03588 17.70631 0.60423 0.18814 0.00000 0.43178 0.60436 0.05179 0.03623 19.55978 0.64594 0.23184 0.00000 0.47431 0.64608 0.05221 0.03657 21.40660 0.68933 0.27712 0.00000 0.51850 0.68948 0.05254 0.03684 22.90765 0.72587 0.31515 0.00000 0.55566 0.72604 0.05326 0.03741 26.21148 0.81013 0.40252 0.00048 0.64122 0.81033 0.05389 0.03790 29.04941 0.88951 0.48452 0.08262 0.72170 0.88973 0.05460 0.03845 32.30956 0.98537 0.58326 0.18582 0.81877 0.98562 0.05535 0.03903 35.78522 1.09265 0.69347 0.30054 0.92727 1.09293 0.05603 0.03955 39.00108 1.19642 0.79985 0.41093 1.03214 1.19674 0.05673 0.04007 42.29527 1.30713 0.91313 0.52818 1.14392 1.30747 0.05731 0.04050 45.05922 1.40338 1.01148 0.62975 1.24106 1.40375 0.05802 0.04103 48.43869 1.52521 1.13581 0.75792 1.36393 1.52561 0.05866 0.04150 51.44758 1.63747 1.25025 0.87569 1.47711 1.63790 0.05925 0.04192 54.21704 1.74394 1.35869 0.98713 1.58441 1.74440 0.06000 0.04247 57.73747 1.88364 1.50085 1.13303 1.72514 1.88414 0.06071 0.04297 61.04794 2.01948 1.63895 1.27457 1.86193 2.02001 0.06139 0.04345 64.14410 2.15046 1.77202 1.41082 1.99380 2.15103 0.06206 0.04393 67.22849 2.28476 1.90839 1.55031 2.12897 2.28536 0.06273 0.04439 70.23277 2.41932 2.04493 1.68985 2.26436 2.41995 0.06337 0.04483 73.05930 2.54930 2.17677 1.82449 2.39512 2.54997 0.06398 0.04525 75.70518 2.67402 2.30322 1.95353 2.52057 2.67472 0.06459 0.04567 78.34405 2.80137 2.43228 2.08518 2.64864 2.80210 0.06519 0.04608 80.91782 2.92852 2.56110 2.21650 2.77650 2.92929 0.06577 0.04647 83.34300 3.05101 2.68517 2.34291 2.89965 3.05181 0.06633 0.04684 85.61670 3.16827 2.80389 2.46383 3.01753 3.16910 0.06689 0.04721 87.88810 3.28783 2.92492 2.58705 3.13771 3.28869 0.06744 0.04758 90.10722 3.40698 3.04551 2.70977 3.25746 3.40787 0.06797 0.04793 92.20187 3.52166 3.16154 2.82782 3.37272 3.52258 0.06848 0.04826 94.16901 3.63134 3.27250 2.94068 3.48294 3.63229 0.06900 0.04860 96.13747 3.74307 3.38552 3.05559 3.59521 3.74406 0.05176 0.03686 4.16730 0.34837 0.00000 0.00000 0.18235 0.34840 0.05232 0.03732 5.40540 0.36289 0.00000 0.00000 0.19789 0.36294 0.05315 0.03801 7.41548 0.39102 0.00000 0.00000 0.22749 0.39111 0.05377 0.03851 8.97463 0.41658 0.02449 0.00000 0.25409 0.41668 0.05442 0.03903 10.71075 0.44803 0.05850 0.00000 0.28662 0.44816 0.05499 0.03948 12.28489 0.47894 0.09157 0.00000 0.31843 0.47909 0.05554 0.03991 13.85649 0.51186 0.12652 0.00000 0.35220 0.51202 0.05613 0.04037 15.58577 0.55027 0.16706 0.00000 0.39151 0.55047 0.05664 0.04076 17.13596 0.58654 0.20515 0.00000 0.42854 0.58676 0.05714 0.04115 18.67086 0.62408 0.24441 0.00000 0.46680 0.62432 0.05754 0.04145 19.91170 0.65555 0.27723 0.00000 0.49883 0.65580 0.05840 0.04209 22.62300 0.72766 0.35217 0.00041 0.57214 0.72795 0.05915 0.04265 24.92589 0.79509 0.42199 0.07050 0.64057 0.79541 0.06000 0.04327 27.54815 0.87594 0.50547 0.15795 0.72253 0.87631 0.06090 0.04392 30.31849 0.96575 0.59795 0.25447 0.81346 0.96616 0.06171 0.04450 32.85975 1.05204 0.68661 0.34671 0.90075 1.05249 0.06255 0.04509 35.44203 1.14349 0.78042 0.44405 0.99320 1.14399 0.06325 0.04558 37.59300 1.22255 0.86140 0.52791 1.07307 1.22308 0.06410 0.04617 40.20416 1.32206 0.96320 0.63313 1.17354 1.32264 0.06486 0.04670 42.51210 1.41324 1.05637 0.72927 1.26556 1.41386 0.06557 0.04718 44.62263 1.49929 1.14422 0.81980 1.35237 1.49994 0.06647 0.04779 47.28684 1.61160 1.25877 0.93769 1.46563 1.61230 0.06732 0.04836 49.77347 1.72018 1.36943 1.05143 1.57509 1.72093 0.06813 0.04889 52.08295 1.82435 1.47552 1.16034 1.68007 1.82515 0.06894 0.04943 54.36831 1.93063 1.58369 1.27130 1.78715 1.93148 0.06974 0.04995 56.57959 2.03660 1.69149 1.38178 1.89390 2.03750 0.07050 0.05044 58.64695 2.13851 1.79510 1.48789 1.99653 2.13945 0.07122 0.05091 60.57061 2.23588 1.89406 1.58916 2.09457 2.23687 0.07196 0.05138 62.47810 2.33491 1.99467 1.69207 2.19427 2.33594 0.07268 0.05184 64.32774 2.43338 2.09467 1.79430 2.29339 2.43445 0.07337 0.05227 66.06090 2.52788 2.19062 1.89235 2.38851 2.52900 0.07403 0.05269 67.67719 2.61803 2.28212 1.98581 2.47923 2.61919 0.07470 0.05310 69.28337 2.70962 2.37507 2.08070 2.57140 2.71082 0.07536 0.05351 70.84445 2.80059 2.46736 2.17490 2.66293 2.80183 0.07599 0.05390 72.31041 2.88786 2.55588 2.26522 2.75073 2.88914 0.07660 0.05428 73.68045 2.97106 2.64026 2.35129 2.83443 2.97238 0.07721 0.05465 75.04483 3.05556 2.72594 2.43866 2.91944 3.05692 0.05502 0.04007 3.94328 0.32887 0.00000 0.00000 0.17226 0.32892 0.05565 0.04058 5.08547 0.34264 0.00000 0.00000 0.18699 0.34272 0.05661 0.04132 6.92158 0.36904 0.00000 0.00000 0.21476 0.36916 0.05731 0.04187 8.33185 0.39279 0.02276 0.00000 0.23949 0.39293 0.05805 0.04244 9.89013 0.42182 0.05418 0.00000 0.26953 0.42200 0.05870 0.04293 11.29336 0.45016 0.08455 0.00000 0.29872 0.45037 0.05933 0.04340 12.68598 0.48019 0.11648 0.00000 0.32955 0.48042 0.06001 0.04390 14.20950 0.51506 0.15334 0.00000 0.36525 0.51532 0.06060 0.04433 15.56791 0.54782 0.18780 0.00000 0.39873 0.54811 0.06117 0.04475 16.90650 0.58159 0.22319 0.00000 0.43319 0.58191 0.06163 0.04508 17.98423 0.60980 0.25267 0.00000 0.46193 0.61015 0.06262 0.04578 20.32610 0.67416 0.31968 0.00037 0.52741 0.67455 0.06348 0.04639 22.29790 0.73399 0.38176 0.06279 0.58819 0.73443 0.06445 0.04707 24.52796 0.80536 0.45558 0.14028 0.66059 0.80585 0.06547 0.04777 26.86749 0.88419 0.53692 0.22534 0.74049 0.88473 0.06641 0.04841 28.99929 0.95953 0.61450 0.30621 0.81677 0.96013 0.06737 0.04905 31.15196 1.03900 0.69618 0.39115 0.89718 1.03965 0.06817 0.04958 32.93495 1.10741 0.76639 0.46402 0.96635 1.10810 0.06914 0.05023 35.08725 1.19313 0.85427 0.55505 1.05299 1.19389 0.07001 0.05080 36.97872 1.27135 0.93436 0.63788 1.13200 1.27216 0.07082 0.05132 38.69954 1.34489 1.00960 0.71558 1.20626 1.34574 0.07185 0.05198 40.85984 1.44048 1.10731 0.81637 1.30275 1.44140 0.07282 0.05260 42.86415 1.53251 1.20129 0.91319 1.39562 1.53349 0.07374 0.05318 44.71528 1.62045 1.29104 1.00555 1.48432 1.62148 0.07467 0.05376 46.53725 1.70983 1.38222 1.09929 1.57447 1.71093 0.07558 0.05433 48.29073 1.79863 1.47274 1.19228 1.66401 1.79979 0.07645 0.05487 49.92167 1.88373 1.55945 1.28129 1.74979 1.88494 0.07728 0.05537 51.43184 1.96478 1.64200 1.36597 1.83148 1.96604 0.07811 0.05588 52.92221 2.04695 1.72566 1.45175 1.91429 2.04827 0.07893 0.05637 54.36046 2.12841 1.80857 1.53672 1.99636 2.12978 0.07972 0.05684 55.70192 2.20635 1.88788 1.61797 2.07489 2.20778 0.08046 0.05729 56.94738 2.28050 1.96331 1.69520 2.14959 2.28198 0.08122 0.05774 58.17962 2.35563 2.03972 1.77341 2.22527 2.35716 0.08197 0.05818 59.37204 2.43006 2.11540 1.85085 2.30023 2.43164 0.08269 0.05861 60.48693 2.50127 2.18780 1.92490 2.37195 2.50290 0.08338 0.05901 61.52457 2.56900 2.25665 1.99531 2.44016 2.57068 0.08407 0.05941 62.55368 2.63763 2.32640 2.06662 2.50927 2.63935 0.05772 0.04273 3.77879 0.31470 0.00000 0.00000 0.16494 0.31478 0.05843 0.04327 4.85035 0.32794 0.00000 0.00000 0.17908 0.32804 0.05949 0.04407 6.55933 0.35307 0.00000 0.00000 0.20552 0.35322 0.06027 0.04465 7.86163 0.37551 0.02151 0.00000 0.22889 0.37569 0.06110 0.04526 9.29176 0.40278 0.05104 0.00000 0.25712 0.40300 0.06182 0.04579 10.57253 0.42926 0.07945 0.00000 0.28441 0.42952 0.06252 0.04629 11.83758 0.45719 0.10920 0.00000 0.31311 0.45749 0.06327 0.04683 13.21516 0.48950 0.14339 0.00000 0.34622 0.48983 0.06393 0.04729 14.43820 0.51975 0.17526 0.00000 0.37715 0.52011 0.06457 0.04774 15.63881 0.55082 0.20787 0.00000 0.40887 0.55122 0.06508 0.04809 16.60230 0.57671 0.23496 0.00000 0.43527 0.57713 0.06618 0.04884 18.68669 0.63554 0.29632 0.00034 0.49517 0.63603 0.06713 0.04949 20.42936 0.68999 0.35291 0.05732 0.55053 0.69053 0.06822 0.05022 22.38960 0.75466 0.41992 0.12777 0.61620 0.75526 0.06935 0.05097 24.43460 0.82578 0.49344 0.20478 0.68833 0.82645 0.07040 0.05165 26.28814 0.89347 0.56326 0.27769 0.75693 0.89420 0.07146 0.05234 28.15049 0.96460 0.63650 0.35399 0.82896 0.96539 0.07235 0.05291 29.68606 1.02561 0.69924 0.41922 0.89071 1.02646 0.07343 0.05360 31.53139 1.10182 0.77751 0.50045 0.96779 1.10274 0.07440 0.05421 33.14566 1.17112 0.84860 0.57411 1.03785 1.17210 0.07530 0.05476 34.60829 1.23608 0.91518 0.64301 1.10351 1.23712 0.07644 0.05547 36.43635 1.32026 1.00138 0.73210 1.18855 1.32137 0.07752 0.05613 38.12432 1.40102 1.08402 0.81740 1.27011 1.40220 0.07854 0.05675 39.67632 1.47796 1.16270 0.89852 1.34779 1.47921 0.07957 0.05737 41.19726 1.55593 1.24238 0.98062 1.42650 1.55725 0.08058 0.05797 42.65473 1.63317 1.32128 1.06183 1.50445 1.63456 0.08154 0.05854 44.00474 1.70700 1.39665 1.13936 1.57894 1.70845 0.08245 0.05907 45.24985 1.77713 1.46822 1.21293 1.64968 1.77864 0.08337 0.05961 46.47392 1.84805 1.54058 1.28728 1.72122 1.84963 0.08428 0.06014 47.65060 1.91820 1.61212 1.36075 1.79196 1.91984 0.08515 0.06064 48.74395 1.98516 1.68040 1.43085 1.85950 1.98687 0.08597 0.06112 49.75541 2.04873 1.74520 1.49734 1.92359 2.05050 0.08681 0.06159 50.75253 2.11300 1.81071 1.56454 1.98840 2.11483 0.08763 0.06206 51.71397 2.17654 1.87545 1.63093 2.05246 2.17843 0.08843 0.06251 52.60968 2.23722 1.93727 1.69431 2.11362 2.23916 0.08918 0.06294 53.44049 2.29482 1.99595 1.75445 2.17168 2.29681 0.08995 0.06336 54.26169 2.35307 2.05528 1.81525 2.23040 2.35512 0.06794 0.05219 3.32287 0.27537 0.00000 0.00000 0.14466 0.27557 0.06896 0.05288 4.19249 0.28713 0.00000 0.00000 0.15721 0.28739 0.07049 0.05388 5.54340 0.30872 0.00000 0.00000 0.17995 0.30908 0.07162 0.05461 6.54571 0.32748 0.01801 0.00000 0.19953 0.32791 0.07281 0.05537 7.62371 0.34982 0.04230 0.00000 0.22270 0.35032 0.07386 0.05603 8.57133 0.37113 0.06528 0.00000 0.24473 0.37170 0.07486 0.05666 9.49230 0.39328 0.08900 0.00000 0.26756 0.39392 0.07594 0.05732 10.47950 0.41854 0.11590 0.00000 0.29352 0.41925 0.07688 0.05790 11.34317 0.44189 0.14066 0.00000 0.31748 0.44266 0.07780 0.05846 12.17996 0.46561 0.16572 0.00000 0.34177 0.46644 0.07853 0.05890 12.84397 0.48519 0.18634 0.00000 0.36180 0.48607 0.08010 0.05983 14.25869 0.52911 0.23247 0.00025 0.40667 0.53010 0.08146 0.06064 15.41185 0.56914 0.27438 0.04267 0.44752 0.57023 0.08300 0.06154 16.68438 0.61600 0.32330 0.09441 0.49526 0.61720 0.08462 0.06247 17.98583 0.66677 0.37617 0.15015 0.54694 0.66808 0.08609 0.06331 19.14318 0.71440 0.42569 0.20221 0.59539 0.71583 0.08759 0.06416 20.28525 0.76381 0.47696 0.25600 0.64561 0.76535 0.08885 0.06486 21.21159 0.80570 0.52038 0.30146 0.68816 0.80733 0.09037 0.06571 22.30664 0.85742 0.57393 0.35744 0.74067 0.85916 0.09173 0.06645 23.24849 0.90390 0.62201 0.40764 0.78785 0.90576 0.09298 0.06714 24.08894 0.94704 0.66659 0.45412 0.83162 0.94899 0.09457 0.06800 25.12208 1.00232 0.72369 0.51359 0.88769 1.00440 0.09607 0.06880 26.05892 1.05476 0.77780 0.56989 0.94086 1.05695 0.09748 0.06956 26.90561 1.10417 0.82878 0.62288 0.99095 1.10647 0.09890 0.07030 27.72158 1.15375 0.87989 0.67598 1.04120 1.15616 0.10029 0.07103 28.49040 1.20236 0.93000 0.72799 1.09046 1.20489 0.10161 0.07172 29.19095 1.24839 0.97742 0.77719 1.13710 1.25102 0.10286 0.07237 29.82691 1.29172 1.02206 0.82349 1.18100 1.29446 0.10411 0.07301 30.44246 1.33518 1.06682 0.86988 1.22503 1.33802 0.10535 0.07365 31.02482 1.37780 1.11070 0.91535 1.26820 1.38073 0.10653 0.07425 31.55755 1.41815 1.15226 0.95840 1.30908 1.42119 0.10764 0.07481 32.04296 1.45617 1.19139 0.99893 1.34758 1.45929 0.10877 0.07538 32.51421 1.49432 1.23067 1.03960 1.38623 1.49754 0.10989 0.07594 32.96166 1.53176 1.26922 1.07950 1.42415 1.53507 0.11096 0.07647 33.37206 1.56725 1.30576 1.11732 1.46010 1.57065 0.11197 0.07698 33.74701 1.60072 1.34021 1.15299 1.49400 1.60421 0.11299 0.07748 34.11201 1.63435 1.37483 1.18881 1.52807 1.63792 0.08231 0.06391 2.95777 0.24233 0.00000 0.00000 0.12778 0.24292 0.08384 0.06478 3.64843 0.25286 0.00000 0.00000 0.13903 0.25357 0.08612 0.06606 4.69052 0.27143 0.00000 0.00000 0.15864 0.27232 0.08780 0.06699 5.44040 0.28704 0.01506 0.00000 0.17500 0.28806 0.08958 0.06796 6.22800 0.30517 0.03495 0.00000 0.19391 0.30634 0.09112 0.06879 6.90575 0.32211 0.05340 0.00000 0.21151 0.32340 0.09260 0.06959 7.55226 0.33941 0.07212 0.00000 0.22943 0.34083 0.09418 0.07044 8.23271 0.35882 0.09301 0.00000 0.24950 0.36037 0.09557 0.07116 8.81788 0.37649 0.11196 0.00000 0.26773 0.37816 0.09691 0.07187 9.37617 0.39421 0.13090 0.00000 0.28599 0.39599 0.09797 0.07242 9.81333 0.40867 0.14632 0.00000 0.30087 0.41054 0.10024 0.07360 10.72795 0.44065 0.18032 0.00018 0.33375 0.44271 0.10222 0.07460 11.44966 0.46928 0.21067 0.03115 0.36314 0.47151 0.10443 0.07573 12.22743 0.50223 0.24553 0.06833 0.39693 0.50466 0.10674 0.07689 13.00342 0.53731 0.28256 0.10773 0.43288 0.53994 0.10884 0.07793 13.67704 0.56970 0.31669 0.14397 0.46604 0.57251 0.11097 0.07898 14.32654 0.60278 0.35151 0.18086 0.49989 0.60578 0.11273 0.07984 14.84218 0.63044 0.38061 0.21165 0.52819 0.63360 0.11487 0.08088 15.43860 0.66415 0.41603 0.24909 0.56266 0.66750 0.11677 0.08179 15.93998 0.69403 0.44742 0.28222 0.59321 0.69756 0.11851 0.08262 16.37811 0.72143 0.47618 0.31257 0.62122 0.72511 0.12071 0.08366 16.90435 0.75610 0.51257 0.35092 0.65665 0.75998 0.12278 0.08463 17.36934 0.78854 0.54660 0.38676 0.68979 0.79261 0.12472 0.08554 17.77913 0.81872 0.57826 0.42010 0.72063 0.82296 0.12665 0.08644 18.16429 0.84863 0.60964 0.45312 0.75120 0.85306 0.12854 0.08731 18.51786 0.87762 0.64005 0.48511 0.78082 0.88221 0.13033 0.08813 18.83179 0.90475 0.66852 0.51506 0.80855 0.90951 0.13201 0.08889 19.10953 0.93002 0.69505 0.54295 0.83438 0.93494 0.13369 0.08965 19.37145 0.95510 0.72138 0.57065 0.86002 0.96017 0.13534 0.09040 19.61252 0.97945 0.74694 0.59753 0.88490 0.98467 0.13691 0.09110 19.82699 1.00227 0.77092 0.62275 0.90824 1.00764 0.13839 0.09176 20.01704 1.02357 0.79331 0.64629 0.93003 1.02908 0.13989 0.09243 20.19625 1.04475 0.81558 0.66972 0.95169 1.05040 0.14135 0.09307 20.36129 1.06535 0.83724 0.69252 0.97276 1.07113 0.14275 0.09369 20.50790 1.08470 0.85761 0.71395 0.99257 1.09061 0.14408 0.09427 20.63760 1.10280 0.87666 0.73400 1.01109 1.10883 0.14541 0.09485 20.75964 1.12082 0.89565 0.75400 1.02954 1.12698 0.09402 0.07221 2.79352 0.22537 0.00000 0.00000 0.11922 0.22648 0.09598 0.07323 3.38785 0.23525 0.00000 0.00000 0.12981 0.23654 0.09890 0.07472 4.26803 0.25222 0.00000 0.00000 0.14780 0.25376 0.10103 0.07580 4.88859 0.26615 0.01355 0.00000 0.16248 0.26790 0.10328 0.07693 5.53019 0.28208 0.03119 0.00000 0.17917 0.28403 0.10523 0.07790 6.07452 0.29675 0.04732 0.00000 0.19449 0.29888 0.10710 0.07882 6.58728 0.31155 0.06351 0.00000 0.20992 0.31386 0.10909 0.07979 7.12031 0.32797 0.08138 0.00000 0.22699 0.33046 0.11082 0.08063 7.57336 0.34277 0.09744 0.00000 0.24236 0.34543 0.11249 0.08144 8.00101 0.35748 0.11335 0.00000 0.25761 0.36030 0.11382 0.08208 8.33279 0.36940 0.12622 0.00000 0.26995 0.37234 0.11664 0.08342 9.01814 0.39550 0.15431 0.00015 0.29694 0.39871 0.11908 0.08457 9.54571 0.41858 0.17909 0.02560 0.32079 0.42203 0.12181 0.08585 10.10441 0.44485 0.20724 0.05585 0.34790 0.44856 0.12465 0.08716 10.65160 0.47249 0.23681 0.08756 0.37641 0.47646 0.12722 0.08834 11.11793 0.49771 0.26378 0.11642 0.40242 0.50194 0.12980 0.08952 11.55952 0.52322 0.29102 0.14553 0.42870 0.52769 0.13194 0.09049 11.90416 0.54435 0.31358 0.16961 0.45048 0.54903 0.13453 0.09165 12.29578 0.56985 0.34080 0.19865 0.47676 0.57479 0.13681 0.09266 12.61879 0.59226 0.36471 0.22414 0.49984 0.59742 0.13889 0.09359 12.89603 0.61263 0.38645 0.24730 0.52083 0.61799 0.14152 0.09474 13.22230 0.63818 0.41371 0.27635 0.54715 0.64380 0.14399 0.09582 13.50389 0.66185 0.43899 0.30326 0.57154 0.66771 0.14628 0.09681 13.74624 0.68368 0.46231 0.32809 0.59404 0.68977 0.14857 0.09780 13.96850 0.70513 0.48524 0.35250 0.61616 0.71144 0.15079 0.09875 14.16720 0.72574 0.50728 0.37598 0.63741 0.73227 0.15288 0.09964 14.33884 0.74487 0.52776 0.39779 0.65715 0.75160 0.15485 0.10047 14.48640 0.76255 0.54671 0.41798 0.67540 0.76948 0.15681 0.10129 14.62139 0.77997 0.56539 0.43789 0.69339 0.78709 0.15873 0.10210 14.74151 0.79675 0.58340 0.45709 0.71072 0.80405 0.16054 0.10285 14.84458 0.81237 0.60019 0.47500 0.72686 0.81985 0.16225 0.10356 14.93246 0.82684 0.61576 0.49162 0.74182 0.83449 0.16397 0.10427 15.01185 0.84113 0.63115 0.50805 0.75661 0.84894 0.16565 0.10496 15.08153 0.85493 0.64603 0.52396 0.77090 0.86291 0.16725 0.10561 15.14013 0.86781 0.65994 0.53883 0.78424 0.87594 0.16876 0.10622 15.18895 0.87977 0.67287 0.55267 0.79663 0.88805 0.17028 0.10684 15.23181 0.89161 0.68569 0.56640 0.80891 0.90004 0.10465 0.07901 2.70233 0.21414 0.00000 0.00000 0.11364 0.21589 0.10700 0.08016 3.23114 0.22356 0.00000 0.00000 0.12377 0.22554 0.11046 0.08183 4.00325 0.23941 0.00000 0.00000 0.14066 0.24173 0.11299 0.08303 4.53893 0.25220 0.01255 0.00000 0.15420 0.25478 0.11565 0.08429 5.08598 0.26663 0.02870 0.00000 0.16941 0.26947 0.11795 0.08537 5.54494 0.27978 0.04331 0.00000 0.18323 0.28285 0.12014 0.08639 5.97300 0.29293 0.05785 0.00000 0.19701 0.29622 0.12247 0.08747 6.41359 0.30738 0.07378 0.00000 0.21213 0.31091 0.12450 0.08839 6.78453 0.32031 0.08797 0.00000 0.22563 0.32405 0.12645 0.08928 7.13165 0.33307 0.10194 0.00000 0.23894 0.33701 0.12799 0.08998 7.39892 0.34335 0.11317 0.00000 0.24966 0.34744 0.13127 0.09146 7.94522 0.36568 0.13752 0.00013 0.27290 0.37010 0.13409 0.09272 8.35658 0.38525 0.15880 0.02212 0.29325 0.38996 0.13724 0.09411 8.78565 0.40731 0.18277 0.04805 0.31618 0.41234 0.14049 0.09554 9.19906 0.43030 0.20773 0.07500 0.34006 0.43567 0.14343 0.09682 9.54558 0.45110 0.23030 0.09934 0.36167 0.45677 0.14638 0.09809 9.86830 0.47196 0.25292 0.12371 0.38332 0.47793 0.14881 0.09914 10.11614 0.48911 0.27152 0.14374 0.40113 0.49532 0.15174 0.10038 10.39297 0.50965 0.29381 0.16772 0.42247 0.51617 0.15431 0.10147 10.61702 0.52756 0.31325 0.18864 0.44108 0.53434 0.15666 0.10246 10.80583 0.54374 0.33082 0.20754 0.45788 0.55076 0.15961 0.10369 11.02331 0.56387 0.35271 0.23109 0.47881 0.57119 0.16236 0.10483 11.20622 0.58238 0.37285 0.25276 0.49806 0.58998 0.16492 0.10588 11.35943 0.59932 0.39131 0.27263 0.51569 0.60718 0.16746 0.10691 11.49586 0.61585 0.40935 0.29205 0.53290 0.62397 0.16992 0.10791 11.61383 0.63161 0.42658 0.31062 0.54932 0.63998 0.17223 0.10885 11.71203 0.64614 0.44249 0.32777 0.56448 0.65474 0.17439 0.10971 11.79309 0.65948 0.45712 0.34356 0.57840 0.66830 0.17655 0.11057 11.86387 0.67254 0.47147 0.35906 0.59204 0.68157 0.17865 0.11140 11.92343 0.68503 0.48522 0.37392 0.60510 0.69428 0.18063 0.11218 11.97128 0.69658 0.49796 0.38772 0.61719 0.70603 0.18249 0.11291 12.00902 0.70723 0.50973 0.40046 0.62834 0.71686 0.18435 0.11364 12.03991 0.71767 0.52130 0.41300 0.63929 0.72748 0.18618 0.11435 12.06372 0.72769 0.53242 0.42508 0.64981 0.73769 0.18791 0.11501 12.08043 0.73698 0.54277 0.43632 0.65957 0.74715 0.18953 0.11564 12.09115 0.74556 0.55234 0.44674 0.66860 0.75589 0.19117 0.11626 12.09709 0.75401 0.56179 0.45703 0.67749 0.76450 0.11466 0.08495 2.64712 0.20575 0.00000 0.00000 0.10953 0.20824 0.11735 0.08620 3.12633 0.21481 0.00000 0.00000 0.11931 0.21757 0.12131 0.08803 3.81792 0.22978 0.00000 0.00000 0.13535 0.23296 0.12419 0.08934 4.29118 0.24170 0.01180 0.00000 0.14804 0.24519 0.12721 0.09071 4.76946 0.25500 0.02685 0.00000 0.16214 0.25881 0.12980 0.09188 5.16694 0.26700 0.04035 0.00000 0.17483 0.27109 0.13229 0.09298 5.53451 0.27892 0.05368 0.00000 0.18739 0.28327 0.13491 0.09415 5.90960 0.29192 0.06818 0.00000 0.20109 0.29656 0.13719 0.09515 6.22280 0.30348 0.08102 0.00000 0.21323 0.30835 0.13937 0.09610 6.51367 0.31481 0.09359 0.00000 0.22513 0.31992 0.14110 0.09686 6.73612 0.32390 0.10365 0.00000 0.23467 0.32919 0.14476 0.09844 7.18655 0.34351 0.12532 0.00012 0.25522 0.34919 0.14790 0.09979 7.51867 0.36056 0.14413 0.01965 0.27307 0.36658 0.15140 0.10127 7.86016 0.37963 0.16515 0.04254 0.29304 0.38602 0.15500 0.10279 8.18410 0.39935 0.18687 0.06616 0.31367 0.40612 0.15823 0.10414 8.45125 0.41705 0.20638 0.08736 0.33220 0.42416 0.16147 0.10548 8.69593 0.43466 0.22580 0.10844 0.35064 0.44212 0.16414 0.10658 8.88076 0.44906 0.24168 0.12568 0.36571 0.45680 0.16734 0.10789 9.08351 0.46619 0.26060 0.14621 0.38366 0.47427 0.17014 0.10903 9.24425 0.48102 0.27700 0.16402 0.39921 0.48939 0.17269 0.11005 9.37694 0.49434 0.29175 0.18002 0.41317 0.50298 0.17589 0.11133 9.52597 0.51080 0.31001 0.19986 0.43046 0.51978 0.17886 0.11251 9.64741 0.52583 0.32671 0.21802 0.44625 0.53512 0.18162 0.11360 9.74561 0.53950 0.34193 0.23458 0.46062 0.54907 0.18434 0.11467 9.82957 0.55274 0.35672 0.25069 0.47456 0.56259 0.18698 0.11569 9.89863 0.56528 0.37077 0.26601 0.48779 0.57541 0.18944 0.11664 9.95279 0.57678 0.38367 0.28009 0.49992 0.58716 0.19174 0.11753 9.99432 0.58726 0.39548 0.29300 0.51100 0.59788 0.19403 0.11840 10.02729 0.59746 0.40700 0.30561 0.52180 0.60831 0.19626 0.11924 10.05153 0.60716 0.41799 0.31765 0.53208 0.61824 0.19835 0.12003 10.06749 0.61608 0.42812 0.32878 0.54154 0.62736 0.20031 0.12077 10.07655 0.62424 0.43743 0.33902 0.55022 0.63572 0.20227 0.12150 10.07997 0.63220 0.44654 0.34906 0.55870 0.64388 0.20419 0.12221 10.07808 0.63979 0.45527 0.35868 0.56680 0.65167 0.20599 0.12287 10.07156 0.64679 0.46334 0.36761 0.57428 0.65885 0.20769 0.12349 10.06137 0.65322 0.47078 0.37585 0.58116 0.66544 0.20940 0.12412 10.04726 0.65950 0.47809 0.38396 0.58790 0.67189 0.13362 0.09532 2.59019 0.19337 0.00000 0.00000 0.10359 0.19757 0.13689 0.09676 2.99594 0.20181 0.00000 0.00000 0.11282 0.20639 0.14170 0.09884 3.57047 0.21542 0.00000 0.00000 0.12756 0.22055 0.14517 0.10033 3.95441 0.22601 0.01070 0.00000 0.13897 0.23154 0.14879 0.10187 4.33560 0.23762 0.02415 0.00000 0.15144 0.24357 0.15189 0.10318 4.64727 0.24795 0.03604 0.00000 0.16249 0.25425 0.15484 0.10442 4.93126 0.25807 0.04765 0.00000 0.17330 0.26470 0.15795 0.10572 5.21673 0.26898 0.06013 0.00000 0.18494 0.27597 0.16064 0.10683 5.45162 0.27857 0.07107 0.00000 0.19516 0.28586 0.16321 0.10789 5.66679 0.28788 0.08169 0.00000 0.20508 0.29547 0.16523 0.10871 5.82935 0.29529 0.09012 0.00000 0.21296 0.30310 0.16950 0.11045 6.15285 0.31110 0.10809 0.00010 0.22977 0.31939 0.17314 0.11192 6.38137 0.32465 0.12349 0.01628 0.24417 0.33335 0.17717 0.11353 6.60971 0.33961 0.14050 0.03503 0.26008 0.34876 0.18129 0.11517 6.81942 0.35487 0.15787 0.05417 0.27631 0.36448 0.18498 0.11662 6.98645 0.36838 0.17328 0.07115 0.29070 0.37840 0.18865 0.11805 7.13380 0.38166 0.18846 0.08788 0.30485 0.39208 0.19165 0.11921 7.24084 0.39239 0.20075 0.10143 0.31630 0.40313 0.19524 0.12059 7.35309 0.40501 0.21524 0.11742 0.32977 0.41614 0.19837 0.12178 7.43736 0.41580 0.22768 0.13117 0.34132 0.42728 0.20120 0.12285 7.50293 0.42539 0.23876 0.14343 0.35159 0.43716 0.20473 0.12418 7.57103 0.43710 0.25236 0.15849 0.36416 0.44925 0.20800 0.12539 7.62069 0.44765 0.26466 0.17214 0.37551 0.46015 0.21100 0.12650 7.65544 0.45712 0.27576 0.18449 0.38572 0.46994 0.21396 0.12758 7.67961 0.46619 0.28644 0.19639 0.39552 0.47931 0.21681 0.12861 7.69367 0.47467 0.29649 0.20761 0.40471 0.48809 0.21946 0.12957 7.69889 0.48234 0.30564 0.21785 0.41304 0.49603 0.22192 0.13045 7.69707 0.48926 0.31393 0.22716 0.42058 0.50320 0.22436 0.13131 7.68912 0.49591 0.32195 0.23619 0.42784 0.51009 0.22672 0.13214 7.67565 0.50215 0.32953 0.24475 0.43469 0.51657 0.22893 0.13291 7.65803 0.50781 0.33646 0.25260 0.44092 0.52246 0.23099 0.13362 7.63731 0.51293 0.34278 0.25977 0.44657 0.52778 0.23304 0.13433 7.61264 0.51786 0.34890 0.26675 0.45204 0.53292 0.23503 0.13501 7.58487 0.52251 0.35472 0.27341 0.45721 0.53776 0.23691 0.13564 7.55535 0.52673 0.36006 0.27953 0.46193 0.54217 0.23866 0.13623 7.52480 0.53056 0.36493 0.28514 0.46622 0.54616 0.24042 0.13682 7.49154 0.53425 0.36968 0.29063 0.47038 0.55002 0.16049 0.10878 2.56212 0.18004 0.00000 0.00000 0.09746 0.18729 0.16447 0.11042 2.89068 0.18774 0.00000 0.00000 0.10602 0.19548 0.17027 0.11278 3.34528 0.19978 0.00000 0.00000 0.11931 0.20823 0.17443 0.11446 3.63972 0.20891 0.00955 0.00000 0.12933 0.21786 0.17874 0.11619 3.92535 0.21872 0.02134 0.00000 0.14008 0.22820 0.18240 0.11765 4.15396 0.22730 0.03160 0.00000 0.14944 0.23721 0.18588 0.11902 4.35817 0.23557 0.04148 0.00000 0.15847 0.24589 0.18951 0.12044 4.55924 0.24436 0.05196 0.00000 0.16805 0.25512 0.19263 0.12166 4.72131 0.25198 0.06103 0.00000 0.17635 0.26310 0.19561 0.12281 4.86689 0.25930 0.06975 0.00000 0.18432 0.27077 0.19794 0.12370 4.97491 0.26505 0.07660 0.00000 0.19059 0.27680 0.20284 0.12557 5.18430 0.27717 0.09104 0.00008 0.20379 0.28948 0.20698 0.12714 5.32146 0.28738 0.10324 0.01310 0.21492 0.30017 0.21152 0.12884 5.45166 0.29847 0.11652 0.02800 0.22702 0.31177 0.21614 0.13056 5.56407 0.30956 0.12987 0.04300 0.23915 0.32338 0.22025 0.13206 5.64727 0.31922 0.14155 0.05614 0.24974 0.33349 0.22429 0.13353 5.71450 0.32856 0.15290 0.06893 0.26000 0.34327 0.22758 0.13471 5.75853 0.33597 0.16198 0.07918 0.26818 0.35104 0.23149 0.13610 5.79865 0.34456 0.17256 0.09115 0.27767 0.36005 0.23487 0.13730 5.82300 0.35179 0.18153 0.10133 0.28569 0.36763 0.23790 0.13836 5.83683 0.35810 0.18942 0.11031 0.29272 0.37426 0.24167 0.13966 5.84366 0.36568 0.19899 0.12124 0.30120 0.38224 0.24512 0.14084 5.84007 0.37238 0.20754 0.13103 0.30873 0.38929 0.24828 0.14190 5.82871 0.37827 0.21515 0.13979 0.31540 0.39550 0.25136 0.14293 5.81033 0.38381 0.22238 0.14814 0.32169 0.40135 0.25430 0.14391 5.78611 0.38888 0.22909 0.15594 0.32750 0.40671 0.25703 0.14480 5.75805 0.39338 0.23513 0.16299 0.33269 0.41148 0.25954 0.14561 5.72743 0.39735 0.24054 0.16933 0.33730 0.41569 0.26200 0.14639 5.69295 0.40109 0.24571 0.17542 0.34167 0.41966 0.26438 0.14714 5.65569 0.40452 0.25053 0.18114 0.34571 0.42331 0.26659 0.14783 5.61748 0.40756 0.25489 0.18634 0.34934 0.42655 0.26863 0.14847 5.57905 0.41024 0.25881 0.19104 0.35257 0.42942 0.27065 0.14908 5.53820 0.41276 0.26257 0.19558 0.35563 0.43213 0.27261 0.14967 5.49605 0.41507 0.26610 0.19987 0.35848 0.43461 0.27443 0.15022 5.45426 0.41711 0.26929 0.20378 0.36102 0.43682 0.27613 0.15072 5.41332 0.41891 0.27217 0.20733 0.36329 0.43876 0.27782 0.15121 5.37074 0.42059 0.27494 0.21077 0.36545 0.44059 0.20278 0.12836 2.55725 0.16360 0.00000 0.00000 0.09033 0.17669 0.20758 0.13021 2.79742 0.17025 0.00000 0.00000 0.09795 0.18394 0.21450 0.13284 3.11885 0.18029 0.00000 0.00000 0.10939 0.19485 0.21940 0.13468 3.31664 0.18766 0.00819 0.00000 0.11776 0.20282 0.22444 0.13656 3.50144 0.19538 0.01810 0.00000 0.12650 0.21114 0.22868 0.13813 3.64420 0.20196 0.02654 0.00000 0.13396 0.21822 0.23268 0.13958 3.76741 0.20818 0.03453 0.00000 0.14100 0.22491 0.23682 0.14109 3.88430 0.21466 0.04287 0.00000 0.14835 0.23187 0.24035 0.14236 3.97492 0.22017 0.04998 0.00000 0.15461 0.23779 0.24369 0.14355 4.05321 0.22538 0.05671 0.00000 0.16052 0.24337 0.24629 0.14447 4.10916 0.22941 0.06195 0.00000 0.16511 0.24770 0.25171 0.14637 4.21151 0.23774 0.07280 0.00006 0.17460 0.25662 0.25624 0.14793 4.26515 0.24458 0.08179 0.00991 0.18242 0.26395 0.26115 0.14961 4.30770 0.25181 0.09139 0.02101 0.19073 0.27170 0.26609 0.15126 4.33535 0.25885 0.10086 0.03198 0.19887 0.27925 0.27042 0.15270 4.34732 0.26480 0.10898 0.04144 0.20580 0.28564 0.27464 0.15407 4.34812 0.27039 0.11673 0.05050 0.21236 0.29165 0.27803 0.15516 4.34110 0.27471 0.12282 0.05766 0.21748 0.29630 0.28202 0.15642 4.32420 0.27958 0.12980 0.06591 0.22329 0.30154 0.28543 0.15748 4.30242 0.28355 0.13561 0.07282 0.22808 0.30583 0.28845 0.15840 4.27743 0.28692 0.14064 0.07884 0.23218 0.30947 0.29216 0.15952 4.23961 0.29082 0.14664 0.08606 0.23701 0.31370 0.29552 0.16051 4.19856 0.29414 0.15189 0.09243 0.24117 0.31730 0.29855 0.16138 4.15589 0.29693 0.15647 0.09804 0.24475 0.32035 0.30148 0.16221 4.10973 0.29944 0.16074 0.10332 0.24802 0.32309 0.30423 0.16297 4.06158 0.30163 0.16463 0.10818 0.25095 0.32550 0.30675 0.16365 4.01368 0.30346 0.16806 0.11251 0.25347 0.32752 0.30904 0.16425 3.96674 0.30499 0.17107 0.11635 0.25564 0.32922 0.31127 0.16482 3.91809 0.30634 0.17389 0.11999 0.25761 0.33073 0.31338 0.16535 3.86896 0.30749 0.17647 0.12337 0.25937 0.33202 0.31533 0.16583 3.82129 0.30842 0.17875 0.12639 0.26088 0.33308 0.31711 0.16625 3.77544 0.30916 0.18076 0.12909 0.26216 0.33394 0.31884 0.16665 3.72859 0.30978 0.18264 0.13166 0.26331 0.33466 0.32050 0.16702 3.68186 0.31027 0.18436 0.13405 0.26432 0.33525 0.32203 0.16735 3.63693 0.31063 0.18588 0.13620 0.26517 0.33569 0.32343 0.16765 3.59403 0.31087 0.18722 0.13812 0.26587 0.33601 0.32481 0.16793 3.55046 0.31103 0.18847 0.13996 0.26648 0.33623 0.24275 0.14588 2.55219 0.15029 0.00000 0.00000 0.08487 0.16963 0.24803 0.14780 2.72880 0.15605 0.00000 0.00000 0.09167 0.17602 0.25555 0.15050 2.95737 0.16451 0.00000 0.00000 0.10161 0.18536 0.26083 0.15236 3.08975 0.17056 0.00717 0.00000 0.10872 0.19201 0.26621 0.15424 3.20793 0.17675 0.01570 0.00000 0.11599 0.19880 0.27072 0.15579 3.29521 0.18193 0.02286 0.00000 0.12208 0.20446 0.27491 0.15722 3.36709 0.18673 0.02955 0.00000 0.12775 0.20971 0.27924 0.15868 3.43166 0.19165 0.03643 0.00000 0.13357 0.21508 0.28289 0.15989 3.47866 0.19576 0.04223 0.00000 0.13845 0.21956 0.28633 0.16102 3.51655 0.19958 0.04766 0.00000 0.14300 0.22373 0.28899 0.16189 3.54169 0.20250 0.05184 0.00000 0.14649 0.22691 0.29447 0.16364 3.58196 0.20842 0.06041 0.00005 0.15359 0.23334 0.29901 0.16507 3.58875 0.21315 0.06738 0.00790 0.15933 0.23849 0.30387 0.16656 3.58349 0.21802 0.07472 0.01662 0.16529 0.24379 0.30870 0.16801 3.56631 0.22262 0.08183 0.02513 0.17100 0.24880 0.31288 0.16924 3.54182 0.22638 0.08783 0.03237 0.17574 0.25290 0.31691 0.17039 3.50972 0.22980 0.09346 0.03922 0.18012 0.25663 0.32011 0.17128 3.47821 0.23236 0.09783 0.04456 0.18346 0.25942 0.32382 0.17228 3.43492 0.23512 0.10276 0.05065 0.18716 0.26245 0.32695 0.17311 3.39265 0.23728 0.10679 0.05569 0.19012 0.26481 0.32969 0.17381 3.35110 0.23904 0.11024 0.06004 0.19260 0.26674 0.33301 0.17462 3.29517 0.24096 0.11427 0.06519 0.19541 0.26885 0.33597 0.17532 3.23986 0.24247 0.11773 0.06967 0.19775 0.27052 0.33860 0.17591 3.18614 0.24364 0.12070 0.07358 0.19967 0.27183 0.34110 0.17645 3.13097 0.24459 0.12342 0.07720 0.20135 0.27288 0.34342 0.17692 3.07588 0.24530 0.12584 0.08050 0.20278 0.27370 0.34550 0.17732 3.02300 0.24580 0.12793 0.08340 0.20393 0.27427 0.34736 0.17765 2.97269 0.24612 0.12972 0.08594 0.20486 0.27465 0.34915 0.17795 2.92184 0.24631 0.13136 0.08832 0.20564 0.27487 0.35081 0.17820 2.87168 0.24635 0.13283 0.09050 0.20626 0.27495 0.35230 0.17841 2.82396 0.24628 0.13409 0.09242 0.20674 0.27491 0.35365 0.17858 2.77887 0.24612 0.13517 0.09412 0.20707 0.27475 0.35494 0.17872 2.73351 0.24586 0.13615 0.09571 0.20731 0.27450 0.35615 0.17884 2.68894 0.24552 0.13702 0.09717 0.20746 0.27416 0.35724 0.17892 2.64665 0.24512 0.13775 0.09847 0.20751 0.27374 0.35822 0.17898 2.60676 0.24467 0.13838 0.09962 0.20749 0.27328 0.35916 0.17901 2.56670 0.24416 0.13893 0.10069 0.20740 0.27274 0.31642 0.17671 2.49090 0.12805 0.00000 0.00000 0.07606 0.15947 0.32189 0.17846 2.57836 0.13237 0.00000 0.00000 0.08143 0.16426 0.32955 0.18085 2.68105 0.13843 0.00000 0.00000 0.08898 0.17092 0.33482 0.18245 2.72793 0.14256 0.00562 0.00000 0.09416 0.17544 0.34009 0.18401 2.76152 0.14663 0.01215 0.00000 0.09930 0.17987 0.34442 0.18526 2.78021 0.14990 0.01750 0.00000 0.10347 0.18343 0.34839 0.18638 2.79015 0.15283 0.02238 0.00000 0.10724 0.18660 0.35241 0.18748 2.79306 0.15573 0.02731 0.00000 0.11100 0.18971 0.35575 0.18837 2.78986 0.15807 0.03138 0.00000 0.11407 0.19222 0.35884 0.18917 2.78223 0.16017 0.03513 0.00000 0.11686 0.19446 0.36119 0.18977 2.77333 0.16172 0.03797 0.00000 0.11896 0.19611 0.36595 0.19092 2.74684 0.16473 0.04366 0.00003 0.12308 0.19929 0.36978 0.19180 2.70576 0.16699 0.04818 0.00538 0.12626 0.20166 0.37378 0.19265 2.65369 0.16915 0.05280 0.01120 0.12943 0.20389 0.37761 0.19341 2.59473 0.17100 0.05716 0.01676 0.13229 0.20579 0.38082 0.19398 2.53801 0.17236 0.06073 0.02138 0.13453 0.20715 0.38380 0.19446 2.47847 0.17344 0.06398 0.02567 0.13648 0.20819 0.38609 0.19477 2.42779 0.17413 0.06644 0.02896 0.13786 0.20883 0.38864 0.19507 2.36532 0.17473 0.06913 0.03263 0.13927 0.20935 0.39071 0.19525 2.30951 0.17505 0.07127 0.03561 0.14030 0.20958 0.39245 0.19536 2.25814 0.17520 0.07304 0.03813 0.14107 0.20962 0.39446 0.19541 2.19306 0.17518 0.07504 0.04106 0.14182 0.20944 0.39614 0.19538 2.13223 0.17497 0.07669 0.04356 0.14232 0.20907 0.39754 0.19529 2.07578 0.17463 0.07805 0.04568 0.14262 0.20855 0.39879 0.19514 2.02006 0.17415 0.07923 0.04761 0.14276 0.20788 0.39985 0.19493 1.96632 0.17355 0.08023 0.04933 0.14275 0.20709 0.40073 0.19468 1.91629 0.17289 0.08105 0.05080 0.14263 0.20623 0.40144 0.19440 1.86995 0.17217 0.08170 0.05207 0.14242 0.20532 0.40205 0.19408 1.82421 0.17138 0.08226 0.05322 0.14212 0.20432 0.40255 0.19373 1.78008 0.17053 0.08272 0.05425 0.14175 0.20326 0.40293 0.19336 1.73894 0.16966 0.08308 0.05514 0.14132 0.20218 0.40321 0.19298 1.70076 0.16879 0.08334 0.05590 0.14086 0.20111 0.40342 0.19257 1.66301 0.16786 0.08355 0.05659 0.14033 0.19997 0.40355 0.19214 1.62648 0.16691 0.08369 0.05721 0.13977 0.19881 0.40361 0.19171 1.59233 0.16596 0.08378 0.05774 0.13919 0.19765 0.40361 0.19128 1.56055 0.16503 0.08382 0.05819 0.13860 0.19652 0.40355 0.19082 1.52903 0.16406 0.08382 0.05859 0.13797 0.19535 0.38186 0.20276 2.36148 0.10954 0.00000 0.00000 0.06862 0.15087 0.38681 0.20405 2.38967 0.11276 0.00000 0.00000 0.07279 0.15420 0.39357 0.20571 2.41196 0.11708 0.00000 0.00000 0.07846 0.15861 0.39809 0.20676 2.40678 0.11991 0.00445 0.00000 0.08222 0.16144 0.40252 0.20771 2.39080 0.12258 0.00952 0.00000 0.08583 0.16408 0.40606 0.20842 2.37069 0.12464 0.01360 0.00000 0.08868 0.16607 0.40924 0.20901 2.34673 0.12642 0.01727 0.00000 0.09119 0.16776 0.41238 0.20954 2.31704 0.12810 0.02090 0.00000 0.09361 0.16931 0.41491 0.20992 2.28820 0.12939 0.02386 0.00000 0.09554 0.17047 0.41720 0.21022 2.25810 0.13050 0.02654 0.00000 0.09723 0.17143 0.41891 0.21042 2.23290 0.13128 0.02854 0.00000 0.09847 0.17209 0.42223 0.21071 2.17585 0.13269 0.03250 0.00002 0.10082 0.17319 0.42478 0.21084 2.11512 0.13362 0.03556 0.00384 0.10253 0.17383 0.42728 0.21085 2.04549 0.13437 0.03862 0.00792 0.10411 0.17422 0.42953 0.21071 1.97262 0.13484 0.04144 0.01175 0.10542 0.17429 0.43125 0.21047 1.90670 0.13503 0.04368 0.01489 0.10633 0.17408 0.43272 0.21012 1.84083 0.13501 0.04567 0.01775 0.10701 0.17364 0.43373 0.20976 1.78692 0.13484 0.04713 0.01990 0.10741 0.17311 0.43471 0.20923 1.72271 0.13447 0.04869 0.02228 0.10770 0.17229 0.43538 0.20868 1.66713 0.13401 0.04988 0.02417 0.10780 0.17141 0.43582 0.20812 1.61729 0.13348 0.05084 0.02575 0.10777 0.17049 0.43617 0.20734 1.55572 0.13269 0.05188 0.02755 0.10758 0.16919 0.43628 0.20652 1.49962 0.13182 0.05269 0.02906 0.10727 0.16784 0.43622 0.20570 1.44868 0.13091 0.05332 0.03031 0.10687 0.16647 0.43599 0.20482 1.39936 0.12993 0.05383 0.03143 0.10637 0.16502 0.43561 0.20391 1.35266 0.12889 0.05423 0.03240 0.10579 0.16352 0.43512 0.20300 1.30988 0.12786 0.05452 0.03322 0.10518 0.16204 0.43455 0.20211 1.27082 0.12683 0.05471 0.03391 0.10455 0.16059 0.43387 0.20118 1.23279 0.12576 0.05485 0.03452 0.10386 0.15910 0.43311 0.20023 1.19656 0.12468 0.05492 0.03505 0.10314 0.15759 0.43229 0.19930 1.16318 0.12362 0.05494 0.03549 0.10241 0.15613 0.43144 0.19839 1.13252 0.12259 0.05491 0.03585 0.10170 0.15472 0.43051 0.19746 1.10250 0.12153 0.05485 0.03618 0.10095 0.15327 0.42953 0.19652 1.07374 0.12047 0.05475 0.03645 0.10018 0.15183 0.42853 0.19560 1.04709 0.11944 0.05463 0.03668 0.09943 0.15044 0.42752 0.19471 1.02249 0.11845 0.05449 0.03686 0.09870 0.14911 0.42646 0.19380 0.99828 0.11744 0.05432 0.03701 0.09794 0.14775 0.43903 0.22430 2.18378 0.09402 0.00000 0.00000 0.06197 0.14216 0.44294 0.22492 2.17208 0.09640 0.00000 0.00000 0.06513 0.14421 0.44810 0.22559 2.14227 0.09947 0.00000 0.00000 0.06931 0.14673 0.45140 0.22589 2.10511 0.10138 0.00353 0.00000 0.07198 0.14820 0.45450 0.22606 2.05990 0.10310 0.00749 0.00000 0.07447 0.14942 0.45687 0.22609 2.01783 0.10437 0.01063 0.00000 0.07636 0.15023 0.45890 0.22602 1.97543 0.10539 0.01340 0.00000 0.07797 0.15081 0.46079 0.22585 1.92878 0.10631 0.01612 0.00000 0.07948 0.15122 0.46224 0.22563 1.88722 0.10695 0.01830 0.00000 0.08063 0.15143 0.46346 0.22535 1.84650 0.10746 0.02025 0.00000 0.08160 0.15150 0.46431 0.22508 1.81397 0.10778 0.02169 0.00000 0.08228 0.15146 0.46579 0.22440 1.74422 0.10826 0.02449 0.00002 0.08349 0.15117 0.46673 0.22368 1.67723 0.10844 0.02662 0.00280 0.08428 0.15067 0.46743 0.22275 1.60345 0.10842 0.02870 0.00574 0.08491 0.14988 0.46778 0.22166 1.52892 0.10818 0.03056 0.00845 0.08530 0.14881 0.46779 0.22055 1.46352 0.10777 0.03201 0.01064 0.08546 0.14766 0.46752 0.21935 1.39985 0.10721 0.03326 0.01261 0.08543 0.14634 0.46710 0.21828 1.34884 0.10665 0.03415 0.01408 0.08530 0.14514 0.46635 0.21691 1.28928 0.10585 0.03507 0.01567 0.08500 0.14357 0.46548 0.21563 1.23870 0.10505 0.03575 0.01692 0.08463 0.14209 0.46454 0.21441 1.19406 0.10425 0.03628 0.01795 0.08421 0.14067 0.46313 0.21280 1.13979 0.10316 0.03681 0.01911 0.08358 0.13879 0.46161 0.21123 1.09114 0.10207 0.03720 0.02006 0.08290 0.13695 0.46003 0.20970 1.04759 0.10098 0.03747 0.02083 0.08219 0.13518 0.45829 0.20814 1.00597 0.09985 0.03766 0.02151 0.08143 0.13337 0.45646 0.20657 0.96704 0.09871 0.03777 0.02209 0.08063 0.13156 0.45461 0.20505 0.93177 0.09760 0.03783 0.02257 0.07984 0.12983 0.45277 0.20360 0.89990 0.09653 0.03782 0.02295 0.07906 0.12818 0.45083 0.20211 0.86914 0.09544 0.03778 0.02329 0.07825 0.12651 0.44884 0.20062 0.84011 0.09435 0.03770 0.02357 0.07743 0.12485 0.44687 0.19919 0.81357 0.09330 0.03760 0.02380 0.07664 0.12327 0.44495 0.19783 0.78938 0.09230 0.03747 0.02398 0.07587 0.12177 0.44294 0.19643 0.76587 0.09128 0.03732 0.02413 0.07508 0.12026 0.44091 0.19504 0.74348 0.09027 0.03714 0.02425 0.07429 0.11876 0.43892 0.19371 0.72288 0.08931 0.03696 0.02434 0.07353 0.11733 0.43699 0.19243 0.70397 0.08839 0.03677 0.02440 0.07281 0.11598 0.43500 0.19113 0.68546 0.08745 0.03657 0.02444 0.07206 0.11461 0.49905 0.24513 1.92477 0.07835 0.00000 0.00000 0.05446 0.13038 0.50119 0.24475 1.88218 0.07995 0.00000 0.00000 0.05662 0.13110 0.50369 0.24394 1.81399 0.08189 0.00000 0.00000 0.05934 0.13172 0.50504 0.24318 1.75509 0.08302 0.00263 0.00000 0.06099 0.13187 0.50606 0.24224 1.69130 0.08395 0.00554 0.00000 0.06245 0.13178 0.50663 0.24133 1.63624 0.08457 0.00780 0.00000 0.06351 0.13151 0.50693 0.24036 1.58374 0.08501 0.00978 0.00000 0.06434 0.13110 0.50699 0.23925 1.52866 0.08533 0.01168 0.00000 0.06507 0.13052 0.50684 0.23822 1.48151 0.08549 0.01318 0.00000 0.06558 0.12991 0.50653 0.23717 1.43676 0.08556 0.01451 0.00000 0.06596 0.12923 0.50617 0.23630 1.40191 0.08555 0.01548 0.00000 0.06620 0.12863 0.50508 0.23435 1.32954 0.08538 0.01732 0.00001 0.06652 0.12721 0.50381 0.23256 1.26421 0.08507 0.01869 0.00192 0.06662 0.12583 0.50206 0.23046 1.19431 0.08456 0.02000 0.00390 0.06655 0.12414 0.49990 0.22818 1.12560 0.08388 0.02114 0.00571 0.06630 0.12225 0.49766 0.22603 1.06674 0.08314 0.02199 0.00714 0.06594 0.12043 0.49515 0.22379 1.01062 0.08230 0.02270 0.00841 0.06546 0.11852 0.49289 0.22189 0.96648 0.08153 0.02319 0.00934 0.06499 0.11688 0.48996 0.21954 0.91581 0.08054 0.02367 0.01034 0.06433 0.11485 0.48719 0.21741 0.87348 0.07961 0.02400 0.01111 0.06369 0.11302 0.48453 0.21543 0.83663 0.07873 0.02424 0.01174 0.06306 0.11132 0.48098 0.21289 0.79247 0.07756 0.02445 0.01243 0.06221 0.10914 0.47749 0.21047 0.75345 0.07642 0.02458 0.01298 0.06136 0.10708 0.47410 0.20817 0.71898 0.07534 0.02464 0.01342 0.06054 0.10514 0.47059 0.20586 0.68643 0.07423 0.02466 0.01380 0.05968 0.10320 0.46706 0.20358 0.65631 0.07313 0.02462 0.01412 0.05883 0.10131 0.46364 0.20141 0.62931 0.07209 0.02456 0.01437 0.05800 0.09952 0.46034 0.19936 0.60513 0.07109 0.02446 0.01456 0.05721 0.09784 0.45697 0.19728 0.58199 0.07009 0.02435 0.01473 0.05641 0.09617 0.45359 0.19524 0.56033 0.06910 0.02421 0.01486 0.05561 0.09453 0.45033 0.19330 0.54068 0.06816 0.02406 0.01496 0.05485 0.09299 0.44721 0.19145 0.52289 0.06727 0.02391 0.01503 0.05413 0.09153 0.44402 0.18959 0.50570 0.06638 0.02374 0.01508 0.05339 0.09008 0.44084 0.18776 0.48945 0.06550 0.02356 0.01512 0.05267 0.08866 0.43778 0.18601 0.47457 0.06466 0.02338 0.01513 0.05199 0.08732 0.43485 0.18434 0.46100 0.06387 0.02321 0.01514 0.05133 0.08606 0.43186 0.18266 0.44777 0.06307 0.02302 0.01513 0.05067 0.08479 0.54669 0.25948 1.65278 0.06629 0.00000 0.00000 0.04771 0.11751 0.54673 0.25801 1.59415 0.06732 0.00000 0.00000 0.04909 0.11722 0.54614 0.25563 1.50772 0.06848 0.00000 0.00000 0.05072 0.11644 0.54526 0.25376 1.44030 0.06907 0.00195 0.00000 0.05164 0.11566 0.54397 0.25168 1.37052 0.06948 0.00408 0.00000 0.05239 0.11465 0.54256 0.24980 1.31228 0.06969 0.00571 0.00000 0.05286 0.11366 0.54098 0.24793 1.25825 0.06976 0.00711 0.00000 0.05319 0.11260 0.53907 0.24589 1.20295 0.06973 0.00845 0.00000 0.05342 0.11139 0.53723 0.24406 1.15662 0.06962 0.00949 0.00000 0.05352 0.11027 0.53530 0.24226 1.11347 0.06944 0.01039 0.00000 0.05354 0.10914 0.53368 0.24081 1.08036 0.06925 0.01105 0.00000 0.05351 0.10821 0.52994 0.23765 1.01293 0.06874 0.01228 0.00001 0.05331 0.10615 0.52643 0.23486 0.95425 0.06818 0.01317 0.00132 0.05302 0.10430 0.52223 0.23168 0.89268 0.06745 0.01400 0.00268 0.05258 0.10215 0.51759 0.22831 0.83330 0.06658 0.01470 0.00390 0.05200 0.09987 0.51316 0.22522 0.78330 0.06572 0.01521 0.00485 0.05139 0.09776 0.50849 0.22207 0.73636 0.06479 0.01561 0.00569 0.05070 0.09561 0.50449 0.21943 0.69992 0.06398 0.01588 0.00629 0.05009 0.09382 0.49949 0.21622 0.65861 0.06296 0.01613 0.00693 0.04931 0.09165 0.49495 0.21338 0.62451 0.06203 0.01628 0.00742 0.04859 0.08973 0.49070 0.21076 0.59514 0.06117 0.01638 0.00781 0.04790 0.08798 0.48520 0.20743 0.56032 0.06005 0.01645 0.00823 0.04701 0.08578 0.47994 0.20431 0.52989 0.05898 0.01646 0.00856 0.04615 0.08373 0.47493 0.20139 0.50327 0.05797 0.01644 0.00883 0.04533 0.08183 0.46986 0.19847 0.47835 0.05696 0.01638 0.00904 0.04450 0.07995 0.46484 0.19563 0.45549 0.05596 0.01630 0.00922 0.04369 0.07814 0.46005 0.19295 0.43514 0.05503 0.01620 0.00935 0.04292 0.07645 0.45550 0.19043 0.41705 0.05414 0.01609 0.00946 0.04219 0.07488 0.45091 0.18792 0.39985 0.05326 0.01597 0.00954 0.04146 0.07332 0.44636 0.18545 0.38385 0.05240 0.01584 0.00960 0.04075 0.07182 0.44203 0.18312 0.36941 0.05158 0.01570 0.00964 0.04007 0.07041 0.43791 0.18093 0.35641 0.05081 0.01556 0.00966 0.03944 0.06909 0.43375 0.17873 0.34391 0.05005 0.01541 0.00967 0.03880 0.06779 0.42963 0.17657 0.33213 0.04929 0.01526 0.00968 0.03818 0.06651 0.42570 0.17452 0.32140 0.04858 0.01511 0.00967 0.03759 0.06532 0.42196 0.17259 0.31165 0.04791 0.01496 0.00965 0.03703 0.06420 0.41818 0.17064 0.30218 0.04724 0.01481 0.00963 0.03647 0.06309 0.58259 0.26783 1.38817 0.05721 0.00000 0.00000 0.04162 0.10392 0.58037 0.26527 1.32357 0.05781 0.00000 0.00000 0.04241 0.10290 0.57651 0.26134 1.23208 0.05838 0.00000 0.00000 0.04325 0.10117 0.57330 0.25839 1.16434 0.05859 0.00144 0.00000 0.04365 0.09977 0.56961 0.25522 1.09612 0.05865 0.00298 0.00000 0.04390 0.09818 0.56618 0.25243 1.04040 0.05858 0.00415 0.00000 0.04399 0.09675 0.56270 0.24971 0.98961 0.05842 0.00515 0.00000 0.04399 0.09531 0.55882 0.24680 0.93848 0.05817 0.00608 0.00000 0.04389 0.09375 0.55530 0.24425 0.89630 0.05788 0.00680 0.00000 0.04375 0.09235 0.55178 0.24176 0.85751 0.05756 0.00743 0.00000 0.04355 0.09099 0.54892 0.23979 0.82807 0.05727 0.00787 0.00000 0.04336 0.08989 0.54261 0.23555 0.76895 0.05657 0.00869 0.00001 0.04288 0.08754 0.53697 0.23187 0.71880 0.05588 0.00927 0.00092 0.04238 0.08549 0.53046 0.22774 0.66696 0.05505 0.00980 0.00185 0.04175 0.08318 0.52350 0.22345 0.61768 0.05411 0.01024 0.00268 0.04102 0.08079 0.51704 0.21956 0.57675 0.05322 0.01054 0.00332 0.04031 0.07863 0.51040 0.21565 0.53877 0.05228 0.01077 0.00388 0.03956 0.07647 0.50483 0.21241 0.50960 0.05148 0.01092 0.00427 0.03892 0.07469 0.49799 0.20851 0.47685 0.05050 0.01104 0.00469 0.03812 0.07258 0.49188 0.20508 0.45008 0.04962 0.01110 0.00500 0.03740 0.07073 0.48624 0.20196 0.42721 0.04880 0.01113 0.00525 0.03673 0.06907 0.47905 0.19803 0.40032 0.04776 0.01114 0.00552 0.03588 0.06699 0.47226 0.19437 0.37702 0.04678 0.01111 0.00572 0.03508 0.06508 0.46588 0.19097 0.35679 0.04587 0.01105 0.00588 0.03433 0.06334 0.45949 0.18761 0.33799 0.04496 0.01098 0.00601 0.03358 0.06162 0.45324 0.18435 0.32085 0.04407 0.01089 0.00611 0.03285 0.05999 0.44732 0.18130 0.30569 0.04324 0.01080 0.00618 0.03217 0.05847 0.44176 0.17846 0.29228 0.04246 0.01070 0.00623 0.03153 0.05707 0.43617 0.17563 0.27959 0.04169 0.01059 0.00627 0.03090 0.05570 0.43070 0.17287 0.26784 0.04094 0.01047 0.00630 0.03028 0.05437 0.42550 0.17028 0.25728 0.04023 0.01036 0.00631 0.02970 0.05314 0.42061 0.16785 0.24780 0.03956 0.01025 0.00632 0.02916 0.05200 0.41568 0.16543 0.23873 0.03890 0.01013 0.00632 0.02862 0.05087 0.41084 0.16306 0.23021 0.03826 0.01001 0.00631 0.02809 0.04978 0.40625 0.16082 0.22247 0.03765 0.00989 0.00629 0.02760 0.04875 0.40190 0.15872 0.21545 0.03708 0.00978 0.00627 0.02713 0.04780 0.39752 0.15661 0.20865 0.03651 0.00967 0.00625 0.02667 0.04686 0.60752 0.27074 1.14340 0.05046 0.00000 0.00000 0.03614 0.09007 0.60300 0.26716 1.07941 0.05071 0.00000 0.00000 0.03649 0.08859 0.59585 0.26179 0.99112 0.05083 0.00000 0.00000 0.03677 0.08628 0.59034 0.25785 0.92796 0.05075 0.00105 0.00000 0.03681 0.08453 0.58429 0.25369 0.86556 0.05055 0.00216 0.00000 0.03673 0.08264 0.57890 0.25008 0.81539 0.05028 0.00300 0.00000 0.03657 0.08098 0.57359 0.24662 0.77028 0.04996 0.00370 0.00000 0.03636 0.07937 0.56783 0.24294 0.72545 0.04955 0.00436 0.00000 0.03607 0.07766 0.56272 0.23976 0.68888 0.04915 0.00486 0.00000 0.03578 0.07616 0.55771 0.23668 0.65560 0.04873 0.00528 0.00000 0.03546 0.07472 0.55370 0.23426 0.63055 0.04838 0.00558 0.00000 0.03519 0.07359 0.54502 0.22911 0.58081 0.04757 0.00613 0.00000 0.03455 0.07118 0.53742 0.22470 0.53940 0.04682 0.00651 0.00064 0.03396 0.06912 0.52881 0.21980 0.49713 0.04594 0.00685 0.00128 0.03326 0.06685 0.51978 0.21475 0.45742 0.04498 0.00712 0.00185 0.03249 0.06454 0.51153 0.21023 0.42479 0.04408 0.00730 0.00228 0.03177 0.06248 0.50318 0.20573 0.39482 0.04317 0.00744 0.00265 0.03102 0.06045 0.49624 0.20203 0.37198 0.04240 0.00751 0.00292 0.03040 0.05880 0.48783 0.19761 0.34655 0.04146 0.00757 0.00319 0.02965 0.05685 0.48040 0.19375 0.32593 0.04063 0.00759 0.00340 0.02898 0.05517 0.47359 0.19025 0.30842 0.03987 0.00759 0.00356 0.02836 0.05366 0.46500 0.18589 0.28798 0.03891 0.00756 0.00372 0.02759 0.05180 0.45696 0.18185 0.27039 0.03801 0.00752 0.00385 0.02687 0.05011 0.44947 0.17813 0.25521 0.03718 0.00747 0.00395 0.02621 0.04857 0.44203 0.17447 0.24117 0.03636 0.00740 0.00403 0.02555 0.04707 0.43480 0.17094 0.22844 0.03556 0.00732 0.00409 0.02492 0.04565 0.42801 0.16766 0.21723 0.03482 0.00724 0.00413 0.02433 0.04434 0.42165 0.16461 0.20735 0.03413 0.00716 0.00416 0.02378 0.04315 0.41532 0.16159 0.19804 0.03345 0.00707 0.00417 0.02324 0.04197 0.40913 0.15866 0.18944 0.03279 0.00698 0.00419 0.02272 0.04085 0.40330 0.15592 0.18174 0.03217 0.00689 0.00419 0.02224 0.03981 0.39783 0.15336 0.17485 0.03159 0.00680 0.00419 0.02178 0.03884 0.39236 0.15082 0.16826 0.03101 0.00671 0.00418 0.02133 0.03790 0.38700 0.14834 0.16209 0.03045 0.00662 0.00417 0.02090 0.03699 0.38192 0.14601 0.15650 0.02992 0.00654 0.00415 0.02049 0.03614 0.37715 0.14382 0.15143 0.02943 0.00645 0.00413 0.02011 0.03535 0.37236 0.14164 0.14654 0.02894 0.00637 0.00411 0.01973 0.03457 0.62231 0.26885 0.92518 0.04540 0.00000 0.00000 0.03121 0.07648 0.61555 0.26434 0.86585 0.04536 0.00000 0.00000 0.03126 0.07476 0.60523 0.25771 0.78558 0.04512 0.00000 0.00000 0.03114 0.07218 0.59753 0.25291 0.72959 0.04482 0.00076 0.00000 0.03095 0.07029 0.58927 0.24789 0.67510 0.04441 0.00156 0.00000 0.03066 0.06829 0.58205 0.24359 0.63185 0.04399 0.00215 0.00000 0.03035 0.06658 0.57505 0.23950 0.59338 0.04355 0.00264 0.00000 0.03002 0.06495 0.56756 0.23519 0.55554 0.04303 0.00310 0.00000 0.02962 0.06324 0.56101 0.23148 0.52497 0.04255 0.00344 0.00000 0.02925 0.06177 0.55465 0.22794 0.49738 0.04206 0.00373 0.00000 0.02887 0.06036 0.54960 0.22515 0.47676 0.04166 0.00394 0.00000 0.02856 0.05927 0.53882 0.21928 0.43618 0.04077 0.00431 0.00000 0.02787 0.05697 0.52950 0.21429 0.40292 0.03998 0.00456 0.00044 0.02725 0.05504 0.51907 0.20881 0.36929 0.03907 0.00478 0.00089 0.02654 0.05293 0.50826 0.20320 0.33803 0.03811 0.00494 0.00128 0.02579 0.05081 0.49850 0.19822 0.31256 0.03723 0.00505 0.00157 0.02510 0.04895 0.48872 0.19329 0.28936 0.03633 0.00513 0.00182 0.02441 0.04712 0.48065 0.18927 0.27181 0.03559 0.00516 0.00200 0.02384 0.04566 0.47095 0.18449 0.25239 0.03470 0.00519 0.00218 0.02315 0.04394 0.46245 0.18035 0.23674 0.03392 0.00519 0.00232 0.02254 0.04247 0.45472 0.17662 0.22353 0.03321 0.00518 0.00242 0.02200 0.04116 0.44502 0.17198 0.20818 0.03231 0.00515 0.00253 0.02132 0.03956 0.43601 0.16772 0.19504 0.03149 0.00510 0.00261 0.02069 0.03811 0.42768 0.16381 0.18375 0.03073 0.00505 0.00267 0.02012 0.03680 0.41945 0.15998 0.17336 0.02998 0.00500 0.00272 0.01955 0.03554 0.41149 0.15631 0.16397 0.02926 0.00493 0.00275 0.01902 0.03434 0.40406 0.15291 0.15572 0.02859 0.00487 0.00278 0.01852 0.03325 0.39714 0.14976 0.14848 0.02797 0.00481 0.00279 0.01806 0.03225 0.39027 0.14666 0.14167 0.02736 0.00474 0.00280 0.01761 0.03128 0.38360 0.14367 0.13539 0.02676 0.00467 0.00280 0.01717 0.03035 0.37734 0.14087 0.12978 0.02621 0.00461 0.00280 0.01677 0.02950 0.37148 0.13827 0.12477 0.02570 0.00454 0.00280 0.01639 0.02871 0.36564 0.13570 0.11999 0.02519 0.00448 0.00279 0.01602 0.02794 0.35994 0.13320 0.11552 0.02470 0.00441 0.00278 0.01566 0.02720 0.35457 0.13085 0.11147 0.02423 0.00435 0.00277 0.01533 0.02651 0.34953 0.12866 0.10780 0.02380 0.00429 0.00275 0.01502 0.02588 0.34449 0.12647 0.10427 0.02337 0.00422 0.00274 0.01471 0.02525 0.62785 0.26280 0.73626 0.04149 0.00000 0.00000 0.02681 0.06358 0.61898 0.25751 0.68380 0.04121 0.00000 0.00000 0.02664 0.06180 0.60573 0.24981 0.61393 0.04066 0.00000 0.00000 0.02628 0.05918 0.59602 0.24430 0.56616 0.04018 0.00054 0.00000 0.02594 0.05731 0.58575 0.23859 0.52025 0.03961 0.00111 0.00000 0.02552 0.05536 0.57688 0.23374 0.48420 0.03907 0.00153 0.00000 0.02513 0.05372 0.56837 0.22915 0.45242 0.03853 0.00187 0.00000 0.02473 0.05217 0.55935 0.22436 0.42145 0.03792 0.00219 0.00000 0.02429 0.05057 0.55153 0.22025 0.39663 0.03738 0.00243 0.00000 0.02389 0.04920 0.54401 0.21635 0.37438 0.03684 0.00262 0.00000 0.02349 0.04791 0.53807 0.21329 0.35785 0.03641 0.00276 0.00000 0.02317 0.04690 0.52548 0.20689 0.32558 0.03547 0.00301 0.00000 0.02248 0.04482 0.51471 0.20150 0.29945 0.03465 0.00317 0.00031 0.02188 0.04309 0.50278 0.19561 0.27326 0.03372 0.00331 0.00062 0.02120 0.04122 0.49051 0.18963 0.24911 0.03276 0.00342 0.00088 0.02050 0.03936 0.47953 0.18435 0.22960 0.03189 0.00348 0.00108 0.01987 0.03774 0.46860 0.17916 0.21193 0.03103 0.00352 0.00125 0.01924 0.03617 0.45965 0.17495 0.19864 0.03031 0.00354 0.00137 0.01873 0.03491 0.44896 0.16997 0.18402 0.02946 0.00355 0.00149 0.01812 0.03345 0.43965 0.16567 0.17229 0.02872 0.00354 0.00158 0.01759 0.03221 0.43123 0.16182 0.16243 0.02805 0.00353 0.00165 0.01711 0.03111 0.42072 0.15706 0.15102 0.02721 0.00350 0.00172 0.01653 0.02977 0.41102 0.15271 0.14129 0.02644 0.00346 0.00178 0.01599 0.02857 0.40209 0.14873 0.13297 0.02574 0.00342 0.00181 0.01550 0.02749 0.39331 0.14485 0.12532 0.02505 0.00338 0.00184 0.01502 0.02645 0.38487 0.14115 0.11843 0.02439 0.00333 0.00187 0.01457 0.02547 0.37702 0.13774 0.11239 0.02378 0.00328 0.00188 0.01415 0.02458 0.36975 0.13459 0.10710 0.02322 0.00324 0.00189 0.01377 0.02378 0.36255 0.13150 0.10213 0.02267 0.00319 0.00189 0.01339 0.02299 0.35559 0.12852 0.09755 0.02213 0.00314 0.00189 0.01304 0.02225 0.34907 0.12575 0.09347 0.02164 0.00309 0.00189 0.01270 0.02157 0.34300 0.12319 0.08983 0.02118 0.00304 0.00188 0.01239 0.02094 0.33696 0.12065 0.08635 0.02072 0.00299 0.00188 0.01209 0.02033 0.33110 0.11819 0.08310 0.02028 0.00295 0.00187 0.01180 0.01974 0.32558 0.11590 0.08016 0.01987 0.00290 0.00186 0.01153 0.01920 0.32042 0.11376 0.07750 0.01949 0.00286 0.00185 0.01128 0.01870 0.31527 0.11163 0.07493 0.01910 0.00281 0.00183 0.01103 0.01821 0.62509 0.25327 0.57655 0.03829 0.00000 0.00000 0.02289 0.05172 0.61432 0.24735 0.53187 0.03781 0.00000 0.00000 0.02259 0.04999 0.59843 0.23882 0.47317 0.03701 0.00000 0.00000 0.02207 0.04752 0.58693 0.23276 0.43369 0.03638 0.00039 0.00000 0.02165 0.04577 0.57490 0.22653 0.39615 0.03567 0.00078 0.00000 0.02117 0.04398 0.56460 0.22127 0.36695 0.03504 0.00108 0.00000 0.02075 0.04248 0.55479 0.21632 0.34142 0.03442 0.00132 0.00000 0.02032 0.04108 0.54448 0.21118 0.31672 0.03374 0.00153 0.00000 0.01987 0.03965 0.53559 0.20680 0.29707 0.03315 0.00170 0.00000 0.01947 0.03843 0.52709 0.20265 0.27956 0.03258 0.00183 0.00000 0.01908 0.03730 0.52042 0.19942 0.26662 0.03212 0.00192 0.00000 0.01877 0.03642 0.50635 0.19268 0.24152 0.03114 0.00209 0.00000 0.01811 0.03461 0.49442 0.18705 0.22140 0.03031 0.00220 0.00021 0.01755 0.03312 0.48129 0.18092 0.20138 0.02938 0.00229 0.00043 0.01693 0.03152 0.46789 0.17474 0.18304 0.02842 0.00235 0.00061 0.01629 0.02994 0.45598 0.16932 0.16832 0.02757 0.00239 0.00075 0.01573 0.02858 0.44420 0.16401 0.15506 0.02673 0.00242 0.00086 0.01517 0.02727 0.43461 0.15973 0.14514 0.02604 0.00243 0.00094 0.01472 0.02623 0.42321 0.15469 0.13425 0.02522 0.00242 0.00103 0.01419 0.02503 0.41333 0.15036 0.12556 0.02452 0.00242 0.00109 0.01374 0.02401 0.40445 0.14649 0.11828 0.02389 0.00240 0.00113 0.01333 0.02311 0.39341 0.14173 0.10987 0.02310 0.00238 0.00118 0.01283 0.02203 0.38326 0.13740 0.10272 0.02239 0.00235 0.00121 0.01238 0.02106 0.37397 0.13346 0.09662 0.02173 0.00232 0.00124 0.01197 0.02019 0.36488 0.12963 0.09102 0.02110 0.00229 0.00126 0.01157 0.01937 0.35618 0.12600 0.08598 0.02049 0.00225 0.00127 0.01119 0.01859 0.34811 0.12265 0.08158 0.01993 0.00222 0.00128 0.01084 0.01789 0.34066 0.11958 0.07771 0.01942 0.00218 0.00128 0.01053 0.01725 0.33331 0.11657 0.07409 0.01892 0.00215 0.00128 0.01022 0.01664 0.32623 0.11368 0.07076 0.01843 0.00211 0.00128 0.00992 0.01606 0.31962 0.11100 0.06778 0.01798 0.00207 0.00128 0.00965 0.01552 0.31349 0.10853 0.06513 0.01757 0.00204 0.00128 0.00940 0.01504 0.30740 0.10609 0.06260 0.01716 0.00201 0.00127 0.00915 0.01456 0.30150 0.10373 0.06023 0.01677 0.00197 0.00126 0.00892 0.01411 0.29597 0.10153 0.05809 0.01640 0.00194 0.00125 0.00870 0.01369 0.29081 0.09949 0.05615 0.01606 0.00191 0.00125 0.00849 0.01331 0.28567 0.09746 0.05428 0.01572 0.00188 0.00124 0.00829 0.01293 0.61497 0.24090 0.44444 0.03546 0.00000 0.00000 0.01942 0.04112 0.60252 0.23452 0.40759 0.03482 0.00000 0.00000 0.01904 0.03954 0.58435 0.22538 0.35974 0.03382 0.00000 0.00000 0.01845 0.03731 0.57132 0.21894 0.32801 0.03306 0.00027 0.00000 0.01799 0.03576 0.55781 0.21236 0.29813 0.03225 0.00055 0.00000 0.01749 0.03419 0.54632 0.20683 0.27508 0.03155 0.00075 0.00000 0.01706 0.03288 0.53544 0.20166 0.25506 0.03087 0.00092 0.00000 0.01665 0.03167 0.52407 0.19631 0.23582 0.03014 0.00107 0.00000 0.01620 0.03044 0.51433 0.19178 0.22061 0.02952 0.00118 0.00000 0.01582 0.02941 0.50506 0.18750 0.20713 0.02892 0.00127 0.00000 0.01546 0.02844 0.49781 0.18417 0.19721 0.02845 0.00133 0.00000 0.01517 0.02770 0.48261 0.17728 0.17807 0.02745 0.00144 0.00000 0.01456 0.02618 0.46980 0.17154 0.16285 0.02661 0.00151 0.00015 0.01405 0.02494 0.45579 0.16534 0.14780 0.02568 0.00157 0.00029 0.01350 0.02363 0.44159 0.15912 0.13410 0.02474 0.00161 0.00042 0.01293 0.02234 0.42903 0.15369 0.12314 0.02391 0.00164 0.00051 0.01244 0.02123 0.41669 0.14839 0.11333 0.02310 0.00165 0.00059 0.01196 0.02017 0.40668 0.14414 0.10600 0.02244 0.00165 0.00065 0.01157 0.01933 0.39484 0.13916 0.09799 0.02166 0.00165 0.00070 0.01112 0.01837 0.38463 0.13490 0.09161 0.02100 0.00164 0.00074 0.01073 0.01756 0.37548 0.13111 0.08627 0.02040 0.00163 0.00078 0.01039 0.01685 0.36416 0.12646 0.08012 0.01967 0.00161 0.00081 0.00996 0.01600 0.35381 0.12224 0.07489 0.01900 0.00159 0.00083 0.00958 0.01524 0.34437 0.11843 0.07044 0.01839 0.00157 0.00085 0.00924 0.01457 0.33517 0.11473 0.06636 0.01781 0.00155 0.00086 0.00891 0.01392 0.32639 0.11123 0.06269 0.01725 0.00152 0.00087 0.00860 0.01332 0.31828 0.10802 0.05947 0.01674 0.00150 0.00087 0.00831 0.01278 0.31081 0.10509 0.05666 0.01627 0.00147 0.00087 0.00805 0.01229 0.30348 0.10222 0.05402 0.01581 0.00145 0.00087 0.00780 0.01182 0.29643 0.09947 0.05159 0.01538 0.00142 0.00087 0.00756 0.01138 0.28987 0.09694 0.04942 0.01497 0.00140 0.00087 0.00734 0.01098 0.28380 0.09459 0.04748 0.01460 0.00137 0.00087 0.00714 0.01061 0.27779 0.09229 0.04563 0.01423 0.00135 0.00086 0.00694 0.01025 0.27198 0.09008 0.04390 0.01388 0.00133 0.00086 0.00675 0.00991 0.26655 0.08801 0.04234 0.01355 0.00130 0.00085 0.00657 0.00959 0.26148 0.08610 0.04092 0.01324 0.00128 0.00085 0.00641 0.00931 0.25646 0.08421 0.03955 0.01294 0.00126 0.00084 0.00625 0.00902 0.59841 0.22632 0.33728 0.03277 0.00000 0.00000 0.01637 0.03192 0.58454 0.21963 0.30776 0.03200 0.00000 0.00000 0.01595 0.03055 0.56448 0.21012 0.26982 0.03084 0.00000 0.00000 0.01533 0.02862 0.55021 0.20347 0.24496 0.03000 0.00019 0.00000 0.01487 0.02730 0.53550 0.19670 0.22176 0.02912 0.00038 0.00000 0.01439 0.02597 0.52307 0.19104 0.20398 0.02836 0.00052 0.00000 0.01397 0.02488 0.51138 0.18578 0.18864 0.02765 0.00063 0.00000 0.01358 0.02387 0.49920 0.18035 0.17398 0.02689 0.00074 0.00000 0.01316 0.02285 0.48882 0.17577 0.16245 0.02625 0.00081 0.00000 0.01281 0.02200 0.47898 0.17146 0.15228 0.02564 0.00087 0.00000 0.01248 0.02121 0.47131 0.16812 0.14482 0.02516 0.00091 0.00000 0.01222 0.02061 0.45531 0.16123 0.13050 0.02417 0.00099 0.00000 0.01167 0.01938 0.44191 0.15553 0.11918 0.02333 0.00104 0.00010 0.01122 0.01838 0.42732 0.14938 0.10804 0.02242 0.00107 0.00020 0.01073 0.01733 0.41262 0.14326 0.09795 0.02151 0.00110 0.00029 0.01025 0.01631 0.39970 0.13794 0.08991 0.02071 0.00112 0.00035 0.00982 0.01543 0.38705 0.13277 0.08272 0.01993 0.00112 0.00041 0.00941 0.01460 0.37684 0.12864 0.07736 0.01931 0.00113 0.00045 0.00908 0.01395 0.36481 0.12382 0.07152 0.01857 0.00112 0.00048 0.00869 0.01320 0.35447 0.11971 0.06688 0.01794 0.00112 0.00051 0.00837 0.01258 0.34525 0.11606 0.06299 0.01739 0.00111 0.00053 0.00808 0.01203 0.33389 0.11161 0.05852 0.01671 0.00109 0.00055 0.00773 0.01138 0.32354 0.10759 0.05472 0.01609 0.00108 0.00057 0.00741 0.01080 0.31413 0.10396 0.05148 0.01553 0.00106 0.00058 0.00713 0.01029 0.30500 0.10046 0.04851 0.01499 0.00105 0.00059 0.00686 0.00980 0.29631 0.09716 0.04584 0.01449 0.00103 0.00059 0.00660 0.00935 0.28832 0.09414 0.04350 0.01402 0.00101 0.00060 0.00637 0.00895 0.28098 0.09138 0.04145 0.01360 0.00099 0.00060 0.00616 0.00858 0.27379 0.08869 0.03952 0.01318 0.00097 0.00060 0.00595 0.00823 0.26690 0.08613 0.03775 0.01279 0.00096 0.00060 0.00576 0.00790 0.26050 0.08377 0.03616 0.01243 0.00094 0.00059 0.00558 0.00760 0.25459 0.08160 0.03474 0.01209 0.00092 0.00059 0.00541 0.00733 0.24877 0.07947 0.03339 0.01176 0.00091 0.00059 0.00525 0.00707 0.24314 0.07742 0.03212 0.01145 0.00089 0.00058 0.00510 0.00682 0.23790 0.07551 0.03097 0.01116 0.00088 0.00058 0.00496 0.00659 0.23302 0.07375 0.02993 0.01089 0.00086 0.00058 0.00483 0.00638 0.22819 0.07201 0.02893 0.01062 0.00085 0.00057 0.00470 0.00617 0.57634 0.21010 0.25194 0.03007 0.00000 0.00000 0.01369 0.02414 0.56133 0.20327 0.22893 0.02921 0.00000 0.00000 0.01327 0.02300 0.53978 0.19361 0.19963 0.02796 0.00000 0.00000 0.01266 0.02141 0.52456 0.18689 0.18065 0.02706 0.00013 0.00000 0.01222 0.02032 0.50896 0.18009 0.16305 0.02613 0.00026 0.00000 0.01176 0.01924 0.49585 0.17443 0.14965 0.02535 0.00036 0.00000 0.01138 0.01836 0.48356 0.16918 0.13815 0.02462 0.00043 0.00000 0.01102 0.01755 0.47084 0.16380 0.12722 0.02386 0.00050 0.00000 0.01064 0.01673 0.46003 0.15926 0.11866 0.02321 0.00055 0.00000 0.01033 0.01606 0.44982 0.15502 0.11113 0.02260 0.00059 0.00000 0.01003 0.01544 0.44188 0.15174 0.10563 0.02213 0.00062 0.00000 0.00980 0.01496 0.42541 0.14499 0.09511 0.02115 0.00067 0.00000 0.00932 0.01400 0.41167 0.13943 0.08683 0.02034 0.00070 0.00007 0.00893 0.01322 0.39680 0.13347 0.07870 0.01946 0.00073 0.00014 0.00851 0.01241 0.38189 0.12755 0.07136 0.01859 0.00075 0.00020 0.00809 0.01162 0.36884 0.12243 0.06553 0.01783 0.00076 0.00024 0.00773 0.01095 0.35613 0.11749 0.06032 0.01710 0.00076 0.00028 0.00738 0.01032 0.34591 0.11355 0.05645 0.01651 0.00076 0.00031 0.00710 0.00983 0.33391 0.10896 0.05222 0.01583 0.00076 0.00033 0.00678 0.00927 0.32365 0.10507 0.04886 0.01525 0.00076 0.00035 0.00651 0.00880 0.31452 0.10163 0.04605 0.01473 0.00075 0.00037 0.00627 0.00840 0.30331 0.09745 0.04281 0.01410 0.00074 0.00038 0.00598 0.00791 0.29314 0.09368 0.04006 0.01354 0.00073 0.00039 0.00572 0.00748 0.28393 0.09029 0.03771 0.01303 0.00072 0.00040 0.00549 0.00710 0.27501 0.08703 0.03555 0.01255 0.00071 0.00040 0.00526 0.00675 0.26656 0.08397 0.03361 0.01209 0.00069 0.00041 0.00506 0.00642 0.25881 0.08117 0.03190 0.01167 0.00068 0.00041 0.00487 0.00612 0.25171 0.07863 0.03040 0.01129 0.00067 0.00041 0.00470 0.00586 0.24478 0.07615 0.02900 0.01092 0.00066 0.00041 0.00453 0.00561 0.23815 0.07380 0.02770 0.01057 0.00064 0.00041 0.00437 0.00537 0.23202 0.07164 0.02653 0.01025 0.00063 0.00041 0.00423 0.00515 0.22636 0.06965 0.02549 0.00995 0.00062 0.00040 0.00410 0.00496 0.22080 0.06771 0.02450 0.00966 0.00061 0.00040 0.00397 0.00477 0.21544 0.06585 0.02357 0.00938 0.00060 0.00040 0.00385 0.00459 0.21045 0.06412 0.02272 0.00913 0.00059 0.00040 0.00374 0.00443 0.20582 0.06253 0.02195 0.00889 0.00058 0.00039 0.00363 0.00428 0.20124 0.06095 0.02121 0.00865 0.00057 0.00039 0.00353 0.00413 0.54964 0.19280 0.18518 0.02731 0.00000 0.00000 0.01136 0.01776 0.53379 0.18597 0.16772 0.02639 0.00000 0.00000 0.01096 0.01684 0.51117 0.17637 0.14568 0.02508 0.00000 0.00000 0.01038 0.01557 0.49529 0.16972 0.13153 0.02416 0.00009 0.00000 0.00997 0.01472 0.47910 0.16302 0.11850 0.02323 0.00018 0.00000 0.00956 0.01387 0.46555 0.15747 0.10863 0.02244 0.00024 0.00000 0.00921 0.01318 0.45291 0.15234 0.10020 0.02172 0.00029 0.00000 0.00889 0.01256 0.43986 0.14710 0.09222 0.02097 0.00034 0.00000 0.00856 0.01193 0.42883 0.14270 0.08599 0.02034 0.00037 0.00000 0.00828 0.01141 0.41844 0.13859 0.08052 0.01974 0.00040 0.00000 0.00802 0.01093 0.41039 0.13543 0.07654 0.01929 0.00042 0.00000 0.00782 0.01057 0.39374 0.12894 0.06894 0.01835 0.00046 0.00000 0.00741 0.00984 0.37993 0.12362 0.06298 0.01757 0.00048 0.00005 0.00707 0.00926 0.36504 0.11794 0.05713 0.01674 0.00049 0.00010 0.00671 0.00865 0.35018 0.11233 0.05186 0.01592 0.00051 0.00014 0.00636 0.00807 0.33723 0.10749 0.04768 0.01521 0.00051 0.00017 0.00605 0.00757 0.32467 0.10284 0.04394 0.01453 0.00052 0.00019 0.00576 0.00711 0.31461 0.09915 0.04116 0.01399 0.00052 0.00021 0.00553 0.00675 0.30284 0.09486 0.03812 0.01336 0.00051 0.00023 0.00526 0.00634 0.29281 0.09124 0.03570 0.01283 0.00051 0.00024 0.00504 0.00600 0.28392 0.08805 0.03368 0.01236 0.00051 0.00025 0.00484 0.00571 0.27304 0.08417 0.03134 0.01180 0.00050 0.00026 0.00461 0.00536 0.26320 0.08070 0.02935 0.01129 0.00049 0.00027 0.00439 0.00505 0.25432 0.07758 0.02765 0.01083 0.00048 0.00027 0.00420 0.00478 0.24575 0.07460 0.02608 0.01040 0.00048 0.00028 0.00402 0.00453 0.23766 0.07180 0.02467 0.00999 0.00047 0.00028 0.00386 0.00429 0.23025 0.06925 0.02342 0.00962 0.00046 0.00028 0.00370 0.00408 0.22349 0.06694 0.02233 0.00928 0.00045 0.00028 0.00357 0.00390 0.21690 0.06470 0.02130 0.00896 0.00044 0.00028 0.00344 0.00372 0.21062 0.06258 0.02034 0.00865 0.00043 0.00028 0.00331 0.00355 0.20482 0.06063 0.01949 0.00837 0.00043 0.00028 0.00320 0.00340 0.19948 0.05884 0.01872 0.00811 0.00042 0.00028 0.00309 0.00327 0.19424 0.05709 0.01799 0.00785 0.00041 0.00028 0.00299 0.00314 0.18921 0.05543 0.01730 0.00761 0.00040 0.00027 0.00289 0.00301 0.18453 0.05388 0.01668 0.00739 0.00040 0.00027 0.00280 0.00290 0.18021 0.05246 0.01611 0.00719 0.00039 0.00027 0.00272 0.00280 0.17593 0.05106 0.01556 0.00698 0.00038 0.00027 0.00264 0.00270 0.51918 0.17490 0.13387 0.02446 0.00000 0.00000 0.00934 0.01267 0.50277 0.16820 0.12099 0.02353 0.00000 0.00000 0.00897 0.01196 0.47948 0.15883 0.10485 0.02222 0.00000 0.00000 0.00845 0.01099 0.46323 0.15237 0.09457 0.02131 0.00006 0.00000 0.00808 0.01034 0.44674 0.14589 0.08515 0.02039 0.00012 0.00000 0.00771 0.00970 0.43299 0.14055 0.07805 0.01962 0.00016 0.00000 0.00740 0.00918 0.42022 0.13563 0.07200 0.01892 0.00020 0.00000 0.00712 0.00871 0.40709 0.13062 0.06629 0.01820 0.00023 0.00000 0.00683 0.00825 0.39602 0.12642 0.06185 0.01760 0.00025 0.00000 0.00659 0.00786 0.38563 0.12252 0.05796 0.01704 0.00027 0.00000 0.00637 0.00751 0.37760 0.11952 0.05513 0.01660 0.00028 0.00000 0.00620 0.00725 0.36106 0.11339 0.04973 0.01572 0.00031 0.00000 0.00585 0.00672 0.34739 0.10838 0.04550 0.01500 0.00032 0.00003 0.00556 0.00629 0.33272 0.10306 0.04135 0.01423 0.00033 0.00007 0.00526 0.00586 0.31814 0.09783 0.03761 0.01347 0.00034 0.00009 0.00497 0.00543 0.30550 0.09333 0.03464 0.01283 0.00034 0.00012 0.00471 0.00508 0.29328 0.08903 0.03198 0.01221 0.00035 0.00013 0.00447 0.00475 0.28352 0.08562 0.02999 0.01172 0.00035 0.00014 0.00428 0.00450 0.27215 0.08168 0.02782 0.01115 0.00035 0.00016 0.00406 0.00421 0.26250 0.07835 0.02609 0.01067 0.00034 0.00017 0.00388 0.00397 0.25396 0.07544 0.02463 0.01025 0.00034 0.00017 0.00372 0.00377 0.24355 0.07191 0.02295 0.00975 0.00034 0.00018 0.00353 0.00352 0.23417 0.06876 0.02151 0.00930 0.00033 0.00018 0.00336 0.00331 0.22573 0.06594 0.02028 0.00890 0.00033 0.00019 0.00321 0.00312 0.21762 0.06325 0.01914 0.00851 0.00032 0.00019 0.00306 0.00295 0.20997 0.06073 0.01811 0.00816 0.00031 0.00019 0.00293 0.00279 0.20299 0.05844 0.01720 0.00783 0.00031 0.00019 0.00281 0.00265 0.19664 0.05638 0.01640 0.00754 0.00030 0.00019 0.00270 0.00252 0.19047 0.05438 0.01564 0.00726 0.00030 0.00019 0.00259 0.00240 0.18459 0.05249 0.01494 0.00699 0.00029 0.00019 0.00249 0.00229 0.17918 0.05075 0.01431 0.00675 0.00029 0.00019 0.00240 0.00219 0.17422 0.04917 0.01375 0.00652 0.00028 0.00019 0.00232 0.00209 0.16935 0.04763 0.01320 0.00631 0.00028 0.00019 0.00224 0.00201 0.16469 0.04615 0.01270 0.00610 0.00027 0.00019 0.00216 0.00192 0.16036 0.04479 0.01223 0.00591 0.00027 0.00018 0.00209 0.00185 0.15637 0.04354 0.01181 0.00574 0.00026 0.00018 0.00203 0.00178 0.15243 0.04231 0.01140 0.00557 0.00026 0.00018 0.00197 0.00171 0.48578 0.15684 0.09513 0.02157 0.00000 0.00000 0.00761 0.00873 0.46909 0.15038 0.08590 0.02066 0.00000 0.00000 0.00728 0.00820 0.44554 0.14139 0.07442 0.01938 0.00000 0.00000 0.00681 0.00749 0.42918 0.13523 0.06715 0.01850 0.00004 0.00000 0.00649 0.00701 0.41266 0.12907 0.06051 0.01763 0.00008 0.00000 0.00617 0.00655 0.39895 0.12402 0.05552 0.01691 0.00011 0.00000 0.00590 0.00618 0.38625 0.11937 0.05129 0.01624 0.00013 0.00000 0.00566 0.00584 0.37324 0.11466 0.04730 0.01557 0.00015 0.00000 0.00542 0.00551 0.36231 0.11073 0.04419 0.01501 0.00017 0.00000 0.00521 0.00524 0.35208 0.10708 0.04148 0.01449 0.00018 0.00000 0.00502 0.00499 0.34419 0.10428 0.03950 0.01409 0.00019 0.00000 0.00488 0.00480 0.32800 0.09858 0.03573 0.01328 0.00020 0.00000 0.00458 0.00443 0.31468 0.09395 0.03277 0.01262 0.00021 0.00002 0.00435 0.00413 0.30044 0.08904 0.02986 0.01192 0.00022 0.00005 0.00410 0.00383 0.28635 0.08423 0.02723 0.01124 0.00023 0.00006 0.00385 0.00354 0.27418 0.08012 0.02513 0.01066 0.00023 0.00008 0.00365 0.00330 0.26246 0.07620 0.02325 0.01011 0.00023 0.00009 0.00345 0.00307 0.25314 0.07310 0.02184 0.00967 0.00023 0.00010 0.00329 0.00290 0.24231 0.06953 0.02030 0.00917 0.00023 0.00011 0.00312 0.00270 0.23314 0.06653 0.01906 0.00875 0.00023 0.00011 0.00297 0.00254 0.22506 0.06391 0.01801 0.00838 0.00023 0.00012 0.00284 0.00240 0.21524 0.06074 0.01680 0.00794 0.00023 0.00012 0.00269 0.00224 0.20642 0.05792 0.01576 0.00755 0.00022 0.00013 0.00255 0.00210 0.19851 0.05541 0.01486 0.00720 0.00022 0.00013 0.00243 0.00198 0.19092 0.05302 0.01404 0.00687 0.00022 0.00013 0.00231 0.00186 0.18380 0.05079 0.01328 0.00656 0.00021 0.00013 0.00221 0.00176 0.17731 0.04877 0.01262 0.00629 0.00021 0.00013 0.00211 0.00166 0.17142 0.04695 0.01203 0.00604 0.00020 0.00013 0.00202 0.00158 0.16571 0.04519 0.01147 0.00580 0.00020 0.00013 0.00194 0.00150 0.16029 0.04353 0.01096 0.00557 0.00020 0.00013 0.00186 0.00143 0.15531 0.04201 0.01049 0.00536 0.00019 0.00013 0.00179 0.00136 0.15075 0.04063 0.01007 0.00518 0.00019 0.00013 0.00173 0.00130 0.14629 0.03928 0.00967 0.00499 0.00018 0.00013 0.00167 0.00124 0.14202 0.03800 0.00930 0.00482 0.00018 0.00013 0.00161 0.00119 0.13807 0.03682 0.00895 0.00466 0.00018 0.00013 0.00155 0.00114 0.13443 0.03573 0.00864 0.00452 0.00017 0.00012 0.00150 0.00110 0.13084 0.03467 0.00834 0.00437 0.00017 0.00012 0.00145 0.00105 0.45024 0.13899 0.06639 0.01869 0.00000 0.00000 0.00614 0.00578 0.43354 0.13288 0.05999 0.01782 0.00000 0.00000 0.00585 0.00540 0.41009 0.12440 0.05207 0.01662 0.00000 0.00000 0.00544 0.00490 0.39389 0.11862 0.04707 0.01580 0.00003 0.00000 0.00517 0.00457 0.37759 0.11287 0.04253 0.01499 0.00005 0.00000 0.00489 0.00425 0.36411 0.10816 0.03911 0.01432 0.00007 0.00000 0.00467 0.00399 0.35168 0.10385 0.03622 0.01371 0.00009 0.00000 0.00446 0.00376 0.33898 0.09948 0.03349 0.01310 0.00010 0.00000 0.00425 0.00354 0.32834 0.09586 0.03137 0.01259 0.00011 0.00000 0.00408 0.00335 0.31842 0.09250 0.02951 0.01212 0.00012 0.00000 0.00393 0.00318 0.31078 0.08993 0.02815 0.01176 0.00013 0.00000 0.00381 0.00306 0.29516 0.08472 0.02556 0.01103 0.00014 0.00000 0.00356 0.00281 0.28236 0.08049 0.02351 0.01045 0.00014 0.00002 0.00337 0.00261 0.26874 0.07603 0.02150 0.00983 0.00015 0.00003 0.00316 0.00241 0.25531 0.07169 0.01966 0.00923 0.00015 0.00004 0.00296 0.00222 0.24375 0.06798 0.01820 0.00872 0.00015 0.00005 0.00280 0.00206 0.23267 0.06446 0.01687 0.00823 0.00016 0.00006 0.00264 0.00191 0.22388 0.06169 0.01588 0.00785 0.00016 0.00007 0.00251 0.00180 0.21370 0.05851 0.01478 0.00742 0.00016 0.00007 0.00237 0.00167 0.20511 0.05584 0.01389 0.00706 0.00015 0.00008 0.00225 0.00157 0.19757 0.05352 0.01315 0.00674 0.00015 0.00008 0.00215 0.00148 0.18842 0.05072 0.01227 0.00637 0.00015 0.00008 0.00203 0.00137 0.18024 0.04823 0.01152 0.00603 0.00015 0.00009 0.00192 0.00128 0.17291 0.04603 0.01087 0.00574 0.00015 0.00009 0.00182 0.00120 0.16591 0.04393 0.01027 0.00546 0.00014 0.00009 0.00173 0.00113 0.15936 0.04198 0.00972 0.00520 0.00014 0.00009 0.00165 0.00106 0.15340 0.04022 0.00923 0.00497 0.00014 0.00009 0.00157 0.00100 0.14801 0.03864 0.00880 0.00476 0.00014 0.00009 0.00151 0.00095 0.14280 0.03711 0.00839 0.00456 0.00013 0.00009 0.00144 0.00090 0.13786 0.03568 0.00801 0.00437 0.00013 0.00009 0.00138 0.00086 0.13333 0.03437 0.00766 0.00420 0.00013 0.00009 0.00133 0.00082 0.12919 0.03318 0.00735 0.00404 0.00013 0.00009 0.00128 0.00078 0.12516 0.03202 0.00706 0.00389 0.00012 0.00009 0.00123 0.00074 0.12130 0.03092 0.00678 0.00375 0.00012 0.00009 0.00118 0.00071 0.11774 0.02991 0.00652 0.00362 0.00012 0.00009 0.00114 0.00068 0.11446 0.02899 0.00629 0.00350 0.00012 0.00008 0.00110 0.00065 0.11124 0.02808 0.00607 0.00338 0.00011 0.00008 0.00107 0.00063 0.41326 0.12168 0.04549 0.01588 0.00000 0.00000 0.00490 0.00365 0.39680 0.11598 0.04122 0.01508 0.00000 0.00000 0.00465 0.00340 0.37380 0.10812 0.03594 0.01399 0.00000 0.00000 0.00430 0.00307 0.35798 0.10278 0.03262 0.01324 0.00002 0.00000 0.00407 0.00285 0.34213 0.09749 0.02959 0.01251 0.00003 0.00000 0.00384 0.00263 0.32908 0.09317 0.02732 0.01191 0.00005 0.00000 0.00365 0.00247 0.31707 0.08923 0.02539 0.01137 0.00006 0.00000 0.00348 0.00232 0.30485 0.08526 0.02357 0.01082 0.00007 0.00000 0.00331 0.00217 0.29465 0.08196 0.02215 0.01037 0.00007 0.00000 0.00317 0.00205 0.28515 0.07892 0.02090 0.00995 0.00008 0.00000 0.00304 0.00194 0.27787 0.07660 0.01999 0.00964 0.00008 0.00000 0.00294 0.00186 0.26300 0.07191 0.01823 0.00900 0.00009 0.00000 0.00274 0.00170 0.25087 0.06811 0.01683 0.00849 0.00009 0.00001 0.00258 0.00158 0.23801 0.06413 0.01545 0.00795 0.00010 0.00002 0.00242 0.00145 0.22538 0.06026 0.01418 0.00744 0.00010 0.00003 0.00226 0.00133 0.21456 0.05697 0.01315 0.00700 0.00010 0.00004 0.00212 0.00123 0.20421 0.05386 0.01222 0.00659 0.00010 0.00004 0.00200 0.00114 0.19603 0.05142 0.01152 0.00627 0.00010 0.00005 0.00190 0.00107 0.18659 0.04862 0.01074 0.00590 0.00010 0.00005 0.00179 0.00099 0.17866 0.04629 0.01011 0.00559 0.00010 0.00005 0.00169 0.00092 0.17170 0.04426 0.00957 0.00533 0.00010 0.00006 0.00161 0.00087 0.16329 0.04182 0.00894 0.00501 0.00010 0.00006 0.00152 0.00081 0.15579 0.03966 0.00840 0.00474 0.00010 0.00006 0.00143 0.00075 0.14911 0.03776 0.00793 0.00449 0.00010 0.00006 0.00136 0.00070 0.14273 0.03595 0.00749 0.00426 0.00010 0.00006 0.00129 0.00066 0.13677 0.03427 0.00708 0.00405 0.00009 0.00006 0.00122 0.00062 0.13138 0.03276 0.00673 0.00385 0.00009 0.00006 0.00116 0.00058 0.12651 0.03141 0.00641 0.00368 0.00009 0.00006 0.00111 0.00055 0.12181 0.03010 0.00611 0.00352 0.00009 0.00006 0.00106 0.00052 0.11737 0.02888 0.00583 0.00336 0.00009 0.00006 0.00101 0.00050 0.11330 0.02777 0.00557 0.00323 0.00009 0.00006 0.00097 0.00047 0.10960 0.02676 0.00534 0.00310 0.00008 0.00006 0.00093 0.00045 0.10599 0.02578 0.00513 0.00298 0.00008 0.00006 0.00090 0.00043 0.10255 0.02485 0.00492 0.00286 0.00008 0.00006 0.00086 0.00041 0.09938 0.02400 0.00473 0.00276 0.00008 0.00006 0.00083 0.00039 0.09646 0.02322 0.00456 0.00266 0.00008 0.00006 0.00080 0.00037 0.09361 0.02246 0.00439 0.00257 0.00008 0.00006 0.00077 0.00036 0.37554 0.10518 0.03056 0.01323 0.00000 0.00000 0.00386 0.00218 0.35956 0.09996 0.02783 0.01251 0.00000 0.00000 0.00365 0.00202 0.33732 0.09278 0.02447 0.01153 0.00000 0.00000 0.00336 0.00181 0.32210 0.08793 0.02234 0.01088 0.00001 0.00000 0.00317 0.00167 0.30690 0.08314 0.02039 0.01023 0.00002 0.00000 0.00298 0.00154 0.29443 0.07924 0.01893 0.00971 0.00003 0.00000 0.00282 0.00144 0.28300 0.07570 0.01768 0.00924 0.00004 0.00000 0.00268 0.00135 0.27140 0.07214 0.01649 0.00876 0.00004 0.00000 0.00254 0.00126 0.26174 0.06919 0.01556 0.00837 0.00005 0.00000 0.00243 0.00119 0.25278 0.06648 0.01474 0.00802 0.00005 0.00000 0.00233 0.00112 0.24591 0.06442 0.01413 0.00775 0.00005 0.00000 0.00225 0.00107 0.23196 0.06025 0.01296 0.00720 0.00006 0.00000 0.00209 0.00098 0.22062 0.05690 0.01201 0.00677 0.00006 0.00001 0.00196 0.00090 0.20864 0.05339 0.01107 0.00631 0.00007 0.00001 0.00183 0.00083 0.19692 0.05000 0.01019 0.00588 0.00007 0.00002 0.00170 0.00075 0.18692 0.04713 0.00948 0.00551 0.00007 0.00003 0.00160 0.00070 0.17738 0.04442 0.00883 0.00517 0.00007 0.00003 0.00150 0.00064 0.16987 0.04230 0.00834 0.00490 0.00007 0.00003 0.00142 0.00060 0.16123 0.03988 0.00778 0.00460 0.00007 0.00003 0.00133 0.00056 0.15399 0.03787 0.00733 0.00435 0.00007 0.00004 0.00126 0.00052 0.14766 0.03612 0.00694 0.00413 0.00007 0.00004 0.00120 0.00049 0.14003 0.03403 0.00649 0.00387 0.00007 0.00004 0.00112 0.00045 0.13325 0.03219 0.00609 0.00364 0.00007 0.00004 0.00106 0.00042 0.12722 0.03057 0.00575 0.00345 0.00006 0.00004 0.00100 0.00039 0.12149 0.02903 0.00543 0.00326 0.00006 0.00004 0.00094 0.00037 0.11615 0.02761 0.00513 0.00309 0.00006 0.00004 0.00089 0.00034 0.11133 0.02633 0.00487 0.00293 0.00006 0.00004 0.00085 0.00032 0.10699 0.02519 0.00464 0.00279 0.00006 0.00004 0.00081 0.00031 0.10280 0.02409 0.00442 0.00266 0.00006 0.00004 0.00077 0.00029 0.09886 0.02307 0.00421 0.00254 0.00006 0.00004 0.00074 0.00027 0.09526 0.02214 0.00402 0.00243 0.00006 0.00004 0.00070 0.00026 0.09198 0.02129 0.00386 0.00233 0.00006 0.00004 0.00068 0.00025 0.08879 0.02048 0.00369 0.00223 0.00005 0.00004 0.00065 0.00024 0.08577 0.01970 0.00354 0.00214 0.00005 0.00004 0.00062 0.00023 0.08298 0.01900 0.00340 0.00206 0.00005 0.00004 0.00060 0.00022 0.08042 0.01835 0.00328 0.00198 0.00005 0.00004 0.00058 0.00021 0.07792 0.01772 0.00315 0.00191 0.00005 0.00004 0.00055 0.00020 0.33773 0.08971 0.02011 0.01077 0.00000 0.00000 0.00300 0.00121 0.32242 0.08500 0.01847 0.01015 0.00000 0.00000 0.00283 0.00112 0.30121 0.07855 0.01643 0.00931 0.00000 0.00000 0.00259 0.00100 0.28677 0.07422 0.01513 0.00874 0.00001 0.00000 0.00243 0.00092 0.27240 0.06995 0.01393 0.00819 0.00001 0.00000 0.00228 0.00084 0.26065 0.06649 0.01301 0.00775 0.00002 0.00000 0.00215 0.00078 0.24991 0.06335 0.01223 0.00734 0.00002 0.00000 0.00204 0.00073 0.23905 0.06021 0.01147 0.00695 0.00003 0.00000 0.00193 0.00068 0.23003 0.05762 0.01088 0.00662 0.00003 0.00000 0.00184 0.00064 0.22168 0.05524 0.01035 0.00632 0.00003 0.00000 0.00176 0.00060 0.21531 0.05343 0.00995 0.00609 0.00004 0.00000 0.00169 0.00058 0.20239 0.04980 0.00918 0.00564 0.00004 0.00000 0.00157 0.00052 0.19192 0.04688 0.00854 0.00528 0.00004 0.00000 0.00147 0.00048 0.18091 0.04385 0.00790 0.00491 0.00004 0.00001 0.00137 0.00044 0.17018 0.04092 0.00730 0.00455 0.00004 0.00001 0.00127 0.00040 0.16106 0.03845 0.00681 0.00425 0.00004 0.00002 0.00118 0.00037 0.15239 0.03613 0.00635 0.00397 0.00005 0.00002 0.00111 0.00034 0.14559 0.03432 0.00600 0.00375 0.00005 0.00002 0.00105 0.00032 0.13779 0.03226 0.00561 0.00351 0.00005 0.00002 0.00098 0.00030 0.13126 0.03055 0.00528 0.00331 0.00005 0.00002 0.00092 0.00028 0.12558 0.02907 0.00501 0.00313 0.00004 0.00003 0.00087 0.00026 0.11875 0.02731 0.00468 0.00293 0.00004 0.00003 0.00082 0.00024 0.11270 0.02576 0.00439 0.00275 0.00004 0.00003 0.00077 0.00022 0.10734 0.02440 0.00414 0.00259 0.00004 0.00003 0.00072 0.00021 0.10225 0.02311 0.00391 0.00244 0.00004 0.00003 0.00068 0.00020 0.09753 0.02193 0.00369 0.00230 0.00004 0.00003 0.00065 0.00018 0.09327 0.02087 0.00350 0.00218 0.00004 0.00003 0.00061 0.00017 0.08945 0.01992 0.00333 0.00208 0.00004 0.00003 0.00058 0.00016 0.08577 0.01901 0.00317 0.00197 0.00004 0.00003 0.00055 0.00015 0.08231 0.01816 0.00302 0.00188 0.00004 0.00003 0.00053 0.00015 0.07917 0.01740 0.00288 0.00179 0.00004 0.00003 0.00050 0.00014 0.07631 0.01670 0.00276 0.00172 0.00004 0.00003 0.00048 0.00013 0.07353 0.01603 0.00264 0.00164 0.00004 0.00003 0.00046 0.00013 0.07090 0.01540 0.00253 0.00157 0.00003 0.00003 0.00044 0.00012 0.06848 0.01482 0.00242 0.00151 0.00003 0.00003 0.00042 0.00012 0.06627 0.01429 0.00233 0.00145 0.00003 0.00003 0.00041 0.00011 0.06411 0.01378 0.00224 0.00139 0.00003 0.00002 0.00039 0.00011 0.30037 0.07542 0.01297 0.00857 0.00000 0.00000 0.00230 0.00061 0.28591 0.07124 0.01205 0.00804 0.00000 0.00000 0.00216 0.00057 0.26597 0.06555 0.01091 0.00733 0.00000 0.00000 0.00197 0.00050 0.25245 0.06173 0.01015 0.00686 0.00000 0.00000 0.00184 0.00046 0.23905 0.05799 0.00944 0.00640 0.00001 0.00000 0.00172 0.00042 0.22813 0.05498 0.00890 0.00604 0.00001 0.00000 0.00162 0.00039 0.21818 0.05225 0.00842 0.00571 0.00002 0.00000 0.00153 0.00037 0.20815 0.04952 0.00795 0.00538 0.00002 0.00000 0.00144 0.00034 0.19985 0.04728 0.00758 0.00511 0.00002 0.00000 0.00137 0.00032 0.19218 0.04522 0.00724 0.00487 0.00002 0.00000 0.00131 0.00030 0.18634 0.04367 0.00698 0.00468 0.00002 0.00000 0.00126 0.00029 0.17454 0.04055 0.00648 0.00431 0.00003 0.00000 0.00116 0.00026 0.16502 0.03806 0.00606 0.00402 0.00003 0.00000 0.00108 0.00024 0.15503 0.03547 0.00562 0.00372 0.00003 0.00001 0.00100 0.00022 0.14535 0.03299 0.00521 0.00344 0.00003 0.00001 0.00093 0.00020 0.13714 0.03090 0.00486 0.00320 0.00003 0.00001 0.00086 0.00019 0.12937 0.02894 0.00454 0.00298 0.00003 0.00001 0.00081 0.00017 0.12329 0.02742 0.00429 0.00281 0.00003 0.00001 0.00076 0.00016 0.11634 0.02570 0.00401 0.00262 0.00003 0.00002 0.00071 0.00015 0.11055 0.02427 0.00378 0.00246 0.00003 0.00002 0.00067 0.00014 0.10551 0.02304 0.00358 0.00232 0.00003 0.00002 0.00063 0.00013 0.09948 0.02158 0.00335 0.00216 0.00003 0.00002 0.00059 0.00012 0.09416 0.02030 0.00314 0.00202 0.00003 0.00002 0.00055 0.00011 0.08945 0.01917 0.00296 0.00190 0.00003 0.00002 0.00052 0.00011 0.08500 0.01812 0.00279 0.00179 0.00003 0.00002 0.00049 0.00010 0.08088 0.01715 0.00263 0.00168 0.00003 0.00002 0.00046 0.00009 0.07718 0.01628 0.00249 0.00159 0.00003 0.00002 0.00043 0.00009 0.07385 0.01550 0.00237 0.00151 0.00003 0.00002 0.00041 0.00008 0.07067 0.01477 0.00225 0.00143 0.00002 0.00002 0.00039 0.00008 0.06769 0.01408 0.00214 0.00136 0.00002 0.00002 0.00037 0.00008 0.06497 0.01346 0.00204 0.00129 0.00002 0.00002 0.00035 0.00007 0.06251 0.01290 0.00195 0.00123 0.00002 0.00002 0.00034 0.00007 0.06013 0.01236 0.00186 0.00118 0.00002 0.00002 0.00032 0.00007 0.05787 0.01185 0.00178 0.00113 0.00002 0.00002 0.00031 0.00006 0.05581 0.01138 0.00171 0.00108 0.00002 0.00002 0.00030 0.00006 0.05392 0.01096 0.00164 0.00103 0.00002 0.00002 0.00028 0.00006 0.05207 0.01055 0.00158 0.00099 0.00002 0.00002 0.00027 0.00006 0.26400 0.06243 0.00818 0.00665 0.00000 0.00000 0.00173 0.00028 0.25054 0.05879 0.00774 0.00621 0.00000 0.00000 0.00162 0.00025 0.23205 0.05385 0.00715 0.00564 0.00000 0.00000 0.00147 0.00022 0.21957 0.05055 0.00675 0.00525 0.00000 0.00000 0.00137 0.00021 0.20726 0.04733 0.00636 0.00488 0.00001 0.00000 0.00128 0.00019 0.19725 0.04474 0.00605 0.00459 0.00001 0.00000 0.00120 0.00018 0.18817 0.04241 0.00577 0.00432 0.00001 0.00000 0.00113 0.00017 0.17904 0.04009 0.00549 0.00406 0.00001 0.00000 0.00106 0.00015 0.17150 0.03818 0.00526 0.00385 0.00001 0.00000 0.00101 0.00015 0.16456 0.03644 0.00504 0.00365 0.00001 0.00000 0.00096 0.00014 0.15928 0.03512 0.00488 0.00351 0.00001 0.00000 0.00092 0.00013 0.14865 0.03249 0.00455 0.00322 0.00002 0.00000 0.00085 0.00012 0.14011 0.03040 0.00427 0.00299 0.00002 0.00000 0.00079 0.00011 0.13119 0.02823 0.00397 0.00276 0.00002 0.00000 0.00073 0.00010 0.12257 0.02616 0.00369 0.00254 0.00002 0.00001 0.00067 0.00010 0.11529 0.02443 0.00345 0.00235 0.00002 0.00001 0.00062 0.00009 0.10842 0.02281 0.00322 0.00218 0.00002 0.00001 0.00058 0.00008 0.10307 0.02155 0.00305 0.00205 0.00002 0.00001 0.00054 0.00008 0.09696 0.02014 0.00285 0.00190 0.00002 0.00001 0.00051 0.00007 0.09189 0.01897 0.00268 0.00178 0.00002 0.00001 0.00047 0.00007 0.08750 0.01796 0.00254 0.00168 0.00002 0.00001 0.00045 0.00007 0.08225 0.01677 0.00237 0.00156 0.00002 0.00001 0.00042 0.00006 0.07763 0.01573 0.00222 0.00145 0.00002 0.00001 0.00039 0.00006 0.07356 0.01482 0.00209 0.00136 0.00002 0.00001 0.00036 0.00005 0.06972 0.01396 0.00197 0.00127 0.00002 0.00001 0.00034 0.00005 0.06618 0.01318 0.00185 0.00120 0.00002 0.00001 0.00032 0.00005 0.06300 0.01248 0.00175 0.00113 0.00002 0.00001 0.00030 0.00005 0.06016 0.01186 0.00166 0.00107 0.00002 0.00001 0.00029 0.00004 0.05745 0.01128 0.00158 0.00101 0.00002 0.00001 0.00027 0.00004 0.05490 0.01073 0.00150 0.00096 0.00002 0.00001 0.00026 0.00004 0.05260 0.01023 0.00143 0.00091 0.00002 0.00001 0.00025 0.00004 0.05051 0.00979 0.00136 0.00086 0.00001 0.00001 0.00023 0.00004 0.04850 0.00936 0.00130 0.00082 0.00001 0.00001 0.00022 0.00004 0.04659 0.00896 0.00124 0.00079 0.00001 0.00001 0.00021 0.00003 0.04485 0.00859 0.00119 0.00075 0.00001 0.00001 0.00020 0.00003 0.04326 0.00826 0.00114 0.00072 0.00001 0.00001 0.00020 0.00003 0.04171 0.00793 0.00109 0.00069 0.00001 0.00001 0.00019 0.00003 0.22909 0.05081 0.00505 0.00502 0.00000 0.00000 0.00128 0.00010 0.21674 0.04770 0.00488 0.00467 0.00000 0.00000 0.00119 0.00010 0.19985 0.04349 0.00464 0.00421 0.00000 0.00000 0.00108 0.00009 0.18851 0.04070 0.00445 0.00391 0.00000 0.00000 0.00100 0.00008 0.17735 0.03798 0.00426 0.00362 0.00000 0.00000 0.00093 0.00008 0.16832 0.03579 0.00409 0.00339 0.00001 0.00000 0.00087 0.00007 0.16014 0.03384 0.00393 0.00319 0.00001 0.00000 0.00082 0.00007 0.15195 0.03189 0.00376 0.00298 0.00001 0.00000 0.00077 0.00007 0.14521 0.03030 0.00362 0.00282 0.00001 0.00000 0.00073 0.00006 0.13902 0.02885 0.00349 0.00267 0.00001 0.00000 0.00069 0.00006 0.13433 0.02776 0.00339 0.00256 0.00001 0.00000 0.00066 0.00006 0.12489 0.02558 0.00317 0.00234 0.00001 0.00000 0.00060 0.00005 0.11735 0.02385 0.00298 0.00216 0.00001 0.00000 0.00056 0.00005 0.10949 0.02207 0.00278 0.00199 0.00001 0.00000 0.00052 0.00005 0.10193 0.02038 0.00259 0.00182 0.00001 0.00000 0.00047 0.00005 0.09557 0.01897 0.00242 0.00168 0.00001 0.00000 0.00044 0.00004 0.08960 0.01765 0.00226 0.00155 0.00001 0.00001 0.00041 0.00004 0.08495 0.01664 0.00214 0.00145 0.00001 0.00001 0.00038 0.00004 0.07967 0.01549 0.00200 0.00134 0.00001 0.00001 0.00035 0.00004 0.07530 0.01455 0.00188 0.00126 0.00001 0.00001 0.00033 0.00004 0.07152 0.01375 0.00178 0.00118 0.00001 0.00001 0.00031 0.00003 0.06703 0.01279 0.00165 0.00109 0.00001 0.00001 0.00029 0.00003 0.06308 0.01196 0.00155 0.00101 0.00001 0.00001 0.00027 0.00003 0.05962 0.01124 0.00145 0.00095 0.00001 0.00001 0.00025 0.00003 0.05636 0.01056 0.00137 0.00088 0.00001 0.00001 0.00023 0.00003 0.05336 0.00995 0.00129 0.00083 0.00001 0.00001 0.00022 0.00003 0.05068 0.00940 0.00121 0.00078 0.00001 0.00001 0.00021 0.00003 0.04828 0.00891 0.00115 0.00073 0.00001 0.00001 0.00020 0.00003 0.04600 0.00845 0.00109 0.00069 0.00001 0.00001 0.00018 0.00002 0.04387 0.00802 0.00103 0.00065 0.00001 0.00001 0.00017 0.00002 0.04194 0.00763 0.00098 0.00062 0.00001 0.00001 0.00017 0.00002 0.04020 0.00729 0.00093 0.00059 0.00001 0.00001 0.00016 0.00002 0.03852 0.00695 0.00089 0.00056 0.00001 0.00001 0.00015 0.00002 0.03694 0.00664 0.00085 0.00053 0.00001 0.00001 0.00014 0.00002 0.03550 0.00636 0.00081 0.00051 0.00001 0.00001 0.00014 0.00002 0.03418 0.00610 0.00078 0.00049 0.00001 0.00001 0.00013 0.00002 0.03290 0.00585 0.00074 0.00046 0.00001 0.00001 0.00013 0.00002 0.16510 0.03176 0.00181 0.00260 0.00000 0.00000 0.00066 0.00002 0.15519 0.02962 0.00187 0.00241 0.00000 0.00000 0.00061 0.00002 0.14177 0.02675 0.00191 0.00215 0.00000 0.00000 0.00054 0.00002 0.13283 0.02486 0.00191 0.00198 0.00000 0.00000 0.00050 0.00002 0.12411 0.02303 0.00188 0.00182 0.00000 0.00000 0.00046 0.00002 0.11710 0.02158 0.00184 0.00169 0.00000 0.00000 0.00043 0.00002 0.11080 0.02028 0.00179 0.00158 0.00000 0.00000 0.00040 0.00002 0.10452 0.01900 0.00174 0.00147 0.00000 0.00000 0.00037 0.00002 0.09939 0.01796 0.00169 0.00138 0.00000 0.00000 0.00035 0.00002 0.09470 0.01702 0.00163 0.00130 0.00000 0.00000 0.00033 0.00002 0.09117 0.01631 0.00159 0.00124 0.00000 0.00000 0.00032 0.00002 0.08410 0.01491 0.00150 0.00112 0.00000 0.00000 0.00029 0.00002 0.07850 0.01381 0.00141 0.00103 0.00000 0.00000 0.00027 0.00002 0.07271 0.01268 0.00132 0.00094 0.00000 0.00000 0.00024 0.00002 0.06718 0.01162 0.00122 0.00085 0.00000 0.00000 0.00022 0.00002 0.06257 0.01074 0.00114 0.00078 0.00000 0.00000 0.00020 0.00002 0.05827 0.00993 0.00107 0.00072 0.00000 0.00000 0.00019 0.00002 0.05494 0.00930 0.00101 0.00067 0.00000 0.00000 0.00017 0.00002 0.05119 0.00861 0.00094 0.00061 0.00000 0.00000 0.00016 0.00002 0.04811 0.00804 0.00088 0.00057 0.00000 0.00000 0.00015 0.00002 0.04546 0.00755 0.00083 0.00053 0.00000 0.00000 0.00014 0.00002 0.04233 0.00698 0.00077 0.00049 0.00000 0.00000 0.00013 0.00002 0.03960 0.00649 0.00071 0.00045 0.00000 0.00000 0.00012 0.00002 0.03721 0.00606 0.00067 0.00042 0.00000 0.00000 0.00011 0.00002 0.03498 0.00566 0.00062 0.00039 0.00000 0.00000 0.00010 0.00002 0.03294 0.00530 0.00059 0.00036 0.00000 0.00000 0.00010 0.00002 0.03113 0.00499 0.00055 0.00034 0.00000 0.00000 0.00009 0.00001 0.02952 0.00470 0.00052 0.00032 0.00000 0.00000 0.00008 0.00001 0.02800 0.00444 0.00049 0.00030 0.00000 0.00000 0.00008 0.00001 0.02658 0.00419 0.00046 0.00028 0.00000 0.00000 0.00007 0.00001 0.02530 0.00397 0.00044 0.00026 0.00000 0.00000 0.00007 0.00001 0.02415 0.00378 0.00042 0.00025 0.00000 0.00000 0.00007 0.00001 0.02305 0.00359 0.00039 0.00024 0.00000 0.00000 0.00006 0.00001 0.02202 0.00342 0.00038 0.00022 0.00000 0.00000 0.00006 0.00001 0.02108 0.00326 0.00036 0.00021 0.00000 0.00000 0.00006 0.00001 0.02022 0.00311 0.00034 0.00020 0.00000 0.00000 0.00005 0.00001 0.01940 0.00298 0.00033 0.00019 0.00000 0.00000 0.00005 0.00001 0.11086 0.01806 0.00060 0.00117 0.00000 0.00000 0.00030 0.00004 0.10348 0.01672 0.00069 0.00107 0.00000 0.00000 0.00028 0.00004 0.09357 0.01495 0.00077 0.00095 0.00000 0.00000 0.00025 0.00003 0.08704 0.01379 0.00079 0.00086 0.00000 0.00000 0.00022 0.00003 0.08072 0.01268 0.00080 0.00079 0.00000 0.00000 0.00021 0.00003 0.07568 0.01180 0.00079 0.00073 0.00000 0.00000 0.00019 0.00003 0.07117 0.01102 0.00078 0.00067 0.00000 0.00000 0.00018 0.00003 0.06672 0.01026 0.00076 0.00062 0.00000 0.00000 0.00016 0.00003 0.06310 0.00964 0.00074 0.00058 0.00000 0.00000 0.00015 0.00003 0.05981 0.00909 0.00072 0.00054 0.00000 0.00000 0.00014 0.00003 0.05734 0.00868 0.00070 0.00052 0.00000 0.00000 0.00014 0.00003 0.05245 0.00786 0.00066 0.00046 0.00000 0.00000 0.00012 0.00002 0.04860 0.00723 0.00062 0.00042 0.00000 0.00000 0.00011 0.00002 0.04466 0.00658 0.00058 0.00038 0.00000 0.00000 0.00010 0.00002 0.04093 0.00598 0.00053 0.00034 0.00000 0.00000 0.00009 0.00002 0.03784 0.00549 0.00050 0.00031 0.00000 0.00000 0.00008 0.00002 0.03498 0.00503 0.00046 0.00028 0.00000 0.00000 0.00008 0.00002 0.03279 0.00469 0.00043 0.00026 0.00000 0.00000 0.00007 0.00002 0.03033 0.00431 0.00040 0.00024 0.00000 0.00000 0.00006 0.00002 0.02833 0.00400 0.00037 0.00022 0.00000 0.00000 0.00006 0.00002 0.02662 0.00373 0.00035 0.00020 0.00000 0.00000 0.00006 0.00001 0.02461 0.00343 0.00032 0.00019 0.00000 0.00000 0.00005 0.00001 0.02287 0.00316 0.00030 0.00017 0.00000 0.00000 0.00005 0.00001 0.02136 0.00294 0.00028 0.00016 0.00000 0.00000 0.00004 0.00001 0.01996 0.00273 0.00026 0.00015 0.00000 0.00000 0.00004 0.00001 0.01869 0.00254 0.00024 0.00013 0.00000 0.00000 0.00004 0.00001 0.01756 0.00237 0.00022 0.00012 0.00000 0.00000 0.00003 0.00001 0.01657 0.00223 0.00021 0.00012 0.00000 0.00000 0.00003 0.00001 0.01563 0.00209 0.00020 0.00011 0.00000 0.00000 0.00003 0.00001 0.01477 0.00197 0.00019 0.00010 0.00000 0.00000 0.00003 0.00001 0.01399 0.00185 0.00018 0.00010 0.00000 0.00000 0.00003 0.00001 0.01330 0.00175 0.00017 0.00009 0.00000 0.00000 0.00003 0.00001 0.01264 0.00166 0.00016 0.00008 0.00000 0.00000 0.00002 0.00001 0.01202 0.00157 0.00015 0.00008 0.00000 0.00000 0.00002 0.00001 0.01146 0.00149 0.00014 0.00008 0.00000 0.00000 0.00002 0.00001 0.01095 0.00142 0.00013 0.00007 0.00000 0.00000 0.00002 0.00001 0.01046 0.00135 0.00013 0.00007 0.00000 0.00000 0.00002 0.00001 0.06781 0.00906 0.00019 0.00043 0.00000 0.00000 0.00012 0.00004 0.06280 0.00832 0.00024 0.00040 0.00000 0.00000 0.00011 0.00004 0.05614 0.00735 0.00029 0.00034 0.00000 0.00000 0.00010 0.00004 0.05180 0.00672 0.00031 0.00031 0.00000 0.00000 0.00009 0.00003 0.04763 0.00613 0.00031 0.00028 0.00000 0.00000 0.00008 0.00003 0.04434 0.00566 0.00031 0.00026 0.00000 0.00000 0.00007 0.00003 0.04142 0.00525 0.00031 0.00024 0.00000 0.00000 0.00007 0.00003 0.03856 0.00486 0.00030 0.00022 0.00000 0.00000 0.00006 0.00002 0.03624 0.00454 0.00029 0.00020 0.00000 0.00000 0.00006 0.00002 0.03416 0.00425 0.00028 0.00019 0.00000 0.00000 0.00005 0.00002 0.03260 0.00404 0.00027 0.00018 0.00000 0.00000 0.00005 0.00002 0.02953 0.00362 0.00025 0.00016 0.00000 0.00000 0.00004 0.00002 0.02714 0.00330 0.00024 0.00014 0.00000 0.00000 0.00004 0.00002 0.02472 0.00298 0.00022 0.00013 0.00000 0.00000 0.00004 0.00002 0.02245 0.00268 0.00020 0.00011 0.00000 0.00000 0.00003 0.00002 0.02058 0.00244 0.00018 0.00010 0.00000 0.00000 0.00003 0.00001 0.01887 0.00222 0.00017 0.00009 0.00000 0.00000 0.00003 0.00001 0.01757 0.00206 0.00016 0.00009 0.00000 0.00000 0.00002 0.00001 0.01613 0.00187 0.00015 0.00008 0.00000 0.00000 0.00002 0.00001 0.01495 0.00172 0.00013 0.00007 0.00000 0.00000 0.00002 0.00001 0.01396 0.00160 0.00013 0.00006 0.00000 0.00000 0.00002 0.00001 0.01280 0.00146 0.00012 0.00006 0.00000 0.00000 0.00002 0.00001 0.01181 0.00134 0.00011 0.00005 0.00000 0.00000 0.00002 0.00001 0.01096 0.00123 0.00010 0.00005 0.00000 0.00000 0.00001 0.00001 0.01017 0.00114 0.00009 0.00004 0.00000 0.00000 0.00001 0.00001 0.00946 0.00105 0.00008 0.00004 0.00000 0.00000 0.00001 0.00001 0.00883 0.00098 0.00008 0.00004 0.00000 0.00000 0.00001 0.00001 0.00829 0.00091 0.00007 0.00004 0.00000 0.00000 0.00001 0.00001 0.00777 0.00085 0.00007 0.00003 0.00000 0.00000 0.00001 0.00001 0.00730 0.00079 0.00006 0.00003 0.00000 0.00000 0.00001 0.00000 0.00688 0.00074 0.00006 0.00003 0.00000 0.00000 0.00001 0.00000 0.00651 0.00070 0.00006 0.00003 0.00000 0.00000 0.00001 0.00000 0.00615 0.00066 0.00005 0.00003 0.00000 0.00000 0.00001 0.00000 0.00582 0.00062 0.00005 0.00002 0.00000 0.00000 0.00001 0.00000 0.00553 0.00059 0.00005 0.00002 0.00000 0.00000 0.00001 0.00000 0.00526 0.00056 0.00004 0.00002 0.00000 0.00000 0.00001 0.00000 0.00500 0.00053 0.00004 0.00002 0.00000 0.00000 0.00001 0.00000 0.03634 0.00380 0.00005 0.00013 0.00000 0.00000 0.00004 0.00003 0.03335 0.00346 0.00007 0.00011 0.00000 0.00000 0.00003 0.00002 0.02942 0.00301 0.00008 0.00010 0.00000 0.00000 0.00003 0.00002 0.02689 0.00273 0.00008 0.00009 0.00000 0.00000 0.00003 0.00002 0.02449 0.00246 0.00008 0.00008 0.00000 0.00000 0.00002 0.00002 0.02261 0.00226 0.00008 0.00007 0.00000 0.00000 0.00002 0.00002 0.02095 0.00208 0.00008 0.00006 0.00000 0.00000 0.00002 0.00001 0.01934 0.00191 0.00008 0.00006 0.00000 0.00000 0.00002 0.00001 0.01806 0.00177 0.00007 0.00005 0.00000 0.00000 0.00002 0.00001 0.01690 0.00164 0.00007 0.00005 0.00000 0.00000 0.00002 0.00001 0.01605 0.00155 0.00007 0.00005 0.00000 0.00000 0.00001 0.00001 0.01437 0.00138 0.00007 0.00004 0.00000 0.00000 0.00001 0.00001 0.01309 0.00125 0.00006 0.00004 0.00000 0.00000 0.00001 0.00001 0.01179 0.00111 0.00006 0.00003 0.00000 0.00000 0.00001 0.00001 0.01060 0.00099 0.00005 0.00003 0.00000 0.00000 0.00001 0.00001 0.00962 0.00089 0.00005 0.00003 0.00000 0.00000 0.00001 0.00001 0.00874 0.00080 0.00004 0.00002 0.00000 0.00000 0.00001 0.00001 0.00807 0.00074 0.00004 0.00002 0.00000 0.00000 0.00001 0.00001 0.00734 0.00067 0.00004 0.00002 0.00000 0.00000 0.00001 0.00000 0.00675 0.00061 0.00004 0.00002 0.00000 0.00000 0.00001 0.00000 0.00626 0.00056 0.00003 0.00002 0.00000 0.00000 0.00000 0.00000 0.00569 0.00051 0.00003 0.00001 0.00000 0.00000 0.00000 0.00000 0.00520 0.00046 0.00003 0.00001 0.00000 0.00000 0.00000 0.00000 0.00478 0.00042 0.00003 0.00001 0.00000 0.00000 0.00000 0.00000 0.00441 0.00038 0.00002 0.00001 0.00000 0.00000 0.00000 0.00000 0.00407 0.00035 0.00002 0.00001 0.00000 0.00000 0.00000 0.00000 0.00377 0.00033 0.00002 0.00001 0.00000 0.00000 0.00000 0.00000 0.00351 0.00030 0.00002 0.00001 0.00000 0.00000 0.00000 0.00000 0.00327 0.00028 0.00002 0.00001 0.00000 0.00000 0.00000 0.00000 0.00305 0.00026 0.00002 0.00001 0.00000 0.00000 0.00000 0.00000 0.00286 0.00024 0.00002 0.00001 0.00000 0.00000 0.00000 0.00000 0.00269 0.00023 0.00001 0.00001 0.00000 0.00000 0.00000 0.00000 0.00253 0.00021 0.00001 0.00001 0.00000 0.00000 0.00000 0.00000 0.00238 0.00020 0.00001 0.00001 0.00000 0.00000 0.00000 0.00000 0.00225 0.00019 0.00001 0.00001 0.00000 0.00000 0.00000 0.00000 0.00213 0.00018 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00201 0.00017 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00478 0.00023 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00427 0.00020 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00363 0.00017 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00323 0.00015 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00286 0.00013 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00257 0.00012 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00233 0.00011 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00210 0.00010 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00192 0.00009 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00177 0.00008 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00165 0.00007 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00143 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00127 0.00006 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00111 0.00005 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00097 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00085 0.00004 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00075 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00068 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00060 0.00003 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00054 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00049 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00043 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00039 0.00002 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00035 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00031 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00028 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00026 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00023 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00021 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00020 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00018 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00017 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00015 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00014 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00013 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00012 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00011 0.00001 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 ����������������herwig++-2.6.0.orig/PDF/MRST.icc��������������������������������������������������������������������0000644�0001750�0001750�00000003164�11754474775�016662� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MRST.icc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the inlined member functions of // the MRST class. // namespace Herwig { inline IBPtr MRST::clone() const { return new_ptr(*this); } inline IBPtr MRST::fullclone() const { return new_ptr(*this); } inline double MRST::polderivative(double x1, double x2, double x3, double y1, double y2, double y3) const { // returns the estimate of the derivative at x2 obtained by a polynomial // interpolation using the three points (x_i,y_i) return (x3*x3*(y1-y2) - 2.0*x2*(x3*(y1-y2) + x1*(y2-y3)) + x2*x2*(y1-y3) + x1*x1*(y2-y3))/((x1-x2)*(x1-x3)*(x2-x3)); } inline int MRST::locate(double xx[],int n,double x) const { // returns an integer j such that x lies inbetween xx[j] and xx[j+1]. unit // offset of increasing ordered array xx assumed. n is the length of the // array (xx[n] highest element) int ju,jm,jl(0),j; ju=n+1; while (ju-jl>1) { jm=(ju+jl)/2; // compute a mid point. if(x >= xx[jm]) jl=jm; else ju=jm; } if(x==xx[1]) j=1; else if(x==xx[n]) j=n-1; else j=jl; return j; } inline double MRST::lookup(PDFFlavour i, int n, int m, double u, double t) const { double value = 0.0; for(int l=4;l>=1;l--) { value=t*value+((c[i][n][m][l][4]*u+c[i][n][m][l][3])*u + c[i][n][m][l][2])*u+c[i][n][m][l][1]; } return value; } } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/HwRemDecayer.h��������������������������������������������������������������0000644�0001750�0001750�00000044101�11754474775�020101� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // HwRemDecayer.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_HwRemDecayer_H #define HERWIG_HwRemDecayer_H // // This is the declaration of the HwRemDecayer class. // #include "ThePEG/PDT/RemnantDecayer.h" #include "ThePEG/Handlers/EventHandler.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/EventRecord/SubProcess.h" #include "ThePEG/PDF/BeamParticleData.h" #include "Herwig++/Shower/Couplings/ShowerAlpha.h" #include "Herwig++/PDT/StandardMatchers.h" #include "ThePEG/PDT/StandardMatchers.h" #include "HwRemDecayer.fh" namespace Herwig { using namespace ThePEG; /** * The HwRemDecayer class is responsible for the decay of the remnants. Additional * secondary scatters have to be evolved backwards to a gluon, the * first/hard interaction has to be evolved back to a valence quark. * This is all generated inside this class, * which main methods are then called by the ShowerHandler. * * A simple forced splitting algorithm is used. * This takes the Remnant object produced from the PDF and backward * evolution (hadron - parton) and produce partons with the remaining * flavours and with the correct colour connections. * * The algorithim operates by starting with the parton which enters the hard process. * If this is from the sea there is a forced branching to produce the antiparticle * from a gluon branching. If the parton entering the hard process was a gluon, or * a gluon was produced from the first step of the algorithm, there is then a further * branching back to a valence parton. After these partons have been produced a quark or * diquark is produced to give the remaining valence content of the incoming hadron. * * The forced branching are generated using a scale between QSpac and EmissionRange times * the minimum scale. The energy fractions are then distributed using * \f[\frac{\alpha_S}{2\pi}\frac{P(z)}{z}f(x/z,\tilde{q})\f] * with the massless splitting functions. * * \author Manuel B\"ahr * * @see \ref HwRemDecayerInterfaces "The interfaces" * defined for HwRemDecayer. */ class HwRemDecayer: public RemnantDecayer { public: /** Typedef to store information about colour partners */ typedef vector<pair<tPPtr, tPPtr> > PartnerMap; public: /** * The default constructor. */ inline HwRemDecayer() : ptmin_(-1.*GeV), maxtrySoft_(10), colourDisrupt_(1.0), _kinCutoff(0.75*GeV), _forcedSplitScale(2.5*GeV), _range(1.1), _zbin(0.05),_ybin(0.), _nbinmax(100), DISRemnantOpt_(0), pomeronStructure_(0), mg_(ZERO) {} /** @name Virtual functions required by the Decayer class. */ //@{ /** * Check if this decayer can perfom the decay specified by the * given decay mode. * @return true if this decayer can handle the given mode, otherwise false. */ virtual bool accept(const DecayMode &) const { return true; } /** * Return true if this decayer can handle the extraction of the \a * extracted parton from the given \a particle. */ virtual bool canHandle(tcPDPtr particle, tcPDPtr parton) const; /** * Return true if this decayed can extract more than one parton from * a particle. */ virtual bool multiCapable() const { return true; } /** * Perform a decay for a given DecayMode and a given Particle instance. * @param dm the DecayMode describing the decay. * @param p the Particle instance to be decayed. * @param step the step we are working on. * @return a ParticleVector containing the decay products. */ virtual ParticleVector decay(const DecayMode & dm, const Particle & p, Step & step) const; //@} public: /** * struct that is used to catch exceptions which are thrown * due to energy conservation issues of additional soft scatters */ struct ExtraSoftScatterVeto {}; /** @name Functions used by the persistent I/O system. */ //@{ /** * Function used to write out object persistently. * @param os the persistent output stream written to. */ void persistentOutput(PersistentOStream & os) const; /** * Function used to read in object persistently. * @param is the persistent input stream read from. * @param version the version number of the object when written. */ void persistentInput(PersistentIStream & is, int version); //@} /** * The standard Init function used to initialize the interfaces. * Called exactly once for each class by the class description system * before the main function starts or * when this class is dynamically loaded. */ static void Init(); /** * Do several checks and initialization, for remnantdecay inside ShowerHandler. */ void initialize(pair<tRemPPtr, tRemPPtr> rems, tPPair beam, Step & step, Energy forcedSplitScale); /** * Initialize the soft scattering machinery. * @param ptmin = the pt cutoff used in the UE model * @param beta = slope of the soft pt-spectrum */ void initSoftInteractions(Energy ptmin, InvEnergy2 beta); /** * Perform the acual forced splitting. * @param partons is a pair of ThePEG::Particle pointers which store the final * partons on which the shower ends. * @param pdfs are pointers to the pdf objects for both beams * @param first is a flage wether or not this is the first or a secondary interation */ void doSplit(pair<tPPtr, tPPtr> partons, pair<tcPDFPtr, tcPDFPtr> pdfs, bool first); /** * Perform the final creation of the diquarks. Set the remnant masses and do * all colour connections. * @param colourDisrupt = variable to control how many "hard" scatters * are colour isolated * @param softInt = parameter for the number of soft scatters */ void finalize(double colourDisrupt=0.0, unsigned int softInt=0); /** * Find the children */ void findChildren(tPPtr,vector<PPtr> &) const; protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const {return new_ptr(*this);} /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const {return new_ptr(*this);} //@} protected: /** @name Standard Interfaced functions. */ //@{ /** * Initialize this object after the setup phase before saving an * EventGenerator to disk. * @throws InitException if object could not be initialized properly. */ virtual void doinit() { Interfaced::doinit(); _ybin=0.25/_zbin; mg_ = getParticleData(ParticleID::g)->constituentMass(); } //@} private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<HwRemDecayer> initHwRemDecayer; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ HwRemDecayer & operator=(const HwRemDecayer &); public: /** * Simple struct to store info about baryon quark and di-quark * constituents. */ struct HadronContent { /** * manually extract the valence flavour \a id. */ inline void extract(int id) { for(unsigned int i=0; i<flav.size(); i++) { if(id == sign*flav[i]){ if(hadron->id() == ParticleID::gamma || (hadron->id() == ParticleID::pomeron && pomeronStructure==1) || hadron->id() == ParticleID::reggeon) { flav[0] = id; flav[1] = -id; extracted = 0; flav.resize(2); } else if (hadron->id() == ParticleID::pomeron && pomeronStructure==0) { extracted = 0; } else { extracted = i; } break; } } } /** * Return a proper particle ID assuming that \a id has been removed * from the hadron. */ long RemID() const; /** * Method to determine whether \a parton is a quark from the sea. * @return TRUE if \a parton is neither a valence quark nor a gluon. */ bool isSeaQuark(tcPPtr parton) const { return ((parton->id() != ParticleID::g) && ( !isValenceQuark(parton) ) ); } /** * Method to determine whether \a parton is a valence quark. */ bool isValenceQuark(tcPPtr parton) const { return isValenceQuark(parton->id()); } /** * Method to determine whether \a parton is a quark from the sea. * @return TRUE if \a parton is neither a valence quark nor a gluon. */ bool isSeaQuarkData(tcPDPtr partonData) const { return ((partonData->id() != ParticleID::g) && ( !isValenceQuarkData(partonData) ) ); } /** * Method to determine whether \a parton is a valence quark. */ bool isValenceQuarkData(tcPDPtr partonData) const { int id(sign*partonData->id()); return find(flav.begin(),flav.end(),id) != flav.end(); } /** * Method to determine whether \a parton is a valence quark. */ bool isValenceQuark(int id) const { return find(flav.begin(),flav.end(),sign*id) != flav.end(); } /** The valence flavours of the corresponding baryon. */ vector<int> flav; /** The array index of the extracted particle. */ int extracted; /** -1 if the particle is an anti-particle. +1 otherwise. */ int sign; /** The ParticleData objects of the hadron */ tcPDPtr hadron; /** Pomeron treatment */ unsigned int pomeronStructure; }; /** * Return the hadron content objects for the incoming particles. */ const pair<HadronContent, HadronContent>& content() const { return theContent; } /** * Return a HadronContent struct from a PPtr to a hadron. */ HadronContent getHadronContent(tcPPtr hadron) const; /** * Set the hadron contents. */ void setHadronContent(tPPair beam) { theContent.first = getHadronContent(beam.first); theContent.second = getHadronContent(beam.second); } private: /** * Do the forced Splitting of the Remnant with respect to the * extracted parton \a parton. * @param parton = PPtr to the parton going into the subprocess. * @param content = HadronContent struct to keep track of flavours. * @param rem = Pointer to the ThePEG::RemnantParticle. * @param used = Momentum vector to keep track of remaining momenta. * @param partners = Vector of pairs filled with tPPtr to the particles * which should be colour connected. * @param pdf pointer to the PDF Object which is used for this particle * @param first = Flag for the first interaction. */ void split(tPPtr parton, HadronContent & content, tRemPPtr rem, Lorentz5Momentum & used, PartnerMap & partners, tcPDFPtr pdf, bool first); /** * Merge the colour lines of two particles * @param p1 = Pointer to particle 1 * @param p2 = Pointer to particle 2 * @param anti = flag to indicate, if (anti)colour was extracted as first parton. */ void mergeColour(tPPtr p1, tPPtr p2, bool anti) const; /** * Set the colour connections. * @param partners = Object that holds the information which particles to connect. * @param anti = flag to indicate, if (anti)colour was extracted as first parton. * @param disrupt parameter for disruption of the colour structure */ void fixColours(PartnerMap partners, bool anti, double disrupt) const; /** * Set the momenta of the Remnants properly and boost the decay particles. */ void setRemMasses() const; /** * This creates a parton from the remaining flavours of the hadron. The * last parton used was a valance parton, so only 2 (or 1, if meson) flavours * remain to be used. */ PPtr finalSplit(const tRemPPtr rem, long remID, Lorentz5Momentum usedMomentum) const { // Create the remnant and set its momentum, also reset all of the decay // products from the hadron PPtr remnant = new_ptr(Particle(getParticleData(remID))); Lorentz5Momentum prem(rem->momentum()-usedMomentum); prem.setMass(getParticleData(remID)->constituentMass()); prem.rescaleEnergy(); remnant->set5Momentum(prem); // Add the remnant to the step, but don't do colour connections thestep->addDecayProduct(rem,remnant,false); return remnant; } /** * This takes the particle and find a splitting for np -> p + child and * creates the correct kinematics and connects for such a split. This * Splitting has an upper bound on qtilde given by the energy argument * @param rem The Remnant * @param child The PDG code for the outgoing particle * @param oldQ The maximum scale for the evolution * @param oldx The fraction of the hadron's momentum carried by the last parton * @param pf The momentum of the last parton at input and after branching at output * @param p The total emitted momentum * @param content The content of the hadron */ PPtr forceSplit(const tRemPPtr rem, long child, Energy &oldQ, double &oldx, Lorentz5Momentum &pf, Lorentz5Momentum &p, HadronContent & content) const; /** @name Soft interaction methods. */ //@{ /** * Produce pt values according to dN/dp_T = N p_T exp(-beta_*p_T^2) */ Energy softPt() const; /** * Get the 2 pairs of 5Momenta for the scattering. Needs calling of * initSoftInteractions. */ void softKinematics(Lorentz5Momentum &r1, Lorentz5Momentum &r2, Lorentz5Momentum &g1, Lorentz5Momentum &g2) const; /** * Create N soft gluon interactions */ void doSoftInteractions(unsigned int N); /** * Method to add a particle to the step * @param parent = pointer to the parent particle * @param id = Particle ID of the newly created particle * @param p = Lorentz5Momentum of the new particle */ tPPtr addParticle(tcPPtr parent, long id, Lorentz5Momentum p) const; //@} /** * A flag which indicates, whether the extracted valence quark was a * anti particle. */ pair<bool, bool> theanti; /** * variable to sum up the x values of the extracted particles */ pair<double, double> theX; /**Pair of HadronContent structs to know about the quark content of the beams*/ pair<HadronContent, HadronContent> theContent; /**Pair of Lorentz5Momentum to keep track of the forced splitting product momenta*/ pair<Lorentz5Momentum, Lorentz5Momentum> theUsed; /** * Pair of PartnerMap's to store the particles, which will be colour * connected in the end. */ pair<PartnerMap, PartnerMap> theMaps; /** * Variable to hold a pointer to the current step. The variable is used to * determine, wether decay(const DecayMode & dm, const Particle & p, Step & step) * has been called in this event or not. */ StepPtr thestep; /** * Pair of Remnant pointers. This is needed to boost * in the Remnant-Remnant CMF after all have been decayed. */ pair<RemPPtr, RemPPtr> theRems; /** * The beam particle data for the current incoming hadron */ mutable tcPPtr theBeam; /** * the beam data */ mutable Ptr<BeamParticleData>::const_pointer theBeamData; /** * The PDF for the current initial-state shower */ mutable tcPDFPtr _pdf; private: /** @name Soft interaction variables. */ //@{ /** * Pair of soft Remnant pointers, i.e. Diquarks. */ tPPair softRems_; /** * ptcut of the UE model */ Energy ptmin_; /** * slope of the soft pt-spectrum: dN/dp_T = N p_T exp(-beta*p_T^2) */ InvEnergy2 beta_; /** * Maximum number of attempts for the regeneration of an additional * soft scattering, before the number of scatters is reduced. */ unsigned int maxtrySoft_; /** * Variable to store the relative number of colour disrupted * connections to additional soft subprocesses. */ double colourDisrupt_; //@} /** @name Forced splitting variables. */ //@{ /** * The kinematic cut-off */ Energy _kinCutoff; /** * The PDF freezing scale as set in ShowerHandler */ Energy _forcedSplitScale; /** * Range for emission */ double _range; /** * Size of the bins in z for the interpolation */ double _zbin; /** * Size of the bins in y for the interpolation */ double _ybin; /** * Maximum number of bins for the z interpolation */ int _nbinmax; /** * Pointer to the object calculating the QCD coupling */ ShowerAlphaPtr _alpha; /** * Option for the DIS remnant */ unsigned int DISRemnantOpt_; /** * Option for the treatment of the pomeron structure */ unsigned int pomeronStructure_; //@} /** * The gluon constituent mass. */ Energy mg_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of HwRemDecayer. */ template <> struct BaseClassTrait<Herwig::HwRemDecayer,1> { /** Typedef of the first base class of HwRemDecayer. */ typedef RemnantDecayer NthBase; }; /** This template specialization informs ThePEG about the name of * the HwRemDecayer class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::HwRemDecayer> : public ClassTraitsBase<Herwig::HwRemDecayer> { /** Return a platform-independent class name */ static string className() { return "Herwig::HwRemDecayer"; } /** * The name of a file containing the dynamic library where the class * HwRemDecayer is implemented. It may also include several, space-separated, * libraries if the class HwRemDecayer depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_HwRemDecayer_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/HwRemDecayer.fh�������������������������������������������������������������0000644�0001750�0001750�00000000475�11754474775�020255� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the forward declaration of the HwRemDecayer class. // #ifndef HERWIG_HwRemDecayer_FH #define HERWIG_HwRemDecayer_FH #include "ThePEG/Config/Pointers.h" namespace Herwig { class HwRemDecayer; } namespace ThePEG { ThePEG_DECLARE_POINTERS(Herwig::HwRemDecayer,HwRemDecPtr); } #endif ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/diffraction/����������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464205�017666� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/diffraction/2006/�����������������������������������������������������������0000755�0001750�0001750�00000000000�11756464205�020255� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/diffraction/2006/h12006jetspdf_singlet_fitA.data����������������������������0000644�0001750�0001750�00000121501�11754474775�026013� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������-3.000000e+00 -2.969741e+00 -2.939482e+00 -2.909223e+00 -2.878964e+00 -2.848705e+00 -2.818446e+00 -2.788187e+00 -2.757928e+00 -2.727670e+00 -2.697411e+00 -2.667152e+00 -2.636893e+00 -2.606634e+00 -2.576375e+00 -2.546116e+00 -2.515857e+00 -2.485598e+00 -2.455339e+00 -2.425080e+00 -2.394821e+00 -2.364562e+00 -2.334303e+00 -2.304044e+00 -2.273785e+00 -2.243526e+00 -2.213268e+00 -2.183009e+00 -2.152750e+00 -2.122491e+00 -2.092232e+00 -2.061973e+00 -2.031714e+00 -2.001455e+00 -1.971196e+00 -1.940937e+00 -1.910678e+00 -1.880419e+00 -1.850160e+00 -1.819901e+00 -1.789642e+00 -1.759383e+00 -1.729124e+00 -1.698866e+00 -1.668607e+00 -1.638348e+00 -1.608089e+00 -1.577830e+00 -1.547571e+00 -1.517312e+00 -1.487053e+00 -1.456794e+00 -1.426535e+00 -1.396276e+00 -1.366017e+00 -1.335758e+00 -1.305499e+00 -1.275240e+00 -1.244981e+00 -1.214722e+00 -1.184464e+00 -1.154205e+00 -1.123946e+00 -1.093687e+00 -1.063428e+00 -1.033169e+00 -1.002910e+00 -9.726509e-01 -9.423920e-01 -9.121330e-01 -8.818741e-01 -8.516152e-01 -8.213562e-01 -7.910973e-01 -7.608383e-01 -7.305794e-01 -7.003205e-01 -6.700615e-01 -6.398026e-01 -6.095436e-01 -5.792847e-01 -5.490257e-01 -5.187668e-01 -4.885079e-01 -4.582489e-01 -4.279900e-01 -3.977310e-01 -3.674721e-01 -3.372132e-01 -3.069542e-01 -2.766953e-01 -2.464363e-01 -2.161774e-01 -1.859185e-01 -1.556595e-01 -1.254006e-01 -9.514163e-02 -6.488269e-02 -3.462375e-02 -4.364805e-03 1.000000e+00 1.426867e+00 2.035949e+00 2.905029e+00 4.145090e+00 5.914492e+00 8.439194e+00 1.204161e+01 1.718177e+01 2.451610e+01 3.498122e+01 4.991354e+01 7.121999e+01 1.016215e+02 1.450003e+02 2.068961e+02 2.952133e+02 4.212301e+02 6.010393e+02 8.576031e+02 1.223686e+03 1.746037e+03 2.491362e+03 3.554842e+03 5.072287e+03 7.237479e+03 1.032692e+04 1.473514e+04 2.102509e+04 3.000000e+04 -9.069900e-03 -9.000100e-03 -8.930200e-03 -8.860200e-03 -8.790200e-03 -8.720000e-03 -8.649700e-03 -8.579400e-03 -8.509000e-03 -8.438500e-03 -8.367900e-03 -8.297200e-03 -8.226400e-03 -8.155600e-03 -8.084700e-03 -8.013700e-03 -7.942600e-03 -7.871500e-03 -7.800200e-03 -7.729000e-03 -7.657700e-03 -7.586300e-03 -7.514900e-03 -7.443400e-03 -7.372000e-03 -7.300500e-03 -7.229000e-03 -7.157500e-03 -7.086100e-03 -7.014700e-03 -6.943300e-03 -6.872000e-03 -6.800700e-03 -6.729600e-03 -6.658500e-03 -6.587600e-03 -6.516700e-03 -6.446100e-03 -6.375600e-03 -6.305300e-03 -6.235200e-03 -6.165200e-03 -6.095500e-03 -6.025900e-03 -5.956600e-03 -5.887400e-03 -5.818300e-03 -5.749300e-03 -5.680500e-03 -5.611500e-03 -5.542500e-03 -5.473200e-03 -5.403500e-03 -5.333300e-03 -5.262200e-03 -5.190000e-03 -5.116400e-03 -5.040800e-03 -4.962800e-03 -4.881800e-03 -4.797000e-03 -4.707400e-03 -4.612000e-03 -4.509500e-03 -4.398300e-03 -4.276700e-03 -4.142400e-03 -3.993000e-03 -3.825400e-03 -3.636200e-03 -3.421200e-03 -3.175600e-03 -2.894000e-03 -2.569700e-03 -2.195200e-03 -1.762400e-03 -1.260100e-03 -6.777100e-04 -1.999700e-06 7.825800e-04 1.691700e-03 2.745000e-03 3.962700e-03 5.367800e-03 6.984900e-03 8.839700e-03 1.095800e-02 1.336700e-02 1.608500e-02 1.913100e-02 2.250600e-02 2.619300e-02 3.014500e-02 3.425400e-02 3.831600e-02 4.196800e-02 4.453200e-02 4.461300e-02 3.829100e-02 5.364800e-03 -3.308500e-03 -3.283000e-03 -3.257500e-03 -3.232000e-03 -3.206400e-03 -3.180800e-03 -3.155200e-03 -3.129500e-03 -3.103800e-03 -3.078100e-03 -3.052300e-03 -3.026500e-03 -3.000700e-03 -2.974900e-03 -2.949000e-03 -2.923000e-03 -2.897100e-03 -2.871100e-03 -2.845100e-03 -2.819100e-03 -2.793000e-03 -2.766900e-03 -2.740800e-03 -2.714600e-03 -2.688500e-03 -2.662300e-03 -2.636100e-03 -2.609800e-03 -2.583600e-03 -2.557300e-03 -2.531000e-03 -2.504700e-03 -2.478400e-03 -2.452000e-03 -2.425600e-03 -2.399100e-03 -2.372700e-03 -2.346100e-03 -2.319500e-03 -2.292800e-03 -2.265900e-03 -2.238900e-03 -2.211800e-03 -2.184400e-03 -2.156700e-03 -2.128700e-03 -2.100200e-03 -2.071200e-03 -2.041600e-03 -2.011200e-03 -1.979900e-03 -1.947400e-03 -1.913600e-03 -1.878100e-03 -1.840600e-03 -1.800800e-03 -1.758100e-03 -1.712000e-03 -1.661900e-03 -1.607000e-03 -1.546400e-03 -1.479100e-03 -1.403900e-03 -1.319200e-03 -1.223500e-03 -1.114800e-03 -9.907700e-04 -8.487600e-04 -6.856900e-04 -4.979500e-04 -2.813700e-04 -3.116500e-05 2.581700e-04 5.930500e-04 9.807900e-04 1.429500e-03 1.949100e-03 2.550100e-03 3.244500e-03 4.046400e-03 4.970100e-03 6.032700e-03 7.251700e-03 8.646500e-03 1.023700e-02 1.204300e-02 1.408400e-02 1.637500e-02 1.892700e-02 2.174200e-02 2.480500e-02 2.807800e-02 3.148700e-02 3.489200e-02 3.805600e-02 4.057800e-02 4.174800e-02 4.020500e-02 3.258200e-02 4.517000e-03 2.541800e-03 2.520400e-03 2.499100e-03 2.477800e-03 2.456500e-03 2.435300e-03 2.414000e-03 2.392700e-03 2.371400e-03 2.350200e-03 2.328900e-03 2.307700e-03 2.286500e-03 2.265300e-03 2.244100e-03 2.222900e-03 2.201700e-03 2.180600e-03 2.159500e-03 2.138400e-03 2.117300e-03 2.096300e-03 2.075400e-03 2.054400e-03 2.033500e-03 2.012700e-03 1.992000e-03 1.971300e-03 1.950700e-03 1.930200e-03 1.909900e-03 1.889600e-03 1.869600e-03 1.849700e-03 1.830000e-03 1.810500e-03 1.791300e-03 1.772400e-03 1.753800e-03 1.735600e-03 1.717900e-03 1.700700e-03 1.684100e-03 1.668100e-03 1.652900e-03 1.638600e-03 1.625300e-03 1.613200e-03 1.602400e-03 1.593200e-03 1.585800e-03 1.580400e-03 1.577400e-03 1.577100e-03 1.580000e-03 1.586600e-03 1.597300e-03 1.613000e-03 1.634200e-03 1.662000e-03 1.697300e-03 1.741300e-03 1.795400e-03 1.861100e-03 1.940300e-03 2.035000e-03 2.147700e-03 2.281100e-03 2.438500e-03 2.623500e-03 2.840300e-03 3.093700e-03 3.389200e-03 3.733100e-03 4.132400e-03 4.595200e-03 5.130200e-03 5.747700e-03 6.458700e-03 7.275500e-03 8.211400e-03 9.280800e-03 1.049900e-02 1.188000e-02 1.344100e-02 1.519600e-02 1.715500e-02 1.932700e-02 2.171000e-02 2.429200e-02 2.704300e-02 2.990300e-02 3.277000e-02 3.547700e-02 3.775400e-02 3.916300e-02 3.897000e-02 3.585500e-02 2.701600e-02 3.691500e-03 9.283100e-03 9.189100e-03 9.095500e-03 9.002300e-03 8.909300e-03 8.816700e-03 8.724400e-03 8.632500e-03 8.540900e-03 8.449600e-03 8.358600e-03 8.268000e-03 8.177700e-03 8.087800e-03 7.998200e-03 7.908900e-03 7.820000e-03 7.731500e-03 7.643300e-03 7.555500e-03 7.468000e-03 7.381000e-03 7.294300e-03 7.208100e-03 7.122300e-03 7.036900e-03 6.951900e-03 6.867500e-03 6.783500e-03 6.700100e-03 6.617200e-03 6.534800e-03 6.453100e-03 6.372000e-03 6.291600e-03 6.211900e-03 6.133000e-03 6.054900e-03 5.977800e-03 5.901600e-03 5.826500e-03 5.752600e-03 5.679900e-03 5.608600e-03 5.538800e-03 5.470700e-03 5.404400e-03 5.340200e-03 5.278200e-03 5.218800e-03 5.162200e-03 5.108700e-03 5.058800e-03 5.012800e-03 4.971300e-03 4.934700e-03 4.903900e-03 4.879400e-03 4.862200e-03 4.853200e-03 4.853500e-03 4.864400e-03 4.887300e-03 4.924000e-03 4.976300e-03 5.046300e-03 5.136700e-03 5.250200e-03 5.390000e-03 5.559900e-03 5.764000e-03 6.007100e-03 6.294400e-03 6.632200e-03 7.027000e-03 7.486500e-03 8.019000e-03 8.633900e-03 9.341000e-03 1.015200e-02 1.107700e-02 1.213000e-02 1.332200e-02 1.466500e-02 1.617100e-02 1.784900e-02 1.970300e-02 2.173300e-02 2.392900e-02 2.626700e-02 2.870100e-02 3.115800e-02 3.351600e-02 3.558900e-02 3.708700e-02 3.756400e-02 3.630300e-02 3.210400e-02 2.273200e-02 3.065400e-03 1.690700e-02 1.671200e-02 1.651800e-02 1.632500e-02 1.613300e-02 1.594300e-02 1.575300e-02 1.556500e-02 1.537800e-02 1.519200e-02 1.500700e-02 1.482300e-02 1.464000e-02 1.445800e-02 1.427800e-02 1.409800e-02 1.392000e-02 1.374200e-02 1.356600e-02 1.339100e-02 1.321700e-02 1.304500e-02 1.287300e-02 1.270300e-02 1.253300e-02 1.236500e-02 1.219900e-02 1.203300e-02 1.186900e-02 1.170600e-02 1.154500e-02 1.138400e-02 1.122600e-02 1.106800e-02 1.091300e-02 1.075800e-02 1.060600e-02 1.045500e-02 1.030600e-02 1.015900e-02 1.001400e-02 9.870800e-03 9.730100e-03 9.591700e-03 9.455900e-03 9.322800e-03 9.192600e-03 9.065600e-03 8.942100e-03 8.822200e-03 8.706500e-03 8.595100e-03 8.488600e-03 8.387400e-03 8.292100e-03 8.203300e-03 8.121600e-03 8.048000e-03 7.983200e-03 7.928400e-03 7.884600e-03 7.853300e-03 7.835900e-03 7.834100e-03 7.850000e-03 7.885600e-03 7.943600e-03 8.026800e-03 8.138400e-03 8.282000e-03 8.461800e-03 8.682400e-03 8.948800e-03 9.267000e-03 9.643200e-03 1.008500e-02 1.059900e-02 1.119500e-02 1.188100e-02 1.266700e-02 1.356300e-02 1.458000e-02 1.572700e-02 1.701200e-02 1.844400e-02 2.002600e-02 2.175900e-02 2.363400e-02 2.563400e-02 2.772600e-02 2.985300e-02 3.193000e-02 3.382400e-02 3.533700e-02 3.617600e-02 3.590000e-02 3.384100e-02 2.894700e-02 1.948600e-02 2.598000e-03 2.528300e-02 2.496000e-02 2.463900e-02 2.432100e-02 2.400500e-02 2.369100e-02 2.338000e-02 2.307200e-02 2.276500e-02 2.246100e-02 2.216000e-02 2.186000e-02 2.156300e-02 2.126900e-02 2.097600e-02 2.068600e-02 2.039900e-02 2.011300e-02 1.983000e-02 1.955000e-02 1.927100e-02 1.899500e-02 1.872200e-02 1.845000e-02 1.818100e-02 1.791500e-02 1.765100e-02 1.738900e-02 1.713000e-02 1.687300e-02 1.661900e-02 1.636700e-02 1.611800e-02 1.587200e-02 1.562800e-02 1.538700e-02 1.514900e-02 1.491400e-02 1.468200e-02 1.445300e-02 1.422700e-02 1.400500e-02 1.378600e-02 1.357000e-02 1.335900e-02 1.315200e-02 1.294900e-02 1.275000e-02 1.255700e-02 1.236800e-02 1.218500e-02 1.200800e-02 1.183700e-02 1.167300e-02 1.151600e-02 1.136800e-02 1.122800e-02 1.109800e-02 1.097800e-02 1.087100e-02 1.077600e-02 1.069500e-02 1.063000e-02 1.058300e-02 1.055500e-02 1.054800e-02 1.056600e-02 1.061100e-02 1.068700e-02 1.079600e-02 1.094200e-02 1.113100e-02 1.136700e-02 1.165600e-02 1.200300e-02 1.241600e-02 1.290100e-02 1.346600e-02 1.411800e-02 1.486800e-02 1.572200e-02 1.669000e-02 1.777800e-02 1.899300e-02 2.033900e-02 2.181600e-02 2.341900e-02 2.513400e-02 2.693800e-02 2.879000e-02 3.062700e-02 3.235400e-02 3.383100e-02 3.485800e-02 3.514200e-02 3.426400e-02 3.161100e-02 2.628500e-02 1.696900e-02 2.240400e-03 3.428100e-02 3.380500e-02 3.333300e-02 3.286600e-02 3.240200e-02 3.194300e-02 3.148900e-02 3.103800e-02 3.059100e-02 3.014900e-02 2.971100e-02 2.927600e-02 2.884600e-02 2.842000e-02 2.799700e-02 2.757900e-02 2.716500e-02 2.675500e-02 2.634800e-02 2.594600e-02 2.554700e-02 2.515300e-02 2.476200e-02 2.437600e-02 2.399300e-02 2.361400e-02 2.323900e-02 2.286900e-02 2.250200e-02 2.213900e-02 2.178000e-02 2.142600e-02 2.107500e-02 2.072900e-02 2.038700e-02 2.004900e-02 1.971600e-02 1.938700e-02 1.906200e-02 1.874200e-02 1.842700e-02 1.811700e-02 1.781200e-02 1.751200e-02 1.721700e-02 1.692800e-02 1.664500e-02 1.636800e-02 1.609800e-02 1.583400e-02 1.557700e-02 1.532800e-02 1.508600e-02 1.485400e-02 1.463000e-02 1.441600e-02 1.421300e-02 1.402100e-02 1.384200e-02 1.367500e-02 1.352400e-02 1.338900e-02 1.327100e-02 1.317300e-02 1.309500e-02 1.304200e-02 1.301400e-02 1.301500e-02 1.304800e-02 1.311700e-02 1.322400e-02 1.337500e-02 1.357400e-02 1.382600e-02 1.413700e-02 1.451300e-02 1.496100e-02 1.548700e-02 1.609800e-02 1.680200e-02 1.760600e-02 1.851700e-02 1.953800e-02 2.067600e-02 2.192900e-02 2.329600e-02 2.476700e-02 2.632400e-02 2.793800e-02 2.956200e-02 3.112800e-02 3.253500e-02 3.364100e-02 3.424400e-02 3.406200e-02 3.269900e-02 2.960400e-02 2.401700e-02 1.496300e-02 1.958400e-03 4.385700e-02 4.320300e-02 4.255600e-02 4.191500e-02 4.128100e-02 4.065300e-02 4.003200e-02 3.941700e-02 3.880900e-02 3.820800e-02 3.761200e-02 3.702300e-02 3.644100e-02 3.586400e-02 3.529400e-02 3.472900e-02 3.417100e-02 3.361900e-02 3.307300e-02 3.253300e-02 3.200000e-02 3.147200e-02 3.095000e-02 3.043400e-02 2.992400e-02 2.942000e-02 2.892100e-02 2.842900e-02 2.794300e-02 2.746300e-02 2.698800e-02 2.652000e-02 2.605800e-02 2.560100e-02 2.515100e-02 2.470700e-02 2.426900e-02 2.383700e-02 2.341200e-02 2.299300e-02 2.258100e-02 2.217500e-02 2.177700e-02 2.138500e-02 2.100100e-02 2.062300e-02 2.025400e-02 1.989200e-02 1.953900e-02 1.919400e-02 1.885800e-02 1.853200e-02 1.821500e-02 1.790800e-02 1.761300e-02 1.732900e-02 1.705800e-02 1.679900e-02 1.655500e-02 1.632700e-02 1.611400e-02 1.592000e-02 1.574500e-02 1.559200e-02 1.546100e-02 1.535600e-02 1.527800e-02 1.523100e-02 1.521700e-02 1.524000e-02 1.530300e-02 1.541100e-02 1.556800e-02 1.577800e-02 1.604800e-02 1.638200e-02 1.678600e-02 1.726700e-02 1.783100e-02 1.848500e-02 1.923200e-02 2.008000e-02 2.103000e-02 2.208600e-02 2.324500e-02 2.450100e-02 2.584100e-02 2.724400e-02 2.867600e-02 3.008800e-02 3.140500e-02 3.252600e-02 3.330600e-02 3.354800e-02 3.298000e-02 3.123600e-02 2.782200e-02 2.210300e-02 1.336800e-02 1.736700e-03 5.376400e-02 5.291600e-02 5.207800e-02 5.124800e-02 5.042900e-02 4.961800e-02 4.881700e-02 4.802600e-02 4.724300e-02 4.646900e-02 4.570400e-02 4.494900e-02 4.420200e-02 4.346400e-02 4.273400e-02 4.201300e-02 4.130100e-02 4.059800e-02 3.990200e-02 3.921600e-02 3.853700e-02 3.786700e-02 3.720500e-02 3.655200e-02 3.590600e-02 3.526900e-02 3.464000e-02 3.401900e-02 3.340700e-02 3.280200e-02 3.220600e-02 3.161700e-02 3.103700e-02 3.046500e-02 2.990100e-02 2.934500e-02 2.879800e-02 2.825800e-02 2.772800e-02 2.720500e-02 2.669100e-02 2.618600e-02 2.569000e-02 2.520300e-02 2.472400e-02 2.425600e-02 2.379600e-02 2.334700e-02 2.290800e-02 2.247900e-02 2.206100e-02 2.165400e-02 2.125900e-02 2.087600e-02 2.050700e-02 2.015000e-02 1.980800e-02 1.948100e-02 1.917100e-02 1.887700e-02 1.860200e-02 1.834700e-02 1.811300e-02 1.790200e-02 1.771600e-02 1.755600e-02 1.742700e-02 1.732900e-02 1.726600e-02 1.724100e-02 1.725800e-02 1.732100e-02 1.743300e-02 1.759900e-02 1.782400e-02 1.811300e-02 1.847200e-02 1.890600e-02 1.942000e-02 2.001900e-02 2.070800e-02 2.149100e-02 2.236900e-02 2.334100e-02 2.440500e-02 2.555000e-02 2.676200e-02 2.801600e-02 2.927400e-02 3.048300e-02 3.156700e-02 3.242200e-02 3.290400e-02 3.282100e-02 3.191400e-02 2.984500e-02 2.617700e-02 2.038600e-02 1.198700e-02 1.546000e-03 6.404700e-02 6.298500e-02 6.193700e-02 6.090100e-02 5.987800e-02 5.886800e-02 5.787100e-02 5.688500e-02 5.591200e-02 5.495100e-02 5.400200e-02 5.306600e-02 5.214100e-02 5.122700e-02 5.032600e-02 4.943600e-02 4.855700e-02 4.769000e-02 4.683400e-02 4.598900e-02 4.515600e-02 4.433300e-02 4.352100e-02 4.272100e-02 4.193100e-02 4.115100e-02 4.038300e-02 3.962500e-02 3.887800e-02 3.814200e-02 3.741600e-02 3.670000e-02 3.599500e-02 3.530100e-02 3.461700e-02 3.394300e-02 3.328000e-02 3.262800e-02 3.198600e-02 3.135500e-02 3.073500e-02 3.012500e-02 2.952700e-02 2.894000e-02 2.836400e-02 2.780000e-02 2.724700e-02 2.670600e-02 2.617800e-02 2.566200e-02 2.515800e-02 2.466900e-02 2.419300e-02 2.373100e-02 2.328400e-02 2.285300e-02 2.243800e-02 2.204000e-02 2.166100e-02 2.130000e-02 2.096000e-02 2.064200e-02 2.034600e-02 2.007600e-02 1.983200e-02 1.961700e-02 1.943300e-02 1.928300e-02 1.916900e-02 1.909500e-02 1.906300e-02 1.907700e-02 1.914200e-02 1.926200e-02 1.944000e-02 1.968200e-02 1.999300e-02 2.037700e-02 2.083800e-02 2.138200e-02 2.201000e-02 2.272600e-02 2.353000e-02 2.442000e-02 2.538900e-02 2.642600e-02 2.751300e-02 2.862400e-02 2.971800e-02 3.073800e-02 3.160800e-02 3.222300e-02 3.244000e-02 3.207400e-02 3.088000e-02 2.854800e-02 2.469400e-02 1.889000e-02 1.083300e-02 1.388000e-03 7.465300e-02 7.336000e-02 7.208400e-02 7.082500e-02 6.958200e-02 6.835600e-02 6.714600e-02 6.595200e-02 6.477400e-02 6.361200e-02 6.246500e-02 6.133400e-02 6.021800e-02 5.911700e-02 5.803200e-02 5.696100e-02 5.590500e-02 5.486300e-02 5.383600e-02 5.282300e-02 5.182500e-02 5.084000e-02 4.987000e-02 4.891300e-02 4.797000e-02 4.704100e-02 4.612500e-02 4.522400e-02 4.433500e-02 4.345900e-02 4.259700e-02 4.174900e-02 4.091300e-02 4.009000e-02 3.928100e-02 3.848500e-02 3.770100e-02 3.693100e-02 3.617400e-02 3.543000e-02 3.470000e-02 3.398200e-02 3.327800e-02 3.258800e-02 3.191100e-02 3.124800e-02 3.059800e-02 2.996400e-02 2.934300e-02 2.873700e-02 2.814700e-02 2.757200e-02 2.701300e-02 2.647000e-02 2.594400e-02 2.543700e-02 2.494700e-02 2.447700e-02 2.402700e-02 2.359800e-02 2.319100e-02 2.280800e-02 2.245000e-02 2.211900e-02 2.181700e-02 2.154500e-02 2.130500e-02 2.110100e-02 2.093400e-02 2.080900e-02 2.072700e-02 2.069200e-02 2.070900e-02 2.078000e-02 2.091000e-02 2.110400e-02 2.136500e-02 2.169700e-02 2.210500e-02 2.259100e-02 2.315800e-02 2.380800e-02 2.453800e-02 2.534500e-02 2.622100e-02 2.715300e-02 2.812200e-02 2.909700e-02 3.003600e-02 3.088200e-02 3.155600e-02 3.195300e-02 3.193500e-02 3.132300e-02 2.988800e-02 2.734400e-02 2.335700e-02 1.758200e-02 9.862800e-03 1.256100e-03 8.551900e-02 8.397800e-02 8.245900e-02 8.096100e-02 7.948500e-02 7.802800e-02 7.659200e-02 7.517700e-02 7.378100e-02 7.240500e-02 7.104900e-02 6.971200e-02 6.839400e-02 6.709500e-02 6.581500e-02 6.455300e-02 6.331000e-02 6.208500e-02 6.087800e-02 5.968900e-02 5.851700e-02 5.736300e-02 5.622600e-02 5.510700e-02 5.400400e-02 5.291800e-02 5.184900e-02 5.079700e-02 4.976100e-02 4.874200e-02 4.773800e-02 4.675100e-02 4.578000e-02 4.482500e-02 4.388600e-02 4.296200e-02 4.205500e-02 4.116300e-02 4.028700e-02 3.942700e-02 3.858300e-02 3.775500e-02 3.694200e-02 3.614600e-02 3.536600e-02 3.460100e-02 3.385400e-02 3.312300e-02 3.240900e-02 3.171100e-02 3.103200e-02 3.037000e-02 2.972700e-02 2.910200e-02 2.849600e-02 2.791000e-02 2.734500e-02 2.680200e-02 2.628000e-02 2.578200e-02 2.530800e-02 2.486000e-02 2.443800e-02 2.404600e-02 2.368400e-02 2.335400e-02 2.305800e-02 2.279900e-02 2.257900e-02 2.240200e-02 2.226900e-02 2.218500e-02 2.215200e-02 2.217400e-02 2.225600e-02 2.240000e-02 2.261000e-02 2.289100e-02 2.324400e-02 2.367300e-02 2.417900e-02 2.476200e-02 2.541900e-02 2.614500e-02 2.693200e-02 2.776300e-02 2.861700e-02 2.946300e-02 3.025700e-02 3.094100e-02 3.143500e-02 3.163500e-02 3.140700e-02 3.058000e-02 2.893900e-02 2.622400e-02 2.214300e-02 1.642500e-02 9.030700e-03 1.143800e-03 9.659800e-02 9.479500e-02 9.302000e-02 9.126900e-02 8.954500e-02 8.784600e-02 8.617200e-02 8.452300e-02 8.289900e-02 8.129800e-02 7.972200e-02 7.816900e-02 7.664000e-02 7.513300e-02 7.365000e-02 7.218900e-02 7.075000e-02 6.933400e-02 6.793900e-02 6.656600e-02 6.521400e-02 6.388400e-02 6.257400e-02 6.128500e-02 6.001700e-02 5.876900e-02 5.754100e-02 5.633300e-02 5.514500e-02 5.397700e-02 5.282800e-02 5.169800e-02 5.058800e-02 4.949600e-02 4.842400e-02 4.737000e-02 4.633600e-02 4.531900e-02 4.432200e-02 4.334300e-02 4.238300e-02 4.144100e-02 4.051800e-02 3.961400e-02 3.872900e-02 3.786200e-02 3.701400e-02 3.618600e-02 3.537700e-02 3.458700e-02 3.381700e-02 3.306800e-02 3.233900e-02 3.163100e-02 3.094500e-02 3.028000e-02 2.963900e-02 2.902100e-02 2.842800e-02 2.786000e-02 2.731800e-02 2.680500e-02 2.632000e-02 2.586500e-02 2.544300e-02 2.505500e-02 2.470300e-02 2.438900e-02 2.411600e-02 2.388600e-02 2.370300e-02 2.356800e-02 2.348600e-02 2.345900e-02 2.349100e-02 2.358500e-02 2.374500e-02 2.397400e-02 2.427300e-02 2.464500e-02 2.509000e-02 2.560800e-02 2.619300e-02 2.684100e-02 2.754000e-02 2.827400e-02 2.901900e-02 2.974400e-02 3.040200e-02 3.093400e-02 3.126300e-02 3.128400e-02 3.086900e-02 2.985200e-02 2.803500e-02 2.518000e-02 2.103600e-02 1.539300e-02 8.309400e-03 1.047000e-03 1.078600e-01 1.057800e-01 1.037300e-01 1.017200e-01 9.973500e-02 9.778200e-02 9.585900e-02 9.396500e-02 9.210100e-02 9.026600e-02 8.846000e-02 8.668200e-02 8.493200e-02 8.321000e-02 8.151500e-02 7.984700e-02 7.820500e-02 7.659000e-02 7.500100e-02 7.343800e-02 7.189900e-02 7.038700e-02 6.889800e-02 6.743500e-02 6.599600e-02 6.458100e-02 6.318900e-02 6.182200e-02 6.047700e-02 5.915600e-02 5.785800e-02 5.658200e-02 5.532900e-02 5.409800e-02 5.289000e-02 5.170300e-02 5.053900e-02 4.939600e-02 4.827400e-02 4.717500e-02 4.609700e-02 4.504000e-02 4.400500e-02 4.299200e-02 4.200000e-02 4.102900e-02 4.008000e-02 3.915300e-02 3.824800e-02 3.736500e-02 3.650400e-02 3.566700e-02 3.485200e-02 3.406100e-02 3.329300e-02 3.255000e-02 3.183200e-02 3.114000e-02 3.047500e-02 2.983700e-02 2.922800e-02 2.864900e-02 2.810000e-02 2.758400e-02 2.710200e-02 2.665600e-02 2.624800e-02 2.587900e-02 2.555200e-02 2.527000e-02 2.503600e-02 2.485100e-02 2.471900e-02 2.464300e-02 2.462600e-02 2.467100e-02 2.478100e-02 2.495800e-02 2.520400e-02 2.551900e-02 2.590500e-02 2.635700e-02 2.687400e-02 2.744500e-02 2.806000e-02 2.870000e-02 2.934200e-02 2.995200e-02 3.048300e-02 3.087500e-02 3.105100e-02 3.091000e-02 3.032600e-02 2.914300e-02 2.717500e-02 2.420800e-02 2.002400e-02 1.447000e-02 7.680000e-03 9.630300e-04 1.192600e-01 1.169000e-01 1.145700e-01 1.122800e-01 1.100300e-01 1.078100e-01 1.056300e-01 1.034800e-01 1.013700e-01 9.928800e-02 9.724300e-02 9.523200e-02 9.325400e-02 9.130800e-02 8.939400e-02 8.751200e-02 8.566100e-02 8.384000e-02 8.205100e-02 8.029200e-02 7.856200e-02 7.686100e-02 7.519000e-02 7.354700e-02 7.193300e-02 7.034600e-02 6.878700e-02 6.725600e-02 6.575200e-02 6.427500e-02 6.282400e-02 6.139900e-02 6.000100e-02 5.862800e-02 5.728100e-02 5.595900e-02 5.466300e-02 5.339100e-02 5.214400e-02 5.092200e-02 4.972500e-02 4.855200e-02 4.740400e-02 4.628000e-02 4.518100e-02 4.410500e-02 4.305500e-02 4.202800e-02 4.102700e-02 4.005000e-02 3.909900e-02 3.817200e-02 3.727100e-02 3.639600e-02 3.554800e-02 3.472600e-02 3.393200e-02 3.316600e-02 3.242800e-02 3.172100e-02 3.104400e-02 3.040000e-02 2.978800e-02 2.921000e-02 2.866900e-02 2.816500e-02 2.770000e-02 2.727700e-02 2.689800e-02 2.656400e-02 2.627800e-02 2.604400e-02 2.586300e-02 2.573800e-02 2.567300e-02 2.566900e-02 2.572900e-02 2.585500e-02 2.604700e-02 2.630800e-02 2.663400e-02 2.702500e-02 2.747300e-02 2.797000e-02 2.850400e-02 2.905600e-02 2.959900e-02 3.010000e-02 3.051200e-02 3.077400e-02 3.080900e-02 3.052000e-02 2.978500e-02 2.845500e-02 2.635800e-02 2.330000e-02 1.909500e-02 1.363800e-02 7.126200e-03 8.895400e-04 1.307800e-01 1.281200e-01 1.255000e-01 1.229200e-01 1.203900e-01 1.179000e-01 1.154500e-01 1.130400e-01 1.106700e-01 1.083400e-01 1.060500e-01 1.038000e-01 1.015900e-01 9.941000e-02 9.727100e-02 9.516900e-02 9.310300e-02 9.107300e-02 8.907800e-02 8.711800e-02 8.519200e-02 8.330000e-02 8.144100e-02 7.961500e-02 7.782200e-02 7.606100e-02 7.433200e-02 7.263400e-02 7.096700e-02 6.933100e-02 6.772500e-02 6.614900e-02 6.460400e-02 6.308700e-02 6.160000e-02 6.014100e-02 5.871100e-02 5.730900e-02 5.593600e-02 5.459100e-02 5.327300e-02 5.198300e-02 5.072100e-02 4.948600e-02 4.827800e-02 4.709800e-02 4.594500e-02 4.481900e-02 4.372100e-02 4.265100e-02 4.160800e-02 4.059300e-02 3.960600e-02 3.864700e-02 3.771800e-02 3.681800e-02 3.594700e-02 3.510700e-02 3.429900e-02 3.352200e-02 3.277800e-02 3.206800e-02 3.139400e-02 3.075500e-02 3.015500e-02 2.959300e-02 2.907300e-02 2.859600e-02 2.816400e-02 2.777900e-02 2.744400e-02 2.716000e-02 2.693000e-02 2.675700e-02 2.664400e-02 2.659100e-02 2.660200e-02 2.667800e-02 2.681900e-02 2.702500e-02 2.729400e-02 2.762300e-02 2.800600e-02 2.843200e-02 2.888800e-02 2.935400e-02 2.980400e-02 3.020100e-02 3.050000e-02 3.064100e-02 3.054600e-02 3.012100e-02 2.924900e-02 2.778900e-02 2.557900e-02 2.244700e-02 1.823600e-02 1.288100e-02 6.632200e-03 8.242900e-04 1.424000e-01 1.394300e-01 1.365100e-01 1.336400e-01 1.308100e-01 1.280400e-01 1.253100e-01 1.226300e-01 1.200000e-01 1.174100e-01 1.148700e-01 1.123700e-01 1.099200e-01 1.075100e-01 1.051400e-01 1.028100e-01 1.005200e-01 9.827800e-02 9.607300e-02 9.390700e-02 9.178100e-02 8.969300e-02 8.764300e-02 8.563100e-02 8.365500e-02 8.171700e-02 7.981400e-02 7.794700e-02 7.611500e-02 7.431800e-02 7.255500e-02 7.082600e-02 6.913100e-02 6.746900e-02 6.584000e-02 6.424300e-02 6.267800e-02 6.114600e-02 5.964400e-02 5.817500e-02 5.673600e-02 5.532800e-02 5.395100e-02 5.260500e-02 5.128900e-02 5.000300e-02 4.874800e-02 4.752300e-02 4.632800e-02 4.516400e-02 4.403000e-02 4.292700e-02 4.185400e-02 4.081200e-02 3.980200e-02 3.882400e-02 3.787800e-02 3.696500e-02 3.608500e-02 3.524000e-02 3.442900e-02 3.365500e-02 3.291800e-02 3.221900e-02 3.156000e-02 3.094200e-02 3.036700e-02 2.983700e-02 2.935300e-02 2.891700e-02 2.853200e-02 2.820000e-02 2.792200e-02 2.770200e-02 2.754100e-02 2.744100e-02 2.740400e-02 2.743000e-02 2.752000e-02 2.767300e-02 2.788700e-02 2.815600e-02 2.847500e-02 2.883200e-02 2.921400e-02 2.959800e-02 2.995900e-02 3.026000e-02 3.045300e-02 3.048100e-02 3.026600e-02 2.971700e-02 2.872100e-02 2.714500e-02 2.484000e-02 2.165000e-02 1.744400e-02 1.219400e-02 6.193000e-03 7.665600e-04 1.541000e-01 1.508100e-01 1.475800e-01 1.444000e-01 1.412800e-01 1.382200e-01 1.352100e-01 1.322500e-01 1.293400e-01 1.264900e-01 1.236900e-01 1.209400e-01 1.182400e-01 1.155800e-01 1.129800e-01 1.104200e-01 1.079100e-01 1.054500e-01 1.030300e-01 1.006500e-01 9.832100e-02 9.603400e-02 9.379000e-02 9.158800e-02 8.942800e-02 8.730900e-02 8.523000e-02 8.319200e-02 8.119200e-02 7.923200e-02 7.731100e-02 7.542700e-02 7.358100e-02 7.177200e-02 7.000000e-02 6.826400e-02 6.656400e-02 6.489900e-02 6.327000e-02 6.167500e-02 6.011500e-02 5.858900e-02 5.709800e-02 5.563900e-02 5.421500e-02 5.282400e-02 5.146700e-02 5.014200e-02 4.885100e-02 4.759300e-02 4.636800e-02 4.517700e-02 4.401900e-02 4.289500e-02 4.180500e-02 4.074900e-02 3.972800e-02 3.874200e-02 3.779200e-02 3.687900e-02 3.600200e-02 3.516500e-02 3.436600e-02 3.360800e-02 3.289100e-02 3.221700e-02 3.158800e-02 3.100500e-02 3.047000e-02 2.998400e-02 2.955000e-02 2.917000e-02 2.884600e-02 2.857900e-02 2.837100e-02 2.822500e-02 2.814000e-02 2.811800e-02 2.815900e-02 2.826000e-02 2.841900e-02 2.863200e-02 2.888900e-02 2.918000e-02 2.949000e-02 2.979600e-02 3.007300e-02 3.028200e-02 3.037700e-02 3.029800e-02 2.997300e-02 2.931100e-02 2.820300e-02 2.652500e-02 2.413800e-02 2.090200e-02 1.671100e-02 1.156800e-02 5.800400e-03 7.151800e-04 1.658500e-01 1.622300e-01 1.586800e-01 1.552000e-01 1.517700e-01 1.484100e-01 1.451100e-01 1.418700e-01 1.386900e-01 1.355600e-01 1.325000e-01 1.294900e-01 1.265400e-01 1.236400e-01 1.207900e-01 1.180000e-01 1.152600e-01 1.125700e-01 1.099300e-01 1.073500e-01 1.048100e-01 1.023200e-01 9.987900e-02 9.748500e-02 9.513800e-02 9.283600e-02 9.057900e-02 8.836800e-02 8.620000e-02 8.407500e-02 8.199400e-02 7.995400e-02 7.795600e-02 7.600000e-02 7.408400e-02 7.220800e-02 7.037100e-02 6.857400e-02 6.681600e-02 6.509600e-02 6.341500e-02 6.177000e-02 6.016400e-02 5.859400e-02 5.706200e-02 5.556500e-02 5.410600e-02 5.268200e-02 5.129500e-02 4.994400e-02 4.862900e-02 4.735100e-02 4.610800e-02 4.490200e-02 4.373200e-02 4.259900e-02 4.150400e-02 4.044600e-02 3.942700e-02 3.844600e-02 3.750500e-02 3.660400e-02 3.574500e-02 3.492800e-02 3.415400e-02 3.342500e-02 3.274300e-02 3.210800e-02 3.152200e-02 3.098800e-02 3.050600e-02 3.007900e-02 2.970900e-02 2.939600e-02 2.914300e-02 2.895100e-02 2.882000e-02 2.875100e-02 2.874300e-02 2.879400e-02 2.890100e-02 2.905700e-02 2.925500e-02 2.948200e-02 2.972300e-02 2.995600e-02 3.015200e-02 3.027400e-02 3.027600e-02 3.009900e-02 2.967200e-02 2.890500e-02 2.769700e-02 2.592700e-02 2.347000e-02 2.019900e-02 1.603100e-02 1.099500e-02 5.446600e-03 6.690700e-04 1.776500e-01 1.737000e-01 1.698200e-01 1.660200e-01 1.622800e-01 1.586200e-01 1.550200e-01 1.514900e-01 1.480200e-01 1.446200e-01 1.412900e-01 1.380100e-01 1.348000e-01 1.316500e-01 1.285600e-01 1.255300e-01 1.225600e-01 1.196500e-01 1.167900e-01 1.139900e-01 1.112400e-01 1.085500e-01 1.059100e-01 1.033200e-01 1.007800e-01 9.829400e-02 9.585800e-02 9.347200e-02 9.113400e-02 8.884400e-02 8.660100e-02 8.440400e-02 8.225400e-02 8.014900e-02 7.808800e-02 7.607200e-02 7.409900e-02 7.216900e-02 7.028200e-02 6.843700e-02 6.663400e-02 6.487100e-02 6.315000e-02 6.146900e-02 5.982800e-02 5.822700e-02 5.666600e-02 5.514400e-02 5.366200e-02 5.221800e-02 5.081400e-02 4.944800e-02 4.812100e-02 4.683400e-02 4.558600e-02 4.437700e-02 4.320800e-02 4.207900e-02 4.099100e-02 3.994400e-02 3.893900e-02 3.797600e-02 3.705700e-02 3.618200e-02 3.535200e-02 3.457000e-02 3.383500e-02 3.314900e-02 3.251400e-02 3.193200e-02 3.140300e-02 3.093000e-02 3.051400e-02 3.015600e-02 2.985900e-02 2.962200e-02 2.944600e-02 2.933100e-02 2.927600e-02 2.927800e-02 2.933400e-02 2.943600e-02 2.957700e-02 2.974300e-02 2.991800e-02 3.008000e-02 3.020000e-02 3.024000e-02 3.015500e-02 2.988700e-02 2.936400e-02 2.850200e-02 2.720200e-02 2.535200e-02 2.283400e-02 1.953800e-02 1.539800e-02 1.046900e-02 5.127400e-03 6.276400e-04 1.894800e-01 1.851900e-01 1.809800e-01 1.768400e-01 1.727900e-01 1.688100e-01 1.649100e-01 1.610900e-01 1.573300e-01 1.536500e-01 1.500400e-01 1.465000e-01 1.430300e-01 1.396200e-01 1.362900e-01 1.330100e-01 1.298100e-01 1.266600e-01 1.235800e-01 1.205600e-01 1.176000e-01 1.147000e-01 1.118600e-01 1.090700e-01 1.063400e-01 1.036700e-01 1.010500e-01 9.849200e-02 9.598300e-02 9.352600e-02 9.112100e-02 8.876700e-02 8.646300e-02 8.420900e-02 8.200400e-02 7.984600e-02 7.773700e-02 7.567400e-02 7.365800e-02 7.168800e-02 6.976300e-02 6.788300e-02 6.604800e-02 6.425600e-02 6.250800e-02 6.080200e-02 5.914000e-02 5.752100e-02 5.594300e-02 5.440800e-02 5.291500e-02 5.146300e-02 5.005400e-02 4.868600e-02 4.736000e-02 4.607600e-02 4.483500e-02 4.363600e-02 4.248000e-02 4.136800e-02 4.030000e-02 3.927600e-02 3.829800e-02 3.736600e-02 3.648200e-02 3.564600e-02 3.486000e-02 3.412500e-02 3.344200e-02 3.281200e-02 3.223800e-02 3.172000e-02 3.126000e-02 3.085900e-02 3.051800e-02 3.023700e-02 3.001800e-02 2.985900e-02 2.975800e-02 2.971300e-02 2.971900e-02 2.977000e-02 2.985500e-02 2.996300e-02 3.007600e-02 3.017000e-02 3.021800e-02 3.018200e-02 3.001600e-02 2.966200e-02 2.905200e-02 2.810400e-02 2.672200e-02 2.480200e-02 2.223400e-02 1.892100e-02 1.481500e-02 9.990600e-03 4.841800e-03 5.907400e-04 2.013200e-01 1.966800e-01 1.921300e-01 1.876700e-01 1.833000e-01 1.790000e-01 1.747900e-01 1.706700e-01 1.666200e-01 1.626600e-01 1.587700e-01 1.549600e-01 1.512200e-01 1.475600e-01 1.439700e-01 1.404500e-01 1.370100e-01 1.336300e-01 1.303300e-01 1.270900e-01 1.239100e-01 1.208000e-01 1.177600e-01 1.147700e-01 1.118500e-01 1.090000e-01 1.062000e-01 1.034600e-01 1.007800e-01 9.815200e-02 9.558400e-02 9.307200e-02 9.061500e-02 8.821100e-02 8.586100e-02 8.356300e-02 8.131700e-02 7.912200e-02 7.697700e-02 7.488200e-02 7.283600e-02 7.083900e-02 6.888900e-02 6.698700e-02 6.513200e-02 6.332300e-02 6.156000e-02 5.984300e-02 5.817200e-02 5.654500e-02 5.496400e-02 5.342700e-02 5.193500e-02 5.048800e-02 4.908500e-02 4.772700e-02 4.641400e-02 4.514600e-02 4.392300e-02 4.274600e-02 4.161600e-02 4.053200e-02 3.949600e-02 3.850800e-02 3.757000e-02 3.668200e-02 3.584500e-02 3.506100e-02 3.433000e-02 3.365500e-02 3.303500e-02 3.247300e-02 3.197000e-02 3.152600e-02 3.114200e-02 3.081900e-02 3.055700e-02 3.035400e-02 3.020900e-02 3.011700e-02 3.007600e-02 3.007600e-02 3.010800e-02 3.015900e-02 3.021100e-02 3.024100e-02 3.022000e-02 3.011000e-02 2.986600e-02 2.943200e-02 2.874000e-02 2.771000e-02 2.625200e-02 2.426800e-02 2.165500e-02 1.833100e-02 1.426100e-02 9.540000e-03 4.575700e-03 5.564300e-04 2.131800e-01 2.081900e-01 2.032900e-01 1.985000e-01 1.937900e-01 1.891800e-01 1.846600e-01 1.802400e-01 1.759000e-01 1.716400e-01 1.674700e-01 1.633900e-01 1.593900e-01 1.554700e-01 1.516300e-01 1.478700e-01 1.441800e-01 1.405700e-01 1.370400e-01 1.335800e-01 1.301900e-01 1.268700e-01 1.236200e-01 1.204400e-01 1.173300e-01 1.142800e-01 1.113000e-01 1.083800e-01 1.055300e-01 1.027400e-01 1.000100e-01 9.733600e-02 9.472400e-02 9.217200e-02 8.967700e-02 8.723800e-02 8.485500e-02 8.252800e-02 8.025500e-02 7.803500e-02 7.586800e-02 7.375300e-02 7.169000e-02 6.967700e-02 6.771500e-02 6.580300e-02 6.394000e-02 6.212600e-02 6.036100e-02 5.864400e-02 5.697500e-02 5.535400e-02 5.378000e-02 5.225300e-02 5.077400e-02 4.934200e-02 4.795800e-02 4.662100e-02 4.533200e-02 4.409200e-02 4.289900e-02 4.175600e-02 4.066300e-02 3.962000e-02 3.862800e-02 3.768800e-02 3.680100e-02 3.596800e-02 3.519100e-02 3.447000e-02 3.380600e-02 3.320000e-02 3.265400e-02 3.216800e-02 3.174200e-02 3.137700e-02 3.107200e-02 3.082700e-02 3.063700e-02 3.050100e-02 3.041200e-02 3.036300e-02 3.034300e-02 3.033800e-02 3.033100e-02 3.029800e-02 3.021000e-02 3.002800e-02 2.971000e-02 2.919700e-02 2.842600e-02 2.731900e-02 2.579000e-02 2.374400e-02 2.109200e-02 1.775900e-02 1.372700e-02 9.109100e-03 4.323100e-03 5.239500e-04 2.250300e-01 2.196900e-01 2.144500e-01 2.093200e-01 2.042900e-01 1.993600e-01 1.945300e-01 1.898000e-01 1.851700e-01 1.806300e-01 1.761800e-01 1.718200e-01 1.675600e-01 1.633800e-01 1.592800e-01 1.552800e-01 1.513500e-01 1.475100e-01 1.437500e-01 1.400700e-01 1.364600e-01 1.329300e-01 1.294800e-01 1.261000e-01 1.228000e-01 1.195600e-01 1.164000e-01 1.133100e-01 1.102800e-01 1.073200e-01 1.044300e-01 1.016000e-01 9.883400e-02 9.613200e-02 9.349200e-02 9.091300e-02 8.839400e-02 8.593400e-02 8.353200e-02 8.118700e-02 7.889900e-02 7.666700e-02 7.449000e-02 7.236700e-02 7.029900e-02 6.828300e-02 6.632100e-02 6.441000e-02 6.255100e-02 6.074300e-02 5.898700e-02 5.728100e-02 5.562400e-02 5.401900e-02 5.246300e-02 5.095800e-02 4.950200e-02 4.809600e-02 4.674100e-02 4.543700e-02 4.418300e-02 4.298000e-02 4.182900e-02 4.073100e-02 3.968500e-02 3.869400e-02 3.775700e-02 3.687600e-02 3.605200e-02 3.528500e-02 3.457600e-02 3.392700e-02 3.333800e-02 3.281000e-02 3.234200e-02 3.193500e-02 3.158800e-02 3.130000e-02 3.106600e-02 3.088400e-02 3.074800e-02 3.064900e-02 3.057800e-02 3.051700e-02 3.045100e-02 3.035500e-02 3.019900e-02 2.994700e-02 2.955300e-02 2.896300e-02 2.811300e-02 2.692800e-02 2.532700e-02 2.322100e-02 2.052800e-02 1.718700e-02 1.319400e-02 8.678100e-03 4.070600e-03 4.914700e-04 2.368800e-01 2.311900e-01 2.256100e-01 2.201500e-01 2.147900e-01 2.095400e-01 2.044000e-01 1.993700e-01 1.944400e-01 1.896100e-01 1.848900e-01 1.802600e-01 1.757200e-01 1.712900e-01 1.669400e-01 1.626900e-01 1.585200e-01 1.544500e-01 1.504600e-01 1.465600e-01 1.427400e-01 1.390000e-01 1.353400e-01 1.317700e-01 1.282700e-01 1.248500e-01 1.215000e-01 1.182300e-01 1.150300e-01 1.119100e-01 1.088500e-01 1.058600e-01 1.029400e-01 1.000900e-01 9.730800e-02 9.458800e-02 9.193200e-02 8.934000e-02 8.680900e-02 8.433900e-02 8.193100e-02 7.958100e-02 7.729000e-02 7.505700e-02 7.288200e-02 7.076300e-02 6.870100e-02 6.669300e-02 6.474000e-02 6.284200e-02 6.099800e-02 5.920700e-02 5.746900e-02 5.578500e-02 5.415300e-02 5.257300e-02 5.104600e-02 4.957200e-02 4.815100e-02 4.678200e-02 4.546600e-02 4.420400e-02 4.299600e-02 4.184200e-02 4.074300e-02 3.970000e-02 3.871300e-02 3.778300e-02 3.691200e-02 3.610000e-02 3.534700e-02 3.465400e-02 3.402200e-02 3.345100e-02 3.294200e-02 3.249300e-02 3.210400e-02 3.177200e-02 3.149500e-02 3.126800e-02 3.108500e-02 3.093600e-02 3.081200e-02 3.069700e-02 3.057100e-02 3.041200e-02 3.018900e-02 2.986500e-02 2.939700e-02 2.872900e-02 2.779900e-02 2.653700e-02 2.486400e-02 2.269800e-02 1.996500e-02 1.661600e-02 1.266100e-02 8.247200e-03 3.818000e-03 4.589900e-04 2.487400e-01 2.426900e-01 2.367700e-01 2.309700e-01 2.252800e-01 2.197200e-01 2.142700e-01 2.089400e-01 2.037100e-01 1.986000e-01 1.935900e-01 1.886900e-01 1.838900e-01 1.791900e-01 1.746000e-01 1.701000e-01 1.656900e-01 1.613900e-01 1.571700e-01 1.530500e-01 1.490100e-01 1.450700e-01 1.412100e-01 1.374300e-01 1.337400e-01 1.301300e-01 1.266000e-01 1.231600e-01 1.197800e-01 1.164900e-01 1.132700e-01 1.101300e-01 1.070500e-01 1.040500e-01 1.011200e-01 9.826200e-02 9.547000e-02 9.274500e-02 9.008600e-02 8.749200e-02 8.496200e-02 8.249500e-02 8.009100e-02 7.774700e-02 7.546600e-02 7.324300e-02 7.108100e-02 6.897700e-02 6.693000e-02 6.494100e-02 6.300900e-02 6.113400e-02 5.931400e-02 5.755100e-02 5.584200e-02 5.418900e-02 5.259100e-02 5.104700e-02 4.956000e-02 4.812800e-02 4.675000e-02 4.542800e-02 4.416200e-02 4.295300e-02 4.180000e-02 4.070600e-02 3.967000e-02 3.869100e-02 3.777300e-02 3.691500e-02 3.611700e-02 3.538100e-02 3.470600e-02 3.409300e-02 3.354200e-02 3.305100e-02 3.261900e-02 3.224500e-02 3.192400e-02 3.165100e-02 3.142100e-02 3.122300e-02 3.104700e-02 3.087600e-02 3.069100e-02 3.046900e-02 3.017900e-02 2.978300e-02 2.924000e-02 2.849400e-02 2.748600e-02 2.614600e-02 2.440100e-02 2.217500e-02 1.940100e-02 1.604400e-02 1.212700e-02 7.816200e-03 3.565500e-03 4.265100e-04 2.605900e-01 2.541900e-01 2.479300e-01 2.418000e-01 2.357800e-01 2.299000e-01 2.241400e-01 2.185100e-01 2.129900e-01 2.075900e-01 2.023000e-01 1.971200e-01 1.920600e-01 1.871000e-01 1.822500e-01 1.775100e-01 1.728700e-01 1.683200e-01 1.638800e-01 1.595400e-01 1.552900e-01 1.511300e-01 1.470700e-01 1.431000e-01 1.392100e-01 1.354200e-01 1.317100e-01 1.280800e-01 1.245400e-01 1.210700e-01 1.176900e-01 1.143900e-01 1.111600e-01 1.080100e-01 1.049400e-01 1.019400e-01 9.900800e-02 9.615100e-02 9.336300e-02 9.064400e-02 8.799300e-02 8.540900e-02 8.289100e-02 8.043800e-02 7.805000e-02 7.572300e-02 7.346100e-02 7.126000e-02 6.912000e-02 6.704000e-02 6.502100e-02 6.306100e-02 6.115800e-02 5.931600e-02 5.753100e-02 5.580400e-02 5.413500e-02 5.252300e-02 5.096900e-02 4.947300e-02 4.803300e-02 4.665200e-02 4.532900e-02 4.406400e-02 4.285800e-02 4.171300e-02 4.062600e-02 3.959900e-02 3.863300e-02 3.773000e-02 3.688800e-02 3.610800e-02 3.539100e-02 3.473500e-02 3.414100e-02 3.360800e-02 3.313500e-02 3.271800e-02 3.235300e-02 3.203500e-02 3.175700e-02 3.151000e-02 3.128200e-02 3.105500e-02 3.081100e-02 3.052600e-02 3.016800e-02 2.970200e-02 2.908400e-02 2.826000e-02 2.717300e-02 2.575500e-02 2.393800e-02 2.165100e-02 1.883800e-02 1.547200e-02 1.159400e-02 7.385200e-03 3.312900e-03 3.940300e-04 2.724400e-01 2.656900e-01 2.590900e-01 2.526200e-01 2.462800e-01 2.400800e-01 2.340100e-01 2.280700e-01 2.222600e-01 2.165700e-01 2.110100e-01 2.055600e-01 2.002300e-01 1.950100e-01 1.899100e-01 1.849200e-01 1.800400e-01 1.752600e-01 1.705900e-01 1.660300e-01 1.615600e-01 1.572000e-01 1.529300e-01 1.487600e-01 1.446800e-01 1.407000e-01 1.368100e-01 1.330000e-01 1.292900e-01 1.256600e-01 1.221100e-01 1.186500e-01 1.152700e-01 1.119700e-01 1.087500e-01 1.056100e-01 1.025500e-01 9.955700e-02 9.664000e-02 9.379600e-02 9.102500e-02 8.832300e-02 8.569200e-02 8.312800e-02 8.063300e-02 7.820400e-02 7.584100e-02 7.354300e-02 7.130900e-02 6.913900e-02 6.703200e-02 6.498700e-02 6.300300e-02 6.108200e-02 5.922000e-02 5.742000e-02 5.567900e-02 5.399800e-02 5.237800e-02 5.081800e-02 4.931700e-02 4.787600e-02 4.649500e-02 4.517500e-02 4.391600e-02 4.271900e-02 4.158200e-02 4.050600e-02 3.949400e-02 3.854500e-02 3.765800e-02 3.683500e-02 3.607500e-02 3.537700e-02 3.474100e-02 3.416600e-02 3.365100e-02 3.319100e-02 3.278200e-02 3.241800e-02 3.209400e-02 3.179600e-02 3.151600e-02 3.123400e-02 3.093100e-02 3.058300e-02 3.015800e-02 2.962000e-02 2.892700e-02 2.802600e-02 2.685900e-02 2.536500e-02 2.347600e-02 2.112800e-02 1.827500e-02 1.490100e-02 1.106000e-02 6.954300e-03 3.060400e-03 3.615500e-04 2.843000e-01 2.771900e-01 2.702500e-01 2.634500e-01 2.567800e-01 2.502600e-01 2.438800e-01 2.376400e-01 2.315300e-01 2.255600e-01 2.197100e-01 2.139900e-01 2.084000e-01 2.029200e-01 1.975700e-01 1.923300e-01 1.872100e-01 1.822000e-01 1.773000e-01 1.725200e-01 1.678400e-01 1.632600e-01 1.587900e-01 1.544200e-01 1.501600e-01 1.459900e-01 1.419100e-01 1.379300e-01 1.340400e-01 1.302400e-01 1.265400e-01 1.229200e-01 1.193800e-01 1.159400e-01 1.125700e-01 1.092900e-01 1.060800e-01 1.029600e-01 9.991700e-02 9.694900e-02 9.405600e-02 9.123800e-02 8.849200e-02 8.581800e-02 8.321700e-02 8.068400e-02 7.822200e-02 7.582700e-02 7.349900e-02 7.123800e-02 6.904300e-02 6.691400e-02 6.484800e-02 6.284800e-02 6.091000e-02 5.903500e-02 5.722300e-02 5.547300e-02 5.378700e-02 5.216400e-02 5.060100e-02 4.910000e-02 4.766200e-02 4.628600e-02 4.497300e-02 4.372500e-02 4.253800e-02 4.141400e-02 4.035500e-02 3.936000e-02 3.842900e-02 3.756200e-02 3.675900e-02 3.601900e-02 3.534100e-02 3.472400e-02 3.416600e-02 3.366400e-02 3.321100e-02 3.280200e-02 3.243000e-02 3.208300e-02 3.175100e-02 3.141300e-02 3.105100e-02 3.064000e-02 3.014800e-02 2.953800e-02 2.877100e-02 2.779100e-02 2.654600e-02 2.497400e-02 2.301300e-02 2.060500e-02 1.771100e-02 1.432900e-02 1.052700e-02 6.523300e-03 2.807800e-03 3.290700e-04 2.961500e-01 2.886900e-01 2.814000e-01 2.742700e-01 2.672700e-01 2.604400e-01 2.537400e-01 2.472100e-01 2.408100e-01 2.345400e-01 2.284200e-01 2.224200e-01 2.165600e-01 2.108300e-01 2.052200e-01 1.997400e-01 1.943800e-01 1.891400e-01 1.840200e-01 1.790100e-01 1.741100e-01 1.693300e-01 1.646600e-01 1.600900e-01 1.556300e-01 1.512700e-01 1.470100e-01 1.428500e-01 1.387900e-01 1.348300e-01 1.309600e-01 1.271800e-01 1.234900e-01 1.199000e-01 1.163900e-01 1.129600e-01 1.096200e-01 1.063700e-01 1.031900e-01 1.001000e-01 9.708800e-02 9.415200e-02 9.129200e-02 8.850800e-02 8.580100e-02 8.316400e-02 8.060200e-02 7.811000e-02 7.568800e-02 7.333700e-02 7.105500e-02 6.884000e-02 6.669200e-02 6.461300e-02 6.259900e-02 6.065100e-02 5.876700e-02 5.694900e-02 5.519700e-02 5.350900e-02 5.188400e-02 5.032400e-02 4.882800e-02 4.739800e-02 4.603100e-02 4.473100e-02 4.349400e-02 4.232100e-02 4.121500e-02 4.017600e-02 3.919900e-02 3.828900e-02 3.744300e-02 3.666100e-02 3.594100e-02 3.528200e-02 3.468200e-02 3.413700e-02 3.364000e-02 3.318500e-02 3.276600e-02 3.237000e-02 3.198600e-02 3.159200e-02 3.117100e-02 3.069700e-02 3.013800e-02 2.945700e-02 2.861400e-02 2.755700e-02 2.623200e-02 2.458300e-02 2.255000e-02 2.008200e-02 1.714800e-02 1.375700e-02 9.993500e-03 6.092400e-03 2.555300e-03 2.965900e-04 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/diffraction/2006/h12006jetspdf_gluon_fitA.data������������������������������0000644�0001750�0001750�00000121343�11754474775�025476� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������-3.000000e+00 -2.969741e+00 -2.939482e+00 -2.909223e+00 -2.878964e+00 -2.848705e+00 -2.818446e+00 -2.788187e+00 -2.757928e+00 -2.727670e+00 -2.697411e+00 -2.667152e+00 -2.636893e+00 -2.606634e+00 -2.576375e+00 -2.546116e+00 -2.515857e+00 -2.485598e+00 -2.455339e+00 -2.425080e+00 -2.394821e+00 -2.364562e+00 -2.334303e+00 -2.304044e+00 -2.273785e+00 -2.243526e+00 -2.213268e+00 -2.183009e+00 -2.152750e+00 -2.122491e+00 -2.092232e+00 -2.061973e+00 -2.031714e+00 -2.001455e+00 -1.971196e+00 -1.940937e+00 -1.910678e+00 -1.880419e+00 -1.850160e+00 -1.819901e+00 -1.789642e+00 -1.759383e+00 -1.729124e+00 -1.698866e+00 -1.668607e+00 -1.638348e+00 -1.608089e+00 -1.577830e+00 -1.547571e+00 -1.517312e+00 -1.487053e+00 -1.456794e+00 -1.426535e+00 -1.396276e+00 -1.366017e+00 -1.335758e+00 -1.305499e+00 -1.275240e+00 -1.244981e+00 -1.214722e+00 -1.184464e+00 -1.154205e+00 -1.123946e+00 -1.093687e+00 -1.063428e+00 -1.033169e+00 -1.002910e+00 -9.726509e-01 -9.423920e-01 -9.121330e-01 -8.818741e-01 -8.516152e-01 -8.213562e-01 -7.910973e-01 -7.608383e-01 -7.305794e-01 -7.003205e-01 -6.700615e-01 -6.398026e-01 -6.095436e-01 -5.792847e-01 -5.490257e-01 -5.187668e-01 -4.885079e-01 -4.582489e-01 -4.279900e-01 -3.977310e-01 -3.674721e-01 -3.372132e-01 -3.069542e-01 -2.766953e-01 -2.464363e-01 -2.161774e-01 -1.859185e-01 -1.556595e-01 -1.254006e-01 -9.514163e-02 -6.488269e-02 -3.462375e-02 -4.364805e-03 1.000000e+00 1.426867e+00 2.035949e+00 2.905029e+00 4.145090e+00 5.914492e+00 8.439194e+00 1.204161e+01 1.718177e+01 2.451610e+01 3.498122e+01 4.991354e+01 7.121999e+01 1.016215e+02 1.450003e+02 2.068961e+02 2.952133e+02 4.212301e+02 6.010393e+02 8.576031e+02 1.223686e+03 1.746037e+03 2.491362e+03 3.554842e+03 5.072287e+03 7.237479e+03 1.032692e+04 1.473514e+04 2.102509e+04 3.000000e+04 -8.940300e-02 -8.778600e-02 -8.614900e-02 -8.453100e-02 -8.291200e-02 -8.129300e-02 -7.967200e-02 -7.807000e-02 -7.644800e-02 -7.482400e-02 -7.321900e-02 -7.161200e-02 -6.998500e-02 -6.837400e-02 -6.676400e-02 -6.515100e-02 -6.353600e-02 -6.191900e-02 -6.028000e-02 -5.867800e-02 -5.707400e-02 -5.544800e-02 -5.381800e-02 -5.218600e-02 -5.056900e-02 -4.893000e-02 -4.730600e-02 -4.567800e-02 -4.402700e-02 -4.239000e-02 -4.074800e-02 -3.910100e-02 -3.744700e-02 -3.578700e-02 -3.414100e-02 -3.246700e-02 -3.078600e-02 -2.911500e-02 -2.741700e-02 -2.568800e-02 -2.396800e-02 -2.223700e-02 -2.049400e-02 -1.873800e-02 -1.694900e-02 -1.514300e-02 -1.332100e-02 -1.146200e-02 -9.582800e-03 -7.682800e-03 -5.760500e-03 -3.813800e-03 -1.803800e-03 2.377500e-04 2.310300e-03 4.415300e-03 6.594500e-03 8.815400e-03 1.107900e-02 1.342700e-02 1.582800e-02 1.830400e-02 2.084100e-02 2.348200e-02 2.619800e-02 2.903100e-02 3.195600e-02 3.499500e-02 3.816100e-02 4.148400e-02 4.494100e-02 4.856300e-02 5.236800e-02 5.639300e-02 6.064600e-02 6.511400e-02 6.987700e-02 7.494200e-02 8.036600e-02 8.620200e-02 9.249300e-02 9.931300e-02 1.067500e-01 1.149300e-01 1.239600e-01 1.340500e-01 1.454400e-01 1.584800e-01 1.735700e-01 1.914100e-01 2.129100e-01 2.395200e-01 2.736500e-01 3.193200e-01 3.840900e-01 4.836800e-01 6.564200e-01 1.024400e+00 2.480500e+00 3.908100e-01 5.919500e-02 5.979200e-02 6.039600e-02 6.099300e-02 6.159100e-02 6.219000e-02 6.279000e-02 6.338400e-02 6.398600e-02 6.458900e-02 6.518600e-02 6.578500e-02 6.639200e-02 6.699400e-02 6.759600e-02 6.820100e-02 6.880800e-02 6.941700e-02 7.003600e-02 7.064200e-02 7.125000e-02 7.186800e-02 7.249000e-02 7.311500e-02 7.373600e-02 7.436700e-02 7.499500e-02 7.562700e-02 7.627000e-02 7.691200e-02 7.755800e-02 7.821000e-02 7.886900e-02 7.953300e-02 8.019600e-02 8.087500e-02 8.156100e-02 8.224800e-02 8.295200e-02 8.367300e-02 8.439700e-02 8.513200e-02 8.588000e-02 8.664100e-02 8.742300e-02 8.822000e-02 8.903500e-02 8.987400e-02 9.073200e-02 9.161100e-02 9.251300e-02 9.343900e-02 9.440500e-02 9.540100e-02 9.642800e-02 9.748700e-02 9.859700e-02 9.974700e-02 1.009400e-01 1.021900e-01 1.035000e-01 1.048700e-01 1.062900e-01 1.078000e-01 1.093900e-01 1.110600e-01 1.128300e-01 1.147000e-01 1.166800e-01 1.187900e-01 1.210400e-01 1.234400e-01 1.260100e-01 1.287800e-01 1.317600e-01 1.349700e-01 1.384500e-01 1.422300e-01 1.463600e-01 1.508900e-01 1.558700e-01 1.613800e-01 1.675000e-01 1.743700e-01 1.821000e-01 1.908900e-01 2.009900e-01 2.127000e-01 2.264600e-01 2.428900e-01 2.628500e-01 2.876600e-01 3.194100e-01 3.615400e-01 4.202700e-01 5.080100e-01 6.535100e-01 9.421800e-01 1.871200e+00 2.907200e-01 2.112100e-01 2.107100e-01 2.102000e-01 2.097000e-01 2.092000e-01 2.087000e-01 2.082000e-01 2.077000e-01 2.072100e-01 2.067200e-01 2.062300e-01 2.057400e-01 2.052600e-01 2.047800e-01 2.043000e-01 2.038200e-01 2.033500e-01 2.028800e-01 2.024200e-01 2.019500e-01 2.014900e-01 2.010400e-01 2.005800e-01 2.001300e-01 1.996900e-01 1.992500e-01 1.988100e-01 1.983800e-01 1.979600e-01 1.975400e-01 1.971300e-01 1.967200e-01 1.963200e-01 1.959300e-01 1.955500e-01 1.951700e-01 1.948000e-01 1.944400e-01 1.940900e-01 1.937500e-01 1.934200e-01 1.931000e-01 1.927900e-01 1.925000e-01 1.922200e-01 1.919600e-01 1.917100e-01 1.914700e-01 1.912600e-01 1.910700e-01 1.908900e-01 1.907400e-01 1.906200e-01 1.905200e-01 1.904500e-01 1.904100e-01 1.904000e-01 1.904300e-01 1.905100e-01 1.906200e-01 1.907800e-01 1.910000e-01 1.912700e-01 1.916100e-01 1.920100e-01 1.924900e-01 1.930500e-01 1.937100e-01 1.944700e-01 1.953400e-01 1.963400e-01 1.974800e-01 1.987800e-01 2.002600e-01 2.019400e-01 2.038400e-01 2.060100e-01 2.084700e-01 2.112700e-01 2.144500e-01 2.180900e-01 2.222600e-01 2.270400e-01 2.325500e-01 2.389400e-01 2.463900e-01 2.551300e-01 2.654700e-01 2.778200e-01 2.927500e-01 3.110600e-01 3.339100e-01 3.630800e-01 4.014000e-01 4.537100e-01 5.290600e-01 6.466300e-01 8.550400e-01 1.284600e+00 1.945600e-01 3.977400e-01 3.952400e-01 3.927500e-01 3.902700e-01 3.878100e-01 3.853500e-01 3.829100e-01 3.804900e-01 3.780700e-01 3.756700e-01 3.732800e-01 3.709000e-01 3.685300e-01 3.661800e-01 3.638400e-01 3.615100e-01 3.592000e-01 3.568900e-01 3.546000e-01 3.523300e-01 3.500600e-01 3.478100e-01 3.455700e-01 3.433500e-01 3.411400e-01 3.389400e-01 3.367500e-01 3.345800e-01 3.324300e-01 3.302900e-01 3.281600e-01 3.260500e-01 3.239600e-01 3.218800e-01 3.198200e-01 3.177700e-01 3.157400e-01 3.137300e-01 3.117300e-01 3.097400e-01 3.077800e-01 3.058300e-01 3.039000e-01 3.019900e-01 3.001000e-01 2.982300e-01 2.963800e-01 2.945500e-01 2.927400e-01 2.909600e-01 2.892000e-01 2.874700e-01 2.857700e-01 2.840900e-01 2.824500e-01 2.808400e-01 2.792700e-01 2.777300e-01 2.762400e-01 2.747800e-01 2.733800e-01 2.720300e-01 2.707300e-01 2.695000e-01 2.683400e-01 2.672400e-01 2.662400e-01 2.653200e-01 2.645000e-01 2.637900e-01 2.632100e-01 2.627700e-01 2.624800e-01 2.623700e-01 2.624500e-01 2.627600e-01 2.633300e-01 2.641800e-01 2.653700e-01 2.669500e-01 2.689600e-01 2.715000e-01 2.746400e-01 2.784900e-01 2.831900e-01 2.889000e-01 2.958400e-01 3.042900e-01 3.146000e-01 3.272700e-01 3.429500e-01 3.625800e-01 3.875400e-01 4.199000e-01 4.629800e-01 5.224300e-01 6.085500e-01 7.393200e-01 8.932800e-01 1.318900e-01 6.186400e-01 6.131000e-01 6.075900e-01 6.021200e-01 5.966900e-01 5.913000e-01 5.859400e-01 5.806100e-01 5.753300e-01 5.700800e-01 5.648700e-01 5.596900e-01 5.545500e-01 5.494400e-01 5.443700e-01 5.393300e-01 5.343300e-01 5.293700e-01 5.244400e-01 5.195400e-01 5.146800e-01 5.098600e-01 5.050700e-01 5.003100e-01 4.955900e-01 4.909100e-01 4.862600e-01 4.816400e-01 4.770600e-01 4.725200e-01 4.680100e-01 4.635400e-01 4.591000e-01 4.547000e-01 4.503300e-01 4.460000e-01 4.417000e-01 4.374400e-01 4.332100e-01 4.290100e-01 4.248500e-01 4.207300e-01 4.166400e-01 4.125800e-01 4.085600e-01 4.045800e-01 4.006400e-01 3.967300e-01 3.928500e-01 3.890200e-01 3.852300e-01 3.814800e-01 3.777700e-01 3.741000e-01 3.704800e-01 3.669000e-01 3.633700e-01 3.598900e-01 3.564600e-01 3.530900e-01 3.497800e-01 3.465300e-01 3.433500e-01 3.402400e-01 3.372100e-01 3.342600e-01 3.314000e-01 3.286500e-01 3.260000e-01 3.234700e-01 3.210800e-01 3.188300e-01 3.167500e-01 3.148400e-01 3.131500e-01 3.116800e-01 3.104700e-01 3.095500e-01 3.089600e-01 3.087600e-01 3.089900e-01 3.097300e-01 3.110400e-01 3.130400e-01 3.158400e-01 3.195800e-01 3.244500e-01 3.306800e-01 3.385600e-01 3.484800e-01 3.609500e-01 3.766400e-01 3.965100e-01 4.219000e-01 4.547300e-01 4.978100e-01 5.547300e-01 6.245800e-01 6.419400e-01 9.263500e-02 8.685300e-01 8.589100e-01 8.493700e-01 8.399100e-01 8.305300e-01 8.212300e-01 8.120000e-01 8.028600e-01 7.937900e-01 7.848000e-01 7.758800e-01 7.670400e-01 7.582800e-01 7.495900e-01 7.409800e-01 7.324400e-01 7.239700e-01 7.155800e-01 7.072600e-01 6.990100e-01 6.908400e-01 6.827300e-01 6.747000e-01 6.667400e-01 6.588500e-01 6.510300e-01 6.432800e-01 6.356000e-01 6.279900e-01 6.204500e-01 6.129700e-01 6.055700e-01 5.982400e-01 5.909800e-01 5.837800e-01 5.766500e-01 5.695800e-01 5.625800e-01 5.556500e-01 5.487700e-01 5.419700e-01 5.352200e-01 5.285500e-01 5.219400e-01 5.153900e-01 5.089000e-01 5.024800e-01 4.961200e-01 4.898300e-01 4.836100e-01 4.774500e-01 4.713500e-01 4.653200e-01 4.593700e-01 4.534700e-01 4.476500e-01 4.419000e-01 4.362300e-01 4.306300e-01 4.251100e-01 4.196700e-01 4.143100e-01 4.090500e-01 4.038700e-01 3.988000e-01 3.938300e-01 3.889700e-01 3.842400e-01 3.796300e-01 3.751600e-01 3.708400e-01 3.666800e-01 3.627100e-01 3.589300e-01 3.553700e-01 3.520500e-01 3.490000e-01 3.462500e-01 3.438400e-01 3.418000e-01 3.402000e-01 3.390900e-01 3.385300e-01 3.386200e-01 3.394400e-01 3.411300e-01 3.438400e-01 3.477300e-01 3.530300e-01 3.600300e-01 3.690800e-01 3.806200e-01 3.952200e-01 4.135900e-01 4.365500e-01 4.647800e-01 4.974700e-01 5.241900e-01 4.760900e-01 6.733400e-02 1.141700e+00 1.127100e+00 1.112500e+00 1.098200e+00 1.083900e+00 1.069800e+00 1.055900e+00 1.042100e+00 1.028400e+00 1.014800e+00 1.001400e+00 9.881700e-01 9.750300e-01 9.620200e-01 9.491400e-01 9.363900e-01 9.237800e-01 9.112800e-01 8.989200e-01 8.866900e-01 8.745700e-01 8.625900e-01 8.507200e-01 8.389800e-01 8.273600e-01 8.158600e-01 8.044800e-01 7.932200e-01 7.820800e-01 7.710600e-01 7.601500e-01 7.493700e-01 7.386900e-01 7.281400e-01 7.176900e-01 7.073500e-01 6.971300e-01 6.870100e-01 6.770000e-01 6.671000e-01 6.573000e-01 6.476100e-01 6.380300e-01 6.285500e-01 6.191800e-01 6.099100e-01 6.007400e-01 5.916800e-01 5.827200e-01 5.738600e-01 5.651100e-01 5.564500e-01 5.479000e-01 5.394600e-01 5.311100e-01 5.228800e-01 5.147400e-01 5.067200e-01 4.988100e-01 4.910000e-01 4.833100e-01 4.757400e-01 4.682900e-01 4.609600e-01 4.537600e-01 4.466900e-01 4.397700e-01 4.329900e-01 4.263700e-01 4.199100e-01 4.136400e-01 4.075500e-01 4.016600e-01 3.960000e-01 3.905700e-01 3.854100e-01 3.805300e-01 3.759600e-01 3.717400e-01 3.678900e-01 3.644800e-01 3.615400e-01 3.591400e-01 3.573400e-01 3.562200e-01 3.558700e-01 3.564200e-01 3.579900e-01 3.607300e-01 3.648400e-01 3.705200e-01 3.780200e-01 3.875800e-01 3.994200e-01 4.135200e-01 4.291300e-01 4.428300e-01 4.403600e-01 3.621500e-01 5.030600e-02 1.435600e+00 1.414900e+00 1.394400e+00 1.374200e+00 1.354200e+00 1.334400e+00 1.314800e+00 1.295500e+00 1.276400e+00 1.257500e+00 1.238800e+00 1.220300e+00 1.202000e+00 1.184000e+00 1.166100e+00 1.148500e+00 1.131100e+00 1.113800e+00 1.096800e+00 1.080000e+00 1.063300e+00 1.046900e+00 1.030600e+00 1.014600e+00 9.987100e-01 9.830300e-01 9.675400e-01 9.522300e-01 9.371000e-01 9.221600e-01 9.074000e-01 8.928200e-01 8.784100e-01 8.641800e-01 8.501200e-01 8.362300e-01 8.225100e-01 8.089500e-01 7.955600e-01 7.823300e-01 7.692700e-01 7.563600e-01 7.436200e-01 7.310300e-01 7.186100e-01 7.063300e-01 6.942100e-01 6.822400e-01 6.704300e-01 6.587700e-01 6.472600e-01 6.359000e-01 6.246900e-01 6.136300e-01 6.027100e-01 5.919500e-01 5.813400e-01 5.708800e-01 5.605700e-01 5.504100e-01 5.404100e-01 5.305700e-01 5.208900e-01 5.113700e-01 5.020200e-01 4.928500e-01 4.838500e-01 4.750400e-01 4.664100e-01 4.579900e-01 4.497800e-01 4.417900e-01 4.340400e-01 4.265300e-01 4.192900e-01 4.123300e-01 4.056800e-01 3.993600e-01 3.933900e-01 3.878200e-01 3.826700e-01 3.779800e-01 3.738100e-01 3.702100e-01 3.672300e-01 3.649500e-01 3.634400e-01 3.627900e-01 3.631000e-01 3.644800e-01 3.670100e-01 3.707800e-01 3.757900e-01 3.818900e-01 3.885200e-01 3.940700e-01 3.938600e-01 3.731900e-01 2.843800e-01 3.891500e-02 1.740600e+00 1.713300e+00 1.686300e+00 1.659600e+00 1.633300e+00 1.607300e+00 1.581600e+00 1.556200e+00 1.531100e+00 1.506400e+00 1.481900e+00 1.457800e+00 1.434000e+00 1.410500e+00 1.387200e+00 1.364300e+00 1.341700e+00 1.319300e+00 1.297200e+00 1.275500e+00 1.254000e+00 1.232700e+00 1.211800e+00 1.191100e+00 1.170700e+00 1.150500e+00 1.130700e+00 1.111000e+00 1.091700e+00 1.072600e+00 1.053700e+00 1.035100e+00 1.016800e+00 9.986700e-01 9.808100e-01 9.631800e-01 9.457800e-01 9.286200e-01 9.116900e-01 8.949900e-01 8.785100e-01 8.622600e-01 8.462300e-01 8.304200e-01 8.148200e-01 7.994400e-01 7.842700e-01 7.693100e-01 7.545700e-01 7.400200e-01 7.256900e-01 7.115600e-01 6.976300e-01 6.839000e-01 6.703800e-01 6.570600e-01 6.439300e-01 6.310100e-01 6.182900e-01 6.057700e-01 5.934500e-01 5.813400e-01 5.694300e-01 5.577300e-01 5.462400e-01 5.349700e-01 5.239200e-01 5.130900e-01 5.025000e-01 4.921500e-01 4.820400e-01 4.721900e-01 4.626100e-01 4.533100e-01 4.443000e-01 4.356100e-01 4.272400e-01 4.192300e-01 4.115900e-01 4.043400e-01 3.975200e-01 3.911600e-01 3.852900e-01 3.799600e-01 3.752000e-01 3.710600e-01 3.675800e-01 3.648300e-01 3.628300e-01 3.616200e-01 3.611900e-01 3.614900e-01 3.623300e-01 3.632700e-01 3.633500e-01 3.603900e-01 3.491200e-01 3.155300e-01 2.232900e-01 3.007800e-02 2.057900e+00 2.023200e+00 1.988900e+00 1.955100e+00 1.921800e+00 1.888900e+00 1.856400e+00 1.824400e+00 1.792800e+00 1.761600e+00 1.730900e+00 1.700600e+00 1.670700e+00 1.641100e+00 1.612100e+00 1.583400e+00 1.555100e+00 1.527200e+00 1.499600e+00 1.472500e+00 1.445700e+00 1.419400e+00 1.393300e+00 1.367700e+00 1.342400e+00 1.317500e+00 1.292900e+00 1.268700e+00 1.244800e+00 1.221300e+00 1.198100e+00 1.175200e+00 1.152700e+00 1.130500e+00 1.108600e+00 1.087100e+00 1.065800e+00 1.044900e+00 1.024300e+00 1.003900e+00 9.838900e-01 9.641500e-01 9.447100e-01 9.255600e-01 9.067000e-01 8.881100e-01 8.698000e-01 8.517700e-01 8.340200e-01 8.165400e-01 7.993200e-01 7.823700e-01 7.656900e-01 7.492700e-01 7.331000e-01 7.172000e-01 7.015500e-01 6.861600e-01 6.710300e-01 6.561500e-01 6.415300e-01 6.271600e-01 6.130500e-01 5.992000e-01 5.856100e-01 5.722900e-01 5.592300e-01 5.464400e-01 5.339400e-01 5.217100e-01 5.097700e-01 4.981300e-01 4.867900e-01 4.757800e-01 4.650900e-01 4.547400e-01 4.447400e-01 4.351200e-01 4.258900e-01 4.170700e-01 4.086700e-01 4.007400e-01 3.932800e-01 3.863200e-01 3.798900e-01 3.740200e-01 3.687100e-01 3.640000e-01 3.598600e-01 3.562800e-01 3.531700e-01 3.503600e-01 3.475300e-01 3.440600e-01 3.387300e-01 3.290900e-01 3.098200e-01 2.685100e-01 1.784600e-01 2.369800e-02 2.384900e+00 2.342100e+00 2.299900e+00 2.258300e+00 2.217400e+00 2.177000e+00 2.137200e+00 2.097900e+00 2.059300e+00 2.021200e+00 1.983600e+00 1.946600e+00 1.910200e+00 1.874200e+00 1.838800e+00 1.804000e+00 1.769600e+00 1.735800e+00 1.702400e+00 1.669600e+00 1.637300e+00 1.605400e+00 1.574000e+00 1.543100e+00 1.512700e+00 1.482700e+00 1.453200e+00 1.424200e+00 1.395500e+00 1.367400e+00 1.339600e+00 1.312300e+00 1.285500e+00 1.259000e+00 1.233000e+00 1.207300e+00 1.182100e+00 1.157200e+00 1.132800e+00 1.108700e+00 1.085000e+00 1.061700e+00 1.038800e+00 1.016200e+00 9.940200e-01 9.721700e-01 9.506800e-01 9.295400e-01 9.087500e-01 8.883000e-01 8.681800e-01 8.484100e-01 8.289600e-01 8.098400e-01 7.910400e-01 7.725700e-01 7.544200e-01 7.365900e-01 7.190700e-01 7.018700e-01 6.849800e-01 6.684000e-01 6.521400e-01 6.362000e-01 6.205600e-01 6.052500e-01 5.902500e-01 5.755700e-01 5.612200e-01 5.471900e-01 5.335000e-01 5.201500e-01 5.071500e-01 4.945000e-01 4.822200e-01 4.703000e-01 4.587800e-01 4.476500e-01 4.369300e-01 4.266300e-01 4.167800e-01 4.073700e-01 3.984300e-01 3.899700e-01 3.820000e-01 3.745200e-01 3.675400e-01 3.610300e-01 3.549600e-01 3.492400e-01 3.437300e-01 3.382000e-01 3.322100e-01 3.250300e-01 3.153200e-01 3.005700e-01 2.757300e-01 2.302600e-01 1.450700e-01 1.902000e-02 2.718800e+00 2.667300e+00 2.616700e+00 2.566800e+00 2.517700e+00 2.469300e+00 2.421600e+00 2.374700e+00 2.328600e+00 2.283100e+00 2.238300e+00 2.194300e+00 2.150900e+00 2.108200e+00 2.066200e+00 2.024800e+00 1.984100e+00 1.944000e+00 1.904600e+00 1.865700e+00 1.827500e+00 1.790000e+00 1.753000e+00 1.716600e+00 1.680800e+00 1.645600e+00 1.611000e+00 1.576900e+00 1.543400e+00 1.510400e+00 1.478000e+00 1.446100e+00 1.414700e+00 1.383900e+00 1.353600e+00 1.323800e+00 1.294400e+00 1.265600e+00 1.237300e+00 1.209400e+00 1.182000e+00 1.155100e+00 1.128600e+00 1.102600e+00 1.077000e+00 1.051900e+00 1.027200e+00 1.002900e+00 9.791200e-01 9.557000e-01 9.326900e-01 9.101000e-01 8.879000e-01 8.661100e-01 8.447100e-01 8.237100e-01 8.030800e-01 7.828500e-01 7.630000e-01 7.435200e-01 7.244200e-01 7.057000e-01 6.873400e-01 6.693600e-01 6.517500e-01 6.345100e-01 6.176400e-01 6.011500e-01 5.850400e-01 5.693000e-01 5.539400e-01 5.389600e-01 5.243800e-01 5.101900e-01 4.964000e-01 4.830200e-01 4.700600e-01 4.575100e-01 4.454000e-01 4.337300e-01 4.225100e-01 4.117400e-01 4.014300e-01 3.915800e-01 3.821900e-01 3.732500e-01 3.647300e-01 3.565900e-01 3.487600e-01 3.411200e-01 3.334900e-01 3.255800e-01 3.168800e-01 3.066000e-01 2.933600e-01 2.747200e-01 2.460800e-01 1.987100e-01 1.194500e-01 1.547600e-02 3.057700e+00 2.997100e+00 2.937500e+00 2.878800e+00 2.821100e+00 2.764300e+00 2.708400e+00 2.653400e+00 2.599300e+00 2.546100e+00 2.493800e+00 2.442300e+00 2.391700e+00 2.341900e+00 2.293000e+00 2.244800e+00 2.197500e+00 2.150900e+00 2.105100e+00 2.060100e+00 2.015900e+00 1.972400e+00 1.929600e+00 1.887600e+00 1.846300e+00 1.805600e+00 1.765700e+00 1.726500e+00 1.688000e+00 1.650100e+00 1.612900e+00 1.576300e+00 1.540400e+00 1.505100e+00 1.470400e+00 1.436400e+00 1.402900e+00 1.370000e+00 1.337800e+00 1.306000e+00 1.274900e+00 1.244300e+00 1.214300e+00 1.184900e+00 1.155900e+00 1.127500e+00 1.099600e+00 1.072300e+00 1.045400e+00 1.019000e+00 9.931600e-01 9.677700e-01 9.428700e-01 9.184400e-01 8.944800e-01 8.709900e-01 8.479500e-01 8.253700e-01 8.032300e-01 7.815400e-01 7.602900e-01 7.394800e-01 7.191100e-01 6.991600e-01 6.796500e-01 6.605600e-01 6.419100e-01 6.236800e-01 6.058800e-01 5.885000e-01 5.715600e-01 5.550400e-01 5.389600e-01 5.233200e-01 5.081200e-01 4.933600e-01 4.790500e-01 4.651900e-01 4.517800e-01 4.388300e-01 4.263500e-01 4.143100e-01 4.027400e-01 3.916100e-01 3.809200e-01 3.706300e-01 3.607100e-01 3.510900e-01 3.416800e-01 3.323300e-01 3.228400e-01 3.128500e-01 3.018400e-01 2.890000e-01 2.729400e-01 2.513800e-01 2.202200e-01 1.724500e-01 9.939100e-02 1.273600e-02 3.400100e+00 3.329900e+00 3.260900e+00 3.193000e+00 3.126300e+00 3.060700e+00 2.996200e+00 2.932800e+00 2.870500e+00 2.809300e+00 2.749100e+00 2.689900e+00 2.631800e+00 2.574600e+00 2.518500e+00 2.463300e+00 2.409100e+00 2.355900e+00 2.303600e+00 2.252200e+00 2.201700e+00 2.152100e+00 2.103400e+00 2.055600e+00 2.008600e+00 1.962500e+00 1.917200e+00 1.872700e+00 1.829000e+00 1.786200e+00 1.744100e+00 1.702800e+00 1.662200e+00 1.622400e+00 1.583300e+00 1.545000e+00 1.507400e+00 1.470400e+00 1.434200e+00 1.398700e+00 1.363800e+00 1.329600e+00 1.296000e+00 1.263100e+00 1.230800e+00 1.199100e+00 1.168100e+00 1.137600e+00 1.107800e+00 1.078500e+00 1.049800e+00 1.021700e+00 9.940900e-01 9.670800e-01 9.406100e-01 9.146900e-01 8.892900e-01 8.644200e-01 8.400700e-01 8.162300e-01 7.929000e-01 7.700800e-01 7.477500e-01 7.259200e-01 7.045800e-01 6.837300e-01 6.633600e-01 6.434700e-01 6.240700e-01 6.051500e-01 5.867000e-01 5.687400e-01 5.512500e-01 5.342400e-01 5.177100e-01 5.016600e-01 4.860900e-01 4.710000e-01 4.564000e-01 4.422600e-01 4.286100e-01 4.154100e-01 4.026700e-01 3.903700e-01 3.784900e-01 3.669700e-01 3.557800e-01 3.448300e-01 3.340100e-01 3.231500e-01 3.120200e-01 3.002500e-01 2.873000e-01 2.723400e-01 2.540800e-01 2.303800e-01 1.977100e-01 1.505200e-01 8.353300e-02 1.059400e-02 3.744800e+00 3.664600e+00 3.585800e+00 3.508300e+00 3.432300e+00 3.357500e+00 3.284100e+00 3.212000e+00 3.141200e+00 3.071600e+00 3.003300e+00 2.936200e+00 2.870300e+00 2.805600e+00 2.742100e+00 2.679800e+00 2.618500e+00 2.558400e+00 2.499400e+00 2.441500e+00 2.384600e+00 2.328900e+00 2.274100e+00 2.220400e+00 2.167600e+00 2.115900e+00 2.065100e+00 2.015300e+00 1.966500e+00 1.918600e+00 1.871600e+00 1.825500e+00 1.780200e+00 1.735900e+00 1.692400e+00 1.649800e+00 1.608000e+00 1.567000e+00 1.526800e+00 1.487400e+00 1.448800e+00 1.410900e+00 1.373800e+00 1.337500e+00 1.301900e+00 1.267000e+00 1.232800e+00 1.199300e+00 1.166500e+00 1.134300e+00 1.102900e+00 1.072100e+00 1.041900e+00 1.012300e+00 9.834200e-01 9.551300e-01 9.274400e-01 9.003500e-01 8.738500e-01 8.479400e-01 8.226000e-01 7.978300e-01 7.736300e-01 7.499900e-01 7.269000e-01 7.043600e-01 6.823600e-01 6.609000e-01 6.399700e-01 6.195800e-01 5.997200e-01 5.803800e-01 5.615700e-01 5.432800e-01 5.255100e-01 5.082500e-01 4.915100e-01 4.752800e-01 4.595500e-01 4.443200e-01 4.295800e-01 4.153200e-01 4.015100e-01 3.881400e-01 3.751600e-01 3.625400e-01 3.502000e-01 3.380600e-01 3.259800e-01 3.137900e-01 3.012200e-01 2.879200e-01 2.733400e-01 2.566700e-01 2.366900e-01 2.114800e-01 1.780200e-01 1.320600e-01 7.082100e-02 8.895800e-03 4.090600e+00 4.000000e+00 3.911100e+00 3.823800e+00 3.738100e+00 3.654000e+00 3.571400e+00 3.490400e+00 3.410800e+00 3.332700e+00 3.256000e+00 3.180800e+00 3.107000e+00 3.034600e+00 2.963500e+00 2.893800e+00 2.825400e+00 2.758300e+00 2.692500e+00 2.627900e+00 2.564600e+00 2.502500e+00 2.441600e+00 2.381900e+00 2.323400e+00 2.266000e+00 2.209700e+00 2.154500e+00 2.100400e+00 2.047400e+00 1.995500e+00 1.944600e+00 1.894700e+00 1.845800e+00 1.797900e+00 1.750900e+00 1.705000e+00 1.659900e+00 1.615800e+00 1.572600e+00 1.530200e+00 1.488800e+00 1.448200e+00 1.408500e+00 1.369600e+00 1.331500e+00 1.294200e+00 1.257700e+00 1.222000e+00 1.187000e+00 1.152800e+00 1.119400e+00 1.086600e+00 1.054600e+00 1.023300e+00 9.927400e-01 9.628200e-01 9.335800e-01 9.050000e-01 8.770800e-01 8.498100e-01 8.231700e-01 7.971700e-01 7.717800e-01 7.470100e-01 7.228600e-01 6.993000e-01 6.763400e-01 6.539700e-01 6.321800e-01 6.109800e-01 5.903400e-01 5.702800e-01 5.507800e-01 5.318400e-01 5.134600e-01 4.956200e-01 4.783200e-01 4.615600e-01 4.453100e-01 4.295700e-01 4.143200e-01 3.995300e-01 3.851700e-01 3.712000e-01 3.575600e-01 3.441800e-01 3.309600e-01 3.177600e-01 3.043800e-01 2.905700e-01 2.759500e-01 2.600000e-01 2.419300e-01 2.206200e-01 1.943600e-01 1.606400e-01 1.162700e-01 6.037900e-02 7.513500e-03 4.436800e+00 4.335600e+00 4.236300e+00 4.138800e+00 4.043200e+00 3.949500e+00 3.857500e+00 3.767200e+00 3.678700e+00 3.591800e+00 3.506700e+00 3.423200e+00 3.341300e+00 3.261000e+00 3.182200e+00 3.105000e+00 3.029300e+00 2.955100e+00 2.882400e+00 2.811100e+00 2.741200e+00 2.672800e+00 2.605700e+00 2.539900e+00 2.475500e+00 2.412400e+00 2.350600e+00 2.290000e+00 2.230700e+00 2.172600e+00 2.115600e+00 2.059900e+00 2.005300e+00 1.951900e+00 1.899600e+00 1.848400e+00 1.798200e+00 1.749100e+00 1.701100e+00 1.654100e+00 1.608100e+00 1.563100e+00 1.519000e+00 1.475900e+00 1.433800e+00 1.392500e+00 1.352200e+00 1.312800e+00 1.274200e+00 1.236500e+00 1.199700e+00 1.163600e+00 1.128400e+00 1.094000e+00 1.060400e+00 1.027600e+00 9.955000e-01 9.641700e-01 9.335900e-01 9.037300e-01 8.745900e-01 8.461600e-01 8.184300e-01 7.913800e-01 7.650100e-01 7.393100e-01 7.142700e-01 6.898900e-01 6.661500e-01 6.430500e-01 6.205700e-01 5.987200e-01 5.774900e-01 5.568600e-01 5.368300e-01 5.173900e-01 4.985300e-01 4.802500e-01 4.625200e-01 4.453300e-01 4.286700e-01 4.125100e-01 3.968200e-01 3.815600e-01 3.666900e-01 3.521300e-01 3.378200e-01 3.236400e-01 3.094400e-01 2.950400e-01 2.801500e-01 2.644200e-01 2.473300e-01 2.281600e-01 2.058700e-01 1.789700e-01 1.453900e-01 1.028500e-01 5.186800e-02 6.398000e-03 4.782500e+00 4.670400e+00 4.560500e+00 4.452700e+00 4.346900e+00 4.243300e+00 4.141700e+00 4.042000e+00 3.944400e+00 3.848600e+00 3.754800e+00 3.662800e+00 3.572700e+00 3.484400e+00 3.397900e+00 3.313100e+00 3.230000e+00 3.148700e+00 3.068900e+00 2.990900e+00 2.914400e+00 2.839500e+00 2.766100e+00 2.694300e+00 2.624000e+00 2.555100e+00 2.487700e+00 2.421700e+00 2.357100e+00 2.293900e+00 2.232100e+00 2.171500e+00 2.112300e+00 2.054300e+00 1.997600e+00 1.942100e+00 1.887900e+00 1.834800e+00 1.782900e+00 1.732100e+00 1.682500e+00 1.633900e+00 1.586500e+00 1.540100e+00 1.494700e+00 1.450400e+00 1.407100e+00 1.364800e+00 1.323500e+00 1.283100e+00 1.243600e+00 1.205100e+00 1.167500e+00 1.130700e+00 1.094800e+00 1.059800e+00 1.025700e+00 9.923400e-01 9.598200e-01 9.281100e-01 8.971800e-01 8.670300e-01 8.376400e-01 8.090000e-01 7.811000e-01 7.539400e-01 7.274900e-01 7.017600e-01 6.767200e-01 6.523800e-01 6.287100e-01 6.057100e-01 5.833800e-01 5.616900e-01 5.406400e-01 5.202200e-01 5.004200e-01 4.812200e-01 4.626000e-01 4.445500e-01 4.270400e-01 4.100500e-01 3.935300e-01 3.774600e-01 3.617700e-01 3.463900e-01 3.312500e-01 3.162100e-01 3.011400e-01 2.858300e-01 2.700300e-01 2.533600e-01 2.353500e-01 2.153200e-01 1.923400e-01 1.651100e-01 1.319700e-01 9.140000e-02 4.486300e-02 5.488100e-03 5.127300e+00 5.004100e+00 4.883200e+00 4.764800e+00 4.648800e+00 4.535100e+00 4.423700e+00 4.314500e+00 4.207600e+00 4.102800e+00 4.000200e+00 3.899700e+00 3.801200e+00 3.704800e+00 3.610400e+00 3.518000e+00 3.427500e+00 3.338800e+00 3.252100e+00 3.167200e+00 3.084000e+00 3.002700e+00 2.923000e+00 2.845100e+00 2.768900e+00 2.694300e+00 2.621300e+00 2.549900e+00 2.480000e+00 2.411700e+00 2.344900e+00 2.279600e+00 2.215700e+00 2.153300e+00 2.092200e+00 2.032500e+00 1.974100e+00 1.917100e+00 1.861300e+00 1.806900e+00 1.753600e+00 1.701600e+00 1.650800e+00 1.601200e+00 1.552700e+00 1.505400e+00 1.459100e+00 1.414000e+00 1.369900e+00 1.326900e+00 1.284900e+00 1.244000e+00 1.204000e+00 1.165000e+00 1.126900e+00 1.089800e+00 1.053600e+00 1.018400e+00 9.839800e-01 9.504700e-01 9.178200e-01 8.860200e-01 8.550500e-01 8.248900e-01 7.955400e-01 7.669800e-01 7.392000e-01 7.121800e-01 6.859200e-01 6.604000e-01 6.356100e-01 6.115300e-01 5.881600e-01 5.654800e-01 5.434800e-01 5.221500e-01 5.014600e-01 4.814100e-01 4.619700e-01 4.431200e-01 4.248300e-01 4.070700e-01 3.898100e-01 3.729900e-01 3.565600e-01 3.404400e-01 3.245400e-01 3.087500e-01 2.929100e-01 2.768200e-01 2.602300e-01 2.427900e-01 2.240300e-01 2.033400e-01 1.798900e-01 1.525700e-01 1.200900e-01 8.151900e-02 3.901600e-02 4.735100e-03 5.470600e+00 5.335900e+00 5.204100e+00 5.074900e+00 4.948400e+00 4.824500e+00 4.703100e+00 4.584300e+00 4.468000e+00 4.354000e+00 4.242500e+00 4.133400e+00 4.026500e+00 3.921900e+00 3.819600e+00 3.719400e+00 3.621400e+00 3.525500e+00 3.431600e+00 3.339800e+00 3.250000e+00 3.162200e+00 3.076300e+00 2.992300e+00 2.910100e+00 2.829800e+00 2.751200e+00 2.674400e+00 2.599300e+00 2.525900e+00 2.454200e+00 2.384100e+00 2.315600e+00 2.248700e+00 2.183300e+00 2.119400e+00 2.057000e+00 1.996100e+00 1.936500e+00 1.878400e+00 1.821600e+00 1.766200e+00 1.712100e+00 1.659300e+00 1.607800e+00 1.557400e+00 1.508400e+00 1.460500e+00 1.413700e+00 1.368200e+00 1.323700e+00 1.280400e+00 1.238100e+00 1.196900e+00 1.156800e+00 1.117600e+00 1.079500e+00 1.042400e+00 1.006200e+00 9.709600e-01 9.366500e-01 9.032700e-01 8.707800e-01 8.391800e-01 8.084400e-01 7.785500e-01 7.495000e-01 7.212700e-01 6.938500e-01 6.672200e-01 6.413700e-01 6.162800e-01 5.919400e-01 5.683300e-01 5.454500e-01 5.232600e-01 5.017600e-01 4.809200e-01 4.607200e-01 4.411300e-01 4.221300e-01 4.036700e-01 3.857200e-01 3.682300e-01 3.511300e-01 3.343500e-01 3.177800e-01 3.013200e-01 2.848100e-01 2.680500e-01 2.507900e-01 2.327000e-01 2.133600e-01 1.921900e-01 1.684600e-01 1.412500e-01 1.095700e-01 7.299300e-02 3.412600e-02 4.110500e-03 5.811500e+00 5.665300e+00 5.522200e+00 5.382100e+00 5.244900e+00 5.110600e+00 4.979200e+00 4.850600e+00 4.724800e+00 4.601600e+00 4.481100e+00 4.363200e+00 4.247900e+00 4.135100e+00 4.024700e+00 3.916800e+00 3.811200e+00 3.708000e+00 3.607100e+00 3.508400e+00 3.411900e+00 3.317600e+00 3.225400e+00 3.135200e+00 3.047200e+00 2.961100e+00 2.877000e+00 2.794800e+00 2.714600e+00 2.636100e+00 2.559500e+00 2.484700e+00 2.411700e+00 2.340300e+00 2.270700e+00 2.202700e+00 2.136300e+00 2.071500e+00 2.008200e+00 1.946500e+00 1.886300e+00 1.827500e+00 1.770200e+00 1.714200e+00 1.659700e+00 1.606500e+00 1.554600e+00 1.504000e+00 1.454700e+00 1.406700e+00 1.359900e+00 1.314200e+00 1.269800e+00 1.226500e+00 1.184300e+00 1.143200e+00 1.103200e+00 1.064300e+00 1.026400e+00 9.894900e-01 9.536200e-01 9.187300e-01 8.848000e-01 8.518300e-01 8.197800e-01 7.886400e-01 7.583900e-01 7.290200e-01 7.005100e-01 6.728400e-01 6.460000e-01 6.199700e-01 5.947300e-01 5.702700e-01 5.465600e-01 5.235900e-01 5.013400e-01 4.797800e-01 4.588800e-01 4.386300e-01 4.189800e-01 3.998900e-01 3.813300e-01 3.632300e-01 3.455400e-01 3.281700e-01 3.110200e-01 2.939800e-01 2.769000e-01 2.595700e-01 2.417700e-01 2.231700e-01 2.033900e-01 1.819000e-01 1.580800e-01 1.311500e-01 1.003800e-01 6.573600e-02 3.009600e-02 3.600300e-03 6.150600e+00 5.992800e+00 5.838300e+00 5.687200e+00 5.539300e+00 5.394600e+00 5.253000e+00 5.114600e+00 4.979200e+00 4.846700e+00 4.717200e+00 4.590500e+00 4.466700e+00 4.345600e+00 4.227200e+00 4.111500e+00 3.998400e+00 3.887800e+00 3.779800e+00 3.674200e+00 3.571000e+00 3.470200e+00 3.371700e+00 3.275500e+00 3.181600e+00 3.089800e+00 3.000200e+00 2.912700e+00 2.827200e+00 2.743800e+00 2.662300e+00 2.582800e+00 2.505300e+00 2.429500e+00 2.355700e+00 2.283600e+00 2.213200e+00 2.144600e+00 2.077700e+00 2.012400e+00 1.948800e+00 1.886700e+00 1.826200e+00 1.767200e+00 1.709700e+00 1.653700e+00 1.599100e+00 1.545900e+00 1.494000e+00 1.443500e+00 1.394400e+00 1.346500e+00 1.299900e+00 1.254500e+00 1.210300e+00 1.167400e+00 1.125500e+00 1.084900e+00 1.045300e+00 1.006900e+00 9.694600e-01 9.331200e-01 8.978000e-01 8.635000e-01 8.301800e-01 7.978400e-01 7.664400e-01 7.359800e-01 7.064300e-01 6.777700e-01 6.499800e-01 6.230500e-01 5.969600e-01 5.716800e-01 5.471900e-01 5.234800e-01 5.005200e-01 4.782700e-01 4.567300e-01 4.358400e-01 4.155900e-01 3.959100e-01 3.767800e-01 3.581200e-01 3.398800e-01 3.219700e-01 3.043000e-01 2.867300e-01 2.691300e-01 2.513100e-01 2.330300e-01 2.140000e-01 1.938700e-01 1.721600e-01 1.483200e-01 1.217500e-01 9.194200e-02 5.918400e-02 2.652900e-02 3.151100e-03 6.488400e+00 6.318800e+00 6.152900e+00 5.990700e+00 5.832000e+00 5.676800e+00 5.525100e+00 5.376700e+00 5.231700e+00 5.089900e+00 4.951400e+00 4.815900e+00 4.683500e+00 4.554100e+00 4.427700e+00 4.304200e+00 4.183500e+00 4.065600e+00 3.950500e+00 3.838000e+00 3.728100e+00 3.620900e+00 3.516100e+00 3.413800e+00 3.314000e+00 3.216600e+00 3.121400e+00 3.028600e+00 2.938000e+00 2.849600e+00 2.763300e+00 2.679200e+00 2.597000e+00 2.517000e+00 2.438900e+00 2.362800e+00 2.288500e+00 2.216100e+00 2.145500e+00 2.076800e+00 2.009700e+00 1.944400e+00 1.880700e+00 1.818700e+00 1.758300e+00 1.699500e+00 1.642200e+00 1.586400e+00 1.532100e+00 1.479200e+00 1.427700e+00 1.377600e+00 1.328900e+00 1.281500e+00 1.235400e+00 1.190600e+00 1.147000e+00 1.104600e+00 1.063400e+00 1.023400e+00 9.845000e-01 9.467400e-01 9.100700e-01 8.744800e-01 8.399300e-01 8.064200e-01 7.739100e-01 7.423800e-01 7.118200e-01 6.822000e-01 6.535000e-01 6.257000e-01 5.987800e-01 5.727100e-01 5.474800e-01 5.230500e-01 4.994100e-01 4.765200e-01 4.543500e-01 4.328600e-01 4.120300e-01 3.918000e-01 3.721200e-01 3.529400e-01 3.341800e-01 3.157700e-01 2.976000e-01 2.795500e-01 2.614700e-01 2.431900e-01 2.244900e-01 2.050900e-01 1.846600e-01 1.627900e-01 1.390100e-01 1.128600e-01 8.403600e-02 5.312100e-02 2.327800e-02 2.743600e-03 6.826200e+00 6.644800e+00 6.467500e+00 6.294200e+00 6.124700e+00 5.959100e+00 5.797200e+00 5.638900e+00 5.484300e+00 5.333100e+00 5.185500e+00 5.041300e+00 4.900300e+00 4.762700e+00 4.628200e+00 4.496900e+00 4.368700e+00 4.243400e+00 4.121200e+00 4.001800e+00 3.885300e+00 3.771500e+00 3.660500e+00 3.552200e+00 3.446500e+00 3.343300e+00 3.242700e+00 3.144500e+00 3.048700e+00 2.955400e+00 2.864200e+00 2.775500e+00 2.688800e+00 2.604400e+00 2.522200e+00 2.442000e+00 2.363800e+00 2.287600e+00 2.213400e+00 2.141100e+00 2.070700e+00 2.002100e+00 1.935300e+00 1.870200e+00 1.806900e+00 1.745300e+00 1.685300e+00 1.626900e+00 1.570100e+00 1.514800e+00 1.461100e+00 1.408800e+00 1.358000e+00 1.308500e+00 1.260500e+00 1.213800e+00 1.168400e+00 1.124300e+00 1.081500e+00 1.039900e+00 9.995400e-01 9.603700e-01 9.223400e-01 8.854600e-01 8.496800e-01 8.150000e-01 7.813700e-01 7.487800e-01 7.172100e-01 6.866300e-01 6.570200e-01 6.283500e-01 6.006100e-01 5.737500e-01 5.477700e-01 5.226300e-01 4.983100e-01 4.747600e-01 4.519700e-01 4.298900e-01 4.084700e-01 3.876800e-01 3.674700e-01 3.477600e-01 3.284800e-01 3.095600e-01 2.909000e-01 2.723600e-01 2.538100e-01 2.350800e-01 2.159600e-01 1.961800e-01 1.754500e-01 1.534200e-01 1.297000e-01 1.039600e-01 7.613000e-02 4.705800e-02 2.002700e-02 2.336100e-03 7.163900e+00 6.970900e+00 6.782200e+00 6.597700e+00 6.417400e+00 6.241300e+00 6.069200e+00 5.901100e+00 5.736900e+00 5.576400e+00 5.419700e+00 5.266600e+00 5.117200e+00 4.971200e+00 4.828700e+00 4.689600e+00 4.553800e+00 4.421200e+00 4.291900e+00 4.165600e+00 4.042400e+00 3.922200e+00 3.804900e+00 3.690500e+00 3.578900e+00 3.470100e+00 3.363900e+00 3.260400e+00 3.159500e+00 3.061100e+00 2.965200e+00 2.871800e+00 2.780600e+00 2.691900e+00 2.605400e+00 2.521200e+00 2.439000e+00 2.359100e+00 2.281200e+00 2.205500e+00 2.131600e+00 2.059800e+00 1.989900e+00 1.921700e+00 1.855600e+00 1.791100e+00 1.728400e+00 1.667400e+00 1.608100e+00 1.550500e+00 1.494400e+00 1.439900e+00 1.387000e+00 1.335500e+00 1.285500e+00 1.236900e+00 1.189800e+00 1.144000e+00 1.099600e+00 1.056500e+00 1.014600e+00 9.739900e-01 9.346200e-01 8.964400e-01 8.594300e-01 8.235800e-01 7.888400e-01 7.551900e-01 7.226100e-01 6.910600e-01 6.605400e-01 6.310000e-01 6.024300e-01 5.747900e-01 5.480600e-01 5.222100e-01 4.972000e-01 4.730000e-01 4.495900e-01 4.269100e-01 4.049200e-01 3.835700e-01 3.628100e-01 3.425800e-01 3.227800e-01 3.033600e-01 2.842000e-01 2.651700e-01 2.461600e-01 2.269700e-01 2.074200e-01 1.872700e-01 1.662500e-01 1.440600e-01 1.204000e-01 9.506800e-02 6.822400e-02 4.099500e-02 1.677600e-02 1.928600e-03 7.501700e+00 7.296900e+00 7.096800e+00 6.901200e+00 6.710100e+00 6.523500e+00 6.341300e+00 6.163200e+00 5.989400e+00 5.819600e+00 5.653800e+00 5.492000e+00 5.334000e+00 5.179800e+00 5.029200e+00 4.882300e+00 4.739000e+00 4.599000e+00 4.462600e+00 4.329400e+00 4.199600e+00 4.072800e+00 3.949300e+00 3.828800e+00 3.711300e+00 3.596800e+00 3.485200e+00 3.376300e+00 3.270300e+00 3.166900e+00 3.066200e+00 2.968100e+00 2.872400e+00 2.779300e+00 2.688700e+00 2.600400e+00 2.514300e+00 2.430700e+00 2.349100e+00 2.269800e+00 2.192600e+00 2.117400e+00 2.044400e+00 1.973300e+00 1.904200e+00 1.836900e+00 1.771500e+00 1.707900e+00 1.646200e+00 1.586100e+00 1.527800e+00 1.471100e+00 1.416000e+00 1.362500e+00 1.310600e+00 1.260100e+00 1.211200e+00 1.163700e+00 1.117700e+00 1.073000e+00 1.029600e+00 9.876200e-01 9.468900e-01 9.074200e-01 8.691800e-01 8.321600e-01 7.963000e-01 7.615900e-01 7.280000e-01 6.955000e-01 6.640600e-01 6.336500e-01 6.042500e-01 5.758300e-01 5.483500e-01 5.217800e-01 4.961000e-01 4.712500e-01 4.472100e-01 4.239300e-01 4.013600e-01 3.794600e-01 3.581500e-01 3.373900e-01 3.170900e-01 2.971600e-01 2.775000e-01 2.579900e-01 2.385000e-01 2.188600e-01 1.988900e-01 1.783600e-01 1.570400e-01 1.346900e-01 1.110900e-01 8.617300e-02 6.031800e-02 3.493200e-02 1.352600e-02 1.521000e-03 7.839500e+00 7.622900e+00 7.411400e+00 7.204700e+00 7.002900e+00 6.805800e+00 6.613400e+00 6.425400e+00 6.242000e+00 6.062800e+00 5.888000e+00 5.717400e+00 5.550800e+00 5.388300e+00 5.229700e+00 5.075000e+00 4.924100e+00 4.776800e+00 4.633200e+00 4.493200e+00 4.356700e+00 4.223500e+00 4.093700e+00 3.967100e+00 3.843800e+00 3.723600e+00 3.606400e+00 3.492300e+00 3.381000e+00 3.272700e+00 3.167100e+00 3.064400e+00 2.964200e+00 2.866800e+00 2.771900e+00 2.679600e+00 2.589600e+00 2.502200e+00 2.417000e+00 2.334200e+00 2.253500e+00 2.175100e+00 2.099000e+00 2.024800e+00 1.952800e+00 1.882700e+00 1.814700e+00 1.748500e+00 1.684200e+00 1.621800e+00 1.561200e+00 1.502200e+00 1.445100e+00 1.389500e+00 1.335700e+00 1.283300e+00 1.232600e+00 1.183400e+00 1.135800e+00 1.089500e+00 1.044700e+00 1.001200e+00 9.591600e-01 9.184000e-01 8.789300e-01 8.407300e-01 8.037600e-01 7.679900e-01 7.333900e-01 6.999300e-01 6.675800e-01 6.363000e-01 6.060800e-01 5.768600e-01 5.486400e-01 5.213600e-01 4.949900e-01 4.694900e-01 4.448300e-01 4.209500e-01 3.978100e-01 3.753400e-01 3.535000e-01 3.322100e-01 3.113900e-01 2.909500e-01 2.708000e-01 2.508000e-01 2.308400e-01 2.107400e-01 1.903500e-01 1.694400e-01 1.478400e-01 1.253200e-01 1.017800e-01 7.727800e-02 5.241200e-02 2.886900e-02 1.027500e-02 1.113500e-03 8.177200e+00 7.948900e+00 7.726000e+00 7.508200e+00 7.295600e+00 7.088000e+00 6.885400e+00 6.687600e+00 6.494500e+00 6.306000e+00 6.122100e+00 5.942700e+00 5.767600e+00 5.596800e+00 5.430200e+00 5.267700e+00 5.109200e+00 4.954700e+00 4.803900e+00 4.657000e+00 4.513800e+00 4.374100e+00 4.238100e+00 4.105400e+00 3.976200e+00 3.850300e+00 3.727700e+00 3.608200e+00 3.491800e+00 3.378500e+00 3.268100e+00 3.160700e+00 3.056000e+00 2.954200e+00 2.855200e+00 2.758800e+00 2.664900e+00 2.573700e+00 2.484800e+00 2.398500e+00 2.314500e+00 2.232800e+00 2.153500e+00 2.076300e+00 2.001400e+00 1.928600e+00 1.857800e+00 1.789000e+00 1.722200e+00 1.657400e+00 1.594500e+00 1.533400e+00 1.474100e+00 1.416600e+00 1.360700e+00 1.306500e+00 1.254000e+00 1.203200e+00 1.153900e+00 1.106100e+00 1.059700e+00 1.014900e+00 9.714300e-01 9.293900e-01 8.886800e-01 8.493100e-01 8.112300e-01 7.743900e-01 7.387800e-01 7.043600e-01 6.710900e-01 6.389500e-01 6.079000e-01 5.779000e-01 5.489300e-01 5.209300e-01 4.938900e-01 4.677400e-01 4.424500e-01 4.179700e-01 3.942500e-01 3.712300e-01 3.488400e-01 3.270300e-01 3.056900e-01 2.847500e-01 2.641000e-01 2.436200e-01 2.231800e-01 2.026300e-01 1.818200e-01 1.605300e-01 1.386300e-01 1.159600e-01 9.246700e-02 6.838400e-02 4.450600e-02 2.280600e-02 7.024200e-03 7.060000e-04 8.515000e+00 8.275000e+00 8.040600e+00 7.811700e+00 7.588300e+00 7.370300e+00 7.157500e+00 6.949700e+00 6.747100e+00 6.549200e+00 6.356300e+00 6.168100e+00 5.984500e+00 5.805400e+00 5.630700e+00 5.460400e+00 5.294400e+00 5.132500e+00 4.974600e+00 4.820800e+00 4.671000e+00 4.524800e+00 4.382500e+00 4.243700e+00 4.108700e+00 3.977100e+00 3.848900e+00 3.724100e+00 3.602600e+00 3.484300e+00 3.369000e+00 3.257000e+00 3.147800e+00 3.041700e+00 2.938500e+00 2.838000e+00 2.740100e+00 2.645200e+00 2.552700e+00 2.462900e+00 2.375400e+00 2.290500e+00 2.208100e+00 2.127800e+00 2.050100e+00 1.974400e+00 1.900900e+00 1.829500e+00 1.760300e+00 1.693100e+00 1.627900e+00 1.564500e+00 1.503100e+00 1.443600e+00 1.385800e+00 1.329700e+00 1.275400e+00 1.222900e+00 1.172000e+00 1.122600e+00 1.074800e+00 1.028500e+00 9.837000e-01 9.403700e-01 8.984300e-01 8.578900e-01 8.186900e-01 7.807900e-01 7.441700e-01 7.087900e-01 6.746100e-01 6.416000e-01 6.097200e-01 5.789400e-01 5.492200e-01 5.205100e-01 4.927800e-01 4.659800e-01 4.400700e-01 4.149900e-01 3.906900e-01 3.671200e-01 3.441900e-01 3.218400e-01 2.999900e-01 2.785500e-01 2.574000e-01 2.364300e-01 2.155300e-01 1.945200e-01 1.732800e-01 1.516200e-01 1.294300e-01 1.065900e-01 8.315800e-02 5.948900e-02 3.659900e-02 1.674300e-02 3.773500e-03 2.984800e-04 8.852800e+00 8.601000e+00 8.355200e+00 8.115200e+00 7.881000e+00 7.652500e+00 7.429500e+00 7.211900e+00 6.999700e+00 6.792400e+00 6.590400e+00 6.393500e+00 6.201300e+00 6.013900e+00 5.831200e+00 5.653100e+00 5.479500e+00 5.310300e+00 5.145300e+00 4.984600e+00 4.828100e+00 4.675400e+00 4.526900e+00 4.382100e+00 4.241100e+00 4.103800e+00 3.970200e+00 3.840000e+00 3.713300e+00 3.590100e+00 3.470000e+00 3.353300e+00 3.239600e+00 3.129100e+00 3.021700e+00 2.917200e+00 2.815400e+00 2.716700e+00 2.620500e+00 2.527200e+00 2.436400e+00 2.348200e+00 2.262700e+00 2.179300e+00 2.098700e+00 2.020200e+00 1.944000e+00 1.870000e+00 1.798300e+00 1.728700e+00 1.661200e+00 1.595600e+00 1.532200e+00 1.470600e+00 1.410800e+00 1.352900e+00 1.296800e+00 1.242600e+00 1.190000e+00 1.139100e+00 1.089800e+00 1.042100e+00 9.959700e-01 9.513500e-01 9.081800e-01 8.664700e-01 8.261500e-01 7.871900e-01 7.495700e-01 7.132200e-01 6.781300e-01 6.442500e-01 6.115500e-01 5.799700e-01 5.495100e-01 5.200900e-01 4.916800e-01 4.642200e-01 4.376900e-01 4.120100e-01 3.871400e-01 3.630000e-01 3.395300e-01 3.166600e-01 2.942900e-01 2.723400e-01 2.507000e-01 2.292500e-01 2.078700e-01 1.864000e-01 1.647400e-01 1.427100e-01 1.202200e-01 9.722200e-02 7.384900e-02 5.059400e-02 2.869300e-02 1.068000e-02 5.227800e-04 -1.090400e-04 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/diffraction/2006/h12006jetspdf_gluon_fitB.data������������������������������0000644�0001750�0001750�00000121323�11754474775�025475� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������-3.000000e+00 -2.969741e+00 -2.939482e+00 -2.909223e+00 -2.878964e+00 -2.848705e+00 -2.818446e+00 -2.788187e+00 -2.757928e+00 -2.727670e+00 -2.697411e+00 -2.667152e+00 -2.636893e+00 -2.606634e+00 -2.576375e+00 -2.546116e+00 -2.515857e+00 -2.485598e+00 -2.455339e+00 -2.425080e+00 -2.394821e+00 -2.364562e+00 -2.334303e+00 -2.304044e+00 -2.273785e+00 -2.243526e+00 -2.213268e+00 -2.183009e+00 -2.152750e+00 -2.122491e+00 -2.092232e+00 -2.061973e+00 -2.031714e+00 -2.001455e+00 -1.971196e+00 -1.940937e+00 -1.910678e+00 -1.880419e+00 -1.850160e+00 -1.819901e+00 -1.789642e+00 -1.759383e+00 -1.729124e+00 -1.698866e+00 -1.668607e+00 -1.638348e+00 -1.608089e+00 -1.577830e+00 -1.547571e+00 -1.517312e+00 -1.487053e+00 -1.456794e+00 -1.426535e+00 -1.396276e+00 -1.366017e+00 -1.335758e+00 -1.305499e+00 -1.275240e+00 -1.244981e+00 -1.214722e+00 -1.184464e+00 -1.154205e+00 -1.123946e+00 -1.093687e+00 -1.063428e+00 -1.033169e+00 -1.002910e+00 -9.726509e-01 -9.423920e-01 -9.121330e-01 -8.818741e-01 -8.516152e-01 -8.213562e-01 -7.910973e-01 -7.608383e-01 -7.305794e-01 -7.003205e-01 -6.700615e-01 -6.398026e-01 -6.095436e-01 -5.792847e-01 -5.490257e-01 -5.187668e-01 -4.885079e-01 -4.582489e-01 -4.279900e-01 -3.977310e-01 -3.674721e-01 -3.372132e-01 -3.069542e-01 -2.766953e-01 -2.464363e-01 -2.161774e-01 -1.859185e-01 -1.556595e-01 -1.254006e-01 -9.514163e-02 -6.488269e-02 -3.462375e-02 -4.364805e-03 1.000000e+00 1.426867e+00 2.035949e+00 2.905029e+00 4.145090e+00 5.914492e+00 8.439194e+00 1.204161e+01 1.718177e+01 2.451610e+01 3.498122e+01 4.991354e+01 7.121999e+01 1.016215e+02 1.450003e+02 2.068961e+02 2.952133e+02 4.212301e+02 6.010393e+02 8.576031e+02 1.223686e+03 1.746037e+03 2.491362e+03 3.554842e+03 5.072287e+03 7.237479e+03 1.032692e+04 1.473514e+04 2.102509e+04 3.000000e+04 -1.677500e-01 -1.637300e-01 -1.597200e-01 -1.556600e-01 -1.515700e-01 -1.475100e-01 -1.433800e-01 -1.392400e-01 -1.350700e-01 -1.308900e-01 -1.266700e-01 -1.224200e-01 -1.181600e-01 -1.138600e-01 -1.095200e-01 -1.051500e-01 -1.007700e-01 -9.635300e-02 -9.193000e-02 -8.743700e-02 -8.297000e-02 -7.843400e-02 -7.385700e-02 -6.930800e-02 -6.469000e-02 -6.003000e-02 -5.533100e-02 -5.065900e-02 -4.591800e-02 -4.110400e-02 -3.631200e-02 -3.148600e-02 -2.658700e-02 -2.168000e-02 -1.673400e-02 -1.177800e-02 -6.752500e-03 -1.683200e-03 3.425200e-03 8.544900e-03 1.376600e-02 1.897100e-02 2.424200e-02 2.956000e-02 3.491800e-02 4.031900e-02 4.579500e-02 5.131500e-02 5.687700e-02 6.248500e-02 6.816600e-02 7.389300e-02 7.966500e-02 8.551100e-02 9.137400e-02 9.737200e-02 1.033600e-01 1.094500e-01 1.156000e-01 1.218100e-01 1.280800e-01 1.344600e-01 1.408900e-01 1.474000e-01 1.539900e-01 1.606300e-01 1.673800e-01 1.742100e-01 1.811300e-01 1.881600e-01 1.952500e-01 2.024500e-01 2.097400e-01 2.171400e-01 2.246600e-01 2.322800e-01 2.400800e-01 2.479400e-01 2.559900e-01 2.642200e-01 2.726000e-01 2.811700e-01 2.899400e-01 2.989400e-01 3.082300e-01 3.178600e-01 3.278500e-01 3.382800e-01 3.492700e-01 3.609100e-01 3.734500e-01 3.871100e-01 4.023500e-01 4.197600e-01 4.404000e-01 4.662000e-01 5.011600e-01 5.548500e-01 7.196700e-01 1.074100e-01 3.479800e-02 3.736900e-02 3.994400e-02 4.254000e-02 4.515500e-02 4.775900e-02 5.039800e-02 5.304200e-02 5.570500e-02 5.837400e-02 6.106300e-02 6.377100e-02 6.648500e-02 6.921900e-02 7.197400e-02 7.475000e-02 7.753000e-02 8.033100e-02 8.313700e-02 8.597900e-02 8.881200e-02 9.168000e-02 9.457000e-02 9.745000e-02 1.003700e-01 1.033000e-01 1.062600e-01 1.092100e-01 1.122000e-01 1.152200e-01 1.182400e-01 1.212700e-01 1.243500e-01 1.274300e-01 1.305300e-01 1.336400e-01 1.367900e-01 1.399600e-01 1.431500e-01 1.463600e-01 1.496100e-01 1.528700e-01 1.561600e-01 1.594700e-01 1.628100e-01 1.661700e-01 1.695800e-01 1.730100e-01 1.764600e-01 1.799500e-01 1.834700e-01 1.870200e-01 1.906000e-01 1.942100e-01 1.978500e-01 2.015500e-01 2.052500e-01 2.090100e-01 2.128000e-01 2.166300e-01 2.205000e-01 2.244200e-01 2.283700e-01 2.323700e-01 2.364100e-01 2.404900e-01 2.446300e-01 2.488100e-01 2.530400e-01 2.573400e-01 2.616700e-01 2.660700e-01 2.705100e-01 2.750200e-01 2.796000e-01 2.842300e-01 2.889600e-01 2.937400e-01 2.986100e-01 3.035900e-01 3.086500e-01 3.138200e-01 3.191100e-01 3.245200e-01 3.301000e-01 3.358600e-01 3.418300e-01 3.480500e-01 3.545800e-01 3.614800e-01 3.688700e-01 3.768900e-01 3.857800e-01 3.958600e-01 4.076900e-01 4.223100e-01 4.417800e-01 4.709500e-01 5.587300e-01 8.247600e-02 2.375700e-01 2.387000e-01 2.398200e-01 2.409500e-01 2.420900e-01 2.432300e-01 2.443700e-01 2.455100e-01 2.466600e-01 2.478100e-01 2.489600e-01 2.501200e-01 2.512800e-01 2.524400e-01 2.536100e-01 2.547800e-01 2.559600e-01 2.571400e-01 2.583200e-01 2.595100e-01 2.607000e-01 2.618900e-01 2.630900e-01 2.643000e-01 2.655000e-01 2.667100e-01 2.679300e-01 2.691500e-01 2.703800e-01 2.716100e-01 2.728400e-01 2.740800e-01 2.753200e-01 2.765700e-01 2.778200e-01 2.790800e-01 2.803500e-01 2.816200e-01 2.829000e-01 2.841800e-01 2.854700e-01 2.867700e-01 2.880700e-01 2.893800e-01 2.906900e-01 2.920200e-01 2.933500e-01 2.946800e-01 2.960300e-01 2.973800e-01 2.987400e-01 3.001100e-01 3.014900e-01 3.028800e-01 3.042800e-01 3.056800e-01 3.070900e-01 3.085200e-01 3.099500e-01 3.114000e-01 3.128500e-01 3.143200e-01 3.157900e-01 3.172800e-01 3.187800e-01 3.202900e-01 3.218100e-01 3.233500e-01 3.248900e-01 3.264500e-01 3.280300e-01 3.296200e-01 3.312200e-01 3.328400e-01 3.344700e-01 3.361200e-01 3.377800e-01 3.394700e-01 3.411700e-01 3.429000e-01 3.446400e-01 3.464100e-01 3.482100e-01 3.500400e-01 3.519100e-01 3.538100e-01 3.557700e-01 3.577700e-01 3.598500e-01 3.620000e-01 3.642500e-01 3.666300e-01 3.691700e-01 3.719300e-01 3.749700e-01 3.784200e-01 3.824300e-01 3.871200e-01 3.981800e-01 5.760100e-02 4.662700e-01 4.651300e-01 4.639900e-01 4.628400e-01 4.617000e-01 4.605600e-01 4.594300e-01 4.582900e-01 4.571600e-01 4.560200e-01 4.548900e-01 4.537600e-01 4.526300e-01 4.515000e-01 4.503800e-01 4.492500e-01 4.481300e-01 4.470000e-01 4.458800e-01 4.447600e-01 4.436400e-01 4.425200e-01 4.414000e-01 4.402800e-01 4.391700e-01 4.380500e-01 4.369400e-01 4.358200e-01 4.347100e-01 4.336000e-01 4.324800e-01 4.313700e-01 4.302600e-01 4.291500e-01 4.280400e-01 4.269200e-01 4.258100e-01 4.247000e-01 4.235900e-01 4.224700e-01 4.213600e-01 4.202400e-01 4.191300e-01 4.180100e-01 4.168900e-01 4.157700e-01 4.146500e-01 4.135300e-01 4.124100e-01 4.112800e-01 4.101600e-01 4.090300e-01 4.078900e-01 4.067600e-01 4.056200e-01 4.044800e-01 4.033300e-01 4.021900e-01 4.010300e-01 3.998800e-01 3.987200e-01 3.975500e-01 3.963800e-01 3.952000e-01 3.940200e-01 3.928300e-01 3.916400e-01 3.904300e-01 3.892200e-01 3.880000e-01 3.867700e-01 3.855300e-01 3.842800e-01 3.830100e-01 3.817300e-01 3.804300e-01 3.791200e-01 3.777800e-01 3.764300e-01 3.750400e-01 3.736200e-01 3.721700e-01 3.706800e-01 3.691400e-01 3.675400e-01 3.658700e-01 3.641100e-01 3.622500e-01 3.602500e-01 3.580900e-01 3.557000e-01 3.530200e-01 3.499300e-01 3.462500e-01 3.416800e-01 3.356500e-01 3.269500e-01 3.122600e-01 2.767800e-01 3.906900e-02 7.310500e-01 7.263200e-01 7.216100e-01 7.169200e-01 7.122500e-01 7.075900e-01 7.029500e-01 6.983300e-01 6.937300e-01 6.891500e-01 6.845900e-01 6.800400e-01 6.755100e-01 6.709900e-01 6.665000e-01 6.620200e-01 6.575600e-01 6.531100e-01 6.486800e-01 6.442700e-01 6.398700e-01 6.354900e-01 6.311300e-01 6.267800e-01 6.224500e-01 6.181400e-01 6.138300e-01 6.095500e-01 6.052800e-01 6.010200e-01 5.967800e-01 5.925500e-01 5.883400e-01 5.841400e-01 5.799500e-01 5.757800e-01 5.716200e-01 5.674700e-01 5.633300e-01 5.592100e-01 5.550900e-01 5.509900e-01 5.469000e-01 5.428200e-01 5.387500e-01 5.346800e-01 5.306300e-01 5.265900e-01 5.225500e-01 5.185200e-01 5.145000e-01 5.104900e-01 5.064800e-01 5.024800e-01 4.984800e-01 4.944900e-01 4.905100e-01 4.865200e-01 4.825400e-01 4.785700e-01 4.745900e-01 4.706200e-01 4.666500e-01 4.626700e-01 4.587000e-01 4.547200e-01 4.507400e-01 4.467500e-01 4.427600e-01 4.387500e-01 4.347400e-01 4.307200e-01 4.266900e-01 4.226300e-01 4.185600e-01 4.144600e-01 4.103400e-01 4.061800e-01 4.019800e-01 3.977400e-01 3.934400e-01 3.890800e-01 3.846300e-01 3.800900e-01 3.754400e-01 3.706400e-01 3.656700e-01 3.604800e-01 3.550200e-01 3.492200e-01 3.429800e-01 3.361400e-01 3.285100e-01 3.197500e-01 3.093400e-01 2.963500e-01 2.788900e-01 2.522400e-01 1.988600e-01 2.745900e-02 1.024900e+00 1.015400e+00 1.005900e+00 9.964100e-01 9.870200e-01 9.776800e-01 9.684100e-01 9.591900e-01 9.500300e-01 9.409300e-01 9.318800e-01 9.228900e-01 9.139600e-01 9.050800e-01 8.962500e-01 8.874800e-01 8.787600e-01 8.701000e-01 8.614900e-01 8.529300e-01 8.444200e-01 8.359700e-01 8.275700e-01 8.192200e-01 8.109200e-01 8.026700e-01 7.944700e-01 7.863200e-01 7.782200e-01 7.701700e-01 7.621600e-01 7.542100e-01 7.463000e-01 7.384400e-01 7.306200e-01 7.228500e-01 7.151200e-01 7.074400e-01 6.998000e-01 6.922000e-01 6.846400e-01 6.771300e-01 6.696600e-01 6.622200e-01 6.548300e-01 6.474700e-01 6.401500e-01 6.328800e-01 6.256300e-01 6.184200e-01 6.112500e-01 6.041200e-01 5.970100e-01 5.899400e-01 5.829000e-01 5.758900e-01 5.689200e-01 5.619700e-01 5.550500e-01 5.481600e-01 5.412900e-01 5.344500e-01 5.276300e-01 5.208400e-01 5.140600e-01 5.073100e-01 5.005700e-01 4.938500e-01 4.871400e-01 4.804500e-01 4.737600e-01 4.670800e-01 4.604000e-01 4.537200e-01 4.470300e-01 4.403300e-01 4.336100e-01 4.268700e-01 4.200900e-01 4.132600e-01 4.063800e-01 3.994200e-01 3.923700e-01 3.852000e-01 3.778900e-01 3.704000e-01 3.626800e-01 3.546800e-01 3.463300e-01 3.375200e-01 3.281300e-01 3.179600e-01 3.067500e-01 2.941100e-01 2.794000e-01 2.615400e-01 2.384600e-01 2.053400e-01 1.474700e-01 1.997300e-02 1.341100e+00 1.325600e+00 1.310200e+00 1.294900e+00 1.279700e+00 1.264700e+00 1.249800e+00 1.235000e+00 1.220300e+00 1.205800e+00 1.191300e+00 1.177000e+00 1.162800e+00 1.148700e+00 1.134700e+00 1.120900e+00 1.107100e+00 1.093500e+00 1.080000e+00 1.066600e+00 1.053300e+00 1.040100e+00 1.027000e+00 1.014000e+00 1.001200e+00 9.884000e-01 9.757300e-01 9.631800e-01 9.507200e-01 9.383700e-01 9.261200e-01 9.139700e-01 9.019200e-01 8.899600e-01 8.781000e-01 8.663400e-01 8.546700e-01 8.430900e-01 8.316100e-01 8.202100e-01 8.089100e-01 7.976900e-01 7.865600e-01 7.755200e-01 7.645700e-01 7.537000e-01 7.429100e-01 7.322000e-01 7.215800e-01 7.110300e-01 7.005700e-01 6.901800e-01 6.798700e-01 6.696300e-01 6.594700e-01 6.493800e-01 6.393600e-01 6.294100e-01 6.195200e-01 6.097100e-01 5.999500e-01 5.902700e-01 5.806400e-01 5.710700e-01 5.615600e-01 5.521100e-01 5.427100e-01 5.333600e-01 5.240500e-01 5.147900e-01 5.055700e-01 4.963900e-01 4.872400e-01 4.781100e-01 4.690100e-01 4.599200e-01 4.508300e-01 4.417400e-01 4.326300e-01 4.234900e-01 4.143100e-01 4.050600e-01 3.957200e-01 3.862700e-01 3.766600e-01 3.668600e-01 3.568200e-01 3.464600e-01 3.357000e-01 3.244200e-01 3.124800e-01 2.996700e-01 2.857000e-01 2.701400e-01 2.523400e-01 2.312100e-01 2.047500e-01 1.687100e-01 1.121900e-01 1.493200e-02 1.675900e+00 1.653300e+00 1.630900e+00 1.608700e+00 1.586800e+00 1.565000e+00 1.543500e+00 1.522200e+00 1.501100e+00 1.480200e+00 1.459500e+00 1.439000e+00 1.418700e+00 1.398600e+00 1.378800e+00 1.359100e+00 1.339600e+00 1.320300e+00 1.301200e+00 1.282300e+00 1.263600e+00 1.245000e+00 1.226700e+00 1.208600e+00 1.190600e+00 1.172800e+00 1.155200e+00 1.137800e+00 1.120500e+00 1.103400e+00 1.086500e+00 1.069800e+00 1.053200e+00 1.036800e+00 1.020600e+00 1.004500e+00 9.886200e-01 9.728700e-01 9.572900e-01 9.418600e-01 9.265800e-01 9.114600e-01 8.964900e-01 8.816700e-01 8.669900e-01 8.524700e-01 8.380800e-01 8.238400e-01 8.097400e-01 7.957800e-01 7.819500e-01 7.682700e-01 7.547100e-01 7.412800e-01 7.279800e-01 7.148100e-01 7.017700e-01 6.888400e-01 6.760400e-01 6.633600e-01 6.507900e-01 6.383300e-01 6.259900e-01 6.137600e-01 6.016300e-01 5.896000e-01 5.776700e-01 5.658400e-01 5.541000e-01 5.424500e-01 5.308900e-01 5.193900e-01 5.079800e-01 4.966200e-01 4.853300e-01 4.740800e-01 4.628800e-01 4.516900e-01 4.405300e-01 4.293600e-01 4.181700e-01 4.069400e-01 3.956400e-01 3.842400e-01 3.727000e-01 3.609700e-01 3.490000e-01 3.367100e-01 3.240000e-01 3.107700e-01 2.968500e-01 2.820300e-01 2.660200e-01 2.484000e-01 2.285400e-01 2.054500e-01 1.773500e-01 1.407600e-01 8.811500e-02 1.155900e-02 2.020400e+00 1.990000e+00 1.960000e+00 1.930300e+00 1.900900e+00 1.871800e+00 1.843100e+00 1.814700e+00 1.786600e+00 1.758800e+00 1.731400e+00 1.704200e+00 1.677400e+00 1.650900e+00 1.624600e+00 1.598700e+00 1.573100e+00 1.547700e+00 1.522700e+00 1.497900e+00 1.473500e+00 1.449300e+00 1.425400e+00 1.401700e+00 1.378400e+00 1.355300e+00 1.332500e+00 1.309900e+00 1.287600e+00 1.265600e+00 1.243800e+00 1.222300e+00 1.201100e+00 1.180100e+00 1.159300e+00 1.138800e+00 1.118500e+00 1.098400e+00 1.078600e+00 1.059100e+00 1.039700e+00 1.020600e+00 1.001700e+00 9.830400e-01 9.645900e-01 9.463500e-01 9.283400e-01 9.105300e-01 8.929300e-01 8.755300e-01 8.583400e-01 8.413500e-01 8.245600e-01 8.079600e-01 7.915500e-01 7.753400e-01 7.593000e-01 7.434600e-01 7.277900e-01 7.122900e-01 6.969800e-01 6.818300e-01 6.668500e-01 6.520300e-01 6.373800e-01 6.228800e-01 6.085300e-01 5.943300e-01 5.802700e-01 5.663500e-01 5.525600e-01 5.388900e-01 5.253400e-01 5.119000e-01 4.985600e-01 4.853100e-01 4.721500e-01 4.590400e-01 4.459900e-01 4.329600e-01 4.199500e-01 4.069300e-01 3.938600e-01 3.807100e-01 3.674500e-01 3.540100e-01 3.403500e-01 3.263700e-01 3.120000e-01 2.971000e-01 2.815200e-01 2.650400e-01 2.474000e-01 2.281800e-01 2.068200e-01 1.824200e-01 1.534900e-01 1.173400e-01 6.920700e-02 8.941300e-03 2.374700e+00 2.335800e+00 2.297300e+00 2.259300e+00 2.221800e+00 2.184800e+00 2.148200e+00 2.112000e+00 2.076300e+00 2.041100e+00 2.006300e+00 1.971900e+00 1.938000e+00 1.904500e+00 1.871400e+00 1.838800e+00 1.806500e+00 1.774700e+00 1.743300e+00 1.712300e+00 1.681700e+00 1.651500e+00 1.621600e+00 1.592200e+00 1.563200e+00 1.534500e+00 1.506200e+00 1.478200e+00 1.450700e+00 1.423500e+00 1.396600e+00 1.370100e+00 1.344000e+00 1.318200e+00 1.292700e+00 1.267600e+00 1.242800e+00 1.218400e+00 1.194200e+00 1.170400e+00 1.146900e+00 1.123700e+00 1.100900e+00 1.078300e+00 1.056000e+00 1.034100e+00 1.012400e+00 9.910200e-01 9.699200e-01 9.491100e-01 9.285700e-01 9.083200e-01 8.883300e-01 8.686000e-01 8.491400e-01 8.299400e-01 8.110000e-01 7.923100e-01 7.738600e-01 7.556500e-01 7.376900e-01 7.199600e-01 7.024600e-01 6.851800e-01 6.681300e-01 6.512900e-01 6.346600e-01 6.182300e-01 6.020100e-01 5.859700e-01 5.701200e-01 5.544400e-01 5.389400e-01 5.235900e-01 5.083900e-01 4.933300e-01 4.783900e-01 4.635600e-01 4.488300e-01 4.341600e-01 4.195400e-01 4.049500e-01 3.903400e-01 3.757000e-01 3.609600e-01 3.460800e-01 3.310000e-01 3.156300e-01 2.998900e-01 2.836600e-01 2.667800e-01 2.490500e-01 2.302100e-01 2.099000e-01 1.876100e-01 1.625800e-01 1.336200e-01 9.875900e-02 5.533300e-02 7.050700e-03 2.736200e+00 2.688000e+00 2.640400e+00 2.593400e+00 2.547100e+00 2.501400e+00 2.456400e+00 2.411900e+00 2.368100e+00 2.324800e+00 2.282200e+00 2.240100e+00 2.198700e+00 2.157800e+00 2.117400e+00 2.077600e+00 2.038400e+00 1.999800e+00 1.961600e+00 1.924100e+00 1.887000e+00 1.850500e+00 1.814400e+00 1.779000e+00 1.744000e+00 1.709500e+00 1.675500e+00 1.641900e+00 1.608900e+00 1.576400e+00 1.544300e+00 1.512700e+00 1.481500e+00 1.450800e+00 1.420600e+00 1.390800e+00 1.361400e+00 1.332400e+00 1.303900e+00 1.275800e+00 1.248200e+00 1.220900e+00 1.194000e+00 1.167500e+00 1.141500e+00 1.115800e+00 1.090500e+00 1.065500e+00 1.041000e+00 1.016800e+00 9.929800e-01 9.695100e-01 9.464000e-01 9.236300e-01 9.012000e-01 8.791000e-01 8.573400e-01 8.359000e-01 8.147800e-01 7.939800e-01 7.734800e-01 7.532900e-01 7.334000e-01 7.138000e-01 6.944800e-01 6.754400e-01 6.566800e-01 6.381800e-01 6.199400e-01 6.019500e-01 5.842000e-01 5.666800e-01 5.493900e-01 5.323000e-01 5.154200e-01 4.987300e-01 4.822000e-01 4.658400e-01 4.496000e-01 4.334900e-01 4.174700e-01 4.015000e-01 3.855800e-01 3.696400e-01 3.536500e-01 3.375600e-01 3.213000e-01 3.048000e-01 2.879700e-01 2.706800e-01 2.528000e-01 2.341500e-01 2.144800e-01 1.934800e-01 1.707100e-01 1.455500e-01 1.170700e-01 8.395200e-02 4.500400e-02 5.663600e-03 3.102100e+00 3.044000e+00 2.986700e+00 2.930200e+00 2.874600e+00 2.819800e+00 2.765800e+00 2.712600e+00 2.660100e+00 2.608500e+00 2.557600e+00 2.507400e+00 2.458000e+00 2.409400e+00 2.361500e+00 2.314200e+00 2.267800e+00 2.222000e+00 2.176900e+00 2.132500e+00 2.088700e+00 2.045700e+00 2.003200e+00 1.961500e+00 1.920400e+00 1.879900e+00 1.840100e+00 1.800900e+00 1.762200e+00 1.724200e+00 1.686800e+00 1.650000e+00 1.613800e+00 1.578100e+00 1.543000e+00 1.508500e+00 1.474500e+00 1.441000e+00 1.408100e+00 1.375700e+00 1.343800e+00 1.312500e+00 1.281700e+00 1.251300e+00 1.221400e+00 1.192100e+00 1.163200e+00 1.134800e+00 1.106800e+00 1.079300e+00 1.052300e+00 1.025700e+00 9.995200e-01 9.737800e-01 9.484800e-01 9.235900e-01 8.991100e-01 8.750300e-01 8.513500e-01 8.280600e-01 8.051600e-01 7.826300e-01 7.604600e-01 7.386600e-01 7.172100e-01 6.961200e-01 6.753500e-01 6.549200e-01 6.348100e-01 6.150000e-01 5.955000e-01 5.762900e-01 5.573600e-01 5.387000e-01 5.202900e-01 5.021100e-01 4.841600e-01 4.664200e-01 4.488600e-01 4.314600e-01 4.142000e-01 3.970500e-01 3.799700e-01 3.629300e-01 3.458700e-01 3.287600e-01 3.115200e-01 2.940900e-01 2.763700e-01 2.582600e-01 2.396300e-01 2.203100e-01 2.000800e-01 1.786800e-01 1.557500e-01 1.307800e-01 1.031200e-01 7.192900e-02 3.707400e-02 4.612400e-03 3.470500e+00 3.402000e+00 3.334600e+00 3.268100e+00 3.202700e+00 3.138400e+00 3.075000e+00 3.012600e+00 2.951200e+00 2.890800e+00 2.831300e+00 2.772800e+00 2.715200e+00 2.658500e+00 2.602700e+00 2.547800e+00 2.493800e+00 2.440700e+00 2.388400e+00 2.337000e+00 2.286400e+00 2.236700e+00 2.187700e+00 2.139600e+00 2.092200e+00 2.045700e+00 1.999900e+00 1.954900e+00 1.910600e+00 1.867100e+00 1.824300e+00 1.782200e+00 1.740800e+00 1.700200e+00 1.660200e+00 1.620900e+00 1.582300e+00 1.544300e+00 1.507000e+00 1.470400e+00 1.434400e+00 1.398900e+00 1.364200e+00 1.330000e+00 1.296400e+00 1.263400e+00 1.231000e+00 1.199200e+00 1.167900e+00 1.137200e+00 1.107000e+00 1.077300e+00 1.048200e+00 1.019600e+00 9.915300e-01 9.639400e-01 9.368500e-01 9.102500e-01 8.841200e-01 8.584600e-01 8.332600e-01 8.085100e-01 7.842000e-01 7.603200e-01 7.368700e-01 7.138400e-01 6.912000e-01 6.689700e-01 6.471100e-01 6.256300e-01 6.045200e-01 5.837500e-01 5.633200e-01 5.432100e-01 5.234100e-01 5.039000e-01 4.846700e-01 4.656900e-01 4.469500e-01 4.284100e-01 4.100600e-01 3.918700e-01 3.737900e-01 3.557900e-01 3.378300e-01 3.198600e-01 3.018100e-01 2.836200e-01 2.652000e-01 2.464500e-01 2.272500e-01 2.074700e-01 1.869000e-01 1.653300e-01 1.424600e-01 1.179200e-01 9.125800e-02 6.205200e-02 3.086900e-02 3.799400e-03 3.840100e+00 3.760700e+00 3.682600e+00 3.605800e+00 3.530300e+00 3.456000e+00 3.382900e+00 3.311100e+00 3.240400e+00 3.170900e+00 3.102600e+00 3.035400e+00 2.969300e+00 2.904400e+00 2.840500e+00 2.777700e+00 2.716000e+00 2.655400e+00 2.595800e+00 2.537200e+00 2.479700e+00 2.423100e+00 2.367500e+00 2.312900e+00 2.259200e+00 2.206500e+00 2.154700e+00 2.103800e+00 2.053900e+00 2.004800e+00 1.956600e+00 1.909200e+00 1.862700e+00 1.817100e+00 1.772200e+00 1.728200e+00 1.685000e+00 1.642600e+00 1.600900e+00 1.560000e+00 1.519900e+00 1.480500e+00 1.441800e+00 1.403900e+00 1.366600e+00 1.330100e+00 1.294200e+00 1.259000e+00 1.224500e+00 1.190600e+00 1.157400e+00 1.124800e+00 1.092800e+00 1.061500e+00 1.030700e+00 1.000600e+00 9.709600e-01 9.419300e-01 9.134700e-01 8.855500e-01 8.581700e-01 8.313200e-01 8.049800e-01 7.791600e-01 7.538200e-01 7.289700e-01 7.045900e-01 6.806800e-01 6.572200e-01 6.341800e-01 6.115800e-01 5.893800e-01 5.675800e-01 5.461500e-01 5.250900e-01 5.043800e-01 4.839900e-01 4.639100e-01 4.441200e-01 4.245800e-01 4.052700e-01 3.861600e-01 3.672200e-01 3.484100e-01 3.296800e-01 3.109900e-01 2.922700e-01 2.734700e-01 2.544900e-01 2.352700e-01 2.156700e-01 1.955900e-01 1.748500e-01 1.532800e-01 1.306600e-01 1.067000e-01 8.114500e-02 5.388900e-02 2.596100e-02 3.163500e-03 4.209500e+00 4.118900e+00 4.029900e+00 3.942400e+00 3.856400e+00 3.771800e+00 3.688800e+00 3.607100e+00 3.526900e+00 3.448100e+00 3.370700e+00 3.294700e+00 3.220000e+00 3.146600e+00 3.074500e+00 3.003700e+00 2.934200e+00 2.865900e+00 2.798800e+00 2.733000e+00 2.668400e+00 2.604900e+00 2.542600e+00 2.481400e+00 2.421400e+00 2.362500e+00 2.304600e+00 2.247900e+00 2.192200e+00 2.137500e+00 2.083900e+00 2.031300e+00 1.979700e+00 1.929000e+00 1.879400e+00 1.830600e+00 1.782800e+00 1.736000e+00 1.690000e+00 1.644900e+00 1.600800e+00 1.557400e+00 1.514900e+00 1.473300e+00 1.432500e+00 1.392400e+00 1.353200e+00 1.314800e+00 1.277100e+00 1.240200e+00 1.204000e+00 1.168600e+00 1.133800e+00 1.099800e+00 1.066500e+00 1.033800e+00 1.001800e+00 9.705000e-01 9.398100e-01 9.097500e-01 8.803000e-01 8.514600e-01 8.232100e-01 7.955500e-01 7.684400e-01 7.419000e-01 7.158900e-01 6.904100e-01 6.654500e-01 6.409800e-01 6.170000e-01 5.934900e-01 5.704300e-01 5.478100e-01 5.256100e-01 5.038000e-01 4.823800e-01 4.613100e-01 4.405800e-01 4.201500e-01 4.000000e-01 3.801000e-01 3.604100e-01 3.409100e-01 3.215300e-01 3.022300e-01 2.829700e-01 2.636800e-01 2.442800e-01 2.247000e-01 2.048400e-01 1.845900e-01 1.638200e-01 1.423900e-01 1.201300e-01 9.686000e-02 7.246300e-02 4.708100e-02 2.202700e-02 2.659000e-03 4.578000e+00 4.475800e+00 4.375500e+00 4.277000e+00 4.180300e+00 4.085300e+00 3.992000e+00 3.900400e+00 3.810500e+00 3.722200e+00 3.635500e+00 3.550400e+00 3.466900e+00 3.385000e+00 3.304500e+00 3.225600e+00 3.148100e+00 3.072100e+00 2.997600e+00 2.924400e+00 2.852600e+00 2.782200e+00 2.713100e+00 2.645400e+00 2.579000e+00 2.513800e+00 2.449900e+00 2.387300e+00 2.325900e+00 2.265700e+00 2.206700e+00 2.148800e+00 2.092100e+00 2.036500e+00 1.982000e+00 1.928700e+00 1.876300e+00 1.825100e+00 1.774900e+00 1.725700e+00 1.677500e+00 1.630300e+00 1.584100e+00 1.538800e+00 1.494500e+00 1.451100e+00 1.408600e+00 1.367000e+00 1.326200e+00 1.286300e+00 1.247300e+00 1.209100e+00 1.171700e+00 1.135100e+00 1.099300e+00 1.064300e+00 1.030000e+00 9.964400e-01 9.636200e-01 9.315200e-01 9.001100e-01 8.693800e-01 8.393200e-01 8.099200e-01 7.811500e-01 7.530100e-01 7.254700e-01 6.985300e-01 6.721800e-01 6.463700e-01 6.211200e-01 5.964000e-01 5.721800e-01 5.484600e-01 5.252100e-01 5.024200e-01 4.800500e-01 4.580900e-01 4.365200e-01 4.153000e-01 3.944100e-01 3.738100e-01 3.534800e-01 3.333700e-01 3.134400e-01 2.936400e-01 2.739400e-01 2.542500e-01 2.345300e-01 2.147000e-01 1.946800e-01 1.743600e-01 1.536700e-01 1.324700e-01 1.106500e-01 8.813100e-02 6.490400e-02 4.129800e-02 1.879500e-02 2.248200e-03 4.944600e+00 4.830700e+00 4.718900e+00 4.609100e+00 4.501400e+00 4.395700e+00 4.292000e+00 4.190200e+00 4.090400e+00 3.992500e+00 3.896400e+00 3.802200e+00 3.709800e+00 3.619100e+00 3.530200e+00 3.443000e+00 3.357600e+00 3.273800e+00 3.191600e+00 3.111100e+00 3.032100e+00 2.954700e+00 2.878900e+00 2.804600e+00 2.731700e+00 2.660400e+00 2.590400e+00 2.521900e+00 2.454800e+00 2.389100e+00 2.324700e+00 2.261600e+00 2.199900e+00 2.139400e+00 2.080200e+00 2.022200e+00 1.965400e+00 1.909900e+00 1.855500e+00 1.802200e+00 1.750100e+00 1.699100e+00 1.649300e+00 1.600500e+00 1.552700e+00 1.506000e+00 1.460300e+00 1.415600e+00 1.371900e+00 1.329100e+00 1.287300e+00 1.246500e+00 1.206500e+00 1.167500e+00 1.129300e+00 1.092000e+00 1.055500e+00 1.019800e+00 9.850000e-01 9.509500e-01 9.176800e-01 8.851700e-01 8.534100e-01 8.223700e-01 7.920400e-01 7.624100e-01 7.334500e-01 7.051500e-01 6.775000e-01 6.504600e-01 6.240400e-01 5.982000e-01 5.729300e-01 5.482000e-01 5.240100e-01 5.003100e-01 4.771000e-01 4.543500e-01 4.320300e-01 4.101100e-01 3.885700e-01 3.673700e-01 3.464800e-01 3.258600e-01 3.054700e-01 2.852700e-01 2.652100e-01 2.452300e-01 2.252700e-01 2.052800e-01 1.851900e-01 1.649000e-01 1.443600e-01 1.234700e-01 1.021700e-01 8.043400e-02 5.836500e-02 3.642100e-02 1.615900e-02 1.916400e-03 5.308900e+00 5.182900e+00 5.059300e+00 4.938100e+00 4.819200e+00 4.702600e+00 4.588300e+00 4.476300e+00 4.366400e+00 4.258700e+00 4.153100e+00 4.049600e+00 3.948200e+00 3.848800e+00 3.751300e+00 3.655900e+00 3.562400e+00 3.470700e+00 3.380900e+00 3.293000e+00 3.206900e+00 3.122500e+00 3.039900e+00 2.958900e+00 2.879700e+00 2.802200e+00 2.726200e+00 2.651900e+00 2.579100e+00 2.507800e+00 2.438100e+00 2.369900e+00 2.303200e+00 2.237800e+00 2.173900e+00 2.111400e+00 2.050300e+00 1.990500e+00 1.932000e+00 1.874800e+00 1.818800e+00 1.764200e+00 1.710700e+00 1.658400e+00 1.607400e+00 1.557400e+00 1.508600e+00 1.461000e+00 1.414400e+00 1.368900e+00 1.324400e+00 1.281000e+00 1.238600e+00 1.197100e+00 1.156700e+00 1.117200e+00 1.078600e+00 1.041000e+00 1.004200e+00 9.683000e-01 9.332700e-01 8.990800e-01 8.657000e-01 8.331300e-01 8.013300e-01 7.703100e-01 7.400200e-01 7.104600e-01 6.816000e-01 6.534300e-01 6.259200e-01 5.990600e-01 5.728200e-01 5.471800e-01 5.221300e-01 4.976300e-01 4.736600e-01 4.502000e-01 4.272100e-01 4.046800e-01 3.825700e-01 3.608500e-01 3.394800e-01 3.184400e-01 2.976700e-01 2.771400e-01 2.568000e-01 2.366000e-01 2.165000e-01 1.964200e-01 1.763300e-01 1.561400e-01 1.358200e-01 1.153000e-01 9.455400e-02 7.362400e-02 5.268100e-02 3.228000e-02 1.399000e-02 1.645700e-03 5.670200e+00 5.531900e+00 5.396400e+00 5.263600e+00 5.133400e+00 5.005800e+00 4.880800e+00 4.758300e+00 4.638300e+00 4.520700e+00 4.405500e+00 4.292700e+00 4.182200e+00 4.074000e+00 3.968000e+00 3.864200e+00 3.762600e+00 3.663100e+00 3.565700e+00 3.470300e+00 3.377000e+00 3.285700e+00 3.196300e+00 3.108800e+00 3.023200e+00 2.939400e+00 2.857500e+00 2.777400e+00 2.699000e+00 2.622300e+00 2.547300e+00 2.474000e+00 2.402300e+00 2.332200e+00 2.263700e+00 2.196700e+00 2.131300e+00 2.067300e+00 2.004800e+00 1.943700e+00 1.884000e+00 1.825700e+00 1.768800e+00 1.713100e+00 1.658800e+00 1.605800e+00 1.554000e+00 1.503400e+00 1.454000e+00 1.405800e+00 1.358800e+00 1.312900e+00 1.268100e+00 1.224400e+00 1.181800e+00 1.140200e+00 1.099600e+00 1.060100e+00 1.021500e+00 9.838400e-01 9.471400e-01 9.113500e-01 8.764600e-01 8.424400e-01 8.092700e-01 7.769300e-01 7.454000e-01 7.146600e-01 6.846900e-01 6.554600e-01 6.269600e-01 5.991500e-01 5.720300e-01 5.455600e-01 5.197200e-01 4.944800e-01 4.698300e-01 4.457300e-01 4.221600e-01 3.990900e-01 3.764800e-01 3.543100e-01 3.325400e-01 3.111300e-01 2.900500e-01 2.692600e-01 2.487100e-01 2.283600e-01 2.081600e-01 1.880700e-01 1.680300e-01 1.480100e-01 1.279500e-01 1.078400e-01 8.768000e-02 6.755500e-02 4.769800e-02 2.872600e-02 1.217800e-02 1.421500e-03 6.028100e+00 5.877500e+00 5.729900e+00 5.585200e+00 5.443600e+00 5.304900e+00 5.169100e+00 5.036100e+00 4.905800e+00 4.778300e+00 4.653500e+00 4.531200e+00 4.411600e+00 4.294500e+00 4.180000e+00 4.067800e+00 3.958100e+00 3.850700e+00 3.745700e+00 3.643000e+00 3.542500e+00 3.444200e+00 3.348000e+00 3.254000e+00 3.162100e+00 3.072200e+00 2.984400e+00 2.898500e+00 2.814500e+00 2.732500e+00 2.652300e+00 2.573900e+00 2.497400e+00 2.422600e+00 2.349600e+00 2.278200e+00 2.208500e+00 2.140400e+00 2.074000e+00 2.009100e+00 1.945700e+00 1.883900e+00 1.823600e+00 1.764700e+00 1.707200e+00 1.651100e+00 1.596400e+00 1.543000e+00 1.491000e+00 1.440200e+00 1.390700e+00 1.342500e+00 1.295400e+00 1.249500e+00 1.204800e+00 1.161200e+00 1.118700e+00 1.077300e+00 1.037000e+00 9.977000e-01 9.594200e-01 9.221300e-01 8.858100e-01 8.504300e-01 8.159600e-01 7.824000e-01 7.497100e-01 7.178800e-01 6.868700e-01 6.566600e-01 6.272400e-01 5.985700e-01 5.706300e-01 5.434000e-01 5.168500e-01 4.909600e-01 4.656900e-01 4.410300e-01 4.169400e-01 3.933900e-01 3.703500e-01 3.477900e-01 3.256700e-01 3.039700e-01 2.826400e-01 2.616400e-01 2.409400e-01 2.205000e-01 2.002700e-01 1.802100e-01 1.602800e-01 1.404600e-01 1.207100e-01 1.010400e-01 8.147800e-02 6.214800e-02 4.332900e-02 2.567300e-02 1.066300e-02 1.235500e-03 6.381800e+00 6.218500e+00 6.058700e+00 5.902200e+00 5.749000e+00 5.599100e+00 5.452300e+00 5.308700e+00 5.168200e+00 5.030700e+00 4.896100e+00 4.764500e+00 4.635700e+00 4.509800e+00 4.386600e+00 4.266100e+00 4.148300e+00 4.033100e+00 3.920500e+00 3.810400e+00 3.702700e+00 3.597500e+00 3.494700e+00 3.394200e+00 3.296000e+00 3.200100e+00 3.106300e+00 3.014800e+00 2.925300e+00 2.838000e+00 2.752700e+00 2.669400e+00 2.588100e+00 2.508700e+00 2.431200e+00 2.355500e+00 2.281700e+00 2.209600e+00 2.139300e+00 2.070700e+00 2.003800e+00 1.938600e+00 1.874900e+00 1.812900e+00 1.752400e+00 1.693300e+00 1.635800e+00 1.579800e+00 1.525100e+00 1.471900e+00 1.420000e+00 1.369500e+00 1.320200e+00 1.272300e+00 1.225600e+00 1.180100e+00 1.135800e+00 1.092700e+00 1.050700e+00 1.009900e+00 9.701000e-01 9.314000e-01 8.937400e-01 8.570900e-01 8.214300e-01 7.867300e-01 7.529700e-01 7.201200e-01 6.881600e-01 6.570600e-01 6.268000e-01 5.973400e-01 5.686700e-01 5.407600e-01 5.135700e-01 4.870900e-01 4.612900e-01 4.361200e-01 4.115800e-01 3.876200e-01 3.642200e-01 3.413300e-01 3.189400e-01 2.970000e-01 2.754800e-01 2.543400e-01 2.335400e-01 2.130600e-01 1.928500e-01 1.728700e-01 1.531000e-01 1.335200e-01 1.141100e-01 9.490000e-02 7.594200e-02 5.738600e-02 3.954600e-02 2.308600e-02 9.413600e-03 1.083400e-03 6.732400e+00 6.556500e+00 6.384400e+00 6.215900e+00 6.051100e+00 5.889900e+00 5.732200e+00 5.578000e+00 5.427100e+00 5.279600e+00 5.135300e+00 4.994300e+00 4.856400e+00 4.721500e+00 4.589800e+00 4.461000e+00 4.335100e+00 4.212000e+00 4.091800e+00 3.974400e+00 3.859600e+00 3.747600e+00 3.638100e+00 3.531200e+00 3.426700e+00 3.324800e+00 3.225200e+00 3.128000e+00 3.033200e+00 2.940600e+00 2.850200e+00 2.762000e+00 2.676000e+00 2.592000e+00 2.510100e+00 2.430200e+00 2.352300e+00 2.276400e+00 2.202300e+00 2.130100e+00 2.059700e+00 1.991100e+00 1.924200e+00 1.859000e+00 1.795500e+00 1.733700e+00 1.673400e+00 1.614700e+00 1.557600e+00 1.501900e+00 1.447700e+00 1.395000e+00 1.343600e+00 1.293700e+00 1.245100e+00 1.197700e+00 1.151700e+00 1.106900e+00 1.063400e+00 1.021000e+00 9.798300e-01 9.397800e-01 9.008300e-01 8.629700e-01 8.261700e-01 7.903900e-01 7.556100e-01 7.218000e-01 6.889400e-01 6.570000e-01 6.259400e-01 5.957500e-01 5.663900e-01 5.378400e-01 5.100700e-01 4.830400e-01 4.567400e-01 4.311200e-01 4.061700e-01 3.818400e-01 3.581100e-01 3.349400e-01 3.123000e-01 2.901600e-01 2.684900e-01 2.472400e-01 2.263800e-01 2.058800e-01 1.857200e-01 1.658500e-01 1.462700e-01 1.269400e-01 1.079000e-01 8.915100e-02 7.079400e-02 5.299600e-02 3.609300e-02 2.075700e-02 8.307300e-03 9.494700e-04 7.080800e+00 6.892200e+00 6.707700e+00 6.527300e+00 6.350800e+00 6.178300e+00 6.009600e+00 5.844700e+00 5.683500e+00 5.526000e+00 5.372000e+00 5.221500e+00 5.074500e+00 4.930800e+00 4.790400e+00 4.653300e+00 4.519300e+00 4.388500e+00 4.260700e+00 4.136000e+00 4.014100e+00 3.895200e+00 3.779100e+00 3.665800e+00 3.555100e+00 3.447200e+00 3.341800e+00 3.239100e+00 3.138800e+00 3.041000e+00 2.945600e+00 2.852600e+00 2.761900e+00 2.673400e+00 2.587200e+00 2.503100e+00 2.421200e+00 2.341400e+00 2.263600e+00 2.187800e+00 2.113900e+00 2.042000e+00 1.971900e+00 1.903700e+00 1.837300e+00 1.772600e+00 1.709700e+00 1.648400e+00 1.588800e+00 1.530800e+00 1.474300e+00 1.419400e+00 1.366000e+00 1.314100e+00 1.263600e+00 1.214500e+00 1.166800e+00 1.120400e+00 1.075300e+00 1.031500e+00 9.888900e-01 9.475300e-01 9.073400e-01 8.683100e-01 8.304000e-01 7.935800e-01 7.578200e-01 7.230900e-01 6.893700e-01 6.566100e-01 6.248100e-01 5.939100e-01 5.639000e-01 5.347400e-01 5.064100e-01 4.788700e-01 4.521000e-01 4.260600e-01 4.007200e-01 3.760500e-01 3.520200e-01 3.285900e-01 3.057400e-01 2.834300e-01 2.616200e-01 2.402800e-01 2.193900e-01 1.989000e-01 1.788000e-01 1.590600e-01 1.396700e-01 1.206300e-01 1.019500e-01 8.367700e-02 6.591800e-02 4.886500e-02 3.287100e-02 1.860600e-02 7.298900e-03 8.278900e-04 7.429200e+00 7.227900e+00 7.031000e+00 6.838600e+00 6.650500e+00 6.466700e+00 6.287000e+00 6.111500e+00 5.940000e+00 5.772300e+00 5.608700e+00 5.448700e+00 5.292500e+00 5.140000e+00 4.991000e+00 4.845600e+00 4.703600e+00 4.564900e+00 4.429600e+00 4.297500e+00 4.168600e+00 4.042800e+00 3.920100e+00 3.800400e+00 3.683500e+00 3.569600e+00 3.458500e+00 3.350100e+00 3.244500e+00 3.141500e+00 3.041000e+00 2.943200e+00 2.847800e+00 2.754800e+00 2.664300e+00 2.576000e+00 2.490100e+00 2.406300e+00 2.324800e+00 2.245400e+00 2.168200e+00 2.092900e+00 2.019700e+00 1.948400e+00 1.879000e+00 1.811600e+00 1.745900e+00 1.682100e+00 1.620000e+00 1.559600e+00 1.500900e+00 1.443900e+00 1.388400e+00 1.334500e+00 1.282100e+00 1.231200e+00 1.181800e+00 1.133800e+00 1.087200e+00 1.041900e+00 9.979500e-01 9.552800e-01 9.138500e-01 8.736500e-01 8.346300e-01 7.967700e-01 7.600300e-01 7.243800e-01 6.898000e-01 6.562300e-01 6.236700e-01 5.920700e-01 5.614100e-01 5.316400e-01 5.027600e-01 4.747000e-01 4.474600e-01 4.210000e-01 3.952800e-01 3.702700e-01 3.459400e-01 3.222500e-01 2.991800e-01 2.766900e-01 2.547500e-01 2.333200e-01 2.123900e-01 1.919200e-01 1.718800e-01 1.522800e-01 1.330800e-01 1.143200e-01 9.600000e-02 7.820300e-02 6.104300e-02 4.473400e-02 2.964900e-02 1.645500e-02 6.290500e-03 7.063200e-04 7.777600e+00 7.563500e+00 7.354400e+00 7.149900e+00 6.950200e+00 6.755000e+00 6.564400e+00 6.378200e+00 6.196400e+00 6.018700e+00 5.845300e+00 5.676000e+00 5.510600e+00 5.349200e+00 5.191700e+00 5.037900e+00 4.887800e+00 4.741300e+00 4.598500e+00 4.459100e+00 4.323100e+00 4.190500e+00 4.061100e+00 3.935000e+00 3.811900e+00 3.692000e+00 3.575100e+00 3.461200e+00 3.350100e+00 3.241900e+00 3.136500e+00 3.033800e+00 2.933700e+00 2.836200e+00 2.741300e+00 2.648900e+00 2.558900e+00 2.471300e+00 2.386100e+00 2.303100e+00 2.222400e+00 2.143800e+00 2.067400e+00 1.993100e+00 1.920800e+00 1.850500e+00 1.782200e+00 1.715700e+00 1.651200e+00 1.588500e+00 1.527500e+00 1.468300e+00 1.410800e+00 1.354900e+00 1.300700e+00 1.248000e+00 1.196900e+00 1.147200e+00 1.099100e+00 1.052300e+00 1.007000e+00 9.630200e-01 9.203600e-01 8.789900e-01 8.388700e-01 7.999600e-01 7.622400e-01 7.256700e-01 6.902200e-01 6.558500e-01 6.225300e-01 5.902300e-01 5.589100e-01 5.285500e-01 4.991000e-01 4.705300e-01 4.428200e-01 4.159300e-01 3.898300e-01 3.644800e-01 3.398500e-01 3.159000e-01 2.926200e-01 2.699600e-01 2.478800e-01 2.263700e-01 2.054000e-01 1.849400e-01 1.649700e-01 1.454900e-01 1.264900e-01 1.080000e-01 9.005300e-02 7.272900e-02 5.616800e-02 4.060300e-02 2.642700e-02 1.430400e-02 5.282100e-03 5.847400e-04 8.126000e+00 7.899200e+00 7.677700e+00 7.461200e+00 7.249900e+00 7.043400e+00 6.841900e+00 6.644900e+00 6.452800e+00 6.265100e+00 6.082000e+00 5.903200e+00 5.728700e+00 5.558400e+00 5.392300e+00 5.230200e+00 5.072000e+00 4.917800e+00 4.767400e+00 4.620600e+00 4.477600e+00 4.338100e+00 4.202100e+00 4.069600e+00 3.940300e+00 3.814500e+00 3.691700e+00 3.572300e+00 3.455800e+00 3.342400e+00 3.231900e+00 3.124300e+00 3.019600e+00 2.917700e+00 2.818400e+00 2.721800e+00 2.627800e+00 2.536300e+00 2.447300e+00 2.360800e+00 2.276600e+00 2.194800e+00 2.115200e+00 2.037800e+00 1.962500e+00 1.889500e+00 1.818400e+00 1.749400e+00 1.682400e+00 1.617300e+00 1.554100e+00 1.492800e+00 1.433100e+00 1.375300e+00 1.319200e+00 1.264700e+00 1.211900e+00 1.160700e+00 1.110900e+00 1.062800e+00 1.016100e+00 9.707700e-01 9.268700e-01 8.843300e-01 8.431000e-01 8.031500e-01 7.644500e-01 7.269600e-01 6.906500e-01 6.554700e-01 6.214000e-01 5.883900e-01 5.564200e-01 5.254500e-01 4.954400e-01 4.663600e-01 4.381900e-01 4.108700e-01 3.843800e-01 3.586900e-01 3.337600e-01 3.095600e-01 2.860500e-01 2.632200e-01 2.410100e-01 2.194100e-01 1.984000e-01 1.779500e-01 1.580500e-01 1.387000e-01 1.199000e-01 1.016900e-01 8.410600e-02 6.725500e-02 5.129200e-02 3.647200e-02 2.320500e-02 1.215300e-02 4.273700e-03 4.631600e-04 8.474400e+00 8.234900e+00 8.001000e+00 7.772600e+00 7.549600e+00 7.331800e+00 7.119300e+00 6.911700e+00 6.709200e+00 6.511500e+00 6.318700e+00 6.130400e+00 5.946800e+00 5.767600e+00 5.592900e+00 5.422500e+00 5.256300e+00 5.094200e+00 4.936200e+00 4.782200e+00 4.632000e+00 4.485800e+00 4.343200e+00 4.204200e+00 4.068800e+00 3.936900e+00 3.808400e+00 3.683300e+00 3.561500e+00 3.442900e+00 3.327300e+00 3.214900e+00 3.105500e+00 2.999100e+00 2.895500e+00 2.794700e+00 2.696700e+00 2.601300e+00 2.508600e+00 2.418500e+00 2.330900e+00 2.245700e+00 2.162900e+00 2.082500e+00 2.004300e+00 1.928400e+00 1.854700e+00 1.783100e+00 1.713600e+00 1.646200e+00 1.580700e+00 1.517200e+00 1.455500e+00 1.395800e+00 1.337700e+00 1.281500e+00 1.227000e+00 1.174100e+00 1.122800e+00 1.073200e+00 1.025100e+00 9.785200e-01 9.333800e-01 8.896700e-01 8.473300e-01 8.063500e-01 7.666600e-01 7.282500e-01 6.910700e-01 6.550800e-01 6.202600e-01 5.865500e-01 5.539300e-01 5.223500e-01 4.917800e-01 4.621900e-01 4.335500e-01 4.058000e-01 3.789400e-01 3.529100e-01 3.276800e-01 3.032100e-01 2.794900e-01 2.564800e-01 2.341400e-01 2.124600e-01 1.914100e-01 1.709700e-01 1.511300e-01 1.319100e-01 1.133100e-01 9.537400e-02 7.815800e-02 6.178100e-02 4.641700e-02 3.234100e-02 1.998300e-02 1.000200e-02 3.265300e-03 3.415900e-04 8.822700e+00 8.570600e+00 8.324300e+00 8.083900e+00 7.849200e+00 7.620200e+00 7.396700e+00 7.178400e+00 6.965600e+00 6.757800e+00 6.555300e+00 6.357700e+00 6.164900e+00 5.976900e+00 5.793500e+00 5.614800e+00 5.440500e+00 5.270700e+00 5.105100e+00 4.943700e+00 4.786500e+00 4.633400e+00 4.484200e+00 4.338800e+00 4.197200e+00 4.059300e+00 3.925000e+00 3.794400e+00 3.667100e+00 3.543300e+00 3.422800e+00 3.305500e+00 3.191400e+00 3.080500e+00 2.972600e+00 2.867500e+00 2.765500e+00 2.666300e+00 2.569900e+00 2.476100e+00 2.385100e+00 2.296600e+00 2.210700e+00 2.127100e+00 2.046100e+00 1.967300e+00 1.890900e+00 1.816800e+00 1.744800e+00 1.675000e+00 1.607300e+00 1.541600e+00 1.477900e+00 1.416200e+00 1.356300e+00 1.298200e+00 1.242000e+00 1.187500e+00 1.134700e+00 1.083700e+00 1.034200e+00 9.862700e-01 9.398900e-01 8.950100e-01 8.515700e-01 8.095400e-01 7.688700e-01 7.295400e-01 6.915000e-01 6.547000e-01 6.191200e-01 5.847100e-01 5.514300e-01 5.192500e-01 4.881300e-01 4.580200e-01 4.289100e-01 4.007400e-01 3.734900e-01 3.471200e-01 3.215900e-01 2.968700e-01 2.729300e-01 2.497500e-01 2.272700e-01 2.055000e-01 1.844100e-01 1.639900e-01 1.442200e-01 1.251200e-01 1.067200e-01 8.906000e-02 7.221100e-02 5.630700e-02 4.154200e-02 2.821000e-02 1.676100e-02 7.850400e-03 2.256900e-03 2.200100e-04 9.171100e+00 8.906300e+00 8.647700e+00 8.395200e+00 8.148900e+00 7.908600e+00 7.674100e+00 7.445200e+00 7.222000e+00 7.004200e+00 6.792000e+00 6.584900e+00 6.383000e+00 6.186100e+00 5.994200e+00 5.807100e+00 5.624800e+00 5.447100e+00 5.274000e+00 5.105300e+00 4.941000e+00 4.781000e+00 4.625200e+00 4.473400e+00 4.325600e+00 4.181700e+00 4.041600e+00 3.905400e+00 3.772800e+00 3.643800e+00 3.518200e+00 3.396100e+00 3.277300e+00 3.161900e+00 3.049600e+00 2.940400e+00 2.834400e+00 2.731300e+00 2.631100e+00 2.533800e+00 2.439300e+00 2.347500e+00 2.258400e+00 2.171800e+00 2.087800e+00 2.006300e+00 1.927200e+00 1.850400e+00 1.776100e+00 1.703900e+00 1.633900e+00 1.566100e+00 1.500300e+00 1.436600e+00 1.374800e+00 1.315000e+00 1.257100e+00 1.200900e+00 1.146600e+00 1.094100e+00 1.043200e+00 9.940200e-01 9.464000e-01 9.003500e-01 8.558000e-01 8.127300e-01 7.710800e-01 7.308300e-01 6.919300e-01 6.543200e-01 6.179900e-01 5.828700e-01 5.489400e-01 5.161500e-01 4.844700e-01 4.538500e-01 4.242700e-01 3.956800e-01 3.680500e-01 3.413300e-01 3.155100e-01 2.905200e-01 2.663700e-01 2.430100e-01 2.204100e-01 1.985500e-01 1.774200e-01 1.570100e-01 1.373000e-01 1.183400e-01 1.001300e-01 8.274600e-02 6.626300e-02 5.083300e-02 3.666600e-02 2.407900e-02 1.353900e-02 5.699300e-03 1.248500e-03 9.843300e-05 9.519500e+00 9.241900e+00 8.971000e+00 8.706600e+00 8.448600e+00 8.196900e+00 7.951500e+00 7.711900e+00 7.478400e+00 7.250600e+00 7.028600e+00 6.812100e+00 6.601000e+00 6.395300e+00 6.194800e+00 5.999400e+00 5.809000e+00 5.623500e+00 5.442900e+00 5.266900e+00 5.095500e+00 4.928700e+00 4.766200e+00 4.608000e+00 4.454000e+00 4.304200e+00 4.158300e+00 4.016500e+00 3.878400e+00 3.744200e+00 3.613600e+00 3.486700e+00 3.363200e+00 3.243300e+00 3.126700e+00 3.013300e+00 2.903300e+00 2.796200e+00 2.692400e+00 2.591500e+00 2.493600e+00 2.398400e+00 2.306100e+00 2.216500e+00 2.129600e+00 2.045200e+00 1.963400e+00 1.884100e+00 1.807300e+00 1.732700e+00 1.660500e+00 1.590500e+00 1.522600e+00 1.457000e+00 1.393300e+00 1.331700e+00 1.272100e+00 1.214400e+00 1.158500e+00 1.104600e+00 1.052300e+00 1.001800e+00 9.529100e-01 9.056900e-01 8.600300e-01 8.159200e-01 7.732900e-01 7.321200e-01 6.923500e-01 6.539400e-01 6.168500e-01 5.810300e-01 5.464500e-01 5.130500e-01 4.808100e-01 4.496800e-01 4.196300e-01 3.906100e-01 3.626000e-01 3.355500e-01 3.094200e-01 2.841800e-01 2.598100e-01 2.362700e-01 2.135400e-01 1.915900e-01 1.704200e-01 1.500200e-01 1.303800e-01 1.115500e-01 9.353800e-02 7.643200e-02 6.031600e-02 4.535900e-02 3.179100e-02 1.994800e-02 1.031700e-02 3.548200e-03 2.400700e-04 -2.314300e-05 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/diffraction/2006/h12006jetspdf_singlet_fitB.data����������������������������0000644�0001750�0001750�00000121574�11754474775�026026� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������-3.000000e+00 -2.969741e+00 -2.939482e+00 -2.909223e+00 -2.878964e+00 -2.848705e+00 -2.818446e+00 -2.788187e+00 -2.757928e+00 -2.727670e+00 -2.697411e+00 -2.667152e+00 -2.636893e+00 -2.606634e+00 -2.576375e+00 -2.546116e+00 -2.515857e+00 -2.485598e+00 -2.455339e+00 -2.425080e+00 -2.394821e+00 -2.364562e+00 -2.334303e+00 -2.304044e+00 -2.273785e+00 -2.243526e+00 -2.213268e+00 -2.183009e+00 -2.152750e+00 -2.122491e+00 -2.092232e+00 -2.061973e+00 -2.031714e+00 -2.001455e+00 -1.971196e+00 -1.940937e+00 -1.910678e+00 -1.880419e+00 -1.850160e+00 -1.819901e+00 -1.789642e+00 -1.759383e+00 -1.729124e+00 -1.698866e+00 -1.668607e+00 -1.638348e+00 -1.608089e+00 -1.577830e+00 -1.547571e+00 -1.517312e+00 -1.487053e+00 -1.456794e+00 -1.426535e+00 -1.396276e+00 -1.366017e+00 -1.335758e+00 -1.305499e+00 -1.275240e+00 -1.244981e+00 -1.214722e+00 -1.184464e+00 -1.154205e+00 -1.123946e+00 -1.093687e+00 -1.063428e+00 -1.033169e+00 -1.002910e+00 -9.726509e-01 -9.423920e-01 -9.121330e-01 -8.818741e-01 -8.516152e-01 -8.213562e-01 -7.910973e-01 -7.608383e-01 -7.305794e-01 -7.003205e-01 -6.700615e-01 -6.398026e-01 -6.095436e-01 -5.792847e-01 -5.490257e-01 -5.187668e-01 -4.885079e-01 -4.582489e-01 -4.279900e-01 -3.977310e-01 -3.674721e-01 -3.372132e-01 -3.069542e-01 -2.766953e-01 -2.464363e-01 -2.161774e-01 -1.859185e-01 -1.556595e-01 -1.254006e-01 -9.514163e-02 -6.488269e-02 -3.462375e-02 -4.364805e-03 1.000000e+00 1.426867e+00 2.035949e+00 2.905029e+00 4.145090e+00 5.914492e+00 8.439194e+00 1.204161e+01 1.718177e+01 2.451610e+01 3.498122e+01 4.991354e+01 7.121999e+01 1.016215e+02 1.450003e+02 2.068961e+02 2.952133e+02 4.212301e+02 6.010393e+02 8.576031e+02 1.223686e+03 1.746037e+03 2.491362e+03 3.554842e+03 5.072287e+03 7.237479e+03 1.032692e+04 1.473514e+04 2.102509e+04 3.000000e+04 -1.978500e-02 -1.962900e-02 -1.947200e-02 -1.931400e-02 -1.915600e-02 -1.899800e-02 -1.883900e-02 -1.867900e-02 -1.851900e-02 -1.835800e-02 -1.819600e-02 -1.803300e-02 -1.787100e-02 -1.770700e-02 -1.754300e-02 -1.737900e-02 -1.721300e-02 -1.704800e-02 -1.688100e-02 -1.671500e-02 -1.654800e-02 -1.638000e-02 -1.621200e-02 -1.604300e-02 -1.587400e-02 -1.570400e-02 -1.553400e-02 -1.536200e-02 -1.519100e-02 -1.501900e-02 -1.484600e-02 -1.467300e-02 -1.449900e-02 -1.432500e-02 -1.414900e-02 -1.397200e-02 -1.379600e-02 -1.361700e-02 -1.343800e-02 -1.325800e-02 -1.307500e-02 -1.289200e-02 -1.270700e-02 -1.252000e-02 -1.233000e-02 -1.213900e-02 -1.194400e-02 -1.174700e-02 -1.154600e-02 -1.134100e-02 -1.113100e-02 -1.091600e-02 -1.069500e-02 -1.046800e-02 -1.023300e-02 -9.990700e-03 -9.738600e-03 -9.475900e-03 -9.201300e-03 -8.913400e-03 -8.610500e-03 -8.290800e-03 -7.952200e-03 -7.592500e-03 -7.209100e-03 -6.799100e-03 -6.359400e-03 -5.886800e-03 -5.377000e-03 -4.826200e-03 -4.229900e-03 -3.582800e-03 -2.878800e-03 -2.112400e-03 -1.276800e-03 -3.643300e-04 6.326400e-04 1.722400e-03 2.914700e-03 4.219200e-03 5.645500e-03 7.204700e-03 8.907500e-03 1.076600e-02 1.279000e-02 1.499200e-02 1.737700e-02 1.995500e-02 2.273300e-02 2.569800e-02 2.884000e-02 3.213600e-02 3.553900e-02 3.895400e-02 4.224200e-02 4.514500e-02 4.718800e-02 4.737000e-02 4.309000e-02 6.104300e-03 -1.220400e-02 -1.210500e-02 -1.200500e-02 -1.190600e-02 -1.180600e-02 -1.170500e-02 -1.160500e-02 -1.150300e-02 -1.140200e-02 -1.130000e-02 -1.119800e-02 -1.109500e-02 -1.099300e-02 -1.088900e-02 -1.078500e-02 -1.068200e-02 -1.057700e-02 -1.047300e-02 -1.036700e-02 -1.026200e-02 -1.015600e-02 -1.005000e-02 -9.943200e-03 -9.835900e-03 -9.728500e-03 -9.620400e-03 -9.512100e-03 -9.402800e-03 -9.293100e-03 -9.182900e-03 -9.072200e-03 -8.960600e-03 -8.848600e-03 -8.735400e-03 -8.621200e-03 -8.506100e-03 -8.390200e-03 -8.272600e-03 -8.154000e-03 -8.033800e-03 -7.911700e-03 -7.787800e-03 -7.662000e-03 -7.533500e-03 -7.402500e-03 -7.268700e-03 -7.131500e-03 -6.990500e-03 -6.845400e-03 -6.695700e-03 -6.540500e-03 -6.379500e-03 -6.212200e-03 -6.037300e-03 -5.854300e-03 -5.662200e-03 -5.459700e-03 -5.245800e-03 -5.019100e-03 -4.778100e-03 -4.521100e-03 -4.246400e-03 -3.951900e-03 -3.635400e-03 -3.294400e-03 -2.926200e-03 -2.527800e-03 -2.095900e-03 -1.626700e-03 -1.116400e-03 -5.608400e-04 4.493700e-05 7.062800e-04 1.428500e-03 2.217700e-03 3.080600e-03 4.024100e-03 5.055400e-03 6.182700e-03 7.414200e-03 8.758000e-03 1.022300e-02 1.181700e-02 1.354900e-02 1.542700e-02 1.745600e-02 1.963900e-02 2.197800e-02 2.447200e-02 2.710300e-02 2.985000e-02 3.267800e-02 3.552500e-02 3.828400e-02 4.079600e-02 4.278800e-02 4.377200e-02 4.276000e-02 3.720800e-02 5.230800e-03 -4.616700e-03 -4.575100e-03 -4.533500e-03 -4.491700e-03 -4.449800e-03 -4.407900e-03 -4.365800e-03 -4.323600e-03 -4.281300e-03 -4.238800e-03 -4.196300e-03 -4.153600e-03 -4.110800e-03 -4.067800e-03 -4.024700e-03 -3.981400e-03 -3.937900e-03 -3.894200e-03 -3.850300e-03 -3.806200e-03 -3.761800e-03 -3.717200e-03 -3.672200e-03 -3.626900e-03 -3.581200e-03 -3.535200e-03 -3.488600e-03 -3.441600e-03 -3.394000e-03 -3.345800e-03 -3.296900e-03 -3.247300e-03 -3.196700e-03 -3.145300e-03 -3.092800e-03 -3.039100e-03 -2.984100e-03 -2.927700e-03 -2.869600e-03 -2.809700e-03 -2.747800e-03 -2.683700e-03 -2.617000e-03 -2.547500e-03 -2.475000e-03 -2.398900e-03 -2.319000e-03 -2.234800e-03 -2.145800e-03 -2.051400e-03 -1.951200e-03 -1.844300e-03 -1.730100e-03 -1.607700e-03 -1.476300e-03 -1.334800e-03 -1.182100e-03 -1.017100e-03 -8.382500e-04 -6.442100e-04 -4.332600e-04 -2.036500e-04 4.668000e-05 3.198500e-04 6.183400e-04 9.447100e-04 1.301900e-03 1.693000e-03 2.121500e-03 2.591100e-03 3.105900e-03 3.670300e-03 4.288900e-03 4.966900e-03 5.709600e-03 6.522900e-03 7.412700e-03 8.385600e-03 9.447800e-03 1.060600e-02 1.186700e-02 1.323800e-02 1.472400e-02 1.633000e-02 1.806000e-02 1.991600e-02 2.189800e-02 2.399800e-02 2.620700e-02 2.850500e-02 3.085800e-02 3.321800e-02 3.550800e-02 3.761200e-02 3.935000e-02 4.043100e-02 4.035800e-02 3.815500e-02 3.133500e-02 4.358600e-03 3.625600e-03 3.587200e-03 3.548900e-03 3.510800e-03 3.472800e-03 3.434900e-03 3.397300e-03 3.359800e-03 3.322500e-03 3.285400e-03 3.248500e-03 3.211900e-03 3.175500e-03 3.139300e-03 3.103400e-03 3.067900e-03 3.032600e-03 2.997700e-03 2.963200e-03 2.929100e-03 2.895400e-03 2.862100e-03 2.829400e-03 2.797300e-03 2.765700e-03 2.734800e-03 2.704700e-03 2.675300e-03 2.646700e-03 2.619100e-03 2.592500e-03 2.567000e-03 2.542800e-03 2.519800e-03 2.498400e-03 2.478500e-03 2.460500e-03 2.444300e-03 2.430400e-03 2.418700e-03 2.409700e-03 2.403500e-03 2.400400e-03 2.400800e-03 2.405000e-03 2.413300e-03 2.426300e-03 2.444400e-03 2.468000e-03 2.497900e-03 2.534500e-03 2.578600e-03 2.631000e-03 2.692500e-03 2.764000e-03 2.846600e-03 2.941300e-03 3.049500e-03 3.172400e-03 3.311600e-03 3.468700e-03 3.645400e-03 3.843800e-03 4.065900e-03 4.314100e-03 4.590900e-03 4.899100e-03 5.241600e-03 5.621700e-03 6.043000e-03 6.509100e-03 7.024100e-03 7.592300e-03 8.218200e-03 8.906700e-03 9.662800e-03 1.049200e-02 1.139900e-02 1.238900e-02 1.346800e-02 1.464100e-02 1.591200e-02 1.728500e-02 1.876200e-02 2.034400e-02 2.202900e-02 2.381200e-02 2.568100e-02 2.762000e-02 2.960200e-02 3.158600e-02 3.351400e-02 3.529800e-02 3.681300e-02 3.786700e-02 3.816300e-02 3.720400e-02 3.405700e-02 2.640100e-02 3.631100e-03 1.278700e-02 1.263400e-02 1.248200e-02 1.233000e-02 1.217900e-02 1.202900e-02 1.187900e-02 1.173100e-02 1.158300e-02 1.143700e-02 1.129100e-02 1.114600e-02 1.100100e-02 1.085800e-02 1.071600e-02 1.057500e-02 1.043400e-02 1.029500e-02 1.015700e-02 1.002000e-02 9.883700e-03 9.748900e-03 9.615300e-03 9.483100e-03 9.352100e-03 9.222600e-03 9.094500e-03 8.968000e-03 8.843100e-03 8.719900e-03 8.598600e-03 8.479100e-03 8.361700e-03 8.246500e-03 8.133700e-03 8.023200e-03 7.915500e-03 7.810600e-03 7.708800e-03 7.610200e-03 7.515200e-03 7.423900e-03 7.336900e-03 7.254200e-03 7.176400e-03 7.103800e-03 7.036900e-03 6.976200e-03 6.922100e-03 6.875400e-03 6.836600e-03 6.806400e-03 6.785600e-03 6.775200e-03 6.775900e-03 6.788900e-03 6.815200e-03 6.856200e-03 6.913000e-03 6.987300e-03 7.080600e-03 7.194600e-03 7.331300e-03 7.492700e-03 7.681000e-03 7.898700e-03 8.148500e-03 8.433000e-03 8.755500e-03 9.119100e-03 9.527300e-03 9.983900e-03 1.049300e-02 1.105800e-02 1.168300e-02 1.237400e-02 1.313400e-02 1.396700e-02 1.487900e-02 1.587300e-02 1.695200e-02 1.811900e-02 1.937700e-02 2.072500e-02 2.216100e-02 2.368000e-02 2.527300e-02 2.692500e-02 2.861500e-02 3.031100e-02 3.196600e-02 3.351600e-02 3.486700e-02 3.588800e-02 3.638400e-02 3.606000e-02 3.444100e-02 3.065300e-02 2.263500e-02 3.082100e-03 2.271000e-02 2.240900e-02 2.211100e-02 2.181500e-02 2.152100e-02 2.122800e-02 2.093800e-02 2.065000e-02 2.036400e-02 2.008000e-02 1.979900e-02 1.951900e-02 1.924200e-02 1.896600e-02 1.869300e-02 1.842200e-02 1.815400e-02 1.788700e-02 1.762300e-02 1.736100e-02 1.710200e-02 1.684500e-02 1.659000e-02 1.633800e-02 1.608900e-02 1.584200e-02 1.559800e-02 1.535700e-02 1.511900e-02 1.488300e-02 1.465100e-02 1.442200e-02 1.419600e-02 1.397300e-02 1.375500e-02 1.354000e-02 1.332800e-02 1.312200e-02 1.291900e-02 1.272100e-02 1.252800e-02 1.234000e-02 1.215700e-02 1.198100e-02 1.181000e-02 1.164600e-02 1.148900e-02 1.134000e-02 1.119900e-02 1.106600e-02 1.094300e-02 1.083000e-02 1.072700e-02 1.063700e-02 1.055900e-02 1.049400e-02 1.044500e-02 1.041100e-02 1.039400e-02 1.039700e-02 1.041900e-02 1.046400e-02 1.053200e-02 1.062600e-02 1.074800e-02 1.090000e-02 1.108600e-02 1.130600e-02 1.156500e-02 1.186500e-02 1.220900e-02 1.260200e-02 1.304600e-02 1.354500e-02 1.410200e-02 1.472300e-02 1.540900e-02 1.616600e-02 1.699500e-02 1.790100e-02 1.888500e-02 1.995000e-02 2.109300e-02 2.231500e-02 2.361000e-02 2.497100e-02 2.638600e-02 2.783800e-02 2.930100e-02 3.073900e-02 3.210300e-02 3.332200e-02 3.430200e-02 3.490800e-02 3.494800e-02 3.413500e-02 3.202100e-02 2.780600e-02 1.970300e-02 2.659100e-03 3.324200e-02 3.276600e-02 3.229300e-02 3.182500e-02 3.136000e-02 3.090000e-02 3.044300e-02 2.999000e-02 2.954200e-02 2.909700e-02 2.865600e-02 2.821900e-02 2.778600e-02 2.735700e-02 2.693200e-02 2.651100e-02 2.609400e-02 2.568100e-02 2.527200e-02 2.486700e-02 2.446600e-02 2.407000e-02 2.367700e-02 2.328900e-02 2.290600e-02 2.252600e-02 2.215100e-02 2.178000e-02 2.141400e-02 2.105300e-02 2.069700e-02 2.034500e-02 1.999800e-02 1.965700e-02 1.932000e-02 1.899000e-02 1.866400e-02 1.834500e-02 1.803200e-02 1.772500e-02 1.742400e-02 1.713000e-02 1.684400e-02 1.656400e-02 1.629300e-02 1.603000e-02 1.577600e-02 1.553000e-02 1.529500e-02 1.507000e-02 1.485600e-02 1.465300e-02 1.446300e-02 1.428700e-02 1.412400e-02 1.397700e-02 1.384600e-02 1.373300e-02 1.363800e-02 1.356400e-02 1.351100e-02 1.348100e-02 1.347700e-02 1.350000e-02 1.355200e-02 1.363500e-02 1.375100e-02 1.390400e-02 1.409600e-02 1.432900e-02 1.460700e-02 1.493200e-02 1.530800e-02 1.573900e-02 1.622600e-02 1.677400e-02 1.738600e-02 1.806400e-02 1.881200e-02 1.963000e-02 2.052000e-02 2.148300e-02 2.251600e-02 2.361600e-02 2.477700e-02 2.599000e-02 2.723900e-02 2.850600e-02 2.976300e-02 3.096900e-02 3.207300e-02 3.300300e-02 3.366300e-02 3.391800e-02 3.358100e-02 3.237800e-02 2.989000e-02 2.539300e-02 1.736100e-02 2.324500e-03 4.432200e-02 4.364100e-02 4.296600e-02 4.229700e-02 4.163600e-02 4.098000e-02 4.033100e-02 3.968900e-02 3.905300e-02 3.842400e-02 3.780100e-02 3.718400e-02 3.657400e-02 3.597000e-02 3.537300e-02 3.478200e-02 3.419700e-02 3.361900e-02 3.304700e-02 3.248200e-02 3.192200e-02 3.137000e-02 3.082400e-02 3.028400e-02 2.975100e-02 2.922400e-02 2.870400e-02 2.819100e-02 2.768500e-02 2.718500e-02 2.669200e-02 2.620600e-02 2.572800e-02 2.525600e-02 2.479200e-02 2.433600e-02 2.388700e-02 2.344600e-02 2.301300e-02 2.258800e-02 2.217200e-02 2.176500e-02 2.136600e-02 2.097800e-02 2.059900e-02 2.023000e-02 1.987200e-02 1.952500e-02 1.919000e-02 1.886700e-02 1.855700e-02 1.826100e-02 1.797800e-02 1.771100e-02 1.746000e-02 1.722600e-02 1.701100e-02 1.681400e-02 1.663800e-02 1.648300e-02 1.635200e-02 1.624600e-02 1.616600e-02 1.611500e-02 1.609400e-02 1.610600e-02 1.615200e-02 1.623500e-02 1.635800e-02 1.652200e-02 1.673200e-02 1.698900e-02 1.729700e-02 1.765700e-02 1.807400e-02 1.855000e-02 1.908700e-02 1.968800e-02 2.035400e-02 2.108700e-02 2.188600e-02 2.275000e-02 2.367800e-02 2.466300e-02 2.569900e-02 2.677400e-02 2.787200e-02 2.897100e-02 3.004000e-02 3.104100e-02 3.191700e-02 3.259700e-02 3.298400e-02 3.294600e-02 3.230200e-02 3.079400e-02 2.803100e-02 2.336400e-02 1.549900e-02 2.060700e-03 5.570600e-02 5.480200e-02 5.390700e-02 5.302100e-02 5.214600e-02 5.128000e-02 5.042300e-02 4.957600e-02 4.873900e-02 4.791000e-02 4.709100e-02 4.628200e-02 4.548200e-02 4.469000e-02 4.390900e-02 4.313600e-02 4.237200e-02 4.161800e-02 4.087200e-02 4.013600e-02 3.940900e-02 3.869100e-02 3.798100e-02 3.728100e-02 3.659000e-02 3.590800e-02 3.523600e-02 3.457200e-02 3.391800e-02 3.327300e-02 3.263700e-02 3.201000e-02 3.139300e-02 3.078600e-02 3.018900e-02 2.960100e-02 2.902300e-02 2.845500e-02 2.789800e-02 2.735100e-02 2.681600e-02 2.629100e-02 2.577700e-02 2.527500e-02 2.478500e-02 2.430800e-02 2.384300e-02 2.339100e-02 2.295400e-02 2.253000e-02 2.212200e-02 2.172900e-02 2.135300e-02 2.099300e-02 2.065200e-02 2.032900e-02 2.002700e-02 1.974500e-02 1.948600e-02 1.925100e-02 1.904000e-02 1.885600e-02 1.870000e-02 1.857400e-02 1.848000e-02 1.841900e-02 1.839400e-02 1.840700e-02 1.846000e-02 1.855600e-02 1.869700e-02 1.888600e-02 1.912400e-02 1.941600e-02 1.976300e-02 2.016700e-02 2.063000e-02 2.115400e-02 2.174100e-02 2.239000e-02 2.310000e-02 2.387000e-02 2.469600e-02 2.557100e-02 2.648700e-02 2.743100e-02 2.838600e-02 2.932700e-02 3.022300e-02 3.103300e-02 3.170000e-02 3.215300e-02 3.229400e-02 3.199600e-02 3.108400e-02 2.931400e-02 2.632900e-02 2.154700e-02 1.388600e-02 1.833600e-03 6.742400e-02 6.627500e-02 6.514000e-02 6.401700e-02 6.290800e-02 6.181200e-02 6.073000e-02 5.966000e-02 5.860400e-02 5.756000e-02 5.652900e-02 5.551000e-02 5.450500e-02 5.351200e-02 5.253100e-02 5.156300e-02 5.060700e-02 4.966400e-02 4.873200e-02 4.781300e-02 4.690600e-02 4.601200e-02 4.512900e-02 4.425800e-02 4.340000e-02 4.255300e-02 4.171800e-02 4.089600e-02 4.008500e-02 3.928700e-02 3.850100e-02 3.772600e-02 3.696400e-02 3.621500e-02 3.547700e-02 3.475200e-02 3.404000e-02 3.334100e-02 3.265400e-02 3.198000e-02 3.132000e-02 3.067300e-02 3.004000e-02 2.942200e-02 2.881700e-02 2.822700e-02 2.765300e-02 2.709400e-02 2.655100e-02 2.602400e-02 2.551500e-02 2.502400e-02 2.455100e-02 2.409700e-02 2.366400e-02 2.325200e-02 2.286100e-02 2.249400e-02 2.215100e-02 2.183300e-02 2.154200e-02 2.127900e-02 2.104600e-02 2.084500e-02 2.067700e-02 2.054300e-02 2.044700e-02 2.039000e-02 2.037400e-02 2.040100e-02 2.047400e-02 2.059400e-02 2.076500e-02 2.098800e-02 2.126600e-02 2.160000e-02 2.199100e-02 2.244100e-02 2.295000e-02 2.351800e-02 2.414300e-02 2.482300e-02 2.555200e-02 2.632300e-02 2.712700e-02 2.794900e-02 2.877100e-02 2.956700e-02 3.030500e-02 3.094200e-02 3.142300e-02 3.167300e-02 3.160000e-02 3.107900e-02 2.994200e-02 2.796200e-02 2.480900e-02 1.996800e-02 1.254000e-02 1.645400e-03 7.941900e-02 7.800500e-02 7.661000e-02 7.523100e-02 7.387100e-02 7.252800e-02 7.120200e-02 6.989300e-02 6.860200e-02 6.732700e-02 6.606900e-02 6.482800e-02 6.360300e-02 6.239500e-02 6.120300e-02 6.002700e-02 5.886700e-02 5.772300e-02 5.659500e-02 5.548300e-02 5.438700e-02 5.330500e-02 5.224000e-02 5.119000e-02 5.015500e-02 4.913600e-02 4.813100e-02 4.714300e-02 4.616900e-02 4.521000e-02 4.426700e-02 4.333900e-02 4.242600e-02 4.152900e-02 4.064700e-02 3.978000e-02 3.892900e-02 3.809300e-02 3.727300e-02 3.646900e-02 3.568100e-02 3.490900e-02 3.415300e-02 3.341500e-02 3.269300e-02 3.198800e-02 3.130200e-02 3.063300e-02 2.998300e-02 2.935200e-02 2.874100e-02 2.815000e-02 2.758000e-02 2.703100e-02 2.650400e-02 2.600100e-02 2.552200e-02 2.506900e-02 2.464100e-02 2.424100e-02 2.387000e-02 2.352900e-02 2.321900e-02 2.294200e-02 2.270000e-02 2.249500e-02 2.232800e-02 2.220100e-02 2.211600e-02 2.207600e-02 2.208200e-02 2.213600e-02 2.224000e-02 2.239600e-02 2.260600e-02 2.287100e-02 2.319200e-02 2.357000e-02 2.400500e-02 2.449600e-02 2.504000e-02 2.563300e-02 2.627100e-02 2.694500e-02 2.764300e-02 2.835200e-02 2.905100e-02 2.971500e-02 3.030900e-02 3.079000e-02 3.110300e-02 3.117500e-02 3.091500e-02 3.020100e-02 2.887600e-02 2.672500e-02 2.344800e-02 1.858900e-02 1.140700e-02 1.488300e-03 9.162400e-02 8.992900e-02 8.825600e-02 8.660600e-02 8.497800e-02 8.337300e-02 8.179000e-02 8.022800e-02 7.868800e-02 7.716900e-02 7.567200e-02 7.419600e-02 7.274100e-02 7.130600e-02 6.989200e-02 6.849800e-02 6.712400e-02 6.577000e-02 6.443700e-02 6.312300e-02 6.182800e-02 6.055300e-02 5.929700e-02 5.806000e-02 5.684200e-02 5.564400e-02 5.446400e-02 5.330300e-02 5.216100e-02 5.103700e-02 4.993200e-02 4.884500e-02 4.777800e-02 4.672800e-02 4.569700e-02 4.468500e-02 4.369100e-02 4.271600e-02 4.176000e-02 4.082200e-02 3.990400e-02 3.900500e-02 3.812500e-02 3.726400e-02 3.642400e-02 3.560400e-02 3.480400e-02 3.402400e-02 3.326600e-02 3.253000e-02 3.181600e-02 3.112400e-02 3.045600e-02 2.981200e-02 2.919200e-02 2.859800e-02 2.803100e-02 2.749100e-02 2.697900e-02 2.649700e-02 2.604600e-02 2.562700e-02 2.524100e-02 2.489000e-02 2.457500e-02 2.429900e-02 2.406200e-02 2.386600e-02 2.371400e-02 2.360700e-02 2.354700e-02 2.353600e-02 2.357500e-02 2.366600e-02 2.381000e-02 2.400900e-02 2.426200e-02 2.457100e-02 2.493500e-02 2.535100e-02 2.581700e-02 2.632900e-02 2.688000e-02 2.746200e-02 2.806200e-02 2.866600e-02 2.925100e-02 2.979200e-02 3.025400e-02 3.059300e-02 3.075500e-02 3.066900e-02 3.024300e-02 2.936300e-02 2.787800e-02 2.558800e-02 2.222000e-02 1.737000e-02 1.043800e-02 1.354500e-03 1.039900e-01 1.020000e-01 1.000400e-01 9.810000e-02 9.619200e-02 9.431000e-02 9.245700e-02 9.063000e-02 8.883000e-02 8.705600e-02 8.530800e-02 8.358600e-02 8.189000e-02 8.022000e-02 7.857400e-02 7.695300e-02 7.535800e-02 7.378600e-02 7.223900e-02 7.071600e-02 6.921600e-02 6.774000e-02 6.628700e-02 6.485800e-02 6.345200e-02 6.206900e-02 6.070800e-02 5.937000e-02 5.805500e-02 5.676200e-02 5.549100e-02 5.424200e-02 5.301600e-02 5.181100e-02 5.062900e-02 4.946800e-02 4.833000e-02 4.721300e-02 4.611800e-02 4.504600e-02 4.399500e-02 4.296700e-02 4.196200e-02 4.097800e-02 4.001800e-02 3.908000e-02 3.816600e-02 3.727600e-02 3.641000e-02 3.556700e-02 3.475000e-02 3.395800e-02 3.319200e-02 3.245300e-02 3.174100e-02 3.105600e-02 3.040100e-02 2.977500e-02 2.918000e-02 2.861700e-02 2.808600e-02 2.759000e-02 2.712900e-02 2.670400e-02 2.631800e-02 2.597100e-02 2.566600e-02 2.540300e-02 2.518500e-02 2.501300e-02 2.488900e-02 2.481300e-02 2.478900e-02 2.481700e-02 2.489800e-02 2.503200e-02 2.522100e-02 2.546300e-02 2.575800e-02 2.610300e-02 2.649600e-02 2.693000e-02 2.739900e-02 2.789400e-02 2.840200e-02 2.890700e-02 2.938600e-02 2.981400e-02 3.015400e-02 3.036500e-02 3.039000e-02 3.016100e-02 2.958900e-02 2.856300e-02 2.694100e-02 2.453800e-02 2.110300e-02 1.628400e-02 9.597800e-03 1.239300e-03 1.164900e-01 1.141900e-01 1.119200e-01 1.096800e-01 1.074800e-01 1.053100e-01 1.031800e-01 1.010700e-01 9.900100e-02 9.696200e-02 9.495400e-02 9.297700e-02 9.103200e-02 8.911600e-02 8.723100e-02 8.537600e-02 8.355100e-02 8.175400e-02 7.998700e-02 7.824800e-02 7.653700e-02 7.485500e-02 7.320100e-02 7.157400e-02 6.997400e-02 6.840200e-02 6.685600e-02 6.533800e-02 6.384600e-02 6.238000e-02 6.094000e-02 5.952600e-02 5.813800e-02 5.677600e-02 5.544000e-02 5.412900e-02 5.284400e-02 5.158400e-02 5.034900e-02 4.914000e-02 4.795700e-02 4.679900e-02 4.566600e-02 4.456000e-02 4.347900e-02 4.242400e-02 4.139600e-02 4.039400e-02 3.941900e-02 3.847100e-02 3.755100e-02 3.665900e-02 3.579600e-02 3.496200e-02 3.415700e-02 3.338300e-02 3.264100e-02 3.193000e-02 3.125300e-02 3.060900e-02 3.000100e-02 2.942800e-02 2.889300e-02 2.839600e-02 2.794000e-02 2.752500e-02 2.715200e-02 2.682400e-02 2.654100e-02 2.630600e-02 2.611900e-02 2.598200e-02 2.589600e-02 2.586200e-02 2.588200e-02 2.595400e-02 2.608000e-02 2.625900e-02 2.648800e-02 2.676600e-02 2.708700e-02 2.744800e-02 2.784000e-02 2.825400e-02 2.867500e-02 2.908700e-02 2.946800e-02 2.979100e-02 3.002000e-02 3.011300e-02 3.001400e-02 2.965600e-02 2.895400e-02 2.780100e-02 2.606300e-02 2.356700e-02 2.008600e-02 1.531300e-02 8.865700e-03 1.139300e-03 1.290900e-01 1.264600e-01 1.238700e-01 1.213300e-01 1.188200e-01 1.163500e-01 1.139200e-01 1.115300e-01 1.091800e-01 1.068700e-01 1.045900e-01 1.023500e-01 1.001500e-01 9.798200e-02 9.585000e-02 9.375400e-02 9.169200e-02 8.966500e-02 8.767100e-02 8.571200e-02 8.378500e-02 8.189200e-02 8.003100e-02 7.820200e-02 7.640500e-02 7.464000e-02 7.290600e-02 7.120400e-02 6.953200e-02 6.789000e-02 6.627900e-02 6.469800e-02 6.314700e-02 6.162500e-02 6.013300e-02 5.867100e-02 5.723700e-02 5.583300e-02 5.445800e-02 5.311100e-02 5.179400e-02 5.050600e-02 4.924600e-02 4.801600e-02 4.681500e-02 4.564300e-02 4.450000e-02 4.338700e-02 4.230400e-02 4.125100e-02 4.022900e-02 3.923700e-02 3.827700e-02 3.734900e-02 3.645400e-02 3.559100e-02 3.476200e-02 3.396800e-02 3.320900e-02 3.248600e-02 3.180100e-02 3.115400e-02 3.054600e-02 2.997900e-02 2.945300e-02 2.897100e-02 2.853300e-02 2.814000e-02 2.779500e-02 2.749800e-02 2.725000e-02 2.705300e-02 2.690800e-02 2.681500e-02 2.677500e-02 2.678800e-02 2.685400e-02 2.697100e-02 2.713800e-02 2.735100e-02 2.760600e-02 2.789700e-02 2.821600e-02 2.855200e-02 2.889200e-02 2.921700e-02 2.950700e-02 2.973200e-02 2.985900e-02 2.984300e-02 2.963200e-02 2.915800e-02 2.834000e-02 2.707600e-02 2.523800e-02 2.266600e-02 1.915500e-02 1.443800e-02 8.222000e-03 1.051900e-03 1.417500e-01 1.387900e-01 1.358700e-01 1.330000e-01 1.301800e-01 1.274100e-01 1.246800e-01 1.219900e-01 1.193500e-01 1.167600e-01 1.142100e-01 1.117000e-01 1.092300e-01 1.068000e-01 1.044200e-01 1.020800e-01 9.977400e-02 9.751100e-02 9.528700e-02 9.310300e-02 9.095600e-02 8.884800e-02 8.677700e-02 8.474300e-02 8.274600e-02 8.078500e-02 7.886000e-02 7.697100e-02 7.511700e-02 7.329800e-02 7.151400e-02 6.976400e-02 6.804800e-02 6.636600e-02 6.471700e-02 6.310200e-02 6.151900e-02 5.997000e-02 5.845300e-02 5.696900e-02 5.551800e-02 5.409900e-02 5.271300e-02 5.135900e-02 5.003700e-02 4.874800e-02 4.749200e-02 4.626800e-02 4.507800e-02 4.392100e-02 4.279700e-02 4.170700e-02 4.065100e-02 3.963000e-02 3.864400e-02 3.769400e-02 3.678000e-02 3.590300e-02 3.506400e-02 3.426300e-02 3.350200e-02 3.278200e-02 3.210300e-02 3.146700e-02 3.087400e-02 3.032600e-02 2.982400e-02 2.936900e-02 2.896200e-02 2.860500e-02 2.829800e-02 2.804300e-02 2.784000e-02 2.769000e-02 2.759300e-02 2.754900e-02 2.755700e-02 2.761500e-02 2.772100e-02 2.787200e-02 2.806400e-02 2.828800e-02 2.853800e-02 2.880100e-02 2.906400e-02 2.930800e-02 2.951200e-02 2.964700e-02 2.967800e-02 2.956300e-02 2.924800e-02 2.866900e-02 2.774600e-02 2.638200e-02 2.445800e-02 2.182400e-02 1.829600e-02 1.364200e-02 7.648300e-03 9.743800e-04 1.544600e-01 1.511500e-01 1.479000e-01 1.447000e-01 1.415600e-01 1.384600e-01 1.354300e-01 1.324400e-01 1.295000e-01 1.266200e-01 1.237800e-01 1.210000e-01 1.182600e-01 1.155700e-01 1.129300e-01 1.103400e-01 1.077900e-01 1.052800e-01 1.028200e-01 1.004100e-01 9.804100e-02 9.571400e-02 9.343000e-02 9.118800e-02 8.898800e-02 8.682900e-02 8.471100e-02 8.263300e-02 8.059600e-02 7.859800e-02 7.663800e-02 7.471800e-02 7.283600e-02 7.099200e-02 6.918600e-02 6.741700e-02 6.568600e-02 6.399100e-02 6.233300e-02 6.071100e-02 5.912600e-02 5.757700e-02 5.606300e-02 5.458600e-02 5.314500e-02 5.173900e-02 5.037000e-02 4.903700e-02 4.774000e-02 4.647900e-02 4.525400e-02 4.406700e-02 4.291600e-02 4.180300e-02 4.072800e-02 3.969200e-02 3.869400e-02 3.773600e-02 3.681800e-02 3.594200e-02 3.510700e-02 3.431500e-02 3.356600e-02 3.286200e-02 3.220300e-02 3.159100e-02 3.102700e-02 3.051100e-02 3.004500e-02 2.963000e-02 2.926600e-02 2.895500e-02 2.869600e-02 2.849100e-02 2.833900e-02 2.823900e-02 2.819100e-02 2.819300e-02 2.824200e-02 2.833400e-02 2.846500e-02 2.862600e-02 2.881000e-02 2.900400e-02 2.919500e-02 2.936400e-02 2.948700e-02 2.953800e-02 2.948000e-02 2.927300e-02 2.886400e-02 2.818900e-02 2.717300e-02 2.572200e-02 2.372400e-02 2.104000e-02 1.750500e-02 1.292000e-02 7.138600e-03 9.057800e-04 1.672000e-01 1.635400e-01 1.599400e-01 1.564000e-01 1.529200e-01 1.495100e-01 1.461500e-01 1.428600e-01 1.396200e-01 1.364400e-01 1.333100e-01 1.302500e-01 1.272300e-01 1.242800e-01 1.213700e-01 1.185200e-01 1.157200e-01 1.129700e-01 1.102800e-01 1.076300e-01 1.050300e-01 1.024900e-01 9.998600e-02 9.753400e-02 9.512900e-02 9.277000e-02 9.045700e-02 8.818900e-02 8.596600e-02 8.378800e-02 8.165300e-02 7.956200e-02 7.751300e-02 7.550700e-02 7.354300e-02 7.162000e-02 6.973900e-02 6.789900e-02 6.610000e-02 6.434000e-02 6.262200e-02 6.094200e-02 5.930300e-02 5.770300e-02 5.614300e-02 5.462200e-02 5.314000e-02 5.169800e-02 5.029500e-02 4.893100e-02 4.760800e-02 4.632400e-02 4.508000e-02 4.387700e-02 4.271400e-02 4.159200e-02 4.051200e-02 3.947500e-02 3.848000e-02 3.752800e-02 3.662100e-02 3.575900e-02 3.494200e-02 3.417200e-02 3.344900e-02 3.277500e-02 3.215000e-02 3.157500e-02 3.105200e-02 3.058000e-02 3.016100e-02 2.979500e-02 2.948300e-02 2.922400e-02 2.901900e-02 2.886700e-02 2.876500e-02 2.871300e-02 2.870700e-02 2.874300e-02 2.881600e-02 2.891800e-02 2.903900e-02 2.916900e-02 2.929100e-02 2.938800e-02 2.943700e-02 2.940900e-02 2.927000e-02 2.897800e-02 2.848200e-02 2.772100e-02 2.662100e-02 2.509300e-02 2.303100e-02 2.030900e-02 1.677400e-02 1.226200e-02 6.683400e-03 8.447700e-04 1.799500e-01 1.759300e-01 1.719700e-01 1.680900e-01 1.642700e-01 1.605200e-01 1.568500e-01 1.532300e-01 1.496900e-01 1.462100e-01 1.427900e-01 1.394400e-01 1.361400e-01 1.329100e-01 1.297400e-01 1.266300e-01 1.235800e-01 1.205800e-01 1.176500e-01 1.147600e-01 1.119400e-01 1.091700e-01 1.064500e-01 1.037800e-01 1.011700e-01 9.861100e-02 9.610100e-02 9.364300e-02 9.123400e-02 8.887400e-02 8.656300e-02 8.430000e-02 8.208400e-02 7.991600e-02 7.779400e-02 7.571800e-02 7.368700e-02 7.170200e-02 6.976100e-02 6.786500e-02 6.601300e-02 6.420400e-02 6.243900e-02 6.071800e-02 5.903900e-02 5.740300e-02 5.581100e-02 5.426000e-02 5.275300e-02 5.128800e-02 4.986600e-02 4.848700e-02 4.715100e-02 4.585900e-02 4.461000e-02 4.340500e-02 4.224400e-02 4.112800e-02 4.005800e-02 3.903300e-02 3.805500e-02 3.712400e-02 3.624000e-02 3.540600e-02 3.462100e-02 3.388600e-02 3.320200e-02 3.257000e-02 3.199100e-02 3.146400e-02 3.099200e-02 3.057400e-02 3.021000e-02 2.990000e-02 2.964400e-02 2.944000e-02 2.928800e-02 2.918400e-02 2.912500e-02 2.910800e-02 2.912500e-02 2.917000e-02 2.923200e-02 2.930000e-02 2.935800e-02 2.938800e-02 2.936700e-02 2.926500e-02 2.905000e-02 2.868000e-02 2.810400e-02 2.726400e-02 2.608900e-02 2.449300e-02 2.237600e-02 1.962200e-02 1.609700e-02 1.166000e-02 6.273400e-03 7.900400e-04 1.927000e-01 1.883000e-01 1.839900e-01 1.797500e-01 1.755900e-01 1.715000e-01 1.675000e-01 1.635600e-01 1.597100e-01 1.559200e-01 1.522000e-01 1.485600e-01 1.449800e-01 1.414700e-01 1.380300e-01 1.346600e-01 1.313500e-01 1.281000e-01 1.249200e-01 1.218000e-01 1.187500e-01 1.157500e-01 1.128100e-01 1.099300e-01 1.071100e-01 1.043500e-01 1.016400e-01 9.899200e-02 9.639600e-02 9.385500e-02 9.136700e-02 8.893200e-02 8.654900e-02 8.421800e-02 8.193800e-02 7.970900e-02 7.752900e-02 7.539900e-02 7.331800e-02 7.128500e-02 6.930100e-02 6.736400e-02 6.547400e-02 6.363200e-02 6.183600e-02 6.008700e-02 5.838400e-02 5.672700e-02 5.511600e-02 5.355200e-02 5.203300e-02 5.056000e-02 4.913400e-02 4.775400e-02 4.642000e-02 4.513300e-02 4.389300e-02 4.270000e-02 4.155500e-02 4.045900e-02 3.941200e-02 3.841400e-02 3.746600e-02 3.656800e-02 3.572200e-02 3.492900e-02 3.418800e-02 3.350000e-02 3.286600e-02 3.228700e-02 3.176300e-02 3.129400e-02 3.088000e-02 3.052100e-02 3.021600e-02 2.996300e-02 2.976100e-02 2.960800e-02 2.949900e-02 2.943100e-02 2.939500e-02 2.938600e-02 2.939200e-02 2.940200e-02 2.940000e-02 2.936600e-02 2.927900e-02 2.910900e-02 2.882300e-02 2.838000e-02 2.773200e-02 2.682000e-02 2.557600e-02 2.392000e-02 2.175700e-02 1.897900e-02 1.546700e-02 1.110700e-02 5.903700e-03 7.408900e-04 2.054300e-01 2.006600e-01 1.959700e-01 1.913700e-01 1.868600e-01 1.824300e-01 1.780900e-01 1.738300e-01 1.696500e-01 1.655500e-01 1.615300e-01 1.575900e-01 1.537300e-01 1.499400e-01 1.462300e-01 1.425900e-01 1.390200e-01 1.355200e-01 1.320900e-01 1.287300e-01 1.254400e-01 1.222200e-01 1.190600e-01 1.159700e-01 1.129400e-01 1.099700e-01 1.070700e-01 1.042200e-01 1.014400e-01 9.871700e-02 9.605200e-02 9.344500e-02 9.089600e-02 8.840300e-02 8.596500e-02 8.358300e-02 8.125500e-02 7.898100e-02 7.676000e-02 7.459200e-02 7.247600e-02 7.041200e-02 6.839900e-02 6.643700e-02 6.452500e-02 6.266400e-02 6.085200e-02 5.909000e-02 5.737800e-02 5.571500e-02 5.410100e-02 5.253600e-02 5.102100e-02 4.955500e-02 4.813800e-02 4.677100e-02 4.545300e-02 4.418600e-02 4.296900e-02 4.180300e-02 4.068800e-02 3.962500e-02 3.861400e-02 3.765600e-02 3.675100e-02 3.590000e-02 3.510400e-02 3.436300e-02 3.367700e-02 3.304700e-02 3.247300e-02 3.195500e-02 3.149300e-02 3.108700e-02 3.073400e-02 3.043500e-02 3.018700e-02 2.998600e-02 2.983000e-02 2.971200e-02 2.962700e-02 2.956700e-02 2.952100e-02 2.947600e-02 2.941600e-02 2.932400e-02 2.917500e-02 2.894200e-02 2.859100e-02 2.808100e-02 2.736600e-02 2.639000e-02 2.508500e-02 2.337600e-02 2.117400e-02 1.838000e-02 1.488800e-02 1.060400e-02 5.573300e-03 6.971400e-04 2.181400e-01 2.129800e-01 2.079200e-01 2.029600e-01 1.980900e-01 1.933200e-01 1.886400e-01 1.840500e-01 1.795500e-01 1.751300e-01 1.708100e-01 1.665700e-01 1.624200e-01 1.583500e-01 1.543600e-01 1.504500e-01 1.466200e-01 1.428700e-01 1.391900e-01 1.355900e-01 1.320700e-01 1.286200e-01 1.252400e-01 1.219300e-01 1.186900e-01 1.155200e-01 1.124100e-01 1.093800e-01 1.064100e-01 1.035000e-01 1.006600e-01 9.788300e-02 9.516700e-02 9.251200e-02 8.991800e-02 8.738300e-02 8.490800e-02 8.249000e-02 8.013100e-02 7.782700e-02 7.558100e-02 7.339000e-02 7.125500e-02 6.917400e-02 6.714700e-02 6.517500e-02 6.325600e-02 6.138900e-02 5.957600e-02 5.781600e-02 5.610800e-02 5.445300e-02 5.284900e-02 5.129800e-02 4.979900e-02 4.835300e-02 4.696000e-02 4.561900e-02 4.433000e-02 4.309600e-02 4.191500e-02 4.078800e-02 3.971500e-02 3.869700e-02 3.773500e-02 3.682900e-02 3.597800e-02 3.518400e-02 3.444800e-02 3.376800e-02 3.314600e-02 3.258000e-02 3.207200e-02 3.161900e-02 3.122200e-02 3.087700e-02 3.058300e-02 3.033700e-02 3.013400e-02 2.997000e-02 2.983700e-02 2.972700e-02 2.963000e-02 2.953200e-02 2.941900e-02 2.927000e-02 2.906200e-02 2.876900e-02 2.835500e-02 2.778300e-02 2.700600e-02 2.596800e-02 2.460800e-02 2.285100e-02 2.061400e-02 1.780700e-02 1.433700e-02 1.013000e-02 5.265400e-03 6.564800e-04 2.308400e-01 2.252900e-01 2.198500e-01 2.145200e-01 2.092900e-01 2.041700e-01 1.991500e-01 1.942300e-01 1.894000e-01 1.846800e-01 1.800400e-01 1.755100e-01 1.710600e-01 1.667100e-01 1.624400e-01 1.582600e-01 1.541700e-01 1.501600e-01 1.462400e-01 1.424000e-01 1.386400e-01 1.349600e-01 1.313600e-01 1.278300e-01 1.243800e-01 1.210100e-01 1.177100e-01 1.144800e-01 1.113200e-01 1.082300e-01 1.052200e-01 1.022700e-01 9.938400e-02 9.656800e-02 9.381700e-02 9.113000e-02 8.850700e-02 8.594600e-02 8.344800e-02 8.101100e-02 7.863400e-02 7.631800e-02 7.406000e-02 7.186100e-02 6.972100e-02 6.763800e-02 6.561200e-02 6.364200e-02 6.172900e-02 5.987200e-02 5.807100e-02 5.632600e-02 5.463500e-02 5.300000e-02 5.142100e-02 4.989600e-02 4.842700e-02 4.701300e-02 4.565500e-02 4.435300e-02 4.310700e-02 4.191700e-02 4.078300e-02 3.970700e-02 3.868800e-02 3.772600e-02 3.682200e-02 3.597700e-02 3.519100e-02 3.446200e-02 3.379200e-02 3.318100e-02 3.262600e-02 3.212800e-02 3.168600e-02 3.129700e-02 3.095900e-02 3.066800e-02 3.042000e-02 3.021000e-02 3.003100e-02 2.987300e-02 2.972700e-02 2.957800e-02 2.941100e-02 2.920800e-02 2.894400e-02 2.859200e-02 2.811900e-02 2.748600e-02 2.664900e-02 2.555400e-02 2.414000e-02 2.233800e-02 2.007000e-02 1.725400e-02 1.380700e-02 9.677000e-03 4.973400e-03 6.179900e-04 2.435300e-01 2.376000e-01 2.317800e-01 2.260800e-01 2.205000e-01 2.150300e-01 2.096600e-01 2.044100e-01 1.992600e-01 1.942200e-01 1.892800e-01 1.844400e-01 1.797100e-01 1.750700e-01 1.705200e-01 1.660800e-01 1.617200e-01 1.574600e-01 1.532900e-01 1.492100e-01 1.452100e-01 1.413000e-01 1.374800e-01 1.337400e-01 1.300800e-01 1.265000e-01 1.230000e-01 1.195800e-01 1.162300e-01 1.129700e-01 1.097700e-01 1.066500e-01 1.036000e-01 1.006200e-01 9.771500e-02 9.487600e-02 9.210600e-02 8.940200e-02 8.676600e-02 8.419400e-02 8.168800e-02 7.924600e-02 7.686600e-02 7.454900e-02 7.229400e-02 7.010100e-02 6.796800e-02 6.589500e-02 6.388200e-02 6.192800e-02 6.003400e-02 5.819900e-02 5.642100e-02 5.470200e-02 5.304200e-02 5.143900e-02 4.989500e-02 4.840800e-02 4.698000e-02 4.561000e-02 4.429800e-02 4.304500e-02 4.185100e-02 4.071600e-02 3.964000e-02 3.862300e-02 3.766700e-02 3.677000e-02 3.593400e-02 3.515600e-02 3.443900e-02 3.378100e-02 3.318000e-02 3.263800e-02 3.215100e-02 3.171700e-02 3.133500e-02 3.099900e-02 3.070700e-02 3.045100e-02 3.022400e-02 3.001900e-02 2.982300e-02 2.962300e-02 2.940400e-02 2.914600e-02 2.882500e-02 2.841500e-02 2.788200e-02 2.718900e-02 2.629200e-02 2.514000e-02 2.367300e-02 2.182600e-02 1.952600e-02 1.670000e-02 1.327700e-02 9.223900e-03 4.681400e-03 5.795100e-04 2.562300e-01 2.499100e-01 2.437100e-01 2.376400e-01 2.317000e-01 2.258800e-01 2.201700e-01 2.145900e-01 2.091200e-01 2.037600e-01 1.985100e-01 1.933800e-01 1.883500e-01 1.834200e-01 1.786100e-01 1.738900e-01 1.692700e-01 1.647600e-01 1.603400e-01 1.560100e-01 1.517800e-01 1.476500e-01 1.436000e-01 1.396400e-01 1.357700e-01 1.319900e-01 1.282900e-01 1.246800e-01 1.211500e-01 1.177000e-01 1.143200e-01 1.110300e-01 1.078200e-01 1.046800e-01 1.016100e-01 9.862200e-02 9.570500e-02 9.285800e-02 9.008300e-02 8.737800e-02 8.474100e-02 8.217300e-02 7.967200e-02 7.723600e-02 7.486700e-02 7.256400e-02 7.032400e-02 6.814800e-02 6.603500e-02 6.398400e-02 6.199800e-02 6.007200e-02 5.820700e-02 5.640500e-02 5.466300e-02 5.298200e-02 5.136200e-02 4.980300e-02 4.830400e-02 4.686700e-02 4.549000e-02 4.417400e-02 4.291900e-02 4.172500e-02 4.059200e-02 3.952100e-02 3.851100e-02 3.756300e-02 3.667600e-02 3.585000e-02 3.508600e-02 3.438100e-02 3.373500e-02 3.314700e-02 3.261500e-02 3.213800e-02 3.171000e-02 3.133100e-02 3.099300e-02 3.069100e-02 3.041800e-02 3.016500e-02 2.992000e-02 2.966900e-02 2.939700e-02 2.908400e-02 2.870600e-02 2.823700e-02 2.764500e-02 2.689300e-02 2.593600e-02 2.472500e-02 2.320500e-02 2.131300e-02 1.898300e-02 1.614600e-02 1.274700e-02 8.770700e-03 4.389400e-03 5.410200e-04 2.689200e-01 2.622100e-01 2.556400e-01 2.492000e-01 2.429000e-01 2.367400e-01 2.306900e-01 2.247700e-01 2.189800e-01 2.133000e-01 2.077400e-01 2.023100e-01 1.969900e-01 1.917800e-01 1.866900e-01 1.817000e-01 1.768300e-01 1.720500e-01 1.673900e-01 1.628200e-01 1.583600e-01 1.539900e-01 1.497200e-01 1.455500e-01 1.414700e-01 1.374800e-01 1.335900e-01 1.297800e-01 1.260600e-01 1.224300e-01 1.188800e-01 1.154200e-01 1.120300e-01 1.087300e-01 1.055100e-01 1.023700e-01 9.930400e-02 9.631500e-02 9.340100e-02 9.056100e-02 8.779500e-02 8.510100e-02 8.247700e-02 7.992400e-02 7.744100e-02 7.502700e-02 7.268000e-02 7.040100e-02 6.818800e-02 6.604100e-02 6.396100e-02 6.194500e-02 5.999300e-02 5.810700e-02 5.628400e-02 5.452500e-02 5.283000e-02 5.119800e-02 4.962900e-02 4.812400e-02 4.668200e-02 4.530300e-02 4.398700e-02 4.273500e-02 4.154500e-02 4.041800e-02 3.935500e-02 3.835600e-02 3.741900e-02 3.654500e-02 3.573200e-02 3.498100e-02 3.428900e-02 3.365600e-02 3.308000e-02 3.255800e-02 3.208600e-02 3.166200e-02 3.127900e-02 3.093200e-02 3.061200e-02 3.031000e-02 3.001600e-02 2.971400e-02 2.938900e-02 2.902100e-02 2.858700e-02 2.806000e-02 2.740900e-02 2.659600e-02 2.557900e-02 2.431100e-02 2.273700e-02 2.080100e-02 1.843900e-02 1.559200e-02 1.221700e-02 8.317500e-03 4.097400e-03 5.025300e-04 2.816200e-01 2.745200e-01 2.675800e-01 2.607700e-01 2.541100e-01 2.475900e-01 2.412000e-01 2.349500e-01 2.288300e-01 2.228400e-01 2.169800e-01 2.112500e-01 2.056300e-01 2.001400e-01 1.947700e-01 1.895200e-01 1.843800e-01 1.793500e-01 1.744300e-01 1.696300e-01 1.649300e-01 1.603300e-01 1.558400e-01 1.514500e-01 1.471600e-01 1.429700e-01 1.388800e-01 1.348800e-01 1.309700e-01 1.271600e-01 1.234300e-01 1.198000e-01 1.162500e-01 1.127900e-01 1.094100e-01 1.061100e-01 1.029000e-01 9.977100e-02 9.671900e-02 9.374500e-02 9.084800e-02 8.802800e-02 8.528300e-02 8.261200e-02 8.001400e-02 7.749000e-02 7.503600e-02 7.265400e-02 7.034100e-02 6.809700e-02 6.592400e-02 6.381800e-02 6.177900e-02 5.980900e-02 5.790500e-02 5.606800e-02 5.429700e-02 5.259300e-02 5.095300e-02 4.938100e-02 4.787400e-02 4.643200e-02 4.505500e-02 4.374400e-02 4.249700e-02 4.131600e-02 4.020000e-02 3.914900e-02 3.816200e-02 3.723900e-02 3.637900e-02 3.558100e-02 3.484300e-02 3.416500e-02 3.354400e-02 3.297800e-02 3.246200e-02 3.199300e-02 3.156500e-02 3.117200e-02 3.080500e-02 3.045600e-02 3.011300e-02 2.976000e-02 2.938200e-02 2.895900e-02 2.846900e-02 2.788300e-02 2.717200e-02 2.629900e-02 2.522200e-02 2.389600e-02 2.227000e-02 2.028800e-02 1.789500e-02 1.503900e-02 1.168600e-02 7.864400e-03 3.805300e-03 4.640400e-04 2.943100e-01 2.868300e-01 2.795100e-01 2.723300e-01 2.653100e-01 2.584500e-01 2.517100e-01 2.451300e-01 2.386900e-01 2.323900e-01 2.262100e-01 2.201800e-01 2.142800e-01 2.085000e-01 2.028500e-01 1.973300e-01 1.919300e-01 1.866500e-01 1.814800e-01 1.764300e-01 1.715000e-01 1.666800e-01 1.619600e-01 1.573600e-01 1.528600e-01 1.484600e-01 1.441700e-01 1.399800e-01 1.358800e-01 1.318900e-01 1.279900e-01 1.241800e-01 1.204700e-01 1.168400e-01 1.133100e-01 1.098600e-01 1.065000e-01 1.032300e-01 1.000400e-01 9.692800e-02 9.390100e-02 9.095600e-02 8.808900e-02 8.529900e-02 8.258800e-02 7.995300e-02 7.739200e-02 7.490600e-02 7.249400e-02 7.015300e-02 6.788700e-02 6.569200e-02 6.356500e-02 6.151100e-02 5.952600e-02 5.761100e-02 5.576500e-02 5.398700e-02 5.227800e-02 5.063800e-02 4.906600e-02 4.756000e-02 4.612300e-02 4.475300e-02 4.345000e-02 4.221300e-02 4.104400e-02 3.994200e-02 3.890500e-02 3.793300e-02 3.702500e-02 3.618100e-02 3.539800e-02 3.467400e-02 3.400900e-02 3.339800e-02 3.283800e-02 3.232400e-02 3.185100e-02 3.141300e-02 3.099900e-02 3.060200e-02 3.020900e-02 2.980500e-02 2.937500e-02 2.889700e-02 2.835000e-02 2.770600e-02 2.693500e-02 2.600200e-02 2.486500e-02 2.348200e-02 2.180200e-02 1.977600e-02 1.735100e-02 1.448500e-02 1.115600e-02 7.411200e-03 3.513300e-03 4.255500e-04 3.070100e-01 2.991400e-01 2.914400e-01 2.838900e-01 2.765100e-01 2.693000e-01 2.622300e-01 2.553100e-01 2.485500e-01 2.419300e-01 2.354400e-01 2.291100e-01 2.229200e-01 2.168600e-01 2.109400e-01 2.051400e-01 1.994800e-01 1.939400e-01 1.885300e-01 1.832400e-01 1.780700e-01 1.730200e-01 1.680900e-01 1.632600e-01 1.585500e-01 1.539600e-01 1.494600e-01 1.450800e-01 1.408000e-01 1.366200e-01 1.325400e-01 1.285600e-01 1.246800e-01 1.209000e-01 1.172100e-01 1.136100e-01 1.101000e-01 1.066800e-01 1.033500e-01 1.001100e-01 9.695500e-02 9.388400e-02 9.089400e-02 8.798700e-02 8.516100e-02 8.241600e-02 7.974800e-02 7.715900e-02 7.464700e-02 7.220900e-02 6.985100e-02 6.756500e-02 6.535100e-02 6.321300e-02 6.114700e-02 5.915400e-02 5.723200e-02 5.538200e-02 5.360200e-02 5.189500e-02 5.025700e-02 4.868900e-02 4.719100e-02 4.576300e-02 4.440200e-02 4.311100e-02 4.188800e-02 4.073500e-02 3.964800e-02 3.862700e-02 3.767200e-02 3.678100e-02 3.595200e-02 3.518300e-02 3.447400e-02 3.381900e-02 3.321300e-02 3.265600e-02 3.213800e-02 3.165300e-02 3.119300e-02 3.074800e-02 3.030600e-02 2.985000e-02 2.936700e-02 2.883500e-02 2.823100e-02 2.752900e-02 2.669900e-02 2.570500e-02 2.450800e-02 2.306800e-02 2.133500e-02 1.926300e-02 1.680700e-02 1.393100e-02 1.062600e-02 6.958000e-03 3.221300e-03 3.870700e-04 3.197000e-01 3.114500e-01 3.033700e-01 2.954500e-01 2.877200e-01 2.801600e-01 2.727400e-01 2.654900e-01 2.584000e-01 2.514700e-01 2.446800e-01 2.380500e-01 2.315600e-01 2.252200e-01 2.190200e-01 2.129600e-01 2.070300e-01 2.012400e-01 1.955800e-01 1.900500e-01 1.846400e-01 1.793600e-01 1.742100e-01 1.691700e-01 1.642500e-01 1.594500e-01 1.547600e-01 1.501800e-01 1.457100e-01 1.413500e-01 1.371000e-01 1.329500e-01 1.289000e-01 1.249500e-01 1.211100e-01 1.173500e-01 1.137000e-01 1.101400e-01 1.066700e-01 1.032900e-01 1.000100e-01 9.681100e-02 9.370000e-02 9.067400e-02 8.773400e-02 8.487900e-02 8.210500e-02 7.941200e-02 7.679900e-02 7.426600e-02 7.181400e-02 6.943800e-02 6.713700e-02 6.491500e-02 6.276800e-02 6.069700e-02 5.870000e-02 5.677700e-02 5.492700e-02 5.315100e-02 5.144900e-02 4.981800e-02 4.825900e-02 4.677200e-02 4.535500e-02 4.400800e-02 4.273300e-02 4.152800e-02 4.039100e-02 3.932100e-02 3.831900e-02 3.738200e-02 3.650600e-02 3.569200e-02 3.493800e-02 3.423900e-02 3.358900e-02 3.298700e-02 3.242400e-02 3.189400e-02 3.138600e-02 3.089300e-02 3.040200e-02 2.989600e-02 2.936000e-02 2.877300e-02 2.811200e-02 2.735200e-02 2.646200e-02 2.540800e-02 2.415200e-02 2.265300e-02 2.086700e-02 1.875100e-02 1.626300e-02 1.337700e-02 1.009600e-02 6.504800e-03 2.929300e-03 3.485800e-04 ������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/diffraction/2007/�����������������������������������������������������������0000755�0001750�0001750�00000000000�11756464205�020256� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/diffraction/2007/h12007jetsdpdf_charm.data����������������������������������0000755�0001750�0001750�00000347144�11754474775�024663� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������-6.907755E+00-6.837980E+00-6.768205E+00-6.698429E+00-6.628654E+00-6.558879E+00 -6.489103E+00-6.419328E+00-6.349553E+00-6.279778E+00-6.210002E+00-6.140227E+00 -6.070452E+00-6.000676E+00-5.930901E+00-5.861126E+00-5.791350E+00-5.721575E+00 -5.651800E+00-5.582024E+00-5.512249E+00-5.442474E+00-5.372699E+00-5.302923E+00 -5.233148E+00-5.163373E+00-5.093597E+00-5.023822E+00-4.954047E+00-4.884271E+00 -4.814496E+00-4.744721E+00-4.674945E+00-4.605170E+00-4.535395E+00-4.465620E+00 -4.395844E+00-4.326069E+00-4.256294E+00-4.186518E+00-4.116743E+00-4.046968E+00 -3.977192E+00-3.907417E+00-3.837642E+00-3.767867E+00-3.698091E+00-3.628316E+00 -3.558541E+00-3.488765E+00-3.418990E+00-3.349215E+00-3.279439E+00-3.209664E+00 -3.139889E+00-3.070113E+00-3.000338E+00-2.930563E+00-2.860788E+00-2.791012E+00 -2.721237E+00-2.651462E+00-2.581686E+00-2.511911E+00-2.442136E+00-2.372360E+00 -2.302585E+00-2.232810E+00-2.163034E+00-2.093259E+00-2.023484E+00-1.953709E+00 -1.883933E+00-1.814158E+00-1.744383E+00-1.674607E+00-1.604832E+00-1.535057E+00 -1.465281E+00-1.395506E+00-1.325731E+00-1.255956E+00-1.186180E+00-1.116405E+00 -1.046630E+00-9.768543E-01-9.070790E-01-8.373037E-01-7.675284E-01-6.977531E-01 -6.279778E-01-5.582024E-01-4.884271E-01-4.186518E-01-3.488765E-01-2.791012E-01 -2.093259E-01-1.395506E-01-6.977531E-02 0.000000E+00 1.96000E+00 2.00000E+00 2.10000E+00 2.20000E+00 2.30000E+00 2.40000E+00 2.50000E+00 3.00000E+00 3.50000E+00 4.00000E+00 4.50000E+00 5.00000E+00 6.00000E+00 7.00000E+00 8.00000E+00 9.00000E+00 1.00000E+01 1.10000E+01 1.20000E+01 1.30000E+01 1.40000E+01 1.50000E+01 1.60000E+01 1.70000E+01 1.80000E+01 1.90000E+01 2.00000E+01 2.02500E+01 2.10000E+01 2.20000E+01 2.30000E+01 2.40000E+01 2.50000E+01 2.60000E+01 2.70000E+01 2.80000E+01 2.90000E+01 3.00000E+01 3.10000E+01 3.20000E+01 3.30000E+01 3.40000E+01 3.50000E+01 3.60000E+01 3.70000E+01 3.80000E+01 3.90000E+01 4.00000E+01 4.10000E+01 4.20000E+01 4.30000E+01 4.40000E+01 4.50000E+01 4.60000E+01 4.70000E+01 4.80000E+01 4.90000E+01 5.00000E+01 5.50000E+01 6.00000E+01 6.50000E+01 7.00000E+01 7.50000E+01 8.00000E+01 8.50000E+01 9.00000E+01 9.50000E+01 1.00000E+02 1.50000E+02 2.00000E+02 2.50000E+02 3.00000E+02 3.50000E+02 4.00000E+02 4.50000E+02 5.00000E+02 5.50000E+02 6.00000E+02 6.50000E+02 7.00000E+02 7.50000E+02 8.00000E+02 8.50000E+02 9.00000E+02 9.50000E+02 1.00000E+03 1.50000E+03 2.00000E+03 5.062582E-03 5.005623E-03 4.949315E-03 4.893533E-03 4.838280E-03 4.783619E-03 4.729459E-03 4.675563E-03 4.622113E-03 4.569084E-03 4.516439E-03 4.464239E-03 4.412994E-03 4.362850E-03 4.313742E-03 4.264649E-03 4.215443E-03 4.166185E-03 4.116884E-03 4.067468E-03 4.017656E-03 3.967730E-03 3.917819E-03 3.867592E-03 3.817324E-03 3.766709E-03 3.715875E-03 3.664476E-03 3.612878E-03 3.560694E-03 3.507438E-03 3.453261E-03 3.398207E-03 3.341806E-03 3.284160E-03 3.225704E-03 3.165521E-03 3.103743E-03 3.040676E-03 2.975686E-03 2.908873E-03 2.840012E-03 2.768637E-03 2.695201E-03 2.619938E-03 2.541750E-03 2.461780E-03 2.379242E-03 2.293936E-03 2.206042E-03 2.115887E-03 2.022565E-03 1.926535E-03 1.828667E-03 1.728318E-03 1.625842E-03 1.521745E-03 1.415742E-03 1.308600E-03 1.200689E-03 1.092031E-03 9.842690E-04 8.770966E-04 7.717425E-04 6.688289E-04 5.695036E-04 4.748561E-04 3.857490E-04 3.035092E-04 2.293066E-04 1.641917E-04 1.093240E-04 6.549575E-05 3.322056E-05 1.251652E-05 2.372415E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 5.166661E-03 5.108391E-03 5.050847E-03 4.993855E-03 4.937402E-03 4.881562E-03 4.826183E-03 4.771198E-03 4.716615E-03 4.662489E-03 4.608653E-03 4.555325E-03 4.502727E-03 4.451068E-03 4.400805E-03 4.350833E-03 4.300689E-03 4.250529E-03 4.200287E-03 4.149962E-03 4.099318E-03 4.048498E-03 3.997586E-03 3.946489E-03 3.895206E-03 3.843761E-03 3.792016E-03 3.739761E-03 3.687182E-03 3.634184E-03 3.580167E-03 3.525243E-03 3.469345E-03 3.412265E-03 3.353873E-03 3.294518E-03 3.233742E-03 3.171064E-03 3.107230E-03 3.041548E-03 2.974081E-03 2.904426E-03 2.832422E-03 2.758206E-03 2.682030E-03 2.603144E-03 2.522201E-03 2.438896E-03 2.352814E-03 2.263944E-03 2.172878E-03 2.078783E-03 1.981709E-03 1.882591E-03 1.781097E-03 1.677352E-03 1.571861E-03 1.464582E-03 1.355973E-03 1.246229E-03 1.135826E-03 1.026114E-03 9.168595E-04 8.093223E-04 7.040325E-04 6.020820E-04 5.046231E-04 4.126689E-04 3.273060E-04 2.498198E-04 1.814127E-04 1.231180E-04 7.587383E-05 4.032800E-05 1.658144E-05 3.935088E-06 5.129914E-08 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 5.426043E-03 5.364498E-03 5.303775E-03 5.243735E-03 5.184358E-03 5.125452E-03 5.067176E-03 5.009376E-03 4.951920E-03 4.894925E-03 4.838348E-03 4.782141E-03 4.726425E-03 4.671506E-03 4.617499E-03 4.565010E-03 4.512685E-03 4.460207E-03 4.407703E-03 4.355111E-03 4.302372E-03 4.249312E-03 4.196014E-03 4.142689E-03 4.089039E-03 4.035266E-03 3.981249E-03 3.926893E-03 3.871954E-03 3.816716E-03 3.760856E-03 3.703993E-03 3.646105E-03 3.587240E-03 3.527014E-03 3.465384E-03 3.402848E-03 3.338606E-03 3.272508E-03 3.205123E-03 3.135672E-03 3.064333E-03 2.990731E-03 2.914616E-03 2.836230E-03 2.755699E-03 2.672423E-03 2.587023E-03 2.499000E-03 2.408026E-03 2.314349E-03 2.218266E-03 2.118944E-03 2.016719E-03 1.912510E-03 1.805783E-03 1.696971E-03 1.586437E-03 1.473913E-03 1.360255E-03 1.245978E-03 1.131105E-03 1.017112E-03 9.041479E-04 7.931519E-04 6.850067E-04 5.808500E-04 4.818935E-04 3.890177E-04 3.037021E-04 2.271486E-04 1.604367E-04 1.048034E-04 6.098193E-05 2.947700E-05 1.006890E-05 1.417319E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 5.684220E-03 5.619446E-03 5.555483E-03 5.492364E-03 5.429889E-03 5.368154E-03 5.306851E-03 5.246161E-03 5.185972E-03 5.126136E-03 5.066779E-03 5.007767E-03 4.949226E-03 4.891196E-03 4.833973E-03 4.777689E-03 4.722998E-03 4.668362E-03 4.613522E-03 4.558685E-03 4.503717E-03 4.448543E-03 4.393092E-03 4.337326E-03 4.281549E-03 4.225317E-03 4.169062E-03 4.112449E-03 4.055500E-03 3.997755E-03 3.939919E-03 3.881093E-03 3.821366E-03 3.760403E-03 3.698447E-03 3.635016E-03 3.570148E-03 3.504357E-03 3.436528E-03 3.366864E-03 3.295785E-03 3.222626E-03 3.147310E-03 3.069526E-03 2.989148E-03 2.906652E-03 2.821370E-03 2.733684E-03 2.643604E-03 2.550773E-03 2.454761E-03 2.356338E-03 2.255023E-03 2.150377E-03 2.043086E-03 1.933645E-03 1.821641E-03 1.707609E-03 1.591969E-03 1.474619E-03 1.356177E-03 1.236880E-03 1.118244E-03 1.000129E-03 8.837626E-04 7.697754E-04 6.593119E-04 5.535678E-04 4.537062E-04 3.608328E-04 2.763535E-04 2.015925E-04 1.376664E-04 8.560425E-05 4.616562E-05 1.949692E-05 4.931117E-06 1.320752E-07 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 5.940620E-03 5.873257E-03 5.806063E-03 5.739749E-03 5.674237E-03 5.609421E-03 5.545327E-03 5.481755E-03 5.418646E-03 5.356045E-03 5.293935E-03 5.232198E-03 5.170818E-03 5.110003E-03 5.049658E-03 4.990245E-03 4.931767E-03 4.874866E-03 4.817858E-03 4.760733E-03 4.703551E-03 4.646192E-03 4.588580E-03 4.530733E-03 4.472524E-03 4.414193E-03 4.355405E-03 4.296675E-03 4.237352E-03 4.177801E-03 4.117353E-03 4.056658E-03 3.994967E-03 3.932219E-03 3.868223E-03 3.803053E-03 3.736316E-03 3.668236E-03 3.598875E-03 3.527408E-03 3.454230E-03 3.379263E-03 3.302134E-03 3.222646E-03 3.140741E-03 3.056034E-03 2.968972E-03 2.879246E-03 2.786916E-03 2.692068E-03 2.594169E-03 2.493106E-03 2.389650E-03 2.282909E-03 2.172874E-03 2.060555E-03 1.945790E-03 1.828655E-03 1.709571E-03 1.588615E-03 1.466327E-03 1.343417E-03 1.219760E-03 1.097058E-03 9.754734E-04 8.560201E-04 7.395702E-04 6.274020E-04 5.207713E-04 4.206796E-04 3.286946E-04 2.460788E-04 1.740367E-04 1.138996E-04 6.645719E-05 3.226924E-05 1.112719E-05 1.615394E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 6.195748E-03 6.125403E-03 6.055480E-03 5.985973E-03 5.917368E-03 5.849506E-03 5.782428E-03 5.715995E-03 5.650145E-03 5.584725E-03 5.519757E-03 5.455360E-03 5.391300E-03 5.327606E-03 5.264530E-03 5.201960E-03 5.140336E-03 5.079809E-03 5.020701E-03 4.961296E-03 4.901912E-03 4.842381E-03 4.782570E-03 4.722531E-03 4.662206E-03 4.601649E-03 4.540689E-03 4.479421E-03 4.418130E-03 4.356132E-03 4.293776E-03 4.230823E-03 4.167028E-03 4.102452E-03 4.036563E-03 3.969462E-03 3.900954E-03 3.830874E-03 3.759550E-03 3.686466E-03 3.611172E-03 3.534389E-03 3.455522E-03 3.374371E-03 3.290584E-03 3.204073E-03 3.115317E-03 3.023325E-03 2.929030E-03 2.831941E-03 2.732115E-03 2.629011E-03 2.522953E-03 2.414265E-03 2.302067E-03 2.186697E-03 2.069198E-03 1.948969E-03 1.826499E-03 1.702484E-03 1.576642E-03 1.449671E-03 1.321765E-03 1.194627E-03 1.068015E-03 9.433568E-04 8.212960E-04 7.030089E-04 5.898427E-04 4.830227E-04 3.837182E-04 2.934690E-04 2.136736E-04 1.455348E-04 9.014397E-05 4.830627E-05 2.016106E-05 4.956592E-06 9.945640E-08 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 6.449695E-03 6.376235E-03 6.303448E-03 6.231093E-03 6.159327E-03 6.088440E-03 6.018313E-03 5.949025E-03 5.880335E-03 5.812138E-03 5.744482E-03 5.677207E-03 5.610510E-03 5.544131E-03 5.478236E-03 5.412865E-03 5.348206E-03 5.284381E-03 5.221874E-03 5.160451E-03 5.098741E-03 5.037045E-03 4.975112E-03 4.912908E-03 4.850487E-03 4.787640E-03 4.724598E-03 4.661090E-03 4.597363E-03 4.533379E-03 4.468739E-03 4.403586E-03 4.337818E-03 4.271114E-03 4.203452E-03 4.134419E-03 4.064092E-03 3.992172E-03 3.918580E-03 3.843903E-03 3.767014E-03 3.688010E-03 3.607347E-03 3.524312E-03 3.438890E-03 3.350903E-03 3.259860E-03 3.166314E-03 3.069839E-03 2.970524E-03 2.868701E-03 2.763696E-03 2.655263E-03 2.544236E-03 2.429979E-03 2.312167E-03 2.191623E-03 2.068762E-03 1.943386E-03 1.815855E-03 1.686547E-03 1.555759E-03 1.424355E-03 1.292347E-03 1.161275E-03 1.031545E-03 9.041969E-04 7.801265E-04 6.607503E-04 5.473043E-04 4.410537E-04 3.435355E-04 2.561418E-04 1.801547E-04 1.169757E-04 6.743149E-05 3.207330E-05 1.058994E-05 1.321413E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 7.704513E-03 7.613832E-03 7.524721E-03 7.436585E-03 7.349276E-03 7.263497E-03 7.178478E-03 7.094469E-03 7.011360E-03 6.929023E-03 6.847603E-03 6.766744E-03 6.686570E-03 6.607077E-03 6.527880E-03 6.449220E-03 6.371055E-03 6.293359E-03 6.216095E-03 6.139559E-03 6.063535E-03 5.988658E-03 5.915212E-03 5.842338E-03 5.769426E-03 5.696031E-03 5.622305E-03 5.548330E-03 5.473882E-03 5.398927E-03 5.323412E-03 5.247407E-03 5.171048E-03 5.093602E-03 5.016166E-03 4.937189E-03 4.857391E-03 4.776368E-03 4.693712E-03 4.609286E-03 4.523179E-03 4.434957E-03 4.345183E-03 4.252994E-03 4.158120E-03 4.061443E-03 3.961876E-03 3.859309E-03 3.753838E-03 3.645149E-03 3.532854E-03 3.417488E-03 3.298832E-03 3.177194E-03 3.051894E-03 2.922780E-03 2.790956E-03 2.655271E-03 2.515780E-03 2.373823E-03 2.229090E-03 2.081853E-03 1.932827E-03 1.782168E-03 1.630857E-03 1.479012E-03 1.328128E-03 1.178882E-03 1.032503E-03 8.899969E-04 7.529706E-04 6.227752E-04 5.010571E-04 3.893643E-04 2.894466E-04 2.027750E-04 1.308741E-04 7.475444E-05 3.498907E-05 1.116650E-05 1.218987E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 8.927001E-03 8.819209E-03 8.712932E-03 8.608177E-03 8.504620E-03 8.402465E-03 8.302122E-03 8.202652E-03 8.104113E-03 8.006947E-03 7.911440E-03 7.817167E-03 7.723881E-03 7.630918E-03 7.538869E-03 7.447414E-03 7.356507E-03 7.266274E-03 7.176452E-03 7.087053E-03 6.998206E-03 6.909819E-03 6.821893E-03 6.734715E-03 6.648592E-03 6.563281E-03 6.479435E-03 6.395332E-03 6.310627E-03 6.225659E-03 6.140073E-03 6.053814E-03 5.967197E-03 5.879704E-03 5.791372E-03 5.702503E-03 5.612338E-03 5.521997E-03 5.429591E-03 5.336306E-03 5.241345E-03 5.144147E-03 5.045280E-03 4.943997E-03 4.840244E-03 4.734611E-03 4.626027E-03 4.514809E-03 4.400756E-03 4.283108E-03 4.162713E-03 4.038309E-03 3.910510E-03 3.778316E-03 3.642821E-03 3.504067E-03 3.361320E-03 3.214507E-03 3.064486E-03 2.910603E-03 2.752834E-03 2.591888E-03 2.428112E-03 2.261839E-03 2.094090E-03 1.924844E-03 1.754552E-03 1.585130E-03 1.416360E-03 1.250339E-03 1.088012E-03 9.306700E-04 7.802442E-04 6.381493E-04 5.062796E-04 3.865163E-04 2.806912E-04 1.904654E-04 1.173177E-04 6.227047E-05 2.552221E-05 6.002394E-06 6.720875E-08 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 1.012056E-02 9.995401E-03 9.872005E-03 9.750554E-03 9.631060E-03 9.513077E-03 9.396604E-03 9.281529E-03 9.167735E-03 9.055534E-03 8.944743E-03 8.834668E-03 8.726353E-03 8.620273E-03 8.515492E-03 8.411516E-03 8.308431E-03 8.205615E-03 8.103459E-03 8.001986E-03 7.901067E-03 7.800725E-03 7.700739E-03 7.601115E-03 7.502089E-03 7.403457E-03 7.305744E-03 7.208602E-03 7.112458E-03 7.017762E-03 6.922305E-03 6.826431E-03 6.729904E-03 6.632578E-03 6.534603E-03 6.435894E-03 6.336014E-03 6.235229E-03 6.133350E-03 6.030436E-03 5.926081E-03 5.820193E-03 5.712548E-03 5.602564E-03 5.490347E-03 5.375609E-03 5.258075E-03 5.138210E-03 5.015285E-03 4.888816E-03 4.760117E-03 4.627283E-03 4.490428E-03 4.350513E-03 4.206237E-03 4.057096E-03 3.904307E-03 3.748063E-03 3.587387E-03 3.422480E-03 3.254170E-03 3.081765E-03 2.905453E-03 2.726061E-03 2.543859E-03 2.359220E-03 2.173264E-03 1.986314E-03 1.799667E-03 1.613650E-03 1.430021E-03 1.249954E-03 1.075143E-03 9.072158E-04 7.479676E-04 5.993448E-04 4.632961E-04 3.420639E-04 2.373969E-04 1.511001E-04 8.448408E-05 3.805866E-05 1.116788E-05 8.272424E-07 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 1.127825E-02 1.113970E-02 1.100202E-02 1.086426E-02 1.072803E-02 1.059389E-02 1.046151E-02 1.033115E-02 1.020246E-02 1.007534E-02 9.949637E-03 9.825128E-03 9.701910E-03 9.580618E-03 9.460293E-03 9.341659E-03 9.226018E-03 9.111345E-03 8.997678E-03 8.884417E-03 8.771754E-03 8.659585E-03 8.548014E-03 8.436964E-03 8.326273E-03 8.216137E-03 8.106354E-03 7.996948E-03 7.888466E-03 7.779928E-03 7.672367E-03 7.566163E-03 7.460133E-03 7.353510E-03 7.246173E-03 7.137829E-03 7.028526E-03 6.918508E-03 6.807236E-03 6.694593E-03 6.580800E-03 6.465347E-03 6.348671E-03 6.229908E-03 6.109638E-03 5.986392E-03 5.860496E-03 5.731945E-03 5.600168E-03 5.465664E-03 5.327872E-03 5.186250E-03 5.041855E-03 4.893194E-03 4.739980E-03 4.583471E-03 4.422334E-03 4.255584E-03 4.085121E-03 3.910952E-03 3.732138E-03 3.548859E-03 3.362279E-03 3.171514E-03 2.976912E-03 2.779510E-03 2.579173E-03 2.377187E-03 2.174846E-03 1.972042E-03 1.770345E-03 1.570804E-03 1.375108E-03 1.184842E-03 1.001910E-03 8.281641E-04 6.656272E-04 5.166432E-04 3.834404E-04 2.679623E-04 1.722890E-04 9.779957E-05 4.527119E-05 1.408864E-05 1.380489E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 1.240001E-02 1.224645E-02 1.209481E-02 1.194459E-02 1.179537E-02 1.164556E-02 1.149752E-02 1.135151E-02 1.120743E-02 1.106525E-02 1.092500E-02 1.078659E-02 1.064956E-02 1.051397E-02 1.037964E-02 1.024664E-02 1.011554E-02 9.985345E-03 9.858516E-03 9.733699E-03 9.609821E-03 9.486462E-03 9.363936E-03 9.241818E-03 9.119975E-03 8.998601E-03 8.877648E-03 8.757228E-03 8.637303E-03 8.517560E-03 8.398545E-03 8.279196E-03 8.161224E-03 8.043571E-03 7.926569E-03 7.809434E-03 7.691327E-03 7.571773E-03 7.451393E-03 7.330001E-03 7.206887E-03 7.082601E-03 6.956665E-03 6.828636E-03 6.699266E-03 6.567781E-03 6.434296E-03 6.297175E-03 6.157451E-03 6.014582E-03 5.868136E-03 5.718677E-03 5.565397E-03 5.408088E-03 5.247761E-03 5.082489E-03 4.912585E-03 4.739136E-03 4.560092E-03 4.375737E-03 4.187371E-03 3.994992E-03 3.797618E-03 3.596241E-03 3.391506E-03 3.182591E-03 2.970396E-03 2.755276E-03 2.538401E-03 2.320936E-03 2.103584E-03 1.887382E-03 1.673615E-03 1.463921E-03 1.260111E-03 1.064482E-03 8.786847E-04 7.050945E-04 5.460877E-04 4.041209E-04 2.813165E-04 1.798197E-04 1.011750E-04 4.608148E-05 1.384746E-05 1.152783E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 1.455084E-02 1.436513E-02 1.418189E-02 1.400081E-02 1.382264E-02 1.364697E-02 1.347314E-02 1.330136E-02 1.313042E-02 1.295901E-02 1.279003E-02 1.262298E-02 1.245803E-02 1.229511E-02 1.213397E-02 1.197463E-02 1.181714E-02 1.166122E-02 1.150653E-02 1.135322E-02 1.120120E-02 1.105120E-02 1.090303E-02 1.075936E-02 1.061633E-02 1.047453E-02 1.033280E-02 1.019176E-02 1.005104E-02 9.910526E-03 9.770110E-03 9.630083E-03 9.490220E-03 9.350724E-03 9.211586E-03 9.072311E-03 8.933550E-03 8.794356E-03 8.656260E-03 8.517507E-03 8.377544E-03 8.235876E-03 8.092947E-03 7.947847E-03 7.800717E-03 7.652661E-03 7.501645E-03 7.348098E-03 7.192760E-03 7.034209E-03 6.872512E-03 6.707146E-03 6.538511E-03 6.365152E-03 6.187886E-03 6.007442E-03 5.821274E-03 5.632115E-03 5.437276E-03 5.237257E-03 5.033323E-03 4.823479E-03 4.607644E-03 4.387827E-03 4.163558E-03 3.934508E-03 3.701789E-03 3.465361E-03 3.225114E-03 2.982961E-03 2.739048E-03 2.493733E-03 2.250914E-03 2.009030E-03 1.771138E-03 1.538565E-03 1.313634E-03 1.098940E-03 8.962738E-04 7.084571E-04 5.383318E-04 3.883392E-04 2.610430E-04 1.585090E-04 8.212148E-05 3.216385E-05 6.728434E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 1.660399E-02 1.638703E-02 1.617134E-02 1.595853E-02 1.574844E-02 1.554198E-02 1.533882E-02 1.513820E-02 1.493982E-02 1.474488E-02 1.455179E-02 1.436051E-02 1.416890E-02 1.397927E-02 1.379219E-02 1.360719E-02 1.342448E-02 1.324352E-02 1.306444E-02 1.288701E-02 1.271092E-02 1.253664E-02 1.236385E-02 1.219245E-02 1.202250E-02 1.185430E-02 1.168904E-02 1.152723E-02 1.136717E-02 1.120730E-02 1.104817E-02 1.088934E-02 1.073065E-02 1.057175E-02 1.041274E-02 1.025404E-02 1.009507E-02 9.936227E-03 9.777635E-03 9.618671E-03 9.459028E-03 9.300050E-03 9.140103E-03 8.979305E-03 8.816573E-03 8.651683E-03 8.484438E-03 8.314917E-03 8.143856E-03 7.969216E-03 7.791311E-03 7.611222E-03 7.427257E-03 7.240005E-03 7.048298E-03 6.851936E-03 6.651503E-03 6.445783E-03 6.235959E-03 6.021228E-03 5.801821E-03 5.576385E-03 5.346335E-03 5.111192E-03 4.869538E-03 4.622611E-03 4.371939E-03 4.116213E-03 3.856759E-03 3.594683E-03 3.329121E-03 3.061834E-03 2.792891E-03 2.525649E-03 2.260014E-03 1.998292E-03 1.741996E-03 1.493349E-03 1.255198E-03 1.030040E-03 8.203154E-04 6.291540E-04 4.596415E-04 3.143353E-04 1.957163E-04 1.056455E-04 4.461332E-05 1.124481E-05 2.808878E-07 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 1.854950E-02 1.830437E-02 1.806113E-02 1.782078E-02 1.758224E-02 1.734547E-02 1.711186E-02 1.688147E-02 1.665426E-02 1.642990E-02 1.620985E-02 1.599219E-02 1.577676E-02 1.556393E-02 1.535346E-02 1.514426E-02 1.493676E-02 1.473148E-02 1.452879E-02 1.432827E-02 1.412976E-02 1.393298E-02 1.373783E-02 1.354420E-02 1.335177E-02 1.316125E-02 1.297237E-02 1.278498E-02 1.259923E-02 1.241492E-02 1.223441E-02 1.205710E-02 1.188067E-02 1.170436E-02 1.152791E-02 1.135159E-02 1.117527E-02 1.099871E-02 1.082128E-02 1.064378E-02 1.046658E-02 1.028826E-02 1.011009E-02 9.931249E-03 9.751248E-03 9.570380E-03 9.388565E-03 9.204062E-03 9.017160E-03 8.827608E-03 8.635218E-03 8.439900E-03 8.240812E-03 8.038856E-03 7.833342E-03 7.622767E-03 7.408445E-03 7.190173E-03 6.965380E-03 6.735972E-03 6.501600E-03 6.262324E-03 6.017730E-03 5.767284E-03 5.511736E-03 5.251210E-03 4.984281E-03 4.711867E-03 4.435871E-03 4.155011E-03 3.871135E-03 3.585411E-03 3.296746E-03 3.007092E-03 2.718979E-03 2.432236E-03 2.150260E-03 1.874252E-03 1.606470E-03 1.349976E-03 1.107420E-03 8.815707E-04 6.758169E-04 4.933232E-04 3.369698E-04 2.094058E-04 1.126609E-04 4.727450E-05 1.172847E-05 2.474675E-07 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 2.038715E-02 2.011458E-02 1.984506E-02 1.957781E-02 1.931333E-02 1.905106E-02 1.879019E-02 1.853053E-02 1.827564E-02 1.802437E-02 1.777642E-02 1.753172E-02 1.728977E-02 1.705073E-02 1.681525E-02 1.658281E-02 1.635218E-02 1.612424E-02 1.589846E-02 1.567539E-02 1.545489E-02 1.523621E-02 1.501977E-02 1.480518E-02 1.459234E-02 1.438134E-02 1.417208E-02 1.396411E-02 1.375756E-02 1.355236E-02 1.334898E-02 1.314697E-02 1.294728E-02 1.274954E-02 1.255580E-02 1.236320E-02 1.217023E-02 1.197764E-02 1.178428E-02 1.159052E-02 1.139652E-02 1.120202E-02 1.100633E-02 1.081068E-02 1.061343E-02 1.041649E-02 1.021745E-02 1.001729E-02 9.815986E-03 9.612325E-03 9.406009E-03 9.196651E-03 8.983601E-03 8.767535E-03 8.547723E-03 8.324218E-03 8.096779E-03 7.863807E-03 7.627714E-03 7.385734E-03 7.138702E-03 6.884869E-03 6.626681E-03 6.363187E-03 6.094033E-03 5.818991E-03 5.539106E-03 5.254012E-03 4.962804E-03 4.666916E-03 4.366898E-03 4.063196E-03 3.757984E-03 3.451320E-03 3.142748E-03 2.836889E-03 2.532225E-03 2.233232E-03 1.941130E-03 1.658436E-03 1.388163E-03 1.132975E-03 8.964395E-04 6.818239E-04 4.923976E-04 3.313750E-04 2.014867E-04 1.045491E-04 4.102482E-05 8.605003E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 2.215298E-02 2.185343E-02 2.155759E-02 2.126489E-02 2.097526E-02 2.068869E-02 2.040459E-02 2.012254E-02 1.984229E-02 1.956300E-02 1.928741E-02 1.901580E-02 1.874832E-02 1.848468E-02 1.822408E-02 1.796649E-02 1.771189E-02 1.745983E-02 1.721143E-02 1.696550E-02 1.672202E-02 1.648162E-02 1.624431E-02 1.600927E-02 1.577677E-02 1.554562E-02 1.531645E-02 1.508938E-02 1.486369E-02 1.463993E-02 1.441704E-02 1.419586E-02 1.397574E-02 1.375748E-02 1.354119E-02 1.332572E-02 1.311269E-02 1.290363E-02 1.269487E-02 1.248605E-02 1.227643E-02 1.206635E-02 1.185586E-02 1.164425E-02 1.143201E-02 1.121832E-02 1.100354E-02 1.078780E-02 1.057043E-02 1.035144E-02 1.013082E-02 9.907605E-03 9.681690E-03 9.452183E-03 9.218493E-03 8.981691E-03 8.740771E-03 8.495014E-03 8.245678E-03 7.991041E-03 7.730950E-03 7.466826E-03 7.195846E-03 6.918388E-03 6.635881E-03 6.348455E-03 6.054893E-03 5.755467E-03 5.452086E-03 5.142924E-03 4.828558E-03 4.510347E-03 4.188201E-03 3.864124E-03 3.540625E-03 3.215341E-03 2.892884E-03 2.573292E-03 2.259624E-03 1.954298E-03 1.659866E-03 1.379409E-03 1.115741E-03 8.730479E-04 6.544914E-04 4.633981E-04 3.034125E-04 1.769187E-04 8.564169E-05 2.923088E-05 4.063445E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 2.384082E-02 2.351462E-02 2.319116E-02 2.287151E-02 2.255568E-02 2.224429E-02 2.193657E-02 2.163193E-02 2.133027E-02 2.103119E-02 2.073367E-02 2.043633E-02 2.014311E-02 1.985361E-02 1.956791E-02 1.928574E-02 1.900786E-02 1.873367E-02 1.846221E-02 1.819364E-02 1.792778E-02 1.766501E-02 1.740528E-02 1.714772E-02 1.689487E-02 1.664470E-02 1.639680E-02 1.615104E-02 1.590722E-02 1.566524E-02 1.542438E-02 1.518532E-02 1.494737E-02 1.471138E-02 1.447655E-02 1.424288E-02 1.401053E-02 1.377920E-02 1.355037E-02 1.332309E-02 1.309861E-02 1.287465E-02 1.264945E-02 1.242313E-02 1.219681E-02 1.196882E-02 1.173939E-02 1.150905E-02 1.127663E-02 1.104249E-02 1.080725E-02 1.056979E-02 1.033045E-02 1.008717E-02 9.841603E-03 9.592338E-03 9.338151E-03 9.080338E-03 8.817651E-03 8.550925E-03 8.279231E-03 8.001876E-03 7.719426E-03 7.432010E-03 7.137364E-03 6.836662E-03 6.531002E-03 6.219551E-03 5.902433E-03 5.580572E-03 5.254223E-03 4.922172E-03 4.587047E-03 4.248609E-03 3.908054E-03 3.567581E-03 3.228776E-03 2.891795E-03 2.559558E-03 2.234112E-03 1.918622E-03 1.616161E-03 1.329327E-03 1.061733E-03 8.173987E-04 5.998719E-04 4.126453E-04 2.590056E-04 1.415129E-04 6.103663E-05 1.613405E-05 6.019030E-07 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 2.545062E-02 2.509785E-02 2.474823E-02 2.440320E-02 2.406188E-02 2.372440E-02 2.339112E-02 2.306190E-02 2.273700E-02 2.241572E-02 2.209797E-02 2.178318E-02 2.147020E-02 2.115716E-02 2.084796E-02 2.054243E-02 2.024085E-02 1.994320E-02 1.964912E-02 1.935834E-02 1.907192E-02 1.878865E-02 1.850778E-02 1.822941E-02 1.795358E-02 1.768184E-02 1.741258E-02 1.714873E-02 1.688714E-02 1.662766E-02 1.637026E-02 1.611423E-02 1.585957E-02 1.560661E-02 1.535480E-02 1.510490E-02 1.485549E-02 1.460779E-02 1.436065E-02 1.411483E-02 1.387091E-02 1.362729E-02 1.338722E-02 1.314835E-02 1.290735E-02 1.266640E-02 1.242385E-02 1.217966E-02 1.193362E-02 1.168673E-02 1.143731E-02 1.118528E-02 1.093238E-02 1.067642E-02 1.041788E-02 1.015539E-02 9.890522E-03 9.620948E-03 9.346035E-03 9.067304E-03 8.784118E-03 8.495249E-03 8.202044E-03 7.901507E-03 7.597467E-03 7.286764E-03 6.968530E-03 6.645343E-03 6.317172E-03 5.982986E-03 5.644062E-03 5.301759E-03 4.953886E-03 4.602308E-03 4.248677E-03 3.894413E-03 3.539538E-03 3.187922E-03 2.839518E-03 2.497074E-03 2.162984E-03 1.840896E-03 1.533899E-03 1.244648E-03 9.774928E-04 7.364337E-04 5.248172E-04 3.467442E-04 2.049185E-04 1.014126E-04 3.621636E-05 5.820491E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 2.698298E-02 2.660646E-02 2.623359E-02 2.586425E-02 2.549807E-02 2.513434E-02 2.477537E-02 2.442262E-02 2.407369E-02 2.372861E-02 2.338759E-02 2.305161E-02 2.271901E-02 2.238981E-02 2.206182E-02 2.173418E-02 2.141071E-02 2.109160E-02 2.077634E-02 2.046444E-02 2.015622E-02 1.985180E-02 1.955086E-02 1.925320E-02 1.895863E-02 1.866679E-02 1.837734E-02 1.809063E-02 1.780833E-02 1.753039E-02 1.725626E-02 1.698421E-02 1.671352E-02 1.644472E-02 1.617770E-02 1.591207E-02 1.564696E-02 1.538337E-02 1.512082E-02 1.485963E-02 1.459887E-02 1.433903E-02 1.408058E-02 1.382288E-02 1.356743E-02 1.331358E-02 1.305815E-02 1.280198E-02 1.254361E-02 1.228304E-02 1.202112E-02 1.175779E-02 1.149123E-02 1.122235E-02 1.095129E-02 1.067669E-02 1.039956E-02 1.011889E-02 9.833683E-03 9.543071E-03 9.249124E-03 8.949019E-03 8.644377E-03 8.334790E-03 8.018941E-03 7.697531E-03 7.371163E-03 7.037566E-03 6.697657E-03 6.353445E-03 6.003103E-03 5.648343E-03 5.290296E-03 4.927998E-03 4.562663E-03 4.195737E-03 3.827216E-03 3.462305E-03 3.099393E-03 2.742184E-03 2.392382E-03 2.052882E-03 1.727869E-03 1.419970E-03 1.132789E-03 8.705591E-04 6.374413E-04 4.370484E-04 2.729800E-04 1.479170E-04 6.280077E-05 1.598208E-05 4.242669E-07 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 2.846535E-02 2.806386E-02 2.766776E-02 2.727562E-02 2.688743E-02 2.650234E-02 2.612012E-02 2.574175E-02 2.536817E-02 2.499860E-02 2.463547E-02 2.427681E-02 2.392215E-02 2.357188E-02 2.322567E-02 2.288242E-02 2.254051E-02 2.219977E-02 2.186370E-02 2.153173E-02 2.120371E-02 2.087981E-02 2.055947E-02 2.024203E-02 1.992778E-02 1.961683E-02 1.930952E-02 1.900484E-02 1.870305E-02 1.840386E-02 1.810875E-02 1.781758E-02 1.753148E-02 1.724711E-02 1.696480E-02 1.668414E-02 1.640497E-02 1.612656E-02 1.584921E-02 1.557287E-02 1.529748E-02 1.502267E-02 1.474893E-02 1.447600E-02 1.420356E-02 1.393204E-02 1.366219E-02 1.339322E-02 1.312332E-02 1.285151E-02 1.257708E-02 1.230088E-02 1.202305E-02 1.174269E-02 1.145861E-02 1.117271E-02 1.088317E-02 1.059027E-02 1.029405E-02 9.994028E-03 9.688306E-03 9.377959E-03 9.062978E-03 8.742376E-03 8.416612E-03 8.085156E-03 7.747375E-03 7.405219E-03 7.056233E-03 6.700376E-03 6.340508E-03 5.975097E-03 5.605662E-03 5.233048E-03 4.856602E-03 4.477744E-03 4.099131E-03 3.719695E-03 3.344333E-03 2.973288E-03 2.609272E-03 2.254640E-03 1.912973E-03 1.588050E-03 1.282881E-03 1.001742E-03 7.489797E-04 5.282680E-04 3.438340E-04 1.985626E-04 9.447283E-05 3.105650E-05 3.751009E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 2.990409E-02 2.948004E-02 2.906036E-02 2.864394E-02 2.823227E-02 2.782428E-02 2.742129E-02 2.702193E-02 2.662556E-02 2.623362E-02 2.584644E-02 2.546422E-02 2.508694E-02 2.471583E-02 2.434883E-02 2.398524E-02 2.362605E-02 2.326999E-02 2.291546E-02 2.256321E-02 2.221533E-02 2.187171E-02 2.153257E-02 2.119721E-02 2.086515E-02 2.053625E-02 2.021039E-02 1.988746E-02 1.956755E-02 1.925187E-02 1.893827E-02 1.862820E-02 1.832008E-02 1.801737E-02 1.771984E-02 1.742444E-02 1.713116E-02 1.683859E-02 1.654737E-02 1.625718E-02 1.596823E-02 1.567908E-02 1.539089E-02 1.510366E-02 1.481727E-02 1.453065E-02 1.424564E-02 1.396053E-02 1.367563E-02 1.339243E-02 1.310732E-02 1.281947E-02 1.252964E-02 1.223762E-02 1.194323E-02 1.164501E-02 1.134391E-02 1.104027E-02 1.073225E-02 1.042076E-02 1.010517E-02 9.785901E-03 9.458981E-03 9.128984E-03 8.792526E-03 8.450857E-03 8.103998E-03 7.750639E-03 7.392912E-03 7.028552E-03 6.657944E-03 6.283397E-03 5.903266E-03 5.519030E-03 5.132731E-03 4.744075E-03 4.354178E-03 3.963278E-03 3.575657E-03 3.191686E-03 2.814489E-03 2.446109E-03 2.089581E-03 1.748935E-03 1.427495E-03 1.129205E-03 8.583710E-04 6.192736E-04 4.159680E-04 2.520369E-04 1.298659E-04 5.020041E-05 1.009729E-05 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 3.128729E-02 3.084115E-02 3.039901E-02 2.996129E-02 2.952838E-02 2.909905E-02 2.867365E-02 2.825202E-02 2.783427E-02 2.742108E-02 2.701208E-02 2.660826E-02 2.620974E-02 2.581600E-02 2.542729E-02 2.504335E-02 2.466478E-02 2.428961E-02 2.391832E-02 2.355107E-02 2.318494E-02 2.282220E-02 2.246406E-02 2.211056E-02 2.176057E-02 2.141440E-02 2.107190E-02 2.073238E-02 2.039588E-02 2.006254E-02 1.973193E-02 1.940504E-02 1.908120E-02 1.875961E-02 1.844126E-02 1.812793E-02 1.781968E-02 1.751401E-02 1.720896E-02 1.690549E-02 1.660315E-02 1.630128E-02 1.600013E-02 1.569950E-02 1.539942E-02 1.509964E-02 1.480040E-02 1.450162E-02 1.420296E-02 1.390404E-02 1.360552E-02 1.330784E-02 1.300695E-02 1.270401E-02 1.239850E-02 1.208981E-02 1.177778E-02 1.146285E-02 1.114530E-02 1.082218E-02 1.049561E-02 1.016629E-02 9.830788E-03 9.490379E-03 9.144607E-03 8.793432E-03 8.436606E-03 8.074790E-03 7.706368E-03 7.333877E-03 6.954948E-03 6.569791E-03 6.181027E-03 5.787167E-03 5.390234E-03 4.992287E-03 4.591807E-03 4.190646E-03 3.792666E-03 3.396346E-03 3.007333E-03 2.626375E-03 2.256814E-03 1.902030E-03 1.565667E-03 1.251933E-03 9.647832E-04 7.088336E-04 4.882473E-04 3.068723E-04 1.678868E-04 7.250511E-05 1.918376E-05 7.090700E-07 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 3.261554E-02 3.214842E-02 3.168533E-02 3.122699E-02 3.077304E-02 3.032346E-02 2.987838E-02 2.943670E-02 2.899959E-02 2.856616E-02 2.813511E-02 2.770815E-02 2.728893E-02 2.687489E-02 2.646622E-02 2.606211E-02 2.566262E-02 2.526732E-02 2.487789E-02 2.449285E-02 2.411073E-02 2.373258E-02 2.335683E-02 2.298516E-02 2.261759E-02 2.225402E-02 2.189464E-02 2.153880E-02 2.118611E-02 2.083744E-02 2.049149E-02 2.014845E-02 1.980830E-02 1.947053E-02 1.913681E-02 1.880577E-02 1.847825E-02 1.815448E-02 1.783654E-02 1.751988E-02 1.720462E-02 1.689066E-02 1.657673E-02 1.626377E-02 1.595156E-02 1.563911E-02 1.532705E-02 1.501550E-02 1.470343E-02 1.439232E-02 1.407964E-02 1.376763E-02 1.345610E-02 1.314267E-02 1.282700E-02 1.250820E-02 1.218596E-02 1.186060E-02 1.153200E-02 1.120024E-02 1.086359E-02 1.052229E-02 1.017842E-02 9.829178E-03 9.474075E-03 9.113876E-03 8.748019E-03 8.376833E-03 8.000045E-03 7.617403E-03 7.230656E-03 6.837724E-03 6.439280E-03 6.037782E-03 5.631627E-03 5.222547E-03 4.813563E-03 4.403571E-03 3.994734E-03 3.589041E-03 3.188123E-03 2.795950E-03 2.414287E-03 2.046996E-03 1.697135E-03 1.369283E-03 1.067382E-03 7.960556E-04 5.596112E-04 3.623161E-04 2.075131E-04 9.725769E-05 3.094121E-05 3.268621E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 3.389354E-02 3.340485E-02 3.292136E-02 3.244201E-02 3.196779E-02 3.149899E-02 3.103472E-02 3.057406E-02 3.011836E-02 2.966646E-02 2.921801E-02 2.877265E-02 2.833061E-02 2.789434E-02 2.746448E-02 2.704131E-02 2.662299E-02 2.620939E-02 2.580025E-02 2.539581E-02 2.499622E-02 2.460143E-02 2.421016E-02 2.382299E-02 2.343826E-02 2.305787E-02 2.268165E-02 2.230983E-02 2.194127E-02 2.157649E-02 2.121576E-02 2.085768E-02 2.050355E-02 2.015096E-02 1.980168E-02 1.945489E-02 1.911217E-02 1.877281E-02 1.843493E-02 1.810244E-02 1.777493E-02 1.744854E-02 1.712314E-02 1.679786E-02 1.647366E-02 1.615005E-02 1.582596E-02 1.550275E-02 1.517884E-02 1.485467E-02 1.453088E-02 1.420596E-02 1.388087E-02 1.355562E-02 1.322971E-02 1.290140E-02 1.256984E-02 1.223428E-02 1.189614E-02 1.155459E-02 1.120865E-02 1.085842E-02 1.050432E-02 1.014552E-02 9.782762E-03 9.413494E-03 9.039072E-03 8.659220E-03 8.274002E-03 7.883254E-03 7.486755E-03 7.086944E-03 6.681293E-03 6.270503E-03 5.856581E-03 5.438626E-03 5.019760E-03 4.602608E-03 4.183396E-03 3.769162E-03 3.358187E-03 2.955208E-03 2.562705E-03 2.183814E-03 1.822085E-03 1.481024E-03 1.165896E-03 8.806364E-04 6.295956E-04 4.176624E-04 2.481693E-04 1.237880E-04 4.484038E-05 7.500432E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 3.512586E-02 3.461698E-02 3.411252E-02 3.361251E-02 3.311691E-02 3.262793E-02 3.214426E-02 3.166518E-02 3.119130E-02 3.072189E-02 3.025654E-02 2.979456E-02 2.933605E-02 2.887991E-02 2.842959E-02 2.798532E-02 2.754620E-02 2.711394E-02 2.668711E-02 2.626525E-02 2.584803E-02 2.543483E-02 2.502608E-02 2.462329E-02 2.422377E-02 2.382763E-02 2.343530E-02 2.304739E-02 2.266351E-02 2.228323E-02 2.190735E-02 2.153481E-02 2.116580E-02 2.079976E-02 2.043642E-02 2.007648E-02 1.971857E-02 1.936411E-02 1.901261E-02 1.866340E-02 1.831769E-02 1.797759E-02 1.764001E-02 1.730403E-02 1.696817E-02 1.663307E-02 1.629821E-02 1.596388E-02 1.562883E-02 1.529373E-02 1.495782E-02 1.462152E-02 1.428503E-02 1.394759E-02 1.361009E-02 1.327092E-02 1.293014E-02 1.258627E-02 1.223832E-02 1.188786E-02 1.153257E-02 1.117295E-02 1.081143E-02 1.044221E-02 1.007069E-02 9.693728E-03 9.311326E-03 8.923067E-03 8.529969E-03 8.131289E-03 7.727356E-03 7.318431E-03 6.905991E-03 6.487684E-03 6.065406E-03 5.640646E-03 5.213571E-03 4.786974E-03 4.359907E-03 3.936997E-03 3.517579E-03 3.104589E-03 2.702205E-03 2.312739E-03 1.940270E-03 1.587741E-03 1.260166E-03 9.620572E-04 6.978741E-04 4.722812E-04 2.891601E-04 1.515263E-04 6.039966E-05 1.312691E-05 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 3.632381E-02 3.579347E-02 3.526834E-02 3.474899E-02 3.423443E-02 3.372459E-02 3.322041E-02 3.272123E-02 3.222862E-02 3.174162E-02 3.125917E-02 3.078071E-02 3.030666E-02 2.983638E-02 2.936721E-02 2.890391E-02 2.844608E-02 2.799406E-02 2.754742E-02 2.710690E-02 2.667300E-02 2.624340E-02 2.581845E-02 2.539804E-02 2.498185E-02 2.457101E-02 2.416319E-02 2.376001E-02 2.336078E-02 2.296575E-02 2.257493E-02 2.218789E-02 2.180486E-02 2.142476E-02 2.104795E-02 2.067403E-02 2.030364E-02 1.993593E-02 1.957051E-02 1.920743E-02 1.884737E-02 1.849107E-02 1.813708E-02 1.778831E-02 1.744228E-02 1.709628E-02 1.675015E-02 1.640553E-02 1.605984E-02 1.571397E-02 1.536794E-02 1.502066E-02 1.467266E-02 1.432477E-02 1.397548E-02 1.362601E-02 1.327357E-02 1.292075E-02 1.256530E-02 1.220511E-02 1.184111E-02 1.147327E-02 1.110182E-02 1.072553E-02 1.034480E-02 9.959445E-03 9.569547E-03 9.173891E-03 8.772698E-03 8.366667E-03 7.955006E-03 7.538569E-03 7.117540E-03 6.693012E-03 6.263189E-03 5.831291E-03 5.397074E-03 4.961171E-03 4.526725E-03 4.095675E-03 3.667769E-03 3.246795E-03 2.834493E-03 2.435376E-03 2.052686E-03 1.689665E-03 1.350629E-03 1.040756E-03 7.643754E-04 5.260720E-04 3.301478E-04 1.800927E-04 7.728722E-05 2.011876E-05 6.402086E-07 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 3.662000E-02 3.608498E-02 3.555479E-02 3.502985E-02 3.451060E-02 3.399603E-02 3.348700E-02 3.298300E-02 3.248499E-02 3.199339E-02 3.150665E-02 3.102396E-02 3.054597E-02 3.007191E-02 2.959941E-02 2.913135E-02 2.866889E-02 2.821230E-02 2.776117E-02 2.731573E-02 2.687703E-02 2.644343E-02 2.601437E-02 2.559003E-02 2.517005E-02 2.475453E-02 2.434336E-02 2.393617E-02 2.353319E-02 2.313454E-02 2.273996E-02 2.234946E-02 2.196281E-02 2.157943E-02 2.119894E-02 2.082193E-02 2.044801E-02 2.007728E-02 1.970862E-02 1.934245E-02 1.897863E-02 1.861885E-02 1.826140E-02 1.790793E-02 1.755901E-02 1.721068E-02 1.686179E-02 1.651444E-02 1.616625E-02 1.581785E-02 1.546900E-02 1.511942E-02 1.476889E-02 1.441799E-02 1.406627E-02 1.371395E-02 1.335865E-02 1.300325E-02 1.264561E-02 1.228357E-02 1.191712E-02 1.154734E-02 1.117373E-02 1.079517E-02 1.041269E-02 1.002468E-02 9.633138E-03 9.235615E-03 8.832380E-03 8.424342E-03 8.011120E-03 7.592618E-03 7.169367E-03 6.743249E-03 6.311847E-03 5.877828E-03 5.441930E-03 5.004010E-03 4.567492E-03 4.134463E-03 3.704371E-03 3.281582E-03 2.866894E-03 2.465322E-03 2.080199E-03 1.714636E-03 1.372882E-03 1.060109E-03 7.807747E-04 5.394141E-04 3.404141E-04 1.873226E-04 8.168659E-05 2.207302E-05 9.469895E-07 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 3.749483E-02 3.694523E-02 3.640110E-02 3.586128E-02 3.532651E-02 3.479761E-02 3.427425E-02 3.375614E-02 3.324365E-02 3.273714E-02 3.223641E-02 3.174118E-02 3.125080E-02 3.076533E-02 3.028331E-02 2.980308E-02 2.932706E-02 2.885690E-02 2.839241E-02 2.793382E-02 2.748110E-02 2.703323E-02 2.659220E-02 2.615635E-02 2.572512E-02 2.529740E-02 2.487355E-02 2.445563E-02 2.404106E-02 2.363122E-02 2.322625E-02 2.282492E-02 2.242790E-02 2.203440E-02 2.164375E-02 2.125695E-02 2.087316E-02 2.049266E-02 2.011482E-02 1.973940E-02 1.936624E-02 1.899514E-02 1.862827E-02 1.826285E-02 1.790175E-02 1.754618E-02 1.718962E-02 1.683364E-02 1.647867E-02 1.612253E-02 1.576572E-02 1.540887E-02 1.505096E-02 1.469152E-02 1.433237E-02 1.397172E-02 1.360984E-02 1.324512E-02 1.288043E-02 1.251283E-02 1.213986E-02 1.176388E-02 1.138380E-02 1.099871E-02 1.061055E-02 1.021645E-02 9.818545E-03 9.415448E-03 9.007149E-03 8.592881E-03 8.174428E-03 7.750033E-03 7.321445E-03 6.889281E-03 6.453593E-03 6.013740E-03 5.572510E-03 5.129181E-03 4.686413E-03 4.247615E-03 3.811718E-03 3.382611E-03 2.961527E-03 2.553082E-03 2.160734E-03 1.787794E-03 1.438256E-03 1.117066E-03 8.292117E-04 5.789237E-04 3.710567E-04 2.091514E-04 9.519888E-05 2.838753E-05 2.212186E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 3.862830E-02 3.806058E-02 3.749790E-02 3.694038E-02 3.638757E-02 3.583968E-02 3.529700E-02 3.475926E-02 3.422832E-02 3.370366E-02 3.318484E-02 3.267099E-02 3.216289E-02 3.166123E-02 3.116439E-02 3.067196E-02 3.018054E-02 2.969304E-02 2.921152E-02 2.873567E-02 2.826599E-02 2.780183E-02 2.734281E-02 2.688936E-02 2.644286E-02 2.600058E-02 2.556246E-02 2.512842E-02 2.469854E-02 2.427397E-02 2.385373E-02 2.343896E-02 2.302821E-02 2.262162E-02 2.221781E-02 2.181781E-02 2.142149E-02 2.102836E-02 2.063821E-02 2.025046E-02 1.986526E-02 1.948289E-02 1.910204E-02 1.872419E-02 1.834877E-02 1.797672E-02 1.761012E-02 1.724366E-02 1.687833E-02 1.651324E-02 1.614667E-02 1.577937E-02 1.541224E-02 1.504362E-02 1.467343E-02 1.430327E-02 1.393103E-02 1.355716E-02 1.318099E-02 1.280448E-02 1.242490E-02 1.203984E-02 1.165147E-02 1.125966E-02 1.086185E-02 1.046135E-02 1.005477E-02 9.644164E-03 9.228562E-03 8.807401E-03 8.381285E-03 7.950618E-03 7.514466E-03 7.074862E-03 6.632802E-03 6.186598E-03 5.737172E-03 5.287947E-03 4.838289E-03 4.390713E-03 3.947948E-03 3.510675E-03 3.082521E-03 2.664987E-03 2.263566E-03 1.881317E-03 1.521953E-03 1.190421E-03 8.919096E-04 6.305120E-04 4.115289E-04 2.384374E-04 1.139155E-04 3.769582E-05 4.635895E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 3.972996E-02 3.914148E-02 3.856102E-02 3.798582E-02 3.741537E-02 3.685021E-02 3.629060E-02 3.573553E-02 3.518470E-02 3.464081E-02 3.410458E-02 3.357353E-02 3.304831E-02 3.252920E-02 3.201576E-02 3.150813E-02 3.100513E-02 3.050362E-02 3.000499E-02 2.951257E-02 2.902676E-02 2.854657E-02 2.807177E-02 2.760261E-02 2.713919E-02 2.668058E-02 2.622786E-02 2.578003E-02 2.533640E-02 2.489651E-02 2.446121E-02 2.403174E-02 2.360687E-02 2.318736E-02 2.277104E-02 2.235845E-02 2.194942E-02 2.154422E-02 2.114212E-02 2.074238E-02 2.034536E-02 1.995114E-02 1.955961E-02 1.916928E-02 1.878157E-02 1.839661E-02 1.801460E-02 1.763640E-02 1.726123E-02 1.688597E-02 1.651110E-02 1.613433E-02 1.575700E-02 1.537967E-02 1.500096E-02 1.462021E-02 1.423909E-02 1.385557E-02 1.347001E-02 1.308314E-02 1.269516E-02 1.230325E-02 1.190608E-02 1.150721E-02 1.110224E-02 1.069292E-02 1.027987E-02 9.861086E-03 9.438494E-03 9.010705E-03 8.577399E-03 8.139806E-03 7.697897E-03 7.251390E-03 6.801548E-03 6.349409E-03 5.893556E-03 5.437596E-03 4.982332E-03 4.526089E-03 4.077045E-03 3.632371E-03 3.196444E-03 2.771149E-03 2.361245E-03 1.970431E-03 1.602010E-03 1.260918E-03 9.524159E-04 6.808003E-04 4.513010E-04 2.677393E-04 1.331169E-04 4.783964E-05 7.788574E-06 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 4.080260E-02 4.019604E-02 3.959556E-02 3.900027E-02 3.841263E-02 3.783015E-02 3.725369E-02 3.668217E-02 3.611496E-02 3.555330E-02 3.499833E-02 3.444896E-02 3.390711E-02 3.337151E-02 3.284184E-02 3.231796E-02 3.179980E-02 3.128579E-02 3.077517E-02 3.026619E-02 2.976397E-02 2.926812E-02 2.877800E-02 2.829395E-02 2.781546E-02 2.734213E-02 2.687364E-02 2.641015E-02 2.595290E-02 2.549974E-02 2.505100E-02 2.460664E-02 2.416728E-02 2.373303E-02 2.330426E-02 2.287950E-02 2.245844E-02 2.204122E-02 2.162756E-02 2.121614E-02 2.080777E-02 2.040225E-02 1.999923E-02 1.959825E-02 1.919908E-02 1.880280E-02 1.840822E-02 1.801631E-02 1.762846E-02 1.724326E-02 1.685893E-02 1.647432E-02 1.608747E-02 1.570076E-02 1.531343E-02 1.492458E-02 1.453358E-02 1.414160E-02 1.374726E-02 1.335076E-02 1.295355E-02 1.255324E-02 1.214931E-02 1.174247E-02 1.133017E-02 1.091436E-02 1.049286E-02 1.006811E-02 9.637274E-03 9.203363E-03 8.763894E-03 8.319176E-03 7.871264E-03 7.418511E-03 6.961824E-03 6.502795E-03 6.041681E-03 5.578831E-03 5.117891E-03 4.655116E-03 4.198906E-03 3.747364E-03 3.304282E-03 2.872428E-03 2.454279E-03 2.055370E-03 1.678630E-03 1.328652E-03 1.010756E-03 7.296136E-04 4.901933E-04 2.968709E-04 1.526222E-04 5.862848E-05 1.155237E-05 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 4.184561E-02 4.122094E-02 4.060265E-02 3.999082E-02 3.938371E-02 3.878257E-02 3.818826E-02 3.760077E-02 3.701771E-02 3.643972E-02 3.586761E-02 3.530155E-02 3.474179E-02 3.418878E-02 3.364333E-02 3.310378E-02 3.257025E-02 3.204178E-02 3.151839E-02 3.099803E-02 3.047978E-02 2.996826E-02 2.946272E-02 2.896357E-02 2.847070E-02 2.798363E-02 2.750085E-02 2.702331E-02 2.655114E-02 2.608307E-02 2.562129E-02 2.516461E-02 2.471146E-02 2.426296E-02 2.381951E-02 2.338227E-02 2.294915E-02 2.252043E-02 2.209547E-02 2.167296E-02 2.125322E-02 2.083673E-02 2.042318E-02 2.001099E-02 1.960147E-02 1.919413E-02 1.878936E-02 1.838532E-02 1.798535E-02 1.758744E-02 1.719232E-02 1.679887E-02 1.640448E-02 1.600852E-02 1.561245E-02 1.521545E-02 1.481629E-02 1.441499E-02 1.401256E-02 1.360794E-02 1.320132E-02 1.279222E-02 1.238065E-02 1.196704E-02 1.154674E-02 1.112469E-02 1.069639E-02 1.026415E-02 9.827505E-03 9.385764E-03 8.940671E-03 8.490037E-03 8.035199E-03 7.576787E-03 7.113632E-03 6.648018E-03 6.181394E-03 5.713462E-03 5.245217E-03 4.777445E-03 4.314224E-03 3.856421E-03 3.406847E-03 2.968178E-03 2.542824E-03 2.136228E-03 1.751704E-03 1.393599E-03 1.066850E-03 7.769347E-04 5.282523E-04 3.256153E-04 1.723524E-04 6.991241E-05 1.584775E-05 1.000000E-30 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 4.285832E-02 4.221713E-02 4.158235E-02 4.095297E-02 4.032962E-02 3.971197E-02 3.910016E-02 3.849426E-02 3.789412E-02 3.730095E-02 3.671291E-02 3.613027E-02 3.555407E-02 3.498474E-02 3.442227E-02 3.386655E-02 3.331809E-02 3.277474E-02 3.223697E-02 3.170418E-02 3.117567E-02 3.064870E-02 3.012767E-02 2.961357E-02 2.910625E-02 2.860489E-02 2.810877E-02 2.761797E-02 2.713209E-02 2.665116E-02 2.617467E-02 2.570399E-02 2.523885E-02 2.477831E-02 2.432123E-02 2.386890E-02 2.342323E-02 2.298266E-02 2.254668E-02 2.211335E-02 2.168310E-02 2.125566E-02 2.083138E-02 2.040931E-02 1.998901E-02 1.957154E-02 1.915635E-02 1.874247E-02 1.833107E-02 1.792165E-02 1.751459E-02 1.710983E-02 1.670753E-02 1.630388E-02 1.589891E-02 1.549380E-02 1.508695E-02 1.467735E-02 1.426630E-02 1.385422E-02 1.343934E-02 1.302135E-02 1.260181E-02 1.218075E-02 1.175385E-02 1.132436E-02 1.089027E-02 1.045110E-02 1.000796E-02 9.560293E-03 9.108156E-03 8.652085E-03 8.190929E-03 7.726453E-03 7.258318E-03 6.786459E-03 6.313693E-03 5.840545E-03 5.366053E-03 4.893104E-03 4.424222E-03 3.959637E-03 3.504035E-03 3.058715E-03 2.627337E-03 2.213328E-03 1.821552E-03 1.455790E-03 1.120948E-03 8.225866E-04 5.653526E-04 3.538753E-04 1.920867E-04 8.160734E-05 2.070075E-05 5.078747E-07 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 4.384397E-02 4.318566E-02 4.253419E-02 4.188938E-02 4.124944E-02 4.061557E-02 3.998826E-02 3.936631E-02 3.874990E-02 3.813924E-02 3.753487E-02 3.693660E-02 3.634423E-02 3.575892E-02 3.518088E-02 3.460933E-02 3.404465E-02 3.348640E-02 3.293459E-02 3.238785E-02 3.184659E-02 3.131025E-02 3.077517E-02 3.024549E-02 2.972340E-02 2.920829E-02 2.869830E-02 2.819406E-02 2.769550E-02 2.720176E-02 2.671277E-02 2.622909E-02 2.574994E-02 2.527685E-02 2.480860E-02 2.434352E-02 2.388326E-02 2.342971E-02 2.298199E-02 2.253853E-02 2.209748E-02 2.165996E-02 2.122535E-02 2.079306E-02 2.036295E-02 1.993529E-02 1.951029E-02 1.908646E-02 1.866505E-02 1.824549E-02 1.782752E-02 1.741143E-02 1.699756E-02 1.658679E-02 1.617395E-02 1.576040E-02 1.534607E-02 1.492902E-02 1.450985E-02 1.408963E-02 1.366778E-02 1.324153E-02 1.281388E-02 1.238463E-02 1.195140E-02 1.151504E-02 1.107456E-02 1.062968E-02 1.017944E-02 9.726184E-03 9.267462E-03 8.805749E-03 8.339120E-03 7.868293E-03 7.395124E-03 6.917968E-03 6.439188E-03 5.960434E-03 5.480890E-03 5.002036E-03 4.528361E-03 4.057501E-03 3.596379E-03 3.144931E-03 2.707405E-03 2.286991E-03 1.888051E-03 1.515300E-03 1.172944E-03 8.666624E-04 6.013090E-04 3.816147E-04 2.117098E-04 9.359208E-05 2.604940E-05 1.353490E-06 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 4.480270E-02 4.412887E-02 4.346082E-02 4.279960E-02 4.214429E-02 4.149517E-02 4.085158E-02 4.021491E-02 3.958311E-02 3.895749E-02 3.833787E-02 3.772330E-02 3.711350E-02 3.651245E-02 3.591908E-02 3.533243E-02 3.475294E-02 3.417933E-02 3.361198E-02 3.305168E-02 3.249725E-02 3.194809E-02 3.140336E-02 3.086144E-02 3.032449E-02 2.979467E-02 2.927101E-02 2.875357E-02 2.824187E-02 2.773569E-02 2.723432E-02 2.673863E-02 2.624770E-02 2.576152E-02 2.528003E-02 2.480413E-02 2.433226E-02 2.386541E-02 2.340379E-02 2.294877E-02 2.249802E-02 2.204989E-02 2.160557E-02 2.116355E-02 2.072376E-02 2.028628E-02 1.985160E-02 1.941863E-02 1.898733E-02 1.855813E-02 1.813085E-02 1.770428E-02 1.727963E-02 1.685743E-02 1.643774E-02 1.601631E-02 1.559422E-02 1.517027E-02 1.474351E-02 1.431546E-02 1.388569E-02 1.345349E-02 1.301744E-02 1.258038E-02 1.214030E-02 1.169726E-02 1.124993E-02 1.079959E-02 1.034375E-02 9.883627E-03 9.419728E-03 8.951377E-03 8.479904E-03 8.003492E-03 7.524464E-03 7.043080E-03 6.558707E-03 6.073883E-03 5.589548E-03 5.106013E-03 4.626757E-03 4.151109E-03 3.683784E-03 3.226893E-03 2.783324E-03 2.356986E-03 1.951601E-03 1.572075E-03 1.222834E-03 9.091572E-04 6.362033E-04 4.087719E-04 2.312034E-04 1.057319E-04 3.180295E-05 2.567874E-06 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 4.573746E-02 4.504715E-02 4.436415E-02 4.368741E-02 4.301620E-02 4.235142E-02 4.169350E-02 4.104137E-02 4.039514E-02 3.975460E-02 3.912077E-02 3.849228E-02 3.786806E-02 3.724896E-02 3.663887E-02 3.603739E-02 3.544330E-02 3.485542E-02 3.427396E-02 3.369851E-02 3.312957E-02 3.256805E-02 3.201117E-02 3.145894E-02 3.091093E-02 3.036723E-02 2.982960E-02 2.929805E-02 2.877375E-02 2.825494E-02 2.774128E-02 2.723358E-02 2.673097E-02 2.623367E-02 2.574059E-02 2.525158E-02 2.476842E-02 2.429014E-02 2.381710E-02 2.334766E-02 2.288546E-02 2.242771E-02 2.197312E-02 2.152210E-02 2.107256E-02 2.062605E-02 2.018197E-02 1.973956E-02 1.929945E-02 1.886112E-02 1.842407E-02 1.798904E-02 1.755430E-02 1.712161E-02 1.669113E-02 1.626289E-02 1.583319E-02 1.540192E-02 1.496863E-02 1.453278E-02 1.409591E-02 1.365664E-02 1.321431E-02 1.276848E-02 1.232224E-02 1.187211E-02 1.141878E-02 1.096184E-02 1.050076E-02 1.003485E-02 9.564853E-03 9.091224E-03 8.613846E-03 8.132862E-03 7.648029E-03 7.162120E-03 6.672974E-03 6.182148E-03 5.693142E-03 5.205215E-03 4.719899E-03 4.240429E-03 3.767031E-03 3.305107E-03 2.855859E-03 2.424130E-03 2.012496E-03 1.626601E-03 1.270800E-03 9.501840E-04 6.700367E-04 4.353900E-04 2.504663E-04 1.180504E-04 3.789155E-05 4.106992E-06 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 4.665600E-02 4.594871E-02 4.524822E-02 4.455537E-02 4.386968E-02 4.318954E-02 4.251608E-02 4.184988E-02 4.118935E-02 4.053430E-02 3.988628E-02 3.924424E-02 3.860668E-02 3.797383E-02 3.734740E-02 3.672871E-02 3.611914E-02 3.551719E-02 3.492188E-02 3.433280E-02 3.375001E-02 3.317383E-02 3.260426E-02 3.204038E-02 3.148180E-02 3.092798E-02 3.037695E-02 2.983247E-02 2.929444E-02 2.876295E-02 2.823718E-02 2.771727E-02 2.720342E-02 2.669422E-02 2.619083E-02 2.569057E-02 2.519555E-02 2.470534E-02 2.422124E-02 2.374171E-02 2.326500E-02 2.279602E-02 2.233189E-02 2.187107E-02 2.141281E-02 2.095678E-02 2.050402E-02 2.005291E-02 1.960328E-02 1.915653E-02 1.871071E-02 1.826620E-02 1.782324E-02 1.738095E-02 1.694035E-02 1.650209E-02 1.606544E-02 1.562691E-02 1.518714E-02 1.474420E-02 1.430014E-02 1.385412E-02 1.340538E-02 1.295286E-02 1.249883E-02 1.204243E-02 1.158272E-02 1.111935E-02 1.065263E-02 1.018152E-02 9.705532E-03 9.226769E-03 8.743509E-03 8.257864E-03 7.768217E-03 7.276808E-03 6.783247E-03 6.287179E-03 5.792834E-03 5.300950E-03 4.810141E-03 4.326283E-03 3.847896E-03 3.380577E-03 2.926202E-03 2.488786E-03 2.071566E-03 1.679304E-03 1.317300E-03 9.901655E-04 7.030306E-04 4.615310E-04 2.695844E-04 1.304537E-04 4.423836E-05 5.928232E-06 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 4.755316E-02 4.683022E-02 4.611446E-02 4.540537E-02 4.470279E-02 4.400725E-02 4.331926E-02 4.263807E-02 4.196336E-02 4.129497E-02 4.063252E-02 3.997726E-02 3.932651E-02 3.868125E-02 3.804080E-02 3.740711E-02 3.678156E-02 3.616328E-02 3.555388E-02 3.495137E-02 3.435538E-02 3.376625E-02 3.318308E-02 3.260574E-02 3.203563E-02 3.147116E-02 3.091073E-02 3.035360E-02 2.980287E-02 2.925891E-02 2.872030E-02 2.818857E-02 2.766287E-02 2.714263E-02 2.662794E-02 2.611735E-02 2.561194E-02 2.511087E-02 2.461483E-02 2.412453E-02 2.363793E-02 2.315535E-02 2.267999E-02 2.220953E-02 2.174206E-02 2.127738E-02 2.081539E-02 2.035616E-02 1.989779E-02 1.944267E-02 1.898807E-02 1.853516E-02 1.808346E-02 1.763275E-02 1.718287E-02 1.673543E-02 1.628909E-02 1.584389E-02 1.539692E-02 1.494820E-02 1.449694E-02 1.404447E-02 1.358884E-02 1.313036E-02 1.267002E-02 1.220590E-02 1.174051E-02 1.127075E-02 1.079809E-02 1.032187E-02 9.841061E-03 9.356149E-03 8.868194E-03 8.376974E-03 7.883408E-03 7.386236E-03 6.888342E-03 6.388021E-03 5.888171E-03 5.392345E-03 4.896646E-03 4.407930E-03 3.925474E-03 3.452478E-03 2.993219E-03 2.550332E-03 2.128159E-03 1.729968E-03 1.361970E-03 1.028742E-03 7.350793E-04 4.869843E-04 2.884062E-04 1.428268E-04 5.082926E-05 7.991790E-06 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 4.843035E-02 4.769208E-02 4.696066E-02 4.623689E-02 4.551933E-02 4.480832E-02 4.410401E-02 4.340785E-02 4.271884E-02 4.203611E-02 4.136088E-02 4.069181E-02 4.002856E-02 3.937064E-02 3.871843E-02 3.807046E-02 3.743039E-02 3.679803E-02 3.617277E-02 3.555517E-02 3.494605E-02 3.434409E-02 3.374853E-02 3.315883E-02 3.257526E-02 3.199895E-02 3.142802E-02 3.086152E-02 3.029902E-02 2.974270E-02 2.919246E-02 2.864815E-02 2.811067E-02 2.757922E-02 2.705361E-02 2.653252E-02 2.601639E-02 2.550557E-02 2.499916E-02 2.449790E-02 2.400049E-02 2.350790E-02 2.302020E-02 2.253815E-02 2.206123E-02 2.158817E-02 2.111747E-02 2.064935E-02 2.018334E-02 1.971961E-02 1.925697E-02 1.879596E-02 1.833581E-02 1.787683E-02 1.741914E-02 1.696212E-02 1.650752E-02 1.605305E-02 1.559941E-02 1.514439E-02 1.468692E-02 1.422786E-02 1.376582E-02 1.330080E-02 1.283506E-02 1.236390E-02 1.189222E-02 1.141639E-02 1.093812E-02 1.045627E-02 9.970815E-03 9.480660E-03 8.987623E-03 8.491346E-03 7.993330E-03 7.491517E-03 6.988140E-03 6.484274E-03 5.979781E-03 5.479140E-03 4.979058E-03 4.485821E-03 3.999356E-03 3.521410E-03 3.057336E-03 2.609442E-03 2.182383E-03 1.778722E-03 1.404993E-03 1.065928E-03 7.661434E-04 5.117946E-04 3.069227E-04 1.551525E-04 5.754986E-05 1.026170E-05 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 4.928858E-02 4.853480E-02 4.778888E-02 4.704976E-02 4.631776E-02 4.559220E-02 4.487345E-02 4.416201E-02 4.345769E-02 4.276035E-02 4.207111E-02 4.138931E-02 4.071308E-02 4.004299E-02 3.937883E-02 3.871963E-02 3.806513E-02 3.741884E-02 3.677979E-02 3.614827E-02 3.552381E-02 3.490830E-02 3.430034E-02 3.369848E-02 3.310316E-02 3.251417E-02 3.193128E-02 3.135433E-02 3.078241E-02 3.021499E-02 2.965297E-02 2.909723E-02 2.854829E-02 2.800491E-02 2.746858E-02 2.693661E-02 2.641075E-02 2.588907E-02 2.537349E-02 2.486197E-02 2.435460E-02 2.385097E-02 2.335345E-02 2.286069E-02 2.237142E-02 2.188913E-02 2.141079E-02 2.093406E-02 2.045955E-02 1.998848E-02 1.951772E-02 1.904862E-02 1.858081E-02 1.811355E-02 1.764783E-02 1.718340E-02 1.671967E-02 1.625697E-02 1.579497E-02 1.533329E-02 1.487041E-02 1.440483E-02 1.393649E-02 1.346567E-02 1.299372E-02 1.251680E-02 1.203803E-02 1.155728E-02 1.107275E-02 1.058545E-02 1.009507E-02 9.600505E-03 9.101803E-03 8.601381E-03 8.098047E-03 7.592410E-03 7.083888E-03 6.576117E-03 6.067961E-03 5.561972E-03 5.057996E-03 4.560948E-03 4.069558E-03 3.587762E-03 3.118752E-03 2.666305E-03 2.234274E-03 1.825651E-03 1.446483E-03 1.101852E-03 7.963020E-04 5.359201E-04 3.250648E-04 1.674268E-04 6.441555E-05 1.270590E-05 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 5.012685E-02 4.935960E-02 4.859877E-02 4.784570E-02 4.709907E-02 4.635903E-02 4.562600E-02 4.490050E-02 4.418202E-02 4.347022E-02 4.276629E-02 4.207021E-02 4.138140E-02 4.069899E-02 4.002296E-02 3.935272E-02 3.868653E-02 3.802649E-02 3.737379E-02 3.672896E-02 3.609145E-02 3.546166E-02 3.483936E-02 3.422560E-02 3.361852E-02 3.301815E-02 3.242362E-02 3.183433E-02 3.125215E-02 3.067528E-02 3.010239E-02 2.953574E-02 2.897543E-02 2.842131E-02 2.787353E-02 2.733093E-02 2.679439E-02 2.626317E-02 2.573721E-02 2.521677E-02 2.469954E-02 2.418695E-02 2.367799E-02 2.317573E-02 2.267670E-02 2.218178E-02 2.169480E-02 2.121064E-02 2.072760E-02 2.024901E-02 1.977044E-02 1.929360E-02 1.881828E-02 1.834341E-02 1.787009E-02 1.739766E-02 1.692642E-02 1.645587E-02 1.598486E-02 1.551577E-02 1.504696E-02 1.457598E-02 1.410110E-02 1.362434E-02 1.314694E-02 1.266390E-02 1.217999E-02 1.169241E-02 1.120286E-02 1.070984E-02 1.021419E-02 9.715358E-03 9.212290E-03 8.706991E-03 8.198693E-03 7.688829E-03 7.176310E-03 6.663742E-03 6.152341E-03 5.641523E-03 5.133426E-03 4.632389E-03 4.136569E-03 3.651337E-03 3.177528E-03 2.720660E-03 2.283888E-03 1.870838E-03 1.486409E-03 1.136439E-03 8.255860E-04 5.594568E-04 3.428547E-04 1.796173E-04 7.136698E-05 1.529792E-05 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 5.094729E-02 5.016541E-02 4.939121E-02 4.862402E-02 4.786426E-02 4.711016E-02 4.636302E-02 4.562344E-02 4.489107E-02 4.416543E-02 4.344776E-02 4.273812E-02 4.203467E-02 4.133942E-02 4.065170E-02 3.997006E-02 3.929395E-02 3.862161E-02 3.795547E-02 3.729747E-02 3.664695E-02 3.600449E-02 3.536968E-02 3.474145E-02 3.412188E-02 3.351038E-02 3.290496E-02 3.230479E-02 3.171045E-02 3.112319E-02 3.054086E-02 2.996334E-02 2.939272E-02 2.882762E-02 2.826942E-02 2.771629E-02 2.716883E-02 2.662784E-02 2.609217E-02 2.556207E-02 2.503572E-02 2.451399E-02 2.399650E-02 2.348297E-02 2.297489E-02 2.247016E-02 2.197078E-02 2.147930E-02 2.098833E-02 2.050128E-02 2.001619E-02 1.953162E-02 1.904846E-02 1.856681E-02 1.808580E-02 1.760574E-02 1.712747E-02 1.664903E-02 1.617093E-02 1.569291E-02 1.521726E-02 1.474125E-02 1.426024E-02 1.377761E-02 1.329480E-02 1.280569E-02 1.231659E-02 1.182328E-02 1.132846E-02 1.082970E-02 1.032922E-02 9.825734E-03 9.318551E-03 8.807881E-03 8.295523E-03 7.780988E-03 7.265082E-03 6.747611E-03 6.233019E-03 5.718145E-03 5.205426E-03 4.700868E-03 4.200960E-03 3.712068E-03 3.234111E-03 2.772783E-03 2.331489E-03 1.914224E-03 1.524867E-03 1.169802E-03 8.539190E-04 5.823286E-04 3.602835E-04 1.916752E-04 7.834641E-05 1.804760E-05 1.000000E-30 1.000000E-30 1.000000E-30 0.000000E+00 5.175077E-02 5.095477E-02 5.016634E-02 4.938595E-02 4.861236E-02 4.784551E-02 4.708524E-02 4.633195E-02 4.558579E-02 4.484634E-02 4.411514E-02 4.339222E-02 4.267625E-02 4.196721E-02 4.126552E-02 4.057300E-02 3.988583E-02 3.920442E-02 3.852542E-02 3.785442E-02 3.719109E-02 3.653609E-02 3.588896E-02 3.524869E-02 3.461599E-02 3.399125E-02 3.337503E-02 3.276423E-02 3.215956E-02 3.156083E-02 3.096806E-02 3.038104E-02 2.980010E-02 2.922450E-02 2.865622E-02 2.809288E-02 2.753550E-02 2.698369E-02 2.643866E-02 2.589881E-02 2.536385E-02 2.483252E-02 2.430657E-02 2.378432E-02 2.326581E-02 2.275258E-02 2.224302E-02 2.173962E-02 2.124196E-02 2.074672E-02 2.025398E-02 1.976279E-02 1.927211E-02 1.878322E-02 1.829547E-02 1.780839E-02 1.732227E-02 1.683734E-02 1.635157E-02 1.586637E-02 1.538245E-02 1.490039E-02 1.441438E-02 1.392573E-02 1.343716E-02 1.294358E-02 1.244821E-02 1.195026E-02 1.144916E-02 1.094616E-02 1.044006E-02 9.931576E-03 9.420485E-03 8.905711E-03 8.388710E-03 7.869831E-03 7.350066E-03 6.828908E-03 6.309939E-03 5.791642E-03 5.274672E-03 4.766520E-03 4.262976E-03 3.769941E-03 3.288466E-03 2.822861E-03 2.377423E-03 1.955882E-03 1.561949E-03 1.202051E-03 8.812733E-04 6.045515E-04 3.773034E-04 2.035707E-04 8.538603E-05 2.095273E-05 3.401233E-07 1.000000E-30 1.000000E-30 0.000000E+00 5.254052E-02 5.172934E-02 5.092600E-02 5.013184E-02 4.934544E-02 4.856511E-02 4.779192E-02 4.702612E-02 4.626720E-02 4.551406E-02 4.476909E-02 4.403308E-02 4.330424E-02 4.258265E-02 4.186893E-02 4.116247E-02 4.046389E-02 3.977225E-02 3.908427E-02 3.840038E-02 3.772440E-02 3.705690E-02 3.639768E-02 3.574555E-02 3.510101E-02 3.446442E-02 3.383527E-02 3.321341E-02 3.259817E-02 3.198919E-02 3.138581E-02 3.078828E-02 3.019797E-02 2.961248E-02 2.903369E-02 2.846097E-02 2.789347E-02 2.733218E-02 2.677704E-02 2.622785E-02 2.568335E-02 2.514385E-02 2.460853E-02 2.407849E-02 2.355096E-02 2.302816E-02 2.250983E-02 2.199644E-02 2.148821E-02 2.098573E-02 2.048518E-02 1.998752E-02 1.948987E-02 1.899339E-02 1.849933E-02 1.800525E-02 1.751208E-02 1.702005E-02 1.652781E-02 1.603535E-02 1.554414E-02 1.505405E-02 1.456347E-02 1.406925E-02 1.357478E-02 1.307649E-02 1.257567E-02 1.207250E-02 1.156667E-02 1.105833E-02 1.054720E-02 1.003388E-02 9.518443E-03 8.999820E-03 8.478102E-03 7.955257E-03 7.431325E-03 6.907165E-03 6.383328E-03 5.862063E-03 5.341409E-03 4.829252E-03 4.322261E-03 3.825346E-03 3.340716E-03 2.870845E-03 2.421579E-03 1.995841E-03 1.597748E-03 1.233260E-03 9.077427E-04 6.261280E-04 3.939001E-04 2.152868E-04 9.245998E-05 2.398933E-05 7.104925E-07 1.000000E-30 1.000000E-30 0.000000E+00 5.331555E-02 5.249004E-02 5.167310E-02 5.086360E-02 5.006354E-02 4.927055E-02 4.848445E-02 4.770573E-02 4.693439E-02 4.616911E-02 4.541098E-02 4.466134E-02 4.391978E-02 4.318562E-02 4.245947E-02 4.174159E-02 4.103041E-02 4.032698E-02 3.962958E-02 3.893592E-02 3.824743E-02 3.756760E-02 3.689640E-02 3.623245E-02 3.557637E-02 3.492843E-02 3.428809E-02 3.365384E-02 3.302736E-02 3.240828E-02 3.179488E-02 3.118724E-02 3.058616E-02 2.999189E-02 2.940299E-02 2.882049E-02 2.824346E-02 2.767280E-02 2.710815E-02 2.654955E-02 2.599570E-02 2.544742E-02 2.490357E-02 2.436456E-02 2.382944E-02 2.329787E-02 2.277093E-02 2.224832E-02 2.173032E-02 2.121854E-02 2.071041E-02 2.020531E-02 1.970171E-02 1.919805E-02 1.869674E-02 1.819673E-02 1.769697E-02 1.719763E-02 1.669927E-02 1.620027E-02 1.570185E-02 1.520438E-02 1.470713E-02 1.420843E-02 1.370803E-02 1.320470E-02 1.269966E-02 1.219055E-02 1.168023E-02 1.116635E-02 1.065116E-02 1.013273E-02 9.612624E-03 9.090343E-03 8.564739E-03 8.037708E-03 7.509780E-03 6.982179E-03 6.454284E-03 5.929434E-03 5.405958E-03 4.889237E-03 4.379243E-03 3.878689E-03 3.390730E-03 2.917038E-03 2.464006E-03 2.034126E-03 1.632300E-03 1.263349E-03 9.333735E-04 6.471037E-04 4.101295E-04 2.268081E-04 9.950971E-05 2.713622E-05 1.204403E-06 1.000000E-30 1.000000E-30 0.000000E+00 5.407616E-02 5.323691E-02 5.240605E-02 5.158400E-02 5.076936E-02 4.996203E-02 4.916342E-02 4.837227E-02 4.758852E-02 4.681103E-02 4.604040E-02 4.527825E-02 4.452373E-02 4.377688E-02 4.303842E-02 4.230851E-02 4.158617E-02 4.087132E-02 4.016264E-02 3.946005E-02 3.876071E-02 3.806871E-02 3.738555E-02 3.670998E-02 3.604247E-02 3.538321E-02 3.473203E-02 3.408715E-02 3.344882E-02 3.281812E-02 3.219518E-02 3.157791E-02 3.096714E-02 3.036210E-02 2.976455E-02 2.917211E-02 2.858574E-02 2.800561E-02 2.743218E-02 2.686435E-02 2.630196E-02 2.574381E-02 2.519187E-02 2.464444E-02 2.410114E-02 2.356135E-02 2.302638E-02 2.249532E-02 2.196804E-02 2.144687E-02 2.093004E-02 2.041754E-02 1.990742E-02 1.939760E-02 1.888908E-02 1.838279E-02 1.787681E-02 1.737092E-02 1.686565E-02 1.636069E-02 1.585549E-02 1.535143E-02 1.484696E-02 1.434331E-02 1.383732E-02 1.332888E-02 1.281926E-02 1.230518E-02 1.178994E-02 1.127177E-02 1.075145E-02 1.022835E-02 9.703645E-03 9.177259E-03 8.648127E-03 8.116927E-03 7.585139E-03 7.053996E-03 6.522993E-03 5.993878E-03 5.467913E-03 4.947198E-03 4.434019E-03 3.930163E-03 3.438554E-03 2.961566E-03 2.504800E-03 2.071044E-03 1.665552E-03 1.292367E-03 9.581717E-04 6.674895E-04 4.259619E-04 2.381184E-04 1.065247E-04 3.037652E-05 1.810446E-06 1.000000E-30 1.000000E-30 0.000000E+00 5.482119E-02 5.397015E-02 5.312585E-02 5.229039E-02 5.146349E-02 5.064297E-02 4.983011E-02 4.902587E-02 4.823018E-02 4.744076E-02 4.665819E-02 4.588335E-02 4.511660E-02 4.435740E-02 4.360643E-02 4.286462E-02 4.213055E-02 4.140486E-02 4.068528E-02 3.997251E-02 3.926444E-02 3.856066E-02 3.786568E-02 3.717862E-02 3.649970E-02 3.582939E-02 3.516738E-02 3.451172E-02 3.386321E-02 3.322174E-02 3.258687E-02 3.196003E-02 3.134024E-02 3.072601E-02 3.011804E-02 2.951658E-02 2.892061E-02 2.833135E-02 2.774866E-02 2.717233E-02 2.660111E-02 2.603468E-02 2.547344E-02 2.491810E-02 2.436637E-02 2.381908E-02 2.327565E-02 2.273738E-02 2.220127E-02 2.167099E-02 2.114566E-02 2.062449E-02 2.010734E-02 1.959203E-02 1.907663E-02 1.856338E-02 1.805178E-02 1.753992E-02 1.702786E-02 1.651699E-02 1.600602E-02 1.549467E-02 1.498401E-02 1.447351E-02 1.396276E-02 1.344929E-02 1.293476E-02 1.241679E-02 1.189596E-02 1.137347E-02 1.084835E-02 1.032109E-02 9.791884E-03 9.261093E-03 8.728473E-03 8.193626E-03 7.658229E-03 7.123499E-03 6.589053E-03 6.055715E-03 5.527358E-03 5.003123E-03 4.486569E-03 3.979501E-03 3.484418E-03 3.004587E-03 2.543987E-03 2.106777E-03 1.697575E-03 1.320486E-03 9.821595E-04 6.873201E-04 4.414450E-04 2.492481E-04 1.134904E-04 3.369758E-05 2.517278E-06 1.000000E-30 1.000000E-30 0.000000E+00 5.555289E-02 5.468870E-02 5.383278E-02 5.298442E-02 5.214443E-02 5.131211E-02 5.048654E-02 4.966910E-02 4.885959E-02 4.805854E-02 4.726438E-02 4.647763E-02 4.569863E-02 4.492723E-02 4.416435E-02 4.341039E-02 4.266478E-02 4.192773E-02 4.119757E-02 4.047428E-02 3.975730E-02 3.904474E-02 3.833723E-02 3.763876E-02 3.694861E-02 3.626736E-02 3.559449E-02 3.492839E-02 3.426963E-02 3.361790E-02 3.297323E-02 3.233473E-02 3.170509E-02 3.108203E-02 3.046541E-02 2.985400E-02 2.924868E-02 2.865048E-02 2.805855E-02 2.747365E-02 2.689406E-02 2.631939E-02 2.574951E-02 2.518534E-02 2.462616E-02 2.407061E-02 2.351982E-02 2.297353E-02 2.243062E-02 2.189097E-02 2.135761E-02 2.082726E-02 2.030242E-02 1.978070E-02 1.925969E-02 1.873953E-02 1.822191E-02 1.770452E-02 1.718617E-02 1.666874E-02 1.615206E-02 1.563483E-02 1.511784E-02 1.460089E-02 1.408460E-02 1.356642E-02 1.304661E-02 1.252465E-02 1.199921E-02 1.147196E-02 1.094282E-02 1.041074E-02 9.877380E-03 9.342085E-03 8.805931E-03 8.267784E-03 7.728634E-03 7.190239E-03 6.652366E-03 6.116152E-03 5.584496E-03 5.057269E-03 4.536965E-03 4.026932E-03 3.528601E-03 3.046055E-03 2.581708E-03 2.141226E-03 1.728467E-03 1.347642E-03 1.005381E-03 7.065598E-04 4.565493E-04 2.601743E-04 1.204357E-04 3.707259E-05 3.313984E-06 1.000000E-30 1.000000E-30 0.000000E+00 5.627191E-02 5.539478E-02 5.452604E-02 5.366610E-02 5.281372E-02 5.196863E-02 5.113168E-02 5.030169E-02 4.948032E-02 4.866555E-02 4.785949E-02 4.706157E-02 4.627050E-02 4.548704E-02 4.471231E-02 4.394669E-02 4.318926E-02 4.244103E-02 4.169996E-02 4.096634E-02 4.023925E-02 3.951857E-02 3.880202E-02 3.809082E-02 3.738960E-02 3.669738E-02 3.601393E-02 3.533743E-02 3.466834E-02 3.400682E-02 3.335232E-02 3.270409E-02 3.206334E-02 3.143100E-02 3.080509E-02 3.018569E-02 2.957045E-02 2.896312E-02 2.836233E-02 2.776844E-02 2.718074E-02 2.659776E-02 2.602006E-02 2.544768E-02 2.488045E-02 2.431675E-02 2.375835E-02 2.320460E-02 2.265416E-02 2.210752E-02 2.156525E-02 2.102776E-02 2.049291E-02 1.996446E-02 1.943815E-02 1.891155E-02 1.838752E-02 1.786485E-02 1.734057E-02 1.681701E-02 1.629448E-02 1.577201E-02 1.524820E-02 1.472590E-02 1.420294E-02 1.368013E-02 1.315522E-02 1.262910E-02 1.209971E-02 1.156735E-02 1.103402E-02 1.049760E-02 9.960338E-03 9.420813E-03 8.880681E-03 8.339351E-03 7.796719E-03 7.254616E-03 6.713416E-03 6.174478E-03 5.639198E-03 5.109299E-03 4.585718E-03 4.072753E-03 3.571430E-03 3.085707E-03 2.618229E-03 2.174409E-03 1.758097E-03 1.373962E-03 1.027926E-03 7.252019E-04 4.712646E-04 2.709130E-04 1.273327E-04 4.049590E-05 4.190547E-06 1.000000E-30 1.000000E-30 0.000000E+00 5.697674E-02 5.608647E-02 5.520467E-02 5.433212E-02 5.346848E-02 5.261141E-02 5.176205E-02 5.092102E-02 5.008740E-02 4.926133E-02 4.844248E-02 4.763230E-02 4.683002E-02 4.603470E-02 4.524822E-02 4.447111E-02 4.370235E-02 4.294251E-02 4.219067E-02 4.144648E-02 4.070932E-02 3.997909E-02 3.925549E-02 3.853469E-02 3.782093E-02 3.711757E-02 3.642369E-02 3.573677E-02 3.505765E-02 3.438627E-02 3.372199E-02 3.306449E-02 3.241420E-02 3.177106E-02 3.113599E-02 3.050805E-02 2.988443E-02 2.926735E-02 2.865801E-02 2.805522E-02 2.745935E-02 2.686814E-02 2.628246E-02 2.570237E-02 2.512718E-02 2.455593E-02 2.398965E-02 2.342880E-02 2.287103E-02 2.231723E-02 2.176776E-02 2.122170E-02 2.068003E-02 2.014198E-02 1.960977E-02 1.907772E-02 1.854728E-02 1.801887E-02 1.748962E-02 1.695993E-02 1.643143E-02 1.590370E-02 1.537477E-02 1.484596E-02 1.431719E-02 1.378920E-02 1.325965E-02 1.272888E-02 1.219583E-02 1.165898E-02 1.112127E-02 1.058125E-02 1.003959E-02 9.496352E-03 8.951829E-03 8.407632E-03 7.862190E-03 7.316315E-03 6.771949E-03 6.230053E-03 5.691332E-03 5.158827E-03 4.632475E-03 4.116557E-03 3.612428E-03 3.123649E-03 2.653378E-03 2.206295E-03 1.786571E-03 1.399377E-03 1.049715E-03 7.432987E-04 4.856046E-04 2.814512E-04 1.341394E-04 4.396024E-05 5.137107E-06 1.000000E-30 1.000000E-30 0.000000E+00 5.766681E-02 5.676547E-02 5.587191E-02 5.498631E-02 5.410990E-02 5.324193E-02 5.238082E-02 5.152778E-02 5.068335E-02 4.984557E-02 4.901538E-02 4.819348E-02 4.737908E-02 4.657206E-02 4.577399E-02 4.498552E-02 4.420558E-02 4.343469E-02 4.267161E-02 4.191682E-02 4.116965E-02 4.042964E-02 3.969686E-02 3.896965E-02 3.824566E-02 3.753036E-02 3.682527E-02 3.612823E-02 3.543916E-02 3.475787E-02 3.408423E-02 3.341714E-02 3.275757E-02 3.210558E-02 3.146011E-02 3.082278E-02 3.019165E-02 2.956592E-02 2.894695E-02 2.833558E-02 2.773117E-02 2.713229E-02 2.653845E-02 2.595095E-02 2.536818E-02 2.478959E-02 2.421520E-02 2.364688E-02 2.308257E-02 2.252131E-02 2.196518E-02 2.141198E-02 2.086223E-02 2.031649E-02 1.977600E-02 1.923900E-02 1.870252E-02 1.816809E-02 1.763399E-02 1.709870E-02 1.656439E-02 1.603134E-02 1.549758E-02 1.496248E-02 1.442880E-02 1.389526E-02 1.336051E-02 1.282518E-02 1.228815E-02 1.174775E-02 1.120539E-02 1.066179E-02 1.011582E-02 9.569258E-03 9.020977E-03 8.473191E-03 7.924967E-03 7.375509E-03 6.827991E-03 6.283193E-03 5.742298E-03 5.206341E-03 4.677782E-03 4.158541E-03 3.651753E-03 3.160077E-03 2.687242E-03 2.237093E-03 1.814136E-03 1.423812E-03 1.070783E-03 7.608238E-04 4.995625E-04 2.917478E-04 1.408723E-04 4.743663E-05 6.145272E-06 1.000000E-30 1.000000E-30 0.000000E+00 5.834494E-02 5.743179E-02 5.652688E-02 5.563011E-02 5.474123E-02 5.386066E-02 5.298872E-02 5.212421E-02 5.126829E-02 5.041975E-02 4.957837E-02 4.874545E-02 4.792042E-02 4.710075E-02 4.629076E-02 4.549103E-02 4.470005E-02 4.391824E-02 4.314448E-02 4.237885E-02 4.162103E-02 4.087135E-02 4.012934E-02 3.939356E-02 3.866312E-02 3.793728E-02 3.722085E-02 3.651282E-02 3.581370E-02 3.512278E-02 3.443974E-02 3.376322E-02 3.309472E-02 3.243349E-02 3.177928E-02 3.113239E-02 3.049166E-02 2.985846E-02 2.923145E-02 2.861086E-02 2.799759E-02 2.739084E-02 2.678918E-02 2.619383E-02 2.560395E-02 2.501784E-02 2.443673E-02 2.386044E-02 2.328909E-02 2.272108E-02 2.215810E-02 2.159796E-02 2.104146E-02 2.048822E-02 1.993879E-02 1.939570E-02 1.885403E-02 1.831364E-02 1.777427E-02 1.723406E-02 1.669395E-02 1.615562E-02 1.561708E-02 1.507674E-02 1.453695E-02 1.399860E-02 1.345849E-02 1.291885E-02 1.237760E-02 1.183380E-02 1.128708E-02 1.073956E-02 1.019021E-02 9.639679E-03 9.087902E-03 8.536304E-03 7.985378E-03 7.432965E-03 6.882051E-03 6.334581E-03 5.791408E-03 5.251904E-03 4.721361E-03 4.198937E-03 3.689716E-03 3.195143E-03 2.719905E-03 2.266762E-03 1.840895E-03 1.447481E-03 1.091192E-03 7.778645E-04 5.131710E-04 3.018307E-04 1.475079E-04 5.092498E-05 7.207160E-06 1.000000E-30 1.000000E-30 0.000000E+00 5.901442E-02 5.808694E-02 5.716998E-02 5.626233E-02 5.536253E-02 5.447004E-02 5.358580E-02 5.271047E-02 5.184330E-02 5.098378E-02 5.013153E-02 4.928810E-02 4.845236E-02 4.762267E-02 4.679991E-02 4.598804E-02 4.518614E-02 4.439353E-02 4.360924E-02 4.283317E-02 4.206492E-02 4.130476E-02 4.055343E-02 3.980881E-02 3.907028E-02 3.833745E-02 3.761060E-02 3.689204E-02 3.618179E-02 3.548135E-02 3.478877E-02 3.410321E-02 3.342551E-02 3.275542E-02 3.209265E-02 3.143692E-02 3.078692E-02 3.014511E-02 2.950986E-02 2.888191E-02 2.825933E-02 2.764389E-02 2.703501E-02 2.643179E-02 2.583481E-02 2.524132E-02 2.465324E-02 2.406988E-02 2.349100E-02 2.291688E-02 2.234677E-02 2.177997E-02 2.121691E-02 2.065657E-02 2.010013E-02 1.954832E-02 1.900166E-02 1.845562E-02 1.791066E-02 1.736595E-02 1.682035E-02 1.627659E-02 1.573319E-02 1.518818E-02 1.464255E-02 1.409974E-02 1.355423E-02 1.300973E-02 1.246407E-02 1.191695E-02 1.136661E-02 1.081487E-02 1.026230E-02 9.707672E-03 9.153048E-03 8.597597E-03 8.043496E-03 7.488623E-03 6.934445E-03 6.384241E-03 5.838600E-03 5.295672E-03 4.763256E-03 4.237996E-03 3.726328E-03 3.229146E-03 2.751241E-03 2.295414E-03 1.866746E-03 1.470406E-03 1.111023E-03 7.944364E-04 5.264456E-04 3.116927E-04 1.540506E-04 5.443691E-05 8.316424E-06 1.000000E-30 1.000000E-30 0.000000E+00 5.967403E-02 5.873446E-02 5.780404E-02 5.688318E-02 5.597262E-02 5.506964E-02 5.417377E-02 5.328672E-02 5.240904E-02 5.153820E-02 5.067541E-02 4.982112E-02 4.897514E-02 4.813542E-02 4.730233E-02 4.647830E-02 4.566420E-02 4.486092E-02 4.406622E-02 4.327980E-02 4.250149E-02 4.173114E-02 4.096957E-02 4.021591E-02 3.946906E-02 3.872886E-02 3.799409E-02 3.726543E-02 3.654522E-02 3.583364E-02 3.513182E-02 3.443725E-02 3.375037E-02 3.307179E-02 3.239997E-02 3.173614E-02 3.107778E-02 3.042656E-02 2.978327E-02 2.914707E-02 2.851719E-02 2.789247E-02 2.727589E-02 2.666516E-02 2.606058E-02 2.546036E-02 2.486501E-02 2.427530E-02 2.368938E-02 2.310775E-02 2.253155E-02 2.195816E-02 2.138862E-02 2.082195E-02 2.025811E-02 1.969923E-02 1.914536E-02 1.859432E-02 1.804383E-02 1.749425E-02 1.694380E-02 1.639456E-02 1.584645E-02 1.529685E-02 1.474611E-02 1.419799E-02 1.364795E-02 1.309825E-02 1.254821E-02 1.199743E-02 1.144380E-02 1.088791E-02 1.033195E-02 9.773849E-03 9.215983E-03 8.657145E-03 8.099476E-03 7.542241E-03 6.985004E-03 6.432075E-03 5.883914E-03 5.338452E-03 4.803575E-03 4.275941E-03 3.761576E-03 3.261943E-03 2.781424E-03 2.323183E-03 1.891705E-03 1.492487E-03 1.130240E-03 8.105114E-04 5.393931E-04 3.213526E-04 1.604902E-04 5.793693E-05 9.465118E-06 1.000000E-30 1.000000E-30 0.000000E+00 6.032274E-02 5.937200E-02 5.842964E-02 5.749657E-02 5.657254E-02 5.565859E-02 5.475250E-02 5.385400E-02 5.296510E-02 5.208433E-02 5.120995E-02 5.034564E-02 4.948917E-02 4.863945E-02 4.779703E-02 4.696187E-02 4.613635E-02 4.532075E-02 4.451575E-02 4.371907E-02 4.293078E-02 4.215061E-02 4.137926E-02 4.061571E-02 3.985986E-02 3.911165E-02 3.837046E-02 3.763293E-02 3.690302E-02 3.618171E-02 3.546936E-02 3.476540E-02 3.406977E-02 3.338252E-02 3.270208E-02 3.203002E-02 3.136321E-02 3.070428E-02 3.005159E-02 2.940734E-02 2.877055E-02 2.813741E-02 2.751186E-02 2.689406E-02 2.628199E-02 2.567497E-02 2.507252E-02 2.447588E-02 2.388380E-02 2.329507E-02 2.271280E-02 2.213270E-02 2.155666E-02 2.098398E-02 2.041395E-02 1.984762E-02 1.928626E-02 1.872959E-02 1.817394E-02 1.761902E-02 1.706433E-02 1.650978E-02 1.595675E-02 1.540259E-02 1.484717E-02 1.429386E-02 1.373924E-02 1.318459E-02 1.263005E-02 1.207554E-02 1.151876E-02 1.095944E-02 1.039935E-02 9.838149E-03 9.276817E-03 8.715210E-03 8.153707E-03 7.593868E-03 7.034174E-03 6.478187E-03 5.927731E-03 5.379928E-03 4.842365E-03 4.312679E-03 3.795506E-03 3.293553E-03 2.810509E-03 2.349980E-03 1.915798E-03 1.513802E-03 1.148918E-03 8.261560E-04 5.519903E-04 3.308174E-04 1.668360E-04 6.142328E-05 1.064883E-05 1.000000E-30 1.000000E-30 0.000000E+00 6.096083E-02 5.999926E-02 5.904578E-02 5.810117E-02 5.716576E-02 5.623886E-02 5.532109E-02 5.441255E-02 5.351255E-02 5.262085E-02 5.173704E-02 5.086116E-02 4.999496E-02 4.913526E-02 4.828320E-02 4.743818E-02 4.660180E-02 4.577539E-02 4.495827E-02 4.415132E-02 4.335315E-02 4.256327E-02 4.178232E-02 4.100934E-02 4.024382E-02 3.948696E-02 3.873800E-02 3.799456E-02 3.725511E-02 3.652436E-02 3.580268E-02 3.508852E-02 3.438392E-02 3.368783E-02 3.299918E-02 3.231849E-02 3.164390E-02 3.097676E-02 3.031642E-02 2.966335E-02 2.901837E-02 2.837869E-02 2.774450E-02 2.711880E-02 2.649931E-02 2.588504E-02 2.527616E-02 2.467256E-02 2.407439E-02 2.347909E-02 2.288998E-02 2.230369E-02 2.172139E-02 2.114262E-02 2.056634E-02 1.999372E-02 1.942559E-02 1.886144E-02 1.830101E-02 1.774084E-02 1.718173E-02 1.662237E-02 1.606448E-02 1.550574E-02 1.494590E-02 1.438793E-02 1.382812E-02 1.326978E-02 1.270988E-02 1.215127E-02 1.159117E-02 1.102876E-02 1.046473E-02 9.900692E-03 9.335675E-03 8.771415E-03 8.206492E-03 7.643730E-03 7.081867E-03 6.523018E-03 5.970132E-03 5.419845E-03 4.879667E-03 4.348057E-03 3.828213E-03 3.324145E-03 2.838554E-03 2.375958E-03 1.939194E-03 1.534477E-03 1.167033E-03 8.413936E-04 5.642399E-04 3.400682E-04 1.730799E-04 6.488621E-05 1.186203E-05 1.000000E-30 1.000000E-30 0.000000E+00 6.158945E-02 6.061635E-02 5.965252E-02 5.869667E-02 5.775021E-02 5.681219E-02 5.588239E-02 5.496150E-02 5.405170E-02 5.314923E-02 5.225485E-02 5.136964E-02 5.049256E-02 4.962292E-02 4.876128E-02 4.790748E-02 4.706039E-02 4.622342E-02 4.539599E-02 4.457720E-02 4.376888E-02 4.296934E-02 4.217889E-02 4.139672E-02 4.062203E-02 3.985577E-02 3.909829E-02 3.834767E-02 3.760190E-02 3.686181E-02 3.613079E-02 3.540775E-02 3.469305E-02 3.398825E-02 3.329125E-02 3.260228E-02 3.191991E-02 3.124452E-02 3.057675E-02 2.991575E-02 2.926215E-02 2.861523E-02 2.797385E-02 2.733955E-02 2.671274E-02 2.609123E-02 2.547596E-02 2.486553E-02 2.426055E-02 2.365961E-02 2.306386E-02 2.247152E-02 2.188303E-02 2.129787E-02 2.071589E-02 2.013756E-02 1.956227E-02 1.899186E-02 1.842515E-02 1.785997E-02 1.729624E-02 1.673245E-02 1.616966E-02 1.560616E-02 1.504225E-02 1.447978E-02 1.391493E-02 1.335261E-02 1.278789E-02 1.222507E-02 1.166141E-02 1.109609E-02 1.052856E-02 9.961336E-03 9.393289E-03 8.825854E-03 8.257795E-03 7.691810E-03 7.127937E-03 6.566447E-03 6.011055E-03 5.458383E-03 4.915669E-03 4.382187E-03 3.859989E-03 3.353772E-03 2.865813E-03 2.401029E-03 1.961814E-03 1.554595E-03 1.184533E-03 8.562059E-04 5.761807E-04 3.491057E-04 1.792239E-04 6.835542E-05 1.309954E-05 1.000000E-30 1.000000E-30 0.000000E+00 6.459693E-02 6.357001E-02 6.255239E-02 6.154439E-02 6.054553E-02 5.955602E-02 5.857418E-02 5.760119E-02 5.663758E-02 5.568247E-02 5.473589E-02 5.379934E-02 5.287294E-02 5.195393E-02 5.104511E-02 5.014583E-02 4.925480E-02 4.837149E-02 4.749440E-02 4.662538E-02 4.576695E-02 4.491777E-02 4.407883E-02 4.324961E-02 4.242870E-02 4.161828E-02 4.081786E-02 4.002580E-02 3.924066E-02 3.846337E-02 3.769482E-02 3.693292E-02 3.617632E-02 3.542878E-02 3.468918E-02 3.395895E-02 3.323588E-02 3.252086E-02 3.181526E-02 3.111758E-02 3.042795E-02 2.974393E-02 2.906679E-02 2.839622E-02 2.773212E-02 2.707521E-02 2.642366E-02 2.577904E-02 2.514369E-02 2.451133E-02 2.388593E-02 2.326491E-02 2.264698E-02 2.203306E-02 2.142271E-02 2.081571E-02 2.021286E-02 1.961374E-02 1.901691E-02 1.842260E-02 1.783172E-02 1.724554E-02 1.666214E-02 1.607626E-02 1.549099E-02 1.490891E-02 1.432271E-02 1.373908E-02 1.315477E-02 1.257171E-02 1.198716E-02 1.140542E-02 1.082393E-02 1.024089E-02 9.657811E-03 9.075756E-03 8.494033E-03 7.914489E-03 7.337018E-03 6.765690E-03 6.197391E-03 5.633885E-03 5.081187E-03 4.536180E-03 4.005159E-03 3.487993E-03 2.989988E-03 2.514324E-03 2.065280E-03 1.646598E-03 1.264624E-03 9.245176E-04 6.315522E-04 3.914542E-04 2.085861E-04 8.529422E-05 1.956187E-05 1.000000E-30 1.000000E-30 0.000000E+00 6.741346E-02 6.633421E-02 6.526428E-02 6.420511E-02 6.315601E-02 6.211682E-02 6.108714E-02 6.006613E-02 5.905487E-02 5.805293E-02 5.705875E-02 5.607411E-02 5.510017E-02 5.413505E-02 5.317910E-02 5.223337E-02 5.129813E-02 5.037146E-02 4.945445E-02 4.854505E-02 4.764315E-02 4.674727E-02 4.586225E-02 4.498809E-02 4.412319E-02 4.326872E-02 4.242489E-02 4.159079E-02 4.076477E-02 3.994768E-02 3.914070E-02 3.834135E-02 3.755003E-02 3.676770E-02 3.599329E-02 3.522592E-02 3.446567E-02 3.371361E-02 3.297041E-02 3.223600E-02 3.151029E-02 3.079155E-02 3.008123E-02 2.937827E-02 2.868237E-02 2.799269E-02 2.730839E-02 2.663174E-02 2.596103E-02 2.529740E-02 2.464138E-02 2.399159E-02 2.334738E-02 2.270782E-02 2.207053E-02 2.143843E-02 2.081060E-02 2.018539E-02 1.956357E-02 1.894527E-02 1.832874E-02 1.771571E-02 1.710684E-02 1.650011E-02 1.589591E-02 1.529368E-02 1.469016E-02 1.408875E-02 1.348557E-02 1.288447E-02 1.228356E-02 1.168347E-02 1.108408E-02 1.048743E-02 9.891859E-03 9.296075E-03 8.702005E-03 8.110018E-03 7.521650E-03 6.937467E-03 6.359365E-03 5.786293E-03 5.223502E-03 4.669928E-03 4.129124E-03 3.604116E-03 3.096565E-03 2.612365E-03 2.154041E-03 1.726385E-03 1.334489E-03 9.841869E-04 6.805379E-04 4.293864E-04 2.354361E-04 1.014641E-04 2.640724E-05 7.700273E-07 1.000000E-30 0.000000E+00 7.004034E-02 6.891315E-02 6.779605E-02 6.668944E-02 6.559410E-02 6.450807E-02 6.343126E-02 6.236416E-02 6.130674E-02 6.025955E-02 5.922103E-02 5.819261E-02 5.717398E-02 5.616450E-02 5.516461E-02 5.417544E-02 5.319745E-02 5.222949E-02 5.127194E-02 5.032316E-02 4.938402E-02 4.845228E-02 4.752890E-02 4.661125E-02 4.570353E-02 4.480745E-02 4.392275E-02 4.304880E-02 4.218352E-02 4.132779E-02 4.048203E-02 3.964542E-02 3.881687E-02 3.799851E-02 3.719024E-02 3.639070E-02 3.559881E-02 3.481371E-02 3.403758E-02 3.326910E-02 3.251034E-02 3.175965E-02 3.101637E-02 3.028093E-02 2.955372E-02 2.883384E-02 2.812046E-02 2.741493E-02 2.671616E-02 2.602301E-02 2.533626E-02 2.465689E-02 2.398406E-02 2.331651E-02 2.265630E-02 2.200080E-02 2.134830E-02 2.070143E-02 2.005794E-02 1.941572E-02 1.877743E-02 1.814318E-02 1.751163E-02 1.688194E-02 1.625582E-02 1.563382E-02 1.501322E-02 1.439513E-02 1.377752E-02 1.315988E-02 1.254318E-02 1.192859E-02 1.131412E-02 1.070212E-02 1.009212E-02 9.485652E-03 8.880447E-03 8.277537E-03 7.679129E-03 7.084938E-03 6.496611E-03 5.915366E-03 5.344487E-03 4.782536E-03 4.234602E-03 3.701439E-03 3.187513E-03 2.695436E-03 2.229709E-03 1.794706E-03 1.394533E-03 1.035766E-03 7.234910E-04 4.630007E-04 2.596921E-04 1.165869E-04 3.334636E-05 1.972511E-06 1.000000E-30 0.000000E+00 7.250115E-02 7.132865E-02 7.016689E-02 6.901573E-02 6.787479E-02 6.674419E-02 6.562356E-02 6.451401E-02 6.341407E-02 6.232477E-02 6.124450E-02 6.017394E-02 5.911399E-02 5.806350E-02 5.702050E-02 5.598897E-02 5.496975E-02 5.396114E-02 5.296415E-02 5.197657E-02 5.099920E-02 5.003120E-02 4.907304E-02 4.812494E-02 4.718432E-02 4.625098E-02 4.532517E-02 4.441139E-02 4.350748E-02 4.261502E-02 4.173299E-02 4.086091E-02 3.999747E-02 3.914459E-02 3.830125E-02 3.746777E-02 3.664337E-02 3.582738E-02 3.502093E-02 3.422346E-02 3.343406E-02 3.265279E-02 3.187963E-02 3.111414E-02 3.035791E-02 2.960945E-02 2.886765E-02 2.813351E-02 2.740738E-02 2.668864E-02 2.597613E-02 2.527091E-02 2.457142E-02 2.387732E-02 2.318927E-02 2.250800E-02 2.183479E-02 2.116598E-02 2.050163E-02 1.984086E-02 1.918183E-02 1.852688E-02 1.787671E-02 1.722804E-02 1.658170E-02 1.593980E-02 1.530036E-02 1.466431E-02 1.403193E-02 1.340161E-02 1.277121E-02 1.214205E-02 1.151520E-02 1.089039E-02 1.026778E-02 9.647728E-03 9.032654E-03 8.421210E-03 7.813202E-03 7.210395E-03 6.613730E-03 6.024858E-03 5.446063E-03 4.878161E-03 4.323279E-03 3.784203E-03 3.263792E-03 2.766077E-03 2.294152E-03 1.852603E-03 1.446376E-03 1.080663E-03 7.609731E-04 4.928519E-04 2.815979E-04 1.305753E-04 4.017333E-05 3.515565E-06 1.000000E-30 0.000000E+00 7.483400E-02 7.361963E-02 7.241385E-02 7.121783E-02 7.003368E-02 6.886082E-02 6.769846E-02 6.654788E-02 6.540642E-02 6.427649E-02 6.315643E-02 6.204548E-02 6.094666E-02 5.985830E-02 5.877872E-02 5.770866E-02 5.664829E-02 5.559932E-02 5.456264E-02 5.353691E-02 5.252232E-02 5.151779E-02 5.052382E-02 4.954097E-02 4.856743E-02 4.760338E-02 4.664944E-02 4.570526E-02 4.476608E-02 4.383618E-02 4.291723E-02 4.200934E-02 4.111184E-02 4.022614E-02 3.935077E-02 3.848492E-02 3.762951E-02 3.678143E-02 3.594443E-02 3.511655E-02 3.429888E-02 3.349090E-02 3.268905E-02 3.189590E-02 3.111168E-02 3.033564E-02 2.956742E-02 2.880709E-02 2.805572E-02 2.731106E-02 2.657317E-02 2.584415E-02 2.512067E-02 2.440378E-02 2.369246E-02 2.298685E-02 2.228709E-02 2.159583E-02 2.091155E-02 2.023068E-02 1.955429E-02 1.888144E-02 1.821201E-02 1.754655E-02 1.688378E-02 1.622282E-02 1.556696E-02 1.491428E-02 1.426369E-02 1.361842E-02 1.297634E-02 1.233584E-02 1.169589E-02 1.105973E-02 1.042609E-02 9.795256E-03 9.168576E-03 8.547459E-03 7.931946E-03 7.320607E-03 6.716980E-03 6.121159E-03 5.534856E-03 4.961207E-03 4.400556E-03 3.856260E-03 3.330399E-03 2.827415E-03 2.350233E-03 1.903455E-03 1.491664E-03 1.120053E-03 7.940983E-04 5.195980E-04 3.014444E-04 1.435863E-04 4.679245E-05 5.267254E-06 1.000000E-30 0.000000E+00 7.704599E-02 7.579120E-02 7.454558E-02 7.331104E-02 7.208840E-02 7.087651E-02 6.967405E-02 6.848169E-02 6.730040E-02 6.613123E-02 6.497244E-02 6.382403E-02 6.268773E-02 6.156294E-02 6.044593E-02 5.934001E-02 5.824517E-02 5.715989E-02 5.608561E-02 5.502236E-02 5.397047E-02 5.292935E-02 5.189933E-02 5.088222E-02 4.987548E-02 4.887875E-02 4.789319E-02 4.691852E-02 4.595238E-02 4.499555E-02 4.404731E-02 4.310586E-02 4.217467E-02 4.125509E-02 4.034717E-02 3.944944E-02 3.856396E-02 3.768663E-02 3.682029E-02 3.596388E-02 3.511787E-02 3.428105E-02 3.345265E-02 3.263306E-02 3.182322E-02 3.102188E-02 3.022664E-02 2.944142E-02 2.866554E-02 2.789676E-02 2.713622E-02 2.638373E-02 2.563751E-02 2.489786E-02 2.416466E-02 2.343852E-02 2.271767E-02 2.200373E-02 2.129611E-02 2.059441E-02 1.989939E-02 1.920932E-02 1.852429E-02 1.784196E-02 1.716275E-02 1.648743E-02 1.581535E-02 1.514623E-02 1.448226E-02 1.382047E-02 1.316267E-02 1.251093E-02 1.186147E-02 1.121365E-02 1.056961E-02 9.929441E-03 9.292942E-03 8.662323E-03 8.037041E-03 7.419413E-03 6.808468E-03 6.207055E-03 5.613932E-03 5.034287E-03 4.468792E-03 3.919212E-03 3.389208E-03 2.881114E-03 2.399837E-03 1.948088E-03 1.531466E-03 1.155182E-03 8.237526E-04 5.436777E-04 3.195093E-04 1.556289E-04 5.311970E-05 7.135319E-06 1.000000E-30 0.000000E+00 7.915673E-02 7.786214E-02 7.657739E-02 7.530465E-02 7.404384E-02 7.279442E-02 7.155573E-02 7.032700E-02 6.910968E-02 6.790380E-02 6.670734E-02 6.552169E-02 6.434866E-02 6.318779E-02 6.203521E-02 6.089490E-02 5.976723E-02 5.864953E-02 5.754242E-02 5.644295E-02 5.535475E-02 5.427885E-02 5.321479E-02 5.216318E-02 5.112255E-02 5.009292E-02 4.907562E-02 4.807046E-02 4.707472E-02 4.608866E-02 4.511284E-02 4.414722E-02 4.318978E-02 4.223987E-02 4.130119E-02 4.037362E-02 3.945743E-02 3.855001E-02 3.765395E-02 3.677034E-02 3.589734E-02 3.503469E-02 3.417969E-02 3.333456E-02 3.249857E-02 3.167208E-02 3.085385E-02 3.004369E-02 2.924309E-02 2.845215E-02 2.766792E-02 2.689411E-02 2.612687E-02 2.536600E-02 2.461228E-02 2.386474E-02 2.312410E-02 2.239113E-02 2.166435E-02 2.094239E-02 2.022571E-02 1.951689E-02 1.881522E-02 1.811853E-02 1.742411E-02 1.673319E-02 1.604870E-02 1.536443E-02 1.468561E-02 1.401085E-02 1.334003E-02 1.267258E-02 1.201216E-02 1.135589E-02 1.070153E-02 1.005218E-02 9.407500E-03 8.767665E-03 8.134201E-03 7.507801E-03 6.891513E-03 6.283919E-03 5.685307E-03 5.100543E-03 4.529307E-03 3.975819E-03 3.441019E-03 2.929200E-03 2.443738E-03 1.987979E-03 1.567320E-03 1.186536E-03 8.504335E-04 5.653968E-04 3.360173E-04 1.667880E-04 5.917353E-05 9.056486E-06 1.000000E-30 0.000000E+00 8.117750E-02 7.984442E-02 7.852167E-02 7.721241E-02 7.591484E-02 7.462937E-02 7.335511E-02 7.209104E-02 7.083806E-02 6.959742E-02 6.836700E-02 6.714696E-02 6.593981E-02 6.474378E-02 6.355803E-02 6.238413E-02 6.122302E-02 6.007209E-02 5.893335E-02 5.780586E-02 5.668662E-02 5.557587E-02 5.447740E-02 5.339225E-02 5.231886E-02 5.125763E-02 5.020903E-02 4.917277E-02 4.814679E-02 4.713168E-02 4.612762E-02 4.513438E-02 4.415054E-02 4.317704E-02 4.221434E-02 4.125928E-02 4.031495E-02 3.937995E-02 3.845634E-02 3.754404E-02 3.664357E-02 3.575438E-02 3.487473E-02 3.400490E-02 3.314522E-02 3.229547E-02 3.145206E-02 3.061943E-02 2.979547E-02 2.898131E-02 2.817534E-02 2.737970E-02 2.659146E-02 2.581175E-02 2.503755E-02 2.427066E-02 2.351203E-02 2.275904E-02 2.201367E-02 2.127489E-02 2.054050E-02 1.981229E-02 1.909151E-02 1.837831E-02 1.767004E-02 1.696521E-02 1.626680E-02 1.557064E-02 1.487829E-02 1.419021E-02 1.350733E-02 1.282845E-02 1.215383E-02 1.148643E-02 1.082451E-02 1.016607E-02 9.513223E-03 8.865698E-03 8.224100E-03 7.590606E-03 6.966605E-03 6.354554E-03 5.749871E-03 5.160837E-03 4.584887E-03 4.026608E-03 3.488066E-03 2.972523E-03 2.483180E-03 2.024011E-03 1.599465E-03 1.214696E-03 8.746956E-04 5.851611E-04 3.512041E-04 1.771604E-04 6.492850E-05 1.099033E-05 1.000000E-30 0.000000E+00 8.308861E-02 8.172014E-02 8.036242E-02 7.901654E-02 7.768388E-02 7.636405E-02 7.505549E-02 7.375753E-02 7.247108E-02 7.119703E-02 6.993365E-02 6.868053E-02 6.743959E-02 6.621137E-02 6.499366E-02 6.378824E-02 6.259464E-02 6.141327E-02 6.024471E-02 5.908724E-02 5.793913E-02 5.680094E-02 5.567111E-02 5.455400E-02 5.344941E-02 5.235646E-02 5.127665E-02 5.021023E-02 4.915554E-02 4.811168E-02 4.707917E-02 4.605810E-02 4.504767E-02 4.404847E-02 4.306058E-02 4.208278E-02 4.111615E-02 4.015643E-02 3.920690E-02 3.826833E-02 3.734249E-02 3.642812E-02 3.552305E-02 3.462801E-02 3.374510E-02 3.287240E-02 3.200790E-02 3.115259E-02 3.030747E-02 2.947120E-02 2.864323E-02 2.782741E-02 2.701805E-02 2.621817E-02 2.542670E-02 2.464111E-02 2.386368E-02 2.309494E-02 2.233207E-02 2.157514E-02 2.082524E-02 2.008091E-02 1.934356E-02 1.861350E-02 1.788839E-02 1.717025E-02 1.645948E-02 1.575044E-02 1.504792E-02 1.434758E-02 1.365312E-02 1.296369E-02 1.227902E-02 1.159957E-02 1.092730E-02 1.026248E-02 9.601877E-03 8.947292E-03 8.299435E-03 7.659231E-03 7.029437E-03 6.411355E-03 5.802810E-03 5.209645E-03 4.630019E-03 4.068020E-03 3.526455E-03 3.007741E-03 2.516000E-03 2.053841E-03 1.626453E-03 1.238791E-03 8.955239E-04 6.024426E-04 3.646688E-04 1.865012E-04 7.025297E-05 1.288926E-05 1.000000E-30 0.000000E+00 8.491494E-02 8.351187E-02 8.211823E-02 8.073863E-02 7.937212E-02 7.801946E-02 7.667770E-02 7.534749E-02 7.402866E-02 7.272245E-02 7.142739E-02 7.014303E-02 6.887095E-02 6.761095E-02 6.636137E-02 6.512426E-02 6.390069E-02 6.268980E-02 6.149144E-02 6.030468E-02 5.912893E-02 5.796469E-02 5.680963E-02 5.566542E-02 5.452940E-02 5.340581E-02 5.229655E-02 5.120115E-02 5.011781E-02 4.904560E-02 4.798519E-02 4.693743E-02 4.590047E-02 4.487470E-02 4.386148E-02 4.285957E-02 4.186954E-02 4.088797E-02 3.991737E-02 3.895636E-02 3.800528E-02 3.706707E-02 3.613817E-02 3.522044E-02 3.431391E-02 3.341817E-02 3.253132E-02 3.165533E-02 3.079018E-02 2.993387E-02 2.908612E-02 2.824866E-02 2.742046E-02 2.660043E-02 2.578925E-02 2.498730E-02 2.419285E-02 2.340617E-02 2.262837E-02 2.185621E-02 2.108932E-02 2.033024E-02 1.957813E-02 1.883310E-02 1.809294E-02 1.735884E-02 1.663513E-02 1.591427E-02 1.520067E-02 1.449105E-02 1.378547E-02 1.308548E-02 1.239190E-02 1.170290E-02 1.102062E-02 1.034651E-02 9.679915E-03 9.018788E-03 8.364937E-03 7.719453E-03 7.084294E-03 6.460594E-03 5.847722E-03 5.251318E-03 4.668506E-03 4.103598E-03 3.558923E-03 3.038066E-03 2.543973E-03 2.079388E-03 1.649908E-03 1.259780E-03 9.138247E-04 6.177625E-04 3.767276E-04 1.949991E-04 7.523644E-05 1.473486E-05 1.000000E-30 0.000000E+00 9.998475E-02 9.829577E-02 9.661879E-02 9.495695E-02 9.331034E-02 9.168051E-02 9.006521E-02 8.846258E-02 8.687387E-02 8.529933E-02 8.373930E-02 8.219124E-02 8.065638E-02 7.913660E-02 7.762957E-02 7.613619E-02 7.465824E-02 7.319608E-02 7.174817E-02 7.031474E-02 6.889413E-02 6.748757E-02 6.609267E-02 6.471082E-02 6.334046E-02 6.198342E-02 6.064262E-02 5.931808E-02 5.800924E-02 5.671321E-02 5.543086E-02 5.416348E-02 5.290997E-02 5.166904E-02 5.044364E-02 4.923154E-02 4.803378E-02 4.684862E-02 4.567512E-02 4.451426E-02 4.336471E-02 4.223088E-02 4.111021E-02 4.000270E-02 3.890944E-02 3.783055E-02 3.676401E-02 3.571064E-02 3.467105E-02 3.364461E-02 3.262920E-02 3.162715E-02 3.063825E-02 2.966099E-02 2.869412E-02 2.773935E-02 2.679694E-02 2.586504E-02 2.494647E-02 2.403873E-02 2.313932E-02 2.225145E-02 2.137530E-02 2.051016E-02 1.965353E-02 1.880739E-02 1.797417E-02 1.714969E-02 1.633723E-02 1.553331E-02 1.473887E-02 1.395386E-02 1.318037E-02 1.241649E-02 1.166396E-02 1.092392E-02 1.019708E-02 9.480535E-03 8.776677E-03 8.086412E-03 7.410252E-03 6.750389E-03 6.105809E-03 5.482884E-03 4.877308E-03 4.293144E-03 3.731947E-03 3.197215E-03 2.691705E-03 2.217179E-03 1.777573E-03 1.376994E-03 1.019486E-03 7.096533E-04 4.520558E-04 2.513794E-04 1.106269E-04 2.993271E-05 1.134760E-06 0.000000E+00 1.112897E-01 1.093833E-01 1.074940E-01 1.056204E-01 1.037631E-01 1.019217E-01 1.000972E-01 9.828608E-02 9.649043E-02 9.471033E-02 9.294681E-02 9.119824E-02 8.946527E-02 8.774774E-02 8.604594E-02 8.435848E-02 8.268764E-02 8.103292E-02 7.939463E-02 7.777330E-02 7.616504E-02 7.456975E-02 7.298992E-02 7.142720E-02 6.988262E-02 6.835362E-02 6.684064E-02 6.534534E-02 6.386729E-02 6.240180E-02 6.095136E-02 5.951633E-02 5.809627E-02 5.669038E-02 5.530028E-02 5.392335E-02 5.256105E-02 5.121531E-02 4.988358E-02 4.856985E-02 4.727322E-02 4.599406E-02 4.473108E-02 4.348278E-02 4.224939E-02 4.103271E-02 3.982972E-02 3.864177E-02 3.746852E-02 3.631174E-02 3.516709E-02 3.403673E-02 3.292247E-02 3.182362E-02 3.073860E-02 2.966695E-02 2.861165E-02 2.756985E-02 2.654415E-02 2.553336E-02 2.453387E-02 2.354781E-02 2.257587E-02 2.162079E-02 2.067828E-02 1.974862E-02 1.883292E-02 1.793003E-02 1.704092E-02 1.616424E-02 1.530274E-02 1.445529E-02 1.362128E-02 1.280287E-02 1.200189E-02 1.121429E-02 1.044202E-02 9.685650E-03 8.945026E-03 8.222928E-03 7.520154E-03 6.837704E-03 6.175317E-03 5.535176E-03 4.917058E-03 4.324097E-03 3.757879E-03 3.220965E-03 2.714515E-03 2.240703E-03 1.803473E-03 1.405296E-03 1.049474E-03 7.401721E-04 4.810545E-04 2.761634E-04 1.286533E-04 3.953929E-05 3.322782E-06 0.000000E+00 1.203631E-01 1.182817E-01 1.162172E-01 1.141663E-01 1.121337E-01 1.101198E-01 1.081244E-01 1.061454E-01 1.041829E-01 1.022378E-01 1.003110E-01 9.839942E-02 9.650495E-02 9.462956E-02 9.277110E-02 9.092691E-02 8.909848E-02 8.728867E-02 8.549658E-02 8.372286E-02 8.196469E-02 8.022388E-02 7.849942E-02 7.679236E-02 7.510376E-02 7.342890E-02 7.177012E-02 7.012936E-02 6.850548E-02 6.689542E-02 6.530321E-02 6.372927E-02 6.217325E-02 6.063377E-02 5.911300E-02 5.761025E-02 5.612448E-02 5.465687E-02 5.320401E-02 5.177039E-02 5.035468E-02 4.895728E-02 4.757662E-02 4.621002E-02 4.485719E-02 4.352140E-02 4.220351E-02 4.090165E-02 3.961782E-02 3.835357E-02 3.710610E-02 3.587653E-02 3.466601E-02 3.347094E-02 3.229253E-02 3.112826E-02 2.998152E-02 2.885118E-02 2.773886E-02 2.664286E-02 2.556135E-02 2.449678E-02 2.344885E-02 2.241863E-02 2.140481E-02 2.040492E-02 1.942222E-02 1.845801E-02 1.750838E-02 1.657605E-02 1.566325E-02 1.476656E-02 1.388701E-02 1.302457E-02 1.218101E-02 1.135552E-02 1.054859E-02 9.762187E-03 8.997168E-03 8.253166E-03 7.531199E-03 6.832043E-03 6.155482E-03 5.504797E-03 4.881444E-03 4.286418E-03 3.720035E-03 3.183959E-03 2.681247E-03 2.214073E-03 1.784022E-03 1.392990E-03 1.044963E-03 7.419152E-04 4.876195E-04 2.850508E-04 1.371324E-04 4.505837E-05 5.098798E-06 0.000000E+00 1.280230E-01 1.257915E-01 1.235802E-01 1.213853E-01 1.192114E-01 1.170554E-01 1.149176E-01 1.127961E-01 1.106916E-01 1.086050E-01 1.065379E-01 1.044875E-01 1.024555E-01 1.004427E-01 9.844757E-02 9.646807E-02 9.450753E-02 9.256703E-02 9.064426E-02 8.874167E-02 8.685553E-02 8.498500E-02 8.313064E-02 8.129554E-02 7.948092E-02 7.768458E-02 7.590681E-02 7.414965E-02 7.241259E-02 7.069096E-02 6.898580E-02 6.729899E-02 6.563035E-02 6.397825E-02 6.234451E-02 6.072925E-02 5.912912E-02 5.754904E-02 5.598472E-02 5.444206E-02 5.291935E-02 5.141728E-02 4.993491E-02 4.847007E-02 4.702346E-02 4.559717E-02 4.418917E-02 4.279746E-02 4.142568E-02 4.007287E-02 3.873720E-02 3.741822E-02 3.611867E-02 3.483783E-02 3.357609E-02 3.233219E-02 3.110778E-02 2.990240E-02 2.871720E-02 2.755213E-02 2.640290E-02 2.527165E-02 2.415849E-02 2.306654E-02 2.199185E-02 2.093492E-02 1.989770E-02 1.887987E-02 1.788045E-02 1.690006E-02 1.593900E-02 1.499940E-02 1.407844E-02 1.317887E-02 1.230283E-02 1.144716E-02 1.061335E-02 9.802004E-03 9.013372E-03 8.247899E-03 7.509341E-03 6.797179E-03 6.112638E-03 5.455163E-03 4.826985E-03 4.228635E-03 3.662724E-03 3.130826E-03 2.633545E-03 2.172146E-03 1.749471E-03 1.367778E-03 1.027944E-03 7.329362E-04 4.852291E-04 2.871933E-04 1.411355E-04 4.840206E-05 6.399674E-06 0.000000E+00 1.346042E-01 1.322426E-01 1.299003E-01 1.275746E-01 1.252695E-01 1.229856E-01 1.207230E-01 1.184806E-01 1.162565E-01 1.140514E-01 1.118665E-01 1.096987E-01 1.075486E-01 1.054193E-01 1.033094E-01 1.012137E-01 9.913599E-02 9.708044E-02 9.504442E-02 9.302998E-02 9.103383E-02 8.905686E-02 8.709617E-02 8.515455E-02 8.323405E-02 8.132910E-02 7.944133E-02 7.757457E-02 7.573015E-02 7.390374E-02 7.209683E-02 7.030979E-02 6.854279E-02 6.679273E-02 6.506368E-02 6.335600E-02 6.166787E-02 6.000023E-02 5.834801E-02 5.671695E-02 5.510659E-02 5.351656E-02 5.194271E-02 5.038648E-02 4.885022E-02 4.733635E-02 4.584347E-02 4.436843E-02 4.291492E-02 4.148430E-02 4.007382E-02 3.868306E-02 3.731543E-02 3.596565E-02 3.463524E-02 3.332366E-02 3.203165E-02 3.075893E-02 2.950833E-02 2.828000E-02 2.707115E-02 2.588111E-02 2.471219E-02 2.356704E-02 2.244139E-02 2.133538E-02 2.025037E-02 1.918718E-02 1.814384E-02 1.712445E-02 1.612629E-02 1.515016E-02 1.419692E-02 1.326598E-02 1.236006E-02 1.147686E-02 1.062008E-02 9.788696E-03 8.982983E-03 8.204520E-03 7.453350E-03 6.730426E-03 6.037886E-03 5.374718E-03 4.746102E-03 4.149498E-03 3.586311E-03 3.058281E-03 2.567402E-03 2.115392E-03 1.701953E-03 1.329576E-03 1.000429E-03 7.148432E-04 4.755651E-04 2.837733E-04 1.416186E-04 5.001359E-05 7.260227E-06 0.000000E+00 1.404219E-01 1.379465E-01 1.354948E-01 1.330600E-01 1.306453E-01 1.282522E-01 1.258797E-01 1.235248E-01 1.211875E-01 1.188720E-01 1.165792E-01 1.143048E-01 1.120475E-01 1.098120E-01 1.075979E-01 1.054007E-01 1.032241E-01 1.010696E-01 9.893411E-02 9.681928E-02 9.472390E-02 9.264842E-02 9.059200E-02 8.855603E-02 8.654034E-02 8.454418E-02 8.256789E-02 8.061301E-02 7.868005E-02 7.676300E-02 7.486443E-02 7.298562E-02 7.112663E-02 6.928713E-02 6.746952E-02 6.567455E-02 6.389995E-02 6.214813E-02 6.041306E-02 5.870093E-02 5.701062E-02 5.534376E-02 5.369840E-02 5.207240E-02 5.046615E-02 4.888196E-02 4.731907E-02 4.576971E-02 4.424150E-02 4.273764E-02 4.125484E-02 3.979433E-02 3.835959E-02 3.694530E-02 3.555244E-02 3.418127E-02 3.283204E-02 3.150372E-02 3.019894E-02 2.891677E-02 2.765470E-02 2.641225E-02 2.519299E-02 2.399926E-02 2.282755E-02 2.167612E-02 2.054879E-02 1.944598E-02 1.836503E-02 1.730991E-02 1.627598E-02 1.526745E-02 1.428585E-02 1.332876E-02 1.239742E-02 1.149264E-02 1.061537E-02 9.763678E-03 8.941963E-03 8.149907E-03 7.387605E-03 6.658779E-03 5.960961E-03 5.293179E-03 4.662543E-03 4.065788E-03 3.506928E-03 2.984541E-03 2.500094E-03 2.055393E-03 1.651807E-03 1.289399E-03 9.697466E-04 6.942212E-04 4.631782E-04 2.783654E-04 1.406310E-04 5.081640E-05 7.855706E-06 0.000000E+00 1.456364E-01 1.430580E-01 1.405026E-01 1.379655E-01 1.354526E-01 1.329622E-01 1.304927E-01 1.280414E-01 1.256081E-01 1.231956E-01 1.208051E-01 1.184332E-01 1.160817E-01 1.137542E-01 1.114468E-01 1.091553E-01 1.068854E-01 1.046395E-01 1.024144E-01 1.002116E-01 9.802867E-02 9.586525E-02 9.371819E-02 9.159240E-02 8.949028E-02 8.740880E-02 8.534809E-02 8.331121E-02 8.129792E-02 7.930367E-02 7.732826E-02 7.537258E-02 7.343826E-02 7.152259E-02 6.962988E-02 6.775824E-02 6.590676E-02 6.407599E-02 6.226388E-02 6.047587E-02 5.871178E-02 5.697159E-02 5.525463E-02 5.355798E-02 5.188369E-02 5.023318E-02 4.860508E-02 4.699549E-02 4.541043E-02 4.384894E-02 4.230968E-02 4.079061E-02 3.929304E-02 3.781733E-02 3.636561E-02 3.493729E-02 3.353176E-02 3.215162E-02 3.079615E-02 2.946581E-02 2.815734E-02 2.687055E-02 2.560830E-02 2.437089E-02 2.315809E-02 2.196685E-02 2.080106E-02 1.966256E-02 1.854668E-02 1.745809E-02 1.639427E-02 1.535832E-02 1.434887E-02 1.336643E-02 1.241363E-02 1.148935E-02 1.059384E-02 9.728489E-03 8.893034E-03 8.087519E-03 7.316122E-03 6.579204E-03 5.876707E-03 5.208192E-03 4.576756E-03 3.981271E-03 3.424592E-03 2.907637E-03 2.430776E-03 1.994270E-03 1.599197E-03 1.247067E-03 9.374898E-04 6.712187E-04 4.491936E-04 2.713829E-04 1.384201E-04 5.099005E-05 8.233195E-06 0.000000E+00 1.503618E-01 1.476874E-01 1.450369E-01 1.424046E-01 1.397962E-01 1.372121E-01 1.346530E-01 1.321147E-01 1.295961E-01 1.270984E-01 1.246243E-01 1.221694E-01 1.197328E-01 1.173187E-01 1.149253E-01 1.125498E-01 1.101963E-01 1.078670E-01 1.055599E-01 1.032765E-01 1.010130E-01 9.876923E-02 9.654588E-02 9.434395E-02 9.216380E-02 9.000280E-02 8.786292E-02 8.574703E-02 8.365580E-02 8.158568E-02 7.953653E-02 7.750960E-02 7.550493E-02 7.352012E-02 7.155816E-02 6.961975E-02 6.770216E-02 6.580850E-02 6.393339E-02 6.208225E-02 6.025289E-02 5.844482E-02 5.666143E-02 5.489805E-02 5.315813E-02 5.144450E-02 4.975560E-02 4.808674E-02 4.644247E-02 4.482382E-02 4.322918E-02 4.165728E-02 4.011317E-02 3.859146E-02 3.709065E-02 3.561201E-02 3.415507E-02 3.272475E-02 3.132131E-02 2.994510E-02 2.859238E-02 2.726313E-02 2.596110E-02 2.468610E-02 2.343714E-02 2.221134E-02 2.101092E-02 1.983996E-02 1.869294E-02 1.757513E-02 1.648413E-02 1.542232E-02 1.438877E-02 1.338519E-02 1.241156E-02 1.146825E-02 1.055797E-02 9.678093E-03 8.830840E-03 8.017791E-03 7.237886E-03 6.494482E-03 5.788411E-03 5.116466E-03 4.486959E-03 3.893984E-03 3.341048E-03 2.828833E-03 2.358785E-03 1.931241E-03 1.545509E-03 1.202653E-03 9.035985E-04 6.469921E-04 4.337986E-04 2.631389E-04 1.354285E-04 5.062998E-05 8.435461E-06 0.000000E+00 1.546999E-01 1.519428E-01 1.492095E-01 1.464929E-01 1.437995E-01 1.411299E-01 1.384842E-01 1.358600E-01 1.332582E-01 1.306787E-01 1.281231E-01 1.255874E-01 1.230717E-01 1.205807E-01 1.181135E-01 1.156640E-01 1.132359E-01 1.108309E-01 1.084488E-01 1.060904E-01 1.037520E-01 1.014349E-01 9.913965E-02 9.686590E-02 9.461674E-02 9.238841E-02 9.017874E-02 8.799308E-02 8.583103E-02 8.368955E-02 8.157024E-02 7.947509E-02 7.740349E-02 7.535172E-02 7.332395E-02 7.132092E-02 6.934060E-02 6.738535E-02 6.544846E-02 6.353762E-02 6.165148E-02 5.978991E-02 5.795315E-02 5.613606E-02 5.434111E-02 5.256796E-02 5.081961E-02 4.909319E-02 4.739324E-02 4.572016E-02 4.407295E-02 4.245013E-02 4.085636E-02 3.928564E-02 3.774061E-02 3.621950E-02 3.472202E-02 3.325087E-02 3.180648E-02 3.038638E-02 2.899171E-02 2.762316E-02 2.628252E-02 2.497066E-02 2.368732E-02 2.242870E-02 2.119725E-02 1.999854E-02 1.882281E-02 1.767743E-02 1.656135E-02 1.547629E-02 1.442088E-02 1.339725E-02 1.240532E-02 1.144606E-02 1.051911E-02 9.626681E-03 8.768742E-03 7.945436E-03 7.160153E-03 6.412805E-03 5.702009E-03 5.028789E-03 4.398523E-03 3.808102E-03 3.259719E-03 2.752822E-03 2.288816E-03 1.869025E-03 1.492749E-03 1.159286E-03 8.695881E-04 6.228102E-04 4.179238E-04 2.546900E-04 1.321016E-04 5.006490E-05 8.542232E-06 0.000000E+00 1.587213E-01 1.558819E-01 1.530691E-01 1.502765E-01 1.475068E-01 1.447614E-01 1.420399E-01 1.393405E-01 1.366603E-01 1.340032E-01 1.313727E-01 1.287634E-01 1.261741E-01 1.236090E-01 1.210673E-01 1.185453E-01 1.160463E-01 1.135730E-01 1.111226E-01 1.086940E-01 1.062881E-01 1.039037E-01 1.015411E-01 9.920160E-02 9.688762E-02 9.459299E-02 9.232042E-02 9.007291E-02 8.785063E-02 8.564930E-02 8.346651E-02 8.130646E-02 7.917079E-02 7.705633E-02 7.496695E-02 7.290328E-02 7.086322E-02 6.884952E-02 6.685506E-02 6.488668E-02 6.294250E-02 6.102579E-02 5.913548E-02 5.726685E-02 5.542311E-02 5.360436E-02 5.181092E-02 5.003736E-02 4.828537E-02 4.656115E-02 4.486328E-02 4.319101E-02 4.154992E-02 3.993308E-02 3.834218E-02 3.677807E-02 3.524064E-02 3.373091E-02 3.224818E-02 3.079472E-02 2.936495E-02 2.796069E-02 2.658314E-02 2.523727E-02 2.392113E-02 2.263055E-02 2.136967E-02 2.014258E-02 1.894026E-02 1.777208E-02 1.663234E-02 1.552457E-02 1.444906E-02 1.340669E-02 1.239767E-02 1.142323E-02 1.048341E-02 9.577907E-03 8.708277E-03 7.877772E-03 7.083940E-03 6.332098E-03 5.620246E-03 4.944804E-03 4.314911E-03 3.725625E-03 3.180886E-03 2.679617E-03 2.222077E-03 1.809036E-03 1.441171E-03 1.117156E-03 8.365061E-04 5.988957E-04 4.023565E-04 2.461490E-04 1.286240E-04 4.938788E-05 8.588301E-06 0.000000E+00 1.624478E-01 1.595347E-01 1.566478E-01 1.537829E-01 1.509444E-01 1.481276E-01 1.453352E-01 1.425643E-01 1.398146E-01 1.370875E-01 1.343851E-01 1.317061E-01 1.290492E-01 1.264163E-01 1.238072E-01 1.212175E-01 1.186520E-01 1.161126E-01 1.135966E-01 1.111054E-01 1.086371E-01 1.061894E-01 1.037622E-01 1.013580E-01 9.898020E-02 9.662662E-02 9.429499E-02 9.198891E-02 8.970952E-02 8.745113E-02 8.521270E-02 8.299798E-02 8.080656E-02 7.863687E-02 7.649140E-02 7.437225E-02 7.227441E-02 7.020383E-02 6.815434E-02 6.613279E-02 6.413647E-02 6.216763E-02 6.022523E-02 5.830527E-02 5.641121E-02 5.454510E-02 5.270479E-02 5.088667E-02 4.909607E-02 4.733157E-02 4.559301E-02 4.387628E-02 4.218924E-02 4.052857E-02 3.889558E-02 3.728968E-02 3.571099E-02 3.416264E-02 3.264482E-02 3.115624E-02 2.969365E-02 2.825848E-02 2.685161E-02 2.547627E-02 2.412912E-02 2.280913E-02 2.152088E-02 2.026627E-02 1.904008E-02 1.784767E-02 1.668642E-02 1.556064E-02 1.446526E-02 1.340554E-02 1.238155E-02 1.139221E-02 1.044040E-02 9.524991E-03 8.646178E-03 7.805836E-03 7.007540E-03 6.250065E-03 5.535216E-03 4.860873E-03 4.231272E-03 3.644144E-03 3.102409E-03 2.606508E-03 2.155768E-03 1.750276E-03 1.390064E-03 1.075125E-03 8.037387E-04 5.746933E-04 3.866719E-04 2.372961E-04 1.248612E-04 4.854139E-05 8.574550E-06 0.000000E+00 1.659192E-01 1.629353E-01 1.599779E-01 1.570412E-01 1.541311E-01 1.512493E-01 1.483938E-01 1.455609E-01 1.427491E-01 1.399603E-01 1.371941E-01 1.344486E-01 1.317247E-01 1.290276E-01 1.263563E-01 1.237046E-01 1.210767E-01 1.184750E-01 1.158976E-01 1.133456E-01 1.108174E-01 1.083114E-01 1.058287E-01 1.033675E-01 1.009298E-01 9.851620E-02 9.612647E-02 9.376343E-02 9.142728E-02 8.911390E-02 8.682388E-02 8.455796E-02 8.231653E-02 8.009589E-02 7.789808E-02 7.572796E-02 7.358281E-02 7.146472E-02 6.936526E-02 6.729122E-02 6.524399E-02 6.322602E-02 6.123501E-02 5.926667E-02 5.732550E-02 5.541303E-02 5.352798E-02 5.166556E-02 4.983082E-02 4.802597E-02 4.624820E-02 4.449678E-02 4.277630E-02 4.107872E-02 3.940488E-02 3.775981E-02 3.614328E-02 3.455758E-02 3.300369E-02 3.148105E-02 2.998629E-02 2.852088E-02 2.708500E-02 2.568234E-02 2.431024E-02 2.296565E-02 2.165047E-02 2.037215E-02 1.912230E-02 1.790775E-02 1.672705E-02 1.558083E-02 1.446967E-02 1.339465E-02 1.235535E-02 1.135391E-02 1.039084E-02 9.465082E-03 8.579233E-03 7.732919E-03 6.927524E-03 6.167322E-03 5.449557E-03 4.773887E-03 4.147331E-03 3.562398E-03 3.024745E-03 2.533137E-03 2.089310E-03 1.691642E-03 1.339492E-03 1.033073E-03 7.710168E-04 5.506999E-04 3.708505E-04 2.282330E-04 1.210068E-04 4.758201E-05 8.502774E-06 0.000000E+00 1.691918E-01 1.661403E-01 1.631155E-01 1.601124E-01 1.571361E-01 1.541862E-01 1.512648E-01 1.483691E-01 1.454957E-01 1.426458E-01 1.398223E-01 1.370208E-01 1.342399E-01 1.314852E-01 1.287556E-01 1.260439E-01 1.233564E-01 1.206960E-01 1.180606E-01 1.154528E-01 1.128689E-01 1.103063E-01 1.077670E-01 1.052518E-01 1.027629E-01 1.002955E-01 9.785059E-02 9.543373E-02 9.304468E-02 9.067857E-02 8.833557E-02 8.601829E-02 8.372721E-02 8.145738E-02 7.921336E-02 7.699695E-02 7.480476E-02 7.263947E-02 7.049506E-02 6.837809E-02 6.628870E-02 6.422583E-02 6.218875E-02 6.017508E-02 5.818763E-02 5.623032E-02 5.430169E-02 5.239710E-02 5.052147E-02 4.867600E-02 4.685916E-02 4.506962E-02 4.331290E-02 4.158219E-02 3.987923E-02 3.820204E-02 3.655130E-02 3.493059E-02 3.334202E-02 3.178651E-02 3.026121E-02 2.876462E-02 2.730045E-02 2.587099E-02 2.447364E-02 2.310576E-02 2.176911E-02 2.046894E-02 1.919702E-02 1.796242E-02 1.676155E-02 1.559785E-02 1.447065E-02 1.338010E-02 1.232834E-02 1.131372E-02 1.034050E-02 9.405919E-03 8.511146E-03 7.660022E-03 6.850668E-03 6.085814E-03 5.366633E-03 4.689884E-03 4.063732E-03 3.482768E-03 2.948829E-03 2.462474E-03 2.024115E-03 1.634168E-03 1.290340E-03 9.920670E-04 7.388286E-04 5.271886E-04 3.550998E-04 2.193234E-04 1.171675E-04 4.661595E-05 8.415185E-06 0.000000E+00 1.722701E-01 1.691621E-01 1.660796E-01 1.630168E-01 1.599797E-01 1.569699E-01 1.539850E-01 1.510258E-01 1.480929E-01 1.451842E-01 1.423023E-01 1.394432E-01 1.366061E-01 1.337960E-01 1.310121E-01 1.282486E-01 1.255085E-01 1.227950E-01 1.201071E-01 1.174430E-01 1.148050E-01 1.121900E-01 1.095987E-01 1.070321E-01 1.044932E-01 1.019763E-01 9.948184E-02 9.701359E-02 9.457254E-02 9.215719E-02 8.976571E-02 8.739983E-02 8.506004E-02 8.274371E-02 8.045299E-02 7.819030E-02 7.595247E-02 7.374346E-02 7.155627E-02 6.939777E-02 6.726534E-02 6.516147E-02 6.308721E-02 6.103606E-02 5.900843E-02 5.700828E-02 5.503722E-02 5.309143E-02 5.117548E-02 4.929053E-02 4.743654E-02 4.561009E-02 4.381752E-02 4.205264E-02 4.031728E-02 3.860949E-02 3.693060E-02 3.528242E-02 3.366503E-02 3.207704E-02 3.052109E-02 2.899628E-02 2.750466E-02 2.604800E-02 2.462615E-02 2.323406E-02 2.187597E-02 2.055679E-02 1.926540E-02 1.801175E-02 1.679329E-02 1.561233E-02 1.446891E-02 1.336509E-02 1.229963E-02 1.127477E-02 1.029011E-02 9.347361E-03 8.445735E-03 7.587009E-03 6.774677E-03 6.007486E-03 5.285684E-03 4.608945E-03 3.983023E-03 3.404382E-03 2.874805E-03 2.393471E-03 1.961001E-03 1.577832E-03 1.242195E-03 9.521445E-04 7.071536E-04 5.040739E-04 3.395381E-04 2.105479E-04 1.133157E-04 4.563720E-05 8.314281E-06 0.000000E+00 1.751872E-01 1.720208E-01 1.688826E-01 1.657645E-01 1.626726E-01 1.596064E-01 1.565657E-01 1.535502E-01 1.505589E-01 1.475948E-01 1.446581E-01 1.417436E-01 1.388514E-01 1.359870E-01 1.331498E-01 1.303335E-01 1.275439E-01 1.247805E-01 1.220406E-01 1.193275E-01 1.166399E-01 1.139767E-01 1.113373E-01 1.087197E-01 1.061305E-01 1.035673E-01 1.010274E-01 9.851500E-02 9.602798E-02 9.356409E-02 9.112386E-02 8.871102E-02 8.632541E-02 8.396368E-02 8.162957E-02 7.932390E-02 7.704276E-02 7.479052E-02 7.256104E-02 7.035998E-02 6.818716E-02 6.604489E-02 6.393179E-02 6.184226E-02 5.977929E-02 5.774762E-02 5.574145E-02 5.375549E-02 5.180100E-02 4.987880E-02 4.798699E-02 4.612472E-02 4.429760E-02 4.249876E-02 4.073044E-02 3.899306E-02 3.728495E-02 3.560823E-02 3.396530E-02 3.235378E-02 3.077107E-02 2.921763E-02 2.769941E-02 2.621797E-02 2.477160E-02 2.335634E-02 2.197699E-02 2.063631E-02 1.932811E-02 1.805715E-02 1.682232E-02 1.562552E-02 1.446728E-02 1.334894E-02 1.227191E-02 1.123551E-02 1.024245E-02 9.289698E-03 8.381572E-03 7.517798E-03 6.699418E-03 5.930889E-03 5.207758E-03 4.530119E-03 3.905840E-03 3.327976E-03 2.802888E-03 2.326319E-03 1.899926E-03 1.522860E-03 1.194918E-03 9.132286E-04 6.762253E-04 4.813544E-04 3.243380E-04 2.018395E-04 1.094711E-04 4.465818E-05 8.211015E-06 0.000000E+00 1.779706E-01 1.747459E-01 1.715503E-01 1.683784E-01 1.652326E-01 1.621127E-01 1.590208E-01 1.559529E-01 1.529087E-01 1.498893E-01 1.468987E-01 1.439333E-01 1.409902E-01 1.380750E-01 1.351876E-01 1.323202E-01 1.294784E-01 1.266665E-01 1.238811E-01 1.211212E-01 1.183849E-01 1.156724E-01 1.129856E-01 1.103236E-01 1.076898E-01 1.050820E-01 1.024967E-01 9.993864E-02 9.740941E-02 9.490423E-02 9.242244E-02 8.996518E-02 8.753516E-02 8.512863E-02 8.275037E-02 8.040254E-02 7.808142E-02 7.578903E-02 7.351966E-02 7.127859E-02 6.906626E-02 6.688459E-02 6.473336E-02 6.260623E-02 6.050845E-02 5.844132E-02 5.640242E-02 5.438850E-02 5.240206E-02 5.044372E-02 4.851690E-02 4.661959E-02 4.475873E-02 4.292737E-02 4.112647E-02 3.935732E-02 3.762059E-02 3.591796E-02 3.424736E-02 3.261094E-02 3.100574E-02 2.943059E-02 2.788764E-02 2.638146E-02 2.491223E-02 2.347497E-02 2.207335E-02 2.071395E-02 1.938611E-02 1.809898E-02 1.684920E-02 1.563735E-02 1.446541E-02 1.333447E-02 1.224479E-02 1.119814E-02 1.019545E-02 9.235803E-03 8.319076E-03 7.450545E-03 6.628130E-03 5.855336E-03 5.132375E-03 4.454050E-03 3.830294E-03 3.255087E-03 2.732179E-03 2.261049E-03 1.840093E-03 1.469467E-03 1.148596E-03 8.749799E-04 6.459633E-04 4.589103E-04 3.094022E-04 1.931867E-04 1.056035E-04 4.366789E-05 8.108649E-06 0.000000E+00 1.805986E-01 1.773227E-01 1.740761E-01 1.708533E-01 1.676583E-01 1.644880E-01 1.613455E-01 1.582270E-01 1.551325E-01 1.520623E-01 1.490213E-01 1.460058E-01 1.430148E-01 1.400502E-01 1.371133E-01 1.341983E-01 1.313094E-01 1.284500E-01 1.256180E-01 1.228127E-01 1.200343E-01 1.172765E-01 1.145430E-01 1.118357E-01 1.091572E-01 1.065051E-01 1.038774E-01 1.012795E-01 9.871054E-02 9.616428E-02 9.364146E-02 9.114487E-02 8.867563E-02 8.623023E-02 8.381081E-02 8.142185E-02 7.905974E-02 7.672831E-02 7.441984E-02 7.214171E-02 6.989230E-02 6.767435E-02 6.548613E-02 6.332302E-02 6.118909E-02 5.908713E-02 5.701512E-02 5.496901E-02 5.295349E-02 5.096857E-02 4.901382E-02 4.708388E-02 4.519023E-02 4.332721E-02 4.149638E-02 3.969715E-02 3.792991E-02 3.619937E-02 3.450445E-02 3.284373E-02 3.121441E-02 2.961796E-02 2.805479E-02 2.652872E-02 2.503776E-02 2.357922E-02 2.215861E-02 2.077915E-02 1.943397E-02 1.813045E-02 1.686497E-02 1.564156E-02 1.445585E-02 1.331347E-02 1.221352E-02 1.115640E-02 1.014541E-02 9.178542E-03 8.256578E-03 7.381385E-03 6.556766E-03 5.780852E-03 5.055923E-03 4.379493E-03 3.756386E-03 3.183568E-03 2.663855E-03 2.197309E-03 1.782194E-03 1.418206E-03 1.103896E-03 8.379315E-04 6.168842E-04 4.372173E-04 2.949703E-04 1.847802E-04 1.018772E-04 4.267609E-05 7.988291E-06 0.000000E+00 1.831063E-01 1.797778E-01 1.764789E-01 1.732045E-01 1.699595E-01 1.667446E-01 1.635570E-01 1.603942E-01 1.572530E-01 1.541355E-01 1.510468E-01 1.479820E-01 1.449411E-01 1.419314E-01 1.389495E-01 1.359897E-01 1.330543E-01 1.301483E-01 1.272698E-01 1.244211E-01 1.215991E-01 1.188019E-01 1.160279E-01 1.132761E-01 1.105546E-01 1.078599E-01 1.051901E-01 1.025497E-01 9.994068E-02 9.735660E-02 9.479696E-02 9.226451E-02 8.975652E-02 8.727272E-02 8.481692E-02 8.239134E-02 7.999248E-02 7.762387E-02 7.527813E-02 7.296232E-02 7.067647E-02 6.842293E-02 6.620058E-02 6.400353E-02 6.183588E-02 5.969974E-02 5.759514E-02 5.551640E-02 5.346963E-02 5.145590E-02 4.947380E-02 4.752048E-02 4.560181E-02 4.370768E-02 4.184702E-02 4.001974E-02 3.822458E-02 3.646610E-02 3.474434E-02 3.305958E-02 3.140813E-02 2.978922E-02 2.820615E-02 2.666093E-02 2.515251E-02 2.367567E-02 2.223527E-02 2.083931E-02 1.947588E-02 1.815634E-02 1.687718E-02 1.563897E-02 1.444358E-02 1.328911E-02 1.217954E-02 1.111397E-02 1.009419E-02 9.120708E-03 8.193593E-03 7.314167E-03 6.484614E-03 5.708682E-03 4.981261E-03 4.304955E-03 3.684346E-03 3.113867E-03 2.597780E-03 2.134745E-03 1.725827E-03 1.367981E-03 1.060476E-03 8.018020E-04 5.885502E-04 4.162418E-04 2.809259E-04 1.765863E-04 9.825897E-05 4.173054E-05 7.873855E-06 0.000000E+00 2.034582E-01 1.997200E-01 1.960142E-01 1.923334E-01 1.886866E-01 1.850747E-01 1.814937E-01 1.779395E-01 1.744109E-01 1.709091E-01 1.674367E-01 1.639910E-01 1.605706E-01 1.571839E-01 1.538299E-01 1.505004E-01 1.472004E-01 1.439312E-01 1.406928E-01 1.374852E-01 1.343091E-01 1.311616E-01 1.280432E-01 1.249488E-01 1.218838E-01 1.188490E-01 1.158438E-01 1.128713E-01 1.099322E-01 1.070214E-01 1.041383E-01 1.012868E-01 9.846547E-02 9.566820E-02 9.290148E-02 9.016985E-02 8.746921E-02 8.480292E-02 8.216423E-02 7.955900E-02 7.698643E-02 7.445058E-02 7.194991E-02 6.947844E-02 6.704048E-02 6.463784E-02 6.227059E-02 5.993364E-02 5.763306E-02 5.537159E-02 5.314655E-02 5.095630E-02 4.880629E-02 4.668738E-02 4.460157E-02 4.255523E-02 4.054704E-02 3.858158E-02 3.665851E-02 3.477917E-02 3.293911E-02 3.113866E-02 2.938016E-02 2.766768E-02 2.599840E-02 2.436803E-02 2.277875E-02 2.124204E-02 1.974602E-02 1.830164E-02 1.690699E-02 1.556178E-02 1.426690E-02 1.302402E-02 1.183341E-02 1.069579E-02 9.612522E-03 8.584896E-03 7.613887E-03 6.700129E-03 5.845702E-03 5.053868E-03 4.321347E-03 3.648021E-03 3.041896E-03 2.493801E-03 2.010215E-03 1.587500E-03 1.226903E-03 9.242966E-04 6.774641E-04 4.831947E-04 3.363367E-04 2.295383E-04 1.554468E-04 1.040652E-04 6.625933E-05 3.375487E-05 7.129559E-06 0.000000E+00 2.184471E-01 2.144068E-01 2.104016E-01 2.064248E-01 2.024799E-01 1.985678E-01 1.946879E-01 1.908386E-01 1.870170E-01 1.832272E-01 1.794724E-01 1.757506E-01 1.720557E-01 1.683947E-01 1.647681E-01 1.611682E-01 1.575991E-01 1.540625E-01 1.505624E-01 1.470958E-01 1.436580E-01 1.402465E-01 1.368662E-01 1.335164E-01 1.302014E-01 1.269187E-01 1.236662E-01 1.204483E-01 1.172633E-01 1.141100E-01 1.109855E-01 1.078929E-01 1.048332E-01 1.018026E-01 9.880851E-02 9.585409E-02 9.293311E-02 9.004917E-02 8.719371E-02 8.437437E-02 8.158952E-02 7.884328E-02 7.613581E-02 7.345963E-02 7.082035E-02 6.822160E-02 6.566118E-02 6.313275E-02 6.064224E-02 5.819278E-02 5.577944E-02 5.340356E-02 5.107497E-02 4.878645E-02 4.654073E-02 4.433586E-02 4.217395E-02 4.006012E-02 3.799058E-02 3.596758E-02 3.399047E-02 3.205515E-02 3.016483E-02 2.832153E-02 2.652890E-02 2.478285E-02 2.308823E-02 2.145147E-02 1.986241E-02 1.832912E-02 1.684969E-02 1.542524E-02 1.405811E-02 1.274709E-02 1.149422E-02 1.030371E-02 9.177679E-03 8.111670E-03 7.108955E-03 6.171206E-03 5.301975E-03 4.498640E-03 3.766178E-03 3.098644E-03 2.504641E-03 1.978282E-03 1.521513E-03 1.134841E-03 8.135911E-04 5.570422E-04 3.607560E-04 2.201465E-04 1.277803E-04 7.534864E-05 5.205349E-05 4.487114E-05 4.090512E-05 2.847866E-05 7.228384E-06 0.000000E+00 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/diffraction/2007/h12007jetsdpdf_gluon.data����������������������������������0000755�0001750�0001750�00000347144�11754474775�024715� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������-6.907755E+00-6.837980E+00-6.768205E+00-6.698429E+00-6.628654E+00-6.558879E+00 -6.489103E+00-6.419328E+00-6.349553E+00-6.279778E+00-6.210002E+00-6.140227E+00 -6.070452E+00-6.000676E+00-5.930901E+00-5.861126E+00-5.791350E+00-5.721575E+00 -5.651800E+00-5.582024E+00-5.512249E+00-5.442474E+00-5.372699E+00-5.302923E+00 -5.233148E+00-5.163373E+00-5.093597E+00-5.023822E+00-4.954047E+00-4.884271E+00 -4.814496E+00-4.744721E+00-4.674945E+00-4.605170E+00-4.535395E+00-4.465620E+00 -4.395844E+00-4.326069E+00-4.256294E+00-4.186518E+00-4.116743E+00-4.046968E+00 -3.977192E+00-3.907417E+00-3.837642E+00-3.767867E+00-3.698091E+00-3.628316E+00 -3.558541E+00-3.488765E+00-3.418990E+00-3.349215E+00-3.279439E+00-3.209664E+00 -3.139889E+00-3.070113E+00-3.000338E+00-2.930563E+00-2.860788E+00-2.791012E+00 -2.721237E+00-2.651462E+00-2.581686E+00-2.511911E+00-2.442136E+00-2.372360E+00 -2.302585E+00-2.232810E+00-2.163034E+00-2.093259E+00-2.023484E+00-1.953709E+00 -1.883933E+00-1.814158E+00-1.744383E+00-1.674607E+00-1.604832E+00-1.535057E+00 -1.465281E+00-1.395506E+00-1.325731E+00-1.255956E+00-1.186180E+00-1.116405E+00 -1.046630E+00-9.768543E-01-9.070790E-01-8.373037E-01-7.675284E-01-6.977531E-01 -6.279778E-01-5.582024E-01-4.884271E-01-4.186518E-01-3.488765E-01-2.791012E-01 -2.093259E-01-1.395506E-01-6.977531E-02 0.000000E+00 1.96000E+00 2.00000E+00 2.10000E+00 2.20000E+00 2.30000E+00 2.40000E+00 2.50000E+00 3.00000E+00 3.50000E+00 4.00000E+00 4.50000E+00 5.00000E+00 6.00000E+00 7.00000E+00 8.00000E+00 9.00000E+00 1.00000E+01 1.10000E+01 1.20000E+01 1.30000E+01 1.40000E+01 1.50000E+01 1.60000E+01 1.70000E+01 1.80000E+01 1.90000E+01 2.00000E+01 2.02500E+01 2.10000E+01 2.20000E+01 2.30000E+01 2.40000E+01 2.50000E+01 2.60000E+01 2.70000E+01 2.80000E+01 2.90000E+01 3.00000E+01 3.10000E+01 3.20000E+01 3.30000E+01 3.40000E+01 3.50000E+01 3.60000E+01 3.70000E+01 3.80000E+01 3.90000E+01 4.00000E+01 4.10000E+01 4.20000E+01 4.30000E+01 4.40000E+01 4.50000E+01 4.60000E+01 4.70000E+01 4.80000E+01 4.90000E+01 5.00000E+01 5.50000E+01 6.00000E+01 6.50000E+01 7.00000E+01 7.50000E+01 8.00000E+01 8.50000E+01 9.00000E+01 9.50000E+01 1.00000E+02 1.50000E+02 2.00000E+02 2.50000E+02 3.00000E+02 3.50000E+02 4.00000E+02 4.50000E+02 5.00000E+02 5.50000E+02 6.00000E+02 6.50000E+02 7.00000E+02 7.50000E+02 8.00000E+02 8.50000E+02 9.00000E+02 9.50000E+02 1.00000E+03 1.50000E+03 2.00000E+03 -2.287932E-02-2.076830E-02-1.859878E-02-1.636934E-02-1.407851E-02-1.172479E-02 -9.306679E-03-6.822604E-03-4.270984E-03-1.650200E-03 1.041399E-03 3.805492E-03 6.643792E-03 9.558042E-03 1.255001E-02 1.562151E-02 1.877435E-02 2.201041E-02 2.533156E-02 2.873971E-02 3.223680E-02 3.582477E-02 3.950561E-02 4.328129E-02 4.715385E-02 5.112528E-02 5.519762E-02 5.937291E-02 6.365320E-02 6.804053E-02 7.253694E-02 7.714448E-02 8.186520E-02 8.670117E-02 9.165449E-02 9.672709E-02 1.019207E-01 1.072371E-01 1.126778E-01 1.182444E-01 1.239383E-01 1.297606E-01 1.357126E-01 1.417951E-01 1.480090E-01 1.543547E-01 1.608325E-01 1.674421E-01 1.741831E-01 1.810547E-01 1.880557E-01 1.951843E-01 2.024381E-01 2.098143E-01 2.173092E-01 2.249187E-01 2.326375E-01 2.404595E-01 2.483776E-01 2.563836E-01 2.644679E-01 2.726196E-01 2.808263E-01 2.890737E-01 2.973456E-01 3.056239E-01 3.138879E-01 3.221144E-01 3.302774E-01 3.383474E-01 3.462918E-01 3.540735E-01 3.616515E-01 3.689797E-01 3.760065E-01 3.826744E-01 3.889191E-01 3.946687E-01 3.998431E-01 4.043524E-01 4.080963E-01 4.109625E-01 4.128251E-01 4.135428E-01 4.129568E-01 4.108879E-01 4.071337E-01 4.014648E-01 3.936191E-01 3.832966E-01 3.701502E-01 3.537742E-01 3.336881E-01 3.093106E-01 2.799181E-01 2.445693E-01 2.019508E-01 1.499971E-01 8.417272E-02 0.000000E+00 -1.458115E-02-1.245265E-02-1.026657E-02-8.021520E-03-5.716069E-03-3.348763E-03 -9.181165E-04 1.577386E-03 4.139290E-03 6.769172E-03 9.468639E-03 1.223933E-02 1.508290E-02 1.800106E-02 2.099552E-02 2.406804E-02 2.722039E-02 3.045437E-02 3.377182E-02 3.717459E-02 4.066455E-02 4.424359E-02 4.791363E-02 5.167659E-02 5.553441E-02 5.948906E-02 6.354248E-02 6.769664E-02 7.195351E-02 7.631506E-02 8.078326E-02 8.536005E-02 9.004741E-02 9.484731E-02 9.976173E-02 1.047925E-01 1.099413E-01 1.152097E-01 1.205993E-01 1.261114E-01 1.317474E-01 1.375083E-01 1.433953E-01 1.494090E-01 1.555503E-01 1.618194E-01 1.682165E-01 1.747412E-01 1.813929E-01 1.881708E-01 1.950734E-01 2.020989E-01 2.092448E-01 2.165080E-01 2.238849E-01 2.313711E-01 2.389611E-01 2.466489E-01 2.544270E-01 2.622873E-01 2.702199E-01 2.782138E-01 2.862564E-01 2.943333E-01 3.024284E-01 3.105231E-01 3.185968E-01 3.266262E-01 3.345850E-01 3.424438E-01 3.501697E-01 3.577258E-01 3.650707E-01 3.721585E-01 3.789374E-01 3.853501E-01 3.913322E-01 3.968120E-01 4.017094E-01 4.059348E-01 4.093881E-01 4.119575E-01 4.135175E-01 4.139274E-01 4.130294E-01 4.106454E-01 4.065745E-01 4.005889E-01 3.924292E-01 3.817985E-01 3.683538E-01 3.516951E-01 3.313496E-01 3.067469E-01 2.771791E-01 2.417295E-01 1.991261E-01 1.473811E-01 8.220419E-02 0.000000E+00 6.140558E-03 8.294380E-03 1.050354E-02 1.276934E-02 1.509313E-02 1.747628E-02 1.992018E-02 2.242626E-02 2.499596E-02 2.763077E-02 3.033219E-02 3.310176E-02 3.594102E-02 3.885157E-02 4.183502E-02 4.489299E-02 4.802714E-02 5.123916E-02 5.453074E-02 5.790360E-02 6.135948E-02 6.490012E-02 6.852732E-02 7.224283E-02 7.604844E-02 7.994596E-02 8.393718E-02 8.802389E-02 9.220789E-02 9.649096E-02 1.008749E-01 1.053614E-01 1.099524E-01 1.146494E-01 1.194543E-01 1.243686E-01 1.293939E-01 1.345314E-01 1.397826E-01 1.451485E-01 1.506302E-01 1.562286E-01 1.619446E-01 1.677785E-01 1.737309E-01 1.798019E-01 1.859911E-01 1.922982E-01 1.987221E-01 2.052617E-01 2.119153E-01 2.186808E-01 2.255553E-01 2.325355E-01 2.396175E-01 2.467964E-01 2.540667E-01 2.614218E-01 2.688542E-01 2.763550E-01 2.839145E-01 2.915211E-01 2.991620E-01 3.068225E-01 3.144861E-01 3.221341E-01 3.297454E-01 3.372965E-01 3.447610E-01 3.521092E-01 3.593079E-01 3.663202E-01 3.731045E-01 3.796147E-01 3.857992E-01 3.916005E-01 3.969546E-01 4.017899E-01 4.060266E-01 4.095757E-01 4.123380E-01 4.142024E-01 4.150448E-01 4.147263E-01 4.130909E-01 4.099635E-01 4.051467E-01 3.984174E-01 3.895220E-01 3.781712E-01 3.640324E-01 3.467192E-01 3.257774E-01 3.006625E-01 2.707050E-01 2.350467E-01 1.925132E-01 1.413026E-01 7.769174E-02 0.000000E+00 2.677401E-02 2.892961E-02 3.113838E-02 3.340157E-02 3.572044E-02 3.809628E-02 4.053040E-02 4.302415E-02 4.557889E-02 4.819600E-02 5.087691E-02 5.362304E-02 5.643586E-02 5.931686E-02 6.226753E-02 6.528940E-02 6.838403E-02 7.155297E-02 7.479782E-02 7.812016E-02 8.152162E-02 8.500382E-02 8.856840E-02 9.221701E-02 9.595129E-02 9.977290E-02 1.036835E-01 1.076847E-01 1.117782E-01 1.159655E-01 1.202484E-01 1.246283E-01 1.291069E-01 1.336856E-01 1.383661E-01 1.431497E-01 1.480376E-01 1.530311E-01 1.581313E-01 1.633391E-01 1.686553E-01 1.740807E-01 1.796158E-01 1.852610E-01 1.910163E-01 1.968816E-01 2.028564E-01 2.089401E-01 2.151314E-01 2.214289E-01 2.278307E-01 2.343343E-01 2.409367E-01 2.476343E-01 2.544228E-01 2.612971E-01 2.682515E-01 2.752790E-01 2.823720E-01 2.895212E-01 2.967167E-01 3.039466E-01 3.111978E-01 3.184554E-01 3.257026E-01 3.329205E-01 3.400878E-01 3.471808E-01 3.541727E-01 3.610338E-01 3.677308E-01 3.742264E-01 3.804793E-01 3.864431E-01 3.920664E-01 3.972917E-01 4.020550E-01 4.062853E-01 4.099030E-01 4.128198E-01 4.149370E-01 4.161448E-01 4.163202E-01 4.153260E-01 4.130083E-01 4.091948E-01 4.036915E-01 3.962797E-01 3.867115E-01 3.747053E-01 3.599379E-01 3.420362E-01 3.205636E-01 2.950004E-01 2.647130E-01 2.288980E-01 1.864722E-01 1.358059E-01 7.368556E-02 0.000000E+00 4.726547E-02 4.940226E-02 5.159018E-02 5.383039E-02 5.612409E-02 5.847250E-02 6.087685E-02 6.333841E-02 6.585848E-02 6.843834E-02 7.107934E-02 7.378282E-02 7.655016E-02 7.938275E-02 8.228199E-02 8.524933E-02 8.828621E-02 9.139407E-02 9.457443E-02 9.782875E-02 1.011586E-01 1.045653E-01 1.080506E-01 1.116159E-01 1.152628E-01 1.189928E-01 1.228073E-01 1.267080E-01 1.306963E-01 1.347736E-01 1.389415E-01 1.432013E-01 1.475545E-01 1.520025E-01 1.565464E-01 1.611876E-01 1.659272E-01 1.707661E-01 1.757054E-01 1.807457E-01 1.858877E-01 1.911320E-01 1.964788E-01 2.019283E-01 2.074804E-01 2.131348E-01 2.188907E-01 2.247472E-01 2.307030E-01 2.367564E-01 2.429051E-01 2.491465E-01 2.554773E-01 2.618938E-01 2.683914E-01 2.749649E-01 2.816081E-01 2.883139E-01 2.950743E-01 3.018802E-01 3.087209E-01 3.155847E-01 3.224581E-01 3.293260E-01 3.361714E-01 3.429751E-01 3.497158E-01 3.563694E-01 3.629092E-01 3.693052E-01 3.755239E-01 3.815281E-01 3.872763E-01 3.927222E-01 3.978145E-01 4.024957E-01 4.067021E-01 4.103629E-01 4.133991E-01 4.157229E-01 4.172364E-01 4.178306E-01 4.173840E-01 4.157610E-01 4.128098E-01 4.083607E-01 4.022231E-01 3.941824E-01 3.839967E-01 3.713911E-01 3.560521E-01 3.376189E-01 3.156717E-01 2.897145E-01 2.591473E-01 2.232183E-01 1.809291E-01 1.308100E-01 7.010555E-02 0.000000E+00 6.757463E-02 6.967459E-02 7.182372E-02 7.402316E-02 7.627402E-02 7.857745E-02 8.093464E-02 8.334676E-02 8.581505E-02 8.834071E-02 9.092503E-02 9.356926E-02 9.627469E-02 9.904264E-02 1.018744E-01 1.047714E-01 1.077349E-01 1.107663E-01 1.138670E-01 1.170384E-01 1.202819E-01 1.235989E-01 1.269907E-01 1.304590E-01 1.340049E-01 1.376300E-01 1.413356E-01 1.451231E-01 1.489940E-01 1.529495E-01 1.569909E-01 1.611196E-01 1.653367E-01 1.696435E-01 1.740412E-01 1.785307E-01 1.831130E-01 1.877890E-01 1.925595E-01 1.974250E-01 2.023861E-01 2.074430E-01 2.125960E-01 2.178449E-01 2.231895E-01 2.286293E-01 2.341633E-01 2.397904E-01 2.455091E-01 2.513175E-01 2.572131E-01 2.631932E-01 2.692542E-01 2.753922E-01 2.816024E-01 2.878792E-01 2.942165E-01 3.006069E-01 3.070422E-01 3.135129E-01 3.200083E-01 3.265164E-01 3.330236E-01 3.395146E-01 3.459721E-01 3.523769E-01 3.587074E-01 3.649394E-01 3.710460E-01 3.769972E-01 3.827595E-01 3.882954E-01 3.935636E-01 3.985177E-01 4.031065E-01 4.072727E-01 4.109529E-01 4.140765E-01 4.165650E-01 4.183311E-01 4.192779E-01 4.192973E-01 4.182690E-01 4.160590E-01 4.125176E-01 4.074777E-01 4.007519E-01 3.921300E-01 3.813752E-01 3.682196E-01 3.523587E-01 3.334435E-01 3.110704E-01 2.847654E-01 2.539607E-01 2.179527E-01 1.758224E-01 1.262481E-01 6.688754E-02 0.000000E+00 8.767150E-02 8.971878E-02 9.181343E-02 9.395649E-02 9.614906E-02 9.839220E-02 1.006870E-01 1.030347E-01 1.054363E-01 1.078931E-01 1.104061E-01 1.129767E-01 1.156061E-01 1.182954E-01 1.210459E-01 1.238588E-01 1.267356E-01 1.296773E-01 1.326854E-01 1.357612E-01 1.389059E-01 1.421208E-01 1.454073E-01 1.487667E-01 1.522003E-01 1.557093E-01 1.592952E-01 1.629591E-01 1.667024E-01 1.705261E-01 1.744316E-01 1.784200E-01 1.824923E-01 1.866497E-01 1.908931E-01 1.952234E-01 1.996414E-01 2.041479E-01 2.087435E-01 2.134285E-01 2.182035E-01 2.230685E-01 2.280235E-01 2.330684E-01 2.382025E-01 2.434253E-01 2.487357E-01 2.541323E-01 2.596136E-01 2.651772E-01 2.708208E-01 2.765412E-01 2.823348E-01 2.881975E-01 2.941242E-01 3.001093E-01 3.061464E-01 3.122278E-01 3.183454E-01 3.244893E-01 3.306487E-01 3.368115E-01 3.429638E-01 3.490901E-01 3.551731E-01 3.611933E-01 3.671291E-01 3.729562E-01 3.786474E-01 3.841728E-01 3.894988E-01 3.945879E-01 3.993987E-01 4.038850E-01 4.079956E-01 4.116734E-01 4.148553E-01 4.174710E-01 4.194424E-01 4.206830E-01 4.210964E-01 4.205757E-01 4.190018E-01 4.162423E-01 4.121495E-01 4.065588E-01 3.992861E-01 3.901251E-01 3.788441E-01 3.651819E-01 3.488427E-01 3.294888E-01 3.067319E-01 2.801192E-01 2.491128E-01 2.130549E-01 1.711002E-01 1.220648E-01 6.397947E-02 0.000000E+00 1.843867E-01 1.859916E-01 1.876368E-01 1.893228E-01 1.910507E-01 1.928211E-01 1.946351E-01 1.964935E-01 1.983971E-01 2.003469E-01 2.023437E-01 2.043886E-01 2.064823E-01 2.086259E-01 2.108202E-01 2.130662E-01 2.153650E-01 2.177173E-01 2.201242E-01 2.225867E-01 2.251056E-01 2.276819E-01 2.303167E-01 2.330106E-01 2.357648E-01 2.385800E-01 2.414572E-01 2.443972E-01 2.474007E-01 2.504686E-01 2.536014E-01 2.568000E-01 2.600648E-01 2.633963E-01 2.667949E-01 2.702610E-01 2.737949E-01 2.773966E-01 2.810664E-01 2.848042E-01 2.886096E-01 2.924822E-01 2.964215E-01 3.004266E-01 3.044963E-01 3.086293E-01 3.128240E-01 3.170784E-01 3.213901E-01 3.257564E-01 3.301740E-01 3.346393E-01 3.391478E-01 3.436948E-01 3.482747E-01 3.528811E-01 3.575068E-01 3.621438E-01 3.667830E-01 3.714140E-01 3.760255E-01 3.806046E-01 3.851370E-01 3.896065E-01 3.939955E-01 3.982840E-01 4.024498E-01 4.064685E-01 4.103127E-01 4.139521E-01 4.173532E-01 4.204787E-01 4.232874E-01 4.257337E-01 4.277670E-01 4.293315E-01 4.303652E-01 4.307997E-01 4.305595E-01 4.295609E-01 4.277114E-01 4.249088E-01 4.210401E-01 4.159803E-01 4.095910E-01 4.017192E-01 3.921952E-01 3.808312E-01 3.674186E-01 3.517258E-01 3.334951E-01 3.124388E-01 2.882350E-01 2.605219E-01 2.288902E-01 1.928729E-01 1.519304E-01 1.054361E-01 5.282724E-02 0.000000E+00 2.743315E-01 2.753004E-01 2.763050E-01 2.773460E-01 2.784241E-01 2.795399E-01 2.806941E-01 2.818875E-01 2.831207E-01 2.843944E-01 2.857093E-01 2.870663E-01 2.884658E-01 2.899088E-01 2.913959E-01 2.929279E-01 2.945054E-01 2.961293E-01 2.978001E-01 2.995186E-01 3.012856E-01 3.031017E-01 3.049676E-01 3.068838E-01 3.088512E-01 3.108703E-01 3.129416E-01 3.150656E-01 3.172430E-01 3.194740E-01 3.217591E-01 3.240986E-01 3.264928E-01 3.289415E-01 3.314450E-01 3.340032E-01 3.366159E-01 3.392832E-01 3.420046E-01 3.447798E-01 3.476080E-01 3.504885E-01 3.534203E-01 3.564021E-01 3.594323E-01 3.625093E-01 3.656309E-01 3.687948E-01 3.719982E-01 3.752380E-01 3.785105E-01 3.818115E-01 3.851365E-01 3.884799E-01 3.918360E-01 3.951979E-01 3.985581E-01 4.019080E-01 4.052383E-01 4.085383E-01 4.117963E-01 4.149990E-01 4.181318E-01 4.211785E-01 4.241209E-01 4.269391E-01 4.296107E-01 4.321112E-01 4.344133E-01 4.364867E-01 4.382982E-01 4.398108E-01 4.409838E-01 4.417722E-01 4.421265E-01 4.419917E-01 4.413076E-01 4.400077E-01 4.380185E-01 4.352593E-01 4.316412E-01 4.270664E-01 4.214270E-01 4.146049E-01 4.064697E-01 3.968785E-01 3.856742E-01 3.726843E-01 3.577199E-01 3.405739E-01 3.210199E-01 2.988108E-01 2.736781E-01 2.453318E-01 2.134625E-01 1.777483E-01 1.378756E-01 9.361505E-02 4.529989E-02 0.000000E+00 3.576952E-01 3.579223E-01 3.581831E-01 3.584781E-01 3.588079E-01 3.591730E-01 3.595740E-01 3.600114E-01 3.604858E-01 3.609977E-01 3.615477E-01 3.621365E-01 3.627644E-01 3.634322E-01 3.641404E-01 3.648894E-01 3.656800E-01 3.665126E-01 3.673878E-01 3.683061E-01 3.692681E-01 3.702742E-01 3.713248E-01 3.724206E-01 3.735618E-01 3.747490E-01 3.759824E-01 3.772624E-01 3.785892E-01 3.799630E-01 3.813841E-01 3.828523E-01 3.843678E-01 3.859303E-01 3.875394E-01 3.891951E-01 3.908969E-01 3.926446E-01 3.944374E-01 3.962748E-01 3.981557E-01 4.000793E-01 4.020441E-01 4.040486E-01 4.060909E-01 4.081691E-01 4.102808E-01 4.124234E-01 4.145939E-01 4.167888E-01 4.190041E-01 4.212354E-01 4.234779E-01 4.257258E-01 4.279730E-01 4.302125E-01 4.324365E-01 4.346361E-01 4.368019E-01 4.389229E-01 4.409871E-01 4.429812E-01 4.448905E-01 4.466985E-01 4.483871E-01 4.499361E-01 4.513234E-01 4.525244E-01 4.535119E-01 4.542559E-01 4.547235E-01 4.548781E-01 4.546796E-01 4.540837E-01 4.530417E-01 4.515000E-01 4.493996E-01 4.466758E-01 4.432573E-01 4.390660E-01 4.340163E-01 4.280142E-01 4.209568E-01 4.127315E-01 4.032153E-01 3.922740E-01 3.797612E-01 3.655179E-01 3.493716E-01 3.311360E-01 3.106109E-01 2.875829E-01 2.618270E-01 2.331115E-01 2.012063E-01 1.659029E-01 1.270600E-01 8.473997E-02 3.987165E-02 0.000000E+00 4.350590E-01 4.344880E-01 4.339505E-01 4.334470E-01 4.329779E-01 4.325435E-01 4.321445E-01 4.317811E-01 4.314539E-01 4.311634E-01 4.309099E-01 4.306939E-01 4.305158E-01 4.303762E-01 4.302754E-01 4.302138E-01 4.301919E-01 4.302101E-01 4.302688E-01 4.303685E-01 4.305093E-01 4.306918E-01 4.309162E-01 4.311830E-01 4.314922E-01 4.318442E-01 4.322392E-01 4.326772E-01 4.331585E-01 4.336830E-01 4.342507E-01 4.348615E-01 4.355150E-01 4.362109E-01 4.369488E-01 4.377282E-01 4.385486E-01 4.394095E-01 4.403101E-01 4.412494E-01 4.422265E-01 4.432400E-01 4.442884E-01 4.453700E-01 4.464827E-01 4.476244E-01 4.487925E-01 4.499841E-01 4.511961E-01 4.524247E-01 4.536659E-01 4.549150E-01 4.561669E-01 4.574158E-01 4.586554E-01 4.598783E-01 4.610768E-01 4.622418E-01 4.633636E-01 4.644313E-01 4.654326E-01 4.663543E-01 4.671814E-01 4.678974E-01 4.684844E-01 4.689221E-01 4.691884E-01 4.692588E-01 4.691065E-01 4.687016E-01 4.680116E-01 4.670003E-01 4.656282E-01 4.638517E-01 4.616230E-01 4.588896E-01 4.555939E-01 4.516726E-01 4.470566E-01 4.416702E-01 4.354306E-01 4.282473E-01 4.200219E-01 4.106468E-01 4.000053E-01 3.879710E-01 3.744069E-01 3.591654E-01 3.420884E-01 3.230072E-01 3.017440E-01 2.781135E-01 2.519275E-01 2.230019E-01 1.911714E-01 1.563181E-01 1.184353E-01 7.780539E-02 3.576632E-02 0.000000E+00 5.070689E-01 5.056724E-01 5.043107E-01 5.029840E-01 5.016930E-01 5.004377E-01 4.992187E-01 4.980362E-01 4.968906E-01 4.957823E-01 4.947116E-01 4.936788E-01 4.926843E-01 4.917285E-01 4.908116E-01 4.899340E-01 4.890960E-01 4.882980E-01 4.875401E-01 4.868227E-01 4.861459E-01 4.855102E-01 4.849156E-01 4.843624E-01 4.838507E-01 4.833805E-01 4.829521E-01 4.825653E-01 4.822201E-01 4.819164E-01 4.816540E-01 4.814327E-01 4.812520E-01 4.811113E-01 4.810102E-01 4.809479E-01 4.809238E-01 4.809373E-01 4.809874E-01 4.810730E-01 4.811930E-01 4.813459E-01 4.815301E-01 4.817436E-01 4.819842E-01 4.822496E-01 4.825371E-01 4.828437E-01 4.831661E-01 4.835004E-01 4.838423E-01 4.841871E-01 4.845295E-01 4.848637E-01 4.851830E-01 4.854802E-01 4.857473E-01 4.859752E-01 4.861540E-01 4.862726E-01 4.863190E-01 4.862797E-01 4.861397E-01 4.858826E-01 4.854904E-01 4.849429E-01 4.842182E-01 4.832919E-01 4.821373E-01 4.807249E-01 4.790225E-01 4.769944E-01 4.746016E-01 4.718012E-01 4.685463E-01 4.647853E-01 4.604619E-01 4.555143E-01 4.498754E-01 4.434713E-01 4.362222E-01 4.280407E-01 4.188320E-01 4.084934E-01 3.969138E-01 3.839734E-01 3.695437E-01 3.534871E-01 3.356579E-01 3.159029E-01 2.940633E-01 2.699781E-01 2.434900E-01 2.144550E-01 1.827614E-01 1.483654E-01 1.113676E-01 7.221982E-02 3.254823E-02 0.000000E+00 6.373804E-01 6.343138E-01 6.312876E-01 6.283023E-01 6.253580E-01 6.224549E-01 6.195931E-01 6.167729E-01 6.139945E-01 6.112581E-01 6.085638E-01 6.059119E-01 6.033023E-01 6.007355E-01 5.982115E-01 5.957304E-01 5.932924E-01 5.908976E-01 5.885462E-01 5.862381E-01 5.839735E-01 5.817524E-01 5.795748E-01 5.774407E-01 5.753501E-01 5.733028E-01 5.712987E-01 5.693375E-01 5.674191E-01 5.655431E-01 5.637090E-01 5.619163E-01 5.601644E-01 5.584525E-01 5.567798E-01 5.551454E-01 5.535485E-01 5.519882E-01 5.504633E-01 5.489725E-01 5.475145E-01 5.460875E-01 5.446897E-01 5.433188E-01 5.419725E-01 5.406482E-01 5.393430E-01 5.380538E-01 5.367768E-01 5.355082E-01 5.342433E-01 5.329772E-01 5.317046E-01 5.304193E-01 5.291147E-01 5.277832E-01 5.264165E-01 5.250058E-01 5.235409E-01 5.220107E-01 5.204030E-01 5.187042E-01 5.168997E-01 5.149729E-01 5.129058E-01 5.106786E-01 5.082695E-01 5.056546E-01 5.028074E-01 4.996992E-01 4.962983E-01 4.925698E-01 4.884759E-01 4.839749E-01 4.790213E-01 4.735655E-01 4.675533E-01 4.609258E-01 4.536187E-01 4.455624E-01 4.366813E-01 4.268936E-01 4.161113E-01 4.042394E-01 3.911766E-01 3.768144E-01 3.610383E-01 3.437277E-01 3.247576E-01 3.040001E-01 2.813279E-01 2.566192E-01 2.297662E-01 2.006887E-01 1.693587E-01 1.358450E-01 1.004075E-01 6.373689E-02 2.781601E-02 0.000000E+00 7.526482E-01 7.479389E-01 7.432789E-01 7.386683E-01 7.341071E-01 7.295955E-01 7.251334E-01 7.207209E-01 7.163581E-01 7.120450E-01 7.077817E-01 7.035682E-01 6.994044E-01 6.952904E-01 6.912263E-01 6.872120E-01 6.832476E-01 6.793329E-01 6.754678E-01 6.716524E-01 6.678866E-01 6.641703E-01 6.605031E-01 6.568851E-01 6.533160E-01 6.497954E-01 6.463231E-01 6.428987E-01 6.395218E-01 6.361918E-01 6.329082E-01 6.296701E-01 6.264769E-01 6.233276E-01 6.202210E-01 6.171563E-01 6.141324E-01 6.111482E-01 6.082025E-01 6.052937E-01 6.024202E-01 5.995803E-01 5.967718E-01 5.939924E-01 5.912396E-01 5.885105E-01 5.858022E-01 5.831113E-01 5.804341E-01 5.777664E-01 5.751035E-01 5.724403E-01 5.697713E-01 5.670904E-01 5.643906E-01 5.616644E-01 5.589036E-01 5.560989E-01 5.532402E-01 5.503165E-01 5.473155E-01 5.442237E-01 5.410263E-01 5.377070E-01 5.342481E-01 5.306296E-01 5.268303E-01 5.228263E-01 5.185918E-01 5.140984E-01 5.093150E-01 5.042077E-01 4.987394E-01 4.928696E-01 4.865541E-01 4.797449E-01 4.723897E-01 4.644319E-01 4.558099E-01 4.464572E-01 4.363024E-01 4.252681E-01 4.132717E-01 4.002251E-01 3.860345E-01 3.706012E-01 3.538217E-01 3.355894E-01 3.157957E-01 2.943330E-01 2.710987E-01 2.460016E-01 2.189720E-01 1.899782E-01 1.590540E-01 1.263498E-01 9.223618E-02 5.755909E-02 2.449107E-02 0.000000E+00 8.558715E-01 8.495755E-01 8.433394E-01 8.371633E-01 8.310468E-01 8.249901E-01 8.189930E-01 8.130554E-01 8.071772E-01 8.013585E-01 7.955990E-01 7.898987E-01 7.842574E-01 7.786751E-01 7.731516E-01 7.676867E-01 7.622803E-01 7.569322E-01 7.516422E-01 7.464102E-01 7.412359E-01 7.361189E-01 7.310590E-01 7.260559E-01 7.211092E-01 7.162185E-01 7.113834E-01 7.066032E-01 7.018774E-01 6.972054E-01 6.925863E-01 6.880193E-01 6.835034E-01 6.790375E-01 6.746205E-01 6.702512E-01 6.659284E-01 6.616510E-01 6.574174E-01 6.532261E-01 6.490753E-01 6.449630E-01 6.408870E-01 6.368449E-01 6.328340E-01 6.288513E-01 6.248937E-01 6.209578E-01 6.170396E-01 6.131349E-01 6.092389E-01 6.053464E-01 6.014518E-01 5.975487E-01 5.936303E-01 5.896890E-01 5.857162E-01 5.817030E-01 5.776391E-01 5.735134E-01 5.693136E-01 5.650264E-01 5.606370E-01 5.561291E-01 5.514851E-01 5.466855E-01 5.417088E-01 5.365319E-01 5.311291E-01 5.254725E-01 5.195316E-01 5.132731E-01 5.066608E-01 4.996550E-01 4.922128E-01 4.842876E-01 4.758288E-01 4.667816E-01 4.570869E-01 4.466811E-01 4.354957E-01 4.234576E-01 4.104888E-01 3.965066E-01 3.814240E-01 3.651502E-01 3.475911E-01 3.286515E-01 3.082364E-01 2.862549E-01 2.626244E-01 2.372783E-01 2.101774E-01 1.813275E-01 1.508105E-01 1.188380E-01 8.586074E-02 5.282949E-02 2.201710E-02 0.000000E+00 9.492796E-01 9.414627E-01 9.337174E-01 9.260437E-01 9.184412E-01 9.109098E-01 9.034492E-01 8.960593E-01 8.887399E-01 8.814906E-01 8.743114E-01 8.672019E-01 8.601620E-01 8.531912E-01 8.462895E-01 8.394564E-01 8.326917E-01 8.259952E-01 8.193665E-01 8.128051E-01 8.063108E-01 7.998832E-01 7.935218E-01 7.872261E-01 7.809957E-01 7.748300E-01 7.687284E-01 7.626901E-01 7.567146E-01 7.508009E-01 7.449481E-01 7.391554E-01 7.334214E-01 7.277451E-01 7.221251E-01 7.165601E-01 7.110488E-01 7.055900E-01 7.001819E-01 6.948229E-01 6.895111E-01 6.842445E-01 6.790205E-01 6.738368E-01 6.686903E-01 6.635782E-01 6.584972E-01 6.534438E-01 6.484138E-01 6.434029E-01 6.384063E-01 6.334187E-01 6.284343E-01 6.234468E-01 6.184492E-01 6.134338E-01 6.083921E-01 6.033151E-01 5.981923E-01 5.930128E-01 5.877644E-01 5.824335E-01 5.770056E-01 5.714645E-01 5.657926E-01 5.599706E-01 5.539773E-01 5.477897E-01 5.413826E-01 5.347283E-01 5.277970E-01 5.205560E-01 5.129696E-01 5.049992E-01 4.966028E-01 4.877350E-01 4.783467E-01 4.683848E-01 4.577923E-01 4.465079E-01 4.344661E-01 4.215972E-01 4.078273E-01 3.930784E-01 3.772691E-01 3.603155E-01 3.421315E-01 3.226316E-01 3.017322E-01 2.793562E-01 2.554379E-01 2.299308E-01 2.028205E-01 1.741434E-01 1.440192E-01 1.127069E-01 8.071723E-02 4.907354E-02 2.009803E-02 0.000000E+00 1.034554E+00 1.025283E+00 1.016097E+00 1.006994E+00 9.979754E-01 9.890396E-01 9.801866E-01 9.714162E-01 9.627278E-01 9.541214E-01 9.455963E-01 9.371524E-01 9.287891E-01 9.205062E-01 9.123031E-01 9.041797E-01 8.961353E-01 8.881695E-01 8.802820E-01 8.724721E-01 8.647395E-01 8.570836E-01 8.495037E-01 8.419994E-01 8.345699E-01 8.272147E-01 8.199329E-01 8.127238E-01 8.055864E-01 7.985198E-01 7.915231E-01 7.845950E-01 7.777344E-01 7.709398E-01 7.642098E-01 7.575431E-01 7.509382E-01 7.443936E-01 7.379078E-01 7.314788E-01 7.251045E-01 7.187828E-01 7.125113E-01 7.062873E-01 7.001077E-01 6.939695E-01 6.878694E-01 6.818036E-01 6.757681E-01 6.697584E-01 6.637695E-01 6.577961E-01 6.518323E-01 6.458718E-01 6.399074E-01 6.339314E-01 6.279354E-01 6.219101E-01 6.158452E-01 6.097297E-01 6.035513E-01 5.972967E-01 5.909512E-01 5.844988E-01 5.779220E-01 5.712016E-01 5.643166E-01 5.572442E-01 5.499596E-01 5.424355E-01 5.346424E-01 5.265480E-01 5.181175E-01 5.093130E-01 5.000935E-01 4.904144E-01 4.802281E-01 4.694831E-01 4.581240E-01 4.460917E-01 4.333234E-01 4.197522E-01 4.053078E-01 3.899163E-01 3.735014E-01 3.559850E-01 3.372880E-01 3.173329E-01 2.960464E-01 2.733630E-01 2.492310E-01 2.236212E-01 1.965396E-01 1.680479E-01 1.382962E-01 1.075814E-01 7.645982E-02 4.600624E-02 1.856161E-02 0.000000E+00 1.112986E+00 1.102327E+00 1.091765E+00 1.081300E+00 1.070931E+00 1.060658E+00 1.050480E+00 1.040397E+00 1.030409E+00 1.020514E+00 1.010712E+00 1.001004E+00 9.913875E-01 9.818631E-01 9.724301E-01 9.630877E-01 9.538356E-01 9.446732E-01 9.355998E-01 9.266149E-01 9.177178E-01 9.089079E-01 9.001845E-01 8.915468E-01 8.829941E-01 8.745256E-01 8.661404E-01 8.578375E-01 8.496161E-01 8.414749E-01 8.334128E-01 8.254287E-01 8.175211E-01 8.096885E-01 8.019294E-01 7.942423E-01 7.866256E-01 7.790778E-01 7.715971E-01 7.641814E-01 7.568288E-01 7.495368E-01 7.423029E-01 7.351243E-01 7.279979E-01 7.209206E-01 7.138889E-01 7.068989E-01 6.999466E-01 6.930274E-01 6.861362E-01 6.792675E-01 6.724156E-01 6.655738E-01 6.587350E-01 6.518916E-01 6.450348E-01 6.381556E-01 6.312435E-01 6.242875E-01 6.172755E-01 6.101938E-01 6.030282E-01 5.957624E-01 5.883793E-01 5.808595E-01 5.731826E-01 5.653257E-01 5.572643E-01 5.489715E-01 5.404180E-01 5.315723E-01 5.224000E-01 5.128638E-01 5.029234E-01 4.925357E-01 4.816538E-01 4.702276E-01 4.582035E-01 4.455243E-01 4.321292E-01 4.179541E-01 4.029319E-01 3.869923E-01 3.700635E-01 3.520722E-01 3.329458E-01 3.126140E-01 2.910117E-01 2.680839E-01 2.437910E-01 2.181183E-01 1.910894E-01 1.627868E-01 1.333860E-01 1.032144E-01 7.286371E-02 4.344553E-02 1.730069E-02 0.000000E+00 1.185586E+00 1.173601E+00 1.161726E+00 1.149961E+00 1.138304E+00 1.126757E+00 1.115317E+00 1.103985E+00 1.092760E+00 1.081640E+00 1.070627E+00 1.059718E+00 1.048913E+00 1.038212E+00 1.027614E+00 1.017118E+00 1.006724E+00 9.964306E-01 9.862375E-01 9.761439E-01 9.661490E-01 9.562520E-01 9.464521E-01 9.367484E-01 9.271402E-01 9.176263E-01 9.082059E-01 8.988778E-01 8.896410E-01 8.804942E-01 8.714362E-01 8.624656E-01 8.535810E-01 8.447805E-01 8.360627E-01 8.274260E-01 8.188687E-01 8.103890E-01 8.019851E-01 7.936550E-01 7.853963E-01 7.772067E-01 7.690834E-01 7.610236E-01 7.530240E-01 7.450816E-01 7.371926E-01 7.293532E-01 7.215592E-01 7.138059E-01 7.060880E-01 6.984002E-01 6.907365E-01 6.830903E-01 6.754544E-01 6.678210E-01 6.601815E-01 6.525265E-01 6.448458E-01 6.371284E-01 6.293618E-01 6.215329E-01 6.136270E-01 6.056283E-01 5.975193E-01 5.892813E-01 5.808935E-01 5.723336E-01 5.635771E-01 5.545973E-01 5.453656E-01 5.358506E-01 5.260186E-01 5.158329E-01 5.052540E-01 4.942394E-01 4.827435E-01 4.707173E-01 4.581088E-01 4.448623E-01 4.309192E-01 4.162177E-01 4.006934E-01 3.842795E-01 3.669080E-01 3.485101E-01 3.290187E-01 3.083697E-01 2.865058E-01 2.633807E-01 2.389655E-01 2.132580E-01 1.862968E-01 1.581823E-01 1.291112E-01 9.943578E-02 6.977593E-02 4.126934E-02 1.624504E-02 0.000000E+00 1.253159E+00 1.239905E+00 1.226774E+00 1.213767E+00 1.200882E+00 1.188118E+00 1.175475E+00 1.162953E+00 1.150549E+00 1.138264E+00 1.126097E+00 1.114046E+00 1.102112E+00 1.090294E+00 1.078590E+00 1.067000E+00 1.055524E+00 1.044159E+00 1.032906E+00 1.021764E+00 1.010731E+00 9.998071E-01 9.889910E-01 9.782819E-01 9.676785E-01 9.571799E-01 9.467850E-01 9.364926E-01 9.263015E-01 9.162103E-01 9.062176E-01 8.963220E-01 8.865218E-01 8.768154E-01 8.672008E-01 8.576765E-01 8.482407E-01 8.388915E-01 8.296270E-01 8.204449E-01 8.113430E-01 8.023187E-01 7.933692E-01 7.844915E-01 7.756824E-01 7.669384E-01 7.582561E-01 7.496313E-01 7.410597E-01 7.325366E-01 7.240567E-01 7.156146E-01 7.072041E-01 6.988186E-01 6.904508E-01 6.820930E-01 6.737363E-01 6.653715E-01 6.569884E-01 6.485756E-01 6.401210E-01 6.316113E-01 6.230320E-01 6.143672E-01 6.055996E-01 5.967104E-01 5.876790E-01 5.784834E-01 5.690991E-01 5.595000E-01 5.496575E-01 5.395408E-01 5.291164E-01 5.183484E-01 5.071979E-01 4.956232E-01 4.835796E-01 4.710194E-01 4.578915E-01 4.441422E-01 4.297145E-01 4.145488E-01 3.985831E-01 3.817538E-01 3.639961E-01 3.452457E-01 3.254399E-01 3.045205E-01 2.824368E-01 2.591504E-01 2.346418E-01 2.089198E-01 1.820358E-01 1.541058E-01 1.253444E-01 9.612444E-02 6.708844E-02 3.939261E-02 1.534665E-02 0.000000E+00 1.316353E+00 1.301884E+00 1.287552E+00 1.273357E+00 1.259296E+00 1.245370E+00 1.231578E+00 1.217919E+00 1.204391E+00 1.190994E+00 1.177727E+00 1.164590E+00 1.151580E+00 1.138698E+00 1.125943E+00 1.113313E+00 1.100808E+00 1.088427E+00 1.076168E+00 1.064031E+00 1.052014E+00 1.040118E+00 1.028340E+00 1.016679E+00 1.005135E+00 9.937061E-01 9.823911E-01 9.711887E-01 9.600977E-01 9.491165E-01 9.382437E-01 9.274776E-01 9.168165E-01 9.062585E-01 8.958018E-01 8.854447E-01 8.751851E-01 8.650213E-01 8.549510E-01 8.449720E-01 8.350818E-01 8.252778E-01 8.155572E-01 8.059168E-01 7.963533E-01 7.868632E-01 7.774428E-01 7.680880E-01 7.587944E-01 7.495571E-01 7.403709E-01 7.312301E-01 7.221286E-01 7.130598E-01 7.040161E-01 6.949898E-01 6.859722E-01 6.769537E-01 6.679243E-01 6.588725E-01 6.497864E-01 6.406524E-01 6.314560E-01 6.221815E-01 6.128118E-01 6.033279E-01 5.937096E-01 5.839348E-01 5.739794E-01 5.638173E-01 5.534204E-01 5.427581E-01 5.317975E-01 5.205031E-01 5.088366E-01 4.967571E-01 4.842207E-01 4.711806E-01 4.575872E-01 4.433879E-01 4.285276E-01 4.129485E-01 3.965910E-01 3.793941E-01 3.612962E-01 3.422366E-01 3.221571E-01 3.010045E-01 2.787341E-01 2.553146E-01 2.307347E-01 2.050129E-01 1.782121E-01 1.504615E-01 1.219912E-01 9.319131E-02 6.472258E-02 3.775408E-02 1.457158E-02 0.000000E+00 1.375700E+00 1.360067E+00 1.344583E+00 1.329249E+00 1.314063E+00 1.299025E+00 1.284133E+00 1.269386E+00 1.254784E+00 1.240325E+00 1.226008E+00 1.211833E+00 1.197797E+00 1.183901E+00 1.170144E+00 1.156523E+00 1.143039E+00 1.129689E+00 1.116474E+00 1.103391E+00 1.090440E+00 1.077620E+00 1.064929E+00 1.052366E+00 1.039930E+00 1.027619E+00 1.015433E+00 1.003370E+00 9.914274E-01 9.796049E-01 9.679006E-01 9.563126E-01 9.448392E-01 9.334784E-01 9.222282E-01 9.110867E-01 9.000520E-01 8.891219E-01 8.782944E-01 8.675669E-01 8.569370E-01 8.464019E-01 8.359586E-01 8.256040E-01 8.153345E-01 8.051467E-01 7.950367E-01 7.850003E-01 7.750332E-01 7.651302E-01 7.552860E-01 7.454950E-01 7.357510E-01 7.260471E-01 7.163759E-01 7.067297E-01 6.970994E-01 6.874758E-01 6.778484E-01 6.682062E-01 6.585367E-01 6.488267E-01 6.390617E-01 6.292260E-01 6.193023E-01 6.092720E-01 5.991150E-01 5.888090E-01 5.783304E-01 5.676532E-01 5.567496E-01 5.455893E-01 5.341398E-01 5.223660E-01 5.102303E-01 4.976923E-01 4.847091E-01 4.712347E-01 4.572206E-01 4.426155E-01 4.273658E-01 4.114155E-01 3.947072E-01 3.771822E-01 3.587818E-01 3.394487E-01 3.191286E-01 2.977730E-01 2.753426E-01 2.518123E-01 2.271782E-01 2.014676E-01 1.747534E-01 1.471764E-01 1.189801E-01 9.056935E-02 6.261957E-02 3.630852E-02 1.389509E-02 0.000000E+00 1.431642E+00 1.414890E+00 1.398301E+00 1.381874E+00 1.365609E+00 1.349504E+00 1.333558E+00 1.317770E+00 1.302138E+00 1.286663E+00 1.271341E+00 1.256173E+00 1.241157E+00 1.226293E+00 1.211578E+00 1.197011E+00 1.182593E+00 1.168320E+00 1.154193E+00 1.140209E+00 1.126368E+00 1.112668E+00 1.099108E+00 1.085687E+00 1.072404E+00 1.059256E+00 1.046242E+00 1.033361E+00 1.020612E+00 1.007992E+00 9.954998E-01 9.831336E-01 9.708915E-01 9.587713E-01 9.467710E-01 9.348887E-01 9.231220E-01 9.114690E-01 8.999274E-01 8.884946E-01 8.771679E-01 8.659446E-01 8.548216E-01 8.437956E-01 8.328630E-01 8.220202E-01 8.112633E-01 8.005881E-01 7.899899E-01 7.794637E-01 7.690042E-01 7.586054E-01 7.482612E-01 7.379646E-01 7.277083E-01 7.174842E-01 7.072836E-01 6.970969E-01 6.869137E-01 6.767229E-01 6.665121E-01 6.562680E-01 6.459762E-01 6.356209E-01 6.251850E-01 6.146498E-01 6.039953E-01 5.931996E-01 5.822390E-01 5.710878E-01 5.597183E-01 5.481007E-01 5.362026E-01 5.239896E-01 5.114245E-01 4.984676E-01 4.850765E-01 4.712063E-01 4.568094E-01 4.418358E-01 4.262331E-01 4.099472E-01 3.929224E-01 3.751023E-01 3.564309E-01 3.368540E-01 3.163208E-01 2.947870E-01 2.722182E-01 2.485951E-01 2.239204E-01 1.982291E-01 1.716032E-01 1.441938E-01 1.162559E-01 8.820704E-02 6.073455E-02 3.502166E-02 1.329874E-02 0.000000E+00 1.484548E+00 1.466720E+00 1.449068E+00 1.431591E+00 1.414289E+00 1.397160E+00 1.380202E+00 1.363415E+00 1.346796E+00 1.330346E+00 1.314061E+00 1.297942E+00 1.281987E+00 1.266195E+00 1.250564E+00 1.235093E+00 1.219781E+00 1.204626E+00 1.189628E+00 1.174784E+00 1.160093E+00 1.145555E+00 1.131167E+00 1.116928E+00 1.102836E+00 1.088891E+00 1.075090E+00 1.061432E+00 1.047914E+00 1.034536E+00 1.021296E+00 1.008191E+00 9.952194E-01 9.823791E-01 9.696677E-01 9.570833E-01 9.446236E-01 9.322865E-01 9.200694E-01 9.079698E-01 8.959848E-01 8.841118E-01 8.723472E-01 8.606880E-01 8.491304E-01 8.376707E-01 8.263048E-01 8.150285E-01 8.038371E-01 7.927254E-01 7.816879E-01 7.707189E-01 7.598119E-01 7.489600E-01 7.381558E-01 7.273911E-01 7.166570E-01 7.059442E-01 6.952421E-01 6.845395E-01 6.738240E-01 6.630825E-01 6.523003E-01 6.414618E-01 6.305498E-01 6.195460E-01 6.084301E-01 5.971804E-01 5.857735E-01 5.741837E-01 5.623837E-01 5.503438E-01 5.380321E-01 5.254145E-01 5.124543E-01 4.991123E-01 4.853469E-01 4.711139E-01 4.563666E-01 4.410563E-01 4.251317E-01 4.085403E-01 3.912281E-01 3.731410E-01 3.542252E-01 3.344293E-01 3.137059E-01 2.920145E-01 2.693253E-01 2.456240E-01 2.209195E-01 1.952538E-01 1.687168E-01 1.414688E-01 1.137751E-01 8.606400E-02 5.903260E-02 3.386711E-02 1.276848E-02 0.000000E+00 1.534729E+00 1.515865E+00 1.497190E+00 1.478703E+00 1.460404E+00 1.442289E+00 1.424359E+00 1.406611E+00 1.389044E+00 1.371657E+00 1.354449E+00 1.337417E+00 1.320561E+00 1.303879E+00 1.287370E+00 1.271033E+00 1.254865E+00 1.238865E+00 1.223033E+00 1.207366E+00 1.191863E+00 1.176523E+00 1.161343E+00 1.146323E+00 1.131460E+00 1.116754E+00 1.102202E+00 1.087802E+00 1.073553E+00 1.059453E+00 1.045500E+00 1.031692E+00 1.018026E+00 1.004501E+00 9.911141E-01 9.778629E-01 9.647452E-01 9.517587E-01 9.389009E-01 9.261692E-01 9.135606E-01 9.010721E-01 8.887005E-01 8.764422E-01 8.642937E-01 8.522509E-01 8.403100E-01 8.284664E-01 8.167153E-01 8.050517E-01 7.934698E-01 7.819638E-01 7.705272E-01 7.591532E-01 7.478340E-01 7.365615E-01 7.253270E-01 7.141207E-01 7.029322E-01 6.917503E-01 6.805625E-01 6.693557E-01 6.581152E-01 6.468254E-01 6.354694E-01 6.240284E-01 6.124827E-01 6.008105E-01 5.889884E-01 5.769911E-01 5.647914E-01 5.523598E-01 5.396648E-01 5.266726E-01 5.133470E-01 4.996493E-01 4.855385E-01 4.709713E-01 4.559017E-01 4.402820E-01 4.240623E-01 4.071913E-01 3.896168E-01 3.712865E-01 3.521489E-01 3.321552E-01 3.112611E-01 2.894295E-01 2.666348E-01 2.428675E-01 2.181419E-01 1.925063E-01 1.660580E-01 1.389654E-01 1.115029E-01 8.410814E-02 5.748613E-02 3.282415E-02 1.229342E-02 0.000000E+00 1.582453E+00 1.562590E+00 1.542928E+00 1.523468E+00 1.504207E+00 1.485144E+00 1.466277E+00 1.447605E+00 1.429126E+00 1.410839E+00 1.392742E+00 1.374833E+00 1.357111E+00 1.339575E+00 1.322223E+00 1.305053E+00 1.288064E+00 1.271255E+00 1.254623E+00 1.238167E+00 1.221885E+00 1.205777E+00 1.189839E+00 1.174071E+00 1.158471E+00 1.143037E+00 1.127767E+00 1.112659E+00 1.097711E+00 1.082922E+00 1.068289E+00 1.053810E+00 1.039483E+00 1.025305E+00 1.011274E+00 9.973876E-01 9.836436E-01 9.700394E-01 9.565724E-01 9.432399E-01 9.300387E-01 9.169659E-01 9.040181E-01 8.911917E-01 8.784829E-01 8.658878E-01 8.534021E-01 8.410215E-01 8.287410E-01 8.165554E-01 8.044591E-01 7.924460E-01 7.805096E-01 7.686429E-01 7.568382E-01 7.450874E-01 7.333815E-01 7.217108E-01 7.100649E-01 6.984324E-01 6.868011E-01 6.751575E-01 6.634873E-01 6.517745E-01 6.400024E-01 6.281524E-01 6.162047E-01 6.041376E-01 5.919278E-01 5.795503E-01 5.669779E-01 5.541815E-01 5.411298E-01 5.277894E-01 5.141243E-01 5.000967E-01 4.856659E-01 4.707892E-01 4.554218E-01 4.395165E-01 4.230249E-01 4.058968E-01 3.880816E-01 3.695287E-01 3.501887E-01 3.300154E-01 3.089671E-01 2.870102E-01 2.641226E-01 2.402993E-01 2.155596E-01 1.899576E-01 1.635973E-01 1.366544E-01 1.094112E-01 8.231355E-02 5.607297E-02 3.187626E-02 1.186496E-02 0.000000E+00 1.627949E+00 1.607121E+00 1.586508E+00 1.566108E+00 1.545920E+00 1.525942E+00 1.506172E+00 1.486609E+00 1.467251E+00 1.448096E+00 1.429143E+00 1.410390E+00 1.391835E+00 1.373477E+00 1.355314E+00 1.337345E+00 1.319567E+00 1.301979E+00 1.284579E+00 1.267365E+00 1.250337E+00 1.233491E+00 1.216827E+00 1.200342E+00 1.184035E+00 1.167904E+00 1.151946E+00 1.136160E+00 1.120543E+00 1.105095E+00 1.089811E+00 1.074691E+00 1.059731E+00 1.044930E+00 1.030285E+00 1.015792E+00 1.001451E+00 9.872578E-01 9.732102E-01 9.593052E-01 9.455399E-01 9.319109E-01 9.184150E-01 9.050483E-01 8.918070E-01 8.786870E-01 8.656842E-01 8.527940E-01 8.400113E-01 8.273309E-01 8.147470E-01 8.022536E-01 7.898441E-01 7.775113E-01 7.652476E-01 7.530447E-01 7.408935E-01 7.287846E-01 7.167072E-01 7.046500E-01 6.926007E-01 6.805459E-01 6.684711E-01 6.563606E-01 6.441975E-01 6.319634E-01 6.196383E-01 6.072009E-01 5.946278E-01 5.818942E-01 5.689731E-01 5.558356E-01 5.424507E-01 5.287853E-01 5.148039E-01 5.004689E-01 4.857402E-01 4.705760E-01 4.549321E-01 4.387622E-01 4.220189E-01 4.046533E-01 3.866162E-01 3.678586E-01 3.483333E-01 3.279960E-01 3.068079E-01 2.847382E-01 2.617684E-01 2.378976E-01 2.131496E-01 1.875840E-01 1.613105E-01 1.345117E-01 1.074769E-01 8.065911E-02 5.477514E-02 3.101013E-02 1.147624E-02 0.000000E+00 1.638998E+00 1.617934E+00 1.597088E+00 1.576459E+00 1.556044E+00 1.535842E+00 1.515852E+00 1.496071E+00 1.476498E+00 1.457131E+00 1.437969E+00 1.419010E+00 1.400252E+00 1.381693E+00 1.363332E+00 1.345167E+00 1.327196E+00 1.309418E+00 1.291831E+00 1.274433E+00 1.257223E+00 1.240197E+00 1.223356E+00 1.206697E+00 1.190217E+00 1.173916E+00 1.157790E+00 1.141839E+00 1.126060E+00 1.110451E+00 1.095009E+00 1.079733E+00 1.064620E+00 1.049667E+00 1.034872E+00 1.020232E+00 1.005746E+00 9.914096E-01 9.772210E-01 9.631771E-01 9.492748E-01 9.355110E-01 9.218820E-01 9.083843E-01 8.950139E-01 8.817668E-01 8.686387E-01 8.556250E-01 8.427207E-01 8.299206E-01 8.172187E-01 8.046091E-01 7.920851E-01 7.796397E-01 7.672650E-01 7.549528E-01 7.426943E-01 7.304794E-01 7.182979E-01 7.061382E-01 6.939881E-01 6.818342E-01 6.696619E-01 6.574556E-01 6.451983E-01 6.328717E-01 6.204559E-01 6.079293E-01 5.952690E-01 5.824498E-01 5.694450E-01 5.562257E-01 5.427608E-01 5.290174E-01 5.149602E-01 5.005515E-01 4.857517E-01 4.705187E-01 4.548086E-01 4.385756E-01 4.217722E-01 4.043500E-01 3.862601E-01 3.674539E-01 3.478847E-01 3.275086E-01 3.062875E-01 2.841913E-01 2.612025E-01 2.373209E-01 2.125717E-01 1.870155E-01 1.607635E-01 1.339999E-01 1.070156E-01 8.026528E-02 5.446691E-02 3.080505E-02 1.138460E-02 0.000000E+00 1.671414E+00 1.649654E+00 1.628121E+00 1.606814E+00 1.585730E+00 1.564869E+00 1.544228E+00 1.523805E+00 1.503599E+00 1.483607E+00 1.463829E+00 1.444262E+00 1.424904E+00 1.405755E+00 1.386811E+00 1.368071E+00 1.349533E+00 1.331196E+00 1.313058E+00 1.295116E+00 1.277369E+00 1.259815E+00 1.242453E+00 1.225280E+00 1.208294E+00 1.191493E+00 1.174875E+00 1.158439E+00 1.142181E+00 1.126101E+00 1.110194E+00 1.094460E+00 1.078895E+00 1.063497E+00 1.048264E+00 1.033192E+00 1.018279E+00 1.003524E+00 9.889214E-01 9.744700E-01 9.601663E-01 9.460068E-01 9.319882E-01 9.181066E-01 9.043580E-01 8.907384E-01 8.772433E-01 8.638682E-01 8.506081E-01 8.374574E-01 8.244104E-01 8.114609E-01 7.986023E-01 7.858275E-01 7.731286E-01 7.604973E-01 7.479246E-01 7.354007E-01 7.229151E-01 7.104563E-01 6.980120E-01 6.855688E-01 6.731123E-01 6.606266E-01 6.480950E-01 6.354989E-01 6.228186E-01 6.100327E-01 5.971182E-01 5.840501E-01 5.708016E-01 5.573442E-01 5.436470E-01 5.296772E-01 5.153997E-01 5.007773E-01 4.857707E-01 4.703383E-01 4.544367E-01 4.380206E-01 4.210435E-01 4.034576E-01 3.852152E-01 3.662687E-01 3.465728E-01 3.260852E-01 3.047696E-01 2.825980E-01 2.595553E-01 2.356440E-01 2.108926E-01 1.853652E-01 1.591773E-01 1.325172E-01 1.056809E-01 7.912733E-02 5.357784E-02 3.021487E-02 1.112171E-02 0.000000E+00 1.713024E+00 1.690361E+00 1.667938E+00 1.645753E+00 1.623804E+00 1.602088E+00 1.580605E+00 1.559351E+00 1.538326E+00 1.517526E+00 1.496951E+00 1.476599E+00 1.456466E+00 1.436553E+00 1.416855E+00 1.397373E+00 1.378103E+00 1.359044E+00 1.340194E+00 1.321551E+00 1.303113E+00 1.284877E+00 1.266843E+00 1.249007E+00 1.231369E+00 1.213925E+00 1.196673E+00 1.179612E+00 1.162739E+00 1.146051E+00 1.129547E+00 1.113223E+00 1.097078E+00 1.081108E+00 1.065311E+00 1.049685E+00 1.034225E+00 1.018931E+00 1.003798E+00 9.888238E-01 9.740052E-01 9.593387E-01 9.448207E-01 9.304473E-01 9.162145E-01 9.021180E-01 8.881536E-01 8.743162E-01 8.606009E-01 8.470023E-01 8.335143E-01 8.201308E-01 8.068451E-01 7.936499E-01 7.805374E-01 7.674992E-01 7.545263E-01 7.416087E-01 7.287359E-01 7.158965E-01 7.030780E-01 6.902671E-01 6.774493E-01 6.646088E-01 6.517287E-01 6.387908E-01 6.257752E-01 6.126605E-01 5.994239E-01 5.860406E-01 5.724839E-01 5.587254E-01 5.447346E-01 5.304788E-01 5.159234E-01 5.010316E-01 4.857645E-01 4.700811E-01 4.539386E-01 4.372927E-01 4.200976E-01 4.023068E-01 3.838736E-01 3.647521E-01 3.448984E-01 3.242726E-01 3.028404E-01 2.805764E-01 2.574686E-01 2.335231E-01 2.087721E-01 1.832845E-01 1.571805E-01 1.306541E-01 1.040070E-01 7.770366E-02 5.246879E-02 2.948151E-02 1.079680E-02 0.000000E+00 1.752929E+00 1.729392E+00 1.706107E+00 1.683072E+00 1.660284E+00 1.637742E+00 1.615443E+00 1.593386E+00 1.571568E+00 1.549988E+00 1.528643E+00 1.507531E+00 1.486650E+00 1.465998E+00 1.445574E+00 1.425374E+00 1.405398E+00 1.385642E+00 1.366106E+00 1.346786E+00 1.327681E+00 1.308789E+00 1.290107E+00 1.271634E+00 1.253367E+00 1.235303E+00 1.217442E+00 1.199779E+00 1.182314E+00 1.165043E+00 1.147964E+00 1.131074E+00 1.114371E+00 1.097852E+00 1.081515E+00 1.065355E+00 1.049371E+00 1.033560E+00 1.017918E+00 1.002443E+00 9.871318E-01 9.719798E-01 9.569838E-01 9.421399E-01 9.274439E-01 9.128916E-01 8.984783E-01 8.841994E-01 8.700496E-01 8.560234E-01 8.421147E-01 8.283173E-01 8.146244E-01 8.010287E-01 7.875223E-01 7.740967E-01 7.607428E-01 7.474508E-01 7.342100E-01 7.210089E-01 7.078351E-01 6.946751E-01 6.815146E-01 6.683376E-01 6.551274E-01 6.418657E-01 6.285326E-01 6.151070E-01 6.015660E-01 5.878848E-01 5.740371E-01 5.599946E-01 5.457270E-01 5.312018E-01 5.163848E-01 5.012396E-01 4.857276E-01 4.698086E-01 4.534403E-01 4.365791E-01 4.191802E-01 4.011979E-01 3.825869E-01 3.633026E-01 3.433029E-01 3.225493E-01 3.010100E-01 2.786620E-01 2.554960E-01 2.315214E-01 2.067742E-01 1.813273E-01 1.553056E-01 1.289082E-01 1.024419E-01 7.637584E-02 5.143770E-02 2.880257E-02 1.049776E-02 0.000000E+00 1.791263E+00 1.766879E+00 1.742758E+00 1.718899E+00 1.695299E+00 1.671956E+00 1.648868E+00 1.626032E+00 1.603447E+00 1.581110E+00 1.559020E+00 1.537173E+00 1.515568E+00 1.494203E+00 1.473075E+00 1.452183E+00 1.431524E+00 1.411095E+00 1.390896E+00 1.370923E+00 1.351174E+00 1.331648E+00 1.312342E+00 1.293253E+00 1.274380E+00 1.255719E+00 1.237270E+00 1.219028E+00 1.200992E+00 1.183159E+00 1.165527E+00 1.148093E+00 1.130854E+00 1.113806E+00 1.096949E+00 1.080277E+00 1.063789E+00 1.047482E+00 1.031352E+00 1.015396E+00 9.996111E-01 9.839935E-01 9.685392E-01 9.532443E-01 9.381045E-01 9.231154E-01 9.082726E-01 8.935711E-01 8.790056E-01 8.645704E-01 8.502595E-01 8.360666E-01 8.219848E-01 8.080067E-01 7.941244E-01 7.803293E-01 7.666122E-01 7.529634E-01 7.393720E-01 7.258265E-01 7.123145E-01 6.988225E-01 6.853361E-01 6.718394E-01 6.583156E-01 6.447464E-01 6.311122E-01 6.173917E-01 6.035621E-01 5.895990E-01 5.754758E-01 5.611646E-01 5.466353E-01 5.318557E-01 5.167918E-01 5.014076E-01 4.856650E-01 4.695241E-01 4.529435E-01 4.358801E-01 4.182899E-01 4.001285E-01 3.813513E-01 3.619152E-01 3.417795E-01 3.209076E-01 2.992695E-01 2.768448E-01 2.536266E-01 2.296275E-01 2.048868E-01 1.794813E-01 1.535402E-01 1.272672E-01 1.009739E-01 7.513349E-02 5.047588E-02 2.817175E-02 1.022145E-02 0.000000E+00 1.828146E+00 1.802939E+00 1.778007E+00 1.753348E+00 1.728960E+00 1.704840E+00 1.680987E+00 1.657397E+00 1.634068E+00 1.610998E+00 1.588186E+00 1.565627E+00 1.543321E+00 1.521265E+00 1.499457E+00 1.477894E+00 1.456574E+00 1.435495E+00 1.414654E+00 1.394050E+00 1.373680E+00 1.353541E+00 1.333631E+00 1.313948E+00 1.294489E+00 1.275253E+00 1.256235E+00 1.237435E+00 1.218849E+00 1.200475E+00 1.182309E+00 1.164350E+00 1.146594E+00 1.129038E+00 1.111679E+00 1.094515E+00 1.077542E+00 1.060757E+00 1.044158E+00 1.027740E+00 1.011500E+00 9.954350E-01 9.795406E-01 9.638126E-01 9.482470E-01 9.328390E-01 9.175842E-01 9.024775E-01 8.875136E-01 8.726866E-01 8.579906E-01 8.434191E-01 8.289651E-01 8.146213E-01 8.003795E-01 7.862313E-01 7.721673E-01 7.581777E-01 7.442516E-01 7.303776E-01 7.165431E-01 7.027346E-01 6.889377E-01 6.751365E-01 6.613142E-01 6.474527E-01 6.335321E-01 6.195314E-01 6.054277E-01 5.911968E-01 5.768124E-01 5.622465E-01 5.474692E-01 5.324487E-01 5.171512E-01 5.015410E-01 4.855805E-01 4.692304E-01 4.524496E-01 4.351958E-01 4.174258E-01 3.990960E-01 3.801630E-01 3.605849E-01 3.403224E-01 3.193406E-01 2.976113E-01 2.751163E-01 2.518512E-01 2.278315E-01 2.030996E-01 1.777359E-01 1.518737E-01 1.257209E-01 9.959316E-02 7.396772E-02 4.957592E-02 2.758372E-02 9.965240E-03 0.000000E+00 1.863682E+00 1.837676E+00 1.811956E+00 1.786521E+00 1.761368E+00 1.736494E+00 1.711897E+00 1.687575E+00 1.663525E+00 1.639745E+00 1.616232E+00 1.592984E+00 1.569998E+00 1.547272E+00 1.524804E+00 1.502592E+00 1.480632E+00 1.458923E+00 1.437462E+00 1.416246E+00 1.395274E+00 1.374542E+00 1.354049E+00 1.333791E+00 1.313767E+00 1.293973E+00 1.274408E+00 1.255068E+00 1.235950E+00 1.217053E+00 1.198373E+00 1.179907E+00 1.161652E+00 1.143606E+00 1.125764E+00 1.108125E+00 1.090685E+00 1.073440E+00 1.056388E+00 1.039526E+00 1.022848E+00 1.006353E+00 9.900351E-01 9.738909E-01 9.579158E-01 9.421054E-01 9.264548E-01 9.109591E-01 8.956127E-01 8.804099E-01 8.653445E-01 8.504099E-01 8.355992E-01 8.209049E-01 8.063189E-01 7.918326E-01 7.774366E-01 7.631210E-01 7.488750E-01 7.346869E-01 7.205442E-01 7.064335E-01 6.923402E-01 6.782485E-01 6.641417E-01 6.500013E-01 6.358079E-01 6.215403E-01 6.071759E-01 5.926903E-01 5.780574E-01 5.632495E-01 5.482368E-01 5.329877E-01 5.174688E-01 5.016445E-01 4.854777E-01 4.689296E-01 4.519596E-01 4.345261E-01 4.165865E-01 3.980982E-01 3.790188E-01 3.593076E-01 3.389265E-01 3.178422E-01 2.960284E-01 2.734688E-01 2.501615E-01 2.261245E-01 2.014034E-01 1.760819E-01 1.502968E-01 1.242600E-01 9.829127E-02 7.287089E-02 4.873149E-02 2.703394E-02 9.726878E-03 0.000000E+00 1.897967E+00 1.871184E+00 1.844698E+00 1.818509E+00 1.792612E+00 1.767005E+00 1.741687E+00 1.716653E+00 1.691903E+00 1.667432E+00 1.643240E+00 1.619322E+00 1.595677E+00 1.572302E+00 1.549194E+00 1.526352E+00 1.503772E+00 1.481451E+00 1.459389E+00 1.437581E+00 1.416026E+00 1.394720E+00 1.373662E+00 1.352848E+00 1.332276E+00 1.311944E+00 1.291848E+00 1.271986E+00 1.252355E+00 1.232952E+00 1.213775E+00 1.194819E+00 1.176083E+00 1.157563E+00 1.139256E+00 1.121158E+00 1.103267E+00 1.085579E+00 1.068091E+00 1.050799E+00 1.033700E+00 1.016790E+00 1.000064E+00 9.835192E-01 9.671501E-01 9.509524E-01 9.349211E-01 9.190513E-01 9.033372E-01 8.877732E-01 8.723530E-01 8.570697E-01 8.419167E-01 8.268861E-01 8.119699E-01 7.971593E-01 7.824451E-01 7.678171E-01 7.532646E-01 7.387758E-01 7.243383E-01 7.099384E-01 6.955617E-01 6.811924E-01 6.668136E-01 6.524071E-01 6.379532E-01 6.234311E-01 6.088179E-01 5.940896E-01 5.792201E-01 5.641818E-01 5.489451E-01 5.334787E-01 5.177492E-01 5.017217E-01 4.853593E-01 4.686234E-01 4.514743E-01 4.338707E-01 4.157710E-01 3.971332E-01 3.779159E-01 3.580794E-01 3.375871E-01 3.164071E-01 2.945147E-01 2.718957E-01 2.485504E-01 2.244991E-01 1.997904E-01 1.745110E-01 1.488014E-01 1.228769E-01 9.706079E-02 7.183638E-02 4.793710E-02 2.651850E-02 9.504459E-03 0.000000E+00 1.931086E+00 1.903546E+00 1.876316E+00 1.849392E+00 1.822772E+00 1.796453E+00 1.770432E+00 1.744708E+00 1.719276E+00 1.694135E+00 1.669282E+00 1.644714E+00 1.620428E+00 1.596423E+00 1.572694E+00 1.549240E+00 1.526058E+00 1.503145E+00 1.480499E+00 1.458117E+00 1.435997E+00 1.414135E+00 1.392529E+00 1.371176E+00 1.350074E+00 1.329220E+00 1.308610E+00 1.288243E+00 1.268115E+00 1.248223E+00 1.228564E+00 1.209135E+00 1.189934E+00 1.170956E+00 1.152198E+00 1.133657E+00 1.115331E+00 1.097214E+00 1.079305E+00 1.061600E+00 1.044094E+00 1.026783E+00 1.009665E+00 9.927332E-01 9.759844E-01 9.594135E-01 9.430156E-01 9.267855E-01 9.107176E-01 8.948060E-01 8.790443E-01 8.634259E-01 8.479436E-01 8.325899E-01 8.173564E-01 8.022345E-01 7.872147E-01 7.722870E-01 7.574404E-01 7.426633E-01 7.279431E-01 7.132662E-01 6.986181E-01 6.839829E-01 6.693439E-01 6.546827E-01 6.399799E-01 6.252145E-01 6.103638E-01 5.954037E-01 5.803084E-01 5.650504E-01 5.496002E-01 5.339267E-01 5.179970E-01 5.017760E-01 4.852276E-01 4.683135E-01 4.509943E-01 4.332296E-01 4.149782E-01 3.961989E-01 3.768514E-01 3.568970E-01 3.363002E-01 3.150306E-01 2.930651E-01 2.703912E-01 2.470114E-01 2.229485E-01 1.982535E-01 1.730163E-01 1.473804E-01 1.215646E-01 9.589528E-02 7.085846E-02 4.718800E-02 2.603403E-02 9.296339E-03 0.000000E+00 1.963115E+00 1.934839E+00 1.906883E+00 1.879244E+00 1.851920E+00 1.824908E+00 1.798204E+00 1.771807E+00 1.745713E+00 1.719920E+00 1.694425E+00 1.669224E+00 1.644316E+00 1.619698E+00 1.595366E+00 1.571318E+00 1.547551E+00 1.524063E+00 1.500850E+00 1.477911E+00 1.455242E+00 1.432840E+00 1.410702E+00 1.388827E+00 1.367211E+00 1.345850E+00 1.324743E+00 1.303886E+00 1.283276E+00 1.262911E+00 1.242786E+00 1.222899E+00 1.203247E+00 1.183825E+00 1.164632E+00 1.145663E+00 1.126915E+00 1.108385E+00 1.090069E+00 1.071963E+00 1.054064E+00 1.036368E+00 1.018869E+00 1.001565E+00 9.844494E-01 9.675185E-01 9.507670E-01 9.341896E-01 9.177806E-01 9.015341E-01 8.854435E-01 8.695022E-01 8.537031E-01 8.380383E-01 8.224997E-01 8.070784E-01 7.917649E-01 7.765491E-01 7.614201E-01 7.463661E-01 7.313745E-01 7.164318E-01 7.015232E-01 6.866332E-01 6.717447E-01 6.568397E-01 6.418984E-01 6.269000E-01 6.118221E-01 5.966404E-01 5.813293E-01 5.658614E-01 5.502074E-01 5.343363E-01 5.182155E-01 5.018103E-01 4.850847E-01 4.680009E-01 4.505201E-01 4.326023E-01 4.142070E-01 3.952937E-01 3.758231E-01 3.557573E-01 3.350621E-01 3.137083E-01 2.916745E-01 2.689500E-01 2.455390E-01 2.214667E-01 1.967866E-01 1.715914E-01 1.460276E-01 1.203170E-01 9.478909E-02 6.993207E-02 4.648006E-02 2.557758E-02 9.101101E-03 0.000000E+00 1.994124E+00 1.965130E+00 1.936466E+00 1.908131E+00 1.880121E+00 1.852434E+00 1.825066E+00 1.798014E+00 1.771275E+00 1.744847E+00 1.718727E+00 1.692911E+00 1.667397E+00 1.642183E+00 1.617264E+00 1.592638E+00 1.568303E+00 1.544256E+00 1.520493E+00 1.497012E+00 1.473810E+00 1.450884E+00 1.428231E+00 1.405848E+00 1.383732E+00 1.361881E+00 1.340290E+00 1.318959E+00 1.297882E+00 1.277057E+00 1.256480E+00 1.236149E+00 1.216060E+00 1.196210E+00 1.176594E+00 1.157210E+00 1.138055E+00 1.119124E+00 1.100414E+00 1.081921E+00 1.063642E+00 1.045572E+00 1.027707E+00 1.010042E+00 9.925725E-01 9.752939E-01 9.582010E-01 9.412884E-01 9.245502E-01 9.079806E-01 8.915729E-01 8.753204E-01 8.592158E-01 8.432513E-01 8.274187E-01 8.117090E-01 7.961128E-01 7.806199E-01 7.652191E-01 7.498989E-01 7.346464E-01 7.194482E-01 7.042896E-01 6.891547E-01 6.740269E-01 6.588877E-01 6.437178E-01 6.284962E-01 6.132005E-01 5.978066E-01 5.822889E-01 5.666201E-01 5.507712E-01 5.347112E-01 5.184079E-01 5.018268E-01 4.849322E-01 4.676867E-01 4.500520E-01 4.319885E-01 4.134564E-01 3.944160E-01 3.748286E-01 3.546574E-01 3.338694E-01 3.124366E-01 2.903389E-01 2.675673E-01 2.441281E-01 2.200484E-01 1.953843E-01 1.702308E-01 1.447374E-01 1.191288E-01 9.373721E-02 6.905279E-02 4.580964E-02 2.514661E-02 8.917511E-03 0.000000E+00 2.024175E+00 1.994481E+00 1.965128E+00 1.936114E+00 1.907436E+00 1.879090E+00 1.851073E+00 1.823383E+00 1.796017E+00 1.768970E+00 1.742242E+00 1.715827E+00 1.689723E+00 1.663928E+00 1.638439E+00 1.613251E+00 1.588363E+00 1.563772E+00 1.539474E+00 1.515466E+00 1.491746E+00 1.468310E+00 1.445155E+00 1.422279E+00 1.399679E+00 1.377351E+00 1.355292E+00 1.333498E+00 1.311968E+00 1.290697E+00 1.269683E+00 1.248921E+00 1.228408E+00 1.208141E+00 1.188117E+00 1.168331E+00 1.148780E+00 1.129461E+00 1.110370E+00 1.091503E+00 1.072856E+00 1.054424E+00 1.036204E+00 1.018190E+00 1.000378E+00 9.827636E-01 9.653406E-01 9.481040E-01 9.310479E-01 9.141662E-01 8.974522E-01 8.808993E-01 8.644999E-01 8.482464E-01 8.321303E-01 8.161426E-01 8.002739E-01 7.845138E-01 7.688514E-01 7.532747E-01 7.377712E-01 7.223272E-01 7.069280E-01 6.915579E-01 6.761999E-01 6.608359E-01 6.454464E-01 6.300104E-01 6.145057E-01 5.989082E-01 5.831925E-01 5.673312E-01 5.512956E-01 5.350549E-01 5.185770E-01 5.018277E-01 4.847716E-01 4.673718E-01 4.495902E-01 4.313878E-01 4.127255E-01 3.935642E-01 3.738659E-01 3.535949E-01 3.327191E-01 3.112118E-01 2.890542E-01 2.662390E-01 2.427742E-01 2.186890E-01 1.940416E-01 1.689296E-01 1.435051E-01 1.179954E-01 9.273525E-02 6.821670E-02 4.517353E-02 2.473886E-02 8.744493E-03 0.000000E+00 2.053326E+00 2.022948E+00 1.992923E+00 1.963246E+00 1.933916E+00 1.904928E+00 1.876280E+00 1.847968E+00 1.819989E+00 1.792340E+00 1.765018E+00 1.738019E+00 1.711341E+00 1.684981E+00 1.658935E+00 1.633201E+00 1.607774E+00 1.582653E+00 1.557834E+00 1.533314E+00 1.509089E+00 1.485158E+00 1.461516E+00 1.438161E+00 1.415089E+00 1.392297E+00 1.369782E+00 1.347541E+00 1.325570E+00 1.303866E+00 1.282426E+00 1.261246E+00 1.240322E+00 1.219651E+00 1.199230E+00 1.179054E+00 1.159120E+00 1.139425E+00 1.119964E+00 1.100733E+00 1.081729E+00 1.062948E+00 1.044383E+00 1.026032E+00 1.007889E+00 9.899487E-01 9.722064E-01 9.546564E-01 9.372928E-01 9.201093E-01 9.030994E-01 8.862561E-01 8.695720E-01 8.530393E-01 8.366495E-01 8.203935E-01 8.042619E-01 7.882441E-01 7.723293E-01 7.565055E-01 7.407600E-01 7.250792E-01 7.094483E-01 6.938516E-01 6.782722E-01 6.626919E-01 6.470912E-01 6.314493E-01 6.157437E-01 5.999507E-01 5.840448E-01 5.679989E-01 5.517842E-01 5.353703E-01 5.187250E-01 5.018147E-01 4.846042E-01 4.670567E-01 4.491348E-01 4.307999E-01 4.120134E-01 3.927369E-01 3.729332E-01 3.525675E-01 3.316085E-01 3.100308E-01 2.878172E-01 2.649614E-01 2.414734E-01 2.173842E-01 1.927542E-01 1.676833E-01 1.423261E-01 1.169124E-01 9.177929E-02 6.742032E-02 4.456890E-02 2.435235E-02 8.581102E-03 0.000000E+00 2.081628E+00 2.050583E+00 2.019901E+00 1.989578E+00 1.959611E+00 1.929997E+00 1.900732E+00 1.871813E+00 1.843237E+00 1.815000E+00 1.787099E+00 1.759532E+00 1.732294E+00 1.705383E+00 1.678795E+00 1.652527E+00 1.626576E+00 1.600939E+00 1.575612E+00 1.550593E+00 1.525878E+00 1.501464E+00 1.477347E+00 1.453525E+00 1.429995E+00 1.406752E+00 1.383794E+00 1.361117E+00 1.338718E+00 1.316593E+00 1.294739E+00 1.273152E+00 1.251829E+00 1.230766E+00 1.209959E+00 1.189404E+00 1.169099E+00 1.149038E+00 1.129218E+00 1.109636E+00 1.090286E+00 1.071164E+00 1.052267E+00 1.033588E+00 1.015124E+00 9.968686E-01 9.788170E-01 9.609635E-01 9.433022E-01 9.258267E-01 9.085304E-01 8.914063E-01 8.744469E-01 8.576443E-01 8.409898E-01 8.244746E-01 8.080890E-01 7.918225E-01 7.756640E-01 7.596017E-01 7.436228E-01 7.277136E-01 7.118593E-01 6.960443E-01 6.802515E-01 6.644629E-01 6.486588E-01 6.328186E-01 6.169199E-01 6.009389E-01 5.848501E-01 5.686268E-01 5.522401E-01 5.356599E-01 5.188542E-01 5.017895E-01 4.844309E-01 4.667421E-01 4.486859E-01 4.302244E-01 4.113193E-01 3.919329E-01 3.720289E-01 3.515730E-01 3.305352E-01 3.088911E-01 2.866245E-01 2.637310E-01 2.402219E-01 2.161302E-01 1.915181E-01 1.664880E-01 1.411966E-01 1.158761E-01 9.086581E-02 6.666058E-02 4.399323E-02 2.398531E-02 8.426503E-03 0.000000E+00 2.109130E+00 2.077434E+00 2.046110E+00 2.015155E+00 1.984566E+00 1.954340E+00 1.924473E+00 1.894962E+00 1.865802E+00 1.836992E+00 1.808527E+00 1.780404E+00 1.752620E+00 1.725171E+00 1.698055E+00 1.671267E+00 1.644805E+00 1.618665E+00 1.592843E+00 1.567338E+00 1.542145E+00 1.517260E+00 1.492682E+00 1.468405E+00 1.444428E+00 1.420746E+00 1.397356E+00 1.374255E+00 1.351439E+00 1.328905E+00 1.306649E+00 1.284667E+00 1.262956E+00 1.241511E+00 1.220329E+00 1.199407E+00 1.178740E+00 1.158324E+00 1.138156E+00 1.118231E+00 1.098546E+00 1.079095E+00 1.059873E+00 1.040877E+00 1.022102E+00 1.003541E+00 9.851892E-01 9.670416E-01 9.490919E-01 9.313335E-01 9.137598E-01 8.963638E-01 8.791379E-01 8.620740E-01 8.451636E-01 8.283977E-01 8.117664E-01 7.952594E-01 7.788655E-01 7.625728E-01 7.463684E-01 7.302386E-01 7.141688E-01 6.981431E-01 6.821445E-01 6.661549E-01 6.501549E-01 6.341237E-01 6.180389E-01 6.018769E-01 5.856122E-01 5.692182E-01 5.526662E-01 5.359262E-01 5.189663E-01 5.017533E-01 4.842527E-01 4.664284E-01 4.482436E-01 4.296608E-01 4.106423E-01 3.911510E-01 3.711512E-01 3.506095E-01 3.294968E-01 3.077897E-01 2.854734E-01 2.625447E-01 2.390165E-01 2.149235E-01 1.903299E-01 1.653401E-01 1.401130E-01 1.148831E-01 8.999167E-02 6.593469E-02 4.344428E-02 2.363619E-02 8.279962E-03 0.000000E+00 2.135876E+00 2.103542E+00 2.071591E+00 2.040019E+00 2.008823E+00 1.977999E+00 1.947544E+00 1.917453E+00 1.887724E+00 1.858354E+00 1.829337E+00 1.800672E+00 1.772355E+00 1.744382E+00 1.716749E+00 1.689454E+00 1.662493E+00 1.635862E+00 1.609559E+00 1.583579E+00 1.557920E+00 1.532577E+00 1.507548E+00 1.482828E+00 1.458416E+00 1.434306E+00 1.410496E+00 1.386982E+00 1.363761E+00 1.340828E+00 1.318180E+00 1.295813E+00 1.273724E+00 1.251908E+00 1.230362E+00 1.209082E+00 1.188063E+00 1.167303E+00 1.146796E+00 1.126539E+00 1.106527E+00 1.086756E+00 1.067221E+00 1.047917E+00 1.028838E+00 1.009981E+00 9.913383E-01 9.729054E-01 9.546759E-01 9.366432E-01 9.188008E-01 9.011412E-01 8.836570E-01 8.663402E-01 8.491819E-01 8.321732E-01 8.153042E-01 7.985645E-01 7.819428E-01 7.654272E-01 7.490049E-01 7.326620E-01 7.163839E-01 7.001547E-01 6.839573E-01 6.677739E-01 6.515847E-01 6.353692E-01 6.191050E-01 6.027685E-01 5.863345E-01 5.697760E-01 5.530649E-01 5.361710E-01 5.190629E-01 5.017075E-01 4.840705E-01 4.661161E-01 4.478079E-01 4.291089E-01 4.099818E-01 3.903901E-01 3.702988E-01 3.496753E-01 3.284913E-01 3.067246E-01 2.843614E-01 2.613997E-01 2.378542E-01 2.137610E-01 1.891863E-01 1.642364E-01 1.390722E-01 1.139305E-01 8.915408E-02 6.524019E-02 4.292004E-02 2.330360E-02 8.140821E-03 0.000000E+00 2.161906E+00 2.128948E+00 2.096384E+00 2.064208E+00 2.032418E+00 2.001010E+00 1.969979E+00 1.939323E+00 1.909038E+00 1.879120E+00 1.849565E+00 1.820370E+00 1.791532E+00 1.763047E+00 1.734910E+00 1.707120E+00 1.679672E+00 1.652562E+00 1.625788E+00 1.599345E+00 1.573231E+00 1.547441E+00 1.521972E+00 1.496821E+00 1.471984E+00 1.447458E+00 1.423238E+00 1.399322E+00 1.375705E+00 1.352383E+00 1.329354E+00 1.306613E+00 1.284156E+00 1.261979E+00 1.240078E+00 1.218449E+00 1.197089E+00 1.175993E+00 1.155157E+00 1.134576E+00 1.114247E+00 1.094165E+00 1.074324E+00 1.054721E+00 1.035349E+00 1.016203E+00 9.972782E-01 9.785683E-01 9.600672E-01 9.417685E-01 9.236651E-01 9.057499E-01 8.880153E-01 8.704531E-01 8.530547E-01 8.358107E-01 8.187115E-01 8.017464E-01 7.849042E-01 7.681729E-01 7.515396E-01 7.349905E-01 7.185109E-01 7.020850E-01 6.856956E-01 6.693248E-01 6.529530E-01 6.365595E-01 6.201222E-01 6.036173E-01 5.870197E-01 5.703028E-01 5.534384E-01 5.363963E-01 5.191455E-01 5.016531E-01 4.838848E-01 4.658054E-01 4.473788E-01 4.285682E-01 4.093370E-01 3.896492E-01 3.694703E-01 3.487687E-01 3.275169E-01 3.056935E-01 2.832859E-01 2.602936E-01 2.367323E-01 2.126400E-01 1.880845E-01 1.631739E-01 1.380714E-01 1.130153E-01 8.835046E-02 6.457483E-02 4.241870E-02 2.298628E-02 8.008497E-03 0.000000E+00 2.187257E+00 2.153689E+00 2.120524E+00 2.087758E+00 2.055387E+00 2.023407E+00 1.991814E+00 1.960605E+00 1.929775E+00 1.899322E+00 1.869241E+00 1.839528E+00 1.810181E+00 1.781195E+00 1.752566E+00 1.724292E+00 1.696368E+00 1.668791E+00 1.641557E+00 1.614663E+00 1.588104E+00 1.561878E+00 1.535980E+00 1.510408E+00 1.485157E+00 1.460224E+00 1.435605E+00 1.411296E+00 1.387293E+00 1.363593E+00 1.340192E+00 1.317086E+00 1.294270E+00 1.271741E+00 1.249495E+00 1.227527E+00 1.205834E+00 1.184411E+00 1.163254E+00 1.142359E+00 1.121722E+00 1.101337E+00 1.081199E+00 1.061304E+00 1.041647E+00 1.022221E+00 1.003021E+00 9.840425E-01 9.652776E-01 9.467204E-01 9.283637E-01 9.102004E-01 8.922228E-01 8.744226E-01 8.567911E-01 8.393190E-01 8.219965E-01 8.048129E-01 7.877570E-01 7.708167E-01 7.539791E-01 7.372304E-01 7.205558E-01 7.039394E-01 6.873643E-01 6.708122E-01 6.542639E-01 6.376984E-01 6.210938E-01 6.044263E-01 5.876709E-01 5.708011E-01 5.537886E-01 5.366037E-01 5.192154E-01 5.015908E-01 4.836963E-01 4.654966E-01 4.469560E-01 4.280383E-01 4.087071E-01 3.889272E-01 3.686646E-01 3.478883E-01 3.265717E-01 3.046945E-01 2.822450E-01 2.592238E-01 2.356483E-01 2.115577E-01 1.870217E-01 1.621501E-01 1.371078E-01 1.121352E-01 8.757854E-02 6.393661E-02 4.193864E-02 2.268312E-02 7.882467E-03 0.000000E+00 2.211963E+00 2.177798E+00 2.144046E+00 2.110701E+00 2.077761E+00 2.045222E+00 2.013078E+00 1.981328E+00 1.949966E+00 1.918989E+00 1.888393E+00 1.858175E+00 1.828329E+00 1.798854E+00 1.769744E+00 1.740997E+00 1.712608E+00 1.684574E+00 1.656891E+00 1.629555E+00 1.602563E+00 1.575910E+00 1.549594E+00 1.523610E+00 1.497955E+00 1.472625E+00 1.447616E+00 1.422924E+00 1.398545E+00 1.374476E+00 1.350712E+00 1.327250E+00 1.304085E+00 1.281212E+00 1.258629E+00 1.236331E+00 1.214314E+00 1.192572E+00 1.171104E+00 1.149902E+00 1.128964E+00 1.108284E+00 1.087858E+00 1.067680E+00 1.047744E+00 1.028046E+00 1.008580E+00 9.893391E-01 9.703178E-01 9.515094E-01 9.329066E-01 9.145023E-01 8.962886E-01 8.782572E-01 8.603995E-01 8.427060E-01 8.251668E-01 8.077712E-01 7.905080E-01 7.733651E-01 7.563295E-01 7.393873E-01 7.225238E-01 7.057230E-01 6.889679E-01 6.722404E-01 6.555212E-01 6.387894E-01 6.220229E-01 6.051983E-01 5.882904E-01 5.712728E-01 5.541174E-01 5.367948E-01 5.192737E-01 5.015218E-01 4.835055E-01 4.651900E-01 4.465397E-01 4.275189E-01 4.080918E-01 3.882233E-01 3.678804E-01 3.470327E-01 3.256543E-01 3.037257E-01 2.812365E-01 2.581885E-01 2.346000E-01 2.105120E-01 1.859956E-01 1.611625E-01 1.361792E-01 1.112879E-01 8.683620E-02 6.332369E-02 4.147839E-02 2.239310E-02 7.762264E-03 0.000000E+00 2.236057E+00 2.201307E+00 2.166979E+00 2.133068E+00 2.099571E+00 2.066484E+00 2.033802E+00 2.001521E+00 1.969638E+00 1.938149E+00 1.907049E+00 1.876335E+00 1.846003E+00 1.816049E+00 1.786469E+00 1.757259E+00 1.728415E+00 1.699934E+00 1.671812E+00 1.644045E+00 1.616629E+00 1.589560E+00 1.562835E+00 1.536449E+00 1.510399E+00 1.484681E+00 1.459291E+00 1.434225E+00 1.409479E+00 1.385050E+00 1.360932E+00 1.337122E+00 1.313616E+00 1.290409E+00 1.267498E+00 1.244877E+00 1.222543E+00 1.200492E+00 1.178719E+00 1.157219E+00 1.135988E+00 1.115021E+00 1.094313E+00 1.073859E+00 1.053653E+00 1.033690E+00 1.013964E+00 9.944684E-01 9.751977E-01 9.561448E-01 9.373028E-01 9.186640E-01 9.002209E-01 8.819650E-01 8.638874E-01 8.459788E-01 8.282292E-01 8.106279E-01 7.931635E-01 7.758240E-01 7.585962E-01 7.414664E-01 7.244197E-01 7.074400E-01 6.905106E-01 6.736132E-01 6.567284E-01 6.398355E-01 6.229125E-01 6.059357E-01 5.888804E-01 5.717199E-01 5.544265E-01 5.369706E-01 5.193214E-01 5.014466E-01 4.833128E-01 4.648856E-01 4.461297E-01 4.270097E-01 4.074902E-01 3.875367E-01 3.671167E-01 3.462005E-01 3.247630E-01 3.027856E-01 2.802588E-01 2.571854E-01 2.335853E-01 2.095006E-01 1.850040E-01 1.602088E-01 1.352833E-01 1.104713E-01 8.612158E-02 6.273443E-02 4.103662E-02 2.211531E-02 7.647462E-03 0.000000E+00 2.259568E+00 2.224244E+00 2.189352E+00 2.154887E+00 2.120844E+00 2.087220E+00 2.054010E+00 2.021211E+00 1.988818E+00 1.956827E+00 1.925233E+00 1.894035E+00 1.863226E+00 1.832803E+00 1.802762E+00 1.773100E+00 1.743812E+00 1.714894E+00 1.686342E+00 1.658153E+00 1.630322E+00 1.602846E+00 1.575721E+00 1.548943E+00 1.522507E+00 1.496410E+00 1.470648E+00 1.445217E+00 1.420112E+00 1.395330E+00 1.370867E+00 1.346718E+00 1.322879E+00 1.299346E+00 1.276114E+00 1.253178E+00 1.230536E+00 1.208182E+00 1.186112E+00 1.164322E+00 1.142805E+00 1.121559E+00 1.100576E+00 1.079853E+00 1.059384E+00 1.039162E+00 1.019183E+00 9.994398E-01 9.799262E-01 9.606355E-01 9.415606E-01 9.226939E-01 9.040276E-01 8.855532E-01 8.672619E-01 8.491442E-01 8.311902E-01 8.133889E-01 7.957292E-01 7.781986E-01 7.607843E-01 7.434723E-01 7.262478E-01 7.090948E-01 6.919962E-01 6.749340E-01 6.578888E-01 6.408398E-01 6.237651E-01 6.066410E-01 5.894428E-01 5.721442E-01 5.547171E-01 5.371324E-01 5.193594E-01 5.013659E-01 4.831187E-01 4.645837E-01 4.457259E-01 4.265103E-01 4.069018E-01 3.868666E-01 3.663726E-01 3.453907E-01 3.238966E-01 3.018726E-01 2.793100E-01 2.562129E-01 2.326022E-01 2.085215E-01 1.840449E-01 1.592872E-01 1.344183E-01 1.096835E-01 8.543293E-02 6.216730E-02 4.061211E-02 2.184893E-02 7.537682E-03 0.000000E+00 2.282523E+00 2.246637E+00 2.211192E+00 2.176183E+00 2.141605E+00 2.107455E+00 2.073729E+00 2.040421E+00 2.007527E+00 1.975045E+00 1.942969E+00 1.911295E+00 1.880019E+00 1.849138E+00 1.818646E+00 1.788541E+00 1.758817E+00 1.729472E+00 1.700500E+00 1.671898E+00 1.643662E+00 1.615787E+00 1.588271E+00 1.561108E+00 1.534295E+00 1.507828E+00 1.481702E+00 1.455914E+00 1.430459E+00 1.405333E+00 1.380532E+00 1.356052E+00 1.331888E+00 1.308035E+00 1.284490E+00 1.261248E+00 1.238305E+00 1.215656E+00 1.193296E+00 1.171221E+00 1.149427E+00 1.127907E+00 1.106657E+00 1.085672E+00 1.064946E+00 1.044472E+00 1.024247E+00 1.004262E+00 9.845118E-01 9.649895E-01 9.456878E-01 9.265991E-01 9.077156E-01 8.890287E-01 8.705294E-01 8.522084E-01 8.340554E-01 8.160598E-01 7.982100E-01 7.804939E-01 7.628984E-01 7.454094E-01 7.280122E-01 7.106908E-01 6.934282E-01 6.762061E-01 6.590052E-01 6.418048E-01 6.245829E-01 6.073162E-01 5.899797E-01 5.725471E-01 5.549908E-01 5.372815E-01 5.193886E-01 5.012803E-01 4.829235E-01 4.642844E-01 4.453283E-01 4.260204E-01 4.063262E-01 3.862122E-01 3.656470E-01 3.446020E-01 3.230538E-01 3.009852E-01 2.783888E-01 2.552694E-01 2.316492E-01 2.075730E-01 1.831164E-01 1.583957E-01 1.335822E-01 1.089228E-01 8.476868E-02 6.162094E-02 4.020377E-02 2.159320E-02 7.432577E-03 0.000000E+00 2.304948E+00 2.268511E+00 2.232523E+00 2.196981E+00 2.161879E+00 2.127213E+00 2.092979E+00 2.059173E+00 2.025790E+00 1.992826E+00 1.960276E+00 1.928137E+00 1.896404E+00 1.865073E+00 1.834140E+00 1.803601E+00 1.773451E+00 1.743687E+00 1.714303E+00 1.685297E+00 1.656664E+00 1.628400E+00 1.600501E+00 1.572962E+00 1.545780E+00 1.518951E+00 1.492469E+00 1.466332E+00 1.440534E+00 1.415072E+00 1.389941E+00 1.365137E+00 1.340655E+00 1.316491E+00 1.292640E+00 1.269098E+00 1.245861E+00 1.222923E+00 1.200281E+00 1.177929E+00 1.155863E+00 1.134077E+00 1.112566E+00 1.091325E+00 1.070348E+00 1.049629E+00 1.029163E+00 1.008943E+00 9.889620E-01 9.692140E-01 9.496914E-01 9.303865E-01 9.112913E-01 8.923975E-01 8.736958E-01 8.551767E-01 8.368303E-01 8.186455E-01 8.006110E-01 7.827144E-01 7.649426E-01 7.472817E-01 7.297167E-01 7.122316E-01 6.948096E-01 6.774322E-01 6.600803E-01 6.427330E-01 6.253684E-01 6.079632E-01 5.904925E-01 5.729302E-01 5.552486E-01 5.374185E-01 5.194097E-01 5.011902E-01 4.827275E-01 4.639877E-01 4.449366E-01 4.255396E-01 4.057628E-01 3.855729E-01 3.649392E-01 3.438336E-01 3.222334E-01 3.001223E-01 2.774935E-01 2.543532E-01 2.307244E-01 2.066534E-01 1.822169E-01 1.575326E-01 1.327735E-01 1.081876E-01 8.412736E-02 6.109408E-02 3.981059E-02 2.134744E-02 7.331835E-03 0.000000E+00 2.326867E+00 2.289888E+00 2.253369E+00 2.217303E+00 2.181687E+00 2.146516E+00 2.111785E+00 2.077490E+00 2.043626E+00 2.010190E+00 1.977176E+00 1.944581E+00 1.912400E+00 1.880628E+00 1.849263E+00 1.818298E+00 1.787730E+00 1.757556E+00 1.727770E+00 1.698368E+00 1.669346E+00 1.640700E+00 1.612426E+00 1.584520E+00 1.556977E+00 1.529792E+00 1.502963E+00 1.476484E+00 1.450351E+00 1.424560E+00 1.399106E+00 1.373986E+00 1.349193E+00 1.324724E+00 1.300575E+00 1.276740E+00 1.253215E+00 1.229995E+00 1.207077E+00 1.184454E+00 1.162122E+00 1.140076E+00 1.118311E+00 1.096820E+00 1.075598E+00 1.054640E+00 1.033939E+00 1.013489E+00 9.932840E-01 9.733160E-01 9.535779E-01 9.340622E-01 9.147609E-01 8.956653E-01 8.767664E-01 8.580546E-01 8.395197E-01 8.211508E-01 8.029364E-01 7.848642E-01 7.669210E-01 7.490928E-01 7.313645E-01 7.137205E-01 6.961434E-01 6.786152E-01 6.611164E-01 6.436265E-01 6.261234E-01 6.085838E-01 5.909830E-01 5.732948E-01 5.554916E-01 5.375445E-01 5.194233E-01 5.010963E-01 4.825310E-01 4.636938E-01 4.445508E-01 4.250678E-01 4.052111E-01 3.849481E-01 3.642483E-01 3.430845E-01 3.214343E-01 2.992825E-01 2.766231E-01 2.534630E-01 2.298265E-01 2.057611E-01 1.813447E-01 1.566964E-01 1.319906E-01 1.074765E-01 8.350766E-02 6.058557E-02 3.943164E-02 2.111102E-02 7.235168E-03 0.000000E+00 2.348301E+00 2.310792E+00 2.273750E+00 2.237171E+00 2.201050E+00 2.165383E+00 2.130164E+00 2.095389E+00 2.061054E+00 2.027155E+00 1.993686E+00 1.960644E+00 1.928023E+00 1.895820E+00 1.864030E+00 1.832649E+00 1.801672E+00 1.771095E+00 1.740914E+00 1.711125E+00 1.681722E+00 1.652703E+00 1.624061E+00 1.595795E+00 1.567898E+00 1.540366E+00 1.513196E+00 1.486383E+00 1.459922E+00 1.433809E+00 1.408039E+00 1.382609E+00 1.357512E+00 1.332746E+00 1.308304E+00 1.284182E+00 1.260376E+00 1.236881E+00 1.213693E+00 1.190806E+00 1.168215E+00 1.145915E+00 1.123900E+00 1.102165E+00 1.080705E+00 1.059513E+00 1.038583E+00 1.017909E+00 9.974844E-01 9.773015E-01 9.573534E-01 9.376321E-01 9.181298E-01 8.988376E-01 8.797465E-01 8.608468E-01 8.421283E-01 8.235800E-01 8.051904E-01 7.869471E-01 7.688370E-01 7.508460E-01 7.329590E-01 7.151601E-01 6.974324E-01 6.797575E-01 6.621160E-01 6.444874E-01 6.268497E-01 6.091796E-01 5.914523E-01 5.736419E-01 5.557209E-01 5.376603E-01 5.194301E-01 5.009989E-01 4.823341E-01 4.634027E-01 4.441708E-01 4.246046E-01 4.046707E-01 3.843371E-01 3.635736E-01 3.423536E-01 3.206556E-01 2.984648E-01 2.757761E-01 2.525974E-01 2.289541E-01 2.048947E-01 1.804984E-01 1.558856E-01 1.312320E-01 1.067882E-01 8.290835E-02 6.009435E-02 3.906609E-02 2.088337E-02 7.142319E-03 0.000000E+00 2.369273E+00 2.331242E+00 2.293688E+00 2.256605E+00 2.219988E+00 2.183833E+00 2.148136E+00 2.112890E+00 2.078093E+00 2.043739E+00 2.009824E+00 1.976343E+00 1.943291E+00 1.910664E+00 1.878458E+00 1.846669E+00 1.815290E+00 1.784320E+00 1.753751E+00 1.723582E+00 1.693806E+00 1.664420E+00 1.635420E+00 1.606800E+00 1.578556E+00 1.550685E+00 1.523181E+00 1.496040E+00 1.469258E+00 1.442830E+00 1.416751E+00 1.391017E+00 1.365624E+00 1.340565E+00 1.315837E+00 1.291435E+00 1.267355E+00 1.243591E+00 1.220138E+00 1.196992E+00 1.174148E+00 1.151599E+00 1.129342E+00 1.107369E+00 1.085675E+00 1.064255E+00 1.043101E+00 1.022208E+00 1.001569E+00 9.811767E-01 9.610234E-01 9.411017E-01 9.214031E-01 9.019191E-01 8.826405E-01 8.635576E-01 8.446601E-01 8.259370E-01 8.073767E-01 7.889668E-01 7.706940E-01 7.525444E-01 7.345029E-01 7.165534E-01 6.986789E-01 6.808612E-01 6.630810E-01 6.453175E-01 6.275489E-01 6.097519E-01 5.919019E-01 5.739728E-01 5.559373E-01 5.377666E-01 5.194306E-01 5.008982E-01 4.821371E-01 4.631144E-01 4.437964E-01 4.241496E-01 4.041412E-01 3.837393E-01 3.629144E-01 3.416404E-01 3.198963E-01 2.976680E-01 2.749514E-01 2.517553E-01 2.281059E-01 2.040529E-01 1.796767E-01 1.550990E-01 1.304966E-01 1.061213E-01 8.232830E-02 5.961944E-02 3.871316E-02 2.066397E-02 7.053047E-03 0.000000E+00 2.389801E+00 2.351258E+00 2.313200E+00 2.275622E+00 2.238518E+00 2.201885E+00 2.165718E+00 2.130011E+00 2.094759E+00 2.059959E+00 2.025605E+00 1.991694E+00 1.958219E+00 1.925177E+00 1.892563E+00 1.860372E+00 1.828600E+00 1.797243E+00 1.766295E+00 1.735753E+00 1.705611E+00 1.675866E+00 1.646513E+00 1.617547E+00 1.588964E+00 1.560760E+00 1.532929E+00 1.505467E+00 1.478370E+00 1.451634E+00 1.425252E+00 1.399221E+00 1.373536E+00 1.348192E+00 1.323185E+00 1.298509E+00 1.274159E+00 1.250131E+00 1.226421E+00 1.203022E+00 1.179929E+00 1.157138E+00 1.134642E+00 1.112437E+00 1.090515E+00 1.068871E+00 1.047499E+00 1.026392E+00 1.005544E+00 9.849468E-01 9.645934E-01 9.444757E-01 9.245857E-01 9.049145E-01 8.854530E-01 8.661913E-01 8.471192E-01 8.282256E-01 8.094988E-01 7.909264E-01 7.724952E-01 7.541910E-01 7.359988E-01 7.179026E-01 6.998853E-01 6.819286E-01 6.640133E-01 6.461186E-01 6.282227E-01 6.103023E-01 5.923329E-01 5.742884E-01 5.561417E-01 5.378640E-01 5.194253E-01 5.007948E-01 4.819402E-01 4.628289E-01 4.434275E-01 4.237028E-01 4.036222E-01 3.831543E-01 3.622700E-01 3.409439E-01 3.191554E-01 2.968913E-01 2.741481E-01 2.509355E-01 2.272807E-01 2.032344E-01 1.788783E-01 1.543351E-01 1.297830E-01 1.054748E-01 8.176648E-02 5.915994E-02 3.837214E-02 2.045233E-02 6.967135E-03 0.000000E+00 2.409903E+00 2.370857E+00 2.332304E+00 2.294240E+00 2.256658E+00 2.219555E+00 2.182926E+00 2.146765E+00 2.111068E+00 2.075830E+00 2.041046E+00 2.006711E+00 1.972822E+00 1.939372E+00 1.906357E+00 1.873773E+00 1.841615E+00 1.809878E+00 1.778558E+00 1.747650E+00 1.717150E+00 1.687052E+00 1.657354E+00 1.628048E+00 1.599133E+00 1.570601E+00 1.542450E+00 1.514674E+00 1.487269E+00 1.460230E+00 1.433552E+00 1.407230E+00 1.381260E+00 1.355636E+00 1.330354E+00 1.305409E+00 1.280797E+00 1.256511E+00 1.232547E+00 1.208901E+00 1.185566E+00 1.162537E+00 1.139809E+00 1.117375E+00 1.095231E+00 1.073369E+00 1.051783E+00 1.030467E+00 1.009414E+00 9.886171E-01 9.680679E-01 9.477589E-01 9.276819E-01 9.078279E-01 8.881878E-01 8.687516E-01 8.495091E-01 8.304490E-01 8.115599E-01 7.928290E-01 7.742432E-01 7.557884E-01 7.374494E-01 7.192102E-01 7.010537E-01 6.829616E-01 6.649147E-01 6.468922E-01 6.288724E-01 6.108320E-01 5.927464E-01 5.745897E-01 5.563349E-01 5.379531E-01 5.194148E-01 5.006889E-01 4.817436E-01 4.625463E-01 4.430640E-01 4.232637E-01 4.031132E-01 3.825814E-01 3.616399E-01 3.402634E-01 3.184322E-01 2.961337E-01 2.733651E-01 2.501369E-01 2.264774E-01 2.024382E-01 1.781021E-01 1.535930E-01 1.290902E-01 1.048476E-01 8.122191E-02 5.871502E-02 3.804236E-02 2.024802E-02 6.884384E-03 0.000000E+00 2.429598E+00 2.390057E+00 2.351017E+00 2.312475E+00 2.274424E+00 2.236859E+00 2.199776E+00 2.163170E+00 2.127035E+00 2.091366E+00 2.056160E+00 2.021410E+00 1.987112E+00 1.953262E+00 1.919854E+00 1.886884E+00 1.854347E+00 1.822237E+00 1.790552E+00 1.759285E+00 1.728433E+00 1.697990E+00 1.667952E+00 1.638314E+00 1.609072E+00 1.580220E+00 1.551754E+00 1.523670E+00 1.495963E+00 1.468627E+00 1.441658E+00 1.415051E+00 1.388802E+00 1.362904E+00 1.337354E+00 1.312146E+00 1.287275E+00 1.262737E+00 1.238526E+00 1.214637E+00 1.191064E+00 1.167803E+00 1.144847E+00 1.122191E+00 1.099828E+00 1.077752E+00 1.055958E+00 1.034438E+00 1.013185E+00 9.921920E-01 9.714516E-01 9.509556E-01 9.306958E-01 9.106633E-01 8.908486E-01 8.712420E-01 8.518331E-01 8.326107E-01 8.135629E-01 7.946774E-01 7.759409E-01 7.573391E-01 7.388569E-01 7.204782E-01 7.021860E-01 6.839620E-01 6.657869E-01 6.476399E-01 6.294994E-01 6.113420E-01 5.931433E-01 5.748776E-01 5.565174E-01 5.380346E-01 5.193992E-01 5.005807E-01 4.815473E-01 4.622665E-01 4.427057E-01 4.228322E-01 4.026139E-01 3.820204E-01 3.610234E-01 3.395983E-01 3.177259E-01 2.953943E-01 2.726014E-01 2.493586E-01 2.256949E-01 2.016631E-01 1.773469E-01 1.528715E-01 1.284172E-01 1.042388E-01 8.069371E-02 5.828391E-02 3.772321E-02 2.005061E-02 6.804607E-03 0.000000E+00 2.448900E+00 2.408872E+00 2.369355E+00 2.330343E+00 2.291830E+00 2.253812E+00 2.216283E+00 2.179238E+00 2.142673E+00 2.106582E+00 2.070960E+00 2.035802E+00 2.001104E+00 1.966860E+00 1.933066E+00 1.899717E+00 1.866807E+00 1.834333E+00 1.802288E+00 1.770669E+00 1.739471E+00 1.708689E+00 1.678318E+00 1.648354E+00 1.618791E+00 1.589625E+00 1.560851E+00 1.532465E+00 1.504461E+00 1.476834E+00 1.449581E+00 1.422694E+00 1.396171E+00 1.370005E+00 1.344191E+00 1.318725E+00 1.293602E+00 1.268816E+00 1.244363E+00 1.220236E+00 1.196431E+00 1.172942E+00 1.149763E+00 1.126889E+00 1.104312E+00 1.082028E+00 1.060029E+00 1.038309E+00 1.016860E+00 9.956760E-01 9.747486E-01 9.540699E-01 9.336314E-01 9.134243E-01 8.934392E-01 8.736660E-01 8.540945E-01 8.347134E-01 8.155108E-01 7.964743E-01 7.775906E-01 7.588453E-01 7.402233E-01 7.217087E-01 7.032841E-01 6.849314E-01 6.666313E-01 6.483630E-01 6.301048E-01 6.118336E-01 5.935248E-01 5.751526E-01 5.566901E-01 5.381088E-01 5.193792E-01 5.004706E-01 4.813515E-01 4.619897E-01 4.423527E-01 4.224080E-01 4.021241E-01 3.814706E-01 3.604199E-01 3.389479E-01 3.170359E-01 2.946724E-01 2.718563E-01 2.485996E-01 2.249324E-01 2.009082E-01 1.766119E-01 1.521697E-01 1.277629E-01 1.036473E-01 8.018104E-02 5.786590E-02 3.741414E-02 1.985974E-02 6.727637E-03 0.000000E+00 2.467825E+00 2.427320E+00 2.387332E+00 2.347857E+00 2.308890E+00 2.270426E+00 2.232459E+00 2.194984E+00 2.157995E+00 2.121489E+00 2.085459E+00 2.049901E+00 2.014809E+00 1.980178E+00 1.946005E+00 1.912283E+00 1.879007E+00 1.846174E+00 1.813777E+00 1.781813E+00 1.750275E+00 1.719160E+00 1.688462E+00 1.658177E+00 1.628300E+00 1.598826E+00 1.569750E+00 1.541066E+00 1.512771E+00 1.484860E+00 1.457326E+00 1.430166E+00 1.403374E+00 1.376944E+00 1.350873E+00 1.325154E+00 1.299783E+00 1.274755E+00 1.250064E+00 1.225705E+00 1.201672E+00 1.177960E+00 1.154563E+00 1.131474E+00 1.108689E+00 1.086200E+00 1.064000E+00 1.042085E+00 1.020445E+00 9.990733E-01 9.779629E-01 9.571053E-01 9.364921E-01 9.161143E-01 8.959625E-01 8.760266E-01 8.562962E-01 8.367600E-01 8.174062E-01 7.982222E-01 7.791946E-01 7.603092E-01 7.415509E-01 7.229034E-01 7.043496E-01 6.858714E-01 6.674493E-01 6.490628E-01 6.306899E-01 6.123075E-01 5.938914E-01 5.754157E-01 5.568535E-01 5.381764E-01 5.193549E-01 5.003587E-01 4.811563E-01 4.617157E-01 4.420046E-01 4.219909E-01 4.016432E-01 3.809317E-01 3.598291E-01 3.383116E-01 3.163613E-01 2.939672E-01 2.711289E-01 2.478591E-01 2.241888E-01 2.001725E-01 1.758960E-01 1.514865E-01 1.271264E-01 1.030724E-01 7.968313E-02 5.746032E-02 3.711462E-02 1.967505E-02 6.653317E-03 0.000000E+00 2.557276E+00 2.514489E+00 2.472260E+00 2.430584E+00 2.389453E+00 2.348864E+00 2.308809E+00 2.269284E+00 2.230282E+00 2.191798E+00 2.153827E+00 2.116362E+00 2.079399E+00 2.042931E+00 2.006954E+00 1.971462E+00 1.936449E+00 1.901910E+00 1.867841E+00 1.834235E+00 1.801087E+00 1.768392E+00 1.736145E+00 1.704340E+00 1.672972E+00 1.642036E+00 1.611527E+00 1.581438E+00 1.551766E+00 1.522504E+00 1.493648E+00 1.465191E+00 1.437128E+00 1.409454E+00 1.382164E+00 1.355251E+00 1.328710E+00 1.302537E+00 1.276724E+00 1.251267E+00 1.226160E+00 1.201397E+00 1.176971E+00 1.152876E+00 1.129105E+00 1.105653E+00 1.082512E+00 1.059676E+00 1.037136E+00 1.014885E+00 9.929149E-01 9.712176E-01 9.497843E-01 9.286056E-01 9.076720E-01 8.869731E-01 8.664982E-01 8.462360E-01 8.261742E-01 8.063002E-01 7.866004E-01 7.670603E-01 7.476647E-01 7.283974E-01 7.092412E-01 6.901776E-01 6.711873E-01 6.522498E-01 6.333433E-01 6.144448E-01 5.955300E-01 5.765735E-01 5.575486E-01 5.384274E-01 5.191810E-01 4.997795E-01 4.801922E-01 4.603881E-01 4.403358E-01 4.200046E-01 3.993645E-01 3.783872E-01 3.570473E-01 3.353235E-01 3.131999E-01 2.906687E-01 2.677324E-01 2.444075E-01 2.207285E-01 1.967544E-01 1.725753E-01 1.483231E-01 1.241846E-01 1.004205E-01 7.739157E-02 5.559868E-02 3.574435E-02 1.883376E-02 6.316736E-03 0.000000E+00 2.639158E+00 2.594255E+00 2.549948E+00 2.506230E+00 2.463095E+00 2.420537E+00 2.378549E+00 2.337126E+00 2.296261E+00 2.255948E+00 2.216181E+00 2.176955E+00 2.138262E+00 2.100097E+00 2.062455E+00 2.025329E+00 1.988714E+00 1.952603E+00 1.916991E+00 1.881873E+00 1.847242E+00 1.813092E+00 1.779419E+00 1.746216E+00 1.713478E+00 1.681199E+00 1.649373E+00 1.617995E+00 1.587059E+00 1.556559E+00 1.526489E+00 1.496844E+00 1.467618E+00 1.438805E+00 1.410398E+00 1.382393E+00 1.354784E+00 1.327564E+00 1.300727E+00 1.274269E+00 1.248181E+00 1.222459E+00 1.197096E+00 1.172084E+00 1.147418E+00 1.123090E+00 1.099093E+00 1.075420E+00 1.052063E+00 1.029014E+00 1.006265E+00 9.838068E-01 9.616309E-01 9.397277E-01 9.180872E-01 8.966990E-01 8.755521E-01 8.546348E-01 8.339348E-01 8.134394E-01 7.931345E-01 7.730058E-01 7.530378E-01 7.332141E-01 7.135174E-01 6.939294E-01 6.744305E-01 6.550004E-01 6.356173E-01 6.162581E-01 5.968990E-01 5.775146E-01 5.580785E-01 5.385632E-01 5.189402E-01 4.991801E-01 4.792530E-01 4.591286E-01 4.387765E-01 4.181669E-01 3.972712E-01 3.760625E-01 3.545173E-01 3.326158E-01 3.103447E-01 2.876984E-01 2.646822E-01 2.413157E-01 2.176368E-01 1.937079E-01 1.696232E-01 1.455183E-01 1.215838E-01 9.808333E-02 7.537927E-02 5.397080E-02 3.455237E-02 1.810684E-02 6.028549E-03 0.000000E+00 2.714647E+00 2.667769E+00 2.621524E+00 2.575902E+00 2.530899E+00 2.486507E+00 2.442719E+00 2.399529E+00 2.356930E+00 2.314915E+00 2.273479E+00 2.232614E+00 2.192314E+00 2.152572E+00 2.113383E+00 2.074740E+00 2.036637E+00 1.999068E+00 1.962026E+00 1.925505E+00 1.889499E+00 1.854003E+00 1.819009E+00 1.784512E+00 1.750505E+00 1.716984E+00 1.683941E+00 1.651370E+00 1.619266E+00 1.587623E+00 1.556433E+00 1.525692E+00 1.495392E+00 1.465528E+00 1.436094E+00 1.407083E+00 1.378489E+00 1.350306E+00 1.322528E+00 1.295149E+00 1.268161E+00 1.241559E+00 1.215335E+00 1.189482E+00 1.163994E+00 1.138863E+00 1.114082E+00 1.089643E+00 1.065539E+00 1.041760E+00 1.018299E+00 9.951458E-01 9.722922E-01 9.497280E-01 9.274431E-01 9.054269E-01 8.836681E-01 8.621549E-01 8.408748E-01 8.198146E-01 7.989605E-01 7.782978E-01 7.578108E-01 7.374832E-01 7.172975E-01 6.972353E-01 6.772771E-01 6.574024E-01 6.375895E-01 6.178155E-01 5.980566E-01 5.782875E-01 5.584823E-01 5.386136E-01 5.186535E-01 4.985729E-01 4.783426E-01 4.579329E-01 4.373144E-01 4.164580E-01 3.953365E-01 3.739242E-01 3.521989E-01 3.301429E-01 3.077445E-01 2.850004E-01 2.619184E-01 2.385206E-01 2.148480E-01 1.909662E-01 1.669725E-01 1.430059E-01 1.192601E-01 9.600110E-02 7.359222E-02 5.253063E-02 3.350276E-02 1.747062E-02 5.778368E-03 0.000000E+00 2.784662E+00 2.735935E+00 2.687873E+00 2.640469E+00 2.593716E+00 2.547606E+00 2.502133E+00 2.457290E+00 2.413068E+00 2.369462E+00 2.326464E+00 2.284068E+00 2.242266E+00 2.201052E+00 2.160419E+00 2.120360E+00 2.080869E+00 2.041939E+00 2.003563E+00 1.965735E+00 1.928448E+00 1.891696E+00 1.855473E+00 1.819771E+00 1.784584E+00 1.749907E+00 1.715732E+00 1.682053E+00 1.648864E+00 1.616158E+00 1.583929E+00 1.552170E+00 1.520875E+00 1.490036E+00 1.459649E+00 1.429706E+00 1.400200E+00 1.371126E+00 1.342476E+00 1.314245E+00 1.286425E+00 1.259009E+00 1.231990E+00 1.205361E+00 1.179114E+00 1.153243E+00 1.127739E+00 1.102594E+00 1.077801E+00 1.053351E+00 1.029234E+00 1.005442E+00 9.819657E-01 9.587944E-01 9.359180E-01 9.133255E-01 8.910056E-01 8.689463E-01 8.471349E-01 8.255579E-01 8.042015E-01 7.830507E-01 7.620898E-01 7.413023E-01 7.206706E-01 7.001764E-01 6.797999E-01 6.595207E-01 6.393172E-01 6.191665E-01 5.990449E-01 5.789273E-01 5.587880E-01 5.385999E-01 5.183353E-01 4.979658E-01 4.774626E-01 4.567966E-01 4.359391E-01 4.148621E-01 3.935390E-01 3.719457E-01 3.500612E-01 3.278692E-01 3.053599E-01 2.825319E-01 2.593951E-01 2.359740E-01 2.123123E-01 1.884783E-01 1.645721E-01 1.407358E-01 1.171654E-01 9.412888E-02 7.199013E-02 5.124398E-02 3.256902E-02 1.690773E-02 5.558648E-03 0.000000E+00 2.849941E+00 2.799472E+00 2.749701E+00 2.700619E+00 2.652220E+00 2.604496E+00 2.557439E+00 2.511042E+00 2.465296E+00 2.420195E+00 2.375731E+00 2.331898E+00 2.288687E+00 2.246091E+00 2.204103E+00 2.162716E+00 2.121924E+00 2.081718E+00 2.042093E+00 2.003041E+00 1.964554E+00 1.926628E+00 1.889253E+00 1.852424E+00 1.816134E+00 1.780376E+00 1.745144E+00 1.710430E+00 1.676227E+00 1.642529E+00 1.609330E+00 1.576622E+00 1.544398E+00 1.512652E+00 1.481376E+00 1.450564E+00 1.420210E+00 1.390306E+00 1.360846E+00 1.331822E+00 1.303228E+00 1.275055E+00 1.247298E+00 1.219948E+00 1.192998E+00 1.166440E+00 1.140265E+00 1.114467E+00 1.089036E+00 1.063963E+00 1.039240E+00 1.014857E+00 9.908047E-01 9.670724E-01 9.436496E-01 9.205253E-01 8.976878E-01 8.751249E-01 8.528239E-01 8.307710E-01 8.089523E-01 7.873525E-01 7.659560E-01 7.447460E-01 7.237049E-01 7.028143E-01 6.820544E-01 6.614048E-01 6.408438E-01 6.203487E-01 5.998957E-01 5.794602E-01 5.590162E-01 5.385373E-01 5.179958E-01 4.973639E-01 4.766131E-01 4.557150E-01 4.346415E-01 4.133655E-01 3.918613E-01 3.701058E-01 3.480792E-01 3.257666E-01 3.031597E-01 2.802591E-01 2.570764E-01 2.336383E-01 2.099909E-01 1.862048E-01 1.623828E-01 1.386693E-01 1.152627E-01 9.243228E-02 7.054219E-02 5.008480E-02 3.173105E-02 1.640509E-02 5.363767E-03 0.000000E+00 2.911080E+00 2.858965E+00 2.807579E+00 2.756914E+00 2.706961E+00 2.657713E+00 2.609161E+00 2.561298E+00 2.514115E+00 2.467604E+00 2.421759E+00 2.376570E+00 2.332031E+00 2.288133E+00 2.244870E+00 2.202234E+00 2.160216E+00 2.118811E+00 2.078010E+00 2.037807E+00 1.998193E+00 1.959162E+00 1.920706E+00 1.882818E+00 1.845492E+00 1.808720E+00 1.772495E+00 1.736809E+00 1.701656E+00 1.667029E+00 1.632920E+00 1.599322E+00 1.566229E+00 1.533632E+00 1.501525E+00 1.469901E+00 1.438753E+00 1.408073E+00 1.377855E+00 1.348090E+00 1.318773E+00 1.289895E+00 1.261449E+00 1.233426E+00 1.205819E+00 1.178621E+00 1.151822E+00 1.125414E+00 1.099389E+00 1.073738E+00 1.048451E+00 1.023518E+00 9.989306E-01 9.746770E-01 9.507470E-01 9.271291E-01 9.038116E-01 8.807819E-01 8.580272E-01 8.355337E-01 8.132870E-01 7.912720E-01 7.694728E-01 7.478725E-01 7.264535E-01 7.051972E-01 6.840838E-01 6.630930E-01 6.422029E-01 6.213909E-01 6.006335E-01 5.799059E-01 5.591826E-01 5.384370E-01 5.176421E-01 4.967703E-01 4.757935E-01 4.546839E-01 4.334140E-01 4.119573E-01 3.902890E-01 3.683870E-01 3.462327E-01 3.238123E-01 3.011191E-01 2.781550E-01 2.549337E-01 2.314836E-01 2.078529E-01 1.841145E-01 1.603734E-01 1.367762E-01 1.135229E-01 9.088437E-02 6.922442E-02 4.903290E-02 3.097335E-02 1.595270E-02 5.189440E-03 0.000000E+00 2.968568E+00 2.914894E+00 2.861978E+00 2.809812E+00 2.758388E+00 2.707696E+00 2.657729E+00 2.608478E+00 2.559935E+00 2.512091E+00 2.464938E+00 2.418468E+00 2.372674E+00 2.327546E+00 2.283077E+00 2.239260E+00 2.196086E+00 2.153548E+00 2.111637E+00 2.070347E+00 2.029669E+00 1.989596E+00 1.950121E+00 1.911235E+00 1.872933E+00 1.835205E+00 1.798044E+00 1.761444E+00 1.725396E+00 1.689894E+00 1.654929E+00 1.620495E+00 1.586583E+00 1.553187E+00 1.520299E+00 1.487912E+00 1.456018E+00 1.424610E+00 1.393680E+00 1.363221E+00 1.333226E+00 1.303686E+00 1.274594E+00 1.245941E+00 1.217720E+00 1.189921E+00 1.162538E+00 1.135561E+00 1.108980E+00 1.082788E+00 1.056974E+00 1.031528E+00 1.006440E+00 9.817006E-01 9.572975E-01 9.332194E-01 9.094545E-01 8.859901E-01 8.628131E-01 8.399096E-01 8.172650E-01 7.948641E-01 7.726908E-01 7.507282E-01 7.289585E-01 7.073631E-01 6.859222E-01 6.646153E-01 6.434207E-01 6.223158E-01 6.012771E-01 5.802799E-01 5.592988E-01 5.383076E-01 5.172795E-01 4.961871E-01 4.750028E-01 4.536992E-01 4.322495E-01 4.106278E-01 3.888101E-01 3.667751E-01 3.445052E-01 3.219879E-01 2.992176E-01 2.761979E-01 2.529438E-01 2.294858E-01 2.058737E-01 1.821825E-01 1.585191E-01 1.350320E-01 1.119231E-01 8.946376E-02 6.801780E-02 4.807230E-02 3.028371E-02 1.554268E-02 5.032344E-03 0.000000E+00 3.022815E+00 2.967658E+00 2.913288E+00 2.859697E+00 2.806874E+00 2.754812E+00 2.703501E+00 2.652933E+00 2.603098E+00 2.553989E+00 2.505596E+00 2.457911E+00 2.410926E+00 2.364631E+00 2.319020E+00 2.274084E+00 2.229813E+00 2.186202E+00 2.143240E+00 2.100921E+00 2.059236E+00 2.018178E+00 1.977737E+00 1.937908E+00 1.898682E+00 1.860050E+00 1.822006E+00 1.784541E+00 1.747648E+00 1.711319E+00 1.675547E+00 1.640323E+00 1.605640E+00 1.571489E+00 1.537865E+00 1.504758E+00 1.472161E+00 1.440066E+00 1.408467E+00 1.377354E+00 1.346720E+00 1.316557E+00 1.286858E+00 1.257612E+00 1.228813E+00 1.200452E+00 1.172519E+00 1.145007E+00 1.117905E+00 1.091205E+00 1.064896E+00 1.038969E+00 1.013414E+00 9.882182E-01 9.633720E-01 9.388633E-01 9.146798E-01 8.908088E-01 8.672370E-01 8.439503E-01 8.209341E-01 7.981730E-01 7.756507E-01 7.533503E-01 7.312538E-01 7.093425E-01 6.875968E-01 6.659959E-01 6.445183E-01 6.231412E-01 6.018413E-01 5.805941E-01 5.593742E-01 5.381556E-01 5.169117E-01 4.956155E-01 4.742397E-01 4.527575E-01 4.311423E-01 4.093691E-01 3.874145E-01 3.652580E-01 3.428829E-01 3.202779E-01 2.974386E-01 2.743697E-01 2.510878E-01 2.276251E-01 2.040330E-01 1.803883E-01 1.567997E-01 1.334173E-01 1.104443E-01 8.815318E-02 6.690699E-02 4.719022E-02 2.965238E-02 1.516882E-02 4.889853E-03 0.000000E+00 3.074164E+00 3.017594E+00 2.961839E+00 2.906889E+00 2.852735E+00 2.799367E+00 2.746777E+00 2.694955E+00 2.643891E+00 2.593577E+00 2.544004E+00 2.495164E+00 2.447046E+00 2.399643E+00 2.352945E+00 2.306945E+00 2.261634E+00 2.217002E+00 2.173043E+00 2.129746E+00 2.087106E+00 2.045111E+00 2.003756E+00 1.963031E+00 1.922928E+00 1.883440E+00 1.844558E+00 1.806274E+00 1.768580E+00 1.731469E+00 1.694931E+00 1.658959E+00 1.623546E+00 1.588682E+00 1.554360E+00 1.520573E+00 1.487311E+00 1.454568E+00 1.422335E+00 1.390605E+00 1.359368E+00 1.328617E+00 1.298344E+00 1.268540E+00 1.239196E+00 1.210303E+00 1.181853E+00 1.153836E+00 1.126244E+00 1.099065E+00 1.072291E+00 1.045912E+00 1.019915E+00 9.942916E-01 9.690290E-01 9.441156E-01 9.195391E-01 8.952864E-01 8.713442E-01 8.476982E-01 8.243337E-01 8.012350E-01 7.783858E-01 7.557691E-01 7.333670E-01 7.111604E-01 6.891298E-01 6.672543E-01 6.455125E-01 6.238816E-01 6.023383E-01 5.808581E-01 5.594159E-01 5.379859E-01 5.165415E-01 4.950562E-01 4.735030E-01 4.518553E-01 4.300873E-01 4.081742E-01 3.860936E-01 3.638256E-01 3.413545E-01 3.186697E-01 2.957680E-01 2.726555E-01 2.493501E-01 2.258853E-01 2.023142E-01 1.787151E-01 1.551984E-01 1.319157E-01 1.090715E-01 8.693855E-02 6.587954E-02 4.637623E-02 2.907146E-02 1.482608E-02 4.759865E-03 0.000000E+00 3.122906E+00 3.064986E+00 3.007908E+00 2.951661E+00 2.896236E+00 2.841622E+00 2.787811E+00 2.734792E+00 2.682556E+00 2.631094E+00 2.580395E+00 2.530452E+00 2.481255E+00 2.432795E+00 2.385062E+00 2.338049E+00 2.291745E+00 2.246143E+00 2.201233E+00 2.157007E+00 2.113456E+00 2.070571E+00 2.028345E+00 1.986768E+00 1.945833E+00 1.905530E+00 1.865851E+00 1.826789E+00 1.788334E+00 1.750479E+00 1.713215E+00 1.676533E+00 1.640426E+00 1.604885E+00 1.569902E+00 1.535469E+00 1.501578E+00 1.468220E+00 1.435387E+00 1.403071E+00 1.371264E+00 1.339956E+00 1.309140E+00 1.278806E+00 1.248947E+00 1.219552E+00 1.190612E+00 1.162119E+00 1.134062E+00 1.106433E+00 1.079219E+00 1.052412E+00 1.026000E+00 9.999724E-01 9.743172E-01 9.490224E-01 9.240755E-01 8.994634E-01 8.751725E-01 8.511884E-01 8.274961E-01 8.040801E-01 7.809238E-01 7.580100E-01 7.353208E-01 7.128372E-01 6.905393E-01 6.684065E-01 6.464171E-01 6.245486E-01 6.027775E-01 5.810795E-01 5.594298E-01 5.378023E-01 5.161711E-01 4.945095E-01 4.727912E-01 4.509898E-01 4.290798E-01 4.070373E-01 3.848402E-01 3.624694E-01 3.399100E-01 3.171523E-01 2.941942E-01 2.710429E-01 2.477174E-01 2.242527E-01 2.007032E-01 1.771489E-01 1.537015E-01 1.305140E-01 1.077917E-01 8.580816E-02 6.492514E-02 4.562178E-02 2.853448E-02 1.451036E-02 4.640675E-03 0.000000E+00 3.508765E+00 3.439879E+00 3.372058E+00 3.305288E+00 3.239556E+00 3.174848E+00 3.111151E+00 3.048453E+00 2.986741E+00 2.926002E+00 2.866224E+00 2.807394E+00 2.749501E+00 2.692531E+00 2.636473E+00 2.581316E+00 2.527046E+00 2.473653E+00 2.421125E+00 2.369451E+00 2.318618E+00 2.268616E+00 2.219433E+00 2.171059E+00 2.123482E+00 2.076691E+00 2.030675E+00 1.985424E+00 1.940926E+00 1.897170E+00 1.854147E+00 1.811845E+00 1.770254E+00 1.729362E+00 1.689160E+00 1.649637E+00 1.610783E+00 1.572587E+00 1.535039E+00 1.498128E+00 1.461845E+00 1.426177E+00 1.391115E+00 1.356649E+00 1.322766E+00 1.289456E+00 1.256708E+00 1.224511E+00 1.192854E+00 1.161724E+00 1.131110E+00 1.100999E+00 1.071380E+00 1.042239E+00 1.013563E+00 9.853379E-01 9.575506E-01 9.301863E-01 9.032299E-01 8.766657E-01 8.504776E-01 8.246488E-01 7.991619E-01 7.739986E-01 7.491401E-01 7.245669E-01 7.002586E-01 6.761941E-01 6.523514E-01 6.287082E-01 6.052412E-01 5.819266E-01 5.587402E-01 5.356573E-01 5.126531E-01 4.897028E-01 4.667824E-01 4.438681E-01 4.209380E-01 3.979715E-01 3.749512E-01 3.518630E-01 3.286977E-01 3.054524E-01 2.821319E-01 2.587515E-01 2.353392E-01 2.119390E-01 1.886151E-01 1.654573E-01 1.425868E-01 1.201642E-01 9.840033E-02 7.756847E-02 5.802148E-02 4.021347E-02 2.472736E-02 1.230318E-02 3.822732E-03 0.000000E+00 3.782585E+00 3.705629E+00 3.629909E+00 3.555410E+00 3.482116E+00 3.410010E+00 3.339077E+00 3.269301E+00 3.200667E+00 3.133160E+00 3.066764E+00 3.001466E+00 2.937248E+00 2.874099E+00 2.812002E+00 2.750943E+00 2.690909E+00 2.631886E+00 2.573858E+00 2.516813E+00 2.460737E+00 2.405617E+00 2.351438E+00 2.298188E+00 2.245854E+00 2.194421E+00 2.143878E+00 2.094212E+00 2.045409E+00 1.997457E+00 1.950343E+00 1.904054E+00 1.858579E+00 1.813903E+00 1.770017E+00 1.726905E+00 1.684558E+00 1.642963E+00 1.602106E+00 1.561978E+00 1.522564E+00 1.483853E+00 1.445833E+00 1.408491E+00 1.371815E+00 1.335792E+00 1.300411E+00 1.265657E+00 1.231518E+00 1.197982E+00 1.165034E+00 1.132661E+00 1.100850E+00 1.069587E+00 1.038856E+00 1.008642E+00 9.789322E-01 9.497090E-01 9.209569E-01 8.926590E-01 8.647984E-01 8.373572E-01 8.103172E-01 7.836594E-01 7.573643E-01 7.314116E-01 7.057806E-01 6.804498E-01 6.553970E-01 6.305996E-01 6.060343E-01 5.816777E-01 5.575057E-01 5.334945E-01 5.096199E-01 4.858584E-01 4.621871E-01 4.385840E-01 4.150290E-01 3.915042E-01 3.679945E-01 3.444891E-01 3.209824E-01 2.974751E-01 2.739768E-01 2.505073E-01 2.270997E-01 2.038033E-01 1.806878E-01 1.578480E-01 1.354096E-01 1.135367E-01 9.244081E-02 7.239220E-02 5.373411E-02 3.690000E-02 2.243327E-02 1.100105E-02 3.353494E-03 0.000000E+00 3.994661E+00 3.911298E+00 3.829313E+00 3.748688E+00 3.669404E+00 3.591443E+00 3.514786E+00 3.439417E+00 3.365318E+00 3.292470E+00 3.220857E+00 3.150461E+00 3.081267E+00 3.013256E+00 2.946414E+00 2.880722E+00 2.816165E+00 2.752727E+00 2.690392E+00 2.629145E+00 2.568970E+00 2.509851E+00 2.451773E+00 2.394721E+00 2.338681E+00 2.283636E+00 2.229573E+00 2.176477E+00 2.124333E+00 2.073127E+00 2.022845E+00 1.973472E+00 1.924994E+00 1.877398E+00 1.830669E+00 1.784793E+00 1.739758E+00 1.695549E+00 1.652153E+00 1.609556E+00 1.567744E+00 1.526705E+00 1.486424E+00 1.446888E+00 1.408083E+00 1.369995E+00 1.332610E+00 1.295915E+00 1.259895E+00 1.224537E+00 1.189825E+00 1.155745E+00 1.122281E+00 1.089420E+00 1.057145E+00 1.025440E+00 9.942893E-01 9.636764E-01 9.335839E-01 9.039946E-01 8.748903E-01 8.462526E-01 8.180625E-01 7.903003E-01 7.629460E-01 7.359786E-01 7.093771E-01 6.831195E-01 6.571833E-01 6.315460E-01 6.061841E-01 5.810741E-01 5.561925E-01 5.315154E-01 5.070194E-01 4.826818E-01 4.584803E-01 4.343944E-01 4.104052E-01 3.864962E-01 3.626546E-01 3.388714E-01 3.151436E-01 2.914746E-01 2.678769E-01 2.443735E-01 2.210009E-01 1.978119E-01 1.748797E-01 1.523020E-01 1.302071E-01 1.087604E-01 8.817296E-02 6.871121E-02 5.070960E-02 3.458451E-02 2.084852E-02 1.011462E-02 3.040135E-03 0.000000E+00 4.167591E+00 4.078907E+00 3.991721E+00 3.906013E+00 3.821763E+00 3.738950E+00 3.657554E+00 3.577555E+00 3.498934E+00 3.421671E+00 3.345747E+00 3.271144E+00 3.197841E+00 3.125822E+00 3.055068E+00 2.985559E+00 2.917280E+00 2.850211E+00 2.784335E+00 2.719635E+00 2.656094E+00 2.593695E+00 2.532420E+00 2.472254E+00 2.413179E+00 2.355179E+00 2.298238E+00 2.242340E+00 2.187469E+00 2.133609E+00 2.080745E+00 2.028859E+00 1.977939E+00 1.927967E+00 1.878928E+00 1.830809E+00 1.783593E+00 1.737265E+00 1.691812E+00 1.647218E+00 1.603469E+00 1.560549E+00 1.518444E+00 1.477139E+00 1.436619E+00 1.396870E+00 1.357876E+00 1.319622E+00 1.282094E+00 1.245275E+00 1.209151E+00 1.173706E+00 1.138924E+00 1.104788E+00 1.071283E+00 1.038392E+00 1.006097E+00 9.743811E-01 9.432268E-01 9.126157E-01 8.825288E-01 8.529474E-01 8.238514E-01 7.952209E-01 7.670351E-01 7.392728E-01 7.119124E-01 6.849315E-01 6.583077E-01 6.320179E-01 6.060386E-01 5.803465E-01 5.549180E-01 5.297297E-01 5.047584E-01 4.799818E-01 4.553785E-01 4.309288E-01 4.066146E-01 3.824209E-01 3.583360E-01 3.343529E-01 3.104699E-01 2.866927E-01 2.630360E-01 2.395250E-01 2.161987E-01 1.931123E-01 1.703413E-01 1.479856E-01 1.261748E-01 1.050749E-01 8.489552E-02 6.589957E-02 4.841350E-02 3.283930E-02 1.966454E-02 9.459683E-03 2.811945E-03 0.000000E+00 4.313483E+00 4.220244E+00 4.128609E+00 4.038555E+00 3.950059E+00 3.863101E+00 3.777656E+00 3.693705E+00 3.611226E+00 3.530198E+00 3.450599E+00 3.372410E+00 3.295610E+00 3.220178E+00 3.146096E+00 3.073342E+00 3.001899E+00 2.931745E+00 2.862863E+00 2.795234E+00 2.728838E+00 2.663658E+00 2.599675E+00 2.536872E+00 2.475229E+00 2.414730E+00 2.355357E+00 2.297092E+00 2.239918E+00 2.183819E+00 2.128777E+00 2.074775E+00 2.021796E+00 1.969825E+00 1.918844E+00 1.868838E+00 1.819791E+00 1.771686E+00 1.724507E+00 1.678240E+00 1.632867E+00 1.588373E+00 1.544743E+00 1.501960E+00 1.460008E+00 1.418872E+00 1.378536E+00 1.338984E+00 1.300200E+00 1.262168E+00 1.224871E+00 1.188293E+00 1.152416E+00 1.117226E+00 1.082702E+00 1.048830E+00 1.015590E+00 9.829643E-01 9.509349E-01 9.194825E-01 8.885880E-01 8.582314E-01 8.283926E-01 7.990509E-01 7.701852E-01 7.417737E-01 7.137946E-01 6.862251E-01 6.590425E-01 6.322235E-01 6.057448E-01 5.795828E-01 5.537139E-01 5.281150E-01 5.027632E-01 4.776365E-01 4.527141E-01 4.279768E-01 4.034075E-01 3.789920E-01 3.547197E-01 3.305848E-01 3.065871E-01 2.827339E-01 2.590414E-01 2.355367E-01 2.122605E-01 1.892700E-01 1.666423E-01 1.444786E-01 1.229096E-01 1.021010E-01 8.226118E-02 6.364935E-02 4.658493E-02 3.145749E-02 1.873369E-02 8.949342E-03 2.636184E-03 0.000000E+00 4.439586E+00 4.342363E+00 4.246837E+00 4.152983E+00 4.060778E+00 3.970198E+00 3.881219E+00 3.793819E+00 3.707974E+00 3.623662E+00 3.540860E+00 3.459547E+00 3.379699E+00 3.301297E+00 3.224318E+00 3.148742E+00 3.074547E+00 3.001713E+00 2.930219E+00 2.860045E+00 2.791172E+00 2.723580E+00 2.657248E+00 2.592158E+00 2.528291E+00 2.465627E+00 2.404149E+00 2.343836E+00 2.284671E+00 2.226636E+00 2.169713E+00 2.113883E+00 2.059129E+00 2.005434E+00 1.952779E+00 1.901148E+00 1.850523E+00 1.800888E+00 1.752226E+00 1.704520E+00 1.657753E+00 1.611908E+00 1.566968E+00 1.522918E+00 1.479740E+00 1.437417E+00 1.395933E+00 1.355271E+00 1.315414E+00 1.276345E+00 1.238047E+00 1.200502E+00 1.163694E+00 1.127605E+00 1.092216E+00 1.057509E+00 1.023467E+00 9.900699E-01 9.572987E-01 9.251342E-01 8.935564E-01 8.625450E-01 8.320792E-01 8.021381E-01 7.726998E-01 7.437426E-01 7.152438E-01 6.871808E-01 6.595303E-01 6.322691E-01 6.053736E-01 5.788202E-01 5.525854E-01 5.266461E-01 5.009798E-01 4.755646E-01 4.503803E-01 4.254080E-01 4.006314E-01 3.760369E-01 3.516150E-01 3.273606E-01 3.032750E-01 2.793664E-01 2.556525E-01 2.321618E-01 2.089365E-01 1.860351E-01 1.635360E-01 1.415414E-01 1.201823E-01 9.962442E-02 8.007447E-02 6.178821E-02 4.507875E-02 3.032479E-02 1.797514E-02 8.536534E-03 2.495374E-03 0.000000E+00 4.550579E+00 4.449813E+00 4.350829E+00 4.253599E+00 4.158099E+00 4.064304E+00 3.972188E+00 3.881727E+00 3.792896E+00 3.705672E+00 3.620030E+00 3.535948E+00 3.453402E+00 3.372368E+00 3.292826E+00 3.214751E+00 3.138122E+00 3.062917E+00 2.989115E+00 2.916693E+00 2.845631E+00 2.775909E+00 2.707504E+00 2.640398E+00 2.574569E+00 2.509997E+00 2.446663E+00 2.384547E+00 2.323629E+00 2.263891E+00 2.205313E+00 2.147876E+00 2.091562E+00 2.036351E+00 1.982226E+00 1.929169E+00 1.877161E+00 1.826185E+00 1.776222E+00 1.727256E+00 1.679268E+00 1.632241E+00 1.586157E+00 1.540998E+00 1.496748E+00 1.453389E+00 1.410903E+00 1.369273E+00 1.328481E+00 1.288509E+00 1.249340E+00 1.210956E+00 1.173337E+00 1.136467E+00 1.100327E+00 1.064897E+00 1.030159E+00 9.960939E-01 9.626810E-01 9.299007E-01 8.977327E-01 8.661562E-01 8.351499E-01 8.046923E-01 7.747614E-01 7.453350E-01 7.163901E-01 6.879039E-01 6.598529E-01 6.322135E-01 6.049622E-01 5.780752E-01 5.515292E-01 5.253011E-01 4.993684E-01 4.737097E-01 4.483049E-01 4.231357E-01 3.981862E-01 3.734436E-01 3.488989E-01 3.245480E-01 3.003930E-01 2.764432E-01 2.527174E-01 2.292452E-01 2.060701E-01 1.832514E-01 1.608687E-01 1.390249E-01 1.178513E-01 9.751306E-02 7.821537E-02 6.021077E-02 4.380664E-02 2.937209E-02 1.734032E-02 8.193245E-03 2.379232E-03 0.000000E+00 4.649661E+00 4.545705E+00 4.443607E+00 4.343339E+00 4.244875E+00 4.148187E+00 4.053250E+00 3.960037E+00 3.868523E+00 3.778682E+00 3.690490E+00 3.603922E+00 3.518952E+00 3.435558E+00 3.353715E+00 3.273400E+00 3.194589E+00 3.117260E+00 3.041389E+00 2.966954E+00 2.893933E+00 2.822304E+00 2.752044E+00 2.683134E+00 2.615550E+00 2.549273E+00 2.484281E+00 2.420554E+00 2.358072E+00 2.296813E+00 2.236759E+00 2.177889E+00 2.120183E+00 2.063623E+00 2.008189E+00 1.953862E+00 1.900623E+00 1.848453E+00 1.797334E+00 1.747248E+00 1.698175E+00 1.650098E+00 1.602998E+00 1.556857E+00 1.511657E+00 1.467379E+00 1.424006E+00 1.381518E+00 1.339899E+00 1.299129E+00 1.259189E+00 1.220062E+00 1.181729E+00 1.144171E+00 1.107367E+00 1.071300E+00 1.035950E+00 1.001296E+00 9.673190E-01 9.339976E-01 9.013113E-01 8.692389E-01 8.377587E-01 8.068488E-01 7.764869E-01 7.466502E-01 7.173159E-01 6.884604E-01 6.600603E-01 6.320919E-01 6.045313E-01 5.773550E-01 5.505395E-01 5.240616E-01 4.978992E-01 4.720310E-01 4.464372E-01 4.210997E-01 3.960032E-01 3.711353E-01 3.464878E-01 3.220571E-01 2.978462E-01 2.738654E-01 2.501341E-01 2.266831E-01 2.035566E-01 1.808151E-01 1.585387E-01 1.368310E-01 1.158232E-01 9.568009E-02 7.660527E-02 5.884828E-02 4.271125E-02 2.855469E-02 1.679804E-02 7.901607E-03 2.281263E-03 0.000000E+00 4.739115E+00 4.632257E+00 4.527327E+00 4.424296E+00 4.323136E+00 4.223820E+00 4.126319E+00 4.030606E+00 3.936655E+00 3.844439E+00 3.753932E+00 3.665107E+00 3.577940E+00 3.492405E+00 3.408476E+00 3.326130E+00 3.245342E+00 3.166088E+00 3.088343E+00 3.012085E+00 2.937290E+00 2.863936E+00 2.791999E+00 2.721457E+00 2.652288E+00 2.584469E+00 2.517980E+00 2.452798E+00 2.388902E+00 2.326272E+00 2.264885E+00 2.204722E+00 2.145763E+00 2.087986E+00 2.031372E+00 1.975901E+00 1.921553E+00 1.868309E+00 1.816150E+00 1.765057E+00 1.715009E+00 1.665988E+00 1.617976E+00 1.570953E+00 1.524899E+00 1.479798E+00 1.435629E+00 1.392373E+00 1.350012E+00 1.308527E+00 1.267899E+00 1.228108E+00 1.189135E+00 1.150961E+00 1.113566E+00 1.076931E+00 1.041034E+00 1.005856E+00 9.713755E-01 9.375724E-01 9.044250E-01 8.719117E-01 8.400105E-01 8.086992E-01 7.779549E-01 7.477548E-01 7.180755E-01 6.888936E-01 6.601851E-01 6.319263E-01 6.040933E-01 5.766623E-01 5.496098E-01 5.229129E-01 4.965494E-01 4.704982E-01 4.447397E-01 4.192562E-01 3.940327E-01 3.690573E-01 3.443221E-01 3.198245E-01 2.955679E-01 2.715633E-01 2.478310E-01 2.244026E-01 2.013231E-01 1.786537E-01 1.564751E-01 1.348912E-01 1.140334E-01 9.406562E-02 7.519013E-02 5.765361E-02 4.175340E-02 2.784220E-02 1.632720E-02 7.649614E-03 2.197142E-03 0.000000E+00 4.820624E+00 4.711104E+00 4.603576E+00 4.498012E+00 4.394382E+00 4.292655E+00 4.192805E+00 4.094802E+00 3.998619E+00 3.904228E+00 3.811601E+00 3.720711E+00 3.631533E+00 3.544038E+00 3.458202E+00 3.373999E+00 3.291403E+00 3.210389E+00 3.130933E+00 3.053010E+00 2.976595E+00 2.901665E+00 2.828197E+00 2.756166E+00 2.685550E+00 2.616326E+00 2.548471E+00 2.481963E+00 2.416780E+00 2.352899E+00 2.290300E+00 2.228960E+00 2.168859E+00 2.109975E+00 2.052288E+00 1.995777E+00 1.940422E+00 1.886202E+00 1.833098E+00 1.781090E+00 1.730157E+00 1.680281E+00 1.631441E+00 1.583617E+00 1.536791E+00 1.490943E+00 1.446053E+00 1.402102E+00 1.359071E+00 1.316939E+00 1.275688E+00 1.235297E+00 1.195747E+00 1.157017E+00 1.119088E+00 1.081939E+00 1.045550E+00 1.009900E+00 9.749670E-01 9.407305E-01 9.071684E-01 8.742590E-01 8.419797E-01 8.103080E-01 7.792209E-01 7.486952E-01 7.187071E-01 6.892331E-01 6.602491E-01 6.317311E-01 6.036552E-01 5.759974E-01 5.487342E-01 5.218429E-01 4.953012E-01 4.690882E-01 4.431845E-01 4.175726E-01 3.922379E-01 3.671689E-01 3.423582E-01 3.178035E-01 2.935090E-01 2.694862E-01 2.457562E-01 2.223512E-01 1.993169E-01 1.767151E-01 1.546270E-01 1.331566E-01 1.124355E-01 9.262677E-02 7.393134E-02 5.659319E-02 4.090525E-02 2.721312E-02 1.591291E-02 7.428853E-03 2.123859E-03 0.000000E+00 4.895470E+00 4.783489E+00 4.673563E+00 4.565659E+00 4.459746E+00 4.355796E+00 4.253778E+00 4.153662E+00 4.055419E+00 3.959021E+00 3.864439E+00 3.771646E+00 3.680613E+00 3.591313E+00 3.503720E+00 3.417806E+00 3.333545E+00 3.250911E+00 3.169879E+00 3.090424E+00 3.012519E+00 2.936140E+00 2.861263E+00 2.787863E+00 2.715918E+00 2.645402E+00 2.576292E+00 2.508566E+00 2.442200E+00 2.377172E+00 2.313460E+00 2.251040E+00 2.189892E+00 2.129993E+00 2.071322E+00 2.013859E+00 1.957580E+00 1.902467E+00 1.848498E+00 1.795652E+00 1.743910E+00 1.693250E+00 1.643654E+00 1.595099E+00 1.547567E+00 1.501037E+00 1.455489E+00 1.410903E+00 1.367260E+00 1.324538E+00 1.282719E+00 1.241781E+00 1.201705E+00 1.162470E+00 1.124055E+00 1.086440E+00 1.049603E+00 1.013523E+00 9.781792E-01 9.435491E-01 9.096109E-01 8.763422E-01 8.437204E-01 8.117225E-01 7.803251E-01 7.495048E-01 7.192378E-01 6.895000E-01 6.602675E-01 6.315159E-01 6.032212E-01 5.753596E-01 5.479074E-01 5.208417E-01 4.941405E-01 4.677829E-01 4.417498E-01 4.160240E-01 3.905909E-01 3.654395E-01 3.405627E-01 3.159589E-01 2.916326E-01 2.675960E-01 2.438706E-01 2.204894E-01 1.974984E-01 1.749602E-01 1.529562E-01 1.315908E-01 1.109951E-01 9.133182E-02 7.280038E-02 5.564231E-02 4.014638E-02 2.665172E-02 1.554436E-02 7.233231E-03 2.059248E-03 0.000000E+00 4.964645E+00 4.850379E+00 4.738223E+00 4.628145E+00 4.520113E+00 4.414097E+00 4.310066E+00 4.207988E+00 4.107834E+00 4.009573E+00 3.913178E+00 3.818619E+00 3.725866E+00 3.634892E+00 3.545669E+00 3.458169E+00 3.372366E+00 3.288232E+00 3.205740E+00 3.124865E+00 3.045580E+00 2.967860E+00 2.891679E+00 2.817013E+00 2.743837E+00 2.672127E+00 2.601857E+00 2.533005E+00 2.465547E+00 2.399458E+00 2.334718E+00 2.271301E+00 2.209186E+00 2.148350E+00 2.088772E+00 2.030428E+00 1.973299E+00 1.917361E+00 1.862595E+00 1.808978E+00 1.756490E+00 1.705109E+00 1.654815E+00 1.605588E+00 1.557405E+00 1.510248E+00 1.464095E+00 1.418926E+00 1.374721E+00 1.331458E+00 1.289117E+00 1.247678E+00 1.207119E+00 1.167420E+00 1.128560E+00 1.090517E+00 1.053270E+00 1.016797E+00 9.810767E-01 9.460868E-01 9.118047E-01 8.782079E-01 8.452733E-01 8.129776E-01 7.812973E-01 7.502086E-01 7.196875E-01 6.897098E-01 6.602512E-01 6.312875E-01 6.027943E-01 5.747477E-01 5.471243E-01 5.199010E-01 4.930558E-01 4.665681E-01 4.404186E-01 4.145906E-01 3.890697E-01 3.638451E-01 3.389102E-01 3.142636E-01 2.899104E-01 2.658633E-01 2.421443E-01 2.187868E-01 1.958375E-01 1.733592E-01 1.514339E-01 1.301658E-01 1.096861E-01 9.015669E-02 7.177570E-02 5.478230E-02 3.946142E-02 2.614618E-02 1.521342E-02 7.058206E-03 2.001705E-03 0.000000E+00 5.028938E+00 4.912537E+00 4.798298E+00 4.686190E+00 4.576180E+00 4.468235E+00 4.362325E+00 4.258416E+00 4.156478E+00 4.056481E+00 3.958395E+00 3.862188E+00 3.767832E+00 3.675297E+00 3.584556E+00 3.495579E+00 3.408338E+00 3.322805E+00 3.238954E+00 3.156757E+00 3.076188E+00 2.997219E+00 2.919826E+00 2.843982E+00 2.769661E+00 2.696839E+00 2.625491E+00 2.555593E+00 2.487118E+00 2.420045E+00 2.354349E+00 2.290006E+00 2.226994E+00 2.165288E+00 2.104867E+00 2.045708E+00 1.987789E+00 1.931087E+00 1.875581E+00 1.821249E+00 1.768070E+00 1.716022E+00 1.665082E+00 1.615232E+00 1.566448E+00 1.518711E+00 1.471998E+00 1.426290E+00 1.381564E+00 1.337801E+00 1.294978E+00 1.253076E+00 1.212072E+00 1.171944E+00 1.132673E+00 1.094236E+00 1.056611E+00 1.019776E+00 9.837098E-01 9.483886E-01 9.137902E-01 8.798915E-01 8.466694E-01 8.141002E-01 7.821602E-01 7.508252E-01 7.200711E-01 6.898736E-01 6.602082E-01 6.310503E-01 6.023757E-01 5.741605E-01 5.463809E-01 5.190140E-01 4.920379E-01 4.654320E-01 4.391772E-01 4.132569E-01 3.876569E-01 3.623667E-01 3.373802E-01 3.126961E-01 2.883201E-01 2.642651E-01 2.405538E-01 2.172198E-01 1.943105E-01 1.718890E-01 1.500374E-01 1.288602E-01 1.084882E-01 8.908276E-02 7.084061E-02 5.399874E-02 3.883850E-02 2.568744E-02 1.491391E-02 6.900318E-03 1.950014E-03 0.000000E+00 5.088984E+00 4.970579E+00 4.854387E+00 4.740375E+00 4.628509E+00 4.518756E+00 4.411083E+00 4.305459E+00 4.201849E+00 4.100224E+00 4.000553E+00 3.902803E+00 3.806945E+00 3.712949E+00 3.620785E+00 3.530425E+00 3.441839E+00 3.354998E+00 3.269875E+00 3.186441E+00 3.104670E+00 3.024534E+00 2.946007E+00 2.869061E+00 2.793671E+00 2.719811E+00 2.647456E+00 2.576579E+00 2.507157E+00 2.439164E+00 2.372576E+00 2.307369E+00 2.243519E+00 2.181002E+00 2.119795E+00 2.059875E+00 2.001220E+00 1.943806E+00 1.887611E+00 1.832613E+00 1.778790E+00 1.726120E+00 1.674580E+00 1.624150E+00 1.574806E+00 1.526529E+00 1.479297E+00 1.433087E+00 1.387878E+00 1.343650E+00 1.300380E+00 1.258047E+00 1.216630E+00 1.176105E+00 1.136453E+00 1.097650E+00 1.059675E+00 1.022505E+00 9.861176E-01 9.504899E-01 9.155988E-01 8.814211E-01 8.479332E-01 8.151113E-01 7.829314E-01 7.513693E-01 7.204005E-01 6.900003E-01 6.601443E-01 6.308079E-01 6.019666E-01 5.735962E-01 5.456734E-01 5.181749E-01 4.910791E-01 4.643652E-01 4.380144E-01 4.120101E-01 3.863385E-01 3.609892E-01 3.359564E-01 3.112393E-01 2.868436E-01 2.627830E-01 2.390803E-01 2.157697E-01 1.928988E-01 1.705311E-01 1.487490E-01 1.276569E-01 1.073854E-01 8.809527E-02 6.998195E-02 5.328030E-02 3.826832E-02 2.526838E-02 1.464097E-02 6.756872E-03 1.903234E-03 0.000000E+00 5.145303E+00 5.025009E+00 4.906977E+00 4.791172E+00 4.677559E+00 4.566104E+00 4.456773E+00 4.349533E+00 4.244350E+00 4.141194E+00 4.040031E+00 3.940830E+00 3.843560E+00 3.748190E+00 3.654689E+00 3.563028E+00 3.473178E+00 3.385108E+00 3.298789E+00 3.214195E+00 3.131295E+00 3.050063E+00 2.970470E+00 2.892491E+00 2.816097E+00 2.741263E+00 2.667962E+00 2.596168E+00 2.525856E+00 2.457001E+00 2.389577E+00 2.323560E+00 2.258925E+00 2.195648E+00 2.133706E+00 2.073074E+00 2.013729E+00 1.955648E+00 1.898809E+00 1.843188E+00 1.788762E+00 1.735510E+00 1.683409E+00 1.632436E+00 1.582570E+00 1.533789E+00 1.486070E+00 1.439392E+00 1.393733E+00 1.349071E+00 1.305383E+00 1.262649E+00 1.220846E+00 1.179952E+00 1.139944E+00 1.100801E+00 1.062500E+00 1.025018E+00 9.883319E-01 9.524190E-01 9.172558E-01 8.828188E-01 8.490841E-01 8.160276E-01 7.836252E-01 7.518523E-01 7.206843E-01 6.900966E-01 6.600642E-01 6.305625E-01 6.015671E-01 5.730537E-01 5.449986E-01 5.173789E-01 4.901728E-01 4.633597E-01 4.369209E-01 4.108399E-01 3.851030E-01 3.597001E-01 3.346257E-01 3.098791E-01 2.854666E-01 2.614020E-01 2.377086E-01 2.144210E-01 1.915871E-01 1.692706E-01 1.475541E-01 1.265421E-01 1.063648E-01 8.718242E-02 6.918916E-02 5.261790E-02 3.774346E-02 2.488334E-02 1.439075E-02 6.625738E-03 1.860623E-03 0.000000E+00 5.198322E+00 5.076244E+00 4.956474E+00 4.838974E+00 4.723710E+00 4.610647E+00 4.499749E+00 4.390983E+00 4.284316E+00 4.179713E+00 4.077143E+00 3.976572E+00 3.877969E+00 3.781302E+00 3.686540E+00 3.593652E+00 3.502609E+00 3.413380E+00 3.325935E+00 3.240245E+00 3.156281E+00 3.074016E+00 2.993420E+00 2.914467E+00 2.837127E+00 2.761376E+00 2.687185E+00 2.614527E+00 2.543378E+00 2.473711E+00 2.405501E+00 2.338722E+00 2.273348E+00 2.209357E+00 2.146722E+00 2.085420E+00 2.025428E+00 1.966720E+00 1.909275E+00 1.853069E+00 1.798078E+00 1.744280E+00 1.691652E+00 1.640170E+00 1.589814E+00 1.540559E+00 1.492385E+00 1.445268E+00 1.399186E+00 1.354117E+00 1.310039E+00 1.266929E+00 1.224765E+00 1.183524E+00 1.143185E+00 1.103723E+00 1.065117E+00 1.027343E+00 9.903780E-01 9.541988E-01 9.187816E-01 8.841025E-01 8.501376E-01 8.168624E-01 7.842526E-01 7.522834E-01 7.209300E-01 6.901676E-01 6.599712E-01 6.303160E-01 6.011775E-01 5.725312E-01 5.443537E-01 5.166218E-01 4.893138E-01 4.624091E-01 4.358891E-01 4.097376E-01 3.839408E-01 3.584891E-01 3.333769E-01 3.086041E-01 2.841770E-01 2.601099E-01 2.364264E-01 2.131614E-01 1.903630E-01 1.680954E-01 1.464410E-01 1.255046E-01 1.054159E-01 8.633459E-02 6.845370E-02 5.200420E-02 3.725790E-02 2.452775E-02 1.416015E-02 6.505204E-03 1.821588E-03 0.000000E+00 5.248403E+00 5.124633E+00 5.003214E+00 4.884109E+00 4.767280E+00 4.652692E+00 4.540310E+00 4.430099E+00 4.322025E+00 4.216053E+00 4.112149E+00 4.010281E+00 3.910416E+00 3.812522E+00 3.716566E+00 3.622518E+00 3.530346E+00 3.440020E+00 3.351509E+00 3.264783E+00 3.179814E+00 3.096571E+00 3.015027E+00 2.935153E+00 2.856920E+00 2.780301E+00 2.705269E+00 2.631796E+00 2.559856E+00 2.489423E+00 2.420470E+00 2.352971E+00 2.286901E+00 2.222235E+00 2.158947E+00 2.097014E+00 2.036410E+00 1.977112E+00 1.919096E+00 1.862338E+00 1.806814E+00 1.752501E+00 1.699376E+00 1.647416E+00 1.596598E+00 1.546898E+00 1.498295E+00 1.450765E+00 1.404285E+00 1.358834E+00 1.314388E+00 1.270925E+00 1.228422E+00 1.186856E+00 1.146204E+00 1.106444E+00 1.067551E+00 1.029504E+00 9.922772E-01 9.558482E-01 9.201929E-01 8.852871E-01 8.511065E-01 8.176266E-01 7.848226E-01 7.526699E-01 7.211432E-01 6.902176E-01 6.598681E-01 6.300697E-01 6.007977E-01 5.720277E-01 5.437361E-01 5.158999E-01 4.884972E-01 4.615076E-01 4.349126E-01 4.086958E-01 3.828441E-01 3.573475E-01 3.322010E-01 3.074046E-01 2.829649E-01 2.588965E-01 2.352233E-01 2.119804E-01 1.892163E-01 1.669953E-01 1.454000E-01 1.245350E-01 1.045300E-01 8.554384E-02 6.776850E-02 5.143313E-02 3.680670E-02 2.419786E-02 1.394665E-02 6.393876E-03 1.785646E-03 0.000000E+00 5.295848E+00 5.170471E+00 5.047485E+00 4.926853E+00 4.808537E+00 4.692501E+00 4.578709E+00 4.467125E+00 4.357714E+00 4.250441E+00 4.145271E+00 4.042171E+00 3.941108E+00 3.842048E+00 3.744960E+00 3.649810E+00 3.556567E+00 3.465200E+00 3.375678E+00 3.287970E+00 3.202047E+00 3.117878E+00 3.035434E+00 2.954687E+00 2.875607E+00 2.798166E+00 2.722337E+00 2.648092E+00 2.575403E+00 2.504243E+00 2.434587E+00 2.366407E+00 2.299677E+00 2.234373E+00 2.170467E+00 2.107936E+00 2.046755E+00 1.986898E+00 1.928342E+00 1.871062E+00 1.815034E+00 1.760235E+00 1.706641E+00 1.654229E+00 1.602974E+00 1.552854E+00 1.503845E+00 1.455925E+00 1.409071E+00 1.363259E+00 1.318466E+00 1.274670E+00 1.231847E+00 1.189975E+00 1.149029E+00 1.108987E+00 1.069825E+00 1.031519E+00 9.940467E-01 9.573829E-01 9.215035E-01 8.863845E-01 8.520013E-01 8.183290E-01 7.853429E-01 7.530178E-01 7.213286E-01 6.902500E-01 6.597570E-01 6.298244E-01 6.004274E-01 5.715418E-01 5.431437E-01 5.152101E-01 4.877192E-01 4.606506E-01 4.339858E-01 4.077086E-01 3.818059E-01 3.562682E-01 3.310903E-01 3.062726E-01 2.818220E-01 2.577532E-01 2.340905E-01 2.108693E-01 1.881383E-01 1.659619E-01 1.444229E-01 1.236258E-01 1.036999E-01 8.480358E-02 6.712771E-02 5.089968E-02 3.638577E-02 2.389058E-02 1.374814E-02 6.290606E-03 1.752405E-03 0.000000E+00 5.668556E+00 5.530359E+00 5.394887E+00 5.262098E+00 5.131946E+00 5.004387E+00 4.879381E+00 4.756885E+00 4.636856E+00 4.519254E+00 4.404039E+00 4.291172E+00 4.180611E+00 4.072320E+00 3.966258E+00 3.862390E+00 3.760678E+00 3.661084E+00 3.563574E+00 3.468111E+00 3.374659E+00 3.283185E+00 3.193653E+00 3.106031E+00 3.020284E+00 2.936380E+00 2.854286E+00 2.773970E+00 2.695401E+00 2.618546E+00 2.543376E+00 2.469859E+00 2.397965E+00 2.327666E+00 2.258930E+00 2.191730E+00 2.126037E+00 2.061822E+00 1.999057E+00 1.937715E+00 1.877768E+00 1.819188E+00 1.761949E+00 1.706024E+00 1.651386E+00 1.598009E+00 1.545866E+00 1.494932E+00 1.445179E+00 1.396583E+00 1.349118E+00 1.302757E+00 1.257474E+00 1.213245E+00 1.170043E+00 1.127842E+00 1.086616E+00 1.046340E+00 1.006987E+00 9.685318E-01 9.309474E-01 8.942077E-01 8.582863E-01 8.231566E-01 7.887921E-01 7.551663E-01 7.222525E-01 6.900244E-01 6.584556E-01 6.275200E-01 5.971922E-01 5.674471E-01 5.382605E-01 5.096092E-01 4.814715E-01 4.538271E-01 4.266579E-01 3.999485E-01 3.736867E-01 3.478639E-01 3.224764E-01 2.975261E-01 2.730216E-01 2.489794E-01 2.254255E-01 2.023970E-01 1.799440E-01 1.581318E-01 1.370434E-01 1.167821E-01 9.747458E-02 7.927361E-02 6.236116E-02 4.695044E-02 3.328645E-02 2.164239E-02 1.230686E-02 5.547924E-03 1.516221E-03 0.000000E+00 5.930329E+00 5.782935E+00 5.638512E+00 5.497013E+00 5.358387E+00 5.222586E+00 5.089564E+00 4.959272E+00 4.831666E+00 4.706698E+00 4.584324E+00 4.464501E+00 4.347183E+00 4.232328E+00 4.119894E+00 4.009838E+00 3.902119E+00 3.796697E+00 3.693531E+00 3.592581E+00 3.493809E+00 3.397177E+00 3.302645E+00 3.210177E+00 3.119735E+00 3.031284E+00 2.944787E+00 2.860208E+00 2.777514E+00 2.696668E+00 2.617637E+00 2.540388E+00 2.464887E+00 2.391101E+00 2.318998E+00 2.248547E+00 2.179715E+00 2.112472E+00 2.046786E+00 1.982628E+00 1.919967E+00 1.858773E+00 1.799018E+00 1.740670E+00 1.683702E+00 1.628084E+00 1.573788E+00 1.520786E+00 1.469048E+00 1.418548E+00 1.369257E+00 1.321147E+00 1.274191E+00 1.228360E+00 1.183627E+00 1.139964E+00 1.097344E+00 1.055739E+00 1.015121E+00 9.754621E-01 9.367350E-01 8.989117E-01 8.619645E-01 8.258654E-01 7.905868E-01 7.561008E-01 7.223800E-01 6.893967E-01 6.571239E-01 6.255349E-01 5.946034E-01 5.643040E-01 5.346120E-01 5.055040E-01 4.769581E-01 4.489540E-01 4.214740E-01 3.945029E-01 3.680289E-01 3.420441E-01 3.165455E-01 2.915358E-01 2.670245E-01 2.430291E-01 2.195764E-01 1.967044E-01 1.744636E-01 1.529197E-01 1.321551E-01 1.122718E-01 9.339391E-02 7.566983E-02 5.927470E-02 4.441146E-02 3.131013E-02 2.022249E-02 1.140706E-02 5.090877E-03 1.373511E-03 0.000000E+00 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/diffraction/2007/h12007jetsdpdf_singlet.data��������������������������������0000755�0001750�0001750�00000347144�11754474775�025236� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������-6.907755E+00-6.837980E+00-6.768205E+00-6.698429E+00-6.628654E+00-6.558879E+00 -6.489103E+00-6.419328E+00-6.349553E+00-6.279778E+00-6.210002E+00-6.140227E+00 -6.070452E+00-6.000676E+00-5.930901E+00-5.861126E+00-5.791350E+00-5.721575E+00 -5.651800E+00-5.582024E+00-5.512249E+00-5.442474E+00-5.372699E+00-5.302923E+00 -5.233148E+00-5.163373E+00-5.093597E+00-5.023822E+00-4.954047E+00-4.884271E+00 -4.814496E+00-4.744721E+00-4.674945E+00-4.605170E+00-4.535395E+00-4.465620E+00 -4.395844E+00-4.326069E+00-4.256294E+00-4.186518E+00-4.116743E+00-4.046968E+00 -3.977192E+00-3.907417E+00-3.837642E+00-3.767867E+00-3.698091E+00-3.628316E+00 -3.558541E+00-3.488765E+00-3.418990E+00-3.349215E+00-3.279439E+00-3.209664E+00 -3.139889E+00-3.070113E+00-3.000338E+00-2.930563E+00-2.860788E+00-2.791012E+00 -2.721237E+00-2.651462E+00-2.581686E+00-2.511911E+00-2.442136E+00-2.372360E+00 -2.302585E+00-2.232810E+00-2.163034E+00-2.093259E+00-2.023484E+00-1.953709E+00 -1.883933E+00-1.814158E+00-1.744383E+00-1.674607E+00-1.604832E+00-1.535057E+00 -1.465281E+00-1.395506E+00-1.325731E+00-1.255956E+00-1.186180E+00-1.116405E+00 -1.046630E+00-9.768543E-01-9.070790E-01-8.373037E-01-7.675284E-01-6.977531E-01 -6.279778E-01-5.582024E-01-4.884271E-01-4.186518E-01-3.488765E-01-2.791012E-01 -2.093259E-01-1.395506E-01-6.977531E-02 0.000000E+00 1.96000E+00 2.00000E+00 2.10000E+00 2.20000E+00 2.30000E+00 2.40000E+00 2.50000E+00 3.00000E+00 3.50000E+00 4.00000E+00 4.50000E+00 5.00000E+00 6.00000E+00 7.00000E+00 8.00000E+00 9.00000E+00 1.00000E+01 1.10000E+01 1.20000E+01 1.30000E+01 1.40000E+01 1.50000E+01 1.60000E+01 1.70000E+01 1.80000E+01 1.90000E+01 2.00000E+01 2.02500E+01 2.10000E+01 2.20000E+01 2.30000E+01 2.40000E+01 2.50000E+01 2.60000E+01 2.70000E+01 2.80000E+01 2.90000E+01 3.00000E+01 3.10000E+01 3.20000E+01 3.30000E+01 3.40000E+01 3.50000E+01 3.60000E+01 3.70000E+01 3.80000E+01 3.90000E+01 4.00000E+01 4.10000E+01 4.20000E+01 4.30000E+01 4.40000E+01 4.50000E+01 4.60000E+01 4.70000E+01 4.80000E+01 4.90000E+01 5.00000E+01 5.50000E+01 6.00000E+01 6.50000E+01 7.00000E+01 7.50000E+01 8.00000E+01 8.50000E+01 9.00000E+01 9.50000E+01 1.00000E+02 1.50000E+02 2.00000E+02 2.50000E+02 3.00000E+02 3.50000E+02 4.00000E+02 4.50000E+02 5.00000E+02 5.50000E+02 6.00000E+02 6.50000E+02 7.00000E+02 7.50000E+02 8.00000E+02 8.50000E+02 9.00000E+02 9.50000E+02 1.00000E+03 1.50000E+03 2.00000E+03 -2.169067E-02-2.163436E-02-2.157600E-02-2.151556E-02-2.145301E-02-2.138831E-02 -2.132143E-02-2.125233E-02-2.118095E-02-2.110726E-02-2.103119E-02-2.095268E-02 -2.087168E-02-2.078810E-02-2.070185E-02-2.061285E-02-2.052100E-02-2.042617E-02 -2.032824E-02-2.022705E-02-2.012245E-02-2.001425E-02-1.990224E-02-1.978620E-02 -1.966586E-02-1.954093E-02-1.941108E-02-1.927596E-02-1.913515E-02-1.898820E-02 -1.883459E-02-1.867375E-02-1.850505E-02-1.832777E-02-1.814112E-02-1.794421E-02 -1.773605E-02-1.751554E-02-1.728145E-02-1.703241E-02-1.676690E-02-1.648324E-02 -1.617954E-02-1.585371E-02-1.550345E-02-1.512618E-02-1.471904E-02-1.427889E-02 -1.380222E-02-1.328515E-02-1.272340E-02-1.211222E-02-1.144637E-02-1.072007E-02 -9.926923E-03-9.059880E-03-8.111174E-03-7.072252E-03-5.933700E-03-4.685171E-03 -3.315302E-03-1.811628E-03-1.604931E-04 1.653046E-03 3.645315E-03 5.834119E-03 8.238845E-03 1.088055E-02 1.378206E-02 1.696805E-02 2.046509E-02 2.430172E-02 2.850841E-02 3.311760E-02 3.816353E-02 4.368211E-02 4.971065E-02 5.628740E-02 6.345097E-02 7.123952E-02 7.968953E-02 8.883430E-02 9.870175E-02 1.093116E-01 1.206716E-01 1.327721E-01 1.455795E-01 1.590260E-01 1.729975E-01 1.873142E-01 2.017051E-01 2.157691E-01 2.289164E-01 2.402751E-01 2.485311E-01 2.516282E-01 2.461265E-01 2.255109E-01 1.737028E-01 0.000000E+00 -2.002826E-02-1.997269E-02-1.991525E-02-1.985589E-02-1.979460E-02-1.973132E-02 -1.966603E-02-1.959868E-02-1.952922E-02-1.945761E-02-1.938379E-02-1.930770E-02 -1.922926E-02-1.914841E-02-1.906505E-02-1.897910E-02-1.889043E-02-1.879895E-02 -1.870451E-02-1.860696E-02-1.850613E-02-1.840184E-02-1.829388E-02-1.818201E-02 -1.806597E-02-1.794546E-02-1.782016E-02-1.768968E-02-1.755363E-02-1.741153E-02 -1.726288E-02-1.710709E-02-1.694352E-02-1.677146E-02-1.659010E-02-1.639855E-02 -1.619581E-02-1.598079E-02-1.575223E-02-1.550878E-02-1.524891E-02-1.497092E-02 -1.467293E-02-1.435285E-02-1.400836E-02-1.363690E-02-1.323559E-02-1.280130E-02 -1.233052E-02-1.181936E-02-1.126356E-02-1.065837E-02-9.998566E-03-9.278356E-03 -8.491368E-03-7.630568E-03-6.688208E-03-5.655756E-03-4.523824E-03-3.282099E-03 -1.919253E-03-4.228680E-04 1.220663E-03 3.026223E-03 5.010066E-03 7.189918E-03 9.585072E-03 1.221648E-02 1.510684E-02 1.828068E-02 2.176441E-02 2.558637E-02 2.977683E-02 3.436796E-02 3.939372E-02 4.488969E-02 5.089278E-02 5.744081E-02 6.457190E-02 7.232361E-02 8.073176E-02 8.982889E-02 9.964204E-02 1.101900E-01 1.214792E-01 1.334988E-01 1.462136E-01 1.595544E-01 1.734049E-01 1.875834E-01 2.018164E-01 2.157005E-01 2.286435E-01 2.397711E-01 2.477677E-01 2.505777E-01 2.447670E-01 2.238407E-01 1.717777E-01 0.000000E+00 -1.590443E-02-1.585345E-02-1.580098E-02-1.574698E-02-1.569143E-02-1.563430E-02 -1.557553E-02-1.551508E-02-1.545292E-02-1.538898E-02-1.532320E-02-1.525552E-02 -1.518587E-02-1.511417E-02-1.504032E-02-1.496423E-02-1.488578E-02-1.480485E-02 -1.472129E-02-1.463495E-02-1.454565E-02-1.445320E-02-1.435738E-02-1.425795E-02 -1.415462E-02-1.404710E-02-1.393504E-02-1.381807E-02-1.369576E-02-1.356762E-02 -1.343315E-02-1.329175E-02-1.314275E-02-1.298544E-02-1.281900E-02-1.264252E-02 -1.245499E-02-1.225530E-02-1.204221E-02-1.181432E-02-1.157011E-02-1.130786E-02 -1.102569E-02-1.072151E-02-1.039298E-02-1.003752E-02-9.652295E-03-9.234130E-03 -8.779532E-03-8.284634E-03-7.745161E-03-7.156388E-03-6.513101E-03-5.809541E-03 -5.039363E-03-4.195569E-03-3.270455E-03-2.255542E-03-1.141510E-03 8.188263E-05 1.425870E-03 2.902769E-03 4.526061E-03 6.310487E-03 8.272137E-03 1.042854E-02 1.279877E-02 1.540353E-02 1.826521E-02 2.140800E-02 2.485792E-02 2.864286E-02 3.279258E-02 3.733864E-02 4.231431E-02 4.775440E-02 5.369490E-02 6.017259E-02 6.722440E-02 7.488652E-02 8.319320E-02 9.217516E-02 1.018574E-01 1.122563E-01 1.233756E-01 1.352015E-01 1.476951E-01 1.607835E-01 1.743457E-01 1.881954E-01 2.020536E-01 2.155112E-01 2.279704E-01 2.385520E-01 2.459374E-01 2.480730E-01 2.415403E-01 2.198951E-01 1.672724E-01 0.000000E+00 -1.183260E-02-1.178962E-02-1.174549E-02-1.170019E-02-1.165369E-02-1.160593E-02 -1.155689E-02-1.150651E-02-1.145475E-02-1.140155E-02-1.134685E-02-1.129058E-02 -1.123265E-02-1.117299E-02-1.111150E-02-1.104808E-02-1.098260E-02-1.091493E-02 -1.084493E-02-1.077243E-02-1.069726E-02-1.061919E-02-1.053802E-02-1.045348E-02 -1.036529E-02-1.027313E-02-1.017667E-02-1.007549E-02-9.969180E-03-9.857244E-03 -9.739143E-03-9.614278E-03-9.481982E-03-9.341515E-03-9.192049E-03-9.032670E-03 -8.862359E-03-8.679987E-03-8.484297E-03-8.273898E-03-8.047245E-03-7.802625E-03 -7.538139E-03-7.251684E-03-6.940930E-03-6.603295E-03-6.235926E-03-5.835662E-03 -5.399010E-03-4.922109E-03-4.400692E-03-3.830050E-03-3.204984E-03-2.519762E-03 -1.768062E-03-9.429257E-04-3.668886E-05 9.590754E-04 2.053628E-03 3.257137E-03 4.580754E-03 6.036696E-03 7.638331E-03 9.400265E-03 1.133843E-02 1.347019E-02 1.581440E-02 1.839151E-02 2.122367E-02 2.433473E-02 2.775035E-02 3.149801E-02 3.560697E-02 4.010824E-02 4.503447E-02 5.041972E-02 5.629915E-02 6.270859E-02 6.968383E-02 7.725982E-02 8.546934E-02 9.434144E-02 1.038992E-01 1.141568E-01 1.251157E-01 1.367590E-01 1.490447E-01 1.618962E-01 1.751888E-01 1.887313E-01 2.022402E-01 2.153013E-01 2.273118E-01 2.373884E-01 2.442102E-01 2.457270E-01 2.385362E-01 2.162452E-01 1.631569E-01 0.000000E+00 -7.817961E-03-7.785910E-03-7.753025E-03-7.719274E-03-7.684620E-03-7.649024E-03 -7.612443E-03-7.574828E-03-7.536126E-03-7.496278E-03-7.455219E-03-7.412874E-03 -7.369163E-03-7.323997E-03-7.277274E-03-7.228883E-03-7.178701E-03-7.126588E-03 -7.072392E-03-7.015943E-03-6.957049E-03-6.895498E-03-6.831057E-03-6.763463E-03 -6.692424E-03-6.617618E-03-6.538684E-03-6.455222E-03-6.366786E-03-6.272883E-03 -6.172963E-03-6.066417E-03-5.952567E-03-5.830660E-03-5.699863E-03-5.559247E-03 -5.407787E-03-5.244341E-03-5.067646E-03-4.876300E-03-4.668751E-03-4.443278E-03 -4.197977E-03-3.930739E-03-3.639230E-03-3.320866E-03-2.972792E-03-2.591850E-03 -2.174549E-03-1.717036E-03-1.215055E-03-6.639071E-04-5.841285E-05 6.071394E-04 1.339042E-03 2.144222E-03 3.030302E-03 4.005662E-03 5.079504E-03 6.261928E-03 7.564009E-03 8.997870E-03 1.057677E-02 1.231519E-02 1.422893E-02 1.633516E-02 1.865256E-02 2.120136E-02 2.400344E-02 2.708237E-02 3.046346E-02 3.417379E-02 3.824219E-02 4.269915E-02 4.757672E-02 5.290828E-02 5.872822E-02 6.507146E-02 7.197277E-02 7.946590E-02 8.758231E-02 9.634948E-02 1.057887E-01 1.159123E-01 1.267191E-01 1.381898E-01 1.502796E-01 1.629083E-01 1.759477E-01 1.892024E-01 2.023847E-01 2.150759E-01 2.266687E-01 2.362763E-01 2.425764E-01 2.435228E-01 2.357295E-01 2.128555E-01 1.593793E-01 0.000000E+00 -3.863966E-03-3.845368E-03-3.826208E-03-3.806453E-03-3.786064E-03-3.765001E-03 -3.743218E-03-3.720665E-03-3.697284E-03-3.673014E-03-3.647786E-03-3.621523E-03 -3.594139E-03-3.565541E-03-3.535622E-03-3.504267E-03-3.471347E-03-3.436716E-03 -3.400217E-03-3.361670E-03-3.320880E-03-3.277628E-03-3.231672E-03-3.182740E-03 -3.130536E-03-3.074725E-03-3.014941E-03-2.950773E-03-2.881769E-03-2.807424E-03 -2.727180E-03-2.640418E-03-2.546451E-03-2.444517E-03-2.333773E-03-2.213283E-03 -2.082010E-03-1.938805E-03-1.782396E-03-1.611375E-03-1.424182E-03-1.219090E-03 -9.941886E-04-7.473650E-04-4.762815E-04-1.783539E-04 1.492741E-04 5.097585E-04 9.065846E-04 1.343600E-03 1.825052E-03 2.355624E-03 2.940481E-03 3.585311E-03 4.296381E-03 5.080587E-03 5.945513E-03 6.899490E-03 7.951670E-03 9.112089E-03 1.039174E-02 1.180267E-02 1.335803E-02 1.507219E-02 1.696080E-02 1.904089E-02 2.133095E-02 2.385100E-02 2.662268E-02 2.966928E-02 3.301580E-02 3.668896E-02 4.071715E-02 4.513039E-02 4.996018E-02 5.523926E-02 6.100128E-02 6.728033E-02 7.411023E-02 8.152363E-02 8.955070E-02 9.821752E-02 1.075438E-01 1.175397E-01 1.282022E-01 1.395096E-01 1.514142E-01 1.638328E-01 1.766337E-01 1.896181E-01 2.024941E-01 2.148389E-01 2.260415E-01 2.352121E-01 2.410276E-01 2.414462E-01 2.330989E-01 2.096964E-01 1.558968E-01 0.000000E+00 2.724710E-05 3.021641E-05 3.350921E-05 3.716074E-05 4.121005E-05 4.570045E-05 5.067996E-05 5.620182E-05 6.232506E-05 6.911512E-05 7.664457E-05 8.499385E-05 9.425214E-05 1.045183E-04 1.159020E-04 1.285247E-04 1.425210E-04 1.580403E-04 1.752481E-04 1.943277E-04 2.154825E-04 2.389379E-04 2.649434E-04 2.937758E-04 3.257418E-04 3.611811E-04 4.004702E-04 4.440262E-04 4.923111E-04 5.458369E-04 6.051703E-04 6.709395E-04 7.438397E-04 8.246410E-04 9.141960E-04 1.013449E-03 1.123443E-03 1.245336E-03 1.380408E-03 1.530073E-03 1.695897E-03 1.879613E-03 2.083136E-03 2.308583E-03 2.558292E-03 2.834851E-03 3.141114E-03 3.480236E-03 3.855696E-03 4.271336E-03 4.731393E-03 5.240538E-03 5.803918E-03 6.427203E-03 7.116633E-03 7.879075E-03 8.722073E-03 9.653918E-03 1.068371E-02 1.182142E-02 1.307798E-02 1.446535E-02 1.599658E-02 1.768593E-02 1.954893E-02 2.160245E-02 2.386483E-02 2.635587E-02 2.909700E-02 3.211125E-02 3.542332E-02 3.905958E-02 4.304802E-02 4.741823E-02 5.220118E-02 5.742900E-02 6.313469E-02 6.935151E-02 7.611242E-02 8.344902E-02 9.139032E-02 9.996103E-02 1.091793E-01 1.190536E-01 1.295790E-01 1.407313E-01 1.524604E-01 1.646804E-01 1.772563E-01 1.899859E-01 2.025738E-01 2.145934E-01 2.254305E-01 2.341925E-01 2.395563E-01 2.394847E-01 2.306263E-01 2.067426E-01 1.526737E-01 0.000000E+00 1.853050E-02 1.843143E-02 1.833192E-02 1.823201E-02 1.813175E-02 1.803121E-02 1.793043E-02 1.782948E-02 1.772844E-02 1.762739E-02 1.752641E-02 1.742560E-02 1.732508E-02 1.722495E-02 1.712536E-02 1.702643E-02 1.692833E-02 1.683124E-02 1.673534E-02 1.664084E-02 1.654798E-02 1.645700E-02 1.636819E-02 1.628185E-02 1.619832E-02 1.611797E-02 1.604121E-02 1.596849E-02 1.590030E-02 1.583719E-02 1.577976E-02 1.572867E-02 1.568466E-02 1.564851E-02 1.562113E-02 1.560347E-02 1.559663E-02 1.560178E-02 1.562023E-02 1.565341E-02 1.570293E-02 1.577052E-02 1.585812E-02 1.596785E-02 1.610206E-02 1.626334E-02 1.645452E-02 1.667875E-02 1.693948E-02 1.724053E-02 1.758607E-02 1.798072E-02 1.842955E-02 1.893814E-02 1.951261E-02 2.015970E-02 2.088679E-02 2.170198E-02 2.261414E-02 2.363300E-02 2.476917E-02 2.603426E-02 2.744093E-02 2.900295E-02 3.073531E-02 3.265426E-02 3.477740E-02 3.712373E-02 3.971369E-02 4.256923E-02 4.571379E-02 4.917229E-02 5.297107E-02 5.713779E-02 6.170125E-02 6.669107E-02 7.213736E-02 7.807013E-02 8.451853E-02 9.150985E-02 9.906819E-02 1.072126E-01 1.159549E-01 1.252963E-01 1.352234E-01 1.457031E-01 1.566746E-01 1.680406E-01 1.796535E-01 1.912975E-01 2.026629E-01 2.133093E-01 2.226103E-01 2.296659E-01 2.331566E-01 2.310737E-01 2.201518E-01 1.943963E-01 1.395407E-01 0.000000E+00 3.549058E-02 3.526551E-02 3.503978E-02 3.481345E-02 3.458657E-02 3.435921E-02 3.413144E-02 3.390333E-02 3.367497E-02 3.344646E-02 3.321788E-02 3.298937E-02 3.276104E-02 3.253301E-02 3.230545E-02 3.207850E-02 3.185235E-02 3.162719E-02 3.140322E-02 3.118067E-02 3.095980E-02 3.074088E-02 3.052420E-02 3.031011E-02 3.009894E-02 2.989111E-02 2.968705E-02 2.948721E-02 2.929212E-02 2.910236E-02 2.891853E-02 2.874133E-02 2.857151E-02 2.840989E-02 2.825738E-02 2.811497E-02 2.798376E-02 2.786495E-02 2.775986E-02 2.766994E-02 2.759679E-02 2.754217E-02 2.750802E-02 2.749646E-02 2.750983E-02 2.755072E-02 2.762195E-02 2.772665E-02 2.786824E-02 2.805050E-02 2.827756E-02 2.855400E-02 2.888480E-02 2.927548E-02 2.973205E-02 3.026115E-02 3.087003E-02 3.156662E-02 3.235963E-02 3.325856E-02 3.427381E-02 3.541668E-02 3.669951E-02 3.813572E-02 3.973986E-02 4.152769E-02 4.351624E-02 4.572386E-02 4.817026E-02 5.087652E-02 5.386509E-02 5.715978E-02 6.078564E-02 6.476884E-02 6.913649E-02 7.391626E-02 7.913604E-02 8.482329E-02 9.100425E-02 9.770290E-02 1.049396E-01 1.127290E-01 1.210780E-01 1.299824E-01 1.394227E-01 1.493585E-01 1.597215E-01 1.704059E-01 1.812548E-01 1.920427E-01 2.024503E-01 2.120281E-01 2.201426E-01 2.258917E-01 2.279642E-01 2.243819E-01 2.119614E-01 1.849285E-01 1.298325E-01 0.000000E+00 5.106941E-02 5.070674E-02 5.034358E-02 4.997998E-02 4.961602E-02 4.925177E-02 4.888729E-02 4.852268E-02 4.815804E-02 4.779346E-02 4.742906E-02 4.706496E-02 4.670129E-02 4.633820E-02 4.597585E-02 4.561441E-02 4.525407E-02 4.489504E-02 4.453753E-02 4.418179E-02 4.382809E-02 4.347672E-02 4.312798E-02 4.278223E-02 4.243984E-02 4.210122E-02 4.176681E-02 4.143710E-02 4.111264E-02 4.079399E-02 4.048181E-02 4.017678E-02 3.987967E-02 3.959133E-02 3.931267E-02 3.904470E-02 3.878852E-02 3.854535E-02 3.831651E-02 3.810347E-02 3.790783E-02 3.773135E-02 3.757596E-02 3.744379E-02 3.733717E-02 3.725868E-02 3.721112E-02 3.719760E-02 3.722152E-02 3.728661E-02 3.739699E-02 3.755716E-02 3.777207E-02 3.804715E-02 3.838835E-02 3.880219E-02 3.929581E-02 3.987704E-02 4.055442E-02 4.133729E-02 4.223582E-02 4.326112E-02 4.442525E-02 4.574132E-02 4.722354E-02 4.888726E-02 5.074906E-02 5.282677E-02 5.513947E-02 5.770757E-02 6.055272E-02 6.369780E-02 6.716684E-02 7.098480E-02 7.517740E-02 7.977078E-02 8.479102E-02 9.026352E-02 9.621219E-02 1.026584E-01 1.096193E-01 1.171063E-01 1.251224E-01 1.336588E-01 1.426913E-01 1.521740E-01 1.620325E-01 1.721545E-01 1.823760E-01 1.924645E-01 2.020934E-01 2.108070E-01 2.179677E-01 2.226744E-01 2.236257E-01 2.188737E-01 2.053105E-01 1.773596E-01 1.222924E-01 0.000000E+00 6.544248E-02 6.493717E-02 6.443182E-02 6.392647E-02 6.342119E-02 6.291607E-02 6.241120E-02 6.190665E-02 6.140254E-02 6.089897E-02 6.039607E-02 5.989396E-02 5.939278E-02 5.889270E-02 5.839387E-02 5.789648E-02 5.740073E-02 5.690683E-02 5.641503E-02 5.592555E-02 5.543869E-02 5.495475E-02 5.447405E-02 5.399695E-02 5.352382E-02 5.305510E-02 5.259124E-02 5.213273E-02 5.168013E-02 5.123403E-02 5.079507E-02 5.036396E-02 4.994148E-02 4.952848E-02 4.912588E-02 4.873470E-02 4.835605E-02 4.799115E-02 4.764133E-02 4.730805E-02 4.699291E-02 4.669768E-02 4.642428E-02 4.617484E-02 4.595168E-02 4.575736E-02 4.559467E-02 4.546669E-02 4.537680E-02 4.532871E-02 4.532649E-02 4.537460E-02 4.547794E-02 4.564187E-02 4.587228E-02 4.617561E-02 4.655891E-02 4.702988E-02 4.759694E-02 4.826929E-02 4.905694E-02 4.997078E-02 5.102267E-02 5.222547E-02 5.359307E-02 5.514051E-02 5.688398E-02 5.884086E-02 6.102974E-02 6.347043E-02 6.618393E-02 6.919236E-02 7.251888E-02 7.618744E-02 8.022264E-02 8.464930E-02 8.949202E-02 9.477448E-02 1.005187E-01 1.067437E-01 1.134643E-01 1.206891E-01 1.284177E-01 1.366380E-01 1.453214E-01 1.544178E-01 1.638481E-01 1.734944E-01 1.831874E-01 1.926889E-01 2.016671E-01 2.096618E-01 2.160332E-01 2.198823E-01 2.199188E-01 2.142234E-01 1.997575E-01 1.711211E-01 1.162229E-01 0.000000E+00 7.876789E-02 7.811857E-02 7.746983E-02 7.682172E-02 7.617434E-02 7.552776E-02 7.488205E-02 7.423734E-02 7.359371E-02 7.295129E-02 7.231019E-02 7.167055E-02 7.103254E-02 7.039629E-02 6.976198E-02 6.912982E-02 6.849998E-02 6.787271E-02 6.724825E-02 6.662684E-02 6.600878E-02 6.539436E-02 6.478394E-02 6.417786E-02 6.357652E-02 6.298035E-02 6.238981E-02 6.180540E-02 6.122769E-02 6.065727E-02 6.009479E-02 5.954097E-02 5.899659E-02 5.846250E-02 5.793964E-02 5.742902E-02 5.693175E-02 5.644906E-02 5.598228E-02 5.553288E-02 5.510244E-02 5.469273E-02 5.430567E-02 5.394337E-02 5.360815E-02 5.330255E-02 5.302935E-02 5.279161E-02 5.259268E-02 5.243625E-02 5.232634E-02 5.226739E-02 5.226424E-02 5.232220E-02 5.244709E-02 5.264529E-02 5.292376E-02 5.329011E-02 5.375265E-02 5.432044E-02 5.500336E-02 5.581213E-02 5.675841E-02 5.785485E-02 5.911509E-02 6.055389E-02 6.218709E-02 6.403171E-02 6.610590E-02 6.842899E-02 7.102140E-02 7.390461E-02 7.710101E-02 8.063375E-02 8.452643E-02 8.880275E-02 9.348606E-02 9.859859E-02 1.041607E-01 1.101896E-01 1.166980E-01 1.236919E-01 1.311685E-01 1.391125E-01 1.474921E-01 1.562534E-01 1.653132E-01 1.745494E-01 1.837884E-01 1.927872E-01 2.012099E-01 2.085934E-01 2.142969E-01 2.174240E-01 2.166957E-01 2.102198E-01 1.950209E-01 1.658581E-01 1.112030E-01 0.000000E+00 1.027976E-01 1.018635E-01 1.009316E-01 1.000020E-01 9.907485E-02 9.815010E-02 9.722792E-02 9.630839E-02 9.539161E-02 9.447772E-02 9.356684E-02 9.265911E-02 9.175468E-02 9.085373E-02 8.995642E-02 8.906296E-02 8.817355E-02 8.728842E-02 8.640783E-02 8.553204E-02 8.466133E-02 8.379603E-02 8.293647E-02 8.208302E-02 8.123609E-02 8.039609E-02 7.956351E-02 7.873887E-02 7.792271E-02 7.711563E-02 7.631832E-02 7.553146E-02 7.475586E-02 7.399236E-02 7.324191E-02 7.250552E-02 7.178430E-02 7.107946E-02 7.039233E-02 6.972439E-02 6.907719E-02 6.845251E-02 6.785223E-02 6.727845E-02 6.673347E-02 6.621980E-02 6.574018E-02 6.529764E-02 6.489549E-02 6.453735E-02 6.422719E-02 6.396937E-02 6.376866E-02 6.363028E-02 6.355993E-02 6.356388E-02 6.364893E-02 6.382255E-02 6.409287E-02 6.446871E-02 6.495973E-02 6.557639E-02 6.633002E-02 6.723290E-02 6.829827E-02 6.954043E-02 7.097466E-02 7.261737E-02 7.448602E-02 7.659911E-02 7.897615E-02 8.163755E-02 8.460451E-02 8.789877E-02 9.154236E-02 9.555718E-02 9.996451E-02 1.047843E-01 1.100341E-01 1.157283E-01 1.218760E-01 1.284795E-01 1.355316E-01 1.430122E-01 1.508841E-01 1.590878E-01 1.675335E-01 1.760927E-01 1.845847E-01 1.927600E-01 2.002769E-01 2.066683E-01 2.112931E-01 2.132625E-01 2.113185E-01 2.036186E-01 1.872984E-01 1.573915E-01 1.033183E-01 0.000000E+00 1.239940E-01 1.227853E-01 1.215809E-01 1.203806E-01 1.191848E-01 1.179933E-01 1.168064E-01 1.156241E-01 1.144465E-01 1.132738E-01 1.121060E-01 1.109433E-01 1.097859E-01 1.086339E-01 1.074876E-01 1.063470E-01 1.052124E-01 1.040841E-01 1.029622E-01 1.018471E-01 1.007391E-01 9.963840E-02 9.854540E-02 9.746047E-02 9.638400E-02 9.531643E-02 9.425823E-02 9.320991E-02 9.217203E-02 9.114517E-02 9.013002E-02 8.912727E-02 8.813772E-02 8.716220E-02 8.620165E-02 8.525709E-02 8.432961E-02 8.342043E-02 8.253084E-02 8.166232E-02 8.081643E-02 7.999488E-02 7.919958E-02 7.843260E-02 7.769619E-02 7.699285E-02 7.632530E-02 7.569651E-02 7.510975E-02 7.456861E-02 7.407700E-02 7.363921E-02 7.325994E-02 7.294434E-02 7.269803E-02 7.252716E-02 7.243843E-02 7.243916E-02 7.253733E-02 7.274163E-02 7.306148E-02 7.350714E-02 7.408968E-02 7.482110E-02 7.571432E-02 7.678323E-02 7.804274E-02 7.950871E-02 8.119808E-02 8.312869E-02 8.531932E-02 8.778955E-02 9.055961E-02 9.365015E-02 9.708196E-02 1.008755E-01 1.050505E-01 1.096249E-01 1.146143E-01 1.200307E-01 1.258805E-01 1.321631E-01 1.388678E-01 1.459708E-01 1.534311E-01 1.611843E-01 1.691362E-01 1.771531E-01 1.850494E-01 1.925709E-01 1.993721E-01 2.049838E-01 2.087663E-01 2.098386E-01 2.069624E-01 1.983387E-01 1.811980E-01 1.508032E-01 9.734358E-02 0.000000E+00 1.429524E-01 1.414817E-01 1.400175E-01 1.385596E-01 1.371083E-01 1.356634E-01 1.342253E-01 1.327938E-01 1.313692E-01 1.299516E-01 1.285410E-01 1.271376E-01 1.257415E-01 1.243530E-01 1.229722E-01 1.215992E-01 1.202343E-01 1.188777E-01 1.175296E-01 1.161904E-01 1.148603E-01 1.135395E-01 1.122285E-01 1.109276E-01 1.096372E-01 1.083577E-01 1.070896E-01 1.058334E-01 1.045897E-01 1.033590E-01 1.021419E-01 1.009393E-01 9.975185E-02 9.858040E-02 9.742587E-02 9.628928E-02 9.517171E-02 9.407437E-02 9.299855E-02 9.194568E-02 9.091731E-02 8.991517E-02 8.894112E-02 8.799720E-02 8.708565E-02 8.620894E-02 8.536975E-02 8.457103E-02 8.381601E-02 8.310822E-02 8.245154E-02 8.185019E-02 8.130883E-02 8.083253E-02 8.042683E-02 8.009779E-02 7.985202E-02 7.969673E-02 7.963978E-02 7.968970E-02 7.985576E-02 8.014803E-02 8.057739E-02 8.115558E-02 8.189525E-02 8.281000E-02 8.391435E-02 8.522381E-02 8.675480E-02 8.852467E-02 9.055159E-02 9.285445E-02 9.545268E-02 9.836606E-02 1.016143E-01 1.052168E-01 1.091918E-01 1.135559E-01 1.183230E-01 1.235030E-01 1.291002E-01 1.351117E-01 1.415240E-01 1.483103E-01 1.554263E-01 1.628042E-01 1.703460E-01 1.779140E-01 1.853190E-01 1.923033E-01 1.985186E-01 2.034947E-01 2.065943E-01 2.069439E-01 2.033234E-01 1.939724E-01 1.762034E-01 1.454744E-01 9.261298E-02 0.000000E+00 1.601019E-01 1.583823E-01 1.566713E-01 1.549690E-01 1.532754E-01 1.515905E-01 1.499144E-01 1.482473E-01 1.465892E-01 1.449402E-01 1.433005E-01 1.416701E-01 1.400492E-01 1.384380E-01 1.368366E-01 1.352452E-01 1.336640E-01 1.320932E-01 1.305330E-01 1.289838E-01 1.274457E-01 1.259191E-01 1.244043E-01 1.229017E-01 1.214116E-01 1.199345E-01 1.184708E-01 1.170211E-01 1.155858E-01 1.141655E-01 1.127609E-01 1.113728E-01 1.100017E-01 1.086486E-01 1.073145E-01 1.060001E-01 1.047068E-01 1.034356E-01 1.021877E-01 1.009648E-01 9.976816E-02 9.859961E-02 9.746098E-02 9.635428E-02 9.528174E-02 9.424576E-02 9.324904E-02 9.229446E-02 9.138524E-02 9.052485E-02 8.971713E-02 8.896629E-02 8.827688E-02 8.765393E-02 8.710292E-02 8.662982E-02 8.624118E-02 8.594409E-02 8.574630E-02 8.565624E-02 8.568303E-02 8.583659E-02 8.612760E-02 8.656762E-02 8.716906E-02 8.794525E-02 8.891044E-02 9.007975E-02 9.146926E-02 9.309584E-02 9.497716E-02 9.713152E-02 9.957771E-02 1.023347E-01 1.054215E-01 1.088562E-01 1.126563E-01 1.168369E-01 1.214105E-01 1.263855E-01 1.317644E-01 1.375420E-01 1.437028E-01 1.502176E-01 1.570392E-01 1.640970E-01 1.712899E-01 1.784773E-01 1.854667E-01 1.919979E-01 1.977208E-01 2.021649E-01 2.046952E-01 2.044457E-01 2.002131E-01 1.902712E-01 1.720044E-01 1.410402E-01 8.874533E-02 0.000000E+00 1.757607E-01 1.738046E-01 1.718593E-01 1.699250E-01 1.680016E-01 1.660893E-01 1.641880E-01 1.622979E-01 1.604189E-01 1.585514E-01 1.566952E-01 1.548506E-01 1.530176E-01 1.511965E-01 1.493873E-01 1.475902E-01 1.458055E-01 1.440333E-01 1.422739E-01 1.405274E-01 1.387943E-01 1.370746E-01 1.353689E-01 1.336773E-01 1.320004E-01 1.303385E-01 1.286920E-01 1.270614E-01 1.254473E-01 1.238502E-01 1.222708E-01 1.207097E-01 1.191677E-01 1.176457E-01 1.161444E-01 1.146649E-01 1.132083E-01 1.117756E-01 1.103683E-01 1.089876E-01 1.076351E-01 1.063125E-01 1.050216E-01 1.037644E-01 1.025431E-01 1.013600E-01 1.002179E-01 9.911961E-02 9.806827E-02 9.706735E-02 9.612064E-02 9.523229E-02 9.440684E-02 9.364922E-02 9.296489E-02 9.235974E-02 9.184022E-02 9.141337E-02 9.108683E-02 9.086892E-02 9.076864E-02 9.079577E-02 9.096085E-02 9.127525E-02 9.175120E-02 9.240178E-02 9.324098E-02 9.428365E-02 9.554549E-02 9.704302E-02 9.879346E-02 1.008146E-01 1.031247E-01 1.057421E-01 1.086848E-01 1.119705E-01 1.156154E-01 1.196336E-01 1.240365E-01 1.288308E-01 1.340178E-01 1.395905E-01 1.455315E-01 1.518093E-01 1.583747E-01 1.651545E-01 1.720452E-01 1.789035E-01 1.855347E-01 1.916762E-01 1.969769E-01 2.009661E-01 2.030117E-01 2.022546E-01 1.975069E-01 1.870732E-01 1.684020E-01 1.372689E-01 8.550491E-02 0.000000E+00 1.901699E-01 1.879889E-01 1.858210E-01 1.836664E-01 1.815249E-01 1.793967E-01 1.772819E-01 1.751804E-01 1.730923E-01 1.710177E-01 1.689568E-01 1.669096E-01 1.648762E-01 1.628567E-01 1.608514E-01 1.588603E-01 1.568837E-01 1.549217E-01 1.529745E-01 1.510424E-01 1.491256E-01 1.472244E-01 1.453392E-01 1.434702E-01 1.416178E-01 1.397824E-01 1.379644E-01 1.361644E-01 1.343827E-01 1.326201E-01 1.308770E-01 1.291543E-01 1.274525E-01 1.257725E-01 1.241152E-01 1.224816E-01 1.208726E-01 1.192895E-01 1.177335E-01 1.162060E-01 1.147084E-01 1.132425E-01 1.118100E-01 1.104129E-01 1.090534E-01 1.077339E-01 1.064569E-01 1.052253E-01 1.040423E-01 1.029113E-01 1.018359E-01 1.008204E-01 9.986921E-02 9.898723E-02 9.817984E-02 9.745289E-02 9.681276E-02 9.626641E-02 9.582140E-02 9.548595E-02 9.526896E-02 9.518009E-02 9.522972E-02 9.542910E-02 9.579025E-02 9.632608E-02 9.705032E-02 9.797759E-02 9.912328E-02 1.005036E-01 1.021353E-01 1.040359E-01 1.062229E-01 1.087143E-01 1.115274E-01 1.146791E-01 1.181847E-01 1.220576E-01 1.263079E-01 1.309413E-01 1.359576E-01 1.413483E-01 1.470944E-01 1.531627E-01 1.595019E-01 1.660369E-01 1.726619E-01 1.792315E-01 1.855488E-01 1.913500E-01 1.962827E-01 1.998767E-01 2.015025E-01 2.003078E-01 1.951187E-01 1.842678E-01 1.652611E-01 1.340057E-01 8.273724E-02 0.000000E+00 2.035168E-01 2.011216E-01 1.987418E-01 1.963775E-01 1.940287E-01 1.916954E-01 1.893776E-01 1.870753E-01 1.847887E-01 1.825179E-01 1.802627E-01 1.780235E-01 1.758002E-01 1.735930E-01 1.714020E-01 1.692273E-01 1.670692E-01 1.649278E-01 1.628033E-01 1.606959E-01 1.586058E-01 1.565334E-01 1.544789E-01 1.524427E-01 1.504250E-01 1.484263E-01 1.464470E-01 1.444875E-01 1.425483E-01 1.406301E-01 1.387333E-01 1.368587E-01 1.350070E-01 1.331789E-01 1.313753E-01 1.295972E-01 1.278456E-01 1.261217E-01 1.244266E-01 1.227617E-01 1.211285E-01 1.195287E-01 1.179639E-01 1.164363E-01 1.149479E-01 1.135010E-01 1.120983E-01 1.107426E-01 1.094370E-01 1.081848E-01 1.069899E-01 1.058561E-01 1.047881E-01 1.037907E-01 1.028691E-01 1.020292E-01 1.012773E-01 1.006203E-01 1.000656E-01 9.962150E-02 9.929667E-02 9.910069E-02 9.904385E-02 9.913722E-02 9.939268E-02 9.982297E-02 1.004416E-01 1.012630E-01 1.023022E-01 1.035752E-01 1.050985E-01 1.068889E-01 1.089639E-01 1.113406E-01 1.140359E-01 1.170661E-01 1.204457E-01 1.241872E-01 1.282998E-01 1.327883E-01 1.376511E-01 1.428785E-01 1.484500E-01 1.543310E-01 1.604682E-01 1.667849E-01 1.731734E-01 1.794866E-01 1.855258E-01 1.910258E-01 1.956335E-01 1.988795E-01 2.001367E-01 1.985594E-01 1.929865E-01 1.817763E-01 1.624865E-01 1.311425E-01 8.033634E-02 0.000000E+00 2.159493E-01 2.133498E-01 2.107680E-01 2.082039E-01 2.056574E-01 2.031287E-01 2.006177E-01 1.981245E-01 1.956490E-01 1.931915E-01 1.907518E-01 1.883301E-01 1.859264E-01 1.835410E-01 1.811738E-01 1.788251E-01 1.764949E-01 1.741835E-01 1.718910E-01 1.696176E-01 1.673635E-01 1.651291E-01 1.629145E-01 1.607202E-01 1.585463E-01 1.563933E-01 1.542617E-01 1.521517E-01 1.500640E-01 1.479990E-01 1.459574E-01 1.439398E-01 1.419468E-01 1.399793E-01 1.380381E-01 1.361241E-01 1.342384E-01 1.323820E-01 1.305562E-01 1.287624E-01 1.270019E-01 1.252764E-01 1.235877E-01 1.219377E-01 1.203285E-01 1.187624E-01 1.172420E-01 1.157702E-01 1.143499E-01 1.129845E-01 1.116778E-01 1.104337E-01 1.092566E-01 1.081514E-01 1.071234E-01 1.061783E-01 1.053223E-01 1.045622E-01 1.039056E-01 1.033605E-01 1.029355E-01 1.026401E-01 1.024845E-01 1.024796E-01 1.026372E-01 1.029699E-01 1.034909E-01 1.042146E-01 1.051556E-01 1.063298E-01 1.077532E-01 1.094425E-01 1.114146E-01 1.136862E-01 1.162738E-01 1.191929E-01 1.224575E-01 1.260793E-01 1.300667E-01 1.344235E-01 1.391471E-01 1.442266E-01 1.496403E-01 1.553521E-01 1.613073E-01 1.674275E-01 1.736035E-01 1.796865E-01 1.854766E-01 1.907072E-01 1.950250E-01 1.979611E-01 1.988910E-01 1.969751E-01 1.910644E-01 1.795407E-01 1.600089E-01 1.286010E-01 7.822675E-02 0.000000E+00 2.275865E-01 2.247917E-01 2.220169E-01 2.192619E-01 2.165268E-01 2.138117E-01 2.111163E-01 2.084409E-01 2.057855E-01 2.031500E-01 2.005345E-01 1.979391E-01 1.953638E-01 1.928087E-01 1.902740E-01 1.877597E-01 1.852660E-01 1.827930E-01 1.803409E-01 1.779099E-01 1.755002E-01 1.731120E-01 1.707457E-01 1.684014E-01 1.660796E-01 1.637805E-01 1.615045E-01 1.592522E-01 1.570238E-01 1.548201E-01 1.526415E-01 1.504886E-01 1.483622E-01 1.462630E-01 1.441919E-01 1.421496E-01 1.401374E-01 1.381562E-01 1.362072E-01 1.342918E-01 1.324114E-01 1.305676E-01 1.287622E-01 1.269970E-01 1.252742E-01 1.235961E-01 1.219651E-01 1.203842E-01 1.188562E-01 1.173846E-01 1.159730E-01 1.146254E-01 1.133461E-01 1.121400E-01 1.110123E-01 1.099687E-01 1.090153E-01 1.081590E-01 1.074071E-01 1.067676E-01 1.062491E-01 1.058610E-01 1.056134E-01 1.055170E-01 1.055836E-01 1.058255E-01 1.062559E-01 1.068888E-01 1.077388E-01 1.088214E-01 1.101525E-01 1.117483E-01 1.136253E-01 1.158000E-01 1.182884E-01 1.211053E-01 1.242643E-01 1.277763E-01 1.316490E-01 1.358853E-01 1.404817E-01 1.454263E-01 1.506962E-01 1.562540E-01 1.620438E-01 1.679857E-01 1.739691E-01 1.798438E-01 1.854087E-01 1.903964E-01 1.944530E-01 1.971105E-01 1.977471E-01 1.955287E-01 1.893176E-01 1.775174E-01 1.577762E-01 1.263232E-01 7.635316E-02 0.000000E+00 2.385255E-01 2.355438E-01 2.325841E-01 2.296465E-01 2.267310E-01 2.238375E-01 2.209661E-01 2.181166E-01 2.152891E-01 2.124837E-01 2.097004E-01 2.069391E-01 2.042001E-01 2.014832E-01 1.987887E-01 1.961167E-01 1.934671E-01 1.908403E-01 1.882363E-01 1.856553E-01 1.830975E-01 1.805631E-01 1.780524E-01 1.755656E-01 1.731032E-01 1.706652E-01 1.682523E-01 1.658647E-01 1.635030E-01 1.611676E-01 1.588590E-01 1.565780E-01 1.543251E-01 1.521012E-01 1.499070E-01 1.477433E-01 1.456113E-01 1.435120E-01 1.414465E-01 1.394162E-01 1.374225E-01 1.354669E-01 1.335513E-01 1.316774E-01 1.298474E-01 1.280635E-01 1.263283E-01 1.246445E-01 1.230151E-01 1.214434E-01 1.199331E-01 1.184880E-01 1.171126E-01 1.158116E-01 1.145902E-01 1.134540E-01 1.124092E-01 1.114625E-01 1.106213E-01 1.098933E-01 1.092872E-01 1.088123E-01 1.084785E-01 1.082966E-01 1.082781E-01 1.084352E-01 1.087810E-01 1.093293E-01 1.100945E-01 1.110919E-01 1.123370E-01 1.138460E-01 1.156349E-01 1.177197E-01 1.201162E-01 1.228386E-01 1.259000E-01 1.293107E-01 1.330777E-01 1.372031E-01 1.416825E-01 1.465032E-01 1.516411E-01 1.570579E-01 1.626962E-01 1.684752E-01 1.742828E-01 1.799677E-01 1.853275E-01 1.900942E-01 1.939138E-01 1.963191E-01 1.966905E-01 1.941996E-01 1.877191E-01 1.756727E-01 1.557485E-01 1.242648E-01 7.467394E-02 0.000000E+00 2.488466E-01 2.456855E-01 2.425487E-01 2.394361E-01 2.363476E-01 2.332833E-01 2.302431E-01 2.272269E-01 2.242349E-01 2.212669E-01 2.183229E-01 2.154031E-01 2.125075E-01 2.096361E-01 2.067889E-01 2.039661E-01 2.011678E-01 1.983941E-01 1.956450E-01 1.929209E-01 1.902219E-01 1.875481E-01 1.848998E-01 1.822772E-01 1.796808E-01 1.771107E-01 1.745673E-01 1.720510E-01 1.695623E-01 1.671017E-01 1.646697E-01 1.622668E-01 1.598938E-01 1.575513E-01 1.552402E-01 1.529613E-01 1.507156E-01 1.485042E-01 1.463283E-01 1.441890E-01 1.420879E-01 1.400264E-01 1.380063E-01 1.360295E-01 1.340980E-01 1.322141E-01 1.303802E-01 1.285991E-01 1.268738E-01 1.252076E-01 1.236040E-01 1.220669E-01 1.206008E-01 1.192103E-01 1.179005E-01 1.166770E-01 1.155461E-01 1.145143E-01 1.135888E-01 1.127776E-01 1.120892E-01 1.115327E-01 1.111180E-01 1.108557E-01 1.107573E-01 1.108349E-01 1.111014E-01 1.115705E-01 1.122564E-01 1.131741E-01 1.143390E-01 1.157668E-01 1.174735E-01 1.194747E-01 1.217856E-01 1.244203E-01 1.273910E-01 1.307077E-01 1.343767E-01 1.383994E-01 1.427707E-01 1.474770E-01 1.524932E-01 1.577799E-01 1.632789E-01 1.689080E-01 1.745541E-01 1.800648E-01 1.852367E-01 1.898013E-01 1.934043E-01 1.955794E-01 1.957096E-01 1.929713E-01 1.862473E-01 1.739801E-01 1.538947E-01 1.223913E-01 7.315707E-02 0.000000E+00 2.586169E-01 2.552835E-01 2.519765E-01 2.486958E-01 2.454413E-01 2.422131E-01 2.390109E-01 2.358349E-01 2.326849E-01 2.295611E-01 2.264632E-01 2.233915E-01 2.203459E-01 2.173264E-01 2.143331E-01 2.113660E-01 2.084253E-01 2.055110E-01 2.026234E-01 1.997624E-01 1.969283E-01 1.941213E-01 1.913416E-01 1.885894E-01 1.858650E-01 1.831687E-01 1.805008E-01 1.778618E-01 1.752521E-01 1.726720E-01 1.701222E-01 1.676033E-01 1.651158E-01 1.626604E-01 1.602380E-01 1.578494E-01 1.554956E-01 1.531776E-01 1.508965E-01 1.486537E-01 1.464505E-01 1.442884E-01 1.421691E-01 1.400946E-01 1.380667E-01 1.360879E-01 1.341604E-01 1.322871E-01 1.304709E-01 1.287150E-01 1.270230E-01 1.253988E-01 1.238468E-01 1.223715E-01 1.209781E-01 1.196722E-01 1.184598E-01 1.173475E-01 1.163426E-01 1.154528E-01 1.146866E-01 1.140531E-01 1.135621E-01 1.132242E-01 1.130506E-01 1.130534E-01 1.132453E-01 1.136399E-01 1.142513E-01 1.150942E-01 1.161839E-01 1.175358E-01 1.191655E-01 1.210885E-01 1.233194E-01 1.258720E-01 1.287583E-01 1.319874E-01 1.355652E-01 1.394924E-01 1.437632E-01 1.483632E-01 1.532666E-01 1.584329E-01 1.638029E-01 1.692934E-01 1.747904E-01 1.801403E-01 1.851392E-01 1.895176E-01 1.929216E-01 1.948856E-01 1.947948E-01 1.918306E-01 1.848852E-01 1.724184E-01 1.521899E-01 1.206755E-01 7.177750E-02 0.000000E+00 2.678931E-01 2.643939E-01 2.609232E-01 2.574808E-01 2.540667E-01 2.506808E-01 2.473230E-01 2.439934E-01 2.406918E-01 2.374182E-01 2.341726E-01 2.309550E-01 2.277654E-01 2.246038E-01 2.214703E-01 2.183649E-01 2.152877E-01 2.122388E-01 2.092182E-01 2.062262E-01 2.032628E-01 2.003282E-01 1.974226E-01 1.945463E-01 1.916995E-01 1.888825E-01 1.860957E-01 1.833393E-01 1.806138E-01 1.779197E-01 1.752574E-01 1.726276E-01 1.700308E-01 1.674677E-01 1.649391E-01 1.624458E-01 1.599889E-01 1.575692E-01 1.551880E-01 1.528464E-01 1.505459E-01 1.482880E-01 1.460743E-01 1.439067E-01 1.417871E-01 1.397179E-01 1.377015E-01 1.357404E-01 1.338378E-01 1.319967E-01 1.302208E-01 1.285139E-01 1.268803E-01 1.253246E-01 1.238518E-01 1.224677E-01 1.211780E-01 1.199896E-01 1.189094E-01 1.179452E-01 1.171054E-01 1.163991E-01 1.158360E-01 1.154265E-01 1.151819E-01 1.151140E-01 1.152356E-01 1.155600E-01 1.161012E-01 1.168737E-01 1.178925E-01 1.191730E-01 1.207304E-01 1.225799E-01 1.247358E-01 1.272116E-01 1.300186E-01 1.331658E-01 1.366583E-01 1.404964E-01 1.446735E-01 1.491744E-01 1.539727E-01 1.590269E-01 1.642770E-01 1.696388E-01 1.749974E-01 1.801983E-01 1.850368E-01 1.892432E-01 1.924633E-01 1.942324E-01 1.939382E-01 1.907666E-01 1.836186E-01 1.709704E-01 1.506140E-01 1.190957E-01 7.051530E-02 0.000000E+00 2.767236E-01 2.730646E-01 2.694360E-01 2.658379E-01 2.622701E-01 2.587324E-01 2.552249E-01 2.517473E-01 2.482998E-01 2.448822E-01 2.414945E-01 2.381366E-01 2.348087E-01 2.315105E-01 2.282423E-01 2.250040E-01 2.217957E-01 2.186175E-01 2.154693E-01 2.123515E-01 2.092640E-01 2.062070E-01 2.031808E-01 2.001855E-01 1.972214E-01 1.942887E-01 1.913878E-01 1.885190E-01 1.856827E-01 1.828793E-01 1.801094E-01 1.773734E-01 1.746720E-01 1.720058E-01 1.693757E-01 1.667824E-01 1.642268E-01 1.617100E-01 1.592331E-01 1.567972E-01 1.544039E-01 1.520544E-01 1.497506E-01 1.474942E-01 1.452872E-01 1.431318E-01 1.410305E-01 1.389859E-01 1.370009E-01 1.350787E-01 1.332228E-01 1.314372E-01 1.297259E-01 1.280937E-01 1.265455E-01 1.250869E-01 1.237239E-01 1.224630E-01 1.213113E-01 1.202765E-01 1.193669E-01 1.185915E-01 1.179600E-01 1.174827E-01 1.171708E-01 1.170361E-01 1.170911E-01 1.173491E-01 1.178239E-01 1.185299E-01 1.194819E-01 1.206949E-01 1.221842E-01 1.239645E-01 1.260498E-01 1.284533E-01 1.311859E-01 1.342562E-01 1.376687E-01 1.414231E-01 1.455124E-01 1.499207E-01 1.546206E-01 1.595701E-01 1.647083E-01 1.699501E-01 1.751796E-01 1.802418E-01 1.849312E-01 1.889777E-01 1.920271E-01 1.936158E-01 1.931334E-01 1.897704E-01 1.824359E-01 1.696221E-01 1.491507E-01 1.176339E-01 6.935436E-02 0.000000E+00 2.851497E-01 2.813365E-01 2.775558E-01 2.738074E-01 2.700913E-01 2.664073E-01 2.627553E-01 2.591352E-01 2.555471E-01 2.519907E-01 2.484661E-01 2.449732E-01 2.415120E-01 2.380825E-01 2.346846E-01 2.313184E-01 2.279840E-01 2.246813E-01 2.214105E-01 2.181717E-01 2.149649E-01 2.117904E-01 2.086482E-01 2.055386E-01 2.024618E-01 1.994181E-01 1.964077E-01 1.934310E-01 1.904884E-01 1.875802E-01 1.847070E-01 1.818693E-01 1.790676E-01 1.763027E-01 1.735752E-01 1.708861E-01 1.682361E-01 1.656262E-01 1.630577E-01 1.605316E-01 1.580493E-01 1.556124E-01 1.532224E-01 1.508811E-01 1.485905E-01 1.463528E-01 1.441704E-01 1.420459E-01 1.399823E-01 1.379826E-01 1.360504E-01 1.341896E-01 1.324043E-01 1.306991E-01 1.290791E-01 1.275496E-01 1.261167E-01 1.247868E-01 1.235670E-01 1.224650E-01 1.214890E-01 1.206479E-01 1.199513E-01 1.194096E-01 1.190338E-01 1.188356E-01 1.188275E-01 1.190225E-01 1.194344E-01 1.200773E-01 1.209661E-01 1.221154E-01 1.235402E-01 1.252551E-01 1.272738E-01 1.296091E-01 1.322716E-01 1.352693E-01 1.386065E-01 1.422823E-01 1.462891E-01 1.506103E-01 1.552179E-01 1.600693E-01 1.651025E-01 1.702319E-01 1.753408E-01 1.802734E-01 1.848235E-01 1.887208E-01 1.916112E-01 1.930319E-01 1.923747E-01 1.888342E-01 1.813277E-01 1.683616E-01 1.477865E-01 1.162756E-01 6.828155E-02 0.000000E+00 2.871974E-01 2.833465E-01 2.795285E-01 2.757434E-01 2.719910E-01 2.682712E-01 2.645839E-01 2.609290E-01 2.573065E-01 2.537162E-01 2.501582E-01 2.466323E-01 2.431385E-01 2.396768E-01 2.362473E-01 2.328499E-01 2.294847E-01 2.261516E-01 2.228509E-01 2.195825E-01 2.163467E-01 2.131434E-01 2.099730E-01 2.068355E-01 2.037312E-01 2.006604E-01 1.976233E-01 1.946203E-01 1.916517E-01 1.887180E-01 1.858196E-01 1.829571E-01 1.801310E-01 1.773421E-01 1.745909E-01 1.718784E-01 1.692054E-01 1.665729E-01 1.639820E-01 1.614340E-01 1.589301E-01 1.564718E-01 1.540608E-01 1.516989E-01 1.493880E-01 1.471303E-01 1.449281E-01 1.427842E-01 1.407015E-01 1.386830E-01 1.367323E-01 1.348532E-01 1.330499E-01 1.313270E-01 1.296895E-01 1.281428E-01 1.266929E-01 1.253463E-01 1.241100E-01 1.229916E-01 1.219995E-01 1.211425E-01 1.204302E-01 1.198729E-01 1.194816E-01 1.192680E-01 1.192446E-01 1.194243E-01 1.198210E-01 1.204487E-01 1.213221E-01 1.224560E-01 1.238653E-01 1.255643E-01 1.275670E-01 1.298858E-01 1.325313E-01 1.355116E-01 1.388306E-01 1.424875E-01 1.464744E-01 1.507747E-01 1.553601E-01 1.601878E-01 1.651959E-01 1.702983E-01 1.753782E-01 1.802796E-01 1.847964E-01 1.886579E-01 1.915102E-01 1.928907E-01 1.921917E-01 1.886088E-01 1.810613E-01 1.680591E-01 1.474595E-01 1.159508E-01 6.802580E-02 0.000000E+00 2.932076E-01 2.892453E-01 2.853175E-01 2.814240E-01 2.775647E-01 2.737394E-01 2.699480E-01 2.661904E-01 2.624665E-01 2.587763E-01 2.551196E-01 2.514965E-01 2.479068E-01 2.443505E-01 2.408277E-01 2.373383E-01 2.338823E-01 2.304598E-01 2.270709E-01 2.237156E-01 2.203940E-01 2.171063E-01 2.138525E-01 2.106330E-01 2.074478E-01 2.042973E-01 2.011816E-01 1.981012E-01 1.950563E-01 1.920475E-01 1.890751E-01 1.861396E-01 1.832417E-01 1.803819E-01 1.775611E-01 1.747799E-01 1.720393E-01 1.693402E-01 1.666838E-01 1.640712E-01 1.615038E-01 1.589829E-01 1.565103E-01 1.540877E-01 1.517170E-01 1.494005E-01 1.471405E-01 1.449396E-01 1.428007E-01 1.407269E-01 1.387218E-01 1.367891E-01 1.349331E-01 1.331582E-01 1.314694E-01 1.298722E-01 1.283725E-01 1.269768E-01 1.256921E-01 1.245259E-01 1.234866E-01 1.225829E-01 1.218244E-01 1.212214E-01 1.207847E-01 1.205261E-01 1.204579E-01 1.205931E-01 1.209451E-01 1.215283E-01 1.223569E-01 1.234458E-01 1.248095E-01 1.264624E-01 1.284181E-01 1.306888E-01 1.332850E-01 1.362142E-01 1.394803E-01 1.430819E-01 1.470109E-01 1.512501E-01 1.557709E-01 1.605299E-01 1.654645E-01 1.704884E-01 1.754840E-01 1.802949E-01 1.847146E-01 1.884721E-01 1.912139E-01 1.924777E-01 1.916574E-01 1.879519E-01 1.802857E-01 1.671793E-01 1.465098E-01 1.150086E-01 6.728598E-02 0.000000E+00 3.009284E-01 2.968220E-01 2.927519E-01 2.887181E-01 2.847202E-01 2.807583E-01 2.768322E-01 2.729416E-01 2.690866E-01 2.652671E-01 2.614828E-01 2.577339E-01 2.540201E-01 2.503416E-01 2.466981E-01 2.430898E-01 2.395166E-01 2.359785E-01 2.324756E-01 2.290080E-01 2.255757E-01 2.221789E-01 2.188176E-01 2.154921E-01 2.122025E-01 2.089491E-01 2.057321E-01 2.025518E-01 1.994086E-01 1.963028E-01 1.932349E-01 1.902055E-01 1.872149E-01 1.842640E-01 1.813533E-01 1.784837E-01 1.756560E-01 1.728712E-01 1.701304E-01 1.674347E-01 1.647854E-01 1.621840E-01 1.596321E-01 1.571315E-01 1.546840E-01 1.522918E-01 1.499574E-01 1.476832E-01 1.454722E-01 1.433274E-01 1.412524E-01 1.392509E-01 1.373271E-01 1.354854E-01 1.337309E-01 1.320689E-01 1.305054E-01 1.290467E-01 1.276999E-01 1.264724E-01 1.253726E-01 1.244091E-01 1.235915E-01 1.229299E-01 1.224352E-01 1.221190E-01 1.219935E-01 1.220716E-01 1.223668E-01 1.228930E-01 1.236645E-01 1.246959E-01 1.260016E-01 1.275956E-01 1.294914E-01 1.317009E-01 1.342342E-01 1.370986E-01 1.402974E-01 1.438288E-01 1.476842E-01 1.518459E-01 1.562847E-01 1.609565E-01 1.657982E-01 1.707225E-01 1.756115E-01 1.803080E-01 1.846050E-01 1.882314E-01 1.908336E-01 1.919504E-01 1.909776E-01 1.871179E-01 1.793030E-01 1.660667E-01 1.453113E-01 1.138226E-01 6.635860E-02 0.000000E+00 3.083397E-01 3.040937E-01 2.998858E-01 2.957161E-01 2.915842E-01 2.874900E-01 2.834334E-01 2.794143E-01 2.754324E-01 2.714877E-01 2.675801E-01 2.637095E-01 2.598759E-01 2.560790E-01 2.523190E-01 2.485958E-01 2.449093E-01 2.412596E-01 2.376467E-01 2.340706E-01 2.305315E-01 2.270293E-01 2.235643E-01 2.201365E-01 2.167462E-01 2.133935E-01 2.100788E-01 2.068022E-01 2.035641E-01 2.003649E-01 1.972051E-01 1.940850E-01 1.910053E-01 1.879665E-01 1.849694E-01 1.820146E-01 1.791031E-01 1.762358E-01 1.734138E-01 1.706381E-01 1.679101E-01 1.652313E-01 1.626032E-01 1.600275E-01 1.575062E-01 1.550414E-01 1.526354E-01 1.502909E-01 1.480106E-01 1.457977E-01 1.436556E-01 1.415880E-01 1.395991E-01 1.376935E-01 1.358759E-01 1.341518E-01 1.325271E-01 1.310081E-01 1.296018E-01 1.283157E-01 1.271579E-01 1.261372E-01 1.252630E-01 1.245455E-01 1.239953E-01 1.236241E-01 1.234439E-01 1.234676E-01 1.237084E-01 1.241803E-01 1.248973E-01 1.258739E-01 1.271243E-01 1.286624E-01 1.305012E-01 1.326525E-01 1.351261E-01 1.379288E-01 1.410637E-01 1.445286E-01 1.483143E-01 1.524025E-01 1.567637E-01 1.613531E-01 1.661068E-01 1.709372E-01 1.757255E-01 1.803141E-01 1.844954E-01 1.879982E-01 1.904691E-01 1.914476E-01 1.903317E-01 1.863275E-01 1.783738E-01 1.650167E-01 1.441827E-01 1.127090E-01 6.549177E-02 0.000000E+00 3.154658E-01 3.110843E-01 3.067429E-01 3.024414E-01 2.981795E-01 2.939572E-01 2.897743E-01 2.856305E-01 2.815258E-01 2.774599E-01 2.734329E-01 2.694445E-01 2.654948E-01 2.615835E-01 2.577107E-01 2.538763E-01 2.500802E-01 2.463226E-01 2.426032E-01 2.389223E-01 2.352799E-01 2.316759E-01 2.281106E-01 2.245841E-01 2.210965E-01 2.176480E-01 2.142388E-01 2.108693E-01 2.075396E-01 2.042503E-01 2.010017E-01 1.977942E-01 1.946284E-01 1.915050E-01 1.884244E-01 1.853876E-01 1.823953E-01 1.794485E-01 1.765482E-01 1.736955E-01 1.708917E-01 1.681383E-01 1.654368E-01 1.627889E-01 1.601965E-01 1.576618E-01 1.551870E-01 1.527748E-01 1.504279E-01 1.481495E-01 1.459429E-01 1.438118E-01 1.417605E-01 1.397933E-01 1.379152E-01 1.361315E-01 1.344480E-01 1.328712E-01 1.314078E-01 1.300654E-01 1.288521E-01 1.277765E-01 1.268481E-01 1.260769E-01 1.254737E-01 1.250497E-01 1.248172E-01 1.247888E-01 1.249777E-01 1.253977E-01 1.260627E-01 1.269870E-01 1.281846E-01 1.296692E-01 1.314538E-01 1.335496E-01 1.359663E-01 1.387104E-01 1.417845E-01 1.451861E-01 1.489056E-01 1.529242E-01 1.572117E-01 1.617228E-01 1.663933E-01 1.711347E-01 1.758277E-01 1.803141E-01 1.843860E-01 1.877721E-01 1.901191E-01 1.909674E-01 1.897166E-01 1.855767E-01 1.774929E-01 1.640233E-01 1.431171E-01 1.116603E-01 6.467900E-02 0.000000E+00 3.223280E-01 3.178150E-01 3.133440E-01 3.089146E-01 3.045267E-01 3.001801E-01 2.958746E-01 2.916100E-01 2.873861E-01 2.832028E-01 2.790600E-01 2.749575E-01 2.708953E-01 2.668732E-01 2.628911E-01 2.589490E-01 2.550468E-01 2.511846E-01 2.473623E-01 2.435799E-01 2.398375E-01 2.361350E-01 2.324727E-01 2.288506E-01 2.252689E-01 2.217277E-01 2.182273E-01 2.147679E-01 2.113498E-01 2.079734E-01 2.046390E-01 2.013471E-01 1.980982E-01 1.948929E-01 1.917318E-01 1.886157E-01 1.855455E-01 1.825219E-01 1.795461E-01 1.766191E-01 1.737422E-01 1.709169E-01 1.681446E-01 1.654271E-01 1.627662E-01 1.601641E-01 1.576231E-01 1.551456E-01 1.527346E-01 1.503930E-01 1.481243E-01 1.459322E-01 1.438208E-01 1.417944E-01 1.398580E-01 1.380170E-01 1.362770E-01 1.346446E-01 1.331264E-01 1.317299E-01 1.304633E-01 1.293350E-01 1.283546E-01 1.275320E-01 1.268778E-01 1.264033E-01 1.261206E-01 1.260423E-01 1.261815E-01 1.265517E-01 1.271670E-01 1.280412E-01 1.291884E-01 1.306220E-01 1.323546E-01 1.343976E-01 1.367600E-01 1.394481E-01 1.424644E-01 1.458057E-01 1.494621E-01 1.534144E-01 1.576318E-01 1.620686E-01 1.666600E-01 1.713168E-01 1.759193E-01 1.803089E-01 1.842773E-01 1.875528E-01 1.897826E-01 1.905077E-01 1.891298E-01 1.848620E-01 1.766560E-01 1.630812E-01 1.421086E-01 1.106702E-01 6.391476E-02 0.000000E+00 3.289454E-01 3.243048E-01 3.197078E-01 3.151543E-01 3.106440E-01 3.061767E-01 3.017522E-01 2.973702E-01 2.930307E-01 2.887335E-01 2.844783E-01 2.802651E-01 2.760938E-01 2.719641E-01 2.678761E-01 2.638296E-01 2.598246E-01 2.558610E-01 2.519389E-01 2.480581E-01 2.442188E-01 2.404210E-01 2.366647E-01 2.329501E-01 2.292773E-01 2.256464E-01 2.220576E-01 2.185112E-01 2.150075E-01 2.115468E-01 2.081294E-01 2.047558E-01 2.014266E-01 1.981422E-01 1.949033E-01 1.917106E-01 1.885650E-01 1.854673E-01 1.824185E-01 1.794197E-01 1.764723E-01 1.735775E-01 1.707369E-01 1.679522E-01 1.652252E-01 1.625581E-01 1.599531E-01 1.574128E-01 1.549398E-01 1.525374E-01 1.502089E-01 1.479579E-01 1.457885E-01 1.437051E-01 1.417127E-01 1.398164E-01 1.380221E-01 1.363360E-01 1.347651E-01 1.333166E-01 1.319987E-01 1.308198E-01 1.297894E-01 1.289173E-01 1.282141E-01 1.276911E-01 1.273603E-01 1.272341E-01 1.273256E-01 1.276481E-01 1.282157E-01 1.290420E-01 1.301408E-01 1.315255E-01 1.332086E-01 1.352009E-01 1.375114E-01 1.401461E-01 1.431071E-01 1.463909E-01 1.499871E-01 1.538761E-01 1.580268E-01 1.623929E-01 1.669089E-01 1.714853E-01 1.760018E-01 1.802994E-01 1.841693E-01 1.873400E-01 1.894586E-01 1.900672E-01 1.885689E-01 1.841803E-01 1.758591E-01 1.621857E-01 1.411517E-01 1.097331E-01 6.319425E-02 0.000000E+00 3.353353E-01 3.305705E-01 3.258511E-01 3.211768E-01 3.165475E-01 3.119629E-01 3.074228E-01 3.029268E-01 2.984750E-01 2.940671E-01 2.897028E-01 2.853821E-01 2.811047E-01 2.768707E-01 2.726798E-01 2.685320E-01 2.644272E-01 2.603653E-01 2.563463E-01 2.523702E-01 2.484370E-01 2.445466E-01 2.406992E-01 2.368949E-01 2.331338E-01 2.294159E-01 2.257416E-01 2.221109E-01 2.185242E-01 2.149819E-01 2.114842E-01 2.080315E-01 2.046245E-01 2.012635E-01 1.979493E-01 1.946825E-01 1.914639E-01 1.882945E-01 1.851751E-01 1.821070E-01 1.790912E-01 1.761293E-01 1.732227E-01 1.703730E-01 1.675822E-01 1.648522E-01 1.621855E-01 1.595844E-01 1.570518E-01 1.545906E-01 1.522043E-01 1.498965E-01 1.476712E-01 1.455328E-01 1.434862E-01 1.415367E-01 1.396900E-01 1.379524E-01 1.363306E-01 1.348320E-01 1.334646E-01 1.322370E-01 1.311584E-01 1.302387E-01 1.294885E-01 1.289189E-01 1.285417E-01 1.283695E-01 1.284151E-01 1.286919E-01 1.292136E-01 1.299939E-01 1.310464E-01 1.323843E-01 1.340197E-01 1.359635E-01 1.382243E-01 1.408080E-01 1.437160E-01 1.469448E-01 1.504835E-01 1.543122E-01 1.583991E-01 1.626976E-01 1.671418E-01 1.716415E-01 1.760761E-01 1.802861E-01 1.840624E-01 1.871334E-01 1.891464E-01 1.896442E-01 1.880318E-01 1.835289E-01 1.750990E-01 1.613329E-01 1.402421E-01 1.088442E-01 6.251335E-02 0.000000E+00 3.415128E-01 3.366272E-01 3.317886E-01 3.269970E-01 3.222519E-01 3.175532E-01 3.129005E-01 3.082938E-01 3.037327E-01 2.992171E-01 2.947468E-01 2.903216E-01 2.859413E-01 2.816058E-01 2.773151E-01 2.730688E-01 2.688670E-01 2.647097E-01 2.605966E-01 2.565279E-01 2.525035E-01 2.485233E-01 2.445875E-01 2.406962E-01 2.368493E-01 2.330471E-01 2.292897E-01 2.255774E-01 2.219103E-01 2.182887E-01 2.147131E-01 2.111839E-01 2.077014E-01 2.042662E-01 2.008790E-01 1.975404E-01 1.942513E-01 1.910123E-01 1.878247E-01 1.846893E-01 1.816075E-01 1.785806E-01 1.756100E-01 1.726975E-01 1.698449E-01 1.670543E-01 1.643278E-01 1.616679E-01 1.590776E-01 1.565596E-01 1.541175E-01 1.517547E-01 1.494754E-01 1.472840E-01 1.451852E-01 1.431842E-01 1.412869E-01 1.394995E-01 1.378286E-01 1.362817E-01 1.348667E-01 1.335921E-01 1.324671E-01 1.315015E-01 1.307059E-01 1.300913E-01 1.296696E-01 1.294531E-01 1.294546E-01 1.296874E-01 1.301650E-01 1.309011E-01 1.319091E-01 1.332019E-01 1.347917E-01 1.366890E-01 1.389022E-01 1.414368E-01 1.442942E-01 1.474703E-01 1.509539E-01 1.547248E-01 1.587508E-01 1.629847E-01 1.673602E-01 1.717868E-01 1.761432E-01 1.802695E-01 1.839566E-01 1.869325E-01 1.888450E-01 1.892375E-01 1.875167E-01 1.829054E-01 1.743726E-01 1.605193E-01 1.393756E-01 1.079994E-01 6.186846E-02 0.000000E+00 3.474919E-01 3.424886E-01 3.375340E-01 3.326280E-01 3.277702E-01 3.229604E-01 3.181983E-01 3.134837E-01 3.088163E-01 3.041960E-01 2.996225E-01 2.950956E-01 2.906152E-01 2.861811E-01 2.817931E-01 2.774512E-01 2.731552E-01 2.689050E-01 2.647005E-01 2.605418E-01 2.564287E-01 2.523614E-01 2.483397E-01 2.443638E-01 2.404337E-01 2.365496E-01 2.327116E-01 2.289199E-01 2.251747E-01 2.214764E-01 2.178252E-01 2.142216E-01 2.106660E-01 2.071588E-01 2.037008E-01 2.002926E-01 1.969350E-01 1.936287E-01 1.903748E-01 1.871744E-01 1.840285E-01 1.809386E-01 1.779062E-01 1.749328E-01 1.720204E-01 1.691709E-01 1.663866E-01 1.636699E-01 1.610236E-01 1.584507E-01 1.559546E-01 1.535387E-01 1.512072E-01 1.489644E-01 1.468151E-01 1.447644E-01 1.428182E-01 1.409826E-01 1.392644E-01 1.376708E-01 1.362098E-01 1.348898E-01 1.337200E-01 1.327102E-01 1.318709E-01 1.312130E-01 1.307483E-01 1.304891E-01 1.304480E-01 1.306384E-01 1.310736E-01 1.317672E-01 1.327323E-01 1.339819E-01 1.355278E-01 1.373804E-01 1.395478E-01 1.420354E-01 1.448441E-01 1.479696E-01 1.514005E-01 1.551161E-01 1.590837E-01 1.632558E-01 1.675655E-01 1.719221E-01 1.762038E-01 1.802502E-01 1.838520E-01 1.867373E-01 1.885538E-01 1.888460E-01 1.870220E-01 1.823077E-01 1.736773E-01 1.597416E-01 1.385488E-01 1.071949E-01 6.125640E-02 0.000000E+00 3.532851E-01 3.481670E-01 3.430994E-01 3.380819E-01 3.331143E-01 3.281963E-01 3.233276E-01 3.185079E-01 3.137370E-01 3.090147E-01 3.043407E-01 2.997148E-01 2.951370E-01 2.906068E-01 2.861243E-01 2.816892E-01 2.773015E-01 2.729610E-01 2.686677E-01 2.644214E-01 2.602222E-01 2.560700E-01 2.519648E-01 2.479067E-01 2.438958E-01 2.399320E-01 2.360157E-01 2.321469E-01 2.283259E-01 2.245530E-01 2.208284E-01 2.171525E-01 2.135259E-01 2.099489E-01 2.064222E-01 2.029464E-01 1.995223E-01 1.961507E-01 1.928325E-01 1.895689E-01 1.863609E-01 1.832100E-01 1.801175E-01 1.770851E-01 1.741147E-01 1.712082E-01 1.683678E-01 1.655961E-01 1.628957E-01 1.602696E-01 1.577211E-01 1.552538E-01 1.528718E-01 1.505792E-01 1.483810E-01 1.462823E-01 1.442888E-01 1.424067E-01 1.406426E-01 1.390039E-01 1.374984E-01 1.361346E-01 1.349215E-01 1.338690E-01 1.329873E-01 1.322876E-01 1.317814E-01 1.314810E-01 1.313990E-01 1.315485E-01 1.319429E-01 1.325954E-01 1.335193E-01 1.347272E-01 1.362309E-01 1.380404E-01 1.401639E-01 1.426062E-01 1.453681E-01 1.484451E-01 1.518254E-01 1.554877E-01 1.593993E-01 1.635121E-01 1.677589E-01 1.720484E-01 1.762585E-01 1.802285E-01 1.837488E-01 1.865473E-01 1.882722E-01 1.884686E-01 1.865462E-01 1.817338E-01 1.730108E-01 1.589971E-01 1.377585E-01 1.064275E-01 6.067441E-02 0.000000E+00 3.589038E-01 3.536738E-01 3.484959E-01 3.433697E-01 3.382950E-01 3.332715E-01 3.282988E-01 3.233767E-01 3.185049E-01 3.136832E-01 3.089113E-01 3.041891E-01 2.995162E-01 2.948925E-01 2.903179E-01 2.857921E-01 2.813151E-01 2.768867E-01 2.725068E-01 2.681753E-01 2.638923E-01 2.596575E-01 2.554711E-01 2.513330E-01 2.472434E-01 2.432022E-01 2.392097E-01 2.352660E-01 2.313712E-01 2.275257E-01 2.237298E-01 2.199837E-01 2.162880E-01 2.126432E-01 2.090497E-01 2.055083E-01 2.020196E-01 1.985845E-01 1.952040E-01 1.918790E-01 1.886108E-01 1.854005E-01 1.822498E-01 1.791602E-01 1.761335E-01 1.731717E-01 1.702770E-01 1.674518E-01 1.646989E-01 1.620212E-01 1.594220E-01 1.569049E-01 1.544738E-01 1.521331E-01 1.498876E-01 1.477423E-01 1.457030E-01 1.437758E-01 1.419673E-01 1.402850E-01 1.387364E-01 1.373302E-01 1.360753E-01 1.349814E-01 1.340589E-01 1.333188E-01 1.327725E-01 1.324323E-01 1.323107E-01 1.324207E-01 1.327756E-01 1.333886E-01 1.342727E-01 1.354405E-01 1.369034E-01 1.386715E-01 1.407526E-01 1.431513E-01 1.458683E-01 1.488986E-01 1.522301E-01 1.558414E-01 1.596992E-01 1.637551E-01 1.679415E-01 1.721665E-01 1.763079E-01 1.802047E-01 1.836468E-01 1.863623E-01 1.879996E-01 1.881044E-01 1.860880E-01 1.811820E-01 1.723708E-01 1.582833E-01 1.370019E-01 1.056942E-01 6.012001E-02 0.000000E+00 3.643583E-01 3.590190E-01 3.537335E-01 3.485013E-01 3.433221E-01 3.381956E-01 3.331215E-01 3.280995E-01 3.231293E-01 3.182107E-01 3.133433E-01 3.085270E-01 3.037616E-01 2.990468E-01 2.943824E-01 2.897682E-01 2.852042E-01 2.806901E-01 2.762259E-01 2.718114E-01 2.674466E-01 2.631315E-01 2.588660E-01 2.546500E-01 2.504838E-01 2.463673E-01 2.423006E-01 2.382839E-01 2.343174E-01 2.304013E-01 2.265359E-01 2.227216E-01 2.189588E-01 2.152479E-01 2.115895E-01 2.079843E-01 2.044328E-01 2.009361E-01 1.974949E-01 1.941103E-01 1.907835E-01 1.875157E-01 1.843084E-01 1.811631E-01 1.780818E-01 1.750662E-01 1.721188E-01 1.692418E-01 1.664379E-01 1.637101E-01 1.610617E-01 1.584962E-01 1.560176E-01 1.536302E-01 1.513388E-01 1.491483E-01 1.470646E-01 1.450937E-01 1.432423E-01 1.415176E-01 1.399274E-01 1.384801E-01 1.371846E-01 1.360508E-01 1.350888E-01 1.343095E-01 1.337245E-01 1.333458E-01 1.331859E-01 1.332578E-01 1.335746E-01 1.341493E-01 1.349950E-01 1.361240E-01 1.375477E-01 1.392758E-01 1.413160E-01 1.436728E-01 1.463465E-01 1.493318E-01 1.526164E-01 1.561786E-01 1.599846E-01 1.639857E-01 1.681140E-01 1.722772E-01 1.763527E-01 1.801791E-01 1.835463E-01 1.861821E-01 1.877354E-01 1.877525E-01 1.856462E-01 1.806508E-01 1.717556E-01 1.575980E-01 1.362766E-01 1.049924E-01 5.959104E-02 0.000000E+00 3.696580E-01 3.642121E-01 3.588214E-01 3.534856E-01 3.482044E-01 3.429774E-01 3.378043E-01 3.326848E-01 3.276186E-01 3.226053E-01 3.176449E-01 3.127368E-01 3.078811E-01 3.030773E-01 2.983254E-01 2.936250E-01 2.889762E-01 2.843786E-01 2.798321E-01 2.753368E-01 2.708924E-01 2.664988E-01 2.621562E-01 2.578644E-01 2.536235E-01 2.494336E-01 2.452947E-01 2.412069E-01 2.371705E-01 2.331857E-01 2.292528E-01 2.253720E-01 2.215438E-01 2.177687E-01 2.140471E-01 2.103797E-01 2.067673E-01 2.032105E-01 1.997103E-01 1.962678E-01 1.928840E-01 1.895602E-01 1.862978E-01 1.830986E-01 1.799641E-01 1.768964E-01 1.738976E-01 1.709702E-01 1.681168E-01 1.653404E-01 1.626442E-01 1.600318E-01 1.575071E-01 1.550743E-01 1.527383E-01 1.505041E-01 1.483773E-01 1.463640E-01 1.444709E-01 1.427052E-01 1.410746E-01 1.395874E-01 1.382527E-01 1.370801E-01 1.360798E-01 1.352626E-01 1.346401E-01 1.342241E-01 1.340272E-01 1.340622E-01 1.343421E-01 1.348799E-01 1.356885E-01 1.367800E-01 1.381657E-01 1.398553E-01 1.418560E-01 1.441723E-01 1.468042E-01 1.497462E-01 1.529856E-01 1.565004E-01 1.602565E-01 1.642050E-01 1.682773E-01 1.723811E-01 1.763932E-01 1.801519E-01 1.834471E-01 1.860065E-01 1.874792E-01 1.874122E-01 1.852198E-01 1.801389E-01 1.711634E-01 1.569391E-01 1.355803E-01 1.043199E-01 5.908553E-02 0.000000E+00 3.748116E-01 3.692614E-01 3.637680E-01 3.583311E-01 3.529502E-01 3.476250E-01 3.423552E-01 3.371405E-01 3.319804E-01 3.268749E-01 3.218234E-01 3.168259E-01 3.118819E-01 3.069913E-01 3.021539E-01 2.973695E-01 2.926378E-01 2.879587E-01 2.833321E-01 2.787578E-01 2.742358E-01 2.697658E-01 2.653480E-01 2.609822E-01 2.566686E-01 2.524070E-01 2.481977E-01 2.440408E-01 2.399363E-01 2.358845E-01 2.318857E-01 2.279401E-01 2.240483E-01 2.202106E-01 2.164275E-01 2.126996E-01 2.090277E-01 2.054125E-01 2.018549E-01 1.983560E-01 1.949167E-01 1.915384E-01 1.882226E-01 1.849707E-01 1.817845E-01 1.786661E-01 1.756175E-01 1.726411E-01 1.697396E-01 1.669159E-01 1.641733E-01 1.615152E-01 1.589456E-01 1.564689E-01 1.540895E-01 1.518127E-01 1.496441E-01 1.475897E-01 1.456562E-01 1.438506E-01 1.421807E-01 1.406550E-01 1.392822E-01 1.380720E-01 1.370345E-01 1.361806E-01 1.355217E-01 1.350697E-01 1.348370E-01 1.348362E-01 1.350804E-01 1.355825E-01 1.363551E-01 1.374104E-01 1.387594E-01 1.404116E-01 1.423743E-01 1.446515E-01 1.472430E-01 1.501432E-01 1.533390E-01 1.568080E-01 1.605161E-01 1.644138E-01 1.684323E-01 1.724787E-01 1.764297E-01 1.801234E-01 1.833493E-01 1.858353E-01 1.872305E-01 1.870828E-01 1.848078E-01 1.796450E-01 1.705928E-01 1.563050E-01 1.349109E-01 1.036746E-01 5.860176E-02 0.000000E+00 3.798271E-01 3.741750E-01 3.685811E-01 3.630453E-01 3.575670E-01 3.521458E-01 3.467815E-01 3.414737E-01 3.362220E-01 3.310261E-01 3.258858E-01 3.208008E-01 3.157707E-01 3.107954E-01 3.058745E-01 3.010080E-01 2.961954E-01 2.914368E-01 2.867319E-01 2.820805E-01 2.774827E-01 2.729382E-01 2.684470E-01 2.640090E-01 2.596244E-01 2.552930E-01 2.510150E-01 2.467905E-01 2.426196E-01 2.385025E-01 2.344395E-01 2.304309E-01 2.264770E-01 2.225782E-01 2.187352E-01 2.149484E-01 2.112186E-01 2.075465E-01 2.039329E-01 2.003790E-01 1.968858E-01 1.934544E-01 1.900865E-01 1.867834E-01 1.835469E-01 1.803790E-01 1.772819E-01 1.742578E-01 1.713095E-01 1.684399E-01 1.656521E-01 1.629496E-01 1.603365E-01 1.578169E-01 1.553954E-01 1.530773E-01 1.508680E-01 1.487736E-01 1.468008E-01 1.449565E-01 1.432486E-01 1.416853E-01 1.402755E-01 1.390288E-01 1.379554E-01 1.370659E-01 1.363717E-01 1.358847E-01 1.356171E-01 1.355817E-01 1.357914E-01 1.362588E-01 1.369966E-01 1.380169E-01 1.393304E-01 1.409465E-01 1.428723E-01 1.451117E-01 1.476642E-01 1.505239E-01 1.536776E-01 1.571026E-01 1.607642E-01 1.646129E-01 1.685794E-01 1.725706E-01 1.764628E-01 1.800938E-01 1.832530E-01 1.856682E-01 1.869889E-01 1.867636E-01 1.844092E-01 1.791679E-01 1.700422E-01 1.556940E-01 1.342667E-01 1.030545E-01 5.813814E-02 0.000000E+00 3.847117E-01 3.789598E-01 3.732678E-01 3.676351E-01 3.620615E-01 3.565465E-01 3.510898E-01 3.456909E-01 3.403496E-01 3.350656E-01 3.298384E-01 3.246679E-01 3.195536E-01 3.144954E-01 3.094930E-01 3.045462E-01 2.996547E-01 2.948183E-01 2.900369E-01 2.853104E-01 2.806385E-01 2.760211E-01 2.714583E-01 2.669499E-01 2.624959E-01 2.580964E-01 2.537514E-01 2.494610E-01 2.452253E-01 2.410445E-01 2.369188E-01 2.328486E-01 2.288341E-01 2.248759E-01 2.209744E-01 2.171301E-01 2.133438E-01 2.096163E-01 2.059482E-01 2.023407E-01 1.987948E-01 1.953118E-01 1.918931E-01 1.885401E-01 1.852547E-01 1.820387E-01 1.788943E-01 1.758238E-01 1.728299E-01 1.699154E-01 1.670837E-01 1.643380E-01 1.616825E-01 1.591212E-01 1.566588E-01 1.543004E-01 1.520516E-01 1.499184E-01 1.479073E-01 1.460254E-01 1.442805E-01 1.426807E-01 1.412351E-01 1.399529E-01 1.388445E-01 1.379204E-01 1.371919E-01 1.366710E-01 1.363697E-01 1.363007E-01 1.364768E-01 1.369106E-01 1.376148E-01 1.386010E-01 1.398801E-01 1.414613E-01 1.433514E-01 1.455541E-01 1.480689E-01 1.508895E-01 1.540025E-01 1.573848E-01 1.610017E-01 1.648030E-01 1.687193E-01 1.726572E-01 1.764926E-01 1.800631E-01 1.831580E-01 1.855050E-01 1.867540E-01 1.864540E-01 1.840234E-01 1.787066E-01 1.695106E-01 1.551045E-01 1.336460E-01 1.024580E-01 5.769328E-02 0.000000E+00 3.894722E-01 3.836227E-01 3.778345E-01 3.721071E-01 3.664402E-01 3.608334E-01 3.552862E-01 3.497984E-01 3.443694E-01 3.389991E-01 3.336869E-01 3.284327E-01 3.232362E-01 3.180970E-01 3.130149E-01 3.079896E-01 3.030208E-01 2.981085E-01 2.932524E-01 2.884523E-01 2.837080E-01 2.790195E-01 2.743867E-01 2.698095E-01 2.652878E-01 2.608218E-01 2.564113E-01 2.520565E-01 2.477575E-01 2.435145E-01 2.393277E-01 2.351973E-01 2.311238E-01 2.271075E-01 2.231489E-01 2.192486E-01 2.154072E-01 2.116255E-01 2.079043E-01 2.042446E-01 2.006474E-01 1.971139E-01 1.936457E-01 1.902441E-01 1.869109E-01 1.836480E-01 1.804575E-01 1.773418E-01 1.743035E-01 1.713454E-01 1.684708E-01 1.656831E-01 1.629862E-01 1.603844E-01 1.578822E-01 1.554846E-01 1.531973E-01 1.510263E-01 1.489780E-01 1.470596E-01 1.452786E-01 1.436434E-01 1.421628E-01 1.408462E-01 1.397038E-01 1.387460E-01 1.379843E-01 1.374304E-01 1.370963E-01 1.369947E-01 1.371382E-01 1.375395E-01 1.382109E-01 1.391642E-01 1.404100E-01 1.419573E-01 1.438128E-01 1.459801E-01 1.484583E-01 1.512411E-01 1.543146E-01 1.576557E-01 1.612292E-01 1.649847E-01 1.688525E-01 1.727389E-01 1.765195E-01 1.800316E-01 1.830644E-01 1.853457E-01 1.865255E-01 1.861535E-01 1.836495E-01 1.782601E-01 1.689966E-01 1.545353E-01 1.330473E-01 1.018835E-01 5.726590E-02 0.000000E+00 3.941148E-01 3.881696E-01 3.822873E-01 3.764672E-01 3.707090E-01 3.650123E-01 3.593766E-01 3.538015E-01 3.482868E-01 3.428320E-01 3.374367E-01 3.321007E-01 3.268236E-01 3.216052E-01 3.164451E-01 3.113430E-01 3.062988E-01 3.013121E-01 2.963829E-01 2.915109E-01 2.866959E-01 2.819379E-01 2.772366E-01 2.725921E-01 2.680043E-01 2.634732E-01 2.589987E-01 2.545811E-01 2.502202E-01 2.459165E-01 2.416699E-01 2.374809E-01 2.333497E-01 2.292767E-01 2.252624E-01 2.213073E-01 2.174121E-01 2.135776E-01 2.098045E-01 2.060937E-01 2.024465E-01 1.988638E-01 1.953473E-01 1.918982E-01 1.885185E-01 1.852098E-01 1.819744E-01 1.788146E-01 1.757330E-01 1.727324E-01 1.698161E-01 1.669874E-01 1.642503E-01 1.616088E-01 1.590678E-01 1.566321E-01 1.543074E-01 1.520995E-01 1.500150E-01 1.480609E-01 1.462449E-01 1.445753E-01 1.430606E-01 1.417105E-01 1.405350E-01 1.395446E-01 1.387505E-01 1.381645E-01 1.377986E-01 1.376653E-01 1.377772E-01 1.381469E-01 1.387865E-01 1.397078E-01 1.409212E-01 1.424356E-01 1.442576E-01 1.463905E-01 1.488333E-01 1.515794E-01 1.546147E-01 1.579159E-01 1.614474E-01 1.651586E-01 1.689796E-01 1.728161E-01 1.765437E-01 1.799994E-01 1.829722E-01 1.851901E-01 1.863030E-01 1.858617E-01 1.832869E-01 1.778277E-01 1.684992E-01 1.539851E-01 1.324693E-01 1.013297E-01 5.685484E-02 0.000000E+00 3.986452E-01 3.926064E-01 3.866318E-01 3.807209E-01 3.748733E-01 3.690885E-01 3.633661E-01 3.577057E-01 3.521069E-01 3.465694E-01 3.410927E-01 3.356766E-01 3.303207E-01 3.250247E-01 3.197882E-01 3.146110E-01 3.094929E-01 3.044336E-01 2.994328E-01 2.944905E-01 2.896063E-01 2.847802E-01 2.800121E-01 2.753018E-01 2.706493E-01 2.660545E-01 2.615175E-01 2.570384E-01 2.526171E-01 2.482539E-01 2.439490E-01 2.397026E-01 2.355150E-01 2.313866E-01 2.273179E-01 2.233094E-01 2.193616E-01 2.154755E-01 2.116517E-01 2.078912E-01 2.041950E-01 2.005644E-01 1.970006E-01 1.935053E-01 1.900801E-01 1.867268E-01 1.834476E-01 1.802447E-01 1.771209E-01 1.740788E-01 1.711217E-01 1.682531E-01 1.654767E-01 1.627968E-01 1.602178E-01 1.577450E-01 1.553837E-01 1.531399E-01 1.510201E-01 1.490314E-01 1.471813E-01 1.454780E-01 1.439303E-01 1.425476E-01 1.413398E-01 1.403176E-01 1.394921E-01 1.388749E-01 1.384780E-01 1.383139E-01 1.383951E-01 1.387340E-01 1.393427E-01 1.402329E-01 1.414149E-01 1.428974E-01 1.446869E-01 1.467865E-01 1.491949E-01 1.519054E-01 1.549037E-01 1.581662E-01 1.616570E-01 1.653253E-01 1.691008E-01 1.728891E-01 1.765654E-01 1.799665E-01 1.828814E-01 1.850379E-01 1.860863E-01 1.855780E-01 1.829350E-01 1.774085E-01 1.680176E-01 1.534527E-01 1.319107E-01 1.007952E-01 5.645905E-02 0.000000E+00 4.030689E-01 3.969383E-01 3.908733E-01 3.848733E-01 3.789380E-01 3.730669E-01 3.672596E-01 3.615156E-01 3.558345E-01 3.502159E-01 3.446596E-01 3.391650E-01 3.337318E-01 3.283598E-01 3.230486E-01 3.177979E-01 3.126074E-01 3.074769E-01 3.024062E-01 2.973950E-01 2.924431E-01 2.875504E-01 2.827168E-01 2.779421E-01 2.732263E-01 2.685693E-01 2.639711E-01 2.594318E-01 2.549515E-01 2.505302E-01 2.461682E-01 2.418657E-01 2.376230E-01 2.334404E-01 2.293185E-01 2.252577E-01 2.212587E-01 2.173221E-01 2.134487E-01 2.096396E-01 2.058956E-01 2.022181E-01 1.986083E-01 1.950678E-01 1.915981E-01 1.882013E-01 1.848793E-01 1.816344E-01 1.784693E-01 1.753868E-01 1.723900E-01 1.694823E-01 1.666676E-01 1.639501E-01 1.613342E-01 1.588251E-01 1.564282E-01 1.541494E-01 1.519953E-01 1.499727E-01 1.480893E-01 1.463533E-01 1.447734E-01 1.433589E-01 1.421198E-01 1.410666E-01 1.402104E-01 1.395628E-01 1.391359E-01 1.389417E-01 1.389930E-01 1.393020E-01 1.398807E-01 1.407407E-01 1.418922E-01 1.433437E-01 1.451015E-01 1.471687E-01 1.495438E-01 1.522198E-01 1.551822E-01 1.584071E-01 1.618585E-01 1.654852E-01 1.692166E-01 1.729582E-01 1.765848E-01 1.799332E-01 1.827919E-01 1.848890E-01 1.858751E-01 1.853021E-01 1.825931E-01 1.770017E-01 1.675507E-01 1.529372E-01 1.313704E-01 1.002789E-01 5.607757E-02 0.000000E+00 4.073909E-01 4.011702E-01 3.950165E-01 3.889292E-01 3.829080E-01 3.769523E-01 3.710616E-01 3.652357E-01 3.594739E-01 3.537759E-01 3.481414E-01 3.425699E-01 3.370612E-01 3.316147E-01 3.262303E-01 3.209075E-01 3.156462E-01 3.104460E-01 3.053067E-01 3.002280E-01 2.952099E-01 2.902520E-01 2.853543E-01 2.805165E-01 2.757387E-01 2.710209E-01 2.663628E-01 2.617647E-01 2.572265E-01 2.527484E-01 2.483305E-01 2.439731E-01 2.396765E-01 2.354410E-01 2.312670E-01 2.271551E-01 2.231058E-01 2.191199E-01 2.151982E-01 2.113415E-01 2.075508E-01 2.038275E-01 2.001727E-01 1.965879E-01 1.930749E-01 1.896355E-01 1.862716E-01 1.829858E-01 1.797804E-01 1.766583E-01 1.736227E-01 1.706770E-01 1.678249E-01 1.650706E-01 1.624188E-01 1.598743E-01 1.574426E-01 1.551297E-01 1.529420E-01 1.508864E-01 1.489706E-01 1.472027E-01 1.455913E-01 1.441458E-01 1.428762E-01 1.417928E-01 1.409068E-01 1.402296E-01 1.397733E-01 1.395500E-01 1.395721E-01 1.398520E-01 1.404016E-01 1.412322E-01 1.423539E-01 1.437753E-01 1.455024E-01 1.475381E-01 1.498808E-01 1.525232E-01 1.554508E-01 1.586392E-01 1.620524E-01 1.656387E-01 1.693275E-01 1.730237E-01 1.766022E-01 1.798993E-01 1.827037E-01 1.847433E-01 1.856691E-01 1.850334E-01 1.822608E-01 1.766068E-01 1.670979E-01 1.524377E-01 1.308472E-01 9.977971E-02 5.570954E-02 0.000000E+00 4.116156E-01 4.053066E-01 3.990659E-01 3.928930E-01 3.867874E-01 3.807487E-01 3.747765E-01 3.688701E-01 3.630292E-01 3.572534E-01 3.515423E-01 3.458954E-01 3.403125E-01 3.347931E-01 3.293368E-01 3.239435E-01 3.186127E-01 3.133442E-01 3.081377E-01 3.029930E-01 2.979099E-01 2.928882E-01 2.879276E-01 2.830282E-01 2.781897E-01 2.734122E-01 2.686955E-01 2.640398E-01 2.594450E-01 2.549112E-01 2.504387E-01 2.460276E-01 2.416781E-01 2.373908E-01 2.331659E-01 2.290040E-01 2.249056E-01 2.208715E-01 2.169024E-01 2.129992E-01 2.091629E-01 2.053947E-01 2.016958E-01 1.980679E-01 1.945125E-01 1.910314E-01 1.876267E-01 1.843008E-01 1.810560E-01 1.778954E-01 1.748218E-01 1.718389E-01 1.689503E-01 1.661602E-01 1.634731E-01 1.608941E-01 1.584285E-01 1.560822E-01 1.538618E-01 1.517740E-01 1.498266E-01 1.480275E-01 1.463855E-01 1.449098E-01 1.436103E-01 1.424975E-01 1.415824E-01 1.408764E-01 1.403915E-01 1.401397E-01 1.401335E-01 1.403850E-01 1.409062E-01 1.417082E-01 1.428010E-01 1.441931E-01 1.458903E-01 1.478954E-01 1.502066E-01 1.528164E-01 1.557101E-01 1.588631E-01 1.622391E-01 1.657863E-01 1.694336E-01 1.730859E-01 1.766176E-01 1.798651E-01 1.826168E-01 1.846007E-01 1.854681E-01 1.847718E-01 1.819376E-01 1.762230E-01 1.666582E-01 1.519532E-01 1.303404E-01 9.929668E-02 5.535414E-02 0.000000E+00 4.157475E-01 4.093518E-01 4.030257E-01 3.967688E-01 3.905805E-01 3.844604E-01 3.784080E-01 3.724227E-01 3.665043E-01 3.606521E-01 3.548658E-01 3.491451E-01 3.434894E-01 3.378984E-01 3.323718E-01 3.269092E-01 3.215104E-01 3.161749E-01 3.109026E-01 3.056931E-01 3.005464E-01 2.954620E-01 2.904400E-01 2.854800E-01 2.805821E-01 2.757461E-01 2.709720E-01 2.662598E-01 2.616096E-01 2.570213E-01 2.524953E-01 2.480316E-01 2.436305E-01 2.392924E-01 2.350177E-01 2.308068E-01 2.266603E-01 2.225790E-01 2.185635E-01 2.146148E-01 2.107338E-01 2.069218E-01 2.031799E-01 1.995097E-01 1.959128E-01 1.923910E-01 1.889464E-01 1.855812E-01 1.822980E-01 1.790996E-01 1.759890E-01 1.729697E-01 1.700454E-01 1.672202E-01 1.644988E-01 1.618860E-01 1.593872E-01 1.570085E-01 1.547560E-01 1.526369E-01 1.506585E-01 1.488290E-01 1.471571E-01 1.456519E-01 1.443233E-01 1.431818E-01 1.422383E-01 1.415042E-01 1.409914E-01 1.407119E-01 1.406781E-01 1.409020E-01 1.413955E-01 1.421696E-01 1.432343E-01 1.445978E-01 1.462659E-01 1.482412E-01 1.505218E-01 1.530999E-01 1.559606E-01 1.590793E-01 1.624191E-01 1.659282E-01 1.695353E-01 1.731449E-01 1.766313E-01 1.798306E-01 1.825312E-01 1.844611E-01 1.852718E-01 1.845168E-01 1.816229E-01 1.758498E-01 1.662311E-01 1.514829E-01 1.298489E-01 9.882890E-02 5.501066E-02 0.000000E+00 4.197906E-01 4.133098E-01 4.068999E-01 4.005604E-01 3.942910E-01 3.880909E-01 3.819599E-01 3.758972E-01 3.699026E-01 3.639755E-01 3.581155E-01 3.523222E-01 3.465952E-01 3.409340E-01 3.353384E-01 3.298079E-01 3.243423E-01 3.189411E-01 3.136042E-01 3.083313E-01 3.031221E-01 2.979764E-01 2.928940E-01 2.878748E-01 2.829186E-01 2.780254E-01 2.731950E-01 2.684275E-01 2.637229E-01 2.590812E-01 2.545027E-01 2.499875E-01 2.455358E-01 2.411480E-01 2.368244E-01 2.325656E-01 2.283721E-01 2.242445E-01 2.201837E-01 2.161904E-01 2.122657E-01 2.084107E-01 2.046267E-01 2.009151E-01 1.972776E-01 1.937160E-01 1.902323E-01 1.868288E-01 1.835079E-01 1.802726E-01 1.771257E-01 1.740709E-01 1.711117E-01 1.682523E-01 1.654972E-01 1.628514E-01 1.603203E-01 1.579097E-01 1.556260E-01 1.534762E-01 1.514676E-01 1.496084E-01 1.479073E-01 1.463733E-01 1.450163E-01 1.438468E-01 1.428756E-01 1.421141E-01 1.415741E-01 1.412676E-01 1.412068E-01 1.414037E-01 1.418702E-01 1.426172E-01 1.436544E-01 1.449901E-01 1.466300E-01 1.485762E-01 1.508270E-01 1.533743E-01 1.562029E-01 1.592881E-01 1.625928E-01 1.660649E-01 1.696328E-01 1.732010E-01 1.766433E-01 1.797958E-01 1.824468E-01 1.843243E-01 1.850801E-01 1.842682E-01 1.813165E-01 1.754868E-01 1.658159E-01 1.510261E-01 1.293720E-01 9.837553E-02 5.467840E-02 0.000000E+00 4.237487E-01 4.171842E-01 4.106920E-01 4.042716E-01 3.979224E-01 3.916439E-01 3.854356E-01 3.792969E-01 3.732275E-01 3.672269E-01 3.612945E-01 3.554300E-01 3.496329E-01 3.439029E-01 3.382395E-01 3.326424E-01 3.271113E-01 3.216457E-01 3.162455E-01 3.109103E-01 3.056399E-01 3.004340E-01 2.952924E-01 2.902150E-01 2.852017E-01 2.802523E-01 2.753667E-01 2.705450E-01 2.657871E-01 2.610932E-01 2.564632E-01 2.518975E-01 2.473962E-01 2.429597E-01 2.385883E-01 2.342825E-01 2.300429E-01 2.258700E-01 2.217647E-01 2.177278E-01 2.137603E-01 2.098632E-01 2.060380E-01 2.022859E-01 1.986087E-01 1.950081E-01 1.914861E-01 1.880451E-01 1.846874E-01 1.814159E-01 1.782336E-01 1.751439E-01 1.721506E-01 1.692577E-01 1.664698E-01 1.637917E-01 1.612289E-01 1.587872E-01 1.564730E-01 1.542931E-01 1.522551E-01 1.503669E-01 1.486371E-01 1.470750E-01 1.456904E-01 1.444935E-01 1.434952E-01 1.427069E-01 1.421403E-01 1.418074E-01 1.417203E-01 1.418910E-01 1.423312E-01 1.430517E-01 1.440622E-01 1.453708E-01 1.469830E-01 1.489010E-01 1.511227E-01 1.536400E-01 1.564374E-01 1.594900E-01 1.627605E-01 1.661966E-01 1.697265E-01 1.732543E-01 1.766538E-01 1.797608E-01 1.823636E-01 1.841903E-01 1.848927E-01 1.840255E-01 1.810179E-01 1.751333E-01 1.654121E-01 1.505821E-01 1.289088E-01 9.793580E-02 5.435675E-02 0.000000E+00 4.276254E-01 4.209787E-01 4.144056E-01 4.079055E-01 4.014780E-01 3.951224E-01 3.888383E-01 3.826250E-01 3.764822E-01 3.704093E-01 3.644059E-01 3.584715E-01 3.526056E-01 3.468080E-01 3.410781E-01 3.354156E-01 3.298201E-01 3.242913E-01 3.188289E-01 3.134326E-01 3.081021E-01 3.028372E-01 2.976376E-01 2.925031E-01 2.874338E-01 2.824292E-01 2.774896E-01 2.726147E-01 2.678045E-01 2.630593E-01 2.583789E-01 2.537637E-01 2.492138E-01 2.447295E-01 2.403112E-01 2.359594E-01 2.316746E-01 2.274573E-01 2.233085E-01 2.192288E-01 2.152193E-01 2.112811E-01 2.074154E-01 2.036237E-01 1.999075E-01 1.962687E-01 1.927093E-01 1.892315E-01 1.858377E-01 1.825308E-01 1.793138E-01 1.761901E-01 1.731634E-01 1.702377E-01 1.674176E-01 1.647080E-01 1.621142E-01 1.596421E-01 1.572980E-01 1.550887E-01 1.530219E-01 1.511053E-01 1.493476E-01 1.477581E-01 1.463463E-01 1.451226E-01 1.440980E-01 1.432835E-01 1.426910E-01 1.423323E-01 1.422196E-01 1.423646E-01 1.427791E-01 1.434737E-01 1.444582E-01 1.457403E-01 1.473256E-01 1.492161E-01 1.514094E-01 1.538974E-01 1.566645E-01 1.596853E-01 1.629226E-01 1.663236E-01 1.698165E-01 1.733050E-01 1.766629E-01 1.797257E-01 1.822817E-01 1.840588E-01 1.847094E-01 1.837887E-01 1.807267E-01 1.747889E-01 1.650189E-01 1.501503E-01 1.284588E-01 9.750899E-02 5.404514E-02 0.000000E+00 4.314238E-01 4.246964E-01 4.180438E-01 4.114655E-01 4.049610E-01 3.985297E-01 3.921710E-01 3.858844E-01 3.796695E-01 3.735256E-01 3.674524E-01 3.614493E-01 3.555159E-01 3.496519E-01 3.438567E-01 3.381299E-01 3.324713E-01 3.268805E-01 3.213570E-01 3.159007E-01 3.105112E-01 3.051883E-01 2.999318E-01 2.947414E-01 2.896170E-01 2.845584E-01 2.795656E-01 2.746385E-01 2.697771E-01 2.649815E-01 2.602517E-01 2.555879E-01 2.509903E-01 2.464592E-01 2.419950E-01 2.375980E-01 2.332688E-01 2.290081E-01 2.248165E-01 2.206949E-01 2.166443E-01 2.126657E-01 2.087604E-01 2.049298E-01 2.011756E-01 1.974993E-01 1.939032E-01 1.903894E-01 1.869603E-01 1.836188E-01 1.803678E-01 1.772107E-01 1.741513E-01 1.711935E-01 1.683419E-01 1.656014E-01 1.629773E-01 1.604754E-01 1.581020E-01 1.558641E-01 1.537690E-01 1.518247E-01 1.500397E-01 1.484233E-01 1.469850E-01 1.457352E-01 1.446847E-01 1.438447E-01 1.432268E-01 1.428430E-01 1.427052E-01 1.428252E-01 1.432146E-01 1.438840E-01 1.448430E-01 1.460993E-01 1.476584E-01 1.495220E-01 1.516877E-01 1.541472E-01 1.568846E-01 1.598745E-01 1.630793E-01 1.664462E-01 1.699030E-01 1.733533E-01 1.766706E-01 1.796905E-01 1.822008E-01 1.839299E-01 1.845301E-01 1.835573E-01 1.804426E-01 1.744532E-01 1.646360E-01 1.497300E-01 1.280212E-01 9.709446E-02 5.374303E-02 0.000000E+00 4.351472E-01 4.283404E-01 4.216096E-01 4.149545E-01 4.083743E-01 4.018685E-01 3.954366E-01 3.890780E-01 3.827921E-01 3.765785E-01 3.704367E-01 3.643661E-01 3.583664E-01 3.524371E-01 3.465778E-01 3.407879E-01 3.350673E-01 3.294155E-01 3.238321E-01 3.183169E-01 3.128695E-01 3.074896E-01 3.021772E-01 2.969318E-01 2.917534E-01 2.866417E-01 2.815968E-01 2.766185E-01 2.717068E-01 2.668618E-01 2.620835E-01 2.573720E-01 2.527276E-01 2.481506E-01 2.436412E-01 2.392000E-01 2.348273E-01 2.305239E-01 2.262905E-01 2.221278E-01 2.180368E-01 2.140187E-01 2.100745E-01 2.062059E-01 2.024142E-01 1.987013E-01 1.950692E-01 1.915201E-01 1.880564E-01 1.846809E-01 1.813966E-01 1.782069E-01 1.751154E-01 1.721262E-01 1.692438E-01 1.664730E-01 1.638192E-01 1.612881E-01 1.588862E-01 1.566201E-01 1.544974E-01 1.525259E-01 1.507143E-01 1.490715E-01 1.476073E-01 1.463320E-01 1.452562E-01 1.443912E-01 1.437486E-01 1.433401E-01 1.431778E-01 1.432734E-01 1.436382E-01 1.442830E-01 1.452171E-01 1.464483E-01 1.479817E-01 1.498191E-01 1.519579E-01 1.543895E-01 1.570980E-01 1.600578E-01 1.632310E-01 1.665646E-01 1.699863E-01 1.733994E-01 1.766772E-01 1.796552E-01 1.821212E-01 1.838035E-01 1.843547E-01 1.833313E-01 1.801653E-01 1.741258E-01 1.642629E-01 1.493208E-01 1.275955E-01 9.669159E-02 5.344993E-02 0.000000E+00 4.387985E-01 4.319136E-01 4.251060E-01 4.183753E-01 4.117207E-01 4.051417E-01 3.986377E-01 3.922082E-01 3.858527E-01 3.795705E-01 3.733613E-01 3.672244E-01 3.611595E-01 3.551661E-01 3.492437E-01 3.433919E-01 3.376103E-01 3.318985E-01 3.262563E-01 3.206832E-01 3.151789E-01 3.097431E-01 3.043757E-01 2.990763E-01 2.938449E-01 2.886811E-01 2.835850E-01 2.785565E-01 2.735954E-01 2.687019E-01 2.638759E-01 2.591177E-01 2.544273E-01 2.498052E-01 2.452516E-01 2.407669E-01 2.363516E-01 2.320063E-01 2.277318E-01 2.235288E-01 2.193982E-01 2.153413E-01 2.113591E-01 2.074530E-01 2.036247E-01 1.998758E-01 1.962085E-01 1.926247E-01 1.891271E-01 1.857183E-01 1.824014E-01 1.791797E-01 1.760568E-01 1.730368E-01 1.701241E-01 1.673237E-01 1.646408E-01 1.620812E-01 1.596512E-01 1.573577E-01 1.552079E-01 1.532099E-01 1.513721E-01 1.497036E-01 1.482140E-01 1.469137E-01 1.458132E-01 1.449237E-01 1.442569E-01 1.438244E-01 1.436381E-01 1.437097E-01 1.440506E-01 1.446713E-01 1.455812E-01 1.467878E-01 1.482961E-01 1.501079E-01 1.522204E-01 1.546248E-01 1.573052E-01 1.602355E-01 1.633779E-01 1.666791E-01 1.700665E-01 1.734433E-01 1.766827E-01 1.796198E-01 1.820426E-01 1.836793E-01 1.841829E-01 1.831102E-01 1.798944E-01 1.738064E-01 1.638990E-01 1.489221E-01 1.271810E-01 9.629980E-02 5.316538E-02 0.000000E+00 4.423805E-01 4.354188E-01 4.285356E-01 4.217304E-01 4.150027E-01 4.083517E-01 4.017769E-01 3.952777E-01 3.888536E-01 3.825041E-01 3.762285E-01 3.700265E-01 3.638974E-01 3.578410E-01 3.518566E-01 3.459438E-01 3.401024E-01 3.343318E-01 3.286316E-01 3.230016E-01 3.174414E-01 3.119507E-01 3.065293E-01 3.011769E-01 2.958934E-01 2.906784E-01 2.855321E-01 2.804541E-01 2.754445E-01 2.705033E-01 2.656306E-01 2.608264E-01 2.560910E-01 2.514246E-01 2.468275E-01 2.423002E-01 2.378430E-01 2.334567E-01 2.291418E-01 2.248992E-01 2.207299E-01 2.166348E-01 2.126152E-01 2.086725E-01 2.048082E-01 2.010241E-01 1.973221E-01 1.937045E-01 1.901736E-01 1.867322E-01 1.833832E-01 1.801301E-01 1.769764E-01 1.739262E-01 1.709840E-01 1.681545E-01 1.654431E-01 1.628556E-01 1.603981E-01 1.580776E-01 1.559013E-01 1.538773E-01 1.520139E-01 1.503201E-01 1.488058E-01 1.474809E-01 1.463563E-01 1.454429E-01 1.447523E-01 1.442963E-01 1.440865E-01 1.441348E-01 1.444523E-01 1.450494E-01 1.459356E-01 1.471181E-01 1.486020E-01 1.503888E-01 1.524756E-01 1.548535E-01 1.575063E-01 1.604079E-01 1.635202E-01 1.667898E-01 1.701437E-01 1.734852E-01 1.766870E-01 1.795844E-01 1.819651E-01 1.835575E-01 1.840146E-01 1.828941E-01 1.796298E-01 1.734945E-01 1.635441E-01 1.485334E-01 1.267772E-01 9.591858E-02 5.288896E-02 0.000000E+00 4.593372E-01 4.520089E-01 4.447650E-01 4.376051E-01 4.305283E-01 4.235339E-01 4.166214E-01 4.097902E-01 4.030394E-01 3.963687E-01 3.897773E-01 3.832647E-01 3.768303E-01 3.704737E-01 3.641942E-01 3.579914E-01 3.518648E-01 3.458140E-01 3.398385E-01 3.339380E-01 3.281119E-01 3.223600E-01 3.166820E-01 3.110775E-01 3.055463E-01 3.000882E-01 2.947030E-01 2.893904E-01 2.841505E-01 2.789832E-01 2.738884E-01 2.688663E-01 2.639169E-01 2.590404E-01 2.542372E-01 2.495075E-01 2.448519E-01 2.402707E-01 2.357648E-01 2.313347E-01 2.269814E-01 2.227059E-01 2.185094E-01 2.143931E-01 2.103586E-01 2.064076E-01 2.025419E-01 1.987638E-01 1.950755E-01 1.914798E-01 1.879796E-01 1.845782E-01 1.812791E-01 1.780863E-01 1.750042E-01 1.720376E-01 1.691917E-01 1.664722E-01 1.638853E-01 1.614376E-01 1.591365E-01 1.569898E-01 1.550058E-01 1.531934E-01 1.515622E-01 1.501221E-01 1.488837E-01 1.478578E-01 1.470559E-01 1.464892E-01 1.461695E-01 1.461080E-01 1.463156E-01 1.468025E-01 1.475774E-01 1.486474E-01 1.500168E-01 1.516867E-01 1.536533E-01 1.559073E-01 1.584315E-01 1.611992E-01 1.641712E-01 1.672932E-01 1.704915E-01 1.736682E-01 1.766956E-01 1.794081E-01 1.815932E-01 1.829797E-01 1.832217E-01 1.818792E-01 1.783911E-01 1.720379E-01 1.618898E-01 1.467256E-01 1.249037E-01 9.415461E-02 5.161583E-02 0.000000E+00 4.748976E-01 4.672287E-01 4.596500E-01 4.521607E-01 4.447599E-01 4.374470E-01 4.302212E-01 4.230819E-01 4.160284E-01 4.090599E-01 4.021758E-01 3.953755E-01 3.886583E-01 3.820237E-01 3.754711E-01 3.689999E-01 3.626096E-01 3.562996E-01 3.500695E-01 3.439188E-01 3.378471E-01 3.318539E-01 3.259388E-01 3.201016E-01 3.143418E-01 3.086593E-01 3.030536E-01 2.975248E-01 2.920724E-01 2.866966E-01 2.813973E-01 2.761743E-01 2.710279E-01 2.659581E-01 2.609651E-01 2.560493E-01 2.512111E-01 2.464508E-01 2.417692E-01 2.371668E-01 2.326446E-01 2.282034E-01 2.238444E-01 2.195689E-01 2.153782E-01 2.112741E-01 2.072585E-01 2.033332E-01 1.995009E-01 1.957639E-01 1.921252E-01 1.885880E-01 1.851559E-01 1.818328E-01 1.786229E-01 1.755310E-01 1.725623E-01 1.697223E-01 1.670173E-01 1.644537E-01 1.620389E-01 1.597804E-01 1.576866E-01 1.557662E-01 1.540288E-01 1.524840E-01 1.511422E-01 1.500143E-01 1.491113E-01 1.484444E-01 1.480251E-01 1.478642E-01 1.479725E-01 1.483597E-01 1.490342E-01 1.500026E-01 1.512688E-01 1.528333E-01 1.546919E-01 1.568345E-01 1.592432E-01 1.618906E-01 1.647368E-01 1.677266E-01 1.707855E-01 1.738151E-01 1.766866E-01 1.792341E-01 1.812450E-01 1.824483E-01 1.824992E-01 1.809601E-01 1.772741E-01 1.707292E-01 1.604082E-01 1.451115E-01 1.232368E-01 9.259240E-02 5.049644E-02 0.000000E+00 4.892761E-01 4.812891E-01 4.733977E-01 4.656008E-01 4.578976E-01 4.502874E-01 4.427694E-01 4.353428E-01 4.280068E-01 4.207608E-01 4.136038E-01 4.065354E-01 3.995548E-01 3.926614E-01 3.858544E-01 3.791333E-01 3.724975E-01 3.659464E-01 3.594795E-01 3.530962E-01 3.467960E-01 3.405785E-01 3.344432E-01 3.283896E-01 3.224176E-01 3.165266E-01 3.107164E-01 3.049867E-01 2.993373E-01 2.937681E-01 2.882790E-01 2.828699E-01 2.775408E-01 2.722918E-01 2.671231E-01 2.620350E-01 2.570276E-01 2.521016E-01 2.472574E-01 2.424957E-01 2.378172E-01 2.332228E-01 2.287137E-01 2.242910E-01 2.199562E-01 2.157107E-01 2.115566E-01 2.074956E-01 2.035303E-01 1.996630E-01 1.958967E-01 1.922345E-01 1.886798E-01 1.852366E-01 1.819092E-01 1.787020E-01 1.756203E-01 1.726696E-01 1.698560E-01 1.671860E-01 1.646667E-01 1.623056E-01 1.601111E-01 1.580918E-01 1.562569E-01 1.546162E-01 1.531799E-01 1.519586E-01 1.509632E-01 1.502047E-01 1.496944E-01 1.494428E-01 1.494605E-01 1.497569E-01 1.503399E-01 1.512159E-01 1.523883E-01 1.538571E-01 1.556176E-01 1.576591E-01 1.599631E-01 1.625016E-01 1.652339E-01 1.681042E-01 1.710373E-01 1.739339E-01 1.766649E-01 1.790638E-01 1.809180E-01 1.819566E-01 1.818361E-01 1.801209E-01 1.762581E-01 1.695427E-01 1.590686E-01 1.436564E-01 1.217389E-01 9.119426E-02 4.950108E-02 0.000000E+00 5.026408E-01 4.943554E-01 4.861705E-01 4.780851E-01 4.700983E-01 4.622094E-01 4.544174E-01 4.467215E-01 4.391208E-01 4.316147E-01 4.242022E-01 4.168828E-01 4.096555E-01 4.025197E-01 3.954746E-01 3.885198E-01 3.816543E-01 3.748777E-01 3.681893E-01 3.615885E-01 3.550748E-01 3.486476E-01 3.423065E-01 3.360510E-01 3.298807E-01 3.237951E-01 3.177940E-01 3.118769E-01 3.060437E-01 3.002942E-01 2.946281E-01 2.890455E-01 2.835461E-01 2.781302E-01 2.727978E-01 2.675491E-01 2.623844E-01 2.573040E-01 2.523086E-01 2.473986E-01 2.425748E-01 2.378380E-01 2.331893E-01 2.286299E-01 2.241610E-01 2.197843E-01 2.155016E-01 2.113147E-01 2.072259E-01 2.032378E-01 1.993531E-01 1.955750E-01 1.919068E-01 1.883524E-01 1.849159E-01 1.816021E-01 1.784158E-01 1.753627E-01 1.724487E-01 1.696802E-01 1.670644E-01 1.646087E-01 1.623212E-01 1.602105E-01 1.582857E-01 1.565566E-01 1.550332E-01 1.537258E-01 1.526454E-01 1.518027E-01 1.512087E-01 1.508738E-01 1.508083E-01 1.510213E-01 1.515205E-01 1.523118E-01 1.533982E-01 1.547794E-01 1.564501E-01 1.583992E-01 1.606077E-01 1.630467E-01 1.656752E-01 1.684366E-01 1.712551E-01 1.740307E-01 1.766339E-01 1.788979E-01 1.806099E-01 1.814993E-01 1.812236E-01 1.793494E-01 1.753273E-01 1.684586E-01 1.578480E-01 1.423339E-01 1.203813E-01 8.993183E-02 4.860759E-02 0.000000E+00 5.151266E-01 5.065598E-01 4.980984E-01 4.897412E-01 4.814874E-01 4.733359E-01 4.652859E-01 4.573365E-01 4.494868E-01 4.417359E-01 4.340830E-01 4.265274E-01 4.190681E-01 4.117045E-01 4.044357E-01 3.972610E-01 3.901798E-01 3.831913E-01 3.762949E-01 3.694899E-01 3.627757E-01 3.561518E-01 3.496176E-01 3.431725E-01 3.368162E-01 3.305481E-01 3.243680E-01 3.182753E-01 3.122698E-01 3.063512E-01 3.005194E-01 2.947741E-01 2.891154E-01 2.835432E-01 2.780575E-01 2.726586E-01 2.673467E-01 2.621220E-01 2.569851E-01 2.519365E-01 2.469769E-01 2.421070E-01 2.373279E-01 2.326408E-01 2.280468E-01 2.235476E-01 2.191448E-01 2.148404E-01 2.106366E-01 2.065358E-01 2.025407E-01 1.986545E-01 1.948805E-01 1.912226E-01 1.876847E-01 1.842715E-01 1.809880E-01 1.778396E-01 1.748323E-01 1.719723E-01 1.692668E-01 1.667231E-01 1.643492E-01 1.621538E-01 1.601457E-01 1.583346E-01 1.567304E-01 1.553434E-01 1.541842E-01 1.532636E-01 1.525921E-01 1.521803E-01 1.520379E-01 1.521739E-01 1.525957E-01 1.533089E-01 1.543161E-01 1.556166E-01 1.572047E-01 1.590688E-01 1.611893E-01 1.635370E-01 1.660702E-01 1.687317E-01 1.714451E-01 1.741099E-01 1.765962E-01 1.787367E-01 1.803187E-01 1.810720E-01 1.806549E-01 1.786359E-01 1.744691E-01 1.674617E-01 1.567281E-01 1.411233E-01 1.191420E-01 8.878329E-02 4.779906E-02 0.000000E+00 5.268425E-01 5.180098E-01 5.092869E-01 5.006727E-01 4.921663E-01 4.837667E-01 4.754729E-01 4.672840E-01 4.591990E-01 4.512170E-01 4.433371E-01 4.355584E-01 4.278802E-01 4.203015E-01 4.128216E-01 4.054396E-01 3.981548E-01 3.909664E-01 3.838739E-01 3.768764E-01 3.699732E-01 3.631639E-01 3.564477E-01 3.498241E-01 3.432927E-01 3.368527E-01 3.305040E-01 3.242460E-01 3.180783E-01 3.120007E-01 3.060130E-01 3.001148E-01 2.943062E-01 2.885871E-01 2.829574E-01 2.774173E-01 2.719670E-01 2.666068E-01 2.613370E-01 2.561583E-01 2.510711E-01 2.460764E-01 2.411750E-01 2.363680E-01 2.316568E-01 2.270427E-01 2.225274E-01 2.181128E-01 2.138012E-01 2.095948E-01 2.054964E-01 2.015091E-01 1.976361E-01 1.938812E-01 1.902485E-01 1.867425E-01 1.833680E-01 1.801306E-01 1.770360E-01 1.740907E-01 1.713014E-01 1.686756E-01 1.662212E-01 1.639467E-01 1.618610E-01 1.599735E-01 1.582940E-01 1.568329E-01 1.556004E-01 1.546072E-01 1.538638E-01 1.533805E-01 1.531667E-01 1.532312E-01 1.535812E-01 1.542219E-01 1.551558E-01 1.563815E-01 1.578932E-01 1.596786E-01 1.617179E-01 1.639812E-01 1.664264E-01 1.689956E-01 1.716121E-01 1.741748E-01 1.765534E-01 1.785804E-01 1.800428E-01 1.806710E-01 1.801242E-01 1.779726E-01 1.736736E-01 1.665398E-01 1.556947E-01 1.400086E-01 1.180035E-01 8.773153E-02 4.706229E-02 0.000000E+00 5.378789E-01 5.287936E-01 5.198227E-01 5.109647E-01 5.022188E-01 4.935839E-01 4.850590E-01 4.766430E-01 4.683350E-01 4.601339E-01 4.520389E-01 4.440491E-01 4.361634E-01 4.283811E-01 4.207012E-01 4.131229E-01 4.056455E-01 3.982680E-01 3.909899E-01 3.838102E-01 3.767284E-01 3.697436E-01 3.628554E-01 3.560631E-01 3.493660E-01 3.427637E-01 3.362557E-01 3.298415E-01 3.235207E-01 3.172930E-01 3.111580E-01 3.051155E-01 2.991655E-01 2.933076E-01 2.875421E-01 2.818688E-01 2.762881E-01 2.708001E-01 2.654051E-01 2.601037E-01 2.548964E-01 2.497840E-01 2.447674E-01 2.398476E-01 2.350259E-01 2.303037E-01 2.256826E-01 2.211644E-01 2.167513E-01 2.124457E-01 2.082502E-01 2.041678E-01 2.002018E-01 1.963559E-01 1.926341E-01 1.890409E-01 1.855811E-01 1.822601E-01 1.790837E-01 1.760582E-01 1.731905E-01 1.704877E-01 1.679579E-01 1.656094E-01 1.634509E-01 1.614919E-01 1.597421E-01 1.582116E-01 1.569107E-01 1.558497E-01 1.550391E-01 1.544890E-01 1.542086E-01 1.542065E-01 1.544896E-01 1.550628E-01 1.559283E-01 1.570845E-01 1.585250E-01 1.602374E-01 1.622012E-01 1.643861E-01 1.667495E-01 1.692333E-01 1.717599E-01 1.742280E-01 1.765068E-01 1.784288E-01 1.797808E-01 1.802934E-01 1.796269E-01 1.773532E-01 1.729327E-01 1.656830E-01 1.547361E-01 1.389767E-01 1.169519E-01 8.676289E-02 4.638682E-02 0.000000E+00 5.483106E-01 5.389851E-01 5.297781E-01 5.206882E-01 5.117146E-01 5.028559E-01 4.941112E-01 4.854793E-01 4.769593E-01 4.685501E-01 4.602506E-01 4.520601E-01 4.439774E-01 4.360016E-01 4.281318E-01 4.203672E-01 4.127068E-01 4.051499E-01 3.976956E-01 3.903431E-01 3.830917E-01 3.759406E-01 3.688892E-01 3.619368E-01 3.550828E-01 3.483265E-01 3.416675E-01 3.351053E-01 3.286394E-01 3.222694E-01 3.159950E-01 3.098159E-01 3.037319E-01 2.977428E-01 2.918487E-01 2.860494E-01 2.803452E-01 2.747363E-01 2.692229E-01 2.638055E-01 2.584847E-01 2.532611E-01 2.481356E-01 2.431092E-01 2.381832E-01 2.333588E-01 2.286378E-01 2.240218E-01 2.195130E-01 2.151137E-01 2.108266E-01 2.066545E-01 2.026008E-01 1.986691E-01 1.948633E-01 1.911879E-01 1.876477E-01 1.842481E-01 1.809947E-01 1.778938E-01 1.749522E-01 1.721771E-01 1.695763E-01 1.671582E-01 1.649314E-01 1.629053E-01 1.610894E-01 1.594937E-01 1.581285E-01 1.570040E-01 1.561305E-01 1.555177E-01 1.551750E-01 1.551104E-01 1.553309E-01 1.558410E-01 1.566426E-01 1.577338E-01 1.591079E-01 1.607520E-01 1.626453E-01 1.647572E-01 1.670444E-01 1.694485E-01 1.718914E-01 1.742715E-01 1.764576E-01 1.782818E-01 1.795313E-01 1.799368E-01 1.791593E-01 1.767726E-01 1.722397E-01 1.648832E-01 1.538429E-01 1.380170E-01 1.159760E-01 8.586633E-02 4.576425E-02 0.000000E+00 5.582008E-01 5.486462E-01 5.392140E-01 5.299030E-01 5.207121E-01 5.116401E-01 5.026858E-01 4.938482E-01 4.851261E-01 4.765185E-01 4.680243E-01 4.596425E-01 4.513721E-01 4.432121E-01 4.351615E-01 4.272195E-01 4.193850E-01 4.116572E-01 4.040352E-01 3.965183E-01 3.891055E-01 3.817962E-01 3.745896E-01 3.674850E-01 3.604817E-01 3.535792E-01 3.467767E-01 3.400738E-01 3.334700E-01 3.269649E-01 3.205580E-01 3.142491E-01 3.080379E-01 3.019242E-01 2.959080E-01 2.899892E-01 2.841679E-01 2.784442E-01 2.728185E-01 2.672911E-01 2.618626E-01 2.565336E-01 2.513049E-01 2.461775E-01 2.411526E-01 2.362315E-01 2.314158E-01 2.267072E-01 2.221078E-01 2.176199E-01 2.132460E-01 2.089891E-01 2.048524E-01 2.008395E-01 1.969544E-01 1.932013E-01 1.895852E-01 1.861112E-01 1.827850E-01 1.796129E-01 1.766016E-01 1.737582E-01 1.710905E-01 1.686067E-01 1.663155E-01 1.642261E-01 1.623479E-01 1.606910E-01 1.592652E-01 1.580810E-01 1.571481E-01 1.564765E-01 1.560750E-01 1.559519E-01 1.561135E-01 1.565643E-01 1.573060E-01 1.583362E-01 1.596480E-01 1.612281E-01 1.630554E-01 1.650989E-01 1.673148E-01 1.696443E-01 1.720091E-01 1.743069E-01 1.764064E-01 1.781394E-01 1.792932E-01 1.795988E-01 1.787181E-01 1.762263E-01 1.715892E-01 1.641338E-01 1.530074E-01 1.371208E-01 1.150664E-01 8.503279E-02 4.518772E-02 0.000000E+00 5.676035E-01 5.578297E-01 5.481822E-01 5.386598E-01 5.292612E-01 5.199853E-01 5.108308E-01 5.017965E-01 4.928814E-01 4.840843E-01 4.754041E-01 4.668398E-01 4.583901E-01 4.500543E-01 4.418311E-01 4.337196E-01 4.257190E-01 4.178282E-01 4.100463E-01 4.023724E-01 3.948058E-01 3.873456E-01 3.799911E-01 3.727413E-01 3.655958E-01 3.585537E-01 3.516146E-01 3.447777E-01 3.380425E-01 3.314087E-01 3.248757E-01 3.184432E-01 3.121109E-01 3.058786E-01 2.997462E-01 2.937136E-01 2.877808E-01 2.819481E-01 2.762155E-01 2.705835E-01 2.650526E-01 2.596234E-01 2.542966E-01 2.490732E-01 2.439544E-01 2.389414E-01 2.340358E-01 2.292392E-01 2.245538E-01 2.199817E-01 2.155256E-01 2.111882E-01 2.069728E-01 2.028829E-01 1.989225E-01 1.950958E-01 1.914077E-01 1.878633E-01 1.844682E-01 1.812287E-01 1.781513E-01 1.752433E-01 1.725123E-01 1.699664E-01 1.676142E-01 1.654649E-01 1.635279E-01 1.618130E-01 1.603301E-01 1.590894E-01 1.581006E-01 1.573734E-01 1.569166E-01 1.567382E-01 1.568444E-01 1.572394E-01 1.579245E-01 1.588973E-01 1.601505E-01 1.616705E-01 1.634358E-01 1.654149E-01 1.675639E-01 1.698234E-01 1.721147E-01 1.743354E-01 1.763537E-01 1.780014E-01 1.790656E-01 1.792778E-01 1.783006E-01 1.757106E-01 1.709764E-01 1.634290E-01 1.522230E-01 1.362807E-01 1.142153E-01 8.425478E-02 4.465157E-02 0.000000E+00 6.425484E-01 6.309852E-01 6.195810E-01 6.083341E-01 5.972430E-01 5.863057E-01 5.755208E-01 5.648867E-01 5.544016E-01 5.440642E-01 5.338728E-01 5.238259E-01 5.139222E-01 5.041599E-01 4.945379E-01 4.850546E-01 4.757088E-01 4.664990E-01 4.574241E-01 4.484826E-01 4.396735E-01 4.309954E-01 4.224472E-01 4.140279E-01 4.057363E-01 3.975714E-01 3.895322E-01 3.816177E-01 3.738272E-01 3.661597E-01 3.586145E-01 3.511909E-01 3.438883E-01 3.367061E-01 3.296439E-01 3.227013E-01 3.158779E-01 3.091737E-01 3.025885E-01 2.961223E-01 2.897755E-01 2.835481E-01 2.774409E-01 2.714543E-01 2.655892E-01 2.598467E-01 2.542278E-01 2.487341E-01 2.433674E-01 2.381295E-01 2.330226E-01 2.280495E-01 2.232129E-01 2.185160E-01 2.139625E-01 2.095564E-01 2.053021E-01 2.012044E-01 1.972686E-01 1.935005E-01 1.899062E-01 1.864926E-01 1.832667E-01 1.802362E-01 1.774091E-01 1.747940E-01 1.723995E-01 1.702348E-01 1.683088E-01 1.666308E-01 1.652097E-01 1.640538E-01 1.631707E-01 1.625670E-01 1.622474E-01 1.622142E-01 1.624671E-01 1.630013E-01 1.638075E-01 1.648694E-01 1.661631E-01 1.676544E-01 1.692964E-01 1.710269E-01 1.727646E-01 1.744045E-01 1.758130E-01 1.768209E-01 1.772160E-01 1.767325E-01 1.750396E-01 1.717257E-01 1.662795E-01 1.580652E-01 1.462916E-01 1.299706E-01 1.078704E-01 7.851091E-02 4.075271E-02 0.000000E+00 6.962816E-01 6.833916E-01 6.706859E-01 6.581625E-01 6.458192E-01 6.336541E-01 6.216652E-01 6.098504E-01 5.982078E-01 5.867355E-01 5.754317E-01 5.642945E-01 5.533219E-01 5.425124E-01 5.318639E-01 5.213751E-01 5.110439E-01 5.008689E-01 4.908485E-01 4.809809E-01 4.712647E-01 4.616985E-01 4.522806E-01 4.430098E-01 4.338846E-01 4.249038E-01 4.160659E-01 4.073699E-01 3.988145E-01 3.903987E-01 3.821213E-01 3.739815E-01 3.659784E-01 3.581111E-01 3.503789E-01 3.427812E-01 3.353175E-01 3.279872E-01 3.207901E-01 3.137260E-01 3.067948E-01 2.999965E-01 2.933315E-01 2.868001E-01 2.804030E-01 2.741408E-01 2.680146E-01 2.620256E-01 2.561753E-01 2.504654E-01 2.448979E-01 2.394752E-01 2.341999E-01 2.290750E-01 2.241038E-01 2.192902E-01 2.146383E-01 2.101526E-01 2.058381E-01 2.017004E-01 1.977453E-01 1.939793E-01 1.904091E-01 1.870420E-01 1.838858E-01 1.809482E-01 1.782378E-01 1.757629E-01 1.735322E-01 1.715540E-01 1.698367E-01 1.683878E-01 1.672140E-01 1.663210E-01 1.657123E-01 1.653893E-01 1.653501E-01 1.655889E-01 1.660945E-01 1.668494E-01 1.678278E-01 1.689937E-01 1.702985E-01 1.716781E-01 1.730496E-01 1.743066E-01 1.753143E-01 1.759034E-01 1.758622E-01 1.749275E-01 1.727731E-01 1.689960E-01 1.630991E-01 1.544697E-01 1.423530E-01 1.258211E-01 1.037443E-01 7.482959E-02 3.830925E-02 0.000000E+00 7.382194E-01 7.242700E-01 7.105257E-01 6.969841E-01 6.836428E-01 6.704995E-01 6.575518E-01 6.447975E-01 6.322343E-01 6.198599E-01 6.076723E-01 5.956692E-01 5.838486E-01 5.722084E-01 5.607465E-01 5.494609E-01 5.383498E-01 5.274111E-01 5.166430E-01 5.060436E-01 4.956112E-01 4.853439E-01 4.752401E-01 4.652980E-01 4.555161E-01 4.458928E-01 4.364266E-01 4.271160E-01 4.179596E-01 4.089561E-01 4.001043E-01 3.914028E-01 3.828507E-01 3.744469E-01 3.661904E-01 3.580804E-01 3.501161E-01 3.422970E-01 3.346224E-01 3.270919E-01 3.197054E-01 3.124626E-01 3.053637E-01 2.984087E-01 2.915982E-01 2.849327E-01 2.784130E-01 2.720401E-01 2.658154E-01 2.597404E-01 2.538168E-01 2.480469E-01 2.424331E-01 2.369782E-01 2.316855E-01 2.265583E-01 2.216007E-01 2.168171E-01 2.122122E-01 2.077914E-01 2.035602E-01 1.995247E-01 1.956917E-01 1.920679E-01 1.886608E-01 1.854781E-01 1.825276E-01 1.798175E-01 1.773558E-01 1.751507E-01 1.732096E-01 1.715397E-01 1.701470E-01 1.690364E-01 1.682107E-01 1.676705E-01 1.674129E-01 1.674310E-01 1.677126E-01 1.682390E-01 1.689831E-01 1.699076E-01 1.709627E-01 1.720831E-01 1.731846E-01 1.741598E-01 1.748733E-01 1.751557E-01 1.747960E-01 1.735330E-01 1.710444E-01 1.669338E-01 1.607150E-01 1.517925E-01 1.394394E-01 1.227723E-01 1.007360E-01 7.217260E-02 3.657279E-02 0.000000E+00 7.726266E-01 7.577931E-01 7.431825E-01 7.287919E-01 7.146188E-01 7.006605E-01 6.869144E-01 6.733779E-01 6.600487E-01 6.469241E-01 6.340018E-01 6.212793E-01 6.087543E-01 5.964244E-01 5.842875E-01 5.723411E-01 5.605833E-01 5.490117E-01 5.376243E-01 5.264189E-01 5.153937E-01 5.045465E-01 4.938755E-01 4.833788E-01 4.730544E-01 4.629008E-01 4.529160E-01 4.430985E-01 4.334467E-01 4.239590E-01 4.146340E-01 4.054703E-01 3.964665E-01 3.876215E-01 3.789341E-01 3.704033E-01 3.620282E-01 3.538079E-01 3.457417E-01 3.378291E-01 3.300696E-01 3.224629E-01 3.150090E-01 3.077077E-01 3.005594E-01 2.935645E-01 2.867237E-01 2.800377E-01 2.735078E-01 2.671353E-01 2.609219E-01 2.548696E-01 2.489807E-01 2.432578E-01 2.377039E-01 2.323224E-01 2.271172E-01 2.220923E-01 2.172524E-01 2.126025E-01 2.081483E-01 2.038954E-01 1.998504E-01 1.960198E-01 1.924109E-01 1.890309E-01 1.858876E-01 1.829887E-01 1.803420E-01 1.779550E-01 1.758350E-01 1.739885E-01 1.724212E-01 1.711372E-01 1.701389E-01 1.694259E-01 1.689948E-01 1.688379E-01 1.689421E-01 1.692877E-01 1.698467E-01 1.705809E-01 1.714393E-01 1.723558E-01 1.732451E-01 1.739993E-01 1.744826E-01 1.745254E-01 1.739175E-01 1.723993E-01 1.696518E-01 1.652840E-01 1.588185E-01 1.496739E-01 1.371449E-01 1.203835E-01 9.839287E-02 7.011906E-02 3.524640E-02 0.000000E+00 8.018029E-01 7.862096E-01 7.708546E-01 7.557348E-01 7.408475E-01 7.261897E-01 7.117585E-01 6.975513E-01 6.835652E-01 6.697975E-01 6.562456E-01 6.429070E-01 6.297788E-01 6.168587E-01 6.041442E-01 5.916327E-01 5.793219E-01 5.672094E-01 5.552928E-01 5.435700E-01 5.320387E-01 5.206966E-01 5.095418E-01 4.985720E-01 4.877853E-01 4.771797E-01 4.667534E-01 4.565043E-01 4.464309E-01 4.365313E-01 4.268039E-01 4.172472E-01 4.078597E-01 3.986400E-01 3.895868E-01 3.806990E-01 3.719753E-01 3.634150E-01 3.550170E-01 3.467806E-01 3.387054E-01 3.307907E-01 3.230364E-01 3.154424E-01 3.080087E-01 3.007356E-01 2.936236E-01 2.866735E-01 2.798862E-01 2.732630E-01 2.668054E-01 2.605153E-01 2.543949E-01 2.484466E-01 2.426732E-01 2.370782E-01 2.316650E-01 2.264377E-01 2.214008E-01 2.165591E-01 2.119181E-01 2.074833E-01 2.032610E-01 1.992577E-01 1.954803E-01 1.919359E-01 1.886319E-01 1.855758E-01 1.827750E-01 1.802369E-01 1.779683E-01 1.759753E-01 1.742632E-01 1.728356E-01 1.716944E-01 1.708387E-01 1.702643E-01 1.699631E-01 1.699211E-01 1.701179E-01 1.705247E-01 1.711025E-01 1.717995E-01 1.725488E-01 1.732645E-01 1.738380E-01 1.741333E-01 1.739808E-01 1.731709E-01 1.714456E-01 1.684886E-01 1.639135E-01 1.572501E-01 1.479288E-01 1.352624E-01 1.184316E-01 9.648738E-02 6.845942E-02 3.418449E-02 0.000000E+00 8.271319E-01 8.108716E-01 7.948633E-01 7.791038E-01 7.635900E-01 7.483189E-01 7.332872E-01 7.184921E-01 7.039306E-01 6.895997E-01 6.754966E-01 6.616185E-01 6.479626E-01 6.345262E-01 6.213065E-01 6.083009E-01 5.955068E-01 5.829217E-01 5.705431E-01 5.583683E-01 5.463952E-01 5.346214E-01 5.230444E-01 5.116622E-01 5.004724E-01 4.894729E-01 4.786618E-01 4.680369E-01 4.575963E-01 4.473382E-01 4.372608E-01 4.273624E-01 4.176412E-01 4.080959E-01 3.987249E-01 3.895269E-01 3.805007E-01 3.716452E-01 3.629594E-01 3.544423E-01 3.460933E-01 3.379118E-01 3.298974E-01 3.220498E-01 3.143691E-01 3.068553E-01 2.995088E-01 2.923304E-01 2.853207E-01 2.784810E-01 2.718127E-01 2.653175E-01 2.589973E-01 2.528547E-01 2.468923E-01 2.411133E-01 2.355211E-01 2.301197E-01 2.249134E-01 2.199070E-01 2.151055E-01 2.105146E-01 2.061403E-01 2.019889E-01 1.980671E-01 1.943819E-01 1.909405E-01 1.877499E-01 1.848176E-01 1.821505E-01 1.797551E-01 1.776372E-01 1.758018E-01 1.742520E-01 1.729893E-01 1.720123E-01 1.713164E-01 1.708927E-01 1.707267E-01 1.707975E-01 1.710756E-01 1.715211E-01 1.720819E-01 1.726901E-01 1.732594E-01 1.736808E-01 1.738179E-01 1.735014E-01 1.725222E-01 1.706236E-01 1.674916E-01 1.627439E-01 1.559168E-01 1.464501E-01 1.336724E-01 1.167887E-01 9.488986E-02 6.707523E-02 3.330572E-02 0.000000E+00 8.495111E-01 8.326560E-01 8.160652E-01 7.997354E-01 7.836633E-01 7.678456E-01 7.522790E-01 7.369604E-01 7.218865E-01 7.070543E-01 6.924607E-01 6.781028E-01 6.639774E-01 6.500818E-01 6.364130E-01 6.229683E-01 6.097448E-01 5.967398E-01 5.839507E-01 5.713748E-01 5.590096E-01 5.468526E-01 5.349012E-01 5.231531E-01 5.116059E-01 5.002573E-01 4.891052E-01 4.781474E-01 4.673817E-01 4.568062E-01 4.464189E-01 4.362181E-01 4.262018E-01 4.163685E-01 4.067165E-01 3.972445E-01 3.879510E-01 3.788348E-01 3.698948E-01 3.611299E-01 3.525394E-01 3.441225E-01 3.358788E-01 3.278078E-01 3.199093E-01 3.121836E-01 3.046307E-01 2.972513E-01 2.900460E-01 2.830159E-01 2.761622E-01 2.694867E-01 2.629912E-01 2.566779E-01 2.505496E-01 2.446092E-01 2.388601E-01 2.333061E-01 2.279513E-01 2.228006E-01 2.178587E-01 2.131312E-01 2.086240E-01 2.043432E-01 2.002953E-01 1.964872E-01 1.929258E-01 1.896181E-01 1.865712E-01 1.837917E-01 1.812859E-01 1.790595E-01 1.771168E-01 1.754609E-01 1.740927E-01 1.730105E-01 1.722093E-01 1.716795E-01 1.714063E-01 1.713681E-01 1.715349E-01 1.718663E-01 1.723094E-01 1.727960E-01 1.732392E-01 1.735297E-01 1.735308E-01 1.730734E-01 1.719490E-01 1.699020E-01 1.666206E-01 1.617259E-01 1.547596E-01 1.451705E-01 1.323003E-01 1.153750E-01 9.351989E-02 6.589344E-02 3.256045E-02 0.000000E+00 8.695567E-01 8.521643E-01 8.350476E-01 8.182031E-01 8.016272E-01 7.853163E-01 7.692672E-01 7.534763E-01 7.379405E-01 7.226564E-01 7.076207E-01 6.928303E-01 6.782820E-01 6.639728E-01 6.498997E-01 6.360596E-01 6.224496E-01 6.090668E-01 5.959085E-01 5.829717E-01 5.702539E-01 5.577523E-01 5.454644E-01 5.333875E-01 5.215192E-01 5.098572E-01 4.983989E-01 4.871421E-01 4.760847E-01 4.652244E-01 4.545592E-01 4.440871E-01 4.338062E-01 4.237148E-01 4.138111E-01 4.040936E-01 3.945607E-01 3.852111E-01 3.760436E-01 3.670570E-01 3.582504E-01 3.496230E-01 3.411742E-01 3.329035E-01 3.248106E-01 3.168955E-01 3.091583E-01 3.015994E-01 2.942196E-01 2.870196E-01 2.800007E-01 2.731644E-01 2.665126E-01 2.600474E-01 2.537713E-01 2.476872E-01 2.417985E-01 2.361087E-01 2.306221E-01 2.253430E-01 2.202764E-01 2.154277E-01 2.108025E-01 2.064069E-01 2.022472E-01 1.983302E-01 1.946625E-01 1.912511E-01 1.881027E-01 1.852238E-01 1.826206E-01 1.802982E-01 1.782610E-01 1.765114E-01 1.750502E-01 1.738753E-01 1.729812E-01 1.723581E-01 1.719905E-01 1.718565E-01 1.719255E-01 1.721567E-01 1.724966E-01 1.728766E-01 1.732093E-01 1.733851E-01 1.732674E-01 1.726869E-01 1.714358E-01 1.692594E-01 1.658480E-01 1.608257E-01 1.537393E-01 1.440449E-01 1.310962E-01 1.141376E-01 9.232430E-02 6.486607E-02 3.191631E-02 0.000000E+00 8.877092E-01 8.698269E-01 8.522307E-01 8.349168E-01 8.178816E-01 8.011214E-01 7.846326E-01 7.684116E-01 7.524549E-01 7.367592E-01 7.213210E-01 7.061369E-01 6.912038E-01 6.765183E-01 6.620772E-01 6.478775E-01 6.339160E-01 6.201897E-01 6.066957E-01 5.934309E-01 5.803927E-01 5.675782E-01 5.549846E-01 5.426092E-01 5.304494E-01 5.185027E-01 5.067666E-01 4.952386E-01 4.839165E-01 4.727979E-01 4.618807E-01 4.511628E-01 4.406421E-01 4.303168E-01 4.201851E-01 4.102452E-01 4.004956E-01 3.909347E-01 3.815613E-01 3.723741E-01 3.633721E-01 3.545544E-01 3.459202E-01 3.374690E-01 3.292004E-01 3.211142E-01 3.132106E-01 3.054898E-01 2.979523E-01 2.905991E-01 2.834312E-01 2.764500E-01 2.696573E-01 2.630551E-01 2.566459E-01 2.504325E-01 2.444181E-01 2.386062E-01 2.330008E-01 2.276064E-01 2.224278E-01 2.174701E-01 2.127389E-01 2.082402E-01 2.039803E-01 1.999655E-01 1.962026E-01 1.926982E-01 1.894589E-01 1.864911E-01 1.838006E-01 1.813924E-01 1.792705E-01 1.774373E-01 1.758931E-01 1.746354E-01 1.736585E-01 1.729521E-01 1.725005E-01 1.722812E-01 1.722631E-01 1.724051E-01 1.726533E-01 1.729385E-01 1.731731E-01 1.732472E-01 1.730240E-01 1.723346E-01 1.709713E-01 1.686807E-01 1.651545E-01 1.600200E-01 1.528281E-01 1.430419E-01 1.300255E-01 1.130397E-01 9.126625E-02 6.396000E-02 3.135113E-02 0.000000E+00 9.042955E-01 8.859627E-01 8.679256E-01 8.501803E-01 8.327230E-01 8.155499E-01 7.986570E-01 7.820409E-01 7.656978E-01 7.496241E-01 7.338163E-01 7.182708E-01 7.029844E-01 6.879535E-01 6.731749E-01 6.586453E-01 6.443614E-01 6.303202E-01 6.165184E-01 6.029531E-01 5.896212E-01 5.765198E-01 5.636462E-01 5.509974E-01 5.385706E-01 5.263634E-01 5.143729E-01 5.025967E-01 4.910324E-01 4.796775E-01 4.685298E-01 4.575871E-01 4.468472E-01 4.363081E-01 4.259679E-01 4.158249E-01 4.058772E-01 3.961235E-01 3.865621E-01 3.771918E-01 3.680114E-01 3.590200E-01 3.502167E-01 3.416008E-01 3.331720E-01 3.249299E-01 3.168746E-01 3.090062E-01 3.013253E-01 2.938325E-01 2.865289E-01 2.794158E-01 2.724949E-01 2.657681E-01 2.592379E-01 2.529069E-01 2.467782E-01 2.408553E-01 2.351422E-01 2.296431E-01 2.243627E-01 2.193061E-01 2.144789E-01 2.098868E-01 2.055359E-01 2.014326E-01 1.975834E-01 1.939948E-01 1.906734E-01 1.876251E-01 1.848557E-01 1.823700E-01 1.801717E-01 1.782630E-01 1.766438E-01 1.753115E-01 1.742600E-01 1.734786E-01 1.729513E-01 1.726551E-01 1.725587E-01 1.726205E-01 1.727862E-01 1.729863E-01 1.731328E-01 1.731157E-01 1.727980E-01 1.720108E-01 1.705472E-01 1.681544E-01 1.645259E-01 1.592914E-01 1.520058E-01 1.421385E-01 1.290629E-01 1.120547E-01 9.031924E-02 6.315149E-02 3.084913E-02 0.000000E+00 9.195642E-01 9.008144E-01 8.823691E-01 8.642246E-01 8.463766E-01 8.288213E-01 8.115548E-01 7.945731E-01 7.778726E-01 7.614494E-01 7.452999E-01 7.294204E-01 7.138075E-01 6.984575E-01 6.833670E-01 6.685326E-01 6.539510E-01 6.396188E-01 6.255329E-01 6.116900E-01 5.980871E-01 5.847211E-01 5.715890E-01 5.586879E-01 5.460149E-01 5.335673E-01 5.213423E-01 5.093373E-01 4.975497E-01 4.859771E-01 4.746170E-01 4.634672E-01 4.525253E-01 4.417894E-01 4.312573E-01 4.209273E-01 4.107974E-01 4.008661E-01 3.911317E-01 3.815930E-01 3.722486E-01 3.630975E-01 3.541388E-01 3.453716E-01 3.367956E-01 3.284103E-01 3.202156E-01 3.122118E-01 3.043991E-01 2.967782E-01 2.893501E-01 2.821161E-01 2.750776E-01 2.682366E-01 2.615955E-01 2.551567E-01 2.489234E-01 2.428989E-01 2.370871E-01 2.314921E-01 2.261186E-01 2.209716E-01 2.160565E-01 2.113790E-01 2.069451E-01 2.027609E-01 1.988330E-01 1.951676E-01 1.917711E-01 1.886495E-01 1.858082E-01 1.832518E-01 1.809839E-01 1.790064E-01 1.773190E-01 1.759188E-01 1.747994E-01 1.739498E-01 1.733537E-01 1.729878E-01 1.728204E-01 1.728094E-01 1.729003E-01 1.730232E-01 1.730899E-01 1.729902E-01 1.725869E-01 1.717114E-01 1.701571E-01 1.676722E-01 1.639515E-01 1.586269E-01 1.512574E-01 1.413176E-01 1.281898E-01 1.111629E-01 8.946357E-02 6.242300E-02 3.039866E-02 0.000000E+00 9.337092E-01 9.145709E-01 8.957457E-01 8.772294E-01 8.590178E-01 8.411069E-01 8.234926E-01 8.061708E-01 7.891378E-01 7.723895E-01 7.559222E-01 7.397321E-01 7.238156E-01 7.081689E-01 6.927885E-01 6.776709E-01 6.628126E-01 6.482102E-01 6.338602E-01 6.197596E-01 6.059050E-01 5.922932E-01 5.789213E-01 5.657859E-01 5.528845E-01 5.402138E-01 5.277713E-01 5.155540E-01 5.035594E-01 4.917848E-01 4.802278E-01 4.688860E-01 4.577570E-01 4.468386E-01 4.361288E-01 4.256254E-01 4.153268E-01 4.052311E-01 3.953367E-01 3.856420E-01 3.761458E-01 3.668470E-01 3.577444E-01 3.488373E-01 3.401252E-01 3.316074E-01 3.232840E-01 3.151549E-01 3.072205E-01 2.994814E-01 2.919383E-01 2.845925E-01 2.774456E-01 2.704992E-01 2.637556E-01 2.572175E-01 2.508877E-01 2.447695E-01 2.388667E-01 2.331834E-01 2.277242E-01 2.224940E-01 2.174980E-01 2.127418E-01 2.082315E-01 2.039730E-01 1.999726E-01 1.962366E-01 1.927712E-01 1.895822E-01 1.866748E-01 1.840536E-01 1.817219E-01 1.796813E-01 1.779314E-01 1.764690E-01 1.752873E-01 1.743754E-01 1.737163E-01 1.732865E-01 1.730541E-01 1.729765E-01 1.729991E-01 1.730515E-01 1.730454E-01 1.728702E-01 1.723890E-01 1.714330E-01 1.697961E-01 1.672273E-01 1.634228E-01 1.580167E-01 1.505712E-01 1.405662E-01 1.273917E-01 1.103490E-01 8.868425E-02 6.176119E-02 2.999098E-02 0.000000E+00 9.468843E-01 9.273825E-01 9.082017E-01 8.893376E-01 8.707859E-01 8.525423E-01 8.346027E-01 8.169630E-01 7.996190E-01 7.825668E-01 7.658025E-01 7.493221E-01 7.331218E-01 7.171980E-01 7.015467E-01 6.861645E-01 6.710477E-01 6.561929E-01 6.415965E-01 6.272552E-01 6.131656E-01 5.993245E-01 5.857286E-01 5.723749E-01 5.592601E-01 5.463815E-01 5.337360E-01 5.213208E-01 5.091332E-01 4.971703E-01 4.854298E-01 4.739090E-01 4.626056E-01 4.515173E-01 4.406418E-01 4.299771E-01 4.195214E-01 4.092726E-01 3.992291E-01 3.893893E-01 3.797519E-01 3.703156E-01 3.610792E-01 3.520420E-01 3.432032E-01 3.345624E-01 3.261193E-01 3.178739E-01 3.098263E-01 3.019773E-01 2.943274E-01 2.868779E-01 2.796302E-01 2.725860E-01 2.657475E-01 2.591172E-01 2.526978E-01 2.464928E-01 2.405056E-01 2.347405E-01 2.292019E-01 2.238945E-01 2.188236E-01 2.139946E-01 2.094135E-01 2.050862E-01 2.010189E-01 1.972176E-01 1.936885E-01 1.904372E-01 1.874688E-01 1.847877E-01 1.823970E-01 1.802982E-01 1.784906E-01 1.769708E-01 1.757319E-01 1.747624E-01 1.740453E-01 1.735567E-01 1.732644E-01 1.731257E-01 1.730854E-01 1.730730E-01 1.729999E-01 1.727555E-01 1.722026E-01 1.711728E-01 1.694603E-01 1.668146E-01 1.629334E-01 1.574528E-01 1.499380E-01 1.398738E-01 1.266575E-01 1.096014E-01 8.796962E-02 6.115572E-02 2.961929E-02 0.000000E+00 9.592137E-01 9.393703E-01 9.198554E-01 9.006644E-01 8.817932E-01 8.632371E-01 8.449920E-01 8.270535E-01 8.094176E-01 7.920800E-01 7.750368E-01 7.582838E-01 7.418172E-01 7.256331E-01 7.097278E-01 6.940973E-01 6.787381E-01 6.636465E-01 6.488189E-01 6.342519E-01 6.199419E-01 6.058858E-01 5.920801E-01 5.785215E-01 5.652069E-01 5.521334E-01 5.392978E-01 5.266971E-01 5.143286E-01 5.021895E-01 4.902771E-01 4.785887E-01 4.671220E-01 4.558747E-01 4.448442E-01 4.340286E-01 4.234258E-01 4.130338E-01 4.028509E-01 3.928754E-01 3.831060E-01 3.735411E-01 3.641797E-01 3.550209E-01 3.460639E-01 3.373080E-01 3.287531E-01 3.203990E-01 3.122459E-01 3.042942E-01 2.965447E-01 2.889984E-01 2.816567E-01 2.745213E-01 2.675942E-01 2.608778E-01 2.543751E-01 2.480891E-01 2.420234E-01 2.361820E-01 2.305694E-01 2.251901E-01 2.200495E-01 2.151529E-01 2.105059E-01 2.061146E-01 2.019850E-01 1.981231E-01 1.945347E-01 1.912256E-01 1.882006E-01 1.854639E-01 1.830184E-01 1.808656E-01 1.790045E-01 1.774315E-01 1.761395E-01 1.751166E-01 1.743458E-01 1.738028E-01 1.734551E-01 1.732598E-01 1.731612E-01 1.730890E-01 1.729540E-01 1.726456E-01 1.720266E-01 1.709286E-01 1.691463E-01 1.664299E-01 1.624781E-01 1.569290E-01 1.493507E-01 1.392324E-01 1.259781E-01 1.089107E-01 8.731046E-02 6.059844E-02 2.927828E-02 0.000000E+00 9.707995E-01 9.506337E-01 9.308036E-01 9.113044E-01 8.921317E-01 8.732809E-01 8.547477E-01 8.365276E-01 8.186164E-01 8.010098E-01 7.837036E-01 7.666938E-01 7.499763E-01 7.335471E-01 7.174023E-01 7.015380E-01 6.859503E-01 6.706358E-01 6.555905E-01 6.408110E-01 6.262936E-01 6.120350E-01 5.980317E-01 5.842804E-01 5.707779E-01 5.575209E-01 5.445064E-01 5.317313E-01 5.191928E-01 5.068879E-01 4.948138E-01 4.829680E-01 4.713479E-01 4.599510E-01 4.487749E-01 4.378174E-01 4.270765E-01 4.165500E-01 4.062362E-01 3.961333E-01 3.862398E-01 3.765543E-01 3.670756E-01 3.578027E-01 3.487346E-01 3.398709E-01 3.312111E-01 3.227551E-01 3.145030E-01 3.064551E-01 2.986122E-01 2.909752E-01 2.835454E-01 2.763245E-01 2.693145E-01 2.625176E-01 2.559367E-01 2.495749E-01 2.434357E-01 2.375230E-01 2.318411E-01 2.263948E-01 2.211889E-01 2.162290E-01 2.115206E-01 2.070695E-01 2.028816E-01 1.989631E-01 1.953194E-01 1.919563E-01 1.888784E-01 1.860899E-01 1.835934E-01 1.813902E-01 1.794793E-01 1.778567E-01 1.765152E-01 1.754427E-01 1.746219E-01 1.740282E-01 1.736290E-01 1.733810E-01 1.732284E-01 1.731004E-01 1.729080E-01 1.725401E-01 1.718597E-01 1.706986E-01 1.688515E-01 1.660696E-01 1.620525E-01 1.564401E-01 1.488033E-01 1.386354E-01 1.253465E-01 1.082693E-01 8.669931E-02 6.008278E-02 2.896367E-02 0.000000E+00 9.817260E-01 9.612551E-01 9.411266E-01 9.213356E-01 9.018777E-01 8.827481E-01 8.639422E-01 8.454557E-01 8.272841E-01 8.094230E-01 7.918683E-01 7.746156E-01 7.576607E-01 7.409998E-01 7.246286E-01 7.085432E-01 6.927398E-01 6.772144E-01 6.619635E-01 6.469831E-01 6.322699E-01 6.178200E-01 6.036301E-01 5.896968E-01 5.760168E-01 5.625866E-01 5.494033E-01 5.364636E-01 5.237645E-01 5.113031E-01 4.990766E-01 4.870822E-01 4.753173E-01 4.637794E-01 4.524659E-01 4.413747E-01 4.305035E-01 4.198502E-01 4.094130E-01 3.991900E-01 3.891797E-01 3.793806E-01 3.697913E-01 3.604108E-01 3.512383E-01 3.422730E-01 3.335145E-01 3.249625E-01 3.166172E-01 3.084788E-01 3.005480E-01 2.928257E-01 2.853131E-01 2.780118E-01 2.709237E-01 2.640512E-01 2.573969E-01 2.509639E-01 2.447556E-01 2.387759E-01 2.330290E-01 2.275196E-01 2.222525E-01 2.172332E-01 2.124670E-01 2.079599E-01 2.037175E-01 1.997458E-01 1.960504E-01 1.926366E-01 1.895092E-01 1.866721E-01 1.841279E-01 1.818776E-01 1.799199E-01 1.782510E-01 1.768632E-01 1.757443E-01 1.748767E-01 1.742358E-01 1.737884E-01 1.734911E-01 1.732881E-01 1.731081E-01 1.728621E-01 1.724388E-01 1.717012E-01 1.704812E-01 1.685738E-01 1.657309E-01 1.616531E-01 1.559820E-01 1.482910E-01 1.380772E-01 1.247567E-01 1.076710E-01 8.613010E-02 5.960341E-02 2.867200E-02 0.000000E+00 9.920641E-01 9.713035E-01 9.508917E-01 9.308238E-01 9.110951E-01 8.917008E-01 8.726363E-01 8.538969E-01 8.354782E-01 8.173758E-01 7.995852E-01 7.821020E-01 7.649222E-01 7.480414E-01 7.314556E-01 7.151606E-01 6.991525E-01 6.834275E-01 6.679815E-01 6.528109E-01 6.379119E-01 6.232808E-01 6.089142E-01 5.948085E-01 5.809602E-01 5.673661E-01 5.540228E-01 5.409272E-01 5.280761E-01 5.154666E-01 5.030957E-01 4.909607E-01 4.790589E-01 4.673874E-01 4.559441E-01 4.447263E-01 4.337319E-01 4.229587E-01 4.124048E-01 4.020683E-01 3.919475E-01 3.820409E-01 3.723471E-01 3.628651E-01 3.535938E-01 3.445325E-01 3.356807E-01 3.270382E-01 3.186049E-01 3.103810E-01 3.023672E-01 2.945644E-01 2.869736E-01 2.795964E-01 2.724348E-01 2.654909E-01 2.587673E-01 2.522672E-01 2.459937E-01 2.399509E-01 2.341428E-01 2.285739E-01 2.232492E-01 2.181739E-01 2.133535E-01 2.087935E-01 2.044998E-01 2.004780E-01 1.967339E-01 1.932725E-01 1.900986E-01 1.872158E-01 1.846267E-01 1.823321E-01 1.803307E-01 1.786182E-01 1.771869E-01 1.760245E-01 1.751130E-01 1.744277E-01 1.739352E-01 1.735918E-01 1.733414E-01 1.731128E-01 1.728165E-01 1.723413E-01 1.715502E-01 1.702751E-01 1.683114E-01 1.654115E-01 1.612771E-01 1.555512E-01 1.478097E-01 1.375534E-01 1.242038E-01 1.071109E-01 8.559783E-02 5.915592E-02 2.840044E-02 0.000000E+00 1.001874E+00 9.808374E-01 9.601560E-01 9.398245E-01 9.198380E-01 9.001918E-01 8.808811E-01 8.619013E-01 8.432475E-01 8.249154E-01 8.069004E-01 7.891982E-01 7.718043E-01 7.547145E-01 7.379246E-01 7.214303E-01 7.052277E-01 6.893128E-01 6.736814E-01 6.583300E-01 6.432545E-01 6.284513E-01 6.139167E-01 5.996472E-01 5.856391E-01 5.718892E-01 5.583941E-01 5.451504E-01 5.321550E-01 5.194049E-01 5.068970E-01 4.946285E-01 4.825966E-01 4.707986E-01 4.592319E-01 4.478940E-01 4.367828E-01 4.258959E-01 4.152313E-01 4.047871E-01 3.945615E-01 3.845531E-01 3.747603E-01 3.651820E-01 3.558170E-01 3.466648E-01 3.377247E-01 3.289963E-01 3.204796E-01 3.121748E-01 3.040825E-01 2.962034E-01 2.885386E-01 2.810897E-01 2.738584E-01 2.668469E-01 2.600579E-01 2.534942E-01 2.471592E-01 2.410566E-01 2.351906E-01 2.295656E-01 2.241864E-01 2.190583E-01 2.141865E-01 2.095766E-01 2.052345E-01 2.011655E-01 1.973754E-01 1.938691E-01 1.906513E-01 1.877254E-01 1.850940E-01 1.827577E-01 1.807149E-01 1.789614E-01 1.774892E-01 1.762858E-01 1.753330E-01 1.746059E-01 1.740709E-01 1.736841E-01 1.733893E-01 1.731149E-01 1.727713E-01 1.722474E-01 1.714060E-01 1.700792E-01 1.680626E-01 1.651093E-01 1.609218E-01 1.551447E-01 1.473561E-01 1.370602E-01 1.236837E-01 1.065845E-01 8.509830E-02 5.873665E-02 2.814662E-02 0.000000E+00 1.079463E+00 1.056215E+00 1.033372E+00 1.010928E+00 9.888772E-01 9.672143E-01 9.459333E-01 9.250287E-01 9.044952E-01 8.843271E-01 8.645193E-01 8.450665E-01 8.259636E-01 8.072054E-01 7.887871E-01 7.707036E-01 7.529502E-01 7.355220E-01 7.184145E-01 7.016231E-01 6.851432E-01 6.689703E-01 6.531003E-01 6.375288E-01 6.222516E-01 6.072646E-01 5.925640E-01 5.781457E-01 5.640061E-01 5.501413E-01 5.365479E-01 5.232223E-01 5.101612E-01 4.973612E-01 4.848194E-01 4.725327E-01 4.604983E-01 4.487134E-01 4.371754E-01 4.258819E-01 4.148307E-01 4.040196E-01 3.934469E-01 3.831107E-01 3.730097E-01 3.631425E-01 3.535082E-01 3.441059E-01 3.349351E-01 3.259956E-01 3.172875E-01 3.088112E-01 3.005672E-01 2.925568E-01 2.847811E-01 2.772421E-01 2.699418E-01 2.628827E-01 2.560678E-01 2.495001E-01 2.431835E-01 2.371219E-01 2.313195E-01 2.257810E-01 2.205111E-01 2.155149E-01 2.107974E-01 2.063635E-01 2.022180E-01 1.983650E-01 1.948085E-01 1.915509E-01 1.885937E-01 1.859364E-01 1.835764E-01 1.815082E-01 1.797222E-01 1.782047E-01 1.769361E-01 1.758897E-01 1.750304E-01 1.743128E-01 1.736791E-01 1.730565E-01 1.723542E-01 1.714605E-01 1.702382E-01 1.685204E-01 1.661053E-01 1.627502E-01 1.581651E-01 1.520062E-01 1.438691E-01 1.332844E-01 1.197185E-01 1.025895E-01 8.132676E-02 5.559272E-02 2.626247E-02 0.000000E+00 1.134519E+00 1.109670E+00 1.085264E+00 1.061293E+00 1.037750E+00 1.014631E+00 9.919279E-01 9.696349E-01 9.477459E-01 9.262549E-01 9.051560E-01 8.844433E-01 8.641110E-01 8.441535E-01 8.245652E-01 8.053406E-01 7.864743E-01 7.679610E-01 7.497954E-01 7.319726E-01 7.144873E-01 6.973347E-01 6.805099E-01 6.640081E-01 6.478248E-01 6.319552E-01 6.163949E-01 6.011397E-01 5.861852E-01 5.715272E-01 5.571618E-01 5.430850E-01 5.292930E-01 5.157822E-01 5.025489E-01 4.895899E-01 4.769018E-01 4.644815E-01 4.523260E-01 4.404325E-01 4.287985E-01 4.174213E-01 4.062989E-01 3.954292E-01 3.848102E-01 3.744404E-01 3.643184E-01 3.544432E-01 3.448138E-01 3.354297E-01 3.262907E-01 3.173968E-01 3.087482E-01 3.003459E-01 2.921908E-01 2.842844E-01 2.766285E-01 2.692252E-01 2.620770E-01 2.551869E-01 2.485583E-01 2.421946E-01 2.360998E-01 2.302781E-01 2.247340E-01 2.194719E-01 2.144964E-01 2.098120E-01 2.054229E-01 2.013327E-01 1.975447E-01 1.940607E-01 1.908815E-01 1.880059E-01 1.854305E-01 1.831487E-01 1.811503E-01 1.794204E-01 1.779385E-01 1.766768E-01 1.755993E-01 1.746594E-01 1.737984E-01 1.729425E-01 1.720005E-01 1.708602E-01 1.693844E-01 1.674073E-01 1.647287E-01 1.611092E-01 1.562640E-01 1.498573E-01 1.414968E-01 1.307312E-01 1.170536E-01 9.992231E-02 7.882832E-02 5.353126E-02 2.504557E-02 0.000000E+00 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/MRST.cc���������������������������������������������������������������������0000644�0001750�0001750�00000057336�11754474775�016523� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MRST.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #include "MRST.h" #include <ThePEG/PDT/ParticleData.h> #include <ThePEG/PDT/EnumParticles.h> #include <ThePEG/Persistency/PersistentOStream.h> #include <ThePEG/Persistency/PersistentIStream.h> #include <ThePEG/Repository/EventGenerator.h> #include <ThePEG/Interface/ClassDocumentation.h> #include <ThePEG/Interface/Parameter.h> #include <ThePEG/Interface/Switch.h> #include <istream> #include <iostream> #include <sstream> #include <string> using namespace std; using namespace ThePEG; using namespace Herwig; /** * Minimum value of \f$x\f$ */ const double MRST::xmin=1E-5; /** * Maximum value of \f$x\f$ */ const double MRST::xmax=1.0; /** * Minimum value of \f$q^2\f$. */ const Energy2 MRST::qsqmin = 1.25 * GeV2; /** * Maximum value of \f$q^2\f$. */ const Energy2 MRST::qsqmax = 1E7 * GeV2; /** * Mass squared of the charm quark */ const Energy2 MRST::mc2 = 2.045 * GeV2; /** * Mass squared of the bottom quark */ const Energy2 MRST::mb2 = 18.5 * GeV2; ClassDescription<MRST> MRST::initMRST; MRST::MRST() : _inter(2), _xswitch(0.9), data(np+1,vector<vector<double> > (nx+1,vector<double> (nq+1,0.0))), fdata(np+1,vector<vector<double> > (nx+1,vector<double> (nq+1,0.0))) { if ( ! initialized ) { for ( int jj=1; jj < ntenth; ++jj ) { lxxb[jj] = log10(xx[jj]/xx[ntenth]) + xx[ntenth]; } lxxb[ntenth] = xx[ntenth]; for ( int n=1; n<=nx; n++ ) lxx[n] = log10(xx[n]); for ( int n=1; n<=nq; n++ ) lqq[n] = log10(qq[n]); initialized = true; } } bool MRST::canHandleParticle(tcPDPtr particle) const { // Return true if this PDF can handle the extraction of parton from the // given particle ie. if the particle is a proton or neutron. return ( abs(particle->id()) == ParticleID::pplus || abs(particle->id()) == ParticleID::n0 ); } cPDVector MRST::partons(tcPDPtr p) const { // Return the parton types which are described by these parton // densities. cPDVector ret; if ( canHandleParticle(p) ) { ret.push_back(getParticleData(ParticleID::g)); for ( int i = 1; i <= 5; ++i ) { ret.push_back(getParticleData(i)); ret.push_back(getParticleData(-i)); } } return ret; } double MRST::xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double, Energy2) const { return pdfValue(x, partonScale, particle, parton,Total); } double MRST::xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double, Energy2) const { return pdfValue(x, partonScale, particle, parton,Valence); } double MRST::xfsx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double, Energy2) const { return pdfValue(x, partonScale, particle, parton,Sea); } double MRST::pdfValue(double x, Energy2 q2, tcPDPtr particle, tcPDPtr parton, PDFType type) const { assert(!isnan(x) && !isinf(x)); // reset x to min or max if outside range if(x<xmin) x=xmin; else if(x>xmax) x=xmax; // reset q2 to min or max if outside range if(q2<qsqmin) q2=qsqmin; else if(q2>qsqmax) q2=qsqmax; // c++ interpolation double output(0.); if(_inter==0||(_inter==2&&x<_xswitch)) { // interpolation is in logx, log qsq: double xxx=log10(x); double qsq=log10(q2/GeV2); // bin position int n=locate(lxx,nx,xxx); int m=locate(lqq,nq,qsq); // fraction along the bin double t=(xxx-lxx[n])/(lxx[n+1]-lxx[n]); double u=(qsq-lqq[m])/(lqq[m+1]-lqq[m]); bool anti = particle->id() < 0; bool neutron = abs(particle->id()) == ParticleID::n0; if (type==Valence) { switch(parton->id()) { case ParticleID::u: output= (neutron? (anti? 0.0: lookup(dnValence,n,m,u,t)): (anti? 0.0: lookup(upValence,n,m,u,t))); break; case ParticleID::ubar: output= (neutron? (anti? lookup(dnValence,n,m,u,t): 0.0): (anti? lookup(upValence,n,m,u,t): 0.0)); break; case ParticleID::d: output= (neutron? (anti? 0.0: lookup(upValence,n,m,u,t)): (anti? 0.0: lookup(dnValence,n,m,u,t))); break; case ParticleID::dbar: output= (neutron? (anti? lookup(upValence,n,m,u,t): 0.0): (anti? lookup(dnValence,n,m,u,t): 0.0)); break; } } else if(type==Sea) { switch(parton->id()) { case ParticleID::b: case ParticleID::bbar: output= lookup(bot,n,m,u,t); break; case ParticleID::c: case ParticleID::cbar: output= lookup(chm,n,m,u,t); break; case ParticleID::s: case ParticleID::sbar: output= lookup(str,n,m,u,t); break; case ParticleID::u: case ParticleID::ubar: output= (neutron? lookup(dnSea,n,m,u,t) : lookup(upSea,n,m,u,t)); break; case ParticleID::d: case ParticleID::dbar: output= (neutron? lookup(upSea,n,m,u,t) : lookup(dnSea,n,m,u,t)); break; case ParticleID::g: output= lookup(glu,n,m,u,t); break; } } else if(type==Total) { switch(parton->id()) { case ParticleID::b: case ParticleID::bbar: output= lookup(bot,n,m,u,t); break; case ParticleID::c: case ParticleID::cbar: output= lookup(chm,n,m,u,t); break; case ParticleID::s: case ParticleID::sbar: output= lookup(str,n,m,u,t); break; case ParticleID::u: output= (neutron? (lookup(dnSea,n,m,u,t) + (anti? 0.0: lookup(dnValence,n,m,u,t))) : (lookup(upSea,n,m,u,t) + (anti? 0.0: lookup(upValence,n,m,u,t)))); break; case ParticleID::ubar: output= (neutron? (lookup(dnSea,n,m,u,t) + (anti? lookup(dnValence,n,m,u,t): 0.0)) : (lookup(upSea,n,m,u,t) + (anti? lookup(upValence,n,m,u,t): 0.0))); break; case ParticleID::d: output= (neutron? (lookup(upSea,n,m,u,t) + (anti? 0.0: lookup(upValence,n,m,u,t))) : (lookup(dnSea,n,m,u,t) + (anti? 0.0: lookup(dnValence,n,m,u,t)))); break; case ParticleID::dbar: output= (neutron? (lookup(upSea,n,m,u,t) + (anti? lookup(upValence,n,m,u,t): 0.0)) : (lookup(dnSea,n,m,u,t) + (anti? lookup(dnValence,n,m,u,t): 0.0))); break; case ParticleID::g: output= lookup(glu,n,m,u,t); break; } } } else { double xxx=x; if(x<lxxb[ntenth]) xxx = log10(x/lxxb[ntenth])+lxxb[ntenth]; int nn=0; do ++nn; while(xxx>lxxb[nn+1]); double a=(xxx-lxxb[nn])/(lxxb[nn+1]-lxxb[nn]); double qsq=q2/GeV2; int mm=0; do ++mm; while(qsq>qq[mm+1]); double b=(qsq-qq[mm])/(qq[mm+1]-qq[mm]); double g[np+1]; for(int ii=1;ii<=np;++ii) { g[ii]= (1.-a)*(1.-b)*fdata[ii][nn ][mm] + (1.-a)*b*fdata[ii][nn ][mm+1] + a*(1.-b)*fdata[ii][nn+1][mm] + a*b*fdata[ii][nn+1][mm+1]; if(nn<ntenth&&!(ii==5||ii==7)) { double fac=(1.-b)*fdata[ii][ntenth][mm]+b*fdata[ii][ntenth][mm+1]; g[ii] = fac*pow(10.,g[ii]-fac); } g[ii] *= pow(1.-x,n0[ii]); } bool anti = particle->id() < 0; bool neutron = abs(particle->id()) == ParticleID::n0; if (type==Valence) { switch(parton->id()) { case ParticleID::u: output= (neutron? (anti? 0.0: g[2]): (anti? 0.0: g[1])); break; case ParticleID::ubar: output= (neutron? (anti? g[2]: 0.0): (anti? g[1]: 0.0)); break; case ParticleID::d: output= (neutron? (anti? 0.0: g[1]): (anti? 0.0: g[2])); break; case ParticleID::dbar: output= (neutron? (anti? g[1]: 0.0): (anti? g[2]: 0.0)); break; } } else if(type==Sea) { switch(parton->id()) { case ParticleID::b: case ParticleID::bbar: output= g[7]; break; case ParticleID::c: case ParticleID::cbar: output= g[5]; break; case ParticleID::s: case ParticleID::sbar: output= g[6]; break; case ParticleID::u: case ParticleID::ubar: output= (neutron ? g[8] : g[4] ); break; case ParticleID::d: case ParticleID::dbar: output= (neutron? g[4] : g[8] ); break; case ParticleID::g: output= g[3]; break; } } else if(type==Total) { switch(parton->id()) { case ParticleID::b: case ParticleID::bbar: output= g[7]; break; case ParticleID::c: case ParticleID::cbar: output= g[5]; break; case ParticleID::s: case ParticleID::sbar: output= g[6]; break; case ParticleID::u: output= (neutron? (g[8] + (anti? 0.0: g[2])) : (g[4] + (anti? 0.0: g[1]))); break; case ParticleID::ubar: output= (neutron? (g[8] + (anti? g[2]: 0.0)) : (g[4] + (anti? g[1]: 0.0))); break; case ParticleID::d: output= (neutron? (g[4] + (anti? 0.0: g[1])) : (g[8] + (anti? 0.0: g[2]))); break; case ParticleID::dbar: output= (neutron? (g[4] + (anti? g[1]: 0.0)) : (g[8] + (anti? g[2]: 0.0))); break; case ParticleID::g: output= g[3]; break; } } } output = max(output,0.); assert(!isnan(output)); return output; } void MRST::persistentOutput(PersistentOStream &out) const { out << _file << data << fdata << _inter << _xswitch; } void MRST::persistentInput(PersistentIStream & in, int) { in >> _file >> data >> fdata >> _inter >> _xswitch; initialize(false); } void MRST::Init() { static ClassDocumentation<MRST> documentation ("Implementation of the MRST PDFs", "Implementation of the MRST LO* / LO** PDFs \\cite{Sherstnev:2007nd}.", " %\\cite{Sherstnev:2007nd}\n" "\\bibitem{Sherstnev:2007nd}\n" " A.~Sherstnev and R.~S.~Thorne,\n" " ``Parton Distributions for LO Generators,''\n" " Eur.\\ Phys.\\ J.\\ C {\\bf 55} (2008) 553\n" " [arXiv:0711.2473 [hep-ph]].\n" " %%CITATION = EPHJA,C55,553;%%\n" ); static Switch<MRST,unsigned int> interfaceInterpolation ("Interpolation", "Whether to use cubic or linear (C++ or FORTRAN) interpolation", &MRST::_inter, 2, false, false); static SwitchOption interfaceInterpolationCubic (interfaceInterpolation, "Cubic", "Use cubic interpolation", 0); static SwitchOption interfaceInterpolationLinear (interfaceInterpolation, "Linear", "Use Linear Interpolation", 1);; static SwitchOption interfaceInterpolationMixed (interfaceInterpolation, "Mixed", "Use cubic below xswitch and linear interpolation above", 2); static Parameter<MRST,double> interfaceXSwitch ("XSwitch", "Value of x to switch from cubic to linear interpolation", &MRST::_xswitch, 0.9, 0.0, 1.0, false, false, Interface::limited); } void MRST::doinitrun() { PDFBase::doinitrun(); #ifdef MRST_TESTING unsigned int intersave=_inter; tPDPtr proton=getParticleData(ParticleID::pplus); for(unsigned int itype=0;itype<8;++itype) { tPDPtr parton; string name; if(itype==0) { name="u.top"; parton=getParticleData(ParticleID::u); } else if(itype==1) { name="d.top"; parton=getParticleData(ParticleID::d); } else if(itype==2) { name="ubar.top"; parton=getParticleData(ParticleID::ubar); } else if(itype==3) { name="dbar.top"; parton=getParticleData(ParticleID::dbar); } else if(itype==4) { name="s.top"; parton=getParticleData(ParticleID::s); } else if(itype==5) { name="c.top"; parton=getParticleData(ParticleID::c); } else if(itype==6) { name="b.top"; parton=getParticleData(ParticleID::b); } else if(itype==7) { name="g.top"; parton=getParticleData(ParticleID::g); } ofstream output(name.c_str()); Energy qmin=2.0*GeV,qmax=3000.0*GeV; int nq=10; Energy qstep=(qmax-qmin)/nq; for(Energy q=qmin+qstep;q<=qmax;q+=qstep) { double nx=500; double xmin=1e-5,xmax=1.; double xstep=(log(xmax)-log(xmin))/nx; output << "NEW FRAME" << endl; output << "SET FONT DUPLEX\n"; output << "SET SCALE Y LOG\n"; output << "SET LIMITS X " << xmin << " " << xmax << endl; if(itype==0) output << "TITLE TOP \" up distribution for q=" << q/GeV << "\"\n"; else if(itype==1) output << "TITLE TOP \" down distribution for q=" << q/GeV << "\"\n"; else if(itype==2) output << "TITLE TOP \" ubar distribution for q=" << q/GeV << "\"\n"; else if(itype==3) output << "TITLE TOP \" dbar distribution for q=" << q/GeV << "\"\n"; else if(itype==4) output << "TITLE TOP \" strange distribution for q=" << q/GeV << "\"\n"; else if(itype==5) output << "TITLE TOP \" charm distribution for q=" << q/GeV << "\"\n"; else if(itype==6) output << "TITLE TOP \" bottom distribution for q=" << q/GeV << "\"\n"; else if(itype==7) output << "TITLE TOP \" gluon distribution for q=" << q/GeV << "\"\n"; _inter=0; for(double xl=log(xmin)+xstep;xl<=log(xmax);xl+=xstep) { double x=exp(xl); double val=xfl(proton,parton,q*q,-xl); if(val>1e5) val=1e5; output << x << '\t' << val << '\n'; } output << "JOIN RED" << endl; _inter=1; for(double xl=log(xmin)+xstep;xl<=log(xmax);xl+=xstep) { double x=exp(xl); double val=xfl(proton,parton,q*q,-xl); if(val>1e5) val=1e5; output << x << '\t' << val << '\n'; } output << "JOIN BLUE" << endl; _inter=2; for(double xl=log(xmin)+xstep;xl<=log(xmax);xl+=xstep) { double x=exp(xl); double val=xfl(proton,parton,q*q,-xl); if(val>1e5) val=1e5; output << x << '\t' << val << '\n'; } output << "JOIN GREEN" << endl; } } _inter=intersave; #endif } void MRST::readSetup(istream &is) { _file = dynamic_cast<istringstream*>(&is)->str(); initialize(); } void MRST::initialize(bool reread) { useMe(); // int i,n,m,k,l,j; // counters double dx,dq; int wt[][16] = {{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, {-3, 0, 0, 3, 0, 0, 0, 0,-2, 0, 0,-1, 0, 0, 0, 0}, { 2, 0, 0,-2, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0}, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, { 0, 0, 0, 0,-3, 0, 0, 3, 0, 0, 0, 0,-2, 0, 0,-1}, { 0, 0, 0, 0, 2, 0, 0,-2, 0, 0, 0, 0, 1, 0, 0, 1}, {-3, 3, 0, 0,-2,-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0,-3, 3, 0, 0,-2,-1, 0, 0}, { 9,-9, 9,-9, 6, 3,-3,-6, 6,-6,-3, 3, 4, 2, 1, 2}, {-6, 6,-6, 6,-4,-2, 2, 4,-3, 3, 3,-3,-2,-1,-1,-2}, { 2,-2, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 2,-2, 0, 0, 1, 1, 0, 0}, {-6, 6,-6, 6,-3,-3, 3, 3,-4, 4, 2,-2,-2,-2,-1,-1}, { 4,-4, 4,-4, 2, 2,-2,-2, 2,-2,-2, 2, 1, 1, 1, 1}}; // Variables used for initialising c_ij array: double f1[np+1][nx+1][nq+1];//derivative wrt.x double f2[np+1][nx+1][nq+1];//derivative wrt.qq double f12[np+1][nx+1][nq+1];//cross derivative double xxd,d1d2,cl[16],x[16],d1,d2,y[5],y1[5],y2[5],y12[5]; if(reread) { ifstream datafile(_file.c_str()); if(!datafile) throw Exception() << "Could not open file '" << _file << "' in MRST::initialize()" << Exception::runerror; for(int nn=1; nn<nx; nn++) { for(int mm=1; mm<=nq; mm++) { datafile >> data[1][nn][mm]; datafile >> data[2][nn][mm]; datafile >> data[3][nn][mm]; datafile >> data[4][nn][mm]; datafile >> data[5][nn][mm]; datafile >> data[7][nn][mm]; datafile >> data[6][nn][mm]; datafile >> data[8][nn][mm]; if(datafile.eof()) throw Exception() << "Error while reading " << _file << " too few data points in file" << "in MRST::initialize()" << Exception::runerror; for(int ii=1;ii<=np;++ii) { fdata[ii][nn][mm] = _inter==0 ? 0. : data[ii][nn][mm]/pow(1.-xx[nn],n0[ii]); } } } for (int n=1; n<=8; ++n) { for(int mm=1; mm<=nq; ++mm) { data[n][nx][mm]=0.0; } } double dtemp; datafile >> dtemp; if(!datafile.eof()) throw Exception() << "Error reading end of " << _file << " too many data points in file" << "in MRST::initialize()" << Exception::runerror; datafile.close(); // calculate the FORTRAN interpolation for(int jj=1;jj<=ntenth-1;++jj) { for(int ii=1;ii<=np;++ii) { if(ii==5||ii==7) continue; for(int kk=1;kk<=nq;++kk) { fdata[ii][jj][kk] = _inter==0 ? 0. : log10( fdata[ii][jj][kk] / fdata[ii][ntenth][kk] ) + fdata[ii][ntenth][kk]; } } } for (int n=1; n<=np; ++n) { for(int mm=1; mm<=nq; ++mm) { fdata[n][nx][mm]=0.0; } } } // Now calculate the derivatives used for bicubic interpolation for (int i=1;i<=np;i++) { // Start by calculating the first x derivatives // along the first x value dx=lxx[2]-lxx[1]; for (int m=1;m<=nq;m++) f1[i][1][m]=(data[i][2][m]-data[i][1][m])/dx; // The along the rest (up to the last) for (int k=2;k<nx;k++) { for (int m=1;m<=nq;m++) { f1[i][k][m]=polderivative(lxx[k-1],lxx[k],lxx[k+1], data[i][k-1][m], data[i][k][m], data[i][k+1][m]); } } // Then for the last column dx=lxx[nx]-lxx[nx-1]; for (int m=1;m<=nq;m++) f1[i][nx][m]=(data[i][nx][m]-data[i][nx-1][m])/dx; if ((i!=5)&&(i!=7)) { // then calculate the qq derivatives // Along the first qq value dq=lqq[2]-lqq[1]; for (int k=1;k<=nx;k++) f2[i][k][1]=(data[i][k][2]-data[i][k][1])/dq; // The rest up to the last qq value for (int m=2;m<nq;m++) { for (int k=1;k<=nx;k++) f2[i][k][m]=polderivative(lqq[m-1],lqq[m],lqq[m+1], data[i][k][m-1], data[i][k][m], data[i][k][m+1]); } // then for the last row dq=lqq[nq]-lqq[nq-1]; for (int k=1;k<=nx;k++) f2[i][k][nq]=(data[i][k][nq]-data[i][k][nq-1])/dq; // Now, calculate the cross derivatives. // Calculate these as x-derivatives of the y-derivatives // ?? Could be improved by taking the average between dxdy and dydx ?? // Start by calculating the first x derivatives // along the first x value dx=lxx[2]-lxx[1]; for (int m=1;m<=nq;m++) f12[i][1][m]=(f2[i][2][m]-f2[i][1][m])/dx; // The along the rest (up to the last) for (int k=2;k<nx;k++) { for (int m=1;m<=nq;m++) f12[i][k][m]=polderivative(lxx[k-1],lxx[k],lxx[k+1], f2[i][k-1][m],f2[i][k][m],f2[i][k+1][m]); } // Then for the last column dx=lxx[nx]-lxx[nx-1]; for (int m=1;m<=nq;m++) f12[i][nx][m]=(f2[i][nx][m]-f2[i][nx-1][m])/dx; } if (i==5) { // zero all elements below the charm threshold for (int m=1;m<nqc0;m++) for (int k=1;k<=nx;k++) f2[i][k][m]=0.0; // then calculate the qq derivatives // Along the first qq value above the threshold (m=ncq0) dq=lqq[nqc0+1]-lqq[nqc0]; for (int k=1;k<=nx;k++) f2[i][k][nqc0]=(data[i][k][nqc0+1]-data[i][k][nqc0])/dq; // The rest up to the last qq value for (int m=nqc0+1;m<nq;m++) { for (int k=1;k<=nx;k++) f2[i][k][m]=polderivative(lqq[m-1],lqq[m],lqq[m+1], data[i][k][m-1], data[i][k][m], data[i][k][m+1]); } // then for the last row dq=lqq[nq]-lqq[nq-1]; for (int k=1;k<=nx;k++) f2[i][k][nq]=(data[i][k][nq]-data[i][k][nq-1])/dq; // Now, calculate the cross derivatives. // Calculate these as x-derivatives of the y-derivatives // ?? Could be improved by taking the average between dxdy and dydx ?? dx=lxx[2]-lxx[1]; for (int m=1;m<=nq;m++) f12[i][1][m]=(f2[i][2][m]-f2[i][1][m])/dx; // The along the rest (up to the last) for (int k=2;k<nx;k++) { for (int m=1;m<=nq;m++) f12[i][k][m]=polderivative(lxx[k-1],lxx[k],lxx[k+1], f2[i][k-1][m],f2[i][k][m],f2[i][k+1][m]); } // Then for the last column dx=lxx[nx]-lxx[nx-1]; for (int m=1;m<=nq;m++) f12[i][nx][m]=(f2[i][nx][m]-f2[i][nx-1][m])/dx; } if (i==7) { // zero all elements below the bottom threshold for (int m=1;m<nqb0;m++) for (int k=1;k<=nx;k++) f2[i][k][m]=0.0; // then calculate the qq derivatives // Along the first qq value above the threshold (m=nqb0) dq=lqq[nqb0+1]-lqq[nqb0]; for (int k=1;k<=nx;k++) f2[i][k][nqb0]=(data[i][k][nqb0+1]-data[i][k][nqb0])/dq; // The rest up to the last qq value for (int m=nqb0+1;m<nq;m++) { for (int k=1;k<=nx;k++) f2[i][k][m]=polderivative(lqq[m-1],lqq[m],lqq[m+1], data[i][k][m-1], data[i][k][m], data[i][k][m+1]); } // then for the last row dq=lqq[nq]-lqq[nq-1]; for (int k=1;k<=nx;k++) f2[i][k][nq]=(data[i][k][nq]-data[i][k][nq-1])/dq; // Now, calculate the cross derivatives. // Calculate these as x-derivatives of the y-derivatives // ?? Could be improved by taking the average between dxdy and dydx ?? dx=lxx[2]-lxx[1]; for (int m=1;m<=nq;m++) f12[i][1][m]=(f2[i][2][m]-f2[i][1][m])/dx; // The along the rest (up to the last) for (int k=2;k<nx;k++) { for (int m=1;m<=nq;m++) f12[i][k][m]=polderivative(lxx[k-1],lxx[k],lxx[k+1], f2[i][k-1][m],f2[i][k][m],f2[i][k+1][m]); } // Then for the last column dx=lxx[nx]-lxx[nx-1]; for (int m=1;m<=nq;m++) f12[i][nx][m]=(f2[i][nx][m]-f2[i][nx-1][m])/dx; } // Now calculate the coefficients c_ij for(int n=1;n<=nx-1;n++) { for(int m=1;m<=nq-1;m++) { d1=lxx[n+1]-lxx[n]; d2=lqq[m+1]-lqq[m]; d1d2=d1*d2; // Iterate around the grid and store the values of f, f_x, f_y and f_xy y[1]=data[i][n][m]; y[2]=data[i][n+1][m]; y[3]=data[i][n+1][m+1]; y[4]=data[i][n][m+1]; y1[1]=f1[i][n][m]; y1[2]=f1[i][n+1][m]; y1[3]=f1[i][n+1][m+1]; y1[4]=f1[i][n][m+1]; y2[1]=f2[i][n][m]; y2[2]=f2[i][n+1][m]; y2[3]=f2[i][n+1][m+1]; y2[4]=f2[i][n][m+1]; y12[1]=f12[i][n][m]; y12[2]=f12[i][n+1][m]; y12[3]=f12[i][n+1][m+1]; y12[4]=f12[i][n][m+1]; for (int k=1;k<=4;k++) { x[k-1]=y[k]; x[k+3]=y1[k]*d1; x[k+7]=y2[k]*d2; x[k+11]=y12[k]*d1d2; } for (int l=0;l<=15;l++) { xxd=0.0; for (int k=0;k<=15;k++) xxd+= wt[l][k]*x[k]; cl[l]=xxd; } int l=0; for (int k=1;k<=4;k++) for (int j=1;j<=4;j++) c[i][n][m][k][j]=cl[l++]; } //m } //n } // i } double MRST::xx[] = { 0.0, 1E-5, 2E-5, 4E-5, 6E-5, 8E-5, 1E-4, 2E-4, 4E-4, 6E-4, 8E-4, 1E-3, 2E-3, 4E-3, 6E-3, 8E-3, 1E-2, 1.4E-2, 2E-2, 3E-2, 4E-2, 6E-2, 8E-2, .1, .125, 0.15, .175, .2, .225, 0.25, .275, .3, .325, 0.35, .375, .4, .425, 0.45, .475, .5, .525, 0.55, .575, .6, .65, .7, .75, .8, .9, 1. }; double MRST::lxx[] = { 0.0, 1E-5, 2E-5, 4E-5, 6E-5, 8E-5, 1E-4, 2E-4, 4E-4, 6E-4, 8E-4, 1E-3, 2E-3, 4E-3, 6E-3, 8E-3, 1E-2, 1.4E-2, 2E-2, 3E-2, 4E-2, 6E-2, 8E-2, .1, .125, 0.15, .175, .2, .225, 0.25, .275, .3, .325, 0.35, .375, .4, .425, 0.45, .475, .5, .525, 0.55, .575, .6, .65, .7, .75, .8, .9, 1. }; double MRST::lxxb[] = { 0.0, 1E-5, 2E-5, 4E-5, 6E-5, 8E-5, 1E-4, 2E-4, 4E-4, 6E-4, 8E-4, 1E-3, 2E-3, 4E-3, 6E-3, 8E-3, 1E-2, 1.4E-2, 2E-2, 3E-2, 4E-2, 6E-2, 8E-2, .1, .125, 0.15, .175, .2, .225, 0.25, .275, .3, .325, 0.35, .375, .4, .425, 0.45, .475, .5, .525, 0.55, .575, .6, .65, .7, .75, .8, .9, 1. }; double MRST::qq[] = { 0.0, 1.25, 1.5, 2., 2.5, 3.2, 4., 5., 6.4, 8., 10., 12., 18., 26., 40., 64., 1E2, 1.6E2, 2.4E2, 4E2, 6.4E2, 1E3, 1.8E3, 3.2E3, 5.6E3, 1E4, 1.8E4, 3.2E4, 5.6E4, 1E5, 1.8E5, 3.2E5, 5.6E5, 1E6, 1.8E6, 3.2E6, 5.6E6, 1E7 }; double MRST::lqq[] = { 0.0, 1.25, 1.5, 2., 2.5, 3.2, 4., 5., 6.4, 8., 10., 12., 18., 26., 40., 64., 1E2, 1.6E2, 2.4E2, 4E2, 6.4E2, 1E3, 1.8E3, 3.2E3, 5.6E3, 1E4, 1.8E4, 3.2E4, 5.6E4, 1E5, 1.8E5, 3.2E5, 5.6E5, 1E6, 1.8E6, 3.2E6, 5.6E6, 1E7 }; double MRST::n0[] = {0,3,4,5,9,9,9,9,9}; bool MRST::initialized = false; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/MinBiasPDF.h����������������������������������������������������������������0000644�0001750�0001750�00000013103�11754474775�017434� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // MinBiasPDF.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_MinBiasPDF_H #define HERWIG_MinBiasPDF_H // // This is the declaration of the MinBiasPDF class. // #include "ThePEG/PDF/PDFBase.h" #include "MinBiasPDF.fh" namespace Herwig { using namespace ThePEG; /** * The MinBiasPDF class defines * a modified pdf which uses an existing pdf object to add * modifications like removing the valence part of it, which * is needed in the backward evolution of secondary scatters. * * \author Manuel B\"ahr * * @see \ref MinBiasPDFInterfaces "The interfaces" * defined for MinBiasPDF. */ class MinBiasPDF: public PDFBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ MinBiasPDF() : thePDF(PDFPtr()) {} /** * The copy constructor. */ MinBiasPDF(const MinBiasPDF & x) : PDFBase(x), thePDF(x.thePDF) {} /** * The destructor. */ virtual ~MinBiasPDF() {} //@} public: /** @name Virtual functions to be overridden by sub-classes. */ //@{ /** * Return true if this PDF can handle the extraction of partons from * the given \a particle. */ virtual bool canHandleParticle(tcPDPtr particle) const; /** * Return the partons which this PDF may extract from the given * \a particle. */ virtual cPDVector partons(tcPDPtr particle) const; /** * The density. Return the pdf for the given \a parton inside the * given \a particle for the virtuality \a partonScale and momentum * fraction \a x. The \a particle is assumed to have a virtuality \a * particleScale. */ virtual double xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps=0.0, Energy2 particleScale = ZERO) const; /** * The valence density. Return the pdf for the given cvalence \a * parton inside the given \a particle for the virtuality \a * partonScale and momentum fraction \a x. The \a particle is * assumed to have a virtuality \a particleScale. If not overidden * by a sub class this implementation will assume that the * difference between a quark and anti-quark distribution is due do * valense quarks, but return zero for anything else. */ virtual double xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps=0.0, Energy2 particleScale = ZERO) const; //@} /** return the underlying PDFBase pointer*/ tcPDFPtr originalPDF() const {return thePDF;} 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 { return new_ptr(*this); } /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const { return new_ptr(*this); } //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<MinBiasPDF> initMinBiasPDF; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ MinBiasPDF & operator=(const MinBiasPDF &); /** * pointer to the underlying ThePEG::PDFBase object, we are modifying. */ PDFPtr thePDF; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of MinBiasPDF. */ template <> struct BaseClassTrait<Herwig::MinBiasPDF,1> { /** Typedef of the first base class of MinBiasPDF. */ typedef PDFBase NthBase; }; /** This template specialization informs ThePEG about the name of * the MinBiasPDF class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::MinBiasPDF> : public ClassTraitsBase<Herwig::MinBiasPDF> { /** Return a platform-independent class name */ static string className() { return "Herwig::MinBiasPDF"; } /** * The name of a file containing the dynamic library where the class * MinBiasPDF is implemented. It may also include several, space-separated, * libraries if the class MinBiasPDF depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwShower.so"; } }; /** @endcond */ } #endif /* HERWIG_MinBiasPDF_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/SatPDF.cc�������������������������������������������������������������������0000644�0001750�0001750�00000006004�11754474775�017001� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // SatPDF.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the SatPDF class. // #include "SatPDF.h" #include "ThePEG/Interface/ClassDocumentation.h" #ifdef ThePEG_TEMPLATES_IN_CC_FILE // #include "SatPDF.tcc" #endif #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/PDT/EnumParticles.h" #include <cassert> using namespace Herwig; using namespace ThePEG; SatPDF::~SatPDF() {} bool SatPDF::canHandleParticle(tcPDPtr particle) const { assert(thePDF); return thePDF->canHandleParticle(particle); } cPDVector SatPDF::partons(tcPDPtr particle) const { assert(thePDF); return thePDF->partons(particle); } double SatPDF::xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps, Energy2 particleScale) const { assert(thePDF); double xUsed(x); if( x < theX0 ) xUsed = theX0; double pdf(thePDF->xfx(particle, parton, partonScale, xUsed, eps, particleScale)); if( x < theX0 ) pdf *= pow(x/theX0, theExp); return pdf; } double SatPDF::xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps, Energy2 particleScale) const { // Here we should return the actual valence density. assert(thePDF); double xUsed(x); if( x < theX0 ) xUsed = theX0; double pdf(thePDF->xfvx(particle, parton, partonScale, xUsed, eps, particleScale)); if( x < theX0 ) pdf *= pow(x/theX0, theExp); return pdf; } void SatPDF::persistentOutput(PersistentOStream & os) const { os << thePDF << theX0 << theExp; } void SatPDF::persistentInput(PersistentIStream & is, int) { is >> thePDF >> theX0 >> theExp; } ClassDescription<SatPDF> SatPDF::initSatPDF; // Definition of the static class description member. void SatPDF::Init() { static ClassDocumentation<SatPDF> documentation ("SatPDF is used to modify any given parton density for small values of x. That can be used to mimic saturation effects."); static Reference<SatPDF,PDFBase> interfacePDF ("PDF", "pointer to the pdf, which will be modified", &SatPDF::thePDF, false, false, true, false); static Parameter<SatPDF,double> interfaceX0 ("X0", "For x values below this one the parametrisation: f(x) = f(x0) * (x/x0)**exp is used", &SatPDF::theX0, 1.E-4, 0.0, 1.0, true, false, Interface::limited); static Parameter<SatPDF,double> interfaceExp ("Exp", "For x values below X0 the parametrisation: f(x) = f(x0) * (x/x0)**exp is used", &SatPDF::theExp, 0.0, -10.0, 10.0, true, false, Interface::limited); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/PDF/ReggeonPDF.cc���������������������������������������������������������������0000644�0001750�0001750�00000006314�11754474775�017644� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DifractivePDF.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #include "ReggeonPDF.h" #include <ThePEG/PDT/ParticleData.h> #include <ThePEG/PDT/EnumParticles.h> #include <ThePEG/Persistency/PersistentOStream.h> #include <ThePEG/Persistency/PersistentIStream.h> #include <ThePEG/Repository/EventGenerator.h> #include <ThePEG/Interface/ClassDocumentation.h> #include <ThePEG/Interface/Parameter.h> #include <ThePEG/Interface/Switch.h> #include <ThePEG/Interface/Reference.h> #include <istream> #include <iostream> #include <string> using namespace std; using namespace ThePEG; using namespace Herwig; bool ReggeonPDF::canHandleParticle(tcPDPtr particle) const { // Return true if this PDF can handle the extraction of parton from the // given particle if( particle->id() != ParticleID::reggeon ) return false; if( !particle_ ) return true; else return ptrPDF_->canHandle(particle_); } cPDVector ReggeonPDF::partons(tcPDPtr p) const { // Return the parton types which are described by these parton // densities. cPDVector ret; if ( canHandleParticle(p) ) { p = particle_; if(!particle_) { p = getParticleData(particleID_); if(!p) throw SetupException() << "No ParticleData object for particle with PDG code " << particleID_ << " in ReggeonPDF::partons()" << Exception::runerror; } ret = ptrPDF_->partons(p); } return ret; } double ReggeonPDF::xfx(tcPDPtr , tcPDPtr parton, Energy2 qq, double x, double, Energy2) const { return ptrPDF_->xfx(particle_, parton, qq ,x); } double ReggeonPDF::xfvx(tcPDPtr , tcPDPtr parton, Energy2 qq, double x, double, Energy2) const { return ptrPDF_->xfvx(particle_, parton, qq ,x); } void ReggeonPDF::doinit() { PDFBase::doinit(); particle_ = getParticleData(particleID_); if(!particle_) throw SetupException() << "No ParticleData object for particle with PDG code " << particleID_ << " in ReggeonPDF::doinit()" << Exception::runerror; } ClassDescription<ReggeonPDF> ReggeonPDF::initReggeonPDF; // Definition of the static class description member. void ReggeonPDF::Init(){ static ClassDocumentation<ReggeonPDF> documentation ("Implementation of the Reggeon PDF"); static Reference<ReggeonPDF,PDFBase> interfacePDF ("PDF", "The PDf object to use for the underyling PDF", &ReggeonPDF::ptrPDF_, false, false, true, false, false); static Parameter<ReggeonPDF,long> interfaceParticleID ("ParticleID", "PDG code for the particle used to mimic the reggeon in the underlying PDF.", &ReggeonPDF::particleID_, 111, -1000000, 1000000, false, false, Interface::limited); } IBPtr ReggeonPDF::clone() const { return new_ptr(*this); } IBPtr ReggeonPDF::fullclone() const { return new_ptr(*this); } void ReggeonPDF::persistentOutput(PersistentOStream & os) const { os << ptrPDF_ << particle_ << particleID_; } void ReggeonPDF::persistentInput(PersistentIStream & is, int) { is >> ptrPDF_ >> particle_ >> particleID_; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/����������������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464211�015551� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LHC.in����������������������������������������������������������������������0000644�0001750�0001750�00000011142�11756407542�016512� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator based on LHC parameters # usage: Herwig++ read LHC.in ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 ################################################## # LHC physics parameters (override defaults here) ################################################## # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV ######################## ## sqrt(s) = 8000 GeV ## ######################## set LHCGenerator:EventHandler:LuminosityFunction:Energy 8000.0 ################################################## # Matrix Elements for hadron-hadron collisions # (by default only gamma/Z switched on) ################################################## cd /Herwig/MatrixElements/ # # Electroweak boson W/Z processes # # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEqq2gZ2ff # # Drell-Yan W # insert SimpleQCD:MatrixElements[0] MEqq2W2ff # # W+jet # insert SimpleQCD:MatrixElements[0] MEWJet # # Z+jet # insert SimpleQCD:MatrixElements[0] MEZJet # # WW/WZ/ZZ # insert SimpleQCD:MatrixElements[0] MEPP2VV # # Wgamma/Zgamma # insert SimpleQCD:MatrixElements[0] MEPP2VGamma # # QCD and gamma processes # # QCD 2-2 scattering # insert SimpleQCD:MatrixElements[0] MEQCD2to2 # # top-antitop production # insert SimpleQCD:MatrixElements[0] MEHeavyQuark # # gamma+jet # insert SimpleQCD:MatrixElements[0] MEGammaJet # # gamma-gamma # insert SimpleQCD:MatrixElements[0] MEGammaGamma # # Higgs Processes # # # gg/qqbar -> Higgs (recommend including q qbar->Hg as not in ME correction) # insert SimpleQCD:MatrixElements[0] MEHiggs # insert SimpleQCD:MatrixElements[0] MEHiggsJet # set MEHiggsJet:Process qqbar # set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV # # higgs+jet # insert SimpleQCD:MatrixElements[0] MEHiggsJet # # higgs + W (N.B. if considering all W decay modes useful to set ) # (jet pT cut to zero so no cut on W decay products ) # insert SimpleQCD:MatrixElements[0] MEPP2WH # set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV # # higgs + Z (N.B. if considering all Z decay modes useful to set ) # (jet pT cut to zero so no cut on Z decay products ) # insert SimpleQCD:MatrixElements[0] MEPP2ZH # set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV # # VBF Higgs # insert SimpleQCD:MatrixElements[0] MEPP2HiggsVBF # # t tbar Higgs # insert SimpleQCD:MatrixElements[0] MEPP2ttbarH # # b bbar Higgs # insert SimpleQCD:MatrixElements[0] MEPP2bbbarH cd /Herwig/Generators ################################################## # Useful analysis handlers for hadron-hadron physics ################################################## # analysis of W/Z events # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/DrellYan # analysis of top-antitop events # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/TTbar # analysis of gamma+jet events # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/GammaJet # analysis of gamma-gamma events # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/GammaGamma # analysis of higgs-jet events # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HiggsJet ################################################## # Useful analysis handlers for HepMC related output ################################################## # Schematic overview of an event (requires --with-hepmc to be set at configure time # and the graphviz program 'dot' to produce a plot) # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/Plot # A HepMC dump file (requires --with-hepmc to be set at configure time) # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile # set /Herwig/Analysis/HepMCFile:PrintEvent 100 # set /Herwig/Analysis/HepMCFile:Format GenEvent # set /Herwig/Analysis/HepMCFile:Units GeV_mm ################################################## # Save run for later usage with 'Herwig++ run' ################################################## saverun LHC LHCGenerator ################################################## # uncomment this section for an example batch run # of two repeats with different parameters # # Note that a separate call of 'Herwig run' # is not required in this case ################################################## # set LHCGenerator:NumberOfEvents 10 # run LHC-full LHCGenerator # # set LHCGenerator:EventHandler:LuminosityFunction:Energy 900.0 # run LHC-initial LHCGenerator ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/NMSSM.model�����������������������������������������������������������������0000644�0001750�0001750�00000012014�11754474774�017503� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Common setup for the NMSSM # # See LHC-NMSSM.in or ILC-NMSSM.in for example usage # # This file does not contain anything that # users need to touch. User settings are in # ???-NMSSM.in # ################################################### ################################################### # # Read the MSSM. # ################################################## read MSSM.model ################################################### # # Create the additional particle content in the # NMSSM # ################################################## cd /Herwig/Particles create ThePEG::ParticleData H30 setup H30 45 H30 500.0 0.0 0.0 0.0 0 0 1 0 create ThePEG::ParticleData A20 setup A20 46 A20 500.0 0.0 0.0 0.0 0 0 1 0 create ThePEG::ParticleData ~chi_50 setup ~chi_50 1000045 ~chi_50 500.0 0.0 0.0 0.0 0 0 2 0 ################################################### # # The main directory and model object # ################################################## mkdir /Herwig/NewPhysics/NMSSM cd /Herwig/NewPhysics/NMSSM create Herwig::NMSSM Model HwNMSSM.so # SM couplings set Model:QCD/RunningAlphaS /Herwig/AlphaS set Model:EW/RunningAlphaEM /Herwig/AlphaEM set Model:EW/CKM /Herwig/CKM set Model:RunningMass /Herwig/RunningMass ################################################### # # Vertices # ################################################## # Create additional NMSSM vertices mkdir /Herwig/Vertices/NMSSM cd /Herwig/Vertices/NMSSM create Herwig::NMSSMFFHVertex NMSSM_FFH create Herwig::NMSSMGOGOHVertex NMSSM_GOGOH create Herwig::NMSSMHSFSFVertex NMSSM_HSS create Herwig::NMSSMWHHVertex NMSSM_WHH create Herwig::NMSSMWWHVertex NMSSM_WWH create Herwig::NMSSMHHHVertex NMSSM_HHH create Herwig::NMSSMGGHVertex NMSSM_GGH create Herwig::NMSSMPPHVertex NMSSM_PPH create Herwig::NMSSMWWHHVertex NMSSM_WWHH cd /Herwig/NewPhysics/NMSSM # SM vertices set Model:Vertex/FFZ /Herwig/Vertices/FFZVertex set Model:Vertex/FFW /Herwig/Vertices/FFWVertex 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/WWW /Herwig/Vertices/WWWVertex set Model:Vertex/WWWW /Herwig/Vertices/WWWWVertex # MSSM feynman rules set Model:Vertex/WSFSF /Herwig/Vertices/MSSM/MSSM_WSS set Model:Vertex/NFSF /Herwig/Vertices/MSSM/MSSM_NFS set Model:Vertex/GFSF /Herwig/Vertices/MSSM/MSSM_GFS set Model:Vertex/CFSF /Herwig/Vertices/MSSM/MSSM_CFS set Model:Vertex/GSFSF /Herwig/Vertices/MSSM/MSSM_GSS set Model:Vertex/GGSQSQ /Herwig/Vertices/MSSM/MSSM_GGSS set Model:Vertex/GSGSG /Herwig/Vertices/MSSM/MSSM_GGOGO set Model:Vertex/GNG NULL set Model:Vertex/NNZ /Herwig/Vertices/MSSM/MSSM_NNZ set Model:Vertex/NNP NULL set Model:Vertex/CCZ /Herwig/Vertices/MSSM/MSSM_CCZ set Model:Vertex/CNW /Herwig/Vertices/MSSM/MSSM_CNW set Model:Vertex/SSWHH /Herwig/Vertices/MSSM/MSSM_WHH set Model:Vertex/NCT /Herwig/Vertices/MSSM/MSSM_NCT # NMSSM feynman rules set Model:Vertex/FFH /Herwig/Vertices/NMSSM/NMSSM_FFH set Model:Vertex/GOGOH /Herwig/Vertices/NMSSM/NMSSM_GOGOH set Model:Vertex/HSFSF /Herwig/Vertices/NMSSM/NMSSM_HSS set Model:Vertex/SSWHH /Herwig/Vertices/NMSSM/NMSSM_WHH set Model:Vertex/WWH /Herwig/Vertices/NMSSM/NMSSM_WWH set Model:Vertex/HHH /Herwig/Vertices/NMSSM/NMSSM_HHH set Model:Vertex/HGG /Herwig/Vertices/NMSSM/NMSSM_GGH set Model:Vertex/HPP /Herwig/Vertices/NMSSM/NMSSM_PPH set Model:Vertex/WWHH /Herwig/Vertices/NMSSM/NMSSM_WWHH ################################################### # # Set up spin correlation Decayers # ################################################### cd /Herwig/NewPhysics set TwoBodyDC:CreateDecayModes Yes set ThreeBodyDC:CreateDecayModes Yes # exclude higgs gg and gamma gamma effective vertices from three body decays insert ThreeBodyDC:ExcludedVertices 0 /Herwig/Vertices/NMSSM/NMSSM_GGH insert ThreeBodyDC:ExcludedVertices 0 /Herwig/Vertices/NMSSM/NMSSM_PPH # and hard processes insert HPConstructor:ExcludedVertices 0 /Herwig/Vertices/NMSSM/NMSSM_GGH insert HPConstructor:ExcludedVertices 0 /Herwig/Vertices/NMSSM/NMSSM_PPH insert NewModel:DecayParticles 32 /Herwig/Particles/~chi_50 insert NewModel:DecayParticles 33 /Herwig/Particles/H30 insert NewModel:DecayParticles 34 /Herwig/Particles/A20 insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000045 # SUSY_chi_50 insert /Herwig/Shower/ShowerHandler:DecayInShower 0 45 # h30 insert /Herwig/Shower/ShowerHandler:DecayInShower 0 46 # a20 ################################################### # # Generate processes and decays in the NMSSM # ################################################### cd /Herwig/NewPhysics set NMSSM/Model:ModelGenerator NewModel ################################################### # # Choose NMSSM over SM # ################################################### cd /Herwig/Generators set LEPGenerator:StandardModelParameters /Herwig/NewPhysics/NMSSM/Model set LHCGenerator:StandardModelParameters /Herwig/NewPhysics/NMSSM/Model ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/TVT-Matchbox.in�������������������������������������������������������������0000644�0001750�0001750�00000006642�11754474774�020346� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������read Matchbox.in ################################################################################ # setup the sampler ################################################################################ set /Herwig/EventHandlers/LHCHandler:Sampler /Herwig/MatrixElements/Matchbox/Samplers/Sampler ################################################################################ # setup the shower # # use -LO.in or -NLO.in for LO/NLO simulations, respectively. # ################################################################################ read DipoleShower.in # read DipoleShowerParameters-LO.in # read DipoleShowerParameters-NLO.in ################################################################################ # setup matrix element and matching # # uncomment the desired calculation # ################################################################################ cd /Herwig/EventHandlers set LHCHandler:LuminosityFunction:Energy 1800.0*GeV set LHCHandler:BeamB /Herwig/Particles/pbar- # the only infrared safe cut in this case is a cut on the lepton mass # leave all other cuts as set in here set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV cd /Herwig/MatrixElements/Matchbox/Builtin cp /Herwig/MatrixElements/Matchbox/Utility/MECorrectionHandler MECorrectionHandler ################################################################################ # leading order ################################################################################ # insert /Herwig/Generators/LHCGenerator:EventHandler:SubProcessHandlers[0] MEPP2llbarLO ################################################################################ # MC@NLO-type next-to-leading order ################################################################################ # set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO # set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO # insert /Herwig/Generators/LHCGenerator:EventHandler:SubProcessHandlers[0] MEPP2llbarNLO # uncomment to run plain NLO calculation (no consistent analysis yet) # set MElP2lJetNLO:SubProcessGroups On ################################################################################ # POWHEG-type next-to-leading order ################################################################################ # set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO # set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO # insert /Herwig/Generators/LHCGenerator:EventHandler:SubProcessHandlers[0] MEPP2llbarNLOInclusive # insert /Herwig/Generators/LHCGenerator:EventHandler:PostSubProcessHandlers[0] MECorrectionHandler ################################################################################ # setup generator and analysis ################################################################################ cd /Herwig/Generators set LHCGenerator:EventHandler:CascadeHandler /Herwig/DipoleShower/DipoleShowerHandler set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:NumberOfEvents 100000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:DebugLevel 1 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 4000000 cd /Herwig/Generators #insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile set /Herwig/Analysis/HepMCFile:PrintEvent 10000000 set /Herwig/Analysis/HepMCFile:Format GenEvent set /Herwig/Analysis/HepMCFile:Units GeV_mm set /Herwig/Analysis/HepMCFile:Filename events.fifo saverun TVT LHCGenerator ����������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/DIS.in����������������������������������������������������������������������0000644�0001750�0001750�00000007074�11754474774�016545� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator based on DIS parameters # usage: Herwig++ read DIS.in ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set DISGenerator:NumberOfEvents 10000000 set DISGenerator:RandomNumberGenerator:Seed 31122001 set DISGenerator:PrintEvent 10 set DISGenerator:MaxErrors 10000 set /Herwig/Shower/ShowerHandler:MPIHandler NULL ################################################## # DIS physics parameters (override defaults here) ################################################## ################################################## # Matrix Elements for lepton-hadron collisions # (by default only neutral-current switched on) ################################################## cd /Herwig/MatrixElements/ # Neutral current DIS insert SimpleDIS:MatrixElements[0] MEDISNC # Charged current matrix element insert SimpleDIS:MatrixElements[0] MEDISCC ################################################## # NLO IN POWHEG SCHEME ################################################## ################################################### ## Need to use an NLO PDF ################################################### #set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO #set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO # ################################################### ## Setup the POWHEG shower ################################################### #cd /Herwig/Shower #set Evolver:HardEmissionMode POWHEG # ################################################## # and strong coupling ################################################## #create Herwig::O2AlphaS O2AlphaS #set /Herwig/Model:QCD/RunningAlphaS O2AlphaS # ################################################### ## NLO Matrix Elements for lepton-hadron collisions ## in the POWHEG approach ################################################### # #cd /Herwig/MatrixElements/ # ## Neutral current DIS #insert SimpleDIS:MatrixElements[0] PowhegMEDISNC ## Charged current matrix element #insert SimpleDIS:MatrixElements[0] PowhegMEDISCC cd /Herwig/Generators ################################################## # Useful analysis handlers for lepton-hadron physics ################################################## ################################################## # Useful analysis handlers for HepMC related output ################################################## # Schematic overview of an event (requires --with-hepmc to be set at configure time # and the graphviz program 'dot' to produce a plot) # insert DISGenerator:AnalysisHandlers 0 /Herwig/Analysis/Plot # A HepMC dump file (requires --with-hepmc to be set at configure time) # insert DISGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile # set /Herwig/Analysis/HepMCFile:PrintEvent 100 # set /Herwig/Analysis/HepMCFile:Format GenEvent # set /Herwig/Analysis/HepMCFile:Units GeV_mm set /Herwig/Shower/KinematicsReconstructor:ReconstructionOption 1 ################################################## # Save run for later usage with 'Herwig++ run' ################################################## saverun DIS DISGenerator ################################################## # uncomment this section for an example batch run # of two repeats with different parameters # # Note that a separate call of 'Herwig run' # is not required in this case ################################################## # set DISGenerator:NumberOfEvents 10 # run DIS-full DISGenerator # # run DIS-initial DISGenerator ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LHC-diffractive.in����������������������������������������������������������0000644�0001750�0001750�00000006734�11756407343�021010� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator based on LHC parameters # usage: Herwig++ read LHC-diffractive.in ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 set LHCGenerator:EventHandler:StatLevel Full ################################################## # LHC physics parameters (override defaults here) ################################################## set LHCGenerator:EventHandler:LuminosityFunction:Energy 8000.0 # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV cd /Herwig/Partons # Set the PDFs for the beams # This is for double diffractive, comment out either the first or second # for single diffractive set QCDExtractor:FirstPDF PomeronFlux set QCDExtractor:SecondPDF PomeronFlux ## Reggeon Structure Function ################################# # MUST HAVE LHAPDF linked with ThePEG #create ThePEG::LHAPDF PionPDF ThePEGLHAPDF.so #set PionPDF:PDFNumber 212 #set PionPDF:PType PionOrVMD #set PionPDF:RangeException Freeze # #create ThePEG::SoftRemnantHandler PionRemnants #set PionRemnants:RemnantDecayer RemnantDecayer #set PionPDF:RemnantHandler /Herwig/Partons/PionRemnants # #create Herwig::ReggeonPDF ReggeonPDF HwReggeonPDF.so #set ReggeonPDF:PDF PionPDF #set ReggeonPDF:RemnantHandler PionRemnants #set /Herwig/Particles/reggeon:PDF ReggeonPDF # uncomment to switch pomeron off if only reggeon required #set /Herwig/Particles/pomeron:PDF NULL ################################################################# ################################################## # Choice of phase-space generation for PDFs ################################################## set QCDExtractor:FlatSHatY 0 ################################################## # Cuts ################################################## cd /Herwig/Cuts set QCDCuts:MHatMin 1. set QCDCuts:MHatMax 20000 set QCDCuts:X2Min 1.0e-7 set QCDCuts:X2Max 1. set QCDCuts:X1Min 1.0e-7 set QCDCuts:X1Max 1. set JetKtCut:MinKT 10. set LeptonKtCut:MinKT 1. ################################################## # Matrix Elements for diffractive collisions # (by default on QCD 2->2 switched on) ################################################## cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] /Herwig/UnderlyingEvent/MEQCD2to2Fast cd /Herwig/Generators # MPI doesn't work set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL ################################################## # Useful analysis handlers for HepMC related output ################################################## # Schematic overview of an event (requires --with-hepmc to be set at configure time # and the graphviz program 'dot' to produce a plot) # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/Plot # A HepMC dump file (requires --with-hepmc to be set at configure time) # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile # set /Herwig/Analysis/HepMCFile:PrintEvent 100 # set /Herwig/Analysis/HepMCFile:Format GenEvent # set /Herwig/Analysis/HepMCFile:Units GeV_mm ################################################## # Save run for later usage with 'Herwig++ run' ################################################## saverun LHC-diffractive LHCGenerator ������������������������������������herwig++-2.6.0.orig/src/LHC-RPV.in������������������������������������������������������������������0000644�0001750�0001750�00000004563�11754474774�017201� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator for the MSSM # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read MSSM.model cd /Herwig/NewPhysics ################################################## # # This section contains the user defined settings # ################################################## # --- Hard Process ---- # The particle name can be found in the relevant model file # by searching for its PDG code and noting the text # '/Herwig/Particles/###' where the hashes denote the name # Switch to decide whether to include EW diagrams in the # hard process (On by default) set HPConstructor:IncludeEW No # Example hard process: Incoming proton, outgoing squarks insert HPConstructor:Incoming 0 /Herwig/Particles/g insert HPConstructor:Incoming 1 /Herwig/Particles/u insert HPConstructor:Incoming 2 /Herwig/Particles/ubar insert HPConstructor:Incoming 3 /Herwig/Particles/d insert HPConstructor:Incoming 4 /Herwig/Particles/dbar insert HPConstructor:Outgoing 0 /Herwig/Particles/~u_L insert HPConstructor:Outgoing 1 /Herwig/Particles/~u_Lbar insert HPConstructor:Outgoing 2 /Herwig/Particles/~d_L insert HPConstructor:Outgoing 3 /Herwig/Particles/~d_Lbar # --- Perturbative Decays --- # Read in the spectrum file and optional decay table. # If a decay table is in a separate file # then add another 'setup' line with that # file as the argument. The provided # spectrum file is an example using ISAJET setup MSSM/Model RPV3.1.slha # To disable a particular decay mode, add it's tag to the DisableModes # interface of the DecayConstructor object, i.e. #insert DecayConstructor:DisableModes 0 ~u_L->~chi_20,u; #insert DecayConstructor:DisableModes 1 ~chi_20->~e_R-,e+; # etc ... # To set a minimum allowed branching fraction (the default is shown) #set NewModel:MinimumBR 1e-6 # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV # Other parameters for run cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 saverun LHC-RPV LHCGenerator ���������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LHC-MUED.in�����������������������������������������������������������������0000644�0001750�0001750�00000005062�11754474774�017257� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator for the MUED # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read MUED.model cd /Herwig/NewPhysics ################################################## # # This section contains the user defined settings # ################################################## # The UED parameters (these are the default) set MUED/Model:InverseRadius 500.*GeV set MUED/Model:LambdaR 20 # --- Hard Process ---- # The particle name can be found in the relevant model file # by searching for its PDG code and noting the text # '/Herwig/Particles/###' where the hashes denote the name # Switch to decide whether to include EW diagrams in the # hard process (On by default) set HPConstructor:IncludeEW No # Example hard process: Incoming proton, outgoing kk quarks insert HPConstructor:Incoming 0 /Herwig/Particles/g insert HPConstructor:Incoming 1 /Herwig/Particles/u insert HPConstructor:Incoming 2 /Herwig/Particles/ubar insert HPConstructor:Incoming 3 /Herwig/Particles/d insert HPConstructor:Incoming 4 /Herwig/Particles/dbar insert HPConstructor:Outgoing 0 /Herwig/Particles/KK1_u_L insert HPConstructor:Outgoing 1 /Herwig/Particles/KK1_u_Lbar insert HPConstructor:Outgoing 2 /Herwig/Particles/KK1_d_L insert HPConstructor:Outgoing 3 /Herwig/Particles/KK1_d_Lbar # --- Perturbative Decays --- # All of the two- and three-body decay modes are calculated automatically. # Set the next line to 'Yes' to enable the creation of the three-body modes. # Initialisation of all three-body decayers will take several minutes. # For production runs, they should be enabled! set ThreeBodyDC:CreateDecayModes Yes # To disable a particular decay mode, add it's tag to the DisableModes # interface of the DecayConstructor object, i.e. #insert DecayConstructor:DisableModes 0 KK1_u_L->KK1_Z0,u; #insert DecayConstructor:DisableModes 1 KK1_Z0->KK1_e_R-,e+; # etc ... # To set a minimum allowed branching fraction (the default is shown) #set NewModel:MinimumBR 1e-6 # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV # Other parameters for run cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 saverun LHC-MUED LHCGenerator ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/herwigopts.c����������������������������������������������������������������0000644�0001750�0001750�00000107374�11755210405�020115� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* File autogenerated by gengetopt version 2.22.4 generated with the following command: gengetopt --file-name=herwigopts --unamed-opts --long-help The developers of gengetopt consider the fixed text that goes in all gengetopt output files to be in the public domain: we make no copyright claims on it. */ /* If we use autoconf. */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include <stdio.h> #include <stdlib.h> #include <string.h> #ifndef FIX_UNUSED #define FIX_UNUSED(X) (void) (X) /* avoid warnings for unused params */ #endif #include <getopt.h> #include "herwigopts.h" const char *gengetopt_args_info_purpose = "Herwig++ is a multi-purpose Monte-Carlo event generator for particle physics. \nSee arXiv:0803.0883 for a detailed manual, or arXiv:1101.2599 for a more \ngeneral description of the physics behind MC event generation."; const char *gengetopt_args_info_usage = "Usage: " CMDLINE_PARSER_PACKAGE " (read|run) [OPTIONS]... [FILE]"; const char *gengetopt_args_info_description = "One of the commands 'read' or 'run' is required:\n read - reads an input file and creates a run file,\n run - reads a run file and generates events."; const char *gengetopt_args_info_full_help[] = { " -h, --help Print help and exit", " --full-help Print help, including hidden options, and exit", " -V, --version Print version and exit", "\nEvent generation options:", "", " -N, --numevents=LONG Number of events to generate.", " -s, --seed=INT The random number generator seed.", " -t, --tag=TAG A tag to append to the run name. (default=`')", " -d, --debug=INT Set the ThePEG debug level.", " -D, --debug-fpe Enable floating point exceptions. (default=off)", " -q, --quiet Disable event counter. (default=off)", "\nPlugin library options:", "", " -l, --append=PATH Append a search path for dynamically loaded libraries.", " -L, --prepend=PATH Prepend a search path for dynamically loaded libraries.", "\nAdvanced options:", "\nUsage: Herwig++ init [OPTIONS]...\n creates a new default repository (not useful for end users).\n", " -i, --init=FILE Initialization file to read for 'init'. \n (default=`HerwigDefaults.in')", " -r, --repo=FILE Repository file to use. (default=`HerwigDefaults.rpo')", " --noexitonerror If set, ThePEG will not try to recover from failures, \n but will exit with a non-zero return code. \n (default=off)", " --resume Try to resume execution from an earlier interrupted \n run. (default=off)", " --keepid Peserve creation order of objects, to allow exactly \n reproducible runs. (default=off)", 0 }; static void init_help_array(void) { gengetopt_args_info_help[0] = gengetopt_args_info_full_help[0]; gengetopt_args_info_help[1] = gengetopt_args_info_full_help[1]; gengetopt_args_info_help[2] = gengetopt_args_info_full_help[2]; gengetopt_args_info_help[3] = gengetopt_args_info_full_help[3]; gengetopt_args_info_help[4] = gengetopt_args_info_full_help[4]; gengetopt_args_info_help[5] = gengetopt_args_info_full_help[5]; gengetopt_args_info_help[6] = gengetopt_args_info_full_help[6]; gengetopt_args_info_help[7] = gengetopt_args_info_full_help[7]; gengetopt_args_info_help[8] = gengetopt_args_info_full_help[8]; gengetopt_args_info_help[9] = gengetopt_args_info_full_help[9]; gengetopt_args_info_help[10] = gengetopt_args_info_full_help[10]; gengetopt_args_info_help[11] = gengetopt_args_info_full_help[11]; gengetopt_args_info_help[12] = gengetopt_args_info_full_help[12]; gengetopt_args_info_help[13] = gengetopt_args_info_full_help[13]; gengetopt_args_info_help[14] = gengetopt_args_info_full_help[14]; gengetopt_args_info_help[15] = gengetopt_args_info_full_help[16]; gengetopt_args_info_help[16] = 0; } const char *gengetopt_args_info_help[17]; typedef enum {ARG_NO , ARG_FLAG , ARG_STRING , ARG_INT , ARG_LONG } cmdline_parser_arg_type; static void clear_given (struct gengetopt_args_info *args_info); static void clear_args (struct gengetopt_args_info *args_info); static int cmdline_parser_internal (int argc, char **argv, struct gengetopt_args_info *args_info, struct cmdline_parser_params *params, const char *additional_error); static int cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, const char *additional_error); static char * gengetopt_strdup (const char *s); static void clear_given (struct gengetopt_args_info *args_info) { args_info->help_given = 0 ; args_info->full_help_given = 0 ; args_info->version_given = 0 ; args_info->numevents_given = 0 ; args_info->seed_given = 0 ; args_info->tag_given = 0 ; args_info->debug_given = 0 ; args_info->debug_fpe_given = 0 ; args_info->quiet_given = 0 ; args_info->append_given = 0 ; args_info->prepend_given = 0 ; args_info->init_given = 0 ; args_info->repo_given = 0 ; args_info->noexitonerror_given = 0 ; args_info->resume_given = 0 ; args_info->keepid_given = 0 ; } static void clear_args (struct gengetopt_args_info *args_info) { FIX_UNUSED (args_info); args_info->numevents_orig = NULL; args_info->seed_orig = NULL; args_info->tag_arg = gengetopt_strdup (""); args_info->tag_orig = NULL; args_info->debug_orig = NULL; args_info->debug_fpe_flag = 0; args_info->quiet_flag = 0; args_info->append_arg = NULL; args_info->append_orig = NULL; args_info->prepend_arg = NULL; args_info->prepend_orig = NULL; args_info->init_arg = gengetopt_strdup ("HerwigDefaults.in"); args_info->init_orig = NULL; args_info->repo_arg = gengetopt_strdup ("HerwigDefaults.rpo"); args_info->repo_orig = NULL; args_info->noexitonerror_flag = 0; args_info->resume_flag = 0; args_info->keepid_flag = 0; } static void init_args_info(struct gengetopt_args_info *args_info) { init_help_array(); args_info->help_help = gengetopt_args_info_full_help[0] ; args_info->full_help_help = gengetopt_args_info_full_help[1] ; args_info->version_help = gengetopt_args_info_full_help[2] ; args_info->numevents_help = gengetopt_args_info_full_help[5] ; args_info->seed_help = gengetopt_args_info_full_help[6] ; args_info->tag_help = gengetopt_args_info_full_help[7] ; args_info->debug_help = gengetopt_args_info_full_help[8] ; args_info->debug_fpe_help = gengetopt_args_info_full_help[9] ; args_info->quiet_help = gengetopt_args_info_full_help[10] ; args_info->append_help = gengetopt_args_info_full_help[13] ; args_info->append_min = 0; args_info->append_max = 0; args_info->prepend_help = gengetopt_args_info_full_help[14] ; args_info->prepend_min = 0; args_info->prepend_max = 0; args_info->init_help = gengetopt_args_info_full_help[17] ; args_info->repo_help = gengetopt_args_info_full_help[18] ; args_info->noexitonerror_help = gengetopt_args_info_full_help[19] ; args_info->resume_help = gengetopt_args_info_full_help[20] ; args_info->keepid_help = gengetopt_args_info_full_help[21] ; } void cmdline_parser_print_version (void) { printf ("%s %s\n", (strlen(CMDLINE_PARSER_PACKAGE_NAME) ? CMDLINE_PARSER_PACKAGE_NAME : CMDLINE_PARSER_PACKAGE), CMDLINE_PARSER_VERSION); } static void print_help_common(void) { cmdline_parser_print_version (); if (strlen(gengetopt_args_info_purpose) > 0) printf("\n%s\n", gengetopt_args_info_purpose); if (strlen(gengetopt_args_info_usage) > 0) printf("\n%s\n", gengetopt_args_info_usage); printf("\n"); if (strlen(gengetopt_args_info_description) > 0) printf("%s\n\n", gengetopt_args_info_description); } void cmdline_parser_print_help (void) { int i = 0; print_help_common(); while (gengetopt_args_info_help[i]) printf("%s\n", gengetopt_args_info_help[i++]); } void cmdline_parser_print_full_help (void) { int i = 0; print_help_common(); while (gengetopt_args_info_full_help[i]) printf("%s\n", gengetopt_args_info_full_help[i++]); } void cmdline_parser_init (struct gengetopt_args_info *args_info) { clear_given (args_info); clear_args (args_info); init_args_info (args_info); args_info->inputs = 0; args_info->inputs_num = 0; } void cmdline_parser_params_init(struct cmdline_parser_params *params) { if (params) { params->override = 0; params->initialize = 1; params->check_required = 1; params->check_ambiguity = 0; params->print_errors = 1; } } struct cmdline_parser_params * cmdline_parser_params_create(void) { struct cmdline_parser_params *params = (struct cmdline_parser_params *)malloc(sizeof(struct cmdline_parser_params)); cmdline_parser_params_init(params); return params; } static void free_string_field (char **s) { if (*s) { free (*s); *s = 0; } } /** @brief generic value variable */ union generic_value { int int_arg; long long_arg; char *string_arg; const char *default_string_arg; }; /** @brief holds temporary values for multiple options */ struct generic_list { union generic_value arg; char *orig; struct generic_list *next; }; /** * @brief add a node at the head of the list */ static void add_node(struct generic_list **list) { struct generic_list *new_node = (struct generic_list *) malloc (sizeof (struct generic_list)); new_node->next = *list; *list = new_node; new_node->arg.string_arg = 0; new_node->orig = 0; } static void free_multiple_string_field(unsigned int len, char ***arg, char ***orig) { unsigned int i; if (*arg) { for (i = 0; i < len; ++i) { free_string_field(&((*arg)[i])); free_string_field(&((*orig)[i])); } free_string_field(&((*arg)[0])); /* free default string */ free (*arg); *arg = 0; free (*orig); *orig = 0; } } static void cmdline_parser_release (struct gengetopt_args_info *args_info) { unsigned int i; free_string_field (&(args_info->numevents_orig)); free_string_field (&(args_info->seed_orig)); free_string_field (&(args_info->tag_arg)); free_string_field (&(args_info->tag_orig)); free_string_field (&(args_info->debug_orig)); free_multiple_string_field (args_info->append_given, &(args_info->append_arg), &(args_info->append_orig)); free_multiple_string_field (args_info->prepend_given, &(args_info->prepend_arg), &(args_info->prepend_orig)); free_string_field (&(args_info->init_arg)); free_string_field (&(args_info->init_orig)); free_string_field (&(args_info->repo_arg)); free_string_field (&(args_info->repo_orig)); for (i = 0; i < args_info->inputs_num; ++i) free (args_info->inputs [i]); if (args_info->inputs_num) free (args_info->inputs); clear_given (args_info); } static void write_into_file(FILE *outfile, const char *opt, const char *arg, const char *values[]) { FIX_UNUSED (values); if (arg) { fprintf(outfile, "%s=\"%s\"\n", opt, arg); } else { fprintf(outfile, "%s\n", opt); } } static void write_multiple_into_file(FILE *outfile, int len, const char *opt, char **arg, const char *values[]) { int i; for (i = 0; i < len; ++i) write_into_file(outfile, opt, (arg ? arg[i] : 0), values); } int cmdline_parser_dump(FILE *outfile, struct gengetopt_args_info *args_info) { int i = 0; if (!outfile) { fprintf (stderr, "%s: cannot dump options to stream\n", CMDLINE_PARSER_PACKAGE); return EXIT_FAILURE; } if (args_info->help_given) write_into_file(outfile, "help", 0, 0 ); if (args_info->full_help_given) write_into_file(outfile, "full-help", 0, 0 ); if (args_info->version_given) write_into_file(outfile, "version", 0, 0 ); if (args_info->numevents_given) write_into_file(outfile, "numevents", args_info->numevents_orig, 0); if (args_info->seed_given) write_into_file(outfile, "seed", args_info->seed_orig, 0); if (args_info->tag_given) write_into_file(outfile, "tag", args_info->tag_orig, 0); if (args_info->debug_given) write_into_file(outfile, "debug", args_info->debug_orig, 0); if (args_info->debug_fpe_given) write_into_file(outfile, "debug-fpe", 0, 0 ); if (args_info->quiet_given) write_into_file(outfile, "quiet", 0, 0 ); write_multiple_into_file(outfile, args_info->append_given, "append", args_info->append_orig, 0); write_multiple_into_file(outfile, args_info->prepend_given, "prepend", args_info->prepend_orig, 0); if (args_info->init_given) write_into_file(outfile, "init", args_info->init_orig, 0); if (args_info->repo_given) write_into_file(outfile, "repo", args_info->repo_orig, 0); if (args_info->noexitonerror_given) write_into_file(outfile, "noexitonerror", 0, 0 ); if (args_info->resume_given) write_into_file(outfile, "resume", 0, 0 ); if (args_info->keepid_given) write_into_file(outfile, "keepid", 0, 0 ); i = EXIT_SUCCESS; return i; } int cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_info) { FILE *outfile; int i = 0; outfile = fopen(filename, "w"); if (!outfile) { fprintf (stderr, "%s: cannot open file for writing: %s\n", CMDLINE_PARSER_PACKAGE, filename); return EXIT_FAILURE; } i = cmdline_parser_dump(outfile, args_info); fclose (outfile); return i; } void cmdline_parser_free (struct gengetopt_args_info *args_info) { cmdline_parser_release (args_info); } /** @brief replacement of strdup, which is not standard */ char * gengetopt_strdup (const char *s) { char *result = 0; if (!s) return result; result = (char*)malloc(strlen(s) + 1); if (result == (char*)0) return (char*)0; strcpy(result, s); return result; } static char * get_multiple_arg_token(const char *arg) { const char *tok; char *ret; size_t len, num_of_escape, i, j; if (!arg) return 0; tok = strchr (arg, ','); num_of_escape = 0; /* make sure it is not escaped */ while (tok) { if (*(tok-1) == '\\') { /* find the next one */ tok = strchr (tok+1, ','); ++num_of_escape; } else break; } if (tok) len = (size_t)(tok - arg + 1); else len = strlen (arg) + 1; len -= num_of_escape; ret = (char *) malloc (len); i = 0; j = 0; while (arg[i] && (j < len-1)) { if (arg[i] == '\\' && arg[ i + 1 ] && arg[ i + 1 ] == ',') ++i; ret[j++] = arg[i++]; } ret[len-1] = '\0'; return ret; } static const char * get_multiple_arg_token_next(const char *arg) { const char *tok; if (!arg) return 0; tok = strchr (arg, ','); /* make sure it is not escaped */ while (tok) { if (*(tok-1) == '\\') { /* find the next one */ tok = strchr (tok+1, ','); } else break; } if (! tok || strlen(tok) == 1) return 0; return tok+1; } static int check_multiple_option_occurrences(const char *prog_name, unsigned int option_given, unsigned int min, unsigned int max, const char *option_desc); int check_multiple_option_occurrences(const char *prog_name, unsigned int option_given, unsigned int min, unsigned int max, const char *option_desc) { int error = 0; if (option_given && (min > 0 || max > 0)) { if (min > 0 && max > 0) { if (min == max) { /* specific occurrences */ if (option_given != (unsigned int) min) { fprintf (stderr, "%s: %s option occurrences must be %d\n", prog_name, option_desc, min); error = 1; } } else if (option_given < (unsigned int) min || option_given > (unsigned int) max) { /* range occurrences */ fprintf (stderr, "%s: %s option occurrences must be between %d and %d\n", prog_name, option_desc, min, max); error = 1; } } else if (min > 0) { /* at least check */ if (option_given < min) { fprintf (stderr, "%s: %s option occurrences must be at least %d\n", prog_name, option_desc, min); error = 1; } } else if (max > 0) { /* at most check */ if (option_given > max) { fprintf (stderr, "%s: %s option occurrences must be at most %d\n", prog_name, option_desc, max); error = 1; } } } return error; } int cmdline_parser (int argc, char **argv, struct gengetopt_args_info *args_info) { return cmdline_parser2 (argc, argv, args_info, 0, 1, 1); } int cmdline_parser_ext (int argc, char **argv, struct gengetopt_args_info *args_info, struct cmdline_parser_params *params) { int result; result = cmdline_parser_internal (argc, argv, args_info, params, 0); if (result == EXIT_FAILURE) { cmdline_parser_free (args_info); exit (EXIT_FAILURE); } return result; } int cmdline_parser2 (int argc, char **argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required) { int result; struct cmdline_parser_params params; params.override = override; params.initialize = initialize; params.check_required = check_required; params.check_ambiguity = 0; params.print_errors = 1; result = cmdline_parser_internal (argc, argv, args_info, &params, 0); if (result == EXIT_FAILURE) { cmdline_parser_free (args_info); exit (EXIT_FAILURE); } return result; } int cmdline_parser_required (struct gengetopt_args_info *args_info, const char *prog_name) { int result = EXIT_SUCCESS; if (cmdline_parser_required2(args_info, prog_name, 0) > 0) result = EXIT_FAILURE; if (result == EXIT_FAILURE) { cmdline_parser_free (args_info); exit (EXIT_FAILURE); } return result; } int cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, const char *additional_error) { int error = 0; FIX_UNUSED (additional_error); /* checks for required options */ if (check_multiple_option_occurrences(prog_name, args_info->append_given, args_info->append_min, args_info->append_max, "'--append' ('-l')")) error = 1; if (check_multiple_option_occurrences(prog_name, args_info->prepend_given, args_info->prepend_min, args_info->prepend_max, "'--prepend' ('-L')")) error = 1; /* checks for dependences among options */ return error; } static char *package_name = 0; /** * @brief updates an option * @param field the generic pointer to the field to update * @param orig_field the pointer to the orig field * @param field_given the pointer to the number of occurrence of this option * @param prev_given the pointer to the number of occurrence already seen * @param value the argument for this option (if null no arg was specified) * @param possible_values the possible values for this option (if specified) * @param default_value the default value (in case the option only accepts fixed values) * @param arg_type the type of this option * @param check_ambiguity @see cmdline_parser_params.check_ambiguity * @param override @see cmdline_parser_params.override * @param no_free whether to free a possible previous value * @param multiple_option whether this is a multiple option * @param long_opt the corresponding long option * @param short_opt the corresponding short option (or '-' if none) * @param additional_error possible further error specification */ static int update_arg(void *field, char **orig_field, unsigned int *field_given, unsigned int *prev_given, char *value, const char *possible_values[], const char *default_value, cmdline_parser_arg_type arg_type, int check_ambiguity, int override, int no_free, int multiple_option, const char *long_opt, char short_opt, const char *additional_error) { char *stop_char = 0; const char *val = value; int found; char **string_field; FIX_UNUSED (field); stop_char = 0; found = 0; if (!multiple_option && prev_given && (*prev_given || (check_ambiguity && *field_given))) { if (short_opt != '-') fprintf (stderr, "%s: `--%s' (`-%c') option given more than once%s\n", package_name, long_opt, short_opt, (additional_error ? additional_error : "")); else fprintf (stderr, "%s: `--%s' option given more than once%s\n", package_name, long_opt, (additional_error ? additional_error : "")); return 1; /* failure */ } FIX_UNUSED (default_value); if (field_given && *field_given && ! override) return 0; if (prev_given) (*prev_given)++; if (field_given) (*field_given)++; if (possible_values) val = possible_values[found]; switch(arg_type) { case ARG_FLAG: *((int *)field) = !*((int *)field); break; case ARG_INT: if (val) *((int *)field) = strtol (val, &stop_char, 0); break; case ARG_LONG: if (val) *((long *)field) = (long)strtol (val, &stop_char, 0); break; case ARG_STRING: if (val) { string_field = (char **)field; if (!no_free && *string_field) free (*string_field); /* free previous string */ *string_field = gengetopt_strdup (val); } break; default: break; }; /* check numeric conversion */ switch(arg_type) { case ARG_INT: case ARG_LONG: if (val && !(stop_char && *stop_char == '\0')) { fprintf(stderr, "%s: invalid numeric value: %s\n", package_name, val); return 1; /* failure */ } break; default: ; }; /* store the original value */ switch(arg_type) { case ARG_NO: case ARG_FLAG: break; default: if (value && orig_field) { if (no_free) { *orig_field = value; } else { if (*orig_field) free (*orig_field); /* free previous string */ *orig_field = gengetopt_strdup (value); } } }; return 0; /* OK */ } /** * @brief store information about a multiple option in a temporary list * @param list where to (temporarily) store multiple options */ static int update_multiple_arg_temp(struct generic_list **list, unsigned int *prev_given, const char *val, const char *possible_values[], const char *default_value, cmdline_parser_arg_type arg_type, const char *long_opt, char short_opt, const char *additional_error) { /* store single arguments */ char *multi_token; const char *multi_next; if (arg_type == ARG_NO) { (*prev_given)++; return 0; /* OK */ } multi_token = get_multiple_arg_token(val); multi_next = get_multiple_arg_token_next (val); while (1) { add_node (list); if (update_arg((void *)&((*list)->arg), &((*list)->orig), 0, prev_given, multi_token, possible_values, default_value, arg_type, 0, 1, 1, 1, long_opt, short_opt, additional_error)) { if (multi_token) free(multi_token); return 1; /* failure */ } if (multi_next) { multi_token = get_multiple_arg_token(multi_next); multi_next = get_multiple_arg_token_next (multi_next); } else break; } return 0; /* OK */ } /** * @brief free the passed list (including possible string argument) */ static void free_list(struct generic_list *list, short string_arg) { if (list) { struct generic_list *tmp; while (list) { tmp = list; if (string_arg && list->arg.string_arg) free (list->arg.string_arg); if (list->orig) free (list->orig); list = list->next; free (tmp); } } } /** * @brief updates a multiple option starting from the passed list */ static void update_multiple_arg(void *field, char ***orig_field, unsigned int field_given, unsigned int prev_given, union generic_value *default_value, cmdline_parser_arg_type arg_type, struct generic_list *list) { int i; struct generic_list *tmp; if (prev_given && list) { *orig_field = (char **) realloc (*orig_field, (field_given + prev_given) * sizeof (char *)); switch(arg_type) { case ARG_INT: *((int **)field) = (int *)realloc (*((int **)field), (field_given + prev_given) * sizeof (int)); break; case ARG_LONG: *((long **)field) = (long *)realloc (*((long **)field), (field_given + prev_given) * sizeof (long)); break; case ARG_STRING: *((char ***)field) = (char **)realloc (*((char ***)field), (field_given + prev_given) * sizeof (char *)); break; default: break; }; for (i = (prev_given - 1); i >= 0; --i) { tmp = list; switch(arg_type) { case ARG_INT: (*((int **)field))[i + field_given] = tmp->arg.int_arg; break; case ARG_LONG: (*((long **)field))[i + field_given] = tmp->arg.long_arg; break; case ARG_STRING: (*((char ***)field))[i + field_given] = tmp->arg.string_arg; break; default: break; } (*orig_field) [i + field_given] = list->orig; list = list->next; free (tmp); } } else { /* set the default value */ if (default_value && ! field_given) { switch(arg_type) { case ARG_INT: if (! *((int **)field)) { *((int **)field) = (int *)malloc (sizeof (int)); (*((int **)field))[0] = default_value->int_arg; } break; case ARG_LONG: if (! *((long **)field)) { *((long **)field) = (long *)malloc (sizeof (long)); (*((long **)field))[0] = default_value->long_arg; } break; case ARG_STRING: if (! *((char ***)field)) { *((char ***)field) = (char **)malloc (sizeof (char *)); (*((char ***)field))[0] = gengetopt_strdup(default_value->string_arg); } break; default: break; } if (!(*orig_field)) { *orig_field = (char **) malloc (sizeof (char *)); (*orig_field)[0] = 0; } } } } int cmdline_parser_internal ( int argc, char **argv, struct gengetopt_args_info *args_info, struct cmdline_parser_params *params, const char *additional_error) { int c; /* Character of the parsed option. */ struct generic_list * append_list = NULL; struct generic_list * prepend_list = NULL; int error = 0; struct gengetopt_args_info local_args_info; int override; int initialize; int check_required; int check_ambiguity; package_name = argv[0]; override = params->override; initialize = params->initialize; check_required = params->check_required; check_ambiguity = params->check_ambiguity; if (initialize) cmdline_parser_init (args_info); cmdline_parser_init (&local_args_info); optarg = 0; optind = 0; opterr = params->print_errors; optopt = '?'; while (1) { int option_index = 0; static struct option long_options[] = { { "help", 0, NULL, 'h' }, { "full-help", 0, NULL, 0 }, { "version", 0, NULL, 'V' }, { "numevents", 1, NULL, 'N' }, { "seed", 1, NULL, 's' }, { "tag", 1, NULL, 't' }, { "debug", 1, NULL, 'd' }, { "debug-fpe", 0, NULL, 'D' }, { "quiet", 0, NULL, 'q' }, { "append", 1, NULL, 'l' }, { "prepend", 1, NULL, 'L' }, { "init", 1, NULL, 'i' }, { "repo", 1, NULL, 'r' }, { "noexitonerror", 0, NULL, 0 }, { "resume", 0, NULL, 0 }, { "keepid", 0, NULL, 0 }, { 0, 0, 0, 0 } }; c = getopt_long (argc, argv, "hVN:s:t:d:Dql:L:i:r:", long_options, &option_index); if (c == -1) break; /* Exit from `while (1)' loop. */ switch (c) { case 'h': /* Print help and exit. */ cmdline_parser_print_help (); cmdline_parser_free (&local_args_info); exit (EXIT_SUCCESS); case 'V': /* Print version and exit. */ cmdline_parser_print_version (); cmdline_parser_free (&local_args_info); exit (EXIT_SUCCESS); case 'N': /* Number of events to generate.. */ if (update_arg( (void *)&(args_info->numevents_arg), &(args_info->numevents_orig), &(args_info->numevents_given), &(local_args_info.numevents_given), optarg, 0, 0, ARG_LONG, check_ambiguity, override, 0, 0, "numevents", 'N', additional_error)) goto failure; break; case 's': /* The random number generator seed.. */ if (update_arg( (void *)&(args_info->seed_arg), &(args_info->seed_orig), &(args_info->seed_given), &(local_args_info.seed_given), optarg, 0, 0, ARG_INT, check_ambiguity, override, 0, 0, "seed", 's', additional_error)) goto failure; break; case 't': /* A tag to append to the run name.. */ if (update_arg( (void *)&(args_info->tag_arg), &(args_info->tag_orig), &(args_info->tag_given), &(local_args_info.tag_given), optarg, 0, "", ARG_STRING, check_ambiguity, override, 0, 0, "tag", 't', additional_error)) goto failure; break; case 'd': /* Set the ThePEG debug level.. */ if (update_arg( (void *)&(args_info->debug_arg), &(args_info->debug_orig), &(args_info->debug_given), &(local_args_info.debug_given), optarg, 0, 0, ARG_INT, check_ambiguity, override, 0, 0, "debug", 'd', additional_error)) goto failure; break; case 'D': /* Enable floating point exceptions.. */ if (update_arg((void *)&(args_info->debug_fpe_flag), 0, &(args_info->debug_fpe_given), &(local_args_info.debug_fpe_given), optarg, 0, 0, ARG_FLAG, check_ambiguity, override, 1, 0, "debug-fpe", 'D', additional_error)) goto failure; break; case 'q': /* Disable event counter.. */ if (update_arg((void *)&(args_info->quiet_flag), 0, &(args_info->quiet_given), &(local_args_info.quiet_given), optarg, 0, 0, ARG_FLAG, check_ambiguity, override, 1, 0, "quiet", 'q', additional_error)) goto failure; break; case 'l': /* Append a search path for dynamically loaded libraries.. */ if (update_multiple_arg_temp(&append_list, &(local_args_info.append_given), optarg, 0, 0, ARG_STRING, "append", 'l', additional_error)) goto failure; break; case 'L': /* Prepend a search path for dynamically loaded libraries.. */ if (update_multiple_arg_temp(&prepend_list, &(local_args_info.prepend_given), optarg, 0, 0, ARG_STRING, "prepend", 'L', additional_error)) goto failure; break; case 'i': /* Initialization file to read for 'init'.. */ if (update_arg( (void *)&(args_info->init_arg), &(args_info->init_orig), &(args_info->init_given), &(local_args_info.init_given), optarg, 0, "HerwigDefaults.in", ARG_STRING, check_ambiguity, override, 0, 0, "init", 'i', additional_error)) goto failure; break; case 'r': /* Repository file to use.. */ if (update_arg( (void *)&(args_info->repo_arg), &(args_info->repo_orig), &(args_info->repo_given), &(local_args_info.repo_given), optarg, 0, "HerwigDefaults.rpo", ARG_STRING, check_ambiguity, override, 0, 0, "repo", 'r', additional_error)) goto failure; break; case 0: /* Long option with no short option */ if (strcmp (long_options[option_index].name, "full-help") == 0) { cmdline_parser_print_full_help (); cmdline_parser_free (&local_args_info); exit (EXIT_SUCCESS); } /* If set, ThePEG will not try to recover from failures, but will exit with a non-zero return code.. */ if (strcmp (long_options[option_index].name, "noexitonerror") == 0) { if (update_arg((void *)&(args_info->noexitonerror_flag), 0, &(args_info->noexitonerror_given), &(local_args_info.noexitonerror_given), optarg, 0, 0, ARG_FLAG, check_ambiguity, override, 1, 0, "noexitonerror", '-', additional_error)) goto failure; } /* Try to resume execution from an earlier interrupted run.. */ else if (strcmp (long_options[option_index].name, "resume") == 0) { if (update_arg((void *)&(args_info->resume_flag), 0, &(args_info->resume_given), &(local_args_info.resume_given), optarg, 0, 0, ARG_FLAG, check_ambiguity, override, 1, 0, "resume", '-', additional_error)) goto failure; } /* Peserve creation order of objects, to allow exactly reproducible runs.. */ else if (strcmp (long_options[option_index].name, "keepid") == 0) { if (update_arg((void *)&(args_info->keepid_flag), 0, &(args_info->keepid_given), &(local_args_info.keepid_given), optarg, 0, 0, ARG_FLAG, check_ambiguity, override, 1, 0, "keepid", '-', additional_error)) goto failure; } break; case '?': /* Invalid option. */ /* `getopt_long' already printed an error message. */ goto failure; default: /* bug: option not considered. */ fprintf (stderr, "%s: option unknown: %c%s\n", CMDLINE_PARSER_PACKAGE, c, (additional_error ? additional_error : "")); abort (); } /* switch */ } /* while */ update_multiple_arg((void *)&(args_info->append_arg), &(args_info->append_orig), args_info->append_given, local_args_info.append_given, 0, ARG_STRING, append_list); update_multiple_arg((void *)&(args_info->prepend_arg), &(args_info->prepend_orig), args_info->prepend_given, local_args_info.prepend_given, 0, ARG_STRING, prepend_list); args_info->append_given += local_args_info.append_given; local_args_info.append_given = 0; args_info->prepend_given += local_args_info.prepend_given; local_args_info.prepend_given = 0; if (check_required) { error += cmdline_parser_required2 (args_info, argv[0], additional_error); } cmdline_parser_release (&local_args_info); if ( error ) return (EXIT_FAILURE); if (optind < argc) { int i = 0 ; int found_prog_name = 0; /* whether program name, i.e., argv[0], is in the remaining args (this may happen with some implementations of getopt, but surely not with the one included by gengetopt) */ i = optind; while (i < argc) if (argv[i++] == argv[0]) { found_prog_name = 1; break; } i = 0; args_info->inputs_num = argc - optind - found_prog_name; args_info->inputs = (char **)(malloc ((args_info->inputs_num)*sizeof(char *))) ; while (optind < argc) if (argv[optind++] != argv[0]) args_info->inputs[ i++ ] = gengetopt_strdup (argv[optind-1]) ; } return 0; failure: free_list (append_list, 1 ); free_list (prepend_list, 1 ); cmdline_parser_release (&local_args_info); return (EXIT_FAILURE); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/ILC-RS.in�������������������������������������������������������������������0000644�0001750�0001750�00000003224�11754474774�017050� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator for the Randell-Sundrum model # in lepton collisions # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read RS.model cd /Herwig/NewPhysics ################################################## # # This section contains the user defined settings # ################################################## # Example hard process: Incoming leptons,resonant gravition insert ResConstructor:Incoming 0 /Herwig/Particles/e- insert ResConstructor:Incoming 1 /Herwig/Particles/e+ insert ResConstructor:Intermediates 0 /Herwig/Particles/Graviton insert ResConstructor:Outgoing 0 /Herwig/Particles/e+ insert ResConstructor:Outgoing 0 /Herwig/Particles/W+ insert ResConstructor:Outgoing 0 /Herwig/Particles/Z0 insert ResConstructor:Outgoing 0 /Herwig/Particles/u insert ResConstructor:Outgoing 0 /Herwig/Particles/t # coupling # set RS/Model:Lambda_pi 10000*GeV # Other parameters for run cd /Herwig/Generators set LEPGenerator:NumberOfEvents 100000000 set LEPGenerator:RandomNumberGenerator:Seed 31122001 set LEPGenerator:PrintEvent 10 set LEPGenerator:MaxErrors 10000 set LEPGenerator:EventHandler:LuminosityFunction:Energy 800.0 set LEPGenerator:EventHandler:CascadeHandler:MPIHandler NULL ################################################## # Save run for later usage with 'Herwig++ run' ################################################## saverun ILC-RS LEPGenerator ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/Makefile.in�����������������������������������������������������������������0000644�0001750�0001750�00000117570�11756461702�017633� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = Herwig++$(EXEEXT) @WANT_MSSM_TRUE@am__append_1 = check-LHC-RPV @WANT_MSSM_TRUE@am__append_2 = check-LHC-RPV check-LHC-MSSM @WANT_NMSSM_TRUE@am__append_3 = check-LHC-NMSSM @WANT_UED_TRUE@am__append_4 = check-LHC-MUED @WANT_UED_TRUE@am__append_5 = check-LHC-MUED @WANT_RS_TRUE@am__append_6 = check-LHC-RS @WANT_RS_TRUE@am__append_7 = check-LHC-RS @WANT_TRP_TRUE@am__append_8 = check-LHC-TRP @WANT_ADD_TRUE@am__append_9 = check-LHC-ADD @WANT_TTBA_TRUE@am__append_10 = check-LHC-TTBA @WANT_ZPRIME_TRUE@am__append_11 = check-LHC-ZP subdir = src DIST_COMMON = $(dist_pkgdata_DATA) $(srcdir)/Makefile-UserModules.in \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/herwig-config.in $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = herwig-config Makefile-UserModules CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" PROGRAMS = $(bin_PROGRAMS) am_Herwig___OBJECTS = Herwig__-Herwig++.$(OBJEXT) \ Herwig__-herwigopts.$(OBJEXT) Herwig___OBJECTS = $(am_Herwig___OBJECTS) am__DEPENDENCIES_1 = Herwig___DEPENDENCIES = $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent Herwig___LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(Herwig___LDFLAGS) $(LDFLAGS) -o $@ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } SCRIPTS = $(bin_SCRIPTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(Herwig___SOURCES) DIST_SOURCES = $(Herwig___SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(dist_pkgdata_DATA) $(pkgdata_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = defaults AUTOMAKE_OPTIONS = -Wno-portability defaultsdir = ${pkgdatadir}/defaults Herwig___SOURCES = Herwig++.cc herwigopts.c herwigopts.h BUILT_SOURCES = herwigopts.c herwigopts.h Herwig___LDFLAGS = $(AM_LDFLAGS) -export-dynamic $(THEPEGLDFLAGS) Herwig___LDADD = $(THEPEGLIB) -ldl Herwig___CPPFLAGS = $(AM_CPPFLAGS) \ -DHERWIG_PKGDATADIR="\"$(pkgdatadir)\"" \ -DHERWIG_PKGLIBDIR="\"$(pkglibdir)\"" \ -DTHEPEG_PKGLIBDIR="\"$(THEPEGPATH)/lib/ThePEG\"" bin_SCRIPTS = herwig-config HELPERFILES = CMSSM40.1.1.slha RPV3.1.slha NMSSM.spc \ ADD.model \ Leptoquark.model \ MSSM.model \ MUED.model \ NMSSM.model \ RS.model \ Sextet.model \ TTBA.model \ Zprime.model 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-diffractive.in \ LHC-GammaGamma.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-Matchbox.in \ TVT-Powheg.in \ TVT-TTBA.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 check_BSM_Full = $(am__append_2) $(am__append_3) $(am__append_5) \ $(am__append_7) $(am__append_8) $(am__append_9) \ $(am__append_10) $(am__append_11) check_BSM = $(am__append_1) $(am__append_4) $(am__append_6) VALGRIND = valgrind --leak-check=full --num-callers=25 --freelist-vol=100000000 --leak-resolution=med --trace-children=yes SETUPTHEPEG = $(THEPEGPATH)/bin/setupThePEG THEPEGREPO = $(THEPEGPATH)/lib/ThePEG/ThePEGDefaults.rpo EXTRA_DIST = herwigopts.ggo GENGETOPT = gengetopt all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): herwig-config: $(top_builddir)/config.status $(srcdir)/herwig-config.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ Makefile-UserModules: $(top_builddir)/config.status $(srcdir)/Makefile-UserModules.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list Herwig++$(EXEEXT): $(Herwig___OBJECTS) $(Herwig___DEPENDENCIES) $(EXTRA_Herwig___DEPENDENCIES) @rm -f Herwig++$(EXEEXT) $(AM_V_CXXLD)$(Herwig___LINK) $(Herwig___OBJECTS) $(Herwig___LDADD) $(LIBS) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Herwig__-Herwig++.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Herwig__-herwigopts.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< Herwig__-herwigopts.o: herwigopts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(Herwig___CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT Herwig__-herwigopts.o -MD -MP -MF $(DEPDIR)/Herwig__-herwigopts.Tpo -c -o Herwig__-herwigopts.o `test -f 'herwigopts.c' || echo '$(srcdir)/'`herwigopts.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/Herwig__-herwigopts.Tpo $(DEPDIR)/Herwig__-herwigopts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='herwigopts.c' object='Herwig__-herwigopts.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(Herwig___CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o Herwig__-herwigopts.o `test -f 'herwigopts.c' || echo '$(srcdir)/'`herwigopts.c Herwig__-herwigopts.obj: herwigopts.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(Herwig___CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT Herwig__-herwigopts.obj -MD -MP -MF $(DEPDIR)/Herwig__-herwigopts.Tpo -c -o Herwig__-herwigopts.obj `if test -f 'herwigopts.c'; then $(CYGPATH_W) 'herwigopts.c'; else $(CYGPATH_W) '$(srcdir)/herwigopts.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/Herwig__-herwigopts.Tpo $(DEPDIR)/Herwig__-herwigopts.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='herwigopts.c' object='Herwig__-herwigopts.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(Herwig___CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o Herwig__-herwigopts.obj `if test -f 'herwigopts.c'; then $(CYGPATH_W) 'herwigopts.c'; else $(CYGPATH_W) '$(srcdir)/herwigopts.c'; fi` .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< Herwig__-Herwig++.o: Herwig++.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(Herwig___CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Herwig__-Herwig++.o -MD -MP -MF $(DEPDIR)/Herwig__-Herwig++.Tpo -c -o Herwig__-Herwig++.o `test -f 'Herwig++.cc' || echo '$(srcdir)/'`Herwig++.cc @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/Herwig__-Herwig++.Tpo $(DEPDIR)/Herwig__-Herwig++.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Herwig++.cc' object='Herwig__-Herwig++.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(Herwig___CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Herwig__-Herwig++.o `test -f 'Herwig++.cc' || echo '$(srcdir)/'`Herwig++.cc Herwig__-Herwig++.obj: Herwig++.cc @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(Herwig___CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Herwig__-Herwig++.obj -MD -MP -MF $(DEPDIR)/Herwig__-Herwig++.Tpo -c -o Herwig__-Herwig++.obj `if test -f 'Herwig++.cc'; then $(CYGPATH_W) 'Herwig++.cc'; else $(CYGPATH_W) '$(srcdir)/Herwig++.cc'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/Herwig__-Herwig++.Tpo $(DEPDIR)/Herwig__-Herwig++.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='Herwig++.cc' object='Herwig__-Herwig++.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(Herwig___CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Herwig__-Herwig++.obj `if test -f 'Herwig++.cc'; then $(CYGPATH_W) 'Herwig++.cc'; else $(CYGPATH_W) '$(srcdir)/Herwig++.cc'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) install-pkgdataDATA: $(pkgdata_DATA) @$(NORMAL_INSTALL) @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done cscopelist-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_pkgdataDATA install-pkgdataDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-binSCRIPTS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ uninstall-dist_pkgdataDATA uninstall-pkgdataDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ check-am cscopelist-recursive ctags-recursive install \ install-am install-data-am install-strip tags-recursive \ uninstall-am .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am check-local clean clean-binPROGRAMS \ clean-generic clean-libtool cscopelist cscopelist-recursive \ ctags ctags-recursive distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-binPROGRAMS install-binSCRIPTS install-data \ install-data-am install-data-hook install-dist_pkgdataDATA \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-pkgdataDATA \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-binSCRIPTS \ uninstall-dist_pkgdataDATA uninstall-hook \ uninstall-pkgdataDATA HerwigDefaults.rpo: Herwig++ $(srcdir)/defaults/*.in defaults/PDF.in defaults/Analysis.in $(top_builddir)/lib/*.so ./Herwig++ init -L$(top_builddir)/lib -i defaults/HerwigDefaults.in -D check-local: check-LHC check-LEP check-DIS check-ILC check-GammaGamma $(check_BSM) check-LHC-Powheg check-Powheg: check-LHC-Powheg check-TVT-Powheg check-BSM: $(check_BSM_Full) link-helper-files: @for i in $(HELPERFILES); do \ if test -f $(srcdir)/$$i -a ! -e $$i; then \ $(LN_S) -f $(srcdir)/$$i; fi; done check-%: $(srcdir)/%.in HerwigDefaults.rpo link-helper-files ./Herwig++ read $< -D ./Herwig++ run $(notdir $(subst .in,.run,$<)) -N500 -d1 -D valgrind: valgrind-init valgrind-read valgrind-run valgrind-init: $(VALGRIND) ./Herwig++ init -d1 -D -L$(top_builddir)/lib -i 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 install-data-hook: @echo Creating repository @./Herwig++ init -L$(DESTDIR)$(pkglibdir) -i $(DESTDIR)$(defaultsdir)/HerwigDefaults.in -r $(DESTDIR)$(pkgdatadir)/HerwigDefaults.rpo 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)" \ -l$(DESTDIR)$(pkglibdir) ; \ 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 %opts.h %opts.c : %opts.ggo $(GENGETOPT) < $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ����������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/herwigopts.h����������������������������������������������������������������0000644�0001750�0001750�00000026477�11755210405�020126� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/** @file herwigopts.h * @brief The header file for the command line option parser * generated by GNU Gengetopt version 2.22.4 * http://www.gnu.org/software/gengetopt. * DO NOT modify this file, since it can be overwritten * @author GNU Gengetopt by Lorenzo Bettini */ #ifndef HERWIGOPTS_H #define HERWIGOPTS_H /* If we use autoconf. */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include <stdio.h> /* for FILE */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #ifndef CMDLINE_PARSER_PACKAGE /** @brief the program name (used for printing errors) */ #define CMDLINE_PARSER_PACKAGE PACKAGE #endif #ifndef CMDLINE_PARSER_PACKAGE_NAME /** @brief the complete program name (used for help and version) */ #ifdef PACKAGE_NAME #define CMDLINE_PARSER_PACKAGE_NAME PACKAGE_NAME #else #define CMDLINE_PARSER_PACKAGE_NAME PACKAGE #endif #endif #ifndef CMDLINE_PARSER_VERSION /** @brief the program version */ #define CMDLINE_PARSER_VERSION VERSION #endif /** @brief Where the command line options are stored */ struct gengetopt_args_info { const char *help_help; /**< @brief Print help and exit help description. */ const char *full_help_help; /**< @brief Print help, including hidden options, and exit help description. */ const char *version_help; /**< @brief Print version and exit help description. */ long numevents_arg; /**< @brief Number of events to generate.. */ char * numevents_orig; /**< @brief Number of events to generate. original value given at command line. */ const char *numevents_help; /**< @brief Number of events to generate. help description. */ int seed_arg; /**< @brief The random number generator seed.. */ char * seed_orig; /**< @brief The random number generator seed. original value given at command line. */ const char *seed_help; /**< @brief The random number generator seed. help description. */ char * tag_arg; /**< @brief A tag to append to the run name. (default=''). */ char * tag_orig; /**< @brief A tag to append to the run name. original value given at command line. */ const char *tag_help; /**< @brief A tag to append to the run name. help description. */ int debug_arg; /**< @brief Set the ThePEG debug level.. */ char * debug_orig; /**< @brief Set the ThePEG debug level. original value given at command line. */ const char *debug_help; /**< @brief Set the ThePEG debug level. help description. */ int debug_fpe_flag; /**< @brief Enable floating point exceptions. (default=off). */ const char *debug_fpe_help; /**< @brief Enable floating point exceptions. help description. */ int quiet_flag; /**< @brief Disable event counter. (default=off). */ const char *quiet_help; /**< @brief Disable event counter. help description. */ char ** append_arg; /**< @brief Append a search path for dynamically loaded libraries.. */ char ** append_orig; /**< @brief Append a search path for dynamically loaded libraries. original value given at command line. */ unsigned int append_min; /**< @brief Append a search path for dynamically loaded libraries.'s minimum occurreces */ unsigned int append_max; /**< @brief Append a search path for dynamically loaded libraries.'s maximum occurreces */ const char *append_help; /**< @brief Append a search path for dynamically loaded libraries. help description. */ char ** prepend_arg; /**< @brief Prepend a search path for dynamically loaded libraries.. */ char ** prepend_orig; /**< @brief Prepend a search path for dynamically loaded libraries. original value given at command line. */ unsigned int prepend_min; /**< @brief Prepend a search path for dynamically loaded libraries.'s minimum occurreces */ unsigned int prepend_max; /**< @brief Prepend a search path for dynamically loaded libraries.'s maximum occurreces */ const char *prepend_help; /**< @brief Prepend a search path for dynamically loaded libraries. help description. */ char * init_arg; /**< @brief Initialization file to read for 'init'. (default='HerwigDefaults.in'). */ char * init_orig; /**< @brief Initialization file to read for 'init'. original value given at command line. */ const char *init_help; /**< @brief Initialization file to read for 'init'. help description. */ char * repo_arg; /**< @brief Repository file to use. (default='HerwigDefaults.rpo'). */ char * repo_orig; /**< @brief Repository file to use. original value given at command line. */ const char *repo_help; /**< @brief Repository file to use. help description. */ int noexitonerror_flag; /**< @brief If set, ThePEG will not try to recover from failures, but will exit with a non-zero return code. (default=off). */ const char *noexitonerror_help; /**< @brief If set, ThePEG will not try to recover from failures, but will exit with a non-zero return code. help description. */ int resume_flag; /**< @brief Try to resume execution from an earlier interrupted run. (default=off). */ const char *resume_help; /**< @brief Try to resume execution from an earlier interrupted run. help description. */ int keepid_flag; /**< @brief Peserve creation order of objects, to allow exactly reproducible runs. (default=off). */ const char *keepid_help; /**< @brief Peserve creation order of objects, to allow exactly reproducible runs. help description. */ unsigned int help_given ; /**< @brief Whether help was given. */ unsigned int full_help_given ; /**< @brief Whether full-help was given. */ unsigned int version_given ; /**< @brief Whether version was given. */ unsigned int numevents_given ; /**< @brief Whether numevents was given. */ unsigned int seed_given ; /**< @brief Whether seed was given. */ unsigned int tag_given ; /**< @brief Whether tag was given. */ unsigned int debug_given ; /**< @brief Whether debug was given. */ unsigned int debug_fpe_given ; /**< @brief Whether debug-fpe was given. */ unsigned int quiet_given ; /**< @brief Whether quiet was given. */ unsigned int append_given ; /**< @brief Whether append was given. */ unsigned int prepend_given ; /**< @brief Whether prepend was given. */ unsigned int init_given ; /**< @brief Whether init was given. */ unsigned int repo_given ; /**< @brief Whether repo was given. */ unsigned int noexitonerror_given ; /**< @brief Whether noexitonerror was given. */ unsigned int resume_given ; /**< @brief Whether resume was given. */ unsigned int keepid_given ; /**< @brief Whether keepid was given. */ char **inputs ; /**< @brief unamed options (options without names) */ unsigned inputs_num ; /**< @brief unamed options number */ } ; /** @brief The additional parameters to pass to parser functions */ struct cmdline_parser_params { int override; /**< @brief whether to override possibly already present options (default 0) */ int initialize; /**< @brief whether to initialize the option structure gengetopt_args_info (default 1) */ int check_required; /**< @brief whether to check that all required options were provided (default 1) */ int check_ambiguity; /**< @brief whether to check for options already specified in the option structure gengetopt_args_info (default 0) */ int print_errors; /**< @brief whether getopt_long should print an error message for a bad option (default 1) */ } ; /** @brief the purpose string of the program */ extern const char *gengetopt_args_info_purpose; /** @brief the usage string of the program */ extern const char *gengetopt_args_info_usage; /** @brief all the lines making the help output */ extern const char *gengetopt_args_info_help[]; /** @brief all the lines making the full help output (including hidden options) */ extern const char *gengetopt_args_info_full_help[]; /** * The command line parser * @param argc the number of command line options * @param argv the command line options * @param args_info the structure where option information will be stored * @return 0 if everything went fine, NON 0 if an error took place */ int cmdline_parser (int argc, char **argv, struct gengetopt_args_info *args_info); /** * The command line parser (version with additional parameters - deprecated) * @param argc the number of command line options * @param argv the command line options * @param args_info the structure where option information will be stored * @param override whether to override possibly already present options * @param initialize whether to initialize the option structure my_args_info * @param check_required whether to check that all required options were provided * @return 0 if everything went fine, NON 0 if an error took place * @deprecated use cmdline_parser_ext() instead */ int cmdline_parser2 (int argc, char **argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required); /** * The command line parser (version with additional parameters) * @param argc the number of command line options * @param argv the command line options * @param args_info the structure where option information will be stored * @param params additional parameters for the parser * @return 0 if everything went fine, NON 0 if an error took place */ int cmdline_parser_ext (int argc, char **argv, struct gengetopt_args_info *args_info, struct cmdline_parser_params *params); /** * Save the contents of the option struct into an already open FILE stream. * @param outfile the stream where to dump options * @param args_info the option struct to dump * @return 0 if everything went fine, NON 0 if an error took place */ int cmdline_parser_dump(FILE *outfile, struct gengetopt_args_info *args_info); /** * Save the contents of the option struct into a (text) file. * This file can be read by the config file parser (if generated by gengetopt) * @param filename the file where to save * @param args_info the option struct to save * @return 0 if everything went fine, NON 0 if an error took place */ int cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_info); /** * Print the help */ void cmdline_parser_print_help(void); /** * Print the full help (including hidden options) */ void cmdline_parser_print_full_help(void); /** * Print the version */ void cmdline_parser_print_version(void); /** * Initializes all the fields a cmdline_parser_params structure * to their default values * @param params the structure to initialize */ void cmdline_parser_params_init(struct cmdline_parser_params *params); /** * Allocates dynamically a cmdline_parser_params structure and initializes * all its fields to their default values * @return the created and initialized cmdline_parser_params structure */ struct cmdline_parser_params *cmdline_parser_params_create(void); /** * Initializes the passed gengetopt_args_info structure's fields * (also set default values for options that have a default) * @param args_info the structure to initialize */ void cmdline_parser_init (struct gengetopt_args_info *args_info); /** * Deallocates the string fields of the gengetopt_args_info structure * (but does not deallocate the structure itself) * @param args_info the structure to deallocate */ void cmdline_parser_free (struct gengetopt_args_info *args_info); /** * Checks that all the required options were specified * @param args_info the structure to check * @param prog_name the name of the program that will be used to print * possible errors * @return */ int cmdline_parser_required (struct gengetopt_args_info *args_info, const char *prog_name); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* HERWIGOPTS_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LEP.in����������������������������������������������������������������������0000644�0001750�0001750�00000010701�11754474774�016535� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator based on LEP parameters # usage: Herwig++ read LEP.in ################################################## ################################################## # Change settings for the ee->Z->qq matrix element # to avoid producing top quarks # # 'set' lines like this can be omitted if the # default value is already okay. # # Any repository setting can be modified here ################################################## ################################################## # Selected the hard process ################################################## # leading-order processes ################################################## cd /Herwig/MatrixElements # default e+e- > q qbar (5 flavours d,u,s,c,b) insert SimpleEE:MatrixElements 0 MEee2gZ2qq # e+e- > l+l- # insert SimpleEE:MatrixElements[0] MEee2gZ2ll # e+e- > W+W- ZZ # insert SimpleEE:MatrixElements[0] MEee2VV # higgs+Z # insert SimpleEE:MatrixElements[0] MEee2ZH # higgs+e+e-/nu_enu_ebar via VBF # insert SimpleEE:MatrixElements[0] MEee2HiggsVBF ################################################## # NLO powheg processes ################################################## #create Herwig::O2AlphaS O2AlphaS #set /Herwig/Generators/LHCGenerator:StandardModelParameters:QCD/RunningAlphaS O2AlphaS #set /Herwig/Shower/Evolver:HardEmissionMode POWHEG #set /Herwig/Shower/AlphaQCD:AlphaMZ 0.118 #insert SimpleEE:MatrixElements 0 PowhegMEee2gZ2qq ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LEPGenerator:NumberOfEvents 100000000 set LEPGenerator:RandomNumberGenerator:Seed 31122001 set LEPGenerator:PrintEvent 10 set LEPGenerator:MaxErrors 10000 ################################################## # LEP physics parameters (override defaults) ################################################## set LEPGenerator:EventHandler:LuminosityFunction:Energy 91.2 set LEPGenerator:EventHandler:CascadeHandler:MPIHandler NULL cd /Herwig/Generators ################################################## # Useful analysis handlers for LEP physics ################################################## # particle multiplicities # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/LEPMultiplicity # b multiplicities # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/BMultiplicity # b fragmentation functions # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/BFrag # event shapes and single particle spectra # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/Shapes # identified particle spectra # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/LEPIdent # four jet analysis (needs Fastjet installed) # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/LEPFourJet # general jet analysis (needs Fastjet installed) # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/LEPJet ################################################## # Useful analysis handlers for B-factory physics ################################################## # BELLE data on charm hadron spetra # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/BELLECharm # CLEO data on charm meson spectra # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/CLEOCharm ################################################## # Useful analysis handlers for HepMC related output ################################################## # Schematic overview of an event (requires --with-hepmc to be set at configure time # and the graphviz program 'dot' to produce a plot) # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/Plot # A HepMC dump file (requires --with-hepmc to be set at configure time) # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile # set /Herwig/Analysis/HepMCFile:PrintEvent 100 # set /Herwig/Analysis/HepMCFile:Format GenEvent # set /Herwig/Analysis/HepMCFile:Units GeV_mm ################################################### # Save run for later usage with 'Herwig++ run' ################################################## saverun LEP LEPGenerator ################################################## # uncomment this section for an example batch run # of two repeats with different parameters # # Note that a separate call of 'Herwig run' # is not required ################################################## # set LEPGenerator:NumberOfEvents 100 # run LEP-Zpole LEPGenerator # set LEPGenerator:EventHandler:LuminosityFunction:Energy 208.0 # run LEP-maxE LEPGenerator ���������������������������������������������������������������herwig++-2.6.0.orig/src/RPV3.1.slha�����������������������������������������������������������������0000644�0001750�0001750�00000122562�11756461777�017341� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ISAJET SUSY parameters in SUSY Les Houches Accord 2 format # Created by ISALHA 2.0 Last revision: C. Balazs 21 Apr 2009 Block SPINFO # Program information 1 ISASUGRA from ISAJET # Spectrum Calculator 2 7.81 26-APR-2011 16:50:35 # Version number Block MODSEL # Model selection 1 1 # Minimal supergravity (mSUGRA) model Block SMINPUTS # Standard Model inputs 1 1.27841293E+02 # alpha_em^(-1) 2 1.16570000E-05 # G_Fermi 3 1.17200002E-01 # alpha_s(M_Z) 4 9.11699982E+01 # m_{Z}(pole) 5 4.19999981E+00 # m_{b}(m_{b}) 6 1.73199997E+02 # m_{top}(pole) 7 1.77699995E+00 # m_{tau}(pole) Block MINPAR # SUSY breaking input parameters 1 1.25000000E+02 # m_0 2 5.00000000E+02 # m_{1/2} 3 1.00000000E+01 # tan(beta) 4 1.00000000E+00 # sign(mu) 5 0.00000000E+00 # A_0 Block EXTPAR # Non-universal SUSY breaking parameters 0 1.73293684E+16 # Input scale Block MASS # Scalar and gaugino mass spectrum # PDG code mass particle 25 1.14529778E+02 # h^0 35 7.16610962E+02 # H^0 36 7.11739441E+02 # A^0 37 7.20844055E+02 # H^+ 1000001 1.06214185E+03 # dnl 1000002 1.05892517E+03 # upl 1000003 1.06214185E+03 # stl 1000004 1.05892615E+03 # chl 1000005 9.77616211E+02 # b1 1000006 8.03143250E+02 # t1 1000011 3.62920380E+02 # el- 1000012 3.51372070E+02 # nuel 1000013 3.62920410E+02 # mul- 1000014 3.51372070E+02 # numl 1000015 2.22224518E+02 # tau1 1000016 3.47436615E+02 # nutl 1000021 1.15231189E+03 # glss 1000022 2.04949677E+02 # z1ss 1000023 3.86143707E+02 # z2ss 1000024 3.86816162E+02 # w1ss 1000025 -6.27991333E+02 # z3ss 1000035 6.43010193E+02 # z4ss 1000037 6.42467407E+02 # w2ss 2000001 1.01799512E+03 # dnr 2000002 1.02183514E+03 # upr 2000003 1.01799518E+03 # str 2000004 1.02183618E+03 # chr 2000005 1.01353174E+03 # b2 2000006 1.02112970E+03 # t2 2000011 2.26291672E+02 # er- 2000013 2.26291718E+02 # mur- 2000015 3.61810516E+02 # tau2 Block ALPHA # Effective Higgs mixing parameter -1.03237279E-01 # alpha Block STOPMIX # stop mixing matrix 1 1 4.10014242E-01 # O_{11} 1 2 9.12079096E-01 # O_{12} 2 1 -9.12079096E-01 # O_{21} 2 2 4.10014242E-01 # O_{22} Block SBOTMIX # sbottom mixing matrix 1 1 9.63158786E-01 # O_{11} 1 2 2.68933296E-01 # O_{12} 2 1 -2.68933296E-01 # O_{21} 2 2 9.63158786E-01 # O_{22} Block STAUMIX # stau mixing matrix 1 1 1.39273554E-01 # O_{11} 1 2 9.90253925E-01 # O_{12} 2 1 -9.90253925E-01 # O_{21} 2 2 1.39273554E-01 # O_{22} Block NMIX # neutralino mixing matrix 1 1 9.95991528E-01 # 1 2 -1.66598335E-02 # 1 3 8.13337192E-02 # 1 4 -3.32864523E-02 # 2 1 -3.71091887E-02 # 2 2 -9.69584048E-01 # 2 3 2.00293168E-01 # 2 4 -1.35692954E-01 # 3 1 3.30185927E-02 # 3 2 -4.75754663E-02 # 3 3 -7.03835666E-01 # 3 4 -7.07998335E-01 # 4 1 -7.43867978E-02 # 4 2 2.39512175E-01 # 4 3 6.76670194E-01 # 4 4 -6.92255676E-01 # Block UMIX # chargino U mixing matrix 1 1 -9.58370566E-01 # U_{11} 1 2 2.85527259E-01 # U_{12} 2 1 -2.85527259E-01 # U_{21} 2 2 -9.58370566E-01 # U_{22} Block VMIX # chargino V mixing matrix 1 1 -9.80898976E-01 # V_{11} 1 2 1.94517970E-01 # V_{12} 2 1 -1.94517970E-01 # V_{21} 2 2 -9.80898976E-01 # V_{22} Block GAUGE Q= 8.66610535E+02 # 1 3.57502967E-01 # g` 2 6.52456701E-01 # g_2 3 1.22047222E+00 # g_3 Block YU Q= 8.66610535E+02 # 3 3 8.63739312E-01 # y_t Block YD Q= 8.66610535E+02 # 3 3 1.32061005E-01 # y_b Block YE Q= 8.66610535E+02 # 3 3 1.02258258E-01 # y_tau Block HMIX Q= 8.66610535E+02 # Higgs mixing parameters 1 6.23225952E+02 # mu(Q) 2 1.00000000E+01 # tan(beta)(M_GUT) 3 2.50762512E+02 # Higgs vev at Q 4 5.06573031E+05 # m_A^2(Q) Block MSOFT Q= 8.66610535E+02 # DRbar SUSY breaking parameters 1 2.09825760E+02 # M_1(Q) 2 3.89350372E+02 # M_2(Q) 3 1.10003870E+03 # M_3(Q) 21 1.09866984E+05 # M^2_Hd 22 -3.78524906E+05 # M^2_Hu 31 3.56637512E+02 # MeL(Q) 32 3.56637512E+02 # MmuL(Q) 33 3.52836609E+02 # MtauL(Q) 34 2.22725647E+02 # MeR(Q) 35 2.22725647E+02 # MmuR(Q) 36 2.18548676E+02 # MtauR(Q) 41 1.00690503E+03 # MqL1(Q) 42 1.00690503E+03 # MqL2(Q) 43 9.34674500E+02 # MqL3(Q) 44 9.70481750E+02 # MuR(Q) 45 9.70481750E+02 # McR(Q) 46 8.03503052E+02 # MtR(Q) 47 9.65828430E+02 # MdR(Q) 48 9.65828430E+02 # MsR(Q) 49 9.66277161E+02 # MbR(Q) Block AU Q= 8.66610535E+02 # 1 1 -8.76324646E+02 # A_u 2 2 -8.76324646E+02 # A_c 3 3 -8.76324646E+02 # A_t Block AD Q= 8.66610535E+02 # 1 1 -1.29659106E+03 # A_d 2 2 -1.29659106E+03 # A_s 3 3 -1.29659106E+03 # A_b Block AE Q= 8.66610535E+02 # 1 1 -2.97269653E+02 # A_e 2 2 -2.97269653E+02 # A_mu 3 3 -2.97269653E+02 # A_tau # ISAJET decay tables in SUSY Les Houches accord format # Created by ISALHD. Last revision: C. Balazs, 2005 May 25 Block DCINFO # Program information 1 ISASUGRA from ISAJET # Spectrum Calculator 2 7.81 26-APR-2011 16:50:35 # Version number # PDG Width DECAY 6 1.16585374E+00 # TP decays # BR NDA ID1 ID2 ID3 ID4 3.33333343E-01 3 2 -1 5 # TP --> UP DB BT 3.33333343E-01 3 4 -3 5 # TP --> CH SB BT 1.11111119E-01 3 -11 12 5 # TP --> E+ NUE BT 1.11111119E-01 3 -13 14 5 # TP --> MU+ NUM BT 1.11111119E-01 3 -15 16 5 # TP --> TAU+ NUT BT # PDG Width DECAY 1000021 1.44547825E+01 # GLSS decays # BR NDA ID1 ID2 ID3 ID4 1.10274914E-03 3 1000024 5 -6 # GLSS --> W1SS+ BT TB 1.10274914E-03 3 -1000024 6 -5 # GLSS --> W1SS- TP BB 2.98244588E-04 3 1000037 5 -6 # GLSS --> W2SS+ BT TB 2.98244588E-04 3 -1000037 6 -5 # GLSS --> W2SS- TP BB 1.59128278E-04 3 1000022 6 -6 # GLSS --> Z1SS TP TB 9.30276234E-04 3 1000023 6 -6 # GLSS --> Z2SS TP TB 3.98273660E-05 2 1000025 21 # GLSS --> Z3SS GL 4.24300000E-04 3 1000025 6 -6 # GLSS --> Z3SS TP TB 3.02960252E-05 2 1000035 21 # GLSS --> Z4SS GL 1.43193593E-03 3 1000035 6 -6 # GLSS --> Z4SS TP TB 2.18796469E-02 2 -1000002 2 # GLSS --> UBL UP 2.18796469E-02 2 1000002 -2 # GLSS --> UPL UB 2.04577185E-02 2 -1000001 1 # GLSS --> DBL DN 2.04577185E-02 2 1000001 -1 # GLSS --> DNL DB 4.12898697E-02 2 -2000002 2 # GLSS --> UBR UP 4.12898697E-02 2 2000002 -2 # GLSS --> UPR UB 4.36015874E-02 2 -2000001 1 # GLSS --> DBR DN 4.36015874E-02 2 2000001 -1 # GLSS --> DNR DB 2.04576738E-02 2 -1000003 3 # GLSS --> SBL ST 2.04576738E-02 2 1000003 -3 # GLSS --> STL SB 4.36015092E-02 2 -2000003 3 # GLSS --> SBR ST 4.36015092E-02 2 2000003 -3 # GLSS --> STR SB 2.18771119E-02 2 -1000004 4 # GLSS --> CBL CH 2.18771119E-02 2 1000004 -4 # GLSS --> CHL CB 4.12872992E-02 2 -2000004 4 # GLSS --> CBR CH 4.12872992E-02 2 2000004 -4 # GLSS --> CHR CB 6.98747337E-02 2 -1000005 5 # GLSS --> BB1 BT 6.98747337E-02 2 1000005 -5 # GLSS --> BT1 BB 4.72499467E-02 2 -2000005 5 # GLSS --> BB2 BT 4.72499467E-02 2 2000005 -5 # GLSS --> BT2 BB 1.25514030E-01 2 -1000006 6 # GLSS --> TB1 TP 1.25514030E-01 2 1000006 -6 # GLSS --> TP1 TB # PDG Width DECAY 1000002 9.97746372E+00 # UPL decays # BR NDA ID1 ID2 ID3 ID4 1.13797113E-02 2 1000022 2 # UPL --> Z1SS UP 3.20155859E-01 2 1000023 2 # UPL --> Z2SS UP 3.23779590E-04 2 1000025 2 # UPL --> Z3SS UP 9.08369105E-03 2 1000035 2 # UPL --> Z4SS UP 6.45558178E-01 2 1000024 1 # UPL --> W1SS+ DN 1.34988446E-02 2 1000037 1 # UPL --> W2SS+ DN # PDG Width DECAY 1000001 9.87782669E+00 # DNL decays # BR NDA ID1 ID2 ID3 ID4 1.66364126E-02 2 1000022 1 # DNL --> Z1SS DN 3.15981388E-01 2 1000023 1 # DNL --> Z2SS DN 5.50624332E-04 2 1000025 1 # DNL --> Z3SS DN 1.16400020E-02 2 1000035 1 # DNL --> Z4SS DN 6.25515699E-01 2 -1000024 2 # DNL --> W1SS- UP 2.96758413E-02 2 -1000037 2 # DNL --> W2SS- UP # PDG Width DECAY 1000003 9.87779808E+00 # STL decays # BR NDA ID1 ID2 ID3 ID4 1.66364629E-02 2 1000022 3 # STL --> Z1SS ST 3.15982342E-01 2 1000023 3 # STL --> Z2SS ST 5.50625962E-04 2 1000025 3 # STL --> Z3SS ST 1.16400374E-02 2 1000035 3 # STL --> Z4SS ST 6.25514865E-01 2 -1000024 4 # STL --> W1SS- CH 2.96756905E-02 2 -1000037 4 # STL --> W2SS- CH # PDG Width DECAY 1000004 9.97746372E+00 # CHL decays # BR NDA ID1 ID2 ID3 ID4 1.13796843E-02 2 1000022 4 # CHL --> Z1SS CH 3.20154935E-01 2 1000023 4 # CHL --> Z2SS CH 3.23778047E-04 2 1000025 4 # CHL --> Z3SS CH 9.08364356E-03 2 1000035 4 # CHL --> Z4SS CH 6.45559132E-01 2 1000024 3 # CHL --> W1SS+ ST 1.34988865E-02 2 1000037 3 # CHL --> W2SS+ ST # PDG Width DECAY 1000005 1.37134495E+01 # BT1 decays # BR NDA ID1 ID2 ID3 ID4 1.47616947E-02 2 1000022 5 # BT1 --> Z1SS BT 1.90578952E-01 2 1000023 5 # BT1 --> Z2SS BT 3.93444533E-03 2 1000025 5 # BT1 --> Z3SS BT 6.83019077E-03 2 1000035 5 # BT1 --> Z4SS BT 3.36093158E-01 2 -1000024 6 # BT1 --> W1SS- TP 2.82277346E-01 2 -1000037 6 # BT1 --> W2SS- TP 1.65524170E-01 2 -24 1000006 # BT1 --> W- TP1 # PDG Width DECAY 1000006 4.75481319E+00 # TP1 decays # BR NDA ID1 ID2 ID3 ID4 2.67034739E-01 2 1000022 6 # TP1 --> Z1SS TP 1.32801414E-01 2 1000023 6 # TP1 --> Z2SS TP 4.34729606E-02 2 1000025 6 # TP1 --> Z3SS TP 3.37525249E-01 2 1000024 5 # TP1 --> W1SS+ BT 2.19165653E-01 2 1000037 5 # TP1 --> W2SS+ BT # PDG Width DECAY 2000002 2.11876249E+00 # UPR decays # BR NDA ID1 ID2 ID3 ID4 9.96235609E-01 2 1000022 2 # UPR --> Z1SS UP 1.10316265E-03 2 1000023 2 # UPR --> Z2SS UP 4.60291893E-04 2 1000025 2 # UPR --> Z3SS UP 2.20094039E-03 2 1000035 2 # UPR --> Z4SS UP # PDG Width DECAY 2000001 5.27351677E-01 # DNR decays # BR NDA ID1 ID2 ID3 ID4 9.96261895E-01 2 1000022 1 # DNR --> Z1SS DN 1.10111281E-03 2 1000023 1 # DNR --> Z2SS DN 4.56379494E-04 2 1000025 1 # DNR --> Z3SS DN 2.18062149E-03 2 1000035 1 # DNR --> Z4SS DN # PDG Width DECAY 2000003 5.27352154E-01 # STR decays # BR NDA ID1 ID2 ID3 ID4 9.96261895E-01 2 1000022 3 # STR --> Z1SS ST 1.10111281E-03 2 1000023 3 # STR --> Z2SS ST 4.56379523E-04 2 1000025 3 # STR --> Z3SS ST 2.18062173E-03 2 1000035 3 # STR --> Z4SS ST # PDG Width DECAY 2000004 2.11875629E+00 # CHR decays # BR NDA ID1 ID2 ID3 ID4 9.96235609E-01 2 1000022 4 # CHR --> Z1SS CH 1.10316218E-03 2 1000023 4 # CHR --> Z2SS CH 4.60290554E-04 2 1000025 4 # CHR --> Z3SS CH 2.20093317E-03 2 1000035 4 # CHR --> Z4SS CH # PDG Width DECAY 2000005 2.02696466E+00 # BT2 decays # BR NDA ID1 ID2 ID3 ID4 2.32486323E-01 2 1000022 5 # BT2 --> Z1SS BT 6.42916933E-02 2 1000023 5 # BT2 --> Z2SS BT 3.94492708E-02 2 1000025 5 # BT2 --> Z3SS BT 5.52978516E-02 2 1000035 5 # BT2 --> Z4SS BT 1.15164913E-01 2 -1000024 6 # BT2 --> W1SS- TP 3.28609914E-01 2 -1000037 6 # BT2 --> W2SS- TP 1.64700001E-01 2 -24 1000006 # BT2 --> W- TP1 # PDG Width DECAY 2000006 1.61679039E+01 # TP2 decays # BR NDA ID1 ID2 ID3 ID4 2.44648740E-01 2 1000024 5 # TP2 --> W1SS+ BT 1.02776937E-01 2 1000037 5 # TP2 --> W2SS+ BT 1.25763550E-01 2 23 1000006 # TP2 --> Z0 TP1 7.62688369E-02 2 25 1000006 # TP2 --> HL0 TP1 1.92975532E-02 2 1000022 6 # TP2 --> Z1SS TP 1.11606777E-01 2 1000023 6 # TP2 --> Z2SS TP 1.08069107E-01 2 1000025 6 # TP2 --> Z3SS TP 2.11568445E-01 2 1000035 6 # TP2 --> Z4SS TP # PDG Width DECAY 1000011 1.99630737E-01 # EL- decays # BR NDA ID1 ID2 ID3 ID4 9.99999940E-01 2 1000022 11 # EL- --> Z1SS E- # PDG Width DECAY 1000013 1.99630693E-01 # MUL- decays # BR NDA ID1 ID2 ID3 ID4 9.99999940E-01 2 1000022 13 # MUL- --> Z1SS MU- # PDG Width DECAY 1000015 2.48380993E-02 # TAU1- decays # BR NDA ID1 ID2 ID3 ID4 1.00000000E+00 2 1000022 15 # TAU1- --> Z1SS TAU- # PDG Width DECAY 1000012 2.04863504E-01 # NUEL decays # BR NDA ID1 ID2 ID3 ID4 9.99984741E-01 2 1000022 12 # NUEL --> Z1SS NUE 1.53049623E-05 3 -1000015 11 16 # NUEL --> TAU1+ E- NUT # PDG Width DECAY 1000014 2.04863504E-01 # NUML decays # BR NDA ID1 ID2 ID3 ID4 9.99984741E-01 2 1000022 14 # NUML --> Z1SS NUM 1.53050914E-05 3 -1000015 13 16 # NUML --> TAU1+ MU- NUT # PDG Width DECAY 1000016 2.45554298E-01 # NUTL decays # BR NDA ID1 ID2 ID3 ID4 8.05662930E-01 2 1000022 16 # NUTL --> Z1SS NUT 1.94337070E-01 2 24 1000015 # NUTL --> W+ TAU1- # PDG Width DECAY 2000011 3.68820541E-02 # ER- decays # BR NDA ID1 ID2 ID3 ID4 1.00000000E+00 2 1000022 11 # ER- --> Z1SS E- # PDG Width DECAY 2000013 3.68817002E-02 # MUR- decays # BR NDA ID1 ID2 ID3 ID4 1.00000000E+00 2 1000022 13 # MUR- --> Z1SS MU- # PDG Width DECAY 2000015 2.76352704E-01 # TAU2- decays # BR NDA ID1 ID2 ID3 ID4 7.51779079E-01 2 1000022 15 # TAU2- --> Z1SS TAU- 1.08617224E-01 2 23 1000015 # TAU2- --> Z0 TAU1- 1.39603689E-01 2 25 1000015 # TAU2- --> HL0 TAU1- # PDG Width DECAY 1000022 5.54989811E-14 # Z1SS decays # BR NDA ID1 ID2 ID3 ID4 5.00000000E-01 3 2 3 5 # Z1SS --> UP ST BT 5.00000000E-01 3 -2 -3 -5 # Z1SS --> UB SB BB # PDG Width DECAY 1000023 2.51008749E-01 # Z2SS decays # BR NDA ID1 ID2 ID3 ID4 4.87829931E-03 2 1000022 23 # Z2SS --> Z1SS Z0 6.44727945E-02 2 1000022 25 # Z2SS --> Z1SS HL0 4.31903675E-02 2 1000011 -11 # Z2SS --> EL- E+ 4.31903675E-02 2 -1000011 11 # Z2SS --> EL+ E- 4.31898609E-02 2 1000013 -13 # Z2SS --> MUL- MU+ 4.31898609E-02 2 -1000013 13 # Z2SS --> MUL+ MU- 2.32248823E-03 2 2000011 -11 # Z2SS --> ER- E+ 2.32248823E-03 2 -2000011 11 # Z2SS --> ER+ E- 2.32248707E-03 2 2000013 -13 # Z2SS --> MUR- MU+ 2.32248707E-03 2 -2000013 13 # Z2SS --> MUR+ MU- 4.98090498E-02 2 1000015 -15 # Z2SS --> TAU1- TAU+ 4.98090498E-02 2 -1000015 15 # Z2SS --> TAU1+ TAU- 4.61306013E-02 2 2000015 -15 # Z2SS --> TAU2- TAU+ 4.61306013E-02 2 -2000015 15 # Z2SS --> TAU2+ TAU- 8.62868205E-02 2 1000012 -12 # Z2SS --> NUEL ANUE 8.62868205E-02 2 -1000012 12 # Z2SS --> ANUEL NUE 8.62868205E-02 2 1000014 -14 # Z2SS --> NUML ANUM 8.62868205E-02 2 -1000014 14 # Z2SS --> ANUML NUM 1.05785951E-01 2 1000016 -16 # Z2SS --> NUTL ANUT 1.05785951E-01 2 -1000016 16 # Z2SS --> ANUTL NUT # PDG Width DECAY 1000025 3.43108368E+00 # Z3SS decays # BR NDA ID1 ID2 ID3 ID4 2.89258450E-01 2 1000024 -24 # Z3SS --> W1SS+ W- 2.89258450E-01 2 -1000024 24 # Z3SS --> W1SS- W+ 1.05065115E-01 2 1000022 23 # Z3SS --> Z1SS Z0 2.58670330E-01 2 1000023 23 # Z3SS --> Z2SS Z0 1.77925695E-02 2 1000022 25 # Z3SS --> Z1SS HL0 8.97036120E-03 2 1000023 25 # Z3SS --> Z2SS HL0 1.47978906E-04 2 1000011 -11 # Z3SS --> EL- E+ 1.47978906E-04 2 -1000011 11 # Z3SS --> EL+ E- 1.47978863E-04 2 1000013 -13 # Z3SS --> MUL- MU+ 1.47978863E-04 2 -1000013 13 # Z3SS --> MUL+ MU- 3.84239160E-04 2 2000011 -11 # Z3SS --> ER- E+ 3.84239160E-04 2 -2000011 11 # Z3SS --> ER+ E- 3.84239102E-04 2 2000013 -13 # Z3SS --> MUR- MU+ 3.84239102E-04 2 -2000013 13 # Z3SS --> MUR+ MU- 7.02257408E-03 2 1000015 -15 # Z3SS --> TAU1- TAU+ 7.02257408E-03 2 -1000015 15 # Z3SS --> TAU1+ TAU- 5.03372960E-03 2 2000015 -15 # Z3SS --> TAU2- TAU+ 5.03372960E-03 2 -2000015 15 # Z3SS --> TAU2+ TAU- 7.85201555E-04 2 1000012 -12 # Z3SS --> NUEL ANUE 7.85201555E-04 2 -1000012 12 # Z3SS --> ANUEL NUE 7.85201555E-04 2 1000014 -14 # Z3SS --> NUML ANUM 7.85201555E-04 2 -1000014 14 # Z3SS --> ANUML NUM 8.01224262E-04 2 1000016 -16 # Z3SS --> NUTL ANUT 8.01224262E-04 2 -1000016 16 # Z3SS --> ANUTL NUT # PDG Width DECAY 1000035 4.13572025E+00 # Z4SS decays # BR NDA ID1 ID2 ID3 ID4 2.67477065E-01 2 1000024 -24 # Z4SS --> W1SS+ W- 2.67477065E-01 2 -1000024 24 # Z4SS --> W1SS- W+ 1.64306201E-02 2 1000022 23 # Z4SS --> Z1SS Z0 1.10877547E-02 2 1000023 23 # Z4SS --> Z2SS Z0 8.31157640E-02 2 1000022 25 # Z4SS --> Z1SS HL0 2.15254530E-01 2 1000023 25 # Z4SS --> Z2SS HL0 5.99500211E-03 2 1000011 -11 # Z4SS --> EL- E+ 5.99500211E-03 2 -1000011 11 # Z4SS --> EL+ E- 5.99500071E-03 2 1000013 -13 # Z4SS --> MUL- MU+ 5.99500071E-03 2 -1000013 13 # Z4SS --> MUL+ MU- 1.67951779E-03 2 2000011 -11 # Z4SS --> ER- E+ 1.67951779E-03 2 -2000011 11 # Z4SS --> ER+ E- 1.67951745E-03 2 2000013 -13 # Z4SS --> MUR- MU+ 1.67951745E-03 2 -2000013 13 # Z4SS --> MUR+ MU- 4.77972487E-03 2 1000015 -15 # Z4SS --> TAU1- TAU+ 4.77972487E-03 2 -1000015 15 # Z4SS --> TAU1+ TAU- 1.12385545E-02 2 2000015 -15 # Z4SS --> TAU2- TAU+ 1.12385545E-02 2 -2000015 15 # Z4SS --> TAU2+ TAU- 1.26567027E-02 2 1000012 -12 # Z4SS --> NUEL ANUE 1.26567027E-02 2 -1000012 12 # Z4SS --> ANUEL NUE 1.26567027E-02 2 1000014 -14 # Z4SS --> NUML ANUM 1.26567027E-02 2 -1000014 14 # Z4SS --> ANUML NUM 1.28978929E-02 2 1000016 -16 # Z4SS --> NUTL ANUT 1.28978929E-02 2 -1000016 16 # Z4SS --> ANUTL NUT # PDG Width DECAY 1000024 2.59394675E-01 # W1SS+ decays # BR NDA ID1 ID2 ID3 ID4 6.12202771E-02 2 1000022 24 # W1SS+ --> Z1SS W+ 1.84675083E-01 2 1000012 -11 # W1SS+ --> NUEL E+ 1.84674352E-01 2 1000014 -13 # W1SS+ --> NUML MU+ 2.26818800E-01 2 1000016 -15 # W1SS+ --> NUTL TAU+ 8.26541111E-02 2 -1000011 12 # W1SS+ --> EL+ NUE 8.26539099E-02 2 -1000013 14 # W1SS+ --> MUL+ NUM 8.99942294E-02 2 -1000015 16 # W1SS+ --> TAU1+ NUT 8.73092562E-02 2 -2000015 16 # W1SS+ --> TAU2+ NUT # PDG Width DECAY 1000037 4.02688837E+00 # W2SS+ decays # BR NDA ID1 ID2 ID3 ID4 8.86483863E-02 2 1000022 24 # W2SS+ --> Z1SS W+ 2.81457037E-01 2 1000023 24 # W2SS+ --> Z2SS W+ 1.24828229E-02 2 1000012 -11 # W2SS+ --> NUEL E+ 1.24828238E-02 2 1000014 -13 # W2SS+ --> NUML MU+ 2.04729903E-02 2 1000016 -15 # W2SS+ --> NUTL TAU+ 2.53841411E-02 2 -1000011 12 # W2SS+ --> EL+ NUE 2.53841374E-02 2 -1000013 14 # W2SS+ --> MUL+ NUM 6.54205261E-03 2 -1000015 16 # W2SS+ --> TAU1+ NUT 2.89599225E-02 2 -2000015 16 # W2SS+ --> TAU2+ NUT 2.61435837E-01 2 1000024 23 # W2SS+ --> W1SS+ Z0 2.36749917E-01 2 1000024 25 # W2SS+ --> W1SS+ HL0 # PDG Width DECAY 25 4.26856382E-03 # HL0 decays # BR NDA ID1 ID2 ID3 ID4 2.06499302E-04 2 13 -13 # HL0 --> MU- MU+ 5.90594597E-02 2 15 -15 # HL0 --> TAU- TAU+ 2.48042517E-03 2 3 -3 # HL0 --> ST SB 8.13605964E-01 2 5 -5 # HL0 --> BT BB 3.44697051E-02 2 4 -4 # HL0 --> CH CB 1.70449133E-03 2 22 22 # HL0 --> GM GM 3.69445458E-02 2 21 21 # HL0 --> GL GL 2.67047482E-03 3 24 11 -12 # HL0 --> W+ E- ANUE 2.67047482E-03 3 24 13 -14 # HL0 --> W+ MU- ANUM 2.67047482E-03 3 24 15 -16 # HL0 --> W+ TAU- ANUT 8.01142491E-03 3 24 -2 1 # HL0 --> W+ UB DN 8.01142491E-03 3 24 -4 3 # HL0 --> W+ CB ST 2.67047482E-03 3 -24 -11 12 # HL0 --> W- E+ NUE 2.67047482E-03 3 -24 -13 14 # HL0 --> W- MU+ NUM 2.67047482E-03 3 -24 -15 16 # HL0 --> W- TAU+ NUT 8.01142491E-03 3 -24 2 -1 # HL0 --> W- UP DB 8.01142491E-03 3 -24 4 -3 # HL0 --> W- CH SB 2.36650856E-04 3 23 12 -12 # HL0 --> Z0 NUE ANUE 2.36650856E-04 3 23 14 -14 # HL0 --> Z0 NUM ANUM 2.36650856E-04 3 23 16 -16 # HL0 --> Z0 NUT ANUT 1.19103999E-04 3 23 11 -11 # HL0 --> Z0 E- E+ 1.19103999E-04 3 23 13 -13 # HL0 --> Z0 MU- MU+ 1.19103999E-04 3 23 15 -15 # HL0 --> Z0 TAU- TAU+ 4.08040214E-04 3 23 2 -2 # HL0 --> Z0 UP UB 4.08040214E-04 3 23 4 -4 # HL0 --> Z0 CH CB 5.25656273E-04 3 23 1 -1 # HL0 --> Z0 DN DB 5.25656273E-04 3 23 3 -3 # HL0 --> Z0 ST SB 5.25656273E-04 3 23 5 -5 # HL0 --> Z0 BT BB # PDG Width DECAY 35 1.42017710E+00 # HH0 decays # BR NDA ID1 ID2 ID3 ID4 3.61791084E-04 2 13 -13 # HH0 --> MU- MU+ 1.03618696E-01 2 15 -15 # HH0 --> TAU- TAU+ 1.05274339E-05 2 1 -1 # HH0 --> DN DB 4.25361609E-03 2 3 -3 # HH0 --> ST SB 6.59700513E-01 2 5 -5 # HH0 --> BT BB 2.04839349E-01 2 6 -6 # HH0 --> TP TB 1.93596643E-04 2 21 21 # HH0 --> GL GL 9.95672075E-04 2 24 -24 # HH0 --> W+ W- 5.00190770E-04 2 23 23 # HH0 --> Z0 Z0 4.47695563E-03 2 1000022 1000022 # HH0 --> Z1SS Z1SS 1.17691308E-02 2 1000022 1000023 # HH0 --> Z1SS Z2SS 1.72622059E-03 2 25 25 # HH0 --> HL0 HL0 1.53723013E-04 2 2000011 -2000011 # HH0 --> ER- ER+ 1.53636938E-04 2 2000013 -2000013 # HH0 --> MUR- MUR+ 8.74147343E-04 2 1000015 -1000015 # HH0 --> TAU1- TAU1+ 2.89326371E-03 2 1000015 -2000015 # HH0 --> TAU1- TAU2+ 2.89326371E-03 2 2000015 -1000015 # HH0 --> TAU2- TAU1+ 1.80288946E-04 2 1000012 -1000012 # HH0 --> NUEL ANUEL 1.80288946E-04 2 1000014 -1000014 # HH0 --> NUML ANUML 2.25102340E-04 2 1000016 -1000016 # HH0 --> NUTL ANUTL # PDG Width DECAY 36 1.50675058E+00 # HA0 decays # BR NDA ID1 ID2 ID3 ID4 3.38935293E-04 2 13 -13 # HA0 --> MU- MU+ 9.70750600E-02 2 15 -15 # HA0 --> TAU- TAU+ 3.98513954E-03 2 3 -3 # HA0 --> ST SB 6.18119061E-01 2 5 -5 # HA0 --> BT BB 2.26040706E-01 2 6 -6 # HA0 --> TP TB 2.25110300E-04 2 21 21 # HA0 --> GL GL 7.34108919E-03 2 1000022 1000022 # HA0 --> Z1SS Z1SS 4.00663726E-02 2 1000022 1000023 # HA0 --> Z1SS Z2SS 8.80061591E-04 2 25 23 # HA0 --> HL0 Z0 2.96422420E-03 2 1000015 -2000015 # HA0 --> TAU1- TAU2+ 2.96422420E-03 2 2000015 -1000015 # HA0 --> TAU2- TAU1+ # PDG Width DECAY 37 1.30719161E+00 # H+ decays # BR NDA ID1 ID2 ID3 ID4 3.95668816E-04 2 14 -13 # H+ --> NUM MU+ 1.13324240E-01 2 16 -15 # H+ --> NUT TAU+ 1.05525833E-05 2 2 -1 # H+ --> UP DB 4.26855963E-03 2 4 -3 # H+ --> CH SB 8.14710736E-01 2 6 -5 # H+ --> TP BB 5.81404492E-02 2 1000024 1000022 # H+ --> W1SS+ Z1SS 1.05597661E-03 2 25 24 # H+ --> HL0 W+ 1.52381879E-04 2 -1000011 1000012 # H+ --> EL+ NUEL 1.52355366E-04 2 -1000013 1000014 # H+ --> MUL+ NUML 7.73605797E-03 2 -1000015 1000016 # H+ --> TAU1+ NUTL 5.30152211E-05 2 -2000015 1000016 # H+ --> TAU2+ NUTL ����������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/GammaGamma.in���������������������������������������������������������������0000644�0001750�0001750�00000005035�11754474774�020106� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator based on LEP parameters # usage: Herwig++ read LEP.in ################################################## ################################################## # Change the electron/position PDFs ################################################## set /Herwig/Particles/e+:PDF /Herwig/Partons/WWPDF set /Herwig/Particles/e-:PDF /Herwig/Partons/WWPDF ################################################## # Selected the hard process ################################################## cd /Herwig/MatrixElements # fermion-antifermion insert SimpleEE:MatrixElements 0 /Herwig/MatrixElements/MEgg2ff # W+W- #insert SimpleEE:MatrixElements 0 /Herwig/MatrixElements/MEgg2WW ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LEPGenerator:NumberOfEvents 100000000 set LEPGenerator:RandomNumberGenerator:Seed 31122001 set LEPGenerator:PrintEvent 10 set LEPGenerator:MaxErrors 10000 ################################################## # LEP physics parameters (override defaults) ################################################## set LEPGenerator:EventHandler:LuminosityFunction:Energy 500. set LEPGenerator:EventHandler:CascadeHandler:MPIHandler NULL cd /Herwig/Generators ################################################## # Useful analysis handlers for HepMC related output ################################################## # Schematic overview of an event (requires --with-hepmc to be set at configure time # and the graphviz program 'dot' to produce a plot) # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/Plot # A HepMC dump file (requires --with-hepmc to be set at configure time) # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile # set /Herwig/Analysis/HepMCFile:PrintEvent 100 # set /Herwig/Analysis/HepMCFile:Format GenEvent # set /Herwig/Analysis/HepMCFile:Units GeV_mm ################################################### # Save run for later usage with 'Herwig++ run' ################################################## saverun GammaGamma LEPGenerator ################################################## # uncomment this section for an example batch run # of two repeats with different parameters # # Note that a separate call of 'Herwig run' # is not required ################################################## # set LEPGenerator:NumberOfEvents 100 # run LEP-Zpole LEPGenerator # set LEPGenerator:EventHandler:LuminosityFunction:Energy 208.0 # run LEP-maxE LEPGenerator ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/MUED.model������������������������������������������������������������������0000644�0001750�0001750�00000033532�11754474774�017350� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Common setup for Universal extra dimensions # # See LHC-MUED.in or ILC-MUED.in for example usage # # This file does not contain anything that # users need to touch. User settings are in # ???-MUED.in # ################################################### # # Create particle content # ################################################### # The UED level-1 particles cd /Herwig/Particles create ThePEG::ParticleData KK1_d_L setup KK1_d_L 5100001 KK1_d_L 500. 0.0 0.0 0.0 -1 3 2 0 create ThePEG::ParticleData KK1_d_Lbar setup KK1_d_Lbar -5100001 KK1_d_Lbar 500. 0.0 0.0 0.0 1 -3 2 0 makeanti KK1_d_L KK1_d_Lbar create ThePEG::ParticleData KK1_u_L setup KK1_u_L 5100002 KK1_u_L 500. 0.0 0.0 0.0 2 3 2 0 create ThePEG::ParticleData KK1_u_Lbar setup KK1_u_Lbar -5100002 KK1_u_Lbar 500. 0.0 0.0 0.0 -2 -3 2 0 makeanti KK1_u_L KK1_u_Lbar create ThePEG::ParticleData KK1_s_L setup KK1_s_L 5100003 KK1_s_L 500. 0.0 0.0 0.0 -1 3 2 0 create ThePEG::ParticleData KK1_s_Lbar setup KK1_s_Lbar -5100003 KK1_s_Lbar 500. 0.0 0.0 0.0 1 -3 2 0 makeanti KK1_s_L KK1_s_Lbar create ThePEG::ParticleData KK1_c_L setup KK1_c_L 5100004 KK1_c_L 500. 0.0 0.0 0.0 2 3 2 0 create ThePEG::ParticleData KK1_c_Lbar setup KK1_c_Lbar -5100004 KK1_c_Lbar 500. 0.0 0.0 0.0 -2 -3 2 0 makeanti KK1_c_L KK1_c_Lbar create ThePEG::ParticleData KK1_b_1 setup KK1_b_1 5100005 KK1_b_1 500. 0.0 0.0 0.0 -1 3 2 0 create ThePEG::ParticleData KK1_b_1bar setup KK1_b_1bar -5100005 KK1_b_1bar 500. 0.0 0.0 0.0 1 -3 2 0 makeanti KK1_b_1 KK1_b_1bar create ThePEG::ParticleData KK1_t_1 setup KK1_t_1 5100006 KK1_t_1 500. 0.0 0.0 0.0 2 3 2 0 create ThePEG::ParticleData KK1_t_1bar setup KK1_t_1bar -5100006 KK1_t_1bar 500. 0.0 0.0 0.0 -2 -3 2 0 makeanti KK1_t_1 KK1_t_1bar # Right create ThePEG::ParticleData KK1_d_R setup KK1_d_R 6100001 KK1_d_R 500. 0.0 0.0 0.0 -1 3 2 0 create ThePEG::ParticleData KK1_d_Rbar setup KK1_d_Rbar -6100001 KK1_d_Rbar 500. 0.0 0.0 0.0 1 -3 2 0 makeanti KK1_d_R KK1_d_Rbar create ThePEG::ParticleData KK1_u_R setup KK1_u_R 6100002 KK1_u_R 500. 0.0 0.0 0.0 2 3 2 0 create ThePEG::ParticleData KK1_u_Rbar setup KK1_u_Rbar -6100002 KK1_u_Rbar 500. 0.0 0.0 0.0 -2 -3 2 0 makeanti KK1_u_R KK1_u_Rbar create ThePEG::ParticleData KK1_s_R setup KK1_s_R 6100003 KK1_s_R 500. 0.0 0.0 0.0 -1 3 2 0 create ThePEG::ParticleData KK1_s_Rbar setup KK1_s_Rbar -6100003 KK1_s_Rbar 500. 0.0 0.0 0.0 1 -3 2 0 makeanti KK1_s_R KK1_s_Rbar create ThePEG::ParticleData KK1_c_R setup KK1_c_R 6100004 KK1_c_R 500. 0.0 0.0 0.0 2 3 2 0 create ThePEG::ParticleData KK1_c_Rbar setup KK1_c_Rbar -6100004 KK1_c_Rbar 500. 0.0 0.0 0.0 -2 -3 2 0 makeanti KK1_c_R KK1_c_Rbar create ThePEG::ParticleData KK1_b_2 setup KK1_b_2 6100005 KK1_b_2 500. 0.0 0.0 0.0 -1 3 2 0 create ThePEG::ParticleData KK1_b_2bar setup KK1_b_2bar -6100005 KK1_b_2bar 500. 0.0 0.0 0.0 1 -3 2 0 makeanti KK1_b_2 KK1_b_2bar create ThePEG::ParticleData KK1_t_2 setup KK1_t_2 6100006 KK1_t_2 500. 0.0 0.0 0.0 2 3 2 0 create ThePEG::ParticleData KK1_t_2bar setup KK1_t_2bar -6100006 KK1_t_2bar 500. 0.0 0.0 0.0 -2 -3 2 0 makeanti KK1_t_2 KK1_t_2bar create ThePEG::ParticleData KK1_e_L- setup KK1_e_L- 5100011 KK1_e_L- 500. 0.0 0.0 0.0 -3 0 2 0 create ThePEG::ParticleData KK1_e_L+ setup KK1_e_L+ -5100011 KK1_e_L+ 500. 0.0 0.0 0.0 3 0 2 0 makeanti KK1_e_L- KK1_e_L+ create ThePEG::ParticleData KK1_nu_eL setup KK1_nu_eL 5100012 KK1_nu_eL 500. 0.0 0.0 0.0 0 0 2 0 create ThePEG::ParticleData KK1_nu_eLbar setup KK1_nu_eLbar -5100012 KK1_nu_eLbar 500. 0.0 0.0 0.0 0 0 2 0 makeanti KK1_nu_eL KK1_nu_eLbar create ThePEG::ParticleData KK1_mu_L- setup KK1_mu_L- 5100013 KK1_mu_L- 500. 0.0 0.0 0.0 -3 0 2 0 create ThePEG::ParticleData KK1_mu_L+ setup KK1_mu_L+ -5100013 KK1_mu_L+ 500. 0.0 0.0 0.0 3 0 2 0 makeanti KK1_mu_L- KK1_mu_L+ create ThePEG::ParticleData KK1_nu_muL setup KK1_nu_muL 5100014 KK1_nu_muL 500. 0.0 0.0 0.0 0 0 2 0 create ThePEG::ParticleData KK1_nu_muLbar setup KK1_nu_muLbar -5100014 KK1_nu_muLbar 500. 0.0 0.0 0.0 0 0 2 0 makeanti KK1_nu_muL KK1_nu_muLbar create ThePEG::ParticleData KK1_tau_1- setup KK1_tau_1- 5100015 KK1_tau_1- 500. 0.0 0.0 0.0 -3 0 2 0 create ThePEG::ParticleData KK1_tau_1+ setup KK1_tau_1+ -5100015 KK1_tau_1+ 500. 0.0 0.0 0.0 3 0 2 0 makeanti KK1_tau_1- KK1_tau_1+ create ThePEG::ParticleData KK1_nu_tauL setup KK1_nu_tauL 5100016 KK1_nu_tauL 500. 0.0 0.0 0.0 0 0 2 0 create ThePEG::ParticleData KK1_nu_tauLbar setup KK1_nu_tauLbar -5100016 KK1_nu_tauLbar 500. 0.0 0.0 0.0 0 0 2 0 makeanti KK1_nu_tauL KK1_nu_tauLbar create ThePEG::ParticleData KK1_e_R- setup KK1_e_R- 6100011 KK1_e_R- 500. 0.0 0.0 0.0 -3 0 2 0 create ThePEG::ParticleData KK1_e_R+ setup KK1_e_R+ -6100011 KK1_e_R+ 500. 0.0 0.0 0.0 3 0 2 0 makeanti KK1_e_R- KK1_e_R+ create ThePEG::ParticleData KK1_mu_R- setup KK1_mu_R- 6100013 KK1_mu_R- 500. 0.0 0.0 0.0 -3 0 2 0 create ThePEG::ParticleData KK1_mu_R+ setup KK1_mu_R+ -6100013 KK1_mu_R+ 500. 0.0 0.0 0.0 3 0 2 0 makeanti KK1_mu_R- KK1_mu_R+ create ThePEG::ParticleData KK1_tau_2- setup KK1_tau_2- 6100015 KK1_tau_2- 500. 0.0 0.0 0.0 -3 0 2 0 create ThePEG::ParticleData KK1_tau_2+ setup KK1_tau_2+ -6100015 KK1_tau_2+ 500. 0.0 0.0 0.0 3 0 2 0 makeanti KK1_tau_2- KK1_tau_2+ create ThePEG::ParticleData KK1_g setup KK1_g 5100021 KK1_g 500. 0.0 0.0 0.0 0 8 3 0 create ThePEG::ParticleData KK1_gamma setup KK1_gamma 5100022 KK1_gamma 500. 0.0 0.0 0.0 0 0 3 0 create ThePEG::ParticleData KK1_Z0 setup KK1_Z0 5100023 KK1_Z0 500. 0.0 0.0 0.0 0 0 3 0 create ThePEG::ParticleData KK1_W+ setup KK1_W+ 5100024 KK1_W+ 500. 0.0 0.0 0.0 3 0 3 0 create ThePEG::ParticleData KK1_W- setup KK1_W- -5100024 KK1_W- 500. 0.0 0.0 0.0 -3 0 3 0 makeanti KK1_W+ KK1_W- create ThePEG::ParticleData KK1_h0 setup KK1_h0 5100025 KK1_h0 500.0 0.0 0.0 0.0 0 0 1 0 create ThePEG::ParticleData KK1_A0 setup KK1_A0 5100036 KK1_A0 500.0 0.0 0.0 0.0 0 0 1 0 create ThePEG::ParticleData KK1_H+ setup KK1_H+ 5100037 KK1_H+ 500.0 0.0 0.0 0.0 3 0 1 0 create ThePEG::ParticleData KK1_H- setup KK1_H- -5100037 KK1_H- 500.0 0.0 0.0 0.0 -3 0 1 0 makeanti KK1_H+ KK1_H- ################################################### # # Main directory and model object # ################################################### mkdir /Herwig/NewPhysics/MUED cd /Herwig/NewPhysics/MUED create Herwig::UEDBase Model HwUED.so # SM couplings set Model:QCD/RunningAlphaS /Herwig/AlphaS set Model:EW/RunningAlphaEM /Herwig/AlphaEM set Model:EW/CKM /Herwig/CKM set Model:RunningMass /Herwig/RunningMass ################################################### # # Vertices # ################################################### mkdir /Herwig/Vertices/MUED cd /Herwig/Vertices/MUED # create MUED vertices library HwUED.so create Herwig::UEDF1F1Z0Vertex UED_F1F1Z create Herwig::UEDF1F1P0Vertex UED_F1F1P create Herwig::UEDF1F1W0Vertex UED_F1F1W create Herwig::UEDF1F1G0Vertex UED_F1F1G0 create Herwig::UEDF1F0G1Vertex UED_F1F0G1 create Herwig::UEDF1F0W1Vertex UED_F1F0W1 create Herwig::UEDF1F0H1Vertex UED_F1F0H1 create Herwig::UEDG1G1G0Vertex UED_G1G1G0 create Herwig::UEDG0G0G1G1Vertex UED_G0G0G1G1 create Herwig::UEDP0H1H1Vertex UED_P0H1H1 create Herwig::UEDZ0H1H1Vertex UED_Z0H1H1 create Herwig::UEDW0A1H1Vertex UED_W0A1H1 create Herwig::UEDZ0A1h1Vertex UED_Z0A1h1 create Herwig::UEDW0W1W1Vertex UED_W0W1W1 # SM vertices cd /Herwig/NewPhysics/MUED 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/HPP /Herwig/Vertices/HPPVertex # MUED Feynman rules set Model:Vertex/F1F1Z /Herwig/Vertices/MUED/UED_F1F1Z set Model:Vertex/F1F1P /Herwig/Vertices/MUED/UED_F1F1P set Model:Vertex/F1F1W /Herwig/Vertices/MUED/UED_F1F1W set Model:Vertex/F1F1G0 /Herwig/Vertices/MUED/UED_F1F1G0 set Model:Vertex/F1F0G1 /Herwig/Vertices/MUED/UED_F1F0G1 set Model:Vertex/F1F0W1 /Herwig/Vertices/MUED/UED_F1F0W1 set Model:Vertex/F1F0H1 /Herwig/Vertices/MUED/UED_F1F0H1 set Model:Vertex/G1G1G0 /Herwig/Vertices/MUED/UED_G1G1G0 set Model:Vertex/G0G0G1G1 /Herwig/Vertices/MUED/UED_G0G0G1G1 set Model:Vertex/P0H1H1 /Herwig/Vertices/MUED/UED_P0H1H1 set Model:Vertex/Z0H1H1 /Herwig/Vertices/MUED/UED_Z0H1H1 set Model:Vertex/W0A1H1 /Herwig/Vertices/MUED/UED_W0A1H1 set Model:Vertex/Z0A1h1 /Herwig/Vertices/MUED/UED_Z0A1h1 set Model:Vertex/W0W1W1 /Herwig/Vertices/MUED/UED_W0W1W1 ################################################### # # Set up spin correlation Decayers and remove SM # Higgs related things # ################################################### cd /Herwig/Particles set h0:Width_generator NULL set h0:Mass_generator NULL set h0/h0->b,bbar;:OnOff Off set h0/h0->b,bbar;:BranchingRatio 0.0 set h0/h0->W+,W-;:OnOff Off set h0/h0->W+,W-;:BranchingRatio 0.0 set h0/h0->tau-,tau+;:OnOff Off set h0/h0->tau-,tau+;:BranchingRatio 0.0 set h0/h0->g,g;:OnOff Off set h0/h0->g,g;:BranchingRatio 0.0 set h0/h0->c,cbar;:OnOff Off set h0/h0->c,cbar;:BranchingRatio 0.0 set h0/h0->Z0,Z0;:OnOff Off set h0/h0->Z0,Z0;:BranchingRatio 0.0 set h0/h0->gamma,gamma;:OnOff Off set h0/h0->gamma,gamma;:BranchingRatio 0.0 set h0/h0->mu-,mu+;:OnOff Off set h0/h0->mu-,mu+;:BranchingRatio 0.0 set h0/h0->t,tbar;:OnOff Off set h0/h0->t,tbar;:BranchingRatio 0.0 cd /Herwig/NewPhysics set TwoBodyDC:CreateDecayModes Yes set ThreeBodyDC:CreateDecayModes Yes insert NewModel:DecayParticles 0 /Herwig/Particles/KK1_d_L insert NewModel:DecayParticles 1 /Herwig/Particles/KK1_u_L insert NewModel:DecayParticles 2 /Herwig/Particles/KK1_s_L insert NewModel:DecayParticles 3 /Herwig/Particles/KK1_c_L insert NewModel:DecayParticles 4 /Herwig/Particles/KK1_b_1 insert NewModel:DecayParticles 5 /Herwig/Particles/KK1_t_1 insert NewModel:DecayParticles 6 /Herwig/Particles/KK1_d_R insert NewModel:DecayParticles 7 /Herwig/Particles/KK1_u_R insert NewModel:DecayParticles 8 /Herwig/Particles/KK1_s_R insert NewModel:DecayParticles 9 /Herwig/Particles/KK1_c_R insert NewModel:DecayParticles 10 /Herwig/Particles/KK1_b_2 insert NewModel:DecayParticles 11 /Herwig/Particles/KK1_t_2 insert NewModel:DecayParticles 12 /Herwig/Particles/KK1_e_L- insert NewModel:DecayParticles 13 /Herwig/Particles/KK1_nu_eL insert NewModel:DecayParticles 14 /Herwig/Particles/KK1_mu_L- insert NewModel:DecayParticles 15 /Herwig/Particles/KK1_nu_muL insert NewModel:DecayParticles 16 /Herwig/Particles/KK1_tau_1- insert NewModel:DecayParticles 17 /Herwig/Particles/KK1_nu_tauL insert NewModel:DecayParticles 18 /Herwig/Particles/KK1_e_R- insert NewModel:DecayParticles 19 /Herwig/Particles/KK1_mu_R- insert NewModel:DecayParticles 20 /Herwig/Particles/KK1_tau_2- insert NewModel:DecayParticles 21 /Herwig/Particles/KK1_g insert NewModel:DecayParticles 22 /Herwig/Particles/KK1_Z0 insert NewModel:DecayParticles 23 /Herwig/Particles/KK1_W+ insert NewModel:DecayParticles 24 /Herwig/Particles/h0 insert NewModel:DecayParticles 25 /Herwig/Particles/KK1_h0 insert NewModel:DecayParticles 26 /Herwig/Particles/KK1_A0 insert NewModel:DecayParticles 27 /Herwig/Particles/KK1_H+ ################################################### # # Shower stuff for coloured sparticles # ################################################### cd /Herwig/Shower insert ShowerHandler:DecayInShower 0 5100001 insert ShowerHandler:DecayInShower 1 5100002 insert ShowerHandler:DecayInShower 2 5100003 insert ShowerHandler:DecayInShower 3 5100004 insert ShowerHandler:DecayInShower 4 5100005 insert ShowerHandler:DecayInShower 5 5100006 insert ShowerHandler:DecayInShower 6 5100011 insert ShowerHandler:DecayInShower 7 5100012 insert ShowerHandler:DecayInShower 8 5100013 insert ShowerHandler:DecayInShower 9 5100014 insert ShowerHandler:DecayInShower 10 5100015 insert ShowerHandler:DecayInShower 11 5100016 insert ShowerHandler:DecayInShower 12 6100001 insert ShowerHandler:DecayInShower 13 6100002 insert ShowerHandler:DecayInShower 14 6100003 insert ShowerHandler:DecayInShower 15 6100004 insert ShowerHandler:DecayInShower 16 6100005 insert ShowerHandler:DecayInShower 17 6100006 insert ShowerHandler:DecayInShower 18 6100011 insert ShowerHandler:DecayInShower 19 6100013 insert ShowerHandler:DecayInShower 20 6100015 insert ShowerHandler:DecayInShower 21 5100021 insert ShowerHandler:DecayInShower 22 5100022 insert ShowerHandler:DecayInShower 23 5100023 insert ShowerHandler:DecayInShower 24 5100024 insert ShowerHandler:DecayInShower 25 5100025 insert ShowerHandler:DecayInShower 26 5100036 insert ShowerHandler:DecayInShower 27 5100037 do SplittingGenerator:AddFinalSplitting KK1_u_L->KK1_u_L,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting KK1_d_L->KK1_d_L,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting KK1_s_L->KK1_s_L,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting KK1_c_L->KK1_c_L,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting KK1_b_1->KK1_b_1,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting KK1_t_1->KK1_t_1,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting KK1_u_R->KK1_u_R,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting KK1_d_R->KK1_d_R,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting KK1_s_R->KK1_s_R,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting KK1_c_R->KK1_c_R,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting KK1_b_2->KK1_b_2,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting KK1_t_2->KK1_t_2,g; QtoQGSudakov ################################################### # Set up the model framework ################################################### cd /Herwig/NewPhysics set MUED/Model:ModelGenerator NewModel ################################################### # # Choose MSSM over SM # ################################################### cd /Herwig/Generators set LEPGenerator:StandardModelParameters /Herwig/NewPhysics/MUED/Model set LHCGenerator:StandardModelParameters /Herwig/NewPhysics/MUED/Model ����������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LHC-TRP.in������������������������������������������������������������������0000644�0001750�0001750�00000004567�11756407456�017176� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator based on LHC parameters # usage: Herwig++ read LHC.in ################################################## cd /Herwig/Particles create ThePEG::ParticleData graviton setup graviton 39 graviton 0.0 0.0 0.0 0.0 0 0 0 1 cd /Herwig/EventHandlers #set LHCHandler:CascadeHandler NULL #set LHCHandler:HadronizationHandler NULL #set LHCHandler:DecayHandler NULL ################################################## # Technical parameters for this run ################################################## cd /Herwig cd /Herwig/Generators set LHCGenerator:NumberOfEvents 1000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 ################################################## # LHC physics parameters (override defaults here) ################################################## set LHCGenerator:EventHandler:LuminosityFunction:Energy 8000.0 # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV cd /Herwig/Cuts #set JetKtCut:MinKT 100.0*GeV set QCDCuts:MHatMin 4500*GeV ################################################## # Matrix Elements for hadron-hadron collisions ################################################## cd /Herwig/MatrixElements/ create Herwig::METRP2to2 METransplanck HwTransplanck.so insert SimpleQCD:MatrixElements[0] METransplanck #set METransplanck:Process 6 set METransplanck:NumberExtraDimensions 6 set METransplanck:PlanckMass 1500 cd /Herwig/Generators ################################################## # Useful analysis handlers for HepMC related output ################################################## # Schematic overview of an event (requires --with-hepmc to be set at configure time # and the graphviz program 'dot' to produce a plot) # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/Plot # A HepMC dump file (requires --with-hepmc to be set at configure time) # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile # set /Herwig/Analysis/HepMCFile:PrintEvent 100 # set /Herwig/Analysis/HepMCFile:Format GenEvent # set /Herwig/Analysis/HepMCFile:Units GeV_mm ################################################## # Save run for later usage with 'Herwig++ run' ################################################## saverun LHC-TRP LHCGenerator �����������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/ILC-MUED.in�����������������������������������������������������������������0000644�0001750�0001750�00000003654�11754474774�017265� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator based for MUED in lepton collisions # # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read MUED.model cd /Herwig/NewPhysics ################################################## # # This section contains the user defined settings # ################################################## # The UED parameters (these are the default) set MUED/Model:InverseRadius 300.*GeV set MUED/Model:LambdaR 20 # --- Hard Process ---- # The particle name can be found in the relevant model file # by searching for its PDG code and noting the text # '/Herwig/Particles/###' where the hashes denote the name # Switch to decide whether to include EW diagrams in the # hard process (On by default) set HPConstructor:IncludeEW Yes # Example hard process: Incoming leptons, outgoing kk bosons and leptons insert HPConstructor:Incoming 0 /Herwig/Particles/e+ insert HPConstructor:Incoming 1 /Herwig/Particles/e- insert HPConstructor:Outgoing 0 /Herwig/Particles/KK1_Z0 insert HPConstructor:Outgoing 1 /Herwig/Particles/KK1_W+ insert HPConstructor:Outgoing 2 /Herwig/Particles/KK1_e_L- insert HPConstructor:Outgoing 3 /Herwig/Particles/KK1_e_R- # Other parameters for run cd /Herwig/Generators set LEPGenerator:NumberOfEvents 100000000 set LEPGenerator:RandomNumberGenerator:Seed 31122001 set LEPGenerator:PrintEvent 10 set LEPGenerator:MaxErrors 10000 set LEPGenerator:EventHandler:LuminosityFunction:Energy 800.0 set LEPGenerator:EventHandler:CascadeHandler:MPIHandler NULL ################################################## # Save run for later usage with 'Herwig++ run' ################################################## saverun ILC-MUED LEPGenerator ������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LHC-ZP.in�������������������������������������������������������������������0000644�0001750�0001750�00000011235�11754474774�017055� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator for the Leptoquark model # in hadron collisions # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read Zprime.model set /Herwig/Particles/t:Synchronized Not_synchronized set /Herwig/Particles/tbar:Synchronized Not_synchronized #set /Herwig/Particles/t/t->b,bbar,c;:OnOff On #set /Herwig/Particles/t/t->b,c,dbar;:OnOff On #set /Herwig/Particles/t/t->b,c,sbar;:OnOff On #set /Herwig/Particles/t/t->b,sbar,u;:OnOff On #set /Herwig/Particles/t/t->b,u,dbar;:OnOff On #set /Herwig/Particles/t/t->nu_e,e+,b;:OnOff Off #set /Herwig/Particles/t/t->nu_mu,mu+,b;:OnOff Off #set /Herwig/Particles/t/t->nu_tau,tau+,b;:OnOff Off #set /Herwig/Particles/tbar/tbar->b,bbar,cbar;:OnOff Off #set /Herwig/Particles/tbar/tbar->bbar,cbar,d;:OnOff Off #set /Herwig/Particles/tbar/tbar->bbar,cbar,s;:OnOff Off #set /Herwig/Particles/tbar/tbar->bbar,s,ubar;:OnOff Off #set /Herwig/Particles/tbar/tbar->bbar,ubar,d;:OnOff Off #set /Herwig/Particles/tbar/tbar->nu_ebar,e-,bbar;:OnOff On #set /Herwig/Particles/tbar/tbar->nu_mubar,mu-,bbar;:OnOff On #set /Herwig/Particles/tbar/tbar->nu_taubar,tau-,bbar;:OnOff Off set /Herwig/Particles/t/t->b,bbar,c;:OnOff Off set /Herwig/Particles/t/t->b,c,dbar;:OnOff Off set /Herwig/Particles/t/t->b,c,sbar;:OnOff Off set /Herwig/Particles/t/t->b,sbar,u;:OnOff Off set /Herwig/Particles/t/t->b,u,dbar;:OnOff Off set /Herwig/Particles/t/t->nu_e,e+,b;:OnOff On set /Herwig/Particles/t/t->nu_mu,mu+,b;:OnOff On set /Herwig/Particles/t/t->nu_tau,tau+,b;:OnOff Off set /Herwig/Particles/tbar/tbar->b,bbar,cbar;:OnOff On set /Herwig/Particles/tbar/tbar->bbar,cbar,d;:OnOff On set /Herwig/Particles/tbar/tbar->bbar,cbar,s;:OnOff On set /Herwig/Particles/tbar/tbar->bbar,s,ubar;:OnOff On set /Herwig/Particles/tbar/tbar->bbar,ubar,d;:OnOff On set /Herwig/Particles/tbar/tbar->nu_ebar,e-,bbar;:OnOff Off set /Herwig/Particles/tbar/tbar->nu_mubar,mu-,bbar;:OnOff Off set /Herwig/Particles/tbar/tbar->nu_taubar,tau-,bbar;:OnOff Off cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 14000.0 #set LHCGenerator:EventHandler:BeamB /Herwig/Particles/pbar- ################################################## # # This section contains the user defined settings # ################################################## # Example hard process: Incoming proton, outgoing leptoquarks cd /Herwig/NewPhysics set HPConstructor:Processes Exclusive insert HPConstructor:Incoming 0 /Herwig/Particles/u insert HPConstructor:Incoming 1 /Herwig/Particles/ubar insert HPConstructor:Incoming 2 /Herwig/Particles/d insert HPConstructor:Incoming 3 /Herwig/Particles/dbar insert HPConstructor:Incoming 4 /Herwig/Particles/s insert HPConstructor:Incoming 5 /Herwig/Particles/sbar insert HPConstructor:Incoming 6 /Herwig/Particles/c insert HPConstructor:Incoming 7 /Herwig/Particles/cbar insert HPConstructor:Incoming 8 /Herwig/Particles/g # Comment out the following line if Axigluon model is selected insert /Herwig/NewPhysics/HPConstructor:Excluded 0 /Herwig/Particles/g insert /Herwig/NewPhysics/HPConstructor:Excluded 1 /Herwig/Particles/t insert /Herwig/NewPhysics/HPConstructor:Excluded 2 /Herwig/Particles/tbar insert HPConstructor:Outgoing 0 /Herwig/Particles/t insert HPConstructor:Outgoing 1 /Herwig/Particles/tbar # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV cd /Herwig/Analysis set Basics:CheckQuark false # Cuts cd /Herwig/Cuts set JetKtCut:MinKT 0.0*GeV set QCDCuts:MHatMax 14000.0*GeV set EECuts:MHatMin 0.0*GeV set PhotonKtCut:MinKT 0.0*GeV set PhotonKtCut:MinEta -10. set PhotonKtCut:MaxEta 10. set MassCut:MinM 0.*GeV cd /Herwig/Shower set SplittingGenerator:ISR Yes set SplittingGenerator:FSR Yes cd /Herwig/EventHandlers #set LHCHandler:CascadeHandler NULL #set LHCHandler:HadronizationHandler NULL #set LHCHandler:DecayHandler NULL # Other parameters for run cd /Herwig/Generators # Turn off MPI set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 1000 set LHCGenerator:MaxErrors 10000 insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile set /Herwig/Analysis/HepMCFile:PrintEvent 10000 set /Herwig/Analysis/HepMCFile:Format GenEvent set /Herwig/Analysis/HepMCFile:Units GeV_mm saverun LHC-ZP LHCGenerator �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LEP-Matchbox.in�������������������������������������������������������������0000644�0001750�0001750�00000005707�11754474774�020312� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������read Matchbox.in ################################################################################ # setup the sampler ################################################################################ set /Herwig/EventHandlers/LEPHandler:Sampler /Herwig/MatrixElements/Matchbox/Samplers/Sampler ################################################################################ # setup the shower # # use -LO.in or -NLO.in for LO/NLO simulations, respectively. # ################################################################################ read DipoleShower.in # read DipoleShowerParameters-LO.in # read DipoleShowerParameters-NLO.in ################################################################################ # setup matrix element and matching # # uncomment the desired calculation # ################################################################################ cd /Herwig/MatrixElements/Matchbox/Builtin cp /Herwig/MatrixElements/Matchbox/Utility/MECorrectionHandler MECorrectionHandler ################################################################################ # leading order ################################################################################ # insert /Herwig/Generators/LEPGenerator:EventHandler:SubProcessHandlers[0] MEllbar2JetJetLO ################################################################################ # MC@NLO-type next-to-leading order ################################################################################ # insert /Herwig/Generators/LEPGenerator:EventHandler:SubProcessHandlers[0] MEllbar2JetJetNLO # uncomment to run plain NLO calculation (no consistent analysis yet) # set MEllbar2JetJetNLO:SubProcessGroups On ################################################################################ # POWHEG-type next-to-leading order ################################################################################ # insert /Herwig/Generators/LEPGenerator:EventHandler:SubProcessHandlers[0] MEllbar2JetJetNLOInclusive # insert /Herwig/Generators/LEPGenerator:EventHandler:PostSubProcessHandlers[0] MECorrectionHandler ################################################################################ # setup generator and analysis ################################################################################ cd /Herwig/Generators set LEPGenerator:EventHandler:CascadeHandler /Herwig/DipoleShower/DipoleShowerHandler set LEPGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LEPGenerator:NumberOfEvents 100000000 set LEPGenerator:RandomNumberGenerator:Seed 31122001 set LEPGenerator:DebugLevel 1 set LEPGenerator:PrintEvent 10 set LEPGenerator:MaxErrors 10000 set LEPGenerator:EventHandler:LuminosityFunction:Energy 91.2 cd /Herwig/Generators #insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile set /Herwig/Analysis/HepMCFile:PrintEvent 1000000 set /Herwig/Analysis/HepMCFile:Format GenEvent set /Herwig/Analysis/HepMCFile:Units GeV_mm set /Herwig/Analysis/HepMCFile:Filename events.fifo saverun LEP LEPGenerator ���������������������������������������������������������herwig++-2.6.0.orig/src/TVT.in����������������������������������������������������������������������0000644�0001750�0001750�00000011355�11754474774�016600� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator based on Tevatron parameters # usage: Herwig++ read TVT.in # # Since most parameters are identical to LHC, # we use the default LHCGenerator and adapt only # for the differences ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 100000 ################################################## # Tevatron physics parameters (override defaults) ################################################## set LHCGenerator:EventHandler:BeamB /Herwig/Particles/pbar- ######################## ## sqrt(s) = 1800 GeV ## ######################## #set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 - 1960.0 set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 ################################################## # Matrix Elements for hadron-hadron collisions # (by default only gamma/Z switched on) ################################################## cd /Herwig/MatrixElements # # Electroweak boson W/Z processes # # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] MEqq2gZ2ff # # Drell-Yan W # insert SimpleQCD:MatrixElements[0] MEqq2W2ff # # W+jet # insert SimpleQCD:MatrixElements[0] MEWJet # # Z+jet # insert SimpleQCD:MatrixElements[0] MEZJet # # WW/WZ/ZZ # insert SimpleQCD:MatrixElements[0] MEPP2VV # # Wgamma/Zgamma # insert SimpleQCD:MatrixElements[0] MEPP2VGamma # # QCD and gamma processes # # QCD 2-2 scattering # insert SimpleQCD:MatrixElements[0] MEQCD2to2 # # top-antitop production # insert SimpleQCD:MatrixElements[0] MEHeavyQuark # # gamma+jet # insert SimpleQCD:MatrixElements[0] MEGammaJet # # gamma-gamma # insert SimpleQCD:MatrixElements[0] MEGammaGamma # # Higgs Processes # # # gg/qqbar -> Higgs (recommend including q qbar->Hg as not in ME correction) # insert SimpleQCD:MatrixElements[0] MEHiggs # insert SimpleQCD:MatrixElements[0] MEHiggsJet # set MEHiggsJet:Process qqbar # set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV # # higgs+jet # insert SimpleQCD:MatrixElements[0] MEHiggsJet # # higgs + W (N.B. if considering all W decay modes useful to set ) # (jet pT cut to zero so no cut on W decay products ) # insert SimpleQCD:MatrixElements[0] MEPP2WH # set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV # # higgs + Z (N.B. if considering all Z decay modes useful to set ) # (jet pT cut to zero so no cut on Z decay products ) # insert SimpleQCD:MatrixElements[0] MEPP2ZH # set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV # # VBF Higgs # insert SimpleQCD:MatrixElements[0] MEPP2HiggsVBF # # t tbar Higgs # insert SimpleQCD:MatrixElements[0] MEPP2ttbarH # # b bbar Higgs # insert SimpleQCD:MatrixElements[0] MEPP2bbbarH cd /Herwig/Generators ################################################## # Useful analysis handlers for hadron-hadron physics ################################################## # analysis of W/Z events # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/DrellYan # analysis of top-antitop events # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/TTbar # analysis of gamma+jet events # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/GammaJet # analysis of gamma-gamma events # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/GammaGamma # analysis of higgs-jet events # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HiggsJet ################################################## # Useful analysis handlers for HepMC related output ################################################## # Schematic overview of an event (requires --with-hepmc to be set at configure time # and the graphviz program 'dot' to produce a plot) # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/Plot # A HepMC dump file (requires --with-hepmc to be set at configure time) # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile # set /Herwig/Analysis/HepMCFile:PrintEvent 100 # set /Herwig/Analysis/HepMCFile:Format GenEvent # set /Herwig/Analysis/HepMCFile:Units GeV_mm ################################################## # Save run for later usage with 'Herwig++ run' ################################################## saverun TVT LHCGenerator ################################################## # uncomment this section for an example batch run # of two repeats with different parameters # # Note that a separate call of 'Herwig run' # is not required ################################################## # set LHCGenerator:NumberOfEvents 10 # run TVT-1960 LHCGenerator # # set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 # run TVT-1800 LHCGenerator �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/RS.model��������������������������������������������������������������������0000644�0001750�0001750�00000006325�11754474774�017142� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Common setup for Randall-Sundrum models # # See LHC-RS.in or ILC-RS.in for example usage # # This file does not contain anything that # users need to touch. User settings are in # ???-RS.in # ################################################### # # Particle Data object for the Gravition # ################################################### cd /Herwig/Particles create /ThePEG/ParticleData Graviton setup Graviton 39 Graviton 500.0 0.0 0.0 0.0 0 0 5 0 ################################################### # # Main directory and model object # ################################################### mkdir /Herwig/NewPhysics/RS cd /Herwig/NewPhysics/RS create Herwig::RSModel Model HwRSModel.so # SM couplings set Model:QCD/RunningAlphaS /Herwig/AlphaS set Model:EW/RunningAlphaEM /Herwig/AlphaEM set Model:EW/CKM /Herwig/CKM set Model:RunningMass /Herwig/RunningMass ################################################### # # Vertices # ################################################### # create RS model vertices mkdir /Herwig/Vertices/RS cd /Herwig/Vertices/RS library HwRSModel.so create Herwig::RSModelFFGRVertex RS_FFGRVertex create Herwig::RSModelFFGGRVertex RS_FFGGRVertex create Herwig::RSModelFFWGRVertex RS_FFWGRVertex create Herwig::RSModelSSGRVertex RS_SSGRVertex create Herwig::RSModelVVGRVertex RS_VVGRVertex create Herwig::RSModelGGGGRVertex RS_GGGGRVertex create Herwig::RSModelWWWGRVertex RS_WWWGRVertex cd /Herwig/NewPhysics/RS # 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/HPP /Herwig/Vertices/HPPVertex # RS model vertices set Model:Vertex/FFGR /Herwig/Vertices/RS/RS_FFGRVertex set Model:Vertex/FFGGR /Herwig/Vertices/RS/RS_FFGGRVertex set Model:Vertex/FFWGR /Herwig/Vertices/RS/RS_FFWGRVertex set Model:Vertex/SSGR /Herwig/Vertices/RS/RS_SSGRVertex set Model:Vertex/VVGR /Herwig/Vertices/RS/RS_VVGRVertex set Model:Vertex/GGGGR /Herwig/Vertices/RS/RS_GGGGRVertex set Model:Vertex/WWWGR /Herwig/Vertices/RS/RS_WWWGRVertex ################################################### # # Set up spin correlation Decayers # ################################################### cd /Herwig/NewPhysics set TwoBodyDC:CreateDecayModes Yes set ThreeBodyDC:CreateDecayModes No insert NewModel:DecayParticles 0 /Herwig/Particles/Graviton ################################################### # Set up the model framework ################################################### set RS/Model:ModelGenerator NewModel ################################################### # # Choose RS over SM # ################################################### cd /Herwig/Generators set LEPGenerator:StandardModelParameters /Herwig/NewPhysics/RS/Model set LHCGenerator:StandardModelParameters /Herwig/NewPhysics/RS/Model �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/Sextet.model����������������������������������������������������������������0000644�0001750�0001750�00000017762�11754474774�020101� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Common setup for Sextet models # # See LHC-Sextet.in for example usage # # This file does not contain anything that # users need to touch. User settings are in # LHC-Sextet.in ###################################################x library HwSextetModel.so ################################################### # # Particle Data objects for the diquarks # ################################################### cd /Herwig/Particles # Scalar DQ Singlet Y=4/3 create /ThePEG/ParticleData DQPhi_1'' setup DQPhi_1'' 6000221 DQPhi_1'' 500.0 0.0 0.0 0.0 4 6 1 0 create /ThePEG/ParticleData DQPhi_1''bar setup DQPhi_1''bar -6000221 DQPhi_1''bar 500.0 0.0 0.0 0.0 -4 -6 1 0 makeanti DQPhi_1''bar DQPhi_1'' # Scalar DQ Singlet Y=1/3 create /ThePEG/ParticleData DQPhi_1 setup DQPhi_1 6000211 DQPhi_1 500.0 0.0 0.0 0.0 1 6 1 0 create /ThePEG/ParticleData DQPhi_1bar setup DQPhi_1bar -6000211 DQPhi_1bar 500.0 0.0 0.0 0.0 -1 -6 1 0 makeanti DQPhi_1bar DQPhi_1 # Scalar DQ Singlet Y=-2/3 create /ThePEG/ParticleData DQPhi_1' setup DQPhi_1' 6000111 DQPhi_1' 500.0 0.0 0.0 0.0 -2 6 1 0 create /ThePEG/ParticleData DQPhi_1'bar setup DQPhi_1'bar -6000111 DQPhi_1'bar 500.0 0.0 0.0 0.0 2 -6 1 0 makeanti DQPhi_1'bar DQPhi_1' # Scalar DQ Triplet t_3=1 Y=1/3 create /ThePEG/ParticleData DQPhi_3+ setup DQPhi_3+ 6001221 DQPhi_3+ 500.0 0.0 0.0 0.0 4 6 1 0 create /ThePEG/ParticleData DQPhi_3+bar setup DQPhi_3+bar -6001221 DQPhi_3+bar 500.0 0.0 0.0 0.0 -4 -6 1 0 makeanti DQPhi_3+bar DQPhi_3+ # Scalar DQ Triplet t_3=0 Y=1/3 create /ThePEG/ParticleData DQPhi_30 setup DQPhi_30 6001211 DQPhi_30 500.0 0.0 0.0 0.0 1 6 1 0 create /ThePEG/ParticleData DQPhi_30bar setup DQPhi_30bar -6001211 DQPhi_30bar 500.0 0.0 0.0 0.0 -1 -6 1 0 makeanti DQPhi_30bar DQPhi_30 # Scalar DQ Triplet t_3=-1 Y=1/3 create /ThePEG/ParticleData DQPhi_3- setup DQPhi_3- 6001111 DQPhi_3- 500.0 0.0 0.0 0.0 -2 6 1 0 create /ThePEG/ParticleData DQPhi_3-bar setup DQPhi_3-bar -6001111 DQPhi_3-bar 500.0 0.0 0.0 0.0 2 -6 1 0 makeanti DQPhi_3-bar DQPhi_3- # Vector DQ Doublet t_3=1/2 Y=-1/6 create /ThePEG/ParticleData DQV_1+ setup DQV_1+ 6000123 DQV_1+ 500.0 0.0 0.0 0.0 1 6 3 0 create /ThePEG/ParticleData DQV_1+bar setup DQV_1+bar -6000123 DQV_1+bar 500.0 0.0 0.0 0.0 -1 -6 3 0 makeanti DQV_1+bar DQV_1+ # Vector DQ Doublet t_3=-1/2 Y=-1/6 create /ThePEG/ParticleData DQV_1- setup DQV_1- 6000113 DQV_1- 500.0 0.0 0.0 0.0 -2 6 3 0 create /ThePEG/ParticleData DQV_1-bar setup DQV_1-bar -6000113 DQV_1-bar 500.0 0.0 0.0 0.0 2 -6 3 0 makeanti DQV_1-bar DQV_1- # Vector DQ Doublet t_3=1/2 Y=-5/6 create /ThePEG/ParticleData DQV_2+ setup DQV_2+ 6000223 DQV_2+ 500.0 0.0 0.0 0.0 4 6 3 0 create /ThePEG/ParticleData DQV_2+bar setup DQV_2+bar -6000223 DQV_2+bar 500.0 0.0 0.0 0.0 -4 -6 3 0 makeanti DQV_2+bar DQV_2+ # Vector DQ Doublet t_3=-1/2 Y=-5/6 create /ThePEG/ParticleData DQV_2- setup DQV_2- 6000213 DQV_2- 500.0 0.0 0.0 0.0 1 6 3 0 create /ThePEG/ParticleData DQV_2-bar setup DQV_2-bar -6000213 DQV_2-bar 500.0 0.0 0.0 0.0 -1 -6 3 0 makeanti DQV_2-bar DQV_2- ################################################### # # Main directory and model object # ################################################### mkdir /Herwig/NewPhysics/Sextet cd /Herwig/NewPhysics/Sextet create Herwig::SextetModel Model # SM couplings set Model:QCD/RunningAlphaS /Herwig/AlphaS set Model:EW/RunningAlphaEM /Herwig/AlphaEM set Model:EW/CKM /Herwig/CKM set Model:RunningMass /Herwig/RunningMass ################################################### # # Vertices # ################################################### # create Sextet model vertices mkdir /Herwig/Vertices/Sextet cd /Herwig/Vertices/Sextet library HwSextetModel.so create Herwig::SextetGSSVertex Sextet_GSSVertex create Herwig::SextetGGSSVertex Sextet_GGSSVertex create Herwig::SextetGVVVertex Sextet_GVVVertex create Herwig::SextetGGVVVertex Sextet_GGVVVertex create Herwig::SextetFFSVertex Sextet_FFSVertex create Herwig::SextetFFVVertex Sextet_FFVVertex cd /Herwig/NewPhysics/Sextet # 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/HPP /Herwig/Vertices/HPPVertex # Sextet model vertices set Model:Vertex/SDQSDQG /Herwig/Vertices/Sextet/Sextet_GSSVertex set Model:Vertex/SDQSDQGG /Herwig/Vertices/Sextet/Sextet_GGSSVertex set Model:Vertex/VDQVDQG /Herwig/Vertices/Sextet/Sextet_GVVVertex set Model:Vertex/VDQVDQGG /Herwig/Vertices/Sextet/Sextet_GGVVVertex set Model:Vertex/FFSDQ /Herwig/Vertices/Sextet/Sextet_FFSVertex set Model:Vertex/FFVDQ /Herwig/Vertices/Sextet/Sextet_FFVVertex ################################################### # # Shower stuff for coloured diquarks # ################################################### cd /Herwig/Shower create Herwig::ZeroZeroOneSplitFn SDiquarktoSDiquarkSplitFn set SDiquarktoSDiquarkSplitFn:InteractionType QCD set SDiquarktoSDiquarkSplitFn:ColourStructure SextetSextetOctet create Herwig::OneOneOneSplitFn VDiquarktoVDiquarkSplitFn set VDiquarktoVDiquarkSplitFn:InteractionType QCD set VDiquarktoVDiquarkSplitFn:ColourStructure SextetSextetOctet cp SudakovCommon SDiquarktoSDiquarkSudakov set SDiquarktoSDiquarkSudakov:SplittingFunction SDiquarktoSDiquarkSplitFn cp SudakovCommon VDiquarktoVDiquarkSudakov set VDiquarktoVDiquarkSudakov:SplittingFunction VDiquarktoVDiquarkSplitFn do SplittingGenerator:AddFinalSplitting DQPhi_1''->DQPhi_1'',g; SDiquarktoSDiquarkSudakov do SplittingGenerator:AddFinalSplitting DQPhi_1->DQPhi_1,g; SDiquarktoSDiquarkSudakov do SplittingGenerator:AddFinalSplitting DQPhi_1'->DQPhi_1',g; SDiquarktoSDiquarkSudakov do SplittingGenerator:AddFinalSplitting DQPhi_3+->DQPhi_3+,g; SDiquarktoSDiquarkSudakov do SplittingGenerator:AddFinalSplitting DQPhi_30->DQPhi_30,g; SDiquarktoSDiquarkSudakov do SplittingGenerator:AddFinalSplitting DQPhi_3-->DQPhi_3-,g; SDiquarktoSDiquarkSudakov do SplittingGenerator:AddFinalSplitting DQV_1+->DQV_1+,g; VDiquarktoVDiquarkSudakov do SplittingGenerator:AddFinalSplitting DQV_1-->DQV_1-,g; VDiquarktoVDiquarkSudakov do SplittingGenerator:AddFinalSplitting DQV_2+->DQV_2+,g; VDiquarktoVDiquarkSudakov do SplittingGenerator:AddFinalSplitting DQV_2-->DQV_2-,g; VDiquarktoVDiquarkSudakov ################################################### # # Set up spin correlation Decayers # ################################################### cd /Herwig/NewPhysics set TwoBodyDC:CreateDecayModes Yes set ThreeBodyDC:CreateDecayModes No insert NewModel:DecayParticles 0 /Herwig/Particles/DQPhi_1'' insert NewModel:DecayParticles 0 /Herwig/Particles/DQPhi_1 insert NewModel:DecayParticles 0 /Herwig/Particles/DQPhi_1' insert NewModel:DecayParticles 0 /Herwig/Particles/DQPhi_3+ insert NewModel:DecayParticles 0 /Herwig/Particles/DQPhi_30 insert NewModel:DecayParticles 0 /Herwig/Particles/DQPhi_3- insert NewModel:DecayParticles 0 /Herwig/Particles/DQV_1+ insert NewModel:DecayParticles 0 /Herwig/Particles/DQV_1- insert NewModel:DecayParticles 0 /Herwig/Particles/DQV_2+ insert NewModel:DecayParticles 0 /Herwig/Particles/DQV_2- ################################################### # # Exclude some things from the HP # ################################################### insert HPConstructor:ExcludedExternal 0 /Herwig/Particles/g ################################################### # Set up the model framework ################################################### set Sextet/Model:ModelGenerator NewModel ################################################### # # Choose Sextet over SM # ################################################### cd /Herwig/Generators set LEPGenerator:StandardModelParameters /Herwig/NewPhysics/Sextet/Model set LHCGenerator:StandardModelParameters /Herwig/NewPhysics/Sextet/Model ��������������herwig++-2.6.0.orig/src/LHC-GammaGamma.in�����������������������������������������������������������0000644�0001750�0001750�00000005401�11756407427�020500� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator based on LEP parameters # usage: Herwig++ read LEP.in ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 100000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:EventHandler:Sampler:Ntry 10000 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 ################################################## # Choice of phase-space generation for PDFs ################################################## set /Herwig/Partons/QCDExtractor:FlatSHatY 0 ################################################## # Change the proton PDFs to those for photon radiation ################################################## set /Herwig/Particles/p+:PDF /Herwig/Partons/BudnevPDF set /Herwig/Particles/pbar-:PDF /Herwig/Partons/BudnevPDF ################################################## # Cuts ################################################## cd /Herwig/Cuts set QCDCuts:ScaleMin 0.0*GeV set QCDCuts:X1Min 0 set QCDCuts:X2Min 0 set QCDCuts:X1Max 1. set QCDCuts:X2Max 1. set QCDCuts:MHatMin 1.*GeV erase QCDCuts:MultiCuts 0 set LeptonKtCut:MinKT 3*GeV ################################################## # Selected the hard process ################################################## cd /Herwig/MatrixElements # fermion-antifermion insert SimpleQCD:MatrixElements 0 /Herwig/MatrixElements/MEgg2ff set /Herwig/MatrixElements/MEgg2ff:Process Muon # W+W- #insert SimpleQCD:MatrixElements 0 /Herwig/MatrixElements/MEgg2WW ################################################## # LHC physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 8000. set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL ################################################## # Useful analysis handlers for HepMC related output ################################################## # Schematic overview of an event (requires --with-hepmc to be set at configure time # and the graphviz program 'dot' to produce a plot) # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/Plot # A HepMC dump file (requires --with-hepmc to be set at configure time) # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile # set /Herwig/Analysis/HepMCFile:PrintEvent 100 # set /Herwig/Analysis/HepMCFile:Format GenEvent # set /Herwig/Analysis/HepMCFile:Units GeV_mm ################################################### # Save run for later usage with 'Herwig++ run' ################################################## saverun LHC-GammaGamma LHCGenerator ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/Herwig++.cc�����������������������������������������������������������������0000644�0001750�0001750�00000013554�11754474774�017460� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Herwig++.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2011 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #include "herwigopts.h" #include <ThePEG/Persistency/PersistentIStream.h> #include <ThePEG/Repository/EventGenerator.h> #include <ThePEG/Utilities/DynamicLoader.h> #include <ThePEG/Repository/Repository.h> #include <ThePEG/Utilities/Exception.h> #include <ThePEG/Utilities/Debug.h> #include <iostream> using namespace ThePEG; void printUsageAndExit(); void HerwigInit(string infile, string reponame); void HerwigRead(string reponame, string runname); void HerwigRun(string runname, int seed, string tag, long N, bool tics, bool resume, bool keepid); int main(int argc, char * argv[]) { try { // read command line options gengetopt_args_info args_info; if ( cmdline_parser( argc, argv, &args_info ) != 0 ) { std::cerr << "Could not parse command line.\n"; return EXIT_FAILURE; } // require one command if ( args_info.inputs_num < 1 ) printUsageAndExit(); // Interpret command status enum { INIT, READ, RUN } status; std::string runType = args_info.inputs[0]; if ( runType == "init" ) status = INIT; else if ( runType == "read" ) status = READ; else if ( runType == "run" ) status = RUN; else printUsageAndExit(); // Use second argument as input- or runfile name string runname; if ( args_info.inputs_num > 1 ) runname = args_info.inputs[1]; // If status is RUN, we need a runname if ( status == RUN && runname.empty() ) { cerr << "Error: You need to supply a runfile name.\n"; printUsageAndExit(); } // Defaults for these filenames are set in the ggo file std::string reponame = args_info.repo_arg; std::string infile = args_info.init_arg; // Number of events long N = -1; if ( args_info.numevents_given ) N = args_info.numevents_arg; // RNG seed int seed = 0; if ( args_info.seed_given ) seed = args_info.seed_arg; // run name tag (default given in ggo file) string tag = args_info.tag_arg; // Library search path for dlopen() for ( size_t i = 0; i < args_info.append_given; ++i ) DynamicLoader::appendPath( args_info.append_arg[i] ); for ( size_t i = 0; i < args_info.prepend_given; ++i ) DynamicLoader::prependPath( args_info.prepend_arg[i] ); // Debugging level if ( args_info.debug_given ) Debug::setDebug( args_info.debug_arg ); // Floating point exceptions if ( args_info.debug_fpe_flag ) Debug::unmaskFpuErrors(); // Exit-on-error flag if ( ! args_info.noexitonerror_flag ) Repository::exitOnError() = 1; // Tics bool tics = true; if ( args_info.quiet_flag ) tics = false; // Resume bool resume = false; if ( args_info.resume_flag ) resume = true; // Keep id bool keepid = false; if ( args_info.keepid_flag ) keepid = true; // *** End of command line parsing *** // Call mode switch ( status ) { case INIT: HerwigInit( infile, reponame ); break; case READ: HerwigRead( reponame, runname ); break; case RUN: HerwigRun( runname, seed, tag, N, tics, resume, keepid ); break; default: printUsageAndExit(); } Repository::cleanup(); cmdline_parser_free( &args_info ); return EXIT_SUCCESS; } catch ( ThePEG::Exception & e ) { std::cerr << argv[0] << ": ThePEG::Exception caught. " << "See logfile for details.\n"; Repository::cleanup(); return EXIT_FAILURE; } catch ( std::exception & e ) { std::cerr << argv[0] << ": " << e.what() << '\n'; Repository::cleanup(); return EXIT_FAILURE; } catch (const char* what) { std::cerr << argv[0] << ": caught exception: " << what << "\n"; Repository::cleanup(); return EXIT_FAILURE; } catch (...) { std::cerr << argv[0] << ": Unknown exception caught.\n"; Repository::cleanup(); return EXIT_FAILURE; } } void printUsageAndExit() { std::cerr << gengetopt_args_info_usage << '\n'; Repository::cleanup(); exit( EXIT_FAILURE ); } void HerwigInit(string infile, string reponame) { breakThePEG(); { # ifdef HERWIG_PKGLIBDIR DynamicLoader::appendPath(HERWIG_PKGLIBDIR); # endif # ifdef THEPEG_PKGLIBDIR DynamicLoader::appendPath(THEPEG_PKGLIBDIR); # endif HoldFlag<> setup(InterfaceBase::NoReadOnly); string msg = Repository::read(infile, cout); if ( ! msg.empty() ) cerr << msg << '\n'; Repository::update(); } Repository::save(reponame); } void HerwigRead(string reponame, string runname) { #ifdef HERWIG_PKGDATADIR ifstream test(reponame.c_str()); if ( !test ) { reponame = string(HERWIG_PKGDATADIR) + '/' + reponame; } test.close(); #endif string msg = Repository::load(reponame); if ( ! msg.empty() ) cerr << msg << '\n'; breakThePEG(); if ( !runname.empty() && runname != "-" ) { string msg = Repository::read(runname, std::cout); if ( ! msg.empty() ) cerr << msg << '\n'; } else Repository::read(std::cin, std::cout, "Herwig++> "); } void HerwigRun(string runname, int seed, string tag, long N, bool tics, bool resume, bool keepid) { PersistentIStream is(runname, keepid); ThePEG::EGPtr eg; is >> eg; // debugging breakpoint breakThePEG(); if ( !eg ) { std::cerr << "Herwig++: EventGenerator not available.\n" << "Check if '" << runname << "' is a valid run file.\n"; Repository::cleanup(); exit( EXIT_FAILURE ); } if ( seed > 0 ) eg->setSeed(seed); if ( !tag.empty() ) eg->addTag(tag); eg->go( resume ? -1 : 1, N, tics ); if ( tics ) std::cout << '\n'; } ����������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LHC-RS.in�������������������������������������������������������������������0000644�0001750�0001750�00000003131�11754474774�017044� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator for the Randall-Sundrum model # in hadron collisions # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read RS.model cd /Herwig/NewPhysics ################################################## # # This section contains the user defined settings # ################################################## # Example hard process: Incoming proton,resonant gravition insert ResConstructor:Incoming 0 /Herwig/Particles/g insert ResConstructor:Incoming 1 /Herwig/Particles/u insert ResConstructor:Incoming 2 /Herwig/Particles/ubar insert ResConstructor:Incoming 3 /Herwig/Particles/d insert ResConstructor:Incoming 4 /Herwig/Particles/dbar insert ResConstructor:Intermediates 0 /Herwig/Particles/Graviton insert ResConstructor:Outgoing 0 /Herwig/Particles/e+ insert ResConstructor:Outgoing 1 /Herwig/Particles/W+ insert ResConstructor:Outgoing 2 /Herwig/Particles/Z0 insert ResConstructor:Outgoing 3 /Herwig/Particles/gamma # coupling set RS/Model:Lambda_pi 10000*GeV # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV # Other parameters for run cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 saverun LHC-RS LHCGenerator ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LHC-TTBA.in�����������������������������������������������������������������0000644�0001750�0001750�00000007403�11756407506�017247� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ################################################## # Example generator for the Leptoquark model # in hadron collisions # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read TTBA.model #Set up semi-leptonic (e or mu) top/hadronic topbar set /Herwig/Particles/t:Synchronized Not_synchronized set /Herwig/Particles/tbar:Synchronized Not_synchronized set /Herwig/Particles/t/t->b,bbar,c;:OnOff Off set /Herwig/Particles/t/t->b,c,dbar;:OnOff Off set /Herwig/Particles/t/t->b,c,sbar;:OnOff Off set /Herwig/Particles/t/t->b,sbar,u;:OnOff Off set /Herwig/Particles/t/t->b,u,dbar;:OnOff Off set /Herwig/Particles/t/t->nu_e,e+,b;:OnOff On set /Herwig/Particles/t/t->nu_mu,mu+,b;:OnOff On set /Herwig/Particles/t/t->nu_tau,tau+,b;:OnOff Off set /Herwig/Particles/tbar/tbar->b,bbar,cbar;:OnOff On set /Herwig/Particles/tbar/tbar->bbar,cbar,d;:OnOff On set /Herwig/Particles/tbar/tbar->bbar,cbar,s;:OnOff On set /Herwig/Particles/tbar/tbar->bbar,s,ubar;:OnOff On set /Herwig/Particles/tbar/tbar->bbar,ubar,d;:OnOff On set /Herwig/Particles/tbar/tbar->nu_ebar,e-,bbar;:OnOff Off set /Herwig/Particles/tbar/tbar->nu_mubar,mu-,bbar;:OnOff Off set /Herwig/Particles/tbar/tbar->nu_taubar,tau-,bbar;:OnOff Off cd /Herwig/Generators ################################################## # LHC physics parameters (override defaults here) ################################################## # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV ################################################## # # This section contains the user defined settings # ################################################## # Example hard process: Incoming proton, outgoing leptoquarks cd /Herwig/NewPhysics set HPConstructor:Processes Exclusive insert HPConstructor:Incoming 0 /Herwig/Particles/u insert HPConstructor:Incoming 1 /Herwig/Particles/ubar insert HPConstructor:Incoming 2 /Herwig/Particles/d insert HPConstructor:Incoming 3 /Herwig/Particles/dbar insert HPConstructor:Incoming 4 /Herwig/Particles/s insert HPConstructor:Incoming 5 /Herwig/Particles/sbar insert HPConstructor:Incoming 6 /Herwig/Particles/c insert HPConstructor:Incoming 7 /Herwig/Particles/cbar insert HPConstructor:Incoming 8 /Herwig/Particles/b insert HPConstructor:Incoming 9 /Herwig/Particles/bbar insert HPConstructor:Incoming 10 /Herwig/Particles/g # Comment out the following line if Axigluon model is selected insert /Herwig/NewPhysics/HPConstructor:Excluded 0 /Herwig/Particles/Ag insert HPConstructor:Outgoing 0 /Herwig/Particles/t insert HPConstructor:Outgoing 1 /Herwig/Particles/tbar #This is available for comparison to the LO Hw++ result #cd /Herwig/MatrixElements #insert SimpleQCD:MatrixElements[0] MEHeavyQuark cd /Herwig/Shower set SplittingGenerator:ISR Yes set SplittingGenerator:FSR Yes cd /Herwig/EventHandlers #set LHCHandler:CascadeHandler NULL #set LHCHandler:HadronizationHandler NULL #set LHCHandler:DecayHandler NULL # Other parameters for run cd /Herwig/Generators # Uncomment to turn off MPI #set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 100 set LHCGenerator:MaxErrors 10000 #HepMC analysis #insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile #set /Herwig/Analysis/HepMCFile:PrintEvent 10000 #set /Herwig/Analysis/HepMCFile:Format GenEvent #set /Herwig/Analysis/HepMCFile:Units GeV_mm saverun LHC-TTBA LHCGenerator �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/ILC.in����������������������������������������������������������������������0000644�0001750�0001750�00000005723�11754474774�016534� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator based on ILC parameters # usage: Herwig++ read ILC.in # # Since most parameters are identical to LEP, # we use the default LEPGenerator and adapt only # for the differences ################################################## ################################################## # Change settings for the ee->Z->qq matrix element # to produce only top quarks # # 'set' lines like this can be omitted if the # default value is already okay. # # Any repository setting can be modified here ################################################## ################################################## # Selected the hard process ################################################## cd /Herwig/MatrixElements # default e+e- > t tbar insert SimpleEE:MatrixElements 0 MEee2gZ2qq set MEee2gZ2qq:MinimumFlavour 6 set MEee2gZ2qq:MaximumFlavour 6 # e+e- > l+l- # insert SimpleEE:MatrixElements[0] MEee2gZ2ll # e+e- > W+W- ZZ # insert SimpleEE:MatrixElements[0] MEee2VV # higgs+Z # insert SimpleEE:MatrixElements[0] MEee2ZH # higgs+e+e-/nu_enu_ebar via VBF # insert SimpleEE:MatrixElements[0] MEee2HiggsVBF ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LEPGenerator:NumberOfEvents 100000000 set LEPGenerator:RandomNumberGenerator:Seed 31122001 set LEPGenerator:PrintEvent 10 set LEPGenerator:MaxErrors 10000 ################################################## # ILC physics parameters (override defaults) ################################################## set LEPGenerator:EventHandler:LuminosityFunction:Energy 500.0 set LEPGenerator:EventHandler:CascadeHandler:MPIHandler NULL ################################################## # Useful analysis handlers for HepMC related output ################################################## # Schematic overview of an event (requires --with-hepmc to be set at configure time # and the graphviz program 'dot' to produce a plot) # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/Plot # A HepMC dump file (requires --with-hepmc to be set at configure time) # insert LEPGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile # set /Herwig/Analysis/HepMCFile:PrintEvent 100 # set /Herwig/Analysis/HepMCFile:Format GenEvent # set /Herwig/Analysis/HepMCFile:Units GeV_mm ################################################## # Save run for later usage with 'Herwig++ run' ################################################## saverun ILC LEPGenerator ################################################## # uncomment this section for an example batch run # of two repeats with different parameters # # Note that a separate call of 'Herwig run' # is not required ################################################## # set LEPGenerator:NumberOfEvents 100 # run ILC-tt LEPGenerator # set /Herwig/MatrixElements/MEee2gZ2qq:MinimumFlavour 5 # set /Herwig/MatrixElements/MEee2gZ2qq:MaximumFlavour 5 # run ILC-bb LEPGenerator ���������������������������������������������herwig++-2.6.0.orig/src/CMSSM40.1.1.slha������������������������������������������������������������0000644�0001750�0001750�00000144711�11754474774�017773� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ISAJET SUSY parameters in SUSY Les Houches Accord 2 format # Created by ISALHA 2.0 Last revision: C. Balazs 21 Apr 2009 Block SPINFO # Program information 1 ISASUGRA from ISAJET # Spectrum Calculator 2 7.81 26-APR-2011 16:50:35 # Version number Block MODSEL # Model selection 1 1 # Minimal supergravity (mSUGRA) model Block SMINPUTS # Standard Model inputs 1 1.27840950E+02 # alpha_em^(-1) 2 1.16570000E-05 # G_Fermi 3 1.17200002E-01 # alpha_s(M_Z) 4 9.11699982E+01 # m_{Z}(pole) 5 4.19999981E+00 # m_{b}(m_{b}) 6 1.73199997E+02 # m_{top}(pole) 7 1.77699995E+00 # m_{tau}(pole) Block MINPAR # SUSY breaking input parameters 1 3.30000000E+02 # m_0 2 5.00000000E+02 # m_{1/2} 3 4.00000000E+01 # tan(beta) 4 1.00000000E+00 # sign(mu) 5 -5.00000000E+02 # A_0 Block EXTPAR # Non-universal SUSY breaking parameters 0 1.76318844E+16 # Input scale Block MASS # Scalar and gaugino mass spectrum # PDG code mass particle 24 8.04229965E+01 # W^+ 25 1.16870972E+02 # h^0 35 6.28744934E+02 # H^0 36 6.24697754E+02 # A^0 37 6.34586792E+02 # H^+ 1000001 1.10702246E+03 # dnl 1000002 1.10390466E+03 # upl 1000003 1.10702246E+03 # stl 1000004 1.10390552E+03 # chl 1000005 9.25675659E+02 # b1 1000006 7.72417542E+02 # t1 1000011 4.73480316E+02 # el- 1000012 4.65190002E+02 # nuel 1000013 4.73480316E+02 # mul- 1000014 4.65190002E+02 # numl 1000015 2.02426895E+02 # tau1 1000016 4.17797943E+02 # nutl 1000021 1.15880176E+03 # glss 1000022 2.07442932E+02 # z1ss 1000023 3.94819366E+02 # z2ss 1000024 3.95395752E+02 # w1ss 1000025 -6.98430725E+02 # z3ss 1000035 7.08134155E+02 # z4ss 1000037 7.08306274E+02 # w2ss 2000001 1.06494458E+03 # dnr 2000002 1.06849890E+03 # upr 2000003 1.06494458E+03 # str 2000004 1.06849988E+03 # chr 2000005 9.94880493E+02 # b2 2000006 1.00032068E+03 # t2 2000011 3.80521210E+02 # er- 2000013 3.80521271E+02 # mur- 2000015 4.47397339E+02 # tau2 Block ALPHA # Effective Higgs mixing parameter -2.53561661E-02 # alpha Block STOPMIX # stop mixing matrix 1 1 4.52761382E-01 # O_{11} 1 2 8.91631722E-01 # O_{12} 2 1 -8.91631722E-01 # O_{21} 2 2 4.52761382E-01 # O_{22} Block SBOTMIX # sbottom mixing matrix 1 1 7.81507432E-01 # O_{11} 1 2 6.23895943E-01 # O_{12} 2 1 -6.23895943E-01 # O_{21} 2 2 7.81507432E-01 # O_{22} Block STAUMIX # stau mixing matrix 1 1 3.44204724E-01 # O_{11} 1 2 9.38894629E-01 # O_{12} 2 1 -9.38894629E-01 # O_{21} 2 2 3.44204724E-01 # O_{22} Block NMIX # neutralino mixing matrix 1 1 9.97291148E-01 # 1 2 -9.72984079E-03 # 1 3 6.95981011E-02 # 1 4 -2.17275135E-02 # 2 1 2.28502564E-02 # 2 2 9.82255638E-01 # 2 3 -1.60866529E-01 # 2 4 9.36675519E-02 # 3 1 3.32481824E-02 # 3 2 -4.86115925E-02 # 3 3 -7.04129338E-01 # 3 4 -7.07625329E-01 # 4 1 6.15066849E-02 # 4 2 -1.80875763E-01 # 4 3 -6.88098967E-01 # 4 4 7.00014949E-01 # Block UMIX # chargino U mixing matrix 1 1 -9.73583758E-01 # U_{11} 1 2 2.28330076E-01 # U_{12} 2 1 -2.28330076E-01 # U_{21} 2 2 -9.73583758E-01 # U_{22} Block VMIX # chargino V mixing matrix 1 1 -9.90937054E-01 # V_{11} 1 2 1.34326920E-01 # V_{12} 2 1 -1.34326920E-01 # V_{21} 2 2 -9.90937054E-01 # V_{22} Block GAUGE Q= 8.46515137E+02 # 1 3.57499272E-01 # g` 2 6.52483046E-01 # g_2 3 1.22072554E+00 # g_3 Block YU Q= 8.46515137E+02 # 3 3 8.59023213E-01 # y_t Block YD Q= 8.46515137E+02 # 3 3 4.69071597E-01 # y_b Block YE Q= 8.46515137E+02 # 3 3 4.30355370E-01 # y_tau Block HMIX Q= 8.46515137E+02 # Higgs mixing parameters 1 6.94892578E+02 # mu(Q) 2 4.00000000E+01 # tan(beta)(M_GUT) 3 2.50802032E+02 # Higgs vev at Q 4 3.90247281E+05 # m_A^2(Q) Block MSOFT Q= 8.46515137E+02 # DRbar SUSY breaking parameters 1 2.10815384E+02 # M_1(Q) 2 3.91559723E+02 # M_2(Q) 3 1.10285413E+03 # M_3(Q) 21 -9.10002344E+04 # M^2_Hd 22 -4.78996688E+05 # M^2_Hu 31 4.68364502E+02 # MeL(Q) 32 4.68364502E+02 # MmuL(Q) 33 4.22006989E+02 # MtauL(Q) 34 3.77536163E+02 # MeR(Q) 35 3.77536163E+02 # MmuR(Q) 36 2.47031448E+02 # MtauR(Q) 41 1.05035156E+03 # MqL1(Q) 42 1.05035156E+03 # MqL2(Q) 43 9.10856995E+02 # MqL3(Q) 44 1.01528900E+03 # MuR(Q) 45 1.01528900E+03 # McR(Q) 46 7.86718323E+02 # MtR(Q) 47 1.01090594E+03 # MdR(Q) 48 1.01090594E+03 # MsR(Q) 49 9.32971741E+02 # MbR(Q) Block AU Q= 8.46515137E+02 # 1 1 -1.02420349E+03 # A_u 2 2 -1.02420349E+03 # A_c 3 3 -1.02420349E+03 # A_t Block AD Q= 8.46515137E+02 # 1 1 -1.47017371E+03 # A_d 2 2 -1.47017371E+03 # A_s 3 3 -1.47017371E+03 # A_b Block AE Q= 8.46515137E+02 # 1 1 -5.32889954E+02 # A_e 2 2 -5.32889954E+02 # A_mu 3 3 -5.32889954E+02 # A_tau # ISAJET decay tables in SUSY Les Houches accord format # Created by ISALHD. Last revision: C. Balazs, 2005 May 25 Block DCINFO # Program information 1 ISASUGRA from ISAJET # Spectrum Calculator 2 7.81 26-APR-2011 16:50:35 # Version number # PDG Width DECAY 6 1.16585374E+00 # TP decays # BR NDA ID1 ID2 ID3 ID4 3.33333343E-01 3 2 -1 5 # TP --> UP DB BT 3.33333343E-01 3 4 -3 5 # TP --> CH SB BT 1.11111119E-01 3 -11 12 5 # TP --> E+ NUE BT 1.11111119E-01 3 -13 14 5 # TP --> MU+ NUM BT 1.11111119E-01 3 -15 16 5 # TP --> TAU+ NUT BT # PDG Width DECAY 1000021 1.30986242E+01 # GLSS decays # BR NDA ID1 ID2 ID3 ID4 2.95049255E-03 3 1000024 5 -6 # GLSS --> W1SS+ BT TB 2.95049255E-03 3 -1000024 6 -5 # GLSS --> W1SS- TP BB 9.63696337E-04 3 1000037 5 -6 # GLSS --> W2SS+ BT TB 9.63696337E-04 3 -1000037 6 -5 # GLSS --> W2SS- TP BB 7.89559749E-07 2 1000022 21 # GLSS --> Z1SS GL 5.53237274E-04 3 1000022 6 -6 # GLSS --> Z1SS TP TB 7.83049109E-06 2 1000023 21 # GLSS --> Z2SS GL 2.50290148E-03 3 1000023 6 -6 # GLSS --> Z2SS TP TB 5.75613885E-05 2 1000025 21 # GLSS --> Z3SS GL 5.80269319E-04 3 1000025 6 -6 # GLSS --> Z3SS TP TB 4.21289660E-05 2 1000035 21 # GLSS --> Z4SS GL 2.48247455E-03 3 1000035 6 -6 # GLSS --> Z4SS TP TB 8.58569052E-03 2 -1000002 2 # GLSS --> UBL UP 8.58569052E-03 2 1000002 -2 # GLSS --> UPL UB 7.65922479E-03 2 -1000001 1 # GLSS --> DBL DN 7.65922479E-03 2 1000001 -1 # GLSS --> DNL DB 2.25102771E-02 2 -2000002 2 # GLSS --> UBR UP 2.25102771E-02 2 2000002 -2 # GLSS --> UPR UB 2.42396072E-02 2 -2000001 1 # GLSS --> DBR DN 2.42396072E-02 2 2000001 -1 # GLSS --> DNR DB 7.65917124E-03 2 -1000003 3 # GLSS --> SBL ST 7.65917124E-03 2 1000003 -3 # GLSS --> STL SB 2.42395587E-02 2 -2000003 3 # GLSS --> SBR ST 2.42395587E-02 2 2000003 -3 # GLSS --> STR SB 8.58296175E-03 2 -1000004 4 # GLSS --> CBL CH 8.58296175E-03 2 1000004 -4 # GLSS --> CHL CB 2.25074943E-02 2 -2000004 4 # GLSS --> CBR CH 2.25074943E-02 2 2000004 -4 # GLSS --> CHR CB 1.28321588E-01 2 -1000005 5 # GLSS --> BB1 BT 1.28321588E-01 2 1000005 -5 # GLSS --> BT1 BB 7.15424567E-02 2 -2000005 5 # GLSS --> BB2 BT 7.15424567E-02 2 2000005 -5 # GLSS --> BT2 BB 1.67124167E-01 2 -1000006 6 # GLSS --> TB1 TP 1.67124167E-01 2 1000006 -6 # GLSS --> TP1 TB # PDG Width DECAY 1000002 1.06098747E+01 # UPL decays # BR NDA ID1 ID2 ID3 ID4 1.21955825E-02 2 1000022 2 # UPL --> Z1SS UP 3.24108571E-01 2 1000023 2 # UPL --> Z2SS UP 2.84771639E-04 2 1000025 2 # UPL --> Z3SS UP 4.36333008E-03 2 1000035 2 # UPL --> Z4SS UP 6.53577685E-01 2 1000024 1 # UPL --> W1SS+ DN 5.47003094E-03 2 1000037 1 # UPL --> W2SS+ DN # PDG Width DECAY 1000001 1.05146809E+01 # DNL decays # BR NDA ID1 ID2 ID3 ID4 1.52797932E-02 2 1000022 1 # DNL --> Z1SS DN 3.22955042E-01 2 1000023 1 # DNL --> Z2SS DN 4.80528222E-04 2 1000025 1 # DNL --> Z3SS DN 5.71126351E-03 2 1000035 1 # DNL --> Z4SS DN 6.39454246E-01 2 -1000024 2 # DNL --> W1SS- UP 1.61191169E-02 2 -1000037 2 # DNL --> W2SS- UP # PDG Width DECAY 1000003 1.05146542E+01 # STL decays # BR NDA ID1 ID2 ID3 ID4 1.52798314E-02 2 1000022 3 # STL --> Z1SS ST 3.22955847E-01 2 1000023 3 # STL --> Z2SS ST 4.80529445E-04 2 1000025 3 # STL --> Z3SS ST 5.71127841E-03 2 1000035 3 # STL --> Z4SS ST 6.39453471E-01 2 -1000024 4 # STL --> W1SS- CH 1.61190201E-02 2 -1000037 4 # STL --> W2SS- CH # PDG Width DECAY 1000004 1.06098747E+01 # CHL decays # BR NDA ID1 ID2 ID3 ID4 1.21955564E-02 2 1000022 4 # CHL --> Z1SS CH 3.24107736E-01 2 1000023 4 # CHL --> Z2SS CH 2.84770096E-04 2 1000025 4 # CHL --> Z3SS CH 4.36330587E-03 2 1000035 4 # CHL --> Z4SS CH 6.53578579E-01 2 1000024 3 # CHL --> W1SS+ ST 5.47004770E-03 2 1000037 3 # CHL --> W2SS+ ST # PDG Width DECAY 1000005 7.96929169E+00 # BT1 decays # BR NDA ID1 ID2 ID3 ID4 5.20670116E-02 2 1000022 5 # BT1 --> Z1SS BT 2.50477284E-01 2 1000023 5 # BT1 --> Z2SS BT 4.36264798E-02 2 1000025 5 # BT1 --> Z3SS BT 3.05872597E-02 2 1000035 5 # BT1 --> Z4SS BT 4.20057476E-01 2 -1000024 6 # BT1 --> W1SS- TP 6.35062456E-02 2 -1000037 6 # BT1 --> W2SS- TP 1.39678210E-01 2 -24 1000006 # BT1 --> W- TP1 # PDG Width DECAY 1000006 3.14273500E+00 # TP1 decays # BR NDA ID1 ID2 ID3 ID4 3.61652523E-01 2 1000022 6 # TP1 --> Z1SS TP 1.56794369E-01 2 1000023 6 # TP1 --> Z2SS TP 4.17066365E-01 2 1000024 5 # TP1 --> W1SS+ BT 6.44867718E-02 2 1000037 5 # TP1 --> W2SS+ BT # PDG Width DECAY 2000002 2.22934365E+00 # UPR decays # BR NDA ID1 ID2 ID3 ID4 9.97896373E-01 2 1000022 2 # UPR --> Z1SS UP 4.21777600E-04 2 1000023 2 # UPR --> Z2SS UP 3.92875401E-04 2 1000025 2 # UPR --> Z3SS UP 1.28896697E-03 2 1000035 2 # UPR --> Z4SS UP # PDG Width DECAY 2000001 5.55181503E-01 # DNR decays # BR NDA ID1 ID2 ID3 ID4 9.97913539E-01 2 1000022 1 # DNR --> Z1SS DN 4.21113917E-04 2 1000023 1 # DNR --> Z2SS DN 3.89176304E-04 2 1000025 1 # DNR --> Z3SS DN 1.27619202E-03 2 1000035 1 # DNR --> Z4SS DN # PDG Width DECAY 2000003 5.55181503E-01 # STR decays # BR NDA ID1 ID2 ID3 ID4 9.97913539E-01 2 1000022 3 # STR --> Z1SS ST 4.21113917E-04 2 1000023 3 # STR --> Z2SS ST 3.89176304E-04 2 1000025 3 # STR --> Z3SS ST 1.27619202E-03 2 1000035 3 # STR --> Z4SS ST # PDG Width DECAY 2000004 2.22933817E+00 # CHR decays # BR NDA ID1 ID2 ID3 ID4 9.97896373E-01 2 1000022 4 # CHR --> Z1SS CH 4.21777426E-04 2 1000023 4 # CHR --> Z2SS CH 3.92873888E-04 2 1000025 4 # CHR --> Z3SS CH 1.28896185E-03 2 1000035 4 # CHR --> Z4SS CH # PDG Width DECAY 2000005 8.65413189E+00 # BT2 decays # BR NDA ID1 ID2 ID3 ID4 2.76298951E-02 2 1000022 5 # BT2 --> Z1SS BT 8.36304203E-02 2 1000023 5 # BT2 --> Z2SS BT 6.94645569E-02 2 1000025 5 # BT2 --> Z3SS BT 7.83215240E-02 2 1000035 5 # BT2 --> Z4SS BT 1.40161589E-01 2 -1000024 6 # BT2 --> W1SS- TP 3.01571250E-01 2 -1000037 6 # BT2 --> W2SS- TP 2.99220800E-01 2 -24 1000006 # BT2 --> W- TP1 # PDG Width DECAY 2000006 1.50752592E+01 # TP2 decays # BR NDA ID1 ID2 ID3 ID4 2.65493870E-01 2 1000024 5 # TP2 --> W1SS+ BT 1.25092804E-01 2 1000037 5 # TP2 --> W2SS+ BT 1.80052266E-01 2 23 1000006 # TP2 --> Z0 TP1 8.66630077E-02 2 25 1000006 # TP2 --> HL0 TP1 2.60817762E-02 2 1000022 6 # TP2 --> Z1SS TP 1.14099048E-01 2 1000023 6 # TP2 --> Z2SS TP 5.57712391E-02 2 1000025 6 # TP2 --> Z3SS TP 1.46746024E-01 2 1000035 6 # TP2 --> Z4SS TP # PDG Width DECAY 1000011 9.06351805E-01 # EL- decays # BR NDA ID1 ID2 ID3 ID4 4.16202903E-01 2 1000022 11 # EL- --> Z1SS E- 2.02000082E-01 2 1000023 11 # EL- --> Z2SS E- 3.81796658E-01 2 -1000024 12 # EL- --> W1SS- NUE 1.36210957E-07 3 1000015 11 -15 # EL- --> TAU1- E- TAU+ 2.07975759E-07 3 -1000015 11 15 # EL- --> TAU1+ E- TAU- # PDG Width DECAY 1000013 9.06351507E-01 # MUL- decays # BR NDA ID1 ID2 ID3 ID4 4.16202962E-01 2 1000022 13 # MUL- --> Z1SS MU- 2.01999933E-01 2 1000023 13 # MUL- --> Z2SS MU- 3.81796777E-01 2 -1000024 14 # MUL- --> W1SS- NUM 1.36211014E-07 3 1000015 13 -15 # MUL- --> TAU1- MU- TAU+ 2.07975816E-07 3 -1000015 13 15 # MUL- --> TAU1+ MU- TAU- # PDG Width DECAY 1000012 8.31395209E-01 # NUEL decays # BR NDA ID1 ID2 ID3 ID4 4.70447093E-01 2 1000022 12 # NUEL --> Z1SS NUE 1.73210651E-01 2 1000023 12 # NUEL --> Z2SS NUE 3.56338859E-01 2 1000024 11 # NUEL --> W1SS+ E- 3.09690165E-07 3 1000015 12 -15 # NUEL --> TAU1- NUE TAU+ 3.14721035E-07 3 -1000015 12 15 # NUEL --> TAU1+ NUE TAU- 2.77051549E-06 3 -1000015 11 16 # NUEL --> TAU1+ E- NUT # PDG Width DECAY 1000014 8.31394851E-01 # NUML decays # BR NDA ID1 ID2 ID3 ID4 4.70447302E-01 2 1000022 14 # NUML --> Z1SS NUM 1.73210725E-01 2 1000023 14 # NUML --> Z2SS NUM 3.56338590E-01 2 1000024 13 # NUML --> W1SS+ MU- 3.09690279E-07 3 1000015 14 -15 # NUML --> TAU1- NUM TAU+ 3.14721177E-07 3 -1000015 14 15 # NUML --> TAU1+ NUM TAU- 2.78562788E-06 3 -1000015 13 16 # NUML --> TAU1+ MU- NUT # PDG Width DECAY 1000016 2.32832766E+00 # NUTL decays # BR NDA ID1 ID2 ID3 ID4 1.33451402E-01 2 1000022 16 # NUTL --> Z1SS NUT 8.12754314E-03 2 1000023 16 # NUTL --> Z2SS NUT 1.60994045E-02 2 1000024 15 # NUTL --> W1SS+ TAU- 8.42320919E-01 2 24 1000015 # NUTL --> W+ TAU1- 7.21977585E-07 3 -1000015 16 15 # NUTL --> TAU1+ NUT TAU- 4.91183947E-08 3 1000015 16 -15 # NUTL --> TAU1- NUT TAU+ # PDG Width DECAY 2000011 9.50808167E-01 # ER- decays # BR NDA ID1 ID2 ID3 ID4 9.99999940E-01 2 1000022 11 # ER- --> Z1SS E- 3.20349400E-08 3 1000015 11 -15 # ER- --> TAU1- E- TAU+ 3.21147517E-08 3 -1000015 11 15 # ER- --> TAU1+ E- TAU- 3.60796332E-12 3 1000015 12 -16 # ER- --> TAU1- NUE ANUT # PDG Width DECAY 2000013 9.50808465E-01 # MUR- decays # BR NDA ID1 ID2 ID3 ID4 9.99999821E-01 2 1000022 13 # MUR- --> Z1SS MU- 3.20350004E-08 3 1000015 13 -15 # MUR- --> TAU1- MU- TAU+ 3.21148157E-08 3 -1000015 13 15 # MUR- --> TAU1+ MU- TAU- 1.53391213E-07 3 1000015 14 -16 # MUR- --> TAU1- NUM ANUT # PDG Width DECAY 2000015 2.57927346E+00 # TAU2- decays # BR NDA ID1 ID2 ID3 ID4 1.69659615E-01 2 1000022 15 # TAU2- --> Z1SS TAU- 2.82944925E-02 2 1000023 15 # TAU2- --> Z2SS TAU- 5.20175248E-02 2 -1000024 16 # TAU2- --> W1SS- NUT 4.66725141E-01 2 23 1000015 # TAU2- --> Z0 TAU1- 2.83303201E-01 2 25 1000015 # TAU2- --> HL0 TAU1- # PDG Width DECAY 1000022 1.91913766E-03 # Z1SS decays # BR NDA ID1 ID2 ID3 ID4 5.00000000E-01 2 1000015 -15 # Z1SS --> TAU1- TAU+ 5.00000000E-01 2 -1000015 15 # Z1SS --> TAU1+ TAU- # PDG Width DECAY 1000023 2.19691008E-01 # Z2SS decays # BR NDA ID1 ID2 ID3 ID4 2.21119777E-07 2 1000022 22 # Z2SS --> Z1SS GM 3.65646160E-03 2 1000022 23 # Z2SS --> Z1SS Z0 2.72281767E-07 3 1000022 2 -2 # Z2SS --> Z1SS UP UB 3.25441874E-07 3 1000022 1 -1 # Z2SS --> Z1SS DN DB 3.25441874E-07 3 1000022 3 -3 # Z2SS --> Z1SS ST SB 2.72280829E-07 3 1000022 4 -4 # Z2SS --> Z1SS CH CB 3.24125858E-06 3 1000022 5 -5 # Z2SS --> Z1SS BT BB 7.04530248E-05 3 1000022 11 -11 # Z2SS --> Z1SS E- E+ 7.04530248E-05 3 1000022 13 -13 # Z2SS --> Z1SS MU- MU+ 9.87348540E-05 3 1000022 15 -15 # Z2SS --> Z1SS TAU- TAU+ 8.21191206E-05 3 1000022 12 -12 # Z2SS --> Z1SS NUE ANUE 8.21191206E-05 3 1000022 14 -14 # Z2SS --> Z1SS NUM ANUM 2.19217196E-04 3 1000022 16 -16 # Z2SS --> Z1SS NUT ANUT 2.80832015E-02 2 1000022 25 # Z2SS --> Z1SS HL0 1.20694722E-05 2 2000011 -11 # Z2SS --> ER- E+ 1.20694722E-05 2 -2000011 11 # Z2SS --> ER+ E- 1.20690565E-05 2 2000013 -13 # Z2SS --> MUR- MU+ 1.20690565E-05 2 -2000013 13 # Z2SS --> MUR+ MU- 4.83792126E-01 2 1000015 -15 # Z2SS --> TAU1- TAU+ 4.83792126E-01 2 -1000015 15 # Z2SS --> TAU1+ TAU- # PDG Width DECAY 1000025 5.25831127E+00 # Z3SS decays # BR NDA ID1 ID2 ID3 ID4 2.33761497E-07 2 1000022 22 # Z3SS --> Z1SS GM 5.39223599E-08 2 1000023 22 # Z3SS --> Z2SS GM 2.14747682E-01 2 1000024 -24 # Z3SS --> W1SS+ W- 2.14747682E-01 2 -1000024 24 # Z3SS --> W1SS- W+ 6.46357238E-02 2 1000022 23 # Z3SS --> Z1SS Z0 1.90247342E-01 2 1000023 23 # Z3SS --> Z2SS Z0 7.08019687E-09 3 1000022 2 -2 # Z3SS --> Z1SS UP UB 2.18991958E-09 3 1000022 1 -1 # Z3SS --> Z1SS DN DB 2.18991958E-09 3 1000022 3 -3 # Z3SS --> Z1SS ST SB 7.08016312E-09 3 1000022 4 -4 # Z3SS --> Z1SS CH CB 8.36535837E-05 3 1000022 5 -5 # Z3SS --> Z1SS BT BB 1.66435311E-05 3 1000022 15 -15 # Z3SS --> Z1SS TAU- TAU+ 4.88501373E-09 3 1000023 2 -2 # Z3SS --> Z2SS UP UB 7.82452148E-09 3 1000023 1 -1 # Z3SS --> Z2SS DN DB 7.82452148E-09 3 1000023 3 -3 # Z3SS --> Z2SS ST SB 4.88499330E-09 3 1000023 4 -4 # Z3SS --> Z2SS CH CB 3.24260218E-05 3 1000023 5 -5 # Z3SS --> Z2SS BT BB 4.55672171E-06 3 1000023 15 -15 # Z3SS --> Z2SS TAU- TAU+ 1.70735139E-02 2 1000022 25 # Z3SS --> Z1SS HL0 1.28090009E-02 2 1000023 25 # Z3SS --> Z2SS HL0 7.51439002E-05 2 1000011 -11 # Z3SS --> EL- E+ 7.51439002E-05 2 -1000011 11 # Z3SS --> EL+ E- 7.51438856E-05 2 1000013 -13 # Z3SS --> MUL- MU+ 7.51438856E-05 2 -1000013 13 # Z3SS --> MUL+ MU- 1.84628792E-04 2 2000011 -11 # Z3SS --> ER- E+ 1.84628792E-04 2 -2000011 11 # Z3SS --> ER+ E- 1.84628749E-04 2 2000013 -13 # Z3SS --> MUR- MU+ 1.84628749E-04 2 -2000013 13 # Z3SS --> MUR+ MU- 9.55013186E-02 2 1000015 -15 # Z3SS --> TAU1- TAU+ 9.55013186E-02 2 -1000015 15 # Z3SS --> TAU1+ TAU- 4.54898700E-02 2 2000015 -15 # Z3SS --> TAU2- TAU+ 4.54898700E-02 2 -2000015 15 # Z3SS --> TAU2+ TAU- 3.87133972E-04 2 1000012 -12 # Z3SS --> NUEL ANUE 3.87133972E-04 2 -1000012 12 # Z3SS --> ANUEL NUE 3.87133972E-04 2 1000014 -14 # Z3SS --> NUML ANUM 3.87133972E-04 2 -1000014 14 # Z3SS --> ANUML NUM 5.15718595E-04 2 1000016 -16 # Z3SS --> NUTL ANUT 5.15718595E-04 2 -1000016 16 # Z3SS --> ANUTL NUT # PDG Width DECAY 1000035 5.51008034E+00 # Z4SS decays # BR NDA ID1 ID2 ID3 ID4 4.08327992E-07 2 1000022 22 # Z4SS --> Z1SS GM 9.35497457E-09 2 1000023 22 # Z4SS --> Z2SS GM 6.37252681E-11 2 1000025 22 # Z4SS --> Z3SS GM 2.13380888E-01 2 1000024 -24 # Z4SS --> W1SS+ W- 2.13380888E-01 2 -1000024 24 # Z4SS --> W1SS- W+ 1.79086700E-02 2 1000022 23 # Z4SS --> Z1SS Z0 1.56781562E-02 2 1000023 23 # Z4SS --> Z2SS Z0 7.44877084E-08 3 1000022 2 -2 # Z4SS --> Z1SS UP UB 4.97084898E-08 3 1000022 1 -1 # Z4SS --> Z1SS DN DB 4.97084898E-08 3 1000022 3 -3 # Z4SS --> Z1SS ST SB 7.44873816E-08 3 1000022 4 -4 # Z4SS --> Z1SS CH CB 7.97867324E-05 3 1000022 5 -5 # Z4SS --> Z1SS BT BB 1.59519841E-05 3 1000022 15 -15 # Z4SS --> Z1SS TAU- TAU+ 2.27225399E-07 3 1000023 2 -2 # Z4SS --> Z2SS UP UB 2.82327335E-07 3 1000023 1 -1 # Z4SS --> Z2SS DN DB 2.82327335E-07 3 1000023 3 -3 # Z4SS --> Z2SS ST SB 2.27224490E-07 3 1000023 4 -4 # Z4SS --> Z2SS CH CB 3.23678833E-05 3 1000023 5 -5 # Z4SS --> Z2SS BT BB 4.40232043E-06 3 1000023 15 -15 # Z4SS --> Z2SS TAU- TAU+ 1.87236360E-09 3 1000025 2 -2 # Z4SS --> Z3SS UP UB 2.41535103E-09 3 1000025 1 -1 # Z4SS --> Z3SS DN DB 2.41535103E-09 3 1000025 3 -3 # Z4SS --> Z3SS ST SB 1.87236360E-09 3 1000025 4 -4 # Z4SS --> Z3SS CH CB 5.47803192E-10 3 1000025 11 -11 # Z4SS --> Z3SS E- E+ 5.47803192E-10 3 1000025 13 -13 # Z4SS --> Z3SS MU- MU+ 3.67608721E-10 3 1000025 15 -15 # Z4SS --> Z3SS TAU- TAU+ 1.08995613E-09 3 1000025 12 -12 # Z4SS --> Z3SS NUE ANUE 1.08995613E-09 3 1000025 14 -14 # Z4SS --> Z3SS NUM ANUM 1.08995613E-09 3 1000025 16 -16 # Z4SS --> Z3SS NUT ANUT 6.12107255E-02 2 1000022 25 # Z4SS --> Z1SS HL0 1.87687099E-01 2 1000023 25 # Z4SS --> Z2SS HL0 1.78868964E-03 2 1000011 -11 # Z4SS --> EL- E+ 1.78868964E-03 2 -1000011 11 # Z4SS --> EL+ E- 1.78868952E-03 2 1000013 -13 # Z4SS --> MUL- MU+ 1.78868952E-03 2 -1000013 13 # Z4SS --> MUL+ MU- 6.25477580E-04 2 2000011 -11 # Z4SS --> ER- E+ 6.25477580E-04 2 -2000011 11 # Z4SS --> ER+ E- 6.25477405E-04 2 2000013 -13 # Z4SS --> MUR- MU+ 6.25477405E-04 2 -2000013 13 # Z4SS --> MUR+ MU- 7.62132257E-02 2 1000015 -15 # Z4SS --> TAU1- TAU+ 7.62132257E-02 2 -1000015 15 # Z4SS --> TAU1+ TAU- 5.09139150E-02 2 2000015 -15 # Z4SS --> TAU2- TAU+ 5.09139150E-02 2 -2000015 15 # Z4SS --> TAU2+ TAU- 4.02822904E-03 2 1000012 -12 # Z4SS --> NUEL ANUE 4.02822904E-03 2 -1000012 12 # Z4SS --> ANUEL NUE 4.02822904E-03 2 1000014 -14 # Z4SS --> NUML ANUM 4.02822904E-03 2 -1000014 14 # Z4SS --> ANUML NUM 5.29775722E-03 2 1000016 -16 # Z4SS --> NUTL ANUT 5.29775722E-03 2 -1000016 16 # Z4SS --> ANUTL NUT # PDG Width DECAY 1000024 2.13363171E-01 # W1SS+ decays # BR NDA ID1 ID2 ID3 ID4 6.21085462E-07 3 1000022 2 -1 # W1SS+ --> Z1SS UP DB 6.21084439E-07 3 1000022 4 -3 # W1SS+ --> Z1SS CH SB 1.60280149E-04 3 1000022 -11 12 # W1SS+ --> Z1SS E+ NUE 1.60280149E-04 3 1000022 -13 14 # W1SS+ --> Z1SS MU+ NUM 3.30305251E-04 3 1000022 -15 16 # W1SS+ --> Z1SS TAU+ NUT 3.20735499E-02 2 1000022 24 # W1SS+ --> Z1SS W+ 2.22283834E-13 3 1000023 -11 12 # W1SS+ --> Z2SS E+ NUE 2.22283834E-13 3 1000023 -13 14 # W1SS+ --> Z2SS MU+ NUM 9.67274368E-01 2 -1000015 16 # W1SS+ --> TAU1+ NUT # PDG Width DECAY 1000037 5.45480204E+00 # W2SS+ decays # BR NDA ID1 ID2 ID3 ID4 8.23240285E-08 3 1000022 2 -1 # W2SS+ --> Z1SS UP DB 8.23239432E-08 3 1000022 4 -3 # W2SS+ --> Z1SS CH SB 1.39341673E-05 3 1000022 -15 16 # W2SS+ --> Z1SS TAU+ NUT 7.27590919E-02 2 1000022 24 # W2SS+ --> Z1SS W+ 2.30239564E-07 3 1000023 2 -1 # W2SS+ --> Z2SS UP DB 2.30239493E-07 3 1000023 4 -3 # W2SS+ --> Z2SS CH SB 5.56894202E-06 3 1000023 -15 16 # W2SS+ --> Z2SS TAU+ NUT 2.21155554E-01 2 1000023 24 # W2SS+ --> Z2SS W+ 7.12335968E-09 3 1000025 2 -1 # W2SS+ --> Z3SS UP DB 7.12335968E-09 3 1000025 4 -3 # W2SS+ --> Z3SS CH SB 2.37430253E-09 3 1000025 -11 12 # W2SS+ --> Z3SS E+ NUE 2.37430253E-09 3 1000025 -13 14 # W2SS+ --> Z3SS MU+ NUM 2.37431297E-09 3 1000025 -15 16 # W2SS+ --> Z3SS TAU+ NUT 3.18924151E-03 2 1000012 -11 # W2SS+ --> NUEL E+ 3.18924151E-03 2 1000014 -13 # W2SS+ --> NUML MU+ 1.00677975E-01 2 1000016 -15 # W2SS+ --> NUTL TAU+ 8.71899258E-03 2 -1000011 12 # W2SS+ --> EL+ NUE 8.71899258E-03 2 -1000013 14 # W2SS+ --> MUL+ NUM 1.28181159E-01 2 -1000015 16 # W2SS+ --> TAU1+ NUT 3.76218781E-02 2 -2000015 16 # W2SS+ --> TAU2+ NUT 2.11088791E-01 2 1000024 23 # W2SS+ --> W1SS+ Z0 2.00140633E-07 3 1000024 1 -1 # W2SS+ --> W1SS+ DN DB 2.00139780E-07 3 1000024 3 -3 # W2SS+ --> W1SS+ ST SB 5.49638912E-07 3 1000024 2 -2 # W2SS+ --> W1SS+ UP UB 5.49638912E-07 3 1000024 4 -4 # W2SS+ --> W1SS+ CH CB 2.04677463E-01 2 1000024 25 # W2SS+ --> W1SS+ HL0 # PDG Width DECAY 25 4.28013969E-03 # HL0 decays # BR NDA ID1 ID2 ID3 ID4 4.77537165E-09 2 11 -11 # HL0 --> E- E+ 2.01623829E-04 2 13 -13 # HL0 --> MU- MU+ 5.76683506E-02 2 15 -15 # HL0 --> TAU- TAU+ 5.99213945E-06 2 1 -1 # HL0 --> DN DB 2.42112461E-03 2 3 -3 # HL0 --> ST SB 7.91881859E-01 2 5 -5 # HL0 --> BT BB 1.86300781E-06 2 2 -2 # HL0 --> UP UB 3.49842906E-02 2 4 -4 # HL0 --> CH CB 1.84560777E-03 2 22 22 # HL0 --> GM GM 3.96150686E-02 2 21 21 # HL0 --> GL GL 3.66468704E-03 3 24 11 -12 # HL0 --> W+ E- ANUE 3.66468704E-03 3 24 13 -14 # HL0 --> W+ MU- ANUM 3.66468704E-03 3 24 15 -16 # HL0 --> W+ TAU- ANUT 1.09940609E-02 3 24 -2 1 # HL0 --> W+ UB DN 1.09940609E-02 3 24 -4 3 # HL0 --> W+ CB ST 3.66468704E-03 3 -24 -11 12 # HL0 --> W- E+ NUE 3.66468704E-03 3 -24 -13 14 # HL0 --> W- MU+ NUM 3.66468704E-03 3 -24 -15 16 # HL0 --> W- TAU+ NUT 1.09940609E-02 3 -24 2 -1 # HL0 --> W- UP DB 1.09940609E-02 3 -24 4 -3 # HL0 --> W- CH SB 3.69976769E-04 3 23 12 -12 # HL0 --> Z0 NUE ANUE 3.69976769E-04 3 23 14 -14 # HL0 --> Z0 NUM ANUM 3.69976769E-04 3 23 16 -16 # HL0 --> Z0 NUT ANUT 1.86205580E-04 3 23 11 -11 # HL0 --> Z0 E- E+ 1.86205580E-04 3 23 13 -13 # HL0 --> Z0 MU- MU+ 1.86205580E-04 3 23 15 -15 # HL0 --> Z0 TAU- TAU+ 6.37924590E-04 3 23 2 -2 # HL0 --> Z0 UP UB 6.37924590E-04 3 23 4 -4 # HL0 --> Z0 CH CB 8.21803987E-04 3 23 1 -1 # HL0 --> Z0 DN DB 8.21803987E-04 3 23 3 -3 # HL0 --> Z0 ST SB 8.21803987E-04 3 23 5 -5 # HL0 --> Z0 BT BB # PDG Width DECAY 35 1.57665234E+01 # HH0 decays # BR NDA ID1 ID2 ID3 ID4 1.08428519E-08 2 11 -11 # HH0 --> E- E+ 4.57804708E-04 2 13 -13 # HH0 --> MU- MU+ 1.31116018E-01 2 15 -15 # HH0 --> TAU- TAU+ 1.33369213E-05 2 1 -1 # HH0 --> DN DB 5.38879121E-03 2 3 -3 # HH0 --> ST SB 8.47770452E-01 2 5 -5 # HH0 --> BT BB 1.71551694E-12 2 2 -2 # HH0 --> UP UB 2.55749324E-08 2 4 -4 # HH0 --> CH CB 8.74553400E-04 2 6 -6 # HH0 --> TP TB 4.17106527E-08 2 22 22 # HH0 --> GM GM 8.81763026E-06 2 21 21 # HH0 --> GL GL 6.07276320E-07 2 24 -24 # HH0 --> W+ W- 3.03128559E-07 2 23 23 # HH0 --> Z0 Z0 2.11170744E-04 2 1000022 1000022 # HH0 --> Z1SS Z1SS 9.15425335E-05 2 1000022 1000023 # HH0 --> Z1SS Z2SS 5.49548022E-05 2 25 25 # HH0 --> HL0 HL0 1.40115535E-02 2 1000015 -1000015 # HH0 --> TAU1- TAU1+ # PDG Width DECAY 36 1.54689407E+01 # HA0 decays # BR NDA ID1 ID2 ID3 ID4 1.09805027E-08 2 11 -11 # HA0 --> E- E+ 4.63616598E-04 2 13 -13 # HA0 --> MU- MU+ 1.32784754E-01 2 15 -15 # HA0 --> TAU- TAU+ 1.35070286E-05 2 1 -1 # HA0 --> DN DB 5.45752328E-03 2 3 -3 # HA0 --> ST SB 8.58688116E-01 2 5 -5 # HA0 --> BT BB 1.68820968E-12 2 2 -2 # HA0 --> UP UB 2.51881627E-08 2 4 -4 # HA0 --> CH CB 1.19010801E-03 2 6 -6 # HA0 --> TP TB 4.99788477E-08 2 22 22 # HA0 --> GM GM 2.17849338E-05 2 21 21 # HA0 --> GL GL 3.88916204E-04 2 1000022 1000022 # HA0 --> Z1SS Z1SS 9.91033274E-04 2 1000022 1000023 # HA0 --> Z1SS Z2SS 5.67365362E-07 2 25 23 # HA0 --> HL0 Z0 # PDG Width DECAY 37 1.30214748E+01 # H+ decays # BR NDA ID1 ID2 ID3 ID4 1.32508511E-08 2 12 -11 # H+ --> NUE E+ 5.59474807E-04 2 14 -13 # H+ --> NUM MU+ 1.60239652E-01 2 16 -15 # H+ --> NUT TAU+ 1.49208545E-05 2 2 -1 # H+ --> UP DB 6.02875138E-03 2 4 -3 # H+ --> CH SB 8.13027143E-01 2 6 -5 # H+ --> TP BB 1.50601589E-03 2 1000024 1000022 # H+ --> W1SS+ Z1SS 7.12423457E-07 2 25 24 # H+ --> HL0 W+ 1.86233055E-02 2 -1000015 1000016 # H+ --> TAU1+ NUTL �������������������������������������������������������herwig++-2.6.0.orig/src/Zprime.model����������������������������������������������������������������0000644�0001750�0001750�00000007032�11754474774�020060� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Common setup for Zprime models # # This file does not contain anything that # users need to touch. User settings are in # ???-ZP.in # ################################################### # # Particle Data object for the new resonances # ################################################### cd /Herwig/Particles # Z prime model create /ThePEG/ParticleData Zp setup Zp 32 Zp 700.0 0.0 0.0 0.0 0 0 3 0 ################################################### # # Main directory and model object # ################################################### mkdir /Herwig/NewPhysics/Zprime cd /Herwig/NewPhysics/Zprime create Herwig::ZprimeModel Model HwZprimeModel.so # SM couplings set Model:QCD/RunningAlphaS /Herwig/AlphaS set Model:EW/RunningAlphaEM /Herwig/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 ################################################### # # Vertices # ################################################### # create model vertices mkdir /Herwig/Vertices/Zprime cd /Herwig/Vertices/Zprime library HwZprimeModel.so create Herwig::ZprimeModelZPQQVertex Zprime_ZPQQVertex cd /Herwig/NewPhysics/Zprime # 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 up spin correlation Decayers # ################################################### cd /Herwig/NewPhysics set TwoBodyDC:CreateDecayModes Yes set ThreeBodyDC:CreateDecayModes No insert NewModel:DecayParticles 0 /Herwig/Particles/Zp ################################################### # Set up the model framework ################################################### set Zprime/Model:ModelGenerator NewModel ################################################### # # Choose Model over SM # ################################################### cd /Herwig/Generators set LEPGenerator:StandardModelParameters /Herwig/NewPhysics/Zprime/Model set LHCGenerator:StandardModelParameters /Herwig/NewPhysics/Zprime/Model ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LHC-LQ.in�������������������������������������������������������������������0000644�0001750�0001750�00000003746�11756407446�017042� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator for the Leptoquark model # in hadron collisions # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read Leptoquark.model cd /Herwig/NewPhysics ################################################## # # This section contains the user defined settings # ################################################## # Example hard process: Incoming proton, outgoing leptoquarks insert HPConstructor:Incoming 0 /Herwig/Particles/u insert HPConstructor:Incoming 1 /Herwig/Particles/ubar insert HPConstructor:Incoming 2 /Herwig/Particles/d insert HPConstructor:Incoming 3 /Herwig/Particles/dbar insert HPConstructor:Incoming 4 /Herwig/Particles/s insert HPConstructor:Incoming 5 /Herwig/Particles/sbar insert HPConstructor:Incoming 6 /Herwig/Particles/c insert HPConstructor:Incoming 7 /Herwig/Particles/cbar insert HPConstructor:Incoming 8 /Herwig/Particles/g insert HPConstructor:Outgoing 0 /Herwig/Particles/S0 insert HPConstructor:Outgoing 1 /Herwig/Particles/S0bar # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV cd /Herwig/Shower set SplittingGenerator:ISR Yes set SplittingGenerator:FSR Yes # Cuts cd /Herwig/Cuts set JetKtCut:MinKT 0.0*GeV set QCDCuts:MHatMax 8000.0*GeV set EECuts:MHatMin 0.0*GeV set PhotonKtCut:MinKT 0.0*GeV set PhotonKtCut:MinEta -10. set PhotonKtCut:MaxEta 10. set MassCut:MinM 0.*GeV # Other parameters for run cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 8000.0 set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 1000 set LHCGenerator:MaxErrors 10000 saverun LHC-LQ LHCGenerator ��������������������������herwig++-2.6.0.orig/src/Makefile.am�����������������������������������������������������������������0000644�0001750�0001750�00000010047�11756442663�017616� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������SUBDIRS = defaults AUTOMAKE_OPTIONS = -Wno-portability defaultsdir = ${pkgdatadir}/defaults bin_PROGRAMS = Herwig++ Herwig___SOURCES = Herwig++.cc herwigopts.c herwigopts.h BUILT_SOURCES = herwigopts.c herwigopts.h Herwig___LDFLAGS = $(AM_LDFLAGS) -export-dynamic $(THEPEGLDFLAGS) Herwig___LDADD = $(THEPEGLIB) -ldl Herwig___CPPFLAGS = $(AM_CPPFLAGS) \ -DHERWIG_PKGDATADIR="\"$(pkgdatadir)\"" \ -DHERWIG_PKGLIBDIR="\"$(pkglibdir)\"" \ -DTHEPEG_PKGLIBDIR="\"$(THEPEGPATH)/lib/ThePEG\"" bin_SCRIPTS = herwig-config HELPERFILES = CMSSM40.1.1.slha RPV3.1.slha NMSSM.spc \ ADD.model \ Leptoquark.model \ MSSM.model \ MUED.model \ NMSSM.model \ RS.model \ Sextet.model \ TTBA.model \ Zprime.model 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-diffractive.in \ LHC-GammaGamma.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-Matchbox.in \ TVT-Powheg.in \ TVT-TTBA.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 ## checking targets ## HerwigDefaults.rpo: Herwig++ $(srcdir)/defaults/*.in defaults/PDF.in defaults/Analysis.in $(top_builddir)/lib/*.so ./Herwig++ init -L$(top_builddir)/lib -i defaults/HerwigDefaults.in -D check_BSM_Full= check_BSM= if WANT_MSSM check_BSM += check-LHC-RPV check_BSM_Full += check-LHC-RPV check-LHC-MSSM endif if WANT_NMSSM check_BSM_Full += check-LHC-NMSSM endif if WANT_UED check_BSM += check-LHC-MUED check_BSM_Full += check-LHC-MUED endif if WANT_RS check_BSM += check-LHC-RS check_BSM_Full += check-LHC-RS endif if WANT_TRP check_BSM_Full += check-LHC-TRP endif if WANT_ADD check_BSM_Full += check-LHC-ADD endif if WANT_TTBA check_BSM_Full += check-LHC-TTBA endif if WANT_ZPRIME check_BSM_Full += check-LHC-ZP endif check-local: check-LHC check-LEP check-DIS check-ILC check-GammaGamma $(check_BSM) check-LHC-Powheg check-Powheg: check-LHC-Powheg check-TVT-Powheg check-BSM: $(check_BSM_Full) link-helper-files: @for i in $(HELPERFILES); do \ if test -f $(srcdir)/$$i -a ! -e $$i; then \ $(LN_S) -f $(srcdir)/$$i; fi; done check-%: $(srcdir)/%.in HerwigDefaults.rpo link-helper-files ./Herwig++ read $< -D ./Herwig++ run $(notdir $(subst .in,.run,$<)) -N500 -d1 -D ## valgrind targets ## VALGRIND=valgrind --leak-check=full --num-callers=25 --freelist-vol=100000000 --leak-resolution=med --trace-children=yes valgrind: valgrind-init valgrind-read valgrind-run valgrind-init: $(VALGRIND) ./Herwig++ init -d1 -D -L$(top_builddir)/lib -i 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 SETUPTHEPEG=$(THEPEGPATH)/bin/setupThePEG THEPEGREPO=$(THEPEGPATH)/lib/ThePEG/ThePEGDefaults.rpo install-data-hook: @echo Creating repository @./Herwig++ init -L$(DESTDIR)$(pkglibdir) -i $(DESTDIR)$(defaultsdir)/HerwigDefaults.in -r $(DESTDIR)$(pkgdatadir)/HerwigDefaults.rpo 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)" \ -l$(DESTDIR)$(pkglibdir) ; \ 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 GENGETOPT = gengetopt %opts.h %opts.c : %opts.ggo $(GENGETOPT) < $< �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/Leptoquark.model������������������������������������������������������������0000644�0001750�0001750�00000017776�11754474774�020761� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Common setup for Leptoquark models # # See LHC-LQ.in or ILC-LQ.in for example usage # # This file does not contain anything that # users need to touch. User settings are in # ???-LQ.in # ################################################### # # Particle Data object for the Leptoquarks # ################################################### cd /Herwig/Particles create /ThePEG/ParticleData S0bar setup S0bar 9911561 S0bar 400.0 0.0 0.0 0.0 -1 3 1 0 create /ThePEG/ParticleData S0 setup S0 -9911561 S0 400.0 0.0 0.0 0.0 1 -3 1 0 makeanti S0bar S0 create /ThePEG/ParticleData ~S0bar setup ~S0bar 9921551 ~S0bar 400.0 0.0 0.0 0.0 -4 3 1 0 create /ThePEG/ParticleData ~S0 setup ~S0 -9921551 ~S0 400.0 0.0 0.0 0.0 4 -3 1 0 makeanti ~S0bar ~S0 create /ThePEG/ParticleData S1pbar setup S1pbar 9931551 S1pbar 400.0 0.0 0.0 0.0 -4 3 1 0 create /ThePEG/ParticleData S1p setup S1p -9931551 S1p 400.0 0.0 0.0 0.0 4 -3 1 0 makeanti S1pbar S1p create /ThePEG/ParticleData S1mbar setup S1mbar 9931661 S1mbar 400.0 0.0 0.0 0.0 2 3 1 0 create /ThePEG/ParticleData S1m setup S1m -9931661 S1m 400.0 0.0 0.0 0.0 -2 -3 1 0 makeanti S1mbar S1m create /ThePEG/ParticleData S1zbar setup S1zbar 9931561 S1zbar 400.0 0.0 0.0 0.0 -1 3 1 0 create /ThePEG/ParticleData S1z setup S1z -9931561 S1z 400.0 0.0 0.0 0.0 1 -3 1 0 makeanti S1zbar S1z create /ThePEG/ParticleData S12p setup S12p 9941561 S12p 400.0 0.0 0.0 0.0 5 3 1 0 create /ThePEG/ParticleData S12pbar setup S12pbar -9941561 S12pbar 400.0 0.0 0.0 0.0 -5 -3 1 0 makeanti S12p S12pbar create /ThePEG/ParticleData S12m setup S12m 9941551 S12m 400.0 0.0 0.0 0.0 2 3 1 0 create /ThePEG/ParticleData S12mbar setup S12mbar -9941551 S12mbar 400.0 0.0 0.0 0.0 -2 -3 1 0 makeanti S12m S12mbar create /ThePEG/ParticleData S12tp setup S12tp 9951551 S12tp 400.0 0.0 0.0 0.0 2 3 1 0 create /ThePEG/ParticleData S12tpbar setup S12tpbar -9951551 S12tpbar 400.0 0.0 0.0 0.0 -2 -3 1 0 makeanti S12tp S12tpbar create /ThePEG/ParticleData S12tm setup S12tm 9951651 S12tm 400.0 0.0 0.0 0.0 -1 3 1 0 create /ThePEG/ParticleData S12tmbar setup S12tmbar -9951651 S12tmbar 400.0 0.0 0.0 0.0 1 -3 1 0 makeanti S12tm S12tmbar create /ThePEG/ParticleData dS0 setup dS0 9961551 dS0 400.0 0.0 0.0 0.0 2 3 1 0 create /ThePEG/ParticleData dS0bar setup dS0bar -9961551 dS0bar 400.0 0.0 0.0 0.0 -2 -3 1 0 makeanti dS0 dS0bar create /ThePEG/ParticleData ~dS0 setup ~dS0 9971561 ~dS0 400.0 0.0 0.0 0.0 5 3 1 0 create /ThePEG/ParticleData ~dS0bar setup ~dS0bar -9971561 ~dS0bar 400.0 0.0 0.0 0.0 -5 -3 1 0 makeanti ~dS0 ~dS0bar create /ThePEG/ParticleData dS1p setup dS1p 9981561 dS1p 400.0 0.0 0.0 0.0 5 3 1 0 create /ThePEG/ParticleData dS1pbar setup dS1pbar -9981561 dS1pbar 400.0 0.0 0.0 0.0 -5 -3 1 0 makeanti dS1p dS1pbar create /ThePEG/ParticleData dS1m setup dS1m 9981651 dS1m 400.0 0.0 0.0 0.0 -1 3 1 0 create /ThePEG/ParticleData dS1mbar setup dS1mbar -9981651 dS1mbar 400.0 0.0 0.0 0.0 1 -3 1 0 makeanti dS1m dS1mbar create /ThePEG/ParticleData dS1z setup dS1z 9981551 dS1z 400.0 0.0 0.0 0.0 2 3 1 0 create /ThePEG/ParticleData dS1zbar setup dS1zbar -9981551 dS1zbar 400.0 0.0 0.0 0.0 -2 -3 1 0 makeanti dS1z dS1zbar create /ThePEG/ParticleData dS12pbar setup dS12pbar 9991551 dS12pbar 400.0 0.0 0.0 0.0 -4 3 1 0 create /ThePEG/ParticleData dS12p setup dS12p -9991551 dS12p 400.0 0.0 0.0 0.0 4 -3 1 0 makeanti dS12pbar dS12p create /ThePEG/ParticleData dS12mbar setup dS12mbar 9991561 dS12mbar 400.0 0.0 0.0 0.0 -1 3 1 0 create /ThePEG/ParticleData dS12m setup dS12m -9991561 dS12m 400.0 0.0 0.0 0.0 1 -3 1 0 makeanti dS12mbar dS12m create /ThePEG/ParticleData dS12tpbar setup dS12tpbar 9901561 dS12tpbar 400.0 0.0 0.0 0.0 -1 3 1 0 create /ThePEG/ParticleData dS12tp setup dS12tp -9901561 dS12tp 400.0 0.0 0.0 0.0 1 -3 1 0 makeanti dS12tpbar dS12tp create /ThePEG/ParticleData dS12tmbar setup dS12tmbar 9901661 dS12tmbar 400.0 0.0 0.0 0.0 2 3 1 0 create /ThePEG/ParticleData dS12tm setup dS12tm -9901661 dS12tm 400.0 0.0 0.0 0.0 -2 -3 1 0 makeanti dS12tmbar dS12tm ################################################### # # Main directory and model object # ################################################### mkdir /Herwig/NewPhysics/Leptoquark cd /Herwig/NewPhysics/Leptoquark create Herwig::LeptoquarkModel Model HwLeptoquarkModel.so # SM couplings set Model:QCD/RunningAlphaS /Herwig/AlphaS set Model:EW/RunningAlphaEM /Herwig/AlphaEM set Model:EW/CKM /Herwig/CKM set Model:RunningMass /Herwig/RunningMass set Model:LQCoupling 0.312 set Model:g_S0_L 1.0 set Model:g_S0_R 1.0 set Model:g_S0t_R 1.0 set Model:g_S1_L 1.0 set Model:g_S12_L 1.0 set Model:g_S12_R 1.0 set Model:g_S12t_L 1.0 set Model:g_dS0_L 1.0 set Model:g_dS0_R 1.0 set Model:g_dS0t_R 1.0 set Model:g_dS1_L 1.0 set Model:g_dS12_L 1.0 set Model:g_dS12_R 1.0 set Model:g_dS12t_L 1.0 set Model:derivscale 500.0 ################################################### # # Vertices # ################################################### # create Leptoquark model vertices mkdir /Herwig/Vertices/Leptoquark cd /Herwig/Vertices/Leptoquark library HwLeptoquarkModel.so create Herwig::LeptoquarkModelSLQSLQGVertex Leptoquark_SLQSLQGVertex create Herwig::LeptoquarkModelSLQSLQGGVertex Leptoquark_SLQSLQGGVertex create Herwig::LeptoquarkModelSLQFFVertex Leptoquark_SLQFFVertex cd /Herwig/NewPhysics/Leptoquark # 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 # Leptoquark model vertices set Model:Vertex/SLQSLQG /Herwig/Vertices/Leptoquark/Leptoquark_SLQSLQGVertex set Model:Vertex/SLQSLQGG /Herwig/Vertices/Leptoquark/Leptoquark_SLQSLQGGVertex set Model:Vertex/SLQFF /Herwig/Vertices/Leptoquark/Leptoquark_SLQFFVertex ################################################### # # Set up spin correlation Decayers # ################################################### cd /Herwig/NewPhysics set TwoBodyDC:CreateDecayModes Yes set ThreeBodyDC:CreateDecayModes No insert NewModel:DecayParticles 0 /Herwig/Particles/S0bar insert NewModel:DecayParticles 1 /Herwig/Particles/~S0bar insert NewModel:DecayParticles 2 /Herwig/Particles/S1pbar insert NewModel:DecayParticles 3 /Herwig/Particles/S1mbar insert NewModel:DecayParticles 4 /Herwig/Particles/S1zbar insert NewModel:DecayParticles 5 /Herwig/Particles/S12p insert NewModel:DecayParticles 6 /Herwig/Particles/S12m insert NewModel:DecayParticles 7 /Herwig/Particles/S12tp insert NewModel:DecayParticles 8 /Herwig/Particles/S12tm insert NewModel:DecayParticles 9 /Herwig/Particles/dS0 insert NewModel:DecayParticles 10 /Herwig/Particles/~dS0 insert NewModel:DecayParticles 11 /Herwig/Particles/dS1p insert NewModel:DecayParticles 12 /Herwig/Particles/dS1m insert NewModel:DecayParticles 13 /Herwig/Particles/dS1z insert NewModel:DecayParticles 14 /Herwig/Particles/dS12pbar insert NewModel:DecayParticles 15 /Herwig/Particles/dS12mbar insert NewModel:DecayParticles 16 /Herwig/Particles/dS12tpbar insert NewModel:DecayParticles 17 /Herwig/Particles/dS12tmbar ################################################### # Set up the model framework ################################################### set Leptoquark/Model:ModelGenerator NewModel ################################################### # # Choose Leptoquark over SM # ################################################### cd /Herwig/Generators set LEPGenerator:StandardModelParameters /Herwig/NewPhysics/Leptoquark/Model set LHCGenerator:StandardModelParameters /Herwig/NewPhysics/Leptoquark/Model #insert /Herwig/Shower/ShowerHandler:DecayInShower 0 9911561 ��herwig++-2.6.0.orig/src/defaults/�������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464211�017360� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/DiffractiveParticles.in��������������������������������������������0000644�0001750�0001750�00000000310�11754474774�024014� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# for MEMinBias: create ThePEG::BeamParticleData pomeron setup pomeron 990 pomeron 0.0 0.0 0.0 0.0 0 0 0 1 create ThePEG::BeamParticleData reggeon setup reggeon 110 reggeon 0.0 0.0 0.0 0.0 0 0 0 1 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/Partons.in���������������������������������������������������������0000644�0001750�0001750�00000001271�11754474774�021354� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������mkdir /Herwig/Partons cd /Herwig/Partons create ThePEG::NoRemnants NoRemnants create ThePEG::NoPDF NoPDF newdef NoPDF:RemnantHandler NoRemnants create ThePEG::UnResolvedRemnant LeptonRemnants UnResolvedRemnant.so create Herwig::HwRemDecayer RemnantDecayer HwShower.so newdef RemnantDecayer:PomeronStructure Gluon newdef RemnantDecayer:colourDisrupt 0.80 create ThePEG::SoftRemnantHandler HadronRemnants newdef HadronRemnants:RemnantDecayer RemnantDecayer read PDF.in # Make particle extractors create ThePEG::PartonExtractor EEExtractor newdef EEExtractor:NoPDF NoPDF cp EEExtractor QCDExtractor newdef QCDExtractor:FlatSHatY 1 cp EEExtractor DISExtractor newdef DISExtractor:FlatSHatY 1 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/leptons.in���������������������������������������������������������0000644�0001750�0001750�00000002353�11754474774�021414� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # file containing the particle data for the leptons # create ThePEG::PolarizedBeamParticleData e- setup e- 11 e- 0.00051099892 0. 0 0 -3 0 2 1 create ThePEG::BeamParticleData mu- setup mu- 13 mu- 0.105658369 2.9959121177432E-19 0 658654 -3 0 2 1 create ThePEG::BeamParticleData mu+ setup mu+ -13 mu+ 0.105658369 2.9959121177432E-19 0 658654 3 0 2 1 makeanti mu+ mu- create ThePEG::PolarizedBeamParticleData e+ setup e+ -11 e+ 0.00051099892 0. 0 0 3 0 2 1 makeanti e+ e- create ThePEG::ParticleData tau+ setup tau+ -15 tau+ 1.77699 2.2652617380324E-12 0 0.08711 3 0 2 0 create ThePEG::ParticleData tau- setup tau- 15 tau- 1.77699 2.2652617380324E-12 0 0.08711 -3 0 2 0 makeanti tau- tau+ create ThePEG::BeamParticleData nu_e setup nu_e 12 nu_e 0 0. 0 0 0 0 2 1 create ThePEG::BeamParticleData nu_ebar setup nu_ebar -12 nu_ebar 0 0. 0 0 0 0 2 1 makeanti nu_ebar nu_e create ThePEG::BeamParticleData nu_mu setup nu_mu 14 nu_mu 0 0. 0 0 0 0 2 1 create ThePEG::BeamParticleData nu_mubar setup nu_mubar -14 nu_mubar 0 0. 0 0 0 0 2 1 makeanti nu_mubar nu_mu create ThePEG::ParticleData nu_tau setup nu_tau 16 nu_tau 0 0. 0 0 0 0 2 1 create ThePEG::ParticleData nu_taubar setup nu_taubar -16 nu_taubar 0 0. 0 0 0 0 2 1 makeanti nu_taubar nu_tau �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/DipoleShowerParameters-NLO.in��������������������������������������0000644�0001750�0001750�00000013656�11754474774�025016� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################################################ # Setup the dipole shower parameters ################################################################################ cd /Herwig/DipoleShower ################################################################################ # setup alphas ################################################################################ cp NLOAlphaS AlphaS set AlphaS:input_alpha_s 0.1175576 set AlphaS:freezing_scale 0.0*GeV set /Herwig/Model:QCD/RunningAlphaS AlphaS ################################################################################ # matching parameters ################################################################################ set /Herwig/MatrixElements/Matchbox/Utility/MECorrectionHandler:FFPtCut 1.245924*GeV set /Herwig/MatrixElements/Matchbox/Utility/MECorrectionHandler:FFScreeningScale 0.0*GeV set /Herwig/MatrixElements/Matchbox/Utility/MECorrectionHandler:FIPtCut 0.706986*GeV set /Herwig/MatrixElements/Matchbox/Utility/MECorrectionHandler:FIScreeningScale 1.017780*GeV set /Herwig/MatrixElements/Matchbox/Utility/MECorrectionHandler:IIPtCut 0.275894*GeV set /Herwig/MatrixElements/Matchbox/Utility/MECorrectionHandler:IIScreeningScale 0.254028*GeV ################################################################################ # shower parameters ################################################################################ set DipoleShowerHandler:GlobalAlphaS AlphaS set DipoleShowerHandler:EvolutionOrdering ChainPtOrdering set IntrinsicPtGenerator:ValenceIntrinsicPtScale 1.26905*GeV set IntrinsicPtGenerator:SeaIntrinsicPtScale 1.1613*GeV cd /Herwig/DipoleShower/Kinematics set FFLightKinematics:IRCutoff 1.245924*GeV set FILightKinematics:IRCutoff 0.706986*GeV set IFLightKinematics:IRCutoff 0.706986*GeV set IILightKinematics:IRCutoff 0.275894*GeV ################################################################################ # shower parameters at boundary to non-perturbative domain ################################################################################ set /Herwig/Particles/g:ConstituentMass 1.006752*GeV cd /Herwig/DipoleShower/Kernels set FFgx2ggxDipoleKernel:ScreeningScale 0.0*GeV set FFqx2qgxDipoleKernel:ScreeningScale 0.0*GeV set FFgx2uuxDipoleKernel:ScreeningScale 0.0*GeV set FFgx2ddxDipoleKernel:ScreeningScale 0.0*GeV set FFgx2ssxDipoleKernel:ScreeningScale 0.0*GeV set FFgx2ccxDipoleKernel:ScreeningScale 0.0*GeV set FFgx2bbxDipoleKernel:ScreeningScale 0.0*GeV set FIgx2ggxDipoleKernel:ScreeningScale 1.017780*GeV set FIqx2qgxDipoleKernel:ScreeningScale 1.017780*GeV set FIgx2uuxDipoleKernel:ScreeningScale 1.017780*GeV set FIgx2ddxDipoleKernel:ScreeningScale 1.017780*GeV set FIgx2ssxDipoleKernel:ScreeningScale 1.017780*GeV set FIgx2ccxDipoleKernel:ScreeningScale 1.017780*GeV set FIgx2bbxDipoleKernel:ScreeningScale 1.017780*GeV set IFgx2ggxDipoleKernel:ScreeningScale 1.017780*GeV set IFqx2qgxDipoleKernel:ScreeningScale 1.017780*GeV set IFqx2gqxDipoleKernel:ScreeningScale 1.017780*GeV set IFgx2uubarxDipoleKernel:ScreeningScale 1.017780*GeV set IFgx2ubaruxDipoleKernel:ScreeningScale 1.017780*GeV set IFgx2ddbarxDipoleKernel:ScreeningScale 1.017780*GeV set IFgx2dbardxDipoleKernel:ScreeningScale 1.017780*GeV set IFgx2ssbarxDipoleKernel:ScreeningScale 1.017780*GeV set IFgx2sbarsxDipoleKernel:ScreeningScale 1.017780*GeV set IFgx2ccbarxDipoleKernel:ScreeningScale 1.017780*GeV set IFgx2cbarcxDipoleKernel:ScreeningScale 1.017780*GeV set IFgx2bbbarxDipoleKernel:ScreeningScale 1.017780*GeV set IFgx2bbarbxDipoleKernel:ScreeningScale 1.017780*GeV set IIgx2ggxDipoleKernel:ScreeningScale 0.254028*GeV set IIqx2qgxDipoleKernel:ScreeningScale 0.254028*GeV set IIqx2gqxDipoleKernel:ScreeningScale 0.254028*GeV set IIgx2uubarxDipoleKernel:ScreeningScale 0.254028*GeV set IIgx2ubaruxDipoleKernel:ScreeningScale 0.254028*GeV set IIgx2ddbarxDipoleKernel:ScreeningScale 0.254028*GeV set IIgx2dbardxDipoleKernel:ScreeningScale 0.254028*GeV set IIgx2ssbarxDipoleKernel:ScreeningScale 0.254028*GeV set IIgx2sbarsxDipoleKernel:ScreeningScale 0.254028*GeV set IIgx2ccbarxDipoleKernel:ScreeningScale 0.254028*GeV set IIgx2cbarcxDipoleKernel:ScreeningScale 0.254028*GeV set IIgx2bbbarxDipoleKernel:ScreeningScale 0.254028*GeV set IIgx2bbarbxDipoleKernel:ScreeningScale 0.254028*GeV ################################################################################ # hadronization parameters ################################################################################ cd /Herwig/Hadronization set ClusterFissioner:ClMaxLight 3.66643*GeV set ClusterFissioner:ClPowLight 5.682173 set ClusterFissioner:PSplitLight 0.7712919 set ClusterDecayer:ClDirLight 1 set ClusterDecayer:ClSmrLight 3.118342 set ClusterFissioner:ClMaxCharm 3.66643*GeV set ClusterFissioner:ClPowCharm 5.682173 set ClusterFissioner:PSplitCharm 0.7712919 set ClusterDecayer:ClDirCharm 1 set ClusterDecayer:ClSmrCharm 3.118342 set LightClusterDecayer:SingleHadronLimitCharm 0.0 set ClusterFissioner:ClMaxBottom 3.66643*GeV set ClusterFissioner:ClPowBottom 5.682173 set ClusterFissioner:PSplitBottom 0.7712919 set ClusterDecayer:ClDirBottom 1 set ClusterDecayer:ClSmrBottom 3.118342 set LightClusterDecayer:SingleHadronLimitBottom 0.0 set HadronSelector:PwtUquark 1.0 set HadronSelector:PwtDquark 1.0 set HadronSelector:PwtSquark 1.0 set HadronSelector:PwtCquark 1.0 set HadronSelector:PwtBquark 1.0 set HadronSelector:PwtDIquark 1.0 set HadronSelector:SngWt 1.0 set HadronSelector:DecWt 1.0 cd / ����������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/Matchbox.in��������������������������������������������������������0000644�0001750�0001750�00000044150�11754474774�021476� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################################################ # Input file to setup Matchbox NLO matrix elements ################################################################################ ################################################################################ # # /!\ Nothing to be done below here, except you exactly know # what you're doing. # # Really. # ################################################################################ # ..... # .... # ... # .. # . # library HwMatchbox.so mkdir /Herwig/MatrixElements/Matchbox cd /Herwig/MatrixElements/Matchbox ################################################################################ # For the moment, we can only deal with massless partons ################################################################################ set /Herwig/Particles/d:NominalMass 0*GeV set /Herwig/Particles/dbar:NominalMass 0*GeV set /Herwig/Particles/u:NominalMass 0*GeV set /Herwig/Particles/ubar:NominalMass 0*GeV set /Herwig/Particles/s:NominalMass 0*GeV set /Herwig/Particles/sbar:NominalMass 0*GeV set /Herwig/Particles/c:NominalMass 0*GeV set /Herwig/Particles/cbar:NominalMass 0*GeV set /Herwig/Particles/b:NominalMass 0*GeV set /Herwig/Particles/bbar:NominalMass 0*GeV ################################################################################ # Phasespace generators ################################################################################ cd /Herwig/MatrixElements/Matchbox mkdir Phasespace cd Phasespace create Herwig::MatchboxRambo Rambo create Herwig::TreePhasespace TreePhasespace ################################################################################ # Scale choices ################################################################################ cd /Herwig/MatrixElements/Matchbox mkdir Scales cd Scales create Herwig::MatchboxScaleChoice SHatScale cp SHatScale FixedScale set FixedScale:FixedScale 100.*GeV create Herwig::MatchboxPtScale MaxPtScale create Herwig::MatchboxLeptonMassScale LeptonMassScale ################################################################################ # AlphaS ################################################################################ cd /Herwig/MatrixElements/Matchbox mkdir AlphaS cd AlphaS library HwDipoleShowerAlphaS.so create matchbox::lo_alpha_s LOAlphaS set LOAlphaS:min_active_flavours 5 create matchbox::nlo_alpha_s NLOAlphaS set NLOAlphaS:exact_evaluation large_scale set NLOAlphaS:min_active_flavours 5 ################################################################################ # Utilities ################################################################################ cd /Herwig/MatrixElements/Matchbox mkdir Utility cd Utility create Herwig::PowhegSplittingGenerator MECorrectionHandler set MECorrectionHandler:FFPtCut 1.0*GeV set MECorrectionHandler:FFScreeningScale 0.0*GeV set MECorrectionHandler:FIPtCut 1.0*GeV set MECorrectionHandler:FIScreeningScale 0.0*GeV set MECorrectionHandler:IIPtCut 1.0*GeV set MECorrectionHandler:IIScreeningScale 0.0*GeV create Herwig::SimpleColourBasis SimpleColourBasis create Herwig::Tree2toNGenerator DiagramGenerator insert DiagramGenerator:Vertices 0 /Herwig/Vertices/FFGVertex insert DiagramGenerator:Vertices 0 /Herwig/Vertices/FFHVertex insert DiagramGenerator:Vertices 0 /Herwig/Vertices/FFPVertex insert DiagramGenerator:Vertices 0 /Herwig/Vertices/FFWVertex insert DiagramGenerator:Vertices 0 /Herwig/Vertices/FFZVertex insert DiagramGenerator:Vertices 0 /Herwig/Vertices/GGGVertex insert DiagramGenerator:Vertices 0 /Herwig/Vertices/HGGVertex insert DiagramGenerator:Vertices 0 /Herwig/Vertices/HHHVertex insert DiagramGenerator:Vertices 0 /Herwig/Vertices/HPPVertex insert DiagramGenerator:Vertices 0 /Herwig/Vertices/WWHVertex insert DiagramGenerator:Vertices 0 /Herwig/Vertices/WWWVertex create Herwig::MatchboxMECache Cache create Herwig::MatchboxFactory Factory set Factory:DiagramGenerator /Herwig/MatrixElements/Matchbox/Utility/DiagramGenerator set Factory:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace set Factory:ScaleChoice /Herwig/MatrixElements/Matchbox/Scales/SHatScale set Factory:Cache /Herwig/MatrixElements/Matchbox/Utility/Cache do Factory:StartParticleGroup p insert Factory:ParticleGroup 0 /Herwig/Particles/u insert Factory:ParticleGroup 0 /Herwig/Particles/ubar insert Factory:ParticleGroup 0 /Herwig/Particles/d insert Factory:ParticleGroup 0 /Herwig/Particles/dbar insert Factory:ParticleGroup 0 /Herwig/Particles/s insert Factory:ParticleGroup 0 /Herwig/Particles/sbar insert Factory:ParticleGroup 0 /Herwig/Particles/c insert Factory:ParticleGroup 0 /Herwig/Particles/cbar insert Factory:ParticleGroup 0 /Herwig/Particles/b insert Factory:ParticleGroup 0 /Herwig/Particles/bbar insert Factory:ParticleGroup 0 /Herwig/Particles/g do Factory:EndParticleGroup do Factory:StartParticleGroup j insert Factory:ParticleGroup 0 /Herwig/Particles/u insert Factory:ParticleGroup 0 /Herwig/Particles/ubar insert Factory:ParticleGroup 0 /Herwig/Particles/d insert Factory:ParticleGroup 0 /Herwig/Particles/dbar insert Factory:ParticleGroup 0 /Herwig/Particles/s insert Factory:ParticleGroup 0 /Herwig/Particles/sbar insert Factory:ParticleGroup 0 /Herwig/Particles/c insert Factory:ParticleGroup 0 /Herwig/Particles/cbar insert Factory:ParticleGroup 0 /Herwig/Particles/b insert Factory:ParticleGroup 0 /Herwig/Particles/bbar insert Factory:ParticleGroup 0 /Herwig/Particles/g do Factory:EndParticleGroup do Factory:StartParticleGroup e+ insert Factory:ParticleGroup 0 /Herwig/Particles/e+ do Factory:EndParticleGroup do Factory:StartParticleGroup e- insert Factory:ParticleGroup 0 /Herwig/Particles/e- do Factory:EndParticleGroup do Factory:StartParticleGroup mu+ insert Factory:ParticleGroup 0 /Herwig/Particles/mu+ do Factory:EndParticleGroup do Factory:StartParticleGroup mu- insert Factory:ParticleGroup 0 /Herwig/Particles/mu- do Factory:EndParticleGroup do Factory:StartParticleGroup l+ insert Factory:ParticleGroup 0 /Herwig/Particles/e+ insert Factory:ParticleGroup 0 /Herwig/Particles/mu+ do Factory:EndParticleGroup do Factory:StartParticleGroup l- insert Factory:ParticleGroup 0 /Herwig/Particles/e- insert Factory:ParticleGroup 0 /Herwig/Particles/mu- do Factory:EndParticleGroup ################################################################################ # Integrators and samplers ################################################################################ cd /Herwig/MatrixElements/Matchbox mkdir Samplers cd Samplers library HwExsample2.so create Herwig::ExSampler ExSampler create Herwig::BinSampler FlatSampler create Herwig::ProjectingSampler ProjectingSampler create Herwig::GeneralSampler Sampler set Sampler:BinSampler ExSampler ################################################################################ # Builtin simple matrix elements ################################################################################ cd /Herwig/MatrixElements/Matchbox mkdir Builtin cd Builtin ################################################################################ # e+e- to jj ################################################################################ create Herwig::MatchboxMEllbar2qqbar MEllbar2qqbar set MEllbar2qqbar:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace insert MEllbar2qqbar:LeptonFlavours[0] /Herwig/Particles/e- insert MEllbar2qqbar:QuarkFlavours[0] /Herwig/Particles/d insert MEllbar2qqbar:QuarkFlavours[1] /Herwig/Particles/u insert MEllbar2qqbar:QuarkFlavours[2] /Herwig/Particles/s insert MEllbar2qqbar:QuarkFlavours[3] /Herwig/Particles/c insert MEllbar2qqbar:QuarkFlavours[4] /Herwig/Particles/b create Herwig::MatchboxMEllbar2qqbarg MEllbar2qqbarg set MEllbar2qqbarg:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace insert MEllbar2qqbarg:LeptonFlavours[0] /Herwig/Particles/e- insert MEllbar2qqbarg:QuarkFlavours[0] /Herwig/Particles/d insert MEllbar2qqbarg:QuarkFlavours[1] /Herwig/Particles/u insert MEllbar2qqbarg:QuarkFlavours[2] /Herwig/Particles/s insert MEllbar2qqbarg:QuarkFlavours[3] /Herwig/Particles/c insert MEllbar2qqbarg:QuarkFlavours[4] /Herwig/Particles/b #------------------------------------------------------------------------------- create ThePEG::SubProcessHandler MEllbar2JetJetLO set MEllbar2JetJetLO:PartonExtractor /Herwig/Partons/EEExtractor set MEllbar2JetJetLO:Cuts /Herwig/Cuts/EECuts insert MEllbar2JetJetLO:MatrixElements[0] MEllbar2qqbar create ThePEG::SubProcessHandler MEllbar2JetJetJetLO set MEllbar2JetJetJetLO:PartonExtractor /Herwig/Partons/EEExtractor set MEllbar2JetJetJetLO:Cuts /Herwig/Cuts/EECuts insert MEllbar2JetJetJetLO:MatrixElements[0] MEllbar2qqbarg create Herwig::MatchboxFactory MEllbar2JetJetNLO set MEllbar2JetJetNLO:PartonExtractor /Herwig/Partons/EEExtractor set MEllbar2JetJetNLO:Cuts /Herwig/Cuts/EECuts insert MEllbar2JetJetNLO:BornMEs[0] MEllbar2qqbar insert MEllbar2JetJetNLO:RealEmissionMEs[0] MEllbar2qqbarg create Herwig::PowhegFactory MEllbar2JetJetNLOInclusive set MEllbar2JetJetNLOInclusive:PartonExtractor /Herwig/Partons/EEExtractor set MEllbar2JetJetNLOInclusive:Cuts /Herwig/Cuts/EECuts set MEllbar2JetJetNLOInclusive:MatchboxFactory MEllbar2JetJetNLO set MEllbar2JetJetNLOInclusive:BornScreening Off ################################################################################ # DIS ################################################################################ create Herwig::MatchboxMElP2lJet MElq2lq set MElq2lq:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace insert MElq2lq:LeptonFlavours[0] /Herwig/Particles/e+ insert MElq2lq:LeptonFlavours[1] /Herwig/Particles/e- insert MElq2lq:QuarkFlavours[0] /Herwig/Particles/d insert MElq2lq:QuarkFlavours[1] /Herwig/Particles/u insert MElq2lq:QuarkFlavours[2] /Herwig/Particles/s insert MElq2lq:QuarkFlavours[3] /Herwig/Particles/c insert MElq2lq:QuarkFlavours[4] /Herwig/Particles/b create Herwig::MatchboxMElP2lJet MElqbar2lqbar set MElqbar2lqbar:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace insert MElqbar2lqbar:LeptonFlavours[0] /Herwig/Particles/e+ insert MElqbar2lqbar:LeptonFlavours[1] /Herwig/Particles/e- insert MElqbar2lqbar:QuarkFlavours[0] /Herwig/Particles/dbar insert MElqbar2lqbar:QuarkFlavours[1] /Herwig/Particles/ubar insert MElqbar2lqbar:QuarkFlavours[2] /Herwig/Particles/sbar insert MElqbar2lqbar:QuarkFlavours[3] /Herwig/Particles/cbar insert MElqbar2lqbar:QuarkFlavours[4] /Herwig/Particles/bbar create Herwig::MatchboxMElq2lqg MElq2lqg set MElq2lqg:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace insert MElq2lqg:LeptonFlavours[0] /Herwig/Particles/e+ insert MElq2lqg:LeptonFlavours[1] /Herwig/Particles/e- insert MElq2lqg:QuarkFlavours[0] /Herwig/Particles/d insert MElq2lqg:QuarkFlavours[1] /Herwig/Particles/u insert MElq2lqg:QuarkFlavours[2] /Herwig/Particles/s insert MElq2lqg:QuarkFlavours[3] /Herwig/Particles/c insert MElq2lqg:QuarkFlavours[4] /Herwig/Particles/b create Herwig::MatchboxMElq2lqg MElqbar2lqbarg set MElqbar2lqbarg:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace insert MElqbar2lqbarg:LeptonFlavours[0] /Herwig/Particles/e+ insert MElqbar2lqbarg:LeptonFlavours[1] /Herwig/Particles/e- insert MElqbar2lqbarg:QuarkFlavours[0] /Herwig/Particles/dbar insert MElqbar2lqbarg:QuarkFlavours[1] /Herwig/Particles/ubar insert MElqbar2lqbarg:QuarkFlavours[2] /Herwig/Particles/sbar insert MElqbar2lqbarg:QuarkFlavours[3] /Herwig/Particles/cbar insert MElqbar2lqbarg:QuarkFlavours[4] /Herwig/Particles/bbar create Herwig::MatchboxMElg2lqqbar MElg2lqqbar set MElg2lqqbar:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace insert MElg2lqqbar:LeptonFlavours[0] /Herwig/Particles/e+ insert MElg2lqqbar:LeptonFlavours[1] /Herwig/Particles/e- insert MElg2lqqbar:QuarkFlavours[0] /Herwig/Particles/d insert MElg2lqqbar:QuarkFlavours[1] /Herwig/Particles/u insert MElg2lqqbar:QuarkFlavours[2] /Herwig/Particles/s insert MElg2lqqbar:QuarkFlavours[3] /Herwig/Particles/c insert MElg2lqqbar:QuarkFlavours[4] /Herwig/Particles/b #------------------------------------------------------------------------------- create ThePEG::SubProcessHandler MElP2lJetLO set MElP2lJetLO:PartonExtractor /Herwig/Partons/DISExtractor set MElP2lJetLO:Cuts /Herwig/Cuts/DISCuts insert MElP2lJetLO:MatrixElements[0] MElq2lq insert MElP2lJetLO:MatrixElements[1] MElqbar2lqbar create Herwig::MatchboxFactory MElP2lJetNLO set MElP2lJetNLO:PartonExtractor /Herwig/Partons/DISExtractor set MElP2lJetNLO:Cuts /Herwig/Cuts/DISCuts insert MElP2lJetNLO:BornMEs[0] MElq2lq insert MElP2lJetNLO:BornMEs[1] MElqbar2lqbar insert MElP2lJetNLO:RealEmissionMEs[0] MElq2lqg insert MElP2lJetNLO:RealEmissionMEs[1] MElqbar2lqbarg insert MElP2lJetNLO:RealEmissionMEs[2] MElg2lqqbar create Herwig::PowhegFactory MElP2lJetNLOInclusive set MElP2lJetNLOInclusive:PartonExtractor /Herwig/Partons/DISExtractor set MElP2lJetNLOInclusive:Cuts /Herwig/Cuts/DISCuts set MElP2lJetNLOInclusive:MatchboxFactory MElP2lJetNLO ################################################################################ # DY ################################################################################ create Herwig::MatchboxMEPP2llbar MEqqbar2llbar set MEqqbar2llbar:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace insert MEqqbar2llbar:LeptonFlavours[0] /Herwig/Particles/e- insert MEqqbar2llbar:QuarkFlavours[0] /Herwig/Particles/d insert MEqqbar2llbar:QuarkFlavours[1] /Herwig/Particles/u insert MEqqbar2llbar:QuarkFlavours[2] /Herwig/Particles/s insert MEqqbar2llbar:QuarkFlavours[3] /Herwig/Particles/c insert MEqqbar2llbar:QuarkFlavours[4] /Herwig/Particles/b create Herwig::MatchboxMEPP2llbar MEqbarq2llbar set MEqbarq2llbar:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace insert MEqbarq2llbar:LeptonFlavours[0] /Herwig/Particles/e- insert MEqbarq2llbar:QuarkFlavours[0] /Herwig/Particles/dbar insert MEqbarq2llbar:QuarkFlavours[1] /Herwig/Particles/ubar insert MEqbarq2llbar:QuarkFlavours[2] /Herwig/Particles/sbar insert MEqbarq2llbar:QuarkFlavours[3] /Herwig/Particles/cbar insert MEqbarq2llbar:QuarkFlavours[4] /Herwig/Particles/bbar create Herwig::MatchboxMEqqbar2llbarg MEqqbar2llbarg set MEqqbar2llbarg:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace insert MEqqbar2llbarg:LeptonFlavours[0] /Herwig/Particles/e- insert MEqqbar2llbarg:QuarkFlavours[0] /Herwig/Particles/d insert MEqqbar2llbarg:QuarkFlavours[1] /Herwig/Particles/u insert MEqqbar2llbarg:QuarkFlavours[2] /Herwig/Particles/s insert MEqqbar2llbarg:QuarkFlavours[3] /Herwig/Particles/c insert MEqqbar2llbarg:QuarkFlavours[4] /Herwig/Particles/b create Herwig::MatchboxMEqqbar2llbarg MEqbarq2llbarg set MEqbarq2llbarg:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace insert MEqbarq2llbarg:LeptonFlavours[0] /Herwig/Particles/e- insert MEqbarq2llbarg:QuarkFlavours[0] /Herwig/Particles/dbar insert MEqbarq2llbarg:QuarkFlavours[1] /Herwig/Particles/ubar insert MEqbarq2llbarg:QuarkFlavours[2] /Herwig/Particles/sbar insert MEqbarq2llbarg:QuarkFlavours[3] /Herwig/Particles/cbar insert MEqbarq2llbarg:QuarkFlavours[4] /Herwig/Particles/bbar create Herwig::MatchboxMEqg2llbarq MEqg2llbarq set MEqg2llbarq:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace set MEqg2llbarq:WhichGluon 1 insert MEqg2llbarq:LeptonFlavours[0] /Herwig/Particles/e- insert MEqg2llbarq:QuarkFlavours[0] /Herwig/Particles/d insert MEqg2llbarq:QuarkFlavours[1] /Herwig/Particles/u insert MEqg2llbarq:QuarkFlavours[2] /Herwig/Particles/s insert MEqg2llbarq:QuarkFlavours[3] /Herwig/Particles/c insert MEqg2llbarq:QuarkFlavours[4] /Herwig/Particles/b create Herwig::MatchboxMEqg2llbarq MEgq2llbarq set MEgq2llbarq:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace set MEgq2llbarq:WhichGluon 0 insert MEgq2llbarq:LeptonFlavours[0] /Herwig/Particles/e- insert MEgq2llbarq:QuarkFlavours[0] /Herwig/Particles/d insert MEgq2llbarq:QuarkFlavours[1] /Herwig/Particles/u insert MEgq2llbarq:QuarkFlavours[2] /Herwig/Particles/s insert MEgq2llbarq:QuarkFlavours[3] /Herwig/Particles/c insert MEgq2llbarq:QuarkFlavours[4] /Herwig/Particles/b create Herwig::MatchboxMEqg2llbarq MEqbarg2llbarqbar set MEqbarg2llbarqbar:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace set MEqbarg2llbarqbar:WhichGluon 1 insert MEqbarg2llbarqbar:LeptonFlavours[0] /Herwig/Particles/e- insert MEqbarg2llbarqbar:QuarkFlavours[0] /Herwig/Particles/dbar insert MEqbarg2llbarqbar:QuarkFlavours[1] /Herwig/Particles/ubar insert MEqbarg2llbarqbar:QuarkFlavours[2] /Herwig/Particles/sbar insert MEqbarg2llbarqbar:QuarkFlavours[3] /Herwig/Particles/cbar insert MEqbarg2llbarqbar:QuarkFlavours[4] /Herwig/Particles/bbar create Herwig::MatchboxMEqg2llbarq MEgqbar2llbarqbar set MEgqbar2llbarqbar:Phasespace /Herwig/MatrixElements/Matchbox/Phasespace/TreePhasespace set MEgqbar2llbarqbar:WhichGluon 0 insert MEgqbar2llbarqbar:LeptonFlavours[0] /Herwig/Particles/e- insert MEgqbar2llbarqbar:QuarkFlavours[0] /Herwig/Particles/dbar insert MEgqbar2llbarqbar:QuarkFlavours[1] /Herwig/Particles/ubar insert MEgqbar2llbarqbar:QuarkFlavours[2] /Herwig/Particles/sbar insert MEgqbar2llbarqbar:QuarkFlavours[3] /Herwig/Particles/cbar insert MEgqbar2llbarqbar:QuarkFlavours[4] /Herwig/Particles/bbar #------------------------------------------------------------------------------- create ThePEG::SubProcessHandler MEPP2llbarLO set MEPP2llbarLO:PartonExtractor /Herwig/Partons/QCDExtractor set MEPP2llbarLO:Cuts /Herwig/Cuts/QCDCuts insert MEPP2llbarLO:MatrixElements[0] MEqqbar2llbar insert MEPP2llbarLO:MatrixElements[1] MEqbarq2llbar create Herwig::MatchboxFactory MEPP2llbarNLO set MEPP2llbarNLO:PartonExtractor /Herwig/Partons/QCDExtractor set MEPP2llbarNLO:Cuts /Herwig/Cuts/QCDCuts insert MEPP2llbarNLO:BornMEs[0] MEqqbar2llbar insert MEPP2llbarNLO:BornMEs[1] MEqbarq2llbar insert MEPP2llbarNLO:RealEmissionMEs[0] MEqqbar2llbarg insert MEPP2llbarNLO:RealEmissionMEs[1] MEqbarq2llbarg insert MEPP2llbarNLO:RealEmissionMEs[2] MEqg2llbarq insert MEPP2llbarNLO:RealEmissionMEs[3] MEgq2llbarq insert MEPP2llbarNLO:RealEmissionMEs[4] MEqbarg2llbarqbar insert MEPP2llbarNLO:RealEmissionMEs[5] MEgqbar2llbarqbar create Herwig::PowhegFactory MEPP2llbarNLOInclusive set MEPP2llbarNLOInclusive:PartonExtractor /Herwig/Partons/QCDExtractor set MEPP2llbarNLOInclusive:Cuts /Herwig/Cuts/QCDCuts set MEPP2llbarNLOInclusive:MatchboxFactory MEPP2llbarNLO cd / ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/UnderlyingEvent.in�������������������������������������������������0000644�0001750�0001750�00000004334�11754474774�023053� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################ # Set up the handler for the underlying event. ################################################ mkdir /Herwig/UnderlyingEvent cd /Herwig/UnderlyingEvent ######## cuts ################################################# library SimpleKTCut.so # cut on pt. Without a specific matcher object, it works on all # particles create ThePEG::SimpleKTCut KtCut newdef KtCut:MinKT 3.06 # create the cuts object for the Underlying Event create ThePEG::Cuts UECuts # This should always be 2*MinKT!! newdef UECuts:MHatMin 6.12 insert UECuts:OneCuts 0 KtCut ######## subprocess ########################################### create ThePEG::SubProcessHandler FastQCD create Herwig::MEQCD2to2Fast MEQCD2to2Fast HwMEHadronFast.so insert FastQCD:MatrixElements 0 MEQCD2to2Fast cp /Herwig/Partons/QCDExtractor /Herwig/Partons/MPIExtractor newdef FastQCD:PartonExtractor /Herwig/Partons/MPIExtractor ######## MPI Handler ########################################## library HwMPI.so create Herwig::MPIHandler MPIHandler # set the subprocesses and corresponding cuts insert MPIHandler:SubProcessHandlers 0 FastQCD insert MPIHandler:Cuts 0 UECuts # energy extrapolation for the MinKT cut newdef MPIHandler:EnergyExtrapolation Power newdef MPIHandler:Power 0.21 newdef MPIHandler:pTmin0 3.11*GeV newdef MPIHandler:ReferenceScale 7000.*GeV newdef MPIHandler:EEparamA 0.585*GeV newdef MPIHandler:EEparamB 37.45*GeV # The inverse hadron radius newdef MPIHandler:InvRadius 1.11 # Set the details of the soft model # Flag to decide whether additional soft interactions (i.e. pt < ptmin) # should be simulated at all newdef MPIHandler:softInt Yes # Flag to decide whether to use the 2 component model. In this model, # the hadron radius (or better: mean parton-parton separation) can be # different for hard and soft scatters. The radius for the soft scatters # is computed during the run startup so that the elastic t-slope, B_el, # coincides with current measurements (for CMenergy < 1.8 TeV) or # Donnachie-Landshoff pomeron fit (CMenergy > 1.8 TeV). If this model is # disabled one has to take care that this observable is correctly # described by adjusting InvRadius properly. newdef MPIHandler:twoComp Yes newdef MPIHandler:DLmode 2 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/Makefile.in��������������������������������������������������������0000644�0001750�0001750�00000042666�11756461702�021445� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = src/defaults DIST_COMMON = $(dist_defaults_DATA) $(srcdir)/Analysis.in.in \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = Analysis.in CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(defaultsdir)" \ "$(DESTDIR)$(defaultsdir)" DATA = $(defaults_DATA) $(dist_defaults_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ BUILT_SOURCES = done-all-links defaultsdir = ${pkgdatadir}/defaults INPUTFILES = Analysis.in \ baryon_decays.in baryons.in boson_decays.in \ bosons.in Cuts.in decayers.in \ Decays.in DiffractiveParticles.in diquarks.in \ Hadronization.in HerwigDefaults.in HerwigCleanup.in \ lepton_decays.in leptons.in \ masses.in MatrixElements.in meson_decays.in mesons.in Model.in BSM.in \ Particles.in QEDRadiation.in quark_decays.in quarks.in \ Shower.in StandardModelVertices.in UnderlyingEvent.in widths.in Partons.in \ DipoleShower.in DipoleShowerParameters-LO.in DipoleShowerParameters-NLO.in \ Matchbox.in dist_defaults_DATA = $(INPUTFILES) EXTRA_DIST = PDF.in.in defaults_DATA = PDF.in CLEANFILES = PDF.in done-all-links @WANT_LOCAL_PDF_FALSE@edit = sed -e 's,@HERWIG_PDF_DEFAULT\@,$(HERWIG_PDF_DEFAULT),' -e 's,@HERWIG_PDF_NLO\@,$(HERWIG_PDF_NLO),' -e 's,@HERWIG_PDF_POMERON\@,$(HERWIG_PDF_POMERON),' @WANT_LOCAL_PDF_TRUE@edit = sed -e "s,@HERWIG_PDF_DEFAULT\@,`cd $(top_srcdir) && pwd`/$(HERWIG_PDF_DEFAULT)," -e "s,@HERWIG_PDF_NLO\@,`cd $(top_srcdir) && pwd`/$(HERWIG_PDF_NLO)," -e "s,@HERWIG_PDF_POMERON\@,`cd $(top_srcdir) && pwd`/$(HERWIG_PDF_POMERON)," @WANT_LOCAL_PDF_TRUE@installname = $(DESTDIR)$(pkgdatadir)/$(HERWIG_PDF_DEFAULT) @WANT_LOCAL_PDF_TRUE@installnameNLO = $(DESTDIR)$(pkgdatadir)/$(HERWIG_PDF_NLO) @WANT_LOCAL_PDF_TRUE@installnamePOMERON = $(DESTDIR)$(pkgdatadir)/$(HERWIG_PDF_POMERON) all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/defaults/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/defaults/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): Analysis.in: $(top_builddir)/config.status $(srcdir)/Analysis.in.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-defaultsDATA: $(defaults_DATA) @$(NORMAL_INSTALL) @list='$(defaults_DATA)'; test -n "$(defaultsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(defaultsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(defaultsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(defaultsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(defaultsdir)" || exit $$?; \ done uninstall-defaultsDATA: @$(NORMAL_UNINSTALL) @list='$(defaults_DATA)'; test -n "$(defaultsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(defaultsdir)'; $(am__uninstall_files_from_dir) install-dist_defaultsDATA: $(dist_defaults_DATA) @$(NORMAL_INSTALL) @list='$(dist_defaults_DATA)'; test -n "$(defaultsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(defaultsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(defaultsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(defaultsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(defaultsdir)" || exit $$?; \ done uninstall-dist_defaultsDATA: @$(NORMAL_UNINSTALL) @list='$(dist_defaults_DATA)'; test -n "$(defaultsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(defaultsdir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(defaultsdir)" "$(DESTDIR)$(defaultsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) @WANT_LOCAL_PDF_FALSE@install-data-hook: clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-defaultsDATA install-dist_defaultsDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-defaultsDATA uninstall-dist_defaultsDATA .MAKE: all check install install-am install-data-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-hook \ install-defaultsDATA install-dist_defaultsDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-defaultsDATA \ uninstall-dist_defaultsDATA @WANT_LOCAL_PDF_TRUE@install-data-hook: @WANT_LOCAL_PDF_TRUE@ rm -f $(DESTDIR)$(defaultsdir)/PDF.in @WANT_LOCAL_PDF_TRUE@ sed -e 's,@HERWIG_PDF_DEFAULT\@,$(installname),' \ @WANT_LOCAL_PDF_TRUE@ -e 's,@HERWIG_PDF_NLO\@,$(installnameNLO),' \ @WANT_LOCAL_PDF_TRUE@ -e 's,@HERWIG_PDF_POMERON\@,$(installnamePOMERON),' \ @WANT_LOCAL_PDF_TRUE@ $(srcdir)/PDF.in.in > $(DESTDIR)$(defaultsdir)/PDF.in PDF.in: Makefile $(srcdir)/PDF.in.in @echo "Updating PDF.in" @rm -f PDF.in PDF.in.tmp @$(edit) $(srcdir)/PDF.in.in > PDF.in.tmp @mv PDF.in.tmp PDF.in done-all-links: $(INPUTFILES) @echo "Linking input files" @for i in $(INPUTFILES); do \ if test -f $(srcdir)/$$i -a ! -e $$i; then \ $(LN_S) -f $(srcdir)/$$i; fi; done @touch done-all-links # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ��������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/PDF.in.in����������������������������������������������������������0000644�0001750�0001750�00000003427�11754474774�020751� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# PDF.in. Generated from PDF.in.in by Makefile.am ##################################### # Default PDF set ##################################### # Handle leptons create ThePEG::LeptonLeptonPDF LeptonPDF LeptonLeptonPDF.so newdef LeptonPDF:RemnantHandler LeptonRemnants newdef /Herwig/Particles/e-:PDF LeptonPDF newdef /Herwig/Particles/e+:PDF LeptonPDF # Handle hadrons create Herwig::MRST MRST HwMRST.so setup MRST @HERWIG_PDF_DEFAULT@ newdef MRST:RemnantHandler HadronRemnants newdef /Herwig/Particles/p+:PDF MRST newdef /Herwig/Particles/pbar-:PDF MRST # NLO PDFs (needed for NLO matrix elements) create Herwig::MRST MRST-NLO HwMRST.so newdef MRST-NLO:Interpolation Cubic setup MRST-NLO @HERWIG_PDF_NLO@ newdef MRST-NLO:RemnantHandler HadronRemnants # photons from leptons in WW approx create ThePEG::WeizsackerWilliamsPDF WWPDF WeizsackerWilliamsPDF.so create ThePEG::UnResolvedRemnant /Herwig/Partons/LeptonGammaRemnants newdef /Herwig/Partons/WWPDF:RemnantHandler /Herwig/Partons/LeptonGammaRemnants # photons from protons in Budnev approx create ThePEG::BudnevPDF BudnevPDF BudnevPDF.so create ThePEG::UnResolvedRemnant /Herwig/Partons/HadronGammaRemnants newdef /Herwig/Partons/BudnevPDF:RemnantHandler /Herwig/Partons/HadronGammaRemnants # pomerons create Herwig::PomeronFlux PomeronFlux HwPomeronFlux.so newdef PomeronFlux:PDFFit Pomeron2006A newdef PomeronFlux:Q2Max 1. newdef PomeronFlux:Q2Min 1.0e-6 create ThePEG::UnResolvedRemnant /Herwig/Partons/ProtonRemnant UnResolvedRemnant.so newdef /Herwig/Partons/PomeronFlux:RemnantHandler /Herwig/Partons/ProtonRemnant create Herwig::PomeronPDF PomeronPDF HwPomeronPDF.so newdef PomeronPDF:RemnantHandler HadronRemnants newdef PomeronPDF:RootName @HERWIG_PDF_POMERON@ newdef /Herwig/Particles/pomeron:PDF PomeronPDF newdef PomeronPDF:PDFFit 2006A �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/bosons.in����������������������������������������������������������0000644�0001750�0001750�00000001063�11754474774�021230� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # file containing the particle data for the bosons # create ThePEG::BeamParticleData gamma setup gamma 22 gamma 0 0. 0 0 0 0 3 1 create ThePEG::ParticleData h0 setup h0 25 h0 115 0.003196 0.03196 0 0 0 1 0 newdef h0:VariableRatio 1 create ThePEG::ConstituentParticleData g setup g 21 g 0 0. 0 0 0 8 3 1 0.95 create ThePEG::ParticleData Z0 setup Z0 23 Z0 91.1876 2.4952 24.952 0 0 0 3 0 create ThePEG::ParticleData W+ setup W+ 24 W+ 80.403 2.141 21.41 0 3 0 3 0 create ThePEG::ParticleData W- setup W- -24 W- 80.403 2.141 21.41 0 -3 0 3 0 makeanti W- W+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/MatrixElements.in��������������������������������������������������0000644�0001750�0001750�00000015717�11754474774�022701� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������############################################################################## # 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:Coupling /Herwig/Shower/AlphaQCD # e+e- -> l+l- create Herwig::MEee2gZ2ll MEee2gZ2ll newdef MEee2gZ2ll:Allowed Charged # 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 ############################################################ # NLO (POWHEG e+e- matrix elements ############################################################ library HwPowhegMELepton.so create Herwig::MEee2gZ2qqPowheg PowhegMEee2gZ2qq newdef PowhegMEee2gZ2qq:MinimumFlavour 1 newdef PowhegMEee2gZ2qq:MaximumFlavour 5 newdef PowhegMEee2gZ2qq:Coupling /Herwig/Shower/AlphaQCD ############################################################ # 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 # qqbar/gg -> t tbar create Herwig::MEPP2QQ MEHeavyQuark ################################### # 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 ########################################################## # 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 # # For e+e- ########################################################## create ThePEG::SubProcessHandler SimpleEE newdef SimpleEE:PartonExtractor /Herwig/Partons/EEExtractor ########################################################## # For hadron-hadron ########################################################## create ThePEG::SubProcessHandler SimpleQCD newdef SimpleQCD:PartonExtractor /Herwig/Partons/QCDExtractor ########################################################## # For DIS ########################################################## create ThePEG::SubProcessHandler SimpleDIS newdef SimpleDIS:PartonExtractor /Herwig/Partons/DISExtractor �������������������������������������������������herwig++-2.6.0.orig/src/defaults/Cuts.in������������������������������������������������������������0000644�0001750�0001750�00000006476�11754474774�020660� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������########################################################### # Default cuts (applied to the hard subprocess) # # Don't change values here, re-set them in your own input # files using these as examples. ########################################################### mkdir /Herwig/Matchers cd /Herwig/Matchers create ThePEG::Matcher<Lepton> Lepton create ThePEG::Matcher<LightQuark> LightQuark create ThePEG::Matcher<LightAntiQuark> LightAntiQuark create ThePEG::Matcher<StandardQCDParton> StandardQCDParton create ThePEG::Matcher<Photon> Photon create ThePEG::Matcher<Top> Top create ThePEG::Matcher<WBoson> WBoson create ThePEG::Matcher<ZBoson> ZBoson create ThePEG::Matcher<HiggsBoson> HiggsBoson mkdir /Herwig/Cuts cd /Herwig/Cuts # create the cuts object for e+e- create ThePEG::Cuts EECuts newdef EECuts:MHatMin 22.36*GeV # create the cuts object for hadron collisions create ThePEG::Cuts QCDCuts newdef QCDCuts:ScaleMin 2.0*GeV newdef QCDCuts:X1Min 1.0e-5 newdef QCDCuts:X2Min 1.0e-5 newdef QCDCuts:MHatMin 20.*GeV # cut on jet pt create ThePEG::SimpleKTCut JetKtCut SimpleKTCut.so newdef JetKtCut:Matcher /Herwig/Matchers/StandardQCDParton newdef JetKtCut:MinKT 20.0*GeV # cut on photon create ThePEG::SimpleKTCut PhotonKtCut SimpleKTCut.so newdef PhotonKtCut:Matcher /Herwig/Matchers/Photon newdef PhotonKtCut:MinKT 20.0*GeV newdef PhotonKtCut:MinEta -3. newdef PhotonKtCut:MaxEta 3. # cut on leptons create ThePEG::SimpleKTCut LeptonKtCut SimpleKTCut.so newdef LeptonKtCut:Matcher /Herwig/Matchers/Lepton newdef LeptonKtCut:MinKT 0.0*GeV # cut on top quarks create ThePEG::KTRapidityCut TopKtCut KTRapidityCut.so newdef TopKtCut:Matcher /Herwig/Matchers/Top newdef TopKtCut:MinKT 0.0*GeV # cut on W bosons create ThePEG::KTRapidityCut WBosonKtCut KTRapidityCut.so newdef WBosonKtCut:Matcher /Herwig/Matchers/WBoson newdef WBosonKtCut:MinKT 0.0*GeV # cut on Z bosons create ThePEG::KTRapidityCut ZBosonKtCut KTRapidityCut.so newdef ZBosonKtCut:Matcher /Herwig/Matchers/ZBoson newdef ZBosonKtCut:MinKT 0.0*GeV # cut on Higgs bosons create ThePEG::KTRapidityCut HiggsBosonKtCut KTRapidityCut.so newdef HiggsBosonKtCut:Matcher /Herwig/Matchers/HiggsBoson newdef HiggsBosonKtCut:MinKT 0.0*GeV # create a cut on the invariant mass of lepton pairs create ThePEG::V2LeptonsCut MassCut V2LeptonsCut.so newdef MassCut:Families All newdef MassCut:CComb All newdef MassCut:MinM 20.*GeV newdef MassCut:MaxM 14000.*GeV # create a cut on Q^2 for neutral current DIS create ThePEG::SimpleDISCut NeutralCurrentCut SimpleDISCut.so newdef NeutralCurrentCut:MinQ2 20. newdef NeutralCurrentCut:Current Neutral # create a cut on Q^2 for charged current DIS create ThePEG::SimpleDISCut ChargedCurrentCut SimpleDISCut.so newdef ChargedCurrentCut:MinQ2 20. newdef ChargedCurrentCut:Current Charged # create a cut of Q^2 for charged current DIS # insert into hadron cuts insert QCDCuts:OneCuts[0] JetKtCut insert QCDCuts:OneCuts[1] PhotonKtCut insert QCDCuts:OneCuts[2] LeptonKtCut insert QCDCuts:OneCuts[3] TopKtCut insert QCDCuts:OneCuts[4] WBosonKtCut insert QCDCuts:OneCuts[5] ZBosonKtCut insert QCDCuts:OneCuts[6] HiggsBosonKtCut insert QCDCuts:MultiCuts[0] MassCut # cuts for DIS create ThePEG::Cuts DISCuts newdef DISCuts:ScaleMin 1.0*GeV newdef DISCuts:X1Min 1.0e-5 newdef DISCuts:X2Min 1.0e-5 insert DISCuts:TwoCuts[0] NeutralCurrentCut insert DISCuts:TwoCuts[1] ChargedCurrentCut ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/Analysis.in��������������������������������������������������������0000644�0001750�0001750�00000005716�11756461717�021514� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# src/defaults/Analysis.in. Generated from Analysis.in.in by configure. ######################################################### # Analysis handler setup # # By default, only 'Basics' is active. Add the commented # lines to your input file to switch on other analyses. ######################################################### mkdir /Herwig/Analysis cd /Herwig/Analysis library HwAnalysis.so # # basic analysis to check consistency of events # (only analysis handler switched on by default) # create Herwig::BasicConsistency Basics insert /Herwig/Generators/LEPGenerator:AnalysisHandlers 0 Basics insert /Herwig/Generators/LHCGenerator:AnalysisHandlers 0 Basics insert /Herwig/Generators/DISGenerator:AnalysisHandlers 0 Basics # # Analysis Handlers for hadron-hadron collisions # (switched off by default) # # simple analysis of W/Z events create Herwig::SimpleLHCAnalysis DrellYan # simple analysis of top-antitop events create Herwig::TTbarAnalysis TTbar # simple analysis of gamma+jet events create Herwig::GammaJetAnalysis GammaJet # simple analysis of gamma-gamma events create Herwig::GammaGammaAnalysis GammaGamma # simple analysis of higgs+jet events create Herwig::HiggsJetAnalysis HiggsJet # # Analysis Handlers for LEP 91.2 GeV collisions # (switched off by default) # # hadron multiplicities compared to LEP data create Herwig::LEPMultiplicityCount LEPMultiplicity HwLEPAnalysis.so # b fractions in specific hadrons create Herwig::LEPBMultiplicity BMultiplicity HwLEPAnalysis.so # b fragmentation functions create Herwig::BFragmentationAnalysisHandler BFrag HwLEPAnalysis.so # master LEP event shape analysis and object which does the work create Herwig::EventShapesMasterAnalysis Shapes create Herwig::EventShapes LEPShapes newdef Shapes:EventShapes LEPShapes # LEP event shapes create Herwig::LEPEventShapes LEPEvent newdef LEPEvent:EventShapes LEPShapes insert Shapes:Slaves 0 LEPEvent # LEP identified particles create Herwig::IdentifiedParticleAnalysis LEPIdent # LEP single particle analysis create Herwig::SingleParticleAnalysis LEPSingle newdef LEPSingle:EventShapes LEPShapes insert Shapes:Slaves 0 LEPSingle # # Analysis Handlers for Belle and CLEO data below the Upsilon(4S) # (switched off by default) # # BELLE data on charm hadron spetra create Herwig::BELLECharmAnalysis BELLECharm HwLEPAnalysis.so # CLEO data on charm meson spectra create Herwig::CLEOCharmAnalysis CLEOCharm HwLEPAnalysis.so # Schematic overview of an event # (requires the graphviz program 'dot' to produce a plot) create ThePEG::GraphvizPlot Plot GraphvizPlot.so # # Handlers which depend on Fastjet for LEP data # (switched off by default) # # four jet analysis create Herwig::LEPFourJetsAnalysis LEPFourJet HwLEPJetAnalysis.so # general jet analysis create Herwig::LEPJetAnalysis LEPJet HwLEPJetAnalysis.so # # Handlers which depend on HepMC # (switched off by default) # A HepMC dump file (requires --with-hepmc to be set at configure time) create ThePEG::HepMCFile HepMCFile HepMCAnalysis.so ��������������������������������������������������herwig++-2.6.0.orig/src/defaults/widths.in����������������������������������������������������������0000644�0001750�0001750�00014124266�11754474774�021247� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # This file contains the set-up of the width generators for Herwig++ outputted # from the Herwig++ Particles Database at 13:42:2 on the 15/11/2007. # create Herwig::GenericWidthGenerator rho+width newdef rho+width:Particle /Herwig/Particles/rho+ newdef rho+width:Prefactor 1.00045 newdef rho+width:BRNormalize 1 newdef rho+width:BRMinimum 0.01 newdef rho+width:Points 50 newdef rho+width:InterpolationOrder 1 insert rho+width:MEtype 0 1 insert rho+width:MEtype 1 1 insert rho+width:MEcode 0 1 insert rho+width:MEcode 1 0 insert rho+width:MEcoupling 0 0.169884 insert rho+width:MEcoupling 1 5.95816 insert rho+width:ModeOn 0 0 insert rho+width:ModeOn 1 1 insert rho+width:MinimumMasses 0 0.13957 insert rho+width:MinimumMasses 1 0.274548 insert rho+width:MEmass1 0 0 insert rho+width:MEmass1 1 0.134978 insert rho+width:MEmass2 0 0.13957 insert rho+width:MEmass2 1 0.13957 insert rho+width:DecayModes 0 rho+->pi+,gamma; insert rho+width:DecayModes 1 rho+->pi+,pi0; insert rho+width:NumberofEntries 0 0 insert rho+width:NumberofEntries 1 0 newdef /Herwig/Particles/rho+:Width_generator rho+width newdef /Herwig/Particles/rho-:Width_generator rho+width # create Herwig::GenericWidthGenerator etawidth newdef etawidth:Particle /Herwig/Particles/eta newdef etawidth:Prefactor 1.00721 newdef etawidth:BRNormalize 1 newdef etawidth:BRMinimum 0.01 newdef etawidth:Points 50 newdef etawidth:InterpolationOrder 1 insert etawidth:MEtype 0 2 insert etawidth:MEtype 1 1 insert etawidth:MEtype 2 2 insert etawidth:MEtype 3 0 insert etawidth:MEtype 4 0 insert etawidth:MEtype 5 2 insert etawidth:MEtype 6 2 insert etawidth:MEtype 7 2 insert etawidth:MEtype 8 2 insert etawidth:MEcode 0 0 insert etawidth:MEcode 1 3 insert etawidth:MEcode 2 0 insert etawidth:MEcode 3 0 insert etawidth:MEcode 4 0 insert etawidth:MEcode 5 0 insert etawidth:MEcode 6 0 insert etawidth:MEcode 7 0 insert etawidth:MEcode 8 0 insert etawidth:MEcoupling 0 0.923156 insert etawidth:MEcoupling 1 0.00969557 insert etawidth:MEcoupling 2 1.04723 insert etawidth:MEcoupling 3 6e-06 insert etawidth:MEcoupling 4 0.0004 insert etawidth:MEcoupling 5 1.00959 insert etawidth:MEcoupling 6 0.632767 insert etawidth:MEcoupling 7 1.73471 insert etawidth:MEcoupling 8 1.00989 insert etawidth:ModeOn 0 0 insert etawidth:ModeOn 1 1 insert etawidth:ModeOn 2 0 insert etawidth:ModeOn 3 0 insert etawidth:ModeOn 4 0 insert etawidth:ModeOn 5 1 insert etawidth:ModeOn 6 1 insert etawidth:ModeOn 7 0 insert etawidth:ModeOn 8 1 insert etawidth:MinimumMasses 0 0.00102 insert etawidth:MinimumMasses 1 0 insert etawidth:MinimumMasses 2 0.21132 insert etawidth:MinimumMasses 3 0.21132 insert etawidth:MinimumMasses 4 0.28016 insert etawidth:MinimumMasses 5 0.27914 insert etawidth:MinimumMasses 6 0.414118 insert etawidth:MinimumMasses 7 0.134978 insert etawidth:MinimumMasses 8 0.404933 insert etawidth:MEmass1 0 0 insert etawidth:MEmass1 1 0 insert etawidth:MEmass1 2 0 insert etawidth:MEmass1 3 0 insert etawidth:MEmass1 4 0 insert etawidth:MEmass1 5 0 insert etawidth:MEmass1 6 0 insert etawidth:MEmass1 7 0 insert etawidth:MEmass1 8 0 insert etawidth:MEmass2 0 0 insert etawidth:MEmass2 1 0 insert etawidth:MEmass2 2 0 insert etawidth:MEmass2 3 0 insert etawidth:MEmass2 4 0 insert etawidth:MEmass2 5 0 insert etawidth:MEmass2 6 0 insert etawidth:MEmass2 7 0 insert etawidth:MEmass2 8 0 insert etawidth:DecayModes 0 eta->gamma,e-,e+; insert etawidth:DecayModes 1 eta->gamma,gamma; insert etawidth:DecayModes 2 eta->gamma,mu-,mu+; insert etawidth:DecayModes 3 eta->mu-,mu+; insert etawidth:DecayModes 4 eta->pi+,pi-,e-,e+; insert etawidth:DecayModes 5 eta->pi+,pi-,gamma; insert etawidth:DecayModes 6 eta->pi+,pi-,pi0; insert etawidth:DecayModes 7 eta->pi0,gamma,gamma; insert etawidth:DecayModes 8 eta->pi0,pi0,pi0; insert etawidth:InterpolationMasses 0 0.547497 insert etawidth:InterpolationMasses 1 0.54749753 insert etawidth:InterpolationMasses 2 0.54749806 insert etawidth:InterpolationMasses 3 0.54749859 insert etawidth:InterpolationMasses 4 0.54749912 insert etawidth:InterpolationMasses 5 0.54749965 insert etawidth:InterpolationMasses 6 0.54750018 insert etawidth:InterpolationMasses 7 0.54750071 insert etawidth:InterpolationMasses 8 0.54750124 insert etawidth:InterpolationMasses 9 0.54750178 insert etawidth:InterpolationMasses 10 0.54750231 insert etawidth:InterpolationMasses 11 0.54750284 insert etawidth:InterpolationMasses 12 0.54750337 insert etawidth:InterpolationMasses 13 0.5475039 insert etawidth:InterpolationMasses 14 0.54750443 insert etawidth:InterpolationMasses 15 0.54750496 insert etawidth:InterpolationMasses 16 0.54750549 insert etawidth:InterpolationMasses 17 0.54750602 insert etawidth:InterpolationMasses 18 0.54750655 insert etawidth:InterpolationMasses 19 0.54750708 insert etawidth:InterpolationMasses 20 0.54750761 insert etawidth:InterpolationMasses 21 0.54750814 insert etawidth:InterpolationMasses 22 0.54750867 insert etawidth:InterpolationMasses 23 0.5475092 insert etawidth:InterpolationMasses 24 0.54750973 insert etawidth:InterpolationMasses 25 0.54751027 insert etawidth:InterpolationMasses 26 0.5475108 insert etawidth:InterpolationMasses 27 0.54751133 insert etawidth:InterpolationMasses 28 0.54751186 insert etawidth:InterpolationMasses 29 0.54751239 insert etawidth:InterpolationMasses 30 0.54751292 insert etawidth:InterpolationMasses 31 0.54751345 insert etawidth:InterpolationMasses 32 0.54751398 insert etawidth:InterpolationMasses 33 0.54751451 insert etawidth:InterpolationMasses 34 0.54751504 insert etawidth:InterpolationMasses 35 0.54751557 insert etawidth:InterpolationMasses 36 0.5475161 insert etawidth:InterpolationMasses 37 0.54751663 insert etawidth:InterpolationMasses 38 0.54751716 insert etawidth:InterpolationMasses 39 0.54751769 insert etawidth:InterpolationMasses 40 0.54751822 insert etawidth:InterpolationMasses 41 0.54751876 insert etawidth:InterpolationMasses 42 0.54751929 insert etawidth:InterpolationMasses 43 0.54751982 insert etawidth:InterpolationMasses 44 0.54752035 insert etawidth:InterpolationMasses 45 0.54752088 insert etawidth:InterpolationMasses 46 0.54752141 insert etawidth:InterpolationMasses 47 0.54752194 insert etawidth:InterpolationMasses 48 0.54752247 insert etawidth:InterpolationMasses 49 0.547523 insert etawidth:InterpolationMasses 50 0.547497 insert etawidth:InterpolationMasses 51 0.54749753 insert etawidth:InterpolationMasses 52 0.54749806 insert etawidth:InterpolationMasses 53 0.54749859 insert etawidth:InterpolationMasses 54 0.54749912 insert etawidth:InterpolationMasses 55 0.54749965 insert etawidth:InterpolationMasses 56 0.54750018 insert etawidth:InterpolationMasses 57 0.54750071 insert etawidth:InterpolationMasses 58 0.54750124 insert etawidth:InterpolationMasses 59 0.54750178 insert etawidth:InterpolationMasses 60 0.54750231 insert etawidth:InterpolationMasses 61 0.54750284 insert etawidth:InterpolationMasses 62 0.54750337 insert etawidth:InterpolationMasses 63 0.5475039 insert etawidth:InterpolationMasses 64 0.54750443 insert etawidth:InterpolationMasses 65 0.54750496 insert etawidth:InterpolationMasses 66 0.54750549 insert etawidth:InterpolationMasses 67 0.54750602 insert etawidth:InterpolationMasses 68 0.54750655 insert etawidth:InterpolationMasses 69 0.54750708 insert etawidth:InterpolationMasses 70 0.54750761 insert etawidth:InterpolationMasses 71 0.54750814 insert etawidth:InterpolationMasses 72 0.54750867 insert etawidth:InterpolationMasses 73 0.5475092 insert etawidth:InterpolationMasses 74 0.54750973 insert etawidth:InterpolationMasses 75 0.54751027 insert etawidth:InterpolationMasses 76 0.5475108 insert etawidth:InterpolationMasses 77 0.54751133 insert etawidth:InterpolationMasses 78 0.54751186 insert etawidth:InterpolationMasses 79 0.54751239 insert etawidth:InterpolationMasses 80 0.54751292 insert etawidth:InterpolationMasses 81 0.54751345 insert etawidth:InterpolationMasses 82 0.54751398 insert etawidth:InterpolationMasses 83 0.54751451 insert etawidth:InterpolationMasses 84 0.54751504 insert etawidth:InterpolationMasses 85 0.54751557 insert etawidth:InterpolationMasses 86 0.5475161 insert etawidth:InterpolationMasses 87 0.54751663 insert etawidth:InterpolationMasses 88 0.54751716 insert etawidth:InterpolationMasses 89 0.54751769 insert etawidth:InterpolationMasses 90 0.54751822 insert etawidth:InterpolationMasses 91 0.54751876 insert etawidth:InterpolationMasses 92 0.54751929 insert etawidth:InterpolationMasses 93 0.54751982 insert etawidth:InterpolationMasses 94 0.54752035 insert etawidth:InterpolationMasses 95 0.54752088 insert etawidth:InterpolationMasses 96 0.54752141 insert etawidth:InterpolationMasses 97 0.54752194 insert etawidth:InterpolationMasses 98 0.54752247 insert etawidth:InterpolationMasses 99 0.547523 insert etawidth:InterpolationMasses 100 0.547497 insert etawidth:InterpolationMasses 101 0.54749753 insert etawidth:InterpolationMasses 102 0.54749806 insert etawidth:InterpolationMasses 103 0.54749859 insert etawidth:InterpolationMasses 104 0.54749912 insert etawidth:InterpolationMasses 105 0.54749965 insert etawidth:InterpolationMasses 106 0.54750018 insert etawidth:InterpolationMasses 107 0.54750071 insert etawidth:InterpolationMasses 108 0.54750124 insert etawidth:InterpolationMasses 109 0.54750178 insert etawidth:InterpolationMasses 110 0.54750231 insert etawidth:InterpolationMasses 111 0.54750284 insert etawidth:InterpolationMasses 112 0.54750337 insert etawidth:InterpolationMasses 113 0.5475039 insert etawidth:InterpolationMasses 114 0.54750443 insert etawidth:InterpolationMasses 115 0.54750496 insert etawidth:InterpolationMasses 116 0.54750549 insert etawidth:InterpolationMasses 117 0.54750602 insert etawidth:InterpolationMasses 118 0.54750655 insert etawidth:InterpolationMasses 119 0.54750708 insert etawidth:InterpolationMasses 120 0.54750761 insert etawidth:InterpolationMasses 121 0.54750814 insert etawidth:InterpolationMasses 122 0.54750867 insert etawidth:InterpolationMasses 123 0.5475092 insert etawidth:InterpolationMasses 124 0.54750973 insert etawidth:InterpolationMasses 125 0.54751027 insert etawidth:InterpolationMasses 126 0.5475108 insert etawidth:InterpolationMasses 127 0.54751133 insert etawidth:InterpolationMasses 128 0.54751186 insert etawidth:InterpolationMasses 129 0.54751239 insert etawidth:InterpolationMasses 130 0.54751292 insert etawidth:InterpolationMasses 131 0.54751345 insert etawidth:InterpolationMasses 132 0.54751398 insert etawidth:InterpolationMasses 133 0.54751451 insert etawidth:InterpolationMasses 134 0.54751504 insert etawidth:InterpolationMasses 135 0.54751557 insert etawidth:InterpolationMasses 136 0.5475161 insert etawidth:InterpolationMasses 137 0.54751663 insert etawidth:InterpolationMasses 138 0.54751716 insert etawidth:InterpolationMasses 139 0.54751769 insert etawidth:InterpolationMasses 140 0.54751822 insert etawidth:InterpolationMasses 141 0.54751876 insert etawidth:InterpolationMasses 142 0.54751929 insert etawidth:InterpolationMasses 143 0.54751982 insert etawidth:InterpolationMasses 144 0.54752035 insert etawidth:InterpolationMasses 145 0.54752088 insert etawidth:InterpolationMasses 146 0.54752141 insert etawidth:InterpolationMasses 147 0.54752194 insert etawidth:InterpolationMasses 148 0.54752247 insert etawidth:InterpolationMasses 149 0.547523 insert etawidth:InterpolationMasses 150 0.547497 insert etawidth:InterpolationMasses 151 0.54749753 insert etawidth:InterpolationMasses 152 0.54749806 insert etawidth:InterpolationMasses 153 0.54749859 insert etawidth:InterpolationMasses 154 0.54749912 insert etawidth:InterpolationMasses 155 0.54749965 insert etawidth:InterpolationMasses 156 0.54750018 insert etawidth:InterpolationMasses 157 0.54750071 insert etawidth:InterpolationMasses 158 0.54750124 insert etawidth:InterpolationMasses 159 0.54750178 insert etawidth:InterpolationMasses 160 0.54750231 insert etawidth:InterpolationMasses 161 0.54750284 insert etawidth:InterpolationMasses 162 0.54750337 insert etawidth:InterpolationMasses 163 0.5475039 insert etawidth:InterpolationMasses 164 0.54750443 insert etawidth:InterpolationMasses 165 0.54750496 insert etawidth:InterpolationMasses 166 0.54750549 insert etawidth:InterpolationMasses 167 0.54750602 insert etawidth:InterpolationMasses 168 0.54750655 insert etawidth:InterpolationMasses 169 0.54750708 insert etawidth:InterpolationMasses 170 0.54750761 insert etawidth:InterpolationMasses 171 0.54750814 insert etawidth:InterpolationMasses 172 0.54750867 insert etawidth:InterpolationMasses 173 0.5475092 insert etawidth:InterpolationMasses 174 0.54750973 insert etawidth:InterpolationMasses 175 0.54751027 insert etawidth:InterpolationMasses 176 0.5475108 insert etawidth:InterpolationMasses 177 0.54751133 insert etawidth:InterpolationMasses 178 0.54751186 insert etawidth:InterpolationMasses 179 0.54751239 insert etawidth:InterpolationMasses 180 0.54751292 insert etawidth:InterpolationMasses 181 0.54751345 insert etawidth:InterpolationMasses 182 0.54751398 insert etawidth:InterpolationMasses 183 0.54751451 insert etawidth:InterpolationMasses 184 0.54751504 insert etawidth:InterpolationMasses 185 0.54751557 insert etawidth:InterpolationMasses 186 0.5475161 insert etawidth:InterpolationMasses 187 0.54751663 insert etawidth:InterpolationMasses 188 0.54751716 insert etawidth:InterpolationMasses 189 0.54751769 insert etawidth:InterpolationMasses 190 0.54751822 insert etawidth:InterpolationMasses 191 0.54751876 insert etawidth:InterpolationMasses 192 0.54751929 insert etawidth:InterpolationMasses 193 0.54751982 insert etawidth:InterpolationMasses 194 0.54752035 insert etawidth:InterpolationMasses 195 0.54752088 insert etawidth:InterpolationMasses 196 0.54752141 insert etawidth:InterpolationMasses 197 0.54752194 insert etawidth:InterpolationMasses 198 0.54752247 insert etawidth:InterpolationMasses 199 0.547523 insert etawidth:InterpolationMasses 200 0.547497 insert etawidth:InterpolationMasses 201 0.54749753 insert etawidth:InterpolationMasses 202 0.54749806 insert etawidth:InterpolationMasses 203 0.54749859 insert etawidth:InterpolationMasses 204 0.54749912 insert etawidth:InterpolationMasses 205 0.54749965 insert etawidth:InterpolationMasses 206 0.54750018 insert etawidth:InterpolationMasses 207 0.54750071 insert etawidth:InterpolationMasses 208 0.54750124 insert etawidth:InterpolationMasses 209 0.54750178 insert etawidth:InterpolationMasses 210 0.54750231 insert etawidth:InterpolationMasses 211 0.54750284 insert etawidth:InterpolationMasses 212 0.54750337 insert etawidth:InterpolationMasses 213 0.5475039 insert etawidth:InterpolationMasses 214 0.54750443 insert etawidth:InterpolationMasses 215 0.54750496 insert etawidth:InterpolationMasses 216 0.54750549 insert etawidth:InterpolationMasses 217 0.54750602 insert etawidth:InterpolationMasses 218 0.54750655 insert etawidth:InterpolationMasses 219 0.54750708 insert etawidth:InterpolationMasses 220 0.54750761 insert etawidth:InterpolationMasses 221 0.54750814 insert etawidth:InterpolationMasses 222 0.54750867 insert etawidth:InterpolationMasses 223 0.5475092 insert etawidth:InterpolationMasses 224 0.54750973 insert etawidth:InterpolationMasses 225 0.54751027 insert etawidth:InterpolationMasses 226 0.5475108 insert etawidth:InterpolationMasses 227 0.54751133 insert etawidth:InterpolationMasses 228 0.54751186 insert etawidth:InterpolationMasses 229 0.54751239 insert etawidth:InterpolationMasses 230 0.54751292 insert etawidth:InterpolationMasses 231 0.54751345 insert etawidth:InterpolationMasses 232 0.54751398 insert etawidth:InterpolationMasses 233 0.54751451 insert etawidth:InterpolationMasses 234 0.54751504 insert etawidth:InterpolationMasses 235 0.54751557 insert etawidth:InterpolationMasses 236 0.5475161 insert etawidth:InterpolationMasses 237 0.54751663 insert etawidth:InterpolationMasses 238 0.54751716 insert etawidth:InterpolationMasses 239 0.54751769 insert etawidth:InterpolationMasses 240 0.54751822 insert etawidth:InterpolationMasses 241 0.54751876 insert etawidth:InterpolationMasses 242 0.54751929 insert etawidth:InterpolationMasses 243 0.54751982 insert etawidth:InterpolationMasses 244 0.54752035 insert etawidth:InterpolationMasses 245 0.54752088 insert etawidth:InterpolationMasses 246 0.54752141 insert etawidth:InterpolationMasses 247 0.54752194 insert etawidth:InterpolationMasses 248 0.54752247 insert etawidth:InterpolationMasses 249 0.547523 insert etawidth:InterpolationMasses 250 0.547497 insert etawidth:InterpolationMasses 251 0.54749753 insert etawidth:InterpolationMasses 252 0.54749806 insert etawidth:InterpolationMasses 253 0.54749859 insert etawidth:InterpolationMasses 254 0.54749912 insert etawidth:InterpolationMasses 255 0.54749965 insert etawidth:InterpolationMasses 256 0.54750018 insert etawidth:InterpolationMasses 257 0.54750071 insert etawidth:InterpolationMasses 258 0.54750124 insert etawidth:InterpolationMasses 259 0.54750178 insert etawidth:InterpolationMasses 260 0.54750231 insert etawidth:InterpolationMasses 261 0.54750284 insert etawidth:InterpolationMasses 262 0.54750337 insert etawidth:InterpolationMasses 263 0.5475039 insert etawidth:InterpolationMasses 264 0.54750443 insert etawidth:InterpolationMasses 265 0.54750496 insert etawidth:InterpolationMasses 266 0.54750549 insert etawidth:InterpolationMasses 267 0.54750602 insert etawidth:InterpolationMasses 268 0.54750655 insert etawidth:InterpolationMasses 269 0.54750708 insert etawidth:InterpolationMasses 270 0.54750761 insert etawidth:InterpolationMasses 271 0.54750814 insert etawidth:InterpolationMasses 272 0.54750867 insert etawidth:InterpolationMasses 273 0.5475092 insert etawidth:InterpolationMasses 274 0.54750973 insert etawidth:InterpolationMasses 275 0.54751027 insert etawidth:InterpolationMasses 276 0.5475108 insert etawidth:InterpolationMasses 277 0.54751133 insert etawidth:InterpolationMasses 278 0.54751186 insert etawidth:InterpolationMasses 279 0.54751239 insert etawidth:InterpolationMasses 280 0.54751292 insert etawidth:InterpolationMasses 281 0.54751345 insert etawidth:InterpolationMasses 282 0.54751398 insert etawidth:InterpolationMasses 283 0.54751451 insert etawidth:InterpolationMasses 284 0.54751504 insert etawidth:InterpolationMasses 285 0.54751557 insert etawidth:InterpolationMasses 286 0.5475161 insert etawidth:InterpolationMasses 287 0.54751663 insert etawidth:InterpolationMasses 288 0.54751716 insert etawidth:InterpolationMasses 289 0.54751769 insert etawidth:InterpolationMasses 290 0.54751822 insert etawidth:InterpolationMasses 291 0.54751876 insert etawidth:InterpolationMasses 292 0.54751929 insert etawidth:InterpolationMasses 293 0.54751982 insert etawidth:InterpolationMasses 294 0.54752035 insert etawidth:InterpolationMasses 295 0.54752088 insert etawidth:InterpolationMasses 296 0.54752141 insert etawidth:InterpolationMasses 297 0.54752194 insert etawidth:InterpolationMasses 298 0.54752247 insert etawidth:InterpolationMasses 299 0.547523 insert etawidth:InterpolationWidths 0 8.4486201e-09 insert etawidth:InterpolationWidths 1 8.4486467e-09 insert etawidth:InterpolationWidths 2 8.4486734e-09 insert etawidth:InterpolationWidths 3 8.4487e-09 insert etawidth:InterpolationWidths 4 8.4487266e-09 insert etawidth:InterpolationWidths 5 8.4487532e-09 insert etawidth:InterpolationWidths 6 8.4487798e-09 insert etawidth:InterpolationWidths 7 8.4488064e-09 insert etawidth:InterpolationWidths 8 8.448833e-09 insert etawidth:InterpolationWidths 9 8.4488596e-09 insert etawidth:InterpolationWidths 10 8.4488862e-09 insert etawidth:InterpolationWidths 11 8.4489128e-09 insert etawidth:InterpolationWidths 12 8.4489394e-09 insert etawidth:InterpolationWidths 13 8.448966e-09 insert etawidth:InterpolationWidths 14 8.4489927e-09 insert etawidth:InterpolationWidths 15 8.4490193e-09 insert etawidth:InterpolationWidths 16 8.4490459e-09 insert etawidth:InterpolationWidths 17 8.4490725e-09 insert etawidth:InterpolationWidths 18 8.4490991e-09 insert etawidth:InterpolationWidths 19 8.4491257e-09 insert etawidth:InterpolationWidths 20 8.4491523e-09 insert etawidth:InterpolationWidths 21 8.4491789e-09 insert etawidth:InterpolationWidths 22 8.4492055e-09 insert etawidth:InterpolationWidths 23 8.4492321e-09 insert etawidth:InterpolationWidths 24 8.4492587e-09 insert etawidth:InterpolationWidths 25 8.4492853e-09 insert etawidth:InterpolationWidths 26 8.449312e-09 insert etawidth:InterpolationWidths 27 8.4493386e-09 insert etawidth:InterpolationWidths 28 8.4493652e-09 insert etawidth:InterpolationWidths 29 8.4493918e-09 insert etawidth:InterpolationWidths 30 8.4494184e-09 insert etawidth:InterpolationWidths 31 8.449445e-09 insert etawidth:InterpolationWidths 32 8.4494716e-09 insert etawidth:InterpolationWidths 33 8.4494982e-09 insert etawidth:InterpolationWidths 34 8.4495248e-09 insert etawidth:InterpolationWidths 35 8.4495514e-09 insert etawidth:InterpolationWidths 36 8.4495781e-09 insert etawidth:InterpolationWidths 37 8.4496047e-09 insert etawidth:InterpolationWidths 38 8.4496313e-09 insert etawidth:InterpolationWidths 39 8.4496579e-09 insert etawidth:InterpolationWidths 40 8.4496845e-09 insert etawidth:InterpolationWidths 41 8.4497111e-09 insert etawidth:InterpolationWidths 42 8.4497377e-09 insert etawidth:InterpolationWidths 43 8.4497643e-09 insert etawidth:InterpolationWidths 44 8.4497909e-09 insert etawidth:InterpolationWidths 45 8.4498175e-09 insert etawidth:InterpolationWidths 46 8.4498442e-09 insert etawidth:InterpolationWidths 47 8.4498708e-09 insert etawidth:InterpolationWidths 48 8.4498974e-09 insert etawidth:InterpolationWidths 49 8.449924e-09 insert etawidth:InterpolationWidths 50 3.8476681e-10 insert etawidth:InterpolationWidths 51 3.8476914e-10 insert etawidth:InterpolationWidths 52 3.8477147e-10 insert etawidth:InterpolationWidths 53 3.8477381e-10 insert etawidth:InterpolationWidths 54 3.8477614e-10 insert etawidth:InterpolationWidths 55 3.8477848e-10 insert etawidth:InterpolationWidths 56 3.8478081e-10 insert etawidth:InterpolationWidths 57 3.8478315e-10 insert etawidth:InterpolationWidths 58 3.8478548e-10 insert etawidth:InterpolationWidths 59 3.8478781e-10 insert etawidth:InterpolationWidths 60 3.8479015e-10 insert etawidth:InterpolationWidths 61 3.8479248e-10 insert etawidth:InterpolationWidths 62 3.8479482e-10 insert etawidth:InterpolationWidths 63 3.8479715e-10 insert etawidth:InterpolationWidths 64 3.8479949e-10 insert etawidth:InterpolationWidths 65 3.8480182e-10 insert etawidth:InterpolationWidths 66 3.8480416e-10 insert etawidth:InterpolationWidths 67 3.8480649e-10 insert etawidth:InterpolationWidths 68 3.8480882e-10 insert etawidth:InterpolationWidths 69 3.8481116e-10 insert etawidth:InterpolationWidths 70 3.8481349e-10 insert etawidth:InterpolationWidths 71 3.8481583e-10 insert etawidth:InterpolationWidths 72 3.8481816e-10 insert etawidth:InterpolationWidths 73 3.848205e-10 insert etawidth:InterpolationWidths 74 3.8482283e-10 insert etawidth:InterpolationWidths 75 3.8482517e-10 insert etawidth:InterpolationWidths 76 3.848275e-10 insert etawidth:InterpolationWidths 77 3.8482983e-10 insert etawidth:InterpolationWidths 78 3.8483217e-10 insert etawidth:InterpolationWidths 79 3.848345e-10 insert etawidth:InterpolationWidths 80 3.8483684e-10 insert etawidth:InterpolationWidths 81 3.8483917e-10 insert etawidth:InterpolationWidths 82 3.8484151e-10 insert etawidth:InterpolationWidths 83 3.8484384e-10 insert etawidth:InterpolationWidths 84 3.8484618e-10 insert etawidth:InterpolationWidths 85 3.8484851e-10 insert etawidth:InterpolationWidths 86 3.8485085e-10 insert etawidth:InterpolationWidths 87 3.8485318e-10 insert etawidth:InterpolationWidths 88 3.8485552e-10 insert etawidth:InterpolationWidths 89 3.8485785e-10 insert etawidth:InterpolationWidths 90 3.8486018e-10 insert etawidth:InterpolationWidths 91 3.8486252e-10 insert etawidth:InterpolationWidths 92 3.8486485e-10 insert etawidth:InterpolationWidths 93 3.8486719e-10 insert etawidth:InterpolationWidths 94 3.8486952e-10 insert etawidth:InterpolationWidths 95 3.8487186e-10 insert etawidth:InterpolationWidths 96 3.8487419e-10 insert etawidth:InterpolationWidths 97 3.8487653e-10 insert etawidth:InterpolationWidths 98 3.8487886e-10 insert etawidth:InterpolationWidths 99 3.848812e-10 insert etawidth:InterpolationWidths 100 6.0375207e-08 insert etawidth:InterpolationWidths 101 6.0375954e-08 insert etawidth:InterpolationWidths 102 6.03767e-08 insert etawidth:InterpolationWidths 103 6.0377447e-08 insert etawidth:InterpolationWidths 104 6.0378194e-08 insert etawidth:InterpolationWidths 105 6.0378941e-08 insert etawidth:InterpolationWidths 106 6.0379687e-08 insert etawidth:InterpolationWidths 107 6.0380434e-08 insert etawidth:InterpolationWidths 108 6.0381181e-08 insert etawidth:InterpolationWidths 109 6.0381928e-08 insert etawidth:InterpolationWidths 110 6.0382675e-08 insert etawidth:InterpolationWidths 111 6.0383422e-08 insert etawidth:InterpolationWidths 112 6.0384168e-08 insert etawidth:InterpolationWidths 113 6.0384915e-08 insert etawidth:InterpolationWidths 114 6.0385662e-08 insert etawidth:InterpolationWidths 115 6.0386409e-08 insert etawidth:InterpolationWidths 116 6.0387156e-08 insert etawidth:InterpolationWidths 117 6.0387903e-08 insert etawidth:InterpolationWidths 118 6.038865e-08 insert etawidth:InterpolationWidths 119 6.0389396e-08 insert etawidth:InterpolationWidths 120 6.0390143e-08 insert etawidth:InterpolationWidths 121 6.039089e-08 insert etawidth:InterpolationWidths 122 6.0391637e-08 insert etawidth:InterpolationWidths 123 6.0392384e-08 insert etawidth:InterpolationWidths 124 6.0393131e-08 insert etawidth:InterpolationWidths 125 6.0393878e-08 insert etawidth:InterpolationWidths 126 6.0394625e-08 insert etawidth:InterpolationWidths 127 6.0395372e-08 insert etawidth:InterpolationWidths 128 6.0396119e-08 insert etawidth:InterpolationWidths 129 6.0396866e-08 insert etawidth:InterpolationWidths 130 6.0397613e-08 insert etawidth:InterpolationWidths 131 6.039836e-08 insert etawidth:InterpolationWidths 132 6.0399107e-08 insert etawidth:InterpolationWidths 133 6.0399854e-08 insert etawidth:InterpolationWidths 134 6.0400601e-08 insert etawidth:InterpolationWidths 135 6.0401348e-08 insert etawidth:InterpolationWidths 136 6.0402095e-08 insert etawidth:InterpolationWidths 137 6.0402842e-08 insert etawidth:InterpolationWidths 138 6.0403589e-08 insert etawidth:InterpolationWidths 139 6.0404336e-08 insert etawidth:InterpolationWidths 140 6.0405083e-08 insert etawidth:InterpolationWidths 141 6.040583e-08 insert etawidth:InterpolationWidths 142 6.0406577e-08 insert etawidth:InterpolationWidths 143 6.0407325e-08 insert etawidth:InterpolationWidths 144 6.0408072e-08 insert etawidth:InterpolationWidths 145 6.0408819e-08 insert etawidth:InterpolationWidths 146 6.0409566e-08 insert etawidth:InterpolationWidths 147 6.0410313e-08 insert etawidth:InterpolationWidths 148 6.041106e-08 insert etawidth:InterpolationWidths 149 6.0411807e-08 insert etawidth:InterpolationWidths 150 4.6631028e-07 insert etawidth:InterpolationWidths 151 4.6631333e-07 insert etawidth:InterpolationWidths 152 4.6631638e-07 insert etawidth:InterpolationWidths 153 4.6631943e-07 insert etawidth:InterpolationWidths 154 4.6632248e-07 insert etawidth:InterpolationWidths 155 4.6632553e-07 insert etawidth:InterpolationWidths 156 4.6632858e-07 insert etawidth:InterpolationWidths 157 4.6633163e-07 insert etawidth:InterpolationWidths 158 4.6633468e-07 insert etawidth:InterpolationWidths 159 4.6633773e-07 insert etawidth:InterpolationWidths 160 4.6634078e-07 insert etawidth:InterpolationWidths 161 4.6634383e-07 insert etawidth:InterpolationWidths 162 4.6634688e-07 insert etawidth:InterpolationWidths 163 4.6634993e-07 insert etawidth:InterpolationWidths 164 4.6635297e-07 insert etawidth:InterpolationWidths 165 4.6635602e-07 insert etawidth:InterpolationWidths 166 4.6635907e-07 insert etawidth:InterpolationWidths 167 4.6636212e-07 insert etawidth:InterpolationWidths 168 4.6636517e-07 insert etawidth:InterpolationWidths 169 4.6636822e-07 insert etawidth:InterpolationWidths 170 4.6637127e-07 insert etawidth:InterpolationWidths 171 4.6637432e-07 insert etawidth:InterpolationWidths 172 4.6637737e-07 insert etawidth:InterpolationWidths 173 4.6638042e-07 insert etawidth:InterpolationWidths 174 4.6638347e-07 insert etawidth:InterpolationWidths 175 4.6638652e-07 insert etawidth:InterpolationWidths 176 4.6638957e-07 insert etawidth:InterpolationWidths 177 4.6639262e-07 insert etawidth:InterpolationWidths 178 4.6639567e-07 insert etawidth:InterpolationWidths 179 4.6639872e-07 insert etawidth:InterpolationWidths 180 4.6640177e-07 insert etawidth:InterpolationWidths 181 4.6640482e-07 insert etawidth:InterpolationWidths 182 4.6640787e-07 insert etawidth:InterpolationWidths 183 4.6641092e-07 insert etawidth:InterpolationWidths 184 4.6641397e-07 insert etawidth:InterpolationWidths 185 4.6641701e-07 insert etawidth:InterpolationWidths 186 4.6642006e-07 insert etawidth:InterpolationWidths 187 4.6642311e-07 insert etawidth:InterpolationWidths 188 4.6642616e-07 insert etawidth:InterpolationWidths 189 4.6642921e-07 insert etawidth:InterpolationWidths 190 4.6643226e-07 insert etawidth:InterpolationWidths 191 4.6643531e-07 insert etawidth:InterpolationWidths 192 4.6643836e-07 insert etawidth:InterpolationWidths 193 4.6644141e-07 insert etawidth:InterpolationWidths 194 4.6644446e-07 insert etawidth:InterpolationWidths 195 4.6644751e-07 insert etawidth:InterpolationWidths 196 4.6645056e-07 insert etawidth:InterpolationWidths 197 4.6645361e-07 insert etawidth:InterpolationWidths 198 4.6645666e-07 insert etawidth:InterpolationWidths 199 4.6645971e-07 insert etawidth:InterpolationWidths 200 3.296495e-10 insert etawidth:InterpolationWidths 201 3.2965309e-10 insert etawidth:InterpolationWidths 202 3.2965668e-10 insert etawidth:InterpolationWidths 203 3.2966026e-10 insert etawidth:InterpolationWidths 204 3.2966385e-10 insert etawidth:InterpolationWidths 205 3.2966744e-10 insert etawidth:InterpolationWidths 206 3.2967103e-10 insert etawidth:InterpolationWidths 207 3.2967462e-10 insert etawidth:InterpolationWidths 208 3.2967821e-10 insert etawidth:InterpolationWidths 209 3.2968179e-10 insert etawidth:InterpolationWidths 210 3.2968538e-10 insert etawidth:InterpolationWidths 211 3.2968897e-10 insert etawidth:InterpolationWidths 212 3.2969256e-10 insert etawidth:InterpolationWidths 213 3.2969615e-10 insert etawidth:InterpolationWidths 214 3.2969974e-10 insert etawidth:InterpolationWidths 215 3.2970333e-10 insert etawidth:InterpolationWidths 216 3.2970691e-10 insert etawidth:InterpolationWidths 217 3.297105e-10 insert etawidth:InterpolationWidths 218 3.2971409e-10 insert etawidth:InterpolationWidths 219 3.2971768e-10 insert etawidth:InterpolationWidths 220 3.2972127e-10 insert etawidth:InterpolationWidths 221 3.2972486e-10 insert etawidth:InterpolationWidths 222 3.2972845e-10 insert etawidth:InterpolationWidths 223 3.2973204e-10 insert etawidth:InterpolationWidths 224 3.2973563e-10 insert etawidth:InterpolationWidths 225 3.2973921e-10 insert etawidth:InterpolationWidths 226 3.297428e-10 insert etawidth:InterpolationWidths 227 3.2974639e-10 insert etawidth:InterpolationWidths 228 3.2974998e-10 insert etawidth:InterpolationWidths 229 3.2975357e-10 insert etawidth:InterpolationWidths 230 3.2975716e-10 insert etawidth:InterpolationWidths 231 3.2976075e-10 insert etawidth:InterpolationWidths 232 3.2976434e-10 insert etawidth:InterpolationWidths 233 3.2976793e-10 insert etawidth:InterpolationWidths 234 3.2977152e-10 insert etawidth:InterpolationWidths 235 3.2977511e-10 insert etawidth:InterpolationWidths 236 3.297787e-10 insert etawidth:InterpolationWidths 237 3.2978228e-10 insert etawidth:InterpolationWidths 238 3.2978587e-10 insert etawidth:InterpolationWidths 239 3.2978946e-10 insert etawidth:InterpolationWidths 240 3.2979305e-10 insert etawidth:InterpolationWidths 241 3.2979664e-10 insert etawidth:InterpolationWidths 242 3.2980023e-10 insert etawidth:InterpolationWidths 243 3.2980382e-10 insert etawidth:InterpolationWidths 244 3.2980741e-10 insert etawidth:InterpolationWidths 245 3.29811e-10 insert etawidth:InterpolationWidths 246 3.2981459e-10 insert etawidth:InterpolationWidths 247 3.2981818e-10 insert etawidth:InterpolationWidths 248 3.2982177e-10 insert etawidth:InterpolationWidths 249 3.2982536e-10 insert etawidth:InterpolationWidths 250 4.1844628e-07 insert etawidth:InterpolationWidths 251 4.1844881e-07 insert etawidth:InterpolationWidths 252 4.1845134e-07 insert etawidth:InterpolationWidths 253 4.1845386e-07 insert etawidth:InterpolationWidths 254 4.1845639e-07 insert etawidth:InterpolationWidths 255 4.1845892e-07 insert etawidth:InterpolationWidths 256 4.1846145e-07 insert etawidth:InterpolationWidths 257 4.1846397e-07 insert etawidth:InterpolationWidths 258 4.184665e-07 insert etawidth:InterpolationWidths 259 4.1846903e-07 insert etawidth:InterpolationWidths 260 4.1847156e-07 insert etawidth:InterpolationWidths 261 4.1847408e-07 insert etawidth:InterpolationWidths 262 4.1847661e-07 insert etawidth:InterpolationWidths 263 4.1847914e-07 insert etawidth:InterpolationWidths 264 4.1848167e-07 insert etawidth:InterpolationWidths 265 4.1848419e-07 insert etawidth:InterpolationWidths 266 4.1848672e-07 insert etawidth:InterpolationWidths 267 4.1848925e-07 insert etawidth:InterpolationWidths 268 4.1849178e-07 insert etawidth:InterpolationWidths 269 4.184943e-07 insert etawidth:InterpolationWidths 270 4.1849683e-07 insert etawidth:InterpolationWidths 271 4.1849936e-07 insert etawidth:InterpolationWidths 272 4.1850188e-07 insert etawidth:InterpolationWidths 273 4.1850441e-07 insert etawidth:InterpolationWidths 274 4.1850694e-07 insert etawidth:InterpolationWidths 275 4.1850947e-07 insert etawidth:InterpolationWidths 276 4.1851199e-07 insert etawidth:InterpolationWidths 277 4.1851452e-07 insert etawidth:InterpolationWidths 278 4.1851705e-07 insert etawidth:InterpolationWidths 279 4.1851958e-07 insert etawidth:InterpolationWidths 280 4.185221e-07 insert etawidth:InterpolationWidths 281 4.1852463e-07 insert etawidth:InterpolationWidths 282 4.1852716e-07 insert etawidth:InterpolationWidths 283 4.1852969e-07 insert etawidth:InterpolationWidths 284 4.1853221e-07 insert etawidth:InterpolationWidths 285 4.1853474e-07 insert etawidth:InterpolationWidths 286 4.1853727e-07 insert etawidth:InterpolationWidths 287 4.185398e-07 insert etawidth:InterpolationWidths 288 4.1854232e-07 insert etawidth:InterpolationWidths 289 4.1854485e-07 insert etawidth:InterpolationWidths 290 4.1854738e-07 insert etawidth:InterpolationWidths 291 4.1854991e-07 insert etawidth:InterpolationWidths 292 4.1855243e-07 insert etawidth:InterpolationWidths 293 4.1855496e-07 insert etawidth:InterpolationWidths 294 4.1855749e-07 insert etawidth:InterpolationWidths 295 4.1856002e-07 insert etawidth:InterpolationWidths 296 4.1856254e-07 insert etawidth:InterpolationWidths 297 4.1856507e-07 insert etawidth:InterpolationWidths 298 4.185676e-07 insert etawidth:InterpolationWidths 299 4.1857013e-07 insert etawidth:NumberofEntries 0 50 insert etawidth:NumberofEntries 1 50 insert etawidth:NumberofEntries 2 100 insert etawidth:NumberofEntries 3 100 insert etawidth:NumberofEntries 4 100 insert etawidth:NumberofEntries 5 150 insert etawidth:NumberofEntries 6 200 insert etawidth:NumberofEntries 7 250 insert etawidth:NumberofEntries 8 300 newdef /Herwig/Particles/eta:Width_generator etawidth # create Herwig::GenericWidthGenerator rho0width newdef rho0width:Particle /Herwig/Particles/rho0 newdef rho0width:Prefactor 1.00115 newdef rho0width:BRNormalize 1 newdef rho0width:BRMinimum 0.01 newdef rho0width:Points 50 newdef rho0width:InterpolationOrder 1 insert rho0width:MEtype 0 1 insert rho0width:MEtype 1 2 insert rho0width:MEtype 2 1 insert rho0width:MEtype 3 0 insert rho0width:MEtype 4 0 insert rho0width:MEtype 5 1 insert rho0width:MEtype 6 1 insert rho0width:MEtype 7 0 insert rho0width:MEcode 0 2 insert rho0width:MEcode 1 0 insert rho0width:MEcode 2 2 insert rho0width:MEcode 3 0 insert rho0width:MEcode 4 0 insert rho0width:MEcode 5 0 insert rho0width:MEcode 6 1 insert rho0width:MEcode 7 0 insert rho0width:MEcoupling 0 0.0184756 insert rho0width:MEcoupling 1 0.963849 insert rho0width:MEcoupling 2 0.0184952 insert rho0width:MEcoupling 3 1.8e-05 insert rho0width:MEcoupling 4 0.000101 insert rho0width:MEcoupling 5 5.9776 insert rho0width:MEcoupling 6 0.195529 insert rho0width:MEcoupling 7 4.5e-05 insert rho0width:ModeOn 0 0 insert rho0width:ModeOn 1 0 insert rho0width:ModeOn 2 0 insert rho0width:ModeOn 3 0 insert rho0width:ModeOn 4 0 insert rho0width:ModeOn 5 1 insert rho0width:ModeOn 6 0 insert rho0width:ModeOn 7 0 insert rho0width:MinimumMasses 0 0.00102 insert rho0width:MinimumMasses 1 0.547497 insert rho0width:MinimumMasses 2 0.21132 insert rho0width:MinimumMasses 3 0.558281 insert rho0width:MinimumMasses 4 0.414118 insert rho0width:MinimumMasses 5 0.27914 insert rho0width:MinimumMasses 6 0.134978 insert rho0width:MinimumMasses 7 0.269955 insert rho0width:MEmass1 0 0.00051 insert rho0width:MEmass1 1 0 insert rho0width:MEmass1 2 0.10566 insert rho0width:MEmass1 3 0 insert rho0width:MEmass1 4 0 insert rho0width:MEmass1 5 0.13957 insert rho0width:MEmass1 6 0 insert rho0width:MEmass1 7 0 insert rho0width:MEmass2 0 0.00051 insert rho0width:MEmass2 1 0.54751 insert rho0width:MEmass2 2 0.10566 insert rho0width:MEmass2 3 0 insert rho0width:MEmass2 4 0 insert rho0width:MEmass2 5 0.13957 insert rho0width:MEmass2 6 0.134978 insert rho0width:MEmass2 7 0 insert rho0width:DecayModes 0 rho0->e-,e+; insert rho0width:DecayModes 1 rho0->eta,gamma; insert rho0width:DecayModes 2 rho0->mu-,mu+; insert rho0width:DecayModes 3 rho0->pi+,pi+,pi-,pi-; insert rho0width:DecayModes 4 rho0->pi+,pi-,pi0; insert rho0width:DecayModes 5 rho0->pi+,pi-; insert rho0width:DecayModes 6 rho0->pi0,gamma; insert rho0width:DecayModes 7 rho0->pi0,pi0,gamma; insert rho0width:InterpolationMasses 0 0.51778259 insert rho0width:InterpolationMasses 1 0.5326398 insert rho0width:InterpolationMasses 2 0.547497 insert rho0width:InterpolationMasses 3 0.54896488 insert rho0width:InterpolationMasses 4 0.5504367 insert rho0width:InterpolationMasses 5 0.55191247 insert rho0width:InterpolationMasses 6 0.55339219 insert rho0width:InterpolationMasses 7 0.55487588 insert rho0width:InterpolationMasses 8 0.55636354 insert rho0width:InterpolationMasses 9 0.5578552 insert rho0width:InterpolationMasses 10 0.55935085 insert rho0width:InterpolationMasses 11 0.56085052 insert rho0width:InterpolationMasses 12 0.5623542 insert rho0width:InterpolationMasses 13 0.57721141 insert rho0width:InterpolationMasses 14 0.59206861 insert rho0width:InterpolationMasses 15 0.60692582 insert rho0width:InterpolationMasses 16 0.62178302 insert rho0width:InterpolationMasses 17 0.63664022 insert rho0width:InterpolationMasses 18 0.65149743 insert rho0width:InterpolationMasses 19 0.66635463 insert rho0width:InterpolationMasses 20 0.68121184 insert rho0width:InterpolationMasses 21 0.69606904 insert rho0width:InterpolationMasses 22 0.71092624 insert rho0width:InterpolationMasses 23 0.72578345 insert rho0width:InterpolationMasses 24 0.74064065 insert rho0width:InterpolationMasses 25 0.75549786 insert rho0width:InterpolationMasses 26 0.77035506 insert rho0width:InterpolationMasses 27 0.78521227 insert rho0width:InterpolationMasses 28 0.80006947 insert rho0width:InterpolationMasses 29 0.81492667 insert rho0width:InterpolationMasses 30 0.82978388 insert rho0width:InterpolationMasses 31 0.84464108 insert rho0width:InterpolationMasses 32 0.85949829 insert rho0width:InterpolationMasses 33 0.87435549 insert rho0width:InterpolationMasses 34 0.88921269 insert rho0width:InterpolationMasses 35 0.9040699 insert rho0width:InterpolationMasses 36 0.9189271 insert rho0width:InterpolationMasses 37 0.93378431 insert rho0width:InterpolationMasses 38 0.94864151 insert rho0width:InterpolationMasses 39 0.96349871 insert rho0width:InterpolationMasses 40 0.97835592 insert rho0width:InterpolationMasses 41 0.99321312 insert rho0width:InterpolationMasses 42 1.0080703 insert rho0width:InterpolationMasses 43 1.0229275 insert rho0width:InterpolationMasses 44 1.0377847 insert rho0width:InterpolationMasses 45 1.0526419 insert rho0width:InterpolationMasses 46 1.0674991 insert rho0width:InterpolationMasses 47 1.0823563 insert rho0width:InterpolationMasses 48 1.0972136 insert rho0width:InterpolationMasses 49 1.1120708 insert rho0width:InterpolationMasses 50 1.126928 insert rho0width:InterpolationMasses 51 1.1417852 insert rho0width:InterpolationMasses 52 1.1566424 insert rho0width:InterpolationMasses 53 1.1714996 insert rho0width:InterpolationMasses 54 1.1863568 insert rho0width:InterpolationMasses 55 1.201214 insert rho0width:InterpolationMasses 56 1.2160712 insert rho0width:InterpolationMasses 57 1.2309284 insert rho0width:InterpolationMasses 58 1.2457856 insert rho0width:InterpolationMasses 59 1.2606428 insert rho0width:InterpolationMasses 60 1.2755 insert rho0width:InterpolationMasses 61 1.2903572 insert rho0width:InterpolationMasses 62 1.3052144 insert rho0width:InterpolationWidths 0 0 insert rho0width:InterpolationWidths 1 0 insert rho0width:InterpolationWidths 2 0 insert rho0width:InterpolationWidths 3 1.9068743e-11 insert rho0width:InterpolationWidths 4 1.5460734e-10 insert rho0width:InterpolationWidths 5 5.2413608e-10 insert rho0width:InterpolationWidths 6 1.245192e-09 insert rho0width:InterpolationWidths 7 2.4353374e-09 insert rho0width:InterpolationWidths 8 4.2121682e-09 insert rho0width:InterpolationWidths 9 6.6933223e-09 insert rho0width:InterpolationWidths 10 9.9964881e-09 insert rho0width:InterpolationWidths 11 1.4239413e-08 insert rho0width:InterpolationWidths 12 1.9539912e-08 insert rho0width:InterpolationWidths 13 1.5063761e-07 insert rho0width:InterpolationWidths 14 4.9021191e-07 insert rho0width:InterpolationWidths 15 1.1217108e-06 insert rho0width:InterpolationWidths 16 2.1174779e-06 insert rho0width:InterpolationWidths 17 3.5406689e-06 insert rho0width:InterpolationWidths 18 5.4468091e-06 insert rho0width:InterpolationWidths 19 7.8850665e-06 insert rho0width:InterpolationWidths 20 1.0899295e-05 insert rho0width:InterpolationWidths 21 1.4528896e-05 insert rho0width:InterpolationWidths 22 1.8809525e-05 insert rho0width:InterpolationWidths 23 2.3773683e-05 insert rho0width:InterpolationWidths 24 2.9451207e-05 insert rho0width:InterpolationWidths 25 3.5869677e-05 insert rho0width:InterpolationWidths 26 4.3054761e-05 insert rho0width:InterpolationWidths 27 5.1030501e-05 insert rho0width:InterpolationWidths 28 5.9819553e-05 insert rho0width:InterpolationWidths 29 6.9443397e-05 insert rho0width:InterpolationWidths 30 7.9922503e-05 insert rho0width:InterpolationWidths 31 9.1276481e-05 insert rho0width:InterpolationWidths 32 0.00010352421 insert rho0width:InterpolationWidths 33 0.00011668393 insert rho0width:InterpolationWidths 34 0.00013077335 insert rho0width:InterpolationWidths 35 0.00014580971 insert rho0width:InterpolationWidths 36 0.00016180985 insert rho0width:InterpolationWidths 37 0.0001787903 insert rho0width:InterpolationWidths 38 0.00019676725 insert rho0width:InterpolationWidths 39 0.00021575669 insert rho0width:InterpolationWidths 40 0.00023577436 insert rho0width:InterpolationWidths 41 0.00025683583 insert rho0width:InterpolationWidths 42 0.00027895653 insert rho0width:InterpolationWidths 43 0.00030215174 insert rho0width:InterpolationWidths 44 0.00032643663 insert rho0width:InterpolationWidths 45 0.00035182628 insert rho0width:InterpolationWidths 46 0.00037833569 insert rho0width:InterpolationWidths 47 0.00040597978 insert rho0width:InterpolationWidths 48 0.00043477344 insert rho0width:InterpolationWidths 49 0.00046473149 insert rho0width:InterpolationWidths 50 0.00049586872 insert rho0width:InterpolationWidths 51 0.00052819989 insert rho0width:InterpolationWidths 52 0.00056173973 insert rho0width:InterpolationWidths 53 0.00059650297 insert rho0width:InterpolationWidths 54 0.0006325043 insert rho0width:InterpolationWidths 55 0.00066975842 insert rho0width:InterpolationWidths 56 0.00070828001 insert rho0width:InterpolationWidths 57 0.00074808375 insert rho0width:InterpolationWidths 58 0.00078918432 insert rho0width:InterpolationWidths 59 0.00083159641 insert rho0width:InterpolationWidths 60 0.00087533469 insert rho0width:InterpolationWidths 61 0.00092041385 insert rho0width:InterpolationWidths 62 0.00096684859 insert rho0width:NumberofEntries 0 0 insert rho0width:NumberofEntries 1 63 insert rho0width:NumberofEntries 2 63 insert rho0width:NumberofEntries 3 63 insert rho0width:NumberofEntries 4 63 insert rho0width:NumberofEntries 5 63 insert rho0width:NumberofEntries 6 63 insert rho0width:NumberofEntries 7 63 newdef /Herwig/Particles/rho0:Width_generator rho0width # create Herwig::GenericWidthGenerator D_20width newdef D_20width:Particle /Herwig/Particles/D*_20 newdef D_20width:Prefactor 0.999699 newdef D_20width:BRNormalize 1 newdef D_20width:BRMinimum 0.01 newdef D_20width:Points 50 newdef D_20width:InterpolationOrder 1 insert D_20width:MEtype 0 2 insert D_20width:MEtype 1 2 insert D_20width:MEtype 2 1 insert D_20width:MEtype 3 1 insert D_20width:MEcode 0 0 insert D_20width:MEcode 1 0 insert D_20width:MEcode 2 7 insert D_20width:MEcode 3 7 insert D_20width:MEcoupling 0 0.999572 insert D_20width:MEcoupling 1 0.999391 insert D_20width:MEcoupling 2 63.4741 insert D_20width:MEcoupling 3 43.8467 insert D_20width:ModeOn 0 1 insert D_20width:ModeOn 1 1 insert D_20width:ModeOn 2 1 insert D_20width:ModeOn 3 1 insert D_20width:MinimumMasses 0 2.14861 insert D_20width:MinimumMasses 1 2.141 insert D_20width:MinimumMasses 2 2.00887 insert D_20width:MinimumMasses 3 1.99948 insert D_20width:MEmass1 0 0.13957 insert D_20width:MEmass1 1 0.134978 insert D_20width:MEmass1 2 1.8693 insert D_20width:MEmass1 3 1.8645 insert D_20width:MEmass2 0 2.01 insert D_20width:MEmass2 1 2.0067 insert D_20width:MEmass2 2 0.13957 insert D_20width:MEmass2 3 0.134978 insert D_20width:DecayModes 0 D*_20->D*+,pi-; insert D_20width:DecayModes 1 D*_20->D*0,pi0; insert D_20width:DecayModes 2 D*_20->D+,pi-; insert D_20width:DecayModes 3 D*_20->D0,pi0; insert D_20width:InterpolationMasses 0 2.228549 insert D_20width:InterpolationMasses 1 2.2373245 insert D_20width:InterpolationMasses 2 2.2461 insert D_20width:InterpolationMasses 3 2.2548755 insert D_20width:InterpolationMasses 4 2.263651 insert D_20width:InterpolationMasses 5 2.2724265 insert D_20width:InterpolationMasses 6 2.281202 insert D_20width:InterpolationMasses 7 2.2899776 insert D_20width:InterpolationMasses 8 2.2987531 insert D_20width:InterpolationMasses 9 2.3075286 insert D_20width:InterpolationMasses 10 2.3163041 insert D_20width:InterpolationMasses 11 2.3250796 insert D_20width:InterpolationMasses 12 2.3338551 insert D_20width:InterpolationMasses 13 2.3426306 insert D_20width:InterpolationMasses 14 2.3514061 insert D_20width:InterpolationMasses 15 2.3601816 insert D_20width:InterpolationMasses 16 2.3689571 insert D_20width:InterpolationMasses 17 2.3777327 insert D_20width:InterpolationMasses 18 2.3865082 insert D_20width:InterpolationMasses 19 2.3952837 insert D_20width:InterpolationMasses 20 2.4040592 insert D_20width:InterpolationMasses 21 2.4128347 insert D_20width:InterpolationMasses 22 2.4216102 insert D_20width:InterpolationMasses 23 2.4303857 insert D_20width:InterpolationMasses 24 2.4391612 insert D_20width:InterpolationMasses 25 2.4479367 insert D_20width:InterpolationMasses 26 2.4567122 insert D_20width:InterpolationMasses 27 2.4654878 insert D_20width:InterpolationMasses 28 2.4742633 insert D_20width:InterpolationMasses 29 2.4830388 insert D_20width:InterpolationMasses 30 2.4918143 insert D_20width:InterpolationMasses 31 2.5005898 insert D_20width:InterpolationMasses 32 2.5093653 insert D_20width:InterpolationMasses 33 2.5181408 insert D_20width:InterpolationMasses 34 2.5269163 insert D_20width:InterpolationMasses 35 2.5356918 insert D_20width:InterpolationMasses 36 2.5444673 insert D_20width:InterpolationMasses 37 2.5532429 insert D_20width:InterpolationMasses 38 2.5620184 insert D_20width:InterpolationMasses 39 2.5707939 insert D_20width:InterpolationMasses 40 2.5795694 insert D_20width:InterpolationMasses 41 2.5883449 insert D_20width:InterpolationMasses 42 2.5971204 insert D_20width:InterpolationMasses 43 2.6058959 insert D_20width:InterpolationMasses 44 2.6146714 insert D_20width:InterpolationMasses 45 2.6234469 insert D_20width:InterpolationMasses 46 2.6322224 insert D_20width:InterpolationMasses 47 2.640998 insert D_20width:InterpolationMasses 48 2.6497735 insert D_20width:InterpolationMasses 49 2.658549 insert D_20width:InterpolationMasses 50 2.6673245 insert D_20width:InterpolationMasses 51 2.6761 insert D_20width:InterpolationMasses 52 2.6848755 insert D_20width:InterpolationMasses 53 2.693651 insert D_20width:InterpolationMasses 54 2.228549 insert D_20width:InterpolationMasses 55 2.2373245 insert D_20width:InterpolationMasses 56 2.2461 insert D_20width:InterpolationMasses 57 2.2548755 insert D_20width:InterpolationMasses 58 2.263651 insert D_20width:InterpolationMasses 59 2.2724265 insert D_20width:InterpolationMasses 60 2.281202 insert D_20width:InterpolationMasses 61 2.2899776 insert D_20width:InterpolationMasses 62 2.2987531 insert D_20width:InterpolationMasses 63 2.3075286 insert D_20width:InterpolationMasses 64 2.3163041 insert D_20width:InterpolationMasses 65 2.3250796 insert D_20width:InterpolationMasses 66 2.3338551 insert D_20width:InterpolationMasses 67 2.3426306 insert D_20width:InterpolationMasses 68 2.3514061 insert D_20width:InterpolationMasses 69 2.3601816 insert D_20width:InterpolationMasses 70 2.3689571 insert D_20width:InterpolationMasses 71 2.3777327 insert D_20width:InterpolationMasses 72 2.3865082 insert D_20width:InterpolationMasses 73 2.3952837 insert D_20width:InterpolationMasses 74 2.4040592 insert D_20width:InterpolationMasses 75 2.4128347 insert D_20width:InterpolationMasses 76 2.4216102 insert D_20width:InterpolationMasses 77 2.4303857 insert D_20width:InterpolationMasses 78 2.4391612 insert D_20width:InterpolationMasses 79 2.4479367 insert D_20width:InterpolationMasses 80 2.4567122 insert D_20width:InterpolationMasses 81 2.4654878 insert D_20width:InterpolationMasses 82 2.4742633 insert D_20width:InterpolationMasses 83 2.4830388 insert D_20width:InterpolationMasses 84 2.4918143 insert D_20width:InterpolationMasses 85 2.5005898 insert D_20width:InterpolationMasses 86 2.5093653 insert D_20width:InterpolationMasses 87 2.5181408 insert D_20width:InterpolationMasses 88 2.5269163 insert D_20width:InterpolationMasses 89 2.5356918 insert D_20width:InterpolationMasses 90 2.5444673 insert D_20width:InterpolationMasses 91 2.5532429 insert D_20width:InterpolationMasses 92 2.5620184 insert D_20width:InterpolationMasses 93 2.5707939 insert D_20width:InterpolationMasses 94 2.5795694 insert D_20width:InterpolationMasses 95 2.5883449 insert D_20width:InterpolationMasses 96 2.5971204 insert D_20width:InterpolationMasses 97 2.6058959 insert D_20width:InterpolationMasses 98 2.6146714 insert D_20width:InterpolationMasses 99 2.6234469 insert D_20width:InterpolationMasses 100 2.6322224 insert D_20width:InterpolationMasses 101 2.640998 insert D_20width:InterpolationMasses 102 2.6497735 insert D_20width:InterpolationMasses 103 2.658549 insert D_20width:InterpolationMasses 104 2.6673245 insert D_20width:InterpolationMasses 105 2.6761 insert D_20width:InterpolationMasses 106 2.6848755 insert D_20width:InterpolationMasses 107 2.693651 insert D_20width:InterpolationWidths 0 0.00010948522 insert D_20width:InterpolationWidths 1 0.0001499703 insert D_20width:InterpolationWidths 2 0.00020005261 insert D_20width:InterpolationWidths 3 0.00026103751 insert D_20width:InterpolationWidths 4 0.00033431231 insert D_20width:InterpolationWidths 5 0.00042134716 insert D_20width:InterpolationWidths 6 0.00052369598 insert D_20width:InterpolationWidths 7 0.00064300082 insert D_20width:InterpolationWidths 8 0.00078097886 insert D_20width:InterpolationWidths 9 0.00093944218 insert D_20width:InterpolationWidths 10 0.0011202862 insert D_20width:InterpolationWidths 11 0.0013254931 insert D_20width:InterpolationWidths 12 0.001557132 insert D_20width:InterpolationWidths 13 0.0018173593 insert D_20width:InterpolationWidths 14 0.0021084195 insert D_20width:InterpolationWidths 15 0.0024326445 insert D_20width:InterpolationWidths 16 0.0027924547 insert D_20width:InterpolationWidths 17 0.0031903586 insert D_20width:InterpolationWidths 18 0.0036289533 insert D_20width:InterpolationWidths 19 0.0041109245 insert D_20width:InterpolationWidths 20 0.0046390465 insert D_20width:InterpolationWidths 21 0.0052161823 insert D_20width:InterpolationWidths 22 0.0058452837 insert D_20width:InterpolationWidths 23 0.0065293912 insert D_20width:InterpolationWidths 24 0.0072716344 insert D_20width:InterpolationWidths 25 0.0080752314 insert D_20width:InterpolationWidths 26 0.0089434889 insert D_20width:InterpolationWidths 27 0.0098798028 insert D_20width:InterpolationWidths 28 0.010887657 insert D_20width:InterpolationWidths 29 0.011970624 insert D_20width:InterpolationWidths 30 0.013132366 insert D_20width:InterpolationWidths 31 0.014376632 insert D_20width:InterpolationWidths 32 0.01570726 insert D_20width:InterpolationWidths 33 0.017128176 insert D_20width:InterpolationWidths 34 0.018643393 insert D_20width:InterpolationWidths 35 0.020257015 insert D_20width:InterpolationWidths 36 0.02197323 insert D_20width:InterpolationWidths 37 0.023796315 insert D_20width:InterpolationWidths 38 0.025730637 insert D_20width:InterpolationWidths 39 0.027780647 insert D_20width:InterpolationWidths 40 0.029950884 insert D_20width:InterpolationWidths 41 0.032245975 insert D_20width:InterpolationWidths 42 0.034670633 insert D_20width:InterpolationWidths 43 0.037229658 insert D_20width:InterpolationWidths 44 0.039927938 insert D_20width:InterpolationWidths 45 0.042770445 insert D_20width:InterpolationWidths 46 0.045762238 insert D_20width:InterpolationWidths 47 0.048908464 insert D_20width:InterpolationWidths 48 0.052214353 insert D_20width:InterpolationWidths 49 0.055685224 insert D_20width:InterpolationWidths 50 0.059326478 insert D_20width:InterpolationWidths 51 0.063143606 insert D_20width:InterpolationWidths 52 0.067142181 insert D_20width:InterpolationWidths 53 0.071327861 insert D_20width:InterpolationWidths 54 6.5025685e-05 insert D_20width:InterpolationWidths 55 8.7079507e-05 insert D_20width:InterpolationWidths 56 0.00011401627 insert D_20width:InterpolationWidths 57 0.00014647025 insert D_20width:InterpolationWidths 58 0.00018511473 insert D_20width:InterpolationWidths 59 0.00023066237 insert D_20width:InterpolationWidths 60 0.00028386561 insert D_20width:InterpolationWidths 61 0.00034551697 insert D_20width:InterpolationWidths 62 0.00041644936 insert D_20width:InterpolationWidths 63 0.00049753631 insert D_20width:InterpolationWidths 64 0.00058969224 insert D_20width:InterpolationWidths 65 0.00069387258 insert D_20width:InterpolationWidths 66 0.00081107402 insert D_20width:InterpolationWidths 67 0.00094233461 insert D_20width:InterpolationWidths 68 0.0010887339 insert D_20width:InterpolationWidths 69 0.0012513931 insert D_20width:InterpolationWidths 70 0.0014314752 insert D_20width:InterpolationWidths 71 0.0016301847 insert D_20width:InterpolationWidths 72 0.0018487682 insert D_20width:InterpolationWidths 73 0.0020885143 insert D_20width:InterpolationWidths 74 0.0023507532 insert D_20width:InterpolationWidths 75 0.0026368574 insert D_20width:InterpolationWidths 76 0.0029482411 insert D_20width:InterpolationWidths 77 0.0032863608 insert D_20width:InterpolationWidths 78 0.0036527147 insert D_20width:InterpolationWidths 79 0.0040488432 insert D_20width:InterpolationWidths 80 0.0044763284 insert D_20width:InterpolationWidths 81 0.0049367946 insert D_20width:InterpolationWidths 82 0.0054319079 insert D_20width:InterpolationWidths 83 0.0059633762 insert D_20width:InterpolationWidths 84 0.0065329493 insert D_20width:InterpolationWidths 85 0.0071424186 insert D_20width:InterpolationWidths 86 0.0077936176 insert D_20width:InterpolationWidths 87 0.0084884211 insert D_20width:InterpolationWidths 88 0.0092287456 insert D_20width:InterpolationWidths 89 0.010016549 insert D_20width:InterpolationWidths 90 0.010853832 insert D_20width:InterpolationWidths 91 0.011742634 insert D_20width:InterpolationWidths 92 0.012685039 insert D_20width:InterpolationWidths 93 0.013683169 insert D_20width:InterpolationWidths 94 0.01473919 insert D_20width:InterpolationWidths 95 0.015855307 insert D_20width:InterpolationWidths 96 0.017033769 insert D_20width:InterpolationWidths 97 0.018276862 insert D_20width:InterpolationWidths 98 0.019586916 insert D_20width:InterpolationWidths 99 0.020966302 insert D_20width:InterpolationWidths 100 0.022417428 insert D_20width:InterpolationWidths 101 0.023942748 insert D_20width:InterpolationWidths 102 0.025544753 insert D_20width:InterpolationWidths 103 0.027225975 insert D_20width:InterpolationWidths 104 0.028988988 insert D_20width:InterpolationWidths 105 0.030836406 insert D_20width:InterpolationWidths 106 0.032770881 insert D_20width:InterpolationWidths 107 0.03479511 insert D_20width:NumberofEntries 0 54 insert D_20width:NumberofEntries 1 108 insert D_20width:NumberofEntries 2 108 insert D_20width:NumberofEntries 3 108 newdef /Herwig/Particles/D*_20:Width_generator D_20width newdef /Herwig/Particles/D*_2bar0:Width_generator D_20width # create Herwig::GenericWidthGenerator omegawidth newdef omegawidth:Particle /Herwig/Particles/omega newdef omegawidth:Prefactor 1.00125 newdef omegawidth:BRNormalize 1 newdef omegawidth:BRMinimum 0.01 newdef omegawidth:Points 50 newdef omegawidth:InterpolationOrder 1 insert omegawidth:MEtype 0 1 insert omegawidth:MEtype 1 2 insert omegawidth:MEtype 2 1 insert omegawidth:MEtype 3 2 insert omegawidth:MEtype 4 1 insert omegawidth:MEtype 5 2 insert omegawidth:MEtype 6 1 insert omegawidth:MEtype 7 2 insert omegawidth:MEtype 8 0 insert omegawidth:MEcode 0 2 insert omegawidth:MEcode 1 0 insert omegawidth:MEcode 2 2 insert omegawidth:MEcode 3 0 insert omegawidth:MEcode 4 0 insert omegawidth:MEcode 5 0 insert omegawidth:MEcode 6 1 insert omegawidth:MEcode 7 0 insert omegawidth:MEcode 8 0 insert omegawidth:MEcoupling 0 0.00542628 insert omegawidth:MEcoupling 1 0.99289 insert omegawidth:MEcoupling 2 0.00543183 insert omegawidth:MEcoupling 3 1.02117 insert omegawidth:MEcoupling 4 0.184674 insert omegawidth:MEcoupling 5 0.997105 insert omegawidth:MEcoupling 6 0.568557 insert omegawidth:MEcoupling 7 1.00154 insert omegawidth:MEcoupling 8 6.7e-05 insert omegawidth:ModeOn 0 0 insert omegawidth:ModeOn 1 0 insert omegawidth:ModeOn 2 0 insert omegawidth:ModeOn 3 1 insert omegawidth:ModeOn 4 1 insert omegawidth:ModeOn 5 0 insert omegawidth:ModeOn 6 1 insert omegawidth:ModeOn 7 0 insert omegawidth:ModeOn 8 0 insert omegawidth:MinimumMasses 0 0.00102 insert omegawidth:MinimumMasses 1 0.547497 insert omegawidth:MinimumMasses 2 0.21132 insert omegawidth:MinimumMasses 3 0.414118 insert omegawidth:MinimumMasses 4 0.27914 insert omegawidth:MinimumMasses 5 0.135998 insert omegawidth:MinimumMasses 6 0.134978 insert omegawidth:MinimumMasses 7 0.346298 insert omegawidth:MinimumMasses 8 0.269955 insert omegawidth:MEmass1 0 0.00051 insert omegawidth:MEmass1 1 0 insert omegawidth:MEmass1 2 0.10566 insert omegawidth:MEmass1 3 0 insert omegawidth:MEmass1 4 0.13957 insert omegawidth:MEmass1 5 0 insert omegawidth:MEmass1 6 0 insert omegawidth:MEmass1 7 0 insert omegawidth:MEmass1 8 0 insert omegawidth:MEmass2 0 0.00051 insert omegawidth:MEmass2 1 0.54751 insert omegawidth:MEmass2 2 0.10566 insert omegawidth:MEmass2 3 0 insert omegawidth:MEmass2 4 0.13957 insert omegawidth:MEmass2 5 0 insert omegawidth:MEmass2 6 0.134978 insert omegawidth:MEmass2 7 0 insert omegawidth:MEmass2 8 0 insert omegawidth:DecayModes 0 omega->e-,e+; insert omegawidth:DecayModes 1 omega->eta,gamma; insert omegawidth:DecayModes 2 omega->mu-,mu+; insert omegawidth:DecayModes 3 omega->pi+,pi-,pi0; insert omegawidth:DecayModes 4 omega->pi+,pi-; insert omegawidth:DecayModes 5 omega->pi0,e-,e+; insert omegawidth:DecayModes 6 omega->pi0,gamma; insert omegawidth:DecayModes 7 omega->pi0,mu-,mu+; insert omegawidth:DecayModes 8 omega->pi0,pi0,gamma; insert omegawidth:InterpolationMasses 0 0.69081939 insert omegawidth:InterpolationMasses 1 0.69428469 insert omegawidth:InterpolationMasses 2 0.69775 insert omegawidth:InterpolationMasses 3 0.70121531 insert omegawidth:InterpolationMasses 4 0.70468061 insert omegawidth:InterpolationMasses 5 0.70814592 insert omegawidth:InterpolationMasses 6 0.71161122 insert omegawidth:InterpolationMasses 7 0.71507653 insert omegawidth:InterpolationMasses 8 0.71854184 insert omegawidth:InterpolationMasses 9 0.72200714 insert omegawidth:InterpolationMasses 10 0.72547245 insert omegawidth:InterpolationMasses 11 0.72893776 insert omegawidth:InterpolationMasses 12 0.73240306 insert omegawidth:InterpolationMasses 13 0.73586837 insert omegawidth:InterpolationMasses 14 0.73933367 insert omegawidth:InterpolationMasses 15 0.74279898 insert omegawidth:InterpolationMasses 16 0.74626429 insert omegawidth:InterpolationMasses 17 0.74972959 insert omegawidth:InterpolationMasses 18 0.7531949 insert omegawidth:InterpolationMasses 19 0.7566602 insert omegawidth:InterpolationMasses 20 0.76012551 insert omegawidth:InterpolationMasses 21 0.76359082 insert omegawidth:InterpolationMasses 22 0.76705612 insert omegawidth:InterpolationMasses 23 0.77052143 insert omegawidth:InterpolationMasses 24 0.77398673 insert omegawidth:InterpolationMasses 25 0.77745204 insert omegawidth:InterpolationMasses 26 0.78091735 insert omegawidth:InterpolationMasses 27 0.78438265 insert omegawidth:InterpolationMasses 28 0.78784796 insert omegawidth:InterpolationMasses 29 0.79131327 insert omegawidth:InterpolationMasses 30 0.79477857 insert omegawidth:InterpolationMasses 31 0.79824388 insert omegawidth:InterpolationMasses 32 0.80170918 insert omegawidth:InterpolationMasses 33 0.80517449 insert omegawidth:InterpolationMasses 34 0.8086398 insert omegawidth:InterpolationMasses 35 0.8121051 insert omegawidth:InterpolationMasses 36 0.81557041 insert omegawidth:InterpolationMasses 37 0.81903571 insert omegawidth:InterpolationMasses 38 0.82250102 insert omegawidth:InterpolationMasses 39 0.82596633 insert omegawidth:InterpolationMasses 40 0.82943163 insert omegawidth:InterpolationMasses 41 0.83289694 insert omegawidth:InterpolationMasses 42 0.83636224 insert omegawidth:InterpolationMasses 43 0.83982755 insert omegawidth:InterpolationMasses 44 0.84329286 insert omegawidth:InterpolationMasses 45 0.84675816 insert omegawidth:InterpolationMasses 46 0.85022347 insert omegawidth:InterpolationMasses 47 0.85368878 insert omegawidth:InterpolationMasses 48 0.85715408 insert omegawidth:InterpolationMasses 49 0.86061939 insert omegawidth:InterpolationMasses 50 0.86408469 insert omegawidth:InterpolationMasses 51 0.86755 insert omegawidth:InterpolationMasses 52 0.87101531 insert omegawidth:InterpolationMasses 53 0.87448061 insert omegawidth:InterpolationMasses 54 0.69775 insert omegawidth:InterpolationMasses 55 0.70121531 insert omegawidth:InterpolationMasses 56 0.70468061 insert omegawidth:InterpolationMasses 57 0.70814592 insert omegawidth:InterpolationMasses 58 0.71161122 insert omegawidth:InterpolationMasses 59 0.71507653 insert omegawidth:InterpolationMasses 60 0.71854184 insert omegawidth:InterpolationMasses 61 0.72200714 insert omegawidth:InterpolationMasses 62 0.72547245 insert omegawidth:InterpolationMasses 63 0.72893776 insert omegawidth:InterpolationMasses 64 0.73240306 insert omegawidth:InterpolationMasses 65 0.73586837 insert omegawidth:InterpolationMasses 66 0.73933367 insert omegawidth:InterpolationMasses 67 0.74279898 insert omegawidth:InterpolationMasses 68 0.74626429 insert omegawidth:InterpolationMasses 69 0.74972959 insert omegawidth:InterpolationMasses 70 0.7531949 insert omegawidth:InterpolationMasses 71 0.7566602 insert omegawidth:InterpolationMasses 72 0.76012551 insert omegawidth:InterpolationMasses 73 0.76359082 insert omegawidth:InterpolationMasses 74 0.76705612 insert omegawidth:InterpolationMasses 75 0.77052143 insert omegawidth:InterpolationMasses 76 0.77398673 insert omegawidth:InterpolationMasses 77 0.77745204 insert omegawidth:InterpolationMasses 78 0.78091735 insert omegawidth:InterpolationMasses 79 0.78438265 insert omegawidth:InterpolationMasses 80 0.78784796 insert omegawidth:InterpolationMasses 81 0.79131327 insert omegawidth:InterpolationMasses 82 0.79477857 insert omegawidth:InterpolationMasses 83 0.79824388 insert omegawidth:InterpolationMasses 84 0.80170918 insert omegawidth:InterpolationMasses 85 0.80517449 insert omegawidth:InterpolationMasses 86 0.8086398 insert omegawidth:InterpolationMasses 87 0.8121051 insert omegawidth:InterpolationMasses 88 0.81557041 insert omegawidth:InterpolationMasses 89 0.81903571 insert omegawidth:InterpolationMasses 90 0.82250102 insert omegawidth:InterpolationMasses 91 0.82596633 insert omegawidth:InterpolationMasses 92 0.82943163 insert omegawidth:InterpolationMasses 93 0.83289694 insert omegawidth:InterpolationMasses 94 0.83636224 insert omegawidth:InterpolationMasses 95 0.83982755 insert omegawidth:InterpolationMasses 96 0.84329286 insert omegawidth:InterpolationMasses 97 0.84675816 insert omegawidth:InterpolationMasses 98 0.85022347 insert omegawidth:InterpolationMasses 99 0.85368878 insert omegawidth:InterpolationMasses 100 0.85715408 insert omegawidth:InterpolationMasses 101 0.86061939 insert omegawidth:InterpolationMasses 102 0.86408469 insert omegawidth:InterpolationMasses 103 0.86755 insert omegawidth:InterpolationMasses 104 0.69775 insert omegawidth:InterpolationMasses 105 0.70121531 insert omegawidth:InterpolationMasses 106 0.70468061 insert omegawidth:InterpolationMasses 107 0.70814592 insert omegawidth:InterpolationMasses 108 0.71161122 insert omegawidth:InterpolationMasses 109 0.71507653 insert omegawidth:InterpolationMasses 110 0.71854184 insert omegawidth:InterpolationMasses 111 0.72200714 insert omegawidth:InterpolationMasses 112 0.72547245 insert omegawidth:InterpolationMasses 113 0.72893776 insert omegawidth:InterpolationMasses 114 0.73240306 insert omegawidth:InterpolationMasses 115 0.73586837 insert omegawidth:InterpolationMasses 116 0.73933367 insert omegawidth:InterpolationMasses 117 0.74279898 insert omegawidth:InterpolationMasses 118 0.74626429 insert omegawidth:InterpolationMasses 119 0.74972959 insert omegawidth:InterpolationMasses 120 0.7531949 insert omegawidth:InterpolationMasses 121 0.7566602 insert omegawidth:InterpolationMasses 122 0.76012551 insert omegawidth:InterpolationMasses 123 0.76359082 insert omegawidth:InterpolationMasses 124 0.76705612 insert omegawidth:InterpolationMasses 125 0.77052143 insert omegawidth:InterpolationMasses 126 0.77398673 insert omegawidth:InterpolationMasses 127 0.77745204 insert omegawidth:InterpolationMasses 128 0.78091735 insert omegawidth:InterpolationMasses 129 0.78438265 insert omegawidth:InterpolationMasses 130 0.78784796 insert omegawidth:InterpolationMasses 131 0.79131327 insert omegawidth:InterpolationMasses 132 0.79477857 insert omegawidth:InterpolationMasses 133 0.79824388 insert omegawidth:InterpolationMasses 134 0.80170918 insert omegawidth:InterpolationMasses 135 0.80517449 insert omegawidth:InterpolationMasses 136 0.8086398 insert omegawidth:InterpolationMasses 137 0.8121051 insert omegawidth:InterpolationMasses 138 0.81557041 insert omegawidth:InterpolationMasses 139 0.81903571 insert omegawidth:InterpolationMasses 140 0.82250102 insert omegawidth:InterpolationMasses 141 0.82596633 insert omegawidth:InterpolationMasses 142 0.82943163 insert omegawidth:InterpolationMasses 143 0.83289694 insert omegawidth:InterpolationMasses 144 0.83636224 insert omegawidth:InterpolationMasses 145 0.83982755 insert omegawidth:InterpolationMasses 146 0.84329286 insert omegawidth:InterpolationMasses 147 0.84675816 insert omegawidth:InterpolationMasses 148 0.85022347 insert omegawidth:InterpolationMasses 149 0.85368878 insert omegawidth:InterpolationMasses 150 0.85715408 insert omegawidth:InterpolationMasses 151 0.86061939 insert omegawidth:InterpolationMasses 152 0.86408469 insert omegawidth:InterpolationMasses 153 0.86755 insert omegawidth:InterpolationMasses 154 0.69775 insert omegawidth:InterpolationMasses 155 0.70121531 insert omegawidth:InterpolationMasses 156 0.70468061 insert omegawidth:InterpolationMasses 157 0.70814592 insert omegawidth:InterpolationMasses 158 0.71161122 insert omegawidth:InterpolationMasses 159 0.71507653 insert omegawidth:InterpolationMasses 160 0.71854184 insert omegawidth:InterpolationMasses 161 0.72200714 insert omegawidth:InterpolationMasses 162 0.72547245 insert omegawidth:InterpolationMasses 163 0.72893776 insert omegawidth:InterpolationMasses 164 0.73240306 insert omegawidth:InterpolationMasses 165 0.73586837 insert omegawidth:InterpolationMasses 166 0.73933367 insert omegawidth:InterpolationMasses 167 0.74279898 insert omegawidth:InterpolationMasses 168 0.74626429 insert omegawidth:InterpolationMasses 169 0.74972959 insert omegawidth:InterpolationMasses 170 0.7531949 insert omegawidth:InterpolationMasses 171 0.7566602 insert omegawidth:InterpolationMasses 172 0.76012551 insert omegawidth:InterpolationMasses 173 0.76359082 insert omegawidth:InterpolationMasses 174 0.76705612 insert omegawidth:InterpolationMasses 175 0.77052143 insert omegawidth:InterpolationMasses 176 0.77398673 insert omegawidth:InterpolationMasses 177 0.77745204 insert omegawidth:InterpolationMasses 178 0.78091735 insert omegawidth:InterpolationMasses 179 0.78438265 insert omegawidth:InterpolationMasses 180 0.78784796 insert omegawidth:InterpolationMasses 181 0.79131327 insert omegawidth:InterpolationMasses 182 0.79477857 insert omegawidth:InterpolationMasses 183 0.79824388 insert omegawidth:InterpolationMasses 184 0.80170918 insert omegawidth:InterpolationMasses 185 0.80517449 insert omegawidth:InterpolationMasses 186 0.8086398 insert omegawidth:InterpolationMasses 187 0.8121051 insert omegawidth:InterpolationMasses 188 0.81557041 insert omegawidth:InterpolationMasses 189 0.81903571 insert omegawidth:InterpolationMasses 190 0.82250102 insert omegawidth:InterpolationMasses 191 0.82596633 insert omegawidth:InterpolationMasses 192 0.82943163 insert omegawidth:InterpolationMasses 193 0.83289694 insert omegawidth:InterpolationMasses 194 0.83636224 insert omegawidth:InterpolationMasses 195 0.83982755 insert omegawidth:InterpolationMasses 196 0.84329286 insert omegawidth:InterpolationMasses 197 0.84675816 insert omegawidth:InterpolationMasses 198 0.85022347 insert omegawidth:InterpolationMasses 199 0.85368878 insert omegawidth:InterpolationMasses 200 0.85715408 insert omegawidth:InterpolationMasses 201 0.86061939 insert omegawidth:InterpolationMasses 202 0.86408469 insert omegawidth:InterpolationMasses 203 0.86755 insert omegawidth:InterpolationWidths 0 1.1128917e-06 insert omegawidth:InterpolationWidths 1 1.187693e-06 insert omegawidth:InterpolationWidths 2 1.2654684e-06 insert omegawidth:InterpolationWidths 3 1.3462545e-06 insert omegawidth:InterpolationWidths 4 1.4300868e-06 insert omegawidth:InterpolationWidths 5 1.5170003e-06 insert omegawidth:InterpolationWidths 6 1.6070291e-06 insert omegawidth:InterpolationWidths 7 1.7002067e-06 insert omegawidth:InterpolationWidths 8 1.796566e-06 insert omegawidth:InterpolationWidths 9 1.8961391e-06 insert omegawidth:InterpolationWidths 10 1.9989577e-06 insert omegawidth:InterpolationWidths 11 2.1050527e-06 insert omegawidth:InterpolationWidths 12 2.2144547e-06 insert omegawidth:InterpolationWidths 13 2.3271935e-06 insert omegawidth:InterpolationWidths 14 2.4432985e-06 insert omegawidth:InterpolationWidths 15 2.5627986e-06 insert omegawidth:InterpolationWidths 16 2.6857221e-06 insert omegawidth:InterpolationWidths 17 2.8120971e-06 insert omegawidth:InterpolationWidths 18 2.941951e-06 insert omegawidth:InterpolationWidths 19 3.0753109e-06 insert omegawidth:InterpolationWidths 20 3.2122033e-06 insert omegawidth:InterpolationWidths 21 3.3526546e-06 insert omegawidth:InterpolationWidths 22 3.4966906e-06 insert omegawidth:InterpolationWidths 23 3.6443367e-06 insert omegawidth:InterpolationWidths 24 3.7956182e-06 insert omegawidth:InterpolationWidths 25 3.9505597e-06 insert omegawidth:InterpolationWidths 26 4.1091858e-06 insert omegawidth:InterpolationWidths 27 4.2715206e-06 insert omegawidth:InterpolationWidths 28 4.4375879e-06 insert omegawidth:InterpolationWidths 29 4.6074112e-06 insert omegawidth:InterpolationWidths 30 4.7810137e-06 insert omegawidth:InterpolationWidths 31 4.9584186e-06 insert omegawidth:InterpolationWidths 32 5.1396483e-06 insert omegawidth:InterpolationWidths 33 5.3247255e-06 insert omegawidth:InterpolationWidths 34 5.5136723e-06 insert omegawidth:InterpolationWidths 35 5.7065106e-06 insert omegawidth:InterpolationWidths 36 5.9032622e-06 insert omegawidth:InterpolationWidths 37 6.1039487e-06 insert omegawidth:InterpolationWidths 38 6.3085912e-06 insert omegawidth:InterpolationWidths 39 6.517211e-06 insert omegawidth:InterpolationWidths 40 6.7298288e-06 insert omegawidth:InterpolationWidths 41 6.9464655e-06 insert omegawidth:InterpolationWidths 42 7.1671416e-06 insert omegawidth:InterpolationWidths 43 7.3918773e-06 insert omegawidth:InterpolationWidths 44 7.6206929e-06 insert omegawidth:InterpolationWidths 45 7.8536083e-06 insert omegawidth:InterpolationWidths 46 8.0906435e-06 insert omegawidth:InterpolationWidths 47 8.3318181e-06 insert omegawidth:InterpolationWidths 48 8.5771517e-06 insert omegawidth:InterpolationWidths 49 8.8266637e-06 insert omegawidth:InterpolationWidths 50 9.0803733e-06 insert omegawidth:InterpolationWidths 51 9.3382997e-06 insert omegawidth:InterpolationWidths 52 9.600462e-06 insert omegawidth:InterpolationWidths 53 9.8668789e-06 insert omegawidth:InterpolationWidths 54 0.0016750781 insert omegawidth:InterpolationWidths 55 0.0017887729 insert omegawidth:InterpolationWidths 56 0.0019091837 insert omegawidth:InterpolationWidths 57 0.0020366636 insert omegawidth:InterpolationWidths 58 0.0021715828 insert omegawidth:InterpolationWidths 59 0.0023143303 insert omegawidth:InterpolationWidths 60 0.0024653139 insert omegawidth:InterpolationWidths 61 0.0026249619 insert omegawidth:InterpolationWidths 62 0.0027937238 insert omegawidth:InterpolationWidths 63 0.0029720715 insert omegawidth:InterpolationWidths 64 0.0031605002 insert omegawidth:InterpolationWidths 65 0.0033595301 insert omegawidth:InterpolationWidths 66 0.0035697073 insert omegawidth:InterpolationWidths 67 0.0037916053 insert omegawidth:InterpolationWidths 68 0.0040258264 insert omegawidth:InterpolationWidths 69 0.0042730032 insert omegawidth:InterpolationWidths 70 0.0045338003 insert omegawidth:InterpolationWidths 71 0.0048089159 insert omegawidth:InterpolationWidths 72 0.0050990836 insert omegawidth:InterpolationWidths 73 0.0054050745 insert omegawidth:InterpolationWidths 74 0.0057276988 insert omegawidth:InterpolationWidths 75 0.0060678109 insert omegawidth:InterpolationWidths 76 0.0064263039 insert omegawidth:InterpolationWidths 77 0.0068041155 insert omegawidth:InterpolationWidths 78 0.0072022382 insert omegawidth:InterpolationWidths 79 0.0076217126 insert omegawidth:InterpolationWidths 80 0.008063633 insert omegawidth:InterpolationWidths 81 0.0085291499 insert omegawidth:InterpolationWidths 82 0.0090194736 insert omegawidth:InterpolationWidths 83 0.0095358813 insert omegawidth:InterpolationWidths 84 0.010079703 insert omegawidth:InterpolationWidths 85 0.010652349 insert omegawidth:InterpolationWidths 86 0.011255301 insert omegawidth:InterpolationWidths 87 0.011890113 insert omegawidth:InterpolationWidths 88 0.01255842 insert omegawidth:InterpolationWidths 89 0.013261941 insert omegawidth:InterpolationWidths 90 0.014002479 insert omegawidth:InterpolationWidths 91 0.014781929 insert omegawidth:InterpolationWidths 92 0.015602279 insert omegawidth:InterpolationWidths 93 0.016465611 insert omegawidth:InterpolationWidths 94 0.017374111 insert omegawidth:InterpolationWidths 95 0.018330062 insert omegawidth:InterpolationWidths 96 0.019335854 insert omegawidth:InterpolationWidths 97 0.020393981 insert omegawidth:InterpolationWidths 98 0.021507043 insert omegawidth:InterpolationWidths 99 0.022677746 insert omegawidth:InterpolationWidths 100 0.0239089 insert omegawidth:InterpolationWidths 101 0.025203417 insert omegawidth:InterpolationWidths 102 0.026564307 insert omegawidth:InterpolationWidths 103 0.027994674 insert omegawidth:InterpolationWidths 104 4.5179617e-06 insert omegawidth:InterpolationWidths 105 4.5980647e-06 insert omegawidth:InterpolationWidths 106 4.679159e-06 insert omegawidth:InterpolationWidths 107 4.7612533e-06 insert omegawidth:InterpolationWidths 108 4.8443564e-06 insert omegawidth:InterpolationWidths 109 4.9284771e-06 insert omegawidth:InterpolationWidths 110 5.0136246e-06 insert omegawidth:InterpolationWidths 111 5.0998079e-06 insert omegawidth:InterpolationWidths 112 5.1870363e-06 insert omegawidth:InterpolationWidths 113 5.2753193e-06 insert omegawidth:InterpolationWidths 114 5.3646664e-06 insert omegawidth:InterpolationWidths 115 5.4550874e-06 insert omegawidth:InterpolationWidths 116 5.5465922e-06 insert omegawidth:InterpolationWidths 117 5.6391908e-06 insert omegawidth:InterpolationWidths 118 5.7328934e-06 insert omegawidth:InterpolationWidths 119 5.8277106e-06 insert omegawidth:InterpolationWidths 120 5.9236528e-06 insert omegawidth:InterpolationWidths 121 6.0207309e-06 insert omegawidth:InterpolationWidths 122 6.1189559e-06 insert omegawidth:InterpolationWidths 123 6.2183391e-06 insert omegawidth:InterpolationWidths 124 6.3188919e-06 insert omegawidth:InterpolationWidths 125 6.420626e-06 insert omegawidth:InterpolationWidths 126 6.5235534e-06 insert omegawidth:InterpolationWidths 127 6.6276862e-06 insert omegawidth:InterpolationWidths 128 6.733037e-06 insert omegawidth:InterpolationWidths 129 6.8396185e-06 insert omegawidth:InterpolationWidths 130 6.9474439e-06 insert omegawidth:InterpolationWidths 131 7.0565265e-06 insert omegawidth:InterpolationWidths 132 7.1668801e-06 insert omegawidth:InterpolationWidths 133 7.2785188e-06 insert omegawidth:InterpolationWidths 134 7.3914569e-06 insert omegawidth:InterpolationWidths 135 7.5057095e-06 insert omegawidth:InterpolationWidths 136 7.6212561e-06 insert omegawidth:InterpolationWidths 137 7.7381829e-06 insert omegawidth:InterpolationWidths 138 7.8564712e-06 insert omegawidth:InterpolationWidths 139 7.9761374e-06 insert omegawidth:InterpolationWidths 140 8.0971987e-06 insert omegawidth:InterpolationWidths 141 8.2196728e-06 insert omegawidth:InterpolationWidths 142 8.3435776e-06 insert omegawidth:InterpolationWidths 143 8.4689321e-06 insert omegawidth:InterpolationWidths 144 8.5957553e-06 insert omegawidth:InterpolationWidths 145 8.7240673e-06 insert omegawidth:InterpolationWidths 146 8.8538885e-06 insert omegawidth:InterpolationWidths 147 8.9852401e-06 insert omegawidth:InterpolationWidths 148 9.118144e-06 insert omegawidth:InterpolationWidths 149 9.2526227e-06 insert omegawidth:InterpolationWidths 150 9.3886995e-06 insert omegawidth:InterpolationWidths 151 9.5263983e-06 insert omegawidth:InterpolationWidths 152 9.6657437e-06 insert omegawidth:InterpolationWidths 153 9.806761e-06 insert omegawidth:InterpolationWidths 154 3.1904454e-07 insert omegawidth:InterpolationWidths 155 3.2947777e-07 insert omegawidth:InterpolationWidths 156 3.4016822e-07 insert omegawidth:InterpolationWidths 157 3.5112092e-07 insert omegawidth:InterpolationWidths 158 3.6234103e-07 insert omegawidth:InterpolationWidths 159 3.7383385e-07 insert omegawidth:InterpolationWidths 160 3.8560476e-07 insert omegawidth:InterpolationWidths 161 3.9765931e-07 insert omegawidth:InterpolationWidths 162 4.1000318e-07 insert omegawidth:InterpolationWidths 163 4.2264216e-07 insert omegawidth:InterpolationWidths 164 4.3558222e-07 insert omegawidth:InterpolationWidths 165 4.4882948e-07 insert omegawidth:InterpolationWidths 166 4.623902e-07 insert omegawidth:InterpolationWidths 167 4.7627083e-07 insert omegawidth:InterpolationWidths 168 4.9047797e-07 insert omegawidth:InterpolationWidths 169 5.0501842e-07 insert omegawidth:InterpolationWidths 170 5.1989917e-07 insert omegawidth:InterpolationWidths 171 5.351274e-07 insert omegawidth:InterpolationWidths 172 5.507105e-07 insert omegawidth:InterpolationWidths 173 5.6665607e-07 insert omegawidth:InterpolationWidths 174 5.8297195e-07 insert omegawidth:InterpolationWidths 175 5.9966623e-07 insert omegawidth:InterpolationWidths 176 6.1674721e-07 insert omegawidth:InterpolationWidths 177 6.3422349e-07 insert omegawidth:InterpolationWidths 178 6.5210392e-07 insert omegawidth:InterpolationWidths 179 6.7039766e-07 insert omegawidth:InterpolationWidths 180 6.8911416e-07 insert omegawidth:InterpolationWidths 181 7.0826319e-07 insert omegawidth:InterpolationWidths 182 7.2785485e-07 insert omegawidth:InterpolationWidths 183 7.4789959e-07 insert omegawidth:InterpolationWidths 184 7.6840824e-07 insert omegawidth:InterpolationWidths 185 7.8939201e-07 insert omegawidth:InterpolationWidths 186 8.1086249e-07 insert omegawidth:InterpolationWidths 187 8.3283175e-07 insert omegawidth:InterpolationWidths 188 8.5531225e-07 insert omegawidth:InterpolationWidths 189 8.7831696e-07 insert omegawidth:InterpolationWidths 190 9.0185932e-07 insert omegawidth:InterpolationWidths 191 9.2595328e-07 insert omegawidth:InterpolationWidths 192 9.5061335e-07 insert omegawidth:InterpolationWidths 193 9.7585458e-07 insert omegawidth:InterpolationWidths 194 1.0016926e-06 insert omegawidth:InterpolationWidths 195 1.0281437e-06 insert omegawidth:InterpolationWidths 196 1.0552247e-06 insert omegawidth:InterpolationWidths 197 1.0829531e-06 insert omegawidth:InterpolationWidths 198 1.1113472e-06 insert omegawidth:InterpolationWidths 199 1.1404259e-06 insert omegawidth:InterpolationWidths 200 1.1702086e-06 insert omegawidth:InterpolationWidths 201 1.2007157e-06 insert omegawidth:InterpolationWidths 202 1.2319682e-06 insert omegawidth:InterpolationWidths 203 1.2639878e-06 insert omegawidth:NumberofEntries 0 0 insert omegawidth:NumberofEntries 1 54 insert omegawidth:NumberofEntries 2 54 insert omegawidth:NumberofEntries 3 104 insert omegawidth:NumberofEntries 4 104 insert omegawidth:NumberofEntries 5 154 insert omegawidth:NumberofEntries 6 154 insert omegawidth:NumberofEntries 7 204 insert omegawidth:NumberofEntries 8 204 newdef /Herwig/Particles/omega:Width_generator omegawidth # create Herwig::GenericWidthGenerator h_1width newdef h_1width:Particle /Herwig/Particles/h_1 newdef h_1width:Prefactor 0.999906 newdef h_1width:BRNormalize 1 newdef h_1width:BRMinimum 0.01 newdef h_1width:Points 50 newdef h_1width:InterpolationOrder 1 insert h_1width:MEtype 0 2 insert h_1width:MEtype 1 2 insert h_1width:MEtype 2 2 insert h_1width:MEcode 0 0 insert h_1width:MEcode 1 0 insert h_1width:MEcode 2 0 insert h_1width:MEcoupling 0 1.00459 insert h_1width:MEcoupling 1 1.00459 insert h_1width:MEcoupling 2 0.996145 insert h_1width:ModeOn 0 1 insert h_1width:ModeOn 1 1 insert h_1width:ModeOn 2 1 insert h_1width:MinimumMasses 0 0.51507 insert h_1width:MinimumMasses 1 0.51507 insert h_1width:MinimumMasses 2 0.510478 insert h_1width:MEmass1 0 0.7755 insert h_1width:MEmass1 1 0.7755 insert h_1width:MEmass1 2 0.7755 insert h_1width:MEmass2 0 0.13957 insert h_1width:MEmass2 1 0.13957 insert h_1width:MEmass2 2 0.134978 insert h_1width:DecayModes 0 h_1->rho+,pi-; insert h_1width:DecayModes 1 h_1->rho-,pi+; insert h_1width:DecayModes 2 h_1->rho0,pi0; insert h_1width:InterpolationMasses 0 0.78061224 insert h_1width:InterpolationMasses 1 0.79530612 insert h_1width:InterpolationMasses 2 0.81 insert h_1width:InterpolationMasses 3 0.82469388 insert h_1width:InterpolationMasses 4 0.83938776 insert h_1width:InterpolationMasses 5 0.85408163 insert h_1width:InterpolationMasses 6 0.86877551 insert h_1width:InterpolationMasses 7 0.88346939 insert h_1width:InterpolationMasses 8 0.89816327 insert h_1width:InterpolationMasses 9 0.91285714 insert h_1width:InterpolationMasses 10 0.92755102 insert h_1width:InterpolationMasses 11 0.9422449 insert h_1width:InterpolationMasses 12 0.95693878 insert h_1width:InterpolationMasses 13 0.97163265 insert h_1width:InterpolationMasses 14 0.98632653 insert h_1width:InterpolationMasses 15 1.0010204 insert h_1width:InterpolationMasses 16 1.0157143 insert h_1width:InterpolationMasses 17 1.0304082 insert h_1width:InterpolationMasses 18 1.045102 insert h_1width:InterpolationMasses 19 1.0597959 insert h_1width:InterpolationMasses 20 1.0744898 insert h_1width:InterpolationMasses 21 1.0891837 insert h_1width:InterpolationMasses 22 1.1038776 insert h_1width:InterpolationMasses 23 1.1185714 insert h_1width:InterpolationMasses 24 1.1332653 insert h_1width:InterpolationMasses 25 1.1479592 insert h_1width:InterpolationMasses 26 1.1626531 insert h_1width:InterpolationMasses 27 1.1773469 insert h_1width:InterpolationMasses 28 1.1920408 insert h_1width:InterpolationMasses 29 1.2067347 insert h_1width:InterpolationMasses 30 1.2214286 insert h_1width:InterpolationMasses 31 1.2361224 insert h_1width:InterpolationMasses 32 1.2508163 insert h_1width:InterpolationMasses 33 1.2655102 insert h_1width:InterpolationMasses 34 1.2802041 insert h_1width:InterpolationMasses 35 1.294898 insert h_1width:InterpolationMasses 36 1.3095918 insert h_1width:InterpolationMasses 37 1.3242857 insert h_1width:InterpolationMasses 38 1.3389796 insert h_1width:InterpolationMasses 39 1.3536735 insert h_1width:InterpolationMasses 40 1.3683673 insert h_1width:InterpolationMasses 41 1.3830612 insert h_1width:InterpolationMasses 42 1.3977551 insert h_1width:InterpolationMasses 43 1.412449 insert h_1width:InterpolationMasses 44 1.4271429 insert h_1width:InterpolationMasses 45 1.4418367 insert h_1width:InterpolationMasses 46 1.4565306 insert h_1width:InterpolationMasses 47 1.4712245 insert h_1width:InterpolationMasses 48 1.4859184 insert h_1width:InterpolationMasses 49 1.5006122 insert h_1width:InterpolationMasses 50 1.5153061 insert h_1width:InterpolationMasses 51 1.53 insert h_1width:InterpolationMasses 52 1.5446939 insert h_1width:InterpolationMasses 53 1.5593878 insert h_1width:InterpolationMasses 54 0.78061224 insert h_1width:InterpolationMasses 55 0.79530612 insert h_1width:InterpolationMasses 56 0.81 insert h_1width:InterpolationMasses 57 0.82469388 insert h_1width:InterpolationMasses 58 0.83938776 insert h_1width:InterpolationMasses 59 0.85408163 insert h_1width:InterpolationMasses 60 0.86877551 insert h_1width:InterpolationMasses 61 0.88346939 insert h_1width:InterpolationMasses 62 0.89816327 insert h_1width:InterpolationMasses 63 0.91285714 insert h_1width:InterpolationMasses 64 0.92755102 insert h_1width:InterpolationMasses 65 0.9422449 insert h_1width:InterpolationMasses 66 0.95693878 insert h_1width:InterpolationMasses 67 0.97163265 insert h_1width:InterpolationMasses 68 0.98632653 insert h_1width:InterpolationMasses 69 1.0010204 insert h_1width:InterpolationMasses 70 1.0157143 insert h_1width:InterpolationMasses 71 1.0304082 insert h_1width:InterpolationMasses 72 1.045102 insert h_1width:InterpolationMasses 73 1.0597959 insert h_1width:InterpolationMasses 74 1.0744898 insert h_1width:InterpolationMasses 75 1.0891837 insert h_1width:InterpolationMasses 76 1.1038776 insert h_1width:InterpolationMasses 77 1.1185714 insert h_1width:InterpolationMasses 78 1.1332653 insert h_1width:InterpolationMasses 79 1.1479592 insert h_1width:InterpolationMasses 80 1.1626531 insert h_1width:InterpolationMasses 81 1.1773469 insert h_1width:InterpolationMasses 82 1.1920408 insert h_1width:InterpolationMasses 83 1.2067347 insert h_1width:InterpolationMasses 84 1.2214286 insert h_1width:InterpolationMasses 85 1.2361224 insert h_1width:InterpolationMasses 86 1.2508163 insert h_1width:InterpolationMasses 87 1.2655102 insert h_1width:InterpolationMasses 88 1.2802041 insert h_1width:InterpolationMasses 89 1.294898 insert h_1width:InterpolationMasses 90 1.3095918 insert h_1width:InterpolationMasses 91 1.3242857 insert h_1width:InterpolationMasses 92 1.3389796 insert h_1width:InterpolationMasses 93 1.3536735 insert h_1width:InterpolationMasses 94 1.3683673 insert h_1width:InterpolationMasses 95 1.3830612 insert h_1width:InterpolationMasses 96 1.3977551 insert h_1width:InterpolationMasses 97 1.412449 insert h_1width:InterpolationMasses 98 1.4271429 insert h_1width:InterpolationMasses 99 1.4418367 insert h_1width:InterpolationMasses 100 1.4565306 insert h_1width:InterpolationMasses 101 1.4712245 insert h_1width:InterpolationMasses 102 1.4859184 insert h_1width:InterpolationMasses 103 1.5006122 insert h_1width:InterpolationMasses 104 1.5153061 insert h_1width:InterpolationMasses 105 1.53 insert h_1width:InterpolationMasses 106 1.5446939 insert h_1width:InterpolationMasses 107 1.5593878 insert h_1width:InterpolationMasses 108 0.78061224 insert h_1width:InterpolationMasses 109 0.79530612 insert h_1width:InterpolationMasses 110 0.81 insert h_1width:InterpolationMasses 111 0.82469388 insert h_1width:InterpolationMasses 112 0.83938776 insert h_1width:InterpolationMasses 113 0.85408163 insert h_1width:InterpolationMasses 114 0.86877551 insert h_1width:InterpolationMasses 115 0.88346939 insert h_1width:InterpolationMasses 116 0.89816327 insert h_1width:InterpolationMasses 117 0.91285714 insert h_1width:InterpolationMasses 118 0.92755102 insert h_1width:InterpolationMasses 119 0.9422449 insert h_1width:InterpolationMasses 120 0.95693878 insert h_1width:InterpolationMasses 121 0.97163265 insert h_1width:InterpolationMasses 122 0.98632653 insert h_1width:InterpolationMasses 123 1.0010204 insert h_1width:InterpolationMasses 124 1.0157143 insert h_1width:InterpolationMasses 125 1.0304082 insert h_1width:InterpolationMasses 126 1.045102 insert h_1width:InterpolationMasses 127 1.0597959 insert h_1width:InterpolationMasses 128 1.0744898 insert h_1width:InterpolationMasses 129 1.0891837 insert h_1width:InterpolationMasses 130 1.1038776 insert h_1width:InterpolationMasses 131 1.1185714 insert h_1width:InterpolationMasses 132 1.1332653 insert h_1width:InterpolationMasses 133 1.1479592 insert h_1width:InterpolationMasses 134 1.1626531 insert h_1width:InterpolationMasses 135 1.1773469 insert h_1width:InterpolationMasses 136 1.1920408 insert h_1width:InterpolationMasses 137 1.2067347 insert h_1width:InterpolationMasses 138 1.2214286 insert h_1width:InterpolationMasses 139 1.2361224 insert h_1width:InterpolationMasses 140 1.2508163 insert h_1width:InterpolationMasses 141 1.2655102 insert h_1width:InterpolationMasses 142 1.2802041 insert h_1width:InterpolationMasses 143 1.294898 insert h_1width:InterpolationMasses 144 1.3095918 insert h_1width:InterpolationMasses 145 1.3242857 insert h_1width:InterpolationMasses 146 1.3389796 insert h_1width:InterpolationMasses 147 1.3536735 insert h_1width:InterpolationMasses 148 1.3683673 insert h_1width:InterpolationMasses 149 1.3830612 insert h_1width:InterpolationMasses 150 1.3977551 insert h_1width:InterpolationMasses 151 1.412449 insert h_1width:InterpolationMasses 152 1.4271429 insert h_1width:InterpolationMasses 153 1.4418367 insert h_1width:InterpolationMasses 154 1.4565306 insert h_1width:InterpolationMasses 155 1.4712245 insert h_1width:InterpolationMasses 156 1.4859184 insert h_1width:InterpolationMasses 157 1.5006122 insert h_1width:InterpolationMasses 158 1.5153061 insert h_1width:InterpolationMasses 159 1.53 insert h_1width:InterpolationMasses 160 1.5446939 insert h_1width:InterpolationMasses 161 1.5593878 insert h_1width:InterpolationWidths 0 0.001300517 insert h_1width:InterpolationWidths 1 0.0017202739 insert h_1width:InterpolationWidths 2 0.0022791364 insert h_1width:InterpolationWidths 3 0.0030269915 insert h_1width:InterpolationWidths 4 0.0040317457 insert h_1width:InterpolationWidths 5 0.0053827396 insert h_1width:InterpolationWidths 6 0.0071890874 insert h_1width:InterpolationWidths 7 0.0095654408 insert h_1width:InterpolationWidths 8 0.01259936 insert h_1width:InterpolationWidths 9 0.016310808 insert h_1width:InterpolationWidths 10 0.02063578 insert h_1width:InterpolationWidths 11 0.025453653 insert h_1width:InterpolationWidths 12 0.030634534 insert h_1width:InterpolationWidths 13 0.036071493 insert h_1width:InterpolationWidths 14 0.041689187 insert h_1width:InterpolationWidths 15 0.047439263 insert h_1width:InterpolationWidths 16 0.053292555 insert h_1width:InterpolationWidths 17 0.059232405 insert h_1width:InterpolationWidths 18 0.065249979 insert h_1width:InterpolationWidths 19 0.071341243 insert h_1width:InterpolationWidths 20 0.077505075 insert h_1width:InterpolationWidths 21 0.083742108 insert h_1width:InterpolationWidths 22 0.09005402 insert h_1width:InterpolationWidths 23 0.096443092 insert h_1width:InterpolationWidths 24 0.10291195 insert h_1width:InterpolationWidths 25 0.10946339 insert h_1width:InterpolationWidths 26 0.11610029 insert h_1width:InterpolationWidths 27 0.12282552 insert h_1width:InterpolationWidths 28 0.1296411 insert h_1width:InterpolationWidths 29 0.13655144 insert h_1width:InterpolationWidths 30 0.14355854 insert h_1width:InterpolationWidths 31 0.15066511 insert h_1width:InterpolationWidths 32 0.15787378 insert h_1width:InterpolationWidths 33 0.16518713 insert h_1width:InterpolationWidths 34 0.17260767 insert h_1width:InterpolationWidths 35 0.18013786 insert h_1width:InterpolationWidths 36 0.18778011 insert h_1width:InterpolationWidths 37 0.19553679 insert h_1width:InterpolationWidths 38 0.2034102 insert h_1width:InterpolationWidths 39 0.21140263 insert h_1width:InterpolationWidths 40 0.2195163 insert h_1width:InterpolationWidths 41 0.22775342 insert h_1width:InterpolationWidths 42 0.23611615 insert h_1width:InterpolationWidths 43 0.24460663 insert h_1width:InterpolationWidths 44 0.25308809 insert h_1width:InterpolationWidths 45 0.26151756 insert h_1width:InterpolationWidths 46 0.26996797 insert h_1width:InterpolationWidths 47 0.27846085 insert h_1width:InterpolationWidths 48 0.28700851 insert h_1width:InterpolationWidths 49 0.29561947 insert h_1width:InterpolationWidths 50 0.30430019 insert h_1width:InterpolationWidths 51 0.31305591 insert h_1width:InterpolationWidths 52 0.32189104 insert h_1width:InterpolationWidths 53 0.33080946 insert h_1width:InterpolationWidths 54 0.001300517 insert h_1width:InterpolationWidths 55 0.0017202739 insert h_1width:InterpolationWidths 56 0.0022791364 insert h_1width:InterpolationWidths 57 0.0030269915 insert h_1width:InterpolationWidths 58 0.0040317457 insert h_1width:InterpolationWidths 59 0.0053827396 insert h_1width:InterpolationWidths 60 0.0071890874 insert h_1width:InterpolationWidths 61 0.0095654408 insert h_1width:InterpolationWidths 62 0.01259936 insert h_1width:InterpolationWidths 63 0.016310808 insert h_1width:InterpolationWidths 64 0.02063578 insert h_1width:InterpolationWidths 65 0.025453653 insert h_1width:InterpolationWidths 66 0.030634534 insert h_1width:InterpolationWidths 67 0.036071493 insert h_1width:InterpolationWidths 68 0.041689187 insert h_1width:InterpolationWidths 69 0.047439263 insert h_1width:InterpolationWidths 70 0.053292555 insert h_1width:InterpolationWidths 71 0.059232405 insert h_1width:InterpolationWidths 72 0.065249979 insert h_1width:InterpolationWidths 73 0.071341243 insert h_1width:InterpolationWidths 74 0.077505075 insert h_1width:InterpolationWidths 75 0.083742108 insert h_1width:InterpolationWidths 76 0.09005402 insert h_1width:InterpolationWidths 77 0.096443092 insert h_1width:InterpolationWidths 78 0.10291195 insert h_1width:InterpolationWidths 79 0.10946339 insert h_1width:InterpolationWidths 80 0.11610029 insert h_1width:InterpolationWidths 81 0.12282552 insert h_1width:InterpolationWidths 82 0.1296411 insert h_1width:InterpolationWidths 83 0.13655144 insert h_1width:InterpolationWidths 84 0.14355854 insert h_1width:InterpolationWidths 85 0.15066511 insert h_1width:InterpolationWidths 86 0.15787378 insert h_1width:InterpolationWidths 87 0.16518713 insert h_1width:InterpolationWidths 88 0.17260767 insert h_1width:InterpolationWidths 89 0.18013786 insert h_1width:InterpolationWidths 90 0.18778011 insert h_1width:InterpolationWidths 91 0.19553679 insert h_1width:InterpolationWidths 92 0.2034102 insert h_1width:InterpolationWidths 93 0.21140263 insert h_1width:InterpolationWidths 94 0.2195163 insert h_1width:InterpolationWidths 95 0.22775342 insert h_1width:InterpolationWidths 96 0.23611615 insert h_1width:InterpolationWidths 97 0.24460663 insert h_1width:InterpolationWidths 98 0.25308809 insert h_1width:InterpolationWidths 99 0.26151756 insert h_1width:InterpolationWidths 100 0.26996797 insert h_1width:InterpolationWidths 101 0.27846085 insert h_1width:InterpolationWidths 102 0.28700851 insert h_1width:InterpolationWidths 103 0.29561947 insert h_1width:InterpolationWidths 104 0.30430019 insert h_1width:InterpolationWidths 105 0.31305591 insert h_1width:InterpolationWidths 106 0.32189104 insert h_1width:InterpolationWidths 107 0.33080946 insert h_1width:InterpolationWidths 108 0.0013901598 insert h_1width:InterpolationWidths 109 0.0018416379 insert h_1width:InterpolationWidths 110 0.0024442169 insert h_1width:InterpolationWidths 111 0.0032523691 insert h_1width:InterpolationWidths 112 0.004339707 insert h_1width:InterpolationWidths 113 0.0058014075 insert h_1width:InterpolationWidths 114 0.0077495778 insert h_1width:InterpolationWidths 115 0.010293649 insert h_1width:InterpolationWidths 116 0.013503313 insert h_1width:InterpolationWidths 117 0.017372149 insert h_1width:InterpolationWidths 118 0.021814962 insert h_1width:InterpolationWidths 119 0.026705233 insert h_1width:InterpolationWidths 120 0.031919931 insert h_1width:InterpolationWidths 121 0.037363465 insert h_1width:InterpolationWidths 122 0.042970715 insert h_1width:InterpolationWidths 123 0.048700719 insert h_1width:InterpolationWidths 124 0.054529113 insert h_1width:InterpolationWidths 125 0.060442183 insert h_1width:InterpolationWidths 126 0.066432833 insert h_1width:InterpolationWidths 127 0.072498019 insert h_1width:InterpolationWidths 128 0.078637156 insert h_1width:InterpolationWidths 129 0.084851144 insert h_1width:InterpolationWidths 130 0.091141763 insert h_1width:InterpolationWidths 131 0.097511307 insert h_1width:InterpolationWidths 132 0.10396236 insert h_1width:InterpolationWidths 133 0.11049765 insert h_1width:InterpolationWidths 134 0.11711995 insert h_1width:InterpolationWidths 135 0.12383208 insert h_1width:InterpolationWidths 136 0.13063591 insert h_1width:InterpolationWidths 137 0.13753583 insert h_1width:InterpolationWidths 138 0.14453373 insert h_1width:InterpolationWidths 139 0.15163225 insert h_1width:InterpolationWidths 140 0.15883393 insert h_1width:InterpolationWidths 141 0.16614131 insert h_1width:InterpolationWidths 142 0.17355683 insert h_1width:InterpolationWidths 143 0.18108289 insert h_1width:InterpolationWidths 144 0.18872187 insert h_1width:InterpolationWidths 145 0.19647607 insert h_1width:InterpolationWidths 146 0.20434778 insert h_1width:InterpolationWidths 147 0.21233922 insert h_1width:InterpolationWidths 148 0.2204526 insert h_1width:InterpolationWidths 149 0.22869008 insert h_1width:InterpolationWidths 150 0.23705382 insert h_1width:InterpolationWidths 151 0.2455364 insert h_1width:InterpolationWidths 152 0.25394521 insert h_1width:InterpolationWidths 153 0.26234254 insert h_1width:InterpolationWidths 154 0.27076988 insert h_1width:InterpolationWidths 155 0.27924453 insert h_1width:InterpolationWidths 156 0.28777714 insert h_1width:InterpolationWidths 157 0.29637536 insert h_1width:InterpolationWidths 158 0.3050451 insert h_1width:InterpolationWidths 159 0.31379127 insert h_1width:InterpolationWidths 160 0.32261803 insert h_1width:InterpolationWidths 161 0.33152906 insert h_1width:NumberofEntries 0 54 insert h_1width:NumberofEntries 1 108 insert h_1width:NumberofEntries 2 162 newdef /Herwig/Particles/h_1:Width_generator h_1width # create Herwig::GenericWidthGenerator b_10width newdef b_10width:Particle /Herwig/Particles/b_10 newdef b_10width:Prefactor 0.999937 newdef b_10width:BRNormalize 1 newdef b_10width:BRMinimum 0.01 newdef b_10width:Points 50 newdef b_10width:InterpolationOrder 1 insert b_10width:MEtype 0 2 insert b_10width:MEcode 0 0 insert b_10width:MEcoupling 0 1.00418 insert b_10width:ModeOn 0 1 insert b_10width:MinimumMasses 0 0.832728 insert b_10width:MEmass1 0 0.78265 insert b_10width:MEmass2 0 0.134978 insert b_10width:DecayModes 0 b_10->omega,pi0; insert b_10width:InterpolationMasses 0 0.88827551 insert b_10width:InterpolationMasses 1 0.90888776 insert b_10width:InterpolationMasses 2 0.9295 insert b_10width:InterpolationMasses 3 0.95011224 insert b_10width:InterpolationMasses 4 0.97072449 insert b_10width:InterpolationMasses 5 0.99133673 insert b_10width:InterpolationMasses 6 1.011949 insert b_10width:InterpolationMasses 7 1.0325612 insert b_10width:InterpolationMasses 8 1.0531735 insert b_10width:InterpolationMasses 9 1.0737857 insert b_10width:InterpolationMasses 10 1.094398 insert b_10width:InterpolationMasses 11 1.1150102 insert b_10width:InterpolationMasses 12 1.1356224 insert b_10width:InterpolationMasses 13 1.1562347 insert b_10width:InterpolationMasses 14 1.1768469 insert b_10width:InterpolationMasses 15 1.1974592 insert b_10width:InterpolationMasses 16 1.2180714 insert b_10width:InterpolationMasses 17 1.2386837 insert b_10width:InterpolationMasses 18 1.2592959 insert b_10width:InterpolationMasses 19 1.2799082 insert b_10width:InterpolationMasses 20 1.3005204 insert b_10width:InterpolationMasses 21 1.3211327 insert b_10width:InterpolationMasses 22 1.3417449 insert b_10width:InterpolationMasses 23 1.3623571 insert b_10width:InterpolationMasses 24 1.3829694 insert b_10width:InterpolationMasses 25 1.4035816 insert b_10width:InterpolationMasses 26 1.4241939 insert b_10width:InterpolationMasses 27 1.4448061 insert b_10width:InterpolationMasses 28 1.4654184 insert b_10width:InterpolationMasses 29 1.4860306 insert b_10width:InterpolationMasses 30 1.5066429 insert b_10width:InterpolationMasses 31 1.5272551 insert b_10width:InterpolationMasses 32 1.5478673 insert b_10width:InterpolationMasses 33 1.5684796 insert b_10width:InterpolationMasses 34 1.5890918 insert b_10width:InterpolationMasses 35 1.6097041 insert b_10width:InterpolationMasses 36 1.6303163 insert b_10width:InterpolationMasses 37 1.6509286 insert b_10width:InterpolationMasses 38 1.6715408 insert b_10width:InterpolationMasses 39 1.6921531 insert b_10width:InterpolationMasses 40 1.7127653 insert b_10width:InterpolationMasses 41 1.7333776 insert b_10width:InterpolationMasses 42 1.7539898 insert b_10width:InterpolationMasses 43 1.774602 insert b_10width:InterpolationMasses 44 1.7952143 insert b_10width:InterpolationMasses 45 1.8158265 insert b_10width:InterpolationMasses 46 1.8364388 insert b_10width:InterpolationMasses 47 1.857051 insert b_10width:InterpolationMasses 48 1.8776633 insert b_10width:InterpolationMasses 49 1.8982755 insert b_10width:InterpolationMasses 50 1.9188878 insert b_10width:InterpolationMasses 51 1.9395 insert b_10width:InterpolationMasses 52 1.9601122 insert b_10width:InterpolationMasses 53 1.9807245 insert b_10width:InterpolationWidths 0 0.00024263502 insert b_10width:InterpolationWidths 1 0.0013625832 insert b_10width:InterpolationWidths 2 0.016600778 insert b_10width:InterpolationWidths 3 0.030106071 insert b_10width:InterpolationWidths 4 0.040800535 insert b_10width:InterpolationWidths 5 0.050393171 insert b_10width:InterpolationWidths 6 0.059348825 insert b_10width:InterpolationWidths 7 0.067689619 insert b_10width:InterpolationWidths 8 0.075707844 insert b_10width:InterpolationWidths 9 0.08353225 insert b_10width:InterpolationWidths 10 0.091238483 insert b_10width:InterpolationWidths 11 0.098877497 insert b_10width:InterpolationWidths 12 0.1064862 insert b_10width:InterpolationWidths 13 0.11409269 insert b_10width:InterpolationWidths 14 0.1217192 insert b_10width:InterpolationWidths 15 0.12938386 insert b_10width:InterpolationWidths 16 0.13710182 insert b_10width:InterpolationWidths 17 0.14488603 insert b_10width:InterpolationWidths 18 0.15274772 insert b_10width:InterpolationWidths 19 0.16069681 insert b_10width:InterpolationWidths 20 0.16874218 insert b_10width:InterpolationWidths 21 0.17689183 insert b_10width:InterpolationWidths 22 0.18515311 insert b_10width:InterpolationWidths 23 0.19353276 insert b_10width:InterpolationWidths 24 0.20203706 insert b_10width:InterpolationWidths 25 0.21067185 insert b_10width:InterpolationWidths 26 0.21944268 insert b_10width:InterpolationWidths 27 0.22835475 insert b_10width:InterpolationWidths 28 0.23741303 insert b_10width:InterpolationWidths 29 0.24662226 insert b_10width:InterpolationWidths 30 0.25598698 insert b_10width:InterpolationWidths 31 0.26551156 insert b_10width:InterpolationWidths 32 0.27520022 insert b_10width:InterpolationWidths 33 0.28505704 insert b_10width:InterpolationWidths 34 0.295086 insert b_10width:InterpolationWidths 35 0.30529093 insert b_10width:InterpolationWidths 36 0.3156756 insert b_10width:InterpolationWidths 37 0.32624367 insert b_10width:InterpolationWidths 38 0.33699874 insert b_10width:InterpolationWidths 39 0.34794433 insert b_10width:InterpolationWidths 40 0.35908389 insert b_10width:InterpolationWidths 41 0.37042081 insert b_10width:InterpolationWidths 42 0.38195844 insert b_10width:InterpolationWidths 43 0.39370007 insert b_10width:InterpolationWidths 44 0.40564893 insert b_10width:InterpolationWidths 45 0.41780825 insert b_10width:InterpolationWidths 46 0.43018117 insert b_10width:InterpolationWidths 47 0.44277083 insert b_10width:InterpolationWidths 48 0.45558033 insert b_10width:InterpolationWidths 49 0.46861274 insert b_10width:InterpolationWidths 50 0.4818711 insert b_10width:InterpolationWidths 51 0.49535841 insert b_10width:InterpolationWidths 52 0.50907766 insert b_10width:InterpolationWidths 53 0.52303184 insert b_10width:NumberofEntries 0 54 newdef /Herwig/Particles/b_10:Width_generator b_10width # create Herwig::GenericWidthGenerator K_20width newdef K_20width:Particle /Herwig/Particles/K*_20 newdef K_20width:Prefactor 1.00074 newdef K_20width:BRNormalize 1 newdef K_20width:BRMinimum 0.01 newdef K_20width:Points 50 newdef K_20width:InterpolationOrder 1 insert K_20width:MEtype 0 2 insert K_20width:MEtype 1 2 insert K_20width:MEtype 2 2 insert K_20width:MEtype 3 1 insert K_20width:MEtype 4 2 insert K_20width:MEtype 5 2 insert K_20width:MEtype 6 2 insert K_20width:MEtype 7 2 insert K_20width:MEtype 8 1 insert K_20width:MEtype 9 2 insert K_20width:MEcode 0 0 insert K_20width:MEcode 1 0 insert K_20width:MEcode 2 0 insert K_20width:MEcode 3 7 insert K_20width:MEcode 4 0 insert K_20width:MEcode 5 0 insert K_20width:MEcode 6 0 insert K_20width:MEcode 7 0 insert K_20width:MEcode 8 7 insert K_20width:MEcode 9 0 insert K_20width:MEcoupling 0 0.917419 insert K_20width:MEcoupling 1 1.02796 insert K_20width:MEcoupling 2 1.00277 insert K_20width:MEcoupling 3 17.5688 insert K_20width:MEcoupling 4 1.00907 insert K_20width:MEcoupling 5 0.965991 insert K_20width:MEcoupling 6 1.00903 insert K_20width:MEcoupling 7 0.993572 insert K_20width:MEcoupling 8 12.4652 insert K_20width:MEcoupling 9 1.00672 insert K_20width:ModeOn 0 1 insert K_20width:ModeOn 1 1 insert K_20width:ModeOn 2 1 insert K_20width:ModeOn 3 1 insert K_20width:ModeOn 4 1 insert K_20width:ModeOn 5 1 insert K_20width:ModeOn 6 0 insert K_20width:ModeOn 7 1 insert K_20width:ModeOn 8 1 insert K_20width:ModeOn 9 1 insert K_20width:MinimumMasses 0 1.01716 insert K_20width:MinimumMasses 1 0.780978 insert K_20width:MinimumMasses 2 1.0215 insert K_20width:MinimumMasses 3 0.633247 insert K_20width:MinimumMasses 4 0.78123 insert K_20width:MinimumMasses 5 0.869177 insert K_20width:MinimumMasses 6 1.04514 insert K_20width:MinimumMasses 7 1.1954 insert K_20width:MinimumMasses 8 0.632626 insert K_20width:MinimumMasses 9 0.873148 insert K_20width:MEmass1 0 0.7755 insert K_20width:MEmass1 1 0.134978 insert K_20width:MEmass1 2 0.7755 insert K_20width:MEmass1 3 0.493677 insert K_20width:MEmass1 4 0.13957 insert K_20width:MEmass1 5 0.493677 insert K_20width:MEmass1 6 0.497648 insert K_20width:MEmass1 7 0.497648 insert K_20width:MEmass1 8 0.497648 insert K_20width:MEmass1 9 0.497648 insert K_20width:MEmass2 0 0.89166 insert K_20width:MEmass2 1 0.896 insert K_20width:MEmass2 2 0.896 insert K_20width:MEmass2 3 0.13957 insert K_20width:MEmass2 4 0.89166 insert K_20width:MEmass2 5 0.7755 insert K_20width:MEmass2 6 0.54751 insert K_20width:MEmass2 7 0.78265 insert K_20width:MEmass2 8 0.134978 insert K_20width:MEmass2 9 0.7755 insert K_20width:DecayModes 0 K*_20->K*+,rho-; insert K_20width:DecayModes 1 K*_20->K*0,pi0; insert K_20width:DecayModes 2 K*_20->K*0,rho0; insert K_20width:DecayModes 3 K*_20->K+,pi-; insert K_20width:DecayModes 4 K*_20->K*+,pi-; insert K_20width:DecayModes 5 K*_20->K+,rho-; insert K_20width:DecayModes 6 K*_20->K0,eta; insert K_20width:DecayModes 7 K*_20->K0,omega; insert K_20width:DecayModes 8 K*_20->K0,pi0; insert K_20width:DecayModes 9 K*_20->K0,rho0; insert K_20width:InterpolationMasses 0 1.1966041 insert K_20width:InterpolationMasses 1 1.205502 insert K_20width:InterpolationMasses 2 1.2144 insert K_20width:InterpolationMasses 3 1.223298 insert K_20width:InterpolationMasses 4 1.2321959 insert K_20width:InterpolationMasses 5 1.2410939 insert K_20width:InterpolationMasses 6 1.2499918 insert K_20width:InterpolationMasses 7 1.2588898 insert K_20width:InterpolationMasses 8 1.2677878 insert K_20width:InterpolationMasses 9 1.2766857 insert K_20width:InterpolationMasses 10 1.2855837 insert K_20width:InterpolationMasses 11 1.2944816 insert K_20width:InterpolationMasses 12 1.3033796 insert K_20width:InterpolationMasses 13 1.3122776 insert K_20width:InterpolationMasses 14 1.3211755 insert K_20width:InterpolationMasses 15 1.3300735 insert K_20width:InterpolationMasses 16 1.3389714 insert K_20width:InterpolationMasses 17 1.3478694 insert K_20width:InterpolationMasses 18 1.3567673 insert K_20width:InterpolationMasses 19 1.3656653 insert K_20width:InterpolationMasses 20 1.3745633 insert K_20width:InterpolationMasses 21 1.3834612 insert K_20width:InterpolationMasses 22 1.3923592 insert K_20width:InterpolationMasses 23 1.4012571 insert K_20width:InterpolationMasses 24 1.4101551 insert K_20width:InterpolationMasses 25 1.4190531 insert K_20width:InterpolationMasses 26 1.427951 insert K_20width:InterpolationMasses 27 1.436849 insert K_20width:InterpolationMasses 28 1.4457469 insert K_20width:InterpolationMasses 29 1.4546449 insert K_20width:InterpolationMasses 30 1.4635429 insert K_20width:InterpolationMasses 31 1.4724408 insert K_20width:InterpolationMasses 32 1.4813388 insert K_20width:InterpolationMasses 33 1.4902367 insert K_20width:InterpolationMasses 34 1.4991347 insert K_20width:InterpolationMasses 35 1.5080327 insert K_20width:InterpolationMasses 36 1.5169306 insert K_20width:InterpolationMasses 37 1.5258286 insert K_20width:InterpolationMasses 38 1.5347265 insert K_20width:InterpolationMasses 39 1.5436245 insert K_20width:InterpolationMasses 40 1.5525224 insert K_20width:InterpolationMasses 41 1.5614204 insert K_20width:InterpolationMasses 42 1.5703184 insert K_20width:InterpolationMasses 43 1.5792163 insert K_20width:InterpolationMasses 44 1.5881143 insert K_20width:InterpolationMasses 45 1.5970122 insert K_20width:InterpolationMasses 46 1.6059102 insert K_20width:InterpolationMasses 47 1.6148082 insert K_20width:InterpolationMasses 48 1.6237061 insert K_20width:InterpolationMasses 49 1.6326041 insert K_20width:InterpolationMasses 50 1.641502 insert K_20width:InterpolationMasses 51 1.6504 insert K_20width:InterpolationMasses 52 1.659298 insert K_20width:InterpolationMasses 53 1.6681959 insert K_20width:InterpolationMasses 54 1.1966041 insert K_20width:InterpolationMasses 55 1.205502 insert K_20width:InterpolationMasses 56 1.2144 insert K_20width:InterpolationMasses 57 1.223298 insert K_20width:InterpolationMasses 58 1.2321959 insert K_20width:InterpolationMasses 59 1.2410939 insert K_20width:InterpolationMasses 60 1.2499918 insert K_20width:InterpolationMasses 61 1.2588898 insert K_20width:InterpolationMasses 62 1.2677878 insert K_20width:InterpolationMasses 63 1.2766857 insert K_20width:InterpolationMasses 64 1.2855837 insert K_20width:InterpolationMasses 65 1.2944816 insert K_20width:InterpolationMasses 66 1.3033796 insert K_20width:InterpolationMasses 67 1.3122776 insert K_20width:InterpolationMasses 68 1.3211755 insert K_20width:InterpolationMasses 69 1.3300735 insert K_20width:InterpolationMasses 70 1.3389714 insert K_20width:InterpolationMasses 71 1.3478694 insert K_20width:InterpolationMasses 72 1.3567673 insert K_20width:InterpolationMasses 73 1.3656653 insert K_20width:InterpolationMasses 74 1.3745633 insert K_20width:InterpolationMasses 75 1.3834612 insert K_20width:InterpolationMasses 76 1.3923592 insert K_20width:InterpolationMasses 77 1.4012571 insert K_20width:InterpolationMasses 78 1.4101551 insert K_20width:InterpolationMasses 79 1.4190531 insert K_20width:InterpolationMasses 80 1.427951 insert K_20width:InterpolationMasses 81 1.436849 insert K_20width:InterpolationMasses 82 1.4457469 insert K_20width:InterpolationMasses 83 1.4546449 insert K_20width:InterpolationMasses 84 1.4635429 insert K_20width:InterpolationMasses 85 1.4724408 insert K_20width:InterpolationMasses 86 1.4813388 insert K_20width:InterpolationMasses 87 1.4902367 insert K_20width:InterpolationMasses 88 1.4991347 insert K_20width:InterpolationMasses 89 1.5080327 insert K_20width:InterpolationMasses 90 1.5169306 insert K_20width:InterpolationMasses 91 1.5258286 insert K_20width:InterpolationMasses 92 1.5347265 insert K_20width:InterpolationMasses 93 1.5436245 insert K_20width:InterpolationMasses 94 1.5525224 insert K_20width:InterpolationMasses 95 1.5614204 insert K_20width:InterpolationMasses 96 1.5703184 insert K_20width:InterpolationMasses 97 1.5792163 insert K_20width:InterpolationMasses 98 1.5881143 insert K_20width:InterpolationMasses 99 1.5970122 insert K_20width:InterpolationMasses 100 1.6059102 insert K_20width:InterpolationMasses 101 1.6148082 insert K_20width:InterpolationMasses 102 1.6237061 insert K_20width:InterpolationMasses 103 1.6326041 insert K_20width:InterpolationMasses 104 1.641502 insert K_20width:InterpolationMasses 105 1.6504 insert K_20width:InterpolationMasses 106 1.659298 insert K_20width:InterpolationMasses 107 1.6681959 insert K_20width:InterpolationMasses 108 1.1966041 insert K_20width:InterpolationMasses 109 1.205502 insert K_20width:InterpolationMasses 110 1.2144 insert K_20width:InterpolationMasses 111 1.223298 insert K_20width:InterpolationMasses 112 1.2321959 insert K_20width:InterpolationMasses 113 1.2410939 insert K_20width:InterpolationMasses 114 1.2499918 insert K_20width:InterpolationMasses 115 1.2588898 insert K_20width:InterpolationMasses 116 1.2677878 insert K_20width:InterpolationMasses 117 1.2766857 insert K_20width:InterpolationMasses 118 1.2855837 insert K_20width:InterpolationMasses 119 1.2944816 insert K_20width:InterpolationMasses 120 1.3033796 insert K_20width:InterpolationMasses 121 1.3122776 insert K_20width:InterpolationMasses 122 1.3211755 insert K_20width:InterpolationMasses 123 1.3300735 insert K_20width:InterpolationMasses 124 1.3389714 insert K_20width:InterpolationMasses 125 1.3478694 insert K_20width:InterpolationMasses 126 1.3567673 insert K_20width:InterpolationMasses 127 1.3656653 insert K_20width:InterpolationMasses 128 1.3745633 insert K_20width:InterpolationMasses 129 1.3834612 insert K_20width:InterpolationMasses 130 1.3923592 insert K_20width:InterpolationMasses 131 1.4012571 insert K_20width:InterpolationMasses 132 1.4101551 insert K_20width:InterpolationMasses 133 1.4190531 insert K_20width:InterpolationMasses 134 1.427951 insert K_20width:InterpolationMasses 135 1.436849 insert K_20width:InterpolationMasses 136 1.4457469 insert K_20width:InterpolationMasses 137 1.4546449 insert K_20width:InterpolationMasses 138 1.4635429 insert K_20width:InterpolationMasses 139 1.4724408 insert K_20width:InterpolationMasses 140 1.4813388 insert K_20width:InterpolationMasses 141 1.4902367 insert K_20width:InterpolationMasses 142 1.4991347 insert K_20width:InterpolationMasses 143 1.5080327 insert K_20width:InterpolationMasses 144 1.5169306 insert K_20width:InterpolationMasses 145 1.5258286 insert K_20width:InterpolationMasses 146 1.5347265 insert K_20width:InterpolationMasses 147 1.5436245 insert K_20width:InterpolationMasses 148 1.5525224 insert K_20width:InterpolationMasses 149 1.5614204 insert K_20width:InterpolationMasses 150 1.5703184 insert K_20width:InterpolationMasses 151 1.5792163 insert K_20width:InterpolationMasses 152 1.5881143 insert K_20width:InterpolationMasses 153 1.5970122 insert K_20width:InterpolationMasses 154 1.6059102 insert K_20width:InterpolationMasses 155 1.6148082 insert K_20width:InterpolationMasses 156 1.6237061 insert K_20width:InterpolationMasses 157 1.6326041 insert K_20width:InterpolationMasses 158 1.641502 insert K_20width:InterpolationMasses 159 1.6504 insert K_20width:InterpolationMasses 160 1.659298 insert K_20width:InterpolationMasses 161 1.6681959 insert K_20width:InterpolationMasses 162 1.1966041 insert K_20width:InterpolationMasses 163 1.205502 insert K_20width:InterpolationMasses 164 1.2144 insert K_20width:InterpolationMasses 165 1.223298 insert K_20width:InterpolationMasses 166 1.2321959 insert K_20width:InterpolationMasses 167 1.2410939 insert K_20width:InterpolationMasses 168 1.2499918 insert K_20width:InterpolationMasses 169 1.2588898 insert K_20width:InterpolationMasses 170 1.2677878 insert K_20width:InterpolationMasses 171 1.2766857 insert K_20width:InterpolationMasses 172 1.2855837 insert K_20width:InterpolationMasses 173 1.2944816 insert K_20width:InterpolationMasses 174 1.3033796 insert K_20width:InterpolationMasses 175 1.3122776 insert K_20width:InterpolationMasses 176 1.3211755 insert K_20width:InterpolationMasses 177 1.3300735 insert K_20width:InterpolationMasses 178 1.3389714 insert K_20width:InterpolationMasses 179 1.3478694 insert K_20width:InterpolationMasses 180 1.3567673 insert K_20width:InterpolationMasses 181 1.3656653 insert K_20width:InterpolationMasses 182 1.3745633 insert K_20width:InterpolationMasses 183 1.3834612 insert K_20width:InterpolationMasses 184 1.3923592 insert K_20width:InterpolationMasses 185 1.4012571 insert K_20width:InterpolationMasses 186 1.4101551 insert K_20width:InterpolationMasses 187 1.4190531 insert K_20width:InterpolationMasses 188 1.427951 insert K_20width:InterpolationMasses 189 1.436849 insert K_20width:InterpolationMasses 190 1.4457469 insert K_20width:InterpolationMasses 191 1.4546449 insert K_20width:InterpolationMasses 192 1.4635429 insert K_20width:InterpolationMasses 193 1.4724408 insert K_20width:InterpolationMasses 194 1.4813388 insert K_20width:InterpolationMasses 195 1.4902367 insert K_20width:InterpolationMasses 196 1.4991347 insert K_20width:InterpolationMasses 197 1.5080327 insert K_20width:InterpolationMasses 198 1.5169306 insert K_20width:InterpolationMasses 199 1.5258286 insert K_20width:InterpolationMasses 200 1.5347265 insert K_20width:InterpolationMasses 201 1.5436245 insert K_20width:InterpolationMasses 202 1.5525224 insert K_20width:InterpolationMasses 203 1.5614204 insert K_20width:InterpolationMasses 204 1.5703184 insert K_20width:InterpolationMasses 205 1.5792163 insert K_20width:InterpolationMasses 206 1.5881143 insert K_20width:InterpolationMasses 207 1.5970122 insert K_20width:InterpolationMasses 208 1.6059102 insert K_20width:InterpolationMasses 209 1.6148082 insert K_20width:InterpolationMasses 210 1.6237061 insert K_20width:InterpolationMasses 211 1.6326041 insert K_20width:InterpolationMasses 212 1.641502 insert K_20width:InterpolationMasses 213 1.6504 insert K_20width:InterpolationMasses 214 1.659298 insert K_20width:InterpolationMasses 215 1.6681959 insert K_20width:InterpolationMasses 216 1.1966041 insert K_20width:InterpolationMasses 217 1.205502 insert K_20width:InterpolationMasses 218 1.2144 insert K_20width:InterpolationMasses 219 1.223298 insert K_20width:InterpolationMasses 220 1.2321959 insert K_20width:InterpolationMasses 221 1.2410939 insert K_20width:InterpolationMasses 222 1.2499918 insert K_20width:InterpolationMasses 223 1.2588898 insert K_20width:InterpolationMasses 224 1.2677878 insert K_20width:InterpolationMasses 225 1.2766857 insert K_20width:InterpolationMasses 226 1.2855837 insert K_20width:InterpolationMasses 227 1.2944816 insert K_20width:InterpolationMasses 228 1.3033796 insert K_20width:InterpolationMasses 229 1.3122776 insert K_20width:InterpolationMasses 230 1.3211755 insert K_20width:InterpolationMasses 231 1.3300735 insert K_20width:InterpolationMasses 232 1.3389714 insert K_20width:InterpolationMasses 233 1.3478694 insert K_20width:InterpolationMasses 234 1.3567673 insert K_20width:InterpolationMasses 235 1.3656653 insert K_20width:InterpolationMasses 236 1.3745633 insert K_20width:InterpolationMasses 237 1.3834612 insert K_20width:InterpolationMasses 238 1.3923592 insert K_20width:InterpolationMasses 239 1.4012571 insert K_20width:InterpolationMasses 240 1.4101551 insert K_20width:InterpolationMasses 241 1.4190531 insert K_20width:InterpolationMasses 242 1.427951 insert K_20width:InterpolationMasses 243 1.436849 insert K_20width:InterpolationMasses 244 1.4457469 insert K_20width:InterpolationMasses 245 1.4546449 insert K_20width:InterpolationMasses 246 1.4635429 insert K_20width:InterpolationMasses 247 1.4724408 insert K_20width:InterpolationMasses 248 1.4813388 insert K_20width:InterpolationMasses 249 1.4902367 insert K_20width:InterpolationMasses 250 1.4991347 insert K_20width:InterpolationMasses 251 1.5080327 insert K_20width:InterpolationMasses 252 1.5169306 insert K_20width:InterpolationMasses 253 1.5258286 insert K_20width:InterpolationMasses 254 1.5347265 insert K_20width:InterpolationMasses 255 1.5436245 insert K_20width:InterpolationMasses 256 1.5525224 insert K_20width:InterpolationMasses 257 1.5614204 insert K_20width:InterpolationMasses 258 1.5703184 insert K_20width:InterpolationMasses 259 1.5792163 insert K_20width:InterpolationMasses 260 1.5881143 insert K_20width:InterpolationMasses 261 1.5970122 insert K_20width:InterpolationMasses 262 1.6059102 insert K_20width:InterpolationMasses 263 1.6148082 insert K_20width:InterpolationMasses 264 1.6237061 insert K_20width:InterpolationMasses 265 1.6326041 insert K_20width:InterpolationMasses 266 1.641502 insert K_20width:InterpolationMasses 267 1.6504 insert K_20width:InterpolationMasses 268 1.659298 insert K_20width:InterpolationMasses 269 1.6681959 insert K_20width:InterpolationMasses 270 1.1966041 insert K_20width:InterpolationMasses 271 1.205502 insert K_20width:InterpolationMasses 272 1.2144 insert K_20width:InterpolationMasses 273 1.223298 insert K_20width:InterpolationMasses 274 1.2321959 insert K_20width:InterpolationMasses 275 1.2410939 insert K_20width:InterpolationMasses 276 1.2499918 insert K_20width:InterpolationMasses 277 1.2588898 insert K_20width:InterpolationMasses 278 1.2677878 insert K_20width:InterpolationMasses 279 1.2766857 insert K_20width:InterpolationMasses 280 1.2855837 insert K_20width:InterpolationMasses 281 1.2944816 insert K_20width:InterpolationMasses 282 1.3033796 insert K_20width:InterpolationMasses 283 1.3122776 insert K_20width:InterpolationMasses 284 1.3211755 insert K_20width:InterpolationMasses 285 1.3300735 insert K_20width:InterpolationMasses 286 1.3389714 insert K_20width:InterpolationMasses 287 1.3478694 insert K_20width:InterpolationMasses 288 1.3567673 insert K_20width:InterpolationMasses 289 1.3656653 insert K_20width:InterpolationMasses 290 1.3745633 insert K_20width:InterpolationMasses 291 1.3834612 insert K_20width:InterpolationMasses 292 1.3923592 insert K_20width:InterpolationMasses 293 1.4012571 insert K_20width:InterpolationMasses 294 1.4101551 insert K_20width:InterpolationMasses 295 1.4190531 insert K_20width:InterpolationMasses 296 1.427951 insert K_20width:InterpolationMasses 297 1.436849 insert K_20width:InterpolationMasses 298 1.4457469 insert K_20width:InterpolationMasses 299 1.4546449 insert K_20width:InterpolationMasses 300 1.4635429 insert K_20width:InterpolationMasses 301 1.4724408 insert K_20width:InterpolationMasses 302 1.4813388 insert K_20width:InterpolationMasses 303 1.4902367 insert K_20width:InterpolationMasses 304 1.4991347 insert K_20width:InterpolationMasses 305 1.5080327 insert K_20width:InterpolationMasses 306 1.5169306 insert K_20width:InterpolationMasses 307 1.5258286 insert K_20width:InterpolationMasses 308 1.5347265 insert K_20width:InterpolationMasses 309 1.5436245 insert K_20width:InterpolationMasses 310 1.5525224 insert K_20width:InterpolationMasses 311 1.5614204 insert K_20width:InterpolationMasses 312 1.5703184 insert K_20width:InterpolationMasses 313 1.5792163 insert K_20width:InterpolationMasses 314 1.5881143 insert K_20width:InterpolationMasses 315 1.5970122 insert K_20width:InterpolationMasses 316 1.6059102 insert K_20width:InterpolationMasses 317 1.6148082 insert K_20width:InterpolationMasses 318 1.6237061 insert K_20width:InterpolationMasses 319 1.6326041 insert K_20width:InterpolationMasses 320 1.641502 insert K_20width:InterpolationMasses 321 1.6504 insert K_20width:InterpolationMasses 322 1.659298 insert K_20width:InterpolationMasses 323 1.6681959 insert K_20width:InterpolationMasses 324 1.1966041 insert K_20width:InterpolationMasses 325 1.205502 insert K_20width:InterpolationMasses 326 1.2144 insert K_20width:InterpolationMasses 327 1.223298 insert K_20width:InterpolationMasses 328 1.2321959 insert K_20width:InterpolationMasses 329 1.2410939 insert K_20width:InterpolationMasses 330 1.2499918 insert K_20width:InterpolationMasses 331 1.2588898 insert K_20width:InterpolationMasses 332 1.2677878 insert K_20width:InterpolationMasses 333 1.2766857 insert K_20width:InterpolationMasses 334 1.2855837 insert K_20width:InterpolationMasses 335 1.2944816 insert K_20width:InterpolationMasses 336 1.3033796 insert K_20width:InterpolationMasses 337 1.3122776 insert K_20width:InterpolationMasses 338 1.3211755 insert K_20width:InterpolationMasses 339 1.3300735 insert K_20width:InterpolationMasses 340 1.3389714 insert K_20width:InterpolationMasses 341 1.3478694 insert K_20width:InterpolationMasses 342 1.3567673 insert K_20width:InterpolationMasses 343 1.3656653 insert K_20width:InterpolationMasses 344 1.3745633 insert K_20width:InterpolationMasses 345 1.3834612 insert K_20width:InterpolationMasses 346 1.3923592 insert K_20width:InterpolationMasses 347 1.4012571 insert K_20width:InterpolationMasses 348 1.4101551 insert K_20width:InterpolationMasses 349 1.4190531 insert K_20width:InterpolationMasses 350 1.427951 insert K_20width:InterpolationMasses 351 1.436849 insert K_20width:InterpolationMasses 352 1.4457469 insert K_20width:InterpolationMasses 353 1.4546449 insert K_20width:InterpolationMasses 354 1.4635429 insert K_20width:InterpolationMasses 355 1.4724408 insert K_20width:InterpolationMasses 356 1.4813388 insert K_20width:InterpolationMasses 357 1.4902367 insert K_20width:InterpolationMasses 358 1.4991347 insert K_20width:InterpolationMasses 359 1.5080327 insert K_20width:InterpolationMasses 360 1.5169306 insert K_20width:InterpolationMasses 361 1.5258286 insert K_20width:InterpolationMasses 362 1.5347265 insert K_20width:InterpolationMasses 363 1.5436245 insert K_20width:InterpolationMasses 364 1.5525224 insert K_20width:InterpolationMasses 365 1.5614204 insert K_20width:InterpolationMasses 366 1.5703184 insert K_20width:InterpolationMasses 367 1.5792163 insert K_20width:InterpolationMasses 368 1.5881143 insert K_20width:InterpolationMasses 369 1.5970122 insert K_20width:InterpolationMasses 370 1.6059102 insert K_20width:InterpolationMasses 371 1.6148082 insert K_20width:InterpolationMasses 372 1.6237061 insert K_20width:InterpolationMasses 373 1.6326041 insert K_20width:InterpolationMasses 374 1.641502 insert K_20width:InterpolationMasses 375 1.6504 insert K_20width:InterpolationMasses 376 1.659298 insert K_20width:InterpolationMasses 377 1.6681959 insert K_20width:InterpolationMasses 378 1.1966041 insert K_20width:InterpolationMasses 379 1.205502 insert K_20width:InterpolationMasses 380 1.2144 insert K_20width:InterpolationMasses 381 1.223298 insert K_20width:InterpolationMasses 382 1.2321959 insert K_20width:InterpolationMasses 383 1.2410939 insert K_20width:InterpolationMasses 384 1.2499918 insert K_20width:InterpolationMasses 385 1.2588898 insert K_20width:InterpolationMasses 386 1.2677878 insert K_20width:InterpolationMasses 387 1.2766857 insert K_20width:InterpolationMasses 388 1.2855837 insert K_20width:InterpolationMasses 389 1.2944816 insert K_20width:InterpolationMasses 390 1.3033796 insert K_20width:InterpolationMasses 391 1.3122776 insert K_20width:InterpolationMasses 392 1.3211755 insert K_20width:InterpolationMasses 393 1.3300735 insert K_20width:InterpolationMasses 394 1.3389714 insert K_20width:InterpolationMasses 395 1.3478694 insert K_20width:InterpolationMasses 396 1.3567673 insert K_20width:InterpolationMasses 397 1.3656653 insert K_20width:InterpolationMasses 398 1.3745633 insert K_20width:InterpolationMasses 399 1.3834612 insert K_20width:InterpolationMasses 400 1.3923592 insert K_20width:InterpolationMasses 401 1.4012571 insert K_20width:InterpolationMasses 402 1.4101551 insert K_20width:InterpolationMasses 403 1.4190531 insert K_20width:InterpolationMasses 404 1.427951 insert K_20width:InterpolationMasses 405 1.436849 insert K_20width:InterpolationMasses 406 1.4457469 insert K_20width:InterpolationMasses 407 1.4546449 insert K_20width:InterpolationMasses 408 1.4635429 insert K_20width:InterpolationMasses 409 1.4724408 insert K_20width:InterpolationMasses 410 1.4813388 insert K_20width:InterpolationMasses 411 1.4902367 insert K_20width:InterpolationMasses 412 1.4991347 insert K_20width:InterpolationMasses 413 1.5080327 insert K_20width:InterpolationMasses 414 1.5169306 insert K_20width:InterpolationMasses 415 1.5258286 insert K_20width:InterpolationMasses 416 1.5347265 insert K_20width:InterpolationMasses 417 1.5436245 insert K_20width:InterpolationMasses 418 1.5525224 insert K_20width:InterpolationMasses 419 1.5614204 insert K_20width:InterpolationMasses 420 1.5703184 insert K_20width:InterpolationMasses 421 1.5792163 insert K_20width:InterpolationMasses 422 1.5881143 insert K_20width:InterpolationMasses 423 1.5970122 insert K_20width:InterpolationMasses 424 1.6059102 insert K_20width:InterpolationMasses 425 1.6148082 insert K_20width:InterpolationMasses 426 1.6237061 insert K_20width:InterpolationMasses 427 1.6326041 insert K_20width:InterpolationMasses 428 1.641502 insert K_20width:InterpolationMasses 429 1.6504 insert K_20width:InterpolationMasses 430 1.659298 insert K_20width:InterpolationMasses 431 1.6681959 insert K_20width:InterpolationWidths 0 1.0819093e-05 insert K_20width:InterpolationWidths 1 1.4824147e-05 insert K_20width:InterpolationWidths 2 2.0234965e-05 insert K_20width:InterpolationWidths 3 2.7562737e-05 insert K_20width:InterpolationWidths 4 3.7536616e-05 insert K_20width:InterpolationWidths 5 5.1220894e-05 insert K_20width:InterpolationWidths 6 7.0196002e-05 insert K_20width:InterpolationWidths 7 9.6783259e-05 insert K_20width:InterpolationWidths 8 0.0001341418 insert K_20width:InterpolationWidths 9 0.00018598477 insert K_20width:InterpolationWidths 10 0.00025615736 insert K_20width:InterpolationWidths 11 0.00034859917 insert K_20width:InterpolationWidths 12 0.00046758681 insert K_20width:InterpolationWidths 13 0.00061796638 insert K_20width:InterpolationWidths 14 0.00080532321 insert K_20width:InterpolationWidths 15 0.0010361255 insert K_20width:InterpolationWidths 16 0.0013178695 insert K_20width:InterpolationWidths 17 0.001659242 insert K_20width:InterpolationWidths 18 0.0020703075 insert K_20width:InterpolationWidths 19 0.0025627274 insert K_20width:InterpolationWidths 20 0.0031500178 insert K_20width:InterpolationWidths 21 0.0038478525 insert K_20width:InterpolationWidths 22 0.0046744185 insert K_20width:InterpolationWidths 23 0.0056508328 insert K_20width:InterpolationWidths 24 0.0068016309 insert K_20width:InterpolationWidths 25 0.0081553385 insert K_20width:InterpolationWidths 26 0.009745141 insert K_20width:InterpolationWidths 27 0.011609671 insert K_20width:InterpolationWidths 28 0.013793933 insert K_20width:InterpolationWidths 29 0.016350399 insert K_20width:InterpolationWidths 30 0.019340289 insert K_20width:InterpolationWidths 31 0.02283512 insert K_20width:InterpolationWidths 32 0.026918478 insert K_20width:InterpolationWidths 33 0.031688154 insert K_20width:InterpolationWidths 34 0.037258632 insert K_20width:InterpolationWidths 35 0.043763998 insert K_20width:InterpolationWidths 36 0.051361287 insert K_20width:InterpolationWidths 37 0.060234309 insert K_20width:InterpolationWidths 38 0.070597907 insert K_20width:InterpolationWidths 39 0.082702552 insert K_20width:InterpolationWidths 40 0.096839058 insert K_20width:InterpolationWidths 41 0.113343 insert K_20width:InterpolationWidths 42 0.13259817 insert K_20width:InterpolationWidths 43 0.15503802 insert K_20width:InterpolationWidths 44 0.18114371 insert K_20width:InterpolationWidths 45 0.21143679 insert K_20width:InterpolationWidths 46 0.24646481 insert K_20width:InterpolationWidths 47 0.28677793 insert K_20width:InterpolationWidths 48 0.33289653 insert K_20width:InterpolationWidths 49 0.38527168 insert K_20width:InterpolationWidths 50 0.44424372 insert K_20width:InterpolationWidths 51 0.51000659 insert K_20width:InterpolationWidths 52 0.58258673 insert K_20width:InterpolationWidths 53 0.66184222 insert K_20width:InterpolationWidths 54 0.0005106389 insert K_20width:InterpolationWidths 55 0.00059509788 insert K_20width:InterpolationWidths 56 0.00068967291 insert K_20width:InterpolationWidths 57 0.00079513583 insert K_20width:InterpolationWidths 58 0.00091228647 insert K_20width:InterpolationWidths 59 0.0010419527 insert K_20width:InterpolationWidths 60 0.0011849905 insert K_20width:InterpolationWidths 61 0.0013422838 insert K_20width:InterpolationWidths 62 0.0015147447 insert K_20width:InterpolationWidths 63 0.0017033133 insert K_20width:InterpolationWidths 64 0.001908958 insert K_20width:InterpolationWidths 65 0.0021326751 insert K_20width:InterpolationWidths 66 0.0023754893 insert K_20width:InterpolationWidths 67 0.0026384534 insert K_20width:InterpolationWidths 68 0.0029226484 insert K_20width:InterpolationWidths 69 0.0032291837 insert K_20width:InterpolationWidths 70 0.0035591969 insert K_20width:InterpolationWidths 71 0.003913854 insert K_20width:InterpolationWidths 72 0.0042943495 insert K_20width:InterpolationWidths 73 0.0047019064 insert K_20width:InterpolationWidths 74 0.005137776 insert K_20width:InterpolationWidths 75 0.0056032385 insert K_20width:InterpolationWidths 76 0.0060996025 insert K_20width:InterpolationWidths 77 0.0066282056 insert K_20width:InterpolationWidths 78 0.0071904138 insert K_20width:InterpolationWidths 79 0.0077876225 insert K_20width:InterpolationWidths 80 0.0084212557 insert K_20width:InterpolationWidths 81 0.0090927666 insert K_20width:InterpolationWidths 82 0.0098036374 insert K_20width:InterpolationWidths 83 0.01055538 insert K_20width:InterpolationWidths 84 0.011349534 insert K_20width:InterpolationWidths 85 0.012187671 insert K_20width:InterpolationWidths 86 0.013071391 insert K_20width:InterpolationWidths 87 0.014002322 insert K_20width:InterpolationWidths 88 0.014982124 insert K_20width:InterpolationWidths 89 0.016012486 insert K_20width:InterpolationWidths 90 0.017095127 insert K_20width:InterpolationWidths 91 0.018231796 insert K_20width:InterpolationWidths 92 0.019424272 insert K_20width:InterpolationWidths 93 0.020674364 insert K_20width:InterpolationWidths 94 0.021983912 insert K_20width:InterpolationWidths 95 0.023354785 insert K_20width:InterpolationWidths 96 0.024788882 insert K_20width:InterpolationWidths 97 0.026288132 insert K_20width:InterpolationWidths 98 0.027854495 insert K_20width:InterpolationWidths 99 0.029489961 insert K_20width:InterpolationWidths 100 0.031196549 insert K_20width:InterpolationWidths 101 0.032976311 insert K_20width:InterpolationWidths 102 0.034831328 insert K_20width:InterpolationWidths 103 0.036763711 insert K_20width:InterpolationWidths 104 0.038775605 insert K_20width:InterpolationWidths 105 0.040869182 insert K_20width:InterpolationWidths 106 0.043046646 insert K_20width:InterpolationWidths 107 0.045310234 insert K_20width:InterpolationWidths 108 4.8372054e-06 insert K_20width:InterpolationWidths 109 6.606787e-06 insert K_20width:InterpolationWidths 110 8.9851117e-06 insert K_20width:InterpolationWidths 111 1.2186119e-05 insert K_20width:InterpolationWidths 112 1.6510588e-05 insert K_20width:InterpolationWidths 113 2.2391071e-05 insert K_20width:InterpolationWidths 114 3.0463802e-05 insert K_20width:InterpolationWidths 115 4.1672724e-05 insert K_20width:InterpolationWidths 116 5.7367515e-05 insert K_20width:InterpolationWidths 117 7.9269341e-05 insert K_20width:InterpolationWidths 118 0.00010926366 insert K_20width:InterpolationWidths 119 0.00014927266 insert K_20width:InterpolationWidths 120 0.00020132949 insert K_20width:InterpolationWidths 121 0.00026770552 insert K_20width:InterpolationWidths 122 0.00035100784 insert K_20width:InterpolationWidths 123 0.00045425509 insert K_20width:InterpolationWidths 124 0.00058094896 insert K_20width:InterpolationWidths 125 0.00073515146 insert K_20width:InterpolationWidths 126 0.00092157324 insert K_20width:InterpolationWidths 127 0.0011456766 insert K_20width:InterpolationWidths 128 0.0014137961 insert K_20width:InterpolationWidths 129 0.0017332806 insert K_20width:InterpolationWidths 130 0.0021126589 insert K_20width:InterpolationWidths 131 0.002561835 insert K_20width:InterpolationWidths 132 0.0030923148 insert K_20width:InterpolationWidths 133 0.0037174725 insert K_20width:InterpolationWidths 134 0.0044528611 insert K_20width:InterpolationWidths 135 0.0053165779 insert K_20width:InterpolationWidths 136 0.0063296937 insert K_20width:InterpolationWidths 137 0.0075167594 insert K_20width:InterpolationWidths 138 0.0089064039 insert K_20width:InterpolationWidths 139 0.010532044 insert K_20width:InterpolationWidths 140 0.012432719 insert K_20width:InterpolationWidths 141 0.014654077 insert K_20width:InterpolationWidths 142 0.017249539 insert K_20width:InterpolationWidths 143 0.020281658 insert K_20width:InterpolationWidths 144 0.023823698 insert K_20width:InterpolationWidths 145 0.02796145 insert K_20width:InterpolationWidths 146 0.032795275 insert K_20width:InterpolationWidths 147 0.038442361 insert K_20width:InterpolationWidths 148 0.045039091 insert K_20width:InterpolationWidths 149 0.052743394 insert K_20width:InterpolationWidths 150 0.061736794 insert K_20width:InterpolationWidths 151 0.072225731 insert K_20width:InterpolationWidths 152 0.084441533 insert K_20width:InterpolationWidths 153 0.098638196 insert K_20width:InterpolationWidths 154 0.11508698 insert K_20width:InterpolationWidths 155 0.13406689 insert K_20width:InterpolationWidths 156 0.15585043 insert K_20width:InterpolationWidths 157 0.18068511 insert K_20width:InterpolationWidths 158 0.20877241 insert K_20width:InterpolationWidths 159 0.24024771 insert K_20width:InterpolationWidths 160 0.27516539 insert K_20width:InterpolationWidths 161 0.31349319 insert K_20width:InterpolationWidths 162 0.0010502919 insert K_20width:InterpolationWidths 163 0.0012235568 insert K_20width:InterpolationWidths 164 0.0014174643 insert K_20width:InterpolationWidths 165 0.0016335754 insert K_20width:InterpolationWidths 166 0.0018735066 insert K_20width:InterpolationWidths 167 0.0021389306 insert K_20width:InterpolationWidths 168 0.0024315757 insert K_20width:InterpolationWidths 169 0.0027532263 insert K_20width:InterpolationWidths 170 0.0031057229 insert K_20width:InterpolationWidths 171 0.0034909618 insert K_20width:InterpolationWidths 172 0.0039108954 insert K_20width:InterpolationWidths 173 0.0043675324 insert K_20width:InterpolationWidths 174 0.0048629377 insert K_20width:InterpolationWidths 175 0.0053992322 insert K_20width:InterpolationWidths 176 0.0059785936 insert K_20width:InterpolationWidths 177 0.0066032557 insert K_20width:InterpolationWidths 178 0.0072755088 insert K_20width:InterpolationWidths 179 0.0079977003 insert K_20width:InterpolationWidths 180 0.0087722337 insert K_20width:InterpolationWidths 181 0.00960157 insert K_20width:InterpolationWidths 182 0.010488227 insert K_20width:InterpolationWidths 183 0.011434779 insert K_20width:InterpolationWidths 184 0.012443858 insert K_20width:InterpolationWidths 185 0.013518155 insert K_20width:InterpolationWidths 186 0.014660415 insert K_20width:InterpolationWidths 187 0.015873444 insert K_20width:InterpolationWidths 188 0.017160105 insert K_20width:InterpolationWidths 189 0.018523319 insert K_20width:InterpolationWidths 190 0.019966063 insert K_20width:InterpolationWidths 191 0.021491377 insert K_20width:InterpolationWidths 192 0.023102357 insert K_20width:InterpolationWidths 193 0.024802156 insert K_20width:InterpolationWidths 194 0.026593991 insert K_20width:InterpolationWidths 195 0.028481133 insert K_20width:InterpolationWidths 196 0.030466916 insert K_20width:InterpolationWidths 197 0.032554733 insert K_20width:InterpolationWidths 198 0.034748036 insert K_20width:InterpolationWidths 199 0.037050339 insert K_20width:InterpolationWidths 200 0.039465214 insert K_20width:InterpolationWidths 201 0.041996296 insert K_20width:InterpolationWidths 202 0.044647279 insert K_20width:InterpolationWidths 203 0.047421917 insert K_20width:InterpolationWidths 204 0.050324024 insert K_20width:InterpolationWidths 205 0.053357474 insert K_20width:InterpolationWidths 206 0.056526203 insert K_20width:InterpolationWidths 207 0.059834206 insert K_20width:InterpolationWidths 208 0.063285538 insert K_20width:InterpolationWidths 209 0.066884319 insert K_20width:InterpolationWidths 210 0.070634727 insert K_20width:InterpolationWidths 211 0.074541002 insert K_20width:InterpolationWidths 212 0.078607446 insert K_20width:InterpolationWidths 213 0.082838424 insert K_20width:InterpolationWidths 214 0.08723836 insert K_20width:InterpolationWidths 215 0.091811743 insert K_20width:InterpolationWidths 216 0.00013424856 insert K_20width:InterpolationWidths 217 0.00015882484 insert K_20width:InterpolationWidths 218 0.00018769057 insert K_20width:InterpolationWidths 219 0.00022159527 insert K_20width:InterpolationWidths 220 0.00026141824 insert K_20width:InterpolationWidths 221 0.00030818488 insert K_20width:InterpolationWidths 222 0.00036308041 insert K_20width:InterpolationWidths 223 0.00042745892 insert K_20width:InterpolationWidths 224 0.00050284576 insert K_20width:InterpolationWidths 225 0.00059093267 insert K_20width:InterpolationWidths 226 0.00069356656 insert K_20width:InterpolationWidths 227 0.0008127339 insert K_20width:InterpolationWidths 228 0.00095054356 insert K_20width:InterpolationWidths 229 0.0011092101 insert K_20width:InterpolationWidths 230 0.0012910393 insert K_20width:InterpolationWidths 231 0.0014984159 insert K_20width:InterpolationWidths 232 0.0017337943 insert K_20width:InterpolationWidths 233 0.0019996916 insert K_20width:InterpolationWidths 234 0.0022986823 insert K_20width:InterpolationWidths 235 0.0026333949 insert K_20width:InterpolationWidths 236 0.0030065094 insert K_20width:InterpolationWidths 237 0.0034207555 insert K_20width:InterpolationWidths 238 0.0038789118 insert K_20width:InterpolationWidths 239 0.0043838055 insert K_20width:InterpolationWidths 240 0.0049383118 insert K_20width:InterpolationWidths 241 0.0055453544 insert K_20width:InterpolationWidths 242 0.0062079054 insert K_20width:InterpolationWidths 243 0.0069289859 insert K_20width:InterpolationWidths 244 0.0077116664 insert K_20width:InterpolationWidths 245 0.008559067 insert K_20width:InterpolationWidths 246 0.0094743587 insert K_20width:InterpolationWidths 247 0.010460763 insert K_20width:InterpolationWidths 248 0.011521553 insert K_20width:InterpolationWidths 249 0.012660054 insert K_20width:InterpolationWidths 250 0.013879644 insert K_20width:InterpolationWidths 251 0.015183754 insert K_20width:InterpolationWidths 252 0.016575871 insert K_20width:InterpolationWidths 253 0.018059532 insert K_20width:InterpolationWidths 254 0.019638332 insert K_20width:InterpolationWidths 255 0.021315923 insert K_20width:InterpolationWidths 256 0.02309601 insert K_20width:InterpolationWidths 257 0.024982355 insert K_20width:InterpolationWidths 258 0.02697878 insert K_20width:InterpolationWidths 259 0.029089161 insert K_20width:InterpolationWidths 260 0.031317434 insert K_20width:InterpolationWidths 261 0.033667595 insert K_20width:InterpolationWidths 262 0.036143697 insert K_20width:InterpolationWidths 263 0.038749854 insert K_20width:InterpolationWidths 264 0.041490239 insert K_20width:InterpolationWidths 265 0.044369087 insert K_20width:InterpolationWidths 266 0.047390694 insert K_20width:InterpolationWidths 267 0.050559418 insert K_20width:InterpolationWidths 268 0.053879677 insert K_20width:InterpolationWidths 269 0.057355954 insert K_20width:InterpolationWidths 270 1.7319294e-05 insert K_20width:InterpolationWidths 271 1.9879751e-05 insert K_20width:InterpolationWidths 272 2.2645024e-05 insert K_20width:InterpolationWidths 273 2.5618784e-05 insert K_20width:InterpolationWidths 274 2.8804524e-05 insert K_20width:InterpolationWidths 275 3.2205574e-05 insert K_20width:InterpolationWidths 276 3.5825117e-05 insert K_20width:InterpolationWidths 277 3.96662e-05 insert K_20width:InterpolationWidths 278 4.3731752e-05 insert K_20width:InterpolationWidths 279 4.8024586e-05 insert K_20width:InterpolationWidths 280 5.2547414e-05 insert K_20width:InterpolationWidths 281 5.7302854e-05 insert K_20width:InterpolationWidths 282 6.2293437e-05 insert K_20width:InterpolationWidths 283 6.7521615e-05 insert K_20width:InterpolationWidths 284 7.2989766e-05 insert K_20width:InterpolationWidths 285 7.8700201e-05 insert K_20width:InterpolationWidths 286 8.4655168e-05 insert K_20width:InterpolationWidths 287 9.0856858e-05 insert K_20width:InterpolationWidths 288 9.7307408e-05 insert K_20width:InterpolationWidths 289 0.0001040089 insert K_20width:InterpolationWidths 290 0.00011096339 insert K_20width:InterpolationWidths 291 0.00011817286 insert K_20width:InterpolationWidths 292 0.00012563929 insert K_20width:InterpolationWidths 293 0.00013336458 insert K_20width:InterpolationWidths 294 0.00014135064 insert K_20width:InterpolationWidths 295 0.00014959931 insert K_20width:InterpolationWidths 296 0.00015811243 insert K_20width:InterpolationWidths 297 0.0001668918 insert K_20width:InterpolationWidths 298 0.00017593919 insert K_20width:InterpolationWidths 299 0.00018525636 insert K_20width:InterpolationWidths 300 0.00019484503 insert K_20width:InterpolationWidths 301 0.00020470692 insert K_20width:InterpolationWidths 302 0.00021484372 insert K_20width:InterpolationWidths 303 0.00022525709 insert K_20width:InterpolationWidths 304 0.0002359487 insert K_20width:InterpolationWidths 305 0.00024692019 insert K_20width:InterpolationWidths 306 0.00025817318 insert K_20width:InterpolationWidths 307 0.00026970929 insert K_20width:InterpolationWidths 308 0.00028153012 insert K_20width:InterpolationWidths 309 0.00029363725 insert K_20width:InterpolationWidths 310 0.00030603227 insert K_20width:InterpolationWidths 311 0.00031871675 insert K_20width:InterpolationWidths 312 0.00033169224 insert K_20width:InterpolationWidths 313 0.0003449603 insert K_20width:InterpolationWidths 314 0.00035852246 insert K_20width:InterpolationWidths 315 0.00037238028 insert K_20width:InterpolationWidths 316 0.00038653526 insert K_20width:InterpolationWidths 317 0.00040098894 insert K_20width:InterpolationWidths 318 0.00041574283 insert K_20width:InterpolationWidths 319 0.00043079845 insert K_20width:InterpolationWidths 320 0.00044615729 insert K_20width:InterpolationWidths 321 0.00046182086 insert K_20width:InterpolationWidths 322 0.00047779066 insert K_20width:InterpolationWidths 323 0.00049406818 insert K_20width:InterpolationWidths 324 2.275834e-13 insert K_20width:InterpolationWidths 325 4.2554106e-10 insert K_20width:InterpolationWidths 326 4.2941372e-09 insert K_20width:InterpolationWidths 327 1.8372889e-08 insert K_20width:InterpolationWidths 328 5.4558017e-08 insert K_20width:InterpolationWidths 329 1.3290521e-07 insert K_20width:InterpolationWidths 330 2.8762698e-07 insert K_20width:InterpolationWidths 331 5.8009252e-07 insert K_20width:InterpolationWidths 332 1.1328928e-06 insert K_20width:InterpolationWidths 333 2.2556638e-06 insert K_20width:InterpolationWidths 334 5.2553155e-06 insert K_20width:InterpolationWidths 335 1.4012862e-05 insert K_20width:InterpolationWidths 336 3.2739909e-05 insert K_20width:InterpolationWidths 337 6.4891749e-05 insert K_20width:InterpolationWidths 338 0.00011352649 insert K_20width:InterpolationWidths 339 0.00018148502 insert K_20width:InterpolationWidths 340 0.00027147302 insert K_20width:InterpolationWidths 341 0.00038613894 insert K_20width:InterpolationWidths 342 0.00052804554 insert K_20width:InterpolationWidths 343 0.00069975404 insert K_20width:InterpolationWidths 344 0.00090377167 insert K_20width:InterpolationWidths 345 0.0011426763 insert K_20width:InterpolationWidths 346 0.00141886 insert K_20width:InterpolationWidths 347 0.0017348119 insert K_20width:InterpolationWidths 348 0.0020929957 insert K_20width:InterpolationWidths 349 0.0024958814 insert K_20width:InterpolationWidths 350 0.0029459504 insert K_20width:InterpolationWidths 351 0.0034456991 insert K_20width:InterpolationWidths 352 0.0039976417 insert K_20width:InterpolationWidths 353 0.0046043125 insert K_20width:InterpolationWidths 354 0.0052682685 insert K_20width:InterpolationWidths 355 0.0059920904 insert K_20width:InterpolationWidths 356 0.0067783848 insert K_20width:InterpolationWidths 357 0.0076297852 insert K_20width:InterpolationWidths 358 0.0085489533 insert K_20width:InterpolationWidths 359 0.0095385799 insert K_20width:InterpolationWidths 360 0.010601386 insert K_20width:InterpolationWidths 361 0.011740124 insert K_20width:InterpolationWidths 362 0.012957578 insert K_20width:InterpolationWidths 363 0.014256564 insert K_20width:InterpolationWidths 364 0.015640526 insert K_20width:InterpolationWidths 365 0.017110151 insert K_20width:InterpolationWidths 366 0.01867093 insert K_20width:InterpolationWidths 367 0.020324842 insert K_20width:InterpolationWidths 368 0.022074877 insert K_20width:InterpolationWidths 369 0.02392406 insert K_20width:InterpolationWidths 370 0.025876085 insert K_20width:InterpolationWidths 371 0.027932834 insert K_20width:InterpolationWidths 372 0.030098028 insert K_20width:InterpolationWidths 373 0.032374839 insert K_20width:InterpolationWidths 374 0.034766479 insert K_20width:InterpolationWidths 375 0.037276197 insert K_20width:InterpolationWidths 376 0.039907283 insert K_20width:InterpolationWidths 377 0.042663063 insert K_20width:InterpolationWidths 378 6.1988313e-05 insert K_20width:InterpolationWidths 379 7.3431588e-05 insert K_20width:InterpolationWidths 380 8.6881727e-05 insert K_20width:InterpolationWidths 381 0.00010269063 insert K_20width:InterpolationWidths 382 0.00012127202 insert K_20width:InterpolationWidths 383 0.00014311002 insert K_20width:InterpolationWidths 384 0.00016876675 insert K_20width:InterpolationWidths 385 0.00019888815 insert K_20width:InterpolationWidths 386 0.0002342067 insert K_20width:InterpolationWidths 387 0.00027554057 insert K_20width:InterpolationWidths 388 0.00032378919 insert K_20width:InterpolationWidths 389 0.00037992617 insert K_20width:InterpolationWidths 390 0.00044499074 insert K_20width:InterpolationWidths 391 0.00052007908 insert K_20width:InterpolationWidths 392 0.00060633638 insert K_20width:InterpolationWidths 393 0.00070495013 insert K_20width:InterpolationWidths 394 0.00081714478 insert K_20width:InterpolationWidths 395 0.0009441777 insert K_20width:InterpolationWidths 396 0.0010873361 insert K_20width:InterpolationWidths 397 0.0012479351 insert K_20width:InterpolationWidths 398 0.0014273158 insert K_20width:InterpolationWidths 399 0.0016268449 insert K_20width:InterpolationWidths 400 0.0018479136 insert K_20width:InterpolationWidths 401 0.0020919376 insert K_20width:InterpolationWidths 402 0.0023603564 insert K_20width:InterpolationWidths 403 0.0026546342 insert K_20width:InterpolationWidths 404 0.0029762592 insert K_20width:InterpolationWidths 405 0.0033267438 insert K_20width:InterpolationWidths 406 0.0037076254 insert K_20width:InterpolationWidths 407 0.004120466 insert K_20width:InterpolationWidths 408 0.004566853 insert K_20width:InterpolationWidths 409 0.0050483989 insert K_20width:InterpolationWidths 410 0.0055667421 insert K_20width:InterpolationWidths 411 0.0061235471 insert K_20width:InterpolationWidths 412 0.0067205044 insert K_20width:InterpolationWidths 413 0.0073593312 insert K_20width:InterpolationWidths 414 0.0080417717 insert K_20width:InterpolationWidths 415 0.0087695972 insert K_20width:InterpolationWidths 416 0.0095446064 insert K_20width:InterpolationWidths 417 0.010368626 insert K_20width:InterpolationWidths 418 0.01124351 insert K_20width:InterpolationWidths 419 0.012171141 insert K_20width:InterpolationWidths 420 0.013153431 insert K_20width:InterpolationWidths 421 0.01419232 insert K_20width:InterpolationWidths 422 0.015289778 insert K_20width:InterpolationWidths 423 0.016447802 insert K_20width:InterpolationWidths 424 0.017668421 insert K_20width:InterpolationWidths 425 0.018953693 insert K_20width:InterpolationWidths 426 0.020305706 insert K_20width:InterpolationWidths 427 0.02172658 insert K_20width:InterpolationWidths 428 0.023218462 insert K_20width:InterpolationWidths 429 0.024783533 insert K_20width:InterpolationWidths 430 0.026424004 insert K_20width:InterpolationWidths 431 0.028142117 insert K_20width:NumberofEntries 0 54 insert K_20width:NumberofEntries 1 108 insert K_20width:NumberofEntries 2 162 insert K_20width:NumberofEntries 3 162 insert K_20width:NumberofEntries 4 216 insert K_20width:NumberofEntries 5 270 insert K_20width:NumberofEntries 6 324 insert K_20width:NumberofEntries 7 378 insert K_20width:NumberofEntries 8 378 insert K_20width:NumberofEntries 9 432 newdef /Herwig/Particles/K*_20:Width_generator K_20width newdef /Herwig/Particles/K*_2bar0:Width_generator K_20width # create Herwig::GenericWidthGenerator b_1+width newdef b_1+width:Particle /Herwig/Particles/b_1+ newdef b_1+width:Prefactor 1.00154 newdef b_1+width:BRNormalize 1 newdef b_1+width:BRMinimum 0.01 newdef b_1+width:Points 50 newdef b_1+width:InterpolationOrder 1 insert b_1+width:MEtype 0 2 insert b_1+width:MEtype 1 1 insert b_1+width:MEcode 0 0 insert b_1+width:MEcode 1 4 insert b_1+width:MEcoupling 0 1.00716 insert b_1+width:MEcoupling 1 0.240713 insert b_1+width:ModeOn 0 1 insert b_1+width:ModeOn 1 0 insert b_1+width:MinimumMasses 0 0.83732 insert b_1+width:MinimumMasses 1 0.13957 insert b_1+width:MEmass1 0 0.78265 insert b_1+width:MEmass1 1 0 insert b_1+width:MEmass2 0 0.13957 insert b_1+width:MEmass2 1 0.13957 insert b_1+width:DecayModes 0 b_1+->omega,pi+; insert b_1+width:DecayModes 1 b_1+->pi+,gamma; insert b_1+width:InterpolationMasses 0 0.88827551 insert b_1+width:InterpolationMasses 1 0.90888776 insert b_1+width:InterpolationMasses 2 0.9295 insert b_1+width:InterpolationMasses 3 0.95011224 insert b_1+width:InterpolationMasses 4 0.97072449 insert b_1+width:InterpolationMasses 5 0.99133673 insert b_1+width:InterpolationMasses 6 1.011949 insert b_1+width:InterpolationMasses 7 1.0325612 insert b_1+width:InterpolationMasses 8 1.0531735 insert b_1+width:InterpolationMasses 9 1.0737857 insert b_1+width:InterpolationMasses 10 1.094398 insert b_1+width:InterpolationMasses 11 1.1150102 insert b_1+width:InterpolationMasses 12 1.1356224 insert b_1+width:InterpolationMasses 13 1.1562347 insert b_1+width:InterpolationMasses 14 1.1768469 insert b_1+width:InterpolationMasses 15 1.1974592 insert b_1+width:InterpolationMasses 16 1.2180714 insert b_1+width:InterpolationMasses 17 1.2386837 insert b_1+width:InterpolationMasses 18 1.2592959 insert b_1+width:InterpolationMasses 19 1.2799082 insert b_1+width:InterpolationMasses 20 1.3005204 insert b_1+width:InterpolationMasses 21 1.3211327 insert b_1+width:InterpolationMasses 22 1.3417449 insert b_1+width:InterpolationMasses 23 1.3623571 insert b_1+width:InterpolationMasses 24 1.3829694 insert b_1+width:InterpolationMasses 25 1.4035816 insert b_1+width:InterpolationMasses 26 1.4241939 insert b_1+width:InterpolationMasses 27 1.4448061 insert b_1+width:InterpolationMasses 28 1.4654184 insert b_1+width:InterpolationMasses 29 1.4860306 insert b_1+width:InterpolationMasses 30 1.5066429 insert b_1+width:InterpolationMasses 31 1.5272551 insert b_1+width:InterpolationMasses 32 1.5478673 insert b_1+width:InterpolationMasses 33 1.5684796 insert b_1+width:InterpolationMasses 34 1.5890918 insert b_1+width:InterpolationMasses 35 1.6097041 insert b_1+width:InterpolationMasses 36 1.6303163 insert b_1+width:InterpolationMasses 37 1.6509286 insert b_1+width:InterpolationMasses 38 1.6715408 insert b_1+width:InterpolationMasses 39 1.6921531 insert b_1+width:InterpolationMasses 40 1.7127653 insert b_1+width:InterpolationMasses 41 1.7333776 insert b_1+width:InterpolationMasses 42 1.7539898 insert b_1+width:InterpolationMasses 43 1.774602 insert b_1+width:InterpolationMasses 44 1.7952143 insert b_1+width:InterpolationMasses 45 1.8158265 insert b_1+width:InterpolationMasses 46 1.8364388 insert b_1+width:InterpolationMasses 47 1.857051 insert b_1+width:InterpolationMasses 48 1.8776633 insert b_1+width:InterpolationMasses 49 1.8982755 insert b_1+width:InterpolationMasses 50 1.9188878 insert b_1+width:InterpolationMasses 51 1.9395 insert b_1+width:InterpolationMasses 52 1.9601122 insert b_1+width:InterpolationMasses 53 1.9807245 insert b_1+width:InterpolationWidths 0 0.00018030763 insert b_1+width:InterpolationWidths 1 0.00085503295 insert b_1+width:InterpolationWidths 2 0.012814181 insert b_1+width:InterpolationWidths 3 0.027811827 insert b_1+width:InterpolationWidths 4 0.039018445 insert b_1+width:InterpolationWidths 5 0.048881117 insert b_1+width:InterpolationWidths 6 0.058061693 insert b_1+width:InterpolationWidths 7 0.066566267 insert b_1+width:InterpolationWidths 8 0.07469497 insert b_1+width:InterpolationWidths 9 0.082602141 insert b_1+width:InterpolationWidths 10 0.090373226 insert b_1+width:InterpolationWidths 11 0.098064527 insert b_1+width:InterpolationWidths 12 0.10571626 insert b_1+width:InterpolationWidths 13 0.11335871 insert b_1+width:InterpolationWidths 14 0.12101565 insert b_1+width:InterpolationWidths 15 0.1287063 insert b_1+width:InterpolationWidths 16 0.13644665 insert b_1+width:InterpolationWidths 17 0.14425025 insert b_1+width:InterpolationWidths 18 0.15212884 insert b_1+width:InterpolationWidths 19 0.16009273 insert b_1+width:InterpolationWidths 20 0.16815108 insert b_1+width:InterpolationWidths 21 0.17631218 insert b_1+width:InterpolationWidths 22 0.18458355 insert b_1+width:InterpolationWidths 23 0.19297212 insert b_1+width:InterpolationWidths 24 0.2014843 insert b_1+width:InterpolationWidths 25 0.21012608 insert b_1+width:InterpolationWidths 26 0.21890308 insert b_1+width:InterpolationWidths 27 0.2278206 insert b_1+width:InterpolationWidths 28 0.23688368 insert b_1+width:InterpolationWidths 29 0.24609714 insert b_1+width:InterpolationWidths 30 0.25546556 insert b_1+width:InterpolationWidths 31 0.26499338 insert b_1+width:InterpolationWidths 32 0.27468485 insert b_1+width:InterpolationWidths 33 0.28454408 insert b_1+width:InterpolationWidths 34 0.29457509 insert b_1+width:InterpolationWidths 35 0.30478175 insert b_1+width:InterpolationWidths 36 0.31516785 insert b_1+width:InterpolationWidths 37 0.32573708 insert b_1+width:InterpolationWidths 38 0.33649305 insert b_1+width:InterpolationWidths 39 0.3474393 insert b_1+width:InterpolationWidths 40 0.35857931 insert b_1+width:InterpolationWidths 41 0.36991648 insert b_1+width:InterpolationWidths 42 0.38145416 insert b_1+width:InterpolationWidths 43 0.39319567 insert b_1+width:InterpolationWidths 44 0.40514425 insert b_1+width:InterpolationWidths 45 0.41730313 insert b_1+width:InterpolationWidths 46 0.42967548 insert b_1+width:InterpolationWidths 47 0.44226443 insert b_1+width:InterpolationWidths 48 0.4550731 insert b_1+width:InterpolationWidths 49 0.46810456 insert b_1+width:InterpolationWidths 50 0.48136185 insert b_1+width:InterpolationWidths 51 0.49484799 insert b_1+width:InterpolationWidths 52 0.50856598 insert b_1+width:InterpolationWidths 53 0.5225188 insert b_1+width:NumberofEntries 0 54 insert b_1+width:NumberofEntries 1 54 newdef /Herwig/Particles/b_1+:Width_generator b_1+width newdef /Herwig/Particles/b_1-:Width_generator b_1+width # create Herwig::GenericWidthGenerator h'_1width newdef h'_1width:Particle /Herwig/Particles/h'_1 newdef h'_1width:Prefactor 0.992115 newdef h'_1width:BRNormalize 1 newdef h'_1width:BRMinimum 0.01 newdef h'_1width:Points 50 newdef h'_1width:InterpolationOrder 1 insert h'_1width:MEtype 0 2 insert h'_1width:MEtype 1 2 insert h'_1width:MEtype 2 2 insert h'_1width:MEtype 3 2 insert h'_1width:MEcode 0 0 insert h'_1width:MEcode 1 0 insert h'_1width:MEcode 2 0 insert h'_1width:MEcode 3 0 insert h'_1width:MEcoupling 0 0.936691 insert h'_1width:MEcoupling 1 0.936691 insert h'_1width:MEcoupling 2 0.932155 insert h'_1width:MEcoupling 3 0.932155 insert h'_1width:ModeOn 0 1 insert h'_1width:ModeOn 1 1 insert h'_1width:ModeOn 2 1 insert h'_1width:ModeOn 3 1 insert h'_1width:MinimumMasses 0 1.13534 insert h'_1width:MinimumMasses 1 1.13534 insert h'_1width:MinimumMasses 2 1.14365 insert h'_1width:MinimumMasses 3 1.14365 insert h'_1width:MEmass1 0 0.89166 insert h'_1width:MEmass1 1 0.89166 insert h'_1width:MEmass1 2 0.896 insert h'_1width:MEmass1 3 0.896 insert h'_1width:MEmass2 0 0.493677 insert h'_1width:MEmass2 1 0.493677 insert h'_1width:MEmass2 2 0.497648 insert h'_1width:MEmass2 3 0.497648 insert h'_1width:DecayModes 0 h'_1->K*+,K-; insert h'_1width:DecayModes 1 h'_1->K*-,K+; insert h'_1width:DecayModes 2 h'_1->K*0,Kbar0; insert h'_1width:DecayModes 3 h'_1->K*bar0,K0; insert h'_1width:InterpolationMasses 0 1.1891429 insert h'_1width:InterpolationMasses 1 1.1965714 insert h'_1width:InterpolationMasses 2 1.204 insert h'_1width:InterpolationMasses 3 1.2114286 insert h'_1width:InterpolationMasses 4 1.2188571 insert h'_1width:InterpolationMasses 5 1.2262857 insert h'_1width:InterpolationMasses 6 1.2337143 insert h'_1width:InterpolationMasses 7 1.2411429 insert h'_1width:InterpolationMasses 8 1.2485714 insert h'_1width:InterpolationMasses 9 1.256 insert h'_1width:InterpolationMasses 10 1.2634286 insert h'_1width:InterpolationMasses 11 1.2708571 insert h'_1width:InterpolationMasses 12 1.2782857 insert h'_1width:InterpolationMasses 13 1.2857143 insert h'_1width:InterpolationMasses 14 1.2931429 insert h'_1width:InterpolationMasses 15 1.3005714 insert h'_1width:InterpolationMasses 16 1.308 insert h'_1width:InterpolationMasses 17 1.3154286 insert h'_1width:InterpolationMasses 18 1.3228571 insert h'_1width:InterpolationMasses 19 1.3302857 insert h'_1width:InterpolationMasses 20 1.3377143 insert h'_1width:InterpolationMasses 21 1.3451429 insert h'_1width:InterpolationMasses 22 1.3525714 insert h'_1width:InterpolationMasses 23 1.36 insert h'_1width:InterpolationMasses 24 1.3674286 insert h'_1width:InterpolationMasses 25 1.3748571 insert h'_1width:InterpolationMasses 26 1.3822857 insert h'_1width:InterpolationMasses 27 1.3897143 insert h'_1width:InterpolationMasses 28 1.3971429 insert h'_1width:InterpolationMasses 29 1.4045714 insert h'_1width:InterpolationMasses 30 1.412 insert h'_1width:InterpolationMasses 31 1.4194286 insert h'_1width:InterpolationMasses 32 1.4268571 insert h'_1width:InterpolationMasses 33 1.4342857 insert h'_1width:InterpolationMasses 34 1.4417143 insert h'_1width:InterpolationMasses 35 1.4491429 insert h'_1width:InterpolationMasses 36 1.4565714 insert h'_1width:InterpolationMasses 37 1.464 insert h'_1width:InterpolationMasses 38 1.4714286 insert h'_1width:InterpolationMasses 39 1.4788571 insert h'_1width:InterpolationMasses 40 1.4862857 insert h'_1width:InterpolationMasses 41 1.4937143 insert h'_1width:InterpolationMasses 42 1.5011429 insert h'_1width:InterpolationMasses 43 1.5085714 insert h'_1width:InterpolationMasses 44 1.516 insert h'_1width:InterpolationMasses 45 1.5234286 insert h'_1width:InterpolationMasses 46 1.5308571 insert h'_1width:InterpolationMasses 47 1.5382857 insert h'_1width:InterpolationMasses 48 1.5457143 insert h'_1width:InterpolationMasses 49 1.5531429 insert h'_1width:InterpolationMasses 50 1.5605714 insert h'_1width:InterpolationMasses 51 1.568 insert h'_1width:InterpolationMasses 52 1.5754286 insert h'_1width:InterpolationMasses 53 1.5828571 insert h'_1width:InterpolationMasses 54 1.1891429 insert h'_1width:InterpolationMasses 55 1.1965714 insert h'_1width:InterpolationMasses 56 1.204 insert h'_1width:InterpolationMasses 57 1.2114286 insert h'_1width:InterpolationMasses 58 1.2188571 insert h'_1width:InterpolationMasses 59 1.2262857 insert h'_1width:InterpolationMasses 60 1.2337143 insert h'_1width:InterpolationMasses 61 1.2411429 insert h'_1width:InterpolationMasses 62 1.2485714 insert h'_1width:InterpolationMasses 63 1.256 insert h'_1width:InterpolationMasses 64 1.2634286 insert h'_1width:InterpolationMasses 65 1.2708571 insert h'_1width:InterpolationMasses 66 1.2782857 insert h'_1width:InterpolationMasses 67 1.2857143 insert h'_1width:InterpolationMasses 68 1.2931429 insert h'_1width:InterpolationMasses 69 1.3005714 insert h'_1width:InterpolationMasses 70 1.308 insert h'_1width:InterpolationMasses 71 1.3154286 insert h'_1width:InterpolationMasses 72 1.3228571 insert h'_1width:InterpolationMasses 73 1.3302857 insert h'_1width:InterpolationMasses 74 1.3377143 insert h'_1width:InterpolationMasses 75 1.3451429 insert h'_1width:InterpolationMasses 76 1.3525714 insert h'_1width:InterpolationMasses 77 1.36 insert h'_1width:InterpolationMasses 78 1.3674286 insert h'_1width:InterpolationMasses 79 1.3748571 insert h'_1width:InterpolationMasses 80 1.3822857 insert h'_1width:InterpolationMasses 81 1.3897143 insert h'_1width:InterpolationMasses 82 1.3971429 insert h'_1width:InterpolationMasses 83 1.4045714 insert h'_1width:InterpolationMasses 84 1.412 insert h'_1width:InterpolationMasses 85 1.4194286 insert h'_1width:InterpolationMasses 86 1.4268571 insert h'_1width:InterpolationMasses 87 1.4342857 insert h'_1width:InterpolationMasses 88 1.4417143 insert h'_1width:InterpolationMasses 89 1.4491429 insert h'_1width:InterpolationMasses 90 1.4565714 insert h'_1width:InterpolationMasses 91 1.464 insert h'_1width:InterpolationMasses 92 1.4714286 insert h'_1width:InterpolationMasses 93 1.4788571 insert h'_1width:InterpolationMasses 94 1.4862857 insert h'_1width:InterpolationMasses 95 1.4937143 insert h'_1width:InterpolationMasses 96 1.5011429 insert h'_1width:InterpolationMasses 97 1.5085714 insert h'_1width:InterpolationMasses 98 1.516 insert h'_1width:InterpolationMasses 99 1.5234286 insert h'_1width:InterpolationMasses 100 1.5308571 insert h'_1width:InterpolationMasses 101 1.5382857 insert h'_1width:InterpolationMasses 102 1.5457143 insert h'_1width:InterpolationMasses 103 1.5531429 insert h'_1width:InterpolationMasses 104 1.5605714 insert h'_1width:InterpolationMasses 105 1.568 insert h'_1width:InterpolationMasses 106 1.5754286 insert h'_1width:InterpolationMasses 107 1.5828571 insert h'_1width:InterpolationMasses 108 1.1891429 insert h'_1width:InterpolationMasses 109 1.1965714 insert h'_1width:InterpolationMasses 110 1.204 insert h'_1width:InterpolationMasses 111 1.2114286 insert h'_1width:InterpolationMasses 112 1.2188571 insert h'_1width:InterpolationMasses 113 1.2262857 insert h'_1width:InterpolationMasses 114 1.2337143 insert h'_1width:InterpolationMasses 115 1.2411429 insert h'_1width:InterpolationMasses 116 1.2485714 insert h'_1width:InterpolationMasses 117 1.256 insert h'_1width:InterpolationMasses 118 1.2634286 insert h'_1width:InterpolationMasses 119 1.2708571 insert h'_1width:InterpolationMasses 120 1.2782857 insert h'_1width:InterpolationMasses 121 1.2857143 insert h'_1width:InterpolationMasses 122 1.2931429 insert h'_1width:InterpolationMasses 123 1.3005714 insert h'_1width:InterpolationMasses 124 1.308 insert h'_1width:InterpolationMasses 125 1.3154286 insert h'_1width:InterpolationMasses 126 1.3228571 insert h'_1width:InterpolationMasses 127 1.3302857 insert h'_1width:InterpolationMasses 128 1.3377143 insert h'_1width:InterpolationMasses 129 1.3451429 insert h'_1width:InterpolationMasses 130 1.3525714 insert h'_1width:InterpolationMasses 131 1.36 insert h'_1width:InterpolationMasses 132 1.3674286 insert h'_1width:InterpolationMasses 133 1.3748571 insert h'_1width:InterpolationMasses 134 1.3822857 insert h'_1width:InterpolationMasses 135 1.3897143 insert h'_1width:InterpolationMasses 136 1.3971429 insert h'_1width:InterpolationMasses 137 1.4045714 insert h'_1width:InterpolationMasses 138 1.412 insert h'_1width:InterpolationMasses 139 1.4194286 insert h'_1width:InterpolationMasses 140 1.4268571 insert h'_1width:InterpolationMasses 141 1.4342857 insert h'_1width:InterpolationMasses 142 1.4417143 insert h'_1width:InterpolationMasses 143 1.4491429 insert h'_1width:InterpolationMasses 144 1.4565714 insert h'_1width:InterpolationMasses 145 1.464 insert h'_1width:InterpolationMasses 146 1.4714286 insert h'_1width:InterpolationMasses 147 1.4788571 insert h'_1width:InterpolationMasses 148 1.4862857 insert h'_1width:InterpolationMasses 149 1.4937143 insert h'_1width:InterpolationMasses 150 1.5011429 insert h'_1width:InterpolationMasses 151 1.5085714 insert h'_1width:InterpolationMasses 152 1.516 insert h'_1width:InterpolationMasses 153 1.5234286 insert h'_1width:InterpolationMasses 154 1.5308571 insert h'_1width:InterpolationMasses 155 1.5382857 insert h'_1width:InterpolationMasses 156 1.5457143 insert h'_1width:InterpolationMasses 157 1.5531429 insert h'_1width:InterpolationMasses 158 1.5605714 insert h'_1width:InterpolationMasses 159 1.568 insert h'_1width:InterpolationMasses 160 1.5754286 insert h'_1width:InterpolationMasses 161 1.5828571 insert h'_1width:InterpolationMasses 162 1.1891429 insert h'_1width:InterpolationMasses 163 1.1965714 insert h'_1width:InterpolationMasses 164 1.204 insert h'_1width:InterpolationMasses 165 1.2114286 insert h'_1width:InterpolationMasses 166 1.2188571 insert h'_1width:InterpolationMasses 167 1.2262857 insert h'_1width:InterpolationMasses 168 1.2337143 insert h'_1width:InterpolationMasses 169 1.2411429 insert h'_1width:InterpolationMasses 170 1.2485714 insert h'_1width:InterpolationMasses 171 1.256 insert h'_1width:InterpolationMasses 172 1.2634286 insert h'_1width:InterpolationMasses 173 1.2708571 insert h'_1width:InterpolationMasses 174 1.2782857 insert h'_1width:InterpolationMasses 175 1.2857143 insert h'_1width:InterpolationMasses 176 1.2931429 insert h'_1width:InterpolationMasses 177 1.3005714 insert h'_1width:InterpolationMasses 178 1.308 insert h'_1width:InterpolationMasses 179 1.3154286 insert h'_1width:InterpolationMasses 180 1.3228571 insert h'_1width:InterpolationMasses 181 1.3302857 insert h'_1width:InterpolationMasses 182 1.3377143 insert h'_1width:InterpolationMasses 183 1.3451429 insert h'_1width:InterpolationMasses 184 1.3525714 insert h'_1width:InterpolationMasses 185 1.36 insert h'_1width:InterpolationMasses 186 1.3674286 insert h'_1width:InterpolationMasses 187 1.3748571 insert h'_1width:InterpolationMasses 188 1.3822857 insert h'_1width:InterpolationMasses 189 1.3897143 insert h'_1width:InterpolationMasses 190 1.3971429 insert h'_1width:InterpolationMasses 191 1.4045714 insert h'_1width:InterpolationMasses 192 1.412 insert h'_1width:InterpolationMasses 193 1.4194286 insert h'_1width:InterpolationMasses 194 1.4268571 insert h'_1width:InterpolationMasses 195 1.4342857 insert h'_1width:InterpolationMasses 196 1.4417143 insert h'_1width:InterpolationMasses 197 1.4491429 insert h'_1width:InterpolationMasses 198 1.4565714 insert h'_1width:InterpolationMasses 199 1.464 insert h'_1width:InterpolationMasses 200 1.4714286 insert h'_1width:InterpolationMasses 201 1.4788571 insert h'_1width:InterpolationMasses 202 1.4862857 insert h'_1width:InterpolationMasses 203 1.4937143 insert h'_1width:InterpolationMasses 204 1.5011429 insert h'_1width:InterpolationMasses 205 1.5085714 insert h'_1width:InterpolationMasses 206 1.516 insert h'_1width:InterpolationMasses 207 1.5234286 insert h'_1width:InterpolationMasses 208 1.5308571 insert h'_1width:InterpolationMasses 209 1.5382857 insert h'_1width:InterpolationMasses 210 1.5457143 insert h'_1width:InterpolationMasses 211 1.5531429 insert h'_1width:InterpolationMasses 212 1.5605714 insert h'_1width:InterpolationMasses 213 1.568 insert h'_1width:InterpolationMasses 214 1.5754286 insert h'_1width:InterpolationMasses 215 1.5828571 insert h'_1width:InterpolationWidths 0 1.1445599e-05 insert h'_1width:InterpolationWidths 1 1.7392906e-05 insert h'_1width:InterpolationWidths 2 2.5534167e-05 insert h'_1width:InterpolationWidths 3 3.6466628e-05 insert h'_1width:InterpolationWidths 4 5.092557e-05 insert h'_1width:InterpolationWidths 5 6.9818199e-05 insert h'_1width:InterpolationWidths 6 9.4267278e-05 insert h'_1width:InterpolationWidths 7 0.00012566781 insert h'_1width:InterpolationWidths 8 0.00016576141 insert h'_1width:InterpolationWidths 9 0.00021673501 insert h'_1width:InterpolationWidths 10 0.00028135338 insert h'_1width:InterpolationWidths 11 0.00036313936 insert h'_1width:InterpolationWidths 12 0.00046662263 insert h'_1width:InterpolationWidths 13 0.00059768832 insert h'_1width:InterpolationWidths 14 0.00076407396 insert h'_1width:InterpolationWidths 15 0.00097609117 insert h'_1width:InterpolationWidths 16 0.0012476946 insert h'_1width:InterpolationWidths 17 0.001598099 insert h'_1width:InterpolationWidths 18 0.0020542783 insert h'_1width:InterpolationWidths 19 0.0026549081 insert h'_1width:InterpolationWidths 20 0.0034566807 insert h'_1width:InterpolationWidths 21 0.0045444443 insert h'_1width:InterpolationWidths 22 0.0060469593 insert h'_1width:InterpolationWidths 23 0.0081591431 insert h'_1width:InterpolationWidths 24 0.011154526 insert h'_1width:InterpolationWidths 25 0.015359169 insert h'_1width:InterpolationWidths 26 0.020978487 insert h'_1width:InterpolationWidths 27 0.027861302 insert h'_1width:InterpolationWidths 28 0.035525927 insert h'_1width:InterpolationWidths 29 0.043479478 insert h'_1width:InterpolationWidths 30 0.051414165 insert h'_1width:InterpolationWidths 31 0.059188484 insert h'_1width:InterpolationWidths 32 0.066753322 insert h'_1width:InterpolationWidths 33 0.074106042 insert h'_1width:InterpolationWidths 34 0.081258806 insert h'_1width:InterpolationWidths 35 0.088230702 insert h'_1width:InterpolationWidths 36 0.095041807 insert h'_1width:InterpolationWidths 37 0.10171114 insert h'_1width:InterpolationWidths 38 0.10825594 insert h'_1width:InterpolationWidths 39 0.11469156 insert h'_1width:InterpolationWidths 40 0.1210315 insert h'_1width:InterpolationWidths 41 0.12728767 insert h'_1width:InterpolationWidths 42 0.13347053 insert h'_1width:InterpolationWidths 43 0.13958838 insert h'_1width:InterpolationWidths 44 0.14565116 insert h'_1width:InterpolationWidths 45 0.15166531 insert h'_1width:InterpolationWidths 46 0.15763728 insert h'_1width:InterpolationWidths 47 0.16357289 insert h'_1width:InterpolationWidths 48 0.16947735 insert h'_1width:InterpolationWidths 49 0.17535535 insert h'_1width:InterpolationWidths 50 0.18121116 insert h'_1width:InterpolationWidths 51 0.18704865 insert h'_1width:InterpolationWidths 52 0.19287135 insert h'_1width:InterpolationWidths 53 0.19868251 insert h'_1width:InterpolationWidths 54 1.1445599e-05 insert h'_1width:InterpolationWidths 55 1.7392906e-05 insert h'_1width:InterpolationWidths 56 2.5534167e-05 insert h'_1width:InterpolationWidths 57 3.6466628e-05 insert h'_1width:InterpolationWidths 58 5.092557e-05 insert h'_1width:InterpolationWidths 59 6.9818199e-05 insert h'_1width:InterpolationWidths 60 9.4267278e-05 insert h'_1width:InterpolationWidths 61 0.00012566781 insert h'_1width:InterpolationWidths 62 0.00016576141 insert h'_1width:InterpolationWidths 63 0.00021673501 insert h'_1width:InterpolationWidths 64 0.00028135338 insert h'_1width:InterpolationWidths 65 0.00036313936 insert h'_1width:InterpolationWidths 66 0.00046662263 insert h'_1width:InterpolationWidths 67 0.00059768832 insert h'_1width:InterpolationWidths 68 0.00076407396 insert h'_1width:InterpolationWidths 69 0.00097609117 insert h'_1width:InterpolationWidths 70 0.0012476946 insert h'_1width:InterpolationWidths 71 0.001598099 insert h'_1width:InterpolationWidths 72 0.0020542783 insert h'_1width:InterpolationWidths 73 0.0026549081 insert h'_1width:InterpolationWidths 74 0.0034566807 insert h'_1width:InterpolationWidths 75 0.0045444443 insert h'_1width:InterpolationWidths 76 0.0060469593 insert h'_1width:InterpolationWidths 77 0.0081591431 insert h'_1width:InterpolationWidths 78 0.011154526 insert h'_1width:InterpolationWidths 79 0.015359169 insert h'_1width:InterpolationWidths 80 0.020978487 insert h'_1width:InterpolationWidths 81 0.027861302 insert h'_1width:InterpolationWidths 82 0.035525927 insert h'_1width:InterpolationWidths 83 0.043479478 insert h'_1width:InterpolationWidths 84 0.051414165 insert h'_1width:InterpolationWidths 85 0.059188484 insert h'_1width:InterpolationWidths 86 0.066753322 insert h'_1width:InterpolationWidths 87 0.074106042 insert h'_1width:InterpolationWidths 88 0.081258806 insert h'_1width:InterpolationWidths 89 0.088230702 insert h'_1width:InterpolationWidths 90 0.095041807 insert h'_1width:InterpolationWidths 91 0.10171114 insert h'_1width:InterpolationWidths 92 0.10825594 insert h'_1width:InterpolationWidths 93 0.11469156 insert h'_1width:InterpolationWidths 94 0.1210315 insert h'_1width:InterpolationWidths 95 0.12728767 insert h'_1width:InterpolationWidths 96 0.13347053 insert h'_1width:InterpolationWidths 97 0.13958838 insert h'_1width:InterpolationWidths 98 0.14565116 insert h'_1width:InterpolationWidths 99 0.15166531 insert h'_1width:InterpolationWidths 100 0.15763728 insert h'_1width:InterpolationWidths 101 0.16357289 insert h'_1width:InterpolationWidths 102 0.16947735 insert h'_1width:InterpolationWidths 103 0.17535535 insert h'_1width:InterpolationWidths 104 0.18121116 insert h'_1width:InterpolationWidths 105 0.18704865 insert h'_1width:InterpolationWidths 106 0.19287135 insert h'_1width:InterpolationWidths 107 0.19868251 insert h'_1width:InterpolationWidths 108 1.1916817e-05 insert h'_1width:InterpolationWidths 109 1.8496528e-05 insert h'_1width:InterpolationWidths 110 2.757275e-05 insert h'_1width:InterpolationWidths 111 3.9825628e-05 insert h'_1width:InterpolationWidths 112 5.6088655e-05 insert h'_1width:InterpolationWidths 113 7.7384806e-05 insert h'_1width:InterpolationWidths 114 0.00010497259 insert h'_1width:InterpolationWidths 115 0.00014040524 insert h'_1width:InterpolationWidths 116 0.0001856075 insert h'_1width:InterpolationWidths 117 0.00024297616 insert h'_1width:InterpolationWidths 118 0.00031551324 insert h'_1width:InterpolationWidths 119 0.00040700445 insert h'_1width:InterpolationWidths 120 0.00052226143 insert h'_1width:InterpolationWidths 121 0.00066745527 insert h'_1width:InterpolationWidths 122 0.00085058292 insert h'_1width:InterpolationWidths 123 0.0010821304 insert h'_1width:InterpolationWidths 124 0.0013760338 insert h'_1width:InterpolationWidths 125 0.0017510982 insert h'_1width:InterpolationWidths 126 0.0022331408 insert h'_1width:InterpolationWidths 127 0.0028582942 insert h'_1width:InterpolationWidths 128 0.0036782118 insert h'_1width:InterpolationWidths 129 0.004768408 insert h'_1width:InterpolationWidths 130 0.0062417038 insert h'_1width:InterpolationWidths 131 0.0082693902 insert h'_1width:InterpolationWidths 132 0.011111172 insert h'_1width:InterpolationWidths 133 0.015142582 insert h'_1width:InterpolationWidths 134 0.020824543 insert h'_1width:InterpolationWidths 135 0.028497105 insert h'_1width:InterpolationWidths 136 0.038024607 insert h'_1width:InterpolationWidths 137 0.04875396 insert h'_1width:InterpolationWidths 138 0.059957437 insert h'_1width:InterpolationWidths 139 0.071161232 insert h'_1width:InterpolationWidths 140 0.082142981 insert h'_1width:InterpolationWidths 141 0.09282395 insert h'_1width:InterpolationWidths 142 0.10319747 insert h'_1width:InterpolationWidths 143 0.11328041 insert h'_1width:InterpolationWidths 144 0.12310038 insert h'_1width:InterpolationWidths 145 0.13268659 insert h'_1width:InterpolationWidths 146 0.14206674 insert h'_1width:InterpolationWidths 147 0.15126594 insert h'_1width:InterpolationWidths 148 0.16030647 insert h'_1width:InterpolationWidths 149 0.16920794 insert h'_1width:InterpolationWidths 150 0.1779876 insert h'_1width:InterpolationWidths 151 0.18666056 insert h'_1width:InterpolationWidths 152 0.19523887 insert h'_1width:InterpolationWidths 153 0.20373675 insert h'_1width:InterpolationWidths 154 0.2121635 insert h'_1width:InterpolationWidths 155 0.22052843 insert h'_1width:InterpolationWidths 156 0.22883986 insert h'_1width:InterpolationWidths 157 0.23710528 insert h'_1width:InterpolationWidths 158 0.24533141 insert h'_1width:InterpolationWidths 159 0.25352436 insert h'_1width:InterpolationWidths 160 0.26168968 insert h'_1width:InterpolationWidths 161 0.2698324 insert h'_1width:InterpolationWidths 162 1.1916817e-05 insert h'_1width:InterpolationWidths 163 1.8496528e-05 insert h'_1width:InterpolationWidths 164 2.757275e-05 insert h'_1width:InterpolationWidths 165 3.9825628e-05 insert h'_1width:InterpolationWidths 166 5.6088655e-05 insert h'_1width:InterpolationWidths 167 7.7384806e-05 insert h'_1width:InterpolationWidths 168 0.00010497259 insert h'_1width:InterpolationWidths 169 0.00014040524 insert h'_1width:InterpolationWidths 170 0.0001856075 insert h'_1width:InterpolationWidths 171 0.00024297616 insert h'_1width:InterpolationWidths 172 0.00031551324 insert h'_1width:InterpolationWidths 173 0.00040700445 insert h'_1width:InterpolationWidths 174 0.00052226143 insert h'_1width:InterpolationWidths 175 0.00066745527 insert h'_1width:InterpolationWidths 176 0.00085058292 insert h'_1width:InterpolationWidths 177 0.0010821304 insert h'_1width:InterpolationWidths 178 0.0013760338 insert h'_1width:InterpolationWidths 179 0.0017510982 insert h'_1width:InterpolationWidths 180 0.0022331408 insert h'_1width:InterpolationWidths 181 0.0028582942 insert h'_1width:InterpolationWidths 182 0.0036782118 insert h'_1width:InterpolationWidths 183 0.004768408 insert h'_1width:InterpolationWidths 184 0.0062417038 insert h'_1width:InterpolationWidths 185 0.0082693902 insert h'_1width:InterpolationWidths 186 0.011111172 insert h'_1width:InterpolationWidths 187 0.015142582 insert h'_1width:InterpolationWidths 188 0.020824543 insert h'_1width:InterpolationWidths 189 0.028497105 insert h'_1width:InterpolationWidths 190 0.038024607 insert h'_1width:InterpolationWidths 191 0.04875396 insert h'_1width:InterpolationWidths 192 0.059957437 insert h'_1width:InterpolationWidths 193 0.071161232 insert h'_1width:InterpolationWidths 194 0.082142981 insert h'_1width:InterpolationWidths 195 0.09282395 insert h'_1width:InterpolationWidths 196 0.10319747 insert h'_1width:InterpolationWidths 197 0.11328041 insert h'_1width:InterpolationWidths 198 0.12310038 insert h'_1width:InterpolationWidths 199 0.13268659 insert h'_1width:InterpolationWidths 200 0.14206674 insert h'_1width:InterpolationWidths 201 0.15126594 insert h'_1width:InterpolationWidths 202 0.16030647 insert h'_1width:InterpolationWidths 203 0.16920794 insert h'_1width:InterpolationWidths 204 0.1779876 insert h'_1width:InterpolationWidths 205 0.18666056 insert h'_1width:InterpolationWidths 206 0.19523887 insert h'_1width:InterpolationWidths 207 0.20373675 insert h'_1width:InterpolationWidths 208 0.2121635 insert h'_1width:InterpolationWidths 209 0.22052843 insert h'_1width:InterpolationWidths 210 0.22883986 insert h'_1width:InterpolationWidths 211 0.23710528 insert h'_1width:InterpolationWidths 212 0.24533141 insert h'_1width:InterpolationWidths 213 0.25352436 insert h'_1width:InterpolationWidths 214 0.26168968 insert h'_1width:InterpolationWidths 215 0.2698324 insert h'_1width:NumberofEntries 0 54 insert h'_1width:NumberofEntries 1 108 insert h'_1width:NumberofEntries 2 162 insert h'_1width:NumberofEntries 3 216 newdef /Herwig/Particles/h'_1:Width_generator h'_1width # create Herwig::GenericWidthGenerator eta'width newdef eta'width:Particle /Herwig/Particles/eta' newdef eta'width:Prefactor 1.00218 newdef eta'width:BRNormalize 1 newdef eta'width:BRMinimum 0.01 newdef eta'width:Points 50 newdef eta'width:InterpolationOrder 1 insert eta'width:MEtype 0 2 insert eta'width:MEtype 1 2 insert eta'width:MEtype 2 2 insert eta'width:MEtype 3 1 insert eta'width:MEtype 4 2 insert eta'width:MEtype 5 2 insert eta'width:MEtype 6 2 insert eta'width:MEtype 7 2 insert eta'width:MEcode 0 0 insert eta'width:MEcode 1 0 insert eta'width:MEcode 2 0 insert eta'width:MEcode 3 3 insert eta'width:MEcode 4 0 insert eta'width:MEcode 5 0 insert eta'width:MEcode 6 0 insert eta'width:MEcode 7 0 insert eta'width:MEcoupling 0 0.946616 insert eta'width:MEcoupling 1 0.93623 insert eta'width:MEcoupling 2 0.996705 insert eta'width:MEcoupling 3 0.0212536 insert eta'width:MEcoupling 4 0.996147 insert eta'width:MEcoupling 5 1.00727 insert eta'width:MEcoupling 6 1.02068 insert eta'width:MEcoupling 7 0.984041 insert eta'width:ModeOn 0 1 insert eta'width:ModeOn 1 1 insert eta'width:ModeOn 2 0 insert eta'width:ModeOn 3 1 insert eta'width:ModeOn 4 0 insert eta'width:ModeOn 5 1 insert eta'width:ModeOn 6 1 insert eta'width:ModeOn 7 0 insert eta'width:MinimumMasses 0 0.826637 insert eta'width:MinimumMasses 1 0.817452 insert eta'width:MinimumMasses 2 0.00102 insert eta'width:MinimumMasses 3 0 insert eta'width:MinimumMasses 4 0.21132 insert eta'width:MinimumMasses 5 0.69775 insert eta'width:MinimumMasses 6 0.27914 insert eta'width:MinimumMasses 7 0.404933 insert eta'width:MEmass1 0 0 insert eta'width:MEmass1 1 0 insert eta'width:MEmass1 2 0 insert eta'width:MEmass1 3 0 insert eta'width:MEmass1 4 0 insert eta'width:MEmass1 5 0.78265 insert eta'width:MEmass1 6 0 insert eta'width:MEmass1 7 0 insert eta'width:MEmass2 0 0 insert eta'width:MEmass2 1 0 insert eta'width:MEmass2 2 0 insert eta'width:MEmass2 3 0 insert eta'width:MEmass2 4 0 insert eta'width:MEmass2 5 0 insert eta'width:MEmass2 6 0 insert eta'width:MEmass2 7 0 insert eta'width:DecayModes 0 eta'->eta,pi+,pi-; insert eta'width:DecayModes 1 eta'->eta,pi0,pi0; insert eta'width:DecayModes 2 eta'->gamma,e-,e+; insert eta'width:DecayModes 3 eta'->gamma,gamma; insert eta'width:DecayModes 4 eta'->gamma,mu-,mu+; insert eta'width:DecayModes 5 eta'->omega,gamma; insert eta'width:DecayModes 6 eta'->pi+,pi-,gamma; insert eta'width:DecayModes 7 eta'->pi0,pi0,pi0; insert eta'width:InterpolationMasses 0 0.95575 insert eta'width:InterpolationMasses 1 0.95583286 insert eta'width:InterpolationMasses 2 0.95591571 insert eta'width:InterpolationMasses 3 0.95599857 insert eta'width:InterpolationMasses 4 0.95608143 insert eta'width:InterpolationMasses 5 0.95616429 insert eta'width:InterpolationMasses 6 0.95624714 insert eta'width:InterpolationMasses 7 0.95633 insert eta'width:InterpolationMasses 8 0.95641286 insert eta'width:InterpolationMasses 9 0.95649571 insert eta'width:InterpolationMasses 10 0.95657857 insert eta'width:InterpolationMasses 11 0.95666143 insert eta'width:InterpolationMasses 12 0.95674429 insert eta'width:InterpolationMasses 13 0.95682714 insert eta'width:InterpolationMasses 14 0.95691 insert eta'width:InterpolationMasses 15 0.95699286 insert eta'width:InterpolationMasses 16 0.95707571 insert eta'width:InterpolationMasses 17 0.95715857 insert eta'width:InterpolationMasses 18 0.95724143 insert eta'width:InterpolationMasses 19 0.95732429 insert eta'width:InterpolationMasses 20 0.95740714 insert eta'width:InterpolationMasses 21 0.95749 insert eta'width:InterpolationMasses 22 0.95757286 insert eta'width:InterpolationMasses 23 0.95765571 insert eta'width:InterpolationMasses 24 0.95773857 insert eta'width:InterpolationMasses 25 0.95782143 insert eta'width:InterpolationMasses 26 0.95790429 insert eta'width:InterpolationMasses 27 0.95798714 insert eta'width:InterpolationMasses 28 0.95807 insert eta'width:InterpolationMasses 29 0.95815286 insert eta'width:InterpolationMasses 30 0.95823571 insert eta'width:InterpolationMasses 31 0.95831857 insert eta'width:InterpolationMasses 32 0.95840143 insert eta'width:InterpolationMasses 33 0.95848429 insert eta'width:InterpolationMasses 34 0.95856714 insert eta'width:InterpolationMasses 35 0.95865 insert eta'width:InterpolationMasses 36 0.95873286 insert eta'width:InterpolationMasses 37 0.95881571 insert eta'width:InterpolationMasses 38 0.95889857 insert eta'width:InterpolationMasses 39 0.95898143 insert eta'width:InterpolationMasses 40 0.95906429 insert eta'width:InterpolationMasses 41 0.95914714 insert eta'width:InterpolationMasses 42 0.95923 insert eta'width:InterpolationMasses 43 0.95931286 insert eta'width:InterpolationMasses 44 0.95939571 insert eta'width:InterpolationMasses 45 0.95947857 insert eta'width:InterpolationMasses 46 0.95956143 insert eta'width:InterpolationMasses 47 0.95964429 insert eta'width:InterpolationMasses 48 0.95972714 insert eta'width:InterpolationMasses 49 0.95981 insert eta'width:InterpolationMasses 50 0.95575 insert eta'width:InterpolationMasses 51 0.95583286 insert eta'width:InterpolationMasses 52 0.95591571 insert eta'width:InterpolationMasses 53 0.95599857 insert eta'width:InterpolationMasses 54 0.95608143 insert eta'width:InterpolationMasses 55 0.95616429 insert eta'width:InterpolationMasses 56 0.95624714 insert eta'width:InterpolationMasses 57 0.95633 insert eta'width:InterpolationMasses 58 0.95641286 insert eta'width:InterpolationMasses 59 0.95649571 insert eta'width:InterpolationMasses 60 0.95657857 insert eta'width:InterpolationMasses 61 0.95666143 insert eta'width:InterpolationMasses 62 0.95674429 insert eta'width:InterpolationMasses 63 0.95682714 insert eta'width:InterpolationMasses 64 0.95691 insert eta'width:InterpolationMasses 65 0.95699286 insert eta'width:InterpolationMasses 66 0.95707571 insert eta'width:InterpolationMasses 67 0.95715857 insert eta'width:InterpolationMasses 68 0.95724143 insert eta'width:InterpolationMasses 69 0.95732429 insert eta'width:InterpolationMasses 70 0.95740714 insert eta'width:InterpolationMasses 71 0.95749 insert eta'width:InterpolationMasses 72 0.95757286 insert eta'width:InterpolationMasses 73 0.95765571 insert eta'width:InterpolationMasses 74 0.95773857 insert eta'width:InterpolationMasses 75 0.95782143 insert eta'width:InterpolationMasses 76 0.95790429 insert eta'width:InterpolationMasses 77 0.95798714 insert eta'width:InterpolationMasses 78 0.95807 insert eta'width:InterpolationMasses 79 0.95815286 insert eta'width:InterpolationMasses 80 0.95823571 insert eta'width:InterpolationMasses 81 0.95831857 insert eta'width:InterpolationMasses 82 0.95840143 insert eta'width:InterpolationMasses 83 0.95848429 insert eta'width:InterpolationMasses 84 0.95856714 insert eta'width:InterpolationMasses 85 0.95865 insert eta'width:InterpolationMasses 86 0.95873286 insert eta'width:InterpolationMasses 87 0.95881571 insert eta'width:InterpolationMasses 88 0.95889857 insert eta'width:InterpolationMasses 89 0.95898143 insert eta'width:InterpolationMasses 90 0.95906429 insert eta'width:InterpolationMasses 91 0.95914714 insert eta'width:InterpolationMasses 92 0.95923 insert eta'width:InterpolationMasses 93 0.95931286 insert eta'width:InterpolationMasses 94 0.95939571 insert eta'width:InterpolationMasses 95 0.95947857 insert eta'width:InterpolationMasses 96 0.95956143 insert eta'width:InterpolationMasses 97 0.95964429 insert eta'width:InterpolationMasses 98 0.95972714 insert eta'width:InterpolationMasses 99 0.95981 insert eta'width:InterpolationMasses 100 0.95575 insert eta'width:InterpolationMasses 101 0.95583286 insert eta'width:InterpolationMasses 102 0.95591571 insert eta'width:InterpolationMasses 103 0.95599857 insert eta'width:InterpolationMasses 104 0.95608143 insert eta'width:InterpolationMasses 105 0.95616429 insert eta'width:InterpolationMasses 106 0.95624714 insert eta'width:InterpolationMasses 107 0.95633 insert eta'width:InterpolationMasses 108 0.95641286 insert eta'width:InterpolationMasses 109 0.95649571 insert eta'width:InterpolationMasses 110 0.95657857 insert eta'width:InterpolationMasses 111 0.95666143 insert eta'width:InterpolationMasses 112 0.95674429 insert eta'width:InterpolationMasses 113 0.95682714 insert eta'width:InterpolationMasses 114 0.95691 insert eta'width:InterpolationMasses 115 0.95699286 insert eta'width:InterpolationMasses 116 0.95707571 insert eta'width:InterpolationMasses 117 0.95715857 insert eta'width:InterpolationMasses 118 0.95724143 insert eta'width:InterpolationMasses 119 0.95732429 insert eta'width:InterpolationMasses 120 0.95740714 insert eta'width:InterpolationMasses 121 0.95749 insert eta'width:InterpolationMasses 122 0.95757286 insert eta'width:InterpolationMasses 123 0.95765571 insert eta'width:InterpolationMasses 124 0.95773857 insert eta'width:InterpolationMasses 125 0.95782143 insert eta'width:InterpolationMasses 126 0.95790429 insert eta'width:InterpolationMasses 127 0.95798714 insert eta'width:InterpolationMasses 128 0.95807 insert eta'width:InterpolationMasses 129 0.95815286 insert eta'width:InterpolationMasses 130 0.95823571 insert eta'width:InterpolationMasses 131 0.95831857 insert eta'width:InterpolationMasses 132 0.95840143 insert eta'width:InterpolationMasses 133 0.95848429 insert eta'width:InterpolationMasses 134 0.95856714 insert eta'width:InterpolationMasses 135 0.95865 insert eta'width:InterpolationMasses 136 0.95873286 insert eta'width:InterpolationMasses 137 0.95881571 insert eta'width:InterpolationMasses 138 0.95889857 insert eta'width:InterpolationMasses 139 0.95898143 insert eta'width:InterpolationMasses 140 0.95906429 insert eta'width:InterpolationMasses 141 0.95914714 insert eta'width:InterpolationMasses 142 0.95923 insert eta'width:InterpolationMasses 143 0.95931286 insert eta'width:InterpolationMasses 144 0.95939571 insert eta'width:InterpolationMasses 145 0.95947857 insert eta'width:InterpolationMasses 146 0.95956143 insert eta'width:InterpolationMasses 147 0.95964429 insert eta'width:InterpolationMasses 148 0.95972714 insert eta'width:InterpolationMasses 149 0.95981 insert eta'width:InterpolationMasses 150 0.95575 insert eta'width:InterpolationMasses 151 0.95583286 insert eta'width:InterpolationMasses 152 0.95591571 insert eta'width:InterpolationMasses 153 0.95599857 insert eta'width:InterpolationMasses 154 0.95608143 insert eta'width:InterpolationMasses 155 0.95616429 insert eta'width:InterpolationMasses 156 0.95624714 insert eta'width:InterpolationMasses 157 0.95633 insert eta'width:InterpolationMasses 158 0.95641286 insert eta'width:InterpolationMasses 159 0.95649571 insert eta'width:InterpolationMasses 160 0.95657857 insert eta'width:InterpolationMasses 161 0.95666143 insert eta'width:InterpolationMasses 162 0.95674429 insert eta'width:InterpolationMasses 163 0.95682714 insert eta'width:InterpolationMasses 164 0.95691 insert eta'width:InterpolationMasses 165 0.95699286 insert eta'width:InterpolationMasses 166 0.95707571 insert eta'width:InterpolationMasses 167 0.95715857 insert eta'width:InterpolationMasses 168 0.95724143 insert eta'width:InterpolationMasses 169 0.95732429 insert eta'width:InterpolationMasses 170 0.95740714 insert eta'width:InterpolationMasses 171 0.95749 insert eta'width:InterpolationMasses 172 0.95757286 insert eta'width:InterpolationMasses 173 0.95765571 insert eta'width:InterpolationMasses 174 0.95773857 insert eta'width:InterpolationMasses 175 0.95782143 insert eta'width:InterpolationMasses 176 0.95790429 insert eta'width:InterpolationMasses 177 0.95798714 insert eta'width:InterpolationMasses 178 0.95807 insert eta'width:InterpolationMasses 179 0.95815286 insert eta'width:InterpolationMasses 180 0.95823571 insert eta'width:InterpolationMasses 181 0.95831857 insert eta'width:InterpolationMasses 182 0.95840143 insert eta'width:InterpolationMasses 183 0.95848429 insert eta'width:InterpolationMasses 184 0.95856714 insert eta'width:InterpolationMasses 185 0.95865 insert eta'width:InterpolationMasses 186 0.95873286 insert eta'width:InterpolationMasses 187 0.95881571 insert eta'width:InterpolationMasses 188 0.95889857 insert eta'width:InterpolationMasses 189 0.95898143 insert eta'width:InterpolationMasses 190 0.95906429 insert eta'width:InterpolationMasses 191 0.95914714 insert eta'width:InterpolationMasses 192 0.95923 insert eta'width:InterpolationMasses 193 0.95931286 insert eta'width:InterpolationMasses 194 0.95939571 insert eta'width:InterpolationMasses 195 0.95947857 insert eta'width:InterpolationMasses 196 0.95956143 insert eta'width:InterpolationMasses 197 0.95964429 insert eta'width:InterpolationMasses 198 0.95972714 insert eta'width:InterpolationMasses 199 0.95981 insert eta'width:InterpolationMasses 200 0.95558429 insert eta'width:InterpolationMasses 201 0.95566714 insert eta'width:InterpolationMasses 202 0.95575 insert eta'width:InterpolationMasses 203 0.95583286 insert eta'width:InterpolationMasses 204 0.95591571 insert eta'width:InterpolationMasses 205 0.95599857 insert eta'width:InterpolationMasses 206 0.95608143 insert eta'width:InterpolationMasses 207 0.95616429 insert eta'width:InterpolationMasses 208 0.95624714 insert eta'width:InterpolationMasses 209 0.95633 insert eta'width:InterpolationMasses 210 0.95641286 insert eta'width:InterpolationMasses 211 0.95649571 insert eta'width:InterpolationMasses 212 0.95657857 insert eta'width:InterpolationMasses 213 0.95666143 insert eta'width:InterpolationMasses 214 0.95674429 insert eta'width:InterpolationMasses 215 0.95682714 insert eta'width:InterpolationMasses 216 0.95691 insert eta'width:InterpolationMasses 217 0.95699286 insert eta'width:InterpolationMasses 218 0.95707571 insert eta'width:InterpolationMasses 219 0.95715857 insert eta'width:InterpolationMasses 220 0.95724143 insert eta'width:InterpolationMasses 221 0.95732429 insert eta'width:InterpolationMasses 222 0.95740714 insert eta'width:InterpolationMasses 223 0.95749 insert eta'width:InterpolationMasses 224 0.95757286 insert eta'width:InterpolationMasses 225 0.95765571 insert eta'width:InterpolationMasses 226 0.95773857 insert eta'width:InterpolationMasses 227 0.95782143 insert eta'width:InterpolationMasses 228 0.95790429 insert eta'width:InterpolationMasses 229 0.95798714 insert eta'width:InterpolationMasses 230 0.95807 insert eta'width:InterpolationMasses 231 0.95815286 insert eta'width:InterpolationMasses 232 0.95823571 insert eta'width:InterpolationMasses 233 0.95831857 insert eta'width:InterpolationMasses 234 0.95840143 insert eta'width:InterpolationMasses 235 0.95848429 insert eta'width:InterpolationMasses 236 0.95856714 insert eta'width:InterpolationMasses 237 0.95865 insert eta'width:InterpolationMasses 238 0.95873286 insert eta'width:InterpolationMasses 239 0.95881571 insert eta'width:InterpolationMasses 240 0.95889857 insert eta'width:InterpolationMasses 241 0.95898143 insert eta'width:InterpolationMasses 242 0.95906429 insert eta'width:InterpolationMasses 243 0.95914714 insert eta'width:InterpolationMasses 244 0.95923 insert eta'width:InterpolationMasses 245 0.95931286 insert eta'width:InterpolationMasses 246 0.95939571 insert eta'width:InterpolationMasses 247 0.95947857 insert eta'width:InterpolationMasses 248 0.95956143 insert eta'width:InterpolationMasses 249 0.95964429 insert eta'width:InterpolationMasses 250 0.95972714 insert eta'width:InterpolationMasses 251 0.95981 insert eta'width:InterpolationMasses 252 0.95989286 insert eta'width:InterpolationMasses 253 0.95997571 insert eta'width:InterpolationMasses 254 0.95575 insert eta'width:InterpolationMasses 255 0.95583286 insert eta'width:InterpolationMasses 256 0.95591571 insert eta'width:InterpolationMasses 257 0.95599857 insert eta'width:InterpolationMasses 258 0.95608143 insert eta'width:InterpolationMasses 259 0.95616429 insert eta'width:InterpolationMasses 260 0.95624714 insert eta'width:InterpolationMasses 261 0.95633 insert eta'width:InterpolationMasses 262 0.95641286 insert eta'width:InterpolationMasses 263 0.95649571 insert eta'width:InterpolationMasses 264 0.95657857 insert eta'width:InterpolationMasses 265 0.95666143 insert eta'width:InterpolationMasses 266 0.95674429 insert eta'width:InterpolationMasses 267 0.95682714 insert eta'width:InterpolationMasses 268 0.95691 insert eta'width:InterpolationMasses 269 0.95699286 insert eta'width:InterpolationMasses 270 0.95707571 insert eta'width:InterpolationMasses 271 0.95715857 insert eta'width:InterpolationMasses 272 0.95724143 insert eta'width:InterpolationMasses 273 0.95732429 insert eta'width:InterpolationMasses 274 0.95740714 insert eta'width:InterpolationMasses 275 0.95749 insert eta'width:InterpolationMasses 276 0.95757286 insert eta'width:InterpolationMasses 277 0.95765571 insert eta'width:InterpolationMasses 278 0.95773857 insert eta'width:InterpolationMasses 279 0.95782143 insert eta'width:InterpolationMasses 280 0.95790429 insert eta'width:InterpolationMasses 281 0.95798714 insert eta'width:InterpolationMasses 282 0.95807 insert eta'width:InterpolationMasses 283 0.95815286 insert eta'width:InterpolationMasses 284 0.95823571 insert eta'width:InterpolationMasses 285 0.95831857 insert eta'width:InterpolationMasses 286 0.95840143 insert eta'width:InterpolationMasses 287 0.95848429 insert eta'width:InterpolationMasses 288 0.95856714 insert eta'width:InterpolationMasses 289 0.95865 insert eta'width:InterpolationMasses 290 0.95873286 insert eta'width:InterpolationMasses 291 0.95881571 insert eta'width:InterpolationMasses 292 0.95889857 insert eta'width:InterpolationMasses 293 0.95898143 insert eta'width:InterpolationMasses 294 0.95906429 insert eta'width:InterpolationMasses 295 0.95914714 insert eta'width:InterpolationMasses 296 0.95923 insert eta'width:InterpolationMasses 297 0.95931286 insert eta'width:InterpolationMasses 298 0.95939571 insert eta'width:InterpolationMasses 299 0.95947857 insert eta'width:InterpolationMasses 300 0.95956143 insert eta'width:InterpolationMasses 301 0.95964429 insert eta'width:InterpolationMasses 302 0.95972714 insert eta'width:InterpolationMasses 303 0.95981 insert eta'width:InterpolationMasses 304 0.95575 insert eta'width:InterpolationMasses 305 0.95583286 insert eta'width:InterpolationMasses 306 0.95591571 insert eta'width:InterpolationMasses 307 0.95599857 insert eta'width:InterpolationMasses 308 0.95608143 insert eta'width:InterpolationMasses 309 0.95616429 insert eta'width:InterpolationMasses 310 0.95624714 insert eta'width:InterpolationMasses 311 0.95633 insert eta'width:InterpolationMasses 312 0.95641286 insert eta'width:InterpolationMasses 313 0.95649571 insert eta'width:InterpolationMasses 314 0.95657857 insert eta'width:InterpolationMasses 315 0.95666143 insert eta'width:InterpolationMasses 316 0.95674429 insert eta'width:InterpolationMasses 317 0.95682714 insert eta'width:InterpolationMasses 318 0.95691 insert eta'width:InterpolationMasses 319 0.95699286 insert eta'width:InterpolationMasses 320 0.95707571 insert eta'width:InterpolationMasses 321 0.95715857 insert eta'width:InterpolationMasses 322 0.95724143 insert eta'width:InterpolationMasses 323 0.95732429 insert eta'width:InterpolationMasses 324 0.95740714 insert eta'width:InterpolationMasses 325 0.95749 insert eta'width:InterpolationMasses 326 0.95757286 insert eta'width:InterpolationMasses 327 0.95765571 insert eta'width:InterpolationMasses 328 0.95773857 insert eta'width:InterpolationMasses 329 0.95782143 insert eta'width:InterpolationMasses 330 0.95790429 insert eta'width:InterpolationMasses 331 0.95798714 insert eta'width:InterpolationMasses 332 0.95807 insert eta'width:InterpolationMasses 333 0.95815286 insert eta'width:InterpolationMasses 334 0.95823571 insert eta'width:InterpolationMasses 335 0.95831857 insert eta'width:InterpolationMasses 336 0.95840143 insert eta'width:InterpolationMasses 337 0.95848429 insert eta'width:InterpolationMasses 338 0.95856714 insert eta'width:InterpolationMasses 339 0.95865 insert eta'width:InterpolationMasses 340 0.95873286 insert eta'width:InterpolationMasses 341 0.95881571 insert eta'width:InterpolationMasses 342 0.95889857 insert eta'width:InterpolationMasses 343 0.95898143 insert eta'width:InterpolationMasses 344 0.95906429 insert eta'width:InterpolationMasses 345 0.95914714 insert eta'width:InterpolationMasses 346 0.95923 insert eta'width:InterpolationMasses 347 0.95931286 insert eta'width:InterpolationMasses 348 0.95939571 insert eta'width:InterpolationMasses 349 0.95947857 insert eta'width:InterpolationMasses 350 0.95956143 insert eta'width:InterpolationMasses 351 0.95964429 insert eta'width:InterpolationMasses 352 0.95972714 insert eta'width:InterpolationMasses 353 0.95981 insert eta'width:InterpolationWidths 0 9.2646369e-05 insert eta'width:InterpolationWidths 1 9.2756537e-05 insert eta'width:InterpolationWidths 2 9.286676e-05 insert eta'width:InterpolationWidths 3 9.2977037e-05 insert eta'width:InterpolationWidths 4 9.308737e-05 insert eta'width:InterpolationWidths 5 9.3197757e-05 insert eta'width:InterpolationWidths 6 9.33082e-05 insert eta'width:InterpolationWidths 7 9.3418697e-05 insert eta'width:InterpolationWidths 8 9.3529249e-05 insert eta'width:InterpolationWidths 9 9.3639855e-05 insert eta'width:InterpolationWidths 10 9.3750517e-05 insert eta'width:InterpolationWidths 11 9.3861233e-05 insert eta'width:InterpolationWidths 12 9.3972004e-05 insert eta'width:InterpolationWidths 13 9.408283e-05 insert eta'width:InterpolationWidths 14 9.419371e-05 insert eta'width:InterpolationWidths 15 9.4304645e-05 insert eta'width:InterpolationWidths 16 9.4415635e-05 insert eta'width:InterpolationWidths 17 9.452668e-05 insert eta'width:InterpolationWidths 18 9.4637779e-05 insert eta'width:InterpolationWidths 19 9.4748933e-05 insert eta'width:InterpolationWidths 20 9.4860141e-05 insert eta'width:InterpolationWidths 21 9.4971404e-05 insert eta'width:InterpolationWidths 22 9.5082722e-05 insert eta'width:InterpolationWidths 23 9.5194094e-05 insert eta'width:InterpolationWidths 24 9.5305521e-05 insert eta'width:InterpolationWidths 25 9.5417002e-05 insert eta'width:InterpolationWidths 26 9.5528537e-05 insert eta'width:InterpolationWidths 27 9.5640128e-05 insert eta'width:InterpolationWidths 28 9.5751772e-05 insert eta'width:InterpolationWidths 29 9.5863472e-05 insert eta'width:InterpolationWidths 30 9.5975225e-05 insert eta'width:InterpolationWidths 31 9.6087033e-05 insert eta'width:InterpolationWidths 32 9.6198896e-05 insert eta'width:InterpolationWidths 33 9.6310813e-05 insert eta'width:InterpolationWidths 34 9.6422784e-05 insert eta'width:InterpolationWidths 35 9.6534809e-05 insert eta'width:InterpolationWidths 36 9.6646889e-05 insert eta'width:InterpolationWidths 37 9.6759023e-05 insert eta'width:InterpolationWidths 38 9.6871212e-05 insert eta'width:InterpolationWidths 39 9.6983455e-05 insert eta'width:InterpolationWidths 40 9.7095752e-05 insert eta'width:InterpolationWidths 41 9.7208103e-05 insert eta'width:InterpolationWidths 42 9.7320509e-05 insert eta'width:InterpolationWidths 43 9.7432969e-05 insert eta'width:InterpolationWidths 44 9.7545483e-05 insert eta'width:InterpolationWidths 45 9.7658051e-05 insert eta'width:InterpolationWidths 46 9.7770673e-05 insert eta'width:InterpolationWidths 47 9.788335e-05 insert eta'width:InterpolationWidths 48 9.799608e-05 insert eta'width:InterpolationWidths 49 9.8108865e-05 insert eta'width:InterpolationWidths 50 4.3874103e-05 insert eta'width:InterpolationWidths 51 4.3922572e-05 insert eta'width:InterpolationWidths 52 4.3971063e-05 insert eta'width:InterpolationWidths 53 4.4019577e-05 insert eta'width:InterpolationWidths 54 4.4068112e-05 insert eta'width:InterpolationWidths 55 4.411667e-05 insert eta'width:InterpolationWidths 56 4.416525e-05 insert eta'width:InterpolationWidths 57 4.4213852e-05 insert eta'width:InterpolationWidths 58 4.4262476e-05 insert eta'width:InterpolationWidths 59 4.4311122e-05 insert eta'width:InterpolationWidths 60 4.4359791e-05 insert eta'width:InterpolationWidths 61 4.4408481e-05 insert eta'width:InterpolationWidths 62 4.4457193e-05 insert eta'width:InterpolationWidths 63 4.4505928e-05 insert eta'width:InterpolationWidths 64 4.4554685e-05 insert eta'width:InterpolationWidths 65 4.4603463e-05 insert eta'width:InterpolationWidths 66 4.4652264e-05 insert eta'width:InterpolationWidths 67 4.4701087e-05 insert eta'width:InterpolationWidths 68 4.4749932e-05 insert eta'width:InterpolationWidths 69 4.4798799e-05 insert eta'width:InterpolationWidths 70 4.4847688e-05 insert eta'width:InterpolationWidths 71 4.4896599e-05 insert eta'width:InterpolationWidths 72 4.4945532e-05 insert eta'width:InterpolationWidths 73 4.4994487e-05 insert eta'width:InterpolationWidths 74 4.5043464e-05 insert eta'width:InterpolationWidths 75 4.5092463e-05 insert eta'width:InterpolationWidths 76 4.5141484e-05 insert eta'width:InterpolationWidths 77 4.5190527e-05 insert eta'width:InterpolationWidths 78 4.5239592e-05 insert eta'width:InterpolationWidths 79 4.5288679e-05 insert eta'width:InterpolationWidths 80 4.5337788e-05 insert eta'width:InterpolationWidths 81 4.5386918e-05 insert eta'width:InterpolationWidths 82 4.5436071e-05 insert eta'width:InterpolationWidths 83 4.5485246e-05 insert eta'width:InterpolationWidths 84 4.5534443e-05 insert eta'width:InterpolationWidths 85 4.5583661e-05 insert eta'width:InterpolationWidths 86 4.5632902e-05 insert eta'width:InterpolationWidths 87 4.5682164e-05 insert eta'width:InterpolationWidths 88 4.5731448e-05 insert eta'width:InterpolationWidths 89 4.5780755e-05 insert eta'width:InterpolationWidths 90 4.5830083e-05 insert eta'width:InterpolationWidths 91 4.5879433e-05 insert eta'width:InterpolationWidths 92 4.5928805e-05 insert eta'width:InterpolationWidths 93 4.5978198e-05 insert eta'width:InterpolationWidths 94 4.6027614e-05 insert eta'width:InterpolationWidths 95 4.6077052e-05 insert eta'width:InterpolationWidths 96 4.6126511e-05 insert eta'width:InterpolationWidths 97 4.6175992e-05 insert eta'width:InterpolationWidths 98 4.6225495e-05 insert eta'width:InterpolationWidths 99 4.627502e-05 insert eta'width:InterpolationWidths 100 1.0548442e-07 insert eta'width:InterpolationWidths 101 1.0551827e-07 insert eta'width:InterpolationWidths 102 1.0555213e-07 insert eta'width:InterpolationWidths 103 1.0558599e-07 insert eta'width:InterpolationWidths 104 1.0561987e-07 insert eta'width:InterpolationWidths 105 1.0565375e-07 insert eta'width:InterpolationWidths 106 1.0568765e-07 insert eta'width:InterpolationWidths 107 1.0572155e-07 insert eta'width:InterpolationWidths 108 1.0575546e-07 insert eta'width:InterpolationWidths 109 1.0578938e-07 insert eta'width:InterpolationWidths 110 1.0582331e-07 insert eta'width:InterpolationWidths 111 1.0585725e-07 insert eta'width:InterpolationWidths 112 1.0589119e-07 insert eta'width:InterpolationWidths 113 1.0592515e-07 insert eta'width:InterpolationWidths 114 1.0595912e-07 insert eta'width:InterpolationWidths 115 1.0599309e-07 insert eta'width:InterpolationWidths 116 1.0602707e-07 insert eta'width:InterpolationWidths 117 1.0606107e-07 insert eta'width:InterpolationWidths 118 1.0609507e-07 insert eta'width:InterpolationWidths 119 1.0612908e-07 insert eta'width:InterpolationWidths 120 1.061631e-07 insert eta'width:InterpolationWidths 121 1.0619713e-07 insert eta'width:InterpolationWidths 122 1.0623117e-07 insert eta'width:InterpolationWidths 123 1.0626521e-07 insert eta'width:InterpolationWidths 124 1.0629927e-07 insert eta'width:InterpolationWidths 125 1.0633334e-07 insert eta'width:InterpolationWidths 126 1.0636741e-07 insert eta'width:InterpolationWidths 127 1.0640149e-07 insert eta'width:InterpolationWidths 128 1.0643559e-07 insert eta'width:InterpolationWidths 129 1.0646969e-07 insert eta'width:InterpolationWidths 130 1.065038e-07 insert eta'width:InterpolationWidths 131 1.0653792e-07 insert eta'width:InterpolationWidths 132 1.0657205e-07 insert eta'width:InterpolationWidths 133 1.0660619e-07 insert eta'width:InterpolationWidths 134 1.0664033e-07 insert eta'width:InterpolationWidths 135 1.0667449e-07 insert eta'width:InterpolationWidths 136 1.0670866e-07 insert eta'width:InterpolationWidths 137 1.0674283e-07 insert eta'width:InterpolationWidths 138 1.0677701e-07 insert eta'width:InterpolationWidths 139 1.0681121e-07 insert eta'width:InterpolationWidths 140 1.0684541e-07 insert eta'width:InterpolationWidths 141 1.0687962e-07 insert eta'width:InterpolationWidths 142 1.0691384e-07 insert eta'width:InterpolationWidths 143 1.0694807e-07 insert eta'width:InterpolationWidths 144 1.0698231e-07 insert eta'width:InterpolationWidths 145 1.0701656e-07 insert eta'width:InterpolationWidths 146 1.0705081e-07 insert eta'width:InterpolationWidths 147 1.0708508e-07 insert eta'width:InterpolationWidths 148 1.0711935e-07 insert eta'width:InterpolationWidths 149 1.0715364e-07 insert eta'width:InterpolationWidths 150 2.0909767e-08 insert eta'width:InterpolationWidths 151 2.0921294e-08 insert eta'width:InterpolationWidths 152 2.0932826e-08 insert eta'width:InterpolationWidths 153 2.0944363e-08 insert eta'width:InterpolationWidths 154 2.0955905e-08 insert eta'width:InterpolationWidths 155 2.0967453e-08 insert eta'width:InterpolationWidths 156 2.0979005e-08 insert eta'width:InterpolationWidths 157 2.0990563e-08 insert eta'width:InterpolationWidths 158 2.1002126e-08 insert eta'width:InterpolationWidths 159 2.1013694e-08 insert eta'width:InterpolationWidths 160 2.1025267e-08 insert eta'width:InterpolationWidths 161 2.1036846e-08 insert eta'width:InterpolationWidths 162 2.1048429e-08 insert eta'width:InterpolationWidths 163 2.1060018e-08 insert eta'width:InterpolationWidths 164 2.1071612e-08 insert eta'width:InterpolationWidths 165 2.1083211e-08 insert eta'width:InterpolationWidths 166 2.1094815e-08 insert eta'width:InterpolationWidths 167 2.1106424e-08 insert eta'width:InterpolationWidths 168 2.1118039e-08 insert eta'width:InterpolationWidths 169 2.1129659e-08 insert eta'width:InterpolationWidths 170 2.1141284e-08 insert eta'width:InterpolationWidths 171 2.1152914e-08 insert eta'width:InterpolationWidths 172 2.1164549e-08 insert eta'width:InterpolationWidths 173 2.1176189e-08 insert eta'width:InterpolationWidths 174 2.1187835e-08 insert eta'width:InterpolationWidths 175 2.1199486e-08 insert eta'width:InterpolationWidths 176 2.1211142e-08 insert eta'width:InterpolationWidths 177 2.1222803e-08 insert eta'width:InterpolationWidths 178 2.1234469e-08 insert eta'width:InterpolationWidths 179 2.124614e-08 insert eta'width:InterpolationWidths 180 2.1257817e-08 insert eta'width:InterpolationWidths 181 2.1269436e-08 insert eta'width:InterpolationWidths 182 2.1281123e-08 insert eta'width:InterpolationWidths 183 2.1292815e-08 insert eta'width:InterpolationWidths 184 2.1304513e-08 insert eta'width:InterpolationWidths 185 2.1316215e-08 insert eta'width:InterpolationWidths 186 2.1327923e-08 insert eta'width:InterpolationWidths 187 2.1339636e-08 insert eta'width:InterpolationWidths 188 2.1351354e-08 insert eta'width:InterpolationWidths 189 2.1363078e-08 insert eta'width:InterpolationWidths 190 2.1374806e-08 insert eta'width:InterpolationWidths 191 2.138654e-08 insert eta'width:InterpolationWidths 192 2.1398279e-08 insert eta'width:InterpolationWidths 193 2.1410023e-08 insert eta'width:InterpolationWidths 194 2.1421772e-08 insert eta'width:InterpolationWidths 195 2.1433527e-08 insert eta'width:InterpolationWidths 196 2.1445286e-08 insert eta'width:InterpolationWidths 197 2.1457051e-08 insert eta'width:InterpolationWidths 198 2.1468821e-08 insert eta'width:InterpolationWidths 199 2.1480597e-08 insert eta'width:InterpolationWidths 200 5.8967132e-06 insert eta'width:InterpolationWidths 201 5.9045476e-06 insert eta'width:InterpolationWidths 202 5.9123884e-06 insert eta'width:InterpolationWidths 203 5.9202357e-06 insert eta'width:InterpolationWidths 204 5.9280895e-06 insert eta'width:InterpolationWidths 205 5.9359497e-06 insert eta'width:InterpolationWidths 206 5.9438164e-06 insert eta'width:InterpolationWidths 207 5.9516895e-06 insert eta'width:InterpolationWidths 208 5.9595691e-06 insert eta'width:InterpolationWidths 209 5.9674552e-06 insert eta'width:InterpolationWidths 210 5.9753477e-06 insert eta'width:InterpolationWidths 211 5.9832468e-06 insert eta'width:InterpolationWidths 212 5.9911522e-06 insert eta'width:InterpolationWidths 213 5.9990642e-06 insert eta'width:InterpolationWidths 214 6.0069826e-06 insert eta'width:InterpolationWidths 215 6.0149075e-06 insert eta'width:InterpolationWidths 216 6.0228389e-06 insert eta'width:InterpolationWidths 217 6.0307768e-06 insert eta'width:InterpolationWidths 218 6.0387212e-06 insert eta'width:InterpolationWidths 219 6.046672e-06 insert eta'width:InterpolationWidths 220 6.0546294e-06 insert eta'width:InterpolationWidths 221 6.0625932e-06 insert eta'width:InterpolationWidths 222 6.0705635e-06 insert eta'width:InterpolationWidths 223 6.0785403e-06 insert eta'width:InterpolationWidths 224 6.0865236e-06 insert eta'width:InterpolationWidths 225 6.0945134e-06 insert eta'width:InterpolationWidths 226 6.1025097e-06 insert eta'width:InterpolationWidths 227 6.1105125e-06 insert eta'width:InterpolationWidths 228 6.1185218e-06 insert eta'width:InterpolationWidths 229 6.1265376e-06 insert eta'width:InterpolationWidths 230 6.1345599e-06 insert eta'width:InterpolationWidths 231 6.1425887e-06 insert eta'width:InterpolationWidths 232 6.150624e-06 insert eta'width:InterpolationWidths 233 6.1586658e-06 insert eta'width:InterpolationWidths 234 6.1667142e-06 insert eta'width:InterpolationWidths 235 6.1747691e-06 insert eta'width:InterpolationWidths 236 6.1828304e-06 insert eta'width:InterpolationWidths 237 6.1908983e-06 insert eta'width:InterpolationWidths 238 6.1989727e-06 insert eta'width:InterpolationWidths 239 6.2070537e-06 insert eta'width:InterpolationWidths 240 6.2151411e-06 insert eta'width:InterpolationWidths 241 6.2232351e-06 insert eta'width:InterpolationWidths 242 6.2313356e-06 insert eta'width:InterpolationWidths 243 6.2394427e-06 insert eta'width:InterpolationWidths 244 6.2475562e-06 insert eta'width:InterpolationWidths 245 6.2556763e-06 insert eta'width:InterpolationWidths 246 6.263803e-06 insert eta'width:InterpolationWidths 247 6.2719362e-06 insert eta'width:InterpolationWidths 248 6.2800759e-06 insert eta'width:InterpolationWidths 249 6.2882221e-06 insert eta'width:InterpolationWidths 250 6.2963749e-06 insert eta'width:InterpolationWidths 251 6.3045343e-06 insert eta'width:InterpolationWidths 252 6.3127001e-06 insert eta'width:InterpolationWidths 253 6.3208726e-06 insert eta'width:InterpolationWidths 254 5.7040906e-05 insert eta'width:InterpolationWidths 255 5.7097165e-05 insert eta'width:InterpolationWidths 256 5.7153464e-05 insert eta'width:InterpolationWidths 257 5.7209805e-05 insert eta'width:InterpolationWidths 258 5.7266185e-05 insert eta'width:InterpolationWidths 259 5.7322607e-05 insert eta'width:InterpolationWidths 260 5.7379069e-05 insert eta'width:InterpolationWidths 261 5.7435571e-05 insert eta'width:InterpolationWidths 262 5.7492115e-05 insert eta'width:InterpolationWidths 263 5.7548699e-05 insert eta'width:InterpolationWidths 264 5.7605323e-05 insert eta'width:InterpolationWidths 265 5.7661989e-05 insert eta'width:InterpolationWidths 266 5.7718695e-05 insert eta'width:InterpolationWidths 267 5.7775441e-05 insert eta'width:InterpolationWidths 268 5.7832229e-05 insert eta'width:InterpolationWidths 269 5.7889057e-05 insert eta'width:InterpolationWidths 270 5.7945926e-05 insert eta'width:InterpolationWidths 271 5.8002836e-05 insert eta'width:InterpolationWidths 272 5.8059786e-05 insert eta'width:InterpolationWidths 273 5.8116777e-05 insert eta'width:InterpolationWidths 274 5.817381e-05 insert eta'width:InterpolationWidths 275 5.8230883e-05 insert eta'width:InterpolationWidths 276 5.8287996e-05 insert eta'width:InterpolationWidths 277 5.8345151e-05 insert eta'width:InterpolationWidths 278 5.8402347e-05 insert eta'width:InterpolationWidths 279 5.8459583e-05 insert eta'width:InterpolationWidths 280 5.8516861e-05 insert eta'width:InterpolationWidths 281 5.8574179e-05 insert eta'width:InterpolationWidths 282 5.8631538e-05 insert eta'width:InterpolationWidths 283 5.8688938e-05 insert eta'width:InterpolationWidths 284 5.8746379e-05 insert eta'width:InterpolationWidths 285 5.8803862e-05 insert eta'width:InterpolationWidths 286 5.8861385e-05 insert eta'width:InterpolationWidths 287 5.8918949e-05 insert eta'width:InterpolationWidths 288 5.8976554e-05 insert eta'width:InterpolationWidths 289 5.90342e-05 insert eta'width:InterpolationWidths 290 5.9091888e-05 insert eta'width:InterpolationWidths 291 5.9149616e-05 insert eta'width:InterpolationWidths 292 5.9207386e-05 insert eta'width:InterpolationWidths 293 5.9265196e-05 insert eta'width:InterpolationWidths 294 5.9323048e-05 insert eta'width:InterpolationWidths 295 5.9380941e-05 insert eta'width:InterpolationWidths 296 5.9438875e-05 insert eta'width:InterpolationWidths 297 5.949685e-05 insert eta'width:InterpolationWidths 298 5.9554866e-05 insert eta'width:InterpolationWidths 299 5.9612924e-05 insert eta'width:InterpolationWidths 300 5.9671022e-05 insert eta'width:InterpolationWidths 301 5.9729162e-05 insert eta'width:InterpolationWidths 302 5.9787343e-05 insert eta'width:InterpolationWidths 303 5.9845566e-05 insert eta'width:InterpolationWidths 304 3.182659e-07 insert eta'width:InterpolationWidths 305 3.183266e-07 insert eta'width:InterpolationWidths 306 3.1838729e-07 insert eta'width:InterpolationWidths 307 3.1844798e-07 insert eta'width:InterpolationWidths 308 3.1850868e-07 insert eta'width:InterpolationWidths 309 3.1856937e-07 insert eta'width:InterpolationWidths 310 3.1863006e-07 insert eta'width:InterpolationWidths 311 3.1869076e-07 insert eta'width:InterpolationWidths 312 3.1875145e-07 insert eta'width:InterpolationWidths 313 3.1881215e-07 insert eta'width:InterpolationWidths 314 3.1887285e-07 insert eta'width:InterpolationWidths 315 3.1893354e-07 insert eta'width:InterpolationWidths 316 3.1899424e-07 insert eta'width:InterpolationWidths 317 3.1905494e-07 insert eta'width:InterpolationWidths 318 3.1911563e-07 insert eta'width:InterpolationWidths 319 3.1917633e-07 insert eta'width:InterpolationWidths 320 3.1923703e-07 insert eta'width:InterpolationWidths 321 3.1929773e-07 insert eta'width:InterpolationWidths 322 3.1935843e-07 insert eta'width:InterpolationWidths 323 3.1941913e-07 insert eta'width:InterpolationWidths 324 3.1947983e-07 insert eta'width:InterpolationWidths 325 3.1954053e-07 insert eta'width:InterpolationWidths 326 3.1960123e-07 insert eta'width:InterpolationWidths 327 3.1966193e-07 insert eta'width:InterpolationWidths 328 3.1972263e-07 insert eta'width:InterpolationWidths 329 3.1978334e-07 insert eta'width:InterpolationWidths 330 3.1984404e-07 insert eta'width:InterpolationWidths 331 3.1990474e-07 insert eta'width:InterpolationWidths 332 3.1996544e-07 insert eta'width:InterpolationWidths 333 3.2002615e-07 insert eta'width:InterpolationWidths 334 3.2008685e-07 insert eta'width:InterpolationWidths 335 3.2014756e-07 insert eta'width:InterpolationWidths 336 3.2020826e-07 insert eta'width:InterpolationWidths 337 3.2026897e-07 insert eta'width:InterpolationWidths 338 3.2032967e-07 insert eta'width:InterpolationWidths 339 3.2039038e-07 insert eta'width:InterpolationWidths 340 3.2045109e-07 insert eta'width:InterpolationWidths 341 3.2051179e-07 insert eta'width:InterpolationWidths 342 3.205725e-07 insert eta'width:InterpolationWidths 343 3.2063321e-07 insert eta'width:InterpolationWidths 344 3.2069392e-07 insert eta'width:InterpolationWidths 345 3.2075463e-07 insert eta'width:InterpolationWidths 346 3.2081534e-07 insert eta'width:InterpolationWidths 347 3.2087605e-07 insert eta'width:InterpolationWidths 348 3.2093676e-07 insert eta'width:InterpolationWidths 349 3.2099747e-07 insert eta'width:InterpolationWidths 350 3.2105818e-07 insert eta'width:InterpolationWidths 351 3.2111889e-07 insert eta'width:InterpolationWidths 352 3.211796e-07 insert eta'width:InterpolationWidths 353 3.2124031e-07 insert eta'width:NumberofEntries 0 50 insert eta'width:NumberofEntries 1 100 insert eta'width:NumberofEntries 2 150 insert eta'width:NumberofEntries 3 150 insert eta'width:NumberofEntries 4 200 insert eta'width:NumberofEntries 5 254 insert eta'width:NumberofEntries 6 304 insert eta'width:NumberofEntries 7 354 newdef /Herwig/Particles/eta':Width_generator eta'width # create Herwig::GenericWidthGenerator K_2+width newdef K_2+width:Particle /Herwig/Particles/K*_2+ newdef K_2+width:Prefactor 1.00327 newdef K_2+width:BRNormalize 1 newdef K_2+width:BRMinimum 0.01 newdef K_2+width:Points 50 newdef K_2+width:InterpolationOrder 1 insert K_2+width:MEtype 0 2 insert K_2+width:MEtype 1 2 insert K_2+width:MEtype 2 2 insert K_2+width:MEtype 3 2 insert K_2+width:MEtype 4 2 insert K_2+width:MEtype 5 1 insert K_2+width:MEtype 6 2 insert K_2+width:MEtype 7 1 insert K_2+width:MEtype 8 2 insert K_2+width:MEtype 9 1 insert K_2+width:MEtype 10 2 insert K_2+width:MEcode 0 0 insert K_2+width:MEcode 1 0 insert K_2+width:MEcode 2 0 insert K_2+width:MEcode 3 0 insert K_2+width:MEcode 4 0 insert K_2+width:MEcode 5 8 insert K_2+width:MEcode 6 0 insert K_2+width:MEcode 7 7 insert K_2+width:MEcode 8 0 insert K_2+width:MEcode 9 7 insert K_2+width:MEcode 10 0 insert K_2+width:MEcoupling 0 0.953541 insert K_2+width:MEcoupling 1 0.96341 insert K_2+width:MEcoupling 2 0.994893 insert K_2+width:MEcoupling 3 1.01726 insert K_2+width:MEcoupling 4 0.928002 insert K_2+width:MEcoupling 5 1.12383 insert K_2+width:MEcoupling 6 0.952113 insert K_2+width:MEcoupling 7 11.84 insert K_2+width:MEcoupling 8 0.949659 insert K_2+width:MEcoupling 9 16.879 insert K_2+width:MEcoupling 10 0.987175 insert K_2+width:ModeOn 0 1 insert K_2+width:ModeOn 1 1 insert K_2+width:ModeOn 2 1 insert K_2+width:ModeOn 3 1 insert K_2+width:ModeOn 4 0 insert K_2+width:ModeOn 5 0 insert K_2+width:ModeOn 6 1 insert K_2+width:ModeOn 7 1 insert K_2+width:ModeOn 8 1 insert K_2+width:ModeOn 9 1 insert K_2+width:ModeOn 10 1 insert K_2+width:MinimumMasses 0 0.776638 insert K_2+width:MinimumMasses 1 1.01716 insert K_2+width:MinimumMasses 2 0.78557 insert K_2+width:MinimumMasses 3 1.0215 insert K_2+width:MinimumMasses 4 1.04117 insert K_2+width:MinimumMasses 5 0.493677 insert K_2+width:MinimumMasses 6 1.19143 insert K_2+width:MinimumMasses 7 0.628655 insert K_2+width:MinimumMasses 8 0.869177 insert K_2+width:MinimumMasses 9 0.637218 insert K_2+width:MinimumMasses 10 0.873148 insert K_2+width:MEmass1 0 0.134978 insert K_2+width:MEmass1 1 0.7755 insert K_2+width:MEmass1 2 0.13957 insert K_2+width:MEmass1 3 0.7755 insert K_2+width:MEmass1 4 0.493677 insert K_2+width:MEmass1 5 0.493677 insert K_2+width:MEmass1 6 0.493677 insert K_2+width:MEmass1 7 0.493677 insert K_2+width:MEmass1 8 0.493677 insert K_2+width:MEmass1 9 0.497648 insert K_2+width:MEmass1 10 0.497648 insert K_2+width:MEmass2 0 0.89166 insert K_2+width:MEmass2 1 0.89166 insert K_2+width:MEmass2 2 0.896 insert K_2+width:MEmass2 3 0.896 insert K_2+width:MEmass2 4 0.54751 insert K_2+width:MEmass2 5 0 insert K_2+width:MEmass2 6 0.78265 insert K_2+width:MEmass2 7 0.134978 insert K_2+width:MEmass2 8 0.7755 insert K_2+width:MEmass2 9 0.13957 insert K_2+width:MEmass2 10 0.7755 insert K_2+width:DecayModes 0 K*_2+->K*+,pi0; insert K_2+width:DecayModes 1 K*_2+->K*+,rho0; insert K_2+width:DecayModes 2 K*_2+->K*0,pi+; insert K_2+width:DecayModes 3 K*_2+->K*0,rho+; insert K_2+width:DecayModes 4 K*_2+->K+,eta; insert K_2+width:DecayModes 5 K*_2+->K+,gamma; insert K_2+width:DecayModes 6 K*_2+->K+,omega; insert K_2+width:DecayModes 7 K*_2+->K+,pi0; insert K_2+width:DecayModes 8 K*_2+->K+,rho0; insert K_2+width:DecayModes 9 K*_2+->K0,pi+; insert K_2+width:DecayModes 10 K*_2+->K0,rho+; insert K_2+width:InterpolationMasses 0 1.2125184 insert K_2+width:InterpolationMasses 1 1.2205592 insert K_2+width:InterpolationMasses 2 1.2286 insert K_2+width:InterpolationMasses 3 1.2366408 insert K_2+width:InterpolationMasses 4 1.2446816 insert K_2+width:InterpolationMasses 5 1.2527224 insert K_2+width:InterpolationMasses 6 1.2607633 insert K_2+width:InterpolationMasses 7 1.2688041 insert K_2+width:InterpolationMasses 8 1.2768449 insert K_2+width:InterpolationMasses 9 1.2848857 insert K_2+width:InterpolationMasses 10 1.2929265 insert K_2+width:InterpolationMasses 11 1.3009673 insert K_2+width:InterpolationMasses 12 1.3090082 insert K_2+width:InterpolationMasses 13 1.317049 insert K_2+width:InterpolationMasses 14 1.3250898 insert K_2+width:InterpolationMasses 15 1.3331306 insert K_2+width:InterpolationMasses 16 1.3411714 insert K_2+width:InterpolationMasses 17 1.3492122 insert K_2+width:InterpolationMasses 18 1.3572531 insert K_2+width:InterpolationMasses 19 1.3652939 insert K_2+width:InterpolationMasses 20 1.3733347 insert K_2+width:InterpolationMasses 21 1.3813755 insert K_2+width:InterpolationMasses 22 1.3894163 insert K_2+width:InterpolationMasses 23 1.3974571 insert K_2+width:InterpolationMasses 24 1.405498 insert K_2+width:InterpolationMasses 25 1.4135388 insert K_2+width:InterpolationMasses 26 1.4215796 insert K_2+width:InterpolationMasses 27 1.4296204 insert K_2+width:InterpolationMasses 28 1.4376612 insert K_2+width:InterpolationMasses 29 1.445702 insert K_2+width:InterpolationMasses 30 1.4537429 insert K_2+width:InterpolationMasses 31 1.4617837 insert K_2+width:InterpolationMasses 32 1.4698245 insert K_2+width:InterpolationMasses 33 1.4778653 insert K_2+width:InterpolationMasses 34 1.4859061 insert K_2+width:InterpolationMasses 35 1.4939469 insert K_2+width:InterpolationMasses 36 1.5019878 insert K_2+width:InterpolationMasses 37 1.5100286 insert K_2+width:InterpolationMasses 38 1.5180694 insert K_2+width:InterpolationMasses 39 1.5261102 insert K_2+width:InterpolationMasses 40 1.534151 insert K_2+width:InterpolationMasses 41 1.5421918 insert K_2+width:InterpolationMasses 42 1.5502327 insert K_2+width:InterpolationMasses 43 1.5582735 insert K_2+width:InterpolationMasses 44 1.5663143 insert K_2+width:InterpolationMasses 45 1.5743551 insert K_2+width:InterpolationMasses 46 1.5823959 insert K_2+width:InterpolationMasses 47 1.5904367 insert K_2+width:InterpolationMasses 48 1.5984776 insert K_2+width:InterpolationMasses 49 1.6065184 insert K_2+width:InterpolationMasses 50 1.6145592 insert K_2+width:InterpolationMasses 51 1.6226 insert K_2+width:InterpolationMasses 52 1.6306408 insert K_2+width:InterpolationMasses 53 1.6386816 insert K_2+width:InterpolationMasses 54 1.2125184 insert K_2+width:InterpolationMasses 55 1.2205592 insert K_2+width:InterpolationMasses 56 1.2286 insert K_2+width:InterpolationMasses 57 1.2366408 insert K_2+width:InterpolationMasses 58 1.2446816 insert K_2+width:InterpolationMasses 59 1.2527224 insert K_2+width:InterpolationMasses 60 1.2607633 insert K_2+width:InterpolationMasses 61 1.2688041 insert K_2+width:InterpolationMasses 62 1.2768449 insert K_2+width:InterpolationMasses 63 1.2848857 insert K_2+width:InterpolationMasses 64 1.2929265 insert K_2+width:InterpolationMasses 65 1.3009673 insert K_2+width:InterpolationMasses 66 1.3090082 insert K_2+width:InterpolationMasses 67 1.317049 insert K_2+width:InterpolationMasses 68 1.3250898 insert K_2+width:InterpolationMasses 69 1.3331306 insert K_2+width:InterpolationMasses 70 1.3411714 insert K_2+width:InterpolationMasses 71 1.3492122 insert K_2+width:InterpolationMasses 72 1.3572531 insert K_2+width:InterpolationMasses 73 1.3652939 insert K_2+width:InterpolationMasses 74 1.3733347 insert K_2+width:InterpolationMasses 75 1.3813755 insert K_2+width:InterpolationMasses 76 1.3894163 insert K_2+width:InterpolationMasses 77 1.3974571 insert K_2+width:InterpolationMasses 78 1.405498 insert K_2+width:InterpolationMasses 79 1.4135388 insert K_2+width:InterpolationMasses 80 1.4215796 insert K_2+width:InterpolationMasses 81 1.4296204 insert K_2+width:InterpolationMasses 82 1.4376612 insert K_2+width:InterpolationMasses 83 1.445702 insert K_2+width:InterpolationMasses 84 1.4537429 insert K_2+width:InterpolationMasses 85 1.4617837 insert K_2+width:InterpolationMasses 86 1.4698245 insert K_2+width:InterpolationMasses 87 1.4778653 insert K_2+width:InterpolationMasses 88 1.4859061 insert K_2+width:InterpolationMasses 89 1.4939469 insert K_2+width:InterpolationMasses 90 1.5019878 insert K_2+width:InterpolationMasses 91 1.5100286 insert K_2+width:InterpolationMasses 92 1.5180694 insert K_2+width:InterpolationMasses 93 1.5261102 insert K_2+width:InterpolationMasses 94 1.534151 insert K_2+width:InterpolationMasses 95 1.5421918 insert K_2+width:InterpolationMasses 96 1.5502327 insert K_2+width:InterpolationMasses 97 1.5582735 insert K_2+width:InterpolationMasses 98 1.5663143 insert K_2+width:InterpolationMasses 99 1.5743551 insert K_2+width:InterpolationMasses 100 1.5823959 insert K_2+width:InterpolationMasses 101 1.5904367 insert K_2+width:InterpolationMasses 102 1.5984776 insert K_2+width:InterpolationMasses 103 1.6065184 insert K_2+width:InterpolationMasses 104 1.6145592 insert K_2+width:InterpolationMasses 105 1.6226 insert K_2+width:InterpolationMasses 106 1.6306408 insert K_2+width:InterpolationMasses 107 1.6386816 insert K_2+width:InterpolationMasses 108 1.2125184 insert K_2+width:InterpolationMasses 109 1.2205592 insert K_2+width:InterpolationMasses 110 1.2286 insert K_2+width:InterpolationMasses 111 1.2366408 insert K_2+width:InterpolationMasses 112 1.2446816 insert K_2+width:InterpolationMasses 113 1.2527224 insert K_2+width:InterpolationMasses 114 1.2607633 insert K_2+width:InterpolationMasses 115 1.2688041 insert K_2+width:InterpolationMasses 116 1.2768449 insert K_2+width:InterpolationMasses 117 1.2848857 insert K_2+width:InterpolationMasses 118 1.2929265 insert K_2+width:InterpolationMasses 119 1.3009673 insert K_2+width:InterpolationMasses 120 1.3090082 insert K_2+width:InterpolationMasses 121 1.317049 insert K_2+width:InterpolationMasses 122 1.3250898 insert K_2+width:InterpolationMasses 123 1.3331306 insert K_2+width:InterpolationMasses 124 1.3411714 insert K_2+width:InterpolationMasses 125 1.3492122 insert K_2+width:InterpolationMasses 126 1.3572531 insert K_2+width:InterpolationMasses 127 1.3652939 insert K_2+width:InterpolationMasses 128 1.3733347 insert K_2+width:InterpolationMasses 129 1.3813755 insert K_2+width:InterpolationMasses 130 1.3894163 insert K_2+width:InterpolationMasses 131 1.3974571 insert K_2+width:InterpolationMasses 132 1.405498 insert K_2+width:InterpolationMasses 133 1.4135388 insert K_2+width:InterpolationMasses 134 1.4215796 insert K_2+width:InterpolationMasses 135 1.4296204 insert K_2+width:InterpolationMasses 136 1.4376612 insert K_2+width:InterpolationMasses 137 1.445702 insert K_2+width:InterpolationMasses 138 1.4537429 insert K_2+width:InterpolationMasses 139 1.4617837 insert K_2+width:InterpolationMasses 140 1.4698245 insert K_2+width:InterpolationMasses 141 1.4778653 insert K_2+width:InterpolationMasses 142 1.4859061 insert K_2+width:InterpolationMasses 143 1.4939469 insert K_2+width:InterpolationMasses 144 1.5019878 insert K_2+width:InterpolationMasses 145 1.5100286 insert K_2+width:InterpolationMasses 146 1.5180694 insert K_2+width:InterpolationMasses 147 1.5261102 insert K_2+width:InterpolationMasses 148 1.534151 insert K_2+width:InterpolationMasses 149 1.5421918 insert K_2+width:InterpolationMasses 150 1.5502327 insert K_2+width:InterpolationMasses 151 1.5582735 insert K_2+width:InterpolationMasses 152 1.5663143 insert K_2+width:InterpolationMasses 153 1.5743551 insert K_2+width:InterpolationMasses 154 1.5823959 insert K_2+width:InterpolationMasses 155 1.5904367 insert K_2+width:InterpolationMasses 156 1.5984776 insert K_2+width:InterpolationMasses 157 1.6065184 insert K_2+width:InterpolationMasses 158 1.6145592 insert K_2+width:InterpolationMasses 159 1.6226 insert K_2+width:InterpolationMasses 160 1.6306408 insert K_2+width:InterpolationMasses 161 1.6386816 insert K_2+width:InterpolationMasses 162 1.2125184 insert K_2+width:InterpolationMasses 163 1.2205592 insert K_2+width:InterpolationMasses 164 1.2286 insert K_2+width:InterpolationMasses 165 1.2366408 insert K_2+width:InterpolationMasses 166 1.2446816 insert K_2+width:InterpolationMasses 167 1.2527224 insert K_2+width:InterpolationMasses 168 1.2607633 insert K_2+width:InterpolationMasses 169 1.2688041 insert K_2+width:InterpolationMasses 170 1.2768449 insert K_2+width:InterpolationMasses 171 1.2848857 insert K_2+width:InterpolationMasses 172 1.2929265 insert K_2+width:InterpolationMasses 173 1.3009673 insert K_2+width:InterpolationMasses 174 1.3090082 insert K_2+width:InterpolationMasses 175 1.317049 insert K_2+width:InterpolationMasses 176 1.3250898 insert K_2+width:InterpolationMasses 177 1.3331306 insert K_2+width:InterpolationMasses 178 1.3411714 insert K_2+width:InterpolationMasses 179 1.3492122 insert K_2+width:InterpolationMasses 180 1.3572531 insert K_2+width:InterpolationMasses 181 1.3652939 insert K_2+width:InterpolationMasses 182 1.3733347 insert K_2+width:InterpolationMasses 183 1.3813755 insert K_2+width:InterpolationMasses 184 1.3894163 insert K_2+width:InterpolationMasses 185 1.3974571 insert K_2+width:InterpolationMasses 186 1.405498 insert K_2+width:InterpolationMasses 187 1.4135388 insert K_2+width:InterpolationMasses 188 1.4215796 insert K_2+width:InterpolationMasses 189 1.4296204 insert K_2+width:InterpolationMasses 190 1.4376612 insert K_2+width:InterpolationMasses 191 1.445702 insert K_2+width:InterpolationMasses 192 1.4537429 insert K_2+width:InterpolationMasses 193 1.4617837 insert K_2+width:InterpolationMasses 194 1.4698245 insert K_2+width:InterpolationMasses 195 1.4778653 insert K_2+width:InterpolationMasses 196 1.4859061 insert K_2+width:InterpolationMasses 197 1.4939469 insert K_2+width:InterpolationMasses 198 1.5019878 insert K_2+width:InterpolationMasses 199 1.5100286 insert K_2+width:InterpolationMasses 200 1.5180694 insert K_2+width:InterpolationMasses 201 1.5261102 insert K_2+width:InterpolationMasses 202 1.534151 insert K_2+width:InterpolationMasses 203 1.5421918 insert K_2+width:InterpolationMasses 204 1.5502327 insert K_2+width:InterpolationMasses 205 1.5582735 insert K_2+width:InterpolationMasses 206 1.5663143 insert K_2+width:InterpolationMasses 207 1.5743551 insert K_2+width:InterpolationMasses 208 1.5823959 insert K_2+width:InterpolationMasses 209 1.5904367 insert K_2+width:InterpolationMasses 210 1.5984776 insert K_2+width:InterpolationMasses 211 1.6065184 insert K_2+width:InterpolationMasses 212 1.6145592 insert K_2+width:InterpolationMasses 213 1.6226 insert K_2+width:InterpolationMasses 214 1.6306408 insert K_2+width:InterpolationMasses 215 1.6386816 insert K_2+width:InterpolationMasses 216 1.2125184 insert K_2+width:InterpolationMasses 217 1.2205592 insert K_2+width:InterpolationMasses 218 1.2286 insert K_2+width:InterpolationMasses 219 1.2366408 insert K_2+width:InterpolationMasses 220 1.2446816 insert K_2+width:InterpolationMasses 221 1.2527224 insert K_2+width:InterpolationMasses 222 1.2607633 insert K_2+width:InterpolationMasses 223 1.2688041 insert K_2+width:InterpolationMasses 224 1.2768449 insert K_2+width:InterpolationMasses 225 1.2848857 insert K_2+width:InterpolationMasses 226 1.2929265 insert K_2+width:InterpolationMasses 227 1.3009673 insert K_2+width:InterpolationMasses 228 1.3090082 insert K_2+width:InterpolationMasses 229 1.317049 insert K_2+width:InterpolationMasses 230 1.3250898 insert K_2+width:InterpolationMasses 231 1.3331306 insert K_2+width:InterpolationMasses 232 1.3411714 insert K_2+width:InterpolationMasses 233 1.3492122 insert K_2+width:InterpolationMasses 234 1.3572531 insert K_2+width:InterpolationMasses 235 1.3652939 insert K_2+width:InterpolationMasses 236 1.3733347 insert K_2+width:InterpolationMasses 237 1.3813755 insert K_2+width:InterpolationMasses 238 1.3894163 insert K_2+width:InterpolationMasses 239 1.3974571 insert K_2+width:InterpolationMasses 240 1.405498 insert K_2+width:InterpolationMasses 241 1.4135388 insert K_2+width:InterpolationMasses 242 1.4215796 insert K_2+width:InterpolationMasses 243 1.4296204 insert K_2+width:InterpolationMasses 244 1.4376612 insert K_2+width:InterpolationMasses 245 1.445702 insert K_2+width:InterpolationMasses 246 1.4537429 insert K_2+width:InterpolationMasses 247 1.4617837 insert K_2+width:InterpolationMasses 248 1.4698245 insert K_2+width:InterpolationMasses 249 1.4778653 insert K_2+width:InterpolationMasses 250 1.4859061 insert K_2+width:InterpolationMasses 251 1.4939469 insert K_2+width:InterpolationMasses 252 1.5019878 insert K_2+width:InterpolationMasses 253 1.5100286 insert K_2+width:InterpolationMasses 254 1.5180694 insert K_2+width:InterpolationMasses 255 1.5261102 insert K_2+width:InterpolationMasses 256 1.534151 insert K_2+width:InterpolationMasses 257 1.5421918 insert K_2+width:InterpolationMasses 258 1.5502327 insert K_2+width:InterpolationMasses 259 1.5582735 insert K_2+width:InterpolationMasses 260 1.5663143 insert K_2+width:InterpolationMasses 261 1.5743551 insert K_2+width:InterpolationMasses 262 1.5823959 insert K_2+width:InterpolationMasses 263 1.5904367 insert K_2+width:InterpolationMasses 264 1.5984776 insert K_2+width:InterpolationMasses 265 1.6065184 insert K_2+width:InterpolationMasses 266 1.6145592 insert K_2+width:InterpolationMasses 267 1.6226 insert K_2+width:InterpolationMasses 268 1.6306408 insert K_2+width:InterpolationMasses 269 1.6386816 insert K_2+width:InterpolationMasses 270 1.2125184 insert K_2+width:InterpolationMasses 271 1.2205592 insert K_2+width:InterpolationMasses 272 1.2286 insert K_2+width:InterpolationMasses 273 1.2366408 insert K_2+width:InterpolationMasses 274 1.2446816 insert K_2+width:InterpolationMasses 275 1.2527224 insert K_2+width:InterpolationMasses 276 1.2607633 insert K_2+width:InterpolationMasses 277 1.2688041 insert K_2+width:InterpolationMasses 278 1.2768449 insert K_2+width:InterpolationMasses 279 1.2848857 insert K_2+width:InterpolationMasses 280 1.2929265 insert K_2+width:InterpolationMasses 281 1.3009673 insert K_2+width:InterpolationMasses 282 1.3090082 insert K_2+width:InterpolationMasses 283 1.317049 insert K_2+width:InterpolationMasses 284 1.3250898 insert K_2+width:InterpolationMasses 285 1.3331306 insert K_2+width:InterpolationMasses 286 1.3411714 insert K_2+width:InterpolationMasses 287 1.3492122 insert K_2+width:InterpolationMasses 288 1.3572531 insert K_2+width:InterpolationMasses 289 1.3652939 insert K_2+width:InterpolationMasses 290 1.3733347 insert K_2+width:InterpolationMasses 291 1.3813755 insert K_2+width:InterpolationMasses 292 1.3894163 insert K_2+width:InterpolationMasses 293 1.3974571 insert K_2+width:InterpolationMasses 294 1.405498 insert K_2+width:InterpolationMasses 295 1.4135388 insert K_2+width:InterpolationMasses 296 1.4215796 insert K_2+width:InterpolationMasses 297 1.4296204 insert K_2+width:InterpolationMasses 298 1.4376612 insert K_2+width:InterpolationMasses 299 1.445702 insert K_2+width:InterpolationMasses 300 1.4537429 insert K_2+width:InterpolationMasses 301 1.4617837 insert K_2+width:InterpolationMasses 302 1.4698245 insert K_2+width:InterpolationMasses 303 1.4778653 insert K_2+width:InterpolationMasses 304 1.4859061 insert K_2+width:InterpolationMasses 305 1.4939469 insert K_2+width:InterpolationMasses 306 1.5019878 insert K_2+width:InterpolationMasses 307 1.5100286 insert K_2+width:InterpolationMasses 308 1.5180694 insert K_2+width:InterpolationMasses 309 1.5261102 insert K_2+width:InterpolationMasses 310 1.534151 insert K_2+width:InterpolationMasses 311 1.5421918 insert K_2+width:InterpolationMasses 312 1.5502327 insert K_2+width:InterpolationMasses 313 1.5582735 insert K_2+width:InterpolationMasses 314 1.5663143 insert K_2+width:InterpolationMasses 315 1.5743551 insert K_2+width:InterpolationMasses 316 1.5823959 insert K_2+width:InterpolationMasses 317 1.5904367 insert K_2+width:InterpolationMasses 318 1.5984776 insert K_2+width:InterpolationMasses 319 1.6065184 insert K_2+width:InterpolationMasses 320 1.6145592 insert K_2+width:InterpolationMasses 321 1.6226 insert K_2+width:InterpolationMasses 322 1.6306408 insert K_2+width:InterpolationMasses 323 1.6386816 insert K_2+width:InterpolationMasses 324 1.2125184 insert K_2+width:InterpolationMasses 325 1.2205592 insert K_2+width:InterpolationMasses 326 1.2286 insert K_2+width:InterpolationMasses 327 1.2366408 insert K_2+width:InterpolationMasses 328 1.2446816 insert K_2+width:InterpolationMasses 329 1.2527224 insert K_2+width:InterpolationMasses 330 1.2607633 insert K_2+width:InterpolationMasses 331 1.2688041 insert K_2+width:InterpolationMasses 332 1.2768449 insert K_2+width:InterpolationMasses 333 1.2848857 insert K_2+width:InterpolationMasses 334 1.2929265 insert K_2+width:InterpolationMasses 335 1.3009673 insert K_2+width:InterpolationMasses 336 1.3090082 insert K_2+width:InterpolationMasses 337 1.317049 insert K_2+width:InterpolationMasses 338 1.3250898 insert K_2+width:InterpolationMasses 339 1.3331306 insert K_2+width:InterpolationMasses 340 1.3411714 insert K_2+width:InterpolationMasses 341 1.3492122 insert K_2+width:InterpolationMasses 342 1.3572531 insert K_2+width:InterpolationMasses 343 1.3652939 insert K_2+width:InterpolationMasses 344 1.3733347 insert K_2+width:InterpolationMasses 345 1.3813755 insert K_2+width:InterpolationMasses 346 1.3894163 insert K_2+width:InterpolationMasses 347 1.3974571 insert K_2+width:InterpolationMasses 348 1.405498 insert K_2+width:InterpolationMasses 349 1.4135388 insert K_2+width:InterpolationMasses 350 1.4215796 insert K_2+width:InterpolationMasses 351 1.4296204 insert K_2+width:InterpolationMasses 352 1.4376612 insert K_2+width:InterpolationMasses 353 1.445702 insert K_2+width:InterpolationMasses 354 1.4537429 insert K_2+width:InterpolationMasses 355 1.4617837 insert K_2+width:InterpolationMasses 356 1.4698245 insert K_2+width:InterpolationMasses 357 1.4778653 insert K_2+width:InterpolationMasses 358 1.4859061 insert K_2+width:InterpolationMasses 359 1.4939469 insert K_2+width:InterpolationMasses 360 1.5019878 insert K_2+width:InterpolationMasses 361 1.5100286 insert K_2+width:InterpolationMasses 362 1.5180694 insert K_2+width:InterpolationMasses 363 1.5261102 insert K_2+width:InterpolationMasses 364 1.534151 insert K_2+width:InterpolationMasses 365 1.5421918 insert K_2+width:InterpolationMasses 366 1.5502327 insert K_2+width:InterpolationMasses 367 1.5582735 insert K_2+width:InterpolationMasses 368 1.5663143 insert K_2+width:InterpolationMasses 369 1.5743551 insert K_2+width:InterpolationMasses 370 1.5823959 insert K_2+width:InterpolationMasses 371 1.5904367 insert K_2+width:InterpolationMasses 372 1.5984776 insert K_2+width:InterpolationMasses 373 1.6065184 insert K_2+width:InterpolationMasses 374 1.6145592 insert K_2+width:InterpolationMasses 375 1.6226 insert K_2+width:InterpolationMasses 376 1.6306408 insert K_2+width:InterpolationMasses 377 1.6386816 insert K_2+width:InterpolationMasses 378 1.2125184 insert K_2+width:InterpolationMasses 379 1.2205592 insert K_2+width:InterpolationMasses 380 1.2286 insert K_2+width:InterpolationMasses 381 1.2366408 insert K_2+width:InterpolationMasses 382 1.2446816 insert K_2+width:InterpolationMasses 383 1.2527224 insert K_2+width:InterpolationMasses 384 1.2607633 insert K_2+width:InterpolationMasses 385 1.2688041 insert K_2+width:InterpolationMasses 386 1.2768449 insert K_2+width:InterpolationMasses 387 1.2848857 insert K_2+width:InterpolationMasses 388 1.2929265 insert K_2+width:InterpolationMasses 389 1.3009673 insert K_2+width:InterpolationMasses 390 1.3090082 insert K_2+width:InterpolationMasses 391 1.317049 insert K_2+width:InterpolationMasses 392 1.3250898 insert K_2+width:InterpolationMasses 393 1.3331306 insert K_2+width:InterpolationMasses 394 1.3411714 insert K_2+width:InterpolationMasses 395 1.3492122 insert K_2+width:InterpolationMasses 396 1.3572531 insert K_2+width:InterpolationMasses 397 1.3652939 insert K_2+width:InterpolationMasses 398 1.3733347 insert K_2+width:InterpolationMasses 399 1.3813755 insert K_2+width:InterpolationMasses 400 1.3894163 insert K_2+width:InterpolationMasses 401 1.3974571 insert K_2+width:InterpolationMasses 402 1.405498 insert K_2+width:InterpolationMasses 403 1.4135388 insert K_2+width:InterpolationMasses 404 1.4215796 insert K_2+width:InterpolationMasses 405 1.4296204 insert K_2+width:InterpolationMasses 406 1.4376612 insert K_2+width:InterpolationMasses 407 1.445702 insert K_2+width:InterpolationMasses 408 1.4537429 insert K_2+width:InterpolationMasses 409 1.4617837 insert K_2+width:InterpolationMasses 410 1.4698245 insert K_2+width:InterpolationMasses 411 1.4778653 insert K_2+width:InterpolationMasses 412 1.4859061 insert K_2+width:InterpolationMasses 413 1.4939469 insert K_2+width:InterpolationMasses 414 1.5019878 insert K_2+width:InterpolationMasses 415 1.5100286 insert K_2+width:InterpolationMasses 416 1.5180694 insert K_2+width:InterpolationMasses 417 1.5261102 insert K_2+width:InterpolationMasses 418 1.534151 insert K_2+width:InterpolationMasses 419 1.5421918 insert K_2+width:InterpolationMasses 420 1.5502327 insert K_2+width:InterpolationMasses 421 1.5582735 insert K_2+width:InterpolationMasses 422 1.5663143 insert K_2+width:InterpolationMasses 423 1.5743551 insert K_2+width:InterpolationMasses 424 1.5823959 insert K_2+width:InterpolationMasses 425 1.5904367 insert K_2+width:InterpolationMasses 426 1.5984776 insert K_2+width:InterpolationMasses 427 1.6065184 insert K_2+width:InterpolationMasses 428 1.6145592 insert K_2+width:InterpolationMasses 429 1.6226 insert K_2+width:InterpolationMasses 430 1.6306408 insert K_2+width:InterpolationMasses 431 1.6386816 insert K_2+width:InterpolationWidths 0 0.0007112608 insert K_2+width:InterpolationWidths 1 0.00080813414 insert K_2+width:InterpolationWidths 2 0.00091460263 insert K_2+width:InterpolationWidths 3 0.001031276 insert K_2+width:InterpolationWidths 4 0.0011587827 insert K_2+width:InterpolationWidths 5 0.0012977697 insert K_2+width:InterpolationWidths 6 0.0014489026 insert K_2+width:InterpolationWidths 7 0.0016128658 insert K_2+width:InterpolationWidths 8 0.0017903621 insert K_2+width:InterpolationWidths 9 0.0019821133 insert K_2+width:InterpolationWidths 10 0.0021888596 insert K_2+width:InterpolationWidths 11 0.0024113602 insert K_2+width:InterpolationWidths 12 0.0026503928 insert K_2+width:InterpolationWidths 13 0.002906754 insert K_2+width:InterpolationWidths 14 0.0031812593 insert K_2+width:InterpolationWidths 15 0.0034747428 insert K_2+width:InterpolationWidths 16 0.0037880575 insert K_2+width:InterpolationWidths 17 0.0041220753 insert K_2+width:InterpolationWidths 18 0.0044776872 insert K_2+width:InterpolationWidths 19 0.0048558028 insert K_2+width:InterpolationWidths 20 0.005257351 insert K_2+width:InterpolationWidths 21 0.0056832796 insert K_2+width:InterpolationWidths 22 0.0061345555 insert K_2+width:InterpolationWidths 23 0.0066121648 insert K_2+width:InterpolationWidths 24 0.0071171124 insert K_2+width:InterpolationWidths 25 0.007650423 insert K_2+width:InterpolationWidths 26 0.00821314 insert K_2+width:InterpolationWidths 27 0.0088063265 insert K_2+width:InterpolationWidths 28 0.0094310648 insert K_2+width:InterpolationWidths 29 0.010088457 insert K_2+width:InterpolationWidths 30 0.010779623 insert K_2+width:InterpolationWidths 31 0.011505706 insert K_2+width:InterpolationWidths 32 0.012267864 insert K_2+width:InterpolationWidths 33 0.013067279 insert K_2+width:InterpolationWidths 34 0.013905149 insert K_2+width:InterpolationWidths 35 0.014782695 insert K_2+width:InterpolationWidths 36 0.015701156 insert K_2+width:InterpolationWidths 37 0.016661791 insert K_2+width:InterpolationWidths 38 0.01766588 insert K_2+width:InterpolationWidths 39 0.018714723 insert K_2+width:InterpolationWidths 40 0.019809638 insert K_2+width:InterpolationWidths 41 0.020951966 insert K_2+width:InterpolationWidths 42 0.022143067 insert K_2+width:InterpolationWidths 43 0.023384319 insert K_2+width:InterpolationWidths 44 0.024677124 insert K_2+width:InterpolationWidths 45 0.026022901 insert K_2+width:InterpolationWidths 46 0.027423088 insert K_2+width:InterpolationWidths 47 0.028879148 insert K_2+width:InterpolationWidths 48 0.030392559 insert K_2+width:InterpolationWidths 49 0.031964823 insert K_2+width:InterpolationWidths 50 0.033597461 insert K_2+width:InterpolationWidths 51 0.035292014 insert K_2+width:InterpolationWidths 52 0.037050043 insert K_2+width:InterpolationWidths 53 0.038873133 insert K_2+width:InterpolationWidths 54 9.1765847e-06 insert K_2+width:InterpolationWidths 55 1.2141144e-05 insert K_2+width:InterpolationWidths 56 1.6051631e-05 insert K_2+width:InterpolationWidths 57 2.1238359e-05 insert K_2+width:InterpolationWidths 58 2.8170886e-05 insert K_2+width:InterpolationWidths 59 3.7520977e-05 insert K_2+width:InterpolationWidths 60 5.0224593e-05 insert K_2+width:InterpolationWidths 61 6.7480525e-05 insert K_2+width:InterpolationWidths 62 9.0639638e-05 insert K_2+width:InterpolationWidths 63 0.0001210888 insert K_2+width:InterpolationWidths 64 0.0001602516 insert K_2+width:InterpolationWidths 65 0.00020966114 insert K_2+width:InterpolationWidths 66 0.00027103034 insert K_2+width:InterpolationWidths 67 0.00034630451 insert K_2+width:InterpolationWidths 68 0.00043770495 insert K_2+width:InterpolationWidths 69 0.00054777132 insert K_2+width:InterpolationWidths 70 0.00067940726 insert K_2+width:InterpolationWidths 71 0.00083593187 insert K_2+width:InterpolationWidths 72 0.0010211386 insert K_2+width:InterpolationWidths 73 0.0012393636 insert K_2+width:InterpolationWidths 74 0.0014955641 insert K_2+width:InterpolationWidths 75 0.0017954103 insert K_2+width:InterpolationWidths 76 0.0021453903 insert K_2+width:InterpolationWidths 77 0.0025529325 insert K_2+width:InterpolationWidths 78 0.0030265457 insert K_2+width:InterpolationWidths 79 0.0035759816 insert K_2+width:InterpolationWidths 80 0.0042124217 insert K_2+width:InterpolationWidths 81 0.0049486933 insert K_2+width:InterpolationWidths 82 0.0057995196 insert K_2+width:InterpolationWidths 83 0.0067818101 insert K_2+width:InterpolationWidths 84 0.0079149968 insert K_2+width:InterpolationWidths 85 0.0092214238 insert K_2+width:InterpolationWidths 86 0.010726812 insert K_2+width:InterpolationWidths 87 0.012460777 insert K_2+width:InterpolationWidths 88 0.014457448 insert K_2+width:InterpolationWidths 89 0.016756183 insert K_2+width:InterpolationWidths 90 0.019402383 insert K_2+width:InterpolationWidths 91 0.022448435 insert K_2+width:InterpolationWidths 92 0.025954778 insert K_2+width:InterpolationWidths 93 0.02999109 insert K_2+width:InterpolationWidths 94 0.034637601 insert K_2+width:InterpolationWidths 95 0.039986491 insert K_2+width:InterpolationWidths 96 0.046143316 insert K_2+width:InterpolationWidths 97 0.053228371 insert K_2+width:InterpolationWidths 98 0.061377829 insert K_2+width:InterpolationWidths 99 0.070744416 insert K_2+width:InterpolationWidths 100 0.081497311 insert K_2+width:InterpolationWidths 101 0.093820839 insert K_2+width:InterpolationWidths 102 0.10791148 insert K_2+width:InterpolationWidths 103 0.12397274 insert K_2+width:InterpolationWidths 104 0.14220745 insert K_2+width:InterpolationWidths 105 0.16280771 insert K_2+width:InterpolationWidths 106 0.18594279 insert K_2+width:InterpolationWidths 107 0.21174657 insert K_2+width:InterpolationWidths 108 0.0012914014 insert K_2+width:InterpolationWidths 109 0.0014729982 insert K_2+width:InterpolationWidths 110 0.0016731253 insert K_2+width:InterpolationWidths 111 0.0018929899 insert K_2+width:InterpolationWidths 112 0.0021338367 insert K_2+width:InterpolationWidths 113 0.0023969477 insert K_2+width:InterpolationWidths 114 0.0026836425 insert K_2+width:InterpolationWidths 115 0.0029952782 insert K_2+width:InterpolationWidths 116 0.0033332492 insert K_2+width:InterpolationWidths 117 0.0036989878 insert K_2+width:InterpolationWidths 118 0.0040939636 insert K_2+width:InterpolationWidths 119 0.004519684 insert K_2+width:InterpolationWidths 120 0.0049776938 insert K_2+width:InterpolationWidths 121 0.0054695758 insert K_2+width:InterpolationWidths 122 0.0059969502 insert K_2+width:InterpolationWidths 123 0.0065614754 insert K_2+width:InterpolationWidths 124 0.0071648471 insert K_2+width:InterpolationWidths 125 0.0078087995 insert K_2+width:InterpolationWidths 126 0.0084951042 insert K_2+width:InterpolationWidths 127 0.0092255711 insert K_2+width:InterpolationWidths 128 0.010002048 insert K_2+width:InterpolationWidths 129 0.010826422 insert K_2+width:InterpolationWidths 130 0.011700616 insert K_2+width:InterpolationWidths 131 0.012626593 insert K_2+width:InterpolationWidths 132 0.013606355 insert K_2+width:InterpolationWidths 133 0.014641942 insert K_2+width:InterpolationWidths 134 0.01573543 insert K_2+width:InterpolationWidths 135 0.016888938 insert K_2+width:InterpolationWidths 136 0.01810462 insert K_2+width:InterpolationWidths 137 0.019384673 insert K_2+width:InterpolationWidths 138 0.020731329 insert K_2+width:InterpolationWidths 139 0.02214686 insert K_2+width:InterpolationWidths 140 0.02363358 insert K_2+width:InterpolationWidths 141 0.02519384 insert K_2+width:InterpolationWidths 142 0.02683003 insert K_2+width:InterpolationWidths 143 0.028544581 insert K_2+width:InterpolationWidths 144 0.030339963 insert K_2+width:InterpolationWidths 145 0.032218688 insert K_2+width:InterpolationWidths 146 0.034183304 insert K_2+width:InterpolationWidths 147 0.036236402 insert K_2+width:InterpolationWidths 148 0.038380614 insert K_2+width:InterpolationWidths 149 0.040618609 insert K_2+width:InterpolationWidths 150 0.042953101 insert K_2+width:InterpolationWidths 151 0.045386839 insert K_2+width:InterpolationWidths 152 0.047922615 insert K_2+width:InterpolationWidths 153 0.05056326 insert K_2+width:InterpolationWidths 154 0.053311646 insert K_2+width:InterpolationWidths 155 0.056170684 insert K_2+width:InterpolationWidths 156 0.059143327 insert K_2+width:InterpolationWidths 157 0.062232567 insert K_2+width:InterpolationWidths 158 0.065441439 insert K_2+width:InterpolationWidths 159 0.068773018 insert K_2+width:InterpolationWidths 160 0.072230418 insert K_2+width:InterpolationWidths 161 0.075816796 insert K_2+width:InterpolationWidths 162 1.7388864e-05 insert K_2+width:InterpolationWidths 163 2.2904392e-05 insert K_2+width:InterpolationWidths 164 3.0132299e-05 insert K_2+width:InterpolationWidths 165 3.9647678e-05 insert K_2+width:InterpolationWidths 166 5.2259839e-05 insert K_2+width:InterpolationWidths 167 6.9125212e-05 insert K_2+width:InterpolationWidths 168 9.1889467e-05 insert K_2+width:InterpolationWidths 169 0.00012277972 insert K_2+width:InterpolationWidths 170 0.00016449026 insert K_2+width:InterpolationWidths 171 0.00021988825 insert K_2+width:InterpolationWidths 172 0.00029186375 insert K_2+width:InterpolationWidths 173 0.00038342818 insert K_2+width:InterpolationWidths 174 0.00049788002 insert K_2+width:InterpolationWidths 175 0.0006389352 insert K_2+width:InterpolationWidths 176 0.00081082515 insert K_2+width:InterpolationWidths 177 0.0010183835 insert K_2+width:InterpolationWidths 178 0.0012671346 insert K_2+width:InterpolationWidths 179 0.0015633914 insert K_2+width:InterpolationWidths 180 0.0019143666 insert K_2+width:InterpolationWidths 181 0.0023283005 insert K_2+width:InterpolationWidths 182 0.0028146088 insert K_2+width:InterpolationWidths 183 0.003384054 insert K_2+width:InterpolationWidths 184 0.0040489418 insert K_2+width:InterpolationWidths 185 0.0048233495 insert K_2+width:InterpolationWidths 186 0.0057233875 insert K_2+width:InterpolationWidths 187 0.0067675011 insert K_2+width:InterpolationWidths 188 0.0079768179 insert K_2+width:InterpolationWidths 189 0.0093755481 insert K_2+width:InterpolationWidths 190 0.010991449 insert K_2+width:InterpolationWidths 191 0.01285636 insert K_2+width:InterpolationWidths 192 0.015006829 insert K_2+width:InterpolationWidths 193 0.017484835 insert K_2+width:InterpolationWidths 194 0.020338633 insert K_2+width:InterpolationWidths 195 0.023623734 insert K_2+width:InterpolationWidths 196 0.027404047 insert K_2+width:InterpolationWidths 197 0.031753197 insert K_2+width:InterpolationWidths 198 0.036756053 insert K_2+width:InterpolationWidths 199 0.042510485 insert K_2+width:InterpolationWidths 200 0.049129364 insert K_2+width:InterpolationWidths 201 0.056742822 insert K_2+width:InterpolationWidths 202 0.065500757 insert K_2+width:InterpolationWidths 203 0.075575564 insert K_2+width:InterpolationWidths 204 0.087164992 insert K_2+width:InterpolationWidths 205 0.10049499 insert K_2+width:InterpolationWidths 206 0.11582231 insert K_2+width:InterpolationWidths 207 0.13343643 insert K_2+width:InterpolationWidths 208 0.15366035 insert K_2+width:InterpolationWidths 209 0.1768494 insert K_2+width:InterpolationWidths 210 0.20338722 insert K_2+width:InterpolationWidths 211 0.23367793 insert K_2+width:InterpolationWidths 212 0.26813351 insert K_2+width:InterpolationWidths 213 0.30715605 insert K_2+width:InterpolationWidths 214 0.35111533 insert K_2+width:InterpolationWidths 215 0.4003235 insert K_2+width:InterpolationWidths 216 2.3254941e-05 insert K_2+width:InterpolationWidths 217 2.5969568e-05 insert K_2+width:InterpolationWidths 218 2.8857163e-05 insert K_2+width:InterpolationWidths 219 3.1920166e-05 insert K_2+width:InterpolationWidths 220 3.516092e-05 insert K_2+width:InterpolationWidths 221 3.8581678e-05 insert K_2+width:InterpolationWidths 222 4.218461e-05 insert K_2+width:InterpolationWidths 223 4.5971811e-05 insert K_2+width:InterpolationWidths 224 4.9945305e-05 insert K_2+width:InterpolationWidths 225 5.4107053e-05 insert K_2+width:InterpolationWidths 226 5.8458953e-05 insert K_2+width:InterpolationWidths 227 6.3002849e-05 insert K_2+width:InterpolationWidths 228 6.7740535e-05 insert K_2+width:InterpolationWidths 229 7.2673754e-05 insert K_2+width:InterpolationWidths 230 7.7804206e-05 insert K_2+width:InterpolationWidths 231 8.3133549e-05 insert K_2+width:InterpolationWidths 232 8.8663402e-05 insert K_2+width:InterpolationWidths 233 9.439535e-05 insert K_2+width:InterpolationWidths 234 0.00010033094 insert K_2+width:InterpolationWidths 235 0.0001064717 insert K_2+width:InterpolationWidths 236 0.0001128191 insert K_2+width:InterpolationWidths 237 0.00011937462 insert K_2+width:InterpolationWidths 238 0.0001261397 insert K_2+width:InterpolationWidths 239 0.00013311573 insert K_2+width:InterpolationWidths 240 0.00014030412 insert K_2+width:InterpolationWidths 241 0.00014770623 insert K_2+width:InterpolationWidths 242 0.00015532341 insert K_2+width:InterpolationWidths 243 0.000163157 insert K_2+width:InterpolationWidths 244 0.00017120831 insert K_2+width:InterpolationWidths 245 0.00017947863 insert K_2+width:InterpolationWidths 246 0.00018796925 insert K_2+width:InterpolationWidths 247 0.00019668144 insert K_2+width:InterpolationWidths 248 0.00020561646 insert K_2+width:InterpolationWidths 249 0.00021477554 insert K_2+width:InterpolationWidths 250 0.00022415993 insert K_2+width:InterpolationWidths 251 0.00023377083 insert K_2+width:InterpolationWidths 252 0.00024360947 insert K_2+width:InterpolationWidths 253 0.00025367704 insert K_2+width:InterpolationWidths 254 0.00026397474 insert K_2+width:InterpolationWidths 255 0.00027450375 insert K_2+width:InterpolationWidths 256 0.00028526524 insert K_2+width:InterpolationWidths 257 0.00029626039 insert K_2+width:InterpolationWidths 258 0.00030749035 insert K_2+width:InterpolationWidths 259 0.00031895629 insert K_2+width:InterpolationWidths 260 0.00033065935 insert K_2+width:InterpolationWidths 261 0.00034260067 insert K_2+width:InterpolationWidths 262 0.0003547814 insert K_2+width:InterpolationWidths 263 0.00036720266 insert K_2+width:InterpolationWidths 264 0.00037986559 insert K_2+width:InterpolationWidths 265 0.0003927713 insert K_2+width:InterpolationWidths 266 0.00040592093 insert K_2+width:InterpolationWidths 267 0.00041931559 insert K_2+width:InterpolationWidths 268 0.00043295638 insert K_2+width:InterpolationWidths 269 0.00044684443 insert K_2+width:InterpolationWidths 270 6.2691783e-09 insert K_2+width:InterpolationWidths 271 2.1466106e-08 insert K_2+width:InterpolationWidths 272 5.6178496e-08 insert K_2+width:InterpolationWidths 273 1.2564699e-07 insert K_2+width:InterpolationWidths 274 2.5454879e-07 insert K_2+width:InterpolationWidths 275 4.8447145e-07 insert K_2+width:InterpolationWidths 276 8.9112232e-07 insert K_2+width:InterpolationWidths 277 1.6348502e-06 insert K_2+width:InterpolationWidths 278 3.1965575e-06 insert K_2+width:InterpolationWidths 279 7.4751504e-06 insert K_2+width:InterpolationWidths 280 1.7746219e-05 insert K_2+width:InterpolationWidths 281 3.6874389e-05 insert K_2+width:InterpolationWidths 282 6.7293127e-05 insert K_2+width:InterpolationWidths 283 0.0001112074 insert K_2+width:InterpolationWidths 284 0.00017068725 insert K_2+width:InterpolationWidths 285 0.00024771767 insert K_2+width:InterpolationWidths 286 0.00034422101 insert K_2+width:InterpolationWidths 287 0.00046211527 insert K_2+width:InterpolationWidths 288 0.00060325018 insert K_2+width:InterpolationWidths 289 0.00076949374 insert K_2+width:InterpolationWidths 290 0.0009626622 insert K_2+width:InterpolationWidths 291 0.0011846596 insert K_2+width:InterpolationWidths 292 0.0014372066 insert K_2+width:InterpolationWidths 293 0.0017221347 insert K_2+width:InterpolationWidths 294 0.0020412476 insert K_2+width:InterpolationWidths 295 0.0023963544 insert K_2+width:InterpolationWidths 296 0.0027892714 insert K_2+width:InterpolationWidths 297 0.0032218248 insert K_2+width:InterpolationWidths 298 0.0036958522 insert K_2+width:InterpolationWidths 299 0.0042132047 insert K_2+width:InterpolationWidths 300 0.0047757475 insert K_2+width:InterpolationWidths 301 0.0053853615 insert K_2+width:InterpolationWidths 302 0.006043944 insert K_2+width:InterpolationWidths 303 0.0067534099 insert K_2+width:InterpolationWidths 304 0.0075156921 insert K_2+width:InterpolationWidths 305 0.0083327425 insert K_2+width:InterpolationWidths 306 0.0092065326 insert K_2+width:InterpolationWidths 307 0.010139054 insert K_2+width:InterpolationWidths 308 0.011132318 insert K_2+width:InterpolationWidths 309 0.012188359 insert K_2+width:InterpolationWidths 310 0.01330923 insert K_2+width:InterpolationWidths 311 0.01449701 insert K_2+width:InterpolationWidths 312 0.015754331 insert K_2+width:InterpolationWidths 313 0.017081298 insert K_2+width:InterpolationWidths 314 0.018482451 insert K_2+width:InterpolationWidths 315 0.019959043 insert K_2+width:InterpolationWidths 316 0.021513266 insert K_2+width:InterpolationWidths 317 0.023147336 insert K_2+width:InterpolationWidths 318 0.024864101 insert K_2+width:InterpolationWidths 319 0.026664655 insert K_2+width:InterpolationWidths 320 0.028551851 insert K_2+width:InterpolationWidths 321 0.030528005 insert K_2+width:InterpolationWidths 322 0.032595455 insert K_2+width:InterpolationWidths 323 0.034756566 insert K_2+width:InterpolationWidths 324 8.9515846e-05 insert K_2+width:InterpolationWidths 325 0.00010409473 insert K_2+width:InterpolationWidths 326 0.0001209651 insert K_2+width:InterpolationWidths 327 0.00014048538 insert K_2+width:InterpolationWidths 328 0.00016306574 insert K_2+width:InterpolationWidths 329 0.00018917154 insert K_2+width:InterpolationWidths 330 0.00021932523 insert K_2+width:InterpolationWidths 331 0.00025410629 insert K_2+width:InterpolationWidths 332 0.00029414917 insert K_2+width:InterpolationWidths 333 0.00034013958 insert K_2+width:InterpolationWidths 334 0.00039280975 insert K_2+width:InterpolationWidths 335 0.00045293315 insert K_2+width:InterpolationWidths 336 0.00052131943 insert K_2+width:InterpolationWidths 337 0.00059880986 insert K_2+width:InterpolationWidths 338 0.0006862734 insert K_2+width:InterpolationWidths 339 0.0007846036 insert K_2+width:InterpolationWidths 340 0.00089471611 insert K_2+width:InterpolationWidths 341 0.0010175468 insert K_2+width:InterpolationWidths 342 0.0011540504 insert K_2+width:InterpolationWidths 343 0.0013051994 insert K_2+width:InterpolationWidths 344 0.0014719837 insert K_2+width:InterpolationWidths 345 0.0016554094 insert K_2+width:InterpolationWidths 346 0.0018564994 insert K_2+width:InterpolationWidths 347 0.0020762926 insert K_2+width:InterpolationWidths 348 0.0023158441 insert K_2+width:InterpolationWidths 349 0.0025762249 insert K_2+width:InterpolationWidths 350 0.0028585224 insert K_2+width:InterpolationWidths 351 0.0031638403 insert K_2+width:InterpolationWidths 352 0.0034932984 insert K_2+width:InterpolationWidths 353 0.0038480333 insert K_2+width:InterpolationWidths 354 0.0042291982 insert K_2+width:InterpolationWidths 355 0.004637963 insert K_2+width:InterpolationWidths 356 0.0050755148 insert K_2+width:InterpolationWidths 357 0.0055430577 insert K_2+width:InterpolationWidths 358 0.0060418134 insert K_2+width:InterpolationWidths 359 0.0065730207 insert K_2+width:InterpolationWidths 360 0.0071379367 insert K_2+width:InterpolationWidths 361 0.0077378358 insert K_2+width:InterpolationWidths 362 0.0083740108 insert K_2+width:InterpolationWidths 363 0.0090477726 insert K_2+width:InterpolationWidths 364 0.0097604506 insert K_2+width:InterpolationWidths 365 0.010513393 insert K_2+width:InterpolationWidths 366 0.011307965 insert K_2+width:InterpolationWidths 367 0.012145554 insert K_2+width:InterpolationWidths 368 0.013027564 insert K_2+width:InterpolationWidths 369 0.013955418 insert K_2+width:InterpolationWidths 370 0.01493056 insert K_2+width:InterpolationWidths 371 0.015954452 insert K_2+width:InterpolationWidths 372 0.017028577 insert K_2+width:InterpolationWidths 373 0.018154437 insert K_2+width:InterpolationWidths 374 0.019333554 insert K_2+width:InterpolationWidths 375 0.02056747 insert K_2+width:InterpolationWidths 376 0.021857748 insert K_2+width:InterpolationWidths 377 0.02320597 insert K_2+width:InterpolationWidths 378 0.00016978316 insert K_2+width:InterpolationWidths 379 0.00019739171 insert K_2+width:InterpolationWidths 380 0.00022932231 insert K_2+width:InterpolationWidths 381 0.00026625083 insert K_2+width:InterpolationWidths 382 0.00030895313 insert K_2+width:InterpolationWidths 383 0.00035831333 insert K_2+width:InterpolationWidths 384 0.00041532924 insert K_2+width:InterpolationWidths 385 0.00048111425 insert K_2+width:InterpolationWidths 386 0.00055689517 insert K_2+width:InterpolationWidths 387 0.00064400627 insert K_2+width:InterpolationWidths 388 0.00074388053 insert K_2+width:InterpolationWidths 389 0.00085803936 insert K_2+width:InterpolationWidths 390 0.00098808206 insert K_2+width:InterpolationWidths 391 0.0011356759 insert K_2+width:InterpolationWidths 392 0.0013025477 insert K_2+width:InterpolationWidths 393 0.0014904764 insert K_2+width:InterpolationWidths 394 0.0017012876 insert K_2+width:InterpolationWidths 395 0.0019368494 insert K_2+width:InterpolationWidths 396 0.0021990687 insert K_2+width:InterpolationWidths 397 0.0024898889 insert K_2+width:InterpolationWidths 398 0.0028112885 insert K_2+width:InterpolationWidths 399 0.0031652797 insert K_2+width:InterpolationWidths 400 0.0035539073 insert K_2+width:InterpolationWidths 401 0.0039792491 insert K_2+width:InterpolationWidths 402 0.0044434147 insert K_2+width:InterpolationWidths 403 0.004948546 insert K_2+width:InterpolationWidths 404 0.0054968171 insert K_2+width:InterpolationWidths 405 0.0060904344 insert K_2+width:InterpolationWidths 406 0.0067316372 insert K_2+width:InterpolationWidths 407 0.0074226971 insert K_2+width:InterpolationWidths 408 0.0081659192 insert K_2+width:InterpolationWidths 409 0.008963642 insert K_2+width:InterpolationWidths 410 0.0098182377 insert K_2+width:InterpolationWidths 411 0.010732113 insert K_2+width:InterpolationWidths 412 0.011707708 insert K_2+width:InterpolationWidths 413 0.012747499 insert K_2+width:InterpolationWidths 414 0.013853997 insert K_2+width:InterpolationWidths 415 0.015029749 insert K_2+width:InterpolationWidths 416 0.016277336 insert K_2+width:InterpolationWidths 417 0.017599377 insert K_2+width:InterpolationWidths 418 0.018998528 insert K_2+width:InterpolationWidths 419 0.020477481 insert K_2+width:InterpolationWidths 420 0.022038965 insert K_2+width:InterpolationWidths 421 0.023685748 insert K_2+width:InterpolationWidths 422 0.025420633 insert K_2+width:InterpolationWidths 423 0.027246465 insert K_2+width:InterpolationWidths 424 0.029166126 insert K_2+width:InterpolationWidths 425 0.031182535 insert K_2+width:InterpolationWidths 426 0.033298653 insert K_2+width:InterpolationWidths 427 0.035517479 insert K_2+width:InterpolationWidths 428 0.037842053 insert K_2+width:InterpolationWidths 429 0.040275454 insert K_2+width:InterpolationWidths 430 0.042820801 insert K_2+width:InterpolationWidths 431 0.045481254 insert K_2+width:NumberofEntries 0 54 insert K_2+width:NumberofEntries 1 108 insert K_2+width:NumberofEntries 2 162 insert K_2+width:NumberofEntries 3 216 insert K_2+width:NumberofEntries 4 270 insert K_2+width:NumberofEntries 5 270 insert K_2+width:NumberofEntries 6 324 insert K_2+width:NumberofEntries 7 324 insert K_2+width:NumberofEntries 8 378 insert K_2+width:NumberofEntries 9 378 insert K_2+width:NumberofEntries 10 432 newdef /Herwig/Particles/K*_2+:Width_generator K_2+width newdef /Herwig/Particles/K*_2-:Width_generator K_2+width # create Herwig::GenericWidthGenerator phiwidth newdef phiwidth:Particle /Herwig/Particles/phi newdef phiwidth:Prefactor 1.00293 newdef phiwidth:BRNormalize 1 newdef phiwidth:BRMinimum 0.01 newdef phiwidth:Points 50 newdef phiwidth:InterpolationOrder 1 insert phiwidth:MEtype 0 1 insert phiwidth:MEtype 1 1 insert phiwidth:MEtype 2 2 insert phiwidth:MEtype 3 1 insert phiwidth:MEtype 4 2 insert phiwidth:MEtype 5 2 insert phiwidth:MEtype 6 2 insert phiwidth:MEtype 7 2 insert phiwidth:MEtype 8 0 insert phiwidth:MEtype 9 2 insert phiwidth:MEtype 10 1 insert phiwidth:MEtype 11 2 insert phiwidth:MEtype 12 0 insert phiwidth:MEtype 13 2 insert phiwidth:MEtype 14 1 insert phiwidth:MEtype 15 2 insert phiwidth:MEtype 16 1 insert phiwidth:MEtype 17 2 insert phiwidth:MEtype 18 0 insert phiwidth:MEcode 0 0 insert phiwidth:MEcode 1 0 insert phiwidth:MEcode 2 0 insert phiwidth:MEcode 3 2 insert phiwidth:MEcode 4 0 insert phiwidth:MEcode 5 0 insert phiwidth:MEcode 6 0 insert phiwidth:MEcode 7 0 insert phiwidth:MEcode 8 0 insert phiwidth:MEcode 9 0 insert phiwidth:MEcode 10 2 insert phiwidth:MEcode 11 0 insert phiwidth:MEcode 12 0 insert phiwidth:MEcode 13 0 insert phiwidth:MEcode 14 0 insert phiwidth:MEcode 15 0 insert phiwidth:MEcode 16 1 insert phiwidth:MEcode 17 0 insert phiwidth:MEcode 18 0 insert phiwidth:MEcoupling 0 4.47949 insert phiwidth:MEcoupling 1 4.59475 insert phiwidth:MEcoupling 2 1.01625 insert phiwidth:MEcoupling 3 0.00684012 insert phiwidth:MEcoupling 4 1.00199 insert phiwidth:MEcoupling 5 1.00054 insert phiwidth:MEcoupling 6 1.00627 insert phiwidth:MEcoupling 7 0.965429 insert phiwidth:MEcoupling 8 8.3e-05 insert phiwidth:MEcoupling 9 1.02876 insert phiwidth:MEcoupling 10 0.00683099 insert phiwidth:MEcoupling 11 1.00246 insert phiwidth:MEcoupling 12 4e-06 insert phiwidth:MEcoupling 13 1.04612 insert phiwidth:MEcoupling 14 0.0089857 insert phiwidth:MEcoupling 15 1.0109 insert phiwidth:MEcoupling 16 0.0407574 insert phiwidth:MEcoupling 17 1.11603 insert phiwidth:MEcoupling 18 0.000109 insert phiwidth:ModeOn 0 1 insert phiwidth:ModeOn 1 1 insert phiwidth:ModeOn 2 0 insert phiwidth:ModeOn 3 0 insert phiwidth:ModeOn 4 0 insert phiwidth:ModeOn 5 0 insert phiwidth:ModeOn 6 1 insert phiwidth:ModeOn 7 0 insert phiwidth:ModeOn 8 0 insert phiwidth:ModeOn 9 0 insert phiwidth:ModeOn 10 0 insert phiwidth:ModeOn 11 0 insert phiwidth:ModeOn 12 0 insert phiwidth:ModeOn 13 1 insert phiwidth:ModeOn 14 0 insert phiwidth:ModeOn 15 0 insert phiwidth:ModeOn 16 0 insert phiwidth:ModeOn 17 0 insert phiwidth:ModeOn 18 0 insert phiwidth:MinimumMasses 0 0.987354 insert phiwidth:MinimumMasses 1 0.995296 insert phiwidth:MinimumMasses 2 0.759 insert phiwidth:MinimumMasses 3 0.00102 insert phiwidth:MinimumMasses 4 0.95575 insert phiwidth:MinimumMasses 5 0.548517 insert phiwidth:MinimumMasses 6 0.547497 insert phiwidth:MinimumMasses 7 0.758817 insert phiwidth:MinimumMasses 8 0.682475 insert phiwidth:MinimumMasses 9 0.709 insert phiwidth:MinimumMasses 10 0.21132 insert phiwidth:MinimumMasses 11 0.832728 insert phiwidth:MinimumMasses 12 0.558281 insert phiwidth:MinimumMasses 13 0.414118 insert phiwidth:MinimumMasses 14 0.27914 insert phiwidth:MinimumMasses 15 0.135998 insert phiwidth:MinimumMasses 16 0.134978 insert phiwidth:MinimumMasses 17 0.346298 insert phiwidth:MinimumMasses 18 0.269955 insert phiwidth:MEmass1 0 0.493677 insert phiwidth:MEmass1 1 0.497648 insert phiwidth:MEmass1 2 0 insert phiwidth:MEmass1 3 0.00051 insert phiwidth:MEmass1 4 0 insert phiwidth:MEmass1 5 0 insert phiwidth:MEmass1 6 0 insert phiwidth:MEmass1 7 0 insert phiwidth:MEmass1 8 0 insert phiwidth:MEmass1 9 0 insert phiwidth:MEmass1 10 0.10566 insert phiwidth:MEmass1 11 0.78265 insert phiwidth:MEmass1 12 0 insert phiwidth:MEmass1 13 0 insert phiwidth:MEmass1 14 0.13957 insert phiwidth:MEmass1 15 0 insert phiwidth:MEmass1 16 0 insert phiwidth:MEmass1 17 0 insert phiwidth:MEmass1 18 0 insert phiwidth:MEmass2 0 0.493677 insert phiwidth:MEmass2 1 0.497648 insert phiwidth:MEmass2 2 0.999 insert phiwidth:MEmass2 3 0.00051 insert phiwidth:MEmass2 4 0.95778 insert phiwidth:MEmass2 5 0 insert phiwidth:MEmass2 6 0.54751 insert phiwidth:MEmass2 7 0 insert phiwidth:MEmass2 8 0 insert phiwidth:MEmass2 9 0.965 insert phiwidth:MEmass2 10 0.10566 insert phiwidth:MEmass2 11 0.134978 insert phiwidth:MEmass2 12 0 insert phiwidth:MEmass2 13 0 insert phiwidth:MEmass2 14 0.13957 insert phiwidth:MEmass2 15 0 insert phiwidth:MEmass2 16 0.134978 insert phiwidth:MEmass2 17 0 insert phiwidth:MEmass2 18 0 insert phiwidth:DecayModes 0 phi->K+,K-; insert phiwidth:DecayModes 1 phi->K_S0,K_L0; insert phiwidth:DecayModes 2 phi->a_00,gamma; insert phiwidth:DecayModes 3 phi->e-,e+; insert phiwidth:DecayModes 4 phi->eta',gamma; insert phiwidth:DecayModes 5 phi->eta,e-,e+; insert phiwidth:DecayModes 6 phi->eta,gamma; insert phiwidth:DecayModes 7 phi->eta,mu-,mu+; insert phiwidth:DecayModes 8 phi->eta,pi0,gamma; insert phiwidth:DecayModes 9 phi->f_0,gamma; insert phiwidth:DecayModes 10 phi->mu-,mu+; insert phiwidth:DecayModes 11 phi->omega,pi0; insert phiwidth:DecayModes 12 phi->pi+,pi+,pi-,pi-; insert phiwidth:DecayModes 13 phi->pi+,pi-,pi0; insert phiwidth:DecayModes 14 phi->pi+,pi-; insert phiwidth:DecayModes 15 phi->pi0,e-,e+; insert phiwidth:DecayModes 16 phi->pi0,gamma; insert phiwidth:DecayModes 17 phi->pi0,mu-,mu+; insert phiwidth:DecayModes 18 phi->pi0,pi0,gamma; insert phiwidth:InterpolationMasses 0 0.98649673 insert phiwidth:InterpolationMasses 1 0.98797837 insert phiwidth:InterpolationMasses 2 0.98946 insert phiwidth:InterpolationMasses 3 0.99094163 insert phiwidth:InterpolationMasses 4 0.99242327 insert phiwidth:InterpolationMasses 5 0.9939049 insert phiwidth:InterpolationMasses 6 0.99538653 insert phiwidth:InterpolationMasses 7 0.99686816 insert phiwidth:InterpolationMasses 8 0.9983498 insert phiwidth:InterpolationMasses 9 0.99983143 insert phiwidth:InterpolationMasses 10 1.0013131 insert phiwidth:InterpolationMasses 11 1.0027947 insert phiwidth:InterpolationMasses 12 1.0042763 insert phiwidth:InterpolationMasses 13 1.005758 insert phiwidth:InterpolationMasses 14 1.0072396 insert phiwidth:InterpolationMasses 15 1.0087212 insert phiwidth:InterpolationMasses 16 1.0102029 insert phiwidth:InterpolationMasses 17 1.0116845 insert phiwidth:InterpolationMasses 18 1.0131661 insert phiwidth:InterpolationMasses 19 1.0146478 insert phiwidth:InterpolationMasses 20 1.0161294 insert phiwidth:InterpolationMasses 21 1.017611 insert phiwidth:InterpolationMasses 22 1.0190927 insert phiwidth:InterpolationMasses 23 1.0205743 insert phiwidth:InterpolationMasses 24 1.0220559 insert phiwidth:InterpolationMasses 25 1.0235376 insert phiwidth:InterpolationMasses 26 1.0250192 insert phiwidth:InterpolationMasses 27 1.0265008 insert phiwidth:InterpolationMasses 28 1.0279824 insert phiwidth:InterpolationMasses 29 1.0294641 insert phiwidth:InterpolationMasses 30 1.0309457 insert phiwidth:InterpolationMasses 31 1.0324273 insert phiwidth:InterpolationMasses 32 1.033909 insert phiwidth:InterpolationMasses 33 1.0353906 insert phiwidth:InterpolationMasses 34 1.0368722 insert phiwidth:InterpolationMasses 35 1.0383539 insert phiwidth:InterpolationMasses 36 1.0398355 insert phiwidth:InterpolationMasses 37 1.0413171 insert phiwidth:InterpolationMasses 38 1.0427988 insert phiwidth:InterpolationMasses 39 1.0442804 insert phiwidth:InterpolationMasses 40 1.045762 insert phiwidth:InterpolationMasses 41 1.0472437 insert phiwidth:InterpolationMasses 42 1.0487253 insert phiwidth:InterpolationMasses 43 1.0502069 insert phiwidth:InterpolationMasses 44 1.0516886 insert phiwidth:InterpolationMasses 45 1.0531702 insert phiwidth:InterpolationMasses 46 1.0546518 insert phiwidth:InterpolationMasses 47 1.0561335 insert phiwidth:InterpolationMasses 48 1.0576151 insert phiwidth:InterpolationMasses 49 1.0590967 insert phiwidth:InterpolationMasses 50 1.0605784 insert phiwidth:InterpolationMasses 51 1.06206 insert phiwidth:InterpolationMasses 52 1.0635416 insert phiwidth:InterpolationMasses 53 1.0650233 insert phiwidth:InterpolationMasses 54 0.98649673 insert phiwidth:InterpolationMasses 55 0.98797837 insert phiwidth:InterpolationMasses 56 0.98946 insert phiwidth:InterpolationMasses 57 0.99094163 insert phiwidth:InterpolationMasses 58 0.99242327 insert phiwidth:InterpolationMasses 59 0.9939049 insert phiwidth:InterpolationMasses 60 0.99538653 insert phiwidth:InterpolationMasses 61 0.99686816 insert phiwidth:InterpolationMasses 62 0.9983498 insert phiwidth:InterpolationMasses 63 0.99983143 insert phiwidth:InterpolationMasses 64 1.0013131 insert phiwidth:InterpolationMasses 65 1.0027947 insert phiwidth:InterpolationMasses 66 1.0042763 insert phiwidth:InterpolationMasses 67 1.005758 insert phiwidth:InterpolationMasses 68 1.0072396 insert phiwidth:InterpolationMasses 69 1.0087212 insert phiwidth:InterpolationMasses 70 1.0102029 insert phiwidth:InterpolationMasses 71 1.0116845 insert phiwidth:InterpolationMasses 72 1.0131661 insert phiwidth:InterpolationMasses 73 1.0146478 insert phiwidth:InterpolationMasses 74 1.0161294 insert phiwidth:InterpolationMasses 75 1.017611 insert phiwidth:InterpolationMasses 76 1.0190927 insert phiwidth:InterpolationMasses 77 1.0205743 insert phiwidth:InterpolationMasses 78 1.0220559 insert phiwidth:InterpolationMasses 79 1.0235376 insert phiwidth:InterpolationMasses 80 1.0250192 insert phiwidth:InterpolationMasses 81 1.0265008 insert phiwidth:InterpolationMasses 82 1.0279824 insert phiwidth:InterpolationMasses 83 1.0294641 insert phiwidth:InterpolationMasses 84 1.0309457 insert phiwidth:InterpolationMasses 85 1.0324273 insert phiwidth:InterpolationMasses 86 1.033909 insert phiwidth:InterpolationMasses 87 1.0353906 insert phiwidth:InterpolationMasses 88 1.0368722 insert phiwidth:InterpolationMasses 89 1.0383539 insert phiwidth:InterpolationMasses 90 1.0398355 insert phiwidth:InterpolationMasses 91 1.0413171 insert phiwidth:InterpolationMasses 92 1.0427988 insert phiwidth:InterpolationMasses 93 1.0442804 insert phiwidth:InterpolationMasses 94 1.045762 insert phiwidth:InterpolationMasses 95 1.0472437 insert phiwidth:InterpolationMasses 96 1.0487253 insert phiwidth:InterpolationMasses 97 1.0502069 insert phiwidth:InterpolationMasses 98 1.0516886 insert phiwidth:InterpolationMasses 99 1.0531702 insert phiwidth:InterpolationMasses 100 1.0546518 insert phiwidth:InterpolationMasses 101 1.0561335 insert phiwidth:InterpolationMasses 102 1.0576151 insert phiwidth:InterpolationMasses 103 1.0590967 insert phiwidth:InterpolationMasses 104 1.0605784 insert phiwidth:InterpolationMasses 105 1.06206 insert phiwidth:InterpolationMasses 106 1.0635416 insert phiwidth:InterpolationMasses 107 1.0650233 insert phiwidth:InterpolationMasses 108 0.98946 insert phiwidth:InterpolationMasses 109 0.99094163 insert phiwidth:InterpolationMasses 110 0.99242327 insert phiwidth:InterpolationMasses 111 0.9939049 insert phiwidth:InterpolationMasses 112 0.99538653 insert phiwidth:InterpolationMasses 113 0.99686816 insert phiwidth:InterpolationMasses 114 0.9983498 insert phiwidth:InterpolationMasses 115 0.99983143 insert phiwidth:InterpolationMasses 116 1.0013131 insert phiwidth:InterpolationMasses 117 1.0027947 insert phiwidth:InterpolationMasses 118 1.0042763 insert phiwidth:InterpolationMasses 119 1.005758 insert phiwidth:InterpolationMasses 120 1.0072396 insert phiwidth:InterpolationMasses 121 1.0087212 insert phiwidth:InterpolationMasses 122 1.0102029 insert phiwidth:InterpolationMasses 123 1.0116845 insert phiwidth:InterpolationMasses 124 1.0131661 insert phiwidth:InterpolationMasses 125 1.0146478 insert phiwidth:InterpolationMasses 126 1.0161294 insert phiwidth:InterpolationMasses 127 1.017611 insert phiwidth:InterpolationMasses 128 1.0190927 insert phiwidth:InterpolationMasses 129 1.0205743 insert phiwidth:InterpolationMasses 130 1.0220559 insert phiwidth:InterpolationMasses 131 1.0235376 insert phiwidth:InterpolationMasses 132 1.0250192 insert phiwidth:InterpolationMasses 133 1.0265008 insert phiwidth:InterpolationMasses 134 1.0279824 insert phiwidth:InterpolationMasses 135 1.0294641 insert phiwidth:InterpolationMasses 136 1.0309457 insert phiwidth:InterpolationMasses 137 1.0324273 insert phiwidth:InterpolationMasses 138 1.033909 insert phiwidth:InterpolationMasses 139 1.0353906 insert phiwidth:InterpolationMasses 140 1.0368722 insert phiwidth:InterpolationMasses 141 1.0383539 insert phiwidth:InterpolationMasses 142 1.0398355 insert phiwidth:InterpolationMasses 143 1.0413171 insert phiwidth:InterpolationMasses 144 1.0427988 insert phiwidth:InterpolationMasses 145 1.0442804 insert phiwidth:InterpolationMasses 146 1.045762 insert phiwidth:InterpolationMasses 147 1.0472437 insert phiwidth:InterpolationMasses 148 1.0487253 insert phiwidth:InterpolationMasses 149 1.0502069 insert phiwidth:InterpolationMasses 150 1.0516886 insert phiwidth:InterpolationMasses 151 1.0531702 insert phiwidth:InterpolationMasses 152 1.0546518 insert phiwidth:InterpolationMasses 153 1.0561335 insert phiwidth:InterpolationMasses 154 1.0576151 insert phiwidth:InterpolationMasses 155 1.0590967 insert phiwidth:InterpolationMasses 156 1.0605784 insert phiwidth:InterpolationMasses 157 1.06206 insert phiwidth:InterpolationMasses 158 0.98649673 insert phiwidth:InterpolationMasses 159 0.98797837 insert phiwidth:InterpolationMasses 160 0.98946 insert phiwidth:InterpolationMasses 161 0.99094163 insert phiwidth:InterpolationMasses 162 0.99242327 insert phiwidth:InterpolationMasses 163 0.9939049 insert phiwidth:InterpolationMasses 164 0.99538653 insert phiwidth:InterpolationMasses 165 0.99686816 insert phiwidth:InterpolationMasses 166 0.9983498 insert phiwidth:InterpolationMasses 167 0.99983143 insert phiwidth:InterpolationMasses 168 1.0013131 insert phiwidth:InterpolationMasses 169 1.0027947 insert phiwidth:InterpolationMasses 170 1.0042763 insert phiwidth:InterpolationMasses 171 1.005758 insert phiwidth:InterpolationMasses 172 1.0072396 insert phiwidth:InterpolationMasses 173 1.0087212 insert phiwidth:InterpolationMasses 174 1.0102029 insert phiwidth:InterpolationMasses 175 1.0116845 insert phiwidth:InterpolationMasses 176 1.0131661 insert phiwidth:InterpolationMasses 177 1.0146478 insert phiwidth:InterpolationMasses 178 1.0161294 insert phiwidth:InterpolationMasses 179 1.017611 insert phiwidth:InterpolationMasses 180 1.0190927 insert phiwidth:InterpolationMasses 181 1.0205743 insert phiwidth:InterpolationMasses 182 1.0220559 insert phiwidth:InterpolationMasses 183 1.0235376 insert phiwidth:InterpolationMasses 184 1.0250192 insert phiwidth:InterpolationMasses 185 1.0265008 insert phiwidth:InterpolationMasses 186 1.0279824 insert phiwidth:InterpolationMasses 187 1.0294641 insert phiwidth:InterpolationMasses 188 1.0309457 insert phiwidth:InterpolationMasses 189 1.0324273 insert phiwidth:InterpolationMasses 190 1.033909 insert phiwidth:InterpolationMasses 191 1.0353906 insert phiwidth:InterpolationMasses 192 1.0368722 insert phiwidth:InterpolationMasses 193 1.0383539 insert phiwidth:InterpolationMasses 194 1.0398355 insert phiwidth:InterpolationMasses 195 1.0413171 insert phiwidth:InterpolationMasses 196 1.0427988 insert phiwidth:InterpolationMasses 197 1.0442804 insert phiwidth:InterpolationMasses 198 1.045762 insert phiwidth:InterpolationMasses 199 1.0472437 insert phiwidth:InterpolationMasses 200 1.0487253 insert phiwidth:InterpolationMasses 201 1.0502069 insert phiwidth:InterpolationMasses 202 1.0516886 insert phiwidth:InterpolationMasses 203 1.0531702 insert phiwidth:InterpolationMasses 204 1.0546518 insert phiwidth:InterpolationMasses 205 1.0561335 insert phiwidth:InterpolationMasses 206 1.0576151 insert phiwidth:InterpolationMasses 207 1.0590967 insert phiwidth:InterpolationMasses 208 1.0605784 insert phiwidth:InterpolationMasses 209 1.06206 insert phiwidth:InterpolationMasses 210 1.0635416 insert phiwidth:InterpolationMasses 211 1.0650233 insert phiwidth:InterpolationMasses 212 0.98946 insert phiwidth:InterpolationMasses 213 0.99094163 insert phiwidth:InterpolationMasses 214 0.99242327 insert phiwidth:InterpolationMasses 215 0.9939049 insert phiwidth:InterpolationMasses 216 0.99538653 insert phiwidth:InterpolationMasses 217 0.99686816 insert phiwidth:InterpolationMasses 218 0.9983498 insert phiwidth:InterpolationMasses 219 0.99983143 insert phiwidth:InterpolationMasses 220 1.0013131 insert phiwidth:InterpolationMasses 221 1.0027947 insert phiwidth:InterpolationMasses 222 1.0042763 insert phiwidth:InterpolationMasses 223 1.005758 insert phiwidth:InterpolationMasses 224 1.0072396 insert phiwidth:InterpolationMasses 225 1.0087212 insert phiwidth:InterpolationMasses 226 1.0102029 insert phiwidth:InterpolationMasses 227 1.0116845 insert phiwidth:InterpolationMasses 228 1.0131661 insert phiwidth:InterpolationMasses 229 1.0146478 insert phiwidth:InterpolationMasses 230 1.0161294 insert phiwidth:InterpolationMasses 231 1.017611 insert phiwidth:InterpolationMasses 232 1.0190927 insert phiwidth:InterpolationMasses 233 1.0205743 insert phiwidth:InterpolationMasses 234 1.0220559 insert phiwidth:InterpolationMasses 235 1.0235376 insert phiwidth:InterpolationMasses 236 1.0250192 insert phiwidth:InterpolationMasses 237 1.0265008 insert phiwidth:InterpolationMasses 238 1.0279824 insert phiwidth:InterpolationMasses 239 1.0294641 insert phiwidth:InterpolationMasses 240 1.0309457 insert phiwidth:InterpolationMasses 241 1.0324273 insert phiwidth:InterpolationMasses 242 1.033909 insert phiwidth:InterpolationMasses 243 1.0353906 insert phiwidth:InterpolationMasses 244 1.0368722 insert phiwidth:InterpolationMasses 245 1.0383539 insert phiwidth:InterpolationMasses 246 1.0398355 insert phiwidth:InterpolationMasses 247 1.0413171 insert phiwidth:InterpolationMasses 248 1.0427988 insert phiwidth:InterpolationMasses 249 1.0442804 insert phiwidth:InterpolationMasses 250 1.045762 insert phiwidth:InterpolationMasses 251 1.0472437 insert phiwidth:InterpolationMasses 252 1.0487253 insert phiwidth:InterpolationMasses 253 1.0502069 insert phiwidth:InterpolationMasses 254 1.0516886 insert phiwidth:InterpolationMasses 255 1.0531702 insert phiwidth:InterpolationMasses 256 1.0546518 insert phiwidth:InterpolationMasses 257 1.0561335 insert phiwidth:InterpolationMasses 258 1.0576151 insert phiwidth:InterpolationMasses 259 1.0590967 insert phiwidth:InterpolationMasses 260 1.0605784 insert phiwidth:InterpolationMasses 261 1.06206 insert phiwidth:InterpolationMasses 262 0.98649673 insert phiwidth:InterpolationMasses 263 0.98797837 insert phiwidth:InterpolationMasses 264 0.98946 insert phiwidth:InterpolationMasses 265 0.99094163 insert phiwidth:InterpolationMasses 266 0.99242327 insert phiwidth:InterpolationMasses 267 0.9939049 insert phiwidth:InterpolationMasses 268 0.99538653 insert phiwidth:InterpolationMasses 269 0.99686816 insert phiwidth:InterpolationMasses 270 0.9983498 insert phiwidth:InterpolationMasses 271 0.99983143 insert phiwidth:InterpolationMasses 272 1.0013131 insert phiwidth:InterpolationMasses 273 1.0027947 insert phiwidth:InterpolationMasses 274 1.0042763 insert phiwidth:InterpolationMasses 275 1.005758 insert phiwidth:InterpolationMasses 276 1.0072396 insert phiwidth:InterpolationMasses 277 1.0087212 insert phiwidth:InterpolationMasses 278 1.0102029 insert phiwidth:InterpolationMasses 279 1.0116845 insert phiwidth:InterpolationMasses 280 1.0131661 insert phiwidth:InterpolationMasses 281 1.0146478 insert phiwidth:InterpolationMasses 282 1.0161294 insert phiwidth:InterpolationMasses 283 1.017611 insert phiwidth:InterpolationMasses 284 1.0190927 insert phiwidth:InterpolationMasses 285 1.0205743 insert phiwidth:InterpolationMasses 286 1.0220559 insert phiwidth:InterpolationMasses 287 1.0235376 insert phiwidth:InterpolationMasses 288 1.0250192 insert phiwidth:InterpolationMasses 289 1.0265008 insert phiwidth:InterpolationMasses 290 1.0279824 insert phiwidth:InterpolationMasses 291 1.0294641 insert phiwidth:InterpolationMasses 292 1.0309457 insert phiwidth:InterpolationMasses 293 1.0324273 insert phiwidth:InterpolationMasses 294 1.033909 insert phiwidth:InterpolationMasses 295 1.0353906 insert phiwidth:InterpolationMasses 296 1.0368722 insert phiwidth:InterpolationMasses 297 1.0383539 insert phiwidth:InterpolationMasses 298 1.0398355 insert phiwidth:InterpolationMasses 299 1.0413171 insert phiwidth:InterpolationMasses 300 1.0427988 insert phiwidth:InterpolationMasses 301 1.0442804 insert phiwidth:InterpolationMasses 302 1.045762 insert phiwidth:InterpolationMasses 303 1.0472437 insert phiwidth:InterpolationMasses 304 1.0487253 insert phiwidth:InterpolationMasses 305 1.0502069 insert phiwidth:InterpolationMasses 306 1.0516886 insert phiwidth:InterpolationMasses 307 1.0531702 insert phiwidth:InterpolationMasses 308 1.0546518 insert phiwidth:InterpolationMasses 309 1.0561335 insert phiwidth:InterpolationMasses 310 1.0576151 insert phiwidth:InterpolationMasses 311 1.0590967 insert phiwidth:InterpolationMasses 312 1.0605784 insert phiwidth:InterpolationMasses 313 1.06206 insert phiwidth:InterpolationMasses 314 1.0635416 insert phiwidth:InterpolationMasses 315 1.0650233 insert phiwidth:InterpolationMasses 316 0.98649673 insert phiwidth:InterpolationMasses 317 0.98797837 insert phiwidth:InterpolationMasses 318 0.98946 insert phiwidth:InterpolationMasses 319 0.99094163 insert phiwidth:InterpolationMasses 320 0.99242327 insert phiwidth:InterpolationMasses 321 0.9939049 insert phiwidth:InterpolationMasses 322 0.99538653 insert phiwidth:InterpolationMasses 323 0.99686816 insert phiwidth:InterpolationMasses 324 0.9983498 insert phiwidth:InterpolationMasses 325 0.99983143 insert phiwidth:InterpolationMasses 326 1.0013131 insert phiwidth:InterpolationMasses 327 1.0027947 insert phiwidth:InterpolationMasses 328 1.0042763 insert phiwidth:InterpolationMasses 329 1.005758 insert phiwidth:InterpolationMasses 330 1.0072396 insert phiwidth:InterpolationMasses 331 1.0087212 insert phiwidth:InterpolationMasses 332 1.0102029 insert phiwidth:InterpolationMasses 333 1.0116845 insert phiwidth:InterpolationMasses 334 1.0131661 insert phiwidth:InterpolationMasses 335 1.0146478 insert phiwidth:InterpolationMasses 336 1.0161294 insert phiwidth:InterpolationMasses 337 1.017611 insert phiwidth:InterpolationMasses 338 1.0190927 insert phiwidth:InterpolationMasses 339 1.0205743 insert phiwidth:InterpolationMasses 340 1.0220559 insert phiwidth:InterpolationMasses 341 1.0235376 insert phiwidth:InterpolationMasses 342 1.0250192 insert phiwidth:InterpolationMasses 343 1.0265008 insert phiwidth:InterpolationMasses 344 1.0279824 insert phiwidth:InterpolationMasses 345 1.0294641 insert phiwidth:InterpolationMasses 346 1.0309457 insert phiwidth:InterpolationMasses 347 1.0324273 insert phiwidth:InterpolationMasses 348 1.033909 insert phiwidth:InterpolationMasses 349 1.0353906 insert phiwidth:InterpolationMasses 350 1.0368722 insert phiwidth:InterpolationMasses 351 1.0383539 insert phiwidth:InterpolationMasses 352 1.0398355 insert phiwidth:InterpolationMasses 353 1.0413171 insert phiwidth:InterpolationMasses 354 1.0427988 insert phiwidth:InterpolationMasses 355 1.0442804 insert phiwidth:InterpolationMasses 356 1.045762 insert phiwidth:InterpolationMasses 357 1.0472437 insert phiwidth:InterpolationMasses 358 1.0487253 insert phiwidth:InterpolationMasses 359 1.0502069 insert phiwidth:InterpolationMasses 360 1.0516886 insert phiwidth:InterpolationMasses 361 1.0531702 insert phiwidth:InterpolationMasses 362 1.0546518 insert phiwidth:InterpolationMasses 363 1.0561335 insert phiwidth:InterpolationMasses 364 1.0576151 insert phiwidth:InterpolationMasses 365 1.0590967 insert phiwidth:InterpolationMasses 366 1.0605784 insert phiwidth:InterpolationMasses 367 1.06206 insert phiwidth:InterpolationMasses 368 1.0635416 insert phiwidth:InterpolationMasses 369 1.0650233 insert phiwidth:InterpolationMasses 370 0.98946 insert phiwidth:InterpolationMasses 371 0.99094163 insert phiwidth:InterpolationMasses 372 0.99242327 insert phiwidth:InterpolationMasses 373 0.9939049 insert phiwidth:InterpolationMasses 374 0.99538653 insert phiwidth:InterpolationMasses 375 0.99686816 insert phiwidth:InterpolationMasses 376 0.9983498 insert phiwidth:InterpolationMasses 377 0.99983143 insert phiwidth:InterpolationMasses 378 1.0013131 insert phiwidth:InterpolationMasses 379 1.0027947 insert phiwidth:InterpolationMasses 380 1.0042763 insert phiwidth:InterpolationMasses 381 1.005758 insert phiwidth:InterpolationMasses 382 1.0072396 insert phiwidth:InterpolationMasses 383 1.0087212 insert phiwidth:InterpolationMasses 384 1.0102029 insert phiwidth:InterpolationMasses 385 1.0116845 insert phiwidth:InterpolationMasses 386 1.0131661 insert phiwidth:InterpolationMasses 387 1.0146478 insert phiwidth:InterpolationMasses 388 1.0161294 insert phiwidth:InterpolationMasses 389 1.017611 insert phiwidth:InterpolationMasses 390 1.0190927 insert phiwidth:InterpolationMasses 391 1.0205743 insert phiwidth:InterpolationMasses 392 1.0220559 insert phiwidth:InterpolationMasses 393 1.0235376 insert phiwidth:InterpolationMasses 394 1.0250192 insert phiwidth:InterpolationMasses 395 1.0265008 insert phiwidth:InterpolationMasses 396 1.0279824 insert phiwidth:InterpolationMasses 397 1.0294641 insert phiwidth:InterpolationMasses 398 1.0309457 insert phiwidth:InterpolationMasses 399 1.0324273 insert phiwidth:InterpolationMasses 400 1.033909 insert phiwidth:InterpolationMasses 401 1.0353906 insert phiwidth:InterpolationMasses 402 1.0368722 insert phiwidth:InterpolationMasses 403 1.0383539 insert phiwidth:InterpolationMasses 404 1.0398355 insert phiwidth:InterpolationMasses 405 1.0413171 insert phiwidth:InterpolationMasses 406 1.0427988 insert phiwidth:InterpolationMasses 407 1.0442804 insert phiwidth:InterpolationMasses 408 1.045762 insert phiwidth:InterpolationMasses 409 1.0472437 insert phiwidth:InterpolationMasses 410 1.0487253 insert phiwidth:InterpolationMasses 411 1.0502069 insert phiwidth:InterpolationMasses 412 1.0516886 insert phiwidth:InterpolationMasses 413 1.0531702 insert phiwidth:InterpolationMasses 414 1.0546518 insert phiwidth:InterpolationMasses 415 1.0561335 insert phiwidth:InterpolationMasses 416 1.0576151 insert phiwidth:InterpolationMasses 417 1.0590967 insert phiwidth:InterpolationMasses 418 1.0605784 insert phiwidth:InterpolationMasses 419 1.06206 insert phiwidth:InterpolationMasses 420 0.98946 insert phiwidth:InterpolationMasses 421 0.99094163 insert phiwidth:InterpolationMasses 422 0.99242327 insert phiwidth:InterpolationMasses 423 0.9939049 insert phiwidth:InterpolationMasses 424 0.99538653 insert phiwidth:InterpolationMasses 425 0.99686816 insert phiwidth:InterpolationMasses 426 0.9983498 insert phiwidth:InterpolationMasses 427 0.99983143 insert phiwidth:InterpolationMasses 428 1.0013131 insert phiwidth:InterpolationMasses 429 1.0027947 insert phiwidth:InterpolationMasses 430 1.0042763 insert phiwidth:InterpolationMasses 431 1.005758 insert phiwidth:InterpolationMasses 432 1.0072396 insert phiwidth:InterpolationMasses 433 1.0087212 insert phiwidth:InterpolationMasses 434 1.0102029 insert phiwidth:InterpolationMasses 435 1.0116845 insert phiwidth:InterpolationMasses 436 1.0131661 insert phiwidth:InterpolationMasses 437 1.0146478 insert phiwidth:InterpolationMasses 438 1.0161294 insert phiwidth:InterpolationMasses 439 1.017611 insert phiwidth:InterpolationMasses 440 1.0190927 insert phiwidth:InterpolationMasses 441 1.0205743 insert phiwidth:InterpolationMasses 442 1.0220559 insert phiwidth:InterpolationMasses 443 1.0235376 insert phiwidth:InterpolationMasses 444 1.0250192 insert phiwidth:InterpolationMasses 445 1.0265008 insert phiwidth:InterpolationMasses 446 1.0279824 insert phiwidth:InterpolationMasses 447 1.0294641 insert phiwidth:InterpolationMasses 448 1.0309457 insert phiwidth:InterpolationMasses 449 1.0324273 insert phiwidth:InterpolationMasses 450 1.033909 insert phiwidth:InterpolationMasses 451 1.0353906 insert phiwidth:InterpolationMasses 452 1.0368722 insert phiwidth:InterpolationMasses 453 1.0383539 insert phiwidth:InterpolationMasses 454 1.0398355 insert phiwidth:InterpolationMasses 455 1.0413171 insert phiwidth:InterpolationMasses 456 1.0427988 insert phiwidth:InterpolationMasses 457 1.0442804 insert phiwidth:InterpolationMasses 458 1.045762 insert phiwidth:InterpolationMasses 459 1.0472437 insert phiwidth:InterpolationMasses 460 1.0487253 insert phiwidth:InterpolationMasses 461 1.0502069 insert phiwidth:InterpolationMasses 462 1.0516886 insert phiwidth:InterpolationMasses 463 1.0531702 insert phiwidth:InterpolationMasses 464 1.0546518 insert phiwidth:InterpolationMasses 465 1.0561335 insert phiwidth:InterpolationMasses 466 1.0576151 insert phiwidth:InterpolationMasses 467 1.0590967 insert phiwidth:InterpolationMasses 468 1.0605784 insert phiwidth:InterpolationMasses 469 1.06206 insert phiwidth:InterpolationMasses 470 0.98946 insert phiwidth:InterpolationMasses 471 0.99094163 insert phiwidth:InterpolationMasses 472 0.99242327 insert phiwidth:InterpolationMasses 473 0.9939049 insert phiwidth:InterpolationMasses 474 0.99538653 insert phiwidth:InterpolationMasses 475 0.99686816 insert phiwidth:InterpolationMasses 476 0.9983498 insert phiwidth:InterpolationMasses 477 0.99983143 insert phiwidth:InterpolationMasses 478 1.0013131 insert phiwidth:InterpolationMasses 479 1.0027947 insert phiwidth:InterpolationMasses 480 1.0042763 insert phiwidth:InterpolationMasses 481 1.005758 insert phiwidth:InterpolationMasses 482 1.0072396 insert phiwidth:InterpolationMasses 483 1.0087212 insert phiwidth:InterpolationMasses 484 1.0102029 insert phiwidth:InterpolationMasses 485 1.0116845 insert phiwidth:InterpolationMasses 486 1.0131661 insert phiwidth:InterpolationMasses 487 1.0146478 insert phiwidth:InterpolationMasses 488 1.0161294 insert phiwidth:InterpolationMasses 489 1.017611 insert phiwidth:InterpolationMasses 490 1.0190927 insert phiwidth:InterpolationMasses 491 1.0205743 insert phiwidth:InterpolationMasses 492 1.0220559 insert phiwidth:InterpolationMasses 493 1.0235376 insert phiwidth:InterpolationMasses 494 1.0250192 insert phiwidth:InterpolationMasses 495 1.0265008 insert phiwidth:InterpolationMasses 496 1.0279824 insert phiwidth:InterpolationMasses 497 1.0294641 insert phiwidth:InterpolationMasses 498 1.0309457 insert phiwidth:InterpolationMasses 499 1.0324273 insert phiwidth:InterpolationMasses 500 1.033909 insert phiwidth:InterpolationMasses 501 1.0353906 insert phiwidth:InterpolationMasses 502 1.0368722 insert phiwidth:InterpolationMasses 503 1.0383539 insert phiwidth:InterpolationMasses 504 1.0398355 insert phiwidth:InterpolationMasses 505 1.0413171 insert phiwidth:InterpolationMasses 506 1.0427988 insert phiwidth:InterpolationMasses 507 1.0442804 insert phiwidth:InterpolationMasses 508 1.045762 insert phiwidth:InterpolationMasses 509 1.0472437 insert phiwidth:InterpolationMasses 510 1.0487253 insert phiwidth:InterpolationMasses 511 1.0502069 insert phiwidth:InterpolationMasses 512 1.0516886 insert phiwidth:InterpolationMasses 513 1.0531702 insert phiwidth:InterpolationMasses 514 1.0546518 insert phiwidth:InterpolationMasses 515 1.0561335 insert phiwidth:InterpolationMasses 516 1.0576151 insert phiwidth:InterpolationMasses 517 1.0590967 insert phiwidth:InterpolationMasses 518 1.0605784 insert phiwidth:InterpolationMasses 519 1.06206 insert phiwidth:InterpolationWidths 0 1.5891438e-07 insert phiwidth:InterpolationWidths 1 1.6410894e-07 insert phiwidth:InterpolationWidths 2 1.6945626e-07 insert phiwidth:InterpolationWidths 3 1.7496076e-07 insert phiwidth:InterpolationWidths 4 1.8062704e-07 insert phiwidth:InterpolationWidths 5 1.8645971e-07 insert phiwidth:InterpolationWidths 6 1.9246374e-07 insert phiwidth:InterpolationWidths 7 1.9864409e-07 insert phiwidth:InterpolationWidths 8 2.0500529e-07 insert phiwidth:InterpolationWidths 9 2.1155362e-07 insert phiwidth:InterpolationWidths 10 2.1829513e-07 insert phiwidth:InterpolationWidths 11 2.2522975e-07 insert phiwidth:InterpolationWidths 12 2.3236963e-07 insert phiwidth:InterpolationWidths 13 2.3971918e-07 insert phiwidth:InterpolationWidths 14 2.4728689e-07 insert phiwidth:InterpolationWidths 15 2.5506161e-07 insert phiwidth:InterpolationWidths 16 2.6307015e-07 insert phiwidth:InterpolationWidths 17 2.7131244e-07 insert phiwidth:InterpolationWidths 18 2.7979171e-07 insert phiwidth:InterpolationWidths 19 2.885111e-07 insert phiwidth:InterpolationWidths 20 2.9748679e-07 insert phiwidth:InterpolationWidths 21 3.0670018e-07 insert phiwidth:InterpolationWidths 22 3.1618824e-07 insert phiwidth:InterpolationWidths 23 3.2595618e-07 insert phiwidth:InterpolationWidths 24 3.3600865e-07 insert phiwidth:InterpolationWidths 25 3.4632347e-07 insert phiwidth:InterpolationWidths 26 3.5694005e-07 insert phiwidth:InterpolationWidths 27 3.6784288e-07 insert phiwidth:InterpolationWidths 28 3.7906005e-07 insert phiwidth:InterpolationWidths 29 3.9056643e-07 insert phiwidth:InterpolationWidths 30 4.0241758e-07 insert phiwidth:InterpolationWidths 31 4.1457161e-07 insert phiwidth:InterpolationWidths 32 4.2709647e-07 insert phiwidth:InterpolationWidths 33 4.3989362e-07 insert phiwidth:InterpolationWidths 34 4.5306875e-07 insert phiwidth:InterpolationWidths 35 4.6660811e-07 insert phiwidth:InterpolationWidths 36 4.8049052e-07 insert phiwidth:InterpolationWidths 37 4.9463186e-07 insert phiwidth:InterpolationWidths 38 5.093801e-07 insert phiwidth:InterpolationWidths 39 5.2439442e-07 insert phiwidth:InterpolationWidths 40 5.3978632e-07 insert phiwidth:InterpolationWidths 41 5.556034e-07 insert phiwidth:InterpolationWidths 42 5.7183851e-07 insert phiwidth:InterpolationWidths 43 5.8843253e-07 insert phiwidth:InterpolationWidths 44 6.0547152e-07 insert phiwidth:InterpolationWidths 45 6.2294154e-07 insert phiwidth:InterpolationWidths 46 6.4080928e-07 insert phiwidth:InterpolationWidths 47 6.591951e-07 insert phiwidth:InterpolationWidths 48 6.7796539e-07 insert phiwidth:InterpolationWidths 49 6.9724073e-07 insert phiwidth:InterpolationWidths 50 7.1698611e-07 insert phiwidth:InterpolationWidths 51 7.3719106e-07 insert phiwidth:InterpolationWidths 52 7.578783e-07 insert phiwidth:InterpolationWidths 53 7.7905835e-07 insert phiwidth:InterpolationWidths 54 2.7921638e-08 insert phiwidth:InterpolationWidths 55 3.2397268e-08 insert phiwidth:InterpolationWidths 56 3.7319874e-08 insert phiwidth:InterpolationWidths 57 4.2709354e-08 insert phiwidth:InterpolationWidths 58 4.8585185e-08 insert phiwidth:InterpolationWidths 59 5.4967405e-08 insert phiwidth:InterpolationWidths 60 6.1875148e-08 insert phiwidth:InterpolationWidths 61 6.9327624e-08 insert phiwidth:InterpolationWidths 62 7.7343876e-08 insert phiwidth:InterpolationWidths 63 8.5942781e-08 insert phiwidth:InterpolationWidths 64 9.5143053e-08 insert phiwidth:InterpolationWidths 65 1.0496325e-07 insert phiwidth:InterpolationWidths 66 1.1542175e-07 insert phiwidth:InterpolationWidths 67 1.265368e-07 insert phiwidth:InterpolationWidths 68 1.3832648e-07 insert phiwidth:InterpolationWidths 69 1.5080872e-07 insert phiwidth:InterpolationWidths 70 1.6400127e-07 insert phiwidth:InterpolationWidths 71 1.7792177e-07 insert phiwidth:InterpolationWidths 72 1.9258769e-07 insert phiwidth:InterpolationWidths 73 2.0801635e-07 insert phiwidth:InterpolationWidths 74 2.2422493e-07 insert phiwidth:InterpolationWidths 75 2.4123045e-07 insert phiwidth:InterpolationWidths 76 2.5904982e-07 insert phiwidth:InterpolationWidths 77 2.7769979e-07 insert phiwidth:InterpolationWidths 78 2.9719695e-07 insert phiwidth:InterpolationWidths 79 3.1755778e-07 insert phiwidth:InterpolationWidths 80 3.3879863e-07 insert phiwidth:InterpolationWidths 81 3.6093567e-07 insert phiwidth:InterpolationWidths 82 3.83985e-07 insert phiwidth:InterpolationWidths 83 4.0796252e-07 insert phiwidth:InterpolationWidths 84 4.3288406e-07 insert phiwidth:InterpolationWidths 85 4.5876527e-07 insert phiwidth:InterpolationWidths 86 4.8562172e-07 insert phiwidth:InterpolationWidths 87 5.1346881e-07 insert phiwidth:InterpolationWidths 88 5.4232184e-07 insert phiwidth:InterpolationWidths 89 5.7219597e-07 insert phiwidth:InterpolationWidths 90 6.0310626e-07 insert phiwidth:InterpolationWidths 91 6.3506764e-07 insert phiwidth:InterpolationWidths 92 6.680949e-07 insert phiwidth:InterpolationWidths 93 7.0220274e-07 insert phiwidth:InterpolationWidths 94 7.3740572e-07 insert phiwidth:InterpolationWidths 95 7.737183e-07 insert phiwidth:InterpolationWidths 96 8.1115482e-07 insert phiwidth:InterpolationWidths 97 8.497295e-07 insert phiwidth:InterpolationWidths 98 8.8945646e-07 insert phiwidth:InterpolationWidths 99 9.3034969e-07 insert phiwidth:InterpolationWidths 100 9.724231e-07 insert phiwidth:InterpolationWidths 101 1.0156905e-06 insert phiwidth:InterpolationWidths 102 1.0601655e-06 insert phiwidth:InterpolationWidths 103 1.1058616e-06 insert phiwidth:InterpolationWidths 104 1.1527925e-06 insert phiwidth:InterpolationWidths 105 1.2009714e-06 insert phiwidth:InterpolationWidths 106 1.2504115e-06 insert phiwidth:InterpolationWidths 107 1.3011261e-06 insert phiwidth:InterpolationWidths 108 4.0492147e-07 insert phiwidth:InterpolationWidths 109 4.0867945e-07 insert phiwidth:InterpolationWidths 110 4.1245944e-07 insert phiwidth:InterpolationWidths 111 4.162615e-07 insert phiwidth:InterpolationWidths 112 4.2008571e-07 insert phiwidth:InterpolationWidths 113 4.2393213e-07 insert phiwidth:InterpolationWidths 114 4.2780081e-07 insert phiwidth:InterpolationWidths 115 4.3169182e-07 insert phiwidth:InterpolationWidths 116 4.3560523e-07 insert phiwidth:InterpolationWidths 117 4.3954111e-07 insert phiwidth:InterpolationWidths 118 4.4349951e-07 insert phiwidth:InterpolationWidths 119 4.474805e-07 insert phiwidth:InterpolationWidths 120 4.5148415e-07 insert phiwidth:InterpolationWidths 121 4.5551052e-07 insert phiwidth:InterpolationWidths 122 4.5955968e-07 insert phiwidth:InterpolationWidths 123 4.636317e-07 insert phiwidth:InterpolationWidths 124 4.6772663e-07 insert phiwidth:InterpolationWidths 125 4.7184456e-07 insert phiwidth:InterpolationWidths 126 4.7598553e-07 insert phiwidth:InterpolationWidths 127 4.8014964e-07 insert phiwidth:InterpolationWidths 128 4.8433692e-07 insert phiwidth:InterpolationWidths 129 4.8854747e-07 insert phiwidth:InterpolationWidths 130 4.9278134e-07 insert phiwidth:InterpolationWidths 131 4.9703861e-07 insert phiwidth:InterpolationWidths 132 5.0131933e-07 insert phiwidth:InterpolationWidths 133 5.0562359e-07 insert phiwidth:InterpolationWidths 134 5.0995145e-07 insert phiwidth:InterpolationWidths 135 5.1430298e-07 insert phiwidth:InterpolationWidths 136 5.1867824e-07 insert phiwidth:InterpolationWidths 137 5.2307732e-07 insert phiwidth:InterpolationWidths 138 5.2750028e-07 insert phiwidth:InterpolationWidths 139 5.3194718e-07 insert phiwidth:InterpolationWidths 140 5.3641811e-07 insert phiwidth:InterpolationWidths 141 5.4091314e-07 insert phiwidth:InterpolationWidths 142 5.4543233e-07 insert phiwidth:InterpolationWidths 143 5.4997575e-07 insert phiwidth:InterpolationWidths 144 5.5454349e-07 insert phiwidth:InterpolationWidths 145 5.5913561e-07 insert phiwidth:InterpolationWidths 146 5.6375219e-07 insert phiwidth:InterpolationWidths 147 5.683933e-07 insert phiwidth:InterpolationWidths 148 5.7305901e-07 insert phiwidth:InterpolationWidths 149 5.777494e-07 insert phiwidth:InterpolationWidths 150 5.8246455e-07 insert phiwidth:InterpolationWidths 151 5.8720453e-07 insert phiwidth:InterpolationWidths 152 5.9196941e-07 insert phiwidth:InterpolationWidths 153 5.9675927e-07 insert phiwidth:InterpolationWidths 154 6.0157419e-07 insert phiwidth:InterpolationWidths 155 6.0641424e-07 insert phiwidth:InterpolationWidths 156 6.1127951e-07 insert phiwidth:InterpolationWidths 157 6.1617007e-07 insert phiwidth:InterpolationWidths 158 4.5894716e-05 insert phiwidth:InterpolationWidths 159 4.6286582e-05 insert phiwidth:InterpolationWidths 160 4.6680394e-05 insert phiwidth:InterpolationWidths 161 4.7076154e-05 insert phiwidth:InterpolationWidths 162 4.7473867e-05 insert phiwidth:InterpolationWidths 163 4.7873533e-05 insert phiwidth:InterpolationWidths 164 4.8275157e-05 insert phiwidth:InterpolationWidths 165 4.8678741e-05 insert phiwidth:InterpolationWidths 166 4.9084287e-05 insert phiwidth:InterpolationWidths 167 4.94918e-05 insert phiwidth:InterpolationWidths 168 4.990128e-05 insert phiwidth:InterpolationWidths 169 5.0312732e-05 insert phiwidth:InterpolationWidths 170 5.0726159e-05 insert phiwidth:InterpolationWidths 171 5.1141562e-05 insert phiwidth:InterpolationWidths 172 5.1558944e-05 insert phiwidth:InterpolationWidths 173 5.197831e-05 insert phiwidth:InterpolationWidths 174 5.239966e-05 insert phiwidth:InterpolationWidths 175 5.2822999e-05 insert phiwidth:InterpolationWidths 176 5.3248329e-05 insert phiwidth:InterpolationWidths 177 5.3675652e-05 insert phiwidth:InterpolationWidths 178 5.4104972e-05 insert phiwidth:InterpolationWidths 179 5.4536291e-05 insert phiwidth:InterpolationWidths 180 5.4969612e-05 insert phiwidth:InterpolationWidths 181 5.5404939e-05 insert phiwidth:InterpolationWidths 182 5.5842273e-05 insert phiwidth:InterpolationWidths 183 5.6281617e-05 insert phiwidth:InterpolationWidths 184 5.6722975e-05 insert phiwidth:InterpolationWidths 185 5.7166348e-05 insert phiwidth:InterpolationWidths 186 5.7611741e-05 insert phiwidth:InterpolationWidths 187 5.8059155e-05 insert phiwidth:InterpolationWidths 188 5.8508593e-05 insert phiwidth:InterpolationWidths 189 5.8960059e-05 insert phiwidth:InterpolationWidths 190 5.9413554e-05 insert phiwidth:InterpolationWidths 191 5.9869082e-05 insert phiwidth:InterpolationWidths 192 6.0326646e-05 insert phiwidth:InterpolationWidths 193 6.0786248e-05 insert phiwidth:InterpolationWidths 194 6.1247891e-05 insert phiwidth:InterpolationWidths 195 6.1711578e-05 insert phiwidth:InterpolationWidths 196 6.2177311e-05 insert phiwidth:InterpolationWidths 197 6.2645094e-05 insert phiwidth:InterpolationWidths 198 6.3114928e-05 insert phiwidth:InterpolationWidths 199 6.3586818e-05 insert phiwidth:InterpolationWidths 200 6.4060765e-05 insert phiwidth:InterpolationWidths 201 6.4536772e-05 insert phiwidth:InterpolationWidths 202 6.5014843e-05 insert phiwidth:InterpolationWidths 203 6.5494979e-05 insert phiwidth:InterpolationWidths 204 6.5977184e-05 insert phiwidth:InterpolationWidths 205 6.646146e-05 insert phiwidth:InterpolationWidths 206 6.6947811e-05 insert phiwidth:InterpolationWidths 207 6.7436238e-05 insert phiwidth:InterpolationWidths 208 6.7926745e-05 insert phiwidth:InterpolationWidths 209 6.8419335e-05 insert phiwidth:InterpolationWidths 210 6.8914009e-05 insert phiwidth:InterpolationWidths 211 6.9410772e-05 insert phiwidth:InterpolationWidths 212 1.8235852e-08 insert phiwidth:InterpolationWidths 213 1.8593937e-08 insert phiwidth:InterpolationWidths 214 1.8956853e-08 insert phiwidth:InterpolationWidths 215 1.9324638e-08 insert phiwidth:InterpolationWidths 216 1.9697332e-08 insert phiwidth:InterpolationWidths 217 2.0074974e-08 insert phiwidth:InterpolationWidths 218 2.0457604e-08 insert phiwidth:InterpolationWidths 219 2.0845264e-08 insert phiwidth:InterpolationWidths 220 2.1237991e-08 insert phiwidth:InterpolationWidths 221 2.1635829e-08 insert phiwidth:InterpolationWidths 222 2.2038817e-08 insert phiwidth:InterpolationWidths 223 2.2446996e-08 insert phiwidth:InterpolationWidths 224 2.2860409e-08 insert phiwidth:InterpolationWidths 225 2.3279096e-08 insert phiwidth:InterpolationWidths 226 2.37031e-08 insert phiwidth:InterpolationWidths 227 2.4132462e-08 insert phiwidth:InterpolationWidths 228 2.4567225e-08 insert phiwidth:InterpolationWidths 229 2.5007433e-08 insert phiwidth:InterpolationWidths 230 2.5453127e-08 insert phiwidth:InterpolationWidths 231 2.5904352e-08 insert phiwidth:InterpolationWidths 232 2.636115e-08 insert phiwidth:InterpolationWidths 233 2.6823566e-08 insert phiwidth:InterpolationWidths 234 2.7291644e-08 insert phiwidth:InterpolationWidths 235 2.7765428e-08 insert phiwidth:InterpolationWidths 236 2.8244964e-08 insert phiwidth:InterpolationWidths 237 2.8730296e-08 insert phiwidth:InterpolationWidths 238 2.9221469e-08 insert phiwidth:InterpolationWidths 239 2.9718529e-08 insert phiwidth:InterpolationWidths 240 3.0221523e-08 insert phiwidth:InterpolationWidths 241 3.0730497e-08 insert phiwidth:InterpolationWidths 242 3.1245498e-08 insert phiwidth:InterpolationWidths 243 3.1766571e-08 insert phiwidth:InterpolationWidths 244 3.2293766e-08 insert phiwidth:InterpolationWidths 245 3.282713e-08 insert phiwidth:InterpolationWidths 246 3.3366711e-08 insert phiwidth:InterpolationWidths 247 3.3912556e-08 insert phiwidth:InterpolationWidths 248 3.4464717e-08 insert phiwidth:InterpolationWidths 249 3.502324e-08 insert phiwidth:InterpolationWidths 250 3.5588176e-08 insert phiwidth:InterpolationWidths 251 3.6159576e-08 insert phiwidth:InterpolationWidths 252 3.6737489e-08 insert phiwidth:InterpolationWidths 253 3.7321966e-08 insert phiwidth:InterpolationWidths 254 3.7913058e-08 insert phiwidth:InterpolationWidths 255 3.8510817e-08 insert phiwidth:InterpolationWidths 256 3.9115295e-08 insert phiwidth:InterpolationWidths 257 3.9726544e-08 insert phiwidth:InterpolationWidths 258 4.0344618e-08 insert phiwidth:InterpolationWidths 259 4.0969569e-08 insert phiwidth:InterpolationWidths 260 4.1601451e-08 insert phiwidth:InterpolationWidths 261 4.2240319e-08 insert phiwidth:InterpolationWidths 262 1.0604272e-06 insert phiwidth:InterpolationWidths 263 1.0875485e-06 insert phiwidth:InterpolationWidths 264 1.1152634e-06 insert phiwidth:InterpolationWidths 265 1.1435825e-06 insert phiwidth:InterpolationWidths 266 1.1725168e-06 insert phiwidth:InterpolationWidths 267 1.2020773e-06 insert phiwidth:InterpolationWidths 268 1.2322748e-06 insert phiwidth:InterpolationWidths 269 1.2631208e-06 insert phiwidth:InterpolationWidths 270 1.2946263e-06 insert phiwidth:InterpolationWidths 271 1.3268029e-06 insert phiwidth:InterpolationWidths 272 1.3596614e-06 insert phiwidth:InterpolationWidths 273 1.3932143e-06 insert phiwidth:InterpolationWidths 274 1.4274727e-06 insert phiwidth:InterpolationWidths 275 1.4624484e-06 insert phiwidth:InterpolationWidths 276 1.4981531e-06 insert phiwidth:InterpolationWidths 277 1.534597e-06 insert phiwidth:InterpolationWidths 278 1.5717947e-06 insert phiwidth:InterpolationWidths 279 1.6097573e-06 insert phiwidth:InterpolationWidths 280 1.6484974e-06 insert phiwidth:InterpolationWidths 281 1.6880266e-06 insert phiwidth:InterpolationWidths 282 1.7283568e-06 insert phiwidth:InterpolationWidths 283 1.7694994e-06 insert phiwidth:InterpolationWidths 284 1.8114593e-06 insert phiwidth:InterpolationWidths 285 1.8542633e-06 insert phiwidth:InterpolationWidths 286 1.8979196e-06 insert phiwidth:InterpolationWidths 287 1.9424396e-06 insert phiwidth:InterpolationWidths 288 1.9878354e-06 insert phiwidth:InterpolationWidths 289 2.0341193e-06 insert phiwidth:InterpolationWidths 290 2.0813034e-06 insert phiwidth:InterpolationWidths 291 2.1293997e-06 insert phiwidth:InterpolationWidths 292 2.1784182e-06 insert phiwidth:InterpolationWidths 293 2.2283632e-06 insert phiwidth:InterpolationWidths 294 2.2792487e-06 insert phiwidth:InterpolationWidths 295 2.3311157e-06 insert phiwidth:InterpolationWidths 296 2.3839625e-06 insert phiwidth:InterpolationWidths 297 2.4378005e-06 insert phiwidth:InterpolationWidths 298 2.4926418e-06 insert phiwidth:InterpolationWidths 299 2.5484989e-06 insert phiwidth:InterpolationWidths 300 2.6053842e-06 insert phiwidth:InterpolationWidths 301 2.6633102e-06 insert phiwidth:InterpolationWidths 302 2.7222892e-06 insert phiwidth:InterpolationWidths 303 2.7823328e-06 insert phiwidth:InterpolationWidths 304 2.8434513e-06 insert phiwidth:InterpolationWidths 305 2.9056302e-06 insert phiwidth:InterpolationWidths 306 2.9689361e-06 insert phiwidth:InterpolationWidths 307 3.0333634e-06 insert phiwidth:InterpolationWidths 308 3.0989159e-06 insert phiwidth:InterpolationWidths 309 3.1655473e-06 insert phiwidth:InterpolationWidths 310 3.2334523e-06 insert phiwidth:InterpolationWidths 311 3.302484e-06 insert phiwidth:InterpolationWidths 312 3.3726966e-06 insert phiwidth:InterpolationWidths 313 3.4440784e-06 insert phiwidth:InterpolationWidths 314 3.5166638e-06 insert phiwidth:InterpolationWidths 315 3.5904896e-06 insert phiwidth:InterpolationWidths 316 1.1095967e-07 insert phiwidth:InterpolationWidths 317 1.1509895e-07 insert phiwidth:InterpolationWidths 318 1.1931323e-07 insert phiwidth:InterpolationWidths 319 1.2360255e-07 insert phiwidth:InterpolationWidths 320 1.2796719e-07 insert phiwidth:InterpolationWidths 321 1.3240733e-07 insert phiwidth:InterpolationWidths 322 1.3692299e-07 insert phiwidth:InterpolationWidths 323 1.4151442e-07 insert phiwidth:InterpolationWidths 324 1.4618175e-07 insert phiwidth:InterpolationWidths 325 1.5092522e-07 insert phiwidth:InterpolationWidths 326 1.5574484e-07 insert phiwidth:InterpolationWidths 327 1.6064082e-07 insert phiwidth:InterpolationWidths 328 1.6561333e-07 insert phiwidth:InterpolationWidths 329 1.706621e-07 insert phiwidth:InterpolationWidths 330 1.7578714e-07 insert phiwidth:InterpolationWidths 331 1.8098851e-07 insert phiwidth:InterpolationWidths 332 1.8626626e-07 insert phiwidth:InterpolationWidths 333 1.9162047e-07 insert phiwidth:InterpolationWidths 334 1.9705123e-07 insert phiwidth:InterpolationWidths 335 2.0255864e-07 insert phiwidth:InterpolationWidths 336 2.0814279e-07 insert phiwidth:InterpolationWidths 337 2.1380381e-07 insert phiwidth:InterpolationWidths 338 2.195418e-07 insert phiwidth:InterpolationWidths 339 2.2535687e-07 insert phiwidth:InterpolationWidths 340 2.3124917e-07 insert phiwidth:InterpolationWidths 341 2.372188e-07 insert phiwidth:InterpolationWidths 342 2.432659e-07 insert phiwidth:InterpolationWidths 343 2.4939059e-07 insert phiwidth:InterpolationWidths 344 2.5559302e-07 insert phiwidth:InterpolationWidths 345 2.6187331e-07 insert phiwidth:InterpolationWidths 346 2.6823159e-07 insert phiwidth:InterpolationWidths 347 2.7466802e-07 insert phiwidth:InterpolationWidths 348 2.8118272e-07 insert phiwidth:InterpolationWidths 349 2.8777583e-07 insert phiwidth:InterpolationWidths 350 2.9444751e-07 insert phiwidth:InterpolationWidths 351 3.0119789e-07 insert phiwidth:InterpolationWidths 352 3.080271e-07 insert phiwidth:InterpolationWidths 353 3.1493531e-07 insert phiwidth:InterpolationWidths 354 3.2192265e-07 insert phiwidth:InterpolationWidths 355 3.2898927e-07 insert phiwidth:InterpolationWidths 356 3.3613531e-07 insert phiwidth:InterpolationWidths 357 3.4336092e-07 insert phiwidth:InterpolationWidths 358 3.5066626e-07 insert phiwidth:InterpolationWidths 359 3.5805145e-07 insert phiwidth:InterpolationWidths 360 3.6551666e-07 insert phiwidth:InterpolationWidths 361 3.7306204e-07 insert phiwidth:InterpolationWidths 362 3.8068772e-07 insert phiwidth:InterpolationWidths 363 3.8839386e-07 insert phiwidth:InterpolationWidths 364 3.9618061e-07 insert phiwidth:InterpolationWidths 365 4.0404812e-07 insert phiwidth:InterpolationWidths 366 4.1199653e-07 insert phiwidth:InterpolationWidths 367 4.2002599e-07 insert phiwidth:InterpolationWidths 368 4.2813666e-07 insert phiwidth:InterpolationWidths 369 4.3632869e-07 insert phiwidth:InterpolationWidths 370 0.00044403303 insert phiwidth:InterpolationWidths 371 0.00045177873 insert phiwidth:InterpolationWidths 372 0.00045962866 insert phiwidth:InterpolationWidths 373 0.00046758381 insert phiwidth:InterpolationWidths 374 0.00047564525 insert phiwidth:InterpolationWidths 375 0.00048381392 insert phiwidth:InterpolationWidths 376 0.00049209098 insert phiwidth:InterpolationWidths 377 0.00050047746 insert phiwidth:InterpolationWidths 378 0.00050897447 insert phiwidth:InterpolationWidths 379 0.00051758309 insert phiwidth:InterpolationWidths 380 0.00052630446 insert phiwidth:InterpolationWidths 381 0.00053513972 insert phiwidth:InterpolationWidths 382 0.00054409002 insert phiwidth:InterpolationWidths 383 0.00055315654 insert phiwidth:InterpolationWidths 384 0.00056234048 insert phiwidth:InterpolationWidths 385 0.00057164303 insert phiwidth:InterpolationWidths 386 0.00058106544 insert phiwidth:InterpolationWidths 387 0.00059060895 insert phiwidth:InterpolationWidths 388 0.00060027482 insert phiwidth:InterpolationWidths 389 0.00061006434 insert phiwidth:InterpolationWidths 390 0.00061997881 insert phiwidth:InterpolationWidths 391 0.00062997185 insert phiwidth:InterpolationWidths 392 0.0006401879 insert phiwidth:InterpolationWidths 393 0.00065048521 insert phiwidth:InterpolationWidths 394 0.00066091285 insert phiwidth:InterpolationWidths 395 0.00067147225 insert phiwidth:InterpolationWidths 396 0.00068216476 insert phiwidth:InterpolationWidths 397 0.00069299191 insert phiwidth:InterpolationWidths 398 0.00070395499 insert phiwidth:InterpolationWidths 399 0.00071505559 insert phiwidth:InterpolationWidths 400 0.00072629516 insert phiwidth:InterpolationWidths 401 0.00073767474 insert phiwidth:InterpolationWidths 402 0.00074919721 insert phiwidth:InterpolationWidths 403 0.00076086274 insert phiwidth:InterpolationWidths 404 0.00077267333 insert phiwidth:InterpolationWidths 405 0.00078463054 insert phiwidth:InterpolationWidths 406 0.00079673595 insert phiwidth:InterpolationWidths 407 0.00080899115 insert phiwidth:InterpolationWidths 408 0.00082139775 insert phiwidth:InterpolationWidths 409 0.00083395736 insert phiwidth:InterpolationWidths 410 0.00084667162 insert phiwidth:InterpolationWidths 411 0.00085954112 insert phiwidth:InterpolationWidths 412 0.00087257065 insert phiwidth:InterpolationWidths 413 0.00088575874 insert phiwidth:InterpolationWidths 414 0.00089910623 insert phiwidth:InterpolationWidths 415 0.00091262041 insert phiwidth:InterpolationWidths 416 0.00092629735 insert phiwidth:InterpolationWidths 417 0.00094014063 insert phiwidth:InterpolationWidths 418 0.00095415192 insert phiwidth:InterpolationWidths 419 0.00096833292 insert phiwidth:InterpolationWidths 420 4.875796e-08 insert phiwidth:InterpolationWidths 421 4.9036717e-08 insert phiwidth:InterpolationWidths 422 4.9322144e-08 insert phiwidth:InterpolationWidths 423 4.9608989e-08 insert phiwidth:InterpolationWidths 424 4.9897255e-08 insert phiwidth:InterpolationWidths 425 5.0186946e-08 insert phiwidth:InterpolationWidths 426 5.0478064e-08 insert phiwidth:InterpolationWidths 427 5.0770614e-08 insert phiwidth:InterpolationWidths 428 5.1064599e-08 insert phiwidth:InterpolationWidths 429 5.1360022e-08 insert phiwidth:InterpolationWidths 430 5.189369e-08 insert phiwidth:InterpolationWidths 431 5.1955196e-08 insert phiwidth:InterpolationWidths 432 5.2254954e-08 insert phiwidth:InterpolationWidths 433 5.2556163e-08 insert phiwidth:InterpolationWidths 434 5.2858827e-08 insert phiwidth:InterpolationWidths 435 5.3162949e-08 insert phiwidth:InterpolationWidths 436 5.3468532e-08 insert phiwidth:InterpolationWidths 437 5.377558e-08 insert phiwidth:InterpolationWidths 438 5.4084095e-08 insert phiwidth:InterpolationWidths 439 5.4394081e-08 insert phiwidth:InterpolationWidths 440 5.4705541e-08 insert phiwidth:InterpolationWidths 441 5.5018479e-08 insert phiwidth:InterpolationWidths 442 5.5332897e-08 insert phiwidth:InterpolationWidths 443 5.5648798e-08 insert phiwidth:InterpolationWidths 444 5.5966255e-08 insert phiwidth:InterpolationWidths 445 5.6285064e-08 insert phiwidth:InterpolationWidths 446 5.6605435e-08 insert phiwidth:InterpolationWidths 447 5.6927302e-08 insert phiwidth:InterpolationWidths 448 5.7250667e-08 insert phiwidth:InterpolationWidths 449 5.7575535e-08 insert phiwidth:InterpolationWidths 450 5.7901908e-08 insert phiwidth:InterpolationWidths 451 5.822979e-08 insert phiwidth:InterpolationWidths 452 5.8559182e-08 insert phiwidth:InterpolationWidths 453 5.8890089e-08 insert phiwidth:InterpolationWidths 454 5.9222513e-08 insert phiwidth:InterpolationWidths 455 5.9556458e-08 insert phiwidth:InterpolationWidths 456 5.9891926e-08 insert phiwidth:InterpolationWidths 457 6.022892e-08 insert phiwidth:InterpolationWidths 458 6.0567444e-08 insert phiwidth:InterpolationWidths 459 6.09075e-08 insert phiwidth:InterpolationWidths 460 6.1249091e-08 insert phiwidth:InterpolationWidths 461 6.1592221e-08 insert phiwidth:InterpolationWidths 462 6.1936891e-08 insert phiwidth:InterpolationWidths 463 6.2283106e-08 insert phiwidth:InterpolationWidths 464 6.2630868e-08 insert phiwidth:InterpolationWidths 465 6.298018e-08 insert phiwidth:InterpolationWidths 466 6.3331045e-08 insert phiwidth:InterpolationWidths 467 6.3683466e-08 insert phiwidth:InterpolationWidths 468 6.4037446e-08 insert phiwidth:InterpolationWidths 469 6.4392987e-08 insert phiwidth:InterpolationWidths 470 9.3185548e-09 insert phiwidth:InterpolationWidths 471 9.4156793e-09 insert phiwidth:InterpolationWidths 472 9.5136412e-09 insert phiwidth:InterpolationWidths 473 9.6124433e-09 insert phiwidth:InterpolationWidths 474 9.7120882e-09 insert phiwidth:InterpolationWidths 475 9.8125784e-09 insert phiwidth:InterpolationWidths 476 9.9139165e-09 insert phiwidth:InterpolationWidths 477 1.0016105e-08 insert phiwidth:InterpolationWidths 478 1.0119147e-08 insert phiwidth:InterpolationWidths 479 1.0223044e-08 insert phiwidth:InterpolationWidths 480 1.0327799e-08 insert phiwidth:InterpolationWidths 481 1.0433415e-08 insert phiwidth:InterpolationWidths 482 1.0539894e-08 insert phiwidth:InterpolationWidths 483 1.0647237e-08 insert phiwidth:InterpolationWidths 484 1.0755449e-08 insert phiwidth:InterpolationWidths 485 1.0864531e-08 insert phiwidth:InterpolationWidths 486 1.0974486e-08 insert phiwidth:InterpolationWidths 487 1.1085315e-08 insert phiwidth:InterpolationWidths 488 1.119733e-08 insert phiwidth:InterpolationWidths 489 1.1309608e-08 insert phiwidth:InterpolationWidths 490 1.1423076e-08 insert phiwidth:InterpolationWidths 491 1.1537428e-08 insert phiwidth:InterpolationWidths 492 1.1652667e-08 insert phiwidth:InterpolationWidths 493 1.1768795e-08 insert phiwidth:InterpolationWidths 494 1.1885814e-08 insert phiwidth:InterpolationWidths 495 1.2003726e-08 insert phiwidth:InterpolationWidths 496 1.2122533e-08 insert phiwidth:InterpolationWidths 497 1.2242239e-08 insert phiwidth:InterpolationWidths 498 1.2362844e-08 insert phiwidth:InterpolationWidths 499 1.2484352e-08 insert phiwidth:InterpolationWidths 500 1.2606764e-08 insert phiwidth:InterpolationWidths 501 1.2730083e-08 insert phiwidth:InterpolationWidths 502 1.2854311e-08 insert phiwidth:InterpolationWidths 503 1.2979449e-08 insert phiwidth:InterpolationWidths 504 1.3105501e-08 insert phiwidth:InterpolationWidths 505 1.3232468e-08 insert phiwidth:InterpolationWidths 506 1.3360352e-08 insert phiwidth:InterpolationWidths 507 1.3489156e-08 insert phiwidth:InterpolationWidths 508 1.3618882e-08 insert phiwidth:InterpolationWidths 509 1.3749532e-08 insert phiwidth:InterpolationWidths 510 1.3881107e-08 insert phiwidth:InterpolationWidths 511 1.401361e-08 insert phiwidth:InterpolationWidths 512 1.4147044e-08 insert phiwidth:InterpolationWidths 513 1.428141e-08 insert phiwidth:InterpolationWidths 514 1.441671e-08 insert phiwidth:InterpolationWidths 515 1.4552946e-08 insert phiwidth:InterpolationWidths 516 1.4690121e-08 insert phiwidth:InterpolationWidths 517 1.4828236e-08 insert phiwidth:InterpolationWidths 518 1.4967294e-08 insert phiwidth:InterpolationWidths 519 1.5107296e-08 insert phiwidth:NumberofEntries 0 0 insert phiwidth:NumberofEntries 1 0 insert phiwidth:NumberofEntries 2 54 insert phiwidth:NumberofEntries 3 54 insert phiwidth:NumberofEntries 4 108 insert phiwidth:NumberofEntries 5 158 insert phiwidth:NumberofEntries 6 212 insert phiwidth:NumberofEntries 7 262 insert phiwidth:NumberofEntries 8 262 insert phiwidth:NumberofEntries 9 316 insert phiwidth:NumberofEntries 10 316 insert phiwidth:NumberofEntries 11 370 insert phiwidth:NumberofEntries 12 370 insert phiwidth:NumberofEntries 13 420 insert phiwidth:NumberofEntries 14 420 insert phiwidth:NumberofEntries 15 470 insert phiwidth:NumberofEntries 16 470 insert phiwidth:NumberofEntries 17 520 insert phiwidth:NumberofEntries 18 520 newdef /Herwig/Particles/phi:Width_generator phiwidth # create Herwig::GenericWidthGenerator K*+width newdef K*+width:Particle /Herwig/Particles/K*+ newdef K*+width:Prefactor 1.00099 newdef K*+width:BRNormalize 1 newdef K*+width:BRMinimum 0.01 newdef K*+width:Points 50 newdef K*+width:InterpolationOrder 1 insert K*+width:MEtype 0 1 insert K*+width:MEtype 1 1 insert K*+width:MEtype 2 1 insert K*+width:MEcode 0 1 insert K*+width:MEcode 1 0 insert K*+width:MEcode 2 0 insert K*+width:MEcoupling 0 0.225854 insert K*+width:MEcoupling 1 3.23317 insert K*+width:MEcoupling 2 4.66529 insert K*+width:ModeOn 0 0 insert K*+width:ModeOn 1 1 insert K*+width:ModeOn 2 1 insert K*+width:MinimumMasses 0 0.493677 insert K*+width:MinimumMasses 1 0.628655 insert K*+width:MinimumMasses 2 0.637218 insert K*+width:MEmass1 0 0 insert K*+width:MEmass1 1 0.493677 insert K*+width:MEmass1 2 0.497648 insert K*+width:MEmass2 0 0.493677 insert K*+width:MEmass2 1 0.134978 insert K*+width:MEmass2 2 0.13957 insert K*+width:DecayModes 0 K*+->K+,gamma; insert K*+width:DecayModes 1 K*+->K+,pi0; insert K*+width:DecayModes 2 K*+->K0,pi+; insert K*+width:NumberofEntries 0 0 insert K*+width:NumberofEntries 1 0 insert K*+width:NumberofEntries 2 0 newdef /Herwig/Particles/K*+:Width_generator K*+width newdef /Herwig/Particles/K*-:Width_generator K*+width # create Herwig::GenericWidthGenerator K*0width newdef K*0width:Particle /Herwig/Particles/K*0 newdef K*0width:Prefactor 1.00232 newdef K*0width:BRNormalize 1 newdef K*0width:BRMinimum 0.01 newdef K*0width:Points 50 newdef K*0width:InterpolationOrder 1 insert K*0width:MEtype 0 1 insert K*0width:MEtype 1 1 insert K*0width:MEtype 2 1 insert K*0width:MEcode 0 0 insert K*0width:MEcode 1 1 insert K*0width:MEcode 2 0 insert K*0width:MEcoupling 0 4.52937 insert K*0width:MEcoupling 1 0.343907 insert K*0width:MEcoupling 2 3.21995 insert K*0width:ModeOn 0 1 insert K*0width:ModeOn 1 0 insert K*0width:ModeOn 2 1 insert K*0width:MinimumMasses 0 0.633247 insert K*0width:MinimumMasses 1 0.497648 insert K*0width:MinimumMasses 2 0.632626 insert K*0width:MEmass1 0 0.493677 insert K*0width:MEmass1 1 0 insert K*0width:MEmass1 2 0.497648 insert K*0width:MEmass2 0 0.13957 insert K*0width:MEmass2 1 0.497648 insert K*0width:MEmass2 2 0.134978 insert K*0width:DecayModes 0 K*0->K+,pi-; insert K*0width:DecayModes 1 K*0->K0,gamma; insert K*0width:DecayModes 2 K*0->K0,pi0; insert K*0width:NumberofEntries 0 0 insert K*0width:NumberofEntries 1 0 insert K*0width:NumberofEntries 2 0 newdef /Herwig/Particles/K*0:Width_generator K*0width newdef /Herwig/Particles/K*bar0:Width_generator K*0width # create Herwig::GenericWidthGenerator f'_2width newdef f'_2width:Particle /Herwig/Particles/f'_2 newdef f'_2width:Prefactor 1.00823 newdef f'_2width:BRNormalize 1 newdef f'_2width:BRMinimum 0.01 newdef f'_2width:Points 50 newdef f'_2width:InterpolationOrder 1 insert f'_2width:MEtype 0 1 insert f'_2width:MEtype 1 1 insert f'_2width:MEtype 2 2 insert f'_2width:MEtype 3 1 insert f'_2width:MEtype 4 1 insert f'_2width:MEtype 5 1 insert f'_2width:MEcode 0 7 insert f'_2width:MEcode 1 7 insert f'_2width:MEcode 2 0 insert f'_2width:MEcode 3 9 insert f'_2width:MEcode 4 7 insert f'_2width:MEcode 5 7 insert f'_2width:MEcoupling 0 22.3393 insert f'_2width:MEcoupling 1 22.6692 insert f'_2width:MEcoupling 2 0.998505 insert f'_2width:MEcoupling 3 0.00245263 insert f'_2width:MEcoupling 4 1.31143 insert f'_2width:MEcoupling 5 0.924898 insert f'_2width:ModeOn 0 1 insert f'_2width:ModeOn 1 1 insert f'_2width:ModeOn 2 1 insert f'_2width:ModeOn 3 0 insert f'_2width:ModeOn 4 0 insert f'_2width:ModeOn 5 0 insert f'_2width:MinimumMasses 0 0.987354 insert f'_2width:MinimumMasses 1 0.995296 insert f'_2width:MinimumMasses 2 1.09499 insert f'_2width:MinimumMasses 3 0 insert f'_2width:MinimumMasses 4 0.27914 insert f'_2width:MinimumMasses 5 0.269955 insert f'_2width:MEmass1 0 0.493677 insert f'_2width:MEmass1 1 0.497648 insert f'_2width:MEmass1 2 0.54751 insert f'_2width:MEmass1 3 0 insert f'_2width:MEmass1 4 0.13957 insert f'_2width:MEmass1 5 0.134978 insert f'_2width:MEmass2 0 0.493677 insert f'_2width:MEmass2 1 0.497648 insert f'_2width:MEmass2 2 0.54751 insert f'_2width:MEmass2 3 0 insert f'_2width:MEmass2 4 0.13957 insert f'_2width:MEmass2 5 0.134978 insert f'_2width:DecayModes 0 f'_2->K+,K-; insert f'_2width:DecayModes 1 f'_2->K0,Kbar0; insert f'_2width:DecayModes 2 f'_2->eta,eta; insert f'_2width:DecayModes 3 f'_2->gamma,gamma; insert f'_2width:DecayModes 4 f'_2->pi+,pi-; insert f'_2width:DecayModes 5 f'_2->pi0,pi0; insert f'_2width:InterpolationMasses 0 1.1302041 insert f'_2width:InterpolationMasses 1 1.145102 insert f'_2width:InterpolationMasses 2 1.16 insert f'_2width:InterpolationMasses 3 1.174898 insert f'_2width:InterpolationMasses 4 1.1897959 insert f'_2width:InterpolationMasses 5 1.2046939 insert f'_2width:InterpolationMasses 6 1.2195918 insert f'_2width:InterpolationMasses 7 1.2344898 insert f'_2width:InterpolationMasses 8 1.2493878 insert f'_2width:InterpolationMasses 9 1.2642857 insert f'_2width:InterpolationMasses 10 1.2791837 insert f'_2width:InterpolationMasses 11 1.2940816 insert f'_2width:InterpolationMasses 12 1.3089796 insert f'_2width:InterpolationMasses 13 1.3238776 insert f'_2width:InterpolationMasses 14 1.3387755 insert f'_2width:InterpolationMasses 15 1.3536735 insert f'_2width:InterpolationMasses 16 1.3685714 insert f'_2width:InterpolationMasses 17 1.3834694 insert f'_2width:InterpolationMasses 18 1.3983673 insert f'_2width:InterpolationMasses 19 1.4132653 insert f'_2width:InterpolationMasses 20 1.4281633 insert f'_2width:InterpolationMasses 21 1.4430612 insert f'_2width:InterpolationMasses 22 1.4579592 insert f'_2width:InterpolationMasses 23 1.4728571 insert f'_2width:InterpolationMasses 24 1.4877551 insert f'_2width:InterpolationMasses 25 1.5026531 insert f'_2width:InterpolationMasses 26 1.517551 insert f'_2width:InterpolationMasses 27 1.532449 insert f'_2width:InterpolationMasses 28 1.5473469 insert f'_2width:InterpolationMasses 29 1.5622449 insert f'_2width:InterpolationMasses 30 1.5771429 insert f'_2width:InterpolationMasses 31 1.5920408 insert f'_2width:InterpolationMasses 32 1.6069388 insert f'_2width:InterpolationMasses 33 1.6218367 insert f'_2width:InterpolationMasses 34 1.6367347 insert f'_2width:InterpolationMasses 35 1.6516327 insert f'_2width:InterpolationMasses 36 1.6665306 insert f'_2width:InterpolationMasses 37 1.6814286 insert f'_2width:InterpolationMasses 38 1.6963265 insert f'_2width:InterpolationMasses 39 1.7112245 insert f'_2width:InterpolationMasses 40 1.7261224 insert f'_2width:InterpolationMasses 41 1.7410204 insert f'_2width:InterpolationMasses 42 1.7559184 insert f'_2width:InterpolationMasses 43 1.7708163 insert f'_2width:InterpolationMasses 44 1.7857143 insert f'_2width:InterpolationMasses 45 1.8006122 insert f'_2width:InterpolationMasses 46 1.8155102 insert f'_2width:InterpolationMasses 47 1.8304082 insert f'_2width:InterpolationMasses 48 1.8453061 insert f'_2width:InterpolationMasses 49 1.8602041 insert f'_2width:InterpolationMasses 50 1.875102 insert f'_2width:InterpolationMasses 51 1.89 insert f'_2width:InterpolationMasses 52 1.904898 insert f'_2width:InterpolationMasses 53 1.9197959 insert f'_2width:InterpolationWidths 0 1.747042e-05 insert f'_2width:InterpolationWidths 1 4.1832423e-05 insert f'_2width:InterpolationWidths 2 7.947425e-05 insert f'_2width:InterpolationWidths 3 0.00013195008 insert f'_2width:InterpolationWidths 4 0.00020056043 insert f'_2width:InterpolationWidths 5 0.00028642192 insert f'_2width:InterpolationWidths 6 0.00039051096 insert f'_2width:InterpolationWidths 7 0.00051369331 insert f'_2width:InterpolationWidths 8 0.00065674535 insert f'_2width:InterpolationWidths 9 0.00082036994 insert f'_2width:InterpolationWidths 10 0.0010052086 insert f'_2width:InterpolationWidths 11 0.0012118511 insert f'_2width:InterpolationWidths 12 0.0014408434 insert f'_2width:InterpolationWidths 13 0.0016926935 insert f'_2width:InterpolationWidths 14 0.001967877 insert f'_2width:InterpolationWidths 15 0.0022668415 insert f'_2width:InterpolationWidths 16 0.0025900097 insert f'_2width:InterpolationWidths 17 0.0029377833 insert f'_2width:InterpolationWidths 18 0.0033105449 insert f'_2width:InterpolationWidths 19 0.0037086608 insert f'_2width:InterpolationWidths 20 0.0041324825 insert f'_2width:InterpolationWidths 21 0.0045823489 insert f'_2width:InterpolationWidths 22 0.0050585873 insert f'_2width:InterpolationWidths 23 0.0055615152 insert f'_2width:InterpolationWidths 24 0.0060914409 insert f'_2width:InterpolationWidths 25 0.0066486648 insert f'_2width:InterpolationWidths 26 0.0072334804 insert f'_2width:InterpolationWidths 27 0.0078461748 insert f'_2width:InterpolationWidths 28 0.0084870294 insert f'_2width:InterpolationWidths 29 0.0091563207 insert f'_2width:InterpolationWidths 30 0.0098543209 insert f'_2width:InterpolationWidths 31 0.010581298 insert f'_2width:InterpolationWidths 32 0.011337517 insert f'_2width:InterpolationWidths 33 0.012123238 insert f'_2width:InterpolationWidths 34 0.012938721 insert f'_2width:InterpolationWidths 35 0.013784222 insert f'_2width:InterpolationWidths 36 0.014659995 insert f'_2width:InterpolationWidths 37 0.015566292 insert f'_2width:InterpolationWidths 38 0.016503362 insert f'_2width:InterpolationWidths 39 0.017471456 insert f'_2width:InterpolationWidths 40 0.018470819 insert f'_2width:InterpolationWidths 41 0.019501699 insert f'_2width:InterpolationWidths 42 0.02056434 insert f'_2width:InterpolationWidths 43 0.021658987 insert f'_2width:InterpolationWidths 44 0.022785883 insert f'_2width:InterpolationWidths 45 0.023945271 insert f'_2width:InterpolationWidths 46 0.025137393 insert f'_2width:InterpolationWidths 47 0.026362491 insert f'_2width:InterpolationWidths 48 0.027620806 insert f'_2width:InterpolationWidths 49 0.028912579 insert f'_2width:InterpolationWidths 50 0.03023805 insert f'_2width:InterpolationWidths 51 0.03159746 insert f'_2width:InterpolationWidths 52 0.032991048 insert f'_2width:InterpolationWidths 53 0.034419056 insert f'_2width:NumberofEntries 0 0 insert f'_2width:NumberofEntries 1 0 insert f'_2width:NumberofEntries 2 54 insert f'_2width:NumberofEntries 3 54 insert f'_2width:NumberofEntries 4 54 insert f'_2width:NumberofEntries 5 54 newdef /Herwig/Particles/f'_2:Width_generator f'_2width # create Herwig::GenericWidthGenerator sigmawidth newdef sigmawidth:Particle /Herwig/Particles/sigma newdef sigmawidth:Prefactor 1 newdef sigmawidth:BRNormalize 1 newdef sigmawidth:BRMinimum 0.01 newdef sigmawidth:Points 50 newdef sigmawidth:InterpolationOrder 1 insert sigmawidth:MEtype 0 1 insert sigmawidth:MEtype 1 1 insert sigmawidth:MEcode 0 6 insert sigmawidth:MEcode 1 6 insert sigmawidth:MEcoupling 0 6.021 insert sigmawidth:MEcoupling 1 4.24941 insert sigmawidth:ModeOn 0 1 insert sigmawidth:ModeOn 1 1 insert sigmawidth:MinimumMasses 0 0.27914 insert sigmawidth:MinimumMasses 1 0.269955 insert sigmawidth:MEmass1 0 0.13957 insert sigmawidth:MEmass1 1 0.134978 insert sigmawidth:MEmass2 0 0.13957 insert sigmawidth:MEmass2 1 0.134978 insert sigmawidth:DecayModes 0 sigma->pi+,pi-; insert sigmawidth:DecayModes 1 sigma->pi0,pi0; insert sigmawidth:NumberofEntries 0 0 insert sigmawidth:NumberofEntries 1 0 newdef /Herwig/Particles/sigma:Width_generator sigmawidth # create Herwig::GenericWidthGenerator f_0width newdef f_0width:Particle /Herwig/Particles/f_0 newdef f_0width:Prefactor 0.999845 newdef f_0width:BRNormalize 0 newdef f_0width:BRMinimum 0.01 newdef f_0width:Points 50 newdef f_0width:InterpolationOrder 1 insert f_0width:MEtype 0 1 insert f_0width:MEtype 1 1 insert f_0width:MEtype 2 0 insert f_0width:MEtype 3 1 insert f_0width:MEtype 4 1 insert f_0width:MEcode 0 6 insert f_0width:MEcode 1 6 insert f_0width:MEcode 2 0 insert f_0width:MEcode 3 6 insert f_0width:MEcode 4 6 insert f_0width:MEcoupling 0 1.05699 insert f_0width:MEcoupling 1 1.05699 insert f_0width:MEcoupling 2 6e-06 insert f_0width:MEcoupling 3 2.43523 insert f_0width:MEcoupling 4 1.72021 insert f_0width:ModeOn 0 1 insert f_0width:ModeOn 1 1 insert f_0width:ModeOn 2 0 insert f_0width:ModeOn 3 1 insert f_0width:ModeOn 4 1 insert f_0width:MinimumMasses 0 0.987354 insert f_0width:MinimumMasses 1 0.995296 insert f_0width:MinimumMasses 2 0 insert f_0width:MinimumMasses 3 0.27914 insert f_0width:MinimumMasses 4 0.269955 insert f_0width:MEmass1 0 0.493677 insert f_0width:MEmass1 1 0.497648 insert f_0width:MEmass1 2 0 insert f_0width:MEmass1 3 0.13957 insert f_0width:MEmass1 4 0.134978 insert f_0width:MEmass2 0 0.493677 insert f_0width:MEmass2 1 0.497648 insert f_0width:MEmass2 2 0 insert f_0width:MEmass2 3 0.13957 insert f_0width:MEmass2 4 0.134978 insert f_0width:DecayModes 0 f_0->K+,K-; insert f_0width:DecayModes 1 f_0->K0,Kbar0; insert f_0width:DecayModes 2 f_0->gamma,gamma; insert f_0width:DecayModes 3 f_0->pi+,pi-; insert f_0width:DecayModes 4 f_0->pi0,pi0; insert f_0width:NumberofEntries 0 0 insert f_0width:NumberofEntries 1 0 insert f_0width:NumberofEntries 2 0 insert f_0width:NumberofEntries 3 0 insert f_0width:NumberofEntries 4 0 newdef /Herwig/Particles/f_0:Width_generator f_0width # create Herwig::GenericWidthGenerator a_20width newdef a_20width:Particle /Herwig/Particles/a_20 newdef a_20width:Prefactor 1.00456 newdef a_20width:BRNormalize 1 newdef a_20width:BRMinimum 0.01 newdef a_20width:Points 50 newdef a_20width:InterpolationOrder 1 insert a_20width:MEtype 0 1 insert a_20width:MEtype 1 1 insert a_20width:MEtype 2 2 insert a_20width:MEtype 3 2 insert a_20width:MEtype 4 1 insert a_20width:MEtype 5 2 insert a_20width:MEtype 6 2 insert a_20width:MEtype 7 2 insert a_20width:MEcode 0 7 insert a_20width:MEcode 1 7 insert a_20width:MEcode 2 0 insert a_20width:MEcode 3 0 insert a_20width:MEcode 4 9 insert a_20width:MEcode 5 0 insert a_20width:MEcode 6 0 insert a_20width:MEcode 7 0 insert a_20width:MEcoupling 0 9.62766 insert a_20width:MEcoupling 1 9.88191 insert a_20width:MEcoupling 2 0.969581 insert a_20width:MEcoupling 3 0.995718 insert a_20width:MEcoupling 4 0.009581 insert a_20width:MEcoupling 5 0.981342 insert a_20width:MEcoupling 6 0.998329 insert a_20width:MEcoupling 7 0.998329 insert a_20width:ModeOn 0 1 insert a_20width:ModeOn 1 1 insert a_20width:ModeOn 2 0 insert a_20width:ModeOn 3 1 insert a_20width:ModeOn 4 0 insert a_20width:ModeOn 5 1 insert a_20width:ModeOn 6 1 insert a_20width:ModeOn 7 1 insert a_20width:MinimumMasses 0 0.987354 insert a_20width:MinimumMasses 1 0.995296 insert a_20width:MinimumMasses 2 1.09073 insert a_20width:MinimumMasses 3 0.682475 insert a_20width:MinimumMasses 4 0 insert a_20width:MinimumMasses 5 1.07325 insert a_20width:MinimumMasses 6 0.51507 insert a_20width:MinimumMasses 7 0.51507 insert a_20width:MEmass1 0 0.493677 insert a_20width:MEmass1 1 0.497648 insert a_20width:MEmass1 2 0.95778 insert a_20width:MEmass1 3 0.54751 insert a_20width:MEmass1 4 0 insert a_20width:MEmass1 5 0.78265 insert a_20width:MEmass1 6 0.13957 insert a_20width:MEmass1 7 0.13957 insert a_20width:MEmass2 0 0.493677 insert a_20width:MEmass2 1 0.497648 insert a_20width:MEmass2 2 0.134978 insert a_20width:MEmass2 3 0.134978 insert a_20width:MEmass2 4 0 insert a_20width:MEmass2 5 0.7755 insert a_20width:MEmass2 6 0.7755 insert a_20width:MEmass2 7 0.7755 insert a_20width:DecayModes 0 a_20->K+,K-; insert a_20width:DecayModes 1 a_20->K0,Kbar0; insert a_20width:DecayModes 2 a_20->eta',pi0; insert a_20width:DecayModes 3 a_20->eta,pi0; insert a_20width:DecayModes 4 a_20->gamma,gamma; insert a_20width:DecayModes 5 a_20->omega,rho0; insert a_20width:DecayModes 6 a_20->rho+,pi-; insert a_20width:DecayModes 7 a_20->rho-,pi+; insert a_20width:InterpolationMasses 0 1.0868306 insert a_20width:InterpolationMasses 1 1.0907276 insert a_20width:InterpolationMasses 2 1.1043 insert a_20width:InterpolationMasses 3 1.1130347 insert a_20width:InterpolationMasses 4 1.1217694 insert a_20width:InterpolationMasses 5 1.1305041 insert a_20width:InterpolationMasses 6 1.1392388 insert a_20width:InterpolationMasses 7 1.1479735 insert a_20width:InterpolationMasses 8 1.1567082 insert a_20width:InterpolationMasses 9 1.1654429 insert a_20width:InterpolationMasses 10 1.1741776 insert a_20width:InterpolationMasses 11 1.1829122 insert a_20width:InterpolationMasses 12 1.1916469 insert a_20width:InterpolationMasses 13 1.2003816 insert a_20width:InterpolationMasses 14 1.2091163 insert a_20width:InterpolationMasses 15 1.217851 insert a_20width:InterpolationMasses 16 1.2265857 insert a_20width:InterpolationMasses 17 1.2353204 insert a_20width:InterpolationMasses 18 1.2440551 insert a_20width:InterpolationMasses 19 1.2527898 insert a_20width:InterpolationMasses 20 1.2615245 insert a_20width:InterpolationMasses 21 1.2702592 insert a_20width:InterpolationMasses 22 1.2789939 insert a_20width:InterpolationMasses 23 1.2877286 insert a_20width:InterpolationMasses 24 1.2964633 insert a_20width:InterpolationMasses 25 1.305198 insert a_20width:InterpolationMasses 26 1.3139327 insert a_20width:InterpolationMasses 27 1.3226673 insert a_20width:InterpolationMasses 28 1.331402 insert a_20width:InterpolationMasses 29 1.3401367 insert a_20width:InterpolationMasses 30 1.3488714 insert a_20width:InterpolationMasses 31 1.3576061 insert a_20width:InterpolationMasses 32 1.3663408 insert a_20width:InterpolationMasses 33 1.3750755 insert a_20width:InterpolationMasses 34 1.3838102 insert a_20width:InterpolationMasses 35 1.3925449 insert a_20width:InterpolationMasses 36 1.4012796 insert a_20width:InterpolationMasses 37 1.4100143 insert a_20width:InterpolationMasses 38 1.418749 insert a_20width:InterpolationMasses 39 1.4274837 insert a_20width:InterpolationMasses 40 1.4362184 insert a_20width:InterpolationMasses 41 1.4449531 insert a_20width:InterpolationMasses 42 1.4536878 insert a_20width:InterpolationMasses 43 1.4624224 insert a_20width:InterpolationMasses 44 1.4711571 insert a_20width:InterpolationMasses 45 1.4798918 insert a_20width:InterpolationMasses 46 1.4886265 insert a_20width:InterpolationMasses 47 1.4973612 insert a_20width:InterpolationMasses 48 1.5060959 insert a_20width:InterpolationMasses 49 1.5148306 insert a_20width:InterpolationMasses 50 1.5235653 insert a_20width:InterpolationMasses 51 1.5323 insert a_20width:InterpolationMasses 52 1.5410347 insert a_20width:InterpolationMasses 53 1.5497694 insert a_20width:InterpolationMasses 54 1.0868306 insert a_20width:InterpolationMasses 55 1.0955653 insert a_20width:InterpolationMasses 56 1.1043 insert a_20width:InterpolationMasses 57 1.1130347 insert a_20width:InterpolationMasses 58 1.1217694 insert a_20width:InterpolationMasses 59 1.1305041 insert a_20width:InterpolationMasses 60 1.1392388 insert a_20width:InterpolationMasses 61 1.1479735 insert a_20width:InterpolationMasses 62 1.1567082 insert a_20width:InterpolationMasses 63 1.1654429 insert a_20width:InterpolationMasses 64 1.1741776 insert a_20width:InterpolationMasses 65 1.1829122 insert a_20width:InterpolationMasses 66 1.1916469 insert a_20width:InterpolationMasses 67 1.2003816 insert a_20width:InterpolationMasses 68 1.2091163 insert a_20width:InterpolationMasses 69 1.217851 insert a_20width:InterpolationMasses 70 1.2265857 insert a_20width:InterpolationMasses 71 1.2353204 insert a_20width:InterpolationMasses 72 1.2440551 insert a_20width:InterpolationMasses 73 1.2527898 insert a_20width:InterpolationMasses 74 1.2615245 insert a_20width:InterpolationMasses 75 1.2702592 insert a_20width:InterpolationMasses 76 1.2789939 insert a_20width:InterpolationMasses 77 1.2877286 insert a_20width:InterpolationMasses 78 1.2964633 insert a_20width:InterpolationMasses 79 1.305198 insert a_20width:InterpolationMasses 80 1.3139327 insert a_20width:InterpolationMasses 81 1.3226673 insert a_20width:InterpolationMasses 82 1.331402 insert a_20width:InterpolationMasses 83 1.3401367 insert a_20width:InterpolationMasses 84 1.3488714 insert a_20width:InterpolationMasses 85 1.3576061 insert a_20width:InterpolationMasses 86 1.3663408 insert a_20width:InterpolationMasses 87 1.3750755 insert a_20width:InterpolationMasses 88 1.3838102 insert a_20width:InterpolationMasses 89 1.3925449 insert a_20width:InterpolationMasses 90 1.4012796 insert a_20width:InterpolationMasses 91 1.4100143 insert a_20width:InterpolationMasses 92 1.418749 insert a_20width:InterpolationMasses 93 1.4274837 insert a_20width:InterpolationMasses 94 1.4362184 insert a_20width:InterpolationMasses 95 1.4449531 insert a_20width:InterpolationMasses 96 1.4536878 insert a_20width:InterpolationMasses 97 1.4624224 insert a_20width:InterpolationMasses 98 1.4711571 insert a_20width:InterpolationMasses 99 1.4798918 insert a_20width:InterpolationMasses 100 1.4886265 insert a_20width:InterpolationMasses 101 1.4973612 insert a_20width:InterpolationMasses 102 1.5060959 insert a_20width:InterpolationMasses 103 1.5148306 insert a_20width:InterpolationMasses 104 1.5235653 insert a_20width:InterpolationMasses 105 1.5323 insert a_20width:InterpolationMasses 106 1.5410347 insert a_20width:InterpolationMasses 107 1.5497694 insert a_20width:InterpolationMasses 108 1.0868306 insert a_20width:InterpolationMasses 109 1.0955653 insert a_20width:InterpolationMasses 110 1.1043 insert a_20width:InterpolationMasses 111 1.1130347 insert a_20width:InterpolationMasses 112 1.1217694 insert a_20width:InterpolationMasses 113 1.1305041 insert a_20width:InterpolationMasses 114 1.1392388 insert a_20width:InterpolationMasses 115 1.1479735 insert a_20width:InterpolationMasses 116 1.1567082 insert a_20width:InterpolationMasses 117 1.1654429 insert a_20width:InterpolationMasses 118 1.1741776 insert a_20width:InterpolationMasses 119 1.1829122 insert a_20width:InterpolationMasses 120 1.1916469 insert a_20width:InterpolationMasses 121 1.2003816 insert a_20width:InterpolationMasses 122 1.2091163 insert a_20width:InterpolationMasses 123 1.217851 insert a_20width:InterpolationMasses 124 1.2265857 insert a_20width:InterpolationMasses 125 1.2353204 insert a_20width:InterpolationMasses 126 1.2440551 insert a_20width:InterpolationMasses 127 1.2527898 insert a_20width:InterpolationMasses 128 1.2615245 insert a_20width:InterpolationMasses 129 1.2702592 insert a_20width:InterpolationMasses 130 1.2789939 insert a_20width:InterpolationMasses 131 1.2877286 insert a_20width:InterpolationMasses 132 1.2964633 insert a_20width:InterpolationMasses 133 1.305198 insert a_20width:InterpolationMasses 134 1.3139327 insert a_20width:InterpolationMasses 135 1.3226673 insert a_20width:InterpolationMasses 136 1.331402 insert a_20width:InterpolationMasses 137 1.3401367 insert a_20width:InterpolationMasses 138 1.3488714 insert a_20width:InterpolationMasses 139 1.3576061 insert a_20width:InterpolationMasses 140 1.3663408 insert a_20width:InterpolationMasses 141 1.3750755 insert a_20width:InterpolationMasses 142 1.3838102 insert a_20width:InterpolationMasses 143 1.3925449 insert a_20width:InterpolationMasses 144 1.4012796 insert a_20width:InterpolationMasses 145 1.4100143 insert a_20width:InterpolationMasses 146 1.418749 insert a_20width:InterpolationMasses 147 1.4274837 insert a_20width:InterpolationMasses 148 1.4362184 insert a_20width:InterpolationMasses 149 1.4449531 insert a_20width:InterpolationMasses 150 1.4536878 insert a_20width:InterpolationMasses 151 1.4624224 insert a_20width:InterpolationMasses 152 1.4711571 insert a_20width:InterpolationMasses 153 1.4798918 insert a_20width:InterpolationMasses 154 1.4886265 insert a_20width:InterpolationMasses 155 1.4973612 insert a_20width:InterpolationMasses 156 1.5060959 insert a_20width:InterpolationMasses 157 1.5148306 insert a_20width:InterpolationMasses 158 1.5235653 insert a_20width:InterpolationMasses 159 1.5323 insert a_20width:InterpolationMasses 160 1.5410347 insert a_20width:InterpolationMasses 161 1.5497694 insert a_20width:InterpolationMasses 162 1.0868306 insert a_20width:InterpolationMasses 163 1.0955653 insert a_20width:InterpolationMasses 164 1.1043 insert a_20width:InterpolationMasses 165 1.1130347 insert a_20width:InterpolationMasses 166 1.1217694 insert a_20width:InterpolationMasses 167 1.1305041 insert a_20width:InterpolationMasses 168 1.1392388 insert a_20width:InterpolationMasses 169 1.1479735 insert a_20width:InterpolationMasses 170 1.1567082 insert a_20width:InterpolationMasses 171 1.1654429 insert a_20width:InterpolationMasses 172 1.1741776 insert a_20width:InterpolationMasses 173 1.1829122 insert a_20width:InterpolationMasses 174 1.1916469 insert a_20width:InterpolationMasses 175 1.2003816 insert a_20width:InterpolationMasses 176 1.2091163 insert a_20width:InterpolationMasses 177 1.217851 insert a_20width:InterpolationMasses 178 1.2265857 insert a_20width:InterpolationMasses 179 1.2353204 insert a_20width:InterpolationMasses 180 1.2440551 insert a_20width:InterpolationMasses 181 1.2527898 insert a_20width:InterpolationMasses 182 1.2615245 insert a_20width:InterpolationMasses 183 1.2702592 insert a_20width:InterpolationMasses 184 1.2789939 insert a_20width:InterpolationMasses 185 1.2877286 insert a_20width:InterpolationMasses 186 1.2964633 insert a_20width:InterpolationMasses 187 1.305198 insert a_20width:InterpolationMasses 188 1.3139327 insert a_20width:InterpolationMasses 189 1.3226673 insert a_20width:InterpolationMasses 190 1.331402 insert a_20width:InterpolationMasses 191 1.3401367 insert a_20width:InterpolationMasses 192 1.3488714 insert a_20width:InterpolationMasses 193 1.3576061 insert a_20width:InterpolationMasses 194 1.3663408 insert a_20width:InterpolationMasses 195 1.3750755 insert a_20width:InterpolationMasses 196 1.3838102 insert a_20width:InterpolationMasses 197 1.3925449 insert a_20width:InterpolationMasses 198 1.4012796 insert a_20width:InterpolationMasses 199 1.4100143 insert a_20width:InterpolationMasses 200 1.418749 insert a_20width:InterpolationMasses 201 1.4274837 insert a_20width:InterpolationMasses 202 1.4362184 insert a_20width:InterpolationMasses 203 1.4449531 insert a_20width:InterpolationMasses 204 1.4536878 insert a_20width:InterpolationMasses 205 1.4624224 insert a_20width:InterpolationMasses 206 1.4711571 insert a_20width:InterpolationMasses 207 1.4798918 insert a_20width:InterpolationMasses 208 1.4886265 insert a_20width:InterpolationMasses 209 1.4973612 insert a_20width:InterpolationMasses 210 1.5060959 insert a_20width:InterpolationMasses 211 1.5148306 insert a_20width:InterpolationMasses 212 1.5235653 insert a_20width:InterpolationMasses 213 1.5323 insert a_20width:InterpolationMasses 214 1.5410347 insert a_20width:InterpolationMasses 215 1.5497694 insert a_20width:InterpolationMasses 216 1.0868306 insert a_20width:InterpolationMasses 217 1.0955653 insert a_20width:InterpolationMasses 218 1.1043 insert a_20width:InterpolationMasses 219 1.1130347 insert a_20width:InterpolationMasses 220 1.1217694 insert a_20width:InterpolationMasses 221 1.1305041 insert a_20width:InterpolationMasses 222 1.1392388 insert a_20width:InterpolationMasses 223 1.1479735 insert a_20width:InterpolationMasses 224 1.1567082 insert a_20width:InterpolationMasses 225 1.1654429 insert a_20width:InterpolationMasses 226 1.1741776 insert a_20width:InterpolationMasses 227 1.1829122 insert a_20width:InterpolationMasses 228 1.1916469 insert a_20width:InterpolationMasses 229 1.2003816 insert a_20width:InterpolationMasses 230 1.2091163 insert a_20width:InterpolationMasses 231 1.217851 insert a_20width:InterpolationMasses 232 1.2265857 insert a_20width:InterpolationMasses 233 1.2353204 insert a_20width:InterpolationMasses 234 1.2440551 insert a_20width:InterpolationMasses 235 1.2527898 insert a_20width:InterpolationMasses 236 1.2615245 insert a_20width:InterpolationMasses 237 1.2702592 insert a_20width:InterpolationMasses 238 1.2789939 insert a_20width:InterpolationMasses 239 1.2877286 insert a_20width:InterpolationMasses 240 1.2964633 insert a_20width:InterpolationMasses 241 1.305198 insert a_20width:InterpolationMasses 242 1.3139327 insert a_20width:InterpolationMasses 243 1.3226673 insert a_20width:InterpolationMasses 244 1.331402 insert a_20width:InterpolationMasses 245 1.3401367 insert a_20width:InterpolationMasses 246 1.3488714 insert a_20width:InterpolationMasses 247 1.3576061 insert a_20width:InterpolationMasses 248 1.3663408 insert a_20width:InterpolationMasses 249 1.3750755 insert a_20width:InterpolationMasses 250 1.3838102 insert a_20width:InterpolationMasses 251 1.3925449 insert a_20width:InterpolationMasses 252 1.4012796 insert a_20width:InterpolationMasses 253 1.4100143 insert a_20width:InterpolationMasses 254 1.418749 insert a_20width:InterpolationMasses 255 1.4274837 insert a_20width:InterpolationMasses 256 1.4362184 insert a_20width:InterpolationMasses 257 1.4449531 insert a_20width:InterpolationMasses 258 1.4536878 insert a_20width:InterpolationMasses 259 1.4624224 insert a_20width:InterpolationMasses 260 1.4711571 insert a_20width:InterpolationMasses 261 1.4798918 insert a_20width:InterpolationMasses 262 1.4886265 insert a_20width:InterpolationMasses 263 1.4973612 insert a_20width:InterpolationMasses 264 1.5060959 insert a_20width:InterpolationMasses 265 1.5148306 insert a_20width:InterpolationMasses 266 1.5235653 insert a_20width:InterpolationMasses 267 1.5323 insert a_20width:InterpolationMasses 268 1.5410347 insert a_20width:InterpolationMasses 269 1.5497694 insert a_20width:InterpolationWidths 0 0 insert a_20width:InterpolationWidths 1 0 insert a_20width:InterpolationWidths 2 1.7534892e-07 insert a_20width:InterpolationWidths 3 7.4754358e-07 insert a_20width:InterpolationWidths 4 1.905693e-06 insert a_20width:InterpolationWidths 5 3.824642e-06 insert a_20width:InterpolationWidths 6 6.6783257e-06 insert a_20width:InterpolationWidths 7 1.064221e-05 insert a_20width:InterpolationWidths 8 1.589421e-05 insert a_20width:InterpolationWidths 9 2.2614903e-05 insert a_20width:InterpolationWidths 10 3.0987459e-05 insert a_20width:InterpolationWidths 11 4.1197431e-05 insert a_20width:InterpolationWidths 12 5.3432472e-05 insert a_20width:InterpolationWidths 13 6.7882026e-05 insert a_20width:InterpolationWidths 14 8.4737008e-05 insert a_20width:InterpolationWidths 15 0.00010418949 insert a_20width:InterpolationWidths 16 0.00012643238 insert a_20width:InterpolationWidths 17 0.00015165916 insert a_20width:InterpolationWidths 18 0.00018006358 insert a_20width:InterpolationWidths 19 0.00021183942 insert a_20width:InterpolationWidths 20 0.00024718027 insert a_20width:InterpolationWidths 21 0.00028627926 insert a_20width:InterpolationWidths 22 0.00032932889 insert a_20width:InterpolationWidths 23 0.00037652088 insert a_20width:InterpolationWidths 24 0.00042804592 insert a_20width:InterpolationWidths 25 0.00048409361 insert a_20width:InterpolationWidths 26 0.00054485226 insert a_20width:InterpolationWidths 27 0.0006105088 insert a_20width:InterpolationWidths 28 0.00068124864 insert a_20width:InterpolationWidths 29 0.00075725563 insert a_20width:InterpolationWidths 30 0.0008387119 insert a_20width:InterpolationWidths 31 0.00092579786 insert a_20width:InterpolationWidths 32 0.0010186921 insert a_20width:InterpolationWidths 33 0.0011175713 insert a_20width:InterpolationWidths 34 0.0012226102 insert a_20width:InterpolationWidths 35 0.0013339818 insert a_20width:InterpolationWidths 36 0.0014518567 insert a_20width:InterpolationWidths 37 0.001576404 insert a_20width:InterpolationWidths 38 0.0017077902 insert a_20width:InterpolationWidths 39 0.0018461803 insert a_20width:InterpolationWidths 40 0.0019917369 insert a_20width:InterpolationWidths 41 0.0021446206 insert a_20width:InterpolationWidths 42 0.0023049901 insert a_20width:InterpolationWidths 43 0.0024730019 insert a_20width:InterpolationWidths 44 0.0026488105 insert a_20width:InterpolationWidths 45 0.0028325683 insert a_20width:InterpolationWidths 46 0.0030244259 insert a_20width:InterpolationWidths 47 0.0032245317 insert a_20width:InterpolationWidths 48 0.0034330321 insert a_20width:InterpolationWidths 49 0.0036500718 insert a_20width:InterpolationWidths 50 0.0038757933 insert a_20width:InterpolationWidths 51 0.0041103374 insert a_20width:InterpolationWidths 52 0.0043538428 insert a_20width:InterpolationWidths 53 0.0046064464 insert a_20width:InterpolationWidths 54 0.0047371662 insert a_20width:InterpolationWidths 55 0.0050120557 insert a_20width:InterpolationWidths 56 0.0052963983 insert a_20width:InterpolationWidths 57 0.0055902967 insert a_20width:InterpolationWidths 58 0.0058938522 insert a_20width:InterpolationWidths 59 0.0062071646 insert a_20width:InterpolationWidths 60 0.0065303325 insert a_20width:InterpolationWidths 61 0.0068634532 insert a_20width:InterpolationWidths 62 0.0072066228 insert a_20width:InterpolationWidths 63 0.0075599363 insert a_20width:InterpolationWidths 64 0.0079234876 insert a_20width:InterpolationWidths 65 0.0082973695 insert a_20width:InterpolationWidths 66 0.0086816741 insert a_20width:InterpolationWidths 67 0.0090764923 insert a_20width:InterpolationWidths 68 0.0094819142 insert a_20width:InterpolationWidths 69 0.0098980291 insert a_20width:InterpolationWidths 70 0.010324926 insert a_20width:InterpolationWidths 71 0.010762691 insert a_20width:InterpolationWidths 72 0.011211413 insert a_20width:InterpolationWidths 73 0.011671178 insert a_20width:InterpolationWidths 74 0.012142071 insert a_20width:InterpolationWidths 75 0.012624177 insert a_20width:InterpolationWidths 76 0.013117581 insert a_20width:InterpolationWidths 77 0.013622367 insert a_20width:InterpolationWidths 78 0.014138619 insert a_20width:InterpolationWidths 79 0.014666419 insert a_20width:InterpolationWidths 80 0.01520585 insert a_20width:InterpolationWidths 81 0.015756993 insert a_20width:InterpolationWidths 82 0.016319931 insert a_20width:InterpolationWidths 83 0.016894744 insert a_20width:InterpolationWidths 84 0.017481514 insert a_20width:InterpolationWidths 85 0.01808032 insert a_20width:InterpolationWidths 86 0.018691244 insert a_20width:InterpolationWidths 87 0.019314364 insert a_20width:InterpolationWidths 88 0.019949761 insert a_20width:InterpolationWidths 89 0.020597512 insert a_20width:InterpolationWidths 90 0.021257699 insert a_20width:InterpolationWidths 91 0.021930397 insert a_20width:InterpolationWidths 92 0.022615688 insert a_20width:InterpolationWidths 93 0.023313647 insert a_20width:InterpolationWidths 94 0.024024354 insert a_20width:InterpolationWidths 95 0.024747886 insert a_20width:InterpolationWidths 96 0.02548432 insert a_20width:InterpolationWidths 97 0.026233735 insert a_20width:InterpolationWidths 98 0.026996206 insert a_20width:InterpolationWidths 99 0.027771811 insert a_20width:InterpolationWidths 100 0.028560627 insert a_20width:InterpolationWidths 101 0.02936273 insert a_20width:InterpolationWidths 102 0.030178197 insert a_20width:InterpolationWidths 103 0.031007104 insert a_20width:InterpolationWidths 104 0.031849528 insert a_20width:InterpolationWidths 105 0.032705544 insert a_20width:InterpolationWidths 106 0.033575229 insert a_20width:InterpolationWidths 107 0.034458658 insert a_20width:InterpolationWidths 108 1.4066703e-08 insert a_20width:InterpolationWidths 109 5.889527e-08 insert a_20width:InterpolationWidths 110 1.642178e-07 insert a_20width:InterpolationWidths 111 3.7704055e-07 insert a_20width:InterpolationWidths 112 7.7740567e-07 insert a_20width:InterpolationWidths 113 1.5097876e-06 insert a_20width:InterpolationWidths 114 2.8631281e-06 insert a_20width:InterpolationWidths 115 5.5430907e-06 insert a_20width:InterpolationWidths 116 1.228335e-05 insert a_20width:InterpolationWidths 117 3.5511161e-05 insert a_20width:InterpolationWidths 118 8.4461368e-05 insert a_20width:InterpolationWidths 119 0.00016086347 insert a_20width:InterpolationWidths 120 0.00026826578 insert a_20width:InterpolationWidths 121 0.00041162276 insert a_20width:InterpolationWidths 122 0.00059703344 insert a_20width:InterpolationWidths 123 0.00083173304 insert a_20width:InterpolationWidths 124 0.0011241596 insert a_20width:InterpolationWidths 125 0.0014840424 insert a_20width:InterpolationWidths 126 0.0019227444 insert a_20width:InterpolationWidths 127 0.002453239 insert a_20width:InterpolationWidths 128 0.0030901211 insert a_20width:InterpolationWidths 129 0.0038504864 insert a_20width:InterpolationWidths 130 0.0047539347 insert a_20width:InterpolationWidths 131 0.0058230253 insert a_20width:InterpolationWidths 132 0.0070837418 insert a_20width:InterpolationWidths 133 0.0085660448 insert a_20width:InterpolationWidths 134 0.01030453 insert a_20width:InterpolationWidths 135 0.012339211 insert a_20width:InterpolationWidths 136 0.014716461 insert a_20width:InterpolationWidths 137 0.017490138 insert a_20width:InterpolationWidths 138 0.020722942 insert a_20width:InterpolationWidths 139 0.024488057 insert a_20width:InterpolationWidths 140 0.028871146 insert a_20width:InterpolationWidths 141 0.033972766 insert a_20width:InterpolationWidths 142 0.039911329 insert a_20width:InterpolationWidths 143 0.046826704 insert a_20width:InterpolationWidths 144 0.05488462 insert a_20width:InterpolationWidths 145 0.064282043 insert a_20width:InterpolationWidths 146 0.075253698 insert a_20width:InterpolationWidths 147 0.088079937 insert a_20width:InterpolationWidths 148 0.10309612 insert a_20width:InterpolationWidths 149 0.12070353 insert a_20width:InterpolationWidths 150 0.14138182 insert a_20width:InterpolationWidths 151 0.16570222 insert a_20width:InterpolationWidths 152 0.19434064 insert a_20width:InterpolationWidths 153 0.22808794 insert a_20width:InterpolationWidths 154 0.26785342 insert a_20width:InterpolationWidths 155 0.31465518 insert a_20width:InterpolationWidths 156 0.36958855 insert a_20width:InterpolationWidths 157 0.43376379 insert a_20width:InterpolationWidths 158 0.50820811 insert a_20width:InterpolationWidths 159 0.59373841 insert a_20width:InterpolationWidths 160 0.69082885 insert a_20width:InterpolationWidths 161 0.79951295 insert a_20width:InterpolationWidths 162 0.0035806708 insert a_20width:InterpolationWidths 163 0.0040088612 insert a_20width:InterpolationWidths 164 0.0044774936 insert a_20width:InterpolationWidths 165 0.0049892221 insert a_20width:InterpolationWidths 166 0.0055467934 insert a_20width:InterpolationWidths 167 0.0061530473 insert a_20width:InterpolationWidths 168 0.0068109175 insert a_20width:InterpolationWidths 169 0.0075234313 insert a_20width:InterpolationWidths 170 0.008293711 insert a_20width:InterpolationWidths 171 0.0091249736 insert a_20width:InterpolationWidths 172 0.010020532 insert a_20width:InterpolationWidths 173 0.010983794 insert a_20width:InterpolationWidths 174 0.012018265 insert a_20width:InterpolationWidths 175 0.013127546 insert a_20width:InterpolationWidths 176 0.014315337 insert a_20width:InterpolationWidths 177 0.015585435 insert a_20width:InterpolationWidths 178 0.016941735 insert a_20width:InterpolationWidths 179 0.018388231 insert a_20width:InterpolationWidths 180 0.019929017 insert a_20width:InterpolationWidths 181 0.021568287 insert a_20width:InterpolationWidths 182 0.023310333 insert a_20width:InterpolationWidths 183 0.025159551 insert a_20width:InterpolationWidths 184 0.027120437 insert a_20width:InterpolationWidths 185 0.02919759 insert a_20width:InterpolationWidths 186 0.031395709 insert a_20width:InterpolationWidths 187 0.033719599 insert a_20width:InterpolationWidths 188 0.036174168 insert a_20width:InterpolationWidths 189 0.038764426 insert a_20width:InterpolationWidths 190 0.04149549 insert a_20width:InterpolationWidths 191 0.044372583 insert a_20width:InterpolationWidths 192 0.047401032 insert a_20width:InterpolationWidths 193 0.050586271 insert a_20width:InterpolationWidths 194 0.053933843 insert a_20width:InterpolationWidths 195 0.057449395 insert a_20width:InterpolationWidths 196 0.061138686 insert a_20width:InterpolationWidths 197 0.065007582 insert a_20width:InterpolationWidths 198 0.06906206 insert a_20width:InterpolationWidths 199 0.073308206 insert a_20width:InterpolationWidths 200 0.077752216 insert a_20width:InterpolationWidths 201 0.082400398 insert a_20width:InterpolationWidths 202 0.087259167 insert a_20width:InterpolationWidths 203 0.092335044 insert a_20width:InterpolationWidths 204 0.097634661 insert a_20width:InterpolationWidths 205 0.10316476 insert a_20width:InterpolationWidths 206 0.10893219 insert a_20width:InterpolationWidths 207 0.11494391 insert a_20width:InterpolationWidths 208 0.121207 insert a_20width:InterpolationWidths 209 0.12772864 insert a_20width:InterpolationWidths 210 0.13451612 insert a_20width:InterpolationWidths 211 0.14157685 insert a_20width:InterpolationWidths 212 0.14891835 insert a_20width:InterpolationWidths 213 0.15654826 insert a_20width:InterpolationWidths 214 0.16447431 insert a_20width:InterpolationWidths 215 0.17270436 insert a_20width:InterpolationWidths 216 0.0035806708 insert a_20width:InterpolationWidths 217 0.0040088612 insert a_20width:InterpolationWidths 218 0.0044774936 insert a_20width:InterpolationWidths 219 0.0049892221 insert a_20width:InterpolationWidths 220 0.0055467934 insert a_20width:InterpolationWidths 221 0.0061530473 insert a_20width:InterpolationWidths 222 0.0068109175 insert a_20width:InterpolationWidths 223 0.0075234313 insert a_20width:InterpolationWidths 224 0.008293711 insert a_20width:InterpolationWidths 225 0.0091249736 insert a_20width:InterpolationWidths 226 0.010020532 insert a_20width:InterpolationWidths 227 0.010983794 insert a_20width:InterpolationWidths 228 0.012018265 insert a_20width:InterpolationWidths 229 0.013127546 insert a_20width:InterpolationWidths 230 0.014315337 insert a_20width:InterpolationWidths 231 0.015585435 insert a_20width:InterpolationWidths 232 0.016941735 insert a_20width:InterpolationWidths 233 0.018388231 insert a_20width:InterpolationWidths 234 0.019929017 insert a_20width:InterpolationWidths 235 0.021568287 insert a_20width:InterpolationWidths 236 0.023310333 insert a_20width:InterpolationWidths 237 0.025159551 insert a_20width:InterpolationWidths 238 0.027120437 insert a_20width:InterpolationWidths 239 0.02919759 insert a_20width:InterpolationWidths 240 0.031395709 insert a_20width:InterpolationWidths 241 0.033719599 insert a_20width:InterpolationWidths 242 0.036174168 insert a_20width:InterpolationWidths 243 0.038764426 insert a_20width:InterpolationWidths 244 0.04149549 insert a_20width:InterpolationWidths 245 0.044372583 insert a_20width:InterpolationWidths 246 0.047401032 insert a_20width:InterpolationWidths 247 0.050586271 insert a_20width:InterpolationWidths 248 0.053933843 insert a_20width:InterpolationWidths 249 0.057449395 insert a_20width:InterpolationWidths 250 0.061138686 insert a_20width:InterpolationWidths 251 0.065007582 insert a_20width:InterpolationWidths 252 0.06906206 insert a_20width:InterpolationWidths 253 0.073308206 insert a_20width:InterpolationWidths 254 0.077752216 insert a_20width:InterpolationWidths 255 0.082400398 insert a_20width:InterpolationWidths 256 0.087259167 insert a_20width:InterpolationWidths 257 0.092335044 insert a_20width:InterpolationWidths 258 0.097634661 insert a_20width:InterpolationWidths 259 0.10316476 insert a_20width:InterpolationWidths 260 0.10893219 insert a_20width:InterpolationWidths 261 0.11494391 insert a_20width:InterpolationWidths 262 0.121207 insert a_20width:InterpolationWidths 263 0.12772864 insert a_20width:InterpolationWidths 264 0.13451612 insert a_20width:InterpolationWidths 265 0.14157685 insert a_20width:InterpolationWidths 266 0.14891835 insert a_20width:InterpolationWidths 267 0.15654826 insert a_20width:InterpolationWidths 268 0.16447431 insert a_20width:InterpolationWidths 269 0.17270436 insert a_20width:NumberofEntries 0 0 insert a_20width:NumberofEntries 1 0 insert a_20width:NumberofEntries 2 54 insert a_20width:NumberofEntries 3 108 insert a_20width:NumberofEntries 4 108 insert a_20width:NumberofEntries 5 162 insert a_20width:NumberofEntries 6 216 insert a_20width:NumberofEntries 7 270 newdef /Herwig/Particles/a_20:Width_generator a_20width # create Herwig::GenericWidthGenerator a_00width newdef a_00width:Particle /Herwig/Particles/a_00 newdef a_00width:Prefactor 1.02895 newdef a_00width:BRNormalize 0 newdef a_00width:BRMinimum 0.01 newdef a_00width:Points 50 newdef a_00width:InterpolationOrder 1 insert a_00width:MEtype 0 1 insert a_00width:MEtype 1 1 insert a_00width:MEtype 2 2 insert a_00width:MEtype 3 0 insert a_00width:MEcode 0 6 insert a_00width:MEcode 1 6 insert a_00width:MEcode 2 0 insert a_00width:MEcode 3 0 insert a_00width:MEcoupling 0 2.54254 insert a_00width:MEcoupling 1 2.54254 insert a_00width:MEcoupling 2 1 insert a_00width:MEcoupling 3 3e-06 insert a_00width:ModeOn 0 1 insert a_00width:ModeOn 1 1 insert a_00width:ModeOn 2 1 insert a_00width:ModeOn 3 0 insert a_00width:MinimumMasses 0 0.987354 insert a_00width:MinimumMasses 1 0.995296 insert a_00width:MinimumMasses 2 0.682475 insert a_00width:MinimumMasses 3 0 insert a_00width:MEmass1 0 0.493677 insert a_00width:MEmass1 1 0.497648 insert a_00width:MEmass1 2 0.54751 insert a_00width:MEmass1 3 0 insert a_00width:MEmass2 0 0.493677 insert a_00width:MEmass2 1 0.497648 insert a_00width:MEmass2 2 0.134978 insert a_00width:MEmass2 3 0 insert a_00width:DecayModes 0 a_00->K+,K-; insert a_00width:DecayModes 1 a_00->K0,Kbar0; insert a_00width:DecayModes 2 a_00->eta,pi0; insert a_00width:DecayModes 3 a_00->gamma,gamma; insert a_00width:InterpolationMasses 0 0.72634694 insert a_00width:InterpolationMasses 1 0.74267347 insert a_00width:InterpolationMasses 2 0.759 insert a_00width:InterpolationMasses 3 0.77532653 insert a_00width:InterpolationMasses 4 0.79165306 insert a_00width:InterpolationMasses 5 0.80797959 insert a_00width:InterpolationMasses 6 0.82430612 insert a_00width:InterpolationMasses 7 0.84063265 insert a_00width:InterpolationMasses 8 0.85695918 insert a_00width:InterpolationMasses 9 0.87328571 insert a_00width:InterpolationMasses 10 0.88961224 insert a_00width:InterpolationMasses 11 0.90593878 insert a_00width:InterpolationMasses 12 0.92226531 insert a_00width:InterpolationMasses 13 0.93859184 insert a_00width:InterpolationMasses 14 0.95491837 insert a_00width:InterpolationMasses 15 0.9712449 insert a_00width:InterpolationMasses 16 0.98757143 insert a_00width:InterpolationMasses 17 1.003898 insert a_00width:InterpolationMasses 18 1.0202245 insert a_00width:InterpolationMasses 19 1.036551 insert a_00width:InterpolationMasses 20 1.0528776 insert a_00width:InterpolationMasses 21 1.0692041 insert a_00width:InterpolationMasses 22 1.0855306 insert a_00width:InterpolationMasses 23 1.1018571 insert a_00width:InterpolationMasses 24 1.1181837 insert a_00width:InterpolationMasses 25 1.1345102 insert a_00width:InterpolationMasses 26 1.1508367 insert a_00width:InterpolationMasses 27 1.1671633 insert a_00width:InterpolationMasses 28 1.1834898 insert a_00width:InterpolationMasses 29 1.1998163 insert a_00width:InterpolationMasses 30 1.2161429 insert a_00width:InterpolationMasses 31 1.2324694 insert a_00width:InterpolationMasses 32 1.2487959 insert a_00width:InterpolationMasses 33 1.2651224 insert a_00width:InterpolationMasses 34 1.281449 insert a_00width:InterpolationMasses 35 1.2977755 insert a_00width:InterpolationMasses 36 1.314102 insert a_00width:InterpolationMasses 37 1.3304286 insert a_00width:InterpolationMasses 38 1.3467551 insert a_00width:InterpolationMasses 39 1.3630816 insert a_00width:InterpolationMasses 40 1.3794082 insert a_00width:InterpolationMasses 41 1.3957347 insert a_00width:InterpolationMasses 42 1.4120612 insert a_00width:InterpolationMasses 43 1.4283878 insert a_00width:InterpolationMasses 44 1.4447143 insert a_00width:InterpolationMasses 45 1.4610408 insert a_00width:InterpolationMasses 46 1.4773673 insert a_00width:InterpolationMasses 47 1.4936939 insert a_00width:InterpolationMasses 48 1.5100204 insert a_00width:InterpolationMasses 49 1.5263469 insert a_00width:InterpolationMasses 50 1.5426735 insert a_00width:InterpolationMasses 51 1.559 insert a_00width:InterpolationMasses 52 1.5753265 insert a_00width:InterpolationMasses 53 1.5916531 insert a_00width:InterpolationWidths 0 0.082829633 insert a_00width:InterpolationWidths 1 0.094307586 insert a_00width:InterpolationWidths 2 0.10335611 insert a_00width:InterpolationWidths 3 0.11067675 insert a_00width:InterpolationWidths 4 0.11668753 insert a_00width:InterpolationWidths 5 0.1216648 insert a_00width:InterpolationWidths 6 0.12580424 insert a_00width:InterpolationWidths 7 0.12925122 insert a_00width:InterpolationWidths 8 0.13211768 insert a_00width:InterpolationWidths 9 0.1344921 insert a_00width:InterpolationWidths 10 0.1364459 insert a_00width:InterpolationWidths 11 0.13803768 insert a_00width:InterpolationWidths 12 0.13931619 insert a_00width:InterpolationWidths 13 0.14032237 insert a_00width:InterpolationWidths 14 0.14109098 insert a_00width:InterpolationWidths 15 0.1416517 insert a_00width:InterpolationWidths 16 0.1420301 insert a_00width:InterpolationWidths 17 0.14224825 insert a_00width:InterpolationWidths 18 0.14232537 insert a_00width:InterpolationWidths 19 0.14227822 insert a_00width:InterpolationWidths 20 0.14212148 insert a_00width:InterpolationWidths 21 0.14186806 insert a_00width:InterpolationWidths 22 0.14152934 insert a_00width:InterpolationWidths 23 0.14111537 insert a_00width:InterpolationWidths 24 0.14063507 insert a_00width:InterpolationWidths 25 0.14009633 insert a_00width:InterpolationWidths 26 0.13950619 insert a_00width:InterpolationWidths 27 0.13887092 insert a_00width:InterpolationWidths 28 0.13819609 insert a_00width:InterpolationWidths 29 0.1374867 insert a_00width:InterpolationWidths 30 0.13674722 insert a_00width:InterpolationWidths 31 0.13598165 insert a_00width:InterpolationWidths 32 0.13519357 insert a_00width:InterpolationWidths 33 0.13438619 insert a_00width:InterpolationWidths 34 0.13356239 insert a_00width:InterpolationWidths 35 0.13272477 insert a_00width:InterpolationWidths 36 0.13187566 insert a_00width:InterpolationWidths 37 0.13101715 insert a_00width:InterpolationWidths 38 0.13015111 insert a_00width:InterpolationWidths 39 0.12927924 insert a_00width:InterpolationWidths 40 0.12840307 insert a_00width:InterpolationWidths 41 0.12752395 insert a_00width:InterpolationWidths 42 0.12664312 insert a_00width:InterpolationWidths 43 0.12576168 insert a_00width:InterpolationWidths 44 0.12488063 insert a_00width:InterpolationWidths 45 0.12400085 insert a_00width:InterpolationWidths 46 0.12312314 insert a_00width:InterpolationWidths 47 0.12224822 insert a_00width:InterpolationWidths 48 0.12137673 insert a_00width:InterpolationWidths 49 0.12050923 insert a_00width:InterpolationWidths 50 0.11964624 insert a_00width:InterpolationWidths 51 0.11878821 insert a_00width:InterpolationWidths 52 0.11793555 insert a_00width:InterpolationWidths 53 0.1170886 insert a_00width:NumberofEntries 0 0 insert a_00width:NumberofEntries 1 0 insert a_00width:NumberofEntries 2 54 insert a_00width:NumberofEntries 3 54 newdef /Herwig/Particles/a_00:Width_generator a_00width # create Herwig::GenericWidthGenerator a_0+width newdef a_0+width:Particle /Herwig/Particles/a_0+ newdef a_0+width:Prefactor 1.02529 newdef a_0+width:BRNormalize 0 newdef a_0+width:BRMinimum 0.01 newdef a_0+width:Points 50 newdef a_0+width:InterpolationOrder 1 insert a_0+width:MEtype 0 1 insert a_0+width:MEtype 1 2 insert a_0+width:MEcode 0 6 insert a_0+width:MEcode 1 0 insert a_0+width:MEcoupling 0 3.59359 insert a_0+width:MEcoupling 1 1 insert a_0+width:ModeOn 0 1 insert a_0+width:ModeOn 1 1 insert a_0+width:MinimumMasses 0 0.991325 insert a_0+width:MinimumMasses 1 0.687067 insert a_0+width:MEmass1 0 0.493677 insert a_0+width:MEmass1 1 0.54751 insert a_0+width:MEmass2 0 0.497648 insert a_0+width:MEmass2 1 0.13957 insert a_0+width:DecayModes 0 a_0+->K+,Kbar0; insert a_0+width:DecayModes 1 a_0+->eta,pi+; insert a_0+width:InterpolationMasses 0 0.72634694 insert a_0+width:InterpolationMasses 1 0.74267347 insert a_0+width:InterpolationMasses 2 0.759 insert a_0+width:InterpolationMasses 3 0.77532653 insert a_0+width:InterpolationMasses 4 0.79165306 insert a_0+width:InterpolationMasses 5 0.80797959 insert a_0+width:InterpolationMasses 6 0.82430612 insert a_0+width:InterpolationMasses 7 0.84063265 insert a_0+width:InterpolationMasses 8 0.85695918 insert a_0+width:InterpolationMasses 9 0.87328571 insert a_0+width:InterpolationMasses 10 0.88961224 insert a_0+width:InterpolationMasses 11 0.90593878 insert a_0+width:InterpolationMasses 12 0.92226531 insert a_0+width:InterpolationMasses 13 0.93859184 insert a_0+width:InterpolationMasses 14 0.95491837 insert a_0+width:InterpolationMasses 15 0.9712449 insert a_0+width:InterpolationMasses 16 0.98757143 insert a_0+width:InterpolationMasses 17 1.003898 insert a_0+width:InterpolationMasses 18 1.0202245 insert a_0+width:InterpolationMasses 19 1.036551 insert a_0+width:InterpolationMasses 20 1.0528776 insert a_0+width:InterpolationMasses 21 1.0692041 insert a_0+width:InterpolationMasses 22 1.0855306 insert a_0+width:InterpolationMasses 23 1.1018571 insert a_0+width:InterpolationMasses 24 1.1181837 insert a_0+width:InterpolationMasses 25 1.1345102 insert a_0+width:InterpolationMasses 26 1.1508367 insert a_0+width:InterpolationMasses 27 1.1671633 insert a_0+width:InterpolationMasses 28 1.1834898 insert a_0+width:InterpolationMasses 29 1.1998163 insert a_0+width:InterpolationMasses 30 1.2161429 insert a_0+width:InterpolationMasses 31 1.2324694 insert a_0+width:InterpolationMasses 32 1.2487959 insert a_0+width:InterpolationMasses 33 1.2651224 insert a_0+width:InterpolationMasses 34 1.281449 insert a_0+width:InterpolationMasses 35 1.2977755 insert a_0+width:InterpolationMasses 36 1.314102 insert a_0+width:InterpolationMasses 37 1.3304286 insert a_0+width:InterpolationMasses 38 1.3467551 insert a_0+width:InterpolationMasses 39 1.3630816 insert a_0+width:InterpolationMasses 40 1.3794082 insert a_0+width:InterpolationMasses 41 1.3957347 insert a_0+width:InterpolationMasses 42 1.4120612 insert a_0+width:InterpolationMasses 43 1.4283878 insert a_0+width:InterpolationMasses 44 1.4447143 insert a_0+width:InterpolationMasses 45 1.4610408 insert a_0+width:InterpolationMasses 46 1.4773673 insert a_0+width:InterpolationMasses 47 1.4936939 insert a_0+width:InterpolationMasses 48 1.5100204 insert a_0+width:InterpolationMasses 49 1.5263469 insert a_0+width:InterpolationMasses 50 1.5426735 insert a_0+width:InterpolationMasses 51 1.559 insert a_0+width:InterpolationMasses 52 1.5753265 insert a_0+width:InterpolationMasses 53 1.5916531 insert a_0+width:InterpolationWidths 0 0.078913511 insert a_0+width:InterpolationWidths 1 0.091231347 insert a_0+width:InterpolationWidths 2 0.10083048 insert a_0+width:InterpolationWidths 3 0.10854583 insert a_0+width:InterpolationWidths 4 0.11485549 insert a_0+width:InterpolationWidths 5 0.1200676 insert a_0+width:InterpolationWidths 6 0.12439657 insert a_0+width:InterpolationWidths 7 0.12799968 insert a_0+width:InterpolationWidths 8 0.13099681 insert a_0+width:InterpolationWidths 9 0.13348204 insert a_0+width:InterpolationWidths 10 0.13553082 insert a_0+width:InterpolationWidths 11 0.13720477 insert a_0+width:InterpolationWidths 12 0.13855491 insert a_0+width:InterpolationWidths 13 0.13962399 insert a_0+width:InterpolationWidths 14 0.14044815 insert a_0+width:InterpolationWidths 15 0.14105821 insert a_0+width:InterpolationWidths 16 0.14148062 insert a_0+width:InterpolationWidths 17 0.14173822 insert a_0+width:InterpolationWidths 18 0.14185084 insert a_0+width:InterpolationWidths 19 0.14183574 insert a_0+width:InterpolationWidths 20 0.14170806 insert a_0+width:InterpolationWidths 21 0.14148104 insert a_0+width:InterpolationWidths 22 0.1411664 insert a_0+width:InterpolationWidths 23 0.14077443 insert a_0+width:InterpolationWidths 24 0.14031429 insert a_0+width:InterpolationWidths 25 0.13979407 insert a_0+width:InterpolationWidths 26 0.13922098 insert a_0+width:InterpolationWidths 27 0.13860142 insert a_0+width:InterpolationWidths 28 0.13794113 insert a_0+width:InterpolationWidths 29 0.1372452 insert a_0+width:InterpolationWidths 30 0.13651821 insert a_0+width:InterpolationWidths 31 0.13576423 insert a_0+width:InterpolationWidths 32 0.13498694 insert a_0+width:InterpolationWidths 33 0.13418962 insert a_0+width:InterpolationWidths 34 0.13337522 insert a_0+width:InterpolationWidths 35 0.13254638 insert a_0+width:InterpolationWidths 36 0.13170549 insert a_0+width:InterpolationWidths 37 0.13085467 insert a_0+width:InterpolationWidths 38 0.12999586 insert a_0+width:InterpolationWidths 39 0.12913078 insert a_0+width:InterpolationWidths 40 0.12826099 insert a_0+width:InterpolationWidths 41 0.12738788 insert a_0+width:InterpolationWidths 42 0.12651271 insert a_0+width:InterpolationWidths 43 0.12563662 insert a_0+width:InterpolationWidths 44 0.12476061 insert a_0+width:InterpolationWidths 45 0.1238856 insert a_0+width:InterpolationWidths 46 0.1230124 insert a_0+width:InterpolationWidths 47 0.12214175 insert a_0+width:InterpolationWidths 48 0.1212743 insert a_0+width:InterpolationWidths 49 0.12041064 insert a_0+width:InterpolationWidths 50 0.1195513 insert a_0+width:InterpolationWidths 51 0.11869673 insert a_0+width:InterpolationWidths 52 0.11784735 insert a_0+width:InterpolationWidths 53 0.11700354 insert a_0+width:NumberofEntries 0 0 insert a_0+width:NumberofEntries 1 54 newdef /Herwig/Particles/a_0+:Width_generator a_0+width newdef /Herwig/Particles/a_0-:Width_generator a_0+width # create Herwig::GenericWidthGenerator f_2width newdef f_2width:Particle /Herwig/Particles/f_2 newdef f_2width:Prefactor 1.00393 newdef f_2width:BRNormalize 1 newdef f_2width:BRMinimum 0.01 newdef f_2width:Points 50 newdef f_2width:InterpolationOrder 1 insert f_2width:MEtype 0 1 insert f_2width:MEtype 1 1 insert f_2width:MEtype 2 2 insert f_2width:MEtype 3 1 insert f_2width:MEtype 4 1 insert f_2width:MEtype 5 1 insert f_2width:MEtype 6 2 insert f_2width:MEtype 7 2 insert f_2width:MEtype 8 2 insert f_2width:MEcode 0 7 insert f_2width:MEcode 1 7 insert f_2width:MEcode 2 0 insert f_2width:MEcode 3 9 insert f_2width:MEcode 4 7 insert f_2width:MEcode 5 7 insert f_2width:MEcode 6 0 insert f_2width:MEcode 7 0 insert f_2width:MEcode 8 0 insert f_2width:MEcoupling 0 14.2363 insert f_2width:MEcoupling 1 14.6782 insert f_2width:MEcoupling 2 0.937116 insert f_2width:MEcoupling 3 0.0159833 insert f_2width:MEcoupling 4 23.7752 insert f_2width:MEcoupling 5 16.7434 insert f_2width:MEcoupling 6 0.991118 insert f_2width:MEcoupling 7 1.00471 insert f_2width:MEcoupling 8 0.985413 insert f_2width:ModeOn 0 1 insert f_2width:ModeOn 1 1 insert f_2width:ModeOn 2 0 insert f_2width:ModeOn 3 0 insert f_2width:ModeOn 4 1 insert f_2width:ModeOn 5 1 insert f_2width:ModeOn 6 1 insert f_2width:ModeOn 7 1 insert f_2width:ModeOn 8 1 insert f_2width:MinimumMasses 0 0.987354 insert f_2width:MinimumMasses 1 0.995296 insert f_2width:MinimumMasses 2 1.09499 insert f_2width:MinimumMasses 3 0 insert f_2width:MinimumMasses 4 0.27914 insert f_2width:MinimumMasses 5 0.269955 insert f_2width:MinimumMasses 6 0.751 insert f_2width:MinimumMasses 7 0.751 insert f_2width:MinimumMasses 8 0.62 insert f_2width:MEmass1 0 0.493677 insert f_2width:MEmass1 1 0.497648 insert f_2width:MEmass1 2 0.54751 insert f_2width:MEmass1 3 0 insert f_2width:MEmass1 4 0.13957 insert f_2width:MEmass1 5 0.134978 insert f_2width:MEmass1 6 0.7755 insert f_2width:MEmass1 7 0.7755 insert f_2width:MEmass1 8 0.86 insert f_2width:MEmass2 0 0.493677 insert f_2width:MEmass2 1 0.497648 insert f_2width:MEmass2 2 0.54751 insert f_2width:MEmass2 3 0 insert f_2width:MEmass2 4 0.13957 insert f_2width:MEmass2 5 0.134978 insert f_2width:MEmass2 6 0.7755 insert f_2width:MEmass2 7 0.7755 insert f_2width:MEmass2 8 0.86 insert f_2width:DecayModes 0 f_2->K+,K-; insert f_2width:DecayModes 1 f_2->K0,Kbar0; insert f_2width:DecayModes 2 f_2->eta,eta; insert f_2width:DecayModes 3 f_2->gamma,gamma; insert f_2width:DecayModes 4 f_2->pi+,pi-; insert f_2width:DecayModes 5 f_2->pi0,pi0; insert f_2width:DecayModes 6 f_2->rho+,rho-; insert f_2width:DecayModes 7 f_2->rho0,rho0; insert f_2width:DecayModes 8 f_2->sigma,sigma; insert f_2width:InterpolationMasses 0 1.0800713 insert f_2width:InterpolationMasses 1 1.0875327 insert f_2width:InterpolationMasses 2 1.094994 insert f_2width:InterpolationMasses 3 1.0957379 insert f_2width:InterpolationMasses 4 1.0964822 insert f_2width:InterpolationMasses 5 1.0972271 insert f_2width:InterpolationMasses 6 1.0979725 insert f_2width:InterpolationMasses 7 1.0987183 insert f_2width:InterpolationMasses 8 1.0994647 insert f_2width:InterpolationMasses 9 1.1002116 insert f_2width:InterpolationMasses 10 1.100959 insert f_2width:InterpolationMasses 11 1.1017069 insert f_2width:InterpolationMasses 12 1.1024553 insert f_2width:InterpolationMasses 13 1.1099167 insert f_2width:InterpolationMasses 14 1.117378 insert f_2width:InterpolationMasses 15 1.1248394 insert f_2width:InterpolationMasses 16 1.1323007 insert f_2width:InterpolationMasses 17 1.1397621 insert f_2width:InterpolationMasses 18 1.1472234 insert f_2width:InterpolationMasses 19 1.1546848 insert f_2width:InterpolationMasses 20 1.1621461 insert f_2width:InterpolationMasses 21 1.1696075 insert f_2width:InterpolationMasses 22 1.1770688 insert f_2width:InterpolationMasses 23 1.1845302 insert f_2width:InterpolationMasses 24 1.1919915 insert f_2width:InterpolationMasses 25 1.1994529 insert f_2width:InterpolationMasses 26 1.2069142 insert f_2width:InterpolationMasses 27 1.2143756 insert f_2width:InterpolationMasses 28 1.2218369 insert f_2width:InterpolationMasses 29 1.2292982 insert f_2width:InterpolationMasses 30 1.2367596 insert f_2width:InterpolationMasses 31 1.2442209 insert f_2width:InterpolationMasses 32 1.2516823 insert f_2width:InterpolationMasses 33 1.2591436 insert f_2width:InterpolationMasses 34 1.266605 insert f_2width:InterpolationMasses 35 1.2740663 insert f_2width:InterpolationMasses 36 1.2815277 insert f_2width:InterpolationMasses 37 1.288989 insert f_2width:InterpolationMasses 38 1.2964504 insert f_2width:InterpolationMasses 39 1.3039117 insert f_2width:InterpolationMasses 40 1.3113731 insert f_2width:InterpolationMasses 41 1.3188344 insert f_2width:InterpolationMasses 42 1.3262958 insert f_2width:InterpolationMasses 43 1.3337571 insert f_2width:InterpolationMasses 44 1.3412184 insert f_2width:InterpolationMasses 45 1.3486798 insert f_2width:InterpolationMasses 46 1.3561411 insert f_2width:InterpolationMasses 47 1.3636025 insert f_2width:InterpolationMasses 48 1.3710638 insert f_2width:InterpolationMasses 49 1.3785252 insert f_2width:InterpolationMasses 50 1.3859865 insert f_2width:InterpolationMasses 51 1.3934479 insert f_2width:InterpolationMasses 52 1.4009092 insert f_2width:InterpolationMasses 53 1.4083706 insert f_2width:InterpolationMasses 54 1.4158319 insert f_2width:InterpolationMasses 55 1.4232933 insert f_2width:InterpolationMasses 56 1.4307546 insert f_2width:InterpolationMasses 57 1.438216 insert f_2width:InterpolationMasses 58 1.4456773 insert f_2width:InterpolationMasses 59 1.4531387 insert f_2width:InterpolationMasses 60 1.4606 insert f_2width:InterpolationMasses 61 1.4680613 insert f_2width:InterpolationMasses 62 1.4755227 insert f_2width:InterpolationMasses 63 1.0750816 insert f_2width:InterpolationMasses 64 1.0826408 insert f_2width:InterpolationMasses 65 1.0902 insert f_2width:InterpolationMasses 66 1.0977592 insert f_2width:InterpolationMasses 67 1.1053184 insert f_2width:InterpolationMasses 68 1.1128776 insert f_2width:InterpolationMasses 69 1.1204367 insert f_2width:InterpolationMasses 70 1.1279959 insert f_2width:InterpolationMasses 71 1.1355551 insert f_2width:InterpolationMasses 72 1.1431143 insert f_2width:InterpolationMasses 73 1.1506735 insert f_2width:InterpolationMasses 74 1.1582327 insert f_2width:InterpolationMasses 75 1.1657918 insert f_2width:InterpolationMasses 76 1.173351 insert f_2width:InterpolationMasses 77 1.1809102 insert f_2width:InterpolationMasses 78 1.1884694 insert f_2width:InterpolationMasses 79 1.1960286 insert f_2width:InterpolationMasses 80 1.2035878 insert f_2width:InterpolationMasses 81 1.2111469 insert f_2width:InterpolationMasses 82 1.2187061 insert f_2width:InterpolationMasses 83 1.2262653 insert f_2width:InterpolationMasses 84 1.2338245 insert f_2width:InterpolationMasses 85 1.2413837 insert f_2width:InterpolationMasses 86 1.2489429 insert f_2width:InterpolationMasses 87 1.256502 insert f_2width:InterpolationMasses 88 1.2640612 insert f_2width:InterpolationMasses 89 1.2716204 insert f_2width:InterpolationMasses 90 1.2791796 insert f_2width:InterpolationMasses 91 1.2867388 insert f_2width:InterpolationMasses 92 1.294298 insert f_2width:InterpolationMasses 93 1.3018571 insert f_2width:InterpolationMasses 94 1.3094163 insert f_2width:InterpolationMasses 95 1.3169755 insert f_2width:InterpolationMasses 96 1.3245347 insert f_2width:InterpolationMasses 97 1.3320939 insert f_2width:InterpolationMasses 98 1.3396531 insert f_2width:InterpolationMasses 99 1.3472122 insert f_2width:InterpolationMasses 100 1.3547714 insert f_2width:InterpolationMasses 101 1.3623306 insert f_2width:InterpolationMasses 102 1.3698898 insert f_2width:InterpolationMasses 103 1.377449 insert f_2width:InterpolationMasses 104 1.3850082 insert f_2width:InterpolationMasses 105 1.3925673 insert f_2width:InterpolationMasses 106 1.4001265 insert f_2width:InterpolationMasses 107 1.4076857 insert f_2width:InterpolationMasses 108 1.4152449 insert f_2width:InterpolationMasses 109 1.4228041 insert f_2width:InterpolationMasses 110 1.4303633 insert f_2width:InterpolationMasses 111 1.4379224 insert f_2width:InterpolationMasses 112 1.4454816 insert f_2width:InterpolationMasses 113 1.4530408 insert f_2width:InterpolationMasses 114 1.4606 insert f_2width:InterpolationMasses 115 1.4681592 insert f_2width:InterpolationMasses 116 1.4757184 insert f_2width:InterpolationMasses 117 1.0750816 insert f_2width:InterpolationMasses 118 1.0826408 insert f_2width:InterpolationMasses 119 1.0902 insert f_2width:InterpolationMasses 120 1.0977592 insert f_2width:InterpolationMasses 121 1.1053184 insert f_2width:InterpolationMasses 122 1.1128776 insert f_2width:InterpolationMasses 123 1.1204367 insert f_2width:InterpolationMasses 124 1.1279959 insert f_2width:InterpolationMasses 125 1.1355551 insert f_2width:InterpolationMasses 126 1.1431143 insert f_2width:InterpolationMasses 127 1.1506735 insert f_2width:InterpolationMasses 128 1.1582327 insert f_2width:InterpolationMasses 129 1.1657918 insert f_2width:InterpolationMasses 130 1.173351 insert f_2width:InterpolationMasses 131 1.1809102 insert f_2width:InterpolationMasses 132 1.1884694 insert f_2width:InterpolationMasses 133 1.1960286 insert f_2width:InterpolationMasses 134 1.2035878 insert f_2width:InterpolationMasses 135 1.2111469 insert f_2width:InterpolationMasses 136 1.2187061 insert f_2width:InterpolationMasses 137 1.2262653 insert f_2width:InterpolationMasses 138 1.2338245 insert f_2width:InterpolationMasses 139 1.2413837 insert f_2width:InterpolationMasses 140 1.2489429 insert f_2width:InterpolationMasses 141 1.256502 insert f_2width:InterpolationMasses 142 1.2640612 insert f_2width:InterpolationMasses 143 1.2716204 insert f_2width:InterpolationMasses 144 1.2791796 insert f_2width:InterpolationMasses 145 1.2867388 insert f_2width:InterpolationMasses 146 1.294298 insert f_2width:InterpolationMasses 147 1.3018571 insert f_2width:InterpolationMasses 148 1.3094163 insert f_2width:InterpolationMasses 149 1.3169755 insert f_2width:InterpolationMasses 150 1.3245347 insert f_2width:InterpolationMasses 151 1.3320939 insert f_2width:InterpolationMasses 152 1.3396531 insert f_2width:InterpolationMasses 153 1.3472122 insert f_2width:InterpolationMasses 154 1.3547714 insert f_2width:InterpolationMasses 155 1.3623306 insert f_2width:InterpolationMasses 156 1.3698898 insert f_2width:InterpolationMasses 157 1.377449 insert f_2width:InterpolationMasses 158 1.3850082 insert f_2width:InterpolationMasses 159 1.3925673 insert f_2width:InterpolationMasses 160 1.4001265 insert f_2width:InterpolationMasses 161 1.4076857 insert f_2width:InterpolationMasses 162 1.4152449 insert f_2width:InterpolationMasses 163 1.4228041 insert f_2width:InterpolationMasses 164 1.4303633 insert f_2width:InterpolationMasses 165 1.4379224 insert f_2width:InterpolationMasses 166 1.4454816 insert f_2width:InterpolationMasses 167 1.4530408 insert f_2width:InterpolationMasses 168 1.4606 insert f_2width:InterpolationMasses 169 1.4681592 insert f_2width:InterpolationMasses 170 1.4757184 insert f_2width:InterpolationMasses 171 1.0750816 insert f_2width:InterpolationMasses 172 1.0826408 insert f_2width:InterpolationMasses 173 1.0902 insert f_2width:InterpolationMasses 174 1.0977592 insert f_2width:InterpolationMasses 175 1.1053184 insert f_2width:InterpolationMasses 176 1.1128776 insert f_2width:InterpolationMasses 177 1.1204367 insert f_2width:InterpolationMasses 178 1.1279959 insert f_2width:InterpolationMasses 179 1.1355551 insert f_2width:InterpolationMasses 180 1.1431143 insert f_2width:InterpolationMasses 181 1.1506735 insert f_2width:InterpolationMasses 182 1.1582327 insert f_2width:InterpolationMasses 183 1.1657918 insert f_2width:InterpolationMasses 184 1.173351 insert f_2width:InterpolationMasses 185 1.1809102 insert f_2width:InterpolationMasses 186 1.1884694 insert f_2width:InterpolationMasses 187 1.1960286 insert f_2width:InterpolationMasses 188 1.2035878 insert f_2width:InterpolationMasses 189 1.2111469 insert f_2width:InterpolationMasses 190 1.2187061 insert f_2width:InterpolationMasses 191 1.2262653 insert f_2width:InterpolationMasses 192 1.2338245 insert f_2width:InterpolationMasses 193 1.2413837 insert f_2width:InterpolationMasses 194 1.2489429 insert f_2width:InterpolationMasses 195 1.256502 insert f_2width:InterpolationMasses 196 1.2640612 insert f_2width:InterpolationMasses 197 1.2716204 insert f_2width:InterpolationMasses 198 1.2791796 insert f_2width:InterpolationMasses 199 1.2867388 insert f_2width:InterpolationMasses 200 1.294298 insert f_2width:InterpolationMasses 201 1.3018571 insert f_2width:InterpolationMasses 202 1.3094163 insert f_2width:InterpolationMasses 203 1.3169755 insert f_2width:InterpolationMasses 204 1.3245347 insert f_2width:InterpolationMasses 205 1.3320939 insert f_2width:InterpolationMasses 206 1.3396531 insert f_2width:InterpolationMasses 207 1.3472122 insert f_2width:InterpolationMasses 208 1.3547714 insert f_2width:InterpolationMasses 209 1.3623306 insert f_2width:InterpolationMasses 210 1.3698898 insert f_2width:InterpolationMasses 211 1.377449 insert f_2width:InterpolationMasses 212 1.3850082 insert f_2width:InterpolationMasses 213 1.3925673 insert f_2width:InterpolationMasses 214 1.4001265 insert f_2width:InterpolationMasses 215 1.4076857 insert f_2width:InterpolationMasses 216 1.4152449 insert f_2width:InterpolationMasses 217 1.4228041 insert f_2width:InterpolationMasses 218 1.4303633 insert f_2width:InterpolationMasses 219 1.4379224 insert f_2width:InterpolationMasses 220 1.4454816 insert f_2width:InterpolationMasses 221 1.4530408 insert f_2width:InterpolationMasses 222 1.4606 insert f_2width:InterpolationMasses 223 1.4681592 insert f_2width:InterpolationMasses 224 1.4757184 insert f_2width:InterpolationWidths 0 0 insert f_2width:InterpolationWidths 1 0 insert f_2width:InterpolationWidths 2 0 insert f_2width:InterpolationWidths 3 8.8772347e-10 insert f_2width:InterpolationWidths 4 5.2538943e-09 insert f_2width:InterpolationWidths 5 1.4698596e-08 insert f_2width:InterpolationWidths 6 3.0406478e-08 insert f_2width:InterpolationWidths 7 5.3370612e-08 insert f_2width:InterpolationWidths 8 8.4465055e-08 insert f_2width:InterpolationWidths 9 1.2448048e-07 insert f_2width:InterpolationWidths 10 1.7414494e-07 insert f_2width:InterpolationWidths 11 2.341372e-07 insert f_2width:InterpolationWidths 12 3.0509601e-07 insert f_2width:InterpolationWidths 13 1.7247637e-06 insert f_2width:InterpolationWidths 14 4.7362821e-06 insert f_2width:InterpolationWidths 15 9.6822153e-06 insert f_2width:InterpolationWidths 16 1.683991e-05 insert f_2width:InterpolationWidths 17 2.6445105e-05 insert f_2width:InterpolationWidths 18 3.8703812e-05 insert f_2width:InterpolationWidths 19 5.3799379e-05 insert f_2width:InterpolationWidths 20 7.1897126e-05 insert f_2width:InterpolationWidths 21 9.3147593e-05 insert f_2width:InterpolationWidths 22 0.00011768894 insert f_2width:InterpolationWidths 23 0.00014564876 insert f_2width:InterpolationWidths 24 0.00017714555 insert f_2width:InterpolationWidths 25 0.0002122898 insert f_2width:InterpolationWidths 26 0.00025118502 insert f_2width:InterpolationWidths 27 0.00029392845 insert f_2width:InterpolationWidths 28 0.00034061178 insert f_2width:InterpolationWidths 29 0.00039132166 insert f_2width:InterpolationWidths 30 0.00044614025 insert f_2width:InterpolationWidths 31 0.00050514558 insert f_2width:InterpolationWidths 32 0.00056841197 insert f_2width:InterpolationWidths 33 0.00063601032 insert f_2width:InterpolationWidths 34 0.0007080084 insert f_2width:InterpolationWidths 35 0.00078447114 insert f_2width:InterpolationWidths 36 0.0008654608 insert f_2width:InterpolationWidths 37 0.00095103724 insert f_2width:InterpolationWidths 38 0.0010412581 insert f_2width:InterpolationWidths 39 0.0011361788 insert f_2width:InterpolationWidths 40 0.001235853 insert f_2width:InterpolationWidths 41 0.0013403325 insert f_2width:InterpolationWidths 42 0.0014496674 insert f_2width:InterpolationWidths 43 0.0015639064 insert f_2width:InterpolationWidths 44 0.0016830965 insert f_2width:InterpolationWidths 45 0.0018072836 insert f_2width:InterpolationWidths 46 0.0019365123 insert f_2width:InterpolationWidths 47 0.0020708259 insert f_2width:InterpolationWidths 48 0.0022102666 insert f_2width:InterpolationWidths 49 0.0023548758 insert f_2width:InterpolationWidths 50 0.0025046937 insert f_2width:InterpolationWidths 51 0.0026597597 insert f_2width:InterpolationWidths 52 0.0028201124 insert f_2width:InterpolationWidths 53 0.0029857894 insert f_2width:InterpolationWidths 54 0.0031568277 insert f_2width:InterpolationWidths 55 0.0033332637 insert f_2width:InterpolationWidths 56 0.003515133 insert f_2width:InterpolationWidths 57 0.0037024705 insert f_2width:InterpolationWidths 58 0.0038953108 insert f_2width:InterpolationWidths 59 0.0040936876 insert f_2width:InterpolationWidths 60 0.0042976344 insert f_2width:InterpolationWidths 61 0.004507184 insert f_2width:InterpolationWidths 62 0.0047223688 insert f_2width:InterpolationWidths 63 0.00017145587 insert f_2width:InterpolationWidths 64 0.00020154316 insert f_2width:InterpolationWidths 65 0.00023675451 insert f_2width:InterpolationWidths 66 0.00027795303 insert f_2width:InterpolationWidths 67 0.0003261417 insert f_2width:InterpolationWidths 68 0.00038248107 insert f_2width:InterpolationWidths 69 0.00044830686 insert f_2width:InterpolationWidths 70 0.00052514647 insert f_2width:InterpolationWidths 71 0.00061473416 insert f_2width:InterpolationWidths 72 0.0007190251 insert f_2width:InterpolationWidths 73 0.00084020921 insert f_2width:InterpolationWidths 74 0.00098072651 insert f_2width:InterpolationWidths 75 0.0011432857 insert f_2width:InterpolationWidths 76 0.0013308869 insert f_2width:InterpolationWidths 77 0.0015468501 insert f_2width:InterpolationWidths 78 0.0017948482 insert f_2width:InterpolationWidths 79 0.0020789455 insert f_2width:InterpolationWidths 80 0.0024036406 insert f_2width:InterpolationWidths 81 0.0027739149 insert f_2width:InterpolationWidths 82 0.0031952853 insert f_2width:InterpolationWidths 83 0.0036738626 insert f_2width:InterpolationWidths 84 0.0042164157 insert f_2width:InterpolationWidths 85 0.0048304423 insert f_2width:InterpolationWidths 86 0.0055242468 insert f_2width:InterpolationWidths 87 0.0063070268 insert f_2width:InterpolationWidths 88 0.007188967 insert f_2width:InterpolationWidths 89 0.0081813455 insert f_2width:InterpolationWidths 90 0.0092966482 insert f_2width:InterpolationWidths 91 0.010548697 insert f_2width:InterpolationWidths 92 0.011952789 insert f_2width:InterpolationWidths 93 0.013525853 insert f_2width:InterpolationWidths 94 0.015286618 insert f_2width:InterpolationWidths 95 0.017255796 insert f_2width:InterpolationWidths 96 0.019456287 insert f_2width:InterpolationWidths 97 0.021913396 insert f_2width:InterpolationWidths 98 0.024655068 insert f_2width:InterpolationWidths 99 0.02771214 insert f_2width:InterpolationWidths 100 0.031118606 insert f_2width:InterpolationWidths 101 0.034911895 insert f_2width:InterpolationWidths 102 0.039133161 insert f_2width:InterpolationWidths 103 0.043827563 insert f_2width:InterpolationWidths 104 0.049044553 insert f_2width:InterpolationWidths 105 0.054838132 insert f_2width:InterpolationWidths 106 0.061267079 insert f_2width:InterpolationWidths 107 0.068395127 insert f_2width:InterpolationWidths 108 0.076291062 insert f_2width:InterpolationWidths 109 0.08502871 insert f_2width:InterpolationWidths 110 0.094686797 insert f_2width:InterpolationWidths 111 0.10534862 insert f_2width:InterpolationWidths 112 0.11710155 insert f_2width:InterpolationWidths 113 0.13003623 insert f_2width:InterpolationWidths 114 0.14424555 insert f_2width:InterpolationWidths 115 0.15982331 insert f_2width:InterpolationWidths 116 0.17686266 insert f_2width:InterpolationWidths 117 8.3106482e-05 insert f_2width:InterpolationWidths 118 9.7766361e-05 insert f_2width:InterpolationWidths 119 0.00011493437 insert f_2width:InterpolationWidths 120 0.00013503461 insert f_2width:InterpolationWidths 121 0.00015856016 insert f_2width:InterpolationWidths 122 0.00018608196 insert f_2width:InterpolationWidths 123 0.00021825756 insert f_2width:InterpolationWidths 124 0.00025583949 insert f_2width:InterpolationWidths 125 0.00029968299 insert f_2width:InterpolationWidths 126 0.0003507532 insert f_2width:InterpolationWidths 127 0.00041013241 insert f_2width:InterpolationWidths 128 0.0004790279 insert f_2width:InterpolationWidths 129 0.0005587815 insert f_2width:InterpolationWidths 130 0.00065088124 insert f_2width:InterpolationWidths 131 0.00075697555 insert f_2width:InterpolationWidths 132 0.00087888999 insert f_2width:InterpolationWidths 133 0.0010186466 insert f_2width:InterpolationWidths 134 0.0011784853 insert f_2width:InterpolationWidths 135 0.0013608883 insert f_2width:InterpolationWidths 136 0.0015686067 insert f_2width:InterpolationWidths 137 0.0018046894 insert f_2width:InterpolationWidths 138 0.0020725158 insert f_2width:InterpolationWidths 139 0.002375831 insert f_2width:InterpolationWidths 140 0.0027187852 insert f_2width:InterpolationWidths 141 0.0031059772 insert f_2width:InterpolationWidths 142 0.0035425016 insert f_2width:InterpolationWidths 143 0.0040340023 insert f_2width:InterpolationWidths 144 0.00458673 insert f_2width:InterpolationWidths 145 0.0052076071 insert f_2width:InterpolationWidths 146 0.0059042979 insert f_2width:InterpolationWidths 147 0.0066852868 insert f_2width:InterpolationWidths 148 0.0075599636 insert f_2width:InterpolationWidths 149 0.0085387167 insert f_2width:InterpolationWidths 150 0.0096330349 insert f_2width:InterpolationWidths 151 0.010855617 insert f_2width:InterpolationWidths 152 0.012220492 insert f_2width:InterpolationWidths 153 0.013743145 insert f_2width:InterpolationWidths 154 0.01544065 insert f_2width:InterpolationWidths 155 0.017331813 insert f_2width:InterpolationWidths 156 0.019437316 insert f_2width:InterpolationWidths 157 0.021779861 insert f_2width:InterpolationWidths 158 0.02438431 insert f_2width:InterpolationWidths 159 0.027277823 insert f_2width:InterpolationWidths 160 0.030489965 insert f_2width:InterpolationWidths 161 0.034052802 insert f_2width:InterpolationWidths 162 0.038000946 insert f_2width:InterpolationWidths 163 0.042371553 insert f_2width:InterpolationWidths 164 0.047204248 insert f_2width:InterpolationWidths 165 0.052540959 insert f_2width:InterpolationWidths 166 0.058425678 insert f_2width:InterpolationWidths 167 0.064904032 insert f_2width:InterpolationWidths 168 0.072022784 insert f_2width:InterpolationWidths 169 0.079829161 insert f_2width:InterpolationWidths 170 0.088370047 insert f_2width:InterpolationWidths 171 0.00060741382 insert f_2width:InterpolationWidths 172 0.00066191015 insert f_2width:InterpolationWidths 173 0.00072041524 insert f_2width:InterpolationWidths 174 0.00078316449 insert f_2width:InterpolationWidths 175 0.00085040403 insert f_2width:InterpolationWidths 176 0.00092239099 insert f_2width:InterpolationWidths 177 0.00099939396 insert f_2width:InterpolationWidths 178 0.0010816933 insert f_2width:InterpolationWidths 179 0.0011695814 insert f_2width:InterpolationWidths 180 0.0012633635 insert f_2width:InterpolationWidths 181 0.0013633575 insert f_2width:InterpolationWidths 182 0.0014698946 insert f_2width:InterpolationWidths 183 0.0015833201 insert f_2width:InterpolationWidths 184 0.001703993 insert f_2width:InterpolationWidths 185 0.0018322871 insert f_2width:InterpolationWidths 186 0.0019685912 insert f_2width:InterpolationWidths 187 0.0021133094 insert f_2width:InterpolationWidths 188 0.0022668617 insert f_2width:InterpolationWidths 189 0.0024296845 insert f_2width:InterpolationWidths 190 0.0026022306 insert f_2width:InterpolationWidths 191 0.0027849703 insert f_2width:InterpolationWidths 192 0.0029783913 insert f_2width:InterpolationWidths 193 0.0031829995 insert f_2width:InterpolationWidths 194 0.0033993191 insert f_2width:InterpolationWidths 195 0.0036278937 insert f_2width:InterpolationWidths 196 0.0038692858 insert f_2width:InterpolationWidths 197 0.0041240783 insert f_2width:InterpolationWidths 198 0.0043928742 insert f_2width:InterpolationWidths 199 0.0046762974 insert f_2width:InterpolationWidths 200 0.0049749932 insert f_2width:InterpolationWidths 201 0.0052896285 insert f_2width:InterpolationWidths 202 0.0056208925 insert f_2width:InterpolationWidths 203 0.0059694973 insert f_2width:InterpolationWidths 204 0.006336178 insert f_2width:InterpolationWidths 205 0.0067216935 insert f_2width:InterpolationWidths 206 0.0071268266 insert f_2width:InterpolationWidths 207 0.007552385 insert f_2width:InterpolationWidths 208 0.0079992011 insert f_2width:InterpolationWidths 209 0.0084681332 insert f_2width:InterpolationWidths 210 0.0089600653 insert f_2width:InterpolationWidths 211 0.009475908 insert f_2width:InterpolationWidths 212 0.010016599 insert f_2width:InterpolationWidths 213 0.010583102 insert f_2width:InterpolationWidths 214 0.011176411 insert f_2width:InterpolationWidths 215 0.011797545 insert f_2width:InterpolationWidths 216 0.012447556 insert f_2width:InterpolationWidths 217 0.01312752 insert f_2width:InterpolationWidths 218 0.013838546 insert f_2width:InterpolationWidths 219 0.014581773 insert f_2width:InterpolationWidths 220 0.015358368 insert f_2width:InterpolationWidths 221 0.01616953 insert f_2width:InterpolationWidths 222 0.01701649 insert f_2width:InterpolationWidths 223 0.01790051 insert f_2width:InterpolationWidths 224 0.018822883 insert f_2width:NumberofEntries 0 0 insert f_2width:NumberofEntries 1 0 insert f_2width:NumberofEntries 2 63 insert f_2width:NumberofEntries 3 63 insert f_2width:NumberofEntries 4 63 insert f_2width:NumberofEntries 5 63 insert f_2width:NumberofEntries 6 117 insert f_2width:NumberofEntries 7 171 insert f_2width:NumberofEntries 8 225 newdef /Herwig/Particles/f_2:Width_generator f_2width # create Herwig::GenericWidthGenerator D*0width newdef D*0width:Particle /Herwig/Particles/D*0 newdef D*0width:Prefactor 1 newdef D*0width:BRNormalize 1 newdef D*0width:BRMinimum 0.01 newdef D*0width:Points 50 newdef D*0width:InterpolationOrder 1 insert D*0width:MEtype 0 1 insert D*0width:MEtype 1 1 insert D*0width:MEcode 0 1 insert D*0width:MEcode 1 0 insert D*0width:MEcoupling 0 1.23457 insert D*0width:MEcoupling 1 6.31029 insert D*0width:ModeOn 0 1 insert D*0width:ModeOn 1 1 insert D*0width:MinimumMasses 0 1.8645 insert D*0width:MinimumMasses 1 1.99948 insert D*0width:MEmass1 0 0 insert D*0width:MEmass1 1 1.8645 insert D*0width:MEmass2 0 1.8645 insert D*0width:MEmass2 1 0.134978 insert D*0width:DecayModes 0 D*0->D0,gamma; insert D*0width:DecayModes 1 D*0->D0,pi0; insert D*0width:NumberofEntries 0 0 insert D*0width:NumberofEntries 1 0 newdef /Herwig/Particles/D*0:Width_generator D*0width newdef /Herwig/Particles/D*bar0:Width_generator D*0width # create Herwig::GenericWidthGenerator B*0width newdef B*0width:Particle /Herwig/Particles/B*0 newdef B*0width:Prefactor 1 newdef B*0width:BRNormalize 1 newdef B*0width:BRMinimum 0.01 newdef B*0width:Points 50 newdef B*0width:InterpolationOrder 1 insert B*0width:MEtype 0 1 insert B*0width:MEcode 0 1 insert B*0width:MEcoupling 0 1.65554 insert B*0width:ModeOn 0 1 insert B*0width:MinimumMasses 0 5.2794 insert B*0width:MEmass1 0 0 insert B*0width:MEmass2 0 5.2794 insert B*0width:DecayModes 0 B*0->B0,gamma; insert B*0width:NumberofEntries 0 0 newdef /Herwig/Particles/B*bar0:Width_generator B*0width newdef /Herwig/Particles/B*0:Width_generator B*0width # create Herwig::GenericWidthGenerator B*+width newdef B*+width:Particle /Herwig/Particles/B*+ newdef B*+width:Prefactor 1 newdef B*+width:BRNormalize 1 newdef B*+width:BRMinimum 0.01 newdef B*+width:Points 50 newdef B*+width:InterpolationOrder 1 insert B*+width:MEtype 0 1 insert B*+width:MEcode 0 1 insert B*+width:MEcoupling 0 2.94588 insert B*+width:ModeOn 0 1 insert B*+width:MinimumMasses 0 5.279 insert B*+width:MEmass1 0 0 insert B*+width:MEmass2 0 5.279 insert B*+width:DecayModes 0 B*+->B+,gamma; insert B*+width:NumberofEntries 0 0 newdef /Herwig/Particles/B*+:Width_generator B*+width newdef /Herwig/Particles/B*-:Width_generator B*+width # create Herwig::GenericWidthGenerator D*+width newdef D*+width:Particle /Herwig/Particles/D*+ newdef D*+width:Prefactor 1 newdef D*+width:BRNormalize 1 newdef D*+width:BRMinimum 0.01 newdef D*+width:Points 50 newdef D*+width:InterpolationOrder 1 insert D*+width:MEtype 0 1 insert D*+width:MEtype 1 1 insert D*+width:MEtype 2 1 insert D*+width:MEcode 0 1 insert D*+width:MEcode 1 0 insert D*+width:MEcode 2 0 insert D*+width:MEcoupling 0 0.305721 insert D*+width:MEcoupling 1 6.31932 insert D*+width:MEcoupling 2 8.9273 insert D*+width:ModeOn 0 1 insert D*+width:ModeOn 1 1 insert D*+width:ModeOn 2 1 insert D*+width:MinimumMasses 0 1.8693 insert D*+width:MinimumMasses 1 2.00428 insert D*+width:MinimumMasses 2 2.00407 insert D*+width:MEmass1 0 0 insert D*+width:MEmass1 1 1.8693 insert D*+width:MEmass1 2 1.8645 insert D*+width:MEmass2 0 1.8693 insert D*+width:MEmass2 1 0.134978 insert D*+width:MEmass2 2 0.13957 insert D*+width:DecayModes 0 D*+->D+,gamma; insert D*+width:DecayModes 1 D*+->D+,pi0; insert D*+width:DecayModes 2 D*+->D0,pi+; insert D*+width:NumberofEntries 0 0 insert D*+width:NumberofEntries 1 0 insert D*+width:NumberofEntries 2 0 newdef /Herwig/Particles/D*+:Width_generator D*+width newdef /Herwig/Particles/D*-:Width_generator D*+width # create Herwig::GenericWidthGenerator a_2+width newdef a_2+width:Particle /Herwig/Particles/a_2+ newdef a_2+width:Prefactor 1.0072 newdef a_2+width:BRNormalize 1 newdef a_2+width:BRMinimum 0.01 newdef a_2+width:Points 50 newdef a_2+width:InterpolationOrder 1 insert a_2+width:MEtype 0 1 insert a_2+width:MEtype 1 2 insert a_2+width:MEtype 2 2 insert a_2+width:MEtype 3 2 insert a_2+width:MEtype 4 1 insert a_2+width:MEtype 5 2 insert a_2+width:MEtype 6 2 insert a_2+width:MEcode 0 7 insert a_2+width:MEcode 1 0 insert a_2+width:MEcode 2 0 insert a_2+width:MEcode 3 0 insert a_2+width:MEcode 4 8 insert a_2+width:MEcode 5 0 insert a_2+width:MEcode 6 0 insert a_2+width:MEcoupling 0 13.7553 insert a_2+width:MEcoupling 1 0.992361 insert a_2+width:MEcoupling 2 0.999346 insert a_2+width:MEcoupling 3 0.951152 insert a_2+width:MEcoupling 4 0.955688 insert a_2+width:MEcoupling 5 0.99884 insert a_2+width:MEcoupling 6 0.985983 insert a_2+width:ModeOn 0 1 insert a_2+width:ModeOn 1 0 insert a_2+width:ModeOn 2 1 insert a_2+width:ModeOn 3 1 insert a_2+width:ModeOn 4 0 insert a_2+width:ModeOn 5 1 insert a_2+width:ModeOn 6 1 insert a_2+width:MinimumMasses 0 0.991325 insert a_2+width:MinimumMasses 1 1.09532 insert a_2+width:MinimumMasses 2 0.687067 insert a_2+width:MinimumMasses 3 1.07325 insert a_2+width:MinimumMasses 4 0.13957 insert a_2+width:MinimumMasses 5 0.51507 insert a_2+width:MinimumMasses 6 0.510478 insert a_2+width:MEmass1 0 0.493677 insert a_2+width:MEmass1 1 0.95778 insert a_2+width:MEmass1 2 0.54751 insert a_2+width:MEmass1 3 0.78265 insert a_2+width:MEmass1 4 0.13957 insert a_2+width:MEmass1 5 0.13957 insert a_2+width:MEmass1 6 0.134978 insert a_2+width:MEmass2 0 0.497648 insert a_2+width:MEmass2 1 0.13957 insert a_2+width:MEmass2 2 0.13957 insert a_2+width:MEmass2 3 0.7755 insert a_2+width:MEmass2 4 0 insert a_2+width:MEmass2 5 0.7755 insert a_2+width:MEmass2 6 0.7755 insert a_2+width:DecayModes 0 a_2+->K+,Kbar0; insert a_2+width:DecayModes 1 a_2+->eta',pi+; insert a_2+width:DecayModes 2 a_2+->eta,pi+; insert a_2+width:DecayModes 3 a_2+->omega,rho+; insert a_2+width:DecayModes 4 a_2+->pi+,gamma; insert a_2+width:DecayModes 5 a_2+->pi+,rho0; insert a_2+width:DecayModes 6 a_2+->rho+,pi0; insert a_2+width:InterpolationMasses 0 1.0868306 insert a_2+width:InterpolationMasses 1 1.0953202 insert a_2+width:InterpolationMasses 2 1.1043 insert a_2+width:InterpolationMasses 3 1.1130347 insert a_2+width:InterpolationMasses 4 1.1217694 insert a_2+width:InterpolationMasses 5 1.1305041 insert a_2+width:InterpolationMasses 6 1.1392388 insert a_2+width:InterpolationMasses 7 1.1479735 insert a_2+width:InterpolationMasses 8 1.1567082 insert a_2+width:InterpolationMasses 9 1.1654429 insert a_2+width:InterpolationMasses 10 1.1741776 insert a_2+width:InterpolationMasses 11 1.1829122 insert a_2+width:InterpolationMasses 12 1.1916469 insert a_2+width:InterpolationMasses 13 1.2003816 insert a_2+width:InterpolationMasses 14 1.2091163 insert a_2+width:InterpolationMasses 15 1.217851 insert a_2+width:InterpolationMasses 16 1.2265857 insert a_2+width:InterpolationMasses 17 1.2353204 insert a_2+width:InterpolationMasses 18 1.2440551 insert a_2+width:InterpolationMasses 19 1.2527898 insert a_2+width:InterpolationMasses 20 1.2615245 insert a_2+width:InterpolationMasses 21 1.2702592 insert a_2+width:InterpolationMasses 22 1.2789939 insert a_2+width:InterpolationMasses 23 1.2877286 insert a_2+width:InterpolationMasses 24 1.2964633 insert a_2+width:InterpolationMasses 25 1.305198 insert a_2+width:InterpolationMasses 26 1.3139327 insert a_2+width:InterpolationMasses 27 1.3226673 insert a_2+width:InterpolationMasses 28 1.331402 insert a_2+width:InterpolationMasses 29 1.3401367 insert a_2+width:InterpolationMasses 30 1.3488714 insert a_2+width:InterpolationMasses 31 1.3576061 insert a_2+width:InterpolationMasses 32 1.3663408 insert a_2+width:InterpolationMasses 33 1.3750755 insert a_2+width:InterpolationMasses 34 1.3838102 insert a_2+width:InterpolationMasses 35 1.3925449 insert a_2+width:InterpolationMasses 36 1.4012796 insert a_2+width:InterpolationMasses 37 1.4100143 insert a_2+width:InterpolationMasses 38 1.418749 insert a_2+width:InterpolationMasses 39 1.4274837 insert a_2+width:InterpolationMasses 40 1.4362184 insert a_2+width:InterpolationMasses 41 1.4449531 insert a_2+width:InterpolationMasses 42 1.4536878 insert a_2+width:InterpolationMasses 43 1.4624224 insert a_2+width:InterpolationMasses 44 1.4711571 insert a_2+width:InterpolationMasses 45 1.4798918 insert a_2+width:InterpolationMasses 46 1.4886265 insert a_2+width:InterpolationMasses 47 1.4973612 insert a_2+width:InterpolationMasses 48 1.5060959 insert a_2+width:InterpolationMasses 49 1.5148306 insert a_2+width:InterpolationMasses 50 1.5235653 insert a_2+width:InterpolationMasses 51 1.5323 insert a_2+width:InterpolationMasses 52 1.5410347 insert a_2+width:InterpolationMasses 53 1.5497694 insert a_2+width:InterpolationMasses 54 1.0868306 insert a_2+width:InterpolationMasses 55 1.0955653 insert a_2+width:InterpolationMasses 56 1.1043 insert a_2+width:InterpolationMasses 57 1.1130347 insert a_2+width:InterpolationMasses 58 1.1217694 insert a_2+width:InterpolationMasses 59 1.1305041 insert a_2+width:InterpolationMasses 60 1.1392388 insert a_2+width:InterpolationMasses 61 1.1479735 insert a_2+width:InterpolationMasses 62 1.1567082 insert a_2+width:InterpolationMasses 63 1.1654429 insert a_2+width:InterpolationMasses 64 1.1741776 insert a_2+width:InterpolationMasses 65 1.1829122 insert a_2+width:InterpolationMasses 66 1.1916469 insert a_2+width:InterpolationMasses 67 1.2003816 insert a_2+width:InterpolationMasses 68 1.2091163 insert a_2+width:InterpolationMasses 69 1.217851 insert a_2+width:InterpolationMasses 70 1.2265857 insert a_2+width:InterpolationMasses 71 1.2353204 insert a_2+width:InterpolationMasses 72 1.2440551 insert a_2+width:InterpolationMasses 73 1.2527898 insert a_2+width:InterpolationMasses 74 1.2615245 insert a_2+width:InterpolationMasses 75 1.2702592 insert a_2+width:InterpolationMasses 76 1.2789939 insert a_2+width:InterpolationMasses 77 1.2877286 insert a_2+width:InterpolationMasses 78 1.2964633 insert a_2+width:InterpolationMasses 79 1.305198 insert a_2+width:InterpolationMasses 80 1.3139327 insert a_2+width:InterpolationMasses 81 1.3226673 insert a_2+width:InterpolationMasses 82 1.331402 insert a_2+width:InterpolationMasses 83 1.3401367 insert a_2+width:InterpolationMasses 84 1.3488714 insert a_2+width:InterpolationMasses 85 1.3576061 insert a_2+width:InterpolationMasses 86 1.3663408 insert a_2+width:InterpolationMasses 87 1.3750755 insert a_2+width:InterpolationMasses 88 1.3838102 insert a_2+width:InterpolationMasses 89 1.3925449 insert a_2+width:InterpolationMasses 90 1.4012796 insert a_2+width:InterpolationMasses 91 1.4100143 insert a_2+width:InterpolationMasses 92 1.418749 insert a_2+width:InterpolationMasses 93 1.4274837 insert a_2+width:InterpolationMasses 94 1.4362184 insert a_2+width:InterpolationMasses 95 1.4449531 insert a_2+width:InterpolationMasses 96 1.4536878 insert a_2+width:InterpolationMasses 97 1.4624224 insert a_2+width:InterpolationMasses 98 1.4711571 insert a_2+width:InterpolationMasses 99 1.4798918 insert a_2+width:InterpolationMasses 100 1.4886265 insert a_2+width:InterpolationMasses 101 1.4973612 insert a_2+width:InterpolationMasses 102 1.5060959 insert a_2+width:InterpolationMasses 103 1.5148306 insert a_2+width:InterpolationMasses 104 1.5235653 insert a_2+width:InterpolationMasses 105 1.5323 insert a_2+width:InterpolationMasses 106 1.5410347 insert a_2+width:InterpolationMasses 107 1.5497694 insert a_2+width:InterpolationMasses 108 1.0868306 insert a_2+width:InterpolationMasses 109 1.0955653 insert a_2+width:InterpolationMasses 110 1.1043 insert a_2+width:InterpolationMasses 111 1.1130347 insert a_2+width:InterpolationMasses 112 1.1217694 insert a_2+width:InterpolationMasses 113 1.1305041 insert a_2+width:InterpolationMasses 114 1.1392388 insert a_2+width:InterpolationMasses 115 1.1479735 insert a_2+width:InterpolationMasses 116 1.1567082 insert a_2+width:InterpolationMasses 117 1.1654429 insert a_2+width:InterpolationMasses 118 1.1741776 insert a_2+width:InterpolationMasses 119 1.1829122 insert a_2+width:InterpolationMasses 120 1.1916469 insert a_2+width:InterpolationMasses 121 1.2003816 insert a_2+width:InterpolationMasses 122 1.2091163 insert a_2+width:InterpolationMasses 123 1.217851 insert a_2+width:InterpolationMasses 124 1.2265857 insert a_2+width:InterpolationMasses 125 1.2353204 insert a_2+width:InterpolationMasses 126 1.2440551 insert a_2+width:InterpolationMasses 127 1.2527898 insert a_2+width:InterpolationMasses 128 1.2615245 insert a_2+width:InterpolationMasses 129 1.2702592 insert a_2+width:InterpolationMasses 130 1.2789939 insert a_2+width:InterpolationMasses 131 1.2877286 insert a_2+width:InterpolationMasses 132 1.2964633 insert a_2+width:InterpolationMasses 133 1.305198 insert a_2+width:InterpolationMasses 134 1.3139327 insert a_2+width:InterpolationMasses 135 1.3226673 insert a_2+width:InterpolationMasses 136 1.331402 insert a_2+width:InterpolationMasses 137 1.3401367 insert a_2+width:InterpolationMasses 138 1.3488714 insert a_2+width:InterpolationMasses 139 1.3576061 insert a_2+width:InterpolationMasses 140 1.3663408 insert a_2+width:InterpolationMasses 141 1.3750755 insert a_2+width:InterpolationMasses 142 1.3838102 insert a_2+width:InterpolationMasses 143 1.3925449 insert a_2+width:InterpolationMasses 144 1.4012796 insert a_2+width:InterpolationMasses 145 1.4100143 insert a_2+width:InterpolationMasses 146 1.418749 insert a_2+width:InterpolationMasses 147 1.4274837 insert a_2+width:InterpolationMasses 148 1.4362184 insert a_2+width:InterpolationMasses 149 1.4449531 insert a_2+width:InterpolationMasses 150 1.4536878 insert a_2+width:InterpolationMasses 151 1.4624224 insert a_2+width:InterpolationMasses 152 1.4711571 insert a_2+width:InterpolationMasses 153 1.4798918 insert a_2+width:InterpolationMasses 154 1.4886265 insert a_2+width:InterpolationMasses 155 1.4973612 insert a_2+width:InterpolationMasses 156 1.5060959 insert a_2+width:InterpolationMasses 157 1.5148306 insert a_2+width:InterpolationMasses 158 1.5235653 insert a_2+width:InterpolationMasses 159 1.5323 insert a_2+width:InterpolationMasses 160 1.5410347 insert a_2+width:InterpolationMasses 161 1.5497694 insert a_2+width:InterpolationMasses 162 1.0868306 insert a_2+width:InterpolationMasses 163 1.0955653 insert a_2+width:InterpolationMasses 164 1.1043 insert a_2+width:InterpolationMasses 165 1.1130347 insert a_2+width:InterpolationMasses 166 1.1217694 insert a_2+width:InterpolationMasses 167 1.1305041 insert a_2+width:InterpolationMasses 168 1.1392388 insert a_2+width:InterpolationMasses 169 1.1479735 insert a_2+width:InterpolationMasses 170 1.1567082 insert a_2+width:InterpolationMasses 171 1.1654429 insert a_2+width:InterpolationMasses 172 1.1741776 insert a_2+width:InterpolationMasses 173 1.1829122 insert a_2+width:InterpolationMasses 174 1.1916469 insert a_2+width:InterpolationMasses 175 1.2003816 insert a_2+width:InterpolationMasses 176 1.2091163 insert a_2+width:InterpolationMasses 177 1.217851 insert a_2+width:InterpolationMasses 178 1.2265857 insert a_2+width:InterpolationMasses 179 1.2353204 insert a_2+width:InterpolationMasses 180 1.2440551 insert a_2+width:InterpolationMasses 181 1.2527898 insert a_2+width:InterpolationMasses 182 1.2615245 insert a_2+width:InterpolationMasses 183 1.2702592 insert a_2+width:InterpolationMasses 184 1.2789939 insert a_2+width:InterpolationMasses 185 1.2877286 insert a_2+width:InterpolationMasses 186 1.2964633 insert a_2+width:InterpolationMasses 187 1.305198 insert a_2+width:InterpolationMasses 188 1.3139327 insert a_2+width:InterpolationMasses 189 1.3226673 insert a_2+width:InterpolationMasses 190 1.331402 insert a_2+width:InterpolationMasses 191 1.3401367 insert a_2+width:InterpolationMasses 192 1.3488714 insert a_2+width:InterpolationMasses 193 1.3576061 insert a_2+width:InterpolationMasses 194 1.3663408 insert a_2+width:InterpolationMasses 195 1.3750755 insert a_2+width:InterpolationMasses 196 1.3838102 insert a_2+width:InterpolationMasses 197 1.3925449 insert a_2+width:InterpolationMasses 198 1.4012796 insert a_2+width:InterpolationMasses 199 1.4100143 insert a_2+width:InterpolationMasses 200 1.418749 insert a_2+width:InterpolationMasses 201 1.4274837 insert a_2+width:InterpolationMasses 202 1.4362184 insert a_2+width:InterpolationMasses 203 1.4449531 insert a_2+width:InterpolationMasses 204 1.4536878 insert a_2+width:InterpolationMasses 205 1.4624224 insert a_2+width:InterpolationMasses 206 1.4711571 insert a_2+width:InterpolationMasses 207 1.4798918 insert a_2+width:InterpolationMasses 208 1.4886265 insert a_2+width:InterpolationMasses 209 1.4973612 insert a_2+width:InterpolationMasses 210 1.5060959 insert a_2+width:InterpolationMasses 211 1.5148306 insert a_2+width:InterpolationMasses 212 1.5235653 insert a_2+width:InterpolationMasses 213 1.5323 insert a_2+width:InterpolationMasses 214 1.5410347 insert a_2+width:InterpolationMasses 215 1.5497694 insert a_2+width:InterpolationMasses 216 1.0868306 insert a_2+width:InterpolationMasses 217 1.0955653 insert a_2+width:InterpolationMasses 218 1.1043 insert a_2+width:InterpolationMasses 219 1.1130347 insert a_2+width:InterpolationMasses 220 1.1217694 insert a_2+width:InterpolationMasses 221 1.1305041 insert a_2+width:InterpolationMasses 222 1.1392388 insert a_2+width:InterpolationMasses 223 1.1479735 insert a_2+width:InterpolationMasses 224 1.1567082 insert a_2+width:InterpolationMasses 225 1.1654429 insert a_2+width:InterpolationMasses 226 1.1741776 insert a_2+width:InterpolationMasses 227 1.1829122 insert a_2+width:InterpolationMasses 228 1.1916469 insert a_2+width:InterpolationMasses 229 1.2003816 insert a_2+width:InterpolationMasses 230 1.2091163 insert a_2+width:InterpolationMasses 231 1.217851 insert a_2+width:InterpolationMasses 232 1.2265857 insert a_2+width:InterpolationMasses 233 1.2353204 insert a_2+width:InterpolationMasses 234 1.2440551 insert a_2+width:InterpolationMasses 235 1.2527898 insert a_2+width:InterpolationMasses 236 1.2615245 insert a_2+width:InterpolationMasses 237 1.2702592 insert a_2+width:InterpolationMasses 238 1.2789939 insert a_2+width:InterpolationMasses 239 1.2877286 insert a_2+width:InterpolationMasses 240 1.2964633 insert a_2+width:InterpolationMasses 241 1.305198 insert a_2+width:InterpolationMasses 242 1.3139327 insert a_2+width:InterpolationMasses 243 1.3226673 insert a_2+width:InterpolationMasses 244 1.331402 insert a_2+width:InterpolationMasses 245 1.3401367 insert a_2+width:InterpolationMasses 246 1.3488714 insert a_2+width:InterpolationMasses 247 1.3576061 insert a_2+width:InterpolationMasses 248 1.3663408 insert a_2+width:InterpolationMasses 249 1.3750755 insert a_2+width:InterpolationMasses 250 1.3838102 insert a_2+width:InterpolationMasses 251 1.3925449 insert a_2+width:InterpolationMasses 252 1.4012796 insert a_2+width:InterpolationMasses 253 1.4100143 insert a_2+width:InterpolationMasses 254 1.418749 insert a_2+width:InterpolationMasses 255 1.4274837 insert a_2+width:InterpolationMasses 256 1.4362184 insert a_2+width:InterpolationMasses 257 1.4449531 insert a_2+width:InterpolationMasses 258 1.4536878 insert a_2+width:InterpolationMasses 259 1.4624224 insert a_2+width:InterpolationMasses 260 1.4711571 insert a_2+width:InterpolationMasses 261 1.4798918 insert a_2+width:InterpolationMasses 262 1.4886265 insert a_2+width:InterpolationMasses 263 1.4973612 insert a_2+width:InterpolationMasses 264 1.5060959 insert a_2+width:InterpolationMasses 265 1.5148306 insert a_2+width:InterpolationMasses 266 1.5235653 insert a_2+width:InterpolationMasses 267 1.5323 insert a_2+width:InterpolationMasses 268 1.5410347 insert a_2+width:InterpolationMasses 269 1.5497694 insert a_2+width:InterpolationWidths 0 0 insert a_2+width:InterpolationWidths 1 0 insert a_2+width:InterpolationWidths 2 5.1478967e-08 insert a_2+width:InterpolationWidths 3 4.0895637e-07 insert a_2+width:InterpolationWidths 4 1.2859449e-06 insert a_2+width:InterpolationWidths 5 2.8676282e-06 insert a_2+width:InterpolationWidths 6 5.3340138e-06 insert a_2+width:InterpolationWidths 7 8.8648083e-06 insert a_2+width:InterpolationWidths 8 1.3641195e-05 insert a_2+width:InterpolationWidths 9 1.9846433e-05 insert a_2+width:InterpolationWidths 10 2.7665993e-05 insert a_2+width:InterpolationWidths 11 3.7287458e-05 insert a_2+width:InterpolationWidths 12 4.8900316e-05 insert a_2+width:InterpolationWidths 13 6.2695694e-05 insert a_2+width:InterpolationWidths 14 7.8866066e-05 insert a_2+width:InterpolationWidths 15 9.7604962e-05 insert a_2+width:InterpolationWidths 16 0.00011910667 insert a_2+width:InterpolationWidths 17 0.00014356597 insert a_2+width:InterpolationWidths 18 0.00017117785 insert a_2+width:InterpolationWidths 19 0.00020213726 insert a_2+width:InterpolationWidths 20 0.0002366389 insert a_2+width:InterpolationWidths 21 0.00027487699 insert a_2+width:InterpolationWidths 22 0.00031704504 insert a_2+width:InterpolationWidths 23 0.00036333574 insert a_2+width:InterpolationWidths 24 0.00041394074 insert a_2+width:InterpolationWidths 25 0.00046905051 insert a_2+width:InterpolationWidths 26 0.00052885424 insert a_2+width:InterpolationWidths 27 0.00059353966 insert a_2+width:InterpolationWidths 28 0.00066329299 insert a_2+width:InterpolationWidths 29 0.00073829883 insert a_2+width:InterpolationWidths 30 0.00081874003 insert a_2+width:InterpolationWidths 31 0.0009047977 insert a_2+width:InterpolationWidths 32 0.00099665107 insert a_2+width:InterpolationWidths 33 0.0010944775 insert a_2+width:InterpolationWidths 34 0.0011984524 insert a_2+width:InterpolationWidths 35 0.0013087491 insert a_2+width:InterpolationWidths 36 0.0014255391 insert a_2+width:InterpolationWidths 37 0.0015489917 insert a_2+width:InterpolationWidths 38 0.0016792743 insert a_2+width:InterpolationWidths 39 0.001816552 insert a_2+width:InterpolationWidths 40 0.0019609881 insert a_2+width:InterpolationWidths 41 0.0021127437 insert a_2+width:InterpolationWidths 42 0.0022719777 insert a_2+width:InterpolationWidths 43 0.0024388472 insert a_2+width:InterpolationWidths 44 0.002613507 insert a_2+width:InterpolationWidths 45 0.00279611 insert a_2+width:InterpolationWidths 46 0.002986807 insert a_2+width:InterpolationWidths 47 0.0031857469 insert a_2+width:InterpolationWidths 48 0.0033930764 insert a_2+width:InterpolationWidths 49 0.0036089405 insert a_2+width:InterpolationWidths 50 0.0038334819 insert a_2+width:InterpolationWidths 51 0.0040668417 insert a_2+width:InterpolationWidths 52 0.004309159 insert a_2+width:InterpolationWidths 53 0.0045605711 insert a_2+width:InterpolationWidths 54 0.0046770254 insert a_2+width:InterpolationWidths 55 0.004950423 insert a_2+width:InterpolationWidths 56 0.0052332762 insert a_2+width:InterpolationWidths 57 0.0055256881 insert a_2+width:InterpolationWidths 58 0.0058277598 insert a_2+width:InterpolationWidths 59 0.0061395914 insert a_2+width:InterpolationWidths 60 0.0064612816 insert a_2+width:InterpolationWidths 61 0.0067929277 insert a_2+width:InterpolationWidths 62 0.0071346258 insert a_2+width:InterpolationWidths 63 0.0074864712 insert a_2+width:InterpolationWidths 64 0.0078485576 insert a_2+width:InterpolationWidths 65 0.0082209781 insert a_2+width:InterpolationWidths 66 0.0086038246 insert a_2+width:InterpolationWidths 67 0.0089971881 insert a_2+width:InterpolationWidths 68 0.0094011588 insert a_2+width:InterpolationWidths 69 0.0098158259 insert a_2+width:InterpolationWidths 70 0.010241278 insert a_2+width:InterpolationWidths 71 0.010677603 insert a_2+width:InterpolationWidths 72 0.011124888 insert a_2+width:InterpolationWidths 73 0.011583218 insert a_2+width:InterpolationWidths 74 0.012052681 insert a_2+width:InterpolationWidths 75 0.012533361 insert a_2+width:InterpolationWidths 76 0.013025342 insert a_2+width:InterpolationWidths 77 0.013528708 insert a_2+width:InterpolationWidths 78 0.014043544 insert a_2+width:InterpolationWidths 79 0.014569931 insert a_2+width:InterpolationWidths 80 0.015107952 insert a_2+width:InterpolationWidths 81 0.015657689 insert a_2+width:InterpolationWidths 82 0.016219225 insert a_2+width:InterpolationWidths 83 0.016792639 insert a_2+width:InterpolationWidths 84 0.017378013 insert a_2+width:InterpolationWidths 85 0.017975427 insert a_2+width:InterpolationWidths 86 0.018584962 insert a_2+width:InterpolationWidths 87 0.019206696 insert a_2+width:InterpolationWidths 88 0.01984071 insert a_2+width:InterpolationWidths 89 0.020487083 insert a_2+width:InterpolationWidths 90 0.021145893 insert a_2+width:InterpolationWidths 91 0.021817219 insert a_2+width:InterpolationWidths 92 0.022501139 insert a_2+width:InterpolationWidths 93 0.023197732 insert a_2+width:InterpolationWidths 94 0.023907076 insert a_2+width:InterpolationWidths 95 0.024629247 insert a_2+width:InterpolationWidths 96 0.025364324 insert a_2+width:InterpolationWidths 97 0.026112384 insert a_2+width:InterpolationWidths 98 0.026873504 insert a_2+width:InterpolationWidths 99 0.02764776 insert a_2+width:InterpolationWidths 100 0.028435231 insert a_2+width:InterpolationWidths 101 0.029235991 insert a_2+width:InterpolationWidths 102 0.030050118 insert a_2+width:InterpolationWidths 103 0.030877689 insert a_2+width:InterpolationWidths 104 0.031718778 insert a_2+width:InterpolationWidths 105 0.032573463 insert a_2+width:InterpolationWidths 106 0.033441819 insert a_2+width:InterpolationWidths 107 0.034323922 insert a_2+width:InterpolationWidths 108 1.4776523e-08 insert a_2+width:InterpolationWidths 109 6.1774776e-08 insert a_2+width:InterpolationWidths 110 1.7201111e-07 insert a_2+width:InterpolationWidths 111 3.9444889e-07 insert a_2+width:InterpolationWidths 112 8.124314e-07 insert a_2+width:InterpolationWidths 113 1.5764399e-06 insert a_2+width:InterpolationWidths 114 2.9877374e-06 insert a_2+width:InterpolationWidths 115 5.7834448e-06 insert a_2+width:InterpolationWidths 116 1.2827229e-05 insert a_2+width:InterpolationWidths 117 3.7146247e-05 insert a_2+width:InterpolationWidths 118 8.8319057e-05 insert a_2+width:InterpolationWidths 119 0.00016798976 insert a_2+width:InterpolationWidths 120 0.00027969794 insert a_2+width:InterpolationWidths 121 0.00042843352 insert a_2+width:InterpolationWidths 122 0.00062035343 insert a_2+width:InterpolationWidths 123 0.00086276547 insert a_2+width:InterpolationWidths 124 0.0011641908 insert a_2+width:InterpolationWidths 125 0.0015344494 insert a_2+width:InterpolationWidths 126 0.0019850077 insert a_2+width:InterpolationWidths 127 0.002528946 insert a_2+width:InterpolationWidths 128 0.00318096 insert a_2+width:InterpolationWidths 129 0.0039582656 insert a_2+width:InterpolationWidths 130 0.0048805888 insert a_2+width:InterpolationWidths 131 0.005970623 insert a_2+width:InterpolationWidths 132 0.007254494 insert a_2+width:InterpolationWidths 133 0.0087623122 insert a_2+width:InterpolationWidths 134 0.010528831 insert a_2+width:InterpolationWidths 135 0.012594231 insert a_2+width:InterpolationWidths 136 0.015005056 insert a_2+width:InterpolationWidths 137 0.017815345 insert a_2+width:InterpolationWidths 138 0.021087983 insert a_2+width:InterpolationWidths 139 0.024896345 insert a_2+width:InterpolationWidths 140 0.029326282 insert a_2+width:InterpolationWidths 141 0.034478545 insert a_2+width:InterpolationWidths 142 0.040471726 insert a_2+width:InterpolationWidths 143 0.047445865 insert a_2+width:InterpolationWidths 144 0.055566841 insert a_2+width:InterpolationWidths 145 0.065031731 insert a_2+width:InterpolationWidths 146 0.076075323 insert a_2+width:InterpolationWidths 147 0.088977957 insert a_2+width:InterpolationWidths 148 0.10407487 insert a_2+width:InterpolationWidths 149 0.12176711 insert a_2+width:InterpolationWidths 150 0.14253388 insert a_2+width:InterpolationWidths 151 0.16694575 insert a_2+width:InterpolationWidths 152 0.19567769 insert a_2+width:InterpolationWidths 153 0.22951929 insert a_2+width:InterpolationWidths 154 0.26937832 insert a_2+width:InterpolationWidths 155 0.31627108 insert a_2+width:InterpolationWidths 156 0.37129108 insert a_2+width:InterpolationWidths 157 0.43554709 insert a_2+width:InterpolationWidths 158 0.51006557 insert a_2+width:InterpolationWidths 159 0.5956639 insert a_2+width:InterpolationWidths 160 0.69281815 insert a_2+width:InterpolationWidths 161 0.80156494 insert a_2+width:InterpolationWidths 162 0.0035664245 insert a_2+width:InterpolationWidths 163 0.0039935758 insert a_2+width:InterpolationWidths 164 0.0044611121 insert a_2+width:InterpolationWidths 165 0.0049716856 insert a_2+width:InterpolationWidths 166 0.0055280408 insert a_2+width:InterpolationWidths 167 0.0061330156 insert a_2+width:InterpolationWidths 168 0.0067895415 insert a_2+width:InterpolationWidths 169 0.0075006438 insert a_2+width:InterpolationWidths 170 0.0082694426 insert a_2+width:InterpolationWidths 171 0.0090991528 insert a_2+width:InterpolationWidths 172 0.0099930849 insert a_2+width:InterpolationWidths 173 0.010954645 insert a_2+width:InterpolationWidths 174 0.011987336 insert a_2+width:InterpolationWidths 175 0.013094758 insert a_2+width:InterpolationWidths 176 0.014280607 insert a_2+width:InterpolationWidths 177 0.015548678 insert a_2+width:InterpolationWidths 178 0.016902865 insert a_2+width:InterpolationWidths 179 0.018347159 insert a_2+width:InterpolationWidths 180 0.019885652 insert a_2+width:InterpolationWidths 181 0.021522535 insert a_2+width:InterpolationWidths 182 0.023262099 insert a_2+width:InterpolationWidths 183 0.025108738 insert a_2+width:InterpolationWidths 184 0.027066945 insert a_2+width:InterpolationWidths 185 0.029141316 insert a_2+width:InterpolationWidths 186 0.03133655 insert a_2+width:InterpolationWidths 187 0.033657448 insert a_2+width:InterpolationWidths 188 0.036108916 insert a_2+width:InterpolationWidths 189 0.038695963 insert a_2+width:InterpolationWidths 190 0.041423703 insert a_2+width:InterpolationWidths 191 0.044297357 insert a_2+width:InterpolationWidths 192 0.047322249 insert a_2+width:InterpolationWidths 193 0.050503812 insert a_2+width:InterpolationWidths 194 0.053847586 insert a_2+width:InterpolationWidths 195 0.057359218 insert a_2+width:InterpolationWidths 196 0.061044462 insert a_2+width:InterpolationWidths 197 0.064909184 insert a_2+width:InterpolationWidths 198 0.068959358 insert a_2+width:InterpolationWidths 199 0.073201067 insert a_2+width:InterpolationWidths 200 0.077640508 insert a_2+width:InterpolationWidths 201 0.082283984 insert a_2+width:InterpolationWidths 202 0.087137909 insert a_2+width:InterpolationWidths 203 0.092208803 insert a_2+width:InterpolationWidths 204 0.097503294 insert a_2+width:InterpolationWidths 205 0.10302812 insert a_2+width:InterpolationWidths 206 0.10879014 insert a_2+width:InterpolationWidths 207 0.1147963 insert a_2+width:InterpolationWidths 208 0.12105367 insert a_2+width:InterpolationWidths 209 0.12756944 insert a_2+width:InterpolationWidths 210 0.13435091 insert a_2+width:InterpolationWidths 211 0.14140546 insert a_2+width:InterpolationWidths 212 0.14874063 insert a_2+width:InterpolationWidths 213 0.15636405 insert a_2+width:InterpolationWidths 214 0.16428344 insert a_2+width:InterpolationWidths 215 0.17250668 insert a_2+width:InterpolationWidths 216 0.0036756311 insert a_2+width:InterpolationWidths 217 0.004111362 insert a_2+width:InterpolationWidths 218 0.0045878816 insert a_2+width:InterpolationWidths 219 0.0051078473 insert a_2+width:InterpolationWidths 220 0.0056740093 insert a_2+width:InterpolationWidths 221 0.0062892106 insert a_2+width:InterpolationWidths 222 0.0069563881 insert a_2+width:InterpolationWidths 223 0.0076785726 insert a_2+width:InterpolationWidths 224 0.0084588893 insert a_2+width:InterpolationWidths 225 0.0093005583 insert a_2+width:InterpolationWidths 226 0.010206895 insert a_2+width:InterpolationWidths 227 0.011181312 insert a_2+width:InterpolationWidths 228 0.012227317 insert a_2+width:InterpolationWidths 229 0.013348513 insert a_2+width:InterpolationWidths 230 0.014548604 insert a_2+width:InterpolationWidths 231 0.01583139 insert a_2+width:InterpolationWidths 232 0.017200768 insert a_2+width:InterpolationWidths 233 0.018660736 insert a_2+width:InterpolationWidths 234 0.020215391 insert a_2+width:InterpolationWidths 235 0.021868928 insert a_2+width:InterpolationWidths 236 0.023625644 insert a_2+width:InterpolationWidths 237 0.025489938 insert a_2+width:InterpolationWidths 238 0.027466308 insert a_2+width:InterpolationWidths 239 0.029559355 insert a_2+width:InterpolationWidths 240 0.031773783 insert a_2+width:InterpolationWidths 241 0.034114398 insert a_2+width:InterpolationWidths 242 0.036586111 insert a_2+width:InterpolationWidths 243 0.039193937 insert a_2+width:InterpolationWidths 244 0.041942994 insert a_2+width:InterpolationWidths 245 0.044838508 insert a_2+width:InterpolationWidths 246 0.047885809 insert a_2+width:InterpolationWidths 247 0.051090334 insert a_2+width:InterpolationWidths 248 0.054457628 insert a_2+width:InterpolationWidths 249 0.057993343 insert a_2+width:InterpolationWidths 250 0.061703239 insert a_2+width:InterpolationWidths 251 0.065593186 insert a_2+width:InterpolationWidths 252 0.069669163 insert a_2+width:InterpolationWidths 253 0.073937259 insert a_2+width:InterpolationWidths 254 0.078403673 insert a_2+width:InterpolationWidths 255 0.083074714 insert a_2+width:InterpolationWidths 256 0.087956796 insert a_2+width:InterpolationWidths 257 0.093056444 insert a_2+width:InterpolationWidths 258 0.09838029 insert a_2+width:InterpolationWidths 259 0.10393508 insert a_2+width:InterpolationWidths 260 0.10972766 insert a_2+width:InterpolationWidths 261 0.11576499 insert a_2+width:InterpolationWidths 262 0.12205416 insert a_2+width:InterpolationWidths 263 0.12860235 insert a_2+width:InterpolationWidths 264 0.13541685 insert a_2+width:InterpolationWidths 265 0.14250506 insert a_2+width:InterpolationWidths 266 0.14987453 insert a_2+width:InterpolationWidths 267 0.15753287 insert a_2+width:InterpolationWidths 268 0.16548783 insert a_2+width:InterpolationWidths 269 0.17374728 insert a_2+width:NumberofEntries 0 0 insert a_2+width:NumberofEntries 1 54 insert a_2+width:NumberofEntries 2 108 insert a_2+width:NumberofEntries 3 162 insert a_2+width:NumberofEntries 4 162 insert a_2+width:NumberofEntries 5 216 insert a_2+width:NumberofEntries 6 270 newdef /Herwig/Particles/a_2-:Width_generator a_2+width newdef /Herwig/Particles/a_2+:Width_generator a_2+width # create Herwig::GenericWidthGenerator D_s*width newdef D_s*width:Particle /Herwig/Particles/D_s*+ newdef D_s*width:Prefactor 1 newdef D_s*width:BRNormalize 1 newdef D_s*width:BRMinimum 0.01 newdef D_s*width:Points 50 newdef D_s*width:InterpolationOrder 1 insert D_s*width:MEtype 0 1 insert D_s*width:MEtype 1 1 insert D_s*width:MEcode 0 1 insert D_s*width:MEcode 1 0 insert D_s*width:MEcoupling 0 1.61264 insert D_s*width:MEcoupling 1 1.39821 insert D_s*width:ModeOn 0 1 insert D_s*width:ModeOn 1 1 insert D_s*width:MinimumMasses 0 1.9682 insert D_s*width:MinimumMasses 1 2.10318 insert D_s*width:MEmass1 0 0 insert D_s*width:MEmass1 1 1.9682 insert D_s*width:MEmass2 0 1.9682 insert D_s*width:MEmass2 1 0.134978 insert D_s*width:DecayModes 0 D_s*+->D_s+,gamma; insert D_s*width:DecayModes 1 D_s*+->D_s+,pi0; insert D_s*width:NumberofEntries 0 0 insert D_s*width:NumberofEntries 1 0 newdef /Herwig/Particles/D_s*+:Width_generator D_s*width newdef /Herwig/Particles/D_s*-:Width_generator D_s*width # create Herwig::GenericWidthGenerator B_s*width newdef B_s*width:Particle /Herwig/Particles/B_s*0 newdef B_s*width:Prefactor 1 newdef B_s*width:BRNormalize 1 newdef B_s*width:BRMinimum 0.01 newdef B_s*width:Points 50 newdef B_s*width:InterpolationOrder 1 insert B_s*width:MEtype 0 1 insert B_s*width:MEcode 0 1 insert B_s*width:MEcoupling 0 1.34344 insert B_s*width:ModeOn 0 1 insert B_s*width:MinimumMasses 0 5.3675 insert B_s*width:MEmass1 0 0 insert B_s*width:MEmass2 0 5.3675 insert B_s*width:DecayModes 0 B_s*0->B_s0,gamma; insert B_s*width:NumberofEntries 0 0 newdef /Herwig/Particles/B_s*bar0:Width_generator B_s*width newdef /Herwig/Particles/B_s*0:Width_generator B_s*width # create Herwig::GenericWidthGenerator B_c*width newdef B_c*width:Particle /Herwig/Particles/B_c*+ newdef B_c*width:Prefactor 1 newdef B_c*width:BRNormalize 1 newdef B_c*width:BRMinimum 0.01 newdef B_c*width:Points 50 newdef B_c*width:InterpolationOrder 1 insert B_c*width:MEtype 0 1 insert B_c*width:MEcode 0 1 insert B_c*width:MEcoupling 0 1.68345 insert B_c*width:ModeOn 0 1 insert B_c*width:MinimumMasses 0 6.286 insert B_c*width:MEmass1 0 0 insert B_c*width:MEmass2 0 6.286 insert B_c*width:DecayModes 0 B_c*+->B_c+,gamma; insert B_c*width:NumberofEntries 0 0 newdef /Herwig/Particles/B_c*+:Width_generator B_c*width newdef /Herwig/Particles/B_c*-:Width_generator B_c*width # create Herwig::GenericWidthGenerator D_2+width newdef D_2+width:Particle /Herwig/Particles/D*_2+ newdef D_2+width:Prefactor 0.99945 newdef D_2+width:BRNormalize 1 newdef D_2+width:BRMinimum 0.01 newdef D_2+width:Points 50 newdef D_2+width:InterpolationOrder 1 insert D_2+width:MEtype 0 2 insert D_2+width:MEtype 1 2 insert D_2+width:MEtype 2 1 insert D_2+width:MEtype 3 1 insert D_2+width:MEcode 0 0 insert D_2+width:MEcode 1 0 insert D_2+width:MEcode 2 7 insert D_2+width:MEcode 3 7 insert D_2+width:MEcoupling 0 0.998919 insert D_2+width:MEcoupling 1 0.998613 insert D_2+width:MEcoupling 2 36.9297 insert D_2+width:MEcoupling 3 51.5103 insert D_2+width:ModeOn 0 1 insert D_2+width:ModeOn 1 1 insert D_2+width:ModeOn 2 1 insert D_2+width:ModeOn 3 1 insert D_2+width:MinimumMasses 0 2.14402 insert D_2+width:MinimumMasses 1 2.14559 insert D_2+width:MinimumMasses 2 2.00428 insert D_2+width:MinimumMasses 3 2.00407 insert D_2+width:MEmass1 0 0.134978 insert D_2+width:MEmass1 1 0.13957 insert D_2+width:MEmass1 2 1.8693 insert D_2+width:MEmass1 3 1.8645 insert D_2+width:MEmass2 0 2.01 insert D_2+width:MEmass2 1 2.0067 insert D_2+width:MEmass2 2 0.134978 insert D_2+width:MEmass2 3 0.13957 insert D_2+width:DecayModes 0 D*_2+->D*+,pi0; insert D_2+width:DecayModes 1 D*_2+->D*0,pi+; insert D_2+width:DecayModes 2 D*_2+->D+,pi0; insert D_2+width:DecayModes 3 D*_2+->D0,pi+; insert D_2+width:InterpolationMasses 0 2.1453265 insert D_2+width:InterpolationMasses 1 2.1571633 insert D_2+width:InterpolationMasses 2 2.169 insert D_2+width:InterpolationMasses 3 2.1808367 insert D_2+width:InterpolationMasses 4 2.1926735 insert D_2+width:InterpolationMasses 5 2.2045102 insert D_2+width:InterpolationMasses 6 2.2163469 insert D_2+width:InterpolationMasses 7 2.2281837 insert D_2+width:InterpolationMasses 8 2.2400204 insert D_2+width:InterpolationMasses 9 2.2518571 insert D_2+width:InterpolationMasses 10 2.2636939 insert D_2+width:InterpolationMasses 11 2.2755306 insert D_2+width:InterpolationMasses 12 2.2873673 insert D_2+width:InterpolationMasses 13 2.2992041 insert D_2+width:InterpolationMasses 14 2.3110408 insert D_2+width:InterpolationMasses 15 2.3228776 insert D_2+width:InterpolationMasses 16 2.3347143 insert D_2+width:InterpolationMasses 17 2.346551 insert D_2+width:InterpolationMasses 18 2.3583878 insert D_2+width:InterpolationMasses 19 2.3702245 insert D_2+width:InterpolationMasses 20 2.3820612 insert D_2+width:InterpolationMasses 21 2.393898 insert D_2+width:InterpolationMasses 22 2.4057347 insert D_2+width:InterpolationMasses 23 2.4175714 insert D_2+width:InterpolationMasses 24 2.4294082 insert D_2+width:InterpolationMasses 25 2.4412449 insert D_2+width:InterpolationMasses 26 2.4530816 insert D_2+width:InterpolationMasses 27 2.4649184 insert D_2+width:InterpolationMasses 28 2.4767551 insert D_2+width:InterpolationMasses 29 2.4885918 insert D_2+width:InterpolationMasses 30 2.5004286 insert D_2+width:InterpolationMasses 31 2.5122653 insert D_2+width:InterpolationMasses 32 2.524102 insert D_2+width:InterpolationMasses 33 2.5359388 insert D_2+width:InterpolationMasses 34 2.5477755 insert D_2+width:InterpolationMasses 35 2.5596122 insert D_2+width:InterpolationMasses 36 2.571449 insert D_2+width:InterpolationMasses 37 2.5832857 insert D_2+width:InterpolationMasses 38 2.5951224 insert D_2+width:InterpolationMasses 39 2.6069592 insert D_2+width:InterpolationMasses 40 2.6187959 insert D_2+width:InterpolationMasses 41 2.6306327 insert D_2+width:InterpolationMasses 42 2.6424694 insert D_2+width:InterpolationMasses 43 2.6543061 insert D_2+width:InterpolationMasses 44 2.6661429 insert D_2+width:InterpolationMasses 45 2.6779796 insert D_2+width:InterpolationMasses 46 2.6898163 insert D_2+width:InterpolationMasses 47 2.7016531 insert D_2+width:InterpolationMasses 48 2.7134898 insert D_2+width:InterpolationMasses 49 2.7253265 insert D_2+width:InterpolationMasses 50 2.7371633 insert D_2+width:InterpolationMasses 51 2.749 insert D_2+width:InterpolationMasses 52 2.7608367 insert D_2+width:InterpolationMasses 53 2.7726735 insert D_2+width:InterpolationMasses 54 2.1453265 insert D_2+width:InterpolationMasses 55 2.1455902 insert D_2+width:InterpolationMasses 56 2.169 insert D_2+width:InterpolationMasses 57 2.1808367 insert D_2+width:InterpolationMasses 58 2.1926735 insert D_2+width:InterpolationMasses 59 2.2045102 insert D_2+width:InterpolationMasses 60 2.2163469 insert D_2+width:InterpolationMasses 61 2.2281837 insert D_2+width:InterpolationMasses 62 2.2400204 insert D_2+width:InterpolationMasses 63 2.2518571 insert D_2+width:InterpolationMasses 64 2.2636939 insert D_2+width:InterpolationMasses 65 2.2755306 insert D_2+width:InterpolationMasses 66 2.2873673 insert D_2+width:InterpolationMasses 67 2.2992041 insert D_2+width:InterpolationMasses 68 2.3110408 insert D_2+width:InterpolationMasses 69 2.3228776 insert D_2+width:InterpolationMasses 70 2.3347143 insert D_2+width:InterpolationMasses 71 2.346551 insert D_2+width:InterpolationMasses 72 2.3583878 insert D_2+width:InterpolationMasses 73 2.3702245 insert D_2+width:InterpolationMasses 74 2.3820612 insert D_2+width:InterpolationMasses 75 2.393898 insert D_2+width:InterpolationMasses 76 2.4057347 insert D_2+width:InterpolationMasses 77 2.4175714 insert D_2+width:InterpolationMasses 78 2.4294082 insert D_2+width:InterpolationMasses 79 2.4412449 insert D_2+width:InterpolationMasses 80 2.4530816 insert D_2+width:InterpolationMasses 81 2.4649184 insert D_2+width:InterpolationMasses 82 2.4767551 insert D_2+width:InterpolationMasses 83 2.4885918 insert D_2+width:InterpolationMasses 84 2.5004286 insert D_2+width:InterpolationMasses 85 2.5122653 insert D_2+width:InterpolationMasses 86 2.524102 insert D_2+width:InterpolationMasses 87 2.5359388 insert D_2+width:InterpolationMasses 88 2.5477755 insert D_2+width:InterpolationMasses 89 2.5596122 insert D_2+width:InterpolationMasses 90 2.571449 insert D_2+width:InterpolationMasses 91 2.5832857 insert D_2+width:InterpolationMasses 92 2.5951224 insert D_2+width:InterpolationMasses 93 2.6069592 insert D_2+width:InterpolationMasses 94 2.6187959 insert D_2+width:InterpolationMasses 95 2.6306327 insert D_2+width:InterpolationMasses 96 2.6424694 insert D_2+width:InterpolationMasses 97 2.6543061 insert D_2+width:InterpolationMasses 98 2.6661429 insert D_2+width:InterpolationMasses 99 2.6779796 insert D_2+width:InterpolationMasses 100 2.6898163 insert D_2+width:InterpolationMasses 101 2.7016531 insert D_2+width:InterpolationMasses 102 2.7134898 insert D_2+width:InterpolationMasses 103 2.7253265 insert D_2+width:InterpolationMasses 104 2.7371633 insert D_2+width:InterpolationMasses 105 2.749 insert D_2+width:InterpolationMasses 106 2.7608367 insert D_2+width:InterpolationMasses 107 2.7726735 insert D_2+width:InterpolationWidths 0 3.5145384e-11 insert D_2+width:InterpolationWidths 1 2.069277e-07 insert D_2+width:InterpolationWidths 2 1.2353975e-06 insert D_2+width:InterpolationWidths 3 3.6646368e-06 insert D_2+width:InterpolationWidths 4 8.116727e-06 insert D_2+width:InterpolationWidths 5 1.5283989e-05 insert D_2+width:InterpolationWidths 6 2.59379e-05 insert D_2+width:InterpolationWidths 7 4.0933892e-05 insert D_2+width:InterpolationWidths 8 6.121452e-05 insert D_2+width:InterpolationWidths 9 8.78118e-05 insert D_2+width:InterpolationWidths 10 0.00012184906 insert D_2+width:InterpolationWidths 11 0.00016454246 insert D_2+width:InterpolationWidths 12 0.00021720351 insert D_2+width:InterpolationWidths 13 0.00028123562 insert D_2+width:InterpolationWidths 14 0.00035814121 insert D_2+width:InterpolationWidths 15 0.00044951866 insert D_2+width:InterpolationWidths 16 0.00055706387 insert D_2+width:InterpolationWidths 17 0.00068257078 insert D_2+width:InterpolationWidths 18 0.00082793183 insert D_2+width:InterpolationWidths 19 0.00099513834 insert D_2+width:InterpolationWidths 20 0.0011862807 insert D_2+width:InterpolationWidths 21 0.0014035489 insert D_2+width:InterpolationWidths 22 0.0016492322 insert D_2+width:InterpolationWidths 23 0.0019257197 insert D_2+width:InterpolationWidths 24 0.0022355002 insert D_2+width:InterpolationWidths 25 0.0025811622 insert D_2+width:InterpolationWidths 26 0.0029653938 insert D_2+width:InterpolationWidths 27 0.0033909832 insert D_2+width:InterpolationWidths 28 0.0038608178 insert D_2+width:InterpolationWidths 29 0.0043778845 insert D_2+width:InterpolationWidths 30 0.0049452699 insert D_2+width:InterpolationWidths 31 0.0055661595 insert D_2+width:InterpolationWidths 32 0.0062438379 insert D_2+width:InterpolationWidths 33 0.0069816888 insert D_2+width:InterpolationWidths 34 0.0077831943 insert D_2+width:InterpolationWidths 35 0.0086519351 insert D_2+width:InterpolationWidths 36 0.0095915901 insert D_2+width:InterpolationWidths 37 0.010605936 insert D_2+width:InterpolationWidths 38 0.011698849 insert D_2+width:InterpolationWidths 39 0.012874299 insert D_2+width:InterpolationWidths 40 0.014136358 insert D_2+width:InterpolationWidths 41 0.015489193 insert D_2+width:InterpolationWidths 42 0.016937066 insert D_2+width:InterpolationWidths 43 0.018484338 insert D_2+width:InterpolationWidths 44 0.020135467 insert D_2+width:InterpolationWidths 45 0.021895005 insert D_2+width:InterpolationWidths 46 0.023767602 insert D_2+width:InterpolationWidths 47 0.025758002 insert D_2+width:InterpolationWidths 48 0.027871046 insert D_2+width:InterpolationWidths 49 0.030111669 insert D_2+width:InterpolationWidths 50 0.032484903 insert D_2+width:InterpolationWidths 51 0.034995873 insert D_2+width:InterpolationWidths 52 0.0376498 insert D_2+width:InterpolationWidths 53 0.040451999 insert D_2+width:InterpolationWidths 54 0 insert D_2+width:InterpolationWidths 55 0 insert D_2+width:InterpolationWidths 56 2.2472287e-06 insert D_2+width:InterpolationWidths 57 6.9647815e-06 insert D_2+width:InterpolationWidths 58 1.5748648e-05 insert D_2+width:InterpolationWidths 59 3.0001011e-05 insert D_2+width:InterpolationWidths 60 5.1278353e-05 insert D_2+width:InterpolationWidths 61 8.1301834e-05 insert D_2+width:InterpolationWidths 62 0.00012196387 insert D_2+width:InterpolationWidths 63 0.0001753329 insert D_2+width:InterpolationWidths 64 0.00024365702 insert D_2+width:InterpolationWidths 65 0.000329367 insert D_2+width:InterpolationWidths 66 0.00043507868 insert D_2+width:InterpolationWidths 67 0.00056359508 insert D_2+width:InterpolationWidths 68 0.00071790808 insert D_2+width:InterpolationWidths 69 0.0009011999 insert D_2+width:InterpolationWidths 70 0.0011168443 insert D_2+width:InterpolationWidths 71 0.0013684076 insert D_2+width:InterpolationWidths 72 0.0016596494 insert D_2+width:InterpolationWidths 73 0.0019945235 insert D_2+width:InterpolationWidths 74 0.0023771782 insert D_2+width:InterpolationWidths 75 0.0028119567 insert D_2+width:InterpolationWidths 76 0.0033033976 insert D_2+width:InterpolationWidths 77 0.0038562348 insert D_2+width:InterpolationWidths 78 0.0044753977 insert D_2+width:InterpolationWidths 79 0.0051660113 insert D_2+width:InterpolationWidths 80 0.005933396 insert D_2+width:InterpolationWidths 81 0.0067830677 insert D_2+width:InterpolationWidths 82 0.0077207372 insert D_2+width:InterpolationWidths 83 0.0087523105 insert D_2+width:InterpolationWidths 84 0.0098838881 insert D_2+width:InterpolationWidths 85 0.011121765 insert D_2+width:InterpolationWidths 86 0.012472429 insert D_2+width:InterpolationWidths 87 0.013942565 insert D_2+width:InterpolationWidths 88 0.015539046 insert D_2+width:InterpolationWidths 89 0.017268943 insert D_2+width:InterpolationWidths 90 0.019139515 insert D_2+width:InterpolationWidths 91 0.021158216 insert D_2+width:InterpolationWidths 92 0.023332691 insert D_2+width:InterpolationWidths 93 0.025670774 insert D_2+width:InterpolationWidths 94 0.028180493 insert D_2+width:InterpolationWidths 95 0.030870063 insert D_2+width:InterpolationWidths 96 0.03374789 insert D_2+width:InterpolationWidths 97 0.036822571 insert D_2+width:InterpolationWidths 98 0.040102888 insert D_2+width:InterpolationWidths 99 0.043597814 insert D_2+width:InterpolationWidths 100 0.04731651 insert D_2+width:InterpolationWidths 101 0.051268323 insert D_2+width:InterpolationWidths 102 0.055462789 insert D_2+width:InterpolationWidths 103 0.059909628 insert D_2+width:InterpolationWidths 104 0.064618748 insert D_2+width:InterpolationWidths 105 0.069600244 insert D_2+width:InterpolationWidths 106 0.074864393 insert D_2+width:InterpolationWidths 107 0.08042166 insert D_2+width:NumberofEntries 0 54 insert D_2+width:NumberofEntries 1 108 insert D_2+width:NumberofEntries 2 108 insert D_2+width:NumberofEntries 3 108 newdef /Herwig/Particles/D*_2+:Width_generator D_2+width newdef /Herwig/Particles/D*_2-:Width_generator D_2+width # create Herwig::GenericWidthGenerator B_2+width newdef B_2+width:Particle /Herwig/Particles/B_2+ newdef B_2+width:Prefactor 0.999873 newdef B_2+width:BRNormalize 1 newdef B_2+width:BRMinimum 0.01 newdef B_2+width:Points 50 newdef B_2+width:InterpolationOrder 1 insert B_2+width:MEtype 0 2 insert B_2+width:MEtype 1 2 insert B_2+width:MEtype 2 1 insert B_2+width:MEtype 3 1 insert B_2+width:MEcode 0 0 insert B_2+width:MEcode 1 0 insert B_2+width:MEcode 2 7 insert B_2+width:MEcode 3 7 insert B_2+width:MEcoupling 0 0.990806 insert B_2+width:MEcoupling 1 1.01007 insert B_2+width:MEcoupling 2 155.735 insert B_2+width:MEcoupling 3 222.489 insert B_2+width:ModeOn 0 1 insert B_2+width:ModeOn 1 1 insert B_2+width:ModeOn 2 1 insert B_2+width:ModeOn 3 1 insert B_2+width:MinimumMasses 0 5.45997 insert B_2+width:MinimumMasses 1 5.46457 insert B_2+width:MinimumMasses 2 5.41398 insert B_2+width:MinimumMasses 3 5.41897 insert B_2+width:MEmass1 0 0.134978 insert B_2+width:MEmass1 1 0.13957 insert B_2+width:MEmass1 2 5.279 insert B_2+width:MEmass1 3 5.2794 insert B_2+width:MEmass2 0 5.325 insert B_2+width:MEmass2 1 5.325 insert B_2+width:MEmass2 2 0.134978 insert B_2+width:MEmass2 3 0.13957 insert B_2+width:DecayModes 0 B_2+->B*+,pi0; insert B_2+width:DecayModes 1 B_2+->B*0,pi+; insert B_2+width:DecayModes 2 B_2+->B+,pi0; insert B_2+width:DecayModes 3 B_2+->B0,pi+; insert B_2+width:InterpolationMasses 0 5.6386367 insert B_2+width:InterpolationMasses 1 5.6427184 insert B_2+width:InterpolationMasses 2 5.6468 insert B_2+width:InterpolationMasses 3 5.6508816 insert B_2+width:InterpolationMasses 4 5.6549633 insert B_2+width:InterpolationMasses 5 5.6590449 insert B_2+width:InterpolationMasses 6 5.6631265 insert B_2+width:InterpolationMasses 7 5.6672082 insert B_2+width:InterpolationMasses 8 5.6712898 insert B_2+width:InterpolationMasses 9 5.6753714 insert B_2+width:InterpolationMasses 10 5.6794531 insert B_2+width:InterpolationMasses 11 5.6835347 insert B_2+width:InterpolationMasses 12 5.6876163 insert B_2+width:InterpolationMasses 13 5.691698 insert B_2+width:InterpolationMasses 14 5.6957796 insert B_2+width:InterpolationMasses 15 5.6998612 insert B_2+width:InterpolationMasses 16 5.7039429 insert B_2+width:InterpolationMasses 17 5.7080245 insert B_2+width:InterpolationMasses 18 5.7121061 insert B_2+width:InterpolationMasses 19 5.7161878 insert B_2+width:InterpolationMasses 20 5.7202694 insert B_2+width:InterpolationMasses 21 5.724351 insert B_2+width:InterpolationMasses 22 5.7284327 insert B_2+width:InterpolationMasses 23 5.7325143 insert B_2+width:InterpolationMasses 24 5.7365959 insert B_2+width:InterpolationMasses 25 5.7406776 insert B_2+width:InterpolationMasses 26 5.7447592 insert B_2+width:InterpolationMasses 27 5.7488408 insert B_2+width:InterpolationMasses 28 5.7529224 insert B_2+width:InterpolationMasses 29 5.7570041 insert B_2+width:InterpolationMasses 30 5.7610857 insert B_2+width:InterpolationMasses 31 5.7651673 insert B_2+width:InterpolationMasses 32 5.769249 insert B_2+width:InterpolationMasses 33 5.7733306 insert B_2+width:InterpolationMasses 34 5.7774122 insert B_2+width:InterpolationMasses 35 5.7814939 insert B_2+width:InterpolationMasses 36 5.7855755 insert B_2+width:InterpolationMasses 37 5.7896571 insert B_2+width:InterpolationMasses 38 5.7937388 insert B_2+width:InterpolationMasses 39 5.7978204 insert B_2+width:InterpolationMasses 40 5.801902 insert B_2+width:InterpolationMasses 41 5.8059837 insert B_2+width:InterpolationMasses 42 5.8100653 insert B_2+width:InterpolationMasses 43 5.8141469 insert B_2+width:InterpolationMasses 44 5.8182286 insert B_2+width:InterpolationMasses 45 5.8223102 insert B_2+width:InterpolationMasses 46 5.8263918 insert B_2+width:InterpolationMasses 47 5.8304735 insert B_2+width:InterpolationMasses 48 5.8345551 insert B_2+width:InterpolationMasses 49 5.8386367 insert B_2+width:InterpolationMasses 50 5.8427184 insert B_2+width:InterpolationMasses 51 5.8468 insert B_2+width:InterpolationMasses 52 5.8508816 insert B_2+width:InterpolationMasses 53 5.8549633 insert B_2+width:InterpolationMasses 54 5.6386367 insert B_2+width:InterpolationMasses 55 5.6427184 insert B_2+width:InterpolationMasses 56 5.6468 insert B_2+width:InterpolationMasses 57 5.6508816 insert B_2+width:InterpolationMasses 58 5.6549633 insert B_2+width:InterpolationMasses 59 5.6590449 insert B_2+width:InterpolationMasses 60 5.6631265 insert B_2+width:InterpolationMasses 61 5.6672082 insert B_2+width:InterpolationMasses 62 5.6712898 insert B_2+width:InterpolationMasses 63 5.6753714 insert B_2+width:InterpolationMasses 64 5.6794531 insert B_2+width:InterpolationMasses 65 5.6835347 insert B_2+width:InterpolationMasses 66 5.6876163 insert B_2+width:InterpolationMasses 67 5.691698 insert B_2+width:InterpolationMasses 68 5.6957796 insert B_2+width:InterpolationMasses 69 5.6998612 insert B_2+width:InterpolationMasses 70 5.7039429 insert B_2+width:InterpolationMasses 71 5.7080245 insert B_2+width:InterpolationMasses 72 5.7121061 insert B_2+width:InterpolationMasses 73 5.7161878 insert B_2+width:InterpolationMasses 74 5.7202694 insert B_2+width:InterpolationMasses 75 5.724351 insert B_2+width:InterpolationMasses 76 5.7284327 insert B_2+width:InterpolationMasses 77 5.7325143 insert B_2+width:InterpolationMasses 78 5.7365959 insert B_2+width:InterpolationMasses 79 5.7406776 insert B_2+width:InterpolationMasses 80 5.7447592 insert B_2+width:InterpolationMasses 81 5.7488408 insert B_2+width:InterpolationMasses 82 5.7529224 insert B_2+width:InterpolationMasses 83 5.7570041 insert B_2+width:InterpolationMasses 84 5.7610857 insert B_2+width:InterpolationMasses 85 5.7651673 insert B_2+width:InterpolationMasses 86 5.769249 insert B_2+width:InterpolationMasses 87 5.7733306 insert B_2+width:InterpolationMasses 88 5.7774122 insert B_2+width:InterpolationMasses 89 5.7814939 insert B_2+width:InterpolationMasses 90 5.7855755 insert B_2+width:InterpolationMasses 91 5.7896571 insert B_2+width:InterpolationMasses 92 5.7937388 insert B_2+width:InterpolationMasses 93 5.7978204 insert B_2+width:InterpolationMasses 94 5.801902 insert B_2+width:InterpolationMasses 95 5.8059837 insert B_2+width:InterpolationMasses 96 5.8100653 insert B_2+width:InterpolationMasses 97 5.8141469 insert B_2+width:InterpolationMasses 98 5.8182286 insert B_2+width:InterpolationMasses 99 5.8223102 insert B_2+width:InterpolationMasses 100 5.8263918 insert B_2+width:InterpolationMasses 101 5.8304735 insert B_2+width:InterpolationMasses 102 5.8345551 insert B_2+width:InterpolationMasses 103 5.8386367 insert B_2+width:InterpolationMasses 104 5.8427184 insert B_2+width:InterpolationMasses 105 5.8468 insert B_2+width:InterpolationMasses 106 5.8508816 insert B_2+width:InterpolationMasses 107 5.8549633 insert B_2+width:InterpolationWidths 0 0.00030289235 insert B_2+width:InterpolationWidths 1 0.00032725375 insert B_2+width:InterpolationWidths 2 0.00035306263 insert B_2+width:InterpolationWidths 3 0.00038037734 insert B_2+width:InterpolationWidths 4 0.0004092576 insert B_2+width:InterpolationWidths 5 0.0004397645 insert B_2+width:InterpolationWidths 6 0.00047196048 insert B_2+width:InterpolationWidths 7 0.00050590937 insert B_2+width:InterpolationWidths 8 0.00054167642 insert B_2+width:InterpolationWidths 9 0.00057932826 insert B_2+width:InterpolationWidths 10 0.00061893291 insert B_2+width:InterpolationWidths 11 0.00066055986 insert B_2+width:InterpolationWidths 12 0.00070428 insert B_2+width:InterpolationWidths 13 0.00075016565 insert B_2+width:InterpolationWidths 14 0.0007982906 insert B_2+width:InterpolationWidths 15 0.00084873009 insert B_2+width:InterpolationWidths 16 0.00090156082 insert B_2+width:InterpolationWidths 17 0.00095686098 insert B_2+width:InterpolationWidths 18 0.0010147102 insert B_2+width:InterpolationWidths 19 0.0010751897 insert B_2+width:InterpolationWidths 20 0.001138382 insert B_2+width:InterpolationWidths 21 0.0012043714 insert B_2+width:InterpolationWidths 22 0.0012732435 insert B_2+width:InterpolationWidths 23 0.0013450855 insert B_2+width:InterpolationWidths 24 0.0014199862 insert B_2+width:InterpolationWidths 25 0.0014980358 insert B_2+width:InterpolationWidths 26 0.001579326 insert B_2+width:InterpolationWidths 27 0.0016639504 insert B_2+width:InterpolationWidths 28 0.0017520037 insert B_2+width:InterpolationWidths 29 0.0018435826 insert B_2+width:InterpolationWidths 30 0.001938785 insert B_2+width:InterpolationWidths 31 0.0020377107 insert B_2+width:InterpolationWidths 32 0.0021404608 insert B_2+width:InterpolationWidths 33 0.0022471383 insert B_2+width:InterpolationWidths 34 0.0023578475 insert B_2+width:InterpolationWidths 35 0.0024726945 insert B_2+width:InterpolationWidths 36 0.0025917869 insert B_2+width:InterpolationWidths 37 0.0027152342 insert B_2+width:InterpolationWidths 38 0.0028431472 insert B_2+width:InterpolationWidths 39 0.0029756384 insert B_2+width:InterpolationWidths 40 0.003112822 insert B_2+width:InterpolationWidths 41 0.003254814 insert B_2+width:InterpolationWidths 42 0.0034017318 insert B_2+width:InterpolationWidths 43 0.0035536946 insert B_2+width:InterpolationWidths 44 0.0037108232 insert B_2+width:InterpolationWidths 45 0.0038732402 insert B_2+width:InterpolationWidths 46 0.0040410696 insert B_2+width:InterpolationWidths 47 0.0042144374 insert B_2+width:InterpolationWidths 48 0.0043934712 insert B_2+width:InterpolationWidths 49 0.0045783002 insert B_2+width:InterpolationWidths 50 0.0047690553 insert B_2+width:InterpolationWidths 51 0.0049658692 insert B_2+width:InterpolationWidths 52 0.0051688763 insert B_2+width:InterpolationWidths 53 0.0053782128 insert B_2+width:InterpolationWidths 54 0.00058256691 insert B_2+width:InterpolationWidths 55 0.00063020608 insert B_2+width:InterpolationWidths 56 0.00068071233 insert B_2+width:InterpolationWidths 57 0.00073420217 insert B_2+width:InterpolationWidths 58 0.00079079485 insert B_2+width:InterpolationWidths 59 0.00085061235 insert B_2+width:InterpolationWidths 60 0.00091377938 insert B_2+width:InterpolationWidths 61 0.00098042343 insert B_2+width:InterpolationWidths 62 0.0010506748 insert B_2+width:InterpolationWidths 63 0.0011246666 insert B_2+width:InterpolationWidths 64 0.0012025346 insert B_2+width:InterpolationWidths 65 0.0012844178 insert B_2+width:InterpolationWidths 66 0.0013704576 insert B_2+width:InterpolationWidths 67 0.0014607987 insert B_2+width:InterpolationWidths 68 0.0015555883 insert B_2+width:InterpolationWidths 69 0.0016549769 insert B_2+width:InterpolationWidths 70 0.0017591176 insert B_2+width:InterpolationWidths 71 0.0018681668 insert B_2+width:InterpolationWidths 72 0.0019822835 insert B_2+width:InterpolationWidths 73 0.0021016299 insert B_2+width:InterpolationWidths 74 0.0022263712 insert B_2+width:InterpolationWidths 75 0.0023566756 insert B_2+width:InterpolationWidths 76 0.0024927143 insert B_2+width:InterpolationWidths 77 0.0026346615 insert B_2+width:InterpolationWidths 78 0.0027826946 insert B_2+width:InterpolationWidths 79 0.002936994 insert B_2+width:InterpolationWidths 80 0.0030977431 insert B_2+width:InterpolationWidths 81 0.0032651287 insert B_2+width:InterpolationWidths 82 0.0034393404 insert B_2+width:InterpolationWidths 83 0.0036205712 insert B_2+width:InterpolationWidths 84 0.003809017 insert B_2+width:InterpolationWidths 85 0.0040048771 insert B_2+width:InterpolationWidths 86 0.0042083539 insert B_2+width:InterpolationWidths 87 0.0044196529 insert B_2+width:InterpolationWidths 88 0.0046389829 insert B_2+width:InterpolationWidths 89 0.0048665561 insert B_2+width:InterpolationWidths 90 0.0051025875 insert B_2+width:InterpolationWidths 91 0.0053472958 insert B_2+width:InterpolationWidths 92 0.0056009027 insert B_2+width:InterpolationWidths 93 0.0058636332 insert B_2+width:InterpolationWidths 94 0.0061357157 insert B_2+width:InterpolationWidths 95 0.0064173818 insert B_2+width:InterpolationWidths 96 0.0067088665 insert B_2+width:InterpolationWidths 97 0.007010408 insert B_2+width:InterpolationWidths 98 0.007322248 insert B_2+width:InterpolationWidths 99 0.0076446314 insert B_2+width:InterpolationWidths 100 0.0079778065 insert B_2+width:InterpolationWidths 101 0.008322025 insert B_2+width:InterpolationWidths 102 0.0086775421 insert B_2+width:InterpolationWidths 103 0.0090446161 insert B_2+width:InterpolationWidths 104 0.009423509 insert B_2+width:InterpolationWidths 105 0.009814486 insert B_2+width:InterpolationWidths 106 0.010217816 insert B_2+width:InterpolationWidths 107 0.010633771 insert B_2+width:NumberofEntries 0 54 insert B_2+width:NumberofEntries 1 108 insert B_2+width:NumberofEntries 2 108 insert B_2+width:NumberofEntries 3 108 newdef /Herwig/Particles/B_2-:Width_generator B_2+width newdef /Herwig/Particles/B_2+:Width_generator B_2+width # create Herwig::GenericWidthGenerator B_20width newdef B_20width:Particle /Herwig/Particles/B_20 newdef B_20width:Prefactor 0.999873 newdef B_20width:BRNormalize 1 newdef B_20width:BRMinimum 0.01 newdef B_20width:Points 50 newdef B_20width:InterpolationOrder 1 insert B_20width:MEtype 0 2 insert B_20width:MEtype 1 2 insert B_20width:MEtype 2 1 insert B_20width:MEtype 3 1 insert B_20width:MEcode 0 0 insert B_20width:MEcode 1 0 insert B_20width:MEcode 2 7 insert B_20width:MEcode 3 7 insert B_20width:MEcoupling 0 1.01007 insert B_20width:MEcoupling 1 0.990806 insert B_20width:MEcoupling 2 221.988 insert B_20width:MEcoupling 3 156.085 insert B_20width:ModeOn 0 1 insert B_20width:ModeOn 1 1 insert B_20width:ModeOn 2 1 insert B_20width:ModeOn 3 1 insert B_20width:MinimumMasses 0 5.46456 insert B_20width:MinimumMasses 1 5.45998 insert B_20width:MinimumMasses 2 5.41857 insert B_20width:MinimumMasses 3 5.41438 insert B_20width:MEmass1 0 0.13957 insert B_20width:MEmass1 1 0.134978 insert B_20width:MEmass1 2 5.279 insert B_20width:MEmass1 3 5.2794 insert B_20width:MEmass2 0 5.325 insert B_20width:MEmass2 1 5.325 insert B_20width:MEmass2 2 0.13957 insert B_20width:MEmass2 3 0.134978 insert B_20width:DecayModes 0 B_20->B*+,pi-; insert B_20width:DecayModes 1 B_20->B*0,pi0; insert B_20width:DecayModes 2 B_20->B+,pi-; insert B_20width:DecayModes 3 B_20->B0,pi0; insert B_20width:InterpolationMasses 0 5.6386367 insert B_20width:InterpolationMasses 1 5.6427184 insert B_20width:InterpolationMasses 2 5.6468 insert B_20width:InterpolationMasses 3 5.6508816 insert B_20width:InterpolationMasses 4 5.6549633 insert B_20width:InterpolationMasses 5 5.6590449 insert B_20width:InterpolationMasses 6 5.6631265 insert B_20width:InterpolationMasses 7 5.6672082 insert B_20width:InterpolationMasses 8 5.6712898 insert B_20width:InterpolationMasses 9 5.6753714 insert B_20width:InterpolationMasses 10 5.6794531 insert B_20width:InterpolationMasses 11 5.6835347 insert B_20width:InterpolationMasses 12 5.6876163 insert B_20width:InterpolationMasses 13 5.691698 insert B_20width:InterpolationMasses 14 5.6957796 insert B_20width:InterpolationMasses 15 5.6998612 insert B_20width:InterpolationMasses 16 5.7039429 insert B_20width:InterpolationMasses 17 5.7080245 insert B_20width:InterpolationMasses 18 5.7121061 insert B_20width:InterpolationMasses 19 5.7161878 insert B_20width:InterpolationMasses 20 5.7202694 insert B_20width:InterpolationMasses 21 5.724351 insert B_20width:InterpolationMasses 22 5.7284327 insert B_20width:InterpolationMasses 23 5.7325143 insert B_20width:InterpolationMasses 24 5.7365959 insert B_20width:InterpolationMasses 25 5.7406776 insert B_20width:InterpolationMasses 26 5.7447592 insert B_20width:InterpolationMasses 27 5.7488408 insert B_20width:InterpolationMasses 28 5.7529224 insert B_20width:InterpolationMasses 29 5.7570041 insert B_20width:InterpolationMasses 30 5.7610857 insert B_20width:InterpolationMasses 31 5.7651673 insert B_20width:InterpolationMasses 32 5.769249 insert B_20width:InterpolationMasses 33 5.7733306 insert B_20width:InterpolationMasses 34 5.7774122 insert B_20width:InterpolationMasses 35 5.7814939 insert B_20width:InterpolationMasses 36 5.7855755 insert B_20width:InterpolationMasses 37 5.7896571 insert B_20width:InterpolationMasses 38 5.7937388 insert B_20width:InterpolationMasses 39 5.7978204 insert B_20width:InterpolationMasses 40 5.801902 insert B_20width:InterpolationMasses 41 5.8059837 insert B_20width:InterpolationMasses 42 5.8100653 insert B_20width:InterpolationMasses 43 5.8141469 insert B_20width:InterpolationMasses 44 5.8182286 insert B_20width:InterpolationMasses 45 5.8223102 insert B_20width:InterpolationMasses 46 5.8263918 insert B_20width:InterpolationMasses 47 5.8304735 insert B_20width:InterpolationMasses 48 5.8345551 insert B_20width:InterpolationMasses 49 5.8386367 insert B_20width:InterpolationMasses 50 5.8427184 insert B_20width:InterpolationMasses 51 5.8468 insert B_20width:InterpolationMasses 52 5.8508816 insert B_20width:InterpolationMasses 53 5.8549633 insert B_20width:InterpolationMasses 54 5.6386367 insert B_20width:InterpolationMasses 55 5.6427184 insert B_20width:InterpolationMasses 56 5.6468 insert B_20width:InterpolationMasses 57 5.6508816 insert B_20width:InterpolationMasses 58 5.6549633 insert B_20width:InterpolationMasses 59 5.6590449 insert B_20width:InterpolationMasses 60 5.6631265 insert B_20width:InterpolationMasses 61 5.6672082 insert B_20width:InterpolationMasses 62 5.6712898 insert B_20width:InterpolationMasses 63 5.6753714 insert B_20width:InterpolationMasses 64 5.6794531 insert B_20width:InterpolationMasses 65 5.6835347 insert B_20width:InterpolationMasses 66 5.6876163 insert B_20width:InterpolationMasses 67 5.691698 insert B_20width:InterpolationMasses 68 5.6957796 insert B_20width:InterpolationMasses 69 5.6998612 insert B_20width:InterpolationMasses 70 5.7039429 insert B_20width:InterpolationMasses 71 5.7080245 insert B_20width:InterpolationMasses 72 5.7121061 insert B_20width:InterpolationMasses 73 5.7161878 insert B_20width:InterpolationMasses 74 5.7202694 insert B_20width:InterpolationMasses 75 5.724351 insert B_20width:InterpolationMasses 76 5.7284327 insert B_20width:InterpolationMasses 77 5.7325143 insert B_20width:InterpolationMasses 78 5.7365959 insert B_20width:InterpolationMasses 79 5.7406776 insert B_20width:InterpolationMasses 80 5.7447592 insert B_20width:InterpolationMasses 81 5.7488408 insert B_20width:InterpolationMasses 82 5.7529224 insert B_20width:InterpolationMasses 83 5.7570041 insert B_20width:InterpolationMasses 84 5.7610857 insert B_20width:InterpolationMasses 85 5.7651673 insert B_20width:InterpolationMasses 86 5.769249 insert B_20width:InterpolationMasses 87 5.7733306 insert B_20width:InterpolationMasses 88 5.7774122 insert B_20width:InterpolationMasses 89 5.7814939 insert B_20width:InterpolationMasses 90 5.7855755 insert B_20width:InterpolationMasses 91 5.7896571 insert B_20width:InterpolationMasses 92 5.7937388 insert B_20width:InterpolationMasses 93 5.7978204 insert B_20width:InterpolationMasses 94 5.801902 insert B_20width:InterpolationMasses 95 5.8059837 insert B_20width:InterpolationMasses 96 5.8100653 insert B_20width:InterpolationMasses 97 5.8141469 insert B_20width:InterpolationMasses 98 5.8182286 insert B_20width:InterpolationMasses 99 5.8223102 insert B_20width:InterpolationMasses 100 5.8263918 insert B_20width:InterpolationMasses 101 5.8304735 insert B_20width:InterpolationMasses 102 5.8345551 insert B_20width:InterpolationMasses 103 5.8386367 insert B_20width:InterpolationMasses 104 5.8427184 insert B_20width:InterpolationMasses 105 5.8468 insert B_20width:InterpolationMasses 106 5.8508816 insert B_20width:InterpolationMasses 107 5.8549633 insert B_20width:InterpolationWidths 0 0.00058256703 insert B_20width:InterpolationWidths 1 0.00063020622 insert B_20width:InterpolationWidths 2 0.00068071247 insert B_20width:InterpolationWidths 3 0.00073420232 insert B_20width:InterpolationWidths 4 0.00079079502 insert B_20width:InterpolationWidths 5 0.00085061252 insert B_20width:InterpolationWidths 6 0.00091377957 insert B_20width:InterpolationWidths 7 0.00098042364 insert B_20width:InterpolationWidths 8 0.001050675 insert B_20width:InterpolationWidths 9 0.0011246668 insert B_20width:InterpolationWidths 10 0.0012025349 insert B_20width:InterpolationWidths 11 0.001284418 insert B_20width:InterpolationWidths 12 0.0013704579 insert B_20width:InterpolationWidths 13 0.001460799 insert B_20width:InterpolationWidths 14 0.0015555886 insert B_20width:InterpolationWidths 15 0.0016549772 insert B_20width:InterpolationWidths 16 0.001759118 insert B_20width:InterpolationWidths 17 0.0018681671 insert B_20width:InterpolationWidths 18 0.0019822839 insert B_20width:InterpolationWidths 19 0.0021016303 insert B_20width:InterpolationWidths 20 0.0022263717 insert B_20width:InterpolationWidths 21 0.0023566761 insert B_20width:InterpolationWidths 22 0.0024927148 insert B_20width:InterpolationWidths 23 0.002634662 insert B_20width:InterpolationWidths 24 0.0027826952 insert B_20width:InterpolationWidths 25 0.0029369946 insert B_20width:InterpolationWidths 26 0.0030977438 insert B_20width:InterpolationWidths 27 0.0032651294 insert B_20width:InterpolationWidths 28 0.0034393412 insert B_20width:InterpolationWidths 29 0.003620572 insert B_20width:InterpolationWidths 30 0.0038090178 insert B_20width:InterpolationWidths 31 0.004004878 insert B_20width:InterpolationWidths 32 0.0042083548 insert B_20width:InterpolationWidths 33 0.0044196538 insert B_20width:InterpolationWidths 34 0.0046389839 insert B_20width:InterpolationWidths 35 0.0048665571 insert B_20width:InterpolationWidths 36 0.0051025886 insert B_20width:InterpolationWidths 37 0.0053472969 insert B_20width:InterpolationWidths 38 0.0056009038 insert B_20width:InterpolationWidths 39 0.0058636344 insert B_20width:InterpolationWidths 40 0.006135717 insert B_20width:InterpolationWidths 41 0.0064173832 insert B_20width:InterpolationWidths 42 0.0067088679 insert B_20width:InterpolationWidths 43 0.0070104095 insert B_20width:InterpolationWidths 44 0.0073222495 insert B_20width:InterpolationWidths 45 0.007644633 insert B_20width:InterpolationWidths 46 0.0079778082 insert B_20width:InterpolationWidths 47 0.0083220268 insert B_20width:InterpolationWidths 48 0.0086775439 insert B_20width:InterpolationWidths 49 0.009044618 insert B_20width:InterpolationWidths 50 0.009423511 insert B_20width:InterpolationWidths 51 0.009814488 insert B_20width:InterpolationWidths 52 0.010217818 insert B_20width:InterpolationWidths 53 0.010633773 insert B_20width:InterpolationWidths 54 0.00030289228 insert B_20width:InterpolationWidths 55 0.00032725368 insert B_20width:InterpolationWidths 56 0.00035306256 insert B_20width:InterpolationWidths 57 0.00038037726 insert B_20width:InterpolationWidths 58 0.00040925752 insert B_20width:InterpolationWidths 59 0.0004397644 insert B_20width:InterpolationWidths 60 0.00047196038 insert B_20width:InterpolationWidths 61 0.00050590927 insert B_20width:InterpolationWidths 62 0.00054167631 insert B_20width:InterpolationWidths 63 0.00057932813 insert B_20width:InterpolationWidths 64 0.00061893278 insert B_20width:InterpolationWidths 65 0.00066055972 insert B_20width:InterpolationWidths 66 0.00070427985 insert B_20width:InterpolationWidths 67 0.00075016549 insert B_20width:InterpolationWidths 68 0.00079829043 insert B_20width:InterpolationWidths 69 0.00084872991 insert B_20width:InterpolationWidths 70 0.00090156063 insert B_20width:InterpolationWidths 71 0.00095686077 insert B_20width:InterpolationWidths 72 0.00101471 insert B_20width:InterpolationWidths 73 0.0010751895 insert B_20width:InterpolationWidths 74 0.0011383818 insert B_20width:InterpolationWidths 75 0.0012043712 insert B_20width:InterpolationWidths 76 0.0012732433 insert B_20width:InterpolationWidths 77 0.0013450853 insert B_20width:InterpolationWidths 78 0.0014199859 insert B_20width:InterpolationWidths 79 0.0014980354 insert B_20width:InterpolationWidths 80 0.0015793257 insert B_20width:InterpolationWidths 81 0.00166395 insert B_20width:InterpolationWidths 82 0.0017520034 insert B_20width:InterpolationWidths 83 0.0018435822 insert B_20width:InterpolationWidths 84 0.0019387846 insert B_20width:InterpolationWidths 85 0.0020377103 insert B_20width:InterpolationWidths 86 0.0021404604 insert B_20width:InterpolationWidths 87 0.0022471378 insert B_20width:InterpolationWidths 88 0.002357847 insert B_20width:InterpolationWidths 89 0.0024726939 insert B_20width:InterpolationWidths 90 0.0025917864 insert B_20width:InterpolationWidths 91 0.0027152336 insert B_20width:InterpolationWidths 92 0.0028431466 insert B_20width:InterpolationWidths 93 0.0029756377 insert B_20width:InterpolationWidths 94 0.0031128214 insert B_20width:InterpolationWidths 95 0.0032548133 insert B_20width:InterpolationWidths 96 0.0034017311 insert B_20width:InterpolationWidths 97 0.0035536939 insert B_20width:InterpolationWidths 98 0.0037108224 insert B_20width:InterpolationWidths 99 0.0038732393 insert B_20width:InterpolationWidths 100 0.0040410687 insert B_20width:InterpolationWidths 101 0.0042144365 insert B_20width:InterpolationWidths 102 0.0043934703 insert B_20width:InterpolationWidths 103 0.0045782992 insert B_20width:InterpolationWidths 104 0.0047690543 insert B_20width:InterpolationWidths 105 0.0049658682 insert B_20width:InterpolationWidths 106 0.0051688753 insert B_20width:InterpolationWidths 107 0.0053782116 insert B_20width:NumberofEntries 0 54 insert B_20width:NumberofEntries 1 108 insert B_20width:NumberofEntries 2 108 insert B_20width:NumberofEntries 3 108 newdef /Herwig/Particles/B_20:Width_generator B_20width newdef /Herwig/Particles/B_2bar0:Width_generator B_20width # create Herwig::GenericWidthGenerator B_s20width newdef B_s20width:Particle /Herwig/Particles/B_s20 newdef B_s20width:Prefactor 0.999993 newdef B_s20width:BRNormalize 1 newdef B_s20width:BRMinimum 0.01 newdef B_s20width:Points 50 newdef B_s20width:InterpolationOrder 1 insert B_s20width:MEtype 0 2 insert B_s20width:MEtype 1 2 insert B_s20width:MEtype 2 1 insert B_s20width:MEtype 3 1 insert B_s20width:MEcode 0 0 insert B_s20width:MEcode 1 0 insert B_s20width:MEcode 2 7 insert B_s20width:MEcode 3 7 insert B_s20width:MEcoupling 0 0.998794 insert B_s20width:MEcoupling 1 1.00042 insert B_s20width:MEcoupling 2 264.747 insert B_s20width:MEcoupling 3 286.841 insert B_s20width:ModeOn 0 1 insert B_s20width:ModeOn 1 1 insert B_s20width:ModeOn 2 1 insert B_s20width:ModeOn 3 1 insert B_s20width:MinimumMasses 0 5.81867 insert B_s20width:MinimumMasses 1 5.82265 insert B_s20width:MinimumMasses 2 5.77268 insert B_s20width:MinimumMasses 3 5.77705 insert B_s20width:MEmass1 0 0.493677 insert B_s20width:MEmass1 1 0.497648 insert B_s20width:MEmass1 2 5.279 insert B_s20width:MEmass1 3 5.2794 insert B_s20width:MEmass2 0 5.325 insert B_s20width:MEmass2 1 5.325 insert B_s20width:MEmass2 2 0.493677 insert B_s20width:MEmass2 3 0.497648 insert B_s20width:DecayModes 0 B_s20->B*+,K-; insert B_s20width:DecayModes 1 B_s20->B*0,Kbar0; insert B_s20width:DecayModes 2 B_s20->B+,K-; insert B_s20width:DecayModes 3 B_s20->B0,Kbar0; insert B_s20width:InterpolationMasses 0 5.8320286 insert B_s20width:InterpolationMasses 1 5.8323143 insert B_s20width:InterpolationMasses 2 5.8326 insert B_s20width:InterpolationMasses 3 5.8328857 insert B_s20width:InterpolationMasses 4 5.8331714 insert B_s20width:InterpolationMasses 5 5.8334571 insert B_s20width:InterpolationMasses 6 5.8337429 insert B_s20width:InterpolationMasses 7 5.8340286 insert B_s20width:InterpolationMasses 8 5.8343143 insert B_s20width:InterpolationMasses 9 5.8346 insert B_s20width:InterpolationMasses 10 5.8348857 insert B_s20width:InterpolationMasses 11 5.8351714 insert B_s20width:InterpolationMasses 12 5.8354571 insert B_s20width:InterpolationMasses 13 5.8357429 insert B_s20width:InterpolationMasses 14 5.8360286 insert B_s20width:InterpolationMasses 15 5.8363143 insert B_s20width:InterpolationMasses 16 5.8366 insert B_s20width:InterpolationMasses 17 5.8368857 insert B_s20width:InterpolationMasses 18 5.8371714 insert B_s20width:InterpolationMasses 19 5.8374571 insert B_s20width:InterpolationMasses 20 5.8377429 insert B_s20width:InterpolationMasses 21 5.8380286 insert B_s20width:InterpolationMasses 22 5.8383143 insert B_s20width:InterpolationMasses 23 5.8386 insert B_s20width:InterpolationMasses 24 5.8388857 insert B_s20width:InterpolationMasses 25 5.8391714 insert B_s20width:InterpolationMasses 26 5.8394571 insert B_s20width:InterpolationMasses 27 5.8397429 insert B_s20width:InterpolationMasses 28 5.8400286 insert B_s20width:InterpolationMasses 29 5.8403143 insert B_s20width:InterpolationMasses 30 5.8406 insert B_s20width:InterpolationMasses 31 5.8408857 insert B_s20width:InterpolationMasses 32 5.8411714 insert B_s20width:InterpolationMasses 33 5.8414571 insert B_s20width:InterpolationMasses 34 5.8417429 insert B_s20width:InterpolationMasses 35 5.8420286 insert B_s20width:InterpolationMasses 36 5.8423143 insert B_s20width:InterpolationMasses 37 5.8426 insert B_s20width:InterpolationMasses 38 5.8428857 insert B_s20width:InterpolationMasses 39 5.8431714 insert B_s20width:InterpolationMasses 40 5.8434571 insert B_s20width:InterpolationMasses 41 5.8437429 insert B_s20width:InterpolationMasses 42 5.8440286 insert B_s20width:InterpolationMasses 43 5.8443143 insert B_s20width:InterpolationMasses 44 5.8446 insert B_s20width:InterpolationMasses 45 5.8448857 insert B_s20width:InterpolationMasses 46 5.8451714 insert B_s20width:InterpolationMasses 47 5.8454571 insert B_s20width:InterpolationMasses 48 5.8457429 insert B_s20width:InterpolationMasses 49 5.8460286 insert B_s20width:InterpolationMasses 50 5.8463143 insert B_s20width:InterpolationMasses 51 5.8466 insert B_s20width:InterpolationMasses 52 5.8468857 insert B_s20width:InterpolationMasses 53 5.8471714 insert B_s20width:InterpolationMasses 54 5.8320286 insert B_s20width:InterpolationMasses 55 5.8323143 insert B_s20width:InterpolationMasses 56 5.8326 insert B_s20width:InterpolationMasses 57 5.8328857 insert B_s20width:InterpolationMasses 58 5.8331714 insert B_s20width:InterpolationMasses 59 5.8334571 insert B_s20width:InterpolationMasses 60 5.8337429 insert B_s20width:InterpolationMasses 61 5.8340286 insert B_s20width:InterpolationMasses 62 5.8343143 insert B_s20width:InterpolationMasses 63 5.8346 insert B_s20width:InterpolationMasses 64 5.8348857 insert B_s20width:InterpolationMasses 65 5.8351714 insert B_s20width:InterpolationMasses 66 5.8354571 insert B_s20width:InterpolationMasses 67 5.8357429 insert B_s20width:InterpolationMasses 68 5.8360286 insert B_s20width:InterpolationMasses 69 5.8363143 insert B_s20width:InterpolationMasses 70 5.8366 insert B_s20width:InterpolationMasses 71 5.8368857 insert B_s20width:InterpolationMasses 72 5.8371714 insert B_s20width:InterpolationMasses 73 5.8374571 insert B_s20width:InterpolationMasses 74 5.8377429 insert B_s20width:InterpolationMasses 75 5.8380286 insert B_s20width:InterpolationMasses 76 5.8383143 insert B_s20width:InterpolationMasses 77 5.8386 insert B_s20width:InterpolationMasses 78 5.8388857 insert B_s20width:InterpolationMasses 79 5.8391714 insert B_s20width:InterpolationMasses 80 5.8394571 insert B_s20width:InterpolationMasses 81 5.8397429 insert B_s20width:InterpolationMasses 82 5.8400286 insert B_s20width:InterpolationMasses 83 5.8403143 insert B_s20width:InterpolationMasses 84 5.8406 insert B_s20width:InterpolationMasses 85 5.8408857 insert B_s20width:InterpolationMasses 86 5.8411714 insert B_s20width:InterpolationMasses 87 5.8414571 insert B_s20width:InterpolationMasses 88 5.8417429 insert B_s20width:InterpolationMasses 89 5.8420286 insert B_s20width:InterpolationMasses 90 5.8423143 insert B_s20width:InterpolationMasses 91 5.8426 insert B_s20width:InterpolationMasses 92 5.8428857 insert B_s20width:InterpolationMasses 93 5.8431714 insert B_s20width:InterpolationMasses 94 5.8434571 insert B_s20width:InterpolationMasses 95 5.8437429 insert B_s20width:InterpolationMasses 96 5.8440286 insert B_s20width:InterpolationMasses 97 5.8443143 insert B_s20width:InterpolationMasses 98 5.8446 insert B_s20width:InterpolationMasses 99 5.8448857 insert B_s20width:InterpolationMasses 100 5.8451714 insert B_s20width:InterpolationMasses 101 5.8454571 insert B_s20width:InterpolationMasses 102 5.8457429 insert B_s20width:InterpolationMasses 103 5.8460286 insert B_s20width:InterpolationMasses 104 5.8463143 insert B_s20width:InterpolationMasses 105 5.8466 insert B_s20width:InterpolationMasses 106 5.8468857 insert B_s20width:InterpolationMasses 107 5.8471714 insert B_s20width:InterpolationWidths 0 6.7324282e-06 insert B_s20width:InterpolationWidths 1 7.1026417e-06 insert B_s20width:InterpolationWidths 2 7.4849916e-06 insert B_s20width:InterpolationWidths 3 7.879621e-06 insert B_s20width:InterpolationWidths 4 8.286672e-06 insert B_s20width:InterpolationWidths 5 8.706286e-06 insert B_s20width:InterpolationWidths 6 9.1386033e-06 insert B_s20width:InterpolationWidths 7 9.5837634e-06 insert B_s20width:InterpolationWidths 8 1.0041905e-05 insert B_s20width:InterpolationWidths 9 1.0513166e-05 insert B_s20width:InterpolationWidths 10 1.0997684e-05 insert B_s20width:InterpolationWidths 11 1.1495595e-05 insert B_s20width:InterpolationWidths 12 1.2007034e-05 insert B_s20width:InterpolationWidths 13 1.2532137e-05 insert B_s20width:InterpolationWidths 14 1.3071039e-05 insert B_s20width:InterpolationWidths 15 1.3623872e-05 insert B_s20width:InterpolationWidths 16 1.419077e-05 insert B_s20width:InterpolationWidths 17 1.4771865e-05 insert B_s20width:InterpolationWidths 18 1.536729e-05 insert B_s20width:InterpolationWidths 19 1.5977175e-05 insert B_s20width:InterpolationWidths 20 1.6601651e-05 insert B_s20width:InterpolationWidths 21 1.7240848e-05 insert B_s20width:InterpolationWidths 22 1.7894897e-05 insert B_s20width:InterpolationWidths 23 1.8563926e-05 insert B_s20width:InterpolationWidths 24 1.9248064e-05 insert B_s20width:InterpolationWidths 25 1.9947439e-05 insert B_s20width:InterpolationWidths 26 2.0662178e-05 insert B_s20width:InterpolationWidths 27 2.139241e-05 insert B_s20width:InterpolationWidths 28 2.2138261e-05 insert B_s20width:InterpolationWidths 29 2.2899858e-05 insert B_s20width:InterpolationWidths 30 2.3677325e-05 insert B_s20width:InterpolationWidths 31 2.447079e-05 insert B_s20width:InterpolationWidths 32 2.5280377e-05 insert B_s20width:InterpolationWidths 33 2.6106211e-05 insert B_s20width:InterpolationWidths 34 2.6948416e-05 insert B_s20width:InterpolationWidths 35 2.7807117e-05 insert B_s20width:InterpolationWidths 36 2.8682437e-05 insert B_s20width:InterpolationWidths 37 2.9574499e-05 insert B_s20width:InterpolationWidths 38 3.0483428e-05 insert B_s20width:InterpolationWidths 39 3.1409344e-05 insert B_s20width:InterpolationWidths 40 3.2352371e-05 insert B_s20width:InterpolationWidths 41 3.3312632e-05 insert B_s20width:InterpolationWidths 42 3.4290247e-05 insert B_s20width:InterpolationWidths 43 3.5285337e-05 insert B_s20width:InterpolationWidths 44 3.6298026e-05 insert B_s20width:InterpolationWidths 45 3.7328432e-05 insert B_s20width:InterpolationWidths 46 3.8376678e-05 insert B_s20width:InterpolationWidths 47 3.9442883e-05 insert B_s20width:InterpolationWidths 48 4.0527167e-05 insert B_s20width:InterpolationWidths 49 4.1629651e-05 insert B_s20width:InterpolationWidths 50 4.2750453e-05 insert B_s20width:InterpolationWidths 51 4.3889694e-05 insert B_s20width:InterpolationWidths 52 4.5047493e-05 insert B_s20width:InterpolationWidths 53 4.6223968e-05 insert B_s20width:InterpolationWidths 54 4.7070384e-06 insert B_s20width:InterpolationWidths 55 5.0767015e-06 insert B_s20width:InterpolationWidths 56 5.4634435e-06 insert B_s20width:InterpolationWidths 57 5.8675385e-06 insert B_s20width:InterpolationWidths 58 6.2892577e-06 insert B_s20width:InterpolationWidths 59 6.7288696e-06 insert B_s20width:InterpolationWidths 60 7.1866401e-06 insert B_s20width:InterpolationWidths 61 7.6628327e-06 insert B_s20width:InterpolationWidths 62 8.1577082e-06 insert B_s20width:InterpolationWidths 63 8.6715253e-06 insert B_s20width:InterpolationWidths 64 9.2045406e-06 insert B_s20width:InterpolationWidths 65 9.7570083e-06 insert B_s20width:InterpolationWidths 66 1.0329181e-05 insert B_s20width:InterpolationWidths 67 1.0921309e-05 insert B_s20width:InterpolationWidths 68 1.153364e-05 insert B_s20width:InterpolationWidths 69 1.2166422e-05 insert B_s20width:InterpolationWidths 70 1.2819899e-05 insert B_s20width:InterpolationWidths 71 1.3494315e-05 insert B_s20width:InterpolationWidths 72 1.4189911e-05 insert B_s20width:InterpolationWidths 73 1.4906928e-05 insert B_s20width:InterpolationWidths 74 1.5645605e-05 insert B_s20width:InterpolationWidths 75 1.6406177e-05 insert B_s20width:InterpolationWidths 76 1.7188882e-05 insert B_s20width:InterpolationWidths 77 1.7993954e-05 insert B_s20width:InterpolationWidths 78 1.8821626e-05 insert B_s20width:InterpolationWidths 79 1.967213e-05 insert B_s20width:InterpolationWidths 80 2.0545696e-05 insert B_s20width:InterpolationWidths 81 2.1442554e-05 insert B_s20width:InterpolationWidths 82 2.2362933e-05 insert B_s20width:InterpolationWidths 83 2.330706e-05 insert B_s20width:InterpolationWidths 84 2.4275161e-05 insert B_s20width:InterpolationWidths 85 2.5267461e-05 insert B_s20width:InterpolationWidths 86 2.6284184e-05 insert B_s20width:InterpolationWidths 87 2.7325554e-05 insert B_s20width:InterpolationWidths 88 2.8391792e-05 insert B_s20width:InterpolationWidths 89 2.9483121e-05 insert B_s20width:InterpolationWidths 90 3.059976e-05 insert B_s20width:InterpolationWidths 91 3.174193e-05 insert B_s20width:InterpolationWidths 92 3.2909848e-05 insert B_s20width:InterpolationWidths 93 3.4103732e-05 insert B_s20width:InterpolationWidths 94 3.5323801e-05 insert B_s20width:InterpolationWidths 95 3.6570269e-05 insert B_s20width:InterpolationWidths 96 3.7843354e-05 insert B_s20width:InterpolationWidths 97 3.9143269e-05 insert B_s20width:InterpolationWidths 98 4.0470228e-05 insert B_s20width:InterpolationWidths 99 4.1824446e-05 insert B_s20width:InterpolationWidths 100 4.3206134e-05 insert B_s20width:InterpolationWidths 101 4.4615506e-05 insert B_s20width:InterpolationWidths 102 4.6052772e-05 insert B_s20width:InterpolationWidths 103 4.7518144e-05 insert B_s20width:InterpolationWidths 104 4.9011831e-05 insert B_s20width:InterpolationWidths 105 5.0534043e-05 insert B_s20width:InterpolationWidths 106 5.208499e-05 insert B_s20width:InterpolationWidths 107 5.366488e-05 insert B_s20width:NumberofEntries 0 54 insert B_s20width:NumberofEntries 1 108 insert B_s20width:NumberofEntries 2 108 insert B_s20width:NumberofEntries 3 108 newdef /Herwig/Particles/B_s2bar0:Width_generator B_s20width newdef /Herwig/Particles/B_s20:Width_generator B_s20width # create Herwig::GenericWidthGenerator D_s2+width newdef D_s2+width:Particle /Herwig/Particles/D_s2+ newdef D_s2+width:Prefactor 0.999861 newdef D_s2+width:BRNormalize 1 newdef D_s2+width:BRMinimum 0.01 newdef D_s2+width:Points 50 newdef D_s2+width:InterpolationOrder 1 insert D_s2+width:MEtype 0 2 insert D_s2+width:MEtype 1 2 insert D_s2+width:MEtype 2 1 insert D_s2+width:MEtype 3 1 insert D_s2+width:MEcode 0 0 insert D_s2+width:MEcode 1 0 insert D_s2+width:MEcode 2 7 insert D_s2+width:MEcode 3 7 insert D_s2+width:MEcoupling 0 0.95117 insert D_s2+width:MEcoupling 1 0.963686 insert D_s2+width:MEcoupling 2 59.7349 insert D_s2+width:MEcoupling 3 59.7521 insert D_s2+width:ModeOn 0 1 insert D_s2+width:ModeOn 1 1 insert D_s2+width:ModeOn 2 1 insert D_s2+width:ModeOn 3 1 insert D_s2+width:MinimumMasses 0 2.50669 insert D_s2+width:MinimumMasses 1 2.4997 insert D_s2+width:MinimumMasses 2 2.36695 insert D_s2+width:MinimumMasses 3 2.35818 insert D_s2+width:MEmass1 0 0.497648 insert D_s2+width:MEmass1 1 0.493677 insert D_s2+width:MEmass1 2 1.8693 insert D_s2+width:MEmass1 3 1.8645 insert D_s2+width:MEmass2 0 2.01 insert D_s2+width:MEmass2 1 2.0067 insert D_s2+width:MEmass2 2 0.497648 insert D_s2+width:MEmass2 3 0.493677 insert D_s2+width:DecayModes 0 D_s2+->D*+,K0; insert D_s2+width:DecayModes 1 D_s2+->D*0,K+; insert D_s2+width:DecayModes 2 D_s2+->D+,K0; insert D_s2+width:DecayModes 3 D_s2+->D0,K+; insert D_s2+width:InterpolationMasses 0 2.4978385 insert D_s2+width:InterpolationMasses 1 2.506688 insert D_s2+width:InterpolationMasses 2 2.506688 insert D_s2+width:InterpolationMasses 3 2.5111127 insert D_s2+width:InterpolationMasses 4 2.5155375 insert D_s2+width:InterpolationMasses 5 2.5199622 insert D_s2+width:InterpolationMasses 6 2.5243869 insert D_s2+width:InterpolationMasses 7 2.5288117 insert D_s2+width:InterpolationMasses 8 2.5332364 insert D_s2+width:InterpolationMasses 9 2.5376611 insert D_s2+width:InterpolationMasses 10 2.5420859 insert D_s2+width:InterpolationMasses 11 2.5465106 insert D_s2+width:InterpolationMasses 12 2.5509353 insert D_s2+width:InterpolationMasses 13 2.5553601 insert D_s2+width:InterpolationMasses 14 2.5597848 insert D_s2+width:InterpolationMasses 15 2.5642096 insert D_s2+width:InterpolationMasses 16 2.5686343 insert D_s2+width:InterpolationMasses 17 2.573059 insert D_s2+width:InterpolationMasses 18 2.5774838 insert D_s2+width:InterpolationMasses 19 2.5819085 insert D_s2+width:InterpolationMasses 20 2.5863332 insert D_s2+width:InterpolationMasses 21 2.590758 insert D_s2+width:InterpolationMasses 22 2.5951827 insert D_s2+width:InterpolationMasses 23 2.5996074 insert D_s2+width:InterpolationMasses 24 2.6040322 insert D_s2+width:InterpolationMasses 25 2.6084569 insert D_s2+width:InterpolationMasses 26 2.6128816 insert D_s2+width:InterpolationMasses 27 2.6173064 insert D_s2+width:InterpolationMasses 28 2.6217311 insert D_s2+width:InterpolationMasses 29 2.6261558 insert D_s2+width:InterpolationMasses 30 2.6305806 insert D_s2+width:InterpolationMasses 31 2.6350053 insert D_s2+width:InterpolationMasses 32 2.63943 insert D_s2+width:InterpolationMasses 33 2.6438548 insert D_s2+width:InterpolationMasses 34 2.6482795 insert D_s2+width:InterpolationMasses 35 2.6527042 insert D_s2+width:InterpolationMasses 36 2.657129 insert D_s2+width:InterpolationMasses 37 2.6615537 insert D_s2+width:InterpolationMasses 38 2.6659784 insert D_s2+width:InterpolationMasses 39 2.6704032 insert D_s2+width:InterpolationMasses 40 2.6748279 insert D_s2+width:InterpolationMasses 41 2.6792527 insert D_s2+width:InterpolationMasses 42 2.6836774 insert D_s2+width:InterpolationMasses 43 2.6881021 insert D_s2+width:InterpolationMasses 44 2.6925269 insert D_s2+width:InterpolationMasses 45 2.6969516 insert D_s2+width:InterpolationMasses 46 2.7013763 insert D_s2+width:InterpolationMasses 47 2.7058011 insert D_s2+width:InterpolationMasses 48 2.7102258 insert D_s2+width:InterpolationMasses 49 2.7146505 insert D_s2+width:InterpolationMasses 50 2.7190753 insert D_s2+width:InterpolationMasses 51 2.7235 insert D_s2+width:InterpolationMasses 52 2.7279247 insert D_s2+width:InterpolationMasses 53 2.7323495 insert D_s2+width:InterpolationMasses 54 2.4905622 insert D_s2+width:InterpolationMasses 55 2.499697 insert D_s2+width:InterpolationMasses 56 2.499697 insert D_s2+width:InterpolationMasses 57 2.5042644 insert D_s2+width:InterpolationMasses 58 2.5088318 insert D_s2+width:InterpolationMasses 59 2.5133992 insert D_s2+width:InterpolationMasses 60 2.5179666 insert D_s2+width:InterpolationMasses 61 2.522534 insert D_s2+width:InterpolationMasses 62 2.5271014 insert D_s2+width:InterpolationMasses 63 2.5316689 insert D_s2+width:InterpolationMasses 64 2.5362363 insert D_s2+width:InterpolationMasses 65 2.5408037 insert D_s2+width:InterpolationMasses 66 2.5453711 insert D_s2+width:InterpolationMasses 67 2.5499385 insert D_s2+width:InterpolationMasses 68 2.5545059 insert D_s2+width:InterpolationMasses 69 2.5590733 insert D_s2+width:InterpolationMasses 70 2.5636407 insert D_s2+width:InterpolationMasses 71 2.5682081 insert D_s2+width:InterpolationMasses 72 2.5727755 insert D_s2+width:InterpolationMasses 73 2.5773429 insert D_s2+width:InterpolationMasses 74 2.5819103 insert D_s2+width:InterpolationMasses 75 2.5864778 insert D_s2+width:InterpolationMasses 76 2.5910452 insert D_s2+width:InterpolationMasses 77 2.5956126 insert D_s2+width:InterpolationMasses 78 2.60018 insert D_s2+width:InterpolationMasses 79 2.6047474 insert D_s2+width:InterpolationMasses 80 2.6093148 insert D_s2+width:InterpolationMasses 81 2.6138822 insert D_s2+width:InterpolationMasses 82 2.6184496 insert D_s2+width:InterpolationMasses 83 2.623017 insert D_s2+width:InterpolationMasses 84 2.6275844 insert D_s2+width:InterpolationMasses 85 2.6321518 insert D_s2+width:InterpolationMasses 86 2.6367192 insert D_s2+width:InterpolationMasses 87 2.6412867 insert D_s2+width:InterpolationMasses 88 2.6458541 insert D_s2+width:InterpolationMasses 89 2.6504215 insert D_s2+width:InterpolationMasses 90 2.6549889 insert D_s2+width:InterpolationMasses 91 2.6595563 insert D_s2+width:InterpolationMasses 92 2.6641237 insert D_s2+width:InterpolationMasses 93 2.6686911 insert D_s2+width:InterpolationMasses 94 2.6732585 insert D_s2+width:InterpolationMasses 95 2.6778259 insert D_s2+width:InterpolationMasses 96 2.6823933 insert D_s2+width:InterpolationMasses 97 2.6869607 insert D_s2+width:InterpolationMasses 98 2.6915281 insert D_s2+width:InterpolationMasses 99 2.6960956 insert D_s2+width:InterpolationMasses 100 2.700663 insert D_s2+width:InterpolationMasses 101 2.7052304 insert D_s2+width:InterpolationMasses 102 2.7097978 insert D_s2+width:InterpolationMasses 103 2.7143652 insert D_s2+width:InterpolationMasses 104 2.7189326 insert D_s2+width:InterpolationMasses 105 2.7235 insert D_s2+width:InterpolationMasses 106 2.7280674 insert D_s2+width:InterpolationMasses 107 2.7326348 insert D_s2+width:InterpolationWidths 0 0 insert D_s2+width:InterpolationWidths 1 0 insert D_s2+width:InterpolationWidths 2 0 insert D_s2+width:InterpolationWidths 3 5.340031e-07 insert D_s2+width:InterpolationWidths 4 4.2047214e-06 insert D_s2+width:InterpolationWidths 5 1.2892939e-05 insert D_s2+width:InterpolationWidths 6 2.7979078e-05 insert D_s2+width:InterpolationWidths 7 5.0655567e-05 insert D_s2+width:InterpolationWidths 8 8.2008953e-05 insert D_s2+width:InterpolationWidths 9 0.00012305771 insert D_s2+width:InterpolationWidths 10 0.00017477424 insert D_s2+width:InterpolationWidths 11 0.00023809452 insert D_s2+width:InterpolationWidths 12 0.0003139322 insert D_s2+width:InterpolationWidths 13 0.00040318139 insert D_s2+width:InterpolationWidths 14 0.00050672207 insert D_s2+width:InterpolationWidths 15 0.0006254236 insert D_s2+width:InterpolationWidths 16 0.00076014737 insert D_s2+width:InterpolationWidths 17 0.00091174898 insert D_s2+width:InterpolationWidths 18 0.0010810799 insert D_s2+width:InterpolationWidths 19 0.001268989 insert D_s2+width:InterpolationWidths 20 0.0014763237 insert D_s2+width:InterpolationWidths 21 0.0017039306 insert D_s2+width:InterpolationWidths 22 0.001952657 insert D_s2+width:InterpolationWidths 23 0.0022233509 insert D_s2+width:InterpolationWidths 24 0.002516862 insert D_s2+width:InterpolationWidths 25 0.0028340422 insert D_s2+width:InterpolationWidths 26 0.003175746 insert D_s2+width:InterpolationWidths 27 0.0035428307 insert D_s2+width:InterpolationWidths 28 0.0039361571 insert D_s2+width:InterpolationWidths 29 0.0043566147 insert D_s2+width:InterpolationWidths 30 0.0048050251 insert D_s2+width:InterpolationWidths 31 0.0052822826 insert D_s2+width:InterpolationWidths 32 0.0057892641 insert D_s2+width:InterpolationWidths 33 0.006326851 insert D_s2+width:InterpolationWidths 34 0.0068959295 insert D_s2+width:InterpolationWidths 35 0.0074973906 insert D_s2+width:InterpolationWidths 36 0.0081321305 insert D_s2+width:InterpolationWidths 37 0.0088010503 insert D_s2+width:InterpolationWidths 38 0.0095050566 insert D_s2+width:InterpolationWidths 39 0.010245061 insert D_s2+width:InterpolationWidths 40 0.011021982 insert D_s2+width:InterpolationWidths 41 0.011836741 insert D_s2+width:InterpolationWidths 42 0.012690268 insert D_s2+width:InterpolationWidths 43 0.013583496 insert D_s2+width:InterpolationWidths 44 0.014517367 insert D_s2+width:InterpolationWidths 45 0.015492825 insert D_s2+width:InterpolationWidths 46 0.016510823 insert D_s2+width:InterpolationWidths 47 0.017572318 insert D_s2+width:InterpolationWidths 48 0.018678275 insert D_s2+width:InterpolationWidths 49 0.019829663 insert D_s2+width:InterpolationWidths 50 0.021027458 insert D_s2+width:InterpolationWidths 51 0.022272642 insert D_s2+width:InterpolationWidths 52 0.023566204 insert D_s2+width:InterpolationWidths 53 0.024909138 insert D_s2+width:InterpolationWidths 54 0 insert D_s2+width:InterpolationWidths 55 0 insert D_s2+width:InterpolationWidths 56 0 insert D_s2+width:InterpolationWidths 57 7.0127282e-07 insert D_s2+width:InterpolationWidths 58 4.9252657e-06 insert D_s2+width:InterpolationWidths 59 1.4608667e-05 insert D_s2+width:InterpolationWidths 60 3.1208303e-05 insert D_s2+width:InterpolationWidths 61 5.5991432e-05 insert D_s2+width:InterpolationWidths 62 9.0117546e-05 insert D_s2+width:InterpolationWidths 63 0.00013467672 insert D_s2+width:InterpolationWidths 64 0.00019071122 insert D_s2+width:InterpolationWidths 65 0.00025922905 insert D_s2+width:InterpolationWidths 66 0.00034121306 insert D_s2+width:InterpolationWidths 67 0.00043762741 insert D_s2+width:InterpolationWidths 68 0.00054942232 insert D_s2+width:InterpolationWidths 69 0.00067753767 insert D_s2+width:InterpolationWidths 70 0.00082290577 insert D_s2+width:InterpolationWidths 71 0.00098645364 insert D_s2+width:InterpolationWidths 72 0.0011691048 insert D_s2+width:InterpolationWidths 73 0.0013717806 insert D_s2+width:InterpolationWidths 74 0.0015954016 insert D_s2+width:InterpolationWidths 75 0.0018408886 insert D_s2+width:InterpolationWidths 76 0.0021091632 insert D_s2+width:InterpolationWidths 77 0.0024011491 insert D_s2+width:InterpolationWidths 78 0.0027177721 insert D_s2+width:InterpolationWidths 79 0.003059961 insert D_s2+width:InterpolationWidths 80 0.003428648 insert D_s2+width:InterpolationWidths 81 0.0038247691 insert D_s2+width:InterpolationWidths 82 0.0042492645 insert D_s2+width:InterpolationWidths 83 0.0047030788 insert D_s2+width:InterpolationWidths 84 0.0051871615 insert D_s2+width:InterpolationWidths 85 0.005702467 insert D_s2+width:InterpolationWidths 86 0.006249955 insert D_s2+width:InterpolationWidths 87 0.0068305905 insert D_s2+width:InterpolationWidths 88 0.0074453444 insert D_s2+width:InterpolationWidths 89 0.0080951932 insert D_s2+width:InterpolationWidths 90 0.0087811193 insert D_s2+width:InterpolationWidths 91 0.0095041111 insert D_s2+width:InterpolationWidths 92 0.010265163 insert D_s2+width:InterpolationWidths 93 0.011065277 insert D_s2+width:InterpolationWidths 94 0.01190546 insert D_s2+width:InterpolationWidths 95 0.012786724 insert D_s2+width:InterpolationWidths 96 0.013710092 insert D_s2+width:InterpolationWidths 97 0.01467659 insert D_s2+width:InterpolationWidths 98 0.015687251 insert D_s2+width:InterpolationWidths 99 0.016743116 insert D_s2+width:InterpolationWidths 100 0.017845231 insert D_s2+width:InterpolationWidths 101 0.018994652 insert D_s2+width:InterpolationWidths 102 0.020192439 insert D_s2+width:InterpolationWidths 103 0.02143966 insert D_s2+width:InterpolationWidths 104 0.022737389 insert D_s2+width:InterpolationWidths 105 0.02408671 insert D_s2+width:InterpolationWidths 106 0.02548871 insert D_s2+width:InterpolationWidths 107 0.026944485 insert D_s2+width:NumberofEntries 0 54 insert D_s2+width:NumberofEntries 1 108 insert D_s2+width:NumberofEntries 2 108 insert D_s2+width:NumberofEntries 3 108 newdef /Herwig/Particles/D_s2+:Width_generator D_s2+width newdef /Herwig/Particles/D_s2-:Width_generator D_s2+width # create Herwig::GenericWidthGenerator K_1+width newdef K_1+width:Particle /Herwig/Particles/K_1+ newdef K_1+width:Prefactor 0.999806 newdef K_1+width:BRNormalize 0 newdef K_1+width:BRMinimum 0.01 newdef K_1+width:Points 50 newdef K_1+width:InterpolationOrder 1 insert K_1+width:MEtype 0 2 insert K_1+width:MEtype 1 2 insert K_1+width:MEtype 2 2 insert K_1+width:MEtype 3 2 insert K_1+width:MEtype 4 2 insert K_1+width:MEtype 5 2 insert K_1+width:MEtype 6 2 insert K_1+width:MEcode 0 0 insert K_1+width:MEcode 1 0 insert K_1+width:MEcode 2 0 insert K_1+width:MEcode 3 0 insert K_1+width:MEcode 4 0 insert K_1+width:MEcode 5 0 insert K_1+width:MEcode 6 0 insert K_1+width:MEcoupling 0 1 insert K_1+width:MEcoupling 1 1 insert K_1+width:MEcoupling 2 1 insert K_1+width:MEcoupling 3 1 insert K_1+width:MEcoupling 4 1 insert K_1+width:MEcoupling 5 1 insert K_1+width:MEcoupling 6 1 insert K_1+width:ModeOn 0 1 insert K_1+width:ModeOn 1 1 insert K_1+width:ModeOn 2 1 insert K_1+width:ModeOn 3 1 insert K_1+width:ModeOn 4 1 insert K_1+width:ModeOn 5 1 insert K_1+width:ModeOn 6 1 insert K_1+width:MinimumMasses 0 0.776638 insert K_1+width:MinimumMasses 1 0.778978 insert K_1+width:MinimumMasses 2 0.78357 insert K_1+width:MinimumMasses 3 0.78557 insert K_1+width:MinimumMasses 4 1.19143 insert K_1+width:MinimumMasses 5 0.869177 insert K_1+width:MinimumMasses 6 0.873148 insert K_1+width:MEmass1 0 0.89166 insert K_1+width:MEmass1 1 1.414 insert K_1+width:MEmass1 2 1.414 insert K_1+width:MEmass1 3 0.896 insert K_1+width:MEmass1 4 0.78265 insert K_1+width:MEmass1 5 0.7755 insert K_1+width:MEmass1 6 0.7755 insert K_1+width:MEmass2 0 0.134978 insert K_1+width:MEmass2 1 0.134978 insert K_1+width:MEmass2 2 0.13957 insert K_1+width:MEmass2 3 0.13957 insert K_1+width:MEmass2 4 0.493677 insert K_1+width:MEmass2 5 0.493677 insert K_1+width:MEmass2 6 0.497648 insert K_1+width:DecayModes 0 K_1+->K*+,pi0; insert K_1+width:DecayModes 1 K_1+->K*_0+,pi0; insert K_1+width:DecayModes 2 K_1+->K*_00,pi+; insert K_1+width:DecayModes 3 K_1+->K*0,pi+; insert K_1+width:DecayModes 4 K_1+->K+,omega; insert K_1+width:DecayModes 5 K_1+->K+,rho0; insert K_1+width:DecayModes 6 K_1+->K0,rho+; insert K_1+width:InterpolationMasses 0 1.0773061 insert K_1+width:InterpolationMasses 1 1.0846531 insert K_1+width:InterpolationMasses 2 1.092 insert K_1+width:InterpolationMasses 3 1.0993469 insert K_1+width:InterpolationMasses 4 1.1066939 insert K_1+width:InterpolationMasses 5 1.1140408 insert K_1+width:InterpolationMasses 6 1.1213878 insert K_1+width:InterpolationMasses 7 1.1287347 insert K_1+width:InterpolationMasses 8 1.1360816 insert K_1+width:InterpolationMasses 9 1.1434286 insert K_1+width:InterpolationMasses 10 1.1507755 insert K_1+width:InterpolationMasses 11 1.1581224 insert K_1+width:InterpolationMasses 12 1.1654694 insert K_1+width:InterpolationMasses 13 1.1728163 insert K_1+width:InterpolationMasses 14 1.1801633 insert K_1+width:InterpolationMasses 15 1.1875102 insert K_1+width:InterpolationMasses 16 1.1948571 insert K_1+width:InterpolationMasses 17 1.2022041 insert K_1+width:InterpolationMasses 18 1.209551 insert K_1+width:InterpolationMasses 19 1.216898 insert K_1+width:InterpolationMasses 20 1.2242449 insert K_1+width:InterpolationMasses 21 1.2315918 insert K_1+width:InterpolationMasses 22 1.2389388 insert K_1+width:InterpolationMasses 23 1.2462857 insert K_1+width:InterpolationMasses 24 1.2536327 insert K_1+width:InterpolationMasses 25 1.2609796 insert K_1+width:InterpolationMasses 26 1.2683265 insert K_1+width:InterpolationMasses 27 1.2756735 insert K_1+width:InterpolationMasses 28 1.2830204 insert K_1+width:InterpolationMasses 29 1.2903673 insert K_1+width:InterpolationMasses 30 1.2977143 insert K_1+width:InterpolationMasses 31 1.3050612 insert K_1+width:InterpolationMasses 32 1.3124082 insert K_1+width:InterpolationMasses 33 1.3197551 insert K_1+width:InterpolationMasses 34 1.327102 insert K_1+width:InterpolationMasses 35 1.334449 insert K_1+width:InterpolationMasses 36 1.3417959 insert K_1+width:InterpolationMasses 37 1.3491429 insert K_1+width:InterpolationMasses 38 1.3564898 insert K_1+width:InterpolationMasses 39 1.3638367 insert K_1+width:InterpolationMasses 40 1.3711837 insert K_1+width:InterpolationMasses 41 1.3785306 insert K_1+width:InterpolationMasses 42 1.3858776 insert K_1+width:InterpolationMasses 43 1.3932245 insert K_1+width:InterpolationMasses 44 1.4005714 insert K_1+width:InterpolationMasses 45 1.4079184 insert K_1+width:InterpolationMasses 46 1.4152653 insert K_1+width:InterpolationMasses 47 1.4226122 insert K_1+width:InterpolationMasses 48 1.4299592 insert K_1+width:InterpolationMasses 49 1.4373061 insert K_1+width:InterpolationMasses 50 1.4446531 insert K_1+width:InterpolationMasses 51 1.452 insert K_1+width:InterpolationMasses 52 1.4593469 insert K_1+width:InterpolationMasses 53 1.4666939 insert K_1+width:InterpolationMasses 54 1.0773061 insert K_1+width:InterpolationMasses 55 1.0846531 insert K_1+width:InterpolationMasses 56 1.092 insert K_1+width:InterpolationMasses 57 1.0993469 insert K_1+width:InterpolationMasses 58 1.1066939 insert K_1+width:InterpolationMasses 59 1.1140408 insert K_1+width:InterpolationMasses 60 1.1213878 insert K_1+width:InterpolationMasses 61 1.1287347 insert K_1+width:InterpolationMasses 62 1.1360816 insert K_1+width:InterpolationMasses 63 1.1434286 insert K_1+width:InterpolationMasses 64 1.1507755 insert K_1+width:InterpolationMasses 65 1.1581224 insert K_1+width:InterpolationMasses 66 1.1654694 insert K_1+width:InterpolationMasses 67 1.1728163 insert K_1+width:InterpolationMasses 68 1.1801633 insert K_1+width:InterpolationMasses 69 1.1875102 insert K_1+width:InterpolationMasses 70 1.1948571 insert K_1+width:InterpolationMasses 71 1.2022041 insert K_1+width:InterpolationMasses 72 1.209551 insert K_1+width:InterpolationMasses 73 1.216898 insert K_1+width:InterpolationMasses 74 1.2242449 insert K_1+width:InterpolationMasses 75 1.2315918 insert K_1+width:InterpolationMasses 76 1.2389388 insert K_1+width:InterpolationMasses 77 1.2462857 insert K_1+width:InterpolationMasses 78 1.2536327 insert K_1+width:InterpolationMasses 79 1.2609796 insert K_1+width:InterpolationMasses 80 1.2683265 insert K_1+width:InterpolationMasses 81 1.2756735 insert K_1+width:InterpolationMasses 82 1.2830204 insert K_1+width:InterpolationMasses 83 1.2903673 insert K_1+width:InterpolationMasses 84 1.2977143 insert K_1+width:InterpolationMasses 85 1.3050612 insert K_1+width:InterpolationMasses 86 1.3124082 insert K_1+width:InterpolationMasses 87 1.3197551 insert K_1+width:InterpolationMasses 88 1.327102 insert K_1+width:InterpolationMasses 89 1.334449 insert K_1+width:InterpolationMasses 90 1.3417959 insert K_1+width:InterpolationMasses 91 1.3491429 insert K_1+width:InterpolationMasses 92 1.3564898 insert K_1+width:InterpolationMasses 93 1.3638367 insert K_1+width:InterpolationMasses 94 1.3711837 insert K_1+width:InterpolationMasses 95 1.3785306 insert K_1+width:InterpolationMasses 96 1.3858776 insert K_1+width:InterpolationMasses 97 1.3932245 insert K_1+width:InterpolationMasses 98 1.4005714 insert K_1+width:InterpolationMasses 99 1.4079184 insert K_1+width:InterpolationMasses 100 1.4152653 insert K_1+width:InterpolationMasses 101 1.4226122 insert K_1+width:InterpolationMasses 102 1.4299592 insert K_1+width:InterpolationMasses 103 1.4373061 insert K_1+width:InterpolationMasses 104 1.4446531 insert K_1+width:InterpolationMasses 105 1.452 insert K_1+width:InterpolationMasses 106 1.4593469 insert K_1+width:InterpolationMasses 107 1.4666939 insert K_1+width:InterpolationMasses 108 1.0773061 insert K_1+width:InterpolationMasses 109 1.0846531 insert K_1+width:InterpolationMasses 110 1.092 insert K_1+width:InterpolationMasses 111 1.0993469 insert K_1+width:InterpolationMasses 112 1.1066939 insert K_1+width:InterpolationMasses 113 1.1140408 insert K_1+width:InterpolationMasses 114 1.1213878 insert K_1+width:InterpolationMasses 115 1.1287347 insert K_1+width:InterpolationMasses 116 1.1360816 insert K_1+width:InterpolationMasses 117 1.1434286 insert K_1+width:InterpolationMasses 118 1.1507755 insert K_1+width:InterpolationMasses 119 1.1581224 insert K_1+width:InterpolationMasses 120 1.1654694 insert K_1+width:InterpolationMasses 121 1.1728163 insert K_1+width:InterpolationMasses 122 1.1801633 insert K_1+width:InterpolationMasses 123 1.1875102 insert K_1+width:InterpolationMasses 124 1.1948571 insert K_1+width:InterpolationMasses 125 1.2022041 insert K_1+width:InterpolationMasses 126 1.209551 insert K_1+width:InterpolationMasses 127 1.216898 insert K_1+width:InterpolationMasses 128 1.2242449 insert K_1+width:InterpolationMasses 129 1.2315918 insert K_1+width:InterpolationMasses 130 1.2389388 insert K_1+width:InterpolationMasses 131 1.2462857 insert K_1+width:InterpolationMasses 132 1.2536327 insert K_1+width:InterpolationMasses 133 1.2609796 insert K_1+width:InterpolationMasses 134 1.2683265 insert K_1+width:InterpolationMasses 135 1.2756735 insert K_1+width:InterpolationMasses 136 1.2830204 insert K_1+width:InterpolationMasses 137 1.2903673 insert K_1+width:InterpolationMasses 138 1.2977143 insert K_1+width:InterpolationMasses 139 1.3050612 insert K_1+width:InterpolationMasses 140 1.3124082 insert K_1+width:InterpolationMasses 141 1.3197551 insert K_1+width:InterpolationMasses 142 1.327102 insert K_1+width:InterpolationMasses 143 1.334449 insert K_1+width:InterpolationMasses 144 1.3417959 insert K_1+width:InterpolationMasses 145 1.3491429 insert K_1+width:InterpolationMasses 146 1.3564898 insert K_1+width:InterpolationMasses 147 1.3638367 insert K_1+width:InterpolationMasses 148 1.3711837 insert K_1+width:InterpolationMasses 149 1.3785306 insert K_1+width:InterpolationMasses 150 1.3858776 insert K_1+width:InterpolationMasses 151 1.3932245 insert K_1+width:InterpolationMasses 152 1.4005714 insert K_1+width:InterpolationMasses 153 1.4079184 insert K_1+width:InterpolationMasses 154 1.4152653 insert K_1+width:InterpolationMasses 155 1.4226122 insert K_1+width:InterpolationMasses 156 1.4299592 insert K_1+width:InterpolationMasses 157 1.4373061 insert K_1+width:InterpolationMasses 158 1.4446531 insert K_1+width:InterpolationMasses 159 1.452 insert K_1+width:InterpolationMasses 160 1.4593469 insert K_1+width:InterpolationMasses 161 1.4666939 insert K_1+width:InterpolationMasses 162 1.0773061 insert K_1+width:InterpolationMasses 163 1.0846531 insert K_1+width:InterpolationMasses 164 1.092 insert K_1+width:InterpolationMasses 165 1.0993469 insert K_1+width:InterpolationMasses 166 1.1066939 insert K_1+width:InterpolationMasses 167 1.1140408 insert K_1+width:InterpolationMasses 168 1.1213878 insert K_1+width:InterpolationMasses 169 1.1287347 insert K_1+width:InterpolationMasses 170 1.1360816 insert K_1+width:InterpolationMasses 171 1.1434286 insert K_1+width:InterpolationMasses 172 1.1507755 insert K_1+width:InterpolationMasses 173 1.1581224 insert K_1+width:InterpolationMasses 174 1.1654694 insert K_1+width:InterpolationMasses 175 1.1728163 insert K_1+width:InterpolationMasses 176 1.1801633 insert K_1+width:InterpolationMasses 177 1.1875102 insert K_1+width:InterpolationMasses 178 1.1948571 insert K_1+width:InterpolationMasses 179 1.2022041 insert K_1+width:InterpolationMasses 180 1.209551 insert K_1+width:InterpolationMasses 181 1.216898 insert K_1+width:InterpolationMasses 182 1.2242449 insert K_1+width:InterpolationMasses 183 1.2315918 insert K_1+width:InterpolationMasses 184 1.2389388 insert K_1+width:InterpolationMasses 185 1.2462857 insert K_1+width:InterpolationMasses 186 1.2536327 insert K_1+width:InterpolationMasses 187 1.2609796 insert K_1+width:InterpolationMasses 188 1.2683265 insert K_1+width:InterpolationMasses 189 1.2756735 insert K_1+width:InterpolationMasses 190 1.2830204 insert K_1+width:InterpolationMasses 191 1.2903673 insert K_1+width:InterpolationMasses 192 1.2977143 insert K_1+width:InterpolationMasses 193 1.3050612 insert K_1+width:InterpolationMasses 194 1.3124082 insert K_1+width:InterpolationMasses 195 1.3197551 insert K_1+width:InterpolationMasses 196 1.327102 insert K_1+width:InterpolationMasses 197 1.334449 insert K_1+width:InterpolationMasses 198 1.3417959 insert K_1+width:InterpolationMasses 199 1.3491429 insert K_1+width:InterpolationMasses 200 1.3564898 insert K_1+width:InterpolationMasses 201 1.3638367 insert K_1+width:InterpolationMasses 202 1.3711837 insert K_1+width:InterpolationMasses 203 1.3785306 insert K_1+width:InterpolationMasses 204 1.3858776 insert K_1+width:InterpolationMasses 205 1.3932245 insert K_1+width:InterpolationMasses 206 1.4005714 insert K_1+width:InterpolationMasses 207 1.4079184 insert K_1+width:InterpolationMasses 208 1.4152653 insert K_1+width:InterpolationMasses 209 1.4226122 insert K_1+width:InterpolationMasses 210 1.4299592 insert K_1+width:InterpolationMasses 211 1.4373061 insert K_1+width:InterpolationMasses 212 1.4446531 insert K_1+width:InterpolationMasses 213 1.452 insert K_1+width:InterpolationMasses 214 1.4593469 insert K_1+width:InterpolationMasses 215 1.4666939 insert K_1+width:InterpolationMasses 216 1.1807914 insert K_1+width:InterpolationMasses 217 1.191427 insert K_1+width:InterpolationMasses 218 1.191427 insert K_1+width:InterpolationMasses 219 1.1967448 insert K_1+width:InterpolationMasses 220 1.2020626 insert K_1+width:InterpolationMasses 221 1.2073804 insert K_1+width:InterpolationMasses 222 1.2126983 insert K_1+width:InterpolationMasses 223 1.2180161 insert K_1+width:InterpolationMasses 224 1.2233339 insert K_1+width:InterpolationMasses 225 1.2286517 insert K_1+width:InterpolationMasses 226 1.2339695 insert K_1+width:InterpolationMasses 227 1.2392873 insert K_1+width:InterpolationMasses 228 1.2446052 insert K_1+width:InterpolationMasses 229 1.249923 insert K_1+width:InterpolationMasses 230 1.2552408 insert K_1+width:InterpolationMasses 231 1.2605586 insert K_1+width:InterpolationMasses 232 1.2658764 insert K_1+width:InterpolationMasses 233 1.2711942 insert K_1+width:InterpolationMasses 234 1.2765121 insert K_1+width:InterpolationMasses 235 1.2818299 insert K_1+width:InterpolationMasses 236 1.2871477 insert K_1+width:InterpolationMasses 237 1.2924655 insert K_1+width:InterpolationMasses 238 1.2977833 insert K_1+width:InterpolationMasses 239 1.3031011 insert K_1+width:InterpolationMasses 240 1.308419 insert K_1+width:InterpolationMasses 241 1.3137368 insert K_1+width:InterpolationMasses 242 1.3190546 insert K_1+width:InterpolationMasses 243 1.3243724 insert K_1+width:InterpolationMasses 244 1.3296902 insert K_1+width:InterpolationMasses 245 1.335008 insert K_1+width:InterpolationMasses 246 1.3403259 insert K_1+width:InterpolationMasses 247 1.3456437 insert K_1+width:InterpolationMasses 248 1.3509615 insert K_1+width:InterpolationMasses 249 1.3562793 insert K_1+width:InterpolationMasses 250 1.3615971 insert K_1+width:InterpolationMasses 251 1.3669149 insert K_1+width:InterpolationMasses 252 1.3722328 insert K_1+width:InterpolationMasses 253 1.3775506 insert K_1+width:InterpolationMasses 254 1.3828684 insert K_1+width:InterpolationMasses 255 1.3881862 insert K_1+width:InterpolationMasses 256 1.393504 insert K_1+width:InterpolationMasses 257 1.3988218 insert K_1+width:InterpolationMasses 258 1.4041397 insert K_1+width:InterpolationMasses 259 1.4094575 insert K_1+width:InterpolationMasses 260 1.4147753 insert K_1+width:InterpolationMasses 261 1.4200931 insert K_1+width:InterpolationMasses 262 1.4254109 insert K_1+width:InterpolationMasses 263 1.4307287 insert K_1+width:InterpolationMasses 264 1.4360466 insert K_1+width:InterpolationMasses 265 1.4413644 insert K_1+width:InterpolationMasses 266 1.4466822 insert K_1+width:InterpolationMasses 267 1.452 insert K_1+width:InterpolationMasses 268 1.4573178 insert K_1+width:InterpolationMasses 269 1.4626356 insert K_1+width:InterpolationMasses 270 1.0773061 insert K_1+width:InterpolationMasses 271 1.0846531 insert K_1+width:InterpolationMasses 272 1.092 insert K_1+width:InterpolationMasses 273 1.0993469 insert K_1+width:InterpolationMasses 274 1.1066939 insert K_1+width:InterpolationMasses 275 1.1140408 insert K_1+width:InterpolationMasses 276 1.1213878 insert K_1+width:InterpolationMasses 277 1.1287347 insert K_1+width:InterpolationMasses 278 1.1360816 insert K_1+width:InterpolationMasses 279 1.1434286 insert K_1+width:InterpolationMasses 280 1.1507755 insert K_1+width:InterpolationMasses 281 1.1581224 insert K_1+width:InterpolationMasses 282 1.1654694 insert K_1+width:InterpolationMasses 283 1.1728163 insert K_1+width:InterpolationMasses 284 1.1801633 insert K_1+width:InterpolationMasses 285 1.1875102 insert K_1+width:InterpolationMasses 286 1.1948571 insert K_1+width:InterpolationMasses 287 1.2022041 insert K_1+width:InterpolationMasses 288 1.209551 insert K_1+width:InterpolationMasses 289 1.216898 insert K_1+width:InterpolationMasses 290 1.2242449 insert K_1+width:InterpolationMasses 291 1.2315918 insert K_1+width:InterpolationMasses 292 1.2389388 insert K_1+width:InterpolationMasses 293 1.2462857 insert K_1+width:InterpolationMasses 294 1.2536327 insert K_1+width:InterpolationMasses 295 1.2609796 insert K_1+width:InterpolationMasses 296 1.2683265 insert K_1+width:InterpolationMasses 297 1.2756735 insert K_1+width:InterpolationMasses 298 1.2830204 insert K_1+width:InterpolationMasses 299 1.2903673 insert K_1+width:InterpolationMasses 300 1.2977143 insert K_1+width:InterpolationMasses 301 1.3050612 insert K_1+width:InterpolationMasses 302 1.3124082 insert K_1+width:InterpolationMasses 303 1.3197551 insert K_1+width:InterpolationMasses 304 1.327102 insert K_1+width:InterpolationMasses 305 1.334449 insert K_1+width:InterpolationMasses 306 1.3417959 insert K_1+width:InterpolationMasses 307 1.3491429 insert K_1+width:InterpolationMasses 308 1.3564898 insert K_1+width:InterpolationMasses 309 1.3638367 insert K_1+width:InterpolationMasses 310 1.3711837 insert K_1+width:InterpolationMasses 311 1.3785306 insert K_1+width:InterpolationMasses 312 1.3858776 insert K_1+width:InterpolationMasses 313 1.3932245 insert K_1+width:InterpolationMasses 314 1.4005714 insert K_1+width:InterpolationMasses 315 1.4079184 insert K_1+width:InterpolationMasses 316 1.4152653 insert K_1+width:InterpolationMasses 317 1.4226122 insert K_1+width:InterpolationMasses 318 1.4299592 insert K_1+width:InterpolationMasses 319 1.4373061 insert K_1+width:InterpolationMasses 320 1.4446531 insert K_1+width:InterpolationMasses 321 1.452 insert K_1+width:InterpolationMasses 322 1.4593469 insert K_1+width:InterpolationMasses 323 1.4666939 insert K_1+width:InterpolationMasses 324 1.0773061 insert K_1+width:InterpolationMasses 325 1.0846531 insert K_1+width:InterpolationMasses 326 1.092 insert K_1+width:InterpolationMasses 327 1.0993469 insert K_1+width:InterpolationMasses 328 1.1066939 insert K_1+width:InterpolationMasses 329 1.1140408 insert K_1+width:InterpolationMasses 330 1.1213878 insert K_1+width:InterpolationMasses 331 1.1287347 insert K_1+width:InterpolationMasses 332 1.1360816 insert K_1+width:InterpolationMasses 333 1.1434286 insert K_1+width:InterpolationMasses 334 1.1507755 insert K_1+width:InterpolationMasses 335 1.1581224 insert K_1+width:InterpolationMasses 336 1.1654694 insert K_1+width:InterpolationMasses 337 1.1728163 insert K_1+width:InterpolationMasses 338 1.1801633 insert K_1+width:InterpolationMasses 339 1.1875102 insert K_1+width:InterpolationMasses 340 1.1948571 insert K_1+width:InterpolationMasses 341 1.2022041 insert K_1+width:InterpolationMasses 342 1.209551 insert K_1+width:InterpolationMasses 343 1.216898 insert K_1+width:InterpolationMasses 344 1.2242449 insert K_1+width:InterpolationMasses 345 1.2315918 insert K_1+width:InterpolationMasses 346 1.2389388 insert K_1+width:InterpolationMasses 347 1.2462857 insert K_1+width:InterpolationMasses 348 1.2536327 insert K_1+width:InterpolationMasses 349 1.2609796 insert K_1+width:InterpolationMasses 350 1.2683265 insert K_1+width:InterpolationMasses 351 1.2756735 insert K_1+width:InterpolationMasses 352 1.2830204 insert K_1+width:InterpolationMasses 353 1.2903673 insert K_1+width:InterpolationMasses 354 1.2977143 insert K_1+width:InterpolationMasses 355 1.3050612 insert K_1+width:InterpolationMasses 356 1.3124082 insert K_1+width:InterpolationMasses 357 1.3197551 insert K_1+width:InterpolationMasses 358 1.327102 insert K_1+width:InterpolationMasses 359 1.334449 insert K_1+width:InterpolationMasses 360 1.3417959 insert K_1+width:InterpolationMasses 361 1.3491429 insert K_1+width:InterpolationMasses 362 1.3564898 insert K_1+width:InterpolationMasses 363 1.3638367 insert K_1+width:InterpolationMasses 364 1.3711837 insert K_1+width:InterpolationMasses 365 1.3785306 insert K_1+width:InterpolationMasses 366 1.3858776 insert K_1+width:InterpolationMasses 367 1.3932245 insert K_1+width:InterpolationMasses 368 1.4005714 insert K_1+width:InterpolationMasses 369 1.4079184 insert K_1+width:InterpolationMasses 370 1.4152653 insert K_1+width:InterpolationMasses 371 1.4226122 insert K_1+width:InterpolationMasses 372 1.4299592 insert K_1+width:InterpolationMasses 373 1.4373061 insert K_1+width:InterpolationMasses 374 1.4446531 insert K_1+width:InterpolationMasses 375 1.452 insert K_1+width:InterpolationMasses 376 1.4593469 insert K_1+width:InterpolationMasses 377 1.4666939 insert K_1+width:InterpolationWidths 0 0.0011961885 insert K_1+width:InterpolationWidths 1 0.0013110239 insert K_1+width:InterpolationWidths 2 0.0014238265 insert K_1+width:InterpolationWidths 3 0.0015348492 insert K_1+width:InterpolationWidths 4 0.0016443297 insert K_1+width:InterpolationWidths 5 0.0017524829 insert K_1+width:InterpolationWidths 6 0.0018594995 insert K_1+width:InterpolationWidths 7 0.0019655471 insert K_1+width:InterpolationWidths 8 0.0020707729 insert K_1+width:InterpolationWidths 9 0.0021753063 insert K_1+width:InterpolationWidths 10 0.0022792612 insert K_1+width:InterpolationWidths 11 0.0023827224 insert K_1+width:InterpolationWidths 12 0.0024858095 insert K_1+width:InterpolationWidths 13 0.002588588 insert K_1+width:InterpolationWidths 14 0.0026911292 insert K_1+width:InterpolationWidths 15 0.0027934973 insert K_1+width:InterpolationWidths 16 0.0028957506 insert K_1+width:InterpolationWidths 17 0.0029979415 insert K_1+width:InterpolationWidths 18 0.003100118 insert K_1+width:InterpolationWidths 19 0.0032023242 insert K_1+width:InterpolationWidths 20 0.0033046003 insert K_1+width:InterpolationWidths 21 0.0034069834 insert K_1+width:InterpolationWidths 22 0.003509508 insert K_1+width:InterpolationWidths 23 0.0036122059 insert K_1+width:InterpolationWidths 24 0.0037151069 insert K_1+width:InterpolationWidths 25 0.0038182387 insert K_1+width:InterpolationWidths 26 0.0039216272 insert K_1+width:InterpolationWidths 27 0.004025297 insert K_1+width:InterpolationWidths 28 0.0041292711 insert K_1+width:InterpolationWidths 29 0.0042335712 insert K_1+width:InterpolationWidths 30 0.0043382178 insert K_1+width:InterpolationWidths 31 0.0044432305 insert K_1+width:InterpolationWidths 32 0.0045486279 insert K_1+width:InterpolationWidths 33 0.0046544278 insert K_1+width:InterpolationWidths 34 0.0047606469 insert K_1+width:InterpolationWidths 35 0.0048673016 insert K_1+width:InterpolationWidths 36 0.0049744074 insert K_1+width:InterpolationWidths 37 0.0050819791 insert K_1+width:InterpolationWidths 38 0.0051900311 insert K_1+width:InterpolationWidths 39 0.0052985774 insert K_1+width:InterpolationWidths 40 0.0054076311 insert K_1+width:InterpolationWidths 41 0.0055172053 insert K_1+width:InterpolationWidths 42 0.0056273124 insert K_1+width:InterpolationWidths 43 0.0057379645 insert K_1+width:InterpolationWidths 44 0.0058491734 insert K_1+width:InterpolationWidths 45 0.0059609506 insert K_1+width:InterpolationWidths 46 0.0060733071 insert K_1+width:InterpolationWidths 47 0.0061862537 insert K_1+width:InterpolationWidths 48 0.0062998011 insert K_1+width:InterpolationWidths 49 0.0064139595 insert K_1+width:InterpolationWidths 50 0.0065287389 insert K_1+width:InterpolationWidths 51 0.0066441492 insert K_1+width:InterpolationWidths 52 0.0067602001 insert K_1+width:InterpolationWidths 53 0.0068769008 insert K_1+width:InterpolationWidths 54 0.0014942792 insert K_1+width:InterpolationWidths 55 0.0016125939 insert K_1+width:InterpolationWidths 56 0.0017374637 insert K_1+width:InterpolationWidths 57 0.0018691246 insert K_1+width:InterpolationWidths 58 0.0020078192 insert K_1+width:InterpolationWidths 59 0.0021537974 insert K_1+width:InterpolationWidths 60 0.0023073164 insert K_1+width:InterpolationWidths 61 0.0024686415 insert K_1+width:InterpolationWidths 62 0.0026380459 insert K_1+width:InterpolationWidths 63 0.0028158118 insert K_1+width:InterpolationWidths 64 0.0030022306 insert K_1+width:InterpolationWidths 65 0.003197603 insert K_1+width:InterpolationWidths 66 0.0034022397 insert K_1+width:InterpolationWidths 67 0.0036164635 insert K_1+width:InterpolationWidths 68 0.0038406071 insert K_1+width:InterpolationWidths 69 0.0040750155 insert K_1+width:InterpolationWidths 70 0.0043200464 insert K_1+width:InterpolationWidths 71 0.0045760706 insert K_1+width:InterpolationWidths 72 0.0048434732 insert K_1+width:InterpolationWidths 73 0.0051226538 insert K_1+width:InterpolationWidths 74 0.0054140281 insert K_1+width:InterpolationWidths 75 0.0057180279 insert K_1+width:InterpolationWidths 76 0.0060351028 insert K_1+width:InterpolationWidths 77 0.0063657209 insert K_1+width:InterpolationWidths 78 0.0067103699 insert K_1+width:InterpolationWidths 79 0.0070695585 insert K_1+width:InterpolationWidths 80 0.007443817 insert K_1+width:InterpolationWidths 81 0.0078336995 insert K_1+width:InterpolationWidths 82 0.0082397848 insert K_1+width:InterpolationWidths 83 0.0086626778 insert K_1+width:InterpolationWidths 84 0.0091030113 insert K_1+width:InterpolationWidths 85 0.0095614479 insert K_1+width:InterpolationWidths 86 0.010038681 insert K_1+width:InterpolationWidths 87 0.010535439 insert K_1+width:InterpolationWidths 88 0.011052483 insert K_1+width:InterpolationWidths 89 0.011590615 insert K_1+width:InterpolationWidths 90 0.012150672 insert K_1+width:InterpolationWidths 91 0.012733539 insert K_1+width:InterpolationWidths 92 0.013340142 insert K_1+width:InterpolationWidths 93 0.013971454 insert K_1+width:InterpolationWidths 94 0.014628502 insert K_1+width:InterpolationWidths 95 0.015312362 insert K_1+width:InterpolationWidths 96 0.016024168 insert K_1+width:InterpolationWidths 97 0.016765112 insert K_1+width:InterpolationWidths 98 0.017536449 insert K_1+width:InterpolationWidths 99 0.018339499 insert K_1+width:InterpolationWidths 100 0.019175647 insert K_1+width:InterpolationWidths 101 0.020046352 insert K_1+width:InterpolationWidths 102 0.020953144 insert K_1+width:InterpolationWidths 103 0.021897627 insert K_1+width:InterpolationWidths 104 0.022881483 insert K_1+width:InterpolationWidths 105 0.023906469 insert K_1+width:InterpolationWidths 106 0.024974421 insert K_1+width:InterpolationWidths 107 0.026087249 insert K_1+width:InterpolationWidths 108 0.0029277412 insert K_1+width:InterpolationWidths 109 0.0031616755 insert K_1+width:InterpolationWidths 110 0.0034086493 insert K_1+width:InterpolationWidths 111 0.0036691317 insert K_1+width:InterpolationWidths 112 0.0039436052 insert K_1+width:InterpolationWidths 113 0.0042325662 insert K_1+width:InterpolationWidths 114 0.0045365257 insert K_1+width:InterpolationWidths 115 0.0048560103 insert K_1+width:InterpolationWidths 116 0.0051915629 insert K_1+width:InterpolationWidths 117 0.0055437434 insert K_1+width:InterpolationWidths 118 0.00591313 insert K_1+width:InterpolationWidths 119 0.0063003195 insert K_1+width:InterpolationWidths 120 0.0067059291 insert K_1+width:InterpolationWidths 121 0.0071305969 insert K_1+width:InterpolationWidths 122 0.0075749833 insert K_1+width:InterpolationWidths 123 0.008039772 insert K_1+width:InterpolationWidths 124 0.0085256717 insert K_1+width:InterpolationWidths 125 0.0090334171 insert K_1+width:InterpolationWidths 126 0.0095637704 insert K_1+width:InterpolationWidths 127 0.010117522 insert K_1+width:InterpolationWidths 128 0.010695496 insert K_1+width:InterpolationWidths 129 0.011298547 insert K_1+width:InterpolationWidths 130 0.011927563 insert K_1+width:InterpolationWidths 131 0.01258347 insert K_1+width:InterpolationWidths 132 0.013267233 insert K_1+width:InterpolationWidths 133 0.013979856 insert K_1+width:InterpolationWidths 134 0.014722388 insert K_1+width:InterpolationWidths 135 0.015495924 insert K_1+width:InterpolationWidths 136 0.016301606 insert K_1+width:InterpolationWidths 137 0.017140628 insert K_1+width:InterpolationWidths 138 0.01801424 insert K_1+width:InterpolationWidths 139 0.018923749 insert K_1+width:InterpolationWidths 140 0.019870525 insert K_1+width:InterpolationWidths 141 0.020856 insert K_1+width:InterpolationWidths 142 0.02188168 insert K_1+width:InterpolationWidths 143 0.022949141 insert K_1+width:InterpolationWidths 144 0.02406004 insert K_1+width:InterpolationWidths 145 0.025216114 insert K_1+width:InterpolationWidths 146 0.026419191 insert K_1+width:InterpolationWidths 147 0.027671191 insert K_1+width:InterpolationWidths 148 0.028974131 insert K_1+width:InterpolationWidths 149 0.030330135 insert K_1+width:InterpolationWidths 150 0.031741437 insert K_1+width:InterpolationWidths 151 0.033210386 insert K_1+width:InterpolationWidths 152 0.034739453 insert K_1+width:InterpolationWidths 153 0.03633124 insert K_1+width:InterpolationWidths 154 0.037988481 insert K_1+width:InterpolationWidths 155 0.039714051 insert K_1+width:InterpolationWidths 156 0.041510969 insert K_1+width:InterpolationWidths 157 0.043382405 insert K_1+width:InterpolationWidths 158 0.045331681 insert K_1+width:InterpolationWidths 159 0.047362276 insert K_1+width:InterpolationWidths 160 0.049477825 insert K_1+width:InterpolationWidths 161 0.051682118 insert K_1+width:InterpolationWidths 162 0.0022280617 insert K_1+width:InterpolationWidths 163 0.0024758952 insert K_1+width:InterpolationWidths 164 0.0027186007 insert K_1+width:InterpolationWidths 165 0.002956709 insert K_1+width:InterpolationWidths 166 0.0031907811 insert K_1+width:InterpolationWidths 167 0.0034213486 insert K_1+width:InterpolationWidths 168 0.0036488922 insert K_1+width:InterpolationWidths 169 0.0038738382 insert K_1+width:InterpolationWidths 170 0.0040965611 insert K_1+width:InterpolationWidths 171 0.0043173893 insert K_1+width:InterpolationWidths 172 0.0045366107 insert K_1+width:InterpolationWidths 173 0.0047544786 insert K_1+width:InterpolationWidths 174 0.0049711833 insert K_1+width:InterpolationWidths 175 0.005186985 insert K_1+width:InterpolationWidths 176 0.0054020307 insert K_1+width:InterpolationWidths 177 0.0056164776 insert K_1+width:InterpolationWidths 178 0.0058304674 insert K_1+width:InterpolationWidths 179 0.0060441277 insert K_1+width:InterpolationWidths 180 0.006257574 insert K_1+width:InterpolationWidths 181 0.0064709116 insert K_1+width:InterpolationWidths 182 0.0066842366 insert K_1+width:InterpolationWidths 183 0.0068976369 insert K_1+width:InterpolationWidths 184 0.0071111937 insert K_1+width:InterpolationWidths 185 0.0073249819 insert K_1+width:InterpolationWidths 186 0.0075390709 insert K_1+width:InterpolationWidths 187 0.0077535251 insert K_1+width:InterpolationWidths 188 0.0079684048 insert K_1+width:InterpolationWidths 189 0.0081837662 insert K_1+width:InterpolationWidths 190 0.0083996623 insert K_1+width:InterpolationWidths 191 0.0086161426 insert K_1+width:InterpolationWidths 192 0.008833254 insert K_1+width:InterpolationWidths 193 0.0090510409 insert K_1+width:InterpolationWidths 194 0.0092695452 insert K_1+width:InterpolationWidths 195 0.0094888069 insert K_1+width:InterpolationWidths 196 0.009708864 insert K_1+width:InterpolationWidths 197 0.0099297526 insert K_1+width:InterpolationWidths 198 0.010151507 insert K_1+width:InterpolationWidths 199 0.010374162 insert K_1+width:InterpolationWidths 200 0.010597747 insert K_1+width:InterpolationWidths 201 0.010822294 insert K_1+width:InterpolationWidths 202 0.011047833 insert K_1+width:InterpolationWidths 203 0.011274391 insert K_1+width:InterpolationWidths 204 0.011501996 insert K_1+width:InterpolationWidths 205 0.011730675 insert K_1+width:InterpolationWidths 206 0.011960453 insert K_1+width:InterpolationWidths 207 0.012191355 insert K_1+width:InterpolationWidths 208 0.012423405 insert K_1+width:InterpolationWidths 209 0.012656627 insert K_1+width:InterpolationWidths 210 0.012891043 insert K_1+width:InterpolationWidths 211 0.013126676 insert K_1+width:InterpolationWidths 212 0.013363548 insert K_1+width:InterpolationWidths 213 0.013601679 insert K_1+width:InterpolationWidths 214 0.013841091 insert K_1+width:InterpolationWidths 215 0.014081802 insert K_1+width:InterpolationWidths 216 0 insert K_1+width:InterpolationWidths 217 0 insert K_1+width:InterpolationWidths 218 0 insert K_1+width:InterpolationWidths 219 4.4155919e-06 insert K_1+width:InterpolationWidths 220 1.3852566e-05 insert K_1+width:InterpolationWidths 221 2.841094e-05 insert K_1+width:InterpolationWidths 222 4.9192434e-05 insert K_1+width:InterpolationWidths 223 7.796665e-05 insert K_1+width:InterpolationWidths 224 0.00011735258 insert K_1+width:InterpolationWidths 225 0.00017124868 insert K_1+width:InterpolationWidths 226 0.00024556543 insert K_1+width:InterpolationWidths 227 0.0003495782 insert K_1+width:InterpolationWidths 228 0.00049850404 insert K_1+width:InterpolationWidths 229 0.00071916708 insert K_1+width:InterpolationWidths 230 0.0010624834 insert K_1+width:InterpolationWidths 231 0.0016384739 insert K_1+width:InterpolationWidths 232 0.0027311717 insert K_1+width:InterpolationWidths 233 0.0053182723 insert K_1+width:InterpolationWidths 234 0.013279302 insert K_1+width:InterpolationWidths 235 0.026701504 insert K_1+width:InterpolationWidths 236 0.038385843 insert K_1+width:InterpolationWidths 237 0.048239829 insert K_1+width:InterpolationWidths 238 0.056915194 insert K_1+width:InterpolationWidths 239 0.0647892 insert K_1+width:InterpolationWidths 240 0.072083791 insert K_1+width:InterpolationWidths 241 0.078938586 insert K_1+width:InterpolationWidths 242 0.085450167 insert K_1+width:InterpolationWidths 243 0.091685631 insert K_1+width:InterpolationWidths 244 0.097694859 insert K_1+width:InterpolationWidths 245 0.10351633 insert K_1+width:InterpolationWidths 246 0.10917995 insert K_1+width:InterpolationWidths 247 0.11471001 insert K_1+width:InterpolationWidths 248 0.12012535 insert K_1+width:InterpolationWidths 249 0.1254428 insert K_1+width:InterpolationWidths 250 0.13067438 insert K_1+width:InterpolationWidths 251 0.13572959 insert K_1+width:InterpolationWidths 252 0.14064901 insert K_1+width:InterpolationWidths 253 0.1454653 insert K_1+width:InterpolationWidths 254 0.15019622 insert K_1+width:InterpolationWidths 255 0.15485377 insert K_1+width:InterpolationWidths 256 0.15944727 insert K_1+width:InterpolationWidths 257 0.16398429 insert K_1+width:InterpolationWidths 258 0.16847122 insert K_1+width:InterpolationWidths 259 0.17291351 insert K_1+width:InterpolationWidths 260 0.17731591 insert K_1+width:InterpolationWidths 261 0.1816826 insert K_1+width:InterpolationWidths 262 0.18601728 insert K_1+width:InterpolationWidths 263 0.19032326 insert K_1+width:InterpolationWidths 264 0.1946035 insert K_1+width:InterpolationWidths 265 0.19886071 insert K_1+width:InterpolationWidths 266 0.20309733 insert K_1+width:InterpolationWidths 267 0.20731559 insert K_1+width:InterpolationWidths 268 0.21151752 insert K_1+width:InterpolationWidths 269 0.21570501 insert K_1+width:InterpolationWidths 270 0.00038278183 insert K_1+width:InterpolationWidths 271 0.00044229313 insert K_1+width:InterpolationWidths 272 0.00051051699 insert K_1+width:InterpolationWidths 273 0.00058875259 insert K_1+width:InterpolationWidths 274 0.00067851044 insert K_1+width:InterpolationWidths 275 0.00078155068 insert K_1+width:InterpolationWidths 276 0.00089992901 insert K_1+width:InterpolationWidths 277 0.0010360513 insert K_1+width:InterpolationWidths 278 0.0011927389 insert K_1+width:InterpolationWidths 279 0.0013733054 insert K_1+width:InterpolationWidths 280 0.001581647 insert K_1+width:InterpolationWidths 281 0.0018223471 insert K_1+width:InterpolationWidths 282 0.0021007939 insert K_1+width:InterpolationWidths 283 0.0024233097 insert K_1+width:InterpolationWidths 284 0.0027972831 insert K_1+width:InterpolationWidths 285 0.0032312923 insert K_1+width:InterpolationWidths 286 0.0037351945 insert K_1+width:InterpolationWidths 287 0.004320144 insert K_1+width:InterpolationWidths 288 0.004998484 insert K_1+width:InterpolationWidths 289 0.0057834416 insert K_1+width:InterpolationWidths 290 0.0066885525 insert K_1+width:InterpolationWidths 291 0.0077267629 insert K_1+width:InterpolationWidths 292 0.0089092277 insert K_1+width:InterpolationWidths 293 0.010243942 insert K_1+width:InterpolationWidths 294 0.011734476 insert K_1+width:InterpolationWidths 295 0.013379168 insert K_1+width:InterpolationWidths 296 0.015171062 insert K_1+width:InterpolationWidths 297 0.017098665 insert K_1+width:InterpolationWidths 298 0.019147324 insert K_1+width:InterpolationWidths 299 0.021300845 insert K_1+width:InterpolationWidths 300 0.023542989 insert K_1+width:InterpolationWidths 301 0.025858575 insert K_1+width:InterpolationWidths 302 0.028234149 insert K_1+width:InterpolationWidths 303 0.030658266 insert K_1+width:InterpolationWidths 304 0.033121487 insert K_1+width:InterpolationWidths 305 0.035616217 insert K_1+width:InterpolationWidths 306 0.038136467 insert K_1+width:InterpolationWidths 307 0.040677592 insert K_1+width:InterpolationWidths 308 0.04323605 insert K_1+width:InterpolationWidths 309 0.045809184 insert K_1+width:InterpolationWidths 310 0.048395039 insert K_1+width:InterpolationWidths 311 0.050992213 insert K_1+width:InterpolationWidths 312 0.053599735 insert K_1+width:InterpolationWidths 313 0.056216971 insert K_1+width:InterpolationWidths 314 0.058843546 insert K_1+width:InterpolationWidths 315 0.061479287 insert K_1+width:InterpolationWidths 316 0.064124173 insert K_1+width:InterpolationWidths 317 0.066778301 insert K_1+width:InterpolationWidths 318 0.069441857 insert K_1+width:InterpolationWidths 319 0.072115093 insert K_1+width:InterpolationWidths 320 0.074798311 insert K_1+width:InterpolationWidths 321 0.077491849 insert K_1+width:InterpolationWidths 322 0.08019607 insert K_1+width:InterpolationWidths 323 0.082911354 insert K_1+width:InterpolationWidths 324 0.00077258886 insert K_1+width:InterpolationWidths 325 0.00089262279 insert K_1+width:InterpolationWidths 326 0.0010301329 insert K_1+width:InterpolationWidths 327 0.0011877013 insert K_1+width:InterpolationWidths 328 0.0013683253 insert K_1+width:InterpolationWidths 329 0.0015754926 insert K_1+width:InterpolationWidths 330 0.0018132704 insert K_1+width:InterpolationWidths 331 0.0020864124 insert K_1+width:InterpolationWidths 332 0.0024004856 insert K_1+width:InterpolationWidths 333 0.0027620217 insert K_1+width:InterpolationWidths 334 0.0031786946 insert K_1+width:InterpolationWidths 335 0.0036595282 insert K_1+width:InterpolationWidths 336 0.0042151336 insert K_1+width:InterpolationWidths 337 0.0048579738 insert K_1+width:InterpolationWidths 338 0.0056026462 insert K_1+width:InterpolationWidths 339 0.0064661625 insert K_1+width:InterpolationWidths 340 0.0074681868 insert K_1+width:InterpolationWidths 341 0.00863117 insert K_1+width:InterpolationWidths 342 0.009980282 insert K_1+width:InterpolationWidths 343 0.011543008 insert K_1+width:InterpolationWidths 344 0.01334825 insert K_1+width:InterpolationWidths 345 0.015424786 insert K_1+width:InterpolationWidths 346 0.017799033 insert K_1+width:InterpolationWidths 347 0.020492252 insert K_1+width:InterpolationWidths 348 0.023517621 insert K_1+width:InterpolationWidths 349 0.026877875 insert K_1+width:InterpolationWidths 350 0.03056423 insert K_1+width:InterpolationWidths 351 0.034557052 insert K_1+width:InterpolationWidths 352 0.038828169 insert K_1+width:InterpolationWidths 353 0.043344162 insert K_1+width:InterpolationWidths 354 0.048069818 insert K_1+width:InterpolationWidths 355 0.052970994 insert K_1+width:InterpolationWidths 356 0.058016589 insert K_1+width:InterpolationWidths 357 0.063179568 insert K_1+width:InterpolationWidths 358 0.06843727 insert K_1+width:InterpolationWidths 359 0.073771226 insert K_1+width:InterpolationWidths 360 0.07916671 insert K_1+width:InterpolationWidths 361 0.084612202 insert K_1+width:InterpolationWidths 362 0.090098836 insert K_1+width:InterpolationWidths 363 0.095619895 insert K_1+width:InterpolationWidths 364 0.10117038 insert K_1+width:InterpolationWidths 365 0.10674667 insert K_1+width:InterpolationWidths 366 0.11234617 insert K_1+width:InterpolationWidths 367 0.11796715 insert K_1+width:InterpolationWidths 368 0.12360852 insert K_1+width:InterpolationWidths 369 0.12926968 insert K_1+width:InterpolationWidths 370 0.13495042 insert K_1+width:InterpolationWidths 371 0.1406508 insert K_1+width:InterpolationWidths 372 0.14637115 insert K_1+width:InterpolationWidths 373 0.15211191 insert K_1+width:InterpolationWidths 374 0.1578737 insert K_1+width:InterpolationWidths 375 0.16365719 insert K_1+width:InterpolationWidths 376 0.16946315 insert K_1+width:InterpolationWidths 377 0.17529237 insert K_1+width:NumberofEntries 0 54 insert K_1+width:NumberofEntries 1 108 insert K_1+width:NumberofEntries 2 162 insert K_1+width:NumberofEntries 3 216 insert K_1+width:NumberofEntries 4 270 insert K_1+width:NumberofEntries 5 324 insert K_1+width:NumberofEntries 6 378 newdef /Herwig/Particles/K_1+:Width_generator K_1+width newdef /Herwig/Particles/K_1-:Width_generator K_1+width # create Herwig::GenericWidthGenerator K_10width newdef K_10width:Particle /Herwig/Particles/K_10 newdef K_10width:Prefactor 0.999991 newdef K_10width:BRNormalize 0 newdef K_10width:BRMinimum 0.01 newdef K_10width:Points 50 newdef K_10width:InterpolationOrder 1 insert K_10width:MEtype 0 2 insert K_10width:MEtype 1 2 insert K_10width:MEtype 2 2 insert K_10width:MEtype 3 2 insert K_10width:MEtype 4 2 insert K_10width:MEtype 5 1 insert K_10width:MEtype 6 2 insert K_10width:MEtype 7 2 insert K_10width:MEcode 0 0 insert K_10width:MEcode 1 0 insert K_10width:MEcode 2 0 insert K_10width:MEcode 3 0 insert K_10width:MEcode 4 0 insert K_10width:MEcode 5 4 insert K_10width:MEcode 6 0 insert K_10width:MEcode 7 0 insert K_10width:MEcoupling 0 1 insert K_10width:MEcoupling 1 1 insert K_10width:MEcoupling 2 1 insert K_10width:MEcoupling 3 1 insert K_10width:MEcoupling 4 1 insert K_10width:MEcoupling 5 0.151368 insert K_10width:MEcoupling 6 1 insert K_10width:MEcoupling 7 1 insert K_10width:ModeOn 0 1 insert K_10width:ModeOn 1 1 insert K_10width:ModeOn 2 1 insert K_10width:ModeOn 3 1 insert K_10width:ModeOn 4 1 insert K_10width:ModeOn 5 0 insert K_10width:ModeOn 6 1 insert K_10width:ModeOn 7 1 insert K_10width:MinimumMasses 0 0.78123 insert K_10width:MinimumMasses 1 0.78357 insert K_10width:MinimumMasses 2 0.778978 insert K_10width:MinimumMasses 3 0.780978 insert K_10width:MinimumMasses 4 0.869177 insert K_10width:MinimumMasses 5 0.497648 insert K_10width:MinimumMasses 6 1.1954 insert K_10width:MinimumMasses 7 0.873148 insert K_10width:MEmass1 0 0.89166 insert K_10width:MEmass1 1 1.414 insert K_10width:MEmass1 2 1.414 insert K_10width:MEmass1 3 0.896 insert K_10width:MEmass1 4 0.7755 insert K_10width:MEmass1 5 0 insert K_10width:MEmass1 6 0.78265 insert K_10width:MEmass1 7 0.7755 insert K_10width:MEmass2 0 0.13957 insert K_10width:MEmass2 1 0.13957 insert K_10width:MEmass2 2 0.134978 insert K_10width:MEmass2 3 0.134978 insert K_10width:MEmass2 4 0.493677 insert K_10width:MEmass2 5 0.497648 insert K_10width:MEmass2 6 0.497648 insert K_10width:MEmass2 7 0.497648 insert K_10width:DecayModes 0 K_10->K*+,pi-; insert K_10width:DecayModes 1 K_10->K*_0+,pi-; insert K_10width:DecayModes 2 K_10->K*_00,pi0; insert K_10width:DecayModes 3 K_10->K*0,pi0; insert K_10width:DecayModes 4 K_10->K+,rho-; insert K_10width:DecayModes 5 K_10->K0,gamma; insert K_10width:DecayModes 6 K_10->K0,omega; insert K_10width:DecayModes 7 K_10->K0,rho0; insert K_10width:InterpolationMasses 0 1.0773061 insert K_10width:InterpolationMasses 1 1.0846531 insert K_10width:InterpolationMasses 2 1.092 insert K_10width:InterpolationMasses 3 1.0993469 insert K_10width:InterpolationMasses 4 1.1066939 insert K_10width:InterpolationMasses 5 1.1140408 insert K_10width:InterpolationMasses 6 1.1213878 insert K_10width:InterpolationMasses 7 1.1287347 insert K_10width:InterpolationMasses 8 1.1360816 insert K_10width:InterpolationMasses 9 1.1434286 insert K_10width:InterpolationMasses 10 1.1507755 insert K_10width:InterpolationMasses 11 1.1581224 insert K_10width:InterpolationMasses 12 1.1654694 insert K_10width:InterpolationMasses 13 1.1728163 insert K_10width:InterpolationMasses 14 1.1801633 insert K_10width:InterpolationMasses 15 1.1875102 insert K_10width:InterpolationMasses 16 1.1948571 insert K_10width:InterpolationMasses 17 1.2022041 insert K_10width:InterpolationMasses 18 1.209551 insert K_10width:InterpolationMasses 19 1.216898 insert K_10width:InterpolationMasses 20 1.2242449 insert K_10width:InterpolationMasses 21 1.2315918 insert K_10width:InterpolationMasses 22 1.2389388 insert K_10width:InterpolationMasses 23 1.2462857 insert K_10width:InterpolationMasses 24 1.2536327 insert K_10width:InterpolationMasses 25 1.2609796 insert K_10width:InterpolationMasses 26 1.2683265 insert K_10width:InterpolationMasses 27 1.2756735 insert K_10width:InterpolationMasses 28 1.2830204 insert K_10width:InterpolationMasses 29 1.2903673 insert K_10width:InterpolationMasses 30 1.2977143 insert K_10width:InterpolationMasses 31 1.3050612 insert K_10width:InterpolationMasses 32 1.3124082 insert K_10width:InterpolationMasses 33 1.3197551 insert K_10width:InterpolationMasses 34 1.327102 insert K_10width:InterpolationMasses 35 1.334449 insert K_10width:InterpolationMasses 36 1.3417959 insert K_10width:InterpolationMasses 37 1.3491429 insert K_10width:InterpolationMasses 38 1.3564898 insert K_10width:InterpolationMasses 39 1.3638367 insert K_10width:InterpolationMasses 40 1.3711837 insert K_10width:InterpolationMasses 41 1.3785306 insert K_10width:InterpolationMasses 42 1.3858776 insert K_10width:InterpolationMasses 43 1.3932245 insert K_10width:InterpolationMasses 44 1.4005714 insert K_10width:InterpolationMasses 45 1.4079184 insert K_10width:InterpolationMasses 46 1.4152653 insert K_10width:InterpolationMasses 47 1.4226122 insert K_10width:InterpolationMasses 48 1.4299592 insert K_10width:InterpolationMasses 49 1.4373061 insert K_10width:InterpolationMasses 50 1.4446531 insert K_10width:InterpolationMasses 51 1.452 insert K_10width:InterpolationMasses 52 1.4593469 insert K_10width:InterpolationMasses 53 1.4666939 insert K_10width:InterpolationMasses 54 1.0773061 insert K_10width:InterpolationMasses 55 1.0846531 insert K_10width:InterpolationMasses 56 1.092 insert K_10width:InterpolationMasses 57 1.0993469 insert K_10width:InterpolationMasses 58 1.1066939 insert K_10width:InterpolationMasses 59 1.1140408 insert K_10width:InterpolationMasses 60 1.1213878 insert K_10width:InterpolationMasses 61 1.1287347 insert K_10width:InterpolationMasses 62 1.1360816 insert K_10width:InterpolationMasses 63 1.1434286 insert K_10width:InterpolationMasses 64 1.1507755 insert K_10width:InterpolationMasses 65 1.1581224 insert K_10width:InterpolationMasses 66 1.1654694 insert K_10width:InterpolationMasses 67 1.1728163 insert K_10width:InterpolationMasses 68 1.1801633 insert K_10width:InterpolationMasses 69 1.1875102 insert K_10width:InterpolationMasses 70 1.1948571 insert K_10width:InterpolationMasses 71 1.2022041 insert K_10width:InterpolationMasses 72 1.209551 insert K_10width:InterpolationMasses 73 1.216898 insert K_10width:InterpolationMasses 74 1.2242449 insert K_10width:InterpolationMasses 75 1.2315918 insert K_10width:InterpolationMasses 76 1.2389388 insert K_10width:InterpolationMasses 77 1.2462857 insert K_10width:InterpolationMasses 78 1.2536327 insert K_10width:InterpolationMasses 79 1.2609796 insert K_10width:InterpolationMasses 80 1.2683265 insert K_10width:InterpolationMasses 81 1.2756735 insert K_10width:InterpolationMasses 82 1.2830204 insert K_10width:InterpolationMasses 83 1.2903673 insert K_10width:InterpolationMasses 84 1.2977143 insert K_10width:InterpolationMasses 85 1.3050612 insert K_10width:InterpolationMasses 86 1.3124082 insert K_10width:InterpolationMasses 87 1.3197551 insert K_10width:InterpolationMasses 88 1.327102 insert K_10width:InterpolationMasses 89 1.334449 insert K_10width:InterpolationMasses 90 1.3417959 insert K_10width:InterpolationMasses 91 1.3491429 insert K_10width:InterpolationMasses 92 1.3564898 insert K_10width:InterpolationMasses 93 1.3638367 insert K_10width:InterpolationMasses 94 1.3711837 insert K_10width:InterpolationMasses 95 1.3785306 insert K_10width:InterpolationMasses 96 1.3858776 insert K_10width:InterpolationMasses 97 1.3932245 insert K_10width:InterpolationMasses 98 1.4005714 insert K_10width:InterpolationMasses 99 1.4079184 insert K_10width:InterpolationMasses 100 1.4152653 insert K_10width:InterpolationMasses 101 1.4226122 insert K_10width:InterpolationMasses 102 1.4299592 insert K_10width:InterpolationMasses 103 1.4373061 insert K_10width:InterpolationMasses 104 1.4446531 insert K_10width:InterpolationMasses 105 1.452 insert K_10width:InterpolationMasses 106 1.4593469 insert K_10width:InterpolationMasses 107 1.4666939 insert K_10width:InterpolationMasses 108 1.0773061 insert K_10width:InterpolationMasses 109 1.0846531 insert K_10width:InterpolationMasses 110 1.092 insert K_10width:InterpolationMasses 111 1.0993469 insert K_10width:InterpolationMasses 112 1.1066939 insert K_10width:InterpolationMasses 113 1.1140408 insert K_10width:InterpolationMasses 114 1.1213878 insert K_10width:InterpolationMasses 115 1.1287347 insert K_10width:InterpolationMasses 116 1.1360816 insert K_10width:InterpolationMasses 117 1.1434286 insert K_10width:InterpolationMasses 118 1.1507755 insert K_10width:InterpolationMasses 119 1.1581224 insert K_10width:InterpolationMasses 120 1.1654694 insert K_10width:InterpolationMasses 121 1.1728163 insert K_10width:InterpolationMasses 122 1.1801633 insert K_10width:InterpolationMasses 123 1.1875102 insert K_10width:InterpolationMasses 124 1.1948571 insert K_10width:InterpolationMasses 125 1.2022041 insert K_10width:InterpolationMasses 126 1.209551 insert K_10width:InterpolationMasses 127 1.216898 insert K_10width:InterpolationMasses 128 1.2242449 insert K_10width:InterpolationMasses 129 1.2315918 insert K_10width:InterpolationMasses 130 1.2389388 insert K_10width:InterpolationMasses 131 1.2462857 insert K_10width:InterpolationMasses 132 1.2536327 insert K_10width:InterpolationMasses 133 1.2609796 insert K_10width:InterpolationMasses 134 1.2683265 insert K_10width:InterpolationMasses 135 1.2756735 insert K_10width:InterpolationMasses 136 1.2830204 insert K_10width:InterpolationMasses 137 1.2903673 insert K_10width:InterpolationMasses 138 1.2977143 insert K_10width:InterpolationMasses 139 1.3050612 insert K_10width:InterpolationMasses 140 1.3124082 insert K_10width:InterpolationMasses 141 1.3197551 insert K_10width:InterpolationMasses 142 1.327102 insert K_10width:InterpolationMasses 143 1.334449 insert K_10width:InterpolationMasses 144 1.3417959 insert K_10width:InterpolationMasses 145 1.3491429 insert K_10width:InterpolationMasses 146 1.3564898 insert K_10width:InterpolationMasses 147 1.3638367 insert K_10width:InterpolationMasses 148 1.3711837 insert K_10width:InterpolationMasses 149 1.3785306 insert K_10width:InterpolationMasses 150 1.3858776 insert K_10width:InterpolationMasses 151 1.3932245 insert K_10width:InterpolationMasses 152 1.4005714 insert K_10width:InterpolationMasses 153 1.4079184 insert K_10width:InterpolationMasses 154 1.4152653 insert K_10width:InterpolationMasses 155 1.4226122 insert K_10width:InterpolationMasses 156 1.4299592 insert K_10width:InterpolationMasses 157 1.4373061 insert K_10width:InterpolationMasses 158 1.4446531 insert K_10width:InterpolationMasses 159 1.452 insert K_10width:InterpolationMasses 160 1.4593469 insert K_10width:InterpolationMasses 161 1.4666939 insert K_10width:InterpolationMasses 162 1.0773061 insert K_10width:InterpolationMasses 163 1.0846531 insert K_10width:InterpolationMasses 164 1.092 insert K_10width:InterpolationMasses 165 1.0993469 insert K_10width:InterpolationMasses 166 1.1066939 insert K_10width:InterpolationMasses 167 1.1140408 insert K_10width:InterpolationMasses 168 1.1213878 insert K_10width:InterpolationMasses 169 1.1287347 insert K_10width:InterpolationMasses 170 1.1360816 insert K_10width:InterpolationMasses 171 1.1434286 insert K_10width:InterpolationMasses 172 1.1507755 insert K_10width:InterpolationMasses 173 1.1581224 insert K_10width:InterpolationMasses 174 1.1654694 insert K_10width:InterpolationMasses 175 1.1728163 insert K_10width:InterpolationMasses 176 1.1801633 insert K_10width:InterpolationMasses 177 1.1875102 insert K_10width:InterpolationMasses 178 1.1948571 insert K_10width:InterpolationMasses 179 1.2022041 insert K_10width:InterpolationMasses 180 1.209551 insert K_10width:InterpolationMasses 181 1.216898 insert K_10width:InterpolationMasses 182 1.2242449 insert K_10width:InterpolationMasses 183 1.2315918 insert K_10width:InterpolationMasses 184 1.2389388 insert K_10width:InterpolationMasses 185 1.2462857 insert K_10width:InterpolationMasses 186 1.2536327 insert K_10width:InterpolationMasses 187 1.2609796 insert K_10width:InterpolationMasses 188 1.2683265 insert K_10width:InterpolationMasses 189 1.2756735 insert K_10width:InterpolationMasses 190 1.2830204 insert K_10width:InterpolationMasses 191 1.2903673 insert K_10width:InterpolationMasses 192 1.2977143 insert K_10width:InterpolationMasses 193 1.3050612 insert K_10width:InterpolationMasses 194 1.3124082 insert K_10width:InterpolationMasses 195 1.3197551 insert K_10width:InterpolationMasses 196 1.327102 insert K_10width:InterpolationMasses 197 1.334449 insert K_10width:InterpolationMasses 198 1.3417959 insert K_10width:InterpolationMasses 199 1.3491429 insert K_10width:InterpolationMasses 200 1.3564898 insert K_10width:InterpolationMasses 201 1.3638367 insert K_10width:InterpolationMasses 202 1.3711837 insert K_10width:InterpolationMasses 203 1.3785306 insert K_10width:InterpolationMasses 204 1.3858776 insert K_10width:InterpolationMasses 205 1.3932245 insert K_10width:InterpolationMasses 206 1.4005714 insert K_10width:InterpolationMasses 207 1.4079184 insert K_10width:InterpolationMasses 208 1.4152653 insert K_10width:InterpolationMasses 209 1.4226122 insert K_10width:InterpolationMasses 210 1.4299592 insert K_10width:InterpolationMasses 211 1.4373061 insert K_10width:InterpolationMasses 212 1.4446531 insert K_10width:InterpolationMasses 213 1.452 insert K_10width:InterpolationMasses 214 1.4593469 insert K_10width:InterpolationMasses 215 1.4666939 insert K_10width:InterpolationMasses 216 1.0773061 insert K_10width:InterpolationMasses 217 1.0846531 insert K_10width:InterpolationMasses 218 1.092 insert K_10width:InterpolationMasses 219 1.0993469 insert K_10width:InterpolationMasses 220 1.1066939 insert K_10width:InterpolationMasses 221 1.1140408 insert K_10width:InterpolationMasses 222 1.1213878 insert K_10width:InterpolationMasses 223 1.1287347 insert K_10width:InterpolationMasses 224 1.1360816 insert K_10width:InterpolationMasses 225 1.1434286 insert K_10width:InterpolationMasses 226 1.1507755 insert K_10width:InterpolationMasses 227 1.1581224 insert K_10width:InterpolationMasses 228 1.1654694 insert K_10width:InterpolationMasses 229 1.1728163 insert K_10width:InterpolationMasses 230 1.1801633 insert K_10width:InterpolationMasses 231 1.1875102 insert K_10width:InterpolationMasses 232 1.1948571 insert K_10width:InterpolationMasses 233 1.2022041 insert K_10width:InterpolationMasses 234 1.209551 insert K_10width:InterpolationMasses 235 1.216898 insert K_10width:InterpolationMasses 236 1.2242449 insert K_10width:InterpolationMasses 237 1.2315918 insert K_10width:InterpolationMasses 238 1.2389388 insert K_10width:InterpolationMasses 239 1.2462857 insert K_10width:InterpolationMasses 240 1.2536327 insert K_10width:InterpolationMasses 241 1.2609796 insert K_10width:InterpolationMasses 242 1.2683265 insert K_10width:InterpolationMasses 243 1.2756735 insert K_10width:InterpolationMasses 244 1.2830204 insert K_10width:InterpolationMasses 245 1.2903673 insert K_10width:InterpolationMasses 246 1.2977143 insert K_10width:InterpolationMasses 247 1.3050612 insert K_10width:InterpolationMasses 248 1.3124082 insert K_10width:InterpolationMasses 249 1.3197551 insert K_10width:InterpolationMasses 250 1.327102 insert K_10width:InterpolationMasses 251 1.334449 insert K_10width:InterpolationMasses 252 1.3417959 insert K_10width:InterpolationMasses 253 1.3491429 insert K_10width:InterpolationMasses 254 1.3564898 insert K_10width:InterpolationMasses 255 1.3638367 insert K_10width:InterpolationMasses 256 1.3711837 insert K_10width:InterpolationMasses 257 1.3785306 insert K_10width:InterpolationMasses 258 1.3858776 insert K_10width:InterpolationMasses 259 1.3932245 insert K_10width:InterpolationMasses 260 1.4005714 insert K_10width:InterpolationMasses 261 1.4079184 insert K_10width:InterpolationMasses 262 1.4152653 insert K_10width:InterpolationMasses 263 1.4226122 insert K_10width:InterpolationMasses 264 1.4299592 insert K_10width:InterpolationMasses 265 1.4373061 insert K_10width:InterpolationMasses 266 1.4446531 insert K_10width:InterpolationMasses 267 1.452 insert K_10width:InterpolationMasses 268 1.4593469 insert K_10width:InterpolationMasses 269 1.4666939 insert K_10width:InterpolationMasses 270 1.1849244 insert K_10width:InterpolationMasses 271 1.195398 insert K_10width:InterpolationMasses 272 1.195398 insert K_10width:InterpolationMasses 273 1.2006348 insert K_10width:InterpolationMasses 274 1.2058716 insert K_10width:InterpolationMasses 275 1.2111083 insert K_10width:InterpolationMasses 276 1.2163451 insert K_10width:InterpolationMasses 277 1.2215819 insert K_10width:InterpolationMasses 278 1.2268187 insert K_10width:InterpolationMasses 279 1.2320554 insert K_10width:InterpolationMasses 280 1.2372922 insert K_10width:InterpolationMasses 281 1.242529 insert K_10width:InterpolationMasses 282 1.2477658 insert K_10width:InterpolationMasses 283 1.2530025 insert K_10width:InterpolationMasses 284 1.2582393 insert K_10width:InterpolationMasses 285 1.2634761 insert K_10width:InterpolationMasses 286 1.2687129 insert K_10width:InterpolationMasses 287 1.2739496 insert K_10width:InterpolationMasses 288 1.2791864 insert K_10width:InterpolationMasses 289 1.2844232 insert K_10width:InterpolationMasses 290 1.28966 insert K_10width:InterpolationMasses 291 1.2948967 insert K_10width:InterpolationMasses 292 1.3001335 insert K_10width:InterpolationMasses 293 1.3053703 insert K_10width:InterpolationMasses 294 1.3106071 insert K_10width:InterpolationMasses 295 1.3158438 insert K_10width:InterpolationMasses 296 1.3210806 insert K_10width:InterpolationMasses 297 1.3263174 insert K_10width:InterpolationMasses 298 1.3315542 insert K_10width:InterpolationMasses 299 1.3367909 insert K_10width:InterpolationMasses 300 1.3420277 insert K_10width:InterpolationMasses 301 1.3472645 insert K_10width:InterpolationMasses 302 1.3525013 insert K_10width:InterpolationMasses 303 1.357738 insert K_10width:InterpolationMasses 304 1.3629748 insert K_10width:InterpolationMasses 305 1.3682116 insert K_10width:InterpolationMasses 306 1.3734484 insert K_10width:InterpolationMasses 307 1.3786851 insert K_10width:InterpolationMasses 308 1.3839219 insert K_10width:InterpolationMasses 309 1.3891587 insert K_10width:InterpolationMasses 310 1.3943955 insert K_10width:InterpolationMasses 311 1.3996322 insert K_10width:InterpolationMasses 312 1.404869 insert K_10width:InterpolationMasses 313 1.4101058 insert K_10width:InterpolationMasses 314 1.4153426 insert K_10width:InterpolationMasses 315 1.4205793 insert K_10width:InterpolationMasses 316 1.4258161 insert K_10width:InterpolationMasses 317 1.4310529 insert K_10width:InterpolationMasses 318 1.4362897 insert K_10width:InterpolationMasses 319 1.4415264 insert K_10width:InterpolationMasses 320 1.4467632 insert K_10width:InterpolationMasses 321 1.452 insert K_10width:InterpolationMasses 322 1.4572368 insert K_10width:InterpolationMasses 323 1.4624736 insert K_10width:InterpolationMasses 324 1.0773061 insert K_10width:InterpolationMasses 325 1.0846531 insert K_10width:InterpolationMasses 326 1.092 insert K_10width:InterpolationMasses 327 1.0993469 insert K_10width:InterpolationMasses 328 1.1066939 insert K_10width:InterpolationMasses 329 1.1140408 insert K_10width:InterpolationMasses 330 1.1213878 insert K_10width:InterpolationMasses 331 1.1287347 insert K_10width:InterpolationMasses 332 1.1360816 insert K_10width:InterpolationMasses 333 1.1434286 insert K_10width:InterpolationMasses 334 1.1507755 insert K_10width:InterpolationMasses 335 1.1581224 insert K_10width:InterpolationMasses 336 1.1654694 insert K_10width:InterpolationMasses 337 1.1728163 insert K_10width:InterpolationMasses 338 1.1801633 insert K_10width:InterpolationMasses 339 1.1875102 insert K_10width:InterpolationMasses 340 1.1948571 insert K_10width:InterpolationMasses 341 1.2022041 insert K_10width:InterpolationMasses 342 1.209551 insert K_10width:InterpolationMasses 343 1.216898 insert K_10width:InterpolationMasses 344 1.2242449 insert K_10width:InterpolationMasses 345 1.2315918 insert K_10width:InterpolationMasses 346 1.2389388 insert K_10width:InterpolationMasses 347 1.2462857 insert K_10width:InterpolationMasses 348 1.2536327 insert K_10width:InterpolationMasses 349 1.2609796 insert K_10width:InterpolationMasses 350 1.2683265 insert K_10width:InterpolationMasses 351 1.2756735 insert K_10width:InterpolationMasses 352 1.2830204 insert K_10width:InterpolationMasses 353 1.2903673 insert K_10width:InterpolationMasses 354 1.2977143 insert K_10width:InterpolationMasses 355 1.3050612 insert K_10width:InterpolationMasses 356 1.3124082 insert K_10width:InterpolationMasses 357 1.3197551 insert K_10width:InterpolationMasses 358 1.327102 insert K_10width:InterpolationMasses 359 1.334449 insert K_10width:InterpolationMasses 360 1.3417959 insert K_10width:InterpolationMasses 361 1.3491429 insert K_10width:InterpolationMasses 362 1.3564898 insert K_10width:InterpolationMasses 363 1.3638367 insert K_10width:InterpolationMasses 364 1.3711837 insert K_10width:InterpolationMasses 365 1.3785306 insert K_10width:InterpolationMasses 366 1.3858776 insert K_10width:InterpolationMasses 367 1.3932245 insert K_10width:InterpolationMasses 368 1.4005714 insert K_10width:InterpolationMasses 369 1.4079184 insert K_10width:InterpolationMasses 370 1.4152653 insert K_10width:InterpolationMasses 371 1.4226122 insert K_10width:InterpolationMasses 372 1.4299592 insert K_10width:InterpolationMasses 373 1.4373061 insert K_10width:InterpolationMasses 374 1.4446531 insert K_10width:InterpolationMasses 375 1.452 insert K_10width:InterpolationMasses 376 1.4593469 insert K_10width:InterpolationMasses 377 1.4666939 insert K_10width:InterpolationWidths 0 0.0022948496 insert K_10width:InterpolationWidths 1 0.0025318716 insert K_10width:InterpolationWidths 2 0.0027643387 insert K_10width:InterpolationWidths 3 0.002992772 insert K_10width:InterpolationWidths 4 0.0032176862 insert K_10width:InterpolationWidths 5 0.0034395566 insert K_10width:InterpolationWidths 6 0.0036588089 insert K_10width:InterpolationWidths 7 0.0038758188 insert K_10width:InterpolationWidths 8 0.004090917 insert K_10width:InterpolationWidths 9 0.0043043935 insert K_10width:InterpolationWidths 10 0.0045165035 insert K_10width:InterpolationWidths 11 0.0047274415 insert K_10width:InterpolationWidths 12 0.0049374647 insert K_10width:InterpolationWidths 13 0.0051467228 insert K_10width:InterpolationWidths 14 0.0053553743 insert K_10width:InterpolationWidths 15 0.0055635612 insert K_10width:InterpolationWidths 16 0.0057714114 insert K_10width:InterpolationWidths 17 0.0059790408 insert K_10width:InterpolationWidths 18 0.0061865546 insert K_10width:InterpolationWidths 19 0.0063940488 insert K_10width:InterpolationWidths 20 0.0066016113 insert K_10width:InterpolationWidths 21 0.0068093231 insert K_10width:InterpolationWidths 22 0.0070172587 insert K_10width:InterpolationWidths 23 0.0072254873 insert K_10width:InterpolationWidths 24 0.007434073 insert K_10width:InterpolationWidths 25 0.0076430757 insert K_10width:InterpolationWidths 26 0.0078525513 insert K_10width:InterpolationWidths 27 0.0080625522 insert K_10width:InterpolationWidths 28 0.0082731277 insert K_10width:InterpolationWidths 29 0.0084843242 insert K_10width:InterpolationWidths 30 0.0086961858 insert K_10width:InterpolationWidths 31 0.0089087538 insert K_10width:InterpolationWidths 32 0.009122068 insert K_10width:InterpolationWidths 33 0.0093361658 insert K_10width:InterpolationWidths 34 0.009551083 insert K_10width:InterpolationWidths 35 0.009766854 insert K_10width:InterpolationWidths 36 0.0099835114 insert K_10width:InterpolationWidths 37 0.010201087 insert K_10width:InterpolationWidths 38 0.01041961 insert K_10width:InterpolationWidths 39 0.010639111 insert K_10width:InterpolationWidths 40 0.010859617 insert K_10width:InterpolationWidths 41 0.011081155 insert K_10width:InterpolationWidths 42 0.011303751 insert K_10width:InterpolationWidths 43 0.011527431 insert K_10width:InterpolationWidths 44 0.011752219 insert K_10width:InterpolationWidths 45 0.011978139 insert K_10width:InterpolationWidths 46 0.012205215 insert K_10width:InterpolationWidths 47 0.012433468 insert K_10width:InterpolationWidths 48 0.01266292 insert K_10width:InterpolationWidths 49 0.012893594 insert K_10width:InterpolationWidths 50 0.013125509 insert K_10width:InterpolationWidths 51 0.013358686 insert K_10width:InterpolationWidths 52 0.013593145 insert K_10width:InterpolationWidths 53 0.013828906 insert K_10width:InterpolationWidths 54 0.0028926222 insert K_10width:InterpolationWidths 55 0.0031244654 insert K_10width:InterpolationWidths 56 0.003369275 insert K_10width:InterpolationWidths 57 0.0036275189 insert K_10width:InterpolationWidths 58 0.0038996783 insert K_10width:InterpolationWidths 59 0.0041862483 insert K_10width:InterpolationWidths 60 0.0044877388 insert K_10width:InterpolationWidths 61 0.004804675 insert K_10width:InterpolationWidths 62 0.0051375983 insert K_10width:InterpolationWidths 63 0.0054870673 insert K_10width:InterpolationWidths 64 0.0058536586 insert K_10width:InterpolationWidths 65 0.0062379677 insert K_10width:InterpolationWidths 66 0.00664061 insert K_10width:InterpolationWidths 67 0.0070622206 insert K_10width:InterpolationWidths 68 0.0075034606 insert K_10width:InterpolationWidths 69 0.007965011 insert K_10width:InterpolationWidths 70 0.0084475785 insert K_10width:InterpolationWidths 71 0.0089518959 insert K_10width:InterpolationWidths 72 0.0094787234 insert K_10width:InterpolationWidths 73 0.01002885 insert K_10width:InterpolationWidths 74 0.010603097 insert K_10width:InterpolationWidths 75 0.011202316 insert K_10width:InterpolationWidths 76 0.011827393 insert K_10width:InterpolationWidths 77 0.012479253 insert K_10width:InterpolationWidths 78 0.013158857 insert K_10width:InterpolationWidths 79 0.013867207 insert K_10width:InterpolationWidths 80 0.014605349 insert K_10width:InterpolationWidths 81 0.015374375 insert K_10width:InterpolationWidths 82 0.016175423 insert K_10width:InterpolationWidths 83 0.017009686 insert K_10width:InterpolationWidths 84 0.017878409 insert K_10width:InterpolationWidths 85 0.018782896 insert K_10width:InterpolationWidths 86 0.019724513 insert K_10width:InterpolationWidths 87 0.020704689 insert K_10width:InterpolationWidths 88 0.021724925 insert K_10width:InterpolationWidths 89 0.022786793 insert K_10width:InterpolationWidths 90 0.023891946 insert K_10width:InterpolationWidths 91 0.025042117 insert K_10width:InterpolationWidths 92 0.026239127 insert K_10width:InterpolationWidths 93 0.027484892 insert K_10width:InterpolationWidths 94 0.028781425 insert K_10width:InterpolationWidths 95 0.030130842 insert K_10width:InterpolationWidths 96 0.031535372 insert K_10width:InterpolationWidths 97 0.032997357 insert K_10width:InterpolationWidths 98 0.034519264 insert K_10width:InterpolationWidths 99 0.036103685 insert K_10width:InterpolationWidths 100 0.037753347 insert K_10width:InterpolationWidths 101 0.039471119 insert K_10width:InterpolationWidths 102 0.04126001 insert K_10width:InterpolationWidths 103 0.043123183 insert K_10width:InterpolationWidths 104 0.045063951 insert K_10width:InterpolationWidths 105 0.047085782 insert K_10width:InterpolationWidths 106 0.049192303 insert K_10width:InterpolationWidths 107 0.051387293 insert K_10width:InterpolationWidths 108 0.0014704838 insert K_10width:InterpolationWidths 109 0.0015865591 insert K_10width:InterpolationWidths 110 0.0017090443 insert K_10width:InterpolationWidths 111 0.0018381692 insert K_10width:InterpolationWidths 112 0.0019741706 insert K_10width:InterpolationWidths 113 0.0021172919 insert K_10width:InterpolationWidths 114 0.0022677839 insert K_10width:InterpolationWidths 115 0.0024259051 insert K_10width:InterpolationWidths 116 0.002591922 insert K_10width:InterpolationWidths 117 0.0027661097 insert K_10width:InterpolationWidths 118 0.0029487522 insert K_10width:InterpolationWidths 119 0.0031401428 insert K_10width:InterpolationWidths 120 0.0033405847 insert K_10width:InterpolationWidths 121 0.0035503919 insert K_10width:InterpolationWidths 122 0.0037698889 insert K_10width:InterpolationWidths 123 0.0039994124 insert K_10width:InterpolationWidths 124 0.0042393108 insert K_10width:InterpolationWidths 125 0.0044899458 insert K_10width:InterpolationWidths 126 0.0047516924 insert K_10width:InterpolationWidths 127 0.005024941 insert K_10width:InterpolationWidths 128 0.0053100963 insert K_10width:InterpolationWidths 129 0.0056075795 insert K_10width:InterpolationWidths 130 0.005917829 insert K_10width:InterpolationWidths 131 0.006241301 insert K_10width:InterpolationWidths 132 0.0065784711 insert K_10width:InterpolationWidths 133 0.0069298352 insert K_10width:InterpolationWidths 134 0.0072959104 insert K_10width:InterpolationWidths 135 0.007677237 insert K_10width:InterpolationWidths 136 0.0080743791 insert K_10width:InterpolationWidths 137 0.0084879266 insert K_10width:InterpolationWidths 138 0.0089184966 insert K_10width:InterpolationWidths 139 0.0093667349 insert K_10width:InterpolationWidths 140 0.0098333181 insert K_10width:InterpolationWidths 141 0.010318955 insert K_10width:InterpolationWidths 142 0.01082439 insert K_10width:InterpolationWidths 143 0.011350402 insert K_10width:InterpolationWidths 144 0.01189781 insert K_10width:InterpolationWidths 145 0.012467475 insert K_10width:InterpolationWidths 146 0.0130603 insert K_10width:InterpolationWidths 147 0.013677235 insert K_10width:InterpolationWidths 148 0.01431928 insert K_10width:InterpolationWidths 149 0.014987485 insert K_10width:InterpolationWidths 150 0.015682955 insert K_10width:InterpolationWidths 151 0.016406852 insert K_10width:InterpolationWidths 152 0.017160401 insert K_10width:InterpolationWidths 153 0.017944887 insert K_10width:InterpolationWidths 154 0.018761662 insert K_10width:InterpolationWidths 155 0.019612148 insert K_10width:InterpolationWidths 156 0.020497836 insert K_10width:InterpolationWidths 157 0.021420291 insert K_10width:InterpolationWidths 158 0.022381152 insert K_10width:InterpolationWidths 159 0.023382133 insert K_10width:InterpolationWidths 160 0.024425024 insert K_10width:InterpolationWidths 161 0.025511687 insert K_10width:InterpolationWidths 162 0.0011514886 insert K_10width:InterpolationWidths 163 0.0012698603 insert K_10width:InterpolationWidths 164 0.0013859524 insert K_10width:InterpolationWidths 165 0.0015000317 insert K_10width:InterpolationWidths 166 0.0016123588 insert K_10width:InterpolationWidths 167 0.0017231728 insert K_10width:InterpolationWidths 168 0.0018326868 insert K_10width:InterpolationWidths 169 0.0019410885 insert K_10width:InterpolationWidths 170 0.0020485424 insert K_10width:InterpolationWidths 171 0.0021551929 insert K_10width:InterpolationWidths 172 0.0022611665 insert K_10width:InterpolationWidths 173 0.0023665596 insert K_10width:InterpolationWidths 174 0.0024714997 insert K_10width:InterpolationWidths 175 0.002576061 insert K_10width:InterpolationWidths 176 0.0026803216 insert K_10width:InterpolationWidths 177 0.0027843518 insert K_10width:InterpolationWidths 178 0.0028882147 insert K_10width:InterpolationWidths 179 0.0029919676 insert K_10width:InterpolationWidths 180 0.0030956624 insert K_10width:InterpolationWidths 181 0.0031993464 insert K_10width:InterpolationWidths 182 0.0033030631 insert K_10width:InterpolationWidths 183 0.0034068522 insert K_10width:InterpolationWidths 184 0.0035107507 insert K_10width:InterpolationWidths 185 0.0036147925 insert K_10width:InterpolationWidths 186 0.0037190094 insert K_10width:InterpolationWidths 187 0.0038234307 insert K_10width:InterpolationWidths 188 0.0039280842 insert K_10width:InterpolationWidths 189 0.0040329955 insert K_10width:InterpolationWidths 190 0.0041381891 insert K_10width:InterpolationWidths 191 0.0042436879 insert K_10width:InterpolationWidths 192 0.0043495134 insert K_10width:InterpolationWidths 193 0.0044556863 insert K_10width:InterpolationWidths 194 0.0045622259 insert K_10width:InterpolationWidths 195 0.0046691509 insert K_10width:InterpolationWidths 196 0.0047764789 insert K_10width:InterpolationWidths 197 0.0048842269 insert K_10width:InterpolationWidths 198 0.0049924109 insert K_10width:InterpolationWidths 199 0.0051010465 insert K_10width:InterpolationWidths 200 0.0052101487 insert K_10width:InterpolationWidths 201 0.0053197317 insert K_10width:InterpolationWidths 202 0.0054298094 insert K_10width:InterpolationWidths 203 0.0055403953 insert K_10width:InterpolationWidths 204 0.0056515021 insert K_10width:InterpolationWidths 205 0.0057631424 insert K_10width:InterpolationWidths 206 0.0058753284 insert K_10width:InterpolationWidths 207 0.0059880717 insert K_10width:InterpolationWidths 208 0.0061013839 insert K_10width:InterpolationWidths 209 0.0062152761 insert K_10width:InterpolationWidths 210 0.006329759 insert K_10width:InterpolationWidths 211 0.0064448434 insert K_10width:InterpolationWidths 212 0.0065605394 insert K_10width:InterpolationWidths 213 0.0066768571 insert K_10width:InterpolationWidths 214 0.0067938065 insert K_10width:InterpolationWidths 215 0.0069113972 insert K_10width:InterpolationWidths 216 0.0007970875 insert K_10width:InterpolationWidths 217 0.00092032983 insert K_10width:InterpolationWidths 218 0.0010615299 insert K_10width:InterpolationWidths 219 0.0012233568 insert K_10width:InterpolationWidths 220 0.001408913 insert K_10width:InterpolationWidths 221 0.0016218128 insert K_10width:InterpolationWidths 222 0.0018662761 insert K_10width:InterpolationWidths 223 0.0021472405 insert K_10width:InterpolationWidths 224 0.0024704945 insert K_10width:InterpolationWidths 225 0.0028428349 insert K_10width:InterpolationWidths 226 0.0032722518 insert K_10width:InterpolationWidths 227 0.0037681416 insert K_10width:InterpolationWidths 228 0.0043415486 insert K_10width:InterpolationWidths 229 0.005005428 insert K_10width:InterpolationWidths 230 0.0057749174 insert K_10width:InterpolationWidths 231 0.0066675882 insert K_10width:InterpolationWidths 232 0.0077036285 insert K_10width:InterpolationWidths 233 0.008905881 insert K_10width:InterpolationWidths 234 0.010299622 insert K_10width:InterpolationWidths 235 0.011911943 insert K_10width:InterpolationWidths 236 0.013770572 insert K_10width:InterpolationWidths 237 0.015902045 insert K_10width:InterpolationWidths 238 0.018329252 insert K_10width:InterpolationWidths 239 0.021068629 insert K_10width:InterpolationWidths 240 0.024127575 insert K_10width:InterpolationWidths 241 0.027502776 insert K_10width:InterpolationWidths 242 0.031180065 insert K_10width:InterpolationWidths 243 0.03513595 insert K_10width:InterpolationWidths 244 0.039340429 insert K_10width:InterpolationWidths 245 0.043760308 insert K_10width:InterpolationWidths 246 0.048362255 insert K_10width:InterpolationWidths 247 0.053115096 insert K_10width:InterpolationWidths 248 0.057991183 insert K_10width:InterpolationWidths 249 0.062966985 insert K_10width:InterpolationWidths 250 0.068023085 insert K_10width:InterpolationWidths 251 0.07314386 insert K_10width:InterpolationWidths 252 0.078316983 insert K_10width:InterpolationWidths 253 0.083532896 insert K_10width:InterpolationWidths 254 0.08878431 insert K_10width:InterpolationWidths 255 0.094065752 insert K_10width:InterpolationWidths 256 0.099373198 insert K_10width:InterpolationWidths 257 0.10470376 insert K_10width:InterpolationWidths 258 0.11005545 insert K_10width:InterpolationWidths 259 0.11542694 insert K_10width:InterpolationWidths 260 0.12081748 insert K_10width:InterpolationWidths 261 0.12622671 insert K_10width:InterpolationWidths 262 0.13165457 insert K_10width:InterpolationWidths 263 0.13710128 insert K_10width:InterpolationWidths 264 0.14256721 insert K_10width:InterpolationWidths 265 0.14805288 insert K_10width:InterpolationWidths 266 0.15355891 insert K_10width:InterpolationWidths 267 0.159086 insert K_10width:InterpolationWidths 268 0.16463489 insert K_10width:InterpolationWidths 269 0.17020637 insert K_10width:InterpolationWidths 270 0 insert K_10width:InterpolationWidths 271 0 insert K_10width:InterpolationWidths 272 0 insert K_10width:InterpolationWidths 273 6.8616465e-06 insert K_10width:InterpolationWidths 274 2.1489603e-05 insert K_10width:InterpolationWidths 275 4.3989048e-05 insert K_10width:InterpolationWidths 276 7.5998977e-05 insert K_10width:InterpolationWidths 277 0.00012015076 insert K_10width:InterpolationWidths 278 0.00018032438 insert K_10width:InterpolationWidths 279 0.0002622387 insert K_10width:InterpolationWidths 280 0.00037450563 insert K_10width:InterpolationWidths 281 0.00053048679 insert K_10width:InterpolationWidths 282 0.00075181131 insert K_10width:InterpolationWidths 283 0.00107578 insert K_10width:InterpolationWidths 284 0.0015717409 insert K_10width:InterpolationWidths 285 0.0023837604 insert K_10width:InterpolationWidths 286 0.0038644576 insert K_10width:InterpolationWidths 287 0.0071255267 insert K_10width:InterpolationWidths 288 0.016734661 insert K_10width:InterpolationWidths 289 0.037092975 insert K_10width:InterpolationWidths 290 0.056381691 insert K_10width:InterpolationWidths 291 0.072520551 insert K_10width:InterpolationWidths 292 0.086599769 insert K_10width:InterpolationWidths 293 0.09929736 insert K_10width:InterpolationWidths 294 0.11100763 insert K_10width:InterpolationWidths 295 0.12197731 insert K_10width:InterpolationWidths 296 0.13237077 insert K_10width:InterpolationWidths 297 0.14230308 insert K_10width:InterpolationWidths 298 0.1518599 insert K_10width:InterpolationWidths 299 0.16110502 insert K_10width:InterpolationWidths 300 0.1700875 insert K_10width:InterpolationWidths 301 0.17885003 insert K_10width:InterpolationWidths 302 0.18742266 insert K_10width:InterpolationWidths 303 0.19583282 insert K_10width:InterpolationWidths 304 0.20410372 insert K_10width:InterpolationWidths 305 0.21218797 insert K_10width:InterpolationWidths 306 0.22000314 insert K_10width:InterpolationWidths 307 0.22764037 insert K_10width:InterpolationWidths 308 0.23513217 insert K_10width:InterpolationWidths 309 0.24250119 insert K_10width:InterpolationWidths 310 0.2497636 insert K_10width:InterpolationWidths 311 0.25692968 insert K_10width:InterpolationWidths 312 0.26401801 insert K_10width:InterpolationWidths 313 0.27102982 insert K_10width:InterpolationWidths 314 0.27797558 insert K_10width:InterpolationWidths 315 0.28486218 insert K_10width:InterpolationWidths 316 0.29169569 insert K_10width:InterpolationWidths 317 0.29848154 insert K_10width:InterpolationWidths 318 0.30522457 insert K_10width:InterpolationWidths 319 0.31192918 insert K_10width:InterpolationWidths 320 0.31859934 insert K_10width:InterpolationWidths 321 0.32523867 insert K_10width:InterpolationWidths 322 0.33185049 insert K_10width:InterpolationWidths 323 0.33843784 insert K_10width:InterpolationWidths 324 0.00038664582 insert K_10width:InterpolationWidths 325 0.00044705391 insert K_10width:InterpolationWidths 326 0.0005162997 insert K_10width:InterpolationWidths 327 0.00059569323 insert K_10width:InterpolationWidths 328 0.00068675573 insert K_10width:InterpolationWidths 329 0.00079125773 insert K_10width:InterpolationWidths 330 0.00091126454 insert K_10width:InterpolationWidths 331 0.0010491906 insert K_10width:InterpolationWidths 332 0.0012078644 insert K_10width:InterpolationWidths 333 0.0013906052 insert K_10width:InterpolationWidths 334 0.0016013139 insert K_10width:InterpolationWidths 335 0.0018445788 insert K_10width:InterpolationWidths 336 0.0021257964 insert K_10width:InterpolationWidths 337 0.0024513067 insert K_10width:InterpolationWidths 338 0.0028285371 insert K_10width:InterpolationWidths 339 0.003266145 insert K_10width:InterpolationWidths 340 0.0037741397 insert K_10width:InterpolationWidths 341 0.0043639502 insert K_10width:InterpolationWidths 342 0.0050483904 insert K_10width:InterpolationWidths 343 0.0058414526 insert K_10width:InterpolationWidths 344 0.0067578476 insert K_10width:InterpolationWidths 345 0.007812218 insert K_10width:InterpolationWidths 346 0.0090179946 insert K_10width:InterpolationWidths 347 0.010385972 insert K_10width:InterpolationWidths 348 0.011922819 insert K_10width:InterpolationWidths 349 0.013629881 insert K_10width:InterpolationWidths 350 0.015502638 insert K_10width:InterpolationWidths 351 0.017531063 insert K_10width:InterpolationWidths 352 0.019700795 insert K_10width:InterpolationWidths 353 0.021994831 insert K_10width:InterpolationWidths 354 0.024395271 insert K_10width:InterpolationWidths 355 0.026884777 insert K_10width:InterpolationWidths 356 0.029447565 insert K_10width:InterpolationWidths 357 0.032069923 insert K_10width:InterpolationWidths 358 0.034740364 insert K_10width:InterpolationWidths 359 0.037449525 insert K_10width:InterpolationWidths 360 0.040189946 insert K_10width:InterpolationWidths 361 0.042955792 insert K_10width:InterpolationWidths 362 0.045742571 insert K_10width:InterpolationWidths 363 0.048546881 insert K_10width:InterpolationWidths 364 0.051366192 insert K_10width:InterpolationWidths 365 0.054198664 insert K_10width:InterpolationWidths 366 0.057042992 insert K_10width:InterpolationWidths 367 0.059898298 insert K_10width:InterpolationWidths 368 0.062764025 insert K_10width:InterpolationWidths 369 0.065639871 insert K_10width:InterpolationWidths 370 0.068525729 insert K_10width:InterpolationWidths 371 0.071421638 insert K_10width:InterpolationWidths 372 0.074327751 insert K_10width:InterpolationWidths 373 0.077244306 insert K_10width:InterpolationWidths 374 0.080171606 insert K_10width:InterpolationWidths 375 0.083109999 insert K_10width:InterpolationWidths 376 0.086059868 insert K_10width:InterpolationWidths 377 0.089021617 insert K_10width:NumberofEntries 0 54 insert K_10width:NumberofEntries 1 108 insert K_10width:NumberofEntries 2 162 insert K_10width:NumberofEntries 3 216 insert K_10width:NumberofEntries 4 270 insert K_10width:NumberofEntries 5 270 insert K_10width:NumberofEntries 6 324 insert K_10width:NumberofEntries 7 378 newdef /Herwig/Particles/K_10:Width_generator K_10width newdef /Herwig/Particles/K_1bar0:Width_generator K_10width # create Herwig::GenericWidthGenerator K'_10width newdef K'_10width:Particle /Herwig/Particles/K'_10 newdef K'_10width:Prefactor 1.00017 newdef K'_10width:BRNormalize 0 newdef K'_10width:BRMinimum 0.01 newdef K'_10width:Points 50 newdef K'_10width:InterpolationOrder 1 insert K'_10width:MEtype 0 2 insert K'_10width:MEtype 1 2 insert K'_10width:MEtype 2 2 insert K'_10width:MEtype 3 1 insert K'_10width:MEtype 4 2 insert K'_10width:MEtype 5 2 insert K'_10width:MEcode 0 0 insert K'_10width:MEcode 1 0 insert K'_10width:MEcode 2 0 insert K'_10width:MEcode 3 4 insert K'_10width:MEcode 4 0 insert K'_10width:MEcode 5 0 insert K'_10width:MEcoupling 0 1 insert K'_10width:MEcoupling 1 1 insert K'_10width:MEcoupling 2 1 insert K'_10width:MEcoupling 3 0.30844 insert K'_10width:MEcoupling 4 1 insert K'_10width:MEcoupling 5 1 insert K'_10width:ModeOn 0 1 insert K'_10width:ModeOn 1 1 insert K'_10width:ModeOn 2 1 insert K'_10width:ModeOn 3 0 insert K'_10width:ModeOn 4 1 insert K'_10width:ModeOn 5 1 insert K'_10width:MinimumMasses 0 0.78123 insert K'_10width:MinimumMasses 1 0.780978 insert K'_10width:MinimumMasses 2 0.869177 insert K'_10width:MinimumMasses 3 0.497648 insert K'_10width:MinimumMasses 4 1.1954 insert K'_10width:MinimumMasses 5 0.873148 insert K'_10width:MEmass1 0 0.89166 insert K'_10width:MEmass1 1 0.896 insert K'_10width:MEmass1 2 0.7755 insert K'_10width:MEmass1 3 0 insert K'_10width:MEmass1 4 0.78265 insert K'_10width:MEmass1 5 0.7755 insert K'_10width:MEmass2 0 0.13957 insert K'_10width:MEmass2 1 0.134978 insert K'_10width:MEmass2 2 0.493677 insert K'_10width:MEmass2 3 0.497648 insert K'_10width:MEmass2 4 0.497648 insert K'_10width:MEmass2 5 0.497648 insert K'_10width:DecayModes 0 K'_10->K*+,pi-; insert K'_10width:DecayModes 1 K'_10->K*0,pi0; insert K'_10width:DecayModes 2 K'_10->K+,rho-; insert K'_10width:DecayModes 3 K'_10->K0,gamma; insert K'_10width:DecayModes 4 K'_10->K0,omega; insert K'_10width:DecayModes 5 K'_10->K0,rho0; insert K'_10width:InterpolationMasses 0 1.0255918 insert K'_10width:InterpolationMasses 1 1.0397959 insert K'_10width:InterpolationMasses 2 1.054 insert K'_10width:InterpolationMasses 3 1.0682041 insert K'_10width:InterpolationMasses 4 1.0824082 insert K'_10width:InterpolationMasses 5 1.0966122 insert K'_10width:InterpolationMasses 6 1.1108163 insert K'_10width:InterpolationMasses 7 1.1250204 insert K'_10width:InterpolationMasses 8 1.1392245 insert K'_10width:InterpolationMasses 9 1.1534286 insert K'_10width:InterpolationMasses 10 1.1676327 insert K'_10width:InterpolationMasses 11 1.1818367 insert K'_10width:InterpolationMasses 12 1.1960408 insert K'_10width:InterpolationMasses 13 1.2102449 insert K'_10width:InterpolationMasses 14 1.224449 insert K'_10width:InterpolationMasses 15 1.2386531 insert K'_10width:InterpolationMasses 16 1.2528571 insert K'_10width:InterpolationMasses 17 1.2670612 insert K'_10width:InterpolationMasses 18 1.2812653 insert K'_10width:InterpolationMasses 19 1.2954694 insert K'_10width:InterpolationMasses 20 1.3096735 insert K'_10width:InterpolationMasses 21 1.3238776 insert K'_10width:InterpolationMasses 22 1.3380816 insert K'_10width:InterpolationMasses 23 1.3522857 insert K'_10width:InterpolationMasses 24 1.3664898 insert K'_10width:InterpolationMasses 25 1.3806939 insert K'_10width:InterpolationMasses 26 1.394898 insert K'_10width:InterpolationMasses 27 1.409102 insert K'_10width:InterpolationMasses 28 1.4233061 insert K'_10width:InterpolationMasses 29 1.4375102 insert K'_10width:InterpolationMasses 30 1.4517143 insert K'_10width:InterpolationMasses 31 1.4659184 insert K'_10width:InterpolationMasses 32 1.4801224 insert K'_10width:InterpolationMasses 33 1.4943265 insert K'_10width:InterpolationMasses 34 1.5085306 insert K'_10width:InterpolationMasses 35 1.5227347 insert K'_10width:InterpolationMasses 36 1.5369388 insert K'_10width:InterpolationMasses 37 1.5511429 insert K'_10width:InterpolationMasses 38 1.5653469 insert K'_10width:InterpolationMasses 39 1.579551 insert K'_10width:InterpolationMasses 40 1.5937551 insert K'_10width:InterpolationMasses 41 1.6079592 insert K'_10width:InterpolationMasses 42 1.6221633 insert K'_10width:InterpolationMasses 43 1.6363673 insert K'_10width:InterpolationMasses 44 1.6505714 insert K'_10width:InterpolationMasses 45 1.6647755 insert K'_10width:InterpolationMasses 46 1.6789796 insert K'_10width:InterpolationMasses 47 1.6931837 insert K'_10width:InterpolationMasses 48 1.7073878 insert K'_10width:InterpolationMasses 49 1.7215918 insert K'_10width:InterpolationMasses 50 1.7357959 insert K'_10width:InterpolationMasses 51 1.75 insert K'_10width:InterpolationMasses 52 1.7642041 insert K'_10width:InterpolationMasses 53 1.7784082 insert K'_10width:InterpolationMasses 54 1.0255918 insert K'_10width:InterpolationMasses 55 1.0397959 insert K'_10width:InterpolationMasses 56 1.054 insert K'_10width:InterpolationMasses 57 1.0682041 insert K'_10width:InterpolationMasses 58 1.0824082 insert K'_10width:InterpolationMasses 59 1.0966122 insert K'_10width:InterpolationMasses 60 1.1108163 insert K'_10width:InterpolationMasses 61 1.1250204 insert K'_10width:InterpolationMasses 62 1.1392245 insert K'_10width:InterpolationMasses 63 1.1534286 insert K'_10width:InterpolationMasses 64 1.1676327 insert K'_10width:InterpolationMasses 65 1.1818367 insert K'_10width:InterpolationMasses 66 1.1960408 insert K'_10width:InterpolationMasses 67 1.2102449 insert K'_10width:InterpolationMasses 68 1.224449 insert K'_10width:InterpolationMasses 69 1.2386531 insert K'_10width:InterpolationMasses 70 1.2528571 insert K'_10width:InterpolationMasses 71 1.2670612 insert K'_10width:InterpolationMasses 72 1.2812653 insert K'_10width:InterpolationMasses 73 1.2954694 insert K'_10width:InterpolationMasses 74 1.3096735 insert K'_10width:InterpolationMasses 75 1.3238776 insert K'_10width:InterpolationMasses 76 1.3380816 insert K'_10width:InterpolationMasses 77 1.3522857 insert K'_10width:InterpolationMasses 78 1.3664898 insert K'_10width:InterpolationMasses 79 1.3806939 insert K'_10width:InterpolationMasses 80 1.394898 insert K'_10width:InterpolationMasses 81 1.409102 insert K'_10width:InterpolationMasses 82 1.4233061 insert K'_10width:InterpolationMasses 83 1.4375102 insert K'_10width:InterpolationMasses 84 1.4517143 insert K'_10width:InterpolationMasses 85 1.4659184 insert K'_10width:InterpolationMasses 86 1.4801224 insert K'_10width:InterpolationMasses 87 1.4943265 insert K'_10width:InterpolationMasses 88 1.5085306 insert K'_10width:InterpolationMasses 89 1.5227347 insert K'_10width:InterpolationMasses 90 1.5369388 insert K'_10width:InterpolationMasses 91 1.5511429 insert K'_10width:InterpolationMasses 92 1.5653469 insert K'_10width:InterpolationMasses 93 1.579551 insert K'_10width:InterpolationMasses 94 1.5937551 insert K'_10width:InterpolationMasses 95 1.6079592 insert K'_10width:InterpolationMasses 96 1.6221633 insert K'_10width:InterpolationMasses 97 1.6363673 insert K'_10width:InterpolationMasses 98 1.6505714 insert K'_10width:InterpolationMasses 99 1.6647755 insert K'_10width:InterpolationMasses 100 1.6789796 insert K'_10width:InterpolationMasses 101 1.6931837 insert K'_10width:InterpolationMasses 102 1.7073878 insert K'_10width:InterpolationMasses 103 1.7215918 insert K'_10width:InterpolationMasses 104 1.7357959 insert K'_10width:InterpolationMasses 105 1.75 insert K'_10width:InterpolationMasses 106 1.7642041 insert K'_10width:InterpolationMasses 107 1.7784082 insert K'_10width:InterpolationMasses 108 1.0255918 insert K'_10width:InterpolationMasses 109 1.0397959 insert K'_10width:InterpolationMasses 110 1.054 insert K'_10width:InterpolationMasses 111 1.0682041 insert K'_10width:InterpolationMasses 112 1.0824082 insert K'_10width:InterpolationMasses 113 1.0966122 insert K'_10width:InterpolationMasses 114 1.1108163 insert K'_10width:InterpolationMasses 115 1.1250204 insert K'_10width:InterpolationMasses 116 1.1392245 insert K'_10width:InterpolationMasses 117 1.1534286 insert K'_10width:InterpolationMasses 118 1.1676327 insert K'_10width:InterpolationMasses 119 1.1818367 insert K'_10width:InterpolationMasses 120 1.1960408 insert K'_10width:InterpolationMasses 121 1.2102449 insert K'_10width:InterpolationMasses 122 1.224449 insert K'_10width:InterpolationMasses 123 1.2386531 insert K'_10width:InterpolationMasses 124 1.2528571 insert K'_10width:InterpolationMasses 125 1.2670612 insert K'_10width:InterpolationMasses 126 1.2812653 insert K'_10width:InterpolationMasses 127 1.2954694 insert K'_10width:InterpolationMasses 128 1.3096735 insert K'_10width:InterpolationMasses 129 1.3238776 insert K'_10width:InterpolationMasses 130 1.3380816 insert K'_10width:InterpolationMasses 131 1.3522857 insert K'_10width:InterpolationMasses 132 1.3664898 insert K'_10width:InterpolationMasses 133 1.3806939 insert K'_10width:InterpolationMasses 134 1.394898 insert K'_10width:InterpolationMasses 135 1.409102 insert K'_10width:InterpolationMasses 136 1.4233061 insert K'_10width:InterpolationMasses 137 1.4375102 insert K'_10width:InterpolationMasses 138 1.4517143 insert K'_10width:InterpolationMasses 139 1.4659184 insert K'_10width:InterpolationMasses 140 1.4801224 insert K'_10width:InterpolationMasses 141 1.4943265 insert K'_10width:InterpolationMasses 142 1.5085306 insert K'_10width:InterpolationMasses 143 1.5227347 insert K'_10width:InterpolationMasses 144 1.5369388 insert K'_10width:InterpolationMasses 145 1.5511429 insert K'_10width:InterpolationMasses 146 1.5653469 insert K'_10width:InterpolationMasses 147 1.579551 insert K'_10width:InterpolationMasses 148 1.5937551 insert K'_10width:InterpolationMasses 149 1.6079592 insert K'_10width:InterpolationMasses 150 1.6221633 insert K'_10width:InterpolationMasses 151 1.6363673 insert K'_10width:InterpolationMasses 152 1.6505714 insert K'_10width:InterpolationMasses 153 1.6647755 insert K'_10width:InterpolationMasses 154 1.6789796 insert K'_10width:InterpolationMasses 155 1.6931837 insert K'_10width:InterpolationMasses 156 1.7073878 insert K'_10width:InterpolationMasses 157 1.7215918 insert K'_10width:InterpolationMasses 158 1.7357959 insert K'_10width:InterpolationMasses 159 1.75 insert K'_10width:InterpolationMasses 160 1.7642041 insert K'_10width:InterpolationMasses 161 1.7784082 insert K'_10width:InterpolationMasses 162 1.1727612 insert K'_10width:InterpolationMasses 163 1.195398 insert K'_10width:InterpolationMasses 164 1.195398 insert K'_10width:InterpolationMasses 165 1.2067164 insert K'_10width:InterpolationMasses 166 1.2180348 insert K'_10width:InterpolationMasses 167 1.2293532 insert K'_10width:InterpolationMasses 168 1.2406716 insert K'_10width:InterpolationMasses 169 1.25199 insert K'_10width:InterpolationMasses 170 1.2633084 insert K'_10width:InterpolationMasses 171 1.2746269 insert K'_10width:InterpolationMasses 172 1.2859453 insert K'_10width:InterpolationMasses 173 1.2972637 insert K'_10width:InterpolationMasses 174 1.3085821 insert K'_10width:InterpolationMasses 175 1.3199005 insert K'_10width:InterpolationMasses 176 1.3312189 insert K'_10width:InterpolationMasses 177 1.3425373 insert K'_10width:InterpolationMasses 178 1.3538557 insert K'_10width:InterpolationMasses 179 1.3651741 insert K'_10width:InterpolationMasses 180 1.3764925 insert K'_10width:InterpolationMasses 181 1.3878109 insert K'_10width:InterpolationMasses 182 1.3991293 insert K'_10width:InterpolationMasses 183 1.4104478 insert K'_10width:InterpolationMasses 184 1.4217662 insert K'_10width:InterpolationMasses 185 1.4330846 insert K'_10width:InterpolationMasses 186 1.444403 insert K'_10width:InterpolationMasses 187 1.4557214 insert K'_10width:InterpolationMasses 188 1.4670398 insert K'_10width:InterpolationMasses 189 1.4783582 insert K'_10width:InterpolationMasses 190 1.4896766 insert K'_10width:InterpolationMasses 191 1.500995 insert K'_10width:InterpolationMasses 192 1.5123134 insert K'_10width:InterpolationMasses 193 1.5236318 insert K'_10width:InterpolationMasses 194 1.5349502 insert K'_10width:InterpolationMasses 195 1.5462687 insert K'_10width:InterpolationMasses 196 1.5575871 insert K'_10width:InterpolationMasses 197 1.5689055 insert K'_10width:InterpolationMasses 198 1.5802239 insert K'_10width:InterpolationMasses 199 1.5915423 insert K'_10width:InterpolationMasses 200 1.6028607 insert K'_10width:InterpolationMasses 201 1.6141791 insert K'_10width:InterpolationMasses 202 1.6254975 insert K'_10width:InterpolationMasses 203 1.6368159 insert K'_10width:InterpolationMasses 204 1.6481343 insert K'_10width:InterpolationMasses 205 1.6594527 insert K'_10width:InterpolationMasses 206 1.6707711 insert K'_10width:InterpolationMasses 207 1.6820896 insert K'_10width:InterpolationMasses 208 1.693408 insert K'_10width:InterpolationMasses 209 1.7047264 insert K'_10width:InterpolationMasses 210 1.7160448 insert K'_10width:InterpolationMasses 211 1.7273632 insert K'_10width:InterpolationMasses 212 1.7386816 insert K'_10width:InterpolationMasses 213 1.75 insert K'_10width:InterpolationMasses 214 1.7613184 insert K'_10width:InterpolationMasses 215 1.7726368 insert K'_10width:InterpolationMasses 216 1.0255918 insert K'_10width:InterpolationMasses 217 1.0397959 insert K'_10width:InterpolationMasses 218 1.054 insert K'_10width:InterpolationMasses 219 1.0682041 insert K'_10width:InterpolationMasses 220 1.0824082 insert K'_10width:InterpolationMasses 221 1.0966122 insert K'_10width:InterpolationMasses 222 1.1108163 insert K'_10width:InterpolationMasses 223 1.1250204 insert K'_10width:InterpolationMasses 224 1.1392245 insert K'_10width:InterpolationMasses 225 1.1534286 insert K'_10width:InterpolationMasses 226 1.1676327 insert K'_10width:InterpolationMasses 227 1.1818367 insert K'_10width:InterpolationMasses 228 1.1960408 insert K'_10width:InterpolationMasses 229 1.2102449 insert K'_10width:InterpolationMasses 230 1.224449 insert K'_10width:InterpolationMasses 231 1.2386531 insert K'_10width:InterpolationMasses 232 1.2528571 insert K'_10width:InterpolationMasses 233 1.2670612 insert K'_10width:InterpolationMasses 234 1.2812653 insert K'_10width:InterpolationMasses 235 1.2954694 insert K'_10width:InterpolationMasses 236 1.3096735 insert K'_10width:InterpolationMasses 237 1.3238776 insert K'_10width:InterpolationMasses 238 1.3380816 insert K'_10width:InterpolationMasses 239 1.3522857 insert K'_10width:InterpolationMasses 240 1.3664898 insert K'_10width:InterpolationMasses 241 1.3806939 insert K'_10width:InterpolationMasses 242 1.394898 insert K'_10width:InterpolationMasses 243 1.409102 insert K'_10width:InterpolationMasses 244 1.4233061 insert K'_10width:InterpolationMasses 245 1.4375102 insert K'_10width:InterpolationMasses 246 1.4517143 insert K'_10width:InterpolationMasses 247 1.4659184 insert K'_10width:InterpolationMasses 248 1.4801224 insert K'_10width:InterpolationMasses 249 1.4943265 insert K'_10width:InterpolationMasses 250 1.5085306 insert K'_10width:InterpolationMasses 251 1.5227347 insert K'_10width:InterpolationMasses 252 1.5369388 insert K'_10width:InterpolationMasses 253 1.5511429 insert K'_10width:InterpolationMasses 254 1.5653469 insert K'_10width:InterpolationMasses 255 1.579551 insert K'_10width:InterpolationMasses 256 1.5937551 insert K'_10width:InterpolationMasses 257 1.6079592 insert K'_10width:InterpolationMasses 258 1.6221633 insert K'_10width:InterpolationMasses 259 1.6363673 insert K'_10width:InterpolationMasses 260 1.6505714 insert K'_10width:InterpolationMasses 261 1.6647755 insert K'_10width:InterpolationMasses 262 1.6789796 insert K'_10width:InterpolationMasses 263 1.6931837 insert K'_10width:InterpolationMasses 264 1.7073878 insert K'_10width:InterpolationMasses 265 1.7215918 insert K'_10width:InterpolationMasses 266 1.7357959 insert K'_10width:InterpolationMasses 267 1.75 insert K'_10width:InterpolationMasses 268 1.7642041 insert K'_10width:InterpolationMasses 269 1.7784082 insert K'_10width:InterpolationWidths 0 0.0055832243 insert K'_10width:InterpolationWidths 1 0.009505069 insert K'_10width:InterpolationWidths 2 0.014023544 insert K'_10width:InterpolationWidths 3 0.018517871 insert K'_10width:InterpolationWidths 4 0.022841885 insert K'_10width:InterpolationWidths 5 0.027003897 insert K'_10width:InterpolationWidths 6 0.031036999 insert K'_10width:InterpolationWidths 7 0.034972565 insert K'_10width:InterpolationWidths 8 0.038835825 insert K'_10width:InterpolationWidths 9 0.04264647 insert K'_10width:InterpolationWidths 10 0.046419575 insert K'_10width:InterpolationWidths 11 0.050167934 insert K'_10width:InterpolationWidths 12 0.053901111 insert K'_10width:InterpolationWidths 13 0.057627154 insert K'_10width:InterpolationWidths 14 0.061352753 insert K'_10width:InterpolationWidths 15 0.065083557 insert K'_10width:InterpolationWidths 16 0.0688244 insert K'_10width:InterpolationWidths 17 0.07257947 insert K'_10width:InterpolationWidths 18 0.076352442 insert K'_10width:InterpolationWidths 19 0.080146572 insert K'_10width:InterpolationWidths 20 0.083964774 insert K'_10width:InterpolationWidths 21 0.087809682 insert K'_10width:InterpolationWidths 22 0.091683692 insert K'_10width:InterpolationWidths 23 0.095589004 insert K'_10width:InterpolationWidths 24 0.09952765 insert K'_10width:InterpolationWidths 25 0.10350152 insert K'_10width:InterpolationWidths 26 0.10751237 insert K'_10width:InterpolationWidths 27 0.11156187 insert K'_10width:InterpolationWidths 28 0.11565159 insert K'_10width:InterpolationWidths 29 0.119783 insert K'_10width:InterpolationWidths 30 0.12395753 insert K'_10width:InterpolationWidths 31 0.12817653 insert K'_10width:InterpolationWidths 32 0.13244128 insert K'_10width:InterpolationWidths 33 0.13675304 insert K'_10width:InterpolationWidths 34 0.14111301 insert K'_10width:InterpolationWidths 35 0.14552235 insert K'_10width:InterpolationWidths 36 0.14998147 insert K'_10width:InterpolationWidths 37 0.15444607 insert K'_10width:InterpolationWidths 38 0.15890432 insert K'_10width:InterpolationWidths 39 0.16337934 insert K'_10width:InterpolationWidths 40 0.16787832 insert K'_10width:InterpolationWidths 41 0.17240551 insert K'_10width:InterpolationWidths 42 0.17696392 insert K'_10width:InterpolationWidths 43 0.1815559 insert K'_10width:InterpolationWidths 44 0.18618342 insert K'_10width:InterpolationWidths 45 0.19084814 insert K'_10width:InterpolationWidths 46 0.19555157 insert K'_10width:InterpolationWidths 47 0.20029506 insert K'_10width:InterpolationWidths 48 0.20507986 insert K'_10width:InterpolationWidths 49 0.20990711 insert K'_10width:InterpolationWidths 50 0.21477792 insert K'_10width:InterpolationWidths 51 0.21969331 insert K'_10width:InterpolationWidths 52 0.22465427 insert K'_10width:InterpolationWidths 53 0.22966172 insert K'_10width:InterpolationWidths 54 0.0028027566 insert K'_10width:InterpolationWidths 55 0.0047642234 insert K'_10width:InterpolationWidths 56 0.0070160621 insert K'_10width:InterpolationWidths 57 0.0092511663 insert K'_10width:InterpolationWidths 58 0.011399978 insert K'_10width:InterpolationWidths 59 0.013467975 insert K'_10width:InterpolationWidths 60 0.015472047 insert K'_10width:InterpolationWidths 61 0.017427903 insert K'_10width:InterpolationWidths 62 0.019348082 insert K'_10width:InterpolationWidths 63 0.021242324 insert K'_10width:InterpolationWidths 64 0.023118069 insert K'_10width:InterpolationWidths 65 0.024981617 insert K'_10width:InterpolationWidths 66 0.026837672 insert K'_10width:InterpolationWidths 67 0.028690187 insert K'_10width:InterpolationWidths 68 0.030542446 insert K'_10width:InterpolationWidths 69 0.032397222 insert K'_10width:InterpolationWidths 70 0.034256886 insert K'_10width:InterpolationWidths 71 0.036123491 insert K'_10width:InterpolationWidths 72 0.037998842 insert K'_10width:InterpolationWidths 73 0.039884535 insert K'_10width:InterpolationWidths 74 0.041782 insert K'_10width:InterpolationWidths 75 0.04369253 insert K'_10width:InterpolationWidths 76 0.045617302 insert K'_10width:InterpolationWidths 77 0.047557395 insert K'_10width:InterpolationWidths 78 0.049513809 insert K'_10width:InterpolationWidths 79 0.051487471 insert K'_10width:InterpolationWidths 80 0.05347925 insert K'_10width:InterpolationWidths 81 0.055489961 insert K'_10width:InterpolationWidths 82 0.057520375 insert K'_10width:InterpolationWidths 83 0.059571224 insert K'_10width:InterpolationWidths 84 0.061643203 insert K'_10width:InterpolationWidths 85 0.063736978 insert K'_10width:InterpolationWidths 86 0.065853188 insert K'_10width:InterpolationWidths 87 0.067992446 insert K'_10width:InterpolationWidths 88 0.070155344 insert K'_10width:InterpolationWidths 89 0.072342454 insert K'_10width:InterpolationWidths 90 0.074551173 insert K'_10width:InterpolationWidths 91 0.076752449 insert K'_10width:InterpolationWidths 92 0.078957804 insert K'_10width:InterpolationWidths 93 0.081173188 insert K'_10width:InterpolationWidths 94 0.083401355 insert K'_10width:InterpolationWidths 95 0.085644082 insert K'_10width:InterpolationWidths 96 0.087902689 insert K'_10width:InterpolationWidths 97 0.090178236 insert K'_10width:InterpolationWidths 98 0.09247162 insert K'_10width:InterpolationWidths 99 0.094783626 insert K'_10width:InterpolationWidths 100 0.097114957 insert K'_10width:InterpolationWidths 101 0.099466259 insert K'_10width:InterpolationWidths 102 0.10183812 insert K'_10width:InterpolationWidths 103 0.1042311 insert K'_10width:InterpolationWidths 104 0.10664572 insert K'_10width:InterpolationWidths 105 0.10908248 insert K'_10width:InterpolationWidths 106 0.11154186 insert K'_10width:InterpolationWidths 107 0.11402431 insert K'_10width:InterpolationWidths 108 1.0961316e-05 insert K'_10width:InterpolationWidths 109 1.4821711e-05 insert K'_10width:InterpolationWidths 110 1.9859159e-05 insert K'_10width:InterpolationWidths 111 2.6417327e-05 insert K'_10width:InterpolationWidths 112 3.4946394e-05 insert K'_10width:InterpolationWidths 113 4.6040494e-05 insert K'_10width:InterpolationWidths 114 6.0490137e-05 insert K'_10width:InterpolationWidths 115 7.9356031e-05 insert K'_10width:InterpolationWidths 116 0.00010407309 insert K'_10width:InterpolationWidths 117 0.00013659572 insert K'_10width:InterpolationWidths 118 0.00017959543 insert K'_10width:InterpolationWidths 119 0.00023671292 insert K'_10width:InterpolationWidths 120 0.00031283296 insert K'_10width:InterpolationWidths 121 0.00041426107 insert K'_10width:InterpolationWidths 122 0.00054850605 insert K'_10width:InterpolationWidths 123 0.00072318755 insert K'_10width:InterpolationWidths 124 0.00094378446 insert K'_10width:InterpolationWidths 125 0.0012110371 insert K'_10width:InterpolationWidths 126 0.0015200447 insert K'_10width:InterpolationWidths 127 0.001862159 insert K'_10width:InterpolationWidths 128 0.002228121 insert K'_10width:InterpolationWidths 129 0.0026102365 insert K'_10width:InterpolationWidths 130 0.0030030135 insert K'_10width:InterpolationWidths 131 0.0034028909 insert K'_10width:InterpolationWidths 132 0.0038077116 insert K'_10width:InterpolationWidths 133 0.0042162516 insert K'_10width:InterpolationWidths 134 0.0046278785 insert K'_10width:InterpolationWidths 135 0.0050423254 insert K'_10width:InterpolationWidths 136 0.005459547 insert K'_10width:InterpolationWidths 137 0.00587963 insert K'_10width:InterpolationWidths 138 0.0063027376 insert K'_10width:InterpolationWidths 139 0.0067290752 insert K'_10width:InterpolationWidths 140 0.007158869 insert K'_10width:InterpolationWidths 141 0.0075923534 insert K'_10width:InterpolationWidths 142 0.0080297631 insert K'_10width:InterpolationWidths 143 0.0084712724 insert K'_10width:InterpolationWidths 144 0.0089172099 insert K'_10width:InterpolationWidths 145 0.0093677417 insert K'_10width:InterpolationWidths 146 0.0098230744 insert K'_10width:InterpolationWidths 147 0.010283406 insert K'_10width:InterpolationWidths 148 0.010748927 insert K'_10width:InterpolationWidths 149 0.011219817 insert K'_10width:InterpolationWidths 150 0.01169625 insert K'_10width:InterpolationWidths 151 0.012178394 insert K'_10width:InterpolationWidths 152 0.012666408 insert K'_10width:InterpolationWidths 153 0.013160446 insert K'_10width:InterpolationWidths 154 0.013660656 insert K'_10width:InterpolationWidths 155 0.014167181 insert K'_10width:InterpolationWidths 156 0.01468016 insert K'_10width:InterpolationWidths 157 0.015199725 insert K'_10width:InterpolationWidths 158 0.015726008 insert K'_10width:InterpolationWidths 159 0.016259134 insert K'_10width:InterpolationWidths 160 0.016799226 insert K'_10width:InterpolationWidths 161 0.017338883 insert K'_10width:InterpolationWidths 162 0 insert K'_10width:InterpolationWidths 163 0 insert K'_10width:InterpolationWidths 164 0 insert K'_10width:InterpolationWidths 165 2.4555586e-07 insert K'_10width:InterpolationWidths 166 8.8759706e-07 insert K'_10width:InterpolationWidths 167 2.168046e-06 insert K'_10width:InterpolationWidths 168 4.6902953e-06 insert K'_10width:InterpolationWidths 169 1.0025413e-05 insert K'_10width:InterpolationWidths 170 2.3502585e-05 insert K'_10width:InterpolationWidths 171 7.8316415e-05 insert K'_10width:InterpolationWidths 172 0.00043084538 insert K'_10width:InterpolationWidths 173 0.00079089738 insert K'_10width:InterpolationWidths 174 0.0010657875 insert K'_10width:InterpolationWidths 175 0.0013007236 insert K'_10width:InterpolationWidths 176 0.0015125807 insert K'_10width:InterpolationWidths 177 0.001709492 insert K'_10width:InterpolationWidths 178 0.0018961235 insert K'_10width:InterpolationWidths 179 0.0020754108 insert K'_10width:InterpolationWidths 180 0.0022446223 insert K'_10width:InterpolationWidths 181 0.0024061544 insert K'_10width:InterpolationWidths 182 0.0025624512 insert K'_10width:InterpolationWidths 183 0.0027148531 insert K'_10width:InterpolationWidths 184 0.0028641532 insert K'_10width:InterpolationWidths 185 0.0030110242 insert K'_10width:InterpolationWidths 186 0.0031559709 insert K'_10width:InterpolationWidths 187 0.0032993985 insert K'_10width:InterpolationWidths 188 0.0034416395 insert K'_10width:InterpolationWidths 189 0.0035829714 insert K'_10width:InterpolationWidths 190 0.0037236294 insert K'_10width:InterpolationWidths 191 0.003863815 insert K'_10width:InterpolationWidths 192 0.0040037027 insert K'_10width:InterpolationWidths 193 0.0041434452 insert K'_10width:InterpolationWidths 194 0.0042831771 insert K'_10width:InterpolationWidths 195 0.0044230178 insert K'_10width:InterpolationWidths 196 0.0045630742 insert K'_10width:InterpolationWidths 197 0.0047034425 insert K'_10width:InterpolationWidths 198 0.0048442096 insert K'_10width:InterpolationWidths 199 0.0049854547 insert K'_10width:InterpolationWidths 200 0.0051272502 insert K'_10width:InterpolationWidths 201 0.0052696624 insert K'_10width:InterpolationWidths 202 0.0054127526 insert K'_10width:InterpolationWidths 203 0.0055565775 insert K'_10width:InterpolationWidths 204 0.0057011897 insert K'_10width:InterpolationWidths 205 0.0058466384 insert K'_10width:InterpolationWidths 206 0.0059929696 insert K'_10width:InterpolationWidths 207 0.0061402264 insert K'_10width:InterpolationWidths 208 0.0062884494 insert K'_10width:InterpolationWidths 209 0.006437677 insert K'_10width:InterpolationWidths 210 0.0065879455 insert K'_10width:InterpolationWidths 211 0.0067392893 insert K'_10width:InterpolationWidths 212 0.0068917412 insert K'_10width:InterpolationWidths 213 0.0070453324 insert K'_10width:InterpolationWidths 214 0.0072000929 insert K'_10width:InterpolationWidths 215 0.0073560511 insert K'_10width:InterpolationWidths 216 5.2404752e-06 insert K'_10width:InterpolationWidths 217 7.1202206e-06 insert K'_10width:InterpolationWidths 218 9.5791479e-06 insert K'_10width:InterpolationWidths 219 1.2786638e-05 insert K'_10width:InterpolationWidths 220 1.6964274e-05 insert K'_10width:InterpolationWidths 221 2.2404029e-05 insert K'_10width:InterpolationWidths 222 2.9493696e-05 insert K'_10width:InterpolationWidths 223 3.875267e-05 insert K'_10width:InterpolationWidths 224 5.0882404e-05 insert K'_10width:InterpolationWidths 225 6.683719e-05 insert K'_10width:InterpolationWidths 226 8.7921444e-05 insert K'_10width:InterpolationWidths 227 0.00011591683 insert K'_10width:InterpolationWidths 228 0.00015322952 insert K'_10width:InterpolationWidths 229 0.00020301027 insert K'_10width:InterpolationWidths 230 0.00026911952 insert K'_10width:InterpolationWidths 231 0.00035570015 insert K'_10width:InterpolationWidths 232 0.00046613718 insert K'_10width:InterpolationWidths 233 0.00060163016 insert K'_10width:InterpolationWidths 234 0.00076035368 insert K'_10width:InterpolationWidths 235 0.00093808505 insert K'_10width:InterpolationWidths 236 0.001129831 insert K'_10width:InterpolationWidths 237 0.0013312012 insert K'_10width:InterpolationWidths 238 0.001538952 insert K'_10width:InterpolationWidths 239 0.001750932 insert K'_10width:InterpolationWidths 240 0.0019658154 insert K'_10width:InterpolationWidths 241 0.0021828349 insert K'_10width:InterpolationWidths 242 0.0024015814 insert K'_10width:InterpolationWidths 243 0.0026218677 insert K'_10width:InterpolationWidths 244 0.0028436426 insert K'_10width:InterpolationWidths 245 0.003066936 insert K'_10width:InterpolationWidths 246 0.0032918251 insert K'_10width:InterpolationWidths 247 0.003518414 insert K'_10width:InterpolationWidths 248 0.0037468204 insert K'_10width:InterpolationWidths 249 0.0039771681 insert K'_10width:InterpolationWidths 250 0.0042095818 insert K'_10width:InterpolationWidths 251 0.0044441557 insert K'_10width:InterpolationWidths 252 0.0046810638 insert K'_10width:InterpolationWidths 253 0.0049203962 insert K'_10width:InterpolationWidths 254 0.0051622641 insert K'_10width:InterpolationWidths 255 0.0054067739 insert K'_10width:InterpolationWidths 256 0.0056540275 insert K'_10width:InterpolationWidths 257 0.0059041225 insert K'_10width:InterpolationWidths 258 0.0061571523 insert K'_10width:InterpolationWidths 259 0.0064132063 insert K'_10width:InterpolationWidths 260 0.0066723706 insert K'_10width:InterpolationWidths 261 0.0069347278 insert K'_10width:InterpolationWidths 262 0.0072003575 insert K'_10width:InterpolationWidths 263 0.0074693365 insert K'_10width:InterpolationWidths 264 0.0077417388 insert K'_10width:InterpolationWidths 265 0.0080176364 insert K'_10width:InterpolationWidths 266 0.0082970989 insert K'_10width:InterpolationWidths 267 0.0085801938 insert K'_10width:InterpolationWidths 268 0.0088669871 insert K'_10width:InterpolationWidths 269 0.0091557989 insert K'_10width:NumberofEntries 0 54 insert K'_10width:NumberofEntries 1 108 insert K'_10width:NumberofEntries 2 162 insert K'_10width:NumberofEntries 3 162 insert K'_10width:NumberofEntries 4 216 insert K'_10width:NumberofEntries 5 270 newdef /Herwig/Particles/K'_10:Width_generator K'_10width newdef /Herwig/Particles/K'_1bar0:Width_generator K'_10width # create Herwig::GenericWidthGenerator K'_1+width newdef K'_1+width:Particle /Herwig/Particles/K'_1+ newdef K'_1+width:Prefactor 1.00233 newdef K'_1+width:BRNormalize 0 newdef K'_1+width:BRMinimum 0.01 newdef K'_1+width:Points 50 newdef K'_1+width:InterpolationOrder 1 insert K'_1+width:MEtype 0 2 insert K'_1+width:MEtype 1 2 insert K'_1+width:MEtype 2 2 insert K'_1+width:MEtype 3 2 insert K'_1+width:MEtype 4 2 insert K'_1+width:MEcode 0 0 insert K'_1+width:MEcode 1 0 insert K'_1+width:MEcode 2 0 insert K'_1+width:MEcode 3 0 insert K'_1+width:MEcode 4 0 insert K'_1+width:MEcoupling 0 1 insert K'_1+width:MEcoupling 1 1 insert K'_1+width:MEcoupling 2 1 insert K'_1+width:MEcoupling 3 1 insert K'_1+width:MEcoupling 4 1 insert K'_1+width:ModeOn 0 1 insert K'_1+width:ModeOn 1 1 insert K'_1+width:ModeOn 2 1 insert K'_1+width:ModeOn 3 1 insert K'_1+width:ModeOn 4 1 insert K'_1+width:MinimumMasses 0 0.776638 insert K'_1+width:MinimumMasses 1 0.78557 insert K'_1+width:MinimumMasses 2 1.19143 insert K'_1+width:MinimumMasses 3 0.869177 insert K'_1+width:MinimumMasses 4 0.873148 insert K'_1+width:MEmass1 0 0.89166 insert K'_1+width:MEmass1 1 0.896 insert K'_1+width:MEmass1 2 0.78265 insert K'_1+width:MEmass1 3 0.7755 insert K'_1+width:MEmass1 4 0.7755 insert K'_1+width:MEmass2 0 0.134978 insert K'_1+width:MEmass2 1 0.13957 insert K'_1+width:MEmass2 2 0.493677 insert K'_1+width:MEmass2 3 0.493677 insert K'_1+width:MEmass2 4 0.497648 insert K'_1+width:DecayModes 0 K'_1+->K*+,pi0; insert K'_1+width:DecayModes 1 K'_1+->K*0,pi+; insert K'_1+width:DecayModes 2 K'_1+->K+,omega; insert K'_1+width:DecayModes 3 K'_1+->K+,rho0; insert K'_1+width:DecayModes 4 K'_1+->K0,rho+; insert K'_1+width:InterpolationMasses 0 1.0255918 insert K'_1+width:InterpolationMasses 1 1.0397959 insert K'_1+width:InterpolationMasses 2 1.054 insert K'_1+width:InterpolationMasses 3 1.0682041 insert K'_1+width:InterpolationMasses 4 1.0824082 insert K'_1+width:InterpolationMasses 5 1.0966122 insert K'_1+width:InterpolationMasses 6 1.1108163 insert K'_1+width:InterpolationMasses 7 1.1250204 insert K'_1+width:InterpolationMasses 8 1.1392245 insert K'_1+width:InterpolationMasses 9 1.1534286 insert K'_1+width:InterpolationMasses 10 1.1676327 insert K'_1+width:InterpolationMasses 11 1.1818367 insert K'_1+width:InterpolationMasses 12 1.1960408 insert K'_1+width:InterpolationMasses 13 1.2102449 insert K'_1+width:InterpolationMasses 14 1.224449 insert K'_1+width:InterpolationMasses 15 1.2386531 insert K'_1+width:InterpolationMasses 16 1.2528571 insert K'_1+width:InterpolationMasses 17 1.2670612 insert K'_1+width:InterpolationMasses 18 1.2812653 insert K'_1+width:InterpolationMasses 19 1.2954694 insert K'_1+width:InterpolationMasses 20 1.3096735 insert K'_1+width:InterpolationMasses 21 1.3238776 insert K'_1+width:InterpolationMasses 22 1.3380816 insert K'_1+width:InterpolationMasses 23 1.3522857 insert K'_1+width:InterpolationMasses 24 1.3664898 insert K'_1+width:InterpolationMasses 25 1.3806939 insert K'_1+width:InterpolationMasses 26 1.394898 insert K'_1+width:InterpolationMasses 27 1.409102 insert K'_1+width:InterpolationMasses 28 1.4233061 insert K'_1+width:InterpolationMasses 29 1.4375102 insert K'_1+width:InterpolationMasses 30 1.4517143 insert K'_1+width:InterpolationMasses 31 1.4659184 insert K'_1+width:InterpolationMasses 32 1.4801224 insert K'_1+width:InterpolationMasses 33 1.4943265 insert K'_1+width:InterpolationMasses 34 1.5085306 insert K'_1+width:InterpolationMasses 35 1.5227347 insert K'_1+width:InterpolationMasses 36 1.5369388 insert K'_1+width:InterpolationMasses 37 1.5511429 insert K'_1+width:InterpolationMasses 38 1.5653469 insert K'_1+width:InterpolationMasses 39 1.579551 insert K'_1+width:InterpolationMasses 40 1.5937551 insert K'_1+width:InterpolationMasses 41 1.6079592 insert K'_1+width:InterpolationMasses 42 1.6221633 insert K'_1+width:InterpolationMasses 43 1.6363673 insert K'_1+width:InterpolationMasses 44 1.6505714 insert K'_1+width:InterpolationMasses 45 1.6647755 insert K'_1+width:InterpolationMasses 46 1.6789796 insert K'_1+width:InterpolationMasses 47 1.6931837 insert K'_1+width:InterpolationMasses 48 1.7073878 insert K'_1+width:InterpolationMasses 49 1.7215918 insert K'_1+width:InterpolationMasses 50 1.7357959 insert K'_1+width:InterpolationMasses 51 1.75 insert K'_1+width:InterpolationMasses 52 1.7642041 insert K'_1+width:InterpolationMasses 53 1.7784082 insert K'_1+width:InterpolationMasses 54 1.0255918 insert K'_1+width:InterpolationMasses 55 1.0397959 insert K'_1+width:InterpolationMasses 56 1.054 insert K'_1+width:InterpolationMasses 57 1.0682041 insert K'_1+width:InterpolationMasses 58 1.0824082 insert K'_1+width:InterpolationMasses 59 1.0966122 insert K'_1+width:InterpolationMasses 60 1.1108163 insert K'_1+width:InterpolationMasses 61 1.1250204 insert K'_1+width:InterpolationMasses 62 1.1392245 insert K'_1+width:InterpolationMasses 63 1.1534286 insert K'_1+width:InterpolationMasses 64 1.1676327 insert K'_1+width:InterpolationMasses 65 1.1818367 insert K'_1+width:InterpolationMasses 66 1.1960408 insert K'_1+width:InterpolationMasses 67 1.2102449 insert K'_1+width:InterpolationMasses 68 1.224449 insert K'_1+width:InterpolationMasses 69 1.2386531 insert K'_1+width:InterpolationMasses 70 1.2528571 insert K'_1+width:InterpolationMasses 71 1.2670612 insert K'_1+width:InterpolationMasses 72 1.2812653 insert K'_1+width:InterpolationMasses 73 1.2954694 insert K'_1+width:InterpolationMasses 74 1.3096735 insert K'_1+width:InterpolationMasses 75 1.3238776 insert K'_1+width:InterpolationMasses 76 1.3380816 insert K'_1+width:InterpolationMasses 77 1.3522857 insert K'_1+width:InterpolationMasses 78 1.3664898 insert K'_1+width:InterpolationMasses 79 1.3806939 insert K'_1+width:InterpolationMasses 80 1.394898 insert K'_1+width:InterpolationMasses 81 1.409102 insert K'_1+width:InterpolationMasses 82 1.4233061 insert K'_1+width:InterpolationMasses 83 1.4375102 insert K'_1+width:InterpolationMasses 84 1.4517143 insert K'_1+width:InterpolationMasses 85 1.4659184 insert K'_1+width:InterpolationMasses 86 1.4801224 insert K'_1+width:InterpolationMasses 87 1.4943265 insert K'_1+width:InterpolationMasses 88 1.5085306 insert K'_1+width:InterpolationMasses 89 1.5227347 insert K'_1+width:InterpolationMasses 90 1.5369388 insert K'_1+width:InterpolationMasses 91 1.5511429 insert K'_1+width:InterpolationMasses 92 1.5653469 insert K'_1+width:InterpolationMasses 93 1.579551 insert K'_1+width:InterpolationMasses 94 1.5937551 insert K'_1+width:InterpolationMasses 95 1.6079592 insert K'_1+width:InterpolationMasses 96 1.6221633 insert K'_1+width:InterpolationMasses 97 1.6363673 insert K'_1+width:InterpolationMasses 98 1.6505714 insert K'_1+width:InterpolationMasses 99 1.6647755 insert K'_1+width:InterpolationMasses 100 1.6789796 insert K'_1+width:InterpolationMasses 101 1.6931837 insert K'_1+width:InterpolationMasses 102 1.7073878 insert K'_1+width:InterpolationMasses 103 1.7215918 insert K'_1+width:InterpolationMasses 104 1.7357959 insert K'_1+width:InterpolationMasses 105 1.75 insert K'_1+width:InterpolationMasses 106 1.7642041 insert K'_1+width:InterpolationMasses 107 1.7784082 insert K'_1+width:InterpolationMasses 108 1.1686281 insert K'_1+width:InterpolationMasses 109 1.191427 insert K'_1+width:InterpolationMasses 110 1.191427 insert K'_1+width:InterpolationMasses 111 1.2028264 insert K'_1+width:InterpolationMasses 112 1.2142259 insert K'_1+width:InterpolationMasses 113 1.2256253 insert K'_1+width:InterpolationMasses 114 1.2370248 insert K'_1+width:InterpolationMasses 115 1.2484242 insert K'_1+width:InterpolationMasses 116 1.2598237 insert K'_1+width:InterpolationMasses 117 1.2712231 insert K'_1+width:InterpolationMasses 118 1.2826226 insert K'_1+width:InterpolationMasses 119 1.294022 insert K'_1+width:InterpolationMasses 120 1.3054215 insert K'_1+width:InterpolationMasses 121 1.3168209 insert K'_1+width:InterpolationMasses 122 1.3282204 insert K'_1+width:InterpolationMasses 123 1.3396198 insert K'_1+width:InterpolationMasses 124 1.3510193 insert K'_1+width:InterpolationMasses 125 1.3624187 insert K'_1+width:InterpolationMasses 126 1.3738182 insert K'_1+width:InterpolationMasses 127 1.3852176 insert K'_1+width:InterpolationMasses 128 1.3966171 insert K'_1+width:InterpolationMasses 129 1.4080165 insert K'_1+width:InterpolationMasses 130 1.419416 insert K'_1+width:InterpolationMasses 131 1.4308154 insert K'_1+width:InterpolationMasses 132 1.4422149 insert K'_1+width:InterpolationMasses 133 1.4536143 insert K'_1+width:InterpolationMasses 134 1.4650138 insert K'_1+width:InterpolationMasses 135 1.4764132 insert K'_1+width:InterpolationMasses 136 1.4878127 insert K'_1+width:InterpolationMasses 137 1.4992121 insert K'_1+width:InterpolationMasses 138 1.5106116 insert K'_1+width:InterpolationMasses 139 1.522011 insert K'_1+width:InterpolationMasses 140 1.5334105 insert K'_1+width:InterpolationMasses 141 1.5448099 insert K'_1+width:InterpolationMasses 142 1.5562094 insert K'_1+width:InterpolationMasses 143 1.5676088 insert K'_1+width:InterpolationMasses 144 1.5790083 insert K'_1+width:InterpolationMasses 145 1.5904077 insert K'_1+width:InterpolationMasses 146 1.6018072 insert K'_1+width:InterpolationMasses 147 1.6132066 insert K'_1+width:InterpolationMasses 148 1.6246061 insert K'_1+width:InterpolationMasses 149 1.6360055 insert K'_1+width:InterpolationMasses 150 1.647405 insert K'_1+width:InterpolationMasses 151 1.6588044 insert K'_1+width:InterpolationMasses 152 1.6702039 insert K'_1+width:InterpolationMasses 153 1.6816033 insert K'_1+width:InterpolationMasses 154 1.6930028 insert K'_1+width:InterpolationMasses 155 1.7044022 insert K'_1+width:InterpolationMasses 156 1.7158017 insert K'_1+width:InterpolationMasses 157 1.7272011 insert K'_1+width:InterpolationMasses 158 1.7386006 insert K'_1+width:InterpolationMasses 159 1.75 insert K'_1+width:InterpolationMasses 160 1.7613994 insert K'_1+width:InterpolationMasses 161 1.7727989 insert K'_1+width:InterpolationMasses 162 1.0255918 insert K'_1+width:InterpolationMasses 163 1.0397959 insert K'_1+width:InterpolationMasses 164 1.054 insert K'_1+width:InterpolationMasses 165 1.0682041 insert K'_1+width:InterpolationMasses 166 1.0824082 insert K'_1+width:InterpolationMasses 167 1.0966122 insert K'_1+width:InterpolationMasses 168 1.1108163 insert K'_1+width:InterpolationMasses 169 1.1250204 insert K'_1+width:InterpolationMasses 170 1.1392245 insert K'_1+width:InterpolationMasses 171 1.1534286 insert K'_1+width:InterpolationMasses 172 1.1676327 insert K'_1+width:InterpolationMasses 173 1.1818367 insert K'_1+width:InterpolationMasses 174 1.1960408 insert K'_1+width:InterpolationMasses 175 1.2102449 insert K'_1+width:InterpolationMasses 176 1.224449 insert K'_1+width:InterpolationMasses 177 1.2386531 insert K'_1+width:InterpolationMasses 178 1.2528571 insert K'_1+width:InterpolationMasses 179 1.2670612 insert K'_1+width:InterpolationMasses 180 1.2812653 insert K'_1+width:InterpolationMasses 181 1.2954694 insert K'_1+width:InterpolationMasses 182 1.3096735 insert K'_1+width:InterpolationMasses 183 1.3238776 insert K'_1+width:InterpolationMasses 184 1.3380816 insert K'_1+width:InterpolationMasses 185 1.3522857 insert K'_1+width:InterpolationMasses 186 1.3664898 insert K'_1+width:InterpolationMasses 187 1.3806939 insert K'_1+width:InterpolationMasses 188 1.394898 insert K'_1+width:InterpolationMasses 189 1.409102 insert K'_1+width:InterpolationMasses 190 1.4233061 insert K'_1+width:InterpolationMasses 191 1.4375102 insert K'_1+width:InterpolationMasses 192 1.4517143 insert K'_1+width:InterpolationMasses 193 1.4659184 insert K'_1+width:InterpolationMasses 194 1.4801224 insert K'_1+width:InterpolationMasses 195 1.4943265 insert K'_1+width:InterpolationMasses 196 1.5085306 insert K'_1+width:InterpolationMasses 197 1.5227347 insert K'_1+width:InterpolationMasses 198 1.5369388 insert K'_1+width:InterpolationMasses 199 1.5511429 insert K'_1+width:InterpolationMasses 200 1.5653469 insert K'_1+width:InterpolationMasses 201 1.579551 insert K'_1+width:InterpolationMasses 202 1.5937551 insert K'_1+width:InterpolationMasses 203 1.6079592 insert K'_1+width:InterpolationMasses 204 1.6221633 insert K'_1+width:InterpolationMasses 205 1.6363673 insert K'_1+width:InterpolationMasses 206 1.6505714 insert K'_1+width:InterpolationMasses 207 1.6647755 insert K'_1+width:InterpolationMasses 208 1.6789796 insert K'_1+width:InterpolationMasses 209 1.6931837 insert K'_1+width:InterpolationMasses 210 1.7073878 insert K'_1+width:InterpolationMasses 211 1.7215918 insert K'_1+width:InterpolationMasses 212 1.7357959 insert K'_1+width:InterpolationMasses 213 1.75 insert K'_1+width:InterpolationMasses 214 1.7642041 insert K'_1+width:InterpolationMasses 215 1.7784082 insert K'_1+width:InterpolationMasses 216 1.0255918 insert K'_1+width:InterpolationMasses 217 1.0397959 insert K'_1+width:InterpolationMasses 218 1.054 insert K'_1+width:InterpolationMasses 219 1.0682041 insert K'_1+width:InterpolationMasses 220 1.0824082 insert K'_1+width:InterpolationMasses 221 1.0966122 insert K'_1+width:InterpolationMasses 222 1.1108163 insert K'_1+width:InterpolationMasses 223 1.1250204 insert K'_1+width:InterpolationMasses 224 1.1392245 insert K'_1+width:InterpolationMasses 225 1.1534286 insert K'_1+width:InterpolationMasses 226 1.1676327 insert K'_1+width:InterpolationMasses 227 1.1818367 insert K'_1+width:InterpolationMasses 228 1.1960408 insert K'_1+width:InterpolationMasses 229 1.2102449 insert K'_1+width:InterpolationMasses 230 1.224449 insert K'_1+width:InterpolationMasses 231 1.2386531 insert K'_1+width:InterpolationMasses 232 1.2528571 insert K'_1+width:InterpolationMasses 233 1.2670612 insert K'_1+width:InterpolationMasses 234 1.2812653 insert K'_1+width:InterpolationMasses 235 1.2954694 insert K'_1+width:InterpolationMasses 236 1.3096735 insert K'_1+width:InterpolationMasses 237 1.3238776 insert K'_1+width:InterpolationMasses 238 1.3380816 insert K'_1+width:InterpolationMasses 239 1.3522857 insert K'_1+width:InterpolationMasses 240 1.3664898 insert K'_1+width:InterpolationMasses 241 1.3806939 insert K'_1+width:InterpolationMasses 242 1.394898 insert K'_1+width:InterpolationMasses 243 1.409102 insert K'_1+width:InterpolationMasses 244 1.4233061 insert K'_1+width:InterpolationMasses 245 1.4375102 insert K'_1+width:InterpolationMasses 246 1.4517143 insert K'_1+width:InterpolationMasses 247 1.4659184 insert K'_1+width:InterpolationMasses 248 1.4801224 insert K'_1+width:InterpolationMasses 249 1.4943265 insert K'_1+width:InterpolationMasses 250 1.5085306 insert K'_1+width:InterpolationMasses 251 1.5227347 insert K'_1+width:InterpolationMasses 252 1.5369388 insert K'_1+width:InterpolationMasses 253 1.5511429 insert K'_1+width:InterpolationMasses 254 1.5653469 insert K'_1+width:InterpolationMasses 255 1.579551 insert K'_1+width:InterpolationMasses 256 1.5937551 insert K'_1+width:InterpolationMasses 257 1.6079592 insert K'_1+width:InterpolationMasses 258 1.6221633 insert K'_1+width:InterpolationMasses 259 1.6363673 insert K'_1+width:InterpolationMasses 260 1.6505714 insert K'_1+width:InterpolationMasses 261 1.6647755 insert K'_1+width:InterpolationMasses 262 1.6789796 insert K'_1+width:InterpolationMasses 263 1.6931837 insert K'_1+width:InterpolationMasses 264 1.7073878 insert K'_1+width:InterpolationMasses 265 1.7215918 insert K'_1+width:InterpolationMasses 266 1.7357959 insert K'_1+width:InterpolationMasses 267 1.75 insert K'_1+width:InterpolationMasses 268 1.7642041 insert K'_1+width:InterpolationMasses 269 1.7784082 insert K'_1+width:InterpolationWidths 0 0.003259687 insert K'_1+width:InterpolationWidths 1 0.0053053358 insert K'_1+width:InterpolationWidths 2 0.0075119319 insert K'_1+width:InterpolationWidths 3 0.0096694404 insert K'_1+width:InterpolationWidths 4 0.011743688 insert K'_1+width:InterpolationWidths 5 0.013745694 insert K'_1+width:InterpolationWidths 6 0.015691528 insert K'_1+width:InterpolationWidths 7 0.017595302 insert K'_1+width:InterpolationWidths 8 0.019468183 insert K'_1+width:InterpolationWidths 9 0.021318732 insert K'_1+width:InterpolationWidths 10 0.023154025 insert K'_1+width:InterpolationWidths 11 0.02497939 insert K'_1+width:InterpolationWidths 12 0.026799228 insert K'_1+width:InterpolationWidths 13 0.028617164 insert K'_1+width:InterpolationWidths 14 0.030436226 insert K'_1+width:InterpolationWidths 15 0.032258982 insert K'_1+width:InterpolationWidths 16 0.034087643 insert K'_1+width:InterpolationWidths 17 0.03592413 insert K'_1+width:InterpolationWidths 18 0.037770139 insert K'_1+width:InterpolationWidths 19 0.039627176 insert K'_1+width:InterpolationWidths 20 0.041496596 insert K'_1+width:InterpolationWidths 21 0.043379628 insert K'_1+width:InterpolationWidths 22 0.045277394 insert K'_1+width:InterpolationWidths 23 0.047190926 insert K'_1+width:InterpolationWidths 24 0.049121181 insert K'_1+width:InterpolationWidths 25 0.051069051 insert K'_1+width:InterpolationWidths 26 0.053035374 insert K'_1+width:InterpolationWidths 27 0.055020936 insert K'_1+width:InterpolationWidths 28 0.057026484 insert K'_1+width:InterpolationWidths 29 0.059052725 insert K'_1+width:InterpolationWidths 30 0.061100337 insert K'_1+width:InterpolationWidths 31 0.063169966 insert K'_1+width:InterpolationWidths 32 0.065262233 insert K'_1+width:InterpolationWidths 33 0.067377738 insert K'_1+width:InterpolationWidths 34 0.069517059 insert K'_1+width:InterpolationWidths 35 0.071680756 insert K'_1+width:InterpolationWidths 36 0.073867075 insert K'_1+width:InterpolationWidths 37 0.076046133 insert K'_1+width:InterpolationWidths 38 0.07822864 insert K'_1+width:InterpolationWidths 39 0.080420922 insert K'_1+width:InterpolationWidths 40 0.082625818 insert K'_1+width:InterpolationWidths 41 0.084845136 insert K'_1+width:InterpolationWidths 42 0.087080209 insert K'_1+width:InterpolationWidths 43 0.089332104 insert K'_1+width:InterpolationWidths 44 0.091601719 insert K'_1+width:InterpolationWidths 45 0.093889837 insert K'_1+width:InterpolationWidths 46 0.096197159 insert K'_1+width:InterpolationWidths 47 0.098524325 insert K'_1+width:InterpolationWidths 48 0.10087193 insert K'_1+width:InterpolationWidths 49 0.10324051 insert K'_1+width:InterpolationWidths 50 0.10563061 insert K'_1+width:InterpolationWidths 51 0.1080427 insert K'_1+width:InterpolationWidths 52 0.11047727 insert K'_1+width:InterpolationWidths 53 0.11293477 insert K'_1+width:InterpolationWidths 54 0.0047336779 insert K'_1+width:InterpolationWidths 55 0.0083510933 insert K'_1+width:InterpolationWidths 56 0.012873158 insert K'_1+width:InterpolationWidths 57 0.01749052 insert K'_1+width:InterpolationWidths 58 0.021944685 insert K'_1+width:InterpolationWidths 59 0.026221192 insert K'_1+width:InterpolationWidths 60 0.030352601 insert K'_1+width:InterpolationWidths 61 0.034373293 insert K'_1+width:InterpolationWidths 62 0.03831139 insert K'_1+width:InterpolationWidths 63 0.04218882 insert K'_1+width:InterpolationWidths 64 0.046022338 insert K'_1+width:InterpolationWidths 65 0.049825933 insert K'_1+width:InterpolationWidths 66 0.0536101 insert K'_1+width:InterpolationWidths 67 0.057383579 insert K'_1+width:InterpolationWidths 68 0.061153595 insert K'_1+width:InterpolationWidths 69 0.064926213 insert K'_1+width:InterpolationWidths 70 0.068706597 insert K'_1+width:InterpolationWidths 71 0.072499202 insert K'_1+width:InterpolationWidths 72 0.076307917 insert K'_1+width:InterpolationWidths 73 0.080136175 insert K'_1+width:InterpolationWidths 74 0.083987039 insert K'_1+width:InterpolationWidths 75 0.087863263 insert K'_1+width:InterpolationWidths 76 0.091767351 insert K'_1+width:InterpolationWidths 77 0.09570159 insert K'_1+width:InterpolationWidths 78 0.099668088 insert K'_1+width:InterpolationWidths 79 0.1036688 insert K'_1+width:InterpolationWidths 80 0.10770555 insert K'_1+width:InterpolationWidths 81 0.11178004 insert K'_1+width:InterpolationWidths 82 0.11589389 insert K'_1+width:InterpolationWidths 83 0.12004862 insert K'_1+width:InterpolationWidths 84 0.12424567 insert K'_1+width:InterpolationWidths 85 0.12848644 insert K'_1+width:InterpolationWidths 86 0.13277224 insert K'_1+width:InterpolationWidths 87 0.13710435 insert K'_1+width:InterpolationWidths 88 0.14148398 insert K'_1+width:InterpolationWidths 89 0.14591232 insert K'_1+width:InterpolationWidths 90 0.15039051 insert K'_1+width:InterpolationWidths 91 0.15486913 insert K'_1+width:InterpolationWidths 92 0.15934454 insert K'_1+width:InterpolationWidths 93 0.16383725 insert K'_1+width:InterpolationWidths 94 0.16835415 insert K'_1+width:InterpolationWidths 95 0.17289938 insert K'_1+width:InterpolationWidths 96 0.17747589 insert K'_1+width:InterpolationWidths 97 0.18208599 insert K'_1+width:InterpolationWidths 98 0.18673164 insert K'_1+width:InterpolationWidths 99 0.19141449 insert K'_1+width:InterpolationWidths 100 0.19613604 insert K'_1+width:InterpolationWidths 101 0.20089764 insert K'_1+width:InterpolationWidths 102 0.20570054 insert K'_1+width:InterpolationWidths 103 0.21054589 insert K'_1+width:InterpolationWidths 104 0.21543478 insert K'_1+width:InterpolationWidths 105 0.22036825 insert K'_1+width:InterpolationWidths 106 0.22534727 insert K'_1+width:InterpolationWidths 107 0.23037279 insert K'_1+width:InterpolationWidths 108 0 insert K'_1+width:InterpolationWidths 109 0 insert K'_1+width:InterpolationWidths 110 0 insert K'_1+width:InterpolationWidths 111 2.4801935e-07 insert K'_1+width:InterpolationWidths 112 8.9840038e-07 insert K'_1+width:InterpolationWidths 113 2.2007375e-06 insert K'_1+width:InterpolationWidths 114 4.7806878e-06 insert K'_1+width:InterpolationWidths 115 1.0286546e-05 insert K'_1+width:InterpolationWidths 116 2.4432816e-05 insert K'_1+width:InterpolationWidths 117 8.4864214e-05 insert K'_1+width:InterpolationWidths 118 0.00045428084 insert K'_1+width:InterpolationWidths 119 0.00080842004 insert K'_1+width:InterpolationWidths 120 0.0010809678 insert K'_1+width:InterpolationWidths 121 0.0013148259 insert K'_1+width:InterpolationWidths 122 0.0015261777 insert K'_1+width:InterpolationWidths 123 0.0017229092 insert K'_1+width:InterpolationWidths 124 0.0019095628 insert K'_1+width:InterpolationWidths 125 0.0020888494 insert K'_1+width:InterpolationWidths 126 0.0022577016 insert K'_1+width:InterpolationWidths 127 0.0024192502 insert K'_1+width:InterpolationWidths 128 0.0025756853 insert K'_1+width:InterpolationWidths 129 0.0027283126 insert K'_1+width:InterpolationWidths 130 0.0028778969 insert K'_1+width:InterpolationWidths 131 0.0030251026 insert K'_1+width:InterpolationWidths 132 0.0031704269 insert K'_1+width:InterpolationWidths 133 0.0033142702 insert K'_1+width:InterpolationWidths 134 0.0034569613 insert K'_1+width:InterpolationWidths 135 0.003598775 insert K'_1+width:InterpolationWidths 136 0.0037399446 insert K'_1+width:InterpolationWidths 137 0.0038806699 insert K'_1+width:InterpolationWidths 138 0.0040211244 insert K'_1+width:InterpolationWidths 139 0.0041614598 insert K'_1+width:InterpolationWidths 140 0.0043018099 insert K'_1+width:InterpolationWidths 141 0.0044422937 insert K'_1+width:InterpolationWidths 142 0.0045830176 insert K'_1+width:InterpolationWidths 143 0.0047240774 insert K'_1+width:InterpolationWidths 144 0.0048655598 insert K'_1+width:InterpolationWidths 145 0.0050075438 insert K'_1+width:InterpolationWidths 146 0.0051501015 insert K'_1+width:InterpolationWidths 147 0.0052932994 insert K'_1+width:InterpolationWidths 148 0.0054371986 insert K'_1+width:InterpolationWidths 149 0.0055818557 insert K'_1+width:InterpolationWidths 150 0.0057273234 insert K'_1+width:InterpolationWidths 151 0.005873651 insert K'_1+width:InterpolationWidths 152 0.0060208844 insert K'_1+width:InterpolationWidths 153 0.0061690669 insert K'_1+width:InterpolationWidths 154 0.0063182391 insert K'_1+width:InterpolationWidths 155 0.0064684396 insert K'_1+width:InterpolationWidths 156 0.0066197046 insert K'_1+width:InterpolationWidths 157 0.0067720688 insert K'_1+width:InterpolationWidths 158 0.0069255651 insert K'_1+width:InterpolationWidths 159 0.0070802249 insert K'_1+width:InterpolationWidths 160 0.0072360782 insert K'_1+width:InterpolationWidths 161 0.0073931536 insert K'_1+width:InterpolationWidths 162 5.4320811e-06 insert K'_1+width:InterpolationWidths 163 7.3583357e-06 insert K'_1+width:InterpolationWidths 164 9.8757123e-06 insert K'_1+width:InterpolationWidths 165 1.315758e-05 insert K'_1+width:InterpolationWidths 166 1.7431179e-05 insert K'_1+width:InterpolationWidths 167 2.299658e-05 insert K'_1+width:InterpolationWidths 168 3.0253258e-05 insert K'_1+width:InterpolationWidths 169 3.973751e-05 insert K'_1+width:InterpolationWidths 170 5.2175211e-05 insert K'_1+width:InterpolationWidths 171 6.8555529e-05 insert K'_1+width:InterpolationWidths 172 9.0231234e-05 insert K'_1+width:InterpolationWidths 173 0.00011904669 insert K'_1+width:InterpolationWidths 174 0.00015747748 insert K'_1+width:InterpolationWidths 175 0.00020871995 insert K'_1+width:InterpolationWidths 176 0.00027658023 insert K'_1+width:InterpolationWidths 177 0.00036491816 insert K'_1+width:InterpolationWidths 178 0.00047650322 insert K'_1+width:InterpolationWidths 179 0.00061169854 insert K'_1+width:InterpolationWidths 180 0.00076801067 insert K'_1+width:InterpolationWidths 181 0.0009410564 insert K'_1+width:InterpolationWidths 182 0.0011261523 insert K'_1+width:InterpolationWidths 183 0.0013194114 insert K'_1+width:InterpolationWidths 184 0.0015180617 insert K'_1+width:InterpolationWidths 185 0.0017203064 insert K'_1+width:InterpolationWidths 186 0.0019250577 insert K'_1+width:InterpolationWidths 187 0.0021316983 insert K'_1+width:InterpolationWidths 188 0.0023399094 insert K'_1+width:InterpolationWidths 189 0.0025495562 insert K'_1+width:InterpolationWidths 190 0.0027606161 insert K'_1+width:InterpolationWidths 191 0.0029731329 insert K'_1+width:InterpolationWidths 192 0.003187189 insert K'_1+width:InterpolationWidths 193 0.003402888 insert K'_1+width:InterpolationWidths 194 0.0036203441 insert K'_1+width:InterpolationWidths 195 0.0038396758 insert K'_1+width:InterpolationWidths 196 0.0040610015 insert K'_1+width:InterpolationWidths 197 0.0042844092 insert K'_1+width:InterpolationWidths 198 0.0045100651 insert K'_1+width:InterpolationWidths 199 0.0047380529 insert K'_1+width:InterpolationWidths 200 0.0049684772 insert K'_1+width:InterpolationWidths 201 0.005201438 insert K'_1+width:InterpolationWidths 202 0.005437031 insert K'_1+width:InterpolationWidths 203 0.005675348 insert K'_1+width:InterpolationWidths 204 0.0059164767 insert K'_1+width:InterpolationWidths 205 0.0061605013 insert K'_1+width:InterpolationWidths 206 0.0064075028 insert K'_1+width:InterpolationWidths 207 0.0066575589 insert K'_1+width:InterpolationWidths 208 0.0069107445 insert K'_1+width:InterpolationWidths 209 0.0071671321 insert K'_1+width:InterpolationWidths 210 0.0074267916 insert K'_1+width:InterpolationWidths 211 0.0076897906 insert K'_1+width:InterpolationWidths 212 0.0079561949 insert K'_1+width:InterpolationWidths 213 0.0082260683 insert K'_1+width:InterpolationWidths 214 0.0084994731 insert K'_1+width:InterpolationWidths 215 0.0087726493 insert K'_1+width:InterpolationWidths 216 1.0077532e-05 insert K'_1+width:InterpolationWidths 217 1.3667341e-05 insert K'_1+width:InterpolationWidths 218 1.8355967e-05 insert K'_1+width:InterpolationWidths 219 2.4463274e-05 insert K'_1+width:InterpolationWidths 220 3.2407447e-05 insert K'_1+width:InterpolationWidths 221 4.2739204e-05 insert K'_1+width:InterpolationWidths 222 5.6189593e-05 insert K'_1+width:InterpolationWidths 223 7.3737223e-05 insert K'_1+width:InterpolationWidths 224 9.6703041e-05 insert K'_1+width:InterpolationWidths 225 0.00012688321 insert K'_1+width:InterpolationWidths 226 0.00016673169 insert K'_1+width:InterpolationWidths 227 0.00021959872 insert K'_1+width:InterpolationWidths 228 0.00029000697 insert K'_1+width:InterpolationWidths 229 0.00038387699 insert K'_1+width:InterpolationWidths 230 0.00050846244 insert K'_1+width:InterpolationWidths 231 0.00067155109 insert K'_1+width:InterpolationWidths 232 0.00087951566 insert K'_1+width:InterpolationWidths 233 0.0011346327 insert K'_1+width:InterpolationWidths 234 0.001433494 insert K'_1+width:InterpolationWidths 235 0.0017681697 insert K'_1+width:InterpolationWidths 236 0.0021292619 insert K'_1+width:InterpolationWidths 237 0.0025084951 insert K'_1+width:InterpolationWidths 238 0.0028997497 insert K'_1+width:InterpolationWidths 239 0.0032989646 insert K'_1+width:InterpolationWidths 240 0.003703636 insert K'_1+width:InterpolationWidths 241 0.004112315 insert K'_1+width:InterpolationWidths 242 0.0045242283 insert K'_1+width:InterpolationWidths 243 0.0049390228 insert K'_1+width:InterpolationWidths 244 0.0053566014 insert K'_1+width:InterpolationWidths 245 0.0057770205 insert K'_1+width:InterpolationWidths 246 0.0062004259 insert K'_1+width:InterpolationWidths 247 0.0066270137 insert K'_1+width:InterpolationWidths 248 0.0070570062 insert K'_1+width:InterpolationWidths 249 0.0074906368 insert K'_1+width:InterpolationWidths 250 0.0079281407 insert K'_1+width:InterpolationWidths 251 0.0083696959 insert K'_1+width:InterpolationWidths 252 0.0088156298 insert K'_1+width:InterpolationWidths 253 0.0092661129 insert K'_1+width:InterpolationWidths 254 0.0097213544 insert K'_1+width:InterpolationWidths 255 0.010181555 insert K'_1+width:InterpolationWidths 256 0.010646907 insert K'_1+width:InterpolationWidths 257 0.011117594 insert K'_1+width:InterpolationWidths 258 0.011593793 insert K'_1+width:InterpolationWidths 259 0.01207567 insert K'_1+width:InterpolationWidths 260 0.01256339 insert K'_1+width:InterpolationWidths 261 0.013057107 insert K'_1+width:InterpolationWidths 262 0.013556971 insert K'_1+width:InterpolationWidths 263 0.014063127 insert K'_1+width:InterpolationWidths 264 0.014575714 insert K'_1+width:InterpolationWidths 265 0.015094868 insert K'_1+width:InterpolationWidths 266 0.015620719 insert K'_1+width:InterpolationWidths 267 0.016153396 insert K'_1+width:InterpolationWidths 268 0.016693021 insert K'_1+width:InterpolationWidths 269 0.017236446 insert K'_1+width:NumberofEntries 0 54 insert K'_1+width:NumberofEntries 1 108 insert K'_1+width:NumberofEntries 2 162 insert K'_1+width:NumberofEntries 3 216 insert K'_1+width:NumberofEntries 4 270 newdef /Herwig/Particles/K'_1+:Width_generator K'_1+width newdef /Herwig/Particles/K'_1-:Width_generator K'_1+width # create Herwig::GenericWidthGenerator D'_1+width newdef D'_1+width:Particle /Herwig/Particles/D'_1+ newdef D'_1+width:Prefactor 1 newdef D'_1+width:BRNormalize 1 newdef D'_1+width:BRMinimum 0.01 newdef D'_1+width:Points 50 newdef D'_1+width:InterpolationOrder 1 insert D'_1+width:MEtype 0 2 insert D'_1+width:MEtype 1 2 insert D'_1+width:MEcode 0 0 insert D'_1+width:MEcode 1 0 insert D'_1+width:MEcoupling 0 0.995496 insert D'_1+width:MEcoupling 1 1.00216 insert D'_1+width:ModeOn 0 1 insert D'_1+width:ModeOn 1 1 insert D'_1+width:MinimumMasses 0 2.14402 insert D'_1+width:MinimumMasses 1 2.14559 insert D'_1+width:MEmass1 0 2.01 insert D'_1+width:MEmass1 1 2.0067 insert D'_1+width:MEmass2 0 0.134978 insert D'_1+width:MEmass2 1 0.13957 insert D'_1+width:DecayModes 0 D'_1+->D*+,pi0; insert D'_1+width:DecayModes 1 D'_1+->D*0,pi+; insert D'_1+width:InterpolationMasses 0 2.1093061 insert D'_1+width:InterpolationMasses 1 2.1440176 insert D'_1+width:InterpolationMasses 2 2.148 insert D'_1+width:InterpolationMasses 3 2.1673469 insert D'_1+width:InterpolationMasses 4 2.1866939 insert D'_1+width:InterpolationMasses 5 2.2060408 insert D'_1+width:InterpolationMasses 6 2.2253878 insert D'_1+width:InterpolationMasses 7 2.2447347 insert D'_1+width:InterpolationMasses 8 2.2640816 insert D'_1+width:InterpolationMasses 9 2.2834286 insert D'_1+width:InterpolationMasses 10 2.3027755 insert D'_1+width:InterpolationMasses 11 2.3221224 insert D'_1+width:InterpolationMasses 12 2.3414694 insert D'_1+width:InterpolationMasses 13 2.3608163 insert D'_1+width:InterpolationMasses 14 2.3801633 insert D'_1+width:InterpolationMasses 15 2.3995102 insert D'_1+width:InterpolationMasses 16 2.4188571 insert D'_1+width:InterpolationMasses 17 2.4382041 insert D'_1+width:InterpolationMasses 18 2.457551 insert D'_1+width:InterpolationMasses 19 2.476898 insert D'_1+width:InterpolationMasses 20 2.4962449 insert D'_1+width:InterpolationMasses 21 2.5155918 insert D'_1+width:InterpolationMasses 22 2.5349388 insert D'_1+width:InterpolationMasses 23 2.5542857 insert D'_1+width:InterpolationMasses 24 2.5736327 insert D'_1+width:InterpolationMasses 25 2.5929796 insert D'_1+width:InterpolationMasses 26 2.6123265 insert D'_1+width:InterpolationMasses 27 2.6316735 insert D'_1+width:InterpolationMasses 28 2.6510204 insert D'_1+width:InterpolationMasses 29 2.6703673 insert D'_1+width:InterpolationMasses 30 2.6897143 insert D'_1+width:InterpolationMasses 31 2.7090612 insert D'_1+width:InterpolationMasses 32 2.7284082 insert D'_1+width:InterpolationMasses 33 2.7477551 insert D'_1+width:InterpolationMasses 34 2.767102 insert D'_1+width:InterpolationMasses 35 2.786449 insert D'_1+width:InterpolationMasses 36 2.8057959 insert D'_1+width:InterpolationMasses 37 2.8251429 insert D'_1+width:InterpolationMasses 38 2.8444898 insert D'_1+width:InterpolationMasses 39 2.8638367 insert D'_1+width:InterpolationMasses 40 2.8831837 insert D'_1+width:InterpolationMasses 41 2.9025306 insert D'_1+width:InterpolationMasses 42 2.9218776 insert D'_1+width:InterpolationMasses 43 2.9412245 insert D'_1+width:InterpolationMasses 44 2.9605714 insert D'_1+width:InterpolationMasses 45 2.9799184 insert D'_1+width:InterpolationMasses 46 2.9992653 insert D'_1+width:InterpolationMasses 47 3.0186122 insert D'_1+width:InterpolationMasses 48 3.0379592 insert D'_1+width:InterpolationMasses 49 3.0573061 insert D'_1+width:InterpolationMasses 50 3.0766531 insert D'_1+width:InterpolationMasses 51 3.096 insert D'_1+width:InterpolationMasses 52 3.1153469 insert D'_1+width:InterpolationMasses 53 3.1346939 insert D'_1+width:InterpolationMasses 54 2.1093061 insert D'_1+width:InterpolationMasses 55 2.1455902 insert D'_1+width:InterpolationMasses 56 2.148 insert D'_1+width:InterpolationMasses 57 2.1673469 insert D'_1+width:InterpolationMasses 58 2.1866939 insert D'_1+width:InterpolationMasses 59 2.2060408 insert D'_1+width:InterpolationMasses 60 2.2253878 insert D'_1+width:InterpolationMasses 61 2.2447347 insert D'_1+width:InterpolationMasses 62 2.2640816 insert D'_1+width:InterpolationMasses 63 2.2834286 insert D'_1+width:InterpolationMasses 64 2.3027755 insert D'_1+width:InterpolationMasses 65 2.3221224 insert D'_1+width:InterpolationMasses 66 2.3414694 insert D'_1+width:InterpolationMasses 67 2.3608163 insert D'_1+width:InterpolationMasses 68 2.3801633 insert D'_1+width:InterpolationMasses 69 2.3995102 insert D'_1+width:InterpolationMasses 70 2.4188571 insert D'_1+width:InterpolationMasses 71 2.4382041 insert D'_1+width:InterpolationMasses 72 2.457551 insert D'_1+width:InterpolationMasses 73 2.476898 insert D'_1+width:InterpolationMasses 74 2.4962449 insert D'_1+width:InterpolationMasses 75 2.5155918 insert D'_1+width:InterpolationMasses 76 2.5349388 insert D'_1+width:InterpolationMasses 77 2.5542857 insert D'_1+width:InterpolationMasses 78 2.5736327 insert D'_1+width:InterpolationMasses 79 2.5929796 insert D'_1+width:InterpolationMasses 80 2.6123265 insert D'_1+width:InterpolationMasses 81 2.6316735 insert D'_1+width:InterpolationMasses 82 2.6510204 insert D'_1+width:InterpolationMasses 83 2.6703673 insert D'_1+width:InterpolationMasses 84 2.6897143 insert D'_1+width:InterpolationMasses 85 2.7090612 insert D'_1+width:InterpolationMasses 86 2.7284082 insert D'_1+width:InterpolationMasses 87 2.7477551 insert D'_1+width:InterpolationMasses 88 2.767102 insert D'_1+width:InterpolationMasses 89 2.786449 insert D'_1+width:InterpolationMasses 90 2.8057959 insert D'_1+width:InterpolationMasses 91 2.8251429 insert D'_1+width:InterpolationMasses 92 2.8444898 insert D'_1+width:InterpolationMasses 93 2.8638367 insert D'_1+width:InterpolationMasses 94 2.8831837 insert D'_1+width:InterpolationMasses 95 2.9025306 insert D'_1+width:InterpolationMasses 96 2.9218776 insert D'_1+width:InterpolationMasses 97 2.9412245 insert D'_1+width:InterpolationMasses 98 2.9605714 insert D'_1+width:InterpolationMasses 99 2.9799184 insert D'_1+width:InterpolationMasses 100 2.9992653 insert D'_1+width:InterpolationMasses 101 3.0186122 insert D'_1+width:InterpolationMasses 102 3.0379592 insert D'_1+width:InterpolationMasses 103 3.0573061 insert D'_1+width:InterpolationMasses 104 3.0766531 insert D'_1+width:InterpolationMasses 105 3.096 insert D'_1+width:InterpolationMasses 106 3.1153469 insert D'_1+width:InterpolationMasses 107 3.1346939 insert D'_1+width:InterpolationWidths 0 0 insert D'_1+width:InterpolationWidths 1 0 insert D'_1+width:InterpolationWidths 2 0.0080716629 insert D'_1+width:InterpolationWidths 3 0.022675724 insert D'_1+width:InterpolationWidths 4 0.031871947 insert D'_1+width:InterpolationWidths 5 0.039616112 insert D'_1+width:InterpolationWidths 6 0.046631516 insert D'_1+width:InterpolationWidths 7 0.053202925 insert D'_1+width:InterpolationWidths 8 0.059474543 insert D'_1+width:InterpolationWidths 9 0.065530234 insert D'_1+width:InterpolationWidths 10 0.071423371 insert D'_1+width:InterpolationWidths 11 0.077190185 insert D'_1+width:InterpolationWidths 12 0.082856509 insert D'_1+width:InterpolationWidths 13 0.088441496 insert D'_1+width:InterpolationWidths 14 0.093959804 insert D'_1+width:InterpolationWidths 15 0.099422962 insert D'_1+width:InterpolationWidths 16 0.10484025 insert D'_1+width:InterpolationWidths 17 0.11021928 insert D'_1+width:InterpolationWidths 18 0.11556641 insert D'_1+width:InterpolationWidths 19 0.12088705 insert D'_1+width:InterpolationWidths 20 0.12618583 insert D'_1+width:InterpolationWidths 21 0.13146681 insert D'_1+width:InterpolationWidths 22 0.13673353 insert D'_1+width:InterpolationWidths 23 0.14198917 insert D'_1+width:InterpolationWidths 24 0.14723656 insert D'_1+width:InterpolationWidths 25 0.15247827 insert D'_1+width:InterpolationWidths 26 0.15771664 insert D'_1+width:InterpolationWidths 27 0.16295381 insert D'_1+width:InterpolationWidths 28 0.16819174 insert D'_1+width:InterpolationWidths 29 0.17343228 insert D'_1+width:InterpolationWidths 30 0.17867713 insert D'_1+width:InterpolationWidths 31 0.18392787 insert D'_1+width:InterpolationWidths 32 0.18918601 insert D'_1+width:InterpolationWidths 33 0.19445295 insert D'_1+width:InterpolationWidths 34 0.19973003 insert D'_1+width:InterpolationWidths 35 0.20501852 insert D'_1+width:InterpolationWidths 36 0.21031961 insert D'_1+width:InterpolationWidths 37 0.21563444 insert D'_1+width:InterpolationWidths 38 0.22096412 insert D'_1+width:InterpolationWidths 39 0.2263097 insert D'_1+width:InterpolationWidths 40 0.23167217 insert D'_1+width:InterpolationWidths 41 0.23705251 insert D'_1+width:InterpolationWidths 42 0.24245164 insert D'_1+width:InterpolationWidths 43 0.24787047 insert D'_1+width:InterpolationWidths 44 0.25330986 insert D'_1+width:InterpolationWidths 45 0.25877065 insert D'_1+width:InterpolationWidths 46 0.26425365 insert D'_1+width:InterpolationWidths 47 0.26975965 insert D'_1+width:InterpolationWidths 48 0.27528941 insert D'_1+width:InterpolationWidths 49 0.28084367 insert D'_1+width:InterpolationWidths 50 0.28642317 insert D'_1+width:InterpolationWidths 51 0.29202859 insert D'_1+width:InterpolationWidths 52 0.29766063 insert D'_1+width:InterpolationWidths 53 0.30331996 insert D'_1+width:InterpolationWidths 54 0 insert D'_1+width:InterpolationWidths 55 0 insert D'_1+width:InterpolationWidths 56 0.012247552 insert D'_1+width:InterpolationWidths 57 0.044095664 insert D'_1+width:InterpolationWidths 58 0.062800773 insert D'_1+width:InterpolationWidths 59 0.078398192 insert D'_1+width:InterpolationWidths 60 0.092462933 insert D'_1+width:InterpolationWidths 61 0.10560101 insert D'_1+width:InterpolationWidths 62 0.11811611 insert D'_1+width:InterpolationWidths 63 0.13018378 insert D'_1+width:InterpolationWidths 64 0.14191533 insert D'_1+width:InterpolationWidths 65 0.1533861 insert D'_1+width:InterpolationWidths 66 0.16464968 insert D'_1+width:InterpolationWidths 67 0.17574573 insert D'_1+width:InterpolationWidths 68 0.18670457 insert D'_1+width:InterpolationWidths 69 0.19754999 insert D'_1+width:InterpolationWidths 70 0.20830111 insert D'_1+width:InterpolationWidths 71 0.21897359 insert D'_1+width:InterpolationWidths 72 0.22958051 insert D'_1+width:InterpolationWidths 73 0.24013294 insert D'_1+width:InterpolationWidths 74 0.25064039 insert D'_1+width:InterpolationWidths 75 0.26111113 insert D'_1+width:InterpolationWidths 76 0.27155243 insert D'_1+width:InterpolationWidths 77 0.28197072 insert D'_1+width:InterpolationWidths 78 0.2923718 insert D'_1+width:InterpolationWidths 79 0.30276088 insert D'_1+width:InterpolationWidths 80 0.31314269 insert D'_1+width:InterpolationWidths 81 0.32352159 insert D'_1+width:InterpolationWidths 82 0.33390155 insert D'_1+width:InterpolationWidths 83 0.34428629 insert D'_1+width:InterpolationWidths 84 0.35467924 insert D'_1+width:InterpolationWidths 85 0.36508361 insert D'_1+width:InterpolationWidths 86 0.37550242 insert D'_1+width:InterpolationWidths 87 0.38593851 insert D'_1+width:InterpolationWidths 88 0.39639455 insert D'_1+width:InterpolationWidths 89 0.40687308 insert D'_1+width:InterpolationWidths 90 0.41737651 insert D'_1+width:InterpolationWidths 91 0.42790715 insert D'_1+width:InterpolationWidths 92 0.43846718 insert D'_1+width:InterpolationWidths 93 0.4490587 insert D'_1+width:InterpolationWidths 94 0.45968372 insert D'_1+width:InterpolationWidths 95 0.47034418 insert D'_1+width:InterpolationWidths 96 0.48104194 insert D'_1+width:InterpolationWidths 97 0.49177879 insert D'_1+width:InterpolationWidths 98 0.50255646 insert D'_1+width:InterpolationWidths 99 0.51337662 insert D'_1+width:InterpolationWidths 100 0.5242409 insert D'_1+width:InterpolationWidths 101 0.53515085 insert D'_1+width:InterpolationWidths 102 0.54610801 insert D'_1+width:InterpolationWidths 103 0.55711386 insert D'_1+width:InterpolationWidths 104 0.56816982 insert D'_1+width:InterpolationWidths 105 0.57927731 insert D'_1+width:InterpolationWidths 106 0.59043768 insert D'_1+width:InterpolationWidths 107 0.60165227 insert D'_1+width:NumberofEntries 0 54 insert D'_1+width:NumberofEntries 1 108 newdef /Herwig/Particles/D'_1+:Width_generator D'_1+width newdef /Herwig/Particles/D'_1-:Width_generator D'_1+width # create Herwig::GenericWidthGenerator D'_10width newdef D'_10width:Particle /Herwig/Particles/D'_10 newdef D'_10width:Prefactor 1 newdef D'_10width:BRNormalize 1 newdef D'_10width:BRMinimum 0.01 newdef D'_10width:Points 50 newdef D'_10width:InterpolationOrder 1 insert D'_10width:MEtype 0 2 insert D'_10width:MEtype 1 2 insert D'_10width:MEcode 0 0 insert D'_10width:MEcode 1 0 insert D'_10width:MEcoupling 0 0.999764 insert D'_10width:MEcoupling 1 0.990729 insert D'_10width:ModeOn 0 1 insert D'_10width:ModeOn 1 1 insert D'_10width:MinimumMasses 0 2.14861 insert D'_10width:MinimumMasses 1 2.141 insert D'_10width:MEmass1 0 2.01 insert D'_10width:MEmass1 1 2.0067 insert D'_10width:MEmass2 0 0.13957 insert D'_10width:MEmass2 1 0.134978 insert D'_10width:DecayModes 0 D'_10->D*+,pi-; insert D'_10width:DecayModes 1 D'_10->D*0,pi0; insert D'_10width:InterpolationMasses 0 2.1099412 insert D'_10width:InterpolationMasses 1 2.1486102 insert D'_10width:InterpolationMasses 2 2.1486102 insert D'_10width:InterpolationMasses 3 2.1679447 insert D'_10width:InterpolationMasses 4 2.1872792 insert D'_10width:InterpolationMasses 5 2.2066136 insert D'_10width:InterpolationMasses 6 2.2259481 insert D'_10width:InterpolationMasses 7 2.2452826 insert D'_10width:InterpolationMasses 8 2.2646171 insert D'_10width:InterpolationMasses 9 2.2839516 insert D'_10width:InterpolationMasses 10 2.3032861 insert D'_10width:InterpolationMasses 11 2.3226206 insert D'_10width:InterpolationMasses 12 2.341955 insert D'_10width:InterpolationMasses 13 2.3612895 insert D'_10width:InterpolationMasses 14 2.380624 insert D'_10width:InterpolationMasses 15 2.3999585 insert D'_10width:InterpolationMasses 16 2.419293 insert D'_10width:InterpolationMasses 17 2.4386275 insert D'_10width:InterpolationMasses 18 2.457962 insert D'_10width:InterpolationMasses 19 2.4772964 insert D'_10width:InterpolationMasses 20 2.4966309 insert D'_10width:InterpolationMasses 21 2.5159654 insert D'_10width:InterpolationMasses 22 2.5352999 insert D'_10width:InterpolationMasses 23 2.5546344 insert D'_10width:InterpolationMasses 24 2.5739689 insert D'_10width:InterpolationMasses 25 2.5933034 insert D'_10width:InterpolationMasses 26 2.6126378 insert D'_10width:InterpolationMasses 27 2.6319723 insert D'_10width:InterpolationMasses 28 2.6513068 insert D'_10width:InterpolationMasses 29 2.6706413 insert D'_10width:InterpolationMasses 30 2.6899758 insert D'_10width:InterpolationMasses 31 2.7093103 insert D'_10width:InterpolationMasses 32 2.7286448 insert D'_10width:InterpolationMasses 33 2.7479792 insert D'_10width:InterpolationMasses 34 2.7673137 insert D'_10width:InterpolationMasses 35 2.7866482 insert D'_10width:InterpolationMasses 36 2.8059827 insert D'_10width:InterpolationMasses 37 2.8253172 insert D'_10width:InterpolationMasses 38 2.8446517 insert D'_10width:InterpolationMasses 39 2.8639862 insert D'_10width:InterpolationMasses 40 2.8833207 insert D'_10width:InterpolationMasses 41 2.9026551 insert D'_10width:InterpolationMasses 42 2.9219896 insert D'_10width:InterpolationMasses 43 2.9413241 insert D'_10width:InterpolationMasses 44 2.9606586 insert D'_10width:InterpolationMasses 45 2.9799931 insert D'_10width:InterpolationMasses 46 2.9993276 insert D'_10width:InterpolationMasses 47 3.0186621 insert D'_10width:InterpolationMasses 48 3.0379965 insert D'_10width:InterpolationMasses 49 3.057331 insert D'_10width:InterpolationMasses 50 3.0766655 insert D'_10width:InterpolationMasses 51 3.096 insert D'_10width:InterpolationMasses 52 3.1153345 insert D'_10width:InterpolationMasses 53 3.134669 insert D'_10width:InterpolationMasses 54 2.1093061 insert D'_10width:InterpolationMasses 55 2.1409976 insert D'_10width:InterpolationMasses 56 2.148 insert D'_10width:InterpolationMasses 57 2.1673469 insert D'_10width:InterpolationMasses 58 2.1866939 insert D'_10width:InterpolationMasses 59 2.2060408 insert D'_10width:InterpolationMasses 60 2.2253878 insert D'_10width:InterpolationMasses 61 2.2447347 insert D'_10width:InterpolationMasses 62 2.2640816 insert D'_10width:InterpolationMasses 63 2.2834286 insert D'_10width:InterpolationMasses 64 2.3027755 insert D'_10width:InterpolationMasses 65 2.3221224 insert D'_10width:InterpolationMasses 66 2.3414694 insert D'_10width:InterpolationMasses 67 2.3608163 insert D'_10width:InterpolationMasses 68 2.3801633 insert D'_10width:InterpolationMasses 69 2.3995102 insert D'_10width:InterpolationMasses 70 2.4188571 insert D'_10width:InterpolationMasses 71 2.4382041 insert D'_10width:InterpolationMasses 72 2.457551 insert D'_10width:InterpolationMasses 73 2.476898 insert D'_10width:InterpolationMasses 74 2.4962449 insert D'_10width:InterpolationMasses 75 2.5155918 insert D'_10width:InterpolationMasses 76 2.5349388 insert D'_10width:InterpolationMasses 77 2.5542857 insert D'_10width:InterpolationMasses 78 2.5736327 insert D'_10width:InterpolationMasses 79 2.5929796 insert D'_10width:InterpolationMasses 80 2.6123265 insert D'_10width:InterpolationMasses 81 2.6316735 insert D'_10width:InterpolationMasses 82 2.6510204 insert D'_10width:InterpolationMasses 83 2.6703673 insert D'_10width:InterpolationMasses 84 2.6897143 insert D'_10width:InterpolationMasses 85 2.7090612 insert D'_10width:InterpolationMasses 86 2.7284082 insert D'_10width:InterpolationMasses 87 2.7477551 insert D'_10width:InterpolationMasses 88 2.767102 insert D'_10width:InterpolationMasses 89 2.786449 insert D'_10width:InterpolationMasses 90 2.8057959 insert D'_10width:InterpolationMasses 91 2.8251429 insert D'_10width:InterpolationMasses 92 2.8444898 insert D'_10width:InterpolationMasses 93 2.8638367 insert D'_10width:InterpolationMasses 94 2.8831837 insert D'_10width:InterpolationMasses 95 2.9025306 insert D'_10width:InterpolationMasses 96 2.9218776 insert D'_10width:InterpolationMasses 97 2.9412245 insert D'_10width:InterpolationMasses 98 2.9605714 insert D'_10width:InterpolationMasses 99 2.9799184 insert D'_10width:InterpolationMasses 100 2.9992653 insert D'_10width:InterpolationMasses 101 3.0186122 insert D'_10width:InterpolationMasses 102 3.0379592 insert D'_10width:InterpolationMasses 103 3.0573061 insert D'_10width:InterpolationMasses 104 3.0766531 insert D'_10width:InterpolationMasses 105 3.096 insert D'_10width:InterpolationMasses 106 3.1153469 insert D'_10width:InterpolationMasses 107 3.1346939 insert D'_10width:InterpolationWidths 0 0 insert D'_10width:InterpolationWidths 1 0 insert D'_10width:InterpolationWidths 2 0 insert D'_10width:InterpolationWidths 3 0.041441093 insert D'_10width:InterpolationWidths 4 0.061071446 insert D'_10width:InterpolationWidths 5 0.077132121 insert D'_10width:InterpolationWidths 6 0.091510472 insert D'_10width:InterpolationWidths 7 0.10489199 insert D'_10width:InterpolationWidths 8 0.11761112 insert D'_10width:InterpolationWidths 9 0.12985815 insert D'_10width:InterpolationWidths 10 0.14175238 insert D'_10width:InterpolationWidths 11 0.15337392 insert D'_10width:InterpolationWidths 12 0.16477944 insert D'_10width:InterpolationWidths 13 0.17601061 insert D'_10width:InterpolationWidths 14 0.18709919 insert D'_10width:InterpolationWidths 15 0.19807 insert D'_10width:InterpolationWidths 16 0.20894293 insert D'_10width:InterpolationWidths 17 0.21973422 insert D'_10width:InterpolationWidths 18 0.23045741 insert D'_10width:InterpolationWidths 19 0.24112393 insert D'_10width:InterpolationWidths 20 0.25174359 insert D'_10width:InterpolationWidths 21 0.26232488 insert D'_10width:InterpolationWidths 22 0.27287527 insert D'_10width:InterpolationWidths 23 0.28340138 insert D'_10width:InterpolationWidths 24 0.29390913 insert D'_10width:InterpolationWidths 25 0.30440386 insert D'_10width:InterpolationWidths 26 0.31489042 insert D'_10width:InterpolationWidths 27 0.32537323 insert D'_10width:InterpolationWidths 28 0.33585637 insert D'_10width:InterpolationWidths 29 0.34634362 insert D'_10width:InterpolationWidths 30 0.35683848 insert D'_10width:InterpolationWidths 31 0.36734423 insert D'_10width:InterpolationWidths 32 0.37786392 insert D'_10width:InterpolationWidths 33 0.38840045 insert D'_10width:InterpolationWidths 34 0.39895653 insert D'_10width:InterpolationWidths 35 0.40953476 insert D'_10width:InterpolationWidths 36 0.42013757 insert D'_10width:InterpolationWidths 37 0.4307673 insert D'_10width:InterpolationWidths 38 0.44142618 insert D'_10width:InterpolationWidths 39 0.45211634 insert D'_10width:InterpolationWidths 40 0.46283981 insert D'_10width:InterpolationWidths 41 0.47359855 insert D'_10width:InterpolationWidths 42 0.48439446 insert D'_10width:InterpolationWidths 43 0.49522935 insert D'_10width:InterpolationWidths 44 0.50610497 insert D'_10width:InterpolationWidths 45 0.51702302 insert D'_10width:InterpolationWidths 46 0.52798514 insert D'_10width:InterpolationWidths 47 0.53899292 insert D'_10width:InterpolationWidths 48 0.55004789 insert D'_10width:InterpolationWidths 49 0.56115156 insert D'_10width:InterpolationWidths 50 0.57230538 insert D'_10width:InterpolationWidths 51 0.58351077 insert D'_10width:InterpolationWidths 52 0.5947691 insert D'_10width:InterpolationWidths 53 0.60608173 insert D'_10width:InterpolationWidths 54 0 insert D'_10width:InterpolationWidths 55 0 insert D'_10width:InterpolationWidths 56 0.011712304 insert D'_10width:InterpolationWidths 57 0.024332215 insert D'_10width:InterpolationWidths 58 0.033152222 insert D'_10width:InterpolationWidths 59 0.040713746 insert D'_10width:InterpolationWidths 60 0.047614616 insert D'_10width:InterpolationWidths 61 0.054104158 insert D'_10width:InterpolationWidths 62 0.060312327 insert D'_10width:InterpolationWidths 63 0.066316071 insert D'_10width:InterpolationWidths 64 0.072164977 insert D'_10width:InterpolationWidths 65 0.077893021 insert D'_10width:InterpolationWidths 66 0.083524607 insert D'_10width:InterpolationWidths 67 0.089077934 insert D'_10width:InterpolationWidths 68 0.094567003 insert D'_10width:InterpolationWidths 69 0.10000287 insert D'_10width:InterpolationWidths 70 0.10539447 insert D'_10width:InterpolationWidths 71 0.11074915 insert D'_10width:InterpolationWidths 72 0.11607307 insert D'_10width:InterpolationWidths 73 0.12137148 insert D'_10width:InterpolationWidths 74 0.12664889 insert D'_10width:InterpolationWidths 75 0.13190925 insert D'_10width:InterpolationWidths 76 0.13715603 insert D'_10width:InterpolationWidths 77 0.14239233 insert D'_10width:InterpolationWidths 78 0.14762093 insert D'_10width:InterpolationWidths 79 0.15284434 insert D'_10width:InterpolationWidths 80 0.15806487 insert D'_10width:InterpolationWidths 81 0.16328462 insert D'_10width:InterpolationWidths 82 0.16850554 insert D'_10width:InterpolationWidths 83 0.17372941 insert D'_10width:InterpolationWidths 84 0.17895793 insert D'_10width:InterpolationWidths 85 0.18419267 insert D'_10width:InterpolationWidths 86 0.1894351 insert D'_10width:InterpolationWidths 87 0.19468662 insert D'_10width:InterpolationWidths 88 0.19994855 insert D'_10width:InterpolationWidths 89 0.20522213 insert D'_10width:InterpolationWidths 90 0.21050855 insert D'_10width:InterpolationWidths 91 0.21580895 insert D'_10width:InterpolationWidths 92 0.22112441 insert D'_10width:InterpolationWidths 93 0.22645597 insert D'_10width:InterpolationWidths 94 0.23180463 insert D'_10width:InterpolationWidths 95 0.23717134 insert D'_10width:InterpolationWidths 96 0.24255703 insert D'_10width:InterpolationWidths 97 0.2479626 insert D'_10width:InterpolationWidths 98 0.25338889 insert D'_10width:InterpolationWidths 99 0.25883674 insert D'_10width:InterpolationWidths 100 0.26430696 insert D'_10width:InterpolationWidths 101 0.26980032 insert D'_10width:InterpolationWidths 102 0.2753176 insert D'_10width:InterpolationWidths 103 0.28085951 insert D'_10width:InterpolationWidths 104 0.2864268 insert D'_10width:InterpolationWidths 105 0.29202014 insert D'_10width:InterpolationWidths 106 0.29764022 insert D'_10width:InterpolationWidths 107 0.30328771 insert D'_10width:NumberofEntries 0 54 insert D'_10width:NumberofEntries 1 108 newdef /Herwig/Particles/D'_1bar0:Width_generator D'_10width newdef /Herwig/Particles/D'_10:Width_generator D'_10width # create Herwig::GenericWidthGenerator D_10width newdef D_10width:Particle /Herwig/Particles/D_10 newdef D_10width:Prefactor 1 newdef D_10width:BRNormalize 1 newdef D_10width:BRMinimum 0.01 newdef D_10width:Points 50 newdef D_10width:InterpolationOrder 1 insert D_10width:MEtype 0 2 insert D_10width:MEtype 1 2 insert D_10width:MEcode 0 0 insert D_10width:MEcode 1 0 insert D_10width:MEcoupling 0 1.00896 insert D_10width:MEcoupling 1 0.992315 insert D_10width:ModeOn 0 1 insert D_10width:ModeOn 1 1 insert D_10width:MinimumMasses 0 2.14861 insert D_10width:MinimumMasses 1 2.141 insert D_10width:MEmass1 0 2.01 insert D_10width:MEmass1 1 2.0067 insert D_10width:MEmass2 0 0.13957 insert D_10width:MEmass2 1 0.134978 insert D_10width:DecayModes 0 D_10->D*+,pi-; insert D_10width:DecayModes 1 D_10->D*0,pi0; insert D_10width:InterpolationMasses 0 2.3119735 insert D_10width:InterpolationMasses 1 2.3161367 insert D_10width:InterpolationMasses 2 2.3203 insert D_10width:InterpolationMasses 3 2.3244633 insert D_10width:InterpolationMasses 4 2.3286265 insert D_10width:InterpolationMasses 5 2.3327898 insert D_10width:InterpolationMasses 6 2.3369531 insert D_10width:InterpolationMasses 7 2.3411163 insert D_10width:InterpolationMasses 8 2.3452796 insert D_10width:InterpolationMasses 9 2.3494429 insert D_10width:InterpolationMasses 10 2.3536061 insert D_10width:InterpolationMasses 11 2.3577694 insert D_10width:InterpolationMasses 12 2.3619327 insert D_10width:InterpolationMasses 13 2.3660959 insert D_10width:InterpolationMasses 14 2.3702592 insert D_10width:InterpolationMasses 15 2.3744224 insert D_10width:InterpolationMasses 16 2.3785857 insert D_10width:InterpolationMasses 17 2.382749 insert D_10width:InterpolationMasses 18 2.3869122 insert D_10width:InterpolationMasses 19 2.3910755 insert D_10width:InterpolationMasses 20 2.3952388 insert D_10width:InterpolationMasses 21 2.399402 insert D_10width:InterpolationMasses 22 2.4035653 insert D_10width:InterpolationMasses 23 2.4077286 insert D_10width:InterpolationMasses 24 2.4118918 insert D_10width:InterpolationMasses 25 2.4160551 insert D_10width:InterpolationMasses 26 2.4202184 insert D_10width:InterpolationMasses 27 2.4243816 insert D_10width:InterpolationMasses 28 2.4285449 insert D_10width:InterpolationMasses 29 2.4327082 insert D_10width:InterpolationMasses 30 2.4368714 insert D_10width:InterpolationMasses 31 2.4410347 insert D_10width:InterpolationMasses 32 2.445198 insert D_10width:InterpolationMasses 33 2.4493612 insert D_10width:InterpolationMasses 34 2.4535245 insert D_10width:InterpolationMasses 35 2.4576878 insert D_10width:InterpolationMasses 36 2.461851 insert D_10width:InterpolationMasses 37 2.4660143 insert D_10width:InterpolationMasses 38 2.4701776 insert D_10width:InterpolationMasses 39 2.4743408 insert D_10width:InterpolationMasses 40 2.4785041 insert D_10width:InterpolationMasses 41 2.4826673 insert D_10width:InterpolationMasses 42 2.4868306 insert D_10width:InterpolationMasses 43 2.4909939 insert D_10width:InterpolationMasses 44 2.4951571 insert D_10width:InterpolationMasses 45 2.4993204 insert D_10width:InterpolationMasses 46 2.5034837 insert D_10width:InterpolationMasses 47 2.5076469 insert D_10width:InterpolationMasses 48 2.5118102 insert D_10width:InterpolationMasses 49 2.5159735 insert D_10width:InterpolationMasses 50 2.5201367 insert D_10width:InterpolationMasses 51 2.5243 insert D_10width:InterpolationMasses 52 2.5284633 insert D_10width:InterpolationMasses 53 2.5326265 insert D_10width:InterpolationMasses 54 2.3119735 insert D_10width:InterpolationMasses 55 2.3161367 insert D_10width:InterpolationMasses 56 2.3203 insert D_10width:InterpolationMasses 57 2.3244633 insert D_10width:InterpolationMasses 58 2.3286265 insert D_10width:InterpolationMasses 59 2.3327898 insert D_10width:InterpolationMasses 60 2.3369531 insert D_10width:InterpolationMasses 61 2.3411163 insert D_10width:InterpolationMasses 62 2.3452796 insert D_10width:InterpolationMasses 63 2.3494429 insert D_10width:InterpolationMasses 64 2.3536061 insert D_10width:InterpolationMasses 65 2.3577694 insert D_10width:InterpolationMasses 66 2.3619327 insert D_10width:InterpolationMasses 67 2.3660959 insert D_10width:InterpolationMasses 68 2.3702592 insert D_10width:InterpolationMasses 69 2.3744224 insert D_10width:InterpolationMasses 70 2.3785857 insert D_10width:InterpolationMasses 71 2.382749 insert D_10width:InterpolationMasses 72 2.3869122 insert D_10width:InterpolationMasses 73 2.3910755 insert D_10width:InterpolationMasses 74 2.3952388 insert D_10width:InterpolationMasses 75 2.399402 insert D_10width:InterpolationMasses 76 2.4035653 insert D_10width:InterpolationMasses 77 2.4077286 insert D_10width:InterpolationMasses 78 2.4118918 insert D_10width:InterpolationMasses 79 2.4160551 insert D_10width:InterpolationMasses 80 2.4202184 insert D_10width:InterpolationMasses 81 2.4243816 insert D_10width:InterpolationMasses 82 2.4285449 insert D_10width:InterpolationMasses 83 2.4327082 insert D_10width:InterpolationMasses 84 2.4368714 insert D_10width:InterpolationMasses 85 2.4410347 insert D_10width:InterpolationMasses 86 2.445198 insert D_10width:InterpolationMasses 87 2.4493612 insert D_10width:InterpolationMasses 88 2.4535245 insert D_10width:InterpolationMasses 89 2.4576878 insert D_10width:InterpolationMasses 90 2.461851 insert D_10width:InterpolationMasses 91 2.4660143 insert D_10width:InterpolationMasses 92 2.4701776 insert D_10width:InterpolationMasses 93 2.4743408 insert D_10width:InterpolationMasses 94 2.4785041 insert D_10width:InterpolationMasses 95 2.4826673 insert D_10width:InterpolationMasses 96 2.4868306 insert D_10width:InterpolationMasses 97 2.4909939 insert D_10width:InterpolationMasses 98 2.4951571 insert D_10width:InterpolationMasses 99 2.4993204 insert D_10width:InterpolationMasses 100 2.5034837 insert D_10width:InterpolationMasses 101 2.5076469 insert D_10width:InterpolationMasses 102 2.5118102 insert D_10width:InterpolationMasses 103 2.5159735 insert D_10width:InterpolationMasses 104 2.5201367 insert D_10width:InterpolationMasses 105 2.5243 insert D_10width:InterpolationMasses 106 2.5284633 insert D_10width:InterpolationMasses 107 2.5326265 insert D_10width:InterpolationWidths 0 0.0094077008 insert D_10width:InterpolationWidths 1 0.0095676298 insert D_10width:InterpolationWidths 2 0.0097268713 insert D_10width:InterpolationWidths 3 0.0098854579 insert D_10width:InterpolationWidths 4 0.01004342 insert D_10width:InterpolationWidths 5 0.010200787 insert D_10width:InterpolationWidths 6 0.010357584 insert D_10width:InterpolationWidths 7 0.010513839 insert D_10width:InterpolationWidths 8 0.010669573 insert D_10width:InterpolationWidths 9 0.010824811 insert D_10width:InterpolationWidths 10 0.010979572 insert D_10width:InterpolationWidths 11 0.011133878 insert D_10width:InterpolationWidths 12 0.011287747 insert D_10width:InterpolationWidths 13 0.011441197 insert D_10width:InterpolationWidths 14 0.011594246 insert D_10width:InterpolationWidths 15 0.011746909 insert D_10width:InterpolationWidths 16 0.011899202 insert D_10width:InterpolationWidths 17 0.012051139 insert D_10width:InterpolationWidths 18 0.012202736 insert D_10width:InterpolationWidths 19 0.012354004 insert D_10width:InterpolationWidths 20 0.012504958 insert D_10width:InterpolationWidths 21 0.012655609 insert D_10width:InterpolationWidths 22 0.012805968 insert D_10width:InterpolationWidths 23 0.012956048 insert D_10width:InterpolationWidths 24 0.013105859 insert D_10width:InterpolationWidths 25 0.01325541 insert D_10width:InterpolationWidths 26 0.013404713 insert D_10width:InterpolationWidths 27 0.013553776 insert D_10width:InterpolationWidths 28 0.013702609 insert D_10width:InterpolationWidths 29 0.01385122 insert D_10width:InterpolationWidths 30 0.013999618 insert D_10width:InterpolationWidths 31 0.014147811 insert D_10width:InterpolationWidths 32 0.014295807 insert D_10width:InterpolationWidths 33 0.014443614 insert D_10width:InterpolationWidths 34 0.014591238 insert D_10width:InterpolationWidths 35 0.014738687 insert D_10width:InterpolationWidths 36 0.014885968 insert D_10width:InterpolationWidths 37 0.015033088 insert D_10width:InterpolationWidths 38 0.015180052 insert D_10width:InterpolationWidths 39 0.015326868 insert D_10width:InterpolationWidths 40 0.01547354 insert D_10width:InterpolationWidths 41 0.015620076 insert D_10width:InterpolationWidths 42 0.015766479 insert D_10width:InterpolationWidths 43 0.015912757 insert D_10width:InterpolationWidths 44 0.016058915 insert D_10width:InterpolationWidths 45 0.016204957 insert D_10width:InterpolationWidths 46 0.016350889 insert D_10width:InterpolationWidths 47 0.016496715 insert D_10width:InterpolationWidths 48 0.01664244 insert D_10width:InterpolationWidths 49 0.01678807 insert D_10width:InterpolationWidths 50 0.016933608 insert D_10width:InterpolationWidths 51 0.017079059 insert D_10width:InterpolationWidths 52 0.017224428 insert D_10width:InterpolationWidths 53 0.017369717 insert D_10width:InterpolationWidths 54 0.0048262864 insert D_10width:InterpolationWidths 55 0.0049055747 insert D_10width:InterpolationWidths 56 0.0049845567 insert D_10width:InterpolationWidths 57 0.0050632463 insert D_10width:InterpolationWidths 58 0.0051416569 insert D_10width:InterpolationWidths 59 0.0052198009 insert D_10width:InterpolationWidths 60 0.0052976901 insert D_10width:InterpolationWidths 61 0.0053753354 insert D_10width:InterpolationWidths 62 0.0054527473 insert D_10width:InterpolationWidths 63 0.0055299357 insert D_10width:InterpolationWidths 64 0.0056069099 insert D_10width:InterpolationWidths 65 0.0056836788 insert D_10width:InterpolationWidths 66 0.0057602508 insert D_10width:InterpolationWidths 67 0.0058366338 insert D_10width:InterpolationWidths 68 0.0059128355 insert D_10width:InterpolationWidths 69 0.005988863 insert D_10width:InterpolationWidths 70 0.0060647233 insert D_10width:InterpolationWidths 71 0.0061404229 insert D_10width:InterpolationWidths 72 0.0062159682 insert D_10width:InterpolationWidths 73 0.0062913651 insert D_10width:InterpolationWidths 74 0.0063666194 insert D_10width:InterpolationWidths 75 0.0064417365 insert D_10width:InterpolationWidths 76 0.0065167218 insert D_10width:InterpolationWidths 77 0.0065915802 insert D_10width:InterpolationWidths 78 0.0066663167 insert D_10width:InterpolationWidths 79 0.006740936 insert D_10width:InterpolationWidths 80 0.0068154424 insert D_10width:InterpolationWidths 81 0.0068898403 insert D_10width:InterpolationWidths 82 0.006964134 insert D_10width:InterpolationWidths 83 0.0070383273 insert D_10width:InterpolationWidths 84 0.0071124242 insert D_10width:InterpolationWidths 85 0.0071864283 insert D_10width:InterpolationWidths 86 0.0072603434 insert D_10width:InterpolationWidths 87 0.0073341728 insert D_10width:InterpolationWidths 88 0.0074079199 insert D_10width:InterpolationWidths 89 0.007481588 insert D_10width:InterpolationWidths 90 0.0075551803 insert D_10width:InterpolationWidths 91 0.0076286997 insert D_10width:InterpolationWidths 92 0.0077021493 insert D_10width:InterpolationWidths 93 0.007775532 insert D_10width:InterpolationWidths 94 0.0078488504 insert D_10width:InterpolationWidths 95 0.0079221074 insert D_10width:InterpolationWidths 96 0.0079953056 insert D_10width:InterpolationWidths 97 0.0080684474 insert D_10width:InterpolationWidths 98 0.0081415354 insert D_10width:InterpolationWidths 99 0.008214572 insert D_10width:InterpolationWidths 100 0.0082875596 insert D_10width:InterpolationWidths 101 0.0083605004 insert D_10width:InterpolationWidths 102 0.0084333967 insert D_10width:InterpolationWidths 103 0.0085062507 insert D_10width:InterpolationWidths 104 0.0085790644 insert D_10width:InterpolationWidths 105 0.00865184 insert D_10width:InterpolationWidths 106 0.0087245794 insert D_10width:InterpolationWidths 107 0.0087972846 insert D_10width:NumberofEntries 0 54 insert D_10width:NumberofEntries 1 108 newdef /Herwig/Particles/D_10:Width_generator D_10width newdef /Herwig/Particles/D_1bar0:Width_generator D_10width # create Herwig::GenericWidthGenerator D_1+width newdef D_1+width:Particle /Herwig/Particles/D_1+ newdef D_1+width:Prefactor 1 newdef D_1+width:BRNormalize 1 newdef D_1+width:BRMinimum 0.01 newdef D_1+width:Points 50 newdef D_1+width:InterpolationOrder 1 insert D_1+width:MEtype 0 2 insert D_1+width:MEtype 1 2 insert D_1+width:MEcode 0 0 insert D_1+width:MEcode 1 0 insert D_1+width:MEcoupling 0 1.0005 insert D_1+width:MEcoupling 1 0.998307 insert D_1+width:ModeOn 0 1 insert D_1+width:ModeOn 1 1 insert D_1+width:MinimumMasses 0 2.14402 insert D_1+width:MinimumMasses 1 2.14559 insert D_1+width:MEmass1 0 2.01 insert D_1+width:MEmass1 1 2.0067 insert D_1+width:MEmass2 0 0.134978 insert D_1+width:MEmass2 1 0.13957 insert D_1+width:DecayModes 0 D_1+->D*+,pi0; insert D_1+width:DecayModes 1 D_1+->D*0,pi+; insert D_1+width:InterpolationMasses 0 2.2881959 insert D_1+width:InterpolationMasses 1 2.293298 insert D_1+width:InterpolationMasses 2 2.2984 insert D_1+width:InterpolationMasses 3 2.303502 insert D_1+width:InterpolationMasses 4 2.3086041 insert D_1+width:InterpolationMasses 5 2.3137061 insert D_1+width:InterpolationMasses 6 2.3188082 insert D_1+width:InterpolationMasses 7 2.3239102 insert D_1+width:InterpolationMasses 8 2.3290122 insert D_1+width:InterpolationMasses 9 2.3341143 insert D_1+width:InterpolationMasses 10 2.3392163 insert D_1+width:InterpolationMasses 11 2.3443184 insert D_1+width:InterpolationMasses 12 2.3494204 insert D_1+width:InterpolationMasses 13 2.3545224 insert D_1+width:InterpolationMasses 14 2.3596245 insert D_1+width:InterpolationMasses 15 2.3647265 insert D_1+width:InterpolationMasses 16 2.3698286 insert D_1+width:InterpolationMasses 17 2.3749306 insert D_1+width:InterpolationMasses 18 2.3800327 insert D_1+width:InterpolationMasses 19 2.3851347 insert D_1+width:InterpolationMasses 20 2.3902367 insert D_1+width:InterpolationMasses 21 2.3953388 insert D_1+width:InterpolationMasses 22 2.4004408 insert D_1+width:InterpolationMasses 23 2.4055429 insert D_1+width:InterpolationMasses 24 2.4106449 insert D_1+width:InterpolationMasses 25 2.4157469 insert D_1+width:InterpolationMasses 26 2.420849 insert D_1+width:InterpolationMasses 27 2.425951 insert D_1+width:InterpolationMasses 28 2.4310531 insert D_1+width:InterpolationMasses 29 2.4361551 insert D_1+width:InterpolationMasses 30 2.4412571 insert D_1+width:InterpolationMasses 31 2.4463592 insert D_1+width:InterpolationMasses 32 2.4514612 insert D_1+width:InterpolationMasses 33 2.4565633 insert D_1+width:InterpolationMasses 34 2.4616653 insert D_1+width:InterpolationMasses 35 2.4667673 insert D_1+width:InterpolationMasses 36 2.4718694 insert D_1+width:InterpolationMasses 37 2.4769714 insert D_1+width:InterpolationMasses 38 2.4820735 insert D_1+width:InterpolationMasses 39 2.4871755 insert D_1+width:InterpolationMasses 40 2.4922776 insert D_1+width:InterpolationMasses 41 2.4973796 insert D_1+width:InterpolationMasses 42 2.5024816 insert D_1+width:InterpolationMasses 43 2.5075837 insert D_1+width:InterpolationMasses 44 2.5126857 insert D_1+width:InterpolationMasses 45 2.5177878 insert D_1+width:InterpolationMasses 46 2.5228898 insert D_1+width:InterpolationMasses 47 2.5279918 insert D_1+width:InterpolationMasses 48 2.5330939 insert D_1+width:InterpolationMasses 49 2.5381959 insert D_1+width:InterpolationMasses 50 2.543298 insert D_1+width:InterpolationMasses 51 2.5484 insert D_1+width:InterpolationMasses 52 2.553502 insert D_1+width:InterpolationMasses 53 2.5586041 insert D_1+width:InterpolationMasses 54 2.2881959 insert D_1+width:InterpolationMasses 55 2.293298 insert D_1+width:InterpolationMasses 56 2.2984 insert D_1+width:InterpolationMasses 57 2.303502 insert D_1+width:InterpolationMasses 58 2.3086041 insert D_1+width:InterpolationMasses 59 2.3137061 insert D_1+width:InterpolationMasses 60 2.3188082 insert D_1+width:InterpolationMasses 61 2.3239102 insert D_1+width:InterpolationMasses 62 2.3290122 insert D_1+width:InterpolationMasses 63 2.3341143 insert D_1+width:InterpolationMasses 64 2.3392163 insert D_1+width:InterpolationMasses 65 2.3443184 insert D_1+width:InterpolationMasses 66 2.3494204 insert D_1+width:InterpolationMasses 67 2.3545224 insert D_1+width:InterpolationMasses 68 2.3596245 insert D_1+width:InterpolationMasses 69 2.3647265 insert D_1+width:InterpolationMasses 70 2.3698286 insert D_1+width:InterpolationMasses 71 2.3749306 insert D_1+width:InterpolationMasses 72 2.3800327 insert D_1+width:InterpolationMasses 73 2.3851347 insert D_1+width:InterpolationMasses 74 2.3902367 insert D_1+width:InterpolationMasses 75 2.3953388 insert D_1+width:InterpolationMasses 76 2.4004408 insert D_1+width:InterpolationMasses 77 2.4055429 insert D_1+width:InterpolationMasses 78 2.4106449 insert D_1+width:InterpolationMasses 79 2.4157469 insert D_1+width:InterpolationMasses 80 2.420849 insert D_1+width:InterpolationMasses 81 2.425951 insert D_1+width:InterpolationMasses 82 2.4310531 insert D_1+width:InterpolationMasses 83 2.4361551 insert D_1+width:InterpolationMasses 84 2.4412571 insert D_1+width:InterpolationMasses 85 2.4463592 insert D_1+width:InterpolationMasses 86 2.4514612 insert D_1+width:InterpolationMasses 87 2.4565633 insert D_1+width:InterpolationMasses 88 2.4616653 insert D_1+width:InterpolationMasses 89 2.4667673 insert D_1+width:InterpolationMasses 90 2.4718694 insert D_1+width:InterpolationMasses 91 2.4769714 insert D_1+width:InterpolationMasses 92 2.4820735 insert D_1+width:InterpolationMasses 93 2.4871755 insert D_1+width:InterpolationMasses 94 2.4922776 insert D_1+width:InterpolationMasses 95 2.4973796 insert D_1+width:InterpolationMasses 96 2.5024816 insert D_1+width:InterpolationMasses 97 2.5075837 insert D_1+width:InterpolationMasses 98 2.5126857 insert D_1+width:InterpolationMasses 99 2.5177878 insert D_1+width:InterpolationMasses 100 2.5228898 insert D_1+width:InterpolationMasses 101 2.5279918 insert D_1+width:InterpolationMasses 102 2.5330939 insert D_1+width:InterpolationMasses 103 2.5381959 insert D_1+width:InterpolationMasses 104 2.543298 insert D_1+width:InterpolationMasses 105 2.5484 insert D_1+width:InterpolationMasses 106 2.553502 insert D_1+width:InterpolationMasses 107 2.5586041 insert D_1+width:InterpolationWidths 0 0.0052590638 insert D_1+width:InterpolationWidths 1 0.0053813922 insert D_1+width:InterpolationWidths 2 0.0055029483 insert D_1+width:InterpolationWidths 3 0.0056237807 insert D_1+width:InterpolationWidths 4 0.0057439338 insert D_1+width:InterpolationWidths 5 0.0058634483 insert D_1+width:InterpolationWidths 6 0.0059823616 insert D_1+width:InterpolationWidths 7 0.0061007082 insert D_1+width:InterpolationWidths 8 0.0062185197 insert D_1+width:InterpolationWidths 9 0.0063358258 insert D_1+width:InterpolationWidths 10 0.0064526536 insert D_1+width:InterpolationWidths 11 0.0065690285 insert D_1+width:InterpolationWidths 12 0.0066849743 insert D_1+width:InterpolationWidths 13 0.006800513 insert D_1+width:InterpolationWidths 14 0.0069156653 insert D_1+width:InterpolationWidths 15 0.0070304506 insert D_1+width:InterpolationWidths 16 0.0071448869 insert D_1+width:InterpolationWidths 17 0.0072589915 insert D_1+width:InterpolationWidths 18 0.0073727804 insert D_1+width:InterpolationWidths 19 0.0074862688 insert D_1+width:InterpolationWidths 20 0.007599471 insert D_1+width:InterpolationWidths 21 0.0077124006 insert D_1+width:InterpolationWidths 22 0.0078250705 insert D_1+width:InterpolationWidths 23 0.0079374928 insert D_1+width:InterpolationWidths 24 0.0080496792 insert D_1+width:InterpolationWidths 25 0.0081616405 insert D_1+width:InterpolationWidths 26 0.0082733874 insert D_1+width:InterpolationWidths 27 0.0083849299 insert D_1+width:InterpolationWidths 28 0.0084962774 insert D_1+width:InterpolationWidths 29 0.008607439 insert D_1+width:InterpolationWidths 30 0.0087184236 insert D_1+width:InterpolationWidths 31 0.0088292393 insert D_1+width:InterpolationWidths 32 0.0089398944 insert D_1+width:InterpolationWidths 33 0.0090503963 insert D_1+width:InterpolationWidths 34 0.0091607525 insert D_1+width:InterpolationWidths 35 0.0092709701 insert D_1+width:InterpolationWidths 36 0.0093810558 insert D_1+width:InterpolationWidths 37 0.0094910163 insert D_1+width:InterpolationWidths 38 0.0096008577 insert D_1+width:InterpolationWidths 39 0.0097105864 insert D_1+width:InterpolationWidths 40 0.009820208 insert D_1+width:InterpolationWidths 41 0.0099297284 insert D_1+width:InterpolationWidths 42 0.010039153 insert D_1+width:InterpolationWidths 43 0.010148487 insert D_1+width:InterpolationWidths 44 0.010257736 insert D_1+width:InterpolationWidths 45 0.010366904 insert D_1+width:InterpolationWidths 46 0.010475996 insert D_1+width:InterpolationWidths 47 0.010585018 insert D_1+width:InterpolationWidths 48 0.010693974 insert D_1+width:InterpolationWidths 49 0.010802867 insert D_1+width:InterpolationWidths 50 0.010911703 insert D_1+width:InterpolationWidths 51 0.011020485 insert D_1+width:InterpolationWidths 52 0.011129218 insert D_1+width:InterpolationWidths 53 0.011237906 insert D_1+width:InterpolationWidths 54 0.010540761 insert D_1+width:InterpolationWidths 55 0.010786462 insert D_1+width:InterpolationWidths 56 0.011030553 insert D_1+width:InterpolationWidths 57 0.011273136 insert D_1+width:InterpolationWidths 58 0.011514305 insert D_1+width:InterpolationWidths 59 0.011754144 insert D_1+width:InterpolationWidths 60 0.011992732 insert D_1+width:InterpolationWidths 61 0.012230142 insert D_1+width:InterpolationWidths 62 0.012466438 insert D_1+width:InterpolationWidths 63 0.012701684 insert D_1+width:InterpolationWidths 64 0.012935935 insert D_1+width:InterpolationWidths 65 0.013169246 insert D_1+width:InterpolationWidths 66 0.013401665 insert D_1+width:InterpolationWidths 67 0.013633239 insert D_1+width:InterpolationWidths 68 0.01386401 insert D_1+width:InterpolationWidths 69 0.014094019 insert D_1+width:InterpolationWidths 70 0.014323304 insert D_1+width:InterpolationWidths 71 0.0145519 insert D_1+width:InterpolationWidths 72 0.014779841 insert D_1+width:InterpolationWidths 73 0.015007159 insert D_1+width:InterpolationWidths 74 0.015233883 insert D_1+width:InterpolationWidths 75 0.015460042 insert D_1+width:InterpolationWidths 76 0.015685662 insert D_1+width:InterpolationWidths 77 0.015910769 insert D_1+width:InterpolationWidths 78 0.016135386 insert D_1+width:InterpolationWidths 79 0.016359537 insert D_1+width:InterpolationWidths 80 0.016583243 insert D_1+width:InterpolationWidths 81 0.016806525 insert D_1+width:InterpolationWidths 82 0.017029403 insert D_1+width:InterpolationWidths 83 0.017251895 insert D_1+width:InterpolationWidths 84 0.017474021 insert D_1+width:InterpolationWidths 85 0.017695796 insert D_1+width:InterpolationWidths 86 0.017917238 insert D_1+width:InterpolationWidths 87 0.018138362 insert D_1+width:InterpolationWidths 88 0.018359184 insert D_1+width:InterpolationWidths 89 0.018579718 insert D_1+width:InterpolationWidths 90 0.018799979 insert D_1+width:InterpolationWidths 91 0.01901998 insert D_1+width:InterpolationWidths 92 0.019239733 insert D_1+width:InterpolationWidths 93 0.019459253 insert D_1+width:InterpolationWidths 94 0.01967855 insert D_1+width:InterpolationWidths 95 0.019897636 insert D_1+width:InterpolationWidths 96 0.020116523 insert D_1+width:InterpolationWidths 97 0.020335222 insert D_1+width:InterpolationWidths 98 0.020553742 insert D_1+width:InterpolationWidths 99 0.020772096 insert D_1+width:InterpolationWidths 100 0.020990292 insert D_1+width:InterpolationWidths 101 0.021208339 insert D_1+width:InterpolationWidths 102 0.021426249 insert D_1+width:InterpolationWidths 103 0.021644028 insert D_1+width:InterpolationWidths 104 0.021861687 insert D_1+width:InterpolationWidths 105 0.022079234 insert D_1+width:InterpolationWidths 106 0.022296677 insert D_1+width:InterpolationWidths 107 0.022514023 insert D_1+width:NumberofEntries 0 54 insert D_1+width:NumberofEntries 1 108 newdef /Herwig/Particles/D_1+:Width_generator D_1+width newdef /Herwig/Particles/D_1-:Width_generator D_1+width # create Herwig::GenericWidthGenerator D_s1+width newdef D_s1+width:Particle /Herwig/Particles/D_s1+ newdef D_s1+width:Prefactor 1 newdef D_s1+width:BRNormalize 1 newdef D_s1+width:BRMinimum 0.01 newdef D_s1+width:Points 50 newdef D_s1+width:InterpolationOrder 1 insert D_s1+width:MEtype 0 2 insert D_s1+width:MEtype 1 1 insert D_s1+width:MEtype 2 0 insert D_s1+width:MEtype 3 0 insert D_s1+width:MEcode 0 0 insert D_s1+width:MEcode 1 4 insert D_s1+width:MEcode 2 0 insert D_s1+width:MEcode 3 0 insert D_s1+width:MEcoupling 0 1.00178 insert D_s1+width:MEcoupling 1 0.144302 insert D_s1+width:MEcoupling 2 0.091862 insert D_s1+width:MEcoupling 3 0.045931 insert D_s1+width:ModeOn 0 1 insert D_s1+width:ModeOn 1 1 insert D_s1+width:ModeOn 2 1 insert D_s1+width:ModeOn 3 1 insert D_s1+width:MinimumMasses 0 2.24654 insert D_s1+width:MinimumMasses 1 1.9682 insert D_s1+width:MinimumMasses 2 2.24734 insert D_s1+width:MinimumMasses 3 2.23816 insert D_s1+width:MEmass1 0 2.112 insert D_s1+width:MEmass1 1 0 insert D_s1+width:MEmass1 2 0 insert D_s1+width:MEmass1 3 0 insert D_s1+width:MEmass2 0 0.134978 insert D_s1+width:MEmass2 1 1.9682 insert D_s1+width:MEmass2 2 0 insert D_s1+width:MEmass2 3 0 insert D_s1+width:DecayModes 0 D_s1+->D_s*+,pi0; insert D_s1+width:DecayModes 1 D_s1+->D_s+,gamma; insert D_s1+width:DecayModes 2 D_s1+->D_s+,pi+,pi-; insert D_s1+width:DecayModes 3 D_s1+->D_s+,pi0,pi0; insert D_s1+width:InterpolationMasses 0 2.4584868 insert D_s1+width:InterpolationMasses 1 2.4585024 insert D_s1+width:InterpolationMasses 2 2.458518 insert D_s1+width:InterpolationMasses 3 2.4585336 insert D_s1+width:InterpolationMasses 4 2.4585492 insert D_s1+width:InterpolationMasses 5 2.4585648 insert D_s1+width:InterpolationMasses 6 2.4585804 insert D_s1+width:InterpolationMasses 7 2.458596 insert D_s1+width:InterpolationMasses 8 2.4586116 insert D_s1+width:InterpolationMasses 9 2.4586271 insert D_s1+width:InterpolationMasses 10 2.4586427 insert D_s1+width:InterpolationMasses 11 2.4586583 insert D_s1+width:InterpolationMasses 12 2.4586739 insert D_s1+width:InterpolationMasses 13 2.4586895 insert D_s1+width:InterpolationMasses 14 2.4587051 insert D_s1+width:InterpolationMasses 15 2.4587207 insert D_s1+width:InterpolationMasses 16 2.4587363 insert D_s1+width:InterpolationMasses 17 2.4587519 insert D_s1+width:InterpolationMasses 18 2.4587675 insert D_s1+width:InterpolationMasses 19 2.4587831 insert D_s1+width:InterpolationMasses 20 2.4587987 insert D_s1+width:InterpolationMasses 21 2.4588142 insert D_s1+width:InterpolationMasses 22 2.4588298 insert D_s1+width:InterpolationMasses 23 2.4588454 insert D_s1+width:InterpolationMasses 24 2.458861 insert D_s1+width:InterpolationMasses 25 2.4588766 insert D_s1+width:InterpolationMasses 26 2.4588922 insert D_s1+width:InterpolationMasses 27 2.4589078 insert D_s1+width:InterpolationMasses 28 2.4589234 insert D_s1+width:InterpolationMasses 29 2.458939 insert D_s1+width:InterpolationMasses 30 2.4589546 insert D_s1+width:InterpolationMasses 31 2.4589702 insert D_s1+width:InterpolationMasses 32 2.4589858 insert D_s1+width:InterpolationMasses 33 2.4590013 insert D_s1+width:InterpolationMasses 34 2.4590169 insert D_s1+width:InterpolationMasses 35 2.4590325 insert D_s1+width:InterpolationMasses 36 2.4590481 insert D_s1+width:InterpolationMasses 37 2.4590637 insert D_s1+width:InterpolationMasses 38 2.4590793 insert D_s1+width:InterpolationMasses 39 2.4590949 insert D_s1+width:InterpolationMasses 40 2.4591105 insert D_s1+width:InterpolationMasses 41 2.4591261 insert D_s1+width:InterpolationMasses 42 2.4591417 insert D_s1+width:InterpolationMasses 43 2.4591573 insert D_s1+width:InterpolationMasses 44 2.4591729 insert D_s1+width:InterpolationMasses 45 2.4591884 insert D_s1+width:InterpolationMasses 46 2.459204 insert D_s1+width:InterpolationMasses 47 2.4592196 insert D_s1+width:InterpolationMasses 48 2.4592352 insert D_s1+width:InterpolationMasses 49 2.4592508 insert D_s1+width:InterpolationMasses 50 2.4592664 insert D_s1+width:InterpolationMasses 51 2.459282 insert D_s1+width:InterpolationMasses 52 2.4592976 insert D_s1+width:InterpolationMasses 53 2.4593132 insert D_s1+width:InterpolationWidths 0 2.4983196e-05 insert D_s1+width:InterpolationWidths 1 2.4984481e-05 insert D_s1+width:InterpolationWidths 2 2.4985766e-05 insert D_s1+width:InterpolationWidths 3 2.498705e-05 insert D_s1+width:InterpolationWidths 4 2.4988335e-05 insert D_s1+width:InterpolationWidths 5 2.498962e-05 insert D_s1+width:InterpolationWidths 6 2.4990904e-05 insert D_s1+width:InterpolationWidths 7 2.4992189e-05 insert D_s1+width:InterpolationWidths 8 2.4993474e-05 insert D_s1+width:InterpolationWidths 9 2.4994758e-05 insert D_s1+width:InterpolationWidths 10 2.4996043e-05 insert D_s1+width:InterpolationWidths 11 2.4997327e-05 insert D_s1+width:InterpolationWidths 12 2.4998612e-05 insert D_s1+width:InterpolationWidths 13 2.4999896e-05 insert D_s1+width:InterpolationWidths 14 2.5001181e-05 insert D_s1+width:InterpolationWidths 15 2.5002466e-05 insert D_s1+width:InterpolationWidths 16 2.500375e-05 insert D_s1+width:InterpolationWidths 17 2.5005035e-05 insert D_s1+width:InterpolationWidths 18 2.5006319e-05 insert D_s1+width:InterpolationWidths 19 2.5007604e-05 insert D_s1+width:InterpolationWidths 20 2.5008888e-05 insert D_s1+width:InterpolationWidths 21 2.5010172e-05 insert D_s1+width:InterpolationWidths 22 2.5011457e-05 insert D_s1+width:InterpolationWidths 23 2.5012741e-05 insert D_s1+width:InterpolationWidths 24 2.5014026e-05 insert D_s1+width:InterpolationWidths 25 2.501531e-05 insert D_s1+width:InterpolationWidths 26 2.5016594e-05 insert D_s1+width:InterpolationWidths 27 2.5017879e-05 insert D_s1+width:InterpolationWidths 28 2.5019163e-05 insert D_s1+width:InterpolationWidths 29 2.5020448e-05 insert D_s1+width:InterpolationWidths 30 2.5021732e-05 insert D_s1+width:InterpolationWidths 31 2.5023016e-05 insert D_s1+width:InterpolationWidths 32 2.50243e-05 insert D_s1+width:InterpolationWidths 33 2.5025585e-05 insert D_s1+width:InterpolationWidths 34 2.5026869e-05 insert D_s1+width:InterpolationWidths 35 2.5028153e-05 insert D_s1+width:InterpolationWidths 36 2.5029438e-05 insert D_s1+width:InterpolationWidths 37 2.5030722e-05 insert D_s1+width:InterpolationWidths 38 2.5032006e-05 insert D_s1+width:InterpolationWidths 39 2.503329e-05 insert D_s1+width:InterpolationWidths 40 2.5034574e-05 insert D_s1+width:InterpolationWidths 41 2.5035859e-05 insert D_s1+width:InterpolationWidths 42 2.5037143e-05 insert D_s1+width:InterpolationWidths 43 2.5038427e-05 insert D_s1+width:InterpolationWidths 44 2.5039711e-05 insert D_s1+width:InterpolationWidths 45 2.5040995e-05 insert D_s1+width:InterpolationWidths 46 2.5042279e-05 insert D_s1+width:InterpolationWidths 47 2.5043563e-05 insert D_s1+width:InterpolationWidths 48 2.5044848e-05 insert D_s1+width:InterpolationWidths 49 2.5046132e-05 insert D_s1+width:InterpolationWidths 50 2.5047416e-05 insert D_s1+width:InterpolationWidths 51 2.50487e-05 insert D_s1+width:InterpolationWidths 52 2.5049984e-05 insert D_s1+width:InterpolationWidths 53 2.5051268e-05 insert D_s1+width:NumberofEntries 0 54 insert D_s1+width:NumberofEntries 1 54 insert D_s1+width:NumberofEntries 2 54 insert D_s1+width:NumberofEntries 3 54 newdef /Herwig/Particles/D_s1+:Width_generator D_s1+width newdef /Herwig/Particles/D_s1-:Width_generator D_s1+width # create Herwig::GenericWidthGenerator D'_s1+width newdef D'_s1+width:Particle /Herwig/Particles/D'_s1+ newdef D'_s1+width:Prefactor 1.00001 newdef D'_s1+width:BRNormalize 1 newdef D'_s1+width:BRMinimum 0.01 newdef D'_s1+width:Points 50 newdef D'_s1+width:InterpolationOrder 1 insert D'_s1+width:MEtype 0 2 insert D'_s1+width:MEtype 1 2 insert D'_s1+width:MEcode 0 0 insert D'_s1+width:MEcode 1 0 insert D'_s1+width:MEcoupling 0 0.942865 insert D'_s1+width:MEcoupling 1 1.06924 insert D'_s1+width:ModeOn 0 1 insert D'_s1+width:ModeOn 1 1 insert D'_s1+width:MinimumMasses 0 2.50669 insert D'_s1+width:MinimumMasses 1 2.4997 insert D'_s1+width:MEmass1 0 2.01 insert D'_s1+width:MEmass1 1 2.0067 insert D'_s1+width:MEmass2 0 0.497648 insert D'_s1+width:MEmass2 1 0.493677 insert D'_s1+width:DecayModes 0 D'_s1+->D*+,K0; insert D'_s1+width:DecayModes 1 D'_s1+->D*0,K+; insert D'_s1+width:InterpolationMasses 0 2.5212888 insert D'_s1+width:InterpolationMasses 1 2.5218194 insert D'_s1+width:InterpolationMasses 2 2.52235 insert D'_s1+width:InterpolationMasses 3 2.5228806 insert D'_s1+width:InterpolationMasses 4 2.5234112 insert D'_s1+width:InterpolationMasses 5 2.5239418 insert D'_s1+width:InterpolationMasses 6 2.5244724 insert D'_s1+width:InterpolationMasses 7 2.5250031 insert D'_s1+width:InterpolationMasses 8 2.5255337 insert D'_s1+width:InterpolationMasses 9 2.5260643 insert D'_s1+width:InterpolationMasses 10 2.5265949 insert D'_s1+width:InterpolationMasses 11 2.5271255 insert D'_s1+width:InterpolationMasses 12 2.5276561 insert D'_s1+width:InterpolationMasses 13 2.5281867 insert D'_s1+width:InterpolationMasses 14 2.5287173 insert D'_s1+width:InterpolationMasses 15 2.529248 insert D'_s1+width:InterpolationMasses 16 2.5297786 insert D'_s1+width:InterpolationMasses 17 2.5303092 insert D'_s1+width:InterpolationMasses 18 2.5308398 insert D'_s1+width:InterpolationMasses 19 2.5313704 insert D'_s1+width:InterpolationMasses 20 2.531901 insert D'_s1+width:InterpolationMasses 21 2.5324316 insert D'_s1+width:InterpolationMasses 22 2.5329622 insert D'_s1+width:InterpolationMasses 23 2.5334929 insert D'_s1+width:InterpolationMasses 24 2.5340235 insert D'_s1+width:InterpolationMasses 25 2.5345541 insert D'_s1+width:InterpolationMasses 26 2.5350847 insert D'_s1+width:InterpolationMasses 27 2.5356153 insert D'_s1+width:InterpolationMasses 28 2.5361459 insert D'_s1+width:InterpolationMasses 29 2.5366765 insert D'_s1+width:InterpolationMasses 30 2.5372071 insert D'_s1+width:InterpolationMasses 31 2.5377378 insert D'_s1+width:InterpolationMasses 32 2.5382684 insert D'_s1+width:InterpolationMasses 33 2.538799 insert D'_s1+width:InterpolationMasses 34 2.5393296 insert D'_s1+width:InterpolationMasses 35 2.5398602 insert D'_s1+width:InterpolationMasses 36 2.5403908 insert D'_s1+width:InterpolationMasses 37 2.5409214 insert D'_s1+width:InterpolationMasses 38 2.541452 insert D'_s1+width:InterpolationMasses 39 2.5419827 insert D'_s1+width:InterpolationMasses 40 2.5425133 insert D'_s1+width:InterpolationMasses 41 2.5430439 insert D'_s1+width:InterpolationMasses 42 2.5435745 insert D'_s1+width:InterpolationMasses 43 2.5441051 insert D'_s1+width:InterpolationMasses 44 2.5446357 insert D'_s1+width:InterpolationMasses 45 2.5451663 insert D'_s1+width:InterpolationMasses 46 2.5456969 insert D'_s1+width:InterpolationMasses 47 2.5462276 insert D'_s1+width:InterpolationMasses 48 2.5467582 insert D'_s1+width:InterpolationMasses 49 2.5472888 insert D'_s1+width:InterpolationMasses 50 2.5478194 insert D'_s1+width:InterpolationMasses 51 2.54835 insert D'_s1+width:InterpolationMasses 52 2.5488806 insert D'_s1+width:InterpolationMasses 53 2.5494112 insert D'_s1+width:InterpolationMasses 54 2.5212888 insert D'_s1+width:InterpolationMasses 55 2.5218194 insert D'_s1+width:InterpolationMasses 56 2.52235 insert D'_s1+width:InterpolationMasses 57 2.5228806 insert D'_s1+width:InterpolationMasses 58 2.5234112 insert D'_s1+width:InterpolationMasses 59 2.5239418 insert D'_s1+width:InterpolationMasses 60 2.5244724 insert D'_s1+width:InterpolationMasses 61 2.5250031 insert D'_s1+width:InterpolationMasses 62 2.5255337 insert D'_s1+width:InterpolationMasses 63 2.5260643 insert D'_s1+width:InterpolationMasses 64 2.5265949 insert D'_s1+width:InterpolationMasses 65 2.5271255 insert D'_s1+width:InterpolationMasses 66 2.5276561 insert D'_s1+width:InterpolationMasses 67 2.5281867 insert D'_s1+width:InterpolationMasses 68 2.5287173 insert D'_s1+width:InterpolationMasses 69 2.529248 insert D'_s1+width:InterpolationMasses 70 2.5297786 insert D'_s1+width:InterpolationMasses 71 2.5303092 insert D'_s1+width:InterpolationMasses 72 2.5308398 insert D'_s1+width:InterpolationMasses 73 2.5313704 insert D'_s1+width:InterpolationMasses 74 2.531901 insert D'_s1+width:InterpolationMasses 75 2.5324316 insert D'_s1+width:InterpolationMasses 76 2.5329622 insert D'_s1+width:InterpolationMasses 77 2.5334929 insert D'_s1+width:InterpolationMasses 78 2.5340235 insert D'_s1+width:InterpolationMasses 79 2.5345541 insert D'_s1+width:InterpolationMasses 80 2.5350847 insert D'_s1+width:InterpolationMasses 81 2.5356153 insert D'_s1+width:InterpolationMasses 82 2.5361459 insert D'_s1+width:InterpolationMasses 83 2.5366765 insert D'_s1+width:InterpolationMasses 84 2.5372071 insert D'_s1+width:InterpolationMasses 85 2.5377378 insert D'_s1+width:InterpolationMasses 86 2.5382684 insert D'_s1+width:InterpolationMasses 87 2.538799 insert D'_s1+width:InterpolationMasses 88 2.5393296 insert D'_s1+width:InterpolationMasses 89 2.5398602 insert D'_s1+width:InterpolationMasses 90 2.5403908 insert D'_s1+width:InterpolationMasses 91 2.5409214 insert D'_s1+width:InterpolationMasses 92 2.541452 insert D'_s1+width:InterpolationMasses 93 2.5419827 insert D'_s1+width:InterpolationMasses 94 2.5425133 insert D'_s1+width:InterpolationMasses 95 2.5430439 insert D'_s1+width:InterpolationMasses 96 2.5435745 insert D'_s1+width:InterpolationMasses 97 2.5441051 insert D'_s1+width:InterpolationMasses 98 2.5446357 insert D'_s1+width:InterpolationMasses 99 2.5451663 insert D'_s1+width:InterpolationMasses 100 2.5456969 insert D'_s1+width:InterpolationMasses 101 2.5462276 insert D'_s1+width:InterpolationMasses 102 2.5467582 insert D'_s1+width:InterpolationMasses 103 2.5472888 insert D'_s1+width:InterpolationMasses 104 2.5478194 insert D'_s1+width:InterpolationMasses 105 2.54835 insert D'_s1+width:InterpolationMasses 106 2.5488806 insert D'_s1+width:InterpolationMasses 107 2.5494112 insert D'_s1+width:InterpolationWidths 0 0.00042344479 insert D'_s1+width:InterpolationWidths 1 0.00043171081 insert D'_s1+width:InterpolationWidths 2 0.00043982919 insert D'_s1+width:InterpolationWidths 3 0.00044780796 insert D'_s1+width:InterpolationWidths 4 0.00045565447 insert D'_s1+width:InterpolationWidths 5 0.00046337542 insert D'_s1+width:InterpolationWidths 6 0.00047097701 insert D'_s1+width:InterpolationWidths 7 0.00047846492 insert D'_s1+width:InterpolationWidths 8 0.00048584442 insert D'_s1+width:InterpolationWidths 9 0.00049312037 insert D'_s1+width:InterpolationWidths 10 0.0005002973 insert D'_s1+width:InterpolationWidths 11 0.0005073794 insert D'_s1+width:InterpolationWidths 12 0.00051437061 insert D'_s1+width:InterpolationWidths 13 0.00052127458 insert D'_s1+width:InterpolationWidths 14 0.00052809472 insert D'_s1+width:InterpolationWidths 15 0.00053483427 insert D'_s1+width:InterpolationWidths 16 0.00054149621 insert D'_s1+width:InterpolationWidths 17 0.0005480834 insert D'_s1+width:InterpolationWidths 18 0.00055460163 insert D'_s1+width:InterpolationWidths 19 0.00056104724 insert D'_s1+width:InterpolationWidths 20 0.00056742563 insert D'_s1+width:InterpolationWidths 21 0.00057373906 insert D'_s1+width:InterpolationWidths 22 0.00057998965 insert D'_s1+width:InterpolationWidths 23 0.0005861794 insert D'_s1+width:InterpolationWidths 24 0.00059231023 insert D'_s1+width:InterpolationWidths 25 0.00059838396 insert D'_s1+width:InterpolationWidths 26 0.00060440229 insert D'_s1+width:InterpolationWidths 27 0.00061036689 insert D'_s1+width:InterpolationWidths 28 0.00061627929 insert D'_s1+width:InterpolationWidths 29 0.00062214101 insert D'_s1+width:InterpolationWidths 30 0.00062795346 insert D'_s1+width:InterpolationWidths 31 0.00063371799 insert D'_s1+width:InterpolationWidths 32 0.0006394359 insert D'_s1+width:InterpolationWidths 33 0.00064510844 insert D'_s1+width:InterpolationWidths 34 0.00065073679 insert D'_s1+width:InterpolationWidths 35 0.0006563221 insert D'_s1+width:InterpolationWidths 36 0.00066186545 insert D'_s1+width:InterpolationWidths 37 0.00066736789 insert D'_s1+width:InterpolationWidths 38 0.00067283043 insert D'_s1+width:InterpolationWidths 39 0.00067825403 insert D'_s1+width:InterpolationWidths 40 0.00068363962 insert D'_s1+width:InterpolationWidths 41 0.00068898809 insert D'_s1+width:InterpolationWidths 42 0.00069430031 insert D'_s1+width:InterpolationWidths 43 0.0006995771 insert D'_s1+width:InterpolationWidths 44 0.00070481926 insert D'_s1+width:InterpolationWidths 45 0.00071002756 insert D'_s1+width:InterpolationWidths 46 0.00071520273 insert D'_s1+width:InterpolationWidths 47 0.0007203455 insert D'_s1+width:InterpolationWidths 48 0.00072545655 insert D'_s1+width:InterpolationWidths 49 0.00073053656 insert D'_s1+width:InterpolationWidths 50 0.00073558616 insert D'_s1+width:InterpolationWidths 51 0.00074060598 insert D'_s1+width:InterpolationWidths 52 0.00074559663 insert D'_s1+width:InterpolationWidths 53 0.00075055869 insert D'_s1+width:InterpolationWidths 54 0.00052261837 insert D'_s1+width:InterpolationWidths 55 0.00052933628 insert D'_s1+width:InterpolationWidths 56 0.0005359763 insert D'_s1+width:InterpolationWidths 57 0.00054254128 insert D'_s1+width:InterpolationWidths 58 0.00054903393 insert D'_s1+width:InterpolationWidths 59 0.00055545677 insert D'_s1+width:InterpolationWidths 60 0.00056181221 insert D'_s1+width:InterpolationWidths 61 0.0005681025 insert D'_s1+width:InterpolationWidths 62 0.0005743298 insert D'_s1+width:InterpolationWidths 63 0.00058049613 insert D'_s1+width:InterpolationWidths 64 0.00058660342 insert D'_s1+width:InterpolationWidths 65 0.00059265349 insert D'_s1+width:InterpolationWidths 66 0.00059864807 insert D'_s1+width:InterpolationWidths 67 0.00060458883 insert D'_s1+width:InterpolationWidths 68 0.00061047734 insert D'_s1+width:InterpolationWidths 69 0.00061631509 insert D'_s1+width:InterpolationWidths 70 0.00062210352 insert D'_s1+width:InterpolationWidths 71 0.00062784399 insert D'_s1+width:InterpolationWidths 72 0.0006335378 insert D'_s1+width:InterpolationWidths 73 0.00063918621 insert D'_s1+width:InterpolationWidths 74 0.00064479041 insert D'_s1+width:InterpolationWidths 75 0.00065035155 insert D'_s1+width:InterpolationWidths 76 0.00065587072 insert D'_s1+width:InterpolationWidths 77 0.00066134898 insert D'_s1+width:InterpolationWidths 78 0.00066678733 insert D'_s1+width:InterpolationWidths 79 0.00067218674 insert D'_s1+width:InterpolationWidths 80 0.00067754816 insert D'_s1+width:InterpolationWidths 81 0.00068287247 insert D'_s1+width:InterpolationWidths 82 0.00068816053 insert D'_s1+width:InterpolationWidths 83 0.00069341319 insert D'_s1+width:InterpolationWidths 84 0.00069863123 insert D'_s1+width:InterpolationWidths 85 0.00070381544 insert D'_s1+width:InterpolationWidths 86 0.00070896655 insert D'_s1+width:InterpolationWidths 87 0.00071408528 insert D'_s1+width:InterpolationWidths 88 0.00071917233 insert D'_s1+width:InterpolationWidths 89 0.00072422836 insert D'_s1+width:InterpolationWidths 90 0.00072925402 insert D'_s1+width:InterpolationWidths 91 0.00073424994 insert D'_s1+width:InterpolationWidths 92 0.00073921672 insert D'_s1+width:InterpolationWidths 93 0.00074415495 insert D'_s1+width:InterpolationWidths 94 0.00074906519 insert D'_s1+width:InterpolationWidths 95 0.00075394798 insert D'_s1+width:InterpolationWidths 96 0.00075880388 insert D'_s1+width:InterpolationWidths 97 0.00076363337 insert D'_s1+width:InterpolationWidths 98 0.00076843698 insert D'_s1+width:InterpolationWidths 99 0.00077321517 insert D'_s1+width:InterpolationWidths 100 0.00077796843 insert D'_s1+width:InterpolationWidths 101 0.0007826972 insert D'_s1+width:InterpolationWidths 102 0.00078740193 insert D'_s1+width:InterpolationWidths 103 0.00079208304 insert D'_s1+width:InterpolationWidths 104 0.00079674097 insert D'_s1+width:InterpolationWidths 105 0.0008013761 insert D'_s1+width:InterpolationWidths 106 0.00080598884 insert D'_s1+width:InterpolationWidths 107 0.00081057958 insert D'_s1+width:NumberofEntries 0 54 insert D'_s1+width:NumberofEntries 1 108 newdef /Herwig/Particles/D'_s1-:Width_generator D'_s1+width newdef /Herwig/Particles/D'_s1+:Width_generator D'_s1+width # create Herwig::GenericWidthGenerator B'_s10width newdef B'_s10width:Particle /Herwig/Particles/B'_s10 newdef B'_s10width:Prefactor 1.00015 newdef B'_s10width:BRNormalize 1 newdef B'_s10width:BRMinimum 0.01 newdef B'_s10width:Points 50 newdef B'_s10width:InterpolationOrder 1 insert B'_s10width:MEtype 0 2 insert B'_s10width:MEtype 1 2 insert B'_s10width:MEcode 0 0 insert B'_s10width:MEcode 1 0 insert B'_s10width:MEcoupling 0 0.972293 insert B'_s10width:MEcoupling 1 1.02666 insert B'_s10width:ModeOn 0 1 insert B'_s10width:ModeOn 1 1 insert B'_s10width:MinimumMasses 0 5.81867 insert B'_s10width:MinimumMasses 1 5.82265 insert B'_s10width:MEmass1 0 5.325 insert B'_s10width:MEmass1 1 5.325 insert B'_s10width:MEmass2 0 0.493677 insert B'_s10width:MEmass2 1 0.497648 insert B'_s10width:DecayModes 0 B'_s10->B*+,K-; insert B'_s10width:DecayModes 1 B'_s10->B*0,Kbar0; insert B'_s10width:InterpolationMasses 0 5.8198776 insert B'_s10width:InterpolationMasses 1 5.8229388 insert B'_s10width:InterpolationMasses 2 5.826 insert B'_s10width:InterpolationMasses 3 5.8290612 insert B'_s10width:InterpolationMasses 4 5.8321224 insert B'_s10width:InterpolationMasses 5 5.8351837 insert B'_s10width:InterpolationMasses 6 5.8382449 insert B'_s10width:InterpolationMasses 7 5.8413061 insert B'_s10width:InterpolationMasses 8 5.8443673 insert B'_s10width:InterpolationMasses 9 5.8474286 insert B'_s10width:InterpolationMasses 10 5.8504898 insert B'_s10width:InterpolationMasses 11 5.853551 insert B'_s10width:InterpolationMasses 12 5.8566122 insert B'_s10width:InterpolationMasses 13 5.8596735 insert B'_s10width:InterpolationMasses 14 5.8627347 insert B'_s10width:InterpolationMasses 15 5.8657959 insert B'_s10width:InterpolationMasses 16 5.8688571 insert B'_s10width:InterpolationMasses 17 5.8719184 insert B'_s10width:InterpolationMasses 18 5.8749796 insert B'_s10width:InterpolationMasses 19 5.8780408 insert B'_s10width:InterpolationMasses 20 5.881102 insert B'_s10width:InterpolationMasses 21 5.8841633 insert B'_s10width:InterpolationMasses 22 5.8872245 insert B'_s10width:InterpolationMasses 23 5.8902857 insert B'_s10width:InterpolationMasses 24 5.8933469 insert B'_s10width:InterpolationMasses 25 5.8964082 insert B'_s10width:InterpolationMasses 26 5.8994694 insert B'_s10width:InterpolationMasses 27 5.9025306 insert B'_s10width:InterpolationMasses 28 5.9055918 insert B'_s10width:InterpolationMasses 29 5.9086531 insert B'_s10width:InterpolationMasses 30 5.9117143 insert B'_s10width:InterpolationMasses 31 5.9147755 insert B'_s10width:InterpolationMasses 32 5.9178367 insert B'_s10width:InterpolationMasses 33 5.920898 insert B'_s10width:InterpolationMasses 34 5.9239592 insert B'_s10width:InterpolationMasses 35 5.9270204 insert B'_s10width:InterpolationMasses 36 5.9300816 insert B'_s10width:InterpolationMasses 37 5.9331429 insert B'_s10width:InterpolationMasses 38 5.9362041 insert B'_s10width:InterpolationMasses 39 5.9392653 insert B'_s10width:InterpolationMasses 40 5.9423265 insert B'_s10width:InterpolationMasses 41 5.9453878 insert B'_s10width:InterpolationMasses 42 5.948449 insert B'_s10width:InterpolationMasses 43 5.9515102 insert B'_s10width:InterpolationMasses 44 5.9545714 insert B'_s10width:InterpolationMasses 45 5.9576327 insert B'_s10width:InterpolationMasses 46 5.9606939 insert B'_s10width:InterpolationMasses 47 5.9637551 insert B'_s10width:InterpolationMasses 48 5.9668163 insert B'_s10width:InterpolationMasses 49 5.9698776 insert B'_s10width:InterpolationMasses 50 5.9729388 insert B'_s10width:InterpolationMasses 51 5.976 insert B'_s10width:InterpolationMasses 52 5.9790612 insert B'_s10width:InterpolationMasses 53 5.9821224 insert B'_s10width:InterpolationMasses 54 5.8198776 insert B'_s10width:InterpolationMasses 55 5.8226456 insert B'_s10width:InterpolationMasses 56 5.826 insert B'_s10width:InterpolationMasses 57 5.8290612 insert B'_s10width:InterpolationMasses 58 5.8321224 insert B'_s10width:InterpolationMasses 59 5.8351837 insert B'_s10width:InterpolationMasses 60 5.8382449 insert B'_s10width:InterpolationMasses 61 5.8413061 insert B'_s10width:InterpolationMasses 62 5.8443673 insert B'_s10width:InterpolationMasses 63 5.8474286 insert B'_s10width:InterpolationMasses 64 5.8504898 insert B'_s10width:InterpolationMasses 65 5.853551 insert B'_s10width:InterpolationMasses 66 5.8566122 insert B'_s10width:InterpolationMasses 67 5.8596735 insert B'_s10width:InterpolationMasses 68 5.8627347 insert B'_s10width:InterpolationMasses 69 5.8657959 insert B'_s10width:InterpolationMasses 70 5.8688571 insert B'_s10width:InterpolationMasses 71 5.8719184 insert B'_s10width:InterpolationMasses 72 5.8749796 insert B'_s10width:InterpolationMasses 73 5.8780408 insert B'_s10width:InterpolationMasses 74 5.881102 insert B'_s10width:InterpolationMasses 75 5.8841633 insert B'_s10width:InterpolationMasses 76 5.8872245 insert B'_s10width:InterpolationMasses 77 5.8902857 insert B'_s10width:InterpolationMasses 78 5.8933469 insert B'_s10width:InterpolationMasses 79 5.8964082 insert B'_s10width:InterpolationMasses 80 5.8994694 insert B'_s10width:InterpolationMasses 81 5.9025306 insert B'_s10width:InterpolationMasses 82 5.9055918 insert B'_s10width:InterpolationMasses 83 5.9086531 insert B'_s10width:InterpolationMasses 84 5.9117143 insert B'_s10width:InterpolationMasses 85 5.9147755 insert B'_s10width:InterpolationMasses 86 5.9178367 insert B'_s10width:InterpolationMasses 87 5.920898 insert B'_s10width:InterpolationMasses 88 5.9239592 insert B'_s10width:InterpolationMasses 89 5.9270204 insert B'_s10width:InterpolationMasses 90 5.9300816 insert B'_s10width:InterpolationMasses 91 5.9331429 insert B'_s10width:InterpolationMasses 92 5.9362041 insert B'_s10width:InterpolationMasses 93 5.9392653 insert B'_s10width:InterpolationMasses 94 5.9423265 insert B'_s10width:InterpolationMasses 95 5.9453878 insert B'_s10width:InterpolationMasses 96 5.948449 insert B'_s10width:InterpolationMasses 97 5.9515102 insert B'_s10width:InterpolationMasses 98 5.9545714 insert B'_s10width:InterpolationMasses 99 5.9576327 insert B'_s10width:InterpolationMasses 100 5.9606939 insert B'_s10width:InterpolationMasses 101 5.9637551 insert B'_s10width:InterpolationMasses 102 5.9668163 insert B'_s10width:InterpolationMasses 103 5.9698776 insert B'_s10width:InterpolationMasses 104 5.9729388 insert B'_s10width:InterpolationMasses 105 5.976 insert B'_s10width:InterpolationMasses 106 5.9790612 insert B'_s10width:InterpolationMasses 107 5.9821224 insert B'_s10width:InterpolationWidths 0 0.0054471364 insert B'_s10width:InterpolationWidths 1 0.010276949 insert B'_s10width:InterpolationWidths 2 0.013489706 insert B'_s10width:InterpolationWidths 3 0.016085414 insert B'_s10width:InterpolationWidths 4 0.018328136 insert B'_s10width:InterpolationWidths 5 0.020334994 insert B'_s10width:InterpolationWidths 6 0.022170127 insert B'_s10width:InterpolationWidths 7 0.023873165 insert B'_s10width:InterpolationWidths 8 0.025470615 insert B'_s10width:InterpolationWidths 9 0.026981231 insert B'_s10width:InterpolationWidths 10 0.028418862 insert B'_s10width:InterpolationWidths 11 0.029794071 insert B'_s10width:InterpolationWidths 12 0.03111513 insert B'_s10width:InterpolationWidths 13 0.032388665 insert B'_s10width:InterpolationWidths 14 0.033620072 insert B'_s10width:InterpolationWidths 15 0.034813819 insert B'_s10width:InterpolationWidths 16 0.035973653 insert B'_s10width:InterpolationWidths 17 0.03710275 insert B'_s10width:InterpolationWidths 18 0.038203835 insert B'_s10width:InterpolationWidths 19 0.03927926 insert B'_s10width:InterpolationWidths 20 0.040331075 insert B'_s10width:InterpolationWidths 21 0.041361079 insert B'_s10width:InterpolationWidths 22 0.04237086 insert B'_s10width:InterpolationWidths 23 0.04336183 insert B'_s10width:InterpolationWidths 24 0.044335246 insert B'_s10width:InterpolationWidths 25 0.04529224 insert B'_s10width:InterpolationWidths 26 0.046233828 insert B'_s10width:InterpolationWidths 27 0.047160931 insert B'_s10width:InterpolationWidths 28 0.048074386 insert B'_s10width:InterpolationWidths 29 0.048974955 insert B'_s10width:InterpolationWidths 30 0.049863333 insert B'_s10width:InterpolationWidths 31 0.05074016 insert B'_s10width:InterpolationWidths 32 0.051606022 insert B'_s10width:InterpolationWidths 33 0.052461461 insert B'_s10width:InterpolationWidths 34 0.053306976 insert B'_s10width:InterpolationWidths 35 0.054143032 insert B'_s10width:InterpolationWidths 36 0.054970059 insert B'_s10width:InterpolationWidths 37 0.055788456 insert B'_s10width:InterpolationWidths 38 0.056598596 insert B'_s10width:InterpolationWidths 39 0.057400828 insert B'_s10width:InterpolationWidths 40 0.058195477 insert B'_s10width:InterpolationWidths 41 0.058982849 insert B'_s10width:InterpolationWidths 42 0.05976323 insert B'_s10width:InterpolationWidths 43 0.060536888 insert B'_s10width:InterpolationWidths 44 0.061304078 insert B'_s10width:InterpolationWidths 45 0.062065038 insert B'_s10width:InterpolationWidths 46 0.062819993 insert B'_s10width:InterpolationWidths 47 0.063569157 insert B'_s10width:InterpolationWidths 48 0.064312729 insert B'_s10width:InterpolationWidths 49 0.065050902 insert B'_s10width:InterpolationWidths 50 0.065783856 insert B'_s10width:InterpolationWidths 51 0.066511761 insert B'_s10width:InterpolationWidths 52 0.067234783 insert B'_s10width:InterpolationWidths 53 0.067953074 insert B'_s10width:InterpolationWidths 54 0 insert B'_s10width:InterpolationWidths 55 0 insert B'_s10width:InterpolationWidths 56 0.0091438997 insert B'_s10width:InterpolationWidths 57 0.012664915 insert B'_s10width:InterpolationWidths 58 0.015414302 insert B'_s10width:InterpolationWidths 59 0.017754226 insert B'_s10width:InterpolationWidths 60 0.019830162 insert B'_s10width:InterpolationWidths 61 0.021717939 insert B'_s10width:InterpolationWidths 62 0.023463012 insert B'_s10width:InterpolationWidths 63 0.025095165 insert B'_s10width:InterpolationWidths 64 0.026635159 insert B'_s10width:InterpolationWidths 65 0.028098148 insert B'_s10width:InterpolationWidths 66 0.029495589 insert B'_s10width:InterpolationWidths 67 0.030836391 insert B'_s10width:InterpolationWidths 68 0.032127643 insert B'_s10width:InterpolationWidths 69 0.033375093 insert B'_s10width:InterpolationWidths 70 0.034583478 insert B'_s10width:InterpolationWidths 71 0.035756756 insert B'_s10width:InterpolationWidths 72 0.036898274 insert B'_s10width:InterpolationWidths 73 0.03801089 insert B'_s10width:InterpolationWidths 74 0.03909707 insert B'_s10width:InterpolationWidths 75 0.040158955 insert B'_s10width:InterpolationWidths 76 0.041198422 insert B'_s10width:InterpolationWidths 77 0.042217125 insert B'_s10width:InterpolationWidths 78 0.04321653 insert B'_s10width:InterpolationWidths 79 0.044197944 insert B'_s10width:InterpolationWidths 80 0.045162537 insert B'_s10width:InterpolationWidths 81 0.046111364 insert B'_s10width:InterpolationWidths 82 0.047045376 insert B'_s10width:InterpolationWidths 83 0.047965436 insert B'_s10width:InterpolationWidths 84 0.048872332 insert B'_s10width:InterpolationWidths 85 0.049766781 insert B'_s10width:InterpolationWidths 86 0.05064944 insert B'_s10width:InterpolationWidths 87 0.051520914 insert B'_s10width:InterpolationWidths 88 0.05238176 insert B'_s10width:InterpolationWidths 89 0.053232491 insert B'_s10width:InterpolationWidths 90 0.054073584 insert B'_s10width:InterpolationWidths 91 0.054905479 insert B'_s10width:InterpolationWidths 92 0.055728588 insert B'_s10width:InterpolationWidths 93 0.056543293 insert B'_s10width:InterpolationWidths 94 0.05734995 insert B'_s10width:InterpolationWidths 95 0.058148893 insert B'_s10width:InterpolationWidths 96 0.058940435 insert B'_s10width:InterpolationWidths 97 0.059724868 insert B'_s10width:InterpolationWidths 98 0.060502468 insert B'_s10width:InterpolationWidths 99 0.061273493 insert B'_s10width:InterpolationWidths 100 0.062038189 insert B'_s10width:InterpolationWidths 101 0.062796784 insert B'_s10width:InterpolationWidths 102 0.063549496 insert B'_s10width:InterpolationWidths 103 0.064296531 insert B'_s10width:InterpolationWidths 104 0.065038083 insert B'_s10width:InterpolationWidths 105 0.065774338 insert B'_s10width:InterpolationWidths 106 0.066505468 insert B'_s10width:InterpolationWidths 107 0.067231642 insert B'_s10width:NumberofEntries 0 54 insert B'_s10width:NumberofEntries 1 108 newdef /Herwig/Particles/B'_s10:Width_generator B'_s10width newdef /Herwig/Particles/B'_s1bar0:Width_generator B'_s10width # create Herwig::GenericWidthGenerator B_s10width newdef B_s10width:Particle /Herwig/Particles/B_s10 newdef B_s10width:Prefactor 1.00001 newdef B_s10width:BRNormalize 1 newdef B_s10width:BRMinimum 0.01 newdef B_s10width:Points 50 newdef B_s10width:InterpolationOrder 1 insert B_s10width:MEtype 0 2 insert B_s10width:MEtype 1 2 insert B_s10width:MEcode 0 0 insert B_s10width:MEcode 1 0 insert B_s10width:MEcoupling 0 0.99794 insert B_s10width:MEcoupling 1 0.999524 insert B_s10width:ModeOn 0 1 insert B_s10width:ModeOn 1 1 insert B_s10width:MinimumMasses 0 5.81867 insert B_s10width:MinimumMasses 1 5.82265 insert B_s10width:MEmass1 0 5.325 insert B_s10width:MEmass1 1 5.325 insert B_s10width:MEmass2 0 0.493677 insert B_s10width:MEmass2 1 0.497648 insert B_s10width:DecayModes 0 B_s10->B*+,K-; insert B_s10width:DecayModes 1 B_s10->B*0,Kbar0; insert B_s10width:InterpolationMasses 0 5.8261551 insert B_s10width:InterpolationMasses 1 5.8262776 insert B_s10width:InterpolationMasses 2 5.8264 insert B_s10width:InterpolationMasses 3 5.8265224 insert B_s10width:InterpolationMasses 4 5.8266449 insert B_s10width:InterpolationMasses 5 5.8267673 insert B_s10width:InterpolationMasses 6 5.8268898 insert B_s10width:InterpolationMasses 7 5.8270122 insert B_s10width:InterpolationMasses 8 5.8271347 insert B_s10width:InterpolationMasses 9 5.8272571 insert B_s10width:InterpolationMasses 10 5.8273796 insert B_s10width:InterpolationMasses 11 5.827502 insert B_s10width:InterpolationMasses 12 5.8276245 insert B_s10width:InterpolationMasses 13 5.8277469 insert B_s10width:InterpolationMasses 14 5.8278694 insert B_s10width:InterpolationMasses 15 5.8279918 insert B_s10width:InterpolationMasses 16 5.8281143 insert B_s10width:InterpolationMasses 17 5.8282367 insert B_s10width:InterpolationMasses 18 5.8283592 insert B_s10width:InterpolationMasses 19 5.8284816 insert B_s10width:InterpolationMasses 20 5.8286041 insert B_s10width:InterpolationMasses 21 5.8287265 insert B_s10width:InterpolationMasses 22 5.828849 insert B_s10width:InterpolationMasses 23 5.8289714 insert B_s10width:InterpolationMasses 24 5.8290939 insert B_s10width:InterpolationMasses 25 5.8292163 insert B_s10width:InterpolationMasses 26 5.8293388 insert B_s10width:InterpolationMasses 27 5.8294612 insert B_s10width:InterpolationMasses 28 5.8295837 insert B_s10width:InterpolationMasses 29 5.8297061 insert B_s10width:InterpolationMasses 30 5.8298286 insert B_s10width:InterpolationMasses 31 5.829951 insert B_s10width:InterpolationMasses 32 5.8300735 insert B_s10width:InterpolationMasses 33 5.8301959 insert B_s10width:InterpolationMasses 34 5.8303184 insert B_s10width:InterpolationMasses 35 5.8304408 insert B_s10width:InterpolationMasses 36 5.8305633 insert B_s10width:InterpolationMasses 37 5.8306857 insert B_s10width:InterpolationMasses 38 5.8308082 insert B_s10width:InterpolationMasses 39 5.8309306 insert B_s10width:InterpolationMasses 40 5.8310531 insert B_s10width:InterpolationMasses 41 5.8311755 insert B_s10width:InterpolationMasses 42 5.831298 insert B_s10width:InterpolationMasses 43 5.8314204 insert B_s10width:InterpolationMasses 44 5.8315429 insert B_s10width:InterpolationMasses 45 5.8316653 insert B_s10width:InterpolationMasses 46 5.8317878 insert B_s10width:InterpolationMasses 47 5.8319102 insert B_s10width:InterpolationMasses 48 5.8320327 insert B_s10width:InterpolationMasses 49 5.8321551 insert B_s10width:InterpolationMasses 50 5.8322776 insert B_s10width:InterpolationMasses 51 5.8324 insert B_s10width:InterpolationMasses 52 5.8325224 insert B_s10width:InterpolationMasses 53 5.8326449 insert B_s10width:InterpolationMasses 54 5.8261551 insert B_s10width:InterpolationMasses 55 5.8262776 insert B_s10width:InterpolationMasses 56 5.8264 insert B_s10width:InterpolationMasses 57 5.8265224 insert B_s10width:InterpolationMasses 58 5.8266449 insert B_s10width:InterpolationMasses 59 5.8267673 insert B_s10width:InterpolationMasses 60 5.8268898 insert B_s10width:InterpolationMasses 61 5.8270122 insert B_s10width:InterpolationMasses 62 5.8271347 insert B_s10width:InterpolationMasses 63 5.8272571 insert B_s10width:InterpolationMasses 64 5.8273796 insert B_s10width:InterpolationMasses 65 5.827502 insert B_s10width:InterpolationMasses 66 5.8276245 insert B_s10width:InterpolationMasses 67 5.8277469 insert B_s10width:InterpolationMasses 68 5.8278694 insert B_s10width:InterpolationMasses 69 5.8279918 insert B_s10width:InterpolationMasses 70 5.8281143 insert B_s10width:InterpolationMasses 71 5.8282367 insert B_s10width:InterpolationMasses 72 5.8283592 insert B_s10width:InterpolationMasses 73 5.8284816 insert B_s10width:InterpolationMasses 74 5.8286041 insert B_s10width:InterpolationMasses 75 5.8287265 insert B_s10width:InterpolationMasses 76 5.828849 insert B_s10width:InterpolationMasses 77 5.8289714 insert B_s10width:InterpolationMasses 78 5.8290939 insert B_s10width:InterpolationMasses 79 5.8292163 insert B_s10width:InterpolationMasses 80 5.8293388 insert B_s10width:InterpolationMasses 81 5.8294612 insert B_s10width:InterpolationMasses 82 5.8295837 insert B_s10width:InterpolationMasses 83 5.8297061 insert B_s10width:InterpolationMasses 84 5.8298286 insert B_s10width:InterpolationMasses 85 5.829951 insert B_s10width:InterpolationMasses 86 5.8300735 insert B_s10width:InterpolationMasses 87 5.8301959 insert B_s10width:InterpolationMasses 88 5.8303184 insert B_s10width:InterpolationMasses 89 5.8304408 insert B_s10width:InterpolationMasses 90 5.8305633 insert B_s10width:InterpolationMasses 91 5.8306857 insert B_s10width:InterpolationMasses 92 5.8308082 insert B_s10width:InterpolationMasses 93 5.8309306 insert B_s10width:InterpolationMasses 94 5.8310531 insert B_s10width:InterpolationMasses 95 5.8311755 insert B_s10width:InterpolationMasses 96 5.831298 insert B_s10width:InterpolationMasses 97 5.8314204 insert B_s10width:InterpolationMasses 98 5.8315429 insert B_s10width:InterpolationMasses 99 5.8316653 insert B_s10width:InterpolationMasses 100 5.8317878 insert B_s10width:InterpolationMasses 101 5.8319102 insert B_s10width:InterpolationMasses 102 5.8320327 insert B_s10width:InterpolationMasses 103 5.8321551 insert B_s10width:InterpolationMasses 104 5.8322776 insert B_s10width:InterpolationMasses 105 5.8324 insert B_s10width:InterpolationMasses 106 5.8325224 insert B_s10width:InterpolationMasses 107 5.8326449 insert B_s10width:InterpolationWidths 0 0.00012534353 insert B_s10width:InterpolationWidths 1 0.00012637242 insert B_s10width:InterpolationWidths 2 0.00012739321 insert B_s10width:InterpolationWidths 3 0.00012840611 insert B_s10width:InterpolationWidths 4 0.0001294113 insert B_s10width:InterpolationWidths 5 0.00013040895 insert B_s10width:InterpolationWidths 6 0.00013139923 insert B_s10width:InterpolationWidths 7 0.00013238233 insert B_s10width:InterpolationWidths 8 0.00013335838 insert B_s10width:InterpolationWidths 9 0.00013432755 insert B_s10width:InterpolationWidths 10 0.00013528998 insert B_s10width:InterpolationWidths 11 0.00013624581 insert B_s10width:InterpolationWidths 12 0.0001371952 insert B_s10width:InterpolationWidths 13 0.00013813825 insert B_s10width:InterpolationWidths 14 0.00013907512 insert B_s10width:InterpolationWidths 15 0.00014000591 insert B_s10width:InterpolationWidths 16 0.00014093075 insert B_s10width:InterpolationWidths 17 0.00014184976 insert B_s10width:InterpolationWidths 18 0.00014276305 insert B_s10width:InterpolationWidths 19 0.00014367073 insert B_s10width:InterpolationWidths 20 0.0001445729 insert B_s10width:InterpolationWidths 21 0.00014546967 insert B_s10width:InterpolationWidths 22 0.00014636113 insert B_s10width:InterpolationWidths 23 0.00014724739 insert B_s10width:InterpolationWidths 24 0.00014812853 insert B_s10width:InterpolationWidths 25 0.00014900465 insert B_s10width:InterpolationWidths 26 0.00014987583 insert B_s10width:InterpolationWidths 27 0.00015074216 insert B_s10width:InterpolationWidths 28 0.00015160373 insert B_s10width:InterpolationWidths 29 0.0001524606 insert B_s10width:InterpolationWidths 30 0.00015331288 insert B_s10width:InterpolationWidths 31 0.00015416062 insert B_s10width:InterpolationWidths 32 0.0001550039 insert B_s10width:InterpolationWidths 33 0.0001558428 insert B_s10width:InterpolationWidths 34 0.00015667738 insert B_s10width:InterpolationWidths 35 0.00015750772 insert B_s10width:InterpolationWidths 36 0.00015833388 insert B_s10width:InterpolationWidths 37 0.00015915593 insert B_s10width:InterpolationWidths 38 0.00015997393 insert B_s10width:InterpolationWidths 39 0.00016078794 insert B_s10width:InterpolationWidths 40 0.00016159802 insert B_s10width:InterpolationWidths 41 0.00016240423 insert B_s10width:InterpolationWidths 42 0.00016320663 insert B_s10width:InterpolationWidths 43 0.00016400527 insert B_s10width:InterpolationWidths 44 0.00016480021 insert B_s10width:InterpolationWidths 45 0.0001655915 insert B_s10width:InterpolationWidths 46 0.0001663792 insert B_s10width:InterpolationWidths 47 0.00016716335 insert B_s10width:InterpolationWidths 48 0.00016794401 insert B_s10width:InterpolationWidths 49 0.00016872122 insert B_s10width:InterpolationWidths 50 0.00016949503 insert B_s10width:InterpolationWidths 51 0.00017026549 insert B_s10width:InterpolationWidths 52 0.00017103263 insert B_s10width:InterpolationWidths 53 0.00017179652 insert B_s10width:InterpolationWidths 54 0.00010800321 insert B_s10width:InterpolationWidths 55 0.0001098784 insert B_s10width:InterpolationWidths 56 0.00011172252 insert B_s10width:InterpolationWidths 57 0.00011353707 insert B_s10width:InterpolationWidths 58 0.00011532346 insert B_s10width:InterpolationWidths 59 0.00011708296 insert B_s10width:InterpolationWidths 60 0.00011881679 insert B_s10width:InterpolationWidths 61 0.00012052604 insert B_s10width:InterpolationWidths 62 0.00012221174 insert B_s10width:InterpolationWidths 63 0.00012387486 insert B_s10width:InterpolationWidths 64 0.0001255163 insert B_s10width:InterpolationWidths 65 0.00012713689 insert B_s10width:InterpolationWidths 66 0.00012873743 insert B_s10width:InterpolationWidths 67 0.00013031864 insert B_s10width:InterpolationWidths 68 0.00013188123 insert B_s10width:InterpolationWidths 69 0.00013342585 insert B_s10width:InterpolationWidths 70 0.00013495312 insert B_s10width:InterpolationWidths 71 0.00013646362 insert B_s10width:InterpolationWidths 72 0.0001379579 insert B_s10width:InterpolationWidths 73 0.00013943648 insert B_s10width:InterpolationWidths 74 0.00014089986 insert B_s10width:InterpolationWidths 75 0.0001423485 insert B_s10width:InterpolationWidths 76 0.00014378285 insert B_s10width:InterpolationWidths 77 0.00014520334 insert B_s10width:InterpolationWidths 78 0.00014661036 insert B_s10width:InterpolationWidths 79 0.00014800431 insert B_s10width:InterpolationWidths 80 0.00014938554 insert B_s10width:InterpolationWidths 81 0.00015075441 insert B_s10width:InterpolationWidths 82 0.00015211125 insert B_s10width:InterpolationWidths 83 0.00015345638 insert B_s10width:InterpolationWidths 84 0.0001547901 insert B_s10width:InterpolationWidths 85 0.00015611271 insert B_s10width:InterpolationWidths 86 0.00015742449 insert B_s10width:InterpolationWidths 87 0.0001587257 insert B_s10width:InterpolationWidths 88 0.00016001661 insert B_s10width:InterpolationWidths 89 0.00016129746 insert B_s10width:InterpolationWidths 90 0.00016256848 insert B_s10width:InterpolationWidths 91 0.00016382991 insert B_s10width:InterpolationWidths 92 0.00016508197 insert B_s10width:InterpolationWidths 93 0.00016632487 insert B_s10width:InterpolationWidths 94 0.00016755881 insert B_s10width:InterpolationWidths 95 0.000168784 insert B_s10width:InterpolationWidths 96 0.0001700006 insert B_s10width:InterpolationWidths 97 0.00017120882 insert B_s10width:InterpolationWidths 98 0.00017240883 insert B_s10width:InterpolationWidths 99 0.0001736008 insert B_s10width:InterpolationWidths 100 0.00017478489 insert B_s10width:InterpolationWidths 101 0.00017596126 insert B_s10width:InterpolationWidths 102 0.00017713006 insert B_s10width:InterpolationWidths 103 0.00017829145 insert B_s10width:InterpolationWidths 104 0.00017944557 insert B_s10width:InterpolationWidths 105 0.00018059255 insert B_s10width:InterpolationWidths 106 0.00018173254 insert B_s10width:InterpolationWidths 107 0.00018286566 insert B_s10width:NumberofEntries 0 54 insert B_s10width:NumberofEntries 1 108 newdef /Herwig/Particles/B_s1bar0:Width_generator B_s10width newdef /Herwig/Particles/B_s10:Width_generator B_s10width # create Herwig::GenericWidthGenerator B_10width newdef B_10width:Particle /Herwig/Particles/B_10 newdef B_10width:Prefactor 1 newdef B_10width:BRNormalize 1 newdef B_10width:BRMinimum 0.01 newdef B_10width:Points 50 newdef B_10width:InterpolationOrder 1 insert B_10width:MEtype 0 2 insert B_10width:MEtype 1 2 insert B_10width:MEcode 0 0 insert B_10width:MEcode 1 0 insert B_10width:MEcoupling 0 1.00759 insert B_10width:MEcoupling 1 0.992642 insert B_10width:ModeOn 0 1 insert B_10width:ModeOn 1 1 insert B_10width:MinimumMasses 0 5.46456 insert B_10width:MinimumMasses 1 5.45998 insert B_10width:MEmass1 0 5.325 insert B_10width:MEmass1 1 5.325 insert B_10width:MEmass2 0 0.13957 insert B_10width:MEmass2 1 0.134978 insert B_10width:DecayModes 0 B_10->B*+,pi-; insert B_10width:DecayModes 1 B_10->B*0,pi0; insert B_10width:InterpolationMasses 0 5.6124367 insert B_10width:InterpolationMasses 1 5.6165184 insert B_10width:InterpolationMasses 2 5.6206 insert B_10width:InterpolationMasses 3 5.6246816 insert B_10width:InterpolationMasses 4 5.6287633 insert B_10width:InterpolationMasses 5 5.6328449 insert B_10width:InterpolationMasses 6 5.6369265 insert B_10width:InterpolationMasses 7 5.6410082 insert B_10width:InterpolationMasses 8 5.6450898 insert B_10width:InterpolationMasses 9 5.6491714 insert B_10width:InterpolationMasses 10 5.6532531 insert B_10width:InterpolationMasses 11 5.6573347 insert B_10width:InterpolationMasses 12 5.6614163 insert B_10width:InterpolationMasses 13 5.665498 insert B_10width:InterpolationMasses 14 5.6695796 insert B_10width:InterpolationMasses 15 5.6736612 insert B_10width:InterpolationMasses 16 5.6777429 insert B_10width:InterpolationMasses 17 5.6818245 insert B_10width:InterpolationMasses 18 5.6859061 insert B_10width:InterpolationMasses 19 5.6899878 insert B_10width:InterpolationMasses 20 5.6940694 insert B_10width:InterpolationMasses 21 5.698151 insert B_10width:InterpolationMasses 22 5.7022327 insert B_10width:InterpolationMasses 23 5.7063143 insert B_10width:InterpolationMasses 24 5.7103959 insert B_10width:InterpolationMasses 25 5.7144776 insert B_10width:InterpolationMasses 26 5.7185592 insert B_10width:InterpolationMasses 27 5.7226408 insert B_10width:InterpolationMasses 28 5.7267224 insert B_10width:InterpolationMasses 29 5.7308041 insert B_10width:InterpolationMasses 30 5.7348857 insert B_10width:InterpolationMasses 31 5.7389673 insert B_10width:InterpolationMasses 32 5.743049 insert B_10width:InterpolationMasses 33 5.7471306 insert B_10width:InterpolationMasses 34 5.7512122 insert B_10width:InterpolationMasses 35 5.7552939 insert B_10width:InterpolationMasses 36 5.7593755 insert B_10width:InterpolationMasses 37 5.7634571 insert B_10width:InterpolationMasses 38 5.7675388 insert B_10width:InterpolationMasses 39 5.7716204 insert B_10width:InterpolationMasses 40 5.775702 insert B_10width:InterpolationMasses 41 5.7797837 insert B_10width:InterpolationMasses 42 5.7838653 insert B_10width:InterpolationMasses 43 5.7879469 insert B_10width:InterpolationMasses 44 5.7920286 insert B_10width:InterpolationMasses 45 5.7961102 insert B_10width:InterpolationMasses 46 5.8001918 insert B_10width:InterpolationMasses 47 5.8042735 insert B_10width:InterpolationMasses 48 5.8083551 insert B_10width:InterpolationMasses 49 5.8124367 insert B_10width:InterpolationMasses 50 5.8165184 insert B_10width:InterpolationMasses 51 5.8206 insert B_10width:InterpolationMasses 52 5.8246816 insert B_10width:InterpolationMasses 53 5.8287633 insert B_10width:InterpolationMasses 54 5.6124367 insert B_10width:InterpolationMasses 55 5.6165184 insert B_10width:InterpolationMasses 56 5.6206 insert B_10width:InterpolationMasses 57 5.6246816 insert B_10width:InterpolationMasses 58 5.6287633 insert B_10width:InterpolationMasses 59 5.6328449 insert B_10width:InterpolationMasses 60 5.6369265 insert B_10width:InterpolationMasses 61 5.6410082 insert B_10width:InterpolationMasses 62 5.6450898 insert B_10width:InterpolationMasses 63 5.6491714 insert B_10width:InterpolationMasses 64 5.6532531 insert B_10width:InterpolationMasses 65 5.6573347 insert B_10width:InterpolationMasses 66 5.6614163 insert B_10width:InterpolationMasses 67 5.665498 insert B_10width:InterpolationMasses 68 5.6695796 insert B_10width:InterpolationMasses 69 5.6736612 insert B_10width:InterpolationMasses 70 5.6777429 insert B_10width:InterpolationMasses 71 5.6818245 insert B_10width:InterpolationMasses 72 5.6859061 insert B_10width:InterpolationMasses 73 5.6899878 insert B_10width:InterpolationMasses 74 5.6940694 insert B_10width:InterpolationMasses 75 5.698151 insert B_10width:InterpolationMasses 76 5.7022327 insert B_10width:InterpolationMasses 77 5.7063143 insert B_10width:InterpolationMasses 78 5.7103959 insert B_10width:InterpolationMasses 79 5.7144776 insert B_10width:InterpolationMasses 80 5.7185592 insert B_10width:InterpolationMasses 81 5.7226408 insert B_10width:InterpolationMasses 82 5.7267224 insert B_10width:InterpolationMasses 83 5.7308041 insert B_10width:InterpolationMasses 84 5.7348857 insert B_10width:InterpolationMasses 85 5.7389673 insert B_10width:InterpolationMasses 86 5.743049 insert B_10width:InterpolationMasses 87 5.7471306 insert B_10width:InterpolationMasses 88 5.7512122 insert B_10width:InterpolationMasses 89 5.7552939 insert B_10width:InterpolationMasses 90 5.7593755 insert B_10width:InterpolationMasses 91 5.7634571 insert B_10width:InterpolationMasses 92 5.7675388 insert B_10width:InterpolationMasses 93 5.7716204 insert B_10width:InterpolationMasses 94 5.775702 insert B_10width:InterpolationMasses 95 5.7797837 insert B_10width:InterpolationMasses 96 5.7838653 insert B_10width:InterpolationMasses 97 5.7879469 insert B_10width:InterpolationMasses 98 5.7920286 insert B_10width:InterpolationMasses 99 5.7961102 insert B_10width:InterpolationMasses 100 5.8001918 insert B_10width:InterpolationMasses 101 5.8042735 insert B_10width:InterpolationMasses 102 5.8083551 insert B_10width:InterpolationMasses 103 5.8124367 insert B_10width:InterpolationMasses 104 5.8165184 insert B_10width:InterpolationMasses 105 5.8206 insert B_10width:InterpolationMasses 106 5.8246816 insert B_10width:InterpolationMasses 107 5.8287633 insert B_10width:InterpolationWidths 0 0.0045259724 insert B_10width:InterpolationWidths 1 0.0046084963 insert B_10width:InterpolationWidths 2 0.0046906263 insert B_10width:InterpolationWidths 3 0.0047723812 insert B_10width:InterpolationWidths 4 0.0048537786 insert B_10width:InterpolationWidths 5 0.0049348348 insert B_10width:InterpolationWidths 6 0.005015565 insert B_10width:InterpolationWidths 7 0.0050959833 insert B_10width:InterpolationWidths 8 0.0051761031 insert B_10width:InterpolationWidths 9 0.0052559367 insert B_10width:InterpolationWidths 10 0.0053354958 insert B_10width:InterpolationWidths 11 0.0054147912 insert B_10width:InterpolationWidths 12 0.0054938332 insert B_10width:InterpolationWidths 13 0.0055726316 insert B_10width:InterpolationWidths 14 0.0056511952 insert B_10width:InterpolationWidths 15 0.0057295329 insert B_10width:InterpolationWidths 16 0.0058076525 insert B_10width:InterpolationWidths 17 0.0058855618 insert B_10width:InterpolationWidths 18 0.0059632681 insert B_10width:InterpolationWidths 19 0.0060407781 insert B_10width:InterpolationWidths 20 0.0061180984 insert B_10width:InterpolationWidths 21 0.0061952351 insert B_10width:InterpolationWidths 22 0.0062721941 insert B_10width:InterpolationWidths 23 0.006348981 insert B_10width:InterpolationWidths 24 0.006425601 insert B_10width:InterpolationWidths 25 0.0065020592 insert B_10width:InterpolationWidths 26 0.0065783604 insert B_10width:InterpolationWidths 27 0.0066545092 insert B_10width:InterpolationWidths 28 0.00673051 insert B_10width:InterpolationWidths 29 0.0068063669 insert B_10width:InterpolationWidths 30 0.0068820839 insert B_10width:InterpolationWidths 31 0.0069576649 insert B_10width:InterpolationWidths 32 0.0070331134 insert B_10width:InterpolationWidths 33 0.0071084331 insert B_10width:InterpolationWidths 34 0.0071836272 insert B_10width:InterpolationWidths 35 0.0072586989 insert B_10width:InterpolationWidths 36 0.0073336514 insert B_10width:InterpolationWidths 37 0.0074084877 insert B_10width:InterpolationWidths 38 0.0074832104 insert B_10width:InterpolationWidths 39 0.0075578225 insert B_10width:InterpolationWidths 40 0.0076323265 insert B_10width:InterpolationWidths 41 0.0077067249 insert B_10width:InterpolationWidths 42 0.0077810202 insert B_10width:InterpolationWidths 43 0.0078552148 insert B_10width:InterpolationWidths 44 0.0079293108 insert B_10width:InterpolationWidths 45 0.0080033106 insert B_10width:InterpolationWidths 46 0.0080772161 insert B_10width:InterpolationWidths 47 0.0081510294 insert B_10width:InterpolationWidths 48 0.0082247526 insert B_10width:InterpolationWidths 49 0.0082983874 insert B_10width:InterpolationWidths 50 0.0083719357 insert B_10width:InterpolationWidths 51 0.0084453993 insert B_10width:InterpolationWidths 52 0.00851878 insert B_10width:InterpolationWidths 53 0.0085920792 insert B_10width:InterpolationWidths 54 0.0023092831 insert B_10width:InterpolationWidths 55 0.0023505585 insert B_10width:InterpolationWidths 56 0.0023916513 insert B_10width:InterpolationWidths 57 0.0024325699 insert B_10width:InterpolationWidths 58 0.0024733223 insert B_10width:InterpolationWidths 59 0.0025139158 insert B_10width:InterpolationWidths 60 0.0025543574 insert B_10width:InterpolationWidths 61 0.0025946534 insert B_10width:InterpolationWidths 62 0.00263481 insert B_10width:InterpolationWidths 63 0.0026748328 insert B_10width:InterpolationWidths 64 0.0027147271 insert B_10width:InterpolationWidths 65 0.0027544979 insert B_10width:InterpolationWidths 66 0.0027941498 insert B_10width:InterpolationWidths 67 0.0028336873 insert B_10width:InterpolationWidths 68 0.0028731146 insert B_10width:InterpolationWidths 69 0.0029124356 insert B_10width:InterpolationWidths 70 0.002951654 insert B_10width:InterpolationWidths 71 0.0029907733 insert B_10width:InterpolationWidths 72 0.0030297969 insert B_10width:InterpolationWidths 73 0.0030687279 insert B_10width:InterpolationWidths 74 0.0031075693 insert B_10width:InterpolationWidths 75 0.003146324 insert B_10width:InterpolationWidths 76 0.0031849947 insert B_10width:InterpolationWidths 77 0.0032235839 insert B_10width:InterpolationWidths 78 0.0032620941 insert B_10width:InterpolationWidths 79 0.0033005276 insert B_10width:InterpolationWidths 80 0.0033388867 insert B_10width:InterpolationWidths 81 0.0033771735 insert B_10width:InterpolationWidths 82 0.0034153899 insert B_10width:InterpolationWidths 83 0.0034535381 insert B_10width:InterpolationWidths 84 0.0034916197 insert B_10width:InterpolationWidths 85 0.0035296366 insert B_10width:InterpolationWidths 86 0.0035675905 insert B_10width:InterpolationWidths 87 0.003605483 insert B_10width:InterpolationWidths 88 0.0036433157 insert B_10width:InterpolationWidths 89 0.00368109 insert B_10width:InterpolationWidths 90 0.0037188075 insert B_10width:InterpolationWidths 91 0.0037564694 insert B_10width:InterpolationWidths 92 0.0037940772 insert B_10width:InterpolationWidths 93 0.0038316321 insert B_10width:InterpolationWidths 94 0.0038691353 insert B_10width:InterpolationWidths 95 0.003906588 insert B_10width:InterpolationWidths 96 0.0039439913 insert B_10width:InterpolationWidths 97 0.0039813465 insert B_10width:InterpolationWidths 98 0.0040186544 insert B_10width:InterpolationWidths 99 0.0040559162 insert B_10width:InterpolationWidths 100 0.0040931328 insert B_10width:InterpolationWidths 101 0.0041303051 insert B_10width:InterpolationWidths 102 0.0041674342 insert B_10width:InterpolationWidths 103 0.0042045209 insert B_10width:InterpolationWidths 104 0.004241566 insert B_10width:InterpolationWidths 105 0.0042785704 insert B_10width:InterpolationWidths 106 0.0043155349 insert B_10width:InterpolationWidths 107 0.0043524603 insert B_10width:NumberofEntries 0 54 insert B_10width:NumberofEntries 1 108 newdef /Herwig/Particles/B_10:Width_generator B_10width newdef /Herwig/Particles/B_1bar0:Width_generator B_10width # create Herwig::GenericWidthGenerator B_1+width newdef B_1+width:Particle /Herwig/Particles/B_1+ newdef B_1+width:Prefactor 1 newdef B_1+width:BRNormalize 1 newdef B_1+width:BRMinimum 0.01 newdef B_1+width:Points 50 newdef B_1+width:InterpolationOrder 1 insert B_1+width:MEtype 0 2 insert B_1+width:MEtype 1 2 insert B_1+width:MEcode 0 0 insert B_1+width:MEcode 1 0 insert B_1+width:MEcoupling 0 0.992642 insert B_1+width:MEcoupling 1 1.00759 insert B_1+width:ModeOn 0 1 insert B_1+width:ModeOn 1 1 insert B_1+width:MinimumMasses 0 5.45997 insert B_1+width:MinimumMasses 1 5.46457 insert B_1+width:MEmass1 0 5.325 insert B_1+width:MEmass1 1 5.325 insert B_1+width:MEmass2 0 0.134978 insert B_1+width:MEmass2 1 0.13957 insert B_1+width:DecayModes 0 B_1+->B*+,pi0; insert B_1+width:DecayModes 1 B_1+->B*0,pi+; insert B_1+width:InterpolationMasses 0 5.6124367 insert B_1+width:InterpolationMasses 1 5.6165184 insert B_1+width:InterpolationMasses 2 5.6206 insert B_1+width:InterpolationMasses 3 5.6246816 insert B_1+width:InterpolationMasses 4 5.6287633 insert B_1+width:InterpolationMasses 5 5.6328449 insert B_1+width:InterpolationMasses 6 5.6369265 insert B_1+width:InterpolationMasses 7 5.6410082 insert B_1+width:InterpolationMasses 8 5.6450898 insert B_1+width:InterpolationMasses 9 5.6491714 insert B_1+width:InterpolationMasses 10 5.6532531 insert B_1+width:InterpolationMasses 11 5.6573347 insert B_1+width:InterpolationMasses 12 5.6614163 insert B_1+width:InterpolationMasses 13 5.665498 insert B_1+width:InterpolationMasses 14 5.6695796 insert B_1+width:InterpolationMasses 15 5.6736612 insert B_1+width:InterpolationMasses 16 5.6777429 insert B_1+width:InterpolationMasses 17 5.6818245 insert B_1+width:InterpolationMasses 18 5.6859061 insert B_1+width:InterpolationMasses 19 5.6899878 insert B_1+width:InterpolationMasses 20 5.6940694 insert B_1+width:InterpolationMasses 21 5.698151 insert B_1+width:InterpolationMasses 22 5.7022327 insert B_1+width:InterpolationMasses 23 5.7063143 insert B_1+width:InterpolationMasses 24 5.7103959 insert B_1+width:InterpolationMasses 25 5.7144776 insert B_1+width:InterpolationMasses 26 5.7185592 insert B_1+width:InterpolationMasses 27 5.7226408 insert B_1+width:InterpolationMasses 28 5.7267224 insert B_1+width:InterpolationMasses 29 5.7308041 insert B_1+width:InterpolationMasses 30 5.7348857 insert B_1+width:InterpolationMasses 31 5.7389673 insert B_1+width:InterpolationMasses 32 5.743049 insert B_1+width:InterpolationMasses 33 5.7471306 insert B_1+width:InterpolationMasses 34 5.7512122 insert B_1+width:InterpolationMasses 35 5.7552939 insert B_1+width:InterpolationMasses 36 5.7593755 insert B_1+width:InterpolationMasses 37 5.7634571 insert B_1+width:InterpolationMasses 38 5.7675388 insert B_1+width:InterpolationMasses 39 5.7716204 insert B_1+width:InterpolationMasses 40 5.775702 insert B_1+width:InterpolationMasses 41 5.7797837 insert B_1+width:InterpolationMasses 42 5.7838653 insert B_1+width:InterpolationMasses 43 5.7879469 insert B_1+width:InterpolationMasses 44 5.7920286 insert B_1+width:InterpolationMasses 45 5.7961102 insert B_1+width:InterpolationMasses 46 5.8001918 insert B_1+width:InterpolationMasses 47 5.8042735 insert B_1+width:InterpolationMasses 48 5.8083551 insert B_1+width:InterpolationMasses 49 5.8124367 insert B_1+width:InterpolationMasses 50 5.8165184 insert B_1+width:InterpolationMasses 51 5.8206 insert B_1+width:InterpolationMasses 52 5.8246816 insert B_1+width:InterpolationMasses 53 5.8287633 insert B_1+width:InterpolationMasses 54 5.6124367 insert B_1+width:InterpolationMasses 55 5.6165184 insert B_1+width:InterpolationMasses 56 5.6206 insert B_1+width:InterpolationMasses 57 5.6246816 insert B_1+width:InterpolationMasses 58 5.6287633 insert B_1+width:InterpolationMasses 59 5.6328449 insert B_1+width:InterpolationMasses 60 5.6369265 insert B_1+width:InterpolationMasses 61 5.6410082 insert B_1+width:InterpolationMasses 62 5.6450898 insert B_1+width:InterpolationMasses 63 5.6491714 insert B_1+width:InterpolationMasses 64 5.6532531 insert B_1+width:InterpolationMasses 65 5.6573347 insert B_1+width:InterpolationMasses 66 5.6614163 insert B_1+width:InterpolationMasses 67 5.665498 insert B_1+width:InterpolationMasses 68 5.6695796 insert B_1+width:InterpolationMasses 69 5.6736612 insert B_1+width:InterpolationMasses 70 5.6777429 insert B_1+width:InterpolationMasses 71 5.6818245 insert B_1+width:InterpolationMasses 72 5.6859061 insert B_1+width:InterpolationMasses 73 5.6899878 insert B_1+width:InterpolationMasses 74 5.6940694 insert B_1+width:InterpolationMasses 75 5.698151 insert B_1+width:InterpolationMasses 76 5.7022327 insert B_1+width:InterpolationMasses 77 5.7063143 insert B_1+width:InterpolationMasses 78 5.7103959 insert B_1+width:InterpolationMasses 79 5.7144776 insert B_1+width:InterpolationMasses 80 5.7185592 insert B_1+width:InterpolationMasses 81 5.7226408 insert B_1+width:InterpolationMasses 82 5.7267224 insert B_1+width:InterpolationMasses 83 5.7308041 insert B_1+width:InterpolationMasses 84 5.7348857 insert B_1+width:InterpolationMasses 85 5.7389673 insert B_1+width:InterpolationMasses 86 5.743049 insert B_1+width:InterpolationMasses 87 5.7471306 insert B_1+width:InterpolationMasses 88 5.7512122 insert B_1+width:InterpolationMasses 89 5.7552939 insert B_1+width:InterpolationMasses 90 5.7593755 insert B_1+width:InterpolationMasses 91 5.7634571 insert B_1+width:InterpolationMasses 92 5.7675388 insert B_1+width:InterpolationMasses 93 5.7716204 insert B_1+width:InterpolationMasses 94 5.775702 insert B_1+width:InterpolationMasses 95 5.7797837 insert B_1+width:InterpolationMasses 96 5.7838653 insert B_1+width:InterpolationMasses 97 5.7879469 insert B_1+width:InterpolationMasses 98 5.7920286 insert B_1+width:InterpolationMasses 99 5.7961102 insert B_1+width:InterpolationMasses 100 5.8001918 insert B_1+width:InterpolationMasses 101 5.8042735 insert B_1+width:InterpolationMasses 102 5.8083551 insert B_1+width:InterpolationMasses 103 5.8124367 insert B_1+width:InterpolationMasses 104 5.8165184 insert B_1+width:InterpolationMasses 105 5.8206 insert B_1+width:InterpolationMasses 106 5.8246816 insert B_1+width:InterpolationMasses 107 5.8287633 insert B_1+width:InterpolationWidths 0 0.0023092835 insert B_1+width:InterpolationWidths 1 0.002350559 insert B_1+width:InterpolationWidths 2 0.0023916518 insert B_1+width:InterpolationWidths 3 0.0024325704 insert B_1+width:InterpolationWidths 4 0.0024733228 insert B_1+width:InterpolationWidths 5 0.0025139163 insert B_1+width:InterpolationWidths 6 0.0025543579 insert B_1+width:InterpolationWidths 7 0.002594654 insert B_1+width:InterpolationWidths 8 0.0026348106 insert B_1+width:InterpolationWidths 9 0.0026748334 insert B_1+width:InterpolationWidths 10 0.0027147277 insert B_1+width:InterpolationWidths 11 0.0027544985 insert B_1+width:InterpolationWidths 12 0.0027941504 insert B_1+width:InterpolationWidths 13 0.0028336879 insert B_1+width:InterpolationWidths 14 0.0028731152 insert B_1+width:InterpolationWidths 15 0.0029124362 insert B_1+width:InterpolationWidths 16 0.0029516546 insert B_1+width:InterpolationWidths 17 0.0029907739 insert B_1+width:InterpolationWidths 18 0.0030297975 insert B_1+width:InterpolationWidths 19 0.0030687285 insert B_1+width:InterpolationWidths 20 0.00310757 insert B_1+width:InterpolationWidths 21 0.0031463247 insert B_1+width:InterpolationWidths 22 0.0031849953 insert B_1+width:InterpolationWidths 23 0.0032235846 insert B_1+width:InterpolationWidths 24 0.0032620948 insert B_1+width:InterpolationWidths 25 0.0033005283 insert B_1+width:InterpolationWidths 26 0.0033388874 insert B_1+width:InterpolationWidths 27 0.0033771742 insert B_1+width:InterpolationWidths 28 0.0034153907 insert B_1+width:InterpolationWidths 29 0.0034535388 insert B_1+width:InterpolationWidths 30 0.0034916205 insert B_1+width:InterpolationWidths 31 0.0035296374 insert B_1+width:InterpolationWidths 32 0.0035675913 insert B_1+width:InterpolationWidths 33 0.0036054838 insert B_1+width:InterpolationWidths 34 0.0036433165 insert B_1+width:InterpolationWidths 35 0.0036810908 insert B_1+width:InterpolationWidths 36 0.0037188083 insert B_1+width:InterpolationWidths 37 0.0037564702 insert B_1+width:InterpolationWidths 38 0.003794078 insert B_1+width:InterpolationWidths 39 0.0038316329 insert B_1+width:InterpolationWidths 40 0.0038691361 insert B_1+width:InterpolationWidths 41 0.0039065888 insert B_1+width:InterpolationWidths 42 0.0039439922 insert B_1+width:InterpolationWidths 43 0.0039813473 insert B_1+width:InterpolationWidths 44 0.0040186552 insert B_1+width:InterpolationWidths 45 0.004055917 insert B_1+width:InterpolationWidths 46 0.0040931336 insert B_1+width:InterpolationWidths 47 0.004130306 insert B_1+width:InterpolationWidths 48 0.0041674351 insert B_1+width:InterpolationWidths 49 0.0042045218 insert B_1+width:InterpolationWidths 50 0.0042415669 insert B_1+width:InterpolationWidths 51 0.0042785713 insert B_1+width:InterpolationWidths 52 0.0043155359 insert B_1+width:InterpolationWidths 53 0.0043524613 insert B_1+width:InterpolationWidths 54 0.0045259715 insert B_1+width:InterpolationWidths 55 0.0046084953 insert B_1+width:InterpolationWidths 56 0.0046906253 insert B_1+width:InterpolationWidths 57 0.0047723802 insert B_1+width:InterpolationWidths 58 0.0048537775 insert B_1+width:InterpolationWidths 59 0.0049348337 insert B_1+width:InterpolationWidths 60 0.0050155639 insert B_1+width:InterpolationWidths 61 0.0050959822 insert B_1+width:InterpolationWidths 62 0.005176102 insert B_1+width:InterpolationWidths 63 0.0052559356 insert B_1+width:InterpolationWidths 64 0.0053354946 insert B_1+width:InterpolationWidths 65 0.00541479 insert B_1+width:InterpolationWidths 66 0.0054938321 insert B_1+width:InterpolationWidths 67 0.0055726304 insert B_1+width:InterpolationWidths 68 0.005651194 insert B_1+width:InterpolationWidths 69 0.0057295316 insert B_1+width:InterpolationWidths 70 0.0058076513 insert B_1+width:InterpolationWidths 71 0.0058855606 insert B_1+width:InterpolationWidths 72 0.0059632668 insert B_1+width:InterpolationWidths 73 0.0060407768 insert B_1+width:InterpolationWidths 74 0.0061180971 insert B_1+width:InterpolationWidths 75 0.0061952338 insert B_1+width:InterpolationWidths 76 0.0062721928 insert B_1+width:InterpolationWidths 77 0.0063489796 insert B_1+width:InterpolationWidths 78 0.0064255996 insert B_1+width:InterpolationWidths 79 0.0065020578 insert B_1+width:InterpolationWidths 80 0.006578359 insert B_1+width:InterpolationWidths 81 0.0066545078 insert B_1+width:InterpolationWidths 82 0.0067305086 insert B_1+width:InterpolationWidths 83 0.0068063655 insert B_1+width:InterpolationWidths 84 0.0068820825 insert B_1+width:InterpolationWidths 85 0.0069576634 insert B_1+width:InterpolationWidths 86 0.0070331119 insert B_1+width:InterpolationWidths 87 0.0071084316 insert B_1+width:InterpolationWidths 88 0.0071836257 insert B_1+width:InterpolationWidths 89 0.0072586974 insert B_1+width:InterpolationWidths 90 0.0073336499 insert B_1+width:InterpolationWidths 91 0.0074084861 insert B_1+width:InterpolationWidths 92 0.0074832088 insert B_1+width:InterpolationWidths 93 0.0075578209 insert B_1+width:InterpolationWidths 94 0.0076323248 insert B_1+width:InterpolationWidths 95 0.0077067232 insert B_1+width:InterpolationWidths 96 0.0077810186 insert B_1+width:InterpolationWidths 97 0.0078552131 insert B_1+width:InterpolationWidths 98 0.0079293091 insert B_1+width:InterpolationWidths 99 0.0080033089 insert B_1+width:InterpolationWidths 100 0.0080772144 insert B_1+width:InterpolationWidths 101 0.0081510277 insert B_1+width:InterpolationWidths 102 0.0082247508 insert B_1+width:InterpolationWidths 103 0.0082983856 insert B_1+width:InterpolationWidths 104 0.008371934 insert B_1+width:InterpolationWidths 105 0.0084453976 insert B_1+width:InterpolationWidths 106 0.0085187782 insert B_1+width:InterpolationWidths 107 0.0085920774 insert B_1+width:NumberofEntries 0 54 insert B_1+width:NumberofEntries 1 108 newdef /Herwig/Particles/B_1-:Width_generator B_1+width newdef /Herwig/Particles/B_1+:Width_generator B_1+width # create Herwig::GenericWidthGenerator B'_1+width newdef B'_1+width:Particle /Herwig/Particles/B'_1+ newdef B'_1+width:Prefactor 1.00001 newdef B'_1+width:BRNormalize 1 newdef B'_1+width:BRMinimum 0.01 newdef B'_1+width:Points 50 newdef B'_1+width:InterpolationOrder 1 insert B'_1+width:MEtype 0 2 insert B'_1+width:MEtype 1 2 insert B'_1+width:MEcode 0 0 insert B'_1+width:MEcode 1 0 insert B'_1+width:MEcoupling 0 1.0025 insert B'_1+width:MEcoupling 1 1.00198 insert B'_1+width:ModeOn 0 1 insert B'_1+width:ModeOn 1 1 insert B'_1+width:MinimumMasses 0 5.45997 insert B'_1+width:MinimumMasses 1 5.46457 insert B'_1+width:MEmass1 0 5.325 insert B'_1+width:MEmass1 1 5.325 insert B'_1+width:MEmass2 0 0.134978 insert B'_1+width:MEmass2 1 0.13957 insert B'_1+width:DecayModes 0 B'_1+->B*+,pi0; insert B'_1+width:DecayModes 1 B'_1+->B*0,pi+; insert B'_1+width:InterpolationMasses 0 5.4807755 insert B'_1+width:InterpolationMasses 1 5.4913878 insert B'_1+width:InterpolationMasses 2 5.502 insert B'_1+width:InterpolationMasses 3 5.5126122 insert B'_1+width:InterpolationMasses 4 5.5232245 insert B'_1+width:InterpolationMasses 5 5.5338367 insert B'_1+width:InterpolationMasses 6 5.544449 insert B'_1+width:InterpolationMasses 7 5.5550612 insert B'_1+width:InterpolationMasses 8 5.5656735 insert B'_1+width:InterpolationMasses 9 5.5762857 insert B'_1+width:InterpolationMasses 10 5.586898 insert B'_1+width:InterpolationMasses 11 5.5975102 insert B'_1+width:InterpolationMasses 12 5.6081224 insert B'_1+width:InterpolationMasses 13 5.6187347 insert B'_1+width:InterpolationMasses 14 5.6293469 insert B'_1+width:InterpolationMasses 15 5.6399592 insert B'_1+width:InterpolationMasses 16 5.6505714 insert B'_1+width:InterpolationMasses 17 5.6611837 insert B'_1+width:InterpolationMasses 18 5.6717959 insert B'_1+width:InterpolationMasses 19 5.6824082 insert B'_1+width:InterpolationMasses 20 5.6930204 insert B'_1+width:InterpolationMasses 21 5.7036327 insert B'_1+width:InterpolationMasses 22 5.7142449 insert B'_1+width:InterpolationMasses 23 5.7248571 insert B'_1+width:InterpolationMasses 24 5.7354694 insert B'_1+width:InterpolationMasses 25 5.7460816 insert B'_1+width:InterpolationMasses 26 5.7566939 insert B'_1+width:InterpolationMasses 27 5.7673061 insert B'_1+width:InterpolationMasses 28 5.7779184 insert B'_1+width:InterpolationMasses 29 5.7885306 insert B'_1+width:InterpolationMasses 30 5.7991429 insert B'_1+width:InterpolationMasses 31 5.8097551 insert B'_1+width:InterpolationMasses 32 5.8203673 insert B'_1+width:InterpolationMasses 33 5.8309796 insert B'_1+width:InterpolationMasses 34 5.8415918 insert B'_1+width:InterpolationMasses 35 5.8522041 insert B'_1+width:InterpolationMasses 36 5.8628163 insert B'_1+width:InterpolationMasses 37 5.8734286 insert B'_1+width:InterpolationMasses 38 5.8840408 insert B'_1+width:InterpolationMasses 39 5.8946531 insert B'_1+width:InterpolationMasses 40 5.9052653 insert B'_1+width:InterpolationMasses 41 5.9158776 insert B'_1+width:InterpolationMasses 42 5.9264898 insert B'_1+width:InterpolationMasses 43 5.937102 insert B'_1+width:InterpolationMasses 44 5.9477143 insert B'_1+width:InterpolationMasses 45 5.9583265 insert B'_1+width:InterpolationMasses 46 5.9689388 insert B'_1+width:InterpolationMasses 47 5.979551 insert B'_1+width:InterpolationMasses 48 5.9901633 insert B'_1+width:InterpolationMasses 49 6.0007755 insert B'_1+width:InterpolationMasses 50 6.0113878 insert B'_1+width:InterpolationMasses 51 6.022 insert B'_1+width:InterpolationMasses 52 6.0326122 insert B'_1+width:InterpolationMasses 53 6.0432245 insert B'_1+width:InterpolationMasses 54 5.4807755 insert B'_1+width:InterpolationMasses 55 5.4913878 insert B'_1+width:InterpolationMasses 56 5.502 insert B'_1+width:InterpolationMasses 57 5.5126122 insert B'_1+width:InterpolationMasses 58 5.5232245 insert B'_1+width:InterpolationMasses 59 5.5338367 insert B'_1+width:InterpolationMasses 60 5.544449 insert B'_1+width:InterpolationMasses 61 5.5550612 insert B'_1+width:InterpolationMasses 62 5.5656735 insert B'_1+width:InterpolationMasses 63 5.5762857 insert B'_1+width:InterpolationMasses 64 5.586898 insert B'_1+width:InterpolationMasses 65 5.5975102 insert B'_1+width:InterpolationMasses 66 5.6081224 insert B'_1+width:InterpolationMasses 67 5.6187347 insert B'_1+width:InterpolationMasses 68 5.6293469 insert B'_1+width:InterpolationMasses 69 5.6399592 insert B'_1+width:InterpolationMasses 70 5.6505714 insert B'_1+width:InterpolationMasses 71 5.6611837 insert B'_1+width:InterpolationMasses 72 5.6717959 insert B'_1+width:InterpolationMasses 73 5.6824082 insert B'_1+width:InterpolationMasses 74 5.6930204 insert B'_1+width:InterpolationMasses 75 5.7036327 insert B'_1+width:InterpolationMasses 76 5.7142449 insert B'_1+width:InterpolationMasses 77 5.7248571 insert B'_1+width:InterpolationMasses 78 5.7354694 insert B'_1+width:InterpolationMasses 79 5.7460816 insert B'_1+width:InterpolationMasses 80 5.7566939 insert B'_1+width:InterpolationMasses 81 5.7673061 insert B'_1+width:InterpolationMasses 82 5.7779184 insert B'_1+width:InterpolationMasses 83 5.7885306 insert B'_1+width:InterpolationMasses 84 5.7991429 insert B'_1+width:InterpolationMasses 85 5.8097551 insert B'_1+width:InterpolationMasses 86 5.8203673 insert B'_1+width:InterpolationMasses 87 5.8309796 insert B'_1+width:InterpolationMasses 88 5.8415918 insert B'_1+width:InterpolationMasses 89 5.8522041 insert B'_1+width:InterpolationMasses 90 5.8628163 insert B'_1+width:InterpolationMasses 91 5.8734286 insert B'_1+width:InterpolationMasses 92 5.8840408 insert B'_1+width:InterpolationMasses 93 5.8946531 insert B'_1+width:InterpolationMasses 94 5.9052653 insert B'_1+width:InterpolationMasses 95 5.9158776 insert B'_1+width:InterpolationMasses 96 5.9264898 insert B'_1+width:InterpolationMasses 97 5.937102 insert B'_1+width:InterpolationMasses 98 5.9477143 insert B'_1+width:InterpolationMasses 99 5.9583265 insert B'_1+width:InterpolationMasses 100 5.9689388 insert B'_1+width:InterpolationMasses 101 5.979551 insert B'_1+width:InterpolationMasses 102 5.9901633 insert B'_1+width:InterpolationMasses 103 6.0007755 insert B'_1+width:InterpolationMasses 104 6.0113878 insert B'_1+width:InterpolationMasses 105 6.022 insert B'_1+width:InterpolationMasses 106 6.0326122 insert B'_1+width:InterpolationMasses 107 6.0432245 insert B'_1+width:InterpolationWidths 0 0.008256649 insert B'_1+width:InterpolationWidths 1 0.010321279 insert B'_1+width:InterpolationWidths 2 0.012136047 insert B'_1+width:InterpolationWidths 3 0.013799485 insert B'_1+width:InterpolationWidths 4 0.015360487 insert B'_1+width:InterpolationWidths 5 0.016847239 insert B'_1+width:InterpolationWidths 6 0.018277589 insert B'_1+width:InterpolationWidths 7 0.019663594 insert B'_1+width:InterpolationWidths 8 0.021013799 insert B'_1+width:InterpolationWidths 9 0.022334483 insert B'_1+width:InterpolationWidths 10 0.023630399 insert B'_1+width:InterpolationWidths 11 0.024905232 insert B'_1+width:InterpolationWidths 12 0.026161894 insert B'_1+width:InterpolationWidths 13 0.027402727 insert B'_1+width:InterpolationWidths 14 0.028629642 insert B'_1+width:InterpolationWidths 15 0.029844218 insert B'_1+width:InterpolationWidths 16 0.031047773 insert B'_1+width:InterpolationWidths 17 0.032241421 insert B'_1+width:InterpolationWidths 18 0.033426109 insert B'_1+width:InterpolationWidths 19 0.03460265 insert B'_1+width:InterpolationWidths 20 0.035771746 insert B'_1+width:InterpolationWidths 21 0.036934011 insert B'_1+width:InterpolationWidths 22 0.038089978 insert B'_1+width:InterpolationWidths 23 0.039240121 insert B'_1+width:InterpolationWidths 24 0.040384856 insert B'_1+width:InterpolationWidths 25 0.041524555 insert B'_1+width:InterpolationWidths 26 0.04265955 insert B'_1+width:InterpolationWidths 27 0.04379014 insert B'_1+width:InterpolationWidths 28 0.044916592 insert B'_1+width:InterpolationWidths 29 0.04603915 insert B'_1+width:InterpolationWidths 30 0.047158035 insert B'_1+width:InterpolationWidths 31 0.048273448 insert B'_1+width:InterpolationWidths 32 0.049385572 insert B'_1+width:InterpolationWidths 33 0.050494577 insert B'_1+width:InterpolationWidths 34 0.051600617 insert B'_1+width:InterpolationWidths 35 0.052703836 insert B'_1+width:InterpolationWidths 36 0.053804365 insert B'_1+width:InterpolationWidths 37 0.054902329 insert B'_1+width:InterpolationWidths 38 0.05599784 insert B'_1+width:InterpolationWidths 39 0.057091005 insert B'_1+width:InterpolationWidths 40 0.058181923 insert B'_1+width:InterpolationWidths 41 0.059270689 insert B'_1+width:InterpolationWidths 42 0.060357388 insert B'_1+width:InterpolationWidths 43 0.061442103 insert B'_1+width:InterpolationWidths 44 0.062524911 insert B'_1+width:InterpolationWidths 45 0.063605886 insert B'_1+width:InterpolationWidths 46 0.064685096 insert B'_1+width:InterpolationWidths 47 0.065762607 insert B'_1+width:InterpolationWidths 48 0.06683848 insert B'_1+width:InterpolationWidths 49 0.067912775 insert B'_1+width:InterpolationWidths 50 0.068985548 insert B'_1+width:InterpolationWidths 51 0.070056852 insert B'_1+width:InterpolationWidths 52 0.071126739 insert B'_1+width:InterpolationWidths 53 0.072195257 insert B'_1+width:InterpolationWidths 54 0.014752711 insert B'_1+width:InterpolationWidths 55 0.019299152 insert B'_1+width:InterpolationWidths 56 0.023172069 insert B'_1+width:InterpolationWidths 57 0.026665724 insert B'_1+width:InterpolationWidths 58 0.029912575 insert B'_1+width:InterpolationWidths 59 0.032984944 insert B'_1+width:InterpolationWidths 60 0.035927046 insert B'_1+width:InterpolationWidths 61 0.03876803 insert B'_1+width:InterpolationWidths 62 0.041528179 insert B'_1+width:InterpolationWidths 63 0.044222197 insert B'_1+width:InterpolationWidths 64 0.04686109 insert B'_1+width:InterpolationWidths 65 0.049453313 insert B'_1+width:InterpolationWidths 66 0.052005501 insert B'_1+width:InterpolationWidths 67 0.054522956 insert B'_1+width:InterpolationWidths 68 0.057009981 insert B'_1+width:InterpolationWidths 69 0.059470115 insert B'_1+width:InterpolationWidths 70 0.061906303 insert B'_1+width:InterpolationWidths 71 0.06432102 insert B'_1+width:InterpolationWidths 72 0.066716367 insert B'_1+width:InterpolationWidths 73 0.069094143 insert B'_1+width:InterpolationWidths 74 0.071455898 insert B'_1+width:InterpolationWidths 75 0.073802978 insert B'_1+width:InterpolationWidths 76 0.076136558 insert B'_1+width:InterpolationWidths 77 0.078457673 insert B'_1+width:InterpolationWidths 78 0.080767236 insert B'_1+width:InterpolationWidths 79 0.083066057 insert B'_1+width:InterpolationWidths 80 0.085354861 insert B'_1+width:InterpolationWidths 81 0.087634296 insert B'_1+width:InterpolationWidths 82 0.089904945 insert B'_1+width:InterpolationWidths 83 0.092167336 insert B'_1+width:InterpolationWidths 84 0.094421947 insert B'_1+width:InterpolationWidths 85 0.096669213 insert B'_1+width:InterpolationWidths 86 0.098909531 insert B'_1+width:InterpolationWidths 87 0.10114327 insert B'_1+width:InterpolationWidths 88 0.10337075 insert B'_1+width:InterpolationWidths 89 0.10559229 insert B'_1+width:InterpolationWidths 90 0.10780818 insert B'_1+width:InterpolationWidths 91 0.11001867 insert B'_1+width:InterpolationWidths 92 0.11222401 insert B'_1+width:InterpolationWidths 93 0.11442443 insert B'_1+width:InterpolationWidths 94 0.11662014 insert B'_1+width:InterpolationWidths 95 0.11881134 insert B'_1+width:InterpolationWidths 96 0.12099822 insert B'_1+width:InterpolationWidths 97 0.12318095 insert B'_1+width:InterpolationWidths 98 0.12535969 insert B'_1+width:InterpolationWidths 99 0.1275346 insert B'_1+width:InterpolationWidths 100 0.12970583 insert B'_1+width:InterpolationWidths 101 0.13187352 insert B'_1+width:InterpolationWidths 102 0.13403779 insert B'_1+width:InterpolationWidths 103 0.13619878 insert B'_1+width:InterpolationWidths 104 0.1383566 insert B'_1+width:InterpolationWidths 105 0.14051136 insert B'_1+width:InterpolationWidths 106 0.14266317 insert B'_1+width:InterpolationWidths 107 0.14481214 insert B'_1+width:NumberofEntries 0 54 insert B'_1+width:NumberofEntries 1 108 newdef /Herwig/Particles/B'_1-:Width_generator B'_1+width newdef /Herwig/Particles/B'_1+:Width_generator B'_1+width # create Herwig::GenericWidthGenerator B'_10width newdef B'_10width:Particle /Herwig/Particles/B'_10 newdef B'_10width:Prefactor 1.00001 newdef B'_10width:BRNormalize 1 newdef B'_10width:BRMinimum 0.01 newdef B'_10width:Points 50 newdef B'_10width:InterpolationOrder 1 insert B'_10width:MEtype 0 2 insert B'_10width:MEtype 1 2 insert B'_10width:MEcode 0 0 insert B'_10width:MEcode 1 0 insert B'_10width:MEcoupling 0 1.00198 insert B'_10width:MEcoupling 1 1.0025 insert B'_10width:ModeOn 0 1 insert B'_10width:ModeOn 1 1 insert B'_10width:MinimumMasses 0 5.46456 insert B'_10width:MinimumMasses 1 5.45998 insert B'_10width:MEmass1 0 5.325 insert B'_10width:MEmass1 1 5.325 insert B'_10width:MEmass2 0 0.13957 insert B'_10width:MEmass2 1 0.134978 insert B'_10width:DecayModes 0 B'_10->B*+,pi-; insert B'_10width:DecayModes 1 B'_10->B*0,pi0; insert B'_10width:InterpolationMasses 0 5.4807755 insert B'_10width:InterpolationMasses 1 5.4913878 insert B'_10width:InterpolationMasses 2 5.502 insert B'_10width:InterpolationMasses 3 5.5126122 insert B'_10width:InterpolationMasses 4 5.5232245 insert B'_10width:InterpolationMasses 5 5.5338367 insert B'_10width:InterpolationMasses 6 5.544449 insert B'_10width:InterpolationMasses 7 5.5550612 insert B'_10width:InterpolationMasses 8 5.5656735 insert B'_10width:InterpolationMasses 9 5.5762857 insert B'_10width:InterpolationMasses 10 5.586898 insert B'_10width:InterpolationMasses 11 5.5975102 insert B'_10width:InterpolationMasses 12 5.6081224 insert B'_10width:InterpolationMasses 13 5.6187347 insert B'_10width:InterpolationMasses 14 5.6293469 insert B'_10width:InterpolationMasses 15 5.6399592 insert B'_10width:InterpolationMasses 16 5.6505714 insert B'_10width:InterpolationMasses 17 5.6611837 insert B'_10width:InterpolationMasses 18 5.6717959 insert B'_10width:InterpolationMasses 19 5.6824082 insert B'_10width:InterpolationMasses 20 5.6930204 insert B'_10width:InterpolationMasses 21 5.7036327 insert B'_10width:InterpolationMasses 22 5.7142449 insert B'_10width:InterpolationMasses 23 5.7248571 insert B'_10width:InterpolationMasses 24 5.7354694 insert B'_10width:InterpolationMasses 25 5.7460816 insert B'_10width:InterpolationMasses 26 5.7566939 insert B'_10width:InterpolationMasses 27 5.7673061 insert B'_10width:InterpolationMasses 28 5.7779184 insert B'_10width:InterpolationMasses 29 5.7885306 insert B'_10width:InterpolationMasses 30 5.7991429 insert B'_10width:InterpolationMasses 31 5.8097551 insert B'_10width:InterpolationMasses 32 5.8203673 insert B'_10width:InterpolationMasses 33 5.8309796 insert B'_10width:InterpolationMasses 34 5.8415918 insert B'_10width:InterpolationMasses 35 5.8522041 insert B'_10width:InterpolationMasses 36 5.8628163 insert B'_10width:InterpolationMasses 37 5.8734286 insert B'_10width:InterpolationMasses 38 5.8840408 insert B'_10width:InterpolationMasses 39 5.8946531 insert B'_10width:InterpolationMasses 40 5.9052653 insert B'_10width:InterpolationMasses 41 5.9158776 insert B'_10width:InterpolationMasses 42 5.9264898 insert B'_10width:InterpolationMasses 43 5.937102 insert B'_10width:InterpolationMasses 44 5.9477143 insert B'_10width:InterpolationMasses 45 5.9583265 insert B'_10width:InterpolationMasses 46 5.9689388 insert B'_10width:InterpolationMasses 47 5.979551 insert B'_10width:InterpolationMasses 48 5.9901633 insert B'_10width:InterpolationMasses 49 6.0007755 insert B'_10width:InterpolationMasses 50 6.0113878 insert B'_10width:InterpolationMasses 51 6.022 insert B'_10width:InterpolationMasses 52 6.0326122 insert B'_10width:InterpolationMasses 53 6.0432245 insert B'_10width:InterpolationMasses 54 5.4807755 insert B'_10width:InterpolationMasses 55 5.4913878 insert B'_10width:InterpolationMasses 56 5.502 insert B'_10width:InterpolationMasses 57 5.5126122 insert B'_10width:InterpolationMasses 58 5.5232245 insert B'_10width:InterpolationMasses 59 5.5338367 insert B'_10width:InterpolationMasses 60 5.544449 insert B'_10width:InterpolationMasses 61 5.5550612 insert B'_10width:InterpolationMasses 62 5.5656735 insert B'_10width:InterpolationMasses 63 5.5762857 insert B'_10width:InterpolationMasses 64 5.586898 insert B'_10width:InterpolationMasses 65 5.5975102 insert B'_10width:InterpolationMasses 66 5.6081224 insert B'_10width:InterpolationMasses 67 5.6187347 insert B'_10width:InterpolationMasses 68 5.6293469 insert B'_10width:InterpolationMasses 69 5.6399592 insert B'_10width:InterpolationMasses 70 5.6505714 insert B'_10width:InterpolationMasses 71 5.6611837 insert B'_10width:InterpolationMasses 72 5.6717959 insert B'_10width:InterpolationMasses 73 5.6824082 insert B'_10width:InterpolationMasses 74 5.6930204 insert B'_10width:InterpolationMasses 75 5.7036327 insert B'_10width:InterpolationMasses 76 5.7142449 insert B'_10width:InterpolationMasses 77 5.7248571 insert B'_10width:InterpolationMasses 78 5.7354694 insert B'_10width:InterpolationMasses 79 5.7460816 insert B'_10width:InterpolationMasses 80 5.7566939 insert B'_10width:InterpolationMasses 81 5.7673061 insert B'_10width:InterpolationMasses 82 5.7779184 insert B'_10width:InterpolationMasses 83 5.7885306 insert B'_10width:InterpolationMasses 84 5.7991429 insert B'_10width:InterpolationMasses 85 5.8097551 insert B'_10width:InterpolationMasses 86 5.8203673 insert B'_10width:InterpolationMasses 87 5.8309796 insert B'_10width:InterpolationMasses 88 5.8415918 insert B'_10width:InterpolationMasses 89 5.8522041 insert B'_10width:InterpolationMasses 90 5.8628163 insert B'_10width:InterpolationMasses 91 5.8734286 insert B'_10width:InterpolationMasses 92 5.8840408 insert B'_10width:InterpolationMasses 93 5.8946531 insert B'_10width:InterpolationMasses 94 5.9052653 insert B'_10width:InterpolationMasses 95 5.9158776 insert B'_10width:InterpolationMasses 96 5.9264898 insert B'_10width:InterpolationMasses 97 5.937102 insert B'_10width:InterpolationMasses 98 5.9477143 insert B'_10width:InterpolationMasses 99 5.9583265 insert B'_10width:InterpolationMasses 100 5.9689388 insert B'_10width:InterpolationMasses 101 5.979551 insert B'_10width:InterpolationMasses 102 5.9901633 insert B'_10width:InterpolationMasses 103 6.0007755 insert B'_10width:InterpolationMasses 104 6.0113878 insert B'_10width:InterpolationMasses 105 6.022 insert B'_10width:InterpolationMasses 106 6.0326122 insert B'_10width:InterpolationMasses 107 6.0432245 insert B'_10width:InterpolationWidths 0 0.014752714 insert B'_10width:InterpolationWidths 1 0.019299156 insert B'_10width:InterpolationWidths 2 0.023172074 insert B'_10width:InterpolationWidths 3 0.02666573 insert B'_10width:InterpolationWidths 4 0.029912582 insert B'_10width:InterpolationWidths 5 0.032984951 insert B'_10width:InterpolationWidths 6 0.035927053 insert B'_10width:InterpolationWidths 7 0.038768038 insert B'_10width:InterpolationWidths 8 0.041528188 insert B'_10width:InterpolationWidths 9 0.044222206 insert B'_10width:InterpolationWidths 10 0.0468611 insert B'_10width:InterpolationWidths 11 0.049453323 insert B'_10width:InterpolationWidths 12 0.052005512 insert B'_10width:InterpolationWidths 13 0.054522967 insert B'_10width:InterpolationWidths 14 0.057009993 insert B'_10width:InterpolationWidths 15 0.059470128 insert B'_10width:InterpolationWidths 16 0.061906316 insert B'_10width:InterpolationWidths 17 0.064321033 insert B'_10width:InterpolationWidths 18 0.066716381 insert B'_10width:InterpolationWidths 19 0.069094158 insert B'_10width:InterpolationWidths 20 0.071455913 insert B'_10width:InterpolationWidths 21 0.073802993 insert B'_10width:InterpolationWidths 22 0.076136574 insert B'_10width:InterpolationWidths 23 0.07845769 insert B'_10width:InterpolationWidths 24 0.080767253 insert B'_10width:InterpolationWidths 25 0.083066075 insert B'_10width:InterpolationWidths 26 0.085354879 insert B'_10width:InterpolationWidths 27 0.087634314 insert B'_10width:InterpolationWidths 28 0.089904964 insert B'_10width:InterpolationWidths 29 0.092167356 insert B'_10width:InterpolationWidths 30 0.094421967 insert B'_10width:InterpolationWidths 31 0.096669234 insert B'_10width:InterpolationWidths 32 0.098909552 insert B'_10width:InterpolationWidths 33 0.10114329 insert B'_10width:InterpolationWidths 34 0.10337077 insert B'_10width:InterpolationWidths 35 0.10559232 insert B'_10width:InterpolationWidths 36 0.1078082 insert B'_10width:InterpolationWidths 37 0.11001869 insert B'_10width:InterpolationWidths 38 0.11222403 insert B'_10width:InterpolationWidths 39 0.11442445 insert B'_10width:InterpolationWidths 40 0.11662017 insert B'_10width:InterpolationWidths 41 0.11881137 insert B'_10width:InterpolationWidths 42 0.12099824 insert B'_10width:InterpolationWidths 43 0.12318097 insert B'_10width:InterpolationWidths 44 0.12535972 insert B'_10width:InterpolationWidths 45 0.12753463 insert B'_10width:InterpolationWidths 46 0.12970586 insert B'_10width:InterpolationWidths 47 0.13187355 insert B'_10width:InterpolationWidths 48 0.13403782 insert B'_10width:InterpolationWidths 49 0.13619881 insert B'_10width:InterpolationWidths 50 0.13835663 insert B'_10width:InterpolationWidths 51 0.14051139 insert B'_10width:InterpolationWidths 52 0.1426632 insert B'_10width:InterpolationWidths 53 0.14481217 insert B'_10width:InterpolationWidths 54 0.0082566472 insert B'_10width:InterpolationWidths 55 0.010321276 insert B'_10width:InterpolationWidths 56 0.012136044 insert B'_10width:InterpolationWidths 57 0.013799482 insert B'_10width:InterpolationWidths 58 0.015360484 insert B'_10width:InterpolationWidths 59 0.016847236 insert B'_10width:InterpolationWidths 60 0.018277585 insert B'_10width:InterpolationWidths 61 0.01966359 insert B'_10width:InterpolationWidths 62 0.021013795 insert B'_10width:InterpolationWidths 63 0.022334478 insert B'_10width:InterpolationWidths 64 0.023630394 insert B'_10width:InterpolationWidths 65 0.024905227 insert B'_10width:InterpolationWidths 66 0.026161888 insert B'_10width:InterpolationWidths 67 0.027402721 insert B'_10width:InterpolationWidths 68 0.028629636 insert B'_10width:InterpolationWidths 69 0.029844212 insert B'_10width:InterpolationWidths 70 0.031047767 insert B'_10width:InterpolationWidths 71 0.032241414 insert B'_10width:InterpolationWidths 72 0.033426102 insert B'_10width:InterpolationWidths 73 0.034602642 insert B'_10width:InterpolationWidths 74 0.035771739 insert B'_10width:InterpolationWidths 75 0.036934003 insert B'_10width:InterpolationWidths 76 0.03808997 insert B'_10width:InterpolationWidths 77 0.039240112 insert B'_10width:InterpolationWidths 78 0.040384847 insert B'_10width:InterpolationWidths 79 0.041524546 insert B'_10width:InterpolationWidths 80 0.042659541 insert B'_10width:InterpolationWidths 81 0.04379013 insert B'_10width:InterpolationWidths 82 0.044916582 insert B'_10width:InterpolationWidths 83 0.04603914 insert B'_10width:InterpolationWidths 84 0.047158025 insert B'_10width:InterpolationWidths 85 0.048273438 insert B'_10width:InterpolationWidths 86 0.049385562 insert B'_10width:InterpolationWidths 87 0.050494566 insert B'_10width:InterpolationWidths 88 0.051600606 insert B'_10width:InterpolationWidths 89 0.052703825 insert B'_10width:InterpolationWidths 90 0.053804354 insert B'_10width:InterpolationWidths 91 0.054902317 insert B'_10width:InterpolationWidths 92 0.055997828 insert B'_10width:InterpolationWidths 93 0.057090993 insert B'_10width:InterpolationWidths 94 0.058181911 insert B'_10width:InterpolationWidths 95 0.059270676 insert B'_10width:InterpolationWidths 96 0.060357375 insert B'_10width:InterpolationWidths 97 0.06144209 insert B'_10width:InterpolationWidths 98 0.062524898 insert B'_10width:InterpolationWidths 99 0.063605873 insert B'_10width:InterpolationWidths 100 0.064685082 insert B'_10width:InterpolationWidths 101 0.065762593 insert B'_10width:InterpolationWidths 102 0.066838466 insert B'_10width:InterpolationWidths 103 0.06791276 insert B'_10width:InterpolationWidths 104 0.068985533 insert B'_10width:InterpolationWidths 105 0.070056837 insert B'_10width:InterpolationWidths 106 0.071126724 insert B'_10width:InterpolationWidths 107 0.072195241 insert B'_10width:NumberofEntries 0 54 insert B'_10width:NumberofEntries 1 108 newdef /Herwig/Particles/B'_10:Width_generator B'_10width newdef /Herwig/Particles/B'_1bar0:Width_generator B'_10width # create Herwig::GenericWidthGenerator B_c2+width newdef B_c2+width:Particle /Herwig/Particles/B_c2+ newdef B_c2+width:Prefactor 1 newdef B_c2+width:BRNormalize 1 newdef B_c2+width:BRMinimum 0.01 newdef B_c2+width:Points 50 newdef B_c2+width:InterpolationOrder 1 insert B_c2+width:MEtype 0 1 insert B_c2+width:MEcode 0 8 insert B_c2+width:MEcoupling 0 29.6224 insert B_c2+width:ModeOn 0 1 insert B_c2+width:MinimumMasses 0 6.286 insert B_c2+width:MEmass1 0 6.286 insert B_c2+width:MEmass2 0 0 insert B_c2+width:DecayModes 0 B_c2+->B_c+,gamma; insert B_c2+width:NumberofEntries 0 0 newdef /Herwig/Particles/B_c2-:Width_generator B_c2+width newdef /Herwig/Particles/B_c2+:Width_generator B_c2+width # create Herwig::GenericWidthGenerator B_c1+width newdef B_c1+width:Particle /Herwig/Particles/B_c1+ newdef B_c1+width:Prefactor 1 newdef B_c1+width:BRNormalize 1 newdef B_c1+width:BRMinimum 0.01 newdef B_c1+width:Points 50 newdef B_c1+width:InterpolationOrder 1 insert B_c1+width:MEtype 0 0 insert B_c1+width:MEtype 1 1 insert B_c1+width:MEcode 0 0 insert B_c1+width:MEcode 1 4 insert B_c1+width:MEcoupling 0 0.82 insert B_c1+width:MEcoupling 1 0.511564 insert B_c1+width:ModeOn 0 1 insert B_c1+width:ModeOn 1 1 insert B_c1+width:MinimumMasses 0 6.321 insert B_c1+width:MinimumMasses 1 6.286 insert B_c1+width:MEmass1 0 0 insert B_c1+width:MEmass1 1 0 insert B_c1+width:MEmass2 0 0 insert B_c1+width:MEmass2 1 6.286 insert B_c1+width:DecayModes 0 B_c1+->B_c*+,gamma; insert B_c1+width:DecayModes 1 B_c1+->B_c+,gamma; insert B_c1+width:NumberofEntries 0 0 insert B_c1+width:NumberofEntries 1 0 newdef /Herwig/Particles/B_c1+:Width_generator B_c1+width newdef /Herwig/Particles/B_c1-:Width_generator B_c1+width # create Herwig::GenericWidthGenerator B'_c1+width newdef B'_c1+width:Particle /Herwig/Particles/B'_c1+ newdef B'_c1+width:Prefactor 1 newdef B'_c1+width:BRNormalize 1 newdef B'_c1+width:BRMinimum 0.01 newdef B'_c1+width:Points 50 newdef B'_c1+width:InterpolationOrder 1 insert B'_c1+width:MEtype 0 0 insert B'_c1+width:MEtype 1 1 insert B'_c1+width:MEcode 0 0 insert B'_c1+width:MEcode 1 4 insert B'_c1+width:MEcoupling 0 0.12 insert B'_c1+width:MEcoupling 1 1.18351 insert B'_c1+width:ModeOn 0 1 insert B'_c1+width:ModeOn 1 1 insert B'_c1+width:MinimumMasses 0 6.321 insert B'_c1+width:MinimumMasses 1 6.286 insert B'_c1+width:MEmass1 0 0 insert B'_c1+width:MEmass1 1 0 insert B'_c1+width:MEmass2 0 0 insert B'_c1+width:MEmass2 1 6.286 insert B'_c1+width:DecayModes 0 B'_c1+->B_c*+,gamma; insert B'_c1+width:DecayModes 1 B'_c1+->B_c+,gamma; insert B'_c1+width:NumberofEntries 0 0 insert B'_c1+width:NumberofEntries 1 0 newdef /Herwig/Particles/B'_c1+:Width_generator B'_c1+width newdef /Herwig/Particles/B'_c1-:Width_generator B'_c1+width # create Herwig::GenericWidthGenerator B_c0+width newdef B_c0+width:Particle /Herwig/Particles/B*_c0+ newdef B_c0+width:Prefactor 1 newdef B_c0+width:BRNormalize 1 newdef B_c0+width:BRMinimum 0.01 newdef B_c0+width:Points 50 newdef B_c0+width:InterpolationOrder 1 insert B_c0+width:MEtype 0 0 insert B_c0+width:MEcode 0 0 insert B_c0+width:MEcoupling 0 1 insert B_c0+width:ModeOn 0 1 insert B_c0+width:MinimumMasses 0 6.286 insert B_c0+width:MEmass1 0 0 insert B_c0+width:MEmass2 0 0 insert B_c0+width:DecayModes 0 B*_c0+->B_c+,gamma; insert B_c0+width:NumberofEntries 0 0 newdef /Herwig/Particles/B*_c0+:Width_generator B_c0+width newdef /Herwig/Particles/B*_c0-:Width_generator B_c0+width # create Herwig::GenericWidthGenerator B_s00width newdef B_s00width:Particle /Herwig/Particles/B*_s00 newdef B_s00width:Prefactor 1 newdef B_s00width:BRNormalize 1 newdef B_s00width:BRMinimum 0.01 newdef B_s00width:Points 50 newdef B_s00width:InterpolationOrder 1 insert B_s00width:MEtype 0 1 insert B_s00width:MEtype 1 1 insert B_s00width:MEcode 0 6 insert B_s00width:MEcode 1 6 insert B_s00width:MEcoupling 0 2.06584 insert B_s00width:MEcoupling 1 2.11704 insert B_s00width:ModeOn 0 1 insert B_s00width:ModeOn 1 1 insert B_s00width:MinimumMasses 0 5.77268 insert B_s00width:MinimumMasses 1 5.77705 insert B_s00width:MEmass1 0 5.279 insert B_s00width:MEmass1 1 5.2794 insert B_s00width:MEmass2 0 0.493677 insert B_s00width:MEmass2 1 0.497648 insert B_s00width:DecayModes 0 B*_s00->B+,K-; insert B_s00width:DecayModes 1 B*_s00->B0,Kbar0; insert B_s00width:NumberofEntries 0 0 insert B_s00width:NumberofEntries 1 0 newdef /Herwig/Particles/B*_s00:Width_generator B_s00width newdef /Herwig/Particles/B*_s0bar0:Width_generator B_s00width # create Herwig::GenericWidthGenerator B_00width newdef B_00width:Particle /Herwig/Particles/B*_00 newdef B_00width:Prefactor 1 newdef B_00width:BRNormalize 1 newdef B_00width:BRMinimum 0.01 newdef B_00width:Points 50 newdef B_00width:InterpolationOrder 1 insert B_00width:MEtype 0 1 insert B_00width:MEtype 1 1 insert B_00width:MEcode 0 6 insert B_00width:MEcode 1 6 insert B_00width:MEcoupling 0 2.39765 insert B_00width:MEcoupling 1 1.69324 insert B_00width:ModeOn 0 1 insert B_00width:ModeOn 1 1 insert B_00width:MinimumMasses 0 5.41857 insert B_00width:MinimumMasses 1 5.41438 insert B_00width:MEmass1 0 5.279 insert B_00width:MEmass1 1 5.2794 insert B_00width:MEmass2 0 0.13957 insert B_00width:MEmass2 1 0.134978 insert B_00width:DecayModes 0 B*_00->B+,pi-; insert B_00width:DecayModes 1 B*_00->B0,pi0; insert B_00width:NumberofEntries 0 0 insert B_00width:NumberofEntries 1 0 newdef /Herwig/Particles/B*_00:Width_generator B_00width newdef /Herwig/Particles/B*_0bar0:Width_generator B_00width # create Herwig::GenericWidthGenerator B_0+width newdef B_0+width:Particle /Herwig/Particles/B*_0+ newdef B_0+width:Prefactor 1 newdef B_0+width:BRNormalize 1 newdef B_0+width:BRMinimum 0.01 newdef B_0+width:Points 50 newdef B_0+width:InterpolationOrder 1 insert B_0+width:MEtype 0 1 insert B_0+width:MEtype 1 1 insert B_0+width:MEcode 0 6 insert B_0+width:MEcode 1 6 insert B_0+width:MEcoupling 0 1.69244 insert B_0+width:MEcoupling 1 2.39879 insert B_0+width:ModeOn 0 1 insert B_0+width:ModeOn 1 1 insert B_0+width:MinimumMasses 0 5.41398 insert B_0+width:MinimumMasses 1 5.41897 insert B_0+width:MEmass1 0 5.279 insert B_0+width:MEmass1 1 5.2794 insert B_0+width:MEmass2 0 0.134978 insert B_0+width:MEmass2 1 0.13957 insert B_0+width:DecayModes 0 B*_0+->B+,pi0; insert B_0+width:DecayModes 1 B*_0+->B0,pi+; insert B_0+width:NumberofEntries 0 0 insert B_0+width:NumberofEntries 1 0 newdef /Herwig/Particles/B*_0+:Width_generator B_0+width newdef /Herwig/Particles/B*_0-:Width_generator B_0+width # create Herwig::GenericWidthGenerator D_0+width newdef D_0+width:Particle /Herwig/Particles/D_0*+ newdef D_0+width:Prefactor 1 newdef D_0+width:BRNormalize 1 newdef D_0+width:BRMinimum 0.01 newdef D_0+width:Points 50 newdef D_0+width:InterpolationOrder 1 insert D_0+width:MEtype 0 1 insert D_0+width:MEtype 1 1 insert D_0+width:MEcode 0 6 insert D_0+width:MEcode 1 6 insert D_0+width:MEcoupling 0 2.31003 insert D_0+width:MEcoupling 1 3.25634 insert D_0+width:ModeOn 0 1 insert D_0+width:ModeOn 1 1 insert D_0+width:MinimumMasses 0 2.00428 insert D_0+width:MinimumMasses 1 2.00407 insert D_0+width:MEmass1 0 1.8693 insert D_0+width:MEmass1 1 1.8645 insert D_0+width:MEmass2 0 0.134978 insert D_0+width:MEmass2 1 0.13957 insert D_0+width:DecayModes 0 D_0*+->D+,pi0; insert D_0+width:DecayModes 1 D_0*+->D0,pi+; insert D_0+width:NumberofEntries 0 0 insert D_0+width:NumberofEntries 1 0 newdef /Herwig/Particles/D_0*+:Width_generator D_0+width newdef /Herwig/Particles/D_0*-:Width_generator D_0+width # create Herwig::GenericWidthGenerator D_00width newdef D_00width:Particle /Herwig/Particles/D_0*0 newdef D_00width:Prefactor 1 newdef D_00width:BRNormalize 1 newdef D_00width:BRMinimum 0.01 newdef D_00width:Points 50 newdef D_00width:InterpolationOrder 1 insert D_00width:MEtype 0 1 insert D_00width:MEtype 1 1 insert D_00width:MEcode 0 6 insert D_00width:MEcode 1 6 insert D_00width:MEcoupling 0 3.2714 insert D_00width:MEcoupling 1 2.29946 insert D_00width:ModeOn 0 1 insert D_00width:ModeOn 1 1 insert D_00width:MinimumMasses 0 2.00887 insert D_00width:MinimumMasses 1 1.99948 insert D_00width:MEmass1 0 1.8693 insert D_00width:MEmass1 1 1.8645 insert D_00width:MEmass2 0 0.13957 insert D_00width:MEmass2 1 0.134978 insert D_00width:DecayModes 0 D_0*0->D+,pi-; insert D_00width:DecayModes 1 D_0*0->D0,pi0; insert D_00width:NumberofEntries 0 0 insert D_00width:NumberofEntries 1 0 newdef /Herwig/Particles/D_0*bar0:Width_generator D_00width newdef /Herwig/Particles/D_0*0:Width_generator D_00width # create Herwig::GenericWidthGenerator D_s0+width newdef D_s0+width:Particle /Herwig/Particles/D_s0+ newdef D_s0+width:Prefactor 1 newdef D_s0+width:BRNormalize 1 newdef D_s0+width:BRMinimum 0.01 newdef D_s0+width:Points 50 newdef D_s0+width:InterpolationOrder 1 insert D_s0+width:MEtype 0 1 insert D_s0+width:MEcode 0 6 insert D_s0+width:MEcoupling 0 0.0442673 insert D_s0+width:ModeOn 0 1 insert D_s0+width:MinimumMasses 0 2.10318 insert D_s0+width:MEmass1 0 1.9682 insert D_s0+width:MEmass2 0 0.134978 insert D_s0+width:DecayModes 0 D_s0+->D_s+,pi0; insert D_s0+width:NumberofEntries 0 0 newdef /Herwig/Particles/D_s0+:Width_generator D_s0+width newdef /Herwig/Particles/D_s0-:Width_generator D_s0+width # create Herwig::GenericWidthGenerator K_0+width newdef K_0+width:Particle /Herwig/Particles/K*_0+ newdef K_0+width:Prefactor 1 newdef K_0+width:BRNormalize 1 newdef K_0+width:BRMinimum 0.01 newdef K_0+width:Points 50 newdef K_0+width:InterpolationOrder 1 insert K_0+width:MEtype 0 1 insert K_0+width:MEtype 1 1 insert K_0+width:MEcode 0 6 insert K_0+width:MEcode 1 6 insert K_0+width:MEcoupling 0 1.9915 insert K_0+width:MEcoupling 1 2.82102 insert K_0+width:ModeOn 0 1 insert K_0+width:ModeOn 1 1 insert K_0+width:MinimumMasses 0 0.628655 insert K_0+width:MinimumMasses 1 0.637218 insert K_0+width:MEmass1 0 0.493677 insert K_0+width:MEmass1 1 0.497648 insert K_0+width:MEmass2 0 0.134978 insert K_0+width:MEmass2 1 0.13957 insert K_0+width:DecayModes 0 K*_0+->K+,pi0; insert K_0+width:DecayModes 1 K*_0+->K0,pi+; insert K_0+width:NumberofEntries 0 0 insert K_0+width:NumberofEntries 1 0 newdef /Herwig/Particles/K*_0+:Width_generator K_0+width newdef /Herwig/Particles/K*_0-:Width_generator K_0+width # create Herwig::GenericWidthGenerator K_00width newdef K_00width:Particle /Herwig/Particles/K*_00 newdef K_00width:Prefactor 1 newdef K_00width:BRNormalize 1 newdef K_00width:BRMinimum 0.01 newdef K_00width:Points 50 newdef K_00width:InterpolationOrder 1 insert K_00width:MEtype 0 1 insert K_00width:MEtype 1 1 insert K_00width:MEcode 0 6 insert K_00width:MEcode 1 6 insert K_00width:MEcoupling 0 2.81773 insert K_00width:MEcoupling 1 1.99382 insert K_00width:ModeOn 0 1 insert K_00width:ModeOn 1 1 insert K_00width:MinimumMasses 0 0.633247 insert K_00width:MinimumMasses 1 0.632626 insert K_00width:MEmass1 0 0.493677 insert K_00width:MEmass1 1 0.497648 insert K_00width:MEmass2 0 0.13957 insert K_00width:MEmass2 1 0.134978 insert K_00width:DecayModes 0 K*_00->K+,pi-; insert K_00width:DecayModes 1 K*_00->K0,pi0; insert K_00width:NumberofEntries 0 0 insert K_00width:NumberofEntries 1 0 newdef /Herwig/Particles/K*_00:Width_generator K_00width newdef /Herwig/Particles/K*_0bar0:Width_generator K_00width # create Herwig::GenericWidthGenerator a'_00width newdef a'_00width:Particle /Herwig/Particles/a'_00 newdef a'_00width:Prefactor 0.995875 newdef a'_00width:BRNormalize 1 newdef a'_00width:BRMinimum 0.01 newdef a'_00width:Points 50 newdef a'_00width:InterpolationOrder 1 insert a'_00width:MEtype 0 1 insert a'_00width:MEtype 1 1 insert a'_00width:MEtype 2 2 insert a'_00width:MEtype 3 2 insert a'_00width:MEtype 4 2 insert a'_00width:MEcode 0 6 insert a'_00width:MEcode 1 6 insert a'_00width:MEcode 2 0 insert a'_00width:MEcode 3 0 insert a'_00width:MEcode 4 0 insert a'_00width:MEcoupling 0 0.643555 insert a'_00width:MEcoupling 1 0.645688 insert a'_00width:MEcoupling 2 0.99577 insert a'_00width:MEcoupling 3 1.00093 insert a'_00width:MEcoupling 4 0.958248 insert a'_00width:ModeOn 0 1 insert a'_00width:ModeOn 1 1 insert a'_00width:ModeOn 2 1 insert a'_00width:ModeOn 3 1 insert a'_00width:ModeOn 4 1 insert a'_00width:MinimumMasses 0 0.987354 insert a'_00width:MinimumMasses 1 0.995296 insert a'_00width:MinimumMasses 2 1.09073 insert a'_00width:MinimumMasses 3 0.682475 insert a'_00width:MinimumMasses 4 1.07325 insert a'_00width:MEmass1 0 0.493677 insert a'_00width:MEmass1 1 0.497648 insert a'_00width:MEmass1 2 0.95778 insert a'_00width:MEmass1 3 0.54751 insert a'_00width:MEmass1 4 0.7755 insert a'_00width:MEmass2 0 0.493677 insert a'_00width:MEmass2 1 0.497648 insert a'_00width:MEmass2 2 0.134978 insert a'_00width:MEmass2 3 0.134978 insert a'_00width:MEmass2 4 0.78265 insert a'_00width:DecayModes 0 a'_00->K+,K-; insert a'_00width:DecayModes 1 a'_00->K0,Kbar0; insert a'_00width:DecayModes 2 a'_00->eta',pi0; insert a'_00width:DecayModes 3 a'_00->eta,pi0; insert a'_00width:DecayModes 4 a'_00->omega,rho0; insert a'_00width:InterpolationMasses 0 1.1873673 insert a'_00width:InterpolationMasses 1 1.1981837 insert a'_00width:InterpolationMasses 2 1.209 insert a'_00width:InterpolationMasses 3 1.2198163 insert a'_00width:InterpolationMasses 4 1.2306327 insert a'_00width:InterpolationMasses 5 1.241449 insert a'_00width:InterpolationMasses 6 1.2522653 insert a'_00width:InterpolationMasses 7 1.2630816 insert a'_00width:InterpolationMasses 8 1.273898 insert a'_00width:InterpolationMasses 9 1.2847143 insert a'_00width:InterpolationMasses 10 1.2955306 insert a'_00width:InterpolationMasses 11 1.3063469 insert a'_00width:InterpolationMasses 12 1.3171633 insert a'_00width:InterpolationMasses 13 1.3279796 insert a'_00width:InterpolationMasses 14 1.3387959 insert a'_00width:InterpolationMasses 15 1.3496122 insert a'_00width:InterpolationMasses 16 1.3604286 insert a'_00width:InterpolationMasses 17 1.3712449 insert a'_00width:InterpolationMasses 18 1.3820612 insert a'_00width:InterpolationMasses 19 1.3928776 insert a'_00width:InterpolationMasses 20 1.4036939 insert a'_00width:InterpolationMasses 21 1.4145102 insert a'_00width:InterpolationMasses 22 1.4253265 insert a'_00width:InterpolationMasses 23 1.4361429 insert a'_00width:InterpolationMasses 24 1.4469592 insert a'_00width:InterpolationMasses 25 1.4577755 insert a'_00width:InterpolationMasses 26 1.4685918 insert a'_00width:InterpolationMasses 27 1.4794082 insert a'_00width:InterpolationMasses 28 1.4902245 insert a'_00width:InterpolationMasses 29 1.5010408 insert a'_00width:InterpolationMasses 30 1.5118571 insert a'_00width:InterpolationMasses 31 1.5226735 insert a'_00width:InterpolationMasses 32 1.5334898 insert a'_00width:InterpolationMasses 33 1.5443061 insert a'_00width:InterpolationMasses 34 1.5551224 insert a'_00width:InterpolationMasses 35 1.5659388 insert a'_00width:InterpolationMasses 36 1.5767551 insert a'_00width:InterpolationMasses 37 1.5875714 insert a'_00width:InterpolationMasses 38 1.5983878 insert a'_00width:InterpolationMasses 39 1.6092041 insert a'_00width:InterpolationMasses 40 1.6200204 insert a'_00width:InterpolationMasses 41 1.6308367 insert a'_00width:InterpolationMasses 42 1.6416531 insert a'_00width:InterpolationMasses 43 1.6524694 insert a'_00width:InterpolationMasses 44 1.6632857 insert a'_00width:InterpolationMasses 45 1.674102 insert a'_00width:InterpolationMasses 46 1.6849184 insert a'_00width:InterpolationMasses 47 1.6957347 insert a'_00width:InterpolationMasses 48 1.706551 insert a'_00width:InterpolationMasses 49 1.7173673 insert a'_00width:InterpolationMasses 50 1.7281837 insert a'_00width:InterpolationMasses 51 1.739 insert a'_00width:InterpolationMasses 52 1.7498163 insert a'_00width:InterpolationMasses 53 1.7606327 insert a'_00width:InterpolationMasses 54 1.1873673 insert a'_00width:InterpolationMasses 55 1.1981837 insert a'_00width:InterpolationMasses 56 1.209 insert a'_00width:InterpolationMasses 57 1.2198163 insert a'_00width:InterpolationMasses 58 1.2306327 insert a'_00width:InterpolationMasses 59 1.241449 insert a'_00width:InterpolationMasses 60 1.2522653 insert a'_00width:InterpolationMasses 61 1.2630816 insert a'_00width:InterpolationMasses 62 1.273898 insert a'_00width:InterpolationMasses 63 1.2847143 insert a'_00width:InterpolationMasses 64 1.2955306 insert a'_00width:InterpolationMasses 65 1.3063469 insert a'_00width:InterpolationMasses 66 1.3171633 insert a'_00width:InterpolationMasses 67 1.3279796 insert a'_00width:InterpolationMasses 68 1.3387959 insert a'_00width:InterpolationMasses 69 1.3496122 insert a'_00width:InterpolationMasses 70 1.3604286 insert a'_00width:InterpolationMasses 71 1.3712449 insert a'_00width:InterpolationMasses 72 1.3820612 insert a'_00width:InterpolationMasses 73 1.3928776 insert a'_00width:InterpolationMasses 74 1.4036939 insert a'_00width:InterpolationMasses 75 1.4145102 insert a'_00width:InterpolationMasses 76 1.4253265 insert a'_00width:InterpolationMasses 77 1.4361429 insert a'_00width:InterpolationMasses 78 1.4469592 insert a'_00width:InterpolationMasses 79 1.4577755 insert a'_00width:InterpolationMasses 80 1.4685918 insert a'_00width:InterpolationMasses 81 1.4794082 insert a'_00width:InterpolationMasses 82 1.4902245 insert a'_00width:InterpolationMasses 83 1.5010408 insert a'_00width:InterpolationMasses 84 1.5118571 insert a'_00width:InterpolationMasses 85 1.5226735 insert a'_00width:InterpolationMasses 86 1.5334898 insert a'_00width:InterpolationMasses 87 1.5443061 insert a'_00width:InterpolationMasses 88 1.5551224 insert a'_00width:InterpolationMasses 89 1.5659388 insert a'_00width:InterpolationMasses 90 1.5767551 insert a'_00width:InterpolationMasses 91 1.5875714 insert a'_00width:InterpolationMasses 92 1.5983878 insert a'_00width:InterpolationMasses 93 1.6092041 insert a'_00width:InterpolationMasses 94 1.6200204 insert a'_00width:InterpolationMasses 95 1.6308367 insert a'_00width:InterpolationMasses 96 1.6416531 insert a'_00width:InterpolationMasses 97 1.6524694 insert a'_00width:InterpolationMasses 98 1.6632857 insert a'_00width:InterpolationMasses 99 1.674102 insert a'_00width:InterpolationMasses 100 1.6849184 insert a'_00width:InterpolationMasses 101 1.6957347 insert a'_00width:InterpolationMasses 102 1.706551 insert a'_00width:InterpolationMasses 103 1.7173673 insert a'_00width:InterpolationMasses 104 1.7281837 insert a'_00width:InterpolationMasses 105 1.739 insert a'_00width:InterpolationMasses 106 1.7498163 insert a'_00width:InterpolationMasses 107 1.7606327 insert a'_00width:InterpolationMasses 108 1.1873673 insert a'_00width:InterpolationMasses 109 1.1981837 insert a'_00width:InterpolationMasses 110 1.209 insert a'_00width:InterpolationMasses 111 1.2198163 insert a'_00width:InterpolationMasses 112 1.2306327 insert a'_00width:InterpolationMasses 113 1.241449 insert a'_00width:InterpolationMasses 114 1.2522653 insert a'_00width:InterpolationMasses 115 1.2630816 insert a'_00width:InterpolationMasses 116 1.273898 insert a'_00width:InterpolationMasses 117 1.2847143 insert a'_00width:InterpolationMasses 118 1.2955306 insert a'_00width:InterpolationMasses 119 1.3063469 insert a'_00width:InterpolationMasses 120 1.3171633 insert a'_00width:InterpolationMasses 121 1.3279796 insert a'_00width:InterpolationMasses 122 1.3387959 insert a'_00width:InterpolationMasses 123 1.3496122 insert a'_00width:InterpolationMasses 124 1.3604286 insert a'_00width:InterpolationMasses 125 1.3712449 insert a'_00width:InterpolationMasses 126 1.3820612 insert a'_00width:InterpolationMasses 127 1.3928776 insert a'_00width:InterpolationMasses 128 1.4036939 insert a'_00width:InterpolationMasses 129 1.4145102 insert a'_00width:InterpolationMasses 130 1.4253265 insert a'_00width:InterpolationMasses 131 1.4361429 insert a'_00width:InterpolationMasses 132 1.4469592 insert a'_00width:InterpolationMasses 133 1.4577755 insert a'_00width:InterpolationMasses 134 1.4685918 insert a'_00width:InterpolationMasses 135 1.4794082 insert a'_00width:InterpolationMasses 136 1.4902245 insert a'_00width:InterpolationMasses 137 1.5010408 insert a'_00width:InterpolationMasses 138 1.5118571 insert a'_00width:InterpolationMasses 139 1.5226735 insert a'_00width:InterpolationMasses 140 1.5334898 insert a'_00width:InterpolationMasses 141 1.5443061 insert a'_00width:InterpolationMasses 142 1.5551224 insert a'_00width:InterpolationMasses 143 1.5659388 insert a'_00width:InterpolationMasses 144 1.5767551 insert a'_00width:InterpolationMasses 145 1.5875714 insert a'_00width:InterpolationMasses 146 1.5983878 insert a'_00width:InterpolationMasses 147 1.6092041 insert a'_00width:InterpolationMasses 148 1.6200204 insert a'_00width:InterpolationMasses 149 1.6308367 insert a'_00width:InterpolationMasses 150 1.6416531 insert a'_00width:InterpolationMasses 151 1.6524694 insert a'_00width:InterpolationMasses 152 1.6632857 insert a'_00width:InterpolationMasses 153 1.674102 insert a'_00width:InterpolationMasses 154 1.6849184 insert a'_00width:InterpolationMasses 155 1.6957347 insert a'_00width:InterpolationMasses 156 1.706551 insert a'_00width:InterpolationMasses 157 1.7173673 insert a'_00width:InterpolationMasses 158 1.7281837 insert a'_00width:InterpolationMasses 159 1.739 insert a'_00width:InterpolationMasses 160 1.7498163 insert a'_00width:InterpolationMasses 161 1.7606327 insert a'_00width:InterpolationWidths 0 0.004529313 insert a'_00width:InterpolationWidths 1 0.0047453235 insert a'_00width:InterpolationWidths 2 0.0049444292 insert a'_00width:InterpolationWidths 3 0.0051286263 insert a'_00width:InterpolationWidths 4 0.0052995245 insert a'_00width:InterpolationWidths 5 0.0054584494 insert a'_00width:InterpolationWidths 6 0.0056065127 insert a'_00width:InterpolationWidths 7 0.0057446609 insert a'_00width:InterpolationWidths 8 0.0058737103 insert a'_00width:InterpolationWidths 9 0.0059943724 insert a'_00width:InterpolationWidths 10 0.0061072738 insert a'_00width:InterpolationWidths 11 0.0062129706 insert a'_00width:InterpolationWidths 12 0.0063119599 insert a'_00width:InterpolationWidths 13 0.0064046891 insert a'_00width:InterpolationWidths 14 0.0064915628 insert a'_00width:InterpolationWidths 15 0.0065729491 insert a'_00width:InterpolationWidths 16 0.0066491838 insert a'_00width:InterpolationWidths 17 0.0067205752 insert a'_00width:InterpolationWidths 18 0.0067874064 insert a'_00width:InterpolationWidths 19 0.0068499389 insert a'_00width:InterpolationWidths 20 0.0069084149 insert a'_00width:InterpolationWidths 21 0.0069630586 insert a'_00width:InterpolationWidths 22 0.0070140789 insert a'_00width:InterpolationWidths 23 0.0070616703 insert a'_00width:InterpolationWidths 24 0.0071060143 insert a'_00width:InterpolationWidths 25 0.0071472807 insert a'_00width:InterpolationWidths 26 0.0071856286 insert a'_00width:InterpolationWidths 27 0.0072212071 insert a'_00width:InterpolationWidths 28 0.0072541564 insert a'_00width:InterpolationWidths 29 0.0072846083 insert a'_00width:InterpolationWidths 30 0.0073126868 insert a'_00width:InterpolationWidths 31 0.007338509 insert a'_00width:InterpolationWidths 32 0.0073621851 insert a'_00width:InterpolationWidths 33 0.0073838193 insert a'_00width:InterpolationWidths 34 0.0074035102 insert a'_00width:InterpolationWidths 35 0.0074213509 insert a'_00width:InterpolationWidths 36 0.0074374296 insert a'_00width:InterpolationWidths 37 0.0074518298 insert a'_00width:InterpolationWidths 38 0.0074646309 insert a'_00width:InterpolationWidths 39 0.0074759078 insert a'_00width:InterpolationWidths 40 0.0074857319 insert a'_00width:InterpolationWidths 41 0.007494171 insert a'_00width:InterpolationWidths 42 0.0075012893 insert a'_00width:InterpolationWidths 43 0.0075071482 insert a'_00width:InterpolationWidths 44 0.0075118057 insert a'_00width:InterpolationWidths 45 0.0075153172 insert a'_00width:InterpolationWidths 46 0.0075177355 insert a'_00width:InterpolationWidths 47 0.0075191108 insert a'_00width:InterpolationWidths 48 0.0075194908 insert a'_00width:InterpolationWidths 49 0.0075189213 insert a'_00width:InterpolationWidths 50 0.0075174456 insert a'_00width:InterpolationWidths 51 0.0075151053 insert a'_00width:InterpolationWidths 52 0.0075119399 insert a'_00width:InterpolationWidths 53 0.0075079872 insert a'_00width:InterpolationWidths 54 0.022921682 insert a'_00width:InterpolationWidths 55 0.022843384 insert a'_00width:InterpolationWidths 56 0.022762864 insert a'_00width:InterpolationWidths 57 0.022680319 insert a'_00width:InterpolationWidths 58 0.022595935 insert a'_00width:InterpolationWidths 59 0.022509883 insert a'_00width:InterpolationWidths 60 0.022422324 insert a'_00width:InterpolationWidths 61 0.022333406 insert a'_00width:InterpolationWidths 62 0.022243268 insert a'_00width:InterpolationWidths 63 0.022152038 insert a'_00width:InterpolationWidths 64 0.022059837 insert a'_00width:InterpolationWidths 65 0.021966777 insert a'_00width:InterpolationWidths 66 0.021872962 insert a'_00width:InterpolationWidths 67 0.021778489 insert a'_00width:InterpolationWidths 68 0.021683449 insert a'_00width:InterpolationWidths 69 0.021587927 insert a'_00width:InterpolationWidths 70 0.021492 insert a'_00width:InterpolationWidths 71 0.021395742 insert a'_00width:InterpolationWidths 72 0.021299222 insert a'_00width:InterpolationWidths 73 0.021202503 insert a'_00width:InterpolationWidths 74 0.021105645 insert a'_00width:InterpolationWidths 75 0.021008703 insert a'_00width:InterpolationWidths 76 0.020911728 insert a'_00width:InterpolationWidths 77 0.020814769 insert a'_00width:InterpolationWidths 78 0.020717869 insert a'_00width:InterpolationWidths 79 0.020621071 insert a'_00width:InterpolationWidths 80 0.020524414 insert a'_00width:InterpolationWidths 81 0.020427932 insert a'_00width:InterpolationWidths 82 0.02033166 insert a'_00width:InterpolationWidths 83 0.020235628 insert a'_00width:InterpolationWidths 84 0.020139866 insert a'_00width:InterpolationWidths 85 0.020044399 insert a'_00width:InterpolationWidths 86 0.019949254 insert a'_00width:InterpolationWidths 87 0.019854452 insert a'_00width:InterpolationWidths 88 0.019760014 insert a'_00width:InterpolationWidths 89 0.019665962 insert a'_00width:InterpolationWidths 90 0.019572311 insert a'_00width:InterpolationWidths 91 0.01947908 insert a'_00width:InterpolationWidths 92 0.019386283 insert a'_00width:InterpolationWidths 93 0.019293935 insert a'_00width:InterpolationWidths 94 0.019202048 insert a'_00width:InterpolationWidths 95 0.019110635 insert a'_00width:InterpolationWidths 96 0.019019705 insert a'_00width:InterpolationWidths 97 0.01892927 insert a'_00width:InterpolationWidths 98 0.018839337 insert a'_00width:InterpolationWidths 99 0.018749915 insert a'_00width:InterpolationWidths 100 0.018661011 insert a'_00width:InterpolationWidths 101 0.018572631 insert a'_00width:InterpolationWidths 102 0.018484782 insert a'_00width:InterpolationWidths 103 0.018397469 insert a'_00width:InterpolationWidths 104 0.018310696 insert a'_00width:InterpolationWidths 105 0.018224466 insert a'_00width:InterpolationWidths 106 0.018138784 insert a'_00width:InterpolationWidths 107 0.018053653 insert a'_00width:InterpolationWidths 108 0.00022307571 insert a'_00width:InterpolationWidths 109 0.00039409351 insert a'_00width:InterpolationWidths 110 0.0006328204 insert a'_00width:InterpolationWidths 111 0.0009544521 insert a'_00width:InterpolationWidths 112 0.0013773824 insert a'_00width:InterpolationWidths 113 0.0019236097 insert a'_00width:InterpolationWidths 114 0.002619582 insert a'_00width:InterpolationWidths 115 0.0034960682 insert a'_00width:InterpolationWidths 116 0.0045900529 insert a'_00width:InterpolationWidths 117 0.0059454766 insert a'_00width:InterpolationWidths 118 0.0076146408 insert a'_00width:InterpolationWidths 119 0.0096598747 insert a'_00width:InterpolationWidths 120 0.012155595 insert a'_00width:InterpolationWidths 121 0.015190866 insert a'_00width:InterpolationWidths 122 0.018872582 insert a'_00width:InterpolationWidths 123 0.023329469 insert a'_00width:InterpolationWidths 124 0.028717122 insert a'_00width:InterpolationWidths 125 0.035224381 insert a'_00width:InterpolationWidths 126 0.043081456 insert a'_00width:InterpolationWidths 127 0.052570294 insert a'_00width:InterpolationWidths 128 0.064037838 insert a'_00width:InterpolationWidths 129 0.077912966 insert a'_00width:InterpolationWidths 130 0.094728003 insert a'_00width:InterpolationWidths 131 0.11514572 insert a'_00width:InterpolationWidths 132 0.13999243 insert a'_00width:InterpolationWidths 133 0.17029699 insert a'_00width:InterpolationWidths 134 0.2073334 insert a'_00width:InterpolationWidths 135 0.25266066 insert a'_00width:InterpolationWidths 136 0.30814565 insert a'_00width:InterpolationWidths 137 0.37594364 insert a'_00width:InterpolationWidths 138 0.45839831 insert a'_00width:InterpolationWidths 139 0.55782221 insert a'_00width:InterpolationWidths 140 0.676151 insert a'_00width:InterpolationWidths 141 0.81454376 insert a'_00width:InterpolationWidths 142 0.97309145 insert a'_00width:InterpolationWidths 143 1.1507982 insert a'_00width:InterpolationWidths 144 1.3458636 insert a'_00width:InterpolationWidths 145 1.5561203 insert a'_00width:InterpolationWidths 146 1.7794313 insert a'_00width:InterpolationWidths 147 2.0139348 insert a'_00width:InterpolationWidths 148 2.258137 insert a'_00width:InterpolationWidths 149 2.510907 insert a'_00width:InterpolationWidths 150 2.7714281 insert a'_00width:InterpolationWidths 151 3.039139 insert a'_00width:InterpolationWidths 152 3.3136792 insert a'_00width:InterpolationWidths 153 3.5947574 insert a'_00width:InterpolationWidths 154 3.8825294 insert a'_00width:InterpolationWidths 155 4.1767311 insert a'_00width:InterpolationWidths 156 4.4774885 insert a'_00width:InterpolationWidths 157 4.7848825 insert a'_00width:InterpolationWidths 158 5.0990183 insert a'_00width:InterpolationWidths 159 5.4200168 insert a'_00width:InterpolationWidths 160 5.7480081 insert a'_00width:InterpolationWidths 161 6.0831268 insert a'_00width:NumberofEntries 0 0 insert a'_00width:NumberofEntries 1 0 insert a'_00width:NumberofEntries 2 54 insert a'_00width:NumberofEntries 3 108 insert a'_00width:NumberofEntries 4 162 newdef /Herwig/Particles/a'_00:Width_generator a'_00width # create Herwig::GenericWidthGenerator a'_0+width newdef a'_0+width:Particle /Herwig/Particles/a'_0+ newdef a'_0+width:Prefactor 0.995903 newdef a'_0+width:BRNormalize 1 newdef a'_0+width:BRMinimum 0.01 newdef a'_0+width:Points 50 newdef a'_0+width:InterpolationOrder 1 insert a'_0+width:MEtype 0 1 insert a'_0+width:MEtype 1 2 insert a'_0+width:MEtype 2 2 insert a'_0+width:MEtype 3 2 insert a'_0+width:MEcode 0 6 insert a'_0+width:MEcode 1 0 insert a'_0+width:MEcode 2 0 insert a'_0+width:MEcode 3 0 insert a'_0+width:MEcoupling 0 0.911631 insert a'_0+width:MEcoupling 1 0.998415 insert a'_0+width:MEcoupling 2 1.00183 insert a'_0+width:MEcoupling 3 0.951534 insert a'_0+width:ModeOn 0 1 insert a'_0+width:ModeOn 1 1 insert a'_0+width:ModeOn 2 1 insert a'_0+width:ModeOn 3 1 insert a'_0+width:MinimumMasses 0 0.991325 insert a'_0+width:MinimumMasses 1 1.09532 insert a'_0+width:MinimumMasses 2 0.687067 insert a'_0+width:MinimumMasses 3 1.07325 insert a'_0+width:MEmass1 0 0.493677 insert a'_0+width:MEmass1 1 0.95778 insert a'_0+width:MEmass1 2 0.54751 insert a'_0+width:MEmass1 3 0.7755 insert a'_0+width:MEmass2 0 0.497648 insert a'_0+width:MEmass2 1 0.13957 insert a'_0+width:MEmass2 2 0.13957 insert a'_0+width:MEmass2 3 0.78265 insert a'_0+width:DecayModes 0 a'_0+->K+,Kbar0; insert a'_0+width:DecayModes 1 a'_0+->eta',pi+; insert a'_0+width:DecayModes 2 a'_0+->eta,pi+; insert a'_0+width:DecayModes 3 a'_0+->omega,rho+; insert a'_0+width:InterpolationMasses 0 1.1873673 insert a'_0+width:InterpolationMasses 1 1.1981837 insert a'_0+width:InterpolationMasses 2 1.209 insert a'_0+width:InterpolationMasses 3 1.2198163 insert a'_0+width:InterpolationMasses 4 1.2306327 insert a'_0+width:InterpolationMasses 5 1.241449 insert a'_0+width:InterpolationMasses 6 1.2522653 insert a'_0+width:InterpolationMasses 7 1.2630816 insert a'_0+width:InterpolationMasses 8 1.273898 insert a'_0+width:InterpolationMasses 9 1.2847143 insert a'_0+width:InterpolationMasses 10 1.2955306 insert a'_0+width:InterpolationMasses 11 1.3063469 insert a'_0+width:InterpolationMasses 12 1.3171633 insert a'_0+width:InterpolationMasses 13 1.3279796 insert a'_0+width:InterpolationMasses 14 1.3387959 insert a'_0+width:InterpolationMasses 15 1.3496122 insert a'_0+width:InterpolationMasses 16 1.3604286 insert a'_0+width:InterpolationMasses 17 1.3712449 insert a'_0+width:InterpolationMasses 18 1.3820612 insert a'_0+width:InterpolationMasses 19 1.3928776 insert a'_0+width:InterpolationMasses 20 1.4036939 insert a'_0+width:InterpolationMasses 21 1.4145102 insert a'_0+width:InterpolationMasses 22 1.4253265 insert a'_0+width:InterpolationMasses 23 1.4361429 insert a'_0+width:InterpolationMasses 24 1.4469592 insert a'_0+width:InterpolationMasses 25 1.4577755 insert a'_0+width:InterpolationMasses 26 1.4685918 insert a'_0+width:InterpolationMasses 27 1.4794082 insert a'_0+width:InterpolationMasses 28 1.4902245 insert a'_0+width:InterpolationMasses 29 1.5010408 insert a'_0+width:InterpolationMasses 30 1.5118571 insert a'_0+width:InterpolationMasses 31 1.5226735 insert a'_0+width:InterpolationMasses 32 1.5334898 insert a'_0+width:InterpolationMasses 33 1.5443061 insert a'_0+width:InterpolationMasses 34 1.5551224 insert a'_0+width:InterpolationMasses 35 1.5659388 insert a'_0+width:InterpolationMasses 36 1.5767551 insert a'_0+width:InterpolationMasses 37 1.5875714 insert a'_0+width:InterpolationMasses 38 1.5983878 insert a'_0+width:InterpolationMasses 39 1.6092041 insert a'_0+width:InterpolationMasses 40 1.6200204 insert a'_0+width:InterpolationMasses 41 1.6308367 insert a'_0+width:InterpolationMasses 42 1.6416531 insert a'_0+width:InterpolationMasses 43 1.6524694 insert a'_0+width:InterpolationMasses 44 1.6632857 insert a'_0+width:InterpolationMasses 45 1.674102 insert a'_0+width:InterpolationMasses 46 1.6849184 insert a'_0+width:InterpolationMasses 47 1.6957347 insert a'_0+width:InterpolationMasses 48 1.706551 insert a'_0+width:InterpolationMasses 49 1.7173673 insert a'_0+width:InterpolationMasses 50 1.7281837 insert a'_0+width:InterpolationMasses 51 1.739 insert a'_0+width:InterpolationMasses 52 1.7498163 insert a'_0+width:InterpolationMasses 53 1.7606327 insert a'_0+width:InterpolationMasses 54 1.1873673 insert a'_0+width:InterpolationMasses 55 1.1981837 insert a'_0+width:InterpolationMasses 56 1.209 insert a'_0+width:InterpolationMasses 57 1.2198163 insert a'_0+width:InterpolationMasses 58 1.2306327 insert a'_0+width:InterpolationMasses 59 1.241449 insert a'_0+width:InterpolationMasses 60 1.2522653 insert a'_0+width:InterpolationMasses 61 1.2630816 insert a'_0+width:InterpolationMasses 62 1.273898 insert a'_0+width:InterpolationMasses 63 1.2847143 insert a'_0+width:InterpolationMasses 64 1.2955306 insert a'_0+width:InterpolationMasses 65 1.3063469 insert a'_0+width:InterpolationMasses 66 1.3171633 insert a'_0+width:InterpolationMasses 67 1.3279796 insert a'_0+width:InterpolationMasses 68 1.3387959 insert a'_0+width:InterpolationMasses 69 1.3496122 insert a'_0+width:InterpolationMasses 70 1.3604286 insert a'_0+width:InterpolationMasses 71 1.3712449 insert a'_0+width:InterpolationMasses 72 1.3820612 insert a'_0+width:InterpolationMasses 73 1.3928776 insert a'_0+width:InterpolationMasses 74 1.4036939 insert a'_0+width:InterpolationMasses 75 1.4145102 insert a'_0+width:InterpolationMasses 76 1.4253265 insert a'_0+width:InterpolationMasses 77 1.4361429 insert a'_0+width:InterpolationMasses 78 1.4469592 insert a'_0+width:InterpolationMasses 79 1.4577755 insert a'_0+width:InterpolationMasses 80 1.4685918 insert a'_0+width:InterpolationMasses 81 1.4794082 insert a'_0+width:InterpolationMasses 82 1.4902245 insert a'_0+width:InterpolationMasses 83 1.5010408 insert a'_0+width:InterpolationMasses 84 1.5118571 insert a'_0+width:InterpolationMasses 85 1.5226735 insert a'_0+width:InterpolationMasses 86 1.5334898 insert a'_0+width:InterpolationMasses 87 1.5443061 insert a'_0+width:InterpolationMasses 88 1.5551224 insert a'_0+width:InterpolationMasses 89 1.5659388 insert a'_0+width:InterpolationMasses 90 1.5767551 insert a'_0+width:InterpolationMasses 91 1.5875714 insert a'_0+width:InterpolationMasses 92 1.5983878 insert a'_0+width:InterpolationMasses 93 1.6092041 insert a'_0+width:InterpolationMasses 94 1.6200204 insert a'_0+width:InterpolationMasses 95 1.6308367 insert a'_0+width:InterpolationMasses 96 1.6416531 insert a'_0+width:InterpolationMasses 97 1.6524694 insert a'_0+width:InterpolationMasses 98 1.6632857 insert a'_0+width:InterpolationMasses 99 1.674102 insert a'_0+width:InterpolationMasses 100 1.6849184 insert a'_0+width:InterpolationMasses 101 1.6957347 insert a'_0+width:InterpolationMasses 102 1.706551 insert a'_0+width:InterpolationMasses 103 1.7173673 insert a'_0+width:InterpolationMasses 104 1.7281837 insert a'_0+width:InterpolationMasses 105 1.739 insert a'_0+width:InterpolationMasses 106 1.7498163 insert a'_0+width:InterpolationMasses 107 1.7606327 insert a'_0+width:InterpolationMasses 108 1.1873673 insert a'_0+width:InterpolationMasses 109 1.1981837 insert a'_0+width:InterpolationMasses 110 1.209 insert a'_0+width:InterpolationMasses 111 1.2198163 insert a'_0+width:InterpolationMasses 112 1.2306327 insert a'_0+width:InterpolationMasses 113 1.241449 insert a'_0+width:InterpolationMasses 114 1.2522653 insert a'_0+width:InterpolationMasses 115 1.2630816 insert a'_0+width:InterpolationMasses 116 1.273898 insert a'_0+width:InterpolationMasses 117 1.2847143 insert a'_0+width:InterpolationMasses 118 1.2955306 insert a'_0+width:InterpolationMasses 119 1.3063469 insert a'_0+width:InterpolationMasses 120 1.3171633 insert a'_0+width:InterpolationMasses 121 1.3279796 insert a'_0+width:InterpolationMasses 122 1.3387959 insert a'_0+width:InterpolationMasses 123 1.3496122 insert a'_0+width:InterpolationMasses 124 1.3604286 insert a'_0+width:InterpolationMasses 125 1.3712449 insert a'_0+width:InterpolationMasses 126 1.3820612 insert a'_0+width:InterpolationMasses 127 1.3928776 insert a'_0+width:InterpolationMasses 128 1.4036939 insert a'_0+width:InterpolationMasses 129 1.4145102 insert a'_0+width:InterpolationMasses 130 1.4253265 insert a'_0+width:InterpolationMasses 131 1.4361429 insert a'_0+width:InterpolationMasses 132 1.4469592 insert a'_0+width:InterpolationMasses 133 1.4577755 insert a'_0+width:InterpolationMasses 134 1.4685918 insert a'_0+width:InterpolationMasses 135 1.4794082 insert a'_0+width:InterpolationMasses 136 1.4902245 insert a'_0+width:InterpolationMasses 137 1.5010408 insert a'_0+width:InterpolationMasses 138 1.5118571 insert a'_0+width:InterpolationMasses 139 1.5226735 insert a'_0+width:InterpolationMasses 140 1.5334898 insert a'_0+width:InterpolationMasses 141 1.5443061 insert a'_0+width:InterpolationMasses 142 1.5551224 insert a'_0+width:InterpolationMasses 143 1.5659388 insert a'_0+width:InterpolationMasses 144 1.5767551 insert a'_0+width:InterpolationMasses 145 1.5875714 insert a'_0+width:InterpolationMasses 146 1.5983878 insert a'_0+width:InterpolationMasses 147 1.6092041 insert a'_0+width:InterpolationMasses 148 1.6200204 insert a'_0+width:InterpolationMasses 149 1.6308367 insert a'_0+width:InterpolationMasses 150 1.6416531 insert a'_0+width:InterpolationMasses 151 1.6524694 insert a'_0+width:InterpolationMasses 152 1.6632857 insert a'_0+width:InterpolationMasses 153 1.674102 insert a'_0+width:InterpolationMasses 154 1.6849184 insert a'_0+width:InterpolationMasses 155 1.6957347 insert a'_0+width:InterpolationMasses 156 1.706551 insert a'_0+width:InterpolationMasses 157 1.7173673 insert a'_0+width:InterpolationMasses 158 1.7281837 insert a'_0+width:InterpolationMasses 159 1.739 insert a'_0+width:InterpolationMasses 160 1.7498163 insert a'_0+width:InterpolationMasses 161 1.7606327 insert a'_0+width:InterpolationWidths 0 0.0044451404 insert a'_0+width:InterpolationWidths 1 0.0046684793 insert a'_0+width:InterpolationWidths 2 0.0048738395 insert a'_0+width:InterpolationWidths 3 0.0050634467 insert a'_0+width:InterpolationWidths 4 0.0052390762 insert a'_0+width:InterpolationWidths 5 0.005402177 insert a'_0+width:InterpolationWidths 6 0.0055539548 insert a'_0+width:InterpolationWidths 7 0.0056954293 insert a'_0+width:InterpolationWidths 8 0.0058274746 insert a'_0+width:InterpolationWidths 9 0.005950849 insert a'_0+width:InterpolationWidths 10 0.0060662171 insert a'_0+width:InterpolationWidths 11 0.0061741663 insert a'_0+width:InterpolationWidths 12 0.0062752197 insert a'_0+width:InterpolationWidths 13 0.0063698468 insert a'_0+width:InterpolationWidths 14 0.0064584708 insert a'_0+width:InterpolationWidths 15 0.0065414756 insert a'_0+width:InterpolationWidths 16 0.0066192108 insert a'_0+width:InterpolationWidths 17 0.0066919963 insert a'_0+width:InterpolationWidths 18 0.0067601259 insert a'_0+width:InterpolationWidths 19 0.0068238699 insert a'_0+width:InterpolationWidths 20 0.0068834782 insert a'_0+width:InterpolationWidths 21 0.0069391825 insert a'_0+width:InterpolationWidths 22 0.0069911974 insert a'_0+width:InterpolationWidths 23 0.0070397231 insert a'_0+width:InterpolationWidths 24 0.0070849461 insert a'_0+width:InterpolationWidths 25 0.0071270406 insert a'_0+width:InterpolationWidths 26 0.0071661695 insert a'_0+width:InterpolationWidths 27 0.0072024856 insert a'_0+width:InterpolationWidths 28 0.0072361324 insert a'_0+width:InterpolationWidths 29 0.0072672444 insert a'_0+width:InterpolationWidths 30 0.0072959484 insert a'_0+width:InterpolationWidths 31 0.0073223638 insert a'_0+width:InterpolationWidths 32 0.0073466032 insert a'_0+width:InterpolationWidths 33 0.0073687727 insert a'_0+width:InterpolationWidths 34 0.0073889726 insert a'_0+width:InterpolationWidths 35 0.0074072979 insert a'_0+width:InterpolationWidths 36 0.0074238383 insert a'_0+width:InterpolationWidths 37 0.0074386787 insert a'_0+width:InterpolationWidths 38 0.0074518998 insert a'_0+width:InterpolationWidths 39 0.0074635777 insert a'_0+width:InterpolationWidths 40 0.007473785 insert a'_0+width:InterpolationWidths 41 0.0074825905 insert a'_0+width:InterpolationWidths 42 0.0074900594 insert a'_0+width:InterpolationWidths 43 0.0074962538 insert a'_0+width:InterpolationWidths 44 0.0075012328 insert a'_0+width:InterpolationWidths 45 0.0075050525 insert a'_0+width:InterpolationWidths 46 0.0075077663 insert a'_0+width:InterpolationWidths 47 0.0075094252 insert a'_0+width:InterpolationWidths 48 0.0075100775 insert a'_0+width:InterpolationWidths 49 0.0075097695 insert a'_0+width:InterpolationWidths 50 0.0075085452 insert a'_0+width:InterpolationWidths 51 0.0075064467 insert a'_0+width:InterpolationWidths 52 0.0075035138 insert a'_0+width:InterpolationWidths 53 0.0074997849 insert a'_0+width:InterpolationWidths 54 0.022879889 insert a'_0+width:InterpolationWidths 55 0.022803064 insert a'_0+width:InterpolationWidths 56 0.022723944 insert a'_0+width:InterpolationWidths 57 0.022642733 insert a'_0+width:InterpolationWidths 58 0.02255962 insert a'_0+width:InterpolationWidths 59 0.02247478 insert a'_0+width:InterpolationWidths 60 0.022388377 insert a'_0+width:InterpolationWidths 61 0.022300562 insert a'_0+width:InterpolationWidths 62 0.022211478 insert a'_0+width:InterpolationWidths 63 0.022121256 insert a'_0+width:InterpolationWidths 64 0.022030019 insert a'_0+width:InterpolationWidths 65 0.021937881 insert a'_0+width:InterpolationWidths 66 0.021844949 insert a'_0+width:InterpolationWidths 67 0.021751322 insert a'_0+width:InterpolationWidths 68 0.021657093 insert a'_0+width:InterpolationWidths 69 0.021562348 insert a'_0+width:InterpolationWidths 70 0.021467167 insert a'_0+width:InterpolationWidths 71 0.021371626 insert a'_0+width:InterpolationWidths 72 0.021275794 insert a'_0+width:InterpolationWidths 73 0.021179736 insert a'_0+width:InterpolationWidths 74 0.021083514 insert a'_0+width:InterpolationWidths 75 0.020987183 insert a'_0+width:InterpolationWidths 76 0.020890797 insert a'_0+width:InterpolationWidths 77 0.020794404 insert a'_0+width:InterpolationWidths 78 0.02069805 insert a'_0+width:InterpolationWidths 79 0.020601777 insert a'_0+width:InterpolationWidths 80 0.020505626 insert a'_0+width:InterpolationWidths 81 0.020409632 insert a'_0+width:InterpolationWidths 82 0.020313831 insert a'_0+width:InterpolationWidths 83 0.020218254 insert a'_0+width:InterpolationWidths 84 0.02012293 insert a'_0+width:InterpolationWidths 85 0.020027887 insert a'_0+width:InterpolationWidths 86 0.01993315 insert a'_0+width:InterpolationWidths 87 0.019838744 insert a'_0+width:InterpolationWidths 88 0.019744688 insert a'_0+width:InterpolationWidths 89 0.019651005 insert a'_0+width:InterpolationWidths 90 0.019557712 insert a'_0+width:InterpolationWidths 91 0.019464826 insert a'_0+width:InterpolationWidths 92 0.019372364 insert a'_0+width:InterpolationWidths 93 0.01928034 insert a'_0+width:InterpolationWidths 94 0.019188766 insert a'_0+width:InterpolationWidths 95 0.019097657 insert a'_0+width:InterpolationWidths 96 0.019007021 insert a'_0+width:InterpolationWidths 97 0.018916871 insert a'_0+width:InterpolationWidths 98 0.018827215 insert a'_0+width:InterpolationWidths 99 0.018738061 insert a'_0+width:InterpolationWidths 100 0.018649417 insert a'_0+width:InterpolationWidths 101 0.01856129 insert a'_0+width:InterpolationWidths 102 0.018473685 insert a'_0+width:InterpolationWidths 103 0.01838661 insert a'_0+width:InterpolationWidths 104 0.018300067 insert a'_0+width:InterpolationWidths 105 0.018214062 insert a'_0+width:InterpolationWidths 106 0.018128597 insert a'_0+width:InterpolationWidths 107 0.018043677 insert a'_0+width:InterpolationWidths 108 0.00023277736 insert a'_0+width:InterpolationWidths 109 0.00041038887 insert a'_0+width:InterpolationWidths 110 0.00065761056 insert a'_0+width:InterpolationWidths 111 0.00098981094 insert a'_0+width:InterpolationWidths 112 0.0014255854 insert a'_0+width:InterpolationWidths 113 0.0019871565 insert a'_0+width:InterpolationWidths 114 0.0027012258 insert a'_0+width:InterpolationWidths 115 0.0035988085 insert a'_0+width:InterpolationWidths 116 0.0047171726 insert a'_0+width:InterpolationWidths 117 0.0061005634 insert a'_0+width:InterpolationWidths 118 0.0078016106 insert a'_0+width:InterpolationWidths 119 0.0098829946 insert a'_0+width:InterpolationWidths 120 0.012419508 insert a'_0+width:InterpolationWidths 121 0.01550061 insert a'_0+width:InterpolationWidths 122 0.019233618 insert a'_0+width:InterpolationWidths 123 0.023747698 insert a'_0+width:InterpolationWidths 124 0.029198896 insert a'_0+width:InterpolationWidths 125 0.03577652 insert a'_0+width:InterpolationWidths 126 0.043711239 insert a'_0+width:InterpolationWidths 127 0.053285442 insert a'_0+width:InterpolationWidths 128 0.064846467 insert a'_0+width:InterpolationWidths 129 0.078823504 insert a'_0+width:InterpolationWidths 130 0.09574905 insert a'_0+width:InterpolationWidths 131 0.11628583 insert a'_0+width:InterpolationWidths 132 0.14125979 insert a'_0+width:InterpolationWidths 133 0.17169898 insert a'_0+width:InterpolationWidths 134 0.20887598 insert a'_0+width:InterpolationWidths 135 0.2543476 insert a'_0+width:InterpolationWidths 136 0.30997781 insert a'_0+width:InterpolationWidths 137 0.37791834 insert a'_0+width:InterpolationWidths 138 0.46050934 insert a'_0+width:InterpolationWidths 139 0.56006103 insert a'_0+width:InterpolationWidths 140 0.67850931 insert a'_0+width:InterpolationWidths 141 0.81701688 insert a'_0+width:InterpolationWidths 142 0.97568096 insert a'_0+width:InterpolationWidths 143 1.1535123 insert a'_0+width:InterpolationWidths 144 1.3487152 insert a'_0+width:InterpolationWidths 145 1.5591238 insert a'_0+width:InterpolationWidths 146 1.7825999 insert a'_0+width:InterpolationWidths 147 2.0172792 insert a'_0+width:InterpolationWidths 148 2.2616649 insert a'_0+width:InterpolationWidths 149 2.5146233 insert a'_0+width:InterpolationWidths 150 2.7753353 insert a'_0+width:InterpolationWidths 151 3.0432382 insert a'_0+width:InterpolationWidths 152 3.31797 insert a'_0+width:InterpolationWidths 153 3.5992384 insert a'_0+width:InterpolationWidths 154 3.8871989 insert a'_0+width:InterpolationWidths 155 4.1815867 insert a'_0+width:InterpolationWidths 156 4.4825278 insert a'_0+width:InterpolationWidths 157 4.7901028 insert a'_0+width:InterpolationWidths 158 5.1044171 insert a'_0+width:InterpolationWidths 159 5.4255916 insert a'_0+width:InterpolationWidths 160 5.7537563 insert a'_0+width:InterpolationWidths 161 6.089046 insert a'_0+width:NumberofEntries 0 0 insert a'_0+width:NumberofEntries 1 54 insert a'_0+width:NumberofEntries 2 108 insert a'_0+width:NumberofEntries 3 162 newdef /Herwig/Particles/a'_0+:Width_generator a'_0+width newdef /Herwig/Particles/a'_0-:Width_generator a'_0+width # create Herwig::GenericWidthGenerator f'_00width newdef f'_00width:Particle /Herwig/Particles/f'_0 newdef f'_00width:Prefactor 1.00054 newdef f'_00width:BRNormalize 1 newdef f'_00width:BRMinimum 0.01 newdef f'_00width:Points 50 newdef f'_00width:InterpolationOrder 1 insert f'_00width:MEtype 0 1 insert f'_00width:MEtype 1 1 insert f'_00width:MEtype 2 2 insert f'_00width:MEtype 3 2 insert f'_00width:MEtype 4 2 insert f'_00width:MEtype 5 2 insert f'_00width:MEtype 6 2 insert f'_00width:MEtype 7 2 insert f'_00width:MEtype 8 2 insert f'_00width:MEtype 9 1 insert f'_00width:MEtype 10 1 insert f'_00width:MEtype 11 2 insert f'_00width:MEtype 12 2 insert f'_00width:MEtype 13 2 insert f'_00width:MEcode 0 6 insert f'_00width:MEcode 1 6 insert f'_00width:MEcode 2 0 insert f'_00width:MEcode 3 0 insert f'_00width:MEcode 4 0 insert f'_00width:MEcode 5 0 insert f'_00width:MEcode 6 0 insert f'_00width:MEcode 7 0 insert f'_00width:MEcode 8 0 insert f'_00width:MEcode 9 6 insert f'_00width:MEcode 10 6 insert f'_00width:MEcode 11 0 insert f'_00width:MEcode 12 0 insert f'_00width:MEcode 13 0 insert f'_00width:MEcoupling 0 0.608113 insert f'_00width:MEcoupling 1 0.610604 insert f'_00width:MEcoupling 2 0.977855 insert f'_00width:MEcoupling 3 0.977855 insert f'_00width:MEcoupling 4 0.951925 insert f'_00width:MEcoupling 5 0.874792 insert f'_00width:MEcoupling 6 0.960981 insert f'_00width:MEcoupling 7 0.960981 insert f'_00width:MEcoupling 8 0.920858 insert f'_00width:MEcoupling 9 0.729405 insert f'_00width:MEcoupling 10 0.515419 insert f'_00width:MEcoupling 11 0.944554 insert f'_00width:MEcoupling 12 0.954587 insert f'_00width:MEcoupling 13 1.01542 insert f'_00width:ModeOn 0 1 insert f'_00width:ModeOn 1 1 insert f'_00width:ModeOn 2 1 insert f'_00width:ModeOn 3 1 insert f'_00width:ModeOn 4 1 insert f'_00width:ModeOn 5 0 insert f'_00width:ModeOn 6 1 insert f'_00width:ModeOn 7 1 insert f'_00width:ModeOn 8 1 insert f'_00width:ModeOn 9 1 insert f'_00width:ModeOn 10 1 insert f'_00width:ModeOn 11 1 insert f'_00width:ModeOn 12 1 insert f'_00width:ModeOn 13 1 insert f'_00width:MinimumMasses 0 0.987354 insert f'_00width:MinimumMasses 1 0.995296 insert f'_00width:MinimumMasses 2 0.81957 insert f'_00width:MinimumMasses 3 0.81957 insert f'_00width:MinimumMasses 4 0.814978 insert f'_00width:MinimumMasses 5 1.09499 insert f'_00width:MinimumMasses 6 1.03957 insert f'_00width:MinimumMasses 7 1.03957 insert f'_00width:MinimumMasses 8 1.03498 insert f'_00width:MinimumMasses 9 0.27914 insert f'_00width:MinimumMasses 10 0.269955 insert f'_00width:MinimumMasses 11 0.751 insert f'_00width:MinimumMasses 12 0.751 insert f'_00width:MinimumMasses 13 0.62 insert f'_00width:MEmass1 0 0.493677 insert f'_00width:MEmass1 1 0.497648 insert f'_00width:MEmass1 2 0.13957 insert f'_00width:MEmass1 3 0.13957 insert f'_00width:MEmass1 4 0.134978 insert f'_00width:MEmass1 5 0.54751 insert f'_00width:MEmass1 6 1.3 insert f'_00width:MEmass1 7 1.3 insert f'_00width:MEmass1 8 1.3 insert f'_00width:MEmass1 9 0.13957 insert f'_00width:MEmass1 10 0.134978 insert f'_00width:MEmass1 11 0.7755 insert f'_00width:MEmass1 12 0.7755 insert f'_00width:MEmass1 13 0.86 insert f'_00width:MEmass2 0 0.493677 insert f'_00width:MEmass2 1 0.497648 insert f'_00width:MEmass2 2 1.24 insert f'_00width:MEmass2 3 1.24 insert f'_00width:MEmass2 4 1.24 insert f'_00width:MEmass2 5 0.54751 insert f'_00width:MEmass2 6 0.13957 insert f'_00width:MEmass2 7 0.13957 insert f'_00width:MEmass2 8 0.134978 insert f'_00width:MEmass2 9 0.13957 insert f'_00width:MEmass2 10 0.134978 insert f'_00width:MEmass2 11 0.7755 insert f'_00width:MEmass2 12 0.7755 insert f'_00width:MEmass2 13 0.86 insert f'_00width:DecayModes 0 f'_0->K+,K-; insert f'_00width:DecayModes 1 f'_0->K0,Kbar0; insert f'_00width:DecayModes 2 f'_0->a_1+,pi-; insert f'_00width:DecayModes 3 f'_0->a_1-,pi+; insert f'_00width:DecayModes 4 f'_0->a_10,pi0; insert f'_00width:DecayModes 5 f'_0->eta,eta; insert f'_00width:DecayModes 6 f'_0->pi'+,pi-; insert f'_00width:DecayModes 7 f'_0->pi'-,pi+; insert f'_00width:DecayModes 8 f'_0->pi'0,pi0; insert f'_00width:DecayModes 9 f'_0->pi+,pi-; insert f'_00width:DecayModes 10 f'_0->pi0,pi0; insert f'_00width:DecayModes 11 f'_0->rho+,rho-; insert f'_00width:DecayModes 12 f'_0->rho0,rho0; insert f'_00width:DecayModes 13 f'_0->sigma,sigma; insert f'_00width:InterpolationMasses 0 1.097551 insert f'_00width:InterpolationMasses 1 1.1087755 insert f'_00width:InterpolationMasses 2 1.12 insert f'_00width:InterpolationMasses 3 1.1312245 insert f'_00width:InterpolationMasses 4 1.142449 insert f'_00width:InterpolationMasses 5 1.1536735 insert f'_00width:InterpolationMasses 6 1.164898 insert f'_00width:InterpolationMasses 7 1.1761224 insert f'_00width:InterpolationMasses 8 1.1873469 insert f'_00width:InterpolationMasses 9 1.1985714 insert f'_00width:InterpolationMasses 10 1.2097959 insert f'_00width:InterpolationMasses 11 1.2210204 insert f'_00width:InterpolationMasses 12 1.2322449 insert f'_00width:InterpolationMasses 13 1.2434694 insert f'_00width:InterpolationMasses 14 1.2546939 insert f'_00width:InterpolationMasses 15 1.2659184 insert f'_00width:InterpolationMasses 16 1.2771429 insert f'_00width:InterpolationMasses 17 1.2883673 insert f'_00width:InterpolationMasses 18 1.2995918 insert f'_00width:InterpolationMasses 19 1.3108163 insert f'_00width:InterpolationMasses 20 1.3220408 insert f'_00width:InterpolationMasses 21 1.3332653 insert f'_00width:InterpolationMasses 22 1.3444898 insert f'_00width:InterpolationMasses 23 1.3557143 insert f'_00width:InterpolationMasses 24 1.3669388 insert f'_00width:InterpolationMasses 25 1.3781633 insert f'_00width:InterpolationMasses 26 1.3893878 insert f'_00width:InterpolationMasses 27 1.4006122 insert f'_00width:InterpolationMasses 28 1.4118367 insert f'_00width:InterpolationMasses 29 1.4230612 insert f'_00width:InterpolationMasses 30 1.4342857 insert f'_00width:InterpolationMasses 31 1.4455102 insert f'_00width:InterpolationMasses 32 1.4567347 insert f'_00width:InterpolationMasses 33 1.4679592 insert f'_00width:InterpolationMasses 34 1.4791837 insert f'_00width:InterpolationMasses 35 1.4904082 insert f'_00width:InterpolationMasses 36 1.5016327 insert f'_00width:InterpolationMasses 37 1.5128571 insert f'_00width:InterpolationMasses 38 1.5240816 insert f'_00width:InterpolationMasses 39 1.5353061 insert f'_00width:InterpolationMasses 40 1.5465306 insert f'_00width:InterpolationMasses 41 1.5577551 insert f'_00width:InterpolationMasses 42 1.5689796 insert f'_00width:InterpolationMasses 43 1.5802041 insert f'_00width:InterpolationMasses 44 1.5914286 insert f'_00width:InterpolationMasses 45 1.6026531 insert f'_00width:InterpolationMasses 46 1.6138776 insert f'_00width:InterpolationMasses 47 1.625102 insert f'_00width:InterpolationMasses 48 1.6363265 insert f'_00width:InterpolationMasses 49 1.647551 insert f'_00width:InterpolationMasses 50 1.6587755 insert f'_00width:InterpolationMasses 51 1.67 insert f'_00width:InterpolationMasses 52 1.6812245 insert f'_00width:InterpolationMasses 53 1.692449 insert f'_00width:InterpolationMasses 54 1.097551 insert f'_00width:InterpolationMasses 55 1.1087755 insert f'_00width:InterpolationMasses 56 1.12 insert f'_00width:InterpolationMasses 57 1.1312245 insert f'_00width:InterpolationMasses 58 1.142449 insert f'_00width:InterpolationMasses 59 1.1536735 insert f'_00width:InterpolationMasses 60 1.164898 insert f'_00width:InterpolationMasses 61 1.1761224 insert f'_00width:InterpolationMasses 62 1.1873469 insert f'_00width:InterpolationMasses 63 1.1985714 insert f'_00width:InterpolationMasses 64 1.2097959 insert f'_00width:InterpolationMasses 65 1.2210204 insert f'_00width:InterpolationMasses 66 1.2322449 insert f'_00width:InterpolationMasses 67 1.2434694 insert f'_00width:InterpolationMasses 68 1.2546939 insert f'_00width:InterpolationMasses 69 1.2659184 insert f'_00width:InterpolationMasses 70 1.2771429 insert f'_00width:InterpolationMasses 71 1.2883673 insert f'_00width:InterpolationMasses 72 1.2995918 insert f'_00width:InterpolationMasses 73 1.3108163 insert f'_00width:InterpolationMasses 74 1.3220408 insert f'_00width:InterpolationMasses 75 1.3332653 insert f'_00width:InterpolationMasses 76 1.3444898 insert f'_00width:InterpolationMasses 77 1.3557143 insert f'_00width:InterpolationMasses 78 1.3669388 insert f'_00width:InterpolationMasses 79 1.3781633 insert f'_00width:InterpolationMasses 80 1.3893878 insert f'_00width:InterpolationMasses 81 1.4006122 insert f'_00width:InterpolationMasses 82 1.4118367 insert f'_00width:InterpolationMasses 83 1.4230612 insert f'_00width:InterpolationMasses 84 1.4342857 insert f'_00width:InterpolationMasses 85 1.4455102 insert f'_00width:InterpolationMasses 86 1.4567347 insert f'_00width:InterpolationMasses 87 1.4679592 insert f'_00width:InterpolationMasses 88 1.4791837 insert f'_00width:InterpolationMasses 89 1.4904082 insert f'_00width:InterpolationMasses 90 1.5016327 insert f'_00width:InterpolationMasses 91 1.5128571 insert f'_00width:InterpolationMasses 92 1.5240816 insert f'_00width:InterpolationMasses 93 1.5353061 insert f'_00width:InterpolationMasses 94 1.5465306 insert f'_00width:InterpolationMasses 95 1.5577551 insert f'_00width:InterpolationMasses 96 1.5689796 insert f'_00width:InterpolationMasses 97 1.5802041 insert f'_00width:InterpolationMasses 98 1.5914286 insert f'_00width:InterpolationMasses 99 1.6026531 insert f'_00width:InterpolationMasses 100 1.6138776 insert f'_00width:InterpolationMasses 101 1.625102 insert f'_00width:InterpolationMasses 102 1.6363265 insert f'_00width:InterpolationMasses 103 1.647551 insert f'_00width:InterpolationMasses 104 1.6587755 insert f'_00width:InterpolationMasses 105 1.67 insert f'_00width:InterpolationMasses 106 1.6812245 insert f'_00width:InterpolationMasses 107 1.692449 insert f'_00width:InterpolationMasses 108 1.097551 insert f'_00width:InterpolationMasses 109 1.1087755 insert f'_00width:InterpolationMasses 110 1.12 insert f'_00width:InterpolationMasses 111 1.1312245 insert f'_00width:InterpolationMasses 112 1.142449 insert f'_00width:InterpolationMasses 113 1.1536735 insert f'_00width:InterpolationMasses 114 1.164898 insert f'_00width:InterpolationMasses 115 1.1761224 insert f'_00width:InterpolationMasses 116 1.1873469 insert f'_00width:InterpolationMasses 117 1.1985714 insert f'_00width:InterpolationMasses 118 1.2097959 insert f'_00width:InterpolationMasses 119 1.2210204 insert f'_00width:InterpolationMasses 120 1.2322449 insert f'_00width:InterpolationMasses 121 1.2434694 insert f'_00width:InterpolationMasses 122 1.2546939 insert f'_00width:InterpolationMasses 123 1.2659184 insert f'_00width:InterpolationMasses 124 1.2771429 insert f'_00width:InterpolationMasses 125 1.2883673 insert f'_00width:InterpolationMasses 126 1.2995918 insert f'_00width:InterpolationMasses 127 1.3108163 insert f'_00width:InterpolationMasses 128 1.3220408 insert f'_00width:InterpolationMasses 129 1.3332653 insert f'_00width:InterpolationMasses 130 1.3444898 insert f'_00width:InterpolationMasses 131 1.3557143 insert f'_00width:InterpolationMasses 132 1.3669388 insert f'_00width:InterpolationMasses 133 1.3781633 insert f'_00width:InterpolationMasses 134 1.3893878 insert f'_00width:InterpolationMasses 135 1.4006122 insert f'_00width:InterpolationMasses 136 1.4118367 insert f'_00width:InterpolationMasses 137 1.4230612 insert f'_00width:InterpolationMasses 138 1.4342857 insert f'_00width:InterpolationMasses 139 1.4455102 insert f'_00width:InterpolationMasses 140 1.4567347 insert f'_00width:InterpolationMasses 141 1.4679592 insert f'_00width:InterpolationMasses 142 1.4791837 insert f'_00width:InterpolationMasses 143 1.4904082 insert f'_00width:InterpolationMasses 144 1.5016327 insert f'_00width:InterpolationMasses 145 1.5128571 insert f'_00width:InterpolationMasses 146 1.5240816 insert f'_00width:InterpolationMasses 147 1.5353061 insert f'_00width:InterpolationMasses 148 1.5465306 insert f'_00width:InterpolationMasses 149 1.5577551 insert f'_00width:InterpolationMasses 150 1.5689796 insert f'_00width:InterpolationMasses 151 1.5802041 insert f'_00width:InterpolationMasses 152 1.5914286 insert f'_00width:InterpolationMasses 153 1.6026531 insert f'_00width:InterpolationMasses 154 1.6138776 insert f'_00width:InterpolationMasses 155 1.625102 insert f'_00width:InterpolationMasses 156 1.6363265 insert f'_00width:InterpolationMasses 157 1.647551 insert f'_00width:InterpolationMasses 158 1.6587755 insert f'_00width:InterpolationMasses 159 1.67 insert f'_00width:InterpolationMasses 160 1.6812245 insert f'_00width:InterpolationMasses 161 1.692449 insert f'_00width:InterpolationMasses 162 1.097551 insert f'_00width:InterpolationMasses 163 1.1087755 insert f'_00width:InterpolationMasses 164 1.12 insert f'_00width:InterpolationMasses 165 1.1312245 insert f'_00width:InterpolationMasses 166 1.142449 insert f'_00width:InterpolationMasses 167 1.1536735 insert f'_00width:InterpolationMasses 168 1.164898 insert f'_00width:InterpolationMasses 169 1.1761224 insert f'_00width:InterpolationMasses 170 1.1873469 insert f'_00width:InterpolationMasses 171 1.1985714 insert f'_00width:InterpolationMasses 172 1.2097959 insert f'_00width:InterpolationMasses 173 1.2210204 insert f'_00width:InterpolationMasses 174 1.2322449 insert f'_00width:InterpolationMasses 175 1.2434694 insert f'_00width:InterpolationMasses 176 1.2546939 insert f'_00width:InterpolationMasses 177 1.2659184 insert f'_00width:InterpolationMasses 178 1.2771429 insert f'_00width:InterpolationMasses 179 1.2883673 insert f'_00width:InterpolationMasses 180 1.2995918 insert f'_00width:InterpolationMasses 181 1.3108163 insert f'_00width:InterpolationMasses 182 1.3220408 insert f'_00width:InterpolationMasses 183 1.3332653 insert f'_00width:InterpolationMasses 184 1.3444898 insert f'_00width:InterpolationMasses 185 1.3557143 insert f'_00width:InterpolationMasses 186 1.3669388 insert f'_00width:InterpolationMasses 187 1.3781633 insert f'_00width:InterpolationMasses 188 1.3893878 insert f'_00width:InterpolationMasses 189 1.4006122 insert f'_00width:InterpolationMasses 190 1.4118367 insert f'_00width:InterpolationMasses 191 1.4230612 insert f'_00width:InterpolationMasses 192 1.4342857 insert f'_00width:InterpolationMasses 193 1.4455102 insert f'_00width:InterpolationMasses 194 1.4567347 insert f'_00width:InterpolationMasses 195 1.4679592 insert f'_00width:InterpolationMasses 196 1.4791837 insert f'_00width:InterpolationMasses 197 1.4904082 insert f'_00width:InterpolationMasses 198 1.5016327 insert f'_00width:InterpolationMasses 199 1.5128571 insert f'_00width:InterpolationMasses 200 1.5240816 insert f'_00width:InterpolationMasses 201 1.5353061 insert f'_00width:InterpolationMasses 202 1.5465306 insert f'_00width:InterpolationMasses 203 1.5577551 insert f'_00width:InterpolationMasses 204 1.5689796 insert f'_00width:InterpolationMasses 205 1.5802041 insert f'_00width:InterpolationMasses 206 1.5914286 insert f'_00width:InterpolationMasses 207 1.6026531 insert f'_00width:InterpolationMasses 208 1.6138776 insert f'_00width:InterpolationMasses 209 1.625102 insert f'_00width:InterpolationMasses 210 1.6363265 insert f'_00width:InterpolationMasses 211 1.647551 insert f'_00width:InterpolationMasses 212 1.6587755 insert f'_00width:InterpolationMasses 213 1.67 insert f'_00width:InterpolationMasses 214 1.6812245 insert f'_00width:InterpolationMasses 215 1.692449 insert f'_00width:InterpolationMasses 216 1.097551 insert f'_00width:InterpolationMasses 217 1.1087755 insert f'_00width:InterpolationMasses 218 1.12 insert f'_00width:InterpolationMasses 219 1.1312245 insert f'_00width:InterpolationMasses 220 1.142449 insert f'_00width:InterpolationMasses 221 1.1536735 insert f'_00width:InterpolationMasses 222 1.164898 insert f'_00width:InterpolationMasses 223 1.1761224 insert f'_00width:InterpolationMasses 224 1.1873469 insert f'_00width:InterpolationMasses 225 1.1985714 insert f'_00width:InterpolationMasses 226 1.2097959 insert f'_00width:InterpolationMasses 227 1.2210204 insert f'_00width:InterpolationMasses 228 1.2322449 insert f'_00width:InterpolationMasses 229 1.2434694 insert f'_00width:InterpolationMasses 230 1.2546939 insert f'_00width:InterpolationMasses 231 1.2659184 insert f'_00width:InterpolationMasses 232 1.2771429 insert f'_00width:InterpolationMasses 233 1.2883673 insert f'_00width:InterpolationMasses 234 1.2995918 insert f'_00width:InterpolationMasses 235 1.3108163 insert f'_00width:InterpolationMasses 236 1.3220408 insert f'_00width:InterpolationMasses 237 1.3332653 insert f'_00width:InterpolationMasses 238 1.3444898 insert f'_00width:InterpolationMasses 239 1.3557143 insert f'_00width:InterpolationMasses 240 1.3669388 insert f'_00width:InterpolationMasses 241 1.3781633 insert f'_00width:InterpolationMasses 242 1.3893878 insert f'_00width:InterpolationMasses 243 1.4006122 insert f'_00width:InterpolationMasses 244 1.4118367 insert f'_00width:InterpolationMasses 245 1.4230612 insert f'_00width:InterpolationMasses 246 1.4342857 insert f'_00width:InterpolationMasses 247 1.4455102 insert f'_00width:InterpolationMasses 248 1.4567347 insert f'_00width:InterpolationMasses 249 1.4679592 insert f'_00width:InterpolationMasses 250 1.4791837 insert f'_00width:InterpolationMasses 251 1.4904082 insert f'_00width:InterpolationMasses 252 1.5016327 insert f'_00width:InterpolationMasses 253 1.5128571 insert f'_00width:InterpolationMasses 254 1.5240816 insert f'_00width:InterpolationMasses 255 1.5353061 insert f'_00width:InterpolationMasses 256 1.5465306 insert f'_00width:InterpolationMasses 257 1.5577551 insert f'_00width:InterpolationMasses 258 1.5689796 insert f'_00width:InterpolationMasses 259 1.5802041 insert f'_00width:InterpolationMasses 260 1.5914286 insert f'_00width:InterpolationMasses 261 1.6026531 insert f'_00width:InterpolationMasses 262 1.6138776 insert f'_00width:InterpolationMasses 263 1.625102 insert f'_00width:InterpolationMasses 264 1.6363265 insert f'_00width:InterpolationMasses 265 1.647551 insert f'_00width:InterpolationMasses 266 1.6587755 insert f'_00width:InterpolationMasses 267 1.67 insert f'_00width:InterpolationMasses 268 1.6812245 insert f'_00width:InterpolationMasses 269 1.692449 insert f'_00width:InterpolationMasses 270 1.097551 insert f'_00width:InterpolationMasses 271 1.1087755 insert f'_00width:InterpolationMasses 272 1.12 insert f'_00width:InterpolationMasses 273 1.1312245 insert f'_00width:InterpolationMasses 274 1.142449 insert f'_00width:InterpolationMasses 275 1.1536735 insert f'_00width:InterpolationMasses 276 1.164898 insert f'_00width:InterpolationMasses 277 1.1761224 insert f'_00width:InterpolationMasses 278 1.1873469 insert f'_00width:InterpolationMasses 279 1.1985714 insert f'_00width:InterpolationMasses 280 1.2097959 insert f'_00width:InterpolationMasses 281 1.2210204 insert f'_00width:InterpolationMasses 282 1.2322449 insert f'_00width:InterpolationMasses 283 1.2434694 insert f'_00width:InterpolationMasses 284 1.2546939 insert f'_00width:InterpolationMasses 285 1.2659184 insert f'_00width:InterpolationMasses 286 1.2771429 insert f'_00width:InterpolationMasses 287 1.2883673 insert f'_00width:InterpolationMasses 288 1.2995918 insert f'_00width:InterpolationMasses 289 1.3108163 insert f'_00width:InterpolationMasses 290 1.3220408 insert f'_00width:InterpolationMasses 291 1.3332653 insert f'_00width:InterpolationMasses 292 1.3444898 insert f'_00width:InterpolationMasses 293 1.3557143 insert f'_00width:InterpolationMasses 294 1.3669388 insert f'_00width:InterpolationMasses 295 1.3781633 insert f'_00width:InterpolationMasses 296 1.3893878 insert f'_00width:InterpolationMasses 297 1.4006122 insert f'_00width:InterpolationMasses 298 1.4118367 insert f'_00width:InterpolationMasses 299 1.4230612 insert f'_00width:InterpolationMasses 300 1.4342857 insert f'_00width:InterpolationMasses 301 1.4455102 insert f'_00width:InterpolationMasses 302 1.4567347 insert f'_00width:InterpolationMasses 303 1.4679592 insert f'_00width:InterpolationMasses 304 1.4791837 insert f'_00width:InterpolationMasses 305 1.4904082 insert f'_00width:InterpolationMasses 306 1.5016327 insert f'_00width:InterpolationMasses 307 1.5128571 insert f'_00width:InterpolationMasses 308 1.5240816 insert f'_00width:InterpolationMasses 309 1.5353061 insert f'_00width:InterpolationMasses 310 1.5465306 insert f'_00width:InterpolationMasses 311 1.5577551 insert f'_00width:InterpolationMasses 312 1.5689796 insert f'_00width:InterpolationMasses 313 1.5802041 insert f'_00width:InterpolationMasses 314 1.5914286 insert f'_00width:InterpolationMasses 315 1.6026531 insert f'_00width:InterpolationMasses 316 1.6138776 insert f'_00width:InterpolationMasses 317 1.625102 insert f'_00width:InterpolationMasses 318 1.6363265 insert f'_00width:InterpolationMasses 319 1.647551 insert f'_00width:InterpolationMasses 320 1.6587755 insert f'_00width:InterpolationMasses 321 1.67 insert f'_00width:InterpolationMasses 322 1.6812245 insert f'_00width:InterpolationMasses 323 1.692449 insert f'_00width:InterpolationMasses 324 1.097551 insert f'_00width:InterpolationMasses 325 1.1087755 insert f'_00width:InterpolationMasses 326 1.12 insert f'_00width:InterpolationMasses 327 1.1312245 insert f'_00width:InterpolationMasses 328 1.142449 insert f'_00width:InterpolationMasses 329 1.1536735 insert f'_00width:InterpolationMasses 330 1.164898 insert f'_00width:InterpolationMasses 331 1.1761224 insert f'_00width:InterpolationMasses 332 1.1873469 insert f'_00width:InterpolationMasses 333 1.1985714 insert f'_00width:InterpolationMasses 334 1.2097959 insert f'_00width:InterpolationMasses 335 1.2210204 insert f'_00width:InterpolationMasses 336 1.2322449 insert f'_00width:InterpolationMasses 337 1.2434694 insert f'_00width:InterpolationMasses 338 1.2546939 insert f'_00width:InterpolationMasses 339 1.2659184 insert f'_00width:InterpolationMasses 340 1.2771429 insert f'_00width:InterpolationMasses 341 1.2883673 insert f'_00width:InterpolationMasses 342 1.2995918 insert f'_00width:InterpolationMasses 343 1.3108163 insert f'_00width:InterpolationMasses 344 1.3220408 insert f'_00width:InterpolationMasses 345 1.3332653 insert f'_00width:InterpolationMasses 346 1.3444898 insert f'_00width:InterpolationMasses 347 1.3557143 insert f'_00width:InterpolationMasses 348 1.3669388 insert f'_00width:InterpolationMasses 349 1.3781633 insert f'_00width:InterpolationMasses 350 1.3893878 insert f'_00width:InterpolationMasses 351 1.4006122 insert f'_00width:InterpolationMasses 352 1.4118367 insert f'_00width:InterpolationMasses 353 1.4230612 insert f'_00width:InterpolationMasses 354 1.4342857 insert f'_00width:InterpolationMasses 355 1.4455102 insert f'_00width:InterpolationMasses 356 1.4567347 insert f'_00width:InterpolationMasses 357 1.4679592 insert f'_00width:InterpolationMasses 358 1.4791837 insert f'_00width:InterpolationMasses 359 1.4904082 insert f'_00width:InterpolationMasses 360 1.5016327 insert f'_00width:InterpolationMasses 361 1.5128571 insert f'_00width:InterpolationMasses 362 1.5240816 insert f'_00width:InterpolationMasses 363 1.5353061 insert f'_00width:InterpolationMasses 364 1.5465306 insert f'_00width:InterpolationMasses 365 1.5577551 insert f'_00width:InterpolationMasses 366 1.5689796 insert f'_00width:InterpolationMasses 367 1.5802041 insert f'_00width:InterpolationMasses 368 1.5914286 insert f'_00width:InterpolationMasses 369 1.6026531 insert f'_00width:InterpolationMasses 370 1.6138776 insert f'_00width:InterpolationMasses 371 1.625102 insert f'_00width:InterpolationMasses 372 1.6363265 insert f'_00width:InterpolationMasses 373 1.647551 insert f'_00width:InterpolationMasses 374 1.6587755 insert f'_00width:InterpolationMasses 375 1.67 insert f'_00width:InterpolationMasses 376 1.6812245 insert f'_00width:InterpolationMasses 377 1.692449 insert f'_00width:InterpolationMasses 378 1.097551 insert f'_00width:InterpolationMasses 379 1.1087755 insert f'_00width:InterpolationMasses 380 1.12 insert f'_00width:InterpolationMasses 381 1.1312245 insert f'_00width:InterpolationMasses 382 1.142449 insert f'_00width:InterpolationMasses 383 1.1536735 insert f'_00width:InterpolationMasses 384 1.164898 insert f'_00width:InterpolationMasses 385 1.1761224 insert f'_00width:InterpolationMasses 386 1.1873469 insert f'_00width:InterpolationMasses 387 1.1985714 insert f'_00width:InterpolationMasses 388 1.2097959 insert f'_00width:InterpolationMasses 389 1.2210204 insert f'_00width:InterpolationMasses 390 1.2322449 insert f'_00width:InterpolationMasses 391 1.2434694 insert f'_00width:InterpolationMasses 392 1.2546939 insert f'_00width:InterpolationMasses 393 1.2659184 insert f'_00width:InterpolationMasses 394 1.2771429 insert f'_00width:InterpolationMasses 395 1.2883673 insert f'_00width:InterpolationMasses 396 1.2995918 insert f'_00width:InterpolationMasses 397 1.3108163 insert f'_00width:InterpolationMasses 398 1.3220408 insert f'_00width:InterpolationMasses 399 1.3332653 insert f'_00width:InterpolationMasses 400 1.3444898 insert f'_00width:InterpolationMasses 401 1.3557143 insert f'_00width:InterpolationMasses 402 1.3669388 insert f'_00width:InterpolationMasses 403 1.3781633 insert f'_00width:InterpolationMasses 404 1.3893878 insert f'_00width:InterpolationMasses 405 1.4006122 insert f'_00width:InterpolationMasses 406 1.4118367 insert f'_00width:InterpolationMasses 407 1.4230612 insert f'_00width:InterpolationMasses 408 1.4342857 insert f'_00width:InterpolationMasses 409 1.4455102 insert f'_00width:InterpolationMasses 410 1.4567347 insert f'_00width:InterpolationMasses 411 1.4679592 insert f'_00width:InterpolationMasses 412 1.4791837 insert f'_00width:InterpolationMasses 413 1.4904082 insert f'_00width:InterpolationMasses 414 1.5016327 insert f'_00width:InterpolationMasses 415 1.5128571 insert f'_00width:InterpolationMasses 416 1.5240816 insert f'_00width:InterpolationMasses 417 1.5353061 insert f'_00width:InterpolationMasses 418 1.5465306 insert f'_00width:InterpolationMasses 419 1.5577551 insert f'_00width:InterpolationMasses 420 1.5689796 insert f'_00width:InterpolationMasses 421 1.5802041 insert f'_00width:InterpolationMasses 422 1.5914286 insert f'_00width:InterpolationMasses 423 1.6026531 insert f'_00width:InterpolationMasses 424 1.6138776 insert f'_00width:InterpolationMasses 425 1.625102 insert f'_00width:InterpolationMasses 426 1.6363265 insert f'_00width:InterpolationMasses 427 1.647551 insert f'_00width:InterpolationMasses 428 1.6587755 insert f'_00width:InterpolationMasses 429 1.67 insert f'_00width:InterpolationMasses 430 1.6812245 insert f'_00width:InterpolationMasses 431 1.692449 insert f'_00width:InterpolationMasses 432 1.097551 insert f'_00width:InterpolationMasses 433 1.1087755 insert f'_00width:InterpolationMasses 434 1.12 insert f'_00width:InterpolationMasses 435 1.1312245 insert f'_00width:InterpolationMasses 436 1.142449 insert f'_00width:InterpolationMasses 437 1.1536735 insert f'_00width:InterpolationMasses 438 1.164898 insert f'_00width:InterpolationMasses 439 1.1761224 insert f'_00width:InterpolationMasses 440 1.1873469 insert f'_00width:InterpolationMasses 441 1.1985714 insert f'_00width:InterpolationMasses 442 1.2097959 insert f'_00width:InterpolationMasses 443 1.2210204 insert f'_00width:InterpolationMasses 444 1.2322449 insert f'_00width:InterpolationMasses 445 1.2434694 insert f'_00width:InterpolationMasses 446 1.2546939 insert f'_00width:InterpolationMasses 447 1.2659184 insert f'_00width:InterpolationMasses 448 1.2771429 insert f'_00width:InterpolationMasses 449 1.2883673 insert f'_00width:InterpolationMasses 450 1.2995918 insert f'_00width:InterpolationMasses 451 1.3108163 insert f'_00width:InterpolationMasses 452 1.3220408 insert f'_00width:InterpolationMasses 453 1.3332653 insert f'_00width:InterpolationMasses 454 1.3444898 insert f'_00width:InterpolationMasses 455 1.3557143 insert f'_00width:InterpolationMasses 456 1.3669388 insert f'_00width:InterpolationMasses 457 1.3781633 insert f'_00width:InterpolationMasses 458 1.3893878 insert f'_00width:InterpolationMasses 459 1.4006122 insert f'_00width:InterpolationMasses 460 1.4118367 insert f'_00width:InterpolationMasses 461 1.4230612 insert f'_00width:InterpolationMasses 462 1.4342857 insert f'_00width:InterpolationMasses 463 1.4455102 insert f'_00width:InterpolationMasses 464 1.4567347 insert f'_00width:InterpolationMasses 465 1.4679592 insert f'_00width:InterpolationMasses 466 1.4791837 insert f'_00width:InterpolationMasses 467 1.4904082 insert f'_00width:InterpolationMasses 468 1.5016327 insert f'_00width:InterpolationMasses 469 1.5128571 insert f'_00width:InterpolationMasses 470 1.5240816 insert f'_00width:InterpolationMasses 471 1.5353061 insert f'_00width:InterpolationMasses 472 1.5465306 insert f'_00width:InterpolationMasses 473 1.5577551 insert f'_00width:InterpolationMasses 474 1.5689796 insert f'_00width:InterpolationMasses 475 1.5802041 insert f'_00width:InterpolationMasses 476 1.5914286 insert f'_00width:InterpolationMasses 477 1.6026531 insert f'_00width:InterpolationMasses 478 1.6138776 insert f'_00width:InterpolationMasses 479 1.625102 insert f'_00width:InterpolationMasses 480 1.6363265 insert f'_00width:InterpolationMasses 481 1.647551 insert f'_00width:InterpolationMasses 482 1.6587755 insert f'_00width:InterpolationMasses 483 1.67 insert f'_00width:InterpolationMasses 484 1.6812245 insert f'_00width:InterpolationMasses 485 1.692449 insert f'_00width:InterpolationMasses 486 1.097551 insert f'_00width:InterpolationMasses 487 1.1087755 insert f'_00width:InterpolationMasses 488 1.12 insert f'_00width:InterpolationMasses 489 1.1312245 insert f'_00width:InterpolationMasses 490 1.142449 insert f'_00width:InterpolationMasses 491 1.1536735 insert f'_00width:InterpolationMasses 492 1.164898 insert f'_00width:InterpolationMasses 493 1.1761224 insert f'_00width:InterpolationMasses 494 1.1873469 insert f'_00width:InterpolationMasses 495 1.1985714 insert f'_00width:InterpolationMasses 496 1.2097959 insert f'_00width:InterpolationMasses 497 1.2210204 insert f'_00width:InterpolationMasses 498 1.2322449 insert f'_00width:InterpolationMasses 499 1.2434694 insert f'_00width:InterpolationMasses 500 1.2546939 insert f'_00width:InterpolationMasses 501 1.2659184 insert f'_00width:InterpolationMasses 502 1.2771429 insert f'_00width:InterpolationMasses 503 1.2883673 insert f'_00width:InterpolationMasses 504 1.2995918 insert f'_00width:InterpolationMasses 505 1.3108163 insert f'_00width:InterpolationMasses 506 1.3220408 insert f'_00width:InterpolationMasses 507 1.3332653 insert f'_00width:InterpolationMasses 508 1.3444898 insert f'_00width:InterpolationMasses 509 1.3557143 insert f'_00width:InterpolationMasses 510 1.3669388 insert f'_00width:InterpolationMasses 511 1.3781633 insert f'_00width:InterpolationMasses 512 1.3893878 insert f'_00width:InterpolationMasses 513 1.4006122 insert f'_00width:InterpolationMasses 514 1.4118367 insert f'_00width:InterpolationMasses 515 1.4230612 insert f'_00width:InterpolationMasses 516 1.4342857 insert f'_00width:InterpolationMasses 517 1.4455102 insert f'_00width:InterpolationMasses 518 1.4567347 insert f'_00width:InterpolationMasses 519 1.4679592 insert f'_00width:InterpolationMasses 520 1.4791837 insert f'_00width:InterpolationMasses 521 1.4904082 insert f'_00width:InterpolationMasses 522 1.5016327 insert f'_00width:InterpolationMasses 523 1.5128571 insert f'_00width:InterpolationMasses 524 1.5240816 insert f'_00width:InterpolationMasses 525 1.5353061 insert f'_00width:InterpolationMasses 526 1.5465306 insert f'_00width:InterpolationMasses 527 1.5577551 insert f'_00width:InterpolationMasses 528 1.5689796 insert f'_00width:InterpolationMasses 529 1.5802041 insert f'_00width:InterpolationMasses 530 1.5914286 insert f'_00width:InterpolationMasses 531 1.6026531 insert f'_00width:InterpolationMasses 532 1.6138776 insert f'_00width:InterpolationMasses 533 1.625102 insert f'_00width:InterpolationMasses 534 1.6363265 insert f'_00width:InterpolationMasses 535 1.647551 insert f'_00width:InterpolationMasses 536 1.6587755 insert f'_00width:InterpolationMasses 537 1.67 insert f'_00width:InterpolationMasses 538 1.6812245 insert f'_00width:InterpolationMasses 539 1.692449 insert f'_00width:InterpolationWidths 0 8.9873588e-05 insert f'_00width:InterpolationWidths 1 0.00011066952 insert f'_00width:InterpolationWidths 2 0.00013568918 insert f'_00width:InterpolationWidths 3 0.00016558713 insert f'_00width:InterpolationWidths 4 0.0002011107 insert f'_00width:InterpolationWidths 5 0.00024306106 insert f'_00width:InterpolationWidths 6 0.00029141123 insert f'_00width:InterpolationWidths 7 0.00034975043 insert f'_00width:InterpolationWidths 8 0.00041640208 insert f'_00width:InterpolationWidths 9 0.00049327712 insert f'_00width:InterpolationWidths 10 0.00058146913 insert f'_00width:InterpolationWidths 11 0.00068215797 insert f'_00width:InterpolationWidths 12 0.00079648838 insert f'_00width:InterpolationWidths 13 0.00092566421 insert f'_00width:InterpolationWidths 14 0.0010710742 insert f'_00width:InterpolationWidths 15 0.0012339934 insert f'_00width:InterpolationWidths 16 0.0014155749 insert f'_00width:InterpolationWidths 17 0.0016174024 insert f'_00width:InterpolationWidths 18 0.0018407328 insert f'_00width:InterpolationWidths 19 0.0020869536 insert f'_00width:InterpolationWidths 20 0.0023575913 insert f'_00width:InterpolationWidths 21 0.0026539243 insert f'_00width:InterpolationWidths 22 0.0029773637 insert f'_00width:InterpolationWidths 23 0.0033294386 insert f'_00width:InterpolationWidths 24 0.0037108854 insert f'_00width:InterpolationWidths 25 0.0041247243 insert f'_00width:InterpolationWidths 26 0.0045708306 insert f'_00width:InterpolationWidths 27 0.0050510164 insert f'_00width:InterpolationWidths 28 0.0055666994 insert f'_00width:InterpolationWidths 29 0.0061193246 insert f'_00width:InterpolationWidths 30 0.0067099336 insert f'_00width:InterpolationWidths 31 0.0073404569 insert f'_00width:InterpolationWidths 32 0.0080119912 insert f'_00width:InterpolationWidths 33 0.0087246096 insert f'_00width:InterpolationWidths 34 0.0094765773 insert f'_00width:InterpolationWidths 35 0.010282534 insert f'_00width:InterpolationWidths 36 0.011129805 insert f'_00width:InterpolationWidths 37 0.012024103 insert f'_00width:InterpolationWidths 38 0.01296693 insert f'_00width:InterpolationWidths 39 0.01395893 insert f'_00width:InterpolationWidths 40 0.015001643 insert f'_00width:InterpolationWidths 41 0.01609721 insert f'_00width:InterpolationWidths 42 0.017245098 insert f'_00width:InterpolationWidths 43 0.01844801 insert f'_00width:InterpolationWidths 44 0.019705178 insert f'_00width:InterpolationWidths 45 0.021020052 insert f'_00width:InterpolationWidths 46 0.022391354 insert f'_00width:InterpolationWidths 47 0.023820669 insert f'_00width:InterpolationWidths 48 0.02531118 insert f'_00width:InterpolationWidths 49 0.026861889 insert f'_00width:InterpolationWidths 50 0.028473817 insert f'_00width:InterpolationWidths 51 0.030148898 insert f'_00width:InterpolationWidths 52 0.031889092 insert f'_00width:InterpolationWidths 53 0.033693602 insert f'_00width:InterpolationWidths 54 8.9873588e-05 insert f'_00width:InterpolationWidths 55 0.00011066952 insert f'_00width:InterpolationWidths 56 0.00013568918 insert f'_00width:InterpolationWidths 57 0.00016558713 insert f'_00width:InterpolationWidths 58 0.0002011107 insert f'_00width:InterpolationWidths 59 0.00024306106 insert f'_00width:InterpolationWidths 60 0.00029141123 insert f'_00width:InterpolationWidths 61 0.00034975043 insert f'_00width:InterpolationWidths 62 0.00041640208 insert f'_00width:InterpolationWidths 63 0.00049327712 insert f'_00width:InterpolationWidths 64 0.00058146913 insert f'_00width:InterpolationWidths 65 0.00068215797 insert f'_00width:InterpolationWidths 66 0.00079648838 insert f'_00width:InterpolationWidths 67 0.00092566421 insert f'_00width:InterpolationWidths 68 0.0010710742 insert f'_00width:InterpolationWidths 69 0.0012339934 insert f'_00width:InterpolationWidths 70 0.0014155749 insert f'_00width:InterpolationWidths 71 0.0016174024 insert f'_00width:InterpolationWidths 72 0.0018407328 insert f'_00width:InterpolationWidths 73 0.0020869536 insert f'_00width:InterpolationWidths 74 0.0023575913 insert f'_00width:InterpolationWidths 75 0.0026539243 insert f'_00width:InterpolationWidths 76 0.0029773637 insert f'_00width:InterpolationWidths 77 0.0033294386 insert f'_00width:InterpolationWidths 78 0.0037108854 insert f'_00width:InterpolationWidths 79 0.0041247243 insert f'_00width:InterpolationWidths 80 0.0045708306 insert f'_00width:InterpolationWidths 81 0.0050510164 insert f'_00width:InterpolationWidths 82 0.0055666994 insert f'_00width:InterpolationWidths 83 0.0061193246 insert f'_00width:InterpolationWidths 84 0.0067099336 insert f'_00width:InterpolationWidths 85 0.0073404569 insert f'_00width:InterpolationWidths 86 0.0080119912 insert f'_00width:InterpolationWidths 87 0.0087246096 insert f'_00width:InterpolationWidths 88 0.0094765773 insert f'_00width:InterpolationWidths 89 0.010282534 insert f'_00width:InterpolationWidths 90 0.011129805 insert f'_00width:InterpolationWidths 91 0.012024103 insert f'_00width:InterpolationWidths 92 0.01296693 insert f'_00width:InterpolationWidths 93 0.01395893 insert f'_00width:InterpolationWidths 94 0.015001643 insert f'_00width:InterpolationWidths 95 0.01609721 insert f'_00width:InterpolationWidths 96 0.017245098 insert f'_00width:InterpolationWidths 97 0.01844801 insert f'_00width:InterpolationWidths 98 0.019705178 insert f'_00width:InterpolationWidths 99 0.021020052 insert f'_00width:InterpolationWidths 100 0.022391354 insert f'_00width:InterpolationWidths 101 0.023820669 insert f'_00width:InterpolationWidths 102 0.02531118 insert f'_00width:InterpolationWidths 103 0.026861889 insert f'_00width:InterpolationWidths 104 0.028473817 insert f'_00width:InterpolationWidths 105 0.030148898 insert f'_00width:InterpolationWidths 106 0.031889092 insert f'_00width:InterpolationWidths 107 0.033693602 insert f'_00width:InterpolationWidths 108 9.7358694e-05 insert f'_00width:InterpolationWidths 109 0.00011964618 insert f'_00width:InterpolationWidths 110 0.0001463662 insert f'_00width:InterpolationWidths 111 0.00017819648 insert f'_00width:InterpolationWidths 112 0.00021589988 insert f'_00width:InterpolationWidths 113 0.00026028046 insert f'_00width:InterpolationWidths 114 0.00031221587 insert f'_00width:InterpolationWidths 115 0.00037258632 insert f'_00width:InterpolationWidths 116 0.00044246626 insert f'_00width:InterpolationWidths 117 0.00052283174 insert f'_00width:InterpolationWidths 118 0.00061479075 insert f'_00width:InterpolationWidths 119 0.00071952032 insert f'_00width:InterpolationWidths 120 0.00083815812 insert f'_00width:InterpolationWidths 121 0.00097196846 insert f'_00width:InterpolationWidths 122 0.0011222071 insert f'_00width:InterpolationWidths 123 0.0012901059 insert f'_00width:InterpolationWidths 124 0.0014771658 insert f'_00width:InterpolationWidths 125 0.001684578 insert f'_00width:InterpolationWidths 126 0.0019139026 insert f'_00width:InterpolationWidths 127 0.0021661384 insert f'_00width:InterpolationWidths 128 0.00244298 insert f'_00width:InterpolationWidths 129 0.0027460157 insert f'_00width:InterpolationWidths 130 0.0030760198 insert f'_00width:InterpolationWidths 131 0.0034346656 insert f'_00width:InterpolationWidths 132 0.0038239193 insert f'_00width:InterpolationWidths 133 0.0042445219 insert f'_00width:InterpolationWidths 134 0.0046979062 insert f'_00width:InterpolationWidths 135 0.0051856982 insert f'_00width:InterpolationWidths 136 0.0057088673 insert f'_00width:InterpolationWidths 137 0.0062694257 insert f'_00width:InterpolationWidths 138 0.0068679469 insert f'_00width:InterpolationWidths 139 0.0075065522 insert f'_00width:InterpolationWidths 140 0.0081857909 insert f'_00width:InterpolationWidths 141 0.0089067045 insert f'_00width:InterpolationWidths 142 0.0096720461 insert f'_00width:InterpolationWidths 143 0.010481828 insert f'_00width:InterpolationWidths 144 0.011339378 insert f'_00width:InterpolationWidths 145 0.012241896 insert f'_00width:InterpolationWidths 146 0.013192559 insert f'_00width:InterpolationWidths 147 0.014193372 insert f'_00width:InterpolationWidths 148 0.015245916 insert f'_00width:InterpolationWidths 149 0.01634555 insert f'_00width:InterpolationWidths 150 0.01750471 insert f'_00width:InterpolationWidths 151 0.018719884 insert f'_00width:InterpolationWidths 152 0.019985057 insert f'_00width:InterpolationWidths 153 0.021308932 insert f'_00width:InterpolationWidths 154 0.022689756 insert f'_00width:InterpolationWidths 155 0.024128508 insert f'_00width:InterpolationWidths 156 0.025629026 insert f'_00width:InterpolationWidths 157 0.027189683 insert f'_00width:InterpolationWidths 158 0.028810688 insert f'_00width:InterpolationWidths 159 0.03049523 insert f'_00width:InterpolationWidths 160 0.032245441 insert f'_00width:InterpolationWidths 161 0.034060673 insert f'_00width:InterpolationWidths 162 6.3689387e-05 insert f'_00width:InterpolationWidths 163 0.00014585747 insert f'_00width:InterpolationWidths 164 0.00019312608 insert f'_00width:InterpolationWidths 165 0.00022848726 insert f'_00width:InterpolationWidths 166 0.00025705065 insert f'_00width:InterpolationWidths 167 0.00028102057 insert f'_00width:InterpolationWidths 168 0.00030160088 insert f'_00width:InterpolationWidths 169 0.00031954059 insert f'_00width:InterpolationWidths 170 0.00033534637 insert f'_00width:InterpolationWidths 171 0.00034938171 insert f'_00width:InterpolationWidths 172 0.00036191886 insert f'_00width:InterpolationWidths 173 0.00037316863 insert f'_00width:InterpolationWidths 174 0.00038329861 insert f'_00width:InterpolationWidths 175 0.00039244486 insert f'_00width:InterpolationWidths 176 0.0004007198 insert f'_00width:InterpolationWidths 177 0.00040821769 insert f'_00width:InterpolationWidths 178 0.0004150185 insert f'_00width:InterpolationWidths 179 0.00042119086 insert f'_00width:InterpolationWidths 180 0.00042679416 insert f'_00width:InterpolationWidths 181 0.00043188022 insert f'_00width:InterpolationWidths 182 0.00043649456 insert f'_00width:InterpolationWidths 183 0.00044067743 insert f'_00width:InterpolationWidths 184 0.00044446461 insert f'_00width:InterpolationWidths 185 0.00044788804 insert f'_00width:InterpolationWidths 186 0.00045097638 insert f'_00width:InterpolationWidths 187 0.00045375546 insert f'_00width:InterpolationWidths 188 0.00045624861 insert f'_00width:InterpolationWidths 189 0.000458477 insert f'_00width:InterpolationWidths 190 0.00046045988 insert f'_00width:InterpolationWidths 191 0.0004622148 insert f'_00width:InterpolationWidths 192 0.00046375781 insert f'_00width:InterpolationWidths 193 0.00046510364 insert f'_00width:InterpolationWidths 194 0.00046626578 insert f'_00width:InterpolationWidths 195 0.00046725668 insert f'_00width:InterpolationWidths 196 0.00046808781 insert f'_00width:InterpolationWidths 197 0.00046876974 insert f'_00width:InterpolationWidths 198 0.00046931226 insert f'_00width:InterpolationWidths 199 0.00046972447 insert f'_00width:InterpolationWidths 200 0.00047001476 insert f'_00width:InterpolationWidths 201 0.00047019096 insert f'_00width:InterpolationWidths 202 0.00047026033 insert f'_00width:InterpolationWidths 203 0.00047022965 insert f'_00width:InterpolationWidths 204 0.00047010523 insert f'_00width:InterpolationWidths 205 0.00046989295 insert f'_00width:InterpolationWidths 206 0.00046959832 insert f'_00width:InterpolationWidths 207 0.00046922648 insert f'_00width:InterpolationWidths 208 0.00046878223 insert f'_00width:InterpolationWidths 209 0.00046827008 insert f'_00width:InterpolationWidths 210 0.00046769425 insert f'_00width:InterpolationWidths 211 0.0004670587 insert f'_00width:InterpolationWidths 212 0.00046636715 insert f'_00width:InterpolationWidths 213 0.00046562308 insert f'_00width:InterpolationWidths 214 0.00046482978 insert f'_00width:InterpolationWidths 215 0.00046399033 insert f'_00width:InterpolationWidths 216 5.6335146e-05 insert f'_00width:InterpolationWidths 217 8.0786477e-05 insert f'_00width:InterpolationWidths 218 0.00011152326 insert f'_00width:InterpolationWidths 219 0.00014986259 insert f'_00width:InterpolationWidths 220 0.00019723584 insert f'_00width:InterpolationWidths 221 0.00025549388 insert f'_00width:InterpolationWidths 222 0.00032673917 insert f'_00width:InterpolationWidths 223 0.00041354189 insert f'_00width:InterpolationWidths 224 0.00051897827 insert f'_00width:InterpolationWidths 225 0.00064663137 insert f'_00width:InterpolationWidths 226 0.00080089064 insert f'_00width:InterpolationWidths 227 0.0009867997 insert f'_00width:InterpolationWidths 228 0.0012105722 insert f'_00width:InterpolationWidths 229 0.0014792094 insert f'_00width:InterpolationWidths 230 0.0018013143 insert f'_00width:InterpolationWidths 231 0.0021863456 insert f'_00width:InterpolationWidths 232 0.0026455039 insert f'_00width:InterpolationWidths 233 0.003190749 insert f'_00width:InterpolationWidths 234 0.0038350814 insert f'_00width:InterpolationWidths 235 0.0045916249 insert f'_00width:InterpolationWidths 236 0.0054722958 insert f'_00width:InterpolationWidths 237 0.0064872101 insert f'_00width:InterpolationWidths 238 0.007641154 insert f'_00width:InterpolationWidths 239 0.0089350813 insert f'_00width:InterpolationWidths 240 0.010363047 insert f'_00width:InterpolationWidths 241 0.011912907 insert f'_00width:InterpolationWidths 242 0.013567472 insert f'_00width:InterpolationWidths 243 0.015309674 insert f'_00width:InterpolationWidths 244 0.017116299 insert f'_00width:InterpolationWidths 245 0.018971916 insert f'_00width:InterpolationWidths 246 0.02084863 insert f'_00width:InterpolationWidths 247 0.022740626 insert f'_00width:InterpolationWidths 248 0.024631914 insert f'_00width:InterpolationWidths 249 0.026512847 insert f'_00width:InterpolationWidths 250 0.028373774 insert f'_00width:InterpolationWidths 251 0.030210568 insert f'_00width:InterpolationWidths 252 0.032017656 insert f'_00width:InterpolationWidths 253 0.033789479 insert f'_00width:InterpolationWidths 254 0.035525792 insert f'_00width:InterpolationWidths 255 0.037224696 insert f'_00width:InterpolationWidths 256 0.038884538 insert f'_00width:InterpolationWidths 257 0.040502995 insert f'_00width:InterpolationWidths 258 0.042085473 insert f'_00width:InterpolationWidths 259 0.043625447 insert f'_00width:InterpolationWidths 260 0.045126304 insert f'_00width:InterpolationWidths 261 0.046587006 insert f'_00width:InterpolationWidths 262 0.048009064 insert f'_00width:InterpolationWidths 263 0.049392706 insert f'_00width:InterpolationWidths 264 0.050743719 insert f'_00width:InterpolationWidths 265 0.052046417 insert f'_00width:InterpolationWidths 266 0.053319497 insert f'_00width:InterpolationWidths 267 0.054556111 insert f'_00width:InterpolationWidths 268 0.055757427 insert f'_00width:InterpolationWidths 269 0.056924674 insert f'_00width:InterpolationWidths 270 5.6335146e-05 insert f'_00width:InterpolationWidths 271 8.0786477e-05 insert f'_00width:InterpolationWidths 272 0.00011152326 insert f'_00width:InterpolationWidths 273 0.00014986259 insert f'_00width:InterpolationWidths 274 0.00019723584 insert f'_00width:InterpolationWidths 275 0.00025549388 insert f'_00width:InterpolationWidths 276 0.00032673917 insert f'_00width:InterpolationWidths 277 0.00041354189 insert f'_00width:InterpolationWidths 278 0.00051897827 insert f'_00width:InterpolationWidths 279 0.00064663137 insert f'_00width:InterpolationWidths 280 0.00080089064 insert f'_00width:InterpolationWidths 281 0.0009867997 insert f'_00width:InterpolationWidths 282 0.0012105722 insert f'_00width:InterpolationWidths 283 0.0014792094 insert f'_00width:InterpolationWidths 284 0.0018013143 insert f'_00width:InterpolationWidths 285 0.0021863456 insert f'_00width:InterpolationWidths 286 0.0026455039 insert f'_00width:InterpolationWidths 287 0.003190749 insert f'_00width:InterpolationWidths 288 0.0038350814 insert f'_00width:InterpolationWidths 289 0.0045916249 insert f'_00width:InterpolationWidths 290 0.0054722958 insert f'_00width:InterpolationWidths 291 0.0064872101 insert f'_00width:InterpolationWidths 292 0.007641154 insert f'_00width:InterpolationWidths 293 0.0089350813 insert f'_00width:InterpolationWidths 294 0.010363047 insert f'_00width:InterpolationWidths 295 0.011912907 insert f'_00width:InterpolationWidths 296 0.013567472 insert f'_00width:InterpolationWidths 297 0.015309674 insert f'_00width:InterpolationWidths 298 0.017116299 insert f'_00width:InterpolationWidths 299 0.018971916 insert f'_00width:InterpolationWidths 300 0.02084863 insert f'_00width:InterpolationWidths 301 0.022740626 insert f'_00width:InterpolationWidths 302 0.024631914 insert f'_00width:InterpolationWidths 303 0.026512847 insert f'_00width:InterpolationWidths 304 0.028373774 insert f'_00width:InterpolationWidths 305 0.030210568 insert f'_00width:InterpolationWidths 306 0.032017656 insert f'_00width:InterpolationWidths 307 0.033789479 insert f'_00width:InterpolationWidths 308 0.035525792 insert f'_00width:InterpolationWidths 309 0.037224696 insert f'_00width:InterpolationWidths 310 0.038884538 insert f'_00width:InterpolationWidths 311 0.040502995 insert f'_00width:InterpolationWidths 312 0.042085473 insert f'_00width:InterpolationWidths 313 0.043625447 insert f'_00width:InterpolationWidths 314 0.045126304 insert f'_00width:InterpolationWidths 315 0.046587006 insert f'_00width:InterpolationWidths 316 0.048009064 insert f'_00width:InterpolationWidths 317 0.049392706 insert f'_00width:InterpolationWidths 318 0.050743719 insert f'_00width:InterpolationWidths 319 0.052046417 insert f'_00width:InterpolationWidths 320 0.053319497 insert f'_00width:InterpolationWidths 321 0.054556111 insert f'_00width:InterpolationWidths 322 0.055757427 insert f'_00width:InterpolationWidths 323 0.056924674 insert f'_00width:InterpolationWidths 324 6.4567743e-05 insert f'_00width:InterpolationWidths 325 9.1054354e-05 insert f'_00width:InterpolationWidths 326 0.0001242378 insert f'_00width:InterpolationWidths 327 0.00016549943 insert f'_00width:InterpolationWidths 328 0.00021638298 insert f'_00width:InterpolationWidths 329 0.00027889074 insert f'_00width:InterpolationWidths 330 0.0003551778 insert f'_00width:InterpolationWidths 331 0.0004481275 insert f'_00width:InterpolationWidths 332 0.00056086654 insert f'_00width:InterpolationWidths 333 0.0006973861 insert f'_00width:InterpolationWidths 334 0.00086220977 insert f'_00width:InterpolationWidths 335 0.0010608907 insert f'_00width:InterpolationWidths 336 0.0012998448 insert f'_00width:InterpolationWidths 337 0.0015867406 insert f'_00width:InterpolationWidths 338 0.0019304568 insert f'_00width:InterpolationWidths 339 0.0023410926 insert f'_00width:InterpolationWidths 340 0.0028302998 insert f'_00width:InterpolationWidths 341 0.0034103326 insert f'_00width:InterpolationWidths 342 0.0040945228 insert f'_00width:InterpolationWidths 343 0.004895142 insert f'_00width:InterpolationWidths 344 0.005824306 insert f'_00width:InterpolationWidths 345 0.0068894507 insert f'_00width:InterpolationWidths 346 0.0080944498 insert f'_00width:InterpolationWidths 347 0.0094376674 insert f'_00width:InterpolationWidths 348 0.010910352 insert f'_00width:InterpolationWidths 349 0.012498626 insert f'_00width:InterpolationWidths 350 0.014184997 insert f'_00width:InterpolationWidths 351 0.015948677 insert f'_00width:InterpolationWidths 352 0.017769802 insert f'_00width:InterpolationWidths 353 0.019628579 insert f'_00width:InterpolationWidths 354 0.021509701 insert f'_00width:InterpolationWidths 355 0.023395062 insert f'_00width:InterpolationWidths 356 0.02528382 insert f'_00width:InterpolationWidths 357 0.027150549 insert f'_00width:InterpolationWidths 358 0.029000073 insert f'_00width:InterpolationWidths 359 0.030820188 insert f'_00width:InterpolationWidths 360 0.032609363 insert f'_00width:InterpolationWidths 361 0.034364947 insert f'_00width:InterpolationWidths 362 0.036085457 insert f'_00width:InterpolationWidths 363 0.037765289 insert f'_00width:InterpolationWidths 364 0.039408851 insert f'_00width:InterpolationWidths 365 0.041011696 insert f'_00width:InterpolationWidths 366 0.042575963 insert f'_00width:InterpolationWidths 367 0.044101283 insert f'_00width:InterpolationWidths 368 0.045585217 insert f'_00width:InterpolationWidths 369 0.047029348 insert f'_00width:InterpolationWidths 370 0.048437269 insert f'_00width:InterpolationWidths 371 0.049807393 insert f'_00width:InterpolationWidths 372 0.051137701 insert f'_00width:InterpolationWidths 373 0.052432962 insert f'_00width:InterpolationWidths 374 0.053691773 insert f'_00width:InterpolationWidths 375 0.054913662 insert f'_00width:InterpolationWidths 376 0.056105301 insert f'_00width:InterpolationWidths 377 0.057260997 insert f'_00width:InterpolationWidths 378 0.000211621 insert f'_00width:InterpolationWidths 379 0.00026826458 insert f'_00width:InterpolationWidths 380 0.00033963887 insert f'_00width:InterpolationWidths 381 0.00042941409 insert f'_00width:InterpolationWidths 382 0.00054203102 insert f'_00width:InterpolationWidths 383 0.00068278592 insert f'_00width:InterpolationWidths 384 0.00085792102 insert f'_00width:InterpolationWidths 385 0.0010747378 insert f'_00width:InterpolationWidths 386 0.0013417477 insert f'_00width:InterpolationWidths 387 0.0016688607 insert f'_00width:InterpolationWidths 388 0.0020676179 insert f'_00width:InterpolationWidths 389 0.0025514638 insert f'_00width:InterpolationWidths 390 0.0031360558 insert f'_00width:InterpolationWidths 391 0.0038396281 insert f'_00width:InterpolationWidths 392 0.0046834092 insert f'_00width:InterpolationWidths 393 0.0056921045 insert f'_00width:InterpolationWidths 394 0.0068944548 insert f'_00width:InterpolationWidths 395 0.0083238831 insert f'_00width:InterpolationWidths 396 0.010019241 insert f'_00width:InterpolationWidths 397 0.012025667 insert f'_00width:InterpolationWidths 398 0.014395574 insert f'_00width:InterpolationWidths 399 0.017189767 insert f'_00width:InterpolationWidths 400 0.020478704 insert f'_00width:InterpolationWidths 401 0.024343897 insert f'_00width:InterpolationWidths 402 0.028879432 insert f'_00width:InterpolationWidths 403 0.034193578 insert f'_00width:InterpolationWidths 404 0.040410414 insert f'_00width:InterpolationWidths 405 0.047671363 insert f'_00width:InterpolationWidths 406 0.056136464 insert f'_00width:InterpolationWidths 407 0.065985143 insert f'_00width:InterpolationWidths 408 0.077416162 insert f'_00width:InterpolationWidths 409 0.090646427 insert f'_00width:InterpolationWidths 410 0.10590807 insert f'_00width:InterpolationWidths 411 0.12344369 insert f'_00width:InterpolationWidths 412 0.14349935 insert f'_00width:InterpolationWidths 413 0.16631556 insert f'_00width:InterpolationWidths 414 0.19211683 insert f'_00width:InterpolationWidths 415 0.22110085 insert f'_00width:InterpolationWidths 416 0.25342879 insert f'_00width:InterpolationWidths 417 0.28921837 insert f'_00width:InterpolationWidths 418 0.32854077 insert f'_00width:InterpolationWidths 419 0.37142193 insert f'_00width:InterpolationWidths 420 0.41784783 insert f'_00width:InterpolationWidths 421 0.46777261 insert f'_00width:InterpolationWidths 422 0.52112798 insert f'_00width:InterpolationWidths 423 0.57783255 insert f'_00width:InterpolationWidths 424 0.63780001 insert f'_00width:InterpolationWidths 425 0.70094557 insert f'_00width:InterpolationWidths 426 0.76719059 insert f'_00width:InterpolationWidths 427 0.83646541 insert f'_00width:InterpolationWidths 428 0.90871091 insert f'_00width:InterpolationWidths 429 0.98387879 insert f'_00width:InterpolationWidths 430 1.0619311 insert f'_00width:InterpolationWidths 431 1.1428409 insert f'_00width:InterpolationWidths 432 0.00010223681 insert f'_00width:InterpolationWidths 433 0.00012974184 insert f'_00width:InterpolationWidths 434 0.00016443205 insert f'_00width:InterpolationWidths 435 0.00020810557 insert f'_00width:InterpolationWidths 436 0.00026294089 insert f'_00width:InterpolationWidths 437 0.00033154012 insert f'_00width:InterpolationWidths 438 0.00041697528 insert f'_00width:InterpolationWidths 439 0.00052284578 insert f'_00width:InterpolationWidths 440 0.00065335423 insert f'_00width:InterpolationWidths 441 0.00081340094 insert f'_00width:InterpolationWidths 442 0.0010087001 insert f'_00width:InterpolationWidths 443 0.0012459144 insert f'_00width:InterpolationWidths 444 0.0015328125 insert f'_00width:InterpolationWidths 445 0.0018784483 insert f'_00width:InterpolationWidths 446 0.0022933708 insert f'_00width:InterpolationWidths 447 0.0027898655 insert f'_00width:InterpolationWidths 448 0.0033822344 insert f'_00width:InterpolationWidths 449 0.0040871197 insert f'_00width:InterpolationWidths 450 0.0049238776 insert f'_00width:InterpolationWidths 451 0.0059150102 insert f'_00width:InterpolationWidths 452 0.0070866586 insert f'_00width:InterpolationWidths 453 0.0084691647 insert f'_00width:InterpolationWidths 454 0.010097705 insert f'_00width:InterpolationWidths 455 0.01201299 insert f'_00width:InterpolationWidths 456 0.014262035 insert f'_00width:InterpolationWidths 457 0.016898961 insert f'_00width:InterpolationWidths 458 0.019985816 insert f'_00width:InterpolationWidths 459 0.023593344 insert f'_00width:InterpolationWidths 460 0.027801626 insert f'_00width:InterpolationWidths 461 0.03270047 insert f'_00width:InterpolationWidths 462 0.038389379 insert f'_00width:InterpolationWidths 463 0.044976962 insert f'_00width:InterpolationWidths 464 0.052579459 insert f'_00width:InterpolationWidths 465 0.061318351 insert f'_00width:InterpolationWidths 466 0.071316845 insert f'_00width:InterpolationWidths 467 0.082695349 insert f'_00width:InterpolationWidths 468 0.095566219 insert f'_00width:InterpolationWidths 469 0.11002834 insert f'_00width:InterpolationWidths 470 0.1261623 insert f'_00width:InterpolationWidths 471 0.14402688 insert f'_00width:InterpolationWidths 472 0.16365757 insert f'_00width:InterpolationWidths 473 0.18506724 insert f'_00width:InterpolationWidths 474 0.2082488 insert f'_00width:InterpolationWidths 475 0.23317927 insert f'_00width:InterpolationWidths 476 0.25982448 insert f'_00width:InterpolationWidths 477 0.28814377 insert f'_00width:InterpolationWidths 478 0.31809407 insert f'_00width:InterpolationWidths 479 0.34963309 insert f'_00width:InterpolationWidths 480 0.38272161 insert f'_00width:InterpolationWidths 481 0.41732493 insert f'_00width:InterpolationWidths 482 0.45341361 insert f'_00width:InterpolationWidths 483 0.49096363 insert f'_00width:InterpolationWidths 484 0.52995612 insert f'_00width:InterpolationWidths 485 0.57037771 insert f'_00width:InterpolationWidths 486 0.02991869 insert f'_00width:InterpolationWidths 487 0.031933025 insert f'_00width:InterpolationWidths 488 0.034037899 insert f'_00width:InterpolationWidths 489 0.036235443 insert f'_00width:InterpolationWidths 490 0.038527757 insert f'_00width:InterpolationWidths 491 0.040916898 insert f'_00width:InterpolationWidths 492 0.043404876 insert f'_00width:InterpolationWidths 493 0.045993639 insert f'_00width:InterpolationWidths 494 0.048685073 insert f'_00width:InterpolationWidths 495 0.05148099 insert f'_00width:InterpolationWidths 496 0.05438312 insert f'_00width:InterpolationWidths 497 0.057393104 insert f'_00width:InterpolationWidths 498 0.060512485 insert f'_00width:InterpolationWidths 499 0.063742702 insert f'_00width:InterpolationWidths 500 0.067085086 insert f'_00width:InterpolationWidths 501 0.07054085 insert f'_00width:InterpolationWidths 502 0.074111083 insert f'_00width:InterpolationWidths 503 0.077796748 insert f'_00width:InterpolationWidths 504 0.081598678 insert f'_00width:InterpolationWidths 505 0.085517569 insert f'_00width:InterpolationWidths 506 0.089553978 insert f'_00width:InterpolationWidths 507 0.093708324 insert f'_00width:InterpolationWidths 508 0.097980881 insert f'_00width:InterpolationWidths 509 0.10237178 insert f'_00width:InterpolationWidths 510 0.10688102 insert f'_00width:InterpolationWidths 511 0.11150843 insert f'_00width:InterpolationWidths 512 0.11625373 insert f'_00width:InterpolationWidths 513 0.12111647 insert f'_00width:InterpolationWidths 514 0.12609607 insert f'_00width:InterpolationWidths 515 0.13119183 insert f'_00width:InterpolationWidths 516 0.13640287 insert f'_00width:InterpolationWidths 517 0.14172823 insert f'_00width:InterpolationWidths 518 0.14716678 insert f'_00width:InterpolationWidths 519 0.15271728 insert f'_00width:InterpolationWidths 520 0.15837836 insert f'_00width:InterpolationWidths 521 0.16414853 insert f'_00width:InterpolationWidths 522 0.17002616 insert f'_00width:InterpolationWidths 523 0.17600954 insert f'_00width:InterpolationWidths 524 0.18209682 insert f'_00width:InterpolationWidths 525 0.18828606 insert f'_00width:InterpolationWidths 526 0.19457517 insert f'_00width:InterpolationWidths 527 0.20096202 insert f'_00width:InterpolationWidths 528 0.20744432 insert f'_00width:InterpolationWidths 529 0.21401971 insert f'_00width:InterpolationWidths 530 0.22068573 insert f'_00width:InterpolationWidths 531 0.22743982 insert f'_00width:InterpolationWidths 532 0.23427933 insert f'_00width:InterpolationWidths 533 0.24120155 insert f'_00width:InterpolationWidths 534 0.24820363 insert f'_00width:InterpolationWidths 535 0.2552827 insert f'_00width:InterpolationWidths 536 0.26243577 insert f'_00width:InterpolationWidths 537 0.26965978 insert f'_00width:InterpolationWidths 538 0.27695161 insert f'_00width:InterpolationWidths 539 0.28430808 insert f'_00width:NumberofEntries 0 0 insert f'_00width:NumberofEntries 1 0 insert f'_00width:NumberofEntries 2 54 insert f'_00width:NumberofEntries 3 108 insert f'_00width:NumberofEntries 4 162 insert f'_00width:NumberofEntries 5 216 insert f'_00width:NumberofEntries 6 270 insert f'_00width:NumberofEntries 7 324 insert f'_00width:NumberofEntries 8 378 insert f'_00width:NumberofEntries 9 378 insert f'_00width:NumberofEntries 10 378 insert f'_00width:NumberofEntries 11 432 insert f'_00width:NumberofEntries 12 486 insert f'_00width:NumberofEntries 13 540 newdef /Herwig/Particles/f'_0:Width_generator f'_00width # create Herwig::GenericWidthGenerator f''_00width newdef f''_00width:Particle /Herwig/Particles/f_0(1710) newdef f''_00width:Prefactor 1.00002 newdef f''_00width:BRNormalize 1 newdef f''_00width:BRMinimum 0.01 newdef f''_00width:Points 50 newdef f''_00width:InterpolationOrder 1 insert f''_00width:MEtype 0 1 insert f''_00width:MEtype 1 1 insert f''_00width:MEtype 2 2 insert f''_00width:MEtype 3 1 insert f''_00width:MEtype 4 1 insert f''_00width:MEcode 0 6 insert f''_00width:MEcode 1 6 insert f''_00width:MEcode 2 0 insert f''_00width:MEcode 3 6 insert f''_00width:MEcode 4 6 insert f''_00width:MEcoupling 0 1.245 insert f''_00width:MEcoupling 1 1.24749 insert f''_00width:MEcoupling 2 1.03843 insert f''_00width:MEcoupling 3 0.414013 insert f''_00width:MEcoupling 4 0.292623 insert f''_00width:ModeOn 0 1 insert f''_00width:ModeOn 1 1 insert f''_00width:ModeOn 2 1 insert f''_00width:ModeOn 3 1 insert f''_00width:ModeOn 4 1 insert f''_00width:MinimumMasses 0 0.987354 insert f''_00width:MinimumMasses 1 0.995296 insert f''_00width:MinimumMasses 2 1.09499 insert f''_00width:MinimumMasses 3 0.27914 insert f''_00width:MinimumMasses 4 0.269955 insert f''_00width:MEmass1 0 0.493677 insert f''_00width:MEmass1 1 0.497648 insert f''_00width:MEmass1 2 0.54751 insert f''_00width:MEmass1 3 0.13957 insert f''_00width:MEmass1 4 0.134978 insert f''_00width:MEmass2 0 0.493677 insert f''_00width:MEmass2 1 0.497648 insert f''_00width:MEmass2 2 0.54751 insert f''_00width:MEmass2 3 0.13957 insert f''_00width:MEmass2 4 0.134978 insert f''_00width:DecayModes 0 f_0(1710)->K+,K-; insert f''_00width:DecayModes 1 f_0(1710)->K0,Kbar0; insert f''_00width:DecayModes 2 f_0(1710)->eta,eta; insert f''_00width:DecayModes 3 f_0(1710)->pi+,pi-; insert f''_00width:DecayModes 4 f_0(1710)->pi0,pi0; insert f''_00width:InterpolationMasses 0 1.041606 insert f''_00width:InterpolationMasses 1 1.0683 insert f''_00width:InterpolationMasses 2 1.094994 insert f''_00width:InterpolationMasses 3 1.0976346 insert f''_00width:InterpolationMasses 4 1.1002815 insert f''_00width:InterpolationMasses 5 1.1029348 insert f''_00width:InterpolationMasses 6 1.1055945 insert f''_00width:InterpolationMasses 7 1.1082606 insert f''_00width:InterpolationMasses 8 1.1109332 insert f''_00width:InterpolationMasses 9 1.1136122 insert f''_00width:InterpolationMasses 10 1.1162976 insert f''_00width:InterpolationMasses 11 1.1189896 insert f''_00width:InterpolationMasses 12 1.121688 insert f''_00width:InterpolationMasses 13 1.148382 insert f''_00width:InterpolationMasses 14 1.175076 insert f''_00width:InterpolationMasses 15 1.20177 insert f''_00width:InterpolationMasses 16 1.228464 insert f''_00width:InterpolationMasses 17 1.255158 insert f''_00width:InterpolationMasses 18 1.281852 insert f''_00width:InterpolationMasses 19 1.308546 insert f''_00width:InterpolationMasses 20 1.33524 insert f''_00width:InterpolationMasses 21 1.361934 insert f''_00width:InterpolationMasses 22 1.388628 insert f''_00width:InterpolationMasses 23 1.415322 insert f''_00width:InterpolationMasses 24 1.442016 insert f''_00width:InterpolationMasses 25 1.46871 insert f''_00width:InterpolationMasses 26 1.495404 insert f''_00width:InterpolationMasses 27 1.522098 insert f''_00width:InterpolationMasses 28 1.548792 insert f''_00width:InterpolationMasses 29 1.575486 insert f''_00width:InterpolationMasses 30 1.60218 insert f''_00width:InterpolationMasses 31 1.628874 insert f''_00width:InterpolationMasses 32 1.655568 insert f''_00width:InterpolationMasses 33 1.682262 insert f''_00width:InterpolationMasses 34 1.708956 insert f''_00width:InterpolationMasses 35 1.73565 insert f''_00width:InterpolationMasses 36 1.762344 insert f''_00width:InterpolationMasses 37 1.789038 insert f''_00width:InterpolationMasses 38 1.815732 insert f''_00width:InterpolationMasses 39 1.842426 insert f''_00width:InterpolationMasses 40 1.86912 insert f''_00width:InterpolationMasses 41 1.895814 insert f''_00width:InterpolationMasses 42 1.922508 insert f''_00width:InterpolationMasses 43 1.949202 insert f''_00width:InterpolationMasses 44 1.975896 insert f''_00width:InterpolationMasses 45 2.00259 insert f''_00width:InterpolationMasses 46 2.029284 insert f''_00width:InterpolationMasses 47 2.055978 insert f''_00width:InterpolationMasses 48 2.082672 insert f''_00width:InterpolationMasses 49 2.109366 insert f''_00width:InterpolationMasses 50 2.13606 insert f''_00width:InterpolationMasses 51 2.162754 insert f''_00width:InterpolationMasses 52 2.189448 insert f''_00width:InterpolationMasses 53 2.216142 insert f''_00width:InterpolationMasses 54 2.242836 insert f''_00width:InterpolationMasses 55 2.26953 insert f''_00width:InterpolationMasses 56 2.296224 insert f''_00width:InterpolationMasses 57 2.322918 insert f''_00width:InterpolationMasses 58 2.349612 insert f''_00width:InterpolationMasses 59 2.376306 insert f''_00width:InterpolationMasses 60 2.403 insert f''_00width:InterpolationMasses 61 2.429694 insert f''_00width:InterpolationMasses 62 2.456388 insert f''_00width:InterpolationWidths 0 0 insert f''_00width:InterpolationWidths 1 0 insert f''_00width:InterpolationWidths 2 0 insert f''_00width:InterpolationWidths 3 0.0056158636 insert f''_00width:InterpolationWidths 4 0.0079330739 insert f''_00width:InterpolationWidths 5 0.009688965 insert f''_00width:InterpolationWidths 6 0.011152137 insert f''_00width:InterpolationWidths 7 0.012426625 insert f''_00width:InterpolationWidths 8 0.013565898 insert f''_00width:InterpolationWidths 9 0.014601809 insert f''_00width:InterpolationWidths 10 0.015555179 insert f''_00width:InterpolationWidths 11 0.016440521 insert f''_00width:InterpolationWidths 12 0.017268438 insert f''_00width:InterpolationWidths 13 0.023444695 insert f''_00width:InterpolationWidths 14 0.027588931 insert f''_00width:InterpolationWidths 15 0.030637238 insert f''_00width:InterpolationWidths 16 0.032971768 insert f''_00width:InterpolationWidths 17 0.034797538 insert f''_00width:InterpolationWidths 18 0.036241027 insert f''_00width:InterpolationWidths 19 0.037387218 insert f''_00width:InterpolationWidths 20 0.038296582 insert f''_00width:InterpolationWidths 21 0.039013939 insert f''_00width:InterpolationWidths 22 0.039573537 insert f''_00width:InterpolationWidths 23 0.040002165 insert f''_00width:InterpolationWidths 24 0.04032117 insert f''_00width:InterpolationWidths 25 0.04054782 insert f''_00width:InterpolationWidths 26 0.040696255 insert f''_00width:InterpolationWidths 27 0.040778172 insert f''_00width:InterpolationWidths 28 0.040803336 insert f''_00width:InterpolationWidths 29 0.040779956 insert f''_00width:InterpolationWidths 30 0.040714977 insert f''_00width:InterpolationWidths 31 0.040614312 insert f''_00width:InterpolationWidths 32 0.040483016 insert f''_00width:InterpolationWidths 33 0.04032543 insert f''_00width:InterpolationWidths 34 0.040145296 insert f''_00width:InterpolationWidths 35 0.039945852 insert f''_00width:InterpolationWidths 36 0.039729905 insert f''_00width:InterpolationWidths 37 0.039499897 insert f''_00width:InterpolationWidths 38 0.039257959 insert f''_00width:InterpolationWidths 39 0.03900595 insert f''_00width:InterpolationWidths 40 0.038745499 insert f''_00width:InterpolationWidths 41 0.038478031 insert f''_00width:InterpolationWidths 42 0.0382048 insert f''_00width:InterpolationWidths 43 0.037926905 insert f''_00width:InterpolationWidths 44 0.037645314 insert f''_00width:InterpolationWidths 45 0.037360879 insert f''_00width:InterpolationWidths 46 0.037074348 insert f''_00width:InterpolationWidths 47 0.036786382 insert f''_00width:InterpolationWidths 48 0.036497562 insert f''_00width:InterpolationWidths 49 0.036208399 insert f''_00width:InterpolationWidths 50 0.035919345 insert f''_00width:InterpolationWidths 51 0.035630794 insert f''_00width:InterpolationWidths 52 0.035343095 insert f''_00width:InterpolationWidths 53 0.035056554 insert f''_00width:InterpolationWidths 54 0.034771437 insert f''_00width:InterpolationWidths 55 0.034487978 insert f''_00width:InterpolationWidths 56 0.034206382 insert f''_00width:InterpolationWidths 57 0.033926825 insert f''_00width:InterpolationWidths 58 0.03364946 insert f''_00width:InterpolationWidths 59 0.033374422 insert f''_00width:InterpolationWidths 60 0.033101821 insert f''_00width:InterpolationWidths 61 0.032831756 insert f''_00width:InterpolationWidths 62 0.032564308 insert f''_00width:NumberofEntries 0 0 insert f''_00width:NumberofEntries 1 0 insert f''_00width:NumberofEntries 2 63 insert f''_00width:NumberofEntries 3 63 insert f''_00width:NumberofEntries 4 63 newdef /Herwig/Particles/f_0(1710):Width_generator f''_00width # create Herwig::GenericWidthGenerator pi'+width newdef pi'+width:Particle /Herwig/Particles/pi'+ newdef pi'+width:Prefactor 0.999029 newdef pi'+width:BRNormalize 1 newdef pi'+width:BRMinimum 0.01 newdef pi'+width:Points 50 newdef pi'+width:InterpolationOrder 1 insert pi'+width:MEtype 0 2 insert pi'+width:MEtype 1 2 insert pi'+width:MEcode 0 0 insert pi'+width:MEcode 1 0 insert pi'+width:MEcoupling 0 1.00624 insert pi'+width:MEcoupling 1 0.996724 insert pi'+width:ModeOn 0 1 insert pi'+width:ModeOn 1 1 insert pi'+width:MinimumMasses 0 0.51507 insert pi'+width:MinimumMasses 1 0.510478 insert pi'+width:MEmass1 0 0.13957 insert pi'+width:MEmass1 1 0.134978 insert pi'+width:MEmass2 0 0.7755 insert pi'+width:MEmass2 1 0.7755 insert pi'+width:DecayModes 0 pi'+->pi+,rho0; insert pi'+width:DecayModes 1 pi'+->rho+,pi0; insert pi'+width:InterpolationMasses 0 0.85102041 insert pi'+width:InterpolationMasses 1 0.8755102 insert pi'+width:InterpolationMasses 2 0.9 insert pi'+width:InterpolationMasses 3 0.9244898 insert pi'+width:InterpolationMasses 4 0.94897959 insert pi'+width:InterpolationMasses 5 0.97346939 insert pi'+width:InterpolationMasses 6 0.99795918 insert pi'+width:InterpolationMasses 7 1.022449 insert pi'+width:InterpolationMasses 8 1.0469388 insert pi'+width:InterpolationMasses 9 1.0714286 insert pi'+width:InterpolationMasses 10 1.0959184 insert pi'+width:InterpolationMasses 11 1.1204082 insert pi'+width:InterpolationMasses 12 1.144898 insert pi'+width:InterpolationMasses 13 1.1693878 insert pi'+width:InterpolationMasses 14 1.1938776 insert pi'+width:InterpolationMasses 15 1.2183673 insert pi'+width:InterpolationMasses 16 1.2428571 insert pi'+width:InterpolationMasses 17 1.2673469 insert pi'+width:InterpolationMasses 18 1.2918367 insert pi'+width:InterpolationMasses 19 1.3163265 insert pi'+width:InterpolationMasses 20 1.3408163 insert pi'+width:InterpolationMasses 21 1.3653061 insert pi'+width:InterpolationMasses 22 1.3897959 insert pi'+width:InterpolationMasses 23 1.4142857 insert pi'+width:InterpolationMasses 24 1.4387755 insert pi'+width:InterpolationMasses 25 1.4632653 insert pi'+width:InterpolationMasses 26 1.4877551 insert pi'+width:InterpolationMasses 27 1.5122449 insert pi'+width:InterpolationMasses 28 1.5367347 insert pi'+width:InterpolationMasses 29 1.5612245 insert pi'+width:InterpolationMasses 30 1.5857143 insert pi'+width:InterpolationMasses 31 1.6102041 insert pi'+width:InterpolationMasses 32 1.6346939 insert pi'+width:InterpolationMasses 33 1.6591837 insert pi'+width:InterpolationMasses 34 1.6836735 insert pi'+width:InterpolationMasses 35 1.7081633 insert pi'+width:InterpolationMasses 36 1.7326531 insert pi'+width:InterpolationMasses 37 1.7571429 insert pi'+width:InterpolationMasses 38 1.7816327 insert pi'+width:InterpolationMasses 39 1.8061224 insert pi'+width:InterpolationMasses 40 1.8306122 insert pi'+width:InterpolationMasses 41 1.855102 insert pi'+width:InterpolationMasses 42 1.8795918 insert pi'+width:InterpolationMasses 43 1.9040816 insert pi'+width:InterpolationMasses 44 1.9285714 insert pi'+width:InterpolationMasses 45 1.9530612 insert pi'+width:InterpolationMasses 46 1.977551 insert pi'+width:InterpolationMasses 47 2.0020408 insert pi'+width:InterpolationMasses 48 2.0265306 insert pi'+width:InterpolationMasses 49 2.0510204 insert pi'+width:InterpolationMasses 50 2.0755102 insert pi'+width:InterpolationMasses 51 2.1 insert pi'+width:InterpolationMasses 52 2.1244898 insert pi'+width:InterpolationMasses 53 2.1489796 insert pi'+width:InterpolationMasses 54 0.85102041 insert pi'+width:InterpolationMasses 55 0.8755102 insert pi'+width:InterpolationMasses 56 0.9 insert pi'+width:InterpolationMasses 57 0.9244898 insert pi'+width:InterpolationMasses 58 0.94897959 insert pi'+width:InterpolationMasses 59 0.97346939 insert pi'+width:InterpolationMasses 60 0.99795918 insert pi'+width:InterpolationMasses 61 1.022449 insert pi'+width:InterpolationMasses 62 1.0469388 insert pi'+width:InterpolationMasses 63 1.0714286 insert pi'+width:InterpolationMasses 64 1.0959184 insert pi'+width:InterpolationMasses 65 1.1204082 insert pi'+width:InterpolationMasses 66 1.144898 insert pi'+width:InterpolationMasses 67 1.1693878 insert pi'+width:InterpolationMasses 68 1.1938776 insert pi'+width:InterpolationMasses 69 1.2183673 insert pi'+width:InterpolationMasses 70 1.2428571 insert pi'+width:InterpolationMasses 71 1.2673469 insert pi'+width:InterpolationMasses 72 1.2918367 insert pi'+width:InterpolationMasses 73 1.3163265 insert pi'+width:InterpolationMasses 74 1.3408163 insert pi'+width:InterpolationMasses 75 1.3653061 insert pi'+width:InterpolationMasses 76 1.3897959 insert pi'+width:InterpolationMasses 77 1.4142857 insert pi'+width:InterpolationMasses 78 1.4387755 insert pi'+width:InterpolationMasses 79 1.4632653 insert pi'+width:InterpolationMasses 80 1.4877551 insert pi'+width:InterpolationMasses 81 1.5122449 insert pi'+width:InterpolationMasses 82 1.5367347 insert pi'+width:InterpolationMasses 83 1.5612245 insert pi'+width:InterpolationMasses 84 1.5857143 insert pi'+width:InterpolationMasses 85 1.6102041 insert pi'+width:InterpolationMasses 86 1.6346939 insert pi'+width:InterpolationMasses 87 1.6591837 insert pi'+width:InterpolationMasses 88 1.6836735 insert pi'+width:InterpolationMasses 89 1.7081633 insert pi'+width:InterpolationMasses 90 1.7326531 insert pi'+width:InterpolationMasses 91 1.7571429 insert pi'+width:InterpolationMasses 92 1.7816327 insert pi'+width:InterpolationMasses 93 1.8061224 insert pi'+width:InterpolationMasses 94 1.8306122 insert pi'+width:InterpolationMasses 95 1.855102 insert pi'+width:InterpolationMasses 96 1.8795918 insert pi'+width:InterpolationMasses 97 1.9040816 insert pi'+width:InterpolationMasses 98 1.9285714 insert pi'+width:InterpolationMasses 99 1.9530612 insert pi'+width:InterpolationMasses 100 1.977551 insert pi'+width:InterpolationMasses 101 2.0020408 insert pi'+width:InterpolationMasses 102 2.0265306 insert pi'+width:InterpolationMasses 103 2.0510204 insert pi'+width:InterpolationMasses 104 2.0755102 insert pi'+width:InterpolationMasses 105 2.1 insert pi'+width:InterpolationMasses 106 2.1244898 insert pi'+width:InterpolationMasses 107 2.1489796 insert pi'+width:InterpolationWidths 0 0.0030625699 insert pi'+width:InterpolationWidths 1 0.0043442102 insert pi'+width:InterpolationWidths 2 0.0061427572 insert pi'+width:InterpolationWidths 3 0.008629643 insert pi'+width:InterpolationWidths 4 0.011963814 insert pi'+width:InterpolationWidths 5 0.016268622 insert pi'+width:InterpolationWidths 6 0.021636763 insert pi'+width:InterpolationWidths 7 0.028143112 insert pi'+width:InterpolationWidths 8 0.035852994 insert pi'+width:InterpolationWidths 9 0.044826105 insert pi'+width:InterpolationWidths 10 0.055118294 insert pi'+width:InterpolationWidths 11 0.066782445 insert pi'+width:InterpolationWidths 12 0.079868999 insert pi'+width:InterpolationWidths 13 0.094426306 insert pi'+width:InterpolationWidths 14 0.1105009 insert pi'+width:InterpolationWidths 15 0.12813772 insert pi'+width:InterpolationWidths 16 0.14738032 insert pi'+width:InterpolationWidths 17 0.16827102 insert pi'+width:InterpolationWidths 18 0.19085107 insert pi'+width:InterpolationWidths 19 0.21516077 insert pi'+width:InterpolationWidths 20 0.2412396 insert pi'+width:InterpolationWidths 21 0.26912628 insert pi'+width:InterpolationWidths 22 0.29885893 insert pi'+width:InterpolationWidths 23 0.33047507 insert pi'+width:InterpolationWidths 24 0.36401034 insert pi'+width:InterpolationWidths 25 0.39949688 insert pi'+width:InterpolationWidths 26 0.43696745 insert pi'+width:InterpolationWidths 27 0.47645478 insert pi'+width:InterpolationWidths 28 0.51799145 insert pi'+width:InterpolationWidths 29 0.56160976 insert pi'+width:InterpolationWidths 30 0.60734185 insert pi'+width:InterpolationWidths 31 0.65521965 insert pi'+width:InterpolationWidths 32 0.70527494 insert pi'+width:InterpolationWidths 33 0.75753936 insert pi'+width:InterpolationWidths 34 0.81204443 insert pi'+width:InterpolationWidths 35 0.86882158 insert pi'+width:InterpolationWidths 36 0.92790216 insert pi'+width:InterpolationWidths 37 0.98931746 insert pi'+width:InterpolationWidths 38 1.0530987 insert pi'+width:InterpolationWidths 39 1.1192771 insert pi'+width:InterpolationWidths 40 1.1878838 insert pi'+width:InterpolationWidths 41 1.25895 insert pi'+width:InterpolationWidths 42 1.3325067 insert pi'+width:InterpolationWidths 43 1.4085852 insert pi'+width:InterpolationWidths 44 1.4872164 insert pi'+width:InterpolationWidths 45 1.5684316 insert pi'+width:InterpolationWidths 46 1.6522618 insert pi'+width:InterpolationWidths 47 1.7387382 insert pi'+width:InterpolationWidths 48 1.8278919 insert pi'+width:InterpolationWidths 49 1.9197541 insert pi'+width:InterpolationWidths 50 2.0143559 insert pi'+width:InterpolationWidths 51 2.1117285 insert pi'+width:InterpolationWidths 52 2.2119031 insert pi'+width:InterpolationWidths 53 2.3149109 insert pi'+width:InterpolationWidths 54 0.0032363881 insert pi'+width:InterpolationWidths 55 0.0045803359 insert pi'+width:InterpolationWidths 56 0.0064605272 insert pi'+width:InterpolationWidths 57 0.0090454174 insert pi'+width:InterpolationWidths 58 0.012486053 insert pi'+width:InterpolationWidths 59 0.016898889 insert pi'+width:InterpolationWidths 60 0.022373233 insert pi'+width:InterpolationWidths 61 0.028982929 insert pi'+width:InterpolationWidths 62 0.036793294 insert pi'+width:InterpolationWidths 63 0.045864372 insert pi'+width:InterpolationWidths 64 0.056252439 insert pi'+width:InterpolationWidths 65 0.068010795 insert pi'+width:InterpolationWidths 66 0.081190256 insert pi'+width:InterpolationWidths 67 0.095839498 insert pi'+width:InterpolationWidths 68 0.11200534 insert pi'+width:InterpolationWidths 69 0.12973296 insert pi'+width:InterpolationWidths 70 0.14906614 insert pi'+width:InterpolationWidths 71 0.17004737 insert pi'+width:InterpolationWidths 72 0.19271808 insert pi'+width:InterpolationWidths 73 0.2171187 insert pi'+width:InterpolationWidths 74 0.24328884 insert pi'+width:InterpolationWidths 75 0.27126734 insert pi'+width:InterpolationWidths 76 0.30109242 insert pi'+width:InterpolationWidths 77 0.33280168 insert pi'+width:InterpolationWidths 78 0.36643018 insert pi'+width:InterpolationWidths 79 0.40201037 insert pi'+width:InterpolationWidths 80 0.43957528 insert pi'+width:InterpolationWidths 81 0.47915782 insert pi'+width:InterpolationWidths 82 0.52079065 insert pi'+width:InterpolationWidths 83 0.56450621 insert pi'+width:InterpolationWidths 84 0.6103367 insert pi'+width:InterpolationWidths 85 0.65831415 insert pi'+width:InterpolationWidths 86 0.70847039 insert pi'+width:InterpolationWidths 87 0.76083715 insert pi'+width:InterpolationWidths 88 0.815446 insert pi'+width:InterpolationWidths 89 0.87232843 insert pi'+width:InterpolationWidths 90 0.93151586 insert pi'+width:InterpolationWidths 91 0.99303961 insert pi'+width:InterpolationWidths 92 1.056931 insert pi'+width:InterpolationWidths 93 1.1232212 insert pi'+width:InterpolationWidths 94 1.1919415 insert pi'+width:InterpolationWidths 95 1.2631231 insert pi'+width:InterpolationWidths 96 1.336797 insert pi'+width:InterpolationWidths 97 1.4129946 insert pi'+width:InterpolationWidths 98 1.4917469 insert pi'+width:InterpolationWidths 99 1.5730851 insert pi'+width:InterpolationWidths 100 1.6570404 insert pi'+width:InterpolationWidths 101 1.7436438 insert pi'+width:InterpolationWidths 102 1.8329267 insert pi'+width:InterpolationWidths 103 1.9249202 insert pi'+width:InterpolationWidths 104 2.0196554 insert pi'+width:InterpolationWidths 105 2.1171636 insert pi'+width:InterpolationWidths 106 2.2174761 insert pi'+width:InterpolationWidths 107 2.3206241 insert pi'+width:NumberofEntries 0 54 insert pi'+width:NumberofEntries 1 108 newdef /Herwig/Particles/pi'+:Width_generator pi'+width newdef /Herwig/Particles/pi'-:Width_generator pi'+width # create Herwig::GenericWidthGenerator pi'0width newdef pi'0width:Particle /Herwig/Particles/pi'0 newdef pi'0width:Prefactor 0.999026 newdef pi'0width:BRNormalize 1 newdef pi'0width:BRMinimum 0.01 newdef pi'0width:Points 50 newdef pi'0width:InterpolationOrder 1 insert pi'0width:MEtype 0 2 insert pi'0width:MEtype 1 2 insert pi'0width:MEcode 0 0 insert pi'0width:MEcode 1 0 insert pi'0width:MEcoupling 0 1.00392 insert pi'0width:MEcoupling 1 1.00392 insert pi'0width:ModeOn 0 1 insert pi'0width:ModeOn 1 1 insert pi'0width:MinimumMasses 0 0.51507 insert pi'0width:MinimumMasses 1 0.51507 insert pi'0width:MEmass1 0 0.13957 insert pi'0width:MEmass1 1 0.13957 insert pi'0width:MEmass2 0 0.7755 insert pi'0width:MEmass2 1 0.7755 insert pi'0width:DecayModes 0 pi'0->rho+,pi-; insert pi'0width:DecayModes 1 pi'0->rho-,pi+; insert pi'0width:InterpolationMasses 0 0.85102041 insert pi'0width:InterpolationMasses 1 0.8755102 insert pi'0width:InterpolationMasses 2 0.9 insert pi'0width:InterpolationMasses 3 0.9244898 insert pi'0width:InterpolationMasses 4 0.94897959 insert pi'0width:InterpolationMasses 5 0.97346939 insert pi'0width:InterpolationMasses 6 0.99795918 insert pi'0width:InterpolationMasses 7 1.022449 insert pi'0width:InterpolationMasses 8 1.0469388 insert pi'0width:InterpolationMasses 9 1.0714286 insert pi'0width:InterpolationMasses 10 1.0959184 insert pi'0width:InterpolationMasses 11 1.1204082 insert pi'0width:InterpolationMasses 12 1.144898 insert pi'0width:InterpolationMasses 13 1.1693878 insert pi'0width:InterpolationMasses 14 1.1938776 insert pi'0width:InterpolationMasses 15 1.2183673 insert pi'0width:InterpolationMasses 16 1.2428571 insert pi'0width:InterpolationMasses 17 1.2673469 insert pi'0width:InterpolationMasses 18 1.2918367 insert pi'0width:InterpolationMasses 19 1.3163265 insert pi'0width:InterpolationMasses 20 1.3408163 insert pi'0width:InterpolationMasses 21 1.3653061 insert pi'0width:InterpolationMasses 22 1.3897959 insert pi'0width:InterpolationMasses 23 1.4142857 insert pi'0width:InterpolationMasses 24 1.4387755 insert pi'0width:InterpolationMasses 25 1.4632653 insert pi'0width:InterpolationMasses 26 1.4877551 insert pi'0width:InterpolationMasses 27 1.5122449 insert pi'0width:InterpolationMasses 28 1.5367347 insert pi'0width:InterpolationMasses 29 1.5612245 insert pi'0width:InterpolationMasses 30 1.5857143 insert pi'0width:InterpolationMasses 31 1.6102041 insert pi'0width:InterpolationMasses 32 1.6346939 insert pi'0width:InterpolationMasses 33 1.6591837 insert pi'0width:InterpolationMasses 34 1.6836735 insert pi'0width:InterpolationMasses 35 1.7081633 insert pi'0width:InterpolationMasses 36 1.7326531 insert pi'0width:InterpolationMasses 37 1.7571429 insert pi'0width:InterpolationMasses 38 1.7816327 insert pi'0width:InterpolationMasses 39 1.8061224 insert pi'0width:InterpolationMasses 40 1.8306122 insert pi'0width:InterpolationMasses 41 1.855102 insert pi'0width:InterpolationMasses 42 1.8795918 insert pi'0width:InterpolationMasses 43 1.9040816 insert pi'0width:InterpolationMasses 44 1.9285714 insert pi'0width:InterpolationMasses 45 1.9530612 insert pi'0width:InterpolationMasses 46 1.977551 insert pi'0width:InterpolationMasses 47 2.0020408 insert pi'0width:InterpolationMasses 48 2.0265306 insert pi'0width:InterpolationMasses 49 2.0510204 insert pi'0width:InterpolationMasses 50 2.0755102 insert pi'0width:InterpolationMasses 51 2.1 insert pi'0width:InterpolationMasses 52 2.1244898 insert pi'0width:InterpolationMasses 53 2.1489796 insert pi'0width:InterpolationMasses 54 0.85102041 insert pi'0width:InterpolationMasses 55 0.8755102 insert pi'0width:InterpolationMasses 56 0.9 insert pi'0width:InterpolationMasses 57 0.9244898 insert pi'0width:InterpolationMasses 58 0.94897959 insert pi'0width:InterpolationMasses 59 0.97346939 insert pi'0width:InterpolationMasses 60 0.99795918 insert pi'0width:InterpolationMasses 61 1.022449 insert pi'0width:InterpolationMasses 62 1.0469388 insert pi'0width:InterpolationMasses 63 1.0714286 insert pi'0width:InterpolationMasses 64 1.0959184 insert pi'0width:InterpolationMasses 65 1.1204082 insert pi'0width:InterpolationMasses 66 1.144898 insert pi'0width:InterpolationMasses 67 1.1693878 insert pi'0width:InterpolationMasses 68 1.1938776 insert pi'0width:InterpolationMasses 69 1.2183673 insert pi'0width:InterpolationMasses 70 1.2428571 insert pi'0width:InterpolationMasses 71 1.2673469 insert pi'0width:InterpolationMasses 72 1.2918367 insert pi'0width:InterpolationMasses 73 1.3163265 insert pi'0width:InterpolationMasses 74 1.3408163 insert pi'0width:InterpolationMasses 75 1.3653061 insert pi'0width:InterpolationMasses 76 1.3897959 insert pi'0width:InterpolationMasses 77 1.4142857 insert pi'0width:InterpolationMasses 78 1.4387755 insert pi'0width:InterpolationMasses 79 1.4632653 insert pi'0width:InterpolationMasses 80 1.4877551 insert pi'0width:InterpolationMasses 81 1.5122449 insert pi'0width:InterpolationMasses 82 1.5367347 insert pi'0width:InterpolationMasses 83 1.5612245 insert pi'0width:InterpolationMasses 84 1.5857143 insert pi'0width:InterpolationMasses 85 1.6102041 insert pi'0width:InterpolationMasses 86 1.6346939 insert pi'0width:InterpolationMasses 87 1.6591837 insert pi'0width:InterpolationMasses 88 1.6836735 insert pi'0width:InterpolationMasses 89 1.7081633 insert pi'0width:InterpolationMasses 90 1.7326531 insert pi'0width:InterpolationMasses 91 1.7571429 insert pi'0width:InterpolationMasses 92 1.7816327 insert pi'0width:InterpolationMasses 93 1.8061224 insert pi'0width:InterpolationMasses 94 1.8306122 insert pi'0width:InterpolationMasses 95 1.855102 insert pi'0width:InterpolationMasses 96 1.8795918 insert pi'0width:InterpolationMasses 97 1.9040816 insert pi'0width:InterpolationMasses 98 1.9285714 insert pi'0width:InterpolationMasses 99 1.9530612 insert pi'0width:InterpolationMasses 100 1.977551 insert pi'0width:InterpolationMasses 101 2.0020408 insert pi'0width:InterpolationMasses 102 2.0265306 insert pi'0width:InterpolationMasses 103 2.0510204 insert pi'0width:InterpolationMasses 104 2.0755102 insert pi'0width:InterpolationMasses 105 2.1 insert pi'0width:InterpolationMasses 106 2.1244898 insert pi'0width:InterpolationMasses 107 2.1489796 insert pi'0width:InterpolationWidths 0 0.0031057499 insert pi'0width:InterpolationWidths 1 0.0043975518 insert pi'0width:InterpolationWidths 2 0.0062075342 insert pi'0width:InterpolationWidths 3 0.0087070987 insert pi'0width:InterpolationWidths 4 0.012055257 insert pi'0width:InterpolationWidths 5 0.016375465 insert pi'0width:InterpolationWidths 6 0.021760489 insert pi'0width:InterpolationWidths 7 0.028285239 insert pi'0width:InterpolationWidths 8 0.036015055 insert pi'0width:InterpolationWidths 9 0.045009644 insert pi'0width:InterpolationWidths 10 0.055324858 insert pi'0width:InterpolationWidths 11 0.067013588 insert pi'0width:InterpolationWidths 12 0.08012628 insert pi'0width:InterpolationWidths 13 0.094711287 insert pi'0width:InterpolationWidths 14 0.11081515 insert pi'0width:InterpolationWidths 15 0.12848281 insert pi'0width:InterpolationWidths 16 0.14775783 insert pi'0width:InterpolationWidths 17 0.16868254 insert pi'0width:InterpolationWidths 18 0.19129818 insert pi'0width:InterpolationWidths 19 0.21564508 insert pi'0width:InterpolationWidths 20 0.24176269 insert pi'0width:InterpolationWidths 21 0.26968979 insert pi'0width:InterpolationWidths 22 0.29946446 insert pi'0width:InterpolationWidths 23 0.33112425 insert pi'0width:InterpolationWidths 24 0.36470481 insert pi'0width:InterpolationWidths 25 0.40023832 insert pi'0width:InterpolationWidths 26 0.43775753 insert pi'0width:InterpolationWidths 27 0.47729522 insert pi'0width:InterpolationWidths 28 0.51888398 insert pi'0width:InterpolationWidths 29 0.56255615 insert pi'0width:InterpolationWidths 30 0.60834387 insert pi'0width:InterpolationWidths 31 0.65627911 insert pi'0width:InterpolationWidths 32 0.70639367 insert pi'0width:InterpolationWidths 33 0.7587192 insert pi'0width:InterpolationWidths 34 0.81328727 insert pi'0width:InterpolationWidths 35 0.87012932 insert pi'0width:InterpolationWidths 36 0.92927673 insert pi'0width:InterpolationWidths 37 0.99076082 insert pi'0width:InterpolationWidths 38 1.0546128 insert pi'0width:InterpolationWidths 39 1.120864 insert pi'0width:InterpolationWidths 40 1.1895455 insert pi'0width:InterpolationWidths 41 1.2606885 insert pi'0width:InterpolationWidths 42 1.3343242 insert pi'0width:InterpolationWidths 43 1.4104837 insert pi'0width:InterpolationWidths 44 1.4891982 insert pi'0width:InterpolationWidths 45 1.5704987 insert pi'0width:InterpolationWidths 46 1.6544165 insert pi'0width:InterpolationWidths 47 1.7409827 insert pi'0width:InterpolationWidths 48 1.8302284 insert pi'0width:InterpolationWidths 49 1.9221849 insert pi'0width:InterpolationWidths 50 2.0168833 insert pi'0width:InterpolationWidths 51 2.1143548 insert pi'0width:InterpolationWidths 52 2.2146306 insert pi'0width:InterpolationWidths 53 2.3177421 insert pi'0width:InterpolationWidths 54 0.0031057499 insert pi'0width:InterpolationWidths 55 0.0043975518 insert pi'0width:InterpolationWidths 56 0.0062075342 insert pi'0width:InterpolationWidths 57 0.0087070987 insert pi'0width:InterpolationWidths 58 0.012055257 insert pi'0width:InterpolationWidths 59 0.016375465 insert pi'0width:InterpolationWidths 60 0.021760489 insert pi'0width:InterpolationWidths 61 0.028285239 insert pi'0width:InterpolationWidths 62 0.036015055 insert pi'0width:InterpolationWidths 63 0.045009644 insert pi'0width:InterpolationWidths 64 0.055324858 insert pi'0width:InterpolationWidths 65 0.067013588 insert pi'0width:InterpolationWidths 66 0.08012628 insert pi'0width:InterpolationWidths 67 0.094711287 insert pi'0width:InterpolationWidths 68 0.11081515 insert pi'0width:InterpolationWidths 69 0.12848281 insert pi'0width:InterpolationWidths 70 0.14775783 insert pi'0width:InterpolationWidths 71 0.16868254 insert pi'0width:InterpolationWidths 72 0.19129818 insert pi'0width:InterpolationWidths 73 0.21564508 insert pi'0width:InterpolationWidths 74 0.24176269 insert pi'0width:InterpolationWidths 75 0.26968979 insert pi'0width:InterpolationWidths 76 0.29946446 insert pi'0width:InterpolationWidths 77 0.33112425 insert pi'0width:InterpolationWidths 78 0.36470481 insert pi'0width:InterpolationWidths 79 0.40023832 insert pi'0width:InterpolationWidths 80 0.43775753 insert pi'0width:InterpolationWidths 81 0.47729522 insert pi'0width:InterpolationWidths 82 0.51888398 insert pi'0width:InterpolationWidths 83 0.56255615 insert pi'0width:InterpolationWidths 84 0.60834387 insert pi'0width:InterpolationWidths 85 0.65627911 insert pi'0width:InterpolationWidths 86 0.70639367 insert pi'0width:InterpolationWidths 87 0.7587192 insert pi'0width:InterpolationWidths 88 0.81328727 insert pi'0width:InterpolationWidths 89 0.87012932 insert pi'0width:InterpolationWidths 90 0.92927673 insert pi'0width:InterpolationWidths 91 0.99076082 insert pi'0width:InterpolationWidths 92 1.0546128 insert pi'0width:InterpolationWidths 93 1.120864 insert pi'0width:InterpolationWidths 94 1.1895455 insert pi'0width:InterpolationWidths 95 1.2606885 insert pi'0width:InterpolationWidths 96 1.3343242 insert pi'0width:InterpolationWidths 97 1.4104837 insert pi'0width:InterpolationWidths 98 1.4891982 insert pi'0width:InterpolationWidths 99 1.5704987 insert pi'0width:InterpolationWidths 100 1.6544165 insert pi'0width:InterpolationWidths 101 1.7409827 insert pi'0width:InterpolationWidths 102 1.8302284 insert pi'0width:InterpolationWidths 103 1.9221849 insert pi'0width:InterpolationWidths 104 2.0168833 insert pi'0width:InterpolationWidths 105 2.1143548 insert pi'0width:InterpolationWidths 106 2.2146306 insert pi'0width:InterpolationWidths 107 2.3177421 insert pi'0width:NumberofEntries 0 54 insert pi'0width:NumberofEntries 1 108 newdef /Herwig/Particles/pi'0:Width_generator pi'0width # create Herwig::GenericWidthGenerator eta(1295)width newdef eta(1295)width:Particle /Herwig/Particles/eta(1295) newdef eta(1295)width:Prefactor 1.00009 newdef eta(1295)width:BRNormalize 1 newdef eta(1295)width:BRMinimum 0.01 newdef eta(1295)width:Points 50 newdef eta(1295)width:InterpolationOrder 1 insert eta(1295)width:MEtype 0 2 insert eta(1295)width:MEtype 1 2 insert eta(1295)width:MEtype 2 2 insert eta(1295)width:MEtype 3 2 insert eta(1295)width:MEcode 0 0 insert eta(1295)width:MEcode 1 0 insert eta(1295)width:MEcode 2 0 insert eta(1295)width:MEcode 3 0 insert eta(1295)width:MEcoupling 0 1.00969 insert eta(1295)width:MEcoupling 1 1.00969 insert eta(1295)width:MEcoupling 2 0.993823 insert eta(1295)width:MEcoupling 3 0.999976 insert eta(1295)width:ModeOn 0 1 insert eta(1295)width:ModeOn 1 1 insert eta(1295)width:ModeOn 2 1 insert eta(1295)width:ModeOn 3 1 insert eta(1295)width:MinimumMasses 0 0.89857 insert eta(1295)width:MinimumMasses 1 0.89857 insert eta(1295)width:MinimumMasses 2 0.893978 insert eta(1295)width:MinimumMasses 3 0.857497 insert eta(1295)width:MEmass1 0 0.999 insert eta(1295)width:MEmass1 1 0.999 insert eta(1295)width:MEmass1 2 0.999 insert eta(1295)width:MEmass1 3 0.86 insert eta(1295)width:MEmass2 0 0.13957 insert eta(1295)width:MEmass2 1 0.13957 insert eta(1295)width:MEmass2 2 0.134978 insert eta(1295)width:MEmass2 3 0.54751 insert eta(1295)width:DecayModes 0 eta(1295)->a_0+,pi-; insert eta(1295)width:DecayModes 1 eta(1295)->a_0-,pi+; insert eta(1295)width:DecayModes 2 eta(1295)->a_00,pi0; insert eta(1295)width:DecayModes 3 eta(1295)->sigma,eta; insert eta(1295)width:InterpolationMasses 0 1.0217551 insert eta(1295)width:InterpolationMasses 1 1.0378776 insert eta(1295)width:InterpolationMasses 2 1.054 insert eta(1295)width:InterpolationMasses 3 1.0701224 insert eta(1295)width:InterpolationMasses 4 1.0862449 insert eta(1295)width:InterpolationMasses 5 1.1023673 insert eta(1295)width:InterpolationMasses 6 1.1184898 insert eta(1295)width:InterpolationMasses 7 1.1346122 insert eta(1295)width:InterpolationMasses 8 1.1507347 insert eta(1295)width:InterpolationMasses 9 1.1668571 insert eta(1295)width:InterpolationMasses 10 1.1829796 insert eta(1295)width:InterpolationMasses 11 1.199102 insert eta(1295)width:InterpolationMasses 12 1.2152245 insert eta(1295)width:InterpolationMasses 13 1.2313469 insert eta(1295)width:InterpolationMasses 14 1.2474694 insert eta(1295)width:InterpolationMasses 15 1.2635918 insert eta(1295)width:InterpolationMasses 16 1.2797143 insert eta(1295)width:InterpolationMasses 17 1.2958367 insert eta(1295)width:InterpolationMasses 18 1.3119592 insert eta(1295)width:InterpolationMasses 19 1.3280816 insert eta(1295)width:InterpolationMasses 20 1.3442041 insert eta(1295)width:InterpolationMasses 21 1.3603265 insert eta(1295)width:InterpolationMasses 22 1.376449 insert eta(1295)width:InterpolationMasses 23 1.3925714 insert eta(1295)width:InterpolationMasses 24 1.4086939 insert eta(1295)width:InterpolationMasses 25 1.4248163 insert eta(1295)width:InterpolationMasses 26 1.4409388 insert eta(1295)width:InterpolationMasses 27 1.4570612 insert eta(1295)width:InterpolationMasses 28 1.4731837 insert eta(1295)width:InterpolationMasses 29 1.4893061 insert eta(1295)width:InterpolationMasses 30 1.5054286 insert eta(1295)width:InterpolationMasses 31 1.521551 insert eta(1295)width:InterpolationMasses 32 1.5376735 insert eta(1295)width:InterpolationMasses 33 1.5537959 insert eta(1295)width:InterpolationMasses 34 1.5699184 insert eta(1295)width:InterpolationMasses 35 1.5860408 insert eta(1295)width:InterpolationMasses 36 1.6021633 insert eta(1295)width:InterpolationMasses 37 1.6182857 insert eta(1295)width:InterpolationMasses 38 1.6344082 insert eta(1295)width:InterpolationMasses 39 1.6505306 insert eta(1295)width:InterpolationMasses 40 1.6666531 insert eta(1295)width:InterpolationMasses 41 1.6827755 insert eta(1295)width:InterpolationMasses 42 1.698898 insert eta(1295)width:InterpolationMasses 43 1.7150204 insert eta(1295)width:InterpolationMasses 44 1.7311429 insert eta(1295)width:InterpolationMasses 45 1.7472653 insert eta(1295)width:InterpolationMasses 46 1.7633878 insert eta(1295)width:InterpolationMasses 47 1.7795102 insert eta(1295)width:InterpolationMasses 48 1.7956327 insert eta(1295)width:InterpolationMasses 49 1.8117551 insert eta(1295)width:InterpolationMasses 50 1.8278776 insert eta(1295)width:InterpolationMasses 51 1.844 insert eta(1295)width:InterpolationMasses 52 1.8601224 insert eta(1295)width:InterpolationMasses 53 1.8762449 insert eta(1295)width:InterpolationMasses 54 1.0217551 insert eta(1295)width:InterpolationMasses 55 1.0378776 insert eta(1295)width:InterpolationMasses 56 1.054 insert eta(1295)width:InterpolationMasses 57 1.0701224 insert eta(1295)width:InterpolationMasses 58 1.0862449 insert eta(1295)width:InterpolationMasses 59 1.1023673 insert eta(1295)width:InterpolationMasses 60 1.1184898 insert eta(1295)width:InterpolationMasses 61 1.1346122 insert eta(1295)width:InterpolationMasses 62 1.1507347 insert eta(1295)width:InterpolationMasses 63 1.1668571 insert eta(1295)width:InterpolationMasses 64 1.1829796 insert eta(1295)width:InterpolationMasses 65 1.199102 insert eta(1295)width:InterpolationMasses 66 1.2152245 insert eta(1295)width:InterpolationMasses 67 1.2313469 insert eta(1295)width:InterpolationMasses 68 1.2474694 insert eta(1295)width:InterpolationMasses 69 1.2635918 insert eta(1295)width:InterpolationMasses 70 1.2797143 insert eta(1295)width:InterpolationMasses 71 1.2958367 insert eta(1295)width:InterpolationMasses 72 1.3119592 insert eta(1295)width:InterpolationMasses 73 1.3280816 insert eta(1295)width:InterpolationMasses 74 1.3442041 insert eta(1295)width:InterpolationMasses 75 1.3603265 insert eta(1295)width:InterpolationMasses 76 1.376449 insert eta(1295)width:InterpolationMasses 77 1.3925714 insert eta(1295)width:InterpolationMasses 78 1.4086939 insert eta(1295)width:InterpolationMasses 79 1.4248163 insert eta(1295)width:InterpolationMasses 80 1.4409388 insert eta(1295)width:InterpolationMasses 81 1.4570612 insert eta(1295)width:InterpolationMasses 82 1.4731837 insert eta(1295)width:InterpolationMasses 83 1.4893061 insert eta(1295)width:InterpolationMasses 84 1.5054286 insert eta(1295)width:InterpolationMasses 85 1.521551 insert eta(1295)width:InterpolationMasses 86 1.5376735 insert eta(1295)width:InterpolationMasses 87 1.5537959 insert eta(1295)width:InterpolationMasses 88 1.5699184 insert eta(1295)width:InterpolationMasses 89 1.5860408 insert eta(1295)width:InterpolationMasses 90 1.6021633 insert eta(1295)width:InterpolationMasses 91 1.6182857 insert eta(1295)width:InterpolationMasses 92 1.6344082 insert eta(1295)width:InterpolationMasses 93 1.6505306 insert eta(1295)width:InterpolationMasses 94 1.6666531 insert eta(1295)width:InterpolationMasses 95 1.6827755 insert eta(1295)width:InterpolationMasses 96 1.698898 insert eta(1295)width:InterpolationMasses 97 1.7150204 insert eta(1295)width:InterpolationMasses 98 1.7311429 insert eta(1295)width:InterpolationMasses 99 1.7472653 insert eta(1295)width:InterpolationMasses 100 1.7633878 insert eta(1295)width:InterpolationMasses 101 1.7795102 insert eta(1295)width:InterpolationMasses 102 1.7956327 insert eta(1295)width:InterpolationMasses 103 1.8117551 insert eta(1295)width:InterpolationMasses 104 1.8278776 insert eta(1295)width:InterpolationMasses 105 1.844 insert eta(1295)width:InterpolationMasses 106 1.8601224 insert eta(1295)width:InterpolationMasses 107 1.8762449 insert eta(1295)width:InterpolationMasses 108 1.0217551 insert eta(1295)width:InterpolationMasses 109 1.0378776 insert eta(1295)width:InterpolationMasses 110 1.054 insert eta(1295)width:InterpolationMasses 111 1.0701224 insert eta(1295)width:InterpolationMasses 112 1.0862449 insert eta(1295)width:InterpolationMasses 113 1.1023673 insert eta(1295)width:InterpolationMasses 114 1.1184898 insert eta(1295)width:InterpolationMasses 115 1.1346122 insert eta(1295)width:InterpolationMasses 116 1.1507347 insert eta(1295)width:InterpolationMasses 117 1.1668571 insert eta(1295)width:InterpolationMasses 118 1.1829796 insert eta(1295)width:InterpolationMasses 119 1.199102 insert eta(1295)width:InterpolationMasses 120 1.2152245 insert eta(1295)width:InterpolationMasses 121 1.2313469 insert eta(1295)width:InterpolationMasses 122 1.2474694 insert eta(1295)width:InterpolationMasses 123 1.2635918 insert eta(1295)width:InterpolationMasses 124 1.2797143 insert eta(1295)width:InterpolationMasses 125 1.2958367 insert eta(1295)width:InterpolationMasses 126 1.3119592 insert eta(1295)width:InterpolationMasses 127 1.3280816 insert eta(1295)width:InterpolationMasses 128 1.3442041 insert eta(1295)width:InterpolationMasses 129 1.3603265 insert eta(1295)width:InterpolationMasses 130 1.376449 insert eta(1295)width:InterpolationMasses 131 1.3925714 insert eta(1295)width:InterpolationMasses 132 1.4086939 insert eta(1295)width:InterpolationMasses 133 1.4248163 insert eta(1295)width:InterpolationMasses 134 1.4409388 insert eta(1295)width:InterpolationMasses 135 1.4570612 insert eta(1295)width:InterpolationMasses 136 1.4731837 insert eta(1295)width:InterpolationMasses 137 1.4893061 insert eta(1295)width:InterpolationMasses 138 1.5054286 insert eta(1295)width:InterpolationMasses 139 1.521551 insert eta(1295)width:InterpolationMasses 140 1.5376735 insert eta(1295)width:InterpolationMasses 141 1.5537959 insert eta(1295)width:InterpolationMasses 142 1.5699184 insert eta(1295)width:InterpolationMasses 143 1.5860408 insert eta(1295)width:InterpolationMasses 144 1.6021633 insert eta(1295)width:InterpolationMasses 145 1.6182857 insert eta(1295)width:InterpolationMasses 146 1.6344082 insert eta(1295)width:InterpolationMasses 147 1.6505306 insert eta(1295)width:InterpolationMasses 148 1.6666531 insert eta(1295)width:InterpolationMasses 149 1.6827755 insert eta(1295)width:InterpolationMasses 150 1.698898 insert eta(1295)width:InterpolationMasses 151 1.7150204 insert eta(1295)width:InterpolationMasses 152 1.7311429 insert eta(1295)width:InterpolationMasses 153 1.7472653 insert eta(1295)width:InterpolationMasses 154 1.7633878 insert eta(1295)width:InterpolationMasses 155 1.7795102 insert eta(1295)width:InterpolationMasses 156 1.7956327 insert eta(1295)width:InterpolationMasses 157 1.8117551 insert eta(1295)width:InterpolationMasses 158 1.8278776 insert eta(1295)width:InterpolationMasses 159 1.844 insert eta(1295)width:InterpolationMasses 160 1.8601224 insert eta(1295)width:InterpolationMasses 161 1.8762449 insert eta(1295)width:InterpolationMasses 162 1.0217551 insert eta(1295)width:InterpolationMasses 163 1.0378776 insert eta(1295)width:InterpolationMasses 164 1.054 insert eta(1295)width:InterpolationMasses 165 1.0701224 insert eta(1295)width:InterpolationMasses 166 1.0862449 insert eta(1295)width:InterpolationMasses 167 1.1023673 insert eta(1295)width:InterpolationMasses 168 1.1184898 insert eta(1295)width:InterpolationMasses 169 1.1346122 insert eta(1295)width:InterpolationMasses 170 1.1507347 insert eta(1295)width:InterpolationMasses 171 1.1668571 insert eta(1295)width:InterpolationMasses 172 1.1829796 insert eta(1295)width:InterpolationMasses 173 1.199102 insert eta(1295)width:InterpolationMasses 174 1.2152245 insert eta(1295)width:InterpolationMasses 175 1.2313469 insert eta(1295)width:InterpolationMasses 176 1.2474694 insert eta(1295)width:InterpolationMasses 177 1.2635918 insert eta(1295)width:InterpolationMasses 178 1.2797143 insert eta(1295)width:InterpolationMasses 179 1.2958367 insert eta(1295)width:InterpolationMasses 180 1.3119592 insert eta(1295)width:InterpolationMasses 181 1.3280816 insert eta(1295)width:InterpolationMasses 182 1.3442041 insert eta(1295)width:InterpolationMasses 183 1.3603265 insert eta(1295)width:InterpolationMasses 184 1.376449 insert eta(1295)width:InterpolationMasses 185 1.3925714 insert eta(1295)width:InterpolationMasses 186 1.4086939 insert eta(1295)width:InterpolationMasses 187 1.4248163 insert eta(1295)width:InterpolationMasses 188 1.4409388 insert eta(1295)width:InterpolationMasses 189 1.4570612 insert eta(1295)width:InterpolationMasses 190 1.4731837 insert eta(1295)width:InterpolationMasses 191 1.4893061 insert eta(1295)width:InterpolationMasses 192 1.5054286 insert eta(1295)width:InterpolationMasses 193 1.521551 insert eta(1295)width:InterpolationMasses 194 1.5376735 insert eta(1295)width:InterpolationMasses 195 1.5537959 insert eta(1295)width:InterpolationMasses 196 1.5699184 insert eta(1295)width:InterpolationMasses 197 1.5860408 insert eta(1295)width:InterpolationMasses 198 1.6021633 insert eta(1295)width:InterpolationMasses 199 1.6182857 insert eta(1295)width:InterpolationMasses 200 1.6344082 insert eta(1295)width:InterpolationMasses 201 1.6505306 insert eta(1295)width:InterpolationMasses 202 1.6666531 insert eta(1295)width:InterpolationMasses 203 1.6827755 insert eta(1295)width:InterpolationMasses 204 1.698898 insert eta(1295)width:InterpolationMasses 205 1.7150204 insert eta(1295)width:InterpolationMasses 206 1.7311429 insert eta(1295)width:InterpolationMasses 207 1.7472653 insert eta(1295)width:InterpolationMasses 208 1.7633878 insert eta(1295)width:InterpolationMasses 209 1.7795102 insert eta(1295)width:InterpolationMasses 210 1.7956327 insert eta(1295)width:InterpolationMasses 211 1.8117551 insert eta(1295)width:InterpolationMasses 212 1.8278776 insert eta(1295)width:InterpolationMasses 213 1.844 insert eta(1295)width:InterpolationMasses 214 1.8601224 insert eta(1295)width:InterpolationMasses 215 1.8762449 insert eta(1295)width:InterpolationWidths 0 0.00048047153 insert eta(1295)width:InterpolationWidths 1 0.00063447164 insert eta(1295)width:InterpolationWidths 2 0.00082807509 insert eta(1295)width:InterpolationWidths 3 0.001074807 insert eta(1295)width:InterpolationWidths 4 0.0013952779 insert eta(1295)width:InterpolationWidths 5 0.0018214814 insert eta(1295)width:InterpolationWidths 6 0.0024020159 insert eta(1295)width:InterpolationWidths 7 0.0031955336 insert eta(1295)width:InterpolationWidths 8 0.0041149286 insert eta(1295)width:InterpolationWidths 9 0.0050669919 insert eta(1295)width:InterpolationWidths 10 0.0060224052 insert eta(1295)width:InterpolationWidths 11 0.0069628723 insert eta(1295)width:InterpolationWidths 12 0.0078768293 insert eta(1295)width:InterpolationWidths 13 0.0087565814 insert eta(1295)width:InterpolationWidths 14 0.0095982644 insert eta(1295)width:InterpolationWidths 15 0.010400487 insert eta(1295)width:InterpolationWidths 16 0.011161596 insert eta(1295)width:InterpolationWidths 17 0.011882471 insert eta(1295)width:InterpolationWidths 18 0.012563716 insert eta(1295)width:InterpolationWidths 19 0.01320678 insert eta(1295)width:InterpolationWidths 20 0.013813102 insert eta(1295)width:InterpolationWidths 21 0.01438418 insert eta(1295)width:InterpolationWidths 22 0.014921796 insert eta(1295)width:InterpolationWidths 23 0.015427391 insert eta(1295)width:InterpolationWidths 24 0.015902831 insert eta(1295)width:InterpolationWidths 25 0.016349451 insert eta(1295)width:InterpolationWidths 26 0.016768885 insert eta(1295)width:InterpolationWidths 27 0.017162628 insert eta(1295)width:InterpolationWidths 28 0.017531986 insert eta(1295)width:InterpolationWidths 29 0.017878286 insert eta(1295)width:InterpolationWidths 30 0.018202792 insert eta(1295)width:InterpolationWidths 31 0.018506641 insert eta(1295)width:InterpolationWidths 32 0.018790983 insert eta(1295)width:InterpolationWidths 33 0.019056872 insert eta(1295)width:InterpolationWidths 34 0.019305279 insert eta(1295)width:InterpolationWidths 35 0.019537152 insert eta(1295)width:InterpolationWidths 36 0.019753383 insert eta(1295)width:InterpolationWidths 37 0.019982936 insert eta(1295)width:InterpolationWidths 38 0.020142186 insert eta(1295)width:InterpolationWidths 39 0.020316114 insert eta(1295)width:InterpolationWidths 40 0.020477816 insert eta(1295)width:InterpolationWidths 41 0.020627423 insert eta(1295)width:InterpolationWidths 42 0.020765769 insert eta(1295)width:InterpolationWidths 43 0.020886257 insert eta(1295)width:InterpolationWidths 44 0.020991499 insert eta(1295)width:InterpolationWidths 45 0.021084179 insert eta(1295)width:InterpolationWidths 46 0.02116568 insert eta(1295)width:InterpolationWidths 47 0.021237006 insert eta(1295)width:InterpolationWidths 48 0.021298976 insert eta(1295)width:InterpolationWidths 49 0.02135229 insert eta(1295)width:InterpolationWidths 50 0.021397564 insert eta(1295)width:InterpolationWidths 51 0.02143535 insert eta(1295)width:InterpolationWidths 52 0.021466147 insert eta(1295)width:InterpolationWidths 53 0.021490412 insert eta(1295)width:InterpolationWidths 54 0.00048047153 insert eta(1295)width:InterpolationWidths 55 0.00063447164 insert eta(1295)width:InterpolationWidths 56 0.00082807509 insert eta(1295)width:InterpolationWidths 57 0.001074807 insert eta(1295)width:InterpolationWidths 58 0.0013952779 insert eta(1295)width:InterpolationWidths 59 0.0018214814 insert eta(1295)width:InterpolationWidths 60 0.0024020159 insert eta(1295)width:InterpolationWidths 61 0.0031955336 insert eta(1295)width:InterpolationWidths 62 0.0041149286 insert eta(1295)width:InterpolationWidths 63 0.0050669919 insert eta(1295)width:InterpolationWidths 64 0.0060224052 insert eta(1295)width:InterpolationWidths 65 0.0069628723 insert eta(1295)width:InterpolationWidths 66 0.0078768293 insert eta(1295)width:InterpolationWidths 67 0.0087565814 insert eta(1295)width:InterpolationWidths 68 0.0095982644 insert eta(1295)width:InterpolationWidths 69 0.010400487 insert eta(1295)width:InterpolationWidths 70 0.011161596 insert eta(1295)width:InterpolationWidths 71 0.011882471 insert eta(1295)width:InterpolationWidths 72 0.012563716 insert eta(1295)width:InterpolationWidths 73 0.01320678 insert eta(1295)width:InterpolationWidths 74 0.013813102 insert eta(1295)width:InterpolationWidths 75 0.01438418 insert eta(1295)width:InterpolationWidths 76 0.014921796 insert eta(1295)width:InterpolationWidths 77 0.015427391 insert eta(1295)width:InterpolationWidths 78 0.015902831 insert eta(1295)width:InterpolationWidths 79 0.016349451 insert eta(1295)width:InterpolationWidths 80 0.016768885 insert eta(1295)width:InterpolationWidths 81 0.017162628 insert eta(1295)width:InterpolationWidths 82 0.017531986 insert eta(1295)width:InterpolationWidths 83 0.017878286 insert eta(1295)width:InterpolationWidths 84 0.018202792 insert eta(1295)width:InterpolationWidths 85 0.018506641 insert eta(1295)width:InterpolationWidths 86 0.018790983 insert eta(1295)width:InterpolationWidths 87 0.019056872 insert eta(1295)width:InterpolationWidths 88 0.019305279 insert eta(1295)width:InterpolationWidths 89 0.019537152 insert eta(1295)width:InterpolationWidths 90 0.019753383 insert eta(1295)width:InterpolationWidths 91 0.019982936 insert eta(1295)width:InterpolationWidths 92 0.020142186 insert eta(1295)width:InterpolationWidths 93 0.020316114 insert eta(1295)width:InterpolationWidths 94 0.020477816 insert eta(1295)width:InterpolationWidths 95 0.020627423 insert eta(1295)width:InterpolationWidths 96 0.020765769 insert eta(1295)width:InterpolationWidths 97 0.020886257 insert eta(1295)width:InterpolationWidths 98 0.020991499 insert eta(1295)width:InterpolationWidths 99 0.021084179 insert eta(1295)width:InterpolationWidths 100 0.02116568 insert eta(1295)width:InterpolationWidths 101 0.021237006 insert eta(1295)width:InterpolationWidths 102 0.021298976 insert eta(1295)width:InterpolationWidths 103 0.02135229 insert eta(1295)width:InterpolationWidths 104 0.021397564 insert eta(1295)width:InterpolationWidths 105 0.02143535 insert eta(1295)width:InterpolationWidths 106 0.021466147 insert eta(1295)width:InterpolationWidths 107 0.021490412 insert eta(1295)width:InterpolationWidths 108 0.00052052045 insert eta(1295)width:InterpolationWidths 109 0.00068461117 insert eta(1295)width:InterpolationWidths 110 0.00089156871 insert eta(1295)width:InterpolationWidths 111 0.0011565697 insert eta(1295)width:InterpolationWidths 112 0.0015029011 insert eta(1295)width:InterpolationWidths 113 0.0019667382 insert eta(1295)width:InterpolationWidths 114 0.0026019394 insert eta(1295)width:InterpolationWidths 115 0.003444914 insert eta(1295)width:InterpolationWidths 116 0.0043750541 insert eta(1295)width:InterpolationWidths 117 0.0053289507 insert eta(1295)width:InterpolationWidths 118 0.0062804651 insert eta(1295)width:InterpolationWidths 119 0.0072132478 insert eta(1295)width:InterpolationWidths 120 0.0081173582 insert eta(1295)width:InterpolationWidths 121 0.0089867823 insert eta(1295)width:InterpolationWidths 122 0.0098174689 insert eta(1295)width:InterpolationWidths 123 0.010608487 insert eta(1295)width:InterpolationWidths 124 0.011359256 insert eta(1295)width:InterpolationWidths 125 0.012069355 insert eta(1295)width:InterpolationWidths 126 0.012740474 insert eta(1295)width:InterpolationWidths 127 0.013374365 insert eta(1295)width:InterpolationWidths 128 0.013971945 insert eta(1295)width:InterpolationWidths 129 0.014534817 insert eta(1295)width:InterpolationWidths 130 0.015064726 insert eta(1295)width:InterpolationWidths 131 0.015562195 insert eta(1295)width:InterpolationWidths 132 0.016030352 insert eta(1295)width:InterpolationWidths 133 0.016472534 insert eta(1295)width:InterpolationWidths 134 0.01688573 insert eta(1295)width:InterpolationWidths 135 0.017273746 insert eta(1295)width:InterpolationWidths 136 0.017638302 insert eta(1295)width:InterpolationWidths 137 0.017979403 insert eta(1295)width:InterpolationWidths 138 0.018299479 insert eta(1295)width:InterpolationWidths 139 0.018598121 insert eta(1295)width:InterpolationWidths 140 0.018879653 insert eta(1295)width:InterpolationWidths 141 0.019141684 insert eta(1295)width:InterpolationWidths 142 0.019386684 insert eta(1295)width:InterpolationWidths 143 0.019615225 insert eta(1295)width:InterpolationWidths 144 0.019828299 insert eta(1295)width:InterpolationWidths 145 0.020026921 insert eta(1295)width:InterpolationWidths 146 0.02020916 insert eta(1295)width:InterpolationWidths 147 0.02040489 insert eta(1295)width:InterpolationWidths 148 0.02054206 insert eta(1295)width:InterpolationWidths 149 0.020690521 insert eta(1295)width:InterpolationWidths 150 0.020824181 insert eta(1295)width:InterpolationWidths 151 0.020940772 insert eta(1295)width:InterpolationWidths 152 0.021043206 insert eta(1295)width:InterpolationWidths 153 0.021133502 insert eta(1295)width:InterpolationWidths 154 0.021212894 insert eta(1295)width:InterpolationWidths 155 0.021282319 insert eta(1295)width:InterpolationWidths 156 0.021342554 insert eta(1295)width:InterpolationWidths 157 0.021394273 insert eta(1295)width:InterpolationWidths 158 0.021438072 insert eta(1295)width:InterpolationWidths 159 0.021474487 insert eta(1295)width:InterpolationWidths 160 0.021504005 insert eta(1295)width:InterpolationWidths 161 0.021527074 insert eta(1295)width:InterpolationWidths 162 0.0041482139 insert eta(1295)width:InterpolationWidths 163 0.0047981496 insert eta(1295)width:InterpolationWidths 164 0.0054815757 insert eta(1295)width:InterpolationWidths 165 0.00619757 insert eta(1295)width:InterpolationWidths 166 0.006945396 insert eta(1295)width:InterpolationWidths 167 0.0077244657 insert eta(1295)width:InterpolationWidths 168 0.0085343081 insert eta(1295)width:InterpolationWidths 169 0.0093745416 insert eta(1295)width:InterpolationWidths 170 0.010244848 insert eta(1295)width:InterpolationWidths 171 0.01114495 insert eta(1295)width:InterpolationWidths 172 0.012074586 insert eta(1295)width:InterpolationWidths 173 0.013033488 insert eta(1295)width:InterpolationWidths 174 0.01402136 insert eta(1295)width:InterpolationWidths 175 0.015037852 insert eta(1295)width:InterpolationWidths 176 0.016082541 insert eta(1295)width:InterpolationWidths 177 0.017154905 insert eta(1295)width:InterpolationWidths 178 0.018254299 insert eta(1295)width:InterpolationWidths 179 0.019379937 insert eta(1295)width:InterpolationWidths 180 0.020530866 insert eta(1295)width:InterpolationWidths 181 0.021705948 insert eta(1295)width:InterpolationWidths 182 0.022903844 insert eta(1295)width:InterpolationWidths 183 0.024122999 insert eta(1295)width:InterpolationWidths 184 0.025361634 insert eta(1295)width:InterpolationWidths 185 0.026617741 insert eta(1295)width:InterpolationWidths 186 0.027889085 insert eta(1295)width:InterpolationWidths 187 0.029173212 insert eta(1295)width:InterpolationWidths 188 0.030467465 insert eta(1295)width:InterpolationWidths 189 0.031769009 insert eta(1295)width:InterpolationWidths 190 0.033074855 insert eta(1295)width:InterpolationWidths 191 0.034381899 insert eta(1295)width:InterpolationWidths 192 0.03568696 insert eta(1295)width:InterpolationWidths 193 0.036986824 insert eta(1295)width:InterpolationWidths 194 0.038278289 insert eta(1295)width:InterpolationWidths 195 0.039558209 insert eta(1295)width:InterpolationWidths 196 0.040823536 insert eta(1295)width:InterpolationWidths 197 0.042071363 insert eta(1295)width:InterpolationWidths 198 0.043298955 insert eta(1295)width:InterpolationWidths 199 0.044503783 insert eta(1295)width:InterpolationWidths 200 0.045683541 insert eta(1295)width:InterpolationWidths 201 0.046836169 insert eta(1295)width:InterpolationWidths 202 0.047959856 insert eta(1295)width:InterpolationWidths 203 0.04905305 insert eta(1295)width:InterpolationWidths 204 0.050114452 insert eta(1295)width:InterpolationWidths 205 0.051143012 insert eta(1295)width:InterpolationWidths 206 0.052137917 insert eta(1295)width:InterpolationWidths 207 0.053098578 insert eta(1295)width:InterpolationWidths 208 0.054024616 insert eta(1295)width:InterpolationWidths 209 0.054915841 insert eta(1295)width:InterpolationWidths 210 0.055772238 insert eta(1295)width:InterpolationWidths 211 0.056593944 insert eta(1295)width:InterpolationWidths 212 0.057381236 insert eta(1295)width:InterpolationWidths 213 0.05813451 insert eta(1295)width:InterpolationWidths 214 0.058854262 insert eta(1295)width:InterpolationWidths 215 0.059541078 insert eta(1295)width:NumberofEntries 0 54 insert eta(1295)width:NumberofEntries 1 108 insert eta(1295)width:NumberofEntries 2 162 insert eta(1295)width:NumberofEntries 3 216 newdef /Herwig/Particles/eta(1295):Width_generator eta(1295)width # create Herwig::GenericWidthGenerator eta(1475)width newdef eta(1475)width:Particle /Herwig/Particles/eta(1475) newdef eta(1475)width:Prefactor 0.999222 newdef eta(1475)width:BRNormalize 1 newdef eta(1475)width:BRMinimum 0.01 newdef eta(1475)width:Points 50 newdef eta(1475)width:InterpolationOrder 1 insert eta(1475)width:MEtype 0 2 insert eta(1475)width:MEtype 1 2 insert eta(1475)width:MEtype 2 2 insert eta(1475)width:MEtype 3 2 insert eta(1475)width:MEcode 0 0 insert eta(1475)width:MEcode 1 0 insert eta(1475)width:MEcode 2 0 insert eta(1475)width:MEcode 3 0 insert eta(1475)width:MEcoupling 0 0.94534 insert eta(1475)width:MEcoupling 1 0.94534 insert eta(1475)width:MEcoupling 2 1.07393 insert eta(1475)width:MEcoupling 3 1.07393 insert eta(1475)width:ModeOn 0 1 insert eta(1475)width:ModeOn 1 1 insert eta(1475)width:ModeOn 2 1 insert eta(1475)width:ModeOn 3 1 insert eta(1475)width:MinimumMasses 0 1.13534 insert eta(1475)width:MinimumMasses 1 1.13534 insert eta(1475)width:MinimumMasses 2 1.14365 insert eta(1475)width:MinimumMasses 3 1.14365 insert eta(1475)width:MEmass1 0 0.493677 insert eta(1475)width:MEmass1 1 0.493677 insert eta(1475)width:MEmass1 2 0.497648 insert eta(1475)width:MEmass1 3 0.497648 insert eta(1475)width:MEmass2 0 0.89166 insert eta(1475)width:MEmass2 1 0.89166 insert eta(1475)width:MEmass2 2 0.896 insert eta(1475)width:MEmass2 3 0.896 insert eta(1475)width:DecayModes 0 eta(1475)->K*+,K-; insert eta(1475)width:DecayModes 1 eta(1475)->K*-,K+; insert eta(1475)width:DecayModes 2 eta(1475)->K*0,Kbar0; insert eta(1475)width:DecayModes 3 eta(1475)->K*bar0,K0; insert eta(1475)width:InterpolationMasses 0 1.2877959 insert eta(1475)width:InterpolationMasses 1 1.294898 insert eta(1475)width:InterpolationMasses 2 1.302 insert eta(1475)width:InterpolationMasses 3 1.309102 insert eta(1475)width:InterpolationMasses 4 1.3162041 insert eta(1475)width:InterpolationMasses 5 1.3233061 insert eta(1475)width:InterpolationMasses 6 1.3304082 insert eta(1475)width:InterpolationMasses 7 1.3375102 insert eta(1475)width:InterpolationMasses 8 1.3446122 insert eta(1475)width:InterpolationMasses 9 1.3517143 insert eta(1475)width:InterpolationMasses 10 1.3588163 insert eta(1475)width:InterpolationMasses 11 1.3659184 insert eta(1475)width:InterpolationMasses 12 1.3730204 insert eta(1475)width:InterpolationMasses 13 1.3801224 insert eta(1475)width:InterpolationMasses 14 1.3872245 insert eta(1475)width:InterpolationMasses 15 1.3943265 insert eta(1475)width:InterpolationMasses 16 1.4014286 insert eta(1475)width:InterpolationMasses 17 1.4085306 insert eta(1475)width:InterpolationMasses 18 1.4156327 insert eta(1475)width:InterpolationMasses 19 1.4227347 insert eta(1475)width:InterpolationMasses 20 1.4298367 insert eta(1475)width:InterpolationMasses 21 1.4369388 insert eta(1475)width:InterpolationMasses 22 1.4440408 insert eta(1475)width:InterpolationMasses 23 1.4511429 insert eta(1475)width:InterpolationMasses 24 1.4582449 insert eta(1475)width:InterpolationMasses 25 1.4653469 insert eta(1475)width:InterpolationMasses 26 1.472449 insert eta(1475)width:InterpolationMasses 27 1.479551 insert eta(1475)width:InterpolationMasses 28 1.4866531 insert eta(1475)width:InterpolationMasses 29 1.4937551 insert eta(1475)width:InterpolationMasses 30 1.5008571 insert eta(1475)width:InterpolationMasses 31 1.5079592 insert eta(1475)width:InterpolationMasses 32 1.5150612 insert eta(1475)width:InterpolationMasses 33 1.5221633 insert eta(1475)width:InterpolationMasses 34 1.5292653 insert eta(1475)width:InterpolationMasses 35 1.5363673 insert eta(1475)width:InterpolationMasses 36 1.5434694 insert eta(1475)width:InterpolationMasses 37 1.5505714 insert eta(1475)width:InterpolationMasses 38 1.5576735 insert eta(1475)width:InterpolationMasses 39 1.5647755 insert eta(1475)width:InterpolationMasses 40 1.5718776 insert eta(1475)width:InterpolationMasses 41 1.5789796 insert eta(1475)width:InterpolationMasses 42 1.5860816 insert eta(1475)width:InterpolationMasses 43 1.5931837 insert eta(1475)width:InterpolationMasses 44 1.6002857 insert eta(1475)width:InterpolationMasses 45 1.6073878 insert eta(1475)width:InterpolationMasses 46 1.6144898 insert eta(1475)width:InterpolationMasses 47 1.6215918 insert eta(1475)width:InterpolationMasses 48 1.6286939 insert eta(1475)width:InterpolationMasses 49 1.6357959 insert eta(1475)width:InterpolationMasses 50 1.642898 insert eta(1475)width:InterpolationMasses 51 1.65 insert eta(1475)width:InterpolationMasses 52 1.657102 insert eta(1475)width:InterpolationMasses 53 1.6642041 insert eta(1475)width:InterpolationMasses 54 1.2877959 insert eta(1475)width:InterpolationMasses 55 1.294898 insert eta(1475)width:InterpolationMasses 56 1.302 insert eta(1475)width:InterpolationMasses 57 1.309102 insert eta(1475)width:InterpolationMasses 58 1.3162041 insert eta(1475)width:InterpolationMasses 59 1.3233061 insert eta(1475)width:InterpolationMasses 60 1.3304082 insert eta(1475)width:InterpolationMasses 61 1.3375102 insert eta(1475)width:InterpolationMasses 62 1.3446122 insert eta(1475)width:InterpolationMasses 63 1.3517143 insert eta(1475)width:InterpolationMasses 64 1.3588163 insert eta(1475)width:InterpolationMasses 65 1.3659184 insert eta(1475)width:InterpolationMasses 66 1.3730204 insert eta(1475)width:InterpolationMasses 67 1.3801224 insert eta(1475)width:InterpolationMasses 68 1.3872245 insert eta(1475)width:InterpolationMasses 69 1.3943265 insert eta(1475)width:InterpolationMasses 70 1.4014286 insert eta(1475)width:InterpolationMasses 71 1.4085306 insert eta(1475)width:InterpolationMasses 72 1.4156327 insert eta(1475)width:InterpolationMasses 73 1.4227347 insert eta(1475)width:InterpolationMasses 74 1.4298367 insert eta(1475)width:InterpolationMasses 75 1.4369388 insert eta(1475)width:InterpolationMasses 76 1.4440408 insert eta(1475)width:InterpolationMasses 77 1.4511429 insert eta(1475)width:InterpolationMasses 78 1.4582449 insert eta(1475)width:InterpolationMasses 79 1.4653469 insert eta(1475)width:InterpolationMasses 80 1.472449 insert eta(1475)width:InterpolationMasses 81 1.479551 insert eta(1475)width:InterpolationMasses 82 1.4866531 insert eta(1475)width:InterpolationMasses 83 1.4937551 insert eta(1475)width:InterpolationMasses 84 1.5008571 insert eta(1475)width:InterpolationMasses 85 1.5079592 insert eta(1475)width:InterpolationMasses 86 1.5150612 insert eta(1475)width:InterpolationMasses 87 1.5221633 insert eta(1475)width:InterpolationMasses 88 1.5292653 insert eta(1475)width:InterpolationMasses 89 1.5363673 insert eta(1475)width:InterpolationMasses 90 1.5434694 insert eta(1475)width:InterpolationMasses 91 1.5505714 insert eta(1475)width:InterpolationMasses 92 1.5576735 insert eta(1475)width:InterpolationMasses 93 1.5647755 insert eta(1475)width:InterpolationMasses 94 1.5718776 insert eta(1475)width:InterpolationMasses 95 1.5789796 insert eta(1475)width:InterpolationMasses 96 1.5860816 insert eta(1475)width:InterpolationMasses 97 1.5931837 insert eta(1475)width:InterpolationMasses 98 1.6002857 insert eta(1475)width:InterpolationMasses 99 1.6073878 insert eta(1475)width:InterpolationMasses 100 1.6144898 insert eta(1475)width:InterpolationMasses 101 1.6215918 insert eta(1475)width:InterpolationMasses 102 1.6286939 insert eta(1475)width:InterpolationMasses 103 1.6357959 insert eta(1475)width:InterpolationMasses 104 1.642898 insert eta(1475)width:InterpolationMasses 105 1.65 insert eta(1475)width:InterpolationMasses 106 1.657102 insert eta(1475)width:InterpolationMasses 107 1.6642041 insert eta(1475)width:InterpolationMasses 108 1.2877959 insert eta(1475)width:InterpolationMasses 109 1.294898 insert eta(1475)width:InterpolationMasses 110 1.302 insert eta(1475)width:InterpolationMasses 111 1.309102 insert eta(1475)width:InterpolationMasses 112 1.3162041 insert eta(1475)width:InterpolationMasses 113 1.3233061 insert eta(1475)width:InterpolationMasses 114 1.3304082 insert eta(1475)width:InterpolationMasses 115 1.3375102 insert eta(1475)width:InterpolationMasses 116 1.3446122 insert eta(1475)width:InterpolationMasses 117 1.3517143 insert eta(1475)width:InterpolationMasses 118 1.3588163 insert eta(1475)width:InterpolationMasses 119 1.3659184 insert eta(1475)width:InterpolationMasses 120 1.3730204 insert eta(1475)width:InterpolationMasses 121 1.3801224 insert eta(1475)width:InterpolationMasses 122 1.3872245 insert eta(1475)width:InterpolationMasses 123 1.3943265 insert eta(1475)width:InterpolationMasses 124 1.4014286 insert eta(1475)width:InterpolationMasses 125 1.4085306 insert eta(1475)width:InterpolationMasses 126 1.4156327 insert eta(1475)width:InterpolationMasses 127 1.4227347 insert eta(1475)width:InterpolationMasses 128 1.4298367 insert eta(1475)width:InterpolationMasses 129 1.4369388 insert eta(1475)width:InterpolationMasses 130 1.4440408 insert eta(1475)width:InterpolationMasses 131 1.4511429 insert eta(1475)width:InterpolationMasses 132 1.4582449 insert eta(1475)width:InterpolationMasses 133 1.4653469 insert eta(1475)width:InterpolationMasses 134 1.472449 insert eta(1475)width:InterpolationMasses 135 1.479551 insert eta(1475)width:InterpolationMasses 136 1.4866531 insert eta(1475)width:InterpolationMasses 137 1.4937551 insert eta(1475)width:InterpolationMasses 138 1.5008571 insert eta(1475)width:InterpolationMasses 139 1.5079592 insert eta(1475)width:InterpolationMasses 140 1.5150612 insert eta(1475)width:InterpolationMasses 141 1.5221633 insert eta(1475)width:InterpolationMasses 142 1.5292653 insert eta(1475)width:InterpolationMasses 143 1.5363673 insert eta(1475)width:InterpolationMasses 144 1.5434694 insert eta(1475)width:InterpolationMasses 145 1.5505714 insert eta(1475)width:InterpolationMasses 146 1.5576735 insert eta(1475)width:InterpolationMasses 147 1.5647755 insert eta(1475)width:InterpolationMasses 148 1.5718776 insert eta(1475)width:InterpolationMasses 149 1.5789796 insert eta(1475)width:InterpolationMasses 150 1.5860816 insert eta(1475)width:InterpolationMasses 151 1.5931837 insert eta(1475)width:InterpolationMasses 152 1.6002857 insert eta(1475)width:InterpolationMasses 153 1.6073878 insert eta(1475)width:InterpolationMasses 154 1.6144898 insert eta(1475)width:InterpolationMasses 155 1.6215918 insert eta(1475)width:InterpolationMasses 156 1.6286939 insert eta(1475)width:InterpolationMasses 157 1.6357959 insert eta(1475)width:InterpolationMasses 158 1.642898 insert eta(1475)width:InterpolationMasses 159 1.65 insert eta(1475)width:InterpolationMasses 160 1.657102 insert eta(1475)width:InterpolationMasses 161 1.6642041 insert eta(1475)width:InterpolationMasses 162 1.2877959 insert eta(1475)width:InterpolationMasses 163 1.294898 insert eta(1475)width:InterpolationMasses 164 1.302 insert eta(1475)width:InterpolationMasses 165 1.309102 insert eta(1475)width:InterpolationMasses 166 1.3162041 insert eta(1475)width:InterpolationMasses 167 1.3233061 insert eta(1475)width:InterpolationMasses 168 1.3304082 insert eta(1475)width:InterpolationMasses 169 1.3375102 insert eta(1475)width:InterpolationMasses 170 1.3446122 insert eta(1475)width:InterpolationMasses 171 1.3517143 insert eta(1475)width:InterpolationMasses 172 1.3588163 insert eta(1475)width:InterpolationMasses 173 1.3659184 insert eta(1475)width:InterpolationMasses 174 1.3730204 insert eta(1475)width:InterpolationMasses 175 1.3801224 insert eta(1475)width:InterpolationMasses 176 1.3872245 insert eta(1475)width:InterpolationMasses 177 1.3943265 insert eta(1475)width:InterpolationMasses 178 1.4014286 insert eta(1475)width:InterpolationMasses 179 1.4085306 insert eta(1475)width:InterpolationMasses 180 1.4156327 insert eta(1475)width:InterpolationMasses 181 1.4227347 insert eta(1475)width:InterpolationMasses 182 1.4298367 insert eta(1475)width:InterpolationMasses 183 1.4369388 insert eta(1475)width:InterpolationMasses 184 1.4440408 insert eta(1475)width:InterpolationMasses 185 1.4511429 insert eta(1475)width:InterpolationMasses 186 1.4582449 insert eta(1475)width:InterpolationMasses 187 1.4653469 insert eta(1475)width:InterpolationMasses 188 1.472449 insert eta(1475)width:InterpolationMasses 189 1.479551 insert eta(1475)width:InterpolationMasses 190 1.4866531 insert eta(1475)width:InterpolationMasses 191 1.4937551 insert eta(1475)width:InterpolationMasses 192 1.5008571 insert eta(1475)width:InterpolationMasses 193 1.5079592 insert eta(1475)width:InterpolationMasses 194 1.5150612 insert eta(1475)width:InterpolationMasses 195 1.5221633 insert eta(1475)width:InterpolationMasses 196 1.5292653 insert eta(1475)width:InterpolationMasses 197 1.5363673 insert eta(1475)width:InterpolationMasses 198 1.5434694 insert eta(1475)width:InterpolationMasses 199 1.5505714 insert eta(1475)width:InterpolationMasses 200 1.5576735 insert eta(1475)width:InterpolationMasses 201 1.5647755 insert eta(1475)width:InterpolationMasses 202 1.5718776 insert eta(1475)width:InterpolationMasses 203 1.5789796 insert eta(1475)width:InterpolationMasses 204 1.5860816 insert eta(1475)width:InterpolationMasses 205 1.5931837 insert eta(1475)width:InterpolationMasses 206 1.6002857 insert eta(1475)width:InterpolationMasses 207 1.6073878 insert eta(1475)width:InterpolationMasses 208 1.6144898 insert eta(1475)width:InterpolationMasses 209 1.6215918 insert eta(1475)width:InterpolationMasses 210 1.6286939 insert eta(1475)width:InterpolationMasses 211 1.6357959 insert eta(1475)width:InterpolationMasses 212 1.642898 insert eta(1475)width:InterpolationMasses 213 1.65 insert eta(1475)width:InterpolationMasses 214 1.657102 insert eta(1475)width:InterpolationMasses 215 1.6642041 insert eta(1475)width:InterpolationWidths 0 0.00011159783 insert eta(1475)width:InterpolationWidths 1 0.00014018012 insert eta(1475)width:InterpolationWidths 2 0.0001752709 insert eta(1475)width:InterpolationWidths 3 0.00021833719 insert eta(1475)width:InterpolationWidths 4 0.00027123291 insert eta(1475)width:InterpolationWidths 5 0.00033633249 insert eta(1475)width:InterpolationWidths 6 0.0004167243 insert eta(1475)width:InterpolationWidths 7 0.00051649573 insert eta(1475)width:InterpolationWidths 8 0.00064115983 insert eta(1475)width:InterpolationWidths 9 0.00079829653 insert eta(1475)width:InterpolationWidths 10 0.00099849231 insert eta(1475)width:InterpolationWidths 11 0.001256594 insert eta(1475)width:InterpolationWidths 12 0.0015929096 insert eta(1475)width:InterpolationWidths 13 0.0020330044 insert eta(1475)width:InterpolationWidths 14 0.0026039443 insert eta(1475)width:InterpolationWidths 15 0.0033275002 insert eta(1475)width:InterpolationWidths 16 0.0042157023 insert eta(1475)width:InterpolationWidths 17 0.0052718968 insert eta(1475)width:InterpolationWidths 18 0.0064943106 insert eta(1475)width:InterpolationWidths 19 0.0078789392 insert eta(1475)width:InterpolationWidths 20 0.0094211328 insert eta(1475)width:InterpolationWidths 21 0.011116317 insert eta(1475)width:InterpolationWidths 22 0.012960272 insert eta(1475)width:InterpolationWidths 23 0.014949221 insert eta(1475)width:InterpolationWidths 24 0.017079818 insert eta(1475)width:InterpolationWidths 25 0.019349125 insert eta(1475)width:InterpolationWidths 26 0.021754558 insert eta(1475)width:InterpolationWidths 27 0.024293851 insert eta(1475)width:InterpolationWidths 28 0.02696501 insert eta(1475)width:InterpolationWidths 29 0.02976628 insert eta(1475)width:InterpolationWidths 30 0.032696114 insert eta(1475)width:InterpolationWidths 31 0.035753148 insert eta(1475)width:InterpolationWidths 32 0.038936176 insert eta(1475)width:InterpolationWidths 33 0.042244133 insert eta(1475)width:InterpolationWidths 34 0.045676079 insert eta(1475)width:InterpolationWidths 35 0.049231184 insert eta(1475)width:InterpolationWidths 36 0.052908713 insert eta(1475)width:InterpolationWidths 37 0.056708022 insert eta(1475)width:InterpolationWidths 38 0.060628544 insert eta(1475)width:InterpolationWidths 39 0.064669783 insert eta(1475)width:InterpolationWidths 40 0.068831307 insert eta(1475)width:InterpolationWidths 41 0.07311274 insert eta(1475)width:InterpolationWidths 42 0.077513761 insert eta(1475)width:InterpolationWidths 43 0.082034094 insert eta(1475)width:InterpolationWidths 44 0.086673509 insert eta(1475)width:InterpolationWidths 45 0.091431814 insert eta(1475)width:InterpolationWidths 46 0.096308854 insert eta(1475)width:InterpolationWidths 47 0.10130451 insert eta(1475)width:InterpolationWidths 48 0.10641869 insert eta(1475)width:InterpolationWidths 49 0.11165132 insert eta(1475)width:InterpolationWidths 50 0.11700239 insert eta(1475)width:InterpolationWidths 51 0.12247187 insert eta(1475)width:InterpolationWidths 52 0.12805978 insert eta(1475)width:InterpolationWidths 53 0.13376615 insert eta(1475)width:InterpolationWidths 54 0.00011159783 insert eta(1475)width:InterpolationWidths 55 0.00014018012 insert eta(1475)width:InterpolationWidths 56 0.0001752709 insert eta(1475)width:InterpolationWidths 57 0.00021833719 insert eta(1475)width:InterpolationWidths 58 0.00027123291 insert eta(1475)width:InterpolationWidths 59 0.00033633249 insert eta(1475)width:InterpolationWidths 60 0.0004167243 insert eta(1475)width:InterpolationWidths 61 0.00051649573 insert eta(1475)width:InterpolationWidths 62 0.00064115983 insert eta(1475)width:InterpolationWidths 63 0.00079829653 insert eta(1475)width:InterpolationWidths 64 0.00099849231 insert eta(1475)width:InterpolationWidths 65 0.001256594 insert eta(1475)width:InterpolationWidths 66 0.0015929096 insert eta(1475)width:InterpolationWidths 67 0.0020330044 insert eta(1475)width:InterpolationWidths 68 0.0026039443 insert eta(1475)width:InterpolationWidths 69 0.0033275002 insert eta(1475)width:InterpolationWidths 70 0.0042157023 insert eta(1475)width:InterpolationWidths 71 0.0052718968 insert eta(1475)width:InterpolationWidths 72 0.0064943106 insert eta(1475)width:InterpolationWidths 73 0.0078789392 insert eta(1475)width:InterpolationWidths 74 0.0094211328 insert eta(1475)width:InterpolationWidths 75 0.011116317 insert eta(1475)width:InterpolationWidths 76 0.012960272 insert eta(1475)width:InterpolationWidths 77 0.014949221 insert eta(1475)width:InterpolationWidths 78 0.017079818 insert eta(1475)width:InterpolationWidths 79 0.019349125 insert eta(1475)width:InterpolationWidths 80 0.021754558 insert eta(1475)width:InterpolationWidths 81 0.024293851 insert eta(1475)width:InterpolationWidths 82 0.02696501 insert eta(1475)width:InterpolationWidths 83 0.02976628 insert eta(1475)width:InterpolationWidths 84 0.032696114 insert eta(1475)width:InterpolationWidths 85 0.035753148 insert eta(1475)width:InterpolationWidths 86 0.038936176 insert eta(1475)width:InterpolationWidths 87 0.042244133 insert eta(1475)width:InterpolationWidths 88 0.045676079 insert eta(1475)width:InterpolationWidths 89 0.049231184 insert eta(1475)width:InterpolationWidths 90 0.052908713 insert eta(1475)width:InterpolationWidths 91 0.056708022 insert eta(1475)width:InterpolationWidths 92 0.060628544 insert eta(1475)width:InterpolationWidths 93 0.064669783 insert eta(1475)width:InterpolationWidths 94 0.068831307 insert eta(1475)width:InterpolationWidths 95 0.07311274 insert eta(1475)width:InterpolationWidths 96 0.077513761 insert eta(1475)width:InterpolationWidths 97 0.082034094 insert eta(1475)width:InterpolationWidths 98 0.086673509 insert eta(1475)width:InterpolationWidths 99 0.091431814 insert eta(1475)width:InterpolationWidths 100 0.096308854 insert eta(1475)width:InterpolationWidths 101 0.10130451 insert eta(1475)width:InterpolationWidths 102 0.10641869 insert eta(1475)width:InterpolationWidths 103 0.11165132 insert eta(1475)width:InterpolationWidths 104 0.11700239 insert eta(1475)width:InterpolationWidths 105 0.12247187 insert eta(1475)width:InterpolationWidths 106 0.12805978 insert eta(1475)width:InterpolationWidths 107 0.13376615 insert eta(1475)width:InterpolationWidths 108 9.1821915e-05 insert eta(1475)width:InterpolationWidths 109 0.00011536927 insert eta(1475)width:InterpolationWidths 110 0.0001441879 insert eta(1475)width:InterpolationWidths 111 0.00017941371 insert eta(1475)width:InterpolationWidths 112 0.00022246084 insert eta(1475)width:InterpolationWidths 113 0.00027511009 insert eta(1475)width:InterpolationWidths 114 0.00033963393 insert eta(1475)width:InterpolationWidths 115 0.0004189767 insert eta(1475)width:InterpolationWidths 116 0.00051701983 insert eta(1475)width:InterpolationWidths 117 0.00063897843 insert eta(1475)width:InterpolationWidths 118 0.00079199909 insert eta(1475)width:InterpolationWidths 119 0.00098604732 insert eta(1475)width:InterpolationWidths 120 0.001235131 insert eta(1475)width:InterpolationWidths 121 0.0015586129 insert eta(1475)width:InterpolationWidths 122 0.0019814731 insert eta(1475)width:InterpolationWidths 123 0.0025312983 insert eta(1475)width:InterpolationWidths 124 0.0032315839 insert eta(1475)width:InterpolationWidths 125 0.0040962672 insert eta(1475)width:InterpolationWidths 126 0.0051299063 insert eta(1475)width:InterpolationWidths 127 0.0063312179 insert eta(1475)width:InterpolationWidths 128 0.0076962718 insert eta(1475)width:InterpolationWidths 129 0.0092203143 insert eta(1475)width:InterpolationWidths 130 0.010898609 insert eta(1475)width:InterpolationWidths 131 0.012726768 insert eta(1475)width:InterpolationWidths 132 0.014700856 insert eta(1475)width:InterpolationWidths 133 0.016817391 insert eta(1475)width:InterpolationWidths 134 0.019073311 insert eta(1475)width:InterpolationWidths 135 0.021465928 insert eta(1475)width:InterpolationWidths 136 0.023992885 insert eta(1475)width:InterpolationWidths 137 0.026652106 insert eta(1475)width:InterpolationWidths 138 0.029441768 insert eta(1475)width:InterpolationWidths 139 0.032360263 insert eta(1475)width:InterpolationWidths 140 0.03540617 insert eta(1475)width:InterpolationWidths 141 0.038578235 insert eta(1475)width:InterpolationWidths 142 0.04187535 insert eta(1475)width:InterpolationWidths 143 0.045296534 insert eta(1475)width:InterpolationWidths 144 0.048840921 insert eta(1475)width:InterpolationWidths 145 0.052507744 insert eta(1475)width:InterpolationWidths 146 0.056296328 insert eta(1475)width:InterpolationWidths 147 0.060206078 insert eta(1475)width:InterpolationWidths 148 0.064236472 insert eta(1475)width:InterpolationWidths 149 0.068387054 insert eta(1475)width:InterpolationWidths 150 0.072657427 insert eta(1475)width:InterpolationWidths 151 0.077047247 insert eta(1475)width:InterpolationWidths 152 0.081556219 insert eta(1475)width:InterpolationWidths 153 0.086184094 insert eta(1475)width:InterpolationWidths 154 0.090930663 insert eta(1475)width:InterpolationWidths 155 0.095795754 insert eta(1475)width:InterpolationWidths 156 0.10077923 insert eta(1475)width:InterpolationWidths 157 0.10588099 insert eta(1475)width:InterpolationWidths 158 0.11110095 insert eta(1475)width:InterpolationWidths 159 0.11643906 insert eta(1475)width:InterpolationWidths 160 0.1218953 insert eta(1475)width:InterpolationWidths 161 0.12746968 insert eta(1475)width:InterpolationWidths 162 9.1821915e-05 insert eta(1475)width:InterpolationWidths 163 0.00011536927 insert eta(1475)width:InterpolationWidths 164 0.0001441879 insert eta(1475)width:InterpolationWidths 165 0.00017941371 insert eta(1475)width:InterpolationWidths 166 0.00022246084 insert eta(1475)width:InterpolationWidths 167 0.00027511009 insert eta(1475)width:InterpolationWidths 168 0.00033963393 insert eta(1475)width:InterpolationWidths 169 0.0004189767 insert eta(1475)width:InterpolationWidths 170 0.00051701983 insert eta(1475)width:InterpolationWidths 171 0.00063897843 insert eta(1475)width:InterpolationWidths 172 0.00079199909 insert eta(1475)width:InterpolationWidths 173 0.00098604732 insert eta(1475)width:InterpolationWidths 174 0.001235131 insert eta(1475)width:InterpolationWidths 175 0.0015586129 insert eta(1475)width:InterpolationWidths 176 0.0019814731 insert eta(1475)width:InterpolationWidths 177 0.0025312983 insert eta(1475)width:InterpolationWidths 178 0.0032315839 insert eta(1475)width:InterpolationWidths 179 0.0040962672 insert eta(1475)width:InterpolationWidths 180 0.0051299063 insert eta(1475)width:InterpolationWidths 181 0.0063312179 insert eta(1475)width:InterpolationWidths 182 0.0076962718 insert eta(1475)width:InterpolationWidths 183 0.0092203143 insert eta(1475)width:InterpolationWidths 184 0.010898609 insert eta(1475)width:InterpolationWidths 185 0.012726768 insert eta(1475)width:InterpolationWidths 186 0.014700856 insert eta(1475)width:InterpolationWidths 187 0.016817391 insert eta(1475)width:InterpolationWidths 188 0.019073311 insert eta(1475)width:InterpolationWidths 189 0.021465928 insert eta(1475)width:InterpolationWidths 190 0.023992885 insert eta(1475)width:InterpolationWidths 191 0.026652106 insert eta(1475)width:InterpolationWidths 192 0.029441768 insert eta(1475)width:InterpolationWidths 193 0.032360263 insert eta(1475)width:InterpolationWidths 194 0.03540617 insert eta(1475)width:InterpolationWidths 195 0.038578235 insert eta(1475)width:InterpolationWidths 196 0.04187535 insert eta(1475)width:InterpolationWidths 197 0.045296534 insert eta(1475)width:InterpolationWidths 198 0.048840921 insert eta(1475)width:InterpolationWidths 199 0.052507744 insert eta(1475)width:InterpolationWidths 200 0.056296328 insert eta(1475)width:InterpolationWidths 201 0.060206078 insert eta(1475)width:InterpolationWidths 202 0.064236472 insert eta(1475)width:InterpolationWidths 203 0.068387054 insert eta(1475)width:InterpolationWidths 204 0.072657427 insert eta(1475)width:InterpolationWidths 205 0.077047247 insert eta(1475)width:InterpolationWidths 206 0.081556219 insert eta(1475)width:InterpolationWidths 207 0.086184094 insert eta(1475)width:InterpolationWidths 208 0.090930663 insert eta(1475)width:InterpolationWidths 209 0.095795754 insert eta(1475)width:InterpolationWidths 210 0.10077923 insert eta(1475)width:InterpolationWidths 211 0.10588099 insert eta(1475)width:InterpolationWidths 212 0.11110095 insert eta(1475)width:InterpolationWidths 213 0.11643906 insert eta(1475)width:InterpolationWidths 214 0.1218953 insert eta(1475)width:InterpolationWidths 215 0.12746968 insert eta(1475)width:NumberofEntries 0 54 insert eta(1475)width:NumberofEntries 1 108 insert eta(1475)width:NumberofEntries 2 162 insert eta(1475)width:NumberofEntries 3 216 newdef /Herwig/Particles/eta(1475):Width_generator eta(1475)width # create Herwig::GenericWidthGenerator K'0width newdef K'0width:Particle /Herwig/Particles/K'0 newdef K'0width:Prefactor 0.99968 newdef K'0width:BRNormalize 1 newdef K'0width:BRMinimum 0.01 newdef K'0width:Points 50 newdef K'0width:InterpolationOrder 1 insert K'0width:MEtype 0 2 insert K'0width:MEtype 1 2 insert K'0width:MEtype 2 2 insert K'0width:MEtype 3 2 insert K'0width:MEtype 4 2 insert K'0width:MEtype 5 2 insert K'0width:MEcode 0 0 insert K'0width:MEcode 1 0 insert K'0width:MEcode 2 0 insert K'0width:MEcode 3 0 insert K'0width:MEcode 4 0 insert K'0width:MEcode 5 0 insert K'0width:MEcoupling 0 0.986244 insert K'0width:MEcoupling 1 0.987341 insert K'0width:MEcoupling 2 0.989377 insert K'0width:MEcoupling 3 1.00313 insert K'0width:MEcoupling 4 0.998126 insert K'0width:MEcoupling 5 1.01787 insert K'0width:ModeOn 0 1 insert K'0width:ModeOn 1 1 insert K'0width:ModeOn 2 1 insert K'0width:ModeOn 3 1 insert K'0width:ModeOn 4 1 insert K'0width:ModeOn 5 1 insert K'0width:MinimumMasses 0 0.78123 insert K'0width:MinimumMasses 1 0.78357 insert K'0width:MinimumMasses 2 0.778978 insert K'0width:MinimumMasses 3 0.780978 insert K'0width:MinimumMasses 4 0.869177 insert K'0width:MinimumMasses 5 0.873148 insert K'0width:MEmass1 0 0.13957 insert K'0width:MEmass1 1 1.414 insert K'0width:MEmass1 2 1.414 insert K'0width:MEmass1 3 0.134978 insert K'0width:MEmass1 4 0.493677 insert K'0width:MEmass1 5 0.497648 insert K'0width:MEmass2 0 0.89166 insert K'0width:MEmass2 1 0.13957 insert K'0width:MEmass2 2 0.134978 insert K'0width:MEmass2 3 0.896 insert K'0width:MEmass2 4 0.7755 insert K'0width:MEmass2 5 0.7755 insert K'0width:DecayModes 0 K'0->K*+,pi-; insert K'0width:DecayModes 1 K'0->K*_0+,pi-; insert K'0width:DecayModes 2 K'0->K*_00,pi0; insert K'0width:DecayModes 3 K'0->K*0,pi0; insert K'0width:DecayModes 4 K'0->K+,rho-; insert K'0width:DecayModes 5 K'0->K0,rho0; insert K'0width:InterpolationMasses 0 1.1787755 insert K'0width:InterpolationMasses 1 1.1893878 insert K'0width:InterpolationMasses 2 1.2 insert K'0width:InterpolationMasses 3 1.2106122 insert K'0width:InterpolationMasses 4 1.2212245 insert K'0width:InterpolationMasses 5 1.2318367 insert K'0width:InterpolationMasses 6 1.242449 insert K'0width:InterpolationMasses 7 1.2530612 insert K'0width:InterpolationMasses 8 1.2636735 insert K'0width:InterpolationMasses 9 1.2742857 insert K'0width:InterpolationMasses 10 1.284898 insert K'0width:InterpolationMasses 11 1.2955102 insert K'0width:InterpolationMasses 12 1.3061224 insert K'0width:InterpolationMasses 13 1.3167347 insert K'0width:InterpolationMasses 14 1.3273469 insert K'0width:InterpolationMasses 15 1.3379592 insert K'0width:InterpolationMasses 16 1.3485714 insert K'0width:InterpolationMasses 17 1.3591837 insert K'0width:InterpolationMasses 18 1.3697959 insert K'0width:InterpolationMasses 19 1.3804082 insert K'0width:InterpolationMasses 20 1.3910204 insert K'0width:InterpolationMasses 21 1.4016327 insert K'0width:InterpolationMasses 22 1.4122449 insert K'0width:InterpolationMasses 23 1.4228571 insert K'0width:InterpolationMasses 24 1.4334694 insert K'0width:InterpolationMasses 25 1.4440816 insert K'0width:InterpolationMasses 26 1.4546939 insert K'0width:InterpolationMasses 27 1.4653061 insert K'0width:InterpolationMasses 28 1.4759184 insert K'0width:InterpolationMasses 29 1.4865306 insert K'0width:InterpolationMasses 30 1.4971429 insert K'0width:InterpolationMasses 31 1.5077551 insert K'0width:InterpolationMasses 32 1.5183673 insert K'0width:InterpolationMasses 33 1.5289796 insert K'0width:InterpolationMasses 34 1.5395918 insert K'0width:InterpolationMasses 35 1.5502041 insert K'0width:InterpolationMasses 36 1.5608163 insert K'0width:InterpolationMasses 37 1.5714286 insert K'0width:InterpolationMasses 38 1.5820408 insert K'0width:InterpolationMasses 39 1.5926531 insert K'0width:InterpolationMasses 40 1.6032653 insert K'0width:InterpolationMasses 41 1.6138776 insert K'0width:InterpolationMasses 42 1.6244898 insert K'0width:InterpolationMasses 43 1.635102 insert K'0width:InterpolationMasses 44 1.6457143 insert K'0width:InterpolationMasses 45 1.6563265 insert K'0width:InterpolationMasses 46 1.6669388 insert K'0width:InterpolationMasses 47 1.677551 insert K'0width:InterpolationMasses 48 1.6881633 insert K'0width:InterpolationMasses 49 1.6987755 insert K'0width:InterpolationMasses 50 1.7093878 insert K'0width:InterpolationMasses 51 1.72 insert K'0width:InterpolationMasses 52 1.7306122 insert K'0width:InterpolationMasses 53 1.7412245 insert K'0width:InterpolationMasses 54 1.1787755 insert K'0width:InterpolationMasses 55 1.1893878 insert K'0width:InterpolationMasses 56 1.2 insert K'0width:InterpolationMasses 57 1.2106122 insert K'0width:InterpolationMasses 58 1.2212245 insert K'0width:InterpolationMasses 59 1.2318367 insert K'0width:InterpolationMasses 60 1.242449 insert K'0width:InterpolationMasses 61 1.2530612 insert K'0width:InterpolationMasses 62 1.2636735 insert K'0width:InterpolationMasses 63 1.2742857 insert K'0width:InterpolationMasses 64 1.284898 insert K'0width:InterpolationMasses 65 1.2955102 insert K'0width:InterpolationMasses 66 1.3061224 insert K'0width:InterpolationMasses 67 1.3167347 insert K'0width:InterpolationMasses 68 1.3273469 insert K'0width:InterpolationMasses 69 1.3379592 insert K'0width:InterpolationMasses 70 1.3485714 insert K'0width:InterpolationMasses 71 1.3591837 insert K'0width:InterpolationMasses 72 1.3697959 insert K'0width:InterpolationMasses 73 1.3804082 insert K'0width:InterpolationMasses 74 1.3910204 insert K'0width:InterpolationMasses 75 1.4016327 insert K'0width:InterpolationMasses 76 1.4122449 insert K'0width:InterpolationMasses 77 1.4228571 insert K'0width:InterpolationMasses 78 1.4334694 insert K'0width:InterpolationMasses 79 1.4440816 insert K'0width:InterpolationMasses 80 1.4546939 insert K'0width:InterpolationMasses 81 1.4653061 insert K'0width:InterpolationMasses 82 1.4759184 insert K'0width:InterpolationMasses 83 1.4865306 insert K'0width:InterpolationMasses 84 1.4971429 insert K'0width:InterpolationMasses 85 1.5077551 insert K'0width:InterpolationMasses 86 1.5183673 insert K'0width:InterpolationMasses 87 1.5289796 insert K'0width:InterpolationMasses 88 1.5395918 insert K'0width:InterpolationMasses 89 1.5502041 insert K'0width:InterpolationMasses 90 1.5608163 insert K'0width:InterpolationMasses 91 1.5714286 insert K'0width:InterpolationMasses 92 1.5820408 insert K'0width:InterpolationMasses 93 1.5926531 insert K'0width:InterpolationMasses 94 1.6032653 insert K'0width:InterpolationMasses 95 1.6138776 insert K'0width:InterpolationMasses 96 1.6244898 insert K'0width:InterpolationMasses 97 1.635102 insert K'0width:InterpolationMasses 98 1.6457143 insert K'0width:InterpolationMasses 99 1.6563265 insert K'0width:InterpolationMasses 100 1.6669388 insert K'0width:InterpolationMasses 101 1.677551 insert K'0width:InterpolationMasses 102 1.6881633 insert K'0width:InterpolationMasses 103 1.6987755 insert K'0width:InterpolationMasses 104 1.7093878 insert K'0width:InterpolationMasses 105 1.72 insert K'0width:InterpolationMasses 106 1.7306122 insert K'0width:InterpolationMasses 107 1.7412245 insert K'0width:InterpolationMasses 108 1.1787755 insert K'0width:InterpolationMasses 109 1.1893878 insert K'0width:InterpolationMasses 110 1.2 insert K'0width:InterpolationMasses 111 1.2106122 insert K'0width:InterpolationMasses 112 1.2212245 insert K'0width:InterpolationMasses 113 1.2318367 insert K'0width:InterpolationMasses 114 1.242449 insert K'0width:InterpolationMasses 115 1.2530612 insert K'0width:InterpolationMasses 116 1.2636735 insert K'0width:InterpolationMasses 117 1.2742857 insert K'0width:InterpolationMasses 118 1.284898 insert K'0width:InterpolationMasses 119 1.2955102 insert K'0width:InterpolationMasses 120 1.3061224 insert K'0width:InterpolationMasses 121 1.3167347 insert K'0width:InterpolationMasses 122 1.3273469 insert K'0width:InterpolationMasses 123 1.3379592 insert K'0width:InterpolationMasses 124 1.3485714 insert K'0width:InterpolationMasses 125 1.3591837 insert K'0width:InterpolationMasses 126 1.3697959 insert K'0width:InterpolationMasses 127 1.3804082 insert K'0width:InterpolationMasses 128 1.3910204 insert K'0width:InterpolationMasses 129 1.4016327 insert K'0width:InterpolationMasses 130 1.4122449 insert K'0width:InterpolationMasses 131 1.4228571 insert K'0width:InterpolationMasses 132 1.4334694 insert K'0width:InterpolationMasses 133 1.4440816 insert K'0width:InterpolationMasses 134 1.4546939 insert K'0width:InterpolationMasses 135 1.4653061 insert K'0width:InterpolationMasses 136 1.4759184 insert K'0width:InterpolationMasses 137 1.4865306 insert K'0width:InterpolationMasses 138 1.4971429 insert K'0width:InterpolationMasses 139 1.5077551 insert K'0width:InterpolationMasses 140 1.5183673 insert K'0width:InterpolationMasses 141 1.5289796 insert K'0width:InterpolationMasses 142 1.5395918 insert K'0width:InterpolationMasses 143 1.5502041 insert K'0width:InterpolationMasses 144 1.5608163 insert K'0width:InterpolationMasses 145 1.5714286 insert K'0width:InterpolationMasses 146 1.5820408 insert K'0width:InterpolationMasses 147 1.5926531 insert K'0width:InterpolationMasses 148 1.6032653 insert K'0width:InterpolationMasses 149 1.6138776 insert K'0width:InterpolationMasses 150 1.6244898 insert K'0width:InterpolationMasses 151 1.635102 insert K'0width:InterpolationMasses 152 1.6457143 insert K'0width:InterpolationMasses 153 1.6563265 insert K'0width:InterpolationMasses 154 1.6669388 insert K'0width:InterpolationMasses 155 1.677551 insert K'0width:InterpolationMasses 156 1.6881633 insert K'0width:InterpolationMasses 157 1.6987755 insert K'0width:InterpolationMasses 158 1.7093878 insert K'0width:InterpolationMasses 159 1.72 insert K'0width:InterpolationMasses 160 1.7306122 insert K'0width:InterpolationMasses 161 1.7412245 insert K'0width:InterpolationMasses 162 1.1787755 insert K'0width:InterpolationMasses 163 1.1893878 insert K'0width:InterpolationMasses 164 1.2 insert K'0width:InterpolationMasses 165 1.2106122 insert K'0width:InterpolationMasses 166 1.2212245 insert K'0width:InterpolationMasses 167 1.2318367 insert K'0width:InterpolationMasses 168 1.242449 insert K'0width:InterpolationMasses 169 1.2530612 insert K'0width:InterpolationMasses 170 1.2636735 insert K'0width:InterpolationMasses 171 1.2742857 insert K'0width:InterpolationMasses 172 1.284898 insert K'0width:InterpolationMasses 173 1.2955102 insert K'0width:InterpolationMasses 174 1.3061224 insert K'0width:InterpolationMasses 175 1.3167347 insert K'0width:InterpolationMasses 176 1.3273469 insert K'0width:InterpolationMasses 177 1.3379592 insert K'0width:InterpolationMasses 178 1.3485714 insert K'0width:InterpolationMasses 179 1.3591837 insert K'0width:InterpolationMasses 180 1.3697959 insert K'0width:InterpolationMasses 181 1.3804082 insert K'0width:InterpolationMasses 182 1.3910204 insert K'0width:InterpolationMasses 183 1.4016327 insert K'0width:InterpolationMasses 184 1.4122449 insert K'0width:InterpolationMasses 185 1.4228571 insert K'0width:InterpolationMasses 186 1.4334694 insert K'0width:InterpolationMasses 187 1.4440816 insert K'0width:InterpolationMasses 188 1.4546939 insert K'0width:InterpolationMasses 189 1.4653061 insert K'0width:InterpolationMasses 190 1.4759184 insert K'0width:InterpolationMasses 191 1.4865306 insert K'0width:InterpolationMasses 192 1.4971429 insert K'0width:InterpolationMasses 193 1.5077551 insert K'0width:InterpolationMasses 194 1.5183673 insert K'0width:InterpolationMasses 195 1.5289796 insert K'0width:InterpolationMasses 196 1.5395918 insert K'0width:InterpolationMasses 197 1.5502041 insert K'0width:InterpolationMasses 198 1.5608163 insert K'0width:InterpolationMasses 199 1.5714286 insert K'0width:InterpolationMasses 200 1.5820408 insert K'0width:InterpolationMasses 201 1.5926531 insert K'0width:InterpolationMasses 202 1.6032653 insert K'0width:InterpolationMasses 203 1.6138776 insert K'0width:InterpolationMasses 204 1.6244898 insert K'0width:InterpolationMasses 205 1.635102 insert K'0width:InterpolationMasses 206 1.6457143 insert K'0width:InterpolationMasses 207 1.6563265 insert K'0width:InterpolationMasses 208 1.6669388 insert K'0width:InterpolationMasses 209 1.677551 insert K'0width:InterpolationMasses 210 1.6881633 insert K'0width:InterpolationMasses 211 1.6987755 insert K'0width:InterpolationMasses 212 1.7093878 insert K'0width:InterpolationMasses 213 1.72 insert K'0width:InterpolationMasses 214 1.7306122 insert K'0width:InterpolationMasses 215 1.7412245 insert K'0width:InterpolationMasses 216 1.1787755 insert K'0width:InterpolationMasses 217 1.1893878 insert K'0width:InterpolationMasses 218 1.2 insert K'0width:InterpolationMasses 219 1.2106122 insert K'0width:InterpolationMasses 220 1.2212245 insert K'0width:InterpolationMasses 221 1.2318367 insert K'0width:InterpolationMasses 222 1.242449 insert K'0width:InterpolationMasses 223 1.2530612 insert K'0width:InterpolationMasses 224 1.2636735 insert K'0width:InterpolationMasses 225 1.2742857 insert K'0width:InterpolationMasses 226 1.284898 insert K'0width:InterpolationMasses 227 1.2955102 insert K'0width:InterpolationMasses 228 1.3061224 insert K'0width:InterpolationMasses 229 1.3167347 insert K'0width:InterpolationMasses 230 1.3273469 insert K'0width:InterpolationMasses 231 1.3379592 insert K'0width:InterpolationMasses 232 1.3485714 insert K'0width:InterpolationMasses 233 1.3591837 insert K'0width:InterpolationMasses 234 1.3697959 insert K'0width:InterpolationMasses 235 1.3804082 insert K'0width:InterpolationMasses 236 1.3910204 insert K'0width:InterpolationMasses 237 1.4016327 insert K'0width:InterpolationMasses 238 1.4122449 insert K'0width:InterpolationMasses 239 1.4228571 insert K'0width:InterpolationMasses 240 1.4334694 insert K'0width:InterpolationMasses 241 1.4440816 insert K'0width:InterpolationMasses 242 1.4546939 insert K'0width:InterpolationMasses 243 1.4653061 insert K'0width:InterpolationMasses 244 1.4759184 insert K'0width:InterpolationMasses 245 1.4865306 insert K'0width:InterpolationMasses 246 1.4971429 insert K'0width:InterpolationMasses 247 1.5077551 insert K'0width:InterpolationMasses 248 1.5183673 insert K'0width:InterpolationMasses 249 1.5289796 insert K'0width:InterpolationMasses 250 1.5395918 insert K'0width:InterpolationMasses 251 1.5502041 insert K'0width:InterpolationMasses 252 1.5608163 insert K'0width:InterpolationMasses 253 1.5714286 insert K'0width:InterpolationMasses 254 1.5820408 insert K'0width:InterpolationMasses 255 1.5926531 insert K'0width:InterpolationMasses 256 1.6032653 insert K'0width:InterpolationMasses 257 1.6138776 insert K'0width:InterpolationMasses 258 1.6244898 insert K'0width:InterpolationMasses 259 1.635102 insert K'0width:InterpolationMasses 260 1.6457143 insert K'0width:InterpolationMasses 261 1.6563265 insert K'0width:InterpolationMasses 262 1.6669388 insert K'0width:InterpolationMasses 263 1.677551 insert K'0width:InterpolationMasses 264 1.6881633 insert K'0width:InterpolationMasses 265 1.6987755 insert K'0width:InterpolationMasses 266 1.7093878 insert K'0width:InterpolationMasses 267 1.72 insert K'0width:InterpolationMasses 268 1.7306122 insert K'0width:InterpolationMasses 269 1.7412245 insert K'0width:InterpolationMasses 270 1.1787755 insert K'0width:InterpolationMasses 271 1.1893878 insert K'0width:InterpolationMasses 272 1.2 insert K'0width:InterpolationMasses 273 1.2106122 insert K'0width:InterpolationMasses 274 1.2212245 insert K'0width:InterpolationMasses 275 1.2318367 insert K'0width:InterpolationMasses 276 1.242449 insert K'0width:InterpolationMasses 277 1.2530612 insert K'0width:InterpolationMasses 278 1.2636735 insert K'0width:InterpolationMasses 279 1.2742857 insert K'0width:InterpolationMasses 280 1.284898 insert K'0width:InterpolationMasses 281 1.2955102 insert K'0width:InterpolationMasses 282 1.3061224 insert K'0width:InterpolationMasses 283 1.3167347 insert K'0width:InterpolationMasses 284 1.3273469 insert K'0width:InterpolationMasses 285 1.3379592 insert K'0width:InterpolationMasses 286 1.3485714 insert K'0width:InterpolationMasses 287 1.3591837 insert K'0width:InterpolationMasses 288 1.3697959 insert K'0width:InterpolationMasses 289 1.3804082 insert K'0width:InterpolationMasses 290 1.3910204 insert K'0width:InterpolationMasses 291 1.4016327 insert K'0width:InterpolationMasses 292 1.4122449 insert K'0width:InterpolationMasses 293 1.4228571 insert K'0width:InterpolationMasses 294 1.4334694 insert K'0width:InterpolationMasses 295 1.4440816 insert K'0width:InterpolationMasses 296 1.4546939 insert K'0width:InterpolationMasses 297 1.4653061 insert K'0width:InterpolationMasses 298 1.4759184 insert K'0width:InterpolationMasses 299 1.4865306 insert K'0width:InterpolationMasses 300 1.4971429 insert K'0width:InterpolationMasses 301 1.5077551 insert K'0width:InterpolationMasses 302 1.5183673 insert K'0width:InterpolationMasses 303 1.5289796 insert K'0width:InterpolationMasses 304 1.5395918 insert K'0width:InterpolationMasses 305 1.5502041 insert K'0width:InterpolationMasses 306 1.5608163 insert K'0width:InterpolationMasses 307 1.5714286 insert K'0width:InterpolationMasses 308 1.5820408 insert K'0width:InterpolationMasses 309 1.5926531 insert K'0width:InterpolationMasses 310 1.6032653 insert K'0width:InterpolationMasses 311 1.6138776 insert K'0width:InterpolationMasses 312 1.6244898 insert K'0width:InterpolationMasses 313 1.635102 insert K'0width:InterpolationMasses 314 1.6457143 insert K'0width:InterpolationMasses 315 1.6563265 insert K'0width:InterpolationMasses 316 1.6669388 insert K'0width:InterpolationMasses 317 1.677551 insert K'0width:InterpolationMasses 318 1.6881633 insert K'0width:InterpolationMasses 319 1.6987755 insert K'0width:InterpolationMasses 320 1.7093878 insert K'0width:InterpolationMasses 321 1.72 insert K'0width:InterpolationMasses 322 1.7306122 insert K'0width:InterpolationMasses 323 1.7412245 insert K'0width:InterpolationWidths 0 0.0091811296 insert K'0width:InterpolationWidths 1 0.010391532 insert K'0width:InterpolationWidths 2 0.011687442 insert K'0width:InterpolationWidths 3 0.013070275 insert K'0width:InterpolationWidths 4 0.01454142 insert K'0width:InterpolationWidths 5 0.016102242 insert K'0width:InterpolationWidths 6 0.017754083 insert K'0width:InterpolationWidths 7 0.019498256 insert K'0width:InterpolationWidths 8 0.021336055 insert K'0width:InterpolationWidths 9 0.023268748 insert K'0width:InterpolationWidths 10 0.025297579 insert K'0width:InterpolationWidths 11 0.027423775 insert K'0width:InterpolationWidths 12 0.029648537 insert K'0width:InterpolationWidths 13 0.031973049 insert K'0width:InterpolationWidths 14 0.034398476 insert K'0width:InterpolationWidths 15 0.036925963 insert K'0width:InterpolationWidths 16 0.03955664 insert K'0width:InterpolationWidths 17 0.04229162 insert K'0width:InterpolationWidths 18 0.045131998 insert K'0width:InterpolationWidths 19 0.048078857 insert K'0width:InterpolationWidths 20 0.051133266 insert K'0width:InterpolationWidths 21 0.05429628 insert K'0width:InterpolationWidths 22 0.057568939 insert K'0width:InterpolationWidths 23 0.060952276 insert K'0width:InterpolationWidths 24 0.064447309 insert K'0width:InterpolationWidths 25 0.068055046 insert K'0width:InterpolationWidths 26 0.071776487 insert K'0width:InterpolationWidths 27 0.075612619 insert K'0width:InterpolationWidths 28 0.079564422 insert K'0width:InterpolationWidths 29 0.083632868 insert K'0width:InterpolationWidths 30 0.08781892 insert K'0width:InterpolationWidths 31 0.092123534 insert K'0width:InterpolationWidths 32 0.096547657 insert K'0width:InterpolationWidths 33 0.10109223 insert K'0width:InterpolationWidths 34 0.10575819 insert K'0width:InterpolationWidths 35 0.11054644 insert K'0width:InterpolationWidths 36 0.11545776 insert K'0width:InterpolationWidths 37 0.12049301 insert K'0width:InterpolationWidths 38 0.12565303 insert K'0width:InterpolationWidths 39 0.13093867 insert K'0width:InterpolationWidths 40 0.13635078 insert K'0width:InterpolationWidths 41 0.1418902 insert K'0width:InterpolationWidths 42 0.14755777 insert K'0width:InterpolationWidths 43 0.15335431 insert K'0width:InterpolationWidths 44 0.15928067 insert K'0width:InterpolationWidths 45 0.16533766 insert K'0width:InterpolationWidths 46 0.17152612 insert K'0width:InterpolationWidths 47 0.17784686 insert K'0width:InterpolationWidths 48 0.18430071 insert K'0width:InterpolationWidths 49 0.19088847 insert K'0width:InterpolationWidths 50 0.19761096 insert K'0width:InterpolationWidths 51 0.20446899 insert K'0width:InterpolationWidths 52 0.21146218 insert K'0width:InterpolationWidths 53 0.21859369 insert K'0width:InterpolationWidths 54 0.01886819 insert K'0width:InterpolationWidths 55 0.019989528 insert K'0width:InterpolationWidths 56 0.021160187 insert K'0width:InterpolationWidths 57 0.022382887 insert K'0width:InterpolationWidths 58 0.023660591 insert K'0width:InterpolationWidths 59 0.024996529 insert K'0width:InterpolationWidths 60 0.026394221 insert K'0width:InterpolationWidths 61 0.027857512 insert K'0width:InterpolationWidths 62 0.029390592 insert K'0width:InterpolationWidths 63 0.030998041 insert K'0width:InterpolationWidths 64 0.032684858 insert K'0width:InterpolationWidths 65 0.034456505 insert K'0width:InterpolationWidths 66 0.036318952 insert K'0width:InterpolationWidths 67 0.038278716 insert K'0width:InterpolationWidths 68 0.040342917 insert K'0width:InterpolationWidths 69 0.042519323 insert K'0width:InterpolationWidths 70 0.0448164 insert K'0width:InterpolationWidths 71 0.047243358 insert K'0width:InterpolationWidths 72 0.049810191 insert K'0width:InterpolationWidths 73 0.052527706 insert K'0width:InterpolationWidths 74 0.055407534 insert K'0width:InterpolationWidths 75 0.058462115 insert K'0width:InterpolationWidths 76 0.061704639 insert K'0width:InterpolationWidths 77 0.065148944 insert K'0width:InterpolationWidths 78 0.068809327 insert K'0width:InterpolationWidths 79 0.072700274 insert K'0width:InterpolationWidths 80 0.076836064 insert K'0width:InterpolationWidths 81 0.081230241 insert K'0width:InterpolationWidths 82 0.085894929 insert K'0width:InterpolationWidths 83 0.090840003 insert K'0width:InterpolationWidths 84 0.096072118 insert K'0width:InterpolationWidths 85 0.10159368 insert K'0width:InterpolationWidths 86 0.10740185 insert K'0width:InterpolationWidths 87 0.11348767 insert K'0width:InterpolationWidths 88 0.11983554 insert K'0width:InterpolationWidths 89 0.12642314 insert K'0width:InterpolationWidths 90 0.1332219 insert K'0width:InterpolationWidths 91 0.14019798 insert K'0width:InterpolationWidths 92 0.14731382 insert K'0width:InterpolationWidths 93 0.1545298 insert K'0width:InterpolationWidths 94 0.16180611 insert K'0width:InterpolationWidths 95 0.16910436 insert K'0width:InterpolationWidths 96 0.17638889 insert K'0width:InterpolationWidths 97 0.18362768 insert K'0width:InterpolationWidths 98 0.19079286 insert K'0width:InterpolationWidths 99 0.19786087 insert K'0width:InterpolationWidths 100 0.20481233 insert K'0width:InterpolationWidths 101 0.21163175 insert K'0width:InterpolationWidths 102 0.21830713 insert K'0width:InterpolationWidths 103 0.22482951 insert K'0width:InterpolationWidths 104 0.23119249 insert K'0width:InterpolationWidths 105 0.23739185 insert K'0width:InterpolationWidths 106 0.24342514 insert K'0width:InterpolationWidths 107 0.24929135 insert K'0width:InterpolationWidths 108 0.0094592725 insert K'0width:InterpolationWidths 109 0.010016056 insert K'0width:InterpolationWidths 110 0.010597364 insert K'0width:InterpolationWidths 111 0.011204567 insert K'0width:InterpolationWidths 112 0.011839158 insert K'0width:InterpolationWidths 113 0.012502765 insert K'0width:InterpolationWidths 114 0.013197164 insert K'0width:InterpolationWidths 115 0.01392429 insert K'0width:InterpolationWidths 116 0.01468626 insert K'0width:InterpolationWidths 117 0.01548538 insert K'0width:InterpolationWidths 118 0.016324173 insert K'0width:InterpolationWidths 119 0.017205393 insert K'0width:InterpolationWidths 120 0.01813205 insert K'0width:InterpolationWidths 121 0.01910743 insert K'0width:InterpolationWidths 122 0.020135121 insert K'0width:InterpolationWidths 123 0.021219038 insert K'0width:InterpolationWidths 124 0.022363441 insert K'0width:InterpolationWidths 125 0.023572962 insert K'0width:InterpolationWidths 126 0.02485262 insert K'0width:InterpolationWidths 127 0.026207831 insert K'0width:InterpolationWidths 128 0.027644412 insert K'0width:InterpolationWidths 129 0.029168561 insert K'0width:InterpolationWidths 130 0.030786823 insert K'0width:InterpolationWidths 131 0.032506024 insert K'0width:InterpolationWidths 132 0.034333165 insert K'0width:InterpolationWidths 133 0.036275261 insert K'0width:InterpolationWidths 134 0.038339132 insert K'0width:InterpolationWidths 135 0.040531107 insert K'0width:InterpolationWidths 136 0.042856666 insert K'0width:InterpolationWidths 137 0.045320008 insert K'0width:InterpolationWidths 138 0.047923561 insert K'0width:InterpolationWidths 139 0.050667485 insert K'0width:InterpolationWidths 140 0.053549205 insert K'0width:InterpolationWidths 141 0.056563055 insert K'0width:InterpolationWidths 142 0.059700108 insert K'0width:InterpolationWidths 143 0.06294824 insert K'0width:InterpolationWidths 144 0.066292475 insert K'0width:InterpolationWidths 145 0.069715578 insert K'0width:InterpolationWidths 146 0.073198839 insert K'0width:InterpolationWidths 147 0.076722943 insert K'0width:InterpolationWidths 148 0.080268817 insert K'0width:InterpolationWidths 149 0.083818359 insert K'0width:InterpolationWidths 150 0.087354997 insert K'0width:InterpolationWidths 151 0.09086404 insert K'0width:InterpolationWidths 152 0.09433285 insert K'0width:InterpolationWidths 153 0.097750855 insert K'0width:InterpolationWidths 154 0.10110945 insert K'0width:InterpolationWidths 155 0.10440184 insert K'0width:InterpolationWidths 156 0.10762281 insert K'0width:InterpolationWidths 157 0.11076852 insert K'0width:InterpolationWidths 158 0.11383629 insert K'0width:InterpolationWidths 159 0.11682443 insert K'0width:InterpolationWidths 160 0.11973199 insert K'0width:InterpolationWidths 161 0.12255872 insert K'0width:InterpolationWidths 162 0.0044824135 insert K'0width:InterpolationWidths 163 0.0050748423 insert K'0width:InterpolationWidths 164 0.0057094477 insert K'0width:InterpolationWidths 165 0.00638695 insert K'0width:InterpolationWidths 166 0.0071080561 insert K'0width:InterpolationWidths 167 0.0078734593 insert K'0width:InterpolationWidths 168 0.0086838394 insert K'0width:InterpolationWidths 169 0.0095398628 insert K'0width:InterpolationWidths 170 0.010442183 insert K'0width:InterpolationWidths 171 0.011391442 insert K'0width:InterpolationWidths 172 0.012388269 insert K'0width:InterpolationWidths 173 0.01343328 insert K'0width:InterpolationWidths 174 0.014527084 insert K'0width:InterpolationWidths 175 0.015670275 insert K'0width:InterpolationWidths 176 0.016863441 insert K'0width:InterpolationWidths 177 0.018107157 insert K'0width:InterpolationWidths 178 0.019401992 insert K'0width:InterpolationWidths 179 0.020748504 insert K'0width:InterpolationWidths 180 0.022147244 insert K'0width:InterpolationWidths 181 0.023598754 insert K'0width:InterpolationWidths 182 0.025103571 insert K'0width:InterpolationWidths 183 0.026662223 insert K'0width:InterpolationWidths 184 0.028275233 insert K'0width:InterpolationWidths 185 0.029943116 insert K'0width:InterpolationWidths 186 0.031666382 insert K'0width:InterpolationWidths 187 0.033445536 insert K'0width:InterpolationWidths 188 0.035281077 insert K'0width:InterpolationWidths 189 0.037173499 insert K'0width:InterpolationWidths 190 0.039123291 insert K'0width:InterpolationWidths 191 0.04113094 insert K'0width:InterpolationWidths 192 0.043196925 insert K'0width:InterpolationWidths 193 0.045321723 insert K'0width:InterpolationWidths 194 0.047505809 insert K'0width:InterpolationWidths 195 0.04974965 insert K'0width:InterpolationWidths 196 0.052053713 insert K'0width:InterpolationWidths 197 0.054418414 insert K'0width:InterpolationWidths 198 0.056844169 insert K'0width:InterpolationWidths 199 0.059331402 insert K'0width:InterpolationWidths 200 0.061880538 insert K'0width:InterpolationWidths 201 0.064492002 insert K'0width:InterpolationWidths 202 0.067166215 insert K'0width:InterpolationWidths 203 0.069903597 insert K'0width:InterpolationWidths 204 0.072704566 insert K'0width:InterpolationWidths 205 0.075569538 insert K'0width:InterpolationWidths 206 0.078498927 insert K'0width:InterpolationWidths 207 0.081493146 insert K'0width:InterpolationWidths 208 0.084552605 insert K'0width:InterpolationWidths 209 0.087677712 insert K'0width:InterpolationWidths 210 0.090868876 insert K'0width:InterpolationWidths 211 0.094126501 insert K'0width:InterpolationWidths 212 0.097450544 insert K'0width:InterpolationWidths 213 0.1008423 insert K'0width:InterpolationWidths 214 0.10430172 insert K'0width:InterpolationWidths 215 0.10782922 insert K'0width:InterpolationWidths 216 0.00086774817 insert K'0width:InterpolationWidths 217 0.0010118683 insert K'0width:InterpolationWidths 218 0.0011790841 insert K'0width:InterpolationWidths 219 0.0013733386 insert K'0width:InterpolationWidths 220 0.0015992071 insert K'0width:InterpolationWidths 221 0.0018618702 insert K'0width:InterpolationWidths 222 0.0021669813 insert K'0width:InterpolationWidths 223 0.0025203965 insert K'0width:InterpolationWidths 224 0.00292779 insert K'0width:InterpolationWidths 225 0.0033942435 insert K'0width:InterpolationWidths 226 0.0039239326 insert K'0width:InterpolationWidths 227 0.0045199965 insert K'0width:InterpolationWidths 228 0.0051845896 insert K'0width:InterpolationWidths 229 0.0059190474 insert K'0width:InterpolationWidths 230 0.0067240898 insert K'0width:InterpolationWidths 231 0.0076000086 insert K'0width:InterpolationWidths 232 0.008546818 insert K'0width:InterpolationWidths 233 0.0095643639 insert K'0width:InterpolationWidths 234 0.010652401 insert K'0width:InterpolationWidths 235 0.011810643 insert K'0width:InterpolationWidths 236 0.013038795 insert K'0width:InterpolationWidths 237 0.014336576 insert K'0width:InterpolationWidths 238 0.015703727 insert K'0width:InterpolationWidths 239 0.017140021 insert K'0width:InterpolationWidths 240 0.018645266 insert K'0width:InterpolationWidths 241 0.020219306 insert K'0width:InterpolationWidths 242 0.021862018 insert K'0width:InterpolationWidths 243 0.023573314 insert K'0width:InterpolationWidths 244 0.02535314 insert K'0width:InterpolationWidths 245 0.02720147 insert K'0width:InterpolationWidths 246 0.029118308 insert K'0width:InterpolationWidths 247 0.031103683 insert K'0width:InterpolationWidths 248 0.033157652 insert K'0width:InterpolationWidths 249 0.035280291 insert K'0width:InterpolationWidths 250 0.0374717 insert K'0width:InterpolationWidths 251 0.039731997 insert K'0width:InterpolationWidths 252 0.04206132 insert K'0width:InterpolationWidths 253 0.044459822 insert K'0width:InterpolationWidths 254 0.046927672 insert K'0width:InterpolationWidths 255 0.049465054 insert K'0width:InterpolationWidths 256 0.052072166 insert K'0width:InterpolationWidths 257 0.054749217 insert K'0width:InterpolationWidths 258 0.057496428 insert K'0width:InterpolationWidths 259 0.060314032 insert K'0width:InterpolationWidths 260 0.06320227 insert K'0width:InterpolationWidths 261 0.066161393 insert K'0width:InterpolationWidths 262 0.069191663 insert K'0width:InterpolationWidths 263 0.072293347 insert K'0width:InterpolationWidths 264 0.075466722 insert K'0width:InterpolationWidths 265 0.07871207 insert K'0width:InterpolationWidths 266 0.082029681 insert K'0width:InterpolationWidths 267 0.085419851 insert K'0width:InterpolationWidths 268 0.088882882 insert K'0width:InterpolationWidths 269 0.092419082 insert K'0width:InterpolationWidths 270 0.00040818911 insert K'0width:InterpolationWidths 271 0.00047655686 insert K'0width:InterpolationWidths 272 0.00055590662 insert K'0width:InterpolationWidths 273 0.0006481197 insert K'0width:InterpolationWidths 274 0.0007553934 insert K'0width:InterpolationWidths 275 0.00088024255 insert K'0width:InterpolationWidths 276 0.0010254543 insert K'0width:InterpolationWidths 277 0.0011939773 insert K'0width:InterpolationWidths 278 0.0013887446 insert K'0width:InterpolationWidths 279 0.0016124624 insert K'0width:InterpolationWidths 280 0.0018674266 insert K'0width:InterpolationWidths 281 0.00215542 insert K'0width:InterpolationWidths 282 0.0024777069 insert K'0width:InterpolationWidths 283 0.0028351017 insert K'0width:InterpolationWidths 284 0.0032280689 insert K'0width:InterpolationWidths 285 0.0036568227 insert K'0width:InterpolationWidths 286 0.0041214112 insert K'0width:InterpolationWidths 287 0.0046217792 insert K'0width:InterpolationWidths 288 0.0051578125 insert K'0width:InterpolationWidths 289 0.0057293683 insert K'0width:InterpolationWidths 290 0.0063362942 insert K'0width:InterpolationWidths 291 0.006978441 insert K'0width:InterpolationWidths 292 0.0076556699 insert K'0width:InterpolationWidths 293 0.008367857 insert K'0width:InterpolationWidths 294 0.0091148952 insert K'0width:InterpolationWidths 295 0.0098966957 insert K'0width:InterpolationWidths 296 0.010713187 insert K'0width:InterpolationWidths 297 0.011564316 insert K'0width:InterpolationWidths 298 0.012450046 insert K'0width:InterpolationWidths 299 0.013370356 insert K'0width:InterpolationWidths 300 0.014325239 insert K'0width:InterpolationWidths 301 0.015314703 insert K'0width:InterpolationWidths 302 0.01633877 insert K'0width:InterpolationWidths 303 0.017397472 insert K'0width:InterpolationWidths 304 0.018490852 insert K'0width:InterpolationWidths 305 0.019618965 insert K'0width:InterpolationWidths 306 0.020781874 insert K'0width:InterpolationWidths 307 0.021979652 insert K'0width:InterpolationWidths 308 0.023212379 insert K'0width:InterpolationWidths 309 0.024480143 insert K'0width:InterpolationWidths 310 0.02578304 insert K'0width:InterpolationWidths 311 0.027121171 insert K'0width:InterpolationWidths 312 0.028494643 insert K'0width:InterpolationWidths 313 0.029903571 insert K'0width:InterpolationWidths 314 0.031348072 insert K'0width:InterpolationWidths 315 0.03282827 insert K'0width:InterpolationWidths 316 0.034344293 insert K'0width:InterpolationWidths 317 0.035896274 insert K'0width:InterpolationWidths 318 0.037484349 insert K'0width:InterpolationWidths 319 0.039108657 insert K'0width:InterpolationWidths 320 0.040769342 insert K'0width:InterpolationWidths 321 0.042466551 insert K'0width:InterpolationWidths 322 0.044200433 insert K'0width:InterpolationWidths 323 0.045971143 insert K'0width:NumberofEntries 0 54 insert K'0width:NumberofEntries 1 108 insert K'0width:NumberofEntries 2 162 insert K'0width:NumberofEntries 3 216 insert K'0width:NumberofEntries 4 270 insert K'0width:NumberofEntries 5 324 newdef /Herwig/Particles/K'0:Width_generator K'0width newdef /Herwig/Particles/K'bar0:Width_generator K'0width # create Herwig::GenericWidthGenerator K'+width newdef K'+width:Particle /Herwig/Particles/K'+ newdef K'+width:Prefactor 0.999679 newdef K'+width:BRNormalize 1 newdef K'+width:BRMinimum 0.01 newdef K'+width:Points 50 newdef K'+width:InterpolationOrder 1 insert K'+width:MEtype 0 2 insert K'+width:MEtype 1 2 insert K'+width:MEtype 2 2 insert K'+width:MEtype 3 2 insert K'+width:MEtype 4 2 insert K'+width:MEtype 5 2 insert K'+width:MEcode 0 0 insert K'+width:MEcode 1 0 insert K'+width:MEcode 2 0 insert K'+width:MEcode 3 0 insert K'+width:MEcode 4 0 insert K'+width:MEcode 5 0 insert K'+width:MEcoupling 0 0.977774 insert K'+width:MEcoupling 1 0.990557 insert K'+width:MEcoupling 2 0.986141 insert K'+width:MEcoupling 3 1.01191 insert K'+width:MEcoupling 4 0.995163 insert K'+width:MEcoupling 5 1.02087 insert K'+width:ModeOn 0 1 insert K'+width:ModeOn 1 1 insert K'+width:ModeOn 2 1 insert K'+width:ModeOn 3 1 insert K'+width:ModeOn 4 1 insert K'+width:ModeOn 5 1 insert K'+width:MinimumMasses 0 0.776638 insert K'+width:MinimumMasses 1 0.778978 insert K'+width:MinimumMasses 2 0.78357 insert K'+width:MinimumMasses 3 0.78557 insert K'+width:MinimumMasses 4 0.869177 insert K'+width:MinimumMasses 5 0.873148 insert K'+width:MEmass1 0 0.134978 insert K'+width:MEmass1 1 1.414 insert K'+width:MEmass1 2 1.414 insert K'+width:MEmass1 3 0.13957 insert K'+width:MEmass1 4 0.493677 insert K'+width:MEmass1 5 0.497648 insert K'+width:MEmass2 0 0.89166 insert K'+width:MEmass2 1 0.134978 insert K'+width:MEmass2 2 0.13957 insert K'+width:MEmass2 3 0.896 insert K'+width:MEmass2 4 0.7755 insert K'+width:MEmass2 5 0.7755 insert K'+width:DecayModes 0 K'+->K*+,pi0; insert K'+width:DecayModes 1 K'+->K*_0+,pi0; insert K'+width:DecayModes 2 K'+->K*_00,pi+; insert K'+width:DecayModes 3 K'+->K*0,pi+; insert K'+width:DecayModes 4 K'+->K+,rho0; insert K'+width:DecayModes 5 K'+->K0,rho+; insert K'+width:InterpolationMasses 0 1.1787755 insert K'+width:InterpolationMasses 1 1.1893878 insert K'+width:InterpolationMasses 2 1.2 insert K'+width:InterpolationMasses 3 1.2106122 insert K'+width:InterpolationMasses 4 1.2212245 insert K'+width:InterpolationMasses 5 1.2318367 insert K'+width:InterpolationMasses 6 1.242449 insert K'+width:InterpolationMasses 7 1.2530612 insert K'+width:InterpolationMasses 8 1.2636735 insert K'+width:InterpolationMasses 9 1.2742857 insert K'+width:InterpolationMasses 10 1.284898 insert K'+width:InterpolationMasses 11 1.2955102 insert K'+width:InterpolationMasses 12 1.3061224 insert K'+width:InterpolationMasses 13 1.3167347 insert K'+width:InterpolationMasses 14 1.3273469 insert K'+width:InterpolationMasses 15 1.3379592 insert K'+width:InterpolationMasses 16 1.3485714 insert K'+width:InterpolationMasses 17 1.3591837 insert K'+width:InterpolationMasses 18 1.3697959 insert K'+width:InterpolationMasses 19 1.3804082 insert K'+width:InterpolationMasses 20 1.3910204 insert K'+width:InterpolationMasses 21 1.4016327 insert K'+width:InterpolationMasses 22 1.4122449 insert K'+width:InterpolationMasses 23 1.4228571 insert K'+width:InterpolationMasses 24 1.4334694 insert K'+width:InterpolationMasses 25 1.4440816 insert K'+width:InterpolationMasses 26 1.4546939 insert K'+width:InterpolationMasses 27 1.4653061 insert K'+width:InterpolationMasses 28 1.4759184 insert K'+width:InterpolationMasses 29 1.4865306 insert K'+width:InterpolationMasses 30 1.4971429 insert K'+width:InterpolationMasses 31 1.5077551 insert K'+width:InterpolationMasses 32 1.5183673 insert K'+width:InterpolationMasses 33 1.5289796 insert K'+width:InterpolationMasses 34 1.5395918 insert K'+width:InterpolationMasses 35 1.5502041 insert K'+width:InterpolationMasses 36 1.5608163 insert K'+width:InterpolationMasses 37 1.5714286 insert K'+width:InterpolationMasses 38 1.5820408 insert K'+width:InterpolationMasses 39 1.5926531 insert K'+width:InterpolationMasses 40 1.6032653 insert K'+width:InterpolationMasses 41 1.6138776 insert K'+width:InterpolationMasses 42 1.6244898 insert K'+width:InterpolationMasses 43 1.635102 insert K'+width:InterpolationMasses 44 1.6457143 insert K'+width:InterpolationMasses 45 1.6563265 insert K'+width:InterpolationMasses 46 1.6669388 insert K'+width:InterpolationMasses 47 1.677551 insert K'+width:InterpolationMasses 48 1.6881633 insert K'+width:InterpolationMasses 49 1.6987755 insert K'+width:InterpolationMasses 50 1.7093878 insert K'+width:InterpolationMasses 51 1.72 insert K'+width:InterpolationMasses 52 1.7306122 insert K'+width:InterpolationMasses 53 1.7412245 insert K'+width:InterpolationMasses 54 1.1787755 insert K'+width:InterpolationMasses 55 1.1893878 insert K'+width:InterpolationMasses 56 1.2 insert K'+width:InterpolationMasses 57 1.2106122 insert K'+width:InterpolationMasses 58 1.2212245 insert K'+width:InterpolationMasses 59 1.2318367 insert K'+width:InterpolationMasses 60 1.242449 insert K'+width:InterpolationMasses 61 1.2530612 insert K'+width:InterpolationMasses 62 1.2636735 insert K'+width:InterpolationMasses 63 1.2742857 insert K'+width:InterpolationMasses 64 1.284898 insert K'+width:InterpolationMasses 65 1.2955102 insert K'+width:InterpolationMasses 66 1.3061224 insert K'+width:InterpolationMasses 67 1.3167347 insert K'+width:InterpolationMasses 68 1.3273469 insert K'+width:InterpolationMasses 69 1.3379592 insert K'+width:InterpolationMasses 70 1.3485714 insert K'+width:InterpolationMasses 71 1.3591837 insert K'+width:InterpolationMasses 72 1.3697959 insert K'+width:InterpolationMasses 73 1.3804082 insert K'+width:InterpolationMasses 74 1.3910204 insert K'+width:InterpolationMasses 75 1.4016327 insert K'+width:InterpolationMasses 76 1.4122449 insert K'+width:InterpolationMasses 77 1.4228571 insert K'+width:InterpolationMasses 78 1.4334694 insert K'+width:InterpolationMasses 79 1.4440816 insert K'+width:InterpolationMasses 80 1.4546939 insert K'+width:InterpolationMasses 81 1.4653061 insert K'+width:InterpolationMasses 82 1.4759184 insert K'+width:InterpolationMasses 83 1.4865306 insert K'+width:InterpolationMasses 84 1.4971429 insert K'+width:InterpolationMasses 85 1.5077551 insert K'+width:InterpolationMasses 86 1.5183673 insert K'+width:InterpolationMasses 87 1.5289796 insert K'+width:InterpolationMasses 88 1.5395918 insert K'+width:InterpolationMasses 89 1.5502041 insert K'+width:InterpolationMasses 90 1.5608163 insert K'+width:InterpolationMasses 91 1.5714286 insert K'+width:InterpolationMasses 92 1.5820408 insert K'+width:InterpolationMasses 93 1.5926531 insert K'+width:InterpolationMasses 94 1.6032653 insert K'+width:InterpolationMasses 95 1.6138776 insert K'+width:InterpolationMasses 96 1.6244898 insert K'+width:InterpolationMasses 97 1.635102 insert K'+width:InterpolationMasses 98 1.6457143 insert K'+width:InterpolationMasses 99 1.6563265 insert K'+width:InterpolationMasses 100 1.6669388 insert K'+width:InterpolationMasses 101 1.677551 insert K'+width:InterpolationMasses 102 1.6881633 insert K'+width:InterpolationMasses 103 1.6987755 insert K'+width:InterpolationMasses 104 1.7093878 insert K'+width:InterpolationMasses 105 1.72 insert K'+width:InterpolationMasses 106 1.7306122 insert K'+width:InterpolationMasses 107 1.7412245 insert K'+width:InterpolationMasses 108 1.1787755 insert K'+width:InterpolationMasses 109 1.1893878 insert K'+width:InterpolationMasses 110 1.2 insert K'+width:InterpolationMasses 111 1.2106122 insert K'+width:InterpolationMasses 112 1.2212245 insert K'+width:InterpolationMasses 113 1.2318367 insert K'+width:InterpolationMasses 114 1.242449 insert K'+width:InterpolationMasses 115 1.2530612 insert K'+width:InterpolationMasses 116 1.2636735 insert K'+width:InterpolationMasses 117 1.2742857 insert K'+width:InterpolationMasses 118 1.284898 insert K'+width:InterpolationMasses 119 1.2955102 insert K'+width:InterpolationMasses 120 1.3061224 insert K'+width:InterpolationMasses 121 1.3167347 insert K'+width:InterpolationMasses 122 1.3273469 insert K'+width:InterpolationMasses 123 1.3379592 insert K'+width:InterpolationMasses 124 1.3485714 insert K'+width:InterpolationMasses 125 1.3591837 insert K'+width:InterpolationMasses 126 1.3697959 insert K'+width:InterpolationMasses 127 1.3804082 insert K'+width:InterpolationMasses 128 1.3910204 insert K'+width:InterpolationMasses 129 1.4016327 insert K'+width:InterpolationMasses 130 1.4122449 insert K'+width:InterpolationMasses 131 1.4228571 insert K'+width:InterpolationMasses 132 1.4334694 insert K'+width:InterpolationMasses 133 1.4440816 insert K'+width:InterpolationMasses 134 1.4546939 insert K'+width:InterpolationMasses 135 1.4653061 insert K'+width:InterpolationMasses 136 1.4759184 insert K'+width:InterpolationMasses 137 1.4865306 insert K'+width:InterpolationMasses 138 1.4971429 insert K'+width:InterpolationMasses 139 1.5077551 insert K'+width:InterpolationMasses 140 1.5183673 insert K'+width:InterpolationMasses 141 1.5289796 insert K'+width:InterpolationMasses 142 1.5395918 insert K'+width:InterpolationMasses 143 1.5502041 insert K'+width:InterpolationMasses 144 1.5608163 insert K'+width:InterpolationMasses 145 1.5714286 insert K'+width:InterpolationMasses 146 1.5820408 insert K'+width:InterpolationMasses 147 1.5926531 insert K'+width:InterpolationMasses 148 1.6032653 insert K'+width:InterpolationMasses 149 1.6138776 insert K'+width:InterpolationMasses 150 1.6244898 insert K'+width:InterpolationMasses 151 1.635102 insert K'+width:InterpolationMasses 152 1.6457143 insert K'+width:InterpolationMasses 153 1.6563265 insert K'+width:InterpolationMasses 154 1.6669388 insert K'+width:InterpolationMasses 155 1.677551 insert K'+width:InterpolationMasses 156 1.6881633 insert K'+width:InterpolationMasses 157 1.6987755 insert K'+width:InterpolationMasses 158 1.7093878 insert K'+width:InterpolationMasses 159 1.72 insert K'+width:InterpolationMasses 160 1.7306122 insert K'+width:InterpolationMasses 161 1.7412245 insert K'+width:InterpolationMasses 162 1.1787755 insert K'+width:InterpolationMasses 163 1.1893878 insert K'+width:InterpolationMasses 164 1.2 insert K'+width:InterpolationMasses 165 1.2106122 insert K'+width:InterpolationMasses 166 1.2212245 insert K'+width:InterpolationMasses 167 1.2318367 insert K'+width:InterpolationMasses 168 1.242449 insert K'+width:InterpolationMasses 169 1.2530612 insert K'+width:InterpolationMasses 170 1.2636735 insert K'+width:InterpolationMasses 171 1.2742857 insert K'+width:InterpolationMasses 172 1.284898 insert K'+width:InterpolationMasses 173 1.2955102 insert K'+width:InterpolationMasses 174 1.3061224 insert K'+width:InterpolationMasses 175 1.3167347 insert K'+width:InterpolationMasses 176 1.3273469 insert K'+width:InterpolationMasses 177 1.3379592 insert K'+width:InterpolationMasses 178 1.3485714 insert K'+width:InterpolationMasses 179 1.3591837 insert K'+width:InterpolationMasses 180 1.3697959 insert K'+width:InterpolationMasses 181 1.3804082 insert K'+width:InterpolationMasses 182 1.3910204 insert K'+width:InterpolationMasses 183 1.4016327 insert K'+width:InterpolationMasses 184 1.4122449 insert K'+width:InterpolationMasses 185 1.4228571 insert K'+width:InterpolationMasses 186 1.4334694 insert K'+width:InterpolationMasses 187 1.4440816 insert K'+width:InterpolationMasses 188 1.4546939 insert K'+width:InterpolationMasses 189 1.4653061 insert K'+width:InterpolationMasses 190 1.4759184 insert K'+width:InterpolationMasses 191 1.4865306 insert K'+width:InterpolationMasses 192 1.4971429 insert K'+width:InterpolationMasses 193 1.5077551 insert K'+width:InterpolationMasses 194 1.5183673 insert K'+width:InterpolationMasses 195 1.5289796 insert K'+width:InterpolationMasses 196 1.5395918 insert K'+width:InterpolationMasses 197 1.5502041 insert K'+width:InterpolationMasses 198 1.5608163 insert K'+width:InterpolationMasses 199 1.5714286 insert K'+width:InterpolationMasses 200 1.5820408 insert K'+width:InterpolationMasses 201 1.5926531 insert K'+width:InterpolationMasses 202 1.6032653 insert K'+width:InterpolationMasses 203 1.6138776 insert K'+width:InterpolationMasses 204 1.6244898 insert K'+width:InterpolationMasses 205 1.635102 insert K'+width:InterpolationMasses 206 1.6457143 insert K'+width:InterpolationMasses 207 1.6563265 insert K'+width:InterpolationMasses 208 1.6669388 insert K'+width:InterpolationMasses 209 1.677551 insert K'+width:InterpolationMasses 210 1.6881633 insert K'+width:InterpolationMasses 211 1.6987755 insert K'+width:InterpolationMasses 212 1.7093878 insert K'+width:InterpolationMasses 213 1.72 insert K'+width:InterpolationMasses 214 1.7306122 insert K'+width:InterpolationMasses 215 1.7412245 insert K'+width:InterpolationMasses 216 1.1787755 insert K'+width:InterpolationMasses 217 1.1893878 insert K'+width:InterpolationMasses 218 1.2 insert K'+width:InterpolationMasses 219 1.2106122 insert K'+width:InterpolationMasses 220 1.2212245 insert K'+width:InterpolationMasses 221 1.2318367 insert K'+width:InterpolationMasses 222 1.242449 insert K'+width:InterpolationMasses 223 1.2530612 insert K'+width:InterpolationMasses 224 1.2636735 insert K'+width:InterpolationMasses 225 1.2742857 insert K'+width:InterpolationMasses 226 1.284898 insert K'+width:InterpolationMasses 227 1.2955102 insert K'+width:InterpolationMasses 228 1.3061224 insert K'+width:InterpolationMasses 229 1.3167347 insert K'+width:InterpolationMasses 230 1.3273469 insert K'+width:InterpolationMasses 231 1.3379592 insert K'+width:InterpolationMasses 232 1.3485714 insert K'+width:InterpolationMasses 233 1.3591837 insert K'+width:InterpolationMasses 234 1.3697959 insert K'+width:InterpolationMasses 235 1.3804082 insert K'+width:InterpolationMasses 236 1.3910204 insert K'+width:InterpolationMasses 237 1.4016327 insert K'+width:InterpolationMasses 238 1.4122449 insert K'+width:InterpolationMasses 239 1.4228571 insert K'+width:InterpolationMasses 240 1.4334694 insert K'+width:InterpolationMasses 241 1.4440816 insert K'+width:InterpolationMasses 242 1.4546939 insert K'+width:InterpolationMasses 243 1.4653061 insert K'+width:InterpolationMasses 244 1.4759184 insert K'+width:InterpolationMasses 245 1.4865306 insert K'+width:InterpolationMasses 246 1.4971429 insert K'+width:InterpolationMasses 247 1.5077551 insert K'+width:InterpolationMasses 248 1.5183673 insert K'+width:InterpolationMasses 249 1.5289796 insert K'+width:InterpolationMasses 250 1.5395918 insert K'+width:InterpolationMasses 251 1.5502041 insert K'+width:InterpolationMasses 252 1.5608163 insert K'+width:InterpolationMasses 253 1.5714286 insert K'+width:InterpolationMasses 254 1.5820408 insert K'+width:InterpolationMasses 255 1.5926531 insert K'+width:InterpolationMasses 256 1.6032653 insert K'+width:InterpolationMasses 257 1.6138776 insert K'+width:InterpolationMasses 258 1.6244898 insert K'+width:InterpolationMasses 259 1.635102 insert K'+width:InterpolationMasses 260 1.6457143 insert K'+width:InterpolationMasses 261 1.6563265 insert K'+width:InterpolationMasses 262 1.6669388 insert K'+width:InterpolationMasses 263 1.677551 insert K'+width:InterpolationMasses 264 1.6881633 insert K'+width:InterpolationMasses 265 1.6987755 insert K'+width:InterpolationMasses 266 1.7093878 insert K'+width:InterpolationMasses 267 1.72 insert K'+width:InterpolationMasses 268 1.7306122 insert K'+width:InterpolationMasses 269 1.7412245 insert K'+width:InterpolationMasses 270 1.1787755 insert K'+width:InterpolationMasses 271 1.1893878 insert K'+width:InterpolationMasses 272 1.2 insert K'+width:InterpolationMasses 273 1.2106122 insert K'+width:InterpolationMasses 274 1.2212245 insert K'+width:InterpolationMasses 275 1.2318367 insert K'+width:InterpolationMasses 276 1.242449 insert K'+width:InterpolationMasses 277 1.2530612 insert K'+width:InterpolationMasses 278 1.2636735 insert K'+width:InterpolationMasses 279 1.2742857 insert K'+width:InterpolationMasses 280 1.284898 insert K'+width:InterpolationMasses 281 1.2955102 insert K'+width:InterpolationMasses 282 1.3061224 insert K'+width:InterpolationMasses 283 1.3167347 insert K'+width:InterpolationMasses 284 1.3273469 insert K'+width:InterpolationMasses 285 1.3379592 insert K'+width:InterpolationMasses 286 1.3485714 insert K'+width:InterpolationMasses 287 1.3591837 insert K'+width:InterpolationMasses 288 1.3697959 insert K'+width:InterpolationMasses 289 1.3804082 insert K'+width:InterpolationMasses 290 1.3910204 insert K'+width:InterpolationMasses 291 1.4016327 insert K'+width:InterpolationMasses 292 1.4122449 insert K'+width:InterpolationMasses 293 1.4228571 insert K'+width:InterpolationMasses 294 1.4334694 insert K'+width:InterpolationMasses 295 1.4440816 insert K'+width:InterpolationMasses 296 1.4546939 insert K'+width:InterpolationMasses 297 1.4653061 insert K'+width:InterpolationMasses 298 1.4759184 insert K'+width:InterpolationMasses 299 1.4865306 insert K'+width:InterpolationMasses 300 1.4971429 insert K'+width:InterpolationMasses 301 1.5077551 insert K'+width:InterpolationMasses 302 1.5183673 insert K'+width:InterpolationMasses 303 1.5289796 insert K'+width:InterpolationMasses 304 1.5395918 insert K'+width:InterpolationMasses 305 1.5502041 insert K'+width:InterpolationMasses 306 1.5608163 insert K'+width:InterpolationMasses 307 1.5714286 insert K'+width:InterpolationMasses 308 1.5820408 insert K'+width:InterpolationMasses 309 1.5926531 insert K'+width:InterpolationMasses 310 1.6032653 insert K'+width:InterpolationMasses 311 1.6138776 insert K'+width:InterpolationMasses 312 1.6244898 insert K'+width:InterpolationMasses 313 1.635102 insert K'+width:InterpolationMasses 314 1.6457143 insert K'+width:InterpolationMasses 315 1.6563265 insert K'+width:InterpolationMasses 316 1.6669388 insert K'+width:InterpolationMasses 317 1.677551 insert K'+width:InterpolationMasses 318 1.6881633 insert K'+width:InterpolationMasses 319 1.6987755 insert K'+width:InterpolationMasses 320 1.7093878 insert K'+width:InterpolationMasses 321 1.72 insert K'+width:InterpolationMasses 322 1.7306122 insert K'+width:InterpolationMasses 323 1.7412245 insert K'+width:InterpolationWidths 0 0.0047324015 insert K'+width:InterpolationWidths 1 0.005344351 insert K'+width:InterpolationWidths 2 0.0059989844 insert K'+width:InterpolationWidths 3 0.006697022 insert K'+width:InterpolationWidths 4 0.0074391702 insert K'+width:InterpolationWidths 5 0.0082261219 insert K'+width:InterpolationWidths 6 0.0090585567 insert K'+width:InterpolationWidths 7 0.0099371407 insert K'+width:InterpolationWidths 8 0.010862528 insert K'+width:InterpolationWidths 9 0.011835359 insert K'+width:InterpolationWidths 10 0.012856263 insert K'+width:InterpolationWidths 11 0.013925859 insert K'+width:InterpolationWidths 12 0.015044753 insert K'+width:InterpolationWidths 13 0.016213543 insert K'+width:InterpolationWidths 14 0.017432816 insert K'+width:InterpolationWidths 15 0.018703148 insert K'+width:InterpolationWidths 16 0.020025109 insert K'+width:InterpolationWidths 17 0.021399259 insert K'+width:InterpolationWidths 18 0.022826151 insert K'+width:InterpolationWidths 19 0.024306328 insert K'+width:InterpolationWidths 20 0.025840329 insert K'+width:InterpolationWidths 21 0.027428684 insert K'+width:InterpolationWidths 22 0.029071917 insert K'+width:InterpolationWidths 23 0.030770547 insert K'+width:InterpolationWidths 24 0.032525085 insert K'+width:InterpolationWidths 25 0.034336039 insert K'+width:InterpolationWidths 26 0.036203911 insert K'+width:InterpolationWidths 27 0.038129197 insert K'+width:InterpolationWidths 28 0.04011239 insert K'+width:InterpolationWidths 29 0.042153977 insert K'+width:InterpolationWidths 30 0.044254443 insert K'+width:InterpolationWidths 31 0.046414268 insert K'+width:InterpolationWidths 32 0.048633926 insert K'+width:InterpolationWidths 33 0.050913893 insert K'+width:InterpolationWidths 34 0.053254636 insert K'+width:InterpolationWidths 35 0.055656578 insert K'+width:InterpolationWidths 36 0.058120135 insert K'+width:InterpolationWidths 37 0.060645734 insert K'+width:InterpolationWidths 38 0.063233804 insert K'+width:InterpolationWidths 39 0.065884771 insert K'+width:InterpolationWidths 40 0.068599059 insert K'+width:InterpolationWidths 41 0.071377093 insert K'+width:InterpolationWidths 42 0.074219292 insert K'+width:InterpolationWidths 43 0.077126076 insert K'+width:InterpolationWidths 44 0.080097863 insert K'+width:InterpolationWidths 45 0.083135067 insert K'+width:InterpolationWidths 46 0.086238102 insert K'+width:InterpolationWidths 47 0.089407381 insert K'+width:InterpolationWidths 48 0.092643314 insert K'+width:InterpolationWidths 49 0.095946311 insert K'+width:InterpolationWidths 50 0.099316778 insert K'+width:InterpolationWidths 51 0.10275512 insert K'+width:InterpolationWidths 52 0.10626116 insert K'+width:InterpolationWidths 53 0.10983646 insert K'+width:InterpolationWidths 54 0.0094226944 insert K'+width:InterpolationWidths 55 0.0099788403 insert K'+width:InterpolationWidths 56 0.010559527 insert K'+width:InterpolationWidths 57 0.011166126 insert K'+width:InterpolationWidths 58 0.011800129 insert K'+width:InterpolationWidths 59 0.012463165 insert K'+width:InterpolationWidths 60 0.013157008 insert K'+width:InterpolationWidths 61 0.013883597 insert K'+width:InterpolationWidths 62 0.014645045 insert K'+width:InterpolationWidths 63 0.015443661 insert K'+width:InterpolationWidths 64 0.016281968 insert K'+width:InterpolationWidths 65 0.01716272 insert K'+width:InterpolationWidths 66 0.018088927 insert K'+width:InterpolationWidths 67 0.019063877 insert K'+width:InterpolationWidths 68 0.020091159 insert K'+width:InterpolationWidths 69 0.021174686 insert K'+width:InterpolationWidths 70 0.022318722 insert K'+width:InterpolationWidths 71 0.023527899 insert K'+width:InterpolationWidths 72 0.024807237 insert K'+width:InterpolationWidths 73 0.026162154 insert K'+width:InterpolationWidths 74 0.027598466 insert K'+width:InterpolationWidths 75 0.029122375 insert K'+width:InterpolationWidths 76 0.030740427 insert K'+width:InterpolationWidths 77 0.032459448 insert K'+width:InterpolationWidths 78 0.034286439 insert K'+width:InterpolationWidths 79 0.036228418 insert K'+width:InterpolationWidths 80 0.038292203 insert K'+width:InterpolationWidths 81 0.040484124 insert K'+width:InterpolationWidths 82 0.042809659 insert K'+width:InterpolationWidths 83 0.045273004 insert K'+width:InterpolationWidths 84 0.047876583 insert K'+width:InterpolationWidths 85 0.050620553 insert K'+width:InterpolationWidths 86 0.053502333 insert K'+width:InterpolationWidths 87 0.056516252 insert K'+width:InterpolationWidths 88 0.059653374 insert K'+width:InterpolationWidths 89 0.062901572 insert K'+width:InterpolationWidths 90 0.066245865 insert K'+width:InterpolationWidths 91 0.069669015 insert K'+width:InterpolationWidths 92 0.073152311 insert K'+width:InterpolationWidths 93 0.076676437 insert K'+width:InterpolationWidths 94 0.080222322 insert K'+width:InterpolationWidths 95 0.083771868 insert K'+width:InterpolationWidths 96 0.087308504 insert K'+width:InterpolationWidths 97 0.090817543 insert K'+width:InterpolationWidths 98 0.094286351 insert K'+width:InterpolationWidths 99 0.097704358 insert K'+width:InterpolationWidths 100 0.10106296 insert K'+width:InterpolationWidths 101 0.10435537 insert K'+width:InterpolationWidths 102 0.10757636 insert K'+width:InterpolationWidths 103 0.11072211 insert K'+width:InterpolationWidths 104 0.11378993 insert K'+width:InterpolationWidths 105 0.11677812 insert K'+width:InterpolationWidths 106 0.11968576 insert K'+width:InterpolationWidths 107 0.12251257 insert K'+width:InterpolationWidths 108 0.018942575 insert K'+width:InterpolationWidths 109 0.020065233 insert K'+width:InterpolationWidths 110 0.021237178 insert K'+width:InterpolationWidths 111 0.02246113 insert K'+width:InterpolationWidths 112 0.023740053 insert K'+width:InterpolationWidths 113 0.025077175 insert K'+width:InterpolationWidths 114 0.026476019 insert K'+width:InterpolationWidths 115 0.027940426 insert K'+width:InterpolationWidths 116 0.029474588 insert K'+width:InterpolationWidths 117 0.031083084 insert K'+width:InterpolationWidths 118 0.032770912 insert K'+width:InterpolationWidths 119 0.034543534 insert K'+width:InterpolationWidths 120 0.036406917 insert K'+width:InterpolationWidths 121 0.038367579 insert K'+width:InterpolationWidths 122 0.040432636 insert K'+width:InterpolationWidths 123 0.042609857 insert K'+width:InterpolationWidths 124 0.044907704 insert K'+width:InterpolationWidths 125 0.047335386 insert K'+width:InterpolationWidths 126 0.049902895 insert K'+width:InterpolationWidths 127 0.052621035 insert K'+width:InterpolationWidths 128 0.055501434 insert K'+width:InterpolationWidths 129 0.058556529 insert K'+width:InterpolationWidths 130 0.061799509 insert K'+width:InterpolationWidths 131 0.065244208 insert K'+width:InterpolationWidths 132 0.068904923 insert K'+width:InterpolationWidths 133 0.072796135 insert K'+width:InterpolationWidths 134 0.076932125 insert K'+width:InterpolationWidths 135 0.081326437 insert K'+width:InterpolationWidths 136 0.085991199 insert K'+width:InterpolationWidths 137 0.090936286 insert K'+width:InterpolationWidths 138 0.096168362 insert K'+width:InterpolationWidths 139 0.10168985 insert K'+width:InterpolationWidths 140 0.1074979 insert K'+width:InterpolationWidths 141 0.11358358 insert K'+width:InterpolationWidths 142 0.1199313 insert K'+width:InterpolationWidths 143 0.12651876 insert K'+width:InterpolationWidths 144 0.13331739 insert K'+width:InterpolationWidths 145 0.14029337 insert K'+width:InterpolationWidths 146 0.14740912 insert K'+width:InterpolationWidths 147 0.15462504 insert K'+width:InterpolationWidths 148 0.16190132 insert K'+width:InterpolationWidths 149 0.16919956 insert K'+width:InterpolationWidths 150 0.17648409 insert K'+width:InterpolationWidths 151 0.18372289 insert K'+width:InterpolationWidths 152 0.19088808 insert K'+width:InterpolationWidths 153 0.19795608 insert K'+width:InterpolationWidths 154 0.20490753 insert K'+width:InterpolationWidths 155 0.21172693 insert K'+width:InterpolationWidths 156 0.21840227 insert K'+width:InterpolationWidths 157 0.22492457 insert K'+width:InterpolationWidths 158 0.23128746 insert K'+width:InterpolationWidths 159 0.23748671 insert K'+width:InterpolationWidths 160 0.24351987 insert K'+width:InterpolationWidths 161 0.24938593 insert K'+width:InterpolationWidths 162 0.008688013 insert K'+width:InterpolationWidths 163 0.0098593981 insert K'+width:InterpolationWidths 164 0.011115288 insert K'+width:InterpolationWidths 165 0.012457095 insert K'+width:InterpolationWidths 166 0.01388621 insert K'+width:InterpolationWidths 167 0.015403998 insert K'+width:InterpolationWidths 168 0.017011798 insert K'+width:InterpolationWidths 169 0.018710926 insert K'+width:InterpolationWidths 170 0.020502673 insert K'+width:InterpolationWidths 171 0.022388308 insert K'+width:InterpolationWidths 172 0.024369077 insert K'+width:InterpolationWidths 173 0.0264462 insert K'+width:InterpolationWidths 174 0.028620882 insert K'+width:InterpolationWidths 175 0.030894304 insert K'+width:InterpolationWidths 176 0.033267627 insert K'+width:InterpolationWidths 177 0.035741997 insert K'+width:InterpolationWidths 178 0.038318538 insert K'+width:InterpolationWidths 179 0.040998362 insert K'+width:InterpolationWidths 180 0.043782562 insert K'+width:InterpolationWidths 181 0.046672216 insert K'+width:InterpolationWidths 182 0.049668388 insert K'+width:InterpolationWidths 183 0.052772131 insert K'+width:InterpolationWidths 184 0.055984482 insert K'+width:InterpolationWidths 185 0.059306466 insert K'+width:InterpolationWidths 186 0.062739098 insert K'+width:InterpolationWidths 187 0.066283381 insert K'+width:InterpolationWidths 188 0.06994031 insert K'+width:InterpolationWidths 189 0.073710866 insert K'+width:InterpolationWidths 190 0.077596025 insert K'+width:InterpolationWidths 191 0.081596751 insert K'+width:InterpolationWidths 192 0.085714002 insert K'+width:InterpolationWidths 193 0.089948728 insert K'+width:InterpolationWidths 194 0.09430187 insert K'+width:InterpolationWidths 195 0.098774363 insert K'+width:InterpolationWidths 196 0.10336714 insert K'+width:InterpolationWidths 197 0.10808107 insert K'+width:InterpolationWidths 198 0.11291697 insert K'+width:InterpolationWidths 199 0.11787566 insert K'+width:InterpolationWidths 200 0.122958 insert K'+width:InterpolationWidths 201 0.12816482 insert K'+width:InterpolationWidths 202 0.13349696 insert K'+width:InterpolationWidths 203 0.13895527 insert K'+width:InterpolationWidths 204 0.14454056 insert K'+width:InterpolationWidths 205 0.15025367 insert K'+width:InterpolationWidths 206 0.15609543 insert K'+width:InterpolationWidths 207 0.16206665 insert K'+width:InterpolationWidths 208 0.16816815 insert K'+width:InterpolationWidths 209 0.17440075 insert K'+width:InterpolationWidths 210 0.18076526 insert K'+width:InterpolationWidths 211 0.18726248 insert K'+width:InterpolationWidths 212 0.19389233 insert K'+width:InterpolationWidths 213 0.20065739 insert K'+width:InterpolationWidths 214 0.20755757 insert K'+width:InterpolationWidths 215 0.21459369 insert K'+width:InterpolationWidths 216 0.00043012558 insert K'+width:InterpolationWidths 217 0.00050197775 insert K'+width:InterpolationWidths 218 0.00058540934 insert K'+width:InterpolationWidths 219 0.000682405 insert K'+width:InterpolationWidths 220 0.00079526793 insert K'+width:InterpolationWidths 221 0.00092660668 insert K'+width:InterpolationWidths 222 0.0010792675 insert K'+width:InterpolationWidths 223 0.0012561981 insert K'+width:InterpolationWidths 224 0.0014602538 insert K'+width:InterpolationWidths 225 0.00169399 insert K'+width:InterpolationWidths 226 0.0019595055 insert K'+width:InterpolationWidths 227 0.0022583772 insert K'+width:InterpolationWidths 228 0.0025916867 insert K'+width:InterpolationWidths 229 0.0029601042 insert K'+width:InterpolationWidths 230 0.0033639909 insert K'+width:InterpolationWidths 231 0.0038034933 insert K'+width:InterpolationWidths 232 0.0042786184 insert K'+width:InterpolationWidths 233 0.0047892893 insert K'+width:InterpolationWidths 234 0.0053353829 insert K'+width:InterpolationWidths 235 0.0059167558 insert K'+width:InterpolationWidths 236 0.0065332605 insert K'+width:InterpolationWidths 237 0.0071847556 insert K'+width:InterpolationWidths 238 0.0078711121 insert K'+width:InterpolationWidths 239 0.0085922164 insert K'+width:InterpolationWidths 240 0.0093479723 insert K'+width:InterpolationWidths 241 0.010138301 insert K'+width:InterpolationWidths 242 0.010963143 insert K'+width:InterpolationWidths 243 0.011822452 insert K'+width:InterpolationWidths 244 0.012716203 insert K'+width:InterpolationWidths 245 0.013644383 insert K'+width:InterpolationWidths 246 0.014606993 insert K'+width:InterpolationWidths 247 0.015604049 insert K'+width:InterpolationWidths 248 0.016635579 insert K'+width:InterpolationWidths 249 0.017701623 insert K'+width:InterpolationWidths 250 0.01880223 insert K'+width:InterpolationWidths 251 0.019937461 insert K'+width:InterpolationWidths 252 0.021107383 insert K'+width:InterpolationWidths 253 0.022312075 insert K'+width:InterpolationWidths 254 0.023551622 insert K'+width:InterpolationWidths 255 0.024826117 insert K'+width:InterpolationWidths 256 0.026135658 insert K'+width:InterpolationWidths 257 0.027480351 insert K'+width:InterpolationWidths 258 0.028860308 insert K'+width:InterpolationWidths 259 0.030275644 insert K'+width:InterpolationWidths 260 0.031726483 insert K'+width:InterpolationWidths 261 0.033212951 insert K'+width:InterpolationWidths 262 0.034735178 insert K'+width:InterpolationWidths 263 0.036293299 insert K'+width:InterpolationWidths 264 0.037887453 insert K'+width:InterpolationWidths 265 0.039517783 insert K'+width:InterpolationWidths 266 0.041184434 insert K'+width:InterpolationWidths 267 0.042887556 insert K'+width:InterpolationWidths 268 0.044627299 insert K'+width:InterpolationWidths 269 0.046403819 insert K'+width:InterpolationWidths 270 0.00082374588 insert K'+width:InterpolationWidths 271 0.00096091698 insert K'+width:InterpolationWidths 272 0.001119997 insert K'+width:InterpolationWidths 273 0.0013047242 insert K'+width:InterpolationWidths 274 0.0015194634 insert K'+width:InterpolationWidths 275 0.0017692097 insert K'+width:InterpolationWidths 276 0.0020594987 insert K'+width:InterpolationWidths 277 0.0023961877 insert K'+width:InterpolationWidths 278 0.0027851045 insert K'+width:InterpolationWidths 279 0.0032316295 insert K'+width:InterpolationWidths 280 0.0037403295 insert K'+width:InterpolationWidths 281 0.0043147526 insert K'+width:InterpolationWidths 282 0.0049574171 insert K'+width:InterpolationWidths 283 0.0056699454 insert K'+width:InterpolationWidths 284 0.006453263 insert K'+width:InterpolationWidths 285 0.0073077971 insert K'+width:InterpolationWidths 286 0.0082336435 insert K'+width:InterpolationWidths 287 0.0092306918 insert K'+width:InterpolationWidths 288 0.010298714 insert K'+width:InterpolationWidths 289 0.011437426 insert K'+width:InterpolationWidths 290 0.012646522 insert K'+width:InterpolationWidths 291 0.013925705 insert K'+width:InterpolationWidths 292 0.015274698 insert K'+width:InterpolationWidths 293 0.016693254 insert K'+width:InterpolationWidths 294 0.018181157 insert K'+width:InterpolationWidths 295 0.019738232 insert K'+width:InterpolationWidths 296 0.021364335 insert K'+width:InterpolationWidths 297 0.023059359 insert K'+width:InterpolationWidths 298 0.02482323 insert K'+width:InterpolationWidths 299 0.026655906 insert K'+width:InterpolationWidths 300 0.028557374 insert K'+width:InterpolationWidths 301 0.030527649 insert K'+width:InterpolationWidths 302 0.032566772 insert K'+width:InterpolationWidths 303 0.034674808 insert K'+width:InterpolationWidths 304 0.036851843 insert K'+width:InterpolationWidths 305 0.039097984 insert K'+width:InterpolationWidths 306 0.041413357 insert K'+width:InterpolationWidths 307 0.043798107 insert K'+width:InterpolationWidths 308 0.046252393 insert K'+width:InterpolationWidths 309 0.048776389 insert K'+width:InterpolationWidths 310 0.051370286 insert K'+width:InterpolationWidths 311 0.054034285 insert K'+width:InterpolationWidths 312 0.056768599 insert K'+width:InterpolationWidths 313 0.059573455 insert K'+width:InterpolationWidths 314 0.062449088 insert K'+width:InterpolationWidths 315 0.065395743 insert K'+width:InterpolationWidths 316 0.068413675 insert K'+width:InterpolationWidths 317 0.071503146 insert K'+width:InterpolationWidths 318 0.074664428 insert K'+width:InterpolationWidths 319 0.0778978 insert K'+width:InterpolationWidths 320 0.081203545 insert K'+width:InterpolationWidths 321 0.084581957 insert K'+width:InterpolationWidths 322 0.088033332 insert K'+width:InterpolationWidths 323 0.091557976 insert K'+width:NumberofEntries 0 54 insert K'+width:NumberofEntries 1 108 insert K'+width:NumberofEntries 2 162 insert K'+width:NumberofEntries 3 216 insert K'+width:NumberofEntries 4 270 insert K'+width:NumberofEntries 5 324 newdef /Herwig/Particles/K'+:Width_generator K'+width newdef /Herwig/Particles/K'-:Width_generator K'+width # create Herwig::GenericWidthGenerator K'*+width newdef K'*+width:Particle /Herwig/Particles/K'*+ newdef K'*+width:Prefactor 0.999251 newdef K'*+width:BRNormalize 1 newdef K'*+width:BRMinimum 0.01 newdef K'*+width:Points 50 newdef K'*+width:InterpolationOrder 1 insert K'*+width:MEtype 0 2 insert K'*+width:MEtype 1 2 insert K'*+width:MEtype 2 1 insert K'*+width:MEtype 3 1 insert K'*+width:MEcode 0 0 insert K'*+width:MEcode 1 0 insert K'*+width:MEcode 2 0 insert K'*+width:MEcode 3 0 insert K'*+width:MEcoupling 0 0.974601 insert K'*+width:MEcoupling 1 1.02752 insert K'*+width:MEcoupling 2 0.914796 insert K'*+width:MEcoupling 3 1.30008 insert K'*+width:ModeOn 0 1 insert K'*+width:ModeOn 1 1 insert K'*+width:ModeOn 2 1 insert K'*+width:ModeOn 3 1 insert K'*+width:MinimumMasses 0 0.776638 insert K'*+width:MinimumMasses 1 0.78557 insert K'*+width:MinimumMasses 2 0.628655 insert K'*+width:MinimumMasses 3 0.637218 insert K'*+width:MEmass1 0 0.89166 insert K'*+width:MEmass1 1 0.896 insert K'*+width:MEmass1 2 0.493677 insert K'*+width:MEmass1 3 0.497648 insert K'*+width:MEmass2 0 0.134978 insert K'*+width:MEmass2 1 0.13957 insert K'*+width:MEmass2 2 0.134978 insert K'*+width:MEmass2 3 0.13957 insert K'*+width:DecayModes 0 K'*+->K*+,pi0; insert K'*+width:DecayModes 1 K'*+->K*0,pi+; insert K'*+width:DecayModes 2 K'*+->K+,pi0; insert K'*+width:DecayModes 3 K'*+->K0,pi+; insert K'*+width:InterpolationMasses 0 0.91212245 insert K'*+width:InterpolationMasses 1 0.93106122 insert K'*+width:InterpolationMasses 2 0.95 insert K'*+width:InterpolationMasses 3 0.96893878 insert K'*+width:InterpolationMasses 4 0.98787755 insert K'*+width:InterpolationMasses 5 1.0068163 insert K'*+width:InterpolationMasses 6 1.0257551 insert K'*+width:InterpolationMasses 7 1.0446939 insert K'*+width:InterpolationMasses 8 1.0636327 insert K'*+width:InterpolationMasses 9 1.0825714 insert K'*+width:InterpolationMasses 10 1.1015102 insert K'*+width:InterpolationMasses 11 1.120449 insert K'*+width:InterpolationMasses 12 1.1393878 insert K'*+width:InterpolationMasses 13 1.1583265 insert K'*+width:InterpolationMasses 14 1.1772653 insert K'*+width:InterpolationMasses 15 1.1962041 insert K'*+width:InterpolationMasses 16 1.2151429 insert K'*+width:InterpolationMasses 17 1.2340816 insert K'*+width:InterpolationMasses 18 1.2530204 insert K'*+width:InterpolationMasses 19 1.2719592 insert K'*+width:InterpolationMasses 20 1.290898 insert K'*+width:InterpolationMasses 21 1.3098367 insert K'*+width:InterpolationMasses 22 1.3287755 insert K'*+width:InterpolationMasses 23 1.3477143 insert K'*+width:InterpolationMasses 24 1.3666531 insert K'*+width:InterpolationMasses 25 1.3855918 insert K'*+width:InterpolationMasses 26 1.4045306 insert K'*+width:InterpolationMasses 27 1.4234694 insert K'*+width:InterpolationMasses 28 1.4424082 insert K'*+width:InterpolationMasses 29 1.4613469 insert K'*+width:InterpolationMasses 30 1.4802857 insert K'*+width:InterpolationMasses 31 1.4992245 insert K'*+width:InterpolationMasses 32 1.5181633 insert K'*+width:InterpolationMasses 33 1.537102 insert K'*+width:InterpolationMasses 34 1.5560408 insert K'*+width:InterpolationMasses 35 1.5749796 insert K'*+width:InterpolationMasses 36 1.5939184 insert K'*+width:InterpolationMasses 37 1.6128571 insert K'*+width:InterpolationMasses 38 1.6317959 insert K'*+width:InterpolationMasses 39 1.6507347 insert K'*+width:InterpolationMasses 40 1.6696735 insert K'*+width:InterpolationMasses 41 1.6886122 insert K'*+width:InterpolationMasses 42 1.707551 insert K'*+width:InterpolationMasses 43 1.7264898 insert K'*+width:InterpolationMasses 44 1.7454286 insert K'*+width:InterpolationMasses 45 1.7643673 insert K'*+width:InterpolationMasses 46 1.7833061 insert K'*+width:InterpolationMasses 47 1.8022449 insert K'*+width:InterpolationMasses 48 1.8211837 insert K'*+width:InterpolationMasses 49 1.8401224 insert K'*+width:InterpolationMasses 50 1.8590612 insert K'*+width:InterpolationMasses 51 1.878 insert K'*+width:InterpolationMasses 52 1.8969388 insert K'*+width:InterpolationMasses 53 1.9158776 insert K'*+width:InterpolationMasses 54 0.91212245 insert K'*+width:InterpolationMasses 55 0.93106122 insert K'*+width:InterpolationMasses 56 0.95 insert K'*+width:InterpolationMasses 57 0.96893878 insert K'*+width:InterpolationMasses 58 0.98787755 insert K'*+width:InterpolationMasses 59 1.0068163 insert K'*+width:InterpolationMasses 60 1.0257551 insert K'*+width:InterpolationMasses 61 1.0446939 insert K'*+width:InterpolationMasses 62 1.0636327 insert K'*+width:InterpolationMasses 63 1.0825714 insert K'*+width:InterpolationMasses 64 1.1015102 insert K'*+width:InterpolationMasses 65 1.120449 insert K'*+width:InterpolationMasses 66 1.1393878 insert K'*+width:InterpolationMasses 67 1.1583265 insert K'*+width:InterpolationMasses 68 1.1772653 insert K'*+width:InterpolationMasses 69 1.1962041 insert K'*+width:InterpolationMasses 70 1.2151429 insert K'*+width:InterpolationMasses 71 1.2340816 insert K'*+width:InterpolationMasses 72 1.2530204 insert K'*+width:InterpolationMasses 73 1.2719592 insert K'*+width:InterpolationMasses 74 1.290898 insert K'*+width:InterpolationMasses 75 1.3098367 insert K'*+width:InterpolationMasses 76 1.3287755 insert K'*+width:InterpolationMasses 77 1.3477143 insert K'*+width:InterpolationMasses 78 1.3666531 insert K'*+width:InterpolationMasses 79 1.3855918 insert K'*+width:InterpolationMasses 80 1.4045306 insert K'*+width:InterpolationMasses 81 1.4234694 insert K'*+width:InterpolationMasses 82 1.4424082 insert K'*+width:InterpolationMasses 83 1.4613469 insert K'*+width:InterpolationMasses 84 1.4802857 insert K'*+width:InterpolationMasses 85 1.4992245 insert K'*+width:InterpolationMasses 86 1.5181633 insert K'*+width:InterpolationMasses 87 1.537102 insert K'*+width:InterpolationMasses 88 1.5560408 insert K'*+width:InterpolationMasses 89 1.5749796 insert K'*+width:InterpolationMasses 90 1.5939184 insert K'*+width:InterpolationMasses 91 1.6128571 insert K'*+width:InterpolationMasses 92 1.6317959 insert K'*+width:InterpolationMasses 93 1.6507347 insert K'*+width:InterpolationMasses 94 1.6696735 insert K'*+width:InterpolationMasses 95 1.6886122 insert K'*+width:InterpolationMasses 96 1.707551 insert K'*+width:InterpolationMasses 97 1.7264898 insert K'*+width:InterpolationMasses 98 1.7454286 insert K'*+width:InterpolationMasses 99 1.7643673 insert K'*+width:InterpolationMasses 100 1.7833061 insert K'*+width:InterpolationMasses 101 1.8022449 insert K'*+width:InterpolationMasses 102 1.8211837 insert K'*+width:InterpolationMasses 103 1.8401224 insert K'*+width:InterpolationMasses 104 1.8590612 insert K'*+width:InterpolationMasses 105 1.878 insert K'*+width:InterpolationMasses 106 1.8969388 insert K'*+width:InterpolationMasses 107 1.9158776 insert K'*+width:InterpolationWidths 0 8.3116862e-06 insert K'*+width:InterpolationWidths 1 1.6342279e-05 insert K'*+width:InterpolationWidths 2 3.0911965e-05 insert K'*+width:InterpolationWidths 3 5.72694e-05 insert K'*+width:InterpolationWidths 4 0.00010595936 insert K'*+width:InterpolationWidths 5 0.00020074147 insert K'*+width:InterpolationWidths 6 0.00039778237 insert K'*+width:InterpolationWidths 7 0.0007863174 insert K'*+width:InterpolationWidths 8 0.0014236498 insert K'*+width:InterpolationWidths 9 0.0023296604 insert K'*+width:InterpolationWidths 10 0.0035165639 insert K'*+width:InterpolationWidths 11 0.0049964021 insert K'*+width:InterpolationWidths 12 0.0067815533 insert K'*+width:InterpolationWidths 13 0.0088844699 insert K'*+width:InterpolationWidths 14 0.011317461 insert K'*+width:InterpolationWidths 15 0.014092569 insert K'*+width:InterpolationWidths 16 0.017221512 insert K'*+width:InterpolationWidths 17 0.020715663 insert K'*+width:InterpolationWidths 18 0.024586049 insert K'*+width:InterpolationWidths 19 0.028843367 insert K'*+width:InterpolationWidths 20 0.033498005 insert K'*+width:InterpolationWidths 21 0.038560057 insert K'*+width:InterpolationWidths 22 0.044039353 insert K'*+width:InterpolationWidths 23 0.049945477 insert K'*+width:InterpolationWidths 24 0.056287794 insert K'*+width:InterpolationWidths 25 0.063075463 insert K'*+width:InterpolationWidths 26 0.070317462 insert K'*+width:InterpolationWidths 27 0.078022604 insert K'*+width:InterpolationWidths 28 0.08619955 insert K'*+width:InterpolationWidths 29 0.09485683 insert K'*+width:InterpolationWidths 30 0.10400285 insert K'*+width:InterpolationWidths 31 0.1136459 insert K'*+width:InterpolationWidths 32 0.1237942 insert K'*+width:InterpolationWidths 33 0.13445584 insert K'*+width:InterpolationWidths 34 0.14563818 insert K'*+width:InterpolationWidths 35 0.15734763 insert K'*+width:InterpolationWidths 36 0.16958862 insert K'*+width:InterpolationWidths 37 0.18237477 insert K'*+width:InterpolationWidths 38 0.19570587 insert K'*+width:InterpolationWidths 39 0.20959082 insert K'*+width:InterpolationWidths 40 0.22403618 insert K'*+width:InterpolationWidths 41 0.23904844 insert K'*+width:InterpolationWidths 42 0.25463402 insert K'*+width:InterpolationWidths 43 0.27079932 insert K'*+width:InterpolationWidths 44 0.28755067 insert K'*+width:InterpolationWidths 45 0.30489437 insert K'*+width:InterpolationWidths 46 0.32283667 insert K'*+width:InterpolationWidths 47 0.34138381 insert K'*+width:InterpolationWidths 48 0.36054197 insert K'*+width:InterpolationWidths 49 0.38031731 insert K'*+width:InterpolationWidths 50 0.400716 insert K'*+width:InterpolationWidths 51 0.42174414 insert K'*+width:InterpolationWidths 52 0.44340783 insert K'*+width:InterpolationWidths 53 0.46571318 insert K'*+width:InterpolationWidths 54 1.3221415e-05 insert K'*+width:InterpolationWidths 55 2.6124455e-05 insert K'*+width:InterpolationWidths 56 4.9389443e-05 insert K'*+width:InterpolationWidths 57 9.0923212e-05 insert K'*+width:InterpolationWidths 58 0.00016587723 insert K'*+width:InterpolationWidths 59 0.00030643479 insert K'*+width:InterpolationWidths 60 0.00058905704 insert K'*+width:InterpolationWidths 61 0.0011735097 insert K'*+width:InterpolationWidths 62 0.0022217518 insert K'*+width:InterpolationWidths 63 0.0037978628 insert K'*+width:InterpolationWidths 64 0.0059269204 insert K'*+width:InterpolationWidths 65 0.0086305521 insert K'*+width:InterpolationWidths 66 0.01193142 insert K'*+width:InterpolationWidths 67 0.015852856 insert K'*+width:InterpolationWidths 68 0.020418272 insert K'*+width:InterpolationWidths 69 0.025650782 insert K'*+width:InterpolationWidths 70 0.031573003 insert K'*+width:InterpolationWidths 71 0.038206962 insert K'*+width:InterpolationWidths 72 0.045574068 insert K'*+width:InterpolationWidths 73 0.053695114 insert K'*+width:InterpolationWidths 74 0.062590304 insert K'*+width:InterpolationWidths 75 0.072279288 insert K'*+width:InterpolationWidths 76 0.0827812 insert K'*+width:InterpolationWidths 77 0.094114697 insert K'*+width:InterpolationWidths 78 0.106298 insert K'*+width:InterpolationWidths 79 0.11934895 insert K'*+width:InterpolationWidths 80 0.133285 insert K'*+width:InterpolationWidths 81 0.14812329 insert K'*+width:InterpolationWidths 82 0.16388068 insert K'*+width:InterpolationWidths 83 0.18057373 insert K'*+width:InterpolationWidths 84 0.19821879 insert K'*+width:InterpolationWidths 85 0.21683197 insert K'*+width:InterpolationWidths 86 0.23642921 insert K'*+width:InterpolationWidths 87 0.25702624 insert K'*+width:InterpolationWidths 88 0.27863789 insert K'*+width:InterpolationWidths 89 0.30127649 insert K'*+width:InterpolationWidths 90 0.32495082 insert K'*+width:InterpolationWidths 91 0.34968643 insert K'*+width:InterpolationWidths 92 0.37548375 insert K'*+width:InterpolationWidths 93 0.40235979 insert K'*+width:InterpolationWidths 94 0.43032727 insert K'*+width:InterpolationWidths 95 0.45939879 insert K'*+width:InterpolationWidths 96 0.48958686 insert K'*+width:InterpolationWidths 97 0.52090388 insert K'*+width:InterpolationWidths 98 0.55336216 insert K'*+width:InterpolationWidths 99 0.58697395 insert K'*+width:InterpolationWidths 100 0.6217514 insert K'*+width:InterpolationWidths 101 0.65770661 insert K'*+width:InterpolationWidths 102 0.69485162 insert K'*+width:InterpolationWidths 103 0.73319842 insert K'*+width:InterpolationWidths 104 0.77275895 insert K'*+width:InterpolationWidths 105 0.81354512 insert K'*+width:InterpolationWidths 106 0.85556877 insert K'*+width:InterpolationWidths 107 0.89884176 insert K'*+width:NumberofEntries 0 54 insert K'*+width:NumberofEntries 1 108 insert K'*+width:NumberofEntries 2 108 insert K'*+width:NumberofEntries 3 108 newdef /Herwig/Particles/K'*+:Width_generator K'*+width newdef /Herwig/Particles/K'*-:Width_generator K'*+width # create Herwig::GenericWidthGenerator K'*0width newdef K'*0width:Particle /Herwig/Particles/K'*0 newdef K'*0width:Prefactor 0.999255 newdef K'*0width:BRNormalize 1 newdef K'*0width:BRMinimum 0.01 newdef K'*0width:Points 50 newdef K'*0width:InterpolationOrder 1 insert K'*0width:MEtype 0 2 insert K'*0width:MEtype 1 2 insert K'*0width:MEtype 2 1 insert K'*0width:MEtype 3 1 insert K'*0width:MEcode 0 0 insert K'*0width:MEcode 1 0 insert K'*0width:MEcode 2 0 insert K'*0width:MEcode 3 0 insert K'*0width:MEcoupling 0 1.00794 insert K'*0width:MEcoupling 1 0.993408 insert K'*0width:MEcoupling 2 1.29553 insert K'*0width:MEcoupling 3 0.917998 insert K'*0width:ModeOn 0 1 insert K'*0width:ModeOn 1 1 insert K'*0width:ModeOn 2 1 insert K'*0width:ModeOn 3 1 insert K'*0width:MinimumMasses 0 0.78123 insert K'*0width:MinimumMasses 1 0.780978 insert K'*0width:MinimumMasses 2 0.633247 insert K'*0width:MinimumMasses 3 0.632626 insert K'*0width:MEmass1 0 0.89166 insert K'*0width:MEmass1 1 0.896 insert K'*0width:MEmass1 2 0.493677 insert K'*0width:MEmass1 3 0.497648 insert K'*0width:MEmass2 0 0.13957 insert K'*0width:MEmass2 1 0.134978 insert K'*0width:MEmass2 2 0.13957 insert K'*0width:MEmass2 3 0.134978 insert K'*0width:DecayModes 0 K'*0->K*+,pi-; insert K'*0width:DecayModes 1 K'*0->K*0,pi0; insert K'*0width:DecayModes 2 K'*0->K+,pi-; insert K'*0width:DecayModes 3 K'*0->K0,pi0; insert K'*0width:InterpolationMasses 0 0.91212245 insert K'*0width:InterpolationMasses 1 0.93106122 insert K'*0width:InterpolationMasses 2 0.95 insert K'*0width:InterpolationMasses 3 0.96893878 insert K'*0width:InterpolationMasses 4 0.98787755 insert K'*0width:InterpolationMasses 5 1.0068163 insert K'*0width:InterpolationMasses 6 1.0257551 insert K'*0width:InterpolationMasses 7 1.0446939 insert K'*0width:InterpolationMasses 8 1.0636327 insert K'*0width:InterpolationMasses 9 1.0825714 insert K'*0width:InterpolationMasses 10 1.1015102 insert K'*0width:InterpolationMasses 11 1.120449 insert K'*0width:InterpolationMasses 12 1.1393878 insert K'*0width:InterpolationMasses 13 1.1583265 insert K'*0width:InterpolationMasses 14 1.1772653 insert K'*0width:InterpolationMasses 15 1.1962041 insert K'*0width:InterpolationMasses 16 1.2151429 insert K'*0width:InterpolationMasses 17 1.2340816 insert K'*0width:InterpolationMasses 18 1.2530204 insert K'*0width:InterpolationMasses 19 1.2719592 insert K'*0width:InterpolationMasses 20 1.290898 insert K'*0width:InterpolationMasses 21 1.3098367 insert K'*0width:InterpolationMasses 22 1.3287755 insert K'*0width:InterpolationMasses 23 1.3477143 insert K'*0width:InterpolationMasses 24 1.3666531 insert K'*0width:InterpolationMasses 25 1.3855918 insert K'*0width:InterpolationMasses 26 1.4045306 insert K'*0width:InterpolationMasses 27 1.4234694 insert K'*0width:InterpolationMasses 28 1.4424082 insert K'*0width:InterpolationMasses 29 1.4613469 insert K'*0width:InterpolationMasses 30 1.4802857 insert K'*0width:InterpolationMasses 31 1.4992245 insert K'*0width:InterpolationMasses 32 1.5181633 insert K'*0width:InterpolationMasses 33 1.537102 insert K'*0width:InterpolationMasses 34 1.5560408 insert K'*0width:InterpolationMasses 35 1.5749796 insert K'*0width:InterpolationMasses 36 1.5939184 insert K'*0width:InterpolationMasses 37 1.6128571 insert K'*0width:InterpolationMasses 38 1.6317959 insert K'*0width:InterpolationMasses 39 1.6507347 insert K'*0width:InterpolationMasses 40 1.6696735 insert K'*0width:InterpolationMasses 41 1.6886122 insert K'*0width:InterpolationMasses 42 1.707551 insert K'*0width:InterpolationMasses 43 1.7264898 insert K'*0width:InterpolationMasses 44 1.7454286 insert K'*0width:InterpolationMasses 45 1.7643673 insert K'*0width:InterpolationMasses 46 1.7833061 insert K'*0width:InterpolationMasses 47 1.8022449 insert K'*0width:InterpolationMasses 48 1.8211837 insert K'*0width:InterpolationMasses 49 1.8401224 insert K'*0width:InterpolationMasses 50 1.8590612 insert K'*0width:InterpolationMasses 51 1.878 insert K'*0width:InterpolationMasses 52 1.8969388 insert K'*0width:InterpolationMasses 53 1.9158776 insert K'*0width:InterpolationMasses 54 0.91212245 insert K'*0width:InterpolationMasses 55 0.93106122 insert K'*0width:InterpolationMasses 56 0.95 insert K'*0width:InterpolationMasses 57 0.96893878 insert K'*0width:InterpolationMasses 58 0.98787755 insert K'*0width:InterpolationMasses 59 1.0068163 insert K'*0width:InterpolationMasses 60 1.0257551 insert K'*0width:InterpolationMasses 61 1.0446939 insert K'*0width:InterpolationMasses 62 1.0636327 insert K'*0width:InterpolationMasses 63 1.0825714 insert K'*0width:InterpolationMasses 64 1.1015102 insert K'*0width:InterpolationMasses 65 1.120449 insert K'*0width:InterpolationMasses 66 1.1393878 insert K'*0width:InterpolationMasses 67 1.1583265 insert K'*0width:InterpolationMasses 68 1.1772653 insert K'*0width:InterpolationMasses 69 1.1962041 insert K'*0width:InterpolationMasses 70 1.2151429 insert K'*0width:InterpolationMasses 71 1.2340816 insert K'*0width:InterpolationMasses 72 1.2530204 insert K'*0width:InterpolationMasses 73 1.2719592 insert K'*0width:InterpolationMasses 74 1.290898 insert K'*0width:InterpolationMasses 75 1.3098367 insert K'*0width:InterpolationMasses 76 1.3287755 insert K'*0width:InterpolationMasses 77 1.3477143 insert K'*0width:InterpolationMasses 78 1.3666531 insert K'*0width:InterpolationMasses 79 1.3855918 insert K'*0width:InterpolationMasses 80 1.4045306 insert K'*0width:InterpolationMasses 81 1.4234694 insert K'*0width:InterpolationMasses 82 1.4424082 insert K'*0width:InterpolationMasses 83 1.4613469 insert K'*0width:InterpolationMasses 84 1.4802857 insert K'*0width:InterpolationMasses 85 1.4992245 insert K'*0width:InterpolationMasses 86 1.5181633 insert K'*0width:InterpolationMasses 87 1.537102 insert K'*0width:InterpolationMasses 88 1.5560408 insert K'*0width:InterpolationMasses 89 1.5749796 insert K'*0width:InterpolationMasses 90 1.5939184 insert K'*0width:InterpolationMasses 91 1.6128571 insert K'*0width:InterpolationMasses 92 1.6317959 insert K'*0width:InterpolationMasses 93 1.6507347 insert K'*0width:InterpolationMasses 94 1.6696735 insert K'*0width:InterpolationMasses 95 1.6886122 insert K'*0width:InterpolationMasses 96 1.707551 insert K'*0width:InterpolationMasses 97 1.7264898 insert K'*0width:InterpolationMasses 98 1.7454286 insert K'*0width:InterpolationMasses 99 1.7643673 insert K'*0width:InterpolationMasses 100 1.7833061 insert K'*0width:InterpolationMasses 101 1.8022449 insert K'*0width:InterpolationMasses 102 1.8211837 insert K'*0width:InterpolationMasses 103 1.8401224 insert K'*0width:InterpolationMasses 104 1.8590612 insert K'*0width:InterpolationMasses 105 1.878 insert K'*0width:InterpolationMasses 106 1.8969388 insert K'*0width:InterpolationMasses 107 1.9158776 insert K'*0width:InterpolationWidths 0 1.4118802e-05 insert K'*0width:InterpolationWidths 1 2.808766e-05 insert K'*0width:InterpolationWidths 2 5.3517423e-05 insert K'*0width:InterpolationWidths 3 9.9457288e-05 insert K'*0width:InterpolationWidths 4 0.00018368441 insert K'*0width:InterpolationWidths 5 0.00034514231 insert K'*0width:InterpolationWidths 6 0.00067700638 insert K'*0width:InterpolationWidths 7 0.001352074 insert K'*0width:InterpolationWidths 8 0.0025096436 insert K'*0width:InterpolationWidths 9 0.0041986295 insert K'*0width:InterpolationWidths 10 0.0064424277 insert K'*0width:InterpolationWidths 11 0.0092630197 insert K'*0width:InterpolationWidths 12 0.012683354 insert K'*0width:InterpolationWidths 13 0.016726857 insert K'*0width:InterpolationWidths 14 0.021416913 insert K'*0width:InterpolationWidths 15 0.026776545 insert K'*0width:InterpolationWidths 16 0.032828249 insert K'*0width:InterpolationWidths 17 0.039593925 insert K'*0width:InterpolationWidths 18 0.047094855 insert K'*0width:InterpolationWidths 19 0.055351716 insert K'*0width:InterpolationWidths 20 0.064384608 insert K'*0width:InterpolationWidths 21 0.074213089 insert K'*0width:InterpolationWidths 22 0.084856215 insert K'*0width:InterpolationWidths 23 0.096332583 insert K'*0width:InterpolationWidths 24 0.10866037 insert K'*0width:InterpolationWidths 25 0.12185736 insert K'*0width:InterpolationWidths 26 0.13594099 insert K'*0width:InterpolationWidths 27 0.1509284 insert K'*0width:InterpolationWidths 28 0.16683642 insert K'*0width:InterpolationWidths 29 0.18368164 insert K'*0width:InterpolationWidths 30 0.2014804 insert K'*0width:InterpolationWidths 31 0.22024885 insert K'*0width:InterpolationWidths 32 0.24000294 insert K'*0width:InterpolationWidths 33 0.26075845 insert K'*0width:InterpolationWidths 34 0.28253032 insert K'*0width:InterpolationWidths 35 0.30533086 insert K'*0width:InterpolationWidths 36 0.3291684 insert K'*0width:InterpolationWidths 37 0.35406981 insert K'*0width:InterpolationWidths 38 0.38003421 insert K'*0width:InterpolationWidths 39 0.40707906 insert K'*0width:InterpolationWidths 40 0.4352171 insert K'*0width:InterpolationWidths 41 0.46446095 insert K'*0width:InterpolationWidths 42 0.49482312 insert K'*0width:InterpolationWidths 43 0.52631605 insert K'*0width:InterpolationWidths 44 0.55895207 insert K'*0width:InterpolationWidths 45 0.59274344 insert K'*0width:InterpolationWidths 46 0.62770233 insert K'*0width:InterpolationWidths 47 0.66384087 insert K'*0width:InterpolationWidths 48 0.70117112 insert K'*0width:InterpolationWidths 49 0.73970509 insert K'*0width:InterpolationWidths 50 0.77945475 insert K'*0width:InterpolationWidths 51 0.82043203 insert K'*0width:InterpolationWidths 52 0.8626488 insert K'*0width:InterpolationWidths 53 0.90611693 insert K'*0width:InterpolationWidths 54 7.7715469e-06 insert K'*0width:InterpolationWidths 55 1.5173885e-05 insert K'*0width:InterpolationWidths 56 2.8469953e-05 insert K'*0width:InterpolationWidths 57 5.2222364e-05 insert K'*0width:InterpolationWidths 58 9.5356899e-05 insert K'*0width:InterpolationWidths 59 0.00017738363 insert K'*0width:InterpolationWidths 60 0.0003450238 insert K'*0width:InterpolationWidths 61 0.0006850111 insert K'*0width:InterpolationWidths 62 0.0012671458 insert K'*0width:InterpolationWidths 63 0.0021164048 insert K'*0width:InterpolationWidths 64 0.003245369 insert K'*0width:InterpolationWidths 65 0.0046659231 insert K'*0width:InterpolationWidths 66 0.0063903571 insert K'*0width:InterpolationWidths 67 0.0084311174 insert K'*0width:InterpolationWidths 68 0.010800555 insert K'*0width:InterpolationWidths 69 0.013510779 insert K'*0width:InterpolationWidths 70 0.016573581 insert K'*0width:InterpolationWidths 71 0.020000408 insert K'*0width:InterpolationWidths 72 0.023802359 insert K'*0width:InterpolationWidths 73 0.027990198 insert K'*0width:InterpolationWidths 74 0.032574366 insert K'*0width:InterpolationWidths 75 0.037565009 insert K'*0width:InterpolationWidths 76 0.042971999 insert K'*0width:InterpolationWidths 77 0.048804954 insert K'*0width:InterpolationWidths 78 0.055073265 insert K'*0width:InterpolationWidths 79 0.061786113 insert K'*0width:InterpolationWidths 80 0.068952491 insert K'*0width:InterpolationWidths 81 0.076581217 insert K'*0width:InterpolationWidths 82 0.08468096 insert K'*0width:InterpolationWidths 83 0.093260244 insert K'*0width:InterpolationWidths 84 0.10232747 insert K'*0width:InterpolationWidths 85 0.11189093 insert K'*0width:InterpolationWidths 86 0.1219588 insert K'*0width:InterpolationWidths 87 0.13253918 insert K'*0width:InterpolationWidths 88 0.14363936 insert K'*0width:InterpolationWidths 89 0.15526367 insert K'*0width:InterpolationWidths 90 0.16742514 insert K'*0width:InterpolationWidths 91 0.1801242 insert K'*0width:InterpolationWidths 92 0.19336962 insert K'*0width:InterpolationWidths 93 0.20716801 insert K'*0width:InterpolationWidths 94 0.22152591 insert K'*0width:InterpolationWidths 95 0.23644979 insert K'*0width:InterpolationWidths 96 0.25194609 insert K'*0width:InterpolationWidths 97 0.26802118 insert K'*0width:InterpolationWidths 98 0.28468139 insert K'*0width:InterpolationWidths 99 0.30193299 insert K'*0width:InterpolationWidths 100 0.31978225 insert K'*0width:InterpolationWidths 101 0.33823536 insert K'*0width:InterpolationWidths 102 0.35729852 insert K'*0width:InterpolationWidths 103 0.37697788 insert K'*0width:InterpolationWidths 104 0.39727957 insert K'*0width:InterpolationWidths 105 0.41820969 insert K'*0width:InterpolationWidths 106 0.43977435 insert K'*0width:InterpolationWidths 107 0.46197961 insert K'*0width:NumberofEntries 0 54 insert K'*0width:NumberofEntries 1 108 insert K'*0width:NumberofEntries 2 108 insert K'*0width:NumberofEntries 3 108 newdef /Herwig/Particles/K'*0:Width_generator K'*0width newdef /Herwig/Particles/K'*bar0:Width_generator K'*0width # create Herwig::GenericWidthGenerator K''*0width newdef K''*0width:Particle /Herwig/Particles/K''*0 newdef K''*0width:Prefactor 0.999899 newdef K''*0width:BRNormalize 1 newdef K''*0width:BRMinimum 0.01 newdef K''*0width:Points 50 newdef K''*0width:InterpolationOrder 1 insert K''*0width:MEtype 0 2 insert K''*0width:MEtype 1 2 insert K''*0width:MEtype 2 1 insert K''*0width:MEtype 3 2 insert K''*0width:MEtype 4 1 insert K''*0width:MEtype 5 2 insert K''*0width:MEcode 0 0 insert K''*0width:MEcode 1 0 insert K''*0width:MEcode 2 0 insert K''*0width:MEcode 3 0 insert K''*0width:MEcode 4 0 insert K''*0width:MEcode 5 0 insert K''*0width:MEcoupling 0 0.998756 insert K''*0width:MEcoupling 1 1.00241 insert K''*0width:MEcoupling 2 3.11407 insert K''*0width:MEcoupling 3 1.00004 insert K''*0width:MEcoupling 4 2.20507 insert K''*0width:MEcoupling 5 1.01307 insert K''*0width:ModeOn 0 1 insert K''*0width:ModeOn 1 1 insert K''*0width:ModeOn 2 1 insert K''*0width:ModeOn 3 1 insert K''*0width:ModeOn 4 1 insert K''*0width:ModeOn 5 1 insert K''*0width:MinimumMasses 0 0.78123 insert K''*0width:MinimumMasses 1 0.780978 insert K''*0width:MinimumMasses 2 0.633247 insert K''*0width:MinimumMasses 3 0.869177 insert K''*0width:MinimumMasses 4 0.632626 insert K''*0width:MinimumMasses 5 0.873148 insert K''*0width:MEmass1 0 0.89166 insert K''*0width:MEmass1 1 0.896 insert K''*0width:MEmass1 2 0.493677 insert K''*0width:MEmass1 3 0.7755 insert K''*0width:MEmass1 4 0.497648 insert K''*0width:MEmass1 5 0.7755 insert K''*0width:MEmass2 0 0.13957 insert K''*0width:MEmass2 1 0.134978 insert K''*0width:MEmass2 2 0.13957 insert K''*0width:MEmass2 3 0.493677 insert K''*0width:MEmass2 4 0.134978 insert K''*0width:MEmass2 5 0.497648 insert K''*0width:DecayModes 0 K''*0->K*+,pi-; insert K''*0width:DecayModes 1 K''*0->K*0,pi0; insert K''*0width:DecayModes 2 K''*0->K+,pi-; insert K''*0width:DecayModes 3 K''*0->K+,rho-; insert K''*0width:DecayModes 4 K''*0->K0,pi0; insert K''*0width:DecayModes 5 K''*0->K0,rho0; insert K''*0width:InterpolationMasses 0 1.3687143 insert K''*0width:InterpolationMasses 1 1.3818571 insert K''*0width:InterpolationMasses 2 1.395 insert K''*0width:InterpolationMasses 3 1.4081429 insert K''*0width:InterpolationMasses 4 1.4212857 insert K''*0width:InterpolationMasses 5 1.4344286 insert K''*0width:InterpolationMasses 6 1.4475714 insert K''*0width:InterpolationMasses 7 1.4607143 insert K''*0width:InterpolationMasses 8 1.4738571 insert K''*0width:InterpolationMasses 9 1.487 insert K''*0width:InterpolationMasses 10 1.5001429 insert K''*0width:InterpolationMasses 11 1.5132857 insert K''*0width:InterpolationMasses 12 1.5264286 insert K''*0width:InterpolationMasses 13 1.5395714 insert K''*0width:InterpolationMasses 14 1.5527143 insert K''*0width:InterpolationMasses 15 1.5658571 insert K''*0width:InterpolationMasses 16 1.579 insert K''*0width:InterpolationMasses 17 1.5921429 insert K''*0width:InterpolationMasses 18 1.6052857 insert K''*0width:InterpolationMasses 19 1.6184286 insert K''*0width:InterpolationMasses 20 1.6315714 insert K''*0width:InterpolationMasses 21 1.6447143 insert K''*0width:InterpolationMasses 22 1.6578571 insert K''*0width:InterpolationMasses 23 1.671 insert K''*0width:InterpolationMasses 24 1.6841429 insert K''*0width:InterpolationMasses 25 1.6972857 insert K''*0width:InterpolationMasses 26 1.7104286 insert K''*0width:InterpolationMasses 27 1.7235714 insert K''*0width:InterpolationMasses 28 1.7367143 insert K''*0width:InterpolationMasses 29 1.7498571 insert K''*0width:InterpolationMasses 30 1.763 insert K''*0width:InterpolationMasses 31 1.7761429 insert K''*0width:InterpolationMasses 32 1.7892857 insert K''*0width:InterpolationMasses 33 1.8024286 insert K''*0width:InterpolationMasses 34 1.8155714 insert K''*0width:InterpolationMasses 35 1.8287143 insert K''*0width:InterpolationMasses 36 1.8418571 insert K''*0width:InterpolationMasses 37 1.855 insert K''*0width:InterpolationMasses 38 1.8681429 insert K''*0width:InterpolationMasses 39 1.8812857 insert K''*0width:InterpolationMasses 40 1.8944286 insert K''*0width:InterpolationMasses 41 1.9075714 insert K''*0width:InterpolationMasses 42 1.9207143 insert K''*0width:InterpolationMasses 43 1.9338571 insert K''*0width:InterpolationMasses 44 1.947 insert K''*0width:InterpolationMasses 45 1.9601429 insert K''*0width:InterpolationMasses 46 1.9732857 insert K''*0width:InterpolationMasses 47 1.9864286 insert K''*0width:InterpolationMasses 48 1.9995714 insert K''*0width:InterpolationMasses 49 2.0127143 insert K''*0width:InterpolationMasses 50 2.0258571 insert K''*0width:InterpolationMasses 51 2.039 insert K''*0width:InterpolationMasses 52 2.0521429 insert K''*0width:InterpolationMasses 53 2.0652857 insert K''*0width:InterpolationMasses 54 1.3687143 insert K''*0width:InterpolationMasses 55 1.3818571 insert K''*0width:InterpolationMasses 56 1.395 insert K''*0width:InterpolationMasses 57 1.4081429 insert K''*0width:InterpolationMasses 58 1.4212857 insert K''*0width:InterpolationMasses 59 1.4344286 insert K''*0width:InterpolationMasses 60 1.4475714 insert K''*0width:InterpolationMasses 61 1.4607143 insert K''*0width:InterpolationMasses 62 1.4738571 insert K''*0width:InterpolationMasses 63 1.487 insert K''*0width:InterpolationMasses 64 1.5001429 insert K''*0width:InterpolationMasses 65 1.5132857 insert K''*0width:InterpolationMasses 66 1.5264286 insert K''*0width:InterpolationMasses 67 1.5395714 insert K''*0width:InterpolationMasses 68 1.5527143 insert K''*0width:InterpolationMasses 69 1.5658571 insert K''*0width:InterpolationMasses 70 1.579 insert K''*0width:InterpolationMasses 71 1.5921429 insert K''*0width:InterpolationMasses 72 1.6052857 insert K''*0width:InterpolationMasses 73 1.6184286 insert K''*0width:InterpolationMasses 74 1.6315714 insert K''*0width:InterpolationMasses 75 1.6447143 insert K''*0width:InterpolationMasses 76 1.6578571 insert K''*0width:InterpolationMasses 77 1.671 insert K''*0width:InterpolationMasses 78 1.6841429 insert K''*0width:InterpolationMasses 79 1.6972857 insert K''*0width:InterpolationMasses 80 1.7104286 insert K''*0width:InterpolationMasses 81 1.7235714 insert K''*0width:InterpolationMasses 82 1.7367143 insert K''*0width:InterpolationMasses 83 1.7498571 insert K''*0width:InterpolationMasses 84 1.763 insert K''*0width:InterpolationMasses 85 1.7761429 insert K''*0width:InterpolationMasses 86 1.7892857 insert K''*0width:InterpolationMasses 87 1.8024286 insert K''*0width:InterpolationMasses 88 1.8155714 insert K''*0width:InterpolationMasses 89 1.8287143 insert K''*0width:InterpolationMasses 90 1.8418571 insert K''*0width:InterpolationMasses 91 1.855 insert K''*0width:InterpolationMasses 92 1.8681429 insert K''*0width:InterpolationMasses 93 1.8812857 insert K''*0width:InterpolationMasses 94 1.8944286 insert K''*0width:InterpolationMasses 95 1.9075714 insert K''*0width:InterpolationMasses 96 1.9207143 insert K''*0width:InterpolationMasses 97 1.9338571 insert K''*0width:InterpolationMasses 98 1.947 insert K''*0width:InterpolationMasses 99 1.9601429 insert K''*0width:InterpolationMasses 100 1.9732857 insert K''*0width:InterpolationMasses 101 1.9864286 insert K''*0width:InterpolationMasses 102 1.9995714 insert K''*0width:InterpolationMasses 103 2.0127143 insert K''*0width:InterpolationMasses 104 2.0258571 insert K''*0width:InterpolationMasses 105 2.039 insert K''*0width:InterpolationMasses 106 2.0521429 insert K''*0width:InterpolationMasses 107 2.0652857 insert K''*0width:InterpolationMasses 108 1.3687143 insert K''*0width:InterpolationMasses 109 1.3818571 insert K''*0width:InterpolationMasses 110 1.395 insert K''*0width:InterpolationMasses 111 1.4081429 insert K''*0width:InterpolationMasses 112 1.4212857 insert K''*0width:InterpolationMasses 113 1.4344286 insert K''*0width:InterpolationMasses 114 1.4475714 insert K''*0width:InterpolationMasses 115 1.4607143 insert K''*0width:InterpolationMasses 116 1.4738571 insert K''*0width:InterpolationMasses 117 1.487 insert K''*0width:InterpolationMasses 118 1.5001429 insert K''*0width:InterpolationMasses 119 1.5132857 insert K''*0width:InterpolationMasses 120 1.5264286 insert K''*0width:InterpolationMasses 121 1.5395714 insert K''*0width:InterpolationMasses 122 1.5527143 insert K''*0width:InterpolationMasses 123 1.5658571 insert K''*0width:InterpolationMasses 124 1.579 insert K''*0width:InterpolationMasses 125 1.5921429 insert K''*0width:InterpolationMasses 126 1.6052857 insert K''*0width:InterpolationMasses 127 1.6184286 insert K''*0width:InterpolationMasses 128 1.6315714 insert K''*0width:InterpolationMasses 129 1.6447143 insert K''*0width:InterpolationMasses 130 1.6578571 insert K''*0width:InterpolationMasses 131 1.671 insert K''*0width:InterpolationMasses 132 1.6841429 insert K''*0width:InterpolationMasses 133 1.6972857 insert K''*0width:InterpolationMasses 134 1.7104286 insert K''*0width:InterpolationMasses 135 1.7235714 insert K''*0width:InterpolationMasses 136 1.7367143 insert K''*0width:InterpolationMasses 137 1.7498571 insert K''*0width:InterpolationMasses 138 1.763 insert K''*0width:InterpolationMasses 139 1.7761429 insert K''*0width:InterpolationMasses 140 1.7892857 insert K''*0width:InterpolationMasses 141 1.8024286 insert K''*0width:InterpolationMasses 142 1.8155714 insert K''*0width:InterpolationMasses 143 1.8287143 insert K''*0width:InterpolationMasses 144 1.8418571 insert K''*0width:InterpolationMasses 145 1.855 insert K''*0width:InterpolationMasses 146 1.8681429 insert K''*0width:InterpolationMasses 147 1.8812857 insert K''*0width:InterpolationMasses 148 1.8944286 insert K''*0width:InterpolationMasses 149 1.9075714 insert K''*0width:InterpolationMasses 150 1.9207143 insert K''*0width:InterpolationMasses 151 1.9338571 insert K''*0width:InterpolationMasses 152 1.947 insert K''*0width:InterpolationMasses 153 1.9601429 insert K''*0width:InterpolationMasses 154 1.9732857 insert K''*0width:InterpolationMasses 155 1.9864286 insert K''*0width:InterpolationMasses 156 1.9995714 insert K''*0width:InterpolationMasses 157 2.0127143 insert K''*0width:InterpolationMasses 158 2.0258571 insert K''*0width:InterpolationMasses 159 2.039 insert K''*0width:InterpolationMasses 160 2.0521429 insert K''*0width:InterpolationMasses 161 2.0652857 insert K''*0width:InterpolationMasses 162 1.3687143 insert K''*0width:InterpolationMasses 163 1.3818571 insert K''*0width:InterpolationMasses 164 1.395 insert K''*0width:InterpolationMasses 165 1.4081429 insert K''*0width:InterpolationMasses 166 1.4212857 insert K''*0width:InterpolationMasses 167 1.4344286 insert K''*0width:InterpolationMasses 168 1.4475714 insert K''*0width:InterpolationMasses 169 1.4607143 insert K''*0width:InterpolationMasses 170 1.4738571 insert K''*0width:InterpolationMasses 171 1.487 insert K''*0width:InterpolationMasses 172 1.5001429 insert K''*0width:InterpolationMasses 173 1.5132857 insert K''*0width:InterpolationMasses 174 1.5264286 insert K''*0width:InterpolationMasses 175 1.5395714 insert K''*0width:InterpolationMasses 176 1.5527143 insert K''*0width:InterpolationMasses 177 1.5658571 insert K''*0width:InterpolationMasses 178 1.579 insert K''*0width:InterpolationMasses 179 1.5921429 insert K''*0width:InterpolationMasses 180 1.6052857 insert K''*0width:InterpolationMasses 181 1.6184286 insert K''*0width:InterpolationMasses 182 1.6315714 insert K''*0width:InterpolationMasses 183 1.6447143 insert K''*0width:InterpolationMasses 184 1.6578571 insert K''*0width:InterpolationMasses 185 1.671 insert K''*0width:InterpolationMasses 186 1.6841429 insert K''*0width:InterpolationMasses 187 1.6972857 insert K''*0width:InterpolationMasses 188 1.7104286 insert K''*0width:InterpolationMasses 189 1.7235714 insert K''*0width:InterpolationMasses 190 1.7367143 insert K''*0width:InterpolationMasses 191 1.7498571 insert K''*0width:InterpolationMasses 192 1.763 insert K''*0width:InterpolationMasses 193 1.7761429 insert K''*0width:InterpolationMasses 194 1.7892857 insert K''*0width:InterpolationMasses 195 1.8024286 insert K''*0width:InterpolationMasses 196 1.8155714 insert K''*0width:InterpolationMasses 197 1.8287143 insert K''*0width:InterpolationMasses 198 1.8418571 insert K''*0width:InterpolationMasses 199 1.855 insert K''*0width:InterpolationMasses 200 1.8681429 insert K''*0width:InterpolationMasses 201 1.8812857 insert K''*0width:InterpolationMasses 202 1.8944286 insert K''*0width:InterpolationMasses 203 1.9075714 insert K''*0width:InterpolationMasses 204 1.9207143 insert K''*0width:InterpolationMasses 205 1.9338571 insert K''*0width:InterpolationMasses 206 1.947 insert K''*0width:InterpolationMasses 207 1.9601429 insert K''*0width:InterpolationMasses 208 1.9732857 insert K''*0width:InterpolationMasses 209 1.9864286 insert K''*0width:InterpolationMasses 210 1.9995714 insert K''*0width:InterpolationMasses 211 2.0127143 insert K''*0width:InterpolationMasses 212 2.0258571 insert K''*0width:InterpolationMasses 213 2.039 insert K''*0width:InterpolationMasses 214 2.0521429 insert K''*0width:InterpolationMasses 215 2.0652857 insert K''*0width:InterpolationWidths 0 0.013857248 insert K''*0width:InterpolationWidths 1 0.015006969 insert K''*0width:InterpolationWidths 2 0.01621025 insert K''*0width:InterpolationWidths 3 0.017467814 insert K''*0width:InterpolationWidths 4 0.018780377 insert K''*0width:InterpolationWidths 5 0.020148649 insert K''*0width:InterpolationWidths 6 0.02157333 insert K''*0width:InterpolationWidths 7 0.023055112 insert K''*0width:InterpolationWidths 8 0.024594684 insert K''*0width:InterpolationWidths 9 0.026192725 insert K''*0width:InterpolationWidths 10 0.027849911 insert K''*0width:InterpolationWidths 11 0.029566911 insert K''*0width:InterpolationWidths 12 0.03134439 insert K''*0width:InterpolationWidths 13 0.03318301 insert K''*0width:InterpolationWidths 14 0.035083378 insert K''*0width:InterpolationWidths 15 0.037045982 insert K''*0width:InterpolationWidths 16 0.03907078 insert K''*0width:InterpolationWidths 17 0.0411595 insert K''*0width:InterpolationWidths 18 0.043312673 insert K''*0width:InterpolationWidths 19 0.04552969 insert K''*0width:InterpolationWidths 20 0.047811674 insert K''*0width:InterpolationWidths 21 0.050159166 insert K''*0width:InterpolationWidths 22 0.052572703 insert K''*0width:InterpolationWidths 23 0.055052817 insert K''*0width:InterpolationWidths 24 0.057600039 insert K''*0width:InterpolationWidths 25 0.060214897 insert K''*0width:InterpolationWidths 26 0.062897913 insert K''*0width:InterpolationWidths 27 0.065649611 insert K''*0width:InterpolationWidths 28 0.068470509 insert K''*0width:InterpolationWidths 29 0.071361123 insert K''*0width:InterpolationWidths 30 0.074321969 insert K''*0width:InterpolationWidths 31 0.077353558 insert K''*0width:InterpolationWidths 32 0.080456402 insert K''*0width:InterpolationWidths 33 0.083631009 insert K''*0width:InterpolationWidths 34 0.086877887 insert K''*0width:InterpolationWidths 35 0.09019754 insert K''*0width:InterpolationWidths 36 0.093590475 insert K''*0width:InterpolationWidths 37 0.097057192 insert K''*0width:InterpolationWidths 38 0.1005982 insert K''*0width:InterpolationWidths 39 0.10421398 insert K''*0width:InterpolationWidths 40 0.10790506 insert K''*0width:InterpolationWidths 41 0.11167192 insert K''*0width:InterpolationWidths 42 0.11551506 insert K''*0width:InterpolationWidths 43 0.11943499 insert K''*0width:InterpolationWidths 44 0.12343219 insert K''*0width:InterpolationWidths 45 0.12750716 insert K''*0width:InterpolationWidths 46 0.1316604 insert K''*0width:InterpolationWidths 47 0.13589241 insert K''*0width:InterpolationWidths 48 0.14020367 insert K''*0width:InterpolationWidths 49 0.14459468 insert K''*0width:InterpolationWidths 50 0.14906594 insert K''*0width:InterpolationWidths 51 0.15361794 insert K''*0width:InterpolationWidths 52 0.15825117 insert K''*0width:InterpolationWidths 53 0.16296613 insert K''*0width:InterpolationWidths 54 0.0068716596 insert K''*0width:InterpolationWidths 55 0.0074438145 insert K''*0width:InterpolationWidths 56 0.0080427714 insert K''*0width:InterpolationWidths 57 0.0086688957 insert K''*0width:InterpolationWidths 58 0.0093225484 insert K''*0width:InterpolationWidths 59 0.010004086 insert K''*0width:InterpolationWidths 60 0.010713861 insert K''*0width:InterpolationWidths 61 0.011452221 insert K''*0width:InterpolationWidths 62 0.012219513 insert K''*0width:InterpolationWidths 63 0.013016078 insert K''*0width:InterpolationWidths 64 0.013842256 insert K''*0width:InterpolationWidths 65 0.014698381 insert K''*0width:InterpolationWidths 66 0.015584789 insert K''*0width:InterpolationWidths 67 0.016501809 insert K''*0width:InterpolationWidths 68 0.017449715 insert K''*0width:InterpolationWidths 69 0.018428771 insert K''*0width:InterpolationWidths 70 0.019438994 insert K''*0width:InterpolationWidths 71 0.02048118 insert K''*0width:InterpolationWidths 72 0.021555601 insert K''*0width:InterpolationWidths 73 0.022662021 insert K''*0width:InterpolationWidths 74 0.02380097 insert K''*0width:InterpolationWidths 75 0.02497272 insert K''*0width:InterpolationWidths 76 0.02617754 insert K''*0width:InterpolationWidths 77 0.027415699 insert K''*0width:InterpolationWidths 78 0.028687462 insert K''*0width:InterpolationWidths 79 0.029993094 insert K''*0width:InterpolationWidths 80 0.031332859 insert K''*0width:InterpolationWidths 81 0.032707018 insert K''*0width:InterpolationWidths 82 0.034115832 insert K''*0width:InterpolationWidths 83 0.035559561 insert K''*0width:InterpolationWidths 84 0.037038461 insert K''*0width:InterpolationWidths 85 0.03855279 insert K''*0width:InterpolationWidths 86 0.040102805 insert K''*0width:InterpolationWidths 87 0.041688761 insert K''*0width:InterpolationWidths 88 0.043310911 insert K''*0width:InterpolationWidths 89 0.044969509 insert K''*0width:InterpolationWidths 90 0.046664809 insert K''*0width:InterpolationWidths 91 0.048397062 insert K''*0width:InterpolationWidths 92 0.050166521 insert K''*0width:InterpolationWidths 93 0.051973435 insert K''*0width:InterpolationWidths 94 0.053818055 insert K''*0width:InterpolationWidths 95 0.055700632 insert K''*0width:InterpolationWidths 96 0.057621416 insert K''*0width:InterpolationWidths 97 0.059580654 insert K''*0width:InterpolationWidths 98 0.061578597 insert K''*0width:InterpolationWidths 99 0.063615492 insert K''*0width:InterpolationWidths 100 0.065691588 insert K''*0width:InterpolationWidths 101 0.067807133 insert K''*0width:InterpolationWidths 102 0.069962375 insert K''*0width:InterpolationWidths 103 0.072157561 insert K''*0width:InterpolationWidths 104 0.074392938 insert K''*0width:InterpolationWidths 105 0.076668753 insert K''*0width:InterpolationWidths 106 0.078985255 insert K''*0width:InterpolationWidths 107 0.081342688 insert K''*0width:InterpolationWidths 108 0.006908404 insert K''*0width:InterpolationWidths 109 0.0079850573 insert K''*0width:InterpolationWidths 110 0.0091539762 insert K''*0width:InterpolationWidths 111 0.010415282 insert K''*0width:InterpolationWidths 112 0.011769092 insert K''*0width:InterpolationWidths 113 0.013215546 insert K''*0width:InterpolationWidths 114 0.014754814 insert K''*0width:InterpolationWidths 115 0.016387109 insert K''*0width:InterpolationWidths 116 0.018112681 insert K''*0width:InterpolationWidths 117 0.019931827 insert K''*0width:InterpolationWidths 118 0.02184488 insert K''*0width:InterpolationWidths 119 0.023852215 insert K''*0width:InterpolationWidths 120 0.02595424 insert K''*0width:InterpolationWidths 121 0.028151399 insert K''*0width:InterpolationWidths 122 0.030444167 insert K''*0width:InterpolationWidths 123 0.032833046 insert K''*0width:InterpolationWidths 124 0.035318568 insert K''*0width:InterpolationWidths 125 0.037901286 insert K''*0width:InterpolationWidths 126 0.04058182 insert K''*0width:InterpolationWidths 127 0.04336069 insert K''*0width:InterpolationWidths 128 0.046238551 insert K''*0width:InterpolationWidths 129 0.049216036 insert K''*0width:InterpolationWidths 130 0.052293798 insert K''*0width:InterpolationWidths 131 0.055472502 insert K''*0width:InterpolationWidths 132 0.058752831 insert K''*0width:InterpolationWidths 133 0.062135478 insert K''*0width:InterpolationWidths 134 0.065621148 insert K''*0width:InterpolationWidths 135 0.06921056 insert K''*0width:InterpolationWidths 136 0.07290444 insert K''*0width:InterpolationWidths 137 0.076703527 insert K''*0width:InterpolationWidths 138 0.080608568 insert K''*0width:InterpolationWidths 139 0.084620214 insert K''*0width:InterpolationWidths 140 0.088737992 insert K''*0width:InterpolationWidths 141 0.092961545 insert K''*0width:InterpolationWidths 142 0.097290921 insert K''*0width:InterpolationWidths 143 0.10172631 insert K''*0width:InterpolationWidths 144 0.10626798 insert K''*0width:InterpolationWidths 145 0.11091628 insert K''*0width:InterpolationWidths 146 0.11567159 insert K''*0width:InterpolationWidths 147 0.1205343 insert K''*0width:InterpolationWidths 148 0.12550484 insert K''*0width:InterpolationWidths 149 0.13058369 insert K''*0width:InterpolationWidths 150 0.1357713 insert K''*0width:InterpolationWidths 151 0.14106818 insert K''*0width:InterpolationWidths 152 0.14647483 insert K''*0width:InterpolationWidths 153 0.15199177 insert K''*0width:InterpolationWidths 154 0.15761952 insert K''*0width:InterpolationWidths 155 0.16335864 insert K''*0width:InterpolationWidths 156 0.16920965 insert K''*0width:InterpolationWidths 157 0.17517313 insert K''*0width:InterpolationWidths 158 0.18124964 insert K''*0width:InterpolationWidths 159 0.18743975 insert K''*0width:InterpolationWidths 160 0.19374403 insert K''*0width:InterpolationWidths 161 0.20016307 insert K''*0width:InterpolationWidths 162 0.0033085204 insert K''*0width:InterpolationWidths 163 0.0038348309 insert K''*0width:InterpolationWidths 164 0.004407422 insert K''*0width:InterpolationWidths 165 0.0050263535 insert K''*0width:InterpolationWidths 166 0.0056916795 insert K''*0width:InterpolationWidths 167 0.0064034611 insert K''*0width:InterpolationWidths 168 0.0071617749 insert K''*0width:InterpolationWidths 169 0.0079667165 insert K''*0width:InterpolationWidths 170 0.0088184024 insert K''*0width:InterpolationWidths 171 0.0097169704 insert K''*0width:InterpolationWidths 172 0.010662579 insert K''*0width:InterpolationWidths 173 0.011655405 insert K''*0width:InterpolationWidths 174 0.012695647 insert K''*0width:InterpolationWidths 175 0.013783519 insert K''*0width:InterpolationWidths 176 0.01491925 insert K''*0width:InterpolationWidths 177 0.016103085 insert K''*0width:InterpolationWidths 178 0.017335284 insert K''*0width:InterpolationWidths 179 0.018616119 insert K''*0width:InterpolationWidths 180 0.019945892 insert K''*0width:InterpolationWidths 181 0.021324861 insert K''*0width:InterpolationWidths 182 0.022753348 insert K''*0width:InterpolationWidths 183 0.024231665 insert K''*0width:InterpolationWidths 184 0.025760135 insert K''*0width:InterpolationWidths 185 0.027339087 insert K''*0width:InterpolationWidths 186 0.028968857 insert K''*0width:InterpolationWidths 187 0.030649791 insert K''*0width:InterpolationWidths 188 0.032382237 insert K''*0width:InterpolationWidths 189 0.034166552 insert K''*0width:InterpolationWidths 190 0.036003097 insert K''*0width:InterpolationWidths 191 0.037892238 insert K''*0width:InterpolationWidths 192 0.039834346 insert K''*0width:InterpolationWidths 193 0.041829792 insert K''*0width:InterpolationWidths 194 0.04387852 insert K''*0width:InterpolationWidths 195 0.045980242 insert K''*0width:InterpolationWidths 196 0.048134942 insert K''*0width:InterpolationWidths 197 0.050342696 insert K''*0width:InterpolationWidths 198 0.052603626 insert K''*0width:InterpolationWidths 199 0.054917883 insert K''*0width:InterpolationWidths 200 0.057285659 insert K''*0width:InterpolationWidths 201 0.059707143 insert K''*0width:InterpolationWidths 202 0.062182546 insert K''*0width:InterpolationWidths 203 0.064712092 insert K''*0width:InterpolationWidths 204 0.067296014 insert K''*0width:InterpolationWidths 205 0.069934553 insert K''*0width:InterpolationWidths 206 0.072627959 insert K''*0width:InterpolationWidths 207 0.075376488 insert K''*0width:InterpolationWidths 208 0.078180401 insert K''*0width:InterpolationWidths 209 0.081039965 insert K''*0width:InterpolationWidths 210 0.083955452 insert K''*0width:InterpolationWidths 211 0.086927138 insert K''*0width:InterpolationWidths 212 0.089955303 insert K''*0width:InterpolationWidths 213 0.093040229 insert K''*0width:InterpolationWidths 214 0.096182204 insert K''*0width:InterpolationWidths 215 0.099381517 insert K''*0width:NumberofEntries 0 54 insert K''*0width:NumberofEntries 1 108 insert K''*0width:NumberofEntries 2 108 insert K''*0width:NumberofEntries 3 162 insert K''*0width:NumberofEntries 4 162 insert K''*0width:NumberofEntries 5 216 newdef /Herwig/Particles/K''*0:Width_generator K''*0width newdef /Herwig/Particles/K''*bar0:Width_generator K''*0width # create Herwig::GenericWidthGenerator K''*+width newdef K''*+width:Particle /Herwig/Particles/K''*+ newdef K''*+width:Prefactor 0.999899 newdef K''*+width:BRNormalize 1 newdef K''*+width:BRMinimum 0.01 newdef K''*+width:Points 50 newdef K''*+width:InterpolationOrder 1 insert K''*+width:MEtype 0 2 insert K''*+width:MEtype 1 2 insert K''*+width:MEtype 2 1 insert K''*+width:MEtype 3 2 insert K''*+width:MEtype 4 1 insert K''*+width:MEtype 5 2 insert K''*+width:MEcode 0 0 insert K''*+width:MEcode 1 0 insert K''*+width:MEcode 2 0 insert K''*+width:MEcode 3 0 insert K''*+width:MEcode 4 0 insert K''*+width:MEcode 5 0 insert K''*+width:MEcoupling 0 0.991979 insert K''*+width:MEcoupling 1 1.00928 insert K''*+width:MEcoupling 2 2.20014 insert K''*+width:MEcoupling 3 1.00217 insert K''*+width:MEcoupling 4 3.12105 insert K''*+width:MEcoupling 5 1.01091 insert K''*+width:ModeOn 0 1 insert K''*+width:ModeOn 1 1 insert K''*+width:ModeOn 2 1 insert K''*+width:ModeOn 3 1 insert K''*+width:ModeOn 4 1 insert K''*+width:ModeOn 5 1 insert K''*+width:MinimumMasses 0 0.776638 insert K''*+width:MinimumMasses 1 0.78557 insert K''*+width:MinimumMasses 2 0.628655 insert K''*+width:MinimumMasses 3 0.869177 insert K''*+width:MinimumMasses 4 0.637218 insert K''*+width:MinimumMasses 5 0.873148 insert K''*+width:MEmass1 0 0.89166 insert K''*+width:MEmass1 1 0.896 insert K''*+width:MEmass1 2 0.493677 insert K''*+width:MEmass1 3 0.7755 insert K''*+width:MEmass1 4 0.497648 insert K''*+width:MEmass1 5 0.7755 insert K''*+width:MEmass2 0 0.134978 insert K''*+width:MEmass2 1 0.13957 insert K''*+width:MEmass2 2 0.134978 insert K''*+width:MEmass2 3 0.493677 insert K''*+width:MEmass2 4 0.13957 insert K''*+width:MEmass2 5 0.497648 insert K''*+width:DecayModes 0 K''*+->K*+,pi0; insert K''*+width:DecayModes 1 K''*+->K*0,pi+; insert K''*+width:DecayModes 2 K''*+->K+,pi0; insert K''*+width:DecayModes 3 K''*+->K+,rho0; insert K''*+width:DecayModes 4 K''*+->K0,pi+; insert K''*+width:DecayModes 5 K''*+->K0,rho+; insert K''*+width:InterpolationMasses 0 1.3687143 insert K''*+width:InterpolationMasses 1 1.3818571 insert K''*+width:InterpolationMasses 2 1.395 insert K''*+width:InterpolationMasses 3 1.4081429 insert K''*+width:InterpolationMasses 4 1.4212857 insert K''*+width:InterpolationMasses 5 1.4344286 insert K''*+width:InterpolationMasses 6 1.4475714 insert K''*+width:InterpolationMasses 7 1.4607143 insert K''*+width:InterpolationMasses 8 1.4738571 insert K''*+width:InterpolationMasses 9 1.487 insert K''*+width:InterpolationMasses 10 1.5001429 insert K''*+width:InterpolationMasses 11 1.5132857 insert K''*+width:InterpolationMasses 12 1.5264286 insert K''*+width:InterpolationMasses 13 1.5395714 insert K''*+width:InterpolationMasses 14 1.5527143 insert K''*+width:InterpolationMasses 15 1.5658571 insert K''*+width:InterpolationMasses 16 1.579 insert K''*+width:InterpolationMasses 17 1.5921429 insert K''*+width:InterpolationMasses 18 1.6052857 insert K''*+width:InterpolationMasses 19 1.6184286 insert K''*+width:InterpolationMasses 20 1.6315714 insert K''*+width:InterpolationMasses 21 1.6447143 insert K''*+width:InterpolationMasses 22 1.6578571 insert K''*+width:InterpolationMasses 23 1.671 insert K''*+width:InterpolationMasses 24 1.6841429 insert K''*+width:InterpolationMasses 25 1.6972857 insert K''*+width:InterpolationMasses 26 1.7104286 insert K''*+width:InterpolationMasses 27 1.7235714 insert K''*+width:InterpolationMasses 28 1.7367143 insert K''*+width:InterpolationMasses 29 1.7498571 insert K''*+width:InterpolationMasses 30 1.763 insert K''*+width:InterpolationMasses 31 1.7761429 insert K''*+width:InterpolationMasses 32 1.7892857 insert K''*+width:InterpolationMasses 33 1.8024286 insert K''*+width:InterpolationMasses 34 1.8155714 insert K''*+width:InterpolationMasses 35 1.8287143 insert K''*+width:InterpolationMasses 36 1.8418571 insert K''*+width:InterpolationMasses 37 1.855 insert K''*+width:InterpolationMasses 38 1.8681429 insert K''*+width:InterpolationMasses 39 1.8812857 insert K''*+width:InterpolationMasses 40 1.8944286 insert K''*+width:InterpolationMasses 41 1.9075714 insert K''*+width:InterpolationMasses 42 1.9207143 insert K''*+width:InterpolationMasses 43 1.9338571 insert K''*+width:InterpolationMasses 44 1.947 insert K''*+width:InterpolationMasses 45 1.9601429 insert K''*+width:InterpolationMasses 46 1.9732857 insert K''*+width:InterpolationMasses 47 1.9864286 insert K''*+width:InterpolationMasses 48 1.9995714 insert K''*+width:InterpolationMasses 49 2.0127143 insert K''*+width:InterpolationMasses 50 2.0258571 insert K''*+width:InterpolationMasses 51 2.039 insert K''*+width:InterpolationMasses 52 2.0521429 insert K''*+width:InterpolationMasses 53 2.0652857 insert K''*+width:InterpolationMasses 54 1.3687143 insert K''*+width:InterpolationMasses 55 1.3818571 insert K''*+width:InterpolationMasses 56 1.395 insert K''*+width:InterpolationMasses 57 1.4081429 insert K''*+width:InterpolationMasses 58 1.4212857 insert K''*+width:InterpolationMasses 59 1.4344286 insert K''*+width:InterpolationMasses 60 1.4475714 insert K''*+width:InterpolationMasses 61 1.4607143 insert K''*+width:InterpolationMasses 62 1.4738571 insert K''*+width:InterpolationMasses 63 1.487 insert K''*+width:InterpolationMasses 64 1.5001429 insert K''*+width:InterpolationMasses 65 1.5132857 insert K''*+width:InterpolationMasses 66 1.5264286 insert K''*+width:InterpolationMasses 67 1.5395714 insert K''*+width:InterpolationMasses 68 1.5527143 insert K''*+width:InterpolationMasses 69 1.5658571 insert K''*+width:InterpolationMasses 70 1.579 insert K''*+width:InterpolationMasses 71 1.5921429 insert K''*+width:InterpolationMasses 72 1.6052857 insert K''*+width:InterpolationMasses 73 1.6184286 insert K''*+width:InterpolationMasses 74 1.6315714 insert K''*+width:InterpolationMasses 75 1.6447143 insert K''*+width:InterpolationMasses 76 1.6578571 insert K''*+width:InterpolationMasses 77 1.671 insert K''*+width:InterpolationMasses 78 1.6841429 insert K''*+width:InterpolationMasses 79 1.6972857 insert K''*+width:InterpolationMasses 80 1.7104286 insert K''*+width:InterpolationMasses 81 1.7235714 insert K''*+width:InterpolationMasses 82 1.7367143 insert K''*+width:InterpolationMasses 83 1.7498571 insert K''*+width:InterpolationMasses 84 1.763 insert K''*+width:InterpolationMasses 85 1.7761429 insert K''*+width:InterpolationMasses 86 1.7892857 insert K''*+width:InterpolationMasses 87 1.8024286 insert K''*+width:InterpolationMasses 88 1.8155714 insert K''*+width:InterpolationMasses 89 1.8287143 insert K''*+width:InterpolationMasses 90 1.8418571 insert K''*+width:InterpolationMasses 91 1.855 insert K''*+width:InterpolationMasses 92 1.8681429 insert K''*+width:InterpolationMasses 93 1.8812857 insert K''*+width:InterpolationMasses 94 1.8944286 insert K''*+width:InterpolationMasses 95 1.9075714 insert K''*+width:InterpolationMasses 96 1.9207143 insert K''*+width:InterpolationMasses 97 1.9338571 insert K''*+width:InterpolationMasses 98 1.947 insert K''*+width:InterpolationMasses 99 1.9601429 insert K''*+width:InterpolationMasses 100 1.9732857 insert K''*+width:InterpolationMasses 101 1.9864286 insert K''*+width:InterpolationMasses 102 1.9995714 insert K''*+width:InterpolationMasses 103 2.0127143 insert K''*+width:InterpolationMasses 104 2.0258571 insert K''*+width:InterpolationMasses 105 2.039 insert K''*+width:InterpolationMasses 106 2.0521429 insert K''*+width:InterpolationMasses 107 2.0652857 insert K''*+width:InterpolationMasses 108 1.3687143 insert K''*+width:InterpolationMasses 109 1.3818571 insert K''*+width:InterpolationMasses 110 1.395 insert K''*+width:InterpolationMasses 111 1.4081429 insert K''*+width:InterpolationMasses 112 1.4212857 insert K''*+width:InterpolationMasses 113 1.4344286 insert K''*+width:InterpolationMasses 114 1.4475714 insert K''*+width:InterpolationMasses 115 1.4607143 insert K''*+width:InterpolationMasses 116 1.4738571 insert K''*+width:InterpolationMasses 117 1.487 insert K''*+width:InterpolationMasses 118 1.5001429 insert K''*+width:InterpolationMasses 119 1.5132857 insert K''*+width:InterpolationMasses 120 1.5264286 insert K''*+width:InterpolationMasses 121 1.5395714 insert K''*+width:InterpolationMasses 122 1.5527143 insert K''*+width:InterpolationMasses 123 1.5658571 insert K''*+width:InterpolationMasses 124 1.579 insert K''*+width:InterpolationMasses 125 1.5921429 insert K''*+width:InterpolationMasses 126 1.6052857 insert K''*+width:InterpolationMasses 127 1.6184286 insert K''*+width:InterpolationMasses 128 1.6315714 insert K''*+width:InterpolationMasses 129 1.6447143 insert K''*+width:InterpolationMasses 130 1.6578571 insert K''*+width:InterpolationMasses 131 1.671 insert K''*+width:InterpolationMasses 132 1.6841429 insert K''*+width:InterpolationMasses 133 1.6972857 insert K''*+width:InterpolationMasses 134 1.7104286 insert K''*+width:InterpolationMasses 135 1.7235714 insert K''*+width:InterpolationMasses 136 1.7367143 insert K''*+width:InterpolationMasses 137 1.7498571 insert K''*+width:InterpolationMasses 138 1.763 insert K''*+width:InterpolationMasses 139 1.7761429 insert K''*+width:InterpolationMasses 140 1.7892857 insert K''*+width:InterpolationMasses 141 1.8024286 insert K''*+width:InterpolationMasses 142 1.8155714 insert K''*+width:InterpolationMasses 143 1.8287143 insert K''*+width:InterpolationMasses 144 1.8418571 insert K''*+width:InterpolationMasses 145 1.855 insert K''*+width:InterpolationMasses 146 1.8681429 insert K''*+width:InterpolationMasses 147 1.8812857 insert K''*+width:InterpolationMasses 148 1.8944286 insert K''*+width:InterpolationMasses 149 1.9075714 insert K''*+width:InterpolationMasses 150 1.9207143 insert K''*+width:InterpolationMasses 151 1.9338571 insert K''*+width:InterpolationMasses 152 1.947 insert K''*+width:InterpolationMasses 153 1.9601429 insert K''*+width:InterpolationMasses 154 1.9732857 insert K''*+width:InterpolationMasses 155 1.9864286 insert K''*+width:InterpolationMasses 156 1.9995714 insert K''*+width:InterpolationMasses 157 2.0127143 insert K''*+width:InterpolationMasses 158 2.0258571 insert K''*+width:InterpolationMasses 159 2.039 insert K''*+width:InterpolationMasses 160 2.0521429 insert K''*+width:InterpolationMasses 161 2.0652857 insert K''*+width:InterpolationMasses 162 1.3687143 insert K''*+width:InterpolationMasses 163 1.3818571 insert K''*+width:InterpolationMasses 164 1.395 insert K''*+width:InterpolationMasses 165 1.4081429 insert K''*+width:InterpolationMasses 166 1.4212857 insert K''*+width:InterpolationMasses 167 1.4344286 insert K''*+width:InterpolationMasses 168 1.4475714 insert K''*+width:InterpolationMasses 169 1.4607143 insert K''*+width:InterpolationMasses 170 1.4738571 insert K''*+width:InterpolationMasses 171 1.487 insert K''*+width:InterpolationMasses 172 1.5001429 insert K''*+width:InterpolationMasses 173 1.5132857 insert K''*+width:InterpolationMasses 174 1.5264286 insert K''*+width:InterpolationMasses 175 1.5395714 insert K''*+width:InterpolationMasses 176 1.5527143 insert K''*+width:InterpolationMasses 177 1.5658571 insert K''*+width:InterpolationMasses 178 1.579 insert K''*+width:InterpolationMasses 179 1.5921429 insert K''*+width:InterpolationMasses 180 1.6052857 insert K''*+width:InterpolationMasses 181 1.6184286 insert K''*+width:InterpolationMasses 182 1.6315714 insert K''*+width:InterpolationMasses 183 1.6447143 insert K''*+width:InterpolationMasses 184 1.6578571 insert K''*+width:InterpolationMasses 185 1.671 insert K''*+width:InterpolationMasses 186 1.6841429 insert K''*+width:InterpolationMasses 187 1.6972857 insert K''*+width:InterpolationMasses 188 1.7104286 insert K''*+width:InterpolationMasses 189 1.7235714 insert K''*+width:InterpolationMasses 190 1.7367143 insert K''*+width:InterpolationMasses 191 1.7498571 insert K''*+width:InterpolationMasses 192 1.763 insert K''*+width:InterpolationMasses 193 1.7761429 insert K''*+width:InterpolationMasses 194 1.7892857 insert K''*+width:InterpolationMasses 195 1.8024286 insert K''*+width:InterpolationMasses 196 1.8155714 insert K''*+width:InterpolationMasses 197 1.8287143 insert K''*+width:InterpolationMasses 198 1.8418571 insert K''*+width:InterpolationMasses 199 1.855 insert K''*+width:InterpolationMasses 200 1.8681429 insert K''*+width:InterpolationMasses 201 1.8812857 insert K''*+width:InterpolationMasses 202 1.8944286 insert K''*+width:InterpolationMasses 203 1.9075714 insert K''*+width:InterpolationMasses 204 1.9207143 insert K''*+width:InterpolationMasses 205 1.9338571 insert K''*+width:InterpolationMasses 206 1.947 insert K''*+width:InterpolationMasses 207 1.9601429 insert K''*+width:InterpolationMasses 208 1.9732857 insert K''*+width:InterpolationMasses 209 1.9864286 insert K''*+width:InterpolationMasses 210 1.9995714 insert K''*+width:InterpolationMasses 211 2.0127143 insert K''*+width:InterpolationMasses 212 2.0258571 insert K''*+width:InterpolationMasses 213 2.039 insert K''*+width:InterpolationMasses 214 2.0521429 insert K''*+width:InterpolationMasses 215 2.0652857 insert K''*+width:InterpolationWidths 0 0.0070222726 insert K''*+width:InterpolationWidths 1 0.0076008208 insert K''*+width:InterpolationWidths 2 0.0082062185 insert K''*+width:InterpolationWidths 3 0.008838831 insert K''*+width:InterpolationWidths 4 0.0094990187 insert K''*+width:InterpolationWidths 5 0.010187138 insert K''*+width:InterpolationWidths 6 0.010903542 insert K''*+width:InterpolationWidths 7 0.011648578 insert K''*+width:InterpolationWidths 8 0.012422593 insert K''*+width:InterpolationWidths 9 0.013225929 insert K''*+width:InterpolationWidths 10 0.014058925 insert K''*+width:InterpolationWidths 11 0.014921918 insert K''*+width:InterpolationWidths 12 0.015815243 insert K''*+width:InterpolationWidths 13 0.016739231 insert K''*+width:InterpolationWidths 14 0.01769416 insert K''*+width:InterpolationWidths 15 0.018680289 insert K''*+width:InterpolationWidths 16 0.019697612 insert K''*+width:InterpolationWidths 17 0.020746976 insert K''*+width:InterpolationWidths 18 0.021828654 insert K''*+width:InterpolationWidths 19 0.022942357 insert K''*+width:InterpolationWidths 20 0.024088641 insert K''*+width:InterpolationWidths 21 0.025267778 insert K''*+width:InterpolationWidths 22 0.026480039 insert K''*+width:InterpolationWidths 23 0.027725692 insert K''*+width:InterpolationWidths 24 0.029005003 insert K''*+width:InterpolationWidths 25 0.030318238 insert K''*+width:InterpolationWidths 26 0.031665659 insert K''*+width:InterpolationWidths 27 0.03304753 insert K''*+width:InterpolationWidths 28 0.034464112 insert K''*+width:InterpolationWidths 29 0.035915663 insert K''*+width:InterpolationWidths 30 0.037402442 insert K''*+width:InterpolationWidths 31 0.038924708 insert K''*+width:InterpolationWidths 32 0.040482716 insert K''*+width:InterpolationWidths 33 0.042076723 insert K''*+width:InterpolationWidths 34 0.043706982 insert K''*+width:InterpolationWidths 35 0.045373748 insert K''*+width:InterpolationWidths 36 0.047077275 insert K''*+width:InterpolationWidths 37 0.048817815 insert K''*+width:InterpolationWidths 38 0.05059562 insert K''*+width:InterpolationWidths 39 0.052410941 insert K''*+width:InterpolationWidths 40 0.05426403 insert K''*+width:InterpolationWidths 41 0.056155138 insert K''*+width:InterpolationWidths 42 0.058084513 insert K''*+width:InterpolationWidths 43 0.060052407 insert K''*+width:InterpolationWidths 44 0.062059068 insert K''*+width:InterpolationWidths 45 0.064104746 insert K''*+width:InterpolationWidths 46 0.066189689 insert K''*+width:InterpolationWidths 47 0.068314145 insert K''*+width:InterpolationWidths 48 0.070478363 insert K''*+width:InterpolationWidths 49 0.072682592 insert K''*+width:InterpolationWidths 50 0.074927078 insert K''*+width:InterpolationWidths 51 0.07721207 insert K''*+width:InterpolationWidths 52 0.079537815 insert K''*+width:InterpolationWidths 53 0.08190456 insert K''*+width:InterpolationWidths 54 0.013557804 insert K''*+width:InterpolationWidths 55 0.01469477 insert K''*+width:InterpolationWidths 56 0.015885202 insert K''*+width:InterpolationWidths 57 0.017129824 insert K''*+width:InterpolationWidths 58 0.018429353 insert K''*+width:InterpolationWidths 59 0.019784498 insert K''*+width:InterpolationWidths 60 0.02119596 insert K''*+width:InterpolationWidths 61 0.02266443 insert K''*+width:InterpolationWidths 62 0.024190596 insert K''*+width:InterpolationWidths 63 0.025775138 insert K''*+width:InterpolationWidths 64 0.027418729 insert K''*+width:InterpolationWidths 65 0.029122038 insert K''*+width:InterpolationWidths 66 0.030885728 insert K''*+width:InterpolationWidths 67 0.03271046 insert K''*+width:InterpolationWidths 68 0.03459683 insert K''*+width:InterpolationWidths 69 0.036545333 insert K''*+width:InterpolationWidths 70 0.03855598 insert K''*+width:InterpolationWidths 71 0.040630392 insert K''*+width:InterpolationWidths 72 0.042769099 insert K''*+width:InterpolationWidths 73 0.0449716 insert K''*+width:InterpolationWidths 74 0.047238963 insert K''*+width:InterpolationWidths 75 0.04957173 insert K''*+width:InterpolationWidths 76 0.051970435 insert K''*+width:InterpolationWidths 77 0.054435612 insert K''*+width:InterpolationWidths 78 0.056967789 insert K''*+width:InterpolationWidths 79 0.059567494 insert K''*+width:InterpolationWidths 80 0.062235249 insert K''*+width:InterpolationWidths 81 0.064971576 insert K''*+width:InterpolationWidths 82 0.067776993 insert K''*+width:InterpolationWidths 83 0.070652015 insert K''*+width:InterpolationWidths 84 0.073597156 insert K''*+width:InterpolationWidths 85 0.076612928 insert K''*+width:InterpolationWidths 86 0.079699841 insert K''*+width:InterpolationWidths 87 0.082858402 insert K''*+width:InterpolationWidths 88 0.086089117 insert K''*+width:InterpolationWidths 89 0.089392492 insert K''*+width:InterpolationWidths 90 0.09276903 insert K''*+width:InterpolationWidths 91 0.096219232 insert K''*+width:InterpolationWidths 92 0.0997436 insert K''*+width:InterpolationWidths 93 0.10334263 insert K''*+width:InterpolationWidths 94 0.10701683 insert K''*+width:InterpolationWidths 95 0.11076669 insert K''*+width:InterpolationWidths 96 0.11459271 insert K''*+width:InterpolationWidths 97 0.11849538 insert K''*+width:InterpolationWidths 98 0.12247521 insert K''*+width:InterpolationWidths 99 0.12653268 insert K''*+width:InterpolationWidths 100 0.13066829 insert K''*+width:InterpolationWidths 101 0.13488253 insert K''*+width:InterpolationWidths 102 0.13917591 insert K''*+width:InterpolationWidths 103 0.1435489 insert K''*+width:InterpolationWidths 104 0.14800201 insert K''*+width:InterpolationWidths 105 0.15253572 insert K''*+width:InterpolationWidths 106 0.15715053 insert K''*+width:InterpolationWidths 107 0.16184692 insert K''*+width:InterpolationWidths 108 0.0034413319 insert K''*+width:InterpolationWidths 109 0.0039783594 insert K''*+width:InterpolationWidths 110 0.0045614391 insert K''*+width:InterpolationWidths 111 0.0051906328 insert K''*+width:InterpolationWidths 112 0.0058660011 insert K''*+width:InterpolationWidths 113 0.0065876145 insert K''*+width:InterpolationWidths 114 0.0073555601 insert K''*+width:InterpolationWidths 115 0.0081699446 insert K''*+width:InterpolationWidths 116 0.0090308953 insert K''*+width:InterpolationWidths 117 0.0099385605 insert K''*+width:InterpolationWidths 118 0.010893109 insert K''*+width:InterpolationWidths 119 0.011894727 insert K''*+width:InterpolationWidths 120 0.012943622 insert K''*+width:InterpolationWidths 121 0.014040014 insert K''*+width:InterpolationWidths 122 0.015184143 insert K''*+width:InterpolationWidths 123 0.016376261 insert K''*+width:InterpolationWidths 124 0.017616632 insert K''*+width:InterpolationWidths 125 0.018905536 insert K''*+width:InterpolationWidths 126 0.020243281 insert K''*+width:InterpolationWidths 127 0.02163013 insert K''*+width:InterpolationWidths 128 0.023066408 insert K''*+width:InterpolationWidths 129 0.024552433 insert K''*+width:InterpolationWidths 130 0.026088533 insert K''*+width:InterpolationWidths 131 0.027675039 insert K''*+width:InterpolationWidths 132 0.029312294 insert K''*+width:InterpolationWidths 133 0.031000644 insert K''*+width:InterpolationWidths 134 0.032740443 insert K''*+width:InterpolationWidths 135 0.034532049 insert K''*+width:InterpolationWidths 136 0.036375827 insert K''*+width:InterpolationWidths 137 0.038272145 insert K''*+width:InterpolationWidths 138 0.040221377 insert K''*+width:InterpolationWidths 139 0.042223849 insert K''*+width:InterpolationWidths 140 0.044279324 insert K''*+width:InterpolationWidths 141 0.04638762 insert K''*+width:InterpolationWidths 142 0.048548762 insert K''*+width:InterpolationWidths 143 0.050762844 insert K''*+width:InterpolationWidths 144 0.053029997 insert K''*+width:InterpolationWidths 145 0.055350402 insert K''*+width:InterpolationWidths 146 0.057724236 insert K''*+width:InterpolationWidths 147 0.060151704 insert K''*+width:InterpolationWidths 148 0.062633022 insert K''*+width:InterpolationWidths 149 0.065168418 insert K''*+width:InterpolationWidths 150 0.06775813 insert K''*+width:InterpolationWidths 151 0.070402402 insert K''*+width:InterpolationWidths 152 0.073101487 insert K''*+width:InterpolationWidths 153 0.075855644 insert K''*+width:InterpolationWidths 154 0.078665138 insert K''*+width:InterpolationWidths 155 0.081530237 insert K''*+width:InterpolationWidths 156 0.084451216 insert K''*+width:InterpolationWidths 157 0.087428352 insert K''*+width:InterpolationWidths 158 0.090461927 insert K''*+width:InterpolationWidths 159 0.093552227 insert K''*+width:InterpolationWidths 160 0.09669954 insert K''*+width:InterpolationWidths 161 0.099904156 insert K''*+width:InterpolationWidths 162 0.0066421675 insert K''*+width:InterpolationWidths 163 0.0076973517 insert K''*+width:InterpolationWidths 164 0.0088452597 insert K''*+width:InterpolationWidths 165 0.010086009 insert K''*+width:InterpolationWidths 166 0.011419704 insert K''*+width:InterpolationWidths 167 0.012846466 insert K''*+width:InterpolationWidths 168 0.014366443 insert K''*+width:InterpolationWidths 169 0.015979825 insert K''*+width:InterpolationWidths 170 0.017686844 insert K''*+width:InterpolationWidths 171 0.019487771 insert K''*+width:InterpolationWidths 172 0.021382922 insert K''*+width:InterpolationWidths 173 0.023372651 insert K''*+width:InterpolationWidths 174 0.025457351 insert K''*+width:InterpolationWidths 175 0.027637447 insert K''*+width:InterpolationWidths 176 0.029913399 insert K''*+width:InterpolationWidths 177 0.032285696 insert K''*+width:InterpolationWidths 178 0.034754855 insert K''*+width:InterpolationWidths 179 0.037321418 insert K''*+width:InterpolationWidths 180 0.039985992 insert K''*+width:InterpolationWidths 181 0.042749089 insert K''*+width:InterpolationWidths 182 0.045611351 insert K''*+width:InterpolationWidths 183 0.048573405 insert K''*+width:InterpolationWidths 184 0.051635893 insert K''*+width:InterpolationWidths 185 0.054799474 insert K''*+width:InterpolationWidths 186 0.058064822 insert K''*+width:InterpolationWidths 187 0.061432622 insert K''*+width:InterpolationWidths 188 0.064903575 insert K''*+width:InterpolationWidths 189 0.068478393 insert K''*+width:InterpolationWidths 190 0.072157796 insert K''*+width:InterpolationWidths 191 0.075942517 insert K''*+width:InterpolationWidths 192 0.079833298 insert K''*+width:InterpolationWidths 193 0.083830881 insert K''*+width:InterpolationWidths 194 0.087935156 insert K''*+width:InterpolationWidths 195 0.092145547 insert K''*+width:InterpolationWidths 196 0.096462028 insert K''*+width:InterpolationWidths 197 0.10088475 insert K''*+width:InterpolationWidths 198 0.10541396 insert K''*+width:InterpolationWidths 199 0.11004996 insert K''*+width:InterpolationWidths 200 0.11479313 insert K''*+width:InterpolationWidths 201 0.11964386 insert K''*+width:InterpolationWidths 202 0.12460256 insert K''*+width:InterpolationWidths 203 0.12966969 insert K''*+width:InterpolationWidths 204 0.13484572 insert K''*+width:InterpolationWidths 205 0.14013112 insert K''*+width:InterpolationWidths 206 0.1455264 insert K''*+width:InterpolationWidths 207 0.15103206 insert K''*+width:InterpolationWidths 208 0.15664864 insert K''*+width:InterpolationWidths 209 0.16237667 insert K''*+width:InterpolationWidths 210 0.1682167 insert K''*+width:InterpolationWidths 211 0.17416926 insert K''*+width:InterpolationWidths 212 0.18023494 insert K''*+width:InterpolationWidths 213 0.18641428 insert K''*+width:InterpolationWidths 214 0.19270788 insert K''*+width:InterpolationWidths 215 0.1991163 insert K''*+width:NumberofEntries 0 54 insert K''*+width:NumberofEntries 1 108 insert K''*+width:NumberofEntries 2 108 insert K''*+width:NumberofEntries 3 162 insert K''*+width:NumberofEntries 4 162 insert K''*+width:NumberofEntries 5 216 newdef /Herwig/Particles/K''*+:Width_generator K''*+width newdef /Herwig/Particles/K''*-:Width_generator K''*+width # create Herwig::GenericWidthGenerator rho''+width newdef rho''+width:Particle /Herwig/Particles/rho''+ newdef rho''+width:Prefactor 1.00157 newdef rho''+width:BRNormalize 1 newdef rho''+width:BRMinimum 0.01 newdef rho''+width:Points 50 newdef rho''+width:InterpolationOrder 1 insert rho''+width:MEtype 0 2 insert rho''+width:MEtype 1 2 insert rho''+width:MEtype 2 1 insert rho''+width:MEtype 3 2 insert rho''+width:MEtype 4 2 insert rho''+width:MEtype 5 2 insert rho''+width:MEtype 6 2 insert rho''+width:MEtype 7 2 insert rho''+width:MEtype 8 2 insert rho''+width:MEtype 9 1 insert rho''+width:MEtype 10 2 insert rho''+width:MEtype 11 0 insert rho''+width:MEcode 0 0 insert rho''+width:MEcode 1 0 insert rho''+width:MEcode 2 0 insert rho''+width:MEcode 3 0 insert rho''+width:MEcode 4 0 insert rho''+width:MEcode 5 0 insert rho''+width:MEcode 6 0 insert rho''+width:MEcode 7 0 insert rho''+width:MEcode 8 0 insert rho''+width:MEcode 9 0 insert rho''+width:MEcode 10 0 insert rho''+width:MEcode 11 0 insert rho''+width:MEcoupling 0 1.00819 insert rho''+width:MEcoupling 1 0.998047 insert rho''+width:MEcoupling 2 0.274197 insert rho''+width:MEcoupling 3 0.995421 insert rho''+width:MEcoupling 4 1.0009 insert rho''+width:MEcoupling 5 0.997144 insert rho''+width:MEcoupling 6 1.00328 insert rho''+width:MEcoupling 7 0.98676 insert rho''+width:MEcoupling 8 0.997645 insert rho''+width:MEcoupling 9 1.65338 insert rho''+width:MEcoupling 10 0.993506 insert rho''+width:MEcoupling 11 0.209974 insert rho''+width:ModeOn 0 1 insert rho''+width:ModeOn 1 1 insert rho''+width:ModeOn 2 0 insert rho''+width:ModeOn 3 1 insert rho''+width:ModeOn 4 1 insert rho''+width:ModeOn 5 1 insert rho''+width:ModeOn 6 1 insert rho''+width:ModeOn 7 1 insert rho''+width:ModeOn 8 1 insert rho''+width:ModeOn 9 1 insert rho''+width:ModeOn 10 1 insert rho''+width:ModeOn 11 1 insert rho''+width:MinimumMasses 0 1.13931 insert rho''+width:MinimumMasses 1 1.13968 insert rho''+width:MinimumMasses 2 0.991325 insert rho''+width:MinimumMasses 3 0.814978 insert rho''+width:MinimumMasses 4 0.81957 insert rho''+width:MinimumMasses 5 0.922997 insert rho''+width:MinimumMasses 6 0.94957 insert rho''+width:MinimumMasses 7 1.03498 insert rho''+width:MinimumMasses 8 1.03957 insert rho''+width:MinimumMasses 9 0.274548 insert rho''+width:MinimumMasses 10 0.751 insert rho''+width:MinimumMasses 11 0.6855 insert rho''+width:MEmass1 0 0.89166 insert rho''+width:MEmass1 1 0.896 insert rho''+width:MEmass1 2 0.493677 insert rho''+width:MEmass1 3 1.24 insert rho''+width:MEmass1 4 1.24 insert rho''+width:MEmass1 5 0.7755 insert rho''+width:MEmass1 6 1.17 insert rho''+width:MEmass1 7 0.134978 insert rho''+width:MEmass1 8 1.3 insert rho''+width:MEmass1 9 0.134978 insert rho''+width:MEmass1 10 0.7755 insert rho''+width:MEmass1 11 0 insert rho''+width:MEmass2 0 0.497648 insert rho''+width:MEmass2 1 0.493677 insert rho''+width:MEmass2 2 0.497648 insert rho''+width:MEmass2 3 0.134978 insert rho''+width:MEmass2 4 0.13957 insert rho''+width:MEmass2 5 0.54751 insert rho''+width:MEmass2 6 0.13957 insert rho''+width:MEmass2 7 1.3 insert rho''+width:MEmass2 8 0.13957 insert rho''+width:MEmass2 9 0.13957 insert rho''+width:MEmass2 10 0.7755 insert rho''+width:MEmass2 11 0 insert rho''+width:DecayModes 0 rho''+->K*+,Kbar0; insert rho''+width:DecayModes 1 rho''+->K+,K*bar0; insert rho''+width:DecayModes 2 rho''+->K+,Kbar0; insert rho''+width:DecayModes 3 rho''+->a_1+,pi0; insert rho''+width:DecayModes 4 rho''+->a_10,pi+; insert rho''+width:DecayModes 5 rho''+->eta,rho+; insert rho''+width:DecayModes 6 rho''+->h_1,pi+; insert rho''+width:DecayModes 7 rho''+->pi'+,pi0; insert rho''+width:DecayModes 8 rho''+->pi'0,pi+; insert rho''+width:DecayModes 9 rho''+->pi+,pi0; insert rho''+width:DecayModes 10 rho''+->rho+,rho0; insert rho''+width:DecayModes 11 rho''+->sigma,rho+; insert rho''+width:InterpolationMasses 0 1.1791837 insert rho''+width:InterpolationMasses 1 1.1995918 insert rho''+width:InterpolationMasses 2 1.22 insert rho''+width:InterpolationMasses 3 1.2404082 insert rho''+width:InterpolationMasses 4 1.2608163 insert rho''+width:InterpolationMasses 5 1.2812245 insert rho''+width:InterpolationMasses 6 1.3016327 insert rho''+width:InterpolationMasses 7 1.3220408 insert rho''+width:InterpolationMasses 8 1.342449 insert rho''+width:InterpolationMasses 9 1.3628571 insert rho''+width:InterpolationMasses 10 1.3832653 insert rho''+width:InterpolationMasses 11 1.4036735 insert rho''+width:InterpolationMasses 12 1.4240816 insert rho''+width:InterpolationMasses 13 1.4444898 insert rho''+width:InterpolationMasses 14 1.464898 insert rho''+width:InterpolationMasses 15 1.4853061 insert rho''+width:InterpolationMasses 16 1.5057143 insert rho''+width:InterpolationMasses 17 1.5261224 insert rho''+width:InterpolationMasses 18 1.5465306 insert rho''+width:InterpolationMasses 19 1.5669388 insert rho''+width:InterpolationMasses 20 1.5873469 insert rho''+width:InterpolationMasses 21 1.6077551 insert rho''+width:InterpolationMasses 22 1.6281633 insert rho''+width:InterpolationMasses 23 1.6485714 insert rho''+width:InterpolationMasses 24 1.6689796 insert rho''+width:InterpolationMasses 25 1.6893878 insert rho''+width:InterpolationMasses 26 1.7097959 insert rho''+width:InterpolationMasses 27 1.7302041 insert rho''+width:InterpolationMasses 28 1.7506122 insert rho''+width:InterpolationMasses 29 1.7710204 insert rho''+width:InterpolationMasses 30 1.7914286 insert rho''+width:InterpolationMasses 31 1.8118367 insert rho''+width:InterpolationMasses 32 1.8322449 insert rho''+width:InterpolationMasses 33 1.8526531 insert rho''+width:InterpolationMasses 34 1.8730612 insert rho''+width:InterpolationMasses 35 1.8934694 insert rho''+width:InterpolationMasses 36 1.9138776 insert rho''+width:InterpolationMasses 37 1.9342857 insert rho''+width:InterpolationMasses 38 1.9546939 insert rho''+width:InterpolationMasses 39 1.975102 insert rho''+width:InterpolationMasses 40 1.9955102 insert rho''+width:InterpolationMasses 41 2.0159184 insert rho''+width:InterpolationMasses 42 2.0363265 insert rho''+width:InterpolationMasses 43 2.0567347 insert rho''+width:InterpolationMasses 44 2.0771429 insert rho''+width:InterpolationMasses 45 2.097551 insert rho''+width:InterpolationMasses 46 2.1179592 insert rho''+width:InterpolationMasses 47 2.1383673 insert rho''+width:InterpolationMasses 48 2.1587755 insert rho''+width:InterpolationMasses 49 2.1791837 insert rho''+width:InterpolationMasses 50 2.1995918 insert rho''+width:InterpolationMasses 51 2.22 insert rho''+width:InterpolationMasses 52 2.2404082 insert rho''+width:InterpolationMasses 53 2.2608163 insert rho''+width:InterpolationMasses 54 1.1791837 insert rho''+width:InterpolationMasses 55 1.1995918 insert rho''+width:InterpolationMasses 56 1.22 insert rho''+width:InterpolationMasses 57 1.2404082 insert rho''+width:InterpolationMasses 58 1.2608163 insert rho''+width:InterpolationMasses 59 1.2812245 insert rho''+width:InterpolationMasses 60 1.3016327 insert rho''+width:InterpolationMasses 61 1.3220408 insert rho''+width:InterpolationMasses 62 1.342449 insert rho''+width:InterpolationMasses 63 1.3628571 insert rho''+width:InterpolationMasses 64 1.3832653 insert rho''+width:InterpolationMasses 65 1.4036735 insert rho''+width:InterpolationMasses 66 1.4240816 insert rho''+width:InterpolationMasses 67 1.4444898 insert rho''+width:InterpolationMasses 68 1.464898 insert rho''+width:InterpolationMasses 69 1.4853061 insert rho''+width:InterpolationMasses 70 1.5057143 insert rho''+width:InterpolationMasses 71 1.5261224 insert rho''+width:InterpolationMasses 72 1.5465306 insert rho''+width:InterpolationMasses 73 1.5669388 insert rho''+width:InterpolationMasses 74 1.5873469 insert rho''+width:InterpolationMasses 75 1.6077551 insert rho''+width:InterpolationMasses 76 1.6281633 insert rho''+width:InterpolationMasses 77 1.6485714 insert rho''+width:InterpolationMasses 78 1.6689796 insert rho''+width:InterpolationMasses 79 1.6893878 insert rho''+width:InterpolationMasses 80 1.7097959 insert rho''+width:InterpolationMasses 81 1.7302041 insert rho''+width:InterpolationMasses 82 1.7506122 insert rho''+width:InterpolationMasses 83 1.7710204 insert rho''+width:InterpolationMasses 84 1.7914286 insert rho''+width:InterpolationMasses 85 1.8118367 insert rho''+width:InterpolationMasses 86 1.8322449 insert rho''+width:InterpolationMasses 87 1.8526531 insert rho''+width:InterpolationMasses 88 1.8730612 insert rho''+width:InterpolationMasses 89 1.8934694 insert rho''+width:InterpolationMasses 90 1.9138776 insert rho''+width:InterpolationMasses 91 1.9342857 insert rho''+width:InterpolationMasses 92 1.9546939 insert rho''+width:InterpolationMasses 93 1.975102 insert rho''+width:InterpolationMasses 94 1.9955102 insert rho''+width:InterpolationMasses 95 2.0159184 insert rho''+width:InterpolationMasses 96 2.0363265 insert rho''+width:InterpolationMasses 97 2.0567347 insert rho''+width:InterpolationMasses 98 2.0771429 insert rho''+width:InterpolationMasses 99 2.097551 insert rho''+width:InterpolationMasses 100 2.1179592 insert rho''+width:InterpolationMasses 101 2.1383673 insert rho''+width:InterpolationMasses 102 2.1587755 insert rho''+width:InterpolationMasses 103 2.1791837 insert rho''+width:InterpolationMasses 104 2.1995918 insert rho''+width:InterpolationMasses 105 2.22 insert rho''+width:InterpolationMasses 106 2.2404082 insert rho''+width:InterpolationMasses 107 2.2608163 insert rho''+width:InterpolationMasses 108 1.1791837 insert rho''+width:InterpolationMasses 109 1.1995918 insert rho''+width:InterpolationMasses 110 1.22 insert rho''+width:InterpolationMasses 111 1.2404082 insert rho''+width:InterpolationMasses 112 1.2608163 insert rho''+width:InterpolationMasses 113 1.2812245 insert rho''+width:InterpolationMasses 114 1.3016327 insert rho''+width:InterpolationMasses 115 1.3220408 insert rho''+width:InterpolationMasses 116 1.342449 insert rho''+width:InterpolationMasses 117 1.3628571 insert rho''+width:InterpolationMasses 118 1.3832653 insert rho''+width:InterpolationMasses 119 1.4036735 insert rho''+width:InterpolationMasses 120 1.4240816 insert rho''+width:InterpolationMasses 121 1.4444898 insert rho''+width:InterpolationMasses 122 1.464898 insert rho''+width:InterpolationMasses 123 1.4853061 insert rho''+width:InterpolationMasses 124 1.5057143 insert rho''+width:InterpolationMasses 125 1.5261224 insert rho''+width:InterpolationMasses 126 1.5465306 insert rho''+width:InterpolationMasses 127 1.5669388 insert rho''+width:InterpolationMasses 128 1.5873469 insert rho''+width:InterpolationMasses 129 1.6077551 insert rho''+width:InterpolationMasses 130 1.6281633 insert rho''+width:InterpolationMasses 131 1.6485714 insert rho''+width:InterpolationMasses 132 1.6689796 insert rho''+width:InterpolationMasses 133 1.6893878 insert rho''+width:InterpolationMasses 134 1.7097959 insert rho''+width:InterpolationMasses 135 1.7302041 insert rho''+width:InterpolationMasses 136 1.7506122 insert rho''+width:InterpolationMasses 137 1.7710204 insert rho''+width:InterpolationMasses 138 1.7914286 insert rho''+width:InterpolationMasses 139 1.8118367 insert rho''+width:InterpolationMasses 140 1.8322449 insert rho''+width:InterpolationMasses 141 1.8526531 insert rho''+width:InterpolationMasses 142 1.8730612 insert rho''+width:InterpolationMasses 143 1.8934694 insert rho''+width:InterpolationMasses 144 1.9138776 insert rho''+width:InterpolationMasses 145 1.9342857 insert rho''+width:InterpolationMasses 146 1.9546939 insert rho''+width:InterpolationMasses 147 1.975102 insert rho''+width:InterpolationMasses 148 1.9955102 insert rho''+width:InterpolationMasses 149 2.0159184 insert rho''+width:InterpolationMasses 150 2.0363265 insert rho''+width:InterpolationMasses 151 2.0567347 insert rho''+width:InterpolationMasses 152 2.0771429 insert rho''+width:InterpolationMasses 153 2.097551 insert rho''+width:InterpolationMasses 154 2.1179592 insert rho''+width:InterpolationMasses 155 2.1383673 insert rho''+width:InterpolationMasses 156 2.1587755 insert rho''+width:InterpolationMasses 157 2.1791837 insert rho''+width:InterpolationMasses 158 2.1995918 insert rho''+width:InterpolationMasses 159 2.22 insert rho''+width:InterpolationMasses 160 2.2404082 insert rho''+width:InterpolationMasses 161 2.2608163 insert rho''+width:InterpolationMasses 162 1.1791837 insert rho''+width:InterpolationMasses 163 1.1995918 insert rho''+width:InterpolationMasses 164 1.22 insert rho''+width:InterpolationMasses 165 1.2404082 insert rho''+width:InterpolationMasses 166 1.2608163 insert rho''+width:InterpolationMasses 167 1.2812245 insert rho''+width:InterpolationMasses 168 1.3016327 insert rho''+width:InterpolationMasses 169 1.3220408 insert rho''+width:InterpolationMasses 170 1.342449 insert rho''+width:InterpolationMasses 171 1.3628571 insert rho''+width:InterpolationMasses 172 1.3832653 insert rho''+width:InterpolationMasses 173 1.4036735 insert rho''+width:InterpolationMasses 174 1.4240816 insert rho''+width:InterpolationMasses 175 1.4444898 insert rho''+width:InterpolationMasses 176 1.464898 insert rho''+width:InterpolationMasses 177 1.4853061 insert rho''+width:InterpolationMasses 178 1.5057143 insert rho''+width:InterpolationMasses 179 1.5261224 insert rho''+width:InterpolationMasses 180 1.5465306 insert rho''+width:InterpolationMasses 181 1.5669388 insert rho''+width:InterpolationMasses 182 1.5873469 insert rho''+width:InterpolationMasses 183 1.6077551 insert rho''+width:InterpolationMasses 184 1.6281633 insert rho''+width:InterpolationMasses 185 1.6485714 insert rho''+width:InterpolationMasses 186 1.6689796 insert rho''+width:InterpolationMasses 187 1.6893878 insert rho''+width:InterpolationMasses 188 1.7097959 insert rho''+width:InterpolationMasses 189 1.7302041 insert rho''+width:InterpolationMasses 190 1.7506122 insert rho''+width:InterpolationMasses 191 1.7710204 insert rho''+width:InterpolationMasses 192 1.7914286 insert rho''+width:InterpolationMasses 193 1.8118367 insert rho''+width:InterpolationMasses 194 1.8322449 insert rho''+width:InterpolationMasses 195 1.8526531 insert rho''+width:InterpolationMasses 196 1.8730612 insert rho''+width:InterpolationMasses 197 1.8934694 insert rho''+width:InterpolationMasses 198 1.9138776 insert rho''+width:InterpolationMasses 199 1.9342857 insert rho''+width:InterpolationMasses 200 1.9546939 insert rho''+width:InterpolationMasses 201 1.975102 insert rho''+width:InterpolationMasses 202 1.9955102 insert rho''+width:InterpolationMasses 203 2.0159184 insert rho''+width:InterpolationMasses 204 2.0363265 insert rho''+width:InterpolationMasses 205 2.0567347 insert rho''+width:InterpolationMasses 206 2.0771429 insert rho''+width:InterpolationMasses 207 2.097551 insert rho''+width:InterpolationMasses 208 2.1179592 insert rho''+width:InterpolationMasses 209 2.1383673 insert rho''+width:InterpolationMasses 210 2.1587755 insert rho''+width:InterpolationMasses 211 2.1791837 insert rho''+width:InterpolationMasses 212 2.1995918 insert rho''+width:InterpolationMasses 213 2.22 insert rho''+width:InterpolationMasses 214 2.2404082 insert rho''+width:InterpolationMasses 215 2.2608163 insert rho''+width:InterpolationMasses 216 1.1791837 insert rho''+width:InterpolationMasses 217 1.1995918 insert rho''+width:InterpolationMasses 218 1.22 insert rho''+width:InterpolationMasses 219 1.2404082 insert rho''+width:InterpolationMasses 220 1.2608163 insert rho''+width:InterpolationMasses 221 1.2812245 insert rho''+width:InterpolationMasses 222 1.3016327 insert rho''+width:InterpolationMasses 223 1.3220408 insert rho''+width:InterpolationMasses 224 1.342449 insert rho''+width:InterpolationMasses 225 1.3628571 insert rho''+width:InterpolationMasses 226 1.3832653 insert rho''+width:InterpolationMasses 227 1.4036735 insert rho''+width:InterpolationMasses 228 1.4240816 insert rho''+width:InterpolationMasses 229 1.4444898 insert rho''+width:InterpolationMasses 230 1.464898 insert rho''+width:InterpolationMasses 231 1.4853061 insert rho''+width:InterpolationMasses 232 1.5057143 insert rho''+width:InterpolationMasses 233 1.5261224 insert rho''+width:InterpolationMasses 234 1.5465306 insert rho''+width:InterpolationMasses 235 1.5669388 insert rho''+width:InterpolationMasses 236 1.5873469 insert rho''+width:InterpolationMasses 237 1.6077551 insert rho''+width:InterpolationMasses 238 1.6281633 insert rho''+width:InterpolationMasses 239 1.6485714 insert rho''+width:InterpolationMasses 240 1.6689796 insert rho''+width:InterpolationMasses 241 1.6893878 insert rho''+width:InterpolationMasses 242 1.7097959 insert rho''+width:InterpolationMasses 243 1.7302041 insert rho''+width:InterpolationMasses 244 1.7506122 insert rho''+width:InterpolationMasses 245 1.7710204 insert rho''+width:InterpolationMasses 246 1.7914286 insert rho''+width:InterpolationMasses 247 1.8118367 insert rho''+width:InterpolationMasses 248 1.8322449 insert rho''+width:InterpolationMasses 249 1.8526531 insert rho''+width:InterpolationMasses 250 1.8730612 insert rho''+width:InterpolationMasses 251 1.8934694 insert rho''+width:InterpolationMasses 252 1.9138776 insert rho''+width:InterpolationMasses 253 1.9342857 insert rho''+width:InterpolationMasses 254 1.9546939 insert rho''+width:InterpolationMasses 255 1.975102 insert rho''+width:InterpolationMasses 256 1.9955102 insert rho''+width:InterpolationMasses 257 2.0159184 insert rho''+width:InterpolationMasses 258 2.0363265 insert rho''+width:InterpolationMasses 259 2.0567347 insert rho''+width:InterpolationMasses 260 2.0771429 insert rho''+width:InterpolationMasses 261 2.097551 insert rho''+width:InterpolationMasses 262 2.1179592 insert rho''+width:InterpolationMasses 263 2.1383673 insert rho''+width:InterpolationMasses 264 2.1587755 insert rho''+width:InterpolationMasses 265 2.1791837 insert rho''+width:InterpolationMasses 266 2.1995918 insert rho''+width:InterpolationMasses 267 2.22 insert rho''+width:InterpolationMasses 268 2.2404082 insert rho''+width:InterpolationMasses 269 2.2608163 insert rho''+width:InterpolationMasses 270 1.1791837 insert rho''+width:InterpolationMasses 271 1.1995918 insert rho''+width:InterpolationMasses 272 1.22 insert rho''+width:InterpolationMasses 273 1.2404082 insert rho''+width:InterpolationMasses 274 1.2608163 insert rho''+width:InterpolationMasses 275 1.2812245 insert rho''+width:InterpolationMasses 276 1.3016327 insert rho''+width:InterpolationMasses 277 1.3220408 insert rho''+width:InterpolationMasses 278 1.342449 insert rho''+width:InterpolationMasses 279 1.3628571 insert rho''+width:InterpolationMasses 280 1.3832653 insert rho''+width:InterpolationMasses 281 1.4036735 insert rho''+width:InterpolationMasses 282 1.4240816 insert rho''+width:InterpolationMasses 283 1.4444898 insert rho''+width:InterpolationMasses 284 1.464898 insert rho''+width:InterpolationMasses 285 1.4853061 insert rho''+width:InterpolationMasses 286 1.5057143 insert rho''+width:InterpolationMasses 287 1.5261224 insert rho''+width:InterpolationMasses 288 1.5465306 insert rho''+width:InterpolationMasses 289 1.5669388 insert rho''+width:InterpolationMasses 290 1.5873469 insert rho''+width:InterpolationMasses 291 1.6077551 insert rho''+width:InterpolationMasses 292 1.6281633 insert rho''+width:InterpolationMasses 293 1.6485714 insert rho''+width:InterpolationMasses 294 1.6689796 insert rho''+width:InterpolationMasses 295 1.6893878 insert rho''+width:InterpolationMasses 296 1.7097959 insert rho''+width:InterpolationMasses 297 1.7302041 insert rho''+width:InterpolationMasses 298 1.7506122 insert rho''+width:InterpolationMasses 299 1.7710204 insert rho''+width:InterpolationMasses 300 1.7914286 insert rho''+width:InterpolationMasses 301 1.8118367 insert rho''+width:InterpolationMasses 302 1.8322449 insert rho''+width:InterpolationMasses 303 1.8526531 insert rho''+width:InterpolationMasses 304 1.8730612 insert rho''+width:InterpolationMasses 305 1.8934694 insert rho''+width:InterpolationMasses 306 1.9138776 insert rho''+width:InterpolationMasses 307 1.9342857 insert rho''+width:InterpolationMasses 308 1.9546939 insert rho''+width:InterpolationMasses 309 1.975102 insert rho''+width:InterpolationMasses 310 1.9955102 insert rho''+width:InterpolationMasses 311 2.0159184 insert rho''+width:InterpolationMasses 312 2.0363265 insert rho''+width:InterpolationMasses 313 2.0567347 insert rho''+width:InterpolationMasses 314 2.0771429 insert rho''+width:InterpolationMasses 315 2.097551 insert rho''+width:InterpolationMasses 316 2.1179592 insert rho''+width:InterpolationMasses 317 2.1383673 insert rho''+width:InterpolationMasses 318 2.1587755 insert rho''+width:InterpolationMasses 319 2.1791837 insert rho''+width:InterpolationMasses 320 2.1995918 insert rho''+width:InterpolationMasses 321 2.22 insert rho''+width:InterpolationMasses 322 2.2404082 insert rho''+width:InterpolationMasses 323 2.2608163 insert rho''+width:InterpolationMasses 324 1.1791837 insert rho''+width:InterpolationMasses 325 1.1995918 insert rho''+width:InterpolationMasses 326 1.22 insert rho''+width:InterpolationMasses 327 1.2404082 insert rho''+width:InterpolationMasses 328 1.2608163 insert rho''+width:InterpolationMasses 329 1.2812245 insert rho''+width:InterpolationMasses 330 1.3016327 insert rho''+width:InterpolationMasses 331 1.3220408 insert rho''+width:InterpolationMasses 332 1.342449 insert rho''+width:InterpolationMasses 333 1.3628571 insert rho''+width:InterpolationMasses 334 1.3832653 insert rho''+width:InterpolationMasses 335 1.4036735 insert rho''+width:InterpolationMasses 336 1.4240816 insert rho''+width:InterpolationMasses 337 1.4444898 insert rho''+width:InterpolationMasses 338 1.464898 insert rho''+width:InterpolationMasses 339 1.4853061 insert rho''+width:InterpolationMasses 340 1.5057143 insert rho''+width:InterpolationMasses 341 1.5261224 insert rho''+width:InterpolationMasses 342 1.5465306 insert rho''+width:InterpolationMasses 343 1.5669388 insert rho''+width:InterpolationMasses 344 1.5873469 insert rho''+width:InterpolationMasses 345 1.6077551 insert rho''+width:InterpolationMasses 346 1.6281633 insert rho''+width:InterpolationMasses 347 1.6485714 insert rho''+width:InterpolationMasses 348 1.6689796 insert rho''+width:InterpolationMasses 349 1.6893878 insert rho''+width:InterpolationMasses 350 1.7097959 insert rho''+width:InterpolationMasses 351 1.7302041 insert rho''+width:InterpolationMasses 352 1.7506122 insert rho''+width:InterpolationMasses 353 1.7710204 insert rho''+width:InterpolationMasses 354 1.7914286 insert rho''+width:InterpolationMasses 355 1.8118367 insert rho''+width:InterpolationMasses 356 1.8322449 insert rho''+width:InterpolationMasses 357 1.8526531 insert rho''+width:InterpolationMasses 358 1.8730612 insert rho''+width:InterpolationMasses 359 1.8934694 insert rho''+width:InterpolationMasses 360 1.9138776 insert rho''+width:InterpolationMasses 361 1.9342857 insert rho''+width:InterpolationMasses 362 1.9546939 insert rho''+width:InterpolationMasses 363 1.975102 insert rho''+width:InterpolationMasses 364 1.9955102 insert rho''+width:InterpolationMasses 365 2.0159184 insert rho''+width:InterpolationMasses 366 2.0363265 insert rho''+width:InterpolationMasses 367 2.0567347 insert rho''+width:InterpolationMasses 368 2.0771429 insert rho''+width:InterpolationMasses 369 2.097551 insert rho''+width:InterpolationMasses 370 2.1179592 insert rho''+width:InterpolationMasses 371 2.1383673 insert rho''+width:InterpolationMasses 372 2.1587755 insert rho''+width:InterpolationMasses 373 2.1791837 insert rho''+width:InterpolationMasses 374 2.1995918 insert rho''+width:InterpolationMasses 375 2.22 insert rho''+width:InterpolationMasses 376 2.2404082 insert rho''+width:InterpolationMasses 377 2.2608163 insert rho''+width:InterpolationMasses 378 1.1791837 insert rho''+width:InterpolationMasses 379 1.1995918 insert rho''+width:InterpolationMasses 380 1.22 insert rho''+width:InterpolationMasses 381 1.2404082 insert rho''+width:InterpolationMasses 382 1.2608163 insert rho''+width:InterpolationMasses 383 1.2812245 insert rho''+width:InterpolationMasses 384 1.3016327 insert rho''+width:InterpolationMasses 385 1.3220408 insert rho''+width:InterpolationMasses 386 1.342449 insert rho''+width:InterpolationMasses 387 1.3628571 insert rho''+width:InterpolationMasses 388 1.3832653 insert rho''+width:InterpolationMasses 389 1.4036735 insert rho''+width:InterpolationMasses 390 1.4240816 insert rho''+width:InterpolationMasses 391 1.4444898 insert rho''+width:InterpolationMasses 392 1.464898 insert rho''+width:InterpolationMasses 393 1.4853061 insert rho''+width:InterpolationMasses 394 1.5057143 insert rho''+width:InterpolationMasses 395 1.5261224 insert rho''+width:InterpolationMasses 396 1.5465306 insert rho''+width:InterpolationMasses 397 1.5669388 insert rho''+width:InterpolationMasses 398 1.5873469 insert rho''+width:InterpolationMasses 399 1.6077551 insert rho''+width:InterpolationMasses 400 1.6281633 insert rho''+width:InterpolationMasses 401 1.6485714 insert rho''+width:InterpolationMasses 402 1.6689796 insert rho''+width:InterpolationMasses 403 1.6893878 insert rho''+width:InterpolationMasses 404 1.7097959 insert rho''+width:InterpolationMasses 405 1.7302041 insert rho''+width:InterpolationMasses 406 1.7506122 insert rho''+width:InterpolationMasses 407 1.7710204 insert rho''+width:InterpolationMasses 408 1.7914286 insert rho''+width:InterpolationMasses 409 1.8118367 insert rho''+width:InterpolationMasses 410 1.8322449 insert rho''+width:InterpolationMasses 411 1.8526531 insert rho''+width:InterpolationMasses 412 1.8730612 insert rho''+width:InterpolationMasses 413 1.8934694 insert rho''+width:InterpolationMasses 414 1.9138776 insert rho''+width:InterpolationMasses 415 1.9342857 insert rho''+width:InterpolationMasses 416 1.9546939 insert rho''+width:InterpolationMasses 417 1.975102 insert rho''+width:InterpolationMasses 418 1.9955102 insert rho''+width:InterpolationMasses 419 2.0159184 insert rho''+width:InterpolationMasses 420 2.0363265 insert rho''+width:InterpolationMasses 421 2.0567347 insert rho''+width:InterpolationMasses 422 2.0771429 insert rho''+width:InterpolationMasses 423 2.097551 insert rho''+width:InterpolationMasses 424 2.1179592 insert rho''+width:InterpolationMasses 425 2.1383673 insert rho''+width:InterpolationMasses 426 2.1587755 insert rho''+width:InterpolationMasses 427 2.1791837 insert rho''+width:InterpolationMasses 428 2.1995918 insert rho''+width:InterpolationMasses 429 2.22 insert rho''+width:InterpolationMasses 430 2.2404082 insert rho''+width:InterpolationMasses 431 2.2608163 insert rho''+width:InterpolationMasses 432 1.1791837 insert rho''+width:InterpolationMasses 433 1.1995918 insert rho''+width:InterpolationMasses 434 1.22 insert rho''+width:InterpolationMasses 435 1.2404082 insert rho''+width:InterpolationMasses 436 1.2608163 insert rho''+width:InterpolationMasses 437 1.2812245 insert rho''+width:InterpolationMasses 438 1.3016327 insert rho''+width:InterpolationMasses 439 1.3220408 insert rho''+width:InterpolationMasses 440 1.342449 insert rho''+width:InterpolationMasses 441 1.3628571 insert rho''+width:InterpolationMasses 442 1.3832653 insert rho''+width:InterpolationMasses 443 1.4036735 insert rho''+width:InterpolationMasses 444 1.4240816 insert rho''+width:InterpolationMasses 445 1.4444898 insert rho''+width:InterpolationMasses 446 1.464898 insert rho''+width:InterpolationMasses 447 1.4853061 insert rho''+width:InterpolationMasses 448 1.5057143 insert rho''+width:InterpolationMasses 449 1.5261224 insert rho''+width:InterpolationMasses 450 1.5465306 insert rho''+width:InterpolationMasses 451 1.5669388 insert rho''+width:InterpolationMasses 452 1.5873469 insert rho''+width:InterpolationMasses 453 1.6077551 insert rho''+width:InterpolationMasses 454 1.6281633 insert rho''+width:InterpolationMasses 455 1.6485714 insert rho''+width:InterpolationMasses 456 1.6689796 insert rho''+width:InterpolationMasses 457 1.6893878 insert rho''+width:InterpolationMasses 458 1.7097959 insert rho''+width:InterpolationMasses 459 1.7302041 insert rho''+width:InterpolationMasses 460 1.7506122 insert rho''+width:InterpolationMasses 461 1.7710204 insert rho''+width:InterpolationMasses 462 1.7914286 insert rho''+width:InterpolationMasses 463 1.8118367 insert rho''+width:InterpolationMasses 464 1.8322449 insert rho''+width:InterpolationMasses 465 1.8526531 insert rho''+width:InterpolationMasses 466 1.8730612 insert rho''+width:InterpolationMasses 467 1.8934694 insert rho''+width:InterpolationMasses 468 1.9138776 insert rho''+width:InterpolationMasses 469 1.9342857 insert rho''+width:InterpolationMasses 470 1.9546939 insert rho''+width:InterpolationMasses 471 1.975102 insert rho''+width:InterpolationMasses 472 1.9955102 insert rho''+width:InterpolationMasses 473 2.0159184 insert rho''+width:InterpolationMasses 474 2.0363265 insert rho''+width:InterpolationMasses 475 2.0567347 insert rho''+width:InterpolationMasses 476 2.0771429 insert rho''+width:InterpolationMasses 477 2.097551 insert rho''+width:InterpolationMasses 478 2.1179592 insert rho''+width:InterpolationMasses 479 2.1383673 insert rho''+width:InterpolationMasses 480 2.1587755 insert rho''+width:InterpolationMasses 481 2.1791837 insert rho''+width:InterpolationMasses 482 2.1995918 insert rho''+width:InterpolationMasses 483 2.22 insert rho''+width:InterpolationMasses 484 2.2404082 insert rho''+width:InterpolationMasses 485 2.2608163 insert rho''+width:InterpolationWidths 0 5.9141184e-09 insert rho''+width:InterpolationWidths 1 2.8911328e-08 insert rho''+width:InterpolationWidths 2 9.5898453e-08 insert rho''+width:InterpolationWidths 3 2.5636527e-07 insert rho''+width:InterpolationWidths 4 5.9903943e-07 insert rho''+width:InterpolationWidths 5 1.2816464e-06 insert rho''+width:InterpolationWidths 6 2.589773e-06 insert rho''+width:InterpolationWidths 7 5.0648456e-06 insert rho''+width:InterpolationWidths 8 9.8194482e-06 insert rho''+width:InterpolationWidths 9 1.9440607e-05 insert rho''+width:InterpolationWidths 10 4.0661376e-05 insert rho''+width:InterpolationWidths 11 8.6662407e-05 insert rho''+width:InterpolationWidths 12 0.00016604731 insert rho''+width:InterpolationWidths 13 0.00027831648 insert rho''+width:InterpolationWidths 14 0.00042125745 insert rho''+width:InterpolationWidths 15 0.00059314838 insert rho''+width:InterpolationWidths 16 0.00079279923 insert rho''+width:InterpolationWidths 17 0.001019398 insert rho''+width:InterpolationWidths 18 0.0012723936 insert rho''+width:InterpolationWidths 19 0.0015514186 insert rho''+width:InterpolationWidths 20 0.0018562386 insert rho''+width:InterpolationWidths 21 0.0021867186 insert rho''+width:InterpolationWidths 22 0.002542799 insert rho''+width:InterpolationWidths 23 0.0029244788 insert rho''+width:InterpolationWidths 24 0.0033318041 insert rho''+width:InterpolationWidths 25 0.0037648581 insert rho''+width:InterpolationWidths 26 0.004223755 insert rho''+width:InterpolationWidths 27 0.0047086343 insert rho''+width:InterpolationWidths 28 0.0052196566 insert rho''+width:InterpolationWidths 29 0.0057570007 insert rho''+width:InterpolationWidths 30 0.0063208603 insert rho''+width:InterpolationWidths 31 0.0069114425 insert rho''+width:InterpolationWidths 32 0.0075287189 insert rho''+width:InterpolationWidths 33 0.0081736582 insert rho''+width:InterpolationWidths 34 0.008845757 insert rho''+width:InterpolationWidths 35 0.0095455068 insert rho''+width:InterpolationWidths 36 0.010273104 insert rho''+width:InterpolationWidths 37 0.01102851 insert rho''+width:InterpolationWidths 38 0.011811798 insert rho''+width:InterpolationWidths 39 0.012623095 insert rho''+width:InterpolationWidths 40 0.013462555 insert rho''+width:InterpolationWidths 41 0.014330347 insert rho''+width:InterpolationWidths 42 0.015226652 insert rho''+width:InterpolationWidths 43 0.016151661 insert rho''+width:InterpolationWidths 44 0.017105571 insert rho''+width:InterpolationWidths 45 0.018088586 insert rho''+width:InterpolationWidths 46 0.019100915 insert rho''+width:InterpolationWidths 47 0.020142772 insert rho''+width:InterpolationWidths 48 0.021214375 insert rho''+width:InterpolationWidths 49 0.022315944 insert rho''+width:InterpolationWidths 50 0.023447704 insert rho''+width:InterpolationWidths 51 0.024609881 insert rho''+width:InterpolationWidths 52 0.025802706 insert rho''+width:InterpolationWidths 53 0.02702641 insert rho''+width:InterpolationWidths 54 7.8862081e-09 insert rho''+width:InterpolationWidths 55 3.5635688e-08 insert rho''+width:InterpolationWidths 56 1.1227803e-07 insert rho''+width:InterpolationWidths 57 2.8952739e-07 insert rho''+width:InterpolationWidths 58 6.586742e-07 insert rho''+width:InterpolationWidths 59 1.3802148e-06 insert rho''+width:InterpolationWidths 60 2.742244e-06 insert rho''+width:InterpolationWidths 61 5.2869444e-06 insert rho''+width:InterpolationWidths 62 1.0121105e-05 insert rho''+width:InterpolationWidths 63 1.9804131e-05 insert rho''+width:InterpolationWidths 64 4.1005654e-05 insert rho''+width:InterpolationWidths 65 8.7050182e-05 insert rho''+width:InterpolationWidths 66 0.00016691097 insert rho''+width:InterpolationWidths 67 0.00028012425 insert rho''+width:InterpolationWidths 68 0.00042440989 insert rho''+width:InterpolationWidths 69 0.00059799808 insert rho''+width:InterpolationWidths 70 0.0007996696 insert rho''+width:InterpolationWidths 71 0.0010285944 insert rho''+width:InterpolationWidths 72 0.0012842099 insert rho''+width:InterpolationWidths 73 0.0015661412 insert rho''+width:InterpolationWidths 74 0.0018741492 insert rho''+width:InterpolationWidths 75 0.0022080955 insert rho''+width:InterpolationWidths 76 0.0025679186 insert rho''+width:InterpolationWidths 77 0.0029536166 insert rho''+width:InterpolationWidths 78 0.0033652349 insert rho''+width:InterpolationWidths 79 0.0038028567 insert rho''+width:InterpolationWidths 80 0.0042665966 insert rho''+width:InterpolationWidths 81 0.0047565944 insert rho''+width:InterpolationWidths 82 0.0052730116 insert rho''+width:InterpolationWidths 83 0.0058160278 insert rho''+width:InterpolationWidths 84 0.0063858377 insert rho''+width:InterpolationWidths 85 0.0069824553 insert rho''+width:InterpolationWidths 86 0.0076064405 insert rho''+width:InterpolationWidths 87 0.0082581672 insert rho''+width:InterpolationWidths 88 0.0089373407 insert rho''+width:InterpolationWidths 89 0.0096444503 insert rho''+width:InterpolationWidths 90 0.01037964 insert rho''+width:InterpolationWidths 91 0.011142877 insert rho''+width:InterpolationWidths 92 0.01193426 insert rho''+width:InterpolationWidths 93 0.012753927 insert rho''+width:InterpolationWidths 94 0.013602036 insert rho''+width:InterpolationWidths 95 0.014478764 insert rho''+width:InterpolationWidths 96 0.015384295 insert rho''+width:InterpolationWidths 97 0.016318825 insert rho''+width:InterpolationWidths 98 0.017282556 insert rho''+width:InterpolationWidths 99 0.018275694 insert rho''+width:InterpolationWidths 100 0.019298452 insert rho''+width:InterpolationWidths 101 0.020351049 insert rho''+width:InterpolationWidths 102 0.021433703 insert rho''+width:InterpolationWidths 103 0.02254664 insert rho''+width:InterpolationWidths 104 0.023690088 insert rho''+width:InterpolationWidths 105 0.024864275 insert rho''+width:InterpolationWidths 106 0.026069435 insert rho''+width:InterpolationWidths 107 0.027305803 insert rho''+width:InterpolationWidths 108 0.00037226191 insert rho''+width:InterpolationWidths 109 0.00049874467 insert rho''+width:InterpolationWidths 110 0.00065432066 insert rho''+width:InterpolationWidths 111 0.00084209428 insert rho''+width:InterpolationWidths 112 0.0010642025 insert rho''+width:InterpolationWidths 113 0.0013230247 insert rho''+width:InterpolationWidths 114 0.0016200039 insert rho''+width:InterpolationWidths 115 0.0019558985 insert rho''+width:InterpolationWidths 116 0.0023309261 insert rho''+width:InterpolationWidths 117 0.0027448889 insert rho''+width:InterpolationWidths 118 0.0031971684 insert rho''+width:InterpolationWidths 119 0.0036869867 insert rho''+width:InterpolationWidths 120 0.0042132823 insert rho''+width:InterpolationWidths 121 0.0047743217 insert rho''+width:InterpolationWidths 122 0.0053687641 insert rho''+width:InterpolationWidths 123 0.0059956513 insert rho''+width:InterpolationWidths 124 0.0066538873 insert rho''+width:InterpolationWidths 125 0.0073407148 insert rho''+width:InterpolationWidths 126 0.0080542022 insert rho''+width:InterpolationWidths 127 0.0087921135 insert rho''+width:InterpolationWidths 128 0.009554296 insert rho''+width:InterpolationWidths 129 0.010339317 insert rho''+width:InterpolationWidths 130 0.011147923 insert rho''+width:InterpolationWidths 131 0.011979036 insert rho''+width:InterpolationWidths 132 0.01283268 insert rho''+width:InterpolationWidths 133 0.013709354 insert rho''+width:InterpolationWidths 134 0.014608961 insert rho''+width:InterpolationWidths 135 0.01553101 insert rho''+width:InterpolationWidths 136 0.016475638 insert rho''+width:InterpolationWidths 137 0.017443448 insert rho''+width:InterpolationWidths 138 0.018434389 insert rho''+width:InterpolationWidths 139 0.019448251 insert rho''+width:InterpolationWidths 140 0.020485756 insert rho''+width:InterpolationWidths 141 0.0215463 insert rho''+width:InterpolationWidths 142 0.022631167 insert rho''+width:InterpolationWidths 143 0.023739136 insert rho''+width:InterpolationWidths 144 0.024871282 insert rho''+width:InterpolationWidths 145 0.026028255 insert rho''+width:InterpolationWidths 146 0.02716162 insert rho''+width:InterpolationWidths 147 0.028275205 insert rho''+width:InterpolationWidths 148 0.029382856 insert rho''+width:InterpolationWidths 149 0.030489122 insert rho''+width:InterpolationWidths 150 0.031596546 insert rho''+width:InterpolationWidths 151 0.032706821 insert rho''+width:InterpolationWidths 152 0.03382119 insert rho''+width:InterpolationWidths 153 0.034940628 insert rho''+width:InterpolationWidths 154 0.036065932 insert rho''+width:InterpolationWidths 155 0.037197778 insert rho''+width:InterpolationWidths 156 0.038336754 insert rho''+width:InterpolationWidths 157 0.039483381 insert rho''+width:InterpolationWidths 158 0.040638131 insert rho''+width:InterpolationWidths 159 0.041801432 insert rho''+width:InterpolationWidths 160 0.042973681 insert rho''+width:InterpolationWidths 161 0.044155247 insert rho''+width:InterpolationWidths 162 0.00035535175 insert rho''+width:InterpolationWidths 163 0.0004775851 insert rho''+width:InterpolationWidths 164 0.00062839152 insert rho''+width:InterpolationWidths 165 0.0008108662 insert rho''+width:InterpolationWidths 166 0.001027708 insert rho''+width:InterpolationWidths 167 0.0012810261 insert rho''+width:InterpolationWidths 168 0.0015724348 insert rho''+width:InterpolationWidths 169 0.001902929 insert rho''+width:InterpolationWidths 170 0.0022728898 insert rho''+width:InterpolationWidths 171 0.0026820652 insert rho''+width:InterpolationWidths 172 0.003130234 insert rho''+width:InterpolationWidths 173 0.0036159965 insert rho''+width:InterpolationWidths 174 0.004138672 insert rho''+width:InterpolationWidths 175 0.0046968393 insert rho''+width:InterpolationWidths 176 0.0052892174 insert rho''+width:InterpolationWidths 177 0.0059143788 insert rho''+width:InterpolationWidths 178 0.0065709986 insert rho''+width:InterpolationWidths 179 0.0072566298 insert rho''+width:InterpolationWidths 180 0.0079695922 insert rho''+width:InterpolationWidths 181 0.0087072485 insert rho''+width:InterpolationWidths 182 0.0094698547 insert rho''+width:InterpolationWidths 183 0.010255337 insert rho''+width:InterpolationWidths 184 0.011064218 insert rho''+width:InterpolationWidths 185 0.011895197 insert rho''+width:InterpolationWidths 186 0.012749423 insert rho''+width:InterpolationWidths 187 0.013626363 insert rho''+width:InterpolationWidths 188 0.014526344 insert rho''+width:InterpolationWidths 189 0.015448758 insert rho''+width:InterpolationWidths 190 0.016393605 insert rho''+width:InterpolationWidths 191 0.0173618 insert rho''+width:InterpolationWidths 192 0.018353064 insert rho''+width:InterpolationWidths 193 0.019367325 insert rho''+width:InterpolationWidths 194 0.020405005 insert rho''+width:InterpolationWidths 195 0.021466518 insert rho''+width:InterpolationWidths 196 0.02255135 insert rho''+width:InterpolationWidths 197 0.023659637 insert rho''+width:InterpolationWidths 198 0.024791824 insert rho''+width:InterpolationWidths 199 0.025948962 insert rho''+width:InterpolationWidths 200 0.027097984 insert rho''+width:InterpolationWidths 201 0.028218665 insert rho''+width:InterpolationWidths 202 0.029331465 insert rho''+width:InterpolationWidths 203 0.030441905 insert rho''+width:InterpolationWidths 204 0.031552887 insert rho''+width:InterpolationWidths 205 0.032666289 insert rho''+width:InterpolationWidths 206 0.033783462 insert rho''+width:InterpolationWidths 207 0.034905452 insert rho''+width:InterpolationWidths 208 0.036033106 insert rho''+width:InterpolationWidths 209 0.037167136 insert rho''+width:InterpolationWidths 210 0.038308158 insert rho''+width:InterpolationWidths 211 0.039456716 insert rho''+width:InterpolationWidths 212 0.040613296 insert rho''+width:InterpolationWidths 213 0.041778343 insert rho''+width:InterpolationWidths 214 0.042952263 insert rho''+width:InterpolationWidths 215 0.044135437 insert rho''+width:InterpolationWidths 216 5.8739941e-05 insert rho''+width:InterpolationWidths 217 8.4652103e-05 insert rho''+width:InterpolationWidths 218 0.0001211892 insert rho''+width:InterpolationWidths 219 0.00017289433 insert rho''+width:InterpolationWidths 220 0.00024644776 insert rho''+width:InterpolationWidths 221 0.00035149301 insert rho''+width:InterpolationWidths 222 0.00050106383 insert rho''+width:InterpolationWidths 223 0.00071044881 insert rho''+width:InterpolationWidths 224 0.00099403686 insert rho''+width:InterpolationWidths 225 0.001362263 insert rho''+width:InterpolationWidths 226 0.0018210634 insert rho''+width:InterpolationWidths 227 0.0023731972 insert rho''+width:InterpolationWidths 228 0.0030197121 insert rho''+width:InterpolationWidths 229 0.0037608884 insert rho''+width:InterpolationWidths 230 0.0045967333 insert rho''+width:InterpolationWidths 231 0.0055272145 insert rho''+width:InterpolationWidths 232 0.0065523628 insert rho''+width:InterpolationWidths 233 0.007672311 insert rho''+width:InterpolationWidths 234 0.0088873043 insert rho''+width:InterpolationWidths 235 0.010197697 insert rho''+width:InterpolationWidths 236 0.011603946 insert rho''+width:InterpolationWidths 237 0.013106597 insert rho''+width:InterpolationWidths 238 0.014706278 insert rho''+width:InterpolationWidths 239 0.016403706 insert rho''+width:InterpolationWidths 240 0.018199614 insert rho''+width:InterpolationWidths 241 0.020094834 insert rho''+width:InterpolationWidths 242 0.022090235 insert rho''+width:InterpolationWidths 243 0.024186727 insert rho''+width:InterpolationWidths 244 0.026385263 insert rho''+width:InterpolationWidths 245 0.028686828 insert rho''+width:InterpolationWidths 246 0.031092438 insert rho''+width:InterpolationWidths 247 0.033603138 insert rho''+width:InterpolationWidths 248 0.036219903 insert rho''+width:InterpolationWidths 249 0.038942299 insert rho''+width:InterpolationWidths 250 0.041769873 insert rho''+width:InterpolationWidths 251 0.044702767 insert rho''+width:InterpolationWidths 252 0.047741356 insert rho''+width:InterpolationWidths 253 0.050886112 insert rho''+width:InterpolationWidths 254 0.054137599 insert rho''+width:InterpolationWidths 255 0.057496442 insert rho''+width:InterpolationWidths 256 0.060963314 insert rho''+width:InterpolationWidths 257 0.064538925 insert rho''+width:InterpolationWidths 258 0.068224018 insert rho''+width:InterpolationWidths 259 0.072019362 insert rho''+width:InterpolationWidths 260 0.07592575 insert rho''+width:InterpolationWidths 261 0.079943995 insert rho''+width:InterpolationWidths 262 0.084074927 insert rho''+width:InterpolationWidths 263 0.088319392 insert rho''+width:InterpolationWidths 264 0.092678249 insert rho''+width:InterpolationWidths 265 0.09715237 insert rho''+width:InterpolationWidths 266 0.10174264 insert rho''+width:InterpolationWidths 267 0.10644995 insert rho''+width:InterpolationWidths 268 0.1112752 insert rho''+width:InterpolationWidths 269 0.1162193 insert rho''+width:InterpolationWidths 270 0.00050135438 insert rho''+width:InterpolationWidths 271 0.00076673523 insert rho''+width:InterpolationWidths 272 0.0011338001 insert rho''+width:InterpolationWidths 273 0.0016174827 insert rho''+width:InterpolationWidths 274 0.0022233218 insert rho''+width:InterpolationWidths 275 0.0029462286 insert rho''+width:InterpolationWidths 276 0.0037743261 insert rho''+width:InterpolationWidths 277 0.0046930136 insert rho''+width:InterpolationWidths 278 0.0056887408 insert rho''+width:InterpolationWidths 279 0.0067502517 insert rho''+width:InterpolationWidths 280 0.0078678719 insert rho''+width:InterpolationWidths 281 0.0090365979 insert rho''+width:InterpolationWidths 282 0.010251182 insert rho''+width:InterpolationWidths 283 0.011508016 insert rho''+width:InterpolationWidths 284 0.012805323 insert rho''+width:InterpolationWidths 285 0.014141609 insert rho''+width:InterpolationWidths 286 0.015516482 insert rho''+width:InterpolationWidths 287 0.016924674 insert rho''+width:InterpolationWidths 288 0.018370964 insert rho''+width:InterpolationWidths 289 0.019853187 insert rho''+width:InterpolationWidths 290 0.021371371 insert rho''+width:InterpolationWidths 291 0.022925562 insert rho''+width:InterpolationWidths 292 0.024515591 insert rho''+width:InterpolationWidths 293 0.026142192 insert rho''+width:InterpolationWidths 294 0.02780508 insert rho''+width:InterpolationWidths 295 0.029418084 insert rho''+width:InterpolationWidths 296 0.030988445 insert rho''+width:InterpolationWidths 297 0.032542486 insert rho''+width:InterpolationWidths 298 0.034088909 insert rho''+width:InterpolationWidths 299 0.035632643 insert rho''+width:InterpolationWidths 300 0.037176996 insert rho''+width:InterpolationWidths 301 0.038724404 insert rho''+width:InterpolationWidths 302 0.040276775 insert rho''+width:InterpolationWidths 303 0.041835669 insert rho''+width:InterpolationWidths 304 0.043402402 insert rho''+width:InterpolationWidths 305 0.044978114 insert rho''+width:InterpolationWidths 306 0.046563809 insert rho''+width:InterpolationWidths 307 0.048160386 insert rho''+width:InterpolationWidths 308 0.049768664 insert rho''+width:InterpolationWidths 309 0.051389389 insert rho''+width:InterpolationWidths 310 0.053023256 insert rho''+width:InterpolationWidths 311 0.05467091 insert rho''+width:InterpolationWidths 312 0.056332958 insert rho''+width:InterpolationWidths 313 0.058009971 insert rho''+width:InterpolationWidths 314 0.059702492 insert rho''+width:InterpolationWidths 315 0.061411036 insert rho''+width:InterpolationWidths 316 0.063136098 insert rho''+width:InterpolationWidths 317 0.064878151 insert rho''+width:InterpolationWidths 318 0.066637649 insert rho''+width:InterpolationWidths 319 0.068415031 insert rho''+width:InterpolationWidths 320 0.070210723 insert rho''+width:InterpolationWidths 321 0.072025134 insert rho''+width:InterpolationWidths 322 0.073858663 insert rho''+width:InterpolationWidths 323 0.0757117 insert rho''+width:InterpolationWidths 324 2.690666e-05 insert rho''+width:InterpolationWidths 325 4.4184308e-05 insert rho''+width:InterpolationWidths 326 7.0042742e-05 insert rho''+width:InterpolationWidths 327 0.00010808674 insert rho''+width:InterpolationWidths 328 0.00016327305 insert rho''+width:InterpolationWidths 329 0.00024240027 insert rho''+width:InterpolationWidths 330 0.00035460838 insert rho''+width:InterpolationWidths 331 0.00051170408 insert rho''+width:InterpolationWidths 332 0.00072834952 insert rho''+width:InterpolationWidths 333 0.0010210964 insert rho''+width:InterpolationWidths 334 0.0014071176 insert rho''+width:InterpolationWidths 335 0.0019024393 insert rho''+width:InterpolationWidths 336 0.0025209206 insert rho''+width:InterpolationWidths 337 0.0032736009 insert rho''+width:InterpolationWidths 338 0.0041684454 insert rho''+width:InterpolationWidths 339 0.0052130249 insert rho''+width:InterpolationWidths 340 0.0064105427 insert rho''+width:InterpolationWidths 341 0.0077645501 insert rho''+width:InterpolationWidths 342 0.0092766071 insert rho''+width:InterpolationWidths 343 0.010949364 insert rho''+width:InterpolationWidths 344 0.012781029 insert rho''+width:InterpolationWidths 345 0.014771576 insert rho''+width:InterpolationWidths 346 0.016920664 insert rho''+width:InterpolationWidths 347 0.019226234 insert rho''+width:InterpolationWidths 348 0.021686468 insert rho''+width:InterpolationWidths 349 0.024296908 insert rho''+width:InterpolationWidths 350 0.027059652 insert rho''+width:InterpolationWidths 351 0.029972022 insert rho''+width:InterpolationWidths 352 0.033027563 insert rho''+width:InterpolationWidths 353 0.036222588 insert rho''+width:InterpolationWidths 354 0.039556936 insert rho''+width:InterpolationWidths 355 0.043025597 insert rho''+width:InterpolationWidths 356 0.046626729 insert rho''+width:InterpolationWidths 357 0.050354627 insert rho''+width:InterpolationWidths 358 0.054203869 insert rho''+width:InterpolationWidths 359 0.058169218 insert rho''+width:InterpolationWidths 360 0.062245682 insert rho''+width:InterpolationWidths 361 0.066428449 insert rho''+width:InterpolationWidths 362 0.070712848 insert rho''+width:InterpolationWidths 363 0.07509434 insert rho''+width:InterpolationWidths 364 0.079568514 insert rho''+width:InterpolationWidths 365 0.084131093 insert rho''+width:InterpolationWidths 366 0.088777933 insert rho''+width:InterpolationWidths 367 0.093505023 insert rho''+width:InterpolationWidths 368 0.09830849 insert rho''+width:InterpolationWidths 369 0.1031846 insert rho''+width:InterpolationWidths 370 0.10812974 insert rho''+width:InterpolationWidths 371 0.11314046 insert rho''+width:InterpolationWidths 372 0.11821341 insert rho''+width:InterpolationWidths 373 0.1233454 insert rho''+width:InterpolationWidths 374 0.12853334 insert rho''+width:InterpolationWidths 375 0.13377429 insert rho''+width:InterpolationWidths 376 0.13906543 insert rho''+width:InterpolationWidths 377 0.14440403 insert rho''+width:InterpolationWidths 378 2.4281441e-05 insert rho''+width:InterpolationWidths 379 4.0246654e-05 insert rho''+width:InterpolationWidths 380 6.4262245e-05 insert rho''+width:InterpolationWidths 381 9.973295e-05 insert rho''+width:InterpolationWidths 382 0.00015137227 insert rho''+width:InterpolationWidths 383 0.00022565672 insert rho''+width:InterpolationWidths 384 0.00033129188 insert rho''+width:InterpolationWidths 385 0.00047977069 insert rho''+width:InterpolationWidths 386 0.00068536424 insert rho''+width:InterpolationWidths 387 0.00096466824 insert rho''+width:InterpolationWidths 388 0.0013351024 insert rho''+width:InterpolationWidths 389 0.0018134863 insert rho''+width:InterpolationWidths 390 0.0024140614 insert rho''+width:InterpolationWidths 391 0.0031486919 insert rho''+width:InterpolationWidths 392 0.0040272938 insert rho''+width:InterpolationWidths 393 0.005052845 insert rho''+width:InterpolationWidths 394 0.0062337186 insert rho''+width:InterpolationWidths 395 0.0075719376 insert rho''+width:InterpolationWidths 396 0.0090692653 insert rho''+width:InterpolationWidths 397 0.010726829 insert rho''+width:InterpolationWidths 398 0.012545253 insert rho''+width:InterpolationWidths 399 0.014522366 insert rho''+width:InterpolationWidths 400 0.016659398 insert rho''+width:InterpolationWidths 401 0.018953246 insert rho''+width:InterpolationWidths 402 0.021403001 insert rho''+width:InterpolationWidths 403 0.024002962 insert rho''+width:InterpolationWidths 404 0.026755707 insert rho''+width:InterpolationWidths 405 0.029658864 insert rho''+width:InterpolationWidths 406 0.03270552 insert rho''+width:InterpolationWidths 407 0.0358925 insert rho''+width:InterpolationWidths 408 0.039218592 insert rho''+width:InterpolationWidths 409 0.042680215 insert rho''+width:InterpolationWidths 410 0.046273308 insert rho''+width:InterpolationWidths 411 0.049994957 insert rho''+width:InterpolationWidths 412 0.053838425 insert rho''+width:InterpolationWidths 413 0.057798518 insert rho''+width:InterpolationWidths 414 0.061870145 insert rho''+width:InterpolationWidths 415 0.066048429 insert rho''+width:InterpolationWidths 416 0.070328651 insert rho''+width:InterpolationWidths 417 0.074706234 insert rho''+width:InterpolationWidths 418 0.079176735 insert rho''+width:InterpolationWidths 419 0.08373585 insert rho''+width:InterpolationWidths 420 0.08837941 insert rho''+width:InterpolationWidths 421 0.093103386 insert rho''+width:InterpolationWidths 422 0.097903885 insert rho''+width:InterpolationWidths 423 0.10277716 insert rho''+width:InterpolationWidths 424 0.10771958 insert rho''+width:InterpolationWidths 425 0.11272768 insert rho''+width:InterpolationWidths 426 0.11779811 insert rho''+width:InterpolationWidths 427 0.12292765 insert rho''+width:InterpolationWidths 428 0.12811323 insert rho''+width:InterpolationWidths 429 0.13335188 insert rho''+width:InterpolationWidths 430 0.13864077 insert rho''+width:InterpolationWidths 431 0.14397718 insert rho''+width:InterpolationWidths 432 1.9498944e-05 insert rho''+width:InterpolationWidths 433 2.8261131e-05 insert rho''+width:InterpolationWidths 434 4.058458e-05 insert rho''+width:InterpolationWidths 435 5.7671376e-05 insert rho''+width:InterpolationWidths 436 8.1042448e-05 insert rho''+width:InterpolationWidths 437 0.00011261713 insert rho''+width:InterpolationWidths 438 0.00015481534 insert rho''+width:InterpolationWidths 439 0.00021068734 insert rho''+width:InterpolationWidths 440 0.00028407781 insert rho''+width:InterpolationWidths 441 0.00037982954 insert rho''+width:InterpolationWidths 442 0.00050403126 insert rho''+width:InterpolationWidths 443 0.00066430238 insert rho''+width:InterpolationWidths 444 0.00087009962 insert rho''+width:InterpolationWidths 445 0.0011329859 insert rho''+width:InterpolationWidths 446 0.0014667684 insert rho''+width:InterpolationWidths 447 0.0018873506 insert rho''+width:InterpolationWidths 448 0.0024121297 insert rho''+width:InterpolationWidths 449 0.0030588433 insert rho''+width:InterpolationWidths 450 0.003843994 insert rho''+width:InterpolationWidths 451 0.0047812239 insert rho''+width:InterpolationWidths 452 0.0058801314 insert rho''+width:InterpolationWidths 453 0.0071458249 insert rho''+width:InterpolationWidths 454 0.0085791934 insert rho''+width:InterpolationWidths 455 0.01017764 insert rho''+width:InterpolationWidths 456 0.011935974 insert rho''+width:InterpolationWidths 457 0.01384725 insert rho''+width:InterpolationWidths 458 0.015903471 insert rho''+width:InterpolationWidths 459 0.018096119 insert rho''+width:InterpolationWidths 460 0.020416507 insert rho''+width:InterpolationWidths 461 0.022856077 insert rho''+width:InterpolationWidths 462 0.025406524 insert rho''+width:InterpolationWidths 463 0.028059918 insert rho''+width:InterpolationWidths 464 0.030808743 insert rho''+width:InterpolationWidths 465 0.033645859 insert rho''+width:InterpolationWidths 466 0.036564862 insert rho''+width:InterpolationWidths 467 0.03955932 insert rho''+width:InterpolationWidths 468 0.042623501 insert rho''+width:InterpolationWidths 469 0.045751952 insert rho''+width:InterpolationWidths 470 0.048939434 insert rho''+width:InterpolationWidths 471 0.052181224 insert rho''+width:InterpolationWidths 472 0.05547255 insert rho''+width:InterpolationWidths 473 0.058808535 insert rho''+width:InterpolationWidths 474 0.062184488 insert rho''+width:InterpolationWidths 475 0.065595508 insert rho''+width:InterpolationWidths 476 0.069036624 insert rho''+width:InterpolationWidths 477 0.072502959 insert rho''+width:InterpolationWidths 478 0.075989912 insert rho''+width:InterpolationWidths 479 0.079493263 insert rho''+width:InterpolationWidths 480 0.083009219 insert rho''+width:InterpolationWidths 481 0.086534384 insert rho''+width:InterpolationWidths 482 0.09006578 insert rho''+width:InterpolationWidths 483 0.093600714 insert rho''+width:InterpolationWidths 484 0.097136904 insert rho''+width:InterpolationWidths 485 0.10067222 insert rho''+width:NumberofEntries 0 54 insert rho''+width:NumberofEntries 1 108 insert rho''+width:NumberofEntries 2 108 insert rho''+width:NumberofEntries 3 162 insert rho''+width:NumberofEntries 4 216 insert rho''+width:NumberofEntries 5 270 insert rho''+width:NumberofEntries 6 324 insert rho''+width:NumberofEntries 7 378 insert rho''+width:NumberofEntries 8 432 insert rho''+width:NumberofEntries 9 432 insert rho''+width:NumberofEntries 10 486 insert rho''+width:NumberofEntries 11 486 newdef /Herwig/Particles/rho''+:Width_generator rho''+width newdef /Herwig/Particles/rho''-:Width_generator rho''+width # create Herwig::GenericWidthGenerator rho''0width newdef rho''0width:Particle /Herwig/Particles/rho''0 newdef rho''0width:Prefactor 1.03905 newdef rho''0width:BRNormalize 1 newdef rho''0width:BRMinimum 0.01 newdef rho''0width:Points 50 newdef rho''0width:InterpolationOrder 1 insert rho''0width:MEtype 0 2 insert rho''0width:MEtype 1 2 insert rho''0width:MEtype 2 2 insert rho''0width:MEtype 3 2 insert rho''0width:MEtype 4 1 insert rho''0width:MEtype 5 1 insert rho''0width:MEtype 6 2 insert rho''0width:MEtype 7 2 insert rho''0width:MEtype 8 2 insert rho''0width:MEtype 9 2 insert rho''0width:MEtype 10 2 insert rho''0width:MEtype 11 2 insert rho''0width:MEtype 12 1 insert rho''0width:MEtype 13 2 insert rho''0width:MEtype 14 0 insert rho''0width:MEcode 0 0 insert rho''0width:MEcode 1 0 insert rho''0width:MEcode 2 0 insert rho''0width:MEcode 3 0 insert rho''0width:MEcode 4 0 insert rho''0width:MEcode 5 0 insert rho''0width:MEcode 6 0 insert rho''0width:MEcode 7 0 insert rho''0width:MEcode 8 0 insert rho''0width:MEcode 9 0 insert rho''0width:MEcode 10 0 insert rho''0width:MEcode 11 0 insert rho''0width:MEcode 12 0 insert rho''0width:MEcode 13 0 insert rho''0width:MEcode 14 0 insert rho''0width:MEcoupling 0 0.994172 insert rho''0width:MEcoupling 1 0.994172 insert rho''0width:MEcoupling 2 0.995979 insert rho''0width:MEcoupling 3 0.995979 insert rho''0width:MEcoupling 4 0.193309 insert rho''0width:MEcoupling 5 0.194468 insert rho''0width:MEcoupling 6 1.00188 insert rho''0width:MEcoupling 7 1.00188 insert rho''0width:MEcoupling 8 0.998086 insert rho''0width:MEcoupling 9 0.999296 insert rho''0width:MEcoupling 10 0.996672 insert rho''0width:MEcoupling 11 0.996672 insert rho''0width:MEcoupling 12 1.65447 insert rho''0width:MEcoupling 13 0.991984 insert rho''0width:MEcoupling 14 0.209974 insert rho''0width:ModeOn 0 0 insert rho''0width:ModeOn 1 0 insert rho''0width:ModeOn 2 0 insert rho''0width:ModeOn 3 0 insert rho''0width:ModeOn 4 0 insert rho''0width:ModeOn 5 0 insert rho''0width:ModeOn 6 1 insert rho''0width:ModeOn 7 1 insert rho''0width:ModeOn 8 1 insert rho''0width:ModeOn 9 1 insert rho''0width:ModeOn 10 1 insert rho''0width:ModeOn 11 1 insert rho''0width:ModeOn 12 1 insert rho''0width:ModeOn 13 1 insert rho''0width:ModeOn 14 1 insert rho''0width:MinimumMasses 0 1.13534 insert rho''0width:MinimumMasses 1 1.13534 insert rho''0width:MinimumMasses 2 1.14365 insert rho''0width:MinimumMasses 3 1.14365 insert rho''0width:MinimumMasses 4 0.987354 insert rho''0width:MinimumMasses 5 0.995296 insert rho''0width:MinimumMasses 6 0.81957 insert rho''0width:MinimumMasses 7 0.81957 insert rho''0width:MinimumMasses 8 0.922997 insert rho''0width:MinimumMasses 9 0.944978 insert rho''0width:MinimumMasses 10 1.03957 insert rho''0width:MinimumMasses 11 1.03957 insert rho''0width:MinimumMasses 12 0.27914 insert rho''0width:MinimumMasses 13 0.751 insert rho''0width:MinimumMasses 14 0.6855 insert rho''0width:MEmass1 0 0.89166 insert rho''0width:MEmass1 1 0.89166 insert rho''0width:MEmass1 2 0.896 insert rho''0width:MEmass1 3 0.896 insert rho''0width:MEmass1 4 0.493677 insert rho''0width:MEmass1 5 0.497648 insert rho''0width:MEmass1 6 1.24 insert rho''0width:MEmass1 7 1.24 insert rho''0width:MEmass1 8 0.7755 insert rho''0width:MEmass1 9 1.17 insert rho''0width:MEmass1 10 1.3 insert rho''0width:MEmass1 11 1.3 insert rho''0width:MEmass1 12 0.13957 insert rho''0width:MEmass1 13 0.7755 insert rho''0width:MEmass1 14 0 insert rho''0width:MEmass2 0 0.493677 insert rho''0width:MEmass2 1 0.493677 insert rho''0width:MEmass2 2 0.497648 insert rho''0width:MEmass2 3 0.497648 insert rho''0width:MEmass2 4 0.493677 insert rho''0width:MEmass2 5 0.497648 insert rho''0width:MEmass2 6 0.13957 insert rho''0width:MEmass2 7 0.13957 insert rho''0width:MEmass2 8 0.54751 insert rho''0width:MEmass2 9 0.134978 insert rho''0width:MEmass2 10 0.13957 insert rho''0width:MEmass2 11 0.13957 insert rho''0width:MEmass2 12 0.13957 insert rho''0width:MEmass2 13 0.7755 insert rho''0width:MEmass2 14 0 insert rho''0width:DecayModes 0 rho''0->K*+,K-; insert rho''0width:DecayModes 1 rho''0->K*-,K+; insert rho''0width:DecayModes 2 rho''0->K*0,Kbar0; insert rho''0width:DecayModes 3 rho''0->K*bar0,K0; insert rho''0width:DecayModes 4 rho''0->K+,K-; insert rho''0width:DecayModes 5 rho''0->K0,Kbar0; insert rho''0width:DecayModes 6 rho''0->a_1+,pi-; insert rho''0width:DecayModes 7 rho''0->a_1-,pi+; insert rho''0width:DecayModes 8 rho''0->eta,rho0; insert rho''0width:DecayModes 9 rho''0->h_1,pi0; insert rho''0width:DecayModes 10 rho''0->pi'+,pi-; insert rho''0width:DecayModes 11 rho''0->pi'-,pi+; insert rho''0width:DecayModes 12 rho''0->pi+,pi-; insert rho''0width:DecayModes 13 rho''0->rho+,rho-; insert rho''0width:DecayModes 14 rho''0->sigma,rho0; insert rho''0width:InterpolationMasses 0 1.1791837 insert rho''0width:InterpolationMasses 1 1.1995918 insert rho''0width:InterpolationMasses 2 1.22 insert rho''0width:InterpolationMasses 3 1.2404082 insert rho''0width:InterpolationMasses 4 1.2608163 insert rho''0width:InterpolationMasses 5 1.2812245 insert rho''0width:InterpolationMasses 6 1.3016327 insert rho''0width:InterpolationMasses 7 1.3220408 insert rho''0width:InterpolationMasses 8 1.342449 insert rho''0width:InterpolationMasses 9 1.3628571 insert rho''0width:InterpolationMasses 10 1.3832653 insert rho''0width:InterpolationMasses 11 1.4036735 insert rho''0width:InterpolationMasses 12 1.4240816 insert rho''0width:InterpolationMasses 13 1.4444898 insert rho''0width:InterpolationMasses 14 1.464898 insert rho''0width:InterpolationMasses 15 1.4853061 insert rho''0width:InterpolationMasses 16 1.5057143 insert rho''0width:InterpolationMasses 17 1.5261224 insert rho''0width:InterpolationMasses 18 1.5465306 insert rho''0width:InterpolationMasses 19 1.5669388 insert rho''0width:InterpolationMasses 20 1.5873469 insert rho''0width:InterpolationMasses 21 1.6077551 insert rho''0width:InterpolationMasses 22 1.6281633 insert rho''0width:InterpolationMasses 23 1.6485714 insert rho''0width:InterpolationMasses 24 1.6689796 insert rho''0width:InterpolationMasses 25 1.6893878 insert rho''0width:InterpolationMasses 26 1.7097959 insert rho''0width:InterpolationMasses 27 1.7302041 insert rho''0width:InterpolationMasses 28 1.7506122 insert rho''0width:InterpolationMasses 29 1.7710204 insert rho''0width:InterpolationMasses 30 1.7914286 insert rho''0width:InterpolationMasses 31 1.8118367 insert rho''0width:InterpolationMasses 32 1.8322449 insert rho''0width:InterpolationMasses 33 1.8526531 insert rho''0width:InterpolationMasses 34 1.8730612 insert rho''0width:InterpolationMasses 35 1.8934694 insert rho''0width:InterpolationMasses 36 1.9138776 insert rho''0width:InterpolationMasses 37 1.9342857 insert rho''0width:InterpolationMasses 38 1.9546939 insert rho''0width:InterpolationMasses 39 1.975102 insert rho''0width:InterpolationMasses 40 1.9955102 insert rho''0width:InterpolationMasses 41 2.0159184 insert rho''0width:InterpolationMasses 42 2.0363265 insert rho''0width:InterpolationMasses 43 2.0567347 insert rho''0width:InterpolationMasses 44 2.0771429 insert rho''0width:InterpolationMasses 45 2.097551 insert rho''0width:InterpolationMasses 46 2.1179592 insert rho''0width:InterpolationMasses 47 2.1383673 insert rho''0width:InterpolationMasses 48 2.1587755 insert rho''0width:InterpolationMasses 49 2.1791837 insert rho''0width:InterpolationMasses 50 2.1995918 insert rho''0width:InterpolationMasses 51 2.22 insert rho''0width:InterpolationMasses 52 2.2404082 insert rho''0width:InterpolationMasses 53 2.2608163 insert rho''0width:InterpolationMasses 54 1.1791837 insert rho''0width:InterpolationMasses 55 1.1995918 insert rho''0width:InterpolationMasses 56 1.22 insert rho''0width:InterpolationMasses 57 1.2404082 insert rho''0width:InterpolationMasses 58 1.2608163 insert rho''0width:InterpolationMasses 59 1.2812245 insert rho''0width:InterpolationMasses 60 1.3016327 insert rho''0width:InterpolationMasses 61 1.3220408 insert rho''0width:InterpolationMasses 62 1.342449 insert rho''0width:InterpolationMasses 63 1.3628571 insert rho''0width:InterpolationMasses 64 1.3832653 insert rho''0width:InterpolationMasses 65 1.4036735 insert rho''0width:InterpolationMasses 66 1.4240816 insert rho''0width:InterpolationMasses 67 1.4444898 insert rho''0width:InterpolationMasses 68 1.464898 insert rho''0width:InterpolationMasses 69 1.4853061 insert rho''0width:InterpolationMasses 70 1.5057143 insert rho''0width:InterpolationMasses 71 1.5261224 insert rho''0width:InterpolationMasses 72 1.5465306 insert rho''0width:InterpolationMasses 73 1.5669388 insert rho''0width:InterpolationMasses 74 1.5873469 insert rho''0width:InterpolationMasses 75 1.6077551 insert rho''0width:InterpolationMasses 76 1.6281633 insert rho''0width:InterpolationMasses 77 1.6485714 insert rho''0width:InterpolationMasses 78 1.6689796 insert rho''0width:InterpolationMasses 79 1.6893878 insert rho''0width:InterpolationMasses 80 1.7097959 insert rho''0width:InterpolationMasses 81 1.7302041 insert rho''0width:InterpolationMasses 82 1.7506122 insert rho''0width:InterpolationMasses 83 1.7710204 insert rho''0width:InterpolationMasses 84 1.7914286 insert rho''0width:InterpolationMasses 85 1.8118367 insert rho''0width:InterpolationMasses 86 1.8322449 insert rho''0width:InterpolationMasses 87 1.8526531 insert rho''0width:InterpolationMasses 88 1.8730612 insert rho''0width:InterpolationMasses 89 1.8934694 insert rho''0width:InterpolationMasses 90 1.9138776 insert rho''0width:InterpolationMasses 91 1.9342857 insert rho''0width:InterpolationMasses 92 1.9546939 insert rho''0width:InterpolationMasses 93 1.975102 insert rho''0width:InterpolationMasses 94 1.9955102 insert rho''0width:InterpolationMasses 95 2.0159184 insert rho''0width:InterpolationMasses 96 2.0363265 insert rho''0width:InterpolationMasses 97 2.0567347 insert rho''0width:InterpolationMasses 98 2.0771429 insert rho''0width:InterpolationMasses 99 2.097551 insert rho''0width:InterpolationMasses 100 2.1179592 insert rho''0width:InterpolationMasses 101 2.1383673 insert rho''0width:InterpolationMasses 102 2.1587755 insert rho''0width:InterpolationMasses 103 2.1791837 insert rho''0width:InterpolationMasses 104 2.1995918 insert rho''0width:InterpolationMasses 105 2.22 insert rho''0width:InterpolationMasses 106 2.2404082 insert rho''0width:InterpolationMasses 107 2.2608163 insert rho''0width:InterpolationMasses 108 1.1791837 insert rho''0width:InterpolationMasses 109 1.1995918 insert rho''0width:InterpolationMasses 110 1.22 insert rho''0width:InterpolationMasses 111 1.2404082 insert rho''0width:InterpolationMasses 112 1.2608163 insert rho''0width:InterpolationMasses 113 1.2812245 insert rho''0width:InterpolationMasses 114 1.3016327 insert rho''0width:InterpolationMasses 115 1.3220408 insert rho''0width:InterpolationMasses 116 1.342449 insert rho''0width:InterpolationMasses 117 1.3628571 insert rho''0width:InterpolationMasses 118 1.3832653 insert rho''0width:InterpolationMasses 119 1.4036735 insert rho''0width:InterpolationMasses 120 1.4240816 insert rho''0width:InterpolationMasses 121 1.4444898 insert rho''0width:InterpolationMasses 122 1.464898 insert rho''0width:InterpolationMasses 123 1.4853061 insert rho''0width:InterpolationMasses 124 1.5057143 insert rho''0width:InterpolationMasses 125 1.5261224 insert rho''0width:InterpolationMasses 126 1.5465306 insert rho''0width:InterpolationMasses 127 1.5669388 insert rho''0width:InterpolationMasses 128 1.5873469 insert rho''0width:InterpolationMasses 129 1.6077551 insert rho''0width:InterpolationMasses 130 1.6281633 insert rho''0width:InterpolationMasses 131 1.6485714 insert rho''0width:InterpolationMasses 132 1.6689796 insert rho''0width:InterpolationMasses 133 1.6893878 insert rho''0width:InterpolationMasses 134 1.7097959 insert rho''0width:InterpolationMasses 135 1.7302041 insert rho''0width:InterpolationMasses 136 1.7506122 insert rho''0width:InterpolationMasses 137 1.7710204 insert rho''0width:InterpolationMasses 138 1.7914286 insert rho''0width:InterpolationMasses 139 1.8118367 insert rho''0width:InterpolationMasses 140 1.8322449 insert rho''0width:InterpolationMasses 141 1.8526531 insert rho''0width:InterpolationMasses 142 1.8730612 insert rho''0width:InterpolationMasses 143 1.8934694 insert rho''0width:InterpolationMasses 144 1.9138776 insert rho''0width:InterpolationMasses 145 1.9342857 insert rho''0width:InterpolationMasses 146 1.9546939 insert rho''0width:InterpolationMasses 147 1.975102 insert rho''0width:InterpolationMasses 148 1.9955102 insert rho''0width:InterpolationMasses 149 2.0159184 insert rho''0width:InterpolationMasses 150 2.0363265 insert rho''0width:InterpolationMasses 151 2.0567347 insert rho''0width:InterpolationMasses 152 2.0771429 insert rho''0width:InterpolationMasses 153 2.097551 insert rho''0width:InterpolationMasses 154 2.1179592 insert rho''0width:InterpolationMasses 155 2.1383673 insert rho''0width:InterpolationMasses 156 2.1587755 insert rho''0width:InterpolationMasses 157 2.1791837 insert rho''0width:InterpolationMasses 158 2.1995918 insert rho''0width:InterpolationMasses 159 2.22 insert rho''0width:InterpolationMasses 160 2.2404082 insert rho''0width:InterpolationMasses 161 2.2608163 insert rho''0width:InterpolationMasses 162 1.1791837 insert rho''0width:InterpolationMasses 163 1.1995918 insert rho''0width:InterpolationMasses 164 1.22 insert rho''0width:InterpolationMasses 165 1.2404082 insert rho''0width:InterpolationMasses 166 1.2608163 insert rho''0width:InterpolationMasses 167 1.2812245 insert rho''0width:InterpolationMasses 168 1.3016327 insert rho''0width:InterpolationMasses 169 1.3220408 insert rho''0width:InterpolationMasses 170 1.342449 insert rho''0width:InterpolationMasses 171 1.3628571 insert rho''0width:InterpolationMasses 172 1.3832653 insert rho''0width:InterpolationMasses 173 1.4036735 insert rho''0width:InterpolationMasses 174 1.4240816 insert rho''0width:InterpolationMasses 175 1.4444898 insert rho''0width:InterpolationMasses 176 1.464898 insert rho''0width:InterpolationMasses 177 1.4853061 insert rho''0width:InterpolationMasses 178 1.5057143 insert rho''0width:InterpolationMasses 179 1.5261224 insert rho''0width:InterpolationMasses 180 1.5465306 insert rho''0width:InterpolationMasses 181 1.5669388 insert rho''0width:InterpolationMasses 182 1.5873469 insert rho''0width:InterpolationMasses 183 1.6077551 insert rho''0width:InterpolationMasses 184 1.6281633 insert rho''0width:InterpolationMasses 185 1.6485714 insert rho''0width:InterpolationMasses 186 1.6689796 insert rho''0width:InterpolationMasses 187 1.6893878 insert rho''0width:InterpolationMasses 188 1.7097959 insert rho''0width:InterpolationMasses 189 1.7302041 insert rho''0width:InterpolationMasses 190 1.7506122 insert rho''0width:InterpolationMasses 191 1.7710204 insert rho''0width:InterpolationMasses 192 1.7914286 insert rho''0width:InterpolationMasses 193 1.8118367 insert rho''0width:InterpolationMasses 194 1.8322449 insert rho''0width:InterpolationMasses 195 1.8526531 insert rho''0width:InterpolationMasses 196 1.8730612 insert rho''0width:InterpolationMasses 197 1.8934694 insert rho''0width:InterpolationMasses 198 1.9138776 insert rho''0width:InterpolationMasses 199 1.9342857 insert rho''0width:InterpolationMasses 200 1.9546939 insert rho''0width:InterpolationMasses 201 1.975102 insert rho''0width:InterpolationMasses 202 1.9955102 insert rho''0width:InterpolationMasses 203 2.0159184 insert rho''0width:InterpolationMasses 204 2.0363265 insert rho''0width:InterpolationMasses 205 2.0567347 insert rho''0width:InterpolationMasses 206 2.0771429 insert rho''0width:InterpolationMasses 207 2.097551 insert rho''0width:InterpolationMasses 208 2.1179592 insert rho''0width:InterpolationMasses 209 2.1383673 insert rho''0width:InterpolationMasses 210 2.1587755 insert rho''0width:InterpolationMasses 211 2.1791837 insert rho''0width:InterpolationMasses 212 2.1995918 insert rho''0width:InterpolationMasses 213 2.22 insert rho''0width:InterpolationMasses 214 2.2404082 insert rho''0width:InterpolationMasses 215 2.2608163 insert rho''0width:InterpolationMasses 216 1.1791837 insert rho''0width:InterpolationMasses 217 1.1995918 insert rho''0width:InterpolationMasses 218 1.22 insert rho''0width:InterpolationMasses 219 1.2404082 insert rho''0width:InterpolationMasses 220 1.2608163 insert rho''0width:InterpolationMasses 221 1.2812245 insert rho''0width:InterpolationMasses 222 1.3016327 insert rho''0width:InterpolationMasses 223 1.3220408 insert rho''0width:InterpolationMasses 224 1.342449 insert rho''0width:InterpolationMasses 225 1.3628571 insert rho''0width:InterpolationMasses 226 1.3832653 insert rho''0width:InterpolationMasses 227 1.4036735 insert rho''0width:InterpolationMasses 228 1.4240816 insert rho''0width:InterpolationMasses 229 1.4444898 insert rho''0width:InterpolationMasses 230 1.464898 insert rho''0width:InterpolationMasses 231 1.4853061 insert rho''0width:InterpolationMasses 232 1.5057143 insert rho''0width:InterpolationMasses 233 1.5261224 insert rho''0width:InterpolationMasses 234 1.5465306 insert rho''0width:InterpolationMasses 235 1.5669388 insert rho''0width:InterpolationMasses 236 1.5873469 insert rho''0width:InterpolationMasses 237 1.6077551 insert rho''0width:InterpolationMasses 238 1.6281633 insert rho''0width:InterpolationMasses 239 1.6485714 insert rho''0width:InterpolationMasses 240 1.6689796 insert rho''0width:InterpolationMasses 241 1.6893878 insert rho''0width:InterpolationMasses 242 1.7097959 insert rho''0width:InterpolationMasses 243 1.7302041 insert rho''0width:InterpolationMasses 244 1.7506122 insert rho''0width:InterpolationMasses 245 1.7710204 insert rho''0width:InterpolationMasses 246 1.7914286 insert rho''0width:InterpolationMasses 247 1.8118367 insert rho''0width:InterpolationMasses 248 1.8322449 insert rho''0width:InterpolationMasses 249 1.8526531 insert rho''0width:InterpolationMasses 250 1.8730612 insert rho''0width:InterpolationMasses 251 1.8934694 insert rho''0width:InterpolationMasses 252 1.9138776 insert rho''0width:InterpolationMasses 253 1.9342857 insert rho''0width:InterpolationMasses 254 1.9546939 insert rho''0width:InterpolationMasses 255 1.975102 insert rho''0width:InterpolationMasses 256 1.9955102 insert rho''0width:InterpolationMasses 257 2.0159184 insert rho''0width:InterpolationMasses 258 2.0363265 insert rho''0width:InterpolationMasses 259 2.0567347 insert rho''0width:InterpolationMasses 260 2.0771429 insert rho''0width:InterpolationMasses 261 2.097551 insert rho''0width:InterpolationMasses 262 2.1179592 insert rho''0width:InterpolationMasses 263 2.1383673 insert rho''0width:InterpolationMasses 264 2.1587755 insert rho''0width:InterpolationMasses 265 2.1791837 insert rho''0width:InterpolationMasses 266 2.1995918 insert rho''0width:InterpolationMasses 267 2.22 insert rho''0width:InterpolationMasses 268 2.2404082 insert rho''0width:InterpolationMasses 269 2.2608163 insert rho''0width:InterpolationMasses 270 1.1791837 insert rho''0width:InterpolationMasses 271 1.1995918 insert rho''0width:InterpolationMasses 272 1.22 insert rho''0width:InterpolationMasses 273 1.2404082 insert rho''0width:InterpolationMasses 274 1.2608163 insert rho''0width:InterpolationMasses 275 1.2812245 insert rho''0width:InterpolationMasses 276 1.3016327 insert rho''0width:InterpolationMasses 277 1.3220408 insert rho''0width:InterpolationMasses 278 1.342449 insert rho''0width:InterpolationMasses 279 1.3628571 insert rho''0width:InterpolationMasses 280 1.3832653 insert rho''0width:InterpolationMasses 281 1.4036735 insert rho''0width:InterpolationMasses 282 1.4240816 insert rho''0width:InterpolationMasses 283 1.4444898 insert rho''0width:InterpolationMasses 284 1.464898 insert rho''0width:InterpolationMasses 285 1.4853061 insert rho''0width:InterpolationMasses 286 1.5057143 insert rho''0width:InterpolationMasses 287 1.5261224 insert rho''0width:InterpolationMasses 288 1.5465306 insert rho''0width:InterpolationMasses 289 1.5669388 insert rho''0width:InterpolationMasses 290 1.5873469 insert rho''0width:InterpolationMasses 291 1.6077551 insert rho''0width:InterpolationMasses 292 1.6281633 insert rho''0width:InterpolationMasses 293 1.6485714 insert rho''0width:InterpolationMasses 294 1.6689796 insert rho''0width:InterpolationMasses 295 1.6893878 insert rho''0width:InterpolationMasses 296 1.7097959 insert rho''0width:InterpolationMasses 297 1.7302041 insert rho''0width:InterpolationMasses 298 1.7506122 insert rho''0width:InterpolationMasses 299 1.7710204 insert rho''0width:InterpolationMasses 300 1.7914286 insert rho''0width:InterpolationMasses 301 1.8118367 insert rho''0width:InterpolationMasses 302 1.8322449 insert rho''0width:InterpolationMasses 303 1.8526531 insert rho''0width:InterpolationMasses 304 1.8730612 insert rho''0width:InterpolationMasses 305 1.8934694 insert rho''0width:InterpolationMasses 306 1.9138776 insert rho''0width:InterpolationMasses 307 1.9342857 insert rho''0width:InterpolationMasses 308 1.9546939 insert rho''0width:InterpolationMasses 309 1.975102 insert rho''0width:InterpolationMasses 310 1.9955102 insert rho''0width:InterpolationMasses 311 2.0159184 insert rho''0width:InterpolationMasses 312 2.0363265 insert rho''0width:InterpolationMasses 313 2.0567347 insert rho''0width:InterpolationMasses 314 2.0771429 insert rho''0width:InterpolationMasses 315 2.097551 insert rho''0width:InterpolationMasses 316 2.1179592 insert rho''0width:InterpolationMasses 317 2.1383673 insert rho''0width:InterpolationMasses 318 2.1587755 insert rho''0width:InterpolationMasses 319 2.1791837 insert rho''0width:InterpolationMasses 320 2.1995918 insert rho''0width:InterpolationMasses 321 2.22 insert rho''0width:InterpolationMasses 322 2.2404082 insert rho''0width:InterpolationMasses 323 2.2608163 insert rho''0width:InterpolationMasses 324 1.1791837 insert rho''0width:InterpolationMasses 325 1.1995918 insert rho''0width:InterpolationMasses 326 1.22 insert rho''0width:InterpolationMasses 327 1.2404082 insert rho''0width:InterpolationMasses 328 1.2608163 insert rho''0width:InterpolationMasses 329 1.2812245 insert rho''0width:InterpolationMasses 330 1.3016327 insert rho''0width:InterpolationMasses 331 1.3220408 insert rho''0width:InterpolationMasses 332 1.342449 insert rho''0width:InterpolationMasses 333 1.3628571 insert rho''0width:InterpolationMasses 334 1.3832653 insert rho''0width:InterpolationMasses 335 1.4036735 insert rho''0width:InterpolationMasses 336 1.4240816 insert rho''0width:InterpolationMasses 337 1.4444898 insert rho''0width:InterpolationMasses 338 1.464898 insert rho''0width:InterpolationMasses 339 1.4853061 insert rho''0width:InterpolationMasses 340 1.5057143 insert rho''0width:InterpolationMasses 341 1.5261224 insert rho''0width:InterpolationMasses 342 1.5465306 insert rho''0width:InterpolationMasses 343 1.5669388 insert rho''0width:InterpolationMasses 344 1.5873469 insert rho''0width:InterpolationMasses 345 1.6077551 insert rho''0width:InterpolationMasses 346 1.6281633 insert rho''0width:InterpolationMasses 347 1.6485714 insert rho''0width:InterpolationMasses 348 1.6689796 insert rho''0width:InterpolationMasses 349 1.6893878 insert rho''0width:InterpolationMasses 350 1.7097959 insert rho''0width:InterpolationMasses 351 1.7302041 insert rho''0width:InterpolationMasses 352 1.7506122 insert rho''0width:InterpolationMasses 353 1.7710204 insert rho''0width:InterpolationMasses 354 1.7914286 insert rho''0width:InterpolationMasses 355 1.8118367 insert rho''0width:InterpolationMasses 356 1.8322449 insert rho''0width:InterpolationMasses 357 1.8526531 insert rho''0width:InterpolationMasses 358 1.8730612 insert rho''0width:InterpolationMasses 359 1.8934694 insert rho''0width:InterpolationMasses 360 1.9138776 insert rho''0width:InterpolationMasses 361 1.9342857 insert rho''0width:InterpolationMasses 362 1.9546939 insert rho''0width:InterpolationMasses 363 1.975102 insert rho''0width:InterpolationMasses 364 1.9955102 insert rho''0width:InterpolationMasses 365 2.0159184 insert rho''0width:InterpolationMasses 366 2.0363265 insert rho''0width:InterpolationMasses 367 2.0567347 insert rho''0width:InterpolationMasses 368 2.0771429 insert rho''0width:InterpolationMasses 369 2.097551 insert rho''0width:InterpolationMasses 370 2.1179592 insert rho''0width:InterpolationMasses 371 2.1383673 insert rho''0width:InterpolationMasses 372 2.1587755 insert rho''0width:InterpolationMasses 373 2.1791837 insert rho''0width:InterpolationMasses 374 2.1995918 insert rho''0width:InterpolationMasses 375 2.22 insert rho''0width:InterpolationMasses 376 2.2404082 insert rho''0width:InterpolationMasses 377 2.2608163 insert rho''0width:InterpolationMasses 378 1.1791837 insert rho''0width:InterpolationMasses 379 1.1995918 insert rho''0width:InterpolationMasses 380 1.22 insert rho''0width:InterpolationMasses 381 1.2404082 insert rho''0width:InterpolationMasses 382 1.2608163 insert rho''0width:InterpolationMasses 383 1.2812245 insert rho''0width:InterpolationMasses 384 1.3016327 insert rho''0width:InterpolationMasses 385 1.3220408 insert rho''0width:InterpolationMasses 386 1.342449 insert rho''0width:InterpolationMasses 387 1.3628571 insert rho''0width:InterpolationMasses 388 1.3832653 insert rho''0width:InterpolationMasses 389 1.4036735 insert rho''0width:InterpolationMasses 390 1.4240816 insert rho''0width:InterpolationMasses 391 1.4444898 insert rho''0width:InterpolationMasses 392 1.464898 insert rho''0width:InterpolationMasses 393 1.4853061 insert rho''0width:InterpolationMasses 394 1.5057143 insert rho''0width:InterpolationMasses 395 1.5261224 insert rho''0width:InterpolationMasses 396 1.5465306 insert rho''0width:InterpolationMasses 397 1.5669388 insert rho''0width:InterpolationMasses 398 1.5873469 insert rho''0width:InterpolationMasses 399 1.6077551 insert rho''0width:InterpolationMasses 400 1.6281633 insert rho''0width:InterpolationMasses 401 1.6485714 insert rho''0width:InterpolationMasses 402 1.6689796 insert rho''0width:InterpolationMasses 403 1.6893878 insert rho''0width:InterpolationMasses 404 1.7097959 insert rho''0width:InterpolationMasses 405 1.7302041 insert rho''0width:InterpolationMasses 406 1.7506122 insert rho''0width:InterpolationMasses 407 1.7710204 insert rho''0width:InterpolationMasses 408 1.7914286 insert rho''0width:InterpolationMasses 409 1.8118367 insert rho''0width:InterpolationMasses 410 1.8322449 insert rho''0width:InterpolationMasses 411 1.8526531 insert rho''0width:InterpolationMasses 412 1.8730612 insert rho''0width:InterpolationMasses 413 1.8934694 insert rho''0width:InterpolationMasses 414 1.9138776 insert rho''0width:InterpolationMasses 415 1.9342857 insert rho''0width:InterpolationMasses 416 1.9546939 insert rho''0width:InterpolationMasses 417 1.975102 insert rho''0width:InterpolationMasses 418 1.9955102 insert rho''0width:InterpolationMasses 419 2.0159184 insert rho''0width:InterpolationMasses 420 2.0363265 insert rho''0width:InterpolationMasses 421 2.0567347 insert rho''0width:InterpolationMasses 422 2.0771429 insert rho''0width:InterpolationMasses 423 2.097551 insert rho''0width:InterpolationMasses 424 2.1179592 insert rho''0width:InterpolationMasses 425 2.1383673 insert rho''0width:InterpolationMasses 426 2.1587755 insert rho''0width:InterpolationMasses 427 2.1791837 insert rho''0width:InterpolationMasses 428 2.1995918 insert rho''0width:InterpolationMasses 429 2.22 insert rho''0width:InterpolationMasses 430 2.2404082 insert rho''0width:InterpolationMasses 431 2.2608163 insert rho''0width:InterpolationMasses 432 1.1791837 insert rho''0width:InterpolationMasses 433 1.1995918 insert rho''0width:InterpolationMasses 434 1.22 insert rho''0width:InterpolationMasses 435 1.2404082 insert rho''0width:InterpolationMasses 436 1.2608163 insert rho''0width:InterpolationMasses 437 1.2812245 insert rho''0width:InterpolationMasses 438 1.3016327 insert rho''0width:InterpolationMasses 439 1.3220408 insert rho''0width:InterpolationMasses 440 1.342449 insert rho''0width:InterpolationMasses 441 1.3628571 insert rho''0width:InterpolationMasses 442 1.3832653 insert rho''0width:InterpolationMasses 443 1.4036735 insert rho''0width:InterpolationMasses 444 1.4240816 insert rho''0width:InterpolationMasses 445 1.4444898 insert rho''0width:InterpolationMasses 446 1.464898 insert rho''0width:InterpolationMasses 447 1.4853061 insert rho''0width:InterpolationMasses 448 1.5057143 insert rho''0width:InterpolationMasses 449 1.5261224 insert rho''0width:InterpolationMasses 450 1.5465306 insert rho''0width:InterpolationMasses 451 1.5669388 insert rho''0width:InterpolationMasses 452 1.5873469 insert rho''0width:InterpolationMasses 453 1.6077551 insert rho''0width:InterpolationMasses 454 1.6281633 insert rho''0width:InterpolationMasses 455 1.6485714 insert rho''0width:InterpolationMasses 456 1.6689796 insert rho''0width:InterpolationMasses 457 1.6893878 insert rho''0width:InterpolationMasses 458 1.7097959 insert rho''0width:InterpolationMasses 459 1.7302041 insert rho''0width:InterpolationMasses 460 1.7506122 insert rho''0width:InterpolationMasses 461 1.7710204 insert rho''0width:InterpolationMasses 462 1.7914286 insert rho''0width:InterpolationMasses 463 1.8118367 insert rho''0width:InterpolationMasses 464 1.8322449 insert rho''0width:InterpolationMasses 465 1.8526531 insert rho''0width:InterpolationMasses 466 1.8730612 insert rho''0width:InterpolationMasses 467 1.8934694 insert rho''0width:InterpolationMasses 468 1.9138776 insert rho''0width:InterpolationMasses 469 1.9342857 insert rho''0width:InterpolationMasses 470 1.9546939 insert rho''0width:InterpolationMasses 471 1.975102 insert rho''0width:InterpolationMasses 472 1.9955102 insert rho''0width:InterpolationMasses 473 2.0159184 insert rho''0width:InterpolationMasses 474 2.0363265 insert rho''0width:InterpolationMasses 475 2.0567347 insert rho''0width:InterpolationMasses 476 2.0771429 insert rho''0width:InterpolationMasses 477 2.097551 insert rho''0width:InterpolationMasses 478 2.1179592 insert rho''0width:InterpolationMasses 479 2.1383673 insert rho''0width:InterpolationMasses 480 2.1587755 insert rho''0width:InterpolationMasses 481 2.1791837 insert rho''0width:InterpolationMasses 482 2.1995918 insert rho''0width:InterpolationMasses 483 2.22 insert rho''0width:InterpolationMasses 484 2.2404082 insert rho''0width:InterpolationMasses 485 2.2608163 insert rho''0width:InterpolationMasses 486 1.1791837 insert rho''0width:InterpolationMasses 487 1.1995918 insert rho''0width:InterpolationMasses 488 1.22 insert rho''0width:InterpolationMasses 489 1.2404082 insert rho''0width:InterpolationMasses 490 1.2608163 insert rho''0width:InterpolationMasses 491 1.2812245 insert rho''0width:InterpolationMasses 492 1.3016327 insert rho''0width:InterpolationMasses 493 1.3220408 insert rho''0width:InterpolationMasses 494 1.342449 insert rho''0width:InterpolationMasses 495 1.3628571 insert rho''0width:InterpolationMasses 496 1.3832653 insert rho''0width:InterpolationMasses 497 1.4036735 insert rho''0width:InterpolationMasses 498 1.4240816 insert rho''0width:InterpolationMasses 499 1.4444898 insert rho''0width:InterpolationMasses 500 1.464898 insert rho''0width:InterpolationMasses 501 1.4853061 insert rho''0width:InterpolationMasses 502 1.5057143 insert rho''0width:InterpolationMasses 503 1.5261224 insert rho''0width:InterpolationMasses 504 1.5465306 insert rho''0width:InterpolationMasses 505 1.5669388 insert rho''0width:InterpolationMasses 506 1.5873469 insert rho''0width:InterpolationMasses 507 1.6077551 insert rho''0width:InterpolationMasses 508 1.6281633 insert rho''0width:InterpolationMasses 509 1.6485714 insert rho''0width:InterpolationMasses 510 1.6689796 insert rho''0width:InterpolationMasses 511 1.6893878 insert rho''0width:InterpolationMasses 512 1.7097959 insert rho''0width:InterpolationMasses 513 1.7302041 insert rho''0width:InterpolationMasses 514 1.7506122 insert rho''0width:InterpolationMasses 515 1.7710204 insert rho''0width:InterpolationMasses 516 1.7914286 insert rho''0width:InterpolationMasses 517 1.8118367 insert rho''0width:InterpolationMasses 518 1.8322449 insert rho''0width:InterpolationMasses 519 1.8526531 insert rho''0width:InterpolationMasses 520 1.8730612 insert rho''0width:InterpolationMasses 521 1.8934694 insert rho''0width:InterpolationMasses 522 1.9138776 insert rho''0width:InterpolationMasses 523 1.9342857 insert rho''0width:InterpolationMasses 524 1.9546939 insert rho''0width:InterpolationMasses 525 1.975102 insert rho''0width:InterpolationMasses 526 1.9955102 insert rho''0width:InterpolationMasses 527 2.0159184 insert rho''0width:InterpolationMasses 528 2.0363265 insert rho''0width:InterpolationMasses 529 2.0567347 insert rho''0width:InterpolationMasses 530 2.0771429 insert rho''0width:InterpolationMasses 531 2.097551 insert rho''0width:InterpolationMasses 532 2.1179592 insert rho''0width:InterpolationMasses 533 2.1383673 insert rho''0width:InterpolationMasses 534 2.1587755 insert rho''0width:InterpolationMasses 535 2.1791837 insert rho''0width:InterpolationMasses 536 2.1995918 insert rho''0width:InterpolationMasses 537 2.22 insert rho''0width:InterpolationMasses 538 2.2404082 insert rho''0width:InterpolationMasses 539 2.2608163 insert rho''0width:InterpolationMasses 540 1.1791837 insert rho''0width:InterpolationMasses 541 1.1995918 insert rho''0width:InterpolationMasses 542 1.22 insert rho''0width:InterpolationMasses 543 1.2404082 insert rho''0width:InterpolationMasses 544 1.2608163 insert rho''0width:InterpolationMasses 545 1.2812245 insert rho''0width:InterpolationMasses 546 1.3016327 insert rho''0width:InterpolationMasses 547 1.3220408 insert rho''0width:InterpolationMasses 548 1.342449 insert rho''0width:InterpolationMasses 549 1.3628571 insert rho''0width:InterpolationMasses 550 1.3832653 insert rho''0width:InterpolationMasses 551 1.4036735 insert rho''0width:InterpolationMasses 552 1.4240816 insert rho''0width:InterpolationMasses 553 1.4444898 insert rho''0width:InterpolationMasses 554 1.464898 insert rho''0width:InterpolationMasses 555 1.4853061 insert rho''0width:InterpolationMasses 556 1.5057143 insert rho''0width:InterpolationMasses 557 1.5261224 insert rho''0width:InterpolationMasses 558 1.5465306 insert rho''0width:InterpolationMasses 559 1.5669388 insert rho''0width:InterpolationMasses 560 1.5873469 insert rho''0width:InterpolationMasses 561 1.6077551 insert rho''0width:InterpolationMasses 562 1.6281633 insert rho''0width:InterpolationMasses 563 1.6485714 insert rho''0width:InterpolationMasses 564 1.6689796 insert rho''0width:InterpolationMasses 565 1.6893878 insert rho''0width:InterpolationMasses 566 1.7097959 insert rho''0width:InterpolationMasses 567 1.7302041 insert rho''0width:InterpolationMasses 568 1.7506122 insert rho''0width:InterpolationMasses 569 1.7710204 insert rho''0width:InterpolationMasses 570 1.7914286 insert rho''0width:InterpolationMasses 571 1.8118367 insert rho''0width:InterpolationMasses 572 1.8322449 insert rho''0width:InterpolationMasses 573 1.8526531 insert rho''0width:InterpolationMasses 574 1.8730612 insert rho''0width:InterpolationMasses 575 1.8934694 insert rho''0width:InterpolationMasses 576 1.9138776 insert rho''0width:InterpolationMasses 577 1.9342857 insert rho''0width:InterpolationMasses 578 1.9546939 insert rho''0width:InterpolationMasses 579 1.975102 insert rho''0width:InterpolationMasses 580 1.9955102 insert rho''0width:InterpolationMasses 581 2.0159184 insert rho''0width:InterpolationMasses 582 2.0363265 insert rho''0width:InterpolationMasses 583 2.0567347 insert rho''0width:InterpolationMasses 584 2.0771429 insert rho''0width:InterpolationMasses 585 2.097551 insert rho''0width:InterpolationMasses 586 2.1179592 insert rho''0width:InterpolationMasses 587 2.1383673 insert rho''0width:InterpolationMasses 588 2.1587755 insert rho''0width:InterpolationMasses 589 2.1791837 insert rho''0width:InterpolationMasses 590 2.1995918 insert rho''0width:InterpolationMasses 591 2.22 insert rho''0width:InterpolationMasses 592 2.2404082 insert rho''0width:InterpolationMasses 593 2.2608163 insert rho''0width:InterpolationWidths 0 4.1799288e-09 insert rho''0width:InterpolationWidths 1 1.8530967e-08 insert rho''0width:InterpolationWidths 2 5.8396851e-08 insert rho''0width:InterpolationWidths 3 1.5134012e-07 insert rho''0width:InterpolationWidths 4 3.465779e-07 insert rho''0width:InterpolationWidths 5 7.3173224e-07 insert rho''0width:InterpolationWidths 6 1.4665057e-06 insert rho''0width:InterpolationWidths 7 2.8574999e-06 insert rho''0width:InterpolationWidths 8 5.5478069e-06 insert rho''0width:InterpolationWidths 9 1.1074752e-05 insert rho''0width:InterpolationWidths 10 2.3422015e-05 insert rho''0width:InterpolationWidths 11 4.931249e-05 insert rho''0width:InterpolationWidths 12 9.1936596e-05 insert rho''0width:InterpolationWidths 13 0.00015066068 insert rho''0width:InterpolationWidths 14 0.00022441776 insert rho''0width:InterpolationWidths 15 0.00031241525 insert rho''0width:InterpolationWidths 16 0.00041410903 insert rho''0width:InterpolationWidths 17 0.00052912887 insert rho''0width:InterpolationWidths 18 0.00065722476 insert rho''0width:InterpolationWidths 19 0.00079823177 insert rho''0width:InterpolationWidths 20 0.000952047 insert rho''0width:InterpolationWidths 21 0.0011186139 insert rho''0width:InterpolationWidths 22 0.0012979113 insert rho''0width:InterpolationWidths 23 0.0014899459 insert rho''0width:InterpolationWidths 24 0.0016947463 insert rho''0width:InterpolationWidths 25 0.001912359 insert rho''0width:InterpolationWidths 26 0.002142845 insert rho''0width:InterpolationWidths 27 0.0023862774 insert rho''0width:InterpolationWidths 28 0.0026427395 insert rho''0width:InterpolationWidths 29 0.002912323 insert rho''0width:InterpolationWidths 30 0.0031951269 insert rho''0width:InterpolationWidths 31 0.0034911541 insert rho''0width:InterpolationWidths 32 0.0038006956 insert rho''0width:InterpolationWidths 33 0.0041239414 insert rho''0width:InterpolationWidths 34 0.0044607319 insert rho''0width:InterpolationWidths 35 0.0048113177 insert rho''0width:InterpolationWidths 36 0.0051757762 insert rho''0width:InterpolationWidths 37 0.0055540887 insert rho''0width:InterpolationWidths 38 0.0059463022 insert rho''0width:InterpolationWidths 39 0.0063524845 insert rho''0width:InterpolationWidths 40 0.0067727146 insert rho''0width:InterpolationWidths 41 0.007207079 insert rho''0width:InterpolationWidths 42 0.0076556697 insert rho''0width:InterpolationWidths 43 0.008118583 insert rho''0width:InterpolationWidths 44 0.0085959187 insert rho''0width:InterpolationWidths 45 0.0090877797 insert rho''0width:InterpolationWidths 46 0.009594271 insert rho''0width:InterpolationWidths 47 0.0101155 insert rho''0width:InterpolationWidths 48 0.010651577 insert rho''0width:InterpolationWidths 49 0.011202611 insert rho''0width:InterpolationWidths 50 0.011768717 insert rho''0width:InterpolationWidths 51 0.012350006 insert rho''0width:InterpolationWidths 52 0.012946596 insert rho''0width:InterpolationWidths 53 0.013558601 insert rho''0width:InterpolationWidths 54 4.1799288e-09 insert rho''0width:InterpolationWidths 55 1.8530967e-08 insert rho''0width:InterpolationWidths 56 5.8396851e-08 insert rho''0width:InterpolationWidths 57 1.5134012e-07 insert rho''0width:InterpolationWidths 58 3.465779e-07 insert rho''0width:InterpolationWidths 59 7.3173224e-07 insert rho''0width:InterpolationWidths 60 1.4665057e-06 insert rho''0width:InterpolationWidths 61 2.8574999e-06 insert rho''0width:InterpolationWidths 62 5.5478069e-06 insert rho''0width:InterpolationWidths 63 1.1074752e-05 insert rho''0width:InterpolationWidths 64 2.3422015e-05 insert rho''0width:InterpolationWidths 65 4.931249e-05 insert rho''0width:InterpolationWidths 66 9.1936596e-05 insert rho''0width:InterpolationWidths 67 0.00015066068 insert rho''0width:InterpolationWidths 68 0.00022441776 insert rho''0width:InterpolationWidths 69 0.00031241525 insert rho''0width:InterpolationWidths 70 0.00041410903 insert rho''0width:InterpolationWidths 71 0.00052912887 insert rho''0width:InterpolationWidths 72 0.00065722476 insert rho''0width:InterpolationWidths 73 0.00079823177 insert rho''0width:InterpolationWidths 74 0.000952047 insert rho''0width:InterpolationWidths 75 0.0011186139 insert rho''0width:InterpolationWidths 76 0.0012979113 insert rho''0width:InterpolationWidths 77 0.0014899459 insert rho''0width:InterpolationWidths 78 0.0016947463 insert rho''0width:InterpolationWidths 79 0.001912359 insert rho''0width:InterpolationWidths 80 0.002142845 insert rho''0width:InterpolationWidths 81 0.0023862774 insert rho''0width:InterpolationWidths 82 0.0026427395 insert rho''0width:InterpolationWidths 83 0.002912323 insert rho''0width:InterpolationWidths 84 0.0031951269 insert rho''0width:InterpolationWidths 85 0.0034911541 insert rho''0width:InterpolationWidths 86 0.0038006956 insert rho''0width:InterpolationWidths 87 0.0041239414 insert rho''0width:InterpolationWidths 88 0.0044607319 insert rho''0width:InterpolationWidths 89 0.0048113177 insert rho''0width:InterpolationWidths 90 0.0051757762 insert rho''0width:InterpolationWidths 91 0.0055540887 insert rho''0width:InterpolationWidths 92 0.0059463022 insert rho''0width:InterpolationWidths 93 0.0063524845 insert rho''0width:InterpolationWidths 94 0.0067727146 insert rho''0width:InterpolationWidths 95 0.007207079 insert rho''0width:InterpolationWidths 96 0.0076556697 insert rho''0width:InterpolationWidths 97 0.008118583 insert rho''0width:InterpolationWidths 98 0.0085959187 insert rho''0width:InterpolationWidths 99 0.0090877797 insert rho''0width:InterpolationWidths 100 0.009594271 insert rho''0width:InterpolationWidths 101 0.0101155 insert rho''0width:InterpolationWidths 102 0.010651577 insert rho''0width:InterpolationWidths 103 0.011202611 insert rho''0width:InterpolationWidths 104 0.011768717 insert rho''0width:InterpolationWidths 105 0.012350006 insert rho''0width:InterpolationWidths 106 0.012946596 insert rho''0width:InterpolationWidths 107 0.013558601 insert rho''0width:InterpolationWidths 108 2.8067855e-09 insert rho''0width:InterpolationWidths 109 1.4109143e-08 insert rho''0width:InterpolationWidths 110 4.6880029e-08 insert rho''0width:InterpolationWidths 111 1.2476698e-07 insert rho''0width:InterpolationWidths 112 2.8968404e-07 insert rho''0width:InterpolationWidths 113 6.1523346e-07 insert rho''0width:InterpolationWidths 114 1.2327513e-06 insert rho''0width:InterpolationWidths 115 2.3865849e-06 insert rho''0width:InterpolationWidths 116 4.5661853e-06 insert rho''0width:InterpolationWidths 117 8.8727704e-06 insert rho''0width:InterpolationWidths 118 1.8141232e-05 insert rho''0width:InterpolationWidths 119 3.8703361e-05 insert rho''0width:InterpolationWidths 120 7.6186515e-05 insert rho''0width:InterpolationWidths 121 0.00013096208 insert rho''0width:InterpolationWidths 122 0.00020186225 insert rho''0width:InterpolationWidths 123 0.00028791293 insert rho''0width:InterpolationWidths 124 0.00038843687 insert rho''0width:InterpolationWidths 125 0.00050297188 insert rho''0width:InterpolationWidths 126 0.00063120341 insert rho''0width:InterpolationWidths 127 0.00077292006 insert rho''0width:InterpolationWidths 128 0.00092798461 insert rho''0width:InterpolationWidths 129 0.0010963147 insert rho''0width:InterpolationWidths 130 0.0012778695 insert rho''0width:InterpolationWidths 131 0.0014726404 insert rho''0width:InterpolationWidths 132 0.0016806442 insert rho''0width:InterpolationWidths 133 0.0019019183 insert rho''0width:InterpolationWidths 134 0.0021365163 insert rho''0width:InterpolationWidths 135 0.0023845059 insert rho''0width:InterpolationWidths 136 0.002645966 insert rho''0width:InterpolationWidths 137 0.0029209852 insert rho''0width:InterpolationWidths 138 0.0032096603 insert rho''0width:InterpolationWidths 139 0.0035119995 insert rho''0width:InterpolationWidths 140 0.0038282799 insert rho''0width:InterpolationWidths 141 0.0041586881 insert rho''0width:InterpolationWidths 142 0.0045030814 insert rho''0width:InterpolationWidths 143 0.0048617029 insert rho''0width:InterpolationWidths 144 0.005234649 insert rho''0width:InterpolationWidths 145 0.0056219003 insert rho''0width:InterpolationWidths 146 0.0060234961 insert rho''0width:InterpolationWidths 147 0.0064395025 insert rho''0width:InterpolationWidths 148 0.0068699984 insert rho''0width:InterpolationWidths 149 0.0073150708 insert rho''0width:InterpolationWidths 150 0.0077748127 insert rho''0width:InterpolationWidths 151 0.0082493219 insert rho''0width:InterpolationWidths 152 0.0087386999 insert rho''0width:InterpolationWidths 153 0.0092430513 insert rho''0width:InterpolationWidths 154 0.0097624835 insert rho''0width:InterpolationWidths 155 0.010297106 insert rho''0width:InterpolationWidths 156 0.010847031 insert rho''0width:InterpolationWidths 157 0.011412372 insert rho''0width:InterpolationWidths 158 0.011993243 insert rho''0width:InterpolationWidths 159 0.012589762 insert rho''0width:InterpolationWidths 160 0.013202045 insert rho''0width:InterpolationWidths 161 0.013830214 insert rho''0width:InterpolationWidths 162 2.8067855e-09 insert rho''0width:InterpolationWidths 163 1.4109143e-08 insert rho''0width:InterpolationWidths 164 4.6880029e-08 insert rho''0width:InterpolationWidths 165 1.2476698e-07 insert rho''0width:InterpolationWidths 166 2.8968404e-07 insert rho''0width:InterpolationWidths 167 6.1523346e-07 insert rho''0width:InterpolationWidths 168 1.2327513e-06 insert rho''0width:InterpolationWidths 169 2.3865849e-06 insert rho''0width:InterpolationWidths 170 4.5661853e-06 insert rho''0width:InterpolationWidths 171 8.8727704e-06 insert rho''0width:InterpolationWidths 172 1.8141232e-05 insert rho''0width:InterpolationWidths 173 3.8703361e-05 insert rho''0width:InterpolationWidths 174 7.6186515e-05 insert rho''0width:InterpolationWidths 175 0.00013096208 insert rho''0width:InterpolationWidths 176 0.00020186225 insert rho''0width:InterpolationWidths 177 0.00028791293 insert rho''0width:InterpolationWidths 178 0.00038843687 insert rho''0width:InterpolationWidths 179 0.00050297188 insert rho''0width:InterpolationWidths 180 0.00063120341 insert rho''0width:InterpolationWidths 181 0.00077292006 insert rho''0width:InterpolationWidths 182 0.00092798461 insert rho''0width:InterpolationWidths 183 0.0010963147 insert rho''0width:InterpolationWidths 184 0.0012778695 insert rho''0width:InterpolationWidths 185 0.0014726404 insert rho''0width:InterpolationWidths 186 0.0016806442 insert rho''0width:InterpolationWidths 187 0.0019019183 insert rho''0width:InterpolationWidths 188 0.0021365163 insert rho''0width:InterpolationWidths 189 0.0023845059 insert rho''0width:InterpolationWidths 190 0.002645966 insert rho''0width:InterpolationWidths 191 0.0029209852 insert rho''0width:InterpolationWidths 192 0.0032096603 insert rho''0width:InterpolationWidths 193 0.0035119995 insert rho''0width:InterpolationWidths 194 0.0038282799 insert rho''0width:InterpolationWidths 195 0.0041586881 insert rho''0width:InterpolationWidths 196 0.0045030814 insert rho''0width:InterpolationWidths 197 0.0048617029 insert rho''0width:InterpolationWidths 198 0.005234649 insert rho''0width:InterpolationWidths 199 0.0056219003 insert rho''0width:InterpolationWidths 200 0.0060234961 insert rho''0width:InterpolationWidths 201 0.0064395025 insert rho''0width:InterpolationWidths 202 0.0068699984 insert rho''0width:InterpolationWidths 203 0.0073150708 insert rho''0width:InterpolationWidths 204 0.0077748127 insert rho''0width:InterpolationWidths 205 0.0082493219 insert rho''0width:InterpolationWidths 206 0.0087386999 insert rho''0width:InterpolationWidths 207 0.0092430513 insert rho''0width:InterpolationWidths 208 0.0097624835 insert rho''0width:InterpolationWidths 209 0.010297106 insert rho''0width:InterpolationWidths 210 0.010847031 insert rho''0width:InterpolationWidths 211 0.011412372 insert rho''0width:InterpolationWidths 212 0.011993243 insert rho''0width:InterpolationWidths 213 0.012589762 insert rho''0width:InterpolationWidths 214 0.013202045 insert rho''0width:InterpolationWidths 215 0.013830214 insert rho''0width:InterpolationWidths 216 0.00035147243 insert rho''0width:InterpolationWidths 217 0.00047321099 insert rho''0width:InterpolationWidths 218 0.00062357161 insert rho''0width:InterpolationWidths 219 0.00080565615 insert rho''0width:InterpolationWidths 220 0.0010221615 insert rho''0width:InterpolationWidths 221 0.001275186 insert rho''0width:InterpolationWidths 222 0.00156634 insert rho''0width:InterpolationWidths 223 0.0018965999 insert rho''0width:InterpolationWidths 224 0.0022663326 insert rho''0width:InterpolationWidths 225 0.0026752589 insert rho''0width:InterpolationWidths 226 0.0031231969 insert rho''0width:InterpolationWidths 227 0.0036086673 insert rho''0width:InterpolationWidths 228 0.0041310081 insert rho''0width:InterpolationWidths 229 0.0046888555 insert rho''0width:InterpolationWidths 230 0.0052808238 insert rho''0width:InterpolationWidths 231 0.0059056127 insert rho''0width:InterpolationWidths 232 0.0065617642 insert rho''0width:InterpolationWidths 233 0.0072469972 insert rho''0width:InterpolationWidths 234 0.0079595984 insert rho''0width:InterpolationWidths 235 0.0086966875 insert rho''0width:InterpolationWidths 236 0.0094589007 insert rho''0width:InterpolationWidths 237 0.010243705 insert rho''0width:InterpolationWidths 238 0.011051991 insert rho''0width:InterpolationWidths 239 0.011882462 insert rho''0width:InterpolationWidths 240 0.012736199 insert rho''0width:InterpolationWidths 241 0.013612565 insert rho''0width:InterpolationWidths 242 0.014511932 insert rho''0width:InterpolationWidths 243 0.015433872 insert rho''0width:InterpolationWidths 244 0.016378 insert rho''0width:InterpolationWidths 245 0.017345648 insert rho''0width:InterpolationWidths 246 0.018336274 insert rho''0width:InterpolationWidths 247 0.019349944 insert rho''0width:InterpolationWidths 248 0.020387091 insert rho''0width:InterpolationWidths 249 0.021447897 insert rho''0width:InterpolationWidths 250 0.02253191 insert rho''0width:InterpolationWidths 251 0.023639957 insert rho''0width:InterpolationWidths 252 0.024771229 insert rho''0width:InterpolationWidths 253 0.025927925 insert rho''0width:InterpolationWidths 254 0.027075956 insert rho''0width:InterpolationWidths 255 0.028195965 insert rho''0width:InterpolationWidths 256 0.029308086 insert rho''0width:InterpolationWidths 257 0.030417839 insert rho''0width:InterpolationWidths 258 0.031528128 insert rho''0width:InterpolationWidths 259 0.032640827 insert rho''0width:InterpolationWidths 260 0.033757289 insert rho''0width:InterpolationWidths 261 0.034878559 insert rho''0width:InterpolationWidths 262 0.036005484 insert rho''0width:InterpolationWidths 263 0.037138776 insert rho''0width:InterpolationWidths 264 0.038279051 insert rho''0width:InterpolationWidths 265 0.039426852 insert rho''0width:InterpolationWidths 266 0.040582666 insert rho''0width:InterpolationWidths 267 0.041746936 insert rho''0width:InterpolationWidths 268 0.042920071 insert rho''0width:InterpolationWidths 269 0.044102448 insert rho''0width:InterpolationWidths 270 0.00035147243 insert rho''0width:InterpolationWidths 271 0.00047321099 insert rho''0width:InterpolationWidths 272 0.00062357161 insert rho''0width:InterpolationWidths 273 0.00080565615 insert rho''0width:InterpolationWidths 274 0.0010221615 insert rho''0width:InterpolationWidths 275 0.001275186 insert rho''0width:InterpolationWidths 276 0.00156634 insert rho''0width:InterpolationWidths 277 0.0018965999 insert rho''0width:InterpolationWidths 278 0.0022663326 insert rho''0width:InterpolationWidths 279 0.0026752589 insert rho''0width:InterpolationWidths 280 0.0031231969 insert rho''0width:InterpolationWidths 281 0.0036086673 insert rho''0width:InterpolationWidths 282 0.0041310081 insert rho''0width:InterpolationWidths 283 0.0046888555 insert rho''0width:InterpolationWidths 284 0.0052808238 insert rho''0width:InterpolationWidths 285 0.0059056127 insert rho''0width:InterpolationWidths 286 0.0065617642 insert rho''0width:InterpolationWidths 287 0.0072469972 insert rho''0width:InterpolationWidths 288 0.0079595984 insert rho''0width:InterpolationWidths 289 0.0086966875 insert rho''0width:InterpolationWidths 290 0.0094589007 insert rho''0width:InterpolationWidths 291 0.010243705 insert rho''0width:InterpolationWidths 292 0.011051991 insert rho''0width:InterpolationWidths 293 0.011882462 insert rho''0width:InterpolationWidths 294 0.012736199 insert rho''0width:InterpolationWidths 295 0.013612565 insert rho''0width:InterpolationWidths 296 0.014511932 insert rho''0width:InterpolationWidths 297 0.015433872 insert rho''0width:InterpolationWidths 298 0.016378 insert rho''0width:InterpolationWidths 299 0.017345648 insert rho''0width:InterpolationWidths 300 0.018336274 insert rho''0width:InterpolationWidths 301 0.019349944 insert rho''0width:InterpolationWidths 302 0.020387091 insert rho''0width:InterpolationWidths 303 0.021447897 insert rho''0width:InterpolationWidths 304 0.02253191 insert rho''0width:InterpolationWidths 305 0.023639957 insert rho''0width:InterpolationWidths 306 0.024771229 insert rho''0width:InterpolationWidths 307 0.025927925 insert rho''0width:InterpolationWidths 308 0.027075956 insert rho''0width:InterpolationWidths 309 0.028195965 insert rho''0width:InterpolationWidths 310 0.029308086 insert rho''0width:InterpolationWidths 311 0.030417839 insert rho''0width:InterpolationWidths 312 0.031528128 insert rho''0width:InterpolationWidths 313 0.032640827 insert rho''0width:InterpolationWidths 314 0.033757289 insert rho''0width:InterpolationWidths 315 0.034878559 insert rho''0width:InterpolationWidths 316 0.036005484 insert rho''0width:InterpolationWidths 317 0.037138776 insert rho''0width:InterpolationWidths 318 0.038279051 insert rho''0width:InterpolationWidths 319 0.039426852 insert rho''0width:InterpolationWidths 320 0.040582666 insert rho''0width:InterpolationWidths 321 0.041746936 insert rho''0width:InterpolationWidths 322 0.042920071 insert rho''0width:InterpolationWidths 323 0.044102448 insert rho''0width:InterpolationWidths 324 5.7786444e-05 insert rho''0width:InterpolationWidths 325 8.3428958e-05 insert rho''0width:InterpolationWidths 326 0.00011964441 insert rho''0width:InterpolationWidths 327 0.00017097224 insert rho''0width:InterpolationWidths 328 0.00024409259 insert rho''0width:InterpolationWidths 329 0.00034865461 insert rho''0width:InterpolationWidths 330 0.00049770336 insert rho''0width:InterpolationWidths 331 0.00070653687 insert rho''0width:InterpolationWidths 332 0.00098954265 insert rho''0width:InterpolationWidths 333 0.0013571454 insert rho''0width:InterpolationWidths 334 0.0018152723 insert rho''0width:InterpolationWidths 335 0.0023666795 insert rho''0width:InterpolationWidths 336 0.0030124159 insert rho''0width:InterpolationWidths 337 0.0037527659 insert rho''0width:InterpolationWidths 338 0.0045877414 insert rho''0width:InterpolationWidths 339 0.0055173151 insert rho''0width:InterpolationWidths 340 0.0065415225 insert rho''0width:InterpolationWidths 341 0.0076605006 insert rho''0width:InterpolationWidths 342 0.0088744988 insert rho''0width:InterpolationWidths 343 0.010183875 insert rho''0width:InterpolationWidths 344 0.01158909 insert rho''0width:InterpolationWidths 345 0.013090692 insert rho''0width:InterpolationWidths 346 0.014689312 insert rho''0width:InterpolationWidths 347 0.016385669 insert rho''0width:InterpolationWidths 348 0.018180501 insert rho''0width:InterpolationWidths 349 0.020074641 insert rho''0width:InterpolationWidths 350 0.02206896 insert rho''0width:InterpolationWidths 351 0.024164371 insert rho''0width:InterpolationWidths 352 0.02636183 insert rho''0width:InterpolationWidths 353 0.028662322 insert rho''0width:InterpolationWidths 354 0.031066866 insert rho''0width:InterpolationWidths 355 0.033576511 insert rho''0width:InterpolationWidths 356 0.03619223 insert rho''0width:InterpolationWidths 357 0.038913589 insert rho''0width:InterpolationWidths 358 0.041740129 insert rho''0width:InterpolationWidths 359 0.04467199 insert rho''0width:InterpolationWidths 360 0.047709545 insert rho''0width:InterpolationWidths 361 0.050853266 insert rho''0width:InterpolationWidths 362 0.054103716 insert rho''0width:InterpolationWidths 363 0.057461519 insert rho''0width:InterpolationWidths 364 0.060927347 insert rho''0width:InterpolationWidths 365 0.06450191 insert rho''0width:InterpolationWidths 366 0.06818595 insert rho''0width:InterpolationWidths 367 0.071980237 insert rho''0width:InterpolationWidths 368 0.075885562 insert rho''0width:InterpolationWidths 369 0.079902738 insert rho''0width:InterpolationWidths 370 0.084032596 insert rho''0width:InterpolationWidths 371 0.088275979 insert rho''0width:InterpolationWidths 372 0.092633748 insert rho''0width:InterpolationWidths 373 0.097106774 insert rho''0width:InterpolationWidths 374 0.10169594 insert rho''0width:InterpolationWidths 375 0.10640214 insert rho''0width:InterpolationWidths 376 0.11122627 insert rho''0width:InterpolationWidths 377 0.11616925 insert rho''0width:InterpolationWidths 378 0.00054653033 insert rho''0width:InterpolationWidths 379 0.00082976046 insert rho''0width:InterpolationWidths 380 0.0012175261 insert rho''0width:InterpolationWidths 381 0.0017227841 insert rho''0width:InterpolationWidths 382 0.0023487088 insert rho''0width:InterpolationWidths 383 0.0030885596 insert rho''0width:InterpolationWidths 384 0.0039296998 insert rho''0width:InterpolationWidths 385 0.0048575751 insert rho''0width:InterpolationWidths 386 0.0058594187 insert rho''0width:InterpolationWidths 387 0.0069248734 insert rho''0width:InterpolationWidths 388 0.0080449431 insert rho''0width:InterpolationWidths 389 0.0092146756 insert rho''0width:InterpolationWidths 390 0.010429597 insert rho''0width:InterpolationWidths 391 0.011686393 insert rho''0width:InterpolationWidths 392 0.01298331 insert rho''0width:InterpolationWidths 393 0.014318976 insert rho''0width:InterpolationWidths 394 0.015691234 insert rho''0width:InterpolationWidths 395 0.017100677 insert rho''0width:InterpolationWidths 396 0.018546219 insert rho''0width:InterpolationWidths 397 0.020027851 insert rho''0width:InterpolationWidths 398 0.021545418 insert rho''0width:InterpolationWidths 399 0.023099007 insert rho''0width:InterpolationWidths 400 0.024688667 insert rho''0width:InterpolationWidths 401 0.026314888 insert rho''0width:InterpolationWidths 402 0.027969676 insert rho''0width:InterpolationWidths 403 0.029559887 insert rho''0width:InterpolationWidths 404 0.031119301 insert rho''0width:InterpolationWidths 405 0.032665414 insert rho''0width:InterpolationWidths 406 0.034205564 insert rho''0width:InterpolationWidths 407 0.035744115 insert rho''0width:InterpolationWidths 408 0.037284072 insert rho''0width:InterpolationWidths 409 0.038827685 insert rho''0width:InterpolationWidths 410 0.040376738 insert rho''0width:InterpolationWidths 411 0.041932702 insert rho''0width:InterpolationWidths 412 0.043496827 insert rho''0width:InterpolationWidths 413 0.045070203 insert rho''0width:InterpolationWidths 414 0.046653795 insert rho''0width:InterpolationWidths 415 0.048248471 insert rho''0width:InterpolationWidths 416 0.049855023 insert rho''0width:InterpolationWidths 417 0.051474178 insert rho''0width:InterpolationWidths 418 0.053106611 insert rho''0width:InterpolationWidths 419 0.054752953 insert rho''0width:InterpolationWidths 420 0.056413798 insert rho''0width:InterpolationWidths 421 0.058089707 insert rho''0width:InterpolationWidths 422 0.059781212 insert rho''0width:InterpolationWidths 423 0.061488822 insert rho''0width:InterpolationWidths 424 0.063213022 insert rho''0width:InterpolationWidths 425 0.064954279 insert rho''0width:InterpolationWidths 426 0.066713044 insert rho''0width:InterpolationWidths 427 0.068489749 insert rho''0width:InterpolationWidths 428 0.070284815 insert rho''0width:InterpolationWidths 429 0.072098649 insert rho''0width:InterpolationWidths 430 0.073931645 insert rho''0width:InterpolationWidths 431 0.07578419 insert rho''0width:InterpolationWidths 432 2.454116e-05 insert rho''0width:InterpolationWidths 433 4.0653124e-05 insert rho''0width:InterpolationWidths 434 6.4869896e-05 insert rho''0width:InterpolationWidths 435 0.00010060831 insert rho''0width:InterpolationWidths 436 0.00015259458 insert rho''0width:InterpolationWidths 437 0.00022731739 insert rho''0width:InterpolationWidths 438 0.00033349211 insert rho''0width:InterpolationWidths 439 0.00048261579 insert rho''0width:InterpolationWidths 440 0.00068895561 insert rho''0width:InterpolationWidths 441 0.00096909447 insert rho''0width:InterpolationWidths 442 0.0013404346 insert rho''0width:InterpolationWidths 443 0.0018197789 insert rho''0width:InterpolationWidths 444 0.0024213591 insert rho''0width:InterpolationWidths 445 0.0031570345 insert rho''0width:InterpolationWidths 446 0.0040367165 insert rho''0width:InterpolationWidths 447 0.0050634023 insert rho''0width:InterpolationWidths 448 0.0062454506 insert rho''0width:InterpolationWidths 449 0.0075848935 insert rho''0width:InterpolationWidths 450 0.0090834979 insert rho''0width:InterpolationWidths 451 0.010742393 insert rho''0width:InterpolationWidths 452 0.012562204 insert rho''0width:InterpolationWidths 453 0.01454077 insert rho''0width:InterpolationWidths 454 0.016679308 insert rho''0width:InterpolationWidths 455 0.01897473 insert rho''0width:InterpolationWidths 456 0.021426121 insert rho''0width:InterpolationWidths 457 0.02402779 insert rho''0width:InterpolationWidths 458 0.026782306 insert rho''0width:InterpolationWidths 459 0.029687291 insert rho''0width:InterpolationWidths 460 0.032735847 insert rho''0width:InterpolationWidths 461 0.035924805 insert rho''0width:InterpolationWidths 462 0.039252942 insert rho''0width:InterpolationWidths 463 0.042716673 insert rho''0width:InterpolationWidths 464 0.046311947 insert rho''0width:InterpolationWidths 465 0.050035848 insert rho''0width:InterpolationWidths 466 0.053881638 insert rho''0width:InterpolationWidths 467 0.057844117 insert rho''0width:InterpolationWidths 468 0.061918192 insert rho''0width:InterpolationWidths 469 0.066098983 insert rho''0width:InterpolationWidths 470 0.07038177 insert rho''0width:InterpolationWidths 471 0.074761972 insert rho''0width:InterpolationWidths 472 0.079235145 insert rho''0width:InterpolationWidths 473 0.083796983 insert rho''0width:InterpolationWidths 474 0.088443314 insert rho''0width:InterpolationWidths 475 0.093170107 insert rho''0width:InterpolationWidths 476 0.097973468 insert rho''0width:InterpolationWidths 477 0.10284964 insert rho''0width:InterpolationWidths 478 0.10779501 insert rho''0width:InterpolationWidths 479 0.11280609 insert rho''0width:InterpolationWidths 480 0.11787954 insert rho''0width:InterpolationWidths 481 0.12301214 insert rho''0width:InterpolationWidths 482 0.12820081 insert rho''0width:InterpolationWidths 483 0.13344258 insert rho''0width:InterpolationWidths 484 0.13873462 insert rho''0width:InterpolationWidths 485 0.14407421 insert rho''0width:InterpolationWidths 486 2.454116e-05 insert rho''0width:InterpolationWidths 487 4.0653124e-05 insert rho''0width:InterpolationWidths 488 6.4869896e-05 insert rho''0width:InterpolationWidths 489 0.00010060831 insert rho''0width:InterpolationWidths 490 0.00015259458 insert rho''0width:InterpolationWidths 491 0.00022731739 insert rho''0width:InterpolationWidths 492 0.00033349211 insert rho''0width:InterpolationWidths 493 0.00048261579 insert rho''0width:InterpolationWidths 494 0.00068895561 insert rho''0width:InterpolationWidths 495 0.00096909447 insert rho''0width:InterpolationWidths 496 0.0013404346 insert rho''0width:InterpolationWidths 497 0.0018197789 insert rho''0width:InterpolationWidths 498 0.0024213591 insert rho''0width:InterpolationWidths 499 0.0031570345 insert rho''0width:InterpolationWidths 500 0.0040367165 insert rho''0width:InterpolationWidths 501 0.0050634023 insert rho''0width:InterpolationWidths 502 0.0062454506 insert rho''0width:InterpolationWidths 503 0.0075848935 insert rho''0width:InterpolationWidths 504 0.0090834979 insert rho''0width:InterpolationWidths 505 0.010742393 insert rho''0width:InterpolationWidths 506 0.012562204 insert rho''0width:InterpolationWidths 507 0.01454077 insert rho''0width:InterpolationWidths 508 0.016679308 insert rho''0width:InterpolationWidths 509 0.01897473 insert rho''0width:InterpolationWidths 510 0.021426121 insert rho''0width:InterpolationWidths 511 0.02402779 insert rho''0width:InterpolationWidths 512 0.026782306 insert rho''0width:InterpolationWidths 513 0.029687291 insert rho''0width:InterpolationWidths 514 0.032735847 insert rho''0width:InterpolationWidths 515 0.035924805 insert rho''0width:InterpolationWidths 516 0.039252942 insert rho''0width:InterpolationWidths 517 0.042716673 insert rho''0width:InterpolationWidths 518 0.046311947 insert rho''0width:InterpolationWidths 519 0.050035848 insert rho''0width:InterpolationWidths 520 0.053881638 insert rho''0width:InterpolationWidths 521 0.057844117 insert rho''0width:InterpolationWidths 522 0.061918192 insert rho''0width:InterpolationWidths 523 0.066098983 insert rho''0width:InterpolationWidths 524 0.07038177 insert rho''0width:InterpolationWidths 525 0.074761972 insert rho''0width:InterpolationWidths 526 0.079235145 insert rho''0width:InterpolationWidths 527 0.083796983 insert rho''0width:InterpolationWidths 528 0.088443314 insert rho''0width:InterpolationWidths 529 0.093170107 insert rho''0width:InterpolationWidths 530 0.097973468 insert rho''0width:InterpolationWidths 531 0.10284964 insert rho''0width:InterpolationWidths 532 0.10779501 insert rho''0width:InterpolationWidths 533 0.11280609 insert rho''0width:InterpolationWidths 534 0.11787954 insert rho''0width:InterpolationWidths 535 0.12301214 insert rho''0width:InterpolationWidths 536 0.12820081 insert rho''0width:InterpolationWidths 537 0.13344258 insert rho''0width:InterpolationWidths 538 0.13873462 insert rho''0width:InterpolationWidths 539 0.14407421 insert rho''0width:InterpolationWidths 540 1.9805732e-05 insert rho''0width:InterpolationWidths 541 2.8681229e-05 insert rho''0width:InterpolationWidths 542 4.1153508e-05 insert rho''0width:InterpolationWidths 543 5.8431869e-05 insert rho''0width:InterpolationWidths 544 8.2044736e-05 insert rho''0width:InterpolationWidths 545 0.00011391903 insert rho''0width:InterpolationWidths 546 0.00015648236 insert rho''0width:InterpolationWidths 547 0.00021279261 insert rho''0width:InterpolationWidths 548 0.00028670178 insert rho''0width:InterpolationWidths 549 0.00038305942 insert rho''0width:InterpolationWidths 550 0.00050796009 insert rho''0width:InterpolationWidths 551 0.00066902734 insert rho''0width:InterpolationWidths 552 0.00087571986 insert rho''0width:InterpolationWidths 553 0.0011395996 insert rho''0width:InterpolationWidths 554 0.001474469 insert rho''0width:InterpolationWidths 555 0.0018962241 insert rho''0width:InterpolationWidths 556 0.0024222518 insert rho''0width:InterpolationWidths 557 0.00307028 insert rho''0width:InterpolationWidths 558 0.0038568025 insert rho''0width:InterpolationWidths 559 0.0047954559 insert rho''0width:InterpolationWidths 560 0.0058958347 insert rho''0width:InterpolationWidths 561 0.007163044 insert rho''0width:InterpolationWidths 562 0.0085979684 insert rho''0width:InterpolationWidths 563 0.010198004 insert rho''0width:InterpolationWidths 564 0.011957952 insert rho''0width:InterpolationWidths 565 0.013870858 insert rho''0width:InterpolationWidths 566 0.015928715 insert rho''0width:InterpolationWidths 567 0.018122994 insert rho''0width:InterpolationWidths 568 0.020444997 insert rho''0width:InterpolationWidths 569 0.02288616 insert rho''0width:InterpolationWidths 570 0.025438167 insert rho''0width:InterpolationWidths 571 0.02809308 insert rho''0width:InterpolationWidths 572 0.03084338 insert rho''0width:InterpolationWidths 573 0.033681918 insert rho''0width:InterpolationWidths 574 0.036602285 insert rho''0width:InterpolationWidths 575 0.039598047 insert rho''0width:InterpolationWidths 576 0.042663467 insert rho''0width:InterpolationWidths 577 0.045793089 insert rho''0width:InterpolationWidths 578 0.048981673 insert rho''0width:InterpolationWidths 579 0.052224493 insert rho''0width:InterpolationWidths 580 0.055516778 insert rho''0width:InterpolationWidths 581 0.05885365 insert rho''0width:InterpolationWidths 582 0.06223042 insert rho''0width:InterpolationWidths 583 0.065642193 insert rho''0width:InterpolationWidths 584 0.069083997 insert rho''0width:InterpolationWidths 585 0.072550962 insert rho''0width:InterpolationWidths 586 0.076038492 insert rho''0width:InterpolationWidths 587 0.079542369 insert rho''0width:InterpolationWidths 588 0.083058804 insert rho''0width:InterpolationWidths 589 0.086584406 insert rho''0width:InterpolationWidths 590 0.0901162 insert rho''0width:InterpolationWidths 591 0.093651496 insert rho''0width:InterpolationWidths 592 0.097188014 insert rho''0width:InterpolationWidths 593 0.10072363 insert rho''0width:NumberofEntries 0 54 insert rho''0width:NumberofEntries 1 108 insert rho''0width:NumberofEntries 2 162 insert rho''0width:NumberofEntries 3 216 insert rho''0width:NumberofEntries 4 216 insert rho''0width:NumberofEntries 5 216 insert rho''0width:NumberofEntries 6 270 insert rho''0width:NumberofEntries 7 324 insert rho''0width:NumberofEntries 8 378 insert rho''0width:NumberofEntries 9 432 insert rho''0width:NumberofEntries 10 486 insert rho''0width:NumberofEntries 11 540 insert rho''0width:NumberofEntries 12 540 insert rho''0width:NumberofEntries 13 594 insert rho''0width:NumberofEntries 14 594 newdef /Herwig/Particles/rho''0:Width_generator rho''0width # create Herwig::GenericWidthGenerator rho'0width newdef rho'0width:Particle /Herwig/Particles/rho'0 newdef rho'0width:Prefactor 0.999154 newdef rho'0width:BRNormalize 1 newdef rho'0width:BRMinimum 0.01 newdef rho'0width:Points 50 newdef rho'0width:InterpolationOrder 1 insert rho'0width:MEtype 0 2 insert rho'0width:MEtype 1 2 insert rho'0width:MEtype 2 2 insert rho'0width:MEtype 3 2 insert rho'0width:MEtype 4 2 insert rho'0width:MEtype 5 1 insert rho'0width:MEtype 6 2 insert rho'0width:MEtype 7 2 insert rho'0width:MEcode 0 0 insert rho'0width:MEcode 1 0 insert rho'0width:MEcode 2 0 insert rho'0width:MEcode 3 0 insert rho'0width:MEcode 4 0 insert rho'0width:MEcode 5 0 insert rho'0width:MEcode 6 0 insert rho'0width:MEcode 7 0 insert rho'0width:MEcoupling 0 1.00641 insert rho'0width:MEcoupling 1 1.00641 insert rho'0width:MEcoupling 2 0.994338 insert rho'0width:MEcoupling 3 1.00792 insert rho'0width:MEcoupling 4 1.00792 insert rho'0width:MEcoupling 5 2.08311 insert rho'0width:MEcoupling 6 0.965605 insert rho'0width:MEcoupling 7 0.999047 insert rho'0width:ModeOn 0 1 insert rho'0width:ModeOn 1 1 insert rho'0width:ModeOn 2 1 insert rho'0width:ModeOn 3 1 insert rho'0width:ModeOn 4 1 insert rho'0width:ModeOn 5 1 insert rho'0width:ModeOn 6 1 insert rho'0width:ModeOn 7 1 insert rho'0width:MinimumMasses 0 0.81957 insert rho'0width:MinimumMasses 1 0.81957 insert rho'0width:MinimumMasses 2 0.944978 insert rho'0width:MinimumMasses 3 1.03957 insert rho'0width:MinimumMasses 4 1.03957 insert rho'0width:MinimumMasses 5 0.27914 insert rho'0width:MinimumMasses 6 0.751 insert rho'0width:MinimumMasses 7 0.6855 insert rho'0width:MEmass1 0 1.24 insert rho'0width:MEmass1 1 1.24 insert rho'0width:MEmass1 2 1.17 insert rho'0width:MEmass1 3 1.3 insert rho'0width:MEmass1 4 1.3 insert rho'0width:MEmass1 5 0.13957 insert rho'0width:MEmass1 6 0.7755 insert rho'0width:MEmass1 7 0.7755 insert rho'0width:MEmass2 0 0.13957 insert rho'0width:MEmass2 1 0.13957 insert rho'0width:MEmass2 2 0.134978 insert rho'0width:MEmass2 3 0.13957 insert rho'0width:MEmass2 4 0.13957 insert rho'0width:MEmass2 5 0.13957 insert rho'0width:MEmass2 6 0.7755 insert rho'0width:MEmass2 7 0.86 insert rho'0width:DecayModes 0 rho'0->a_1+,pi-; insert rho'0width:DecayModes 1 rho'0->a_1-,pi+; insert rho'0width:DecayModes 2 rho'0->h_1,pi0; insert rho'0width:DecayModes 3 rho'0->pi'+,pi-; insert rho'0width:DecayModes 4 rho'0->pi'-,pi+; insert rho'0width:DecayModes 5 rho'0->pi+,pi-; insert rho'0width:DecayModes 6 rho'0->rho+,rho-; insert rho'0width:DecayModes 7 rho'0->sigma,rho0; insert rho'0width:InterpolationMasses 0 1.141 insert rho'0width:InterpolationMasses 1 1.153 insert rho'0width:InterpolationMasses 2 1.165 insert rho'0width:InterpolationMasses 3 1.177 insert rho'0width:InterpolationMasses 4 1.189 insert rho'0width:InterpolationMasses 5 1.201 insert rho'0width:InterpolationMasses 6 1.213 insert rho'0width:InterpolationMasses 7 1.225 insert rho'0width:InterpolationMasses 8 1.237 insert rho'0width:InterpolationMasses 9 1.249 insert rho'0width:InterpolationMasses 10 1.261 insert rho'0width:InterpolationMasses 11 1.273 insert rho'0width:InterpolationMasses 12 1.285 insert rho'0width:InterpolationMasses 13 1.297 insert rho'0width:InterpolationMasses 14 1.309 insert rho'0width:InterpolationMasses 15 1.321 insert rho'0width:InterpolationMasses 16 1.333 insert rho'0width:InterpolationMasses 17 1.345 insert rho'0width:InterpolationMasses 18 1.357 insert rho'0width:InterpolationMasses 19 1.369 insert rho'0width:InterpolationMasses 20 1.381 insert rho'0width:InterpolationMasses 21 1.393 insert rho'0width:InterpolationMasses 22 1.405 insert rho'0width:InterpolationMasses 23 1.417 insert rho'0width:InterpolationMasses 24 1.429 insert rho'0width:InterpolationMasses 25 1.441 insert rho'0width:InterpolationMasses 26 1.453 insert rho'0width:InterpolationMasses 27 1.465 insert rho'0width:InterpolationMasses 28 1.477 insert rho'0width:InterpolationMasses 29 1.489 insert rho'0width:InterpolationMasses 30 1.501 insert rho'0width:InterpolationMasses 31 1.513 insert rho'0width:InterpolationMasses 32 1.525 insert rho'0width:InterpolationMasses 33 1.537 insert rho'0width:InterpolationMasses 34 1.549 insert rho'0width:InterpolationMasses 35 1.561 insert rho'0width:InterpolationMasses 36 1.573 insert rho'0width:InterpolationMasses 37 1.585 insert rho'0width:InterpolationMasses 38 1.597 insert rho'0width:InterpolationMasses 39 1.609 insert rho'0width:InterpolationMasses 40 1.621 insert rho'0width:InterpolationMasses 41 1.633 insert rho'0width:InterpolationMasses 42 1.645 insert rho'0width:InterpolationMasses 43 1.657 insert rho'0width:InterpolationMasses 44 1.669 insert rho'0width:InterpolationMasses 45 1.681 insert rho'0width:InterpolationMasses 46 1.693 insert rho'0width:InterpolationMasses 47 1.705 insert rho'0width:InterpolationMasses 48 1.717 insert rho'0width:InterpolationMasses 49 1.729 insert rho'0width:InterpolationMasses 50 1.741 insert rho'0width:InterpolationMasses 51 1.753 insert rho'0width:InterpolationMasses 52 1.765 insert rho'0width:InterpolationMasses 53 1.777 insert rho'0width:InterpolationMasses 54 1.141 insert rho'0width:InterpolationMasses 55 1.153 insert rho'0width:InterpolationMasses 56 1.165 insert rho'0width:InterpolationMasses 57 1.177 insert rho'0width:InterpolationMasses 58 1.189 insert rho'0width:InterpolationMasses 59 1.201 insert rho'0width:InterpolationMasses 60 1.213 insert rho'0width:InterpolationMasses 61 1.225 insert rho'0width:InterpolationMasses 62 1.237 insert rho'0width:InterpolationMasses 63 1.249 insert rho'0width:InterpolationMasses 64 1.261 insert rho'0width:InterpolationMasses 65 1.273 insert rho'0width:InterpolationMasses 66 1.285 insert rho'0width:InterpolationMasses 67 1.297 insert rho'0width:InterpolationMasses 68 1.309 insert rho'0width:InterpolationMasses 69 1.321 insert rho'0width:InterpolationMasses 70 1.333 insert rho'0width:InterpolationMasses 71 1.345 insert rho'0width:InterpolationMasses 72 1.357 insert rho'0width:InterpolationMasses 73 1.369 insert rho'0width:InterpolationMasses 74 1.381 insert rho'0width:InterpolationMasses 75 1.393 insert rho'0width:InterpolationMasses 76 1.405 insert rho'0width:InterpolationMasses 77 1.417 insert rho'0width:InterpolationMasses 78 1.429 insert rho'0width:InterpolationMasses 79 1.441 insert rho'0width:InterpolationMasses 80 1.453 insert rho'0width:InterpolationMasses 81 1.465 insert rho'0width:InterpolationMasses 82 1.477 insert rho'0width:InterpolationMasses 83 1.489 insert rho'0width:InterpolationMasses 84 1.501 insert rho'0width:InterpolationMasses 85 1.513 insert rho'0width:InterpolationMasses 86 1.525 insert rho'0width:InterpolationMasses 87 1.537 insert rho'0width:InterpolationMasses 88 1.549 insert rho'0width:InterpolationMasses 89 1.561 insert rho'0width:InterpolationMasses 90 1.573 insert rho'0width:InterpolationMasses 91 1.585 insert rho'0width:InterpolationMasses 92 1.597 insert rho'0width:InterpolationMasses 93 1.609 insert rho'0width:InterpolationMasses 94 1.621 insert rho'0width:InterpolationMasses 95 1.633 insert rho'0width:InterpolationMasses 96 1.645 insert rho'0width:InterpolationMasses 97 1.657 insert rho'0width:InterpolationMasses 98 1.669 insert rho'0width:InterpolationMasses 99 1.681 insert rho'0width:InterpolationMasses 100 1.693 insert rho'0width:InterpolationMasses 101 1.705 insert rho'0width:InterpolationMasses 102 1.717 insert rho'0width:InterpolationMasses 103 1.729 insert rho'0width:InterpolationMasses 104 1.741 insert rho'0width:InterpolationMasses 105 1.753 insert rho'0width:InterpolationMasses 106 1.765 insert rho'0width:InterpolationMasses 107 1.777 insert rho'0width:InterpolationMasses 108 1.141 insert rho'0width:InterpolationMasses 109 1.153 insert rho'0width:InterpolationMasses 110 1.165 insert rho'0width:InterpolationMasses 111 1.177 insert rho'0width:InterpolationMasses 112 1.189 insert rho'0width:InterpolationMasses 113 1.201 insert rho'0width:InterpolationMasses 114 1.213 insert rho'0width:InterpolationMasses 115 1.225 insert rho'0width:InterpolationMasses 116 1.237 insert rho'0width:InterpolationMasses 117 1.249 insert rho'0width:InterpolationMasses 118 1.261 insert rho'0width:InterpolationMasses 119 1.273 insert rho'0width:InterpolationMasses 120 1.285 insert rho'0width:InterpolationMasses 121 1.297 insert rho'0width:InterpolationMasses 122 1.309 insert rho'0width:InterpolationMasses 123 1.321 insert rho'0width:InterpolationMasses 124 1.333 insert rho'0width:InterpolationMasses 125 1.345 insert rho'0width:InterpolationMasses 126 1.357 insert rho'0width:InterpolationMasses 127 1.369 insert rho'0width:InterpolationMasses 128 1.381 insert rho'0width:InterpolationMasses 129 1.393 insert rho'0width:InterpolationMasses 130 1.405 insert rho'0width:InterpolationMasses 131 1.417 insert rho'0width:InterpolationMasses 132 1.429 insert rho'0width:InterpolationMasses 133 1.441 insert rho'0width:InterpolationMasses 134 1.453 insert rho'0width:InterpolationMasses 135 1.465 insert rho'0width:InterpolationMasses 136 1.477 insert rho'0width:InterpolationMasses 137 1.489 insert rho'0width:InterpolationMasses 138 1.501 insert rho'0width:InterpolationMasses 139 1.513 insert rho'0width:InterpolationMasses 140 1.525 insert rho'0width:InterpolationMasses 141 1.537 insert rho'0width:InterpolationMasses 142 1.549 insert rho'0width:InterpolationMasses 143 1.561 insert rho'0width:InterpolationMasses 144 1.573 insert rho'0width:InterpolationMasses 145 1.585 insert rho'0width:InterpolationMasses 146 1.597 insert rho'0width:InterpolationMasses 147 1.609 insert rho'0width:InterpolationMasses 148 1.621 insert rho'0width:InterpolationMasses 149 1.633 insert rho'0width:InterpolationMasses 150 1.645 insert rho'0width:InterpolationMasses 151 1.657 insert rho'0width:InterpolationMasses 152 1.669 insert rho'0width:InterpolationMasses 153 1.681 insert rho'0width:InterpolationMasses 154 1.693 insert rho'0width:InterpolationMasses 155 1.705 insert rho'0width:InterpolationMasses 156 1.717 insert rho'0width:InterpolationMasses 157 1.729 insert rho'0width:InterpolationMasses 158 1.741 insert rho'0width:InterpolationMasses 159 1.753 insert rho'0width:InterpolationMasses 160 1.765 insert rho'0width:InterpolationMasses 161 1.777 insert rho'0width:InterpolationMasses 162 1.141 insert rho'0width:InterpolationMasses 163 1.153 insert rho'0width:InterpolationMasses 164 1.165 insert rho'0width:InterpolationMasses 165 1.177 insert rho'0width:InterpolationMasses 166 1.189 insert rho'0width:InterpolationMasses 167 1.201 insert rho'0width:InterpolationMasses 168 1.213 insert rho'0width:InterpolationMasses 169 1.225 insert rho'0width:InterpolationMasses 170 1.237 insert rho'0width:InterpolationMasses 171 1.249 insert rho'0width:InterpolationMasses 172 1.261 insert rho'0width:InterpolationMasses 173 1.273 insert rho'0width:InterpolationMasses 174 1.285 insert rho'0width:InterpolationMasses 175 1.297 insert rho'0width:InterpolationMasses 176 1.309 insert rho'0width:InterpolationMasses 177 1.321 insert rho'0width:InterpolationMasses 178 1.333 insert rho'0width:InterpolationMasses 179 1.345 insert rho'0width:InterpolationMasses 180 1.357 insert rho'0width:InterpolationMasses 181 1.369 insert rho'0width:InterpolationMasses 182 1.381 insert rho'0width:InterpolationMasses 183 1.393 insert rho'0width:InterpolationMasses 184 1.405 insert rho'0width:InterpolationMasses 185 1.417 insert rho'0width:InterpolationMasses 186 1.429 insert rho'0width:InterpolationMasses 187 1.441 insert rho'0width:InterpolationMasses 188 1.453 insert rho'0width:InterpolationMasses 189 1.465 insert rho'0width:InterpolationMasses 190 1.477 insert rho'0width:InterpolationMasses 191 1.489 insert rho'0width:InterpolationMasses 192 1.501 insert rho'0width:InterpolationMasses 193 1.513 insert rho'0width:InterpolationMasses 194 1.525 insert rho'0width:InterpolationMasses 195 1.537 insert rho'0width:InterpolationMasses 196 1.549 insert rho'0width:InterpolationMasses 197 1.561 insert rho'0width:InterpolationMasses 198 1.573 insert rho'0width:InterpolationMasses 199 1.585 insert rho'0width:InterpolationMasses 200 1.597 insert rho'0width:InterpolationMasses 201 1.609 insert rho'0width:InterpolationMasses 202 1.621 insert rho'0width:InterpolationMasses 203 1.633 insert rho'0width:InterpolationMasses 204 1.645 insert rho'0width:InterpolationMasses 205 1.657 insert rho'0width:InterpolationMasses 206 1.669 insert rho'0width:InterpolationMasses 207 1.681 insert rho'0width:InterpolationMasses 208 1.693 insert rho'0width:InterpolationMasses 209 1.705 insert rho'0width:InterpolationMasses 210 1.717 insert rho'0width:InterpolationMasses 211 1.729 insert rho'0width:InterpolationMasses 212 1.741 insert rho'0width:InterpolationMasses 213 1.753 insert rho'0width:InterpolationMasses 214 1.765 insert rho'0width:InterpolationMasses 215 1.777 insert rho'0width:InterpolationMasses 216 1.141 insert rho'0width:InterpolationMasses 217 1.153 insert rho'0width:InterpolationMasses 218 1.165 insert rho'0width:InterpolationMasses 219 1.177 insert rho'0width:InterpolationMasses 220 1.189 insert rho'0width:InterpolationMasses 221 1.201 insert rho'0width:InterpolationMasses 222 1.213 insert rho'0width:InterpolationMasses 223 1.225 insert rho'0width:InterpolationMasses 224 1.237 insert rho'0width:InterpolationMasses 225 1.249 insert rho'0width:InterpolationMasses 226 1.261 insert rho'0width:InterpolationMasses 227 1.273 insert rho'0width:InterpolationMasses 228 1.285 insert rho'0width:InterpolationMasses 229 1.297 insert rho'0width:InterpolationMasses 230 1.309 insert rho'0width:InterpolationMasses 231 1.321 insert rho'0width:InterpolationMasses 232 1.333 insert rho'0width:InterpolationMasses 233 1.345 insert rho'0width:InterpolationMasses 234 1.357 insert rho'0width:InterpolationMasses 235 1.369 insert rho'0width:InterpolationMasses 236 1.381 insert rho'0width:InterpolationMasses 237 1.393 insert rho'0width:InterpolationMasses 238 1.405 insert rho'0width:InterpolationMasses 239 1.417 insert rho'0width:InterpolationMasses 240 1.429 insert rho'0width:InterpolationMasses 241 1.441 insert rho'0width:InterpolationMasses 242 1.453 insert rho'0width:InterpolationMasses 243 1.465 insert rho'0width:InterpolationMasses 244 1.477 insert rho'0width:InterpolationMasses 245 1.489 insert rho'0width:InterpolationMasses 246 1.501 insert rho'0width:InterpolationMasses 247 1.513 insert rho'0width:InterpolationMasses 248 1.525 insert rho'0width:InterpolationMasses 249 1.537 insert rho'0width:InterpolationMasses 250 1.549 insert rho'0width:InterpolationMasses 251 1.561 insert rho'0width:InterpolationMasses 252 1.573 insert rho'0width:InterpolationMasses 253 1.585 insert rho'0width:InterpolationMasses 254 1.597 insert rho'0width:InterpolationMasses 255 1.609 insert rho'0width:InterpolationMasses 256 1.621 insert rho'0width:InterpolationMasses 257 1.633 insert rho'0width:InterpolationMasses 258 1.645 insert rho'0width:InterpolationMasses 259 1.657 insert rho'0width:InterpolationMasses 260 1.669 insert rho'0width:InterpolationMasses 261 1.681 insert rho'0width:InterpolationMasses 262 1.693 insert rho'0width:InterpolationMasses 263 1.705 insert rho'0width:InterpolationMasses 264 1.717 insert rho'0width:InterpolationMasses 265 1.729 insert rho'0width:InterpolationMasses 266 1.741 insert rho'0width:InterpolationMasses 267 1.753 insert rho'0width:InterpolationMasses 268 1.765 insert rho'0width:InterpolationMasses 269 1.777 insert rho'0width:InterpolationMasses 270 1.141 insert rho'0width:InterpolationMasses 271 1.153 insert rho'0width:InterpolationMasses 272 1.165 insert rho'0width:InterpolationMasses 273 1.177 insert rho'0width:InterpolationMasses 274 1.189 insert rho'0width:InterpolationMasses 275 1.201 insert rho'0width:InterpolationMasses 276 1.213 insert rho'0width:InterpolationMasses 277 1.225 insert rho'0width:InterpolationMasses 278 1.237 insert rho'0width:InterpolationMasses 279 1.249 insert rho'0width:InterpolationMasses 280 1.261 insert rho'0width:InterpolationMasses 281 1.273 insert rho'0width:InterpolationMasses 282 1.285 insert rho'0width:InterpolationMasses 283 1.297 insert rho'0width:InterpolationMasses 284 1.309 insert rho'0width:InterpolationMasses 285 1.321 insert rho'0width:InterpolationMasses 286 1.333 insert rho'0width:InterpolationMasses 287 1.345 insert rho'0width:InterpolationMasses 288 1.357 insert rho'0width:InterpolationMasses 289 1.369 insert rho'0width:InterpolationMasses 290 1.381 insert rho'0width:InterpolationMasses 291 1.393 insert rho'0width:InterpolationMasses 292 1.405 insert rho'0width:InterpolationMasses 293 1.417 insert rho'0width:InterpolationMasses 294 1.429 insert rho'0width:InterpolationMasses 295 1.441 insert rho'0width:InterpolationMasses 296 1.453 insert rho'0width:InterpolationMasses 297 1.465 insert rho'0width:InterpolationMasses 298 1.477 insert rho'0width:InterpolationMasses 299 1.489 insert rho'0width:InterpolationMasses 300 1.501 insert rho'0width:InterpolationMasses 301 1.513 insert rho'0width:InterpolationMasses 302 1.525 insert rho'0width:InterpolationMasses 303 1.537 insert rho'0width:InterpolationMasses 304 1.549 insert rho'0width:InterpolationMasses 305 1.561 insert rho'0width:InterpolationMasses 306 1.573 insert rho'0width:InterpolationMasses 307 1.585 insert rho'0width:InterpolationMasses 308 1.597 insert rho'0width:InterpolationMasses 309 1.609 insert rho'0width:InterpolationMasses 310 1.621 insert rho'0width:InterpolationMasses 311 1.633 insert rho'0width:InterpolationMasses 312 1.645 insert rho'0width:InterpolationMasses 313 1.657 insert rho'0width:InterpolationMasses 314 1.669 insert rho'0width:InterpolationMasses 315 1.681 insert rho'0width:InterpolationMasses 316 1.693 insert rho'0width:InterpolationMasses 317 1.705 insert rho'0width:InterpolationMasses 318 1.717 insert rho'0width:InterpolationMasses 319 1.729 insert rho'0width:InterpolationMasses 320 1.741 insert rho'0width:InterpolationMasses 321 1.753 insert rho'0width:InterpolationMasses 322 1.765 insert rho'0width:InterpolationMasses 323 1.777 insert rho'0width:InterpolationMasses 324 1.141 insert rho'0width:InterpolationMasses 325 1.153 insert rho'0width:InterpolationMasses 326 1.165 insert rho'0width:InterpolationMasses 327 1.177 insert rho'0width:InterpolationMasses 328 1.189 insert rho'0width:InterpolationMasses 329 1.201 insert rho'0width:InterpolationMasses 330 1.213 insert rho'0width:InterpolationMasses 331 1.225 insert rho'0width:InterpolationMasses 332 1.237 insert rho'0width:InterpolationMasses 333 1.249 insert rho'0width:InterpolationMasses 334 1.261 insert rho'0width:InterpolationMasses 335 1.273 insert rho'0width:InterpolationMasses 336 1.285 insert rho'0width:InterpolationMasses 337 1.297 insert rho'0width:InterpolationMasses 338 1.309 insert rho'0width:InterpolationMasses 339 1.321 insert rho'0width:InterpolationMasses 340 1.333 insert rho'0width:InterpolationMasses 341 1.345 insert rho'0width:InterpolationMasses 342 1.357 insert rho'0width:InterpolationMasses 343 1.369 insert rho'0width:InterpolationMasses 344 1.381 insert rho'0width:InterpolationMasses 345 1.393 insert rho'0width:InterpolationMasses 346 1.405 insert rho'0width:InterpolationMasses 347 1.417 insert rho'0width:InterpolationMasses 348 1.429 insert rho'0width:InterpolationMasses 349 1.441 insert rho'0width:InterpolationMasses 350 1.453 insert rho'0width:InterpolationMasses 351 1.465 insert rho'0width:InterpolationMasses 352 1.477 insert rho'0width:InterpolationMasses 353 1.489 insert rho'0width:InterpolationMasses 354 1.501 insert rho'0width:InterpolationMasses 355 1.513 insert rho'0width:InterpolationMasses 356 1.525 insert rho'0width:InterpolationMasses 357 1.537 insert rho'0width:InterpolationMasses 358 1.549 insert rho'0width:InterpolationMasses 359 1.561 insert rho'0width:InterpolationMasses 360 1.573 insert rho'0width:InterpolationMasses 361 1.585 insert rho'0width:InterpolationMasses 362 1.597 insert rho'0width:InterpolationMasses 363 1.609 insert rho'0width:InterpolationMasses 364 1.621 insert rho'0width:InterpolationMasses 365 1.633 insert rho'0width:InterpolationMasses 366 1.645 insert rho'0width:InterpolationMasses 367 1.657 insert rho'0width:InterpolationMasses 368 1.669 insert rho'0width:InterpolationMasses 369 1.681 insert rho'0width:InterpolationMasses 370 1.693 insert rho'0width:InterpolationMasses 371 1.705 insert rho'0width:InterpolationMasses 372 1.717 insert rho'0width:InterpolationMasses 373 1.729 insert rho'0width:InterpolationMasses 374 1.741 insert rho'0width:InterpolationMasses 375 1.753 insert rho'0width:InterpolationMasses 376 1.765 insert rho'0width:InterpolationMasses 377 1.777 insert rho'0width:InterpolationWidths 0 0.00053300338 insert rho'0width:InterpolationWidths 1 0.00065378923 insert rho'0width:InterpolationWidths 2 0.00079491675 insert rho'0width:InterpolationWidths 3 0.00095844924 insert rho'0width:InterpolationWidths 4 0.0011462633 insert rho'0width:InterpolationWidths 5 0.0013604144 insert rho'0width:InterpolationWidths 6 0.0016026178 insert rho'0width:InterpolationWidths 7 0.0018748565 insert rho'0width:InterpolationWidths 8 0.0021786853 insert rho'0width:InterpolationWidths 9 0.0025155911 insert rho'0width:InterpolationWidths 10 0.0028871232 insert rho'0width:InterpolationWidths 11 0.0032942622 insert rho'0width:InterpolationWidths 12 0.0037379469 insert rho'0width:InterpolationWidths 13 0.0042191909 insert rho'0width:InterpolationWidths 14 0.0047382686 insert rho'0width:InterpolationWidths 15 0.0052957644 insert rho'0width:InterpolationWidths 16 0.0058917256 insert rho'0width:InterpolationWidths 17 0.0065262383 insert rho'0width:InterpolationWidths 18 0.0071987502 insert rho'0width:InterpolationWidths 19 0.0079093869 insert rho'0width:InterpolationWidths 20 0.0086575928 insert rho'0width:InterpolationWidths 21 0.0094439351 insert rho'0width:InterpolationWidths 22 0.010263962 insert rho'0width:InterpolationWidths 23 0.011121409 insert rho'0width:InterpolationWidths 24 0.012014777 insert rho'0width:InterpolationWidths 25 0.012940216 insert rho'0width:InterpolationWidths 26 0.013901458 insert rho'0width:InterpolationWidths 27 0.014893633 insert rho'0width:InterpolationWidths 28 0.015918163 insert rho'0width:InterpolationWidths 29 0.01697343 insert rho'0width:InterpolationWidths 30 0.018060904 insert rho'0width:InterpolationWidths 31 0.019175737 insert rho'0width:InterpolationWidths 32 0.020318848 insert rho'0width:InterpolationWidths 33 0.021488411 insert rho'0width:InterpolationWidths 34 0.022683669 insert rho'0width:InterpolationWidths 35 0.023901304 insert rho'0width:InterpolationWidths 36 0.025145178 insert rho'0width:InterpolationWidths 37 0.026411635 insert rho'0width:InterpolationWidths 38 0.027699848 insert rho'0width:InterpolationWidths 39 0.02901101 insert rho'0width:InterpolationWidths 40 0.030344944 insert rho'0width:InterpolationWidths 41 0.031701051 insert rho'0width:InterpolationWidths 42 0.033079017 insert rho'0width:InterpolationWidths 43 0.03448027 insert rho'0width:InterpolationWidths 44 0.035901987 insert rho'0width:InterpolationWidths 45 0.037347167 insert rho'0width:InterpolationWidths 46 0.038813562 insert rho'0width:InterpolationWidths 47 0.040303652 insert rho'0width:InterpolationWidths 48 0.041814709 insert rho'0width:InterpolationWidths 49 0.043348491 insert rho'0width:InterpolationWidths 50 0.044903319 insert rho'0width:InterpolationWidths 51 0.046480422 insert rho'0width:InterpolationWidths 52 0.048081013 insert rho'0width:InterpolationWidths 53 0.049703601 insert rho'0width:InterpolationWidths 54 0.00053300338 insert rho'0width:InterpolationWidths 55 0.00065378923 insert rho'0width:InterpolationWidths 56 0.00079491675 insert rho'0width:InterpolationWidths 57 0.00095844924 insert rho'0width:InterpolationWidths 58 0.0011462633 insert rho'0width:InterpolationWidths 59 0.0013604144 insert rho'0width:InterpolationWidths 60 0.0016026178 insert rho'0width:InterpolationWidths 61 0.0018748565 insert rho'0width:InterpolationWidths 62 0.0021786853 insert rho'0width:InterpolationWidths 63 0.0025155911 insert rho'0width:InterpolationWidths 64 0.0028871232 insert rho'0width:InterpolationWidths 65 0.0032942622 insert rho'0width:InterpolationWidths 66 0.0037379469 insert rho'0width:InterpolationWidths 67 0.0042191909 insert rho'0width:InterpolationWidths 68 0.0047382686 insert rho'0width:InterpolationWidths 69 0.0052957644 insert rho'0width:InterpolationWidths 70 0.0058917256 insert rho'0width:InterpolationWidths 71 0.0065262383 insert rho'0width:InterpolationWidths 72 0.0071987502 insert rho'0width:InterpolationWidths 73 0.0079093869 insert rho'0width:InterpolationWidths 74 0.0086575928 insert rho'0width:InterpolationWidths 75 0.0094439351 insert rho'0width:InterpolationWidths 76 0.010263962 insert rho'0width:InterpolationWidths 77 0.011121409 insert rho'0width:InterpolationWidths 78 0.012014777 insert rho'0width:InterpolationWidths 79 0.012940216 insert rho'0width:InterpolationWidths 80 0.013901458 insert rho'0width:InterpolationWidths 81 0.014893633 insert rho'0width:InterpolationWidths 82 0.015918163 insert rho'0width:InterpolationWidths 83 0.01697343 insert rho'0width:InterpolationWidths 84 0.018060904 insert rho'0width:InterpolationWidths 85 0.019175737 insert rho'0width:InterpolationWidths 86 0.020318848 insert rho'0width:InterpolationWidths 87 0.021488411 insert rho'0width:InterpolationWidths 88 0.022683669 insert rho'0width:InterpolationWidths 89 0.023901304 insert rho'0width:InterpolationWidths 90 0.025145178 insert rho'0width:InterpolationWidths 91 0.026411635 insert rho'0width:InterpolationWidths 92 0.027699848 insert rho'0width:InterpolationWidths 93 0.02901101 insert rho'0width:InterpolationWidths 94 0.030344944 insert rho'0width:InterpolationWidths 95 0.031701051 insert rho'0width:InterpolationWidths 96 0.033079017 insert rho'0width:InterpolationWidths 97 0.03448027 insert rho'0width:InterpolationWidths 98 0.035901987 insert rho'0width:InterpolationWidths 99 0.037347167 insert rho'0width:InterpolationWidths 100 0.038813562 insert rho'0width:InterpolationWidths 101 0.040303652 insert rho'0width:InterpolationWidths 102 0.041814709 insert rho'0width:InterpolationWidths 103 0.043348491 insert rho'0width:InterpolationWidths 104 0.044903319 insert rho'0width:InterpolationWidths 105 0.046480422 insert rho'0width:InterpolationWidths 106 0.048081013 insert rho'0width:InterpolationWidths 107 0.049703601 insert rho'0width:InterpolationWidths 108 0.00015725022 insert rho'0width:InterpolationWidths 109 0.00020900009 insert rho'0width:InterpolationWidths 110 0.00027475164 insert rho'0width:InterpolationWidths 111 0.00035727322 insert rho'0width:InterpolationWidths 112 0.00045945794 insert rho'0width:InterpolationWidths 113 0.00058419171 insert rho'0width:InterpolationWidths 114 0.00073402614 insert rho'0width:InterpolationWidths 115 0.00091101328 insert rho'0width:InterpolationWidths 116 0.0011163673 insert rho'0width:InterpolationWidths 117 0.0013504839 insert rho'0width:InterpolationWidths 118 0.0016128521 insert rho'0width:InterpolationWidths 119 0.0019022611 insert rho'0width:InterpolationWidths 120 0.0022170594 insert rho'0width:InterpolationWidths 121 0.0025550802 insert rho'0width:InterpolationWidths 122 0.0029145593 insert rho'0width:InterpolationWidths 123 0.0032932671 insert rho'0width:InterpolationWidths 124 0.0036896099 insert rho'0width:InterpolationWidths 125 0.0041020969 insert rho'0width:InterpolationWidths 126 0.0045294236 insert rho'0width:InterpolationWidths 127 0.0049699519 insert rho'0width:InterpolationWidths 128 0.0054230254 insert rho'0width:InterpolationWidths 129 0.005888123 insert rho'0width:InterpolationWidths 130 0.0063642997 insert rho'0width:InterpolationWidths 131 0.0068511625 insert rho'0width:InterpolationWidths 132 0.0073481221 insert rho'0width:InterpolationWidths 133 0.0078548099 insert rho'0width:InterpolationWidths 134 0.0083711341 insert rho'0width:InterpolationWidths 135 0.0088967642 insert rho'0width:InterpolationWidths 136 0.0094317043 insert rho'0width:InterpolationWidths 137 0.0099753553 insert rho'0width:InterpolationWidths 138 0.010528801 insert rho'0width:InterpolationWidths 139 0.011088679 insert rho'0width:InterpolationWidths 140 0.011658498 insert rho'0width:InterpolationWidths 141 0.012236871 insert rho'0width:InterpolationWidths 142 0.012823749 insert rho'0width:InterpolationWidths 143 0.013419201 insert rho'0width:InterpolationWidths 144 0.014023182 insert rho'0width:InterpolationWidths 145 0.01463565 insert rho'0width:InterpolationWidths 146 0.01525667 insert rho'0width:InterpolationWidths 147 0.01588618 insert rho'0width:InterpolationWidths 148 0.016524236 insert rho'0width:InterpolationWidths 149 0.017170967 insert rho'0width:InterpolationWidths 150 0.017826331 insert rho'0width:InterpolationWidths 151 0.018490293 insert rho'0width:InterpolationWidths 152 0.019157512 insert rho'0width:InterpolationWidths 153 0.019801754 insert rho'0width:InterpolationWidths 154 0.020435592 insert rho'0width:InterpolationWidths 155 0.021063664 insert rho'0width:InterpolationWidths 156 0.021688095 insert rho'0width:InterpolationWidths 157 0.02231018 insert rho'0width:InterpolationWidths 158 0.022930811 insert rho'0width:InterpolationWidths 159 0.023550654 insert rho'0width:InterpolationWidths 160 0.024170229 insert rho'0width:InterpolationWidths 161 0.024789962 insert rho'0width:InterpolationWidths 162 4.2931665e-05 insert rho'0width:InterpolationWidths 163 6.222976e-05 insert rho'0width:InterpolationWidths 164 8.7824686e-05 insert rho'0width:InterpolationWidths 165 0.00012124705 insert rho'0width:InterpolationWidths 166 0.00016445938 insert rho'0width:InterpolationWidths 167 0.00021976471 insert rho'0width:InterpolationWidths 168 0.00028998756 insert rho'0width:InterpolationWidths 169 0.00037855548 insert rho'0width:InterpolationWidths 170 0.00048970922 insert rho'0width:InterpolationWidths 171 0.00062845572 insert rho'0width:InterpolationWidths 172 0.00080081836 insert rho'0width:InterpolationWidths 173 0.0010139908 insert rho'0width:InterpolationWidths 174 0.0012772198 insert rho'0width:InterpolationWidths 175 0.0015999109 insert rho'0width:InterpolationWidths 176 0.001995707 insert rho'0width:InterpolationWidths 177 0.0024771716 insert rho'0width:InterpolationWidths 178 0.0030604519 insert rho'0width:InterpolationWidths 179 0.0037624935 insert rho'0width:InterpolationWidths 180 0.0046019822 insert rho'0width:InterpolationWidths 181 0.0055973919 insert rho'0width:InterpolationWidths 182 0.0067698814 insert rho'0width:InterpolationWidths 183 0.0081293304 insert rho'0width:InterpolationWidths 184 0.0096996811 insert rho'0width:InterpolationWidths 185 0.011493599 insert rho'0width:InterpolationWidths 186 0.013521716 insert rho'0width:InterpolationWidths 187 0.01579806 insert rho'0width:InterpolationWidths 188 0.018330125 insert rho'0width:InterpolationWidths 189 0.021132282 insert rho'0width:InterpolationWidths 190 0.024191492 insert rho'0width:InterpolationWidths 191 0.027534411 insert rho'0width:InterpolationWidths 192 0.031157337 insert rho'0width:InterpolationWidths 193 0.035061073 insert rho'0width:InterpolationWidths 194 0.039253356 insert rho'0width:InterpolationWidths 195 0.043731652 insert rho'0width:InterpolationWidths 196 0.048500887 insert rho'0width:InterpolationWidths 197 0.053558882 insert rho'0width:InterpolationWidths 198 0.058908373 insert rho'0width:InterpolationWidths 199 0.064548559 insert rho'0width:InterpolationWidths 200 0.070476149 insert rho'0width:InterpolationWidths 201 0.076689721 insert rho'0width:InterpolationWidths 202 0.083194979 insert rho'0width:InterpolationWidths 203 0.089984073 insert rho'0width:InterpolationWidths 204 0.097055794 insert rho'0width:InterpolationWidths 205 0.10441199 insert rho'0width:InterpolationWidths 206 0.11204675 insert rho'0width:InterpolationWidths 207 0.11995644 insert rho'0width:InterpolationWidths 208 0.12812906 insert rho'0width:InterpolationWidths 209 0.136585 insert rho'0width:InterpolationWidths 210 0.14531041 insert rho'0width:InterpolationWidths 211 0.15431324 insert rho'0width:InterpolationWidths 212 0.16356673 insert rho'0width:InterpolationWidths 213 0.1730839 insert rho'0width:InterpolationWidths 214 0.18284951 insert rho'0width:InterpolationWidths 215 0.1928685 insert rho'0width:InterpolationWidths 216 4.2931665e-05 insert rho'0width:InterpolationWidths 217 6.222976e-05 insert rho'0width:InterpolationWidths 218 8.7824686e-05 insert rho'0width:InterpolationWidths 219 0.00012124705 insert rho'0width:InterpolationWidths 220 0.00016445938 insert rho'0width:InterpolationWidths 221 0.00021976471 insert rho'0width:InterpolationWidths 222 0.00028998756 insert rho'0width:InterpolationWidths 223 0.00037855548 insert rho'0width:InterpolationWidths 224 0.00048970922 insert rho'0width:InterpolationWidths 225 0.00062845572 insert rho'0width:InterpolationWidths 226 0.00080081836 insert rho'0width:InterpolationWidths 227 0.0010139908 insert rho'0width:InterpolationWidths 228 0.0012772198 insert rho'0width:InterpolationWidths 229 0.0015999109 insert rho'0width:InterpolationWidths 230 0.001995707 insert rho'0width:InterpolationWidths 231 0.0024771716 insert rho'0width:InterpolationWidths 232 0.0030604519 insert rho'0width:InterpolationWidths 233 0.0037624935 insert rho'0width:InterpolationWidths 234 0.0046019822 insert rho'0width:InterpolationWidths 235 0.0055973919 insert rho'0width:InterpolationWidths 236 0.0067698814 insert rho'0width:InterpolationWidths 237 0.0081293304 insert rho'0width:InterpolationWidths 238 0.0096996811 insert rho'0width:InterpolationWidths 239 0.011493599 insert rho'0width:InterpolationWidths 240 0.013521716 insert rho'0width:InterpolationWidths 241 0.01579806 insert rho'0width:InterpolationWidths 242 0.018330125 insert rho'0width:InterpolationWidths 243 0.021132282 insert rho'0width:InterpolationWidths 244 0.024191492 insert rho'0width:InterpolationWidths 245 0.027534411 insert rho'0width:InterpolationWidths 246 0.031157337 insert rho'0width:InterpolationWidths 247 0.035061073 insert rho'0width:InterpolationWidths 248 0.039253356 insert rho'0width:InterpolationWidths 249 0.043731652 insert rho'0width:InterpolationWidths 250 0.048500887 insert rho'0width:InterpolationWidths 251 0.053558882 insert rho'0width:InterpolationWidths 252 0.058908373 insert rho'0width:InterpolationWidths 253 0.064548559 insert rho'0width:InterpolationWidths 254 0.070476149 insert rho'0width:InterpolationWidths 255 0.076689721 insert rho'0width:InterpolationWidths 256 0.083194979 insert rho'0width:InterpolationWidths 257 0.089984073 insert rho'0width:InterpolationWidths 258 0.097055794 insert rho'0width:InterpolationWidths 259 0.10441199 insert rho'0width:InterpolationWidths 260 0.11204675 insert rho'0width:InterpolationWidths 261 0.11995644 insert rho'0width:InterpolationWidths 262 0.12812906 insert rho'0width:InterpolationWidths 263 0.136585 insert rho'0width:InterpolationWidths 264 0.14531041 insert rho'0width:InterpolationWidths 265 0.15431324 insert rho'0width:InterpolationWidths 266 0.16356673 insert rho'0width:InterpolationWidths 267 0.1730839 insert rho'0width:InterpolationWidths 268 0.18284951 insert rho'0width:InterpolationWidths 269 0.1928685 insert rho'0width:InterpolationWidths 270 8.6794671e-05 insert rho'0width:InterpolationWidths 271 0.00010876709 insert rho'0width:InterpolationWidths 272 0.00013605425 insert rho'0width:InterpolationWidths 273 0.0001698269 insert rho'0width:InterpolationWidths 274 0.00021145543 insert rho'0width:InterpolationWidths 275 0.00026253134 insert rho'0width:InterpolationWidths 276 0.00032489295 insert rho'0width:InterpolationWidths 277 0.00040065577 insert rho'0width:InterpolationWidths 278 0.00049224949 insert rho'0width:InterpolationWidths 279 0.00060246093 insert rho'0width:InterpolationWidths 280 0.00073448391 insert rho'0width:InterpolationWidths 281 0.00089197687 insert rho'0width:InterpolationWidths 282 0.0010791253 insert rho'0width:InterpolationWidths 283 0.0013007458 insert rho'0width:InterpolationWidths 284 0.001562319 insert rho'0width:InterpolationWidths 285 0.0018701484 insert rho'0width:InterpolationWidths 286 0.0022314461 insert rho'0width:InterpolationWidths 287 0.0026544728 insert rho'0width:InterpolationWidths 288 0.0031486827 insert rho'0width:InterpolationWidths 289 0.0037248906 insert rho'0width:InterpolationWidths 290 0.004395448 insert rho'0width:InterpolationWidths 291 0.0051744362 insert rho'0width:InterpolationWidths 292 0.0060778567 insert rho'0width:InterpolationWidths 293 0.0071238287 insert rho'0width:InterpolationWidths 294 0.0083327423 insert rho'0width:InterpolationWidths 295 0.009727376 insert rho'0width:InterpolationWidths 296 0.01133294 insert rho'0width:InterpolationWidths 297 0.013176977 insert rho'0width:InterpolationWidths 298 0.015289133 insert rho'0width:InterpolationWidths 299 0.017700703 insert rho'0width:InterpolationWidths 300 0.020443976 insert rho'0width:InterpolationWidths 301 0.023551383 insert rho'0width:InterpolationWidths 302 0.027054461 insert rho'0width:InterpolationWidths 303 0.030982783 insert rho'0width:InterpolationWidths 304 0.035362905 insert rho'0width:InterpolationWidths 305 0.040217498 insert rho'0width:InterpolationWidths 306 0.045564719 insert rho'0width:InterpolationWidths 307 0.051417902 insert rho'0width:InterpolationWidths 308 0.057785523 insert rho'0width:InterpolationWidths 309 0.064671423 insert rho'0width:InterpolationWidths 310 0.07207525 insert rho'0width:InterpolationWidths 311 0.07999296 insert rho'0width:InterpolationWidths 312 0.088417404 insert rho'0width:InterpolationWidths 313 0.097338908 insert rho'0width:InterpolationWidths 314 0.10674578 insert rho'0width:InterpolationWidths 315 0.11662481 insert rho'0width:InterpolationWidths 316 0.1269617 insert rho'0width:InterpolationWidths 317 0.13774139 insert rho'0width:InterpolationWidths 318 0.14894835 insert rho'0width:InterpolationWidths 319 0.16056686 insert rho'0width:InterpolationWidths 320 0.17258108 insert rho'0width:InterpolationWidths 321 0.18497528 insert rho'0width:InterpolationWidths 322 0.19773407 insert rho'0width:InterpolationWidths 323 0.21084249 insert rho'0width:InterpolationWidths 324 0.00080774434 insert rho'0width:InterpolationWidths 325 0.00097568766 insert rho'0width:InterpolationWidths 326 0.0011680183 insert rho'0width:InterpolationWidths 327 0.0013862697 insert rho'0width:InterpolationWidths 328 0.001631968 insert rho'0width:InterpolationWidths 329 0.0019066497 insert rho'0width:InterpolationWidths 330 0.0022118746 insert rho'0width:InterpolationWidths 331 0.0025492363 insert rho'0width:InterpolationWidths 332 0.0029203696 insert rho'0width:InterpolationWidths 333 0.0033269561 insert rho'0width:InterpolationWidths 334 0.0037707286 insert rho'0width:InterpolationWidths 335 0.0042534747 insert rho'0width:InterpolationWidths 336 0.0047770388 insert rho'0width:InterpolationWidths 337 0.0053433247 insert rho'0width:InterpolationWidths 338 0.0059542967 insert rho'0width:InterpolationWidths 339 0.0066119802 insert rho'0width:InterpolationWidths 340 0.0073184603 insert rho'0width:InterpolationWidths 341 0.008075891 insert rho'0width:InterpolationWidths 342 0.0088864772 insert rho'0width:InterpolationWidths 343 0.0097524911 insert rho'0width:InterpolationWidths 344 0.010676262 insert rho'0width:InterpolationWidths 345 0.011660182 insert rho'0width:InterpolationWidths 346 0.012706682 insert rho'0width:InterpolationWidths 347 0.013818264 insert rho'0width:InterpolationWidths 348 0.014997458 insert rho'0width:InterpolationWidths 349 0.01624686 insert rho'0width:InterpolationWidths 350 0.017569086 insert rho'0width:InterpolationWidths 351 0.018966781 insert rho'0width:InterpolationWidths 352 0.020442646 insert rho'0width:InterpolationWidths 353 0.021999363 insert rho'0width:InterpolationWidths 354 0.023639668 insert rho'0width:InterpolationWidths 355 0.025366271 insert rho'0width:InterpolationWidths 356 0.027181874 insert rho'0width:InterpolationWidths 357 0.029089205 insert rho'0width:InterpolationWidths 358 0.03110391 insert rho'0width:InterpolationWidths 359 0.033189691 insert rho'0width:InterpolationWidths 360 0.035388115 insert rho'0width:InterpolationWidths 361 0.037688745 insert rho'0width:InterpolationWidths 362 0.040093917 insert rho'0width:InterpolationWidths 363 0.042605605 insert rho'0width:InterpolationWidths 364 0.045225683 insert rho'0width:InterpolationWidths 365 0.047956328 insert rho'0width:InterpolationWidths 366 0.050799017 insert rho'0width:InterpolationWidths 367 0.053756066 insert rho'0width:InterpolationWidths 368 0.05682831 insert rho'0width:InterpolationWidths 369 0.060018238 insert rho'0width:InterpolationWidths 370 0.063326318 insert rho'0width:InterpolationWidths 371 0.066754236 insert rho'0width:InterpolationWidths 372 0.070303639 insert rho'0width:InterpolationWidths 373 0.073974129 insert rho'0width:InterpolationWidths 374 0.077767917 insert rho'0width:InterpolationWidths 375 0.081685394 insert rho'0width:InterpolationWidths 376 0.085726125 insert rho'0width:InterpolationWidths 377 0.089892155 insert rho'0width:NumberofEntries 0 54 insert rho'0width:NumberofEntries 1 108 insert rho'0width:NumberofEntries 2 162 insert rho'0width:NumberofEntries 3 216 insert rho'0width:NumberofEntries 4 270 insert rho'0width:NumberofEntries 5 270 insert rho'0width:NumberofEntries 6 324 insert rho'0width:NumberofEntries 7 378 newdef /Herwig/Particles/rho'0:Width_generator rho'0width # create Herwig::GenericWidthGenerator rho'+width newdef rho'+width:Particle /Herwig/Particles/rho'+ newdef rho'+width:Prefactor 0.9992 newdef rho'+width:BRNormalize 1 newdef rho'+width:BRMinimum 0.01 newdef rho'+width:Points 50 newdef rho'+width:InterpolationOrder 1 insert rho'+width:MEtype 0 2 insert rho'+width:MEtype 1 2 insert rho'+width:MEtype 2 2 insert rho'+width:MEtype 3 2 insert rho'+width:MEtype 4 2 insert rho'+width:MEtype 5 1 insert rho'+width:MEtype 6 2 insert rho'+width:MEtype 7 2 insert rho'+width:MEcode 0 0 insert rho'+width:MEcode 1 0 insert rho'+width:MEcode 2 0 insert rho'+width:MEcode 3 0 insert rho'+width:MEcode 4 0 insert rho'+width:MEcode 5 0 insert rho'+width:MEcode 6 0 insert rho'+width:MEcode 7 0 insert rho'+width:MEcoupling 0 0.989485 insert rho'+width:MEcoupling 1 1.00479 insert rho'+width:MEcoupling 2 1.00859 insert rho'+width:MEcoupling 3 0.974644 insert rho'+width:MEcoupling 4 1.01037 insert rho'+width:MEcoupling 5 2.08119 insert rho'+width:MEcoupling 6 0.970835 insert rho'+width:MEcoupling 7 0.998138 insert rho'+width:ModeOn 0 1 insert rho'+width:ModeOn 1 1 insert rho'+width:ModeOn 2 1 insert rho'+width:ModeOn 3 1 insert rho'+width:ModeOn 4 1 insert rho'+width:ModeOn 5 1 insert rho'+width:ModeOn 6 1 insert rho'+width:ModeOn 7 1 insert rho'+width:MinimumMasses 0 0.814978 insert rho'+width:MinimumMasses 1 0.81957 insert rho'+width:MinimumMasses 2 0.94957 insert rho'+width:MinimumMasses 3 1.03498 insert rho'+width:MinimumMasses 4 1.03957 insert rho'+width:MinimumMasses 5 0.274548 insert rho'+width:MinimumMasses 6 0.751 insert rho'+width:MinimumMasses 7 0.6855 insert rho'+width:MEmass1 0 1.24 insert rho'+width:MEmass1 1 1.24 insert rho'+width:MEmass1 2 1.17 insert rho'+width:MEmass1 3 0.134978 insert rho'+width:MEmass1 4 1.3 insert rho'+width:MEmass1 5 0.134978 insert rho'+width:MEmass1 6 0.7755 insert rho'+width:MEmass1 7 0.7755 insert rho'+width:MEmass2 0 0.134978 insert rho'+width:MEmass2 1 0.13957 insert rho'+width:MEmass2 2 0.13957 insert rho'+width:MEmass2 3 1.3 insert rho'+width:MEmass2 4 0.13957 insert rho'+width:MEmass2 5 0.13957 insert rho'+width:MEmass2 6 0.7755 insert rho'+width:MEmass2 7 0.86 insert rho'+width:DecayModes 0 rho'+->a_1+,pi0; insert rho'+width:DecayModes 1 rho'+->a_10,pi+; insert rho'+width:DecayModes 2 rho'+->h_1,pi+; insert rho'+width:DecayModes 3 rho'+->pi'+,pi0; insert rho'+width:DecayModes 4 rho'+->pi'0,pi+; insert rho'+width:DecayModes 5 rho'+->pi+,pi0; insert rho'+width:DecayModes 6 rho'+->rho+,rho0; insert rho'+width:DecayModes 7 rho'+->sigma,rho+; insert rho'+width:InterpolationMasses 0 1.141 insert rho'+width:InterpolationMasses 1 1.153 insert rho'+width:InterpolationMasses 2 1.165 insert rho'+width:InterpolationMasses 3 1.177 insert rho'+width:InterpolationMasses 4 1.189 insert rho'+width:InterpolationMasses 5 1.201 insert rho'+width:InterpolationMasses 6 1.213 insert rho'+width:InterpolationMasses 7 1.225 insert rho'+width:InterpolationMasses 8 1.237 insert rho'+width:InterpolationMasses 9 1.249 insert rho'+width:InterpolationMasses 10 1.261 insert rho'+width:InterpolationMasses 11 1.273 insert rho'+width:InterpolationMasses 12 1.285 insert rho'+width:InterpolationMasses 13 1.297 insert rho'+width:InterpolationMasses 14 1.309 insert rho'+width:InterpolationMasses 15 1.321 insert rho'+width:InterpolationMasses 16 1.333 insert rho'+width:InterpolationMasses 17 1.345 insert rho'+width:InterpolationMasses 18 1.357 insert rho'+width:InterpolationMasses 19 1.369 insert rho'+width:InterpolationMasses 20 1.381 insert rho'+width:InterpolationMasses 21 1.393 insert rho'+width:InterpolationMasses 22 1.405 insert rho'+width:InterpolationMasses 23 1.417 insert rho'+width:InterpolationMasses 24 1.429 insert rho'+width:InterpolationMasses 25 1.441 insert rho'+width:InterpolationMasses 26 1.453 insert rho'+width:InterpolationMasses 27 1.465 insert rho'+width:InterpolationMasses 28 1.477 insert rho'+width:InterpolationMasses 29 1.489 insert rho'+width:InterpolationMasses 30 1.501 insert rho'+width:InterpolationMasses 31 1.513 insert rho'+width:InterpolationMasses 32 1.525 insert rho'+width:InterpolationMasses 33 1.537 insert rho'+width:InterpolationMasses 34 1.549 insert rho'+width:InterpolationMasses 35 1.561 insert rho'+width:InterpolationMasses 36 1.573 insert rho'+width:InterpolationMasses 37 1.585 insert rho'+width:InterpolationMasses 38 1.597 insert rho'+width:InterpolationMasses 39 1.609 insert rho'+width:InterpolationMasses 40 1.621 insert rho'+width:InterpolationMasses 41 1.633 insert rho'+width:InterpolationMasses 42 1.645 insert rho'+width:InterpolationMasses 43 1.657 insert rho'+width:InterpolationMasses 44 1.669 insert rho'+width:InterpolationMasses 45 1.681 insert rho'+width:InterpolationMasses 46 1.693 insert rho'+width:InterpolationMasses 47 1.705 insert rho'+width:InterpolationMasses 48 1.717 insert rho'+width:InterpolationMasses 49 1.729 insert rho'+width:InterpolationMasses 50 1.741 insert rho'+width:InterpolationMasses 51 1.753 insert rho'+width:InterpolationMasses 52 1.765 insert rho'+width:InterpolationMasses 53 1.777 insert rho'+width:InterpolationMasses 54 1.141 insert rho'+width:InterpolationMasses 55 1.153 insert rho'+width:InterpolationMasses 56 1.165 insert rho'+width:InterpolationMasses 57 1.177 insert rho'+width:InterpolationMasses 58 1.189 insert rho'+width:InterpolationMasses 59 1.201 insert rho'+width:InterpolationMasses 60 1.213 insert rho'+width:InterpolationMasses 61 1.225 insert rho'+width:InterpolationMasses 62 1.237 insert rho'+width:InterpolationMasses 63 1.249 insert rho'+width:InterpolationMasses 64 1.261 insert rho'+width:InterpolationMasses 65 1.273 insert rho'+width:InterpolationMasses 66 1.285 insert rho'+width:InterpolationMasses 67 1.297 insert rho'+width:InterpolationMasses 68 1.309 insert rho'+width:InterpolationMasses 69 1.321 insert rho'+width:InterpolationMasses 70 1.333 insert rho'+width:InterpolationMasses 71 1.345 insert rho'+width:InterpolationMasses 72 1.357 insert rho'+width:InterpolationMasses 73 1.369 insert rho'+width:InterpolationMasses 74 1.381 insert rho'+width:InterpolationMasses 75 1.393 insert rho'+width:InterpolationMasses 76 1.405 insert rho'+width:InterpolationMasses 77 1.417 insert rho'+width:InterpolationMasses 78 1.429 insert rho'+width:InterpolationMasses 79 1.441 insert rho'+width:InterpolationMasses 80 1.453 insert rho'+width:InterpolationMasses 81 1.465 insert rho'+width:InterpolationMasses 82 1.477 insert rho'+width:InterpolationMasses 83 1.489 insert rho'+width:InterpolationMasses 84 1.501 insert rho'+width:InterpolationMasses 85 1.513 insert rho'+width:InterpolationMasses 86 1.525 insert rho'+width:InterpolationMasses 87 1.537 insert rho'+width:InterpolationMasses 88 1.549 insert rho'+width:InterpolationMasses 89 1.561 insert rho'+width:InterpolationMasses 90 1.573 insert rho'+width:InterpolationMasses 91 1.585 insert rho'+width:InterpolationMasses 92 1.597 insert rho'+width:InterpolationMasses 93 1.609 insert rho'+width:InterpolationMasses 94 1.621 insert rho'+width:InterpolationMasses 95 1.633 insert rho'+width:InterpolationMasses 96 1.645 insert rho'+width:InterpolationMasses 97 1.657 insert rho'+width:InterpolationMasses 98 1.669 insert rho'+width:InterpolationMasses 99 1.681 insert rho'+width:InterpolationMasses 100 1.693 insert rho'+width:InterpolationMasses 101 1.705 insert rho'+width:InterpolationMasses 102 1.717 insert rho'+width:InterpolationMasses 103 1.729 insert rho'+width:InterpolationMasses 104 1.741 insert rho'+width:InterpolationMasses 105 1.753 insert rho'+width:InterpolationMasses 106 1.765 insert rho'+width:InterpolationMasses 107 1.777 insert rho'+width:InterpolationMasses 108 1.141 insert rho'+width:InterpolationMasses 109 1.153 insert rho'+width:InterpolationMasses 110 1.165 insert rho'+width:InterpolationMasses 111 1.177 insert rho'+width:InterpolationMasses 112 1.189 insert rho'+width:InterpolationMasses 113 1.201 insert rho'+width:InterpolationMasses 114 1.213 insert rho'+width:InterpolationMasses 115 1.225 insert rho'+width:InterpolationMasses 116 1.237 insert rho'+width:InterpolationMasses 117 1.249 insert rho'+width:InterpolationMasses 118 1.261 insert rho'+width:InterpolationMasses 119 1.273 insert rho'+width:InterpolationMasses 120 1.285 insert rho'+width:InterpolationMasses 121 1.297 insert rho'+width:InterpolationMasses 122 1.309 insert rho'+width:InterpolationMasses 123 1.321 insert rho'+width:InterpolationMasses 124 1.333 insert rho'+width:InterpolationMasses 125 1.345 insert rho'+width:InterpolationMasses 126 1.357 insert rho'+width:InterpolationMasses 127 1.369 insert rho'+width:InterpolationMasses 128 1.381 insert rho'+width:InterpolationMasses 129 1.393 insert rho'+width:InterpolationMasses 130 1.405 insert rho'+width:InterpolationMasses 131 1.417 insert rho'+width:InterpolationMasses 132 1.429 insert rho'+width:InterpolationMasses 133 1.441 insert rho'+width:InterpolationMasses 134 1.453 insert rho'+width:InterpolationMasses 135 1.465 insert rho'+width:InterpolationMasses 136 1.477 insert rho'+width:InterpolationMasses 137 1.489 insert rho'+width:InterpolationMasses 138 1.501 insert rho'+width:InterpolationMasses 139 1.513 insert rho'+width:InterpolationMasses 140 1.525 insert rho'+width:InterpolationMasses 141 1.537 insert rho'+width:InterpolationMasses 142 1.549 insert rho'+width:InterpolationMasses 143 1.561 insert rho'+width:InterpolationMasses 144 1.573 insert rho'+width:InterpolationMasses 145 1.585 insert rho'+width:InterpolationMasses 146 1.597 insert rho'+width:InterpolationMasses 147 1.609 insert rho'+width:InterpolationMasses 148 1.621 insert rho'+width:InterpolationMasses 149 1.633 insert rho'+width:InterpolationMasses 150 1.645 insert rho'+width:InterpolationMasses 151 1.657 insert rho'+width:InterpolationMasses 152 1.669 insert rho'+width:InterpolationMasses 153 1.681 insert rho'+width:InterpolationMasses 154 1.693 insert rho'+width:InterpolationMasses 155 1.705 insert rho'+width:InterpolationMasses 156 1.717 insert rho'+width:InterpolationMasses 157 1.729 insert rho'+width:InterpolationMasses 158 1.741 insert rho'+width:InterpolationMasses 159 1.753 insert rho'+width:InterpolationMasses 160 1.765 insert rho'+width:InterpolationMasses 161 1.777 insert rho'+width:InterpolationMasses 162 1.141 insert rho'+width:InterpolationMasses 163 1.153 insert rho'+width:InterpolationMasses 164 1.165 insert rho'+width:InterpolationMasses 165 1.177 insert rho'+width:InterpolationMasses 166 1.189 insert rho'+width:InterpolationMasses 167 1.201 insert rho'+width:InterpolationMasses 168 1.213 insert rho'+width:InterpolationMasses 169 1.225 insert rho'+width:InterpolationMasses 170 1.237 insert rho'+width:InterpolationMasses 171 1.249 insert rho'+width:InterpolationMasses 172 1.261 insert rho'+width:InterpolationMasses 173 1.273 insert rho'+width:InterpolationMasses 174 1.285 insert rho'+width:InterpolationMasses 175 1.297 insert rho'+width:InterpolationMasses 176 1.309 insert rho'+width:InterpolationMasses 177 1.321 insert rho'+width:InterpolationMasses 178 1.333 insert rho'+width:InterpolationMasses 179 1.345 insert rho'+width:InterpolationMasses 180 1.357 insert rho'+width:InterpolationMasses 181 1.369 insert rho'+width:InterpolationMasses 182 1.381 insert rho'+width:InterpolationMasses 183 1.393 insert rho'+width:InterpolationMasses 184 1.405 insert rho'+width:InterpolationMasses 185 1.417 insert rho'+width:InterpolationMasses 186 1.429 insert rho'+width:InterpolationMasses 187 1.441 insert rho'+width:InterpolationMasses 188 1.453 insert rho'+width:InterpolationMasses 189 1.465 insert rho'+width:InterpolationMasses 190 1.477 insert rho'+width:InterpolationMasses 191 1.489 insert rho'+width:InterpolationMasses 192 1.501 insert rho'+width:InterpolationMasses 193 1.513 insert rho'+width:InterpolationMasses 194 1.525 insert rho'+width:InterpolationMasses 195 1.537 insert rho'+width:InterpolationMasses 196 1.549 insert rho'+width:InterpolationMasses 197 1.561 insert rho'+width:InterpolationMasses 198 1.573 insert rho'+width:InterpolationMasses 199 1.585 insert rho'+width:InterpolationMasses 200 1.597 insert rho'+width:InterpolationMasses 201 1.609 insert rho'+width:InterpolationMasses 202 1.621 insert rho'+width:InterpolationMasses 203 1.633 insert rho'+width:InterpolationMasses 204 1.645 insert rho'+width:InterpolationMasses 205 1.657 insert rho'+width:InterpolationMasses 206 1.669 insert rho'+width:InterpolationMasses 207 1.681 insert rho'+width:InterpolationMasses 208 1.693 insert rho'+width:InterpolationMasses 209 1.705 insert rho'+width:InterpolationMasses 210 1.717 insert rho'+width:InterpolationMasses 211 1.729 insert rho'+width:InterpolationMasses 212 1.741 insert rho'+width:InterpolationMasses 213 1.753 insert rho'+width:InterpolationMasses 214 1.765 insert rho'+width:InterpolationMasses 215 1.777 insert rho'+width:InterpolationMasses 216 1.141 insert rho'+width:InterpolationMasses 217 1.153 insert rho'+width:InterpolationMasses 218 1.165 insert rho'+width:InterpolationMasses 219 1.177 insert rho'+width:InterpolationMasses 220 1.189 insert rho'+width:InterpolationMasses 221 1.201 insert rho'+width:InterpolationMasses 222 1.213 insert rho'+width:InterpolationMasses 223 1.225 insert rho'+width:InterpolationMasses 224 1.237 insert rho'+width:InterpolationMasses 225 1.249 insert rho'+width:InterpolationMasses 226 1.261 insert rho'+width:InterpolationMasses 227 1.273 insert rho'+width:InterpolationMasses 228 1.285 insert rho'+width:InterpolationMasses 229 1.297 insert rho'+width:InterpolationMasses 230 1.309 insert rho'+width:InterpolationMasses 231 1.321 insert rho'+width:InterpolationMasses 232 1.333 insert rho'+width:InterpolationMasses 233 1.345 insert rho'+width:InterpolationMasses 234 1.357 insert rho'+width:InterpolationMasses 235 1.369 insert rho'+width:InterpolationMasses 236 1.381 insert rho'+width:InterpolationMasses 237 1.393 insert rho'+width:InterpolationMasses 238 1.405 insert rho'+width:InterpolationMasses 239 1.417 insert rho'+width:InterpolationMasses 240 1.429 insert rho'+width:InterpolationMasses 241 1.441 insert rho'+width:InterpolationMasses 242 1.453 insert rho'+width:InterpolationMasses 243 1.465 insert rho'+width:InterpolationMasses 244 1.477 insert rho'+width:InterpolationMasses 245 1.489 insert rho'+width:InterpolationMasses 246 1.501 insert rho'+width:InterpolationMasses 247 1.513 insert rho'+width:InterpolationMasses 248 1.525 insert rho'+width:InterpolationMasses 249 1.537 insert rho'+width:InterpolationMasses 250 1.549 insert rho'+width:InterpolationMasses 251 1.561 insert rho'+width:InterpolationMasses 252 1.573 insert rho'+width:InterpolationMasses 253 1.585 insert rho'+width:InterpolationMasses 254 1.597 insert rho'+width:InterpolationMasses 255 1.609 insert rho'+width:InterpolationMasses 256 1.621 insert rho'+width:InterpolationMasses 257 1.633 insert rho'+width:InterpolationMasses 258 1.645 insert rho'+width:InterpolationMasses 259 1.657 insert rho'+width:InterpolationMasses 260 1.669 insert rho'+width:InterpolationMasses 261 1.681 insert rho'+width:InterpolationMasses 262 1.693 insert rho'+width:InterpolationMasses 263 1.705 insert rho'+width:InterpolationMasses 264 1.717 insert rho'+width:InterpolationMasses 265 1.729 insert rho'+width:InterpolationMasses 266 1.741 insert rho'+width:InterpolationMasses 267 1.753 insert rho'+width:InterpolationMasses 268 1.765 insert rho'+width:InterpolationMasses 269 1.777 insert rho'+width:InterpolationMasses 270 1.141 insert rho'+width:InterpolationMasses 271 1.153 insert rho'+width:InterpolationMasses 272 1.165 insert rho'+width:InterpolationMasses 273 1.177 insert rho'+width:InterpolationMasses 274 1.189 insert rho'+width:InterpolationMasses 275 1.201 insert rho'+width:InterpolationMasses 276 1.213 insert rho'+width:InterpolationMasses 277 1.225 insert rho'+width:InterpolationMasses 278 1.237 insert rho'+width:InterpolationMasses 279 1.249 insert rho'+width:InterpolationMasses 280 1.261 insert rho'+width:InterpolationMasses 281 1.273 insert rho'+width:InterpolationMasses 282 1.285 insert rho'+width:InterpolationMasses 283 1.297 insert rho'+width:InterpolationMasses 284 1.309 insert rho'+width:InterpolationMasses 285 1.321 insert rho'+width:InterpolationMasses 286 1.333 insert rho'+width:InterpolationMasses 287 1.345 insert rho'+width:InterpolationMasses 288 1.357 insert rho'+width:InterpolationMasses 289 1.369 insert rho'+width:InterpolationMasses 290 1.381 insert rho'+width:InterpolationMasses 291 1.393 insert rho'+width:InterpolationMasses 292 1.405 insert rho'+width:InterpolationMasses 293 1.417 insert rho'+width:InterpolationMasses 294 1.429 insert rho'+width:InterpolationMasses 295 1.441 insert rho'+width:InterpolationMasses 296 1.453 insert rho'+width:InterpolationMasses 297 1.465 insert rho'+width:InterpolationMasses 298 1.477 insert rho'+width:InterpolationMasses 299 1.489 insert rho'+width:InterpolationMasses 300 1.501 insert rho'+width:InterpolationMasses 301 1.513 insert rho'+width:InterpolationMasses 302 1.525 insert rho'+width:InterpolationMasses 303 1.537 insert rho'+width:InterpolationMasses 304 1.549 insert rho'+width:InterpolationMasses 305 1.561 insert rho'+width:InterpolationMasses 306 1.573 insert rho'+width:InterpolationMasses 307 1.585 insert rho'+width:InterpolationMasses 308 1.597 insert rho'+width:InterpolationMasses 309 1.609 insert rho'+width:InterpolationMasses 310 1.621 insert rho'+width:InterpolationMasses 311 1.633 insert rho'+width:InterpolationMasses 312 1.645 insert rho'+width:InterpolationMasses 313 1.657 insert rho'+width:InterpolationMasses 314 1.669 insert rho'+width:InterpolationMasses 315 1.681 insert rho'+width:InterpolationMasses 316 1.693 insert rho'+width:InterpolationMasses 317 1.705 insert rho'+width:InterpolationMasses 318 1.717 insert rho'+width:InterpolationMasses 319 1.729 insert rho'+width:InterpolationMasses 320 1.741 insert rho'+width:InterpolationMasses 321 1.753 insert rho'+width:InterpolationMasses 322 1.765 insert rho'+width:InterpolationMasses 323 1.777 insert rho'+width:InterpolationMasses 324 1.141 insert rho'+width:InterpolationMasses 325 1.153 insert rho'+width:InterpolationMasses 326 1.165 insert rho'+width:InterpolationMasses 327 1.177 insert rho'+width:InterpolationMasses 328 1.189 insert rho'+width:InterpolationMasses 329 1.201 insert rho'+width:InterpolationMasses 330 1.213 insert rho'+width:InterpolationMasses 331 1.225 insert rho'+width:InterpolationMasses 332 1.237 insert rho'+width:InterpolationMasses 333 1.249 insert rho'+width:InterpolationMasses 334 1.261 insert rho'+width:InterpolationMasses 335 1.273 insert rho'+width:InterpolationMasses 336 1.285 insert rho'+width:InterpolationMasses 337 1.297 insert rho'+width:InterpolationMasses 338 1.309 insert rho'+width:InterpolationMasses 339 1.321 insert rho'+width:InterpolationMasses 340 1.333 insert rho'+width:InterpolationMasses 341 1.345 insert rho'+width:InterpolationMasses 342 1.357 insert rho'+width:InterpolationMasses 343 1.369 insert rho'+width:InterpolationMasses 344 1.381 insert rho'+width:InterpolationMasses 345 1.393 insert rho'+width:InterpolationMasses 346 1.405 insert rho'+width:InterpolationMasses 347 1.417 insert rho'+width:InterpolationMasses 348 1.429 insert rho'+width:InterpolationMasses 349 1.441 insert rho'+width:InterpolationMasses 350 1.453 insert rho'+width:InterpolationMasses 351 1.465 insert rho'+width:InterpolationMasses 352 1.477 insert rho'+width:InterpolationMasses 353 1.489 insert rho'+width:InterpolationMasses 354 1.501 insert rho'+width:InterpolationMasses 355 1.513 insert rho'+width:InterpolationMasses 356 1.525 insert rho'+width:InterpolationMasses 357 1.537 insert rho'+width:InterpolationMasses 358 1.549 insert rho'+width:InterpolationMasses 359 1.561 insert rho'+width:InterpolationMasses 360 1.573 insert rho'+width:InterpolationMasses 361 1.585 insert rho'+width:InterpolationMasses 362 1.597 insert rho'+width:InterpolationMasses 363 1.609 insert rho'+width:InterpolationMasses 364 1.621 insert rho'+width:InterpolationMasses 365 1.633 insert rho'+width:InterpolationMasses 366 1.645 insert rho'+width:InterpolationMasses 367 1.657 insert rho'+width:InterpolationMasses 368 1.669 insert rho'+width:InterpolationMasses 369 1.681 insert rho'+width:InterpolationMasses 370 1.693 insert rho'+width:InterpolationMasses 371 1.705 insert rho'+width:InterpolationMasses 372 1.717 insert rho'+width:InterpolationMasses 373 1.729 insert rho'+width:InterpolationMasses 374 1.741 insert rho'+width:InterpolationMasses 375 1.753 insert rho'+width:InterpolationMasses 376 1.765 insert rho'+width:InterpolationMasses 377 1.777 insert rho'+width:InterpolationWidths 0 0.00057022324 insert rho'+width:InterpolationWidths 1 0.00069714593 insert rho'+width:InterpolationWidths 2 0.00084495132 insert rho'+width:InterpolationWidths 3 0.0010156051 insert rho'+width:InterpolationWidths 4 0.0012111515 insert rho'+width:InterpolationWidths 5 0.0014333344 insert rho'+width:InterpolationWidths 6 0.0016841319 insert rho'+width:InterpolationWidths 7 0.0019652043 insert rho'+width:InterpolationWidths 8 0.0022781631 insert rho'+width:InterpolationWidths 9 0.0026246007 insert rho'+width:InterpolationWidths 10 0.0030057716 insert rho'+width:InterpolationWidths 11 0.0034224458 insert rho'+width:InterpolationWidths 12 0.0038759354 insert rho'+width:InterpolationWidths 13 0.0043671208 insert rho'+width:InterpolationWidths 14 0.0048954413 insert rho'+width:InterpolationWidths 15 0.0054619689 insert rho'+width:InterpolationWidths 16 0.0060671429 insert rho'+width:InterpolationWidths 17 0.0067099319 insert rho'+width:InterpolationWidths 18 0.0073907762 insert rho'+width:InterpolationWidths 19 0.0081095878 insert rho'+width:InterpolationWidths 20 0.008865258 insert rho'+width:InterpolationWidths 21 0.0096586762 insert rho'+width:InterpolationWidths 22 0.010485866 insert rho'+width:InterpolationWidths 23 0.011349238 insert rho'+width:InterpolationWidths 24 0.01224727 insert rho'+width:InterpolationWidths 25 0.013179385 insert rho'+width:InterpolationWidths 26 0.014144994 insert rho'+width:InterpolationWidths 27 0.01514156 insert rho'+width:InterpolationWidths 28 0.016170652 insert rho'+width:InterpolationWidths 29 0.017230018 insert rho'+width:InterpolationWidths 30 0.018320111 insert rho'+width:InterpolationWidths 31 0.019437995 insert rho'+width:InterpolationWidths 32 0.020582788 insert rho'+width:InterpolationWidths 33 0.021753676 insert rho'+width:InterpolationWidths 34 0.022950478 insert rho'+width:InterpolationWidths 35 0.02416895 insert rho'+width:InterpolationWidths 36 0.025414732 insert rho'+width:InterpolationWidths 37 0.026680377 insert rho'+width:InterpolationWidths 38 0.027969545 insert rho'+width:InterpolationWidths 39 0.029281427 insert rho'+width:InterpolationWidths 40 0.030615501 insert rho'+width:InterpolationWidths 41 0.031971854 insert rho'+width:InterpolationWidths 42 0.033350185 insert rho'+width:InterpolationWidths 43 0.03475198 insert rho'+width:InterpolationWidths 44 0.036173942 insert rho'+width:InterpolationWidths 45 0.037619417 insert rho'+width:InterpolationWidths 46 0.039086739 insert rho'+width:InterpolationWidths 47 0.040576895 insert rho'+width:InterpolationWidths 48 0.042088634 insert rho'+width:InterpolationWidths 49 0.043622245 insert rho'+width:InterpolationWidths 50 0.045177357 insert rho'+width:InterpolationWidths 51 0.046755624 insert rho'+width:InterpolationWidths 52 0.048356444 insert rho'+width:InterpolationWidths 53 0.049979646 insert rho'+width:InterpolationWidths 54 0.00054107096 insert rho'+width:InterpolationWidths 55 0.00066277918 insert rho'+width:InterpolationWidths 56 0.00080481296 insert rho'+width:InterpolationWidths 57 0.00096922658 insert rho'+width:InterpolationWidths 58 0.0011578855 insert rho'+width:InterpolationWidths 59 0.0013728375 insert rho'+width:InterpolationWidths 60 0.0016157856 insert rho'+width:InterpolationWidths 61 0.0018887275 insert rho'+width:InterpolationWidths 62 0.0021932003 insert rho'+width:InterpolationWidths 63 0.0025306934 insert rho'+width:InterpolationWidths 64 0.002902765 insert rho'+width:InterpolationWidths 65 0.0033103981 insert rho'+width:InterpolationWidths 66 0.0037545429 insert rho'+width:InterpolationWidths 67 0.0042362113 insert rho'+width:InterpolationWidths 68 0.0047556885 insert rho'+width:InterpolationWidths 69 0.0053135691 insert rho'+width:InterpolationWidths 70 0.0059099306 insert rho'+width:InterpolationWidths 71 0.0065448496 insert rho'+width:InterpolationWidths 72 0.0072177143 insert rho'+width:InterpolationWidths 73 0.0079287513 insert rho'+width:InterpolationWidths 74 0.0086773842 insert rho'+width:InterpolationWidths 75 0.0094641522 insert rho'+width:InterpolationWidths 76 0.010284733 insert rho'+width:InterpolationWidths 77 0.011142633 insert rho'+width:InterpolationWidths 78 0.012036515 insert rho'+width:InterpolationWidths 79 0.012962557 insert rho'+width:InterpolationWidths 80 0.013923632 insert rho'+width:InterpolationWidths 81 0.014917299 insert rho'+width:InterpolationWidths 82 0.015942386 insert rho'+width:InterpolationWidths 83 0.016998593 insert rho'+width:InterpolationWidths 84 0.018086036 insert rho'+width:InterpolationWidths 85 0.019202073 insert rho'+width:InterpolationWidths 86 0.020345952 insert rho'+width:InterpolationWidths 87 0.021516239 insert rho'+width:InterpolationWidths 88 0.022712262 insert rho'+width:InterpolationWidths 89 0.023930806 insert rho'+width:InterpolationWidths 90 0.025175097 insert rho'+width:InterpolationWidths 91 0.026442702 insert rho'+width:InterpolationWidths 92 0.027731827 insert rho'+width:InterpolationWidths 93 0.029043899 insert rho'+width:InterpolationWidths 94 0.030378637 insert rho'+width:InterpolationWidths 95 0.031735903 insert rho'+width:InterpolationWidths 96 0.033114061 insert rho'+width:InterpolationWidths 97 0.034516192 insert rho'+width:InterpolationWidths 98 0.035939266 insert rho'+width:InterpolationWidths 99 0.037385394 insert rho'+width:InterpolationWidths 100 0.038852723 insert rho'+width:InterpolationWidths 101 0.040343819 insert rho'+width:InterpolationWidths 102 0.041855845 insert rho'+width:InterpolationWidths 103 0.043390276 insert rho'+width:InterpolationWidths 104 0.044946178 insert rho'+width:InterpolationWidths 105 0.046524709 insert rho'+width:InterpolationWidths 106 0.048125924 insert rho'+width:InterpolationWidths 107 0.049749748 insert rho'+width:InterpolationWidths 108 0.00014236074 insert rho'+width:InterpolationWidths 109 0.00019000608 insert rho'+width:InterpolationWidths 110 0.00025081643 insert rho'+width:InterpolationWidths 111 0.00032749805 insert rho'+width:InterpolationWidths 112 0.00042294341 insert rho'+width:InterpolationWidths 113 0.00054010017 insert rho'+width:InterpolationWidths 114 0.00068171258 insert rho'+width:InterpolationWidths 115 0.00085005347 insert rho'+width:InterpolationWidths 116 0.0010466798 insert rho'+width:InterpolationWidths 117 0.0012723462 insert rho'+width:InterpolationWidths 118 0.0015268617 insert rho'+width:InterpolationWidths 119 0.0018091153 insert rho'+width:InterpolationWidths 120 0.0021176366 insert rho'+width:InterpolationWidths 121 0.0024504568 insert rho'+width:InterpolationWidths 122 0.00280561 insert rho'+width:InterpolationWidths 123 0.0031807998 insert rho'+width:InterpolationWidths 124 0.0035745004 insert rho'+width:InterpolationWidths 125 0.0039847505 insert rho'+width:InterpolationWidths 126 0.0044102661 insert rho'+width:InterpolationWidths 127 0.0048498243 insert rho'+width:InterpolationWidths 128 0.0053018654 insert rho'+width:InterpolationWidths 129 0.0057665262 insert rho'+width:InterpolationWidths 130 0.0062422971 insert rho'+width:InterpolationWidths 131 0.0067289533 insert rho'+width:InterpolationWidths 132 0.0072258807 insert rho'+width:InterpolationWidths 133 0.0077326374 insert rho'+width:InterpolationWidths 134 0.0082490708 insert rho'+width:InterpolationWidths 135 0.0087748617 insert rho'+width:InterpolationWidths 136 0.0093098213 insert rho'+width:InterpolationWidths 137 0.009853931 insert rho'+width:InterpolationWidths 138 0.010406393 insert rho'+width:InterpolationWidths 139 0.010967797 insert rho'+width:InterpolationWidths 140 0.011537925 insert rho'+width:InterpolationWidths 141 0.012116592 insert rho'+width:InterpolationWidths 142 0.012703771 insert rho'+width:InterpolationWidths 143 0.013299471 insert rho'+width:InterpolationWidths 144 0.0139037 insert rho'+width:InterpolationWidths 145 0.014516402 insert rho'+width:InterpolationWidths 146 0.015137629 insert rho'+width:InterpolationWidths 147 0.015767412 insert rho'+width:InterpolationWidths 148 0.016405615 insert rho'+width:InterpolationWidths 149 0.01705247 insert rho'+width:InterpolationWidths 150 0.017708003 insert rho'+width:InterpolationWidths 151 0.018372127 insert rho'+width:InterpolationWidths 152 0.019044821 insert rho'+width:InterpolationWidths 153 0.019700319 insert rho'+width:InterpolationWidths 154 0.020340037 insert rho'+width:InterpolationWidths 155 0.020972523 insert rho'+width:InterpolationWidths 156 0.021600557 insert rho'+width:InterpolationWidths 157 0.022225703 insert rho'+width:InterpolationWidths 158 0.022849001 insert rho'+width:InterpolationWidths 159 0.023471206 insert rho'+width:InterpolationWidths 160 0.024092898 insert rho'+width:InterpolationWidths 161 0.024714546 insert rho'+width:InterpolationWidths 162 4.8350252e-05 insert rho'+width:InterpolationWidths 163 6.9352961e-05 insert rho'+width:InterpolationWidths 164 9.7048162e-05 insert rho'+width:InterpolationWidths 165 0.00013309797 insert rho'+width:InterpolationWidths 166 0.00017950113 insert rho'+width:InterpolationWidths 167 0.00023873718 insert rho'+width:InterpolationWidths 168 0.00031377494 insert rho'+width:InterpolationWidths 169 0.00040824288 insert rho'+width:InterpolationWidths 170 0.00052652337 insert rho'+width:InterpolationWidths 171 0.00067393119 insert rho'+width:InterpolationWidths 172 0.00085683225 insert rho'+width:InterpolationWidths 173 0.0010829637 insert rho'+width:InterpolationWidths 174 0.001361299 insert rho'+width:InterpolationWidths 175 0.0017028762 insert rho'+width:InterpolationWidths 176 0.002119399 insert rho'+width:InterpolationWidths 177 0.0026272243 insert rho'+width:InterpolationWidths 178 0.0032403387 insert rho'+width:InterpolationWidths 179 0.003976074 insert rho'+width:InterpolationWidths 180 0.0048536184 insert rho'+width:InterpolationWidths 181 0.0058912147 insert rho'+width:InterpolationWidths 182 0.0071067165 insert rho'+width:InterpolationWidths 183 0.0085172051 insert rho'+width:InterpolationWidths 184 0.010131727 insert rho'+width:InterpolationWidths 185 0.011982501 insert rho'+width:InterpolationWidths 186 0.014064214 insert rho'+width:InterpolationWidths 187 0.016392335 insert rho'+width:InterpolationWidths 188 0.018975967 insert rho'+width:InterpolationWidths 189 0.021821393 insert rho'+width:InterpolationWidths 190 0.024938218 insert rho'+width:InterpolationWidths 191 0.028332754 insert rho'+width:InterpolationWidths 192 0.032001122 insert rho'+width:InterpolationWidths 193 0.035952865 insert rho'+width:InterpolationWidths 194 0.040188986 insert rho'+width:InterpolationWidths 195 0.044709803 insert rho'+width:InterpolationWidths 196 0.049531822 insert rho'+width:InterpolationWidths 197 0.054619776 insert rho'+width:InterpolationWidths 198 0.060008981 insert rho'+width:InterpolationWidths 199 0.065683588 insert rho'+width:InterpolationWidths 200 0.071649991 insert rho'+width:InterpolationWidths 201 0.077899974 insert rho'+width:InterpolationWidths 202 0.084437619 insert rho'+width:InterpolationWidths 203 0.091258282 insert rho'+width:InterpolationWidths 204 0.098361496 insert rho'+width:InterpolationWidths 205 0.10574508 insert rho'+width:InterpolationWidths 206 0.1134081 insert rho'+width:InterpolationWidths 207 0.12134548 insert rho'+width:InterpolationWidths 208 0.12954422 insert rho'+width:InterpolationWidths 209 0.13802549 insert rho'+width:InterpolationWidths 210 0.14678719 insert rho'+width:InterpolationWidths 211 0.15579955 insert rho'+width:InterpolationWidths 212 0.16507532 insert rho'+width:InterpolationWidths 213 0.17461209 insert rho'+width:InterpolationWidths 214 0.18439789 insert rho'+width:InterpolationWidths 215 0.19443799 insert rho'+width:InterpolationWidths 216 4.2438124e-05 insert rho'+width:InterpolationWidths 217 6.1530387e-05 insert rho'+width:InterpolationWidths 218 8.6863115e-05 insert rho'+width:InterpolationWidths 219 0.00011995671 insert rho'+width:InterpolationWidths 220 0.00016276402 insert rho'+width:InterpolationWidths 221 0.00021757659 insert rho'+width:InterpolationWidths 222 0.00028720695 insert rho'+width:InterpolationWidths 223 0.00037506974 insert rho'+width:InterpolationWidths 224 0.00048539285 insert rho'+width:InterpolationWidths 225 0.00062316929 insert rho'+width:InterpolationWidths 226 0.00079440871 insert rho'+width:InterpolationWidths 227 0.0010062914 insert rho'+width:InterpolationWidths 228 0.0012680553 insert rho'+width:InterpolationWidths 229 0.0015890962 insert rho'+width:InterpolationWidths 230 0.0019830478 insert rho'+width:InterpolationWidths 231 0.0024624801 insert rho'+width:InterpolationWidths 232 0.0030435426 insert rho'+width:InterpolationWidths 233 0.0037431923 insert rho'+width:InterpolationWidths 234 0.0045801332 insert rho'+width:InterpolationWidths 235 0.0055728569 insert rho'+width:InterpolationWidths 236 0.0067425591 insert rho'+width:InterpolationWidths 237 0.0080990863 insert rho'+width:InterpolationWidths 238 0.0096664433 insert rho'+width:InterpolationWidths 239 0.011457292 insert rho'+width:InterpolationWidths 240 0.013482261 insert rho'+width:InterpolationWidths 241 0.015755387 insert rho'+width:InterpolationWidths 242 0.018284162 insert rho'+width:InterpolationWidths 243 0.021082984 insert rho'+width:InterpolationWidths 244 0.024138716 insert rho'+width:InterpolationWidths 245 0.027478116 insert rho'+width:InterpolationWidths 246 0.031097446 insert rho'+width:InterpolationWidths 247 0.034997473 insert rho'+width:InterpolationWidths 248 0.039185971 insert rho'+width:InterpolationWidths 249 0.043660379 insert rho'+width:InterpolationWidths 250 0.048425639 insert rho'+width:InterpolationWidths 251 0.053479552 insert rho'+width:InterpolationWidths 252 0.058824868 insert rho'+width:InterpolationWidths 253 0.064460774 insert rho'+width:InterpolationWidths 254 0.07038397 insert rho'+width:InterpolationWidths 255 0.076593021 insert rho'+width:InterpolationWidths 256 0.08309368 insert rho'+width:InterpolationWidths 257 0.089878041 insert rho'+width:InterpolationWidths 258 0.096944918 insert rho'+width:InterpolationWidths 259 0.10429617 insert rho'+width:InterpolationWidths 260 0.11192584 insert rho'+width:InterpolationWidths 261 0.11983036 insert rho'+width:InterpolationWidths 262 0.12799762 insert rho'+width:InterpolationWidths 263 0.13644812 insert rho'+width:InterpolationWidths 264 0.14516798 insert rho'+width:InterpolationWidths 265 0.15416517 insert rho'+width:InterpolationWidths 266 0.16341286 insert rho'+width:InterpolationWidths 267 0.17292414 insert rho'+width:InterpolationWidths 268 0.18268368 insert rho'+width:InterpolationWidths 269 0.19269646 insert rho'+width:InterpolationWidths 270 8.5305432e-05 insert rho'+width:InterpolationWidths 271 0.00010695965 insert rho'+width:InterpolationWidths 272 0.00013386474 insert rho'+width:InterpolationWidths 273 0.00016718072 insert rho'+width:InterpolationWidths 274 0.00020826639 insert rho'+width:InterpolationWidths 275 0.00025870106 insert rho'+width:InterpolationWidths 276 0.00032031029 insert rho'+width:InterpolationWidths 277 0.00039519675 insert rho'+width:InterpolationWidths 278 0.00048577666 insert rho'+width:InterpolationWidths 279 0.00059482313 insert rho'+width:InterpolationWidths 280 0.00072551644 insert rho'+width:InterpolationWidths 281 0.00088150118 insert rho'+width:InterpolationWidths 282 0.0010669486 insert rho'+width:InterpolationWidths 283 0.0012866615 insert rho'+width:InterpolationWidths 284 0.0015461068 insert rho'+width:InterpolationWidths 285 0.0018515744 insert rho'+width:InterpolationWidths 286 0.0022102632 insert rho'+width:InterpolationWidths 287 0.0026304203 insert rho'+width:InterpolationWidths 288 0.0031214899 insert rho'+width:InterpolationWidths 289 0.0036942739 insert rho'+width:InterpolationWidths 290 0.0043611164 insert rho'+width:InterpolationWidths 291 0.0051360906 insert rho'+width:InterpolationWidths 292 0.0060351922 insert rho'+width:InterpolationWidths 293 0.0070765398 insert rho'+width:InterpolationWidths 294 0.0082805205 insert rho'+width:InterpolationWidths 295 0.0096699249 insert rho'+width:InterpolationWidths 296 0.011269962 insert rho'+width:InterpolationWidths 297 0.013108195 insert rho'+width:InterpolationWidths 298 0.015214282 insert rho'+width:InterpolationWidths 299 0.017619532 insert rho'+width:InterpolationWidths 300 0.020356261 insert rho'+width:InterpolationWidths 301 0.023456912 insert rho'+width:InterpolationWidths 302 0.026953043 insert rho'+width:InterpolationWidths 303 0.03087424 insert rho'+width:InterpolationWidths 304 0.03524707 insert rho'+width:InterpolationWidths 305 0.040094214 insert rho'+width:InterpolationWidths 306 0.045433836 insert rho'+width:InterpolationWidths 307 0.051279276 insert rho'+width:InterpolationWidths 308 0.05763901 insert rho'+width:InterpolationWidths 309 0.064516899 insert rho'+width:InterpolationWidths 310 0.071912586 insert rho'+width:InterpolationWidths 311 0.079822049 insert rho'+width:InterpolationWidths 312 0.088238147 insert rho'+width:InterpolationWidths 313 0.097151222 insert rho'+width:InterpolationWidths 314 0.1065496 insert rho'+width:InterpolationWidths 315 0.11642009 insert rho'+width:InterpolationWidths 316 0.1267484 insert rho'+width:InterpolationWidths 317 0.13751951 insert rho'+width:InterpolationWidths 318 0.14871789 insert rho'+width:InterpolationWidths 319 0.16032785 insert rho'+width:InterpolationWidths 320 0.17233357 insert rho'+width:InterpolationWidths 321 0.18471932 insert rho'+width:InterpolationWidths 322 0.19746974 insert rho'+width:InterpolationWidths 323 0.21056989 insert rho'+width:InterpolationWidths 324 0.00081033583 insert rho'+width:InterpolationWidths 325 0.00097853739 insert rho'+width:InterpolationWidths 326 0.0011711455 insert rho'+width:InterpolationWidths 327 0.0013896945 insert rho'+width:InterpolationWidths 328 0.0016357107 insert rho'+width:InterpolationWidths 329 0.0019107314 insert rho'+width:InterpolationWidths 330 0.0022163164 insert rho'+width:InterpolationWidths 331 0.0025540599 insert rho'+width:InterpolationWidths 332 0.0029255966 insert rho'+width:InterpolationWidths 333 0.0033326085 insert rho'+width:InterpolationWidths 334 0.0037768285 insert rho'+width:InterpolationWidths 335 0.0042600442 insert rho'+width:InterpolationWidths 336 0.0047841002 insert rho'+width:InterpolationWidths 337 0.0053509002 insert rho'+width:InterpolationWidths 338 0.0059624086 insert rho'+width:InterpolationWidths 339 0.0066206508 insert rho'+width:InterpolationWidths 340 0.0073277118 insert rho'+width:InterpolationWidths 341 0.0080857455 insert rho'+width:InterpolationWidths 342 0.0088969565 insert rho'+width:InterpolationWidths 343 0.0097636168 insert rho'+width:InterpolationWidths 344 0.010688056 insert rho'+width:InterpolationWidths 345 0.011672664 insert rho'+width:InterpolationWidths 346 0.012719874 insert rho'+width:InterpolationWidths 347 0.013832186 insert rho'+width:InterpolationWidths 348 0.015012129 insert rho'+width:InterpolationWidths 349 0.016262299 insert rho'+width:InterpolationWidths 350 0.017585311 insert rho'+width:InterpolationWidths 351 0.01898381 insert rho'+width:InterpolationWidths 352 0.020460494 insert rho'+width:InterpolationWidths 353 0.022018047 insert rho'+width:InterpolationWidths 354 0.023659201 insert rho'+width:InterpolationWidths 355 0.025386666 insert rho'+width:InterpolationWidths 356 0.027203143 insert rho'+width:InterpolationWidths 357 0.029111358 insert rho'+width:InterpolationWidths 358 0.031126973 insert rho'+width:InterpolationWidths 359 0.033213636 insert rho'+width:InterpolationWidths 360 0.035412964 insert rho'+width:InterpolationWidths 361 0.037714501 insert rho'+width:InterpolationWidths 362 0.040120582 insert rho'+width:InterpolationWidths 363 0.04263318 insert rho'+width:InterpolationWidths 364 0.04525417 insert rho'+width:InterpolationWidths 365 0.047985724 insert rho'+width:InterpolationWidths 366 0.050829321 insert rho'+width:InterpolationWidths 367 0.053787273 insert rho'+width:InterpolationWidths 368 0.056860418 insert rho'+width:InterpolationWidths 369 0.060051237 insert rho'+width:InterpolationWidths 370 0.063360204 insert rho'+width:InterpolationWidths 371 0.066788995 insert rho'+width:InterpolationWidths 372 0.07033926 insert rho'+width:InterpolationWidths 373 0.074010602 insert rho'+width:InterpolationWidths 374 0.077805224 insert rho'+width:InterpolationWidths 375 0.081723519 insert rho'+width:InterpolationWidths 376 0.085765051 insert rho'+width:InterpolationWidths 377 0.089931859 insert rho'+width:NumberofEntries 0 54 insert rho'+width:NumberofEntries 1 108 insert rho'+width:NumberofEntries 2 162 insert rho'+width:NumberofEntries 3 216 insert rho'+width:NumberofEntries 4 270 insert rho'+width:NumberofEntries 5 270 insert rho'+width:NumberofEntries 6 324 insert rho'+width:NumberofEntries 7 378 newdef /Herwig/Particles/rho'+:Width_generator rho'+width newdef /Herwig/Particles/rho'-:Width_generator rho'+width # create Herwig::GenericWidthGenerator omega'width newdef omega'width:Particle /Herwig/Particles/omega' newdef omega'width:Prefactor 0.999662 newdef omega'width:BRNormalize 1 newdef omega'width:BRMinimum 0.01 newdef omega'width:Points 50 newdef omega'width:InterpolationOrder 1 insert omega'width:MEtype 0 2 insert omega'width:MEtype 1 2 insert omega'width:MEtype 2 2 insert omega'width:MEtype 3 2 insert omega'width:MEtype 4 2 insert omega'width:MEtype 5 2 insert omega'width:MEtype 6 0 insert omega'width:MEcode 0 0 insert omega'width:MEcode 1 0 insert omega'width:MEcode 2 0 insert omega'width:MEcode 3 0 insert omega'width:MEcode 4 0 insert omega'width:MEcode 5 0 insert omega'width:MEcode 6 0 insert omega'width:MEcoupling 0 0.988386 insert omega'width:MEcoupling 1 0.988386 insert omega'width:MEcoupling 2 0.953241 insert omega'width:MEcoupling 3 0.999088 insert omega'width:MEcoupling 4 0.999088 insert omega'width:MEcoupling 5 0.994608 insert omega'width:MEcoupling 6 0.112876 insert omega'width:ModeOn 0 1 insert omega'width:ModeOn 1 1 insert omega'width:ModeOn 2 1 insert omega'width:ModeOn 3 1 insert omega'width:ModeOn 4 1 insert omega'width:ModeOn 5 1 insert omega'width:ModeOn 6 1 insert omega'width:MinimumMasses 0 1.06907 insert omega'width:MinimumMasses 1 1.06907 insert omega'width:MinimumMasses 2 1.06448 insert omega'width:MinimumMasses 3 0.51507 insert omega'width:MinimumMasses 4 0.51507 insert omega'width:MinimumMasses 5 0.510478 insert omega'width:MinimumMasses 6 1.00775 insert omega'width:MEmass1 0 1.2295 insert omega'width:MEmass1 1 1.2295 insert omega'width:MEmass1 2 1.2295 insert omega'width:MEmass1 3 0.7755 insert omega'width:MEmass1 4 0.7755 insert omega'width:MEmass1 5 0.7755 insert omega'width:MEmass1 6 0 insert omega'width:MEmass2 0 0.13957 insert omega'width:MEmass2 1 0.13957 insert omega'width:MEmass2 2 0.134978 insert omega'width:MEmass2 3 0.13957 insert omega'width:MEmass2 4 0.13957 insert omega'width:MEmass2 5 0.134978 insert omega'width:MEmass2 6 0 insert omega'width:DecayModes 0 omega'->b_1+,pi-; insert omega'width:DecayModes 1 omega'->b_1-,pi+; insert omega'width:DecayModes 2 omega'->b_10,pi0; insert omega'width:DecayModes 3 omega'->rho+,pi-; insert omega'width:DecayModes 4 omega'->rho-,pi+; insert omega'width:DecayModes 5 omega'->rho0,pi0; insert omega'width:DecayModes 6 omega'->sigma,omega; insert omega'width:InterpolationMasses 0 1.0369914 insert omega'width:InterpolationMasses 1 1.0690702 insert omega'width:InterpolationMasses 2 1.0690702 insert omega'width:InterpolationMasses 3 1.0851096 insert omega'width:InterpolationMasses 4 1.1011489 insert omega'width:InterpolationMasses 5 1.1171883 insert omega'width:InterpolationMasses 6 1.1332277 insert omega'width:InterpolationMasses 7 1.1492671 insert omega'width:InterpolationMasses 8 1.1653065 insert omega'width:InterpolationMasses 9 1.1813459 insert omega'width:InterpolationMasses 10 1.1973853 insert omega'width:InterpolationMasses 11 1.2134246 insert omega'width:InterpolationMasses 12 1.229464 insert omega'width:InterpolationMasses 13 1.2455034 insert omega'width:InterpolationMasses 14 1.2615428 insert omega'width:InterpolationMasses 15 1.2775822 insert omega'width:InterpolationMasses 16 1.2936216 insert omega'width:InterpolationMasses 17 1.3096609 insert omega'width:InterpolationMasses 18 1.3257003 insert omega'width:InterpolationMasses 19 1.3417397 insert omega'width:InterpolationMasses 20 1.3577791 insert omega'width:InterpolationMasses 21 1.3738185 insert omega'width:InterpolationMasses 22 1.3898579 insert omega'width:InterpolationMasses 23 1.4058972 insert omega'width:InterpolationMasses 24 1.4219366 insert omega'width:InterpolationMasses 25 1.437976 insert omega'width:InterpolationMasses 26 1.4540154 insert omega'width:InterpolationMasses 27 1.4700548 insert omega'width:InterpolationMasses 28 1.4860942 insert omega'width:InterpolationMasses 29 1.5021336 insert omega'width:InterpolationMasses 30 1.5181729 insert omega'width:InterpolationMasses 31 1.5342123 insert omega'width:InterpolationMasses 32 1.5502517 insert omega'width:InterpolationMasses 33 1.5662911 insert omega'width:InterpolationMasses 34 1.5823305 insert omega'width:InterpolationMasses 35 1.5983699 insert omega'width:InterpolationMasses 36 1.6144092 insert omega'width:InterpolationMasses 37 1.6304486 insert omega'width:InterpolationMasses 38 1.646488 insert omega'width:InterpolationMasses 39 1.6625274 insert omega'width:InterpolationMasses 40 1.6785668 insert omega'width:InterpolationMasses 41 1.6946062 insert omega'width:InterpolationMasses 42 1.7106455 insert omega'width:InterpolationMasses 43 1.7266849 insert omega'width:InterpolationMasses 44 1.7427243 insert omega'width:InterpolationMasses 45 1.7587637 insert omega'width:InterpolationMasses 46 1.7748031 insert omega'width:InterpolationMasses 47 1.7908425 insert omega'width:InterpolationMasses 48 1.8068818 insert omega'width:InterpolationMasses 49 1.8229212 insert omega'width:InterpolationMasses 50 1.8389606 insert omega'width:InterpolationMasses 51 1.855 insert omega'width:InterpolationMasses 52 1.8710394 insert omega'width:InterpolationMasses 53 1.8870788 insert omega'width:InterpolationMasses 54 1.0369914 insert omega'width:InterpolationMasses 55 1.0690702 insert omega'width:InterpolationMasses 56 1.0690702 insert omega'width:InterpolationMasses 57 1.0851096 insert omega'width:InterpolationMasses 58 1.1011489 insert omega'width:InterpolationMasses 59 1.1171883 insert omega'width:InterpolationMasses 60 1.1332277 insert omega'width:InterpolationMasses 61 1.1492671 insert omega'width:InterpolationMasses 62 1.1653065 insert omega'width:InterpolationMasses 63 1.1813459 insert omega'width:InterpolationMasses 64 1.1973853 insert omega'width:InterpolationMasses 65 1.2134246 insert omega'width:InterpolationMasses 66 1.229464 insert omega'width:InterpolationMasses 67 1.2455034 insert omega'width:InterpolationMasses 68 1.2615428 insert omega'width:InterpolationMasses 69 1.2775822 insert omega'width:InterpolationMasses 70 1.2936216 insert omega'width:InterpolationMasses 71 1.3096609 insert omega'width:InterpolationMasses 72 1.3257003 insert omega'width:InterpolationMasses 73 1.3417397 insert omega'width:InterpolationMasses 74 1.3577791 insert omega'width:InterpolationMasses 75 1.3738185 insert omega'width:InterpolationMasses 76 1.3898579 insert omega'width:InterpolationMasses 77 1.4058972 insert omega'width:InterpolationMasses 78 1.4219366 insert omega'width:InterpolationMasses 79 1.437976 insert omega'width:InterpolationMasses 80 1.4540154 insert omega'width:InterpolationMasses 81 1.4700548 insert omega'width:InterpolationMasses 82 1.4860942 insert omega'width:InterpolationMasses 83 1.5021336 insert omega'width:InterpolationMasses 84 1.5181729 insert omega'width:InterpolationMasses 85 1.5342123 insert omega'width:InterpolationMasses 86 1.5502517 insert omega'width:InterpolationMasses 87 1.5662911 insert omega'width:InterpolationMasses 88 1.5823305 insert omega'width:InterpolationMasses 89 1.5983699 insert omega'width:InterpolationMasses 90 1.6144092 insert omega'width:InterpolationMasses 91 1.6304486 insert omega'width:InterpolationMasses 92 1.646488 insert omega'width:InterpolationMasses 93 1.6625274 insert omega'width:InterpolationMasses 94 1.6785668 insert omega'width:InterpolationMasses 95 1.6946062 insert omega'width:InterpolationMasses 96 1.7106455 insert omega'width:InterpolationMasses 97 1.7266849 insert omega'width:InterpolationMasses 98 1.7427243 insert omega'width:InterpolationMasses 99 1.7587637 insert omega'width:InterpolationMasses 100 1.7748031 insert omega'width:InterpolationMasses 101 1.7908425 insert omega'width:InterpolationMasses 102 1.8068818 insert omega'width:InterpolationMasses 103 1.8229212 insert omega'width:InterpolationMasses 104 1.8389606 insert omega'width:InterpolationMasses 105 1.855 insert omega'width:InterpolationMasses 106 1.8710394 insert omega'width:InterpolationMasses 107 1.8870788 insert omega'width:InterpolationMasses 108 1.0322114 insert omega'width:InterpolationMasses 109 1.0644776 insert omega'width:InterpolationMasses 110 1.0644776 insert omega'width:InterpolationMasses 111 1.0806107 insert omega'width:InterpolationMasses 112 1.0967438 insert omega'width:InterpolationMasses 113 1.1128769 insert omega'width:InterpolationMasses 114 1.12901 insert omega'width:InterpolationMasses 115 1.1451432 insert omega'width:InterpolationMasses 116 1.1612763 insert omega'width:InterpolationMasses 117 1.1774094 insert omega'width:InterpolationMasses 118 1.1935425 insert omega'width:InterpolationMasses 119 1.2096756 insert omega'width:InterpolationMasses 120 1.2258087 insert omega'width:InterpolationMasses 121 1.2419418 insert omega'width:InterpolationMasses 122 1.2580749 insert omega'width:InterpolationMasses 123 1.274208 insert omega'width:InterpolationMasses 124 1.2903411 insert omega'width:InterpolationMasses 125 1.3064743 insert omega'width:InterpolationMasses 126 1.3226074 insert omega'width:InterpolationMasses 127 1.3387405 insert omega'width:InterpolationMasses 128 1.3548736 insert omega'width:InterpolationMasses 129 1.3710067 insert omega'width:InterpolationMasses 130 1.3871398 insert omega'width:InterpolationMasses 131 1.4032729 insert omega'width:InterpolationMasses 132 1.419406 insert omega'width:InterpolationMasses 133 1.4355391 insert omega'width:InterpolationMasses 134 1.4516722 insert omega'width:InterpolationMasses 135 1.4678054 insert omega'width:InterpolationMasses 136 1.4839385 insert omega'width:InterpolationMasses 137 1.5000716 insert omega'width:InterpolationMasses 138 1.5162047 insert omega'width:InterpolationMasses 139 1.5323378 insert omega'width:InterpolationMasses 140 1.5484709 insert omega'width:InterpolationMasses 141 1.564604 insert omega'width:InterpolationMasses 142 1.5807371 insert omega'width:InterpolationMasses 143 1.5968702 insert omega'width:InterpolationMasses 144 1.6130033 insert omega'width:InterpolationMasses 145 1.6291365 insert omega'width:InterpolationMasses 146 1.6452696 insert omega'width:InterpolationMasses 147 1.6614027 insert omega'width:InterpolationMasses 148 1.6775358 insert omega'width:InterpolationMasses 149 1.6936689 insert omega'width:InterpolationMasses 150 1.709802 insert omega'width:InterpolationMasses 151 1.7259351 insert omega'width:InterpolationMasses 152 1.7420682 insert omega'width:InterpolationMasses 153 1.7582013 insert omega'width:InterpolationMasses 154 1.7743344 insert omega'width:InterpolationMasses 155 1.7904676 insert omega'width:InterpolationMasses 156 1.8066007 insert omega'width:InterpolationMasses 157 1.8227338 insert omega'width:InterpolationMasses 158 1.8388669 insert omega'width:InterpolationMasses 159 1.855 insert omega'width:InterpolationMasses 160 1.8711331 insert omega'width:InterpolationMasses 161 1.8872662 insert omega'width:InterpolationMasses 162 0.95989796 insert omega'width:InterpolationMasses 163 0.97744898 insert omega'width:InterpolationMasses 164 0.995 insert omega'width:InterpolationMasses 165 1.012551 insert omega'width:InterpolationMasses 166 1.030102 insert omega'width:InterpolationMasses 167 1.0476531 insert omega'width:InterpolationMasses 168 1.0652041 insert omega'width:InterpolationMasses 169 1.0827551 insert omega'width:InterpolationMasses 170 1.1003061 insert omega'width:InterpolationMasses 171 1.1178571 insert omega'width:InterpolationMasses 172 1.1354082 insert omega'width:InterpolationMasses 173 1.1529592 insert omega'width:InterpolationMasses 174 1.1705102 insert omega'width:InterpolationMasses 175 1.1880612 insert omega'width:InterpolationMasses 176 1.2056122 insert omega'width:InterpolationMasses 177 1.2231633 insert omega'width:InterpolationMasses 178 1.2407143 insert omega'width:InterpolationMasses 179 1.2582653 insert omega'width:InterpolationMasses 180 1.2758163 insert omega'width:InterpolationMasses 181 1.2933673 insert omega'width:InterpolationMasses 182 1.3109184 insert omega'width:InterpolationMasses 183 1.3284694 insert omega'width:InterpolationMasses 184 1.3460204 insert omega'width:InterpolationMasses 185 1.3635714 insert omega'width:InterpolationMasses 186 1.3811224 insert omega'width:InterpolationMasses 187 1.3986735 insert omega'width:InterpolationMasses 188 1.4162245 insert omega'width:InterpolationMasses 189 1.4337755 insert omega'width:InterpolationMasses 190 1.4513265 insert omega'width:InterpolationMasses 191 1.4688776 insert omega'width:InterpolationMasses 192 1.4864286 insert omega'width:InterpolationMasses 193 1.5039796 insert omega'width:InterpolationMasses 194 1.5215306 insert omega'width:InterpolationMasses 195 1.5390816 insert omega'width:InterpolationMasses 196 1.5566327 insert omega'width:InterpolationMasses 197 1.5741837 insert omega'width:InterpolationMasses 198 1.5917347 insert omega'width:InterpolationMasses 199 1.6092857 insert omega'width:InterpolationMasses 200 1.6268367 insert omega'width:InterpolationMasses 201 1.6443878 insert omega'width:InterpolationMasses 202 1.6619388 insert omega'width:InterpolationMasses 203 1.6794898 insert omega'width:InterpolationMasses 204 1.6970408 insert omega'width:InterpolationMasses 205 1.7145918 insert omega'width:InterpolationMasses 206 1.7321429 insert omega'width:InterpolationMasses 207 1.7496939 insert omega'width:InterpolationMasses 208 1.7672449 insert omega'width:InterpolationMasses 209 1.7847959 insert omega'width:InterpolationMasses 210 1.8023469 insert omega'width:InterpolationMasses 211 1.819898 insert omega'width:InterpolationMasses 212 1.837449 insert omega'width:InterpolationMasses 213 1.855 insert omega'width:InterpolationMasses 214 1.872551 insert omega'width:InterpolationMasses 215 1.890102 insert omega'width:InterpolationMasses 216 0.95989796 insert omega'width:InterpolationMasses 217 0.97744898 insert omega'width:InterpolationMasses 218 0.995 insert omega'width:InterpolationMasses 219 1.012551 insert omega'width:InterpolationMasses 220 1.030102 insert omega'width:InterpolationMasses 221 1.0476531 insert omega'width:InterpolationMasses 222 1.0652041 insert omega'width:InterpolationMasses 223 1.0827551 insert omega'width:InterpolationMasses 224 1.1003061 insert omega'width:InterpolationMasses 225 1.1178571 insert omega'width:InterpolationMasses 226 1.1354082 insert omega'width:InterpolationMasses 227 1.1529592 insert omega'width:InterpolationMasses 228 1.1705102 insert omega'width:InterpolationMasses 229 1.1880612 insert omega'width:InterpolationMasses 230 1.2056122 insert omega'width:InterpolationMasses 231 1.2231633 insert omega'width:InterpolationMasses 232 1.2407143 insert omega'width:InterpolationMasses 233 1.2582653 insert omega'width:InterpolationMasses 234 1.2758163 insert omega'width:InterpolationMasses 235 1.2933673 insert omega'width:InterpolationMasses 236 1.3109184 insert omega'width:InterpolationMasses 237 1.3284694 insert omega'width:InterpolationMasses 238 1.3460204 insert omega'width:InterpolationMasses 239 1.3635714 insert omega'width:InterpolationMasses 240 1.3811224 insert omega'width:InterpolationMasses 241 1.3986735 insert omega'width:InterpolationMasses 242 1.4162245 insert omega'width:InterpolationMasses 243 1.4337755 insert omega'width:InterpolationMasses 244 1.4513265 insert omega'width:InterpolationMasses 245 1.4688776 insert omega'width:InterpolationMasses 246 1.4864286 insert omega'width:InterpolationMasses 247 1.5039796 insert omega'width:InterpolationMasses 248 1.5215306 insert omega'width:InterpolationMasses 249 1.5390816 insert omega'width:InterpolationMasses 250 1.5566327 insert omega'width:InterpolationMasses 251 1.5741837 insert omega'width:InterpolationMasses 252 1.5917347 insert omega'width:InterpolationMasses 253 1.6092857 insert omega'width:InterpolationMasses 254 1.6268367 insert omega'width:InterpolationMasses 255 1.6443878 insert omega'width:InterpolationMasses 256 1.6619388 insert omega'width:InterpolationMasses 257 1.6794898 insert omega'width:InterpolationMasses 258 1.6970408 insert omega'width:InterpolationMasses 259 1.7145918 insert omega'width:InterpolationMasses 260 1.7321429 insert omega'width:InterpolationMasses 261 1.7496939 insert omega'width:InterpolationMasses 262 1.7672449 insert omega'width:InterpolationMasses 263 1.7847959 insert omega'width:InterpolationMasses 264 1.8023469 insert omega'width:InterpolationMasses 265 1.819898 insert omega'width:InterpolationMasses 266 1.837449 insert omega'width:InterpolationMasses 267 1.855 insert omega'width:InterpolationMasses 268 1.872551 insert omega'width:InterpolationMasses 269 1.890102 insert omega'width:InterpolationMasses 270 0.95989796 insert omega'width:InterpolationMasses 271 0.97744898 insert omega'width:InterpolationMasses 272 0.995 insert omega'width:InterpolationMasses 273 1.012551 insert omega'width:InterpolationMasses 274 1.030102 insert omega'width:InterpolationMasses 275 1.0476531 insert omega'width:InterpolationMasses 276 1.0652041 insert omega'width:InterpolationMasses 277 1.0827551 insert omega'width:InterpolationMasses 278 1.1003061 insert omega'width:InterpolationMasses 279 1.1178571 insert omega'width:InterpolationMasses 280 1.1354082 insert omega'width:InterpolationMasses 281 1.1529592 insert omega'width:InterpolationMasses 282 1.1705102 insert omega'width:InterpolationMasses 283 1.1880612 insert omega'width:InterpolationMasses 284 1.2056122 insert omega'width:InterpolationMasses 285 1.2231633 insert omega'width:InterpolationMasses 286 1.2407143 insert omega'width:InterpolationMasses 287 1.2582653 insert omega'width:InterpolationMasses 288 1.2758163 insert omega'width:InterpolationMasses 289 1.2933673 insert omega'width:InterpolationMasses 290 1.3109184 insert omega'width:InterpolationMasses 291 1.3284694 insert omega'width:InterpolationMasses 292 1.3460204 insert omega'width:InterpolationMasses 293 1.3635714 insert omega'width:InterpolationMasses 294 1.3811224 insert omega'width:InterpolationMasses 295 1.3986735 insert omega'width:InterpolationMasses 296 1.4162245 insert omega'width:InterpolationMasses 297 1.4337755 insert omega'width:InterpolationMasses 298 1.4513265 insert omega'width:InterpolationMasses 299 1.4688776 insert omega'width:InterpolationMasses 300 1.4864286 insert omega'width:InterpolationMasses 301 1.5039796 insert omega'width:InterpolationMasses 302 1.5215306 insert omega'width:InterpolationMasses 303 1.5390816 insert omega'width:InterpolationMasses 304 1.5566327 insert omega'width:InterpolationMasses 305 1.5741837 insert omega'width:InterpolationMasses 306 1.5917347 insert omega'width:InterpolationMasses 307 1.6092857 insert omega'width:InterpolationMasses 308 1.6268367 insert omega'width:InterpolationMasses 309 1.6443878 insert omega'width:InterpolationMasses 310 1.6619388 insert omega'width:InterpolationMasses 311 1.6794898 insert omega'width:InterpolationMasses 312 1.6970408 insert omega'width:InterpolationMasses 313 1.7145918 insert omega'width:InterpolationMasses 314 1.7321429 insert omega'width:InterpolationMasses 315 1.7496939 insert omega'width:InterpolationMasses 316 1.7672449 insert omega'width:InterpolationMasses 317 1.7847959 insert omega'width:InterpolationMasses 318 1.8023469 insert omega'width:InterpolationMasses 319 1.819898 insert omega'width:InterpolationMasses 320 1.837449 insert omega'width:InterpolationMasses 321 1.855 insert omega'width:InterpolationMasses 322 1.872551 insert omega'width:InterpolationMasses 323 1.890102 insert omega'width:InterpolationWidths 0 0 insert omega'width:InterpolationWidths 1 0 insert omega'width:InterpolationWidths 2 0 insert omega'width:InterpolationWidths 3 1.5911022e-06 insert omega'width:InterpolationWidths 4 6.2224177e-06 insert omega'width:InterpolationWidths 5 1.4909561e-05 insert omega'width:InterpolationWidths 6 2.9032423e-05 insert omega'width:InterpolationWidths 7 5.045992e-05 insert omega'width:InterpolationWidths 8 8.1484523e-05 insert omega'width:InterpolationWidths 9 0.00012542112 insert omega'width:InterpolationWidths 10 0.00018655384 insert omega'width:InterpolationWidths 11 0.00027081812 insert omega'width:InterpolationWidths 12 0.00038645984 insert omega'width:InterpolationWidths 13 0.00054528551 insert omega'width:InterpolationWidths 14 0.00076334729 insert omega'width:InterpolationWidths 15 0.0010648486 insert omega'width:InterpolationWidths 16 0.0014833207 insert omega'width:InterpolationWidths 17 0.0020649584 insert omega'width:InterpolationWidths 18 0.0028674368 insert omega'width:InterpolationWidths 19 0.0039489961 insert omega'width:InterpolationWidths 20 0.0053434984 insert omega'width:InterpolationWidths 21 0.0070338107 insert omega'width:InterpolationWidths 22 0.0089574337 insert omega'width:InterpolationWidths 23 0.011039415 insert omega'width:InterpolationWidths 24 0.013217409 insert omega'width:InterpolationWidths 25 0.015451047 insert omega'width:InterpolationWidths 26 0.01771694 insert omega'width:InterpolationWidths 27 0.020002604 insert omega'width:InterpolationWidths 28 0.022301697 insert omega'width:InterpolationWidths 29 0.024611178 insert omega'width:InterpolationWidths 30 0.026930681 insert omega'width:InterpolationWidths 31 0.029260457 insert omega'width:InterpolationWidths 32 0.0316013 insert omega'width:InterpolationWidths 33 0.033954191 insert omega'width:InterpolationWidths 34 0.036320288 insert omega'width:InterpolationWidths 35 0.038700896 insert omega'width:InterpolationWidths 36 0.041096926 insert omega'width:InterpolationWidths 37 0.043509556 insert omega'width:InterpolationWidths 38 0.045939858 insert omega'width:InterpolationWidths 39 0.048388807 insert omega'width:InterpolationWidths 40 0.050857396 insert omega'width:InterpolationWidths 41 0.053346533 insert omega'width:InterpolationWidths 42 0.055857114 insert omega'width:InterpolationWidths 43 0.058389946 insert omega'width:InterpolationWidths 44 0.060945893 insert omega'width:InterpolationWidths 45 0.063525708 insert omega'width:InterpolationWidths 46 0.066130121 insert omega'width:InterpolationWidths 47 0.068759874 insert omega'width:InterpolationWidths 48 0.071415695 insert omega'width:InterpolationWidths 49 0.074098266 insert omega'width:InterpolationWidths 50 0.076808103 insert omega'width:InterpolationWidths 51 0.079546265 insert omega'width:InterpolationWidths 52 0.082312891 insert omega'width:InterpolationWidths 53 0.085108851 insert omega'width:InterpolationWidths 54 0 insert omega'width:InterpolationWidths 55 0 insert omega'width:InterpolationWidths 56 0 insert omega'width:InterpolationWidths 57 1.5911022e-06 insert omega'width:InterpolationWidths 58 6.2224177e-06 insert omega'width:InterpolationWidths 59 1.4909561e-05 insert omega'width:InterpolationWidths 60 2.9032423e-05 insert omega'width:InterpolationWidths 61 5.045992e-05 insert omega'width:InterpolationWidths 62 8.1484523e-05 insert omega'width:InterpolationWidths 63 0.00012542112 insert omega'width:InterpolationWidths 64 0.00018655384 insert omega'width:InterpolationWidths 65 0.00027081812 insert omega'width:InterpolationWidths 66 0.00038645984 insert omega'width:InterpolationWidths 67 0.00054528551 insert omega'width:InterpolationWidths 68 0.00076334729 insert omega'width:InterpolationWidths 69 0.0010648486 insert omega'width:InterpolationWidths 70 0.0014833207 insert omega'width:InterpolationWidths 71 0.0020649584 insert omega'width:InterpolationWidths 72 0.0028674368 insert omega'width:InterpolationWidths 73 0.0039489961 insert omega'width:InterpolationWidths 74 0.0053434984 insert omega'width:InterpolationWidths 75 0.0070338107 insert omega'width:InterpolationWidths 76 0.0089574337 insert omega'width:InterpolationWidths 77 0.011039415 insert omega'width:InterpolationWidths 78 0.013217409 insert omega'width:InterpolationWidths 79 0.015451047 insert omega'width:InterpolationWidths 80 0.01771694 insert omega'width:InterpolationWidths 81 0.020002604 insert omega'width:InterpolationWidths 82 0.022301697 insert omega'width:InterpolationWidths 83 0.024611178 insert omega'width:InterpolationWidths 84 0.026930681 insert omega'width:InterpolationWidths 85 0.029260457 insert omega'width:InterpolationWidths 86 0.0316013 insert omega'width:InterpolationWidths 87 0.033954191 insert omega'width:InterpolationWidths 88 0.036320288 insert omega'width:InterpolationWidths 89 0.038700896 insert omega'width:InterpolationWidths 90 0.041096926 insert omega'width:InterpolationWidths 91 0.043509556 insert omega'width:InterpolationWidths 92 0.045939858 insert omega'width:InterpolationWidths 93 0.048388807 insert omega'width:InterpolationWidths 94 0.050857396 insert omega'width:InterpolationWidths 95 0.053346533 insert omega'width:InterpolationWidths 96 0.055857114 insert omega'width:InterpolationWidths 97 0.058389946 insert omega'width:InterpolationWidths 98 0.060945893 insert omega'width:InterpolationWidths 99 0.063525708 insert omega'width:InterpolationWidths 100 0.066130121 insert omega'width:InterpolationWidths 101 0.068759874 insert omega'width:InterpolationWidths 102 0.071415695 insert omega'width:InterpolationWidths 103 0.074098266 insert omega'width:InterpolationWidths 104 0.076808103 insert omega'width:InterpolationWidths 105 0.079546265 insert omega'width:InterpolationWidths 106 0.082312891 insert omega'width:InterpolationWidths 107 0.085108851 insert omega'width:InterpolationWidths 108 0 insert omega'width:InterpolationWidths 109 0 insert omega'width:InterpolationWidths 110 0 insert omega'width:InterpolationWidths 111 1.874459e-06 insert omega'width:InterpolationWidths 112 6.9692151e-06 insert omega'width:InterpolationWidths 113 1.6233529e-05 insert omega'width:InterpolationWidths 114 3.1054894e-05 insert omega'width:InterpolationWidths 115 5.327551e-05 insert omega'width:InterpolationWidths 116 8.5344e-05 insert omega'width:InterpolationWidths 117 0.00013050023 insert omega'width:InterpolationWidths 118 0.00019318991 insert omega'width:InterpolationWidths 119 0.00027935688 insert omega'width:InterpolationWidths 120 0.00039755233 insert omega'width:InterpolationWidths 121 0.00055967628 insert omega'width:InterpolationWidths 122 0.00078274193 insert omega'width:InterpolationWidths 123 0.0010910937 insert omega'width:InterpolationWidths 124 0.0015195223 insert omega'width:InterpolationWidths 125 0.0021152171 insert omega'width:InterpolationWidths 126 0.0029369424 insert omega'width:InterpolationWidths 127 0.0040421647 insert omega'width:InterpolationWidths 128 0.0054609429 insert omega'width:InterpolationWidths 129 0.007171283 insert omega'width:InterpolationWidths 130 0.0091075982 insert omega'width:InterpolationWidths 131 0.01119518 insert omega'width:InterpolationWidths 132 0.013374203 insert omega'width:InterpolationWidths 133 0.015606432 insert omega'width:InterpolationWidths 134 0.017870047 insert omega'width:InterpolationWidths 135 0.020153439 insert omega'width:InterpolationWidths 136 0.022450754 insert omega'width:InterpolationWidths 137 0.024759317 insert omega'width:InterpolationWidths 138 0.027078812 insert omega'width:InterpolationWidths 139 0.029409513 insert omega'width:InterpolationWidths 140 0.031752196 insert omega'width:InterpolationWidths 141 0.034107801 insert omega'width:InterpolationWidths 142 0.036477471 insert omega'width:InterpolationWidths 143 0.038862412 insert omega'width:InterpolationWidths 144 0.04126357 insert omega'width:InterpolationWidths 145 0.043682066 insert omega'width:InterpolationWidths 146 0.046118926 insert omega'width:InterpolationWidths 147 0.048575095 insert omega'width:InterpolationWidths 148 0.051051533 insert omega'width:InterpolationWidths 149 0.053549145 insert omega'width:InterpolationWidths 150 0.056068771 insert omega'width:InterpolationWidths 151 0.058611245 insert omega'width:InterpolationWidths 152 0.061177377 insert omega'width:InterpolationWidths 153 0.063767914 insert omega'width:InterpolationWidths 154 0.066383597 insert omega'width:InterpolationWidths 155 0.069025118 insert omega'width:InterpolationWidths 156 0.07169327 insert omega'width:InterpolationWidths 157 0.074388603 insert omega'width:InterpolationWidths 158 0.077111843 insert omega'width:InterpolationWidths 159 0.079863733 insert omega'width:InterpolationWidths 160 0.08264467 insert omega'width:InterpolationWidths 161 0.085455403 insert omega'width:InterpolationWidths 162 0.00143961 insert omega'width:InterpolationWidths 163 0.0018514813 insert omega'width:InterpolationWidths 164 0.0023435533 insert omega'width:InterpolationWidths 165 0.002920863 insert omega'width:InterpolationWidths 166 0.0035880012 insert omega'width:InterpolationWidths 167 0.0043492555 insert omega'width:InterpolationWidths 168 0.0052086926 insert omega'width:InterpolationWidths 169 0.0061702084 insert omega'width:InterpolationWidths 170 0.0072375589 insert omega'width:InterpolationWidths 171 0.0084143807 insert omega'width:InterpolationWidths 172 0.0097042066 insert omega'width:InterpolationWidths 173 0.011110477 insert omega'width:InterpolationWidths 174 0.012636548 insert omega'width:InterpolationWidths 175 0.014285702 insert omega'width:InterpolationWidths 176 0.016061154 insert omega'width:InterpolationWidths 177 0.017966054 insert omega'width:InterpolationWidths 178 0.020003498 insert omega'width:InterpolationWidths 179 0.022176531 insert omega'width:InterpolationWidths 180 0.024488151 insert omega'width:InterpolationWidths 181 0.026941312 insert omega'width:InterpolationWidths 182 0.02953893 insert omega'width:InterpolationWidths 183 0.032283886 insert omega'width:InterpolationWidths 184 0.03517903 insert omega'width:InterpolationWidths 185 0.038227213 insert omega'width:InterpolationWidths 186 0.041431169 insert omega'width:InterpolationWidths 187 0.044793694 insert omega'width:InterpolationWidths 188 0.048317535 insert omega'width:InterpolationWidths 189 0.052005086 insert omega'width:InterpolationWidths 190 0.055858234 insert omega'width:InterpolationWidths 191 0.059879055 insert omega'width:InterpolationWidths 192 0.064069657 insert omega'width:InterpolationWidths 193 0.068432157 insert omega'width:InterpolationWidths 194 0.072968648 insert omega'width:InterpolationWidths 195 0.077681215 insert omega'width:InterpolationWidths 196 0.082571922 insert omega'width:InterpolationWidths 197 0.087642821 insert omega'width:InterpolationWidths 198 0.092895947 insert omega'width:InterpolationWidths 199 0.098333323 insert omega'width:InterpolationWidths 200 0.10395696 insert omega'width:InterpolationWidths 201 0.10976884 insert omega'width:InterpolationWidths 202 0.11577097 insert omega'width:InterpolationWidths 203 0.12196532 insert omega'width:InterpolationWidths 204 0.12835386 insert omega'width:InterpolationWidths 205 0.13493855 insert omega'width:InterpolationWidths 206 0.14172134 insert omega'width:InterpolationWidths 207 0.14870419 insert omega'width:InterpolationWidths 208 0.15588903 insert omega'width:InterpolationWidths 209 0.1632778 insert omega'width:InterpolationWidths 210 0.17087244 insert omega'width:InterpolationWidths 211 0.17867488 insert omega'width:InterpolationWidths 212 0.18668704 insert omega'width:InterpolationWidths 213 0.19491085 insert omega'width:InterpolationWidths 214 0.20334822 insert omega'width:InterpolationWidths 215 0.21200109 insert omega'width:InterpolationWidths 216 0.00143961 insert omega'width:InterpolationWidths 217 0.0018514813 insert omega'width:InterpolationWidths 218 0.0023435533 insert omega'width:InterpolationWidths 219 0.002920863 insert omega'width:InterpolationWidths 220 0.0035880012 insert omega'width:InterpolationWidths 221 0.0043492555 insert omega'width:InterpolationWidths 222 0.0052086926 insert omega'width:InterpolationWidths 223 0.0061702084 insert omega'width:InterpolationWidths 224 0.0072375589 insert omega'width:InterpolationWidths 225 0.0084143807 insert omega'width:InterpolationWidths 226 0.0097042066 insert omega'width:InterpolationWidths 227 0.011110477 insert omega'width:InterpolationWidths 228 0.012636548 insert omega'width:InterpolationWidths 229 0.014285702 insert omega'width:InterpolationWidths 230 0.016061154 insert omega'width:InterpolationWidths 231 0.017966054 insert omega'width:InterpolationWidths 232 0.020003498 insert omega'width:InterpolationWidths 233 0.022176531 insert omega'width:InterpolationWidths 234 0.024488151 insert omega'width:InterpolationWidths 235 0.026941312 insert omega'width:InterpolationWidths 236 0.02953893 insert omega'width:InterpolationWidths 237 0.032283886 insert omega'width:InterpolationWidths 238 0.03517903 insert omega'width:InterpolationWidths 239 0.038227213 insert omega'width:InterpolationWidths 240 0.041431169 insert omega'width:InterpolationWidths 241 0.044793694 insert omega'width:InterpolationWidths 242 0.048317535 insert omega'width:InterpolationWidths 243 0.052005086 insert omega'width:InterpolationWidths 244 0.055858234 insert omega'width:InterpolationWidths 245 0.059879055 insert omega'width:InterpolationWidths 246 0.064069657 insert omega'width:InterpolationWidths 247 0.068432157 insert omega'width:InterpolationWidths 248 0.072968648 insert omega'width:InterpolationWidths 249 0.077681215 insert omega'width:InterpolationWidths 250 0.082571922 insert omega'width:InterpolationWidths 251 0.087642821 insert omega'width:InterpolationWidths 252 0.092895947 insert omega'width:InterpolationWidths 253 0.098333323 insert omega'width:InterpolationWidths 254 0.10395696 insert omega'width:InterpolationWidths 255 0.10976884 insert omega'width:InterpolationWidths 256 0.11577097 insert omega'width:InterpolationWidths 257 0.12196532 insert omega'width:InterpolationWidths 258 0.12835386 insert omega'width:InterpolationWidths 259 0.13493855 insert omega'width:InterpolationWidths 260 0.14172134 insert omega'width:InterpolationWidths 261 0.14870419 insert omega'width:InterpolationWidths 262 0.15588903 insert omega'width:InterpolationWidths 263 0.1632778 insert omega'width:InterpolationWidths 264 0.17087244 insert omega'width:InterpolationWidths 265 0.17867488 insert omega'width:InterpolationWidths 266 0.18668704 insert omega'width:InterpolationWidths 267 0.19491085 insert omega'width:InterpolationWidths 268 0.20334822 insert omega'width:InterpolationWidths 269 0.21200109 insert omega'width:InterpolationWidths 270 0.0014944858 insert omega'width:InterpolationWidths 271 0.001915773 insert omega'width:InterpolationWidths 272 0.0024170731 insert omega'width:InterpolationWidths 273 0.0030033338 insert omega'width:InterpolationWidths 274 0.0036791106 insert omega'width:InterpolationWidths 275 0.0044486834 insert omega'width:InterpolationWidths 276 0.0053161258 insert omega'width:InterpolationWidths 277 0.0062853471 insert omega'width:InterpolationWidths 278 0.0073601196 insert omega'width:InterpolationWidths 279 0.0085440971 insert omega'width:InterpolationWidths 280 0.0098408292 insert omega'width:InterpolationWidths 281 0.011253772 insert omega'width:InterpolationWidths 282 0.012786298 insert omega'width:InterpolationWidths 283 0.014441702 insert omega'width:InterpolationWidths 284 0.016223213 insert omega'width:InterpolationWidths 285 0.018133995 insert omega'width:InterpolationWidths 286 0.020177153 insert omega'width:InterpolationWidths 287 0.022355745 insert omega'width:InterpolationWidths 288 0.024672777 insert omega'width:InterpolationWidths 289 0.027131213 insert omega'width:InterpolationWidths 290 0.029733979 insert omega'width:InterpolationWidths 291 0.032483965 insert omega'width:InterpolationWidths 292 0.035384027 insert omega'width:InterpolationWidths 293 0.038437024 insert omega'width:InterpolationWidths 294 0.041645697 insert omega'width:InterpolationWidths 295 0.045012851 insert omega'width:InterpolationWidths 296 0.048541223 insert omega'width:InterpolationWidths 297 0.05223303 insert omega'width:InterpolationWidths 298 0.056090237 insert omega'width:InterpolationWidths 299 0.060114961 insert omega'width:InterpolationWidths 300 0.064309333 insert omega'width:InterpolationWidths 301 0.068675482 insert omega'width:InterpolationWidths 302 0.073215512 insert omega'width:InterpolationWidths 303 0.077931516 insert omega'width:InterpolationWidths 304 0.082825567 insert omega'width:InterpolationWidths 305 0.08789972 insert omega'width:InterpolationWidths 306 0.093156018 insert omega'width:InterpolationWidths 307 0.098596486 insert omega'width:InterpolationWidths 308 0.10422314 insert omega'width:InterpolationWidths 309 0.11003797 insert omega'width:InterpolationWidths 310 0.11604299 insert omega'width:InterpolationWidths 311 0.12224015 insert omega'width:InterpolationWidths 312 0.12863145 insert omega'width:InterpolationWidths 313 0.13521884 insert omega'width:InterpolationWidths 314 0.14200427 insert omega'width:InterpolationWidths 315 0.14898971 insert omega'width:InterpolationWidths 316 0.15617708 insert omega'width:InterpolationWidths 317 0.16356834 insert omega'width:InterpolationWidths 318 0.17116542 insert omega'width:InterpolationWidths 319 0.17897025 insert omega'width:InterpolationWidths 320 0.18698475 insert omega'width:InterpolationWidths 321 0.19521086 insert omega'width:InterpolationWidths 322 0.20365049 insert omega'width:InterpolationWidths 323 0.21230557 insert omega'width:NumberofEntries 0 54 insert omega'width:NumberofEntries 1 108 insert omega'width:NumberofEntries 2 162 insert omega'width:NumberofEntries 3 216 insert omega'width:NumberofEntries 4 270 insert omega'width:NumberofEntries 5 324 insert omega'width:NumberofEntries 6 324 newdef /Herwig/Particles/omega':Width_generator omega'width # create Herwig::GenericWidthGenerator phi'width newdef phi'width:Particle /Herwig/Particles/phi' newdef phi'width:Prefactor 0.999695 newdef phi'width:BRNormalize 1 newdef phi'width:BRMinimum 0.01 newdef phi'width:Points 50 newdef phi'width:InterpolationOrder 1 insert phi'width:MEtype 0 2 insert phi'width:MEtype 1 2 insert phi'width:MEtype 2 2 insert phi'width:MEtype 3 2 insert phi'width:MEtype 4 1 insert phi'width:MEtype 5 1 insert phi'width:MEcode 0 0 insert phi'width:MEcode 1 0 insert phi'width:MEcode 2 0 insert phi'width:MEcode 3 0 insert phi'width:MEcode 4 0 insert phi'width:MEcode 5 0 insert phi'width:MEcoupling 0 0.999578 insert phi'width:MEcoupling 1 0.999578 insert phi'width:MEcoupling 2 0.998638 insert phi'width:MEcoupling 3 0.998638 insert phi'width:MEcoupling 4 0.911899 insert phi'width:MEcoupling 5 0.917772 insert phi'width:ModeOn 0 1 insert phi'width:ModeOn 1 1 insert phi'width:ModeOn 2 1 insert phi'width:ModeOn 3 1 insert phi'width:ModeOn 4 1 insert phi'width:ModeOn 5 1 insert phi'width:MinimumMasses 0 1.13534 insert phi'width:MinimumMasses 1 1.13534 insert phi'width:MinimumMasses 2 1.14365 insert phi'width:MinimumMasses 3 1.14365 insert phi'width:MinimumMasses 4 0.987354 insert phi'width:MinimumMasses 5 0.995296 insert phi'width:MEmass1 0 0.89166 insert phi'width:MEmass1 1 0.89166 insert phi'width:MEmass1 2 0.896 insert phi'width:MEmass1 3 0.896 insert phi'width:MEmass1 4 0.493677 insert phi'width:MEmass1 5 0.497648 insert phi'width:MEmass2 0 0.493677 insert phi'width:MEmass2 1 0.493677 insert phi'width:MEmass2 2 0.497648 insert phi'width:MEmass2 3 0.497648 insert phi'width:MEmass2 4 0.493677 insert phi'width:MEmass2 5 0.497648 insert phi'width:DecayModes 0 phi'->K*+,K-; insert phi'width:DecayModes 1 phi'->K*-,K+; insert phi'width:DecayModes 2 phi'->K*0,Kbar0; insert phi'width:DecayModes 3 phi'->K*bar0,K0; insert phi'width:DecayModes 4 phi'->K+,K-; insert phi'width:DecayModes 5 phi'->K_S0,K_L0; insert phi'width:InterpolationMasses 0 1.3555102 insert phi'width:InterpolationMasses 1 1.3677551 insert phi'width:InterpolationMasses 2 1.38 insert phi'width:InterpolationMasses 3 1.3922449 insert phi'width:InterpolationMasses 4 1.4044898 insert phi'width:InterpolationMasses 5 1.4167347 insert phi'width:InterpolationMasses 6 1.4289796 insert phi'width:InterpolationMasses 7 1.4412245 insert phi'width:InterpolationMasses 8 1.4534694 insert phi'width:InterpolationMasses 9 1.4657143 insert phi'width:InterpolationMasses 10 1.4779592 insert phi'width:InterpolationMasses 11 1.4902041 insert phi'width:InterpolationMasses 12 1.502449 insert phi'width:InterpolationMasses 13 1.5146939 insert phi'width:InterpolationMasses 14 1.5269388 insert phi'width:InterpolationMasses 15 1.5391837 insert phi'width:InterpolationMasses 16 1.5514286 insert phi'width:InterpolationMasses 17 1.5636735 insert phi'width:InterpolationMasses 18 1.5759184 insert phi'width:InterpolationMasses 19 1.5881633 insert phi'width:InterpolationMasses 20 1.6004082 insert phi'width:InterpolationMasses 21 1.6126531 insert phi'width:InterpolationMasses 22 1.624898 insert phi'width:InterpolationMasses 23 1.6371429 insert phi'width:InterpolationMasses 24 1.6493878 insert phi'width:InterpolationMasses 25 1.6616327 insert phi'width:InterpolationMasses 26 1.6738776 insert phi'width:InterpolationMasses 27 1.6861224 insert phi'width:InterpolationMasses 28 1.6983673 insert phi'width:InterpolationMasses 29 1.7106122 insert phi'width:InterpolationMasses 30 1.7228571 insert phi'width:InterpolationMasses 31 1.735102 insert phi'width:InterpolationMasses 32 1.7473469 insert phi'width:InterpolationMasses 33 1.7595918 insert phi'width:InterpolationMasses 34 1.7718367 insert phi'width:InterpolationMasses 35 1.7840816 insert phi'width:InterpolationMasses 36 1.7963265 insert phi'width:InterpolationMasses 37 1.8085714 insert phi'width:InterpolationMasses 38 1.8208163 insert phi'width:InterpolationMasses 39 1.8330612 insert phi'width:InterpolationMasses 40 1.8453061 insert phi'width:InterpolationMasses 41 1.857551 insert phi'width:InterpolationMasses 42 1.8697959 insert phi'width:InterpolationMasses 43 1.8820408 insert phi'width:InterpolationMasses 44 1.8942857 insert phi'width:InterpolationMasses 45 1.9065306 insert phi'width:InterpolationMasses 46 1.9187755 insert phi'width:InterpolationMasses 47 1.9310204 insert phi'width:InterpolationMasses 48 1.9432653 insert phi'width:InterpolationMasses 49 1.9555102 insert phi'width:InterpolationMasses 50 1.9677551 insert phi'width:InterpolationMasses 51 1.98 insert phi'width:InterpolationMasses 52 1.9922449 insert phi'width:InterpolationMasses 53 2.0044898 insert phi'width:InterpolationMasses 54 1.3555102 insert phi'width:InterpolationMasses 55 1.3677551 insert phi'width:InterpolationMasses 56 1.38 insert phi'width:InterpolationMasses 57 1.3922449 insert phi'width:InterpolationMasses 58 1.4044898 insert phi'width:InterpolationMasses 59 1.4167347 insert phi'width:InterpolationMasses 60 1.4289796 insert phi'width:InterpolationMasses 61 1.4412245 insert phi'width:InterpolationMasses 62 1.4534694 insert phi'width:InterpolationMasses 63 1.4657143 insert phi'width:InterpolationMasses 64 1.4779592 insert phi'width:InterpolationMasses 65 1.4902041 insert phi'width:InterpolationMasses 66 1.502449 insert phi'width:InterpolationMasses 67 1.5146939 insert phi'width:InterpolationMasses 68 1.5269388 insert phi'width:InterpolationMasses 69 1.5391837 insert phi'width:InterpolationMasses 70 1.5514286 insert phi'width:InterpolationMasses 71 1.5636735 insert phi'width:InterpolationMasses 72 1.5759184 insert phi'width:InterpolationMasses 73 1.5881633 insert phi'width:InterpolationMasses 74 1.6004082 insert phi'width:InterpolationMasses 75 1.6126531 insert phi'width:InterpolationMasses 76 1.624898 insert phi'width:InterpolationMasses 77 1.6371429 insert phi'width:InterpolationMasses 78 1.6493878 insert phi'width:InterpolationMasses 79 1.6616327 insert phi'width:InterpolationMasses 80 1.6738776 insert phi'width:InterpolationMasses 81 1.6861224 insert phi'width:InterpolationMasses 82 1.6983673 insert phi'width:InterpolationMasses 83 1.7106122 insert phi'width:InterpolationMasses 84 1.7228571 insert phi'width:InterpolationMasses 85 1.735102 insert phi'width:InterpolationMasses 86 1.7473469 insert phi'width:InterpolationMasses 87 1.7595918 insert phi'width:InterpolationMasses 88 1.7718367 insert phi'width:InterpolationMasses 89 1.7840816 insert phi'width:InterpolationMasses 90 1.7963265 insert phi'width:InterpolationMasses 91 1.8085714 insert phi'width:InterpolationMasses 92 1.8208163 insert phi'width:InterpolationMasses 93 1.8330612 insert phi'width:InterpolationMasses 94 1.8453061 insert phi'width:InterpolationMasses 95 1.857551 insert phi'width:InterpolationMasses 96 1.8697959 insert phi'width:InterpolationMasses 97 1.8820408 insert phi'width:InterpolationMasses 98 1.8942857 insert phi'width:InterpolationMasses 99 1.9065306 insert phi'width:InterpolationMasses 100 1.9187755 insert phi'width:InterpolationMasses 101 1.9310204 insert phi'width:InterpolationMasses 102 1.9432653 insert phi'width:InterpolationMasses 103 1.9555102 insert phi'width:InterpolationMasses 104 1.9677551 insert phi'width:InterpolationMasses 105 1.98 insert phi'width:InterpolationMasses 106 1.9922449 insert phi'width:InterpolationMasses 107 2.0044898 insert phi'width:InterpolationMasses 108 1.3555102 insert phi'width:InterpolationMasses 109 1.3677551 insert phi'width:InterpolationMasses 110 1.38 insert phi'width:InterpolationMasses 111 1.3922449 insert phi'width:InterpolationMasses 112 1.4044898 insert phi'width:InterpolationMasses 113 1.4167347 insert phi'width:InterpolationMasses 114 1.4289796 insert phi'width:InterpolationMasses 115 1.4412245 insert phi'width:InterpolationMasses 116 1.4534694 insert phi'width:InterpolationMasses 117 1.4657143 insert phi'width:InterpolationMasses 118 1.4779592 insert phi'width:InterpolationMasses 119 1.4902041 insert phi'width:InterpolationMasses 120 1.502449 insert phi'width:InterpolationMasses 121 1.5146939 insert phi'width:InterpolationMasses 122 1.5269388 insert phi'width:InterpolationMasses 123 1.5391837 insert phi'width:InterpolationMasses 124 1.5514286 insert phi'width:InterpolationMasses 125 1.5636735 insert phi'width:InterpolationMasses 126 1.5759184 insert phi'width:InterpolationMasses 127 1.5881633 insert phi'width:InterpolationMasses 128 1.6004082 insert phi'width:InterpolationMasses 129 1.6126531 insert phi'width:InterpolationMasses 130 1.624898 insert phi'width:InterpolationMasses 131 1.6371429 insert phi'width:InterpolationMasses 132 1.6493878 insert phi'width:InterpolationMasses 133 1.6616327 insert phi'width:InterpolationMasses 134 1.6738776 insert phi'width:InterpolationMasses 135 1.6861224 insert phi'width:InterpolationMasses 136 1.6983673 insert phi'width:InterpolationMasses 137 1.7106122 insert phi'width:InterpolationMasses 138 1.7228571 insert phi'width:InterpolationMasses 139 1.735102 insert phi'width:InterpolationMasses 140 1.7473469 insert phi'width:InterpolationMasses 141 1.7595918 insert phi'width:InterpolationMasses 142 1.7718367 insert phi'width:InterpolationMasses 143 1.7840816 insert phi'width:InterpolationMasses 144 1.7963265 insert phi'width:InterpolationMasses 145 1.8085714 insert phi'width:InterpolationMasses 146 1.8208163 insert phi'width:InterpolationMasses 147 1.8330612 insert phi'width:InterpolationMasses 148 1.8453061 insert phi'width:InterpolationMasses 149 1.857551 insert phi'width:InterpolationMasses 150 1.8697959 insert phi'width:InterpolationMasses 151 1.8820408 insert phi'width:InterpolationMasses 152 1.8942857 insert phi'width:InterpolationMasses 153 1.9065306 insert phi'width:InterpolationMasses 154 1.9187755 insert phi'width:InterpolationMasses 155 1.9310204 insert phi'width:InterpolationMasses 156 1.9432653 insert phi'width:InterpolationMasses 157 1.9555102 insert phi'width:InterpolationMasses 158 1.9677551 insert phi'width:InterpolationMasses 159 1.98 insert phi'width:InterpolationMasses 160 1.9922449 insert phi'width:InterpolationMasses 161 2.0044898 insert phi'width:InterpolationMasses 162 1.3555102 insert phi'width:InterpolationMasses 163 1.3677551 insert phi'width:InterpolationMasses 164 1.38 insert phi'width:InterpolationMasses 165 1.3922449 insert phi'width:InterpolationMasses 166 1.4044898 insert phi'width:InterpolationMasses 167 1.4167347 insert phi'width:InterpolationMasses 168 1.4289796 insert phi'width:InterpolationMasses 169 1.4412245 insert phi'width:InterpolationMasses 170 1.4534694 insert phi'width:InterpolationMasses 171 1.4657143 insert phi'width:InterpolationMasses 172 1.4779592 insert phi'width:InterpolationMasses 173 1.4902041 insert phi'width:InterpolationMasses 174 1.502449 insert phi'width:InterpolationMasses 175 1.5146939 insert phi'width:InterpolationMasses 176 1.5269388 insert phi'width:InterpolationMasses 177 1.5391837 insert phi'width:InterpolationMasses 178 1.5514286 insert phi'width:InterpolationMasses 179 1.5636735 insert phi'width:InterpolationMasses 180 1.5759184 insert phi'width:InterpolationMasses 181 1.5881633 insert phi'width:InterpolationMasses 182 1.6004082 insert phi'width:InterpolationMasses 183 1.6126531 insert phi'width:InterpolationMasses 184 1.624898 insert phi'width:InterpolationMasses 185 1.6371429 insert phi'width:InterpolationMasses 186 1.6493878 insert phi'width:InterpolationMasses 187 1.6616327 insert phi'width:InterpolationMasses 188 1.6738776 insert phi'width:InterpolationMasses 189 1.6861224 insert phi'width:InterpolationMasses 190 1.6983673 insert phi'width:InterpolationMasses 191 1.7106122 insert phi'width:InterpolationMasses 192 1.7228571 insert phi'width:InterpolationMasses 193 1.735102 insert phi'width:InterpolationMasses 194 1.7473469 insert phi'width:InterpolationMasses 195 1.7595918 insert phi'width:InterpolationMasses 196 1.7718367 insert phi'width:InterpolationMasses 197 1.7840816 insert phi'width:InterpolationMasses 198 1.7963265 insert phi'width:InterpolationMasses 199 1.8085714 insert phi'width:InterpolationMasses 200 1.8208163 insert phi'width:InterpolationMasses 201 1.8330612 insert phi'width:InterpolationMasses 202 1.8453061 insert phi'width:InterpolationMasses 203 1.857551 insert phi'width:InterpolationMasses 204 1.8697959 insert phi'width:InterpolationMasses 205 1.8820408 insert phi'width:InterpolationMasses 206 1.8942857 insert phi'width:InterpolationMasses 207 1.9065306 insert phi'width:InterpolationMasses 208 1.9187755 insert phi'width:InterpolationMasses 209 1.9310204 insert phi'width:InterpolationMasses 210 1.9432653 insert phi'width:InterpolationMasses 211 1.9555102 insert phi'width:InterpolationMasses 212 1.9677551 insert phi'width:InterpolationMasses 213 1.98 insert phi'width:InterpolationMasses 214 1.9922449 insert phi'width:InterpolationMasses 215 2.0044898 insert phi'width:InterpolationWidths 0 0.0001662732 insert phi'width:InterpolationWidths 1 0.00025526008 insert phi'width:InterpolationWidths 2 0.0004009983 insert phi'width:InterpolationWidths 3 0.0006353293 insert phi'width:InterpolationWidths 4 0.00098164917 insert phi'width:InterpolationWidths 5 0.0014460403 insert phi'width:InterpolationWidths 6 0.0020255799 insert phi'width:InterpolationWidths 7 0.0027154016 insert phi'width:InterpolationWidths 8 0.0035109781 insert phi'width:InterpolationWidths 9 0.0044085599 insert phi'width:InterpolationWidths 10 0.0054051395 insert phi'width:InterpolationWidths 11 0.0064983248 insert phi'width:InterpolationWidths 12 0.007686216 insert phi'width:InterpolationWidths 13 0.0089673056 insert phi'width:InterpolationWidths 14 0.010340401 insert phi'width:InterpolationWidths 15 0.011804562 insert phi'width:InterpolationWidths 16 0.013359059 insert phi'width:InterpolationWidths 17 0.015003331 insert phi'width:InterpolationWidths 18 0.016736963 insert phi'width:InterpolationWidths 19 0.018559658 insert phi'width:InterpolationWidths 20 0.020471222 insert phi'width:InterpolationWidths 21 0.022471547 insert phi'width:InterpolationWidths 22 0.024560603 insert phi'width:InterpolationWidths 23 0.026738423 insert phi'width:InterpolationWidths 24 0.029005097 insert phi'width:InterpolationWidths 25 0.031360767 insert phi'width:InterpolationWidths 26 0.033805616 insert phi'width:InterpolationWidths 27 0.036339868 insert phi'width:InterpolationWidths 28 0.038963782 insert phi'width:InterpolationWidths 29 0.041677646 insert phi'width:InterpolationWidths 30 0.044481778 insert phi'width:InterpolationWidths 31 0.04737652 insert phi'width:InterpolationWidths 32 0.050362238 insert phi'width:InterpolationWidths 33 0.053439316 insert phi'width:InterpolationWidths 34 0.056608159 insert phi'width:InterpolationWidths 35 0.059869189 insert phi'width:InterpolationWidths 36 0.063222842 insert phi'width:InterpolationWidths 37 0.066669569 insert phi'width:InterpolationWidths 38 0.07020765 insert phi'width:InterpolationWidths 39 0.073844118 insert phi'width:InterpolationWidths 40 0.077572904 insert phi'width:InterpolationWidths 41 0.081396693 insert phi'width:InterpolationWidths 42 0.085315991 insert phi'width:InterpolationWidths 43 0.089331316 insert phi'width:InterpolationWidths 44 0.093443203 insert phi'width:InterpolationWidths 45 0.097651884 insert phi'width:InterpolationWidths 46 0.10195707 insert phi'width:InterpolationWidths 47 0.10635887 insert phi'width:InterpolationWidths 48 0.1108575 insert phi'width:InterpolationWidths 49 0.11545323 insert phi'width:InterpolationWidths 50 0.12014636 insert phi'width:InterpolationWidths 51 0.1249372 insert phi'width:InterpolationWidths 52 0.12982611 insert phi'width:InterpolationWidths 53 0.13481344 insert phi'width:InterpolationWidths 54 0.0001662732 insert phi'width:InterpolationWidths 55 0.00025526008 insert phi'width:InterpolationWidths 56 0.0004009983 insert phi'width:InterpolationWidths 57 0.0006353293 insert phi'width:InterpolationWidths 58 0.00098164917 insert phi'width:InterpolationWidths 59 0.0014460403 insert phi'width:InterpolationWidths 60 0.0020255799 insert phi'width:InterpolationWidths 61 0.0027154016 insert phi'width:InterpolationWidths 62 0.0035109781 insert phi'width:InterpolationWidths 63 0.0044085599 insert phi'width:InterpolationWidths 64 0.0054051395 insert phi'width:InterpolationWidths 65 0.0064983248 insert phi'width:InterpolationWidths 66 0.007686216 insert phi'width:InterpolationWidths 67 0.0089673056 insert phi'width:InterpolationWidths 68 0.010340401 insert phi'width:InterpolationWidths 69 0.011804562 insert phi'width:InterpolationWidths 70 0.013359059 insert phi'width:InterpolationWidths 71 0.015003331 insert phi'width:InterpolationWidths 72 0.016736963 insert phi'width:InterpolationWidths 73 0.018559658 insert phi'width:InterpolationWidths 74 0.020471222 insert phi'width:InterpolationWidths 75 0.022471547 insert phi'width:InterpolationWidths 76 0.024560603 insert phi'width:InterpolationWidths 77 0.026738423 insert phi'width:InterpolationWidths 78 0.029005097 insert phi'width:InterpolationWidths 79 0.031360767 insert phi'width:InterpolationWidths 80 0.033805616 insert phi'width:InterpolationWidths 81 0.036339868 insert phi'width:InterpolationWidths 82 0.038963782 insert phi'width:InterpolationWidths 83 0.041677646 insert phi'width:InterpolationWidths 84 0.044481778 insert phi'width:InterpolationWidths 85 0.04737652 insert phi'width:InterpolationWidths 86 0.050362238 insert phi'width:InterpolationWidths 87 0.053439316 insert phi'width:InterpolationWidths 88 0.056608159 insert phi'width:InterpolationWidths 89 0.059869189 insert phi'width:InterpolationWidths 90 0.063222842 insert phi'width:InterpolationWidths 91 0.066669569 insert phi'width:InterpolationWidths 92 0.07020765 insert phi'width:InterpolationWidths 93 0.073844118 insert phi'width:InterpolationWidths 94 0.077572904 insert phi'width:InterpolationWidths 95 0.081396693 insert phi'width:InterpolationWidths 96 0.085315991 insert phi'width:InterpolationWidths 97 0.089331316 insert phi'width:InterpolationWidths 98 0.093443203 insert phi'width:InterpolationWidths 99 0.097651884 insert phi'width:InterpolationWidths 100 0.10195707 insert phi'width:InterpolationWidths 101 0.10635887 insert phi'width:InterpolationWidths 102 0.1108575 insert phi'width:InterpolationWidths 103 0.11545323 insert phi'width:InterpolationWidths 104 0.12014636 insert phi'width:InterpolationWidths 105 0.1249372 insert phi'width:InterpolationWidths 106 0.12982611 insert phi'width:InterpolationWidths 107 0.13481344 insert phi'width:InterpolationWidths 108 0.00013577942 insert phi'width:InterpolationWidths 109 0.00020433533 insert phi'width:InterpolationWidths 110 0.00031423898 insert phi'width:InterpolationWidths 111 0.00049435963 insert phi'width:InterpolationWidths 112 0.00077783824 insert phi'width:InterpolationWidths 113 0.0011834559 insert phi'width:InterpolationWidths 114 0.001713243 insert phi'width:InterpolationWidths 115 0.002362773 insert phi'width:InterpolationWidths 116 0.0031267712 insert phi'width:InterpolationWidths 117 0.0040006194 insert phi'width:InterpolationWidths 118 0.004980558 insert phi'width:InterpolationWidths 119 0.0060635862 insert phi'width:InterpolationWidths 120 0.0072473181 insert phi'width:InterpolationWidths 121 0.0085298576 insert phi'width:InterpolationWidths 122 0.009909698 insert phi'width:InterpolationWidths 123 0.011385645 insert phi'width:InterpolationWidths 124 0.012956758 insert phi'width:InterpolationWidths 125 0.014622303 insert phi'width:InterpolationWidths 126 0.016381719 insert phi'width:InterpolationWidths 127 0.018234589 insert phi'width:InterpolationWidths 128 0.020180614 insert phi'width:InterpolationWidths 129 0.022219603 insert phi'width:InterpolationWidths 130 0.024351448 insert phi'width:InterpolationWidths 131 0.026576121 insert phi'width:InterpolationWidths 132 0.028893659 insert phi'width:InterpolationWidths 133 0.031304156 insert phi'width:InterpolationWidths 134 0.033807759 insert phi'width:InterpolationWidths 135 0.036404658 insert phi'width:InterpolationWidths 136 0.039095083 insert phi'width:InterpolationWidths 137 0.041879301 insert phi'width:InterpolationWidths 138 0.044757608 insert phi'width:InterpolationWidths 139 0.047730331 insert phi'width:InterpolationWidths 140 0.050797823 insert phi'width:InterpolationWidths 141 0.053960458 insert phi'width:InterpolationWidths 142 0.057218634 insert phi'width:InterpolationWidths 143 0.060572765 insert phi'width:InterpolationWidths 144 0.064023286 insert phi'width:InterpolationWidths 145 0.067570645 insert phi'width:InterpolationWidths 146 0.07121325 insert phi'width:InterpolationWidths 147 0.074955402 insert phi'width:InterpolationWidths 148 0.078798464 insert phi'width:InterpolationWidths 149 0.082737951 insert phi'width:InterpolationWidths 150 0.086776724 insert phi'width:InterpolationWidths 151 0.090915306 insert phi'width:InterpolationWidths 152 0.095154229 insert phi'width:InterpolationWidths 153 0.099493923 insert phi'width:InterpolationWidths 154 0.10393407 insert phi'width:InterpolationWidths 155 0.10847472 insert phi'width:InterpolationWidths 156 0.11311607 insert phi'width:InterpolationWidths 157 0.11785837 insert phi'width:InterpolationWidths 158 0.12270192 insert phi'width:InterpolationWidths 159 0.12764705 insert phi'width:InterpolationWidths 160 0.1326941 insert phi'width:InterpolationWidths 161 0.13784344 insert phi'width:InterpolationWidths 162 0.00013577942 insert phi'width:InterpolationWidths 163 0.00020433533 insert phi'width:InterpolationWidths 164 0.00031423898 insert phi'width:InterpolationWidths 165 0.00049435963 insert phi'width:InterpolationWidths 166 0.00077783824 insert phi'width:InterpolationWidths 167 0.0011834559 insert phi'width:InterpolationWidths 168 0.001713243 insert phi'width:InterpolationWidths 169 0.002362773 insert phi'width:InterpolationWidths 170 0.0031267712 insert phi'width:InterpolationWidths 171 0.0040006194 insert phi'width:InterpolationWidths 172 0.004980558 insert phi'width:InterpolationWidths 173 0.0060635862 insert phi'width:InterpolationWidths 174 0.0072473181 insert phi'width:InterpolationWidths 175 0.0085298576 insert phi'width:InterpolationWidths 176 0.009909698 insert phi'width:InterpolationWidths 177 0.011385645 insert phi'width:InterpolationWidths 178 0.012956758 insert phi'width:InterpolationWidths 179 0.014622303 insert phi'width:InterpolationWidths 180 0.016381719 insert phi'width:InterpolationWidths 181 0.018234589 insert phi'width:InterpolationWidths 182 0.020180614 insert phi'width:InterpolationWidths 183 0.022219603 insert phi'width:InterpolationWidths 184 0.024351448 insert phi'width:InterpolationWidths 185 0.026576121 insert phi'width:InterpolationWidths 186 0.028893659 insert phi'width:InterpolationWidths 187 0.031304156 insert phi'width:InterpolationWidths 188 0.033807759 insert phi'width:InterpolationWidths 189 0.036404658 insert phi'width:InterpolationWidths 190 0.039095083 insert phi'width:InterpolationWidths 191 0.041879301 insert phi'width:InterpolationWidths 192 0.044757608 insert phi'width:InterpolationWidths 193 0.047730331 insert phi'width:InterpolationWidths 194 0.050797823 insert phi'width:InterpolationWidths 195 0.053960458 insert phi'width:InterpolationWidths 196 0.057218634 insert phi'width:InterpolationWidths 197 0.060572765 insert phi'width:InterpolationWidths 198 0.064023286 insert phi'width:InterpolationWidths 199 0.067570645 insert phi'width:InterpolationWidths 200 0.07121325 insert phi'width:InterpolationWidths 201 0.074955402 insert phi'width:InterpolationWidths 202 0.078798464 insert phi'width:InterpolationWidths 203 0.082737951 insert phi'width:InterpolationWidths 204 0.086776724 insert phi'width:InterpolationWidths 205 0.090915306 insert phi'width:InterpolationWidths 206 0.095154229 insert phi'width:InterpolationWidths 207 0.099493923 insert phi'width:InterpolationWidths 208 0.10393407 insert phi'width:InterpolationWidths 209 0.10847472 insert phi'width:InterpolationWidths 210 0.11311607 insert phi'width:InterpolationWidths 211 0.11785837 insert phi'width:InterpolationWidths 212 0.12270192 insert phi'width:InterpolationWidths 213 0.12764705 insert phi'width:InterpolationWidths 214 0.1326941 insert phi'width:InterpolationWidths 215 0.13784344 insert phi'width:NumberofEntries 0 54 insert phi'width:NumberofEntries 1 108 insert phi'width:NumberofEntries 2 162 insert phi'width:NumberofEntries 3 216 insert phi'width:NumberofEntries 4 216 insert phi'width:NumberofEntries 5 216 newdef /Herwig/Particles/phi':Width_generator phi'width # create Herwig::GenericWidthGenerator omega''width newdef omega''width:Particle /Herwig/Particles/omega'' newdef omega''width:Prefactor 0.999782 newdef omega''width:BRNormalize 1 newdef omega''width:BRMinimum 0.01 newdef omega''width:Points 50 newdef omega''width:InterpolationOrder 1 insert omega''width:MEtype 0 0 insert omega''width:MEtype 1 0 insert omega''width:MEtype 2 2 insert omega''width:MEtype 3 2 insert omega''width:MEtype 4 2 insert omega''width:MEcode 0 0 insert omega''width:MEcode 1 0 insert omega''width:MEcode 2 0 insert omega''width:MEcode 3 0 insert omega''width:MEcode 4 0 insert omega''width:MEcoupling 0 0.333333 insert omega''width:MEcoupling 1 0.166667 insert omega''width:MEcoupling 2 1.00183 insert omega''width:MEcoupling 3 1.00183 insert omega''width:MEcoupling 4 0.999525 insert omega''width:ModeOn 0 1 insert omega''width:ModeOn 1 1 insert omega''width:ModeOn 2 1 insert omega''width:ModeOn 3 1 insert omega''width:ModeOn 4 1 insert omega''width:MinimumMasses 0 0.97689 insert omega''width:MinimumMasses 1 0.967705 insert omega''width:MinimumMasses 2 0.51507 insert omega''width:MinimumMasses 3 0.51507 insert omega''width:MinimumMasses 4 0.510478 insert omega''width:MEmass1 0 0 insert omega''width:MEmass1 1 0 insert omega''width:MEmass1 2 0.7755 insert omega''width:MEmass1 3 0.7755 insert omega''width:MEmass1 4 0.7755 insert omega''width:MEmass2 0 0 insert omega''width:MEmass2 1 0 insert omega''width:MEmass2 2 0.13957 insert omega''width:MEmass2 3 0.13957 insert omega''width:MEmass2 4 0.134978 insert omega''width:DecayModes 0 omega''->omega,pi+,pi-; insert omega''width:DecayModes 1 omega''->omega,pi0,pi0; insert omega''width:DecayModes 2 omega''->rho+,pi-; insert omega''width:DecayModes 3 omega''->rho-,pi+; insert omega''width:DecayModes 4 omega''->rho0,pi0; insert omega''width:InterpolationMasses 0 0.98857143 insert omega''width:InterpolationMasses 1 1.0142857 insert omega''width:InterpolationMasses 2 1.04 insert omega''width:InterpolationMasses 3 1.0657143 insert omega''width:InterpolationMasses 4 1.0914286 insert omega''width:InterpolationMasses 5 1.1171429 insert omega''width:InterpolationMasses 6 1.1428571 insert omega''width:InterpolationMasses 7 1.1685714 insert omega''width:InterpolationMasses 8 1.1942857 insert omega''width:InterpolationMasses 9 1.22 insert omega''width:InterpolationMasses 10 1.2457143 insert omega''width:InterpolationMasses 11 1.2714286 insert omega''width:InterpolationMasses 12 1.2971429 insert omega''width:InterpolationMasses 13 1.3228571 insert omega''width:InterpolationMasses 14 1.3485714 insert omega''width:InterpolationMasses 15 1.3742857 insert omega''width:InterpolationMasses 16 1.4 insert omega''width:InterpolationMasses 17 1.4257143 insert omega''width:InterpolationMasses 18 1.4514286 insert omega''width:InterpolationMasses 19 1.4771429 insert omega''width:InterpolationMasses 20 1.5028571 insert omega''width:InterpolationMasses 21 1.5285714 insert omega''width:InterpolationMasses 22 1.5542857 insert omega''width:InterpolationMasses 23 1.58 insert omega''width:InterpolationMasses 24 1.6057143 insert omega''width:InterpolationMasses 25 1.6314286 insert omega''width:InterpolationMasses 26 1.6571429 insert omega''width:InterpolationMasses 27 1.6828571 insert omega''width:InterpolationMasses 28 1.7085714 insert omega''width:InterpolationMasses 29 1.7342857 insert omega''width:InterpolationMasses 30 1.76 insert omega''width:InterpolationMasses 31 1.7857143 insert omega''width:InterpolationMasses 32 1.8114286 insert omega''width:InterpolationMasses 33 1.8371429 insert omega''width:InterpolationMasses 34 1.8628571 insert omega''width:InterpolationMasses 35 1.8885714 insert omega''width:InterpolationMasses 36 1.9142857 insert omega''width:InterpolationMasses 37 1.94 insert omega''width:InterpolationMasses 38 1.9657143 insert omega''width:InterpolationMasses 39 1.9914286 insert omega''width:InterpolationMasses 40 2.0171429 insert omega''width:InterpolationMasses 41 2.0428571 insert omega''width:InterpolationMasses 42 2.0685714 insert omega''width:InterpolationMasses 43 2.0942857 insert omega''width:InterpolationMasses 44 2.12 insert omega''width:InterpolationMasses 45 2.1457143 insert omega''width:InterpolationMasses 46 2.1714286 insert omega''width:InterpolationMasses 47 2.1971429 insert omega''width:InterpolationMasses 48 2.2228571 insert omega''width:InterpolationMasses 49 2.2485714 insert omega''width:InterpolationMasses 50 2.2742857 insert omega''width:InterpolationMasses 51 2.3 insert omega''width:InterpolationMasses 52 2.3257143 insert omega''width:InterpolationMasses 53 2.3514286 insert omega''width:InterpolationMasses 54 0.98857143 insert omega''width:InterpolationMasses 55 1.0142857 insert omega''width:InterpolationMasses 56 1.04 insert omega''width:InterpolationMasses 57 1.0657143 insert omega''width:InterpolationMasses 58 1.0914286 insert omega''width:InterpolationMasses 59 1.1171429 insert omega''width:InterpolationMasses 60 1.1428571 insert omega''width:InterpolationMasses 61 1.1685714 insert omega''width:InterpolationMasses 62 1.1942857 insert omega''width:InterpolationMasses 63 1.22 insert omega''width:InterpolationMasses 64 1.2457143 insert omega''width:InterpolationMasses 65 1.2714286 insert omega''width:InterpolationMasses 66 1.2971429 insert omega''width:InterpolationMasses 67 1.3228571 insert omega''width:InterpolationMasses 68 1.3485714 insert omega''width:InterpolationMasses 69 1.3742857 insert omega''width:InterpolationMasses 70 1.4 insert omega''width:InterpolationMasses 71 1.4257143 insert omega''width:InterpolationMasses 72 1.4514286 insert omega''width:InterpolationMasses 73 1.4771429 insert omega''width:InterpolationMasses 74 1.5028571 insert omega''width:InterpolationMasses 75 1.5285714 insert omega''width:InterpolationMasses 76 1.5542857 insert omega''width:InterpolationMasses 77 1.58 insert omega''width:InterpolationMasses 78 1.6057143 insert omega''width:InterpolationMasses 79 1.6314286 insert omega''width:InterpolationMasses 80 1.6571429 insert omega''width:InterpolationMasses 81 1.6828571 insert omega''width:InterpolationMasses 82 1.7085714 insert omega''width:InterpolationMasses 83 1.7342857 insert omega''width:InterpolationMasses 84 1.76 insert omega''width:InterpolationMasses 85 1.7857143 insert omega''width:InterpolationMasses 86 1.8114286 insert omega''width:InterpolationMasses 87 1.8371429 insert omega''width:InterpolationMasses 88 1.8628571 insert omega''width:InterpolationMasses 89 1.8885714 insert omega''width:InterpolationMasses 90 1.9142857 insert omega''width:InterpolationMasses 91 1.94 insert omega''width:InterpolationMasses 92 1.9657143 insert omega''width:InterpolationMasses 93 1.9914286 insert omega''width:InterpolationMasses 94 2.0171429 insert omega''width:InterpolationMasses 95 2.0428571 insert omega''width:InterpolationMasses 96 2.0685714 insert omega''width:InterpolationMasses 97 2.0942857 insert omega''width:InterpolationMasses 98 2.12 insert omega''width:InterpolationMasses 99 2.1457143 insert omega''width:InterpolationMasses 100 2.1714286 insert omega''width:InterpolationMasses 101 2.1971429 insert omega''width:InterpolationMasses 102 2.2228571 insert omega''width:InterpolationMasses 103 2.2485714 insert omega''width:InterpolationMasses 104 2.2742857 insert omega''width:InterpolationMasses 105 2.3 insert omega''width:InterpolationMasses 106 2.3257143 insert omega''width:InterpolationMasses 107 2.3514286 insert omega''width:InterpolationMasses 108 0.98857143 insert omega''width:InterpolationMasses 109 1.0142857 insert omega''width:InterpolationMasses 110 1.04 insert omega''width:InterpolationMasses 111 1.0657143 insert omega''width:InterpolationMasses 112 1.0914286 insert omega''width:InterpolationMasses 113 1.1171429 insert omega''width:InterpolationMasses 114 1.1428571 insert omega''width:InterpolationMasses 115 1.1685714 insert omega''width:InterpolationMasses 116 1.1942857 insert omega''width:InterpolationMasses 117 1.22 insert omega''width:InterpolationMasses 118 1.2457143 insert omega''width:InterpolationMasses 119 1.2714286 insert omega''width:InterpolationMasses 120 1.2971429 insert omega''width:InterpolationMasses 121 1.3228571 insert omega''width:InterpolationMasses 122 1.3485714 insert omega''width:InterpolationMasses 123 1.3742857 insert omega''width:InterpolationMasses 124 1.4 insert omega''width:InterpolationMasses 125 1.4257143 insert omega''width:InterpolationMasses 126 1.4514286 insert omega''width:InterpolationMasses 127 1.4771429 insert omega''width:InterpolationMasses 128 1.5028571 insert omega''width:InterpolationMasses 129 1.5285714 insert omega''width:InterpolationMasses 130 1.5542857 insert omega''width:InterpolationMasses 131 1.58 insert omega''width:InterpolationMasses 132 1.6057143 insert omega''width:InterpolationMasses 133 1.6314286 insert omega''width:InterpolationMasses 134 1.6571429 insert omega''width:InterpolationMasses 135 1.6828571 insert omega''width:InterpolationMasses 136 1.7085714 insert omega''width:InterpolationMasses 137 1.7342857 insert omega''width:InterpolationMasses 138 1.76 insert omega''width:InterpolationMasses 139 1.7857143 insert omega''width:InterpolationMasses 140 1.8114286 insert omega''width:InterpolationMasses 141 1.8371429 insert omega''width:InterpolationMasses 142 1.8628571 insert omega''width:InterpolationMasses 143 1.8885714 insert omega''width:InterpolationMasses 144 1.9142857 insert omega''width:InterpolationMasses 145 1.94 insert omega''width:InterpolationMasses 146 1.9657143 insert omega''width:InterpolationMasses 147 1.9914286 insert omega''width:InterpolationMasses 148 2.0171429 insert omega''width:InterpolationMasses 149 2.0428571 insert omega''width:InterpolationMasses 150 2.0685714 insert omega''width:InterpolationMasses 151 2.0942857 insert omega''width:InterpolationMasses 152 2.12 insert omega''width:InterpolationMasses 153 2.1457143 insert omega''width:InterpolationMasses 154 2.1714286 insert omega''width:InterpolationMasses 155 2.1971429 insert omega''width:InterpolationMasses 156 2.2228571 insert omega''width:InterpolationMasses 157 2.2485714 insert omega''width:InterpolationMasses 158 2.2742857 insert omega''width:InterpolationMasses 159 2.3 insert omega''width:InterpolationMasses 160 2.3257143 insert omega''width:InterpolationMasses 161 2.3514286 insert omega''width:InterpolationWidths 0 0.00095167711 insert omega''width:InterpolationWidths 1 0.0013180207 insert omega''width:InterpolationWidths 2 0.0017699567 insert omega''width:InterpolationWidths 3 0.0023133455 insert omega''width:InterpolationWidths 4 0.0029536521 insert omega''width:InterpolationWidths 5 0.0036960542 insert omega''width:InterpolationWidths 6 0.0045455015 insert omega''width:InterpolationWidths 7 0.0055067534 insert omega''width:InterpolationWidths 8 0.0065844069 insert omega''width:InterpolationWidths 9 0.0077829185 insert omega''width:InterpolationWidths 10 0.0091066228 insert omega''width:InterpolationWidths 11 0.010559748 insert omega''width:InterpolationWidths 12 0.012146429 insert omega''width:InterpolationWidths 13 0.01387072 insert omega''width:InterpolationWidths 14 0.015736605 insert omega''width:InterpolationWidths 15 0.017748021 insert omega''width:InterpolationWidths 16 0.019908811 insert omega''width:InterpolationWidths 17 0.022222775 insert omega''width:InterpolationWidths 18 0.024692988 insert omega''width:InterpolationWidths 19 0.027322257 insert omega''width:InterpolationWidths 20 0.030113515 insert omega''width:InterpolationWidths 21 0.033069683 insert omega''width:InterpolationWidths 22 0.03619365 insert omega''width:InterpolationWidths 23 0.039488275 insert omega''width:InterpolationWidths 24 0.042956384 insert omega''width:InterpolationWidths 25 0.046600776 insert omega''width:InterpolationWidths 26 0.050424229 insert omega''width:InterpolationWidths 27 0.054429495 insert omega''width:InterpolationWidths 28 0.058619313 insert omega''width:InterpolationWidths 29 0.062996404 insert omega''width:InterpolationWidths 30 0.067563475 insert omega''width:InterpolationWidths 31 0.072323226 insert omega''width:InterpolationWidths 32 0.077278343 insert omega''width:InterpolationWidths 33 0.082431508 insert omega''width:InterpolationWidths 34 0.087785395 insert omega''width:InterpolationWidths 35 0.093342675 insert omega''width:InterpolationWidths 36 0.099106011 insert omega''width:InterpolationWidths 37 0.10507807 insert omega''width:InterpolationWidths 38 0.1112615 insert omega''width:InterpolationWidths 39 0.11765897 insert omega''width:InterpolationWidths 40 0.12427314 insert omega''width:InterpolationWidths 41 0.13110666 insert omega''width:InterpolationWidths 42 0.13816218 insert omega''width:InterpolationWidths 43 0.14544236 insert omega''width:InterpolationWidths 44 0.15294986 insert omega''width:InterpolationWidths 45 0.16068733 insert omega''width:InterpolationWidths 46 0.16865743 insert omega''width:InterpolationWidths 47 0.17686282 insert omega''width:InterpolationWidths 48 0.18530617 insert omega''width:InterpolationWidths 49 0.19399012 insert omega''width:InterpolationWidths 50 0.20291734 insert omega''width:InterpolationWidths 51 0.21209049 insert omega''width:InterpolationWidths 52 0.22151225 insert omega''width:InterpolationWidths 53 0.23118527 insert omega''width:InterpolationWidths 54 0.00095167711 insert omega''width:InterpolationWidths 55 0.0013180207 insert omega''width:InterpolationWidths 56 0.0017699567 insert omega''width:InterpolationWidths 57 0.0023133455 insert omega''width:InterpolationWidths 58 0.0029536521 insert omega''width:InterpolationWidths 59 0.0036960542 insert omega''width:InterpolationWidths 60 0.0045455015 insert omega''width:InterpolationWidths 61 0.0055067534 insert omega''width:InterpolationWidths 62 0.0065844069 insert omega''width:InterpolationWidths 63 0.0077829185 insert omega''width:InterpolationWidths 64 0.0091066228 insert omega''width:InterpolationWidths 65 0.010559748 insert omega''width:InterpolationWidths 66 0.012146429 insert omega''width:InterpolationWidths 67 0.01387072 insert omega''width:InterpolationWidths 68 0.015736605 insert omega''width:InterpolationWidths 69 0.017748021 insert omega''width:InterpolationWidths 70 0.019908811 insert omega''width:InterpolationWidths 71 0.022222775 insert omega''width:InterpolationWidths 72 0.024692988 insert omega''width:InterpolationWidths 73 0.027322257 insert omega''width:InterpolationWidths 74 0.030113515 insert omega''width:InterpolationWidths 75 0.033069683 insert omega''width:InterpolationWidths 76 0.03619365 insert omega''width:InterpolationWidths 77 0.039488275 insert omega''width:InterpolationWidths 78 0.042956384 insert omega''width:InterpolationWidths 79 0.046600776 insert omega''width:InterpolationWidths 80 0.050424229 insert omega''width:InterpolationWidths 81 0.054429495 insert omega''width:InterpolationWidths 82 0.058619313 insert omega''width:InterpolationWidths 83 0.062996404 insert omega''width:InterpolationWidths 84 0.067563475 insert omega''width:InterpolationWidths 85 0.072323226 insert omega''width:InterpolationWidths 86 0.077278343 insert omega''width:InterpolationWidths 87 0.082431508 insert omega''width:InterpolationWidths 88 0.087785395 insert omega''width:InterpolationWidths 89 0.093342675 insert omega''width:InterpolationWidths 90 0.099106011 insert omega''width:InterpolationWidths 91 0.10507807 insert omega''width:InterpolationWidths 92 0.1112615 insert omega''width:InterpolationWidths 93 0.11765897 insert omega''width:InterpolationWidths 94 0.12427314 insert omega''width:InterpolationWidths 95 0.13110666 insert omega''width:InterpolationWidths 96 0.13816218 insert omega''width:InterpolationWidths 97 0.14544236 insert omega''width:InterpolationWidths 98 0.15294986 insert omega''width:InterpolationWidths 99 0.16068733 insert omega''width:InterpolationWidths 100 0.16865743 insert omega''width:InterpolationWidths 101 0.17686282 insert omega''width:InterpolationWidths 102 0.18530617 insert omega''width:InterpolationWidths 103 0.19399012 insert omega''width:InterpolationWidths 104 0.20291734 insert omega''width:InterpolationWidths 105 0.21209049 insert omega''width:InterpolationWidths 106 0.22151225 insert omega''width:InterpolationWidths 107 0.23118527 insert omega''width:InterpolationWidths 108 0.00098268351 insert omega''width:InterpolationWidths 109 0.0013548469 insert omega''width:InterpolationWidths 110 0.0018123068 insert omega''width:InterpolationWidths 111 0.0023609193 insert omega''width:InterpolationWidths 112 0.003006166 insert omega''width:InterpolationWidths 113 0.0037532474 insert omega''width:InterpolationWidths 114 0.0046071365 insert omega''width:InterpolationWidths 115 0.0055726149 insert omega''width:InterpolationWidths 116 0.0066542999 insert omega''width:InterpolationWidths 117 0.0078566662 insert omega''width:InterpolationWidths 118 0.0091840649 insert omega''width:InterpolationWidths 119 0.010640739 insert omega''width:InterpolationWidths 120 0.012230837 insert omega''width:InterpolationWidths 121 0.013958426 insert omega''width:InterpolationWidths 122 0.015827501 insert omega''width:InterpolationWidths 123 0.017842011 insert omega''width:InterpolationWidths 124 0.020005807 insert omega''width:InterpolationWidths 125 0.022322649 insert omega''width:InterpolationWidths 126 0.024795516 insert omega''width:InterpolationWidths 127 0.027427292 insert omega''width:InterpolationWidths 128 0.030220935 insert omega''width:InterpolationWidths 129 0.033179383 insert omega''width:InterpolationWidths 130 0.036305537 insert omega''width:InterpolationWidths 131 0.039602263 insert omega''width:InterpolationWidths 132 0.043072396 insert omega''width:InterpolationWidths 133 0.046718742 insert omega''width:InterpolationWidths 134 0.050544082 insert omega''width:InterpolationWidths 135 0.054551174 insert omega''width:InterpolationWidths 136 0.058742761 insert omega''width:InterpolationWidths 137 0.063121566 insert omega''width:InterpolationWidths 138 0.067690301 insert omega''width:InterpolationWidths 139 0.072451666 insert omega''width:InterpolationWidths 140 0.077408353 insert omega''width:InterpolationWidths 141 0.082563044 insert omega''width:InterpolationWidths 142 0.087918416 insert omega''width:InterpolationWidths 143 0.093477139 insert omega''width:InterpolationWidths 144 0.09924188 insert omega''width:InterpolationWidths 145 0.1052153 insert omega''width:InterpolationWidths 146 0.11140007 insert omega''width:InterpolationWidths 147 0.11779884 insert omega''width:InterpolationWidths 148 0.12441427 insert omega''width:InterpolationWidths 149 0.13124901 insert omega''width:InterpolationWidths 150 0.13830573 insert omega''width:InterpolationWidths 151 0.14558708 insert omega''width:InterpolationWidths 152 0.15309571 insert omega''width:InterpolationWidths 153 0.16083428 insert omega''width:InterpolationWidths 154 0.16880546 insert omega''width:InterpolationWidths 155 0.17701189 insert omega''width:InterpolationWidths 156 0.18545625 insert omega''width:InterpolationWidths 157 0.19414118 insert omega''width:InterpolationWidths 158 0.20306936 insert omega''width:InterpolationWidths 159 0.21224344 insert omega''width:InterpolationWidths 160 0.22166609 insert omega''width:InterpolationWidths 161 0.23133998 insert omega''width:NumberofEntries 0 0 insert omega''width:NumberofEntries 1 0 insert omega''width:NumberofEntries 2 54 insert omega''width:NumberofEntries 3 108 insert omega''width:NumberofEntries 4 162 newdef /Herwig/Particles/omega'':Width_generator omega''width # create Herwig::GenericWidthGenerator f_1width newdef f_1width:Particle /Herwig/Particles/f_1 newdef f_1width:Prefactor 1.02534 newdef f_1width:BRNormalize 1 newdef f_1width:BRMinimum 0.01 newdef f_1width:Points 50 newdef f_1width:InterpolationOrder 1 insert f_1width:MEtype 0 0 insert f_1width:MEtype 1 0 insert f_1width:MEtype 2 0 insert f_1width:MEtype 3 0 insert f_1width:MEtype 4 2 insert f_1width:MEtype 5 2 insert f_1width:MEtype 6 2 insert f_1width:MEtype 7 0 insert f_1width:MEtype 8 0 insert f_1width:MEtype 9 0 insert f_1width:MEtype 10 0 insert f_1width:MEtype 11 0 insert f_1width:MEtype 12 0 insert f_1width:MEtype 13 0 insert f_1width:MEcode 0 0 insert f_1width:MEcode 1 0 insert f_1width:MEcode 2 0 insert f_1width:MEcode 3 0 insert f_1width:MEcode 4 0 insert f_1width:MEcode 5 0 insert f_1width:MEcode 6 0 insert f_1width:MEcode 7 0 insert f_1width:MEcode 8 0 insert f_1width:MEcode 9 0 insert f_1width:MEcode 10 0 insert f_1width:MEcode 11 0 insert f_1width:MEcode 12 0 insert f_1width:MEcode 13 0 insert f_1width:MEcoupling 0 0.004036 insert f_1width:MEcoupling 1 0.008071 insert f_1width:MEcoupling 2 0.008071 insert f_1width:MEcoupling 3 0.004036 insert f_1width:MEcoupling 4 1.00398 insert f_1width:MEcoupling 5 1.00398 insert f_1width:MEcoupling 6 0.976294 insert f_1width:MEcoupling 7 0.107123 insert f_1width:MEcoupling 8 0.053562 insert f_1width:MEcoupling 9 0.000743 insert f_1width:MEcoupling 10 0.110471 insert f_1width:MEcoupling 11 0.110471 insert f_1width:MEcoupling 12 0.110471 insert f_1width:MEcoupling 13 0.055235 insert f_1width:ModeOn 0 0 insert f_1width:ModeOn 1 0 insert f_1width:ModeOn 2 0 insert f_1width:ModeOn 3 0 insert f_1width:ModeOn 4 1 insert f_1width:ModeOn 5 1 insert f_1width:ModeOn 6 1 insert f_1width:ModeOn 7 1 insert f_1width:ModeOn 8 1 insert f_1width:ModeOn 9 0 insert f_1width:ModeOn 10 1 insert f_1width:ModeOn 11 1 insert f_1width:ModeOn 12 1 insert f_1width:ModeOn 13 1 insert f_1width:MinimumMasses 0 1.12233 insert f_1width:MinimumMasses 1 1.1309 insert f_1width:MinimumMasses 2 1.1309 insert f_1width:MinimumMasses 3 1.13027 insert f_1width:MinimumMasses 4 0.89857 insert f_1width:MinimumMasses 5 0.89857 insert f_1width:MinimumMasses 6 0.893978 insert f_1width:MinimumMasses 7 0.826637 insert f_1width:MinimumMasses 8 0.817452 insert f_1width:MinimumMasses 9 0.98946 insert f_1width:MinimumMasses 10 0.65464 insert f_1width:MinimumMasses 11 0.650048 insert f_1width:MinimumMasses 12 0.650048 insert f_1width:MinimumMasses 13 0.3755 insert f_1width:MEmass1 0 0 insert f_1width:MEmass1 1 0 insert f_1width:MEmass1 2 0 insert f_1width:MEmass1 3 0 insert f_1width:MEmass1 4 0.999 insert f_1width:MEmass1 5 0.999 insert f_1width:MEmass1 6 0.999 insert f_1width:MEmass1 7 0 insert f_1width:MEmass1 8 0 insert f_1width:MEmass1 9 0 insert f_1width:MEmass1 10 0 insert f_1width:MEmass1 11 0 insert f_1width:MEmass1 12 0 insert f_1width:MEmass1 13 0 insert f_1width:MEmass2 0 0 insert f_1width:MEmass2 1 0 insert f_1width:MEmass2 2 0 insert f_1width:MEmass2 3 0 insert f_1width:MEmass2 4 0.13957 insert f_1width:MEmass2 5 0.13957 insert f_1width:MEmass2 6 0.134978 insert f_1width:MEmass2 7 0 insert f_1width:MEmass2 8 0 insert f_1width:MEmass2 9 0 insert f_1width:MEmass2 10 0 insert f_1width:MEmass2 11 0 insert f_1width:MEmass2 12 0 insert f_1width:MEmass2 13 0 insert f_1width:DecayModes 0 f_1->K+,K-,pi0; insert f_1width:DecayModes 1 f_1->K+,Kbar0,pi-; insert f_1width:DecayModes 2 f_1->K-,K0,pi+; insert f_1width:DecayModes 3 f_1->K0,Kbar0,pi0; insert f_1width:DecayModes 4 f_1->a_0+,pi-; insert f_1width:DecayModes 5 f_1->a_0-,pi+; insert f_1width:DecayModes 6 f_1->a_00,pi0; insert f_1width:DecayModes 7 f_1->eta,pi+,pi-; insert f_1width:DecayModes 8 f_1->eta,pi0,pi0; insert f_1width:DecayModes 9 f_1->phi,gamma; insert f_1width:DecayModes 10 f_1->pi+,pi-,rho0; insert f_1width:DecayModes 11 f_1->rho+,pi-,pi0; insert f_1width:DecayModes 12 f_1->rho-,pi+,pi0; insert f_1width:DecayModes 13 f_1->rho0,gamma; insert f_1width:InterpolationMasses 0 1.0200449 insert f_1width:InterpolationMasses 1 1.0299224 insert f_1width:InterpolationMasses 2 1.0398 insert f_1width:InterpolationMasses 3 1.0496776 insert f_1width:InterpolationMasses 4 1.0595551 insert f_1width:InterpolationMasses 5 1.0694327 insert f_1width:InterpolationMasses 6 1.0793102 insert f_1width:InterpolationMasses 7 1.0891878 insert f_1width:InterpolationMasses 8 1.0990653 insert f_1width:InterpolationMasses 9 1.1089429 insert f_1width:InterpolationMasses 10 1.1188204 insert f_1width:InterpolationMasses 11 1.128698 insert f_1width:InterpolationMasses 12 1.1385755 insert f_1width:InterpolationMasses 13 1.1484531 insert f_1width:InterpolationMasses 14 1.1583306 insert f_1width:InterpolationMasses 15 1.1682082 insert f_1width:InterpolationMasses 16 1.1780857 insert f_1width:InterpolationMasses 17 1.1879633 insert f_1width:InterpolationMasses 18 1.1978408 insert f_1width:InterpolationMasses 19 1.2077184 insert f_1width:InterpolationMasses 20 1.2175959 insert f_1width:InterpolationMasses 21 1.2274735 insert f_1width:InterpolationMasses 22 1.237351 insert f_1width:InterpolationMasses 23 1.2472286 insert f_1width:InterpolationMasses 24 1.2571061 insert f_1width:InterpolationMasses 25 1.2669837 insert f_1width:InterpolationMasses 26 1.2768612 insert f_1width:InterpolationMasses 27 1.2867388 insert f_1width:InterpolationMasses 28 1.2966163 insert f_1width:InterpolationMasses 29 1.3064939 insert f_1width:InterpolationMasses 30 1.3163714 insert f_1width:InterpolationMasses 31 1.326249 insert f_1width:InterpolationMasses 32 1.3361265 insert f_1width:InterpolationMasses 33 1.3460041 insert f_1width:InterpolationMasses 34 1.3558816 insert f_1width:InterpolationMasses 35 1.3657592 insert f_1width:InterpolationMasses 36 1.3756367 insert f_1width:InterpolationMasses 37 1.3855143 insert f_1width:InterpolationMasses 38 1.3953918 insert f_1width:InterpolationMasses 39 1.4052694 insert f_1width:InterpolationMasses 40 1.4151469 insert f_1width:InterpolationMasses 41 1.4250245 insert f_1width:InterpolationMasses 42 1.434902 insert f_1width:InterpolationMasses 43 1.4447796 insert f_1width:InterpolationMasses 44 1.4546571 insert f_1width:InterpolationMasses 45 1.4645347 insert f_1width:InterpolationMasses 46 1.4744122 insert f_1width:InterpolationMasses 47 1.4842898 insert f_1width:InterpolationMasses 48 1.4941673 insert f_1width:InterpolationMasses 49 1.5040449 insert f_1width:InterpolationMasses 50 1.5139224 insert f_1width:InterpolationMasses 51 1.5238 insert f_1width:InterpolationMasses 52 1.5336776 insert f_1width:InterpolationMasses 53 1.5435551 insert f_1width:InterpolationMasses 54 1.0200449 insert f_1width:InterpolationMasses 55 1.0299224 insert f_1width:InterpolationMasses 56 1.0398 insert f_1width:InterpolationMasses 57 1.0496776 insert f_1width:InterpolationMasses 58 1.0595551 insert f_1width:InterpolationMasses 59 1.0694327 insert f_1width:InterpolationMasses 60 1.0793102 insert f_1width:InterpolationMasses 61 1.0891878 insert f_1width:InterpolationMasses 62 1.0990653 insert f_1width:InterpolationMasses 63 1.1089429 insert f_1width:InterpolationMasses 64 1.1188204 insert f_1width:InterpolationMasses 65 1.128698 insert f_1width:InterpolationMasses 66 1.1385755 insert f_1width:InterpolationMasses 67 1.1484531 insert f_1width:InterpolationMasses 68 1.1583306 insert f_1width:InterpolationMasses 69 1.1682082 insert f_1width:InterpolationMasses 70 1.1780857 insert f_1width:InterpolationMasses 71 1.1879633 insert f_1width:InterpolationMasses 72 1.1978408 insert f_1width:InterpolationMasses 73 1.2077184 insert f_1width:InterpolationMasses 74 1.2175959 insert f_1width:InterpolationMasses 75 1.2274735 insert f_1width:InterpolationMasses 76 1.237351 insert f_1width:InterpolationMasses 77 1.2472286 insert f_1width:InterpolationMasses 78 1.2571061 insert f_1width:InterpolationMasses 79 1.2669837 insert f_1width:InterpolationMasses 80 1.2768612 insert f_1width:InterpolationMasses 81 1.2867388 insert f_1width:InterpolationMasses 82 1.2966163 insert f_1width:InterpolationMasses 83 1.3064939 insert f_1width:InterpolationMasses 84 1.3163714 insert f_1width:InterpolationMasses 85 1.326249 insert f_1width:InterpolationMasses 86 1.3361265 insert f_1width:InterpolationMasses 87 1.3460041 insert f_1width:InterpolationMasses 88 1.3558816 insert f_1width:InterpolationMasses 89 1.3657592 insert f_1width:InterpolationMasses 90 1.3756367 insert f_1width:InterpolationMasses 91 1.3855143 insert f_1width:InterpolationMasses 92 1.3953918 insert f_1width:InterpolationMasses 93 1.4052694 insert f_1width:InterpolationMasses 94 1.4151469 insert f_1width:InterpolationMasses 95 1.4250245 insert f_1width:InterpolationMasses 96 1.434902 insert f_1width:InterpolationMasses 97 1.4447796 insert f_1width:InterpolationMasses 98 1.4546571 insert f_1width:InterpolationMasses 99 1.4645347 insert f_1width:InterpolationMasses 100 1.4744122 insert f_1width:InterpolationMasses 101 1.4842898 insert f_1width:InterpolationMasses 102 1.4941673 insert f_1width:InterpolationMasses 103 1.5040449 insert f_1width:InterpolationMasses 104 1.5139224 insert f_1width:InterpolationMasses 105 1.5238 insert f_1width:InterpolationMasses 106 1.5336776 insert f_1width:InterpolationMasses 107 1.5435551 insert f_1width:InterpolationMasses 108 1.0200449 insert f_1width:InterpolationMasses 109 1.0299224 insert f_1width:InterpolationMasses 110 1.0398 insert f_1width:InterpolationMasses 111 1.0496776 insert f_1width:InterpolationMasses 112 1.0595551 insert f_1width:InterpolationMasses 113 1.0694327 insert f_1width:InterpolationMasses 114 1.0793102 insert f_1width:InterpolationMasses 115 1.0891878 insert f_1width:InterpolationMasses 116 1.0990653 insert f_1width:InterpolationMasses 117 1.1089429 insert f_1width:InterpolationMasses 118 1.1188204 insert f_1width:InterpolationMasses 119 1.128698 insert f_1width:InterpolationMasses 120 1.1385755 insert f_1width:InterpolationMasses 121 1.1484531 insert f_1width:InterpolationMasses 122 1.1583306 insert f_1width:InterpolationMasses 123 1.1682082 insert f_1width:InterpolationMasses 124 1.1780857 insert f_1width:InterpolationMasses 125 1.1879633 insert f_1width:InterpolationMasses 126 1.1978408 insert f_1width:InterpolationMasses 127 1.2077184 insert f_1width:InterpolationMasses 128 1.2175959 insert f_1width:InterpolationMasses 129 1.2274735 insert f_1width:InterpolationMasses 130 1.237351 insert f_1width:InterpolationMasses 131 1.2472286 insert f_1width:InterpolationMasses 132 1.2571061 insert f_1width:InterpolationMasses 133 1.2669837 insert f_1width:InterpolationMasses 134 1.2768612 insert f_1width:InterpolationMasses 135 1.2867388 insert f_1width:InterpolationMasses 136 1.2966163 insert f_1width:InterpolationMasses 137 1.3064939 insert f_1width:InterpolationMasses 138 1.3163714 insert f_1width:InterpolationMasses 139 1.326249 insert f_1width:InterpolationMasses 140 1.3361265 insert f_1width:InterpolationMasses 141 1.3460041 insert f_1width:InterpolationMasses 142 1.3558816 insert f_1width:InterpolationMasses 143 1.3657592 insert f_1width:InterpolationMasses 144 1.3756367 insert f_1width:InterpolationMasses 145 1.3855143 insert f_1width:InterpolationMasses 146 1.3953918 insert f_1width:InterpolationMasses 147 1.4052694 insert f_1width:InterpolationMasses 148 1.4151469 insert f_1width:InterpolationMasses 149 1.4250245 insert f_1width:InterpolationMasses 150 1.434902 insert f_1width:InterpolationMasses 151 1.4447796 insert f_1width:InterpolationMasses 152 1.4546571 insert f_1width:InterpolationMasses 153 1.4645347 insert f_1width:InterpolationMasses 154 1.4744122 insert f_1width:InterpolationMasses 155 1.4842898 insert f_1width:InterpolationMasses 156 1.4941673 insert f_1width:InterpolationMasses 157 1.5040449 insert f_1width:InterpolationMasses 158 1.5139224 insert f_1width:InterpolationMasses 159 1.5238 insert f_1width:InterpolationMasses 160 1.5336776 insert f_1width:InterpolationMasses 161 1.5435551 insert f_1width:InterpolationWidths 0 4.3127529e-05 insert f_1width:InterpolationWidths 1 5.4937602e-05 insert f_1width:InterpolationWidths 2 6.9068296e-05 insert f_1width:InterpolationWidths 3 8.5882403e-05 insert f_1width:InterpolationWidths 4 0.00010580872 insert f_1width:InterpolationWidths 5 0.00012935986 insert f_1width:InterpolationWidths 6 0.00015715601 insert f_1width:InterpolationWidths 7 0.00018995697 insert f_1width:InterpolationWidths 8 0.0002287045 insert f_1width:InterpolationWidths 9 0.00027457775 insert f_1width:InterpolationWidths 10 0.00032905833 insert f_1width:InterpolationWidths 11 0.00039398999 insert f_1width:InterpolationWidths 12 0.00047149063 insert f_1width:InterpolationWidths 13 0.00056311612 insert f_1width:InterpolationWidths 14 0.00066969534 insert f_1width:InterpolationWidths 15 0.00079202835 insert f_1width:InterpolationWidths 16 0.00093066726 insert f_1width:InterpolationWidths 17 0.0010860695 insert f_1width:InterpolationWidths 18 0.0012585742 insert f_1width:InterpolationWidths 19 0.0014484564 insert f_1width:InterpolationWidths 20 0.001655914 insert f_1width:InterpolationWidths 21 0.0018810417 insert f_1width:InterpolationWidths 22 0.0021239384 insert f_1width:InterpolationWidths 23 0.0023846173 insert f_1width:InterpolationWidths 24 0.0026630458 insert f_1width:InterpolationWidths 25 0.0029592246 insert f_1width:InterpolationWidths 26 0.0032729566 insert f_1width:InterpolationWidths 27 0.0036042907 insert f_1width:InterpolationWidths 28 0.0039529664 insert f_1width:InterpolationWidths 29 0.0043188727 insert f_1width:InterpolationWidths 30 0.0047023162 insert f_1width:InterpolationWidths 31 0.0051016198 insert f_1width:InterpolationWidths 32 0.0055180911 insert f_1width:InterpolationWidths 33 0.0059510084 insert f_1width:InterpolationWidths 34 0.0064001752 insert f_1width:InterpolationWidths 35 0.0068652814 insert f_1width:InterpolationWidths 36 0.0073461556 insert f_1width:InterpolationWidths 37 0.0078426761 insert f_1width:InterpolationWidths 38 0.0083542187 insert f_1width:InterpolationWidths 39 0.0088810233 insert f_1width:InterpolationWidths 40 0.0094222448 insert f_1width:InterpolationWidths 41 0.0099781556 insert f_1width:InterpolationWidths 42 0.010548235 insert f_1width:InterpolationWidths 43 0.011132581 insert f_1width:InterpolationWidths 44 0.011730248 insert f_1width:InterpolationWidths 45 0.012341305 insert f_1width:InterpolationWidths 46 0.012965732 insert f_1width:InterpolationWidths 47 0.013603183 insert f_1width:InterpolationWidths 48 0.014252914 insert f_1width:InterpolationWidths 49 0.014915262 insert f_1width:InterpolationWidths 50 0.015589743 insert f_1width:InterpolationWidths 51 0.016276158 insert f_1width:InterpolationWidths 52 0.016974144 insert f_1width:InterpolationWidths 53 0.017681143 insert f_1width:InterpolationWidths 54 4.3127529e-05 insert f_1width:InterpolationWidths 55 5.4937602e-05 insert f_1width:InterpolationWidths 56 6.9068296e-05 insert f_1width:InterpolationWidths 57 8.5882403e-05 insert f_1width:InterpolationWidths 58 0.00010580872 insert f_1width:InterpolationWidths 59 0.00012935986 insert f_1width:InterpolationWidths 60 0.00015715601 insert f_1width:InterpolationWidths 61 0.00018995697 insert f_1width:InterpolationWidths 62 0.0002287045 insert f_1width:InterpolationWidths 63 0.00027457775 insert f_1width:InterpolationWidths 64 0.00032905833 insert f_1width:InterpolationWidths 65 0.00039398999 insert f_1width:InterpolationWidths 66 0.00047149063 insert f_1width:InterpolationWidths 67 0.00056311612 insert f_1width:InterpolationWidths 68 0.00066969534 insert f_1width:InterpolationWidths 69 0.00079202835 insert f_1width:InterpolationWidths 70 0.00093066726 insert f_1width:InterpolationWidths 71 0.0010860695 insert f_1width:InterpolationWidths 72 0.0012585742 insert f_1width:InterpolationWidths 73 0.0014484564 insert f_1width:InterpolationWidths 74 0.001655914 insert f_1width:InterpolationWidths 75 0.0018810417 insert f_1width:InterpolationWidths 76 0.0021239384 insert f_1width:InterpolationWidths 77 0.0023846173 insert f_1width:InterpolationWidths 78 0.0026630458 insert f_1width:InterpolationWidths 79 0.0029592246 insert f_1width:InterpolationWidths 80 0.0032729566 insert f_1width:InterpolationWidths 81 0.0036042907 insert f_1width:InterpolationWidths 82 0.0039529664 insert f_1width:InterpolationWidths 83 0.0043188727 insert f_1width:InterpolationWidths 84 0.0047023162 insert f_1width:InterpolationWidths 85 0.0051016198 insert f_1width:InterpolationWidths 86 0.0055180911 insert f_1width:InterpolationWidths 87 0.0059510084 insert f_1width:InterpolationWidths 88 0.0064001752 insert f_1width:InterpolationWidths 89 0.0068652814 insert f_1width:InterpolationWidths 90 0.0073461556 insert f_1width:InterpolationWidths 91 0.0078426761 insert f_1width:InterpolationWidths 92 0.0083542187 insert f_1width:InterpolationWidths 93 0.0088810233 insert f_1width:InterpolationWidths 94 0.0094222448 insert f_1width:InterpolationWidths 95 0.0099781556 insert f_1width:InterpolationWidths 96 0.010548235 insert f_1width:InterpolationWidths 97 0.011132581 insert f_1width:InterpolationWidths 98 0.011730248 insert f_1width:InterpolationWidths 99 0.012341305 insert f_1width:InterpolationWidths 100 0.012965732 insert f_1width:InterpolationWidths 101 0.013603183 insert f_1width:InterpolationWidths 102 0.014252914 insert f_1width:InterpolationWidths 103 0.014915262 insert f_1width:InterpolationWidths 104 0.015589743 insert f_1width:InterpolationWidths 105 0.016276158 insert f_1width:InterpolationWidths 106 0.016974144 insert f_1width:InterpolationWidths 107 0.017681143 insert f_1width:InterpolationWidths 108 4.7316838e-05 insert f_1width:InterpolationWidths 109 5.9913222e-05 insert f_1width:InterpolationWidths 110 7.4947915e-05 insert f_1width:InterpolationWidths 111 9.2805732e-05 insert f_1width:InterpolationWidths 112 0.00011394364 insert f_1width:InterpolationWidths 113 0.00013891062 insert f_1width:InterpolationWidths 114 0.00016837436 insert f_1width:InterpolationWidths 115 0.00020315707 insert f_1width:InterpolationWidths 116 0.00024428244 insert f_1width:InterpolationWidths 117 0.00029303557 insert f_1width:InterpolationWidths 118 0.00035102878 insert f_1width:InterpolationWidths 119 0.0004202329 insert f_1width:InterpolationWidths 120 0.00050252537 insert f_1width:InterpolationWidths 121 0.00059909718 insert f_1width:InterpolationWidths 122 0.00071076461 insert f_1width:InterpolationWidths 123 0.00083815259 insert f_1width:InterpolationWidths 124 0.00098182774 insert f_1width:InterpolationWidths 125 0.0011422207 insert f_1width:InterpolationWidths 126 0.0013195984 insert f_1width:InterpolationWidths 127 0.0015142518 insert f_1width:InterpolationWidths 128 0.0017263392 insert f_1width:InterpolationWidths 129 0.0019559748 insert f_1width:InterpolationWidths 130 0.0022032567 insert f_1width:InterpolationWidths 131 0.0024681464 insert f_1width:InterpolationWidths 132 0.002750639 insert f_1width:InterpolationWidths 133 0.0030508539 insert f_1width:InterpolationWidths 134 0.0033681363 insert f_1width:InterpolationWidths 135 0.0037032869 insert f_1width:InterpolationWidths 136 0.0040555047 insert f_1width:InterpolationWidths 137 0.004424774 insert f_1width:InterpolationWidths 138 0.004811496 insert f_1width:InterpolationWidths 139 0.0052139198 insert f_1width:InterpolationWidths 140 0.005633396 insert f_1width:InterpolationWidths 141 0.0060711005 insert f_1width:InterpolationWidths 142 0.0065210928 insert f_1width:InterpolationWidths 143 0.006988875 insert f_1width:InterpolationWidths 144 0.0074723689 insert f_1width:InterpolationWidths 145 0.0079710804 insert f_1width:InterpolationWidths 146 0.0084879074 insert f_1width:InterpolationWidths 147 0.0090140849 insert f_1width:InterpolationWidths 148 0.0095574939 insert f_1width:InterpolationWidths 149 0.010117711 insert f_1width:InterpolationWidths 150 0.010687758 insert f_1width:InterpolationWidths 151 0.011274628 insert f_1width:InterpolationWidths 152 0.011873457 insert f_1width:InterpolationWidths 153 0.012486419 insert f_1width:InterpolationWidths 154 0.0131128 insert f_1width:InterpolationWidths 155 0.013751347 insert f_1width:InterpolationWidths 156 0.014403251 insert f_1width:InterpolationWidths 157 0.015066574 insert f_1width:InterpolationWidths 158 0.015742946 insert f_1width:InterpolationWidths 159 0.016430868 insert f_1width:InterpolationWidths 160 0.017129256 insert f_1width:InterpolationWidths 161 0.017840982 insert f_1width:NumberofEntries 0 0 insert f_1width:NumberofEntries 1 0 insert f_1width:NumberofEntries 2 0 insert f_1width:NumberofEntries 3 0 insert f_1width:NumberofEntries 4 54 insert f_1width:NumberofEntries 5 108 insert f_1width:NumberofEntries 6 162 insert f_1width:NumberofEntries 7 162 insert f_1width:NumberofEntries 8 162 insert f_1width:NumberofEntries 9 162 insert f_1width:NumberofEntries 10 162 insert f_1width:NumberofEntries 11 162 insert f_1width:NumberofEntries 12 162 insert f_1width:NumberofEntries 13 162 newdef /Herwig/Particles/f_1:Width_generator f_1width # create Herwig::GenericWidthGenerator f'_1width newdef f'_1width:Particle /Herwig/Particles/f'_1 newdef f'_1width:Prefactor 1.0355 newdef f'_1width:BRNormalize 1 newdef f'_1width:BRMinimum 0.01 newdef f'_1width:Points 50 newdef f'_1width:InterpolationOrder 1 insert f'_1width:MEtype 0 2 insert f'_1width:MEtype 1 2 insert f'_1width:MEtype 2 2 insert f'_1width:MEtype 3 2 insert f'_1width:MEtype 4 0 insert f'_1width:MEtype 5 0 insert f'_1width:MEtype 6 0 insert f'_1width:MEtype 7 0 insert f'_1width:MEtype 8 2 insert f'_1width:MEtype 9 2 insert f'_1width:MEtype 10 2 insert f'_1width:MEtype 11 0 insert f'_1width:MEcode 0 0 insert f'_1width:MEcode 1 0 insert f'_1width:MEcode 2 0 insert f'_1width:MEcode 3 0 insert f'_1width:MEcode 4 0 insert f'_1width:MEcode 5 0 insert f'_1width:MEcode 6 0 insert f'_1width:MEcode 7 0 insert f'_1width:MEcode 8 0 insert f'_1width:MEcode 9 0 insert f'_1width:MEcode 10 0 insert f'_1width:MEcode 11 0 insert f'_1width:MEcoupling 0 1.00822 insert f'_1width:MEcoupling 1 1.00822 insert f'_1width:MEcoupling 2 1.00857 insert f'_1width:MEcoupling 3 1.00857 insert f'_1width:MEcoupling 4 0.0355 insert f'_1width:MEcoupling 5 0.0709 insert f'_1width:MEcoupling 6 0.0709 insert f'_1width:MEcoupling 7 0.0355 insert f'_1width:MEcoupling 8 1.01316 insert f'_1width:MEcoupling 9 1.01316 insert f'_1width:MEcoupling 10 0.999212 insert f'_1width:MEcoupling 11 0.0028 insert f'_1width:ModeOn 0 1 insert f'_1width:ModeOn 1 1 insert f'_1width:ModeOn 2 1 insert f'_1width:ModeOn 3 1 insert f'_1width:ModeOn 4 1 insert f'_1width:ModeOn 5 1 insert f'_1width:ModeOn 6 1 insert f'_1width:ModeOn 7 1 insert f'_1width:ModeOn 8 0 insert f'_1width:ModeOn 9 0 insert f'_1width:ModeOn 10 0 insert f'_1width:ModeOn 11 0 insert f'_1width:MinimumMasses 0 1.13534 insert f'_1width:MinimumMasses 1 1.13534 insert f'_1width:MinimumMasses 2 1.14365 insert f'_1width:MinimumMasses 3 1.14365 insert f'_1width:MinimumMasses 4 1.12233 insert f'_1width:MinimumMasses 5 1.1309 insert f'_1width:MinimumMasses 6 1.1309 insert f'_1width:MinimumMasses 7 1.13027 insert f'_1width:MinimumMasses 8 0.89857 insert f'_1width:MinimumMasses 9 0.89857 insert f'_1width:MinimumMasses 10 0.893978 insert f'_1width:MinimumMasses 11 0.98946 insert f'_1width:MEmass1 0 0.89166 insert f'_1width:MEmass1 1 0.89166 insert f'_1width:MEmass1 2 0.896 insert f'_1width:MEmass1 3 0.896 insert f'_1width:MEmass1 4 0 insert f'_1width:MEmass1 5 0 insert f'_1width:MEmass1 6 0 insert f'_1width:MEmass1 7 0 insert f'_1width:MEmass1 8 0.999 insert f'_1width:MEmass1 9 0.999 insert f'_1width:MEmass1 10 0.999 insert f'_1width:MEmass1 11 0 insert f'_1width:MEmass2 0 0.493677 insert f'_1width:MEmass2 1 0.493677 insert f'_1width:MEmass2 2 0.497648 insert f'_1width:MEmass2 3 0.497648 insert f'_1width:MEmass2 4 0 insert f'_1width:MEmass2 5 0 insert f'_1width:MEmass2 6 0 insert f'_1width:MEmass2 7 0 insert f'_1width:MEmass2 8 0.13957 insert f'_1width:MEmass2 9 0.13957 insert f'_1width:MEmass2 10 0.134978 insert f'_1width:MEmass2 11 0 insert f'_1width:DecayModes 0 f'_1->K*+,K-; insert f'_1width:DecayModes 1 f'_1->K*-,K+; insert f'_1width:DecayModes 2 f'_1->K*0,Kbar0; insert f'_1width:DecayModes 3 f'_1->K*bar0,K0; insert f'_1width:DecayModes 4 f'_1->K+,K-,pi0; insert f'_1width:DecayModes 5 f'_1->K+,Kbar0,pi-; insert f'_1width:DecayModes 6 f'_1->K-,K0,pi+; insert f'_1width:DecayModes 7 f'_1->K0,Kbar0,pi0; insert f'_1width:DecayModes 8 f'_1->a_0+,pi-; insert f'_1width:DecayModes 9 f'_1->a_0-,pi+; insert f'_1width:DecayModes 10 f'_1->a_00,pi0; insert f'_1width:DecayModes 11 f'_1->phi,gamma; insert f'_1width:InterpolationMasses 0 1.1181878 insert f'_1width:InterpolationMasses 1 1.135337 insert f'_1width:InterpolationMasses 2 1.1518 insert f'_1width:InterpolationMasses 3 1.1686061 insert f'_1width:InterpolationMasses 4 1.1854122 insert f'_1width:InterpolationMasses 5 1.2022184 insert f'_1width:InterpolationMasses 6 1.2190245 insert f'_1width:InterpolationMasses 7 1.2358306 insert f'_1width:InterpolationMasses 8 1.2526367 insert f'_1width:InterpolationMasses 9 1.2694429 insert f'_1width:InterpolationMasses 10 1.286249 insert f'_1width:InterpolationMasses 11 1.3030551 insert f'_1width:InterpolationMasses 12 1.3198612 insert f'_1width:InterpolationMasses 13 1.3366673 insert f'_1width:InterpolationMasses 14 1.3534735 insert f'_1width:InterpolationMasses 15 1.3702796 insert f'_1width:InterpolationMasses 16 1.3870857 insert f'_1width:InterpolationMasses 17 1.4038918 insert f'_1width:InterpolationMasses 18 1.420698 insert f'_1width:InterpolationMasses 19 1.4375041 insert f'_1width:InterpolationMasses 20 1.4543102 insert f'_1width:InterpolationMasses 21 1.4711163 insert f'_1width:InterpolationMasses 22 1.4879224 insert f'_1width:InterpolationMasses 23 1.5047286 insert f'_1width:InterpolationMasses 24 1.5215347 insert f'_1width:InterpolationMasses 25 1.5383408 insert f'_1width:InterpolationMasses 26 1.5551469 insert f'_1width:InterpolationMasses 27 1.5719531 insert f'_1width:InterpolationMasses 28 1.5887592 insert f'_1width:InterpolationMasses 29 1.6055653 insert f'_1width:InterpolationMasses 30 1.6223714 insert f'_1width:InterpolationMasses 31 1.6391776 insert f'_1width:InterpolationMasses 32 1.6559837 insert f'_1width:InterpolationMasses 33 1.6727898 insert f'_1width:InterpolationMasses 34 1.6895959 insert f'_1width:InterpolationMasses 35 1.706402 insert f'_1width:InterpolationMasses 36 1.7232082 insert f'_1width:InterpolationMasses 37 1.7400143 insert f'_1width:InterpolationMasses 38 1.7568204 insert f'_1width:InterpolationMasses 39 1.7736265 insert f'_1width:InterpolationMasses 40 1.7904327 insert f'_1width:InterpolationMasses 41 1.8072388 insert f'_1width:InterpolationMasses 42 1.8240449 insert f'_1width:InterpolationMasses 43 1.840851 insert f'_1width:InterpolationMasses 44 1.8576571 insert f'_1width:InterpolationMasses 45 1.8744633 insert f'_1width:InterpolationMasses 46 1.8912694 insert f'_1width:InterpolationMasses 47 1.9080755 insert f'_1width:InterpolationMasses 48 1.9248816 insert f'_1width:InterpolationMasses 49 1.9416878 insert f'_1width:InterpolationMasses 50 1.9584939 insert f'_1width:InterpolationMasses 51 1.9753 insert f'_1width:InterpolationMasses 52 1.9921061 insert f'_1width:InterpolationMasses 53 2.0089122 insert f'_1width:InterpolationMasses 54 1.1181878 insert f'_1width:InterpolationMasses 55 1.135337 insert f'_1width:InterpolationMasses 56 1.1518 insert f'_1width:InterpolationMasses 57 1.1686061 insert f'_1width:InterpolationMasses 58 1.1854122 insert f'_1width:InterpolationMasses 59 1.2022184 insert f'_1width:InterpolationMasses 60 1.2190245 insert f'_1width:InterpolationMasses 61 1.2358306 insert f'_1width:InterpolationMasses 62 1.2526367 insert f'_1width:InterpolationMasses 63 1.2694429 insert f'_1width:InterpolationMasses 64 1.286249 insert f'_1width:InterpolationMasses 65 1.3030551 insert f'_1width:InterpolationMasses 66 1.3198612 insert f'_1width:InterpolationMasses 67 1.3366673 insert f'_1width:InterpolationMasses 68 1.3534735 insert f'_1width:InterpolationMasses 69 1.3702796 insert f'_1width:InterpolationMasses 70 1.3870857 insert f'_1width:InterpolationMasses 71 1.4038918 insert f'_1width:InterpolationMasses 72 1.420698 insert f'_1width:InterpolationMasses 73 1.4375041 insert f'_1width:InterpolationMasses 74 1.4543102 insert f'_1width:InterpolationMasses 75 1.4711163 insert f'_1width:InterpolationMasses 76 1.4879224 insert f'_1width:InterpolationMasses 77 1.5047286 insert f'_1width:InterpolationMasses 78 1.5215347 insert f'_1width:InterpolationMasses 79 1.5383408 insert f'_1width:InterpolationMasses 80 1.5551469 insert f'_1width:InterpolationMasses 81 1.5719531 insert f'_1width:InterpolationMasses 82 1.5887592 insert f'_1width:InterpolationMasses 83 1.6055653 insert f'_1width:InterpolationMasses 84 1.6223714 insert f'_1width:InterpolationMasses 85 1.6391776 insert f'_1width:InterpolationMasses 86 1.6559837 insert f'_1width:InterpolationMasses 87 1.6727898 insert f'_1width:InterpolationMasses 88 1.6895959 insert f'_1width:InterpolationMasses 89 1.706402 insert f'_1width:InterpolationMasses 90 1.7232082 insert f'_1width:InterpolationMasses 91 1.7400143 insert f'_1width:InterpolationMasses 92 1.7568204 insert f'_1width:InterpolationMasses 93 1.7736265 insert f'_1width:InterpolationMasses 94 1.7904327 insert f'_1width:InterpolationMasses 95 1.8072388 insert f'_1width:InterpolationMasses 96 1.8240449 insert f'_1width:InterpolationMasses 97 1.840851 insert f'_1width:InterpolationMasses 98 1.8576571 insert f'_1width:InterpolationMasses 99 1.8744633 insert f'_1width:InterpolationMasses 100 1.8912694 insert f'_1width:InterpolationMasses 101 1.9080755 insert f'_1width:InterpolationMasses 102 1.9248816 insert f'_1width:InterpolationMasses 103 1.9416878 insert f'_1width:InterpolationMasses 104 1.9584939 insert f'_1width:InterpolationMasses 105 1.9753 insert f'_1width:InterpolationMasses 106 1.9921061 insert f'_1width:InterpolationMasses 107 2.0089122 insert f'_1width:InterpolationMasses 108 1.1181878 insert f'_1width:InterpolationMasses 109 1.143648 insert f'_1width:InterpolationMasses 110 1.1518 insert f'_1width:InterpolationMasses 111 1.1686061 insert f'_1width:InterpolationMasses 112 1.1854122 insert f'_1width:InterpolationMasses 113 1.2022184 insert f'_1width:InterpolationMasses 114 1.2190245 insert f'_1width:InterpolationMasses 115 1.2358306 insert f'_1width:InterpolationMasses 116 1.2526367 insert f'_1width:InterpolationMasses 117 1.2694429 insert f'_1width:InterpolationMasses 118 1.286249 insert f'_1width:InterpolationMasses 119 1.3030551 insert f'_1width:InterpolationMasses 120 1.3198612 insert f'_1width:InterpolationMasses 121 1.3366673 insert f'_1width:InterpolationMasses 122 1.3534735 insert f'_1width:InterpolationMasses 123 1.3702796 insert f'_1width:InterpolationMasses 124 1.3870857 insert f'_1width:InterpolationMasses 125 1.4038918 insert f'_1width:InterpolationMasses 126 1.420698 insert f'_1width:InterpolationMasses 127 1.4375041 insert f'_1width:InterpolationMasses 128 1.4543102 insert f'_1width:InterpolationMasses 129 1.4711163 insert f'_1width:InterpolationMasses 130 1.4879224 insert f'_1width:InterpolationMasses 131 1.5047286 insert f'_1width:InterpolationMasses 132 1.5215347 insert f'_1width:InterpolationMasses 133 1.5383408 insert f'_1width:InterpolationMasses 134 1.5551469 insert f'_1width:InterpolationMasses 135 1.5719531 insert f'_1width:InterpolationMasses 136 1.5887592 insert f'_1width:InterpolationMasses 137 1.6055653 insert f'_1width:InterpolationMasses 138 1.6223714 insert f'_1width:InterpolationMasses 139 1.6391776 insert f'_1width:InterpolationMasses 140 1.6559837 insert f'_1width:InterpolationMasses 141 1.6727898 insert f'_1width:InterpolationMasses 142 1.6895959 insert f'_1width:InterpolationMasses 143 1.706402 insert f'_1width:InterpolationMasses 144 1.7232082 insert f'_1width:InterpolationMasses 145 1.7400143 insert f'_1width:InterpolationMasses 146 1.7568204 insert f'_1width:InterpolationMasses 147 1.7736265 insert f'_1width:InterpolationMasses 148 1.7904327 insert f'_1width:InterpolationMasses 149 1.8072388 insert f'_1width:InterpolationMasses 150 1.8240449 insert f'_1width:InterpolationMasses 151 1.840851 insert f'_1width:InterpolationMasses 152 1.8576571 insert f'_1width:InterpolationMasses 153 1.8744633 insert f'_1width:InterpolationMasses 154 1.8912694 insert f'_1width:InterpolationMasses 155 1.9080755 insert f'_1width:InterpolationMasses 156 1.9248816 insert f'_1width:InterpolationMasses 157 1.9416878 insert f'_1width:InterpolationMasses 158 1.9584939 insert f'_1width:InterpolationMasses 159 1.9753 insert f'_1width:InterpolationMasses 160 1.9921061 insert f'_1width:InterpolationMasses 161 2.0089122 insert f'_1width:InterpolationMasses 162 1.1181878 insert f'_1width:InterpolationMasses 163 1.143648 insert f'_1width:InterpolationMasses 164 1.1518 insert f'_1width:InterpolationMasses 165 1.1686061 insert f'_1width:InterpolationMasses 166 1.1854122 insert f'_1width:InterpolationMasses 167 1.2022184 insert f'_1width:InterpolationMasses 168 1.2190245 insert f'_1width:InterpolationMasses 169 1.2358306 insert f'_1width:InterpolationMasses 170 1.2526367 insert f'_1width:InterpolationMasses 171 1.2694429 insert f'_1width:InterpolationMasses 172 1.286249 insert f'_1width:InterpolationMasses 173 1.3030551 insert f'_1width:InterpolationMasses 174 1.3198612 insert f'_1width:InterpolationMasses 175 1.3366673 insert f'_1width:InterpolationMasses 176 1.3534735 insert f'_1width:InterpolationMasses 177 1.3702796 insert f'_1width:InterpolationMasses 178 1.3870857 insert f'_1width:InterpolationMasses 179 1.4038918 insert f'_1width:InterpolationMasses 180 1.420698 insert f'_1width:InterpolationMasses 181 1.4375041 insert f'_1width:InterpolationMasses 182 1.4543102 insert f'_1width:InterpolationMasses 183 1.4711163 insert f'_1width:InterpolationMasses 184 1.4879224 insert f'_1width:InterpolationMasses 185 1.5047286 insert f'_1width:InterpolationMasses 186 1.5215347 insert f'_1width:InterpolationMasses 187 1.5383408 insert f'_1width:InterpolationMasses 188 1.5551469 insert f'_1width:InterpolationMasses 189 1.5719531 insert f'_1width:InterpolationMasses 190 1.5887592 insert f'_1width:InterpolationMasses 191 1.6055653 insert f'_1width:InterpolationMasses 192 1.6223714 insert f'_1width:InterpolationMasses 193 1.6391776 insert f'_1width:InterpolationMasses 194 1.6559837 insert f'_1width:InterpolationMasses 195 1.6727898 insert f'_1width:InterpolationMasses 196 1.6895959 insert f'_1width:InterpolationMasses 197 1.706402 insert f'_1width:InterpolationMasses 198 1.7232082 insert f'_1width:InterpolationMasses 199 1.7400143 insert f'_1width:InterpolationMasses 200 1.7568204 insert f'_1width:InterpolationMasses 201 1.7736265 insert f'_1width:InterpolationMasses 202 1.7904327 insert f'_1width:InterpolationMasses 203 1.8072388 insert f'_1width:InterpolationMasses 204 1.8240449 insert f'_1width:InterpolationMasses 205 1.840851 insert f'_1width:InterpolationMasses 206 1.8576571 insert f'_1width:InterpolationMasses 207 1.8744633 insert f'_1width:InterpolationMasses 208 1.8912694 insert f'_1width:InterpolationMasses 209 1.9080755 insert f'_1width:InterpolationMasses 210 1.9248816 insert f'_1width:InterpolationMasses 211 1.9416878 insert f'_1width:InterpolationMasses 212 1.9584939 insert f'_1width:InterpolationMasses 213 1.9753 insert f'_1width:InterpolationMasses 214 1.9921061 insert f'_1width:InterpolationMasses 215 2.0089122 insert f'_1width:InterpolationMasses 216 1.1181878 insert f'_1width:InterpolationMasses 217 1.1349939 insert f'_1width:InterpolationMasses 218 1.1518 insert f'_1width:InterpolationMasses 219 1.1686061 insert f'_1width:InterpolationMasses 220 1.1854122 insert f'_1width:InterpolationMasses 221 1.2022184 insert f'_1width:InterpolationMasses 222 1.2190245 insert f'_1width:InterpolationMasses 223 1.2358306 insert f'_1width:InterpolationMasses 224 1.2526367 insert f'_1width:InterpolationMasses 225 1.2694429 insert f'_1width:InterpolationMasses 226 1.286249 insert f'_1width:InterpolationMasses 227 1.3030551 insert f'_1width:InterpolationMasses 228 1.3198612 insert f'_1width:InterpolationMasses 229 1.3366673 insert f'_1width:InterpolationMasses 230 1.3534735 insert f'_1width:InterpolationMasses 231 1.3702796 insert f'_1width:InterpolationMasses 232 1.3870857 insert f'_1width:InterpolationMasses 233 1.4038918 insert f'_1width:InterpolationMasses 234 1.420698 insert f'_1width:InterpolationMasses 235 1.4375041 insert f'_1width:InterpolationMasses 236 1.4543102 insert f'_1width:InterpolationMasses 237 1.4711163 insert f'_1width:InterpolationMasses 238 1.4879224 insert f'_1width:InterpolationMasses 239 1.5047286 insert f'_1width:InterpolationMasses 240 1.5215347 insert f'_1width:InterpolationMasses 241 1.5383408 insert f'_1width:InterpolationMasses 242 1.5551469 insert f'_1width:InterpolationMasses 243 1.5719531 insert f'_1width:InterpolationMasses 244 1.5887592 insert f'_1width:InterpolationMasses 245 1.6055653 insert f'_1width:InterpolationMasses 246 1.6223714 insert f'_1width:InterpolationMasses 247 1.6391776 insert f'_1width:InterpolationMasses 248 1.6559837 insert f'_1width:InterpolationMasses 249 1.6727898 insert f'_1width:InterpolationMasses 250 1.6895959 insert f'_1width:InterpolationMasses 251 1.706402 insert f'_1width:InterpolationMasses 252 1.7232082 insert f'_1width:InterpolationMasses 253 1.7400143 insert f'_1width:InterpolationMasses 254 1.7568204 insert f'_1width:InterpolationMasses 255 1.7736265 insert f'_1width:InterpolationMasses 256 1.7904327 insert f'_1width:InterpolationMasses 257 1.8072388 insert f'_1width:InterpolationMasses 258 1.8240449 insert f'_1width:InterpolationMasses 259 1.840851 insert f'_1width:InterpolationMasses 260 1.8576571 insert f'_1width:InterpolationMasses 261 1.8744633 insert f'_1width:InterpolationMasses 262 1.8912694 insert f'_1width:InterpolationMasses 263 1.9080755 insert f'_1width:InterpolationMasses 264 1.9248816 insert f'_1width:InterpolationMasses 265 1.9416878 insert f'_1width:InterpolationMasses 266 1.9584939 insert f'_1width:InterpolationMasses 267 1.9753 insert f'_1width:InterpolationMasses 268 1.9921061 insert f'_1width:InterpolationMasses 269 2.0089122 insert f'_1width:InterpolationMasses 270 1.1181878 insert f'_1width:InterpolationMasses 271 1.1349939 insert f'_1width:InterpolationMasses 272 1.1518 insert f'_1width:InterpolationMasses 273 1.1686061 insert f'_1width:InterpolationMasses 274 1.1854122 insert f'_1width:InterpolationMasses 275 1.2022184 insert f'_1width:InterpolationMasses 276 1.2190245 insert f'_1width:InterpolationMasses 277 1.2358306 insert f'_1width:InterpolationMasses 278 1.2526367 insert f'_1width:InterpolationMasses 279 1.2694429 insert f'_1width:InterpolationMasses 280 1.286249 insert f'_1width:InterpolationMasses 281 1.3030551 insert f'_1width:InterpolationMasses 282 1.3198612 insert f'_1width:InterpolationMasses 283 1.3366673 insert f'_1width:InterpolationMasses 284 1.3534735 insert f'_1width:InterpolationMasses 285 1.3702796 insert f'_1width:InterpolationMasses 286 1.3870857 insert f'_1width:InterpolationMasses 287 1.4038918 insert f'_1width:InterpolationMasses 288 1.420698 insert f'_1width:InterpolationMasses 289 1.4375041 insert f'_1width:InterpolationMasses 290 1.4543102 insert f'_1width:InterpolationMasses 291 1.4711163 insert f'_1width:InterpolationMasses 292 1.4879224 insert f'_1width:InterpolationMasses 293 1.5047286 insert f'_1width:InterpolationMasses 294 1.5215347 insert f'_1width:InterpolationMasses 295 1.5383408 insert f'_1width:InterpolationMasses 296 1.5551469 insert f'_1width:InterpolationMasses 297 1.5719531 insert f'_1width:InterpolationMasses 298 1.5887592 insert f'_1width:InterpolationMasses 299 1.6055653 insert f'_1width:InterpolationMasses 300 1.6223714 insert f'_1width:InterpolationMasses 301 1.6391776 insert f'_1width:InterpolationMasses 302 1.6559837 insert f'_1width:InterpolationMasses 303 1.6727898 insert f'_1width:InterpolationMasses 304 1.6895959 insert f'_1width:InterpolationMasses 305 1.706402 insert f'_1width:InterpolationMasses 306 1.7232082 insert f'_1width:InterpolationMasses 307 1.7400143 insert f'_1width:InterpolationMasses 308 1.7568204 insert f'_1width:InterpolationMasses 309 1.7736265 insert f'_1width:InterpolationMasses 310 1.7904327 insert f'_1width:InterpolationMasses 311 1.8072388 insert f'_1width:InterpolationMasses 312 1.8240449 insert f'_1width:InterpolationMasses 313 1.840851 insert f'_1width:InterpolationMasses 314 1.8576571 insert f'_1width:InterpolationMasses 315 1.8744633 insert f'_1width:InterpolationMasses 316 1.8912694 insert f'_1width:InterpolationMasses 317 1.9080755 insert f'_1width:InterpolationMasses 318 1.9248816 insert f'_1width:InterpolationMasses 319 1.9416878 insert f'_1width:InterpolationMasses 320 1.9584939 insert f'_1width:InterpolationMasses 321 1.9753 insert f'_1width:InterpolationMasses 322 1.9921061 insert f'_1width:InterpolationMasses 323 2.0089122 insert f'_1width:InterpolationMasses 324 1.1181878 insert f'_1width:InterpolationMasses 325 1.1349939 insert f'_1width:InterpolationMasses 326 1.1518 insert f'_1width:InterpolationMasses 327 1.1686061 insert f'_1width:InterpolationMasses 328 1.1854122 insert f'_1width:InterpolationMasses 329 1.2022184 insert f'_1width:InterpolationMasses 330 1.2190245 insert f'_1width:InterpolationMasses 331 1.2358306 insert f'_1width:InterpolationMasses 332 1.2526367 insert f'_1width:InterpolationMasses 333 1.2694429 insert f'_1width:InterpolationMasses 334 1.286249 insert f'_1width:InterpolationMasses 335 1.3030551 insert f'_1width:InterpolationMasses 336 1.3198612 insert f'_1width:InterpolationMasses 337 1.3366673 insert f'_1width:InterpolationMasses 338 1.3534735 insert f'_1width:InterpolationMasses 339 1.3702796 insert f'_1width:InterpolationMasses 340 1.3870857 insert f'_1width:InterpolationMasses 341 1.4038918 insert f'_1width:InterpolationMasses 342 1.420698 insert f'_1width:InterpolationMasses 343 1.4375041 insert f'_1width:InterpolationMasses 344 1.4543102 insert f'_1width:InterpolationMasses 345 1.4711163 insert f'_1width:InterpolationMasses 346 1.4879224 insert f'_1width:InterpolationMasses 347 1.5047286 insert f'_1width:InterpolationMasses 348 1.5215347 insert f'_1width:InterpolationMasses 349 1.5383408 insert f'_1width:InterpolationMasses 350 1.5551469 insert f'_1width:InterpolationMasses 351 1.5719531 insert f'_1width:InterpolationMasses 352 1.5887592 insert f'_1width:InterpolationMasses 353 1.6055653 insert f'_1width:InterpolationMasses 354 1.6223714 insert f'_1width:InterpolationMasses 355 1.6391776 insert f'_1width:InterpolationMasses 356 1.6559837 insert f'_1width:InterpolationMasses 357 1.6727898 insert f'_1width:InterpolationMasses 358 1.6895959 insert f'_1width:InterpolationMasses 359 1.706402 insert f'_1width:InterpolationMasses 360 1.7232082 insert f'_1width:InterpolationMasses 361 1.7400143 insert f'_1width:InterpolationMasses 362 1.7568204 insert f'_1width:InterpolationMasses 363 1.7736265 insert f'_1width:InterpolationMasses 364 1.7904327 insert f'_1width:InterpolationMasses 365 1.8072388 insert f'_1width:InterpolationMasses 366 1.8240449 insert f'_1width:InterpolationMasses 367 1.840851 insert f'_1width:InterpolationMasses 368 1.8576571 insert f'_1width:InterpolationMasses 369 1.8744633 insert f'_1width:InterpolationMasses 370 1.8912694 insert f'_1width:InterpolationMasses 371 1.9080755 insert f'_1width:InterpolationMasses 372 1.9248816 insert f'_1width:InterpolationMasses 373 1.9416878 insert f'_1width:InterpolationMasses 374 1.9584939 insert f'_1width:InterpolationMasses 375 1.9753 insert f'_1width:InterpolationMasses 376 1.9921061 insert f'_1width:InterpolationMasses 377 2.0089122 insert f'_1width:InterpolationWidths 0 0 insert f'_1width:InterpolationWidths 1 0 insert f'_1width:InterpolationWidths 2 6.8995297e-08 insert f'_1width:InterpolationWidths 3 4.2303149e-07 insert f'_1width:InterpolationWidths 4 1.4164784e-06 insert f'_1width:InterpolationWidths 5 3.6229763e-06 insert f'_1width:InterpolationWidths 6 7.9588742e-06 insert f'_1width:InterpolationWidths 7 1.5892762e-05 insert f'_1width:InterpolationWidths 8 2.9811325e-05 insert f'_1width:InterpolationWidths 9 5.3689162e-05 insert f'_1width:InterpolationWidths 10 9.4388745e-05 insert f'_1width:InterpolationWidths 11 0.00016437087 insert f'_1width:InterpolationWidths 12 0.00028786495 insert f'_1width:InterpolationWidths 13 0.00051644247 insert f'_1width:InterpolationWidths 14 0.0009721811 insert f'_1width:InterpolationWidths 15 0.0019562267 insert f'_1width:InterpolationWidths 16 0.0039264659 insert f'_1width:InterpolationWidths 17 0.0066324879 insert f'_1width:InterpolationWidths 18 0.0093859284 insert f'_1width:InterpolationWidths 19 0.011981836 insert f'_1width:InterpolationWidths 20 0.014426346 insert f'_1width:InterpolationWidths 21 0.016753373 insert f'_1width:InterpolationWidths 22 0.018992715 insert f'_1width:InterpolationWidths 23 0.02116694 insert f'_1width:InterpolationWidths 24 0.023293349 insert f'_1width:InterpolationWidths 25 0.025384825 insert f'_1width:InterpolationWidths 26 0.027451451 insert f'_1width:InterpolationWidths 27 0.029501211 insert f'_1width:InterpolationWidths 28 0.031540549 insert f'_1width:InterpolationWidths 29 0.033574755 insert f'_1width:InterpolationWidths 30 0.035608239 insert f'_1width:InterpolationWidths 31 0.037644729 insert f'_1width:InterpolationWidths 32 0.039687418 insert f'_1width:InterpolationWidths 33 0.041739071 insert f'_1width:InterpolationWidths 34 0.04380211 insert f'_1width:InterpolationWidths 35 0.045878672 insert f'_1width:InterpolationWidths 36 0.047970664 insert f'_1width:InterpolationWidths 37 0.050079799 insert f'_1width:InterpolationWidths 38 0.052207629 insert f'_1width:InterpolationWidths 39 0.054355569 insert f'_1width:InterpolationWidths 40 0.056728345 insert f'_1width:InterpolationWidths 41 0.058716865 insert f'_1width:InterpolationWidths 42 0.060932531 insert f'_1width:InterpolationWidths 43 0.063172651 insert f'_1width:InterpolationWidths 44 0.065438762 insert f'_1width:InterpolationWidths 45 0.06773151 insert f'_1width:InterpolationWidths 46 0.07005176 insert f'_1width:InterpolationWidths 47 0.072364379 insert f'_1width:InterpolationWidths 48 0.074665571 insert f'_1width:InterpolationWidths 49 0.076971711 insert f'_1width:InterpolationWidths 50 0.079288166 insert f'_1width:InterpolationWidths 51 0.081618151 insert f'_1width:InterpolationWidths 52 0.083963948 insert f'_1width:InterpolationWidths 53 0.086327324 insert f'_1width:InterpolationWidths 54 0 insert f'_1width:InterpolationWidths 55 0 insert f'_1width:InterpolationWidths 56 6.8995297e-08 insert f'_1width:InterpolationWidths 57 4.2303149e-07 insert f'_1width:InterpolationWidths 58 1.4164784e-06 insert f'_1width:InterpolationWidths 59 3.6229763e-06 insert f'_1width:InterpolationWidths 60 7.9588742e-06 insert f'_1width:InterpolationWidths 61 1.5892762e-05 insert f'_1width:InterpolationWidths 62 2.9811325e-05 insert f'_1width:InterpolationWidths 63 5.3689162e-05 insert f'_1width:InterpolationWidths 64 9.4388745e-05 insert f'_1width:InterpolationWidths 65 0.00016437087 insert f'_1width:InterpolationWidths 66 0.00028786495 insert f'_1width:InterpolationWidths 67 0.00051644247 insert f'_1width:InterpolationWidths 68 0.0009721811 insert f'_1width:InterpolationWidths 69 0.0019562267 insert f'_1width:InterpolationWidths 70 0.0039264659 insert f'_1width:InterpolationWidths 71 0.0066324879 insert f'_1width:InterpolationWidths 72 0.0093859284 insert f'_1width:InterpolationWidths 73 0.011981836 insert f'_1width:InterpolationWidths 74 0.014426346 insert f'_1width:InterpolationWidths 75 0.016753373 insert f'_1width:InterpolationWidths 76 0.018992715 insert f'_1width:InterpolationWidths 77 0.02116694 insert f'_1width:InterpolationWidths 78 0.023293349 insert f'_1width:InterpolationWidths 79 0.025384825 insert f'_1width:InterpolationWidths 80 0.027451451 insert f'_1width:InterpolationWidths 81 0.029501211 insert f'_1width:InterpolationWidths 82 0.031540549 insert f'_1width:InterpolationWidths 83 0.033574755 insert f'_1width:InterpolationWidths 84 0.035608239 insert f'_1width:InterpolationWidths 85 0.037644729 insert f'_1width:InterpolationWidths 86 0.039687418 insert f'_1width:InterpolationWidths 87 0.041739071 insert f'_1width:InterpolationWidths 88 0.04380211 insert f'_1width:InterpolationWidths 89 0.045878672 insert f'_1width:InterpolationWidths 90 0.047970664 insert f'_1width:InterpolationWidths 91 0.050079799 insert f'_1width:InterpolationWidths 92 0.052207629 insert f'_1width:InterpolationWidths 93 0.054355569 insert f'_1width:InterpolationWidths 94 0.056728345 insert f'_1width:InterpolationWidths 95 0.058716865 insert f'_1width:InterpolationWidths 96 0.060932531 insert f'_1width:InterpolationWidths 97 0.063172651 insert f'_1width:InterpolationWidths 98 0.065438762 insert f'_1width:InterpolationWidths 99 0.06773151 insert f'_1width:InterpolationWidths 100 0.07005176 insert f'_1width:InterpolationWidths 101 0.072364379 insert f'_1width:InterpolationWidths 102 0.074665571 insert f'_1width:InterpolationWidths 103 0.076971711 insert f'_1width:InterpolationWidths 104 0.079288166 insert f'_1width:InterpolationWidths 105 0.081618151 insert f'_1width:InterpolationWidths 106 0.083963948 insert f'_1width:InterpolationWidths 107 0.086327324 insert f'_1width:InterpolationWidths 108 0 insert f'_1width:InterpolationWidths 109 0 insert f'_1width:InterpolationWidths 110 2.9804207e-08 insert f'_1width:InterpolationWidths 111 3.1432877e-07 insert f'_1width:InterpolationWidths 112 1.1834278e-06 insert f'_1width:InterpolationWidths 113 3.1726817e-06 insert f'_1width:InterpolationWidths 114 7.1330489e-06 insert f'_1width:InterpolationWidths 115 1.4414309e-05 insert f'_1width:InterpolationWidths 116 2.7179595e-05 insert f'_1width:InterpolationWidths 117 4.8966542e-05 insert f'_1width:InterpolationWidths 118 8.5742464e-05 insert f'_1width:InterpolationWidths 119 0.00014802155 insert f'_1width:InterpolationWidths 120 0.00025546627 insert f'_1width:InterpolationWidths 121 0.0004479061 insert f'_1width:InterpolationWidths 122 0.00081469968 insert f'_1width:InterpolationWidths 123 0.001577182 insert f'_1width:InterpolationWidths 124 0.0032251296 insert f'_1width:InterpolationWidths 125 0.0060265737 insert f'_1width:InterpolationWidths 126 0.009221913 insert f'_1width:InterpolationWidths 127 0.012289085 insert f'_1width:InterpolationWidths 128 0.015164827 insert f'_1width:InterpolationWidths 129 0.017883672 insert f'_1width:InterpolationWidths 130 0.02048434 insert f'_1width:InterpolationWidths 131 0.022997233 insert f'_1width:InterpolationWidths 132 0.025444939 insert f'_1width:InterpolationWidths 133 0.027844916 insert f'_1width:InterpolationWidths 134 0.03021018 insert f'_1width:InterpolationWidths 135 0.03255103 insert f'_1width:InterpolationWidths 136 0.034875693 insert f'_1width:InterpolationWidths 137 0.03719086 insert f'_1width:InterpolationWidths 138 0.039502061 insert f'_1width:InterpolationWidths 139 0.041813938 insert f'_1width:InterpolationWidths 140 0.044130438 insert f'_1width:InterpolationWidths 141 0.046454956 insert f'_1width:InterpolationWidths 142 0.04879045 insert f'_1width:InterpolationWidths 143 0.051139516 insert f'_1width:InterpolationWidths 144 0.053504459 insert f'_1width:InterpolationWidths 145 0.055887339 insert f'_1width:InterpolationWidths 146 0.058290014 insert f'_1width:InterpolationWidths 147 0.060714171 insert f'_1width:InterpolationWidths 148 0.063161352 insert f'_1width:InterpolationWidths 149 0.065632975 insert f'_1width:InterpolationWidths 150 0.06813035 insert f'_1width:InterpolationWidths 151 0.070654697 insert f'_1width:InterpolationWidths 152 0.073206805 insert f'_1width:InterpolationWidths 153 0.075788406 insert f'_1width:InterpolationWidths 154 0.078400194 insert f'_1width:InterpolationWidths 155 0.081015949 insert f'_1width:InterpolationWidths 156 0.083612966 insert f'_1width:InterpolationWidths 157 0.086213818 insert f'_1width:InterpolationWidths 158 0.088825349 insert f'_1width:InterpolationWidths 159 0.09145146 insert f'_1width:InterpolationWidths 160 0.094094855 insert f'_1width:InterpolationWidths 161 0.096757607 insert f'_1width:InterpolationWidths 162 0 insert f'_1width:InterpolationWidths 163 0 insert f'_1width:InterpolationWidths 164 2.9804207e-08 insert f'_1width:InterpolationWidths 165 3.1432877e-07 insert f'_1width:InterpolationWidths 166 1.1834278e-06 insert f'_1width:InterpolationWidths 167 3.1726817e-06 insert f'_1width:InterpolationWidths 168 7.1330489e-06 insert f'_1width:InterpolationWidths 169 1.4414309e-05 insert f'_1width:InterpolationWidths 170 2.7179595e-05 insert f'_1width:InterpolationWidths 171 4.8966542e-05 insert f'_1width:InterpolationWidths 172 8.5742464e-05 insert f'_1width:InterpolationWidths 173 0.00014802155 insert f'_1width:InterpolationWidths 174 0.00025546627 insert f'_1width:InterpolationWidths 175 0.0004479061 insert f'_1width:InterpolationWidths 176 0.00081469968 insert f'_1width:InterpolationWidths 177 0.001577182 insert f'_1width:InterpolationWidths 178 0.0032251296 insert f'_1width:InterpolationWidths 179 0.0060265737 insert f'_1width:InterpolationWidths 180 0.009221913 insert f'_1width:InterpolationWidths 181 0.012289085 insert f'_1width:InterpolationWidths 182 0.015164827 insert f'_1width:InterpolationWidths 183 0.017883672 insert f'_1width:InterpolationWidths 184 0.02048434 insert f'_1width:InterpolationWidths 185 0.022997233 insert f'_1width:InterpolationWidths 186 0.025444939 insert f'_1width:InterpolationWidths 187 0.027844916 insert f'_1width:InterpolationWidths 188 0.03021018 insert f'_1width:InterpolationWidths 189 0.03255103 insert f'_1width:InterpolationWidths 190 0.034875693 insert f'_1width:InterpolationWidths 191 0.03719086 insert f'_1width:InterpolationWidths 192 0.039502061 insert f'_1width:InterpolationWidths 193 0.041813938 insert f'_1width:InterpolationWidths 194 0.044130438 insert f'_1width:InterpolationWidths 195 0.046454956 insert f'_1width:InterpolationWidths 196 0.04879045 insert f'_1width:InterpolationWidths 197 0.051139516 insert f'_1width:InterpolationWidths 198 0.053504459 insert f'_1width:InterpolationWidths 199 0.055887339 insert f'_1width:InterpolationWidths 200 0.058290014 insert f'_1width:InterpolationWidths 201 0.060714171 insert f'_1width:InterpolationWidths 202 0.063161352 insert f'_1width:InterpolationWidths 203 0.065632975 insert f'_1width:InterpolationWidths 204 0.06813035 insert f'_1width:InterpolationWidths 205 0.070654697 insert f'_1width:InterpolationWidths 206 0.073206805 insert f'_1width:InterpolationWidths 207 0.075788406 insert f'_1width:InterpolationWidths 208 0.078400194 insert f'_1width:InterpolationWidths 209 0.081015949 insert f'_1width:InterpolationWidths 210 0.083612966 insert f'_1width:InterpolationWidths 211 0.086213818 insert f'_1width:InterpolationWidths 212 0.088825349 insert f'_1width:InterpolationWidths 213 0.09145146 insert f'_1width:InterpolationWidths 214 0.094094855 insert f'_1width:InterpolationWidths 215 0.096757607 insert f'_1width:InterpolationWidths 216 1.7536404e-05 insert f'_1width:InterpolationWidths 217 2.3819435e-05 insert f'_1width:InterpolationWidths 218 3.2217922e-05 insert f'_1width:InterpolationWidths 219 4.2984007e-05 insert f'_1width:InterpolationWidths 220 5.6300799e-05 insert f'_1width:InterpolationWidths 221 7.2273033e-05 insert f'_1width:InterpolationWidths 222 9.0969659e-05 insert f'_1width:InterpolationWidths 223 0.00011242865 insert f'_1width:InterpolationWidths 224 0.00013667167 insert f'_1width:InterpolationWidths 225 0.00016366292 insert f'_1width:InterpolationWidths 226 0.00019340751 insert f'_1width:InterpolationWidths 227 0.00022586779 insert f'_1width:InterpolationWidths 228 0.00026099686 insert f'_1width:InterpolationWidths 229 0.00029874795 insert f'_1width:InterpolationWidths 230 0.00033906254 insert f'_1width:InterpolationWidths 231 0.000381882 insert f'_1width:InterpolationWidths 232 0.00042715036 insert f'_1width:InterpolationWidths 233 0.0004747783 insert f'_1width:InterpolationWidths 234 0.00052471938 insert f'_1width:InterpolationWidths 235 0.00057689948 insert f'_1width:InterpolationWidths 236 0.00063125205 insert f'_1width:InterpolationWidths 237 0.00068769726 insert f'_1width:InterpolationWidths 238 0.00074617354 insert f'_1width:InterpolationWidths 239 0.00080661003 insert f'_1width:InterpolationWidths 240 0.00086893909 insert f'_1width:InterpolationWidths 241 0.00093309398 insert f'_1width:InterpolationWidths 242 0.00099900132 insert f'_1width:InterpolationWidths 243 0.0010666127 insert f'_1width:InterpolationWidths 244 0.0011358484 insert f'_1width:InterpolationWidths 245 0.0012066521 insert f'_1width:InterpolationWidths 246 0.0012790279 insert f'_1width:InterpolationWidths 247 0.0013527371 insert f'_1width:InterpolationWidths 248 0.0014278947 insert f'_1width:InterpolationWidths 249 0.0015043861 insert f'_1width:InterpolationWidths 250 0.0015821698 insert f'_1width:InterpolationWidths 251 0.0016611877 insert f'_1width:InterpolationWidths 252 0.0017413687 insert f'_1width:InterpolationWidths 253 0.001822656 insert f'_1width:InterpolationWidths 254 0.0019049931 insert f'_1width:InterpolationWidths 255 0.0019883267 insert f'_1width:InterpolationWidths 256 0.0020726057 insert f'_1width:InterpolationWidths 257 0.0021577814 insert f'_1width:InterpolationWidths 258 0.002243807 insert f'_1width:InterpolationWidths 259 0.0023306376 insert f'_1width:InterpolationWidths 260 0.0024182304 insert f'_1width:InterpolationWidths 261 0.0025065442 insert f'_1width:InterpolationWidths 262 0.0025955396 insert f'_1width:InterpolationWidths 263 0.002685179 insert f'_1width:InterpolationWidths 264 0.0027754261 insert f'_1width:InterpolationWidths 265 0.0028662465 insert f'_1width:InterpolationWidths 266 0.0029576072 insert f'_1width:InterpolationWidths 267 0.0030494765 insert f'_1width:InterpolationWidths 268 0.0031418244 insert f'_1width:InterpolationWidths 269 0.0032346221 insert f'_1width:InterpolationWidths 270 1.7536404e-05 insert f'_1width:InterpolationWidths 271 2.3819435e-05 insert f'_1width:InterpolationWidths 272 3.2217922e-05 insert f'_1width:InterpolationWidths 273 4.2984007e-05 insert f'_1width:InterpolationWidths 274 5.6300799e-05 insert f'_1width:InterpolationWidths 275 7.2273033e-05 insert f'_1width:InterpolationWidths 276 9.0969659e-05 insert f'_1width:InterpolationWidths 277 0.00011242865 insert f'_1width:InterpolationWidths 278 0.00013667167 insert f'_1width:InterpolationWidths 279 0.00016366292 insert f'_1width:InterpolationWidths 280 0.00019340751 insert f'_1width:InterpolationWidths 281 0.00022586779 insert f'_1width:InterpolationWidths 282 0.00026099686 insert f'_1width:InterpolationWidths 283 0.00029874795 insert f'_1width:InterpolationWidths 284 0.00033906254 insert f'_1width:InterpolationWidths 285 0.000381882 insert f'_1width:InterpolationWidths 286 0.00042715036 insert f'_1width:InterpolationWidths 287 0.0004747783 insert f'_1width:InterpolationWidths 288 0.00052471938 insert f'_1width:InterpolationWidths 289 0.00057689948 insert f'_1width:InterpolationWidths 290 0.00063125205 insert f'_1width:InterpolationWidths 291 0.00068769726 insert f'_1width:InterpolationWidths 292 0.00074617354 insert f'_1width:InterpolationWidths 293 0.00080661003 insert f'_1width:InterpolationWidths 294 0.00086893909 insert f'_1width:InterpolationWidths 295 0.00093309398 insert f'_1width:InterpolationWidths 296 0.00099900132 insert f'_1width:InterpolationWidths 297 0.0010666127 insert f'_1width:InterpolationWidths 298 0.0011358484 insert f'_1width:InterpolationWidths 299 0.0012066521 insert f'_1width:InterpolationWidths 300 0.0012790279 insert f'_1width:InterpolationWidths 301 0.0013527371 insert f'_1width:InterpolationWidths 302 0.0014278947 insert f'_1width:InterpolationWidths 303 0.0015043861 insert f'_1width:InterpolationWidths 304 0.0015821698 insert f'_1width:InterpolationWidths 305 0.0016611877 insert f'_1width:InterpolationWidths 306 0.0017413687 insert f'_1width:InterpolationWidths 307 0.001822656 insert f'_1width:InterpolationWidths 308 0.0019049931 insert f'_1width:InterpolationWidths 309 0.0019883267 insert f'_1width:InterpolationWidths 310 0.0020726057 insert f'_1width:InterpolationWidths 311 0.0021577814 insert f'_1width:InterpolationWidths 312 0.002243807 insert f'_1width:InterpolationWidths 313 0.0023306376 insert f'_1width:InterpolationWidths 314 0.0024182304 insert f'_1width:InterpolationWidths 315 0.0025065442 insert f'_1width:InterpolationWidths 316 0.0025955396 insert f'_1width:InterpolationWidths 317 0.002685179 insert f'_1width:InterpolationWidths 318 0.0027754261 insert f'_1width:InterpolationWidths 319 0.0028662465 insert f'_1width:InterpolationWidths 320 0.0029576072 insert f'_1width:InterpolationWidths 321 0.0030494765 insert f'_1width:InterpolationWidths 322 0.0031418244 insert f'_1width:InterpolationWidths 323 0.0032346221 insert f'_1width:InterpolationWidths 324 1.8707576e-05 insert f'_1width:InterpolationWidths 325 2.5397701e-05 insert f'_1width:InterpolationWidths 326 3.4247661e-05 insert f'_1width:InterpolationWidths 327 4.5487859e-05 insert f'_1width:InterpolationWidths 328 5.925711e-05 insert f'_1width:InterpolationWidths 329 7.5677813e-05 insert f'_1width:InterpolationWidths 330 9.4802789e-05 insert f'_1width:InterpolationWidths 331 0.00011666802 insert f'_1width:InterpolationWidths 332 0.00014129837 insert f'_1width:InterpolationWidths 333 0.00016865638 insert f'_1width:InterpolationWidths 334 0.00019873652 insert f'_1width:InterpolationWidths 335 0.00023151426 insert f'_1width:InterpolationWidths 336 0.00026691703 insert f'_1width:InterpolationWidths 337 0.00030497197 insert f'_1width:InterpolationWidths 338 0.00034554846 insert f'_1width:InterpolationWidths 339 0.0003886111 insert f'_1width:InterpolationWidths 340 0.0004340991 insert f'_1width:InterpolationWidths 341 0.00048195147 insert f'_1width:InterpolationWidths 342 0.00053213293 insert f'_1width:InterpolationWidths 343 0.00058444826 insert f'_1width:InterpolationWidths 344 0.00063897214 insert f'_1width:InterpolationWidths 345 0.0006954408 insert f'_1width:InterpolationWidths 346 0.00075469392 insert f'_1width:InterpolationWidths 347 0.00081477569 insert f'_1width:InterpolationWidths 348 0.00087718956 insert f'_1width:InterpolationWidths 349 0.00094152906 insert f'_1width:InterpolationWidths 350 0.0010075546 insert f'_1width:InterpolationWidths 351 0.0010752543 insert f'_1width:InterpolationWidths 352 0.0011446022 insert f'_1width:InterpolationWidths 353 0.0012155052 insert f'_1width:InterpolationWidths 354 0.001287906 insert f'_1width:InterpolationWidths 355 0.0013617522 insert f'_1width:InterpolationWidths 356 0.0014369833 insert f'_1width:InterpolationWidths 357 0.0015135877 insert f'_1width:InterpolationWidths 358 0.0015916078 insert f'_1width:InterpolationWidths 359 0.0016704732 insert f'_1width:InterpolationWidths 360 0.0017507075 insert f'_1width:InterpolationWidths 361 0.0018320426 insert f'_1width:InterpolationWidths 362 0.0019144229 insert f'_1width:InterpolationWidths 363 0.0019977956 insert f'_1width:InterpolationWidths 364 0.0020821102 insert f'_1width:InterpolationWidths 365 0.0021673182 insert f'_1width:InterpolationWidths 366 0.0022533732 insert f'_1width:InterpolationWidths 367 0.0023402306 insert f'_1width:InterpolationWidths 368 0.0024278478 insert f'_1width:InterpolationWidths 369 0.0025161839 insert f'_1width:InterpolationWidths 370 0.0026051996 insert f'_1width:InterpolationWidths 371 0.0026948574 insert f'_1width:InterpolationWidths 372 0.0027851214 insert f'_1width:InterpolationWidths 373 0.0028759573 insert f'_1width:InterpolationWidths 374 0.002967332 insert f'_1width:InterpolationWidths 375 0.0030592143 insert f'_1width:InterpolationWidths 376 0.0031515739 insert f'_1width:InterpolationWidths 377 0.0032443823 insert f'_1width:NumberofEntries 0 54 insert f'_1width:NumberofEntries 1 108 insert f'_1width:NumberofEntries 2 162 insert f'_1width:NumberofEntries 3 216 insert f'_1width:NumberofEntries 4 216 insert f'_1width:NumberofEntries 5 216 insert f'_1width:NumberofEntries 6 216 insert f'_1width:NumberofEntries 7 216 insert f'_1width:NumberofEntries 8 270 insert f'_1width:NumberofEntries 9 324 insert f'_1width:NumberofEntries 10 378 insert f'_1width:NumberofEntries 11 378 newdef /Herwig/Particles/f'_1:Width_generator f'_1width # create Herwig::GenericWidthGenerator a_1+width newdef a_1+width:Particle /Herwig/Particles/a_1+ newdef a_1+width:Prefactor 0.999644 newdef a_1+width:BRNormalize 0 newdef a_1+width:BRMinimum 0.001 newdef a_1+width:Points 50 newdef a_1+width:InterpolationOrder 1 insert a_1+width:MEtype 0 2 insert a_1+width:MEtype 1 2 insert a_1+width:MEtype 2 2 insert a_1+width:MEtype 3 1 insert a_1+width:MEtype 4 2 insert a_1+width:MEcode 0 0 insert a_1+width:MEcode 1 0 insert a_1+width:MEcode 2 0 insert a_1+width:MEcode 3 4 insert a_1+width:MEcode 4 0 insert a_1+width:MEcoupling 0 1 insert a_1+width:MEcoupling 1 1 insert a_1+width:MEcoupling 2 1 insert a_1+width:MEcoupling 3 0.0124 insert a_1+width:MEcoupling 4 1 insert a_1+width:ModeOn 0 1 insert a_1+width:ModeOn 1 1 insert a_1+width:ModeOn 2 1 insert a_1+width:ModeOn 3 0 insert a_1+width:ModeOn 4 1 insert a_1+width:MinimumMasses 0 1.13931 insert a_1+width:MinimumMasses 1 1.13968 insert a_1+width:MinimumMasses 2 0.418711 insert a_1+width:MinimumMasses 3 0.13957 insert a_1+width:MinimumMasses 4 0.409525 insert a_1+width:MEmass1 0 0.89166 insert a_1+width:MEmass1 1 0.896 insert a_1+width:MEmass1 2 0 insert a_1+width:MEmass1 3 0 insert a_1+width:MEmass1 4 0 insert a_1+width:MEmass2 0 0.497648 insert a_1+width:MEmass2 1 0.493677 insert a_1+width:MEmass2 2 0 insert a_1+width:MEmass2 3 0.13957 insert a_1+width:MEmass2 4 0 insert a_1+width:DecayModes 0 a_1+->K*+,Kbar0; insert a_1+width:DecayModes 1 a_1+->K+,K*bar0; insert a_1+width:DecayModes 2 a_1+->pi+,pi+,pi-; insert a_1+width:DecayModes 3 a_1+->pi+,gamma; insert a_1+width:DecayModes 4 a_1+->pi+,pi0,pi0; insert a_1+width:InterpolationMasses 0 1.112341 insert a_1+width:InterpolationMasses 1 1.139308 insert a_1+width:InterpolationMasses 2 1.139308 insert a_1+width:InterpolationMasses 3 1.1527915 insert a_1+width:InterpolationMasses 4 1.166275 insert a_1+width:InterpolationMasses 5 1.1797585 insert a_1+width:InterpolationMasses 6 1.193242 insert a_1+width:InterpolationMasses 7 1.2067256 insert a_1+width:InterpolationMasses 8 1.2202091 insert a_1+width:InterpolationMasses 9 1.2336926 insert a_1+width:InterpolationMasses 10 1.2471761 insert a_1+width:InterpolationMasses 11 1.2606596 insert a_1+width:InterpolationMasses 12 1.2741431 insert a_1+width:InterpolationMasses 13 1.2876266 insert a_1+width:InterpolationMasses 14 1.3011101 insert a_1+width:InterpolationMasses 15 1.3145936 insert a_1+width:InterpolationMasses 16 1.3280771 insert a_1+width:InterpolationMasses 17 1.3415607 insert a_1+width:InterpolationMasses 18 1.3550442 insert a_1+width:InterpolationMasses 19 1.3685277 insert a_1+width:InterpolationMasses 20 1.3820112 insert a_1+width:InterpolationMasses 21 1.3954947 insert a_1+width:InterpolationMasses 22 1.4089782 insert a_1+width:InterpolationMasses 23 1.4224617 insert a_1+width:InterpolationMasses 24 1.4359452 insert a_1+width:InterpolationMasses 25 1.4494287 insert a_1+width:InterpolationMasses 26 1.4629122 insert a_1+width:InterpolationMasses 27 1.4763958 insert a_1+width:InterpolationMasses 28 1.4898793 insert a_1+width:InterpolationMasses 29 1.5033628 insert a_1+width:InterpolationMasses 30 1.5168463 insert a_1+width:InterpolationMasses 31 1.5303298 insert a_1+width:InterpolationMasses 32 1.5438133 insert a_1+width:InterpolationMasses 33 1.5572968 insert a_1+width:InterpolationMasses 34 1.5707803 insert a_1+width:InterpolationMasses 35 1.5842638 insert a_1+width:InterpolationMasses 36 1.5977473 insert a_1+width:InterpolationMasses 37 1.6112309 insert a_1+width:InterpolationMasses 38 1.6247144 insert a_1+width:InterpolationMasses 39 1.6381979 insert a_1+width:InterpolationMasses 40 1.6516814 insert a_1+width:InterpolationMasses 41 1.6651649 insert a_1+width:InterpolationMasses 42 1.6786484 insert a_1+width:InterpolationMasses 43 1.6921319 insert a_1+width:InterpolationMasses 44 1.7056154 insert a_1+width:InterpolationMasses 45 1.7190989 insert a_1+width:InterpolationMasses 46 1.7325824 insert a_1+width:InterpolationMasses 47 1.746066 insert a_1+width:InterpolationMasses 48 1.7595495 insert a_1+width:InterpolationMasses 49 1.773033 insert a_1+width:InterpolationMasses 50 1.7865165 insert a_1+width:InterpolationMasses 51 1.8 insert a_1+width:InterpolationMasses 52 1.8134835 insert a_1+width:InterpolationMasses 53 1.826967 insert a_1+width:InterpolationMasses 54 1.112725 insert a_1+width:InterpolationMasses 55 1.139677 insert a_1+width:InterpolationMasses 56 1.139677 insert a_1+width:InterpolationMasses 57 1.153153 insert a_1+width:InterpolationMasses 58 1.166629 insert a_1+width:InterpolationMasses 59 1.1801049 insert a_1+width:InterpolationMasses 60 1.1935809 insert a_1+width:InterpolationMasses 61 1.2070569 insert a_1+width:InterpolationMasses 62 1.2205329 insert a_1+width:InterpolationMasses 63 1.2340089 insert a_1+width:InterpolationMasses 64 1.2474848 insert a_1+width:InterpolationMasses 65 1.2609608 insert a_1+width:InterpolationMasses 66 1.2744368 insert a_1+width:InterpolationMasses 67 1.2879128 insert a_1+width:InterpolationMasses 68 1.3013888 insert a_1+width:InterpolationMasses 69 1.3148647 insert a_1+width:InterpolationMasses 70 1.3283407 insert a_1+width:InterpolationMasses 71 1.3418167 insert a_1+width:InterpolationMasses 72 1.3552927 insert a_1+width:InterpolationMasses 73 1.3687687 insert a_1+width:InterpolationMasses 74 1.3822446 insert a_1+width:InterpolationMasses 75 1.3957206 insert a_1+width:InterpolationMasses 76 1.4091966 insert a_1+width:InterpolationMasses 77 1.4226726 insert a_1+width:InterpolationMasses 78 1.4361486 insert a_1+width:InterpolationMasses 79 1.4496245 insert a_1+width:InterpolationMasses 80 1.4631005 insert a_1+width:InterpolationMasses 81 1.4765765 insert a_1+width:InterpolationMasses 82 1.4900525 insert a_1+width:InterpolationMasses 83 1.5035284 insert a_1+width:InterpolationMasses 84 1.5170044 insert a_1+width:InterpolationMasses 85 1.5304804 insert a_1+width:InterpolationMasses 86 1.5439564 insert a_1+width:InterpolationMasses 87 1.5574324 insert a_1+width:InterpolationMasses 88 1.5709083 insert a_1+width:InterpolationMasses 89 1.5843843 insert a_1+width:InterpolationMasses 90 1.5978603 insert a_1+width:InterpolationMasses 91 1.6113363 insert a_1+width:InterpolationMasses 92 1.6248123 insert a_1+width:InterpolationMasses 93 1.6382882 insert a_1+width:InterpolationMasses 94 1.6517642 insert a_1+width:InterpolationMasses 95 1.6652402 insert a_1+width:InterpolationMasses 96 1.6787162 insert a_1+width:InterpolationMasses 97 1.6921922 insert a_1+width:InterpolationMasses 98 1.7056681 insert a_1+width:InterpolationMasses 99 1.7191441 insert a_1+width:InterpolationMasses 100 1.7326201 insert a_1+width:InterpolationMasses 101 1.7460961 insert a_1+width:InterpolationMasses 102 1.7595721 insert a_1+width:InterpolationMasses 103 1.773048 insert a_1+width:InterpolationMasses 104 1.786524 insert a_1+width:InterpolationMasses 105 1.8 insert a_1+width:InterpolationMasses 106 1.813476 insert a_1+width:InterpolationMasses 107 1.826952 insert a_1+width:InterpolationMasses 108 0.68 insert a_1+width:InterpolationMasses 109 0.70285714 insert a_1+width:InterpolationMasses 110 0.72571429 insert a_1+width:InterpolationMasses 111 0.74857143 insert a_1+width:InterpolationMasses 112 0.77142857 insert a_1+width:InterpolationMasses 113 0.79428571 insert a_1+width:InterpolationMasses 114 0.81714286 insert a_1+width:InterpolationMasses 115 0.84 insert a_1+width:InterpolationMasses 116 0.86285714 insert a_1+width:InterpolationMasses 117 0.88571429 insert a_1+width:InterpolationMasses 118 0.90857143 insert a_1+width:InterpolationMasses 119 0.93142857 insert a_1+width:InterpolationMasses 120 0.95428571 insert a_1+width:InterpolationMasses 121 0.97714286 insert a_1+width:InterpolationMasses 122 1 insert a_1+width:InterpolationMasses 123 1.0228571 insert a_1+width:InterpolationMasses 124 1.0457143 insert a_1+width:InterpolationMasses 125 1.0685714 insert a_1+width:InterpolationMasses 126 1.0914286 insert a_1+width:InterpolationMasses 127 1.1142857 insert a_1+width:InterpolationMasses 128 1.1371429 insert a_1+width:InterpolationMasses 129 1.16 insert a_1+width:InterpolationMasses 130 1.1828571 insert a_1+width:InterpolationMasses 131 1.2057143 insert a_1+width:InterpolationMasses 132 1.2285714 insert a_1+width:InterpolationMasses 133 1.2514286 insert a_1+width:InterpolationMasses 134 1.2742857 insert a_1+width:InterpolationMasses 135 1.2971429 insert a_1+width:InterpolationMasses 136 1.32 insert a_1+width:InterpolationMasses 137 1.3428571 insert a_1+width:InterpolationMasses 138 1.3657143 insert a_1+width:InterpolationMasses 139 1.3885714 insert a_1+width:InterpolationMasses 140 1.4114286 insert a_1+width:InterpolationMasses 141 1.4342857 insert a_1+width:InterpolationMasses 142 1.4571429 insert a_1+width:InterpolationMasses 143 1.48 insert a_1+width:InterpolationMasses 144 1.5028571 insert a_1+width:InterpolationMasses 145 1.5257143 insert a_1+width:InterpolationMasses 146 1.5485714 insert a_1+width:InterpolationMasses 147 1.5714286 insert a_1+width:InterpolationMasses 148 1.5942857 insert a_1+width:InterpolationMasses 149 1.6171429 insert a_1+width:InterpolationMasses 150 1.64 insert a_1+width:InterpolationMasses 151 1.6628571 insert a_1+width:InterpolationMasses 152 1.6857143 insert a_1+width:InterpolationMasses 153 1.7085714 insert a_1+width:InterpolationMasses 154 1.7314286 insert a_1+width:InterpolationMasses 155 1.7542857 insert a_1+width:InterpolationMasses 156 1.7771429 insert a_1+width:InterpolationMasses 157 1.8 insert a_1+width:InterpolationMasses 158 0.68 insert a_1+width:InterpolationMasses 159 0.70285714 insert a_1+width:InterpolationMasses 160 0.72571429 insert a_1+width:InterpolationMasses 161 0.74857143 insert a_1+width:InterpolationMasses 162 0.77142857 insert a_1+width:InterpolationMasses 163 0.79428571 insert a_1+width:InterpolationMasses 164 0.81714286 insert a_1+width:InterpolationMasses 165 0.84 insert a_1+width:InterpolationMasses 166 0.86285714 insert a_1+width:InterpolationMasses 167 0.88571429 insert a_1+width:InterpolationMasses 168 0.90857143 insert a_1+width:InterpolationMasses 169 0.93142857 insert a_1+width:InterpolationMasses 170 0.95428571 insert a_1+width:InterpolationMasses 171 0.97714286 insert a_1+width:InterpolationMasses 172 1 insert a_1+width:InterpolationMasses 173 1.0228571 insert a_1+width:InterpolationMasses 174 1.0457143 insert a_1+width:InterpolationMasses 175 1.0685714 insert a_1+width:InterpolationMasses 176 1.0914286 insert a_1+width:InterpolationMasses 177 1.1142857 insert a_1+width:InterpolationMasses 178 1.1371429 insert a_1+width:InterpolationMasses 179 1.16 insert a_1+width:InterpolationMasses 180 1.1828571 insert a_1+width:InterpolationMasses 181 1.2057143 insert a_1+width:InterpolationMasses 182 1.2285714 insert a_1+width:InterpolationMasses 183 1.2514286 insert a_1+width:InterpolationMasses 184 1.2742857 insert a_1+width:InterpolationMasses 185 1.2971429 insert a_1+width:InterpolationMasses 186 1.32 insert a_1+width:InterpolationMasses 187 1.3428571 insert a_1+width:InterpolationMasses 188 1.3657143 insert a_1+width:InterpolationMasses 189 1.3885714 insert a_1+width:InterpolationMasses 190 1.4114286 insert a_1+width:InterpolationMasses 191 1.4342857 insert a_1+width:InterpolationMasses 192 1.4571429 insert a_1+width:InterpolationMasses 193 1.48 insert a_1+width:InterpolationMasses 194 1.5028571 insert a_1+width:InterpolationMasses 195 1.5257143 insert a_1+width:InterpolationMasses 196 1.5485714 insert a_1+width:InterpolationMasses 197 1.5714286 insert a_1+width:InterpolationMasses 198 1.5942857 insert a_1+width:InterpolationMasses 199 1.6171429 insert a_1+width:InterpolationMasses 200 1.64 insert a_1+width:InterpolationMasses 201 1.6628571 insert a_1+width:InterpolationMasses 202 1.6857143 insert a_1+width:InterpolationMasses 203 1.7085714 insert a_1+width:InterpolationMasses 204 1.7314286 insert a_1+width:InterpolationMasses 205 1.7542857 insert a_1+width:InterpolationMasses 206 1.7771429 insert a_1+width:InterpolationMasses 207 1.8 insert a_1+width:InterpolationWidths 0 0 insert a_1+width:InterpolationWidths 1 0 insert a_1+width:InterpolationWidths 2 0 insert a_1+width:InterpolationWidths 3 1.9029588e-07 insert a_1+width:InterpolationWidths 4 1.0422522e-06 insert a_1+width:InterpolationWidths 5 3.2461398e-06 insert a_1+width:InterpolationWidths 6 7.8278922e-06 insert a_1+width:InterpolationWidths 7 1.6285514e-05 insert a_1+width:InterpolationWidths 8 3.0798633e-05 insert a_1+width:InterpolationWidths 9 5.4547704e-05 insert a_1+width:InterpolationWidths 10 9.2212034e-05 insert a_1+width:InterpolationWidths 11 0.00015076989 insert a_1+width:InterpolationWidths 12 0.00024082915 insert a_1+width:InterpolationWidths 13 0.00037893167 insert a_1+width:InterpolationWidths 14 0.00059173958 insert a_1+width:InterpolationWidths 15 0.00092407899 insert a_1+width:InterpolationWidths 16 0.0014554286 insert a_1+width:InterpolationWidths 17 0.0023361394 insert a_1+width:InterpolationWidths 18 0.0038712305 insert a_1+width:InterpolationWidths 19 0.0067011143 insert a_1+width:InterpolationWidths 20 0.011943619 insert a_1+width:InterpolationWidths 21 0.020148302 insert a_1+width:InterpolationWidths 22 0.029836789 insert a_1+width:InterpolationWidths 23 0.039525635 insert a_1+width:InterpolationWidths 24 0.048774475 insert a_1+width:InterpolationWidths 25 0.057569005 insert a_1+width:InterpolationWidths 26 0.065981632 insert a_1+width:InterpolationWidths 27 0.074089164 insert a_1+width:InterpolationWidths 28 0.081956017 insert a_1+width:InterpolationWidths 29 0.089633636 insert a_1+width:InterpolationWidths 30 0.097162177 insert a_1+width:InterpolationWidths 31 0.10457554 insert a_1+width:InterpolationWidths 32 0.11189962 insert a_1+width:InterpolationWidths 33 0.11915612 insert a_1+width:InterpolationWidths 34 0.12636305 insert a_1+width:InterpolationWidths 35 0.13353558 insert a_1+width:InterpolationWidths 36 0.14068659 insert a_1+width:InterpolationWidths 37 0.14782716 insert a_1+width:InterpolationWidths 38 0.15496689 insert a_1+width:InterpolationWidths 39 0.1621142 insert a_1+width:InterpolationWidths 40 0.1692765 insert a_1+width:InterpolationWidths 41 0.17646038 insert a_1+width:InterpolationWidths 42 0.18367174 insert a_1+width:InterpolationWidths 43 0.1909159 insert a_1+width:InterpolationWidths 44 0.19819768 insert a_1+width:InterpolationWidths 45 0.20552147 insert a_1+width:InterpolationWidths 46 0.21289129 insert a_1+width:InterpolationWidths 47 0.22031085 insert a_1+width:InterpolationWidths 48 0.22778358 insert a_1+width:InterpolationWidths 49 0.23531266 insert a_1+width:InterpolationWidths 50 0.24290107 insert a_1+width:InterpolationWidths 51 0.25055158 insert a_1+width:InterpolationWidths 52 0.25826681 insert a_1+width:InterpolationWidths 53 0.26604923 insert a_1+width:InterpolationWidths 54 0 insert a_1+width:InterpolationWidths 55 0 insert a_1+width:InterpolationWidths 56 0 insert a_1+width:InterpolationWidths 57 3.0912138e-07 insert a_1+width:InterpolationWidths 58 1.4644837e-06 insert a_1+width:InterpolationWidths 59 4.1847738e-06 insert a_1+width:InterpolationWidths 60 9.5383216e-06 insert a_1+width:InterpolationWidths 61 1.9073527e-05 insert a_1+width:InterpolationWidths 62 3.5028699e-05 insert a_1+width:InterpolationWidths 63 6.0652088e-05 insert a_1+width:InterpolationWidths 64 0.00010070065 insert a_1+width:InterpolationWidths 65 0.00016224025 insert a_1+width:InterpolationWidths 66 0.00025597445 insert a_1+width:InterpolationWidths 67 0.00039854254 insert a_1+width:InterpolationWidths 68 0.00061668847 insert a_1+width:InterpolationWidths 69 0.00095526161 insert a_1+width:InterpolationWidths 70 0.0014936037 insert a_1+width:InterpolationWidths 71 0.0023815504 insert a_1+width:InterpolationWidths 72 0.0039229617 insert a_1+width:InterpolationWidths 73 0.0067587498 insert a_1+width:InterpolationWidths 74 0.012021491 insert a_1+width:InterpolationWidths 75 0.02030957 insert a_1+width:InterpolationWidths 76 0.030127649 insert a_1+width:InterpolationWidths 77 0.039940172 insert a_1+width:InterpolationWidths 78 0.049293718 insert a_1+width:InterpolationWidths 79 0.058176565 insert a_1+width:InterpolationWidths 80 0.066665 insert a_1+width:InterpolationWidths 81 0.074838792 insert a_1+width:InterpolationWidths 82 0.082764425 insert a_1+width:InterpolationWidths 83 0.090494793 insert a_1+width:InterpolationWidths 84 0.098071084 insert a_1+width:InterpolationWidths 85 0.10552796 insert a_1+width:InterpolationWidths 86 0.1128919 insert a_1+width:InterpolationWidths 87 0.12018502 insert a_1+width:InterpolationWidths 88 0.12742571 insert a_1+width:InterpolationWidths 89 0.13462939 insert a_1+width:InterpolationWidths 90 0.14180917 insert a_1+width:InterpolationWidths 91 0.14897631 insert a_1+width:InterpolationWidths 92 0.15614057 insert a_1+width:InterpolationWidths 93 0.16331048 insert a_1+width:InterpolationWidths 94 0.17049356 insert a_1+width:InterpolationWidths 95 0.17769649 insert a_1+width:InterpolationWidths 96 0.18492526 insert a_1+width:InterpolationWidths 97 0.19218524 insert a_1+width:InterpolationWidths 98 0.19948131 insert a_1+width:InterpolationWidths 99 0.20681791 insert a_1+width:InterpolationWidths 100 0.2141991 insert a_1+width:InterpolationWidths 101 0.22162862 insert a_1+width:InterpolationWidths 102 0.22910995 insert a_1+width:InterpolationWidths 103 0.23664628 insert a_1+width:InterpolationWidths 104 0.24424061 insert a_1+width:InterpolationWidths 105 0.25189575 insert a_1+width:InterpolationWidths 106 0.25961432 insert a_1+width:InterpolationWidths 107 0.26739882 insert a_1+width:InterpolationWidths 108 0.0037293391 insert a_1+width:InterpolationWidths 109 0.0050970417 insert a_1+width:InterpolationWidths 110 0.0069031298 insert a_1+width:InterpolationWidths 111 0.0093007578 insert a_1+width:InterpolationWidths 112 0.012511975 insert a_1+width:InterpolationWidths 113 0.016865111 insert a_1+width:InterpolationWidths 114 0.022850118 insert a_1+width:InterpolationWidths 115 0.031183883 insert a_1+width:InterpolationWidths 116 0.042809646 insert a_1+width:InterpolationWidths 117 0.058584915 insert a_1+width:InterpolationWidths 118 0.078397998 insert a_1+width:InterpolationWidths 119 0.10055052 insert a_1+width:InterpolationWidths 120 0.12279622 insert a_1+width:InterpolationWidths 121 0.14369243 insert a_1+width:InterpolationWidths 122 0.16271412 insert a_1+width:InterpolationWidths 123 0.17982623 insert a_1+width:InterpolationWidths 124 0.19517755 insert a_1+width:InterpolationWidths 125 0.20896356 insert a_1+width:InterpolationWidths 126 0.22137556 insert a_1+width:InterpolationWidths 127 0.23258527 insert a_1+width:InterpolationWidths 128 0.24273982 insert a_1+width:InterpolationWidths 129 0.25196798 insert a_1+width:InterpolationWidths 130 0.26037433 insert a_1+width:InterpolationWidths 131 0.26805355 insert a_1+width:InterpolationWidths 132 0.27508241 insert a_1+width:InterpolationWidths 133 0.28153239 insert a_1+width:InterpolationWidths 134 0.28744407 insert a_1+width:InterpolationWidths 135 0.29288119 insert a_1+width:InterpolationWidths 136 0.29787928 insert a_1+width:InterpolationWidths 137 0.30247381 insert a_1+width:InterpolationWidths 138 0.30670426 insert a_1+width:InterpolationWidths 139 0.31059439 insert a_1+width:InterpolationWidths 140 0.31413161 insert a_1+width:InterpolationWidths 141 0.31740555 insert a_1+width:InterpolationWidths 142 0.32040038 insert a_1+width:InterpolationWidths 143 0.32314593 insert a_1+width:InterpolationWidths 144 0.32566925 insert a_1+width:InterpolationWidths 145 0.32800159 insert a_1+width:InterpolationWidths 146 0.33063455 insert a_1+width:InterpolationWidths 147 0.33213522 insert a_1+width:InterpolationWidths 148 0.33397554 insert a_1+width:InterpolationWidths 149 0.33570321 insert a_1+width:InterpolationWidths 150 0.33731478 insert a_1+width:InterpolationWidths 151 0.33882299 insert a_1+width:InterpolationWidths 152 0.34024449 insert a_1+width:InterpolationWidths 153 0.34158425 insert a_1+width:InterpolationWidths 154 0.34286093 insert a_1+width:InterpolationWidths 155 0.34406815 insert a_1+width:InterpolationWidths 156 0.34521363 insert a_1+width:InterpolationWidths 157 0.3463133 insert a_1+width:InterpolationWidths 158 0.0041288107 insert a_1+width:InterpolationWidths 159 0.0056052265 insert a_1+width:InterpolationWidths 160 0.0075509456 insert a_1+width:InterpolationWidths 161 0.010131486 insert a_1+width:InterpolationWidths 162 0.013587727 insert a_1+width:InterpolationWidths 163 0.018276652 insert a_1+width:InterpolationWidths 164 0.024730861 insert a_1+width:InterpolationWidths 165 0.033719566 insert a_1+width:InterpolationWidths 166 0.046213165 insert a_1+width:InterpolationWidths 167 0.06296205 insert a_1+width:InterpolationWidths 168 0.083540797 insert a_1+width:InterpolationWidths 169 0.10600319 insert a_1+width:InterpolationWidths 170 0.12818591 insert a_1+width:InterpolationWidths 171 0.14885118 insert a_1+width:InterpolationWidths 172 0.1676041 insert a_1+width:InterpolationWidths 173 0.18446281 insert a_1+width:InterpolationWidths 174 0.19959163 insert a_1+width:InterpolationWidths 175 0.21318744 insert a_1+width:InterpolationWidths 176 0.2254373 insert a_1+width:InterpolationWidths 177 0.23650874 insert a_1+width:InterpolationWidths 178 0.24654559 insert a_1+width:InterpolationWidths 179 0.25567095 insert a_1+width:InterpolationWidths 180 0.26399095 insert a_1+width:InterpolationWidths 181 0.2715908 insert a_1+width:InterpolationWidths 182 0.27855032 insert a_1+width:InterpolationWidths 183 0.28493279 insert a_1+width:InterpolationWidths 184 0.29079327 insert a_1+width:InterpolationWidths 185 0.2961787 insert a_1+width:InterpolationWidths 186 0.30112931 insert a_1+width:InterpolationWidths 187 0.30569134 insert a_1+width:InterpolationWidths 188 0.30986944 insert a_1+width:InterpolationWidths 189 0.3137218 insert a_1+width:InterpolationWidths 190 0.31722469 insert a_1+width:InterpolationWidths 191 0.32045808 insert a_1+width:InterpolationWidths 192 0.32343412 insert a_1+width:InterpolationWidths 193 0.32615062 insert a_1+width:InterpolationWidths 194 0.32865624 insert a_1+width:InterpolationWidths 195 0.33097001 insert a_1+width:InterpolationWidths 196 0.33309812 insert a_1+width:InterpolationWidths 197 0.33507361 insert a_1+width:InterpolationWidths 198 0.33690212 insert a_1+width:InterpolationWidths 199 0.33861933 insert a_1+width:InterpolationWidths 200 0.34022321 insert a_1+width:InterpolationWidths 201 0.34172257 insert a_1+width:InterpolationWidths 202 0.34313714 insert a_1+width:InterpolationWidths 203 0.34447071 insert a_1+width:InterpolationWidths 204 0.34574251 insert a_1+width:InterpolationWidths 205 0.3469448 insert a_1+width:InterpolationWidths 206 0.3480842 insert a_1+width:InterpolationWidths 207 0.34918211 insert a_1+width:NumberofEntries 0 54 insert a_1+width:NumberofEntries 1 108 insert a_1+width:NumberofEntries 2 158 insert a_1+width:NumberofEntries 3 158 insert a_1+width:NumberofEntries 4 208 newdef /Herwig/Particles/a_1+:Width_generator a_1+width newdef /Herwig/Particles/a_1-:Width_generator a_1+width # create Herwig::GenericWidthGenerator a_10width newdef a_10width:Particle /Herwig/Particles/a_10 newdef a_10width:Prefactor 1.00101 newdef a_10width:BRNormalize 0 newdef a_10width:BRMinimum 0.001 newdef a_10width:Points 50 newdef a_10width:InterpolationOrder 1 insert a_10width:MEtype 0 2 insert a_10width:MEtype 1 2 insert a_10width:MEtype 2 2 insert a_10width:MEtype 3 1 insert a_10width:MEcode 0 0 insert a_10width:MEcode 1 0 insert a_10width:MEcode 2 0 insert a_10width:MEcode 3 4 insert a_10width:MEcoupling 0 1 insert a_10width:MEcoupling 1 1 insert a_10width:MEcoupling 2 1 insert a_10width:MEcoupling 3 0.0124 insert a_10width:ModeOn 0 1 insert a_10width:ModeOn 1 1 insert a_10width:ModeOn 2 1 insert a_10width:ModeOn 3 0 insert a_10width:MinimumMasses 0 1.13534 insert a_10width:MinimumMasses 1 1.14365 insert a_10width:MinimumMasses 2 0.414118 insert a_10width:MinimumMasses 3 0.134978 insert a_10width:MEmass1 0 0.89166 insert a_10width:MEmass1 1 0.896 insert a_10width:MEmass1 2 0 insert a_10width:MEmass1 3 0 insert a_10width:MEmass2 0 0.493677 insert a_10width:MEmass2 1 0.497648 insert a_10width:MEmass2 2 0 insert a_10width:MEmass2 3 0.134978 insert a_10width:DecayModes 0 a_10->K*+,K-; insert a_10width:DecayModes 1 a_10->K*0,Kbar0; insert a_10width:DecayModes 2 a_10->pi+,pi-,pi0; insert a_10width:DecayModes 3 a_10->pi0,gamma; insert a_10width:InterpolationMasses 0 1.1082079 insert a_10width:InterpolationMasses 1 1.135337 insert a_10width:InterpolationMasses 2 1.135337 insert a_10width:InterpolationMasses 3 1.1489016 insert a_10width:InterpolationMasses 4 1.1624661 insert a_10width:InterpolationMasses 5 1.1760307 insert a_10width:InterpolationMasses 6 1.1895952 insert a_10width:InterpolationMasses 7 1.2031598 insert a_10width:InterpolationMasses 8 1.2167243 insert a_10width:InterpolationMasses 9 1.2302889 insert a_10width:InterpolationMasses 10 1.2438534 insert a_10width:InterpolationMasses 11 1.257418 insert a_10width:InterpolationMasses 12 1.2709825 insert a_10width:InterpolationMasses 13 1.2845471 insert a_10width:InterpolationMasses 14 1.2981116 insert a_10width:InterpolationMasses 15 1.3116762 insert a_10width:InterpolationMasses 16 1.3252407 insert a_10width:InterpolationMasses 17 1.3388053 insert a_10width:InterpolationMasses 18 1.3523698 insert a_10width:InterpolationMasses 19 1.3659344 insert a_10width:InterpolationMasses 20 1.3794989 insert a_10width:InterpolationMasses 21 1.3930635 insert a_10width:InterpolationMasses 22 1.406628 insert a_10width:InterpolationMasses 23 1.4201926 insert a_10width:InterpolationMasses 24 1.4337571 insert a_10width:InterpolationMasses 25 1.4473217 insert a_10width:InterpolationMasses 26 1.4608862 insert a_10width:InterpolationMasses 27 1.4744508 insert a_10width:InterpolationMasses 28 1.4880153 insert a_10width:InterpolationMasses 29 1.5015799 insert a_10width:InterpolationMasses 30 1.5151444 insert a_10width:InterpolationMasses 31 1.528709 insert a_10width:InterpolationMasses 32 1.5422735 insert a_10width:InterpolationMasses 33 1.5558381 insert a_10width:InterpolationMasses 34 1.5694026 insert a_10width:InterpolationMasses 35 1.5829672 insert a_10width:InterpolationMasses 36 1.5965317 insert a_10width:InterpolationMasses 37 1.6100963 insert a_10width:InterpolationMasses 38 1.6236608 insert a_10width:InterpolationMasses 39 1.6372254 insert a_10width:InterpolationMasses 40 1.6507899 insert a_10width:InterpolationMasses 41 1.6643545 insert a_10width:InterpolationMasses 42 1.677919 insert a_10width:InterpolationMasses 43 1.6914836 insert a_10width:InterpolationMasses 44 1.7050481 insert a_10width:InterpolationMasses 45 1.7186127 insert a_10width:InterpolationMasses 46 1.7321772 insert a_10width:InterpolationMasses 47 1.7457418 insert a_10width:InterpolationMasses 48 1.7593063 insert a_10width:InterpolationMasses 49 1.7728709 insert a_10width:InterpolationMasses 50 1.7864354 insert a_10width:InterpolationMasses 51 1.8 insert a_10width:InterpolationMasses 52 1.8135646 insert a_10width:InterpolationMasses 53 1.8271291 insert a_10width:InterpolationMasses 54 1.1168581 insert a_10width:InterpolationMasses 55 1.143648 insert a_10width:InterpolationMasses 56 1.143648 insert a_10width:InterpolationMasses 57 1.1570429 insert a_10width:InterpolationMasses 58 1.1704379 insert a_10width:InterpolationMasses 59 1.1838328 insert a_10width:InterpolationMasses 60 1.1972278 insert a_10width:InterpolationMasses 61 1.2106227 insert a_10width:InterpolationMasses 62 1.2240176 insert a_10width:InterpolationMasses 63 1.2374126 insert a_10width:InterpolationMasses 64 1.2508075 insert a_10width:InterpolationMasses 65 1.2642024 insert a_10width:InterpolationMasses 66 1.2775974 insert a_10width:InterpolationMasses 67 1.2909923 insert a_10width:InterpolationMasses 68 1.3043873 insert a_10width:InterpolationMasses 69 1.3177822 insert a_10width:InterpolationMasses 70 1.3311771 insert a_10width:InterpolationMasses 71 1.3445721 insert a_10width:InterpolationMasses 72 1.357967 insert a_10width:InterpolationMasses 73 1.371362 insert a_10width:InterpolationMasses 74 1.3847569 insert a_10width:InterpolationMasses 75 1.3981518 insert a_10width:InterpolationMasses 76 1.4115468 insert a_10width:InterpolationMasses 77 1.4249417 insert a_10width:InterpolationMasses 78 1.4383367 insert a_10width:InterpolationMasses 79 1.4517316 insert a_10width:InterpolationMasses 80 1.4651265 insert a_10width:InterpolationMasses 81 1.4785215 insert a_10width:InterpolationMasses 82 1.4919164 insert a_10width:InterpolationMasses 83 1.5053113 insert a_10width:InterpolationMasses 84 1.5187063 insert a_10width:InterpolationMasses 85 1.5321012 insert a_10width:InterpolationMasses 86 1.5454962 insert a_10width:InterpolationMasses 87 1.5588911 insert a_10width:InterpolationMasses 88 1.572286 insert a_10width:InterpolationMasses 89 1.585681 insert a_10width:InterpolationMasses 90 1.5990759 insert a_10width:InterpolationMasses 91 1.6124709 insert a_10width:InterpolationMasses 92 1.6258658 insert a_10width:InterpolationMasses 93 1.6392607 insert a_10width:InterpolationMasses 94 1.6526557 insert a_10width:InterpolationMasses 95 1.6660506 insert a_10width:InterpolationMasses 96 1.6794456 insert a_10width:InterpolationMasses 97 1.6928405 insert a_10width:InterpolationMasses 98 1.7062354 insert a_10width:InterpolationMasses 99 1.7196304 insert a_10width:InterpolationMasses 100 1.7330253 insert a_10width:InterpolationMasses 101 1.7464202 insert a_10width:InterpolationMasses 102 1.7598152 insert a_10width:InterpolationMasses 103 1.7732101 insert a_10width:InterpolationMasses 104 1.7866051 insert a_10width:InterpolationMasses 105 1.8 insert a_10width:InterpolationMasses 106 1.8133949 insert a_10width:InterpolationMasses 107 1.8267899 insert a_10width:InterpolationMasses 108 0.68 insert a_10width:InterpolationMasses 109 0.70285714 insert a_10width:InterpolationMasses 110 0.72571429 insert a_10width:InterpolationMasses 111 0.74857143 insert a_10width:InterpolationMasses 112 0.77142857 insert a_10width:InterpolationMasses 113 0.79428571 insert a_10width:InterpolationMasses 114 0.81714286 insert a_10width:InterpolationMasses 115 0.84 insert a_10width:InterpolationMasses 116 0.86285714 insert a_10width:InterpolationMasses 117 0.88571429 insert a_10width:InterpolationMasses 118 0.90857143 insert a_10width:InterpolationMasses 119 0.93142857 insert a_10width:InterpolationMasses 120 0.95428571 insert a_10width:InterpolationMasses 121 0.97714286 insert a_10width:InterpolationMasses 122 1 insert a_10width:InterpolationMasses 123 1.0228571 insert a_10width:InterpolationMasses 124 1.0457143 insert a_10width:InterpolationMasses 125 1.0685714 insert a_10width:InterpolationMasses 126 1.0914286 insert a_10width:InterpolationMasses 127 1.1142857 insert a_10width:InterpolationMasses 128 1.1371429 insert a_10width:InterpolationMasses 129 1.16 insert a_10width:InterpolationMasses 130 1.1828571 insert a_10width:InterpolationMasses 131 1.2057143 insert a_10width:InterpolationMasses 132 1.2285714 insert a_10width:InterpolationMasses 133 1.2514286 insert a_10width:InterpolationMasses 134 1.2742857 insert a_10width:InterpolationMasses 135 1.2971429 insert a_10width:InterpolationMasses 136 1.32 insert a_10width:InterpolationMasses 137 1.3428571 insert a_10width:InterpolationMasses 138 1.3657143 insert a_10width:InterpolationMasses 139 1.3885714 insert a_10width:InterpolationMasses 140 1.4114286 insert a_10width:InterpolationMasses 141 1.4342857 insert a_10width:InterpolationMasses 142 1.4571429 insert a_10width:InterpolationMasses 143 1.48 insert a_10width:InterpolationMasses 144 1.5028571 insert a_10width:InterpolationMasses 145 1.5257143 insert a_10width:InterpolationMasses 146 1.5485714 insert a_10width:InterpolationMasses 147 1.5714286 insert a_10width:InterpolationMasses 148 1.5942857 insert a_10width:InterpolationMasses 149 1.6171429 insert a_10width:InterpolationMasses 150 1.64 insert a_10width:InterpolationMasses 151 1.6628571 insert a_10width:InterpolationMasses 152 1.6857143 insert a_10width:InterpolationMasses 153 1.7085714 insert a_10width:InterpolationMasses 154 1.7314286 insert a_10width:InterpolationMasses 155 1.7542857 insert a_10width:InterpolationMasses 156 1.7771429 insert a_10width:InterpolationMasses 157 1.8 insert a_10width:InterpolationWidths 0 0 insert a_10width:InterpolationWidths 1 0 insert a_10width:InterpolationWidths 2 0 insert a_10width:InterpolationWidths 3 1.924486e-07 insert a_10width:InterpolationWidths 4 1.0565953e-06 insert a_10width:InterpolationWidths 5 3.2963148e-06 insert a_10width:InterpolationWidths 6 7.9598414e-06 insert a_10width:InterpolationWidths 7 1.6580994e-05 insert a_10width:InterpolationWidths 8 3.1396524e-05 insert a_10width:InterpolationWidths 9 5.5678228e-05 insert a_10width:InterpolationWidths 10 9.4252945e-05 insert a_10width:InterpolationWidths 11 0.00015434142 insert a_10width:InterpolationWidths 12 0.00024696 insert a_10width:InterpolationWidths 13 0.00038936172 insert a_10width:InterpolationWidths 14 0.0006095002 insert a_10width:InterpolationWidths 15 0.00095467412 insert a_10width:InterpolationWidths 16 0.0015094099 insert a_10width:InterpolationWidths 17 0.00243513 insert a_10width:InterpolationWidths 18 0.0040625077 insert a_10width:InterpolationWidths 19 0.00708667 insert a_10width:InterpolationWidths 20 0.012666253 insert a_10width:InterpolationWidths 21 0.021163759 insert a_10width:InterpolationWidths 22 0.030937782 insert a_10width:InterpolationWidths 23 0.040614632 insert a_10width:InterpolationWidths 24 0.049833104 insert a_10width:InterpolationWidths 25 0.058600801 insert a_10width:InterpolationWidths 26 0.066994119 insert a_10width:InterpolationWidths 27 0.075089636 insert a_10width:InterpolationWidths 28 0.082950738 insert a_10width:InterpolationWidths 29 0.090627857 insert a_10width:InterpolationWidths 30 0.098160291 insert a_10width:InterpolationWidths 31 0.10558133 insert a_10width:InterpolationWidths 32 0.11291634 insert a_10width:InterpolationWidths 33 0.12018663 insert a_10width:InterpolationWidths 34 0.12740993 insert a_10width:InterpolationWidths 35 0.13460114 insert a_10width:InterpolationWidths 36 0.14177297 insert a_10width:InterpolationWidths 37 0.14893635 insert a_10width:InterpolationWidths 38 0.15610075 insert a_10width:InterpolationWidths 39 0.16327449 insert a_10width:InterpolationWidths 40 0.1704649 insert a_10width:InterpolationWidths 41 0.17767852 insert a_10width:InterpolationWidths 42 0.18492119 insert a_10width:InterpolationWidths 43 0.19219819 insert a_10width:InterpolationWidths 44 0.1995143 insert a_10width:InterpolationWidths 45 0.20687388 insert a_10width:InterpolationWidths 46 0.21428094 insert a_10width:InterpolationWidths 47 0.22173916 insert a_10width:InterpolationWidths 48 0.22925196 insert a_10width:InterpolationWidths 49 0.23682251 insert a_10width:InterpolationWidths 50 0.24445378 insert a_10width:InterpolationWidths 51 0.25214854 insert a_10width:InterpolationWidths 52 0.2599094 insert a_10width:InterpolationWidths 53 0.26773884 insert a_10width:InterpolationWidths 54 0 insert a_10width:InterpolationWidths 55 0 insert a_10width:InterpolationWidths 56 0 insert a_10width:InterpolationWidths 57 3.0599849e-07 insert a_10width:InterpolationWidths 58 1.4463864e-06 insert a_10width:InterpolationWidths 59 4.1258246e-06 insert a_10width:InterpolationWidths 60 9.389924e-06 insert a_10width:InterpolationWidths 61 1.8750994e-05 insert a_10width:InterpolationWidths 62 3.4390295e-05 insert a_10width:InterpolationWidths 63 5.9465593e-05 insert a_10width:InterpolationWidths 64 9.8588788e-05 insert a_10width:InterpolationWidths 65 0.00015858909 insert a_10width:InterpolationWidths 66 0.00024977438 insert a_10width:InterpolationWidths 67 0.00038810064 insert a_10width:InterpolationWidths 68 0.00059908181 insert a_10width:InterpolationWidths 69 0.00092523569 insert a_10width:InterpolationWidths 70 0.0014411964 insert a_10width:InterpolationWidths 71 0.0022865879 insert a_10width:InterpolationWidths 72 0.003741734 insert a_10width:InterpolationWidths 73 0.0063958412 insert a_10width:InterpolationWidths 74 0.011328181 insert a_10width:InterpolationWidths 75 0.019294277 insert a_10width:InterpolationWidths 76 0.029003539 insert a_10width:InterpolationWidths 77 0.038823648 insert a_10width:InterpolationWidths 78 0.048209098 insert a_10width:InterpolationWidths 79 0.057121268 insert a_10width:InterpolationWidths 80 0.065631317 insert a_10width:InterpolationWidths 81 0.073819058 insert a_10width:InterpolationWidths 82 0.081752041 insert a_10width:InterpolationWidths 83 0.089484242 insert a_10width:InterpolationWidths 84 0.097057765 insert a_10width:InterpolationWidths 85 0.10450794 insert a_10width:InterpolationWidths 86 0.11186178 insert a_10width:InterpolationWidths 87 0.11914185 insert a_10width:InterpolationWidths 88 0.12636685 insert a_10width:InterpolationWidths 89 0.13355246 insert a_10width:InterpolationWidths 90 0.14071198 insert a_10width:InterpolationWidths 91 0.14785685 insert a_10width:InterpolationWidths 92 0.15499694 insert a_10width:InterpolationWidths 93 0.1621409 insert a_10width:InterpolationWidths 94 0.16929632 insert a_10width:InterpolationWidths 95 0.17646996 insert a_10width:InterpolationWidths 96 0.18366786 insert a_10width:InterpolationWidths 97 0.19089543 insert a_10width:InterpolationWidths 98 0.1981576 insert a_10width:InterpolationWidths 99 0.20545884 insert a_10width:InterpolationWidths 100 0.21280322 insert a_10width:InterpolationWidths 101 0.22019452 insert a_10width:InterpolationWidths 102 0.22763621 insert a_10width:InterpolationWidths 103 0.23513152 insert a_10width:InterpolationWidths 104 0.24268344 insert a_10width:InterpolationWidths 105 0.25118404 insert a_10width:InterpolationWidths 106 0.2579682 insert a_10width:InterpolationWidths 107 0.26570617 insert a_10width:InterpolationWidths 108 0.0080044575 insert a_10width:InterpolationWidths 109 0.010906731 insert a_10width:InterpolationWidths 110 0.014738848 insert a_10width:InterpolationWidths 111 0.019829444 insert a_10width:InterpolationWidths 112 0.026656882 insert a_10width:InterpolationWidths 113 0.03593025 insert a_10width:InterpolationWidths 114 0.048707743 insert a_10width:InterpolationWidths 115 0.066518153 insert a_10width:InterpolationWidths 116 0.091291112 insert a_10width:InterpolationWidths 117 0.12452108 insert a_10width:InterpolationWidths 118 0.16536806 insert a_10width:InterpolationWidths 119 0.20996924 insert a_10width:InterpolationWidths 120 0.25402682 insert a_10width:InterpolationWidths 121 0.29507944 insert a_10width:InterpolationWidths 122 0.33234003 insert a_10width:InterpolationWidths 123 0.3658426 insert a_10width:InterpolationWidths 124 0.39591217 insert a_10width:InterpolationWidths 125 0.42293826 insert a_10width:InterpolationWidths 126 0.44729324 insert a_10width:InterpolationWidths 127 0.4693079 insert a_10width:InterpolationWidths 128 0.48926803 insert a_10width:InterpolationWidths 129 0.50741785 insert a_10width:InterpolationWidths 130 0.52396526 insert a_10width:InterpolationWidths 131 0.53908713 insert a_10width:InterpolationWidths 132 0.55293413 insert a_10width:InterpolationWidths 133 0.56563436 insert a_10width:InterpolationWidths 134 0.57729703 insert a_10width:InterpolationWidths 135 0.58801529 insert a_10width:InterpolationWidths 136 0.59786763 insert a_10width:InterpolationWidths 137 0.6069258 insert a_10width:InterpolationWidths 138 0.61524838 insert a_10width:InterpolationWidths 139 0.62289173 insert a_10width:InterpolationWidths 140 0.62990693 insert a_10width:InterpolationWidths 141 0.63634359 insert a_10width:InterpolationWidths 142 0.64225398 insert a_10width:InterpolationWidths 143 0.64767421 insert a_10width:InterpolationWidths 144 0.65267189 insert a_10width:InterpolationWidths 145 0.65725685 insert a_10width:InterpolationWidths 146 0.6615021 insert a_10width:InterpolationWidths 147 0.66543506 insert a_10width:InterpolationWidths 148 0.66909693 insert a_10width:InterpolationWidths 149 0.67249241 insert a_10width:InterpolationWidths 150 0.67567861 insert a_10width:InterpolationWidths 151 0.67866664 insert a_10width:InterpolationWidths 152 0.68147994 insert a_10width:InterpolationWidths 153 0.68413606 insert a_10width:InterpolationWidths 154 0.68666217 insert a_10width:InterpolationWidths 155 0.6890507 insert a_10width:InterpolationWidths 156 0.69132791 insert a_10width:InterpolationWidths 157 0.69351 insert a_10width:NumberofEntries 0 54 insert a_10width:NumberofEntries 1 108 insert a_10width:NumberofEntries 2 158 insert a_10width:NumberofEntries 3 158 newdef /Herwig/Particles/a_10:Width_generator a_10width # create Herwig::GenericWidthGenerator eta_cwidth newdef eta_cwidth:Particle /Herwig/Particles/eta_c newdef eta_cwidth:Prefactor 1.09977 newdef eta_cwidth:BRNormalize 1 newdef eta_cwidth:BRMinimum 0.01 newdef eta_cwidth:Points 50 newdef eta_cwidth:InterpolationOrder 1 insert eta_cwidth:MEtype 0 2 insert eta_cwidth:MEtype 1 0 insert eta_cwidth:MEtype 2 0 insert eta_cwidth:MEtype 3 0 insert eta_cwidth:MEtype 4 0 insert eta_cwidth:MEtype 5 0 insert eta_cwidth:MEtype 6 2 insert eta_cwidth:MEtype 7 0 insert eta_cwidth:MEtype 8 0 insert eta_cwidth:MEtype 9 0 insert eta_cwidth:MEtype 10 0 insert eta_cwidth:MEtype 11 0 insert eta_cwidth:MEtype 12 0 insert eta_cwidth:MEtype 13 0 insert eta_cwidth:MEtype 14 0 insert eta_cwidth:MEtype 15 0 insert eta_cwidth:MEtype 16 0 insert eta_cwidth:MEtype 17 0 insert eta_cwidth:MEtype 18 0 insert eta_cwidth:MEtype 19 0 insert eta_cwidth:MEtype 20 0 insert eta_cwidth:MEtype 21 1 insert eta_cwidth:MEtype 22 0 insert eta_cwidth:MEtype 23 0 insert eta_cwidth:MEtype 24 0 insert eta_cwidth:MEtype 25 0 insert eta_cwidth:MEtype 26 2 insert eta_cwidth:MEtype 27 0 insert eta_cwidth:MEtype 28 2 insert eta_cwidth:MEtype 29 2 insert eta_cwidth:MEcode 0 0 insert eta_cwidth:MEcode 1 0 insert eta_cwidth:MEcode 2 0 insert eta_cwidth:MEcode 3 0 insert eta_cwidth:MEcode 4 0 insert eta_cwidth:MEcode 5 0 insert eta_cwidth:MEcode 6 0 insert eta_cwidth:MEcode 7 0 insert eta_cwidth:MEcode 8 0 insert eta_cwidth:MEcode 9 0 insert eta_cwidth:MEcode 10 0 insert eta_cwidth:MEcode 11 0 insert eta_cwidth:MEcode 12 0 insert eta_cwidth:MEcode 13 0 insert eta_cwidth:MEcode 14 0 insert eta_cwidth:MEcode 15 0 insert eta_cwidth:MEcode 16 0 insert eta_cwidth:MEcode 17 0 insert eta_cwidth:MEcode 18 0 insert eta_cwidth:MEcode 19 0 insert eta_cwidth:MEcode 20 0 insert eta_cwidth:MEcode 21 3 insert eta_cwidth:MEcode 22 0 insert eta_cwidth:MEcode 23 0 insert eta_cwidth:MEcode 24 0 insert eta_cwidth:MEcode 25 0 insert eta_cwidth:MEcode 26 0 insert eta_cwidth:MEcode 27 0 insert eta_cwidth:MEcode 28 0 insert eta_cwidth:MEcode 29 0 insert eta_cwidth:MEcoupling 0 0.988913 insert eta_cwidth:MEcoupling 1 0.00423 insert eta_cwidth:MEcoupling 2 0.00847 insert eta_cwidth:MEcoupling 3 0.00423 insert eta_cwidth:MEcoupling 4 0.00847 insert eta_cwidth:MEcoupling 5 0.015 insert eta_cwidth:MEcoupling 6 0.998592 insert eta_cwidth:MEcoupling 7 0.00423 insert eta_cwidth:MEcoupling 8 0.00423 insert eta_cwidth:MEcoupling 9 0.00847 insert eta_cwidth:MEcoupling 10 0.011667 insert eta_cwidth:MEcoupling 11 0.023333 insert eta_cwidth:MEcoupling 12 0.00847 insert eta_cwidth:MEcoupling 13 0.023333 insert eta_cwidth:MEcoupling 14 0.011667 insert eta_cwidth:MEcoupling 15 0.027333 insert eta_cwidth:MEcoupling 16 0.013667 insert eta_cwidth:MEcoupling 17 0.032667 insert eta_cwidth:MEcoupling 18 0.016333 insert eta_cwidth:MEcoupling 19 0.01 insert eta_cwidth:MEcoupling 20 0.720947 insert eta_cwidth:MEcoupling 21 0.0155189 insert eta_cwidth:MEcoupling 22 0.0013 insert eta_cwidth:MEcoupling 23 0.0013 insert eta_cwidth:MEcoupling 24 0.00157 insert eta_cwidth:MEcoupling 25 0.00157 insert eta_cwidth:MEcoupling 26 0.990045 insert eta_cwidth:MEcoupling 27 0.005333 insert eta_cwidth:MEcoupling 28 1.00402 insert eta_cwidth:MEcoupling 29 1.00592 insert eta_cwidth:ModeOn 0 0 insert eta_cwidth:ModeOn 1 0 insert eta_cwidth:ModeOn 2 0 insert eta_cwidth:ModeOn 3 0 insert eta_cwidth:ModeOn 4 0 insert eta_cwidth:ModeOn 5 1 insert eta_cwidth:ModeOn 6 0 insert eta_cwidth:ModeOn 7 0 insert eta_cwidth:ModeOn 8 0 insert eta_cwidth:ModeOn 9 0 insert eta_cwidth:ModeOn 10 1 insert eta_cwidth:ModeOn 11 1 insert eta_cwidth:ModeOn 12 0 insert eta_cwidth:ModeOn 13 1 insert eta_cwidth:ModeOn 14 1 insert eta_cwidth:ModeOn 15 1 insert eta_cwidth:ModeOn 16 1 insert eta_cwidth:ModeOn 17 1 insert eta_cwidth:ModeOn 18 1 insert eta_cwidth:ModeOn 19 0 insert eta_cwidth:ModeOn 20 1 insert eta_cwidth:ModeOn 21 0 insert eta_cwidth:ModeOn 22 0 insert eta_cwidth:ModeOn 23 0 insert eta_cwidth:ModeOn 24 0 insert eta_cwidth:ModeOn 25 0 insert eta_cwidth:ModeOn 26 0 insert eta_cwidth:ModeOn 27 0 insert eta_cwidth:ModeOn 28 1 insert eta_cwidth:ModeOn 29 0 insert eta_cwidth:MinimumMasses 0 1.28332 insert eta_cwidth:MinimumMasses 1 1.27031 insert eta_cwidth:MinimumMasses 2 1.27888 insert eta_cwidth:MinimumMasses 3 1.27031 insert eta_cwidth:MinimumMasses 4 1.27888 insert eta_cwidth:MinimumMasses 5 1.57114 insert eta_cwidth:MinimumMasses 6 1.292 insert eta_cwidth:MinimumMasses 7 1.27863 insert eta_cwidth:MinimumMasses 8 1.27863 insert eta_cwidth:MinimumMasses 9 1.27925 insert eta_cwidth:MinimumMasses 10 1.12233 insert eta_cwidth:MinimumMasses 11 1.1309 insert eta_cwidth:MinimumMasses 12 1.27925 insert eta_cwidth:MinimumMasses 13 1.1309 insert eta_cwidth:MinimumMasses 14 1.13027 insert eta_cwidth:MinimumMasses 15 1.23489 insert eta_cwidth:MinimumMasses 16 1.22571 insert eta_cwidth:MinimumMasses 17 0.826637 insert eta_cwidth:MinimumMasses 18 0.817452 insert eta_cwidth:MinimumMasses 19 2.1804 insert eta_cwidth:MinimumMasses 20 0 insert eta_cwidth:MinimumMasses 21 0 insert eta_cwidth:MinimumMasses 22 1.87914 insert eta_cwidth:MinimumMasses 23 1.87654 insert eta_cwidth:MinimumMasses 24 1.97681 insert eta_cwidth:MinimumMasses 25 1.98476 insert eta_cwidth:MinimumMasses 26 1.97892 insert eta_cwidth:MinimumMasses 27 0.558281 insert eta_cwidth:MinimumMasses 28 0.751 insert eta_cwidth:MinimumMasses 29 0.751 insert eta_cwidth:MEmass1 0 0.89166 insert eta_cwidth:MEmass1 1 0 insert eta_cwidth:MEmass1 2 0 insert eta_cwidth:MEmass1 3 0 insert eta_cwidth:MEmass1 4 0 insert eta_cwidth:MEmass1 5 0 insert eta_cwidth:MEmass1 6 0.896 insert eta_cwidth:MEmass1 7 0 insert eta_cwidth:MEmass1 8 0 insert eta_cwidth:MEmass1 9 0 insert eta_cwidth:MEmass1 10 0 insert eta_cwidth:MEmass1 11 0 insert eta_cwidth:MEmass1 12 0 insert eta_cwidth:MEmass1 13 0 insert eta_cwidth:MEmass1 14 0 insert eta_cwidth:MEmass1 15 0 insert eta_cwidth:MEmass1 16 0 insert eta_cwidth:MEmass1 17 0 insert eta_cwidth:MEmass1 18 0 insert eta_cwidth:MEmass1 19 0 insert eta_cwidth:MEmass1 20 0 insert eta_cwidth:MEmass1 21 0 insert eta_cwidth:MEmass1 22 0 insert eta_cwidth:MEmass1 23 0 insert eta_cwidth:MEmass1 24 0 insert eta_cwidth:MEmass1 25 0 insert eta_cwidth:MEmass1 26 1.01946 insert eta_cwidth:MEmass1 27 0 insert eta_cwidth:MEmass1 28 0.7755 insert eta_cwidth:MEmass1 29 0.7755 insert eta_cwidth:MEmass2 0 0.89166 insert eta_cwidth:MEmass2 1 0 insert eta_cwidth:MEmass2 2 0 insert eta_cwidth:MEmass2 3 0 insert eta_cwidth:MEmass2 4 0 insert eta_cwidth:MEmass2 5 0 insert eta_cwidth:MEmass2 6 0.896 insert eta_cwidth:MEmass2 7 0 insert eta_cwidth:MEmass2 8 0 insert eta_cwidth:MEmass2 9 0 insert eta_cwidth:MEmass2 10 0 insert eta_cwidth:MEmass2 11 0 insert eta_cwidth:MEmass2 12 0 insert eta_cwidth:MEmass2 13 0 insert eta_cwidth:MEmass2 14 0 insert eta_cwidth:MEmass2 15 0 insert eta_cwidth:MEmass2 16 0 insert eta_cwidth:MEmass2 17 0 insert eta_cwidth:MEmass2 18 0 insert eta_cwidth:MEmass2 19 0 insert eta_cwidth:MEmass2 20 0 insert eta_cwidth:MEmass2 21 0 insert eta_cwidth:MEmass2 22 0 insert eta_cwidth:MEmass2 23 0 insert eta_cwidth:MEmass2 24 0 insert eta_cwidth:MEmass2 25 0 insert eta_cwidth:MEmass2 26 1.01946 insert eta_cwidth:MEmass2 27 0 insert eta_cwidth:MEmass2 28 0.7755 insert eta_cwidth:MEmass2 29 0.7755 insert eta_cwidth:DecayModes 0 eta_c->K*+,K*-; insert eta_cwidth:DecayModes 1 eta_c->K*+,K-,pi0; insert eta_cwidth:DecayModes 2 eta_c->K*+,Kbar0,pi-; insert eta_cwidth:DecayModes 3 eta_c->K*-,K+,pi0; insert eta_cwidth:DecayModes 4 eta_c->K*-,K0,pi+; insert eta_cwidth:DecayModes 5 eta_c->K*0,K*bar0,pi+,pi-; insert eta_cwidth:DecayModes 6 eta_c->K*0,K*bar0; insert eta_cwidth:DecayModes 7 eta_c->K*0,Kbar0,pi0; insert eta_cwidth:DecayModes 8 eta_c->K*bar0,K0,pi0; insert eta_cwidth:DecayModes 9 eta_c->K+,K*bar0,pi-; insert eta_cwidth:DecayModes 10 eta_c->K+,K-,pi0; insert eta_cwidth:DecayModes 11 eta_c->K+,Kbar0,pi-; insert eta_cwidth:DecayModes 12 eta_c->K-,K*0,pi+; insert eta_cwidth:DecayModes 13 eta_c->K-,K0,pi+; insert eta_cwidth:DecayModes 14 eta_c->K0,Kbar0,pi0; insert eta_cwidth:DecayModes 15 eta_c->eta',pi+,pi-; insert eta_cwidth:DecayModes 16 eta_c->eta',pi0,pi0; insert eta_cwidth:DecayModes 17 eta_c->eta,pi+,pi-; insert eta_cwidth:DecayModes 18 eta_c->eta,pi0,pi0; insert eta_cwidth:DecayModes 19 eta_c->f_2,f_2; insert eta_cwidth:DecayModes 20 eta_c->g,g; insert eta_cwidth:DecayModes 21 eta_c->gamma,gamma; insert eta_cwidth:DecayModes 22 eta_c->n0,nbar0; insert eta_cwidth:DecayModes 23 eta_c->p+,pbar-; insert eta_cwidth:DecayModes 24 eta_c->phi,K+,K-; insert eta_cwidth:DecayModes 25 eta_c->phi,K0,Kbar0; insert eta_cwidth:DecayModes 26 eta_c->phi,phi; insert eta_cwidth:DecayModes 27 eta_c->pi+,pi+,pi-,pi-; insert eta_cwidth:DecayModes 28 eta_c->rho+,rho-; insert eta_cwidth:DecayModes 29 eta_c->rho0,rho0; insert eta_cwidth:InterpolationMasses 0 2.7045837 insert eta_cwidth:InterpolationMasses 1 2.7149918 insert eta_cwidth:InterpolationMasses 2 2.7254 insert eta_cwidth:InterpolationMasses 3 2.7358082 insert eta_cwidth:InterpolationMasses 4 2.7462163 insert eta_cwidth:InterpolationMasses 5 2.7566245 insert eta_cwidth:InterpolationMasses 6 2.7670327 insert eta_cwidth:InterpolationMasses 7 2.7774408 insert eta_cwidth:InterpolationMasses 8 2.787849 insert eta_cwidth:InterpolationMasses 9 2.7982571 insert eta_cwidth:InterpolationMasses 10 2.8086653 insert eta_cwidth:InterpolationMasses 11 2.8190735 insert eta_cwidth:InterpolationMasses 12 2.8294816 insert eta_cwidth:InterpolationMasses 13 2.8398898 insert eta_cwidth:InterpolationMasses 14 2.850298 insert eta_cwidth:InterpolationMasses 15 2.8607061 insert eta_cwidth:InterpolationMasses 16 2.8711143 insert eta_cwidth:InterpolationMasses 17 2.8815224 insert eta_cwidth:InterpolationMasses 18 2.8919306 insert eta_cwidth:InterpolationMasses 19 2.9023388 insert eta_cwidth:InterpolationMasses 20 2.9127469 insert eta_cwidth:InterpolationMasses 21 2.9231551 insert eta_cwidth:InterpolationMasses 22 2.9335633 insert eta_cwidth:InterpolationMasses 23 2.9439714 insert eta_cwidth:InterpolationMasses 24 2.9543796 insert eta_cwidth:InterpolationMasses 25 2.9647878 insert eta_cwidth:InterpolationMasses 26 2.9751959 insert eta_cwidth:InterpolationMasses 27 2.9856041 insert eta_cwidth:InterpolationMasses 28 2.9960122 insert eta_cwidth:InterpolationMasses 29 3.0064204 insert eta_cwidth:InterpolationMasses 30 3.0168286 insert eta_cwidth:InterpolationMasses 31 3.0272367 insert eta_cwidth:InterpolationMasses 32 3.0376449 insert eta_cwidth:InterpolationMasses 33 3.0480531 insert eta_cwidth:InterpolationMasses 34 3.0584612 insert eta_cwidth:InterpolationMasses 35 3.0688694 insert eta_cwidth:InterpolationMasses 36 3.0792776 insert eta_cwidth:InterpolationMasses 37 3.0896857 insert eta_cwidth:InterpolationMasses 38 3.1000939 insert eta_cwidth:InterpolationMasses 39 3.110502 insert eta_cwidth:InterpolationMasses 40 3.1209102 insert eta_cwidth:InterpolationMasses 41 3.1313184 insert eta_cwidth:InterpolationMasses 42 3.1417265 insert eta_cwidth:InterpolationMasses 43 3.1521347 insert eta_cwidth:InterpolationMasses 44 3.1625429 insert eta_cwidth:InterpolationMasses 45 3.172951 insert eta_cwidth:InterpolationMasses 46 3.1833592 insert eta_cwidth:InterpolationMasses 47 3.1937673 insert eta_cwidth:InterpolationMasses 48 3.2041755 insert eta_cwidth:InterpolationMasses 49 3.2145837 insert eta_cwidth:InterpolationMasses 50 3.2249918 insert eta_cwidth:InterpolationMasses 51 3.2354 insert eta_cwidth:InterpolationMasses 52 3.2458082 insert eta_cwidth:InterpolationMasses 53 3.2562163 insert eta_cwidth:InterpolationMasses 54 2.7045837 insert eta_cwidth:InterpolationMasses 55 2.7149918 insert eta_cwidth:InterpolationMasses 56 2.7254 insert eta_cwidth:InterpolationMasses 57 2.7358082 insert eta_cwidth:InterpolationMasses 58 2.7462163 insert eta_cwidth:InterpolationMasses 59 2.7566245 insert eta_cwidth:InterpolationMasses 60 2.7670327 insert eta_cwidth:InterpolationMasses 61 2.7774408 insert eta_cwidth:InterpolationMasses 62 2.787849 insert eta_cwidth:InterpolationMasses 63 2.7982571 insert eta_cwidth:InterpolationMasses 64 2.8086653 insert eta_cwidth:InterpolationMasses 65 2.8190735 insert eta_cwidth:InterpolationMasses 66 2.8294816 insert eta_cwidth:InterpolationMasses 67 2.8398898 insert eta_cwidth:InterpolationMasses 68 2.850298 insert eta_cwidth:InterpolationMasses 69 2.8607061 insert eta_cwidth:InterpolationMasses 70 2.8711143 insert eta_cwidth:InterpolationMasses 71 2.8815224 insert eta_cwidth:InterpolationMasses 72 2.8919306 insert eta_cwidth:InterpolationMasses 73 2.9023388 insert eta_cwidth:InterpolationMasses 74 2.9127469 insert eta_cwidth:InterpolationMasses 75 2.9231551 insert eta_cwidth:InterpolationMasses 76 2.9335633 insert eta_cwidth:InterpolationMasses 77 2.9439714 insert eta_cwidth:InterpolationMasses 78 2.9543796 insert eta_cwidth:InterpolationMasses 79 2.9647878 insert eta_cwidth:InterpolationMasses 80 2.9751959 insert eta_cwidth:InterpolationMasses 81 2.9856041 insert eta_cwidth:InterpolationMasses 82 2.9960122 insert eta_cwidth:InterpolationMasses 83 3.0064204 insert eta_cwidth:InterpolationMasses 84 3.0168286 insert eta_cwidth:InterpolationMasses 85 3.0272367 insert eta_cwidth:InterpolationMasses 86 3.0376449 insert eta_cwidth:InterpolationMasses 87 3.0480531 insert eta_cwidth:InterpolationMasses 88 3.0584612 insert eta_cwidth:InterpolationMasses 89 3.0688694 insert eta_cwidth:InterpolationMasses 90 3.0792776 insert eta_cwidth:InterpolationMasses 91 3.0896857 insert eta_cwidth:InterpolationMasses 92 3.1000939 insert eta_cwidth:InterpolationMasses 93 3.110502 insert eta_cwidth:InterpolationMasses 94 3.1209102 insert eta_cwidth:InterpolationMasses 95 3.1313184 insert eta_cwidth:InterpolationMasses 96 3.1417265 insert eta_cwidth:InterpolationMasses 97 3.1521347 insert eta_cwidth:InterpolationMasses 98 3.1625429 insert eta_cwidth:InterpolationMasses 99 3.172951 insert eta_cwidth:InterpolationMasses 100 3.1833592 insert eta_cwidth:InterpolationMasses 101 3.1937673 insert eta_cwidth:InterpolationMasses 102 3.2041755 insert eta_cwidth:InterpolationMasses 103 3.2145837 insert eta_cwidth:InterpolationMasses 104 3.2249918 insert eta_cwidth:InterpolationMasses 105 3.2354 insert eta_cwidth:InterpolationMasses 106 3.2458082 insert eta_cwidth:InterpolationMasses 107 3.2562163 insert eta_cwidth:InterpolationMasses 108 2.7045837 insert eta_cwidth:InterpolationMasses 109 2.7149918 insert eta_cwidth:InterpolationMasses 110 2.7254 insert eta_cwidth:InterpolationMasses 111 2.7358082 insert eta_cwidth:InterpolationMasses 112 2.7462163 insert eta_cwidth:InterpolationMasses 113 2.7566245 insert eta_cwidth:InterpolationMasses 114 2.7670327 insert eta_cwidth:InterpolationMasses 115 2.7774408 insert eta_cwidth:InterpolationMasses 116 2.787849 insert eta_cwidth:InterpolationMasses 117 2.7982571 insert eta_cwidth:InterpolationMasses 118 2.8086653 insert eta_cwidth:InterpolationMasses 119 2.8190735 insert eta_cwidth:InterpolationMasses 120 2.8294816 insert eta_cwidth:InterpolationMasses 121 2.8398898 insert eta_cwidth:InterpolationMasses 122 2.850298 insert eta_cwidth:InterpolationMasses 123 2.8607061 insert eta_cwidth:InterpolationMasses 124 2.8711143 insert eta_cwidth:InterpolationMasses 125 2.8815224 insert eta_cwidth:InterpolationMasses 126 2.8919306 insert eta_cwidth:InterpolationMasses 127 2.9023388 insert eta_cwidth:InterpolationMasses 128 2.9127469 insert eta_cwidth:InterpolationMasses 129 2.9231551 insert eta_cwidth:InterpolationMasses 130 2.9335633 insert eta_cwidth:InterpolationMasses 131 2.9439714 insert eta_cwidth:InterpolationMasses 132 2.9543796 insert eta_cwidth:InterpolationMasses 133 2.9647878 insert eta_cwidth:InterpolationMasses 134 2.9751959 insert eta_cwidth:InterpolationMasses 135 2.9856041 insert eta_cwidth:InterpolationMasses 136 2.9960122 insert eta_cwidth:InterpolationMasses 137 3.0064204 insert eta_cwidth:InterpolationMasses 138 3.0168286 insert eta_cwidth:InterpolationMasses 139 3.0272367 insert eta_cwidth:InterpolationMasses 140 3.0376449 insert eta_cwidth:InterpolationMasses 141 3.0480531 insert eta_cwidth:InterpolationMasses 142 3.0584612 insert eta_cwidth:InterpolationMasses 143 3.0688694 insert eta_cwidth:InterpolationMasses 144 3.0792776 insert eta_cwidth:InterpolationMasses 145 3.0896857 insert eta_cwidth:InterpolationMasses 146 3.1000939 insert eta_cwidth:InterpolationMasses 147 3.110502 insert eta_cwidth:InterpolationMasses 148 3.1209102 insert eta_cwidth:InterpolationMasses 149 3.1313184 insert eta_cwidth:InterpolationMasses 150 3.1417265 insert eta_cwidth:InterpolationMasses 151 3.1521347 insert eta_cwidth:InterpolationMasses 152 3.1625429 insert eta_cwidth:InterpolationMasses 153 3.172951 insert eta_cwidth:InterpolationMasses 154 3.1833592 insert eta_cwidth:InterpolationMasses 155 3.1937673 insert eta_cwidth:InterpolationMasses 156 3.2041755 insert eta_cwidth:InterpolationMasses 157 3.2145837 insert eta_cwidth:InterpolationMasses 158 3.2249918 insert eta_cwidth:InterpolationMasses 159 3.2354 insert eta_cwidth:InterpolationMasses 160 3.2458082 insert eta_cwidth:InterpolationMasses 161 3.2562163 insert eta_cwidth:InterpolationMasses 162 2.7045837 insert eta_cwidth:InterpolationMasses 163 2.7149918 insert eta_cwidth:InterpolationMasses 164 2.7254 insert eta_cwidth:InterpolationMasses 165 2.7358082 insert eta_cwidth:InterpolationMasses 166 2.7462163 insert eta_cwidth:InterpolationMasses 167 2.7566245 insert eta_cwidth:InterpolationMasses 168 2.7670327 insert eta_cwidth:InterpolationMasses 169 2.7774408 insert eta_cwidth:InterpolationMasses 170 2.787849 insert eta_cwidth:InterpolationMasses 171 2.7982571 insert eta_cwidth:InterpolationMasses 172 2.8086653 insert eta_cwidth:InterpolationMasses 173 2.8190735 insert eta_cwidth:InterpolationMasses 174 2.8294816 insert eta_cwidth:InterpolationMasses 175 2.8398898 insert eta_cwidth:InterpolationMasses 176 2.850298 insert eta_cwidth:InterpolationMasses 177 2.8607061 insert eta_cwidth:InterpolationMasses 178 2.8711143 insert eta_cwidth:InterpolationMasses 179 2.8815224 insert eta_cwidth:InterpolationMasses 180 2.8919306 insert eta_cwidth:InterpolationMasses 181 2.9023388 insert eta_cwidth:InterpolationMasses 182 2.9127469 insert eta_cwidth:InterpolationMasses 183 2.9231551 insert eta_cwidth:InterpolationMasses 184 2.9335633 insert eta_cwidth:InterpolationMasses 185 2.9439714 insert eta_cwidth:InterpolationMasses 186 2.9543796 insert eta_cwidth:InterpolationMasses 187 2.9647878 insert eta_cwidth:InterpolationMasses 188 2.9751959 insert eta_cwidth:InterpolationMasses 189 2.9856041 insert eta_cwidth:InterpolationMasses 190 2.9960122 insert eta_cwidth:InterpolationMasses 191 3.0064204 insert eta_cwidth:InterpolationMasses 192 3.0168286 insert eta_cwidth:InterpolationMasses 193 3.0272367 insert eta_cwidth:InterpolationMasses 194 3.0376449 insert eta_cwidth:InterpolationMasses 195 3.0480531 insert eta_cwidth:InterpolationMasses 196 3.0584612 insert eta_cwidth:InterpolationMasses 197 3.0688694 insert eta_cwidth:InterpolationMasses 198 3.0792776 insert eta_cwidth:InterpolationMasses 199 3.0896857 insert eta_cwidth:InterpolationMasses 200 3.1000939 insert eta_cwidth:InterpolationMasses 201 3.110502 insert eta_cwidth:InterpolationMasses 202 3.1209102 insert eta_cwidth:InterpolationMasses 203 3.1313184 insert eta_cwidth:InterpolationMasses 204 3.1417265 insert eta_cwidth:InterpolationMasses 205 3.1521347 insert eta_cwidth:InterpolationMasses 206 3.1625429 insert eta_cwidth:InterpolationMasses 207 3.172951 insert eta_cwidth:InterpolationMasses 208 3.1833592 insert eta_cwidth:InterpolationMasses 209 3.1937673 insert eta_cwidth:InterpolationMasses 210 3.2041755 insert eta_cwidth:InterpolationMasses 211 3.2145837 insert eta_cwidth:InterpolationMasses 212 3.2249918 insert eta_cwidth:InterpolationMasses 213 3.2354 insert eta_cwidth:InterpolationMasses 214 3.2458082 insert eta_cwidth:InterpolationMasses 215 3.2562163 insert eta_cwidth:InterpolationMasses 216 2.7045837 insert eta_cwidth:InterpolationMasses 217 2.7149918 insert eta_cwidth:InterpolationMasses 218 2.7254 insert eta_cwidth:InterpolationMasses 219 2.7358082 insert eta_cwidth:InterpolationMasses 220 2.7462163 insert eta_cwidth:InterpolationMasses 221 2.7566245 insert eta_cwidth:InterpolationMasses 222 2.7670327 insert eta_cwidth:InterpolationMasses 223 2.7774408 insert eta_cwidth:InterpolationMasses 224 2.787849 insert eta_cwidth:InterpolationMasses 225 2.7982571 insert eta_cwidth:InterpolationMasses 226 2.8086653 insert eta_cwidth:InterpolationMasses 227 2.8190735 insert eta_cwidth:InterpolationMasses 228 2.8294816 insert eta_cwidth:InterpolationMasses 229 2.8398898 insert eta_cwidth:InterpolationMasses 230 2.850298 insert eta_cwidth:InterpolationMasses 231 2.8607061 insert eta_cwidth:InterpolationMasses 232 2.8711143 insert eta_cwidth:InterpolationMasses 233 2.8815224 insert eta_cwidth:InterpolationMasses 234 2.8919306 insert eta_cwidth:InterpolationMasses 235 2.9023388 insert eta_cwidth:InterpolationMasses 236 2.9127469 insert eta_cwidth:InterpolationMasses 237 2.9231551 insert eta_cwidth:InterpolationMasses 238 2.9335633 insert eta_cwidth:InterpolationMasses 239 2.9439714 insert eta_cwidth:InterpolationMasses 240 2.9543796 insert eta_cwidth:InterpolationMasses 241 2.9647878 insert eta_cwidth:InterpolationMasses 242 2.9751959 insert eta_cwidth:InterpolationMasses 243 2.9856041 insert eta_cwidth:InterpolationMasses 244 2.9960122 insert eta_cwidth:InterpolationMasses 245 3.0064204 insert eta_cwidth:InterpolationMasses 246 3.0168286 insert eta_cwidth:InterpolationMasses 247 3.0272367 insert eta_cwidth:InterpolationMasses 248 3.0376449 insert eta_cwidth:InterpolationMasses 249 3.0480531 insert eta_cwidth:InterpolationMasses 250 3.0584612 insert eta_cwidth:InterpolationMasses 251 3.0688694 insert eta_cwidth:InterpolationMasses 252 3.0792776 insert eta_cwidth:InterpolationMasses 253 3.0896857 insert eta_cwidth:InterpolationMasses 254 3.1000939 insert eta_cwidth:InterpolationMasses 255 3.110502 insert eta_cwidth:InterpolationMasses 256 3.1209102 insert eta_cwidth:InterpolationMasses 257 3.1313184 insert eta_cwidth:InterpolationMasses 258 3.1417265 insert eta_cwidth:InterpolationMasses 259 3.1521347 insert eta_cwidth:InterpolationMasses 260 3.1625429 insert eta_cwidth:InterpolationMasses 261 3.172951 insert eta_cwidth:InterpolationMasses 262 3.1833592 insert eta_cwidth:InterpolationMasses 263 3.1937673 insert eta_cwidth:InterpolationMasses 264 3.2041755 insert eta_cwidth:InterpolationMasses 265 3.2145837 insert eta_cwidth:InterpolationMasses 266 3.2249918 insert eta_cwidth:InterpolationMasses 267 3.2354 insert eta_cwidth:InterpolationMasses 268 3.2458082 insert eta_cwidth:InterpolationMasses 269 3.2562163 insert eta_cwidth:InterpolationWidths 0 7.1156107e-05 insert eta_cwidth:InterpolationWidths 1 7.2718274e-05 insert eta_cwidth:InterpolationWidths 2 7.4295021e-05 insert eta_cwidth:InterpolationWidths 3 7.5891049e-05 insert eta_cwidth:InterpolationWidths 4 7.7550004e-05 insert eta_cwidth:InterpolationWidths 5 7.9135329e-05 insert eta_cwidth:InterpolationWidths 6 8.0784895e-05 insert eta_cwidth:InterpolationWidths 7 8.2452366e-05 insert eta_cwidth:InterpolationWidths 8 8.4136573e-05 insert eta_cwidth:InterpolationWidths 9 8.5839995e-05 insert eta_cwidth:InterpolationWidths 10 8.7562678e-05 insert eta_cwidth:InterpolationWidths 11 8.9301014e-05 insert eta_cwidth:InterpolationWidths 12 9.1059936e-05 insert eta_cwidth:InterpolationWidths 13 9.2834592e-05 insert eta_cwidth:InterpolationWidths 14 9.4628715e-05 insert eta_cwidth:InterpolationWidths 15 9.6442367e-05 insert eta_cwidth:InterpolationWidths 16 9.8271877e-05 insert eta_cwidth:InterpolationWidths 17 0.00010012102 insert eta_cwidth:InterpolationWidths 18 0.0001019886 insert eta_cwidth:InterpolationWidths 19 0.00010387594 insert eta_cwidth:InterpolationWidths 20 0.0001057793 insert eta_cwidth:InterpolationWidths 21 0.00010770253 insert eta_cwidth:InterpolationWidths 22 0.0001096444 insert eta_cwidth:InterpolationWidths 23 0.00011160498 insert eta_cwidth:InterpolationWidths 24 0.00011358431 insert eta_cwidth:InterpolationWidths 25 0.00011558246 insert eta_cwidth:InterpolationWidths 26 0.00011759947 insert eta_cwidth:InterpolationWidths 27 0.0001196354 insert eta_cwidth:InterpolationWidths 28 0.0001216903 insert eta_cwidth:InterpolationWidths 29 0.00012376423 insert eta_cwidth:InterpolationWidths 30 0.00012585724 insert eta_cwidth:InterpolationWidths 31 0.00012797059 insert eta_cwidth:InterpolationWidths 32 0.00013010073 insert eta_cwidth:InterpolationWidths 33 0.00013225132 insert eta_cwidth:InterpolationWidths 34 0.00013442122 insert eta_cwidth:InterpolationWidths 35 0.00013661047 insert eta_cwidth:InterpolationWidths 36 0.00013881913 insert eta_cwidth:InterpolationWidths 37 0.00014104727 insert eta_cwidth:InterpolationWidths 38 0.00014329494 insert eta_cwidth:InterpolationWidths 39 0.00014556219 insert eta_cwidth:InterpolationWidths 40 0.00014784908 insert eta_cwidth:InterpolationWidths 41 0.00015015567 insert eta_cwidth:InterpolationWidths 42 0.00015248202 insert eta_cwidth:InterpolationWidths 43 0.00015482817 insert eta_cwidth:InterpolationWidths 44 0.00015719421 insert eta_cwidth:InterpolationWidths 45 0.00015958019 insert eta_cwidth:InterpolationWidths 46 0.00016198618 insert eta_cwidth:InterpolationWidths 47 0.00016441222 insert eta_cwidth:InterpolationWidths 48 0.00016685834 insert eta_cwidth:InterpolationWidths 49 0.00016932462 insert eta_cwidth:InterpolationWidths 50 0.0001718116 insert eta_cwidth:InterpolationWidths 51 0.0001743183 insert eta_cwidth:InterpolationWidths 52 0.00017684536 insert eta_cwidth:InterpolationWidths 53 0.00017939278 insert eta_cwidth:InterpolationWidths 54 7.0288894e-05 insert eta_cwidth:InterpolationWidths 55 7.1840111e-05 insert eta_cwidth:InterpolationWidths 56 7.3410122e-05 insert eta_cwidth:InterpolationWidths 57 7.4994597e-05 insert eta_cwidth:InterpolationWidths 58 7.6598217e-05 insert eta_cwidth:InterpolationWidths 59 7.8267763e-05 insert eta_cwidth:InterpolationWidths 60 7.9902314e-05 insert eta_cwidth:InterpolationWidths 61 8.1513785e-05 insert eta_cwidth:InterpolationWidths 62 8.3188871e-05 insert eta_cwidth:InterpolationWidths 63 8.4881896e-05 insert eta_cwidth:InterpolationWidths 64 8.6592906e-05 insert eta_cwidth:InterpolationWidths 65 8.8321949e-05 insert eta_cwidth:InterpolationWidths 66 9.0069074e-05 insert eta_cwidth:InterpolationWidths 67 9.1834329e-05 insert eta_cwidth:InterpolationWidths 68 9.3617765e-05 insert eta_cwidth:InterpolationWidths 69 9.541943e-05 insert eta_cwidth:InterpolationWidths 70 9.7239376e-05 insert eta_cwidth:InterpolationWidths 71 9.9077652e-05 insert eta_cwidth:InterpolationWidths 72 0.00010093431 insert eta_cwidth:InterpolationWidths 73 0.0001028094 insert eta_cwidth:InterpolationWidths 74 0.00010470298 insert eta_cwidth:InterpolationWidths 75 0.0001066151 insert eta_cwidth:InterpolationWidths 76 0.0001085458 insert eta_cwidth:InterpolationWidths 77 0.00011049515 insert eta_cwidth:InterpolationWidths 78 0.00011246319 insert eta_cwidth:InterpolationWidths 79 0.00011444998 insert eta_cwidth:InterpolationWidths 80 0.00011645557 insert eta_cwidth:InterpolationWidths 81 0.00011848002 insert eta_cwidth:InterpolationWidths 82 0.00012052337 insert eta_cwidth:InterpolationWidths 83 0.00012258569 insert eta_cwidth:InterpolationWidths 84 0.00012466703 insert eta_cwidth:InterpolationWidths 85 0.00012676744 insert eta_cwidth:InterpolationWidths 86 0.0001288881 insert eta_cwidth:InterpolationWidths 87 0.0001310257 insert eta_cwidth:InterpolationWidths 88 0.00013318366 insert eta_cwidth:InterpolationWidths 89 0.00013536091 insert eta_cwidth:InterpolationWidths 90 0.00013755751 insert eta_cwidth:InterpolationWidths 91 0.00013977351 insert eta_cwidth:InterpolationWidths 92 0.00014200898 insert eta_cwidth:InterpolationWidths 93 0.00014426396 insert eta_cwidth:InterpolationWidths 94 0.00014653852 insert eta_cwidth:InterpolationWidths 95 0.0001488327 insert eta_cwidth:InterpolationWidths 96 0.00015114658 insert eta_cwidth:InterpolationWidths 97 0.00015348019 insert eta_cwidth:InterpolationWidths 98 0.00015583362 insert eta_cwidth:InterpolationWidths 99 0.00015820691 insert eta_cwidth:InterpolationWidths 100 0.00016060014 insert eta_cwidth:InterpolationWidths 101 0.00016301336 insert eta_cwidth:InterpolationWidths 102 0.00016544661 insert eta_cwidth:InterpolationWidths 103 0.00016789994 insert eta_cwidth:InterpolationWidths 104 0.00017037338 insert eta_cwidth:InterpolationWidths 105 0.00017286755 insert eta_cwidth:InterpolationWidths 106 0.00017538144 insert eta_cwidth:InterpolationWidths 107 0.00017791562 insert eta_cwidth:InterpolationWidths 108 3.7877913e-05 insert eta_cwidth:InterpolationWidths 109 3.8903144e-05 insert eta_cwidth:InterpolationWidths 110 3.9941454e-05 insert eta_cwidth:InterpolationWidths 111 4.0992868e-05 insert eta_cwidth:InterpolationWidths 112 4.205741e-05 insert eta_cwidth:InterpolationWidths 113 4.3135106e-05 insert eta_cwidth:InterpolationWidths 114 4.4225984e-05 insert eta_cwidth:InterpolationWidths 115 4.5330069e-05 insert eta_cwidth:InterpolationWidths 116 4.644739e-05 insert eta_cwidth:InterpolationWidths 117 4.7577975e-05 insert eta_cwidth:InterpolationWidths 118 4.8721852e-05 insert eta_cwidth:InterpolationWidths 119 4.987905e-05 insert eta_cwidth:InterpolationWidths 120 5.10496e-05 insert eta_cwidth:InterpolationWidths 121 5.2233531e-05 insert eta_cwidth:InterpolationWidths 122 5.3430873e-05 insert eta_cwidth:InterpolationWidths 123 5.4641658e-05 insert eta_cwidth:InterpolationWidths 124 5.5865917e-05 insert eta_cwidth:InterpolationWidths 125 5.7103682e-05 insert eta_cwidth:InterpolationWidths 126 5.8354985e-05 insert eta_cwidth:InterpolationWidths 127 5.9619857e-05 insert eta_cwidth:InterpolationWidths 128 6.0898333e-05 insert eta_cwidth:InterpolationWidths 129 6.2190445e-05 insert eta_cwidth:InterpolationWidths 130 6.3496226e-05 insert eta_cwidth:InterpolationWidths 131 6.4815711e-05 insert eta_cwidth:InterpolationWidths 132 6.6148933e-05 insert eta_cwidth:InterpolationWidths 133 6.7495927e-05 insert eta_cwidth:InterpolationWidths 134 6.8856728e-05 insert eta_cwidth:InterpolationWidths 135 7.023137e-05 insert eta_cwidth:InterpolationWidths 136 7.1619889e-05 insert eta_cwidth:InterpolationWidths 137 7.302232e-05 insert eta_cwidth:InterpolationWidths 138 7.4438699e-05 insert eta_cwidth:InterpolationWidths 139 7.5869061e-05 insert eta_cwidth:InterpolationWidths 140 7.7313444e-05 insert eta_cwidth:InterpolationWidths 141 7.8771883e-05 insert eta_cwidth:InterpolationWidths 142 8.0244415e-05 insert eta_cwidth:InterpolationWidths 143 8.1731077e-05 insert eta_cwidth:InterpolationWidths 144 8.3231906e-05 insert eta_cwidth:InterpolationWidths 145 8.4746939e-05 insert eta_cwidth:InterpolationWidths 146 8.6276213e-05 insert eta_cwidth:InterpolationWidths 147 8.7819767e-05 insert eta_cwidth:InterpolationWidths 148 8.9377637e-05 insert eta_cwidth:InterpolationWidths 149 9.0949863e-05 insert eta_cwidth:InterpolationWidths 150 9.2536482e-05 insert eta_cwidth:InterpolationWidths 151 9.4137532e-05 insert eta_cwidth:InterpolationWidths 152 9.5753052e-05 insert eta_cwidth:InterpolationWidths 153 9.7383081e-05 insert eta_cwidth:InterpolationWidths 154 9.9027657e-05 insert eta_cwidth:InterpolationWidths 155 0.00010068682 insert eta_cwidth:InterpolationWidths 156 0.00010236061 insert eta_cwidth:InterpolationWidths 157 0.00010404906 insert eta_cwidth:InterpolationWidths 158 0.00010575222 insert eta_cwidth:InterpolationWidths 159 0.00010747012 insert eta_cwidth:InterpolationWidths 160 0.0001092028 insert eta_cwidth:InterpolationWidths 161 0.00011095031 insert eta_cwidth:InterpolationWidths 162 0.00021794367 insert eta_cwidth:InterpolationWidths 163 0.00022196429 insert eta_cwidth:InterpolationWidths 164 0.00022602568 insert eta_cwidth:InterpolationWidths 165 0.00023012797 insert eta_cwidth:InterpolationWidths 166 0.00023427129 insert eta_cwidth:InterpolationWidths 167 0.00023845577 insert eta_cwidth:InterpolationWidths 168 0.00024268155 insert eta_cwidth:InterpolationWidths 169 0.00024694874 insert eta_cwidth:InterpolationWidths 170 0.00025125749 insert eta_cwidth:InterpolationWidths 171 0.00025560793 insert eta_cwidth:InterpolationWidths 172 0.00026000019 insert eta_cwidth:InterpolationWidths 173 0.0002644344 insert eta_cwidth:InterpolationWidths 174 0.00026891069 insert eta_cwidth:InterpolationWidths 175 0.0002734292 insert eta_cwidth:InterpolationWidths 176 0.00027799007 insert eta_cwidth:InterpolationWidths 177 0.00028259343 insert eta_cwidth:InterpolationWidths 178 0.00028723941 insert eta_cwidth:InterpolationWidths 179 0.00029192816 insert eta_cwidth:InterpolationWidths 180 0.00029665979 insert eta_cwidth:InterpolationWidths 181 0.00030143446 insert eta_cwidth:InterpolationWidths 182 0.0003062523 insert eta_cwidth:InterpolationWidths 183 0.00031111345 insert eta_cwidth:InterpolationWidths 184 0.00031601804 insert eta_cwidth:InterpolationWidths 185 0.00032096621 insert eta_cwidth:InterpolationWidths 186 0.0003259581 insert eta_cwidth:InterpolationWidths 187 0.00033099385 insert eta_cwidth:InterpolationWidths 188 0.00033607359 insert eta_cwidth:InterpolationWidths 189 0.00034119747 insert eta_cwidth:InterpolationWidths 190 0.00034636562 insert eta_cwidth:InterpolationWidths 191 0.00035157818 insert eta_cwidth:InterpolationWidths 192 0.00035683532 insert eta_cwidth:InterpolationWidths 193 0.00036213712 insert eta_cwidth:InterpolationWidths 194 0.00036748376 insert eta_cwidth:InterpolationWidths 195 0.00037287536 insert eta_cwidth:InterpolationWidths 196 0.00037831212 insert eta_cwidth:InterpolationWidths 197 0.00038379409 insert eta_cwidth:InterpolationWidths 198 0.00038932146 insert eta_cwidth:InterpolationWidths 199 0.00039489441 insert eta_cwidth:InterpolationWidths 200 0.00040051299 insert eta_cwidth:InterpolationWidths 201 0.00040617747 insert eta_cwidth:InterpolationWidths 202 0.00041188779 insert eta_cwidth:InterpolationWidths 203 0.00041764437 insert eta_cwidth:InterpolationWidths 204 0.00042344706 insert eta_cwidth:InterpolationWidths 205 0.00042929623 insert eta_cwidth:InterpolationWidths 206 0.000435192 insert eta_cwidth:InterpolationWidths 207 0.00044113437 insert eta_cwidth:InterpolationWidths 208 0.00044712364 insert eta_cwidth:InterpolationWidths 209 0.00045315975 insert eta_cwidth:InterpolationWidths 210 0.00045924306 insert eta_cwidth:InterpolationWidths 211 0.00046537347 insert eta_cwidth:InterpolationWidths 212 0.00047155124 insert eta_cwidth:InterpolationWidths 213 0.00047777939 insert eta_cwidth:InterpolationWidths 214 0.0004840523 insert eta_cwidth:InterpolationWidths 215 0.00049037302 insert eta_cwidth:InterpolationWidths 216 0.00010876022 insert eta_cwidth:InterpolationWidths 217 0.00011076729 insert eta_cwidth:InterpolationWidths 218 0.00011279471 insert eta_cwidth:InterpolationWidths 219 0.00011484256 insert eta_cwidth:InterpolationWidths 220 0.00011691089 insert eta_cwidth:InterpolationWidths 221 0.00011899978 insert eta_cwidth:InterpolationWidths 222 0.00012110928 insert eta_cwidth:InterpolationWidths 223 0.00012323946 insert eta_cwidth:InterpolationWidths 224 0.0001253904 insert eta_cwidth:InterpolationWidths 225 0.00012756214 insert eta_cwidth:InterpolationWidths 226 0.00012975477 insert eta_cwidth:InterpolationWidths 227 0.00013196834 insert eta_cwidth:InterpolationWidths 228 0.00013420293 insert eta_cwidth:InterpolationWidths 229 0.0001364586 insert eta_cwidth:InterpolationWidths 230 0.00013873542 insert eta_cwidth:InterpolationWidths 231 0.00014103345 insert eta_cwidth:InterpolationWidths 232 0.00014335276 insert eta_cwidth:InterpolationWidths 233 0.00014569342 insert eta_cwidth:InterpolationWidths 234 0.00014805551 insert eta_cwidth:InterpolationWidths 235 0.00015043907 insert eta_cwidth:InterpolationWidths 236 0.0001528442 insert eta_cwidth:InterpolationWidths 237 0.00015527094 insert eta_cwidth:InterpolationWidths 238 0.00015771938 insert eta_cwidth:InterpolationWidths 239 0.00016018957 insert eta_cwidth:InterpolationWidths 240 0.0001626816 insert eta_cwidth:InterpolationWidths 241 0.00016519552 insert eta_cwidth:InterpolationWidths 242 0.00016773141 insert eta_cwidth:InterpolationWidths 243 0.00017028934 insert eta_cwidth:InterpolationWidths 244 0.00017286937 insert eta_cwidth:InterpolationWidths 245 0.00017547158 insert eta_cwidth:InterpolationWidths 246 0.00017809604 insert eta_cwidth:InterpolationWidths 247 0.0001807428 insert eta_cwidth:InterpolationWidths 248 0.00018341195 insert eta_cwidth:InterpolationWidths 249 0.00018610357 insert eta_cwidth:InterpolationWidths 250 0.0001888177 insert eta_cwidth:InterpolationWidths 251 0.00019155442 insert eta_cwidth:InterpolationWidths 252 0.00019431383 insert eta_cwidth:InterpolationWidths 253 0.00019709595 insert eta_cwidth:InterpolationWidths 254 0.00019990088 insert eta_cwidth:InterpolationWidths 255 0.00020272871 insert eta_cwidth:InterpolationWidths 256 0.00020557952 insert eta_cwidth:InterpolationWidths 257 0.00020845329 insert eta_cwidth:InterpolationWidths 258 0.00021135019 insert eta_cwidth:InterpolationWidths 259 0.00021427029 insert eta_cwidth:InterpolationWidths 260 0.00021721362 insert eta_cwidth:InterpolationWidths 261 0.00022018021 insert eta_cwidth:InterpolationWidths 262 0.00022317017 insert eta_cwidth:InterpolationWidths 263 0.00022618361 insert eta_cwidth:InterpolationWidths 264 0.00022922051 insert eta_cwidth:InterpolationWidths 265 0.00023228098 insert eta_cwidth:InterpolationWidths 266 0.00023536647 insert eta_cwidth:InterpolationWidths 267 0.0002384743 insert eta_cwidth:InterpolationWidths 268 0.00024160579 insert eta_cwidth:InterpolationWidths 269 0.00024476144 insert eta_cwidth:NumberofEntries 0 54 insert eta_cwidth:NumberofEntries 1 54 insert eta_cwidth:NumberofEntries 2 54 insert eta_cwidth:NumberofEntries 3 54 insert eta_cwidth:NumberofEntries 4 54 insert eta_cwidth:NumberofEntries 5 54 insert eta_cwidth:NumberofEntries 6 108 insert eta_cwidth:NumberofEntries 7 108 insert eta_cwidth:NumberofEntries 8 108 insert eta_cwidth:NumberofEntries 9 108 insert eta_cwidth:NumberofEntries 10 108 insert eta_cwidth:NumberofEntries 11 108 insert eta_cwidth:NumberofEntries 12 108 insert eta_cwidth:NumberofEntries 13 108 insert eta_cwidth:NumberofEntries 14 108 insert eta_cwidth:NumberofEntries 15 108 insert eta_cwidth:NumberofEntries 16 108 insert eta_cwidth:NumberofEntries 17 108 insert eta_cwidth:NumberofEntries 18 108 insert eta_cwidth:NumberofEntries 19 108 insert eta_cwidth:NumberofEntries 20 108 insert eta_cwidth:NumberofEntries 21 108 insert eta_cwidth:NumberofEntries 22 108 insert eta_cwidth:NumberofEntries 23 108 insert eta_cwidth:NumberofEntries 24 108 insert eta_cwidth:NumberofEntries 25 108 insert eta_cwidth:NumberofEntries 26 162 insert eta_cwidth:NumberofEntries 27 162 insert eta_cwidth:NumberofEntries 28 216 insert eta_cwidth:NumberofEntries 29 270 newdef /Herwig/Particles/eta_c:Width_generator eta_cwidth # create Herwig::GenericWidthGenerator eta_bwidth newdef eta_bwidth:Particle /Herwig/Particles/eta_b newdef eta_bwidth:Prefactor 1 newdef eta_bwidth:BRNormalize 1 newdef eta_bwidth:BRMinimum 0.01 newdef eta_bwidth:Points 50 newdef eta_bwidth:InterpolationOrder 1 insert eta_bwidth:MEtype 0 0 insert eta_bwidth:MEcode 0 0 insert eta_bwidth:MEcoupling 0 1 insert eta_bwidth:ModeOn 0 1 insert eta_bwidth:MinimumMasses 0 0 insert eta_bwidth:MEmass1 0 0 insert eta_bwidth:MEmass2 0 0 insert eta_bwidth:DecayModes 0 eta_b->g,g; insert eta_bwidth:NumberofEntries 0 0 newdef /Herwig/Particles/eta_b:Width_generator eta_bwidth # create Herwig::GenericWidthGenerator eta_b2Swidth newdef eta_b2Swidth:Particle /Herwig/Particles/eta_b(2S) newdef eta_b2Swidth:Prefactor 1.00573 newdef eta_b2Swidth:BRNormalize 1 newdef eta_b2Swidth:BRMinimum 0.01 newdef eta_b2Swidth:Points 50 newdef eta_b2Swidth:InterpolationOrder 1 insert eta_b2Swidth:MEtype 0 0 insert eta_b2Swidth:MEtype 1 0 insert eta_b2Swidth:MEcode 0 0 insert eta_b2Swidth:MEcode 1 0 insert eta_b2Swidth:MEcoupling 0 0.9943 insert eta_b2Swidth:MEcoupling 1 0.0057 insert eta_b2Swidth:ModeOn 0 1 insert eta_b2Swidth:ModeOn 1 0 insert eta_b2Swidth:MinimumMasses 0 0 insert eta_b2Swidth:MinimumMasses 1 9.87211 insert eta_b2Swidth:MEmass1 0 0 insert eta_b2Swidth:MEmass1 1 0 insert eta_b2Swidth:MEmass2 0 0 insert eta_b2Swidth:MEmass2 1 0 insert eta_b2Swidth:DecayModes 0 eta_b(2S)->g,g; insert eta_b2Swidth:DecayModes 1 eta_b(2S)->h_b,gamma; insert eta_b2Swidth:NumberofEntries 0 0 insert eta_b2Swidth:NumberofEntries 1 0 newdef /Herwig/Particles/eta_b(2S):Width_generator eta_b2Swidth # create Herwig::GenericWidthGenerator eta_c2Swidth newdef eta_c2Swidth:Particle /Herwig/Particles/eta_c(2S) newdef eta_c2Swidth:Prefactor 1.01245 newdef eta_c2Swidth:BRNormalize 1 newdef eta_c2Swidth:BRMinimum 0.01 newdef eta_c2Swidth:Points 50 newdef eta_c2Swidth:InterpolationOrder 1 insert eta_c2Swidth:MEtype 0 0 insert eta_c2Swidth:MEtype 1 0 insert eta_c2Swidth:MEtype 2 0 insert eta_c2Swidth:MEtype 3 0 insert eta_c2Swidth:MEcode 0 0 insert eta_c2Swidth:MEcode 1 0 insert eta_c2Swidth:MEcode 2 0 insert eta_c2Swidth:MEcode 3 0 insert eta_c2Swidth:MEcoupling 0 0.0125 insert eta_c2Swidth:MEcoupling 1 0.0063 insert eta_c2Swidth:MEcoupling 2 0.9752 insert eta_c2Swidth:MEcoupling 3 0.006 insert eta_c2Swidth:ModeOn 0 1 insert eta_c2Swidth:ModeOn 1 0 insert eta_c2Swidth:ModeOn 2 1 insert eta_c2Swidth:ModeOn 3 0 insert eta_c2Swidth:MinimumMasses 0 3.00454 insert eta_c2Swidth:MinimumMasses 1 2.99536 insert eta_c2Swidth:MinimumMasses 2 0 insert eta_c2Swidth:MinimumMasses 3 3.51693 insert eta_c2Swidth:MEmass1 0 0 insert eta_c2Swidth:MEmass1 1 0 insert eta_c2Swidth:MEmass1 2 0 insert eta_c2Swidth:MEmass1 3 0 insert eta_c2Swidth:MEmass2 0 0 insert eta_c2Swidth:MEmass2 1 0 insert eta_c2Swidth:MEmass2 2 0 insert eta_c2Swidth:MEmass2 3 0 insert eta_c2Swidth:DecayModes 0 eta_c(2S)->eta_c,pi+,pi-; insert eta_c2Swidth:DecayModes 1 eta_c(2S)->eta_c,pi0,pi0; insert eta_c2Swidth:DecayModes 2 eta_c(2S)->g,g; insert eta_c2Swidth:DecayModes 3 eta_c(2S)->h_c,gamma; insert eta_c2Swidth:NumberofEntries 0 0 insert eta_c2Swidth:NumberofEntries 1 0 insert eta_c2Swidth:NumberofEntries 2 0 insert eta_c2Swidth:NumberofEntries 3 0 newdef /Herwig/Particles/eta_c(2S):Width_generator eta_c2Swidth # create Herwig::GenericWidthGenerator jpsiwidth newdef jpsiwidth:Particle /Herwig/Particles/Jpsi newdef jpsiwidth:Prefactor 1.21858 newdef jpsiwidth:BRNormalize 1 newdef jpsiwidth:BRMinimum 0.01 newdef jpsiwidth:Points 50 newdef jpsiwidth:InterpolationOrder 1 insert jpsiwidth:MEtype 0 0 insert jpsiwidth:MEtype 1 0 insert jpsiwidth:MEtype 2 0 insert jpsiwidth:MEtype 3 0 insert jpsiwidth:MEtype 4 2 insert jpsiwidth:MEtype 5 2 insert jpsiwidth:MEtype 6 2 insert jpsiwidth:MEtype 7 2 insert jpsiwidth:MEtype 8 0 insert jpsiwidth:MEtype 9 0 insert jpsiwidth:MEtype 10 2 insert jpsiwidth:MEtype 11 0 insert jpsiwidth:MEtype 12 2 insert jpsiwidth:MEtype 13 0 insert jpsiwidth:MEtype 14 0 insert jpsiwidth:MEtype 15 2 insert jpsiwidth:MEtype 16 0 insert jpsiwidth:MEtype 17 0 insert jpsiwidth:MEtype 18 0 insert jpsiwidth:MEtype 19 0 insert jpsiwidth:MEtype 20 0 insert jpsiwidth:MEtype 21 2 insert jpsiwidth:MEtype 22 0 insert jpsiwidth:MEtype 23 0 insert jpsiwidth:MEtype 24 1 insert jpsiwidth:MEtype 25 0 insert jpsiwidth:MEtype 26 1 insert jpsiwidth:MEtype 27 0 insert jpsiwidth:MEtype 28 1 insert jpsiwidth:MEtype 29 0 insert jpsiwidth:MEtype 30 0 insert jpsiwidth:MEtype 31 0 insert jpsiwidth:MEtype 32 0 insert jpsiwidth:MEtype 33 0 insert jpsiwidth:MEtype 34 0 insert jpsiwidth:MEtype 35 0 insert jpsiwidth:MEtype 36 0 insert jpsiwidth:MEtype 37 0 insert jpsiwidth:MEtype 38 0 insert jpsiwidth:MEtype 39 0 insert jpsiwidth:MEtype 40 0 insert jpsiwidth:MEtype 41 0 insert jpsiwidth:MEtype 42 0 insert jpsiwidth:MEtype 43 0 insert jpsiwidth:MEtype 44 0 insert jpsiwidth:MEtype 45 0 insert jpsiwidth:MEtype 46 0 insert jpsiwidth:MEtype 47 0 insert jpsiwidth:MEtype 48 0 insert jpsiwidth:MEtype 49 0 insert jpsiwidth:MEtype 50 0 insert jpsiwidth:MEtype 51 0 insert jpsiwidth:MEtype 52 0 insert jpsiwidth:MEtype 53 1 insert jpsiwidth:MEtype 54 0 insert jpsiwidth:MEtype 55 1 insert jpsiwidth:MEtype 56 0 insert jpsiwidth:MEtype 57 0 insert jpsiwidth:MEtype 58 1 insert jpsiwidth:MEtype 59 0 insert jpsiwidth:MEtype 60 0 insert jpsiwidth:MEtype 61 0 insert jpsiwidth:MEtype 62 0 insert jpsiwidth:MEtype 63 0 insert jpsiwidth:MEtype 64 0 insert jpsiwidth:MEtype 65 0 insert jpsiwidth:MEtype 66 0 insert jpsiwidth:MEtype 67 0 insert jpsiwidth:MEtype 68 0 insert jpsiwidth:MEtype 69 0 insert jpsiwidth:MEtype 70 0 insert jpsiwidth:MEtype 71 1 insert jpsiwidth:MEtype 72 1 insert jpsiwidth:MEtype 73 0 insert jpsiwidth:MEtype 74 0 insert jpsiwidth:MEtype 75 0 insert jpsiwidth:MEtype 76 2 insert jpsiwidth:MEtype 77 2 insert jpsiwidth:MEtype 78 2 insert jpsiwidth:MEtype 79 0 insert jpsiwidth:MEtype 80 1 insert jpsiwidth:MEtype 81 2 insert jpsiwidth:MEtype 82 2 insert jpsiwidth:MEtype 83 2 insert jpsiwidth:MEtype 84 0 insert jpsiwidth:MEtype 85 0 insert jpsiwidth:MEtype 86 2 insert jpsiwidth:MEtype 87 0 insert jpsiwidth:MEtype 88 0 insert jpsiwidth:MEtype 89 2 insert jpsiwidth:MEtype 90 2 insert jpsiwidth:MEtype 91 0 insert jpsiwidth:MEtype 92 0 insert jpsiwidth:MEtype 93 0 insert jpsiwidth:MEtype 94 0 insert jpsiwidth:MEtype 95 2 insert jpsiwidth:MEtype 96 2 insert jpsiwidth:MEtype 97 2 insert jpsiwidth:MEtype 98 2 insert jpsiwidth:MEtype 99 2 insert jpsiwidth:MEtype 100 2 insert jpsiwidth:MEtype 101 0 insert jpsiwidth:MEtype 102 0 insert jpsiwidth:MEtype 103 0 insert jpsiwidth:MEtype 104 0 insert jpsiwidth:MEtype 105 0 insert jpsiwidth:MEtype 106 0 insert jpsiwidth:MEtype 107 0 insert jpsiwidth:MEtype 108 1 insert jpsiwidth:MEtype 109 0 insert jpsiwidth:MEtype 110 0 insert jpsiwidth:MEtype 111 0 insert jpsiwidth:MEtype 112 0 insert jpsiwidth:MEtype 113 0 insert jpsiwidth:MEtype 114 0 insert jpsiwidth:MEtype 115 0 insert jpsiwidth:MEtype 116 1 insert jpsiwidth:MEtype 117 2 insert jpsiwidth:MEtype 118 0 insert jpsiwidth:MEtype 119 0 insert jpsiwidth:MEtype 120 0 insert jpsiwidth:MEtype 121 0 insert jpsiwidth:MEtype 122 0 insert jpsiwidth:MEtype 123 2 insert jpsiwidth:MEtype 124 0 insert jpsiwidth:MEtype 125 0 insert jpsiwidth:MEtype 126 0 insert jpsiwidth:MEtype 127 0 insert jpsiwidth:MEtype 128 0 insert jpsiwidth:MEtype 129 0 insert jpsiwidth:MEtype 130 0 insert jpsiwidth:MEtype 131 0 insert jpsiwidth:MEtype 132 0 insert jpsiwidth:MEtype 133 1 insert jpsiwidth:MEtype 134 0 insert jpsiwidth:MEtype 135 0 insert jpsiwidth:MEtype 136 0 insert jpsiwidth:MEtype 137 0 insert jpsiwidth:MEtype 138 0 insert jpsiwidth:MEtype 139 0 insert jpsiwidth:MEtype 140 0 insert jpsiwidth:MEtype 141 2 insert jpsiwidth:MEtype 142 2 insert jpsiwidth:MEtype 143 0 insert jpsiwidth:MEtype 144 0 insert jpsiwidth:MEtype 145 0 insert jpsiwidth:MEtype 146 0 insert jpsiwidth:MEtype 147 0 insert jpsiwidth:MEtype 148 0 insert jpsiwidth:MEtype 149 1 insert jpsiwidth:MEtype 150 1 insert jpsiwidth:MEtype 151 2 insert jpsiwidth:MEtype 152 0 insert jpsiwidth:MEtype 153 2 insert jpsiwidth:MEtype 154 2 insert jpsiwidth:MEtype 155 0 insert jpsiwidth:MEtype 156 0 insert jpsiwidth:MEtype 157 0 insert jpsiwidth:MEcode 0 0 insert jpsiwidth:MEcode 1 0 insert jpsiwidth:MEcode 2 0 insert jpsiwidth:MEcode 3 0 insert jpsiwidth:MEcode 4 0 insert jpsiwidth:MEcode 5 0 insert jpsiwidth:MEcode 6 0 insert jpsiwidth:MEcode 7 0 insert jpsiwidth:MEcode 8 0 insert jpsiwidth:MEcode 9 0 insert jpsiwidth:MEcode 10 0 insert jpsiwidth:MEcode 11 0 insert jpsiwidth:MEcode 12 0 insert jpsiwidth:MEcode 13 0 insert jpsiwidth:MEcode 14 0 insert jpsiwidth:MEcode 15 0 insert jpsiwidth:MEcode 16 0 insert jpsiwidth:MEcode 17 0 insert jpsiwidth:MEcode 18 0 insert jpsiwidth:MEcode 19 0 insert jpsiwidth:MEcode 20 0 insert jpsiwidth:MEcode 21 0 insert jpsiwidth:MEcode 22 0 insert jpsiwidth:MEcode 23 0 insert jpsiwidth:MEcode 24 0 insert jpsiwidth:MEcode 25 0 insert jpsiwidth:MEcode 26 0 insert jpsiwidth:MEcode 27 0 insert jpsiwidth:MEcode 28 2 insert jpsiwidth:MEcode 29 0 insert jpsiwidth:MEcode 30 0 insert jpsiwidth:MEcode 31 0 insert jpsiwidth:MEcode 32 0 insert jpsiwidth:MEcode 33 0 insert jpsiwidth:MEcode 34 0 insert jpsiwidth:MEcode 35 0 insert jpsiwidth:MEcode 36 0 insert jpsiwidth:MEcode 37 0 insert jpsiwidth:MEcode 38 0 insert jpsiwidth:MEcode 39 0 insert jpsiwidth:MEcode 40 0 insert jpsiwidth:MEcode 41 0 insert jpsiwidth:MEcode 42 0 insert jpsiwidth:MEcode 43 0 insert jpsiwidth:MEcode 44 0 insert jpsiwidth:MEcode 45 0 insert jpsiwidth:MEcode 46 0 insert jpsiwidth:MEcode 47 0 insert jpsiwidth:MEcode 48 0 insert jpsiwidth:MEcode 49 0 insert jpsiwidth:MEcode 50 0 insert jpsiwidth:MEcode 51 0 insert jpsiwidth:MEcode 52 0 insert jpsiwidth:MEcode 53 2 insert jpsiwidth:MEcode 54 0 insert jpsiwidth:MEcode 55 2 insert jpsiwidth:MEcode 56 0 insert jpsiwidth:MEcode 57 0 insert jpsiwidth:MEcode 58 2 insert jpsiwidth:MEcode 59 0 insert jpsiwidth:MEcode 60 0 insert jpsiwidth:MEcode 61 0 insert jpsiwidth:MEcode 62 0 insert jpsiwidth:MEcode 63 0 insert jpsiwidth:MEcode 64 0 insert jpsiwidth:MEcode 65 0 insert jpsiwidth:MEcode 66 0 insert jpsiwidth:MEcode 67 0 insert jpsiwidth:MEcode 68 0 insert jpsiwidth:MEcode 69 0 insert jpsiwidth:MEcode 70 0 insert jpsiwidth:MEcode 71 2 insert jpsiwidth:MEcode 72 2 insert jpsiwidth:MEcode 73 0 insert jpsiwidth:MEcode 74 0 insert jpsiwidth:MEcode 75 0 insert jpsiwidth:MEcode 76 0 insert jpsiwidth:MEcode 77 0 insert jpsiwidth:MEcode 78 0 insert jpsiwidth:MEcode 79 0 insert jpsiwidth:MEcode 80 2 insert jpsiwidth:MEcode 81 0 insert jpsiwidth:MEcode 82 0 insert jpsiwidth:MEcode 83 0 insert jpsiwidth:MEcode 84 0 insert jpsiwidth:MEcode 85 0 insert jpsiwidth:MEcode 86 0 insert jpsiwidth:MEcode 87 0 insert jpsiwidth:MEcode 88 0 insert jpsiwidth:MEcode 89 0 insert jpsiwidth:MEcode 90 0 insert jpsiwidth:MEcode 91 0 insert jpsiwidth:MEcode 92 0 insert jpsiwidth:MEcode 93 0 insert jpsiwidth:MEcode 94 0 insert jpsiwidth:MEcode 95 0 insert jpsiwidth:MEcode 96 0 insert jpsiwidth:MEcode 97 0 insert jpsiwidth:MEcode 98 0 insert jpsiwidth:MEcode 99 0 insert jpsiwidth:MEcode 100 0 insert jpsiwidth:MEcode 101 0 insert jpsiwidth:MEcode 102 0 insert jpsiwidth:MEcode 103 0 insert jpsiwidth:MEcode 104 0 insert jpsiwidth:MEcode 105 0 insert jpsiwidth:MEcode 106 0 insert jpsiwidth:MEcode 107 0 insert jpsiwidth:MEcode 108 2 insert jpsiwidth:MEcode 109 0 insert jpsiwidth:MEcode 110 0 insert jpsiwidth:MEcode 111 0 insert jpsiwidth:MEcode 112 0 insert jpsiwidth:MEcode 113 0 insert jpsiwidth:MEcode 114 0 insert jpsiwidth:MEcode 115 0 insert jpsiwidth:MEcode 116 2 insert jpsiwidth:MEcode 117 0 insert jpsiwidth:MEcode 118 0 insert jpsiwidth:MEcode 119 0 insert jpsiwidth:MEcode 120 0 insert jpsiwidth:MEcode 121 0 insert jpsiwidth:MEcode 122 0 insert jpsiwidth:MEcode 123 0 insert jpsiwidth:MEcode 124 0 insert jpsiwidth:MEcode 125 0 insert jpsiwidth:MEcode 126 0 insert jpsiwidth:MEcode 127 0 insert jpsiwidth:MEcode 128 0 insert jpsiwidth:MEcode 129 0 insert jpsiwidth:MEcode 130 0 insert jpsiwidth:MEcode 131 0 insert jpsiwidth:MEcode 132 0 insert jpsiwidth:MEcode 133 2 insert jpsiwidth:MEcode 134 0 insert jpsiwidth:MEcode 135 0 insert jpsiwidth:MEcode 136 0 insert jpsiwidth:MEcode 137 0 insert jpsiwidth:MEcode 138 0 insert jpsiwidth:MEcode 139 0 insert jpsiwidth:MEcode 140 0 insert jpsiwidth:MEcode 141 0 insert jpsiwidth:MEcode 142 0 insert jpsiwidth:MEcode 143 0 insert jpsiwidth:MEcode 144 0 insert jpsiwidth:MEcode 145 0 insert jpsiwidth:MEcode 146 0 insert jpsiwidth:MEcode 147 0 insert jpsiwidth:MEcode 148 0 insert jpsiwidth:MEcode 149 0 insert jpsiwidth:MEcode 150 1 insert jpsiwidth:MEcode 151 0 insert jpsiwidth:MEcode 152 0 insert jpsiwidth:MEcode 153 0 insert jpsiwidth:MEcode 154 0 insert jpsiwidth:MEcode 155 0 insert jpsiwidth:MEcode 156 0 insert jpsiwidth:MEcode 157 0 insert jpsiwidth:MEcoupling 0 0.0011 insert jpsiwidth:MEcoupling 1 0.0011 insert jpsiwidth:MEcoupling 2 0.0011 insert jpsiwidth:MEcoupling 3 0.0011 insert jpsiwidth:MEcoupling 4 0.99041 insert jpsiwidth:MEcoupling 5 0.99041 insert jpsiwidth:MEcoupling 6 0.991708 insert jpsiwidth:MEcoupling 7 0.991708 insert jpsiwidth:MEcoupling 8 0.002 insert jpsiwidth:MEcoupling 9 0.001325 insert jpsiwidth:MEcoupling 10 0.992342 insert jpsiwidth:MEcoupling 11 0.001325 insert jpsiwidth:MEcoupling 12 0.992342 insert jpsiwidth:MEcoupling 13 0.002 insert jpsiwidth:MEcoupling 14 0.001325 insert jpsiwidth:MEcoupling 15 0.997924 insert jpsiwidth:MEcoupling 16 0.00335 insert jpsiwidth:MEcoupling 17 0.00335 insert jpsiwidth:MEcoupling 18 0.00335 insert jpsiwidth:MEcoupling 19 0.00335 insert jpsiwidth:MEcoupling 20 0.001325 insert jpsiwidth:MEcoupling 21 0.997924 insert jpsiwidth:MEcoupling 22 0.00071 insert jpsiwidth:MEcoupling 23 0.0021 insert jpsiwidth:MEcoupling 24 0.0011251 insert jpsiwidth:MEcoupling 25 0.00071 insert jpsiwidth:MEcoupling 26 0.000884282 insert jpsiwidth:MEcoupling 27 0.00022 insert jpsiwidth:MEcoupling 28 0.00141585 insert jpsiwidth:MEcoupling 29 0.00053 insert jpsiwidth:MEcoupling 30 0.00089 insert jpsiwidth:MEcoupling 31 0.00089 insert jpsiwidth:MEcoupling 32 0.00053 insert jpsiwidth:MEcoupling 33 0.00089 insert jpsiwidth:MEcoupling 34 0.00089 insert jpsiwidth:MEcoupling 35 0.000515 insert jpsiwidth:MEcoupling 36 0.000155 insert jpsiwidth:MEcoupling 37 0.00102 insert jpsiwidth:MEcoupling 38 0.000515 insert jpsiwidth:MEcoupling 39 0.000155 insert jpsiwidth:MEcoupling 40 0.00102 insert jpsiwidth:MEcoupling 41 0.000515 insert jpsiwidth:MEcoupling 42 0.000155 insert jpsiwidth:MEcoupling 43 0.00051 insert jpsiwidth:MEcoupling 44 0.00051 insert jpsiwidth:MEcoupling 45 0.000155 insert jpsiwidth:MEcoupling 46 0.00102 insert jpsiwidth:MEcoupling 47 0.000155 insert jpsiwidth:MEcoupling 48 0.00102 insert jpsiwidth:MEcoupling 49 0.000155 insert jpsiwidth:MEcoupling 50 0.00051 insert jpsiwidth:MEcoupling 51 0.00051 insert jpsiwidth:MEcoupling 52 0.00053 insert jpsiwidth:MEcoupling 53 0.00134022 insert jpsiwidth:MEcoupling 54 0.00058 insert jpsiwidth:MEcoupling 55 0.00134478 insert jpsiwidth:MEcoupling 56 0.00058 insert jpsiwidth:MEcoupling 57 0.00053 insert jpsiwidth:MEcoupling 58 0.00134204 insert jpsiwidth:MEcoupling 59 0.00029 insert jpsiwidth:MEcoupling 60 0.00029 insert jpsiwidth:MEcoupling 61 0.00058 insert jpsiwidth:MEcoupling 62 0.00053 insert jpsiwidth:MEcoupling 63 0.00058 insert jpsiwidth:MEcoupling 64 0.00053 insert jpsiwidth:MEcoupling 65 0.00029 insert jpsiwidth:MEcoupling 66 0.00029 insert jpsiwidth:MEcoupling 67 0.000446 insert jpsiwidth:MEcoupling 68 0.000446 insert jpsiwidth:MEcoupling 69 0.000446 insert jpsiwidth:MEcoupling 70 0.000446 insert jpsiwidth:MEcoupling 71 0.00119947 insert jpsiwidth:MEcoupling 72 0.0011933 insert jpsiwidth:MEcoupling 73 0.003633 insert jpsiwidth:MEcoupling 74 0.003633 insert jpsiwidth:MEcoupling 75 0.003634 insert jpsiwidth:MEcoupling 76 1.00695 insert jpsiwidth:MEcoupling 77 1.00695 insert jpsiwidth:MEcoupling 78 1.00635 insert jpsiwidth:MEcoupling 79 0.0198 insert jpsiwidth:MEcoupling 80 0.00821457 insert jpsiwidth:MEcoupling 81 0.998027 insert jpsiwidth:MEcoupling 82 0.952999 insert jpsiwidth:MEcoupling 83 1.03692 insert jpsiwidth:MEcoupling 84 0.00045 insert jpsiwidth:MEcoupling 85 0.0028 insert jpsiwidth:MEcoupling 86 0.995269 insert jpsiwidth:MEcoupling 87 0.0031 insert jpsiwidth:MEcoupling 88 0.0016 insert jpsiwidth:MEcoupling 89 1.01315 insert jpsiwidth:MEcoupling 90 1.03421 insert jpsiwidth:MEcoupling 91 0.00079 insert jpsiwidth:MEcoupling 92 0.00068 insert jpsiwidth:MEcoupling 93 0.00045 insert jpsiwidth:MEcoupling 94 0.0008 insert jpsiwidth:MEcoupling 95 1.05388 insert jpsiwidth:MEcoupling 96 1.00672 insert jpsiwidth:MEcoupling 97 1.00742 insert jpsiwidth:MEcoupling 98 1.00088 insert jpsiwidth:MEcoupling 99 0.981622 insert jpsiwidth:MEcoupling 100 0.987891 insert jpsiwidth:MEcoupling 101 0.00061 insert jpsiwidth:MEcoupling 102 0.00026 insert jpsiwidth:MEcoupling 103 0.00095 insert jpsiwidth:MEcoupling 104 0.00138 insert jpsiwidth:MEcoupling 105 0.0043 insert jpsiwidth:MEcoupling 106 0.486225 insert jpsiwidth:MEcoupling 107 0.05 insert jpsiwidth:MEcoupling 108 0.0082146 insert jpsiwidth:MEcoupling 109 0.0009 insert jpsiwidth:MEcoupling 110 0.00209 insert jpsiwidth:MEcoupling 111 0.00038 insert jpsiwidth:MEcoupling 112 0.0013 insert jpsiwidth:MEcoupling 113 4.5e-05 insert jpsiwidth:MEcoupling 114 0.0045 insert jpsiwidth:MEcoupling 115 0.00102 insert jpsiwidth:MEcoupling 116 0.00161906 insert jpsiwidth:MEcoupling 117 0.996352 insert jpsiwidth:MEcoupling 118 0.00159 insert jpsiwidth:MEcoupling 119 0.0085 insert jpsiwidth:MEcoupling 120 0.0036 insert jpsiwidth:MEcoupling 121 0.00475 insert jpsiwidth:MEcoupling 122 0.00217 insert jpsiwidth:MEcoupling 123 0.994776 insert jpsiwidth:MEcoupling 124 0.00204 insert jpsiwidth:MEcoupling 125 0.0009 insert jpsiwidth:MEcoupling 126 0.00209 insert jpsiwidth:MEcoupling 127 0.00038 insert jpsiwidth:MEcoupling 128 0.0013 insert jpsiwidth:MEcoupling 129 4.5e-05 insert jpsiwidth:MEcoupling 130 0.0023 insert jpsiwidth:MEcoupling 131 0.0045 insert jpsiwidth:MEcoupling 132 0.00102 insert jpsiwidth:MEcoupling 133 0.00161876 insert jpsiwidth:MEcoupling 134 0.00204 insert jpsiwidth:MEcoupling 135 0.00051 insert jpsiwidth:MEcoupling 136 0.00051 insert jpsiwidth:MEcoupling 137 0.00051 insert jpsiwidth:MEcoupling 138 0.00051 insert jpsiwidth:MEcoupling 139 0.00074 insert jpsiwidth:MEcoupling 140 0.00074 insert jpsiwidth:MEcoupling 141 1.21747 insert jpsiwidth:MEcoupling 142 0.988648 insert jpsiwidth:MEcoupling 143 0.0004 insert jpsiwidth:MEcoupling 144 0.00166 insert jpsiwidth:MEcoupling 145 0.00078 insert jpsiwidth:MEcoupling 146 0.001 insert jpsiwidth:MEcoupling 147 0.005 insert jpsiwidth:MEcoupling 148 0.0033 insert jpsiwidth:MEcoupling 149 0.00260148 insert jpsiwidth:MEcoupling 150 0.000549433 insert jpsiwidth:MEcoupling 151 0.993377 insert jpsiwidth:MEcoupling 152 0.003 insert jpsiwidth:MEcoupling 153 0.993377 insert jpsiwidth:MEcoupling 154 0.993114 insert jpsiwidth:MEcoupling 155 0.0015 insert jpsiwidth:MEcoupling 156 0.0198 insert jpsiwidth:MEcoupling 157 0.0791 insert jpsiwidth:ModeOn 0 0 insert jpsiwidth:ModeOn 1 0 insert jpsiwidth:ModeOn 2 0 insert jpsiwidth:ModeOn 3 0 insert jpsiwidth:ModeOn 4 0 insert jpsiwidth:ModeOn 5 0 insert jpsiwidth:ModeOn 6 0 insert jpsiwidth:ModeOn 7 0 insert jpsiwidth:ModeOn 8 0 insert jpsiwidth:ModeOn 9 0 insert jpsiwidth:ModeOn 10 0 insert jpsiwidth:ModeOn 11 0 insert jpsiwidth:ModeOn 12 0 insert jpsiwidth:ModeOn 13 0 insert jpsiwidth:ModeOn 14 0 insert jpsiwidth:ModeOn 15 0 insert jpsiwidth:ModeOn 16 0 insert jpsiwidth:ModeOn 17 0 insert jpsiwidth:ModeOn 18 0 insert jpsiwidth:ModeOn 19 0 insert jpsiwidth:ModeOn 20 0 insert jpsiwidth:ModeOn 21 0 insert jpsiwidth:ModeOn 22 0 insert jpsiwidth:ModeOn 23 0 insert jpsiwidth:ModeOn 24 0 insert jpsiwidth:ModeOn 25 0 insert jpsiwidth:ModeOn 26 0 insert jpsiwidth:ModeOn 27 0 insert jpsiwidth:ModeOn 28 0 insert jpsiwidth:ModeOn 29 0 insert jpsiwidth:ModeOn 30 0 insert jpsiwidth:ModeOn 31 0 insert jpsiwidth:ModeOn 32 0 insert jpsiwidth:ModeOn 33 0 insert jpsiwidth:ModeOn 34 0 insert jpsiwidth:ModeOn 35 0 insert jpsiwidth:ModeOn 36 0 insert jpsiwidth:ModeOn 37 0 insert jpsiwidth:ModeOn 38 0 insert jpsiwidth:ModeOn 39 0 insert jpsiwidth:ModeOn 40 0 insert jpsiwidth:ModeOn 41 0 insert jpsiwidth:ModeOn 42 0 insert jpsiwidth:ModeOn 43 0 insert jpsiwidth:ModeOn 44 0 insert jpsiwidth:ModeOn 45 0 insert jpsiwidth:ModeOn 46 0 insert jpsiwidth:ModeOn 47 0 insert jpsiwidth:ModeOn 48 0 insert jpsiwidth:ModeOn 49 0 insert jpsiwidth:ModeOn 50 0 insert jpsiwidth:ModeOn 51 0 insert jpsiwidth:ModeOn 52 0 insert jpsiwidth:ModeOn 53 0 insert jpsiwidth:ModeOn 54 0 insert jpsiwidth:ModeOn 55 0 insert jpsiwidth:ModeOn 56 0 insert jpsiwidth:ModeOn 57 0 insert jpsiwidth:ModeOn 58 0 insert jpsiwidth:ModeOn 59 0 insert jpsiwidth:ModeOn 60 0 insert jpsiwidth:ModeOn 61 0 insert jpsiwidth:ModeOn 62 0 insert jpsiwidth:ModeOn 63 0 insert jpsiwidth:ModeOn 64 0 insert jpsiwidth:ModeOn 65 0 insert jpsiwidth:ModeOn 66 0 insert jpsiwidth:ModeOn 67 0 insert jpsiwidth:ModeOn 68 0 insert jpsiwidth:ModeOn 69 0 insert jpsiwidth:ModeOn 70 0 insert jpsiwidth:ModeOn 71 0 insert jpsiwidth:ModeOn 72 0 insert jpsiwidth:ModeOn 73 0 insert jpsiwidth:ModeOn 74 0 insert jpsiwidth:ModeOn 75 0 insert jpsiwidth:ModeOn 76 0 insert jpsiwidth:ModeOn 77 0 insert jpsiwidth:ModeOn 78 0 insert jpsiwidth:ModeOn 79 1 insert jpsiwidth:ModeOn 80 1 insert jpsiwidth:ModeOn 81 0 insert jpsiwidth:ModeOn 82 0 insert jpsiwidth:ModeOn 83 0 insert jpsiwidth:ModeOn 84 0 insert jpsiwidth:ModeOn 85 0 insert jpsiwidth:ModeOn 86 0 insert jpsiwidth:ModeOn 87 0 insert jpsiwidth:ModeOn 88 0 insert jpsiwidth:ModeOn 89 0 insert jpsiwidth:ModeOn 90 1 insert jpsiwidth:ModeOn 91 0 insert jpsiwidth:ModeOn 92 0 insert jpsiwidth:ModeOn 93 0 insert jpsiwidth:ModeOn 94 0 insert jpsiwidth:ModeOn 95 0 insert jpsiwidth:ModeOn 96 0 insert jpsiwidth:ModeOn 97 0 insert jpsiwidth:ModeOn 98 0 insert jpsiwidth:ModeOn 99 0 insert jpsiwidth:ModeOn 100 0 insert jpsiwidth:ModeOn 101 0 insert jpsiwidth:ModeOn 102 0 insert jpsiwidth:ModeOn 103 0 insert jpsiwidth:ModeOn 104 0 insert jpsiwidth:ModeOn 105 0 insert jpsiwidth:ModeOn 106 1 insert jpsiwidth:ModeOn 107 1 insert jpsiwidth:ModeOn 108 1 insert jpsiwidth:ModeOn 109 0 insert jpsiwidth:ModeOn 110 0 insert jpsiwidth:ModeOn 111 0 insert jpsiwidth:ModeOn 112 0 insert jpsiwidth:ModeOn 113 0 insert jpsiwidth:ModeOn 114 0 insert jpsiwidth:ModeOn 115 0 insert jpsiwidth:ModeOn 116 0 insert jpsiwidth:ModeOn 117 0 insert jpsiwidth:ModeOn 118 0 insert jpsiwidth:ModeOn 119 0 insert jpsiwidth:ModeOn 120 0 insert jpsiwidth:ModeOn 121 0 insert jpsiwidth:ModeOn 122 0 insert jpsiwidth:ModeOn 123 0 insert jpsiwidth:ModeOn 124 0 insert jpsiwidth:ModeOn 125 0 insert jpsiwidth:ModeOn 126 0 insert jpsiwidth:ModeOn 127 0 insert jpsiwidth:ModeOn 128 0 insert jpsiwidth:ModeOn 129 0 insert jpsiwidth:ModeOn 130 0 insert jpsiwidth:ModeOn 131 0 insert jpsiwidth:ModeOn 132 0 insert jpsiwidth:ModeOn 133 0 insert jpsiwidth:ModeOn 134 0 insert jpsiwidth:ModeOn 135 0 insert jpsiwidth:ModeOn 136 0 insert jpsiwidth:ModeOn 137 0 insert jpsiwidth:ModeOn 138 0 insert jpsiwidth:ModeOn 139 0 insert jpsiwidth:ModeOn 140 0 insert jpsiwidth:ModeOn 141 0 insert jpsiwidth:ModeOn 142 0 insert jpsiwidth:ModeOn 143 0 insert jpsiwidth:ModeOn 144 0 insert jpsiwidth:ModeOn 145 0 insert jpsiwidth:ModeOn 146 0 insert jpsiwidth:ModeOn 147 0 insert jpsiwidth:ModeOn 148 0 insert jpsiwidth:ModeOn 149 0 insert jpsiwidth:ModeOn 150 0 insert jpsiwidth:ModeOn 151 0 insert jpsiwidth:ModeOn 152 0 insert jpsiwidth:ModeOn 153 0 insert jpsiwidth:ModeOn 154 0 insert jpsiwidth:ModeOn 155 0 insert jpsiwidth:ModeOn 156 1 insert jpsiwidth:ModeOn 157 1 insert jpsiwidth:MinimumMasses 0 2.164 insert jpsiwidth:MinimumMasses 1 2.164 insert jpsiwidth:MinimumMasses 2 2.164 insert jpsiwidth:MinimumMasses 3 2.164 insert jpsiwidth:MinimumMasses 4 1.54768 insert jpsiwidth:MinimumMasses 5 1.54768 insert jpsiwidth:MinimumMasses 6 1.55165 insert jpsiwidth:MinimumMasses 7 1.55165 insert jpsiwidth:MinimumMasses 8 1.28332 insert jpsiwidth:MinimumMasses 9 1.83309 insert jpsiwidth:MinimumMasses 10 1.13534 insert jpsiwidth:MinimumMasses 11 1.83309 insert jpsiwidth:MinimumMasses 12 1.13534 insert jpsiwidth:MinimumMasses 13 1.292 insert jpsiwidth:MinimumMasses 14 1.8414 insert jpsiwidth:MinimumMasses 15 1.14365 insert jpsiwidth:MinimumMasses 16 1.87026 insert jpsiwidth:MinimumMasses 17 1.87026 insert jpsiwidth:MinimumMasses 18 1.8604 insert jpsiwidth:MinimumMasses 19 1.8604 insert jpsiwidth:MinimumMasses 20 1.8414 insert jpsiwidth:MinimumMasses 21 1.14365 insert jpsiwidth:MinimumMasses 22 1.6851 insert jpsiwidth:MinimumMasses 23 1.26649 insert jpsiwidth:MinimumMasses 24 0.987354 insert jpsiwidth:MinimumMasses 25 1.69305 insert jpsiwidth:MinimumMasses 26 0.995296 insert jpsiwidth:MinimumMasses 27 2.36634 insert jpsiwidth:MinimumMasses 28 2.23137 insert jpsiwidth:MinimumMasses 29 2.4527 insert jpsiwidth:MinimumMasses 30 2.5529 insert jpsiwidth:MinimumMasses 31 2.54763 insert jpsiwidth:MinimumMasses 32 2.4527 insert jpsiwidth:MinimumMasses 33 2.5529 insert jpsiwidth:MinimumMasses 34 2.54763 insert jpsiwidth:MinimumMasses 35 2.5256 insert jpsiwidth:MinimumMasses 36 2.45217 insert jpsiwidth:MinimumMasses 37 2.69872 insert jpsiwidth:MinimumMasses 38 2.5344 insert jpsiwidth:MinimumMasses 39 2.46465 insert jpsiwidth:MinimumMasses 40 2.70044 insert jpsiwidth:MinimumMasses 41 2.5274 insert jpsiwidth:MinimumMasses 42 2.45634 insert jpsiwidth:MinimumMasses 43 2.70091 insert jpsiwidth:MinimumMasses 44 2.69565 insert jpsiwidth:MinimumMasses 45 2.46465 insert jpsiwidth:MinimumMasses 46 2.70044 insert jpsiwidth:MinimumMasses 47 2.45217 insert jpsiwidth:MinimumMasses 48 2.69872 insert jpsiwidth:MinimumMasses 49 2.45634 insert jpsiwidth:MinimumMasses 50 2.70091 insert jpsiwidth:MinimumMasses 51 2.69565 insert jpsiwidth:MinimumMasses 52 2.44462 insert jpsiwidth:MinimumMasses 53 2.37874 insert jpsiwidth:MinimumMasses 54 2.62529 insert jpsiwidth:MinimumMasses 55 2.3949 insert jpsiwidth:MinimumMasses 56 2.63069 insert jpsiwidth:MinimumMasses 57 2.4433 insert jpsiwidth:MinimumMasses 58 2.38528 insert jpsiwidth:MinimumMasses 59 2.62986 insert jpsiwidth:MinimumMasses 60 2.62459 insert jpsiwidth:MinimumMasses 61 2.63069 insert jpsiwidth:MinimumMasses 62 2.44462 insert jpsiwidth:MinimumMasses 63 2.62529 insert jpsiwidth:MinimumMasses 64 2.4433 insert jpsiwidth:MinimumMasses 65 2.62986 insert jpsiwidth:MinimumMasses 66 2.62459 insert jpsiwidth:MinimumMasses 67 2.78631 insert jpsiwidth:MinimumMasses 68 2.77663 insert jpsiwidth:MinimumMasses 69 2.78631 insert jpsiwidth:MinimumMasses 70 2.77663 insert jpsiwidth:MinimumMasses 71 2.64262 insert jpsiwidth:MinimumMasses 72 2.62966 insert jpsiwidth:MinimumMasses 73 1.4798 insert jpsiwidth:MinimumMasses 74 1.4798 insert jpsiwidth:MinimumMasses 75 1.4798 insert jpsiwidth:MinimumMasses 76 1.06907 insert jpsiwidth:MinimumMasses 77 1.06907 insert jpsiwidth:MinimumMasses 78 1.06448 insert jpsiwidth:MinimumMasses 79 0.01 insert jpsiwidth:MinimumMasses 80 0.001022 insert jpsiwidth:MinimumMasses 81 0.95575 insert jpsiwidth:MinimumMasses 82 1.6535 insert jpsiwidth:MinimumMasses 83 1.33125 insert jpsiwidth:MinimumMasses 84 1.1543 insert jpsiwidth:MinimumMasses 85 1.302 insert jpsiwidth:MinimumMasses 86 0.547497 insert jpsiwidth:MinimumMasses 87 0.826637 insert jpsiwidth:MinimumMasses 88 0.817452 insert jpsiwidth:MinimumMasses 89 0.922997 insert jpsiwidth:MinimumMasses 90 2.7254 insert jpsiwidth:MinimumMasses 91 1.1518 insert jpsiwidth:MinimumMasses 92 1.84955 insert jpsiwidth:MinimumMasses 93 1.16 insert jpsiwidth:MinimumMasses 94 2.14946 insert jpsiwidth:MinimumMasses 95 1.18 insert jpsiwidth:MinimumMasses 96 1.307 insert jpsiwidth:MinimumMasses 97 2.00475 insert jpsiwidth:MinimumMasses 98 2.29646 insert jpsiwidth:MinimumMasses 99 1.40675 insert jpsiwidth:MinimumMasses 100 1.69846 insert jpsiwidth:MinimumMasses 101 1.0398 insert jpsiwidth:MinimumMasses 102 2.02926 insert jpsiwidth:MinimumMasses 103 2.2008 insert jpsiwidth:MinimumMasses 104 1.1004 insert jpsiwidth:MinimumMasses 105 1.79815 insert jpsiwidth:MinimumMasses 106 0 insert jpsiwidth:MinimumMasses 107 0 insert jpsiwidth:MinimumMasses 108 0.211317 insert jpsiwidth:MinimumMasses 109 2.83488 insert jpsiwidth:MinimumMasses 110 2.42663 insert jpsiwidth:MinimumMasses 111 1.87913 insert jpsiwidth:MinimumMasses 112 2.57688 insert jpsiwidth:MinimumMasses 113 2.86859 insert jpsiwidth:MinimumMasses 114 2.15827 insert jpsiwidth:MinimumMasses 115 2.01411 insert jpsiwidth:MinimumMasses 116 1.87913 insert jpsiwidth:MinimumMasses 117 1.24525 insert jpsiwidth:MinimumMasses 118 1.3955 insert jpsiwidth:MinimumMasses 119 1.25603 insert jpsiwidth:MinimumMasses 120 1.11187 insert jpsiwidth:MinimumMasses 121 0.97689 insert jpsiwidth:MinimumMasses 122 0.967705 insert jpsiwidth:MinimumMasses 123 0.832728 insert jpsiwidth:MinimumMasses 124 2.01741 insert jpsiwidth:MinimumMasses 125 2.83229 insert jpsiwidth:MinimumMasses 126 2.42404 insert jpsiwidth:MinimumMasses 127 1.87654 insert jpsiwidth:MinimumMasses 128 2.57429 insert jpsiwidth:MinimumMasses 129 2.866 insert jpsiwidth:MinimumMasses 130 2.29066 insert jpsiwidth:MinimumMasses 131 2.15568 insert jpsiwidth:MinimumMasses 132 2.01152 insert jpsiwidth:MinimumMasses 133 1.87654 insert jpsiwidth:MinimumMasses 134 2.01741 insert jpsiwidth:MinimumMasses 135 2.1248 insert jpsiwidth:MinimumMasses 136 2.1248 insert jpsiwidth:MinimumMasses 137 2.13311 insert jpsiwidth:MinimumMasses 138 2.13311 insert jpsiwidth:MinimumMasses 139 1.97681 insert jpsiwidth:MinimumMasses 140 1.98476 insert jpsiwidth:MinimumMasses 141 1.94521 insert jpsiwidth:MinimumMasses 142 1.53696 insert jpsiwidth:MinimumMasses 143 1.97892 insert jpsiwidth:MinimumMasses 144 1.54774 insert jpsiwidth:MinimumMasses 145 1.2686 insert jpsiwidth:MinimumMasses 146 0.558281 insert jpsiwidth:MinimumMasses 147 0.549096 insert jpsiwidth:MinimumMasses 148 0.414118 insert jpsiwidth:MinimumMasses 149 0.27914 insert jpsiwidth:MinimumMasses 150 0.134978 insert jpsiwidth:MinimumMasses 151 0.51507 insert jpsiwidth:MinimumMasses 152 0.751 insert jpsiwidth:MinimumMasses 153 0.51507 insert jpsiwidth:MinimumMasses 154 0.510478 insert jpsiwidth:MinimumMasses 155 0.751 insert jpsiwidth:MinimumMasses 156 0.19 insert jpsiwidth:MinimumMasses 157 0.0046 insert jpsiwidth:MEmass1 0 0 insert jpsiwidth:MEmass1 1 0 insert jpsiwidth:MEmass1 2 0 insert jpsiwidth:MEmass1 3 0 insert jpsiwidth:MEmass1 4 1.402 insert jpsiwidth:MEmass1 5 1.402 insert jpsiwidth:MEmass1 6 1.402 insert jpsiwidth:MEmass1 7 1.402 insert jpsiwidth:MEmass1 8 0 insert jpsiwidth:MEmass1 9 0 insert jpsiwidth:MEmass1 10 0.89166 insert jpsiwidth:MEmass1 11 0 insert jpsiwidth:MEmass1 12 0.89166 insert jpsiwidth:MEmass1 13 0 insert jpsiwidth:MEmass1 14 0 insert jpsiwidth:MEmass1 15 0.896 insert jpsiwidth:MEmass1 16 0 insert jpsiwidth:MEmass1 17 0 insert jpsiwidth:MEmass1 18 0 insert jpsiwidth:MEmass1 19 0 insert jpsiwidth:MEmass1 20 0 insert jpsiwidth:MEmass1 21 0.896 insert jpsiwidth:MEmass1 22 0 insert jpsiwidth:MEmass1 23 0 insert jpsiwidth:MEmass1 24 0.493677 insert jpsiwidth:MEmass1 25 0 insert jpsiwidth:MEmass1 26 0.497648 insert jpsiwidth:MEmass1 27 0 insert jpsiwidth:MEmass1 28 1.11568 insert jpsiwidth:MEmass1 29 0 insert jpsiwidth:MEmass1 30 0 insert jpsiwidth:MEmass1 31 0 insert jpsiwidth:MEmass1 32 0 insert jpsiwidth:MEmass1 33 0 insert jpsiwidth:MEmass1 34 0 insert jpsiwidth:MEmass1 35 0 insert jpsiwidth:MEmass1 36 0 insert jpsiwidth:MEmass1 37 0 insert jpsiwidth:MEmass1 38 0 insert jpsiwidth:MEmass1 39 0 insert jpsiwidth:MEmass1 40 0 insert jpsiwidth:MEmass1 41 0 insert jpsiwidth:MEmass1 42 0 insert jpsiwidth:MEmass1 43 0 insert jpsiwidth:MEmass1 44 0 insert jpsiwidth:MEmass1 45 0 insert jpsiwidth:MEmass1 46 0 insert jpsiwidth:MEmass1 47 0 insert jpsiwidth:MEmass1 48 0 insert jpsiwidth:MEmass1 49 0 insert jpsiwidth:MEmass1 50 0 insert jpsiwidth:MEmass1 51 0 insert jpsiwidth:MEmass1 52 0 insert jpsiwidth:MEmass1 53 1.18937 insert jpsiwidth:MEmass1 54 0 insert jpsiwidth:MEmass1 55 1.19745 insert jpsiwidth:MEmass1 56 0 insert jpsiwidth:MEmass1 57 0 insert jpsiwidth:MEmass1 58 1.19264 insert jpsiwidth:MEmass1 59 0 insert jpsiwidth:MEmass1 60 0 insert jpsiwidth:MEmass1 61 0 insert jpsiwidth:MEmass1 62 0 insert jpsiwidth:MEmass1 63 0 insert jpsiwidth:MEmass1 64 0 insert jpsiwidth:MEmass1 65 0 insert jpsiwidth:MEmass1 66 0 insert jpsiwidth:MEmass1 67 0 insert jpsiwidth:MEmass1 68 0 insert jpsiwidth:MEmass1 69 0 insert jpsiwidth:MEmass1 70 0 insert jpsiwidth:MEmass1 71 1.32131 insert jpsiwidth:MEmass1 72 1.31483 insert jpsiwidth:MEmass1 73 0 insert jpsiwidth:MEmass1 74 0 insert jpsiwidth:MEmass1 75 0 insert jpsiwidth:MEmass1 76 1.2295 insert jpsiwidth:MEmass1 77 1.2295 insert jpsiwidth:MEmass1 78 1.2295 insert jpsiwidth:MEmass1 79 0 insert jpsiwidth:MEmass1 80 0.000510999 insert jpsiwidth:MEmass1 81 0 insert jpsiwidth:MEmass1 82 0.78265 insert jpsiwidth:MEmass1 83 0.7755 insert jpsiwidth:MEmass1 84 0 insert jpsiwidth:MEmass1 85 0 insert jpsiwidth:MEmass1 86 0 insert jpsiwidth:MEmass1 87 0 insert jpsiwidth:MEmass1 88 0 insert jpsiwidth:MEmass1 89 0.7755 insert jpsiwidth:MEmass1 90 0 insert jpsiwidth:MEmass1 91 0 insert jpsiwidth:MEmass1 92 0 insert jpsiwidth:MEmass1 93 0 insert jpsiwidth:MEmass1 94 0 insert jpsiwidth:MEmass1 95 0 insert jpsiwidth:MEmass1 96 0 insert jpsiwidth:MEmass1 97 0.78265 insert jpsiwidth:MEmass1 98 1.01946 insert jpsiwidth:MEmass1 99 0.78265 insert jpsiwidth:MEmass1 100 1.01946 insert jpsiwidth:MEmass1 101 0 insert jpsiwidth:MEmass1 102 0 insert jpsiwidth:MEmass1 103 0 insert jpsiwidth:MEmass1 104 0 insert jpsiwidth:MEmass1 105 0 insert jpsiwidth:MEmass1 106 0 insert jpsiwidth:MEmass1 107 0 insert jpsiwidth:MEmass1 108 0.105658 insert jpsiwidth:MEmass1 109 0 insert jpsiwidth:MEmass1 110 0 insert jpsiwidth:MEmass1 111 0 insert jpsiwidth:MEmass1 112 0 insert jpsiwidth:MEmass1 113 0 insert jpsiwidth:MEmass1 114 0 insert jpsiwidth:MEmass1 115 0 insert jpsiwidth:MEmass1 116 0.939565 insert jpsiwidth:MEmass1 117 0.78265 insert jpsiwidth:MEmass1 118 0 insert jpsiwidth:MEmass1 119 0 insert jpsiwidth:MEmass1 120 0 insert jpsiwidth:MEmass1 121 0 insert jpsiwidth:MEmass1 122 0 insert jpsiwidth:MEmass1 123 0.78265 insert jpsiwidth:MEmass1 124 0 insert jpsiwidth:MEmass1 125 0 insert jpsiwidth:MEmass1 126 0 insert jpsiwidth:MEmass1 127 0 insert jpsiwidth:MEmass1 128 0 insert jpsiwidth:MEmass1 129 0 insert jpsiwidth:MEmass1 130 0 insert jpsiwidth:MEmass1 131 0 insert jpsiwidth:MEmass1 132 0 insert jpsiwidth:MEmass1 133 0.938272 insert jpsiwidth:MEmass1 134 0 insert jpsiwidth:MEmass1 135 0 insert jpsiwidth:MEmass1 136 0 insert jpsiwidth:MEmass1 137 0 insert jpsiwidth:MEmass1 138 0 insert jpsiwidth:MEmass1 139 0 insert jpsiwidth:MEmass1 140 0 insert jpsiwidth:MEmass1 141 1.01946 insert jpsiwidth:MEmass1 142 1.01946 insert jpsiwidth:MEmass1 143 0 insert jpsiwidth:MEmass1 144 0 insert jpsiwidth:MEmass1 145 0 insert jpsiwidth:MEmass1 146 0 insert jpsiwidth:MEmass1 147 0 insert jpsiwidth:MEmass1 148 0 insert jpsiwidth:MEmass1 149 0.13957 insert jpsiwidth:MEmass1 150 0 insert jpsiwidth:MEmass1 151 0.7755 insert jpsiwidth:MEmass1 152 0 insert jpsiwidth:MEmass1 153 0.7755 insert jpsiwidth:MEmass1 154 0.7755 insert jpsiwidth:MEmass1 155 0 insert jpsiwidth:MEmass1 156 0 insert jpsiwidth:MEmass1 157 0 insert jpsiwidth:MEmass2 0 0 insert jpsiwidth:MEmass2 1 0 insert jpsiwidth:MEmass2 2 0 insert jpsiwidth:MEmass2 3 0 insert jpsiwidth:MEmass2 4 0.493677 insert jpsiwidth:MEmass2 5 0.493677 insert jpsiwidth:MEmass2 6 0.497648 insert jpsiwidth:MEmass2 7 0.497648 insert jpsiwidth:MEmass2 8 0 insert jpsiwidth:MEmass2 9 0 insert jpsiwidth:MEmass2 10 0.493677 insert jpsiwidth:MEmass2 11 0 insert jpsiwidth:MEmass2 12 0.493677 insert jpsiwidth:MEmass2 13 0 insert jpsiwidth:MEmass2 14 0 insert jpsiwidth:MEmass2 15 0.497648 insert jpsiwidth:MEmass2 16 0 insert jpsiwidth:MEmass2 17 0 insert jpsiwidth:MEmass2 18 0 insert jpsiwidth:MEmass2 19 0 insert jpsiwidth:MEmass2 20 0 insert jpsiwidth:MEmass2 21 0.497648 insert jpsiwidth:MEmass2 22 0 insert jpsiwidth:MEmass2 23 0 insert jpsiwidth:MEmass2 24 0.493677 insert jpsiwidth:MEmass2 25 0 insert jpsiwidth:MEmass2 26 0.497648 insert jpsiwidth:MEmass2 27 0 insert jpsiwidth:MEmass2 28 1.11568 insert jpsiwidth:MEmass2 29 0 insert jpsiwidth:MEmass2 30 0 insert jpsiwidth:MEmass2 31 0 insert jpsiwidth:MEmass2 32 0 insert jpsiwidth:MEmass2 33 0 insert jpsiwidth:MEmass2 34 0 insert jpsiwidth:MEmass2 35 0 insert jpsiwidth:MEmass2 36 0 insert jpsiwidth:MEmass2 37 0 insert jpsiwidth:MEmass2 38 0 insert jpsiwidth:MEmass2 39 0 insert jpsiwidth:MEmass2 40 0 insert jpsiwidth:MEmass2 41 0 insert jpsiwidth:MEmass2 42 0 insert jpsiwidth:MEmass2 43 0 insert jpsiwidth:MEmass2 44 0 insert jpsiwidth:MEmass2 45 0 insert jpsiwidth:MEmass2 46 0 insert jpsiwidth:MEmass2 47 0 insert jpsiwidth:MEmass2 48 0 insert jpsiwidth:MEmass2 49 0 insert jpsiwidth:MEmass2 50 0 insert jpsiwidth:MEmass2 51 0 insert jpsiwidth:MEmass2 52 0 insert jpsiwidth:MEmass2 53 1.18937 insert jpsiwidth:MEmass2 54 0 insert jpsiwidth:MEmass2 55 1.19745 insert jpsiwidth:MEmass2 56 0 insert jpsiwidth:MEmass2 57 0 insert jpsiwidth:MEmass2 58 1.19264 insert jpsiwidth:MEmass2 59 0 insert jpsiwidth:MEmass2 60 0 insert jpsiwidth:MEmass2 61 0 insert jpsiwidth:MEmass2 62 0 insert jpsiwidth:MEmass2 63 0 insert jpsiwidth:MEmass2 64 0 insert jpsiwidth:MEmass2 65 0 insert jpsiwidth:MEmass2 66 0 insert jpsiwidth:MEmass2 67 0 insert jpsiwidth:MEmass2 68 0 insert jpsiwidth:MEmass2 69 0 insert jpsiwidth:MEmass2 70 0 insert jpsiwidth:MEmass2 71 1.32131 insert jpsiwidth:MEmass2 72 1.31483 insert jpsiwidth:MEmass2 73 0 insert jpsiwidth:MEmass2 74 0 insert jpsiwidth:MEmass2 75 0 insert jpsiwidth:MEmass2 76 0.13957 insert jpsiwidth:MEmass2 77 0.13957 insert jpsiwidth:MEmass2 78 0.134978 insert jpsiwidth:MEmass2 79 0 insert jpsiwidth:MEmass2 80 0.000510999 insert jpsiwidth:MEmass2 81 0.95778 insert jpsiwidth:MEmass2 82 0.95778 insert jpsiwidth:MEmass2 83 0.95778 insert jpsiwidth:MEmass2 84 0 insert jpsiwidth:MEmass2 85 0 insert jpsiwidth:MEmass2 86 0.54751 insert jpsiwidth:MEmass2 87 0 insert jpsiwidth:MEmass2 88 0 insert jpsiwidth:MEmass2 89 0.54751 insert jpsiwidth:MEmass2 90 2.9804 insert jpsiwidth:MEmass2 91 0 insert jpsiwidth:MEmass2 92 0 insert jpsiwidth:MEmass2 93 0 insert jpsiwidth:MEmass2 94 0 insert jpsiwidth:MEmass2 95 1.507 insert jpsiwidth:MEmass2 96 1.718 insert jpsiwidth:MEmass2 97 1.718 insert jpsiwidth:MEmass2 98 1.718 insert jpsiwidth:MEmass2 99 0.965 insert jpsiwidth:MEmass2 100 0.965 insert jpsiwidth:MEmass2 101 0 insert jpsiwidth:MEmass2 102 0 insert jpsiwidth:MEmass2 103 0 insert jpsiwidth:MEmass2 104 0 insert jpsiwidth:MEmass2 105 0 insert jpsiwidth:MEmass2 106 0 insert jpsiwidth:MEmass2 107 0 insert jpsiwidth:MEmass2 108 0.105658 insert jpsiwidth:MEmass2 109 0 insert jpsiwidth:MEmass2 110 0 insert jpsiwidth:MEmass2 111 0 insert jpsiwidth:MEmass2 112 0 insert jpsiwidth:MEmass2 113 0 insert jpsiwidth:MEmass2 114 0 insert jpsiwidth:MEmass2 115 0 insert jpsiwidth:MEmass2 116 0.939565 insert jpsiwidth:MEmass2 117 0.54751 insert jpsiwidth:MEmass2 118 0 insert jpsiwidth:MEmass2 119 0 insert jpsiwidth:MEmass2 120 0 insert jpsiwidth:MEmass2 121 0 insert jpsiwidth:MEmass2 122 0 insert jpsiwidth:MEmass2 123 0.134978 insert jpsiwidth:MEmass2 124 0 insert jpsiwidth:MEmass2 125 0 insert jpsiwidth:MEmass2 126 0 insert jpsiwidth:MEmass2 127 0 insert jpsiwidth:MEmass2 128 0 insert jpsiwidth:MEmass2 129 0 insert jpsiwidth:MEmass2 130 0 insert jpsiwidth:MEmass2 131 0 insert jpsiwidth:MEmass2 132 0 insert jpsiwidth:MEmass2 133 0.938272 insert jpsiwidth:MEmass2 134 0 insert jpsiwidth:MEmass2 135 0 insert jpsiwidth:MEmass2 136 0 insert jpsiwidth:MEmass2 137 0 insert jpsiwidth:MEmass2 138 0 insert jpsiwidth:MEmass2 139 0 insert jpsiwidth:MEmass2 140 0 insert jpsiwidth:MEmass2 141 0.95778 insert jpsiwidth:MEmass2 142 0.54751 insert jpsiwidth:MEmass2 143 0 insert jpsiwidth:MEmass2 144 0 insert jpsiwidth:MEmass2 145 0 insert jpsiwidth:MEmass2 146 0 insert jpsiwidth:MEmass2 147 0 insert jpsiwidth:MEmass2 148 0 insert jpsiwidth:MEmass2 149 0.13957 insert jpsiwidth:MEmass2 150 0.134978 insert jpsiwidth:MEmass2 151 0.13957 insert jpsiwidth:MEmass2 152 0 insert jpsiwidth:MEmass2 153 0.13957 insert jpsiwidth:MEmass2 154 0.134978 insert jpsiwidth:MEmass2 155 0 insert jpsiwidth:MEmass2 156 0 insert jpsiwidth:MEmass2 157 0 insert jpsiwidth:DecayModes 0 Jpsi->Delta++,Deltabar--; insert jpsiwidth:DecayModes 1 Jpsi->Delta+,Deltabar-; insert jpsiwidth:DecayModes 2 Jpsi->Delta-,Deltabar+; insert jpsiwidth:DecayModes 3 Jpsi->Delta0,Deltabar0; insert jpsiwidth:DecayModes 4 Jpsi->K'_1+,K-; insert jpsiwidth:DecayModes 5 Jpsi->K'_1-,K+; insert jpsiwidth:DecayModes 6 Jpsi->K'_10,Kbar0; insert jpsiwidth:DecayModes 7 Jpsi->K'_1bar0,K0; insert jpsiwidth:DecayModes 8 Jpsi->K*+,K*-,gamma; insert jpsiwidth:DecayModes 9 Jpsi->K*+,K-,omega; insert jpsiwidth:DecayModes 10 Jpsi->K*+,K-; insert jpsiwidth:DecayModes 11 Jpsi->K*-,K+,omega; insert jpsiwidth:DecayModes 12 Jpsi->K*-,K+; insert jpsiwidth:DecayModes 13 Jpsi->K*0,K*bar0,gamma; insert jpsiwidth:DecayModes 14 Jpsi->K*0,Kbar0,omega; insert jpsiwidth:DecayModes 15 Jpsi->K*0,Kbar0; insert jpsiwidth:DecayModes 16 Jpsi->K*_2+,K*-; insert jpsiwidth:DecayModes 17 Jpsi->K*_2-,K*+; insert jpsiwidth:DecayModes 18 Jpsi->K*_20,K*bar0; insert jpsiwidth:DecayModes 19 Jpsi->K*_2bar0,K*0; insert jpsiwidth:DecayModes 20 Jpsi->K*bar0,K0,omega; insert jpsiwidth:DecayModes 21 Jpsi->K*bar0,K0; insert jpsiwidth:DecayModes 22 Jpsi->K+,K-,omega; insert jpsiwidth:DecayModes 23 Jpsi->K+,K-,pi+,pi-,gamma; insert jpsiwidth:DecayModes 24 Jpsi->K+,K-; insert jpsiwidth:DecayModes 25 Jpsi->K0,Kbar0,omega; insert jpsiwidth:DecayModes 26 Jpsi->K_S0,K_L0; insert jpsiwidth:DecayModes 27 Jpsi->Lambda0,Lambdabar0,pi0; insert jpsiwidth:DecayModes 28 Jpsi->Lambda0,Lambdabar0; insert jpsiwidth:DecayModes 29 Jpsi->Lambda0,Sigmabar+,pi-; insert jpsiwidth:DecayModes 30 Jpsi->Lambda0,nbar0,K0; insert jpsiwidth:DecayModes 31 Jpsi->Lambda0,pbar-,K+; insert jpsiwidth:DecayModes 32 Jpsi->Lambdabar0,Sigma-,pi+; insert jpsiwidth:DecayModes 33 Jpsi->Lambdabar0,n0,Kbar0; insert jpsiwidth:DecayModes 34 Jpsi->Lambdabar0,p+,K-; insert jpsiwidth:DecayModes 35 Jpsi->Sigma*+,Sigma*bar-; insert jpsiwidth:DecayModes 36 Jpsi->Sigma*+,Sigmabar-; insert jpsiwidth:DecayModes 37 Jpsi->Sigma*+,pbar-,K0; insert jpsiwidth:DecayModes 38 Jpsi->Sigma*-,Sigma*bar+; insert jpsiwidth:DecayModes 39 Jpsi->Sigma*-,Sigmabar+; insert jpsiwidth:DecayModes 40 Jpsi->Sigma*-,nbar0,K+; insert jpsiwidth:DecayModes 41 Jpsi->Sigma*0,Sigma*bar0; insert jpsiwidth:DecayModes 42 Jpsi->Sigma*0,Sigmabar0; insert jpsiwidth:DecayModes 43 Jpsi->Sigma*0,nbar0,K0; insert jpsiwidth:DecayModes 44 Jpsi->Sigma*0,pbar-,K+; insert jpsiwidth:DecayModes 45 Jpsi->Sigma*bar+,Sigma-; insert jpsiwidth:DecayModes 46 Jpsi->Sigma*bar+,n0,K-; insert jpsiwidth:DecayModes 47 Jpsi->Sigma*bar-,Sigma+; insert jpsiwidth:DecayModes 48 Jpsi->Sigma*bar-,p+,Kbar0; insert jpsiwidth:DecayModes 49 Jpsi->Sigma*bar0,Sigma0; insert jpsiwidth:DecayModes 50 Jpsi->Sigma*bar0,n0,Kbar0; insert jpsiwidth:DecayModes 51 Jpsi->Sigma*bar0,p+,K-; insert jpsiwidth:DecayModes 52 Jpsi->Sigma+,Lambdabar0,pi-; insert jpsiwidth:DecayModes 53 Jpsi->Sigma+,Sigmabar-; insert jpsiwidth:DecayModes 54 Jpsi->Sigma+,pbar-,K0; insert jpsiwidth:DecayModes 55 Jpsi->Sigma-,Sigmabar+; insert jpsiwidth:DecayModes 56 Jpsi->Sigma-,nbar0,K+; insert jpsiwidth:DecayModes 57 Jpsi->Sigma0,Lambdabar0,pi0; insert jpsiwidth:DecayModes 58 Jpsi->Sigma0,Sigmabar0; insert jpsiwidth:DecayModes 59 Jpsi->Sigma0,nbar0,K0; insert jpsiwidth:DecayModes 60 Jpsi->Sigma0,pbar-,K+; insert jpsiwidth:DecayModes 61 Jpsi->Sigmabar+,n0,K-; insert jpsiwidth:DecayModes 62 Jpsi->Sigmabar-,Lambda0,pi+; insert jpsiwidth:DecayModes 63 Jpsi->Sigmabar-,p+,Kbar0; insert jpsiwidth:DecayModes 64 Jpsi->Sigmabar0,Lambda0,pi0; insert jpsiwidth:DecayModes 65 Jpsi->Sigmabar0,n0,Kbar0; insert jpsiwidth:DecayModes 66 Jpsi->Sigmabar0,p+,K-; insert jpsiwidth:DecayModes 67 Jpsi->Xi*-,Xibar+; insert jpsiwidth:DecayModes 68 Jpsi->Xi*0,Xibar0; insert jpsiwidth:DecayModes 69 Jpsi->Xi*bar+,Xi-; insert jpsiwidth:DecayModes 70 Jpsi->Xi*bar0,Xi0; insert jpsiwidth:DecayModes 71 Jpsi->Xi-,Xibar+; insert jpsiwidth:DecayModes 72 Jpsi->Xi0,Xibar0; insert jpsiwidth:DecayModes 73 Jpsi->a_2+,rho-; insert jpsiwidth:DecayModes 74 Jpsi->a_2-,rho+; insert jpsiwidth:DecayModes 75 Jpsi->a_20,rho0; insert jpsiwidth:DecayModes 76 Jpsi->b_1+,pi-; insert jpsiwidth:DecayModes 77 Jpsi->b_1-,pi+; insert jpsiwidth:DecayModes 78 Jpsi->b_10,pi0; insert jpsiwidth:DecayModes 79 Jpsi->d,dbar; insert jpsiwidth:DecayModes 80 Jpsi->e-,e+; insert jpsiwidth:DecayModes 81 Jpsi->eta',gamma; insert jpsiwidth:DecayModes 82 Jpsi->eta',omega; insert jpsiwidth:DecayModes 83 Jpsi->eta',rho0; insert jpsiwidth:DecayModes 84 Jpsi->eta(1405),gamma; insert jpsiwidth:DecayModes 85 Jpsi->eta(1475),gamma; insert jpsiwidth:DecayModes 86 Jpsi->eta,gamma; insert jpsiwidth:DecayModes 87 Jpsi->eta,pi+,pi-,gamma; insert jpsiwidth:DecayModes 88 Jpsi->eta,pi0,pi0,gamma; insert jpsiwidth:DecayModes 89 Jpsi->eta,rho0; insert jpsiwidth:DecayModes 90 Jpsi->eta_c,gamma; insert jpsiwidth:DecayModes 91 Jpsi->f'_1,gamma; insert jpsiwidth:DecayModes 92 Jpsi->f'_1,omega; insert jpsiwidth:DecayModes 93 Jpsi->f'_2,gamma; insert jpsiwidth:DecayModes 94 Jpsi->f'_2,phi; insert jpsiwidth:DecayModes 95 Jpsi->f_0(1500),gamma; insert jpsiwidth:DecayModes 96 Jpsi->f_0(1710),gamma; insert jpsiwidth:DecayModes 97 Jpsi->f_0(1710),omega; insert jpsiwidth:DecayModes 98 Jpsi->f_0(1710),phi; insert jpsiwidth:DecayModes 99 Jpsi->f_0,omega; insert jpsiwidth:DecayModes 100 Jpsi->f_0,phi; insert jpsiwidth:DecayModes 101 Jpsi->f_1,gamma; insert jpsiwidth:DecayModes 102 Jpsi->f_1,phi; insert jpsiwidth:DecayModes 103 Jpsi->f_2,f_2,gamma; insert jpsiwidth:DecayModes 104 Jpsi->f_2,gamma; insert jpsiwidth:DecayModes 105 Jpsi->f_2,omega; insert jpsiwidth:DecayModes 106 Jpsi->g,g,g; insert jpsiwidth:DecayModes 107 Jpsi->gamma,g,g; insert jpsiwidth:DecayModes 108 Jpsi->mu-,mu+; insert jpsiwidth:DecayModes 109 Jpsi->n0,nbar0,eta'; insert jpsiwidth:DecayModes 110 Jpsi->n0,nbar0,eta; insert jpsiwidth:DecayModes 111 Jpsi->n0,nbar0,gamma; insert jpsiwidth:DecayModes 112 Jpsi->n0,nbar0,omega; insert jpsiwidth:DecayModes 113 Jpsi->n0,nbar0,phi; insert jpsiwidth:DecayModes 114 Jpsi->n0,nbar0,pi+,pi-; insert jpsiwidth:DecayModes 115 Jpsi->n0,nbar0,pi0; insert jpsiwidth:DecayModes 116 Jpsi->n0,nbar0; insert jpsiwidth:DecayModes 117 Jpsi->omega,eta; insert jpsiwidth:DecayModes 118 Jpsi->omega,omega,gamma; insert jpsiwidth:DecayModes 119 Jpsi->omega,pi+,pi+,pi-,pi-; insert jpsiwidth:DecayModes 120 Jpsi->omega,pi+,pi-,pi0; insert jpsiwidth:DecayModes 121 Jpsi->omega,pi+,pi-; insert jpsiwidth:DecayModes 122 Jpsi->omega,pi0,pi0; insert jpsiwidth:DecayModes 123 Jpsi->omega,pi0; insert jpsiwidth:DecayModes 124 Jpsi->p+,nbar0,pi-; insert jpsiwidth:DecayModes 125 Jpsi->p+,pbar-,eta'; insert jpsiwidth:DecayModes 126 Jpsi->p+,pbar-,eta; insert jpsiwidth:DecayModes 127 Jpsi->p+,pbar-,gamma; insert jpsiwidth:DecayModes 128 Jpsi->p+,pbar-,omega; insert jpsiwidth:DecayModes 129 Jpsi->p+,pbar-,phi; insert jpsiwidth:DecayModes 130 Jpsi->p+,pbar-,pi+,pi-,pi0; insert jpsiwidth:DecayModes 131 Jpsi->p+,pbar-,pi+,pi-; insert jpsiwidth:DecayModes 132 Jpsi->p+,pbar-,pi0; insert jpsiwidth:DecayModes 133 Jpsi->p+,pbar-; insert jpsiwidth:DecayModes 134 Jpsi->pbar-,n0,pi+; insert jpsiwidth:DecayModes 135 Jpsi->phi,K*+,K-; insert jpsiwidth:DecayModes 136 Jpsi->phi,K*-,K+; insert jpsiwidth:DecayModes 137 Jpsi->phi,K*0,Kbar0; insert jpsiwidth:DecayModes 138 Jpsi->phi,K*bar0,K0; insert jpsiwidth:DecayModes 139 Jpsi->phi,K+,K-; insert jpsiwidth:DecayModes 140 Jpsi->phi,K0,Kbar0; insert jpsiwidth:DecayModes 141 Jpsi->phi,eta'; insert jpsiwidth:DecayModes 142 Jpsi->phi,eta; insert jpsiwidth:DecayModes 143 Jpsi->phi,phi,gamma; insert jpsiwidth:DecayModes 144 Jpsi->phi,pi+,pi+,pi-,pi-; insert jpsiwidth:DecayModes 145 Jpsi->phi,pi+,pi-; insert jpsiwidth:DecayModes 146 Jpsi->pi+,pi+,pi-,pi-,gamma; insert jpsiwidth:DecayModes 147 Jpsi->pi+,pi-,pi0,pi0,gamma; insert jpsiwidth:DecayModes 148 Jpsi->pi+,pi-,pi0; insert jpsiwidth:DecayModes 149 Jpsi->pi+,pi-; insert jpsiwidth:DecayModes 150 Jpsi->pi0,gamma; insert jpsiwidth:DecayModes 151 Jpsi->rho+,pi-; insert jpsiwidth:DecayModes 152 Jpsi->rho+,rho-,gamma; insert jpsiwidth:DecayModes 153 Jpsi->rho-,pi+; insert jpsiwidth:DecayModes 154 Jpsi->rho0,pi0; insert jpsiwidth:DecayModes 155 Jpsi->rho0,rho0,gamma; insert jpsiwidth:DecayModes 156 Jpsi->s,sbar; insert jpsiwidth:DecayModes 157 Jpsi->u,ubar; insert jpsiwidth:InterpolationMasses 0 3.0959058 insert jpsiwidth:InterpolationMasses 1 3.0959439 insert jpsiwidth:InterpolationMasses 2 3.095982 insert jpsiwidth:InterpolationMasses 3 3.0960201 insert jpsiwidth:InterpolationMasses 4 3.0960582 insert jpsiwidth:InterpolationMasses 5 3.0960964 insert jpsiwidth:InterpolationMasses 6 3.0961345 insert jpsiwidth:InterpolationMasses 7 3.0961726 insert jpsiwidth:InterpolationMasses 8 3.0962107 insert jpsiwidth:InterpolationMasses 9 3.0962489 insert jpsiwidth:InterpolationMasses 10 3.096287 insert jpsiwidth:InterpolationMasses 11 3.0963251 insert jpsiwidth:InterpolationMasses 12 3.0963632 insert jpsiwidth:InterpolationMasses 13 3.0964013 insert jpsiwidth:InterpolationMasses 14 3.0964395 insert jpsiwidth:InterpolationMasses 15 3.0964776 insert jpsiwidth:InterpolationMasses 16 3.0965157 insert jpsiwidth:InterpolationMasses 17 3.0965538 insert jpsiwidth:InterpolationMasses 18 3.096592 insert jpsiwidth:InterpolationMasses 19 3.0966301 insert jpsiwidth:InterpolationMasses 20 3.0966682 insert jpsiwidth:InterpolationMasses 21 3.0967063 insert jpsiwidth:InterpolationMasses 22 3.0967444 insert jpsiwidth:InterpolationMasses 23 3.0967826 insert jpsiwidth:InterpolationMasses 24 3.0968207 insert jpsiwidth:InterpolationMasses 25 3.0968588 insert jpsiwidth:InterpolationMasses 26 3.0968969 insert jpsiwidth:InterpolationMasses 27 3.0969351 insert jpsiwidth:InterpolationMasses 28 3.0969732 insert jpsiwidth:InterpolationMasses 29 3.0970113 insert jpsiwidth:InterpolationMasses 30 3.0970494 insert jpsiwidth:InterpolationMasses 31 3.0970876 insert jpsiwidth:InterpolationMasses 32 3.0971257 insert jpsiwidth:InterpolationMasses 33 3.0971638 insert jpsiwidth:InterpolationMasses 34 3.0972019 insert jpsiwidth:InterpolationMasses 35 3.09724 insert jpsiwidth:InterpolationMasses 36 3.0972782 insert jpsiwidth:InterpolationMasses 37 3.0973163 insert jpsiwidth:InterpolationMasses 38 3.0973544 insert jpsiwidth:InterpolationMasses 39 3.0973925 insert jpsiwidth:InterpolationMasses 40 3.0974307 insert jpsiwidth:InterpolationMasses 41 3.0974688 insert jpsiwidth:InterpolationMasses 42 3.0975069 insert jpsiwidth:InterpolationMasses 43 3.097545 insert jpsiwidth:InterpolationMasses 44 3.0975831 insert jpsiwidth:InterpolationMasses 45 3.0976213 insert jpsiwidth:InterpolationMasses 46 3.0976594 insert jpsiwidth:InterpolationMasses 47 3.0976975 insert jpsiwidth:InterpolationMasses 48 3.0977356 insert jpsiwidth:InterpolationMasses 49 3.0977738 insert jpsiwidth:InterpolationMasses 50 3.0978119 insert jpsiwidth:InterpolationMasses 51 3.09785 insert jpsiwidth:InterpolationMasses 52 3.0978881 insert jpsiwidth:InterpolationMasses 53 3.0979262 insert jpsiwidth:InterpolationMasses 54 3.0959058 insert jpsiwidth:InterpolationMasses 55 3.0959439 insert jpsiwidth:InterpolationMasses 56 3.095982 insert jpsiwidth:InterpolationMasses 57 3.0960201 insert jpsiwidth:InterpolationMasses 58 3.0960582 insert jpsiwidth:InterpolationMasses 59 3.0960964 insert jpsiwidth:InterpolationMasses 60 3.0961345 insert jpsiwidth:InterpolationMasses 61 3.0961726 insert jpsiwidth:InterpolationMasses 62 3.0962107 insert jpsiwidth:InterpolationMasses 63 3.0962489 insert jpsiwidth:InterpolationMasses 64 3.096287 insert jpsiwidth:InterpolationMasses 65 3.0963251 insert jpsiwidth:InterpolationMasses 66 3.0963632 insert jpsiwidth:InterpolationMasses 67 3.0964013 insert jpsiwidth:InterpolationMasses 68 3.0964395 insert jpsiwidth:InterpolationMasses 69 3.0964776 insert jpsiwidth:InterpolationMasses 70 3.0965157 insert jpsiwidth:InterpolationMasses 71 3.0965538 insert jpsiwidth:InterpolationMasses 72 3.096592 insert jpsiwidth:InterpolationMasses 73 3.0966301 insert jpsiwidth:InterpolationMasses 74 3.0966682 insert jpsiwidth:InterpolationMasses 75 3.0967063 insert jpsiwidth:InterpolationMasses 76 3.0967444 insert jpsiwidth:InterpolationMasses 77 3.0967826 insert jpsiwidth:InterpolationMasses 78 3.0968207 insert jpsiwidth:InterpolationMasses 79 3.0968588 insert jpsiwidth:InterpolationMasses 80 3.0968969 insert jpsiwidth:InterpolationMasses 81 3.0969351 insert jpsiwidth:InterpolationMasses 82 3.0969732 insert jpsiwidth:InterpolationMasses 83 3.0970113 insert jpsiwidth:InterpolationMasses 84 3.0970494 insert jpsiwidth:InterpolationMasses 85 3.0970876 insert jpsiwidth:InterpolationMasses 86 3.0971257 insert jpsiwidth:InterpolationMasses 87 3.0971638 insert jpsiwidth:InterpolationMasses 88 3.0972019 insert jpsiwidth:InterpolationMasses 89 3.09724 insert jpsiwidth:InterpolationMasses 90 3.0972782 insert jpsiwidth:InterpolationMasses 91 3.0973163 insert jpsiwidth:InterpolationMasses 92 3.0973544 insert jpsiwidth:InterpolationMasses 93 3.0973925 insert jpsiwidth:InterpolationMasses 94 3.0974307 insert jpsiwidth:InterpolationMasses 95 3.0974688 insert jpsiwidth:InterpolationMasses 96 3.0975069 insert jpsiwidth:InterpolationMasses 97 3.097545 insert jpsiwidth:InterpolationMasses 98 3.0975831 insert jpsiwidth:InterpolationMasses 99 3.0976213 insert jpsiwidth:InterpolationMasses 100 3.0976594 insert jpsiwidth:InterpolationMasses 101 3.0976975 insert jpsiwidth:InterpolationMasses 102 3.0977356 insert jpsiwidth:InterpolationMasses 103 3.0977738 insert jpsiwidth:InterpolationMasses 104 3.0978119 insert jpsiwidth:InterpolationMasses 105 3.09785 insert jpsiwidth:InterpolationMasses 106 3.0978881 insert jpsiwidth:InterpolationMasses 107 3.0979262 insert jpsiwidth:InterpolationMasses 108 3.0959058 insert jpsiwidth:InterpolationMasses 109 3.0959439 insert jpsiwidth:InterpolationMasses 110 3.095982 insert jpsiwidth:InterpolationMasses 111 3.0960201 insert jpsiwidth:InterpolationMasses 112 3.0960582 insert jpsiwidth:InterpolationMasses 113 3.0960964 insert jpsiwidth:InterpolationMasses 114 3.0961345 insert jpsiwidth:InterpolationMasses 115 3.0961726 insert jpsiwidth:InterpolationMasses 116 3.0962107 insert jpsiwidth:InterpolationMasses 117 3.0962489 insert jpsiwidth:InterpolationMasses 118 3.096287 insert jpsiwidth:InterpolationMasses 119 3.0963251 insert jpsiwidth:InterpolationMasses 120 3.0963632 insert jpsiwidth:InterpolationMasses 121 3.0964013 insert jpsiwidth:InterpolationMasses 122 3.0964395 insert jpsiwidth:InterpolationMasses 123 3.0964776 insert jpsiwidth:InterpolationMasses 124 3.0965157 insert jpsiwidth:InterpolationMasses 125 3.0965538 insert jpsiwidth:InterpolationMasses 126 3.096592 insert jpsiwidth:InterpolationMasses 127 3.0966301 insert jpsiwidth:InterpolationMasses 128 3.0966682 insert jpsiwidth:InterpolationMasses 129 3.0967063 insert jpsiwidth:InterpolationMasses 130 3.0967444 insert jpsiwidth:InterpolationMasses 131 3.0967826 insert jpsiwidth:InterpolationMasses 132 3.0968207 insert jpsiwidth:InterpolationMasses 133 3.0968588 insert jpsiwidth:InterpolationMasses 134 3.0968969 insert jpsiwidth:InterpolationMasses 135 3.0969351 insert jpsiwidth:InterpolationMasses 136 3.0969732 insert jpsiwidth:InterpolationMasses 137 3.0970113 insert jpsiwidth:InterpolationMasses 138 3.0970494 insert jpsiwidth:InterpolationMasses 139 3.0970876 insert jpsiwidth:InterpolationMasses 140 3.0971257 insert jpsiwidth:InterpolationMasses 141 3.0971638 insert jpsiwidth:InterpolationMasses 142 3.0972019 insert jpsiwidth:InterpolationMasses 143 3.09724 insert jpsiwidth:InterpolationMasses 144 3.0972782 insert jpsiwidth:InterpolationMasses 145 3.0973163 insert jpsiwidth:InterpolationMasses 146 3.0973544 insert jpsiwidth:InterpolationMasses 147 3.0973925 insert jpsiwidth:InterpolationMasses 148 3.0974307 insert jpsiwidth:InterpolationMasses 149 3.0974688 insert jpsiwidth:InterpolationMasses 150 3.0975069 insert jpsiwidth:InterpolationMasses 151 3.097545 insert jpsiwidth:InterpolationMasses 152 3.0975831 insert jpsiwidth:InterpolationMasses 153 3.0976213 insert jpsiwidth:InterpolationMasses 154 3.0976594 insert jpsiwidth:InterpolationMasses 155 3.0976975 insert jpsiwidth:InterpolationMasses 156 3.0977356 insert jpsiwidth:InterpolationMasses 157 3.0977738 insert jpsiwidth:InterpolationMasses 158 3.0978119 insert jpsiwidth:InterpolationMasses 159 3.09785 insert jpsiwidth:InterpolationMasses 160 3.0978881 insert jpsiwidth:InterpolationMasses 161 3.0979262 insert jpsiwidth:InterpolationMasses 162 3.0959058 insert jpsiwidth:InterpolationMasses 163 3.0959439 insert jpsiwidth:InterpolationMasses 164 3.095982 insert jpsiwidth:InterpolationMasses 165 3.0960201 insert jpsiwidth:InterpolationMasses 166 3.0960582 insert jpsiwidth:InterpolationMasses 167 3.0960964 insert jpsiwidth:InterpolationMasses 168 3.0961345 insert jpsiwidth:InterpolationMasses 169 3.0961726 insert jpsiwidth:InterpolationMasses 170 3.0962107 insert jpsiwidth:InterpolationMasses 171 3.0962489 insert jpsiwidth:InterpolationMasses 172 3.096287 insert jpsiwidth:InterpolationMasses 173 3.0963251 insert jpsiwidth:InterpolationMasses 174 3.0963632 insert jpsiwidth:InterpolationMasses 175 3.0964013 insert jpsiwidth:InterpolationMasses 176 3.0964395 insert jpsiwidth:InterpolationMasses 177 3.0964776 insert jpsiwidth:InterpolationMasses 178 3.0965157 insert jpsiwidth:InterpolationMasses 179 3.0965538 insert jpsiwidth:InterpolationMasses 180 3.096592 insert jpsiwidth:InterpolationMasses 181 3.0966301 insert jpsiwidth:InterpolationMasses 182 3.0966682 insert jpsiwidth:InterpolationMasses 183 3.0967063 insert jpsiwidth:InterpolationMasses 184 3.0967444 insert jpsiwidth:InterpolationMasses 185 3.0967826 insert jpsiwidth:InterpolationMasses 186 3.0968207 insert jpsiwidth:InterpolationMasses 187 3.0968588 insert jpsiwidth:InterpolationMasses 188 3.0968969 insert jpsiwidth:InterpolationMasses 189 3.0969351 insert jpsiwidth:InterpolationMasses 190 3.0969732 insert jpsiwidth:InterpolationMasses 191 3.0970113 insert jpsiwidth:InterpolationMasses 192 3.0970494 insert jpsiwidth:InterpolationMasses 193 3.0970876 insert jpsiwidth:InterpolationMasses 194 3.0971257 insert jpsiwidth:InterpolationMasses 195 3.0971638 insert jpsiwidth:InterpolationMasses 196 3.0972019 insert jpsiwidth:InterpolationMasses 197 3.09724 insert jpsiwidth:InterpolationMasses 198 3.0972782 insert jpsiwidth:InterpolationMasses 199 3.0973163 insert jpsiwidth:InterpolationMasses 200 3.0973544 insert jpsiwidth:InterpolationMasses 201 3.0973925 insert jpsiwidth:InterpolationMasses 202 3.0974307 insert jpsiwidth:InterpolationMasses 203 3.0974688 insert jpsiwidth:InterpolationMasses 204 3.0975069 insert jpsiwidth:InterpolationMasses 205 3.097545 insert jpsiwidth:InterpolationMasses 206 3.0975831 insert jpsiwidth:InterpolationMasses 207 3.0976213 insert jpsiwidth:InterpolationMasses 208 3.0976594 insert jpsiwidth:InterpolationMasses 209 3.0976975 insert jpsiwidth:InterpolationMasses 210 3.0977356 insert jpsiwidth:InterpolationMasses 211 3.0977738 insert jpsiwidth:InterpolationMasses 212 3.0978119 insert jpsiwidth:InterpolationMasses 213 3.09785 insert jpsiwidth:InterpolationMasses 214 3.0978881 insert jpsiwidth:InterpolationMasses 215 3.0979262 insert jpsiwidth:InterpolationMasses 216 3.0959058 insert jpsiwidth:InterpolationMasses 217 3.0959439 insert jpsiwidth:InterpolationMasses 218 3.095982 insert jpsiwidth:InterpolationMasses 219 3.0960201 insert jpsiwidth:InterpolationMasses 220 3.0960582 insert jpsiwidth:InterpolationMasses 221 3.0960964 insert jpsiwidth:InterpolationMasses 222 3.0961345 insert jpsiwidth:InterpolationMasses 223 3.0961726 insert jpsiwidth:InterpolationMasses 224 3.0962107 insert jpsiwidth:InterpolationMasses 225 3.0962489 insert jpsiwidth:InterpolationMasses 226 3.096287 insert jpsiwidth:InterpolationMasses 227 3.0963251 insert jpsiwidth:InterpolationMasses 228 3.0963632 insert jpsiwidth:InterpolationMasses 229 3.0964013 insert jpsiwidth:InterpolationMasses 230 3.0964395 insert jpsiwidth:InterpolationMasses 231 3.0964776 insert jpsiwidth:InterpolationMasses 232 3.0965157 insert jpsiwidth:InterpolationMasses 233 3.0965538 insert jpsiwidth:InterpolationMasses 234 3.096592 insert jpsiwidth:InterpolationMasses 235 3.0966301 insert jpsiwidth:InterpolationMasses 236 3.0966682 insert jpsiwidth:InterpolationMasses 237 3.0967063 insert jpsiwidth:InterpolationMasses 238 3.0967444 insert jpsiwidth:InterpolationMasses 239 3.0967826 insert jpsiwidth:InterpolationMasses 240 3.0968207 insert jpsiwidth:InterpolationMasses 241 3.0968588 insert jpsiwidth:InterpolationMasses 242 3.0968969 insert jpsiwidth:InterpolationMasses 243 3.0969351 insert jpsiwidth:InterpolationMasses 244 3.0969732 insert jpsiwidth:InterpolationMasses 245 3.0970113 insert jpsiwidth:InterpolationMasses 246 3.0970494 insert jpsiwidth:InterpolationMasses 247 3.0970876 insert jpsiwidth:InterpolationMasses 248 3.0971257 insert jpsiwidth:InterpolationMasses 249 3.0971638 insert jpsiwidth:InterpolationMasses 250 3.0972019 insert jpsiwidth:InterpolationMasses 251 3.09724 insert jpsiwidth:InterpolationMasses 252 3.0972782 insert jpsiwidth:InterpolationMasses 253 3.0973163 insert jpsiwidth:InterpolationMasses 254 3.0973544 insert jpsiwidth:InterpolationMasses 255 3.0973925 insert jpsiwidth:InterpolationMasses 256 3.0974307 insert jpsiwidth:InterpolationMasses 257 3.0974688 insert jpsiwidth:InterpolationMasses 258 3.0975069 insert jpsiwidth:InterpolationMasses 259 3.097545 insert jpsiwidth:InterpolationMasses 260 3.0975831 insert jpsiwidth:InterpolationMasses 261 3.0976213 insert jpsiwidth:InterpolationMasses 262 3.0976594 insert jpsiwidth:InterpolationMasses 263 3.0976975 insert jpsiwidth:InterpolationMasses 264 3.0977356 insert jpsiwidth:InterpolationMasses 265 3.0977738 insert jpsiwidth:InterpolationMasses 266 3.0978119 insert jpsiwidth:InterpolationMasses 267 3.09785 insert jpsiwidth:InterpolationMasses 268 3.0978881 insert jpsiwidth:InterpolationMasses 269 3.0979262 insert jpsiwidth:InterpolationMasses 270 3.0959058 insert jpsiwidth:InterpolationMasses 271 3.0959439 insert jpsiwidth:InterpolationMasses 272 3.095982 insert jpsiwidth:InterpolationMasses 273 3.0960201 insert jpsiwidth:InterpolationMasses 274 3.0960582 insert jpsiwidth:InterpolationMasses 275 3.0960964 insert jpsiwidth:InterpolationMasses 276 3.0961345 insert jpsiwidth:InterpolationMasses 277 3.0961726 insert jpsiwidth:InterpolationMasses 278 3.0962107 insert jpsiwidth:InterpolationMasses 279 3.0962489 insert jpsiwidth:InterpolationMasses 280 3.096287 insert jpsiwidth:InterpolationMasses 281 3.0963251 insert jpsiwidth:InterpolationMasses 282 3.0963632 insert jpsiwidth:InterpolationMasses 283 3.0964013 insert jpsiwidth:InterpolationMasses 284 3.0964395 insert jpsiwidth:InterpolationMasses 285 3.0964776 insert jpsiwidth:InterpolationMasses 286 3.0965157 insert jpsiwidth:InterpolationMasses 287 3.0965538 insert jpsiwidth:InterpolationMasses 288 3.096592 insert jpsiwidth:InterpolationMasses 289 3.0966301 insert jpsiwidth:InterpolationMasses 290 3.0966682 insert jpsiwidth:InterpolationMasses 291 3.0967063 insert jpsiwidth:InterpolationMasses 292 3.0967444 insert jpsiwidth:InterpolationMasses 293 3.0967826 insert jpsiwidth:InterpolationMasses 294 3.0968207 insert jpsiwidth:InterpolationMasses 295 3.0968588 insert jpsiwidth:InterpolationMasses 296 3.0968969 insert jpsiwidth:InterpolationMasses 297 3.0969351 insert jpsiwidth:InterpolationMasses 298 3.0969732 insert jpsiwidth:InterpolationMasses 299 3.0970113 insert jpsiwidth:InterpolationMasses 300 3.0970494 insert jpsiwidth:InterpolationMasses 301 3.0970876 insert jpsiwidth:InterpolationMasses 302 3.0971257 insert jpsiwidth:InterpolationMasses 303 3.0971638 insert jpsiwidth:InterpolationMasses 304 3.0972019 insert jpsiwidth:InterpolationMasses 305 3.09724 insert jpsiwidth:InterpolationMasses 306 3.0972782 insert jpsiwidth:InterpolationMasses 307 3.0973163 insert jpsiwidth:InterpolationMasses 308 3.0973544 insert jpsiwidth:InterpolationMasses 309 3.0973925 insert jpsiwidth:InterpolationMasses 310 3.0974307 insert jpsiwidth:InterpolationMasses 311 3.0974688 insert jpsiwidth:InterpolationMasses 312 3.0975069 insert jpsiwidth:InterpolationMasses 313 3.097545 insert jpsiwidth:InterpolationMasses 314 3.0975831 insert jpsiwidth:InterpolationMasses 315 3.0976213 insert jpsiwidth:InterpolationMasses 316 3.0976594 insert jpsiwidth:InterpolationMasses 317 3.0976975 insert jpsiwidth:InterpolationMasses 318 3.0977356 insert jpsiwidth:InterpolationMasses 319 3.0977738 insert jpsiwidth:InterpolationMasses 320 3.0978119 insert jpsiwidth:InterpolationMasses 321 3.09785 insert jpsiwidth:InterpolationMasses 322 3.0978881 insert jpsiwidth:InterpolationMasses 323 3.0979262 insert jpsiwidth:InterpolationMasses 324 3.0959058 insert jpsiwidth:InterpolationMasses 325 3.0959439 insert jpsiwidth:InterpolationMasses 326 3.095982 insert jpsiwidth:InterpolationMasses 327 3.0960201 insert jpsiwidth:InterpolationMasses 328 3.0960582 insert jpsiwidth:InterpolationMasses 329 3.0960964 insert jpsiwidth:InterpolationMasses 330 3.0961345 insert jpsiwidth:InterpolationMasses 331 3.0961726 insert jpsiwidth:InterpolationMasses 332 3.0962107 insert jpsiwidth:InterpolationMasses 333 3.0962489 insert jpsiwidth:InterpolationMasses 334 3.096287 insert jpsiwidth:InterpolationMasses 335 3.0963251 insert jpsiwidth:InterpolationMasses 336 3.0963632 insert jpsiwidth:InterpolationMasses 337 3.0964013 insert jpsiwidth:InterpolationMasses 338 3.0964395 insert jpsiwidth:InterpolationMasses 339 3.0964776 insert jpsiwidth:InterpolationMasses 340 3.0965157 insert jpsiwidth:InterpolationMasses 341 3.0965538 insert jpsiwidth:InterpolationMasses 342 3.096592 insert jpsiwidth:InterpolationMasses 343 3.0966301 insert jpsiwidth:InterpolationMasses 344 3.0966682 insert jpsiwidth:InterpolationMasses 345 3.0967063 insert jpsiwidth:InterpolationMasses 346 3.0967444 insert jpsiwidth:InterpolationMasses 347 3.0967826 insert jpsiwidth:InterpolationMasses 348 3.0968207 insert jpsiwidth:InterpolationMasses 349 3.0968588 insert jpsiwidth:InterpolationMasses 350 3.0968969 insert jpsiwidth:InterpolationMasses 351 3.0969351 insert jpsiwidth:InterpolationMasses 352 3.0969732 insert jpsiwidth:InterpolationMasses 353 3.0970113 insert jpsiwidth:InterpolationMasses 354 3.0970494 insert jpsiwidth:InterpolationMasses 355 3.0970876 insert jpsiwidth:InterpolationMasses 356 3.0971257 insert jpsiwidth:InterpolationMasses 357 3.0971638 insert jpsiwidth:InterpolationMasses 358 3.0972019 insert jpsiwidth:InterpolationMasses 359 3.09724 insert jpsiwidth:InterpolationMasses 360 3.0972782 insert jpsiwidth:InterpolationMasses 361 3.0973163 insert jpsiwidth:InterpolationMasses 362 3.0973544 insert jpsiwidth:InterpolationMasses 363 3.0973925 insert jpsiwidth:InterpolationMasses 364 3.0974307 insert jpsiwidth:InterpolationMasses 365 3.0974688 insert jpsiwidth:InterpolationMasses 366 3.0975069 insert jpsiwidth:InterpolationMasses 367 3.097545 insert jpsiwidth:InterpolationMasses 368 3.0975831 insert jpsiwidth:InterpolationMasses 369 3.0976213 insert jpsiwidth:InterpolationMasses 370 3.0976594 insert jpsiwidth:InterpolationMasses 371 3.0976975 insert jpsiwidth:InterpolationMasses 372 3.0977356 insert jpsiwidth:InterpolationMasses 373 3.0977738 insert jpsiwidth:InterpolationMasses 374 3.0978119 insert jpsiwidth:InterpolationMasses 375 3.09785 insert jpsiwidth:InterpolationMasses 376 3.0978881 insert jpsiwidth:InterpolationMasses 377 3.0979262 insert jpsiwidth:InterpolationMasses 378 3.0959058 insert jpsiwidth:InterpolationMasses 379 3.0959439 insert jpsiwidth:InterpolationMasses 380 3.095982 insert jpsiwidth:InterpolationMasses 381 3.0960201 insert jpsiwidth:InterpolationMasses 382 3.0960582 insert jpsiwidth:InterpolationMasses 383 3.0960964 insert jpsiwidth:InterpolationMasses 384 3.0961345 insert jpsiwidth:InterpolationMasses 385 3.0961726 insert jpsiwidth:InterpolationMasses 386 3.0962107 insert jpsiwidth:InterpolationMasses 387 3.0962489 insert jpsiwidth:InterpolationMasses 388 3.096287 insert jpsiwidth:InterpolationMasses 389 3.0963251 insert jpsiwidth:InterpolationMasses 390 3.0963632 insert jpsiwidth:InterpolationMasses 391 3.0964013 insert jpsiwidth:InterpolationMasses 392 3.0964395 insert jpsiwidth:InterpolationMasses 393 3.0964776 insert jpsiwidth:InterpolationMasses 394 3.0965157 insert jpsiwidth:InterpolationMasses 395 3.0965538 insert jpsiwidth:InterpolationMasses 396 3.096592 insert jpsiwidth:InterpolationMasses 397 3.0966301 insert jpsiwidth:InterpolationMasses 398 3.0966682 insert jpsiwidth:InterpolationMasses 399 3.0967063 insert jpsiwidth:InterpolationMasses 400 3.0967444 insert jpsiwidth:InterpolationMasses 401 3.0967826 insert jpsiwidth:InterpolationMasses 402 3.0968207 insert jpsiwidth:InterpolationMasses 403 3.0968588 insert jpsiwidth:InterpolationMasses 404 3.0968969 insert jpsiwidth:InterpolationMasses 405 3.0969351 insert jpsiwidth:InterpolationMasses 406 3.0969732 insert jpsiwidth:InterpolationMasses 407 3.0970113 insert jpsiwidth:InterpolationMasses 408 3.0970494 insert jpsiwidth:InterpolationMasses 409 3.0970876 insert jpsiwidth:InterpolationMasses 410 3.0971257 insert jpsiwidth:InterpolationMasses 411 3.0971638 insert jpsiwidth:InterpolationMasses 412 3.0972019 insert jpsiwidth:InterpolationMasses 413 3.09724 insert jpsiwidth:InterpolationMasses 414 3.0972782 insert jpsiwidth:InterpolationMasses 415 3.0973163 insert jpsiwidth:InterpolationMasses 416 3.0973544 insert jpsiwidth:InterpolationMasses 417 3.0973925 insert jpsiwidth:InterpolationMasses 418 3.0974307 insert jpsiwidth:InterpolationMasses 419 3.0974688 insert jpsiwidth:InterpolationMasses 420 3.0975069 insert jpsiwidth:InterpolationMasses 421 3.097545 insert jpsiwidth:InterpolationMasses 422 3.0975831 insert jpsiwidth:InterpolationMasses 423 3.0976213 insert jpsiwidth:InterpolationMasses 424 3.0976594 insert jpsiwidth:InterpolationMasses 425 3.0976975 insert jpsiwidth:InterpolationMasses 426 3.0977356 insert jpsiwidth:InterpolationMasses 427 3.0977738 insert jpsiwidth:InterpolationMasses 428 3.0978119 insert jpsiwidth:InterpolationMasses 429 3.09785 insert jpsiwidth:InterpolationMasses 430 3.0978881 insert jpsiwidth:InterpolationMasses 431 3.0979262 insert jpsiwidth:InterpolationMasses 432 3.0959058 insert jpsiwidth:InterpolationMasses 433 3.0959439 insert jpsiwidth:InterpolationMasses 434 3.095982 insert jpsiwidth:InterpolationMasses 435 3.0960201 insert jpsiwidth:InterpolationMasses 436 3.0960582 insert jpsiwidth:InterpolationMasses 437 3.0960964 insert jpsiwidth:InterpolationMasses 438 3.0961345 insert jpsiwidth:InterpolationMasses 439 3.0961726 insert jpsiwidth:InterpolationMasses 440 3.0962107 insert jpsiwidth:InterpolationMasses 441 3.0962489 insert jpsiwidth:InterpolationMasses 442 3.096287 insert jpsiwidth:InterpolationMasses 443 3.0963251 insert jpsiwidth:InterpolationMasses 444 3.0963632 insert jpsiwidth:InterpolationMasses 445 3.0964013 insert jpsiwidth:InterpolationMasses 446 3.0964395 insert jpsiwidth:InterpolationMasses 447 3.0964776 insert jpsiwidth:InterpolationMasses 448 3.0965157 insert jpsiwidth:InterpolationMasses 449 3.0965538 insert jpsiwidth:InterpolationMasses 450 3.096592 insert jpsiwidth:InterpolationMasses 451 3.0966301 insert jpsiwidth:InterpolationMasses 452 3.0966682 insert jpsiwidth:InterpolationMasses 453 3.0967063 insert jpsiwidth:InterpolationMasses 454 3.0967444 insert jpsiwidth:InterpolationMasses 455 3.0967826 insert jpsiwidth:InterpolationMasses 456 3.0968207 insert jpsiwidth:InterpolationMasses 457 3.0968588 insert jpsiwidth:InterpolationMasses 458 3.0968969 insert jpsiwidth:InterpolationMasses 459 3.0969351 insert jpsiwidth:InterpolationMasses 460 3.0969732 insert jpsiwidth:InterpolationMasses 461 3.0970113 insert jpsiwidth:InterpolationMasses 462 3.0970494 insert jpsiwidth:InterpolationMasses 463 3.0970876 insert jpsiwidth:InterpolationMasses 464 3.0971257 insert jpsiwidth:InterpolationMasses 465 3.0971638 insert jpsiwidth:InterpolationMasses 466 3.0972019 insert jpsiwidth:InterpolationMasses 467 3.09724 insert jpsiwidth:InterpolationMasses 468 3.0972782 insert jpsiwidth:InterpolationMasses 469 3.0973163 insert jpsiwidth:InterpolationMasses 470 3.0973544 insert jpsiwidth:InterpolationMasses 471 3.0973925 insert jpsiwidth:InterpolationMasses 472 3.0974307 insert jpsiwidth:InterpolationMasses 473 3.0974688 insert jpsiwidth:InterpolationMasses 474 3.0975069 insert jpsiwidth:InterpolationMasses 475 3.097545 insert jpsiwidth:InterpolationMasses 476 3.0975831 insert jpsiwidth:InterpolationMasses 477 3.0976213 insert jpsiwidth:InterpolationMasses 478 3.0976594 insert jpsiwidth:InterpolationMasses 479 3.0976975 insert jpsiwidth:InterpolationMasses 480 3.0977356 insert jpsiwidth:InterpolationMasses 481 3.0977738 insert jpsiwidth:InterpolationMasses 482 3.0978119 insert jpsiwidth:InterpolationMasses 483 3.09785 insert jpsiwidth:InterpolationMasses 484 3.0978881 insert jpsiwidth:InterpolationMasses 485 3.0979262 insert jpsiwidth:InterpolationMasses 486 3.0959058 insert jpsiwidth:InterpolationMasses 487 3.0959439 insert jpsiwidth:InterpolationMasses 488 3.095982 insert jpsiwidth:InterpolationMasses 489 3.0960201 insert jpsiwidth:InterpolationMasses 490 3.0960582 insert jpsiwidth:InterpolationMasses 491 3.0960964 insert jpsiwidth:InterpolationMasses 492 3.0961345 insert jpsiwidth:InterpolationMasses 493 3.0961726 insert jpsiwidth:InterpolationMasses 494 3.0962107 insert jpsiwidth:InterpolationMasses 495 3.0962489 insert jpsiwidth:InterpolationMasses 496 3.096287 insert jpsiwidth:InterpolationMasses 497 3.0963251 insert jpsiwidth:InterpolationMasses 498 3.0963632 insert jpsiwidth:InterpolationMasses 499 3.0964013 insert jpsiwidth:InterpolationMasses 500 3.0964395 insert jpsiwidth:InterpolationMasses 501 3.0964776 insert jpsiwidth:InterpolationMasses 502 3.0965157 insert jpsiwidth:InterpolationMasses 503 3.0965538 insert jpsiwidth:InterpolationMasses 504 3.096592 insert jpsiwidth:InterpolationMasses 505 3.0966301 insert jpsiwidth:InterpolationMasses 506 3.0966682 insert jpsiwidth:InterpolationMasses 507 3.0967063 insert jpsiwidth:InterpolationMasses 508 3.0967444 insert jpsiwidth:InterpolationMasses 509 3.0967826 insert jpsiwidth:InterpolationMasses 510 3.0968207 insert jpsiwidth:InterpolationMasses 511 3.0968588 insert jpsiwidth:InterpolationMasses 512 3.0968969 insert jpsiwidth:InterpolationMasses 513 3.0969351 insert jpsiwidth:InterpolationMasses 514 3.0969732 insert jpsiwidth:InterpolationMasses 515 3.0970113 insert jpsiwidth:InterpolationMasses 516 3.0970494 insert jpsiwidth:InterpolationMasses 517 3.0970876 insert jpsiwidth:InterpolationMasses 518 3.0971257 insert jpsiwidth:InterpolationMasses 519 3.0971638 insert jpsiwidth:InterpolationMasses 520 3.0972019 insert jpsiwidth:InterpolationMasses 521 3.09724 insert jpsiwidth:InterpolationMasses 522 3.0972782 insert jpsiwidth:InterpolationMasses 523 3.0973163 insert jpsiwidth:InterpolationMasses 524 3.0973544 insert jpsiwidth:InterpolationMasses 525 3.0973925 insert jpsiwidth:InterpolationMasses 526 3.0974307 insert jpsiwidth:InterpolationMasses 527 3.0974688 insert jpsiwidth:InterpolationMasses 528 3.0975069 insert jpsiwidth:InterpolationMasses 529 3.097545 insert jpsiwidth:InterpolationMasses 530 3.0975831 insert jpsiwidth:InterpolationMasses 531 3.0976213 insert jpsiwidth:InterpolationMasses 532 3.0976594 insert jpsiwidth:InterpolationMasses 533 3.0976975 insert jpsiwidth:InterpolationMasses 534 3.0977356 insert jpsiwidth:InterpolationMasses 535 3.0977738 insert jpsiwidth:InterpolationMasses 536 3.0978119 insert jpsiwidth:InterpolationMasses 537 3.09785 insert jpsiwidth:InterpolationMasses 538 3.0978881 insert jpsiwidth:InterpolationMasses 539 3.0979262 insert jpsiwidth:InterpolationMasses 540 3.0959058 insert jpsiwidth:InterpolationMasses 541 3.0959439 insert jpsiwidth:InterpolationMasses 542 3.095982 insert jpsiwidth:InterpolationMasses 543 3.0960201 insert jpsiwidth:InterpolationMasses 544 3.0960582 insert jpsiwidth:InterpolationMasses 545 3.0960964 insert jpsiwidth:InterpolationMasses 546 3.0961345 insert jpsiwidth:InterpolationMasses 547 3.0961726 insert jpsiwidth:InterpolationMasses 548 3.0962107 insert jpsiwidth:InterpolationMasses 549 3.0962489 insert jpsiwidth:InterpolationMasses 550 3.096287 insert jpsiwidth:InterpolationMasses 551 3.0963251 insert jpsiwidth:InterpolationMasses 552 3.0963632 insert jpsiwidth:InterpolationMasses 553 3.0964013 insert jpsiwidth:InterpolationMasses 554 3.0964395 insert jpsiwidth:InterpolationMasses 555 3.0964776 insert jpsiwidth:InterpolationMasses 556 3.0965157 insert jpsiwidth:InterpolationMasses 557 3.0965538 insert jpsiwidth:InterpolationMasses 558 3.096592 insert jpsiwidth:InterpolationMasses 559 3.0966301 insert jpsiwidth:InterpolationMasses 560 3.0966682 insert jpsiwidth:InterpolationMasses 561 3.0967063 insert jpsiwidth:InterpolationMasses 562 3.0967444 insert jpsiwidth:InterpolationMasses 563 3.0967826 insert jpsiwidth:InterpolationMasses 564 3.0968207 insert jpsiwidth:InterpolationMasses 565 3.0968588 insert jpsiwidth:InterpolationMasses 566 3.0968969 insert jpsiwidth:InterpolationMasses 567 3.0969351 insert jpsiwidth:InterpolationMasses 568 3.0969732 insert jpsiwidth:InterpolationMasses 569 3.0970113 insert jpsiwidth:InterpolationMasses 570 3.0970494 insert jpsiwidth:InterpolationMasses 571 3.0970876 insert jpsiwidth:InterpolationMasses 572 3.0971257 insert jpsiwidth:InterpolationMasses 573 3.0971638 insert jpsiwidth:InterpolationMasses 574 3.0972019 insert jpsiwidth:InterpolationMasses 575 3.09724 insert jpsiwidth:InterpolationMasses 576 3.0972782 insert jpsiwidth:InterpolationMasses 577 3.0973163 insert jpsiwidth:InterpolationMasses 578 3.0973544 insert jpsiwidth:InterpolationMasses 579 3.0973925 insert jpsiwidth:InterpolationMasses 580 3.0974307 insert jpsiwidth:InterpolationMasses 581 3.0974688 insert jpsiwidth:InterpolationMasses 582 3.0975069 insert jpsiwidth:InterpolationMasses 583 3.097545 insert jpsiwidth:InterpolationMasses 584 3.0975831 insert jpsiwidth:InterpolationMasses 585 3.0976213 insert jpsiwidth:InterpolationMasses 586 3.0976594 insert jpsiwidth:InterpolationMasses 587 3.0976975 insert jpsiwidth:InterpolationMasses 588 3.0977356 insert jpsiwidth:InterpolationMasses 589 3.0977738 insert jpsiwidth:InterpolationMasses 590 3.0978119 insert jpsiwidth:InterpolationMasses 591 3.09785 insert jpsiwidth:InterpolationMasses 592 3.0978881 insert jpsiwidth:InterpolationMasses 593 3.0979262 insert jpsiwidth:InterpolationMasses 594 3.0959058 insert jpsiwidth:InterpolationMasses 595 3.0959439 insert jpsiwidth:InterpolationMasses 596 3.095982 insert jpsiwidth:InterpolationMasses 597 3.0960201 insert jpsiwidth:InterpolationMasses 598 3.0960582 insert jpsiwidth:InterpolationMasses 599 3.0960964 insert jpsiwidth:InterpolationMasses 600 3.0961345 insert jpsiwidth:InterpolationMasses 601 3.0961726 insert jpsiwidth:InterpolationMasses 602 3.0962107 insert jpsiwidth:InterpolationMasses 603 3.0962489 insert jpsiwidth:InterpolationMasses 604 3.096287 insert jpsiwidth:InterpolationMasses 605 3.0963251 insert jpsiwidth:InterpolationMasses 606 3.0963632 insert jpsiwidth:InterpolationMasses 607 3.0964013 insert jpsiwidth:InterpolationMasses 608 3.0964395 insert jpsiwidth:InterpolationMasses 609 3.0964776 insert jpsiwidth:InterpolationMasses 610 3.0965157 insert jpsiwidth:InterpolationMasses 611 3.0965538 insert jpsiwidth:InterpolationMasses 612 3.096592 insert jpsiwidth:InterpolationMasses 613 3.0966301 insert jpsiwidth:InterpolationMasses 614 3.0966682 insert jpsiwidth:InterpolationMasses 615 3.0967063 insert jpsiwidth:InterpolationMasses 616 3.0967444 insert jpsiwidth:InterpolationMasses 617 3.0967826 insert jpsiwidth:InterpolationMasses 618 3.0968207 insert jpsiwidth:InterpolationMasses 619 3.0968588 insert jpsiwidth:InterpolationMasses 620 3.0968969 insert jpsiwidth:InterpolationMasses 621 3.0969351 insert jpsiwidth:InterpolationMasses 622 3.0969732 insert jpsiwidth:InterpolationMasses 623 3.0970113 insert jpsiwidth:InterpolationMasses 624 3.0970494 insert jpsiwidth:InterpolationMasses 625 3.0970876 insert jpsiwidth:InterpolationMasses 626 3.0971257 insert jpsiwidth:InterpolationMasses 627 3.0971638 insert jpsiwidth:InterpolationMasses 628 3.0972019 insert jpsiwidth:InterpolationMasses 629 3.09724 insert jpsiwidth:InterpolationMasses 630 3.0972782 insert jpsiwidth:InterpolationMasses 631 3.0973163 insert jpsiwidth:InterpolationMasses 632 3.0973544 insert jpsiwidth:InterpolationMasses 633 3.0973925 insert jpsiwidth:InterpolationMasses 634 3.0974307 insert jpsiwidth:InterpolationMasses 635 3.0974688 insert jpsiwidth:InterpolationMasses 636 3.0975069 insert jpsiwidth:InterpolationMasses 637 3.097545 insert jpsiwidth:InterpolationMasses 638 3.0975831 insert jpsiwidth:InterpolationMasses 639 3.0976213 insert jpsiwidth:InterpolationMasses 640 3.0976594 insert jpsiwidth:InterpolationMasses 641 3.0976975 insert jpsiwidth:InterpolationMasses 642 3.0977356 insert jpsiwidth:InterpolationMasses 643 3.0977738 insert jpsiwidth:InterpolationMasses 644 3.0978119 insert jpsiwidth:InterpolationMasses 645 3.09785 insert jpsiwidth:InterpolationMasses 646 3.0978881 insert jpsiwidth:InterpolationMasses 647 3.0979262 insert jpsiwidth:InterpolationMasses 648 3.0959058 insert jpsiwidth:InterpolationMasses 649 3.0959439 insert jpsiwidth:InterpolationMasses 650 3.095982 insert jpsiwidth:InterpolationMasses 651 3.0960201 insert jpsiwidth:InterpolationMasses 652 3.0960582 insert jpsiwidth:InterpolationMasses 653 3.0960964 insert jpsiwidth:InterpolationMasses 654 3.0961345 insert jpsiwidth:InterpolationMasses 655 3.0961726 insert jpsiwidth:InterpolationMasses 656 3.0962107 insert jpsiwidth:InterpolationMasses 657 3.0962489 insert jpsiwidth:InterpolationMasses 658 3.096287 insert jpsiwidth:InterpolationMasses 659 3.0963251 insert jpsiwidth:InterpolationMasses 660 3.0963632 insert jpsiwidth:InterpolationMasses 661 3.0964013 insert jpsiwidth:InterpolationMasses 662 3.0964395 insert jpsiwidth:InterpolationMasses 663 3.0964776 insert jpsiwidth:InterpolationMasses 664 3.0965157 insert jpsiwidth:InterpolationMasses 665 3.0965538 insert jpsiwidth:InterpolationMasses 666 3.096592 insert jpsiwidth:InterpolationMasses 667 3.0966301 insert jpsiwidth:InterpolationMasses 668 3.0966682 insert jpsiwidth:InterpolationMasses 669 3.0967063 insert jpsiwidth:InterpolationMasses 670 3.0967444 insert jpsiwidth:InterpolationMasses 671 3.0967826 insert jpsiwidth:InterpolationMasses 672 3.0968207 insert jpsiwidth:InterpolationMasses 673 3.0968588 insert jpsiwidth:InterpolationMasses 674 3.0968969 insert jpsiwidth:InterpolationMasses 675 3.0969351 insert jpsiwidth:InterpolationMasses 676 3.0969732 insert jpsiwidth:InterpolationMasses 677 3.0970113 insert jpsiwidth:InterpolationMasses 678 3.0970494 insert jpsiwidth:InterpolationMasses 679 3.0970876 insert jpsiwidth:InterpolationMasses 680 3.0971257 insert jpsiwidth:InterpolationMasses 681 3.0971638 insert jpsiwidth:InterpolationMasses 682 3.0972019 insert jpsiwidth:InterpolationMasses 683 3.09724 insert jpsiwidth:InterpolationMasses 684 3.0972782 insert jpsiwidth:InterpolationMasses 685 3.0973163 insert jpsiwidth:InterpolationMasses 686 3.0973544 insert jpsiwidth:InterpolationMasses 687 3.0973925 insert jpsiwidth:InterpolationMasses 688 3.0974307 insert jpsiwidth:InterpolationMasses 689 3.0974688 insert jpsiwidth:InterpolationMasses 690 3.0975069 insert jpsiwidth:InterpolationMasses 691 3.097545 insert jpsiwidth:InterpolationMasses 692 3.0975831 insert jpsiwidth:InterpolationMasses 693 3.0976213 insert jpsiwidth:InterpolationMasses 694 3.0976594 insert jpsiwidth:InterpolationMasses 695 3.0976975 insert jpsiwidth:InterpolationMasses 696 3.0977356 insert jpsiwidth:InterpolationMasses 697 3.0977738 insert jpsiwidth:InterpolationMasses 698 3.0978119 insert jpsiwidth:InterpolationMasses 699 3.09785 insert jpsiwidth:InterpolationMasses 700 3.0978881 insert jpsiwidth:InterpolationMasses 701 3.0979262 insert jpsiwidth:InterpolationMasses 702 3.0959058 insert jpsiwidth:InterpolationMasses 703 3.0959439 insert jpsiwidth:InterpolationMasses 704 3.095982 insert jpsiwidth:InterpolationMasses 705 3.0960201 insert jpsiwidth:InterpolationMasses 706 3.0960582 insert jpsiwidth:InterpolationMasses 707 3.0960964 insert jpsiwidth:InterpolationMasses 708 3.0961345 insert jpsiwidth:InterpolationMasses 709 3.0961726 insert jpsiwidth:InterpolationMasses 710 3.0962107 insert jpsiwidth:InterpolationMasses 711 3.0962489 insert jpsiwidth:InterpolationMasses 712 3.096287 insert jpsiwidth:InterpolationMasses 713 3.0963251 insert jpsiwidth:InterpolationMasses 714 3.0963632 insert jpsiwidth:InterpolationMasses 715 3.0964013 insert jpsiwidth:InterpolationMasses 716 3.0964395 insert jpsiwidth:InterpolationMasses 717 3.0964776 insert jpsiwidth:InterpolationMasses 718 3.0965157 insert jpsiwidth:InterpolationMasses 719 3.0965538 insert jpsiwidth:InterpolationMasses 720 3.096592 insert jpsiwidth:InterpolationMasses 721 3.0966301 insert jpsiwidth:InterpolationMasses 722 3.0966682 insert jpsiwidth:InterpolationMasses 723 3.0967063 insert jpsiwidth:InterpolationMasses 724 3.0967444 insert jpsiwidth:InterpolationMasses 725 3.0967826 insert jpsiwidth:InterpolationMasses 726 3.0968207 insert jpsiwidth:InterpolationMasses 727 3.0968588 insert jpsiwidth:InterpolationMasses 728 3.0968969 insert jpsiwidth:InterpolationMasses 729 3.0969351 insert jpsiwidth:InterpolationMasses 730 3.0969732 insert jpsiwidth:InterpolationMasses 731 3.0970113 insert jpsiwidth:InterpolationMasses 732 3.0970494 insert jpsiwidth:InterpolationMasses 733 3.0970876 insert jpsiwidth:InterpolationMasses 734 3.0971257 insert jpsiwidth:InterpolationMasses 735 3.0971638 insert jpsiwidth:InterpolationMasses 736 3.0972019 insert jpsiwidth:InterpolationMasses 737 3.09724 insert jpsiwidth:InterpolationMasses 738 3.0972782 insert jpsiwidth:InterpolationMasses 739 3.0973163 insert jpsiwidth:InterpolationMasses 740 3.0973544 insert jpsiwidth:InterpolationMasses 741 3.0973925 insert jpsiwidth:InterpolationMasses 742 3.0974307 insert jpsiwidth:InterpolationMasses 743 3.0974688 insert jpsiwidth:InterpolationMasses 744 3.0975069 insert jpsiwidth:InterpolationMasses 745 3.097545 insert jpsiwidth:InterpolationMasses 746 3.0975831 insert jpsiwidth:InterpolationMasses 747 3.0976213 insert jpsiwidth:InterpolationMasses 748 3.0976594 insert jpsiwidth:InterpolationMasses 749 3.0976975 insert jpsiwidth:InterpolationMasses 750 3.0977356 insert jpsiwidth:InterpolationMasses 751 3.0977738 insert jpsiwidth:InterpolationMasses 752 3.0978119 insert jpsiwidth:InterpolationMasses 753 3.09785 insert jpsiwidth:InterpolationMasses 754 3.0978881 insert jpsiwidth:InterpolationMasses 755 3.0979262 insert jpsiwidth:InterpolationMasses 756 3.0959058 insert jpsiwidth:InterpolationMasses 757 3.0959439 insert jpsiwidth:InterpolationMasses 758 3.095982 insert jpsiwidth:InterpolationMasses 759 3.0960201 insert jpsiwidth:InterpolationMasses 760 3.0960582 insert jpsiwidth:InterpolationMasses 761 3.0960964 insert jpsiwidth:InterpolationMasses 762 3.0961345 insert jpsiwidth:InterpolationMasses 763 3.0961726 insert jpsiwidth:InterpolationMasses 764 3.0962107 insert jpsiwidth:InterpolationMasses 765 3.0962489 insert jpsiwidth:InterpolationMasses 766 3.096287 insert jpsiwidth:InterpolationMasses 767 3.0963251 insert jpsiwidth:InterpolationMasses 768 3.0963632 insert jpsiwidth:InterpolationMasses 769 3.0964013 insert jpsiwidth:InterpolationMasses 770 3.0964395 insert jpsiwidth:InterpolationMasses 771 3.0964776 insert jpsiwidth:InterpolationMasses 772 3.0965157 insert jpsiwidth:InterpolationMasses 773 3.0965538 insert jpsiwidth:InterpolationMasses 774 3.096592 insert jpsiwidth:InterpolationMasses 775 3.0966301 insert jpsiwidth:InterpolationMasses 776 3.0966682 insert jpsiwidth:InterpolationMasses 777 3.0967063 insert jpsiwidth:InterpolationMasses 778 3.0967444 insert jpsiwidth:InterpolationMasses 779 3.0967826 insert jpsiwidth:InterpolationMasses 780 3.0968207 insert jpsiwidth:InterpolationMasses 781 3.0968588 insert jpsiwidth:InterpolationMasses 782 3.0968969 insert jpsiwidth:InterpolationMasses 783 3.0969351 insert jpsiwidth:InterpolationMasses 784 3.0969732 insert jpsiwidth:InterpolationMasses 785 3.0970113 insert jpsiwidth:InterpolationMasses 786 3.0970494 insert jpsiwidth:InterpolationMasses 787 3.0970876 insert jpsiwidth:InterpolationMasses 788 3.0971257 insert jpsiwidth:InterpolationMasses 789 3.0971638 insert jpsiwidth:InterpolationMasses 790 3.0972019 insert jpsiwidth:InterpolationMasses 791 3.09724 insert jpsiwidth:InterpolationMasses 792 3.0972782 insert jpsiwidth:InterpolationMasses 793 3.0973163 insert jpsiwidth:InterpolationMasses 794 3.0973544 insert jpsiwidth:InterpolationMasses 795 3.0973925 insert jpsiwidth:InterpolationMasses 796 3.0974307 insert jpsiwidth:InterpolationMasses 797 3.0974688 insert jpsiwidth:InterpolationMasses 798 3.0975069 insert jpsiwidth:InterpolationMasses 799 3.097545 insert jpsiwidth:InterpolationMasses 800 3.0975831 insert jpsiwidth:InterpolationMasses 801 3.0976213 insert jpsiwidth:InterpolationMasses 802 3.0976594 insert jpsiwidth:InterpolationMasses 803 3.0976975 insert jpsiwidth:InterpolationMasses 804 3.0977356 insert jpsiwidth:InterpolationMasses 805 3.0977738 insert jpsiwidth:InterpolationMasses 806 3.0978119 insert jpsiwidth:InterpolationMasses 807 3.09785 insert jpsiwidth:InterpolationMasses 808 3.0978881 insert jpsiwidth:InterpolationMasses 809 3.0979262 insert jpsiwidth:InterpolationMasses 810 3.0959058 insert jpsiwidth:InterpolationMasses 811 3.0959439 insert jpsiwidth:InterpolationMasses 812 3.095982 insert jpsiwidth:InterpolationMasses 813 3.0960201 insert jpsiwidth:InterpolationMasses 814 3.0960582 insert jpsiwidth:InterpolationMasses 815 3.0960964 insert jpsiwidth:InterpolationMasses 816 3.0961345 insert jpsiwidth:InterpolationMasses 817 3.0961726 insert jpsiwidth:InterpolationMasses 818 3.0962107 insert jpsiwidth:InterpolationMasses 819 3.0962489 insert jpsiwidth:InterpolationMasses 820 3.096287 insert jpsiwidth:InterpolationMasses 821 3.0963251 insert jpsiwidth:InterpolationMasses 822 3.0963632 insert jpsiwidth:InterpolationMasses 823 3.0964013 insert jpsiwidth:InterpolationMasses 824 3.0964395 insert jpsiwidth:InterpolationMasses 825 3.0964776 insert jpsiwidth:InterpolationMasses 826 3.0965157 insert jpsiwidth:InterpolationMasses 827 3.0965538 insert jpsiwidth:InterpolationMasses 828 3.096592 insert jpsiwidth:InterpolationMasses 829 3.0966301 insert jpsiwidth:InterpolationMasses 830 3.0966682 insert jpsiwidth:InterpolationMasses 831 3.0967063 insert jpsiwidth:InterpolationMasses 832 3.0967444 insert jpsiwidth:InterpolationMasses 833 3.0967826 insert jpsiwidth:InterpolationMasses 834 3.0968207 insert jpsiwidth:InterpolationMasses 835 3.0968588 insert jpsiwidth:InterpolationMasses 836 3.0968969 insert jpsiwidth:InterpolationMasses 837 3.0969351 insert jpsiwidth:InterpolationMasses 838 3.0969732 insert jpsiwidth:InterpolationMasses 839 3.0970113 insert jpsiwidth:InterpolationMasses 840 3.0970494 insert jpsiwidth:InterpolationMasses 841 3.0970876 insert jpsiwidth:InterpolationMasses 842 3.0971257 insert jpsiwidth:InterpolationMasses 843 3.0971638 insert jpsiwidth:InterpolationMasses 844 3.0972019 insert jpsiwidth:InterpolationMasses 845 3.09724 insert jpsiwidth:InterpolationMasses 846 3.0972782 insert jpsiwidth:InterpolationMasses 847 3.0973163 insert jpsiwidth:InterpolationMasses 848 3.0973544 insert jpsiwidth:InterpolationMasses 849 3.0973925 insert jpsiwidth:InterpolationMasses 850 3.0974307 insert jpsiwidth:InterpolationMasses 851 3.0974688 insert jpsiwidth:InterpolationMasses 852 3.0975069 insert jpsiwidth:InterpolationMasses 853 3.097545 insert jpsiwidth:InterpolationMasses 854 3.0975831 insert jpsiwidth:InterpolationMasses 855 3.0976213 insert jpsiwidth:InterpolationMasses 856 3.0976594 insert jpsiwidth:InterpolationMasses 857 3.0976975 insert jpsiwidth:InterpolationMasses 858 3.0977356 insert jpsiwidth:InterpolationMasses 859 3.0977738 insert jpsiwidth:InterpolationMasses 860 3.0978119 insert jpsiwidth:InterpolationMasses 861 3.09785 insert jpsiwidth:InterpolationMasses 862 3.0978881 insert jpsiwidth:InterpolationMasses 863 3.0979262 insert jpsiwidth:InterpolationMasses 864 3.0959058 insert jpsiwidth:InterpolationMasses 865 3.0959439 insert jpsiwidth:InterpolationMasses 866 3.095982 insert jpsiwidth:InterpolationMasses 867 3.0960201 insert jpsiwidth:InterpolationMasses 868 3.0960582 insert jpsiwidth:InterpolationMasses 869 3.0960964 insert jpsiwidth:InterpolationMasses 870 3.0961345 insert jpsiwidth:InterpolationMasses 871 3.0961726 insert jpsiwidth:InterpolationMasses 872 3.0962107 insert jpsiwidth:InterpolationMasses 873 3.0962489 insert jpsiwidth:InterpolationMasses 874 3.096287 insert jpsiwidth:InterpolationMasses 875 3.0963251 insert jpsiwidth:InterpolationMasses 876 3.0963632 insert jpsiwidth:InterpolationMasses 877 3.0964013 insert jpsiwidth:InterpolationMasses 878 3.0964395 insert jpsiwidth:InterpolationMasses 879 3.0964776 insert jpsiwidth:InterpolationMasses 880 3.0965157 insert jpsiwidth:InterpolationMasses 881 3.0965538 insert jpsiwidth:InterpolationMasses 882 3.096592 insert jpsiwidth:InterpolationMasses 883 3.0966301 insert jpsiwidth:InterpolationMasses 884 3.0966682 insert jpsiwidth:InterpolationMasses 885 3.0967063 insert jpsiwidth:InterpolationMasses 886 3.0967444 insert jpsiwidth:InterpolationMasses 887 3.0967826 insert jpsiwidth:InterpolationMasses 888 3.0968207 insert jpsiwidth:InterpolationMasses 889 3.0968588 insert jpsiwidth:InterpolationMasses 890 3.0968969 insert jpsiwidth:InterpolationMasses 891 3.0969351 insert jpsiwidth:InterpolationMasses 892 3.0969732 insert jpsiwidth:InterpolationMasses 893 3.0970113 insert jpsiwidth:InterpolationMasses 894 3.0970494 insert jpsiwidth:InterpolationMasses 895 3.0970876 insert jpsiwidth:InterpolationMasses 896 3.0971257 insert jpsiwidth:InterpolationMasses 897 3.0971638 insert jpsiwidth:InterpolationMasses 898 3.0972019 insert jpsiwidth:InterpolationMasses 899 3.09724 insert jpsiwidth:InterpolationMasses 900 3.0972782 insert jpsiwidth:InterpolationMasses 901 3.0973163 insert jpsiwidth:InterpolationMasses 902 3.0973544 insert jpsiwidth:InterpolationMasses 903 3.0973925 insert jpsiwidth:InterpolationMasses 904 3.0974307 insert jpsiwidth:InterpolationMasses 905 3.0974688 insert jpsiwidth:InterpolationMasses 906 3.0975069 insert jpsiwidth:InterpolationMasses 907 3.097545 insert jpsiwidth:InterpolationMasses 908 3.0975831 insert jpsiwidth:InterpolationMasses 909 3.0976213 insert jpsiwidth:InterpolationMasses 910 3.0976594 insert jpsiwidth:InterpolationMasses 911 3.0976975 insert jpsiwidth:InterpolationMasses 912 3.0977356 insert jpsiwidth:InterpolationMasses 913 3.0977738 insert jpsiwidth:InterpolationMasses 914 3.0978119 insert jpsiwidth:InterpolationMasses 915 3.09785 insert jpsiwidth:InterpolationMasses 916 3.0978881 insert jpsiwidth:InterpolationMasses 917 3.0979262 insert jpsiwidth:InterpolationMasses 918 3.0959058 insert jpsiwidth:InterpolationMasses 919 3.0959439 insert jpsiwidth:InterpolationMasses 920 3.095982 insert jpsiwidth:InterpolationMasses 921 3.0960201 insert jpsiwidth:InterpolationMasses 922 3.0960582 insert jpsiwidth:InterpolationMasses 923 3.0960964 insert jpsiwidth:InterpolationMasses 924 3.0961345 insert jpsiwidth:InterpolationMasses 925 3.0961726 insert jpsiwidth:InterpolationMasses 926 3.0962107 insert jpsiwidth:InterpolationMasses 927 3.0962489 insert jpsiwidth:InterpolationMasses 928 3.096287 insert jpsiwidth:InterpolationMasses 929 3.0963251 insert jpsiwidth:InterpolationMasses 930 3.0963632 insert jpsiwidth:InterpolationMasses 931 3.0964013 insert jpsiwidth:InterpolationMasses 932 3.0964395 insert jpsiwidth:InterpolationMasses 933 3.0964776 insert jpsiwidth:InterpolationMasses 934 3.0965157 insert jpsiwidth:InterpolationMasses 935 3.0965538 insert jpsiwidth:InterpolationMasses 936 3.096592 insert jpsiwidth:InterpolationMasses 937 3.0966301 insert jpsiwidth:InterpolationMasses 938 3.0966682 insert jpsiwidth:InterpolationMasses 939 3.0967063 insert jpsiwidth:InterpolationMasses 940 3.0967444 insert jpsiwidth:InterpolationMasses 941 3.0967826 insert jpsiwidth:InterpolationMasses 942 3.0968207 insert jpsiwidth:InterpolationMasses 943 3.0968588 insert jpsiwidth:InterpolationMasses 944 3.0968969 insert jpsiwidth:InterpolationMasses 945 3.0969351 insert jpsiwidth:InterpolationMasses 946 3.0969732 insert jpsiwidth:InterpolationMasses 947 3.0970113 insert jpsiwidth:InterpolationMasses 948 3.0970494 insert jpsiwidth:InterpolationMasses 949 3.0970876 insert jpsiwidth:InterpolationMasses 950 3.0971257 insert jpsiwidth:InterpolationMasses 951 3.0971638 insert jpsiwidth:InterpolationMasses 952 3.0972019 insert jpsiwidth:InterpolationMasses 953 3.09724 insert jpsiwidth:InterpolationMasses 954 3.0972782 insert jpsiwidth:InterpolationMasses 955 3.0973163 insert jpsiwidth:InterpolationMasses 956 3.0973544 insert jpsiwidth:InterpolationMasses 957 3.0973925 insert jpsiwidth:InterpolationMasses 958 3.0974307 insert jpsiwidth:InterpolationMasses 959 3.0974688 insert jpsiwidth:InterpolationMasses 960 3.0975069 insert jpsiwidth:InterpolationMasses 961 3.097545 insert jpsiwidth:InterpolationMasses 962 3.0975831 insert jpsiwidth:InterpolationMasses 963 3.0976213 insert jpsiwidth:InterpolationMasses 964 3.0976594 insert jpsiwidth:InterpolationMasses 965 3.0976975 insert jpsiwidth:InterpolationMasses 966 3.0977356 insert jpsiwidth:InterpolationMasses 967 3.0977738 insert jpsiwidth:InterpolationMasses 968 3.0978119 insert jpsiwidth:InterpolationMasses 969 3.09785 insert jpsiwidth:InterpolationMasses 970 3.0978881 insert jpsiwidth:InterpolationMasses 971 3.0979262 insert jpsiwidth:InterpolationMasses 972 3.0959058 insert jpsiwidth:InterpolationMasses 973 3.0959439 insert jpsiwidth:InterpolationMasses 974 3.095982 insert jpsiwidth:InterpolationMasses 975 3.0960201 insert jpsiwidth:InterpolationMasses 976 3.0960582 insert jpsiwidth:InterpolationMasses 977 3.0960964 insert jpsiwidth:InterpolationMasses 978 3.0961345 insert jpsiwidth:InterpolationMasses 979 3.0961726 insert jpsiwidth:InterpolationMasses 980 3.0962107 insert jpsiwidth:InterpolationMasses 981 3.0962489 insert jpsiwidth:InterpolationMasses 982 3.096287 insert jpsiwidth:InterpolationMasses 983 3.0963251 insert jpsiwidth:InterpolationMasses 984 3.0963632 insert jpsiwidth:InterpolationMasses 985 3.0964013 insert jpsiwidth:InterpolationMasses 986 3.0964395 insert jpsiwidth:InterpolationMasses 987 3.0964776 insert jpsiwidth:InterpolationMasses 988 3.0965157 insert jpsiwidth:InterpolationMasses 989 3.0965538 insert jpsiwidth:InterpolationMasses 990 3.096592 insert jpsiwidth:InterpolationMasses 991 3.0966301 insert jpsiwidth:InterpolationMasses 992 3.0966682 insert jpsiwidth:InterpolationMasses 993 3.0967063 insert jpsiwidth:InterpolationMasses 994 3.0967444 insert jpsiwidth:InterpolationMasses 995 3.0967826 insert jpsiwidth:InterpolationMasses 996 3.0968207 insert jpsiwidth:InterpolationMasses 997 3.0968588 insert jpsiwidth:InterpolationMasses 998 3.0968969 insert jpsiwidth:InterpolationMasses 999 3.0969351 insert jpsiwidth:InterpolationMasses 1000 3.0969732 insert jpsiwidth:InterpolationMasses 1001 3.0970113 insert jpsiwidth:InterpolationMasses 1002 3.0970494 insert jpsiwidth:InterpolationMasses 1003 3.0970876 insert jpsiwidth:InterpolationMasses 1004 3.0971257 insert jpsiwidth:InterpolationMasses 1005 3.0971638 insert jpsiwidth:InterpolationMasses 1006 3.0972019 insert jpsiwidth:InterpolationMasses 1007 3.09724 insert jpsiwidth:InterpolationMasses 1008 3.0972782 insert jpsiwidth:InterpolationMasses 1009 3.0973163 insert jpsiwidth:InterpolationMasses 1010 3.0973544 insert jpsiwidth:InterpolationMasses 1011 3.0973925 insert jpsiwidth:InterpolationMasses 1012 3.0974307 insert jpsiwidth:InterpolationMasses 1013 3.0974688 insert jpsiwidth:InterpolationMasses 1014 3.0975069 insert jpsiwidth:InterpolationMasses 1015 3.097545 insert jpsiwidth:InterpolationMasses 1016 3.0975831 insert jpsiwidth:InterpolationMasses 1017 3.0976213 insert jpsiwidth:InterpolationMasses 1018 3.0976594 insert jpsiwidth:InterpolationMasses 1019 3.0976975 insert jpsiwidth:InterpolationMasses 1020 3.0977356 insert jpsiwidth:InterpolationMasses 1021 3.0977738 insert jpsiwidth:InterpolationMasses 1022 3.0978119 insert jpsiwidth:InterpolationMasses 1023 3.09785 insert jpsiwidth:InterpolationMasses 1024 3.0978881 insert jpsiwidth:InterpolationMasses 1025 3.0979262 insert jpsiwidth:InterpolationMasses 1026 3.0959058 insert jpsiwidth:InterpolationMasses 1027 3.0959439 insert jpsiwidth:InterpolationMasses 1028 3.095982 insert jpsiwidth:InterpolationMasses 1029 3.0960201 insert jpsiwidth:InterpolationMasses 1030 3.0960582 insert jpsiwidth:InterpolationMasses 1031 3.0960964 insert jpsiwidth:InterpolationMasses 1032 3.0961345 insert jpsiwidth:InterpolationMasses 1033 3.0961726 insert jpsiwidth:InterpolationMasses 1034 3.0962107 insert jpsiwidth:InterpolationMasses 1035 3.0962489 insert jpsiwidth:InterpolationMasses 1036 3.096287 insert jpsiwidth:InterpolationMasses 1037 3.0963251 insert jpsiwidth:InterpolationMasses 1038 3.0963632 insert jpsiwidth:InterpolationMasses 1039 3.0964013 insert jpsiwidth:InterpolationMasses 1040 3.0964395 insert jpsiwidth:InterpolationMasses 1041 3.0964776 insert jpsiwidth:InterpolationMasses 1042 3.0965157 insert jpsiwidth:InterpolationMasses 1043 3.0965538 insert jpsiwidth:InterpolationMasses 1044 3.096592 insert jpsiwidth:InterpolationMasses 1045 3.0966301 insert jpsiwidth:InterpolationMasses 1046 3.0966682 insert jpsiwidth:InterpolationMasses 1047 3.0967063 insert jpsiwidth:InterpolationMasses 1048 3.0967444 insert jpsiwidth:InterpolationMasses 1049 3.0967826 insert jpsiwidth:InterpolationMasses 1050 3.0968207 insert jpsiwidth:InterpolationMasses 1051 3.0968588 insert jpsiwidth:InterpolationMasses 1052 3.0968969 insert jpsiwidth:InterpolationMasses 1053 3.0969351 insert jpsiwidth:InterpolationMasses 1054 3.0969732 insert jpsiwidth:InterpolationMasses 1055 3.0970113 insert jpsiwidth:InterpolationMasses 1056 3.0970494 insert jpsiwidth:InterpolationMasses 1057 3.0970876 insert jpsiwidth:InterpolationMasses 1058 3.0971257 insert jpsiwidth:InterpolationMasses 1059 3.0971638 insert jpsiwidth:InterpolationMasses 1060 3.0972019 insert jpsiwidth:InterpolationMasses 1061 3.09724 insert jpsiwidth:InterpolationMasses 1062 3.0972782 insert jpsiwidth:InterpolationMasses 1063 3.0973163 insert jpsiwidth:InterpolationMasses 1064 3.0973544 insert jpsiwidth:InterpolationMasses 1065 3.0973925 insert jpsiwidth:InterpolationMasses 1066 3.0974307 insert jpsiwidth:InterpolationMasses 1067 3.0974688 insert jpsiwidth:InterpolationMasses 1068 3.0975069 insert jpsiwidth:InterpolationMasses 1069 3.097545 insert jpsiwidth:InterpolationMasses 1070 3.0975831 insert jpsiwidth:InterpolationMasses 1071 3.0976213 insert jpsiwidth:InterpolationMasses 1072 3.0976594 insert jpsiwidth:InterpolationMasses 1073 3.0976975 insert jpsiwidth:InterpolationMasses 1074 3.0977356 insert jpsiwidth:InterpolationMasses 1075 3.0977738 insert jpsiwidth:InterpolationMasses 1076 3.0978119 insert jpsiwidth:InterpolationMasses 1077 3.09785 insert jpsiwidth:InterpolationMasses 1078 3.0978881 insert jpsiwidth:InterpolationMasses 1079 3.0979262 insert jpsiwidth:InterpolationMasses 1080 3.0959058 insert jpsiwidth:InterpolationMasses 1081 3.0959439 insert jpsiwidth:InterpolationMasses 1082 3.095982 insert jpsiwidth:InterpolationMasses 1083 3.0960201 insert jpsiwidth:InterpolationMasses 1084 3.0960582 insert jpsiwidth:InterpolationMasses 1085 3.0960964 insert jpsiwidth:InterpolationMasses 1086 3.0961345 insert jpsiwidth:InterpolationMasses 1087 3.0961726 insert jpsiwidth:InterpolationMasses 1088 3.0962107 insert jpsiwidth:InterpolationMasses 1089 3.0962489 insert jpsiwidth:InterpolationMasses 1090 3.096287 insert jpsiwidth:InterpolationMasses 1091 3.0963251 insert jpsiwidth:InterpolationMasses 1092 3.0963632 insert jpsiwidth:InterpolationMasses 1093 3.0964013 insert jpsiwidth:InterpolationMasses 1094 3.0964395 insert jpsiwidth:InterpolationMasses 1095 3.0964776 insert jpsiwidth:InterpolationMasses 1096 3.0965157 insert jpsiwidth:InterpolationMasses 1097 3.0965538 insert jpsiwidth:InterpolationMasses 1098 3.096592 insert jpsiwidth:InterpolationMasses 1099 3.0966301 insert jpsiwidth:InterpolationMasses 1100 3.0966682 insert jpsiwidth:InterpolationMasses 1101 3.0967063 insert jpsiwidth:InterpolationMasses 1102 3.0967444 insert jpsiwidth:InterpolationMasses 1103 3.0967826 insert jpsiwidth:InterpolationMasses 1104 3.0968207 insert jpsiwidth:InterpolationMasses 1105 3.0968588 insert jpsiwidth:InterpolationMasses 1106 3.0968969 insert jpsiwidth:InterpolationMasses 1107 3.0969351 insert jpsiwidth:InterpolationMasses 1108 3.0969732 insert jpsiwidth:InterpolationMasses 1109 3.0970113 insert jpsiwidth:InterpolationMasses 1110 3.0970494 insert jpsiwidth:InterpolationMasses 1111 3.0970876 insert jpsiwidth:InterpolationMasses 1112 3.0971257 insert jpsiwidth:InterpolationMasses 1113 3.0971638 insert jpsiwidth:InterpolationMasses 1114 3.0972019 insert jpsiwidth:InterpolationMasses 1115 3.09724 insert jpsiwidth:InterpolationMasses 1116 3.0972782 insert jpsiwidth:InterpolationMasses 1117 3.0973163 insert jpsiwidth:InterpolationMasses 1118 3.0973544 insert jpsiwidth:InterpolationMasses 1119 3.0973925 insert jpsiwidth:InterpolationMasses 1120 3.0974307 insert jpsiwidth:InterpolationMasses 1121 3.0974688 insert jpsiwidth:InterpolationMasses 1122 3.0975069 insert jpsiwidth:InterpolationMasses 1123 3.097545 insert jpsiwidth:InterpolationMasses 1124 3.0975831 insert jpsiwidth:InterpolationMasses 1125 3.0976213 insert jpsiwidth:InterpolationMasses 1126 3.0976594 insert jpsiwidth:InterpolationMasses 1127 3.0976975 insert jpsiwidth:InterpolationMasses 1128 3.0977356 insert jpsiwidth:InterpolationMasses 1129 3.0977738 insert jpsiwidth:InterpolationMasses 1130 3.0978119 insert jpsiwidth:InterpolationMasses 1131 3.09785 insert jpsiwidth:InterpolationMasses 1132 3.0978881 insert jpsiwidth:InterpolationMasses 1133 3.0979262 insert jpsiwidth:InterpolationMasses 1134 3.0959058 insert jpsiwidth:InterpolationMasses 1135 3.0959439 insert jpsiwidth:InterpolationMasses 1136 3.095982 insert jpsiwidth:InterpolationMasses 1137 3.0960201 insert jpsiwidth:InterpolationMasses 1138 3.0960582 insert jpsiwidth:InterpolationMasses 1139 3.0960964 insert jpsiwidth:InterpolationMasses 1140 3.0961345 insert jpsiwidth:InterpolationMasses 1141 3.0961726 insert jpsiwidth:InterpolationMasses 1142 3.0962107 insert jpsiwidth:InterpolationMasses 1143 3.0962489 insert jpsiwidth:InterpolationMasses 1144 3.096287 insert jpsiwidth:InterpolationMasses 1145 3.0963251 insert jpsiwidth:InterpolationMasses 1146 3.0963632 insert jpsiwidth:InterpolationMasses 1147 3.0964013 insert jpsiwidth:InterpolationMasses 1148 3.0964395 insert jpsiwidth:InterpolationMasses 1149 3.0964776 insert jpsiwidth:InterpolationMasses 1150 3.0965157 insert jpsiwidth:InterpolationMasses 1151 3.0965538 insert jpsiwidth:InterpolationMasses 1152 3.096592 insert jpsiwidth:InterpolationMasses 1153 3.0966301 insert jpsiwidth:InterpolationMasses 1154 3.0966682 insert jpsiwidth:InterpolationMasses 1155 3.0967063 insert jpsiwidth:InterpolationMasses 1156 3.0967444 insert jpsiwidth:InterpolationMasses 1157 3.0967826 insert jpsiwidth:InterpolationMasses 1158 3.0968207 insert jpsiwidth:InterpolationMasses 1159 3.0968588 insert jpsiwidth:InterpolationMasses 1160 3.0968969 insert jpsiwidth:InterpolationMasses 1161 3.0969351 insert jpsiwidth:InterpolationMasses 1162 3.0969732 insert jpsiwidth:InterpolationMasses 1163 3.0970113 insert jpsiwidth:InterpolationMasses 1164 3.0970494 insert jpsiwidth:InterpolationMasses 1165 3.0970876 insert jpsiwidth:InterpolationMasses 1166 3.0971257 insert jpsiwidth:InterpolationMasses 1167 3.0971638 insert jpsiwidth:InterpolationMasses 1168 3.0972019 insert jpsiwidth:InterpolationMasses 1169 3.09724 insert jpsiwidth:InterpolationMasses 1170 3.0972782 insert jpsiwidth:InterpolationMasses 1171 3.0973163 insert jpsiwidth:InterpolationMasses 1172 3.0973544 insert jpsiwidth:InterpolationMasses 1173 3.0973925 insert jpsiwidth:InterpolationMasses 1174 3.0974307 insert jpsiwidth:InterpolationMasses 1175 3.0974688 insert jpsiwidth:InterpolationMasses 1176 3.0975069 insert jpsiwidth:InterpolationMasses 1177 3.097545 insert jpsiwidth:InterpolationMasses 1178 3.0975831 insert jpsiwidth:InterpolationMasses 1179 3.0976213 insert jpsiwidth:InterpolationMasses 1180 3.0976594 insert jpsiwidth:InterpolationMasses 1181 3.0976975 insert jpsiwidth:InterpolationMasses 1182 3.0977356 insert jpsiwidth:InterpolationMasses 1183 3.0977738 insert jpsiwidth:InterpolationMasses 1184 3.0978119 insert jpsiwidth:InterpolationMasses 1185 3.09785 insert jpsiwidth:InterpolationMasses 1186 3.0978881 insert jpsiwidth:InterpolationMasses 1187 3.0979262 insert jpsiwidth:InterpolationMasses 1188 3.0959058 insert jpsiwidth:InterpolationMasses 1189 3.0959439 insert jpsiwidth:InterpolationMasses 1190 3.095982 insert jpsiwidth:InterpolationMasses 1191 3.0960201 insert jpsiwidth:InterpolationMasses 1192 3.0960582 insert jpsiwidth:InterpolationMasses 1193 3.0960964 insert jpsiwidth:InterpolationMasses 1194 3.0961345 insert jpsiwidth:InterpolationMasses 1195 3.0961726 insert jpsiwidth:InterpolationMasses 1196 3.0962107 insert jpsiwidth:InterpolationMasses 1197 3.0962489 insert jpsiwidth:InterpolationMasses 1198 3.096287 insert jpsiwidth:InterpolationMasses 1199 3.0963251 insert jpsiwidth:InterpolationMasses 1200 3.0963632 insert jpsiwidth:InterpolationMasses 1201 3.0964013 insert jpsiwidth:InterpolationMasses 1202 3.0964395 insert jpsiwidth:InterpolationMasses 1203 3.0964776 insert jpsiwidth:InterpolationMasses 1204 3.0965157 insert jpsiwidth:InterpolationMasses 1205 3.0965538 insert jpsiwidth:InterpolationMasses 1206 3.096592 insert jpsiwidth:InterpolationMasses 1207 3.0966301 insert jpsiwidth:InterpolationMasses 1208 3.0966682 insert jpsiwidth:InterpolationMasses 1209 3.0967063 insert jpsiwidth:InterpolationMasses 1210 3.0967444 insert jpsiwidth:InterpolationMasses 1211 3.0967826 insert jpsiwidth:InterpolationMasses 1212 3.0968207 insert jpsiwidth:InterpolationMasses 1213 3.0968588 insert jpsiwidth:InterpolationMasses 1214 3.0968969 insert jpsiwidth:InterpolationMasses 1215 3.0969351 insert jpsiwidth:InterpolationMasses 1216 3.0969732 insert jpsiwidth:InterpolationMasses 1217 3.0970113 insert jpsiwidth:InterpolationMasses 1218 3.0970494 insert jpsiwidth:InterpolationMasses 1219 3.0970876 insert jpsiwidth:InterpolationMasses 1220 3.0971257 insert jpsiwidth:InterpolationMasses 1221 3.0971638 insert jpsiwidth:InterpolationMasses 1222 3.0972019 insert jpsiwidth:InterpolationMasses 1223 3.09724 insert jpsiwidth:InterpolationMasses 1224 3.0972782 insert jpsiwidth:InterpolationMasses 1225 3.0973163 insert jpsiwidth:InterpolationMasses 1226 3.0973544 insert jpsiwidth:InterpolationMasses 1227 3.0973925 insert jpsiwidth:InterpolationMasses 1228 3.0974307 insert jpsiwidth:InterpolationMasses 1229 3.0974688 insert jpsiwidth:InterpolationMasses 1230 3.0975069 insert jpsiwidth:InterpolationMasses 1231 3.097545 insert jpsiwidth:InterpolationMasses 1232 3.0975831 insert jpsiwidth:InterpolationMasses 1233 3.0976213 insert jpsiwidth:InterpolationMasses 1234 3.0976594 insert jpsiwidth:InterpolationMasses 1235 3.0976975 insert jpsiwidth:InterpolationMasses 1236 3.0977356 insert jpsiwidth:InterpolationMasses 1237 3.0977738 insert jpsiwidth:InterpolationMasses 1238 3.0978119 insert jpsiwidth:InterpolationMasses 1239 3.09785 insert jpsiwidth:InterpolationMasses 1240 3.0978881 insert jpsiwidth:InterpolationMasses 1241 3.0979262 insert jpsiwidth:InterpolationMasses 1242 3.0959058 insert jpsiwidth:InterpolationMasses 1243 3.0959439 insert jpsiwidth:InterpolationMasses 1244 3.095982 insert jpsiwidth:InterpolationMasses 1245 3.0960201 insert jpsiwidth:InterpolationMasses 1246 3.0960582 insert jpsiwidth:InterpolationMasses 1247 3.0960964 insert jpsiwidth:InterpolationMasses 1248 3.0961345 insert jpsiwidth:InterpolationMasses 1249 3.0961726 insert jpsiwidth:InterpolationMasses 1250 3.0962107 insert jpsiwidth:InterpolationMasses 1251 3.0962489 insert jpsiwidth:InterpolationMasses 1252 3.096287 insert jpsiwidth:InterpolationMasses 1253 3.0963251 insert jpsiwidth:InterpolationMasses 1254 3.0963632 insert jpsiwidth:InterpolationMasses 1255 3.0964013 insert jpsiwidth:InterpolationMasses 1256 3.0964395 insert jpsiwidth:InterpolationMasses 1257 3.0964776 insert jpsiwidth:InterpolationMasses 1258 3.0965157 insert jpsiwidth:InterpolationMasses 1259 3.0965538 insert jpsiwidth:InterpolationMasses 1260 3.096592 insert jpsiwidth:InterpolationMasses 1261 3.0966301 insert jpsiwidth:InterpolationMasses 1262 3.0966682 insert jpsiwidth:InterpolationMasses 1263 3.0967063 insert jpsiwidth:InterpolationMasses 1264 3.0967444 insert jpsiwidth:InterpolationMasses 1265 3.0967826 insert jpsiwidth:InterpolationMasses 1266 3.0968207 insert jpsiwidth:InterpolationMasses 1267 3.0968588 insert jpsiwidth:InterpolationMasses 1268 3.0968969 insert jpsiwidth:InterpolationMasses 1269 3.0969351 insert jpsiwidth:InterpolationMasses 1270 3.0969732 insert jpsiwidth:InterpolationMasses 1271 3.0970113 insert jpsiwidth:InterpolationMasses 1272 3.0970494 insert jpsiwidth:InterpolationMasses 1273 3.0970876 insert jpsiwidth:InterpolationMasses 1274 3.0971257 insert jpsiwidth:InterpolationMasses 1275 3.0971638 insert jpsiwidth:InterpolationMasses 1276 3.0972019 insert jpsiwidth:InterpolationMasses 1277 3.09724 insert jpsiwidth:InterpolationMasses 1278 3.0972782 insert jpsiwidth:InterpolationMasses 1279 3.0973163 insert jpsiwidth:InterpolationMasses 1280 3.0973544 insert jpsiwidth:InterpolationMasses 1281 3.0973925 insert jpsiwidth:InterpolationMasses 1282 3.0974307 insert jpsiwidth:InterpolationMasses 1283 3.0974688 insert jpsiwidth:InterpolationMasses 1284 3.0975069 insert jpsiwidth:InterpolationMasses 1285 3.097545 insert jpsiwidth:InterpolationMasses 1286 3.0975831 insert jpsiwidth:InterpolationMasses 1287 3.0976213 insert jpsiwidth:InterpolationMasses 1288 3.0976594 insert jpsiwidth:InterpolationMasses 1289 3.0976975 insert jpsiwidth:InterpolationMasses 1290 3.0977356 insert jpsiwidth:InterpolationMasses 1291 3.0977738 insert jpsiwidth:InterpolationMasses 1292 3.0978119 insert jpsiwidth:InterpolationMasses 1293 3.09785 insert jpsiwidth:InterpolationMasses 1294 3.0978881 insert jpsiwidth:InterpolationMasses 1295 3.0979262 insert jpsiwidth:InterpolationMasses 1296 3.0959058 insert jpsiwidth:InterpolationMasses 1297 3.0959439 insert jpsiwidth:InterpolationMasses 1298 3.095982 insert jpsiwidth:InterpolationMasses 1299 3.0960201 insert jpsiwidth:InterpolationMasses 1300 3.0960582 insert jpsiwidth:InterpolationMasses 1301 3.0960964 insert jpsiwidth:InterpolationMasses 1302 3.0961345 insert jpsiwidth:InterpolationMasses 1303 3.0961726 insert jpsiwidth:InterpolationMasses 1304 3.0962107 insert jpsiwidth:InterpolationMasses 1305 3.0962489 insert jpsiwidth:InterpolationMasses 1306 3.096287 insert jpsiwidth:InterpolationMasses 1307 3.0963251 insert jpsiwidth:InterpolationMasses 1308 3.0963632 insert jpsiwidth:InterpolationMasses 1309 3.0964013 insert jpsiwidth:InterpolationMasses 1310 3.0964395 insert jpsiwidth:InterpolationMasses 1311 3.0964776 insert jpsiwidth:InterpolationMasses 1312 3.0965157 insert jpsiwidth:InterpolationMasses 1313 3.0965538 insert jpsiwidth:InterpolationMasses 1314 3.096592 insert jpsiwidth:InterpolationMasses 1315 3.0966301 insert jpsiwidth:InterpolationMasses 1316 3.0966682 insert jpsiwidth:InterpolationMasses 1317 3.0967063 insert jpsiwidth:InterpolationMasses 1318 3.0967444 insert jpsiwidth:InterpolationMasses 1319 3.0967826 insert jpsiwidth:InterpolationMasses 1320 3.0968207 insert jpsiwidth:InterpolationMasses 1321 3.0968588 insert jpsiwidth:InterpolationMasses 1322 3.0968969 insert jpsiwidth:InterpolationMasses 1323 3.0969351 insert jpsiwidth:InterpolationMasses 1324 3.0969732 insert jpsiwidth:InterpolationMasses 1325 3.0970113 insert jpsiwidth:InterpolationMasses 1326 3.0970494 insert jpsiwidth:InterpolationMasses 1327 3.0970876 insert jpsiwidth:InterpolationMasses 1328 3.0971257 insert jpsiwidth:InterpolationMasses 1329 3.0971638 insert jpsiwidth:InterpolationMasses 1330 3.0972019 insert jpsiwidth:InterpolationMasses 1331 3.09724 insert jpsiwidth:InterpolationMasses 1332 3.0972782 insert jpsiwidth:InterpolationMasses 1333 3.0973163 insert jpsiwidth:InterpolationMasses 1334 3.0973544 insert jpsiwidth:InterpolationMasses 1335 3.0973925 insert jpsiwidth:InterpolationMasses 1336 3.0974307 insert jpsiwidth:InterpolationMasses 1337 3.0974688 insert jpsiwidth:InterpolationMasses 1338 3.0975069 insert jpsiwidth:InterpolationMasses 1339 3.097545 insert jpsiwidth:InterpolationMasses 1340 3.0975831 insert jpsiwidth:InterpolationMasses 1341 3.0976213 insert jpsiwidth:InterpolationMasses 1342 3.0976594 insert jpsiwidth:InterpolationMasses 1343 3.0976975 insert jpsiwidth:InterpolationMasses 1344 3.0977356 insert jpsiwidth:InterpolationMasses 1345 3.0977738 insert jpsiwidth:InterpolationMasses 1346 3.0978119 insert jpsiwidth:InterpolationMasses 1347 3.09785 insert jpsiwidth:InterpolationMasses 1348 3.0978881 insert jpsiwidth:InterpolationMasses 1349 3.0979262 insert jpsiwidth:InterpolationMasses 1350 3.0959058 insert jpsiwidth:InterpolationMasses 1351 3.0959439 insert jpsiwidth:InterpolationMasses 1352 3.095982 insert jpsiwidth:InterpolationMasses 1353 3.0960201 insert jpsiwidth:InterpolationMasses 1354 3.0960582 insert jpsiwidth:InterpolationMasses 1355 3.0960964 insert jpsiwidth:InterpolationMasses 1356 3.0961345 insert jpsiwidth:InterpolationMasses 1357 3.0961726 insert jpsiwidth:InterpolationMasses 1358 3.0962107 insert jpsiwidth:InterpolationMasses 1359 3.0962489 insert jpsiwidth:InterpolationMasses 1360 3.096287 insert jpsiwidth:InterpolationMasses 1361 3.0963251 insert jpsiwidth:InterpolationMasses 1362 3.0963632 insert jpsiwidth:InterpolationMasses 1363 3.0964013 insert jpsiwidth:InterpolationMasses 1364 3.0964395 insert jpsiwidth:InterpolationMasses 1365 3.0964776 insert jpsiwidth:InterpolationMasses 1366 3.0965157 insert jpsiwidth:InterpolationMasses 1367 3.0965538 insert jpsiwidth:InterpolationMasses 1368 3.096592 insert jpsiwidth:InterpolationMasses 1369 3.0966301 insert jpsiwidth:InterpolationMasses 1370 3.0966682 insert jpsiwidth:InterpolationMasses 1371 3.0967063 insert jpsiwidth:InterpolationMasses 1372 3.0967444 insert jpsiwidth:InterpolationMasses 1373 3.0967826 insert jpsiwidth:InterpolationMasses 1374 3.0968207 insert jpsiwidth:InterpolationMasses 1375 3.0968588 insert jpsiwidth:InterpolationMasses 1376 3.0968969 insert jpsiwidth:InterpolationMasses 1377 3.0969351 insert jpsiwidth:InterpolationMasses 1378 3.0969732 insert jpsiwidth:InterpolationMasses 1379 3.0970113 insert jpsiwidth:InterpolationMasses 1380 3.0970494 insert jpsiwidth:InterpolationMasses 1381 3.0970876 insert jpsiwidth:InterpolationMasses 1382 3.0971257 insert jpsiwidth:InterpolationMasses 1383 3.0971638 insert jpsiwidth:InterpolationMasses 1384 3.0972019 insert jpsiwidth:InterpolationMasses 1385 3.09724 insert jpsiwidth:InterpolationMasses 1386 3.0972782 insert jpsiwidth:InterpolationMasses 1387 3.0973163 insert jpsiwidth:InterpolationMasses 1388 3.0973544 insert jpsiwidth:InterpolationMasses 1389 3.0973925 insert jpsiwidth:InterpolationMasses 1390 3.0974307 insert jpsiwidth:InterpolationMasses 1391 3.0974688 insert jpsiwidth:InterpolationMasses 1392 3.0975069 insert jpsiwidth:InterpolationMasses 1393 3.097545 insert jpsiwidth:InterpolationMasses 1394 3.0975831 insert jpsiwidth:InterpolationMasses 1395 3.0976213 insert jpsiwidth:InterpolationMasses 1396 3.0976594 insert jpsiwidth:InterpolationMasses 1397 3.0976975 insert jpsiwidth:InterpolationMasses 1398 3.0977356 insert jpsiwidth:InterpolationMasses 1399 3.0977738 insert jpsiwidth:InterpolationMasses 1400 3.0978119 insert jpsiwidth:InterpolationMasses 1401 3.09785 insert jpsiwidth:InterpolationMasses 1402 3.0978881 insert jpsiwidth:InterpolationMasses 1403 3.0979262 insert jpsiwidth:InterpolationMasses 1404 3.0959058 insert jpsiwidth:InterpolationMasses 1405 3.0959439 insert jpsiwidth:InterpolationMasses 1406 3.095982 insert jpsiwidth:InterpolationMasses 1407 3.0960201 insert jpsiwidth:InterpolationMasses 1408 3.0960582 insert jpsiwidth:InterpolationMasses 1409 3.0960964 insert jpsiwidth:InterpolationMasses 1410 3.0961345 insert jpsiwidth:InterpolationMasses 1411 3.0961726 insert jpsiwidth:InterpolationMasses 1412 3.0962107 insert jpsiwidth:InterpolationMasses 1413 3.0962489 insert jpsiwidth:InterpolationMasses 1414 3.096287 insert jpsiwidth:InterpolationMasses 1415 3.0963251 insert jpsiwidth:InterpolationMasses 1416 3.0963632 insert jpsiwidth:InterpolationMasses 1417 3.0964013 insert jpsiwidth:InterpolationMasses 1418 3.0964395 insert jpsiwidth:InterpolationMasses 1419 3.0964776 insert jpsiwidth:InterpolationMasses 1420 3.0965157 insert jpsiwidth:InterpolationMasses 1421 3.0965538 insert jpsiwidth:InterpolationMasses 1422 3.096592 insert jpsiwidth:InterpolationMasses 1423 3.0966301 insert jpsiwidth:InterpolationMasses 1424 3.0966682 insert jpsiwidth:InterpolationMasses 1425 3.0967063 insert jpsiwidth:InterpolationMasses 1426 3.0967444 insert jpsiwidth:InterpolationMasses 1427 3.0967826 insert jpsiwidth:InterpolationMasses 1428 3.0968207 insert jpsiwidth:InterpolationMasses 1429 3.0968588 insert jpsiwidth:InterpolationMasses 1430 3.0968969 insert jpsiwidth:InterpolationMasses 1431 3.0969351 insert jpsiwidth:InterpolationMasses 1432 3.0969732 insert jpsiwidth:InterpolationMasses 1433 3.0970113 insert jpsiwidth:InterpolationMasses 1434 3.0970494 insert jpsiwidth:InterpolationMasses 1435 3.0970876 insert jpsiwidth:InterpolationMasses 1436 3.0971257 insert jpsiwidth:InterpolationMasses 1437 3.0971638 insert jpsiwidth:InterpolationMasses 1438 3.0972019 insert jpsiwidth:InterpolationMasses 1439 3.09724 insert jpsiwidth:InterpolationMasses 1440 3.0972782 insert jpsiwidth:InterpolationMasses 1441 3.0973163 insert jpsiwidth:InterpolationMasses 1442 3.0973544 insert jpsiwidth:InterpolationMasses 1443 3.0973925 insert jpsiwidth:InterpolationMasses 1444 3.0974307 insert jpsiwidth:InterpolationMasses 1445 3.0974688 insert jpsiwidth:InterpolationMasses 1446 3.0975069 insert jpsiwidth:InterpolationMasses 1447 3.097545 insert jpsiwidth:InterpolationMasses 1448 3.0975831 insert jpsiwidth:InterpolationMasses 1449 3.0976213 insert jpsiwidth:InterpolationMasses 1450 3.0976594 insert jpsiwidth:InterpolationMasses 1451 3.0976975 insert jpsiwidth:InterpolationMasses 1452 3.0977356 insert jpsiwidth:InterpolationMasses 1453 3.0977738 insert jpsiwidth:InterpolationMasses 1454 3.0978119 insert jpsiwidth:InterpolationMasses 1455 3.09785 insert jpsiwidth:InterpolationMasses 1456 3.0978881 insert jpsiwidth:InterpolationMasses 1457 3.0979262 insert jpsiwidth:InterpolationMasses 1458 3.0959058 insert jpsiwidth:InterpolationMasses 1459 3.0959439 insert jpsiwidth:InterpolationMasses 1460 3.095982 insert jpsiwidth:InterpolationMasses 1461 3.0960201 insert jpsiwidth:InterpolationMasses 1462 3.0960582 insert jpsiwidth:InterpolationMasses 1463 3.0960964 insert jpsiwidth:InterpolationMasses 1464 3.0961345 insert jpsiwidth:InterpolationMasses 1465 3.0961726 insert jpsiwidth:InterpolationMasses 1466 3.0962107 insert jpsiwidth:InterpolationMasses 1467 3.0962489 insert jpsiwidth:InterpolationMasses 1468 3.096287 insert jpsiwidth:InterpolationMasses 1469 3.0963251 insert jpsiwidth:InterpolationMasses 1470 3.0963632 insert jpsiwidth:InterpolationMasses 1471 3.0964013 insert jpsiwidth:InterpolationMasses 1472 3.0964395 insert jpsiwidth:InterpolationMasses 1473 3.0964776 insert jpsiwidth:InterpolationMasses 1474 3.0965157 insert jpsiwidth:InterpolationMasses 1475 3.0965538 insert jpsiwidth:InterpolationMasses 1476 3.096592 insert jpsiwidth:InterpolationMasses 1477 3.0966301 insert jpsiwidth:InterpolationMasses 1478 3.0966682 insert jpsiwidth:InterpolationMasses 1479 3.0967063 insert jpsiwidth:InterpolationMasses 1480 3.0967444 insert jpsiwidth:InterpolationMasses 1481 3.0967826 insert jpsiwidth:InterpolationMasses 1482 3.0968207 insert jpsiwidth:InterpolationMasses 1483 3.0968588 insert jpsiwidth:InterpolationMasses 1484 3.0968969 insert jpsiwidth:InterpolationMasses 1485 3.0969351 insert jpsiwidth:InterpolationMasses 1486 3.0969732 insert jpsiwidth:InterpolationMasses 1487 3.0970113 insert jpsiwidth:InterpolationMasses 1488 3.0970494 insert jpsiwidth:InterpolationMasses 1489 3.0970876 insert jpsiwidth:InterpolationMasses 1490 3.0971257 insert jpsiwidth:InterpolationMasses 1491 3.0971638 insert jpsiwidth:InterpolationMasses 1492 3.0972019 insert jpsiwidth:InterpolationMasses 1493 3.09724 insert jpsiwidth:InterpolationMasses 1494 3.0972782 insert jpsiwidth:InterpolationMasses 1495 3.0973163 insert jpsiwidth:InterpolationMasses 1496 3.0973544 insert jpsiwidth:InterpolationMasses 1497 3.0973925 insert jpsiwidth:InterpolationMasses 1498 3.0974307 insert jpsiwidth:InterpolationMasses 1499 3.0974688 insert jpsiwidth:InterpolationMasses 1500 3.0975069 insert jpsiwidth:InterpolationMasses 1501 3.097545 insert jpsiwidth:InterpolationMasses 1502 3.0975831 insert jpsiwidth:InterpolationMasses 1503 3.0976213 insert jpsiwidth:InterpolationMasses 1504 3.0976594 insert jpsiwidth:InterpolationMasses 1505 3.0976975 insert jpsiwidth:InterpolationMasses 1506 3.0977356 insert jpsiwidth:InterpolationMasses 1507 3.0977738 insert jpsiwidth:InterpolationMasses 1508 3.0978119 insert jpsiwidth:InterpolationMasses 1509 3.09785 insert jpsiwidth:InterpolationMasses 1510 3.0978881 insert jpsiwidth:InterpolationMasses 1511 3.0979262 insert jpsiwidth:InterpolationMasses 1512 3.0959058 insert jpsiwidth:InterpolationMasses 1513 3.0959439 insert jpsiwidth:InterpolationMasses 1514 3.095982 insert jpsiwidth:InterpolationMasses 1515 3.0960201 insert jpsiwidth:InterpolationMasses 1516 3.0960582 insert jpsiwidth:InterpolationMasses 1517 3.0960964 insert jpsiwidth:InterpolationMasses 1518 3.0961345 insert jpsiwidth:InterpolationMasses 1519 3.0961726 insert jpsiwidth:InterpolationMasses 1520 3.0962107 insert jpsiwidth:InterpolationMasses 1521 3.0962489 insert jpsiwidth:InterpolationMasses 1522 3.096287 insert jpsiwidth:InterpolationMasses 1523 3.0963251 insert jpsiwidth:InterpolationMasses 1524 3.0963632 insert jpsiwidth:InterpolationMasses 1525 3.0964013 insert jpsiwidth:InterpolationMasses 1526 3.0964395 insert jpsiwidth:InterpolationMasses 1527 3.0964776 insert jpsiwidth:InterpolationMasses 1528 3.0965157 insert jpsiwidth:InterpolationMasses 1529 3.0965538 insert jpsiwidth:InterpolationMasses 1530 3.096592 insert jpsiwidth:InterpolationMasses 1531 3.0966301 insert jpsiwidth:InterpolationMasses 1532 3.0966682 insert jpsiwidth:InterpolationMasses 1533 3.0967063 insert jpsiwidth:InterpolationMasses 1534 3.0967444 insert jpsiwidth:InterpolationMasses 1535 3.0967826 insert jpsiwidth:InterpolationMasses 1536 3.0968207 insert jpsiwidth:InterpolationMasses 1537 3.0968588 insert jpsiwidth:InterpolationMasses 1538 3.0968969 insert jpsiwidth:InterpolationMasses 1539 3.0969351 insert jpsiwidth:InterpolationMasses 1540 3.0969732 insert jpsiwidth:InterpolationMasses 1541 3.0970113 insert jpsiwidth:InterpolationMasses 1542 3.0970494 insert jpsiwidth:InterpolationMasses 1543 3.0970876 insert jpsiwidth:InterpolationMasses 1544 3.0971257 insert jpsiwidth:InterpolationMasses 1545 3.0971638 insert jpsiwidth:InterpolationMasses 1546 3.0972019 insert jpsiwidth:InterpolationMasses 1547 3.09724 insert jpsiwidth:InterpolationMasses 1548 3.0972782 insert jpsiwidth:InterpolationMasses 1549 3.0973163 insert jpsiwidth:InterpolationMasses 1550 3.0973544 insert jpsiwidth:InterpolationMasses 1551 3.0973925 insert jpsiwidth:InterpolationMasses 1552 3.0974307 insert jpsiwidth:InterpolationMasses 1553 3.0974688 insert jpsiwidth:InterpolationMasses 1554 3.0975069 insert jpsiwidth:InterpolationMasses 1555 3.097545 insert jpsiwidth:InterpolationMasses 1556 3.0975831 insert jpsiwidth:InterpolationMasses 1557 3.0976213 insert jpsiwidth:InterpolationMasses 1558 3.0976594 insert jpsiwidth:InterpolationMasses 1559 3.0976975 insert jpsiwidth:InterpolationMasses 1560 3.0977356 insert jpsiwidth:InterpolationMasses 1561 3.0977738 insert jpsiwidth:InterpolationMasses 1562 3.0978119 insert jpsiwidth:InterpolationMasses 1563 3.09785 insert jpsiwidth:InterpolationMasses 1564 3.0978881 insert jpsiwidth:InterpolationMasses 1565 3.0979262 insert jpsiwidth:InterpolationMasses 1566 3.0959058 insert jpsiwidth:InterpolationMasses 1567 3.0959439 insert jpsiwidth:InterpolationMasses 1568 3.095982 insert jpsiwidth:InterpolationMasses 1569 3.0960201 insert jpsiwidth:InterpolationMasses 1570 3.0960582 insert jpsiwidth:InterpolationMasses 1571 3.0960964 insert jpsiwidth:InterpolationMasses 1572 3.0961345 insert jpsiwidth:InterpolationMasses 1573 3.0961726 insert jpsiwidth:InterpolationMasses 1574 3.0962107 insert jpsiwidth:InterpolationMasses 1575 3.0962489 insert jpsiwidth:InterpolationMasses 1576 3.096287 insert jpsiwidth:InterpolationMasses 1577 3.0963251 insert jpsiwidth:InterpolationMasses 1578 3.0963632 insert jpsiwidth:InterpolationMasses 1579 3.0964013 insert jpsiwidth:InterpolationMasses 1580 3.0964395 insert jpsiwidth:InterpolationMasses 1581 3.0964776 insert jpsiwidth:InterpolationMasses 1582 3.0965157 insert jpsiwidth:InterpolationMasses 1583 3.0965538 insert jpsiwidth:InterpolationMasses 1584 3.096592 insert jpsiwidth:InterpolationMasses 1585 3.0966301 insert jpsiwidth:InterpolationMasses 1586 3.0966682 insert jpsiwidth:InterpolationMasses 1587 3.0967063 insert jpsiwidth:InterpolationMasses 1588 3.0967444 insert jpsiwidth:InterpolationMasses 1589 3.0967826 insert jpsiwidth:InterpolationMasses 1590 3.0968207 insert jpsiwidth:InterpolationMasses 1591 3.0968588 insert jpsiwidth:InterpolationMasses 1592 3.0968969 insert jpsiwidth:InterpolationMasses 1593 3.0969351 insert jpsiwidth:InterpolationMasses 1594 3.0969732 insert jpsiwidth:InterpolationMasses 1595 3.0970113 insert jpsiwidth:InterpolationMasses 1596 3.0970494 insert jpsiwidth:InterpolationMasses 1597 3.0970876 insert jpsiwidth:InterpolationMasses 1598 3.0971257 insert jpsiwidth:InterpolationMasses 1599 3.0971638 insert jpsiwidth:InterpolationMasses 1600 3.0972019 insert jpsiwidth:InterpolationMasses 1601 3.09724 insert jpsiwidth:InterpolationMasses 1602 3.0972782 insert jpsiwidth:InterpolationMasses 1603 3.0973163 insert jpsiwidth:InterpolationMasses 1604 3.0973544 insert jpsiwidth:InterpolationMasses 1605 3.0973925 insert jpsiwidth:InterpolationMasses 1606 3.0974307 insert jpsiwidth:InterpolationMasses 1607 3.0974688 insert jpsiwidth:InterpolationMasses 1608 3.0975069 insert jpsiwidth:InterpolationMasses 1609 3.097545 insert jpsiwidth:InterpolationMasses 1610 3.0975831 insert jpsiwidth:InterpolationMasses 1611 3.0976213 insert jpsiwidth:InterpolationMasses 1612 3.0976594 insert jpsiwidth:InterpolationMasses 1613 3.0976975 insert jpsiwidth:InterpolationMasses 1614 3.0977356 insert jpsiwidth:InterpolationMasses 1615 3.0977738 insert jpsiwidth:InterpolationMasses 1616 3.0978119 insert jpsiwidth:InterpolationMasses 1617 3.09785 insert jpsiwidth:InterpolationMasses 1618 3.0978881 insert jpsiwidth:InterpolationMasses 1619 3.0979262 insert jpsiwidth:InterpolationWidths 0 1.7901454e-07 insert jpsiwidth:InterpolationWidths 1 1.7902072e-07 insert jpsiwidth:InterpolationWidths 2 1.790269e-07 insert jpsiwidth:InterpolationWidths 3 1.7903308e-07 insert jpsiwidth:InterpolationWidths 4 1.7903926e-07 insert jpsiwidth:InterpolationWidths 5 1.7904544e-07 insert jpsiwidth:InterpolationWidths 6 1.7905162e-07 insert jpsiwidth:InterpolationWidths 7 1.790578e-07 insert jpsiwidth:InterpolationWidths 8 1.7906398e-07 insert jpsiwidth:InterpolationWidths 9 1.7907016e-07 insert jpsiwidth:InterpolationWidths 10 1.7907633e-07 insert jpsiwidth:InterpolationWidths 11 1.7908251e-07 insert jpsiwidth:InterpolationWidths 12 1.7908869e-07 insert jpsiwidth:InterpolationWidths 13 1.7909487e-07 insert jpsiwidth:InterpolationWidths 14 1.7910105e-07 insert jpsiwidth:InterpolationWidths 15 1.7910723e-07 insert jpsiwidth:InterpolationWidths 16 1.7911341e-07 insert jpsiwidth:InterpolationWidths 17 1.7911959e-07 insert jpsiwidth:InterpolationWidths 18 1.7912577e-07 insert jpsiwidth:InterpolationWidths 19 1.7913196e-07 insert jpsiwidth:InterpolationWidths 20 1.7913814e-07 insert jpsiwidth:InterpolationWidths 21 1.7914432e-07 insert jpsiwidth:InterpolationWidths 22 1.791505e-07 insert jpsiwidth:InterpolationWidths 23 1.7915668e-07 insert jpsiwidth:InterpolationWidths 24 1.7916286e-07 insert jpsiwidth:InterpolationWidths 25 1.7916904e-07 insert jpsiwidth:InterpolationWidths 26 1.7917522e-07 insert jpsiwidth:InterpolationWidths 27 1.791814e-07 insert jpsiwidth:InterpolationWidths 28 1.7918758e-07 insert jpsiwidth:InterpolationWidths 29 1.7919377e-07 insert jpsiwidth:InterpolationWidths 30 1.7919995e-07 insert jpsiwidth:InterpolationWidths 31 1.7920613e-07 insert jpsiwidth:InterpolationWidths 32 1.7921231e-07 insert jpsiwidth:InterpolationWidths 33 1.7921849e-07 insert jpsiwidth:InterpolationWidths 34 1.7922467e-07 insert jpsiwidth:InterpolationWidths 35 1.7923086e-07 insert jpsiwidth:InterpolationWidths 36 1.7923704e-07 insert jpsiwidth:InterpolationWidths 37 1.7924322e-07 insert jpsiwidth:InterpolationWidths 38 1.792494e-07 insert jpsiwidth:InterpolationWidths 39 1.7925559e-07 insert jpsiwidth:InterpolationWidths 40 1.7926177e-07 insert jpsiwidth:InterpolationWidths 41 1.7926795e-07 insert jpsiwidth:InterpolationWidths 42 1.7927413e-07 insert jpsiwidth:InterpolationWidths 43 1.7928032e-07 insert jpsiwidth:InterpolationWidths 44 1.792865e-07 insert jpsiwidth:InterpolationWidths 45 1.7929268e-07 insert jpsiwidth:InterpolationWidths 46 1.7929887e-07 insert jpsiwidth:InterpolationWidths 47 1.7930505e-07 insert jpsiwidth:InterpolationWidths 48 1.7931123e-07 insert jpsiwidth:InterpolationWidths 49 1.7931742e-07 insert jpsiwidth:InterpolationWidths 50 1.793236e-07 insert jpsiwidth:InterpolationWidths 51 1.7932978e-07 insert jpsiwidth:InterpolationWidths 52 1.7933597e-07 insert jpsiwidth:InterpolationWidths 53 1.7934215e-07 insert jpsiwidth:InterpolationWidths 54 1.7901454e-07 insert jpsiwidth:InterpolationWidths 55 1.7902072e-07 insert jpsiwidth:InterpolationWidths 56 1.790269e-07 insert jpsiwidth:InterpolationWidths 57 1.7903308e-07 insert jpsiwidth:InterpolationWidths 58 1.7903926e-07 insert jpsiwidth:InterpolationWidths 59 1.7904544e-07 insert jpsiwidth:InterpolationWidths 60 1.7905162e-07 insert jpsiwidth:InterpolationWidths 61 1.790578e-07 insert jpsiwidth:InterpolationWidths 62 1.7906398e-07 insert jpsiwidth:InterpolationWidths 63 1.7907016e-07 insert jpsiwidth:InterpolationWidths 64 1.7907633e-07 insert jpsiwidth:InterpolationWidths 65 1.7908251e-07 insert jpsiwidth:InterpolationWidths 66 1.7908869e-07 insert jpsiwidth:InterpolationWidths 67 1.7909487e-07 insert jpsiwidth:InterpolationWidths 68 1.7910105e-07 insert jpsiwidth:InterpolationWidths 69 1.7910723e-07 insert jpsiwidth:InterpolationWidths 70 1.7911341e-07 insert jpsiwidth:InterpolationWidths 71 1.7911959e-07 insert jpsiwidth:InterpolationWidths 72 1.7912577e-07 insert jpsiwidth:InterpolationWidths 73 1.7913196e-07 insert jpsiwidth:InterpolationWidths 74 1.7913814e-07 insert jpsiwidth:InterpolationWidths 75 1.7914432e-07 insert jpsiwidth:InterpolationWidths 76 1.791505e-07 insert jpsiwidth:InterpolationWidths 77 1.7915668e-07 insert jpsiwidth:InterpolationWidths 78 1.7916286e-07 insert jpsiwidth:InterpolationWidths 79 1.7916904e-07 insert jpsiwidth:InterpolationWidths 80 1.7917522e-07 insert jpsiwidth:InterpolationWidths 81 1.791814e-07 insert jpsiwidth:InterpolationWidths 82 1.7918758e-07 insert jpsiwidth:InterpolationWidths 83 1.7919377e-07 insert jpsiwidth:InterpolationWidths 84 1.7919995e-07 insert jpsiwidth:InterpolationWidths 85 1.7920613e-07 insert jpsiwidth:InterpolationWidths 86 1.7921231e-07 insert jpsiwidth:InterpolationWidths 87 1.7921849e-07 insert jpsiwidth:InterpolationWidths 88 1.7922467e-07 insert jpsiwidth:InterpolationWidths 89 1.7923086e-07 insert jpsiwidth:InterpolationWidths 90 1.7923704e-07 insert jpsiwidth:InterpolationWidths 91 1.7924322e-07 insert jpsiwidth:InterpolationWidths 92 1.792494e-07 insert jpsiwidth:InterpolationWidths 93 1.7925559e-07 insert jpsiwidth:InterpolationWidths 94 1.7926177e-07 insert jpsiwidth:InterpolationWidths 95 1.7926795e-07 insert jpsiwidth:InterpolationWidths 96 1.7927413e-07 insert jpsiwidth:InterpolationWidths 97 1.7928032e-07 insert jpsiwidth:InterpolationWidths 98 1.792865e-07 insert jpsiwidth:InterpolationWidths 99 1.7929268e-07 insert jpsiwidth:InterpolationWidths 100 1.7929887e-07 insert jpsiwidth:InterpolationWidths 101 1.7930505e-07 insert jpsiwidth:InterpolationWidths 102 1.7931123e-07 insert jpsiwidth:InterpolationWidths 103 1.7931742e-07 insert jpsiwidth:InterpolationWidths 104 1.793236e-07 insert jpsiwidth:InterpolationWidths 105 1.7932978e-07 insert jpsiwidth:InterpolationWidths 106 1.7933597e-07 insert jpsiwidth:InterpolationWidths 107 1.7934215e-07 insert jpsiwidth:InterpolationWidths 108 1.7878007e-07 insert jpsiwidth:InterpolationWidths 109 1.7878625e-07 insert jpsiwidth:InterpolationWidths 110 1.7879243e-07 insert jpsiwidth:InterpolationWidths 111 1.7879861e-07 insert jpsiwidth:InterpolationWidths 112 1.7880479e-07 insert jpsiwidth:InterpolationWidths 113 1.7881097e-07 insert jpsiwidth:InterpolationWidths 114 1.7881715e-07 insert jpsiwidth:InterpolationWidths 115 1.7882333e-07 insert jpsiwidth:InterpolationWidths 116 1.7882951e-07 insert jpsiwidth:InterpolationWidths 117 1.7883569e-07 insert jpsiwidth:InterpolationWidths 118 1.7884187e-07 insert jpsiwidth:InterpolationWidths 119 1.7884805e-07 insert jpsiwidth:InterpolationWidths 120 1.7885423e-07 insert jpsiwidth:InterpolationWidths 121 1.7886041e-07 insert jpsiwidth:InterpolationWidths 122 1.7886659e-07 insert jpsiwidth:InterpolationWidths 123 1.7887277e-07 insert jpsiwidth:InterpolationWidths 124 1.7887896e-07 insert jpsiwidth:InterpolationWidths 125 1.7888514e-07 insert jpsiwidth:InterpolationWidths 126 1.7889132e-07 insert jpsiwidth:InterpolationWidths 127 1.788975e-07 insert jpsiwidth:InterpolationWidths 128 1.7890368e-07 insert jpsiwidth:InterpolationWidths 129 1.7890986e-07 insert jpsiwidth:InterpolationWidths 130 1.7891605e-07 insert jpsiwidth:InterpolationWidths 131 1.7892223e-07 insert jpsiwidth:InterpolationWidths 132 1.7892841e-07 insert jpsiwidth:InterpolationWidths 133 1.7893459e-07 insert jpsiwidth:InterpolationWidths 134 1.7894077e-07 insert jpsiwidth:InterpolationWidths 135 1.7894696e-07 insert jpsiwidth:InterpolationWidths 136 1.7895314e-07 insert jpsiwidth:InterpolationWidths 137 1.7895932e-07 insert jpsiwidth:InterpolationWidths 138 1.789655e-07 insert jpsiwidth:InterpolationWidths 139 1.7897169e-07 insert jpsiwidth:InterpolationWidths 140 1.7897787e-07 insert jpsiwidth:InterpolationWidths 141 1.7898405e-07 insert jpsiwidth:InterpolationWidths 142 1.7899024e-07 insert jpsiwidth:InterpolationWidths 143 1.7899642e-07 insert jpsiwidth:InterpolationWidths 144 1.790026e-07 insert jpsiwidth:InterpolationWidths 145 1.7900879e-07 insert jpsiwidth:InterpolationWidths 146 1.7901497e-07 insert jpsiwidth:InterpolationWidths 147 1.7902115e-07 insert jpsiwidth:InterpolationWidths 148 1.7902734e-07 insert jpsiwidth:InterpolationWidths 149 1.7903352e-07 insert jpsiwidth:InterpolationWidths 150 1.7903971e-07 insert jpsiwidth:InterpolationWidths 151 1.7904589e-07 insert jpsiwidth:InterpolationWidths 152 1.7905207e-07 insert jpsiwidth:InterpolationWidths 153 1.7905826e-07 insert jpsiwidth:InterpolationWidths 154 1.7906444e-07 insert jpsiwidth:InterpolationWidths 155 1.7907063e-07 insert jpsiwidth:InterpolationWidths 156 1.7907681e-07 insert jpsiwidth:InterpolationWidths 157 1.79083e-07 insert jpsiwidth:InterpolationWidths 158 1.7908918e-07 insert jpsiwidth:InterpolationWidths 159 1.7909537e-07 insert jpsiwidth:InterpolationWidths 160 1.7910155e-07 insert jpsiwidth:InterpolationWidths 161 1.7910774e-07 insert jpsiwidth:InterpolationWidths 162 1.7878007e-07 insert jpsiwidth:InterpolationWidths 163 1.7878625e-07 insert jpsiwidth:InterpolationWidths 164 1.7879243e-07 insert jpsiwidth:InterpolationWidths 165 1.7879861e-07 insert jpsiwidth:InterpolationWidths 166 1.7880479e-07 insert jpsiwidth:InterpolationWidths 167 1.7881097e-07 insert jpsiwidth:InterpolationWidths 168 1.7881715e-07 insert jpsiwidth:InterpolationWidths 169 1.7882333e-07 insert jpsiwidth:InterpolationWidths 170 1.7882951e-07 insert jpsiwidth:InterpolationWidths 171 1.7883569e-07 insert jpsiwidth:InterpolationWidths 172 1.7884187e-07 insert jpsiwidth:InterpolationWidths 173 1.7884805e-07 insert jpsiwidth:InterpolationWidths 174 1.7885423e-07 insert jpsiwidth:InterpolationWidths 175 1.7886041e-07 insert jpsiwidth:InterpolationWidths 176 1.7886659e-07 insert jpsiwidth:InterpolationWidths 177 1.7887277e-07 insert jpsiwidth:InterpolationWidths 178 1.7887896e-07 insert jpsiwidth:InterpolationWidths 179 1.7888514e-07 insert jpsiwidth:InterpolationWidths 180 1.7889132e-07 insert jpsiwidth:InterpolationWidths 181 1.788975e-07 insert jpsiwidth:InterpolationWidths 182 1.7890368e-07 insert jpsiwidth:InterpolationWidths 183 1.7890986e-07 insert jpsiwidth:InterpolationWidths 184 1.7891605e-07 insert jpsiwidth:InterpolationWidths 185 1.7892223e-07 insert jpsiwidth:InterpolationWidths 186 1.7892841e-07 insert jpsiwidth:InterpolationWidths 187 1.7893459e-07 insert jpsiwidth:InterpolationWidths 188 1.7894077e-07 insert jpsiwidth:InterpolationWidths 189 1.7894696e-07 insert jpsiwidth:InterpolationWidths 190 1.7895314e-07 insert jpsiwidth:InterpolationWidths 191 1.7895932e-07 insert jpsiwidth:InterpolationWidths 192 1.789655e-07 insert jpsiwidth:InterpolationWidths 193 1.7897169e-07 insert jpsiwidth:InterpolationWidths 194 1.7897787e-07 insert jpsiwidth:InterpolationWidths 195 1.7898405e-07 insert jpsiwidth:InterpolationWidths 196 1.7899024e-07 insert jpsiwidth:InterpolationWidths 197 1.7899642e-07 insert jpsiwidth:InterpolationWidths 198 1.790026e-07 insert jpsiwidth:InterpolationWidths 199 1.7900879e-07 insert jpsiwidth:InterpolationWidths 200 1.7901497e-07 insert jpsiwidth:InterpolationWidths 201 1.7902115e-07 insert jpsiwidth:InterpolationWidths 202 1.7902734e-07 insert jpsiwidth:InterpolationWidths 203 1.7903352e-07 insert jpsiwidth:InterpolationWidths 204 1.7903971e-07 insert jpsiwidth:InterpolationWidths 205 1.7904589e-07 insert jpsiwidth:InterpolationWidths 206 1.7905207e-07 insert jpsiwidth:InterpolationWidths 207 1.7905826e-07 insert jpsiwidth:InterpolationWidths 208 1.7906444e-07 insert jpsiwidth:InterpolationWidths 209 1.7907063e-07 insert jpsiwidth:InterpolationWidths 210 1.7907681e-07 insert jpsiwidth:InterpolationWidths 211 1.79083e-07 insert jpsiwidth:InterpolationWidths 212 1.7908918e-07 insert jpsiwidth:InterpolationWidths 213 1.7909537e-07 insert jpsiwidth:InterpolationWidths 214 1.7910155e-07 insert jpsiwidth:InterpolationWidths 215 1.7910774e-07 insert jpsiwidth:InterpolationWidths 216 2.1620479e-07 insert jpsiwidth:InterpolationWidths 217 2.1621508e-07 insert jpsiwidth:InterpolationWidths 218 2.1622538e-07 insert jpsiwidth:InterpolationWidths 219 2.1623568e-07 insert jpsiwidth:InterpolationWidths 220 2.1624598e-07 insert jpsiwidth:InterpolationWidths 221 2.1625628e-07 insert jpsiwidth:InterpolationWidths 222 2.1626657e-07 insert jpsiwidth:InterpolationWidths 223 2.1627687e-07 insert jpsiwidth:InterpolationWidths 224 2.1628717e-07 insert jpsiwidth:InterpolationWidths 225 2.1629747e-07 insert jpsiwidth:InterpolationWidths 226 2.1630777e-07 insert jpsiwidth:InterpolationWidths 227 2.1631807e-07 insert jpsiwidth:InterpolationWidths 228 2.1632837e-07 insert jpsiwidth:InterpolationWidths 229 2.1633867e-07 insert jpsiwidth:InterpolationWidths 230 2.1634898e-07 insert jpsiwidth:InterpolationWidths 231 2.1635928e-07 insert jpsiwidth:InterpolationWidths 232 2.1636958e-07 insert jpsiwidth:InterpolationWidths 233 2.1637988e-07 insert jpsiwidth:InterpolationWidths 234 2.1639018e-07 insert jpsiwidth:InterpolationWidths 235 2.1640049e-07 insert jpsiwidth:InterpolationWidths 236 2.1641079e-07 insert jpsiwidth:InterpolationWidths 237 2.1642109e-07 insert jpsiwidth:InterpolationWidths 238 2.1643139e-07 insert jpsiwidth:InterpolationWidths 239 2.164417e-07 insert jpsiwidth:InterpolationWidths 240 2.16452e-07 insert jpsiwidth:InterpolationWidths 241 2.1646231e-07 insert jpsiwidth:InterpolationWidths 242 2.1647261e-07 insert jpsiwidth:InterpolationWidths 243 2.1648292e-07 insert jpsiwidth:InterpolationWidths 244 2.1649322e-07 insert jpsiwidth:InterpolationWidths 245 2.1650353e-07 insert jpsiwidth:InterpolationWidths 246 2.1651383e-07 insert jpsiwidth:InterpolationWidths 247 2.1652414e-07 insert jpsiwidth:InterpolationWidths 248 2.1653445e-07 insert jpsiwidth:InterpolationWidths 249 2.1654475e-07 insert jpsiwidth:InterpolationWidths 250 2.1655506e-07 insert jpsiwidth:InterpolationWidths 251 2.1656537e-07 insert jpsiwidth:InterpolationWidths 252 2.1657567e-07 insert jpsiwidth:InterpolationWidths 253 2.1658598e-07 insert jpsiwidth:InterpolationWidths 254 2.1659629e-07 insert jpsiwidth:InterpolationWidths 255 2.166066e-07 insert jpsiwidth:InterpolationWidths 256 2.1661691e-07 insert jpsiwidth:InterpolationWidths 257 2.1662722e-07 insert jpsiwidth:InterpolationWidths 258 2.1663753e-07 insert jpsiwidth:InterpolationWidths 259 2.1664784e-07 insert jpsiwidth:InterpolationWidths 260 2.1665815e-07 insert jpsiwidth:InterpolationWidths 261 2.1666846e-07 insert jpsiwidth:InterpolationWidths 262 2.1667877e-07 insert jpsiwidth:InterpolationWidths 263 2.1668908e-07 insert jpsiwidth:InterpolationWidths 264 2.1669939e-07 insert jpsiwidth:InterpolationWidths 265 2.167097e-07 insert jpsiwidth:InterpolationWidths 266 2.1672001e-07 insert jpsiwidth:InterpolationWidths 267 2.1673032e-07 insert jpsiwidth:InterpolationWidths 268 2.1674064e-07 insert jpsiwidth:InterpolationWidths 269 2.1675095e-07 insert jpsiwidth:InterpolationWidths 270 2.1620479e-07 insert jpsiwidth:InterpolationWidths 271 2.1621508e-07 insert jpsiwidth:InterpolationWidths 272 2.1622538e-07 insert jpsiwidth:InterpolationWidths 273 2.1623568e-07 insert jpsiwidth:InterpolationWidths 274 2.1624598e-07 insert jpsiwidth:InterpolationWidths 275 2.1625628e-07 insert jpsiwidth:InterpolationWidths 276 2.1626657e-07 insert jpsiwidth:InterpolationWidths 277 2.1627687e-07 insert jpsiwidth:InterpolationWidths 278 2.1628717e-07 insert jpsiwidth:InterpolationWidths 279 2.1629747e-07 insert jpsiwidth:InterpolationWidths 280 2.1630777e-07 insert jpsiwidth:InterpolationWidths 281 2.1631807e-07 insert jpsiwidth:InterpolationWidths 282 2.1632837e-07 insert jpsiwidth:InterpolationWidths 283 2.1633867e-07 insert jpsiwidth:InterpolationWidths 284 2.1634898e-07 insert jpsiwidth:InterpolationWidths 285 2.1635928e-07 insert jpsiwidth:InterpolationWidths 286 2.1636958e-07 insert jpsiwidth:InterpolationWidths 287 2.1637988e-07 insert jpsiwidth:InterpolationWidths 288 2.1639018e-07 insert jpsiwidth:InterpolationWidths 289 2.1640049e-07 insert jpsiwidth:InterpolationWidths 290 2.1641079e-07 insert jpsiwidth:InterpolationWidths 291 2.1642109e-07 insert jpsiwidth:InterpolationWidths 292 2.1643139e-07 insert jpsiwidth:InterpolationWidths 293 2.164417e-07 insert jpsiwidth:InterpolationWidths 294 2.16452e-07 insert jpsiwidth:InterpolationWidths 295 2.1646231e-07 insert jpsiwidth:InterpolationWidths 296 2.1647261e-07 insert jpsiwidth:InterpolationWidths 297 2.1648292e-07 insert jpsiwidth:InterpolationWidths 298 2.1649322e-07 insert jpsiwidth:InterpolationWidths 299 2.1650353e-07 insert jpsiwidth:InterpolationWidths 300 2.1651383e-07 insert jpsiwidth:InterpolationWidths 301 2.1652414e-07 insert jpsiwidth:InterpolationWidths 302 2.1653445e-07 insert jpsiwidth:InterpolationWidths 303 2.1654475e-07 insert jpsiwidth:InterpolationWidths 304 2.1655506e-07 insert jpsiwidth:InterpolationWidths 305 2.1656537e-07 insert jpsiwidth:InterpolationWidths 306 2.1657567e-07 insert jpsiwidth:InterpolationWidths 307 2.1658598e-07 insert jpsiwidth:InterpolationWidths 308 2.1659629e-07 insert jpsiwidth:InterpolationWidths 309 2.166066e-07 insert jpsiwidth:InterpolationWidths 310 2.1661691e-07 insert jpsiwidth:InterpolationWidths 311 2.1662722e-07 insert jpsiwidth:InterpolationWidths 312 2.1663753e-07 insert jpsiwidth:InterpolationWidths 313 2.1664784e-07 insert jpsiwidth:InterpolationWidths 314 2.1665815e-07 insert jpsiwidth:InterpolationWidths 315 2.1666846e-07 insert jpsiwidth:InterpolationWidths 316 2.1667877e-07 insert jpsiwidth:InterpolationWidths 317 2.1668908e-07 insert jpsiwidth:InterpolationWidths 318 2.1669939e-07 insert jpsiwidth:InterpolationWidths 319 2.167097e-07 insert jpsiwidth:InterpolationWidths 320 2.1672001e-07 insert jpsiwidth:InterpolationWidths 321 2.1673032e-07 insert jpsiwidth:InterpolationWidths 322 2.1674064e-07 insert jpsiwidth:InterpolationWidths 323 2.1675095e-07 insert jpsiwidth:InterpolationWidths 324 2.149948e-07 insert jpsiwidth:InterpolationWidths 325 2.1500507e-07 insert jpsiwidth:InterpolationWidths 326 2.1501533e-07 insert jpsiwidth:InterpolationWidths 327 2.150256e-07 insert jpsiwidth:InterpolationWidths 328 2.1503587e-07 insert jpsiwidth:InterpolationWidths 329 2.1504613e-07 insert jpsiwidth:InterpolationWidths 330 2.150564e-07 insert jpsiwidth:InterpolationWidths 331 2.1506667e-07 insert jpsiwidth:InterpolationWidths 332 2.1507693e-07 insert jpsiwidth:InterpolationWidths 333 2.150872e-07 insert jpsiwidth:InterpolationWidths 334 2.1509747e-07 insert jpsiwidth:InterpolationWidths 335 2.1510774e-07 insert jpsiwidth:InterpolationWidths 336 2.1511801e-07 insert jpsiwidth:InterpolationWidths 337 2.1512827e-07 insert jpsiwidth:InterpolationWidths 338 2.1513854e-07 insert jpsiwidth:InterpolationWidths 339 2.1514881e-07 insert jpsiwidth:InterpolationWidths 340 2.1515908e-07 insert jpsiwidth:InterpolationWidths 341 2.1516935e-07 insert jpsiwidth:InterpolationWidths 342 2.1517962e-07 insert jpsiwidth:InterpolationWidths 343 2.1518989e-07 insert jpsiwidth:InterpolationWidths 344 2.1520016e-07 insert jpsiwidth:InterpolationWidths 345 2.1521043e-07 insert jpsiwidth:InterpolationWidths 346 2.1522071e-07 insert jpsiwidth:InterpolationWidths 347 2.1523098e-07 insert jpsiwidth:InterpolationWidths 348 2.1524125e-07 insert jpsiwidth:InterpolationWidths 349 2.1525152e-07 insert jpsiwidth:InterpolationWidths 350 2.1526179e-07 insert jpsiwidth:InterpolationWidths 351 2.1527207e-07 insert jpsiwidth:InterpolationWidths 352 2.1528234e-07 insert jpsiwidth:InterpolationWidths 353 2.1529261e-07 insert jpsiwidth:InterpolationWidths 354 2.1530289e-07 insert jpsiwidth:InterpolationWidths 355 2.1531316e-07 insert jpsiwidth:InterpolationWidths 356 2.1532344e-07 insert jpsiwidth:InterpolationWidths 357 2.1533371e-07 insert jpsiwidth:InterpolationWidths 358 2.1534399e-07 insert jpsiwidth:InterpolationWidths 359 2.1535426e-07 insert jpsiwidth:InterpolationWidths 360 2.1536454e-07 insert jpsiwidth:InterpolationWidths 361 2.1537481e-07 insert jpsiwidth:InterpolationWidths 362 2.1538509e-07 insert jpsiwidth:InterpolationWidths 363 2.1539537e-07 insert jpsiwidth:InterpolationWidths 364 2.1540564e-07 insert jpsiwidth:InterpolationWidths 365 2.1541592e-07 insert jpsiwidth:InterpolationWidths 366 2.154262e-07 insert jpsiwidth:InterpolationWidths 367 2.1543647e-07 insert jpsiwidth:InterpolationWidths 368 2.1544675e-07 insert jpsiwidth:InterpolationWidths 369 2.1545703e-07 insert jpsiwidth:InterpolationWidths 370 2.1546731e-07 insert jpsiwidth:InterpolationWidths 371 2.1547759e-07 insert jpsiwidth:InterpolationWidths 372 2.1548787e-07 insert jpsiwidth:InterpolationWidths 373 2.1549815e-07 insert jpsiwidth:InterpolationWidths 374 2.1550842e-07 insert jpsiwidth:InterpolationWidths 375 2.155187e-07 insert jpsiwidth:InterpolationWidths 376 2.1552899e-07 insert jpsiwidth:InterpolationWidths 377 2.1553927e-07 insert jpsiwidth:InterpolationWidths 378 2.149948e-07 insert jpsiwidth:InterpolationWidths 379 2.1500507e-07 insert jpsiwidth:InterpolationWidths 380 2.1501533e-07 insert jpsiwidth:InterpolationWidths 381 2.150256e-07 insert jpsiwidth:InterpolationWidths 382 2.1503587e-07 insert jpsiwidth:InterpolationWidths 383 2.1504613e-07 insert jpsiwidth:InterpolationWidths 384 2.150564e-07 insert jpsiwidth:InterpolationWidths 385 2.1506667e-07 insert jpsiwidth:InterpolationWidths 386 2.1507693e-07 insert jpsiwidth:InterpolationWidths 387 2.150872e-07 insert jpsiwidth:InterpolationWidths 388 2.1509747e-07 insert jpsiwidth:InterpolationWidths 389 2.1510774e-07 insert jpsiwidth:InterpolationWidths 390 2.1511801e-07 insert jpsiwidth:InterpolationWidths 391 2.1512827e-07 insert jpsiwidth:InterpolationWidths 392 2.1513854e-07 insert jpsiwidth:InterpolationWidths 393 2.1514881e-07 insert jpsiwidth:InterpolationWidths 394 2.1515908e-07 insert jpsiwidth:InterpolationWidths 395 2.1516935e-07 insert jpsiwidth:InterpolationWidths 396 2.1517962e-07 insert jpsiwidth:InterpolationWidths 397 2.1518989e-07 insert jpsiwidth:InterpolationWidths 398 2.1520016e-07 insert jpsiwidth:InterpolationWidths 399 2.1521043e-07 insert jpsiwidth:InterpolationWidths 400 2.1522071e-07 insert jpsiwidth:InterpolationWidths 401 2.1523098e-07 insert jpsiwidth:InterpolationWidths 402 2.1524125e-07 insert jpsiwidth:InterpolationWidths 403 2.1525152e-07 insert jpsiwidth:InterpolationWidths 404 2.1526179e-07 insert jpsiwidth:InterpolationWidths 405 2.1527207e-07 insert jpsiwidth:InterpolationWidths 406 2.1528234e-07 insert jpsiwidth:InterpolationWidths 407 2.1529261e-07 insert jpsiwidth:InterpolationWidths 408 2.1530289e-07 insert jpsiwidth:InterpolationWidths 409 2.1531316e-07 insert jpsiwidth:InterpolationWidths 410 2.1532344e-07 insert jpsiwidth:InterpolationWidths 411 2.1533371e-07 insert jpsiwidth:InterpolationWidths 412 2.1534399e-07 insert jpsiwidth:InterpolationWidths 413 2.1535426e-07 insert jpsiwidth:InterpolationWidths 414 2.1536454e-07 insert jpsiwidth:InterpolationWidths 415 2.1537481e-07 insert jpsiwidth:InterpolationWidths 416 2.1538509e-07 insert jpsiwidth:InterpolationWidths 417 2.1539537e-07 insert jpsiwidth:InterpolationWidths 418 2.1540564e-07 insert jpsiwidth:InterpolationWidths 419 2.1541592e-07 insert jpsiwidth:InterpolationWidths 420 2.154262e-07 insert jpsiwidth:InterpolationWidths 421 2.1543647e-07 insert jpsiwidth:InterpolationWidths 422 2.1544675e-07 insert jpsiwidth:InterpolationWidths 423 2.1545703e-07 insert jpsiwidth:InterpolationWidths 424 2.1546731e-07 insert jpsiwidth:InterpolationWidths 425 2.1547759e-07 insert jpsiwidth:InterpolationWidths 426 2.1548787e-07 insert jpsiwidth:InterpolationWidths 427 2.1549815e-07 insert jpsiwidth:InterpolationWidths 428 2.1550842e-07 insert jpsiwidth:InterpolationWidths 429 2.155187e-07 insert jpsiwidth:InterpolationWidths 430 2.1552899e-07 insert jpsiwidth:InterpolationWidths 431 2.1553927e-07 insert jpsiwidth:InterpolationWidths 432 1.5013712e-07 insert jpsiwidth:InterpolationWidths 433 1.5014191e-07 insert jpsiwidth:InterpolationWidths 434 1.5014669e-07 insert jpsiwidth:InterpolationWidths 435 1.5015148e-07 insert jpsiwidth:InterpolationWidths 436 1.5015627e-07 insert jpsiwidth:InterpolationWidths 437 1.5016105e-07 insert jpsiwidth:InterpolationWidths 438 1.5016584e-07 insert jpsiwidth:InterpolationWidths 439 1.5017063e-07 insert jpsiwidth:InterpolationWidths 440 1.5017541e-07 insert jpsiwidth:InterpolationWidths 441 1.501802e-07 insert jpsiwidth:InterpolationWidths 442 1.5018499e-07 insert jpsiwidth:InterpolationWidths 443 1.5018978e-07 insert jpsiwidth:InterpolationWidths 444 1.5019456e-07 insert jpsiwidth:InterpolationWidths 445 1.5019935e-07 insert jpsiwidth:InterpolationWidths 446 1.5020414e-07 insert jpsiwidth:InterpolationWidths 447 1.5020893e-07 insert jpsiwidth:InterpolationWidths 448 1.5021371e-07 insert jpsiwidth:InterpolationWidths 449 1.502185e-07 insert jpsiwidth:InterpolationWidths 450 1.5022329e-07 insert jpsiwidth:InterpolationWidths 451 1.5022808e-07 insert jpsiwidth:InterpolationWidths 452 1.5023286e-07 insert jpsiwidth:InterpolationWidths 453 1.5023765e-07 insert jpsiwidth:InterpolationWidths 454 1.5024244e-07 insert jpsiwidth:InterpolationWidths 455 1.5024723e-07 insert jpsiwidth:InterpolationWidths 456 1.5025202e-07 insert jpsiwidth:InterpolationWidths 457 1.5025681e-07 insert jpsiwidth:InterpolationWidths 458 1.502616e-07 insert jpsiwidth:InterpolationWidths 459 1.5026638e-07 insert jpsiwidth:InterpolationWidths 460 1.5027117e-07 insert jpsiwidth:InterpolationWidths 461 1.5027596e-07 insert jpsiwidth:InterpolationWidths 462 1.5028075e-07 insert jpsiwidth:InterpolationWidths 463 1.5028554e-07 insert jpsiwidth:InterpolationWidths 464 1.5029033e-07 insert jpsiwidth:InterpolationWidths 465 1.5029512e-07 insert jpsiwidth:InterpolationWidths 466 1.5029991e-07 insert jpsiwidth:InterpolationWidths 467 1.503047e-07 insert jpsiwidth:InterpolationWidths 468 1.5030949e-07 insert jpsiwidth:InterpolationWidths 469 1.5031428e-07 insert jpsiwidth:InterpolationWidths 470 1.5031907e-07 insert jpsiwidth:InterpolationWidths 471 1.5032386e-07 insert jpsiwidth:InterpolationWidths 472 1.5032865e-07 insert jpsiwidth:InterpolationWidths 473 1.5033344e-07 insert jpsiwidth:InterpolationWidths 474 1.5033823e-07 insert jpsiwidth:InterpolationWidths 475 1.5034302e-07 insert jpsiwidth:InterpolationWidths 476 1.5034781e-07 insert jpsiwidth:InterpolationWidths 477 1.503526e-07 insert jpsiwidth:InterpolationWidths 478 1.5035739e-07 insert jpsiwidth:InterpolationWidths 479 1.5036218e-07 insert jpsiwidth:InterpolationWidths 480 1.5036697e-07 insert jpsiwidth:InterpolationWidths 481 1.5037176e-07 insert jpsiwidth:InterpolationWidths 482 1.5037655e-07 insert jpsiwidth:InterpolationWidths 483 1.5038134e-07 insert jpsiwidth:InterpolationWidths 484 1.5038613e-07 insert jpsiwidth:InterpolationWidths 485 1.5039092e-07 insert jpsiwidth:InterpolationWidths 486 1.5013712e-07 insert jpsiwidth:InterpolationWidths 487 1.5014191e-07 insert jpsiwidth:InterpolationWidths 488 1.5014669e-07 insert jpsiwidth:InterpolationWidths 489 1.5015148e-07 insert jpsiwidth:InterpolationWidths 490 1.5015627e-07 insert jpsiwidth:InterpolationWidths 491 1.5016105e-07 insert jpsiwidth:InterpolationWidths 492 1.5016584e-07 insert jpsiwidth:InterpolationWidths 493 1.5017063e-07 insert jpsiwidth:InterpolationWidths 494 1.5017541e-07 insert jpsiwidth:InterpolationWidths 495 1.501802e-07 insert jpsiwidth:InterpolationWidths 496 1.5018499e-07 insert jpsiwidth:InterpolationWidths 497 1.5018978e-07 insert jpsiwidth:InterpolationWidths 498 1.5019456e-07 insert jpsiwidth:InterpolationWidths 499 1.5019935e-07 insert jpsiwidth:InterpolationWidths 500 1.5020414e-07 insert jpsiwidth:InterpolationWidths 501 1.5020893e-07 insert jpsiwidth:InterpolationWidths 502 1.5021371e-07 insert jpsiwidth:InterpolationWidths 503 1.502185e-07 insert jpsiwidth:InterpolationWidths 504 1.5022329e-07 insert jpsiwidth:InterpolationWidths 505 1.5022808e-07 insert jpsiwidth:InterpolationWidths 506 1.5023286e-07 insert jpsiwidth:InterpolationWidths 507 1.5023765e-07 insert jpsiwidth:InterpolationWidths 508 1.5024244e-07 insert jpsiwidth:InterpolationWidths 509 1.5024723e-07 insert jpsiwidth:InterpolationWidths 510 1.5025202e-07 insert jpsiwidth:InterpolationWidths 511 1.5025681e-07 insert jpsiwidth:InterpolationWidths 512 1.502616e-07 insert jpsiwidth:InterpolationWidths 513 1.5026638e-07 insert jpsiwidth:InterpolationWidths 514 1.5027117e-07 insert jpsiwidth:InterpolationWidths 515 1.5027596e-07 insert jpsiwidth:InterpolationWidths 516 1.5028075e-07 insert jpsiwidth:InterpolationWidths 517 1.5028554e-07 insert jpsiwidth:InterpolationWidths 518 1.5029033e-07 insert jpsiwidth:InterpolationWidths 519 1.5029512e-07 insert jpsiwidth:InterpolationWidths 520 1.5029991e-07 insert jpsiwidth:InterpolationWidths 521 1.503047e-07 insert jpsiwidth:InterpolationWidths 522 1.5030949e-07 insert jpsiwidth:InterpolationWidths 523 1.5031428e-07 insert jpsiwidth:InterpolationWidths 524 1.5031907e-07 insert jpsiwidth:InterpolationWidths 525 1.5032386e-07 insert jpsiwidth:InterpolationWidths 526 1.5032865e-07 insert jpsiwidth:InterpolationWidths 527 1.5033344e-07 insert jpsiwidth:InterpolationWidths 528 1.5033823e-07 insert jpsiwidth:InterpolationWidths 529 1.5034302e-07 insert jpsiwidth:InterpolationWidths 530 1.5034781e-07 insert jpsiwidth:InterpolationWidths 531 1.503526e-07 insert jpsiwidth:InterpolationWidths 532 1.5035739e-07 insert jpsiwidth:InterpolationWidths 533 1.5036218e-07 insert jpsiwidth:InterpolationWidths 534 1.5036697e-07 insert jpsiwidth:InterpolationWidths 535 1.5037176e-07 insert jpsiwidth:InterpolationWidths 536 1.5037655e-07 insert jpsiwidth:InterpolationWidths 537 1.5038134e-07 insert jpsiwidth:InterpolationWidths 538 1.5038613e-07 insert jpsiwidth:InterpolationWidths 539 1.5039092e-07 insert jpsiwidth:InterpolationWidths 540 1.5022615e-07 insert jpsiwidth:InterpolationWidths 541 1.5023094e-07 insert jpsiwidth:InterpolationWidths 542 1.5023573e-07 insert jpsiwidth:InterpolationWidths 543 1.5024051e-07 insert jpsiwidth:InterpolationWidths 544 1.502453e-07 insert jpsiwidth:InterpolationWidths 545 1.5025009e-07 insert jpsiwidth:InterpolationWidths 546 1.5025488e-07 insert jpsiwidth:InterpolationWidths 547 1.5025966e-07 insert jpsiwidth:InterpolationWidths 548 1.5026445e-07 insert jpsiwidth:InterpolationWidths 549 1.5026924e-07 insert jpsiwidth:InterpolationWidths 550 1.5027403e-07 insert jpsiwidth:InterpolationWidths 551 1.5027882e-07 insert jpsiwidth:InterpolationWidths 552 1.502836e-07 insert jpsiwidth:InterpolationWidths 553 1.5028839e-07 insert jpsiwidth:InterpolationWidths 554 1.5029318e-07 insert jpsiwidth:InterpolationWidths 555 1.5029797e-07 insert jpsiwidth:InterpolationWidths 556 1.5030276e-07 insert jpsiwidth:InterpolationWidths 557 1.5030755e-07 insert jpsiwidth:InterpolationWidths 558 1.5031234e-07 insert jpsiwidth:InterpolationWidths 559 1.5031712e-07 insert jpsiwidth:InterpolationWidths 560 1.5032191e-07 insert jpsiwidth:InterpolationWidths 561 1.503267e-07 insert jpsiwidth:InterpolationWidths 562 1.5033149e-07 insert jpsiwidth:InterpolationWidths 563 1.5033628e-07 insert jpsiwidth:InterpolationWidths 564 1.5034107e-07 insert jpsiwidth:InterpolationWidths 565 1.5034586e-07 insert jpsiwidth:InterpolationWidths 566 1.5035065e-07 insert jpsiwidth:InterpolationWidths 567 1.5035544e-07 insert jpsiwidth:InterpolationWidths 568 1.5036023e-07 insert jpsiwidth:InterpolationWidths 569 1.5036502e-07 insert jpsiwidth:InterpolationWidths 570 1.5036981e-07 insert jpsiwidth:InterpolationWidths 571 1.503746e-07 insert jpsiwidth:InterpolationWidths 572 1.5037939e-07 insert jpsiwidth:InterpolationWidths 573 1.5038418e-07 insert jpsiwidth:InterpolationWidths 574 1.5038897e-07 insert jpsiwidth:InterpolationWidths 575 1.5039376e-07 insert jpsiwidth:InterpolationWidths 576 1.5039855e-07 insert jpsiwidth:InterpolationWidths 577 1.5040334e-07 insert jpsiwidth:InterpolationWidths 578 1.5040813e-07 insert jpsiwidth:InterpolationWidths 579 1.5041292e-07 insert jpsiwidth:InterpolationWidths 580 1.5041771e-07 insert jpsiwidth:InterpolationWidths 581 1.504225e-07 insert jpsiwidth:InterpolationWidths 582 1.5042729e-07 insert jpsiwidth:InterpolationWidths 583 1.5043208e-07 insert jpsiwidth:InterpolationWidths 584 1.5043687e-07 insert jpsiwidth:InterpolationWidths 585 1.5044167e-07 insert jpsiwidth:InterpolationWidths 586 1.5044646e-07 insert jpsiwidth:InterpolationWidths 587 1.5045125e-07 insert jpsiwidth:InterpolationWidths 588 1.5045604e-07 insert jpsiwidth:InterpolationWidths 589 1.5046083e-07 insert jpsiwidth:InterpolationWidths 590 1.5046562e-07 insert jpsiwidth:InterpolationWidths 591 1.5047041e-07 insert jpsiwidth:InterpolationWidths 592 1.5047521e-07 insert jpsiwidth:InterpolationWidths 593 1.5048e-07 insert jpsiwidth:InterpolationWidths 594 4.4026104e-07 insert jpsiwidth:InterpolationWidths 595 4.4028075e-07 insert jpsiwidth:InterpolationWidths 596 4.4030046e-07 insert jpsiwidth:InterpolationWidths 597 4.4032017e-07 insert jpsiwidth:InterpolationWidths 598 4.4033988e-07 insert jpsiwidth:InterpolationWidths 599 4.4035958e-07 insert jpsiwidth:InterpolationWidths 600 4.4037929e-07 insert jpsiwidth:InterpolationWidths 601 4.40399e-07 insert jpsiwidth:InterpolationWidths 602 4.4041871e-07 insert jpsiwidth:InterpolationWidths 603 4.4043843e-07 insert jpsiwidth:InterpolationWidths 604 4.4045814e-07 insert jpsiwidth:InterpolationWidths 605 4.4047785e-07 insert jpsiwidth:InterpolationWidths 606 4.4049756e-07 insert jpsiwidth:InterpolationWidths 607 4.4051728e-07 insert jpsiwidth:InterpolationWidths 608 4.4053699e-07 insert jpsiwidth:InterpolationWidths 609 4.4055671e-07 insert jpsiwidth:InterpolationWidths 610 4.4057642e-07 insert jpsiwidth:InterpolationWidths 611 4.4059614e-07 insert jpsiwidth:InterpolationWidths 612 4.4061585e-07 insert jpsiwidth:InterpolationWidths 613 4.4063557e-07 insert jpsiwidth:InterpolationWidths 614 4.4065529e-07 insert jpsiwidth:InterpolationWidths 615 4.40675e-07 insert jpsiwidth:InterpolationWidths 616 4.4069472e-07 insert jpsiwidth:InterpolationWidths 617 4.4071444e-07 insert jpsiwidth:InterpolationWidths 618 4.4073416e-07 insert jpsiwidth:InterpolationWidths 619 4.4075388e-07 insert jpsiwidth:InterpolationWidths 620 4.407736e-07 insert jpsiwidth:InterpolationWidths 621 4.4079332e-07 insert jpsiwidth:InterpolationWidths 622 4.4081304e-07 insert jpsiwidth:InterpolationWidths 623 4.4083277e-07 insert jpsiwidth:InterpolationWidths 624 4.4085249e-07 insert jpsiwidth:InterpolationWidths 625 4.4087221e-07 insert jpsiwidth:InterpolationWidths 626 4.4089194e-07 insert jpsiwidth:InterpolationWidths 627 4.4091166e-07 insert jpsiwidth:InterpolationWidths 628 4.4093139e-07 insert jpsiwidth:InterpolationWidths 629 4.4095111e-07 insert jpsiwidth:InterpolationWidths 630 4.4097084e-07 insert jpsiwidth:InterpolationWidths 631 4.4099056e-07 insert jpsiwidth:InterpolationWidths 632 4.4101029e-07 insert jpsiwidth:InterpolationWidths 633 4.4103002e-07 insert jpsiwidth:InterpolationWidths 634 4.4104975e-07 insert jpsiwidth:InterpolationWidths 635 4.4106948e-07 insert jpsiwidth:InterpolationWidths 636 4.410892e-07 insert jpsiwidth:InterpolationWidths 637 4.4110893e-07 insert jpsiwidth:InterpolationWidths 638 4.4112866e-07 insert jpsiwidth:InterpolationWidths 639 4.411484e-07 insert jpsiwidth:InterpolationWidths 640 4.4116813e-07 insert jpsiwidth:InterpolationWidths 641 4.4118786e-07 insert jpsiwidth:InterpolationWidths 642 4.4120759e-07 insert jpsiwidth:InterpolationWidths 643 4.4122732e-07 insert jpsiwidth:InterpolationWidths 644 4.4124706e-07 insert jpsiwidth:InterpolationWidths 645 4.4126679e-07 insert jpsiwidth:InterpolationWidths 646 4.4128653e-07 insert jpsiwidth:InterpolationWidths 647 4.4130626e-07 insert jpsiwidth:InterpolationWidths 648 1.7811554e-08 insert jpsiwidth:InterpolationWidths 649 1.781252e-08 insert jpsiwidth:InterpolationWidths 650 1.7813486e-08 insert jpsiwidth:InterpolationWidths 651 1.7814451e-08 insert jpsiwidth:InterpolationWidths 652 1.7815417e-08 insert jpsiwidth:InterpolationWidths 653 1.7816383e-08 insert jpsiwidth:InterpolationWidths 654 1.781735e-08 insert jpsiwidth:InterpolationWidths 655 1.7818316e-08 insert jpsiwidth:InterpolationWidths 656 1.7819282e-08 insert jpsiwidth:InterpolationWidths 657 1.7820248e-08 insert jpsiwidth:InterpolationWidths 658 1.7821214e-08 insert jpsiwidth:InterpolationWidths 659 1.782218e-08 insert jpsiwidth:InterpolationWidths 660 1.7823146e-08 insert jpsiwidth:InterpolationWidths 661 1.7824113e-08 insert jpsiwidth:InterpolationWidths 662 1.7825079e-08 insert jpsiwidth:InterpolationWidths 663 1.7826045e-08 insert jpsiwidth:InterpolationWidths 664 1.7827012e-08 insert jpsiwidth:InterpolationWidths 665 1.7827978e-08 insert jpsiwidth:InterpolationWidths 666 1.7828944e-08 insert jpsiwidth:InterpolationWidths 667 1.7829911e-08 insert jpsiwidth:InterpolationWidths 668 1.7830877e-08 insert jpsiwidth:InterpolationWidths 669 1.7831844e-08 insert jpsiwidth:InterpolationWidths 670 1.783281e-08 insert jpsiwidth:InterpolationWidths 671 1.7833777e-08 insert jpsiwidth:InterpolationWidths 672 1.7834743e-08 insert jpsiwidth:InterpolationWidths 673 1.783571e-08 insert jpsiwidth:InterpolationWidths 674 1.7836677e-08 insert jpsiwidth:InterpolationWidths 675 1.7837643e-08 insert jpsiwidth:InterpolationWidths 676 1.783861e-08 insert jpsiwidth:InterpolationWidths 677 1.7839577e-08 insert jpsiwidth:InterpolationWidths 678 1.7840543e-08 insert jpsiwidth:InterpolationWidths 679 1.784151e-08 insert jpsiwidth:InterpolationWidths 680 1.7842477e-08 insert jpsiwidth:InterpolationWidths 681 1.7843444e-08 insert jpsiwidth:InterpolationWidths 682 1.7844411e-08 insert jpsiwidth:InterpolationWidths 683 1.7845378e-08 insert jpsiwidth:InterpolationWidths 684 1.7846345e-08 insert jpsiwidth:InterpolationWidths 685 1.7847312e-08 insert jpsiwidth:InterpolationWidths 686 1.7848279e-08 insert jpsiwidth:InterpolationWidths 687 1.7849246e-08 insert jpsiwidth:InterpolationWidths 688 1.7850213e-08 insert jpsiwidth:InterpolationWidths 689 1.785118e-08 insert jpsiwidth:InterpolationWidths 690 1.7852147e-08 insert jpsiwidth:InterpolationWidths 691 1.7853114e-08 insert jpsiwidth:InterpolationWidths 692 1.7854081e-08 insert jpsiwidth:InterpolationWidths 693 1.7855048e-08 insert jpsiwidth:InterpolationWidths 694 1.7856015e-08 insert jpsiwidth:InterpolationWidths 695 1.7856983e-08 insert jpsiwidth:InterpolationWidths 696 1.785795e-08 insert jpsiwidth:InterpolationWidths 697 1.7858917e-08 insert jpsiwidth:InterpolationWidths 698 1.7859885e-08 insert jpsiwidth:InterpolationWidths 699 1.7860852e-08 insert jpsiwidth:InterpolationWidths 700 1.7861819e-08 insert jpsiwidth:InterpolationWidths 701 1.7862787e-08 insert jpsiwidth:InterpolationWidths 702 9.4439499e-09 insert jpsiwidth:InterpolationWidths 703 9.4444731e-09 insert jpsiwidth:InterpolationWidths 704 9.4449964e-09 insert jpsiwidth:InterpolationWidths 705 9.4455197e-09 insert jpsiwidth:InterpolationWidths 706 9.446043e-09 insert jpsiwidth:InterpolationWidths 707 9.4465664e-09 insert jpsiwidth:InterpolationWidths 708 9.4470897e-09 insert jpsiwidth:InterpolationWidths 709 9.4476131e-09 insert jpsiwidth:InterpolationWidths 710 9.4481364e-09 insert jpsiwidth:InterpolationWidths 711 9.4486598e-09 insert jpsiwidth:InterpolationWidths 712 9.4491832e-09 insert jpsiwidth:InterpolationWidths 713 9.4497067e-09 insert jpsiwidth:InterpolationWidths 714 9.4502301e-09 insert jpsiwidth:InterpolationWidths 715 9.4507536e-09 insert jpsiwidth:InterpolationWidths 716 9.451277e-09 insert jpsiwidth:InterpolationWidths 717 9.4518005e-09 insert jpsiwidth:InterpolationWidths 718 9.452324e-09 insert jpsiwidth:InterpolationWidths 719 9.4528476e-09 insert jpsiwidth:InterpolationWidths 720 9.4533711e-09 insert jpsiwidth:InterpolationWidths 721 9.4538946e-09 insert jpsiwidth:InterpolationWidths 722 9.4544182e-09 insert jpsiwidth:InterpolationWidths 723 9.4549418e-09 insert jpsiwidth:InterpolationWidths 724 9.4554654e-09 insert jpsiwidth:InterpolationWidths 725 9.455989e-09 insert jpsiwidth:InterpolationWidths 726 9.4565127e-09 insert jpsiwidth:InterpolationWidths 727 9.4570363e-09 insert jpsiwidth:InterpolationWidths 728 9.45756e-09 insert jpsiwidth:InterpolationWidths 729 9.4580837e-09 insert jpsiwidth:InterpolationWidths 730 9.4586074e-09 insert jpsiwidth:InterpolationWidths 731 9.4591311e-09 insert jpsiwidth:InterpolationWidths 732 9.4596548e-09 insert jpsiwidth:InterpolationWidths 733 9.4601786e-09 insert jpsiwidth:InterpolationWidths 734 9.4607023e-09 insert jpsiwidth:InterpolationWidths 735 9.4612261e-09 insert jpsiwidth:InterpolationWidths 736 9.4617499e-09 insert jpsiwidth:InterpolationWidths 737 9.4622737e-09 insert jpsiwidth:InterpolationWidths 738 9.4627976e-09 insert jpsiwidth:InterpolationWidths 739 9.4633214e-09 insert jpsiwidth:InterpolationWidths 740 9.4638453e-09 insert jpsiwidth:InterpolationWidths 741 9.4643691e-09 insert jpsiwidth:InterpolationWidths 742 9.464893e-09 insert jpsiwidth:InterpolationWidths 743 9.4654169e-09 insert jpsiwidth:InterpolationWidths 744 9.4659409e-09 insert jpsiwidth:InterpolationWidths 745 9.4664648e-09 insert jpsiwidth:InterpolationWidths 746 9.4669888e-09 insert jpsiwidth:InterpolationWidths 747 9.4675128e-09 insert jpsiwidth:InterpolationWidths 748 9.4680367e-09 insert jpsiwidth:InterpolationWidths 749 9.4685608e-09 insert jpsiwidth:InterpolationWidths 750 9.4690848e-09 insert jpsiwidth:InterpolationWidths 751 9.4696088e-09 insert jpsiwidth:InterpolationWidths 752 9.4701329e-09 insert jpsiwidth:InterpolationWidths 753 9.470657e-09 insert jpsiwidth:InterpolationWidths 754 9.471181e-09 insert jpsiwidth:InterpolationWidths 755 9.4717051e-09 insert jpsiwidth:InterpolationWidths 756 9.1871329e-08 insert jpsiwidth:InterpolationWidths 757 9.1874942e-08 insert jpsiwidth:InterpolationWidths 758 9.1878555e-08 insert jpsiwidth:InterpolationWidths 759 9.1882168e-08 insert jpsiwidth:InterpolationWidths 760 9.1885782e-08 insert jpsiwidth:InterpolationWidths 761 9.1889395e-08 insert jpsiwidth:InterpolationWidths 762 9.1893008e-08 insert jpsiwidth:InterpolationWidths 763 9.1896622e-08 insert jpsiwidth:InterpolationWidths 764 9.1900236e-08 insert jpsiwidth:InterpolationWidths 765 9.190385e-08 insert jpsiwidth:InterpolationWidths 766 9.1907463e-08 insert jpsiwidth:InterpolationWidths 767 9.1911077e-08 insert jpsiwidth:InterpolationWidths 768 9.1914692e-08 insert jpsiwidth:InterpolationWidths 769 9.1918306e-08 insert jpsiwidth:InterpolationWidths 770 9.192192e-08 insert jpsiwidth:InterpolationWidths 771 9.1925534e-08 insert jpsiwidth:InterpolationWidths 772 9.1929149e-08 insert jpsiwidth:InterpolationWidths 773 9.1932763e-08 insert jpsiwidth:InterpolationWidths 774 9.1936378e-08 insert jpsiwidth:InterpolationWidths 775 9.1939993e-08 insert jpsiwidth:InterpolationWidths 776 9.1943607e-08 insert jpsiwidth:InterpolationWidths 777 9.1947222e-08 insert jpsiwidth:InterpolationWidths 778 9.1950837e-08 insert jpsiwidth:InterpolationWidths 779 9.1954452e-08 insert jpsiwidth:InterpolationWidths 780 9.1958067e-08 insert jpsiwidth:InterpolationWidths 781 9.1961683e-08 insert jpsiwidth:InterpolationWidths 782 9.1965298e-08 insert jpsiwidth:InterpolationWidths 783 9.1968914e-08 insert jpsiwidth:InterpolationWidths 784 9.1972529e-08 insert jpsiwidth:InterpolationWidths 785 9.1976145e-08 insert jpsiwidth:InterpolationWidths 786 9.197976e-08 insert jpsiwidth:InterpolationWidths 787 9.1983376e-08 insert jpsiwidth:InterpolationWidths 788 9.1986992e-08 insert jpsiwidth:InterpolationWidths 789 9.1990608e-08 insert jpsiwidth:InterpolationWidths 790 9.1994224e-08 insert jpsiwidth:InterpolationWidths 791 9.199784e-08 insert jpsiwidth:InterpolationWidths 792 9.2001457e-08 insert jpsiwidth:InterpolationWidths 793 9.2005073e-08 insert jpsiwidth:InterpolationWidths 794 9.200869e-08 insert jpsiwidth:InterpolationWidths 795 9.2012306e-08 insert jpsiwidth:InterpolationWidths 796 9.2015923e-08 insert jpsiwidth:InterpolationWidths 797 9.2019539e-08 insert jpsiwidth:InterpolationWidths 798 9.2023156e-08 insert jpsiwidth:InterpolationWidths 799 9.2026773e-08 insert jpsiwidth:InterpolationWidths 800 9.203039e-08 insert jpsiwidth:InterpolationWidths 801 9.2034007e-08 insert jpsiwidth:InterpolationWidths 802 9.2037625e-08 insert jpsiwidth:InterpolationWidths 803 9.2041242e-08 insert jpsiwidth:InterpolationWidths 804 9.2044859e-08 insert jpsiwidth:InterpolationWidths 805 9.2048477e-08 insert jpsiwidth:InterpolationWidths 806 9.2052094e-08 insert jpsiwidth:InterpolationWidths 807 9.2055712e-08 insert jpsiwidth:InterpolationWidths 808 9.205933e-08 insert jpsiwidth:InterpolationWidths 809 9.2062948e-08 insert jpsiwidth:InterpolationWidths 810 1.7770475e-08 insert jpsiwidth:InterpolationWidths 811 1.7771298e-08 insert jpsiwidth:InterpolationWidths 812 1.7772122e-08 insert jpsiwidth:InterpolationWidths 813 1.7772945e-08 insert jpsiwidth:InterpolationWidths 814 1.7773768e-08 insert jpsiwidth:InterpolationWidths 815 1.7774592e-08 insert jpsiwidth:InterpolationWidths 816 1.7775415e-08 insert jpsiwidth:InterpolationWidths 817 1.7776239e-08 insert jpsiwidth:InterpolationWidths 818 1.7777063e-08 insert jpsiwidth:InterpolationWidths 819 1.7777886e-08 insert jpsiwidth:InterpolationWidths 820 1.777871e-08 insert jpsiwidth:InterpolationWidths 821 1.7779533e-08 insert jpsiwidth:InterpolationWidths 822 1.7780357e-08 insert jpsiwidth:InterpolationWidths 823 1.7781181e-08 insert jpsiwidth:InterpolationWidths 824 1.7782004e-08 insert jpsiwidth:InterpolationWidths 825 1.7782828e-08 insert jpsiwidth:InterpolationWidths 826 1.7783652e-08 insert jpsiwidth:InterpolationWidths 827 1.7784475e-08 insert jpsiwidth:InterpolationWidths 828 1.7785299e-08 insert jpsiwidth:InterpolationWidths 829 1.7786123e-08 insert jpsiwidth:InterpolationWidths 830 1.7786947e-08 insert jpsiwidth:InterpolationWidths 831 1.7787771e-08 insert jpsiwidth:InterpolationWidths 832 1.7788595e-08 insert jpsiwidth:InterpolationWidths 833 1.7789418e-08 insert jpsiwidth:InterpolationWidths 834 1.7790242e-08 insert jpsiwidth:InterpolationWidths 835 1.7791066e-08 insert jpsiwidth:InterpolationWidths 836 1.779189e-08 insert jpsiwidth:InterpolationWidths 837 1.7792714e-08 insert jpsiwidth:InterpolationWidths 838 1.7793538e-08 insert jpsiwidth:InterpolationWidths 839 1.7794362e-08 insert jpsiwidth:InterpolationWidths 840 1.7795186e-08 insert jpsiwidth:InterpolationWidths 841 1.779601e-08 insert jpsiwidth:InterpolationWidths 842 1.7796835e-08 insert jpsiwidth:InterpolationWidths 843 1.7797659e-08 insert jpsiwidth:InterpolationWidths 844 1.7798483e-08 insert jpsiwidth:InterpolationWidths 845 1.7799307e-08 insert jpsiwidth:InterpolationWidths 846 1.7800131e-08 insert jpsiwidth:InterpolationWidths 847 1.7800955e-08 insert jpsiwidth:InterpolationWidths 848 1.780178e-08 insert jpsiwidth:InterpolationWidths 849 1.7802604e-08 insert jpsiwidth:InterpolationWidths 850 1.7803428e-08 insert jpsiwidth:InterpolationWidths 851 1.7804252e-08 insert jpsiwidth:InterpolationWidths 852 1.7805077e-08 insert jpsiwidth:InterpolationWidths 853 1.7805901e-08 insert jpsiwidth:InterpolationWidths 854 1.7806725e-08 insert jpsiwidth:InterpolationWidths 855 1.780755e-08 insert jpsiwidth:InterpolationWidths 856 1.7808374e-08 insert jpsiwidth:InterpolationWidths 857 1.7809199e-08 insert jpsiwidth:InterpolationWidths 858 1.7810023e-08 insert jpsiwidth:InterpolationWidths 859 1.7810848e-08 insert jpsiwidth:InterpolationWidths 860 1.7811672e-08 insert jpsiwidth:InterpolationWidths 861 1.7812497e-08 insert jpsiwidth:InterpolationWidths 862 1.7813321e-08 insert jpsiwidth:InterpolationWidths 863 1.7814146e-08 insert jpsiwidth:InterpolationWidths 864 1.1501456e-06 insert jpsiwidth:InterpolationWidths 865 1.1510407e-06 insert jpsiwidth:InterpolationWidths 866 1.1519362e-06 insert jpsiwidth:InterpolationWidths 867 1.1528323e-06 insert jpsiwidth:InterpolationWidths 868 1.1537288e-06 insert jpsiwidth:InterpolationWidths 869 1.1546259e-06 insert jpsiwidth:InterpolationWidths 870 1.1555235e-06 insert jpsiwidth:InterpolationWidths 871 1.1564216e-06 insert jpsiwidth:InterpolationWidths 872 1.1573202e-06 insert jpsiwidth:InterpolationWidths 873 1.1582193e-06 insert jpsiwidth:InterpolationWidths 874 1.1591189e-06 insert jpsiwidth:InterpolationWidths 875 1.160019e-06 insert jpsiwidth:InterpolationWidths 876 1.1609197e-06 insert jpsiwidth:InterpolationWidths 877 1.1618208e-06 insert jpsiwidth:InterpolationWidths 878 1.1627225e-06 insert jpsiwidth:InterpolationWidths 879 1.1636247e-06 insert jpsiwidth:InterpolationWidths 880 1.1645273e-06 insert jpsiwidth:InterpolationWidths 881 1.1654305e-06 insert jpsiwidth:InterpolationWidths 882 1.1663342e-06 insert jpsiwidth:InterpolationWidths 883 1.1672385e-06 insert jpsiwidth:InterpolationWidths 884 1.1681432e-06 insert jpsiwidth:InterpolationWidths 885 1.1690484e-06 insert jpsiwidth:InterpolationWidths 886 1.1699542e-06 insert jpsiwidth:InterpolationWidths 887 1.1708604e-06 insert jpsiwidth:InterpolationWidths 888 1.1717672e-06 insert jpsiwidth:InterpolationWidths 889 1.1726745e-06 insert jpsiwidth:InterpolationWidths 890 1.1735823e-06 insert jpsiwidth:InterpolationWidths 891 1.1744906e-06 insert jpsiwidth:InterpolationWidths 892 1.1753994e-06 insert jpsiwidth:InterpolationWidths 893 1.1763088e-06 insert jpsiwidth:InterpolationWidths 894 1.1772186e-06 insert jpsiwidth:InterpolationWidths 895 1.178129e-06 insert jpsiwidth:InterpolationWidths 896 1.1790399e-06 insert jpsiwidth:InterpolationWidths 897 1.1799512e-06 insert jpsiwidth:InterpolationWidths 898 1.1808631e-06 insert jpsiwidth:InterpolationWidths 899 1.1817756e-06 insert jpsiwidth:InterpolationWidths 900 1.1826885e-06 insert jpsiwidth:InterpolationWidths 901 1.1836019e-06 insert jpsiwidth:InterpolationWidths 902 1.1845159e-06 insert jpsiwidth:InterpolationWidths 903 1.1854304e-06 insert jpsiwidth:InterpolationWidths 904 1.1863454e-06 insert jpsiwidth:InterpolationWidths 905 1.1872609e-06 insert jpsiwidth:InterpolationWidths 906 1.1881769e-06 insert jpsiwidth:InterpolationWidths 907 1.1890934e-06 insert jpsiwidth:InterpolationWidths 908 1.1900104e-06 insert jpsiwidth:InterpolationWidths 909 1.190928e-06 insert jpsiwidth:InterpolationWidths 910 1.1918461e-06 insert jpsiwidth:InterpolationWidths 911 1.1927647e-06 insert jpsiwidth:InterpolationWidths 912 1.1936838e-06 insert jpsiwidth:InterpolationWidths 913 1.1946034e-06 insert jpsiwidth:InterpolationWidths 914 1.1955235e-06 insert jpsiwidth:InterpolationWidths 915 1.1964442e-06 insert jpsiwidth:InterpolationWidths 916 1.1973654e-06 insert jpsiwidth:InterpolationWidths 917 1.198287e-06 insert jpsiwidth:InterpolationWidths 918 5.0435261e-08 insert jpsiwidth:InterpolationWidths 919 5.0438318e-08 insert jpsiwidth:InterpolationWidths 920 5.0441375e-08 insert jpsiwidth:InterpolationWidths 921 5.0444433e-08 insert jpsiwidth:InterpolationWidths 922 5.044749e-08 insert jpsiwidth:InterpolationWidths 923 5.0450547e-08 insert jpsiwidth:InterpolationWidths 924 5.0453605e-08 insert jpsiwidth:InterpolationWidths 925 5.0456662e-08 insert jpsiwidth:InterpolationWidths 926 5.045972e-08 insert jpsiwidth:InterpolationWidths 927 5.0462778e-08 insert jpsiwidth:InterpolationWidths 928 5.0465836e-08 insert jpsiwidth:InterpolationWidths 929 5.0468894e-08 insert jpsiwidth:InterpolationWidths 930 5.0471952e-08 insert jpsiwidth:InterpolationWidths 931 5.047501e-08 insert jpsiwidth:InterpolationWidths 932 5.0478069e-08 insert jpsiwidth:InterpolationWidths 933 5.0481127e-08 insert jpsiwidth:InterpolationWidths 934 5.0484186e-08 insert jpsiwidth:InterpolationWidths 935 5.0487244e-08 insert jpsiwidth:InterpolationWidths 936 5.0490303e-08 insert jpsiwidth:InterpolationWidths 937 5.0493362e-08 insert jpsiwidth:InterpolationWidths 938 5.0496421e-08 insert jpsiwidth:InterpolationWidths 939 5.049948e-08 insert jpsiwidth:InterpolationWidths 940 5.0502539e-08 insert jpsiwidth:InterpolationWidths 941 5.0505599e-08 insert jpsiwidth:InterpolationWidths 942 5.0508658e-08 insert jpsiwidth:InterpolationWidths 943 5.0511718e-08 insert jpsiwidth:InterpolationWidths 944 5.0514778e-08 insert jpsiwidth:InterpolationWidths 945 5.0517837e-08 insert jpsiwidth:InterpolationWidths 946 5.0520897e-08 insert jpsiwidth:InterpolationWidths 947 5.0523957e-08 insert jpsiwidth:InterpolationWidths 948 5.0527017e-08 insert jpsiwidth:InterpolationWidths 949 5.0530078e-08 insert jpsiwidth:InterpolationWidths 950 5.0533138e-08 insert jpsiwidth:InterpolationWidths 951 5.0536198e-08 insert jpsiwidth:InterpolationWidths 952 5.0539259e-08 insert jpsiwidth:InterpolationWidths 953 5.054232e-08 insert jpsiwidth:InterpolationWidths 954 5.054538e-08 insert jpsiwidth:InterpolationWidths 955 5.0548441e-08 insert jpsiwidth:InterpolationWidths 956 5.0551502e-08 insert jpsiwidth:InterpolationWidths 957 5.0554563e-08 insert jpsiwidth:InterpolationWidths 958 5.0557624e-08 insert jpsiwidth:InterpolationWidths 959 5.0560686e-08 insert jpsiwidth:InterpolationWidths 960 5.0563747e-08 insert jpsiwidth:InterpolationWidths 961 5.0566809e-08 insert jpsiwidth:InterpolationWidths 962 5.056987e-08 insert jpsiwidth:InterpolationWidths 963 5.0572932e-08 insert jpsiwidth:InterpolationWidths 964 5.0575994e-08 insert jpsiwidth:InterpolationWidths 965 5.0579056e-08 insert jpsiwidth:InterpolationWidths 966 5.0582118e-08 insert jpsiwidth:InterpolationWidths 967 5.058518e-08 insert jpsiwidth:InterpolationWidths 968 5.0588243e-08 insert jpsiwidth:InterpolationWidths 969 5.0591305e-08 insert jpsiwidth:InterpolationWidths 970 5.0594368e-08 insert jpsiwidth:InterpolationWidths 971 5.059743e-08 insert jpsiwidth:InterpolationWidths 972 1.2409213e-07 insert jpsiwidth:InterpolationWidths 973 1.2410075e-07 insert jpsiwidth:InterpolationWidths 974 1.2410937e-07 insert jpsiwidth:InterpolationWidths 975 1.24118e-07 insert jpsiwidth:InterpolationWidths 976 1.2412662e-07 insert jpsiwidth:InterpolationWidths 977 1.2413524e-07 insert jpsiwidth:InterpolationWidths 978 1.2414386e-07 insert jpsiwidth:InterpolationWidths 979 1.2415249e-07 insert jpsiwidth:InterpolationWidths 980 1.2416111e-07 insert jpsiwidth:InterpolationWidths 981 1.2416974e-07 insert jpsiwidth:InterpolationWidths 982 1.2417836e-07 insert jpsiwidth:InterpolationWidths 983 1.2418699e-07 insert jpsiwidth:InterpolationWidths 984 1.2419561e-07 insert jpsiwidth:InterpolationWidths 985 1.2420424e-07 insert jpsiwidth:InterpolationWidths 986 1.2421287e-07 insert jpsiwidth:InterpolationWidths 987 1.2422149e-07 insert jpsiwidth:InterpolationWidths 988 1.2423012e-07 insert jpsiwidth:InterpolationWidths 989 1.2423875e-07 insert jpsiwidth:InterpolationWidths 990 1.2424737e-07 insert jpsiwidth:InterpolationWidths 991 1.24256e-07 insert jpsiwidth:InterpolationWidths 992 1.2426463e-07 insert jpsiwidth:InterpolationWidths 993 1.2427326e-07 insert jpsiwidth:InterpolationWidths 994 1.2428189e-07 insert jpsiwidth:InterpolationWidths 995 1.2429052e-07 insert jpsiwidth:InterpolationWidths 996 1.2429915e-07 insert jpsiwidth:InterpolationWidths 997 1.2430778e-07 insert jpsiwidth:InterpolationWidths 998 1.2431641e-07 insert jpsiwidth:InterpolationWidths 999 1.2432504e-07 insert jpsiwidth:InterpolationWidths 1000 1.2433367e-07 insert jpsiwidth:InterpolationWidths 1001 1.243423e-07 insert jpsiwidth:InterpolationWidths 1002 1.2435094e-07 insert jpsiwidth:InterpolationWidths 1003 1.2435957e-07 insert jpsiwidth:InterpolationWidths 1004 1.243682e-07 insert jpsiwidth:InterpolationWidths 1005 1.2437683e-07 insert jpsiwidth:InterpolationWidths 1006 1.2438547e-07 insert jpsiwidth:InterpolationWidths 1007 1.243941e-07 insert jpsiwidth:InterpolationWidths 1008 1.2440274e-07 insert jpsiwidth:InterpolationWidths 1009 1.2441137e-07 insert jpsiwidth:InterpolationWidths 1010 1.2442e-07 insert jpsiwidth:InterpolationWidths 1011 1.2442864e-07 insert jpsiwidth:InterpolationWidths 1012 1.2443728e-07 insert jpsiwidth:InterpolationWidths 1013 1.2444591e-07 insert jpsiwidth:InterpolationWidths 1014 1.2445455e-07 insert jpsiwidth:InterpolationWidths 1015 1.2446318e-07 insert jpsiwidth:InterpolationWidths 1016 1.2447182e-07 insert jpsiwidth:InterpolationWidths 1017 1.2448046e-07 insert jpsiwidth:InterpolationWidths 1018 1.244891e-07 insert jpsiwidth:InterpolationWidths 1019 1.2449773e-07 insert jpsiwidth:InterpolationWidths 1020 1.2450637e-07 insert jpsiwidth:InterpolationWidths 1021 1.2451501e-07 insert jpsiwidth:InterpolationWidths 1022 1.2452365e-07 insert jpsiwidth:InterpolationWidths 1023 1.2453229e-07 insert jpsiwidth:InterpolationWidths 1024 1.2454093e-07 insert jpsiwidth:InterpolationWidths 1025 1.2454957e-07 insert jpsiwidth:InterpolationWidths 1026 7.0330282e-08 insert jpsiwidth:InterpolationWidths 1027 7.0335208e-08 insert jpsiwidth:InterpolationWidths 1028 7.0340135e-08 insert jpsiwidth:InterpolationWidths 1029 7.0345062e-08 insert jpsiwidth:InterpolationWidths 1030 7.034999e-08 insert jpsiwidth:InterpolationWidths 1031 7.0354917e-08 insert jpsiwidth:InterpolationWidths 1032 7.0359844e-08 insert jpsiwidth:InterpolationWidths 1033 7.0364772e-08 insert jpsiwidth:InterpolationWidths 1034 7.03697e-08 insert jpsiwidth:InterpolationWidths 1035 7.0374628e-08 insert jpsiwidth:InterpolationWidths 1036 7.0379556e-08 insert jpsiwidth:InterpolationWidths 1037 7.0384484e-08 insert jpsiwidth:InterpolationWidths 1038 7.0389412e-08 insert jpsiwidth:InterpolationWidths 1039 7.0394341e-08 insert jpsiwidth:InterpolationWidths 1040 7.039927e-08 insert jpsiwidth:InterpolationWidths 1041 7.0404198e-08 insert jpsiwidth:InterpolationWidths 1042 7.0409127e-08 insert jpsiwidth:InterpolationWidths 1043 7.0414057e-08 insert jpsiwidth:InterpolationWidths 1044 7.0418986e-08 insert jpsiwidth:InterpolationWidths 1045 7.0423915e-08 insert jpsiwidth:InterpolationWidths 1046 7.0428845e-08 insert jpsiwidth:InterpolationWidths 1047 7.0433774e-08 insert jpsiwidth:InterpolationWidths 1048 7.0438704e-08 insert jpsiwidth:InterpolationWidths 1049 7.0443634e-08 insert jpsiwidth:InterpolationWidths 1050 7.0448565e-08 insert jpsiwidth:InterpolationWidths 1051 7.0453495e-08 insert jpsiwidth:InterpolationWidths 1052 7.0458425e-08 insert jpsiwidth:InterpolationWidths 1053 7.0463356e-08 insert jpsiwidth:InterpolationWidths 1054 7.0468287e-08 insert jpsiwidth:InterpolationWidths 1055 7.0473218e-08 insert jpsiwidth:InterpolationWidths 1056 7.0478149e-08 insert jpsiwidth:InterpolationWidths 1057 7.048308e-08 insert jpsiwidth:InterpolationWidths 1058 7.0488011e-08 insert jpsiwidth:InterpolationWidths 1059 7.0492943e-08 insert jpsiwidth:InterpolationWidths 1060 7.0497874e-08 insert jpsiwidth:InterpolationWidths 1061 7.0502806e-08 insert jpsiwidth:InterpolationWidths 1062 7.0507738e-08 insert jpsiwidth:InterpolationWidths 1063 7.051267e-08 insert jpsiwidth:InterpolationWidths 1064 7.0517602e-08 insert jpsiwidth:InterpolationWidths 1065 7.0522535e-08 insert jpsiwidth:InterpolationWidths 1066 7.0527467e-08 insert jpsiwidth:InterpolationWidths 1067 7.05324e-08 insert jpsiwidth:InterpolationWidths 1068 7.0537333e-08 insert jpsiwidth:InterpolationWidths 1069 7.0542266e-08 insert jpsiwidth:InterpolationWidths 1070 7.0547199e-08 insert jpsiwidth:InterpolationWidths 1071 7.0552132e-08 insert jpsiwidth:InterpolationWidths 1072 7.0557066e-08 insert jpsiwidth:InterpolationWidths 1073 7.0561999e-08 insert jpsiwidth:InterpolationWidths 1074 7.0566933e-08 insert jpsiwidth:InterpolationWidths 1075 7.0571867e-08 insert jpsiwidth:InterpolationWidths 1076 7.0576801e-08 insert jpsiwidth:InterpolationWidths 1077 7.0581735e-08 insert jpsiwidth:InterpolationWidths 1078 7.0586669e-08 insert jpsiwidth:InterpolationWidths 1079 7.0591604e-08 insert jpsiwidth:InterpolationWidths 1080 5.306674e-08 insert jpsiwidth:InterpolationWidths 1081 5.3071431e-08 insert jpsiwidth:InterpolationWidths 1082 5.3076122e-08 insert jpsiwidth:InterpolationWidths 1083 5.3080813e-08 insert jpsiwidth:InterpolationWidths 1084 5.3085504e-08 insert jpsiwidth:InterpolationWidths 1085 5.3090195e-08 insert jpsiwidth:InterpolationWidths 1086 5.3094887e-08 insert jpsiwidth:InterpolationWidths 1087 5.3099578e-08 insert jpsiwidth:InterpolationWidths 1088 5.3104269e-08 insert jpsiwidth:InterpolationWidths 1089 5.3108961e-08 insert jpsiwidth:InterpolationWidths 1090 5.3113652e-08 insert jpsiwidth:InterpolationWidths 1091 5.3118344e-08 insert jpsiwidth:InterpolationWidths 1092 5.3123036e-08 insert jpsiwidth:InterpolationWidths 1093 5.3127727e-08 insert jpsiwidth:InterpolationWidths 1094 5.3132419e-08 insert jpsiwidth:InterpolationWidths 1095 5.3137111e-08 insert jpsiwidth:InterpolationWidths 1096 5.3141803e-08 insert jpsiwidth:InterpolationWidths 1097 5.3146495e-08 insert jpsiwidth:InterpolationWidths 1098 5.3151187e-08 insert jpsiwidth:InterpolationWidths 1099 5.3155879e-08 insert jpsiwidth:InterpolationWidths 1100 5.3160571e-08 insert jpsiwidth:InterpolationWidths 1101 5.3165263e-08 insert jpsiwidth:InterpolationWidths 1102 5.3169955e-08 insert jpsiwidth:InterpolationWidths 1103 5.3174648e-08 insert jpsiwidth:InterpolationWidths 1104 5.317934e-08 insert jpsiwidth:InterpolationWidths 1105 5.3184033e-08 insert jpsiwidth:InterpolationWidths 1106 5.3188725e-08 insert jpsiwidth:InterpolationWidths 1107 5.3193418e-08 insert jpsiwidth:InterpolationWidths 1108 5.319811e-08 insert jpsiwidth:InterpolationWidths 1109 5.3202803e-08 insert jpsiwidth:InterpolationWidths 1110 5.3207496e-08 insert jpsiwidth:InterpolationWidths 1111 5.3212189e-08 insert jpsiwidth:InterpolationWidths 1112 5.3216881e-08 insert jpsiwidth:InterpolationWidths 1113 5.3221574e-08 insert jpsiwidth:InterpolationWidths 1114 5.3226267e-08 insert jpsiwidth:InterpolationWidths 1115 5.3230961e-08 insert jpsiwidth:InterpolationWidths 1116 5.3235654e-08 insert jpsiwidth:InterpolationWidths 1117 5.3240347e-08 insert jpsiwidth:InterpolationWidths 1118 5.324504e-08 insert jpsiwidth:InterpolationWidths 1119 5.3249733e-08 insert jpsiwidth:InterpolationWidths 1120 5.3254427e-08 insert jpsiwidth:InterpolationWidths 1121 5.325912e-08 insert jpsiwidth:InterpolationWidths 1122 5.3263814e-08 insert jpsiwidth:InterpolationWidths 1123 5.3268507e-08 insert jpsiwidth:InterpolationWidths 1124 5.3273201e-08 insert jpsiwidth:InterpolationWidths 1125 5.3277895e-08 insert jpsiwidth:InterpolationWidths 1126 5.3282588e-08 insert jpsiwidth:InterpolationWidths 1127 5.3287282e-08 insert jpsiwidth:InterpolationWidths 1128 5.3291976e-08 insert jpsiwidth:InterpolationWidths 1129 5.329667e-08 insert jpsiwidth:InterpolationWidths 1130 5.3301364e-08 insert jpsiwidth:InterpolationWidths 1131 5.3306058e-08 insert jpsiwidth:InterpolationWidths 1132 5.3310752e-08 insert jpsiwidth:InterpolationWidths 1133 5.3315446e-08 insert jpsiwidth:InterpolationWidths 1134 1.3306025e-08 insert jpsiwidth:InterpolationWidths 1135 1.3306582e-08 insert jpsiwidth:InterpolationWidths 1136 1.330714e-08 insert jpsiwidth:InterpolationWidths 1137 1.3307698e-08 insert jpsiwidth:InterpolationWidths 1138 1.3308255e-08 insert jpsiwidth:InterpolationWidths 1139 1.3308813e-08 insert jpsiwidth:InterpolationWidths 1140 1.3309371e-08 insert jpsiwidth:InterpolationWidths 1141 1.3309929e-08 insert jpsiwidth:InterpolationWidths 1142 1.3310486e-08 insert jpsiwidth:InterpolationWidths 1143 1.3311044e-08 insert jpsiwidth:InterpolationWidths 1144 1.3311602e-08 insert jpsiwidth:InterpolationWidths 1145 1.331216e-08 insert jpsiwidth:InterpolationWidths 1146 1.3312718e-08 insert jpsiwidth:InterpolationWidths 1147 1.3313276e-08 insert jpsiwidth:InterpolationWidths 1148 1.3313833e-08 insert jpsiwidth:InterpolationWidths 1149 1.3314391e-08 insert jpsiwidth:InterpolationWidths 1150 1.3314949e-08 insert jpsiwidth:InterpolationWidths 1151 1.3315507e-08 insert jpsiwidth:InterpolationWidths 1152 1.3316065e-08 insert jpsiwidth:InterpolationWidths 1153 1.3316623e-08 insert jpsiwidth:InterpolationWidths 1154 1.3317181e-08 insert jpsiwidth:InterpolationWidths 1155 1.3317739e-08 insert jpsiwidth:InterpolationWidths 1156 1.3318297e-08 insert jpsiwidth:InterpolationWidths 1157 1.3318855e-08 insert jpsiwidth:InterpolationWidths 1158 1.3319413e-08 insert jpsiwidth:InterpolationWidths 1159 1.3319971e-08 insert jpsiwidth:InterpolationWidths 1160 1.3320529e-08 insert jpsiwidth:InterpolationWidths 1161 1.3321087e-08 insert jpsiwidth:InterpolationWidths 1162 1.3321645e-08 insert jpsiwidth:InterpolationWidths 1163 1.3322203e-08 insert jpsiwidth:InterpolationWidths 1164 1.3322761e-08 insert jpsiwidth:InterpolationWidths 1165 1.3323319e-08 insert jpsiwidth:InterpolationWidths 1166 1.3323877e-08 insert jpsiwidth:InterpolationWidths 1167 1.3324436e-08 insert jpsiwidth:InterpolationWidths 1168 1.3324994e-08 insert jpsiwidth:InterpolationWidths 1169 1.3325552e-08 insert jpsiwidth:InterpolationWidths 1170 1.332611e-08 insert jpsiwidth:InterpolationWidths 1171 1.3326668e-08 insert jpsiwidth:InterpolationWidths 1172 1.3327226e-08 insert jpsiwidth:InterpolationWidths 1173 1.3327785e-08 insert jpsiwidth:InterpolationWidths 1174 1.3328343e-08 insert jpsiwidth:InterpolationWidths 1175 1.3328901e-08 insert jpsiwidth:InterpolationWidths 1176 1.3329459e-08 insert jpsiwidth:InterpolationWidths 1177 1.3330018e-08 insert jpsiwidth:InterpolationWidths 1178 1.3330576e-08 insert jpsiwidth:InterpolationWidths 1179 1.3331134e-08 insert jpsiwidth:InterpolationWidths 1180 1.3331693e-08 insert jpsiwidth:InterpolationWidths 1181 1.3332251e-08 insert jpsiwidth:InterpolationWidths 1182 1.3332809e-08 insert jpsiwidth:InterpolationWidths 1183 1.3333368e-08 insert jpsiwidth:InterpolationWidths 1184 1.3333926e-08 insert jpsiwidth:InterpolationWidths 1185 1.3334484e-08 insert jpsiwidth:InterpolationWidths 1186 1.3335043e-08 insert jpsiwidth:InterpolationWidths 1187 1.3335601e-08 insert jpsiwidth:InterpolationWidths 1188 3.0221049e-08 insert jpsiwidth:InterpolationWidths 1189 3.0222306e-08 insert jpsiwidth:InterpolationWidths 1190 3.0223563e-08 insert jpsiwidth:InterpolationWidths 1191 3.0224819e-08 insert jpsiwidth:InterpolationWidths 1192 3.0226076e-08 insert jpsiwidth:InterpolationWidths 1193 3.0227333e-08 insert jpsiwidth:InterpolationWidths 1194 3.022859e-08 insert jpsiwidth:InterpolationWidths 1195 3.0229847e-08 insert jpsiwidth:InterpolationWidths 1196 3.0231104e-08 insert jpsiwidth:InterpolationWidths 1197 3.0232361e-08 insert jpsiwidth:InterpolationWidths 1198 3.0233618e-08 insert jpsiwidth:InterpolationWidths 1199 3.0234875e-08 insert jpsiwidth:InterpolationWidths 1200 3.0236132e-08 insert jpsiwidth:InterpolationWidths 1201 3.0237389e-08 insert jpsiwidth:InterpolationWidths 1202 3.0238646e-08 insert jpsiwidth:InterpolationWidths 1203 3.0239903e-08 insert jpsiwidth:InterpolationWidths 1204 3.024116e-08 insert jpsiwidth:InterpolationWidths 1205 3.0242417e-08 insert jpsiwidth:InterpolationWidths 1206 3.0243674e-08 insert jpsiwidth:InterpolationWidths 1207 3.0244932e-08 insert jpsiwidth:InterpolationWidths 1208 3.0246189e-08 insert jpsiwidth:InterpolationWidths 1209 3.0247446e-08 insert jpsiwidth:InterpolationWidths 1210 3.0248703e-08 insert jpsiwidth:InterpolationWidths 1211 3.0249961e-08 insert jpsiwidth:InterpolationWidths 1212 3.0251218e-08 insert jpsiwidth:InterpolationWidths 1213 3.0252475e-08 insert jpsiwidth:InterpolationWidths 1214 3.0253733e-08 insert jpsiwidth:InterpolationWidths 1215 3.025499e-08 insert jpsiwidth:InterpolationWidths 1216 3.0256248e-08 insert jpsiwidth:InterpolationWidths 1217 3.0257505e-08 insert jpsiwidth:InterpolationWidths 1218 3.0258763e-08 insert jpsiwidth:InterpolationWidths 1219 3.026002e-08 insert jpsiwidth:InterpolationWidths 1220 3.0261278e-08 insert jpsiwidth:InterpolationWidths 1221 3.0262535e-08 insert jpsiwidth:InterpolationWidths 1222 3.0263793e-08 insert jpsiwidth:InterpolationWidths 1223 3.0265051e-08 insert jpsiwidth:InterpolationWidths 1224 3.0266308e-08 insert jpsiwidth:InterpolationWidths 1225 3.0267566e-08 insert jpsiwidth:InterpolationWidths 1226 3.0268824e-08 insert jpsiwidth:InterpolationWidths 1227 3.0270082e-08 insert jpsiwidth:InterpolationWidths 1228 3.0271339e-08 insert jpsiwidth:InterpolationWidths 1229 3.0272597e-08 insert jpsiwidth:InterpolationWidths 1230 3.0273855e-08 insert jpsiwidth:InterpolationWidths 1231 3.0275113e-08 insert jpsiwidth:InterpolationWidths 1232 3.0276371e-08 insert jpsiwidth:InterpolationWidths 1233 3.0277629e-08 insert jpsiwidth:InterpolationWidths 1234 3.0278887e-08 insert jpsiwidth:InterpolationWidths 1235 3.0280145e-08 insert jpsiwidth:InterpolationWidths 1236 3.0281403e-08 insert jpsiwidth:InterpolationWidths 1237 3.0282661e-08 insert jpsiwidth:InterpolationWidths 1238 3.0283919e-08 insert jpsiwidth:InterpolationWidths 1239 3.0285177e-08 insert jpsiwidth:InterpolationWidths 1240 3.0286435e-08 insert jpsiwidth:InterpolationWidths 1241 3.0287693e-08 insert jpsiwidth:InterpolationWidths 1242 1.6291418e-07 insert jpsiwidth:InterpolationWidths 1243 1.629216e-07 insert jpsiwidth:InterpolationWidths 1244 1.6292903e-07 insert jpsiwidth:InterpolationWidths 1245 1.6293645e-07 insert jpsiwidth:InterpolationWidths 1246 1.6294388e-07 insert jpsiwidth:InterpolationWidths 1247 1.6295131e-07 insert jpsiwidth:InterpolationWidths 1248 1.6295873e-07 insert jpsiwidth:InterpolationWidths 1249 1.6296616e-07 insert jpsiwidth:InterpolationWidths 1250 1.6297359e-07 insert jpsiwidth:InterpolationWidths 1251 1.6298102e-07 insert jpsiwidth:InterpolationWidths 1252 1.6298844e-07 insert jpsiwidth:InterpolationWidths 1253 1.6299587e-07 insert jpsiwidth:InterpolationWidths 1254 1.630033e-07 insert jpsiwidth:InterpolationWidths 1255 1.6301073e-07 insert jpsiwidth:InterpolationWidths 1256 1.6301816e-07 insert jpsiwidth:InterpolationWidths 1257 1.6302559e-07 insert jpsiwidth:InterpolationWidths 1258 1.6303301e-07 insert jpsiwidth:InterpolationWidths 1259 1.6304044e-07 insert jpsiwidth:InterpolationWidths 1260 1.6304787e-07 insert jpsiwidth:InterpolationWidths 1261 1.630553e-07 insert jpsiwidth:InterpolationWidths 1262 1.6306273e-07 insert jpsiwidth:InterpolationWidths 1263 1.6307016e-07 insert jpsiwidth:InterpolationWidths 1264 1.6307759e-07 insert jpsiwidth:InterpolationWidths 1265 1.6308502e-07 insert jpsiwidth:InterpolationWidths 1266 1.6309245e-07 insert jpsiwidth:InterpolationWidths 1267 1.6309989e-07 insert jpsiwidth:InterpolationWidths 1268 1.6310732e-07 insert jpsiwidth:InterpolationWidths 1269 1.6311475e-07 insert jpsiwidth:InterpolationWidths 1270 1.6312218e-07 insert jpsiwidth:InterpolationWidths 1271 1.6312961e-07 insert jpsiwidth:InterpolationWidths 1272 1.6313704e-07 insert jpsiwidth:InterpolationWidths 1273 1.6314447e-07 insert jpsiwidth:InterpolationWidths 1274 1.6315191e-07 insert jpsiwidth:InterpolationWidths 1275 1.6315934e-07 insert jpsiwidth:InterpolationWidths 1276 1.6316677e-07 insert jpsiwidth:InterpolationWidths 1277 1.631742e-07 insert jpsiwidth:InterpolationWidths 1278 1.6318164e-07 insert jpsiwidth:InterpolationWidths 1279 1.6318907e-07 insert jpsiwidth:InterpolationWidths 1280 1.631965e-07 insert jpsiwidth:InterpolationWidths 1281 1.6320394e-07 insert jpsiwidth:InterpolationWidths 1282 1.6321137e-07 insert jpsiwidth:InterpolationWidths 1283 1.6321881e-07 insert jpsiwidth:InterpolationWidths 1284 1.6322624e-07 insert jpsiwidth:InterpolationWidths 1285 1.6323368e-07 insert jpsiwidth:InterpolationWidths 1286 1.6324111e-07 insert jpsiwidth:InterpolationWidths 1287 1.6324855e-07 insert jpsiwidth:InterpolationWidths 1288 1.6325598e-07 insert jpsiwidth:InterpolationWidths 1289 1.6326342e-07 insert jpsiwidth:InterpolationWidths 1290 1.6327085e-07 insert jpsiwidth:InterpolationWidths 1291 1.6327829e-07 insert jpsiwidth:InterpolationWidths 1292 1.6328572e-07 insert jpsiwidth:InterpolationWidths 1293 1.6329316e-07 insert jpsiwidth:InterpolationWidths 1294 1.633006e-07 insert jpsiwidth:InterpolationWidths 1295 1.6330803e-07 insert jpsiwidth:InterpolationWidths 1296 4.2203439e-08 insert jpsiwidth:InterpolationWidths 1297 4.2205221e-08 insert jpsiwidth:InterpolationWidths 1298 4.2207004e-08 insert jpsiwidth:InterpolationWidths 1299 4.2208787e-08 insert jpsiwidth:InterpolationWidths 1300 4.221057e-08 insert jpsiwidth:InterpolationWidths 1301 4.2212353e-08 insert jpsiwidth:InterpolationWidths 1302 4.2214136e-08 insert jpsiwidth:InterpolationWidths 1303 4.2215919e-08 insert jpsiwidth:InterpolationWidths 1304 4.2217702e-08 insert jpsiwidth:InterpolationWidths 1305 4.2219485e-08 insert jpsiwidth:InterpolationWidths 1306 4.2221268e-08 insert jpsiwidth:InterpolationWidths 1307 4.2223051e-08 insert jpsiwidth:InterpolationWidths 1308 4.2224834e-08 insert jpsiwidth:InterpolationWidths 1309 4.2226618e-08 insert jpsiwidth:InterpolationWidths 1310 4.2228401e-08 insert jpsiwidth:InterpolationWidths 1311 4.2230185e-08 insert jpsiwidth:InterpolationWidths 1312 4.2231968e-08 insert jpsiwidth:InterpolationWidths 1313 4.2233751e-08 insert jpsiwidth:InterpolationWidths 1314 4.2235535e-08 insert jpsiwidth:InterpolationWidths 1315 4.2237319e-08 insert jpsiwidth:InterpolationWidths 1316 4.2239102e-08 insert jpsiwidth:InterpolationWidths 1317 4.2240886e-08 insert jpsiwidth:InterpolationWidths 1318 4.224267e-08 insert jpsiwidth:InterpolationWidths 1319 4.2244453e-08 insert jpsiwidth:InterpolationWidths 1320 4.2246237e-08 insert jpsiwidth:InterpolationWidths 1321 4.2248021e-08 insert jpsiwidth:InterpolationWidths 1322 4.2249805e-08 insert jpsiwidth:InterpolationWidths 1323 4.2251589e-08 insert jpsiwidth:InterpolationWidths 1324 4.2253373e-08 insert jpsiwidth:InterpolationWidths 1325 4.2255157e-08 insert jpsiwidth:InterpolationWidths 1326 4.2256941e-08 insert jpsiwidth:InterpolationWidths 1327 4.2258725e-08 insert jpsiwidth:InterpolationWidths 1328 4.2260509e-08 insert jpsiwidth:InterpolationWidths 1329 4.2262294e-08 insert jpsiwidth:InterpolationWidths 1330 4.2264078e-08 insert jpsiwidth:InterpolationWidths 1331 4.2265862e-08 insert jpsiwidth:InterpolationWidths 1332 4.2267647e-08 insert jpsiwidth:InterpolationWidths 1333 4.2269431e-08 insert jpsiwidth:InterpolationWidths 1334 4.2271215e-08 insert jpsiwidth:InterpolationWidths 1335 4.2273e-08 insert jpsiwidth:InterpolationWidths 1336 4.2274785e-08 insert jpsiwidth:InterpolationWidths 1337 4.2276569e-08 insert jpsiwidth:InterpolationWidths 1338 4.2278354e-08 insert jpsiwidth:InterpolationWidths 1339 4.2280139e-08 insert jpsiwidth:InterpolationWidths 1340 4.2281923e-08 insert jpsiwidth:InterpolationWidths 1341 4.2283708e-08 insert jpsiwidth:InterpolationWidths 1342 4.2285493e-08 insert jpsiwidth:InterpolationWidths 1343 4.2287278e-08 insert jpsiwidth:InterpolationWidths 1344 4.2289063e-08 insert jpsiwidth:InterpolationWidths 1345 4.2290848e-08 insert jpsiwidth:InterpolationWidths 1346 4.2292633e-08 insert jpsiwidth:InterpolationWidths 1347 4.2294418e-08 insert jpsiwidth:InterpolationWidths 1348 4.2296203e-08 insert jpsiwidth:InterpolationWidths 1349 4.2297988e-08 insert jpsiwidth:InterpolationWidths 1350 3.0635755e-08 insert jpsiwidth:InterpolationWidths 1351 3.0637669e-08 insert jpsiwidth:InterpolationWidths 1352 3.0639584e-08 insert jpsiwidth:InterpolationWidths 1353 3.0641499e-08 insert jpsiwidth:InterpolationWidths 1354 3.0643414e-08 insert jpsiwidth:InterpolationWidths 1355 3.0645329e-08 insert jpsiwidth:InterpolationWidths 1356 3.0647244e-08 insert jpsiwidth:InterpolationWidths 1357 3.0649159e-08 insert jpsiwidth:InterpolationWidths 1358 3.0651074e-08 insert jpsiwidth:InterpolationWidths 1359 3.065299e-08 insert jpsiwidth:InterpolationWidths 1360 3.0654905e-08 insert jpsiwidth:InterpolationWidths 1361 3.065682e-08 insert jpsiwidth:InterpolationWidths 1362 3.0658736e-08 insert jpsiwidth:InterpolationWidths 1363 3.0660651e-08 insert jpsiwidth:InterpolationWidths 1364 3.0662567e-08 insert jpsiwidth:InterpolationWidths 1365 3.0664483e-08 insert jpsiwidth:InterpolationWidths 1366 3.0666398e-08 insert jpsiwidth:InterpolationWidths 1367 3.0668314e-08 insert jpsiwidth:InterpolationWidths 1368 3.067023e-08 insert jpsiwidth:InterpolationWidths 1369 3.0672146e-08 insert jpsiwidth:InterpolationWidths 1370 3.0674062e-08 insert jpsiwidth:InterpolationWidths 1371 3.0675978e-08 insert jpsiwidth:InterpolationWidths 1372 3.0677894e-08 insert jpsiwidth:InterpolationWidths 1373 3.067981e-08 insert jpsiwidth:InterpolationWidths 1374 3.0681726e-08 insert jpsiwidth:InterpolationWidths 1375 3.0683643e-08 insert jpsiwidth:InterpolationWidths 1376 3.0685559e-08 insert jpsiwidth:InterpolationWidths 1377 3.0687475e-08 insert jpsiwidth:InterpolationWidths 1378 3.0689392e-08 insert jpsiwidth:InterpolationWidths 1379 3.0691308e-08 insert jpsiwidth:InterpolationWidths 1380 3.0693225e-08 insert jpsiwidth:InterpolationWidths 1381 3.0695142e-08 insert jpsiwidth:InterpolationWidths 1382 3.0697058e-08 insert jpsiwidth:InterpolationWidths 1383 3.0698975e-08 insert jpsiwidth:InterpolationWidths 1384 3.0700892e-08 insert jpsiwidth:InterpolationWidths 1385 3.0702809e-08 insert jpsiwidth:InterpolationWidths 1386 3.0704726e-08 insert jpsiwidth:InterpolationWidths 1387 3.0706643e-08 insert jpsiwidth:InterpolationWidths 1388 3.070856e-08 insert jpsiwidth:InterpolationWidths 1389 3.0710477e-08 insert jpsiwidth:InterpolationWidths 1390 3.0712395e-08 insert jpsiwidth:InterpolationWidths 1391 3.0714312e-08 insert jpsiwidth:InterpolationWidths 1392 3.0716229e-08 insert jpsiwidth:InterpolationWidths 1393 3.0718147e-08 insert jpsiwidth:InterpolationWidths 1394 3.0720064e-08 insert jpsiwidth:InterpolationWidths 1395 3.0721982e-08 insert jpsiwidth:InterpolationWidths 1396 3.0723899e-08 insert jpsiwidth:InterpolationWidths 1397 3.0725817e-08 insert jpsiwidth:InterpolationWidths 1398 3.0727735e-08 insert jpsiwidth:InterpolationWidths 1399 3.0729653e-08 insert jpsiwidth:InterpolationWidths 1400 3.073157e-08 insert jpsiwidth:InterpolationWidths 1401 3.0733488e-08 insert jpsiwidth:InterpolationWidths 1402 3.0735406e-08 insert jpsiwidth:InterpolationWidths 1403 3.0737324e-08 insert jpsiwidth:InterpolationWidths 1404 6.9815942e-08 insert jpsiwidth:InterpolationWidths 1405 6.9819474e-08 insert jpsiwidth:InterpolationWidths 1406 6.9823007e-08 insert jpsiwidth:InterpolationWidths 1407 6.982654e-08 insert jpsiwidth:InterpolationWidths 1408 6.9830073e-08 insert jpsiwidth:InterpolationWidths 1409 6.9833606e-08 insert jpsiwidth:InterpolationWidths 1410 6.9837139e-08 insert jpsiwidth:InterpolationWidths 1411 6.9840673e-08 insert jpsiwidth:InterpolationWidths 1412 6.9844206e-08 insert jpsiwidth:InterpolationWidths 1413 6.9847739e-08 insert jpsiwidth:InterpolationWidths 1414 6.9851273e-08 insert jpsiwidth:InterpolationWidths 1415 6.9854807e-08 insert jpsiwidth:InterpolationWidths 1416 6.9858341e-08 insert jpsiwidth:InterpolationWidths 1417 6.9861875e-08 insert jpsiwidth:InterpolationWidths 1418 6.9865409e-08 insert jpsiwidth:InterpolationWidths 1419 6.9868943e-08 insert jpsiwidth:InterpolationWidths 1420 6.9872477e-08 insert jpsiwidth:InterpolationWidths 1421 6.9876011e-08 insert jpsiwidth:InterpolationWidths 1422 6.9879546e-08 insert jpsiwidth:InterpolationWidths 1423 6.988308e-08 insert jpsiwidth:InterpolationWidths 1424 6.9886615e-08 insert jpsiwidth:InterpolationWidths 1425 6.989015e-08 insert jpsiwidth:InterpolationWidths 1426 6.9893685e-08 insert jpsiwidth:InterpolationWidths 1427 6.989722e-08 insert jpsiwidth:InterpolationWidths 1428 6.9900755e-08 insert jpsiwidth:InterpolationWidths 1429 6.990429e-08 insert jpsiwidth:InterpolationWidths 1430 6.9907825e-08 insert jpsiwidth:InterpolationWidths 1431 6.9911361e-08 insert jpsiwidth:InterpolationWidths 1432 6.9914896e-08 insert jpsiwidth:InterpolationWidths 1433 6.9918432e-08 insert jpsiwidth:InterpolationWidths 1434 6.9921967e-08 insert jpsiwidth:InterpolationWidths 1435 6.9925503e-08 insert jpsiwidth:InterpolationWidths 1436 6.9929039e-08 insert jpsiwidth:InterpolationWidths 1437 6.9932575e-08 insert jpsiwidth:InterpolationWidths 1438 6.9936111e-08 insert jpsiwidth:InterpolationWidths 1439 6.9939648e-08 insert jpsiwidth:InterpolationWidths 1440 6.9943184e-08 insert jpsiwidth:InterpolationWidths 1441 6.994672e-08 insert jpsiwidth:InterpolationWidths 1442 6.9950257e-08 insert jpsiwidth:InterpolationWidths 1443 6.9953793e-08 insert jpsiwidth:InterpolationWidths 1444 6.995733e-08 insert jpsiwidth:InterpolationWidths 1445 6.9960867e-08 insert jpsiwidth:InterpolationWidths 1446 6.9964404e-08 insert jpsiwidth:InterpolationWidths 1447 6.9967941e-08 insert jpsiwidth:InterpolationWidths 1448 6.9971478e-08 insert jpsiwidth:InterpolationWidths 1449 6.9975016e-08 insert jpsiwidth:InterpolationWidths 1450 6.9978553e-08 insert jpsiwidth:InterpolationWidths 1451 6.998209e-08 insert jpsiwidth:InterpolationWidths 1452 6.9985628e-08 insert jpsiwidth:InterpolationWidths 1453 6.9989166e-08 insert jpsiwidth:InterpolationWidths 1454 6.9992703e-08 insert jpsiwidth:InterpolationWidths 1455 6.9996241e-08 insert jpsiwidth:InterpolationWidths 1456 6.9999779e-08 insert jpsiwidth:InterpolationWidths 1457 7.0003317e-08 insert jpsiwidth:InterpolationWidths 1458 5.2874699e-07 insert jpsiwidth:InterpolationWidths 1459 5.2876965e-07 insert jpsiwidth:InterpolationWidths 1460 5.2879231e-07 insert jpsiwidth:InterpolationWidths 1461 5.2881498e-07 insert jpsiwidth:InterpolationWidths 1462 5.2883764e-07 insert jpsiwidth:InterpolationWidths 1463 5.2886031e-07 insert jpsiwidth:InterpolationWidths 1464 5.2888297e-07 insert jpsiwidth:InterpolationWidths 1465 5.2890564e-07 insert jpsiwidth:InterpolationWidths 1466 5.289283e-07 insert jpsiwidth:InterpolationWidths 1467 5.2895097e-07 insert jpsiwidth:InterpolationWidths 1468 5.2897364e-07 insert jpsiwidth:InterpolationWidths 1469 5.2899631e-07 insert jpsiwidth:InterpolationWidths 1470 5.2901898e-07 insert jpsiwidth:InterpolationWidths 1471 5.2904165e-07 insert jpsiwidth:InterpolationWidths 1472 5.2906432e-07 insert jpsiwidth:InterpolationWidths 1473 5.2908699e-07 insert jpsiwidth:InterpolationWidths 1474 5.2910966e-07 insert jpsiwidth:InterpolationWidths 1475 5.2913233e-07 insert jpsiwidth:InterpolationWidths 1476 5.2915501e-07 insert jpsiwidth:InterpolationWidths 1477 5.2917768e-07 insert jpsiwidth:InterpolationWidths 1478 5.2920036e-07 insert jpsiwidth:InterpolationWidths 1479 5.2922303e-07 insert jpsiwidth:InterpolationWidths 1480 5.2924571e-07 insert jpsiwidth:InterpolationWidths 1481 5.2926838e-07 insert jpsiwidth:InterpolationWidths 1482 5.2929106e-07 insert jpsiwidth:InterpolationWidths 1483 5.2931374e-07 insert jpsiwidth:InterpolationWidths 1484 5.2933641e-07 insert jpsiwidth:InterpolationWidths 1485 5.2935909e-07 insert jpsiwidth:InterpolationWidths 1486 5.2938177e-07 insert jpsiwidth:InterpolationWidths 1487 5.2940445e-07 insert jpsiwidth:InterpolationWidths 1488 5.2942713e-07 insert jpsiwidth:InterpolationWidths 1489 5.2944981e-07 insert jpsiwidth:InterpolationWidths 1490 5.2947249e-07 insert jpsiwidth:InterpolationWidths 1491 5.2949518e-07 insert jpsiwidth:InterpolationWidths 1492 5.2951786e-07 insert jpsiwidth:InterpolationWidths 1493 5.2954054e-07 insert jpsiwidth:InterpolationWidths 1494 5.2956323e-07 insert jpsiwidth:InterpolationWidths 1495 5.2958591e-07 insert jpsiwidth:InterpolationWidths 1496 5.296086e-07 insert jpsiwidth:InterpolationWidths 1497 5.2963128e-07 insert jpsiwidth:InterpolationWidths 1498 5.2965397e-07 insert jpsiwidth:InterpolationWidths 1499 5.2967666e-07 insert jpsiwidth:InterpolationWidths 1500 5.2969934e-07 insert jpsiwidth:InterpolationWidths 1501 5.2972203e-07 insert jpsiwidth:InterpolationWidths 1502 5.2974472e-07 insert jpsiwidth:InterpolationWidths 1503 5.2976741e-07 insert jpsiwidth:InterpolationWidths 1504 5.297901e-07 insert jpsiwidth:InterpolationWidths 1505 5.2981279e-07 insert jpsiwidth:InterpolationWidths 1506 5.2983548e-07 insert jpsiwidth:InterpolationWidths 1507 5.2985817e-07 insert jpsiwidth:InterpolationWidths 1508 5.2988087e-07 insert jpsiwidth:InterpolationWidths 1509 5.2990356e-07 insert jpsiwidth:InterpolationWidths 1510 5.2992625e-07 insert jpsiwidth:InterpolationWidths 1511 5.2994895e-07 insert jpsiwidth:InterpolationWidths 1512 5.2874699e-07 insert jpsiwidth:InterpolationWidths 1513 5.2876965e-07 insert jpsiwidth:InterpolationWidths 1514 5.2879231e-07 insert jpsiwidth:InterpolationWidths 1515 5.2881498e-07 insert jpsiwidth:InterpolationWidths 1516 5.2883764e-07 insert jpsiwidth:InterpolationWidths 1517 5.2886031e-07 insert jpsiwidth:InterpolationWidths 1518 5.2888297e-07 insert jpsiwidth:InterpolationWidths 1519 5.2890564e-07 insert jpsiwidth:InterpolationWidths 1520 5.289283e-07 insert jpsiwidth:InterpolationWidths 1521 5.2895097e-07 insert jpsiwidth:InterpolationWidths 1522 5.2897364e-07 insert jpsiwidth:InterpolationWidths 1523 5.2899631e-07 insert jpsiwidth:InterpolationWidths 1524 5.2901898e-07 insert jpsiwidth:InterpolationWidths 1525 5.2904165e-07 insert jpsiwidth:InterpolationWidths 1526 5.2906432e-07 insert jpsiwidth:InterpolationWidths 1527 5.2908699e-07 insert jpsiwidth:InterpolationWidths 1528 5.2910966e-07 insert jpsiwidth:InterpolationWidths 1529 5.2913233e-07 insert jpsiwidth:InterpolationWidths 1530 5.2915501e-07 insert jpsiwidth:InterpolationWidths 1531 5.2917768e-07 insert jpsiwidth:InterpolationWidths 1532 5.2920036e-07 insert jpsiwidth:InterpolationWidths 1533 5.2922303e-07 insert jpsiwidth:InterpolationWidths 1534 5.2924571e-07 insert jpsiwidth:InterpolationWidths 1535 5.2926838e-07 insert jpsiwidth:InterpolationWidths 1536 5.2929106e-07 insert jpsiwidth:InterpolationWidths 1537 5.2931374e-07 insert jpsiwidth:InterpolationWidths 1538 5.2933641e-07 insert jpsiwidth:InterpolationWidths 1539 5.2935909e-07 insert jpsiwidth:InterpolationWidths 1540 5.2938177e-07 insert jpsiwidth:InterpolationWidths 1541 5.2940445e-07 insert jpsiwidth:InterpolationWidths 1542 5.2942713e-07 insert jpsiwidth:InterpolationWidths 1543 5.2944981e-07 insert jpsiwidth:InterpolationWidths 1544 5.2947249e-07 insert jpsiwidth:InterpolationWidths 1545 5.2949518e-07 insert jpsiwidth:InterpolationWidths 1546 5.2951786e-07 insert jpsiwidth:InterpolationWidths 1547 5.2954054e-07 insert jpsiwidth:InterpolationWidths 1548 5.2956323e-07 insert jpsiwidth:InterpolationWidths 1549 5.2958591e-07 insert jpsiwidth:InterpolationWidths 1550 5.296086e-07 insert jpsiwidth:InterpolationWidths 1551 5.2963128e-07 insert jpsiwidth:InterpolationWidths 1552 5.2965397e-07 insert jpsiwidth:InterpolationWidths 1553 5.2967666e-07 insert jpsiwidth:InterpolationWidths 1554 5.2969934e-07 insert jpsiwidth:InterpolationWidths 1555 5.2972203e-07 insert jpsiwidth:InterpolationWidths 1556 5.2974472e-07 insert jpsiwidth:InterpolationWidths 1557 5.2976741e-07 insert jpsiwidth:InterpolationWidths 1558 5.297901e-07 insert jpsiwidth:InterpolationWidths 1559 5.2981279e-07 insert jpsiwidth:InterpolationWidths 1560 5.2983548e-07 insert jpsiwidth:InterpolationWidths 1561 5.2985817e-07 insert jpsiwidth:InterpolationWidths 1562 5.2988087e-07 insert jpsiwidth:InterpolationWidths 1563 5.2990356e-07 insert jpsiwidth:InterpolationWidths 1564 5.2992625e-07 insert jpsiwidth:InterpolationWidths 1565 5.2994895e-07 insert jpsiwidth:InterpolationWidths 1566 5.2888708e-07 insert jpsiwidth:InterpolationWidths 1567 5.2890974e-07 insert jpsiwidth:InterpolationWidths 1568 5.2893241e-07 insert jpsiwidth:InterpolationWidths 1569 5.2895507e-07 insert jpsiwidth:InterpolationWidths 1570 5.2897773e-07 insert jpsiwidth:InterpolationWidths 1571 5.290004e-07 insert jpsiwidth:InterpolationWidths 1572 5.2902307e-07 insert jpsiwidth:InterpolationWidths 1573 5.2904573e-07 insert jpsiwidth:InterpolationWidths 1574 5.290684e-07 insert jpsiwidth:InterpolationWidths 1575 5.2909107e-07 insert jpsiwidth:InterpolationWidths 1576 5.2911373e-07 insert jpsiwidth:InterpolationWidths 1577 5.291364e-07 insert jpsiwidth:InterpolationWidths 1578 5.2915907e-07 insert jpsiwidth:InterpolationWidths 1579 5.2918174e-07 insert jpsiwidth:InterpolationWidths 1580 5.2920441e-07 insert jpsiwidth:InterpolationWidths 1581 5.2922708e-07 insert jpsiwidth:InterpolationWidths 1582 5.2924976e-07 insert jpsiwidth:InterpolationWidths 1583 5.2927243e-07 insert jpsiwidth:InterpolationWidths 1584 5.292951e-07 insert jpsiwidth:InterpolationWidths 1585 5.2931778e-07 insert jpsiwidth:InterpolationWidths 1586 5.2934045e-07 insert jpsiwidth:InterpolationWidths 1587 5.2936312e-07 insert jpsiwidth:InterpolationWidths 1588 5.293858e-07 insert jpsiwidth:InterpolationWidths 1589 5.2940848e-07 insert jpsiwidth:InterpolationWidths 1590 5.2943115e-07 insert jpsiwidth:InterpolationWidths 1591 5.2945383e-07 insert jpsiwidth:InterpolationWidths 1592 5.2947651e-07 insert jpsiwidth:InterpolationWidths 1593 5.2949919e-07 insert jpsiwidth:InterpolationWidths 1594 5.2952187e-07 insert jpsiwidth:InterpolationWidths 1595 5.2954455e-07 insert jpsiwidth:InterpolationWidths 1596 5.2956723e-07 insert jpsiwidth:InterpolationWidths 1597 5.2958991e-07 insert jpsiwidth:InterpolationWidths 1598 5.2961259e-07 insert jpsiwidth:InterpolationWidths 1599 5.2963527e-07 insert jpsiwidth:InterpolationWidths 1600 5.2965795e-07 insert jpsiwidth:InterpolationWidths 1601 5.2968064e-07 insert jpsiwidth:InterpolationWidths 1602 5.2970332e-07 insert jpsiwidth:InterpolationWidths 1603 5.2972601e-07 insert jpsiwidth:InterpolationWidths 1604 5.2974869e-07 insert jpsiwidth:InterpolationWidths 1605 5.2977138e-07 insert jpsiwidth:InterpolationWidths 1606 5.2979406e-07 insert jpsiwidth:InterpolationWidths 1607 5.2981675e-07 insert jpsiwidth:InterpolationWidths 1608 5.2983944e-07 insert jpsiwidth:InterpolationWidths 1609 5.2986213e-07 insert jpsiwidth:InterpolationWidths 1610 5.2988482e-07 insert jpsiwidth:InterpolationWidths 1611 5.299075e-07 insert jpsiwidth:InterpolationWidths 1612 5.299302e-07 insert jpsiwidth:InterpolationWidths 1613 5.2995289e-07 insert jpsiwidth:InterpolationWidths 1614 5.2997558e-07 insert jpsiwidth:InterpolationWidths 1615 5.2999827e-07 insert jpsiwidth:InterpolationWidths 1616 5.3002096e-07 insert jpsiwidth:InterpolationWidths 1617 5.3004365e-07 insert jpsiwidth:InterpolationWidths 1618 5.3006635e-07 insert jpsiwidth:InterpolationWidths 1619 5.3008904e-07 insert jpsiwidth:NumberofEntries 0 0 insert jpsiwidth:NumberofEntries 1 0 insert jpsiwidth:NumberofEntries 2 0 insert jpsiwidth:NumberofEntries 3 0 insert jpsiwidth:NumberofEntries 4 54 insert jpsiwidth:NumberofEntries 5 108 insert jpsiwidth:NumberofEntries 6 162 insert jpsiwidth:NumberofEntries 7 216 insert jpsiwidth:NumberofEntries 8 216 insert jpsiwidth:NumberofEntries 9 216 insert jpsiwidth:NumberofEntries 10 270 insert jpsiwidth:NumberofEntries 11 270 insert jpsiwidth:NumberofEntries 12 324 insert jpsiwidth:NumberofEntries 13 324 insert jpsiwidth:NumberofEntries 14 324 insert jpsiwidth:NumberofEntries 15 378 insert jpsiwidth:NumberofEntries 16 378 insert jpsiwidth:NumberofEntries 17 378 insert jpsiwidth:NumberofEntries 18 378 insert jpsiwidth:NumberofEntries 19 378 insert jpsiwidth:NumberofEntries 20 378 insert jpsiwidth:NumberofEntries 21 432 insert jpsiwidth:NumberofEntries 22 432 insert jpsiwidth:NumberofEntries 23 432 insert jpsiwidth:NumberofEntries 24 432 insert jpsiwidth:NumberofEntries 25 432 insert jpsiwidth:NumberofEntries 26 432 insert jpsiwidth:NumberofEntries 27 432 insert jpsiwidth:NumberofEntries 28 432 insert jpsiwidth:NumberofEntries 29 432 insert jpsiwidth:NumberofEntries 30 432 insert jpsiwidth:NumberofEntries 31 432 insert jpsiwidth:NumberofEntries 32 432 insert jpsiwidth:NumberofEntries 33 432 insert jpsiwidth:NumberofEntries 34 432 insert jpsiwidth:NumberofEntries 35 432 insert jpsiwidth:NumberofEntries 36 432 insert jpsiwidth:NumberofEntries 37 432 insert jpsiwidth:NumberofEntries 38 432 insert jpsiwidth:NumberofEntries 39 432 insert jpsiwidth:NumberofEntries 40 432 insert jpsiwidth:NumberofEntries 41 432 insert jpsiwidth:NumberofEntries 42 432 insert jpsiwidth:NumberofEntries 43 432 insert jpsiwidth:NumberofEntries 44 432 insert jpsiwidth:NumberofEntries 45 432 insert jpsiwidth:NumberofEntries 46 432 insert jpsiwidth:NumberofEntries 47 432 insert jpsiwidth:NumberofEntries 48 432 insert jpsiwidth:NumberofEntries 49 432 insert jpsiwidth:NumberofEntries 50 432 insert jpsiwidth:NumberofEntries 51 432 insert jpsiwidth:NumberofEntries 52 432 insert jpsiwidth:NumberofEntries 53 432 insert jpsiwidth:NumberofEntries 54 432 insert jpsiwidth:NumberofEntries 55 432 insert jpsiwidth:NumberofEntries 56 432 insert jpsiwidth:NumberofEntries 57 432 insert jpsiwidth:NumberofEntries 58 432 insert jpsiwidth:NumberofEntries 59 432 insert jpsiwidth:NumberofEntries 60 432 insert jpsiwidth:NumberofEntries 61 432 insert jpsiwidth:NumberofEntries 62 432 insert jpsiwidth:NumberofEntries 63 432 insert jpsiwidth:NumberofEntries 64 432 insert jpsiwidth:NumberofEntries 65 432 insert jpsiwidth:NumberofEntries 66 432 insert jpsiwidth:NumberofEntries 67 432 insert jpsiwidth:NumberofEntries 68 432 insert jpsiwidth:NumberofEntries 69 432 insert jpsiwidth:NumberofEntries 70 432 insert jpsiwidth:NumberofEntries 71 432 insert jpsiwidth:NumberofEntries 72 432 insert jpsiwidth:NumberofEntries 73 432 insert jpsiwidth:NumberofEntries 74 432 insert jpsiwidth:NumberofEntries 75 432 insert jpsiwidth:NumberofEntries 76 486 insert jpsiwidth:NumberofEntries 77 540 insert jpsiwidth:NumberofEntries 78 594 insert jpsiwidth:NumberofEntries 79 594 insert jpsiwidth:NumberofEntries 80 594 insert jpsiwidth:NumberofEntries 81 648 insert jpsiwidth:NumberofEntries 82 702 insert jpsiwidth:NumberofEntries 83 756 insert jpsiwidth:NumberofEntries 84 756 insert jpsiwidth:NumberofEntries 85 756 insert jpsiwidth:NumberofEntries 86 810 insert jpsiwidth:NumberofEntries 87 810 insert jpsiwidth:NumberofEntries 88 810 insert jpsiwidth:NumberofEntries 89 864 insert jpsiwidth:NumberofEntries 90 918 insert jpsiwidth:NumberofEntries 91 918 insert jpsiwidth:NumberofEntries 92 918 insert jpsiwidth:NumberofEntries 93 918 insert jpsiwidth:NumberofEntries 94 918 insert jpsiwidth:NumberofEntries 95 972 insert jpsiwidth:NumberofEntries 96 1026 insert jpsiwidth:NumberofEntries 97 1080 insert jpsiwidth:NumberofEntries 98 1134 insert jpsiwidth:NumberofEntries 99 1188 insert jpsiwidth:NumberofEntries 100 1242 insert jpsiwidth:NumberofEntries 101 1242 insert jpsiwidth:NumberofEntries 102 1242 insert jpsiwidth:NumberofEntries 103 1242 insert jpsiwidth:NumberofEntries 104 1242 insert jpsiwidth:NumberofEntries 105 1242 insert jpsiwidth:NumberofEntries 106 1242 insert jpsiwidth:NumberofEntries 107 1242 insert jpsiwidth:NumberofEntries 108 1242 insert jpsiwidth:NumberofEntries 109 1242 insert jpsiwidth:NumberofEntries 110 1242 insert jpsiwidth:NumberofEntries 111 1242 insert jpsiwidth:NumberofEntries 112 1242 insert jpsiwidth:NumberofEntries 113 1242 insert jpsiwidth:NumberofEntries 114 1242 insert jpsiwidth:NumberofEntries 115 1242 insert jpsiwidth:NumberofEntries 116 1242 insert jpsiwidth:NumberofEntries 117 1296 insert jpsiwidth:NumberofEntries 118 1296 insert jpsiwidth:NumberofEntries 119 1296 insert jpsiwidth:NumberofEntries 120 1296 insert jpsiwidth:NumberofEntries 121 1296 insert jpsiwidth:NumberofEntries 122 1296 insert jpsiwidth:NumberofEntries 123 1350 insert jpsiwidth:NumberofEntries 124 1350 insert jpsiwidth:NumberofEntries 125 1350 insert jpsiwidth:NumberofEntries 126 1350 insert jpsiwidth:NumberofEntries 127 1350 insert jpsiwidth:NumberofEntries 128 1350 insert jpsiwidth:NumberofEntries 129 1350 insert jpsiwidth:NumberofEntries 130 1350 insert jpsiwidth:NumberofEntries 131 1350 insert jpsiwidth:NumberofEntries 132 1350 insert jpsiwidth:NumberofEntries 133 1350 insert jpsiwidth:NumberofEntries 134 1350 insert jpsiwidth:NumberofEntries 135 1350 insert jpsiwidth:NumberofEntries 136 1350 insert jpsiwidth:NumberofEntries 137 1350 insert jpsiwidth:NumberofEntries 138 1350 insert jpsiwidth:NumberofEntries 139 1350 insert jpsiwidth:NumberofEntries 140 1350 insert jpsiwidth:NumberofEntries 141 1404 insert jpsiwidth:NumberofEntries 142 1458 insert jpsiwidth:NumberofEntries 143 1458 insert jpsiwidth:NumberofEntries 144 1458 insert jpsiwidth:NumberofEntries 145 1458 insert jpsiwidth:NumberofEntries 146 1458 insert jpsiwidth:NumberofEntries 147 1458 insert jpsiwidth:NumberofEntries 148 1458 insert jpsiwidth:NumberofEntries 149 1458 insert jpsiwidth:NumberofEntries 150 1458 insert jpsiwidth:NumberofEntries 151 1512 insert jpsiwidth:NumberofEntries 152 1512 insert jpsiwidth:NumberofEntries 153 1566 insert jpsiwidth:NumberofEntries 154 1620 insert jpsiwidth:NumberofEntries 155 1620 insert jpsiwidth:NumberofEntries 156 1620 insert jpsiwidth:NumberofEntries 157 1620 newdef /Herwig/Particles/Jpsi:Width_generator jpsiwidth # create Herwig::GenericWidthGenerator psi2Swidth newdef psi2Swidth:Particle /Herwig/Particles/psi(2S) newdef psi2Swidth:Prefactor 1.04525 newdef psi2Swidth:BRNormalize 1 newdef psi2Swidth:BRMinimum 0.01 newdef psi2Swidth:Points 50 newdef psi2Swidth:InterpolationOrder 1 insert psi2Swidth:MEtype 0 0 insert psi2Swidth:MEtype 1 0 insert psi2Swidth:MEtype 2 0 insert psi2Swidth:MEtype 3 0 insert psi2Swidth:MEtype 4 2 insert psi2Swidth:MEtype 5 2 insert psi2Swidth:MEtype 6 2 insert psi2Swidth:MEtype 7 2 insert psi2Swidth:MEtype 8 0 insert psi2Swidth:MEtype 9 0 insert psi2Swidth:MEtype 10 2 insert psi2Swidth:MEtype 11 0 insert psi2Swidth:MEtype 12 0 insert psi2Swidth:MEtype 13 0 insert psi2Swidth:MEtype 14 0 insert psi2Swidth:MEtype 15 2 insert psi2Swidth:MEtype 16 0 insert psi2Swidth:MEtype 17 0 insert psi2Swidth:MEtype 18 0 insert psi2Swidth:MEtype 19 0 insert psi2Swidth:MEtype 20 2 insert psi2Swidth:MEtype 21 0 insert psi2Swidth:MEtype 22 0 insert psi2Swidth:MEtype 23 0 insert psi2Swidth:MEtype 24 0 insert psi2Swidth:MEtype 25 0 insert psi2Swidth:MEtype 26 0 insert psi2Swidth:MEtype 27 2 insert psi2Swidth:MEtype 28 0 insert psi2Swidth:MEtype 29 0 insert psi2Swidth:MEtype 30 0 insert psi2Swidth:MEtype 31 0 insert psi2Swidth:MEtype 32 0 insert psi2Swidth:MEtype 33 1 insert psi2Swidth:MEtype 34 0 insert psi2Swidth:MEtype 35 0 insert psi2Swidth:MEtype 36 0 insert psi2Swidth:MEtype 37 2 insert psi2Swidth:MEtype 38 2 insert psi2Swidth:MEtype 39 2 insert psi2Swidth:MEtype 40 2 insert psi2Swidth:MEtype 41 1 insert psi2Swidth:MEtype 42 0 insert psi2Swidth:MEtype 43 1 insert psi2Swidth:MEtype 44 0 insert psi2Swidth:MEtype 45 0 insert psi2Swidth:MEtype 46 0 insert psi2Swidth:MEtype 47 0 insert psi2Swidth:MEtype 48 0 insert psi2Swidth:MEtype 49 0 insert psi2Swidth:MEtype 50 0 insert psi2Swidth:MEtype 51 0 insert psi2Swidth:MEtype 52 0 insert psi2Swidth:MEtype 53 1 insert psi2Swidth:MEtype 54 1 insert psi2Swidth:MEtype 55 1 insert psi2Swidth:MEtype 56 1 insert psi2Swidth:MEtype 57 1 insert psi2Swidth:MEtype 58 0 insert psi2Swidth:MEtype 59 0 insert psi2Swidth:MEtype 60 0 insert psi2Swidth:MEtype 61 2 insert psi2Swidth:MEtype 62 2 insert psi2Swidth:MEtype 63 2 insert psi2Swidth:MEtype 64 2 insert psi2Swidth:MEtype 65 0 insert psi2Swidth:MEtype 66 0 insert psi2Swidth:MEtype 67 1 insert psi2Swidth:MEtype 68 2 insert psi2Swidth:MEtype 69 2 insert psi2Swidth:MEtype 70 0 insert psi2Swidth:MEtype 71 2 insert psi2Swidth:MEtype 72 0 insert psi2Swidth:MEtype 73 2 insert psi2Swidth:MEtype 74 2 insert psi2Swidth:MEtype 75 0 insert psi2Swidth:MEtype 76 2 insert psi2Swidth:MEtype 77 0 insert psi2Swidth:MEtype 78 2 insert psi2Swidth:MEtype 79 0 insert psi2Swidth:MEtype 80 0 insert psi2Swidth:MEtype 81 0 insert psi2Swidth:MEtype 82 2 insert psi2Swidth:MEtype 83 1 insert psi2Swidth:MEtype 84 0 insert psi2Swidth:MEtype 85 0 insert psi2Swidth:MEtype 86 0 insert psi2Swidth:MEtype 87 0 insert psi2Swidth:MEtype 88 1 insert psi2Swidth:MEtype 89 2 insert psi2Swidth:MEtype 90 0 insert psi2Swidth:MEtype 91 0 insert psi2Swidth:MEtype 92 0 insert psi2Swidth:MEtype 93 0 insert psi2Swidth:MEtype 94 0 insert psi2Swidth:MEtype 95 0 insert psi2Swidth:MEtype 96 0 insert psi2Swidth:MEtype 97 0 insert psi2Swidth:MEtype 98 0 insert psi2Swidth:MEtype 99 1 insert psi2Swidth:MEtype 100 0 insert psi2Swidth:MEtype 101 0 insert psi2Swidth:MEtype 102 0 insert psi2Swidth:MEtype 103 0 insert psi2Swidth:MEtype 104 2 insert psi2Swidth:MEtype 105 2 insert psi2Swidth:MEtype 106 0 insert psi2Swidth:MEtype 107 0 insert psi2Swidth:MEtype 108 0 insert psi2Swidth:MEtype 109 0 insert psi2Swidth:MEtype 110 0 insert psi2Swidth:MEtype 111 1 insert psi2Swidth:MEtype 112 0 insert psi2Swidth:MEtype 113 2 insert psi2Swidth:MEtype 114 0 insert psi2Swidth:MEtype 115 2 insert psi2Swidth:MEtype 116 2 insert psi2Swidth:MEtype 117 1 insert psi2Swidth:MEcode 0 0 insert psi2Swidth:MEcode 1 0 insert psi2Swidth:MEcode 2 0 insert psi2Swidth:MEcode 3 0 insert psi2Swidth:MEcode 4 0 insert psi2Swidth:MEcode 5 0 insert psi2Swidth:MEcode 6 0 insert psi2Swidth:MEcode 7 0 insert psi2Swidth:MEcode 8 0 insert psi2Swidth:MEcode 9 0 insert psi2Swidth:MEcode 10 0 insert psi2Swidth:MEcode 11 0 insert psi2Swidth:MEcode 12 0 insert psi2Swidth:MEcode 13 0 insert psi2Swidth:MEcode 14 0 insert psi2Swidth:MEcode 15 0 insert psi2Swidth:MEcode 16 0 insert psi2Swidth:MEcode 17 0 insert psi2Swidth:MEcode 18 0 insert psi2Swidth:MEcode 19 0 insert psi2Swidth:MEcode 20 0 insert psi2Swidth:MEcode 21 0 insert psi2Swidth:MEcode 22 0 insert psi2Swidth:MEcode 23 0 insert psi2Swidth:MEcode 24 0 insert psi2Swidth:MEcode 25 0 insert psi2Swidth:MEcode 26 0 insert psi2Swidth:MEcode 27 0 insert psi2Swidth:MEcode 28 0 insert psi2Swidth:MEcode 29 0 insert psi2Swidth:MEcode 30 0 insert psi2Swidth:MEcode 31 0 insert psi2Swidth:MEcode 32 0 insert psi2Swidth:MEcode 33 0 insert psi2Swidth:MEcode 34 0 insert psi2Swidth:MEcode 35 0 insert psi2Swidth:MEcode 36 0 insert psi2Swidth:MEcode 37 0 insert psi2Swidth:MEcode 38 0 insert psi2Swidth:MEcode 39 0 insert psi2Swidth:MEcode 40 0 insert psi2Swidth:MEcode 41 0 insert psi2Swidth:MEcode 42 0 insert psi2Swidth:MEcode 43 2 insert psi2Swidth:MEcode 44 0 insert psi2Swidth:MEcode 45 0 insert psi2Swidth:MEcode 46 0 insert psi2Swidth:MEcode 47 0 insert psi2Swidth:MEcode 48 0 insert psi2Swidth:MEcode 49 0 insert psi2Swidth:MEcode 50 0 insert psi2Swidth:MEcode 51 0 insert psi2Swidth:MEcode 52 0 insert psi2Swidth:MEcode 53 2 insert psi2Swidth:MEcode 54 2 insert psi2Swidth:MEcode 55 2 insert psi2Swidth:MEcode 56 2 insert psi2Swidth:MEcode 57 2 insert psi2Swidth:MEcode 58 0 insert psi2Swidth:MEcode 59 0 insert psi2Swidth:MEcode 60 0 insert psi2Swidth:MEcode 61 0 insert psi2Swidth:MEcode 62 0 insert psi2Swidth:MEcode 63 0 insert psi2Swidth:MEcode 64 0 insert psi2Swidth:MEcode 65 0 insert psi2Swidth:MEcode 66 0 insert psi2Swidth:MEcode 67 2 insert psi2Swidth:MEcode 68 0 insert psi2Swidth:MEcode 69 0 insert psi2Swidth:MEcode 70 0 insert psi2Swidth:MEcode 71 0 insert psi2Swidth:MEcode 72 0 insert psi2Swidth:MEcode 73 0 insert psi2Swidth:MEcode 74 0 insert psi2Swidth:MEcode 75 0 insert psi2Swidth:MEcode 76 0 insert psi2Swidth:MEcode 77 0 insert psi2Swidth:MEcode 78 0 insert psi2Swidth:MEcode 79 0 insert psi2Swidth:MEcode 80 0 insert psi2Swidth:MEcode 81 0 insert psi2Swidth:MEcode 82 0 insert psi2Swidth:MEcode 83 2 insert psi2Swidth:MEcode 84 0 insert psi2Swidth:MEcode 85 0 insert psi2Swidth:MEcode 86 0 insert psi2Swidth:MEcode 87 0 insert psi2Swidth:MEcode 88 2 insert psi2Swidth:MEcode 89 0 insert psi2Swidth:MEcode 90 0 insert psi2Swidth:MEcode 91 0 insert psi2Swidth:MEcode 92 0 insert psi2Swidth:MEcode 93 0 insert psi2Swidth:MEcode 94 0 insert psi2Swidth:MEcode 95 0 insert psi2Swidth:MEcode 96 0 insert psi2Swidth:MEcode 97 0 insert psi2Swidth:MEcode 98 0 insert psi2Swidth:MEcode 99 2 insert psi2Swidth:MEcode 100 0 insert psi2Swidth:MEcode 101 0 insert psi2Swidth:MEcode 102 0 insert psi2Swidth:MEcode 103 0 insert psi2Swidth:MEcode 104 0 insert psi2Swidth:MEcode 105 0 insert psi2Swidth:MEcode 106 0 insert psi2Swidth:MEcode 107 0 insert psi2Swidth:MEcode 108 0 insert psi2Swidth:MEcode 109 0 insert psi2Swidth:MEcode 110 0 insert psi2Swidth:MEcode 111 0 insert psi2Swidth:MEcode 112 0 insert psi2Swidth:MEcode 113 0 insert psi2Swidth:MEcode 114 0 insert psi2Swidth:MEcode 115 0 insert psi2Swidth:MEcode 116 0 insert psi2Swidth:MEcode 117 2 insert psi2Swidth:MEcoupling 0 0.000128 insert psi2Swidth:MEcoupling 1 0.000128 insert psi2Swidth:MEcoupling 2 0.000128 insert psi2Swidth:MEcoupling 3 0.000128 insert psi2Swidth:MEcoupling 4 0.995785 insert psi2Swidth:MEcoupling 5 0.966652 insert psi2Swidth:MEcoupling 6 0.954449 insert psi2Swidth:MEcoupling 7 1.00212 insert psi2Swidth:MEcoupling 8 0.000168 insert psi2Swidth:MEcoupling 9 0.000175 insert psi2Swidth:MEcoupling 10 1.01939 insert psi2Swidth:MEcoupling 11 0.000335 insert psi2Swidth:MEcoupling 12 0.00035 insert psi2Swidth:MEcoupling 13 0.000168 insert psi2Swidth:MEcoupling 14 0.000175 insert psi2Swidth:MEcoupling 15 1.01939 insert psi2Swidth:MEcoupling 16 0.000335 insert psi2Swidth:MEcoupling 17 0.00035 insert psi2Swidth:MEcoupling 18 0.000168 insert psi2Swidth:MEcoupling 19 0.000175 insert psi2Swidth:MEcoupling 20 0.992739 insert psi2Swidth:MEcoupling 21 0.00019 insert psi2Swidth:MEcoupling 22 0.00019 insert psi2Swidth:MEcoupling 23 0.00019 insert psi2Swidth:MEcoupling 24 0.00019 insert psi2Swidth:MEcoupling 25 0.000168 insert psi2Swidth:MEcoupling 26 0.000175 insert psi2Swidth:MEcoupling 27 0.992739 insert psi2Swidth:MEcoupling 28 0.000335 insert psi2Swidth:MEcoupling 29 0.00035 insert psi2Swidth:MEcoupling 30 0.00011 insert psi2Swidth:MEcoupling 31 6e-05 insert psi2Swidth:MEcoupling 32 0.000185 insert psi2Swidth:MEcoupling 33 0.000903891 insert psi2Swidth:MEcoupling 34 0.000335 insert psi2Swidth:MEcoupling 35 0.00035 insert psi2Swidth:MEcoupling 36 0.000185 insert psi2Swidth:MEcoupling 37 0.977976 insert psi2Swidth:MEcoupling 38 0.977976 insert psi2Swidth:MEcoupling 39 1.02658 insert psi2Swidth:MEcoupling 40 1.02658 insert psi2Swidth:MEcoupling 41 0.000904738 insert psi2Swidth:MEcoupling 42 0.00028 insert psi2Swidth:MEcoupling 43 0.000956507 insert psi2Swidth:MEcoupling 44 0.0001 insert psi2Swidth:MEcoupling 45 0.00018 insert psi2Swidth:MEcoupling 46 0.0001 insert psi2Swidth:MEcoupling 47 0.0001 insert psi2Swidth:MEcoupling 48 0.00018 insert psi2Swidth:MEcoupling 49 0.0001 insert psi2Swidth:MEcoupling 50 0.00011 insert psi2Swidth:MEcoupling 51 0.00011 insert psi2Swidth:MEcoupling 52 0.00011 insert psi2Swidth:MEcoupling 53 0.000926761 insert psi2Swidth:MEcoupling 54 0.000927938 insert psi2Swidth:MEcoupling 55 0.000927221 insert psi2Swidth:MEcoupling 56 0.000886912 insert psi2Swidth:MEcoupling 57 0.000885535 insert psi2Swidth:MEcoupling 58 8.7e-05 insert psi2Swidth:MEcoupling 59 8.7e-05 insert psi2Swidth:MEcoupling 60 8.7e-05 insert psi2Swidth:MEcoupling 61 0.999548 insert psi2Swidth:MEcoupling 62 0.999548 insert psi2Swidth:MEcoupling 63 0.999092 insert psi2Swidth:MEcoupling 64 1.0054 insert psi2Swidth:MEcoupling 65 0.087 insert psi2Swidth:MEcoupling 66 0.081 insert psi2Swidth:MEcoupling 67 0.00503316 insert psi2Swidth:MEcoupling 68 1.00872 insert psi2Swidth:MEcoupling 69 0.970728 insert psi2Swidth:MEcoupling 70 0.00045 insert psi2Swidth:MEcoupling 71 0.978669 insert psi2Swidth:MEcoupling 72 0.00095 insert psi2Swidth:MEcoupling 73 1.0343 insert psi2Swidth:MEcoupling 74 1.00458 insert psi2Swidth:MEcoupling 75 4.4e-05 insert psi2Swidth:MEcoupling 76 0.998053 insert psi2Swidth:MEcoupling 77 0.00019 insert psi2Swidth:MEcoupling 78 1.0001 insert psi2Swidth:MEcoupling 79 0.00021 insert psi2Swidth:MEcoupling 80 0.0002 insert psi2Swidth:MEcoupling 81 0.183208 insert psi2Swidth:MEcoupling 82 0.992347 insert psi2Swidth:MEcoupling 83 0.00502975 insert psi2Swidth:MEcoupling 84 6e-05 insert psi2Swidth:MEcoupling 85 6.9e-05 insert psi2Swidth:MEcoupling 86 0.000133 insert psi2Swidth:MEcoupling 87 5e-05 insert psi2Swidth:MEcoupling 88 0.000969321 insert psi2Swidth:MEcoupling 89 1.02744 insert psi2Swidth:MEcoupling 90 0.000266 insert psi2Swidth:MEcoupling 91 0.0001 insert psi2Swidth:MEcoupling 92 2.7e-05 insert psi2Swidth:MEcoupling 93 6e-05 insert psi2Swidth:MEcoupling 94 6.9e-05 insert psi2Swidth:MEcoupling 95 0.00073 insert psi2Swidth:MEcoupling 96 0.0004 insert psi2Swidth:MEcoupling 97 0.000133 insert psi2Swidth:MEcoupling 98 5e-05 insert psi2Swidth:MEcoupling 99 0.00096924 insert psi2Swidth:MEcoupling 100 0.000266 insert psi2Swidth:MEcoupling 101 0.0001 insert psi2Swidth:MEcoupling 102 7e-05 insert psi2Swidth:MEcoupling 103 7e-05 insert psi2Swidth:MEcoupling 104 1.01481 insert psi2Swidth:MEcoupling 105 0.985637 insert psi2Swidth:MEcoupling 106 5.3e-05 insert psi2Swidth:MEcoupling 107 2.7e-05 insert psi2Swidth:MEcoupling 108 2e-05 insert psi2Swidth:MEcoupling 109 0.000136 insert psi2Swidth:MEcoupling 110 0.00022 insert psi2Swidth:MEcoupling 111 0.00105474 insert psi2Swidth:MEcoupling 112 0.00022 insert psi2Swidth:MEcoupling 113 1.00599 insert psi2Swidth:MEcoupling 114 0.00022 insert psi2Swidth:MEcoupling 115 1.00599 insert psi2Swidth:MEcoupling 116 1.00586 insert psi2Swidth:MEcoupling 117 0.00502755 insert psi2Swidth:ModeOn 0 0 insert psi2Swidth:ModeOn 1 0 insert psi2Swidth:ModeOn 2 0 insert psi2Swidth:ModeOn 3 0 insert psi2Swidth:ModeOn 4 1 insert psi2Swidth:ModeOn 5 1 insert psi2Swidth:ModeOn 6 1 insert psi2Swidth:ModeOn 7 0 insert psi2Swidth:ModeOn 8 0 insert psi2Swidth:ModeOn 9 0 insert psi2Swidth:ModeOn 10 0 insert psi2Swidth:ModeOn 11 0 insert psi2Swidth:ModeOn 12 0 insert psi2Swidth:ModeOn 13 0 insert psi2Swidth:ModeOn 14 0 insert psi2Swidth:ModeOn 15 0 insert psi2Swidth:ModeOn 16 0 insert psi2Swidth:ModeOn 17 0 insert psi2Swidth:ModeOn 18 0 insert psi2Swidth:ModeOn 19 0 insert psi2Swidth:ModeOn 20 0 insert psi2Swidth:ModeOn 21 0 insert psi2Swidth:ModeOn 22 0 insert psi2Swidth:ModeOn 23 0 insert psi2Swidth:ModeOn 24 0 insert psi2Swidth:ModeOn 25 0 insert psi2Swidth:ModeOn 26 0 insert psi2Swidth:ModeOn 27 0 insert psi2Swidth:ModeOn 28 0 insert psi2Swidth:ModeOn 29 0 insert psi2Swidth:ModeOn 30 0 insert psi2Swidth:ModeOn 31 0 insert psi2Swidth:ModeOn 32 0 insert psi2Swidth:ModeOn 33 0 insert psi2Swidth:ModeOn 34 0 insert psi2Swidth:ModeOn 35 0 insert psi2Swidth:ModeOn 36 0 insert psi2Swidth:ModeOn 37 0 insert psi2Swidth:ModeOn 38 0 insert psi2Swidth:ModeOn 39 0 insert psi2Swidth:ModeOn 40 0 insert psi2Swidth:ModeOn 41 0 insert psi2Swidth:ModeOn 42 0 insert psi2Swidth:ModeOn 43 0 insert psi2Swidth:ModeOn 44 0 insert psi2Swidth:ModeOn 45 0 insert psi2Swidth:ModeOn 46 0 insert psi2Swidth:ModeOn 47 0 insert psi2Swidth:ModeOn 48 0 insert psi2Swidth:ModeOn 49 0 insert psi2Swidth:ModeOn 50 0 insert psi2Swidth:ModeOn 51 0 insert psi2Swidth:ModeOn 52 0 insert psi2Swidth:ModeOn 53 0 insert psi2Swidth:ModeOn 54 0 insert psi2Swidth:ModeOn 55 0 insert psi2Swidth:ModeOn 56 0 insert psi2Swidth:ModeOn 57 0 insert psi2Swidth:ModeOn 58 0 insert psi2Swidth:ModeOn 59 0 insert psi2Swidth:ModeOn 60 0 insert psi2Swidth:ModeOn 61 0 insert psi2Swidth:ModeOn 62 0 insert psi2Swidth:ModeOn 63 0 insert psi2Swidth:ModeOn 64 1 insert psi2Swidth:ModeOn 65 1 insert psi2Swidth:ModeOn 66 1 insert psi2Swidth:ModeOn 67 0 insert psi2Swidth:ModeOn 68 0 insert psi2Swidth:ModeOn 69 0 insert psi2Swidth:ModeOn 70 0 insert psi2Swidth:ModeOn 71 0 insert psi2Swidth:ModeOn 72 0 insert psi2Swidth:ModeOn 73 0 insert psi2Swidth:ModeOn 74 0 insert psi2Swidth:ModeOn 75 0 insert psi2Swidth:ModeOn 76 0 insert psi2Swidth:ModeOn 77 0 insert psi2Swidth:ModeOn 78 0 insert psi2Swidth:ModeOn 79 0 insert psi2Swidth:ModeOn 80 0 insert psi2Swidth:ModeOn 81 1 insert psi2Swidth:ModeOn 82 0 insert psi2Swidth:ModeOn 83 0 insert psi2Swidth:ModeOn 84 0 insert psi2Swidth:ModeOn 85 0 insert psi2Swidth:ModeOn 86 0 insert psi2Swidth:ModeOn 87 0 insert psi2Swidth:ModeOn 88 0 insert psi2Swidth:ModeOn 89 0 insert psi2Swidth:ModeOn 90 0 insert psi2Swidth:ModeOn 91 0 insert psi2Swidth:ModeOn 92 0 insert psi2Swidth:ModeOn 93 0 insert psi2Swidth:ModeOn 94 0 insert psi2Swidth:ModeOn 95 0 insert psi2Swidth:ModeOn 96 0 insert psi2Swidth:ModeOn 97 0 insert psi2Swidth:ModeOn 98 0 insert psi2Swidth:ModeOn 99 0 insert psi2Swidth:ModeOn 100 0 insert psi2Swidth:ModeOn 101 0 insert psi2Swidth:ModeOn 102 0 insert psi2Swidth:ModeOn 103 0 insert psi2Swidth:ModeOn 104 0 insert psi2Swidth:ModeOn 105 0 insert psi2Swidth:ModeOn 106 0 insert psi2Swidth:ModeOn 107 0 insert psi2Swidth:ModeOn 108 0 insert psi2Swidth:ModeOn 109 0 insert psi2Swidth:ModeOn 110 0 insert psi2Swidth:ModeOn 111 0 insert psi2Swidth:ModeOn 112 0 insert psi2Swidth:ModeOn 113 0 insert psi2Swidth:ModeOn 114 0 insert psi2Swidth:ModeOn 115 0 insert psi2Swidth:ModeOn 116 0 insert psi2Swidth:ModeOn 117 0 insert psi2Swidth:MinimumMasses 0 2.182 insert psi2Swidth:MinimumMasses 1 2.184 insert psi2Swidth:MinimumMasses 2 2.188 insert psi2Swidth:MinimumMasses 3 2.186 insert psi2Swidth:MinimumMasses 4 3.64348 insert psi2Swidth:MinimumMasses 5 3.37512 insert psi2Swidth:MinimumMasses 6 3.36594 insert psi2Swidth:MinimumMasses 7 3.23096 insert psi2Swidth:MinimumMasses 8 1.27031 insert psi2Swidth:MinimumMasses 9 1.51084 insert psi2Swidth:MinimumMasses 10 1.13534 insert psi2Swidth:MinimumMasses 11 1.27888 insert psi2Swidth:MinimumMasses 12 1.51481 insert psi2Swidth:MinimumMasses 13 1.27031 insert psi2Swidth:MinimumMasses 14 1.51084 insert psi2Swidth:MinimumMasses 15 1.13534 insert psi2Swidth:MinimumMasses 16 1.27888 insert psi2Swidth:MinimumMasses 17 1.51481 insert psi2Swidth:MinimumMasses 18 1.27863 insert psi2Swidth:MinimumMasses 19 1.51915 insert psi2Swidth:MinimumMasses 20 1.14365 insert psi2Swidth:MinimumMasses 21 1.87026 insert psi2Swidth:MinimumMasses 22 1.87026 insert psi2Swidth:MinimumMasses 23 1.8604 insert psi2Swidth:MinimumMasses 24 1.8604 insert psi2Swidth:MinimumMasses 25 1.27863 insert psi2Swidth:MinimumMasses 26 1.51915 insert psi2Swidth:MinimumMasses 27 1.14365 insert psi2Swidth:MinimumMasses 28 1.27925 insert psi2Swidth:MinimumMasses 29 1.51518 insert psi2Swidth:MinimumMasses 30 2.10969 insert psi2Swidth:MinimumMasses 31 1.97471 insert psi2Swidth:MinimumMasses 32 1.6851 insert psi2Swidth:MinimumMasses 33 0.987354 insert psi2Swidth:MinimumMasses 34 1.27925 insert psi2Swidth:MinimumMasses 35 1.51518 insert psi2Swidth:MinimumMasses 36 1.69305 insert psi2Swidth:MinimumMasses 37 1.58568 insert psi2Swidth:MinimumMasses 38 1.58568 insert psi2Swidth:MinimumMasses 39 1.58965 insert psi2Swidth:MinimumMasses 40 1.58965 insert psi2Swidth:MinimumMasses 41 0.995296 insert psi2Swidth:MinimumMasses 42 2.5105 insert psi2Swidth:MinimumMasses 43 2.23136 insert psi2Swidth:MinimumMasses 44 2.5529 insert psi2Swidth:MinimumMasses 45 2.82677 insert psi2Swidth:MinimumMasses 46 2.54763 insert psi2Swidth:MinimumMasses 47 2.5529 insert psi2Swidth:MinimumMasses 48 2.82677 insert psi2Swidth:MinimumMasses 49 2.54763 insert psi2Swidth:MinimumMasses 50 2.6956 insert psi2Swidth:MinimumMasses 51 2.6944 insert psi2Swidth:MinimumMasses 52 2.6974 insert psi2Swidth:MinimumMasses 53 2.37874 insert psi2Swidth:MinimumMasses 54 2.39488 insert psi2Swidth:MinimumMasses 55 2.3851 insert psi2Swidth:MinimumMasses 56 2.6426 insert psi2Swidth:MinimumMasses 57 2.6298 insert psi2Swidth:MinimumMasses 58 1.4798 insert psi2Swidth:MinimumMasses 59 1.4798 insert psi2Swidth:MinimumMasses 60 1.4798 insert psi2Swidth:MinimumMasses 61 1.06907 insert psi2Swidth:MinimumMasses 62 1.06907 insert psi2Swidth:MinimumMasses 63 1.06448 insert psi2Swidth:MinimumMasses 64 3.31076 insert psi2Swidth:MinimumMasses 65 3.50176 insert psi2Swidth:MinimumMasses 66 3.5356 insert psi2Swidth:MinimumMasses 67 0.00102 insert psi2Swidth:MinimumMasses 68 0.95575 insert psi2Swidth:MinimumMasses 69 1.6535 insert psi2Swidth:MinimumMasses 70 1.36987 insert psi2Swidth:MinimumMasses 71 1.33125 insert psi2Swidth:MinimumMasses 72 0.961615 insert psi2Swidth:MinimumMasses 73 0.922997 insert psi2Swidth:MinimumMasses 74 2.7254 insert psi2Swidth:MinimumMasses 75 2.14946 insert psi2Swidth:MinimumMasses 76 1.033 insert psi2Swidth:MinimumMasses 77 1.73075 insert psi2Swidth:MinimumMasses 78 1.69846 insert psi2Swidth:MinimumMasses 79 1.0902 insert psi2Swidth:MinimumMasses 80 1.78795 insert psi2Swidth:MinimumMasses 81 0 insert psi2Swidth:MinimumMasses 82 3.65191 insert psi2Swidth:MinimumMasses 83 0.21132 insert psi2Swidth:MinimumMasses 84 2.42664 insert psi2Swidth:MinimumMasses 85 2.57689 insert psi2Swidth:MinimumMasses 86 2.01412 insert psi2Swidth:MinimumMasses 87 2.25464 insert psi2Swidth:MinimumMasses 88 1.87914 insert psi2Swidth:MinimumMasses 89 0.832728 insert psi2Swidth:MinimumMasses 90 2.01741 insert psi2Swidth:MinimumMasses 91 2.25334 insert psi2Swidth:MinimumMasses 92 2.86389 insert psi2Swidth:MinimumMasses 93 2.42404 insert psi2Swidth:MinimumMasses 94 2.57429 insert psi2Swidth:MinimumMasses 95 2.29066 insert psi2Swidth:MinimumMasses 96 2.15568 insert psi2Swidth:MinimumMasses 97 2.01152 insert psi2Swidth:MinimumMasses 98 2.25204 insert psi2Swidth:MinimumMasses 99 1.87654 insert psi2Swidth:MinimumMasses 100 2.01741 insert psi2Swidth:MinimumMasses 101 2.25334 insert psi2Swidth:MinimumMasses 102 1.97681 insert psi2Swidth:MinimumMasses 103 1.98476 insert psi2Swidth:MinimumMasses 104 1.94521 insert psi2Swidth:MinimumMasses 105 1.53696 insert psi2Swidth:MinimumMasses 106 1.2686 insert psi2Swidth:MinimumMasses 107 1.25942 insert psi2Swidth:MinimumMasses 108 0.558281 insert psi2Swidth:MinimumMasses 109 0.414118 insert psi2Swidth:MinimumMasses 110 0.65464 insert psi2Swidth:MinimumMasses 111 0.27914 insert psi2Swidth:MinimumMasses 112 0.650048 insert psi2Swidth:MinimumMasses 113 0.51507 insert psi2Swidth:MinimumMasses 114 0.650048 insert psi2Swidth:MinimumMasses 115 0.51507 insert psi2Swidth:MinimumMasses 116 0.510478 insert psi2Swidth:MinimumMasses 117 3.554 insert psi2Swidth:MEmass1 0 0 insert psi2Swidth:MEmass1 1 0 insert psi2Swidth:MEmass1 2 0 insert psi2Swidth:MEmass1 3 0 insert psi2Swidth:MEmass1 4 3.09692 insert psi2Swidth:MEmass1 5 0 insert psi2Swidth:MEmass1 6 0 insert psi2Swidth:MEmass1 7 3.09692 insert psi2Swidth:MEmass1 8 0 insert psi2Swidth:MEmass1 9 0 insert psi2Swidth:MEmass1 10 0.89166 insert psi2Swidth:MEmass1 11 0 insert psi2Swidth:MEmass1 12 0 insert psi2Swidth:MEmass1 13 0 insert psi2Swidth:MEmass1 14 0 insert psi2Swidth:MEmass1 15 0.89166 insert psi2Swidth:MEmass1 16 0 insert psi2Swidth:MEmass1 17 0 insert psi2Swidth:MEmass1 18 0 insert psi2Swidth:MEmass1 19 0 insert psi2Swidth:MEmass1 20 0.896 insert psi2Swidth:MEmass1 21 0 insert psi2Swidth:MEmass1 22 0 insert psi2Swidth:MEmass1 23 0 insert psi2Swidth:MEmass1 24 0 insert psi2Swidth:MEmass1 25 0 insert psi2Swidth:MEmass1 26 0 insert psi2Swidth:MEmass1 27 0.896 insert psi2Swidth:MEmass1 28 0 insert psi2Swidth:MEmass1 29 0 insert psi2Swidth:MEmass1 30 0 insert psi2Swidth:MEmass1 31 0 insert psi2Swidth:MEmass1 32 0 insert psi2Swidth:MEmass1 33 0.493677 insert psi2Swidth:MEmass1 34 0 insert psi2Swidth:MEmass1 35 0 insert psi2Swidth:MEmass1 36 0 insert psi2Swidth:MEmass1 37 1.272 insert psi2Swidth:MEmass1 38 1.272 insert psi2Swidth:MEmass1 39 1.272 insert psi2Swidth:MEmass1 40 1.272 insert psi2Swidth:MEmass1 41 0.497648 insert psi2Swidth:MEmass1 42 0 insert psi2Swidth:MEmass1 43 1.11568 insert psi2Swidth:MEmass1 44 0 insert psi2Swidth:MEmass1 45 0 insert psi2Swidth:MEmass1 46 0 insert psi2Swidth:MEmass1 47 0 insert psi2Swidth:MEmass1 48 0 insert psi2Swidth:MEmass1 49 0 insert psi2Swidth:MEmass1 50 0 insert psi2Swidth:MEmass1 51 0 insert psi2Swidth:MEmass1 52 0 insert psi2Swidth:MEmass1 53 1.18937 insert psi2Swidth:MEmass1 54 1.19744 insert psi2Swidth:MEmass1 55 1.19255 insert psi2Swidth:MEmass1 56 1.3213 insert psi2Swidth:MEmass1 57 1.3149 insert psi2Swidth:MEmass1 58 0 insert psi2Swidth:MEmass1 59 0 insert psi2Swidth:MEmass1 60 0 insert psi2Swidth:MEmass1 61 1.2295 insert psi2Swidth:MEmass1 62 1.2295 insert psi2Swidth:MEmass1 63 1.2295 insert psi2Swidth:MEmass1 64 0 insert psi2Swidth:MEmass1 65 0 insert psi2Swidth:MEmass1 66 0 insert psi2Swidth:MEmass1 67 0.00051 insert psi2Swidth:MEmass1 68 0 insert psi2Swidth:MEmass1 69 0.78265 insert psi2Swidth:MEmass1 70 0 insert psi2Swidth:MEmass1 71 0.7755 insert psi2Swidth:MEmass1 72 0 insert psi2Swidth:MEmass1 73 0.7755 insert psi2Swidth:MEmass1 74 0 insert psi2Swidth:MEmass1 75 0 insert psi2Swidth:MEmass1 76 0 insert psi2Swidth:MEmass1 77 0 insert psi2Swidth:MEmass1 78 1.01946 insert psi2Swidth:MEmass1 79 0 insert psi2Swidth:MEmass1 80 0 insert psi2Swidth:MEmass1 81 0 insert psi2Swidth:MEmass1 82 3.52593 insert psi2Swidth:MEmass1 83 0.10566 insert psi2Swidth:MEmass1 84 0 insert psi2Swidth:MEmass1 85 0 insert psi2Swidth:MEmass1 86 0 insert psi2Swidth:MEmass1 87 0 insert psi2Swidth:MEmass1 88 0.93957 insert psi2Swidth:MEmass1 89 0.78265 insert psi2Swidth:MEmass1 90 0 insert psi2Swidth:MEmass1 91 0 insert psi2Swidth:MEmass1 92 0 insert psi2Swidth:MEmass1 93 0 insert psi2Swidth:MEmass1 94 0 insert psi2Swidth:MEmass1 95 0 insert psi2Swidth:MEmass1 96 0 insert psi2Swidth:MEmass1 97 0 insert psi2Swidth:MEmass1 98 0 insert psi2Swidth:MEmass1 99 0.93827 insert psi2Swidth:MEmass1 100 0 insert psi2Swidth:MEmass1 101 0 insert psi2Swidth:MEmass1 102 0 insert psi2Swidth:MEmass1 103 0 insert psi2Swidth:MEmass1 104 1.01946 insert psi2Swidth:MEmass1 105 1.01946 insert psi2Swidth:MEmass1 106 0 insert psi2Swidth:MEmass1 107 0 insert psi2Swidth:MEmass1 108 0 insert psi2Swidth:MEmass1 109 0 insert psi2Swidth:MEmass1 110 0 insert psi2Swidth:MEmass1 111 0.13957 insert psi2Swidth:MEmass1 112 0 insert psi2Swidth:MEmass1 113 0.7755 insert psi2Swidth:MEmass1 114 0 insert psi2Swidth:MEmass1 115 0.7755 insert psi2Swidth:MEmass1 116 0.7755 insert psi2Swidth:MEmass1 117 1.777 insert psi2Swidth:MEmass2 0 0 insert psi2Swidth:MEmass2 1 0 insert psi2Swidth:MEmass2 2 0 insert psi2Swidth:MEmass2 3 0 insert psi2Swidth:MEmass2 4 0.54751 insert psi2Swidth:MEmass2 5 0 insert psi2Swidth:MEmass2 6 0 insert psi2Swidth:MEmass2 7 0.134978 insert psi2Swidth:MEmass2 8 0 insert psi2Swidth:MEmass2 9 0 insert psi2Swidth:MEmass2 10 0.493677 insert psi2Swidth:MEmass2 11 0 insert psi2Swidth:MEmass2 12 0 insert psi2Swidth:MEmass2 13 0 insert psi2Swidth:MEmass2 14 0 insert psi2Swidth:MEmass2 15 0.493677 insert psi2Swidth:MEmass2 16 0 insert psi2Swidth:MEmass2 17 0 insert psi2Swidth:MEmass2 18 0 insert psi2Swidth:MEmass2 19 0 insert psi2Swidth:MEmass2 20 0.497648 insert psi2Swidth:MEmass2 21 0 insert psi2Swidth:MEmass2 22 0 insert psi2Swidth:MEmass2 23 0 insert psi2Swidth:MEmass2 24 0 insert psi2Swidth:MEmass2 25 0 insert psi2Swidth:MEmass2 26 0 insert psi2Swidth:MEmass2 27 0.497648 insert psi2Swidth:MEmass2 28 0 insert psi2Swidth:MEmass2 29 0 insert psi2Swidth:MEmass2 30 0 insert psi2Swidth:MEmass2 31 0 insert psi2Swidth:MEmass2 32 0 insert psi2Swidth:MEmass2 33 0.493677 insert psi2Swidth:MEmass2 34 0 insert psi2Swidth:MEmass2 35 0 insert psi2Swidth:MEmass2 36 0 insert psi2Swidth:MEmass2 37 0.493677 insert psi2Swidth:MEmass2 38 0.493677 insert psi2Swidth:MEmass2 39 0.497648 insert psi2Swidth:MEmass2 40 0.497648 insert psi2Swidth:MEmass2 41 0.497648 insert psi2Swidth:MEmass2 42 0 insert psi2Swidth:MEmass2 43 1.11568 insert psi2Swidth:MEmass2 44 0 insert psi2Swidth:MEmass2 45 0 insert psi2Swidth:MEmass2 46 0 insert psi2Swidth:MEmass2 47 0 insert psi2Swidth:MEmass2 48 0 insert psi2Swidth:MEmass2 49 0 insert psi2Swidth:MEmass2 50 0 insert psi2Swidth:MEmass2 51 0 insert psi2Swidth:MEmass2 52 0 insert psi2Swidth:MEmass2 53 1.18937 insert psi2Swidth:MEmass2 54 1.19744 insert psi2Swidth:MEmass2 55 1.19255 insert psi2Swidth:MEmass2 56 1.3213 insert psi2Swidth:MEmass2 57 1.3149 insert psi2Swidth:MEmass2 58 0 insert psi2Swidth:MEmass2 59 0 insert psi2Swidth:MEmass2 60 0 insert psi2Swidth:MEmass2 61 0.13957 insert psi2Swidth:MEmass2 62 0.13957 insert psi2Swidth:MEmass2 63 0.134978 insert psi2Swidth:MEmass2 64 3.41476 insert psi2Swidth:MEmass2 65 0 insert psi2Swidth:MEmass2 66 0 insert psi2Swidth:MEmass2 67 0.00051 insert psi2Swidth:MEmass2 68 0.95778 insert psi2Swidth:MEmass2 69 0.95778 insert psi2Swidth:MEmass2 70 0 insert psi2Swidth:MEmass2 71 0.95778 insert psi2Swidth:MEmass2 72 0 insert psi2Swidth:MEmass2 73 0.54751 insert psi2Swidth:MEmass2 74 2.9804 insert psi2Swidth:MEmass2 75 0 insert psi2Swidth:MEmass2 76 1.718 insert psi2Swidth:MEmass2 77 0 insert psi2Swidth:MEmass2 78 0.965 insert psi2Swidth:MEmass2 79 0 insert psi2Swidth:MEmass2 80 0 insert psi2Swidth:MEmass2 81 0 insert psi2Swidth:MEmass2 82 0.134978 insert psi2Swidth:MEmass2 83 0.10566 insert psi2Swidth:MEmass2 84 0 insert psi2Swidth:MEmass2 85 0 insert psi2Swidth:MEmass2 86 0 insert psi2Swidth:MEmass2 87 0 insert psi2Swidth:MEmass2 88 0.93957 insert psi2Swidth:MEmass2 89 0.134978 insert psi2Swidth:MEmass2 90 0 insert psi2Swidth:MEmass2 91 0 insert psi2Swidth:MEmass2 92 0 insert psi2Swidth:MEmass2 93 0 insert psi2Swidth:MEmass2 94 0 insert psi2Swidth:MEmass2 95 0 insert psi2Swidth:MEmass2 96 0 insert psi2Swidth:MEmass2 97 0 insert psi2Swidth:MEmass2 98 0 insert psi2Swidth:MEmass2 99 0.93827 insert psi2Swidth:MEmass2 100 0 insert psi2Swidth:MEmass2 101 0 insert psi2Swidth:MEmass2 102 0 insert psi2Swidth:MEmass2 103 0 insert psi2Swidth:MEmass2 104 0.95778 insert psi2Swidth:MEmass2 105 0.54751 insert psi2Swidth:MEmass2 106 0 insert psi2Swidth:MEmass2 107 0 insert psi2Swidth:MEmass2 108 0 insert psi2Swidth:MEmass2 109 0 insert psi2Swidth:MEmass2 110 0 insert psi2Swidth:MEmass2 111 0.13957 insert psi2Swidth:MEmass2 112 0 insert psi2Swidth:MEmass2 113 0.13957 insert psi2Swidth:MEmass2 114 0 insert psi2Swidth:MEmass2 115 0.13957 insert psi2Swidth:MEmass2 116 0.134978 insert psi2Swidth:MEmass2 117 1.777 insert psi2Swidth:DecayModes 0 psi(2S)->Delta++,Deltabar--; insert psi2Swidth:DecayModes 1 psi(2S)->Delta+,Deltabar-; insert psi2Swidth:DecayModes 2 psi(2S)->Delta-,Deltabar+; insert psi2Swidth:DecayModes 3 psi(2S)->Delta0,Deltabar0; insert psi2Swidth:DecayModes 4 psi(2S)->Jpsi,eta; insert psi2Swidth:DecayModes 5 psi(2S)->Jpsi,pi+,pi-; insert psi2Swidth:DecayModes 6 psi(2S)->Jpsi,pi0,pi0; insert psi2Swidth:DecayModes 7 psi(2S)->Jpsi,pi0; insert psi2Swidth:DecayModes 8 psi(2S)->K*+,K-,pi0; insert psi2Swidth:DecayModes 9 psi(2S)->K*+,K-,rho0; insert psi2Swidth:DecayModes 10 psi(2S)->K*+,K-; insert psi2Swidth:DecayModes 11 psi(2S)->K*+,Kbar0,pi-; insert psi2Swidth:DecayModes 12 psi(2S)->K*+,Kbar0,rho-; insert psi2Swidth:DecayModes 13 psi(2S)->K*-,K+,pi0; insert psi2Swidth:DecayModes 14 psi(2S)->K*-,K+,rho0; insert psi2Swidth:DecayModes 15 psi(2S)->K*-,K+; insert psi2Swidth:DecayModes 16 psi(2S)->K*-,K0,pi+; insert psi2Swidth:DecayModes 17 psi(2S)->K*-,K0,rho+; insert psi2Swidth:DecayModes 18 psi(2S)->K*0,Kbar0,pi0; insert psi2Swidth:DecayModes 19 psi(2S)->K*0,Kbar0,rho0; insert psi2Swidth:DecayModes 20 psi(2S)->K*0,Kbar0; insert psi2Swidth:DecayModes 21 psi(2S)->K*_2+,K*-; insert psi2Swidth:DecayModes 22 psi(2S)->K*_2-,K*+; insert psi2Swidth:DecayModes 23 psi(2S)->K*_20,K*bar0; insert psi2Swidth:DecayModes 24 psi(2S)->K*_2bar0,K*0; insert psi2Swidth:DecayModes 25 psi(2S)->K*bar0,K0,pi0; insert psi2Swidth:DecayModes 26 psi(2S)->K*bar0,K0,rho0; insert psi2Swidth:DecayModes 27 psi(2S)->K*bar0,K0; insert psi2Swidth:DecayModes 28 psi(2S)->K+,K*bar0,pi-; insert psi2Swidth:DecayModes 29 psi(2S)->K+,K*bar0,rho-; insert psi2Swidth:DecayModes 30 psi(2S)->K+,K+,K-,K-,pi0; insert psi2Swidth:DecayModes 31 psi(2S)->K+,K+,K-,K-; insert psi2Swidth:DecayModes 32 psi(2S)->K+,K-,omega; insert psi2Swidth:DecayModes 33 psi(2S)->K+,K-; insert psi2Swidth:DecayModes 34 psi(2S)->K-,K*0,pi+; insert psi2Swidth:DecayModes 35 psi(2S)->K-,K*0,rho+; insert psi2Swidth:DecayModes 36 psi(2S)->K0,Kbar0,omega; insert psi2Swidth:DecayModes 37 psi(2S)->K_1+,K-; insert psi2Swidth:DecayModes 38 psi(2S)->K_1-,K+; insert psi2Swidth:DecayModes 39 psi(2S)->K_10,Kbar0; insert psi2Swidth:DecayModes 40 psi(2S)->K_1bar0,K0; insert psi2Swidth:DecayModes 41 psi(2S)->K_S0,K_L0; insert psi2Swidth:DecayModes 42 psi(2S)->Lambda0,Lambdabar0,pi+,pi-; insert psi2Swidth:DecayModes 43 psi(2S)->Lambda0,Lambdabar0; insert psi2Swidth:DecayModes 44 psi(2S)->Lambda0,nbar0,K0; insert psi2Swidth:DecayModes 45 psi(2S)->Lambda0,pbar-,K+,pi+,pi-; insert psi2Swidth:DecayModes 46 psi(2S)->Lambda0,pbar-,K+; insert psi2Swidth:DecayModes 47 psi(2S)->Lambdabar0,n0,Kbar0; insert psi2Swidth:DecayModes 48 psi(2S)->Lambdabar0,p+,K-,pi+,pi-; insert psi2Swidth:DecayModes 49 psi(2S)->Lambdabar0,p+,K-; insert psi2Swidth:DecayModes 50 psi(2S)->Sigma*+,Sigma*bar-; insert psi2Swidth:DecayModes 51 psi(2S)->Sigma*-,Sigma*bar+; insert psi2Swidth:DecayModes 52 psi(2S)->Sigma*0,Sigma*bar0; insert psi2Swidth:DecayModes 53 psi(2S)->Sigma+,Sigmabar-; insert psi2Swidth:DecayModes 54 psi(2S)->Sigma-,Sigmabar+; insert psi2Swidth:DecayModes 55 psi(2S)->Sigma0,Sigmabar0; insert psi2Swidth:DecayModes 56 psi(2S)->Xi-,Xibar+; insert psi2Swidth:DecayModes 57 psi(2S)->Xi0,Xibar0; insert psi2Swidth:DecayModes 58 psi(2S)->a_2+,rho-; insert psi2Swidth:DecayModes 59 psi(2S)->a_2-,rho+; insert psi2Swidth:DecayModes 60 psi(2S)->a_20,rho0; insert psi2Swidth:DecayModes 61 psi(2S)->b_1+,pi-; insert psi2Swidth:DecayModes 62 psi(2S)->b_1-,pi+; insert psi2Swidth:DecayModes 63 psi(2S)->b_10,pi0; insert psi2Swidth:DecayModes 64 psi(2S)->chi_c0,gamma; insert psi2Swidth:DecayModes 65 psi(2S)->chi_c1,gamma; insert psi2Swidth:DecayModes 66 psi(2S)->chi_c2,gamma; insert psi2Swidth:DecayModes 67 psi(2S)->e-,e+; insert psi2Swidth:DecayModes 68 psi(2S)->eta',gamma; insert psi2Swidth:DecayModes 69 psi(2S)->eta',omega; insert psi2Swidth:DecayModes 70 psi(2S)->eta',pi+,pi-,pi0; insert psi2Swidth:DecayModes 71 psi(2S)->eta',rho0; insert psi2Swidth:DecayModes 72 psi(2S)->eta,pi+,pi-,pi0; insert psi2Swidth:DecayModes 73 psi(2S)->eta,rho0; insert psi2Swidth:DecayModes 74 psi(2S)->eta_c,gamma; insert psi2Swidth:DecayModes 75 psi(2S)->f'_2,phi; insert psi2Swidth:DecayModes 76 psi(2S)->f_0(1710),gamma; insert psi2Swidth:DecayModes 77 psi(2S)->f_0(1710),omega; insert psi2Swidth:DecayModes 78 psi(2S)->f_0,phi; insert psi2Swidth:DecayModes 79 psi(2S)->f_2,gamma; insert psi2Swidth:DecayModes 80 psi(2S)->f_2,omega; insert psi2Swidth:DecayModes 81 psi(2S)->g,g,g; insert psi2Swidth:DecayModes 82 psi(2S)->h_c,pi0; insert psi2Swidth:DecayModes 83 psi(2S)->mu-,mu+; insert psi2Swidth:DecayModes 84 psi(2S)->n0,nbar0,eta; insert psi2Swidth:DecayModes 85 psi(2S)->n0,nbar0,omega; insert psi2Swidth:DecayModes 86 psi(2S)->n0,nbar0,pi0; insert psi2Swidth:DecayModes 87 psi(2S)->n0,nbar0,rho0; insert psi2Swidth:DecayModes 88 psi(2S)->n0,nbar0; insert psi2Swidth:DecayModes 89 psi(2S)->omega,pi0; insert psi2Swidth:DecayModes 90 psi(2S)->p+,nbar0,pi-; insert psi2Swidth:DecayModes 91 psi(2S)->p+,nbar0,rho-; insert psi2Swidth:DecayModes 92 psi(2S)->p+,pbar-,K+,K-; insert psi2Swidth:DecayModes 93 psi(2S)->p+,pbar-,eta; insert psi2Swidth:DecayModes 94 psi(2S)->p+,pbar-,omega; insert psi2Swidth:DecayModes 95 psi(2S)->p+,pbar-,pi+,pi-,pi0; insert psi2Swidth:DecayModes 96 psi(2S)->p+,pbar-,pi+,pi-; insert psi2Swidth:DecayModes 97 psi(2S)->p+,pbar-,pi0; insert psi2Swidth:DecayModes 98 psi(2S)->p+,pbar-,rho0; insert psi2Swidth:DecayModes 99 psi(2S)->p+,pbar-; insert psi2Swidth:DecayModes 100 psi(2S)->pbar-,n0,pi+; insert psi2Swidth:DecayModes 101 psi(2S)->pbar-,n0,rho+; insert psi2Swidth:DecayModes 102 psi(2S)->phi,K+,K-; insert psi2Swidth:DecayModes 103 psi(2S)->phi,K0,Kbar0; insert psi2Swidth:DecayModes 104 psi(2S)->phi,eta'; insert psi2Swidth:DecayModes 105 psi(2S)->phi,eta; insert psi2Swidth:DecayModes 106 psi(2S)->phi,pi+,pi-; insert psi2Swidth:DecayModes 107 psi(2S)->phi,pi0,pi0; insert psi2Swidth:DecayModes 108 psi(2S)->pi+,pi+,pi-,pi-; insert psi2Swidth:DecayModes 109 psi(2S)->pi+,pi-,pi0; insert psi2Swidth:DecayModes 110 psi(2S)->pi+,pi-,rho0; insert psi2Swidth:DecayModes 111 psi(2S)->pi+,pi-; insert psi2Swidth:DecayModes 112 psi(2S)->rho+,pi-,pi0; insert psi2Swidth:DecayModes 113 psi(2S)->rho+,pi-; insert psi2Swidth:DecayModes 114 psi(2S)->rho-,pi+,pi0; insert psi2Swidth:DecayModes 115 psi(2S)->rho-,pi+; insert psi2Swidth:DecayModes 116 psi(2S)->rho0,pi0; insert psi2Swidth:DecayModes 117 psi(2S)->tau-,tau+; insert psi2Swidth:InterpolationMasses 0 3.6824479 insert psi2Swidth:InterpolationMasses 1 3.6825854 insert psi2Swidth:InterpolationMasses 2 3.682723 insert psi2Swidth:InterpolationMasses 3 3.6828606 insert psi2Swidth:InterpolationMasses 4 3.6829981 insert psi2Swidth:InterpolationMasses 5 3.6831357 insert psi2Swidth:InterpolationMasses 6 3.6832732 insert psi2Swidth:InterpolationMasses 7 3.6834108 insert psi2Swidth:InterpolationMasses 8 3.6835483 insert psi2Swidth:InterpolationMasses 9 3.6836859 insert psi2Swidth:InterpolationMasses 10 3.6838234 insert psi2Swidth:InterpolationMasses 11 3.683961 insert psi2Swidth:InterpolationMasses 12 3.6840985 insert psi2Swidth:InterpolationMasses 13 3.6842361 insert psi2Swidth:InterpolationMasses 14 3.6843736 insert psi2Swidth:InterpolationMasses 15 3.6845112 insert psi2Swidth:InterpolationMasses 16 3.6846487 insert psi2Swidth:InterpolationMasses 17 3.6847863 insert psi2Swidth:InterpolationMasses 18 3.6849238 insert psi2Swidth:InterpolationMasses 19 3.6850614 insert psi2Swidth:InterpolationMasses 20 3.6851989 insert psi2Swidth:InterpolationMasses 21 3.6853365 insert psi2Swidth:InterpolationMasses 22 3.685474 insert psi2Swidth:InterpolationMasses 23 3.6856116 insert psi2Swidth:InterpolationMasses 24 3.6857491 insert psi2Swidth:InterpolationMasses 25 3.6858867 insert psi2Swidth:InterpolationMasses 26 3.6860242 insert psi2Swidth:InterpolationMasses 27 3.6861618 insert psi2Swidth:InterpolationMasses 28 3.6862993 insert psi2Swidth:InterpolationMasses 29 3.6864369 insert psi2Swidth:InterpolationMasses 30 3.6865744 insert psi2Swidth:InterpolationMasses 31 3.686712 insert psi2Swidth:InterpolationMasses 32 3.6868495 insert psi2Swidth:InterpolationMasses 33 3.6869871 insert psi2Swidth:InterpolationMasses 34 3.6871246 insert psi2Swidth:InterpolationMasses 35 3.6872622 insert psi2Swidth:InterpolationMasses 36 3.6873997 insert psi2Swidth:InterpolationMasses 37 3.6875373 insert psi2Swidth:InterpolationMasses 38 3.6876748 insert psi2Swidth:InterpolationMasses 39 3.6878124 insert psi2Swidth:InterpolationMasses 40 3.6879499 insert psi2Swidth:InterpolationMasses 41 3.6880875 insert psi2Swidth:InterpolationMasses 42 3.688225 insert psi2Swidth:InterpolationMasses 43 3.6883626 insert psi2Swidth:InterpolationMasses 44 3.6885001 insert psi2Swidth:InterpolationMasses 45 3.6886377 insert psi2Swidth:InterpolationMasses 46 3.6887752 insert psi2Swidth:InterpolationMasses 47 3.6889128 insert psi2Swidth:InterpolationMasses 48 3.6890503 insert psi2Swidth:InterpolationMasses 49 3.6891879 insert psi2Swidth:InterpolationMasses 50 3.6893254 insert psi2Swidth:InterpolationMasses 51 3.689463 insert psi2Swidth:InterpolationMasses 52 3.6896006 insert psi2Swidth:InterpolationMasses 53 3.6897381 insert psi2Swidth:InterpolationMasses 54 3.682723 insert psi2Swidth:InterpolationMasses 55 3.6828606 insert psi2Swidth:InterpolationMasses 56 3.6829981 insert psi2Swidth:InterpolationMasses 57 3.6831357 insert psi2Swidth:InterpolationMasses 58 3.6832732 insert psi2Swidth:InterpolationMasses 59 3.6834108 insert psi2Swidth:InterpolationMasses 60 3.6835483 insert psi2Swidth:InterpolationMasses 61 3.6836859 insert psi2Swidth:InterpolationMasses 62 3.6838234 insert psi2Swidth:InterpolationMasses 63 3.683961 insert psi2Swidth:InterpolationMasses 64 3.6840985 insert psi2Swidth:InterpolationMasses 65 3.6842361 insert psi2Swidth:InterpolationMasses 66 3.6843736 insert psi2Swidth:InterpolationMasses 67 3.6845112 insert psi2Swidth:InterpolationMasses 68 3.6846487 insert psi2Swidth:InterpolationMasses 69 3.6847863 insert psi2Swidth:InterpolationMasses 70 3.6849238 insert psi2Swidth:InterpolationMasses 71 3.6850614 insert psi2Swidth:InterpolationMasses 72 3.6851989 insert psi2Swidth:InterpolationMasses 73 3.6853365 insert psi2Swidth:InterpolationMasses 74 3.685474 insert psi2Swidth:InterpolationMasses 75 3.6856116 insert psi2Swidth:InterpolationMasses 76 3.6857491 insert psi2Swidth:InterpolationMasses 77 3.6858867 insert psi2Swidth:InterpolationMasses 78 3.6860242 insert psi2Swidth:InterpolationMasses 79 3.6861618 insert psi2Swidth:InterpolationMasses 80 3.6862993 insert psi2Swidth:InterpolationMasses 81 3.6864369 insert psi2Swidth:InterpolationMasses 82 3.6865744 insert psi2Swidth:InterpolationMasses 83 3.686712 insert psi2Swidth:InterpolationMasses 84 3.6868495 insert psi2Swidth:InterpolationMasses 85 3.6869871 insert psi2Swidth:InterpolationMasses 86 3.6871246 insert psi2Swidth:InterpolationMasses 87 3.6872622 insert psi2Swidth:InterpolationMasses 88 3.6873997 insert psi2Swidth:InterpolationMasses 89 3.6875373 insert psi2Swidth:InterpolationMasses 90 3.6876748 insert psi2Swidth:InterpolationMasses 91 3.6878124 insert psi2Swidth:InterpolationMasses 92 3.6879499 insert psi2Swidth:InterpolationMasses 93 3.6880875 insert psi2Swidth:InterpolationMasses 94 3.688225 insert psi2Swidth:InterpolationMasses 95 3.6883626 insert psi2Swidth:InterpolationMasses 96 3.6885001 insert psi2Swidth:InterpolationMasses 97 3.6886377 insert psi2Swidth:InterpolationMasses 98 3.6887752 insert psi2Swidth:InterpolationMasses 99 3.6889128 insert psi2Swidth:InterpolationMasses 100 3.6890503 insert psi2Swidth:InterpolationMasses 101 3.6891879 insert psi2Swidth:InterpolationMasses 102 3.6893254 insert psi2Swidth:InterpolationMasses 103 3.689463 insert psi2Swidth:InterpolationMasses 104 3.682723 insert psi2Swidth:InterpolationMasses 105 3.6828606 insert psi2Swidth:InterpolationMasses 106 3.6829981 insert psi2Swidth:InterpolationMasses 107 3.6831357 insert psi2Swidth:InterpolationMasses 108 3.6832732 insert psi2Swidth:InterpolationMasses 109 3.6834108 insert psi2Swidth:InterpolationMasses 110 3.6835483 insert psi2Swidth:InterpolationMasses 111 3.6836859 insert psi2Swidth:InterpolationMasses 112 3.6838234 insert psi2Swidth:InterpolationMasses 113 3.683961 insert psi2Swidth:InterpolationMasses 114 3.6840985 insert psi2Swidth:InterpolationMasses 115 3.6842361 insert psi2Swidth:InterpolationMasses 116 3.6843736 insert psi2Swidth:InterpolationMasses 117 3.6845112 insert psi2Swidth:InterpolationMasses 118 3.6846487 insert psi2Swidth:InterpolationMasses 119 3.6847863 insert psi2Swidth:InterpolationMasses 120 3.6849238 insert psi2Swidth:InterpolationMasses 121 3.6850614 insert psi2Swidth:InterpolationMasses 122 3.6851989 insert psi2Swidth:InterpolationMasses 123 3.6853365 insert psi2Swidth:InterpolationMasses 124 3.685474 insert psi2Swidth:InterpolationMasses 125 3.6856116 insert psi2Swidth:InterpolationMasses 126 3.6857491 insert psi2Swidth:InterpolationMasses 127 3.6858867 insert psi2Swidth:InterpolationMasses 128 3.6860242 insert psi2Swidth:InterpolationMasses 129 3.6861618 insert psi2Swidth:InterpolationMasses 130 3.6862993 insert psi2Swidth:InterpolationMasses 131 3.6864369 insert psi2Swidth:InterpolationMasses 132 3.6865744 insert psi2Swidth:InterpolationMasses 133 3.686712 insert psi2Swidth:InterpolationMasses 134 3.6868495 insert psi2Swidth:InterpolationMasses 135 3.6869871 insert psi2Swidth:InterpolationMasses 136 3.6871246 insert psi2Swidth:InterpolationMasses 137 3.6872622 insert psi2Swidth:InterpolationMasses 138 3.6873997 insert psi2Swidth:InterpolationMasses 139 3.6875373 insert psi2Swidth:InterpolationMasses 140 3.6876748 insert psi2Swidth:InterpolationMasses 141 3.6878124 insert psi2Swidth:InterpolationMasses 142 3.6879499 insert psi2Swidth:InterpolationMasses 143 3.6880875 insert psi2Swidth:InterpolationMasses 144 3.688225 insert psi2Swidth:InterpolationMasses 145 3.6883626 insert psi2Swidth:InterpolationMasses 146 3.6885001 insert psi2Swidth:InterpolationMasses 147 3.6886377 insert psi2Swidth:InterpolationMasses 148 3.6887752 insert psi2Swidth:InterpolationMasses 149 3.6889128 insert psi2Swidth:InterpolationMasses 150 3.6890503 insert psi2Swidth:InterpolationMasses 151 3.6891879 insert psi2Swidth:InterpolationMasses 152 3.6893254 insert psi2Swidth:InterpolationMasses 153 3.689463 insert psi2Swidth:InterpolationMasses 154 3.6824479 insert psi2Swidth:InterpolationMasses 155 3.6825854 insert psi2Swidth:InterpolationMasses 156 3.682723 insert psi2Swidth:InterpolationMasses 157 3.6828606 insert psi2Swidth:InterpolationMasses 158 3.6829981 insert psi2Swidth:InterpolationMasses 159 3.6831357 insert psi2Swidth:InterpolationMasses 160 3.6832732 insert psi2Swidth:InterpolationMasses 161 3.6834108 insert psi2Swidth:InterpolationMasses 162 3.6835483 insert psi2Swidth:InterpolationMasses 163 3.6836859 insert psi2Swidth:InterpolationMasses 164 3.6838234 insert psi2Swidth:InterpolationMasses 165 3.683961 insert psi2Swidth:InterpolationMasses 166 3.6840985 insert psi2Swidth:InterpolationMasses 167 3.6842361 insert psi2Swidth:InterpolationMasses 168 3.6843736 insert psi2Swidth:InterpolationMasses 169 3.6845112 insert psi2Swidth:InterpolationMasses 170 3.6846487 insert psi2Swidth:InterpolationMasses 171 3.6847863 insert psi2Swidth:InterpolationMasses 172 3.6849238 insert psi2Swidth:InterpolationMasses 173 3.6850614 insert psi2Swidth:InterpolationMasses 174 3.6851989 insert psi2Swidth:InterpolationMasses 175 3.6853365 insert psi2Swidth:InterpolationMasses 176 3.685474 insert psi2Swidth:InterpolationMasses 177 3.6856116 insert psi2Swidth:InterpolationMasses 178 3.6857491 insert psi2Swidth:InterpolationMasses 179 3.6858867 insert psi2Swidth:InterpolationMasses 180 3.6860242 insert psi2Swidth:InterpolationMasses 181 3.6861618 insert psi2Swidth:InterpolationMasses 182 3.6862993 insert psi2Swidth:InterpolationMasses 183 3.6864369 insert psi2Swidth:InterpolationMasses 184 3.6865744 insert psi2Swidth:InterpolationMasses 185 3.686712 insert psi2Swidth:InterpolationMasses 186 3.6868495 insert psi2Swidth:InterpolationMasses 187 3.6869871 insert psi2Swidth:InterpolationMasses 188 3.6871246 insert psi2Swidth:InterpolationMasses 189 3.6872622 insert psi2Swidth:InterpolationMasses 190 3.6873997 insert psi2Swidth:InterpolationMasses 191 3.6875373 insert psi2Swidth:InterpolationMasses 192 3.6876748 insert psi2Swidth:InterpolationMasses 193 3.6878124 insert psi2Swidth:InterpolationMasses 194 3.6879499 insert psi2Swidth:InterpolationMasses 195 3.6880875 insert psi2Swidth:InterpolationMasses 196 3.688225 insert psi2Swidth:InterpolationMasses 197 3.6883626 insert psi2Swidth:InterpolationMasses 198 3.6885001 insert psi2Swidth:InterpolationMasses 199 3.6886377 insert psi2Swidth:InterpolationMasses 200 3.6887752 insert psi2Swidth:InterpolationMasses 201 3.6889128 insert psi2Swidth:InterpolationMasses 202 3.6890503 insert psi2Swidth:InterpolationMasses 203 3.6891879 insert psi2Swidth:InterpolationMasses 204 3.6893254 insert psi2Swidth:InterpolationMasses 205 3.689463 insert psi2Swidth:InterpolationMasses 206 3.6896006 insert psi2Swidth:InterpolationMasses 207 3.6897381 insert psi2Swidth:InterpolationMasses 208 3.6824479 insert psi2Swidth:InterpolationMasses 209 3.6825854 insert psi2Swidth:InterpolationMasses 210 3.682723 insert psi2Swidth:InterpolationMasses 211 3.6828606 insert psi2Swidth:InterpolationMasses 212 3.6829981 insert psi2Swidth:InterpolationMasses 213 3.6831357 insert psi2Swidth:InterpolationMasses 214 3.6832732 insert psi2Swidth:InterpolationMasses 215 3.6834108 insert psi2Swidth:InterpolationMasses 216 3.6835483 insert psi2Swidth:InterpolationMasses 217 3.6836859 insert psi2Swidth:InterpolationMasses 218 3.6838234 insert psi2Swidth:InterpolationMasses 219 3.683961 insert psi2Swidth:InterpolationMasses 220 3.6840985 insert psi2Swidth:InterpolationMasses 221 3.6842361 insert psi2Swidth:InterpolationMasses 222 3.6843736 insert psi2Swidth:InterpolationMasses 223 3.6845112 insert psi2Swidth:InterpolationMasses 224 3.6846487 insert psi2Swidth:InterpolationMasses 225 3.6847863 insert psi2Swidth:InterpolationMasses 226 3.6849238 insert psi2Swidth:InterpolationMasses 227 3.6850614 insert psi2Swidth:InterpolationMasses 228 3.6851989 insert psi2Swidth:InterpolationMasses 229 3.6853365 insert psi2Swidth:InterpolationMasses 230 3.685474 insert psi2Swidth:InterpolationMasses 231 3.6856116 insert psi2Swidth:InterpolationMasses 232 3.6857491 insert psi2Swidth:InterpolationMasses 233 3.6858867 insert psi2Swidth:InterpolationMasses 234 3.6860242 insert psi2Swidth:InterpolationMasses 235 3.6861618 insert psi2Swidth:InterpolationMasses 236 3.6862993 insert psi2Swidth:InterpolationMasses 237 3.6864369 insert psi2Swidth:InterpolationMasses 238 3.6865744 insert psi2Swidth:InterpolationMasses 239 3.686712 insert psi2Swidth:InterpolationMasses 240 3.6868495 insert psi2Swidth:InterpolationMasses 241 3.6869871 insert psi2Swidth:InterpolationMasses 242 3.6871246 insert psi2Swidth:InterpolationMasses 243 3.6872622 insert psi2Swidth:InterpolationMasses 244 3.6873997 insert psi2Swidth:InterpolationMasses 245 3.6875373 insert psi2Swidth:InterpolationMasses 246 3.6876748 insert psi2Swidth:InterpolationMasses 247 3.6878124 insert psi2Swidth:InterpolationMasses 248 3.6879499 insert psi2Swidth:InterpolationMasses 249 3.6880875 insert psi2Swidth:InterpolationMasses 250 3.688225 insert psi2Swidth:InterpolationMasses 251 3.6883626 insert psi2Swidth:InterpolationMasses 252 3.6885001 insert psi2Swidth:InterpolationMasses 253 3.6886377 insert psi2Swidth:InterpolationMasses 254 3.6887752 insert psi2Swidth:InterpolationMasses 255 3.6889128 insert psi2Swidth:InterpolationMasses 256 3.6890503 insert psi2Swidth:InterpolationMasses 257 3.6891879 insert psi2Swidth:InterpolationMasses 258 3.6893254 insert psi2Swidth:InterpolationMasses 259 3.689463 insert psi2Swidth:InterpolationMasses 260 3.6896006 insert psi2Swidth:InterpolationMasses 261 3.6897381 insert psi2Swidth:InterpolationMasses 262 3.6824479 insert psi2Swidth:InterpolationMasses 263 3.6825854 insert psi2Swidth:InterpolationMasses 264 3.682723 insert psi2Swidth:InterpolationMasses 265 3.6828606 insert psi2Swidth:InterpolationMasses 266 3.6829981 insert psi2Swidth:InterpolationMasses 267 3.6831357 insert psi2Swidth:InterpolationMasses 268 3.6832732 insert psi2Swidth:InterpolationMasses 269 3.6834108 insert psi2Swidth:InterpolationMasses 270 3.6835483 insert psi2Swidth:InterpolationMasses 271 3.6836859 insert psi2Swidth:InterpolationMasses 272 3.6838234 insert psi2Swidth:InterpolationMasses 273 3.683961 insert psi2Swidth:InterpolationMasses 274 3.6840985 insert psi2Swidth:InterpolationMasses 275 3.6842361 insert psi2Swidth:InterpolationMasses 276 3.6843736 insert psi2Swidth:InterpolationMasses 277 3.6845112 insert psi2Swidth:InterpolationMasses 278 3.6846487 insert psi2Swidth:InterpolationMasses 279 3.6847863 insert psi2Swidth:InterpolationMasses 280 3.6849238 insert psi2Swidth:InterpolationMasses 281 3.6850614 insert psi2Swidth:InterpolationMasses 282 3.6851989 insert psi2Swidth:InterpolationMasses 283 3.6853365 insert psi2Swidth:InterpolationMasses 284 3.685474 insert psi2Swidth:InterpolationMasses 285 3.6856116 insert psi2Swidth:InterpolationMasses 286 3.6857491 insert psi2Swidth:InterpolationMasses 287 3.6858867 insert psi2Swidth:InterpolationMasses 288 3.6860242 insert psi2Swidth:InterpolationMasses 289 3.6861618 insert psi2Swidth:InterpolationMasses 290 3.6862993 insert psi2Swidth:InterpolationMasses 291 3.6864369 insert psi2Swidth:InterpolationMasses 292 3.6865744 insert psi2Swidth:InterpolationMasses 293 3.686712 insert psi2Swidth:InterpolationMasses 294 3.6868495 insert psi2Swidth:InterpolationMasses 295 3.6869871 insert psi2Swidth:InterpolationMasses 296 3.6871246 insert psi2Swidth:InterpolationMasses 297 3.6872622 insert psi2Swidth:InterpolationMasses 298 3.6873997 insert psi2Swidth:InterpolationMasses 299 3.6875373 insert psi2Swidth:InterpolationMasses 300 3.6876748 insert psi2Swidth:InterpolationMasses 301 3.6878124 insert psi2Swidth:InterpolationMasses 302 3.6879499 insert psi2Swidth:InterpolationMasses 303 3.6880875 insert psi2Swidth:InterpolationMasses 304 3.688225 insert psi2Swidth:InterpolationMasses 305 3.6883626 insert psi2Swidth:InterpolationMasses 306 3.6885001 insert psi2Swidth:InterpolationMasses 307 3.6886377 insert psi2Swidth:InterpolationMasses 308 3.6887752 insert psi2Swidth:InterpolationMasses 309 3.6889128 insert psi2Swidth:InterpolationMasses 310 3.6890503 insert psi2Swidth:InterpolationMasses 311 3.6891879 insert psi2Swidth:InterpolationMasses 312 3.6893254 insert psi2Swidth:InterpolationMasses 313 3.689463 insert psi2Swidth:InterpolationMasses 314 3.6896006 insert psi2Swidth:InterpolationMasses 315 3.6897381 insert psi2Swidth:InterpolationMasses 316 3.6824479 insert psi2Swidth:InterpolationMasses 317 3.6825854 insert psi2Swidth:InterpolationMasses 318 3.682723 insert psi2Swidth:InterpolationMasses 319 3.6828606 insert psi2Swidth:InterpolationMasses 320 3.6829981 insert psi2Swidth:InterpolationMasses 321 3.6831357 insert psi2Swidth:InterpolationMasses 322 3.6832732 insert psi2Swidth:InterpolationMasses 323 3.6834108 insert psi2Swidth:InterpolationMasses 324 3.6835483 insert psi2Swidth:InterpolationMasses 325 3.6836859 insert psi2Swidth:InterpolationMasses 326 3.6838234 insert psi2Swidth:InterpolationMasses 327 3.683961 insert psi2Swidth:InterpolationMasses 328 3.6840985 insert psi2Swidth:InterpolationMasses 329 3.6842361 insert psi2Swidth:InterpolationMasses 330 3.6843736 insert psi2Swidth:InterpolationMasses 331 3.6845112 insert psi2Swidth:InterpolationMasses 332 3.6846487 insert psi2Swidth:InterpolationMasses 333 3.6847863 insert psi2Swidth:InterpolationMasses 334 3.6849238 insert psi2Swidth:InterpolationMasses 335 3.6850614 insert psi2Swidth:InterpolationMasses 336 3.6851989 insert psi2Swidth:InterpolationMasses 337 3.6853365 insert psi2Swidth:InterpolationMasses 338 3.685474 insert psi2Swidth:InterpolationMasses 339 3.6856116 insert psi2Swidth:InterpolationMasses 340 3.6857491 insert psi2Swidth:InterpolationMasses 341 3.6858867 insert psi2Swidth:InterpolationMasses 342 3.6860242 insert psi2Swidth:InterpolationMasses 343 3.6861618 insert psi2Swidth:InterpolationMasses 344 3.6862993 insert psi2Swidth:InterpolationMasses 345 3.6864369 insert psi2Swidth:InterpolationMasses 346 3.6865744 insert psi2Swidth:InterpolationMasses 347 3.686712 insert psi2Swidth:InterpolationMasses 348 3.6868495 insert psi2Swidth:InterpolationMasses 349 3.6869871 insert psi2Swidth:InterpolationMasses 350 3.6871246 insert psi2Swidth:InterpolationMasses 351 3.6872622 insert psi2Swidth:InterpolationMasses 352 3.6873997 insert psi2Swidth:InterpolationMasses 353 3.6875373 insert psi2Swidth:InterpolationMasses 354 3.6876748 insert psi2Swidth:InterpolationMasses 355 3.6878124 insert psi2Swidth:InterpolationMasses 356 3.6879499 insert psi2Swidth:InterpolationMasses 357 3.6880875 insert psi2Swidth:InterpolationMasses 358 3.688225 insert psi2Swidth:InterpolationMasses 359 3.6883626 insert psi2Swidth:InterpolationMasses 360 3.6885001 insert psi2Swidth:InterpolationMasses 361 3.6886377 insert psi2Swidth:InterpolationMasses 362 3.6887752 insert psi2Swidth:InterpolationMasses 363 3.6889128 insert psi2Swidth:InterpolationMasses 364 3.6890503 insert psi2Swidth:InterpolationMasses 365 3.6891879 insert psi2Swidth:InterpolationMasses 366 3.6893254 insert psi2Swidth:InterpolationMasses 367 3.689463 insert psi2Swidth:InterpolationMasses 368 3.6896006 insert psi2Swidth:InterpolationMasses 369 3.6897381 insert psi2Swidth:InterpolationMasses 370 3.6824479 insert psi2Swidth:InterpolationMasses 371 3.6825854 insert psi2Swidth:InterpolationMasses 372 3.682723 insert psi2Swidth:InterpolationMasses 373 3.6828606 insert psi2Swidth:InterpolationMasses 374 3.6829981 insert psi2Swidth:InterpolationMasses 375 3.6831357 insert psi2Swidth:InterpolationMasses 376 3.6832732 insert psi2Swidth:InterpolationMasses 377 3.6834108 insert psi2Swidth:InterpolationMasses 378 3.6835483 insert psi2Swidth:InterpolationMasses 379 3.6836859 insert psi2Swidth:InterpolationMasses 380 3.6838234 insert psi2Swidth:InterpolationMasses 381 3.683961 insert psi2Swidth:InterpolationMasses 382 3.6840985 insert psi2Swidth:InterpolationMasses 383 3.6842361 insert psi2Swidth:InterpolationMasses 384 3.6843736 insert psi2Swidth:InterpolationMasses 385 3.6845112 insert psi2Swidth:InterpolationMasses 386 3.6846487 insert psi2Swidth:InterpolationMasses 387 3.6847863 insert psi2Swidth:InterpolationMasses 388 3.6849238 insert psi2Swidth:InterpolationMasses 389 3.6850614 insert psi2Swidth:InterpolationMasses 390 3.6851989 insert psi2Swidth:InterpolationMasses 391 3.6853365 insert psi2Swidth:InterpolationMasses 392 3.685474 insert psi2Swidth:InterpolationMasses 393 3.6856116 insert psi2Swidth:InterpolationMasses 394 3.6857491 insert psi2Swidth:InterpolationMasses 395 3.6858867 insert psi2Swidth:InterpolationMasses 396 3.6860242 insert psi2Swidth:InterpolationMasses 397 3.6861618 insert psi2Swidth:InterpolationMasses 398 3.6862993 insert psi2Swidth:InterpolationMasses 399 3.6864369 insert psi2Swidth:InterpolationMasses 400 3.6865744 insert psi2Swidth:InterpolationMasses 401 3.686712 insert psi2Swidth:InterpolationMasses 402 3.6868495 insert psi2Swidth:InterpolationMasses 403 3.6869871 insert psi2Swidth:InterpolationMasses 404 3.6871246 insert psi2Swidth:InterpolationMasses 405 3.6872622 insert psi2Swidth:InterpolationMasses 406 3.6873997 insert psi2Swidth:InterpolationMasses 407 3.6875373 insert psi2Swidth:InterpolationMasses 408 3.6876748 insert psi2Swidth:InterpolationMasses 409 3.6878124 insert psi2Swidth:InterpolationMasses 410 3.6879499 insert psi2Swidth:InterpolationMasses 411 3.6880875 insert psi2Swidth:InterpolationMasses 412 3.688225 insert psi2Swidth:InterpolationMasses 413 3.6883626 insert psi2Swidth:InterpolationMasses 414 3.6885001 insert psi2Swidth:InterpolationMasses 415 3.6886377 insert psi2Swidth:InterpolationMasses 416 3.6887752 insert psi2Swidth:InterpolationMasses 417 3.6889128 insert psi2Swidth:InterpolationMasses 418 3.6890503 insert psi2Swidth:InterpolationMasses 419 3.6891879 insert psi2Swidth:InterpolationMasses 420 3.6893254 insert psi2Swidth:InterpolationMasses 421 3.689463 insert psi2Swidth:InterpolationMasses 422 3.6896006 insert psi2Swidth:InterpolationMasses 423 3.6897381 insert psi2Swidth:InterpolationMasses 424 3.6824479 insert psi2Swidth:InterpolationMasses 425 3.6825854 insert psi2Swidth:InterpolationMasses 426 3.682723 insert psi2Swidth:InterpolationMasses 427 3.6828606 insert psi2Swidth:InterpolationMasses 428 3.6829981 insert psi2Swidth:InterpolationMasses 429 3.6831357 insert psi2Swidth:InterpolationMasses 430 3.6832732 insert psi2Swidth:InterpolationMasses 431 3.6834108 insert psi2Swidth:InterpolationMasses 432 3.6835483 insert psi2Swidth:InterpolationMasses 433 3.6836859 insert psi2Swidth:InterpolationMasses 434 3.6838234 insert psi2Swidth:InterpolationMasses 435 3.683961 insert psi2Swidth:InterpolationMasses 436 3.6840985 insert psi2Swidth:InterpolationMasses 437 3.6842361 insert psi2Swidth:InterpolationMasses 438 3.6843736 insert psi2Swidth:InterpolationMasses 439 3.6845112 insert psi2Swidth:InterpolationMasses 440 3.6846487 insert psi2Swidth:InterpolationMasses 441 3.6847863 insert psi2Swidth:InterpolationMasses 442 3.6849238 insert psi2Swidth:InterpolationMasses 443 3.6850614 insert psi2Swidth:InterpolationMasses 444 3.6851989 insert psi2Swidth:InterpolationMasses 445 3.6853365 insert psi2Swidth:InterpolationMasses 446 3.685474 insert psi2Swidth:InterpolationMasses 447 3.6856116 insert psi2Swidth:InterpolationMasses 448 3.6857491 insert psi2Swidth:InterpolationMasses 449 3.6858867 insert psi2Swidth:InterpolationMasses 450 3.6860242 insert psi2Swidth:InterpolationMasses 451 3.6861618 insert psi2Swidth:InterpolationMasses 452 3.6862993 insert psi2Swidth:InterpolationMasses 453 3.6864369 insert psi2Swidth:InterpolationMasses 454 3.6865744 insert psi2Swidth:InterpolationMasses 455 3.686712 insert psi2Swidth:InterpolationMasses 456 3.6868495 insert psi2Swidth:InterpolationMasses 457 3.6869871 insert psi2Swidth:InterpolationMasses 458 3.6871246 insert psi2Swidth:InterpolationMasses 459 3.6872622 insert psi2Swidth:InterpolationMasses 460 3.6873997 insert psi2Swidth:InterpolationMasses 461 3.6875373 insert psi2Swidth:InterpolationMasses 462 3.6876748 insert psi2Swidth:InterpolationMasses 463 3.6878124 insert psi2Swidth:InterpolationMasses 464 3.6879499 insert psi2Swidth:InterpolationMasses 465 3.6880875 insert psi2Swidth:InterpolationMasses 466 3.688225 insert psi2Swidth:InterpolationMasses 467 3.6883626 insert psi2Swidth:InterpolationMasses 468 3.6885001 insert psi2Swidth:InterpolationMasses 469 3.6886377 insert psi2Swidth:InterpolationMasses 470 3.6887752 insert psi2Swidth:InterpolationMasses 471 3.6889128 insert psi2Swidth:InterpolationMasses 472 3.6890503 insert psi2Swidth:InterpolationMasses 473 3.6891879 insert psi2Swidth:InterpolationMasses 474 3.6893254 insert psi2Swidth:InterpolationMasses 475 3.689463 insert psi2Swidth:InterpolationMasses 476 3.6896006 insert psi2Swidth:InterpolationMasses 477 3.6897381 insert psi2Swidth:InterpolationMasses 478 3.6824479 insert psi2Swidth:InterpolationMasses 479 3.6825854 insert psi2Swidth:InterpolationMasses 480 3.682723 insert psi2Swidth:InterpolationMasses 481 3.6828606 insert psi2Swidth:InterpolationMasses 482 3.6829981 insert psi2Swidth:InterpolationMasses 483 3.6831357 insert psi2Swidth:InterpolationMasses 484 3.6832732 insert psi2Swidth:InterpolationMasses 485 3.6834108 insert psi2Swidth:InterpolationMasses 486 3.6835483 insert psi2Swidth:InterpolationMasses 487 3.6836859 insert psi2Swidth:InterpolationMasses 488 3.6838234 insert psi2Swidth:InterpolationMasses 489 3.683961 insert psi2Swidth:InterpolationMasses 490 3.6840985 insert psi2Swidth:InterpolationMasses 491 3.6842361 insert psi2Swidth:InterpolationMasses 492 3.6843736 insert psi2Swidth:InterpolationMasses 493 3.6845112 insert psi2Swidth:InterpolationMasses 494 3.6846487 insert psi2Swidth:InterpolationMasses 495 3.6847863 insert psi2Swidth:InterpolationMasses 496 3.6849238 insert psi2Swidth:InterpolationMasses 497 3.6850614 insert psi2Swidth:InterpolationMasses 498 3.6851989 insert psi2Swidth:InterpolationMasses 499 3.6853365 insert psi2Swidth:InterpolationMasses 500 3.685474 insert psi2Swidth:InterpolationMasses 501 3.6856116 insert psi2Swidth:InterpolationMasses 502 3.6857491 insert psi2Swidth:InterpolationMasses 503 3.6858867 insert psi2Swidth:InterpolationMasses 504 3.6860242 insert psi2Swidth:InterpolationMasses 505 3.6861618 insert psi2Swidth:InterpolationMasses 506 3.6862993 insert psi2Swidth:InterpolationMasses 507 3.6864369 insert psi2Swidth:InterpolationMasses 508 3.6865744 insert psi2Swidth:InterpolationMasses 509 3.686712 insert psi2Swidth:InterpolationMasses 510 3.6868495 insert psi2Swidth:InterpolationMasses 511 3.6869871 insert psi2Swidth:InterpolationMasses 512 3.6871246 insert psi2Swidth:InterpolationMasses 513 3.6872622 insert psi2Swidth:InterpolationMasses 514 3.6873997 insert psi2Swidth:InterpolationMasses 515 3.6875373 insert psi2Swidth:InterpolationMasses 516 3.6876748 insert psi2Swidth:InterpolationMasses 517 3.6878124 insert psi2Swidth:InterpolationMasses 518 3.6879499 insert psi2Swidth:InterpolationMasses 519 3.6880875 insert psi2Swidth:InterpolationMasses 520 3.688225 insert psi2Swidth:InterpolationMasses 521 3.6883626 insert psi2Swidth:InterpolationMasses 522 3.6885001 insert psi2Swidth:InterpolationMasses 523 3.6886377 insert psi2Swidth:InterpolationMasses 524 3.6887752 insert psi2Swidth:InterpolationMasses 525 3.6889128 insert psi2Swidth:InterpolationMasses 526 3.6890503 insert psi2Swidth:InterpolationMasses 527 3.6891879 insert psi2Swidth:InterpolationMasses 528 3.6893254 insert psi2Swidth:InterpolationMasses 529 3.689463 insert psi2Swidth:InterpolationMasses 530 3.6896006 insert psi2Swidth:InterpolationMasses 531 3.6897381 insert psi2Swidth:InterpolationMasses 532 3.6824479 insert psi2Swidth:InterpolationMasses 533 3.6825854 insert psi2Swidth:InterpolationMasses 534 3.682723 insert psi2Swidth:InterpolationMasses 535 3.6828606 insert psi2Swidth:InterpolationMasses 536 3.6829981 insert psi2Swidth:InterpolationMasses 537 3.6831357 insert psi2Swidth:InterpolationMasses 538 3.6832732 insert psi2Swidth:InterpolationMasses 539 3.6834108 insert psi2Swidth:InterpolationMasses 540 3.6835483 insert psi2Swidth:InterpolationMasses 541 3.6836859 insert psi2Swidth:InterpolationMasses 542 3.6838234 insert psi2Swidth:InterpolationMasses 543 3.683961 insert psi2Swidth:InterpolationMasses 544 3.6840985 insert psi2Swidth:InterpolationMasses 545 3.6842361 insert psi2Swidth:InterpolationMasses 546 3.6843736 insert psi2Swidth:InterpolationMasses 547 3.6845112 insert psi2Swidth:InterpolationMasses 548 3.6846487 insert psi2Swidth:InterpolationMasses 549 3.6847863 insert psi2Swidth:InterpolationMasses 550 3.6849238 insert psi2Swidth:InterpolationMasses 551 3.6850614 insert psi2Swidth:InterpolationMasses 552 3.6851989 insert psi2Swidth:InterpolationMasses 553 3.6853365 insert psi2Swidth:InterpolationMasses 554 3.685474 insert psi2Swidth:InterpolationMasses 555 3.6856116 insert psi2Swidth:InterpolationMasses 556 3.6857491 insert psi2Swidth:InterpolationMasses 557 3.6858867 insert psi2Swidth:InterpolationMasses 558 3.6860242 insert psi2Swidth:InterpolationMasses 559 3.6861618 insert psi2Swidth:InterpolationMasses 560 3.6862993 insert psi2Swidth:InterpolationMasses 561 3.6864369 insert psi2Swidth:InterpolationMasses 562 3.6865744 insert psi2Swidth:InterpolationMasses 563 3.686712 insert psi2Swidth:InterpolationMasses 564 3.6868495 insert psi2Swidth:InterpolationMasses 565 3.6869871 insert psi2Swidth:InterpolationMasses 566 3.6871246 insert psi2Swidth:InterpolationMasses 567 3.6872622 insert psi2Swidth:InterpolationMasses 568 3.6873997 insert psi2Swidth:InterpolationMasses 569 3.6875373 insert psi2Swidth:InterpolationMasses 570 3.6876748 insert psi2Swidth:InterpolationMasses 571 3.6878124 insert psi2Swidth:InterpolationMasses 572 3.6879499 insert psi2Swidth:InterpolationMasses 573 3.6880875 insert psi2Swidth:InterpolationMasses 574 3.688225 insert psi2Swidth:InterpolationMasses 575 3.6883626 insert psi2Swidth:InterpolationMasses 576 3.6885001 insert psi2Swidth:InterpolationMasses 577 3.6886377 insert psi2Swidth:InterpolationMasses 578 3.6887752 insert psi2Swidth:InterpolationMasses 579 3.6889128 insert psi2Swidth:InterpolationMasses 580 3.6890503 insert psi2Swidth:InterpolationMasses 581 3.6891879 insert psi2Swidth:InterpolationMasses 582 3.6893254 insert psi2Swidth:InterpolationMasses 583 3.689463 insert psi2Swidth:InterpolationMasses 584 3.6896006 insert psi2Swidth:InterpolationMasses 585 3.6897381 insert psi2Swidth:InterpolationMasses 586 3.6824479 insert psi2Swidth:InterpolationMasses 587 3.6825854 insert psi2Swidth:InterpolationMasses 588 3.682723 insert psi2Swidth:InterpolationMasses 589 3.6828606 insert psi2Swidth:InterpolationMasses 590 3.6829981 insert psi2Swidth:InterpolationMasses 591 3.6831357 insert psi2Swidth:InterpolationMasses 592 3.6832732 insert psi2Swidth:InterpolationMasses 593 3.6834108 insert psi2Swidth:InterpolationMasses 594 3.6835483 insert psi2Swidth:InterpolationMasses 595 3.6836859 insert psi2Swidth:InterpolationMasses 596 3.6838234 insert psi2Swidth:InterpolationMasses 597 3.683961 insert psi2Swidth:InterpolationMasses 598 3.6840985 insert psi2Swidth:InterpolationMasses 599 3.6842361 insert psi2Swidth:InterpolationMasses 600 3.6843736 insert psi2Swidth:InterpolationMasses 601 3.6845112 insert psi2Swidth:InterpolationMasses 602 3.6846487 insert psi2Swidth:InterpolationMasses 603 3.6847863 insert psi2Swidth:InterpolationMasses 604 3.6849238 insert psi2Swidth:InterpolationMasses 605 3.6850614 insert psi2Swidth:InterpolationMasses 606 3.6851989 insert psi2Swidth:InterpolationMasses 607 3.6853365 insert psi2Swidth:InterpolationMasses 608 3.685474 insert psi2Swidth:InterpolationMasses 609 3.6856116 insert psi2Swidth:InterpolationMasses 610 3.6857491 insert psi2Swidth:InterpolationMasses 611 3.6858867 insert psi2Swidth:InterpolationMasses 612 3.6860242 insert psi2Swidth:InterpolationMasses 613 3.6861618 insert psi2Swidth:InterpolationMasses 614 3.6862993 insert psi2Swidth:InterpolationMasses 615 3.6864369 insert psi2Swidth:InterpolationMasses 616 3.6865744 insert psi2Swidth:InterpolationMasses 617 3.686712 insert psi2Swidth:InterpolationMasses 618 3.6868495 insert psi2Swidth:InterpolationMasses 619 3.6869871 insert psi2Swidth:InterpolationMasses 620 3.6871246 insert psi2Swidth:InterpolationMasses 621 3.6872622 insert psi2Swidth:InterpolationMasses 622 3.6873997 insert psi2Swidth:InterpolationMasses 623 3.6875373 insert psi2Swidth:InterpolationMasses 624 3.6876748 insert psi2Swidth:InterpolationMasses 625 3.6878124 insert psi2Swidth:InterpolationMasses 626 3.6879499 insert psi2Swidth:InterpolationMasses 627 3.6880875 insert psi2Swidth:InterpolationMasses 628 3.688225 insert psi2Swidth:InterpolationMasses 629 3.6883626 insert psi2Swidth:InterpolationMasses 630 3.6885001 insert psi2Swidth:InterpolationMasses 631 3.6886377 insert psi2Swidth:InterpolationMasses 632 3.6887752 insert psi2Swidth:InterpolationMasses 633 3.6889128 insert psi2Swidth:InterpolationMasses 634 3.6890503 insert psi2Swidth:InterpolationMasses 635 3.6891879 insert psi2Swidth:InterpolationMasses 636 3.6893254 insert psi2Swidth:InterpolationMasses 637 3.689463 insert psi2Swidth:InterpolationMasses 638 3.6896006 insert psi2Swidth:InterpolationMasses 639 3.6897381 insert psi2Swidth:InterpolationMasses 640 3.6824479 insert psi2Swidth:InterpolationMasses 641 3.6825854 insert psi2Swidth:InterpolationMasses 642 3.682723 insert psi2Swidth:InterpolationMasses 643 3.6828606 insert psi2Swidth:InterpolationMasses 644 3.6829981 insert psi2Swidth:InterpolationMasses 645 3.6831357 insert psi2Swidth:InterpolationMasses 646 3.6832732 insert psi2Swidth:InterpolationMasses 647 3.6834108 insert psi2Swidth:InterpolationMasses 648 3.6835483 insert psi2Swidth:InterpolationMasses 649 3.6836859 insert psi2Swidth:InterpolationMasses 650 3.6838234 insert psi2Swidth:InterpolationMasses 651 3.683961 insert psi2Swidth:InterpolationMasses 652 3.6840985 insert psi2Swidth:InterpolationMasses 653 3.6842361 insert psi2Swidth:InterpolationMasses 654 3.6843736 insert psi2Swidth:InterpolationMasses 655 3.6845112 insert psi2Swidth:InterpolationMasses 656 3.6846487 insert psi2Swidth:InterpolationMasses 657 3.6847863 insert psi2Swidth:InterpolationMasses 658 3.6849238 insert psi2Swidth:InterpolationMasses 659 3.6850614 insert psi2Swidth:InterpolationMasses 660 3.6851989 insert psi2Swidth:InterpolationMasses 661 3.6853365 insert psi2Swidth:InterpolationMasses 662 3.685474 insert psi2Swidth:InterpolationMasses 663 3.6856116 insert psi2Swidth:InterpolationMasses 664 3.6857491 insert psi2Swidth:InterpolationMasses 665 3.6858867 insert psi2Swidth:InterpolationMasses 666 3.6860242 insert psi2Swidth:InterpolationMasses 667 3.6861618 insert psi2Swidth:InterpolationMasses 668 3.6862993 insert psi2Swidth:InterpolationMasses 669 3.6864369 insert psi2Swidth:InterpolationMasses 670 3.6865744 insert psi2Swidth:InterpolationMasses 671 3.686712 insert psi2Swidth:InterpolationMasses 672 3.6868495 insert psi2Swidth:InterpolationMasses 673 3.6869871 insert psi2Swidth:InterpolationMasses 674 3.6871246 insert psi2Swidth:InterpolationMasses 675 3.6872622 insert psi2Swidth:InterpolationMasses 676 3.6873997 insert psi2Swidth:InterpolationMasses 677 3.6875373 insert psi2Swidth:InterpolationMasses 678 3.6876748 insert psi2Swidth:InterpolationMasses 679 3.6878124 insert psi2Swidth:InterpolationMasses 680 3.6879499 insert psi2Swidth:InterpolationMasses 681 3.6880875 insert psi2Swidth:InterpolationMasses 682 3.688225 insert psi2Swidth:InterpolationMasses 683 3.6883626 insert psi2Swidth:InterpolationMasses 684 3.6885001 insert psi2Swidth:InterpolationMasses 685 3.6886377 insert psi2Swidth:InterpolationMasses 686 3.6887752 insert psi2Swidth:InterpolationMasses 687 3.6889128 insert psi2Swidth:InterpolationMasses 688 3.6890503 insert psi2Swidth:InterpolationMasses 689 3.6891879 insert psi2Swidth:InterpolationMasses 690 3.6893254 insert psi2Swidth:InterpolationMasses 691 3.689463 insert psi2Swidth:InterpolationMasses 692 3.6896006 insert psi2Swidth:InterpolationMasses 693 3.6897381 insert psi2Swidth:InterpolationMasses 694 3.6824479 insert psi2Swidth:InterpolationMasses 695 3.6825854 insert psi2Swidth:InterpolationMasses 696 3.682723 insert psi2Swidth:InterpolationMasses 697 3.6828606 insert psi2Swidth:InterpolationMasses 698 3.6829981 insert psi2Swidth:InterpolationMasses 699 3.6831357 insert psi2Swidth:InterpolationMasses 700 3.6832732 insert psi2Swidth:InterpolationMasses 701 3.6834108 insert psi2Swidth:InterpolationMasses 702 3.6835483 insert psi2Swidth:InterpolationMasses 703 3.6836859 insert psi2Swidth:InterpolationMasses 704 3.6838234 insert psi2Swidth:InterpolationMasses 705 3.683961 insert psi2Swidth:InterpolationMasses 706 3.6840985 insert psi2Swidth:InterpolationMasses 707 3.6842361 insert psi2Swidth:InterpolationMasses 708 3.6843736 insert psi2Swidth:InterpolationMasses 709 3.6845112 insert psi2Swidth:InterpolationMasses 710 3.6846487 insert psi2Swidth:InterpolationMasses 711 3.6847863 insert psi2Swidth:InterpolationMasses 712 3.6849238 insert psi2Swidth:InterpolationMasses 713 3.6850614 insert psi2Swidth:InterpolationMasses 714 3.6851989 insert psi2Swidth:InterpolationMasses 715 3.6853365 insert psi2Swidth:InterpolationMasses 716 3.685474 insert psi2Swidth:InterpolationMasses 717 3.6856116 insert psi2Swidth:InterpolationMasses 718 3.6857491 insert psi2Swidth:InterpolationMasses 719 3.6858867 insert psi2Swidth:InterpolationMasses 720 3.6860242 insert psi2Swidth:InterpolationMasses 721 3.6861618 insert psi2Swidth:InterpolationMasses 722 3.6862993 insert psi2Swidth:InterpolationMasses 723 3.6864369 insert psi2Swidth:InterpolationMasses 724 3.6865744 insert psi2Swidth:InterpolationMasses 725 3.686712 insert psi2Swidth:InterpolationMasses 726 3.6868495 insert psi2Swidth:InterpolationMasses 727 3.6869871 insert psi2Swidth:InterpolationMasses 728 3.6871246 insert psi2Swidth:InterpolationMasses 729 3.6872622 insert psi2Swidth:InterpolationMasses 730 3.6873997 insert psi2Swidth:InterpolationMasses 731 3.6875373 insert psi2Swidth:InterpolationMasses 732 3.6876748 insert psi2Swidth:InterpolationMasses 733 3.6878124 insert psi2Swidth:InterpolationMasses 734 3.6879499 insert psi2Swidth:InterpolationMasses 735 3.6880875 insert psi2Swidth:InterpolationMasses 736 3.688225 insert psi2Swidth:InterpolationMasses 737 3.6883626 insert psi2Swidth:InterpolationMasses 738 3.6885001 insert psi2Swidth:InterpolationMasses 739 3.6886377 insert psi2Swidth:InterpolationMasses 740 3.6887752 insert psi2Swidth:InterpolationMasses 741 3.6889128 insert psi2Swidth:InterpolationMasses 742 3.6890503 insert psi2Swidth:InterpolationMasses 743 3.6891879 insert psi2Swidth:InterpolationMasses 744 3.6893254 insert psi2Swidth:InterpolationMasses 745 3.689463 insert psi2Swidth:InterpolationMasses 746 3.6896006 insert psi2Swidth:InterpolationMasses 747 3.6897381 insert psi2Swidth:InterpolationMasses 748 3.6824479 insert psi2Swidth:InterpolationMasses 749 3.6825854 insert psi2Swidth:InterpolationMasses 750 3.682723 insert psi2Swidth:InterpolationMasses 751 3.6828606 insert psi2Swidth:InterpolationMasses 752 3.6829981 insert psi2Swidth:InterpolationMasses 753 3.6831357 insert psi2Swidth:InterpolationMasses 754 3.6832732 insert psi2Swidth:InterpolationMasses 755 3.6834108 insert psi2Swidth:InterpolationMasses 756 3.6835483 insert psi2Swidth:InterpolationMasses 757 3.6836859 insert psi2Swidth:InterpolationMasses 758 3.6838234 insert psi2Swidth:InterpolationMasses 759 3.683961 insert psi2Swidth:InterpolationMasses 760 3.6840985 insert psi2Swidth:InterpolationMasses 761 3.6842361 insert psi2Swidth:InterpolationMasses 762 3.6843736 insert psi2Swidth:InterpolationMasses 763 3.6845112 insert psi2Swidth:InterpolationMasses 764 3.6846487 insert psi2Swidth:InterpolationMasses 765 3.6847863 insert psi2Swidth:InterpolationMasses 766 3.6849238 insert psi2Swidth:InterpolationMasses 767 3.6850614 insert psi2Swidth:InterpolationMasses 768 3.6851989 insert psi2Swidth:InterpolationMasses 769 3.6853365 insert psi2Swidth:InterpolationMasses 770 3.685474 insert psi2Swidth:InterpolationMasses 771 3.6856116 insert psi2Swidth:InterpolationMasses 772 3.6857491 insert psi2Swidth:InterpolationMasses 773 3.6858867 insert psi2Swidth:InterpolationMasses 774 3.6860242 insert psi2Swidth:InterpolationMasses 775 3.6861618 insert psi2Swidth:InterpolationMasses 776 3.6862993 insert psi2Swidth:InterpolationMasses 777 3.6864369 insert psi2Swidth:InterpolationMasses 778 3.6865744 insert psi2Swidth:InterpolationMasses 779 3.686712 insert psi2Swidth:InterpolationMasses 780 3.6868495 insert psi2Swidth:InterpolationMasses 781 3.6869871 insert psi2Swidth:InterpolationMasses 782 3.6871246 insert psi2Swidth:InterpolationMasses 783 3.6872622 insert psi2Swidth:InterpolationMasses 784 3.6873997 insert psi2Swidth:InterpolationMasses 785 3.6875373 insert psi2Swidth:InterpolationMasses 786 3.6876748 insert psi2Swidth:InterpolationMasses 787 3.6878124 insert psi2Swidth:InterpolationMasses 788 3.6879499 insert psi2Swidth:InterpolationMasses 789 3.6880875 insert psi2Swidth:InterpolationMasses 790 3.688225 insert psi2Swidth:InterpolationMasses 791 3.6883626 insert psi2Swidth:InterpolationMasses 792 3.6885001 insert psi2Swidth:InterpolationMasses 793 3.6886377 insert psi2Swidth:InterpolationMasses 794 3.6887752 insert psi2Swidth:InterpolationMasses 795 3.6889128 insert psi2Swidth:InterpolationMasses 796 3.6890503 insert psi2Swidth:InterpolationMasses 797 3.6891879 insert psi2Swidth:InterpolationMasses 798 3.6893254 insert psi2Swidth:InterpolationMasses 799 3.689463 insert psi2Swidth:InterpolationMasses 800 3.6896006 insert psi2Swidth:InterpolationMasses 801 3.6897381 insert psi2Swidth:InterpolationMasses 802 3.6824479 insert psi2Swidth:InterpolationMasses 803 3.6825854 insert psi2Swidth:InterpolationMasses 804 3.682723 insert psi2Swidth:InterpolationMasses 805 3.6828606 insert psi2Swidth:InterpolationMasses 806 3.6829981 insert psi2Swidth:InterpolationMasses 807 3.6831357 insert psi2Swidth:InterpolationMasses 808 3.6832732 insert psi2Swidth:InterpolationMasses 809 3.6834108 insert psi2Swidth:InterpolationMasses 810 3.6835483 insert psi2Swidth:InterpolationMasses 811 3.6836859 insert psi2Swidth:InterpolationMasses 812 3.6838234 insert psi2Swidth:InterpolationMasses 813 3.683961 insert psi2Swidth:InterpolationMasses 814 3.6840985 insert psi2Swidth:InterpolationMasses 815 3.6842361 insert psi2Swidth:InterpolationMasses 816 3.6843736 insert psi2Swidth:InterpolationMasses 817 3.6845112 insert psi2Swidth:InterpolationMasses 818 3.6846487 insert psi2Swidth:InterpolationMasses 819 3.6847863 insert psi2Swidth:InterpolationMasses 820 3.6849238 insert psi2Swidth:InterpolationMasses 821 3.6850614 insert psi2Swidth:InterpolationMasses 822 3.6851989 insert psi2Swidth:InterpolationMasses 823 3.6853365 insert psi2Swidth:InterpolationMasses 824 3.685474 insert psi2Swidth:InterpolationMasses 825 3.6856116 insert psi2Swidth:InterpolationMasses 826 3.6857491 insert psi2Swidth:InterpolationMasses 827 3.6858867 insert psi2Swidth:InterpolationMasses 828 3.6860242 insert psi2Swidth:InterpolationMasses 829 3.6861618 insert psi2Swidth:InterpolationMasses 830 3.6862993 insert psi2Swidth:InterpolationMasses 831 3.6864369 insert psi2Swidth:InterpolationMasses 832 3.6865744 insert psi2Swidth:InterpolationMasses 833 3.686712 insert psi2Swidth:InterpolationMasses 834 3.6868495 insert psi2Swidth:InterpolationMasses 835 3.6869871 insert psi2Swidth:InterpolationMasses 836 3.6871246 insert psi2Swidth:InterpolationMasses 837 3.6872622 insert psi2Swidth:InterpolationMasses 838 3.6873997 insert psi2Swidth:InterpolationMasses 839 3.6875373 insert psi2Swidth:InterpolationMasses 840 3.6876748 insert psi2Swidth:InterpolationMasses 841 3.6878124 insert psi2Swidth:InterpolationMasses 842 3.6879499 insert psi2Swidth:InterpolationMasses 843 3.6880875 insert psi2Swidth:InterpolationMasses 844 3.688225 insert psi2Swidth:InterpolationMasses 845 3.6883626 insert psi2Swidth:InterpolationMasses 846 3.6885001 insert psi2Swidth:InterpolationMasses 847 3.6886377 insert psi2Swidth:InterpolationMasses 848 3.6887752 insert psi2Swidth:InterpolationMasses 849 3.6889128 insert psi2Swidth:InterpolationMasses 850 3.6890503 insert psi2Swidth:InterpolationMasses 851 3.6891879 insert psi2Swidth:InterpolationMasses 852 3.6893254 insert psi2Swidth:InterpolationMasses 853 3.689463 insert psi2Swidth:InterpolationMasses 854 3.6896006 insert psi2Swidth:InterpolationMasses 855 3.6897381 insert psi2Swidth:InterpolationMasses 856 3.6824479 insert psi2Swidth:InterpolationMasses 857 3.6825854 insert psi2Swidth:InterpolationMasses 858 3.682723 insert psi2Swidth:InterpolationMasses 859 3.6828606 insert psi2Swidth:InterpolationMasses 860 3.6829981 insert psi2Swidth:InterpolationMasses 861 3.6831357 insert psi2Swidth:InterpolationMasses 862 3.6832732 insert psi2Swidth:InterpolationMasses 863 3.6834108 insert psi2Swidth:InterpolationMasses 864 3.6835483 insert psi2Swidth:InterpolationMasses 865 3.6836859 insert psi2Swidth:InterpolationMasses 866 3.6838234 insert psi2Swidth:InterpolationMasses 867 3.683961 insert psi2Swidth:InterpolationMasses 868 3.6840985 insert psi2Swidth:InterpolationMasses 869 3.6842361 insert psi2Swidth:InterpolationMasses 870 3.6843736 insert psi2Swidth:InterpolationMasses 871 3.6845112 insert psi2Swidth:InterpolationMasses 872 3.6846487 insert psi2Swidth:InterpolationMasses 873 3.6847863 insert psi2Swidth:InterpolationMasses 874 3.6849238 insert psi2Swidth:InterpolationMasses 875 3.6850614 insert psi2Swidth:InterpolationMasses 876 3.6851989 insert psi2Swidth:InterpolationMasses 877 3.6853365 insert psi2Swidth:InterpolationMasses 878 3.685474 insert psi2Swidth:InterpolationMasses 879 3.6856116 insert psi2Swidth:InterpolationMasses 880 3.6857491 insert psi2Swidth:InterpolationMasses 881 3.6858867 insert psi2Swidth:InterpolationMasses 882 3.6860242 insert psi2Swidth:InterpolationMasses 883 3.6861618 insert psi2Swidth:InterpolationMasses 884 3.6862993 insert psi2Swidth:InterpolationMasses 885 3.6864369 insert psi2Swidth:InterpolationMasses 886 3.6865744 insert psi2Swidth:InterpolationMasses 887 3.686712 insert psi2Swidth:InterpolationMasses 888 3.6868495 insert psi2Swidth:InterpolationMasses 889 3.6869871 insert psi2Swidth:InterpolationMasses 890 3.6871246 insert psi2Swidth:InterpolationMasses 891 3.6872622 insert psi2Swidth:InterpolationMasses 892 3.6873997 insert psi2Swidth:InterpolationMasses 893 3.6875373 insert psi2Swidth:InterpolationMasses 894 3.6876748 insert psi2Swidth:InterpolationMasses 895 3.6878124 insert psi2Swidth:InterpolationMasses 896 3.6879499 insert psi2Swidth:InterpolationMasses 897 3.6880875 insert psi2Swidth:InterpolationMasses 898 3.688225 insert psi2Swidth:InterpolationMasses 899 3.6883626 insert psi2Swidth:InterpolationMasses 900 3.6885001 insert psi2Swidth:InterpolationMasses 901 3.6886377 insert psi2Swidth:InterpolationMasses 902 3.6887752 insert psi2Swidth:InterpolationMasses 903 3.6889128 insert psi2Swidth:InterpolationMasses 904 3.6890503 insert psi2Swidth:InterpolationMasses 905 3.6891879 insert psi2Swidth:InterpolationMasses 906 3.6893254 insert psi2Swidth:InterpolationMasses 907 3.689463 insert psi2Swidth:InterpolationMasses 908 3.6896006 insert psi2Swidth:InterpolationMasses 909 3.6897381 insert psi2Swidth:InterpolationMasses 910 3.6824479 insert psi2Swidth:InterpolationMasses 911 3.6825854 insert psi2Swidth:InterpolationMasses 912 3.682723 insert psi2Swidth:InterpolationMasses 913 3.6828606 insert psi2Swidth:InterpolationMasses 914 3.6829981 insert psi2Swidth:InterpolationMasses 915 3.6831357 insert psi2Swidth:InterpolationMasses 916 3.6832732 insert psi2Swidth:InterpolationMasses 917 3.6834108 insert psi2Swidth:InterpolationMasses 918 3.6835483 insert psi2Swidth:InterpolationMasses 919 3.6836859 insert psi2Swidth:InterpolationMasses 920 3.6838234 insert psi2Swidth:InterpolationMasses 921 3.683961 insert psi2Swidth:InterpolationMasses 922 3.6840985 insert psi2Swidth:InterpolationMasses 923 3.6842361 insert psi2Swidth:InterpolationMasses 924 3.6843736 insert psi2Swidth:InterpolationMasses 925 3.6845112 insert psi2Swidth:InterpolationMasses 926 3.6846487 insert psi2Swidth:InterpolationMasses 927 3.6847863 insert psi2Swidth:InterpolationMasses 928 3.6849238 insert psi2Swidth:InterpolationMasses 929 3.6850614 insert psi2Swidth:InterpolationMasses 930 3.6851989 insert psi2Swidth:InterpolationMasses 931 3.6853365 insert psi2Swidth:InterpolationMasses 932 3.685474 insert psi2Swidth:InterpolationMasses 933 3.6856116 insert psi2Swidth:InterpolationMasses 934 3.6857491 insert psi2Swidth:InterpolationMasses 935 3.6858867 insert psi2Swidth:InterpolationMasses 936 3.6860242 insert psi2Swidth:InterpolationMasses 937 3.6861618 insert psi2Swidth:InterpolationMasses 938 3.6862993 insert psi2Swidth:InterpolationMasses 939 3.6864369 insert psi2Swidth:InterpolationMasses 940 3.6865744 insert psi2Swidth:InterpolationMasses 941 3.686712 insert psi2Swidth:InterpolationMasses 942 3.6868495 insert psi2Swidth:InterpolationMasses 943 3.6869871 insert psi2Swidth:InterpolationMasses 944 3.6871246 insert psi2Swidth:InterpolationMasses 945 3.6872622 insert psi2Swidth:InterpolationMasses 946 3.6873997 insert psi2Swidth:InterpolationMasses 947 3.6875373 insert psi2Swidth:InterpolationMasses 948 3.6876748 insert psi2Swidth:InterpolationMasses 949 3.6878124 insert psi2Swidth:InterpolationMasses 950 3.6879499 insert psi2Swidth:InterpolationMasses 951 3.6880875 insert psi2Swidth:InterpolationMasses 952 3.688225 insert psi2Swidth:InterpolationMasses 953 3.6883626 insert psi2Swidth:InterpolationMasses 954 3.6885001 insert psi2Swidth:InterpolationMasses 955 3.6886377 insert psi2Swidth:InterpolationMasses 956 3.6887752 insert psi2Swidth:InterpolationMasses 957 3.6889128 insert psi2Swidth:InterpolationMasses 958 3.6890503 insert psi2Swidth:InterpolationMasses 959 3.6891879 insert psi2Swidth:InterpolationMasses 960 3.6893254 insert psi2Swidth:InterpolationMasses 961 3.689463 insert psi2Swidth:InterpolationMasses 962 3.6896006 insert psi2Swidth:InterpolationMasses 963 3.6897381 insert psi2Swidth:InterpolationMasses 964 3.6824479 insert psi2Swidth:InterpolationMasses 965 3.6825854 insert psi2Swidth:InterpolationMasses 966 3.682723 insert psi2Swidth:InterpolationMasses 967 3.6828606 insert psi2Swidth:InterpolationMasses 968 3.6829981 insert psi2Swidth:InterpolationMasses 969 3.6831357 insert psi2Swidth:InterpolationMasses 970 3.6832732 insert psi2Swidth:InterpolationMasses 971 3.6834108 insert psi2Swidth:InterpolationMasses 972 3.6835483 insert psi2Swidth:InterpolationMasses 973 3.6836859 insert psi2Swidth:InterpolationMasses 974 3.6838234 insert psi2Swidth:InterpolationMasses 975 3.683961 insert psi2Swidth:InterpolationMasses 976 3.6840985 insert psi2Swidth:InterpolationMasses 977 3.6842361 insert psi2Swidth:InterpolationMasses 978 3.6843736 insert psi2Swidth:InterpolationMasses 979 3.6845112 insert psi2Swidth:InterpolationMasses 980 3.6846487 insert psi2Swidth:InterpolationMasses 981 3.6847863 insert psi2Swidth:InterpolationMasses 982 3.6849238 insert psi2Swidth:InterpolationMasses 983 3.6850614 insert psi2Swidth:InterpolationMasses 984 3.6851989 insert psi2Swidth:InterpolationMasses 985 3.6853365 insert psi2Swidth:InterpolationMasses 986 3.685474 insert psi2Swidth:InterpolationMasses 987 3.6856116 insert psi2Swidth:InterpolationMasses 988 3.6857491 insert psi2Swidth:InterpolationMasses 989 3.6858867 insert psi2Swidth:InterpolationMasses 990 3.6860242 insert psi2Swidth:InterpolationMasses 991 3.6861618 insert psi2Swidth:InterpolationMasses 992 3.6862993 insert psi2Swidth:InterpolationMasses 993 3.6864369 insert psi2Swidth:InterpolationMasses 994 3.6865744 insert psi2Swidth:InterpolationMasses 995 3.686712 insert psi2Swidth:InterpolationMasses 996 3.6868495 insert psi2Swidth:InterpolationMasses 997 3.6869871 insert psi2Swidth:InterpolationMasses 998 3.6871246 insert psi2Swidth:InterpolationMasses 999 3.6872622 insert psi2Swidth:InterpolationMasses 1000 3.6873997 insert psi2Swidth:InterpolationMasses 1001 3.6875373 insert psi2Swidth:InterpolationMasses 1002 3.6876748 insert psi2Swidth:InterpolationMasses 1003 3.6878124 insert psi2Swidth:InterpolationMasses 1004 3.6879499 insert psi2Swidth:InterpolationMasses 1005 3.6880875 insert psi2Swidth:InterpolationMasses 1006 3.688225 insert psi2Swidth:InterpolationMasses 1007 3.6883626 insert psi2Swidth:InterpolationMasses 1008 3.6885001 insert psi2Swidth:InterpolationMasses 1009 3.6886377 insert psi2Swidth:InterpolationMasses 1010 3.6887752 insert psi2Swidth:InterpolationMasses 1011 3.6889128 insert psi2Swidth:InterpolationMasses 1012 3.6890503 insert psi2Swidth:InterpolationMasses 1013 3.6891879 insert psi2Swidth:InterpolationMasses 1014 3.6893254 insert psi2Swidth:InterpolationMasses 1015 3.689463 insert psi2Swidth:InterpolationMasses 1016 3.6896006 insert psi2Swidth:InterpolationMasses 1017 3.6897381 insert psi2Swidth:InterpolationMasses 1018 3.6824479 insert psi2Swidth:InterpolationMasses 1019 3.6825854 insert psi2Swidth:InterpolationMasses 1020 3.682723 insert psi2Swidth:InterpolationMasses 1021 3.6828606 insert psi2Swidth:InterpolationMasses 1022 3.6829981 insert psi2Swidth:InterpolationMasses 1023 3.6831357 insert psi2Swidth:InterpolationMasses 1024 3.6832732 insert psi2Swidth:InterpolationMasses 1025 3.6834108 insert psi2Swidth:InterpolationMasses 1026 3.6835483 insert psi2Swidth:InterpolationMasses 1027 3.6836859 insert psi2Swidth:InterpolationMasses 1028 3.6838234 insert psi2Swidth:InterpolationMasses 1029 3.683961 insert psi2Swidth:InterpolationMasses 1030 3.6840985 insert psi2Swidth:InterpolationMasses 1031 3.6842361 insert psi2Swidth:InterpolationMasses 1032 3.6843736 insert psi2Swidth:InterpolationMasses 1033 3.6845112 insert psi2Swidth:InterpolationMasses 1034 3.6846487 insert psi2Swidth:InterpolationMasses 1035 3.6847863 insert psi2Swidth:InterpolationMasses 1036 3.6849238 insert psi2Swidth:InterpolationMasses 1037 3.6850614 insert psi2Swidth:InterpolationMasses 1038 3.6851989 insert psi2Swidth:InterpolationMasses 1039 3.6853365 insert psi2Swidth:InterpolationMasses 1040 3.685474 insert psi2Swidth:InterpolationMasses 1041 3.6856116 insert psi2Swidth:InterpolationMasses 1042 3.6857491 insert psi2Swidth:InterpolationMasses 1043 3.6858867 insert psi2Swidth:InterpolationMasses 1044 3.6860242 insert psi2Swidth:InterpolationMasses 1045 3.6861618 insert psi2Swidth:InterpolationMasses 1046 3.6862993 insert psi2Swidth:InterpolationMasses 1047 3.6864369 insert psi2Swidth:InterpolationMasses 1048 3.6865744 insert psi2Swidth:InterpolationMasses 1049 3.686712 insert psi2Swidth:InterpolationMasses 1050 3.6868495 insert psi2Swidth:InterpolationMasses 1051 3.6869871 insert psi2Swidth:InterpolationMasses 1052 3.6871246 insert psi2Swidth:InterpolationMasses 1053 3.6872622 insert psi2Swidth:InterpolationMasses 1054 3.6873997 insert psi2Swidth:InterpolationMasses 1055 3.6875373 insert psi2Swidth:InterpolationMasses 1056 3.6876748 insert psi2Swidth:InterpolationMasses 1057 3.6878124 insert psi2Swidth:InterpolationMasses 1058 3.6879499 insert psi2Swidth:InterpolationMasses 1059 3.6880875 insert psi2Swidth:InterpolationMasses 1060 3.688225 insert psi2Swidth:InterpolationMasses 1061 3.6883626 insert psi2Swidth:InterpolationMasses 1062 3.6885001 insert psi2Swidth:InterpolationMasses 1063 3.6886377 insert psi2Swidth:InterpolationMasses 1064 3.6887752 insert psi2Swidth:InterpolationMasses 1065 3.6889128 insert psi2Swidth:InterpolationMasses 1066 3.6890503 insert psi2Swidth:InterpolationMasses 1067 3.6891879 insert psi2Swidth:InterpolationMasses 1068 3.6893254 insert psi2Swidth:InterpolationMasses 1069 3.689463 insert psi2Swidth:InterpolationMasses 1070 3.6896006 insert psi2Swidth:InterpolationMasses 1071 3.6897381 insert psi2Swidth:InterpolationMasses 1072 3.6824479 insert psi2Swidth:InterpolationMasses 1073 3.6825854 insert psi2Swidth:InterpolationMasses 1074 3.682723 insert psi2Swidth:InterpolationMasses 1075 3.6828606 insert psi2Swidth:InterpolationMasses 1076 3.6829981 insert psi2Swidth:InterpolationMasses 1077 3.6831357 insert psi2Swidth:InterpolationMasses 1078 3.6832732 insert psi2Swidth:InterpolationMasses 1079 3.6834108 insert psi2Swidth:InterpolationMasses 1080 3.6835483 insert psi2Swidth:InterpolationMasses 1081 3.6836859 insert psi2Swidth:InterpolationMasses 1082 3.6838234 insert psi2Swidth:InterpolationMasses 1083 3.683961 insert psi2Swidth:InterpolationMasses 1084 3.6840985 insert psi2Swidth:InterpolationMasses 1085 3.6842361 insert psi2Swidth:InterpolationMasses 1086 3.6843736 insert psi2Swidth:InterpolationMasses 1087 3.6845112 insert psi2Swidth:InterpolationMasses 1088 3.6846487 insert psi2Swidth:InterpolationMasses 1089 3.6847863 insert psi2Swidth:InterpolationMasses 1090 3.6849238 insert psi2Swidth:InterpolationMasses 1091 3.6850614 insert psi2Swidth:InterpolationMasses 1092 3.6851989 insert psi2Swidth:InterpolationMasses 1093 3.6853365 insert psi2Swidth:InterpolationMasses 1094 3.685474 insert psi2Swidth:InterpolationMasses 1095 3.6856116 insert psi2Swidth:InterpolationMasses 1096 3.6857491 insert psi2Swidth:InterpolationMasses 1097 3.6858867 insert psi2Swidth:InterpolationMasses 1098 3.6860242 insert psi2Swidth:InterpolationMasses 1099 3.6861618 insert psi2Swidth:InterpolationMasses 1100 3.6862993 insert psi2Swidth:InterpolationMasses 1101 3.6864369 insert psi2Swidth:InterpolationMasses 1102 3.6865744 insert psi2Swidth:InterpolationMasses 1103 3.686712 insert psi2Swidth:InterpolationMasses 1104 3.6868495 insert psi2Swidth:InterpolationMasses 1105 3.6869871 insert psi2Swidth:InterpolationMasses 1106 3.6871246 insert psi2Swidth:InterpolationMasses 1107 3.6872622 insert psi2Swidth:InterpolationMasses 1108 3.6873997 insert psi2Swidth:InterpolationMasses 1109 3.6875373 insert psi2Swidth:InterpolationMasses 1110 3.6876748 insert psi2Swidth:InterpolationMasses 1111 3.6878124 insert psi2Swidth:InterpolationMasses 1112 3.6879499 insert psi2Swidth:InterpolationMasses 1113 3.6880875 insert psi2Swidth:InterpolationMasses 1114 3.688225 insert psi2Swidth:InterpolationMasses 1115 3.6883626 insert psi2Swidth:InterpolationMasses 1116 3.6885001 insert psi2Swidth:InterpolationMasses 1117 3.6886377 insert psi2Swidth:InterpolationMasses 1118 3.6887752 insert psi2Swidth:InterpolationMasses 1119 3.6889128 insert psi2Swidth:InterpolationMasses 1120 3.6890503 insert psi2Swidth:InterpolationMasses 1121 3.6891879 insert psi2Swidth:InterpolationMasses 1122 3.6893254 insert psi2Swidth:InterpolationMasses 1123 3.689463 insert psi2Swidth:InterpolationMasses 1124 3.6896006 insert psi2Swidth:InterpolationMasses 1125 3.6897381 insert psi2Swidth:InterpolationMasses 1126 3.6824479 insert psi2Swidth:InterpolationMasses 1127 3.6825854 insert psi2Swidth:InterpolationMasses 1128 3.682723 insert psi2Swidth:InterpolationMasses 1129 3.6828606 insert psi2Swidth:InterpolationMasses 1130 3.6829981 insert psi2Swidth:InterpolationMasses 1131 3.6831357 insert psi2Swidth:InterpolationMasses 1132 3.6832732 insert psi2Swidth:InterpolationMasses 1133 3.6834108 insert psi2Swidth:InterpolationMasses 1134 3.6835483 insert psi2Swidth:InterpolationMasses 1135 3.6836859 insert psi2Swidth:InterpolationMasses 1136 3.6838234 insert psi2Swidth:InterpolationMasses 1137 3.683961 insert psi2Swidth:InterpolationMasses 1138 3.6840985 insert psi2Swidth:InterpolationMasses 1139 3.6842361 insert psi2Swidth:InterpolationMasses 1140 3.6843736 insert psi2Swidth:InterpolationMasses 1141 3.6845112 insert psi2Swidth:InterpolationMasses 1142 3.6846487 insert psi2Swidth:InterpolationMasses 1143 3.6847863 insert psi2Swidth:InterpolationMasses 1144 3.6849238 insert psi2Swidth:InterpolationMasses 1145 3.6850614 insert psi2Swidth:InterpolationMasses 1146 3.6851989 insert psi2Swidth:InterpolationMasses 1147 3.6853365 insert psi2Swidth:InterpolationMasses 1148 3.685474 insert psi2Swidth:InterpolationMasses 1149 3.6856116 insert psi2Swidth:InterpolationMasses 1150 3.6857491 insert psi2Swidth:InterpolationMasses 1151 3.6858867 insert psi2Swidth:InterpolationMasses 1152 3.6860242 insert psi2Swidth:InterpolationMasses 1153 3.6861618 insert psi2Swidth:InterpolationMasses 1154 3.6862993 insert psi2Swidth:InterpolationMasses 1155 3.6864369 insert psi2Swidth:InterpolationMasses 1156 3.6865744 insert psi2Swidth:InterpolationMasses 1157 3.686712 insert psi2Swidth:InterpolationMasses 1158 3.6868495 insert psi2Swidth:InterpolationMasses 1159 3.6869871 insert psi2Swidth:InterpolationMasses 1160 3.6871246 insert psi2Swidth:InterpolationMasses 1161 3.6872622 insert psi2Swidth:InterpolationMasses 1162 3.6873997 insert psi2Swidth:InterpolationMasses 1163 3.6875373 insert psi2Swidth:InterpolationMasses 1164 3.6876748 insert psi2Swidth:InterpolationMasses 1165 3.6878124 insert psi2Swidth:InterpolationMasses 1166 3.6879499 insert psi2Swidth:InterpolationMasses 1167 3.6880875 insert psi2Swidth:InterpolationMasses 1168 3.688225 insert psi2Swidth:InterpolationMasses 1169 3.6883626 insert psi2Swidth:InterpolationMasses 1170 3.6885001 insert psi2Swidth:InterpolationMasses 1171 3.6886377 insert psi2Swidth:InterpolationMasses 1172 3.6887752 insert psi2Swidth:InterpolationMasses 1173 3.6889128 insert psi2Swidth:InterpolationMasses 1174 3.6890503 insert psi2Swidth:InterpolationMasses 1175 3.6891879 insert psi2Swidth:InterpolationMasses 1176 3.6893254 insert psi2Swidth:InterpolationMasses 1177 3.689463 insert psi2Swidth:InterpolationMasses 1178 3.6896006 insert psi2Swidth:InterpolationMasses 1179 3.6897381 insert psi2Swidth:InterpolationMasses 1180 3.6824479 insert psi2Swidth:InterpolationMasses 1181 3.6825854 insert psi2Swidth:InterpolationMasses 1182 3.682723 insert psi2Swidth:InterpolationMasses 1183 3.6828606 insert psi2Swidth:InterpolationMasses 1184 3.6829981 insert psi2Swidth:InterpolationMasses 1185 3.6831357 insert psi2Swidth:InterpolationMasses 1186 3.6832732 insert psi2Swidth:InterpolationMasses 1187 3.6834108 insert psi2Swidth:InterpolationMasses 1188 3.6835483 insert psi2Swidth:InterpolationMasses 1189 3.6836859 insert psi2Swidth:InterpolationMasses 1190 3.6838234 insert psi2Swidth:InterpolationMasses 1191 3.683961 insert psi2Swidth:InterpolationMasses 1192 3.6840985 insert psi2Swidth:InterpolationMasses 1193 3.6842361 insert psi2Swidth:InterpolationMasses 1194 3.6843736 insert psi2Swidth:InterpolationMasses 1195 3.6845112 insert psi2Swidth:InterpolationMasses 1196 3.6846487 insert psi2Swidth:InterpolationMasses 1197 3.6847863 insert psi2Swidth:InterpolationMasses 1198 3.6849238 insert psi2Swidth:InterpolationMasses 1199 3.6850614 insert psi2Swidth:InterpolationMasses 1200 3.6851989 insert psi2Swidth:InterpolationMasses 1201 3.6853365 insert psi2Swidth:InterpolationMasses 1202 3.685474 insert psi2Swidth:InterpolationMasses 1203 3.6856116 insert psi2Swidth:InterpolationMasses 1204 3.6857491 insert psi2Swidth:InterpolationMasses 1205 3.6858867 insert psi2Swidth:InterpolationMasses 1206 3.6860242 insert psi2Swidth:InterpolationMasses 1207 3.6861618 insert psi2Swidth:InterpolationMasses 1208 3.6862993 insert psi2Swidth:InterpolationMasses 1209 3.6864369 insert psi2Swidth:InterpolationMasses 1210 3.6865744 insert psi2Swidth:InterpolationMasses 1211 3.686712 insert psi2Swidth:InterpolationMasses 1212 3.6868495 insert psi2Swidth:InterpolationMasses 1213 3.6869871 insert psi2Swidth:InterpolationMasses 1214 3.6871246 insert psi2Swidth:InterpolationMasses 1215 3.6872622 insert psi2Swidth:InterpolationMasses 1216 3.6873997 insert psi2Swidth:InterpolationMasses 1217 3.6875373 insert psi2Swidth:InterpolationMasses 1218 3.6876748 insert psi2Swidth:InterpolationMasses 1219 3.6878124 insert psi2Swidth:InterpolationMasses 1220 3.6879499 insert psi2Swidth:InterpolationMasses 1221 3.6880875 insert psi2Swidth:InterpolationMasses 1222 3.688225 insert psi2Swidth:InterpolationMasses 1223 3.6883626 insert psi2Swidth:InterpolationMasses 1224 3.6885001 insert psi2Swidth:InterpolationMasses 1225 3.6886377 insert psi2Swidth:InterpolationMasses 1226 3.6887752 insert psi2Swidth:InterpolationMasses 1227 3.6889128 insert psi2Swidth:InterpolationMasses 1228 3.6890503 insert psi2Swidth:InterpolationMasses 1229 3.6891879 insert psi2Swidth:InterpolationMasses 1230 3.6893254 insert psi2Swidth:InterpolationMasses 1231 3.689463 insert psi2Swidth:InterpolationMasses 1232 3.6896006 insert psi2Swidth:InterpolationMasses 1233 3.6897381 insert psi2Swidth:InterpolationMasses 1234 3.6824479 insert psi2Swidth:InterpolationMasses 1235 3.6825854 insert psi2Swidth:InterpolationMasses 1236 3.682723 insert psi2Swidth:InterpolationMasses 1237 3.6828606 insert psi2Swidth:InterpolationMasses 1238 3.6829981 insert psi2Swidth:InterpolationMasses 1239 3.6831357 insert psi2Swidth:InterpolationMasses 1240 3.6832732 insert psi2Swidth:InterpolationMasses 1241 3.6834108 insert psi2Swidth:InterpolationMasses 1242 3.6835483 insert psi2Swidth:InterpolationMasses 1243 3.6836859 insert psi2Swidth:InterpolationMasses 1244 3.6838234 insert psi2Swidth:InterpolationMasses 1245 3.683961 insert psi2Swidth:InterpolationMasses 1246 3.6840985 insert psi2Swidth:InterpolationMasses 1247 3.6842361 insert psi2Swidth:InterpolationMasses 1248 3.6843736 insert psi2Swidth:InterpolationMasses 1249 3.6845112 insert psi2Swidth:InterpolationMasses 1250 3.6846487 insert psi2Swidth:InterpolationMasses 1251 3.6847863 insert psi2Swidth:InterpolationMasses 1252 3.6849238 insert psi2Swidth:InterpolationMasses 1253 3.6850614 insert psi2Swidth:InterpolationMasses 1254 3.6851989 insert psi2Swidth:InterpolationMasses 1255 3.6853365 insert psi2Swidth:InterpolationMasses 1256 3.685474 insert psi2Swidth:InterpolationMasses 1257 3.6856116 insert psi2Swidth:InterpolationMasses 1258 3.6857491 insert psi2Swidth:InterpolationMasses 1259 3.6858867 insert psi2Swidth:InterpolationMasses 1260 3.6860242 insert psi2Swidth:InterpolationMasses 1261 3.6861618 insert psi2Swidth:InterpolationMasses 1262 3.6862993 insert psi2Swidth:InterpolationMasses 1263 3.6864369 insert psi2Swidth:InterpolationMasses 1264 3.6865744 insert psi2Swidth:InterpolationMasses 1265 3.686712 insert psi2Swidth:InterpolationMasses 1266 3.6868495 insert psi2Swidth:InterpolationMasses 1267 3.6869871 insert psi2Swidth:InterpolationMasses 1268 3.6871246 insert psi2Swidth:InterpolationMasses 1269 3.6872622 insert psi2Swidth:InterpolationMasses 1270 3.6873997 insert psi2Swidth:InterpolationMasses 1271 3.6875373 insert psi2Swidth:InterpolationMasses 1272 3.6876748 insert psi2Swidth:InterpolationMasses 1273 3.6878124 insert psi2Swidth:InterpolationMasses 1274 3.6879499 insert psi2Swidth:InterpolationMasses 1275 3.6880875 insert psi2Swidth:InterpolationMasses 1276 3.688225 insert psi2Swidth:InterpolationMasses 1277 3.6883626 insert psi2Swidth:InterpolationMasses 1278 3.6885001 insert psi2Swidth:InterpolationMasses 1279 3.6886377 insert psi2Swidth:InterpolationMasses 1280 3.6887752 insert psi2Swidth:InterpolationMasses 1281 3.6889128 insert psi2Swidth:InterpolationMasses 1282 3.6890503 insert psi2Swidth:InterpolationMasses 1283 3.6891879 insert psi2Swidth:InterpolationMasses 1284 3.6893254 insert psi2Swidth:InterpolationMasses 1285 3.689463 insert psi2Swidth:InterpolationMasses 1286 3.6896006 insert psi2Swidth:InterpolationMasses 1287 3.6897381 insert psi2Swidth:InterpolationMasses 1288 3.6824479 insert psi2Swidth:InterpolationMasses 1289 3.6825854 insert psi2Swidth:InterpolationMasses 1290 3.682723 insert psi2Swidth:InterpolationMasses 1291 3.6828606 insert psi2Swidth:InterpolationMasses 1292 3.6829981 insert psi2Swidth:InterpolationMasses 1293 3.6831357 insert psi2Swidth:InterpolationMasses 1294 3.6832732 insert psi2Swidth:InterpolationMasses 1295 3.6834108 insert psi2Swidth:InterpolationMasses 1296 3.6835483 insert psi2Swidth:InterpolationMasses 1297 3.6836859 insert psi2Swidth:InterpolationMasses 1298 3.6838234 insert psi2Swidth:InterpolationMasses 1299 3.683961 insert psi2Swidth:InterpolationMasses 1300 3.6840985 insert psi2Swidth:InterpolationMasses 1301 3.6842361 insert psi2Swidth:InterpolationMasses 1302 3.6843736 insert psi2Swidth:InterpolationMasses 1303 3.6845112 insert psi2Swidth:InterpolationMasses 1304 3.6846487 insert psi2Swidth:InterpolationMasses 1305 3.6847863 insert psi2Swidth:InterpolationMasses 1306 3.6849238 insert psi2Swidth:InterpolationMasses 1307 3.6850614 insert psi2Swidth:InterpolationMasses 1308 3.6851989 insert psi2Swidth:InterpolationMasses 1309 3.6853365 insert psi2Swidth:InterpolationMasses 1310 3.685474 insert psi2Swidth:InterpolationMasses 1311 3.6856116 insert psi2Swidth:InterpolationMasses 1312 3.6857491 insert psi2Swidth:InterpolationMasses 1313 3.6858867 insert psi2Swidth:InterpolationMasses 1314 3.6860242 insert psi2Swidth:InterpolationMasses 1315 3.6861618 insert psi2Swidth:InterpolationMasses 1316 3.6862993 insert psi2Swidth:InterpolationMasses 1317 3.6864369 insert psi2Swidth:InterpolationMasses 1318 3.6865744 insert psi2Swidth:InterpolationMasses 1319 3.686712 insert psi2Swidth:InterpolationMasses 1320 3.6868495 insert psi2Swidth:InterpolationMasses 1321 3.6869871 insert psi2Swidth:InterpolationMasses 1322 3.6871246 insert psi2Swidth:InterpolationMasses 1323 3.6872622 insert psi2Swidth:InterpolationMasses 1324 3.6873997 insert psi2Swidth:InterpolationMasses 1325 3.6875373 insert psi2Swidth:InterpolationMasses 1326 3.6876748 insert psi2Swidth:InterpolationMasses 1327 3.6878124 insert psi2Swidth:InterpolationMasses 1328 3.6879499 insert psi2Swidth:InterpolationMasses 1329 3.6880875 insert psi2Swidth:InterpolationMasses 1330 3.688225 insert psi2Swidth:InterpolationMasses 1331 3.6883626 insert psi2Swidth:InterpolationMasses 1332 3.6885001 insert psi2Swidth:InterpolationMasses 1333 3.6886377 insert psi2Swidth:InterpolationMasses 1334 3.6887752 insert psi2Swidth:InterpolationMasses 1335 3.6889128 insert psi2Swidth:InterpolationMasses 1336 3.6890503 insert psi2Swidth:InterpolationMasses 1337 3.6891879 insert psi2Swidth:InterpolationMasses 1338 3.6893254 insert psi2Swidth:InterpolationMasses 1339 3.689463 insert psi2Swidth:InterpolationMasses 1340 3.6896006 insert psi2Swidth:InterpolationMasses 1341 3.6897381 insert psi2Swidth:InterpolationMasses 1342 3.6824479 insert psi2Swidth:InterpolationMasses 1343 3.6825854 insert psi2Swidth:InterpolationMasses 1344 3.682723 insert psi2Swidth:InterpolationMasses 1345 3.6828606 insert psi2Swidth:InterpolationMasses 1346 3.6829981 insert psi2Swidth:InterpolationMasses 1347 3.6831357 insert psi2Swidth:InterpolationMasses 1348 3.6832732 insert psi2Swidth:InterpolationMasses 1349 3.6834108 insert psi2Swidth:InterpolationMasses 1350 3.6835483 insert psi2Swidth:InterpolationMasses 1351 3.6836859 insert psi2Swidth:InterpolationMasses 1352 3.6838234 insert psi2Swidth:InterpolationMasses 1353 3.683961 insert psi2Swidth:InterpolationMasses 1354 3.6840985 insert psi2Swidth:InterpolationMasses 1355 3.6842361 insert psi2Swidth:InterpolationMasses 1356 3.6843736 insert psi2Swidth:InterpolationMasses 1357 3.6845112 insert psi2Swidth:InterpolationMasses 1358 3.6846487 insert psi2Swidth:InterpolationMasses 1359 3.6847863 insert psi2Swidth:InterpolationMasses 1360 3.6849238 insert psi2Swidth:InterpolationMasses 1361 3.6850614 insert psi2Swidth:InterpolationMasses 1362 3.6851989 insert psi2Swidth:InterpolationMasses 1363 3.6853365 insert psi2Swidth:InterpolationMasses 1364 3.685474 insert psi2Swidth:InterpolationMasses 1365 3.6856116 insert psi2Swidth:InterpolationMasses 1366 3.6857491 insert psi2Swidth:InterpolationMasses 1367 3.6858867 insert psi2Swidth:InterpolationMasses 1368 3.6860242 insert psi2Swidth:InterpolationMasses 1369 3.6861618 insert psi2Swidth:InterpolationMasses 1370 3.6862993 insert psi2Swidth:InterpolationMasses 1371 3.6864369 insert psi2Swidth:InterpolationMasses 1372 3.6865744 insert psi2Swidth:InterpolationMasses 1373 3.686712 insert psi2Swidth:InterpolationMasses 1374 3.6868495 insert psi2Swidth:InterpolationMasses 1375 3.6869871 insert psi2Swidth:InterpolationMasses 1376 3.6871246 insert psi2Swidth:InterpolationMasses 1377 3.6872622 insert psi2Swidth:InterpolationMasses 1378 3.6873997 insert psi2Swidth:InterpolationMasses 1379 3.6875373 insert psi2Swidth:InterpolationMasses 1380 3.6876748 insert psi2Swidth:InterpolationMasses 1381 3.6878124 insert psi2Swidth:InterpolationMasses 1382 3.6879499 insert psi2Swidth:InterpolationMasses 1383 3.6880875 insert psi2Swidth:InterpolationMasses 1384 3.688225 insert psi2Swidth:InterpolationMasses 1385 3.6883626 insert psi2Swidth:InterpolationMasses 1386 3.6885001 insert psi2Swidth:InterpolationMasses 1387 3.6886377 insert psi2Swidth:InterpolationMasses 1388 3.6887752 insert psi2Swidth:InterpolationMasses 1389 3.6889128 insert psi2Swidth:InterpolationMasses 1390 3.6890503 insert psi2Swidth:InterpolationMasses 1391 3.6891879 insert psi2Swidth:InterpolationMasses 1392 3.6893254 insert psi2Swidth:InterpolationMasses 1393 3.689463 insert psi2Swidth:InterpolationMasses 1394 3.6896006 insert psi2Swidth:InterpolationMasses 1395 3.6897381 insert psi2Swidth:InterpolationMasses 1396 3.6824479 insert psi2Swidth:InterpolationMasses 1397 3.6825854 insert psi2Swidth:InterpolationMasses 1398 3.682723 insert psi2Swidth:InterpolationMasses 1399 3.6828606 insert psi2Swidth:InterpolationMasses 1400 3.6829981 insert psi2Swidth:InterpolationMasses 1401 3.6831357 insert psi2Swidth:InterpolationMasses 1402 3.6832732 insert psi2Swidth:InterpolationMasses 1403 3.6834108 insert psi2Swidth:InterpolationMasses 1404 3.6835483 insert psi2Swidth:InterpolationMasses 1405 3.6836859 insert psi2Swidth:InterpolationMasses 1406 3.6838234 insert psi2Swidth:InterpolationMasses 1407 3.683961 insert psi2Swidth:InterpolationMasses 1408 3.6840985 insert psi2Swidth:InterpolationMasses 1409 3.6842361 insert psi2Swidth:InterpolationMasses 1410 3.6843736 insert psi2Swidth:InterpolationMasses 1411 3.6845112 insert psi2Swidth:InterpolationMasses 1412 3.6846487 insert psi2Swidth:InterpolationMasses 1413 3.6847863 insert psi2Swidth:InterpolationMasses 1414 3.6849238 insert psi2Swidth:InterpolationMasses 1415 3.6850614 insert psi2Swidth:InterpolationMasses 1416 3.6851989 insert psi2Swidth:InterpolationMasses 1417 3.6853365 insert psi2Swidth:InterpolationMasses 1418 3.685474 insert psi2Swidth:InterpolationMasses 1419 3.6856116 insert psi2Swidth:InterpolationMasses 1420 3.6857491 insert psi2Swidth:InterpolationMasses 1421 3.6858867 insert psi2Swidth:InterpolationMasses 1422 3.6860242 insert psi2Swidth:InterpolationMasses 1423 3.6861618 insert psi2Swidth:InterpolationMasses 1424 3.6862993 insert psi2Swidth:InterpolationMasses 1425 3.6864369 insert psi2Swidth:InterpolationMasses 1426 3.6865744 insert psi2Swidth:InterpolationMasses 1427 3.686712 insert psi2Swidth:InterpolationMasses 1428 3.6868495 insert psi2Swidth:InterpolationMasses 1429 3.6869871 insert psi2Swidth:InterpolationMasses 1430 3.6871246 insert psi2Swidth:InterpolationMasses 1431 3.6872622 insert psi2Swidth:InterpolationMasses 1432 3.6873997 insert psi2Swidth:InterpolationMasses 1433 3.6875373 insert psi2Swidth:InterpolationMasses 1434 3.6876748 insert psi2Swidth:InterpolationMasses 1435 3.6878124 insert psi2Swidth:InterpolationMasses 1436 3.6879499 insert psi2Swidth:InterpolationMasses 1437 3.6880875 insert psi2Swidth:InterpolationMasses 1438 3.688225 insert psi2Swidth:InterpolationMasses 1439 3.6883626 insert psi2Swidth:InterpolationMasses 1440 3.6885001 insert psi2Swidth:InterpolationMasses 1441 3.6886377 insert psi2Swidth:InterpolationMasses 1442 3.6887752 insert psi2Swidth:InterpolationMasses 1443 3.6889128 insert psi2Swidth:InterpolationMasses 1444 3.6890503 insert psi2Swidth:InterpolationMasses 1445 3.6891879 insert psi2Swidth:InterpolationMasses 1446 3.6893254 insert psi2Swidth:InterpolationMasses 1447 3.689463 insert psi2Swidth:InterpolationMasses 1448 3.6896006 insert psi2Swidth:InterpolationMasses 1449 3.6897381 insert psi2Swidth:InterpolationMasses 1450 3.6824479 insert psi2Swidth:InterpolationMasses 1451 3.6825854 insert psi2Swidth:InterpolationMasses 1452 3.682723 insert psi2Swidth:InterpolationMasses 1453 3.6828606 insert psi2Swidth:InterpolationMasses 1454 3.6829981 insert psi2Swidth:InterpolationMasses 1455 3.6831357 insert psi2Swidth:InterpolationMasses 1456 3.6832732 insert psi2Swidth:InterpolationMasses 1457 3.6834108 insert psi2Swidth:InterpolationMasses 1458 3.6835483 insert psi2Swidth:InterpolationMasses 1459 3.6836859 insert psi2Swidth:InterpolationMasses 1460 3.6838234 insert psi2Swidth:InterpolationMasses 1461 3.683961 insert psi2Swidth:InterpolationMasses 1462 3.6840985 insert psi2Swidth:InterpolationMasses 1463 3.6842361 insert psi2Swidth:InterpolationMasses 1464 3.6843736 insert psi2Swidth:InterpolationMasses 1465 3.6845112 insert psi2Swidth:InterpolationMasses 1466 3.6846487 insert psi2Swidth:InterpolationMasses 1467 3.6847863 insert psi2Swidth:InterpolationMasses 1468 3.6849238 insert psi2Swidth:InterpolationMasses 1469 3.6850614 insert psi2Swidth:InterpolationMasses 1470 3.6851989 insert psi2Swidth:InterpolationMasses 1471 3.6853365 insert psi2Swidth:InterpolationMasses 1472 3.685474 insert psi2Swidth:InterpolationMasses 1473 3.6856116 insert psi2Swidth:InterpolationMasses 1474 3.6857491 insert psi2Swidth:InterpolationMasses 1475 3.6858867 insert psi2Swidth:InterpolationMasses 1476 3.6860242 insert psi2Swidth:InterpolationMasses 1477 3.6861618 insert psi2Swidth:InterpolationMasses 1478 3.6862993 insert psi2Swidth:InterpolationMasses 1479 3.6864369 insert psi2Swidth:InterpolationMasses 1480 3.6865744 insert psi2Swidth:InterpolationMasses 1481 3.686712 insert psi2Swidth:InterpolationMasses 1482 3.6868495 insert psi2Swidth:InterpolationMasses 1483 3.6869871 insert psi2Swidth:InterpolationMasses 1484 3.6871246 insert psi2Swidth:InterpolationMasses 1485 3.6872622 insert psi2Swidth:InterpolationMasses 1486 3.6873997 insert psi2Swidth:InterpolationMasses 1487 3.6875373 insert psi2Swidth:InterpolationMasses 1488 3.6876748 insert psi2Swidth:InterpolationMasses 1489 3.6878124 insert psi2Swidth:InterpolationMasses 1490 3.6879499 insert psi2Swidth:InterpolationMasses 1491 3.6880875 insert psi2Swidth:InterpolationMasses 1492 3.688225 insert psi2Swidth:InterpolationMasses 1493 3.6883626 insert psi2Swidth:InterpolationMasses 1494 3.6885001 insert psi2Swidth:InterpolationMasses 1495 3.6886377 insert psi2Swidth:InterpolationMasses 1496 3.6887752 insert psi2Swidth:InterpolationMasses 1497 3.6889128 insert psi2Swidth:InterpolationMasses 1498 3.6890503 insert psi2Swidth:InterpolationMasses 1499 3.6891879 insert psi2Swidth:InterpolationMasses 1500 3.6893254 insert psi2Swidth:InterpolationMasses 1501 3.689463 insert psi2Swidth:InterpolationMasses 1502 3.6896006 insert psi2Swidth:InterpolationMasses 1503 3.6897381 insert psi2Swidth:InterpolationMasses 1504 3.6824479 insert psi2Swidth:InterpolationMasses 1505 3.6825854 insert psi2Swidth:InterpolationMasses 1506 3.682723 insert psi2Swidth:InterpolationMasses 1507 3.6828606 insert psi2Swidth:InterpolationMasses 1508 3.6829981 insert psi2Swidth:InterpolationMasses 1509 3.6831357 insert psi2Swidth:InterpolationMasses 1510 3.6832732 insert psi2Swidth:InterpolationMasses 1511 3.6834108 insert psi2Swidth:InterpolationMasses 1512 3.6835483 insert psi2Swidth:InterpolationMasses 1513 3.6836859 insert psi2Swidth:InterpolationMasses 1514 3.6838234 insert psi2Swidth:InterpolationMasses 1515 3.683961 insert psi2Swidth:InterpolationMasses 1516 3.6840985 insert psi2Swidth:InterpolationMasses 1517 3.6842361 insert psi2Swidth:InterpolationMasses 1518 3.6843736 insert psi2Swidth:InterpolationMasses 1519 3.6845112 insert psi2Swidth:InterpolationMasses 1520 3.6846487 insert psi2Swidth:InterpolationMasses 1521 3.6847863 insert psi2Swidth:InterpolationMasses 1522 3.6849238 insert psi2Swidth:InterpolationMasses 1523 3.6850614 insert psi2Swidth:InterpolationMasses 1524 3.6851989 insert psi2Swidth:InterpolationMasses 1525 3.6853365 insert psi2Swidth:InterpolationMasses 1526 3.685474 insert psi2Swidth:InterpolationMasses 1527 3.6856116 insert psi2Swidth:InterpolationMasses 1528 3.6857491 insert psi2Swidth:InterpolationMasses 1529 3.6858867 insert psi2Swidth:InterpolationMasses 1530 3.6860242 insert psi2Swidth:InterpolationMasses 1531 3.6861618 insert psi2Swidth:InterpolationMasses 1532 3.6862993 insert psi2Swidth:InterpolationMasses 1533 3.6864369 insert psi2Swidth:InterpolationMasses 1534 3.6865744 insert psi2Swidth:InterpolationMasses 1535 3.686712 insert psi2Swidth:InterpolationMasses 1536 3.6868495 insert psi2Swidth:InterpolationMasses 1537 3.6869871 insert psi2Swidth:InterpolationMasses 1538 3.6871246 insert psi2Swidth:InterpolationMasses 1539 3.6872622 insert psi2Swidth:InterpolationMasses 1540 3.6873997 insert psi2Swidth:InterpolationMasses 1541 3.6875373 insert psi2Swidth:InterpolationMasses 1542 3.6876748 insert psi2Swidth:InterpolationMasses 1543 3.6878124 insert psi2Swidth:InterpolationMasses 1544 3.6879499 insert psi2Swidth:InterpolationMasses 1545 3.6880875 insert psi2Swidth:InterpolationMasses 1546 3.688225 insert psi2Swidth:InterpolationMasses 1547 3.6883626 insert psi2Swidth:InterpolationMasses 1548 3.6885001 insert psi2Swidth:InterpolationMasses 1549 3.6886377 insert psi2Swidth:InterpolationMasses 1550 3.6887752 insert psi2Swidth:InterpolationMasses 1551 3.6889128 insert psi2Swidth:InterpolationMasses 1552 3.6890503 insert psi2Swidth:InterpolationMasses 1553 3.6891879 insert psi2Swidth:InterpolationMasses 1554 3.6893254 insert psi2Swidth:InterpolationMasses 1555 3.689463 insert psi2Swidth:InterpolationMasses 1556 3.6896006 insert psi2Swidth:InterpolationMasses 1557 3.6897381 insert psi2Swidth:InterpolationMasses 1558 3.6824479 insert psi2Swidth:InterpolationMasses 1559 3.6825854 insert psi2Swidth:InterpolationMasses 1560 3.682723 insert psi2Swidth:InterpolationMasses 1561 3.6828606 insert psi2Swidth:InterpolationMasses 1562 3.6829981 insert psi2Swidth:InterpolationMasses 1563 3.6831357 insert psi2Swidth:InterpolationMasses 1564 3.6832732 insert psi2Swidth:InterpolationMasses 1565 3.6834108 insert psi2Swidth:InterpolationMasses 1566 3.6835483 insert psi2Swidth:InterpolationMasses 1567 3.6836859 insert psi2Swidth:InterpolationMasses 1568 3.6838234 insert psi2Swidth:InterpolationMasses 1569 3.683961 insert psi2Swidth:InterpolationMasses 1570 3.6840985 insert psi2Swidth:InterpolationMasses 1571 3.6842361 insert psi2Swidth:InterpolationMasses 1572 3.6843736 insert psi2Swidth:InterpolationMasses 1573 3.6845112 insert psi2Swidth:InterpolationMasses 1574 3.6846487 insert psi2Swidth:InterpolationMasses 1575 3.6847863 insert psi2Swidth:InterpolationMasses 1576 3.6849238 insert psi2Swidth:InterpolationMasses 1577 3.6850614 insert psi2Swidth:InterpolationMasses 1578 3.6851989 insert psi2Swidth:InterpolationMasses 1579 3.6853365 insert psi2Swidth:InterpolationMasses 1580 3.685474 insert psi2Swidth:InterpolationMasses 1581 3.6856116 insert psi2Swidth:InterpolationMasses 1582 3.6857491 insert psi2Swidth:InterpolationMasses 1583 3.6858867 insert psi2Swidth:InterpolationMasses 1584 3.6860242 insert psi2Swidth:InterpolationMasses 1585 3.6861618 insert psi2Swidth:InterpolationMasses 1586 3.6862993 insert psi2Swidth:InterpolationMasses 1587 3.6864369 insert psi2Swidth:InterpolationMasses 1588 3.6865744 insert psi2Swidth:InterpolationMasses 1589 3.686712 insert psi2Swidth:InterpolationMasses 1590 3.6868495 insert psi2Swidth:InterpolationMasses 1591 3.6869871 insert psi2Swidth:InterpolationMasses 1592 3.6871246 insert psi2Swidth:InterpolationMasses 1593 3.6872622 insert psi2Swidth:InterpolationMasses 1594 3.6873997 insert psi2Swidth:InterpolationMasses 1595 3.6875373 insert psi2Swidth:InterpolationMasses 1596 3.6876748 insert psi2Swidth:InterpolationMasses 1597 3.6878124 insert psi2Swidth:InterpolationMasses 1598 3.6879499 insert psi2Swidth:InterpolationMasses 1599 3.6880875 insert psi2Swidth:InterpolationMasses 1600 3.688225 insert psi2Swidth:InterpolationMasses 1601 3.6883626 insert psi2Swidth:InterpolationMasses 1602 3.6885001 insert psi2Swidth:InterpolationMasses 1603 3.6886377 insert psi2Swidth:InterpolationMasses 1604 3.6887752 insert psi2Swidth:InterpolationMasses 1605 3.6889128 insert psi2Swidth:InterpolationMasses 1606 3.6890503 insert psi2Swidth:InterpolationMasses 1607 3.6891879 insert psi2Swidth:InterpolationMasses 1608 3.6893254 insert psi2Swidth:InterpolationMasses 1609 3.689463 insert psi2Swidth:InterpolationMasses 1610 3.6896006 insert psi2Swidth:InterpolationMasses 1611 3.6897381 insert psi2Swidth:InterpolationWidths 0 9.0840074e-06 insert psi2Swidth:InterpolationWidths 1 9.1345454e-06 insert psi2Swidth:InterpolationWidths 2 9.1851853e-06 insert psi2Swidth:InterpolationWidths 3 9.235927e-06 insert psi2Swidth:InterpolationWidths 4 9.2867704e-06 insert psi2Swidth:InterpolationWidths 5 9.3377155e-06 insert psi2Swidth:InterpolationWidths 6 9.388762e-06 insert psi2Swidth:InterpolationWidths 7 9.4399099e-06 insert psi2Swidth:InterpolationWidths 8 9.491159e-06 insert psi2Swidth:InterpolationWidths 9 9.5425092e-06 insert psi2Swidth:InterpolationWidths 10 9.5939604e-06 insert psi2Swidth:InterpolationWidths 11 9.6455124e-06 insert psi2Swidth:InterpolationWidths 12 9.6971652e-06 insert psi2Swidth:InterpolationWidths 13 9.7489187e-06 insert psi2Swidth:InterpolationWidths 14 9.8007726e-06 insert psi2Swidth:InterpolationWidths 15 9.852727e-06 insert psi2Swidth:InterpolationWidths 16 9.9047816e-06 insert psi2Swidth:InterpolationWidths 17 9.9569364e-06 insert psi2Swidth:InterpolationWidths 18 1.0009191e-05 insert psi2Swidth:InterpolationWidths 19 1.0061546e-05 insert psi2Swidth:InterpolationWidths 20 1.0114001e-05 insert psi2Swidth:InterpolationWidths 21 1.0166555e-05 insert psi2Swidth:InterpolationWidths 22 1.0219209e-05 insert psi2Swidth:InterpolationWidths 23 1.0271962e-05 insert psi2Swidth:InterpolationWidths 24 1.0324815e-05 insert psi2Swidth:InterpolationWidths 25 1.0377767e-05 insert psi2Swidth:InterpolationWidths 26 1.0430818e-05 insert psi2Swidth:InterpolationWidths 27 1.0483969e-05 insert psi2Swidth:InterpolationWidths 28 1.0537218e-05 insert psi2Swidth:InterpolationWidths 29 1.0590566e-05 insert psi2Swidth:InterpolationWidths 30 1.0644013e-05 insert psi2Swidth:InterpolationWidths 31 1.0697558e-05 insert psi2Swidth:InterpolationWidths 32 1.0751202e-05 insert psi2Swidth:InterpolationWidths 33 1.0804945e-05 insert psi2Swidth:InterpolationWidths 34 1.0858785e-05 insert psi2Swidth:InterpolationWidths 35 1.0912724e-05 insert psi2Swidth:InterpolationWidths 36 1.0966761e-05 insert psi2Swidth:InterpolationWidths 37 1.1020896e-05 insert psi2Swidth:InterpolationWidths 38 1.1075129e-05 insert psi2Swidth:InterpolationWidths 39 1.112946e-05 insert psi2Swidth:InterpolationWidths 40 1.1183888e-05 insert psi2Swidth:InterpolationWidths 41 1.1238414e-05 insert psi2Swidth:InterpolationWidths 42 1.1293037e-05 insert psi2Swidth:InterpolationWidths 43 1.1347758e-05 insert psi2Swidth:InterpolationWidths 44 1.1402576e-05 insert psi2Swidth:InterpolationWidths 45 1.1457492e-05 insert psi2Swidth:InterpolationWidths 46 1.1512504e-05 insert psi2Swidth:InterpolationWidths 47 1.1567614e-05 insert psi2Swidth:InterpolationWidths 48 1.162282e-05 insert psi2Swidth:InterpolationWidths 49 1.1678123e-05 insert psi2Swidth:InterpolationWidths 50 1.1733523e-05 insert psi2Swidth:InterpolationWidths 51 1.178902e-05 insert psi2Swidth:InterpolationWidths 52 1.1844613e-05 insert psi2Swidth:InterpolationWidths 53 1.1900303e-05 insert psi2Swidth:InterpolationWidths 54 0.00010582908 insert psi2Swidth:InterpolationWidths 55 0.00010603082 insert psi2Swidth:InterpolationWidths 56 0.00010623287 insert psi2Swidth:InterpolationWidths 57 0.00010643524 insert psi2Swidth:InterpolationWidths 58 0.00010663792 insert psi2Swidth:InterpolationWidths 59 0.00010684092 insert psi2Swidth:InterpolationWidths 60 0.00010704423 insert psi2Swidth:InterpolationWidths 61 0.00010724786 insert psi2Swidth:InterpolationWidths 62 0.00010745181 insert psi2Swidth:InterpolationWidths 63 0.00010765608 insert psi2Swidth:InterpolationWidths 64 0.00010786066 insert psi2Swidth:InterpolationWidths 65 0.00010806556 insert psi2Swidth:InterpolationWidths 66 0.00010827078 insert psi2Swidth:InterpolationWidths 67 0.00010847631 insert psi2Swidth:InterpolationWidths 68 0.00010868217 insert psi2Swidth:InterpolationWidths 69 0.00010888834 insert psi2Swidth:InterpolationWidths 70 0.00010909484 insert psi2Swidth:InterpolationWidths 71 0.00010930165 insert psi2Swidth:InterpolationWidths 72 0.00010950879 insert psi2Swidth:InterpolationWidths 73 0.00010971625 insert psi2Swidth:InterpolationWidths 74 0.00010992403 insert psi2Swidth:InterpolationWidths 75 0.00011013213 insert psi2Swidth:InterpolationWidths 76 0.00011034055 insert psi2Swidth:InterpolationWidths 77 0.00011054929 insert psi2Swidth:InterpolationWidths 78 0.00011075836 insert psi2Swidth:InterpolationWidths 79 0.00011096775 insert psi2Swidth:InterpolationWidths 80 0.00011117747 insert psi2Swidth:InterpolationWidths 81 0.0001113875 insert psi2Swidth:InterpolationWidths 82 0.00011159787 insert psi2Swidth:InterpolationWidths 83 0.00011180856 insert psi2Swidth:InterpolationWidths 84 0.00011201957 insert psi2Swidth:InterpolationWidths 85 0.00011223091 insert psi2Swidth:InterpolationWidths 86 0.00011244257 insert psi2Swidth:InterpolationWidths 87 0.00011265457 insert psi2Swidth:InterpolationWidths 88 0.00011286688 insert psi2Swidth:InterpolationWidths 89 0.00011307953 insert psi2Swidth:InterpolationWidths 90 0.0001132925 insert psi2Swidth:InterpolationWidths 91 0.00011350581 insert psi2Swidth:InterpolationWidths 92 0.00011371944 insert psi2Swidth:InterpolationWidths 93 0.00011393339 insert psi2Swidth:InterpolationWidths 94 0.00011414768 insert psi2Swidth:InterpolationWidths 95 0.0001143623 insert psi2Swidth:InterpolationWidths 96 0.00011457725 insert psi2Swidth:InterpolationWidths 97 0.00011479253 insert psi2Swidth:InterpolationWidths 98 0.00011500813 insert psi2Swidth:InterpolationWidths 99 0.00011522407 insert psi2Swidth:InterpolationWidths 100 0.00011544035 insert psi2Swidth:InterpolationWidths 101 0.00011565695 insert psi2Swidth:InterpolationWidths 102 0.00011587389 insert psi2Swidth:InterpolationWidths 103 0.00011609116 insert psi2Swidth:InterpolationWidths 104 5.5514502e-05 insert psi2Swidth:InterpolationWidths 105 5.5618842e-05 insert psi2Swidth:InterpolationWidths 106 5.5723343e-05 insert psi2Swidth:InterpolationWidths 107 5.5828005e-05 insert psi2Swidth:InterpolationWidths 108 5.5932828e-05 insert psi2Swidth:InterpolationWidths 109 5.6037812e-05 insert psi2Swidth:InterpolationWidths 110 5.6142958e-05 insert psi2Swidth:InterpolationWidths 111 5.6248265e-05 insert psi2Swidth:InterpolationWidths 112 5.6353735e-05 insert psi2Swidth:InterpolationWidths 113 5.6459366e-05 insert psi2Swidth:InterpolationWidths 114 5.6565159e-05 insert psi2Swidth:InterpolationWidths 115 5.6671115e-05 insert psi2Swidth:InterpolationWidths 116 5.6777233e-05 insert psi2Swidth:InterpolationWidths 117 5.6883514e-05 insert psi2Swidth:InterpolationWidths 118 5.6989958e-05 insert psi2Swidth:InterpolationWidths 119 5.7096566e-05 insert psi2Swidth:InterpolationWidths 120 5.7203336e-05 insert psi2Swidth:InterpolationWidths 121 5.7310271e-05 insert psi2Swidth:InterpolationWidths 122 5.7417369e-05 insert psi2Swidth:InterpolationWidths 123 5.7524631e-05 insert psi2Swidth:InterpolationWidths 124 5.7632057e-05 insert psi2Swidth:InterpolationWidths 125 5.7739647e-05 insert psi2Swidth:InterpolationWidths 126 5.7847402e-05 insert psi2Swidth:InterpolationWidths 127 5.7955322e-05 insert psi2Swidth:InterpolationWidths 128 5.8063407e-05 insert psi2Swidth:InterpolationWidths 129 5.8171657e-05 insert psi2Swidth:InterpolationWidths 130 5.8280073e-05 insert psi2Swidth:InterpolationWidths 131 5.8388653e-05 insert psi2Swidth:InterpolationWidths 132 5.84974e-05 insert psi2Swidth:InterpolationWidths 133 5.8606313e-05 insert psi2Swidth:InterpolationWidths 134 5.8715392e-05 insert psi2Swidth:InterpolationWidths 135 5.8824637e-05 insert psi2Swidth:InterpolationWidths 136 5.8934048e-05 insert psi2Swidth:InterpolationWidths 137 5.9043627e-05 insert psi2Swidth:InterpolationWidths 138 5.9153372e-05 insert psi2Swidth:InterpolationWidths 139 5.9263285e-05 insert psi2Swidth:InterpolationWidths 140 5.9373365e-05 insert psi2Swidth:InterpolationWidths 141 5.9483612e-05 insert psi2Swidth:InterpolationWidths 142 5.9594027e-05 insert psi2Swidth:InterpolationWidths 143 5.9704611e-05 insert psi2Swidth:InterpolationWidths 144 5.9815362e-05 insert psi2Swidth:InterpolationWidths 145 5.9926282e-05 insert psi2Swidth:InterpolationWidths 146 6.003737e-05 insert psi2Swidth:InterpolationWidths 147 6.0148627e-05 insert psi2Swidth:InterpolationWidths 148 6.0260053e-05 insert psi2Swidth:InterpolationWidths 149 6.0371648e-05 insert psi2Swidth:InterpolationWidths 150 6.0483412e-05 insert psi2Swidth:InterpolationWidths 151 6.0595346e-05 insert psi2Swidth:InterpolationWidths 152 6.070745e-05 insert psi2Swidth:InterpolationWidths 153 6.0819724e-05 insert psi2Swidth:InterpolationWidths 154 4.1603779e-07 insert psi2Swidth:InterpolationWidths 155 4.1632622e-07 insert psi2Swidth:InterpolationWidths 156 4.1661477e-07 insert psi2Swidth:InterpolationWidths 157 4.1690344e-07 insert psi2Swidth:InterpolationWidths 158 4.1719223e-07 insert psi2Swidth:InterpolationWidths 159 4.1748114e-07 insert psi2Swidth:InterpolationWidths 160 4.1777017e-07 insert psi2Swidth:InterpolationWidths 161 4.1805933e-07 insert psi2Swidth:InterpolationWidths 162 4.183486e-07 insert psi2Swidth:InterpolationWidths 163 4.1863799e-07 insert psi2Swidth:InterpolationWidths 164 4.189275e-07 insert psi2Swidth:InterpolationWidths 165 4.1921714e-07 insert psi2Swidth:InterpolationWidths 166 4.1950689e-07 insert psi2Swidth:InterpolationWidths 167 4.1979676e-07 insert psi2Swidth:InterpolationWidths 168 4.2008676e-07 insert psi2Swidth:InterpolationWidths 169 4.2037687e-07 insert psi2Swidth:InterpolationWidths 170 4.2066711e-07 insert psi2Swidth:InterpolationWidths 171 4.2095747e-07 insert psi2Swidth:InterpolationWidths 172 4.2124794e-07 insert psi2Swidth:InterpolationWidths 173 4.2153854e-07 insert psi2Swidth:InterpolationWidths 174 4.2182926e-07 insert psi2Swidth:InterpolationWidths 175 4.2212009e-07 insert psi2Swidth:InterpolationWidths 176 4.2241105e-07 insert psi2Swidth:InterpolationWidths 177 4.2270213e-07 insert psi2Swidth:InterpolationWidths 178 4.2299333e-07 insert psi2Swidth:InterpolationWidths 179 4.2328465e-07 insert psi2Swidth:InterpolationWidths 180 4.2357609e-07 insert psi2Swidth:InterpolationWidths 181 4.2386765e-07 insert psi2Swidth:InterpolationWidths 182 4.2415934e-07 insert psi2Swidth:InterpolationWidths 183 4.2445114e-07 insert psi2Swidth:InterpolationWidths 184 4.2474306e-07 insert psi2Swidth:InterpolationWidths 185 4.2503511e-07 insert psi2Swidth:InterpolationWidths 186 4.2532727e-07 insert psi2Swidth:InterpolationWidths 187 4.2561956e-07 insert psi2Swidth:InterpolationWidths 188 4.2591196e-07 insert psi2Swidth:InterpolationWidths 189 4.2620449e-07 insert psi2Swidth:InterpolationWidths 190 4.2649714e-07 insert psi2Swidth:InterpolationWidths 191 4.2678991e-07 insert psi2Swidth:InterpolationWidths 192 4.270828e-07 insert psi2Swidth:InterpolationWidths 193 4.2737581e-07 insert psi2Swidth:InterpolationWidths 194 4.2766894e-07 insert psi2Swidth:InterpolationWidths 195 4.2796219e-07 insert psi2Swidth:InterpolationWidths 196 4.2825556e-07 insert psi2Swidth:InterpolationWidths 197 4.2854906e-07 insert psi2Swidth:InterpolationWidths 198 4.2884267e-07 insert psi2Swidth:InterpolationWidths 199 4.2913641e-07 insert psi2Swidth:InterpolationWidths 200 4.2943027e-07 insert psi2Swidth:InterpolationWidths 201 4.2972424e-07 insert psi2Swidth:InterpolationWidths 202 4.3001834e-07 insert psi2Swidth:InterpolationWidths 203 4.3031256e-07 insert psi2Swidth:InterpolationWidths 204 4.306069e-07 insert psi2Swidth:InterpolationWidths 205 4.3090136e-07 insert psi2Swidth:InterpolationWidths 206 4.3119595e-07 insert psi2Swidth:InterpolationWidths 207 4.3149065e-07 insert psi2Swidth:InterpolationWidths 208 5.600225e-09 insert psi2Swidth:InterpolationWidths 209 5.6009725e-09 insert psi2Swidth:InterpolationWidths 210 5.6017201e-09 insert psi2Swidth:InterpolationWidths 211 5.6024677e-09 insert psi2Swidth:InterpolationWidths 212 5.6032154e-09 insert psi2Swidth:InterpolationWidths 213 5.6039632e-09 insert psi2Swidth:InterpolationWidths 214 5.604711e-09 insert psi2Swidth:InterpolationWidths 215 5.6054589e-09 insert psi2Swidth:InterpolationWidths 216 5.6062068e-09 insert psi2Swidth:InterpolationWidths 217 5.6069548e-09 insert psi2Swidth:InterpolationWidths 218 5.6077029e-09 insert psi2Swidth:InterpolationWidths 219 5.608451e-09 insert psi2Swidth:InterpolationWidths 220 5.6091992e-09 insert psi2Swidth:InterpolationWidths 221 5.6099475e-09 insert psi2Swidth:InterpolationWidths 222 5.6106958e-09 insert psi2Swidth:InterpolationWidths 223 5.6114441e-09 insert psi2Swidth:InterpolationWidths 224 5.6121926e-09 insert psi2Swidth:InterpolationWidths 225 5.6129411e-09 insert psi2Swidth:InterpolationWidths 226 5.6136896e-09 insert psi2Swidth:InterpolationWidths 227 5.6144383e-09 insert psi2Swidth:InterpolationWidths 228 5.615187e-09 insert psi2Swidth:InterpolationWidths 229 5.6159357e-09 insert psi2Swidth:InterpolationWidths 230 5.6166845e-09 insert psi2Swidth:InterpolationWidths 231 5.6174334e-09 insert psi2Swidth:InterpolationWidths 232 5.6181823e-09 insert psi2Swidth:InterpolationWidths 233 5.6189313e-09 insert psi2Swidth:InterpolationWidths 234 5.6196803e-09 insert psi2Swidth:InterpolationWidths 235 5.6204295e-09 insert psi2Swidth:InterpolationWidths 236 5.6211786e-09 insert psi2Swidth:InterpolationWidths 237 5.6219279e-09 insert psi2Swidth:InterpolationWidths 238 5.6226772e-09 insert psi2Swidth:InterpolationWidths 239 5.6234265e-09 insert psi2Swidth:InterpolationWidths 240 5.624176e-09 insert psi2Swidth:InterpolationWidths 241 5.6249254e-09 insert psi2Swidth:InterpolationWidths 242 5.625675e-09 insert psi2Swidth:InterpolationWidths 243 5.6264246e-09 insert psi2Swidth:InterpolationWidths 244 5.6271743e-09 insert psi2Swidth:InterpolationWidths 245 5.627924e-09 insert psi2Swidth:InterpolationWidths 246 5.6286738e-09 insert psi2Swidth:InterpolationWidths 247 5.6294236e-09 insert psi2Swidth:InterpolationWidths 248 5.6301736e-09 insert psi2Swidth:InterpolationWidths 249 5.6309235e-09 insert psi2Swidth:InterpolationWidths 250 5.6316736e-09 insert psi2Swidth:InterpolationWidths 251 5.6324237e-09 insert psi2Swidth:InterpolationWidths 252 5.6331738e-09 insert psi2Swidth:InterpolationWidths 253 5.6339241e-09 insert psi2Swidth:InterpolationWidths 254 5.6346743e-09 insert psi2Swidth:InterpolationWidths 255 5.6354247e-09 insert psi2Swidth:InterpolationWidths 256 5.6361751e-09 insert psi2Swidth:InterpolationWidths 257 5.6369256e-09 insert psi2Swidth:InterpolationWidths 258 5.6376761e-09 insert psi2Swidth:InterpolationWidths 259 5.6384267e-09 insert psi2Swidth:InterpolationWidths 260 5.6391773e-09 insert psi2Swidth:InterpolationWidths 261 5.6399281e-09 insert psi2Swidth:InterpolationWidths 262 5.600225e-09 insert psi2Swidth:InterpolationWidths 263 5.6009725e-09 insert psi2Swidth:InterpolationWidths 264 5.6017201e-09 insert psi2Swidth:InterpolationWidths 265 5.6024677e-09 insert psi2Swidth:InterpolationWidths 266 5.6032154e-09 insert psi2Swidth:InterpolationWidths 267 5.6039632e-09 insert psi2Swidth:InterpolationWidths 268 5.604711e-09 insert psi2Swidth:InterpolationWidths 269 5.6054589e-09 insert psi2Swidth:InterpolationWidths 270 5.6062068e-09 insert psi2Swidth:InterpolationWidths 271 5.6069548e-09 insert psi2Swidth:InterpolationWidths 272 5.6077029e-09 insert psi2Swidth:InterpolationWidths 273 5.608451e-09 insert psi2Swidth:InterpolationWidths 274 5.6091992e-09 insert psi2Swidth:InterpolationWidths 275 5.6099475e-09 insert psi2Swidth:InterpolationWidths 276 5.6106958e-09 insert psi2Swidth:InterpolationWidths 277 5.6114441e-09 insert psi2Swidth:InterpolationWidths 278 5.6121926e-09 insert psi2Swidth:InterpolationWidths 279 5.6129411e-09 insert psi2Swidth:InterpolationWidths 280 5.6136896e-09 insert psi2Swidth:InterpolationWidths 281 5.6144383e-09 insert psi2Swidth:InterpolationWidths 282 5.615187e-09 insert psi2Swidth:InterpolationWidths 283 5.6159357e-09 insert psi2Swidth:InterpolationWidths 284 5.6166845e-09 insert psi2Swidth:InterpolationWidths 285 5.6174334e-09 insert psi2Swidth:InterpolationWidths 286 5.6181823e-09 insert psi2Swidth:InterpolationWidths 287 5.6189313e-09 insert psi2Swidth:InterpolationWidths 288 5.6196803e-09 insert psi2Swidth:InterpolationWidths 289 5.6204295e-09 insert psi2Swidth:InterpolationWidths 290 5.6211786e-09 insert psi2Swidth:InterpolationWidths 291 5.6219279e-09 insert psi2Swidth:InterpolationWidths 292 5.6226772e-09 insert psi2Swidth:InterpolationWidths 293 5.6234265e-09 insert psi2Swidth:InterpolationWidths 294 5.624176e-09 insert psi2Swidth:InterpolationWidths 295 5.6249254e-09 insert psi2Swidth:InterpolationWidths 296 5.625675e-09 insert psi2Swidth:InterpolationWidths 297 5.6264246e-09 insert psi2Swidth:InterpolationWidths 298 5.6271743e-09 insert psi2Swidth:InterpolationWidths 299 5.627924e-09 insert psi2Swidth:InterpolationWidths 300 5.6286738e-09 insert psi2Swidth:InterpolationWidths 301 5.6294236e-09 insert psi2Swidth:InterpolationWidths 302 5.6301736e-09 insert psi2Swidth:InterpolationWidths 303 5.6309235e-09 insert psi2Swidth:InterpolationWidths 304 5.6316736e-09 insert psi2Swidth:InterpolationWidths 305 5.6324237e-09 insert psi2Swidth:InterpolationWidths 306 5.6331738e-09 insert psi2Swidth:InterpolationWidths 307 5.6339241e-09 insert psi2Swidth:InterpolationWidths 308 5.6346743e-09 insert psi2Swidth:InterpolationWidths 309 5.6354247e-09 insert psi2Swidth:InterpolationWidths 310 5.6361751e-09 insert psi2Swidth:InterpolationWidths 311 5.6369256e-09 insert psi2Swidth:InterpolationWidths 312 5.6376761e-09 insert psi2Swidth:InterpolationWidths 313 5.6384267e-09 insert psi2Swidth:InterpolationWidths 314 5.6391773e-09 insert psi2Swidth:InterpolationWidths 315 5.6399281e-09 insert psi2Swidth:InterpolationWidths 316 3.6870912e-08 insert psi2Swidth:InterpolationWidths 317 3.6875841e-08 insert psi2Swidth:InterpolationWidths 318 3.6880771e-08 insert psi2Swidth:InterpolationWidths 319 3.6885701e-08 insert psi2Swidth:InterpolationWidths 320 3.6890632e-08 insert psi2Swidth:InterpolationWidths 321 3.6895563e-08 insert psi2Swidth:InterpolationWidths 322 3.6900495e-08 insert psi2Swidth:InterpolationWidths 323 3.6905427e-08 insert psi2Swidth:InterpolationWidths 324 3.6910359e-08 insert psi2Swidth:InterpolationWidths 325 3.6915292e-08 insert psi2Swidth:InterpolationWidths 326 3.6920225e-08 insert psi2Swidth:InterpolationWidths 327 3.6925158e-08 insert psi2Swidth:InterpolationWidths 328 3.6930092e-08 insert psi2Swidth:InterpolationWidths 329 3.6935027e-08 insert psi2Swidth:InterpolationWidths 330 3.6939961e-08 insert psi2Swidth:InterpolationWidths 331 3.6944897e-08 insert psi2Swidth:InterpolationWidths 332 3.6949832e-08 insert psi2Swidth:InterpolationWidths 333 3.6954768e-08 insert psi2Swidth:InterpolationWidths 334 3.6959705e-08 insert psi2Swidth:InterpolationWidths 335 3.6964641e-08 insert psi2Swidth:InterpolationWidths 336 3.6969579e-08 insert psi2Swidth:InterpolationWidths 337 3.6974516e-08 insert psi2Swidth:InterpolationWidths 338 3.6979454e-08 insert psi2Swidth:InterpolationWidths 339 3.6984393e-08 insert psi2Swidth:InterpolationWidths 340 3.6989331e-08 insert psi2Swidth:InterpolationWidths 341 3.6994271e-08 insert psi2Swidth:InterpolationWidths 342 3.699921e-08 insert psi2Swidth:InterpolationWidths 343 3.700415e-08 insert psi2Swidth:InterpolationWidths 344 3.7009091e-08 insert psi2Swidth:InterpolationWidths 345 3.7014032e-08 insert psi2Swidth:InterpolationWidths 346 3.7018973e-08 insert psi2Swidth:InterpolationWidths 347 3.7023915e-08 insert psi2Swidth:InterpolationWidths 348 3.7028857e-08 insert psi2Swidth:InterpolationWidths 349 3.7033799e-08 insert psi2Swidth:InterpolationWidths 350 3.7038742e-08 insert psi2Swidth:InterpolationWidths 351 3.7043685e-08 insert psi2Swidth:InterpolationWidths 352 3.7048629e-08 insert psi2Swidth:InterpolationWidths 353 3.7053573e-08 insert psi2Swidth:InterpolationWidths 354 3.7058518e-08 insert psi2Swidth:InterpolationWidths 355 3.7063463e-08 insert psi2Swidth:InterpolationWidths 356 3.7068408e-08 insert psi2Swidth:InterpolationWidths 357 3.7073354e-08 insert psi2Swidth:InterpolationWidths 358 3.70783e-08 insert psi2Swidth:InterpolationWidths 359 3.7083246e-08 insert psi2Swidth:InterpolationWidths 360 3.7088193e-08 insert psi2Swidth:InterpolationWidths 361 3.7093141e-08 insert psi2Swidth:InterpolationWidths 362 3.7098088e-08 insert psi2Swidth:InterpolationWidths 363 3.7103037e-08 insert psi2Swidth:InterpolationWidths 364 3.7107985e-08 insert psi2Swidth:InterpolationWidths 365 3.7112934e-08 insert psi2Swidth:InterpolationWidths 366 3.7117884e-08 insert psi2Swidth:InterpolationWidths 367 3.7122833e-08 insert psi2Swidth:InterpolationWidths 368 3.7127784e-08 insert psi2Swidth:InterpolationWidths 369 3.7132734e-08 insert psi2Swidth:InterpolationWidths 370 3.6870912e-08 insert psi2Swidth:InterpolationWidths 371 3.6875841e-08 insert psi2Swidth:InterpolationWidths 372 3.6880771e-08 insert psi2Swidth:InterpolationWidths 373 3.6885701e-08 insert psi2Swidth:InterpolationWidths 374 3.6890632e-08 insert psi2Swidth:InterpolationWidths 375 3.6895563e-08 insert psi2Swidth:InterpolationWidths 376 3.6900495e-08 insert psi2Swidth:InterpolationWidths 377 3.6905427e-08 insert psi2Swidth:InterpolationWidths 378 3.6910359e-08 insert psi2Swidth:InterpolationWidths 379 3.6915292e-08 insert psi2Swidth:InterpolationWidths 380 3.6920225e-08 insert psi2Swidth:InterpolationWidths 381 3.6925158e-08 insert psi2Swidth:InterpolationWidths 382 3.6930092e-08 insert psi2Swidth:InterpolationWidths 383 3.6935027e-08 insert psi2Swidth:InterpolationWidths 384 3.6939961e-08 insert psi2Swidth:InterpolationWidths 385 3.6944897e-08 insert psi2Swidth:InterpolationWidths 386 3.6949832e-08 insert psi2Swidth:InterpolationWidths 387 3.6954768e-08 insert psi2Swidth:InterpolationWidths 388 3.6959705e-08 insert psi2Swidth:InterpolationWidths 389 3.6964641e-08 insert psi2Swidth:InterpolationWidths 390 3.6969579e-08 insert psi2Swidth:InterpolationWidths 391 3.6974516e-08 insert psi2Swidth:InterpolationWidths 392 3.6979454e-08 insert psi2Swidth:InterpolationWidths 393 3.6984393e-08 insert psi2Swidth:InterpolationWidths 394 3.6989331e-08 insert psi2Swidth:InterpolationWidths 395 3.6994271e-08 insert psi2Swidth:InterpolationWidths 396 3.699921e-08 insert psi2Swidth:InterpolationWidths 397 3.700415e-08 insert psi2Swidth:InterpolationWidths 398 3.7009091e-08 insert psi2Swidth:InterpolationWidths 399 3.7014032e-08 insert psi2Swidth:InterpolationWidths 400 3.7018973e-08 insert psi2Swidth:InterpolationWidths 401 3.7023915e-08 insert psi2Swidth:InterpolationWidths 402 3.7028857e-08 insert psi2Swidth:InterpolationWidths 403 3.7033799e-08 insert psi2Swidth:InterpolationWidths 404 3.7038742e-08 insert psi2Swidth:InterpolationWidths 405 3.7043685e-08 insert psi2Swidth:InterpolationWidths 406 3.7048629e-08 insert psi2Swidth:InterpolationWidths 407 3.7053573e-08 insert psi2Swidth:InterpolationWidths 408 3.7058518e-08 insert psi2Swidth:InterpolationWidths 409 3.7063463e-08 insert psi2Swidth:InterpolationWidths 410 3.7068408e-08 insert psi2Swidth:InterpolationWidths 411 3.7073354e-08 insert psi2Swidth:InterpolationWidths 412 3.70783e-08 insert psi2Swidth:InterpolationWidths 413 3.7083246e-08 insert psi2Swidth:InterpolationWidths 414 3.7088193e-08 insert psi2Swidth:InterpolationWidths 415 3.7093141e-08 insert psi2Swidth:InterpolationWidths 416 3.7098088e-08 insert psi2Swidth:InterpolationWidths 417 3.7103037e-08 insert psi2Swidth:InterpolationWidths 418 3.7107985e-08 insert psi2Swidth:InterpolationWidths 419 3.7112934e-08 insert psi2Swidth:InterpolationWidths 420 3.7117884e-08 insert psi2Swidth:InterpolationWidths 421 3.7122833e-08 insert psi2Swidth:InterpolationWidths 422 3.7127784e-08 insert psi2Swidth:InterpolationWidths 423 3.7132734e-08 insert psi2Swidth:InterpolationWidths 424 3.4366783e-07 insert psi2Swidth:InterpolationWidths 425 3.4370257e-07 insert psi2Swidth:InterpolationWidths 426 3.4373732e-07 insert psi2Swidth:InterpolationWidths 427 3.4377208e-07 insert psi2Swidth:InterpolationWidths 428 3.4380683e-07 insert psi2Swidth:InterpolationWidths 429 3.4384159e-07 insert psi2Swidth:InterpolationWidths 430 3.4387635e-07 insert psi2Swidth:InterpolationWidths 431 3.4391111e-07 insert psi2Swidth:InterpolationWidths 432 3.4394587e-07 insert psi2Swidth:InterpolationWidths 433 3.4398064e-07 insert psi2Swidth:InterpolationWidths 434 3.4401541e-07 insert psi2Swidth:InterpolationWidths 435 3.4405018e-07 insert psi2Swidth:InterpolationWidths 436 3.4408495e-07 insert psi2Swidth:InterpolationWidths 437 3.4411973e-07 insert psi2Swidth:InterpolationWidths 438 3.441545e-07 insert psi2Swidth:InterpolationWidths 439 3.4418928e-07 insert psi2Swidth:InterpolationWidths 440 3.4422406e-07 insert psi2Swidth:InterpolationWidths 441 3.4425885e-07 insert psi2Swidth:InterpolationWidths 442 3.4429363e-07 insert psi2Swidth:InterpolationWidths 443 3.4432842e-07 insert psi2Swidth:InterpolationWidths 444 3.4436321e-07 insert psi2Swidth:InterpolationWidths 445 3.4439801e-07 insert psi2Swidth:InterpolationWidths 446 3.444328e-07 insert psi2Swidth:InterpolationWidths 447 3.444676e-07 insert psi2Swidth:InterpolationWidths 448 3.445024e-07 insert psi2Swidth:InterpolationWidths 449 3.445372e-07 insert psi2Swidth:InterpolationWidths 450 3.44572e-07 insert psi2Swidth:InterpolationWidths 451 3.4460681e-07 insert psi2Swidth:InterpolationWidths 452 3.4464162e-07 insert psi2Swidth:InterpolationWidths 453 3.4467643e-07 insert psi2Swidth:InterpolationWidths 454 3.4471124e-07 insert psi2Swidth:InterpolationWidths 455 3.4474606e-07 insert psi2Swidth:InterpolationWidths 456 3.4478087e-07 insert psi2Swidth:InterpolationWidths 457 3.4481569e-07 insert psi2Swidth:InterpolationWidths 458 3.4485052e-07 insert psi2Swidth:InterpolationWidths 459 3.4488534e-07 insert psi2Swidth:InterpolationWidths 460 3.4492017e-07 insert psi2Swidth:InterpolationWidths 461 3.4495499e-07 insert psi2Swidth:InterpolationWidths 462 3.4498983e-07 insert psi2Swidth:InterpolationWidths 463 3.4502466e-07 insert psi2Swidth:InterpolationWidths 464 3.4505949e-07 insert psi2Swidth:InterpolationWidths 465 3.4509433e-07 insert psi2Swidth:InterpolationWidths 466 3.4512917e-07 insert psi2Swidth:InterpolationWidths 467 3.4516401e-07 insert psi2Swidth:InterpolationWidths 468 3.4519886e-07 insert psi2Swidth:InterpolationWidths 469 3.452337e-07 insert psi2Swidth:InterpolationWidths 470 3.4526855e-07 insert psi2Swidth:InterpolationWidths 471 3.453034e-07 insert psi2Swidth:InterpolationWidths 472 3.4533826e-07 insert psi2Swidth:InterpolationWidths 473 3.4537311e-07 insert psi2Swidth:InterpolationWidths 474 3.4540797e-07 insert psi2Swidth:InterpolationWidths 475 3.4544283e-07 insert psi2Swidth:InterpolationWidths 476 3.4547769e-07 insert psi2Swidth:InterpolationWidths 477 3.4551255e-07 insert psi2Swidth:InterpolationWidths 478 3.4366783e-07 insert psi2Swidth:InterpolationWidths 479 3.4370257e-07 insert psi2Swidth:InterpolationWidths 480 3.4373732e-07 insert psi2Swidth:InterpolationWidths 481 3.4377208e-07 insert psi2Swidth:InterpolationWidths 482 3.4380683e-07 insert psi2Swidth:InterpolationWidths 483 3.4384159e-07 insert psi2Swidth:InterpolationWidths 484 3.4387635e-07 insert psi2Swidth:InterpolationWidths 485 3.4391111e-07 insert psi2Swidth:InterpolationWidths 486 3.4394587e-07 insert psi2Swidth:InterpolationWidths 487 3.4398064e-07 insert psi2Swidth:InterpolationWidths 488 3.4401541e-07 insert psi2Swidth:InterpolationWidths 489 3.4405018e-07 insert psi2Swidth:InterpolationWidths 490 3.4408495e-07 insert psi2Swidth:InterpolationWidths 491 3.4411973e-07 insert psi2Swidth:InterpolationWidths 492 3.441545e-07 insert psi2Swidth:InterpolationWidths 493 3.4418928e-07 insert psi2Swidth:InterpolationWidths 494 3.4422406e-07 insert psi2Swidth:InterpolationWidths 495 3.4425885e-07 insert psi2Swidth:InterpolationWidths 496 3.4429363e-07 insert psi2Swidth:InterpolationWidths 497 3.4432842e-07 insert psi2Swidth:InterpolationWidths 498 3.4436321e-07 insert psi2Swidth:InterpolationWidths 499 3.4439801e-07 insert psi2Swidth:InterpolationWidths 500 3.444328e-07 insert psi2Swidth:InterpolationWidths 501 3.444676e-07 insert psi2Swidth:InterpolationWidths 502 3.445024e-07 insert psi2Swidth:InterpolationWidths 503 3.445372e-07 insert psi2Swidth:InterpolationWidths 504 3.44572e-07 insert psi2Swidth:InterpolationWidths 505 3.4460681e-07 insert psi2Swidth:InterpolationWidths 506 3.4464162e-07 insert psi2Swidth:InterpolationWidths 507 3.4467643e-07 insert psi2Swidth:InterpolationWidths 508 3.4471124e-07 insert psi2Swidth:InterpolationWidths 509 3.4474606e-07 insert psi2Swidth:InterpolationWidths 510 3.4478087e-07 insert psi2Swidth:InterpolationWidths 511 3.4481569e-07 insert psi2Swidth:InterpolationWidths 512 3.4485052e-07 insert psi2Swidth:InterpolationWidths 513 3.4488534e-07 insert psi2Swidth:InterpolationWidths 514 3.4492017e-07 insert psi2Swidth:InterpolationWidths 515 3.4495499e-07 insert psi2Swidth:InterpolationWidths 516 3.4498983e-07 insert psi2Swidth:InterpolationWidths 517 3.4502466e-07 insert psi2Swidth:InterpolationWidths 518 3.4505949e-07 insert psi2Swidth:InterpolationWidths 519 3.4509433e-07 insert psi2Swidth:InterpolationWidths 520 3.4512917e-07 insert psi2Swidth:InterpolationWidths 521 3.4516401e-07 insert psi2Swidth:InterpolationWidths 522 3.4519886e-07 insert psi2Swidth:InterpolationWidths 523 3.452337e-07 insert psi2Swidth:InterpolationWidths 524 3.4526855e-07 insert psi2Swidth:InterpolationWidths 525 3.453034e-07 insert psi2Swidth:InterpolationWidths 526 3.4533826e-07 insert psi2Swidth:InterpolationWidths 527 3.4537311e-07 insert psi2Swidth:InterpolationWidths 528 3.4540797e-07 insert psi2Swidth:InterpolationWidths 529 3.4544283e-07 insert psi2Swidth:InterpolationWidths 530 3.4547769e-07 insert psi2Swidth:InterpolationWidths 531 3.4551255e-07 insert psi2Swidth:InterpolationWidths 532 3.2739706e-07 insert psi2Swidth:InterpolationWidths 533 3.2743019e-07 insert psi2Swidth:InterpolationWidths 534 3.2746333e-07 insert psi2Swidth:InterpolationWidths 535 3.2749647e-07 insert psi2Swidth:InterpolationWidths 536 3.2752961e-07 insert psi2Swidth:InterpolationWidths 537 3.2756275e-07 insert psi2Swidth:InterpolationWidths 538 3.275959e-07 insert psi2Swidth:InterpolationWidths 539 3.2762904e-07 insert psi2Swidth:InterpolationWidths 540 3.2766219e-07 insert psi2Swidth:InterpolationWidths 541 3.2769534e-07 insert psi2Swidth:InterpolationWidths 542 3.2772849e-07 insert psi2Swidth:InterpolationWidths 543 3.2776165e-07 insert psi2Swidth:InterpolationWidths 544 3.2779481e-07 insert psi2Swidth:InterpolationWidths 545 3.2782797e-07 insert psi2Swidth:InterpolationWidths 546 3.2786113e-07 insert psi2Swidth:InterpolationWidths 547 3.2789429e-07 insert psi2Swidth:InterpolationWidths 548 3.2792746e-07 insert psi2Swidth:InterpolationWidths 549 3.2796062e-07 insert psi2Swidth:InterpolationWidths 550 3.2799379e-07 insert psi2Swidth:InterpolationWidths 551 3.2802697e-07 insert psi2Swidth:InterpolationWidths 552 3.2806014e-07 insert psi2Swidth:InterpolationWidths 553 3.2809332e-07 insert psi2Swidth:InterpolationWidths 554 3.2812649e-07 insert psi2Swidth:InterpolationWidths 555 3.2815967e-07 insert psi2Swidth:InterpolationWidths 556 3.2819286e-07 insert psi2Swidth:InterpolationWidths 557 3.2822604e-07 insert psi2Swidth:InterpolationWidths 558 3.2825923e-07 insert psi2Swidth:InterpolationWidths 559 3.2829242e-07 insert psi2Swidth:InterpolationWidths 560 3.2832561e-07 insert psi2Swidth:InterpolationWidths 561 3.283588e-07 insert psi2Swidth:InterpolationWidths 562 3.28392e-07 insert psi2Swidth:InterpolationWidths 563 3.284252e-07 insert psi2Swidth:InterpolationWidths 564 3.2845839e-07 insert psi2Swidth:InterpolationWidths 565 3.284916e-07 insert psi2Swidth:InterpolationWidths 566 3.285248e-07 insert psi2Swidth:InterpolationWidths 567 3.2855801e-07 insert psi2Swidth:InterpolationWidths 568 3.2859121e-07 insert psi2Swidth:InterpolationWidths 569 3.2862443e-07 insert psi2Swidth:InterpolationWidths 570 3.2865764e-07 insert psi2Swidth:InterpolationWidths 571 3.2869085e-07 insert psi2Swidth:InterpolationWidths 572 3.2872407e-07 insert psi2Swidth:InterpolationWidths 573 3.2875729e-07 insert psi2Swidth:InterpolationWidths 574 3.2879051e-07 insert psi2Swidth:InterpolationWidths 575 3.2882373e-07 insert psi2Swidth:InterpolationWidths 576 3.2885696e-07 insert psi2Swidth:InterpolationWidths 577 3.2889018e-07 insert psi2Swidth:InterpolationWidths 578 3.2892341e-07 insert psi2Swidth:InterpolationWidths 579 3.2895665e-07 insert psi2Swidth:InterpolationWidths 580 3.2898988e-07 insert psi2Swidth:InterpolationWidths 581 3.2902312e-07 insert psi2Swidth:InterpolationWidths 582 3.2905635e-07 insert psi2Swidth:InterpolationWidths 583 3.2908959e-07 insert psi2Swidth:InterpolationWidths 584 3.2912284e-07 insert psi2Swidth:InterpolationWidths 585 3.2915608e-07 insert psi2Swidth:InterpolationWidths 586 3.2739706e-07 insert psi2Swidth:InterpolationWidths 587 3.2743019e-07 insert psi2Swidth:InterpolationWidths 588 3.2746333e-07 insert psi2Swidth:InterpolationWidths 589 3.2749647e-07 insert psi2Swidth:InterpolationWidths 590 3.2752961e-07 insert psi2Swidth:InterpolationWidths 591 3.2756275e-07 insert psi2Swidth:InterpolationWidths 592 3.275959e-07 insert psi2Swidth:InterpolationWidths 593 3.2762904e-07 insert psi2Swidth:InterpolationWidths 594 3.2766219e-07 insert psi2Swidth:InterpolationWidths 595 3.2769534e-07 insert psi2Swidth:InterpolationWidths 596 3.2772849e-07 insert psi2Swidth:InterpolationWidths 597 3.2776165e-07 insert psi2Swidth:InterpolationWidths 598 3.2779481e-07 insert psi2Swidth:InterpolationWidths 599 3.2782797e-07 insert psi2Swidth:InterpolationWidths 600 3.2786113e-07 insert psi2Swidth:InterpolationWidths 601 3.2789429e-07 insert psi2Swidth:InterpolationWidths 602 3.2792746e-07 insert psi2Swidth:InterpolationWidths 603 3.2796062e-07 insert psi2Swidth:InterpolationWidths 604 3.2799379e-07 insert psi2Swidth:InterpolationWidths 605 3.2802697e-07 insert psi2Swidth:InterpolationWidths 606 3.2806014e-07 insert psi2Swidth:InterpolationWidths 607 3.2809332e-07 insert psi2Swidth:InterpolationWidths 608 3.2812649e-07 insert psi2Swidth:InterpolationWidths 609 3.2815967e-07 insert psi2Swidth:InterpolationWidths 610 3.2819286e-07 insert psi2Swidth:InterpolationWidths 611 3.2822604e-07 insert psi2Swidth:InterpolationWidths 612 3.2825923e-07 insert psi2Swidth:InterpolationWidths 613 3.2829242e-07 insert psi2Swidth:InterpolationWidths 614 3.2832561e-07 insert psi2Swidth:InterpolationWidths 615 3.283588e-07 insert psi2Swidth:InterpolationWidths 616 3.28392e-07 insert psi2Swidth:InterpolationWidths 617 3.284252e-07 insert psi2Swidth:InterpolationWidths 618 3.2845839e-07 insert psi2Swidth:InterpolationWidths 619 3.284916e-07 insert psi2Swidth:InterpolationWidths 620 3.285248e-07 insert psi2Swidth:InterpolationWidths 621 3.2855801e-07 insert psi2Swidth:InterpolationWidths 622 3.2859121e-07 insert psi2Swidth:InterpolationWidths 623 3.2862443e-07 insert psi2Swidth:InterpolationWidths 624 3.2865764e-07 insert psi2Swidth:InterpolationWidths 625 3.2869085e-07 insert psi2Swidth:InterpolationWidths 626 3.2872407e-07 insert psi2Swidth:InterpolationWidths 627 3.2875729e-07 insert psi2Swidth:InterpolationWidths 628 3.2879051e-07 insert psi2Swidth:InterpolationWidths 629 3.2882373e-07 insert psi2Swidth:InterpolationWidths 630 3.2885696e-07 insert psi2Swidth:InterpolationWidths 631 3.2889018e-07 insert psi2Swidth:InterpolationWidths 632 3.2892341e-07 insert psi2Swidth:InterpolationWidths 633 3.2895665e-07 insert psi2Swidth:InterpolationWidths 634 3.2898988e-07 insert psi2Swidth:InterpolationWidths 635 3.2902312e-07 insert psi2Swidth:InterpolationWidths 636 3.2905635e-07 insert psi2Swidth:InterpolationWidths 637 3.2908959e-07 insert psi2Swidth:InterpolationWidths 638 3.2912284e-07 insert psi2Swidth:InterpolationWidths 639 3.2915608e-07 insert psi2Swidth:InterpolationWidths 640 1.0088549e-07 insert psi2Swidth:InterpolationWidths 641 1.008953e-07 insert psi2Swidth:InterpolationWidths 642 1.0090512e-07 insert psi2Swidth:InterpolationWidths 643 1.0091493e-07 insert psi2Swidth:InterpolationWidths 644 1.0092474e-07 insert psi2Swidth:InterpolationWidths 645 1.0093456e-07 insert psi2Swidth:InterpolationWidths 646 1.0094437e-07 insert psi2Swidth:InterpolationWidths 647 1.0095419e-07 insert psi2Swidth:InterpolationWidths 648 1.0096401e-07 insert psi2Swidth:InterpolationWidths 649 1.0097382e-07 insert psi2Swidth:InterpolationWidths 650 1.0098364e-07 insert psi2Swidth:InterpolationWidths 651 1.0099346e-07 insert psi2Swidth:InterpolationWidths 652 1.0100328e-07 insert psi2Swidth:InterpolationWidths 653 1.010131e-07 insert psi2Swidth:InterpolationWidths 654 1.0102292e-07 insert psi2Swidth:InterpolationWidths 655 1.0103274e-07 insert psi2Swidth:InterpolationWidths 656 1.0104256e-07 insert psi2Swidth:InterpolationWidths 657 1.0105239e-07 insert psi2Swidth:InterpolationWidths 658 1.0106221e-07 insert psi2Swidth:InterpolationWidths 659 1.0107203e-07 insert psi2Swidth:InterpolationWidths 660 1.0108186e-07 insert psi2Swidth:InterpolationWidths 661 1.0109168e-07 insert psi2Swidth:InterpolationWidths 662 1.0110151e-07 insert psi2Swidth:InterpolationWidths 663 1.0111133e-07 insert psi2Swidth:InterpolationWidths 664 1.0112116e-07 insert psi2Swidth:InterpolationWidths 665 1.0113099e-07 insert psi2Swidth:InterpolationWidths 666 1.0114082e-07 insert psi2Swidth:InterpolationWidths 667 1.0115064e-07 insert psi2Swidth:InterpolationWidths 668 1.0116047e-07 insert psi2Swidth:InterpolationWidths 669 1.011703e-07 insert psi2Swidth:InterpolationWidths 670 1.0118013e-07 insert psi2Swidth:InterpolationWidths 671 1.0118996e-07 insert psi2Swidth:InterpolationWidths 672 1.011998e-07 insert psi2Swidth:InterpolationWidths 673 1.0120963e-07 insert psi2Swidth:InterpolationWidths 674 1.0121946e-07 insert psi2Swidth:InterpolationWidths 675 1.012293e-07 insert psi2Swidth:InterpolationWidths 676 1.0123913e-07 insert psi2Swidth:InterpolationWidths 677 1.0124896e-07 insert psi2Swidth:InterpolationWidths 678 1.012588e-07 insert psi2Swidth:InterpolationWidths 679 1.0126864e-07 insert psi2Swidth:InterpolationWidths 680 1.0127847e-07 insert psi2Swidth:InterpolationWidths 681 1.0128831e-07 insert psi2Swidth:InterpolationWidths 682 1.0129815e-07 insert psi2Swidth:InterpolationWidths 683 1.0130799e-07 insert psi2Swidth:InterpolationWidths 684 1.0131783e-07 insert psi2Swidth:InterpolationWidths 685 1.0132767e-07 insert psi2Swidth:InterpolationWidths 686 1.0133751e-07 insert psi2Swidth:InterpolationWidths 687 1.0134735e-07 insert psi2Swidth:InterpolationWidths 688 1.0135719e-07 insert psi2Swidth:InterpolationWidths 689 1.0136703e-07 insert psi2Swidth:InterpolationWidths 690 1.0137687e-07 insert psi2Swidth:InterpolationWidths 691 1.0138672e-07 insert psi2Swidth:InterpolationWidths 692 1.0139656e-07 insert psi2Swidth:InterpolationWidths 693 1.0140641e-07 insert psi2Swidth:InterpolationWidths 694 1.0088549e-07 insert psi2Swidth:InterpolationWidths 695 1.008953e-07 insert psi2Swidth:InterpolationWidths 696 1.0090512e-07 insert psi2Swidth:InterpolationWidths 697 1.0091493e-07 insert psi2Swidth:InterpolationWidths 698 1.0092474e-07 insert psi2Swidth:InterpolationWidths 699 1.0093456e-07 insert psi2Swidth:InterpolationWidths 700 1.0094437e-07 insert psi2Swidth:InterpolationWidths 701 1.0095419e-07 insert psi2Swidth:InterpolationWidths 702 1.0096401e-07 insert psi2Swidth:InterpolationWidths 703 1.0097382e-07 insert psi2Swidth:InterpolationWidths 704 1.0098364e-07 insert psi2Swidth:InterpolationWidths 705 1.0099346e-07 insert psi2Swidth:InterpolationWidths 706 1.0100328e-07 insert psi2Swidth:InterpolationWidths 707 1.010131e-07 insert psi2Swidth:InterpolationWidths 708 1.0102292e-07 insert psi2Swidth:InterpolationWidths 709 1.0103274e-07 insert psi2Swidth:InterpolationWidths 710 1.0104256e-07 insert psi2Swidth:InterpolationWidths 711 1.0105239e-07 insert psi2Swidth:InterpolationWidths 712 1.0106221e-07 insert psi2Swidth:InterpolationWidths 713 1.0107203e-07 insert psi2Swidth:InterpolationWidths 714 1.0108186e-07 insert psi2Swidth:InterpolationWidths 715 1.0109168e-07 insert psi2Swidth:InterpolationWidths 716 1.0110151e-07 insert psi2Swidth:InterpolationWidths 717 1.0111133e-07 insert psi2Swidth:InterpolationWidths 718 1.0112116e-07 insert psi2Swidth:InterpolationWidths 719 1.0113099e-07 insert psi2Swidth:InterpolationWidths 720 1.0114082e-07 insert psi2Swidth:InterpolationWidths 721 1.0115064e-07 insert psi2Swidth:InterpolationWidths 722 1.0116047e-07 insert psi2Swidth:InterpolationWidths 723 1.011703e-07 insert psi2Swidth:InterpolationWidths 724 1.0118013e-07 insert psi2Swidth:InterpolationWidths 725 1.0118996e-07 insert psi2Swidth:InterpolationWidths 726 1.011998e-07 insert psi2Swidth:InterpolationWidths 727 1.0120963e-07 insert psi2Swidth:InterpolationWidths 728 1.0121946e-07 insert psi2Swidth:InterpolationWidths 729 1.012293e-07 insert psi2Swidth:InterpolationWidths 730 1.0123913e-07 insert psi2Swidth:InterpolationWidths 731 1.0124896e-07 insert psi2Swidth:InterpolationWidths 732 1.012588e-07 insert psi2Swidth:InterpolationWidths 733 1.0126864e-07 insert psi2Swidth:InterpolationWidths 734 1.0127847e-07 insert psi2Swidth:InterpolationWidths 735 1.0128831e-07 insert psi2Swidth:InterpolationWidths 736 1.0129815e-07 insert psi2Swidth:InterpolationWidths 737 1.0130799e-07 insert psi2Swidth:InterpolationWidths 738 1.0131783e-07 insert psi2Swidth:InterpolationWidths 739 1.0132767e-07 insert psi2Swidth:InterpolationWidths 740 1.0133751e-07 insert psi2Swidth:InterpolationWidths 741 1.0134735e-07 insert psi2Swidth:InterpolationWidths 742 1.0135719e-07 insert psi2Swidth:InterpolationWidths 743 1.0136703e-07 insert psi2Swidth:InterpolationWidths 744 1.0137687e-07 insert psi2Swidth:InterpolationWidths 745 1.0138672e-07 insert psi2Swidth:InterpolationWidths 746 1.0139656e-07 insert psi2Swidth:InterpolationWidths 747 1.0140641e-07 insert psi2Swidth:InterpolationWidths 748 1.0093156e-07 insert psi2Swidth:InterpolationWidths 749 1.0094137e-07 insert psi2Swidth:InterpolationWidths 750 1.0095119e-07 insert psi2Swidth:InterpolationWidths 751 1.00961e-07 insert psi2Swidth:InterpolationWidths 752 1.0097082e-07 insert psi2Swidth:InterpolationWidths 753 1.0098064e-07 insert psi2Swidth:InterpolationWidths 754 1.0099046e-07 insert psi2Swidth:InterpolationWidths 755 1.0100028e-07 insert psi2Swidth:InterpolationWidths 756 1.0101009e-07 insert psi2Swidth:InterpolationWidths 757 1.0101991e-07 insert psi2Swidth:InterpolationWidths 758 1.0102973e-07 insert psi2Swidth:InterpolationWidths 759 1.0103956e-07 insert psi2Swidth:InterpolationWidths 760 1.0104938e-07 insert psi2Swidth:InterpolationWidths 761 1.010592e-07 insert psi2Swidth:InterpolationWidths 762 1.0106902e-07 insert psi2Swidth:InterpolationWidths 763 1.0107885e-07 insert psi2Swidth:InterpolationWidths 764 1.0108867e-07 insert psi2Swidth:InterpolationWidths 765 1.0109849e-07 insert psi2Swidth:InterpolationWidths 766 1.0110832e-07 insert psi2Swidth:InterpolationWidths 767 1.0111815e-07 insert psi2Swidth:InterpolationWidths 768 1.0112797e-07 insert psi2Swidth:InterpolationWidths 769 1.011378e-07 insert psi2Swidth:InterpolationWidths 770 1.0114763e-07 insert psi2Swidth:InterpolationWidths 771 1.0115746e-07 insert psi2Swidth:InterpolationWidths 772 1.0116729e-07 insert psi2Swidth:InterpolationWidths 773 1.0117712e-07 insert psi2Swidth:InterpolationWidths 774 1.0118695e-07 insert psi2Swidth:InterpolationWidths 775 1.0119678e-07 insert psi2Swidth:InterpolationWidths 776 1.0120661e-07 insert psi2Swidth:InterpolationWidths 777 1.0121644e-07 insert psi2Swidth:InterpolationWidths 778 1.0122627e-07 insert psi2Swidth:InterpolationWidths 779 1.0123611e-07 insert psi2Swidth:InterpolationWidths 780 1.0124594e-07 insert psi2Swidth:InterpolationWidths 781 1.0125578e-07 insert psi2Swidth:InterpolationWidths 782 1.0126561e-07 insert psi2Swidth:InterpolationWidths 783 1.0127545e-07 insert psi2Swidth:InterpolationWidths 784 1.0128528e-07 insert psi2Swidth:InterpolationWidths 785 1.0129512e-07 insert psi2Swidth:InterpolationWidths 786 1.0130496e-07 insert psi2Swidth:InterpolationWidths 787 1.013148e-07 insert psi2Swidth:InterpolationWidths 788 1.0132464e-07 insert psi2Swidth:InterpolationWidths 789 1.0133448e-07 insert psi2Swidth:InterpolationWidths 790 1.0134432e-07 insert psi2Swidth:InterpolationWidths 791 1.0135416e-07 insert psi2Swidth:InterpolationWidths 792 1.01364e-07 insert psi2Swidth:InterpolationWidths 793 1.0137384e-07 insert psi2Swidth:InterpolationWidths 794 1.0138368e-07 insert psi2Swidth:InterpolationWidths 795 1.0139353e-07 insert psi2Swidth:InterpolationWidths 796 1.0140337e-07 insert psi2Swidth:InterpolationWidths 797 1.0141322e-07 insert psi2Swidth:InterpolationWidths 798 1.0142306e-07 insert psi2Swidth:InterpolationWidths 799 1.0143291e-07 insert psi2Swidth:InterpolationWidths 800 1.0144275e-07 insert psi2Swidth:InterpolationWidths 801 1.014526e-07 insert psi2Swidth:InterpolationWidths 802 2.9663149e-05 insert psi2Swidth:InterpolationWidths 803 2.9706931e-05 insert psi2Swidth:InterpolationWidths 804 2.9750755e-05 insert psi2Swidth:InterpolationWidths 805 2.9794621e-05 insert psi2Swidth:InterpolationWidths 806 2.9838529e-05 insert psi2Swidth:InterpolationWidths 807 2.9882478e-05 insert psi2Swidth:InterpolationWidths 808 2.9926469e-05 insert psi2Swidth:InterpolationWidths 809 2.9970502e-05 insert psi2Swidth:InterpolationWidths 810 3.0014577e-05 insert psi2Swidth:InterpolationWidths 811 3.0058694e-05 insert psi2Swidth:InterpolationWidths 812 3.0102852e-05 insert psi2Swidth:InterpolationWidths 813 3.0147053e-05 insert psi2Swidth:InterpolationWidths 814 3.0191295e-05 insert psi2Swidth:InterpolationWidths 815 3.023558e-05 insert psi2Swidth:InterpolationWidths 816 3.0279906e-05 insert psi2Swidth:InterpolationWidths 817 3.0324275e-05 insert psi2Swidth:InterpolationWidths 818 3.0368685e-05 insert psi2Swidth:InterpolationWidths 819 3.0413137e-05 insert psi2Swidth:InterpolationWidths 820 3.0457632e-05 insert psi2Swidth:InterpolationWidths 821 3.0502168e-05 insert psi2Swidth:InterpolationWidths 822 3.0546747e-05 insert psi2Swidth:InterpolationWidths 823 3.0591367e-05 insert psi2Swidth:InterpolationWidths 824 3.063603e-05 insert psi2Swidth:InterpolationWidths 825 3.0680735e-05 insert psi2Swidth:InterpolationWidths 826 3.0725482e-05 insert psi2Swidth:InterpolationWidths 827 3.0770271e-05 insert psi2Swidth:InterpolationWidths 828 3.0815102e-05 insert psi2Swidth:InterpolationWidths 829 3.0859975e-05 insert psi2Swidth:InterpolationWidths 830 3.0904891e-05 insert psi2Swidth:InterpolationWidths 831 3.0949849e-05 insert psi2Swidth:InterpolationWidths 832 3.0994849e-05 insert psi2Swidth:InterpolationWidths 833 3.1039891e-05 insert psi2Swidth:InterpolationWidths 834 3.1084976e-05 insert psi2Swidth:InterpolationWidths 835 3.1130103e-05 insert psi2Swidth:InterpolationWidths 836 3.1175272e-05 insert psi2Swidth:InterpolationWidths 837 3.1220483e-05 insert psi2Swidth:InterpolationWidths 838 3.1265737e-05 insert psi2Swidth:InterpolationWidths 839 3.1311033e-05 insert psi2Swidth:InterpolationWidths 840 3.1356372e-05 insert psi2Swidth:InterpolationWidths 841 3.1401753e-05 insert psi2Swidth:InterpolationWidths 842 3.1447176e-05 insert psi2Swidth:InterpolationWidths 843 3.1492642e-05 insert psi2Swidth:InterpolationWidths 844 3.153815e-05 insert psi2Swidth:InterpolationWidths 845 3.1583701e-05 insert psi2Swidth:InterpolationWidths 846 3.1629294e-05 insert psi2Swidth:InterpolationWidths 847 3.167493e-05 insert psi2Swidth:InterpolationWidths 848 3.1720608e-05 insert psi2Swidth:InterpolationWidths 849 3.1766328e-05 insert psi2Swidth:InterpolationWidths 850 3.1812091e-05 insert psi2Swidth:InterpolationWidths 851 3.1857897e-05 insert psi2Swidth:InterpolationWidths 852 3.1903745e-05 insert psi2Swidth:InterpolationWidths 853 3.1949636e-05 insert psi2Swidth:InterpolationWidths 854 3.199557e-05 insert psi2Swidth:InterpolationWidths 855 3.2041546e-05 insert psi2Swidth:InterpolationWidths 856 4.9943136e-08 insert psi2Swidth:InterpolationWidths 857 4.9949545e-08 insert psi2Swidth:InterpolationWidths 858 4.9955955e-08 insert psi2Swidth:InterpolationWidths 859 4.9962365e-08 insert psi2Swidth:InterpolationWidths 860 4.9968776e-08 insert psi2Swidth:InterpolationWidths 861 4.9975187e-08 insert psi2Swidth:InterpolationWidths 862 4.9981598e-08 insert psi2Swidth:InterpolationWidths 863 4.998801e-08 insert psi2Swidth:InterpolationWidths 864 4.9994423e-08 insert psi2Swidth:InterpolationWidths 865 5.0000836e-08 insert psi2Swidth:InterpolationWidths 866 5.000725e-08 insert psi2Swidth:InterpolationWidths 867 5.0013664e-08 insert psi2Swidth:InterpolationWidths 868 5.0020079e-08 insert psi2Swidth:InterpolationWidths 869 5.0026494e-08 insert psi2Swidth:InterpolationWidths 870 5.003291e-08 insert psi2Swidth:InterpolationWidths 871 5.0039326e-08 insert psi2Swidth:InterpolationWidths 872 5.0045743e-08 insert psi2Swidth:InterpolationWidths 873 5.005216e-08 insert psi2Swidth:InterpolationWidths 874 5.0058578e-08 insert psi2Swidth:InterpolationWidths 875 5.0064996e-08 insert psi2Swidth:InterpolationWidths 876 5.0071415e-08 insert psi2Swidth:InterpolationWidths 877 5.0077834e-08 insert psi2Swidth:InterpolationWidths 878 5.0084254e-08 insert psi2Swidth:InterpolationWidths 879 5.0090675e-08 insert psi2Swidth:InterpolationWidths 880 5.0097096e-08 insert psi2Swidth:InterpolationWidths 881 5.0103517e-08 insert psi2Swidth:InterpolationWidths 882 5.0109939e-08 insert psi2Swidth:InterpolationWidths 883 5.0116361e-08 insert psi2Swidth:InterpolationWidths 884 5.0122784e-08 insert psi2Swidth:InterpolationWidths 885 5.0129208e-08 insert psi2Swidth:InterpolationWidths 886 5.0135632e-08 insert psi2Swidth:InterpolationWidths 887 5.0142057e-08 insert psi2Swidth:InterpolationWidths 888 5.0148482e-08 insert psi2Swidth:InterpolationWidths 889 5.0154907e-08 insert psi2Swidth:InterpolationWidths 890 5.0161333e-08 insert psi2Swidth:InterpolationWidths 891 5.016776e-08 insert psi2Swidth:InterpolationWidths 892 5.0174187e-08 insert psi2Swidth:InterpolationWidths 893 5.0180615e-08 insert psi2Swidth:InterpolationWidths 894 5.0187043e-08 insert psi2Swidth:InterpolationWidths 895 5.0193472e-08 insert psi2Swidth:InterpolationWidths 896 5.0199901e-08 insert psi2Swidth:InterpolationWidths 897 5.0206331e-08 insert psi2Swidth:InterpolationWidths 898 5.0212761e-08 insert psi2Swidth:InterpolationWidths 899 5.0219192e-08 insert psi2Swidth:InterpolationWidths 900 5.0225623e-08 insert psi2Swidth:InterpolationWidths 901 5.0232055e-08 insert psi2Swidth:InterpolationWidths 902 5.0238487e-08 insert psi2Swidth:InterpolationWidths 903 5.024492e-08 insert psi2Swidth:InterpolationWidths 904 5.0251353e-08 insert psi2Swidth:InterpolationWidths 905 5.0257787e-08 insert psi2Swidth:InterpolationWidths 906 5.0264222e-08 insert psi2Swidth:InterpolationWidths 907 5.0270657e-08 insert psi2Swidth:InterpolationWidths 908 5.0277092e-08 insert psi2Swidth:InterpolationWidths 909 5.0283528e-08 insert psi2Swidth:InterpolationWidths 910 1.10667e-08 insert psi2Swidth:InterpolationWidths 911 1.1068301e-08 insert psi2Swidth:InterpolationWidths 912 1.1069903e-08 insert psi2Swidth:InterpolationWidths 913 1.1071505e-08 insert psi2Swidth:InterpolationWidths 914 1.1073107e-08 insert psi2Swidth:InterpolationWidths 915 1.1074709e-08 insert psi2Swidth:InterpolationWidths 916 1.1076311e-08 insert psi2Swidth:InterpolationWidths 917 1.1077913e-08 insert psi2Swidth:InterpolationWidths 918 1.1079516e-08 insert psi2Swidth:InterpolationWidths 919 1.1081118e-08 insert psi2Swidth:InterpolationWidths 920 1.1082721e-08 insert psi2Swidth:InterpolationWidths 921 1.1084324e-08 insert psi2Swidth:InterpolationWidths 922 1.1085927e-08 insert psi2Swidth:InterpolationWidths 923 1.108753e-08 insert psi2Swidth:InterpolationWidths 924 1.1089133e-08 insert psi2Swidth:InterpolationWidths 925 1.1090737e-08 insert psi2Swidth:InterpolationWidths 926 1.109234e-08 insert psi2Swidth:InterpolationWidths 927 1.1093944e-08 insert psi2Swidth:InterpolationWidths 928 1.1095548e-08 insert psi2Swidth:InterpolationWidths 929 1.1097152e-08 insert psi2Swidth:InterpolationWidths 930 1.1098756e-08 insert psi2Swidth:InterpolationWidths 931 1.110036e-08 insert psi2Swidth:InterpolationWidths 932 1.1101965e-08 insert psi2Swidth:InterpolationWidths 933 1.1103569e-08 insert psi2Swidth:InterpolationWidths 934 1.1105174e-08 insert psi2Swidth:InterpolationWidths 935 1.1106779e-08 insert psi2Swidth:InterpolationWidths 936 1.1108384e-08 insert psi2Swidth:InterpolationWidths 937 1.1109989e-08 insert psi2Swidth:InterpolationWidths 938 1.1111594e-08 insert psi2Swidth:InterpolationWidths 939 1.1113199e-08 insert psi2Swidth:InterpolationWidths 940 1.1114805e-08 insert psi2Swidth:InterpolationWidths 941 1.111641e-08 insert psi2Swidth:InterpolationWidths 942 1.1118016e-08 insert psi2Swidth:InterpolationWidths 943 1.1119622e-08 insert psi2Swidth:InterpolationWidths 944 1.1121228e-08 insert psi2Swidth:InterpolationWidths 945 1.1122834e-08 insert psi2Swidth:InterpolationWidths 946 1.112444e-08 insert psi2Swidth:InterpolationWidths 947 1.1126047e-08 insert psi2Swidth:InterpolationWidths 948 1.1127654e-08 insert psi2Swidth:InterpolationWidths 949 1.112926e-08 insert psi2Swidth:InterpolationWidths 950 1.1130867e-08 insert psi2Swidth:InterpolationWidths 951 1.1132474e-08 insert psi2Swidth:InterpolationWidths 952 1.1134081e-08 insert psi2Swidth:InterpolationWidths 953 1.1135688e-08 insert psi2Swidth:InterpolationWidths 954 1.1137296e-08 insert psi2Swidth:InterpolationWidths 955 1.1138903e-08 insert psi2Swidth:InterpolationWidths 956 1.1140511e-08 insert psi2Swidth:InterpolationWidths 957 1.1142119e-08 insert psi2Swidth:InterpolationWidths 958 1.1143727e-08 insert psi2Swidth:InterpolationWidths 959 1.1145335e-08 insert psi2Swidth:InterpolationWidths 960 1.1146943e-08 insert psi2Swidth:InterpolationWidths 961 1.1148552e-08 insert psi2Swidth:InterpolationWidths 962 1.115016e-08 insert psi2Swidth:InterpolationWidths 963 1.1151769e-08 insert psi2Swidth:InterpolationWidths 964 6.517185e-09 insert psi2Swidth:InterpolationWidths 965 6.5181416e-09 insert psi2Swidth:InterpolationWidths 966 6.5190982e-09 insert psi2Swidth:InterpolationWidths 967 6.520055e-09 insert psi2Swidth:InterpolationWidths 968 6.5210118e-09 insert psi2Swidth:InterpolationWidths 969 6.5219688e-09 insert psi2Swidth:InterpolationWidths 970 6.5229258e-09 insert psi2Swidth:InterpolationWidths 971 6.5238829e-09 insert psi2Swidth:InterpolationWidths 972 6.52484e-09 insert psi2Swidth:InterpolationWidths 973 6.5257973e-09 insert psi2Swidth:InterpolationWidths 974 6.5267546e-09 insert psi2Swidth:InterpolationWidths 975 6.527712e-09 insert psi2Swidth:InterpolationWidths 976 6.5286695e-09 insert psi2Swidth:InterpolationWidths 977 6.5296271e-09 insert psi2Swidth:InterpolationWidths 978 6.5305848e-09 insert psi2Swidth:InterpolationWidths 979 6.5315425e-09 insert psi2Swidth:InterpolationWidths 980 6.5325004e-09 insert psi2Swidth:InterpolationWidths 981 6.5334583e-09 insert psi2Swidth:InterpolationWidths 982 6.5344163e-09 insert psi2Swidth:InterpolationWidths 983 6.5353743e-09 insert psi2Swidth:InterpolationWidths 984 6.5363325e-09 insert psi2Swidth:InterpolationWidths 985 6.5372908e-09 insert psi2Swidth:InterpolationWidths 986 6.5382491e-09 insert psi2Swidth:InterpolationWidths 987 6.5392075e-09 insert psi2Swidth:InterpolationWidths 988 6.540166e-09 insert psi2Swidth:InterpolationWidths 989 6.5411246e-09 insert psi2Swidth:InterpolationWidths 990 6.5420832e-09 insert psi2Swidth:InterpolationWidths 991 6.543042e-09 insert psi2Swidth:InterpolationWidths 992 6.5440008e-09 insert psi2Swidth:InterpolationWidths 993 6.5449597e-09 insert psi2Swidth:InterpolationWidths 994 6.5459187e-09 insert psi2Swidth:InterpolationWidths 995 6.5468778e-09 insert psi2Swidth:InterpolationWidths 996 6.5478369e-09 insert psi2Swidth:InterpolationWidths 997 6.5487962e-09 insert psi2Swidth:InterpolationWidths 998 6.5497555e-09 insert psi2Swidth:InterpolationWidths 999 6.5507149e-09 insert psi2Swidth:InterpolationWidths 1000 6.5516744e-09 insert psi2Swidth:InterpolationWidths 1001 6.5526339e-09 insert psi2Swidth:InterpolationWidths 1002 6.5535936e-09 insert psi2Swidth:InterpolationWidths 1003 6.5545533e-09 insert psi2Swidth:InterpolationWidths 1004 6.5555132e-09 insert psi2Swidth:InterpolationWidths 1005 6.5564731e-09 insert psi2Swidth:InterpolationWidths 1006 6.557433e-09 insert psi2Swidth:InterpolationWidths 1007 6.5583931e-09 insert psi2Swidth:InterpolationWidths 1008 6.5593533e-09 insert psi2Swidth:InterpolationWidths 1009 6.5603135e-09 insert psi2Swidth:InterpolationWidths 1010 6.5612738e-09 insert psi2Swidth:InterpolationWidths 1011 6.5622342e-09 insert psi2Swidth:InterpolationWidths 1012 6.5631947e-09 insert psi2Swidth:InterpolationWidths 1013 6.5641553e-09 insert psi2Swidth:InterpolationWidths 1014 6.5651159e-09 insert psi2Swidth:InterpolationWidths 1015 6.5660766e-09 insert psi2Swidth:InterpolationWidths 1016 6.5670374e-09 insert psi2Swidth:InterpolationWidths 1017 6.5679983e-09 insert psi2Swidth:InterpolationWidths 1018 7.1432847e-09 insert psi2Swidth:InterpolationWidths 1019 7.1442204e-09 insert psi2Swidth:InterpolationWidths 1020 7.1451561e-09 insert psi2Swidth:InterpolationWidths 1021 7.1460919e-09 insert psi2Swidth:InterpolationWidths 1022 7.1470278e-09 insert psi2Swidth:InterpolationWidths 1023 7.1479637e-09 insert psi2Swidth:InterpolationWidths 1024 7.1488998e-09 insert psi2Swidth:InterpolationWidths 1025 7.1498359e-09 insert psi2Swidth:InterpolationWidths 1026 7.1507721e-09 insert psi2Swidth:InterpolationWidths 1027 7.1517083e-09 insert psi2Swidth:InterpolationWidths 1028 7.1526446e-09 insert psi2Swidth:InterpolationWidths 1029 7.1535811e-09 insert psi2Swidth:InterpolationWidths 1030 7.1545175e-09 insert psi2Swidth:InterpolationWidths 1031 7.1554541e-09 insert psi2Swidth:InterpolationWidths 1032 7.1563908e-09 insert psi2Swidth:InterpolationWidths 1033 7.1573275e-09 insert psi2Swidth:InterpolationWidths 1034 7.1582643e-09 insert psi2Swidth:InterpolationWidths 1035 7.1592011e-09 insert psi2Swidth:InterpolationWidths 1036 7.1601381e-09 insert psi2Swidth:InterpolationWidths 1037 7.1610751e-09 insert psi2Swidth:InterpolationWidths 1038 7.1620122e-09 insert psi2Swidth:InterpolationWidths 1039 7.1629494e-09 insert psi2Swidth:InterpolationWidths 1040 7.1638866e-09 insert psi2Swidth:InterpolationWidths 1041 7.1648239e-09 insert psi2Swidth:InterpolationWidths 1042 7.1657613e-09 insert psi2Swidth:InterpolationWidths 1043 7.1666988e-09 insert psi2Swidth:InterpolationWidths 1044 7.1676364e-09 insert psi2Swidth:InterpolationWidths 1045 7.168574e-09 insert psi2Swidth:InterpolationWidths 1046 7.1695117e-09 insert psi2Swidth:InterpolationWidths 1047 7.1704495e-09 insert psi2Swidth:InterpolationWidths 1048 7.1713874e-09 insert psi2Swidth:InterpolationWidths 1049 7.1723253e-09 insert psi2Swidth:InterpolationWidths 1050 7.1732633e-09 insert psi2Swidth:InterpolationWidths 1051 7.1742014e-09 insert psi2Swidth:InterpolationWidths 1052 7.1751395e-09 insert psi2Swidth:InterpolationWidths 1053 7.1760778e-09 insert psi2Swidth:InterpolationWidths 1054 7.1770161e-09 insert psi2Swidth:InterpolationWidths 1055 7.1779545e-09 insert psi2Swidth:InterpolationWidths 1056 7.178893e-09 insert psi2Swidth:InterpolationWidths 1057 7.1798315e-09 insert psi2Swidth:InterpolationWidths 1058 7.1807701e-09 insert psi2Swidth:InterpolationWidths 1059 7.1817088e-09 insert psi2Swidth:InterpolationWidths 1060 7.1826476e-09 insert psi2Swidth:InterpolationWidths 1061 7.1835864e-09 insert psi2Swidth:InterpolationWidths 1062 7.1845254e-09 insert psi2Swidth:InterpolationWidths 1063 7.1854644e-09 insert psi2Swidth:InterpolationWidths 1064 7.1864034e-09 insert psi2Swidth:InterpolationWidths 1065 7.1873426e-09 insert psi2Swidth:InterpolationWidths 1066 7.1882818e-09 insert psi2Swidth:InterpolationWidths 1067 7.1892211e-09 insert psi2Swidth:InterpolationWidths 1068 7.1901605e-09 insert psi2Swidth:InterpolationWidths 1069 7.1911e-09 insert psi2Swidth:InterpolationWidths 1070 7.1920395e-09 insert psi2Swidth:InterpolationWidths 1071 7.1929791e-09 insert psi2Swidth:InterpolationWidths 1072 8.5997607e-07 insert psi2Swidth:InterpolationWidths 1073 8.604357e-07 insert psi2Swidth:InterpolationWidths 1074 8.6089548e-07 insert psi2Swidth:InterpolationWidths 1075 8.6135541e-07 insert psi2Swidth:InterpolationWidths 1076 8.618155e-07 insert psi2Swidth:InterpolationWidths 1077 8.6227573e-07 insert psi2Swidth:InterpolationWidths 1078 8.6273612e-07 insert psi2Swidth:InterpolationWidths 1079 8.6319666e-07 insert psi2Swidth:InterpolationWidths 1080 8.6365735e-07 insert psi2Swidth:InterpolationWidths 1081 8.6411819e-07 insert psi2Swidth:InterpolationWidths 1082 8.6457918e-07 insert psi2Swidth:InterpolationWidths 1083 8.6504032e-07 insert psi2Swidth:InterpolationWidths 1084 8.6550161e-07 insert psi2Swidth:InterpolationWidths 1085 8.6596306e-07 insert psi2Swidth:InterpolationWidths 1086 8.6642465e-07 insert psi2Swidth:InterpolationWidths 1087 8.668864e-07 insert psi2Swidth:InterpolationWidths 1088 8.673483e-07 insert psi2Swidth:InterpolationWidths 1089 8.6781034e-07 insert psi2Swidth:InterpolationWidths 1090 8.6827254e-07 insert psi2Swidth:InterpolationWidths 1091 8.687349e-07 insert psi2Swidth:InterpolationWidths 1092 8.691974e-07 insert psi2Swidth:InterpolationWidths 1093 8.6966005e-07 insert psi2Swidth:InterpolationWidths 1094 8.7012286e-07 insert psi2Swidth:InterpolationWidths 1095 8.7058581e-07 insert psi2Swidth:InterpolationWidths 1096 8.7104892e-07 insert psi2Swidth:InterpolationWidths 1097 8.7151218e-07 insert psi2Swidth:InterpolationWidths 1098 8.7197559e-07 insert psi2Swidth:InterpolationWidths 1099 8.7243915e-07 insert psi2Swidth:InterpolationWidths 1100 8.7290286e-07 insert psi2Swidth:InterpolationWidths 1101 8.7336672e-07 insert psi2Swidth:InterpolationWidths 1102 8.7383074e-07 insert psi2Swidth:InterpolationWidths 1103 8.7429491e-07 insert psi2Swidth:InterpolationWidths 1104 8.7475922e-07 insert psi2Swidth:InterpolationWidths 1105 8.7522369e-07 insert psi2Swidth:InterpolationWidths 1106 8.7568831e-07 insert psi2Swidth:InterpolationWidths 1107 8.7615309e-07 insert psi2Swidth:InterpolationWidths 1108 8.7661801e-07 insert psi2Swidth:InterpolationWidths 1109 8.7708309e-07 insert psi2Swidth:InterpolationWidths 1110 8.7754831e-07 insert psi2Swidth:InterpolationWidths 1111 8.7801369e-07 insert psi2Swidth:InterpolationWidths 1112 8.7847922e-07 insert psi2Swidth:InterpolationWidths 1113 8.789449e-07 insert psi2Swidth:InterpolationWidths 1114 8.7941074e-07 insert psi2Swidth:InterpolationWidths 1115 8.7987672e-07 insert psi2Swidth:InterpolationWidths 1116 8.8034286e-07 insert psi2Swidth:InterpolationWidths 1117 8.8080914e-07 insert psi2Swidth:InterpolationWidths 1118 8.8127558e-07 insert psi2Swidth:InterpolationWidths 1119 8.8174218e-07 insert psi2Swidth:InterpolationWidths 1120 8.8220892e-07 insert psi2Swidth:InterpolationWidths 1121 8.8267581e-07 insert psi2Swidth:InterpolationWidths 1122 8.8314286e-07 insert psi2Swidth:InterpolationWidths 1123 8.8361006e-07 insert psi2Swidth:InterpolationWidths 1124 8.8407741e-07 insert psi2Swidth:InterpolationWidths 1125 8.8454491e-07 insert psi2Swidth:InterpolationWidths 1126 3.3610055e-08 insert psi2Swidth:InterpolationWidths 1127 3.3615921e-08 insert psi2Swidth:InterpolationWidths 1128 3.3621789e-08 insert psi2Swidth:InterpolationWidths 1129 3.3627657e-08 insert psi2Swidth:InterpolationWidths 1130 3.3633526e-08 insert psi2Swidth:InterpolationWidths 1131 3.3639395e-08 insert psi2Swidth:InterpolationWidths 1132 3.3645265e-08 insert psi2Swidth:InterpolationWidths 1133 3.3651135e-08 insert psi2Swidth:InterpolationWidths 1134 3.3657006e-08 insert psi2Swidth:InterpolationWidths 1135 3.3662878e-08 insert psi2Swidth:InterpolationWidths 1136 3.366875e-08 insert psi2Swidth:InterpolationWidths 1137 3.3674623e-08 insert psi2Swidth:InterpolationWidths 1138 3.3680496e-08 insert psi2Swidth:InterpolationWidths 1139 3.3686371e-08 insert psi2Swidth:InterpolationWidths 1140 3.3692245e-08 insert psi2Swidth:InterpolationWidths 1141 3.3698121e-08 insert psi2Swidth:InterpolationWidths 1142 3.3703997e-08 insert psi2Swidth:InterpolationWidths 1143 3.3709873e-08 insert psi2Swidth:InterpolationWidths 1144 3.371575e-08 insert psi2Swidth:InterpolationWidths 1145 3.3721628e-08 insert psi2Swidth:InterpolationWidths 1146 3.3727506e-08 insert psi2Swidth:InterpolationWidths 1147 3.3733385e-08 insert psi2Swidth:InterpolationWidths 1148 3.3739265e-08 insert psi2Swidth:InterpolationWidths 1149 3.3745145e-08 insert psi2Swidth:InterpolationWidths 1150 3.3751026e-08 insert psi2Swidth:InterpolationWidths 1151 3.3756907e-08 insert psi2Swidth:InterpolationWidths 1152 3.3762789e-08 insert psi2Swidth:InterpolationWidths 1153 3.3768672e-08 insert psi2Swidth:InterpolationWidths 1154 3.3774555e-08 insert psi2Swidth:InterpolationWidths 1155 3.3780439e-08 insert psi2Swidth:InterpolationWidths 1156 3.3786324e-08 insert psi2Swidth:InterpolationWidths 1157 3.3792209e-08 insert psi2Swidth:InterpolationWidths 1158 3.3798094e-08 insert psi2Swidth:InterpolationWidths 1159 3.3803981e-08 insert psi2Swidth:InterpolationWidths 1160 3.3809868e-08 insert psi2Swidth:InterpolationWidths 1161 3.3815755e-08 insert psi2Swidth:InterpolationWidths 1162 3.3821643e-08 insert psi2Swidth:InterpolationWidths 1163 3.3827532e-08 insert psi2Swidth:InterpolationWidths 1164 3.3833421e-08 insert psi2Swidth:InterpolationWidths 1165 3.3839311e-08 insert psi2Swidth:InterpolationWidths 1166 3.3845202e-08 insert psi2Swidth:InterpolationWidths 1167 3.3851093e-08 insert psi2Swidth:InterpolationWidths 1168 3.3856985e-08 insert psi2Swidth:InterpolationWidths 1169 3.3862877e-08 insert psi2Swidth:InterpolationWidths 1170 3.386877e-08 insert psi2Swidth:InterpolationWidths 1171 3.3874664e-08 insert psi2Swidth:InterpolationWidths 1172 3.3880558e-08 insert psi2Swidth:InterpolationWidths 1173 3.3886453e-08 insert psi2Swidth:InterpolationWidths 1174 3.3892348e-08 insert psi2Swidth:InterpolationWidths 1175 3.3898244e-08 insert psi2Swidth:InterpolationWidths 1176 3.3904141e-08 insert psi2Swidth:InterpolationWidths 1177 3.3910038e-08 insert psi2Swidth:InterpolationWidths 1178 3.3915936e-08 insert psi2Swidth:InterpolationWidths 1179 3.3921835e-08 insert psi2Swidth:InterpolationWidths 1180 3.3591522e-08 insert psi2Swidth:InterpolationWidths 1181 3.3595483e-08 insert psi2Swidth:InterpolationWidths 1182 3.3599445e-08 insert psi2Swidth:InterpolationWidths 1183 3.3603407e-08 insert psi2Swidth:InterpolationWidths 1184 3.360737e-08 insert psi2Swidth:InterpolationWidths 1185 3.3611333e-08 insert psi2Swidth:InterpolationWidths 1186 3.3615296e-08 insert psi2Swidth:InterpolationWidths 1187 3.3619259e-08 insert psi2Swidth:InterpolationWidths 1188 3.3623223e-08 insert psi2Swidth:InterpolationWidths 1189 3.3627187e-08 insert psi2Swidth:InterpolationWidths 1190 3.3631151e-08 insert psi2Swidth:InterpolationWidths 1191 3.3635116e-08 insert psi2Swidth:InterpolationWidths 1192 3.363908e-08 insert psi2Swidth:InterpolationWidths 1193 3.3643045e-08 insert psi2Swidth:InterpolationWidths 1194 3.3647011e-08 insert psi2Swidth:InterpolationWidths 1195 3.3650976e-08 insert psi2Swidth:InterpolationWidths 1196 3.3654942e-08 insert psi2Swidth:InterpolationWidths 1197 3.3658909e-08 insert psi2Swidth:InterpolationWidths 1198 3.3662875e-08 insert psi2Swidth:InterpolationWidths 1199 3.3666842e-08 insert psi2Swidth:InterpolationWidths 1200 3.3670809e-08 insert psi2Swidth:InterpolationWidths 1201 3.3674776e-08 insert psi2Swidth:InterpolationWidths 1202 3.3678744e-08 insert psi2Swidth:InterpolationWidths 1203 3.3682712e-08 insert psi2Swidth:InterpolationWidths 1204 3.368668e-08 insert psi2Swidth:InterpolationWidths 1205 3.3690648e-08 insert psi2Swidth:InterpolationWidths 1206 3.3694617e-08 insert psi2Swidth:InterpolationWidths 1207 3.3698586e-08 insert psi2Swidth:InterpolationWidths 1208 3.3702556e-08 insert psi2Swidth:InterpolationWidths 1209 3.3706525e-08 insert psi2Swidth:InterpolationWidths 1210 3.3710495e-08 insert psi2Swidth:InterpolationWidths 1211 3.3714465e-08 insert psi2Swidth:InterpolationWidths 1212 3.3718436e-08 insert psi2Swidth:InterpolationWidths 1213 3.3722407e-08 insert psi2Swidth:InterpolationWidths 1214 3.3726378e-08 insert psi2Swidth:InterpolationWidths 1215 3.3730349e-08 insert psi2Swidth:InterpolationWidths 1216 3.3734321e-08 insert psi2Swidth:InterpolationWidths 1217 3.3738292e-08 insert psi2Swidth:InterpolationWidths 1218 3.3742265e-08 insert psi2Swidth:InterpolationWidths 1219 3.3746237e-08 insert psi2Swidth:InterpolationWidths 1220 3.375021e-08 insert psi2Swidth:InterpolationWidths 1221 3.3754183e-08 insert psi2Swidth:InterpolationWidths 1222 3.3758156e-08 insert psi2Swidth:InterpolationWidths 1223 3.376213e-08 insert psi2Swidth:InterpolationWidths 1224 3.3766104e-08 insert psi2Swidth:InterpolationWidths 1225 3.3770078e-08 insert psi2Swidth:InterpolationWidths 1226 3.3774052e-08 insert psi2Swidth:InterpolationWidths 1227 3.3778027e-08 insert psi2Swidth:InterpolationWidths 1228 3.3782002e-08 insert psi2Swidth:InterpolationWidths 1229 3.3785977e-08 insert psi2Swidth:InterpolationWidths 1230 3.3789953e-08 insert psi2Swidth:InterpolationWidths 1231 3.3793929e-08 insert psi2Swidth:InterpolationWidths 1232 3.3797905e-08 insert psi2Swidth:InterpolationWidths 1233 3.3801881e-08 insert psi2Swidth:InterpolationWidths 1234 3.1219062e-07 insert psi2Swidth:InterpolationWidths 1235 3.1325753e-07 insert psi2Swidth:InterpolationWidths 1236 3.1432166e-07 insert psi2Swidth:InterpolationWidths 1237 3.1538306e-07 insert psi2Swidth:InterpolationWidths 1238 3.1644174e-07 insert psi2Swidth:InterpolationWidths 1239 3.1749774e-07 insert psi2Swidth:InterpolationWidths 1240 3.1855107e-07 insert psi2Swidth:InterpolationWidths 1241 3.1960177e-07 insert psi2Swidth:InterpolationWidths 1242 3.2064987e-07 insert psi2Swidth:InterpolationWidths 1243 3.2169538e-07 insert psi2Swidth:InterpolationWidths 1244 3.2273834e-07 insert psi2Swidth:InterpolationWidths 1245 3.2377876e-07 insert psi2Swidth:InterpolationWidths 1246 3.2481668e-07 insert psi2Swidth:InterpolationWidths 1247 3.2585212e-07 insert psi2Swidth:InterpolationWidths 1248 3.2688509e-07 insert psi2Swidth:InterpolationWidths 1249 3.2791563e-07 insert psi2Swidth:InterpolationWidths 1250 3.2894376e-07 insert psi2Swidth:InterpolationWidths 1251 3.299695e-07 insert psi2Swidth:InterpolationWidths 1252 3.3099287e-07 insert psi2Swidth:InterpolationWidths 1253 3.320139e-07 insert psi2Swidth:InterpolationWidths 1254 3.330326e-07 insert psi2Swidth:InterpolationWidths 1255 3.34049e-07 insert psi2Swidth:InterpolationWidths 1256 3.3506312e-07 insert psi2Swidth:InterpolationWidths 1257 3.3607498e-07 insert psi2Swidth:InterpolationWidths 1258 3.370846e-07 insert psi2Swidth:InterpolationWidths 1259 3.38092e-07 insert psi2Swidth:InterpolationWidths 1260 3.390972e-07 insert psi2Swidth:InterpolationWidths 1261 3.4010022e-07 insert psi2Swidth:InterpolationWidths 1262 3.4110108e-07 insert psi2Swidth:InterpolationWidths 1263 3.420998e-07 insert psi2Swidth:InterpolationWidths 1264 3.430964e-07 insert psi2Swidth:InterpolationWidths 1265 3.4409089e-07 insert psi2Swidth:InterpolationWidths 1266 3.4508329e-07 insert psi2Swidth:InterpolationWidths 1267 3.4607363e-07 insert psi2Swidth:InterpolationWidths 1268 3.4706191e-07 insert psi2Swidth:InterpolationWidths 1269 3.4804817e-07 insert psi2Swidth:InterpolationWidths 1270 3.4903241e-07 insert psi2Swidth:InterpolationWidths 1271 3.5001465e-07 insert psi2Swidth:InterpolationWidths 1272 3.5099491e-07 insert psi2Swidth:InterpolationWidths 1273 3.519732e-07 insert psi2Swidth:InterpolationWidths 1274 3.5294955e-07 insert psi2Swidth:InterpolationWidths 1275 3.5392396e-07 insert psi2Swidth:InterpolationWidths 1276 3.5489646e-07 insert psi2Swidth:InterpolationWidths 1277 3.5586705e-07 insert psi2Swidth:InterpolationWidths 1278 3.5683576e-07 insert psi2Swidth:InterpolationWidths 1279 3.5780261e-07 insert psi2Swidth:InterpolationWidths 1280 3.5876759e-07 insert psi2Swidth:InterpolationWidths 1281 3.5973074e-07 insert psi2Swidth:InterpolationWidths 1282 3.6069207e-07 insert psi2Swidth:InterpolationWidths 1283 3.6165158e-07 insert psi2Swidth:InterpolationWidths 1284 3.626093e-07 insert psi2Swidth:InterpolationWidths 1285 3.6356524e-07 insert psi2Swidth:InterpolationWidths 1286 3.6451941e-07 insert psi2Swidth:InterpolationWidths 1287 3.6547182e-07 insert psi2Swidth:InterpolationWidths 1288 6.8655327e-09 insert psi2Swidth:InterpolationWidths 1289 6.8663783e-09 insert psi2Swidth:InterpolationWidths 1290 6.8672239e-09 insert psi2Swidth:InterpolationWidths 1291 6.8680697e-09 insert psi2Swidth:InterpolationWidths 1292 6.8689155e-09 insert psi2Swidth:InterpolationWidths 1293 6.8697613e-09 insert psi2Swidth:InterpolationWidths 1294 6.8706072e-09 insert psi2Swidth:InterpolationWidths 1295 6.8714532e-09 insert psi2Swidth:InterpolationWidths 1296 6.8722993e-09 insert psi2Swidth:InterpolationWidths 1297 6.8731454e-09 insert psi2Swidth:InterpolationWidths 1298 6.8739916e-09 insert psi2Swidth:InterpolationWidths 1299 6.8748379e-09 insert psi2Swidth:InterpolationWidths 1300 6.8756842e-09 insert psi2Swidth:InterpolationWidths 1301 6.8765306e-09 insert psi2Swidth:InterpolationWidths 1302 6.877377e-09 insert psi2Swidth:InterpolationWidths 1303 6.8782235e-09 insert psi2Swidth:InterpolationWidths 1304 6.8790701e-09 insert psi2Swidth:InterpolationWidths 1305 6.8799168e-09 insert psi2Swidth:InterpolationWidths 1306 6.8807635e-09 insert psi2Swidth:InterpolationWidths 1307 6.8816103e-09 insert psi2Swidth:InterpolationWidths 1308 6.8824572e-09 insert psi2Swidth:InterpolationWidths 1309 6.8833041e-09 insert psi2Swidth:InterpolationWidths 1310 6.8841511e-09 insert psi2Swidth:InterpolationWidths 1311 6.8849981e-09 insert psi2Swidth:InterpolationWidths 1312 6.8858452e-09 insert psi2Swidth:InterpolationWidths 1313 6.8866924e-09 insert psi2Swidth:InterpolationWidths 1314 6.8875397e-09 insert psi2Swidth:InterpolationWidths 1315 6.888387e-09 insert psi2Swidth:InterpolationWidths 1316 6.8892344e-09 insert psi2Swidth:InterpolationWidths 1317 6.8900819e-09 insert psi2Swidth:InterpolationWidths 1318 6.8909294e-09 insert psi2Swidth:InterpolationWidths 1319 6.891777e-09 insert psi2Swidth:InterpolationWidths 1320 6.8926246e-09 insert psi2Swidth:InterpolationWidths 1321 6.8934723e-09 insert psi2Swidth:InterpolationWidths 1322 6.8943201e-09 insert psi2Swidth:InterpolationWidths 1323 6.895168e-09 insert psi2Swidth:InterpolationWidths 1324 6.8960159e-09 insert psi2Swidth:InterpolationWidths 1325 6.8968639e-09 insert psi2Swidth:InterpolationWidths 1326 6.8977119e-09 insert psi2Swidth:InterpolationWidths 1327 6.8985601e-09 insert psi2Swidth:InterpolationWidths 1328 6.8994083e-09 insert psi2Swidth:InterpolationWidths 1329 6.9002565e-09 insert psi2Swidth:InterpolationWidths 1330 6.9011048e-09 insert psi2Swidth:InterpolationWidths 1331 6.9019532e-09 insert psi2Swidth:InterpolationWidths 1332 6.9028017e-09 insert psi2Swidth:InterpolationWidths 1333 6.9036502e-09 insert psi2Swidth:InterpolationWidths 1334 6.9044988e-09 insert psi2Swidth:InterpolationWidths 1335 6.9053474e-09 insert psi2Swidth:InterpolationWidths 1336 6.9061962e-09 insert psi2Swidth:InterpolationWidths 1337 6.9070449e-09 insert psi2Swidth:InterpolationWidths 1338 6.9078938e-09 insert psi2Swidth:InterpolationWidths 1339 6.9087427e-09 insert psi2Swidth:InterpolationWidths 1340 6.9095917e-09 insert psi2Swidth:InterpolationWidths 1341 6.9104408e-09 insert psi2Swidth:InterpolationWidths 1342 1.0251695e-08 insert psi2Swidth:InterpolationWidths 1343 1.0253311e-08 insert psi2Swidth:InterpolationWidths 1344 1.0254927e-08 insert psi2Swidth:InterpolationWidths 1345 1.0256543e-08 insert psi2Swidth:InterpolationWidths 1346 1.025816e-08 insert psi2Swidth:InterpolationWidths 1347 1.0259777e-08 insert psi2Swidth:InterpolationWidths 1348 1.0261393e-08 insert psi2Swidth:InterpolationWidths 1349 1.026301e-08 insert psi2Swidth:InterpolationWidths 1350 1.0264627e-08 insert psi2Swidth:InterpolationWidths 1351 1.0266244e-08 insert psi2Swidth:InterpolationWidths 1352 1.0267862e-08 insert psi2Swidth:InterpolationWidths 1353 1.0269479e-08 insert psi2Swidth:InterpolationWidths 1354 1.0271097e-08 insert psi2Swidth:InterpolationWidths 1355 1.0272715e-08 insert psi2Swidth:InterpolationWidths 1356 1.0274333e-08 insert psi2Swidth:InterpolationWidths 1357 1.0275951e-08 insert psi2Swidth:InterpolationWidths 1358 1.0277569e-08 insert psi2Swidth:InterpolationWidths 1359 1.0279187e-08 insert psi2Swidth:InterpolationWidths 1360 1.0280806e-08 insert psi2Swidth:InterpolationWidths 1361 1.0282424e-08 insert psi2Swidth:InterpolationWidths 1362 1.0284043e-08 insert psi2Swidth:InterpolationWidths 1363 1.0285662e-08 insert psi2Swidth:InterpolationWidths 1364 1.0287281e-08 insert psi2Swidth:InterpolationWidths 1365 1.02889e-08 insert psi2Swidth:InterpolationWidths 1366 1.029052e-08 insert psi2Swidth:InterpolationWidths 1367 1.0292139e-08 insert psi2Swidth:InterpolationWidths 1368 1.0293759e-08 insert psi2Swidth:InterpolationWidths 1369 1.0295379e-08 insert psi2Swidth:InterpolationWidths 1370 1.0296999e-08 insert psi2Swidth:InterpolationWidths 1371 1.0298619e-08 insert psi2Swidth:InterpolationWidths 1372 1.0300239e-08 insert psi2Swidth:InterpolationWidths 1373 1.0301859e-08 insert psi2Swidth:InterpolationWidths 1374 1.030348e-08 insert psi2Swidth:InterpolationWidths 1375 1.0305101e-08 insert psi2Swidth:InterpolationWidths 1376 1.0306721e-08 insert psi2Swidth:InterpolationWidths 1377 1.0308342e-08 insert psi2Swidth:InterpolationWidths 1378 1.0309964e-08 insert psi2Swidth:InterpolationWidths 1379 1.0311585e-08 insert psi2Swidth:InterpolationWidths 1380 1.0313206e-08 insert psi2Swidth:InterpolationWidths 1381 1.0314828e-08 insert psi2Swidth:InterpolationWidths 1382 1.0316449e-08 insert psi2Swidth:InterpolationWidths 1383 1.0318071e-08 insert psi2Swidth:InterpolationWidths 1384 1.0319693e-08 insert psi2Swidth:InterpolationWidths 1385 1.0321315e-08 insert psi2Swidth:InterpolationWidths 1386 1.0322938e-08 insert psi2Swidth:InterpolationWidths 1387 1.032456e-08 insert psi2Swidth:InterpolationWidths 1388 1.0326183e-08 insert psi2Swidth:InterpolationWidths 1389 1.0327805e-08 insert psi2Swidth:InterpolationWidths 1390 1.0329428e-08 insert psi2Swidth:InterpolationWidths 1391 1.0331051e-08 insert psi2Swidth:InterpolationWidths 1392 1.0332674e-08 insert psi2Swidth:InterpolationWidths 1393 1.0334298e-08 insert psi2Swidth:InterpolationWidths 1394 1.0335921e-08 insert psi2Swidth:InterpolationWidths 1395 1.0337545e-08 insert psi2Swidth:InterpolationWidths 1396 9.5383796e-09 insert psi2Swidth:InterpolationWidths 1397 9.5397036e-09 insert psi2Swidth:InterpolationWidths 1398 9.5410278e-09 insert psi2Swidth:InterpolationWidths 1399 9.5423521e-09 insert psi2Swidth:InterpolationWidths 1400 9.5436765e-09 insert psi2Swidth:InterpolationWidths 1401 9.5450011e-09 insert psi2Swidth:InterpolationWidths 1402 9.5463257e-09 insert psi2Swidth:InterpolationWidths 1403 9.5476504e-09 insert psi2Swidth:InterpolationWidths 1404 9.5489753e-09 insert psi2Swidth:InterpolationWidths 1405 9.5503003e-09 insert psi2Swidth:InterpolationWidths 1406 9.5516253e-09 insert psi2Swidth:InterpolationWidths 1407 9.5529505e-09 insert psi2Swidth:InterpolationWidths 1408 9.5542758e-09 insert psi2Swidth:InterpolationWidths 1409 9.5556012e-09 insert psi2Swidth:InterpolationWidths 1410 9.5569268e-09 insert psi2Swidth:InterpolationWidths 1411 9.5582524e-09 insert psi2Swidth:InterpolationWidths 1412 9.5595782e-09 insert psi2Swidth:InterpolationWidths 1413 9.560904e-09 insert psi2Swidth:InterpolationWidths 1414 9.56223e-09 insert psi2Swidth:InterpolationWidths 1415 9.5635561e-09 insert psi2Swidth:InterpolationWidths 1416 9.5648823e-09 insert psi2Swidth:InterpolationWidths 1417 9.5662086e-09 insert psi2Swidth:InterpolationWidths 1418 9.567535e-09 insert psi2Swidth:InterpolationWidths 1419 9.5688615e-09 insert psi2Swidth:InterpolationWidths 1420 9.5701881e-09 insert psi2Swidth:InterpolationWidths 1421 9.5715149e-09 insert psi2Swidth:InterpolationWidths 1422 9.5728417e-09 insert psi2Swidth:InterpolationWidths 1423 9.5741687e-09 insert psi2Swidth:InterpolationWidths 1424 9.5754958e-09 insert psi2Swidth:InterpolationWidths 1425 9.576823e-09 insert psi2Swidth:InterpolationWidths 1426 9.5781503e-09 insert psi2Swidth:InterpolationWidths 1427 9.5794777e-09 insert psi2Swidth:InterpolationWidths 1428 9.5808053e-09 insert psi2Swidth:InterpolationWidths 1429 9.5821329e-09 insert psi2Swidth:InterpolationWidths 1430 9.5834606e-09 insert psi2Swidth:InterpolationWidths 1431 9.5847885e-09 insert psi2Swidth:InterpolationWidths 1432 9.5861165e-09 insert psi2Swidth:InterpolationWidths 1433 9.5874446e-09 insert psi2Swidth:InterpolationWidths 1434 9.5887728e-09 insert psi2Swidth:InterpolationWidths 1435 9.5901011e-09 insert psi2Swidth:InterpolationWidths 1436 9.5914295e-09 insert psi2Swidth:InterpolationWidths 1437 9.592758e-09 insert psi2Swidth:InterpolationWidths 1438 9.5940867e-09 insert psi2Swidth:InterpolationWidths 1439 9.5954154e-09 insert psi2Swidth:InterpolationWidths 1440 9.5967443e-09 insert psi2Swidth:InterpolationWidths 1441 9.5980733e-09 insert psi2Swidth:InterpolationWidths 1442 9.5994024e-09 insert psi2Swidth:InterpolationWidths 1443 9.6007316e-09 insert psi2Swidth:InterpolationWidths 1444 9.6020609e-09 insert psi2Swidth:InterpolationWidths 1445 9.6033903e-09 insert psi2Swidth:InterpolationWidths 1446 9.6047199e-09 insert psi2Swidth:InterpolationWidths 1447 9.6060495e-09 insert psi2Swidth:InterpolationWidths 1448 9.6073793e-09 insert psi2Swidth:InterpolationWidths 1449 9.6087091e-09 insert psi2Swidth:InterpolationWidths 1450 3.6727791e-09 insert psi2Swidth:InterpolationWidths 1451 3.6732364e-09 insert psi2Swidth:InterpolationWidths 1452 3.6736937e-09 insert psi2Swidth:InterpolationWidths 1453 3.6741511e-09 insert psi2Swidth:InterpolationWidths 1454 3.6746085e-09 insert psi2Swidth:InterpolationWidths 1455 3.6750659e-09 insert psi2Swidth:InterpolationWidths 1456 3.6755234e-09 insert psi2Swidth:InterpolationWidths 1457 3.6759809e-09 insert psi2Swidth:InterpolationWidths 1458 3.6764384e-09 insert psi2Swidth:InterpolationWidths 1459 3.676896e-09 insert psi2Swidth:InterpolationWidths 1460 3.6773536e-09 insert psi2Swidth:InterpolationWidths 1461 3.6778113e-09 insert psi2Swidth:InterpolationWidths 1462 3.678269e-09 insert psi2Swidth:InterpolationWidths 1463 3.6787267e-09 insert psi2Swidth:InterpolationWidths 1464 3.6791845e-09 insert psi2Swidth:InterpolationWidths 1465 3.6796423e-09 insert psi2Swidth:InterpolationWidths 1466 3.6801001e-09 insert psi2Swidth:InterpolationWidths 1467 3.680558e-09 insert psi2Swidth:InterpolationWidths 1468 3.6810159e-09 insert psi2Swidth:InterpolationWidths 1469 3.6814738e-09 insert psi2Swidth:InterpolationWidths 1470 3.6819318e-09 insert psi2Swidth:InterpolationWidths 1471 3.6823898e-09 insert psi2Swidth:InterpolationWidths 1472 3.6828479e-09 insert psi2Swidth:InterpolationWidths 1473 3.683306e-09 insert psi2Swidth:InterpolationWidths 1474 3.6837641e-09 insert psi2Swidth:InterpolationWidths 1475 3.6842222e-09 insert psi2Swidth:InterpolationWidths 1476 3.6846804e-09 insert psi2Swidth:InterpolationWidths 1477 3.6851387e-09 insert psi2Swidth:InterpolationWidths 1478 3.6855969e-09 insert psi2Swidth:InterpolationWidths 1479 3.6860553e-09 insert psi2Swidth:InterpolationWidths 1480 3.6865136e-09 insert psi2Swidth:InterpolationWidths 1481 3.686972e-09 insert psi2Swidth:InterpolationWidths 1482 3.6874304e-09 insert psi2Swidth:InterpolationWidths 1483 3.6878888e-09 insert psi2Swidth:InterpolationWidths 1484 3.6883473e-09 insert psi2Swidth:InterpolationWidths 1485 3.6888059e-09 insert psi2Swidth:InterpolationWidths 1486 3.6892644e-09 insert psi2Swidth:InterpolationWidths 1487 3.689723e-09 insert psi2Swidth:InterpolationWidths 1488 3.6901817e-09 insert psi2Swidth:InterpolationWidths 1489 3.6906403e-09 insert psi2Swidth:InterpolationWidths 1490 3.691099e-09 insert psi2Swidth:InterpolationWidths 1491 3.6915578e-09 insert psi2Swidth:InterpolationWidths 1492 3.6920166e-09 insert psi2Swidth:InterpolationWidths 1493 3.6924754e-09 insert psi2Swidth:InterpolationWidths 1494 3.6929342e-09 insert psi2Swidth:InterpolationWidths 1495 3.6933931e-09 insert psi2Swidth:InterpolationWidths 1496 3.693852e-09 insert psi2Swidth:InterpolationWidths 1497 3.694311e-09 insert psi2Swidth:InterpolationWidths 1498 3.69477e-09 insert psi2Swidth:InterpolationWidths 1499 3.695229e-09 insert psi2Swidth:InterpolationWidths 1500 3.6956881e-09 insert psi2Swidth:InterpolationWidths 1501 3.6961472e-09 insert psi2Swidth:InterpolationWidths 1502 3.6966063e-09 insert psi2Swidth:InterpolationWidths 1503 3.6970655e-09 insert psi2Swidth:InterpolationWidths 1504 3.6727791e-09 insert psi2Swidth:InterpolationWidths 1505 3.6732364e-09 insert psi2Swidth:InterpolationWidths 1506 3.6736937e-09 insert psi2Swidth:InterpolationWidths 1507 3.6741511e-09 insert psi2Swidth:InterpolationWidths 1508 3.6746085e-09 insert psi2Swidth:InterpolationWidths 1509 3.6750659e-09 insert psi2Swidth:InterpolationWidths 1510 3.6755234e-09 insert psi2Swidth:InterpolationWidths 1511 3.6759809e-09 insert psi2Swidth:InterpolationWidths 1512 3.6764384e-09 insert psi2Swidth:InterpolationWidths 1513 3.676896e-09 insert psi2Swidth:InterpolationWidths 1514 3.6773536e-09 insert psi2Swidth:InterpolationWidths 1515 3.6778113e-09 insert psi2Swidth:InterpolationWidths 1516 3.678269e-09 insert psi2Swidth:InterpolationWidths 1517 3.6787267e-09 insert psi2Swidth:InterpolationWidths 1518 3.6791845e-09 insert psi2Swidth:InterpolationWidths 1519 3.6796423e-09 insert psi2Swidth:InterpolationWidths 1520 3.6801001e-09 insert psi2Swidth:InterpolationWidths 1521 3.680558e-09 insert psi2Swidth:InterpolationWidths 1522 3.6810159e-09 insert psi2Swidth:InterpolationWidths 1523 3.6814738e-09 insert psi2Swidth:InterpolationWidths 1524 3.6819318e-09 insert psi2Swidth:InterpolationWidths 1525 3.6823898e-09 insert psi2Swidth:InterpolationWidths 1526 3.6828479e-09 insert psi2Swidth:InterpolationWidths 1527 3.683306e-09 insert psi2Swidth:InterpolationWidths 1528 3.6837641e-09 insert psi2Swidth:InterpolationWidths 1529 3.6842222e-09 insert psi2Swidth:InterpolationWidths 1530 3.6846804e-09 insert psi2Swidth:InterpolationWidths 1531 3.6851387e-09 insert psi2Swidth:InterpolationWidths 1532 3.6855969e-09 insert psi2Swidth:InterpolationWidths 1533 3.6860553e-09 insert psi2Swidth:InterpolationWidths 1534 3.6865136e-09 insert psi2Swidth:InterpolationWidths 1535 3.686972e-09 insert psi2Swidth:InterpolationWidths 1536 3.6874304e-09 insert psi2Swidth:InterpolationWidths 1537 3.6878888e-09 insert psi2Swidth:InterpolationWidths 1538 3.6883473e-09 insert psi2Swidth:InterpolationWidths 1539 3.6888059e-09 insert psi2Swidth:InterpolationWidths 1540 3.6892644e-09 insert psi2Swidth:InterpolationWidths 1541 3.689723e-09 insert psi2Swidth:InterpolationWidths 1542 3.6901817e-09 insert psi2Swidth:InterpolationWidths 1543 3.6906403e-09 insert psi2Swidth:InterpolationWidths 1544 3.691099e-09 insert psi2Swidth:InterpolationWidths 1545 3.6915578e-09 insert psi2Swidth:InterpolationWidths 1546 3.6920166e-09 insert psi2Swidth:InterpolationWidths 1547 3.6924754e-09 insert psi2Swidth:InterpolationWidths 1548 3.6929342e-09 insert psi2Swidth:InterpolationWidths 1549 3.6933931e-09 insert psi2Swidth:InterpolationWidths 1550 3.693852e-09 insert psi2Swidth:InterpolationWidths 1551 3.694311e-09 insert psi2Swidth:InterpolationWidths 1552 3.69477e-09 insert psi2Swidth:InterpolationWidths 1553 3.695229e-09 insert psi2Swidth:InterpolationWidths 1554 3.6956881e-09 insert psi2Swidth:InterpolationWidths 1555 3.6961472e-09 insert psi2Swidth:InterpolationWidths 1556 3.6966063e-09 insert psi2Swidth:InterpolationWidths 1557 3.6970655e-09 insert psi2Swidth:InterpolationWidths 1558 3.6732916e-09 insert psi2Swidth:InterpolationWidths 1559 3.6737488e-09 insert psi2Swidth:InterpolationWidths 1560 3.6742061e-09 insert psi2Swidth:InterpolationWidths 1561 3.6746635e-09 insert psi2Swidth:InterpolationWidths 1562 3.6751209e-09 insert psi2Swidth:InterpolationWidths 1563 3.6755783e-09 insert psi2Swidth:InterpolationWidths 1564 3.6760358e-09 insert psi2Swidth:InterpolationWidths 1565 3.6764933e-09 insert psi2Swidth:InterpolationWidths 1566 3.6769508e-09 insert psi2Swidth:InterpolationWidths 1567 3.6774084e-09 insert psi2Swidth:InterpolationWidths 1568 3.677866e-09 insert psi2Swidth:InterpolationWidths 1569 3.6783236e-09 insert psi2Swidth:InterpolationWidths 1570 3.6787813e-09 insert psi2Swidth:InterpolationWidths 1571 3.679239e-09 insert psi2Swidth:InterpolationWidths 1572 3.6796967e-09 insert psi2Swidth:InterpolationWidths 1573 3.6801545e-09 insert psi2Swidth:InterpolationWidths 1574 3.6806124e-09 insert psi2Swidth:InterpolationWidths 1575 3.6810702e-09 insert psi2Swidth:InterpolationWidths 1576 3.6815281e-09 insert psi2Swidth:InterpolationWidths 1577 3.681986e-09 insert psi2Swidth:InterpolationWidths 1578 3.682444e-09 insert psi2Swidth:InterpolationWidths 1579 3.682902e-09 insert psi2Swidth:InterpolationWidths 1580 3.6833601e-09 insert psi2Swidth:InterpolationWidths 1581 3.6838181e-09 insert psi2Swidth:InterpolationWidths 1582 3.6842762e-09 insert psi2Swidth:InterpolationWidths 1583 3.6847344e-09 insert psi2Swidth:InterpolationWidths 1584 3.6851926e-09 insert psi2Swidth:InterpolationWidths 1585 3.6856508e-09 insert psi2Swidth:InterpolationWidths 1586 3.6861091e-09 insert psi2Swidth:InterpolationWidths 1587 3.6865673e-09 insert psi2Swidth:InterpolationWidths 1588 3.6870257e-09 insert psi2Swidth:InterpolationWidths 1589 3.687484e-09 insert psi2Swidth:InterpolationWidths 1590 3.6879424e-09 insert psi2Swidth:InterpolationWidths 1591 3.6884009e-09 insert psi2Swidth:InterpolationWidths 1592 3.6888594e-09 insert psi2Swidth:InterpolationWidths 1593 3.6893179e-09 insert psi2Swidth:InterpolationWidths 1594 3.6897764e-09 insert psi2Swidth:InterpolationWidths 1595 3.690235e-09 insert psi2Swidth:InterpolationWidths 1596 3.6906936e-09 insert psi2Swidth:InterpolationWidths 1597 3.6911523e-09 insert psi2Swidth:InterpolationWidths 1598 3.691611e-09 insert psi2Swidth:InterpolationWidths 1599 3.6920697e-09 insert psi2Swidth:InterpolationWidths 1600 3.6925285e-09 insert psi2Swidth:InterpolationWidths 1601 3.6929873e-09 insert psi2Swidth:InterpolationWidths 1602 3.6934461e-09 insert psi2Swidth:InterpolationWidths 1603 3.693905e-09 insert psi2Swidth:InterpolationWidths 1604 3.6943639e-09 insert psi2Swidth:InterpolationWidths 1605 3.6948229e-09 insert psi2Swidth:InterpolationWidths 1606 3.6952818e-09 insert psi2Swidth:InterpolationWidths 1607 3.6957409e-09 insert psi2Swidth:InterpolationWidths 1608 3.6961999e-09 insert psi2Swidth:InterpolationWidths 1609 3.696659e-09 insert psi2Swidth:InterpolationWidths 1610 3.6971181e-09 insert psi2Swidth:InterpolationWidths 1611 3.6975773e-09 insert psi2Swidth:NumberofEntries 0 0 insert psi2Swidth:NumberofEntries 1 0 insert psi2Swidth:NumberofEntries 2 0 insert psi2Swidth:NumberofEntries 3 0 insert psi2Swidth:NumberofEntries 4 54 insert psi2Swidth:NumberofEntries 5 104 insert psi2Swidth:NumberofEntries 6 154 insert psi2Swidth:NumberofEntries 7 208 insert psi2Swidth:NumberofEntries 8 208 insert psi2Swidth:NumberofEntries 9 208 insert psi2Swidth:NumberofEntries 10 262 insert psi2Swidth:NumberofEntries 11 262 insert psi2Swidth:NumberofEntries 12 262 insert psi2Swidth:NumberofEntries 13 262 insert psi2Swidth:NumberofEntries 14 262 insert psi2Swidth:NumberofEntries 15 316 insert psi2Swidth:NumberofEntries 16 316 insert psi2Swidth:NumberofEntries 17 316 insert psi2Swidth:NumberofEntries 18 316 insert psi2Swidth:NumberofEntries 19 316 insert psi2Swidth:NumberofEntries 20 370 insert psi2Swidth:NumberofEntries 21 370 insert psi2Swidth:NumberofEntries 22 370 insert psi2Swidth:NumberofEntries 23 370 insert psi2Swidth:NumberofEntries 24 370 insert psi2Swidth:NumberofEntries 25 370 insert psi2Swidth:NumberofEntries 26 370 insert psi2Swidth:NumberofEntries 27 424 insert psi2Swidth:NumberofEntries 28 424 insert psi2Swidth:NumberofEntries 29 424 insert psi2Swidth:NumberofEntries 30 424 insert psi2Swidth:NumberofEntries 31 424 insert psi2Swidth:NumberofEntries 32 424 insert psi2Swidth:NumberofEntries 33 424 insert psi2Swidth:NumberofEntries 34 424 insert psi2Swidth:NumberofEntries 35 424 insert psi2Swidth:NumberofEntries 36 424 insert psi2Swidth:NumberofEntries 37 478 insert psi2Swidth:NumberofEntries 38 532 insert psi2Swidth:NumberofEntries 39 586 insert psi2Swidth:NumberofEntries 40 640 insert psi2Swidth:NumberofEntries 41 640 insert psi2Swidth:NumberofEntries 42 640 insert psi2Swidth:NumberofEntries 43 640 insert psi2Swidth:NumberofEntries 44 640 insert psi2Swidth:NumberofEntries 45 640 insert psi2Swidth:NumberofEntries 46 640 insert psi2Swidth:NumberofEntries 47 640 insert psi2Swidth:NumberofEntries 48 640 insert psi2Swidth:NumberofEntries 49 640 insert psi2Swidth:NumberofEntries 50 640 insert psi2Swidth:NumberofEntries 51 640 insert psi2Swidth:NumberofEntries 52 640 insert psi2Swidth:NumberofEntries 53 640 insert psi2Swidth:NumberofEntries 54 640 insert psi2Swidth:NumberofEntries 55 640 insert psi2Swidth:NumberofEntries 56 640 insert psi2Swidth:NumberofEntries 57 640 insert psi2Swidth:NumberofEntries 58 640 insert psi2Swidth:NumberofEntries 59 640 insert psi2Swidth:NumberofEntries 60 640 insert psi2Swidth:NumberofEntries 61 694 insert psi2Swidth:NumberofEntries 62 748 insert psi2Swidth:NumberofEntries 63 802 insert psi2Swidth:NumberofEntries 64 856 insert psi2Swidth:NumberofEntries 65 856 insert psi2Swidth:NumberofEntries 66 856 insert psi2Swidth:NumberofEntries 67 856 insert psi2Swidth:NumberofEntries 68 910 insert psi2Swidth:NumberofEntries 69 964 insert psi2Swidth:NumberofEntries 70 964 insert psi2Swidth:NumberofEntries 71 1018 insert psi2Swidth:NumberofEntries 72 1018 insert psi2Swidth:NumberofEntries 73 1072 insert psi2Swidth:NumberofEntries 74 1126 insert psi2Swidth:NumberofEntries 75 1126 insert psi2Swidth:NumberofEntries 76 1180 insert psi2Swidth:NumberofEntries 77 1180 insert psi2Swidth:NumberofEntries 78 1234 insert psi2Swidth:NumberofEntries 79 1234 insert psi2Swidth:NumberofEntries 80 1234 insert psi2Swidth:NumberofEntries 81 1234 insert psi2Swidth:NumberofEntries 82 1288 insert psi2Swidth:NumberofEntries 83 1288 insert psi2Swidth:NumberofEntries 84 1288 insert psi2Swidth:NumberofEntries 85 1288 insert psi2Swidth:NumberofEntries 86 1288 insert psi2Swidth:NumberofEntries 87 1288 insert psi2Swidth:NumberofEntries 88 1288 insert psi2Swidth:NumberofEntries 89 1342 insert psi2Swidth:NumberofEntries 90 1342 insert psi2Swidth:NumberofEntries 91 1342 insert psi2Swidth:NumberofEntries 92 1342 insert psi2Swidth:NumberofEntries 93 1342 insert psi2Swidth:NumberofEntries 94 1342 insert psi2Swidth:NumberofEntries 95 1342 insert psi2Swidth:NumberofEntries 96 1342 insert psi2Swidth:NumberofEntries 97 1342 insert psi2Swidth:NumberofEntries 98 1342 insert psi2Swidth:NumberofEntries 99 1342 insert psi2Swidth:NumberofEntries 100 1342 insert psi2Swidth:NumberofEntries 101 1342 insert psi2Swidth:NumberofEntries 102 1342 insert psi2Swidth:NumberofEntries 103 1342 insert psi2Swidth:NumberofEntries 104 1396 insert psi2Swidth:NumberofEntries 105 1450 insert psi2Swidth:NumberofEntries 106 1450 insert psi2Swidth:NumberofEntries 107 1450 insert psi2Swidth:NumberofEntries 108 1450 insert psi2Swidth:NumberofEntries 109 1450 insert psi2Swidth:NumberofEntries 110 1450 insert psi2Swidth:NumberofEntries 111 1450 insert psi2Swidth:NumberofEntries 112 1450 insert psi2Swidth:NumberofEntries 113 1504 insert psi2Swidth:NumberofEntries 114 1504 insert psi2Swidth:NumberofEntries 115 1558 insert psi2Swidth:NumberofEntries 116 1612 insert psi2Swidth:NumberofEntries 117 1612 newdef /Herwig/Particles/psi(2S):Width_generator psi2Swidth # create Herwig::GenericWidthGenerator Upsilon1Swidth newdef Upsilon1Swidth:Particle /Herwig/Particles/Upsilon newdef Upsilon1Swidth:Prefactor 1.01857 newdef Upsilon1Swidth:BRNormalize 1 newdef Upsilon1Swidth:BRMinimum 0.01 newdef Upsilon1Swidth:Points 50 newdef Upsilon1Swidth:InterpolationOrder 1 insert Upsilon1Swidth:MEtype 0 0 insert Upsilon1Swidth:MEtype 1 0 insert Upsilon1Swidth:MEtype 2 0 insert Upsilon1Swidth:MEtype 3 1 insert Upsilon1Swidth:MEtype 4 0 insert Upsilon1Swidth:MEtype 5 0 insert Upsilon1Swidth:MEtype 6 0 insert Upsilon1Swidth:MEtype 7 0 insert Upsilon1Swidth:MEtype 8 1 insert Upsilon1Swidth:MEtype 9 0 insert Upsilon1Swidth:MEtype 10 0 insert Upsilon1Swidth:MEtype 11 0 insert Upsilon1Swidth:MEtype 12 1 insert Upsilon1Swidth:MEtype 13 0 insert Upsilon1Swidth:MEcode 0 0 insert Upsilon1Swidth:MEcode 1 0 insert Upsilon1Swidth:MEcode 2 0 insert Upsilon1Swidth:MEcode 3 2 insert Upsilon1Swidth:MEcode 4 0 insert Upsilon1Swidth:MEcode 5 0 insert Upsilon1Swidth:MEcode 6 0 insert Upsilon1Swidth:MEcode 7 0 insert Upsilon1Swidth:MEcode 8 2 insert Upsilon1Swidth:MEcode 9 0 insert Upsilon1Swidth:MEcode 10 0 insert Upsilon1Swidth:MEcode 11 0 insert Upsilon1Swidth:MEcode 12 2 insert Upsilon1Swidth:MEcode 13 0 insert Upsilon1Swidth:MEcoupling 0 1.1e-05 insert Upsilon1Swidth:MEcoupling 1 0.036 insert Upsilon1Swidth:MEcoupling 2 0.009 insert Upsilon1Swidth:MEcoupling 3 0.00231478 insert Upsilon1Swidth:MEcoupling 4 3.7e-05 insert Upsilon1Swidth:MEcoupling 5 0.0001 insert Upsilon1Swidth:MEcoupling 6 0.814282 insert Upsilon1Swidth:MEcoupling 7 0.02099 insert Upsilon1Swidth:MEcoupling 8 0.00231478 insert Upsilon1Swidth:MEcoupling 9 6.3e-05 insert Upsilon1Swidth:MEcoupling 10 1.7e-05 insert Upsilon1Swidth:MEcoupling 11 0.009 insert Upsilon1Swidth:MEcoupling 12 0.00231457 insert Upsilon1Swidth:MEcoupling 13 0.036 insert Upsilon1Swidth:ModeOn 0 0 insert Upsilon1Swidth:ModeOn 1 1 insert Upsilon1Swidth:ModeOn 2 0 insert Upsilon1Swidth:ModeOn 3 1 insert Upsilon1Swidth:ModeOn 4 0 insert Upsilon1Swidth:ModeOn 5 0 insert Upsilon1Swidth:ModeOn 6 1 insert Upsilon1Swidth:ModeOn 7 1 insert Upsilon1Swidth:ModeOn 8 1 insert Upsilon1Swidth:ModeOn 9 0 insert Upsilon1Swidth:ModeOn 10 0 insert Upsilon1Swidth:ModeOn 11 0 insert Upsilon1Swidth:ModeOn 12 1 insert Upsilon1Swidth:ModeOn 13 1 insert Upsilon1Swidth:MinimumMasses 0 0.987354 insert Upsilon1Swidth:MinimumMasses 1 2.7 insert Upsilon1Swidth:MinimumMasses 2 0.0198 insert Upsilon1Swidth:MinimumMasses 3 0.00102 insert Upsilon1Swidth:MinimumMasses 4 1.16 insert Upsilon1Swidth:MinimumMasses 5 1.0902 insert Upsilon1Swidth:MinimumMasses 6 0 insert Upsilon1Swidth:MinimumMasses 7 0 insert Upsilon1Swidth:MinimumMasses 8 0.21132 insert Upsilon1Swidth:MinimumMasses 9 0.27914 insert Upsilon1Swidth:MinimumMasses 10 0.269955 insert Upsilon1Swidth:MinimumMasses 11 0.398 insert Upsilon1Swidth:MinimumMasses 12 3.554 insert Upsilon1Swidth:MinimumMasses 13 0.0112 insert Upsilon1Swidth:MEmass1 0 0 insert Upsilon1Swidth:MEmass1 1 0 insert Upsilon1Swidth:MEmass1 2 0 insert Upsilon1Swidth:MEmass1 3 0.00051 insert Upsilon1Swidth:MEmass1 4 0 insert Upsilon1Swidth:MEmass1 5 0 insert Upsilon1Swidth:MEmass1 6 0 insert Upsilon1Swidth:MEmass1 7 0 insert Upsilon1Swidth:MEmass1 8 0.10566 insert Upsilon1Swidth:MEmass1 9 0 insert Upsilon1Swidth:MEmass1 10 0 insert Upsilon1Swidth:MEmass1 11 0 insert Upsilon1Swidth:MEmass1 12 1.777 insert Upsilon1Swidth:MEmass1 13 0 insert Upsilon1Swidth:MEmass2 0 0 insert Upsilon1Swidth:MEmass2 1 0 insert Upsilon1Swidth:MEmass2 2 0 insert Upsilon1Swidth:MEmass2 3 0.00051 insert Upsilon1Swidth:MEmass2 4 0 insert Upsilon1Swidth:MEmass2 5 0 insert Upsilon1Swidth:MEmass2 6 0 insert Upsilon1Swidth:MEmass2 7 0 insert Upsilon1Swidth:MEmass2 8 0.10566 insert Upsilon1Swidth:MEmass2 9 0 insert Upsilon1Swidth:MEmass2 10 0 insert Upsilon1Swidth:MEmass2 11 0 insert Upsilon1Swidth:MEmass2 12 1.777 insert Upsilon1Swidth:MEmass2 13 0 insert Upsilon1Swidth:DecayModes 0 Upsilon->K+,K-,gamma; insert Upsilon1Swidth:DecayModes 1 Upsilon->c,cbar; insert Upsilon1Swidth:DecayModes 2 Upsilon->d,dbar; insert Upsilon1Swidth:DecayModes 3 Upsilon->e-,e+; insert Upsilon1Swidth:DecayModes 4 Upsilon->f'_2,gamma; insert Upsilon1Swidth:DecayModes 5 Upsilon->f_2,gamma; insert Upsilon1Swidth:DecayModes 6 Upsilon->g,g,g; insert Upsilon1Swidth:DecayModes 7 Upsilon->gamma,g,g; insert Upsilon1Swidth:DecayModes 8 Upsilon->mu-,mu+; insert Upsilon1Swidth:DecayModes 9 Upsilon->pi+,pi-,gamma; insert Upsilon1Swidth:DecayModes 10 Upsilon->pi0,pi0,gamma; insert Upsilon1Swidth:DecayModes 11 Upsilon->s,sbar; insert Upsilon1Swidth:DecayModes 12 Upsilon->tau-,tau+; insert Upsilon1Swidth:DecayModes 13 Upsilon->u,ubar; insert Upsilon1Swidth:NumberofEntries 0 0 insert Upsilon1Swidth:NumberofEntries 1 0 insert Upsilon1Swidth:NumberofEntries 2 0 insert Upsilon1Swidth:NumberofEntries 3 0 insert Upsilon1Swidth:NumberofEntries 4 0 insert Upsilon1Swidth:NumberofEntries 5 0 insert Upsilon1Swidth:NumberofEntries 6 0 insert Upsilon1Swidth:NumberofEntries 7 0 insert Upsilon1Swidth:NumberofEntries 8 0 insert Upsilon1Swidth:NumberofEntries 9 0 insert Upsilon1Swidth:NumberofEntries 10 0 insert Upsilon1Swidth:NumberofEntries 11 0 insert Upsilon1Swidth:NumberofEntries 12 0 insert Upsilon1Swidth:NumberofEntries 13 0 newdef /Herwig/Particles/Upsilon:Width_generator Upsilon1Swidth # create Herwig::GenericWidthGenerator Upsilon2Swidth newdef Upsilon2Swidth:Particle /Herwig/Particles/Upsilon(2S) newdef Upsilon2Swidth:Prefactor 1.01379 newdef Upsilon2Swidth:BRNormalize 1 newdef Upsilon2Swidth:BRMinimum 0.01 newdef Upsilon2Swidth:Points 50 newdef Upsilon2Swidth:InterpolationOrder 1 insert Upsilon2Swidth:MEtype 0 2 insert Upsilon2Swidth:MEtype 1 2 insert Upsilon2Swidth:MEtype 2 0 insert Upsilon2Swidth:MEtype 3 2 insert Upsilon2Swidth:MEtype 4 0 insert Upsilon2Swidth:MEtype 5 0 insert Upsilon2Swidth:MEtype 6 0 insert Upsilon2Swidth:MEtype 7 1 insert Upsilon2Swidth:MEtype 8 0 insert Upsilon2Swidth:MEtype 9 0 insert Upsilon2Swidth:MEtype 10 1 insert Upsilon2Swidth:MEtype 11 0 insert Upsilon2Swidth:MEtype 12 1 insert Upsilon2Swidth:MEtype 13 0 insert Upsilon2Swidth:MEcode 0 0 insert Upsilon2Swidth:MEcode 1 0 insert Upsilon2Swidth:MEcode 2 0 insert Upsilon2Swidth:MEcode 3 0 insert Upsilon2Swidth:MEcode 4 0 insert Upsilon2Swidth:MEcode 5 0 insert Upsilon2Swidth:MEcode 6 0 insert Upsilon2Swidth:MEcode 7 2 insert Upsilon2Swidth:MEcode 8 0 insert Upsilon2Swidth:MEcode 9 0 insert Upsilon2Swidth:MEcode 10 2 insert Upsilon2Swidth:MEcode 11 0 insert Upsilon2Swidth:MEcode 12 2 insert Upsilon2Swidth:MEcode 13 0 insert Upsilon2Swidth:MEcoupling 0 1.01474 insert Upsilon2Swidth:MEcoupling 1 0.917107 insert Upsilon2Swidth:MEcoupling 2 0.0271 insert Upsilon2Swidth:MEcoupling 3 1.00034 insert Upsilon2Swidth:MEcoupling 4 0.069 insert Upsilon2Swidth:MEcoupling 5 0.0715 insert Upsilon2Swidth:MEcoupling 6 0.0068 insert Upsilon2Swidth:MEcoupling 7 0.00151968 insert Upsilon2Swidth:MEcoupling 8 0.4077 insert Upsilon2Swidth:MEcoupling 9 0.0106 insert Upsilon2Swidth:MEcoupling 10 0.00151968 insert Upsilon2Swidth:MEcoupling 11 0.0068 insert Upsilon2Swidth:MEcoupling 12 0.00151644 insert Upsilon2Swidth:MEcoupling 13 0.0271 insert Upsilon2Swidth:ModeOn 0 1 insert Upsilon2Swidth:ModeOn 1 1 insert Upsilon2Swidth:ModeOn 2 1 insert Upsilon2Swidth:ModeOn 3 1 insert Upsilon2Swidth:ModeOn 4 1 insert Upsilon2Swidth:ModeOn 5 1 insert Upsilon2Swidth:ModeOn 6 0 insert Upsilon2Swidth:ModeOn 7 1 insert Upsilon2Swidth:ModeOn 8 1 insert Upsilon2Swidth:ModeOn 9 1 insert Upsilon2Swidth:ModeOn 10 1 insert Upsilon2Swidth:ModeOn 11 0 insert Upsilon2Swidth:ModeOn 12 1 insert Upsilon2Swidth:ModeOn 13 1 insert Upsilon2Swidth:MinimumMasses 0 9.7389 insert Upsilon2Swidth:MinimumMasses 1 9.72972 insert Upsilon2Swidth:MinimumMasses 2 2.7 insert Upsilon2Swidth:MinimumMasses 3 9.85127 insert Upsilon2Swidth:MinimumMasses 4 9.89207 insert Upsilon2Swidth:MinimumMasses 5 9.91051 insert Upsilon2Swidth:MinimumMasses 6 0.0198 insert Upsilon2Swidth:MinimumMasses 7 0.00102 insert Upsilon2Swidth:MinimumMasses 8 0 insert Upsilon2Swidth:MinimumMasses 9 0 insert Upsilon2Swidth:MinimumMasses 10 0.21132 insert Upsilon2Swidth:MinimumMasses 11 0.398 insert Upsilon2Swidth:MinimumMasses 12 3.554 insert Upsilon2Swidth:MinimumMasses 13 0.0112 insert Upsilon2Swidth:MEmass1 0 0 insert Upsilon2Swidth:MEmass1 1 0 insert Upsilon2Swidth:MEmass1 2 0 insert Upsilon2Swidth:MEmass1 3 0 insert Upsilon2Swidth:MEmass1 4 0 insert Upsilon2Swidth:MEmass1 5 0 insert Upsilon2Swidth:MEmass1 6 0 insert Upsilon2Swidth:MEmass1 7 0.00051 insert Upsilon2Swidth:MEmass1 8 0 insert Upsilon2Swidth:MEmass1 9 0 insert Upsilon2Swidth:MEmass1 10 0.10566 insert Upsilon2Swidth:MEmass1 11 0 insert Upsilon2Swidth:MEmass1 12 1.777 insert Upsilon2Swidth:MEmass1 13 0 insert Upsilon2Swidth:MEmass2 0 0 insert Upsilon2Swidth:MEmass2 1 0 insert Upsilon2Swidth:MEmass2 2 0 insert Upsilon2Swidth:MEmass2 3 9.85944 insert Upsilon2Swidth:MEmass2 4 0 insert Upsilon2Swidth:MEmass2 5 0 insert Upsilon2Swidth:MEmass2 6 0 insert Upsilon2Swidth:MEmass2 7 0.00051 insert Upsilon2Swidth:MEmass2 8 0 insert Upsilon2Swidth:MEmass2 9 0 insert Upsilon2Swidth:MEmass2 10 0.10566 insert Upsilon2Swidth:MEmass2 11 0 insert Upsilon2Swidth:MEmass2 12 1.777 insert Upsilon2Swidth:MEmass2 13 0 insert Upsilon2Swidth:DecayModes 0 Upsilon(2S)->Upsilon,pi+,pi-; insert Upsilon2Swidth:DecayModes 1 Upsilon(2S)->Upsilon,pi0,pi0; insert Upsilon2Swidth:DecayModes 2 Upsilon(2S)->c,cbar; insert Upsilon2Swidth:DecayModes 3 Upsilon(2S)->chi_b0,gamma; insert Upsilon2Swidth:DecayModes 4 Upsilon(2S)->chi_b1,gamma; insert Upsilon2Swidth:DecayModes 5 Upsilon(2S)->chi_b2,gamma; insert Upsilon2Swidth:DecayModes 6 Upsilon(2S)->d,dbar; insert Upsilon2Swidth:DecayModes 7 Upsilon(2S)->e-,e+; insert Upsilon2Swidth:DecayModes 8 Upsilon(2S)->g,g,g; insert Upsilon2Swidth:DecayModes 9 Upsilon(2S)->gamma,g,g; insert Upsilon2Swidth:DecayModes 10 Upsilon(2S)->mu-,mu+; insert Upsilon2Swidth:DecayModes 11 Upsilon(2S)->s,sbar; insert Upsilon2Swidth:DecayModes 12 Upsilon(2S)->tau-,tau+; insert Upsilon2Swidth:DecayModes 13 Upsilon(2S)->u,ubar; insert Upsilon2Swidth:InterpolationMasses 0 10.02294 insert Upsilon2Swidth:InterpolationMasses 1 10.022953 insert Upsilon2Swidth:InterpolationMasses 2 10.022966 insert Upsilon2Swidth:InterpolationMasses 3 10.022979 insert Upsilon2Swidth:InterpolationMasses 4 10.022992 insert Upsilon2Swidth:InterpolationMasses 5 10.023005 insert Upsilon2Swidth:InterpolationMasses 6 10.023019 insert Upsilon2Swidth:InterpolationMasses 7 10.023032 insert Upsilon2Swidth:InterpolationMasses 8 10.023045 insert Upsilon2Swidth:InterpolationMasses 9 10.023058 insert Upsilon2Swidth:InterpolationMasses 10 10.023071 insert Upsilon2Swidth:InterpolationMasses 11 10.023084 insert Upsilon2Swidth:InterpolationMasses 12 10.023097 insert Upsilon2Swidth:InterpolationMasses 13 10.02311 insert Upsilon2Swidth:InterpolationMasses 14 10.023123 insert Upsilon2Swidth:InterpolationMasses 15 10.023136 insert Upsilon2Swidth:InterpolationMasses 16 10.023149 insert Upsilon2Swidth:InterpolationMasses 17 10.023162 insert Upsilon2Swidth:InterpolationMasses 18 10.023175 insert Upsilon2Swidth:InterpolationMasses 19 10.023188 insert Upsilon2Swidth:InterpolationMasses 20 10.023201 insert Upsilon2Swidth:InterpolationMasses 21 10.023214 insert Upsilon2Swidth:InterpolationMasses 22 10.023227 insert Upsilon2Swidth:InterpolationMasses 23 10.02324 insert Upsilon2Swidth:InterpolationMasses 24 10.023253 insert Upsilon2Swidth:InterpolationMasses 25 10.023267 insert Upsilon2Swidth:InterpolationMasses 26 10.02328 insert Upsilon2Swidth:InterpolationMasses 27 10.023293 insert Upsilon2Swidth:InterpolationMasses 28 10.023306 insert Upsilon2Swidth:InterpolationMasses 29 10.023319 insert Upsilon2Swidth:InterpolationMasses 30 10.023332 insert Upsilon2Swidth:InterpolationMasses 31 10.023345 insert Upsilon2Swidth:InterpolationMasses 32 10.023358 insert Upsilon2Swidth:InterpolationMasses 33 10.023371 insert Upsilon2Swidth:InterpolationMasses 34 10.023384 insert Upsilon2Swidth:InterpolationMasses 35 10.023397 insert Upsilon2Swidth:InterpolationMasses 36 10.02341 insert Upsilon2Swidth:InterpolationMasses 37 10.023423 insert Upsilon2Swidth:InterpolationMasses 38 10.023436 insert Upsilon2Swidth:InterpolationMasses 39 10.023449 insert Upsilon2Swidth:InterpolationMasses 40 10.023462 insert Upsilon2Swidth:InterpolationMasses 41 10.023475 insert Upsilon2Swidth:InterpolationMasses 42 10.023488 insert Upsilon2Swidth:InterpolationMasses 43 10.023501 insert Upsilon2Swidth:InterpolationMasses 44 10.023515 insert Upsilon2Swidth:InterpolationMasses 45 10.023528 insert Upsilon2Swidth:InterpolationMasses 46 10.023541 insert Upsilon2Swidth:InterpolationMasses 47 10.023554 insert Upsilon2Swidth:InterpolationMasses 48 10.023567 insert Upsilon2Swidth:InterpolationMasses 49 10.02358 insert Upsilon2Swidth:InterpolationMasses 50 10.02294 insert Upsilon2Swidth:InterpolationMasses 51 10.022953 insert Upsilon2Swidth:InterpolationMasses 52 10.022966 insert Upsilon2Swidth:InterpolationMasses 53 10.022979 insert Upsilon2Swidth:InterpolationMasses 54 10.022992 insert Upsilon2Swidth:InterpolationMasses 55 10.023005 insert Upsilon2Swidth:InterpolationMasses 56 10.023019 insert Upsilon2Swidth:InterpolationMasses 57 10.023032 insert Upsilon2Swidth:InterpolationMasses 58 10.023045 insert Upsilon2Swidth:InterpolationMasses 59 10.023058 insert Upsilon2Swidth:InterpolationMasses 60 10.023071 insert Upsilon2Swidth:InterpolationMasses 61 10.023084 insert Upsilon2Swidth:InterpolationMasses 62 10.023097 insert Upsilon2Swidth:InterpolationMasses 63 10.02311 insert Upsilon2Swidth:InterpolationMasses 64 10.023123 insert Upsilon2Swidth:InterpolationMasses 65 10.023136 insert Upsilon2Swidth:InterpolationMasses 66 10.023149 insert Upsilon2Swidth:InterpolationMasses 67 10.023162 insert Upsilon2Swidth:InterpolationMasses 68 10.023175 insert Upsilon2Swidth:InterpolationMasses 69 10.023188 insert Upsilon2Swidth:InterpolationMasses 70 10.023201 insert Upsilon2Swidth:InterpolationMasses 71 10.023214 insert Upsilon2Swidth:InterpolationMasses 72 10.023227 insert Upsilon2Swidth:InterpolationMasses 73 10.02324 insert Upsilon2Swidth:InterpolationMasses 74 10.023253 insert Upsilon2Swidth:InterpolationMasses 75 10.023267 insert Upsilon2Swidth:InterpolationMasses 76 10.02328 insert Upsilon2Swidth:InterpolationMasses 77 10.023293 insert Upsilon2Swidth:InterpolationMasses 78 10.023306 insert Upsilon2Swidth:InterpolationMasses 79 10.023319 insert Upsilon2Swidth:InterpolationMasses 80 10.023332 insert Upsilon2Swidth:InterpolationMasses 81 10.023345 insert Upsilon2Swidth:InterpolationMasses 82 10.023358 insert Upsilon2Swidth:InterpolationMasses 83 10.023371 insert Upsilon2Swidth:InterpolationMasses 84 10.023384 insert Upsilon2Swidth:InterpolationMasses 85 10.023397 insert Upsilon2Swidth:InterpolationMasses 86 10.02341 insert Upsilon2Swidth:InterpolationMasses 87 10.023423 insert Upsilon2Swidth:InterpolationMasses 88 10.023436 insert Upsilon2Swidth:InterpolationMasses 89 10.023449 insert Upsilon2Swidth:InterpolationMasses 90 10.023462 insert Upsilon2Swidth:InterpolationMasses 91 10.023475 insert Upsilon2Swidth:InterpolationMasses 92 10.023488 insert Upsilon2Swidth:InterpolationMasses 93 10.023501 insert Upsilon2Swidth:InterpolationMasses 94 10.023515 insert Upsilon2Swidth:InterpolationMasses 95 10.023528 insert Upsilon2Swidth:InterpolationMasses 96 10.023541 insert Upsilon2Swidth:InterpolationMasses 97 10.023554 insert Upsilon2Swidth:InterpolationMasses 98 10.023567 insert Upsilon2Swidth:InterpolationMasses 99 10.02358 insert Upsilon2Swidth:InterpolationMasses 100 10.022914 insert Upsilon2Swidth:InterpolationMasses 101 10.022927 insert Upsilon2Swidth:InterpolationMasses 102 10.02294 insert Upsilon2Swidth:InterpolationMasses 103 10.022953 insert Upsilon2Swidth:InterpolationMasses 104 10.022966 insert Upsilon2Swidth:InterpolationMasses 105 10.022979 insert Upsilon2Swidth:InterpolationMasses 106 10.022992 insert Upsilon2Swidth:InterpolationMasses 107 10.023005 insert Upsilon2Swidth:InterpolationMasses 108 10.023019 insert Upsilon2Swidth:InterpolationMasses 109 10.023032 insert Upsilon2Swidth:InterpolationMasses 110 10.023045 insert Upsilon2Swidth:InterpolationMasses 111 10.023058 insert Upsilon2Swidth:InterpolationMasses 112 10.023071 insert Upsilon2Swidth:InterpolationMasses 113 10.023084 insert Upsilon2Swidth:InterpolationMasses 114 10.023097 insert Upsilon2Swidth:InterpolationMasses 115 10.02311 insert Upsilon2Swidth:InterpolationMasses 116 10.023123 insert Upsilon2Swidth:InterpolationMasses 117 10.023136 insert Upsilon2Swidth:InterpolationMasses 118 10.023149 insert Upsilon2Swidth:InterpolationMasses 119 10.023162 insert Upsilon2Swidth:InterpolationMasses 120 10.023175 insert Upsilon2Swidth:InterpolationMasses 121 10.023188 insert Upsilon2Swidth:InterpolationMasses 122 10.023201 insert Upsilon2Swidth:InterpolationMasses 123 10.023214 insert Upsilon2Swidth:InterpolationMasses 124 10.023227 insert Upsilon2Swidth:InterpolationMasses 125 10.02324 insert Upsilon2Swidth:InterpolationMasses 126 10.023253 insert Upsilon2Swidth:InterpolationMasses 127 10.023267 insert Upsilon2Swidth:InterpolationMasses 128 10.02328 insert Upsilon2Swidth:InterpolationMasses 129 10.023293 insert Upsilon2Swidth:InterpolationMasses 130 10.023306 insert Upsilon2Swidth:InterpolationMasses 131 10.023319 insert Upsilon2Swidth:InterpolationMasses 132 10.023332 insert Upsilon2Swidth:InterpolationMasses 133 10.023345 insert Upsilon2Swidth:InterpolationMasses 134 10.023358 insert Upsilon2Swidth:InterpolationMasses 135 10.023371 insert Upsilon2Swidth:InterpolationMasses 136 10.023384 insert Upsilon2Swidth:InterpolationMasses 137 10.023397 insert Upsilon2Swidth:InterpolationMasses 138 10.02341 insert Upsilon2Swidth:InterpolationMasses 139 10.023423 insert Upsilon2Swidth:InterpolationMasses 140 10.023436 insert Upsilon2Swidth:InterpolationMasses 141 10.023449 insert Upsilon2Swidth:InterpolationMasses 142 10.023462 insert Upsilon2Swidth:InterpolationMasses 143 10.023475 insert Upsilon2Swidth:InterpolationMasses 144 10.023488 insert Upsilon2Swidth:InterpolationMasses 145 10.023501 insert Upsilon2Swidth:InterpolationMasses 146 10.023515 insert Upsilon2Swidth:InterpolationMasses 147 10.023528 insert Upsilon2Swidth:InterpolationMasses 148 10.023541 insert Upsilon2Swidth:InterpolationMasses 149 10.023554 insert Upsilon2Swidth:InterpolationMasses 150 10.023567 insert Upsilon2Swidth:InterpolationMasses 151 10.02358 insert Upsilon2Swidth:InterpolationMasses 152 10.023593 insert Upsilon2Swidth:InterpolationMasses 153 10.023606 insert Upsilon2Swidth:InterpolationWidths 0 5.895785e-06 insert Upsilon2Swidth:InterpolationWidths 1 5.8969706e-06 insert Upsilon2Swidth:InterpolationWidths 2 5.8981563e-06 insert Upsilon2Swidth:InterpolationWidths 3 5.8993422e-06 insert Upsilon2Swidth:InterpolationWidths 4 5.9005283e-06 insert Upsilon2Swidth:InterpolationWidths 5 5.9017146e-06 insert Upsilon2Swidth:InterpolationWidths 6 5.9029011e-06 insert Upsilon2Swidth:InterpolationWidths 7 5.9040878e-06 insert Upsilon2Swidth:InterpolationWidths 8 5.9052747e-06 insert Upsilon2Swidth:InterpolationWidths 9 5.9064617e-06 insert Upsilon2Swidth:InterpolationWidths 10 5.907649e-06 insert Upsilon2Swidth:InterpolationWidths 11 5.9088365e-06 insert Upsilon2Swidth:InterpolationWidths 12 5.9100242e-06 insert Upsilon2Swidth:InterpolationWidths 13 5.9112121e-06 insert Upsilon2Swidth:InterpolationWidths 14 5.9124002e-06 insert Upsilon2Swidth:InterpolationWidths 15 5.9135884e-06 insert Upsilon2Swidth:InterpolationWidths 16 5.9147769e-06 insert Upsilon2Swidth:InterpolationWidths 17 5.9159656e-06 insert Upsilon2Swidth:InterpolationWidths 18 5.9171544e-06 insert Upsilon2Swidth:InterpolationWidths 19 5.9183435e-06 insert Upsilon2Swidth:InterpolationWidths 20 5.9195328e-06 insert Upsilon2Swidth:InterpolationWidths 21 5.9207222e-06 insert Upsilon2Swidth:InterpolationWidths 22 5.9219119e-06 insert Upsilon2Swidth:InterpolationWidths 23 5.9231017e-06 insert Upsilon2Swidth:InterpolationWidths 24 5.9242918e-06 insert Upsilon2Swidth:InterpolationWidths 25 5.925482e-06 insert Upsilon2Swidth:InterpolationWidths 26 5.9266725e-06 insert Upsilon2Swidth:InterpolationWidths 27 5.9278631e-06 insert Upsilon2Swidth:InterpolationWidths 28 5.9290539e-06 insert Upsilon2Swidth:InterpolationWidths 29 5.930245e-06 insert Upsilon2Swidth:InterpolationWidths 30 5.9314362e-06 insert Upsilon2Swidth:InterpolationWidths 31 5.9326276e-06 insert Upsilon2Swidth:InterpolationWidths 32 5.9338193e-06 insert Upsilon2Swidth:InterpolationWidths 33 5.9350111e-06 insert Upsilon2Swidth:InterpolationWidths 34 5.9362031e-06 insert Upsilon2Swidth:InterpolationWidths 35 5.9373954e-06 insert Upsilon2Swidth:InterpolationWidths 36 5.9385878e-06 insert Upsilon2Swidth:InterpolationWidths 37 5.9397804e-06 insert Upsilon2Swidth:InterpolationWidths 38 5.9409732e-06 insert Upsilon2Swidth:InterpolationWidths 39 5.9421662e-06 insert Upsilon2Swidth:InterpolationWidths 40 5.9433595e-06 insert Upsilon2Swidth:InterpolationWidths 41 5.9445529e-06 insert Upsilon2Swidth:InterpolationWidths 42 5.9457465e-06 insert Upsilon2Swidth:InterpolationWidths 43 5.9469403e-06 insert Upsilon2Swidth:InterpolationWidths 44 5.9481343e-06 insert Upsilon2Swidth:InterpolationWidths 45 5.9493285e-06 insert Upsilon2Swidth:InterpolationWidths 46 5.9505229e-06 insert Upsilon2Swidth:InterpolationWidths 47 5.9517175e-06 insert Upsilon2Swidth:InterpolationWidths 48 5.9529123e-06 insert Upsilon2Swidth:InterpolationWidths 49 5.9541073e-06 insert Upsilon2Swidth:InterpolationWidths 50 3.1231712e-06 insert Upsilon2Swidth:InterpolationWidths 51 3.1237894e-06 insert Upsilon2Swidth:InterpolationWidths 52 3.1244077e-06 insert Upsilon2Swidth:InterpolationWidths 53 3.125026e-06 insert Upsilon2Swidth:InterpolationWidths 54 3.1256445e-06 insert Upsilon2Swidth:InterpolationWidths 55 3.1262631e-06 insert Upsilon2Swidth:InterpolationWidths 56 3.1268817e-06 insert Upsilon2Swidth:InterpolationWidths 57 3.1275005e-06 insert Upsilon2Swidth:InterpolationWidths 58 3.1281194e-06 insert Upsilon2Swidth:InterpolationWidths 59 3.1287383e-06 insert Upsilon2Swidth:InterpolationWidths 60 3.1293574e-06 insert Upsilon2Swidth:InterpolationWidths 61 3.1299766e-06 insert Upsilon2Swidth:InterpolationWidths 62 3.1305959e-06 insert Upsilon2Swidth:InterpolationWidths 63 3.1312152e-06 insert Upsilon2Swidth:InterpolationWidths 64 3.1318347e-06 insert Upsilon2Swidth:InterpolationWidths 65 3.1324543e-06 insert Upsilon2Swidth:InterpolationWidths 66 3.133074e-06 insert Upsilon2Swidth:InterpolationWidths 67 3.1336938e-06 insert Upsilon2Swidth:InterpolationWidths 68 3.1343137e-06 insert Upsilon2Swidth:InterpolationWidths 69 3.1349336e-06 insert Upsilon2Swidth:InterpolationWidths 70 3.1355537e-06 insert Upsilon2Swidth:InterpolationWidths 71 3.1361739e-06 insert Upsilon2Swidth:InterpolationWidths 72 3.1367942e-06 insert Upsilon2Swidth:InterpolationWidths 73 3.1374146e-06 insert Upsilon2Swidth:InterpolationWidths 74 3.1380351e-06 insert Upsilon2Swidth:InterpolationWidths 75 3.1386557e-06 insert Upsilon2Swidth:InterpolationWidths 76 3.1392764e-06 insert Upsilon2Swidth:InterpolationWidths 77 3.1398972e-06 insert Upsilon2Swidth:InterpolationWidths 78 3.1405181e-06 insert Upsilon2Swidth:InterpolationWidths 79 3.1411391e-06 insert Upsilon2Swidth:InterpolationWidths 80 3.1417602e-06 insert Upsilon2Swidth:InterpolationWidths 81 3.1423814e-06 insert Upsilon2Swidth:InterpolationWidths 82 3.1430027e-06 insert Upsilon2Swidth:InterpolationWidths 83 3.1436241e-06 insert Upsilon2Swidth:InterpolationWidths 84 3.1442456e-06 insert Upsilon2Swidth:InterpolationWidths 85 3.1448673e-06 insert Upsilon2Swidth:InterpolationWidths 86 3.145489e-06 insert Upsilon2Swidth:InterpolationWidths 87 3.1461108e-06 insert Upsilon2Swidth:InterpolationWidths 88 3.1467327e-06 insert Upsilon2Swidth:InterpolationWidths 89 3.1473547e-06 insert Upsilon2Swidth:InterpolationWidths 90 3.1479769e-06 insert Upsilon2Swidth:InterpolationWidths 91 3.1485991e-06 insert Upsilon2Swidth:InterpolationWidths 92 3.1492214e-06 insert Upsilon2Swidth:InterpolationWidths 93 3.1498438e-06 insert Upsilon2Swidth:InterpolationWidths 94 3.1504664e-06 insert Upsilon2Swidth:InterpolationWidths 95 3.151089e-06 insert Upsilon2Swidth:InterpolationWidths 96 3.1517117e-06 insert Upsilon2Swidth:InterpolationWidths 97 3.1523346e-06 insert Upsilon2Swidth:InterpolationWidths 98 3.1529575e-06 insert Upsilon2Swidth:InterpolationWidths 99 3.1535805e-06 insert Upsilon2Swidth:InterpolationWidths 100 1.2072121e-06 insert Upsilon2Swidth:InterpolationWidths 101 1.2074989e-06 insert Upsilon2Swidth:InterpolationWidths 102 1.2077858e-06 insert Upsilon2Swidth:InterpolationWidths 103 1.2080727e-06 insert Upsilon2Swidth:InterpolationWidths 104 1.2083597e-06 insert Upsilon2Swidth:InterpolationWidths 105 1.2086467e-06 insert Upsilon2Swidth:InterpolationWidths 106 1.2089337e-06 insert Upsilon2Swidth:InterpolationWidths 107 1.2092208e-06 insert Upsilon2Swidth:InterpolationWidths 108 1.209508e-06 insert Upsilon2Swidth:InterpolationWidths 109 1.2097951e-06 insert Upsilon2Swidth:InterpolationWidths 110 1.2100824e-06 insert Upsilon2Swidth:InterpolationWidths 111 1.2103696e-06 insert Upsilon2Swidth:InterpolationWidths 112 1.2106569e-06 insert Upsilon2Swidth:InterpolationWidths 113 1.2109443e-06 insert Upsilon2Swidth:InterpolationWidths 114 1.2112317e-06 insert Upsilon2Swidth:InterpolationWidths 115 1.2115192e-06 insert Upsilon2Swidth:InterpolationWidths 116 1.2118067e-06 insert Upsilon2Swidth:InterpolationWidths 117 1.2120942e-06 insert Upsilon2Swidth:InterpolationWidths 118 1.2123818e-06 insert Upsilon2Swidth:InterpolationWidths 119 1.2126694e-06 insert Upsilon2Swidth:InterpolationWidths 120 1.2129571e-06 insert Upsilon2Swidth:InterpolationWidths 121 1.2132448e-06 insert Upsilon2Swidth:InterpolationWidths 122 1.2135326e-06 insert Upsilon2Swidth:InterpolationWidths 123 1.2138204e-06 insert Upsilon2Swidth:InterpolationWidths 124 1.2141083e-06 insert Upsilon2Swidth:InterpolationWidths 125 1.2143962e-06 insert Upsilon2Swidth:InterpolationWidths 126 1.2146841e-06 insert Upsilon2Swidth:InterpolationWidths 127 1.2149721e-06 insert Upsilon2Swidth:InterpolationWidths 128 1.2152601e-06 insert Upsilon2Swidth:InterpolationWidths 129 1.2155482e-06 insert Upsilon2Swidth:InterpolationWidths 130 1.2158364e-06 insert Upsilon2Swidth:InterpolationWidths 131 1.2161245e-06 insert Upsilon2Swidth:InterpolationWidths 132 1.2164128e-06 insert Upsilon2Swidth:InterpolationWidths 133 1.216701e-06 insert Upsilon2Swidth:InterpolationWidths 134 1.2169893e-06 insert Upsilon2Swidth:InterpolationWidths 135 1.2172777e-06 insert Upsilon2Swidth:InterpolationWidths 136 1.2175661e-06 insert Upsilon2Swidth:InterpolationWidths 137 1.2178545e-06 insert Upsilon2Swidth:InterpolationWidths 138 1.218143e-06 insert Upsilon2Swidth:InterpolationWidths 139 1.2184316e-06 insert Upsilon2Swidth:InterpolationWidths 140 1.2187201e-06 insert Upsilon2Swidth:InterpolationWidths 141 1.2190088e-06 insert Upsilon2Swidth:InterpolationWidths 142 1.2192974e-06 insert Upsilon2Swidth:InterpolationWidths 143 1.2195861e-06 insert Upsilon2Swidth:InterpolationWidths 144 1.2198749e-06 insert Upsilon2Swidth:InterpolationWidths 145 1.2201637e-06 insert Upsilon2Swidth:InterpolationWidths 146 1.2204526e-06 insert Upsilon2Swidth:InterpolationWidths 147 1.2207415e-06 insert Upsilon2Swidth:InterpolationWidths 148 1.2210304e-06 insert Upsilon2Swidth:InterpolationWidths 149 1.2213194e-06 insert Upsilon2Swidth:InterpolationWidths 150 1.2216084e-06 insert Upsilon2Swidth:InterpolationWidths 151 1.2218975e-06 insert Upsilon2Swidth:InterpolationWidths 152 1.2221866e-06 insert Upsilon2Swidth:InterpolationWidths 153 1.2224758e-06 insert Upsilon2Swidth:NumberofEntries 0 50 insert Upsilon2Swidth:NumberofEntries 1 100 insert Upsilon2Swidth:NumberofEntries 2 100 insert Upsilon2Swidth:NumberofEntries 3 154 insert Upsilon2Swidth:NumberofEntries 4 154 insert Upsilon2Swidth:NumberofEntries 5 154 insert Upsilon2Swidth:NumberofEntries 6 154 insert Upsilon2Swidth:NumberofEntries 7 154 insert Upsilon2Swidth:NumberofEntries 8 154 insert Upsilon2Swidth:NumberofEntries 9 154 insert Upsilon2Swidth:NumberofEntries 10 154 insert Upsilon2Swidth:NumberofEntries 11 154 insert Upsilon2Swidth:NumberofEntries 12 154 insert Upsilon2Swidth:NumberofEntries 13 154 newdef /Herwig/Particles/Upsilon(2S):Width_generator Upsilon2Swidth # create Herwig::GenericWidthGenerator Upsilon3Swidth newdef Upsilon3Swidth:Particle /Herwig/Particles/Upsilon(3S) newdef Upsilon3Swidth:Prefactor 1.02934 newdef Upsilon3Swidth:BRNormalize 1 newdef Upsilon3Swidth:BRMinimum 0.01 newdef Upsilon3Swidth:Points 50 newdef Upsilon3Swidth:InterpolationOrder 1 insert Upsilon3Swidth:MEtype 0 0 insert Upsilon3Swidth:MEtype 1 2 insert Upsilon3Swidth:MEtype 2 2 insert Upsilon3Swidth:MEtype 3 2 insert Upsilon3Swidth:MEtype 4 2 insert Upsilon3Swidth:MEtype 5 0 insert Upsilon3Swidth:MEtype 6 2 insert Upsilon3Swidth:MEtype 7 0 insert Upsilon3Swidth:MEtype 8 0 insert Upsilon3Swidth:MEtype 9 0 insert Upsilon3Swidth:MEtype 10 0 insert Upsilon3Swidth:MEtype 11 1 insert Upsilon3Swidth:MEtype 12 0 insert Upsilon3Swidth:MEtype 13 0 insert Upsilon3Swidth:MEtype 14 1 insert Upsilon3Swidth:MEtype 15 0 insert Upsilon3Swidth:MEtype 16 1 insert Upsilon3Swidth:MEtype 17 0 insert Upsilon3Swidth:MEcode 0 0 insert Upsilon3Swidth:MEcode 1 0 insert Upsilon3Swidth:MEcode 2 0 insert Upsilon3Swidth:MEcode 3 0 insert Upsilon3Swidth:MEcode 4 0 insert Upsilon3Swidth:MEcode 5 0 insert Upsilon3Swidth:MEcode 6 0 insert Upsilon3Swidth:MEcode 7 0 insert Upsilon3Swidth:MEcode 8 0 insert Upsilon3Swidth:MEcode 9 0 insert Upsilon3Swidth:MEcode 10 0 insert Upsilon3Swidth:MEcode 11 2 insert Upsilon3Swidth:MEcode 12 0 insert Upsilon3Swidth:MEcode 13 0 insert Upsilon3Swidth:MEcode 14 2 insert Upsilon3Swidth:MEcode 15 0 insert Upsilon3Swidth:MEcode 16 2 insert Upsilon3Swidth:MEcode 17 0 insert Upsilon3Swidth:MEcoupling 0 0.05 insert Upsilon3Swidth:MEcoupling 1 0.952159 insert Upsilon3Swidth:MEcoupling 2 0.99584 insert Upsilon3Swidth:MEcoupling 3 1.02652 insert Upsilon3Swidth:MEcoupling 4 0.925082 insert Upsilon3Swidth:MEcoupling 5 0.031 insert Upsilon3Swidth:MEcoupling 6 1.00441 insert Upsilon3Swidth:MEcoupling 7 0.003 insert Upsilon3Swidth:MEcoupling 8 0.126 insert Upsilon3Swidth:MEcoupling 9 0.131 insert Upsilon3Swidth:MEcoupling 10 0.008 insert Upsilon3Swidth:MEcoupling 11 0.00126992 insert Upsilon3Swidth:MEcoupling 12 0.3649 insert Upsilon3Swidth:MEcoupling 13 0.0095 insert Upsilon3Swidth:MEcoupling 14 0.00126992 insert Upsilon3Swidth:MEcoupling 15 0.008 insert Upsilon3Swidth:MEcoupling 16 0.00126752 insert Upsilon3Swidth:MEcoupling 17 0.031 insert Upsilon3Swidth:ModeOn 0 1 insert Upsilon3Swidth:ModeOn 1 1 insert Upsilon3Swidth:ModeOn 2 1 insert Upsilon3Swidth:ModeOn 3 1 insert Upsilon3Swidth:ModeOn 4 1 insert Upsilon3Swidth:ModeOn 5 1 insert Upsilon3Swidth:ModeOn 6 1 insert Upsilon3Swidth:ModeOn 7 0 insert Upsilon3Swidth:ModeOn 8 1 insert Upsilon3Swidth:ModeOn 9 1 insert Upsilon3Swidth:ModeOn 10 0 insert Upsilon3Swidth:ModeOn 11 1 insert Upsilon3Swidth:ModeOn 12 1 insert Upsilon3Swidth:ModeOn 13 0 insert Upsilon3Swidth:ModeOn 14 1 insert Upsilon3Swidth:ModeOn 15 0 insert Upsilon3Swidth:ModeOn 16 1 insert Upsilon3Swidth:ModeOn 17 1 insert Upsilon3Swidth:MinimumMasses 0 10.0229 insert Upsilon3Swidth:MinimumMasses 1 10.3021 insert Upsilon3Swidth:MinimumMasses 2 10.2929 insert Upsilon3Swidth:MinimumMasses 3 9.7389 insert Upsilon3Swidth:MinimumMasses 4 9.72972 insert Upsilon3Swidth:MinimumMasses 5 2.7 insert Upsilon3Swidth:MinimumMasses 6 10.2236 insert Upsilon3Swidth:MinimumMasses 7 9.85127 insert Upsilon3Swidth:MinimumMasses 8 10.2547 insert Upsilon3Swidth:MinimumMasses 9 10.2668 insert Upsilon3Swidth:MinimumMasses 10 0.0198 insert Upsilon3Swidth:MinimumMasses 11 0.00102 insert Upsilon3Swidth:MinimumMasses 12 0 insert Upsilon3Swidth:MinimumMasses 13 0 insert Upsilon3Swidth:MinimumMasses 14 0.21132 insert Upsilon3Swidth:MinimumMasses 15 0.398 insert Upsilon3Swidth:MinimumMasses 16 3.554 insert Upsilon3Swidth:MinimumMasses 17 0.0112 insert Upsilon3Swidth:MEmass1 0 0 insert Upsilon3Swidth:MEmass1 1 0 insert Upsilon3Swidth:MEmass1 2 0 insert Upsilon3Swidth:MEmass1 3 0 insert Upsilon3Swidth:MEmass1 4 0 insert Upsilon3Swidth:MEmass1 5 0 insert Upsilon3Swidth:MEmass1 6 0 insert Upsilon3Swidth:MEmass1 7 0 insert Upsilon3Swidth:MEmass1 8 0 insert Upsilon3Swidth:MEmass1 9 0 insert Upsilon3Swidth:MEmass1 10 0 insert Upsilon3Swidth:MEmass1 11 0.00051 insert Upsilon3Swidth:MEmass1 12 0 insert Upsilon3Swidth:MEmass1 13 0 insert Upsilon3Swidth:MEmass1 14 0.10566 insert Upsilon3Swidth:MEmass1 15 0 insert Upsilon3Swidth:MEmass1 16 1.777 insert Upsilon3Swidth:MEmass1 17 0 insert Upsilon3Swidth:MEmass2 0 0 insert Upsilon3Swidth:MEmass2 1 0 insert Upsilon3Swidth:MEmass2 2 0 insert Upsilon3Swidth:MEmass2 3 0 insert Upsilon3Swidth:MEmass2 4 0 insert Upsilon3Swidth:MEmass2 5 0 insert Upsilon3Swidth:MEmass2 6 10.2325 insert Upsilon3Swidth:MEmass2 7 0 insert Upsilon3Swidth:MEmass2 8 0 insert Upsilon3Swidth:MEmass2 9 0 insert Upsilon3Swidth:MEmass2 10 0 insert Upsilon3Swidth:MEmass2 11 0.00051 insert Upsilon3Swidth:MEmass2 12 0 insert Upsilon3Swidth:MEmass2 13 0 insert Upsilon3Swidth:MEmass2 14 0.10566 insert Upsilon3Swidth:MEmass2 15 0 insert Upsilon3Swidth:MEmass2 16 1.777 insert Upsilon3Swidth:MEmass2 17 0 insert Upsilon3Swidth:DecayModes 0 Upsilon(3S)->Upsilon(2S),gamma,gamma; insert Upsilon3Swidth:DecayModes 1 Upsilon(3S)->Upsilon(2S),pi+,pi-; insert Upsilon3Swidth:DecayModes 2 Upsilon(3S)->Upsilon(2S),pi0,pi0; insert Upsilon3Swidth:DecayModes 3 Upsilon(3S)->Upsilon,pi+,pi-; insert Upsilon3Swidth:DecayModes 4 Upsilon(3S)->Upsilon,pi0,pi0; insert Upsilon3Swidth:DecayModes 5 Upsilon(3S)->c,cbar; insert Upsilon3Swidth:DecayModes 6 Upsilon(3S)->chi_b0(2P),gamma; insert Upsilon3Swidth:DecayModes 7 Upsilon(3S)->chi_b0,gamma; insert Upsilon3Swidth:DecayModes 8 Upsilon(3S)->chi_b1(2P),gamma; insert Upsilon3Swidth:DecayModes 9 Upsilon(3S)->chi_b2(2P),gamma; insert Upsilon3Swidth:DecayModes 10 Upsilon(3S)->d,dbar; insert Upsilon3Swidth:DecayModes 11 Upsilon(3S)->e-,e+; insert Upsilon3Swidth:DecayModes 12 Upsilon(3S)->g,g,g; insert Upsilon3Swidth:DecayModes 13 Upsilon(3S)->gamma,g,g; insert Upsilon3Swidth:DecayModes 14 Upsilon(3S)->mu-,mu+; insert Upsilon3Swidth:DecayModes 15 Upsilon(3S)->s,sbar; insert Upsilon3Swidth:DecayModes 16 Upsilon(3S)->tau-,tau+; insert Upsilon3Swidth:DecayModes 17 Upsilon(3S)->u,ubar; insert Upsilon3Swidth:InterpolationMasses 0 10.354997 insert Upsilon3Swidth:InterpolationMasses 1 10.355005 insert Upsilon3Swidth:InterpolationMasses 2 10.355013 insert Upsilon3Swidth:InterpolationMasses 3 10.355022 insert Upsilon3Swidth:InterpolationMasses 4 10.35503 insert Upsilon3Swidth:InterpolationMasses 5 10.355038 insert Upsilon3Swidth:InterpolationMasses 6 10.355047 insert Upsilon3Swidth:InterpolationMasses 7 10.355055 insert Upsilon3Swidth:InterpolationMasses 8 10.355063 insert Upsilon3Swidth:InterpolationMasses 9 10.355071 insert Upsilon3Swidth:InterpolationMasses 10 10.35508 insert Upsilon3Swidth:InterpolationMasses 11 10.355088 insert Upsilon3Swidth:InterpolationMasses 12 10.355096 insert Upsilon3Swidth:InterpolationMasses 13 10.355105 insert Upsilon3Swidth:InterpolationMasses 14 10.355113 insert Upsilon3Swidth:InterpolationMasses 15 10.355121 insert Upsilon3Swidth:InterpolationMasses 16 10.35513 insert Upsilon3Swidth:InterpolationMasses 17 10.355138 insert Upsilon3Swidth:InterpolationMasses 18 10.355146 insert Upsilon3Swidth:InterpolationMasses 19 10.355154 insert Upsilon3Swidth:InterpolationMasses 20 10.355163 insert Upsilon3Swidth:InterpolationMasses 21 10.355171 insert Upsilon3Swidth:InterpolationMasses 22 10.355179 insert Upsilon3Swidth:InterpolationMasses 23 10.355188 insert Upsilon3Swidth:InterpolationMasses 24 10.355196 insert Upsilon3Swidth:InterpolationMasses 25 10.355204 insert Upsilon3Swidth:InterpolationMasses 26 10.355212 insert Upsilon3Swidth:InterpolationMasses 27 10.355221 insert Upsilon3Swidth:InterpolationMasses 28 10.355229 insert Upsilon3Swidth:InterpolationMasses 29 10.355237 insert Upsilon3Swidth:InterpolationMasses 30 10.355246 insert Upsilon3Swidth:InterpolationMasses 31 10.355254 insert Upsilon3Swidth:InterpolationMasses 32 10.355262 insert Upsilon3Swidth:InterpolationMasses 33 10.35527 insert Upsilon3Swidth:InterpolationMasses 34 10.355279 insert Upsilon3Swidth:InterpolationMasses 35 10.355287 insert Upsilon3Swidth:InterpolationMasses 36 10.355295 insert Upsilon3Swidth:InterpolationMasses 37 10.355304 insert Upsilon3Swidth:InterpolationMasses 38 10.355312 insert Upsilon3Swidth:InterpolationMasses 39 10.35532 insert Upsilon3Swidth:InterpolationMasses 40 10.355329 insert Upsilon3Swidth:InterpolationMasses 41 10.355337 insert Upsilon3Swidth:InterpolationMasses 42 10.355345 insert Upsilon3Swidth:InterpolationMasses 43 10.355353 insert Upsilon3Swidth:InterpolationMasses 44 10.355362 insert Upsilon3Swidth:InterpolationMasses 45 10.35537 insert Upsilon3Swidth:InterpolationMasses 46 10.355378 insert Upsilon3Swidth:InterpolationMasses 47 10.355387 insert Upsilon3Swidth:InterpolationMasses 48 10.355395 insert Upsilon3Swidth:InterpolationMasses 49 10.355403 insert Upsilon3Swidth:InterpolationMasses 50 10.354997 insert Upsilon3Swidth:InterpolationMasses 51 10.355005 insert Upsilon3Swidth:InterpolationMasses 52 10.355013 insert Upsilon3Swidth:InterpolationMasses 53 10.355022 insert Upsilon3Swidth:InterpolationMasses 54 10.35503 insert Upsilon3Swidth:InterpolationMasses 55 10.355038 insert Upsilon3Swidth:InterpolationMasses 56 10.355047 insert Upsilon3Swidth:InterpolationMasses 57 10.355055 insert Upsilon3Swidth:InterpolationMasses 58 10.355063 insert Upsilon3Swidth:InterpolationMasses 59 10.355071 insert Upsilon3Swidth:InterpolationMasses 60 10.35508 insert Upsilon3Swidth:InterpolationMasses 61 10.355088 insert Upsilon3Swidth:InterpolationMasses 62 10.355096 insert Upsilon3Swidth:InterpolationMasses 63 10.355105 insert Upsilon3Swidth:InterpolationMasses 64 10.355113 insert Upsilon3Swidth:InterpolationMasses 65 10.355121 insert Upsilon3Swidth:InterpolationMasses 66 10.35513 insert Upsilon3Swidth:InterpolationMasses 67 10.355138 insert Upsilon3Swidth:InterpolationMasses 68 10.355146 insert Upsilon3Swidth:InterpolationMasses 69 10.355154 insert Upsilon3Swidth:InterpolationMasses 70 10.355163 insert Upsilon3Swidth:InterpolationMasses 71 10.355171 insert Upsilon3Swidth:InterpolationMasses 72 10.355179 insert Upsilon3Swidth:InterpolationMasses 73 10.355188 insert Upsilon3Swidth:InterpolationMasses 74 10.355196 insert Upsilon3Swidth:InterpolationMasses 75 10.355204 insert Upsilon3Swidth:InterpolationMasses 76 10.355212 insert Upsilon3Swidth:InterpolationMasses 77 10.355221 insert Upsilon3Swidth:InterpolationMasses 78 10.355229 insert Upsilon3Swidth:InterpolationMasses 79 10.355237 insert Upsilon3Swidth:InterpolationMasses 80 10.355246 insert Upsilon3Swidth:InterpolationMasses 81 10.355254 insert Upsilon3Swidth:InterpolationMasses 82 10.355262 insert Upsilon3Swidth:InterpolationMasses 83 10.35527 insert Upsilon3Swidth:InterpolationMasses 84 10.355279 insert Upsilon3Swidth:InterpolationMasses 85 10.355287 insert Upsilon3Swidth:InterpolationMasses 86 10.355295 insert Upsilon3Swidth:InterpolationMasses 87 10.355304 insert Upsilon3Swidth:InterpolationMasses 88 10.355312 insert Upsilon3Swidth:InterpolationMasses 89 10.35532 insert Upsilon3Swidth:InterpolationMasses 90 10.355329 insert Upsilon3Swidth:InterpolationMasses 91 10.355337 insert Upsilon3Swidth:InterpolationMasses 92 10.355345 insert Upsilon3Swidth:InterpolationMasses 93 10.355353 insert Upsilon3Swidth:InterpolationMasses 94 10.355362 insert Upsilon3Swidth:InterpolationMasses 95 10.35537 insert Upsilon3Swidth:InterpolationMasses 96 10.355378 insert Upsilon3Swidth:InterpolationMasses 97 10.355387 insert Upsilon3Swidth:InterpolationMasses 98 10.355395 insert Upsilon3Swidth:InterpolationMasses 99 10.355403 insert Upsilon3Swidth:InterpolationMasses 100 10.354997 insert Upsilon3Swidth:InterpolationMasses 101 10.355005 insert Upsilon3Swidth:InterpolationMasses 102 10.355013 insert Upsilon3Swidth:InterpolationMasses 103 10.355022 insert Upsilon3Swidth:InterpolationMasses 104 10.35503 insert Upsilon3Swidth:InterpolationMasses 105 10.355038 insert Upsilon3Swidth:InterpolationMasses 106 10.355047 insert Upsilon3Swidth:InterpolationMasses 107 10.355055 insert Upsilon3Swidth:InterpolationMasses 108 10.355063 insert Upsilon3Swidth:InterpolationMasses 109 10.355071 insert Upsilon3Swidth:InterpolationMasses 110 10.35508 insert Upsilon3Swidth:InterpolationMasses 111 10.355088 insert Upsilon3Swidth:InterpolationMasses 112 10.355096 insert Upsilon3Swidth:InterpolationMasses 113 10.355105 insert Upsilon3Swidth:InterpolationMasses 114 10.355113 insert Upsilon3Swidth:InterpolationMasses 115 10.355121 insert Upsilon3Swidth:InterpolationMasses 116 10.35513 insert Upsilon3Swidth:InterpolationMasses 117 10.355138 insert Upsilon3Swidth:InterpolationMasses 118 10.355146 insert Upsilon3Swidth:InterpolationMasses 119 10.355154 insert Upsilon3Swidth:InterpolationMasses 120 10.355163 insert Upsilon3Swidth:InterpolationMasses 121 10.355171 insert Upsilon3Swidth:InterpolationMasses 122 10.355179 insert Upsilon3Swidth:InterpolationMasses 123 10.355188 insert Upsilon3Swidth:InterpolationMasses 124 10.355196 insert Upsilon3Swidth:InterpolationMasses 125 10.355204 insert Upsilon3Swidth:InterpolationMasses 126 10.355212 insert Upsilon3Swidth:InterpolationMasses 127 10.355221 insert Upsilon3Swidth:InterpolationMasses 128 10.355229 insert Upsilon3Swidth:InterpolationMasses 129 10.355237 insert Upsilon3Swidth:InterpolationMasses 130 10.355246 insert Upsilon3Swidth:InterpolationMasses 131 10.355254 insert Upsilon3Swidth:InterpolationMasses 132 10.355262 insert Upsilon3Swidth:InterpolationMasses 133 10.35527 insert Upsilon3Swidth:InterpolationMasses 134 10.355279 insert Upsilon3Swidth:InterpolationMasses 135 10.355287 insert Upsilon3Swidth:InterpolationMasses 136 10.355295 insert Upsilon3Swidth:InterpolationMasses 137 10.355304 insert Upsilon3Swidth:InterpolationMasses 138 10.355312 insert Upsilon3Swidth:InterpolationMasses 139 10.35532 insert Upsilon3Swidth:InterpolationMasses 140 10.355329 insert Upsilon3Swidth:InterpolationMasses 141 10.355337 insert Upsilon3Swidth:InterpolationMasses 142 10.355345 insert Upsilon3Swidth:InterpolationMasses 143 10.355353 insert Upsilon3Swidth:InterpolationMasses 144 10.355362 insert Upsilon3Swidth:InterpolationMasses 145 10.35537 insert Upsilon3Swidth:InterpolationMasses 146 10.355378 insert Upsilon3Swidth:InterpolationMasses 147 10.355387 insert Upsilon3Swidth:InterpolationMasses 148 10.355395 insert Upsilon3Swidth:InterpolationMasses 149 10.355403 insert Upsilon3Swidth:InterpolationMasses 150 10.354997 insert Upsilon3Swidth:InterpolationMasses 151 10.355005 insert Upsilon3Swidth:InterpolationMasses 152 10.355013 insert Upsilon3Swidth:InterpolationMasses 153 10.355022 insert Upsilon3Swidth:InterpolationMasses 154 10.35503 insert Upsilon3Swidth:InterpolationMasses 155 10.355038 insert Upsilon3Swidth:InterpolationMasses 156 10.355047 insert Upsilon3Swidth:InterpolationMasses 157 10.355055 insert Upsilon3Swidth:InterpolationMasses 158 10.355063 insert Upsilon3Swidth:InterpolationMasses 159 10.355071 insert Upsilon3Swidth:InterpolationMasses 160 10.35508 insert Upsilon3Swidth:InterpolationMasses 161 10.355088 insert Upsilon3Swidth:InterpolationMasses 162 10.355096 insert Upsilon3Swidth:InterpolationMasses 163 10.355105 insert Upsilon3Swidth:InterpolationMasses 164 10.355113 insert Upsilon3Swidth:InterpolationMasses 165 10.355121 insert Upsilon3Swidth:InterpolationMasses 166 10.35513 insert Upsilon3Swidth:InterpolationMasses 167 10.355138 insert Upsilon3Swidth:InterpolationMasses 168 10.355146 insert Upsilon3Swidth:InterpolationMasses 169 10.355154 insert Upsilon3Swidth:InterpolationMasses 170 10.355163 insert Upsilon3Swidth:InterpolationMasses 171 10.355171 insert Upsilon3Swidth:InterpolationMasses 172 10.355179 insert Upsilon3Swidth:InterpolationMasses 173 10.355188 insert Upsilon3Swidth:InterpolationMasses 174 10.355196 insert Upsilon3Swidth:InterpolationMasses 175 10.355204 insert Upsilon3Swidth:InterpolationMasses 176 10.355212 insert Upsilon3Swidth:InterpolationMasses 177 10.355221 insert Upsilon3Swidth:InterpolationMasses 178 10.355229 insert Upsilon3Swidth:InterpolationMasses 179 10.355237 insert Upsilon3Swidth:InterpolationMasses 180 10.355246 insert Upsilon3Swidth:InterpolationMasses 181 10.355254 insert Upsilon3Swidth:InterpolationMasses 182 10.355262 insert Upsilon3Swidth:InterpolationMasses 183 10.35527 insert Upsilon3Swidth:InterpolationMasses 184 10.355279 insert Upsilon3Swidth:InterpolationMasses 185 10.355287 insert Upsilon3Swidth:InterpolationMasses 186 10.355295 insert Upsilon3Swidth:InterpolationMasses 187 10.355304 insert Upsilon3Swidth:InterpolationMasses 188 10.355312 insert Upsilon3Swidth:InterpolationMasses 189 10.35532 insert Upsilon3Swidth:InterpolationMasses 190 10.355329 insert Upsilon3Swidth:InterpolationMasses 191 10.355337 insert Upsilon3Swidth:InterpolationMasses 192 10.355345 insert Upsilon3Swidth:InterpolationMasses 193 10.355353 insert Upsilon3Swidth:InterpolationMasses 194 10.355362 insert Upsilon3Swidth:InterpolationMasses 195 10.35537 insert Upsilon3Swidth:InterpolationMasses 196 10.355378 insert Upsilon3Swidth:InterpolationMasses 197 10.355387 insert Upsilon3Swidth:InterpolationMasses 198 10.355395 insert Upsilon3Swidth:InterpolationMasses 199 10.355403 insert Upsilon3Swidth:InterpolationMasses 200 10.35498 insert Upsilon3Swidth:InterpolationMasses 201 10.354989 insert Upsilon3Swidth:InterpolationMasses 202 10.354997 insert Upsilon3Swidth:InterpolationMasses 203 10.355005 insert Upsilon3Swidth:InterpolationMasses 204 10.355013 insert Upsilon3Swidth:InterpolationMasses 205 10.355022 insert Upsilon3Swidth:InterpolationMasses 206 10.35503 insert Upsilon3Swidth:InterpolationMasses 207 10.355038 insert Upsilon3Swidth:InterpolationMasses 208 10.355047 insert Upsilon3Swidth:InterpolationMasses 209 10.355055 insert Upsilon3Swidth:InterpolationMasses 210 10.355063 insert Upsilon3Swidth:InterpolationMasses 211 10.355071 insert Upsilon3Swidth:InterpolationMasses 212 10.35508 insert Upsilon3Swidth:InterpolationMasses 213 10.355088 insert Upsilon3Swidth:InterpolationMasses 214 10.355096 insert Upsilon3Swidth:InterpolationMasses 215 10.355105 insert Upsilon3Swidth:InterpolationMasses 216 10.355113 insert Upsilon3Swidth:InterpolationMasses 217 10.355121 insert Upsilon3Swidth:InterpolationMasses 218 10.35513 insert Upsilon3Swidth:InterpolationMasses 219 10.355138 insert Upsilon3Swidth:InterpolationMasses 220 10.355146 insert Upsilon3Swidth:InterpolationMasses 221 10.355154 insert Upsilon3Swidth:InterpolationMasses 222 10.355163 insert Upsilon3Swidth:InterpolationMasses 223 10.355171 insert Upsilon3Swidth:InterpolationMasses 224 10.355179 insert Upsilon3Swidth:InterpolationMasses 225 10.355188 insert Upsilon3Swidth:InterpolationMasses 226 10.355196 insert Upsilon3Swidth:InterpolationMasses 227 10.355204 insert Upsilon3Swidth:InterpolationMasses 228 10.355212 insert Upsilon3Swidth:InterpolationMasses 229 10.355221 insert Upsilon3Swidth:InterpolationMasses 230 10.355229 insert Upsilon3Swidth:InterpolationMasses 231 10.355237 insert Upsilon3Swidth:InterpolationMasses 232 10.355246 insert Upsilon3Swidth:InterpolationMasses 233 10.355254 insert Upsilon3Swidth:InterpolationMasses 234 10.355262 insert Upsilon3Swidth:InterpolationMasses 235 10.35527 insert Upsilon3Swidth:InterpolationMasses 236 10.355279 insert Upsilon3Swidth:InterpolationMasses 237 10.355287 insert Upsilon3Swidth:InterpolationMasses 238 10.355295 insert Upsilon3Swidth:InterpolationMasses 239 10.355304 insert Upsilon3Swidth:InterpolationMasses 240 10.355312 insert Upsilon3Swidth:InterpolationMasses 241 10.35532 insert Upsilon3Swidth:InterpolationMasses 242 10.355329 insert Upsilon3Swidth:InterpolationMasses 243 10.355337 insert Upsilon3Swidth:InterpolationMasses 244 10.355345 insert Upsilon3Swidth:InterpolationMasses 245 10.355353 insert Upsilon3Swidth:InterpolationMasses 246 10.355362 insert Upsilon3Swidth:InterpolationMasses 247 10.35537 insert Upsilon3Swidth:InterpolationMasses 248 10.355378 insert Upsilon3Swidth:InterpolationMasses 249 10.355387 insert Upsilon3Swidth:InterpolationMasses 250 10.355395 insert Upsilon3Swidth:InterpolationMasses 251 10.355403 insert Upsilon3Swidth:InterpolationMasses 252 10.355411 insert Upsilon3Swidth:InterpolationMasses 253 10.35542 insert Upsilon3Swidth:InterpolationWidths 0 5.9127143e-07 insert Upsilon3Swidth:InterpolationWidths 1 5.9152665e-07 insert Upsilon3Swidth:InterpolationWidths 2 5.9178194e-07 insert Upsilon3Swidth:InterpolationWidths 3 5.9203731e-07 insert Upsilon3Swidth:InterpolationWidths 4 5.9229276e-07 insert Upsilon3Swidth:InterpolationWidths 5 5.925483e-07 insert Upsilon3Swidth:InterpolationWidths 6 5.9280391e-07 insert Upsilon3Swidth:InterpolationWidths 7 5.930596e-07 insert Upsilon3Swidth:InterpolationWidths 8 5.9331537e-07 insert Upsilon3Swidth:InterpolationWidths 9 5.9357121e-07 insert Upsilon3Swidth:InterpolationWidths 10 5.9382714e-07 insert Upsilon3Swidth:InterpolationWidths 11 5.9408315e-07 insert Upsilon3Swidth:InterpolationWidths 12 5.9433923e-07 insert Upsilon3Swidth:InterpolationWidths 13 5.945954e-07 insert Upsilon3Swidth:InterpolationWidths 14 5.9485164e-07 insert Upsilon3Swidth:InterpolationWidths 15 5.9510797e-07 insert Upsilon3Swidth:InterpolationWidths 16 5.9536437e-07 insert Upsilon3Swidth:InterpolationWidths 17 5.9562086e-07 insert Upsilon3Swidth:InterpolationWidths 18 5.9587742e-07 insert Upsilon3Swidth:InterpolationWidths 19 5.9613406e-07 insert Upsilon3Swidth:InterpolationWidths 20 5.9639078e-07 insert Upsilon3Swidth:InterpolationWidths 21 5.9664758e-07 insert Upsilon3Swidth:InterpolationWidths 22 5.9690446e-07 insert Upsilon3Swidth:InterpolationWidths 23 5.9716142e-07 insert Upsilon3Swidth:InterpolationWidths 24 5.9741846e-07 insert Upsilon3Swidth:InterpolationWidths 25 5.9767558e-07 insert Upsilon3Swidth:InterpolationWidths 26 5.9793278e-07 insert Upsilon3Swidth:InterpolationWidths 27 5.9819006e-07 insert Upsilon3Swidth:InterpolationWidths 28 5.9844742e-07 insert Upsilon3Swidth:InterpolationWidths 29 5.9870486e-07 insert Upsilon3Swidth:InterpolationWidths 30 5.9896237e-07 insert Upsilon3Swidth:InterpolationWidths 31 5.9921997e-07 insert Upsilon3Swidth:InterpolationWidths 32 5.9947765e-07 insert Upsilon3Swidth:InterpolationWidths 33 5.997354e-07 insert Upsilon3Swidth:InterpolationWidths 34 5.9999324e-07 insert Upsilon3Swidth:InterpolationWidths 35 6.0025115e-07 insert Upsilon3Swidth:InterpolationWidths 36 6.0050915e-07 insert Upsilon3Swidth:InterpolationWidths 37 6.0076723e-07 insert Upsilon3Swidth:InterpolationWidths 38 6.0102538e-07 insert Upsilon3Swidth:InterpolationWidths 39 6.0128361e-07 insert Upsilon3Swidth:InterpolationWidths 40 6.0154193e-07 insert Upsilon3Swidth:InterpolationWidths 41 6.0180032e-07 insert Upsilon3Swidth:InterpolationWidths 42 6.020588e-07 insert Upsilon3Swidth:InterpolationWidths 43 6.0231735e-07 insert Upsilon3Swidth:InterpolationWidths 44 6.0257599e-07 insert Upsilon3Swidth:InterpolationWidths 45 6.028347e-07 insert Upsilon3Swidth:InterpolationWidths 46 6.0309349e-07 insert Upsilon3Swidth:InterpolationWidths 47 6.0335237e-07 insert Upsilon3Swidth:InterpolationWidths 48 6.0361132e-07 insert Upsilon3Swidth:InterpolationWidths 49 6.0387035e-07 insert Upsilon3Swidth:InterpolationWidths 50 4.0427088e-07 insert Upsilon3Swidth:InterpolationWidths 51 4.0442655e-07 insert Upsilon3Swidth:InterpolationWidths 52 4.0458226e-07 insert Upsilon3Swidth:InterpolationWidths 53 4.0473802e-07 insert Upsilon3Swidth:InterpolationWidths 54 4.0489382e-07 insert Upsilon3Swidth:InterpolationWidths 55 4.0504966e-07 insert Upsilon3Swidth:InterpolationWidths 56 4.0520555e-07 insert Upsilon3Swidth:InterpolationWidths 57 4.0536149e-07 insert Upsilon3Swidth:InterpolationWidths 58 4.0551747e-07 insert Upsilon3Swidth:InterpolationWidths 59 4.0567349e-07 insert Upsilon3Swidth:InterpolationWidths 60 4.0582956e-07 insert Upsilon3Swidth:InterpolationWidths 61 4.0598567e-07 insert Upsilon3Swidth:InterpolationWidths 62 4.0614182e-07 insert Upsilon3Swidth:InterpolationWidths 63 4.0629802e-07 insert Upsilon3Swidth:InterpolationWidths 64 4.0645427e-07 insert Upsilon3Swidth:InterpolationWidths 65 4.0661056e-07 insert Upsilon3Swidth:InterpolationWidths 66 4.0676689e-07 insert Upsilon3Swidth:InterpolationWidths 67 4.0692327e-07 insert Upsilon3Swidth:InterpolationWidths 68 4.0707969e-07 insert Upsilon3Swidth:InterpolationWidths 69 4.0723615e-07 insert Upsilon3Swidth:InterpolationWidths 70 4.0739266e-07 insert Upsilon3Swidth:InterpolationWidths 71 4.0754922e-07 insert Upsilon3Swidth:InterpolationWidths 72 4.0770582e-07 insert Upsilon3Swidth:InterpolationWidths 73 4.0786246e-07 insert Upsilon3Swidth:InterpolationWidths 74 4.0801915e-07 insert Upsilon3Swidth:InterpolationWidths 75 4.0817588e-07 insert Upsilon3Swidth:InterpolationWidths 76 4.0833266e-07 insert Upsilon3Swidth:InterpolationWidths 77 4.0848948e-07 insert Upsilon3Swidth:InterpolationWidths 78 4.0864635e-07 insert Upsilon3Swidth:InterpolationWidths 79 4.0880326e-07 insert Upsilon3Swidth:InterpolationWidths 80 4.0896021e-07 insert Upsilon3Swidth:InterpolationWidths 81 4.0911721e-07 insert Upsilon3Swidth:InterpolationWidths 82 4.0927426e-07 insert Upsilon3Swidth:InterpolationWidths 83 4.0943135e-07 insert Upsilon3Swidth:InterpolationWidths 84 4.0958848e-07 insert Upsilon3Swidth:InterpolationWidths 85 4.0974566e-07 insert Upsilon3Swidth:InterpolationWidths 86 4.0990288e-07 insert Upsilon3Swidth:InterpolationWidths 87 4.1006015e-07 insert Upsilon3Swidth:InterpolationWidths 88 4.1021746e-07 insert Upsilon3Swidth:InterpolationWidths 89 4.1037481e-07 insert Upsilon3Swidth:InterpolationWidths 90 4.1053221e-07 insert Upsilon3Swidth:InterpolationWidths 91 4.1068966e-07 insert Upsilon3Swidth:InterpolationWidths 92 4.1084715e-07 insert Upsilon3Swidth:InterpolationWidths 93 4.1100468e-07 insert Upsilon3Swidth:InterpolationWidths 94 4.1116226e-07 insert Upsilon3Swidth:InterpolationWidths 95 4.1131989e-07 insert Upsilon3Swidth:InterpolationWidths 96 4.1147755e-07 insert Upsilon3Swidth:InterpolationWidths 97 4.1163527e-07 insert Upsilon3Swidth:InterpolationWidths 98 4.1179302e-07 insert Upsilon3Swidth:InterpolationWidths 99 4.1195083e-07 insert Upsilon3Swidth:InterpolationWidths 100 8.8534859e-07 insert Upsilon3Swidth:InterpolationWidths 101 8.8540857e-07 insert Upsilon3Swidth:InterpolationWidths 102 8.8546855e-07 insert Upsilon3Swidth:InterpolationWidths 103 8.8552854e-07 insert Upsilon3Swidth:InterpolationWidths 104 8.8558853e-07 insert Upsilon3Swidth:InterpolationWidths 105 8.8564852e-07 insert Upsilon3Swidth:InterpolationWidths 106 8.8570852e-07 insert Upsilon3Swidth:InterpolationWidths 107 8.8576852e-07 insert Upsilon3Swidth:InterpolationWidths 108 8.8582852e-07 insert Upsilon3Swidth:InterpolationWidths 109 8.8588853e-07 insert Upsilon3Swidth:InterpolationWidths 110 8.8594854e-07 insert Upsilon3Swidth:InterpolationWidths 111 8.8600855e-07 insert Upsilon3Swidth:InterpolationWidths 112 8.8606857e-07 insert Upsilon3Swidth:InterpolationWidths 113 8.8612859e-07 insert Upsilon3Swidth:InterpolationWidths 114 8.8618862e-07 insert Upsilon3Swidth:InterpolationWidths 115 8.8624864e-07 insert Upsilon3Swidth:InterpolationWidths 116 8.8630867e-07 insert Upsilon3Swidth:InterpolationWidths 117 8.8636871e-07 insert Upsilon3Swidth:InterpolationWidths 118 8.8642875e-07 insert Upsilon3Swidth:InterpolationWidths 119 8.8648879e-07 insert Upsilon3Swidth:InterpolationWidths 120 8.8654883e-07 insert Upsilon3Swidth:InterpolationWidths 121 8.8660888e-07 insert Upsilon3Swidth:InterpolationWidths 122 8.8666893e-07 insert Upsilon3Swidth:InterpolationWidths 123 8.8672898e-07 insert Upsilon3Swidth:InterpolationWidths 124 8.8678904e-07 insert Upsilon3Swidth:InterpolationWidths 125 8.868491e-07 insert Upsilon3Swidth:InterpolationWidths 126 8.8690917e-07 insert Upsilon3Swidth:InterpolationWidths 127 8.8696923e-07 insert Upsilon3Swidth:InterpolationWidths 128 8.8702931e-07 insert Upsilon3Swidth:InterpolationWidths 129 8.8708938e-07 insert Upsilon3Swidth:InterpolationWidths 130 8.8714946e-07 insert Upsilon3Swidth:InterpolationWidths 131 8.8720954e-07 insert Upsilon3Swidth:InterpolationWidths 132 8.8726962e-07 insert Upsilon3Swidth:InterpolationWidths 133 8.8732971e-07 insert Upsilon3Swidth:InterpolationWidths 134 8.873898e-07 insert Upsilon3Swidth:InterpolationWidths 135 8.874499e-07 insert Upsilon3Swidth:InterpolationWidths 136 8.8751e-07 insert Upsilon3Swidth:InterpolationWidths 137 8.875701e-07 insert Upsilon3Swidth:InterpolationWidths 138 8.876302e-07 insert Upsilon3Swidth:InterpolationWidths 139 8.8769031e-07 insert Upsilon3Swidth:InterpolationWidths 140 8.8775043e-07 insert Upsilon3Swidth:InterpolationWidths 141 8.8781054e-07 insert Upsilon3Swidth:InterpolationWidths 142 8.8787066e-07 insert Upsilon3Swidth:InterpolationWidths 143 8.8793078e-07 insert Upsilon3Swidth:InterpolationWidths 144 8.8799091e-07 insert Upsilon3Swidth:InterpolationWidths 145 8.8805104e-07 insert Upsilon3Swidth:InterpolationWidths 146 8.8811117e-07 insert Upsilon3Swidth:InterpolationWidths 147 8.881713e-07 insert Upsilon3Swidth:InterpolationWidths 148 8.8823144e-07 insert Upsilon3Swidth:InterpolationWidths 149 8.8829159e-07 insert Upsilon3Swidth:InterpolationWidths 150 4.5174588e-07 insert Upsilon3Swidth:InterpolationWidths 151 4.5177631e-07 insert Upsilon3Swidth:InterpolationWidths 152 4.5180674e-07 insert Upsilon3Swidth:InterpolationWidths 153 4.5183717e-07 insert Upsilon3Swidth:InterpolationWidths 154 4.518676e-07 insert Upsilon3Swidth:InterpolationWidths 155 4.5189803e-07 insert Upsilon3Swidth:InterpolationWidths 156 4.5192847e-07 insert Upsilon3Swidth:InterpolationWidths 157 4.5195891e-07 insert Upsilon3Swidth:InterpolationWidths 158 4.5198935e-07 insert Upsilon3Swidth:InterpolationWidths 159 4.5201979e-07 insert Upsilon3Swidth:InterpolationWidths 160 4.5205023e-07 insert Upsilon3Swidth:InterpolationWidths 161 4.5208068e-07 insert Upsilon3Swidth:InterpolationWidths 162 4.5211112e-07 insert Upsilon3Swidth:InterpolationWidths 163 4.5214157e-07 insert Upsilon3Swidth:InterpolationWidths 164 4.5217202e-07 insert Upsilon3Swidth:InterpolationWidths 165 4.5220247e-07 insert Upsilon3Swidth:InterpolationWidths 166 4.5223293e-07 insert Upsilon3Swidth:InterpolationWidths 167 4.5226338e-07 insert Upsilon3Swidth:InterpolationWidths 168 4.5229384e-07 insert Upsilon3Swidth:InterpolationWidths 169 4.5232429e-07 insert Upsilon3Swidth:InterpolationWidths 170 4.5235475e-07 insert Upsilon3Swidth:InterpolationWidths 171 4.5238522e-07 insert Upsilon3Swidth:InterpolationWidths 172 4.5241568e-07 insert Upsilon3Swidth:InterpolationWidths 173 4.5244615e-07 insert Upsilon3Swidth:InterpolationWidths 174 4.5247661e-07 insert Upsilon3Swidth:InterpolationWidths 175 4.5250708e-07 insert Upsilon3Swidth:InterpolationWidths 176 4.5253755e-07 insert Upsilon3Swidth:InterpolationWidths 177 4.5256802e-07 insert Upsilon3Swidth:InterpolationWidths 178 4.525985e-07 insert Upsilon3Swidth:InterpolationWidths 179 4.5262897e-07 insert Upsilon3Swidth:InterpolationWidths 180 4.5265945e-07 insert Upsilon3Swidth:InterpolationWidths 181 4.5268993e-07 insert Upsilon3Swidth:InterpolationWidths 182 4.5272041e-07 insert Upsilon3Swidth:InterpolationWidths 183 4.5275089e-07 insert Upsilon3Swidth:InterpolationWidths 184 4.5278138e-07 insert Upsilon3Swidth:InterpolationWidths 185 4.5281186e-07 insert Upsilon3Swidth:InterpolationWidths 186 4.5284235e-07 insert Upsilon3Swidth:InterpolationWidths 187 4.5287284e-07 insert Upsilon3Swidth:InterpolationWidths 188 4.5290333e-07 insert Upsilon3Swidth:InterpolationWidths 189 4.5293382e-07 insert Upsilon3Swidth:InterpolationWidths 190 4.5296431e-07 insert Upsilon3Swidth:InterpolationWidths 191 4.5299481e-07 insert Upsilon3Swidth:InterpolationWidths 192 4.5302531e-07 insert Upsilon3Swidth:InterpolationWidths 193 4.5305581e-07 insert Upsilon3Swidth:InterpolationWidths 194 4.5308631e-07 insert Upsilon3Swidth:InterpolationWidths 195 4.5311681e-07 insert Upsilon3Swidth:InterpolationWidths 196 4.5314732e-07 insert Upsilon3Swidth:InterpolationWidths 197 4.5317782e-07 insert Upsilon3Swidth:InterpolationWidths 198 4.5320833e-07 insert Upsilon3Swidth:InterpolationWidths 199 4.5323884e-07 insert Upsilon3Swidth:InterpolationWidths 200 1.1872519e-06 insert Upsilon3Swidth:InterpolationWidths 201 1.1874917e-06 insert Upsilon3Swidth:InterpolationWidths 202 1.1877314e-06 insert Upsilon3Swidth:InterpolationWidths 203 1.1879712e-06 insert Upsilon3Swidth:InterpolationWidths 204 1.188211e-06 insert Upsilon3Swidth:InterpolationWidths 205 1.1884508e-06 insert Upsilon3Swidth:InterpolationWidths 206 1.1886907e-06 insert Upsilon3Swidth:InterpolationWidths 207 1.1889306e-06 insert Upsilon3Swidth:InterpolationWidths 208 1.1891705e-06 insert Upsilon3Swidth:InterpolationWidths 209 1.1894105e-06 insert Upsilon3Swidth:InterpolationWidths 210 1.1896505e-06 insert Upsilon3Swidth:InterpolationWidths 211 1.1898905e-06 insert Upsilon3Swidth:InterpolationWidths 212 1.1901306e-06 insert Upsilon3Swidth:InterpolationWidths 213 1.1903707e-06 insert Upsilon3Swidth:InterpolationWidths 214 1.1906108e-06 insert Upsilon3Swidth:InterpolationWidths 215 1.190851e-06 insert Upsilon3Swidth:InterpolationWidths 216 1.1910912e-06 insert Upsilon3Swidth:InterpolationWidths 217 1.1913314e-06 insert Upsilon3Swidth:InterpolationWidths 218 1.1915716e-06 insert Upsilon3Swidth:InterpolationWidths 219 1.1918119e-06 insert Upsilon3Swidth:InterpolationWidths 220 1.1920523e-06 insert Upsilon3Swidth:InterpolationWidths 221 1.1922926e-06 insert Upsilon3Swidth:InterpolationWidths 222 1.192533e-06 insert Upsilon3Swidth:InterpolationWidths 223 1.1927734e-06 insert Upsilon3Swidth:InterpolationWidths 224 1.1930139e-06 insert Upsilon3Swidth:InterpolationWidths 225 1.1932543e-06 insert Upsilon3Swidth:InterpolationWidths 226 1.1934948e-06 insert Upsilon3Swidth:InterpolationWidths 227 1.1937354e-06 insert Upsilon3Swidth:InterpolationWidths 228 1.193976e-06 insert Upsilon3Swidth:InterpolationWidths 229 1.1942166e-06 insert Upsilon3Swidth:InterpolationWidths 230 1.1944572e-06 insert Upsilon3Swidth:InterpolationWidths 231 1.1946979e-06 insert Upsilon3Swidth:InterpolationWidths 232 1.1949386e-06 insert Upsilon3Swidth:InterpolationWidths 233 1.1951793e-06 insert Upsilon3Swidth:InterpolationWidths 234 1.1954201e-06 insert Upsilon3Swidth:InterpolationWidths 235 1.1956609e-06 insert Upsilon3Swidth:InterpolationWidths 236 1.1959017e-06 insert Upsilon3Swidth:InterpolationWidths 237 1.1961426e-06 insert Upsilon3Swidth:InterpolationWidths 238 1.1963835e-06 insert Upsilon3Swidth:InterpolationWidths 239 1.1966244e-06 insert Upsilon3Swidth:InterpolationWidths 240 1.1968654e-06 insert Upsilon3Swidth:InterpolationWidths 241 1.1971064e-06 insert Upsilon3Swidth:InterpolationWidths 242 1.1973474e-06 insert Upsilon3Swidth:InterpolationWidths 243 1.1975885e-06 insert Upsilon3Swidth:InterpolationWidths 244 1.1978296e-06 insert Upsilon3Swidth:InterpolationWidths 245 1.1980707e-06 insert Upsilon3Swidth:InterpolationWidths 246 1.1983119e-06 insert Upsilon3Swidth:InterpolationWidths 247 1.1985531e-06 insert Upsilon3Swidth:InterpolationWidths 248 1.1987943e-06 insert Upsilon3Swidth:InterpolationWidths 249 1.1990355e-06 insert Upsilon3Swidth:InterpolationWidths 250 1.1992768e-06 insert Upsilon3Swidth:InterpolationWidths 251 1.1995181e-06 insert Upsilon3Swidth:InterpolationWidths 252 1.1997595e-06 insert Upsilon3Swidth:InterpolationWidths 253 1.2000009e-06 insert Upsilon3Swidth:NumberofEntries 0 0 insert Upsilon3Swidth:NumberofEntries 1 50 insert Upsilon3Swidth:NumberofEntries 2 100 insert Upsilon3Swidth:NumberofEntries 3 150 insert Upsilon3Swidth:NumberofEntries 4 200 insert Upsilon3Swidth:NumberofEntries 5 200 insert Upsilon3Swidth:NumberofEntries 6 254 insert Upsilon3Swidth:NumberofEntries 7 254 insert Upsilon3Swidth:NumberofEntries 8 254 insert Upsilon3Swidth:NumberofEntries 9 254 insert Upsilon3Swidth:NumberofEntries 10 254 insert Upsilon3Swidth:NumberofEntries 11 254 insert Upsilon3Swidth:NumberofEntries 12 254 insert Upsilon3Swidth:NumberofEntries 13 254 insert Upsilon3Swidth:NumberofEntries 14 254 insert Upsilon3Swidth:NumberofEntries 15 254 insert Upsilon3Swidth:NumberofEntries 16 254 insert Upsilon3Swidth:NumberofEntries 17 254 newdef /Herwig/Particles/Upsilon(3S):Width_generator Upsilon3Swidth # create Herwig::GenericWidthGenerator Upsilon4Swidth newdef Upsilon4Swidth:Particle /Herwig/Particles/Upsilon(4S) newdef Upsilon4Swidth:Prefactor 1.00038 newdef Upsilon4Swidth:BRNormalize 1 newdef Upsilon4Swidth:BRMinimum 0.01 newdef Upsilon4Swidth:Points 50 newdef Upsilon4Swidth:InterpolationOrder 1 insert Upsilon4Swidth:MEtype 0 1 insert Upsilon4Swidth:MEtype 1 1 insert Upsilon4Swidth:MEtype 2 2 insert Upsilon4Swidth:MEtype 3 2 insert Upsilon4Swidth:MEtype 4 2 insert Upsilon4Swidth:MEtype 5 2 insert Upsilon4Swidth:MEtype 6 1 insert Upsilon4Swidth:MEtype 7 1 insert Upsilon4Swidth:MEtype 8 1 insert Upsilon4Swidth:MEcode 0 0 insert Upsilon4Swidth:MEcode 1 0 insert Upsilon4Swidth:MEcode 2 0 insert Upsilon4Swidth:MEcode 3 0 insert Upsilon4Swidth:MEcode 4 0 insert Upsilon4Swidth:MEcode 5 0 insert Upsilon4Swidth:MEcode 6 2 insert Upsilon4Swidth:MEcode 7 2 insert Upsilon4Swidth:MEcode 8 2 insert Upsilon4Swidth:MEcoupling 0 23.9844 insert Upsilon4Swidth:MEcoupling 1 24.3844 insert Upsilon4Swidth:MEcoupling 2 0.999685 insert Upsilon4Swidth:MEcoupling 3 0.935111 insert Upsilon4Swidth:MEcoupling 4 0.973578 insert Upsilon4Swidth:MEcoupling 5 0.962947 insert Upsilon4Swidth:MEcoupling 6 0.00108112 insert Upsilon4Swidth:MEcoupling 7 0.00108112 insert Upsilon4Swidth:MEcoupling 8 0.00108381 insert Upsilon4Swidth:ModeOn 0 1 insert Upsilon4Swidth:ModeOn 1 1 insert Upsilon4Swidth:ModeOn 2 0 insert Upsilon4Swidth:ModeOn 3 0 insert Upsilon4Swidth:ModeOn 4 0 insert Upsilon4Swidth:ModeOn 5 0 insert Upsilon4Swidth:ModeOn 6 0 insert Upsilon4Swidth:ModeOn 7 0 insert Upsilon4Swidth:ModeOn 8 0 insert Upsilon4Swidth:MinimumMasses 0 10.558 insert Upsilon4Swidth:MinimumMasses 1 10.5588 insert Upsilon4Swidth:MinimumMasses 2 10.3021 insert Upsilon4Swidth:MinimumMasses 3 10.2929 insert Upsilon4Swidth:MinimumMasses 4 9.7389 insert Upsilon4Swidth:MinimumMasses 5 9.72972 insert Upsilon4Swidth:MinimumMasses 6 0.001022 insert Upsilon4Swidth:MinimumMasses 7 0.211317 insert Upsilon4Swidth:MinimumMasses 8 3.55398 insert Upsilon4Swidth:MEmass1 0 5.279 insert Upsilon4Swidth:MEmass1 1 5.2794 insert Upsilon4Swidth:MEmass1 2 0 insert Upsilon4Swidth:MEmass1 3 0 insert Upsilon4Swidth:MEmass1 4 0 insert Upsilon4Swidth:MEmass1 5 0 insert Upsilon4Swidth:MEmass1 6 0.000510999 insert Upsilon4Swidth:MEmass1 7 0.105658 insert Upsilon4Swidth:MEmass1 8 1.77699 insert Upsilon4Swidth:MEmass2 0 5.279 insert Upsilon4Swidth:MEmass2 1 5.2794 insert Upsilon4Swidth:MEmass2 2 0 insert Upsilon4Swidth:MEmass2 3 0 insert Upsilon4Swidth:MEmass2 4 0 insert Upsilon4Swidth:MEmass2 5 0 insert Upsilon4Swidth:MEmass2 6 0.000510999 insert Upsilon4Swidth:MEmass2 7 0.105658 insert Upsilon4Swidth:MEmass2 8 1.77699 insert Upsilon4Swidth:DecayModes 0 Upsilon(4S)->B+,B-; insert Upsilon4Swidth:DecayModes 1 Upsilon(4S)->B0,Bbar0; insert Upsilon4Swidth:DecayModes 2 Upsilon(4S)->Upsilon(2S),pi+,pi-; insert Upsilon4Swidth:DecayModes 3 Upsilon(4S)->Upsilon(2S),pi0,pi0; insert Upsilon4Swidth:DecayModes 4 Upsilon(4S)->Upsilon,pi+,pi-; insert Upsilon4Swidth:DecayModes 5 Upsilon(4S)->Upsilon,pi0,pi0; insert Upsilon4Swidth:DecayModes 6 Upsilon(4S)->e-,e+; insert Upsilon4Swidth:DecayModes 7 Upsilon(4S)->mu-,mu+; insert Upsilon4Swidth:DecayModes 8 Upsilon(4S)->tau-,tau+; insert Upsilon4Swidth:InterpolationMasses 0 10.5589 insert Upsilon4Swidth:InterpolationMasses 1 10.563502 insert Upsilon4Swidth:InterpolationMasses 2 10.568104 insert Upsilon4Swidth:InterpolationMasses 3 10.572706 insert Upsilon4Swidth:InterpolationMasses 4 10.577308 insert Upsilon4Swidth:InterpolationMasses 5 10.58191 insert Upsilon4Swidth:InterpolationMasses 6 10.586512 insert Upsilon4Swidth:InterpolationMasses 7 10.591114 insert Upsilon4Swidth:InterpolationMasses 8 10.595716 insert Upsilon4Swidth:InterpolationMasses 9 10.600318 insert Upsilon4Swidth:InterpolationMasses 10 10.60492 insert Upsilon4Swidth:InterpolationMasses 11 10.609522 insert Upsilon4Swidth:InterpolationMasses 12 10.614124 insert Upsilon4Swidth:InterpolationMasses 13 10.618727 insert Upsilon4Swidth:InterpolationMasses 14 10.623329 insert Upsilon4Swidth:InterpolationMasses 15 10.627931 insert Upsilon4Swidth:InterpolationMasses 16 10.632533 insert Upsilon4Swidth:InterpolationMasses 17 10.637135 insert Upsilon4Swidth:InterpolationMasses 18 10.641737 insert Upsilon4Swidth:InterpolationMasses 19 10.646339 insert Upsilon4Swidth:InterpolationMasses 20 10.650941 insert Upsilon4Swidth:InterpolationMasses 21 10.655543 insert Upsilon4Swidth:InterpolationMasses 22 10.660145 insert Upsilon4Swidth:InterpolationMasses 23 10.664747 insert Upsilon4Swidth:InterpolationMasses 24 10.669349 insert Upsilon4Swidth:InterpolationMasses 25 10.673951 insert Upsilon4Swidth:InterpolationMasses 26 10.678553 insert Upsilon4Swidth:InterpolationMasses 27 10.683155 insert Upsilon4Swidth:InterpolationMasses 28 10.687757 insert Upsilon4Swidth:InterpolationMasses 29 10.692359 insert Upsilon4Swidth:InterpolationMasses 30 10.696961 insert Upsilon4Swidth:InterpolationMasses 31 10.701563 insert Upsilon4Swidth:InterpolationMasses 32 10.706165 insert Upsilon4Swidth:InterpolationMasses 33 10.710767 insert Upsilon4Swidth:InterpolationMasses 34 10.715369 insert Upsilon4Swidth:InterpolationMasses 35 10.719971 insert Upsilon4Swidth:InterpolationMasses 36 10.724573 insert Upsilon4Swidth:InterpolationMasses 37 10.729176 insert Upsilon4Swidth:InterpolationMasses 38 10.733778 insert Upsilon4Swidth:InterpolationMasses 39 10.73838 insert Upsilon4Swidth:InterpolationMasses 40 10.742982 insert Upsilon4Swidth:InterpolationMasses 41 10.747584 insert Upsilon4Swidth:InterpolationMasses 42 10.752186 insert Upsilon4Swidth:InterpolationMasses 43 10.756788 insert Upsilon4Swidth:InterpolationMasses 44 10.76139 insert Upsilon4Swidth:InterpolationMasses 45 10.765992 insert Upsilon4Swidth:InterpolationMasses 46 10.770594 insert Upsilon4Swidth:InterpolationMasses 47 10.775196 insert Upsilon4Swidth:InterpolationMasses 48 10.779798 insert Upsilon4Swidth:InterpolationMasses 49 10.7844 insert Upsilon4Swidth:InterpolationMasses 50 10.5589 insert Upsilon4Swidth:InterpolationMasses 51 10.563502 insert Upsilon4Swidth:InterpolationMasses 52 10.568104 insert Upsilon4Swidth:InterpolationMasses 53 10.572706 insert Upsilon4Swidth:InterpolationMasses 54 10.577308 insert Upsilon4Swidth:InterpolationMasses 55 10.58191 insert Upsilon4Swidth:InterpolationMasses 56 10.586512 insert Upsilon4Swidth:InterpolationMasses 57 10.591114 insert Upsilon4Swidth:InterpolationMasses 58 10.595716 insert Upsilon4Swidth:InterpolationMasses 59 10.600318 insert Upsilon4Swidth:InterpolationMasses 60 10.60492 insert Upsilon4Swidth:InterpolationMasses 61 10.609522 insert Upsilon4Swidth:InterpolationMasses 62 10.614124 insert Upsilon4Swidth:InterpolationMasses 63 10.618727 insert Upsilon4Swidth:InterpolationMasses 64 10.623329 insert Upsilon4Swidth:InterpolationMasses 65 10.627931 insert Upsilon4Swidth:InterpolationMasses 66 10.632533 insert Upsilon4Swidth:InterpolationMasses 67 10.637135 insert Upsilon4Swidth:InterpolationMasses 68 10.641737 insert Upsilon4Swidth:InterpolationMasses 69 10.646339 insert Upsilon4Swidth:InterpolationMasses 70 10.650941 insert Upsilon4Swidth:InterpolationMasses 71 10.655543 insert Upsilon4Swidth:InterpolationMasses 72 10.660145 insert Upsilon4Swidth:InterpolationMasses 73 10.664747 insert Upsilon4Swidth:InterpolationMasses 74 10.669349 insert Upsilon4Swidth:InterpolationMasses 75 10.673951 insert Upsilon4Swidth:InterpolationMasses 76 10.678553 insert Upsilon4Swidth:InterpolationMasses 77 10.683155 insert Upsilon4Swidth:InterpolationMasses 78 10.687757 insert Upsilon4Swidth:InterpolationMasses 79 10.692359 insert Upsilon4Swidth:InterpolationMasses 80 10.696961 insert Upsilon4Swidth:InterpolationMasses 81 10.701563 insert Upsilon4Swidth:InterpolationMasses 82 10.706165 insert Upsilon4Swidth:InterpolationMasses 83 10.710767 insert Upsilon4Swidth:InterpolationMasses 84 10.715369 insert Upsilon4Swidth:InterpolationMasses 85 10.719971 insert Upsilon4Swidth:InterpolationMasses 86 10.724573 insert Upsilon4Swidth:InterpolationMasses 87 10.729176 insert Upsilon4Swidth:InterpolationMasses 88 10.733778 insert Upsilon4Swidth:InterpolationMasses 89 10.73838 insert Upsilon4Swidth:InterpolationMasses 90 10.742982 insert Upsilon4Swidth:InterpolationMasses 91 10.747584 insert Upsilon4Swidth:InterpolationMasses 92 10.752186 insert Upsilon4Swidth:InterpolationMasses 93 10.756788 insert Upsilon4Swidth:InterpolationMasses 94 10.76139 insert Upsilon4Swidth:InterpolationMasses 95 10.765992 insert Upsilon4Swidth:InterpolationMasses 96 10.770594 insert Upsilon4Swidth:InterpolationMasses 97 10.775196 insert Upsilon4Swidth:InterpolationMasses 98 10.779798 insert Upsilon4Swidth:InterpolationMasses 99 10.7844 insert Upsilon4Swidth:InterpolationMasses 100 10.5589 insert Upsilon4Swidth:InterpolationMasses 101 10.563502 insert Upsilon4Swidth:InterpolationMasses 102 10.568104 insert Upsilon4Swidth:InterpolationMasses 103 10.572706 insert Upsilon4Swidth:InterpolationMasses 104 10.577308 insert Upsilon4Swidth:InterpolationMasses 105 10.58191 insert Upsilon4Swidth:InterpolationMasses 106 10.586512 insert Upsilon4Swidth:InterpolationMasses 107 10.591114 insert Upsilon4Swidth:InterpolationMasses 108 10.595716 insert Upsilon4Swidth:InterpolationMasses 109 10.600318 insert Upsilon4Swidth:InterpolationMasses 110 10.60492 insert Upsilon4Swidth:InterpolationMasses 111 10.609522 insert Upsilon4Swidth:InterpolationMasses 112 10.614124 insert Upsilon4Swidth:InterpolationMasses 113 10.618727 insert Upsilon4Swidth:InterpolationMasses 114 10.623329 insert Upsilon4Swidth:InterpolationMasses 115 10.627931 insert Upsilon4Swidth:InterpolationMasses 116 10.632533 insert Upsilon4Swidth:InterpolationMasses 117 10.637135 insert Upsilon4Swidth:InterpolationMasses 118 10.641737 insert Upsilon4Swidth:InterpolationMasses 119 10.646339 insert Upsilon4Swidth:InterpolationMasses 120 10.650941 insert Upsilon4Swidth:InterpolationMasses 121 10.655543 insert Upsilon4Swidth:InterpolationMasses 122 10.660145 insert Upsilon4Swidth:InterpolationMasses 123 10.664747 insert Upsilon4Swidth:InterpolationMasses 124 10.669349 insert Upsilon4Swidth:InterpolationMasses 125 10.673951 insert Upsilon4Swidth:InterpolationMasses 126 10.678553 insert Upsilon4Swidth:InterpolationMasses 127 10.683155 insert Upsilon4Swidth:InterpolationMasses 128 10.687757 insert Upsilon4Swidth:InterpolationMasses 129 10.692359 insert Upsilon4Swidth:InterpolationMasses 130 10.696961 insert Upsilon4Swidth:InterpolationMasses 131 10.701563 insert Upsilon4Swidth:InterpolationMasses 132 10.706165 insert Upsilon4Swidth:InterpolationMasses 133 10.710767 insert Upsilon4Swidth:InterpolationMasses 134 10.715369 insert Upsilon4Swidth:InterpolationMasses 135 10.719971 insert Upsilon4Swidth:InterpolationMasses 136 10.724573 insert Upsilon4Swidth:InterpolationMasses 137 10.729176 insert Upsilon4Swidth:InterpolationMasses 138 10.733778 insert Upsilon4Swidth:InterpolationMasses 139 10.73838 insert Upsilon4Swidth:InterpolationMasses 140 10.742982 insert Upsilon4Swidth:InterpolationMasses 141 10.747584 insert Upsilon4Swidth:InterpolationMasses 142 10.752186 insert Upsilon4Swidth:InterpolationMasses 143 10.756788 insert Upsilon4Swidth:InterpolationMasses 144 10.76139 insert Upsilon4Swidth:InterpolationMasses 145 10.765992 insert Upsilon4Swidth:InterpolationMasses 146 10.770594 insert Upsilon4Swidth:InterpolationMasses 147 10.775196 insert Upsilon4Swidth:InterpolationMasses 148 10.779798 insert Upsilon4Swidth:InterpolationMasses 149 10.7844 insert Upsilon4Swidth:InterpolationMasses 150 10.5589 insert Upsilon4Swidth:InterpolationMasses 151 10.563502 insert Upsilon4Swidth:InterpolationMasses 152 10.568104 insert Upsilon4Swidth:InterpolationMasses 153 10.572706 insert Upsilon4Swidth:InterpolationMasses 154 10.577308 insert Upsilon4Swidth:InterpolationMasses 155 10.58191 insert Upsilon4Swidth:InterpolationMasses 156 10.586512 insert Upsilon4Swidth:InterpolationMasses 157 10.591114 insert Upsilon4Swidth:InterpolationMasses 158 10.595716 insert Upsilon4Swidth:InterpolationMasses 159 10.600318 insert Upsilon4Swidth:InterpolationMasses 160 10.60492 insert Upsilon4Swidth:InterpolationMasses 161 10.609522 insert Upsilon4Swidth:InterpolationMasses 162 10.614124 insert Upsilon4Swidth:InterpolationMasses 163 10.618727 insert Upsilon4Swidth:InterpolationMasses 164 10.623329 insert Upsilon4Swidth:InterpolationMasses 165 10.627931 insert Upsilon4Swidth:InterpolationMasses 166 10.632533 insert Upsilon4Swidth:InterpolationMasses 167 10.637135 insert Upsilon4Swidth:InterpolationMasses 168 10.641737 insert Upsilon4Swidth:InterpolationMasses 169 10.646339 insert Upsilon4Swidth:InterpolationMasses 170 10.650941 insert Upsilon4Swidth:InterpolationMasses 171 10.655543 insert Upsilon4Swidth:InterpolationMasses 172 10.660145 insert Upsilon4Swidth:InterpolationMasses 173 10.664747 insert Upsilon4Swidth:InterpolationMasses 174 10.669349 insert Upsilon4Swidth:InterpolationMasses 175 10.673951 insert Upsilon4Swidth:InterpolationMasses 176 10.678553 insert Upsilon4Swidth:InterpolationMasses 177 10.683155 insert Upsilon4Swidth:InterpolationMasses 178 10.687757 insert Upsilon4Swidth:InterpolationMasses 179 10.692359 insert Upsilon4Swidth:InterpolationMasses 180 10.696961 insert Upsilon4Swidth:InterpolationMasses 181 10.701563 insert Upsilon4Swidth:InterpolationMasses 182 10.706165 insert Upsilon4Swidth:InterpolationMasses 183 10.710767 insert Upsilon4Swidth:InterpolationMasses 184 10.715369 insert Upsilon4Swidth:InterpolationMasses 185 10.719971 insert Upsilon4Swidth:InterpolationMasses 186 10.724573 insert Upsilon4Swidth:InterpolationMasses 187 10.729176 insert Upsilon4Swidth:InterpolationMasses 188 10.733778 insert Upsilon4Swidth:InterpolationMasses 189 10.73838 insert Upsilon4Swidth:InterpolationMasses 190 10.742982 insert Upsilon4Swidth:InterpolationMasses 191 10.747584 insert Upsilon4Swidth:InterpolationMasses 192 10.752186 insert Upsilon4Swidth:InterpolationMasses 193 10.756788 insert Upsilon4Swidth:InterpolationMasses 194 10.76139 insert Upsilon4Swidth:InterpolationMasses 195 10.765992 insert Upsilon4Swidth:InterpolationMasses 196 10.770594 insert Upsilon4Swidth:InterpolationMasses 197 10.775196 insert Upsilon4Swidth:InterpolationMasses 198 10.779798 insert Upsilon4Swidth:InterpolationMasses 199 10.7844 insert Upsilon4Swidth:InterpolationWidths 0 1.8711757e-06 insert Upsilon4Swidth:InterpolationWidths 1 2.0262105e-06 insert Upsilon4Swidth:InterpolationWidths 2 2.191653e-06 insert Upsilon4Swidth:InterpolationWidths 3 2.3680469e-06 insert Upsilon4Swidth:InterpolationWidths 4 2.5559565e-06 insert Upsilon4Swidth:InterpolationWidths 5 2.7559676e-06 insert Upsilon4Swidth:InterpolationWidths 6 2.9686877e-06 insert Upsilon4Swidth:InterpolationWidths 7 3.1947468e-06 insert Upsilon4Swidth:InterpolationWidths 8 3.4347976e-06 insert Upsilon4Swidth:InterpolationWidths 9 3.6895163e-06 insert Upsilon4Swidth:InterpolationWidths 10 3.9596034e-06 insert Upsilon4Swidth:InterpolationWidths 11 4.2457836e-06 insert Upsilon4Swidth:InterpolationWidths 12 4.5488069e-06 insert Upsilon4Swidth:InterpolationWidths 13 4.869449e-06 insert Upsilon4Swidth:InterpolationWidths 14 5.2085121e-06 insert Upsilon4Swidth:InterpolationWidths 15 5.566825e-06 insert Upsilon4Swidth:InterpolationWidths 16 5.9452442e-06 insert Upsilon4Swidth:InterpolationWidths 17 6.3446543e-06 insert Upsilon4Swidth:InterpolationWidths 18 6.7659684e-06 insert Upsilon4Swidth:InterpolationWidths 19 7.2101292e-06 insert Upsilon4Swidth:InterpolationWidths 20 7.6781092e-06 insert Upsilon4Swidth:InterpolationWidths 21 8.1709116e-06 insert Upsilon4Swidth:InterpolationWidths 22 8.6895708e-06 insert Upsilon4Swidth:InterpolationWidths 23 9.2351531e-06 insert Upsilon4Swidth:InterpolationWidths 24 9.8087571e-06 insert Upsilon4Swidth:InterpolationWidths 25 1.0411515e-05 insert Upsilon4Swidth:InterpolationWidths 26 1.1044593e-05 insert Upsilon4Swidth:InterpolationWidths 27 1.170919e-05 insert Upsilon4Swidth:InterpolationWidths 28 1.2406544e-05 insert Upsilon4Swidth:InterpolationWidths 29 1.3137924e-05 insert Upsilon4Swidth:InterpolationWidths 30 1.390464e-05 insert Upsilon4Swidth:InterpolationWidths 31 1.4708036e-05 insert Upsilon4Swidth:InterpolationWidths 32 1.5549497e-05 insert Upsilon4Swidth:InterpolationWidths 33 1.6430444e-05 insert Upsilon4Swidth:InterpolationWidths 34 1.7352339e-05 insert Upsilon4Swidth:InterpolationWidths 35 1.8316683e-05 insert Upsilon4Swidth:InterpolationWidths 36 1.932502e-05 insert Upsilon4Swidth:InterpolationWidths 37 2.0378933e-05 insert Upsilon4Swidth:InterpolationWidths 38 2.148005e-05 insert Upsilon4Swidth:InterpolationWidths 39 2.263004e-05 insert Upsilon4Swidth:InterpolationWidths 40 2.3830617e-05 insert Upsilon4Swidth:InterpolationWidths 41 2.508354e-05 insert Upsilon4Swidth:InterpolationWidths 42 2.6390613e-05 insert Upsilon4Swidth:InterpolationWidths 43 2.7753685e-05 insert Upsilon4Swidth:InterpolationWidths 44 2.9174655e-05 insert Upsilon4Swidth:InterpolationWidths 45 3.0655467e-05 insert Upsilon4Swidth:InterpolationWidths 46 3.2198116e-05 insert Upsilon4Swidth:InterpolationWidths 47 3.3804644e-05 insert Upsilon4Swidth:InterpolationWidths 48 3.5477145e-05 insert Upsilon4Swidth:InterpolationWidths 49 3.7217764e-05 insert Upsilon4Swidth:InterpolationWidths 50 1.0148359e-06 insert Upsilon4Swidth:InterpolationWidths 51 1.0971456e-06 insert Upsilon4Swidth:InterpolationWidths 52 1.1848749e-06 insert Upsilon4Swidth:InterpolationWidths 53 1.2783023e-06 insert Upsilon4Swidth:InterpolationWidths 54 1.3777166e-06 insert Upsilon4Swidth:InterpolationWidths 55 1.4834173e-06 insert Upsilon4Swidth:InterpolationWidths 56 1.5957152e-06 insert Upsilon4Swidth:InterpolationWidths 57 1.7149321e-06 insert Upsilon4Swidth:InterpolationWidths 58 1.8414016e-06 insert Upsilon4Swidth:InterpolationWidths 59 1.9754689e-06 insert Upsilon4Swidth:InterpolationWidths 60 2.1174915e-06 insert Upsilon4Swidth:InterpolationWidths 61 2.2678393e-06 insert Upsilon4Swidth:InterpolationWidths 62 2.4268946e-06 insert Upsilon4Swidth:InterpolationWidths 63 2.5950532e-06 insert Upsilon4Swidth:InterpolationWidths 64 2.7727236e-06 insert Upsilon4Swidth:InterpolationWidths 65 2.9603282e-06 insert Upsilon4Swidth:InterpolationWidths 66 3.1583033e-06 insert Upsilon4Swidth:InterpolationWidths 67 3.3670991e-06 insert Upsilon4Swidth:InterpolationWidths 68 3.5871805e-06 insert Upsilon4Swidth:InterpolationWidths 69 3.819027e-06 insert Upsilon4Swidth:InterpolationWidths 70 4.0631334e-06 insert Upsilon4Swidth:InterpolationWidths 71 4.3200098e-06 insert Upsilon4Swidth:InterpolationWidths 72 4.5901819e-06 insert Upsilon4Swidth:InterpolationWidths 73 4.8741917e-06 insert Upsilon4Swidth:InterpolationWidths 74 5.1725974e-06 insert Upsilon4Swidth:InterpolationWidths 75 5.4859741e-06 insert Upsilon4Swidth:InterpolationWidths 76 5.8149136e-06 insert Upsilon4Swidth:InterpolationWidths 77 6.1600255e-06 insert Upsilon4Swidth:InterpolationWidths 78 6.5219369e-06 insert Upsilon4Swidth:InterpolationWidths 79 6.9012929e-06 insert Upsilon4Swidth:InterpolationWidths 80 7.2987571e-06 insert Upsilon4Swidth:InterpolationWidths 81 7.7150119e-06 insert Upsilon4Swidth:InterpolationWidths 82 8.1507589e-06 insert Upsilon4Swidth:InterpolationWidths 83 8.606719e-06 insert Upsilon4Swidth:InterpolationWidths 84 9.0836329e-06 insert Upsilon4Swidth:InterpolationWidths 85 9.5822618e-06 insert Upsilon4Swidth:InterpolationWidths 86 1.0103387e-05 insert Upsilon4Swidth:InterpolationWidths 87 1.0647812e-05 insert Upsilon4Swidth:InterpolationWidths 88 1.1216359e-05 insert Upsilon4Swidth:InterpolationWidths 89 1.1809875e-05 insert Upsilon4Swidth:InterpolationWidths 90 1.2429226e-05 insert Upsilon4Swidth:InterpolationWidths 91 1.3075304e-05 insert Upsilon4Swidth:InterpolationWidths 92 1.3749021e-05 insert Upsilon4Swidth:InterpolationWidths 93 1.4451314e-05 insert Upsilon4Swidth:InterpolationWidths 94 1.5183141e-05 insert Upsilon4Swidth:InterpolationWidths 95 1.5945488e-05 insert Upsilon4Swidth:InterpolationWidths 96 1.6739362e-05 insert Upsilon4Swidth:InterpolationWidths 97 1.7565797e-05 insert Upsilon4Swidth:InterpolationWidths 98 1.842585e-05 insert Upsilon4Swidth:InterpolationWidths 99 1.9320607e-05 insert Upsilon4Swidth:InterpolationWidths 100 1.662335e-06 insert Upsilon4Swidth:InterpolationWidths 101 1.7123712e-06 insert Upsilon4Swidth:InterpolationWidths 102 1.7636664e-06 insert Upsilon4Swidth:InterpolationWidths 103 1.8162462e-06 insert Upsilon4Swidth:InterpolationWidths 104 1.8701364e-06 insert Upsilon4Swidth:InterpolationWidths 105 1.9253635e-06 insert Upsilon4Swidth:InterpolationWidths 106 1.9819542e-06 insert Upsilon4Swidth:InterpolationWidths 107 2.0399357e-06 insert Upsilon4Swidth:InterpolationWidths 108 2.0993354e-06 insert Upsilon4Swidth:InterpolationWidths 109 2.1601814e-06 insert Upsilon4Swidth:InterpolationWidths 110 2.2225021e-06 insert Upsilon4Swidth:InterpolationWidths 111 2.2863264e-06 insert Upsilon4Swidth:InterpolationWidths 112 2.3516834e-06 insert Upsilon4Swidth:InterpolationWidths 113 2.4186029e-06 insert Upsilon4Swidth:InterpolationWidths 114 2.4871149e-06 insert Upsilon4Swidth:InterpolationWidths 115 2.5572501e-06 insert Upsilon4Swidth:InterpolationWidths 116 2.6290395e-06 insert Upsilon4Swidth:InterpolationWidths 117 2.7025146e-06 insert Upsilon4Swidth:InterpolationWidths 118 2.7777072e-06 insert Upsilon4Swidth:InterpolationWidths 119 2.8546498e-06 insert Upsilon4Swidth:InterpolationWidths 120 2.9333752e-06 insert Upsilon4Swidth:InterpolationWidths 121 3.0139167e-06 insert Upsilon4Swidth:InterpolationWidths 122 3.0963081e-06 insert Upsilon4Swidth:InterpolationWidths 123 3.1805837e-06 insert Upsilon4Swidth:InterpolationWidths 124 3.2667783e-06 insert Upsilon4Swidth:InterpolationWidths 125 3.354927e-06 insert Upsilon4Swidth:InterpolationWidths 126 3.4450657e-06 insert Upsilon4Swidth:InterpolationWidths 127 3.5372305e-06 insert Upsilon4Swidth:InterpolationWidths 128 3.6314583e-06 insert Upsilon4Swidth:InterpolationWidths 129 3.7277861e-06 insert Upsilon4Swidth:InterpolationWidths 130 3.8262519e-06 insert Upsilon4Swidth:InterpolationWidths 131 3.9268938e-06 insert Upsilon4Swidth:InterpolationWidths 132 4.0297507e-06 insert Upsilon4Swidth:InterpolationWidths 133 4.1348619e-06 insert Upsilon4Swidth:InterpolationWidths 134 4.2422672e-06 insert Upsilon4Swidth:InterpolationWidths 135 4.352007e-06 insert Upsilon4Swidth:InterpolationWidths 136 4.4641222e-06 insert Upsilon4Swidth:InterpolationWidths 137 4.5786544e-06 insert Upsilon4Swidth:InterpolationWidths 138 4.6956454e-06 insert Upsilon4Swidth:InterpolationWidths 139 4.815138e-06 insert Upsilon4Swidth:InterpolationWidths 140 4.9371752e-06 insert Upsilon4Swidth:InterpolationWidths 141 5.0618008e-06 insert Upsilon4Swidth:InterpolationWidths 142 5.1890591e-06 insert Upsilon4Swidth:InterpolationWidths 143 5.3189948e-06 insert Upsilon4Swidth:InterpolationWidths 144 5.4516534e-06 insert Upsilon4Swidth:InterpolationWidths 145 5.5870809e-06 insert Upsilon4Swidth:InterpolationWidths 146 5.725324e-06 insert Upsilon4Swidth:InterpolationWidths 147 5.8664299e-06 insert Upsilon4Swidth:InterpolationWidths 148 6.0104463e-06 insert Upsilon4Swidth:InterpolationWidths 149 6.1574216e-06 insert Upsilon4Swidth:InterpolationWidths 150 8.4070521e-07 insert Upsilon4Swidth:InterpolationWidths 151 8.659247e-07 insert Upsilon4Swidth:InterpolationWidths 152 8.9177695e-07 insert Upsilon4Swidth:InterpolationWidths 153 9.1827477e-07 insert Upsilon4Swidth:InterpolationWidths 154 9.4543118e-07 insert Upsilon4Swidth:InterpolationWidths 155 9.7325938e-07 insert Upsilon4Swidth:InterpolationWidths 156 1.0017728e-06 insert Upsilon4Swidth:InterpolationWidths 157 1.030985e-06 insert Upsilon4Swidth:InterpolationWidths 158 1.0609099e-06 insert Upsilon4Swidth:InterpolationWidths 159 1.0915614e-06 insert Upsilon4Swidth:InterpolationWidths 160 1.1229538e-06 insert Upsilon4Swidth:InterpolationWidths 161 1.1551016e-06 insert Upsilon4Swidth:InterpolationWidths 162 1.1880195e-06 insert Upsilon4Swidth:InterpolationWidths 163 1.2217222e-06 insert Upsilon4Swidth:InterpolationWidths 164 1.2562249e-06 insert Upsilon4Swidth:InterpolationWidths 165 1.291543e-06 insert Upsilon4Swidth:InterpolationWidths 166 1.327692e-06 insert Upsilon4Swidth:InterpolationWidths 167 1.3646876e-06 insert Upsilon4Swidth:InterpolationWidths 168 1.4025459e-06 insert Upsilon4Swidth:InterpolationWidths 169 1.4412831e-06 insert Upsilon4Swidth:InterpolationWidths 170 1.4809157e-06 insert Upsilon4Swidth:InterpolationWidths 171 1.5214603e-06 insert Upsilon4Swidth:InterpolationWidths 172 1.5629339e-06 insert Upsilon4Swidth:InterpolationWidths 173 1.6053537e-06 insert Upsilon4Swidth:InterpolationWidths 174 1.6487371e-06 insert Upsilon4Swidth:InterpolationWidths 175 1.6931017e-06 insert Upsilon4Swidth:InterpolationWidths 176 1.7384656e-06 insert Upsilon4Swidth:InterpolationWidths 177 1.7848467e-06 insert Upsilon4Swidth:InterpolationWidths 178 1.8322636e-06 insert Upsilon4Swidth:InterpolationWidths 179 1.8807349e-06 insert Upsilon4Swidth:InterpolationWidths 180 1.9302796e-06 insert Upsilon4Swidth:InterpolationWidths 181 1.9809167e-06 insert Upsilon4Swidth:InterpolationWidths 182 2.0326658e-06 insert Upsilon4Swidth:InterpolationWidths 183 2.0855465e-06 insert Upsilon4Swidth:InterpolationWidths 184 2.1395789e-06 insert Upsilon4Swidth:InterpolationWidths 185 2.1947831e-06 insert Upsilon4Swidth:InterpolationWidths 186 2.2511797e-06 insert Upsilon4Swidth:InterpolationWidths 187 2.3087894e-06 insert Upsilon4Swidth:InterpolationWidths 188 2.3676333e-06 insert Upsilon4Swidth:InterpolationWidths 189 2.4277327e-06 insert Upsilon4Swidth:InterpolationWidths 190 2.4891093e-06 insert Upsilon4Swidth:InterpolationWidths 191 2.551785e-06 insert Upsilon4Swidth:InterpolationWidths 192 2.6157819e-06 insert Upsilon4Swidth:InterpolationWidths 193 2.6811224e-06 insert Upsilon4Swidth:InterpolationWidths 194 2.7478295e-06 insert Upsilon4Swidth:InterpolationWidths 195 2.8159261e-06 insert Upsilon4Swidth:InterpolationWidths 196 2.8854355e-06 insert Upsilon4Swidth:InterpolationWidths 197 2.9563815e-06 insert Upsilon4Swidth:InterpolationWidths 198 3.028788e-06 insert Upsilon4Swidth:InterpolationWidths 199 3.1026791e-06 insert Upsilon4Swidth:NumberofEntries 0 0 insert Upsilon4Swidth:NumberofEntries 1 0 insert Upsilon4Swidth:NumberofEntries 2 50 insert Upsilon4Swidth:NumberofEntries 3 100 insert Upsilon4Swidth:NumberofEntries 4 150 insert Upsilon4Swidth:NumberofEntries 5 200 insert Upsilon4Swidth:NumberofEntries 6 200 insert Upsilon4Swidth:NumberofEntries 7 200 insert Upsilon4Swidth:NumberofEntries 8 200 newdef /Herwig/Particles/Upsilon(4S):Width_generator Upsilon4Swidth # create Herwig::GenericWidthGenerator h_cwidth newdef h_cwidth:Particle /Herwig/Particles/h_c newdef h_cwidth:Prefactor 1 newdef h_cwidth:BRNormalize 1 newdef h_cwidth:BRMinimum 0.01 newdef h_cwidth:Points 50 newdef h_cwidth:InterpolationOrder 1 insert h_cwidth:MEtype 0 2 insert h_cwidth:MEtype 1 0 insert h_cwidth:MEcode 0 0 insert h_cwidth:MEcode 1 0 insert h_cwidth:MEcoupling 0 1.00409 insert h_cwidth:MEcoupling 1 0.6 insert h_cwidth:ModeOn 0 1 insert h_cwidth:ModeOn 1 1 insert h_cwidth:MinimumMasses 0 2.7254 insert h_cwidth:MinimumMasses 1 0 insert h_cwidth:MEmass1 0 0 insert h_cwidth:MEmass1 1 0 insert h_cwidth:MEmass2 0 2.9804 insert h_cwidth:MEmass2 1 0 insert h_cwidth:DecayModes 0 h_c->eta_c,gamma; insert h_cwidth:DecayModes 1 h_c->g,g,g; insert h_cwidth:InterpolationMasses 0 3.5161953 insert h_cwidth:InterpolationMasses 1 3.5165627 insert h_cwidth:InterpolationMasses 2 3.51693 insert h_cwidth:InterpolationMasses 3 3.5172973 insert h_cwidth:InterpolationMasses 4 3.5176647 insert h_cwidth:InterpolationMasses 5 3.518032 insert h_cwidth:InterpolationMasses 6 3.5183994 insert h_cwidth:InterpolationMasses 7 3.5187667 insert h_cwidth:InterpolationMasses 8 3.5191341 insert h_cwidth:InterpolationMasses 9 3.5195014 insert h_cwidth:InterpolationMasses 10 3.5198688 insert h_cwidth:InterpolationMasses 11 3.5202361 insert h_cwidth:InterpolationMasses 12 3.5206035 insert h_cwidth:InterpolationMasses 13 3.5209708 insert h_cwidth:InterpolationMasses 14 3.5213382 insert h_cwidth:InterpolationMasses 15 3.5217055 insert h_cwidth:InterpolationMasses 16 3.5220729 insert h_cwidth:InterpolationMasses 17 3.5224402 insert h_cwidth:InterpolationMasses 18 3.5228076 insert h_cwidth:InterpolationMasses 19 3.5231749 insert h_cwidth:InterpolationMasses 20 3.5235422 insert h_cwidth:InterpolationMasses 21 3.5239096 insert h_cwidth:InterpolationMasses 22 3.5242769 insert h_cwidth:InterpolationMasses 23 3.5246443 insert h_cwidth:InterpolationMasses 24 3.5250116 insert h_cwidth:InterpolationMasses 25 3.525379 insert h_cwidth:InterpolationMasses 26 3.5257463 insert h_cwidth:InterpolationMasses 27 3.5261137 insert h_cwidth:InterpolationMasses 28 3.526481 insert h_cwidth:InterpolationMasses 29 3.5268484 insert h_cwidth:InterpolationMasses 30 3.5272157 insert h_cwidth:InterpolationMasses 31 3.5275831 insert h_cwidth:InterpolationMasses 32 3.5279504 insert h_cwidth:InterpolationMasses 33 3.5283178 insert h_cwidth:InterpolationMasses 34 3.5286851 insert h_cwidth:InterpolationMasses 35 3.5290524 insert h_cwidth:InterpolationMasses 36 3.5294198 insert h_cwidth:InterpolationMasses 37 3.5297871 insert h_cwidth:InterpolationMasses 38 3.5301545 insert h_cwidth:InterpolationMasses 39 3.5305218 insert h_cwidth:InterpolationMasses 40 3.5308892 insert h_cwidth:InterpolationMasses 41 3.5312565 insert h_cwidth:InterpolationMasses 42 3.5316239 insert h_cwidth:InterpolationMasses 43 3.5319912 insert h_cwidth:InterpolationMasses 44 3.5323586 insert h_cwidth:InterpolationMasses 45 3.5327259 insert h_cwidth:InterpolationMasses 46 3.5330933 insert h_cwidth:InterpolationMasses 47 3.5334606 insert h_cwidth:InterpolationMasses 48 3.533828 insert h_cwidth:InterpolationMasses 49 3.5341953 insert h_cwidth:InterpolationMasses 50 3.5345627 insert h_cwidth:InterpolationMasses 51 3.53493 insert h_cwidth:InterpolationMasses 52 3.5352973 insert h_cwidth:InterpolationMasses 53 3.5356647 insert h_cwidth:InterpolationWidths 0 0.00034116336 insert h_cwidth:InterpolationWidths 1 0.00034180912 insert h_cwidth:InterpolationWidths 2 0.00034245565 insert h_cwidth:InterpolationWidths 3 0.00034310295 insert h_cwidth:InterpolationWidths 4 0.000343751 insert h_cwidth:InterpolationWidths 5 0.00034439982 insert h_cwidth:InterpolationWidths 6 0.00034504941 insert h_cwidth:InterpolationWidths 7 0.00034569977 insert h_cwidth:InterpolationWidths 8 0.00034635089 insert h_cwidth:InterpolationWidths 9 0.00034700277 insert h_cwidth:InterpolationWidths 10 0.00034765543 insert h_cwidth:InterpolationWidths 11 0.00034830885 insert h_cwidth:InterpolationWidths 12 0.00034896303 insert h_cwidth:InterpolationWidths 13 0.00034961799 insert h_cwidth:InterpolationWidths 14 0.00035027371 insert h_cwidth:InterpolationWidths 15 0.0003509302 insert h_cwidth:InterpolationWidths 16 0.00035158746 insert h_cwidth:InterpolationWidths 17 0.00035224549 insert h_cwidth:InterpolationWidths 18 0.00035290429 insert h_cwidth:InterpolationWidths 19 0.00035356386 insert h_cwidth:InterpolationWidths 20 0.0003542242 insert h_cwidth:InterpolationWidths 21 0.00035488531 insert h_cwidth:InterpolationWidths 22 0.00035554719 insert h_cwidth:InterpolationWidths 23 0.00035620984 insert h_cwidth:InterpolationWidths 24 0.00035687326 insert h_cwidth:InterpolationWidths 25 0.00035753745 insert h_cwidth:InterpolationWidths 26 0.00035820242 insert h_cwidth:InterpolationWidths 27 0.00035886815 insert h_cwidth:InterpolationWidths 28 0.00035953466 insert h_cwidth:InterpolationWidths 29 0.00036020195 insert h_cwidth:InterpolationWidths 30 0.00036087 insert h_cwidth:InterpolationWidths 31 0.00036153883 insert h_cwidth:InterpolationWidths 32 0.00036220844 insert h_cwidth:InterpolationWidths 33 0.00036287882 insert h_cwidth:InterpolationWidths 34 0.00036354997 insert h_cwidth:InterpolationWidths 35 0.0003642219 insert h_cwidth:InterpolationWidths 36 0.0003648946 insert h_cwidth:InterpolationWidths 37 0.00036556808 insert h_cwidth:InterpolationWidths 38 0.00036624233 insert h_cwidth:InterpolationWidths 39 0.00036691736 insert h_cwidth:InterpolationWidths 40 0.00036759317 insert h_cwidth:InterpolationWidths 41 0.00036826975 insert h_cwidth:InterpolationWidths 42 0.00036894711 insert h_cwidth:InterpolationWidths 43 0.00036962525 insert h_cwidth:InterpolationWidths 44 0.00037030416 insert h_cwidth:InterpolationWidths 45 0.00037098386 insert h_cwidth:InterpolationWidths 46 0.00037166433 insert h_cwidth:InterpolationWidths 47 0.00037234558 insert h_cwidth:InterpolationWidths 48 0.00037302761 insert h_cwidth:InterpolationWidths 49 0.00037371042 insert h_cwidth:InterpolationWidths 50 0.00037439401 insert h_cwidth:InterpolationWidths 51 0.00037507838 insert h_cwidth:InterpolationWidths 52 0.00037576353 insert h_cwidth:InterpolationWidths 53 0.00037644946 insert h_cwidth:NumberofEntries 0 54 insert h_cwidth:NumberofEntries 1 54 newdef /Herwig/Particles/h_c:Width_generator h_cwidth # create Herwig::GenericWidthGenerator h_bwidth newdef h_bwidth:Particle /Herwig/Particles/h_b newdef h_bwidth:Prefactor 1 newdef h_bwidth:BRNormalize 1 newdef h_bwidth:BRMinimum 0.01 newdef h_bwidth:Points 50 newdef h_bwidth:InterpolationOrder 1 insert h_bwidth:MEtype 0 2 insert h_bwidth:MEtype 1 0 insert h_bwidth:MEtype 2 0 insert h_bwidth:MEcode 0 0 insert h_bwidth:MEcode 1 0 insert h_bwidth:MEcode 2 0 insert h_bwidth:MEcoupling 0 11.3174 insert h_bwidth:MEcoupling 1 0.568 insert h_bwidth:MEcoupling 2 0.018 insert h_bwidth:ModeOn 0 1 insert h_bwidth:ModeOn 1 1 insert h_bwidth:ModeOn 2 1 insert h_bwidth:MinimumMasses 0 9.315 insert h_bwidth:MinimumMasses 1 0 insert h_bwidth:MinimumMasses 2 0 insert h_bwidth:MEmass1 0 0 insert h_bwidth:MEmass1 1 0 insert h_bwidth:MEmass1 2 0 insert h_bwidth:MEmass2 0 9.397 insert h_bwidth:MEmass2 1 0 insert h_bwidth:MEmass2 2 0 insert h_bwidth:DecayModes 0 h_b->eta_b,gamma; insert h_bwidth:DecayModes 1 h_b->g,g,g; insert h_bwidth:DecayModes 2 h_b->gamma,g,g; insert h_bwidth:InterpolationMasses 0 9.872033 insert h_bwidth:InterpolationMasses 1 9.8720695 insert h_bwidth:InterpolationMasses 2 9.872106 insert h_bwidth:InterpolationMasses 3 9.8721425 insert h_bwidth:InterpolationMasses 4 9.872179 insert h_bwidth:InterpolationMasses 5 9.8722155 insert h_bwidth:InterpolationMasses 6 9.872252 insert h_bwidth:InterpolationMasses 7 9.8722884 insert h_bwidth:InterpolationMasses 8 9.8723249 insert h_bwidth:InterpolationMasses 9 9.8723614 insert h_bwidth:InterpolationMasses 10 9.8723979 insert h_bwidth:InterpolationMasses 11 9.8724344 insert h_bwidth:InterpolationMasses 12 9.8724709 insert h_bwidth:InterpolationMasses 13 9.8725074 insert h_bwidth:InterpolationMasses 14 9.8725439 insert h_bwidth:InterpolationMasses 15 9.8725804 insert h_bwidth:InterpolationMasses 16 9.8726169 insert h_bwidth:InterpolationMasses 17 9.8726533 insert h_bwidth:InterpolationMasses 18 9.8726898 insert h_bwidth:InterpolationMasses 19 9.8727263 insert h_bwidth:InterpolationMasses 20 9.8727628 insert h_bwidth:InterpolationMasses 21 9.8727993 insert h_bwidth:InterpolationMasses 22 9.8728358 insert h_bwidth:InterpolationMasses 23 9.8728723 insert h_bwidth:InterpolationMasses 24 9.8729088 insert h_bwidth:InterpolationMasses 25 9.8729453 insert h_bwidth:InterpolationMasses 26 9.8729818 insert h_bwidth:InterpolationMasses 27 9.8730182 insert h_bwidth:InterpolationMasses 28 9.8730547 insert h_bwidth:InterpolationMasses 29 9.8730912 insert h_bwidth:InterpolationMasses 30 9.8731277 insert h_bwidth:InterpolationMasses 31 9.8731642 insert h_bwidth:InterpolationMasses 32 9.8732007 insert h_bwidth:InterpolationMasses 33 9.8732372 insert h_bwidth:InterpolationMasses 34 9.8732737 insert h_bwidth:InterpolationMasses 35 9.8733102 insert h_bwidth:InterpolationMasses 36 9.8733467 insert h_bwidth:InterpolationMasses 37 9.8733831 insert h_bwidth:InterpolationMasses 38 9.8734196 insert h_bwidth:InterpolationMasses 39 9.8734561 insert h_bwidth:InterpolationMasses 40 9.8734926 insert h_bwidth:InterpolationMasses 41 9.8735291 insert h_bwidth:InterpolationMasses 42 9.8735656 insert h_bwidth:InterpolationMasses 43 9.8736021 insert h_bwidth:InterpolationMasses 44 9.8736386 insert h_bwidth:InterpolationMasses 45 9.8736751 insert h_bwidth:InterpolationMasses 46 9.8737116 insert h_bwidth:InterpolationMasses 47 9.873748 insert h_bwidth:InterpolationMasses 48 9.8737845 insert h_bwidth:InterpolationMasses 49 9.873821 insert h_bwidth:InterpolationMasses 50 9.8738575 insert h_bwidth:InterpolationMasses 51 9.873894 insert h_bwidth:InterpolationMasses 52 9.8739305 insert h_bwidth:InterpolationMasses 53 9.873967 insert h_bwidth:InterpolationWidths 0 3.2509352e-06 insert h_bwidth:InterpolationWidths 1 3.2516656e-06 insert h_bwidth:InterpolationWidths 2 3.2523961e-06 insert h_bwidth:InterpolationWidths 3 3.2531266e-06 insert h_bwidth:InterpolationWidths 4 3.2538573e-06 insert h_bwidth:InterpolationWidths 5 3.2545881e-06 insert h_bwidth:InterpolationWidths 6 3.255319e-06 insert h_bwidth:InterpolationWidths 7 3.25605e-06 insert h_bwidth:InterpolationWidths 8 3.2567812e-06 insert h_bwidth:InterpolationWidths 9 3.2575124e-06 insert h_bwidth:InterpolationWidths 10 3.2582437e-06 insert h_bwidth:InterpolationWidths 11 3.2589752e-06 insert h_bwidth:InterpolationWidths 12 3.2597067e-06 insert h_bwidth:InterpolationWidths 13 3.2604384e-06 insert h_bwidth:InterpolationWidths 14 3.2611701e-06 insert h_bwidth:InterpolationWidths 15 3.261902e-06 insert h_bwidth:InterpolationWidths 16 3.262634e-06 insert h_bwidth:InterpolationWidths 17 3.263366e-06 insert h_bwidth:InterpolationWidths 18 3.2640982e-06 insert h_bwidth:InterpolationWidths 19 3.2648305e-06 insert h_bwidth:InterpolationWidths 20 3.2655629e-06 insert h_bwidth:InterpolationWidths 21 3.2662954e-06 insert h_bwidth:InterpolationWidths 22 3.2670281e-06 insert h_bwidth:InterpolationWidths 23 3.2677608e-06 insert h_bwidth:InterpolationWidths 24 3.2684936e-06 insert h_bwidth:InterpolationWidths 25 3.2692265e-06 insert h_bwidth:InterpolationWidths 26 3.2699596e-06 insert h_bwidth:InterpolationWidths 27 3.2706927e-06 insert h_bwidth:InterpolationWidths 28 3.271426e-06 insert h_bwidth:InterpolationWidths 29 3.2721594e-06 insert h_bwidth:InterpolationWidths 30 3.2728928e-06 insert h_bwidth:InterpolationWidths 31 3.2736264e-06 insert h_bwidth:InterpolationWidths 32 3.2743601e-06 insert h_bwidth:InterpolationWidths 33 3.2750939e-06 insert h_bwidth:InterpolationWidths 34 3.2758278e-06 insert h_bwidth:InterpolationWidths 35 3.2765618e-06 insert h_bwidth:InterpolationWidths 36 3.2772959e-06 insert h_bwidth:InterpolationWidths 37 3.2780302e-06 insert h_bwidth:InterpolationWidths 38 3.2787645e-06 insert h_bwidth:InterpolationWidths 39 3.2794989e-06 insert h_bwidth:InterpolationWidths 40 3.2802335e-06 insert h_bwidth:InterpolationWidths 41 3.2809681e-06 insert h_bwidth:InterpolationWidths 42 3.2817029e-06 insert h_bwidth:InterpolationWidths 43 3.2824377e-06 insert h_bwidth:InterpolationWidths 44 3.2831727e-06 insert h_bwidth:InterpolationWidths 45 3.2839078e-06 insert h_bwidth:InterpolationWidths 46 3.284643e-06 insert h_bwidth:InterpolationWidths 47 3.2853783e-06 insert h_bwidth:InterpolationWidths 48 3.2861137e-06 insert h_bwidth:InterpolationWidths 49 3.2868492e-06 insert h_bwidth:InterpolationWidths 50 3.2875848e-06 insert h_bwidth:InterpolationWidths 51 3.2883205e-06 insert h_bwidth:InterpolationWidths 52 3.2890564e-06 insert h_bwidth:InterpolationWidths 53 3.2897923e-06 insert h_bwidth:NumberofEntries 0 54 insert h_bwidth:NumberofEntries 1 54 insert h_bwidth:NumberofEntries 2 54 newdef /Herwig/Particles/h_b:Width_generator h_bwidth # create Herwig::GenericWidthGenerator chi_c01Pwidth newdef chi_c01Pwidth:Particle /Herwig/Particles/chi_c0 newdef chi_c01Pwidth:Prefactor 1.14211 newdef chi_c01Pwidth:BRNormalize 1 newdef chi_c01Pwidth:BRMinimum 0.01 newdef chi_c01Pwidth:Points 50 newdef chi_c01Pwidth:InterpolationOrder 1 insert chi_c01Pwidth:MEtype 0 2 insert chi_c01Pwidth:MEtype 1 2 insert chi_c01Pwidth:MEtype 2 0 insert chi_c01Pwidth:MEtype 3 0 insert chi_c01Pwidth:MEtype 4 0 insert chi_c01Pwidth:MEtype 5 0 insert chi_c01Pwidth:MEtype 6 2 insert chi_c01Pwidth:MEtype 7 0 insert chi_c01Pwidth:MEtype 8 2 insert chi_c01Pwidth:MEtype 9 2 insert chi_c01Pwidth:MEtype 10 2 insert chi_c01Pwidth:MEtype 11 2 insert chi_c01Pwidth:MEtype 12 2 insert chi_c01Pwidth:MEtype 13 2 insert chi_c01Pwidth:MEtype 14 0 insert chi_c01Pwidth:MEtype 15 0 insert chi_c01Pwidth:MEtype 16 0 insert chi_c01Pwidth:MEtype 17 0 insert chi_c01Pwidth:MEtype 18 0 insert chi_c01Pwidth:MEtype 19 1 insert chi_c01Pwidth:MEtype 20 0 insert chi_c01Pwidth:MEtype 21 1 insert chi_c01Pwidth:MEtype 22 0 insert chi_c01Pwidth:MEtype 23 0 insert chi_c01Pwidth:MEtype 24 0 insert chi_c01Pwidth:MEtype 25 0 insert chi_c01Pwidth:MEtype 26 0 insert chi_c01Pwidth:MEtype 27 2 insert chi_c01Pwidth:MEtype 28 0 insert chi_c01Pwidth:MEtype 29 2 insert chi_c01Pwidth:MEtype 30 0 insert chi_c01Pwidth:MEtype 31 1 insert chi_c01Pwidth:MEtype 32 0 insert chi_c01Pwidth:MEtype 33 2 insert chi_c01Pwidth:MEtype 34 0 insert chi_c01Pwidth:MEtype 35 0 insert chi_c01Pwidth:MEtype 36 2 insert chi_c01Pwidth:MEtype 37 0 insert chi_c01Pwidth:MEtype 38 0 insert chi_c01Pwidth:MEtype 39 1 insert chi_c01Pwidth:MEtype 40 1 insert chi_c01Pwidth:MEtype 41 0 insert chi_c01Pwidth:MEtype 42 0 insert chi_c01Pwidth:MEcode 0 0 insert chi_c01Pwidth:MEcode 1 0 insert chi_c01Pwidth:MEcode 2 0 insert chi_c01Pwidth:MEcode 3 0 insert chi_c01Pwidth:MEcode 4 0 insert chi_c01Pwidth:MEcode 5 0 insert chi_c01Pwidth:MEcode 6 0 insert chi_c01Pwidth:MEcode 7 0 insert chi_c01Pwidth:MEcode 8 0 insert chi_c01Pwidth:MEcode 9 0 insert chi_c01Pwidth:MEcode 10 0 insert chi_c01Pwidth:MEcode 11 0 insert chi_c01Pwidth:MEcode 12 0 insert chi_c01Pwidth:MEcode 13 0 insert chi_c01Pwidth:MEcode 14 0 insert chi_c01Pwidth:MEcode 15 0 insert chi_c01Pwidth:MEcode 16 0 insert chi_c01Pwidth:MEcode 17 0 insert chi_c01Pwidth:MEcode 18 0 insert chi_c01Pwidth:MEcode 19 6 insert chi_c01Pwidth:MEcode 20 0 insert chi_c01Pwidth:MEcode 21 6 insert chi_c01Pwidth:MEcode 22 0 insert chi_c01Pwidth:MEcode 23 0 insert chi_c01Pwidth:MEcode 24 0 insert chi_c01Pwidth:MEcode 25 0 insert chi_c01Pwidth:MEcode 26 0 insert chi_c01Pwidth:MEcode 27 0 insert chi_c01Pwidth:MEcode 28 0 insert chi_c01Pwidth:MEcode 29 0 insert chi_c01Pwidth:MEcode 30 0 insert chi_c01Pwidth:MEcode 31 12 insert chi_c01Pwidth:MEcode 32 0 insert chi_c01Pwidth:MEcode 33 0 insert chi_c01Pwidth:MEcode 34 0 insert chi_c01Pwidth:MEcode 35 0 insert chi_c01Pwidth:MEcode 36 0 insert chi_c01Pwidth:MEcode 37 0 insert chi_c01Pwidth:MEcode 38 0 insert chi_c01Pwidth:MEcode 39 6 insert chi_c01Pwidth:MEcode 40 6 insert chi_c01Pwidth:MEcode 41 0 insert chi_c01Pwidth:MEcode 42 0 insert chi_c01Pwidth:MEcoupling 0 1.00075 insert chi_c01Pwidth:MEcoupling 1 0.991347 insert chi_c01Pwidth:MEcoupling 2 0.0022 insert chi_c01Pwidth:MEcoupling 3 0.0044 insert chi_c01Pwidth:MEcoupling 4 0.0022 insert chi_c01Pwidth:MEcoupling 5 0.0044 insert chi_c01Pwidth:MEcoupling 6 0.998305 insert chi_c01Pwidth:MEcoupling 7 0.0022 insert chi_c01Pwidth:MEcoupling 8 1.04077 insert chi_c01Pwidth:MEcoupling 9 0.980469 insert chi_c01Pwidth:MEcoupling 10 0.980467 insert chi_c01Pwidth:MEcoupling 11 1.04037 insert chi_c01Pwidth:MEcoupling 12 1.03397 insert chi_c01Pwidth:MEcoupling 13 1.03396 insert chi_c01Pwidth:MEcoupling 14 0.0022 insert chi_c01Pwidth:MEcoupling 15 0.0044 insert chi_c01Pwidth:MEcoupling 16 0.0021 insert chi_c01Pwidth:MEcoupling 17 0.0015 insert chi_c01Pwidth:MEcoupling 18 0.00277 insert chi_c01Pwidth:MEcoupling 19 0.0293865 insert chi_c01Pwidth:MEcoupling 20 0.0044 insert chi_c01Pwidth:MEcoupling 21 0.0293973 insert chi_c01Pwidth:MEcoupling 22 0.01 insert chi_c01Pwidth:MEcoupling 23 0.01 insert chi_c01Pwidth:MEcoupling 24 0.01 insert chi_c01Pwidth:MEcoupling 25 0.01 insert chi_c01Pwidth:MEcoupling 26 0.00044 insert chi_c01Pwidth:MEcoupling 27 0.932597 insert chi_c01Pwidth:MEcoupling 28 0.026 insert chi_c01Pwidth:MEcoupling 29 0.988501 insert chi_c01Pwidth:MEcoupling 30 0.788568 insert chi_c01Pwidth:MEcoupling 31 0.00919266 insert chi_c01Pwidth:MEcoupling 32 0.000216 insert chi_c01Pwidth:MEcoupling 33 0.997227 insert chi_c01Pwidth:MEcoupling 34 0.0019 insert chi_c01Pwidth:MEcoupling 35 0.000216 insert chi_c01Pwidth:MEcoupling 36 0.991809 insert chi_c01Pwidth:MEcoupling 37 0.00739 insert chi_c01Pwidth:MEcoupling 38 0.016 insert chi_c01Pwidth:MEcoupling 39 0.0271531 insert chi_c01Pwidth:MEcoupling 40 0.0191981 insert chi_c01Pwidth:MEcoupling 41 0.016 insert chi_c01Pwidth:MEcoupling 42 0.016 insert chi_c01Pwidth:ModeOn 0 1 insert chi_c01Pwidth:ModeOn 1 0 insert chi_c01Pwidth:ModeOn 2 0 insert chi_c01Pwidth:ModeOn 3 0 insert chi_c01Pwidth:ModeOn 4 0 insert chi_c01Pwidth:ModeOn 5 0 insert chi_c01Pwidth:ModeOn 6 0 insert chi_c01Pwidth:ModeOn 7 0 insert chi_c01Pwidth:ModeOn 8 0 insert chi_c01Pwidth:ModeOn 9 0 insert chi_c01Pwidth:ModeOn 10 0 insert chi_c01Pwidth:ModeOn 11 0 insert chi_c01Pwidth:ModeOn 12 0 insert chi_c01Pwidth:ModeOn 13 0 insert chi_c01Pwidth:ModeOn 14 0 insert chi_c01Pwidth:ModeOn 15 0 insert chi_c01Pwidth:ModeOn 16 0 insert chi_c01Pwidth:ModeOn 17 0 insert chi_c01Pwidth:ModeOn 18 0 insert chi_c01Pwidth:ModeOn 19 0 insert chi_c01Pwidth:ModeOn 20 0 insert chi_c01Pwidth:ModeOn 21 0 insert chi_c01Pwidth:ModeOn 22 0 insert chi_c01Pwidth:ModeOn 23 0 insert chi_c01Pwidth:ModeOn 24 0 insert chi_c01Pwidth:ModeOn 25 0 insert chi_c01Pwidth:ModeOn 26 0 insert chi_c01Pwidth:ModeOn 27 0 insert chi_c01Pwidth:ModeOn 28 1 insert chi_c01Pwidth:ModeOn 29 0 insert chi_c01Pwidth:ModeOn 30 1 insert chi_c01Pwidth:ModeOn 31 0 insert chi_c01Pwidth:ModeOn 32 0 insert chi_c01Pwidth:ModeOn 33 0 insert chi_c01Pwidth:ModeOn 34 0 insert chi_c01Pwidth:ModeOn 35 0 insert chi_c01Pwidth:ModeOn 36 0 insert chi_c01Pwidth:ModeOn 37 0 insert chi_c01Pwidth:ModeOn 38 1 insert chi_c01Pwidth:ModeOn 39 0 insert chi_c01Pwidth:ModeOn 40 0 insert chi_c01Pwidth:ModeOn 41 1 insert chi_c01Pwidth:ModeOn 42 1 insert chi_c01Pwidth:MinimumMasses 0 3.09598 insert chi_c01Pwidth:MinimumMasses 1 1.28332 insert chi_c01Pwidth:MinimumMasses 2 1.27031 insert chi_c01Pwidth:MinimumMasses 3 1.27888 insert chi_c01Pwidth:MinimumMasses 4 1.27031 insert chi_c01Pwidth:MinimumMasses 5 1.27888 insert chi_c01Pwidth:MinimumMasses 6 1.292 insert chi_c01Pwidth:MinimumMasses 7 1.27863 insert chi_c01Pwidth:MinimumMasses 8 1.288 insert chi_c01Pwidth:MinimumMasses 9 1.8726 insert chi_c01Pwidth:MinimumMasses 10 1.8726 insert chi_c01Pwidth:MinimumMasses 11 1.288 insert chi_c01Pwidth:MinimumMasses 12 1.8584 insert chi_c01Pwidth:MinimumMasses 13 1.8584 insert chi_c01Pwidth:MinimumMasses 14 1.27863 insert chi_c01Pwidth:MinimumMasses 15 1.27925 insert chi_c01Pwidth:MinimumMasses 16 1.97471 insert chi_c01Pwidth:MinimumMasses 17 1.98265 insert chi_c01Pwidth:MinimumMasses 18 1.26649 insert chi_c01Pwidth:MinimumMasses 19 0.987354 insert chi_c01Pwidth:MinimumMasses 20 1.27925 insert chi_c01Pwidth:MinimumMasses 21 0.995296 insert chi_c01Pwidth:MinimumMasses 22 1.58568 insert chi_c01Pwidth:MinimumMasses 23 1.58568 insert chi_c01Pwidth:MinimumMasses 24 1.58965 insert chi_c01Pwidth:MinimumMasses 25 1.58965 insert chi_c01Pwidth:MinimumMasses 26 2.23136 insert chi_c01Pwidth:MinimumMasses 27 1.09499 insert chi_c01Pwidth:MinimumMasses 28 2.153 insert chi_c01Pwidth:MinimumMasses 29 1.418 insert chi_c01Pwidth:MinimumMasses 30 0 insert chi_c01Pwidth:MinimumMasses 31 0 insert chi_c01Pwidth:MinimumMasses 32 1.87914 insert chi_c01Pwidth:MinimumMasses 33 1.3955 insert chi_c01Pwidth:MinimumMasses 34 2.15568 insert chi_c01Pwidth:MinimumMasses 35 1.87654 insert chi_c01Pwidth:MinimumMasses 36 1.97892 insert chi_c01Pwidth:MinimumMasses 37 0.558281 insert chi_c01Pwidth:MinimumMasses 38 0.65464 insert chi_c01Pwidth:MinimumMasses 39 0.27914 insert chi_c01Pwidth:MinimumMasses 40 0.269955 insert chi_c01Pwidth:MinimumMasses 41 0.650048 insert chi_c01Pwidth:MinimumMasses 42 0.650048 insert chi_c01Pwidth:MEmass1 0 3.09692 insert chi_c01Pwidth:MEmass1 1 0.89166 insert chi_c01Pwidth:MEmass1 2 0 insert chi_c01Pwidth:MEmass1 3 0 insert chi_c01Pwidth:MEmass1 4 0 insert chi_c01Pwidth:MEmass1 5 0 insert chi_c01Pwidth:MEmass1 6 0.896 insert chi_c01Pwidth:MEmass1 7 0 insert chi_c01Pwidth:MEmass1 8 1.414 insert chi_c01Pwidth:MEmass1 9 1.4256 insert chi_c01Pwidth:MEmass1 10 1.4256 insert chi_c01Pwidth:MEmass1 11 1.414 insert chi_c01Pwidth:MEmass1 12 1.4324 insert chi_c01Pwidth:MEmass1 13 1.4324 insert chi_c01Pwidth:MEmass1 14 0 insert chi_c01Pwidth:MEmass1 15 0 insert chi_c01Pwidth:MEmass1 16 0 insert chi_c01Pwidth:MEmass1 17 0 insert chi_c01Pwidth:MEmass1 18 0 insert chi_c01Pwidth:MEmass1 19 0.493677 insert chi_c01Pwidth:MEmass1 20 0 insert chi_c01Pwidth:MEmass1 21 0.497648 insert chi_c01Pwidth:MEmass1 22 0 insert chi_c01Pwidth:MEmass1 23 0 insert chi_c01Pwidth:MEmass1 24 0 insert chi_c01Pwidth:MEmass1 25 0 insert chi_c01Pwidth:MEmass1 26 0 insert chi_c01Pwidth:MEmass1 27 0.54751 insert chi_c01Pwidth:MEmass1 28 0 insert chi_c01Pwidth:MEmass1 29 0.965 insert chi_c01Pwidth:MEmass1 30 0 insert chi_c01Pwidth:MEmass1 31 0 insert chi_c01Pwidth:MEmass1 32 0 insert chi_c01Pwidth:MEmass1 33 0.78265 insert chi_c01Pwidth:MEmass1 34 0 insert chi_c01Pwidth:MEmass1 35 0 insert chi_c01Pwidth:MEmass1 36 1.01946 insert chi_c01Pwidth:MEmass1 37 0 insert chi_c01Pwidth:MEmass1 38 0 insert chi_c01Pwidth:MEmass1 39 0.13957 insert chi_c01Pwidth:MEmass1 40 0.134978 insert chi_c01Pwidth:MEmass1 41 0 insert chi_c01Pwidth:MEmass1 42 0 insert chi_c01Pwidth:MEmass2 0 0 insert chi_c01Pwidth:MEmass2 1 0.89166 insert chi_c01Pwidth:MEmass2 2 0 insert chi_c01Pwidth:MEmass2 3 0 insert chi_c01Pwidth:MEmass2 4 0 insert chi_c01Pwidth:MEmass2 5 0 insert chi_c01Pwidth:MEmass2 6 0.896 insert chi_c01Pwidth:MEmass2 7 0 insert chi_c01Pwidth:MEmass2 8 1.414 insert chi_c01Pwidth:MEmass2 9 1.414 insert chi_c01Pwidth:MEmass2 10 1.414 insert chi_c01Pwidth:MEmass2 11 1.414 insert chi_c01Pwidth:MEmass2 12 1.414 insert chi_c01Pwidth:MEmass2 13 1.414 insert chi_c01Pwidth:MEmass2 14 0 insert chi_c01Pwidth:MEmass2 15 0 insert chi_c01Pwidth:MEmass2 16 0 insert chi_c01Pwidth:MEmass2 17 0 insert chi_c01Pwidth:MEmass2 18 0 insert chi_c01Pwidth:MEmass2 19 0.493677 insert chi_c01Pwidth:MEmass2 20 0 insert chi_c01Pwidth:MEmass2 21 0.497648 insert chi_c01Pwidth:MEmass2 22 0 insert chi_c01Pwidth:MEmass2 23 0 insert chi_c01Pwidth:MEmass2 24 0 insert chi_c01Pwidth:MEmass2 25 0 insert chi_c01Pwidth:MEmass2 26 0 insert chi_c01Pwidth:MEmass2 27 0.54751 insert chi_c01Pwidth:MEmass2 28 0 insert chi_c01Pwidth:MEmass2 29 0.965 insert chi_c01Pwidth:MEmass2 30 0 insert chi_c01Pwidth:MEmass2 31 0 insert chi_c01Pwidth:MEmass2 32 0 insert chi_c01Pwidth:MEmass2 33 0.78265 insert chi_c01Pwidth:MEmass2 34 0 insert chi_c01Pwidth:MEmass2 35 0 insert chi_c01Pwidth:MEmass2 36 1.01946 insert chi_c01Pwidth:MEmass2 37 0 insert chi_c01Pwidth:MEmass2 38 0 insert chi_c01Pwidth:MEmass2 39 0.13957 insert chi_c01Pwidth:MEmass2 40 0.134978 insert chi_c01Pwidth:MEmass2 41 0 insert chi_c01Pwidth:MEmass2 42 0 insert chi_c01Pwidth:DecayModes 0 chi_c0->Jpsi,gamma; insert chi_c01Pwidth:DecayModes 1 chi_c0->K*+,K*-; insert chi_c01Pwidth:DecayModes 2 chi_c0->K*+,K-,pi0; insert chi_c01Pwidth:DecayModes 3 chi_c0->K*+,Kbar0,pi-; insert chi_c01Pwidth:DecayModes 4 chi_c0->K*-,K+,pi0; insert chi_c01Pwidth:DecayModes 5 chi_c0->K*-,K0,pi+; insert chi_c01Pwidth:DecayModes 6 chi_c0->K*0,K*bar0; insert chi_c01Pwidth:DecayModes 7 chi_c0->K*0,Kbar0,pi0; insert chi_c01Pwidth:DecayModes 8 chi_c0->K*_0+,K*_0-; insert chi_c01Pwidth:DecayModes 9 chi_c0->K*_0+,K*_2-; insert chi_c01Pwidth:DecayModes 10 chi_c0->K*_0-,K*_2+; insert chi_c01Pwidth:DecayModes 11 chi_c0->K*_00,K*_0bar0; insert chi_c01Pwidth:DecayModes 12 chi_c0->K*_00,K*_2bar0; insert chi_c01Pwidth:DecayModes 13 chi_c0->K*_0bar0,K*_20; insert chi_c01Pwidth:DecayModes 14 chi_c0->K*bar0,K0,pi0; insert chi_c01Pwidth:DecayModes 15 chi_c0->K+,K*bar0,pi-; insert chi_c01Pwidth:DecayModes 16 chi_c0->K+,K+,K-,K-; insert chi_c01Pwidth:DecayModes 17 chi_c0->K+,K-,K_S0,K_S0; insert chi_c01Pwidth:DecayModes 18 chi_c0->K+,K-,pi+,pi-; insert chi_c01Pwidth:DecayModes 19 chi_c0->K+,K-; insert chi_c01Pwidth:DecayModes 20 chi_c0->K-,K*0,pi+; insert chi_c01Pwidth:DecayModes 21 chi_c0->K0,Kbar0; insert chi_c01Pwidth:DecayModes 22 chi_c0->K_1+,K-; insert chi_c01Pwidth:DecayModes 23 chi_c0->K_1-,K+; insert chi_c01Pwidth:DecayModes 24 chi_c0->K_10,Kbar0; insert chi_c01Pwidth:DecayModes 25 chi_c0->K_1bar0,K0; insert chi_c01Pwidth:DecayModes 26 chi_c0->Lambda0,Lambdabar0; insert chi_c01Pwidth:DecayModes 27 chi_c0->eta,eta; insert chi_c01Pwidth:DecayModes 28 chi_c0->f_0(1710),f'_0; insert chi_c01Pwidth:DecayModes 29 chi_c0->f_0,f_0; insert chi_c01Pwidth:DecayModes 30 chi_c0->g,g; insert chi_c01Pwidth:DecayModes 31 chi_c0->gamma,gamma; insert chi_c01Pwidth:DecayModes 32 chi_c0->n0,nbar0; insert chi_c01Pwidth:DecayModes 33 chi_c0->omega,omega; insert chi_c01Pwidth:DecayModes 34 chi_c0->p+,pbar-,pi+,pi-; insert chi_c01Pwidth:DecayModes 35 chi_c0->p+,pbar-; insert chi_c01Pwidth:DecayModes 36 chi_c0->phi,phi; insert chi_c01Pwidth:DecayModes 37 chi_c0->pi+,pi+,pi-,pi-; insert chi_c01Pwidth:DecayModes 38 chi_c0->pi+,pi-,rho0; insert chi_c01Pwidth:DecayModes 39 chi_c0->pi+,pi-; insert chi_c01Pwidth:DecayModes 40 chi_c0->pi0,pi0; insert chi_c01Pwidth:DecayModes 41 chi_c0->rho+,pi-,pi0; insert chi_c01Pwidth:DecayModes 42 chi_c0->rho-,pi+,pi0; insert chi_c01Pwidth:InterpolationMasses 0 3.3022702 insert chi_c01Pwidth:InterpolationMasses 1 3.3065151 insert chi_c01Pwidth:InterpolationMasses 2 3.31076 insert chi_c01Pwidth:InterpolationMasses 3 3.3150049 insert chi_c01Pwidth:InterpolationMasses 4 3.3192498 insert chi_c01Pwidth:InterpolationMasses 5 3.3234947 insert chi_c01Pwidth:InterpolationMasses 6 3.3277396 insert chi_c01Pwidth:InterpolationMasses 7 3.3319845 insert chi_c01Pwidth:InterpolationMasses 8 3.3362294 insert chi_c01Pwidth:InterpolationMasses 9 3.3404743 insert chi_c01Pwidth:InterpolationMasses 10 3.3447192 insert chi_c01Pwidth:InterpolationMasses 11 3.3489641 insert chi_c01Pwidth:InterpolationMasses 12 3.353209 insert chi_c01Pwidth:InterpolationMasses 13 3.3574539 insert chi_c01Pwidth:InterpolationMasses 14 3.3616988 insert chi_c01Pwidth:InterpolationMasses 15 3.3659437 insert chi_c01Pwidth:InterpolationMasses 16 3.3701886 insert chi_c01Pwidth:InterpolationMasses 17 3.3744335 insert chi_c01Pwidth:InterpolationMasses 18 3.3786784 insert chi_c01Pwidth:InterpolationMasses 19 3.3829233 insert chi_c01Pwidth:InterpolationMasses 20 3.3871682 insert chi_c01Pwidth:InterpolationMasses 21 3.3914131 insert chi_c01Pwidth:InterpolationMasses 22 3.395658 insert chi_c01Pwidth:InterpolationMasses 23 3.3999029 insert chi_c01Pwidth:InterpolationMasses 24 3.4041478 insert chi_c01Pwidth:InterpolationMasses 25 3.4083927 insert chi_c01Pwidth:InterpolationMasses 26 3.4126376 insert chi_c01Pwidth:InterpolationMasses 27 3.4168824 insert chi_c01Pwidth:InterpolationMasses 28 3.4211273 insert chi_c01Pwidth:InterpolationMasses 29 3.4253722 insert chi_c01Pwidth:InterpolationMasses 30 3.4296171 insert chi_c01Pwidth:InterpolationMasses 31 3.433862 insert chi_c01Pwidth:InterpolationMasses 32 3.4381069 insert chi_c01Pwidth:InterpolationMasses 33 3.4423518 insert chi_c01Pwidth:InterpolationMasses 34 3.4465967 insert chi_c01Pwidth:InterpolationMasses 35 3.4508416 insert chi_c01Pwidth:InterpolationMasses 36 3.4550865 insert chi_c01Pwidth:InterpolationMasses 37 3.4593314 insert chi_c01Pwidth:InterpolationMasses 38 3.4635763 insert chi_c01Pwidth:InterpolationMasses 39 3.4678212 insert chi_c01Pwidth:InterpolationMasses 40 3.4720661 insert chi_c01Pwidth:InterpolationMasses 41 3.476311 insert chi_c01Pwidth:InterpolationMasses 42 3.4805559 insert chi_c01Pwidth:InterpolationMasses 43 3.4848008 insert chi_c01Pwidth:InterpolationMasses 44 3.4890457 insert chi_c01Pwidth:InterpolationMasses 45 3.4932906 insert chi_c01Pwidth:InterpolationMasses 46 3.4975355 insert chi_c01Pwidth:InterpolationMasses 47 3.5017804 insert chi_c01Pwidth:InterpolationMasses 48 3.5060253 insert chi_c01Pwidth:InterpolationMasses 49 3.5102702 insert chi_c01Pwidth:InterpolationMasses 50 3.5145151 insert chi_c01Pwidth:InterpolationMasses 51 3.51876 insert chi_c01Pwidth:InterpolationMasses 52 3.5230049 insert chi_c01Pwidth:InterpolationMasses 53 3.5272498 insert chi_c01Pwidth:InterpolationMasses 54 3.3022702 insert chi_c01Pwidth:InterpolationMasses 55 3.3065151 insert chi_c01Pwidth:InterpolationMasses 56 3.31076 insert chi_c01Pwidth:InterpolationMasses 57 3.3150049 insert chi_c01Pwidth:InterpolationMasses 58 3.3192498 insert chi_c01Pwidth:InterpolationMasses 59 3.3234947 insert chi_c01Pwidth:InterpolationMasses 60 3.3277396 insert chi_c01Pwidth:InterpolationMasses 61 3.3319845 insert chi_c01Pwidth:InterpolationMasses 62 3.3362294 insert chi_c01Pwidth:InterpolationMasses 63 3.3404743 insert chi_c01Pwidth:InterpolationMasses 64 3.3447192 insert chi_c01Pwidth:InterpolationMasses 65 3.3489641 insert chi_c01Pwidth:InterpolationMasses 66 3.353209 insert chi_c01Pwidth:InterpolationMasses 67 3.3574539 insert chi_c01Pwidth:InterpolationMasses 68 3.3616988 insert chi_c01Pwidth:InterpolationMasses 69 3.3659437 insert chi_c01Pwidth:InterpolationMasses 70 3.3701886 insert chi_c01Pwidth:InterpolationMasses 71 3.3744335 insert chi_c01Pwidth:InterpolationMasses 72 3.3786784 insert chi_c01Pwidth:InterpolationMasses 73 3.3829233 insert chi_c01Pwidth:InterpolationMasses 74 3.3871682 insert chi_c01Pwidth:InterpolationMasses 75 3.3914131 insert chi_c01Pwidth:InterpolationMasses 76 3.395658 insert chi_c01Pwidth:InterpolationMasses 77 3.3999029 insert chi_c01Pwidth:InterpolationMasses 78 3.4041478 insert chi_c01Pwidth:InterpolationMasses 79 3.4083927 insert chi_c01Pwidth:InterpolationMasses 80 3.4126376 insert chi_c01Pwidth:InterpolationMasses 81 3.4168824 insert chi_c01Pwidth:InterpolationMasses 82 3.4211273 insert chi_c01Pwidth:InterpolationMasses 83 3.4253722 insert chi_c01Pwidth:InterpolationMasses 84 3.4296171 insert chi_c01Pwidth:InterpolationMasses 85 3.433862 insert chi_c01Pwidth:InterpolationMasses 86 3.4381069 insert chi_c01Pwidth:InterpolationMasses 87 3.4423518 insert chi_c01Pwidth:InterpolationMasses 88 3.4465967 insert chi_c01Pwidth:InterpolationMasses 89 3.4508416 insert chi_c01Pwidth:InterpolationMasses 90 3.4550865 insert chi_c01Pwidth:InterpolationMasses 91 3.4593314 insert chi_c01Pwidth:InterpolationMasses 92 3.4635763 insert chi_c01Pwidth:InterpolationMasses 93 3.4678212 insert chi_c01Pwidth:InterpolationMasses 94 3.4720661 insert chi_c01Pwidth:InterpolationMasses 95 3.476311 insert chi_c01Pwidth:InterpolationMasses 96 3.4805559 insert chi_c01Pwidth:InterpolationMasses 97 3.4848008 insert chi_c01Pwidth:InterpolationMasses 98 3.4890457 insert chi_c01Pwidth:InterpolationMasses 99 3.4932906 insert chi_c01Pwidth:InterpolationMasses 100 3.4975355 insert chi_c01Pwidth:InterpolationMasses 101 3.5017804 insert chi_c01Pwidth:InterpolationMasses 102 3.5060253 insert chi_c01Pwidth:InterpolationMasses 103 3.5102702 insert chi_c01Pwidth:InterpolationMasses 104 3.5145151 insert chi_c01Pwidth:InterpolationMasses 105 3.51876 insert chi_c01Pwidth:InterpolationMasses 106 3.5230049 insert chi_c01Pwidth:InterpolationMasses 107 3.5272498 insert chi_c01Pwidth:InterpolationMasses 108 3.3022702 insert chi_c01Pwidth:InterpolationMasses 109 3.3065151 insert chi_c01Pwidth:InterpolationMasses 110 3.31076 insert chi_c01Pwidth:InterpolationMasses 111 3.3150049 insert chi_c01Pwidth:InterpolationMasses 112 3.3192498 insert chi_c01Pwidth:InterpolationMasses 113 3.3234947 insert chi_c01Pwidth:InterpolationMasses 114 3.3277396 insert chi_c01Pwidth:InterpolationMasses 115 3.3319845 insert chi_c01Pwidth:InterpolationMasses 116 3.3362294 insert chi_c01Pwidth:InterpolationMasses 117 3.3404743 insert chi_c01Pwidth:InterpolationMasses 118 3.3447192 insert chi_c01Pwidth:InterpolationMasses 119 3.3489641 insert chi_c01Pwidth:InterpolationMasses 120 3.353209 insert chi_c01Pwidth:InterpolationMasses 121 3.3574539 insert chi_c01Pwidth:InterpolationMasses 122 3.3616988 insert chi_c01Pwidth:InterpolationMasses 123 3.3659437 insert chi_c01Pwidth:InterpolationMasses 124 3.3701886 insert chi_c01Pwidth:InterpolationMasses 125 3.3744335 insert chi_c01Pwidth:InterpolationMasses 126 3.3786784 insert chi_c01Pwidth:InterpolationMasses 127 3.3829233 insert chi_c01Pwidth:InterpolationMasses 128 3.3871682 insert chi_c01Pwidth:InterpolationMasses 129 3.3914131 insert chi_c01Pwidth:InterpolationMasses 130 3.395658 insert chi_c01Pwidth:InterpolationMasses 131 3.3999029 insert chi_c01Pwidth:InterpolationMasses 132 3.4041478 insert chi_c01Pwidth:InterpolationMasses 133 3.4083927 insert chi_c01Pwidth:InterpolationMasses 134 3.4126376 insert chi_c01Pwidth:InterpolationMasses 135 3.4168824 insert chi_c01Pwidth:InterpolationMasses 136 3.4211273 insert chi_c01Pwidth:InterpolationMasses 137 3.4253722 insert chi_c01Pwidth:InterpolationMasses 138 3.4296171 insert chi_c01Pwidth:InterpolationMasses 139 3.433862 insert chi_c01Pwidth:InterpolationMasses 140 3.4381069 insert chi_c01Pwidth:InterpolationMasses 141 3.4423518 insert chi_c01Pwidth:InterpolationMasses 142 3.4465967 insert chi_c01Pwidth:InterpolationMasses 143 3.4508416 insert chi_c01Pwidth:InterpolationMasses 144 3.4550865 insert chi_c01Pwidth:InterpolationMasses 145 3.4593314 insert chi_c01Pwidth:InterpolationMasses 146 3.4635763 insert chi_c01Pwidth:InterpolationMasses 147 3.4678212 insert chi_c01Pwidth:InterpolationMasses 148 3.4720661 insert chi_c01Pwidth:InterpolationMasses 149 3.476311 insert chi_c01Pwidth:InterpolationMasses 150 3.4805559 insert chi_c01Pwidth:InterpolationMasses 151 3.4848008 insert chi_c01Pwidth:InterpolationMasses 152 3.4890457 insert chi_c01Pwidth:InterpolationMasses 153 3.4932906 insert chi_c01Pwidth:InterpolationMasses 154 3.4975355 insert chi_c01Pwidth:InterpolationMasses 155 3.5017804 insert chi_c01Pwidth:InterpolationMasses 156 3.5060253 insert chi_c01Pwidth:InterpolationMasses 157 3.5102702 insert chi_c01Pwidth:InterpolationMasses 158 3.5145151 insert chi_c01Pwidth:InterpolationMasses 159 3.51876 insert chi_c01Pwidth:InterpolationMasses 160 3.5230049 insert chi_c01Pwidth:InterpolationMasses 161 3.5272498 insert chi_c01Pwidth:InterpolationMasses 162 3.3022702 insert chi_c01Pwidth:InterpolationMasses 163 3.3065151 insert chi_c01Pwidth:InterpolationMasses 164 3.31076 insert chi_c01Pwidth:InterpolationMasses 165 3.3150049 insert chi_c01Pwidth:InterpolationMasses 166 3.3192498 insert chi_c01Pwidth:InterpolationMasses 167 3.3234947 insert chi_c01Pwidth:InterpolationMasses 168 3.3277396 insert chi_c01Pwidth:InterpolationMasses 169 3.3319845 insert chi_c01Pwidth:InterpolationMasses 170 3.3362294 insert chi_c01Pwidth:InterpolationMasses 171 3.3404743 insert chi_c01Pwidth:InterpolationMasses 172 3.3447192 insert chi_c01Pwidth:InterpolationMasses 173 3.3489641 insert chi_c01Pwidth:InterpolationMasses 174 3.353209 insert chi_c01Pwidth:InterpolationMasses 175 3.3574539 insert chi_c01Pwidth:InterpolationMasses 176 3.3616988 insert chi_c01Pwidth:InterpolationMasses 177 3.3659437 insert chi_c01Pwidth:InterpolationMasses 178 3.3701886 insert chi_c01Pwidth:InterpolationMasses 179 3.3744335 insert chi_c01Pwidth:InterpolationMasses 180 3.3786784 insert chi_c01Pwidth:InterpolationMasses 181 3.3829233 insert chi_c01Pwidth:InterpolationMasses 182 3.3871682 insert chi_c01Pwidth:InterpolationMasses 183 3.3914131 insert chi_c01Pwidth:InterpolationMasses 184 3.395658 insert chi_c01Pwidth:InterpolationMasses 185 3.3999029 insert chi_c01Pwidth:InterpolationMasses 186 3.4041478 insert chi_c01Pwidth:InterpolationMasses 187 3.4083927 insert chi_c01Pwidth:InterpolationMasses 188 3.4126376 insert chi_c01Pwidth:InterpolationMasses 189 3.4168824 insert chi_c01Pwidth:InterpolationMasses 190 3.4211273 insert chi_c01Pwidth:InterpolationMasses 191 3.4253722 insert chi_c01Pwidth:InterpolationMasses 192 3.4296171 insert chi_c01Pwidth:InterpolationMasses 193 3.433862 insert chi_c01Pwidth:InterpolationMasses 194 3.4381069 insert chi_c01Pwidth:InterpolationMasses 195 3.4423518 insert chi_c01Pwidth:InterpolationMasses 196 3.4465967 insert chi_c01Pwidth:InterpolationMasses 197 3.4508416 insert chi_c01Pwidth:InterpolationMasses 198 3.4550865 insert chi_c01Pwidth:InterpolationMasses 199 3.4593314 insert chi_c01Pwidth:InterpolationMasses 200 3.4635763 insert chi_c01Pwidth:InterpolationMasses 201 3.4678212 insert chi_c01Pwidth:InterpolationMasses 202 3.4720661 insert chi_c01Pwidth:InterpolationMasses 203 3.476311 insert chi_c01Pwidth:InterpolationMasses 204 3.4805559 insert chi_c01Pwidth:InterpolationMasses 205 3.4848008 insert chi_c01Pwidth:InterpolationMasses 206 3.4890457 insert chi_c01Pwidth:InterpolationMasses 207 3.4932906 insert chi_c01Pwidth:InterpolationMasses 208 3.4975355 insert chi_c01Pwidth:InterpolationMasses 209 3.5017804 insert chi_c01Pwidth:InterpolationMasses 210 3.5060253 insert chi_c01Pwidth:InterpolationMasses 211 3.5102702 insert chi_c01Pwidth:InterpolationMasses 212 3.5145151 insert chi_c01Pwidth:InterpolationMasses 213 3.51876 insert chi_c01Pwidth:InterpolationMasses 214 3.5230049 insert chi_c01Pwidth:InterpolationMasses 215 3.5272498 insert chi_c01Pwidth:InterpolationMasses 216 3.3022702 insert chi_c01Pwidth:InterpolationMasses 217 3.3065151 insert chi_c01Pwidth:InterpolationMasses 218 3.31076 insert chi_c01Pwidth:InterpolationMasses 219 3.3150049 insert chi_c01Pwidth:InterpolationMasses 220 3.3192498 insert chi_c01Pwidth:InterpolationMasses 221 3.3234947 insert chi_c01Pwidth:InterpolationMasses 222 3.3277396 insert chi_c01Pwidth:InterpolationMasses 223 3.3319845 insert chi_c01Pwidth:InterpolationMasses 224 3.3362294 insert chi_c01Pwidth:InterpolationMasses 225 3.3404743 insert chi_c01Pwidth:InterpolationMasses 226 3.3447192 insert chi_c01Pwidth:InterpolationMasses 227 3.3489641 insert chi_c01Pwidth:InterpolationMasses 228 3.353209 insert chi_c01Pwidth:InterpolationMasses 229 3.3574539 insert chi_c01Pwidth:InterpolationMasses 230 3.3616988 insert chi_c01Pwidth:InterpolationMasses 231 3.3659437 insert chi_c01Pwidth:InterpolationMasses 232 3.3701886 insert chi_c01Pwidth:InterpolationMasses 233 3.3744335 insert chi_c01Pwidth:InterpolationMasses 234 3.3786784 insert chi_c01Pwidth:InterpolationMasses 235 3.3829233 insert chi_c01Pwidth:InterpolationMasses 236 3.3871682 insert chi_c01Pwidth:InterpolationMasses 237 3.3914131 insert chi_c01Pwidth:InterpolationMasses 238 3.395658 insert chi_c01Pwidth:InterpolationMasses 239 3.3999029 insert chi_c01Pwidth:InterpolationMasses 240 3.4041478 insert chi_c01Pwidth:InterpolationMasses 241 3.4083927 insert chi_c01Pwidth:InterpolationMasses 242 3.4126376 insert chi_c01Pwidth:InterpolationMasses 243 3.4168824 insert chi_c01Pwidth:InterpolationMasses 244 3.4211273 insert chi_c01Pwidth:InterpolationMasses 245 3.4253722 insert chi_c01Pwidth:InterpolationMasses 246 3.4296171 insert chi_c01Pwidth:InterpolationMasses 247 3.433862 insert chi_c01Pwidth:InterpolationMasses 248 3.4381069 insert chi_c01Pwidth:InterpolationMasses 249 3.4423518 insert chi_c01Pwidth:InterpolationMasses 250 3.4465967 insert chi_c01Pwidth:InterpolationMasses 251 3.4508416 insert chi_c01Pwidth:InterpolationMasses 252 3.4550865 insert chi_c01Pwidth:InterpolationMasses 253 3.4593314 insert chi_c01Pwidth:InterpolationMasses 254 3.4635763 insert chi_c01Pwidth:InterpolationMasses 255 3.4678212 insert chi_c01Pwidth:InterpolationMasses 256 3.4720661 insert chi_c01Pwidth:InterpolationMasses 257 3.476311 insert chi_c01Pwidth:InterpolationMasses 258 3.4805559 insert chi_c01Pwidth:InterpolationMasses 259 3.4848008 insert chi_c01Pwidth:InterpolationMasses 260 3.4890457 insert chi_c01Pwidth:InterpolationMasses 261 3.4932906 insert chi_c01Pwidth:InterpolationMasses 262 3.4975355 insert chi_c01Pwidth:InterpolationMasses 263 3.5017804 insert chi_c01Pwidth:InterpolationMasses 264 3.5060253 insert chi_c01Pwidth:InterpolationMasses 265 3.5102702 insert chi_c01Pwidth:InterpolationMasses 266 3.5145151 insert chi_c01Pwidth:InterpolationMasses 267 3.51876 insert chi_c01Pwidth:InterpolationMasses 268 3.5230049 insert chi_c01Pwidth:InterpolationMasses 269 3.5272498 insert chi_c01Pwidth:InterpolationMasses 270 3.3022702 insert chi_c01Pwidth:InterpolationMasses 271 3.3065151 insert chi_c01Pwidth:InterpolationMasses 272 3.31076 insert chi_c01Pwidth:InterpolationMasses 273 3.3150049 insert chi_c01Pwidth:InterpolationMasses 274 3.3192498 insert chi_c01Pwidth:InterpolationMasses 275 3.3234947 insert chi_c01Pwidth:InterpolationMasses 276 3.3277396 insert chi_c01Pwidth:InterpolationMasses 277 3.3319845 insert chi_c01Pwidth:InterpolationMasses 278 3.3362294 insert chi_c01Pwidth:InterpolationMasses 279 3.3404743 insert chi_c01Pwidth:InterpolationMasses 280 3.3447192 insert chi_c01Pwidth:InterpolationMasses 281 3.3489641 insert chi_c01Pwidth:InterpolationMasses 282 3.353209 insert chi_c01Pwidth:InterpolationMasses 283 3.3574539 insert chi_c01Pwidth:InterpolationMasses 284 3.3616988 insert chi_c01Pwidth:InterpolationMasses 285 3.3659437 insert chi_c01Pwidth:InterpolationMasses 286 3.3701886 insert chi_c01Pwidth:InterpolationMasses 287 3.3744335 insert chi_c01Pwidth:InterpolationMasses 288 3.3786784 insert chi_c01Pwidth:InterpolationMasses 289 3.3829233 insert chi_c01Pwidth:InterpolationMasses 290 3.3871682 insert chi_c01Pwidth:InterpolationMasses 291 3.3914131 insert chi_c01Pwidth:InterpolationMasses 292 3.395658 insert chi_c01Pwidth:InterpolationMasses 293 3.3999029 insert chi_c01Pwidth:InterpolationMasses 294 3.4041478 insert chi_c01Pwidth:InterpolationMasses 295 3.4083927 insert chi_c01Pwidth:InterpolationMasses 296 3.4126376 insert chi_c01Pwidth:InterpolationMasses 297 3.4168824 insert chi_c01Pwidth:InterpolationMasses 298 3.4211273 insert chi_c01Pwidth:InterpolationMasses 299 3.4253722 insert chi_c01Pwidth:InterpolationMasses 300 3.4296171 insert chi_c01Pwidth:InterpolationMasses 301 3.433862 insert chi_c01Pwidth:InterpolationMasses 302 3.4381069 insert chi_c01Pwidth:InterpolationMasses 303 3.4423518 insert chi_c01Pwidth:InterpolationMasses 304 3.4465967 insert chi_c01Pwidth:InterpolationMasses 305 3.4508416 insert chi_c01Pwidth:InterpolationMasses 306 3.4550865 insert chi_c01Pwidth:InterpolationMasses 307 3.4593314 insert chi_c01Pwidth:InterpolationMasses 308 3.4635763 insert chi_c01Pwidth:InterpolationMasses 309 3.4678212 insert chi_c01Pwidth:InterpolationMasses 310 3.4720661 insert chi_c01Pwidth:InterpolationMasses 311 3.476311 insert chi_c01Pwidth:InterpolationMasses 312 3.4805559 insert chi_c01Pwidth:InterpolationMasses 313 3.4848008 insert chi_c01Pwidth:InterpolationMasses 314 3.4890457 insert chi_c01Pwidth:InterpolationMasses 315 3.4932906 insert chi_c01Pwidth:InterpolationMasses 316 3.4975355 insert chi_c01Pwidth:InterpolationMasses 317 3.5017804 insert chi_c01Pwidth:InterpolationMasses 318 3.5060253 insert chi_c01Pwidth:InterpolationMasses 319 3.5102702 insert chi_c01Pwidth:InterpolationMasses 320 3.5145151 insert chi_c01Pwidth:InterpolationMasses 321 3.51876 insert chi_c01Pwidth:InterpolationMasses 322 3.5230049 insert chi_c01Pwidth:InterpolationMasses 323 3.5272498 insert chi_c01Pwidth:InterpolationMasses 324 3.3022702 insert chi_c01Pwidth:InterpolationMasses 325 3.3065151 insert chi_c01Pwidth:InterpolationMasses 326 3.31076 insert chi_c01Pwidth:InterpolationMasses 327 3.3150049 insert chi_c01Pwidth:InterpolationMasses 328 3.3192498 insert chi_c01Pwidth:InterpolationMasses 329 3.3234947 insert chi_c01Pwidth:InterpolationMasses 330 3.3277396 insert chi_c01Pwidth:InterpolationMasses 331 3.3319845 insert chi_c01Pwidth:InterpolationMasses 332 3.3362294 insert chi_c01Pwidth:InterpolationMasses 333 3.3404743 insert chi_c01Pwidth:InterpolationMasses 334 3.3447192 insert chi_c01Pwidth:InterpolationMasses 335 3.3489641 insert chi_c01Pwidth:InterpolationMasses 336 3.353209 insert chi_c01Pwidth:InterpolationMasses 337 3.3574539 insert chi_c01Pwidth:InterpolationMasses 338 3.3616988 insert chi_c01Pwidth:InterpolationMasses 339 3.3659437 insert chi_c01Pwidth:InterpolationMasses 340 3.3701886 insert chi_c01Pwidth:InterpolationMasses 341 3.3744335 insert chi_c01Pwidth:InterpolationMasses 342 3.3786784 insert chi_c01Pwidth:InterpolationMasses 343 3.3829233 insert chi_c01Pwidth:InterpolationMasses 344 3.3871682 insert chi_c01Pwidth:InterpolationMasses 345 3.3914131 insert chi_c01Pwidth:InterpolationMasses 346 3.395658 insert chi_c01Pwidth:InterpolationMasses 347 3.3999029 insert chi_c01Pwidth:InterpolationMasses 348 3.4041478 insert chi_c01Pwidth:InterpolationMasses 349 3.4083927 insert chi_c01Pwidth:InterpolationMasses 350 3.4126376 insert chi_c01Pwidth:InterpolationMasses 351 3.4168824 insert chi_c01Pwidth:InterpolationMasses 352 3.4211273 insert chi_c01Pwidth:InterpolationMasses 353 3.4253722 insert chi_c01Pwidth:InterpolationMasses 354 3.4296171 insert chi_c01Pwidth:InterpolationMasses 355 3.433862 insert chi_c01Pwidth:InterpolationMasses 356 3.4381069 insert chi_c01Pwidth:InterpolationMasses 357 3.4423518 insert chi_c01Pwidth:InterpolationMasses 358 3.4465967 insert chi_c01Pwidth:InterpolationMasses 359 3.4508416 insert chi_c01Pwidth:InterpolationMasses 360 3.4550865 insert chi_c01Pwidth:InterpolationMasses 361 3.4593314 insert chi_c01Pwidth:InterpolationMasses 362 3.4635763 insert chi_c01Pwidth:InterpolationMasses 363 3.4678212 insert chi_c01Pwidth:InterpolationMasses 364 3.4720661 insert chi_c01Pwidth:InterpolationMasses 365 3.476311 insert chi_c01Pwidth:InterpolationMasses 366 3.4805559 insert chi_c01Pwidth:InterpolationMasses 367 3.4848008 insert chi_c01Pwidth:InterpolationMasses 368 3.4890457 insert chi_c01Pwidth:InterpolationMasses 369 3.4932906 insert chi_c01Pwidth:InterpolationMasses 370 3.4975355 insert chi_c01Pwidth:InterpolationMasses 371 3.5017804 insert chi_c01Pwidth:InterpolationMasses 372 3.5060253 insert chi_c01Pwidth:InterpolationMasses 373 3.5102702 insert chi_c01Pwidth:InterpolationMasses 374 3.5145151 insert chi_c01Pwidth:InterpolationMasses 375 3.51876 insert chi_c01Pwidth:InterpolationMasses 376 3.5230049 insert chi_c01Pwidth:InterpolationMasses 377 3.5272498 insert chi_c01Pwidth:InterpolationMasses 378 3.3022702 insert chi_c01Pwidth:InterpolationMasses 379 3.3065151 insert chi_c01Pwidth:InterpolationMasses 380 3.31076 insert chi_c01Pwidth:InterpolationMasses 381 3.3150049 insert chi_c01Pwidth:InterpolationMasses 382 3.3192498 insert chi_c01Pwidth:InterpolationMasses 383 3.3234947 insert chi_c01Pwidth:InterpolationMasses 384 3.3277396 insert chi_c01Pwidth:InterpolationMasses 385 3.3319845 insert chi_c01Pwidth:InterpolationMasses 386 3.3362294 insert chi_c01Pwidth:InterpolationMasses 387 3.3404743 insert chi_c01Pwidth:InterpolationMasses 388 3.3447192 insert chi_c01Pwidth:InterpolationMasses 389 3.3489641 insert chi_c01Pwidth:InterpolationMasses 390 3.353209 insert chi_c01Pwidth:InterpolationMasses 391 3.3574539 insert chi_c01Pwidth:InterpolationMasses 392 3.3616988 insert chi_c01Pwidth:InterpolationMasses 393 3.3659437 insert chi_c01Pwidth:InterpolationMasses 394 3.3701886 insert chi_c01Pwidth:InterpolationMasses 395 3.3744335 insert chi_c01Pwidth:InterpolationMasses 396 3.3786784 insert chi_c01Pwidth:InterpolationMasses 397 3.3829233 insert chi_c01Pwidth:InterpolationMasses 398 3.3871682 insert chi_c01Pwidth:InterpolationMasses 399 3.3914131 insert chi_c01Pwidth:InterpolationMasses 400 3.395658 insert chi_c01Pwidth:InterpolationMasses 401 3.3999029 insert chi_c01Pwidth:InterpolationMasses 402 3.4041478 insert chi_c01Pwidth:InterpolationMasses 403 3.4083927 insert chi_c01Pwidth:InterpolationMasses 404 3.4126376 insert chi_c01Pwidth:InterpolationMasses 405 3.4168824 insert chi_c01Pwidth:InterpolationMasses 406 3.4211273 insert chi_c01Pwidth:InterpolationMasses 407 3.4253722 insert chi_c01Pwidth:InterpolationMasses 408 3.4296171 insert chi_c01Pwidth:InterpolationMasses 409 3.433862 insert chi_c01Pwidth:InterpolationMasses 410 3.4381069 insert chi_c01Pwidth:InterpolationMasses 411 3.4423518 insert chi_c01Pwidth:InterpolationMasses 412 3.4465967 insert chi_c01Pwidth:InterpolationMasses 413 3.4508416 insert chi_c01Pwidth:InterpolationMasses 414 3.4550865 insert chi_c01Pwidth:InterpolationMasses 415 3.4593314 insert chi_c01Pwidth:InterpolationMasses 416 3.4635763 insert chi_c01Pwidth:InterpolationMasses 417 3.4678212 insert chi_c01Pwidth:InterpolationMasses 418 3.4720661 insert chi_c01Pwidth:InterpolationMasses 419 3.476311 insert chi_c01Pwidth:InterpolationMasses 420 3.4805559 insert chi_c01Pwidth:InterpolationMasses 421 3.4848008 insert chi_c01Pwidth:InterpolationMasses 422 3.4890457 insert chi_c01Pwidth:InterpolationMasses 423 3.4932906 insert chi_c01Pwidth:InterpolationMasses 424 3.4975355 insert chi_c01Pwidth:InterpolationMasses 425 3.5017804 insert chi_c01Pwidth:InterpolationMasses 426 3.5060253 insert chi_c01Pwidth:InterpolationMasses 427 3.5102702 insert chi_c01Pwidth:InterpolationMasses 428 3.5145151 insert chi_c01Pwidth:InterpolationMasses 429 3.51876 insert chi_c01Pwidth:InterpolationMasses 430 3.5230049 insert chi_c01Pwidth:InterpolationMasses 431 3.5272498 insert chi_c01Pwidth:InterpolationMasses 432 3.3022702 insert chi_c01Pwidth:InterpolationMasses 433 3.3065151 insert chi_c01Pwidth:InterpolationMasses 434 3.31076 insert chi_c01Pwidth:InterpolationMasses 435 3.3150049 insert chi_c01Pwidth:InterpolationMasses 436 3.3192498 insert chi_c01Pwidth:InterpolationMasses 437 3.3234947 insert chi_c01Pwidth:InterpolationMasses 438 3.3277396 insert chi_c01Pwidth:InterpolationMasses 439 3.3319845 insert chi_c01Pwidth:InterpolationMasses 440 3.3362294 insert chi_c01Pwidth:InterpolationMasses 441 3.3404743 insert chi_c01Pwidth:InterpolationMasses 442 3.3447192 insert chi_c01Pwidth:InterpolationMasses 443 3.3489641 insert chi_c01Pwidth:InterpolationMasses 444 3.353209 insert chi_c01Pwidth:InterpolationMasses 445 3.3574539 insert chi_c01Pwidth:InterpolationMasses 446 3.3616988 insert chi_c01Pwidth:InterpolationMasses 447 3.3659437 insert chi_c01Pwidth:InterpolationMasses 448 3.3701886 insert chi_c01Pwidth:InterpolationMasses 449 3.3744335 insert chi_c01Pwidth:InterpolationMasses 450 3.3786784 insert chi_c01Pwidth:InterpolationMasses 451 3.3829233 insert chi_c01Pwidth:InterpolationMasses 452 3.3871682 insert chi_c01Pwidth:InterpolationMasses 453 3.3914131 insert chi_c01Pwidth:InterpolationMasses 454 3.395658 insert chi_c01Pwidth:InterpolationMasses 455 3.3999029 insert chi_c01Pwidth:InterpolationMasses 456 3.4041478 insert chi_c01Pwidth:InterpolationMasses 457 3.4083927 insert chi_c01Pwidth:InterpolationMasses 458 3.4126376 insert chi_c01Pwidth:InterpolationMasses 459 3.4168824 insert chi_c01Pwidth:InterpolationMasses 460 3.4211273 insert chi_c01Pwidth:InterpolationMasses 461 3.4253722 insert chi_c01Pwidth:InterpolationMasses 462 3.4296171 insert chi_c01Pwidth:InterpolationMasses 463 3.433862 insert chi_c01Pwidth:InterpolationMasses 464 3.4381069 insert chi_c01Pwidth:InterpolationMasses 465 3.4423518 insert chi_c01Pwidth:InterpolationMasses 466 3.4465967 insert chi_c01Pwidth:InterpolationMasses 467 3.4508416 insert chi_c01Pwidth:InterpolationMasses 468 3.4550865 insert chi_c01Pwidth:InterpolationMasses 469 3.4593314 insert chi_c01Pwidth:InterpolationMasses 470 3.4635763 insert chi_c01Pwidth:InterpolationMasses 471 3.4678212 insert chi_c01Pwidth:InterpolationMasses 472 3.4720661 insert chi_c01Pwidth:InterpolationMasses 473 3.476311 insert chi_c01Pwidth:InterpolationMasses 474 3.4805559 insert chi_c01Pwidth:InterpolationMasses 475 3.4848008 insert chi_c01Pwidth:InterpolationMasses 476 3.4890457 insert chi_c01Pwidth:InterpolationMasses 477 3.4932906 insert chi_c01Pwidth:InterpolationMasses 478 3.4975355 insert chi_c01Pwidth:InterpolationMasses 479 3.5017804 insert chi_c01Pwidth:InterpolationMasses 480 3.5060253 insert chi_c01Pwidth:InterpolationMasses 481 3.5102702 insert chi_c01Pwidth:InterpolationMasses 482 3.5145151 insert chi_c01Pwidth:InterpolationMasses 483 3.51876 insert chi_c01Pwidth:InterpolationMasses 484 3.5230049 insert chi_c01Pwidth:InterpolationMasses 485 3.5272498 insert chi_c01Pwidth:InterpolationMasses 486 3.3022702 insert chi_c01Pwidth:InterpolationMasses 487 3.3065151 insert chi_c01Pwidth:InterpolationMasses 488 3.31076 insert chi_c01Pwidth:InterpolationMasses 489 3.3150049 insert chi_c01Pwidth:InterpolationMasses 490 3.3192498 insert chi_c01Pwidth:InterpolationMasses 491 3.3234947 insert chi_c01Pwidth:InterpolationMasses 492 3.3277396 insert chi_c01Pwidth:InterpolationMasses 493 3.3319845 insert chi_c01Pwidth:InterpolationMasses 494 3.3362294 insert chi_c01Pwidth:InterpolationMasses 495 3.3404743 insert chi_c01Pwidth:InterpolationMasses 496 3.3447192 insert chi_c01Pwidth:InterpolationMasses 497 3.3489641 insert chi_c01Pwidth:InterpolationMasses 498 3.353209 insert chi_c01Pwidth:InterpolationMasses 499 3.3574539 insert chi_c01Pwidth:InterpolationMasses 500 3.3616988 insert chi_c01Pwidth:InterpolationMasses 501 3.3659437 insert chi_c01Pwidth:InterpolationMasses 502 3.3701886 insert chi_c01Pwidth:InterpolationMasses 503 3.3744335 insert chi_c01Pwidth:InterpolationMasses 504 3.3786784 insert chi_c01Pwidth:InterpolationMasses 505 3.3829233 insert chi_c01Pwidth:InterpolationMasses 506 3.3871682 insert chi_c01Pwidth:InterpolationMasses 507 3.3914131 insert chi_c01Pwidth:InterpolationMasses 508 3.395658 insert chi_c01Pwidth:InterpolationMasses 509 3.3999029 insert chi_c01Pwidth:InterpolationMasses 510 3.4041478 insert chi_c01Pwidth:InterpolationMasses 511 3.4083927 insert chi_c01Pwidth:InterpolationMasses 512 3.4126376 insert chi_c01Pwidth:InterpolationMasses 513 3.4168824 insert chi_c01Pwidth:InterpolationMasses 514 3.4211273 insert chi_c01Pwidth:InterpolationMasses 515 3.4253722 insert chi_c01Pwidth:InterpolationMasses 516 3.4296171 insert chi_c01Pwidth:InterpolationMasses 517 3.433862 insert chi_c01Pwidth:InterpolationMasses 518 3.4381069 insert chi_c01Pwidth:InterpolationMasses 519 3.4423518 insert chi_c01Pwidth:InterpolationMasses 520 3.4465967 insert chi_c01Pwidth:InterpolationMasses 521 3.4508416 insert chi_c01Pwidth:InterpolationMasses 522 3.4550865 insert chi_c01Pwidth:InterpolationMasses 523 3.4593314 insert chi_c01Pwidth:InterpolationMasses 524 3.4635763 insert chi_c01Pwidth:InterpolationMasses 525 3.4678212 insert chi_c01Pwidth:InterpolationMasses 526 3.4720661 insert chi_c01Pwidth:InterpolationMasses 527 3.476311 insert chi_c01Pwidth:InterpolationMasses 528 3.4805559 insert chi_c01Pwidth:InterpolationMasses 529 3.4848008 insert chi_c01Pwidth:InterpolationMasses 530 3.4890457 insert chi_c01Pwidth:InterpolationMasses 531 3.4932906 insert chi_c01Pwidth:InterpolationMasses 532 3.4975355 insert chi_c01Pwidth:InterpolationMasses 533 3.5017804 insert chi_c01Pwidth:InterpolationMasses 534 3.5060253 insert chi_c01Pwidth:InterpolationMasses 535 3.5102702 insert chi_c01Pwidth:InterpolationMasses 536 3.5145151 insert chi_c01Pwidth:InterpolationMasses 537 3.51876 insert chi_c01Pwidth:InterpolationMasses 538 3.5230049 insert chi_c01Pwidth:InterpolationMasses 539 3.5272498 insert chi_c01Pwidth:InterpolationMasses 540 3.3022702 insert chi_c01Pwidth:InterpolationMasses 541 3.3065151 insert chi_c01Pwidth:InterpolationMasses 542 3.31076 insert chi_c01Pwidth:InterpolationMasses 543 3.3150049 insert chi_c01Pwidth:InterpolationMasses 544 3.3192498 insert chi_c01Pwidth:InterpolationMasses 545 3.3234947 insert chi_c01Pwidth:InterpolationMasses 546 3.3277396 insert chi_c01Pwidth:InterpolationMasses 547 3.3319845 insert chi_c01Pwidth:InterpolationMasses 548 3.3362294 insert chi_c01Pwidth:InterpolationMasses 549 3.3404743 insert chi_c01Pwidth:InterpolationMasses 550 3.3447192 insert chi_c01Pwidth:InterpolationMasses 551 3.3489641 insert chi_c01Pwidth:InterpolationMasses 552 3.353209 insert chi_c01Pwidth:InterpolationMasses 553 3.3574539 insert chi_c01Pwidth:InterpolationMasses 554 3.3616988 insert chi_c01Pwidth:InterpolationMasses 555 3.3659437 insert chi_c01Pwidth:InterpolationMasses 556 3.3701886 insert chi_c01Pwidth:InterpolationMasses 557 3.3744335 insert chi_c01Pwidth:InterpolationMasses 558 3.3786784 insert chi_c01Pwidth:InterpolationMasses 559 3.3829233 insert chi_c01Pwidth:InterpolationMasses 560 3.3871682 insert chi_c01Pwidth:InterpolationMasses 561 3.3914131 insert chi_c01Pwidth:InterpolationMasses 562 3.395658 insert chi_c01Pwidth:InterpolationMasses 563 3.3999029 insert chi_c01Pwidth:InterpolationMasses 564 3.4041478 insert chi_c01Pwidth:InterpolationMasses 565 3.4083927 insert chi_c01Pwidth:InterpolationMasses 566 3.4126376 insert chi_c01Pwidth:InterpolationMasses 567 3.4168824 insert chi_c01Pwidth:InterpolationMasses 568 3.4211273 insert chi_c01Pwidth:InterpolationMasses 569 3.4253722 insert chi_c01Pwidth:InterpolationMasses 570 3.4296171 insert chi_c01Pwidth:InterpolationMasses 571 3.433862 insert chi_c01Pwidth:InterpolationMasses 572 3.4381069 insert chi_c01Pwidth:InterpolationMasses 573 3.4423518 insert chi_c01Pwidth:InterpolationMasses 574 3.4465967 insert chi_c01Pwidth:InterpolationMasses 575 3.4508416 insert chi_c01Pwidth:InterpolationMasses 576 3.4550865 insert chi_c01Pwidth:InterpolationMasses 577 3.4593314 insert chi_c01Pwidth:InterpolationMasses 578 3.4635763 insert chi_c01Pwidth:InterpolationMasses 579 3.4678212 insert chi_c01Pwidth:InterpolationMasses 580 3.4720661 insert chi_c01Pwidth:InterpolationMasses 581 3.476311 insert chi_c01Pwidth:InterpolationMasses 582 3.4805559 insert chi_c01Pwidth:InterpolationMasses 583 3.4848008 insert chi_c01Pwidth:InterpolationMasses 584 3.4890457 insert chi_c01Pwidth:InterpolationMasses 585 3.4932906 insert chi_c01Pwidth:InterpolationMasses 586 3.4975355 insert chi_c01Pwidth:InterpolationMasses 587 3.5017804 insert chi_c01Pwidth:InterpolationMasses 588 3.5060253 insert chi_c01Pwidth:InterpolationMasses 589 3.5102702 insert chi_c01Pwidth:InterpolationMasses 590 3.5145151 insert chi_c01Pwidth:InterpolationMasses 591 3.51876 insert chi_c01Pwidth:InterpolationMasses 592 3.5230049 insert chi_c01Pwidth:InterpolationMasses 593 3.5272498 insert chi_c01Pwidth:InterpolationMasses 594 3.3022702 insert chi_c01Pwidth:InterpolationMasses 595 3.3065151 insert chi_c01Pwidth:InterpolationMasses 596 3.31076 insert chi_c01Pwidth:InterpolationMasses 597 3.3150049 insert chi_c01Pwidth:InterpolationMasses 598 3.3192498 insert chi_c01Pwidth:InterpolationMasses 599 3.3234947 insert chi_c01Pwidth:InterpolationMasses 600 3.3277396 insert chi_c01Pwidth:InterpolationMasses 601 3.3319845 insert chi_c01Pwidth:InterpolationMasses 602 3.3362294 insert chi_c01Pwidth:InterpolationMasses 603 3.3404743 insert chi_c01Pwidth:InterpolationMasses 604 3.3447192 insert chi_c01Pwidth:InterpolationMasses 605 3.3489641 insert chi_c01Pwidth:InterpolationMasses 606 3.353209 insert chi_c01Pwidth:InterpolationMasses 607 3.3574539 insert chi_c01Pwidth:InterpolationMasses 608 3.3616988 insert chi_c01Pwidth:InterpolationMasses 609 3.3659437 insert chi_c01Pwidth:InterpolationMasses 610 3.3701886 insert chi_c01Pwidth:InterpolationMasses 611 3.3744335 insert chi_c01Pwidth:InterpolationMasses 612 3.3786784 insert chi_c01Pwidth:InterpolationMasses 613 3.3829233 insert chi_c01Pwidth:InterpolationMasses 614 3.3871682 insert chi_c01Pwidth:InterpolationMasses 615 3.3914131 insert chi_c01Pwidth:InterpolationMasses 616 3.395658 insert chi_c01Pwidth:InterpolationMasses 617 3.3999029 insert chi_c01Pwidth:InterpolationMasses 618 3.4041478 insert chi_c01Pwidth:InterpolationMasses 619 3.4083927 insert chi_c01Pwidth:InterpolationMasses 620 3.4126376 insert chi_c01Pwidth:InterpolationMasses 621 3.4168824 insert chi_c01Pwidth:InterpolationMasses 622 3.4211273 insert chi_c01Pwidth:InterpolationMasses 623 3.4253722 insert chi_c01Pwidth:InterpolationMasses 624 3.4296171 insert chi_c01Pwidth:InterpolationMasses 625 3.433862 insert chi_c01Pwidth:InterpolationMasses 626 3.4381069 insert chi_c01Pwidth:InterpolationMasses 627 3.4423518 insert chi_c01Pwidth:InterpolationMasses 628 3.4465967 insert chi_c01Pwidth:InterpolationMasses 629 3.4508416 insert chi_c01Pwidth:InterpolationMasses 630 3.4550865 insert chi_c01Pwidth:InterpolationMasses 631 3.4593314 insert chi_c01Pwidth:InterpolationMasses 632 3.4635763 insert chi_c01Pwidth:InterpolationMasses 633 3.4678212 insert chi_c01Pwidth:InterpolationMasses 634 3.4720661 insert chi_c01Pwidth:InterpolationMasses 635 3.476311 insert chi_c01Pwidth:InterpolationMasses 636 3.4805559 insert chi_c01Pwidth:InterpolationMasses 637 3.4848008 insert chi_c01Pwidth:InterpolationMasses 638 3.4890457 insert chi_c01Pwidth:InterpolationMasses 639 3.4932906 insert chi_c01Pwidth:InterpolationMasses 640 3.4975355 insert chi_c01Pwidth:InterpolationMasses 641 3.5017804 insert chi_c01Pwidth:InterpolationMasses 642 3.5060253 insert chi_c01Pwidth:InterpolationMasses 643 3.5102702 insert chi_c01Pwidth:InterpolationMasses 644 3.5145151 insert chi_c01Pwidth:InterpolationMasses 645 3.51876 insert chi_c01Pwidth:InterpolationMasses 646 3.5230049 insert chi_c01Pwidth:InterpolationMasses 647 3.5272498 insert chi_c01Pwidth:InterpolationMasses 648 3.3022702 insert chi_c01Pwidth:InterpolationMasses 649 3.3065151 insert chi_c01Pwidth:InterpolationMasses 650 3.31076 insert chi_c01Pwidth:InterpolationMasses 651 3.3150049 insert chi_c01Pwidth:InterpolationMasses 652 3.3192498 insert chi_c01Pwidth:InterpolationMasses 653 3.3234947 insert chi_c01Pwidth:InterpolationMasses 654 3.3277396 insert chi_c01Pwidth:InterpolationMasses 655 3.3319845 insert chi_c01Pwidth:InterpolationMasses 656 3.3362294 insert chi_c01Pwidth:InterpolationMasses 657 3.3404743 insert chi_c01Pwidth:InterpolationMasses 658 3.3447192 insert chi_c01Pwidth:InterpolationMasses 659 3.3489641 insert chi_c01Pwidth:InterpolationMasses 660 3.353209 insert chi_c01Pwidth:InterpolationMasses 661 3.3574539 insert chi_c01Pwidth:InterpolationMasses 662 3.3616988 insert chi_c01Pwidth:InterpolationMasses 663 3.3659437 insert chi_c01Pwidth:InterpolationMasses 664 3.3701886 insert chi_c01Pwidth:InterpolationMasses 665 3.3744335 insert chi_c01Pwidth:InterpolationMasses 666 3.3786784 insert chi_c01Pwidth:InterpolationMasses 667 3.3829233 insert chi_c01Pwidth:InterpolationMasses 668 3.3871682 insert chi_c01Pwidth:InterpolationMasses 669 3.3914131 insert chi_c01Pwidth:InterpolationMasses 670 3.395658 insert chi_c01Pwidth:InterpolationMasses 671 3.3999029 insert chi_c01Pwidth:InterpolationMasses 672 3.4041478 insert chi_c01Pwidth:InterpolationMasses 673 3.4083927 insert chi_c01Pwidth:InterpolationMasses 674 3.4126376 insert chi_c01Pwidth:InterpolationMasses 675 3.4168824 insert chi_c01Pwidth:InterpolationMasses 676 3.4211273 insert chi_c01Pwidth:InterpolationMasses 677 3.4253722 insert chi_c01Pwidth:InterpolationMasses 678 3.4296171 insert chi_c01Pwidth:InterpolationMasses 679 3.433862 insert chi_c01Pwidth:InterpolationMasses 680 3.4381069 insert chi_c01Pwidth:InterpolationMasses 681 3.4423518 insert chi_c01Pwidth:InterpolationMasses 682 3.4465967 insert chi_c01Pwidth:InterpolationMasses 683 3.4508416 insert chi_c01Pwidth:InterpolationMasses 684 3.4550865 insert chi_c01Pwidth:InterpolationMasses 685 3.4593314 insert chi_c01Pwidth:InterpolationMasses 686 3.4635763 insert chi_c01Pwidth:InterpolationMasses 687 3.4678212 insert chi_c01Pwidth:InterpolationMasses 688 3.4720661 insert chi_c01Pwidth:InterpolationMasses 689 3.476311 insert chi_c01Pwidth:InterpolationMasses 690 3.4805559 insert chi_c01Pwidth:InterpolationMasses 691 3.4848008 insert chi_c01Pwidth:InterpolationMasses 692 3.4890457 insert chi_c01Pwidth:InterpolationMasses 693 3.4932906 insert chi_c01Pwidth:InterpolationMasses 694 3.4975355 insert chi_c01Pwidth:InterpolationMasses 695 3.5017804 insert chi_c01Pwidth:InterpolationMasses 696 3.5060253 insert chi_c01Pwidth:InterpolationMasses 697 3.5102702 insert chi_c01Pwidth:InterpolationMasses 698 3.5145151 insert chi_c01Pwidth:InterpolationMasses 699 3.51876 insert chi_c01Pwidth:InterpolationMasses 700 3.5230049 insert chi_c01Pwidth:InterpolationMasses 701 3.5272498 insert chi_c01Pwidth:InterpolationWidths 0 3.8234776e-05 insert chi_c01Pwidth:InterpolationWidths 1 4.0579458e-05 insert chi_c01Pwidth:InterpolationWidths 2 4.3015108e-05 insert chi_c01Pwidth:InterpolationWidths 3 4.5543234e-05 insert chi_c01Pwidth:InterpolationWidths 4 4.8165336e-05 insert chi_c01Pwidth:InterpolationWidths 5 5.0882902e-05 insert chi_c01Pwidth:InterpolationWidths 6 5.3697408e-05 insert chi_c01Pwidth:InterpolationWidths 7 5.661032e-05 insert chi_c01Pwidth:InterpolationWidths 8 5.9623095e-05 insert chi_c01Pwidth:InterpolationWidths 9 6.2737178e-05 insert chi_c01Pwidth:InterpolationWidths 10 6.5954002e-05 insert chi_c01Pwidth:InterpolationWidths 11 6.9274992e-05 insert chi_c01Pwidth:InterpolationWidths 12 7.2701562e-05 insert chi_c01Pwidth:InterpolationWidths 13 7.6235116e-05 insert chi_c01Pwidth:InterpolationWidths 14 7.9877047e-05 insert chi_c01Pwidth:InterpolationWidths 15 8.362874e-05 insert chi_c01Pwidth:InterpolationWidths 16 8.7491569e-05 insert chi_c01Pwidth:InterpolationWidths 17 9.1466898e-05 insert chi_c01Pwidth:InterpolationWidths 18 9.555608e-05 insert chi_c01Pwidth:InterpolationWidths 19 9.9760462e-05 insert chi_c01Pwidth:InterpolationWidths 20 0.00010408138 insert chi_c01Pwidth:InterpolationWidths 21 0.00010852016 insert chi_c01Pwidth:InterpolationWidths 22 0.00011307811 insert chi_c01Pwidth:InterpolationWidths 23 0.00011775655 insert chi_c01Pwidth:InterpolationWidths 24 0.00012255678 insert chi_c01Pwidth:InterpolationWidths 25 0.00012748007 insert chi_c01Pwidth:InterpolationWidths 26 0.00013252772 insert chi_c01Pwidth:InterpolationWidths 27 0.000137701 insert chi_c01Pwidth:InterpolationWidths 28 0.00014300116 insert chi_c01Pwidth:InterpolationWidths 29 0.00014842947 insert chi_c01Pwidth:InterpolationWidths 30 0.00015398716 insert chi_c01Pwidth:InterpolationWidths 31 0.00015967548 insert chi_c01Pwidth:InterpolationWidths 32 0.00016549565 insert chi_c01Pwidth:InterpolationWidths 33 0.00017144889 insert chi_c01Pwidth:InterpolationWidths 34 0.00017753641 insert chi_c01Pwidth:InterpolationWidths 35 0.00018375943 insert chi_c01Pwidth:InterpolationWidths 36 0.00019011913 insert chi_c01Pwidth:InterpolationWidths 37 0.0001966167 insert chi_c01Pwidth:InterpolationWidths 38 0.00020325331 insert chi_c01Pwidth:InterpolationWidths 39 0.00021003016 insert chi_c01Pwidth:InterpolationWidths 40 0.00021694838 insert chi_c01Pwidth:InterpolationWidths 41 0.00022400915 insert chi_c01Pwidth:InterpolationWidths 42 0.0002312136 insert chi_c01Pwidth:InterpolationWidths 43 0.00023856289 insert chi_c01Pwidth:InterpolationWidths 44 0.00024605813 insert chi_c01Pwidth:InterpolationWidths 45 0.00025370047 insert chi_c01Pwidth:InterpolationWidths 46 0.00026149101 insert chi_c01Pwidth:InterpolationWidths 47 0.00026943087 insert chi_c01Pwidth:InterpolationWidths 48 0.00027752114 insert chi_c01Pwidth:InterpolationWidths 49 0.00028576293 insert chi_c01Pwidth:InterpolationWidths 50 0.00029415733 insert chi_c01Pwidth:InterpolationWidths 51 0.00030270542 insert chi_c01Pwidth:InterpolationWidths 52 0.00031140826 insert chi_c01Pwidth:InterpolationWidths 53 0.00032026694 insert chi_c01Pwidth:InterpolationWidths 54 1.6461429e-05 insert chi_c01Pwidth:InterpolationWidths 55 1.6549215e-05 insert chi_c01Pwidth:InterpolationWidths 56 1.6637281e-05 insert chi_c01Pwidth:InterpolationWidths 57 1.6725628e-05 insert chi_c01Pwidth:InterpolationWidths 58 1.6814256e-05 insert chi_c01Pwidth:InterpolationWidths 59 1.6903165e-05 insert chi_c01Pwidth:InterpolationWidths 60 1.6992356e-05 insert chi_c01Pwidth:InterpolationWidths 61 1.7081828e-05 insert chi_c01Pwidth:InterpolationWidths 62 1.7171583e-05 insert chi_c01Pwidth:InterpolationWidths 63 1.7261621e-05 insert chi_c01Pwidth:InterpolationWidths 64 1.7351941e-05 insert chi_c01Pwidth:InterpolationWidths 65 1.7442545e-05 insert chi_c01Pwidth:InterpolationWidths 66 1.7533432e-05 insert chi_c01Pwidth:InterpolationWidths 67 1.7624604e-05 insert chi_c01Pwidth:InterpolationWidths 68 1.771606e-05 insert chi_c01Pwidth:InterpolationWidths 69 1.78078e-05 insert chi_c01Pwidth:InterpolationWidths 70 1.7899826e-05 insert chi_c01Pwidth:InterpolationWidths 71 1.7992137e-05 insert chi_c01Pwidth:InterpolationWidths 72 1.8084733e-05 insert chi_c01Pwidth:InterpolationWidths 73 1.8177616e-05 insert chi_c01Pwidth:InterpolationWidths 74 1.8270786e-05 insert chi_c01Pwidth:InterpolationWidths 75 1.8364242e-05 insert chi_c01Pwidth:InterpolationWidths 76 1.8457985e-05 insert chi_c01Pwidth:InterpolationWidths 77 1.8552016e-05 insert chi_c01Pwidth:InterpolationWidths 78 1.8646334e-05 insert chi_c01Pwidth:InterpolationWidths 79 1.8740941e-05 insert chi_c01Pwidth:InterpolationWidths 80 1.8835836e-05 insert chi_c01Pwidth:InterpolationWidths 81 1.893102e-05 insert chi_c01Pwidth:InterpolationWidths 82 1.9026494e-05 insert chi_c01Pwidth:InterpolationWidths 83 1.9122257e-05 insert chi_c01Pwidth:InterpolationWidths 84 1.921831e-05 insert chi_c01Pwidth:InterpolationWidths 85 1.9314653e-05 insert chi_c01Pwidth:InterpolationWidths 86 1.9411287e-05 insert chi_c01Pwidth:InterpolationWidths 87 1.9508211e-05 insert chi_c01Pwidth:InterpolationWidths 88 1.9605427e-05 insert chi_c01Pwidth:InterpolationWidths 89 1.9702935e-05 insert chi_c01Pwidth:InterpolationWidths 90 1.9800735e-05 insert chi_c01Pwidth:InterpolationWidths 91 1.9898827e-05 insert chi_c01Pwidth:InterpolationWidths 92 1.9997212e-05 insert chi_c01Pwidth:InterpolationWidths 93 2.009589e-05 insert chi_c01Pwidth:InterpolationWidths 94 2.0194861e-05 insert chi_c01Pwidth:InterpolationWidths 95 2.0294126e-05 insert chi_c01Pwidth:InterpolationWidths 96 2.0393685e-05 insert chi_c01Pwidth:InterpolationWidths 97 2.0493539e-05 insert chi_c01Pwidth:InterpolationWidths 98 2.0593687e-05 insert chi_c01Pwidth:InterpolationWidths 99 2.0694131e-05 insert chi_c01Pwidth:InterpolationWidths 100 2.079487e-05 insert chi_c01Pwidth:InterpolationWidths 101 2.0895904e-05 insert chi_c01Pwidth:InterpolationWidths 102 2.0997235e-05 insert chi_c01Pwidth:InterpolationWidths 103 2.1098863e-05 insert chi_c01Pwidth:InterpolationWidths 104 2.1200787e-05 insert chi_c01Pwidth:InterpolationWidths 105 2.1303009e-05 insert chi_c01Pwidth:InterpolationWidths 106 2.1405528e-05 insert chi_c01Pwidth:InterpolationWidths 107 2.1508345e-05 insert chi_c01Pwidth:InterpolationWidths 108 1.6342199e-05 insert chi_c01Pwidth:InterpolationWidths 109 1.6429531e-05 insert chi_c01Pwidth:InterpolationWidths 110 1.6517142e-05 insert chi_c01Pwidth:InterpolationWidths 111 1.6605033e-05 insert chi_c01Pwidth:InterpolationWidths 112 1.6693204e-05 insert chi_c01Pwidth:InterpolationWidths 113 1.6781655e-05 insert chi_c01Pwidth:InterpolationWidths 114 1.6870386e-05 insert chi_c01Pwidth:InterpolationWidths 115 1.6959398e-05 insert chi_c01Pwidth:InterpolationWidths 116 1.7048692e-05 insert chi_c01Pwidth:InterpolationWidths 117 1.7138267e-05 insert chi_c01Pwidth:InterpolationWidths 118 1.7228124e-05 insert chi_c01Pwidth:InterpolationWidths 119 1.7318264e-05 insert chi_c01Pwidth:InterpolationWidths 120 1.7408686e-05 insert chi_c01Pwidth:InterpolationWidths 121 1.7499391e-05 insert chi_c01Pwidth:InterpolationWidths 122 1.7590379e-05 insert chi_c01Pwidth:InterpolationWidths 123 1.7681651e-05 insert chi_c01Pwidth:InterpolationWidths 124 1.7773207e-05 insert chi_c01Pwidth:InterpolationWidths 125 1.7865047e-05 insert chi_c01Pwidth:InterpolationWidths 126 1.7957172e-05 insert chi_c01Pwidth:InterpolationWidths 127 1.8049582e-05 insert chi_c01Pwidth:InterpolationWidths 128 1.8142278e-05 insert chi_c01Pwidth:InterpolationWidths 129 1.8235259e-05 insert chi_c01Pwidth:InterpolationWidths 130 1.8328526e-05 insert chi_c01Pwidth:InterpolationWidths 131 1.842208e-05 insert chi_c01Pwidth:InterpolationWidths 132 1.8515921e-05 insert chi_c01Pwidth:InterpolationWidths 133 1.8610048e-05 insert chi_c01Pwidth:InterpolationWidths 134 1.8704464e-05 insert chi_c01Pwidth:InterpolationWidths 135 1.8799167e-05 insert chi_c01Pwidth:InterpolationWidths 136 1.8894158e-05 insert chi_c01Pwidth:InterpolationWidths 137 1.8989438e-05 insert chi_c01Pwidth:InterpolationWidths 138 1.9085006e-05 insert chi_c01Pwidth:InterpolationWidths 139 1.9180864e-05 insert chi_c01Pwidth:InterpolationWidths 140 1.9277011e-05 insert chi_c01Pwidth:InterpolationWidths 141 1.9373448e-05 insert chi_c01Pwidth:InterpolationWidths 142 1.9470176e-05 insert chi_c01Pwidth:InterpolationWidths 143 1.9567194e-05 insert chi_c01Pwidth:InterpolationWidths 144 1.9664503e-05 insert chi_c01Pwidth:InterpolationWidths 145 1.9762103e-05 insert chi_c01Pwidth:InterpolationWidths 146 1.9859995e-05 insert chi_c01Pwidth:InterpolationWidths 147 1.9958179e-05 insert chi_c01Pwidth:InterpolationWidths 148 2.0056656e-05 insert chi_c01Pwidth:InterpolationWidths 149 2.0155424e-05 insert chi_c01Pwidth:InterpolationWidths 150 2.0254486e-05 insert chi_c01Pwidth:InterpolationWidths 151 2.0353842e-05 insert chi_c01Pwidth:InterpolationWidths 152 2.0453491e-05 insert chi_c01Pwidth:InterpolationWidths 153 2.0553434e-05 insert chi_c01Pwidth:InterpolationWidths 154 2.0653671e-05 insert chi_c01Pwidth:InterpolationWidths 155 2.0754204e-05 insert chi_c01Pwidth:InterpolationWidths 156 2.0855031e-05 insert chi_c01Pwidth:InterpolationWidths 157 2.0956154e-05 insert chi_c01Pwidth:InterpolationWidths 158 2.1057572e-05 insert chi_c01Pwidth:InterpolationWidths 159 2.1159287e-05 insert chi_c01Pwidth:InterpolationWidths 160 2.1261298e-05 insert chi_c01Pwidth:InterpolationWidths 161 2.1363606e-05 insert chi_c01Pwidth:InterpolationWidths 162 2.1845633e-05 insert chi_c01Pwidth:InterpolationWidths 163 2.1920874e-05 insert chi_c01Pwidth:InterpolationWidths 164 2.1995405e-05 insert chi_c01Pwidth:InterpolationWidths 165 2.2069228e-05 insert chi_c01Pwidth:InterpolationWidths 166 2.2142353e-05 insert chi_c01Pwidth:InterpolationWidths 167 2.2214783e-05 insert chi_c01Pwidth:InterpolationWidths 168 2.2286523e-05 insert chi_c01Pwidth:InterpolationWidths 169 2.2357571e-05 insert chi_c01Pwidth:InterpolationWidths 170 2.2427934e-05 insert chi_c01Pwidth:InterpolationWidths 171 2.2497619e-05 insert chi_c01Pwidth:InterpolationWidths 172 2.2566629e-05 insert chi_c01Pwidth:InterpolationWidths 173 2.2634975e-05 insert chi_c01Pwidth:InterpolationWidths 174 2.2702658e-05 insert chi_c01Pwidth:InterpolationWidths 175 2.2769685e-05 insert chi_c01Pwidth:InterpolationWidths 176 2.2836059e-05 insert chi_c01Pwidth:InterpolationWidths 177 2.2901788e-05 insert chi_c01Pwidth:InterpolationWidths 178 2.2966876e-05 insert chi_c01Pwidth:InterpolationWidths 179 2.3031327e-05 insert chi_c01Pwidth:InterpolationWidths 180 2.3095141e-05 insert chi_c01Pwidth:InterpolationWidths 181 2.3158321e-05 insert chi_c01Pwidth:InterpolationWidths 182 2.3220877e-05 insert chi_c01Pwidth:InterpolationWidths 183 2.3282813e-05 insert chi_c01Pwidth:InterpolationWidths 184 2.3344135e-05 insert chi_c01Pwidth:InterpolationWidths 185 2.3404846e-05 insert chi_c01Pwidth:InterpolationWidths 186 2.3464955e-05 insert chi_c01Pwidth:InterpolationWidths 187 2.3524466e-05 insert chi_c01Pwidth:InterpolationWidths 188 2.3583382e-05 insert chi_c01Pwidth:InterpolationWidths 189 2.3641708e-05 insert chi_c01Pwidth:InterpolationWidths 190 2.3699441e-05 insert chi_c01Pwidth:InterpolationWidths 191 2.3756588e-05 insert chi_c01Pwidth:InterpolationWidths 192 2.3813156e-05 insert chi_c01Pwidth:InterpolationWidths 193 2.3869151e-05 insert chi_c01Pwidth:InterpolationWidths 194 2.3924578e-05 insert chi_c01Pwidth:InterpolationWidths 195 2.3979441e-05 insert chi_c01Pwidth:InterpolationWidths 196 2.4033743e-05 insert chi_c01Pwidth:InterpolationWidths 197 2.4087494e-05 insert chi_c01Pwidth:InterpolationWidths 198 2.4140692e-05 insert chi_c01Pwidth:InterpolationWidths 199 2.4193336e-05 insert chi_c01Pwidth:InterpolationWidths 200 2.4245433e-05 insert chi_c01Pwidth:InterpolationWidths 201 2.4296991e-05 insert chi_c01Pwidth:InterpolationWidths 202 2.4348012e-05 insert chi_c01Pwidth:InterpolationWidths 203 2.4398505e-05 insert chi_c01Pwidth:InterpolationWidths 204 2.4448473e-05 insert chi_c01Pwidth:InterpolationWidths 205 2.449792e-05 insert chi_c01Pwidth:InterpolationWidths 206 2.4546843e-05 insert chi_c01Pwidth:InterpolationWidths 207 2.4595244e-05 insert chi_c01Pwidth:InterpolationWidths 208 2.4643132e-05 insert chi_c01Pwidth:InterpolationWidths 209 2.4690512e-05 insert chi_c01Pwidth:InterpolationWidths 210 2.4737391e-05 insert chi_c01Pwidth:InterpolationWidths 211 2.4783772e-05 insert chi_c01Pwidth:InterpolationWidths 212 2.4829657e-05 insert chi_c01Pwidth:InterpolationWidths 213 2.4875041e-05 insert chi_c01Pwidth:InterpolationWidths 214 2.4919933e-05 insert chi_c01Pwidth:InterpolationWidths 215 2.4964338e-05 insert chi_c01Pwidth:InterpolationWidths 216 1.1474612e-05 insert chi_c01Pwidth:InterpolationWidths 217 1.1739231e-05 insert chi_c01Pwidth:InterpolationWidths 218 1.2008647e-05 insert chi_c01Pwidth:InterpolationWidths 219 1.2282918e-05 insert chi_c01Pwidth:InterpolationWidths 220 1.2562086e-05 insert chi_c01Pwidth:InterpolationWidths 221 1.2846235e-05 insert chi_c01Pwidth:InterpolationWidths 222 1.3135424e-05 insert chi_c01Pwidth:InterpolationWidths 223 1.3429697e-05 insert chi_c01Pwidth:InterpolationWidths 224 1.3729145e-05 insert chi_c01Pwidth:InterpolationWidths 225 1.4033811e-05 insert chi_c01Pwidth:InterpolationWidths 226 1.4343765e-05 insert chi_c01Pwidth:InterpolationWidths 227 1.4659073e-05 insert chi_c01Pwidth:InterpolationWidths 228 1.4979807e-05 insert chi_c01Pwidth:InterpolationWidths 229 1.5306011e-05 insert chi_c01Pwidth:InterpolationWidths 230 1.5637774e-05 insert chi_c01Pwidth:InterpolationWidths 231 1.5975152e-05 insert chi_c01Pwidth:InterpolationWidths 232 1.6318217e-05 insert chi_c01Pwidth:InterpolationWidths 233 1.6667039e-05 insert chi_c01Pwidth:InterpolationWidths 234 1.7021675e-05 insert chi_c01Pwidth:InterpolationWidths 235 1.73822e-05 insert chi_c01Pwidth:InterpolationWidths 236 1.7748683e-05 insert chi_c01Pwidth:InterpolationWidths 237 1.8121195e-05 insert chi_c01Pwidth:InterpolationWidths 238 1.8499803e-05 insert chi_c01Pwidth:InterpolationWidths 239 1.8884582e-05 insert chi_c01Pwidth:InterpolationWidths 240 1.9275599e-05 insert chi_c01Pwidth:InterpolationWidths 241 1.9672935e-05 insert chi_c01Pwidth:InterpolationWidths 242 2.0076642e-05 insert chi_c01Pwidth:InterpolationWidths 243 2.0486819e-05 insert chi_c01Pwidth:InterpolationWidths 244 2.0903513e-05 insert chi_c01Pwidth:InterpolationWidths 245 2.1326817e-05 insert chi_c01Pwidth:InterpolationWidths 246 2.1756807e-05 insert chi_c01Pwidth:InterpolationWidths 247 2.2193536e-05 insert chi_c01Pwidth:InterpolationWidths 248 2.2637107e-05 insert chi_c01Pwidth:InterpolationWidths 249 2.3087575e-05 insert chi_c01Pwidth:InterpolationWidths 250 2.3545027e-05 insert chi_c01Pwidth:InterpolationWidths 251 2.4009535e-05 insert chi_c01Pwidth:InterpolationWidths 252 2.4481179e-05 insert chi_c01Pwidth:InterpolationWidths 253 2.4960038e-05 insert chi_c01Pwidth:InterpolationWidths 254 2.5446189e-05 insert chi_c01Pwidth:InterpolationWidths 255 2.5939711e-05 insert chi_c01Pwidth:InterpolationWidths 256 2.6440693e-05 insert chi_c01Pwidth:InterpolationWidths 257 2.6949194e-05 insert chi_c01Pwidth:InterpolationWidths 258 2.7465313e-05 insert chi_c01Pwidth:InterpolationWidths 259 2.7989135e-05 insert chi_c01Pwidth:InterpolationWidths 260 2.8520726e-05 insert chi_c01Pwidth:InterpolationWidths 261 2.906017e-05 insert chi_c01Pwidth:InterpolationWidths 262 2.9607571e-05 insert chi_c01Pwidth:InterpolationWidths 263 3.016299e-05 insert chi_c01Pwidth:InterpolationWidths 264 3.072652e-05 insert chi_c01Pwidth:InterpolationWidths 265 3.1298241e-05 insert chi_c01Pwidth:InterpolationWidths 266 3.1878255e-05 insert chi_c01Pwidth:InterpolationWidths 267 3.246663e-05 insert chi_c01Pwidth:InterpolationWidths 268 3.3063458e-05 insert chi_c01Pwidth:InterpolationWidths 269 3.366883e-05 insert chi_c01Pwidth:InterpolationWidths 270 1.1474645e-05 insert chi_c01Pwidth:InterpolationWidths 271 1.1739272e-05 insert chi_c01Pwidth:InterpolationWidths 272 1.2008688e-05 insert chi_c01Pwidth:InterpolationWidths 273 1.2282952e-05 insert chi_c01Pwidth:InterpolationWidths 274 1.2562128e-05 insert chi_c01Pwidth:InterpolationWidths 275 1.2846275e-05 insert chi_c01Pwidth:InterpolationWidths 276 1.3135458e-05 insert chi_c01Pwidth:InterpolationWidths 277 1.3429738e-05 insert chi_c01Pwidth:InterpolationWidths 278 1.3729179e-05 insert chi_c01Pwidth:InterpolationWidths 279 1.4033845e-05 insert chi_c01Pwidth:InterpolationWidths 280 1.4343799e-05 insert chi_c01Pwidth:InterpolationWidths 281 1.4659108e-05 insert chi_c01Pwidth:InterpolationWidths 282 1.4979834e-05 insert chi_c01Pwidth:InterpolationWidths 283 1.5306046e-05 insert chi_c01Pwidth:InterpolationWidths 284 1.5637807e-05 insert chi_c01Pwidth:InterpolationWidths 285 1.5975187e-05 insert chi_c01Pwidth:InterpolationWidths 286 1.631825e-05 insert chi_c01Pwidth:InterpolationWidths 287 1.6667066e-05 insert chi_c01Pwidth:InterpolationWidths 288 1.7021702e-05 insert chi_c01Pwidth:InterpolationWidths 289 1.7382227e-05 insert chi_c01Pwidth:InterpolationWidths 290 1.774871e-05 insert chi_c01Pwidth:InterpolationWidths 291 1.8121221e-05 insert chi_c01Pwidth:InterpolationWidths 292 1.849983e-05 insert chi_c01Pwidth:InterpolationWidths 293 1.8884608e-05 insert chi_c01Pwidth:InterpolationWidths 294 1.9275626e-05 insert chi_c01Pwidth:InterpolationWidths 295 1.9672956e-05 insert chi_c01Pwidth:InterpolationWidths 296 2.0076669e-05 insert chi_c01Pwidth:InterpolationWidths 297 2.0486839e-05 insert chi_c01Pwidth:InterpolationWidths 298 2.090354e-05 insert chi_c01Pwidth:InterpolationWidths 299 2.1326844e-05 insert chi_c01Pwidth:InterpolationWidths 300 2.1756826e-05 insert chi_c01Pwidth:InterpolationWidths 301 2.2193562e-05 insert chi_c01Pwidth:InterpolationWidths 302 2.2637127e-05 insert chi_c01Pwidth:InterpolationWidths 303 2.3087596e-05 insert chi_c01Pwidth:InterpolationWidths 304 2.3545046e-05 insert chi_c01Pwidth:InterpolationWidths 305 2.4009554e-05 insert chi_c01Pwidth:InterpolationWidths 306 2.4481199e-05 insert chi_c01Pwidth:InterpolationWidths 307 2.4960057e-05 insert chi_c01Pwidth:InterpolationWidths 308 2.5446208e-05 insert chi_c01Pwidth:InterpolationWidths 309 2.5939731e-05 insert chi_c01Pwidth:InterpolationWidths 310 2.6440706e-05 insert chi_c01Pwidth:InterpolationWidths 311 2.6949213e-05 insert chi_c01Pwidth:InterpolationWidths 312 2.7465333e-05 insert chi_c01Pwidth:InterpolationWidths 313 2.7989147e-05 insert chi_c01Pwidth:InterpolationWidths 314 2.8520739e-05 insert chi_c01Pwidth:InterpolationWidths 315 2.906019e-05 insert chi_c01Pwidth:InterpolationWidths 316 2.9607583e-05 insert chi_c01Pwidth:InterpolationWidths 317 3.0163003e-05 insert chi_c01Pwidth:InterpolationWidths 318 3.0726534e-05 insert chi_c01Pwidth:InterpolationWidths 319 3.129826e-05 insert chi_c01Pwidth:InterpolationWidths 320 3.1878267e-05 insert chi_c01Pwidth:InterpolationWidths 321 3.2466642e-05 insert chi_c01Pwidth:InterpolationWidths 322 3.3063471e-05 insert chi_c01Pwidth:InterpolationWidths 323 3.3668841e-05 insert chi_c01Pwidth:InterpolationWidths 324 2.1854877e-05 insert chi_c01Pwidth:InterpolationWidths 325 2.193011e-05 insert chi_c01Pwidth:InterpolationWidths 326 2.2004633e-05 insert chi_c01Pwidth:InterpolationWidths 327 2.207845e-05 insert chi_c01Pwidth:InterpolationWidths 328 2.2151567e-05 insert chi_c01Pwidth:InterpolationWidths 329 2.2223986e-05 insert chi_c01Pwidth:InterpolationWidths 330 2.2295718e-05 insert chi_c01Pwidth:InterpolationWidths 331 2.2366759e-05 insert chi_c01Pwidth:InterpolationWidths 332 2.2437113e-05 insert chi_c01Pwidth:InterpolationWidths 333 2.250679e-05 insert chi_c01Pwidth:InterpolationWidths 334 2.2575791e-05 insert chi_c01Pwidth:InterpolationWidths 335 2.2644127e-05 insert chi_c01Pwidth:InterpolationWidths 336 2.2711802e-05 insert chi_c01Pwidth:InterpolationWidths 337 2.277882e-05 insert chi_c01Pwidth:InterpolationWidths 338 2.2845183e-05 insert chi_c01Pwidth:InterpolationWidths 339 2.2910903e-05 insert chi_c01Pwidth:InterpolationWidths 340 2.2975982e-05 insert chi_c01Pwidth:InterpolationWidths 341 2.3040424e-05 insert chi_c01Pwidth:InterpolationWidths 342 2.3104229e-05 insert chi_c01Pwidth:InterpolationWidths 343 2.3167398e-05 insert chi_c01Pwidth:InterpolationWidths 344 2.3229944e-05 insert chi_c01Pwidth:InterpolationWidths 345 2.3291871e-05 insert chi_c01Pwidth:InterpolationWidths 346 2.335318e-05 insert chi_c01Pwidth:InterpolationWidths 347 2.3413883e-05 insert chi_c01Pwidth:InterpolationWidths 348 2.3473982e-05 insert chi_c01Pwidth:InterpolationWidths 349 2.3533483e-05 insert chi_c01Pwidth:InterpolationWidths 350 2.3592386e-05 insert chi_c01Pwidth:InterpolationWidths 351 2.3650702e-05 insert chi_c01Pwidth:InterpolationWidths 352 2.3708426e-05 insert chi_c01Pwidth:InterpolationWidths 353 2.376556e-05 insert chi_c01Pwidth:InterpolationWidths 354 2.3822119e-05 insert chi_c01Pwidth:InterpolationWidths 355 2.3878103e-05 insert chi_c01Pwidth:InterpolationWidths 356 2.393352e-05 insert chi_c01Pwidth:InterpolationWidths 357 2.3988369e-05 insert chi_c01Pwidth:InterpolationWidths 358 2.4042664e-05 insert chi_c01Pwidth:InterpolationWidths 359 2.4096404e-05 insert chi_c01Pwidth:InterpolationWidths 360 2.4149589e-05 insert chi_c01Pwidth:InterpolationWidths 361 2.4202221e-05 insert chi_c01Pwidth:InterpolationWidths 362 2.4254308e-05 insert chi_c01Pwidth:InterpolationWidths 363 2.4305852e-05 insert chi_c01Pwidth:InterpolationWidths 364 2.4356864e-05 insert chi_c01Pwidth:InterpolationWidths 365 2.4407347e-05 insert chi_c01Pwidth:InterpolationWidths 366 2.4457301e-05 insert chi_c01Pwidth:InterpolationWidths 367 2.4506738e-05 insert chi_c01Pwidth:InterpolationWidths 368 2.4555649e-05 insert chi_c01Pwidth:InterpolationWidths 369 2.4604036e-05 insert chi_c01Pwidth:InterpolationWidths 370 2.4651914e-05 insert chi_c01Pwidth:InterpolationWidths 371 2.4699282e-05 insert chi_c01Pwidth:InterpolationWidths 372 2.474615e-05 insert chi_c01Pwidth:InterpolationWidths 373 2.479252e-05 insert chi_c01Pwidth:InterpolationWidths 374 2.4838394e-05 insert chi_c01Pwidth:InterpolationWidths 375 2.4883764e-05 insert chi_c01Pwidth:InterpolationWidths 376 2.4928645e-05 insert chi_c01Pwidth:InterpolationWidths 377 2.4973039e-05 insert chi_c01Pwidth:InterpolationWidths 378 1.0858054e-05 insert chi_c01Pwidth:InterpolationWidths 379 1.1109363e-05 insert chi_c01Pwidth:InterpolationWidths 380 1.1365256e-05 insert chi_c01Pwidth:InterpolationWidths 381 1.1625777e-05 insert chi_c01Pwidth:InterpolationWidths 382 1.189099e-05 insert chi_c01Pwidth:InterpolationWidths 383 1.2160948e-05 insert chi_c01Pwidth:InterpolationWidths 384 1.2435717e-05 insert chi_c01Pwidth:InterpolationWidths 385 1.271534e-05 insert chi_c01Pwidth:InterpolationWidths 386 1.2999919e-05 insert chi_c01Pwidth:InterpolationWidths 387 1.3289461e-05 insert chi_c01Pwidth:InterpolationWidths 388 1.3584083e-05 insert chi_c01Pwidth:InterpolationWidths 389 1.3883792e-05 insert chi_c01Pwidth:InterpolationWidths 390 1.4188693e-05 insert chi_c01Pwidth:InterpolationWidths 391 1.4498832e-05 insert chi_c01Pwidth:InterpolationWidths 392 1.4814276e-05 insert chi_c01Pwidth:InterpolationWidths 393 1.5135089e-05 insert chi_c01Pwidth:InterpolationWidths 394 1.5461331e-05 insert chi_c01Pwidth:InterpolationWidths 395 1.5793073e-05 insert chi_c01Pwidth:InterpolationWidths 396 1.6130362e-05 insert chi_c01Pwidth:InterpolationWidths 397 1.6473309e-05 insert chi_c01Pwidth:InterpolationWidths 398 1.6821939e-05 insert chi_c01Pwidth:InterpolationWidths 399 1.7176313e-05 insert chi_c01Pwidth:InterpolationWidths 400 1.7536548e-05 insert chi_c01Pwidth:InterpolationWidths 401 1.7902666e-05 insert chi_c01Pwidth:InterpolationWidths 402 1.8274734e-05 insert chi_c01Pwidth:InterpolationWidths 403 1.8652867e-05 insert chi_c01Pwidth:InterpolationWidths 404 1.9037092e-05 insert chi_c01Pwidth:InterpolationWidths 405 1.9427473e-05 insert chi_c01Pwidth:InterpolationWidths 406 1.982413e-05 insert chi_c01Pwidth:InterpolationWidths 407 2.0227089e-05 insert chi_c01Pwidth:InterpolationWidths 408 2.0636431e-05 insert chi_c01Pwidth:InterpolationWidths 409 2.1052236e-05 insert chi_c01Pwidth:InterpolationWidths 410 2.1474573e-05 insert chi_c01Pwidth:InterpolationWidths 411 2.1903511e-05 insert chi_c01Pwidth:InterpolationWidths 412 2.2339131e-05 insert chi_c01Pwidth:InterpolationWidths 413 2.2781517e-05 insert chi_c01Pwidth:InterpolationWidths 414 2.3230698e-05 insert chi_c01Pwidth:InterpolationWidths 415 2.3686813e-05 insert chi_c01Pwidth:InterpolationWidths 416 2.4149874e-05 insert chi_c01Pwidth:InterpolationWidths 417 2.462002e-05 insert chi_c01Pwidth:InterpolationWidths 418 2.5097282e-05 insert chi_c01Pwidth:InterpolationWidths 419 2.5581748e-05 insert chi_c01Pwidth:InterpolationWidths 420 2.6073504e-05 insert chi_c01Pwidth:InterpolationWidths 421 2.6572638e-05 insert chi_c01Pwidth:InterpolationWidths 422 2.7079182e-05 insert chi_c01Pwidth:InterpolationWidths 423 2.7593281e-05 insert chi_c01Pwidth:InterpolationWidths 424 2.8114949e-05 insert chi_c01Pwidth:InterpolationWidths 425 2.8644332e-05 insert chi_c01Pwidth:InterpolationWidths 426 2.9181447e-05 insert chi_c01Pwidth:InterpolationWidths 427 2.9726439e-05 insert chi_c01Pwidth:InterpolationWidths 428 3.0279327e-05 insert chi_c01Pwidth:InterpolationWidths 429 3.0840256e-05 insert chi_c01Pwidth:InterpolationWidths 430 3.1409261e-05 insert chi_c01Pwidth:InterpolationWidths 431 3.1986449e-05 insert chi_c01Pwidth:InterpolationWidths 432 1.0857475e-05 insert chi_c01Pwidth:InterpolationWidths 433 1.1108781e-05 insert chi_c01Pwidth:InterpolationWidths 434 1.1364658e-05 insert chi_c01Pwidth:InterpolationWidths 435 1.1625853e-05 insert chi_c01Pwidth:InterpolationWidths 436 1.1891065e-05 insert chi_c01Pwidth:InterpolationWidths 437 1.2161025e-05 insert chi_c01Pwidth:InterpolationWidths 438 1.2435794e-05 insert chi_c01Pwidth:InterpolationWidths 439 1.2715432e-05 insert chi_c01Pwidth:InterpolationWidths 440 1.2999998e-05 insert chi_c01Pwidth:InterpolationWidths 441 1.3289556e-05 insert chi_c01Pwidth:InterpolationWidths 442 1.3584165e-05 insert chi_c01Pwidth:InterpolationWidths 443 1.3883889e-05 insert chi_c01Pwidth:InterpolationWidths 444 1.418879e-05 insert chi_c01Pwidth:InterpolationWidths 445 1.4498931e-05 insert chi_c01Pwidth:InterpolationWidths 446 1.4814376e-05 insert chi_c01Pwidth:InterpolationWidths 447 1.5135188e-05 insert chi_c01Pwidth:InterpolationWidths 448 1.5461433e-05 insert chi_c01Pwidth:InterpolationWidths 449 1.5793175e-05 insert chi_c01Pwidth:InterpolationWidths 450 1.613048e-05 insert chi_c01Pwidth:InterpolationWidths 451 1.6473414e-05 insert chi_c01Pwidth:InterpolationWidths 452 1.6822043e-05 insert chi_c01Pwidth:InterpolationWidths 453 1.7176434e-05 insert chi_c01Pwidth:InterpolationWidths 454 1.7536654e-05 insert chi_c01Pwidth:InterpolationWidths 455 1.7902772e-05 insert chi_c01Pwidth:InterpolationWidths 456 1.8274857e-05 insert chi_c01Pwidth:InterpolationWidths 457 1.8652976e-05 insert chi_c01Pwidth:InterpolationWidths 458 1.9037199e-05 insert chi_c01Pwidth:InterpolationWidths 459 1.9427597e-05 insert chi_c01Pwidth:InterpolationWidths 460 1.9824239e-05 insert chi_c01Pwidth:InterpolationWidths 461 2.0227197e-05 insert chi_c01Pwidth:InterpolationWidths 462 2.0636542e-05 insert chi_c01Pwidth:InterpolationWidths 463 2.1052346e-05 insert chi_c01Pwidth:InterpolationWidths 464 2.1474682e-05 insert chi_c01Pwidth:InterpolationWidths 465 2.1903623e-05 insert chi_c01Pwidth:InterpolationWidths 466 2.2339241e-05 insert chi_c01Pwidth:InterpolationWidths 467 2.2781612e-05 insert chi_c01Pwidth:InterpolationWidths 468 2.3230809e-05 insert chi_c01Pwidth:InterpolationWidths 469 2.3686909e-05 insert chi_c01Pwidth:InterpolationWidths 470 2.4149986e-05 insert chi_c01Pwidth:InterpolationWidths 471 2.4620116e-05 insert chi_c01Pwidth:InterpolationWidths 472 2.5097377e-05 insert chi_c01Pwidth:InterpolationWidths 473 2.5581846e-05 insert chi_c01Pwidth:InterpolationWidths 474 2.6073599e-05 insert chi_c01Pwidth:InterpolationWidths 475 2.6572717e-05 insert chi_c01Pwidth:InterpolationWidths 476 2.7079277e-05 insert chi_c01Pwidth:InterpolationWidths 477 2.759336e-05 insert chi_c01Pwidth:InterpolationWidths 478 2.8115044e-05 insert chi_c01Pwidth:InterpolationWidths 479 2.8644411e-05 insert chi_c01Pwidth:InterpolationWidths 480 2.9181542e-05 insert chi_c01Pwidth:InterpolationWidths 481 2.9726517e-05 insert chi_c01Pwidth:InterpolationWidths 482 3.0279421e-05 insert chi_c01Pwidth:InterpolationWidths 483 3.0840334e-05 insert chi_c01Pwidth:InterpolationWidths 484 3.1409341e-05 insert chi_c01Pwidth:InterpolationWidths 485 3.1986526e-05 insert chi_c01Pwidth:InterpolationWidths 486 2.1822741e-05 insert chi_c01Pwidth:InterpolationWidths 487 2.1798179e-05 insert chi_c01Pwidth:InterpolationWidths 488 2.1773666e-05 insert chi_c01Pwidth:InterpolationWidths 489 2.1749203e-05 insert chi_c01Pwidth:InterpolationWidths 490 2.1724788e-05 insert chi_c01Pwidth:InterpolationWidths 491 2.1700422e-05 insert chi_c01Pwidth:InterpolationWidths 492 2.1676105e-05 insert chi_c01Pwidth:InterpolationWidths 493 2.1651837e-05 insert chi_c01Pwidth:InterpolationWidths 494 2.1627617e-05 insert chi_c01Pwidth:InterpolationWidths 495 2.1603445e-05 insert chi_c01Pwidth:InterpolationWidths 496 2.1579322e-05 insert chi_c01Pwidth:InterpolationWidths 497 2.1555247e-05 insert chi_c01Pwidth:InterpolationWidths 498 2.1531219e-05 insert chi_c01Pwidth:InterpolationWidths 499 2.150724e-05 insert chi_c01Pwidth:InterpolationWidths 500 2.1483309e-05 insert chi_c01Pwidth:InterpolationWidths 501 2.1459425e-05 insert chi_c01Pwidth:InterpolationWidths 502 2.1435589e-05 insert chi_c01Pwidth:InterpolationWidths 503 2.14118e-05 insert chi_c01Pwidth:InterpolationWidths 504 2.1388059e-05 insert chi_c01Pwidth:InterpolationWidths 505 2.1364365e-05 insert chi_c01Pwidth:InterpolationWidths 506 2.1340718e-05 insert chi_c01Pwidth:InterpolationWidths 507 2.1317118e-05 insert chi_c01Pwidth:InterpolationWidths 508 2.1293565e-05 insert chi_c01Pwidth:InterpolationWidths 509 2.1270059e-05 insert chi_c01Pwidth:InterpolationWidths 510 2.1246599e-05 insert chi_c01Pwidth:InterpolationWidths 511 2.1223186e-05 insert chi_c01Pwidth:InterpolationWidths 512 2.119982e-05 insert chi_c01Pwidth:InterpolationWidths 513 2.11765e-05 insert chi_c01Pwidth:InterpolationWidths 514 2.1153226e-05 insert chi_c01Pwidth:InterpolationWidths 515 2.1129998e-05 insert chi_c01Pwidth:InterpolationWidths 516 2.1106816e-05 insert chi_c01Pwidth:InterpolationWidths 517 2.108368e-05 insert chi_c01Pwidth:InterpolationWidths 518 2.106059e-05 insert chi_c01Pwidth:InterpolationWidths 519 2.1037546e-05 insert chi_c01Pwidth:InterpolationWidths 520 2.1014547e-05 insert chi_c01Pwidth:InterpolationWidths 521 2.0991594e-05 insert chi_c01Pwidth:InterpolationWidths 522 2.0968686e-05 insert chi_c01Pwidth:InterpolationWidths 523 2.0945823e-05 insert chi_c01Pwidth:InterpolationWidths 524 2.0923005e-05 insert chi_c01Pwidth:InterpolationWidths 525 2.0900232e-05 insert chi_c01Pwidth:InterpolationWidths 526 2.0877505e-05 insert chi_c01Pwidth:InterpolationWidths 527 2.0854822e-05 insert chi_c01Pwidth:InterpolationWidths 528 2.0832183e-05 insert chi_c01Pwidth:InterpolationWidths 529 2.080959e-05 insert chi_c01Pwidth:InterpolationWidths 530 2.0787041e-05 insert chi_c01Pwidth:InterpolationWidths 531 2.0764536e-05 insert chi_c01Pwidth:InterpolationWidths 532 2.0742075e-05 insert chi_c01Pwidth:InterpolationWidths 533 2.0719659e-05 insert chi_c01Pwidth:InterpolationWidths 534 2.0697286e-05 insert chi_c01Pwidth:InterpolationWidths 535 2.0674958e-05 insert chi_c01Pwidth:InterpolationWidths 536 2.0652673e-05 insert chi_c01Pwidth:InterpolationWidths 537 2.0630432e-05 insert chi_c01Pwidth:InterpolationWidths 538 2.0608235e-05 insert chi_c01Pwidth:InterpolationWidths 539 2.0586081e-05 insert chi_c01Pwidth:InterpolationWidths 540 2.2950717e-05 insert chi_c01Pwidth:InterpolationWidths 541 2.2938825e-05 insert chi_c01Pwidth:InterpolationWidths 542 2.2926882e-05 insert chi_c01Pwidth:InterpolationWidths 543 2.2914888e-05 insert chi_c01Pwidth:InterpolationWidths 544 2.2902844e-05 insert chi_c01Pwidth:InterpolationWidths 545 2.289075e-05 insert chi_c01Pwidth:InterpolationWidths 546 2.2878609e-05 insert chi_c01Pwidth:InterpolationWidths 547 2.2866419e-05 insert chi_c01Pwidth:InterpolationWidths 548 2.2854182e-05 insert chi_c01Pwidth:InterpolationWidths 549 2.2841899e-05 insert chi_c01Pwidth:InterpolationWidths 550 2.282957e-05 insert chi_c01Pwidth:InterpolationWidths 551 2.2817196e-05 insert chi_c01Pwidth:InterpolationWidths 552 2.2804777e-05 insert chi_c01Pwidth:InterpolationWidths 553 2.2792315e-05 insert chi_c01Pwidth:InterpolationWidths 554 2.2779809e-05 insert chi_c01Pwidth:InterpolationWidths 555 2.2767262e-05 insert chi_c01Pwidth:InterpolationWidths 556 2.2754672e-05 insert chi_c01Pwidth:InterpolationWidths 557 2.2742042e-05 insert chi_c01Pwidth:InterpolationWidths 558 2.272937e-05 insert chi_c01Pwidth:InterpolationWidths 559 2.2716659e-05 insert chi_c01Pwidth:InterpolationWidths 560 2.2703909e-05 insert chi_c01Pwidth:InterpolationWidths 561 2.269112e-05 insert chi_c01Pwidth:InterpolationWidths 562 2.2678293e-05 insert chi_c01Pwidth:InterpolationWidths 563 2.2665429e-05 insert chi_c01Pwidth:InterpolationWidths 564 2.2652527e-05 insert chi_c01Pwidth:InterpolationWidths 565 2.263959e-05 insert chi_c01Pwidth:InterpolationWidths 566 2.2626616e-05 insert chi_c01Pwidth:InterpolationWidths 567 2.2613608e-05 insert chi_c01Pwidth:InterpolationWidths 568 2.2600564e-05 insert chi_c01Pwidth:InterpolationWidths 569 2.2587487e-05 insert chi_c01Pwidth:InterpolationWidths 570 2.2574376e-05 insert chi_c01Pwidth:InterpolationWidths 571 2.2561233e-05 insert chi_c01Pwidth:InterpolationWidths 572 2.2548057e-05 insert chi_c01Pwidth:InterpolationWidths 573 2.2534848e-05 insert chi_c01Pwidth:InterpolationWidths 574 2.2521609e-05 insert chi_c01Pwidth:InterpolationWidths 575 2.2508339e-05 insert chi_c01Pwidth:InterpolationWidths 576 2.2495038e-05 insert chi_c01Pwidth:InterpolationWidths 577 2.2481707e-05 insert chi_c01Pwidth:InterpolationWidths 578 2.2468347e-05 insert chi_c01Pwidth:InterpolationWidths 579 2.2454959e-05 insert chi_c01Pwidth:InterpolationWidths 580 2.2441541e-05 insert chi_c01Pwidth:InterpolationWidths 581 2.2428096e-05 insert chi_c01Pwidth:InterpolationWidths 582 2.2414624e-05 insert chi_c01Pwidth:InterpolationWidths 583 2.2401124e-05 insert chi_c01Pwidth:InterpolationWidths 584 2.2387599e-05 insert chi_c01Pwidth:InterpolationWidths 585 2.2374047e-05 insert chi_c01Pwidth:InterpolationWidths 586 2.2360469e-05 insert chi_c01Pwidth:InterpolationWidths 587 2.2346866e-05 insert chi_c01Pwidth:InterpolationWidths 588 2.2333239e-05 insert chi_c01Pwidth:InterpolationWidths 589 2.2319587e-05 insert chi_c01Pwidth:InterpolationWidths 590 2.2305912e-05 insert chi_c01Pwidth:InterpolationWidths 591 2.2292213e-05 insert chi_c01Pwidth:InterpolationWidths 592 2.2278491e-05 insert chi_c01Pwidth:InterpolationWidths 593 2.2264747e-05 insert chi_c01Pwidth:InterpolationWidths 594 2.1162226e-05 insert chi_c01Pwidth:InterpolationWidths 595 2.1264884e-05 insert chi_c01Pwidth:InterpolationWidths 596 2.1367845e-05 insert chi_c01Pwidth:InterpolationWidths 597 2.1471112e-05 insert chi_c01Pwidth:InterpolationWidths 598 2.1574684e-05 insert chi_c01Pwidth:InterpolationWidths 599 2.1678561e-05 insert chi_c01Pwidth:InterpolationWidths 600 2.1782744e-05 insert chi_c01Pwidth:InterpolationWidths 601 2.1887233e-05 insert chi_c01Pwidth:InterpolationWidths 602 2.1992029e-05 insert chi_c01Pwidth:InterpolationWidths 603 2.2097132e-05 insert chi_c01Pwidth:InterpolationWidths 604 2.2202542e-05 insert chi_c01Pwidth:InterpolationWidths 605 2.230826e-05 insert chi_c01Pwidth:InterpolationWidths 606 2.2414286e-05 insert chi_c01Pwidth:InterpolationWidths 607 2.252062e-05 insert chi_c01Pwidth:InterpolationWidths 608 2.2627263e-05 insert chi_c01Pwidth:InterpolationWidths 609 2.2734216e-05 insert chi_c01Pwidth:InterpolationWidths 610 2.2841478e-05 insert chi_c01Pwidth:InterpolationWidths 611 2.2949051e-05 insert chi_c01Pwidth:InterpolationWidths 612 2.3056933e-05 insert chi_c01Pwidth:InterpolationWidths 613 2.3165127e-05 insert chi_c01Pwidth:InterpolationWidths 614 2.3273631e-05 insert chi_c01Pwidth:InterpolationWidths 615 2.3382447e-05 insert chi_c01Pwidth:InterpolationWidths 616 2.3491575e-05 insert chi_c01Pwidth:InterpolationWidths 617 2.3601016e-05 insert chi_c01Pwidth:InterpolationWidths 618 2.3710769e-05 insert chi_c01Pwidth:InterpolationWidths 619 2.3820835e-05 insert chi_c01Pwidth:InterpolationWidths 620 2.3931214e-05 insert chi_c01Pwidth:InterpolationWidths 621 2.4041907e-05 insert chi_c01Pwidth:InterpolationWidths 622 2.4152915e-05 insert chi_c01Pwidth:InterpolationWidths 623 2.4264237e-05 insert chi_c01Pwidth:InterpolationWidths 624 2.4375874e-05 insert chi_c01Pwidth:InterpolationWidths 625 2.4487826e-05 insert chi_c01Pwidth:InterpolationWidths 626 2.4600094e-05 insert chi_c01Pwidth:InterpolationWidths 627 2.4712678e-05 insert chi_c01Pwidth:InterpolationWidths 628 2.4825578e-05 insert chi_c01Pwidth:InterpolationWidths 629 2.4938796e-05 insert chi_c01Pwidth:InterpolationWidths 630 2.505233e-05 insert chi_c01Pwidth:InterpolationWidths 631 2.5166182e-05 insert chi_c01Pwidth:InterpolationWidths 632 2.5280352e-05 insert chi_c01Pwidth:InterpolationWidths 633 2.5394841e-05 insert chi_c01Pwidth:InterpolationWidths 634 2.5509648e-05 insert chi_c01Pwidth:InterpolationWidths 635 2.5624775e-05 insert chi_c01Pwidth:InterpolationWidths 636 2.574022e-05 insert chi_c01Pwidth:InterpolationWidths 637 2.5855986e-05 insert chi_c01Pwidth:InterpolationWidths 638 2.5972072e-05 insert chi_c01Pwidth:InterpolationWidths 639 2.6088479e-05 insert chi_c01Pwidth:InterpolationWidths 640 2.6205206e-05 insert chi_c01Pwidth:InterpolationWidths 641 2.6322255e-05 insert chi_c01Pwidth:InterpolationWidths 642 2.6439626e-05 insert chi_c01Pwidth:InterpolationWidths 643 2.6557319e-05 insert chi_c01Pwidth:InterpolationWidths 644 2.6675335e-05 insert chi_c01Pwidth:InterpolationWidths 645 2.6793673e-05 insert chi_c01Pwidth:InterpolationWidths 646 2.6912335e-05 insert chi_c01Pwidth:InterpolationWidths 647 2.703132e-05 insert chi_c01Pwidth:InterpolationWidths 648 8.151213e-06 insert chi_c01Pwidth:InterpolationWidths 649 8.1977342e-06 insert chi_c01Pwidth:InterpolationWidths 650 8.2444115e-06 insert chi_c01Pwidth:InterpolationWidths 651 8.2912451e-06 insert chi_c01Pwidth:InterpolationWidths 652 8.3382351e-06 insert chi_c01Pwidth:InterpolationWidths 653 8.3853819e-06 insert chi_c01Pwidth:InterpolationWidths 654 8.4326855e-06 insert chi_c01Pwidth:InterpolationWidths 655 8.4801461e-06 insert chi_c01Pwidth:InterpolationWidths 656 8.5277641e-06 insert chi_c01Pwidth:InterpolationWidths 657 8.5755395e-06 insert chi_c01Pwidth:InterpolationWidths 658 8.6234725e-06 insert chi_c01Pwidth:InterpolationWidths 659 8.6715634e-06 insert chi_c01Pwidth:InterpolationWidths 660 8.7198124e-06 insert chi_c01Pwidth:InterpolationWidths 661 8.7682195e-06 insert chi_c01Pwidth:InterpolationWidths 662 8.8167851e-06 insert chi_c01Pwidth:InterpolationWidths 663 8.8655094e-06 insert chi_c01Pwidth:InterpolationWidths 664 8.9143924e-06 insert chi_c01Pwidth:InterpolationWidths 665 8.9634345e-06 insert chi_c01Pwidth:InterpolationWidths 666 9.0126358e-06 insert chi_c01Pwidth:InterpolationWidths 667 9.0619965e-06 insert chi_c01Pwidth:InterpolationWidths 668 9.1115168e-06 insert chi_c01Pwidth:InterpolationWidths 669 9.1611968e-06 insert chi_c01Pwidth:InterpolationWidths 670 9.2110369e-06 insert chi_c01Pwidth:InterpolationWidths 671 9.2610371e-06 insert chi_c01Pwidth:InterpolationWidths 672 9.3111978e-06 insert chi_c01Pwidth:InterpolationWidths 673 9.361519e-06 insert chi_c01Pwidth:InterpolationWidths 674 9.4120009e-06 insert chi_c01Pwidth:InterpolationWidths 675 9.4626438e-06 insert chi_c01Pwidth:InterpolationWidths 676 9.5134479e-06 insert chi_c01Pwidth:InterpolationWidths 677 9.5644133e-06 insert chi_c01Pwidth:InterpolationWidths 678 9.6155402e-06 insert chi_c01Pwidth:InterpolationWidths 679 9.6668289e-06 insert chi_c01Pwidth:InterpolationWidths 680 9.7182795e-06 insert chi_c01Pwidth:InterpolationWidths 681 9.7698923e-06 insert chi_c01Pwidth:InterpolationWidths 682 9.8216673e-06 insert chi_c01Pwidth:InterpolationWidths 683 9.8736048e-06 insert chi_c01Pwidth:InterpolationWidths 684 9.9257051e-06 insert chi_c01Pwidth:InterpolationWidths 685 9.9779682e-06 insert chi_c01Pwidth:InterpolationWidths 686 1.0030394e-05 insert chi_c01Pwidth:InterpolationWidths 687 1.0082984e-05 insert chi_c01Pwidth:InterpolationWidths 688 1.0135737e-05 insert chi_c01Pwidth:InterpolationWidths 689 1.0188654e-05 insert chi_c01Pwidth:InterpolationWidths 690 1.0241734e-05 insert chi_c01Pwidth:InterpolationWidths 691 1.0294979e-05 insert chi_c01Pwidth:InterpolationWidths 692 1.0348388e-05 insert chi_c01Pwidth:InterpolationWidths 693 1.0401961e-05 insert chi_c01Pwidth:InterpolationWidths 694 1.0455699e-05 insert chi_c01Pwidth:InterpolationWidths 695 1.0509601e-05 insert chi_c01Pwidth:InterpolationWidths 696 1.0563669e-05 insert chi_c01Pwidth:InterpolationWidths 697 1.0617902e-05 insert chi_c01Pwidth:InterpolationWidths 698 1.06723e-05 insert chi_c01Pwidth:InterpolationWidths 699 1.0726864e-05 insert chi_c01Pwidth:InterpolationWidths 700 1.0781594e-05 insert chi_c01Pwidth:InterpolationWidths 701 1.083649e-05 insert chi_c01Pwidth:NumberofEntries 0 54 insert chi_c01Pwidth:NumberofEntries 1 108 insert chi_c01Pwidth:NumberofEntries 2 108 insert chi_c01Pwidth:NumberofEntries 3 108 insert chi_c01Pwidth:NumberofEntries 4 108 insert chi_c01Pwidth:NumberofEntries 5 108 insert chi_c01Pwidth:NumberofEntries 6 162 insert chi_c01Pwidth:NumberofEntries 7 162 insert chi_c01Pwidth:NumberofEntries 8 216 insert chi_c01Pwidth:NumberofEntries 9 270 insert chi_c01Pwidth:NumberofEntries 10 324 insert chi_c01Pwidth:NumberofEntries 11 378 insert chi_c01Pwidth:NumberofEntries 12 432 insert chi_c01Pwidth:NumberofEntries 13 486 insert chi_c01Pwidth:NumberofEntries 14 486 insert chi_c01Pwidth:NumberofEntries 15 486 insert chi_c01Pwidth:NumberofEntries 16 486 insert chi_c01Pwidth:NumberofEntries 17 486 insert chi_c01Pwidth:NumberofEntries 18 486 insert chi_c01Pwidth:NumberofEntries 19 486 insert chi_c01Pwidth:NumberofEntries 20 486 insert chi_c01Pwidth:NumberofEntries 21 486 insert chi_c01Pwidth:NumberofEntries 22 486 insert chi_c01Pwidth:NumberofEntries 23 486 insert chi_c01Pwidth:NumberofEntries 24 486 insert chi_c01Pwidth:NumberofEntries 25 486 insert chi_c01Pwidth:NumberofEntries 26 486 insert chi_c01Pwidth:NumberofEntries 27 540 insert chi_c01Pwidth:NumberofEntries 28 540 insert chi_c01Pwidth:NumberofEntries 29 594 insert chi_c01Pwidth:NumberofEntries 30 594 insert chi_c01Pwidth:NumberofEntries 31 594 insert chi_c01Pwidth:NumberofEntries 32 594 insert chi_c01Pwidth:NumberofEntries 33 648 insert chi_c01Pwidth:NumberofEntries 34 648 insert chi_c01Pwidth:NumberofEntries 35 648 insert chi_c01Pwidth:NumberofEntries 36 702 insert chi_c01Pwidth:NumberofEntries 37 702 insert chi_c01Pwidth:NumberofEntries 38 702 insert chi_c01Pwidth:NumberofEntries 39 702 insert chi_c01Pwidth:NumberofEntries 40 702 insert chi_c01Pwidth:NumberofEntries 41 702 insert chi_c01Pwidth:NumberofEntries 42 702 newdef /Herwig/Particles/chi_c0:Width_generator chi_c01Pwidth # create Herwig::GenericWidthGenerator chi_b01Pwidth newdef chi_b01Pwidth:Particle /Herwig/Particles/chi_b0 newdef chi_b01Pwidth:Prefactor 1 newdef chi_b01Pwidth:BRNormalize 1 newdef chi_b01Pwidth:BRMinimum 0.01 newdef chi_b01Pwidth:Points 50 newdef chi_b01Pwidth:InterpolationOrder 1 insert chi_b01Pwidth:MEtype 0 0 insert chi_b01Pwidth:MEtype 1 0 insert chi_b01Pwidth:MEcode 0 0 insert chi_b01Pwidth:MEcode 1 0 insert chi_b01Pwidth:MEcoupling 0 0.032 insert chi_b01Pwidth:MEcoupling 1 0.968 insert chi_b01Pwidth:ModeOn 0 1 insert chi_b01Pwidth:ModeOn 1 1 insert chi_b01Pwidth:MinimumMasses 0 9.45976 insert chi_b01Pwidth:MinimumMasses 1 0 insert chi_b01Pwidth:MEmass1 0 0 insert chi_b01Pwidth:MEmass1 1 0 insert chi_b01Pwidth:MEmass2 0 0 insert chi_b01Pwidth:MEmass2 1 0 insert chi_b01Pwidth:DecayModes 0 chi_b0->Upsilon,gamma; insert chi_b01Pwidth:DecayModes 1 chi_b0->g,g; insert chi_b01Pwidth:NumberofEntries 0 0 insert chi_b01Pwidth:NumberofEntries 1 0 newdef /Herwig/Particles/chi_b0:Width_generator chi_b01Pwidth # create Herwig::GenericWidthGenerator chi_b11Pwidth newdef chi_b11Pwidth:Particle /Herwig/Particles/chi_b1 newdef chi_b11Pwidth:Prefactor 1 newdef chi_b11Pwidth:BRNormalize 1 newdef chi_b11Pwidth:BRMinimum 0.01 newdef chi_b11Pwidth:Points 50 newdef chi_b11Pwidth:InterpolationOrder 1 insert chi_b11Pwidth:MEtype 0 0 insert chi_b11Pwidth:MEtype 1 0 insert chi_b11Pwidth:MEcode 0 0 insert chi_b11Pwidth:MEcode 1 0 insert chi_b11Pwidth:MEcoupling 0 0.35 insert chi_b11Pwidth:MEcoupling 1 0.65 insert chi_b11Pwidth:ModeOn 0 1 insert chi_b11Pwidth:ModeOn 1 1 insert chi_b11Pwidth:MinimumMasses 0 9.45976 insert chi_b11Pwidth:MinimumMasses 1 0 insert chi_b11Pwidth:MEmass1 0 0 insert chi_b11Pwidth:MEmass1 1 0 insert chi_b11Pwidth:MEmass2 0 0 insert chi_b11Pwidth:MEmass2 1 0 insert chi_b11Pwidth:DecayModes 0 chi_b1->Upsilon,gamma; insert chi_b11Pwidth:DecayModes 1 chi_b1->g,g; insert chi_b11Pwidth:NumberofEntries 0 0 insert chi_b11Pwidth:NumberofEntries 1 0 newdef /Herwig/Particles/chi_b1:Width_generator chi_b11Pwidth # create Herwig::GenericWidthGenerator chi_c11Pwidth newdef chi_c11Pwidth:Particle /Herwig/Particles/chi_c1 newdef chi_c11Pwidth:Prefactor 1.03673 newdef chi_c11Pwidth:BRNormalize 1 newdef chi_c11Pwidth:BRMinimum 0.01 newdef chi_c11Pwidth:Points 50 newdef chi_c11Pwidth:InterpolationOrder 1 insert chi_c11Pwidth:MEtype 0 0 insert chi_c11Pwidth:MEtype 1 0 insert chi_c11Pwidth:MEtype 2 0 insert chi_c11Pwidth:MEtype 3 0 insert chi_c11Pwidth:MEtype 4 0 insert chi_c11Pwidth:MEtype 5 0 insert chi_c11Pwidth:MEtype 6 0 insert chi_c11Pwidth:MEtype 7 0 insert chi_c11Pwidth:MEtype 8 0 insert chi_c11Pwidth:MEtype 9 0 insert chi_c11Pwidth:MEtype 10 0 insert chi_c11Pwidth:MEtype 11 0 insert chi_c11Pwidth:MEtype 12 0 insert chi_c11Pwidth:MEtype 13 0 insert chi_c11Pwidth:MEtype 14 0 insert chi_c11Pwidth:MEtype 15 0 insert chi_c11Pwidth:MEtype 16 0 insert chi_c11Pwidth:MEtype 17 0 insert chi_c11Pwidth:MEtype 18 0 insert chi_c11Pwidth:MEtype 19 0 insert chi_c11Pwidth:MEtype 20 0 insert chi_c11Pwidth:MEtype 21 0 insert chi_c11Pwidth:MEtype 22 0 insert chi_c11Pwidth:MEtype 23 0 insert chi_c11Pwidth:MEtype 24 0 insert chi_c11Pwidth:MEtype 25 0 insert chi_c11Pwidth:MEcode 0 0 insert chi_c11Pwidth:MEcode 1 0 insert chi_c11Pwidth:MEcode 2 0 insert chi_c11Pwidth:MEcode 3 0 insert chi_c11Pwidth:MEcode 4 0 insert chi_c11Pwidth:MEcode 5 0 insert chi_c11Pwidth:MEcode 6 0 insert chi_c11Pwidth:MEcode 7 0 insert chi_c11Pwidth:MEcode 8 0 insert chi_c11Pwidth:MEcode 9 0 insert chi_c11Pwidth:MEcode 10 0 insert chi_c11Pwidth:MEcode 11 0 insert chi_c11Pwidth:MEcode 12 0 insert chi_c11Pwidth:MEcode 13 0 insert chi_c11Pwidth:MEcode 14 0 insert chi_c11Pwidth:MEcode 15 0 insert chi_c11Pwidth:MEcode 16 0 insert chi_c11Pwidth:MEcode 17 0 insert chi_c11Pwidth:MEcode 18 0 insert chi_c11Pwidth:MEcode 19 0 insert chi_c11Pwidth:MEcode 20 0 insert chi_c11Pwidth:MEcode 21 0 insert chi_c11Pwidth:MEcode 22 0 insert chi_c11Pwidth:MEcode 23 0 insert chi_c11Pwidth:MEcode 24 0 insert chi_c11Pwidth:MEcode 25 0 insert chi_c11Pwidth:MEcoupling 0 0.356 insert chi_c11Pwidth:MEcoupling 1 0.0016 insert chi_c11Pwidth:MEcoupling 2 0.00053 insert chi_c11Pwidth:MEcoupling 3 0.00107 insert chi_c11Pwidth:MEcoupling 4 0.00053 insert chi_c11Pwidth:MEcoupling 5 0.00107 insert chi_c11Pwidth:MEcoupling 6 0.0016 insert chi_c11Pwidth:MEcoupling 7 0.000537 insert chi_c11Pwidth:MEcoupling 8 0.00053 insert chi_c11Pwidth:MEcoupling 9 0.00107 insert chi_c11Pwidth:MEcoupling 10 0.00039 insert chi_c11Pwidth:MEcoupling 11 0.00237 insert chi_c11Pwidth:MEcoupling 12 0.00115 insert chi_c11Pwidth:MEcoupling 13 0.0023 insert chi_c11Pwidth:MEcoupling 14 0.00107 insert chi_c11Pwidth:MEcoupling 15 0.0023 insert chi_c11Pwidth:MEcoupling 16 0.00115 insert chi_c11Pwidth:MEcoupling 17 0.00024 insert chi_c11Pwidth:MEcoupling 18 0.608569 insert chi_c11Pwidth:MEcoupling 19 6.7e-05 insert chi_c11Pwidth:MEcoupling 20 0.00039 insert chi_c11Pwidth:MEcoupling 21 6.7e-05 insert chi_c11Pwidth:MEcoupling 22 0.0037 insert chi_c11Pwidth:MEcoupling 23 0.0039 insert chi_c11Pwidth:MEcoupling 24 0.0039 insert chi_c11Pwidth:MEcoupling 25 0.0039 insert chi_c11Pwidth:ModeOn 0 1 insert chi_c11Pwidth:ModeOn 1 0 insert chi_c11Pwidth:ModeOn 2 0 insert chi_c11Pwidth:ModeOn 3 0 insert chi_c11Pwidth:ModeOn 4 0 insert chi_c11Pwidth:ModeOn 5 0 insert chi_c11Pwidth:ModeOn 6 0 insert chi_c11Pwidth:ModeOn 7 0 insert chi_c11Pwidth:ModeOn 8 0 insert chi_c11Pwidth:ModeOn 9 0 insert chi_c11Pwidth:ModeOn 10 0 insert chi_c11Pwidth:ModeOn 11 0 insert chi_c11Pwidth:ModeOn 12 0 insert chi_c11Pwidth:ModeOn 13 0 insert chi_c11Pwidth:ModeOn 14 0 insert chi_c11Pwidth:ModeOn 15 0 insert chi_c11Pwidth:ModeOn 16 0 insert chi_c11Pwidth:ModeOn 17 0 insert chi_c11Pwidth:ModeOn 18 1 insert chi_c11Pwidth:ModeOn 19 0 insert chi_c11Pwidth:ModeOn 20 0 insert chi_c11Pwidth:ModeOn 21 0 insert chi_c11Pwidth:ModeOn 22 0 insert chi_c11Pwidth:ModeOn 23 0 insert chi_c11Pwidth:ModeOn 24 0 insert chi_c11Pwidth:ModeOn 25 0 insert chi_c11Pwidth:MinimumMasses 0 3.09598 insert chi_c11Pwidth:MinimumMasses 1 1.28332 insert chi_c11Pwidth:MinimumMasses 2 1.27031 insert chi_c11Pwidth:MinimumMasses 3 1.27888 insert chi_c11Pwidth:MinimumMasses 4 1.27031 insert chi_c11Pwidth:MinimumMasses 5 1.27888 insert chi_c11Pwidth:MinimumMasses 6 1.292 insert chi_c11Pwidth:MinimumMasses 7 1.27863 insert chi_c11Pwidth:MinimumMasses 8 1.27863 insert chi_c11Pwidth:MinimumMasses 9 1.27925 insert chi_c11Pwidth:MinimumMasses 10 1.97471 insert chi_c11Pwidth:MinimumMasses 11 1.26649 insert chi_c11Pwidth:MinimumMasses 12 1.12233 insert chi_c11Pwidth:MinimumMasses 13 1.1309 insert chi_c11Pwidth:MinimumMasses 14 1.27925 insert chi_c11Pwidth:MinimumMasses 15 1.1309 insert chi_c11Pwidth:MinimumMasses 16 1.13027 insert chi_c11Pwidth:MinimumMasses 17 2.23136 insert chi_c11Pwidth:MinimumMasses 18 0 insert chi_c11Pwidth:MinimumMasses 19 1.87914 insert chi_c11Pwidth:MinimumMasses 20 2.15568 insert chi_c11Pwidth:MinimumMasses 21 1.87654 insert chi_c11Pwidth:MinimumMasses 22 0.558281 insert chi_c11Pwidth:MinimumMasses 23 0.65464 insert chi_c11Pwidth:MinimumMasses 24 0.650048 insert chi_c11Pwidth:MinimumMasses 25 0.650048 insert chi_c11Pwidth:MEmass1 0 0 insert chi_c11Pwidth:MEmass1 1 0 insert chi_c11Pwidth:MEmass1 2 0 insert chi_c11Pwidth:MEmass1 3 0 insert chi_c11Pwidth:MEmass1 4 0 insert chi_c11Pwidth:MEmass1 5 0 insert chi_c11Pwidth:MEmass1 6 0 insert chi_c11Pwidth:MEmass1 7 0 insert chi_c11Pwidth:MEmass1 8 0 insert chi_c11Pwidth:MEmass1 9 0 insert chi_c11Pwidth:MEmass1 10 0 insert chi_c11Pwidth:MEmass1 11 0 insert chi_c11Pwidth:MEmass1 12 0 insert chi_c11Pwidth:MEmass1 13 0 insert chi_c11Pwidth:MEmass1 14 0 insert chi_c11Pwidth:MEmass1 15 0 insert chi_c11Pwidth:MEmass1 16 0 insert chi_c11Pwidth:MEmass1 17 0 insert chi_c11Pwidth:MEmass1 18 0 insert chi_c11Pwidth:MEmass1 19 0 insert chi_c11Pwidth:MEmass1 20 0 insert chi_c11Pwidth:MEmass1 21 0 insert chi_c11Pwidth:MEmass1 22 0 insert chi_c11Pwidth:MEmass1 23 0 insert chi_c11Pwidth:MEmass1 24 0 insert chi_c11Pwidth:MEmass1 25 0 insert chi_c11Pwidth:MEmass2 0 0 insert chi_c11Pwidth:MEmass2 1 0 insert chi_c11Pwidth:MEmass2 2 0 insert chi_c11Pwidth:MEmass2 3 0 insert chi_c11Pwidth:MEmass2 4 0 insert chi_c11Pwidth:MEmass2 5 0 insert chi_c11Pwidth:MEmass2 6 0 insert chi_c11Pwidth:MEmass2 7 0 insert chi_c11Pwidth:MEmass2 8 0 insert chi_c11Pwidth:MEmass2 9 0 insert chi_c11Pwidth:MEmass2 10 0 insert chi_c11Pwidth:MEmass2 11 0 insert chi_c11Pwidth:MEmass2 12 0 insert chi_c11Pwidth:MEmass2 13 0 insert chi_c11Pwidth:MEmass2 14 0 insert chi_c11Pwidth:MEmass2 15 0 insert chi_c11Pwidth:MEmass2 16 0 insert chi_c11Pwidth:MEmass2 17 0 insert chi_c11Pwidth:MEmass2 18 0 insert chi_c11Pwidth:MEmass2 19 0 insert chi_c11Pwidth:MEmass2 20 0 insert chi_c11Pwidth:MEmass2 21 0 insert chi_c11Pwidth:MEmass2 22 0 insert chi_c11Pwidth:MEmass2 23 0 insert chi_c11Pwidth:MEmass2 24 0 insert chi_c11Pwidth:MEmass2 25 0 insert chi_c11Pwidth:DecayModes 0 chi_c1->Jpsi,gamma; insert chi_c11Pwidth:DecayModes 1 chi_c1->K*+,K*-; insert chi_c11Pwidth:DecayModes 2 chi_c1->K*+,K-,pi0; insert chi_c11Pwidth:DecayModes 3 chi_c1->K*+,Kbar0,pi-; insert chi_c11Pwidth:DecayModes 4 chi_c1->K*-,K+,pi0; insert chi_c11Pwidth:DecayModes 5 chi_c1->K*-,K0,pi+; insert chi_c11Pwidth:DecayModes 6 chi_c1->K*0,K*bar0; insert chi_c11Pwidth:DecayModes 7 chi_c1->K*0,Kbar0,pi0; insert chi_c11Pwidth:DecayModes 8 chi_c1->K*bar0,K0,pi0; insert chi_c11Pwidth:DecayModes 9 chi_c1->K+,K*bar0,pi-; insert chi_c11Pwidth:DecayModes 10 chi_c1->K+,K+,K-,K-; insert chi_c11Pwidth:DecayModes 11 chi_c1->K+,K-,pi+,pi-; insert chi_c11Pwidth:DecayModes 12 chi_c1->K+,K-,pi0; insert chi_c11Pwidth:DecayModes 13 chi_c1->K+,Kbar0,pi-; insert chi_c11Pwidth:DecayModes 14 chi_c1->K-,K*0,pi+; insert chi_c11Pwidth:DecayModes 15 chi_c1->K-,K0,pi+; insert chi_c11Pwidth:DecayModes 16 chi_c1->K0,Kbar0,pi0; insert chi_c11Pwidth:DecayModes 17 chi_c1->Lambda0,Lambdabar0; insert chi_c11Pwidth:DecayModes 18 chi_c1->g,g; insert chi_c11Pwidth:DecayModes 19 chi_c1->n0,nbar0; insert chi_c11Pwidth:DecayModes 20 chi_c1->p+,pbar-,pi+,pi-; insert chi_c11Pwidth:DecayModes 21 chi_c1->p+,pbar-; insert chi_c11Pwidth:DecayModes 22 chi_c1->pi+,pi+,pi-,pi-; insert chi_c11Pwidth:DecayModes 23 chi_c1->pi+,pi-,rho0; insert chi_c11Pwidth:DecayModes 24 chi_c1->rho+,pi-,pi0; insert chi_c11Pwidth:DecayModes 25 chi_c1->rho-,pi+,pi0; insert chi_c11Pwidth:NumberofEntries 0 0 insert chi_c11Pwidth:NumberofEntries 1 0 insert chi_c11Pwidth:NumberofEntries 2 0 insert chi_c11Pwidth:NumberofEntries 3 0 insert chi_c11Pwidth:NumberofEntries 4 0 insert chi_c11Pwidth:NumberofEntries 5 0 insert chi_c11Pwidth:NumberofEntries 6 0 insert chi_c11Pwidth:NumberofEntries 7 0 insert chi_c11Pwidth:NumberofEntries 8 0 insert chi_c11Pwidth:NumberofEntries 9 0 insert chi_c11Pwidth:NumberofEntries 10 0 insert chi_c11Pwidth:NumberofEntries 11 0 insert chi_c11Pwidth:NumberofEntries 12 0 insert chi_c11Pwidth:NumberofEntries 13 0 insert chi_c11Pwidth:NumberofEntries 14 0 insert chi_c11Pwidth:NumberofEntries 15 0 insert chi_c11Pwidth:NumberofEntries 16 0 insert chi_c11Pwidth:NumberofEntries 17 0 insert chi_c11Pwidth:NumberofEntries 18 0 insert chi_c11Pwidth:NumberofEntries 19 0 insert chi_c11Pwidth:NumberofEntries 20 0 insert chi_c11Pwidth:NumberofEntries 21 0 insert chi_c11Pwidth:NumberofEntries 22 0 insert chi_c11Pwidth:NumberofEntries 23 0 insert chi_c11Pwidth:NumberofEntries 24 0 insert chi_c11Pwidth:NumberofEntries 25 0 newdef /Herwig/Particles/chi_c1:Width_generator chi_c11Pwidth # create Herwig::GenericWidthGenerator chi_c21Pwidth newdef chi_c21Pwidth:Particle /Herwig/Particles/chi_c2 newdef chi_c21Pwidth:Prefactor 1.10786 newdef chi_c21Pwidth:BRNormalize 1 newdef chi_c21Pwidth:BRMinimum 0.01 newdef chi_c21Pwidth:Points 50 newdef chi_c21Pwidth:InterpolationOrder 1 insert chi_c21Pwidth:MEtype 0 2 insert chi_c21Pwidth:MEtype 1 2 insert chi_c21Pwidth:MEtype 2 2 insert chi_c21Pwidth:MEtype 3 0 insert chi_c21Pwidth:MEtype 4 0 insert chi_c21Pwidth:MEtype 5 0 insert chi_c21Pwidth:MEtype 6 1 insert chi_c21Pwidth:MEtype 7 0 insert chi_c21Pwidth:MEtype 8 0 insert chi_c21Pwidth:MEtype 9 0 insert chi_c21Pwidth:MEtype 10 0 insert chi_c21Pwidth:MEtype 11 1 insert chi_c21Pwidth:MEtype 12 0 insert chi_c21Pwidth:MEtype 13 0 insert chi_c21Pwidth:MEtype 14 1 insert chi_c21Pwidth:MEtype 15 0 insert chi_c21Pwidth:MEtype 16 2 insert chi_c21Pwidth:MEtype 17 0 insert chi_c21Pwidth:MEtype 18 0 insert chi_c21Pwidth:MEtype 19 2 insert chi_c21Pwidth:MEtype 20 0 insert chi_c21Pwidth:MEtype 21 0 insert chi_c21Pwidth:MEtype 22 1 insert chi_c21Pwidth:MEtype 23 1 insert chi_c21Pwidth:MEtype 24 0 insert chi_c21Pwidth:MEtype 25 0 insert chi_c21Pwidth:MEcode 0 0 insert chi_c21Pwidth:MEcode 1 0 insert chi_c21Pwidth:MEcode 2 0 insert chi_c21Pwidth:MEcode 3 0 insert chi_c21Pwidth:MEcode 4 0 insert chi_c21Pwidth:MEcode 5 0 insert chi_c21Pwidth:MEcode 6 7 insert chi_c21Pwidth:MEcode 7 0 insert chi_c21Pwidth:MEcode 8 0 insert chi_c21Pwidth:MEcode 9 0 insert chi_c21Pwidth:MEcode 10 0 insert chi_c21Pwidth:MEcode 11 7 insert chi_c21Pwidth:MEcode 12 0 insert chi_c21Pwidth:MEcode 13 0 insert chi_c21Pwidth:MEcode 14 9 insert chi_c21Pwidth:MEcode 15 0 insert chi_c21Pwidth:MEcode 16 0 insert chi_c21Pwidth:MEcode 17 0 insert chi_c21Pwidth:MEcode 18 0 insert chi_c21Pwidth:MEcode 19 0 insert chi_c21Pwidth:MEcode 20 0 insert chi_c21Pwidth:MEcode 21 0 insert chi_c21Pwidth:MEcode 22 7 insert chi_c21Pwidth:MEcode 23 7 insert chi_c21Pwidth:MEcode 24 0 insert chi_c21Pwidth:MEcode 25 0 insert chi_c21Pwidth:MEcoupling 0 0.977432 insert chi_c21Pwidth:MEcoupling 1 0.996791 insert chi_c21Pwidth:MEcoupling 2 1.00281 insert chi_c21Pwidth:MEcoupling 3 0.00095 insert chi_c21Pwidth:MEcoupling 4 0.008 insert chi_c21Pwidth:MEcoupling 5 0.002 insert chi_c21Pwidth:MEcoupling 6 0.199276 insert chi_c21Pwidth:MEcoupling 7 0.008 insert chi_c21Pwidth:MEcoupling 8 0.008 insert chi_c21Pwidth:MEcoupling 9 0.008 insert chi_c21Pwidth:MEcoupling 10 0.002 insert chi_c21Pwidth:MEcoupling 11 0.199613 insert chi_c21Pwidth:MEcoupling 12 0.00027 insert chi_c21Pwidth:MEcoupling 13 0.700639 insert chi_c21Pwidth:MEcoupling 14 0.00434206 insert chi_c21Pwidth:MEcoupling 15 6.6e-05 insert chi_c21Pwidth:MEcoupling 16 0.99734 insert chi_c21Pwidth:MEcoupling 17 0.00121 insert chi_c21Pwidth:MEcoupling 18 6.6e-05 insert chi_c21Pwidth:MEcoupling 19 1.00417 insert chi_c21Pwidth:MEcoupling 20 0.0053 insert chi_c21Pwidth:MEcoupling 21 0.007 insert chi_c21Pwidth:MEcoupling 22 0.0711595 insert chi_c21Pwidth:MEcoupling 23 0.0502745 insert chi_c21Pwidth:MEcoupling 24 0.007 insert chi_c21Pwidth:MEcoupling 25 0.007 insert chi_c21Pwidth:ModeOn 0 1 insert chi_c21Pwidth:ModeOn 1 0 insert chi_c21Pwidth:ModeOn 2 0 insert chi_c21Pwidth:ModeOn 3 0 insert chi_c21Pwidth:ModeOn 4 0 insert chi_c21Pwidth:ModeOn 5 0 insert chi_c21Pwidth:ModeOn 6 0 insert chi_c21Pwidth:ModeOn 7 0 insert chi_c21Pwidth:ModeOn 8 0 insert chi_c21Pwidth:ModeOn 9 0 insert chi_c21Pwidth:ModeOn 10 0 insert chi_c21Pwidth:ModeOn 11 0 insert chi_c21Pwidth:ModeOn 12 0 insert chi_c21Pwidth:ModeOn 13 1 insert chi_c21Pwidth:ModeOn 14 0 insert chi_c21Pwidth:ModeOn 15 0 insert chi_c21Pwidth:ModeOn 16 0 insert chi_c21Pwidth:ModeOn 17 0 insert chi_c21Pwidth:ModeOn 18 0 insert chi_c21Pwidth:ModeOn 19 0 insert chi_c21Pwidth:ModeOn 20 0 insert chi_c21Pwidth:ModeOn 21 0 insert chi_c21Pwidth:ModeOn 22 0 insert chi_c21Pwidth:ModeOn 23 0 insert chi_c21Pwidth:ModeOn 24 0 insert chi_c21Pwidth:ModeOn 25 0 insert chi_c21Pwidth:MinimumMasses 0 3.09598 insert chi_c21Pwidth:MinimumMasses 1 1.28332 insert chi_c21Pwidth:MinimumMasses 2 1.292 insert chi_c21Pwidth:MinimumMasses 3 1.97471 insert chi_c21Pwidth:MinimumMasses 4 1.26649 insert chi_c21Pwidth:MinimumMasses 5 1.25731 insert chi_c21Pwidth:MinimumMasses 6 0.987354 insert chi_c21Pwidth:MinimumMasses 7 1.26587 insert chi_c21Pwidth:MinimumMasses 8 1.26587 insert chi_c21Pwidth:MinimumMasses 9 1.27444 insert chi_c21Pwidth:MinimumMasses 10 1.26525 insert chi_c21Pwidth:MinimumMasses 11 0.995296 insert chi_c21Pwidth:MinimumMasses 12 2.23136 insert chi_c21Pwidth:MinimumMasses 13 0 insert chi_c21Pwidth:MinimumMasses 14 0 insert chi_c21Pwidth:MinimumMasses 15 1.87914 insert chi_c21Pwidth:MinimumMasses 16 1.3955 insert chi_c21Pwidth:MinimumMasses 17 2.15568 insert chi_c21Pwidth:MinimumMasses 18 1.87654 insert chi_c21Pwidth:MinimumMasses 19 1.97892 insert chi_c21Pwidth:MinimumMasses 20 0.558281 insert chi_c21Pwidth:MinimumMasses 21 0.65464 insert chi_c21Pwidth:MinimumMasses 22 0.27914 insert chi_c21Pwidth:MinimumMasses 23 0.269955 insert chi_c21Pwidth:MinimumMasses 24 0.650048 insert chi_c21Pwidth:MinimumMasses 25 0.650048 insert chi_c21Pwidth:MEmass1 0 3.09692 insert chi_c21Pwidth:MEmass1 1 0.89166 insert chi_c21Pwidth:MEmass1 2 0.896 insert chi_c21Pwidth:MEmass1 3 0 insert chi_c21Pwidth:MEmass1 4 0 insert chi_c21Pwidth:MEmass1 5 0 insert chi_c21Pwidth:MEmass1 6 0.493677 insert chi_c21Pwidth:MEmass1 7 0 insert chi_c21Pwidth:MEmass1 8 0 insert chi_c21Pwidth:MEmass1 9 0 insert chi_c21Pwidth:MEmass1 10 0 insert chi_c21Pwidth:MEmass1 11 0.497648 insert chi_c21Pwidth:MEmass1 12 0 insert chi_c21Pwidth:MEmass1 13 0 insert chi_c21Pwidth:MEmass1 14 0 insert chi_c21Pwidth:MEmass1 15 0 insert chi_c21Pwidth:MEmass1 16 0.78265 insert chi_c21Pwidth:MEmass1 17 0 insert chi_c21Pwidth:MEmass1 18 0 insert chi_c21Pwidth:MEmass1 19 1.01946 insert chi_c21Pwidth:MEmass1 20 0 insert chi_c21Pwidth:MEmass1 21 0 insert chi_c21Pwidth:MEmass1 22 0.13957 insert chi_c21Pwidth:MEmass1 23 0.134978 insert chi_c21Pwidth:MEmass1 24 0 insert chi_c21Pwidth:MEmass1 25 0 insert chi_c21Pwidth:MEmass2 0 0 insert chi_c21Pwidth:MEmass2 1 0.89166 insert chi_c21Pwidth:MEmass2 2 0.896 insert chi_c21Pwidth:MEmass2 3 0 insert chi_c21Pwidth:MEmass2 4 0 insert chi_c21Pwidth:MEmass2 5 0 insert chi_c21Pwidth:MEmass2 6 0.493677 insert chi_c21Pwidth:MEmass2 7 0 insert chi_c21Pwidth:MEmass2 8 0 insert chi_c21Pwidth:MEmass2 9 0 insert chi_c21Pwidth:MEmass2 10 0 insert chi_c21Pwidth:MEmass2 11 0.497648 insert chi_c21Pwidth:MEmass2 12 0 insert chi_c21Pwidth:MEmass2 13 0 insert chi_c21Pwidth:MEmass2 14 0 insert chi_c21Pwidth:MEmass2 15 0 insert chi_c21Pwidth:MEmass2 16 0.78265 insert chi_c21Pwidth:MEmass2 17 0 insert chi_c21Pwidth:MEmass2 18 0 insert chi_c21Pwidth:MEmass2 19 1.01946 insert chi_c21Pwidth:MEmass2 20 0 insert chi_c21Pwidth:MEmass2 21 0 insert chi_c21Pwidth:MEmass2 22 0.13957 insert chi_c21Pwidth:MEmass2 23 0.134978 insert chi_c21Pwidth:MEmass2 24 0 insert chi_c21Pwidth:MEmass2 25 0 insert chi_c21Pwidth:DecayModes 0 chi_c2->Jpsi,gamma; insert chi_c21Pwidth:DecayModes 1 chi_c2->K*+,K*-; insert chi_c21Pwidth:DecayModes 2 chi_c2->K*0,K*bar0; insert chi_c21Pwidth:DecayModes 3 chi_c2->K+,K+,K-,K-; insert chi_c21Pwidth:DecayModes 4 chi_c2->K+,K-,pi+,pi-; insert chi_c21Pwidth:DecayModes 5 chi_c2->K+,K-,pi0,pi0; insert chi_c21Pwidth:DecayModes 6 chi_c2->K+,K-; insert chi_c21Pwidth:DecayModes 7 chi_c2->K+,Kbar0,pi-,pi0; insert chi_c21Pwidth:DecayModes 8 chi_c2->K-,K0,pi+,pi0; insert chi_c21Pwidth:DecayModes 9 chi_c2->K0,Kbar0,pi+,pi-; insert chi_c21Pwidth:DecayModes 10 chi_c2->K0,Kbar0,pi0,pi0; insert chi_c21Pwidth:DecayModes 11 chi_c2->K0,Kbar0; insert chi_c21Pwidth:DecayModes 12 chi_c2->Lambda0,Lambdabar0; insert chi_c21Pwidth:DecayModes 13 chi_c2->g,g; insert chi_c21Pwidth:DecayModes 14 chi_c2->gamma,gamma; insert chi_c21Pwidth:DecayModes 15 chi_c2->n0,nbar0; insert chi_c21Pwidth:DecayModes 16 chi_c2->omega,omega; insert chi_c21Pwidth:DecayModes 17 chi_c2->p+,pbar-,pi+,pi-; insert chi_c21Pwidth:DecayModes 18 chi_c2->p+,pbar-; insert chi_c21Pwidth:DecayModes 19 chi_c2->phi,phi; insert chi_c21Pwidth:DecayModes 20 chi_c2->pi+,pi+,pi-,pi-; insert chi_c21Pwidth:DecayModes 21 chi_c2->pi+,pi-,rho0; insert chi_c21Pwidth:DecayModes 22 chi_c2->pi+,pi-; insert chi_c21Pwidth:DecayModes 23 chi_c2->pi0,pi0; insert chi_c21Pwidth:DecayModes 24 chi_c2->rho+,pi-,pi0; insert chi_c21Pwidth:DecayModes 25 chi_c2->rho-,pi+,pi0; insert chi_c21Pwidth:InterpolationMasses 0 3.5339184 insert chi_c21Pwidth:InterpolationMasses 1 3.5347592 insert chi_c21Pwidth:InterpolationMasses 2 3.5356 insert chi_c21Pwidth:InterpolationMasses 3 3.5364408 insert chi_c21Pwidth:InterpolationMasses 4 3.5372816 insert chi_c21Pwidth:InterpolationMasses 5 3.5381224 insert chi_c21Pwidth:InterpolationMasses 6 3.5389633 insert chi_c21Pwidth:InterpolationMasses 7 3.5398041 insert chi_c21Pwidth:InterpolationMasses 8 3.5406449 insert chi_c21Pwidth:InterpolationMasses 9 3.5414857 insert chi_c21Pwidth:InterpolationMasses 10 3.5423265 insert chi_c21Pwidth:InterpolationMasses 11 3.5431673 insert chi_c21Pwidth:InterpolationMasses 12 3.5440082 insert chi_c21Pwidth:InterpolationMasses 13 3.544849 insert chi_c21Pwidth:InterpolationMasses 14 3.5456898 insert chi_c21Pwidth:InterpolationMasses 15 3.5465306 insert chi_c21Pwidth:InterpolationMasses 16 3.5473714 insert chi_c21Pwidth:InterpolationMasses 17 3.5482122 insert chi_c21Pwidth:InterpolationMasses 18 3.5490531 insert chi_c21Pwidth:InterpolationMasses 19 3.5498939 insert chi_c21Pwidth:InterpolationMasses 20 3.5507347 insert chi_c21Pwidth:InterpolationMasses 21 3.5515755 insert chi_c21Pwidth:InterpolationMasses 22 3.5524163 insert chi_c21Pwidth:InterpolationMasses 23 3.5532571 insert chi_c21Pwidth:InterpolationMasses 24 3.554098 insert chi_c21Pwidth:InterpolationMasses 25 3.5549388 insert chi_c21Pwidth:InterpolationMasses 26 3.5557796 insert chi_c21Pwidth:InterpolationMasses 27 3.5566204 insert chi_c21Pwidth:InterpolationMasses 28 3.5574612 insert chi_c21Pwidth:InterpolationMasses 29 3.558302 insert chi_c21Pwidth:InterpolationMasses 30 3.5591429 insert chi_c21Pwidth:InterpolationMasses 31 3.5599837 insert chi_c21Pwidth:InterpolationMasses 32 3.5608245 insert chi_c21Pwidth:InterpolationMasses 33 3.5616653 insert chi_c21Pwidth:InterpolationMasses 34 3.5625061 insert chi_c21Pwidth:InterpolationMasses 35 3.5633469 insert chi_c21Pwidth:InterpolationMasses 36 3.5641878 insert chi_c21Pwidth:InterpolationMasses 37 3.5650286 insert chi_c21Pwidth:InterpolationMasses 38 3.5658694 insert chi_c21Pwidth:InterpolationMasses 39 3.5667102 insert chi_c21Pwidth:InterpolationMasses 40 3.567551 insert chi_c21Pwidth:InterpolationMasses 41 3.5683918 insert chi_c21Pwidth:InterpolationMasses 42 3.5692327 insert chi_c21Pwidth:InterpolationMasses 43 3.5700735 insert chi_c21Pwidth:InterpolationMasses 44 3.5709143 insert chi_c21Pwidth:InterpolationMasses 45 3.5717551 insert chi_c21Pwidth:InterpolationMasses 46 3.5725959 insert chi_c21Pwidth:InterpolationMasses 47 3.5734367 insert chi_c21Pwidth:InterpolationMasses 48 3.5742776 insert chi_c21Pwidth:InterpolationMasses 49 3.5751184 insert chi_c21Pwidth:InterpolationMasses 50 3.5759592 insert chi_c21Pwidth:InterpolationMasses 51 3.5768 insert chi_c21Pwidth:InterpolationMasses 52 3.5776408 insert chi_c21Pwidth:InterpolationMasses 53 3.5784816 insert chi_c21Pwidth:InterpolationMasses 54 3.5339184 insert chi_c21Pwidth:InterpolationMasses 55 3.5347592 insert chi_c21Pwidth:InterpolationMasses 56 3.5356 insert chi_c21Pwidth:InterpolationMasses 57 3.5364408 insert chi_c21Pwidth:InterpolationMasses 58 3.5372816 insert chi_c21Pwidth:InterpolationMasses 59 3.5381224 insert chi_c21Pwidth:InterpolationMasses 60 3.5389633 insert chi_c21Pwidth:InterpolationMasses 61 3.5398041 insert chi_c21Pwidth:InterpolationMasses 62 3.5406449 insert chi_c21Pwidth:InterpolationMasses 63 3.5414857 insert chi_c21Pwidth:InterpolationMasses 64 3.5423265 insert chi_c21Pwidth:InterpolationMasses 65 3.5431673 insert chi_c21Pwidth:InterpolationMasses 66 3.5440082 insert chi_c21Pwidth:InterpolationMasses 67 3.544849 insert chi_c21Pwidth:InterpolationMasses 68 3.5456898 insert chi_c21Pwidth:InterpolationMasses 69 3.5465306 insert chi_c21Pwidth:InterpolationMasses 70 3.5473714 insert chi_c21Pwidth:InterpolationMasses 71 3.5482122 insert chi_c21Pwidth:InterpolationMasses 72 3.5490531 insert chi_c21Pwidth:InterpolationMasses 73 3.5498939 insert chi_c21Pwidth:InterpolationMasses 74 3.5507347 insert chi_c21Pwidth:InterpolationMasses 75 3.5515755 insert chi_c21Pwidth:InterpolationMasses 76 3.5524163 insert chi_c21Pwidth:InterpolationMasses 77 3.5532571 insert chi_c21Pwidth:InterpolationMasses 78 3.554098 insert chi_c21Pwidth:InterpolationMasses 79 3.5549388 insert chi_c21Pwidth:InterpolationMasses 80 3.5557796 insert chi_c21Pwidth:InterpolationMasses 81 3.5566204 insert chi_c21Pwidth:InterpolationMasses 82 3.5574612 insert chi_c21Pwidth:InterpolationMasses 83 3.558302 insert chi_c21Pwidth:InterpolationMasses 84 3.5591429 insert chi_c21Pwidth:InterpolationMasses 85 3.5599837 insert chi_c21Pwidth:InterpolationMasses 86 3.5608245 insert chi_c21Pwidth:InterpolationMasses 87 3.5616653 insert chi_c21Pwidth:InterpolationMasses 88 3.5625061 insert chi_c21Pwidth:InterpolationMasses 89 3.5633469 insert chi_c21Pwidth:InterpolationMasses 90 3.5641878 insert chi_c21Pwidth:InterpolationMasses 91 3.5650286 insert chi_c21Pwidth:InterpolationMasses 92 3.5658694 insert chi_c21Pwidth:InterpolationMasses 93 3.5667102 insert chi_c21Pwidth:InterpolationMasses 94 3.567551 insert chi_c21Pwidth:InterpolationMasses 95 3.5683918 insert chi_c21Pwidth:InterpolationMasses 96 3.5692327 insert chi_c21Pwidth:InterpolationMasses 97 3.5700735 insert chi_c21Pwidth:InterpolationMasses 98 3.5709143 insert chi_c21Pwidth:InterpolationMasses 99 3.5717551 insert chi_c21Pwidth:InterpolationMasses 100 3.5725959 insert chi_c21Pwidth:InterpolationMasses 101 3.5734367 insert chi_c21Pwidth:InterpolationMasses 102 3.5742776 insert chi_c21Pwidth:InterpolationMasses 103 3.5751184 insert chi_c21Pwidth:InterpolationMasses 104 3.5759592 insert chi_c21Pwidth:InterpolationMasses 105 3.5768 insert chi_c21Pwidth:InterpolationMasses 106 3.5776408 insert chi_c21Pwidth:InterpolationMasses 107 3.5784816 insert chi_c21Pwidth:InterpolationMasses 108 3.5339184 insert chi_c21Pwidth:InterpolationMasses 109 3.5347592 insert chi_c21Pwidth:InterpolationMasses 110 3.5356 insert chi_c21Pwidth:InterpolationMasses 111 3.5364408 insert chi_c21Pwidth:InterpolationMasses 112 3.5372816 insert chi_c21Pwidth:InterpolationMasses 113 3.5381224 insert chi_c21Pwidth:InterpolationMasses 114 3.5389633 insert chi_c21Pwidth:InterpolationMasses 115 3.5398041 insert chi_c21Pwidth:InterpolationMasses 116 3.5406449 insert chi_c21Pwidth:InterpolationMasses 117 3.5414857 insert chi_c21Pwidth:InterpolationMasses 118 3.5423265 insert chi_c21Pwidth:InterpolationMasses 119 3.5431673 insert chi_c21Pwidth:InterpolationMasses 120 3.5440082 insert chi_c21Pwidth:InterpolationMasses 121 3.544849 insert chi_c21Pwidth:InterpolationMasses 122 3.5456898 insert chi_c21Pwidth:InterpolationMasses 123 3.5465306 insert chi_c21Pwidth:InterpolationMasses 124 3.5473714 insert chi_c21Pwidth:InterpolationMasses 125 3.5482122 insert chi_c21Pwidth:InterpolationMasses 126 3.5490531 insert chi_c21Pwidth:InterpolationMasses 127 3.5498939 insert chi_c21Pwidth:InterpolationMasses 128 3.5507347 insert chi_c21Pwidth:InterpolationMasses 129 3.5515755 insert chi_c21Pwidth:InterpolationMasses 130 3.5524163 insert chi_c21Pwidth:InterpolationMasses 131 3.5532571 insert chi_c21Pwidth:InterpolationMasses 132 3.554098 insert chi_c21Pwidth:InterpolationMasses 133 3.5549388 insert chi_c21Pwidth:InterpolationMasses 134 3.5557796 insert chi_c21Pwidth:InterpolationMasses 135 3.5566204 insert chi_c21Pwidth:InterpolationMasses 136 3.5574612 insert chi_c21Pwidth:InterpolationMasses 137 3.558302 insert chi_c21Pwidth:InterpolationMasses 138 3.5591429 insert chi_c21Pwidth:InterpolationMasses 139 3.5599837 insert chi_c21Pwidth:InterpolationMasses 140 3.5608245 insert chi_c21Pwidth:InterpolationMasses 141 3.5616653 insert chi_c21Pwidth:InterpolationMasses 142 3.5625061 insert chi_c21Pwidth:InterpolationMasses 143 3.5633469 insert chi_c21Pwidth:InterpolationMasses 144 3.5641878 insert chi_c21Pwidth:InterpolationMasses 145 3.5650286 insert chi_c21Pwidth:InterpolationMasses 146 3.5658694 insert chi_c21Pwidth:InterpolationMasses 147 3.5667102 insert chi_c21Pwidth:InterpolationMasses 148 3.567551 insert chi_c21Pwidth:InterpolationMasses 149 3.5683918 insert chi_c21Pwidth:InterpolationMasses 150 3.5692327 insert chi_c21Pwidth:InterpolationMasses 151 3.5700735 insert chi_c21Pwidth:InterpolationMasses 152 3.5709143 insert chi_c21Pwidth:InterpolationMasses 153 3.5717551 insert chi_c21Pwidth:InterpolationMasses 154 3.5725959 insert chi_c21Pwidth:InterpolationMasses 155 3.5734367 insert chi_c21Pwidth:InterpolationMasses 156 3.5742776 insert chi_c21Pwidth:InterpolationMasses 157 3.5751184 insert chi_c21Pwidth:InterpolationMasses 158 3.5759592 insert chi_c21Pwidth:InterpolationMasses 159 3.5768 insert chi_c21Pwidth:InterpolationMasses 160 3.5776408 insert chi_c21Pwidth:InterpolationMasses 161 3.5784816 insert chi_c21Pwidth:InterpolationMasses 162 3.5339184 insert chi_c21Pwidth:InterpolationMasses 163 3.5347592 insert chi_c21Pwidth:InterpolationMasses 164 3.5356 insert chi_c21Pwidth:InterpolationMasses 165 3.5364408 insert chi_c21Pwidth:InterpolationMasses 166 3.5372816 insert chi_c21Pwidth:InterpolationMasses 167 3.5381224 insert chi_c21Pwidth:InterpolationMasses 168 3.5389633 insert chi_c21Pwidth:InterpolationMasses 169 3.5398041 insert chi_c21Pwidth:InterpolationMasses 170 3.5406449 insert chi_c21Pwidth:InterpolationMasses 171 3.5414857 insert chi_c21Pwidth:InterpolationMasses 172 3.5423265 insert chi_c21Pwidth:InterpolationMasses 173 3.5431673 insert chi_c21Pwidth:InterpolationMasses 174 3.5440082 insert chi_c21Pwidth:InterpolationMasses 175 3.544849 insert chi_c21Pwidth:InterpolationMasses 176 3.5456898 insert chi_c21Pwidth:InterpolationMasses 177 3.5465306 insert chi_c21Pwidth:InterpolationMasses 178 3.5473714 insert chi_c21Pwidth:InterpolationMasses 179 3.5482122 insert chi_c21Pwidth:InterpolationMasses 180 3.5490531 insert chi_c21Pwidth:InterpolationMasses 181 3.5498939 insert chi_c21Pwidth:InterpolationMasses 182 3.5507347 insert chi_c21Pwidth:InterpolationMasses 183 3.5515755 insert chi_c21Pwidth:InterpolationMasses 184 3.5524163 insert chi_c21Pwidth:InterpolationMasses 185 3.5532571 insert chi_c21Pwidth:InterpolationMasses 186 3.554098 insert chi_c21Pwidth:InterpolationMasses 187 3.5549388 insert chi_c21Pwidth:InterpolationMasses 188 3.5557796 insert chi_c21Pwidth:InterpolationMasses 189 3.5566204 insert chi_c21Pwidth:InterpolationMasses 190 3.5574612 insert chi_c21Pwidth:InterpolationMasses 191 3.558302 insert chi_c21Pwidth:InterpolationMasses 192 3.5591429 insert chi_c21Pwidth:InterpolationMasses 193 3.5599837 insert chi_c21Pwidth:InterpolationMasses 194 3.5608245 insert chi_c21Pwidth:InterpolationMasses 195 3.5616653 insert chi_c21Pwidth:InterpolationMasses 196 3.5625061 insert chi_c21Pwidth:InterpolationMasses 197 3.5633469 insert chi_c21Pwidth:InterpolationMasses 198 3.5641878 insert chi_c21Pwidth:InterpolationMasses 199 3.5650286 insert chi_c21Pwidth:InterpolationMasses 200 3.5658694 insert chi_c21Pwidth:InterpolationMasses 201 3.5667102 insert chi_c21Pwidth:InterpolationMasses 202 3.567551 insert chi_c21Pwidth:InterpolationMasses 203 3.5683918 insert chi_c21Pwidth:InterpolationMasses 204 3.5692327 insert chi_c21Pwidth:InterpolationMasses 205 3.5700735 insert chi_c21Pwidth:InterpolationMasses 206 3.5709143 insert chi_c21Pwidth:InterpolationMasses 207 3.5717551 insert chi_c21Pwidth:InterpolationMasses 208 3.5725959 insert chi_c21Pwidth:InterpolationMasses 209 3.5734367 insert chi_c21Pwidth:InterpolationMasses 210 3.5742776 insert chi_c21Pwidth:InterpolationMasses 211 3.5751184 insert chi_c21Pwidth:InterpolationMasses 212 3.5759592 insert chi_c21Pwidth:InterpolationMasses 213 3.5768 insert chi_c21Pwidth:InterpolationMasses 214 3.5776408 insert chi_c21Pwidth:InterpolationMasses 215 3.5784816 insert chi_c21Pwidth:InterpolationMasses 216 3.5339184 insert chi_c21Pwidth:InterpolationMasses 217 3.5347592 insert chi_c21Pwidth:InterpolationMasses 218 3.5356 insert chi_c21Pwidth:InterpolationMasses 219 3.5364408 insert chi_c21Pwidth:InterpolationMasses 220 3.5372816 insert chi_c21Pwidth:InterpolationMasses 221 3.5381224 insert chi_c21Pwidth:InterpolationMasses 222 3.5389633 insert chi_c21Pwidth:InterpolationMasses 223 3.5398041 insert chi_c21Pwidth:InterpolationMasses 224 3.5406449 insert chi_c21Pwidth:InterpolationMasses 225 3.5414857 insert chi_c21Pwidth:InterpolationMasses 226 3.5423265 insert chi_c21Pwidth:InterpolationMasses 227 3.5431673 insert chi_c21Pwidth:InterpolationMasses 228 3.5440082 insert chi_c21Pwidth:InterpolationMasses 229 3.544849 insert chi_c21Pwidth:InterpolationMasses 230 3.5456898 insert chi_c21Pwidth:InterpolationMasses 231 3.5465306 insert chi_c21Pwidth:InterpolationMasses 232 3.5473714 insert chi_c21Pwidth:InterpolationMasses 233 3.5482122 insert chi_c21Pwidth:InterpolationMasses 234 3.5490531 insert chi_c21Pwidth:InterpolationMasses 235 3.5498939 insert chi_c21Pwidth:InterpolationMasses 236 3.5507347 insert chi_c21Pwidth:InterpolationMasses 237 3.5515755 insert chi_c21Pwidth:InterpolationMasses 238 3.5524163 insert chi_c21Pwidth:InterpolationMasses 239 3.5532571 insert chi_c21Pwidth:InterpolationMasses 240 3.554098 insert chi_c21Pwidth:InterpolationMasses 241 3.5549388 insert chi_c21Pwidth:InterpolationMasses 242 3.5557796 insert chi_c21Pwidth:InterpolationMasses 243 3.5566204 insert chi_c21Pwidth:InterpolationMasses 244 3.5574612 insert chi_c21Pwidth:InterpolationMasses 245 3.558302 insert chi_c21Pwidth:InterpolationMasses 246 3.5591429 insert chi_c21Pwidth:InterpolationMasses 247 3.5599837 insert chi_c21Pwidth:InterpolationMasses 248 3.5608245 insert chi_c21Pwidth:InterpolationMasses 249 3.5616653 insert chi_c21Pwidth:InterpolationMasses 250 3.5625061 insert chi_c21Pwidth:InterpolationMasses 251 3.5633469 insert chi_c21Pwidth:InterpolationMasses 252 3.5641878 insert chi_c21Pwidth:InterpolationMasses 253 3.5650286 insert chi_c21Pwidth:InterpolationMasses 254 3.5658694 insert chi_c21Pwidth:InterpolationMasses 255 3.5667102 insert chi_c21Pwidth:InterpolationMasses 256 3.567551 insert chi_c21Pwidth:InterpolationMasses 257 3.5683918 insert chi_c21Pwidth:InterpolationMasses 258 3.5692327 insert chi_c21Pwidth:InterpolationMasses 259 3.5700735 insert chi_c21Pwidth:InterpolationMasses 260 3.5709143 insert chi_c21Pwidth:InterpolationMasses 261 3.5717551 insert chi_c21Pwidth:InterpolationMasses 262 3.5725959 insert chi_c21Pwidth:InterpolationMasses 263 3.5734367 insert chi_c21Pwidth:InterpolationMasses 264 3.5742776 insert chi_c21Pwidth:InterpolationMasses 265 3.5751184 insert chi_c21Pwidth:InterpolationMasses 266 3.5759592 insert chi_c21Pwidth:InterpolationMasses 267 3.5768 insert chi_c21Pwidth:InterpolationMasses 268 3.5776408 insert chi_c21Pwidth:InterpolationMasses 269 3.5784816 insert chi_c21Pwidth:InterpolationWidths 0 0.00037177781 insert chi_c21Pwidth:InterpolationWidths 1 0.00037373365 insert chi_c21Pwidth:InterpolationWidths 2 0.00037569572 insert chi_c21Pwidth:InterpolationWidths 3 0.00037766402 insert chi_c21Pwidth:InterpolationWidths 4 0.00037963856 insert chi_c21Pwidth:InterpolationWidths 5 0.00038161934 insert chi_c21Pwidth:InterpolationWidths 6 0.00038360637 insert chi_c21Pwidth:InterpolationWidths 7 0.00038559966 insert chi_c21Pwidth:InterpolationWidths 8 0.00038759922 insert chi_c21Pwidth:InterpolationWidths 9 0.00038960504 insert chi_c21Pwidth:InterpolationWidths 10 0.00039161714 insert chi_c21Pwidth:InterpolationWidths 11 0.00039363552 insert chi_c21Pwidth:InterpolationWidths 12 0.00039566018 insert chi_c21Pwidth:InterpolationWidths 13 0.00039769114 insert chi_c21Pwidth:InterpolationWidths 14 0.00039972839 insert chi_c21Pwidth:InterpolationWidths 15 0.00040177195 insert chi_c21Pwidth:InterpolationWidths 16 0.00040382183 insert chi_c21Pwidth:InterpolationWidths 17 0.00040587801 insert chi_c21Pwidth:InterpolationWidths 18 0.00040794052 insert chi_c21Pwidth:InterpolationWidths 19 0.00041000936 insert chi_c21Pwidth:InterpolationWidths 20 0.00041208454 insert chi_c21Pwidth:InterpolationWidths 21 0.00041416605 insert chi_c21Pwidth:InterpolationWidths 22 0.00041625391 insert chi_c21Pwidth:InterpolationWidths 23 0.00041834811 insert chi_c21Pwidth:InterpolationWidths 24 0.00042044868 insert chi_c21Pwidth:InterpolationWidths 25 0.00042255561 insert chi_c21Pwidth:InterpolationWidths 26 0.00042466891 insert chi_c21Pwidth:InterpolationWidths 27 0.00042678858 insert chi_c21Pwidth:InterpolationWidths 28 0.00042891464 insert chi_c21Pwidth:InterpolationWidths 29 0.00043104708 insert chi_c21Pwidth:InterpolationWidths 30 0.00043318591 insert chi_c21Pwidth:InterpolationWidths 31 0.00043533114 insert chi_c21Pwidth:InterpolationWidths 32 0.00043748278 insert chi_c21Pwidth:InterpolationWidths 33 0.00043964082 insert chi_c21Pwidth:InterpolationWidths 34 0.00044180528 insert chi_c21Pwidth:InterpolationWidths 35 0.00044397615 insert chi_c21Pwidth:InterpolationWidths 36 0.00044615346 insert chi_c21Pwidth:InterpolationWidths 37 0.00044833719 insert chi_c21Pwidth:InterpolationWidths 38 0.00045052737 insert chi_c21Pwidth:InterpolationWidths 39 0.00045272399 insert chi_c21Pwidth:InterpolationWidths 40 0.00045492705 insert chi_c21Pwidth:InterpolationWidths 41 0.00045713657 insert chi_c21Pwidth:InterpolationWidths 42 0.00045935255 insert chi_c21Pwidth:InterpolationWidths 43 0.000461575 insert chi_c21Pwidth:InterpolationWidths 44 0.00046380391 insert chi_c21Pwidth:InterpolationWidths 45 0.00046603931 insert chi_c21Pwidth:InterpolationWidths 46 0.00046828118 insert chi_c21Pwidth:InterpolationWidths 47 0.00047052955 insert chi_c21Pwidth:InterpolationWidths 48 0.0004727844 insert chi_c21Pwidth:InterpolationWidths 49 0.00047504576 insert chi_c21Pwidth:InterpolationWidths 50 0.00047731362 insert chi_c21Pwidth:InterpolationWidths 51 0.00047958799 insert chi_c21Pwidth:InterpolationWidths 52 0.00048186887 insert chi_c21Pwidth:InterpolationWidths 53 0.00048415628 insert chi_c21Pwidth:InterpolationWidths 54 7.6701588e-06 insert chi_c21Pwidth:InterpolationWidths 55 7.6770178e-06 insert chi_c21Pwidth:InterpolationWidths 56 7.6838806e-06 insert chi_c21Pwidth:InterpolationWidths 57 7.6907472e-06 insert chi_c21Pwidth:InterpolationWidths 58 7.6976176e-06 insert chi_c21Pwidth:InterpolationWidths 59 7.7044917e-06 insert chi_c21Pwidth:InterpolationWidths 60 7.7113697e-06 insert chi_c21Pwidth:InterpolationWidths 61 7.7182514e-06 insert chi_c21Pwidth:InterpolationWidths 62 7.7251369e-06 insert chi_c21Pwidth:InterpolationWidths 63 7.7320262e-06 insert chi_c21Pwidth:InterpolationWidths 64 7.7389192e-06 insert chi_c21Pwidth:InterpolationWidths 65 7.7458161e-06 insert chi_c21Pwidth:InterpolationWidths 66 7.7527167e-06 insert chi_c21Pwidth:InterpolationWidths 67 7.7596212e-06 insert chi_c21Pwidth:InterpolationWidths 68 7.7665294e-06 insert chi_c21Pwidth:InterpolationWidths 69 7.7734414e-06 insert chi_c21Pwidth:InterpolationWidths 70 7.7803572e-06 insert chi_c21Pwidth:InterpolationWidths 71 7.7872768e-06 insert chi_c21Pwidth:InterpolationWidths 72 7.7942001e-06 insert chi_c21Pwidth:InterpolationWidths 73 7.8011273e-06 insert chi_c21Pwidth:InterpolationWidths 74 7.8080583e-06 insert chi_c21Pwidth:InterpolationWidths 75 7.814993e-06 insert chi_c21Pwidth:InterpolationWidths 76 7.8219316e-06 insert chi_c21Pwidth:InterpolationWidths 77 7.8288739e-06 insert chi_c21Pwidth:InterpolationWidths 78 7.8358201e-06 insert chi_c21Pwidth:InterpolationWidths 79 7.84277e-06 insert chi_c21Pwidth:InterpolationWidths 80 7.8497238e-06 insert chi_c21Pwidth:InterpolationWidths 81 7.8566813e-06 insert chi_c21Pwidth:InterpolationWidths 82 7.8636427e-06 insert chi_c21Pwidth:InterpolationWidths 83 7.8706078e-06 insert chi_c21Pwidth:InterpolationWidths 84 7.8775768e-06 insert chi_c21Pwidth:InterpolationWidths 85 7.8845495e-06 insert chi_c21Pwidth:InterpolationWidths 86 7.8915261e-06 insert chi_c21Pwidth:InterpolationWidths 87 7.8985064e-06 insert chi_c21Pwidth:InterpolationWidths 88 7.9054906e-06 insert chi_c21Pwidth:InterpolationWidths 89 7.9124786e-06 insert chi_c21Pwidth:InterpolationWidths 90 7.9194704e-06 insert chi_c21Pwidth:InterpolationWidths 91 7.9264659e-06 insert chi_c21Pwidth:InterpolationWidths 92 7.9334654e-06 insert chi_c21Pwidth:InterpolationWidths 93 7.9404686e-06 insert chi_c21Pwidth:InterpolationWidths 94 7.9474756e-06 insert chi_c21Pwidth:InterpolationWidths 95 7.9544864e-06 insert chi_c21Pwidth:InterpolationWidths 96 7.9615011e-06 insert chi_c21Pwidth:InterpolationWidths 97 7.9685195e-06 insert chi_c21Pwidth:InterpolationWidths 98 7.9755418e-06 insert chi_c21Pwidth:InterpolationWidths 99 7.9825679e-06 insert chi_c21Pwidth:InterpolationWidths 100 7.9895978e-06 insert chi_c21Pwidth:InterpolationWidths 101 7.9966316e-06 insert chi_c21Pwidth:InterpolationWidths 102 8.0036691e-06 insert chi_c21Pwidth:InterpolationWidths 103 8.0107105e-06 insert chi_c21Pwidth:InterpolationWidths 104 8.0177557e-06 insert chi_c21Pwidth:InterpolationWidths 105 8.0248047e-06 insert chi_c21Pwidth:InterpolationWidths 106 8.0318575e-06 insert chi_c21Pwidth:InterpolationWidths 107 8.0389142e-06 insert chi_c21Pwidth:InterpolationWidths 108 7.6239032e-06 insert chi_c21Pwidth:InterpolationWidths 109 7.6307301e-06 insert chi_c21Pwidth:InterpolationWidths 110 7.6375607e-06 insert chi_c21Pwidth:InterpolationWidths 111 7.6443951e-06 insert chi_c21Pwidth:InterpolationWidths 112 7.6512332e-06 insert chi_c21Pwidth:InterpolationWidths 113 7.6580752e-06 insert chi_c21Pwidth:InterpolationWidths 114 7.6649208e-06 insert chi_c21Pwidth:InterpolationWidths 115 7.6717703e-06 insert chi_c21Pwidth:InterpolationWidths 116 7.6786235e-06 insert chi_c21Pwidth:InterpolationWidths 117 7.6854805e-06 insert chi_c21Pwidth:InterpolationWidths 118 7.6923413e-06 insert chi_c21Pwidth:InterpolationWidths 119 7.6992058e-06 insert chi_c21Pwidth:InterpolationWidths 120 7.7060741e-06 insert chi_c21Pwidth:InterpolationWidths 121 7.7129462e-06 insert chi_c21Pwidth:InterpolationWidths 122 7.719822e-06 insert chi_c21Pwidth:InterpolationWidths 123 7.7267017e-06 insert chi_c21Pwidth:InterpolationWidths 124 7.7335851e-06 insert chi_c21Pwidth:InterpolationWidths 125 7.7404723e-06 insert chi_c21Pwidth:InterpolationWidths 126 7.7473632e-06 insert chi_c21Pwidth:InterpolationWidths 127 7.754258e-06 insert chi_c21Pwidth:InterpolationWidths 128 7.7611565e-06 insert chi_c21Pwidth:InterpolationWidths 129 7.7680588e-06 insert chi_c21Pwidth:InterpolationWidths 130 7.7749649e-06 insert chi_c21Pwidth:InterpolationWidths 131 7.7818747e-06 insert chi_c21Pwidth:InterpolationWidths 132 7.7887884e-06 insert chi_c21Pwidth:InterpolationWidths 133 7.7957058e-06 insert chi_c21Pwidth:InterpolationWidths 134 7.802627e-06 insert chi_c21Pwidth:InterpolationWidths 135 7.809552e-06 insert chi_c21Pwidth:InterpolationWidths 136 7.8164808e-06 insert chi_c21Pwidth:InterpolationWidths 137 7.8234133e-06 insert chi_c21Pwidth:InterpolationWidths 138 7.8303497e-06 insert chi_c21Pwidth:InterpolationWidths 139 7.8372899e-06 insert chi_c21Pwidth:InterpolationWidths 140 7.8442338e-06 insert chi_c21Pwidth:InterpolationWidths 141 7.8511815e-06 insert chi_c21Pwidth:InterpolationWidths 142 7.8581331e-06 insert chi_c21Pwidth:InterpolationWidths 143 7.8650884e-06 insert chi_c21Pwidth:InterpolationWidths 144 7.8720475e-06 insert chi_c21Pwidth:InterpolationWidths 145 7.8790104e-06 insert chi_c21Pwidth:InterpolationWidths 146 7.8859771e-06 insert chi_c21Pwidth:InterpolationWidths 147 7.8929476e-06 insert chi_c21Pwidth:InterpolationWidths 148 7.8999219e-06 insert chi_c21Pwidth:InterpolationWidths 149 7.9069e-06 insert chi_c21Pwidth:InterpolationWidths 150 7.9138819e-06 insert chi_c21Pwidth:InterpolationWidths 151 7.9208675e-06 insert chi_c21Pwidth:InterpolationWidths 152 7.927857e-06 insert chi_c21Pwidth:InterpolationWidths 153 7.9348503e-06 insert chi_c21Pwidth:InterpolationWidths 154 7.9418474e-06 insert chi_c21Pwidth:InterpolationWidths 155 7.9488483e-06 insert chi_c21Pwidth:InterpolationWidths 156 7.955853e-06 insert chi_c21Pwidth:InterpolationWidths 157 7.9628615e-06 insert chi_c21Pwidth:InterpolationWidths 158 7.9698739e-06 insert chi_c21Pwidth:InterpolationWidths 159 7.97689e-06 insert chi_c21Pwidth:InterpolationWidths 160 7.9839099e-06 insert chi_c21Pwidth:InterpolationWidths 161 7.9909337e-06 insert chi_c21Pwidth:InterpolationWidths 162 4.040634e-06 insert chi_c21Pwidth:InterpolationWidths 163 4.0440209e-06 insert chi_c21Pwidth:InterpolationWidths 164 4.0474094e-06 insert chi_c21Pwidth:InterpolationWidths 165 4.0507998e-06 insert chi_c21Pwidth:InterpolationWidths 166 4.054192e-06 insert chi_c21Pwidth:InterpolationWidths 167 4.0575859e-06 insert chi_c21Pwidth:InterpolationWidths 168 4.0609816e-06 insert chi_c21Pwidth:InterpolationWidths 169 4.0643791e-06 insert chi_c21Pwidth:InterpolationWidths 170 4.0677783e-06 insert chi_c21Pwidth:InterpolationWidths 171 4.0711794e-06 insert chi_c21Pwidth:InterpolationWidths 172 4.0745822e-06 insert chi_c21Pwidth:InterpolationWidths 173 4.0779868e-06 insert chi_c21Pwidth:InterpolationWidths 174 4.0813932e-06 insert chi_c21Pwidth:InterpolationWidths 175 4.0848014e-06 insert chi_c21Pwidth:InterpolationWidths 176 4.0882114e-06 insert chi_c21Pwidth:InterpolationWidths 177 4.0916232e-06 insert chi_c21Pwidth:InterpolationWidths 178 4.0950367e-06 insert chi_c21Pwidth:InterpolationWidths 179 4.098452e-06 insert chi_c21Pwidth:InterpolationWidths 180 4.1018691e-06 insert chi_c21Pwidth:InterpolationWidths 181 4.105288e-06 insert chi_c21Pwidth:InterpolationWidths 182 4.1087087e-06 insert chi_c21Pwidth:InterpolationWidths 183 4.1121312e-06 insert chi_c21Pwidth:InterpolationWidths 184 4.1155554e-06 insert chi_c21Pwidth:InterpolationWidths 185 4.1189815e-06 insert chi_c21Pwidth:InterpolationWidths 186 4.1224093e-06 insert chi_c21Pwidth:InterpolationWidths 187 4.1258389e-06 insert chi_c21Pwidth:InterpolationWidths 188 4.1292704e-06 insert chi_c21Pwidth:InterpolationWidths 189 4.1327036e-06 insert chi_c21Pwidth:InterpolationWidths 190 4.1361385e-06 insert chi_c21Pwidth:InterpolationWidths 191 4.1395753e-06 insert chi_c21Pwidth:InterpolationWidths 192 4.1430139e-06 insert chi_c21Pwidth:InterpolationWidths 193 4.1464543e-06 insert chi_c21Pwidth:InterpolationWidths 194 4.1498964e-06 insert chi_c21Pwidth:InterpolationWidths 195 4.1533404e-06 insert chi_c21Pwidth:InterpolationWidths 196 4.1567861e-06 insert chi_c21Pwidth:InterpolationWidths 197 4.1602336e-06 insert chi_c21Pwidth:InterpolationWidths 198 4.163683e-06 insert chi_c21Pwidth:InterpolationWidths 199 4.1671341e-06 insert chi_c21Pwidth:InterpolationWidths 200 4.170587e-06 insert chi_c21Pwidth:InterpolationWidths 201 4.1740417e-06 insert chi_c21Pwidth:InterpolationWidths 202 4.1774982e-06 insert chi_c21Pwidth:InterpolationWidths 203 4.1809565e-06 insert chi_c21Pwidth:InterpolationWidths 204 4.1844166e-06 insert chi_c21Pwidth:InterpolationWidths 205 4.1878785e-06 insert chi_c21Pwidth:InterpolationWidths 206 4.1913422e-06 insert chi_c21Pwidth:InterpolationWidths 207 4.1948077e-06 insert chi_c21Pwidth:InterpolationWidths 208 4.198275e-06 insert chi_c21Pwidth:InterpolationWidths 209 4.2017441e-06 insert chi_c21Pwidth:InterpolationWidths 210 4.2052149e-06 insert chi_c21Pwidth:InterpolationWidths 211 4.2086876e-06 insert chi_c21Pwidth:InterpolationWidths 212 4.2121621e-06 insert chi_c21Pwidth:InterpolationWidths 213 4.2156384e-06 insert chi_c21Pwidth:InterpolationWidths 214 4.2191165e-06 insert chi_c21Pwidth:InterpolationWidths 215 4.2225963e-06 insert chi_c21Pwidth:InterpolationWidths 216 3.8029585e-06 insert chi_c21Pwidth:InterpolationWidths 217 3.8065101e-06 insert chi_c21Pwidth:InterpolationWidths 218 3.8100638e-06 insert chi_c21Pwidth:InterpolationWidths 219 3.8136195e-06 insert chi_c21Pwidth:InterpolationWidths 220 3.8171773e-06 insert chi_c21Pwidth:InterpolationWidths 221 3.820737e-06 insert chi_c21Pwidth:InterpolationWidths 222 3.8242988e-06 insert chi_c21Pwidth:InterpolationWidths 223 3.8278626e-06 insert chi_c21Pwidth:InterpolationWidths 224 3.8314284e-06 insert chi_c21Pwidth:InterpolationWidths 225 3.8349962e-06 insert chi_c21Pwidth:InterpolationWidths 226 3.8385661e-06 insert chi_c21Pwidth:InterpolationWidths 227 3.8421379e-06 insert chi_c21Pwidth:InterpolationWidths 228 3.8457118e-06 insert chi_c21Pwidth:InterpolationWidths 229 3.8492877e-06 insert chi_c21Pwidth:InterpolationWidths 230 3.8528657e-06 insert chi_c21Pwidth:InterpolationWidths 231 3.8564456e-06 insert chi_c21Pwidth:InterpolationWidths 232 3.8600276e-06 insert chi_c21Pwidth:InterpolationWidths 233 3.8636116e-06 insert chi_c21Pwidth:InterpolationWidths 234 3.8671977e-06 insert chi_c21Pwidth:InterpolationWidths 235 3.8707857e-06 insert chi_c21Pwidth:InterpolationWidths 236 3.8743758e-06 insert chi_c21Pwidth:InterpolationWidths 237 3.8779679e-06 insert chi_c21Pwidth:InterpolationWidths 238 3.8815621e-06 insert chi_c21Pwidth:InterpolationWidths 239 3.8851583e-06 insert chi_c21Pwidth:InterpolationWidths 240 3.8887565e-06 insert chi_c21Pwidth:InterpolationWidths 241 3.8923567e-06 insert chi_c21Pwidth:InterpolationWidths 242 3.8959589e-06 insert chi_c21Pwidth:InterpolationWidths 243 3.8995632e-06 insert chi_c21Pwidth:InterpolationWidths 244 3.9031695e-06 insert chi_c21Pwidth:InterpolationWidths 245 3.9067779e-06 insert chi_c21Pwidth:InterpolationWidths 246 3.9103882e-06 insert chi_c21Pwidth:InterpolationWidths 247 3.9140006e-06 insert chi_c21Pwidth:InterpolationWidths 248 3.9176151e-06 insert chi_c21Pwidth:InterpolationWidths 249 3.9212316e-06 insert chi_c21Pwidth:InterpolationWidths 250 3.9248501e-06 insert chi_c21Pwidth:InterpolationWidths 251 3.9284706e-06 insert chi_c21Pwidth:InterpolationWidths 252 3.9320932e-06 insert chi_c21Pwidth:InterpolationWidths 253 3.9357178e-06 insert chi_c21Pwidth:InterpolationWidths 254 3.9393444e-06 insert chi_c21Pwidth:InterpolationWidths 255 3.9429731e-06 insert chi_c21Pwidth:InterpolationWidths 256 3.9466038e-06 insert chi_c21Pwidth:InterpolationWidths 257 3.9502365e-06 insert chi_c21Pwidth:InterpolationWidths 258 3.9538713e-06 insert chi_c21Pwidth:InterpolationWidths 259 3.9575081e-06 insert chi_c21Pwidth:InterpolationWidths 260 3.961147e-06 insert chi_c21Pwidth:InterpolationWidths 261 3.9647879e-06 insert chi_c21Pwidth:InterpolationWidths 262 3.9684308e-06 insert chi_c21Pwidth:InterpolationWidths 263 3.9720758e-06 insert chi_c21Pwidth:InterpolationWidths 264 3.9757228e-06 insert chi_c21Pwidth:InterpolationWidths 265 3.9793718e-06 insert chi_c21Pwidth:InterpolationWidths 266 3.9830229e-06 insert chi_c21Pwidth:InterpolationWidths 267 3.9866761e-06 insert chi_c21Pwidth:InterpolationWidths 268 3.9903312e-06 insert chi_c21Pwidth:InterpolationWidths 269 3.9939884e-06 insert chi_c21Pwidth:NumberofEntries 0 54 insert chi_c21Pwidth:NumberofEntries 1 108 insert chi_c21Pwidth:NumberofEntries 2 162 insert chi_c21Pwidth:NumberofEntries 3 162 insert chi_c21Pwidth:NumberofEntries 4 162 insert chi_c21Pwidth:NumberofEntries 5 162 insert chi_c21Pwidth:NumberofEntries 6 162 insert chi_c21Pwidth:NumberofEntries 7 162 insert chi_c21Pwidth:NumberofEntries 8 162 insert chi_c21Pwidth:NumberofEntries 9 162 insert chi_c21Pwidth:NumberofEntries 10 162 insert chi_c21Pwidth:NumberofEntries 11 162 insert chi_c21Pwidth:NumberofEntries 12 162 insert chi_c21Pwidth:NumberofEntries 13 162 insert chi_c21Pwidth:NumberofEntries 14 162 insert chi_c21Pwidth:NumberofEntries 15 162 insert chi_c21Pwidth:NumberofEntries 16 216 insert chi_c21Pwidth:NumberofEntries 17 216 insert chi_c21Pwidth:NumberofEntries 18 216 insert chi_c21Pwidth:NumberofEntries 19 270 insert chi_c21Pwidth:NumberofEntries 20 270 insert chi_c21Pwidth:NumberofEntries 21 270 insert chi_c21Pwidth:NumberofEntries 22 270 insert chi_c21Pwidth:NumberofEntries 23 270 insert chi_c21Pwidth:NumberofEntries 24 270 insert chi_c21Pwidth:NumberofEntries 25 270 newdef /Herwig/Particles/chi_c2:Width_generator chi_c21Pwidth # create Herwig::GenericWidthGenerator chi_b21Pwidth newdef chi_b21Pwidth:Particle /Herwig/Particles/chi_b2 newdef chi_b21Pwidth:Prefactor 1 newdef chi_b21Pwidth:BRNormalize 1 newdef chi_b21Pwidth:BRMinimum 0.01 newdef chi_b21Pwidth:Points 50 newdef chi_b21Pwidth:InterpolationOrder 1 insert chi_b21Pwidth:MEtype 0 2 insert chi_b21Pwidth:MEtype 1 0 insert chi_b21Pwidth:MEcode 0 0 insert chi_b21Pwidth:MEcode 1 0 insert chi_b21Pwidth:MEcoupling 0 0.947673 insert chi_b21Pwidth:MEcoupling 1 0.78 insert chi_b21Pwidth:ModeOn 0 1 insert chi_b21Pwidth:ModeOn 1 1 insert chi_b21Pwidth:MinimumMasses 0 9.45976 insert chi_b21Pwidth:MinimumMasses 1 0 insert chi_b21Pwidth:MEmass1 0 9.4603 insert chi_b21Pwidth:MEmass1 1 0 insert chi_b21Pwidth:MEmass2 0 0 insert chi_b21Pwidth:MEmass2 1 0 insert chi_b21Pwidth:DecayModes 0 chi_b2->Upsilon,gamma; insert chi_b21Pwidth:DecayModes 1 chi_b2->g,g; insert chi_b21Pwidth:InterpolationMasses 0 9.9103712 insert chi_b21Pwidth:InterpolationMasses 1 9.9104406 insert chi_b21Pwidth:InterpolationMasses 2 9.91051 insert chi_b21Pwidth:InterpolationMasses 3 9.9105794 insert chi_b21Pwidth:InterpolationMasses 4 9.9106488 insert chi_b21Pwidth:InterpolationMasses 5 9.9107182 insert chi_b21Pwidth:InterpolationMasses 6 9.9107876 insert chi_b21Pwidth:InterpolationMasses 7 9.9108569 insert chi_b21Pwidth:InterpolationMasses 8 9.9109263 insert chi_b21Pwidth:InterpolationMasses 9 9.9109957 insert chi_b21Pwidth:InterpolationMasses 10 9.9110651 insert chi_b21Pwidth:InterpolationMasses 11 9.9111345 insert chi_b21Pwidth:InterpolationMasses 12 9.9112039 insert chi_b21Pwidth:InterpolationMasses 13 9.9112733 insert chi_b21Pwidth:InterpolationMasses 14 9.9113427 insert chi_b21Pwidth:InterpolationMasses 15 9.911412 insert chi_b21Pwidth:InterpolationMasses 16 9.9114814 insert chi_b21Pwidth:InterpolationMasses 17 9.9115508 insert chi_b21Pwidth:InterpolationMasses 18 9.9116202 insert chi_b21Pwidth:InterpolationMasses 19 9.9116896 insert chi_b21Pwidth:InterpolationMasses 20 9.911759 insert chi_b21Pwidth:InterpolationMasses 21 9.9118284 insert chi_b21Pwidth:InterpolationMasses 22 9.9118978 insert chi_b21Pwidth:InterpolationMasses 23 9.9119671 insert chi_b21Pwidth:InterpolationMasses 24 9.9120365 insert chi_b21Pwidth:InterpolationMasses 25 9.9121059 insert chi_b21Pwidth:InterpolationMasses 26 9.9121753 insert chi_b21Pwidth:InterpolationMasses 27 9.9122447 insert chi_b21Pwidth:InterpolationMasses 28 9.9123141 insert chi_b21Pwidth:InterpolationMasses 29 9.9123835 insert chi_b21Pwidth:InterpolationMasses 30 9.9124529 insert chi_b21Pwidth:InterpolationMasses 31 9.9125222 insert chi_b21Pwidth:InterpolationMasses 32 9.9125916 insert chi_b21Pwidth:InterpolationMasses 33 9.912661 insert chi_b21Pwidth:InterpolationMasses 34 9.9127304 insert chi_b21Pwidth:InterpolationMasses 35 9.9127998 insert chi_b21Pwidth:InterpolationMasses 36 9.9128692 insert chi_b21Pwidth:InterpolationMasses 37 9.9129386 insert chi_b21Pwidth:InterpolationMasses 38 9.913008 insert chi_b21Pwidth:InterpolationMasses 39 9.9130773 insert chi_b21Pwidth:InterpolationMasses 40 9.9131467 insert chi_b21Pwidth:InterpolationMasses 41 9.9132161 insert chi_b21Pwidth:InterpolationMasses 42 9.9132855 insert chi_b21Pwidth:InterpolationMasses 43 9.9133549 insert chi_b21Pwidth:InterpolationMasses 44 9.9134243 insert chi_b21Pwidth:InterpolationMasses 45 9.9134937 insert chi_b21Pwidth:InterpolationMasses 46 9.9135631 insert chi_b21Pwidth:InterpolationMasses 47 9.9136324 insert chi_b21Pwidth:InterpolationMasses 48 9.9137018 insert chi_b21Pwidth:InterpolationMasses 49 9.9137712 insert chi_b21Pwidth:InterpolationMasses 50 9.9138406 insert chi_b21Pwidth:InterpolationMasses 51 9.91391 insert chi_b21Pwidth:InterpolationMasses 52 9.9139794 insert chi_b21Pwidth:InterpolationMasses 53 9.9140488 insert chi_b21Pwidth:InterpolationWidths 0 3.9002565e-05 insert chi_b21Pwidth:InterpolationWidths 1 3.9019955e-05 insert chi_b21Pwidth:InterpolationWidths 2 3.9037351e-05 insert chi_b21Pwidth:InterpolationWidths 3 3.9054752e-05 insert chi_b21Pwidth:InterpolationWidths 4 3.9072157e-05 insert chi_b21Pwidth:InterpolationWidths 5 3.9089568e-05 insert chi_b21Pwidth:InterpolationWidths 6 3.9106983e-05 insert chi_b21Pwidth:InterpolationWidths 7 3.9124404e-05 insert chi_b21Pwidth:InterpolationWidths 8 3.9141829e-05 insert chi_b21Pwidth:InterpolationWidths 9 3.915926e-05 insert chi_b21Pwidth:InterpolationWidths 10 3.9176695e-05 insert chi_b21Pwidth:InterpolationWidths 11 3.9194135e-05 insert chi_b21Pwidth:InterpolationWidths 12 3.9211581e-05 insert chi_b21Pwidth:InterpolationWidths 13 3.9229031e-05 insert chi_b21Pwidth:InterpolationWidths 14 3.9246487e-05 insert chi_b21Pwidth:InterpolationWidths 15 3.9263947e-05 insert chi_b21Pwidth:InterpolationWidths 16 3.9281412e-05 insert chi_b21Pwidth:InterpolationWidths 17 3.9298883e-05 insert chi_b21Pwidth:InterpolationWidths 18 3.9316358e-05 insert chi_b21Pwidth:InterpolationWidths 19 3.9333838e-05 insert chi_b21Pwidth:InterpolationWidths 20 3.9351324e-05 insert chi_b21Pwidth:InterpolationWidths 21 3.9368814e-05 insert chi_b21Pwidth:InterpolationWidths 22 3.9386309e-05 insert chi_b21Pwidth:InterpolationWidths 23 3.940381e-05 insert chi_b21Pwidth:InterpolationWidths 24 3.9421315e-05 insert chi_b21Pwidth:InterpolationWidths 25 3.9438825e-05 insert chi_b21Pwidth:InterpolationWidths 26 3.9456341e-05 insert chi_b21Pwidth:InterpolationWidths 27 3.9473861e-05 insert chi_b21Pwidth:InterpolationWidths 28 3.9491386e-05 insert chi_b21Pwidth:InterpolationWidths 29 3.9508916e-05 insert chi_b21Pwidth:InterpolationWidths 30 3.9526452e-05 insert chi_b21Pwidth:InterpolationWidths 31 3.9543992e-05 insert chi_b21Pwidth:InterpolationWidths 32 3.9561537e-05 insert chi_b21Pwidth:InterpolationWidths 33 3.9579088e-05 insert chi_b21Pwidth:InterpolationWidths 34 3.9596643e-05 insert chi_b21Pwidth:InterpolationWidths 35 3.9614203e-05 insert chi_b21Pwidth:InterpolationWidths 36 3.9631768e-05 insert chi_b21Pwidth:InterpolationWidths 37 3.9649339e-05 insert chi_b21Pwidth:InterpolationWidths 38 3.9666914e-05 insert chi_b21Pwidth:InterpolationWidths 39 3.9684494e-05 insert chi_b21Pwidth:InterpolationWidths 40 3.970208e-05 insert chi_b21Pwidth:InterpolationWidths 41 3.971967e-05 insert chi_b21Pwidth:InterpolationWidths 42 3.9737265e-05 insert chi_b21Pwidth:InterpolationWidths 43 3.9754865e-05 insert chi_b21Pwidth:InterpolationWidths 44 3.9772471e-05 insert chi_b21Pwidth:InterpolationWidths 45 3.9790081e-05 insert chi_b21Pwidth:InterpolationWidths 46 3.9807696e-05 insert chi_b21Pwidth:InterpolationWidths 47 3.9825317e-05 insert chi_b21Pwidth:InterpolationWidths 48 3.9842942e-05 insert chi_b21Pwidth:InterpolationWidths 49 3.9860572e-05 insert chi_b21Pwidth:InterpolationWidths 50 3.9878208e-05 insert chi_b21Pwidth:InterpolationWidths 51 3.9895848e-05 insert chi_b21Pwidth:InterpolationWidths 52 3.9913494e-05 insert chi_b21Pwidth:InterpolationWidths 53 3.9931144e-05 insert chi_b21Pwidth:NumberofEntries 0 54 insert chi_b21Pwidth:NumberofEntries 1 54 newdef /Herwig/Particles/chi_b2:Width_generator chi_b21Pwidth # create Herwig::GenericWidthGenerator chi_b22Pwidth newdef chi_b22Pwidth:Particle /Herwig/Particles/chi_b2(2P) newdef chi_b22Pwidth:Prefactor 1.00921 newdef chi_b22Pwidth:BRNormalize 1 newdef chi_b22Pwidth:BRMinimum 0.01 newdef chi_b22Pwidth:Points 50 newdef chi_b22Pwidth:InterpolationOrder 1 insert chi_b22Pwidth:MEtype 0 2 insert chi_b22Pwidth:MEtype 1 2 insert chi_b22Pwidth:MEtype 2 2 insert chi_b22Pwidth:MEtype 3 0 insert chi_b22Pwidth:MEtype 4 0 insert chi_b22Pwidth:MEtype 5 0 insert chi_b22Pwidth:MEtype 6 0 insert chi_b22Pwidth:MEtype 7 0 insert chi_b22Pwidth:MEtype 8 0 insert chi_b22Pwidth:MEcode 0 0 insert chi_b22Pwidth:MEcode 1 0 insert chi_b22Pwidth:MEcode 2 0 insert chi_b22Pwidth:MEcode 3 0 insert chi_b22Pwidth:MEcode 4 0 insert chi_b22Pwidth:MEcode 5 0 insert chi_b22Pwidth:MEcode 6 0 insert chi_b22Pwidth:MEcode 7 0 insert chi_b22Pwidth:MEcode 8 0 insert chi_b22Pwidth:MEcoupling 0 0.995229 insert chi_b22Pwidth:MEcoupling 1 0.994428 insert chi_b22Pwidth:MEcoupling 2 0.999486 insert chi_b22Pwidth:MEcoupling 3 0.00023 insert chi_b22Pwidth:MEcoupling 4 0.0029 insert chi_b22Pwidth:MEcoupling 5 0.0142 insert chi_b22Pwidth:MEcoupling 6 0.004 insert chi_b22Pwidth:MEcoupling 7 0.002 insert chi_b22Pwidth:MEcoupling 8 0.73267 insert chi_b22Pwidth:ModeOn 0 1 insert chi_b22Pwidth:ModeOn 1 1 insert chi_b22Pwidth:ModeOn 2 1 insert chi_b22Pwidth:ModeOn 3 0 insert chi_b22Pwidth:ModeOn 4 0 insert chi_b22Pwidth:ModeOn 5 1 insert chi_b22Pwidth:ModeOn 6 0 insert chi_b22Pwidth:ModeOn 7 0 insert chi_b22Pwidth:ModeOn 8 1 insert chi_b22Pwidth:MinimumMasses 0 10.0229 insert chi_b22Pwidth:MinimumMasses 1 9.45976 insert chi_b22Pwidth:MinimumMasses 2 10.1575 insert chi_b22Pwidth:MinimumMasses 3 10.1547 insert chi_b22Pwidth:MinimumMasses 4 10.1608 insert chi_b22Pwidth:MinimumMasses 5 10.1648 insert chi_b22Pwidth:MinimumMasses 6 10.1897 insert chi_b22Pwidth:MinimumMasses 7 10.1805 insert chi_b22Pwidth:MinimumMasses 8 0 insert chi_b22Pwidth:MEmass1 0 10.0233 insert chi_b22Pwidth:MEmass1 1 9.4603 insert chi_b22Pwidth:MEmass1 2 9.4603 insert chi_b22Pwidth:MEmass1 3 0 insert chi_b22Pwidth:MEmass1 4 0 insert chi_b22Pwidth:MEmass1 5 0 insert chi_b22Pwidth:MEmass1 6 0 insert chi_b22Pwidth:MEmass1 7 0 insert chi_b22Pwidth:MEmass1 8 0 insert chi_b22Pwidth:MEmass2 0 0 insert chi_b22Pwidth:MEmass2 1 0 insert chi_b22Pwidth:MEmass2 2 0.78265 insert chi_b22Pwidth:MEmass2 3 0 insert chi_b22Pwidth:MEmass2 4 0 insert chi_b22Pwidth:MEmass2 5 0 insert chi_b22Pwidth:MEmass2 6 0 insert chi_b22Pwidth:MEmass2 7 0 insert chi_b22Pwidth:MEmass2 8 0 insert chi_b22Pwidth:DecayModes 0 chi_b2(2P)->Upsilon(2S),gamma; insert chi_b22Pwidth:DecayModes 1 chi_b2(2P)->Upsilon,gamma; insert chi_b22Pwidth:DecayModes 2 chi_b2(2P)->Upsilon,omega; insert chi_b22Pwidth:DecayModes 3 chi_b2(2P)->Upsilon_1(1D),gamma; insert chi_b22Pwidth:DecayModes 4 chi_b2(2P)->Upsilon_2(1D),gamma; insert chi_b22Pwidth:DecayModes 5 chi_b2(2P)->Upsilon_3(1D),gamma; insert chi_b22Pwidth:DecayModes 6 chi_b2(2P)->chi_b2,pi+,pi-; insert chi_b22Pwidth:DecayModes 7 chi_b2(2P)->chi_b2,pi0,pi0; insert chi_b22Pwidth:DecayModes 8 chi_b2(2P)->g,g; insert chi_b22Pwidth:InterpolationMasses 0 10.266652 insert chi_b22Pwidth:InterpolationMasses 1 10.266728 insert chi_b22Pwidth:InterpolationMasses 2 10.266803 insert chi_b22Pwidth:InterpolationMasses 3 10.266878 insert chi_b22Pwidth:InterpolationMasses 4 10.266954 insert chi_b22Pwidth:InterpolationMasses 5 10.267029 insert chi_b22Pwidth:InterpolationMasses 6 10.267105 insert chi_b22Pwidth:InterpolationMasses 7 10.26718 insert chi_b22Pwidth:InterpolationMasses 8 10.267255 insert chi_b22Pwidth:InterpolationMasses 9 10.267331 insert chi_b22Pwidth:InterpolationMasses 10 10.267406 insert chi_b22Pwidth:InterpolationMasses 11 10.267481 insert chi_b22Pwidth:InterpolationMasses 12 10.267557 insert chi_b22Pwidth:InterpolationMasses 13 10.267632 insert chi_b22Pwidth:InterpolationMasses 14 10.267708 insert chi_b22Pwidth:InterpolationMasses 15 10.267783 insert chi_b22Pwidth:InterpolationMasses 16 10.267858 insert chi_b22Pwidth:InterpolationMasses 17 10.267934 insert chi_b22Pwidth:InterpolationMasses 18 10.268009 insert chi_b22Pwidth:InterpolationMasses 19 10.268085 insert chi_b22Pwidth:InterpolationMasses 20 10.26816 insert chi_b22Pwidth:InterpolationMasses 21 10.268235 insert chi_b22Pwidth:InterpolationMasses 22 10.268311 insert chi_b22Pwidth:InterpolationMasses 23 10.268386 insert chi_b22Pwidth:InterpolationMasses 24 10.268462 insert chi_b22Pwidth:InterpolationMasses 25 10.268537 insert chi_b22Pwidth:InterpolationMasses 26 10.268612 insert chi_b22Pwidth:InterpolationMasses 27 10.268688 insert chi_b22Pwidth:InterpolationMasses 28 10.268763 insert chi_b22Pwidth:InterpolationMasses 29 10.268838 insert chi_b22Pwidth:InterpolationMasses 30 10.268914 insert chi_b22Pwidth:InterpolationMasses 31 10.268989 insert chi_b22Pwidth:InterpolationMasses 32 10.269065 insert chi_b22Pwidth:InterpolationMasses 33 10.26914 insert chi_b22Pwidth:InterpolationMasses 34 10.269215 insert chi_b22Pwidth:InterpolationMasses 35 10.269291 insert chi_b22Pwidth:InterpolationMasses 36 10.269366 insert chi_b22Pwidth:InterpolationMasses 37 10.269442 insert chi_b22Pwidth:InterpolationMasses 38 10.269517 insert chi_b22Pwidth:InterpolationMasses 39 10.269592 insert chi_b22Pwidth:InterpolationMasses 40 10.269668 insert chi_b22Pwidth:InterpolationMasses 41 10.269743 insert chi_b22Pwidth:InterpolationMasses 42 10.269819 insert chi_b22Pwidth:InterpolationMasses 43 10.269894 insert chi_b22Pwidth:InterpolationMasses 44 10.269969 insert chi_b22Pwidth:InterpolationMasses 45 10.270045 insert chi_b22Pwidth:InterpolationMasses 46 10.27012 insert chi_b22Pwidth:InterpolationMasses 47 10.270195 insert chi_b22Pwidth:InterpolationMasses 48 10.270271 insert chi_b22Pwidth:InterpolationMasses 49 10.270346 insert chi_b22Pwidth:InterpolationMasses 50 10.270422 insert chi_b22Pwidth:InterpolationMasses 51 10.270497 insert chi_b22Pwidth:InterpolationMasses 52 10.270572 insert chi_b22Pwidth:InterpolationMasses 53 10.270648 insert chi_b22Pwidth:InterpolationMasses 54 10.266652 insert chi_b22Pwidth:InterpolationMasses 55 10.266728 insert chi_b22Pwidth:InterpolationMasses 56 10.266803 insert chi_b22Pwidth:InterpolationMasses 57 10.266878 insert chi_b22Pwidth:InterpolationMasses 58 10.266954 insert chi_b22Pwidth:InterpolationMasses 59 10.267029 insert chi_b22Pwidth:InterpolationMasses 60 10.267105 insert chi_b22Pwidth:InterpolationMasses 61 10.26718 insert chi_b22Pwidth:InterpolationMasses 62 10.267255 insert chi_b22Pwidth:InterpolationMasses 63 10.267331 insert chi_b22Pwidth:InterpolationMasses 64 10.267406 insert chi_b22Pwidth:InterpolationMasses 65 10.267481 insert chi_b22Pwidth:InterpolationMasses 66 10.267557 insert chi_b22Pwidth:InterpolationMasses 67 10.267632 insert chi_b22Pwidth:InterpolationMasses 68 10.267708 insert chi_b22Pwidth:InterpolationMasses 69 10.267783 insert chi_b22Pwidth:InterpolationMasses 70 10.267858 insert chi_b22Pwidth:InterpolationMasses 71 10.267934 insert chi_b22Pwidth:InterpolationMasses 72 10.268009 insert chi_b22Pwidth:InterpolationMasses 73 10.268085 insert chi_b22Pwidth:InterpolationMasses 74 10.26816 insert chi_b22Pwidth:InterpolationMasses 75 10.268235 insert chi_b22Pwidth:InterpolationMasses 76 10.268311 insert chi_b22Pwidth:InterpolationMasses 77 10.268386 insert chi_b22Pwidth:InterpolationMasses 78 10.268462 insert chi_b22Pwidth:InterpolationMasses 79 10.268537 insert chi_b22Pwidth:InterpolationMasses 80 10.268612 insert chi_b22Pwidth:InterpolationMasses 81 10.268688 insert chi_b22Pwidth:InterpolationMasses 82 10.268763 insert chi_b22Pwidth:InterpolationMasses 83 10.268838 insert chi_b22Pwidth:InterpolationMasses 84 10.268914 insert chi_b22Pwidth:InterpolationMasses 85 10.268989 insert chi_b22Pwidth:InterpolationMasses 86 10.269065 insert chi_b22Pwidth:InterpolationMasses 87 10.26914 insert chi_b22Pwidth:InterpolationMasses 88 10.269215 insert chi_b22Pwidth:InterpolationMasses 89 10.269291 insert chi_b22Pwidth:InterpolationMasses 90 10.269366 insert chi_b22Pwidth:InterpolationMasses 91 10.269442 insert chi_b22Pwidth:InterpolationMasses 92 10.269517 insert chi_b22Pwidth:InterpolationMasses 93 10.269592 insert chi_b22Pwidth:InterpolationMasses 94 10.269668 insert chi_b22Pwidth:InterpolationMasses 95 10.269743 insert chi_b22Pwidth:InterpolationMasses 96 10.269819 insert chi_b22Pwidth:InterpolationMasses 97 10.269894 insert chi_b22Pwidth:InterpolationMasses 98 10.269969 insert chi_b22Pwidth:InterpolationMasses 99 10.270045 insert chi_b22Pwidth:InterpolationMasses 100 10.27012 insert chi_b22Pwidth:InterpolationMasses 101 10.270195 insert chi_b22Pwidth:InterpolationMasses 102 10.270271 insert chi_b22Pwidth:InterpolationMasses 103 10.270346 insert chi_b22Pwidth:InterpolationMasses 104 10.270422 insert chi_b22Pwidth:InterpolationMasses 105 10.270497 insert chi_b22Pwidth:InterpolationMasses 106 10.270572 insert chi_b22Pwidth:InterpolationMasses 107 10.270648 insert chi_b22Pwidth:InterpolationMasses 108 10.266652 insert chi_b22Pwidth:InterpolationMasses 109 10.266728 insert chi_b22Pwidth:InterpolationMasses 110 10.266803 insert chi_b22Pwidth:InterpolationMasses 111 10.266878 insert chi_b22Pwidth:InterpolationMasses 112 10.266954 insert chi_b22Pwidth:InterpolationMasses 113 10.267029 insert chi_b22Pwidth:InterpolationMasses 114 10.267105 insert chi_b22Pwidth:InterpolationMasses 115 10.26718 insert chi_b22Pwidth:InterpolationMasses 116 10.267255 insert chi_b22Pwidth:InterpolationMasses 117 10.267331 insert chi_b22Pwidth:InterpolationMasses 118 10.267406 insert chi_b22Pwidth:InterpolationMasses 119 10.267481 insert chi_b22Pwidth:InterpolationMasses 120 10.267557 insert chi_b22Pwidth:InterpolationMasses 121 10.267632 insert chi_b22Pwidth:InterpolationMasses 122 10.267708 insert chi_b22Pwidth:InterpolationMasses 123 10.267783 insert chi_b22Pwidth:InterpolationMasses 124 10.267858 insert chi_b22Pwidth:InterpolationMasses 125 10.267934 insert chi_b22Pwidth:InterpolationMasses 126 10.268009 insert chi_b22Pwidth:InterpolationMasses 127 10.268085 insert chi_b22Pwidth:InterpolationMasses 128 10.26816 insert chi_b22Pwidth:InterpolationMasses 129 10.268235 insert chi_b22Pwidth:InterpolationMasses 130 10.268311 insert chi_b22Pwidth:InterpolationMasses 131 10.268386 insert chi_b22Pwidth:InterpolationMasses 132 10.268462 insert chi_b22Pwidth:InterpolationMasses 133 10.268537 insert chi_b22Pwidth:InterpolationMasses 134 10.268612 insert chi_b22Pwidth:InterpolationMasses 135 10.268688 insert chi_b22Pwidth:InterpolationMasses 136 10.268763 insert chi_b22Pwidth:InterpolationMasses 137 10.268838 insert chi_b22Pwidth:InterpolationMasses 138 10.268914 insert chi_b22Pwidth:InterpolationMasses 139 10.268989 insert chi_b22Pwidth:InterpolationMasses 140 10.269065 insert chi_b22Pwidth:InterpolationMasses 141 10.26914 insert chi_b22Pwidth:InterpolationMasses 142 10.269215 insert chi_b22Pwidth:InterpolationMasses 143 10.269291 insert chi_b22Pwidth:InterpolationMasses 144 10.269366 insert chi_b22Pwidth:InterpolationMasses 145 10.269442 insert chi_b22Pwidth:InterpolationMasses 146 10.269517 insert chi_b22Pwidth:InterpolationMasses 147 10.269592 insert chi_b22Pwidth:InterpolationMasses 148 10.269668 insert chi_b22Pwidth:InterpolationMasses 149 10.269743 insert chi_b22Pwidth:InterpolationMasses 150 10.269819 insert chi_b22Pwidth:InterpolationMasses 151 10.269894 insert chi_b22Pwidth:InterpolationMasses 152 10.269969 insert chi_b22Pwidth:InterpolationMasses 153 10.270045 insert chi_b22Pwidth:InterpolationMasses 154 10.27012 insert chi_b22Pwidth:InterpolationMasses 155 10.270195 insert chi_b22Pwidth:InterpolationMasses 156 10.270271 insert chi_b22Pwidth:InterpolationMasses 157 10.270346 insert chi_b22Pwidth:InterpolationMasses 158 10.270422 insert chi_b22Pwidth:InterpolationMasses 159 10.270497 insert chi_b22Pwidth:InterpolationMasses 160 10.270572 insert chi_b22Pwidth:InterpolationMasses 161 10.270648 insert chi_b22Pwidth:InterpolationWidths 0 2.9350448e-05 insert chi_b22Pwidth:InterpolationWidths 1 2.9377203e-05 insert chi_b22Pwidth:InterpolationWidths 2 2.9403974e-05 insert chi_b22Pwidth:InterpolationWidths 3 2.9430761e-05 insert chi_b22Pwidth:InterpolationWidths 4 2.9457564e-05 insert chi_b22Pwidth:InterpolationWidths 5 2.9484383e-05 insert chi_b22Pwidth:InterpolationWidths 6 2.9511218e-05 insert chi_b22Pwidth:InterpolationWidths 7 2.9538068e-05 insert chi_b22Pwidth:InterpolationWidths 8 2.9564935e-05 insert chi_b22Pwidth:InterpolationWidths 9 2.9591818e-05 insert chi_b22Pwidth:InterpolationWidths 10 2.9618716e-05 insert chi_b22Pwidth:InterpolationWidths 11 2.9645631e-05 insert chi_b22Pwidth:InterpolationWidths 12 2.9672562e-05 insert chi_b22Pwidth:InterpolationWidths 13 2.9699508e-05 insert chi_b22Pwidth:InterpolationWidths 14 2.9726471e-05 insert chi_b22Pwidth:InterpolationWidths 15 2.9753449e-05 insert chi_b22Pwidth:InterpolationWidths 16 2.9780444e-05 insert chi_b22Pwidth:InterpolationWidths 17 2.9807454e-05 insert chi_b22Pwidth:InterpolationWidths 18 2.9834481e-05 insert chi_b22Pwidth:InterpolationWidths 19 2.9861524e-05 insert chi_b22Pwidth:InterpolationWidths 20 2.9888582e-05 insert chi_b22Pwidth:InterpolationWidths 21 2.9915657e-05 insert chi_b22Pwidth:InterpolationWidths 22 2.9942748e-05 insert chi_b22Pwidth:InterpolationWidths 23 2.9969854e-05 insert chi_b22Pwidth:InterpolationWidths 24 2.9996977e-05 insert chi_b22Pwidth:InterpolationWidths 25 3.0024116e-05 insert chi_b22Pwidth:InterpolationWidths 26 3.0051271e-05 insert chi_b22Pwidth:InterpolationWidths 27 3.0078442e-05 insert chi_b22Pwidth:InterpolationWidths 28 3.0105628e-05 insert chi_b22Pwidth:InterpolationWidths 29 3.0132831e-05 insert chi_b22Pwidth:InterpolationWidths 30 3.016005e-05 insert chi_b22Pwidth:InterpolationWidths 31 3.0187286e-05 insert chi_b22Pwidth:InterpolationWidths 32 3.0214537e-05 insert chi_b22Pwidth:InterpolationWidths 33 3.0241804e-05 insert chi_b22Pwidth:InterpolationWidths 34 3.0269087e-05 insert chi_b22Pwidth:InterpolationWidths 35 3.0296387e-05 insert chi_b22Pwidth:InterpolationWidths 36 3.0323702e-05 insert chi_b22Pwidth:InterpolationWidths 37 3.0351034e-05 insert chi_b22Pwidth:InterpolationWidths 38 3.0378382e-05 insert chi_b22Pwidth:InterpolationWidths 39 3.0405745e-05 insert chi_b22Pwidth:InterpolationWidths 40 3.0433125e-05 insert chi_b22Pwidth:InterpolationWidths 41 3.0460521e-05 insert chi_b22Pwidth:InterpolationWidths 42 3.0487933e-05 insert chi_b22Pwidth:InterpolationWidths 43 3.0515362e-05 insert chi_b22Pwidth:InterpolationWidths 44 3.0542806e-05 insert chi_b22Pwidth:InterpolationWidths 45 3.0570266e-05 insert chi_b22Pwidth:InterpolationWidths 46 3.0597743e-05 insert chi_b22Pwidth:InterpolationWidths 47 3.0625236e-05 insert chi_b22Pwidth:InterpolationWidths 48 3.0652745e-05 insert chi_b22Pwidth:InterpolationWidths 49 3.068027e-05 insert chi_b22Pwidth:InterpolationWidths 50 3.0707811e-05 insert chi_b22Pwidth:InterpolationWidths 51 3.0735368e-05 insert chi_b22Pwidth:InterpolationWidths 52 3.0762942e-05 insert chi_b22Pwidth:InterpolationWidths 53 3.0790532e-05 insert chi_b22Pwidth:InterpolationWidths 54 1.309551e-05 insert chi_b22Pwidth:InterpolationWidths 55 1.3098962e-05 insert chi_b22Pwidth:InterpolationWidths 56 1.3102415e-05 insert chi_b22Pwidth:InterpolationWidths 57 1.3105868e-05 insert chi_b22Pwidth:InterpolationWidths 58 1.3109322e-05 insert chi_b22Pwidth:InterpolationWidths 59 1.3112776e-05 insert chi_b22Pwidth:InterpolationWidths 60 1.3116231e-05 insert chi_b22Pwidth:InterpolationWidths 61 1.3119687e-05 insert chi_b22Pwidth:InterpolationWidths 62 1.3123143e-05 insert chi_b22Pwidth:InterpolationWidths 63 1.31266e-05 insert chi_b22Pwidth:InterpolationWidths 64 1.3130057e-05 insert chi_b22Pwidth:InterpolationWidths 65 1.3133515e-05 insert chi_b22Pwidth:InterpolationWidths 66 1.3136973e-05 insert chi_b22Pwidth:InterpolationWidths 67 1.3140432e-05 insert chi_b22Pwidth:InterpolationWidths 68 1.3143892e-05 insert chi_b22Pwidth:InterpolationWidths 69 1.3147352e-05 insert chi_b22Pwidth:InterpolationWidths 70 1.3150813e-05 insert chi_b22Pwidth:InterpolationWidths 71 1.3154274e-05 insert chi_b22Pwidth:InterpolationWidths 72 1.3157736e-05 insert chi_b22Pwidth:InterpolationWidths 73 1.3161198e-05 insert chi_b22Pwidth:InterpolationWidths 74 1.3164661e-05 insert chi_b22Pwidth:InterpolationWidths 75 1.3168125e-05 insert chi_b22Pwidth:InterpolationWidths 76 1.3171589e-05 insert chi_b22Pwidth:InterpolationWidths 77 1.3175054e-05 insert chi_b22Pwidth:InterpolationWidths 78 1.3178519e-05 insert chi_b22Pwidth:InterpolationWidths 79 1.3181985e-05 insert chi_b22Pwidth:InterpolationWidths 80 1.3185451e-05 insert chi_b22Pwidth:InterpolationWidths 81 1.3188918e-05 insert chi_b22Pwidth:InterpolationWidths 82 1.3192386e-05 insert chi_b22Pwidth:InterpolationWidths 83 1.3195854e-05 insert chi_b22Pwidth:InterpolationWidths 84 1.3199322e-05 insert chi_b22Pwidth:InterpolationWidths 85 1.3202792e-05 insert chi_b22Pwidth:InterpolationWidths 86 1.3206262e-05 insert chi_b22Pwidth:InterpolationWidths 87 1.3209732e-05 insert chi_b22Pwidth:InterpolationWidths 88 1.3213203e-05 insert chi_b22Pwidth:InterpolationWidths 89 1.3216674e-05 insert chi_b22Pwidth:InterpolationWidths 90 1.3220147e-05 insert chi_b22Pwidth:InterpolationWidths 91 1.3223619e-05 insert chi_b22Pwidth:InterpolationWidths 92 1.3227093e-05 insert chi_b22Pwidth:InterpolationWidths 93 1.3230566e-05 insert chi_b22Pwidth:InterpolationWidths 94 1.3234041e-05 insert chi_b22Pwidth:InterpolationWidths 95 1.3237516e-05 insert chi_b22Pwidth:InterpolationWidths 96 1.3240991e-05 insert chi_b22Pwidth:InterpolationWidths 97 1.3244467e-05 insert chi_b22Pwidth:InterpolationWidths 98 1.3247944e-05 insert chi_b22Pwidth:InterpolationWidths 99 1.3251421e-05 insert chi_b22Pwidth:InterpolationWidths 100 1.3254899e-05 insert chi_b22Pwidth:InterpolationWidths 101 1.3258378e-05 insert chi_b22Pwidth:InterpolationWidths 102 1.3261857e-05 insert chi_b22Pwidth:InterpolationWidths 103 1.3265336e-05 insert chi_b22Pwidth:InterpolationWidths 104 1.3268816e-05 insert chi_b22Pwidth:InterpolationWidths 105 1.3272297e-05 insert chi_b22Pwidth:InterpolationWidths 106 1.3275778e-05 insert chi_b22Pwidth:InterpolationWidths 107 1.327926e-05 insert chi_b22Pwidth:InterpolationWidths 108 1.935578e-06 insert chi_b22Pwidth:InterpolationWidths 109 1.9392927e-06 insert chi_b22Pwidth:InterpolationWidths 110 1.9430036e-06 insert chi_b22Pwidth:InterpolationWidths 111 1.9467107e-06 insert chi_b22Pwidth:InterpolationWidths 112 1.950414e-06 insert chi_b22Pwidth:InterpolationWidths 113 1.9541134e-06 insert chi_b22Pwidth:InterpolationWidths 114 1.9578089e-06 insert chi_b22Pwidth:InterpolationWidths 115 1.9615007e-06 insert chi_b22Pwidth:InterpolationWidths 116 1.9651885e-06 insert chi_b22Pwidth:InterpolationWidths 117 1.9688726e-06 insert chi_b22Pwidth:InterpolationWidths 118 1.9725528e-06 insert chi_b22Pwidth:InterpolationWidths 119 1.9762293e-06 insert chi_b22Pwidth:InterpolationWidths 120 1.979902e-06 insert chi_b22Pwidth:InterpolationWidths 121 1.9835709e-06 insert chi_b22Pwidth:InterpolationWidths 122 1.9872362e-06 insert chi_b22Pwidth:InterpolationWidths 123 1.9908977e-06 insert chi_b22Pwidth:InterpolationWidths 124 1.9945555e-06 insert chi_b22Pwidth:InterpolationWidths 125 1.9982096e-06 insert chi_b22Pwidth:InterpolationWidths 126 2.00186e-06 insert chi_b22Pwidth:InterpolationWidths 127 2.0055068e-06 insert chi_b22Pwidth:InterpolationWidths 128 2.00915e-06 insert chi_b22Pwidth:InterpolationWidths 129 2.0127896e-06 insert chi_b22Pwidth:InterpolationWidths 130 2.0164256e-06 insert chi_b22Pwidth:InterpolationWidths 131 2.0200581e-06 insert chi_b22Pwidth:InterpolationWidths 132 2.0236872e-06 insert chi_b22Pwidth:InterpolationWidths 133 2.0273128e-06 insert chi_b22Pwidth:InterpolationWidths 134 2.0309349e-06 insert chi_b22Pwidth:InterpolationWidths 135 2.0345535e-06 insert chi_b22Pwidth:InterpolationWidths 136 2.0381686e-06 insert chi_b22Pwidth:InterpolationWidths 137 2.0417804e-06 insert chi_b22Pwidth:InterpolationWidths 138 2.0453888e-06 insert chi_b22Pwidth:InterpolationWidths 139 2.0489937e-06 insert chi_b22Pwidth:InterpolationWidths 140 2.0525952e-06 insert chi_b22Pwidth:InterpolationWidths 141 2.0561932e-06 insert chi_b22Pwidth:InterpolationWidths 142 2.0597879e-06 insert chi_b22Pwidth:InterpolationWidths 143 2.0633792e-06 insert chi_b22Pwidth:InterpolationWidths 144 2.0669671e-06 insert chi_b22Pwidth:InterpolationWidths 145 2.0705517e-06 insert chi_b22Pwidth:InterpolationWidths 146 2.074133e-06 insert chi_b22Pwidth:InterpolationWidths 147 2.0777109e-06 insert chi_b22Pwidth:InterpolationWidths 148 2.0812855e-06 insert chi_b22Pwidth:InterpolationWidths 149 2.0848568e-06 insert chi_b22Pwidth:InterpolationWidths 150 2.0884249e-06 insert chi_b22Pwidth:InterpolationWidths 151 2.0919896e-06 insert chi_b22Pwidth:InterpolationWidths 152 2.0955512e-06 insert chi_b22Pwidth:InterpolationWidths 153 2.0991097e-06 insert chi_b22Pwidth:InterpolationWidths 154 2.102665e-06 insert chi_b22Pwidth:InterpolationWidths 155 2.1062171e-06 insert chi_b22Pwidth:InterpolationWidths 156 2.109766e-06 insert chi_b22Pwidth:InterpolationWidths 157 2.1133118e-06 insert chi_b22Pwidth:InterpolationWidths 158 2.1168544e-06 insert chi_b22Pwidth:InterpolationWidths 159 2.1203938e-06 insert chi_b22Pwidth:InterpolationWidths 160 2.1239302e-06 insert chi_b22Pwidth:InterpolationWidths 161 2.1274634e-06 insert chi_b22Pwidth:NumberofEntries 0 54 insert chi_b22Pwidth:NumberofEntries 1 108 insert chi_b22Pwidth:NumberofEntries 2 162 insert chi_b22Pwidth:NumberofEntries 3 162 insert chi_b22Pwidth:NumberofEntries 4 162 insert chi_b22Pwidth:NumberofEntries 5 162 insert chi_b22Pwidth:NumberofEntries 6 162 insert chi_b22Pwidth:NumberofEntries 7 162 insert chi_b22Pwidth:NumberofEntries 8 162 newdef /Herwig/Particles/chi_b2(2P):Width_generator chi_b22Pwidth # create Herwig::GenericWidthGenerator chi_b12Pwidth newdef chi_b12Pwidth:Particle /Herwig/Particles/chi_b1(2P) newdef chi_b12Pwidth:Prefactor 1.01864 newdef chi_b12Pwidth:BRNormalize 1 newdef chi_b12Pwidth:BRMinimum 0.01 newdef chi_b12Pwidth:Points 50 newdef chi_b12Pwidth:InterpolationOrder 1 insert chi_b12Pwidth:MEtype 0 0 insert chi_b12Pwidth:MEtype 1 0 insert chi_b12Pwidth:MEtype 2 0 insert chi_b12Pwidth:MEtype 3 0 insert chi_b12Pwidth:MEtype 4 0 insert chi_b12Pwidth:MEtype 5 0 insert chi_b12Pwidth:MEtype 6 0 insert chi_b12Pwidth:MEtype 7 0 insert chi_b12Pwidth:MEcode 0 0 insert chi_b12Pwidth:MEcode 1 0 insert chi_b12Pwidth:MEcode 2 0 insert chi_b12Pwidth:MEcode 3 0 insert chi_b12Pwidth:MEcode 4 0 insert chi_b12Pwidth:MEcode 5 0 insert chi_b12Pwidth:MEcode 6 0 insert chi_b12Pwidth:MEcode 7 0 insert chi_b12Pwidth:MEcoupling 0 0.21 insert chi_b12Pwidth:MEcoupling 1 0.085 insert chi_b12Pwidth:MEcoupling 2 0.0163 insert chi_b12Pwidth:MEcoupling 3 0.0097 insert chi_b12Pwidth:MEcoupling 4 0.0236 insert chi_b12Pwidth:MEcoupling 5 0.0057 insert chi_b12Pwidth:MEcoupling 6 0.0029 insert chi_b12Pwidth:MEcoupling 7 0.6468 insert chi_b12Pwidth:ModeOn 0 1 insert chi_b12Pwidth:ModeOn 1 1 insert chi_b12Pwidth:ModeOn 2 1 insert chi_b12Pwidth:ModeOn 3 0 insert chi_b12Pwidth:ModeOn 4 1 insert chi_b12Pwidth:ModeOn 5 0 insert chi_b12Pwidth:ModeOn 6 0 insert chi_b12Pwidth:ModeOn 7 1 insert chi_b12Pwidth:MinimumMasses 0 10.0229 insert chi_b12Pwidth:MinimumMasses 1 9.45976 insert chi_b12Pwidth:MinimumMasses 2 10.1575 insert chi_b12Pwidth:MinimumMasses 3 10.1547 insert chi_b12Pwidth:MinimumMasses 4 10.1608 insert chi_b12Pwidth:MinimumMasses 5 10.1712 insert chi_b12Pwidth:MinimumMasses 6 10.162 insert chi_b12Pwidth:MinimumMasses 7 0 insert chi_b12Pwidth:MEmass1 0 0 insert chi_b12Pwidth:MEmass1 1 0 insert chi_b12Pwidth:MEmass1 2 0 insert chi_b12Pwidth:MEmass1 3 0 insert chi_b12Pwidth:MEmass1 4 0 insert chi_b12Pwidth:MEmass1 5 0 insert chi_b12Pwidth:MEmass1 6 0 insert chi_b12Pwidth:MEmass1 7 0 insert chi_b12Pwidth:MEmass2 0 0 insert chi_b12Pwidth:MEmass2 1 0 insert chi_b12Pwidth:MEmass2 2 0 insert chi_b12Pwidth:MEmass2 3 0 insert chi_b12Pwidth:MEmass2 4 0 insert chi_b12Pwidth:MEmass2 5 0 insert chi_b12Pwidth:MEmass2 6 0 insert chi_b12Pwidth:MEmass2 7 0 insert chi_b12Pwidth:DecayModes 0 chi_b1(2P)->Upsilon(2S),gamma; insert chi_b12Pwidth:DecayModes 1 chi_b1(2P)->Upsilon,gamma; insert chi_b12Pwidth:DecayModes 2 chi_b1(2P)->Upsilon,omega; insert chi_b12Pwidth:DecayModes 3 chi_b1(2P)->Upsilon_1(1D),gamma; insert chi_b12Pwidth:DecayModes 4 chi_b1(2P)->Upsilon_2(1D),gamma; insert chi_b12Pwidth:DecayModes 5 chi_b1(2P)->chi_b1,pi+,pi-; insert chi_b12Pwidth:DecayModes 6 chi_b1(2P)->chi_b1,pi0,pi0; insert chi_b12Pwidth:DecayModes 7 chi_b1(2P)->g,g; insert chi_b12Pwidth:NumberofEntries 0 0 insert chi_b12Pwidth:NumberofEntries 1 0 insert chi_b12Pwidth:NumberofEntries 2 0 insert chi_b12Pwidth:NumberofEntries 3 0 insert chi_b12Pwidth:NumberofEntries 4 0 insert chi_b12Pwidth:NumberofEntries 5 0 insert chi_b12Pwidth:NumberofEntries 6 0 insert chi_b12Pwidth:NumberofEntries 7 0 newdef /Herwig/Particles/chi_b1(2P):Width_generator chi_b12Pwidth # create Herwig::GenericWidthGenerator chi_b02Pwidth newdef chi_b02Pwidth:Particle /Herwig/Particles/chi_b0(2P) newdef chi_b02Pwidth:Prefactor 1.01061 newdef chi_b02Pwidth:BRNormalize 1 newdef chi_b02Pwidth:BRMinimum 0.01 newdef chi_b02Pwidth:Points 50 newdef chi_b02Pwidth:InterpolationOrder 1 insert chi_b02Pwidth:MEtype 0 0 insert chi_b02Pwidth:MEtype 1 0 insert chi_b02Pwidth:MEtype 2 0 insert chi_b02Pwidth:MEtype 3 0 insert chi_b02Pwidth:MEcode 0 0 insert chi_b02Pwidth:MEcode 1 0 insert chi_b02Pwidth:MEcode 2 0 insert chi_b02Pwidth:MEcode 3 0 insert chi_b02Pwidth:MEcoupling 0 0.046 insert chi_b02Pwidth:MEcoupling 1 0.009 insert chi_b02Pwidth:MEcoupling 2 0.0015 insert chi_b02Pwidth:MEcoupling 3 0.9435 insert chi_b02Pwidth:ModeOn 0 1 insert chi_b02Pwidth:ModeOn 1 0 insert chi_b02Pwidth:ModeOn 2 0 insert chi_b02Pwidth:ModeOn 3 1 insert chi_b02Pwidth:MinimumMasses 0 10.0229 insert chi_b02Pwidth:MinimumMasses 1 9.45976 insert chi_b02Pwidth:MinimumMasses 2 10.1547 insert chi_b02Pwidth:MinimumMasses 3 0 insert chi_b02Pwidth:MEmass1 0 0 insert chi_b02Pwidth:MEmass1 1 0 insert chi_b02Pwidth:MEmass1 2 0 insert chi_b02Pwidth:MEmass1 3 0 insert chi_b02Pwidth:MEmass2 0 0 insert chi_b02Pwidth:MEmass2 1 0 insert chi_b02Pwidth:MEmass2 2 0 insert chi_b02Pwidth:MEmass2 3 0 insert chi_b02Pwidth:DecayModes 0 chi_b0(2P)->Upsilon(2S),gamma; insert chi_b02Pwidth:DecayModes 1 chi_b0(2P)->Upsilon,gamma; insert chi_b02Pwidth:DecayModes 2 chi_b0(2P)->Upsilon_1(1D),gamma; insert chi_b02Pwidth:DecayModes 3 chi_b0(2P)->g,g; insert chi_b02Pwidth:NumberofEntries 0 0 insert chi_b02Pwidth:NumberofEntries 1 0 insert chi_b02Pwidth:NumberofEntries 2 0 insert chi_b02Pwidth:NumberofEntries 3 0 newdef /Herwig/Particles/chi_b0(2P):Width_generator chi_b02Pwidth # create Herwig::GenericWidthGenerator psi(3770)width newdef psi(3770)width:Particle /Herwig/Particles/psi(3770) newdef psi(3770)width:Prefactor 1.00398 newdef psi(3770)width:BRNormalize 1 newdef psi(3770)width:BRMinimum 0.01 newdef psi(3770)width:Points 50 newdef psi(3770)width:InterpolationOrder 1 insert psi(3770)width:MEtype 0 1 insert psi(3770)width:MEtype 1 1 insert psi(3770)width:MEtype 2 2 insert psi(3770)width:MEtype 3 2 insert psi(3770)width:MEtype 4 2 insert psi(3770)width:MEtype 5 1 insert psi(3770)width:MEtype 6 1 insert psi(3770)width:MEtype 7 2 insert psi(3770)width:MEtype 8 1 insert psi(3770)width:MEcode 0 0 insert psi(3770)width:MEcode 1 0 insert psi(3770)width:MEcode 2 0 insert psi(3770)width:MEcode 3 0 insert psi(3770)width:MEcode 4 0 insert psi(3770)width:MEcode 5 2 insert psi(3770)width:MEcode 6 2 insert psi(3770)width:MEcode 7 0 insert psi(3770)width:MEcode 8 2 insert psi(3770)width:MEcoupling 0 12.7927 insert psi(3770)width:MEcoupling 1 12.8715 insert psi(3770)width:MEcoupling 2 1.0032 insert psi(3770)width:MEcoupling 3 1.08232 insert psi(3770)width:MEcoupling 4 0.86828 insert psi(3770)width:MEcoupling 5 0.00159035 insert psi(3770)width:MEcoupling 6 0.00159035 insert psi(3770)width:MEcoupling 7 0.996778 insert psi(3770)width:MEcoupling 8 0.00154294 insert psi(3770)width:ModeOn 0 1 insert psi(3770)width:ModeOn 1 1 insert psi(3770)width:ModeOn 2 0 insert psi(3770)width:ModeOn 3 0 insert psi(3770)width:ModeOn 4 0 insert psi(3770)width:ModeOn 5 0 insert psi(3770)width:ModeOn 6 0 insert psi(3770)width:ModeOn 7 0 insert psi(3770)width:ModeOn 8 0 insert psi(3770)width:MinimumMasses 0 3.7386 insert psi(3770)width:MinimumMasses 1 3.729 insert psi(3770)width:MinimumMasses 2 3.64348 insert psi(3770)width:MinimumMasses 3 3.37512 insert psi(3770)width:MinimumMasses 4 3.36594 insert psi(3770)width:MinimumMasses 5 0.00102 insert psi(3770)width:MinimumMasses 6 0.21132 insert psi(3770)width:MinimumMasses 7 1.53696 insert psi(3770)width:MinimumMasses 8 3.554 insert psi(3770)width:MEmass1 0 1.8693 insert psi(3770)width:MEmass1 1 1.8645 insert psi(3770)width:MEmass1 2 3.09692 insert psi(3770)width:MEmass1 3 0 insert psi(3770)width:MEmass1 4 0 insert psi(3770)width:MEmass1 5 0.00051 insert psi(3770)width:MEmass1 6 0.10566 insert psi(3770)width:MEmass1 7 1.01946 insert psi(3770)width:MEmass1 8 1.777 insert psi(3770)width:MEmass2 0 1.8693 insert psi(3770)width:MEmass2 1 1.8645 insert psi(3770)width:MEmass2 2 0.54751 insert psi(3770)width:MEmass2 3 0 insert psi(3770)width:MEmass2 4 0 insert psi(3770)width:MEmass2 5 0.00051 insert psi(3770)width:MEmass2 6 0.10566 insert psi(3770)width:MEmass2 7 0.54751 insert psi(3770)width:MEmass2 8 1.777 insert psi(3770)width:DecayModes 0 psi(3770)->D+,D-; insert psi(3770)width:DecayModes 1 psi(3770)->D0,Dbar0; insert psi(3770)width:DecayModes 2 psi(3770)->Jpsi,eta; insert psi(3770)width:DecayModes 3 psi(3770)->Jpsi,pi+,pi-; insert psi(3770)width:DecayModes 4 psi(3770)->Jpsi,pi0,pi0; insert psi(3770)width:DecayModes 5 psi(3770)->e-,e+; insert psi(3770)width:DecayModes 6 psi(3770)->mu-,mu+; insert psi(3770)width:DecayModes 7 psi(3770)->phi,eta; insert psi(3770)width:DecayModes 8 psi(3770)->tau-,tau+; insert psi(3770)width:InterpolationMasses 0 3.7294469 insert psi(3770)width:InterpolationMasses 1 3.7347735 insert psi(3770)width:InterpolationMasses 2 3.7401 insert psi(3770)width:InterpolationMasses 3 3.7454265 insert psi(3770)width:InterpolationMasses 4 3.7507531 insert psi(3770)width:InterpolationMasses 5 3.7560796 insert psi(3770)width:InterpolationMasses 6 3.7614061 insert psi(3770)width:InterpolationMasses 7 3.7667327 insert psi(3770)width:InterpolationMasses 8 3.7720592 insert psi(3770)width:InterpolationMasses 9 3.7773857 insert psi(3770)width:InterpolationMasses 10 3.7827122 insert psi(3770)width:InterpolationMasses 11 3.7880388 insert psi(3770)width:InterpolationMasses 12 3.7933653 insert psi(3770)width:InterpolationMasses 13 3.7986918 insert psi(3770)width:InterpolationMasses 14 3.8040184 insert psi(3770)width:InterpolationMasses 15 3.8093449 insert psi(3770)width:InterpolationMasses 16 3.8146714 insert psi(3770)width:InterpolationMasses 17 3.819998 insert psi(3770)width:InterpolationMasses 18 3.8253245 insert psi(3770)width:InterpolationMasses 19 3.830651 insert psi(3770)width:InterpolationMasses 20 3.8359776 insert psi(3770)width:InterpolationMasses 21 3.8413041 insert psi(3770)width:InterpolationMasses 22 3.8466306 insert psi(3770)width:InterpolationMasses 23 3.8519571 insert psi(3770)width:InterpolationMasses 24 3.8572837 insert psi(3770)width:InterpolationMasses 25 3.8626102 insert psi(3770)width:InterpolationMasses 26 3.8679367 insert psi(3770)width:InterpolationMasses 27 3.8732633 insert psi(3770)width:InterpolationMasses 28 3.8785898 insert psi(3770)width:InterpolationMasses 29 3.8839163 insert psi(3770)width:InterpolationMasses 30 3.8892429 insert psi(3770)width:InterpolationMasses 31 3.8945694 insert psi(3770)width:InterpolationMasses 32 3.8998959 insert psi(3770)width:InterpolationMasses 33 3.9052224 insert psi(3770)width:InterpolationMasses 34 3.910549 insert psi(3770)width:InterpolationMasses 35 3.9158755 insert psi(3770)width:InterpolationMasses 36 3.921202 insert psi(3770)width:InterpolationMasses 37 3.9265286 insert psi(3770)width:InterpolationMasses 38 3.9318551 insert psi(3770)width:InterpolationMasses 39 3.9371816 insert psi(3770)width:InterpolationMasses 40 3.9425082 insert psi(3770)width:InterpolationMasses 41 3.9478347 insert psi(3770)width:InterpolationMasses 42 3.9531612 insert psi(3770)width:InterpolationMasses 43 3.9584878 insert psi(3770)width:InterpolationMasses 44 3.9638143 insert psi(3770)width:InterpolationMasses 45 3.9691408 insert psi(3770)width:InterpolationMasses 46 3.9744673 insert psi(3770)width:InterpolationMasses 47 3.9797939 insert psi(3770)width:InterpolationMasses 48 3.9851204 insert psi(3770)width:InterpolationMasses 49 3.9904469 insert psi(3770)width:InterpolationMasses 50 3.9957735 insert psi(3770)width:InterpolationMasses 51 4.0011 insert psi(3770)width:InterpolationMasses 52 4.0064265 insert psi(3770)width:InterpolationMasses 53 4.0117531 insert psi(3770)width:InterpolationMasses 54 3.7401 insert psi(3770)width:InterpolationMasses 55 3.7454265 insert psi(3770)width:InterpolationMasses 56 3.7507531 insert psi(3770)width:InterpolationMasses 57 3.7560796 insert psi(3770)width:InterpolationMasses 58 3.7614061 insert psi(3770)width:InterpolationMasses 59 3.7667327 insert psi(3770)width:InterpolationMasses 60 3.7720592 insert psi(3770)width:InterpolationMasses 61 3.7773857 insert psi(3770)width:InterpolationMasses 62 3.7827122 insert psi(3770)width:InterpolationMasses 63 3.7880388 insert psi(3770)width:InterpolationMasses 64 3.7933653 insert psi(3770)width:InterpolationMasses 65 3.7986918 insert psi(3770)width:InterpolationMasses 66 3.8040184 insert psi(3770)width:InterpolationMasses 67 3.8093449 insert psi(3770)width:InterpolationMasses 68 3.8146714 insert psi(3770)width:InterpolationMasses 69 3.819998 insert psi(3770)width:InterpolationMasses 70 3.8253245 insert psi(3770)width:InterpolationMasses 71 3.830651 insert psi(3770)width:InterpolationMasses 72 3.8359776 insert psi(3770)width:InterpolationMasses 73 3.8413041 insert psi(3770)width:InterpolationMasses 74 3.8466306 insert psi(3770)width:InterpolationMasses 75 3.8519571 insert psi(3770)width:InterpolationMasses 76 3.8572837 insert psi(3770)width:InterpolationMasses 77 3.8626102 insert psi(3770)width:InterpolationMasses 78 3.8679367 insert psi(3770)width:InterpolationMasses 79 3.8732633 insert psi(3770)width:InterpolationMasses 80 3.8785898 insert psi(3770)width:InterpolationMasses 81 3.8839163 insert psi(3770)width:InterpolationMasses 82 3.8892429 insert psi(3770)width:InterpolationMasses 83 3.8945694 insert psi(3770)width:InterpolationMasses 84 3.8998959 insert psi(3770)width:InterpolationMasses 85 3.9052224 insert psi(3770)width:InterpolationMasses 86 3.910549 insert psi(3770)width:InterpolationMasses 87 3.9158755 insert psi(3770)width:InterpolationMasses 88 3.921202 insert psi(3770)width:InterpolationMasses 89 3.9265286 insert psi(3770)width:InterpolationMasses 90 3.9318551 insert psi(3770)width:InterpolationMasses 91 3.9371816 insert psi(3770)width:InterpolationMasses 92 3.9425082 insert psi(3770)width:InterpolationMasses 93 3.9478347 insert psi(3770)width:InterpolationMasses 94 3.9531612 insert psi(3770)width:InterpolationMasses 95 3.9584878 insert psi(3770)width:InterpolationMasses 96 3.9638143 insert psi(3770)width:InterpolationMasses 97 3.9691408 insert psi(3770)width:InterpolationMasses 98 3.9744673 insert psi(3770)width:InterpolationMasses 99 3.9797939 insert psi(3770)width:InterpolationMasses 100 3.9851204 insert psi(3770)width:InterpolationMasses 101 3.9904469 insert psi(3770)width:InterpolationMasses 102 3.9957735 insert psi(3770)width:InterpolationMasses 103 4.0011 insert psi(3770)width:InterpolationMasses 104 3.7401 insert psi(3770)width:InterpolationMasses 105 3.7454265 insert psi(3770)width:InterpolationMasses 106 3.7507531 insert psi(3770)width:InterpolationMasses 107 3.7560796 insert psi(3770)width:InterpolationMasses 108 3.7614061 insert psi(3770)width:InterpolationMasses 109 3.7667327 insert psi(3770)width:InterpolationMasses 110 3.7720592 insert psi(3770)width:InterpolationMasses 111 3.7773857 insert psi(3770)width:InterpolationMasses 112 3.7827122 insert psi(3770)width:InterpolationMasses 113 3.7880388 insert psi(3770)width:InterpolationMasses 114 3.7933653 insert psi(3770)width:InterpolationMasses 115 3.7986918 insert psi(3770)width:InterpolationMasses 116 3.8040184 insert psi(3770)width:InterpolationMasses 117 3.8093449 insert psi(3770)width:InterpolationMasses 118 3.8146714 insert psi(3770)width:InterpolationMasses 119 3.819998 insert psi(3770)width:InterpolationMasses 120 3.8253245 insert psi(3770)width:InterpolationMasses 121 3.830651 insert psi(3770)width:InterpolationMasses 122 3.8359776 insert psi(3770)width:InterpolationMasses 123 3.8413041 insert psi(3770)width:InterpolationMasses 124 3.8466306 insert psi(3770)width:InterpolationMasses 125 3.8519571 insert psi(3770)width:InterpolationMasses 126 3.8572837 insert psi(3770)width:InterpolationMasses 127 3.8626102 insert psi(3770)width:InterpolationMasses 128 3.8679367 insert psi(3770)width:InterpolationMasses 129 3.8732633 insert psi(3770)width:InterpolationMasses 130 3.8785898 insert psi(3770)width:InterpolationMasses 131 3.8839163 insert psi(3770)width:InterpolationMasses 132 3.8892429 insert psi(3770)width:InterpolationMasses 133 3.8945694 insert psi(3770)width:InterpolationMasses 134 3.8998959 insert psi(3770)width:InterpolationMasses 135 3.9052224 insert psi(3770)width:InterpolationMasses 136 3.910549 insert psi(3770)width:InterpolationMasses 137 3.9158755 insert psi(3770)width:InterpolationMasses 138 3.921202 insert psi(3770)width:InterpolationMasses 139 3.9265286 insert psi(3770)width:InterpolationMasses 140 3.9318551 insert psi(3770)width:InterpolationMasses 141 3.9371816 insert psi(3770)width:InterpolationMasses 142 3.9425082 insert psi(3770)width:InterpolationMasses 143 3.9478347 insert psi(3770)width:InterpolationMasses 144 3.9531612 insert psi(3770)width:InterpolationMasses 145 3.9584878 insert psi(3770)width:InterpolationMasses 146 3.9638143 insert psi(3770)width:InterpolationMasses 147 3.9691408 insert psi(3770)width:InterpolationMasses 148 3.9744673 insert psi(3770)width:InterpolationMasses 149 3.9797939 insert psi(3770)width:InterpolationMasses 150 3.9851204 insert psi(3770)width:InterpolationMasses 151 3.9904469 insert psi(3770)width:InterpolationMasses 152 3.9957735 insert psi(3770)width:InterpolationMasses 153 4.0011 insert psi(3770)width:InterpolationMasses 154 3.7294469 insert psi(3770)width:InterpolationMasses 155 3.7347735 insert psi(3770)width:InterpolationMasses 156 3.7401 insert psi(3770)width:InterpolationMasses 157 3.7454265 insert psi(3770)width:InterpolationMasses 158 3.7507531 insert psi(3770)width:InterpolationMasses 159 3.7560796 insert psi(3770)width:InterpolationMasses 160 3.7614061 insert psi(3770)width:InterpolationMasses 161 3.7667327 insert psi(3770)width:InterpolationMasses 162 3.7720592 insert psi(3770)width:InterpolationMasses 163 3.7773857 insert psi(3770)width:InterpolationMasses 164 3.7827122 insert psi(3770)width:InterpolationMasses 165 3.7880388 insert psi(3770)width:InterpolationMasses 166 3.7933653 insert psi(3770)width:InterpolationMasses 167 3.7986918 insert psi(3770)width:InterpolationMasses 168 3.8040184 insert psi(3770)width:InterpolationMasses 169 3.8093449 insert psi(3770)width:InterpolationMasses 170 3.8146714 insert psi(3770)width:InterpolationMasses 171 3.819998 insert psi(3770)width:InterpolationMasses 172 3.8253245 insert psi(3770)width:InterpolationMasses 173 3.830651 insert psi(3770)width:InterpolationMasses 174 3.8359776 insert psi(3770)width:InterpolationMasses 175 3.8413041 insert psi(3770)width:InterpolationMasses 176 3.8466306 insert psi(3770)width:InterpolationMasses 177 3.8519571 insert psi(3770)width:InterpolationMasses 178 3.8572837 insert psi(3770)width:InterpolationMasses 179 3.8626102 insert psi(3770)width:InterpolationMasses 180 3.8679367 insert psi(3770)width:InterpolationMasses 181 3.8732633 insert psi(3770)width:InterpolationMasses 182 3.8785898 insert psi(3770)width:InterpolationMasses 183 3.8839163 insert psi(3770)width:InterpolationMasses 184 3.8892429 insert psi(3770)width:InterpolationMasses 185 3.8945694 insert psi(3770)width:InterpolationMasses 186 3.8998959 insert psi(3770)width:InterpolationMasses 187 3.9052224 insert psi(3770)width:InterpolationMasses 188 3.910549 insert psi(3770)width:InterpolationMasses 189 3.9158755 insert psi(3770)width:InterpolationMasses 190 3.921202 insert psi(3770)width:InterpolationMasses 191 3.9265286 insert psi(3770)width:InterpolationMasses 192 3.9318551 insert psi(3770)width:InterpolationMasses 193 3.9371816 insert psi(3770)width:InterpolationMasses 194 3.9425082 insert psi(3770)width:InterpolationMasses 195 3.9478347 insert psi(3770)width:InterpolationMasses 196 3.9531612 insert psi(3770)width:InterpolationMasses 197 3.9584878 insert psi(3770)width:InterpolationMasses 198 3.9638143 insert psi(3770)width:InterpolationMasses 199 3.9691408 insert psi(3770)width:InterpolationMasses 200 3.9744673 insert psi(3770)width:InterpolationMasses 201 3.9797939 insert psi(3770)width:InterpolationMasses 202 3.9851204 insert psi(3770)width:InterpolationMasses 203 3.9904469 insert psi(3770)width:InterpolationMasses 204 3.9957735 insert psi(3770)width:InterpolationMasses 205 4.0011 insert psi(3770)width:InterpolationMasses 206 4.0064265 insert psi(3770)width:InterpolationMasses 207 4.0117531 insert psi(3770)width:InterpolationWidths 0 1.0932972e-05 insert psi(3770)width:InterpolationWidths 1 1.2034292e-05 insert psi(3770)width:InterpolationWidths 2 1.3177204e-05 insert psi(3770)width:InterpolationWidths 3 1.4361258e-05 insert psi(3770)width:InterpolationWidths 4 1.5586058e-05 insert psi(3770)width:InterpolationWidths 5 1.6851253e-05 insert psi(3770)width:InterpolationWidths 6 1.8156535e-05 insert psi(3770)width:InterpolationWidths 7 1.950163e-05 insert psi(3770)width:InterpolationWidths 8 2.0886298e-05 insert psi(3770)width:InterpolationWidths 9 2.2310325e-05 insert psi(3770)width:InterpolationWidths 10 2.3773521e-05 insert psi(3770)width:InterpolationWidths 11 2.5275721e-05 insert psi(3770)width:InterpolationWidths 12 2.6816775e-05 insert psi(3770)width:InterpolationWidths 13 2.8396555e-05 insert psi(3770)width:InterpolationWidths 14 3.0014947e-05 insert psi(3770)width:InterpolationWidths 15 3.1671852e-05 insert psi(3770)width:InterpolationWidths 16 3.3367183e-05 insert psi(3770)width:InterpolationWidths 17 3.5100865e-05 insert psi(3770)width:InterpolationWidths 18 3.6872835e-05 insert psi(3770)width:InterpolationWidths 19 3.8683039e-05 insert psi(3770)width:InterpolationWidths 20 4.0531431e-05 insert psi(3770)width:InterpolationWidths 21 4.2417976e-05 insert psi(3770)width:InterpolationWidths 22 4.4342644e-05 insert psi(3770)width:InterpolationWidths 23 4.6305413e-05 insert psi(3770)width:InterpolationWidths 24 4.8306266e-05 insert psi(3770)width:InterpolationWidths 25 5.0345194e-05 insert psi(3770)width:InterpolationWidths 26 5.2422193e-05 insert psi(3770)width:InterpolationWidths 27 5.4537263e-05 insert psi(3770)width:InterpolationWidths 28 5.6690409e-05 insert psi(3770)width:InterpolationWidths 29 5.888164e-05 insert psi(3770)width:InterpolationWidths 30 6.1110971e-05 insert psi(3770)width:InterpolationWidths 31 6.3378418e-05 insert psi(3770)width:InterpolationWidths 32 6.5684003e-05 insert psi(3770)width:InterpolationWidths 33 6.8027748e-05 insert psi(3770)width:InterpolationWidths 34 7.0409682e-05 insert psi(3770)width:InterpolationWidths 35 7.2829833e-05 insert psi(3770)width:InterpolationWidths 36 7.5288234e-05 insert psi(3770)width:InterpolationWidths 37 7.778492e-05 insert psi(3770)width:InterpolationWidths 38 8.0319928e-05 insert psi(3770)width:InterpolationWidths 39 8.2893296e-05 insert psi(3770)width:InterpolationWidths 40 8.5505066e-05 insert psi(3770)width:InterpolationWidths 41 8.815528e-05 insert psi(3770)width:InterpolationWidths 42 9.0843984e-05 insert psi(3770)width:InterpolationWidths 43 9.3571224e-05 insert psi(3770)width:InterpolationWidths 44 9.6337047e-05 insert psi(3770)width:InterpolationWidths 45 9.9141502e-05 insert psi(3770)width:InterpolationWidths 46 0.00010198464 insert psi(3770)width:InterpolationWidths 47 0.00010486651 insert psi(3770)width:InterpolationWidths 48 0.00010778717 insert psi(3770)width:InterpolationWidths 49 0.00011074668 insert psi(3770)width:InterpolationWidths 50 0.00011374507 insert psi(3770)width:InterpolationWidths 51 0.00011678242 insert psi(3770)width:InterpolationWidths 52 0.00011985878 insert psi(3770)width:InterpolationWidths 53 0.00012297421 insert psi(3770)width:InterpolationWidths 54 2.8614729e-05 insert psi(3770)width:InterpolationWidths 55 3.049162e-05 insert psi(3770)width:InterpolationWidths 56 3.2468339e-05 insert psi(3770)width:InterpolationWidths 57 3.4549015e-05 insert psi(3770)width:InterpolationWidths 58 3.6737903e-05 insert psi(3770)width:InterpolationWidths 59 3.9039383e-05 insert psi(3770)width:InterpolationWidths 60 4.1457964e-05 insert psi(3770)width:InterpolationWidths 61 4.3998287e-05 insert psi(3770)width:InterpolationWidths 62 4.6665126e-05 insert psi(3770)width:InterpolationWidths 63 4.946339e-05 insert psi(3770)width:InterpolationWidths 64 5.239813e-05 insert psi(3770)width:InterpolationWidths 65 5.5474534e-05 insert psi(3770)width:InterpolationWidths 66 5.8697935e-05 insert psi(3770)width:InterpolationWidths 67 6.2073813e-05 insert psi(3770)width:InterpolationWidths 68 6.5607796e-05 insert psi(3770)width:InterpolationWidths 69 6.9305663e-05 insert psi(3770)width:InterpolationWidths 70 7.3173345e-05 insert psi(3770)width:InterpolationWidths 71 7.7216932e-05 insert psi(3770)width:InterpolationWidths 72 8.1442671e-05 insert psi(3770)width:InterpolationWidths 73 8.5856971e-05 insert psi(3770)width:InterpolationWidths 74 9.0466404e-05 insert psi(3770)width:InterpolationWidths 75 9.5277711e-05 insert psi(3770)width:InterpolationWidths 76 0.0001002978 insert psi(3770)width:InterpolationWidths 77 0.00010553375 insert psi(3770)width:InterpolationWidths 78 0.00011099282 insert psi(3770)width:InterpolationWidths 79 0.00011668244 insert psi(3770)width:InterpolationWidths 80 0.00012261023 insert psi(3770)width:InterpolationWidths 81 0.00012878398 insert psi(3770)width:InterpolationWidths 82 0.00013521167 insert psi(3770)width:InterpolationWidths 83 0.00014190147 insert psi(3770)width:InterpolationWidths 84 0.00014886175 insert psi(3770)width:InterpolationWidths 85 0.00015610106 insert psi(3770)width:InterpolationWidths 86 0.00016362815 insert psi(3770)width:InterpolationWidths 87 0.00017145197 insert psi(3770)width:InterpolationWidths 88 0.00017958168 insert psi(3770)width:InterpolationWidths 89 0.00018802663 insert psi(3770)width:InterpolationWidths 90 0.0001967964 insert psi(3770)width:InterpolationWidths 91 0.00020590077 insert psi(3770)width:InterpolationWidths 92 0.00021534972 insert psi(3770)width:InterpolationWidths 93 0.00022515347 insert psi(3770)width:InterpolationWidths 94 0.00023532245 insert psi(3770)width:InterpolationWidths 95 0.00024586731 insert psi(3770)width:InterpolationWidths 96 0.00025679893 insert psi(3770)width:InterpolationWidths 97 0.00026812842 insert psi(3770)width:InterpolationWidths 98 0.00027986711 insert psi(3770)width:InterpolationWidths 99 0.00029202658 insert psi(3770)width:InterpolationWidths 100 0.00030461865 insert psi(3770)width:InterpolationWidths 101 0.00031765536 insert psi(3770)width:InterpolationWidths 102 0.00033114902 insert psi(3770)width:InterpolationWidths 103 0.00034511216 insert psi(3770)width:InterpolationWidths 104 1.4840545e-05 insert psi(3770)width:InterpolationWidths 105 1.5803023e-05 insert psi(3770)width:InterpolationWidths 106 1.6816211e-05 insert psi(3770)width:InterpolationWidths 107 1.7882192e-05 insert psi(3770)width:InterpolationWidths 108 1.9003109e-05 insert psi(3770)width:InterpolationWidths 109 2.0181172e-05 insert psi(3770)width:InterpolationWidths 110 2.1418651e-05 insert psi(3770)width:InterpolationWidths 111 2.2717885e-05 insert psi(3770)width:InterpolationWidths 112 2.4081279e-05 insert psi(3770)width:InterpolationWidths 113 2.5511307e-05 insert psi(3770)width:InterpolationWidths 114 2.7010512e-05 insert psi(3770)width:InterpolationWidths 115 2.8581506e-05 insert psi(3770)width:InterpolationWidths 116 3.0226976e-05 insert psi(3770)width:InterpolationWidths 117 3.1949679e-05 insert psi(3770)width:InterpolationWidths 118 3.3752449e-05 insert psi(3770)width:InterpolationWidths 119 3.5638194e-05 insert psi(3770)width:InterpolationWidths 120 3.7609901e-05 insert psi(3770)width:InterpolationWidths 121 3.9670633e-05 insert psi(3770)width:InterpolationWidths 122 4.1823533e-05 insert psi(3770)width:InterpolationWidths 123 4.4071826e-05 insert psi(3770)width:InterpolationWidths 124 4.6418819e-05 insert psi(3770)width:InterpolationWidths 125 4.8867901e-05 insert psi(3770)width:InterpolationWidths 126 5.1422548e-05 insert psi(3770)width:InterpolationWidths 127 5.408632e-05 insert psi(3770)width:InterpolationWidths 128 5.6862866e-05 insert psi(3770)width:InterpolationWidths 129 5.9755924e-05 insert psi(3770)width:InterpolationWidths 130 6.2769321e-05 insert psi(3770)width:InterpolationWidths 131 6.5906976e-05 insert psi(3770)width:InterpolationWidths 132 6.9172903e-05 insert psi(3770)width:InterpolationWidths 133 7.2571207e-05 insert psi(3770)width:InterpolationWidths 134 7.610609e-05 insert psi(3770)width:InterpolationWidths 135 7.9781854e-05 insert psi(3770)width:InterpolationWidths 136 8.3602895e-05 insert psi(3770)width:InterpolationWidths 137 8.7573711e-05 insert psi(3770)width:InterpolationWidths 138 9.1698903e-05 insert psi(3770)width:InterpolationWidths 139 9.5983173e-05 insert psi(3770)width:InterpolationWidths 140 0.00010043133 insert psi(3770)width:InterpolationWidths 141 0.00010504828 insert psi(3770)width:InterpolationWidths 142 0.00010983905 insert psi(3770)width:InterpolationWidths 143 0.00011480876 insert psi(3770)width:InterpolationWidths 144 0.00011996265 insert psi(3770)width:InterpolationWidths 145 0.00012530608 insert psi(3770)width:InterpolationWidths 146 0.0001308445 insert psi(3770)width:InterpolationWidths 147 0.0001365835 insert psi(3770)width:InterpolationWidths 148 0.00014252877 insert psi(3770)width:InterpolationWidths 149 0.00014868611 insert psi(3770)width:InterpolationWidths 150 0.00015506147 insert psi(3770)width:InterpolationWidths 151 0.00016166088 insert psi(3770)width:InterpolationWidths 152 0.00016849052 insert psi(3770)width:InterpolationWidths 153 0.0001755567 insert psi(3770)width:InterpolationWidths 154 6.8661612e-06 insert psi(3770)width:InterpolationWidths 155 6.9024504e-06 insert psi(3770)width:InterpolationWidths 156 6.9388559e-06 insert psi(3770)width:InterpolationWidths 157 6.9753777e-06 insert psi(3770)width:InterpolationWidths 158 7.0120161e-06 insert psi(3770)width:InterpolationWidths 159 7.0487712e-06 insert psi(3770)width:InterpolationWidths 160 7.0856432e-06 insert psi(3770)width:InterpolationWidths 161 7.1226323e-06 insert psi(3770)width:InterpolationWidths 162 7.1597385e-06 insert psi(3770)width:InterpolationWidths 163 7.1969621e-06 insert psi(3770)width:InterpolationWidths 164 7.2343032e-06 insert psi(3770)width:InterpolationWidths 165 7.271762e-06 insert psi(3770)width:InterpolationWidths 166 7.3093386e-06 insert psi(3770)width:InterpolationWidths 167 7.3470333e-06 insert psi(3770)width:InterpolationWidths 168 7.3848461e-06 insert psi(3770)width:InterpolationWidths 169 7.4227773e-06 insert psi(3770)width:InterpolationWidths 170 7.460827e-06 insert psi(3770)width:InterpolationWidths 171 7.4989953e-06 insert psi(3770)width:InterpolationWidths 172 7.5372824e-06 insert psi(3770)width:InterpolationWidths 173 7.5756885e-06 insert psi(3770)width:InterpolationWidths 174 7.6142138e-06 insert psi(3770)width:InterpolationWidths 175 7.6528583e-06 insert psi(3770)width:InterpolationWidths 176 7.6916223e-06 insert psi(3770)width:InterpolationWidths 177 7.730506e-06 insert psi(3770)width:InterpolationWidths 178 7.7695094e-06 insert psi(3770)width:InterpolationWidths 179 7.8086328e-06 insert psi(3770)width:InterpolationWidths 180 7.8478763e-06 insert psi(3770)width:InterpolationWidths 181 7.8872401e-06 insert psi(3770)width:InterpolationWidths 182 7.9267243e-06 insert psi(3770)width:InterpolationWidths 183 7.9663291e-06 insert psi(3770)width:InterpolationWidths 184 8.0060547e-06 insert psi(3770)width:InterpolationWidths 185 8.0459012e-06 insert psi(3770)width:InterpolationWidths 186 8.0858688e-06 insert psi(3770)width:InterpolationWidths 187 8.1259577e-06 insert psi(3770)width:InterpolationWidths 188 8.1661679e-06 insert psi(3770)width:InterpolationWidths 189 8.2064997e-06 insert psi(3770)width:InterpolationWidths 190 8.2469533e-06 insert psi(3770)width:InterpolationWidths 191 8.2875287e-06 insert psi(3770)width:InterpolationWidths 192 8.3282262e-06 insert psi(3770)width:InterpolationWidths 193 8.369046e-06 insert psi(3770)width:InterpolationWidths 194 8.4099881e-06 insert psi(3770)width:InterpolationWidths 195 8.4510527e-06 insert psi(3770)width:InterpolationWidths 196 8.4922401e-06 insert psi(3770)width:InterpolationWidths 197 8.5335503e-06 insert psi(3770)width:InterpolationWidths 198 8.5749836e-06 insert psi(3770)width:InterpolationWidths 199 8.6165401e-06 insert psi(3770)width:InterpolationWidths 200 8.6582199e-06 insert psi(3770)width:InterpolationWidths 201 8.7000232e-06 insert psi(3770)width:InterpolationWidths 202 8.7419502e-06 insert psi(3770)width:InterpolationWidths 203 8.7840011e-06 insert psi(3770)width:InterpolationWidths 204 8.8261759e-06 insert psi(3770)width:InterpolationWidths 205 8.868475e-06 insert psi(3770)width:InterpolationWidths 206 8.9108983e-06 insert psi(3770)width:InterpolationWidths 207 8.9534462e-06 insert psi(3770)width:NumberofEntries 0 0 insert psi(3770)width:NumberofEntries 1 0 insert psi(3770)width:NumberofEntries 2 54 insert psi(3770)width:NumberofEntries 3 104 insert psi(3770)width:NumberofEntries 4 154 insert psi(3770)width:NumberofEntries 5 154 insert psi(3770)width:NumberofEntries 6 154 insert psi(3770)width:NumberofEntries 7 208 insert psi(3770)width:NumberofEntries 8 208 newdef /Herwig/Particles/psi(3770):Width_generator psi(3770)width # create Herwig::GenericWidthGenerator ZWidth newdef ZWidth:Particle /Herwig/Particles/Z0 newdef ZWidth:Prefactor 0.0909091 newdef ZWidth:BRNormalize 1 newdef ZWidth:BRMinimum 0.01 newdef ZWidth:Points 50 newdef ZWidth:InterpolationOrder 1 insert ZWidth:MEtype 0 1 insert ZWidth:MEtype 1 1 insert ZWidth:MEtype 2 1 insert ZWidth:MEtype 3 1 insert ZWidth:MEtype 4 1 insert ZWidth:MEtype 5 1 insert ZWidth:MEtype 6 1 insert ZWidth:MEtype 7 1 insert ZWidth:MEtype 8 1 insert ZWidth:MEtype 9 1 insert ZWidth:MEtype 10 1 insert ZWidth:MEcode 0 -1 insert ZWidth:MEcode 1 -1 insert ZWidth:MEcode 2 -1 insert ZWidth:MEcode 3 -1 insert ZWidth:MEcode 4 -1 insert ZWidth:MEcode 5 -1 insert ZWidth:MEcode 6 -1 insert ZWidth:MEcode 7 -1 insert ZWidth:MEcode 8 -1 insert ZWidth:MEcode 9 -1 insert ZWidth:MEcode 10 -1 insert ZWidth:MEcoupling 0 0.390256 insert ZWidth:MEcoupling 1 0.345178 insert ZWidth:MEcoupling 2 0.392195 insert ZWidth:MEcoupling 3 0.183409 insert ZWidth:MEcoupling 4 0.183409 insert ZWidth:MEcoupling 5 0.25871 insert ZWidth:MEcoupling 6 0.25871 insert ZWidth:MEcoupling 7 0.25871 insert ZWidth:MEcoupling 8 0.392194 insert ZWidth:MEcoupling 9 0.183202 insert ZWidth:MEcoupling 10 0.345377 insert ZWidth:ModeOn 0 1 insert ZWidth:ModeOn 1 1 insert ZWidth:ModeOn 2 1 insert ZWidth:ModeOn 3 1 insert ZWidth:ModeOn 4 1 insert ZWidth:ModeOn 5 1 insert ZWidth:ModeOn 6 1 insert ZWidth:ModeOn 7 1 insert ZWidth:ModeOn 8 1 insert ZWidth:ModeOn 9 1 insert ZWidth:ModeOn 10 1 insert ZWidth:MinimumMasses 0 9 insert ZWidth:MinimumMasses 1 2.7 insert ZWidth:MinimumMasses 2 0.0198 insert ZWidth:MinimumMasses 3 0.00102 insert ZWidth:MinimumMasses 4 0.21132 insert ZWidth:MinimumMasses 5 0 insert ZWidth:MinimumMasses 6 0 insert ZWidth:MinimumMasses 7 0 insert ZWidth:MinimumMasses 8 0.398 insert ZWidth:MinimumMasses 9 3.554 insert ZWidth:MinimumMasses 10 0.0112 insert ZWidth:MEmass1 0 4.5 insert ZWidth:MEmass1 1 1.35 insert ZWidth:MEmass1 2 0.0099 insert ZWidth:MEmass1 3 0.00051 insert ZWidth:MEmass1 4 0.10566 insert ZWidth:MEmass1 5 0 insert ZWidth:MEmass1 6 0 insert ZWidth:MEmass1 7 0 insert ZWidth:MEmass1 8 0.199 insert ZWidth:MEmass1 9 1.777 insert ZWidth:MEmass1 10 0.0056 insert ZWidth:MEmass2 0 4.5 insert ZWidth:MEmass2 1 1.35 insert ZWidth:MEmass2 2 0.0099 insert ZWidth:MEmass2 3 0.00051 insert ZWidth:MEmass2 4 0.10566 insert ZWidth:MEmass2 5 0 insert ZWidth:MEmass2 6 0 insert ZWidth:MEmass2 7 0 insert ZWidth:MEmass2 8 0.199 insert ZWidth:MEmass2 9 1.777 insert ZWidth:MEmass2 10 0.0056 insert ZWidth:DecayModes 0 Z0->b,bbar; insert ZWidth:DecayModes 1 Z0->c,cbar; insert ZWidth:DecayModes 2 Z0->d,dbar; insert ZWidth:DecayModes 3 Z0->e-,e+; insert ZWidth:DecayModes 4 Z0->mu-,mu+; insert ZWidth:DecayModes 5 Z0->nu_e,nu_ebar; insert ZWidth:DecayModes 6 Z0->nu_mu,nu_mubar; insert ZWidth:DecayModes 7 Z0->nu_tau,nu_taubar; insert ZWidth:DecayModes 8 Z0->s,sbar; insert ZWidth:DecayModes 9 Z0->tau-,tau+; insert ZWidth:DecayModes 10 Z0->u,ubar; insert ZWidth:NumberofEntries 0 0 insert ZWidth:NumberofEntries 1 0 insert ZWidth:NumberofEntries 2 0 insert ZWidth:NumberofEntries 3 0 insert ZWidth:NumberofEntries 4 0 insert ZWidth:NumberofEntries 5 0 insert ZWidth:NumberofEntries 6 0 insert ZWidth:NumberofEntries 7 0 insert ZWidth:NumberofEntries 8 0 insert ZWidth:NumberofEntries 9 0 insert ZWidth:NumberofEntries 10 0 newdef /Herwig/Particles/Z0:Width_generator ZWidth # create Herwig::GenericWidthGenerator WWidth newdef WWidth:Particle /Herwig/Particles/W+ newdef WWidth:Prefactor 0.142857 newdef WWidth:BRNormalize 1 newdef WWidth:BRMinimum 0.01 newdef WWidth:Points 50 newdef WWidth:InterpolationOrder 1 insert WWidth:MEtype 0 1 insert WWidth:MEtype 1 1 insert WWidth:MEtype 2 1 insert WWidth:MEtype 3 1 insert WWidth:MEtype 4 1 insert WWidth:MEtype 5 1 insert WWidth:MEtype 6 1 insert WWidth:MEtype 7 1 insert WWidth:MEcode 0 -1 insert WWidth:MEcode 1 -1 insert WWidth:MEcode 2 -1 insert WWidth:MEcode 3 -1 insert WWidth:MEcode 4 -1 insert WWidth:MEcode 5 -1 insert WWidth:MEcode 6 -1 insert WWidth:MEcode 7 -1 insert WWidth:MEcoupling 0 0.0226274 insert WWidth:MEcoupling 1 0.12809 insert WWidth:MEcoupling 2 0.566531 insert WWidth:MEcoupling 3 0.328723 insert WWidth:MEcoupling 4 0.328723 insert WWidth:MEcoupling 5 0.328603 insert WWidth:MEcoupling 6 0.128219 insert WWidth:MEcoupling 7 0.567086 insert WWidth:ModeOn 0 0 insert WWidth:ModeOn 1 1 insert WWidth:ModeOn 2 1 insert WWidth:ModeOn 3 1 insert WWidth:ModeOn 4 1 insert WWidth:ModeOn 5 1 insert WWidth:ModeOn 6 1 insert WWidth:ModeOn 7 1 insert WWidth:MinimumMasses 0 5.85 insert WWidth:MinimumMasses 1 1.3599 insert WWidth:MinimumMasses 2 1.549 insert WWidth:MinimumMasses 3 0.00051 insert WWidth:MinimumMasses 4 0.10566 insert WWidth:MinimumMasses 5 1.777 insert WWidth:MinimumMasses 6 0.2046 insert WWidth:MinimumMasses 7 0.0155 insert WWidth:MEmass1 0 4.5 insert WWidth:MEmass1 1 0.0099 insert WWidth:MEmass1 2 0.199 insert WWidth:MEmass1 3 0.00051 insert WWidth:MEmass1 4 0.10566 insert WWidth:MEmass1 5 1.777 insert WWidth:MEmass1 6 0.199 insert WWidth:MEmass1 7 0.0099 insert WWidth:MEmass2 0 1.35 insert WWidth:MEmass2 1 1.35 insert WWidth:MEmass2 2 1.35 insert WWidth:MEmass2 3 0 insert WWidth:MEmass2 4 0 insert WWidth:MEmass2 5 0 insert WWidth:MEmass2 6 0.0056 insert WWidth:MEmass2 7 0.0056 insert WWidth:DecayModes 0 W+->bbar,c; insert WWidth:DecayModes 1 W+->c,dbar; insert WWidth:DecayModes 2 W+->c,sbar; insert WWidth:DecayModes 3 W+->nu_e,e+; insert WWidth:DecayModes 4 W+->nu_mu,mu+; insert WWidth:DecayModes 5 W+->nu_tau,tau+; insert WWidth:DecayModes 6 W+->sbar,u; insert WWidth:DecayModes 7 W+->u,dbar; insert WWidth:NumberofEntries 0 0 insert WWidth:NumberofEntries 1 0 insert WWidth:NumberofEntries 2 0 insert WWidth:NumberofEntries 3 0 insert WWidth:NumberofEntries 4 0 insert WWidth:NumberofEntries 5 0 insert WWidth:NumberofEntries 6 0 insert WWidth:NumberofEntries 7 0 newdef /Herwig/Particles/W+:Width_generator WWidth newdef /Herwig/Particles/W-:Width_generator WWidth # create Herwig::GenericWidthGenerator Upsilon_1(1D)width newdef Upsilon_1(1D)width:Particle /Herwig/Particles/Upsilon_1(1D) newdef Upsilon_1(1D)width:Prefactor 1.002 newdef Upsilon_1(1D)width:BRNormalize 1 newdef Upsilon_1(1D)width:BRMinimum 0.01 newdef Upsilon_1(1D)width:Points 50 newdef Upsilon_1(1D)width:InterpolationOrder 1 insert Upsilon_1(1D)width:MEtype 0 0 insert Upsilon_1(1D)width:MEtype 1 0 insert Upsilon_1(1D)width:MEtype 2 0 insert Upsilon_1(1D)width:MEtype 3 0 insert Upsilon_1(1D)width:MEtype 4 0 insert Upsilon_1(1D)width:MEtype 5 0 insert Upsilon_1(1D)width:MEcode 0 0 insert Upsilon_1(1D)width:MEcode 1 0 insert Upsilon_1(1D)width:MEcode 2 0 insert Upsilon_1(1D)width:MEcode 3 0 insert Upsilon_1(1D)width:MEcode 4 0 insert Upsilon_1(1D)width:MEcode 5 0 insert Upsilon_1(1D)width:MEcoupling 0 0.001333 insert Upsilon_1(1D)width:MEcoupling 1 0.000667 insert Upsilon_1(1D)width:MEcoupling 2 0.602 insert Upsilon_1(1D)width:MEcoupling 3 0.318 insert Upsilon_1(1D)width:MEcoupling 4 0.016 insert Upsilon_1(1D)width:MEcoupling 5 0.062 insert Upsilon_1(1D)width:ModeOn 0 0 insert Upsilon_1(1D)width:ModeOn 1 0 insert Upsilon_1(1D)width:ModeOn 2 1 insert Upsilon_1(1D)width:ModeOn 3 1 insert Upsilon_1(1D)width:ModeOn 4 1 insert Upsilon_1(1D)width:ModeOn 5 1 insert Upsilon_1(1D)width:MinimumMasses 0 9.7389 insert Upsilon_1(1D)width:MinimumMasses 1 9.72972 insert Upsilon_1(1D)width:MinimumMasses 2 9.85127 insert Upsilon_1(1D)width:MinimumMasses 3 9.89207 insert Upsilon_1(1D)width:MinimumMasses 4 9.91051 insert Upsilon_1(1D)width:MinimumMasses 5 0 insert Upsilon_1(1D)width:MEmass1 0 0 insert Upsilon_1(1D)width:MEmass1 1 0 insert Upsilon_1(1D)width:MEmass1 2 0 insert Upsilon_1(1D)width:MEmass1 3 0 insert Upsilon_1(1D)width:MEmass1 4 0 insert Upsilon_1(1D)width:MEmass1 5 0 insert Upsilon_1(1D)width:MEmass2 0 0 insert Upsilon_1(1D)width:MEmass2 1 0 insert Upsilon_1(1D)width:MEmass2 2 0 insert Upsilon_1(1D)width:MEmass2 3 0 insert Upsilon_1(1D)width:MEmass2 4 0 insert Upsilon_1(1D)width:MEmass2 5 0 insert Upsilon_1(1D)width:DecayModes 0 Upsilon_1(1D)->Upsilon,pi+,pi-; insert Upsilon_1(1D)width:DecayModes 1 Upsilon_1(1D)->Upsilon,pi0,pi0; insert Upsilon_1(1D)width:DecayModes 2 Upsilon_1(1D)->chi_b0,gamma; insert Upsilon_1(1D)width:DecayModes 3 Upsilon_1(1D)->chi_b1,gamma; insert Upsilon_1(1D)width:DecayModes 4 Upsilon_1(1D)->chi_b2,gamma; insert Upsilon_1(1D)width:DecayModes 5 Upsilon_1(1D)->g,g,g; insert Upsilon_1(1D)width:NumberofEntries 0 0 insert Upsilon_1(1D)width:NumberofEntries 1 0 insert Upsilon_1(1D)width:NumberofEntries 2 0 insert Upsilon_1(1D)width:NumberofEntries 3 0 insert Upsilon_1(1D)width:NumberofEntries 4 0 insert Upsilon_1(1D)width:NumberofEntries 5 0 newdef /Herwig/Particles/Upsilon_1(1D):Width_generator Upsilon_1(1D)width # create Herwig::GenericWidthGenerator eta(1405)width newdef eta(1405)width:Particle /Herwig/Particles/eta(1405) newdef eta(1405)width:Prefactor 0.999302 newdef eta(1405)width:BRNormalize 1 newdef eta(1405)width:BRMinimum 0.01 newdef eta(1405)width:Points 50 newdef eta(1405)width:InterpolationOrder 1 insert eta(1405)width:MEtype 0 2 insert eta(1405)width:MEtype 1 2 insert eta(1405)width:MEtype 2 2 insert eta(1405)width:MEtype 3 2 insert eta(1405)width:MEtype 4 2 insert eta(1405)width:MEtype 5 2 insert eta(1405)width:MEtype 6 2 insert eta(1405)width:MEtype 7 2 insert eta(1405)width:MEcode 0 0 insert eta(1405)width:MEcode 1 0 insert eta(1405)width:MEcode 2 0 insert eta(1405)width:MEcode 3 0 insert eta(1405)width:MEcode 4 0 insert eta(1405)width:MEcode 5 0 insert eta(1405)width:MEcode 6 0 insert eta(1405)width:MEcode 7 0 insert eta(1405)width:MEcoupling 0 0.876915 insert eta(1405)width:MEcoupling 1 0.876915 insert eta(1405)width:MEcoupling 2 1.12543 insert eta(1405)width:MEcoupling 3 1.12543 insert eta(1405)width:MEcoupling 4 1.00438 insert eta(1405)width:MEcoupling 5 1.00438 insert eta(1405)width:MEcoupling 6 0.996445 insert eta(1405)width:MEcoupling 7 0.99486 insert eta(1405)width:ModeOn 0 1 insert eta(1405)width:ModeOn 1 1 insert eta(1405)width:ModeOn 2 1 insert eta(1405)width:ModeOn 3 1 insert eta(1405)width:ModeOn 4 1 insert eta(1405)width:ModeOn 5 1 insert eta(1405)width:ModeOn 6 1 insert eta(1405)width:ModeOn 7 1 insert eta(1405)width:MinimumMasses 0 1.13534 insert eta(1405)width:MinimumMasses 1 1.13534 insert eta(1405)width:MinimumMasses 2 1.14365 insert eta(1405)width:MinimumMasses 3 1.14365 insert eta(1405)width:MinimumMasses 4 0.89857 insert eta(1405)width:MinimumMasses 5 0.89857 insert eta(1405)width:MinimumMasses 6 0.893978 insert eta(1405)width:MinimumMasses 7 0.857497 insert eta(1405)width:MEmass1 0 0.493677 insert eta(1405)width:MEmass1 1 0.493677 insert eta(1405)width:MEmass1 2 0.497648 insert eta(1405)width:MEmass1 3 0.497648 insert eta(1405)width:MEmass1 4 0.999 insert eta(1405)width:MEmass1 5 0.999 insert eta(1405)width:MEmass1 6 0.999 insert eta(1405)width:MEmass1 7 0.54751 insert eta(1405)width:MEmass2 0 0.89166 insert eta(1405)width:MEmass2 1 0.89166 insert eta(1405)width:MEmass2 2 0.896 insert eta(1405)width:MEmass2 3 0.896 insert eta(1405)width:MEmass2 4 0.13957 insert eta(1405)width:MEmass2 5 0.13957 insert eta(1405)width:MEmass2 6 0.134978 insert eta(1405)width:MEmass2 7 0.86 insert eta(1405)width:DecayModes 0 eta(1405)->K*+,K-; insert eta(1405)width:DecayModes 1 eta(1405)->K*-,K+; insert eta(1405)width:DecayModes 2 eta(1405)->K*0,Kbar0; insert eta(1405)width:DecayModes 3 eta(1405)->K*bar0,K0; insert eta(1405)width:DecayModes 4 eta(1405)->a_0+,pi-; insert eta(1405)width:DecayModes 5 eta(1405)->a_0-,pi+; insert eta(1405)width:DecayModes 6 eta(1405)->a_00,pi0; insert eta(1405)width:DecayModes 7 eta(1405)->sigma,eta; insert eta(1405)width:InterpolationMasses 0 1.1230143 insert eta(1405)width:InterpolationMasses 1 1.135337 insert eta(1405)width:InterpolationMasses 2 1.1543 insert eta(1405)width:InterpolationMasses 3 1.1699429 insert eta(1405)width:InterpolationMasses 4 1.1855857 insert eta(1405)width:InterpolationMasses 5 1.2012286 insert eta(1405)width:InterpolationMasses 6 1.2168714 insert eta(1405)width:InterpolationMasses 7 1.2325143 insert eta(1405)width:InterpolationMasses 8 1.2481571 insert eta(1405)width:InterpolationMasses 9 1.2638 insert eta(1405)width:InterpolationMasses 10 1.2794429 insert eta(1405)width:InterpolationMasses 11 1.2950857 insert eta(1405)width:InterpolationMasses 12 1.3107286 insert eta(1405)width:InterpolationMasses 13 1.3263714 insert eta(1405)width:InterpolationMasses 14 1.3420143 insert eta(1405)width:InterpolationMasses 15 1.3576571 insert eta(1405)width:InterpolationMasses 16 1.3733 insert eta(1405)width:InterpolationMasses 17 1.3889429 insert eta(1405)width:InterpolationMasses 18 1.4045857 insert eta(1405)width:InterpolationMasses 19 1.4202286 insert eta(1405)width:InterpolationMasses 20 1.4358714 insert eta(1405)width:InterpolationMasses 21 1.4515143 insert eta(1405)width:InterpolationMasses 22 1.4671571 insert eta(1405)width:InterpolationMasses 23 1.4828 insert eta(1405)width:InterpolationMasses 24 1.4984429 insert eta(1405)width:InterpolationMasses 25 1.5140857 insert eta(1405)width:InterpolationMasses 26 1.5297286 insert eta(1405)width:InterpolationMasses 27 1.5453714 insert eta(1405)width:InterpolationMasses 28 1.5610143 insert eta(1405)width:InterpolationMasses 29 1.5766571 insert eta(1405)width:InterpolationMasses 30 1.5923 insert eta(1405)width:InterpolationMasses 31 1.6079429 insert eta(1405)width:InterpolationMasses 32 1.6235857 insert eta(1405)width:InterpolationMasses 33 1.6392286 insert eta(1405)width:InterpolationMasses 34 1.6548714 insert eta(1405)width:InterpolationMasses 35 1.6705143 insert eta(1405)width:InterpolationMasses 36 1.6861571 insert eta(1405)width:InterpolationMasses 37 1.7018 insert eta(1405)width:InterpolationMasses 38 1.7174429 insert eta(1405)width:InterpolationMasses 39 1.7330857 insert eta(1405)width:InterpolationMasses 40 1.7487286 insert eta(1405)width:InterpolationMasses 41 1.7643714 insert eta(1405)width:InterpolationMasses 42 1.7800143 insert eta(1405)width:InterpolationMasses 43 1.7956571 insert eta(1405)width:InterpolationMasses 44 1.8113 insert eta(1405)width:InterpolationMasses 45 1.8269429 insert eta(1405)width:InterpolationMasses 46 1.8425857 insert eta(1405)width:InterpolationMasses 47 1.8582286 insert eta(1405)width:InterpolationMasses 48 1.8738714 insert eta(1405)width:InterpolationMasses 49 1.8895143 insert eta(1405)width:InterpolationMasses 50 1.9051571 insert eta(1405)width:InterpolationMasses 51 1.9208 insert eta(1405)width:InterpolationMasses 52 1.9364429 insert eta(1405)width:InterpolationMasses 53 1.9520857 insert eta(1405)width:InterpolationMasses 54 1.1230143 insert eta(1405)width:InterpolationMasses 55 1.135337 insert eta(1405)width:InterpolationMasses 56 1.1543 insert eta(1405)width:InterpolationMasses 57 1.1699429 insert eta(1405)width:InterpolationMasses 58 1.1855857 insert eta(1405)width:InterpolationMasses 59 1.2012286 insert eta(1405)width:InterpolationMasses 60 1.2168714 insert eta(1405)width:InterpolationMasses 61 1.2325143 insert eta(1405)width:InterpolationMasses 62 1.2481571 insert eta(1405)width:InterpolationMasses 63 1.2638 insert eta(1405)width:InterpolationMasses 64 1.2794429 insert eta(1405)width:InterpolationMasses 65 1.2950857 insert eta(1405)width:InterpolationMasses 66 1.3107286 insert eta(1405)width:InterpolationMasses 67 1.3263714 insert eta(1405)width:InterpolationMasses 68 1.3420143 insert eta(1405)width:InterpolationMasses 69 1.3576571 insert eta(1405)width:InterpolationMasses 70 1.3733 insert eta(1405)width:InterpolationMasses 71 1.3889429 insert eta(1405)width:InterpolationMasses 72 1.4045857 insert eta(1405)width:InterpolationMasses 73 1.4202286 insert eta(1405)width:InterpolationMasses 74 1.4358714 insert eta(1405)width:InterpolationMasses 75 1.4515143 insert eta(1405)width:InterpolationMasses 76 1.4671571 insert eta(1405)width:InterpolationMasses 77 1.4828 insert eta(1405)width:InterpolationMasses 78 1.4984429 insert eta(1405)width:InterpolationMasses 79 1.5140857 insert eta(1405)width:InterpolationMasses 80 1.5297286 insert eta(1405)width:InterpolationMasses 81 1.5453714 insert eta(1405)width:InterpolationMasses 82 1.5610143 insert eta(1405)width:InterpolationMasses 83 1.5766571 insert eta(1405)width:InterpolationMasses 84 1.5923 insert eta(1405)width:InterpolationMasses 85 1.6079429 insert eta(1405)width:InterpolationMasses 86 1.6235857 insert eta(1405)width:InterpolationMasses 87 1.6392286 insert eta(1405)width:InterpolationMasses 88 1.6548714 insert eta(1405)width:InterpolationMasses 89 1.6705143 insert eta(1405)width:InterpolationMasses 90 1.6861571 insert eta(1405)width:InterpolationMasses 91 1.7018 insert eta(1405)width:InterpolationMasses 92 1.7174429 insert eta(1405)width:InterpolationMasses 93 1.7330857 insert eta(1405)width:InterpolationMasses 94 1.7487286 insert eta(1405)width:InterpolationMasses 95 1.7643714 insert eta(1405)width:InterpolationMasses 96 1.7800143 insert eta(1405)width:InterpolationMasses 97 1.7956571 insert eta(1405)width:InterpolationMasses 98 1.8113 insert eta(1405)width:InterpolationMasses 99 1.8269429 insert eta(1405)width:InterpolationMasses 100 1.8425857 insert eta(1405)width:InterpolationMasses 101 1.8582286 insert eta(1405)width:InterpolationMasses 102 1.8738714 insert eta(1405)width:InterpolationMasses 103 1.8895143 insert eta(1405)width:InterpolationMasses 104 1.9051571 insert eta(1405)width:InterpolationMasses 105 1.9208 insert eta(1405)width:InterpolationMasses 106 1.9364429 insert eta(1405)width:InterpolationMasses 107 1.9520857 insert eta(1405)width:InterpolationMasses 108 1.1230143 insert eta(1405)width:InterpolationMasses 109 1.143648 insert eta(1405)width:InterpolationMasses 110 1.1543 insert eta(1405)width:InterpolationMasses 111 1.1699429 insert eta(1405)width:InterpolationMasses 112 1.1855857 insert eta(1405)width:InterpolationMasses 113 1.2012286 insert eta(1405)width:InterpolationMasses 114 1.2168714 insert eta(1405)width:InterpolationMasses 115 1.2325143 insert eta(1405)width:InterpolationMasses 116 1.2481571 insert eta(1405)width:InterpolationMasses 117 1.2638 insert eta(1405)width:InterpolationMasses 118 1.2794429 insert eta(1405)width:InterpolationMasses 119 1.2950857 insert eta(1405)width:InterpolationMasses 120 1.3107286 insert eta(1405)width:InterpolationMasses 121 1.3263714 insert eta(1405)width:InterpolationMasses 122 1.3420143 insert eta(1405)width:InterpolationMasses 123 1.3576571 insert eta(1405)width:InterpolationMasses 124 1.3733 insert eta(1405)width:InterpolationMasses 125 1.3889429 insert eta(1405)width:InterpolationMasses 126 1.4045857 insert eta(1405)width:InterpolationMasses 127 1.4202286 insert eta(1405)width:InterpolationMasses 128 1.4358714 insert eta(1405)width:InterpolationMasses 129 1.4515143 insert eta(1405)width:InterpolationMasses 130 1.4671571 insert eta(1405)width:InterpolationMasses 131 1.4828 insert eta(1405)width:InterpolationMasses 132 1.4984429 insert eta(1405)width:InterpolationMasses 133 1.5140857 insert eta(1405)width:InterpolationMasses 134 1.5297286 insert eta(1405)width:InterpolationMasses 135 1.5453714 insert eta(1405)width:InterpolationMasses 136 1.5610143 insert eta(1405)width:InterpolationMasses 137 1.5766571 insert eta(1405)width:InterpolationMasses 138 1.5923 insert eta(1405)width:InterpolationMasses 139 1.6079429 insert eta(1405)width:InterpolationMasses 140 1.6235857 insert eta(1405)width:InterpolationMasses 141 1.6392286 insert eta(1405)width:InterpolationMasses 142 1.6548714 insert eta(1405)width:InterpolationMasses 143 1.6705143 insert eta(1405)width:InterpolationMasses 144 1.6861571 insert eta(1405)width:InterpolationMasses 145 1.7018 insert eta(1405)width:InterpolationMasses 146 1.7174429 insert eta(1405)width:InterpolationMasses 147 1.7330857 insert eta(1405)width:InterpolationMasses 148 1.7487286 insert eta(1405)width:InterpolationMasses 149 1.7643714 insert eta(1405)width:InterpolationMasses 150 1.7800143 insert eta(1405)width:InterpolationMasses 151 1.7956571 insert eta(1405)width:InterpolationMasses 152 1.8113 insert eta(1405)width:InterpolationMasses 153 1.8269429 insert eta(1405)width:InterpolationMasses 154 1.8425857 insert eta(1405)width:InterpolationMasses 155 1.8582286 insert eta(1405)width:InterpolationMasses 156 1.8738714 insert eta(1405)width:InterpolationMasses 157 1.8895143 insert eta(1405)width:InterpolationMasses 158 1.9051571 insert eta(1405)width:InterpolationMasses 159 1.9208 insert eta(1405)width:InterpolationMasses 160 1.9364429 insert eta(1405)width:InterpolationMasses 161 1.9520857 insert eta(1405)width:InterpolationMasses 162 1.1230143 insert eta(1405)width:InterpolationMasses 163 1.143648 insert eta(1405)width:InterpolationMasses 164 1.1543 insert eta(1405)width:InterpolationMasses 165 1.1699429 insert eta(1405)width:InterpolationMasses 166 1.1855857 insert eta(1405)width:InterpolationMasses 167 1.2012286 insert eta(1405)width:InterpolationMasses 168 1.2168714 insert eta(1405)width:InterpolationMasses 169 1.2325143 insert eta(1405)width:InterpolationMasses 170 1.2481571 insert eta(1405)width:InterpolationMasses 171 1.2638 insert eta(1405)width:InterpolationMasses 172 1.2794429 insert eta(1405)width:InterpolationMasses 173 1.2950857 insert eta(1405)width:InterpolationMasses 174 1.3107286 insert eta(1405)width:InterpolationMasses 175 1.3263714 insert eta(1405)width:InterpolationMasses 176 1.3420143 insert eta(1405)width:InterpolationMasses 177 1.3576571 insert eta(1405)width:InterpolationMasses 178 1.3733 insert eta(1405)width:InterpolationMasses 179 1.3889429 insert eta(1405)width:InterpolationMasses 180 1.4045857 insert eta(1405)width:InterpolationMasses 181 1.4202286 insert eta(1405)width:InterpolationMasses 182 1.4358714 insert eta(1405)width:InterpolationMasses 183 1.4515143 insert eta(1405)width:InterpolationMasses 184 1.4671571 insert eta(1405)width:InterpolationMasses 185 1.4828 insert eta(1405)width:InterpolationMasses 186 1.4984429 insert eta(1405)width:InterpolationMasses 187 1.5140857 insert eta(1405)width:InterpolationMasses 188 1.5297286 insert eta(1405)width:InterpolationMasses 189 1.5453714 insert eta(1405)width:InterpolationMasses 190 1.5610143 insert eta(1405)width:InterpolationMasses 191 1.5766571 insert eta(1405)width:InterpolationMasses 192 1.5923 insert eta(1405)width:InterpolationMasses 193 1.6079429 insert eta(1405)width:InterpolationMasses 194 1.6235857 insert eta(1405)width:InterpolationMasses 195 1.6392286 insert eta(1405)width:InterpolationMasses 196 1.6548714 insert eta(1405)width:InterpolationMasses 197 1.6705143 insert eta(1405)width:InterpolationMasses 198 1.6861571 insert eta(1405)width:InterpolationMasses 199 1.7018 insert eta(1405)width:InterpolationMasses 200 1.7174429 insert eta(1405)width:InterpolationMasses 201 1.7330857 insert eta(1405)width:InterpolationMasses 202 1.7487286 insert eta(1405)width:InterpolationMasses 203 1.7643714 insert eta(1405)width:InterpolationMasses 204 1.7800143 insert eta(1405)width:InterpolationMasses 205 1.7956571 insert eta(1405)width:InterpolationMasses 206 1.8113 insert eta(1405)width:InterpolationMasses 207 1.8269429 insert eta(1405)width:InterpolationMasses 208 1.8425857 insert eta(1405)width:InterpolationMasses 209 1.8582286 insert eta(1405)width:InterpolationMasses 210 1.8738714 insert eta(1405)width:InterpolationMasses 211 1.8895143 insert eta(1405)width:InterpolationMasses 212 1.9051571 insert eta(1405)width:InterpolationMasses 213 1.9208 insert eta(1405)width:InterpolationMasses 214 1.9364429 insert eta(1405)width:InterpolationMasses 215 1.9520857 insert eta(1405)width:InterpolationMasses 216 1.1230143 insert eta(1405)width:InterpolationMasses 217 1.1386571 insert eta(1405)width:InterpolationMasses 218 1.1543 insert eta(1405)width:InterpolationMasses 219 1.1699429 insert eta(1405)width:InterpolationMasses 220 1.1855857 insert eta(1405)width:InterpolationMasses 221 1.2012286 insert eta(1405)width:InterpolationMasses 222 1.2168714 insert eta(1405)width:InterpolationMasses 223 1.2325143 insert eta(1405)width:InterpolationMasses 224 1.2481571 insert eta(1405)width:InterpolationMasses 225 1.2638 insert eta(1405)width:InterpolationMasses 226 1.2794429 insert eta(1405)width:InterpolationMasses 227 1.2950857 insert eta(1405)width:InterpolationMasses 228 1.3107286 insert eta(1405)width:InterpolationMasses 229 1.3263714 insert eta(1405)width:InterpolationMasses 230 1.3420143 insert eta(1405)width:InterpolationMasses 231 1.3576571 insert eta(1405)width:InterpolationMasses 232 1.3733 insert eta(1405)width:InterpolationMasses 233 1.3889429 insert eta(1405)width:InterpolationMasses 234 1.4045857 insert eta(1405)width:InterpolationMasses 235 1.4202286 insert eta(1405)width:InterpolationMasses 236 1.4358714 insert eta(1405)width:InterpolationMasses 237 1.4515143 insert eta(1405)width:InterpolationMasses 238 1.4671571 insert eta(1405)width:InterpolationMasses 239 1.4828 insert eta(1405)width:InterpolationMasses 240 1.4984429 insert eta(1405)width:InterpolationMasses 241 1.5140857 insert eta(1405)width:InterpolationMasses 242 1.5297286 insert eta(1405)width:InterpolationMasses 243 1.5453714 insert eta(1405)width:InterpolationMasses 244 1.5610143 insert eta(1405)width:InterpolationMasses 245 1.5766571 insert eta(1405)width:InterpolationMasses 246 1.5923 insert eta(1405)width:InterpolationMasses 247 1.6079429 insert eta(1405)width:InterpolationMasses 248 1.6235857 insert eta(1405)width:InterpolationMasses 249 1.6392286 insert eta(1405)width:InterpolationMasses 250 1.6548714 insert eta(1405)width:InterpolationMasses 251 1.6705143 insert eta(1405)width:InterpolationMasses 252 1.6861571 insert eta(1405)width:InterpolationMasses 253 1.7018 insert eta(1405)width:InterpolationMasses 254 1.7174429 insert eta(1405)width:InterpolationMasses 255 1.7330857 insert eta(1405)width:InterpolationMasses 256 1.7487286 insert eta(1405)width:InterpolationMasses 257 1.7643714 insert eta(1405)width:InterpolationMasses 258 1.7800143 insert eta(1405)width:InterpolationMasses 259 1.7956571 insert eta(1405)width:InterpolationMasses 260 1.8113 insert eta(1405)width:InterpolationMasses 261 1.8269429 insert eta(1405)width:InterpolationMasses 262 1.8425857 insert eta(1405)width:InterpolationMasses 263 1.8582286 insert eta(1405)width:InterpolationMasses 264 1.8738714 insert eta(1405)width:InterpolationMasses 265 1.8895143 insert eta(1405)width:InterpolationMasses 266 1.9051571 insert eta(1405)width:InterpolationMasses 267 1.9208 insert eta(1405)width:InterpolationMasses 268 1.9364429 insert eta(1405)width:InterpolationMasses 269 1.9520857 insert eta(1405)width:InterpolationMasses 270 1.1230143 insert eta(1405)width:InterpolationMasses 271 1.1386571 insert eta(1405)width:InterpolationMasses 272 1.1543 insert eta(1405)width:InterpolationMasses 273 1.1699429 insert eta(1405)width:InterpolationMasses 274 1.1855857 insert eta(1405)width:InterpolationMasses 275 1.2012286 insert eta(1405)width:InterpolationMasses 276 1.2168714 insert eta(1405)width:InterpolationMasses 277 1.2325143 insert eta(1405)width:InterpolationMasses 278 1.2481571 insert eta(1405)width:InterpolationMasses 279 1.2638 insert eta(1405)width:InterpolationMasses 280 1.2794429 insert eta(1405)width:InterpolationMasses 281 1.2950857 insert eta(1405)width:InterpolationMasses 282 1.3107286 insert eta(1405)width:InterpolationMasses 283 1.3263714 insert eta(1405)width:InterpolationMasses 284 1.3420143 insert eta(1405)width:InterpolationMasses 285 1.3576571 insert eta(1405)width:InterpolationMasses 286 1.3733 insert eta(1405)width:InterpolationMasses 287 1.3889429 insert eta(1405)width:InterpolationMasses 288 1.4045857 insert eta(1405)width:InterpolationMasses 289 1.4202286 insert eta(1405)width:InterpolationMasses 290 1.4358714 insert eta(1405)width:InterpolationMasses 291 1.4515143 insert eta(1405)width:InterpolationMasses 292 1.4671571 insert eta(1405)width:InterpolationMasses 293 1.4828 insert eta(1405)width:InterpolationMasses 294 1.4984429 insert eta(1405)width:InterpolationMasses 295 1.5140857 insert eta(1405)width:InterpolationMasses 296 1.5297286 insert eta(1405)width:InterpolationMasses 297 1.5453714 insert eta(1405)width:InterpolationMasses 298 1.5610143 insert eta(1405)width:InterpolationMasses 299 1.5766571 insert eta(1405)width:InterpolationMasses 300 1.5923 insert eta(1405)width:InterpolationMasses 301 1.6079429 insert eta(1405)width:InterpolationMasses 302 1.6235857 insert eta(1405)width:InterpolationMasses 303 1.6392286 insert eta(1405)width:InterpolationMasses 304 1.6548714 insert eta(1405)width:InterpolationMasses 305 1.6705143 insert eta(1405)width:InterpolationMasses 306 1.6861571 insert eta(1405)width:InterpolationMasses 307 1.7018 insert eta(1405)width:InterpolationMasses 308 1.7174429 insert eta(1405)width:InterpolationMasses 309 1.7330857 insert eta(1405)width:InterpolationMasses 310 1.7487286 insert eta(1405)width:InterpolationMasses 311 1.7643714 insert eta(1405)width:InterpolationMasses 312 1.7800143 insert eta(1405)width:InterpolationMasses 313 1.7956571 insert eta(1405)width:InterpolationMasses 314 1.8113 insert eta(1405)width:InterpolationMasses 315 1.8269429 insert eta(1405)width:InterpolationMasses 316 1.8425857 insert eta(1405)width:InterpolationMasses 317 1.8582286 insert eta(1405)width:InterpolationMasses 318 1.8738714 insert eta(1405)width:InterpolationMasses 319 1.8895143 insert eta(1405)width:InterpolationMasses 320 1.9051571 insert eta(1405)width:InterpolationMasses 321 1.9208 insert eta(1405)width:InterpolationMasses 322 1.9364429 insert eta(1405)width:InterpolationMasses 323 1.9520857 insert eta(1405)width:InterpolationMasses 324 1.1230143 insert eta(1405)width:InterpolationMasses 325 1.1386571 insert eta(1405)width:InterpolationMasses 326 1.1543 insert eta(1405)width:InterpolationMasses 327 1.1699429 insert eta(1405)width:InterpolationMasses 328 1.1855857 insert eta(1405)width:InterpolationMasses 329 1.2012286 insert eta(1405)width:InterpolationMasses 330 1.2168714 insert eta(1405)width:InterpolationMasses 331 1.2325143 insert eta(1405)width:InterpolationMasses 332 1.2481571 insert eta(1405)width:InterpolationMasses 333 1.2638 insert eta(1405)width:InterpolationMasses 334 1.2794429 insert eta(1405)width:InterpolationMasses 335 1.2950857 insert eta(1405)width:InterpolationMasses 336 1.3107286 insert eta(1405)width:InterpolationMasses 337 1.3263714 insert eta(1405)width:InterpolationMasses 338 1.3420143 insert eta(1405)width:InterpolationMasses 339 1.3576571 insert eta(1405)width:InterpolationMasses 340 1.3733 insert eta(1405)width:InterpolationMasses 341 1.3889429 insert eta(1405)width:InterpolationMasses 342 1.4045857 insert eta(1405)width:InterpolationMasses 343 1.4202286 insert eta(1405)width:InterpolationMasses 344 1.4358714 insert eta(1405)width:InterpolationMasses 345 1.4515143 insert eta(1405)width:InterpolationMasses 346 1.4671571 insert eta(1405)width:InterpolationMasses 347 1.4828 insert eta(1405)width:InterpolationMasses 348 1.4984429 insert eta(1405)width:InterpolationMasses 349 1.5140857 insert eta(1405)width:InterpolationMasses 350 1.5297286 insert eta(1405)width:InterpolationMasses 351 1.5453714 insert eta(1405)width:InterpolationMasses 352 1.5610143 insert eta(1405)width:InterpolationMasses 353 1.5766571 insert eta(1405)width:InterpolationMasses 354 1.5923 insert eta(1405)width:InterpolationMasses 355 1.6079429 insert eta(1405)width:InterpolationMasses 356 1.6235857 insert eta(1405)width:InterpolationMasses 357 1.6392286 insert eta(1405)width:InterpolationMasses 358 1.6548714 insert eta(1405)width:InterpolationMasses 359 1.6705143 insert eta(1405)width:InterpolationMasses 360 1.6861571 insert eta(1405)width:InterpolationMasses 361 1.7018 insert eta(1405)width:InterpolationMasses 362 1.7174429 insert eta(1405)width:InterpolationMasses 363 1.7330857 insert eta(1405)width:InterpolationMasses 364 1.7487286 insert eta(1405)width:InterpolationMasses 365 1.7643714 insert eta(1405)width:InterpolationMasses 366 1.7800143 insert eta(1405)width:InterpolationMasses 367 1.7956571 insert eta(1405)width:InterpolationMasses 368 1.8113 insert eta(1405)width:InterpolationMasses 369 1.8269429 insert eta(1405)width:InterpolationMasses 370 1.8425857 insert eta(1405)width:InterpolationMasses 371 1.8582286 insert eta(1405)width:InterpolationMasses 372 1.8738714 insert eta(1405)width:InterpolationMasses 373 1.8895143 insert eta(1405)width:InterpolationMasses 374 1.9051571 insert eta(1405)width:InterpolationMasses 375 1.9208 insert eta(1405)width:InterpolationMasses 376 1.9364429 insert eta(1405)width:InterpolationMasses 377 1.9520857 insert eta(1405)width:InterpolationMasses 378 1.1230143 insert eta(1405)width:InterpolationMasses 379 1.1386571 insert eta(1405)width:InterpolationMasses 380 1.1543 insert eta(1405)width:InterpolationMasses 381 1.1699429 insert eta(1405)width:InterpolationMasses 382 1.1855857 insert eta(1405)width:InterpolationMasses 383 1.2012286 insert eta(1405)width:InterpolationMasses 384 1.2168714 insert eta(1405)width:InterpolationMasses 385 1.2325143 insert eta(1405)width:InterpolationMasses 386 1.2481571 insert eta(1405)width:InterpolationMasses 387 1.2638 insert eta(1405)width:InterpolationMasses 388 1.2794429 insert eta(1405)width:InterpolationMasses 389 1.2950857 insert eta(1405)width:InterpolationMasses 390 1.3107286 insert eta(1405)width:InterpolationMasses 391 1.3263714 insert eta(1405)width:InterpolationMasses 392 1.3420143 insert eta(1405)width:InterpolationMasses 393 1.3576571 insert eta(1405)width:InterpolationMasses 394 1.3733 insert eta(1405)width:InterpolationMasses 395 1.3889429 insert eta(1405)width:InterpolationMasses 396 1.4045857 insert eta(1405)width:InterpolationMasses 397 1.4202286 insert eta(1405)width:InterpolationMasses 398 1.4358714 insert eta(1405)width:InterpolationMasses 399 1.4515143 insert eta(1405)width:InterpolationMasses 400 1.4671571 insert eta(1405)width:InterpolationMasses 401 1.4828 insert eta(1405)width:InterpolationMasses 402 1.4984429 insert eta(1405)width:InterpolationMasses 403 1.5140857 insert eta(1405)width:InterpolationMasses 404 1.5297286 insert eta(1405)width:InterpolationMasses 405 1.5453714 insert eta(1405)width:InterpolationMasses 406 1.5610143 insert eta(1405)width:InterpolationMasses 407 1.5766571 insert eta(1405)width:InterpolationMasses 408 1.5923 insert eta(1405)width:InterpolationMasses 409 1.6079429 insert eta(1405)width:InterpolationMasses 410 1.6235857 insert eta(1405)width:InterpolationMasses 411 1.6392286 insert eta(1405)width:InterpolationMasses 412 1.6548714 insert eta(1405)width:InterpolationMasses 413 1.6705143 insert eta(1405)width:InterpolationMasses 414 1.6861571 insert eta(1405)width:InterpolationMasses 415 1.7018 insert eta(1405)width:InterpolationMasses 416 1.7174429 insert eta(1405)width:InterpolationMasses 417 1.7330857 insert eta(1405)width:InterpolationMasses 418 1.7487286 insert eta(1405)width:InterpolationMasses 419 1.7643714 insert eta(1405)width:InterpolationMasses 420 1.7800143 insert eta(1405)width:InterpolationMasses 421 1.7956571 insert eta(1405)width:InterpolationMasses 422 1.8113 insert eta(1405)width:InterpolationMasses 423 1.8269429 insert eta(1405)width:InterpolationMasses 424 1.8425857 insert eta(1405)width:InterpolationMasses 425 1.8582286 insert eta(1405)width:InterpolationMasses 426 1.8738714 insert eta(1405)width:InterpolationMasses 427 1.8895143 insert eta(1405)width:InterpolationMasses 428 1.9051571 insert eta(1405)width:InterpolationMasses 429 1.9208 insert eta(1405)width:InterpolationMasses 430 1.9364429 insert eta(1405)width:InterpolationMasses 431 1.9520857 insert eta(1405)width:InterpolationWidths 0 0 insert eta(1405)width:InterpolationWidths 1 0 insert eta(1405)width:InterpolationWidths 2 3.6240917e-09 insert eta(1405)width:InterpolationWidths 3 2.7821908e-08 insert eta(1405)width:InterpolationWidths 4 1.0902878e-07 insert eta(1405)width:InterpolationWidths 5 3.1061709e-07 insert eta(1405)width:InterpolationWidths 6 7.3346279e-07 insert eta(1405)width:InterpolationWidths 7 1.5312415e-06 insert eta(1405)width:InterpolationWidths 8 2.9333543e-06 insert eta(1405)width:InterpolationWidths 9 5.2805257e-06 insert eta(1405)width:InterpolationWidths 10 9.0824151e-06 insert eta(1405)width:InterpolationWidths 11 1.5115605e-05 insert eta(1405)width:InterpolationWidths 12 2.4600653e-05 insert eta(1405)width:InterpolationWidths 13 3.9546531e-05 insert eta(1405)width:InterpolationWidths 14 6.3482075e-05 insert eta(1405)width:InterpolationWidths 15 0.00010314974 insert eta(1405)width:InterpolationWidths 16 0.00017236976 insert eta(1405)width:InterpolationWidths 17 0.0002963118 insert eta(1405)width:InterpolationWidths 18 0.00049998391 insert eta(1405)width:InterpolationWidths 19 0.0007902086 insert eta(1405)width:InterpolationWidths 20 0.0011632098 insert eta(1405)width:InterpolationWidths 21 0.001613962 insert eta(1405)width:InterpolationWidths 22 0.0021383558 insert eta(1405)width:InterpolationWidths 23 0.0027332733 insert eta(1405)width:InterpolationWidths 24 0.0033963685 insert eta(1405)width:InterpolationWidths 25 0.0041258687 insert eta(1405)width:InterpolationWidths 26 0.0049204272 insert eta(1405)width:InterpolationWidths 27 0.0057790195 insert eta(1405)width:InterpolationWidths 28 0.0067008693 insert eta(1405)width:InterpolationWidths 29 0.007685394 insert eta(1405)width:InterpolationWidths 30 0.0087321662 insert eta(1405)width:InterpolationWidths 31 0.009840883 insert eta(1405)width:InterpolationWidths 32 0.011011344 insert eta(1405)width:InterpolationWidths 33 0.012243433 insert eta(1405)width:InterpolationWidths 34 0.013537106 insert eta(1405)width:InterpolationWidths 35 0.014892376 insert eta(1405)width:InterpolationWidths 36 0.016309309 insert eta(1405)width:InterpolationWidths 37 0.017788016 insert eta(1405)width:InterpolationWidths 38 0.019328642 insert eta(1405)width:InterpolationWidths 39 0.020931367 insert eta(1405)width:InterpolationWidths 40 0.022596401 insert eta(1405)width:InterpolationWidths 41 0.024323976 insert eta(1405)width:InterpolationWidths 42 0.026114349 insert eta(1405)width:InterpolationWidths 43 0.027967797 insert eta(1405)width:InterpolationWidths 44 0.029884611 insert eta(1405)width:InterpolationWidths 45 0.031865103 insert eta(1405)width:InterpolationWidths 46 0.033909595 insert eta(1405)width:InterpolationWidths 47 0.036018424 insert eta(1405)width:InterpolationWidths 48 0.038191938 insert eta(1405)width:InterpolationWidths 49 0.040430496 insert eta(1405)width:InterpolationWidths 50 0.042734431 insert eta(1405)width:InterpolationWidths 51 0.045103857 insert eta(1405)width:InterpolationWidths 52 0.047538994 insert eta(1405)width:InterpolationWidths 53 0.050039623 insert eta(1405)width:InterpolationWidths 54 0 insert eta(1405)width:InterpolationWidths 55 0 insert eta(1405)width:InterpolationWidths 56 3.6240917e-09 insert eta(1405)width:InterpolationWidths 57 2.7821908e-08 insert eta(1405)width:InterpolationWidths 58 1.0902878e-07 insert eta(1405)width:InterpolationWidths 59 3.1061709e-07 insert eta(1405)width:InterpolationWidths 60 7.3346279e-07 insert eta(1405)width:InterpolationWidths 61 1.5312415e-06 insert eta(1405)width:InterpolationWidths 62 2.9333543e-06 insert eta(1405)width:InterpolationWidths 63 5.2805257e-06 insert eta(1405)width:InterpolationWidths 64 9.0824151e-06 insert eta(1405)width:InterpolationWidths 65 1.5115605e-05 insert eta(1405)width:InterpolationWidths 66 2.4600653e-05 insert eta(1405)width:InterpolationWidths 67 3.9546531e-05 insert eta(1405)width:InterpolationWidths 68 6.3482075e-05 insert eta(1405)width:InterpolationWidths 69 0.00010314974 insert eta(1405)width:InterpolationWidths 70 0.00017236976 insert eta(1405)width:InterpolationWidths 71 0.0002963118 insert eta(1405)width:InterpolationWidths 72 0.00049998391 insert eta(1405)width:InterpolationWidths 73 0.0007902086 insert eta(1405)width:InterpolationWidths 74 0.0011632098 insert eta(1405)width:InterpolationWidths 75 0.001613962 insert eta(1405)width:InterpolationWidths 76 0.0021383558 insert eta(1405)width:InterpolationWidths 77 0.0027332733 insert eta(1405)width:InterpolationWidths 78 0.0033963685 insert eta(1405)width:InterpolationWidths 79 0.0041258687 insert eta(1405)width:InterpolationWidths 80 0.0049204272 insert eta(1405)width:InterpolationWidths 81 0.0057790195 insert eta(1405)width:InterpolationWidths 82 0.0067008693 insert eta(1405)width:InterpolationWidths 83 0.007685394 insert eta(1405)width:InterpolationWidths 84 0.0087321662 insert eta(1405)width:InterpolationWidths 85 0.009840883 insert eta(1405)width:InterpolationWidths 86 0.011011344 insert eta(1405)width:InterpolationWidths 87 0.012243433 insert eta(1405)width:InterpolationWidths 88 0.013537106 insert eta(1405)width:InterpolationWidths 89 0.014892376 insert eta(1405)width:InterpolationWidths 90 0.016309309 insert eta(1405)width:InterpolationWidths 91 0.017788016 insert eta(1405)width:InterpolationWidths 92 0.019328642 insert eta(1405)width:InterpolationWidths 93 0.020931367 insert eta(1405)width:InterpolationWidths 94 0.022596401 insert eta(1405)width:InterpolationWidths 95 0.024323976 insert eta(1405)width:InterpolationWidths 96 0.026114349 insert eta(1405)width:InterpolationWidths 97 0.027967797 insert eta(1405)width:InterpolationWidths 98 0.029884611 insert eta(1405)width:InterpolationWidths 99 0.031865103 insert eta(1405)width:InterpolationWidths 100 0.033909595 insert eta(1405)width:InterpolationWidths 101 0.036018424 insert eta(1405)width:InterpolationWidths 102 0.038191938 insert eta(1405)width:InterpolationWidths 103 0.040430496 insert eta(1405)width:InterpolationWidths 104 0.042734431 insert eta(1405)width:InterpolationWidths 105 0.045103857 insert eta(1405)width:InterpolationWidths 106 0.047538994 insert eta(1405)width:InterpolationWidths 107 0.050039623 insert eta(1405)width:InterpolationWidths 108 0 insert eta(1405)width:InterpolationWidths 109 0 insert eta(1405)width:InterpolationWidths 110 1.06821e-09 insert eta(1405)width:InterpolationWidths 111 1.5995496e-08 insert eta(1405)width:InterpolationWidths 112 7.5157727e-08 insert eta(1405)width:InterpolationWidths 113 2.3175411e-07 insert eta(1405)width:InterpolationWidths 114 5.7081014e-07 insert eta(1405)width:InterpolationWidths 115 1.2216932e-06 insert eta(1405)width:InterpolationWidths 116 2.3765078e-06 insert eta(1405)width:InterpolationWidths 117 4.31806e-06 insert eta(1405)width:InterpolationWidths 118 7.4640698e-06 insert eta(1405)width:InterpolationWidths 119 1.2440224e-05 insert eta(1405)width:InterpolationWidths 120 2.0207713e-05 insert eta(1405)width:InterpolationWidths 121 3.2301198e-05 insert eta(1405)width:InterpolationWidths 122 5.1310391e-05 insert eta(1405)width:InterpolationWidths 123 8.1948898e-05 insert eta(1405)width:InterpolationWidths 124 0.00013359092 insert eta(1405)width:InterpolationWidths 125 0.00022529459 insert eta(1405)width:InterpolationWidths 126 0.00038536802 insert eta(1405)width:InterpolationWidths 127 0.00063116923 insert eta(1405)width:InterpolationWidths 128 0.00096269712 insert eta(1405)width:InterpolationWidths 129 0.0013748514 insert eta(1405)width:InterpolationWidths 130 0.0018628658 insert eta(1405)width:InterpolationWidths 131 0.0024230493 insert eta(1405)width:InterpolationWidths 132 0.0030526253 insert eta(1405)width:InterpolationWidths 133 0.0037495016 insert eta(1405)width:InterpolationWidths 134 0.0045120918 insert eta(1405)width:InterpolationWidths 135 0.0053391875 insert eta(1405)width:InterpolationWidths 136 0.0062298681 insert eta(1405)width:InterpolationWidths 137 0.0071834365 insert eta(1405)width:InterpolationWidths 138 0.0081993713 insert eta(1405)width:InterpolationWidths 139 0.0092772926 insert eta(1405)width:InterpolationWidths 140 0.010416935 insert eta(1405)width:InterpolationWidths 141 0.011618128 insert eta(1405)width:InterpolationWidths 142 0.012880778 insert eta(1405)width:InterpolationWidths 143 0.01420486 insert eta(1405)width:InterpolationWidths 144 0.015590402 insert eta(1405)width:InterpolationWidths 145 0.017037483 insert eta(1405)width:InterpolationWidths 146 0.01854622 insert eta(1405)width:InterpolationWidths 147 0.020116768 insert eta(1405)width:InterpolationWidths 148 0.021749312 insert eta(1405)width:InterpolationWidths 149 0.023444065 insert eta(1405)width:InterpolationWidths 150 0.025201262 insert eta(1405)width:InterpolationWidths 151 0.027021162 insert eta(1405)width:InterpolationWidths 152 0.028904042 insert eta(1405)width:InterpolationWidths 153 0.030850195 insert eta(1405)width:InterpolationWidths 154 0.032859931 insert eta(1405)width:InterpolationWidths 155 0.034933571 insert eta(1405)width:InterpolationWidths 156 0.037071452 insert eta(1405)width:InterpolationWidths 157 0.039273919 insert eta(1405)width:InterpolationWidths 158 0.041541318 insert eta(1405)width:InterpolationWidths 159 0.043873786 insert eta(1405)width:InterpolationWidths 160 0.046271022 insert eta(1405)width:InterpolationWidths 161 0.048734309 insert eta(1405)width:InterpolationWidths 162 0 insert eta(1405)width:InterpolationWidths 163 0 insert eta(1405)width:InterpolationWidths 164 1.06821e-09 insert eta(1405)width:InterpolationWidths 165 1.5995496e-08 insert eta(1405)width:InterpolationWidths 166 7.5157727e-08 insert eta(1405)width:InterpolationWidths 167 2.3175411e-07 insert eta(1405)width:InterpolationWidths 168 5.7081014e-07 insert eta(1405)width:InterpolationWidths 169 1.2216932e-06 insert eta(1405)width:InterpolationWidths 170 2.3765078e-06 insert eta(1405)width:InterpolationWidths 171 4.31806e-06 insert eta(1405)width:InterpolationWidths 172 7.4640698e-06 insert eta(1405)width:InterpolationWidths 173 1.2440224e-05 insert eta(1405)width:InterpolationWidths 174 2.0207713e-05 insert eta(1405)width:InterpolationWidths 175 3.2301198e-05 insert eta(1405)width:InterpolationWidths 176 5.1310391e-05 insert eta(1405)width:InterpolationWidths 177 8.1948898e-05 insert eta(1405)width:InterpolationWidths 178 0.00013359092 insert eta(1405)width:InterpolationWidths 179 0.00022529459 insert eta(1405)width:InterpolationWidths 180 0.00038536802 insert eta(1405)width:InterpolationWidths 181 0.00063116923 insert eta(1405)width:InterpolationWidths 182 0.00096269712 insert eta(1405)width:InterpolationWidths 183 0.0013748514 insert eta(1405)width:InterpolationWidths 184 0.0018628658 insert eta(1405)width:InterpolationWidths 185 0.0024230493 insert eta(1405)width:InterpolationWidths 186 0.0030526253 insert eta(1405)width:InterpolationWidths 187 0.0037495016 insert eta(1405)width:InterpolationWidths 188 0.0045120918 insert eta(1405)width:InterpolationWidths 189 0.0053391875 insert eta(1405)width:InterpolationWidths 190 0.0062298681 insert eta(1405)width:InterpolationWidths 191 0.0071834365 insert eta(1405)width:InterpolationWidths 192 0.0081993713 insert eta(1405)width:InterpolationWidths 193 0.0092772926 insert eta(1405)width:InterpolationWidths 194 0.010416935 insert eta(1405)width:InterpolationWidths 195 0.011618128 insert eta(1405)width:InterpolationWidths 196 0.012880778 insert eta(1405)width:InterpolationWidths 197 0.01420486 insert eta(1405)width:InterpolationWidths 198 0.015590402 insert eta(1405)width:InterpolationWidths 199 0.017037483 insert eta(1405)width:InterpolationWidths 200 0.01854622 insert eta(1405)width:InterpolationWidths 201 0.020116768 insert eta(1405)width:InterpolationWidths 202 0.021749312 insert eta(1405)width:InterpolationWidths 203 0.023444065 insert eta(1405)width:InterpolationWidths 204 0.025201262 insert eta(1405)width:InterpolationWidths 205 0.027021162 insert eta(1405)width:InterpolationWidths 206 0.028904042 insert eta(1405)width:InterpolationWidths 207 0.030850195 insert eta(1405)width:InterpolationWidths 208 0.032859931 insert eta(1405)width:InterpolationWidths 209 0.034933571 insert eta(1405)width:InterpolationWidths 210 0.037071452 insert eta(1405)width:InterpolationWidths 211 0.039273919 insert eta(1405)width:InterpolationWidths 212 0.041541318 insert eta(1405)width:InterpolationWidths 213 0.043873786 insert eta(1405)width:InterpolationWidths 214 0.046271022 insert eta(1405)width:InterpolationWidths 215 0.048734309 insert eta(1405)width:InterpolationWidths 216 0.0013284419 insert eta(1405)width:InterpolationWidths 217 0.0017470155 insert eta(1405)width:InterpolationWidths 218 0.002208228 insert eta(1405)width:InterpolationWidths 219 0.0026813524 insert eta(1405)width:InterpolationWidths 220 0.0031539917 insert eta(1405)width:InterpolationWidths 221 0.0036183717 insert eta(1405)width:InterpolationWidths 222 0.0040693484 insert eta(1405)width:InterpolationWidths 223 0.0045040997 insert eta(1405)width:InterpolationWidths 224 0.0049199829 insert eta(1405)width:InterpolationWidths 225 0.0053167511 insert eta(1405)width:InterpolationWidths 226 0.0056938629 insert eta(1405)width:InterpolationWidths 227 0.0060516701 insert eta(1405)width:InterpolationWidths 228 0.0063904397 insert eta(1405)width:InterpolationWidths 229 0.0067107762 insert eta(1405)width:InterpolationWidths 230 0.0070135662 insert eta(1405)width:InterpolationWidths 231 0.0072989128 insert eta(1405)width:InterpolationWidths 232 0.0075682085 insert eta(1405)width:InterpolationWidths 233 0.0078220255 insert eta(1405)width:InterpolationWidths 234 0.0080611022 insert eta(1405)width:InterpolationWidths 235 0.0082861906 insert eta(1405)width:InterpolationWidths 236 0.0084980197 insert eta(1405)width:InterpolationWidths 237 0.0086972023 insert eta(1405)width:InterpolationWidths 238 0.0088844929 insert eta(1405)width:InterpolationWidths 239 0.0090608473 insert eta(1405)width:InterpolationWidths 240 0.0092258892 insert eta(1405)width:InterpolationWidths 241 0.0093855798 insert eta(1405)width:InterpolationWidths 242 0.0095262171 insert eta(1405)width:InterpolationWidths 243 0.0096625378 insert eta(1405)width:InterpolationWidths 244 0.009790236 insert eta(1405)width:InterpolationWidths 245 0.0099097069 insert eta(1405)width:InterpolationWidths 246 0.010021617 insert eta(1405)width:InterpolationWidths 247 0.010125779 insert eta(1405)width:InterpolationWidths 248 0.010223626 insert eta(1405)width:InterpolationWidths 249 0.010313912 insert eta(1405)width:InterpolationWidths 250 0.01039836 insert eta(1405)width:InterpolationWidths 251 0.010476558 insert eta(1405)width:InterpolationWidths 252 0.010549673 insert eta(1405)width:InterpolationWidths 253 0.010616883 insert eta(1405)width:InterpolationWidths 254 0.01067514 insert eta(1405)width:InterpolationWidths 255 0.010726391 insert eta(1405)width:InterpolationWidths 256 0.0107717 insert eta(1405)width:InterpolationWidths 257 0.010811685 insert eta(1405)width:InterpolationWidths 258 0.010846805 insert eta(1405)width:InterpolationWidths 259 0.010877438 insert eta(1405)width:InterpolationWidths 260 0.01090391 insert eta(1405)width:InterpolationWidths 261 0.010926508 insert eta(1405)width:InterpolationWidths 262 0.010945493 insert eta(1405)width:InterpolationWidths 263 0.010961097 insert eta(1405)width:InterpolationWidths 264 0.010973536 insert eta(1405)width:InterpolationWidths 265 0.010983008 insert eta(1405)width:InterpolationWidths 266 0.010989695 insert eta(1405)width:InterpolationWidths 267 0.010993768 insert eta(1405)width:InterpolationWidths 268 0.010995385 insert eta(1405)width:InterpolationWidths 269 0.010994692 insert eta(1405)width:InterpolationWidths 270 0.0013284419 insert eta(1405)width:InterpolationWidths 271 0.0017470155 insert eta(1405)width:InterpolationWidths 272 0.002208228 insert eta(1405)width:InterpolationWidths 273 0.0026813524 insert eta(1405)width:InterpolationWidths 274 0.0031539917 insert eta(1405)width:InterpolationWidths 275 0.0036183717 insert eta(1405)width:InterpolationWidths 276 0.0040693484 insert eta(1405)width:InterpolationWidths 277 0.0045040997 insert eta(1405)width:InterpolationWidths 278 0.0049199829 insert eta(1405)width:InterpolationWidths 279 0.0053167511 insert eta(1405)width:InterpolationWidths 280 0.0056938629 insert eta(1405)width:InterpolationWidths 281 0.0060516701 insert eta(1405)width:InterpolationWidths 282 0.0063904397 insert eta(1405)width:InterpolationWidths 283 0.0067107762 insert eta(1405)width:InterpolationWidths 284 0.0070135662 insert eta(1405)width:InterpolationWidths 285 0.0072989128 insert eta(1405)width:InterpolationWidths 286 0.0075682085 insert eta(1405)width:InterpolationWidths 287 0.0078220255 insert eta(1405)width:InterpolationWidths 288 0.0080611022 insert eta(1405)width:InterpolationWidths 289 0.0082861906 insert eta(1405)width:InterpolationWidths 290 0.0084980197 insert eta(1405)width:InterpolationWidths 291 0.0086972023 insert eta(1405)width:InterpolationWidths 292 0.0088844929 insert eta(1405)width:InterpolationWidths 293 0.0090608473 insert eta(1405)width:InterpolationWidths 294 0.0092258892 insert eta(1405)width:InterpolationWidths 295 0.0093855798 insert eta(1405)width:InterpolationWidths 296 0.0095262171 insert eta(1405)width:InterpolationWidths 297 0.0096625378 insert eta(1405)width:InterpolationWidths 298 0.009790236 insert eta(1405)width:InterpolationWidths 299 0.0099097069 insert eta(1405)width:InterpolationWidths 300 0.010021617 insert eta(1405)width:InterpolationWidths 301 0.010125779 insert eta(1405)width:InterpolationWidths 302 0.010223626 insert eta(1405)width:InterpolationWidths 303 0.010313912 insert eta(1405)width:InterpolationWidths 304 0.01039836 insert eta(1405)width:InterpolationWidths 305 0.010476558 insert eta(1405)width:InterpolationWidths 306 0.010549673 insert eta(1405)width:InterpolationWidths 307 0.010616883 insert eta(1405)width:InterpolationWidths 308 0.01067514 insert eta(1405)width:InterpolationWidths 309 0.010726391 insert eta(1405)width:InterpolationWidths 310 0.0107717 insert eta(1405)width:InterpolationWidths 311 0.010811685 insert eta(1405)width:InterpolationWidths 312 0.010846805 insert eta(1405)width:InterpolationWidths 313 0.010877438 insert eta(1405)width:InterpolationWidths 314 0.01090391 insert eta(1405)width:InterpolationWidths 315 0.010926508 insert eta(1405)width:InterpolationWidths 316 0.010945493 insert eta(1405)width:InterpolationWidths 317 0.010961097 insert eta(1405)width:InterpolationWidths 318 0.010973536 insert eta(1405)width:InterpolationWidths 319 0.010983008 insert eta(1405)width:InterpolationWidths 320 0.010989695 insert eta(1405)width:InterpolationWidths 321 0.010993768 insert eta(1405)width:InterpolationWidths 322 0.010995385 insert eta(1405)width:InterpolationWidths 323 0.010994692 insert eta(1405)width:InterpolationWidths 324 0.0014402649 insert eta(1405)width:InterpolationWidths 325 0.0018763506 insert eta(1405)width:InterpolationWidths 326 0.0023417396 insert eta(1405)width:InterpolationWidths 327 0.0028155599 insert eta(1405)width:InterpolationWidths 328 0.0032851892 insert eta(1405)width:InterpolationWidths 329 0.0037456563 insert eta(1405)width:InterpolationWidths 330 0.0041918656 insert eta(1405)width:InterpolationWidths 331 0.00462092 insert eta(1405)width:InterpolationWidths 332 0.0050314988 insert eta(1405)width:InterpolationWidths 333 0.0054226487 insert eta(1405)width:InterpolationWidths 334 0.0057947649 insert eta(1405)width:InterpolationWidths 335 0.0061473415 insert eta(1405)width:InterpolationWidths 336 0.0064813791 insert eta(1405)width:InterpolationWidths 337 0.0067968906 insert eta(1405)width:InterpolationWidths 338 0.0070952023 insert eta(1405)width:InterpolationWidths 339 0.0073765234 insert eta(1405)width:InterpolationWidths 340 0.0076417407 insert eta(1405)width:InterpolationWidths 341 0.0078917047 insert eta(1405)width:InterpolationWidths 342 0.0081278001 insert eta(1405)width:InterpolationWidths 343 0.0083497177 insert eta(1405)width:InterpolationWidths 344 0.0085585452 insert eta(1405)width:InterpolationWidths 345 0.0087549804 insert eta(1405)width:InterpolationWidths 346 0.0089396152 insert eta(1405)width:InterpolationWidths 347 0.009113128 insert eta(1405)width:InterpolationWidths 348 0.0092760935 insert eta(1405)width:InterpolationWidths 349 0.009429107 insert eta(1405)width:InterpolationWidths 350 0.009572411 insert eta(1405)width:InterpolationWidths 351 0.0097070983 insert eta(1405)width:InterpolationWidths 352 0.0098319934 insert eta(1405)width:InterpolationWidths 353 0.0099505532 insert eta(1405)width:InterpolationWidths 354 0.010060674 insert eta(1405)width:InterpolationWidths 355 0.010163619 insert eta(1405)width:InterpolationWidths 356 0.010259472 insert eta(1405)width:InterpolationWidths 357 0.010348877 insert eta(1405)width:InterpolationWidths 358 0.010432043 insert eta(1405)width:InterpolationWidths 359 0.010509495 insert eta(1405)width:InterpolationWidths 360 0.010581902 insert eta(1405)width:InterpolationWidths 361 0.010646249 insert eta(1405)width:InterpolationWidths 362 0.010702746 insert eta(1405)width:InterpolationWidths 363 0.010752642 insert eta(1405)width:InterpolationWidths 364 0.010796787 insert eta(1405)width:InterpolationWidths 365 0.010835735 insert eta(1405)width:InterpolationWidths 366 0.010869917 insert eta(1405)width:InterpolationWidths 367 0.010899691 insert eta(1405)width:InterpolationWidths 368 0.010925372 insert eta(1405)width:InterpolationWidths 369 0.010947238 insert eta(1405)width:InterpolationWidths 370 0.010965539 insert eta(1405)width:InterpolationWidths 371 0.010980505 insert eta(1405)width:InterpolationWidths 372 0.010992346 insert eta(1405)width:InterpolationWidths 373 0.011001256 insert eta(1405)width:InterpolationWidths 374 0.011007415 insert eta(1405)width:InterpolationWidths 375 0.011010989 insert eta(1405)width:InterpolationWidths 376 0.011012133 insert eta(1405)width:InterpolationWidths 377 0.011010993 insert eta(1405)width:InterpolationWidths 378 0.0077235189 insert eta(1405)width:InterpolationWidths 379 0.0084485779 insert eta(1405)width:InterpolationWidths 380 0.0091985174 insert eta(1405)width:InterpolationWidths 381 0.0099731188 insert eta(1405)width:InterpolationWidths 382 0.010772172 insert eta(1405)width:InterpolationWidths 383 0.01159546 insert eta(1405)width:InterpolationWidths 384 0.012442738 insert eta(1405)width:InterpolationWidths 385 0.01331372 insert eta(1405)width:InterpolationWidths 386 0.014208058 insert eta(1405)width:InterpolationWidths 387 0.015125328 insert eta(1405)width:InterpolationWidths 388 0.016065009 insert eta(1405)width:InterpolationWidths 389 0.017026467 insert eta(1405)width:InterpolationWidths 390 0.018008941 insert eta(1405)width:InterpolationWidths 391 0.019011524 insert eta(1405)width:InterpolationWidths 392 0.020033155 insert eta(1405)width:InterpolationWidths 393 0.021072604 insert eta(1405)width:InterpolationWidths 394 0.022128467 insert eta(1405)width:InterpolationWidths 395 0.023199161 insert eta(1405)width:InterpolationWidths 396 0.024282925 insert eta(1405)width:InterpolationWidths 397 0.025377827 insert eta(1405)width:InterpolationWidths 398 0.026481771 insert eta(1405)width:InterpolationWidths 399 0.027592516 insert eta(1405)width:InterpolationWidths 400 0.028707695 insert eta(1405)width:InterpolationWidths 401 0.029824839 insert eta(1405)width:InterpolationWidths 402 0.030941409 insert eta(1405)width:InterpolationWidths 403 0.032054824 insert eta(1405)width:InterpolationWidths 404 0.033162501 insert eta(1405)width:InterpolationWidths 405 0.034261879 insert eta(1405)width:InterpolationWidths 406 0.035350463 insert eta(1405)width:InterpolationWidths 407 0.036425848 insert eta(1405)width:InterpolationWidths 408 0.037485752 insert eta(1405)width:InterpolationWidths 409 0.038528039 insert eta(1405)width:InterpolationWidths 410 0.039550737 insert eta(1405)width:InterpolationWidths 411 0.040552058 insert eta(1405)width:InterpolationWidths 412 0.041530407 insert eta(1405)width:InterpolationWidths 413 0.042484385 insert eta(1405)width:InterpolationWidths 414 0.043412797 insert eta(1405)width:InterpolationWidths 415 0.044314641 insert eta(1405)width:InterpolationWidths 416 0.045189112 insert eta(1405)width:InterpolationWidths 417 0.046035586 insert eta(1405)width:InterpolationWidths 418 0.046853613 insert eta(1405)width:InterpolationWidths 419 0.047642904 insert eta(1405)width:InterpolationWidths 420 0.048403317 insert eta(1405)width:InterpolationWidths 421 0.049134847 insert eta(1405)width:InterpolationWidths 422 0.049837607 insert eta(1405)width:InterpolationWidths 423 0.050511817 insert eta(1405)width:InterpolationWidths 424 0.051157793 insert eta(1405)width:InterpolationWidths 425 0.051775928 insert eta(1405)width:InterpolationWidths 426 0.052366688 insert eta(1405)width:InterpolationWidths 427 0.052930595 insert eta(1405)width:InterpolationWidths 428 0.05346822 insert eta(1405)width:InterpolationWidths 429 0.053980174 insert eta(1405)width:InterpolationWidths 430 0.054467096 insert eta(1405)width:InterpolationWidths 431 0.054929651 insert eta(1405)width:NumberofEntries 0 54 insert eta(1405)width:NumberofEntries 1 108 insert eta(1405)width:NumberofEntries 2 162 insert eta(1405)width:NumberofEntries 3 216 insert eta(1405)width:NumberofEntries 4 270 insert eta(1405)width:NumberofEntries 5 324 insert eta(1405)width:NumberofEntries 6 378 insert eta(1405)width:NumberofEntries 7 432 newdef /Herwig/Particles/eta(1405):Width_generator eta(1405)width # create Herwig::BaryonWidthGenerator Sigma(1660)-Width newdef Sigma(1660)-Width:Particle /Herwig/Particles/Sigma(1660)- newdef Sigma(1660)-Width:Prefactor 1 newdef Sigma(1660)-Width:BRNormalize 1 newdef Sigma(1660)-Width:BRMinimum 0.01 newdef Sigma(1660)-Width:Points 50 newdef Sigma(1660)-Width:InterpolationOrder 1 insert Sigma(1660)-Width:MEtype 0 1 insert Sigma(1660)-Width:MEtype 1 1 insert Sigma(1660)-Width:MEtype 2 1 insert Sigma(1660)-Width:MEtype 3 1 insert Sigma(1660)-Width:MEcode 0 101 insert Sigma(1660)-Width:MEcode 1 101 insert Sigma(1660)-Width:MEcode 2 101 insert Sigma(1660)-Width:MEcode 3 101 insert Sigma(1660)-Width:MEcoupling 0 0.684315 insert Sigma(1660)-Width:MEcoupling 1 1.89177 insert Sigma(1660)-Width:MEcoupling 2 1.87364 insert Sigma(1660)-Width:MEcoupling 3 0.380066 insert Sigma(1660)-Width:ModeOn 0 1 insert Sigma(1660)-Width:ModeOn 1 1 insert Sigma(1660)-Width:ModeOn 2 1 insert Sigma(1660)-Width:ModeOn 3 1 insert Sigma(1660)-Width:MinimumMasses 0 1.25525 insert Sigma(1660)-Width:MinimumMasses 1 1.33243 insert Sigma(1660)-Width:MinimumMasses 2 1.33221 insert Sigma(1660)-Width:MinimumMasses 3 1.43324 insert Sigma(1660)-Width:MEmass1 0 1.11568 insert Sigma(1660)-Width:MEmass1 1 1.19745 insert Sigma(1660)-Width:MEmass1 2 1.19264 insert Sigma(1660)-Width:MEmass1 3 0.939565 insert Sigma(1660)-Width:MEmass2 0 0.13957 insert Sigma(1660)-Width:MEmass2 1 0.134978 insert Sigma(1660)-Width:MEmass2 2 0.13957 insert Sigma(1660)-Width:MEmass2 3 0.493677 insert Sigma(1660)-Width:DecayModes 0 Sigma(1660)-->Lambda0,pi-; insert Sigma(1660)-Width:DecayModes 1 Sigma(1660)-->Sigma-,pi0; insert Sigma(1660)-Width:DecayModes 2 Sigma(1660)-->Sigma0,pi-; insert Sigma(1660)-Width:DecayModes 3 Sigma(1660)-->n0,K-; insert Sigma(1660)-Width:NumberofEntries 0 0 insert Sigma(1660)-Width:NumberofEntries 1 0 insert Sigma(1660)-Width:NumberofEntries 2 0 insert Sigma(1660)-Width:NumberofEntries 3 0 insert Sigma(1660)-Width:BaryonDecayers 0 /Herwig/Decays/SU3StrongRoper insert Sigma(1660)-Width:ModeLocation 0 38 insert Sigma(1660)-Width:BaryonDecayers 1 /Herwig/Decays/SU3StrongRoper insert Sigma(1660)-Width:ModeLocation 1 35 insert Sigma(1660)-Width:BaryonDecayers 2 /Herwig/Decays/SU3StrongRoper insert Sigma(1660)-Width:ModeLocation 2 34 insert Sigma(1660)-Width:BaryonDecayers 3 /Herwig/Decays/SU3StrongRoper insert Sigma(1660)-Width:ModeLocation 3 37 newdef /Herwig/Particles/Sigma(1660)-:Width_generator Sigma(1660)-Width newdef /Herwig/Particles/Sigmabar(1660)+:Width_generator Sigma(1660)-Width # create Herwig::BaryonWidthGenerator Sigma(1660)0Width newdef Sigma(1660)0Width:Particle /Herwig/Particles/Sigma(1660)0 newdef Sigma(1660)0Width:Prefactor 1 newdef Sigma(1660)0Width:BRNormalize 1 newdef Sigma(1660)0Width:BRMinimum 0.01 newdef Sigma(1660)0Width:Points 50 newdef Sigma(1660)0Width:InterpolationOrder 1 insert Sigma(1660)0Width:MEtype 0 1 insert Sigma(1660)0Width:MEtype 1 1 insert Sigma(1660)0Width:MEtype 2 1 insert Sigma(1660)0Width:MEtype 3 1 insert Sigma(1660)0Width:MEtype 4 1 insert Sigma(1660)0Width:MEcode 0 101 insert Sigma(1660)0Width:MEcode 1 101 insert Sigma(1660)0Width:MEcode 2 101 insert Sigma(1660)0Width:MEcode 3 101 insert Sigma(1660)0Width:MEcode 4 101 insert Sigma(1660)0Width:MEcoupling 0 0.681959 insert Sigma(1660)0Width:MEcoupling 1 1.90104 insert Sigma(1660)0Width:MEcoupling 2 1.85545 insert Sigma(1660)0Width:MEcoupling 3 0.384252 insert Sigma(1660)0Width:MEcoupling 4 0.378432 insert Sigma(1660)0Width:ModeOn 0 1 insert Sigma(1660)0Width:ModeOn 1 1 insert Sigma(1660)0Width:ModeOn 2 1 insert Sigma(1660)0Width:ModeOn 3 1 insert Sigma(1660)0Width:ModeOn 4 1 insert Sigma(1660)0Width:MinimumMasses 0 1.25066 insert Sigma(1660)0Width:MinimumMasses 1 1.33702 insert Sigma(1660)0Width:MinimumMasses 2 1.32894 insert Sigma(1660)0Width:MinimumMasses 3 1.43721 insert Sigma(1660)0Width:MinimumMasses 4 1.43195 insert Sigma(1660)0Width:MEmass1 0 1.11568 insert Sigma(1660)0Width:MEmass1 1 1.19745 insert Sigma(1660)0Width:MEmass1 2 1.18937 insert Sigma(1660)0Width:MEmass1 3 0.939565 insert Sigma(1660)0Width:MEmass1 4 0.938272 insert Sigma(1660)0Width:MEmass2 0 0.134978 insert Sigma(1660)0Width:MEmass2 1 0.13957 insert Sigma(1660)0Width:MEmass2 2 0.13957 insert Sigma(1660)0Width:MEmass2 3 0.497648 insert Sigma(1660)0Width:MEmass2 4 0.493677 insert Sigma(1660)0Width:DecayModes 0 Sigma(1660)0->Lambda0,pi0; insert Sigma(1660)0Width:DecayModes 1 Sigma(1660)0->Sigma-,pi+; insert Sigma(1660)0Width:DecayModes 2 Sigma(1660)0->Sigma+,pi-; insert Sigma(1660)0Width:DecayModes 3 Sigma(1660)0->n0,Kbar0; insert Sigma(1660)0Width:DecayModes 4 Sigma(1660)0->p+,K-; insert Sigma(1660)0Width:NumberofEntries 0 0 insert Sigma(1660)0Width:NumberofEntries 1 0 insert Sigma(1660)0Width:NumberofEntries 2 0 insert Sigma(1660)0Width:NumberofEntries 3 0 insert Sigma(1660)0Width:NumberofEntries 4 0 insert Sigma(1660)0Width:BaryonDecayers 0 /Herwig/Decays/SU3StrongRoper insert Sigma(1660)0Width:ModeLocation 0 33 insert Sigma(1660)0Width:BaryonDecayers 1 /Herwig/Decays/SU3StrongRoper insert Sigma(1660)0Width:ModeLocation 1 26 insert Sigma(1660)0Width:BaryonDecayers 2 /Herwig/Decays/SU3StrongRoper insert Sigma(1660)0Width:ModeLocation 2 27 insert Sigma(1660)0Width:BaryonDecayers 3 /Herwig/Decays/SU3StrongRoper insert Sigma(1660)0Width:ModeLocation 3 31 insert Sigma(1660)0Width:BaryonDecayers 4 /Herwig/Decays/SU3StrongRoper insert Sigma(1660)0Width:ModeLocation 4 30 newdef /Herwig/Particles/Sigma(1660)0:Width_generator Sigma(1660)0Width newdef /Herwig/Particles/Sigmabar(1660)0:Width_generator Sigma(1660)0Width # create Herwig::BaryonWidthGenerator Sigma(1660)+Width newdef Sigma(1660)+Width:Particle /Herwig/Particles/Sigma(1660)+ newdef Sigma(1660)+Width:Prefactor 1 newdef Sigma(1660)+Width:BRNormalize 1 newdef Sigma(1660)+Width:BRMinimum 0.01 newdef Sigma(1660)+Width:Points 50 newdef Sigma(1660)+Width:InterpolationOrder 1 insert Sigma(1660)+Width:MEtype 0 1 insert Sigma(1660)+Width:MEtype 1 1 insert Sigma(1660)+Width:MEtype 2 1 insert Sigma(1660)+Width:MEtype 3 1 insert Sigma(1660)+Width:MEcode 0 101 insert Sigma(1660)+Width:MEcode 1 101 insert Sigma(1660)+Width:MEcode 2 101 insert Sigma(1660)+Width:MEcode 3 101 insert Sigma(1660)+Width:MEcoupling 0 0.684315 insert Sigma(1660)+Width:MEcoupling 1 1.84674 insert Sigma(1660)+Width:MEcoupling 2 1.87364 insert Sigma(1660)+Width:MEcoupling 3 0.382572 insert Sigma(1660)+Width:ModeOn 0 1 insert Sigma(1660)+Width:ModeOn 1 1 insert Sigma(1660)+Width:ModeOn 2 1 insert Sigma(1660)+Width:ModeOn 3 1 insert Sigma(1660)+Width:MinimumMasses 0 1.25525 insert Sigma(1660)+Width:MinimumMasses 1 1.32435 insert Sigma(1660)+Width:MinimumMasses 2 1.33221 insert Sigma(1660)+Width:MinimumMasses 3 1.43592 insert Sigma(1660)+Width:MEmass1 0 1.11568 insert Sigma(1660)+Width:MEmass1 1 1.18937 insert Sigma(1660)+Width:MEmass1 2 1.19264 insert Sigma(1660)+Width:MEmass1 3 0.938272 insert Sigma(1660)+Width:MEmass2 0 0.13957 insert Sigma(1660)+Width:MEmass2 1 0.134978 insert Sigma(1660)+Width:MEmass2 2 0.13957 insert Sigma(1660)+Width:MEmass2 3 0.497648 insert Sigma(1660)+Width:DecayModes 0 Sigma(1660)+->Lambda0,pi+; insert Sigma(1660)+Width:DecayModes 1 Sigma(1660)+->Sigma+,pi0; insert Sigma(1660)+Width:DecayModes 2 Sigma(1660)+->Sigma0,pi+; insert Sigma(1660)+Width:DecayModes 3 Sigma(1660)+->p+,Kbar0; insert Sigma(1660)+Width:NumberofEntries 0 0 insert Sigma(1660)+Width:NumberofEntries 1 0 insert Sigma(1660)+Width:NumberofEntries 2 0 insert Sigma(1660)+Width:NumberofEntries 3 0 insert Sigma(1660)+Width:BaryonDecayers 0 /Herwig/Decays/SU3StrongRoper insert Sigma(1660)+Width:ModeLocation 0 24 insert Sigma(1660)+Width:BaryonDecayers 1 /Herwig/Decays/SU3StrongRoper insert Sigma(1660)+Width:ModeLocation 1 20 insert Sigma(1660)+Width:BaryonDecayers 2 /Herwig/Decays/SU3StrongRoper insert Sigma(1660)+Width:ModeLocation 2 21 insert Sigma(1660)+Width:BaryonDecayers 3 /Herwig/Decays/SU3StrongRoper insert Sigma(1660)+Width:ModeLocation 3 23 newdef /Herwig/Particles/Sigmabar(1660)-:Width_generator Sigma(1660)+Width newdef /Herwig/Particles/Sigma(1660)+:Width_generator Sigma(1660)+Width # create Herwig::BaryonWidthGenerator Lambda(1600)0Width newdef Lambda(1600)0Width:Particle /Herwig/Particles/Lambda(1600)0 newdef Lambda(1600)0Width:Prefactor 1 newdef Lambda(1600)0Width:BRNormalize 1 newdef Lambda(1600)0Width:BRMinimum 0.01 newdef Lambda(1600)0Width:Points 50 newdef Lambda(1600)0Width:InterpolationOrder 1 insert Lambda(1600)0Width:MEtype 0 1 insert Lambda(1600)0Width:MEtype 1 1 insert Lambda(1600)0Width:MEtype 2 1 insert Lambda(1600)0Width:MEtype 3 1 insert Lambda(1600)0Width:MEtype 4 1 insert Lambda(1600)0Width:MEcode 0 101 insert Lambda(1600)0Width:MEcode 1 101 insert Lambda(1600)0Width:MEcode 2 101 insert Lambda(1600)0Width:MEcode 3 101 insert Lambda(1600)0Width:MEcode 4 101 insert Lambda(1600)0Width:MEcoupling 0 0.970882 insert Lambda(1600)0Width:MEcoupling 1 0.999894 insert Lambda(1600)0Width:MEcoupling 2 0.976092 insert Lambda(1600)0Width:MEcoupling 3 0.740552 insert Lambda(1600)0Width:MEcoupling 4 0.724786 insert Lambda(1600)0Width:ModeOn 0 1 insert Lambda(1600)0Width:ModeOn 1 1 insert Lambda(1600)0Width:ModeOn 2 1 insert Lambda(1600)0Width:ModeOn 3 1 insert Lambda(1600)0Width:ModeOn 4 1 insert Lambda(1600)0Width:MinimumMasses 0 1.32894 insert Lambda(1600)0Width:MinimumMasses 1 1.33702 insert Lambda(1600)0Width:MinimumMasses 2 1.32762 insert Lambda(1600)0Width:MinimumMasses 3 1.43721 insert Lambda(1600)0Width:MinimumMasses 4 1.43195 insert Lambda(1600)0Width:MEmass1 0 1.18937 insert Lambda(1600)0Width:MEmass1 1 1.19745 insert Lambda(1600)0Width:MEmass1 2 1.19264 insert Lambda(1600)0Width:MEmass1 3 0.939565 insert Lambda(1600)0Width:MEmass1 4 0.938272 insert Lambda(1600)0Width:MEmass2 0 0.13957 insert Lambda(1600)0Width:MEmass2 1 0.13957 insert Lambda(1600)0Width:MEmass2 2 0.134978 insert Lambda(1600)0Width:MEmass2 3 0.497648 insert Lambda(1600)0Width:MEmass2 4 0.493677 insert Lambda(1600)0Width:DecayModes 0 Lambda(1600)0->Sigma+,pi-; insert Lambda(1600)0Width:DecayModes 1 Lambda(1600)0->Sigma-,pi+; insert Lambda(1600)0Width:DecayModes 2 Lambda(1600)0->Sigma0,pi0; insert Lambda(1600)0Width:DecayModes 3 Lambda(1600)0->n0,Kbar0; insert Lambda(1600)0Width:DecayModes 4 Lambda(1600)0->p+,K-; insert Lambda(1600)0Width:NumberofEntries 0 0 insert Lambda(1600)0Width:NumberofEntries 1 0 insert Lambda(1600)0Width:NumberofEntries 2 0 insert Lambda(1600)0Width:NumberofEntries 3 0 insert Lambda(1600)0Width:NumberofEntries 4 0 insert Lambda(1600)0Width:BaryonDecayers 0 /Herwig/Decays/SU3StrongRoper insert Lambda(1600)0Width:ModeLocation 0 13 insert Lambda(1600)0Width:BaryonDecayers 1 /Herwig/Decays/SU3StrongRoper insert Lambda(1600)0Width:ModeLocation 1 14 insert Lambda(1600)0Width:BaryonDecayers 2 /Herwig/Decays/SU3StrongRoper insert Lambda(1600)0Width:ModeLocation 2 12 insert Lambda(1600)0Width:BaryonDecayers 3 /Herwig/Decays/SU3StrongRoper insert Lambda(1600)0Width:ModeLocation 3 19 insert Lambda(1600)0Width:BaryonDecayers 4 /Herwig/Decays/SU3StrongRoper insert Lambda(1600)0Width:ModeLocation 4 18 newdef /Herwig/Particles/Lambda(1600)0:Width_generator Lambda(1600)0Width newdef /Herwig/Particles/Lambdabar(1600)0:Width_generator Lambda(1600)0Width # create Herwig::BaryonWidthGenerator Xi(1690)0Width newdef Xi(1690)0Width:Particle /Herwig/Particles/Xi(1690)0 newdef Xi(1690)0Width:Prefactor 1.16667 newdef Xi(1690)0Width:BRNormalize 1 newdef Xi(1690)0Width:BRMinimum 0.01 newdef Xi(1690)0Width:Points 50 newdef Xi(1690)0Width:InterpolationOrder 1 insert Xi(1690)0Width:MEtype 0 1 insert Xi(1690)0Width:MEtype 1 1 insert Xi(1690)0Width:MEtype 2 1 insert Xi(1690)0Width:MEcode 0 101 insert Xi(1690)0Width:MEcode 1 101 insert Xi(1690)0Width:MEcode 2 101 insert Xi(1690)0Width:MEcoupling 0 2.75906 insert Xi(1690)0Width:MEcoupling 1 1.86418 insert Xi(1690)0Width:MEcoupling 2 1 insert Xi(1690)0Width:ModeOn 0 1 insert Xi(1690)0Width:ModeOn 1 1 insert Xi(1690)0Width:ModeOn 2 1 insert Xi(1690)0Width:MinimumMasses 0 1.61333 insert Xi(1690)0Width:MinimumMasses 1 1.68305 insert Xi(1690)0Width:MinimumMasses 2 1.69029 insert Xi(1690)0Width:MEmass1 0 1.11568 insert Xi(1690)0Width:MEmass1 1 1.18937 insert Xi(1690)0Width:MEmass1 2 1.19264 insert Xi(1690)0Width:MEmass2 0 0.497648 insert Xi(1690)0Width:MEmass2 1 0.493677 insert Xi(1690)0Width:MEmass2 2 0.497648 insert Xi(1690)0Width:DecayModes 0 Xi(1690)0->Lambda0,Kbar0; insert Xi(1690)0Width:DecayModes 1 Xi(1690)0->Sigma+,K-; insert Xi(1690)0Width:DecayModes 2 Xi(1690)0->Sigma0,Kbar0; insert Xi(1690)0Width:NumberofEntries 0 0 insert Xi(1690)0Width:NumberofEntries 1 0 insert Xi(1690)0Width:NumberofEntries 2 0 insert Xi(1690)0Width:BaryonDecayers 0 /Herwig/Decays/SU3StrongRoper insert Xi(1690)0Width:ModeLocation 0 49 insert Xi(1690)0Width:BaryonDecayers 1 /Herwig/Decays/SU3StrongRoper insert Xi(1690)0Width:ModeLocation 1 45 insert Xi(1690)0Width:BaryonDecayers 2 /Herwig/Decays/SU3StrongRoper insert Xi(1690)0Width:ModeLocation 2 46 newdef /Herwig/Particles/Xi(1690)0:Width_generator Xi(1690)0Width newdef /Herwig/Particles/Xibar(1690)0:Width_generator Xi(1690)0Width # create Herwig::BaryonWidthGenerator Xi(1690)-Width newdef Xi(1690)-Width:Particle /Herwig/Particles/Xi(1690)- newdef Xi(1690)-Width:Prefactor 1.4 newdef Xi(1690)-Width:BRNormalize 1 newdef Xi(1690)-Width:BRMinimum 0.01 newdef Xi(1690)-Width:Points 50 newdef Xi(1690)-Width:InterpolationOrder 1 insert Xi(1690)-Width:MEtype 0 1 insert Xi(1690)-Width:MEtype 1 1 insert Xi(1690)-Width:MEtype 2 1 insert Xi(1690)-Width:MEcode 0 101 insert Xi(1690)-Width:MEcode 1 101 insert Xi(1690)-Width:MEcode 2 101 insert Xi(1690)-Width:MEcoupling 0 2.66358 insert Xi(1690)-Width:MEcoupling 1 1 insert Xi(1690)-Width:MEcoupling 2 3.00585 insert Xi(1690)-Width:ModeOn 0 1 insert Xi(1690)-Width:ModeOn 1 1 insert Xi(1690)-Width:ModeOn 2 1 insert Xi(1690)-Width:MinimumMasses 0 1.60936 insert Xi(1690)-Width:MinimumMasses 1 1.6951 insert Xi(1690)-Width:MinimumMasses 2 1.68632 insert Xi(1690)-Width:MEmass1 0 1.11568 insert Xi(1690)-Width:MEmass1 1 1.19745 insert Xi(1690)-Width:MEmass1 2 1.19264 insert Xi(1690)-Width:MEmass2 0 0.493677 insert Xi(1690)-Width:MEmass2 1 0.497648 insert Xi(1690)-Width:MEmass2 2 0.493677 insert Xi(1690)-Width:DecayModes 0 Xi(1690)-->Lambda0,K-; insert Xi(1690)-Width:DecayModes 1 Xi(1690)-->Sigma-,Kbar0; insert Xi(1690)-Width:DecayModes 2 Xi(1690)-->Sigma0,K-; insert Xi(1690)-Width:NumberofEntries 0 0 insert Xi(1690)-Width:NumberofEntries 1 0 insert Xi(1690)-Width:NumberofEntries 2 0 insert Xi(1690)-Width:BaryonDecayers 0 /Herwig/Decays/SU3StrongRoper insert Xi(1690)-Width:ModeLocation 0 44 insert Xi(1690)-Width:BaryonDecayers 1 /Herwig/Decays/SU3StrongRoper insert Xi(1690)-Width:ModeLocation 1 40 insert Xi(1690)-Width:BaryonDecayers 2 /Herwig/Decays/SU3StrongRoper insert Xi(1690)-Width:ModeLocation 2 41 newdef /Herwig/Particles/Xi(1690)-:Width_generator Xi(1690)-Width newdef /Herwig/Particles/Xibar(1690)+:Width_generator Xi(1690)-Width # create Herwig::BaryonWidthGenerator Xi_b1*-Width newdef Xi_b1*-Width:Particle /Herwig/Particles/Xi_b1*- newdef Xi_b1*-Width:Prefactor 0.999993 newdef Xi_b1*-Width:BRNormalize 1 newdef Xi_b1*-Width:BRMinimum 0.01 newdef Xi_b1*-Width:Points 50 newdef Xi_b1*-Width:InterpolationOrder 1 insert Xi_b1*-Width:MEtype 0 2 insert Xi_b1*-Width:MEtype 1 2 insert Xi_b1*-Width:MEtype 2 2 insert Xi_b1*-Width:MEtype 3 2 insert Xi_b1*-Width:MEcode 0 0 insert Xi_b1*-Width:MEcode 1 0 insert Xi_b1*-Width:MEcode 2 0 insert Xi_b1*-Width:MEcode 3 0 insert Xi_b1*-Width:MEcoupling 0 0.868496 insert Xi_b1*-Width:MEcoupling 1 0.875411 insert Xi_b1*-Width:MEcoupling 2 0.798342 insert Xi_b1*-Width:MEcoupling 3 0.856879 insert Xi_b1*-Width:ModeOn 0 1 insert Xi_b1*-Width:ModeOn 1 1 insert Xi_b1*-Width:ModeOn 2 1 insert Xi_b1*-Width:ModeOn 3 1 insert Xi_b1*-Width:MinimumMasses 0 6.03488 insert Xi_b1*-Width:MinimumMasses 1 6.03703 insert Xi_b1*-Width:MinimumMasses 2 6.06798 insert Xi_b1*-Width:MinimumMasses 3 6.07307 insert Xi_b1*-Width:MEmass1 0 5.8999 insert Xi_b1*-Width:MEmass1 1 5.8976 insert Xi_b1*-Width:MEmass1 2 5.968 insert Xi_b1*-Width:MEmass1 3 5.9685 insert Xi_b1*-Width:MEmass2 0 0.134978 insert Xi_b1*-Width:MEmass2 1 0.13957 insert Xi_b1*-Width:MEmass2 2 0.134978 insert Xi_b1*-Width:MEmass2 3 0.13957 insert Xi_b1*-Width:DecayModes 0 Xi_b1*-->Xi_b'-,pi0; insert Xi_b1*-Width:DecayModes 1 Xi_b1*-->Xi_b'0,pi-; insert Xi_b1*-Width:DecayModes 2 Xi_b1*-->Xi_b*-,pi0; insert Xi_b1*-Width:DecayModes 3 Xi_b1*-->Xi_b*0,pi-; insert Xi_b1*-Width:InterpolationMasses 0 6.1271204 insert Xi_b1*-Width:InterpolationMasses 1 6.1276102 insert Xi_b1*-Width:InterpolationMasses 2 6.1281 insert Xi_b1*-Width:InterpolationMasses 3 6.1285898 insert Xi_b1*-Width:InterpolationMasses 4 6.1290796 insert Xi_b1*-Width:InterpolationMasses 5 6.1295694 insert Xi_b1*-Width:InterpolationMasses 6 6.1300592 insert Xi_b1*-Width:InterpolationMasses 7 6.130549 insert Xi_b1*-Width:InterpolationMasses 8 6.1310388 insert Xi_b1*-Width:InterpolationMasses 9 6.1315286 insert Xi_b1*-Width:InterpolationMasses 10 6.1320184 insert Xi_b1*-Width:InterpolationMasses 11 6.1325082 insert Xi_b1*-Width:InterpolationMasses 12 6.132998 insert Xi_b1*-Width:InterpolationMasses 13 6.1334878 insert Xi_b1*-Width:InterpolationMasses 14 6.1339776 insert Xi_b1*-Width:InterpolationMasses 15 6.1344673 insert Xi_b1*-Width:InterpolationMasses 16 6.1349571 insert Xi_b1*-Width:InterpolationMasses 17 6.1354469 insert Xi_b1*-Width:InterpolationMasses 18 6.1359367 insert Xi_b1*-Width:InterpolationMasses 19 6.1364265 insert Xi_b1*-Width:InterpolationMasses 20 6.1369163 insert Xi_b1*-Width:InterpolationMasses 21 6.1374061 insert Xi_b1*-Width:InterpolationMasses 22 6.1378959 insert Xi_b1*-Width:InterpolationMasses 23 6.1383857 insert Xi_b1*-Width:InterpolationMasses 24 6.1388755 insert Xi_b1*-Width:InterpolationMasses 25 6.1393653 insert Xi_b1*-Width:InterpolationMasses 26 6.1398551 insert Xi_b1*-Width:InterpolationMasses 27 6.1403449 insert Xi_b1*-Width:InterpolationMasses 28 6.1408347 insert Xi_b1*-Width:InterpolationMasses 29 6.1413245 insert Xi_b1*-Width:InterpolationMasses 30 6.1418143 insert Xi_b1*-Width:InterpolationMasses 31 6.1423041 insert Xi_b1*-Width:InterpolationMasses 32 6.1427939 insert Xi_b1*-Width:InterpolationMasses 33 6.1432837 insert Xi_b1*-Width:InterpolationMasses 34 6.1437735 insert Xi_b1*-Width:InterpolationMasses 35 6.1442633 insert Xi_b1*-Width:InterpolationMasses 36 6.1447531 insert Xi_b1*-Width:InterpolationMasses 37 6.1452429 insert Xi_b1*-Width:InterpolationMasses 38 6.1457327 insert Xi_b1*-Width:InterpolationMasses 39 6.1462224 insert Xi_b1*-Width:InterpolationMasses 40 6.1467122 insert Xi_b1*-Width:InterpolationMasses 41 6.147202 insert Xi_b1*-Width:InterpolationMasses 42 6.1476918 insert Xi_b1*-Width:InterpolationMasses 43 6.1481816 insert Xi_b1*-Width:InterpolationMasses 44 6.1486714 insert Xi_b1*-Width:InterpolationMasses 45 6.1491612 insert Xi_b1*-Width:InterpolationMasses 46 6.149651 insert Xi_b1*-Width:InterpolationMasses 47 6.1501408 insert Xi_b1*-Width:InterpolationMasses 48 6.1506306 insert Xi_b1*-Width:InterpolationMasses 49 6.1511204 insert Xi_b1*-Width:InterpolationMasses 50 6.1516102 insert Xi_b1*-Width:InterpolationMasses 51 6.1521 insert Xi_b1*-Width:InterpolationMasses 52 6.1525898 insert Xi_b1*-Width:InterpolationMasses 53 6.1530796 insert Xi_b1*-Width:InterpolationMasses 54 6.1271204 insert Xi_b1*-Width:InterpolationMasses 55 6.1276102 insert Xi_b1*-Width:InterpolationMasses 56 6.1281 insert Xi_b1*-Width:InterpolationMasses 57 6.1285898 insert Xi_b1*-Width:InterpolationMasses 58 6.1290796 insert Xi_b1*-Width:InterpolationMasses 59 6.1295694 insert Xi_b1*-Width:InterpolationMasses 60 6.1300592 insert Xi_b1*-Width:InterpolationMasses 61 6.130549 insert Xi_b1*-Width:InterpolationMasses 62 6.1310388 insert Xi_b1*-Width:InterpolationMasses 63 6.1315286 insert Xi_b1*-Width:InterpolationMasses 64 6.1320184 insert Xi_b1*-Width:InterpolationMasses 65 6.1325082 insert Xi_b1*-Width:InterpolationMasses 66 6.132998 insert Xi_b1*-Width:InterpolationMasses 67 6.1334878 insert Xi_b1*-Width:InterpolationMasses 68 6.1339776 insert Xi_b1*-Width:InterpolationMasses 69 6.1344673 insert Xi_b1*-Width:InterpolationMasses 70 6.1349571 insert Xi_b1*-Width:InterpolationMasses 71 6.1354469 insert Xi_b1*-Width:InterpolationMasses 72 6.1359367 insert Xi_b1*-Width:InterpolationMasses 73 6.1364265 insert Xi_b1*-Width:InterpolationMasses 74 6.1369163 insert Xi_b1*-Width:InterpolationMasses 75 6.1374061 insert Xi_b1*-Width:InterpolationMasses 76 6.1378959 insert Xi_b1*-Width:InterpolationMasses 77 6.1383857 insert Xi_b1*-Width:InterpolationMasses 78 6.1388755 insert Xi_b1*-Width:InterpolationMasses 79 6.1393653 insert Xi_b1*-Width:InterpolationMasses 80 6.1398551 insert Xi_b1*-Width:InterpolationMasses 81 6.1403449 insert Xi_b1*-Width:InterpolationMasses 82 6.1408347 insert Xi_b1*-Width:InterpolationMasses 83 6.1413245 insert Xi_b1*-Width:InterpolationMasses 84 6.1418143 insert Xi_b1*-Width:InterpolationMasses 85 6.1423041 insert Xi_b1*-Width:InterpolationMasses 86 6.1427939 insert Xi_b1*-Width:InterpolationMasses 87 6.1432837 insert Xi_b1*-Width:InterpolationMasses 88 6.1437735 insert Xi_b1*-Width:InterpolationMasses 89 6.1442633 insert Xi_b1*-Width:InterpolationMasses 90 6.1447531 insert Xi_b1*-Width:InterpolationMasses 91 6.1452429 insert Xi_b1*-Width:InterpolationMasses 92 6.1457327 insert Xi_b1*-Width:InterpolationMasses 93 6.1462224 insert Xi_b1*-Width:InterpolationMasses 94 6.1467122 insert Xi_b1*-Width:InterpolationMasses 95 6.147202 insert Xi_b1*-Width:InterpolationMasses 96 6.1476918 insert Xi_b1*-Width:InterpolationMasses 97 6.1481816 insert Xi_b1*-Width:InterpolationMasses 98 6.1486714 insert Xi_b1*-Width:InterpolationMasses 99 6.1491612 insert Xi_b1*-Width:InterpolationMasses 100 6.149651 insert Xi_b1*-Width:InterpolationMasses 101 6.1501408 insert Xi_b1*-Width:InterpolationMasses 102 6.1506306 insert Xi_b1*-Width:InterpolationMasses 103 6.1511204 insert Xi_b1*-Width:InterpolationMasses 104 6.1516102 insert Xi_b1*-Width:InterpolationMasses 105 6.1521 insert Xi_b1*-Width:InterpolationMasses 106 6.1525898 insert Xi_b1*-Width:InterpolationMasses 107 6.1530796 insert Xi_b1*-Width:InterpolationMasses 108 6.1271204 insert Xi_b1*-Width:InterpolationMasses 109 6.1276102 insert Xi_b1*-Width:InterpolationMasses 110 6.1281 insert Xi_b1*-Width:InterpolationMasses 111 6.1285898 insert Xi_b1*-Width:InterpolationMasses 112 6.1290796 insert Xi_b1*-Width:InterpolationMasses 113 6.1295694 insert Xi_b1*-Width:InterpolationMasses 114 6.1300592 insert Xi_b1*-Width:InterpolationMasses 115 6.130549 insert Xi_b1*-Width:InterpolationMasses 116 6.1310388 insert Xi_b1*-Width:InterpolationMasses 117 6.1315286 insert Xi_b1*-Width:InterpolationMasses 118 6.1320184 insert Xi_b1*-Width:InterpolationMasses 119 6.1325082 insert Xi_b1*-Width:InterpolationMasses 120 6.132998 insert Xi_b1*-Width:InterpolationMasses 121 6.1334878 insert Xi_b1*-Width:InterpolationMasses 122 6.1339776 insert Xi_b1*-Width:InterpolationMasses 123 6.1344673 insert Xi_b1*-Width:InterpolationMasses 124 6.1349571 insert Xi_b1*-Width:InterpolationMasses 125 6.1354469 insert Xi_b1*-Width:InterpolationMasses 126 6.1359367 insert Xi_b1*-Width:InterpolationMasses 127 6.1364265 insert Xi_b1*-Width:InterpolationMasses 128 6.1369163 insert Xi_b1*-Width:InterpolationMasses 129 6.1374061 insert Xi_b1*-Width:InterpolationMasses 130 6.1378959 insert Xi_b1*-Width:InterpolationMasses 131 6.1383857 insert Xi_b1*-Width:InterpolationMasses 132 6.1388755 insert Xi_b1*-Width:InterpolationMasses 133 6.1393653 insert Xi_b1*-Width:InterpolationMasses 134 6.1398551 insert Xi_b1*-Width:InterpolationMasses 135 6.1403449 insert Xi_b1*-Width:InterpolationMasses 136 6.1408347 insert Xi_b1*-Width:InterpolationMasses 137 6.1413245 insert Xi_b1*-Width:InterpolationMasses 138 6.1418143 insert Xi_b1*-Width:InterpolationMasses 139 6.1423041 insert Xi_b1*-Width:InterpolationMasses 140 6.1427939 insert Xi_b1*-Width:InterpolationMasses 141 6.1432837 insert Xi_b1*-Width:InterpolationMasses 142 6.1437735 insert Xi_b1*-Width:InterpolationMasses 143 6.1442633 insert Xi_b1*-Width:InterpolationMasses 144 6.1447531 insert Xi_b1*-Width:InterpolationMasses 145 6.1452429 insert Xi_b1*-Width:InterpolationMasses 146 6.1457327 insert Xi_b1*-Width:InterpolationMasses 147 6.1462224 insert Xi_b1*-Width:InterpolationMasses 148 6.1467122 insert Xi_b1*-Width:InterpolationMasses 149 6.147202 insert Xi_b1*-Width:InterpolationMasses 150 6.1476918 insert Xi_b1*-Width:InterpolationMasses 151 6.1481816 insert Xi_b1*-Width:InterpolationMasses 152 6.1486714 insert Xi_b1*-Width:InterpolationMasses 153 6.1491612 insert Xi_b1*-Width:InterpolationMasses 154 6.149651 insert Xi_b1*-Width:InterpolationMasses 155 6.1501408 insert Xi_b1*-Width:InterpolationMasses 156 6.1506306 insert Xi_b1*-Width:InterpolationMasses 157 6.1511204 insert Xi_b1*-Width:InterpolationMasses 158 6.1516102 insert Xi_b1*-Width:InterpolationMasses 159 6.1521 insert Xi_b1*-Width:InterpolationMasses 160 6.1525898 insert Xi_b1*-Width:InterpolationMasses 161 6.1530796 insert Xi_b1*-Width:InterpolationMasses 162 6.1271204 insert Xi_b1*-Width:InterpolationMasses 163 6.1276102 insert Xi_b1*-Width:InterpolationMasses 164 6.1281 insert Xi_b1*-Width:InterpolationMasses 165 6.1285898 insert Xi_b1*-Width:InterpolationMasses 166 6.1290796 insert Xi_b1*-Width:InterpolationMasses 167 6.1295694 insert Xi_b1*-Width:InterpolationMasses 168 6.1300592 insert Xi_b1*-Width:InterpolationMasses 169 6.130549 insert Xi_b1*-Width:InterpolationMasses 170 6.1310388 insert Xi_b1*-Width:InterpolationMasses 171 6.1315286 insert Xi_b1*-Width:InterpolationMasses 172 6.1320184 insert Xi_b1*-Width:InterpolationMasses 173 6.1325082 insert Xi_b1*-Width:InterpolationMasses 174 6.132998 insert Xi_b1*-Width:InterpolationMasses 175 6.1334878 insert Xi_b1*-Width:InterpolationMasses 176 6.1339776 insert Xi_b1*-Width:InterpolationMasses 177 6.1344673 insert Xi_b1*-Width:InterpolationMasses 178 6.1349571 insert Xi_b1*-Width:InterpolationMasses 179 6.1354469 insert Xi_b1*-Width:InterpolationMasses 180 6.1359367 insert Xi_b1*-Width:InterpolationMasses 181 6.1364265 insert Xi_b1*-Width:InterpolationMasses 182 6.1369163 insert Xi_b1*-Width:InterpolationMasses 183 6.1374061 insert Xi_b1*-Width:InterpolationMasses 184 6.1378959 insert Xi_b1*-Width:InterpolationMasses 185 6.1383857 insert Xi_b1*-Width:InterpolationMasses 186 6.1388755 insert Xi_b1*-Width:InterpolationMasses 187 6.1393653 insert Xi_b1*-Width:InterpolationMasses 188 6.1398551 insert Xi_b1*-Width:InterpolationMasses 189 6.1403449 insert Xi_b1*-Width:InterpolationMasses 190 6.1408347 insert Xi_b1*-Width:InterpolationMasses 191 6.1413245 insert Xi_b1*-Width:InterpolationMasses 192 6.1418143 insert Xi_b1*-Width:InterpolationMasses 193 6.1423041 insert Xi_b1*-Width:InterpolationMasses 194 6.1427939 insert Xi_b1*-Width:InterpolationMasses 195 6.1432837 insert Xi_b1*-Width:InterpolationMasses 196 6.1437735 insert Xi_b1*-Width:InterpolationMasses 197 6.1442633 insert Xi_b1*-Width:InterpolationMasses 198 6.1447531 insert Xi_b1*-Width:InterpolationMasses 199 6.1452429 insert Xi_b1*-Width:InterpolationMasses 200 6.1457327 insert Xi_b1*-Width:InterpolationMasses 201 6.1462224 insert Xi_b1*-Width:InterpolationMasses 202 6.1467122 insert Xi_b1*-Width:InterpolationMasses 203 6.147202 insert Xi_b1*-Width:InterpolationMasses 204 6.1476918 insert Xi_b1*-Width:InterpolationMasses 205 6.1481816 insert Xi_b1*-Width:InterpolationMasses 206 6.1486714 insert Xi_b1*-Width:InterpolationMasses 207 6.1491612 insert Xi_b1*-Width:InterpolationMasses 208 6.149651 insert Xi_b1*-Width:InterpolationMasses 209 6.1501408 insert Xi_b1*-Width:InterpolationMasses 210 6.1506306 insert Xi_b1*-Width:InterpolationMasses 211 6.1511204 insert Xi_b1*-Width:InterpolationMasses 212 6.1516102 insert Xi_b1*-Width:InterpolationMasses 213 6.1521 insert Xi_b1*-Width:InterpolationMasses 214 6.1525898 insert Xi_b1*-Width:InterpolationMasses 215 6.1530796 insert Xi_b1*-Width:InterpolationWidths 0 0.00015315004 insert Xi_b1*-Width:InterpolationWidths 1 0.00015567361 insert Xi_b1*-Width:InterpolationWidths 2 0.00015822702 insert Xi_b1*-Width:InterpolationWidths 3 0.00016081048 insert Xi_b1*-Width:InterpolationWidths 4 0.00016342423 insert Xi_b1*-Width:InterpolationWidths 5 0.00016606849 insert Xi_b1*-Width:InterpolationWidths 6 0.00016874349 insert Xi_b1*-Width:InterpolationWidths 7 0.00017144947 insert Xi_b1*-Width:InterpolationWidths 8 0.00017418664 insert Xi_b1*-Width:InterpolationWidths 9 0.00017695526 insert Xi_b1*-Width:InterpolationWidths 10 0.00017975554 insert Xi_b1*-Width:InterpolationWidths 11 0.00018258772 insert Xi_b1*-Width:InterpolationWidths 12 0.00018545204 insert Xi_b1*-Width:InterpolationWidths 13 0.00018834873 insert Xi_b1*-Width:InterpolationWidths 14 0.00019127803 insert Xi_b1*-Width:InterpolationWidths 15 0.00019424018 insert Xi_b1*-Width:InterpolationWidths 16 0.00019723541 insert Xi_b1*-Width:InterpolationWidths 17 0.00020026396 insert Xi_b1*-Width:InterpolationWidths 18 0.00020332608 insert Xi_b1*-Width:InterpolationWidths 19 0.00020642201 insert Xi_b1*-Width:InterpolationWidths 20 0.00020955199 insert Xi_b1*-Width:InterpolationWidths 21 0.00021271625 insert Xi_b1*-Width:InterpolationWidths 22 0.00021591505 insert Xi_b1*-Width:InterpolationWidths 23 0.00021914864 insert Xi_b1*-Width:InterpolationWidths 24 0.00022241725 insert Xi_b1*-Width:InterpolationWidths 25 0.00022572113 insert Xi_b1*-Width:InterpolationWidths 26 0.00022906053 insert Xi_b1*-Width:InterpolationWidths 27 0.00023243571 insert Xi_b1*-Width:InterpolationWidths 28 0.0002358469 insert Xi_b1*-Width:InterpolationWidths 29 0.00023929436 insert Xi_b1*-Width:InterpolationWidths 30 0.00024277835 insert Xi_b1*-Width:InterpolationWidths 31 0.00024629911 insert Xi_b1*-Width:InterpolationWidths 32 0.0002498569 insert Xi_b1*-Width:InterpolationWidths 33 0.00025345197 insert Xi_b1*-Width:InterpolationWidths 34 0.00025708459 insert Xi_b1*-Width:InterpolationWidths 35 0.00026075499 insert Xi_b1*-Width:InterpolationWidths 36 0.00026446345 insert Xi_b1*-Width:InterpolationWidths 37 0.00026821022 insert Xi_b1*-Width:InterpolationWidths 38 0.00027199556 insert Xi_b1*-Width:InterpolationWidths 39 0.00027581973 insert Xi_b1*-Width:InterpolationWidths 40 0.00027968299 insert Xi_b1*-Width:InterpolationWidths 41 0.00028358561 insert Xi_b1*-Width:InterpolationWidths 42 0.00028752784 insert Xi_b1*-Width:InterpolationWidths 43 0.00029150995 insert Xi_b1*-Width:InterpolationWidths 44 0.00029553221 insert Xi_b1*-Width:InterpolationWidths 45 0.00029959489 insert Xi_b1*-Width:InterpolationWidths 46 0.00030369824 insert Xi_b1*-Width:InterpolationWidths 47 0.00030784254 insert Xi_b1*-Width:InterpolationWidths 48 0.00031202805 insert Xi_b1*-Width:InterpolationWidths 49 0.00031625505 insert Xi_b1*-Width:InterpolationWidths 50 0.00032052381 insert Xi_b1*-Width:InterpolationWidths 51 0.0003248346 insert Xi_b1*-Width:InterpolationWidths 52 0.00032918769 insert Xi_b1*-Width:InterpolationWidths 53 0.00033358336 insert Xi_b1*-Width:InterpolationWidths 54 0.00030108835 insert Xi_b1*-Width:InterpolationWidths 55 0.00030613335 insert Xi_b1*-Width:InterpolationWidths 56 0.0003112387 insert Xi_b1*-Width:InterpolationWidths 57 0.00031640487 insert Xi_b1*-Width:InterpolationWidths 58 0.00032163231 insert Xi_b1*-Width:InterpolationWidths 59 0.00032692149 insert Xi_b1*-Width:InterpolationWidths 60 0.00033227287 insert Xi_b1*-Width:InterpolationWidths 61 0.00033768693 insert Xi_b1*-Width:InterpolationWidths 62 0.00034316412 insert Xi_b1*-Width:InterpolationWidths 63 0.00034870493 insert Xi_b1*-Width:InterpolationWidths 64 0.00035430982 insert Xi_b1*-Width:InterpolationWidths 65 0.00035997926 insert Xi_b1*-Width:InterpolationWidths 66 0.00036571375 insert Xi_b1*-Width:InterpolationWidths 67 0.00037151374 insert Xi_b1*-Width:InterpolationWidths 68 0.00037737973 insert Xi_b1*-Width:InterpolationWidths 69 0.00038331219 insert Xi_b1*-Width:InterpolationWidths 70 0.00038931161 insert Xi_b1*-Width:InterpolationWidths 71 0.00039537848 insert Xi_b1*-Width:InterpolationWidths 72 0.00040151328 insert Xi_b1*-Width:InterpolationWidths 73 0.0004077165 insert Xi_b1*-Width:InterpolationWidths 74 0.00041398864 insert Xi_b1*-Width:InterpolationWidths 75 0.00042033018 insert Xi_b1*-Width:InterpolationWidths 76 0.00042674162 insert Xi_b1*-Width:InterpolationWidths 77 0.00043322346 insert Xi_b1*-Width:InterpolationWidths 78 0.0004397762 insert Xi_b1*-Width:InterpolationWidths 79 0.00044640034 insert Xi_b1*-Width:InterpolationWidths 80 0.00045309638 insert Xi_b1*-Width:InterpolationWidths 81 0.00045986483 insert Xi_b1*-Width:InterpolationWidths 82 0.00046670619 insert Xi_b1*-Width:InterpolationWidths 83 0.00047362097 insert Xi_b1*-Width:InterpolationWidths 84 0.00048060968 insert Xi_b1*-Width:InterpolationWidths 85 0.00048767284 insert Xi_b1*-Width:InterpolationWidths 86 0.00049481095 insert Xi_b1*-Width:InterpolationWidths 87 0.00050202454 insert Xi_b1*-Width:InterpolationWidths 88 0.00050931413 insert Xi_b1*-Width:InterpolationWidths 89 0.00051668022 insert Xi_b1*-Width:InterpolationWidths 90 0.00052412336 insert Xi_b1*-Width:InterpolationWidths 91 0.00053164405 insert Xi_b1*-Width:InterpolationWidths 92 0.00053924282 insert Xi_b1*-Width:InterpolationWidths 93 0.00054692021 insert Xi_b1*-Width:InterpolationWidths 94 0.00055467674 insert Xi_b1*-Width:InterpolationWidths 95 0.00056251294 insert Xi_b1*-Width:InterpolationWidths 96 0.00057042935 insert Xi_b1*-Width:InterpolationWidths 97 0.00057842651 insert Xi_b1*-Width:InterpolationWidths 98 0.00058650494 insert Xi_b1*-Width:InterpolationWidths 99 0.00059466519 insert Xi_b1*-Width:InterpolationWidths 100 0.00060290781 insert Xi_b1*-Width:InterpolationWidths 101 0.00061123333 insert Xi_b1*-Width:InterpolationWidths 102 0.00061964229 insert Xi_b1*-Width:InterpolationWidths 103 0.00062813526 insert Xi_b1*-Width:InterpolationWidths 104 0.00063671277 insert Xi_b1*-Width:InterpolationWidths 105 0.00064537538 insert Xi_b1*-Width:InterpolationWidths 106 0.00065412363 insert Xi_b1*-Width:InterpolationWidths 107 0.0006629581 insert Xi_b1*-Width:InterpolationWidths 108 0.0001946812 insert Xi_b1*-Width:InterpolationWidths 109 0.00019698788 insert Xi_b1*-Width:InterpolationWidths 110 0.00019927735 insert Xi_b1*-Width:InterpolationWidths 111 0.00020155011 insert Xi_b1*-Width:InterpolationWidths 112 0.00020380669 insert Xi_b1*-Width:InterpolationWidths 113 0.00020604756 insert Xi_b1*-Width:InterpolationWidths 114 0.00020827317 insert Xi_b1*-Width:InterpolationWidths 115 0.00021048397 insert Xi_b1*-Width:InterpolationWidths 116 0.00021268037 insert Xi_b1*-Width:InterpolationWidths 117 0.00021486276 insert Xi_b1*-Width:InterpolationWidths 118 0.00021703155 insert Xi_b1*-Width:InterpolationWidths 119 0.00021918708 insert Xi_b1*-Width:InterpolationWidths 120 0.00022132972 insert Xi_b1*-Width:InterpolationWidths 121 0.00022345979 insert Xi_b1*-Width:InterpolationWidths 122 0.00022557763 insert Xi_b1*-Width:InterpolationWidths 123 0.00022768354 insert Xi_b1*-Width:InterpolationWidths 124 0.00022977782 insert Xi_b1*-Width:InterpolationWidths 125 0.00023186076 insert Xi_b1*-Width:InterpolationWidths 126 0.00023393263 insert Xi_b1*-Width:InterpolationWidths 127 0.00023599371 insert Xi_b1*-Width:InterpolationWidths 128 0.00023804424 insert Xi_b1*-Width:InterpolationWidths 129 0.00024008447 insert Xi_b1*-Width:InterpolationWidths 130 0.00024211465 insert Xi_b1*-Width:InterpolationWidths 131 0.00024412484 insert Xi_b1*-Width:InterpolationWidths 132 0.00024611411 insert Xi_b1*-Width:InterpolationWidths 133 0.00024808725 insert Xi_b1*-Width:InterpolationWidths 134 0.00025004598 insert Xi_b1*-Width:InterpolationWidths 135 0.00025199137 insert Xi_b1*-Width:InterpolationWidths 136 0.00025392431 insert Xi_b1*-Width:InterpolationWidths 137 0.00025584516 insert Xi_b1*-Width:InterpolationWidths 138 0.0002577546 insert Xi_b1*-Width:InterpolationWidths 139 0.00025965306 insert Xi_b1*-Width:InterpolationWidths 140 0.00026154094 insert Xi_b1*-Width:InterpolationWidths 141 0.00026341859 insert Xi_b1*-Width:InterpolationWidths 142 0.00026528631 insert Xi_b1*-Width:InterpolationWidths 143 0.00026714443 insert Xi_b1*-Width:InterpolationWidths 144 0.00026899319 insert Xi_b1*-Width:InterpolationWidths 145 0.00027083286 insert Xi_b1*-Width:InterpolationWidths 146 0.00027266368 insert Xi_b1*-Width:InterpolationWidths 147 0.00027448588 insert Xi_b1*-Width:InterpolationWidths 148 0.00027629966 insert Xi_b1*-Width:InterpolationWidths 149 0.00027810523 insert Xi_b1*-Width:InterpolationWidths 150 0.00027990278 insert Xi_b1*-Width:InterpolationWidths 151 0.00028169249 insert Xi_b1*-Width:InterpolationWidths 152 0.00028347455 insert Xi_b1*-Width:InterpolationWidths 153 0.0002852491 insert Xi_b1*-Width:InterpolationWidths 154 0.00028701632 insert Xi_b1*-Width:InterpolationWidths 155 0.00028877637 insert Xi_b1*-Width:InterpolationWidths 156 0.00029052937 insert Xi_b1*-Width:InterpolationWidths 157 0.00029227549 insert Xi_b1*-Width:InterpolationWidths 158 0.00029401485 insert Xi_b1*-Width:InterpolationWidths 159 0.0002957476 insert Xi_b1*-Width:InterpolationWidths 160 0.00029747384 insert Xi_b1*-Width:InterpolationWidths 161 0.00029919372 insert Xi_b1*-Width:InterpolationWidths 162 0.00034382297 insert Xi_b1*-Width:InterpolationWidths 163 0.0003489415 insert Xi_b1*-Width:InterpolationWidths 164 0.00035400967 insert Xi_b1*-Width:InterpolationWidths 165 0.00035902937 insert Xi_b1*-Width:InterpolationWidths 166 0.00036400238 insert Xi_b1*-Width:InterpolationWidths 167 0.00036893037 insert Xi_b1*-Width:InterpolationWidths 168 0.00037381494 insert Xi_b1*-Width:InterpolationWidths 169 0.00037865756 insert Xi_b1*-Width:InterpolationWidths 170 0.00038345967 insert Xi_b1*-Width:InterpolationWidths 171 0.0003882226 insert Xi_b1*-Width:InterpolationWidths 172 0.00039294764 insert Xi_b1*-Width:InterpolationWidths 173 0.00039763597 insert Xi_b1*-Width:InterpolationWidths 174 0.00040228877 insert Xi_b1*-Width:InterpolationWidths 175 0.00040690712 insert Xi_b1*-Width:InterpolationWidths 176 0.00041149207 insert Xi_b1*-Width:InterpolationWidths 177 0.00041604461 insert Xi_b1*-Width:InterpolationWidths 178 0.00042056568 insert Xi_b1*-Width:InterpolationWidths 179 0.0004250562 insert Xi_b1*-Width:InterpolationWidths 180 0.00042951703 insert Xi_b1*-Width:InterpolationWidths 181 0.00043394899 insert Xi_b1*-Width:InterpolationWidths 182 0.00043835288 insert Xi_b1*-Width:InterpolationWidths 183 0.00044272945 insert Xi_b1*-Width:InterpolationWidths 184 0.00044707944 insert Xi_b1*-Width:InterpolationWidths 185 0.00045140354 insert Xi_b1*-Width:InterpolationWidths 186 0.00045570242 insert Xi_b1*-Width:InterpolationWidths 187 0.00045997672 insert Xi_b1*-Width:InterpolationWidths 188 0.00046422706 insert Xi_b1*-Width:InterpolationWidths 189 0.00046845403 insert Xi_b1*-Width:InterpolationWidths 190 0.0004726582 insert Xi_b1*-Width:InterpolationWidths 191 0.00047684012 insert Xi_b1*-Width:InterpolationWidths 192 0.00048100032 insert Xi_b1*-Width:InterpolationWidths 193 0.00048513932 insert Xi_b1*-Width:InterpolationWidths 194 0.00048925759 insert Xi_b1*-Width:InterpolationWidths 195 0.00049334707 insert Xi_b1*-Width:InterpolationWidths 196 0.00049738815 insert Xi_b1*-Width:InterpolationWidths 197 0.00050139387 insert Xi_b1*-Width:InterpolationWidths 198 0.00050536888 insert Xi_b1*-Width:InterpolationWidths 199 0.00050931578 insert Xi_b1*-Width:InterpolationWidths 200 0.00051323661 insert Xi_b1*-Width:InterpolationWidths 201 0.00051713217 insert Xi_b1*-Width:InterpolationWidths 202 0.00052100396 insert Xi_b1*-Width:InterpolationWidths 203 0.00052485294 insert Xi_b1*-Width:InterpolationWidths 204 0.00052867993 insert Xi_b1*-Width:InterpolationWidths 205 0.00053248568 insert Xi_b1*-Width:InterpolationWidths 206 0.00053627089 insert Xi_b1*-Width:InterpolationWidths 207 0.00054003616 insert Xi_b1*-Width:InterpolationWidths 208 0.00054378209 insert Xi_b1*-Width:InterpolationWidths 209 0.00054750919 insert Xi_b1*-Width:InterpolationWidths 210 0.00055121799 insert Xi_b1*-Width:InterpolationWidths 211 0.00055490894 insert Xi_b1*-Width:InterpolationWidths 212 0.00055858249 insert Xi_b1*-Width:InterpolationWidths 213 0.00056223907 insert Xi_b1*-Width:InterpolationWidths 214 0.00056587908 insert Xi_b1*-Width:InterpolationWidths 215 0.00056950289 insert Xi_b1*-Width:NumberofEntries 0 54 insert Xi_b1*-Width:NumberofEntries 1 108 insert Xi_b1*-Width:NumberofEntries 2 162 insert Xi_b1*-Width:NumberofEntries 3 216 insert Xi_b1*-Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Xi_b1*-Width:ModeLocation 0 50 insert Xi_b1*-Width:BaryonDecayers 1 /Herwig/Decays/HeavyStrong insert Xi_b1*-Width:ModeLocation 1 51 insert Xi_b1*-Width:BaryonDecayers 2 /Herwig/Decays/HeavyStrong insert Xi_b1*-Width:ModeLocation 2 54 insert Xi_b1*-Width:BaryonDecayers 3 /Herwig/Decays/HeavyStrong insert Xi_b1*-Width:ModeLocation 3 55 newdef /Herwig/Particles/Xi_b1*-:Width_generator Xi_b1*-Width newdef /Herwig/Particles/Xi_b1*bar+:Width_generator Xi_b1*-Width # create Herwig::BaryonWidthGenerator Xi_b1-Width newdef Xi_b1-Width:Particle /Herwig/Particles/Xi_b1- newdef Xi_b1-Width:Prefactor 1 newdef Xi_b1-Width:BRNormalize 1 newdef Xi_b1-Width:BRMinimum 0.01 newdef Xi_b1-Width:Points 50 newdef Xi_b1-Width:InterpolationOrder 1 insert Xi_b1-Width:MEtype 0 2 insert Xi_b1-Width:MEtype 1 2 insert Xi_b1-Width:MEcode 0 0 insert Xi_b1-Width:MEcode 1 0 insert Xi_b1-Width:MEcoupling 0 1.18808 insert Xi_b1-Width:MEcoupling 1 1.19469 insert Xi_b1-Width:ModeOn 0 1 insert Xi_b1-Width:ModeOn 1 1 insert Xi_b1-Width:MinimumMasses 0 6.03488 insert Xi_b1-Width:MinimumMasses 1 6.03703 insert Xi_b1-Width:MEmass1 0 5.8999 insert Xi_b1-Width:MEmass1 1 5.8976 insert Xi_b1-Width:MEmass2 0 0.134978 insert Xi_b1-Width:MEmass2 1 0.13957 insert Xi_b1-Width:DecayModes 0 Xi_b1-->Xi_b'-,pi0; insert Xi_b1-Width:DecayModes 1 Xi_b1-->Xi_b'0,pi-; insert Xi_b1-Width:InterpolationMasses 0 6.0986571 insert Xi_b1-Width:InterpolationMasses 1 6.0992286 insert Xi_b1-Width:InterpolationMasses 2 6.0998 insert Xi_b1-Width:InterpolationMasses 3 6.1003714 insert Xi_b1-Width:InterpolationMasses 4 6.1009429 insert Xi_b1-Width:InterpolationMasses 5 6.1015143 insert Xi_b1-Width:InterpolationMasses 6 6.1020857 insert Xi_b1-Width:InterpolationMasses 7 6.1026571 insert Xi_b1-Width:InterpolationMasses 8 6.1032286 insert Xi_b1-Width:InterpolationMasses 9 6.1038 insert Xi_b1-Width:InterpolationMasses 10 6.1043714 insert Xi_b1-Width:InterpolationMasses 11 6.1049429 insert Xi_b1-Width:InterpolationMasses 12 6.1055143 insert Xi_b1-Width:InterpolationMasses 13 6.1060857 insert Xi_b1-Width:InterpolationMasses 14 6.1066571 insert Xi_b1-Width:InterpolationMasses 15 6.1072286 insert Xi_b1-Width:InterpolationMasses 16 6.1078 insert Xi_b1-Width:InterpolationMasses 17 6.1083714 insert Xi_b1-Width:InterpolationMasses 18 6.1089429 insert Xi_b1-Width:InterpolationMasses 19 6.1095143 insert Xi_b1-Width:InterpolationMasses 20 6.1100857 insert Xi_b1-Width:InterpolationMasses 21 6.1106571 insert Xi_b1-Width:InterpolationMasses 22 6.1112286 insert Xi_b1-Width:InterpolationMasses 23 6.1118 insert Xi_b1-Width:InterpolationMasses 24 6.1123714 insert Xi_b1-Width:InterpolationMasses 25 6.1129429 insert Xi_b1-Width:InterpolationMasses 26 6.1135143 insert Xi_b1-Width:InterpolationMasses 27 6.1140857 insert Xi_b1-Width:InterpolationMasses 28 6.1146571 insert Xi_b1-Width:InterpolationMasses 29 6.1152286 insert Xi_b1-Width:InterpolationMasses 30 6.1158 insert Xi_b1-Width:InterpolationMasses 31 6.1163714 insert Xi_b1-Width:InterpolationMasses 32 6.1169429 insert Xi_b1-Width:InterpolationMasses 33 6.1175143 insert Xi_b1-Width:InterpolationMasses 34 6.1180857 insert Xi_b1-Width:InterpolationMasses 35 6.1186571 insert Xi_b1-Width:InterpolationMasses 36 6.1192286 insert Xi_b1-Width:InterpolationMasses 37 6.1198 insert Xi_b1-Width:InterpolationMasses 38 6.1203714 insert Xi_b1-Width:InterpolationMasses 39 6.1209429 insert Xi_b1-Width:InterpolationMasses 40 6.1215143 insert Xi_b1-Width:InterpolationMasses 41 6.1220857 insert Xi_b1-Width:InterpolationMasses 42 6.1226571 insert Xi_b1-Width:InterpolationMasses 43 6.1232286 insert Xi_b1-Width:InterpolationMasses 44 6.1238 insert Xi_b1-Width:InterpolationMasses 45 6.1243714 insert Xi_b1-Width:InterpolationMasses 46 6.1249429 insert Xi_b1-Width:InterpolationMasses 47 6.1255143 insert Xi_b1-Width:InterpolationMasses 48 6.1260857 insert Xi_b1-Width:InterpolationMasses 49 6.1266571 insert Xi_b1-Width:InterpolationMasses 50 6.1272286 insert Xi_b1-Width:InterpolationMasses 51 6.1278 insert Xi_b1-Width:InterpolationMasses 52 6.1283714 insert Xi_b1-Width:InterpolationMasses 53 6.1289429 insert Xi_b1-Width:InterpolationMasses 54 6.0986571 insert Xi_b1-Width:InterpolationMasses 55 6.0992286 insert Xi_b1-Width:InterpolationMasses 56 6.0998 insert Xi_b1-Width:InterpolationMasses 57 6.1003714 insert Xi_b1-Width:InterpolationMasses 58 6.1009429 insert Xi_b1-Width:InterpolationMasses 59 6.1015143 insert Xi_b1-Width:InterpolationMasses 60 6.1020857 insert Xi_b1-Width:InterpolationMasses 61 6.1026571 insert Xi_b1-Width:InterpolationMasses 62 6.1032286 insert Xi_b1-Width:InterpolationMasses 63 6.1038 insert Xi_b1-Width:InterpolationMasses 64 6.1043714 insert Xi_b1-Width:InterpolationMasses 65 6.1049429 insert Xi_b1-Width:InterpolationMasses 66 6.1055143 insert Xi_b1-Width:InterpolationMasses 67 6.1060857 insert Xi_b1-Width:InterpolationMasses 68 6.1066571 insert Xi_b1-Width:InterpolationMasses 69 6.1072286 insert Xi_b1-Width:InterpolationMasses 70 6.1078 insert Xi_b1-Width:InterpolationMasses 71 6.1083714 insert Xi_b1-Width:InterpolationMasses 72 6.1089429 insert Xi_b1-Width:InterpolationMasses 73 6.1095143 insert Xi_b1-Width:InterpolationMasses 74 6.1100857 insert Xi_b1-Width:InterpolationMasses 75 6.1106571 insert Xi_b1-Width:InterpolationMasses 76 6.1112286 insert Xi_b1-Width:InterpolationMasses 77 6.1118 insert Xi_b1-Width:InterpolationMasses 78 6.1123714 insert Xi_b1-Width:InterpolationMasses 79 6.1129429 insert Xi_b1-Width:InterpolationMasses 80 6.1135143 insert Xi_b1-Width:InterpolationMasses 81 6.1140857 insert Xi_b1-Width:InterpolationMasses 82 6.1146571 insert Xi_b1-Width:InterpolationMasses 83 6.1152286 insert Xi_b1-Width:InterpolationMasses 84 6.1158 insert Xi_b1-Width:InterpolationMasses 85 6.1163714 insert Xi_b1-Width:InterpolationMasses 86 6.1169429 insert Xi_b1-Width:InterpolationMasses 87 6.1175143 insert Xi_b1-Width:InterpolationMasses 88 6.1180857 insert Xi_b1-Width:InterpolationMasses 89 6.1186571 insert Xi_b1-Width:InterpolationMasses 90 6.1192286 insert Xi_b1-Width:InterpolationMasses 91 6.1198 insert Xi_b1-Width:InterpolationMasses 92 6.1203714 insert Xi_b1-Width:InterpolationMasses 93 6.1209429 insert Xi_b1-Width:InterpolationMasses 94 6.1215143 insert Xi_b1-Width:InterpolationMasses 95 6.1220857 insert Xi_b1-Width:InterpolationMasses 96 6.1226571 insert Xi_b1-Width:InterpolationMasses 97 6.1232286 insert Xi_b1-Width:InterpolationMasses 98 6.1238 insert Xi_b1-Width:InterpolationMasses 99 6.1243714 insert Xi_b1-Width:InterpolationMasses 100 6.1249429 insert Xi_b1-Width:InterpolationMasses 101 6.1255143 insert Xi_b1-Width:InterpolationMasses 102 6.1260857 insert Xi_b1-Width:InterpolationMasses 103 6.1266571 insert Xi_b1-Width:InterpolationMasses 104 6.1272286 insert Xi_b1-Width:InterpolationMasses 105 6.1278 insert Xi_b1-Width:InterpolationMasses 106 6.1283714 insert Xi_b1-Width:InterpolationMasses 107 6.1289429 insert Xi_b1-Width:InterpolationWidths 0 0.00034661839 insert Xi_b1-Width:InterpolationWidths 1 0.00034841747 insert Xi_b1-Width:InterpolationWidths 2 0.00035021158 insert Xi_b1-Width:InterpolationWidths 3 0.00035200078 insert Xi_b1-Width:InterpolationWidths 4 0.00035378515 insert Xi_b1-Width:InterpolationWidths 5 0.00035556476 insert Xi_b1-Width:InterpolationWidths 6 0.00035733967 insert Xi_b1-Width:InterpolationWidths 7 0.00035910996 insert Xi_b1-Width:InterpolationWidths 8 0.00036087568 insert Xi_b1-Width:InterpolationWidths 9 0.00036263689 insert Xi_b1-Width:InterpolationWidths 10 0.00036439367 insert Xi_b1-Width:InterpolationWidths 11 0.00036614606 insert Xi_b1-Width:InterpolationWidths 12 0.00036789414 insert Xi_b1-Width:InterpolationWidths 13 0.00036963795 insert Xi_b1-Width:InterpolationWidths 14 0.00037137756 insert Xi_b1-Width:InterpolationWidths 15 0.00037311301 insert Xi_b1-Width:InterpolationWidths 16 0.00037484437 insert Xi_b1-Width:InterpolationWidths 17 0.00037657169 insert Xi_b1-Width:InterpolationWidths 18 0.00037829501 insert Xi_b1-Width:InterpolationWidths 19 0.00038001439 insert Xi_b1-Width:InterpolationWidths 20 0.00038172988 insert Xi_b1-Width:InterpolationWidths 21 0.00038344153 insert Xi_b1-Width:InterpolationWidths 22 0.00038514939 insert Xi_b1-Width:InterpolationWidths 23 0.00038685349 insert Xi_b1-Width:InterpolationWidths 24 0.0003885539 insert Xi_b1-Width:InterpolationWidths 25 0.00039025065 insert Xi_b1-Width:InterpolationWidths 26 0.00039194378 insert Xi_b1-Width:InterpolationWidths 27 0.00039363335 insert Xi_b1-Width:InterpolationWidths 28 0.0003953194 insert Xi_b1-Width:InterpolationWidths 29 0.00039700195 insert Xi_b1-Width:InterpolationWidths 30 0.00039868107 insert Xi_b1-Width:InterpolationWidths 31 0.00040035678 insert Xi_b1-Width:InterpolationWidths 32 0.00040202913 insert Xi_b1-Width:InterpolationWidths 33 0.00040369815 insert Xi_b1-Width:InterpolationWidths 34 0.00040536388 insert Xi_b1-Width:InterpolationWidths 35 0.00040702636 insert Xi_b1-Width:InterpolationWidths 36 0.00040868563 insert Xi_b1-Width:InterpolationWidths 37 0.00041034173 insert Xi_b1-Width:InterpolationWidths 38 0.00041199468 insert Xi_b1-Width:InterpolationWidths 39 0.00041364452 insert Xi_b1-Width:InterpolationWidths 40 0.00041529129 insert Xi_b1-Width:InterpolationWidths 41 0.00041693501 insert Xi_b1-Width:InterpolationWidths 42 0.00041857573 insert Xi_b1-Width:InterpolationWidths 43 0.00042021348 insert Xi_b1-Width:InterpolationWidths 44 0.00042184828 insert Xi_b1-Width:InterpolationWidths 45 0.00042348016 insert Xi_b1-Width:InterpolationWidths 46 0.00042510917 insert Xi_b1-Width:InterpolationWidths 47 0.00042673532 insert Xi_b1-Width:InterpolationWidths 48 0.00042835865 insert Xi_b1-Width:InterpolationWidths 49 0.00042997919 insert Xi_b1-Width:InterpolationWidths 50 0.00043159696 insert Xi_b1-Width:InterpolationWidths 51 0.000433212 insert Xi_b1-Width:InterpolationWidths 52 0.00043482432 insert Xi_b1-Width:InterpolationWidths 53 0.00043643397 insert Xi_b1-Width:InterpolationWidths 54 0.00068725184 insert Xi_b1-Width:InterpolationWidths 55 0.00069092136 insert Xi_b1-Width:InterpolationWidths 56 0.00069458007 insert Xi_b1-Width:InterpolationWidths 57 0.00069822813 insert Xi_b1-Width:InterpolationWidths 58 0.00070186569 insert Xi_b1-Width:InterpolationWidths 59 0.00070549292 insert Xi_b1-Width:InterpolationWidths 60 0.00070910996 insert Xi_b1-Width:InterpolationWidths 61 0.00071271695 insert Xi_b1-Width:InterpolationWidths 62 0.00071631406 insert Xi_b1-Width:InterpolationWidths 63 0.00071990141 insert Xi_b1-Width:InterpolationWidths 64 0.00072347914 insert Xi_b1-Width:InterpolationWidths 65 0.00072704739 insert Xi_b1-Width:InterpolationWidths 66 0.0007306063 insert Xi_b1-Width:InterpolationWidths 67 0.00073415598 insert Xi_b1-Width:InterpolationWidths 68 0.00073769657 insert Xi_b1-Width:InterpolationWidths 69 0.00074122819 insert Xi_b1-Width:InterpolationWidths 70 0.00074475096 insert Xi_b1-Width:InterpolationWidths 71 0.00074826499 insert Xi_b1-Width:InterpolationWidths 72 0.00075177041 insert Xi_b1-Width:InterpolationWidths 73 0.00075526733 insert Xi_b1-Width:InterpolationWidths 74 0.00075875585 insert Xi_b1-Width:InterpolationWidths 75 0.00076223609 insert Xi_b1-Width:InterpolationWidths 76 0.00076570815 insert Xi_b1-Width:InterpolationWidths 77 0.00076917214 insert Xi_b1-Width:InterpolationWidths 78 0.00077262816 insert Xi_b1-Width:InterpolationWidths 79 0.0007760763 insert Xi_b1-Width:InterpolationWidths 80 0.00077951668 insert Xi_b1-Width:InterpolationWidths 81 0.00078294937 insert Xi_b1-Width:InterpolationWidths 82 0.00078637448 insert Xi_b1-Width:InterpolationWidths 83 0.0007897921 insert Xi_b1-Width:InterpolationWidths 84 0.00079320231 insert Xi_b1-Width:InterpolationWidths 85 0.00079660522 insert Xi_b1-Width:InterpolationWidths 86 0.00080000089 insert Xi_b1-Width:InterpolationWidths 87 0.00080338943 insert Xi_b1-Width:InterpolationWidths 88 0.00080677091 insert Xi_b1-Width:InterpolationWidths 89 0.00081014542 insert Xi_b1-Width:InterpolationWidths 90 0.00081351303 insert Xi_b1-Width:InterpolationWidths 91 0.00081687383 insert Xi_b1-Width:InterpolationWidths 92 0.00082022789 insert Xi_b1-Width:InterpolationWidths 93 0.00082357529 insert Xi_b1-Width:InterpolationWidths 94 0.0008269161 insert Xi_b1-Width:InterpolationWidths 95 0.0008302504 insert Xi_b1-Width:InterpolationWidths 96 0.00083357826 insert Xi_b1-Width:InterpolationWidths 97 0.00083689975 insert Xi_b1-Width:InterpolationWidths 98 0.00084021493 insert Xi_b1-Width:InterpolationWidths 99 0.00084352389 insert Xi_b1-Width:InterpolationWidths 100 0.00084682668 insert Xi_b1-Width:InterpolationWidths 101 0.00085012337 insert Xi_b1-Width:InterpolationWidths 102 0.00085341403 insert Xi_b1-Width:InterpolationWidths 103 0.00085669872 insert Xi_b1-Width:InterpolationWidths 104 0.00085997749 insert Xi_b1-Width:InterpolationWidths 105 0.00086325043 insert Xi_b1-Width:InterpolationWidths 106 0.00086651757 insert Xi_b1-Width:InterpolationWidths 107 0.00086977899 insert Xi_b1-Width:NumberofEntries 0 54 insert Xi_b1-Width:NumberofEntries 1 108 insert Xi_b1-Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Xi_b1-Width:ModeLocation 0 58 insert Xi_b1-Width:BaryonDecayers 1 /Herwig/Decays/HeavyStrong insert Xi_b1-Width:ModeLocation 1 59 newdef /Herwig/Particles/Xi_b1-:Width_generator Xi_b1-Width newdef /Herwig/Particles/Xi_b1bar+:Width_generator Xi_b1-Width # create Herwig::BaryonWidthGenerator Xi_b10Width newdef Xi_b10Width:Particle /Herwig/Particles/Xi_b10 newdef Xi_b10Width:Prefactor 1 newdef Xi_b10Width:BRNormalize 1 newdef Xi_b10Width:BRMinimum 0.01 newdef Xi_b10Width:Points 50 newdef Xi_b10Width:InterpolationOrder 1 insert Xi_b10Width:MEtype 0 2 insert Xi_b10Width:MEtype 1 2 insert Xi_b10Width:MEcode 0 0 insert Xi_b10Width:MEcode 1 0 insert Xi_b10Width:MEcoupling 0 1.24294 insert Xi_b10Width:MEcoupling 1 1.1917 insert Xi_b10Width:ModeOn 0 1 insert Xi_b10Width:ModeOn 1 1 insert Xi_b10Width:MinimumMasses 0 6.03947 insert Xi_b10Width:MinimumMasses 1 6.03244 insert Xi_b10Width:MEmass1 0 5.8999 insert Xi_b10Width:MEmass1 1 5.8976 insert Xi_b10Width:MEmass2 0 0.13957 insert Xi_b10Width:MEmass2 1 0.134978 insert Xi_b10Width:DecayModes 0 Xi_b10->Xi_b'-,pi+; insert Xi_b10Width:DecayModes 1 Xi_b10->Xi_b'0,pi0; insert Xi_b10Width:InterpolationMasses 0 6.0959571 insert Xi_b10Width:InterpolationMasses 1 6.0965286 insert Xi_b10Width:InterpolationMasses 2 6.0971 insert Xi_b10Width:InterpolationMasses 3 6.0976714 insert Xi_b10Width:InterpolationMasses 4 6.0982429 insert Xi_b10Width:InterpolationMasses 5 6.0988143 insert Xi_b10Width:InterpolationMasses 6 6.0993857 insert Xi_b10Width:InterpolationMasses 7 6.0999571 insert Xi_b10Width:InterpolationMasses 8 6.1005286 insert Xi_b10Width:InterpolationMasses 9 6.1011 insert Xi_b10Width:InterpolationMasses 10 6.1016714 insert Xi_b10Width:InterpolationMasses 11 6.1022429 insert Xi_b10Width:InterpolationMasses 12 6.1028143 insert Xi_b10Width:InterpolationMasses 13 6.1033857 insert Xi_b10Width:InterpolationMasses 14 6.1039571 insert Xi_b10Width:InterpolationMasses 15 6.1045286 insert Xi_b10Width:InterpolationMasses 16 6.1051 insert Xi_b10Width:InterpolationMasses 17 6.1056714 insert Xi_b10Width:InterpolationMasses 18 6.1062429 insert Xi_b10Width:InterpolationMasses 19 6.1068143 insert Xi_b10Width:InterpolationMasses 20 6.1073857 insert Xi_b10Width:InterpolationMasses 21 6.1079571 insert Xi_b10Width:InterpolationMasses 22 6.1085286 insert Xi_b10Width:InterpolationMasses 23 6.1091 insert Xi_b10Width:InterpolationMasses 24 6.1096714 insert Xi_b10Width:InterpolationMasses 25 6.1102429 insert Xi_b10Width:InterpolationMasses 26 6.1108143 insert Xi_b10Width:InterpolationMasses 27 6.1113857 insert Xi_b10Width:InterpolationMasses 28 6.1119571 insert Xi_b10Width:InterpolationMasses 29 6.1125286 insert Xi_b10Width:InterpolationMasses 30 6.1131 insert Xi_b10Width:InterpolationMasses 31 6.1136714 insert Xi_b10Width:InterpolationMasses 32 6.1142429 insert Xi_b10Width:InterpolationMasses 33 6.1148143 insert Xi_b10Width:InterpolationMasses 34 6.1153857 insert Xi_b10Width:InterpolationMasses 35 6.1159571 insert Xi_b10Width:InterpolationMasses 36 6.1165286 insert Xi_b10Width:InterpolationMasses 37 6.1171 insert Xi_b10Width:InterpolationMasses 38 6.1176714 insert Xi_b10Width:InterpolationMasses 39 6.1182429 insert Xi_b10Width:InterpolationMasses 40 6.1188143 insert Xi_b10Width:InterpolationMasses 41 6.1193857 insert Xi_b10Width:InterpolationMasses 42 6.1199571 insert Xi_b10Width:InterpolationMasses 43 6.1205286 insert Xi_b10Width:InterpolationMasses 44 6.1211 insert Xi_b10Width:InterpolationMasses 45 6.1216714 insert Xi_b10Width:InterpolationMasses 46 6.1222429 insert Xi_b10Width:InterpolationMasses 47 6.1228143 insert Xi_b10Width:InterpolationMasses 48 6.1233857 insert Xi_b10Width:InterpolationMasses 49 6.1239571 insert Xi_b10Width:InterpolationMasses 50 6.1245286 insert Xi_b10Width:InterpolationMasses 51 6.1251 insert Xi_b10Width:InterpolationMasses 52 6.1256714 insert Xi_b10Width:InterpolationMasses 53 6.1262429 insert Xi_b10Width:InterpolationMasses 54 6.0959571 insert Xi_b10Width:InterpolationMasses 55 6.0965286 insert Xi_b10Width:InterpolationMasses 56 6.0971 insert Xi_b10Width:InterpolationMasses 57 6.0976714 insert Xi_b10Width:InterpolationMasses 58 6.0982429 insert Xi_b10Width:InterpolationMasses 59 6.0988143 insert Xi_b10Width:InterpolationMasses 60 6.0993857 insert Xi_b10Width:InterpolationMasses 61 6.0999571 insert Xi_b10Width:InterpolationMasses 62 6.1005286 insert Xi_b10Width:InterpolationMasses 63 6.1011 insert Xi_b10Width:InterpolationMasses 64 6.1016714 insert Xi_b10Width:InterpolationMasses 65 6.1022429 insert Xi_b10Width:InterpolationMasses 66 6.1028143 insert Xi_b10Width:InterpolationMasses 67 6.1033857 insert Xi_b10Width:InterpolationMasses 68 6.1039571 insert Xi_b10Width:InterpolationMasses 69 6.1045286 insert Xi_b10Width:InterpolationMasses 70 6.1051 insert Xi_b10Width:InterpolationMasses 71 6.1056714 insert Xi_b10Width:InterpolationMasses 72 6.1062429 insert Xi_b10Width:InterpolationMasses 73 6.1068143 insert Xi_b10Width:InterpolationMasses 74 6.1073857 insert Xi_b10Width:InterpolationMasses 75 6.1079571 insert Xi_b10Width:InterpolationMasses 76 6.1085286 insert Xi_b10Width:InterpolationMasses 77 6.1091 insert Xi_b10Width:InterpolationMasses 78 6.1096714 insert Xi_b10Width:InterpolationMasses 79 6.1102429 insert Xi_b10Width:InterpolationMasses 80 6.1108143 insert Xi_b10Width:InterpolationMasses 81 6.1113857 insert Xi_b10Width:InterpolationMasses 82 6.1119571 insert Xi_b10Width:InterpolationMasses 83 6.1125286 insert Xi_b10Width:InterpolationMasses 84 6.1131 insert Xi_b10Width:InterpolationMasses 85 6.1136714 insert Xi_b10Width:InterpolationMasses 86 6.1142429 insert Xi_b10Width:InterpolationMasses 87 6.1148143 insert Xi_b10Width:InterpolationMasses 88 6.1153857 insert Xi_b10Width:InterpolationMasses 89 6.1159571 insert Xi_b10Width:InterpolationMasses 90 6.1165286 insert Xi_b10Width:InterpolationMasses 91 6.1171 insert Xi_b10Width:InterpolationMasses 92 6.1176714 insert Xi_b10Width:InterpolationMasses 93 6.1182429 insert Xi_b10Width:InterpolationMasses 94 6.1188143 insert Xi_b10Width:InterpolationMasses 95 6.1193857 insert Xi_b10Width:InterpolationMasses 96 6.1199571 insert Xi_b10Width:InterpolationMasses 97 6.1205286 insert Xi_b10Width:InterpolationMasses 98 6.1211 insert Xi_b10Width:InterpolationMasses 99 6.1216714 insert Xi_b10Width:InterpolationMasses 100 6.1222429 insert Xi_b10Width:InterpolationMasses 101 6.1228143 insert Xi_b10Width:InterpolationMasses 102 6.1233857 insert Xi_b10Width:InterpolationMasses 103 6.1239571 insert Xi_b10Width:InterpolationMasses 104 6.1245286 insert Xi_b10Width:InterpolationMasses 105 6.1251 insert Xi_b10Width:InterpolationMasses 106 6.1256714 insert Xi_b10Width:InterpolationMasses 107 6.1262429 insert Xi_b10Width:InterpolationWidths 0 0.00065466772 insert Xi_b10Width:InterpolationWidths 1 0.00065843956 insert Xi_b10Width:InterpolationWidths 2 0.00066219898 insert Xi_b10Width:InterpolationWidths 3 0.00066594618 insert Xi_b10Width:InterpolationWidths 4 0.00066968135 insert Xi_b10Width:InterpolationWidths 5 0.00067340469 insert Xi_b10Width:InterpolationWidths 6 0.00067711639 insert Xi_b10Width:InterpolationWidths 7 0.00068081663 insert Xi_b10Width:InterpolationWidths 8 0.00068450559 insert Xi_b10Width:InterpolationWidths 9 0.00068818344 insert Xi_b10Width:InterpolationWidths 10 0.00069185035 insert Xi_b10Width:InterpolationWidths 11 0.00069550648 insert Xi_b10Width:InterpolationWidths 12 0.00069915201 insert Xi_b10Width:InterpolationWidths 13 0.00070278708 insert Xi_b10Width:InterpolationWidths 14 0.00070641185 insert Xi_b10Width:InterpolationWidths 15 0.00071002647 insert Xi_b10Width:InterpolationWidths 16 0.00071363108 insert Xi_b10Width:InterpolationWidths 17 0.00071722584 insert Xi_b10Width:InterpolationWidths 18 0.00072081088 insert Xi_b10Width:InterpolationWidths 19 0.00072438634 insert Xi_b10Width:InterpolationWidths 20 0.00072795235 insert Xi_b10Width:InterpolationWidths 21 0.00073150904 insert Xi_b10Width:InterpolationWidths 22 0.00073505655 insert Xi_b10Width:InterpolationWidths 23 0.00073859499 insert Xi_b10Width:InterpolationWidths 24 0.00074212449 insert Xi_b10Width:InterpolationWidths 25 0.00074564517 insert Xi_b10Width:InterpolationWidths 26 0.00074915715 insert Xi_b10Width:InterpolationWidths 27 0.00075266054 insert Xi_b10Width:InterpolationWidths 28 0.00075615546 insert Xi_b10Width:InterpolationWidths 29 0.00075964201 insert Xi_b10Width:InterpolationWidths 30 0.0007631203 insert Xi_b10Width:InterpolationWidths 31 0.00076659044 insert Xi_b10Width:InterpolationWidths 32 0.00077005254 insert Xi_b10Width:InterpolationWidths 33 0.00077350669 insert Xi_b10Width:InterpolationWidths 34 0.00077695299 insert Xi_b10Width:InterpolationWidths 35 0.00078039154 insert Xi_b10Width:InterpolationWidths 36 0.00078382244 insert Xi_b10Width:InterpolationWidths 37 0.00078724577 insert Xi_b10Width:InterpolationWidths 38 0.00079066164 insert Xi_b10Width:InterpolationWidths 39 0.00079407013 insert Xi_b10Width:InterpolationWidths 40 0.00079747133 insert Xi_b10Width:InterpolationWidths 41 0.00080086533 insert Xi_b10Width:InterpolationWidths 42 0.0008042522 insert Xi_b10Width:InterpolationWidths 43 0.00080763204 insert Xi_b10Width:InterpolationWidths 44 0.00081100493 insert Xi_b10Width:InterpolationWidths 45 0.00081437094 insert Xi_b10Width:InterpolationWidths 46 0.00081773016 insert Xi_b10Width:InterpolationWidths 47 0.00082108266 insert Xi_b10Width:InterpolationWidths 48 0.00082442851 insert Xi_b10Width:InterpolationWidths 49 0.0008277678 insert Xi_b10Width:InterpolationWidths 50 0.0008311006 insert Xi_b10Width:InterpolationWidths 51 0.00083442697 insert Xi_b10Width:InterpolationWidths 52 0.00083774699 insert Xi_b10Width:InterpolationWidths 53 0.00084106073 insert Xi_b10Width:InterpolationWidths 54 0.0003453495 insert Xi_b10Width:InterpolationWidths 55 0.00034715206 insert Xi_b10Width:InterpolationWidths 56 0.00034894959 insert Xi_b10Width:InterpolationWidths 57 0.00035074217 insert Xi_b10Width:InterpolationWidths 58 0.00035252986 insert Xi_b10Width:InterpolationWidths 59 0.00035431275 insert Xi_b10Width:InterpolationWidths 60 0.00035609089 insert Xi_b10Width:InterpolationWidths 61 0.00035786435 insert Xi_b10Width:InterpolationWidths 62 0.00035963321 insert Xi_b10Width:InterpolationWidths 63 0.00036139752 insert Xi_b10Width:InterpolationWidths 64 0.00036315734 insert Xi_b10Width:InterpolationWidths 65 0.00036491275 insert Xi_b10Width:InterpolationWidths 66 0.00036666379 insert Xi_b10Width:InterpolationWidths 67 0.00036841053 insert Xi_b10Width:InterpolationWidths 68 0.00037015302 insert Xi_b10Width:InterpolationWidths 69 0.00037189132 insert Xi_b10Width:InterpolationWidths 70 0.00037362549 insert Xi_b10Width:InterpolationWidths 71 0.00037535557 insert Xi_b10Width:InterpolationWidths 72 0.00037708163 insert Xi_b10Width:InterpolationWidths 73 0.00037880371 insert Xi_b10Width:InterpolationWidths 74 0.00038052187 insert Xi_b10Width:InterpolationWidths 75 0.00038223615 insert Xi_b10Width:InterpolationWidths 76 0.0003839466 insert Xi_b10Width:InterpolationWidths 77 0.00038565327 insert Xi_b10Width:InterpolationWidths 78 0.00038735621 insert Xi_b10Width:InterpolationWidths 79 0.00038905546 insert Xi_b10Width:InterpolationWidths 80 0.00039075107 insert Xi_b10Width:InterpolationWidths 81 0.00039244308 insert Xi_b10Width:InterpolationWidths 82 0.00039413153 insert Xi_b10Width:InterpolationWidths 83 0.00039581647 insert Xi_b10Width:InterpolationWidths 84 0.00039749794 insert Xi_b10Width:InterpolationWidths 85 0.00039917597 insert Xi_b10Width:InterpolationWidths 86 0.00040085061 insert Xi_b10Width:InterpolationWidths 87 0.00040252191 insert Xi_b10Width:InterpolationWidths 88 0.00040418988 insert Xi_b10Width:InterpolationWidths 89 0.00040585458 insert Xi_b10Width:InterpolationWidths 90 0.00040751604 insert Xi_b10Width:InterpolationWidths 91 0.0004091743 insert Xi_b10Width:InterpolationWidths 92 0.00041082939 insert Xi_b10Width:InterpolationWidths 93 0.00041248135 insert Xi_b10Width:InterpolationWidths 94 0.00041413021 insert Xi_b10Width:InterpolationWidths 95 0.00041577601 insert Xi_b10Width:InterpolationWidths 96 0.00041741878 insert Xi_b10Width:InterpolationWidths 97 0.00041905854 insert Xi_b10Width:InterpolationWidths 98 0.00042069535 insert Xi_b10Width:InterpolationWidths 99 0.00042232921 insert Xi_b10Width:InterpolationWidths 100 0.00042396018 insert Xi_b10Width:InterpolationWidths 101 0.00042558827 insert Xi_b10Width:InterpolationWidths 102 0.00042721352 insert Xi_b10Width:InterpolationWidths 103 0.00042883595 insert Xi_b10Width:InterpolationWidths 104 0.0004304556 insert Xi_b10Width:InterpolationWidths 105 0.00043207249 insert Xi_b10Width:InterpolationWidths 106 0.00043368665 insert Xi_b10Width:InterpolationWidths 107 0.00043529811 insert Xi_b10Width:NumberofEntries 0 54 insert Xi_b10Width:NumberofEntries 1 108 insert Xi_b10Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Xi_b10Width:ModeLocation 0 57 insert Xi_b10Width:BaryonDecayers 1 /Herwig/Decays/HeavyStrong insert Xi_b10Width:ModeLocation 1 56 newdef /Herwig/Particles/Xi_b1bar0:Width_generator Xi_b10Width newdef /Herwig/Particles/Xi_b10:Width_generator Xi_b10Width # create Herwig::BaryonWidthGenerator Xi(1950)-Width newdef Xi(1950)-Width:Particle /Herwig/Particles/Xi(1950)- newdef Xi(1950)-Width:Prefactor 1 newdef Xi(1950)-Width:BRNormalize 1 newdef Xi(1950)-Width:BRMinimum 0.01 newdef Xi(1950)-Width:Points 50 newdef Xi(1950)-Width:InterpolationOrder 1 insert Xi(1950)-Width:MEtype 0 1 insert Xi(1950)-Width:MEtype 1 1 insert Xi(1950)-Width:MEtype 2 1 insert Xi(1950)-Width:MEcode 0 101 insert Xi(1950)-Width:MEcode 1 101 insert Xi(1950)-Width:MEcode 2 101 insert Xi(1950)-Width:MEcoupling 0 0.260073 insert Xi(1950)-Width:MEcoupling 1 0.182916 insert Xi(1950)-Width:MEcoupling 2 0.180816 insert Xi(1950)-Width:ModeOn 0 1 insert Xi(1950)-Width:ModeOn 1 1 insert Xi(1950)-Width:ModeOn 2 1 insert Xi(1950)-Width:MinimumMasses 0 1.60936 insert Xi(1950)-Width:MinimumMasses 1 1.45629 insert Xi(1950)-Width:MinimumMasses 2 1.4544 insert Xi(1950)-Width:MEmass1 0 1.11568 insert Xi(1950)-Width:MEmass1 1 1.32131 insert Xi(1950)-Width:MEmass1 2 1.31483 insert Xi(1950)-Width:MEmass2 0 0.493677 insert Xi(1950)-Width:MEmass2 1 0.134978 insert Xi(1950)-Width:MEmass2 2 0.13957 insert Xi(1950)-Width:DecayModes 0 Xi(1950)-->Lambda0,K-; insert Xi(1950)-Width:DecayModes 1 Xi(1950)-->Xi-,pi0; insert Xi(1950)-Width:DecayModes 2 Xi(1950)-->Xi0,pi-; insert Xi(1950)-Width:NumberofEntries 0 0 insert Xi(1950)-Width:NumberofEntries 1 0 insert Xi(1950)-Width:NumberofEntries 2 0 insert Xi(1950)-Width:BaryonDecayers 0 /Herwig/Decays/SU3Strong2 insert Xi(1950)-Width:ModeLocation 0 44 insert Xi(1950)-Width:BaryonDecayers 1 /Herwig/Decays/SU3Strong2 insert Xi(1950)-Width:ModeLocation 1 43 insert Xi(1950)-Width:BaryonDecayers 2 /Herwig/Decays/SU3Strong2 insert Xi(1950)-Width:ModeLocation 2 42 newdef /Herwig/Particles/Xi(1950)-:Width_generator Xi(1950)-Width newdef /Herwig/Particles/Xibar(1950)+:Width_generator Xi(1950)-Width # create Herwig::BaryonWidthGenerator Lambda(1670)0Width newdef Lambda(1670)0Width:Particle /Herwig/Particles/Lambda(1670)0 newdef Lambda(1670)0Width:Prefactor 1.00007 newdef Lambda(1670)0Width:BRNormalize 1 newdef Lambda(1670)0Width:BRMinimum 0.01 newdef Lambda(1670)0Width:Points 50 newdef Lambda(1670)0Width:InterpolationOrder 1 insert Lambda(1670)0Width:MEtype 0 2 insert Lambda(1670)0Width:MEtype 1 1 insert Lambda(1670)0Width:MEtype 2 1 insert Lambda(1670)0Width:MEtype 3 1 insert Lambda(1670)0Width:MEtype 4 1 insert Lambda(1670)0Width:MEtype 5 1 insert Lambda(1670)0Width:MEcode 0 0 insert Lambda(1670)0Width:MEcode 1 101 insert Lambda(1670)0Width:MEcode 2 101 insert Lambda(1670)0Width:MEcode 3 101 insert Lambda(1670)0Width:MEcode 4 101 insert Lambda(1670)0Width:MEcode 5 101 insert Lambda(1670)0Width:MEcoupling 0 0.555461 insert Lambda(1670)0Width:MEcoupling 1 0.30048 insert Lambda(1670)0Width:MEcoupling 2 0.293947 insert Lambda(1670)0Width:MEcoupling 3 0.296077 insert Lambda(1670)0Width:MEcoupling 4 0.479879 insert Lambda(1670)0Width:MEcoupling 5 0.476773 insert Lambda(1670)0Width:ModeOn 0 1 insert Lambda(1670)0Width:ModeOn 1 1 insert Lambda(1670)0Width:ModeOn 2 1 insert Lambda(1670)0Width:ModeOn 3 1 insert Lambda(1670)0Width:ModeOn 4 1 insert Lambda(1670)0Width:ModeOn 5 1 insert Lambda(1670)0Width:MinimumMasses 0 1.66318 insert Lambda(1670)0Width:MinimumMasses 1 1.33702 insert Lambda(1670)0Width:MinimumMasses 2 1.32894 insert Lambda(1670)0Width:MinimumMasses 3 1.32762 insert Lambda(1670)0Width:MinimumMasses 4 1.43721 insert Lambda(1670)0Width:MinimumMasses 5 1.43195 insert Lambda(1670)0Width:MEmass1 0 1.11568 insert Lambda(1670)0Width:MEmass1 1 1.19745 insert Lambda(1670)0Width:MEmass1 2 1.18937 insert Lambda(1670)0Width:MEmass1 3 1.19264 insert Lambda(1670)0Width:MEmass1 4 0.939565 insert Lambda(1670)0Width:MEmass1 5 0.938272 insert Lambda(1670)0Width:MEmass2 0 0.54751 insert Lambda(1670)0Width:MEmass2 1 0.13957 insert Lambda(1670)0Width:MEmass2 2 0.13957 insert Lambda(1670)0Width:MEmass2 3 0.134978 insert Lambda(1670)0Width:MEmass2 4 0.497648 insert Lambda(1670)0Width:MEmass2 5 0.493677 insert Lambda(1670)0Width:DecayModes 0 Lambda(1670)0->Lambda0,eta; insert Lambda(1670)0Width:DecayModes 1 Lambda(1670)0->Sigma-,pi+; insert Lambda(1670)0Width:DecayModes 2 Lambda(1670)0->Sigma+,pi-; insert Lambda(1670)0Width:DecayModes 3 Lambda(1670)0->Sigma0,pi0; insert Lambda(1670)0Width:DecayModes 4 Lambda(1670)0->n0,Kbar0; insert Lambda(1670)0Width:DecayModes 5 Lambda(1670)0->p+,K-; insert Lambda(1670)0Width:InterpolationMasses 0 1.6486159 insert Lambda(1670)0Width:InterpolationMasses 1 1.655898 insert Lambda(1670)0Width:InterpolationMasses 2 1.66318 insert Lambda(1670)0Width:InterpolationMasses 3 1.6639068 insert Lambda(1670)0Width:InterpolationMasses 4 1.6646339 insert Lambda(1670)0Width:InterpolationMasses 5 1.6653613 insert Lambda(1670)0Width:InterpolationMasses 6 1.666089 insert Lambda(1670)0Width:InterpolationMasses 7 1.666817 insert Lambda(1670)0Width:InterpolationMasses 8 1.6675454 insert Lambda(1670)0Width:InterpolationMasses 9 1.6682741 insert Lambda(1670)0Width:InterpolationMasses 10 1.6690031 insert Lambda(1670)0Width:InterpolationMasses 11 1.6697324 insert Lambda(1670)0Width:InterpolationMasses 12 1.670462 insert Lambda(1670)0Width:InterpolationMasses 13 1.6777441 insert Lambda(1670)0Width:InterpolationMasses 14 1.6850261 insert Lambda(1670)0Width:InterpolationMasses 15 1.6923082 insert Lambda(1670)0Width:InterpolationMasses 16 1.6995902 insert Lambda(1670)0Width:InterpolationMasses 17 1.7068722 insert Lambda(1670)0Width:InterpolationMasses 18 1.7141543 insert Lambda(1670)0Width:InterpolationMasses 19 1.7214363 insert Lambda(1670)0Width:InterpolationMasses 20 1.7287184 insert Lambda(1670)0Width:InterpolationMasses 21 1.7360004 insert Lambda(1670)0Width:InterpolationMasses 22 1.7432824 insert Lambda(1670)0Width:InterpolationMasses 23 1.7505645 insert Lambda(1670)0Width:InterpolationMasses 24 1.7578465 insert Lambda(1670)0Width:InterpolationMasses 25 1.7651286 insert Lambda(1670)0Width:InterpolationMasses 26 1.7724106 insert Lambda(1670)0Width:InterpolationMasses 27 1.7796927 insert Lambda(1670)0Width:InterpolationMasses 28 1.7869747 insert Lambda(1670)0Width:InterpolationMasses 29 1.7942567 insert Lambda(1670)0Width:InterpolationMasses 30 1.8015388 insert Lambda(1670)0Width:InterpolationMasses 31 1.8088208 insert Lambda(1670)0Width:InterpolationMasses 32 1.8161029 insert Lambda(1670)0Width:InterpolationMasses 33 1.8233849 insert Lambda(1670)0Width:InterpolationMasses 34 1.8306669 insert Lambda(1670)0Width:InterpolationMasses 35 1.837949 insert Lambda(1670)0Width:InterpolationMasses 36 1.845231 insert Lambda(1670)0Width:InterpolationMasses 37 1.8525131 insert Lambda(1670)0Width:InterpolationMasses 38 1.8597951 insert Lambda(1670)0Width:InterpolationMasses 39 1.8670771 insert Lambda(1670)0Width:InterpolationMasses 40 1.8743592 insert Lambda(1670)0Width:InterpolationMasses 41 1.8816412 insert Lambda(1670)0Width:InterpolationMasses 42 1.8889233 insert Lambda(1670)0Width:InterpolationMasses 43 1.8962053 insert Lambda(1670)0Width:InterpolationMasses 44 1.9034873 insert Lambda(1670)0Width:InterpolationMasses 45 1.9107694 insert Lambda(1670)0Width:InterpolationMasses 46 1.9180514 insert Lambda(1670)0Width:InterpolationMasses 47 1.9253335 insert Lambda(1670)0Width:InterpolationMasses 48 1.9326155 insert Lambda(1670)0Width:InterpolationMasses 49 1.9398976 insert Lambda(1670)0Width:InterpolationMasses 50 1.9471796 insert Lambda(1670)0Width:InterpolationMasses 51 1.9544616 insert Lambda(1670)0Width:InterpolationMasses 52 1.9617437 insert Lambda(1670)0Width:InterpolationMasses 53 1.9690257 insert Lambda(1670)0Width:InterpolationMasses 54 1.9763078 insert Lambda(1670)0Width:InterpolationMasses 55 1.9835898 insert Lambda(1670)0Width:InterpolationMasses 56 1.9908718 insert Lambda(1670)0Width:InterpolationMasses 57 1.9981539 insert Lambda(1670)0Width:InterpolationMasses 58 2.0054359 insert Lambda(1670)0Width:InterpolationMasses 59 2.012718 insert Lambda(1670)0Width:InterpolationMasses 60 2.02 insert Lambda(1670)0Width:InterpolationMasses 61 2.027282 insert Lambda(1670)0Width:InterpolationMasses 62 2.0345641 insert Lambda(1670)0Width:InterpolationWidths 0 0 insert Lambda(1670)0Width:InterpolationWidths 1 0 insert Lambda(1670)0Width:InterpolationWidths 2 0 insert Lambda(1670)0Width:InterpolationWidths 3 0.0049962877 insert Lambda(1670)0Width:InterpolationWidths 4 0.0071163908 insert Lambda(1670)0Width:InterpolationWidths 5 0.0087515479 insert Lambda(1670)0Width:InterpolationWidths 6 0.010139248 insert Lambda(1670)0Width:InterpolationWidths 7 0.011370533 insert Lambda(1670)0Width:InterpolationWidths 8 0.012491811 insert Lambda(1670)0Width:InterpolationWidths 9 0.013530524 insert Lambda(1670)0Width:InterpolationWidths 10 0.014504482 insert Lambda(1670)0Width:InterpolationWidths 11 0.015426011 insert Lambda(1670)0Width:InterpolationWidths 12 0.016304059 insert Lambda(1670)0Width:InterpolationWidths 13 0.023639123 insert Lambda(1670)0Width:InterpolationWidths 14 0.029663857 insert Lambda(1670)0Width:InterpolationWidths 15 0.035081519 insert Lambda(1670)0Width:InterpolationWidths 16 0.040157671 insert Lambda(1670)0Width:InterpolationWidths 17 0.045025428 insert Lambda(1670)0Width:InterpolationWidths 18 0.0497622 insert Lambda(1670)0Width:InterpolationWidths 19 0.054417433 insert Lambda(1670)0Width:InterpolationWidths 20 0.059024836 insert Lambda(1670)0Width:InterpolationWidths 21 0.063608535 insert Lambda(1670)0Width:InterpolationWidths 22 0.06818645 insert Lambda(1670)0Width:InterpolationWidths 23 0.072772305 insert Lambda(1670)0Width:InterpolationWidths 24 0.077376867 insert Lambda(1670)0Width:InterpolationWidths 25 0.082008764 insert Lambda(1670)0Width:InterpolationWidths 26 0.086675035 insert Lambda(1670)0Width:InterpolationWidths 27 0.091381508 insert Lambda(1670)0Width:InterpolationWidths 28 0.096133079 insert Lambda(1670)0Width:InterpolationWidths 29 0.10093391 insert Lambda(1670)0Width:InterpolationWidths 30 0.10578757 insert Lambda(1670)0Width:InterpolationWidths 31 0.11069716 insert Lambda(1670)0Width:InterpolationWidths 32 0.11566539 insert Lambda(1670)0Width:InterpolationWidths 33 0.12069468 insert Lambda(1670)0Width:InterpolationWidths 34 0.12578713 insert Lambda(1670)0Width:InterpolationWidths 35 0.13094467 insert Lambda(1670)0Width:InterpolationWidths 36 0.13616902 insert Lambda(1670)0Width:InterpolationWidths 37 0.14146173 insert Lambda(1670)0Width:InterpolationWidths 38 0.14682423 insert Lambda(1670)0Width:InterpolationWidths 39 0.15225783 insert Lambda(1670)0Width:InterpolationWidths 40 0.15776372 insert Lambda(1670)0Width:InterpolationWidths 41 0.16334304 insert Lambda(1670)0Width:InterpolationWidths 42 0.1689968 insert Lambda(1670)0Width:InterpolationWidths 43 0.17472599 insert Lambda(1670)0Width:InterpolationWidths 44 0.18053151 insert Lambda(1670)0Width:InterpolationWidths 45 0.18641421 insert Lambda(1670)0Width:InterpolationWidths 46 0.19237491 insert Lambda(1670)0Width:InterpolationWidths 47 0.19841437 insert Lambda(1670)0Width:InterpolationWidths 48 0.20453332 insert Lambda(1670)0Width:InterpolationWidths 49 0.21073245 insert Lambda(1670)0Width:InterpolationWidths 50 0.21701242 insert Lambda(1670)0Width:InterpolationWidths 51 0.22337388 insert Lambda(1670)0Width:InterpolationWidths 52 0.22981743 insert Lambda(1670)0Width:InterpolationWidths 53 0.23634367 insert Lambda(1670)0Width:InterpolationWidths 54 0.24295316 insert Lambda(1670)0Width:InterpolationWidths 55 0.24964644 insert Lambda(1670)0Width:InterpolationWidths 56 0.25642406 insert Lambda(1670)0Width:InterpolationWidths 57 0.26328654 insert Lambda(1670)0Width:InterpolationWidths 58 0.27023437 insert Lambda(1670)0Width:InterpolationWidths 59 0.27726804 insert Lambda(1670)0Width:InterpolationWidths 60 0.28438803 insert Lambda(1670)0Width:InterpolationWidths 61 0.29159482 insert Lambda(1670)0Width:InterpolationWidths 62 0.29888885 insert Lambda(1670)0Width:NumberofEntries 0 63 insert Lambda(1670)0Width:NumberofEntries 1 63 insert Lambda(1670)0Width:NumberofEntries 2 63 insert Lambda(1670)0Width:NumberofEntries 3 63 insert Lambda(1670)0Width:NumberofEntries 4 63 insert Lambda(1670)0Width:NumberofEntries 5 63 insert Lambda(1670)0Width:BaryonDecayers 0 /Herwig/Decays/SU3Strong2 insert Lambda(1670)0Width:ModeLocation 0 15 insert Lambda(1670)0Width:BaryonDecayers 1 /Herwig/Decays/SU3Strong2 insert Lambda(1670)0Width:ModeLocation 1 14 insert Lambda(1670)0Width:BaryonDecayers 2 /Herwig/Decays/SU3Strong2 insert Lambda(1670)0Width:ModeLocation 2 13 insert Lambda(1670)0Width:BaryonDecayers 3 /Herwig/Decays/SU3Strong2 insert Lambda(1670)0Width:ModeLocation 3 12 insert Lambda(1670)0Width:BaryonDecayers 4 /Herwig/Decays/SU3Strong2 insert Lambda(1670)0Width:ModeLocation 4 19 insert Lambda(1670)0Width:BaryonDecayers 5 /Herwig/Decays/SU3Strong2 insert Lambda(1670)0Width:ModeLocation 5 18 newdef /Herwig/Particles/Lambda(1670)0:Width_generator Lambda(1670)0Width newdef /Herwig/Particles/Lambdabar(1670)0:Width_generator Lambda(1670)0Width # create Herwig::BaryonWidthGenerator Xi(1950)0Width newdef Xi(1950)0Width:Particle /Herwig/Particles/Xi(1950)0 newdef Xi(1950)0Width:Prefactor 1 newdef Xi(1950)0Width:BRNormalize 1 newdef Xi(1950)0Width:BRMinimum 0.01 newdef Xi(1950)0Width:Points 50 newdef Xi(1950)0Width:InterpolationOrder 1 insert Xi(1950)0Width:MEtype 0 1 insert Xi(1950)0Width:MEtype 1 1 insert Xi(1950)0Width:MEtype 2 1 insert Xi(1950)0Width:MEcode 0 101 insert Xi(1950)0Width:MEcode 1 101 insert Xi(1950)0Width:MEcode 2 101 insert Xi(1950)0Width:MEcoupling 0 0.260707 insert Xi(1950)0Width:MEcoupling 1 0.183081 insert Xi(1950)0Width:MEcoupling 2 0.180657 insert Xi(1950)0Width:ModeOn 0 1 insert Xi(1950)0Width:ModeOn 1 1 insert Xi(1950)0Width:ModeOn 2 1 insert Xi(1950)0Width:MinimumMasses 0 1.61333 insert Xi(1950)0Width:MinimumMasses 1 1.46088 insert Xi(1950)0Width:MinimumMasses 2 1.44981 insert Xi(1950)0Width:MEmass1 0 1.11568 insert Xi(1950)0Width:MEmass1 1 1.32131 insert Xi(1950)0Width:MEmass1 2 1.31483 insert Xi(1950)0Width:MEmass2 0 0.497648 insert Xi(1950)0Width:MEmass2 1 0.13957 insert Xi(1950)0Width:MEmass2 2 0.134978 insert Xi(1950)0Width:DecayModes 0 Xi(1950)0->Lambda0,Kbar0; insert Xi(1950)0Width:DecayModes 1 Xi(1950)0->Xi-,pi+; insert Xi(1950)0Width:DecayModes 2 Xi(1950)0->Xi0,pi0; insert Xi(1950)0Width:NumberofEntries 0 0 insert Xi(1950)0Width:NumberofEntries 1 0 insert Xi(1950)0Width:NumberofEntries 2 0 insert Xi(1950)0Width:BaryonDecayers 0 /Herwig/Decays/SU3Strong2 insert Xi(1950)0Width:ModeLocation 0 50 insert Xi(1950)0Width:BaryonDecayers 1 /Herwig/Decays/SU3Strong2 insert Xi(1950)0Width:ModeLocation 1 48 insert Xi(1950)0Width:BaryonDecayers 2 /Herwig/Decays/SU3Strong2 insert Xi(1950)0Width:ModeLocation 2 49 newdef /Herwig/Particles/Xi(1950)0:Width_generator Xi(1950)0Width newdef /Herwig/Particles/Xibar(1950)0:Width_generator Xi(1950)0Width # create Herwig::BaryonWidthGenerator Sigma(1750)-Width newdef Sigma(1750)-Width:Particle /Herwig/Particles/Sigma(1750)- newdef Sigma(1750)-Width:Prefactor 1.00053 newdef Sigma(1750)-Width:BRNormalize 1 newdef Sigma(1750)-Width:BRMinimum 0.01 newdef Sigma(1750)-Width:Points 50 newdef Sigma(1750)-Width:InterpolationOrder 1 insert Sigma(1750)-Width:MEtype 0 1 insert Sigma(1750)-Width:MEtype 1 2 insert Sigma(1750)-Width:MEtype 2 1 insert Sigma(1750)-Width:MEcode 0 101 insert Sigma(1750)-Width:MEcode 1 0 insert Sigma(1750)-Width:MEcode 2 101 insert Sigma(1750)-Width:MEcoupling 0 0.343853 insert Sigma(1750)-Width:MEcoupling 1 3.54994 insert Sigma(1750)-Width:MEcoupling 2 0.175187 insert Sigma(1750)-Width:ModeOn 0 1 insert Sigma(1750)-Width:ModeOn 1 1 insert Sigma(1750)-Width:ModeOn 2 1 insert Sigma(1750)-Width:MinimumMasses 0 1.25525 insert Sigma(1750)-Width:MinimumMasses 1 1.74495 insert Sigma(1750)-Width:MinimumMasses 2 1.43324 insert Sigma(1750)-Width:MEmass1 0 1.11568 insert Sigma(1750)-Width:MEmass1 1 1.19745 insert Sigma(1750)-Width:MEmass1 2 0.939565 insert Sigma(1750)-Width:MEmass2 0 0.13957 insert Sigma(1750)-Width:MEmass2 1 0.54751 insert Sigma(1750)-Width:MEmass2 2 0.493677 insert Sigma(1750)-Width:DecayModes 0 Sigma(1750)-->Lambda0,pi-; insert Sigma(1750)-Width:DecayModes 1 Sigma(1750)-->Sigma-,eta; insert Sigma(1750)-Width:DecayModes 2 Sigma(1750)-->n0,K-; insert Sigma(1750)-Width:InterpolationMasses 0 1.7263724 insert Sigma(1750)-Width:InterpolationMasses 1 1.7356592 insert Sigma(1750)-Width:InterpolationMasses 2 1.744946 insert Sigma(1750)-Width:InterpolationMasses 3 1.7458725 insert Sigma(1750)-Width:InterpolationMasses 4 1.7467994 insert Sigma(1750)-Width:InterpolationMasses 5 1.7477269 insert Sigma(1750)-Width:InterpolationMasses 6 1.7486548 insert Sigma(1750)-Width:InterpolationMasses 7 1.7495832 insert Sigma(1750)-Width:InterpolationMasses 8 1.7505122 insert Sigma(1750)-Width:InterpolationMasses 9 1.7514416 insert Sigma(1750)-Width:InterpolationMasses 10 1.7523715 insert Sigma(1750)-Width:InterpolationMasses 11 1.7533019 insert Sigma(1750)-Width:InterpolationMasses 12 1.7542328 insert Sigma(1750)-Width:InterpolationMasses 13 1.7635196 insert Sigma(1750)-Width:InterpolationMasses 14 1.7728064 insert Sigma(1750)-Width:InterpolationMasses 15 1.7820933 insert Sigma(1750)-Width:InterpolationMasses 16 1.7913801 insert Sigma(1750)-Width:InterpolationMasses 17 1.8006669 insert Sigma(1750)-Width:InterpolationMasses 18 1.8099537 insert Sigma(1750)-Width:InterpolationMasses 19 1.8192405 insert Sigma(1750)-Width:InterpolationMasses 20 1.8285273 insert Sigma(1750)-Width:InterpolationMasses 21 1.8378142 insert Sigma(1750)-Width:InterpolationMasses 22 1.847101 insert Sigma(1750)-Width:InterpolationMasses 23 1.8563878 insert Sigma(1750)-Width:InterpolationMasses 24 1.8656746 insert Sigma(1750)-Width:InterpolationMasses 25 1.8749614 insert Sigma(1750)-Width:InterpolationMasses 26 1.8842482 insert Sigma(1750)-Width:InterpolationMasses 27 1.8935351 insert Sigma(1750)-Width:InterpolationMasses 28 1.9028219 insert Sigma(1750)-Width:InterpolationMasses 29 1.9121087 insert Sigma(1750)-Width:InterpolationMasses 30 1.9213955 insert Sigma(1750)-Width:InterpolationMasses 31 1.9306823 insert Sigma(1750)-Width:InterpolationMasses 32 1.9399691 insert Sigma(1750)-Width:InterpolationMasses 33 1.949256 insert Sigma(1750)-Width:InterpolationMasses 34 1.9585428 insert Sigma(1750)-Width:InterpolationMasses 35 1.9678296 insert Sigma(1750)-Width:InterpolationMasses 36 1.9771164 insert Sigma(1750)-Width:InterpolationMasses 37 1.9864032 insert Sigma(1750)-Width:InterpolationMasses 38 1.99569 insert Sigma(1750)-Width:InterpolationMasses 39 2.0049769 insert Sigma(1750)-Width:InterpolationMasses 40 2.0142637 insert Sigma(1750)-Width:InterpolationMasses 41 2.0235505 insert Sigma(1750)-Width:InterpolationMasses 42 2.0328373 insert Sigma(1750)-Width:InterpolationMasses 43 2.0421241 insert Sigma(1750)-Width:InterpolationMasses 44 2.0514109 insert Sigma(1750)-Width:InterpolationMasses 45 2.0606978 insert Sigma(1750)-Width:InterpolationMasses 46 2.0699846 insert Sigma(1750)-Width:InterpolationMasses 47 2.0792714 insert Sigma(1750)-Width:InterpolationMasses 48 2.0885582 insert Sigma(1750)-Width:InterpolationMasses 49 2.097845 insert Sigma(1750)-Width:InterpolationMasses 50 2.1071318 insert Sigma(1750)-Width:InterpolationMasses 51 2.1164187 insert Sigma(1750)-Width:InterpolationMasses 52 2.1257055 insert Sigma(1750)-Width:InterpolationMasses 53 2.1349923 insert Sigma(1750)-Width:InterpolationMasses 54 2.1442791 insert Sigma(1750)-Width:InterpolationMasses 55 2.1535659 insert Sigma(1750)-Width:InterpolationMasses 56 2.1628527 insert Sigma(1750)-Width:InterpolationMasses 57 2.1721396 insert Sigma(1750)-Width:InterpolationMasses 58 2.1814264 insert Sigma(1750)-Width:InterpolationMasses 59 2.1907132 insert Sigma(1750)-Width:InterpolationMasses 60 2.2 insert Sigma(1750)-Width:InterpolationMasses 61 2.2092868 insert Sigma(1750)-Width:InterpolationMasses 62 2.2185736 insert Sigma(1750)-Width:InterpolationWidths 0 0 insert Sigma(1750)-Width:InterpolationWidths 1 0 insert Sigma(1750)-Width:InterpolationWidths 2 0 insert Sigma(1750)-Width:InterpolationWidths 3 0.0058523157 insert Sigma(1750)-Width:InterpolationWidths 4 0.0083334451 insert Sigma(1750)-Width:InterpolationWidths 5 0.010252293 insert Sigma(1750)-Width:InterpolationWidths 6 0.011884573 insert Sigma(1750)-Width:InterpolationWidths 7 0.013336073 insert Sigma(1750)-Width:InterpolationWidths 8 0.01466072 insert Sigma(1750)-Width:InterpolationWidths 9 0.015890392 insert Sigma(1750)-Width:InterpolationWidths 10 0.017045772 insert Sigma(1750)-Width:InterpolationWidths 11 0.018141168 insert Sigma(1750)-Width:InterpolationWidths 12 0.019186961 insert Sigma(1750)-Width:InterpolationWidths 13 0.028003922 insert Sigma(1750)-Width:InterpolationWidths 14 0.03536989 insert Sigma(1750)-Width:InterpolationWidths 15 0.042094699 insert Sigma(1750)-Width:InterpolationWidths 16 0.048482408 insert Sigma(1750)-Width:InterpolationWidths 17 0.054684699 insert Sigma(1750)-Width:InterpolationWidths 18 0.06078944 insert Sigma(1750)-Width:InterpolationWidths 19 0.066852581 insert Sigma(1750)-Width:InterpolationWidths 20 0.072912189 insert Sigma(1750)-Width:InterpolationWidths 21 0.078995471 insert Sigma(1750)-Width:InterpolationWidths 22 0.085122638 insert Sigma(1750)-Width:InterpolationWidths 23 0.091309175 insert Sigma(1750)-Width:InterpolationWidths 24 0.097567259 insert Sigma(1750)-Width:InterpolationWidths 25 0.10390667 insert Sigma(1750)-Width:InterpolationWidths 26 0.11033543 insert Sigma(1750)-Width:InterpolationWidths 27 0.1168602 insert Sigma(1750)-Width:InterpolationWidths 28 0.12348662 insert Sigma(1750)-Width:InterpolationWidths 29 0.13021952 insert Sigma(1750)-Width:InterpolationWidths 30 0.13706306 insert Sigma(1750)-Width:InterpolationWidths 31 0.14402092 insert Sigma(1750)-Width:InterpolationWidths 32 0.15109631 insert Sigma(1750)-Width:InterpolationWidths 33 0.15829214 insert Sigma(1750)-Width:InterpolationWidths 34 0.16561099 insert Sigma(1750)-Width:InterpolationWidths 35 0.17305523 insert Sigma(1750)-Width:InterpolationWidths 36 0.18062699 insert Sigma(1750)-Width:InterpolationWidths 37 0.18832826 insert Sigma(1750)-Width:InterpolationWidths 38 0.19616086 insert Sigma(1750)-Width:InterpolationWidths 39 0.2041265 insert Sigma(1750)-Width:InterpolationWidths 40 0.21222675 insert Sigma(1750)-Width:InterpolationWidths 41 0.22046312 insert Sigma(1750)-Width:InterpolationWidths 42 0.22883701 insert Sigma(1750)-Width:InterpolationWidths 43 0.23734975 insert Sigma(1750)-Width:InterpolationWidths 44 0.24600262 insert Sigma(1750)-Width:InterpolationWidths 45 0.25479682 insert Sigma(1750)-Width:InterpolationWidths 46 0.26373353 insert Sigma(1750)-Width:InterpolationWidths 47 0.27281384 insert Sigma(1750)-Width:InterpolationWidths 48 0.28203885 insert Sigma(1750)-Width:InterpolationWidths 49 0.29140959 insert Sigma(1750)-Width:InterpolationWidths 50 0.30092706 insert Sigma(1750)-Width:InterpolationWidths 51 0.31059224 insert Sigma(1750)-Width:InterpolationWidths 52 0.32040608 insert Sigma(1750)-Width:InterpolationWidths 53 0.33036951 insert Sigma(1750)-Width:InterpolationWidths 54 0.34048343 insert Sigma(1750)-Width:InterpolationWidths 55 0.35074873 insert Sigma(1750)-Width:InterpolationWidths 56 0.36116626 insert Sigma(1750)-Width:InterpolationWidths 57 0.37173689 insert Sigma(1750)-Width:InterpolationWidths 58 0.38246143 insert Sigma(1750)-Width:InterpolationWidths 59 0.39334072 insert Sigma(1750)-Width:InterpolationWidths 60 0.40437556 insert Sigma(1750)-Width:InterpolationWidths 61 0.41556675 insert Sigma(1750)-Width:InterpolationWidths 62 0.42691506 insert Sigma(1750)-Width:NumberofEntries 0 0 insert Sigma(1750)-Width:NumberofEntries 1 63 insert Sigma(1750)-Width:NumberofEntries 2 63 insert Sigma(1750)-Width:BaryonDecayers 0 /Herwig/Decays/SU3Strong2 insert Sigma(1750)-Width:ModeLocation 0 38 insert Sigma(1750)-Width:BaryonDecayers 1 /Herwig/Decays/SU3Strong2 insert Sigma(1750)-Width:ModeLocation 1 39 insert Sigma(1750)-Width:BaryonDecayers 2 /Herwig/Decays/SU3Strong2 insert Sigma(1750)-Width:ModeLocation 2 37 newdef /Herwig/Particles/Sigma(1750)-:Width_generator Sigma(1750)-Width newdef /Herwig/Particles/Sigmabar(1750)+:Width_generator Sigma(1750)-Width # create Herwig::BaryonWidthGenerator Sigma(1750)0Width newdef Sigma(1750)0Width:Particle /Herwig/Particles/Sigma(1750)0 newdef Sigma(1750)0Width:Prefactor 1.00183 newdef Sigma(1750)0Width:BRNormalize 1 newdef Sigma(1750)0Width:BRMinimum 0.01 newdef Sigma(1750)0Width:Points 50 newdef Sigma(1750)0Width:InterpolationOrder 1 insert Sigma(1750)0Width:MEtype 0 1 insert Sigma(1750)0Width:MEtype 1 2 insert Sigma(1750)0Width:MEtype 2 1 insert Sigma(1750)0Width:MEtype 3 1 insert Sigma(1750)0Width:MEcode 0 101 insert Sigma(1750)0Width:MEcode 1 0 insert Sigma(1750)0Width:MEcode 2 101 insert Sigma(1750)0Width:MEcode 3 101 insert Sigma(1750)0Width:MEcoupling 0 0.343531 insert Sigma(1750)0Width:MEcoupling 1 2.50344 insert Sigma(1750)0Width:MEcoupling 2 0.175681 insert Sigma(1750)0Width:MEcoupling 3 0.174817 insert Sigma(1750)0Width:ModeOn 0 1 insert Sigma(1750)0Width:ModeOn 1 1 insert Sigma(1750)0Width:ModeOn 2 1 insert Sigma(1750)0Width:ModeOn 3 1 insert Sigma(1750)0Width:MinimumMasses 0 1.25066 insert Sigma(1750)0Width:MinimumMasses 1 1.74014 insert Sigma(1750)0Width:MinimumMasses 2 1.43721 insert Sigma(1750)0Width:MinimumMasses 3 1.43195 insert Sigma(1750)0Width:MEmass1 0 1.11568 insert Sigma(1750)0Width:MEmass1 1 1.19264 insert Sigma(1750)0Width:MEmass1 2 0.939565 insert Sigma(1750)0Width:MEmass1 3 0.938272 insert Sigma(1750)0Width:MEmass2 0 0.134978 insert Sigma(1750)0Width:MEmass2 1 0.54751 insert Sigma(1750)0Width:MEmass2 2 0.497648 insert Sigma(1750)0Width:MEmass2 3 0.493677 insert Sigma(1750)0Width:DecayModes 0 Sigma(1750)0->Lambda0,pi0; insert Sigma(1750)0Width:DecayModes 1 Sigma(1750)0->Sigma0,eta; insert Sigma(1750)0Width:DecayModes 2 Sigma(1750)0->n0,Kbar0; insert Sigma(1750)0Width:DecayModes 3 Sigma(1750)0->p+,K-; insert Sigma(1750)0Width:InterpolationMasses 0 1.7213692 insert Sigma(1750)0Width:InterpolationMasses 1 1.7307541 insert Sigma(1750)0Width:InterpolationMasses 2 1.740139 insert Sigma(1750)0Width:InterpolationMasses 3 1.7410752 insert Sigma(1750)0Width:InterpolationMasses 4 1.7420119 insert Sigma(1750)0Width:InterpolationMasses 5 1.7429492 insert Sigma(1750)0Width:InterpolationMasses 6 1.7438869 insert Sigma(1750)0Width:InterpolationMasses 7 1.7448251 insert Sigma(1750)0Width:InterpolationMasses 8 1.7457639 insert Sigma(1750)0Width:InterpolationMasses 9 1.7467031 insert Sigma(1750)0Width:InterpolationMasses 10 1.7476429 insert Sigma(1750)0Width:InterpolationMasses 11 1.7485832 insert Sigma(1750)0Width:InterpolationMasses 12 1.7495239 insert Sigma(1750)0Width:InterpolationMasses 13 1.7589088 insert Sigma(1750)0Width:InterpolationMasses 14 1.7682938 insert Sigma(1750)0Width:InterpolationMasses 15 1.7776787 insert Sigma(1750)0Width:InterpolationMasses 16 1.7870636 insert Sigma(1750)0Width:InterpolationMasses 17 1.7964485 insert Sigma(1750)0Width:InterpolationMasses 18 1.8058334 insert Sigma(1750)0Width:InterpolationMasses 19 1.8152183 insert Sigma(1750)0Width:InterpolationMasses 20 1.8246033 insert Sigma(1750)0Width:InterpolationMasses 21 1.8339882 insert Sigma(1750)0Width:InterpolationMasses 22 1.8433731 insert Sigma(1750)0Width:InterpolationMasses 23 1.852758 insert Sigma(1750)0Width:InterpolationMasses 24 1.8621429 insert Sigma(1750)0Width:InterpolationMasses 25 1.8715279 insert Sigma(1750)0Width:InterpolationMasses 26 1.8809128 insert Sigma(1750)0Width:InterpolationMasses 27 1.8902977 insert Sigma(1750)0Width:InterpolationMasses 28 1.8996826 insert Sigma(1750)0Width:InterpolationMasses 29 1.9090675 insert Sigma(1750)0Width:InterpolationMasses 30 1.9184524 insert Sigma(1750)0Width:InterpolationMasses 31 1.9278374 insert Sigma(1750)0Width:InterpolationMasses 32 1.9372223 insert Sigma(1750)0Width:InterpolationMasses 33 1.9466072 insert Sigma(1750)0Width:InterpolationMasses 34 1.9559921 insert Sigma(1750)0Width:InterpolationMasses 35 1.965377 insert Sigma(1750)0Width:InterpolationMasses 36 1.974762 insert Sigma(1750)0Width:InterpolationMasses 37 1.9841469 insert Sigma(1750)0Width:InterpolationMasses 38 1.9935318 insert Sigma(1750)0Width:InterpolationMasses 39 2.0029167 insert Sigma(1750)0Width:InterpolationMasses 40 2.0123016 insert Sigma(1750)0Width:InterpolationMasses 41 2.0216866 insert Sigma(1750)0Width:InterpolationMasses 42 2.0310715 insert Sigma(1750)0Width:InterpolationMasses 43 2.0404564 insert Sigma(1750)0Width:InterpolationMasses 44 2.0498413 insert Sigma(1750)0Width:InterpolationMasses 45 2.0592262 insert Sigma(1750)0Width:InterpolationMasses 46 2.0686111 insert Sigma(1750)0Width:InterpolationMasses 47 2.0779961 insert Sigma(1750)0Width:InterpolationMasses 48 2.087381 insert Sigma(1750)0Width:InterpolationMasses 49 2.0967659 insert Sigma(1750)0Width:InterpolationMasses 50 2.1061508 insert Sigma(1750)0Width:InterpolationMasses 51 2.1155357 insert Sigma(1750)0Width:InterpolationMasses 52 2.1249207 insert Sigma(1750)0Width:InterpolationMasses 53 2.1343056 insert Sigma(1750)0Width:InterpolationMasses 54 2.1436905 insert Sigma(1750)0Width:InterpolationMasses 55 2.1530754 insert Sigma(1750)0Width:InterpolationMasses 56 2.1624603 insert Sigma(1750)0Width:InterpolationMasses 57 2.1718452 insert Sigma(1750)0Width:InterpolationMasses 58 2.1812302 insert Sigma(1750)0Width:InterpolationMasses 59 2.1906151 insert Sigma(1750)0Width:InterpolationMasses 60 2.2 insert Sigma(1750)0Width:InterpolationMasses 61 2.2093849 insert Sigma(1750)0Width:InterpolationMasses 62 2.2187698 insert Sigma(1750)0Width:InterpolationWidths 0 0 insert Sigma(1750)0Width:InterpolationWidths 1 0 insert Sigma(1750)0Width:InterpolationWidths 2 0 insert Sigma(1750)0Width:InterpolationWidths 3 0.0058725361 insert Sigma(1750)0Width:InterpolationWidths 4 0.0083622126 insert Sigma(1750)0Width:InterpolationWidths 5 0.01028791 insert Sigma(1750)0Width:InterpolationWidths 6 0.011926194 insert Sigma(1750)0Width:InterpolationWidths 7 0.013383184 insert Sigma(1750)0Width:InterpolationWidths 8 0.014712975 insert Sigma(1750)0Width:InterpolationWidths 9 0.015947543 insert Sigma(1750)0Width:InterpolationWidths 10 0.017107635 insert Sigma(1750)0Width:InterpolationWidths 11 0.018207603 insert Sigma(1750)0Width:InterpolationWidths 12 0.019257859 insert Sigma(1750)0Width:InterpolationWidths 13 0.028116056 insert Sigma(1750)0Width:InterpolationWidths 14 0.035522169 insert Sigma(1750)0Width:InterpolationWidths 15 0.042288214 insert Sigma(1750)0Width:InterpolationWidths 16 0.048718989 insert Sigma(1750)0Width:InterpolationWidths 17 0.054966514 insert Sigma(1750)0Width:InterpolationWidths 18 0.061118838 insert Sigma(1750)0Width:InterpolationWidths 19 0.06723202 insert Sigma(1750)0Width:InterpolationWidths 20 0.073344199 insert Sigma(1750)0Width:InterpolationWidths 21 0.079482634 insert Sigma(1750)0Width:InterpolationWidths 22 0.085667575 insert Sigma(1750)0Width:InterpolationWidths 23 0.091914537 insert Sigma(1750)0Width:InterpolationWidths 24 0.098235725 insert Sigma(1750)0Width:InterpolationWidths 25 0.10464095 insert Sigma(1750)0Width:InterpolationWidths 26 0.11113823 insert Sigma(1750)0Width:InterpolationWidths 27 0.11773428 insert Sigma(1750)0Width:InterpolationWidths 28 0.12443474 insert Sigma(1750)0Width:InterpolationWidths 29 0.13124445 insert Sigma(1750)0Width:InterpolationWidths 30 0.13816762 insert Sigma(1750)0Width:InterpolationWidths 31 0.14520791 insert Sigma(1750)0Width:InterpolationWidths 32 0.15236859 insert Sigma(1750)0Width:InterpolationWidths 33 0.15965255 insert Sigma(1750)0Width:InterpolationWidths 34 0.16706241 insert Sigma(1750)0Width:InterpolationWidths 35 0.17460054 insert Sigma(1750)0Width:InterpolationWidths 36 0.1822691 insert Sigma(1750)0Width:InterpolationWidths 37 0.1900701 insert Sigma(1750)0Width:InterpolationWidths 38 0.19800538 insert Sigma(1750)0Width:InterpolationWidths 39 0.20607665 insert Sigma(1750)0Width:InterpolationWidths 40 0.21428552 insert Sigma(1750)0Width:InterpolationWidths 41 0.2226335 insert Sigma(1750)0Width:InterpolationWidths 42 0.23112202 insert Sigma(1750)0Width:InterpolationWidths 43 0.23975243 insert Sigma(1750)0Width:InterpolationWidths 44 0.24852601 insert Sigma(1750)0Width:InterpolationWidths 45 0.257444 insert Sigma(1750)0Width:InterpolationWidths 46 0.26650759 insert Sigma(1750)0Width:InterpolationWidths 47 0.27571789 insert Sigma(1750)0Width:InterpolationWidths 48 0.28507601 insert Sigma(1750)0Width:InterpolationWidths 49 0.29458299 insert Sigma(1750)0Width:InterpolationWidths 50 0.30423988 insert Sigma(1750)0Width:InterpolationWidths 51 0.31404766 insert Sigma(1750)0Width:InterpolationWidths 52 0.3240073 insert Sigma(1750)0Width:InterpolationWidths 53 0.33411974 insert Sigma(1750)0Width:InterpolationWidths 54 0.34438591 insert Sigma(1750)0Width:InterpolationWidths 55 0.35480671 insert Sigma(1750)0Width:InterpolationWidths 56 0.36538303 insert Sigma(1750)0Width:InterpolationWidths 57 0.37611572 insert Sigma(1750)0Width:InterpolationWidths 58 0.38700565 insert Sigma(1750)0Width:InterpolationWidths 59 0.39805366 insert Sigma(1750)0Width:InterpolationWidths 60 0.40926056 insert Sigma(1750)0Width:InterpolationWidths 61 0.42062718 insert Sigma(1750)0Width:InterpolationWidths 62 0.43215431 insert Sigma(1750)0Width:NumberofEntries 0 0 insert Sigma(1750)0Width:NumberofEntries 1 63 insert Sigma(1750)0Width:NumberofEntries 2 63 insert Sigma(1750)0Width:NumberofEntries 3 63 insert Sigma(1750)0Width:BaryonDecayers 0 /Herwig/Decays/SU3Strong2 insert Sigma(1750)0Width:ModeLocation 0 33 insert Sigma(1750)0Width:BaryonDecayers 1 /Herwig/Decays/SU3Strong2 insert Sigma(1750)0Width:ModeLocation 1 32 insert Sigma(1750)0Width:BaryonDecayers 2 /Herwig/Decays/SU3Strong2 insert Sigma(1750)0Width:ModeLocation 2 31 insert Sigma(1750)0Width:BaryonDecayers 3 /Herwig/Decays/SU3Strong2 insert Sigma(1750)0Width:ModeLocation 3 30 newdef /Herwig/Particles/Sigma(1750)0:Width_generator Sigma(1750)0Width newdef /Herwig/Particles/Sigmabar(1750)0:Width_generator Sigma(1750)0Width # create Herwig::BaryonWidthGenerator Sigma(1750)+Width newdef Sigma(1750)+Width:Particle /Herwig/Particles/Sigma(1750)+ newdef Sigma(1750)+Width:Prefactor 1.0067 newdef Sigma(1750)+Width:BRNormalize 1 newdef Sigma(1750)+Width:BRMinimum 0.01 newdef Sigma(1750)+Width:Points 50 newdef Sigma(1750)+Width:InterpolationOrder 1 insert Sigma(1750)+Width:MEtype 0 1 insert Sigma(1750)+Width:MEtype 1 2 insert Sigma(1750)+Width:MEtype 2 1 insert Sigma(1750)+Width:MEcode 0 101 insert Sigma(1750)+Width:MEcode 1 0 insert Sigma(1750)+Width:MEcode 2 101 insert Sigma(1750)+Width:MEcoupling 0 0.343853 insert Sigma(1750)+Width:MEcoupling 1 2.14793 insert Sigma(1750)+Width:MEcoupling 2 0.175308 insert Sigma(1750)+Width:ModeOn 0 1 insert Sigma(1750)+Width:ModeOn 1 1 insert Sigma(1750)+Width:ModeOn 2 1 insert Sigma(1750)+Width:MinimumMasses 0 1.25525 insert Sigma(1750)+Width:MinimumMasses 1 1.73687 insert Sigma(1750)+Width:MinimumMasses 2 1.43592 insert Sigma(1750)+Width:MEmass1 0 1.11568 insert Sigma(1750)+Width:MEmass1 1 1.18937 insert Sigma(1750)+Width:MEmass1 2 0.938272 insert Sigma(1750)+Width:MEmass2 0 0.13957 insert Sigma(1750)+Width:MEmass2 1 0.54751 insert Sigma(1750)+Width:MEmass2 2 0.497648 insert Sigma(1750)+Width:DecayModes 0 Sigma(1750)+->Lambda0,pi+; insert Sigma(1750)+Width:DecayModes 1 Sigma(1750)+->Sigma+,eta; insert Sigma(1750)+Width:DecayModes 2 Sigma(1750)+->p+,Kbar0; insert Sigma(1750)+Width:InterpolationMasses 0 1.7179636 insert Sigma(1750)+Width:InterpolationMasses 1 1.7274153 insert Sigma(1750)+Width:InterpolationMasses 2 1.736867 insert Sigma(1750)+Width:InterpolationMasses 3 1.7378099 insert Sigma(1750)+Width:InterpolationMasses 4 1.7387532 insert Sigma(1750)+Width:InterpolationMasses 5 1.7396971 insert Sigma(1750)+Width:InterpolationMasses 6 1.7406415 insert Sigma(1750)+Width:InterpolationMasses 7 1.7415864 insert Sigma(1750)+Width:InterpolationMasses 8 1.7425319 insert Sigma(1750)+Width:InterpolationMasses 9 1.7434778 insert Sigma(1750)+Width:InterpolationMasses 10 1.7444242 insert Sigma(1750)+Width:InterpolationMasses 11 1.7453712 insert Sigma(1750)+Width:InterpolationMasses 12 1.7463187 insert Sigma(1750)+Width:InterpolationMasses 13 1.7557704 insert Sigma(1750)+Width:InterpolationMasses 14 1.7652221 insert Sigma(1750)+Width:InterpolationMasses 15 1.7746738 insert Sigma(1750)+Width:InterpolationMasses 16 1.7841255 insert Sigma(1750)+Width:InterpolationMasses 17 1.7935772 insert Sigma(1750)+Width:InterpolationMasses 18 1.8030289 insert Sigma(1750)+Width:InterpolationMasses 19 1.8124806 insert Sigma(1750)+Width:InterpolationMasses 20 1.8219322 insert Sigma(1750)+Width:InterpolationMasses 21 1.8313839 insert Sigma(1750)+Width:InterpolationMasses 22 1.8408356 insert Sigma(1750)+Width:InterpolationMasses 23 1.8502873 insert Sigma(1750)+Width:InterpolationMasses 24 1.859739 insert Sigma(1750)+Width:InterpolationMasses 25 1.8691907 insert Sigma(1750)+Width:InterpolationMasses 26 1.8786424 insert Sigma(1750)+Width:InterpolationMasses 27 1.8880941 insert Sigma(1750)+Width:InterpolationMasses 28 1.8975458 insert Sigma(1750)+Width:InterpolationMasses 29 1.9069975 insert Sigma(1750)+Width:InterpolationMasses 30 1.9164492 insert Sigma(1750)+Width:InterpolationMasses 31 1.9259009 insert Sigma(1750)+Width:InterpolationMasses 32 1.9353526 insert Sigma(1750)+Width:InterpolationMasses 33 1.9448043 insert Sigma(1750)+Width:InterpolationMasses 34 1.954256 insert Sigma(1750)+Width:InterpolationMasses 35 1.9637077 insert Sigma(1750)+Width:InterpolationMasses 36 1.9731593 insert Sigma(1750)+Width:InterpolationMasses 37 1.982611 insert Sigma(1750)+Width:InterpolationMasses 38 1.9920627 insert Sigma(1750)+Width:InterpolationMasses 39 2.0015144 insert Sigma(1750)+Width:InterpolationMasses 40 2.0109661 insert Sigma(1750)+Width:InterpolationMasses 41 2.0204178 insert Sigma(1750)+Width:InterpolationMasses 42 2.0298695 insert Sigma(1750)+Width:InterpolationMasses 43 2.0393212 insert Sigma(1750)+Width:InterpolationMasses 44 2.0487729 insert Sigma(1750)+Width:InterpolationMasses 45 2.0582246 insert Sigma(1750)+Width:InterpolationMasses 46 2.0676763 insert Sigma(1750)+Width:InterpolationMasses 47 2.077128 insert Sigma(1750)+Width:InterpolationMasses 48 2.0865797 insert Sigma(1750)+Width:InterpolationMasses 49 2.0960314 insert Sigma(1750)+Width:InterpolationMasses 50 2.1054831 insert Sigma(1750)+Width:InterpolationMasses 51 2.1149348 insert Sigma(1750)+Width:InterpolationMasses 52 2.1243864 insert Sigma(1750)+Width:InterpolationMasses 53 2.1338381 insert Sigma(1750)+Width:InterpolationMasses 54 2.1432898 insert Sigma(1750)+Width:InterpolationMasses 55 2.1527415 insert Sigma(1750)+Width:InterpolationMasses 56 2.1621932 insert Sigma(1750)+Width:InterpolationMasses 57 2.1716449 insert Sigma(1750)+Width:InterpolationMasses 58 2.1810966 insert Sigma(1750)+Width:InterpolationMasses 59 2.1905483 insert Sigma(1750)+Width:InterpolationMasses 60 2.2 insert Sigma(1750)+Width:InterpolationMasses 61 2.2094517 insert Sigma(1750)+Width:InterpolationMasses 62 2.2189034 insert Sigma(1750)+Width:InterpolationWidths 0 0 insert Sigma(1750)+Width:InterpolationWidths 1 0 insert Sigma(1750)+Width:InterpolationWidths 2 0 insert Sigma(1750)+Width:InterpolationWidths 3 0.0058861062 insert Sigma(1750)+Width:InterpolationWidths 4 0.008381522 insert Sigma(1750)+Width:InterpolationWidths 5 0.010311821 insert Sigma(1750)+Width:InterpolationWidths 6 0.011954142 insert Sigma(1750)+Width:InterpolationWidths 7 0.013414824 insert Sigma(1750)+Width:InterpolationWidths 8 0.014748075 insert Sigma(1750)+Width:InterpolationWidths 9 0.015985939 insert Sigma(1750)+Width:InterpolationWidths 10 0.017149204 insert Sigma(1750)+Width:InterpolationWidths 11 0.018252252 insert Sigma(1750)+Width:InterpolationWidths 12 0.019305516 insert Sigma(1750)+Width:InterpolationWidths 13 0.028191537 insert Sigma(1750)+Width:InterpolationWidths 14 0.035624796 insert Sigma(1750)+Width:InterpolationWidths 15 0.042418763 insert Sigma(1750)+Width:InterpolationWidths 16 0.04887873 insert Sigma(1750)+Width:InterpolationWidths 17 0.055156943 insert Sigma(1750)+Width:InterpolationWidths 18 0.061341571 insert Sigma(1750)+Width:InterpolationWidths 19 0.067488746 insert Sigma(1750)+Width:InterpolationWidths 20 0.073636654 insert Sigma(1750)+Width:InterpolationWidths 21 0.079812588 insert Sigma(1750)+Width:InterpolationWidths 22 0.086036824 insert Sigma(1750)+Width:InterpolationWidths 23 0.0923249 insert Sigma(1750)+Width:InterpolationWidths 24 0.098689037 insert Sigma(1750)+Width:InterpolationWidths 25 0.10513906 insert Sigma(1750)+Width:InterpolationWidths 26 0.11168301 insert Sigma(1750)+Width:InterpolationWidths 27 0.11832761 insert Sigma(1750)+Width:InterpolationWidths 28 0.12507851 insert Sigma(1750)+Width:InterpolationWidths 29 0.13194057 insert Sigma(1750)+Width:InterpolationWidths 30 0.138918 insert Sigma(1750)+Width:InterpolationWidths 31 0.14601449 insert Sigma(1750)+Width:InterpolationWidths 32 0.15323331 insert Sigma(1750)+Width:InterpolationWidths 33 0.16057737 insert Sigma(1750)+Width:InterpolationWidths 34 0.16804929 insert Sigma(1750)+Width:InterpolationWidths 35 0.17565147 insert Sigma(1750)+Width:InterpolationWidths 36 0.18338608 insert Sigma(1750)+Width:InterpolationWidths 37 0.19125512 insert Sigma(1750)+Width:InterpolationWidths 38 0.19926046 insert Sigma(1750)+Width:InterpolationWidths 39 0.20740383 insert Sigma(1750)+Width:InterpolationWidths 40 0.21568683 insert Sigma(1750)+Width:InterpolationWidths 41 0.22411101 insert Sigma(1750)+Width:InterpolationWidths 42 0.23267778 insert Sigma(1750)+Width:InterpolationWidths 43 0.24138853 insert Sigma(1750)+Width:InterpolationWidths 44 0.25024455 insert Sigma(1750)+Width:InterpolationWidths 45 0.25924708 insert Sigma(1750)+Width:InterpolationWidths 46 0.26839731 insert Sigma(1750)+Width:InterpolationWidths 47 0.2776964 insert Sigma(1750)+Width:InterpolationWidths 48 0.28714545 insert Sigma(1750)+Width:InterpolationWidths 49 0.29674553 insert Sigma(1750)+Width:InterpolationWidths 50 0.30649767 insert Sigma(1750)+Width:InterpolationWidths 51 0.31640288 insert Sigma(1750)+Width:InterpolationWidths 52 0.32646215 insert Sigma(1750)+Width:InterpolationWidths 53 0.33667643 insert Sigma(1750)+Width:InterpolationWidths 54 0.34704666 insert Sigma(1750)+Width:InterpolationWidths 55 0.35757375 insert Sigma(1750)+Width:InterpolationWidths 56 0.36825861 insert Sigma(1750)+Width:InterpolationWidths 57 0.3791021 insert Sigma(1750)+Width:InterpolationWidths 58 0.3901051 insert Sigma(1750)+Width:InterpolationWidths 59 0.40126846 insert Sigma(1750)+Width:InterpolationWidths 60 0.41259301 insert Sigma(1750)+Width:InterpolationWidths 61 0.42407959 insert Sigma(1750)+Width:InterpolationWidths 62 0.43572901 insert Sigma(1750)+Width:NumberofEntries 0 0 insert Sigma(1750)+Width:NumberofEntries 1 63 insert Sigma(1750)+Width:NumberofEntries 2 63 insert Sigma(1750)+Width:BaryonDecayers 0 /Herwig/Decays/SU3Strong2 insert Sigma(1750)+Width:ModeLocation 0 24 insert Sigma(1750)+Width:BaryonDecayers 1 /Herwig/Decays/SU3Strong2 insert Sigma(1750)+Width:ModeLocation 1 25 insert Sigma(1750)+Width:BaryonDecayers 2 /Herwig/Decays/SU3Strong2 insert Sigma(1750)+Width:ModeLocation 2 23 newdef /Herwig/Particles/Sigmabar(1750)-:Width_generator Sigma(1750)+Width newdef /Herwig/Particles/Sigma(1750)+:Width_generator Sigma(1750)+Width # create Herwig::BaryonWidthGenerator Delta-Width newdef Delta-Width:Particle /Herwig/Particles/Delta- newdef Delta-Width:Prefactor 1 newdef Delta-Width:BRNormalize 1 newdef Delta-Width:BRMinimum 0.01 newdef Delta-Width:Points 50 newdef Delta-Width:InterpolationOrder 1 insert Delta-Width:MEtype 0 1 insert Delta-Width:MEcode 0 105 insert Delta-Width:MEcoupling 0 0.980375 insert Delta-Width:ModeOn 0 1 insert Delta-Width:MinimumMasses 0 1.07914 insert Delta-Width:MEmass1 0 0.939565 insert Delta-Width:MEmass2 0 0.13957 insert Delta-Width:DecayModes 0 Delta-->n0,pi-; insert Delta-Width:NumberofEntries 0 0 insert Delta-Width:BaryonDecayers 0 /Herwig/Decays/SU3Decuplet insert Delta-Width:ModeLocation 0 10 newdef /Herwig/Particles/Delta-:Width_generator Delta-Width newdef /Herwig/Particles/Deltabar+:Width_generator Delta-Width # create Herwig::BaryonWidthGenerator Delta++Width newdef Delta++Width:Particle /Herwig/Particles/Delta++ newdef Delta++Width:Prefactor 1 newdef Delta++Width:BRNormalize 1 newdef Delta++Width:BRMinimum 0.01 newdef Delta++Width:Points 50 newdef Delta++Width:InterpolationOrder 1 insert Delta++Width:MEtype 0 1 insert Delta++Width:MEcode 0 105 insert Delta++Width:MEcoupling 0 0.973473 insert Delta++Width:ModeOn 0 1 insert Delta++Width:MinimumMasses 0 1.07784 insert Delta++Width:MEmass1 0 0.938272 insert Delta++Width:MEmass2 0 0.13957 insert Delta++Width:DecayModes 0 Delta++->p+,pi+; insert Delta++Width:NumberofEntries 0 0 insert Delta++Width:BaryonDecayers 0 /Herwig/Decays/SU3Decuplet insert Delta++Width:ModeLocation 0 0 newdef /Herwig/Particles/Delta++:Width_generator Delta++Width newdef /Herwig/Particles/Deltabar--:Width_generator Delta++Width # create Herwig::BaryonWidthGenerator Sigma*-Width newdef Sigma*-Width:Particle /Herwig/Particles/Sigma*- newdef Sigma*-Width:Prefactor 1 newdef Sigma*-Width:BRNormalize 1 newdef Sigma*-Width:BRMinimum 0.01 newdef Sigma*-Width:Points 50 newdef Sigma*-Width:InterpolationOrder 1 insert Sigma*-Width:MEtype 0 1 insert Sigma*-Width:MEtype 1 1 insert Sigma*-Width:MEtype 2 1 insert Sigma*-Width:MEcode 0 105 insert Sigma*-Width:MEcode 1 105 insert Sigma*-Width:MEcode 2 105 insert Sigma*-Width:MEcoupling 0 0.809126 insert Sigma*-Width:MEcoupling 1 0.815352 insert Sigma*-Width:MEcoupling 2 0.799665 insert Sigma*-Width:ModeOn 0 1 insert Sigma*-Width:ModeOn 1 1 insert Sigma*-Width:ModeOn 2 1 insert Sigma*-Width:MinimumMasses 0 1.25525 insert Sigma*-Width:MinimumMasses 1 1.33243 insert Sigma*-Width:MinimumMasses 2 1.33221 insert Sigma*-Width:MEmass1 0 1.11568 insert Sigma*-Width:MEmass1 1 1.19745 insert Sigma*-Width:MEmass1 2 1.19264 insert Sigma*-Width:MEmass2 0 0.13957 insert Sigma*-Width:MEmass2 1 0.134978 insert Sigma*-Width:MEmass2 2 0.13957 insert Sigma*-Width:DecayModes 0 Sigma*-->Lambda0,pi-; insert Sigma*-Width:DecayModes 1 Sigma*-->Sigma-,pi0; insert Sigma*-Width:DecayModes 2 Sigma*-->Sigma0,pi-; insert Sigma*-Width:NumberofEntries 0 0 insert Sigma*-Width:NumberofEntries 1 0 insert Sigma*-Width:NumberofEntries 2 0 insert Sigma*-Width:BaryonDecayers 0 /Herwig/Decays/SU3Decuplet insert Sigma*-Width:ModeLocation 0 26 insert Sigma*-Width:BaryonDecayers 1 /Herwig/Decays/SU3Decuplet insert Sigma*-Width:ModeLocation 1 23 insert Sigma*-Width:BaryonDecayers 2 /Herwig/Decays/SU3Decuplet insert Sigma*-Width:ModeLocation 2 24 newdef /Herwig/Particles/Sigma*-:Width_generator Sigma*-Width newdef /Herwig/Particles/Sigma*bar+:Width_generator Sigma*-Width # create Herwig::BaryonWidthGenerator Sigma*0Width newdef Sigma*0Width:Particle /Herwig/Particles/Sigma*0 newdef Sigma*0Width:Prefactor 1 newdef Sigma*0Width:BRNormalize 1 newdef Sigma*0Width:BRMinimum 0.01 newdef Sigma*0Width:Points 50 newdef Sigma*0Width:InterpolationOrder 1 insert Sigma*0Width:MEtype 0 0 insert Sigma*0Width:MEtype 1 1 insert Sigma*0Width:MEtype 2 1 insert Sigma*0Width:MEtype 3 1 insert Sigma*0Width:MEcode 0 0 insert Sigma*0Width:MEcode 1 105 insert Sigma*0Width:MEcode 2 105 insert Sigma*0Width:MEcode 3 105 insert Sigma*0Width:MEcoupling 0 0.013 insert Sigma*0Width:MEcoupling 1 0.777823 insert Sigma*0Width:MEcoupling 2 0.829248 insert Sigma*0Width:MEcoupling 3 0.727994 insert Sigma*0Width:ModeOn 0 1 insert Sigma*0Width:ModeOn 1 1 insert Sigma*0Width:ModeOn 2 1 insert Sigma*0Width:ModeOn 3 1 insert Sigma*0Width:MinimumMasses 0 1.11568 insert Sigma*0Width:MinimumMasses 1 1.25066 insert Sigma*0Width:MinimumMasses 2 1.33702 insert Sigma*0Width:MinimumMasses 3 1.32894 insert Sigma*0Width:MEmass1 0 0 insert Sigma*0Width:MEmass1 1 1.11568 insert Sigma*0Width:MEmass1 2 1.19745 insert Sigma*0Width:MEmass1 3 1.18937 insert Sigma*0Width:MEmass2 0 0 insert Sigma*0Width:MEmass2 1 0.134978 insert Sigma*0Width:MEmass2 2 0.13957 insert Sigma*0Width:MEmass2 3 0.13957 insert Sigma*0Width:DecayModes 0 Sigma*0->Lambda0,gamma; insert Sigma*0Width:DecayModes 1 Sigma*0->Lambda0,pi0; insert Sigma*0Width:DecayModes 2 Sigma*0->Sigma-,pi+; insert Sigma*0Width:DecayModes 3 Sigma*0->Sigma+,pi-; insert Sigma*0Width:NumberofEntries 0 0 insert Sigma*0Width:NumberofEntries 1 0 insert Sigma*0Width:NumberofEntries 2 0 insert Sigma*0Width:NumberofEntries 3 0 insert Sigma*0Width:BaryonDecayers 0 NULL insert Sigma*0Width:ModeLocation 0 -1 insert Sigma*0Width:BaryonDecayers 1 /Herwig/Decays/SU3Decuplet insert Sigma*0Width:ModeLocation 1 21 insert Sigma*0Width:BaryonDecayers 2 /Herwig/Decays/SU3Decuplet insert Sigma*0Width:ModeLocation 2 19 insert Sigma*0Width:BaryonDecayers 3 /Herwig/Decays/SU3Decuplet insert Sigma*0Width:ModeLocation 3 20 newdef /Herwig/Particles/Sigma*0:Width_generator Sigma*0Width newdef /Herwig/Particles/Sigma*bar0:Width_generator Sigma*0Width # create Herwig::BaryonWidthGenerator Sigma*+Width newdef Sigma*+Width:Particle /Herwig/Particles/Sigma*+ newdef Sigma*+Width:Prefactor 1 newdef Sigma*+Width:BRNormalize 1 newdef Sigma*+Width:BRMinimum 0.01 newdef Sigma*+Width:Points 50 newdef Sigma*+Width:InterpolationOrder 1 insert Sigma*+Width:MEtype 0 1 insert Sigma*+Width:MEtype 1 1 insert Sigma*+Width:MEtype 2 1 insert Sigma*+Width:MEcode 0 105 insert Sigma*+Width:MEcode 1 105 insert Sigma*+Width:MEcode 2 105 insert Sigma*+Width:MEcoupling 0 0.794747 insert Sigma*+Width:MEcoupling 1 0.73708 insert Sigma*+Width:MEcoupling 2 0.816571 insert Sigma*+Width:ModeOn 0 1 insert Sigma*+Width:ModeOn 1 1 insert Sigma*+Width:ModeOn 2 1 insert Sigma*+Width:MinimumMasses 0 1.25525 insert Sigma*+Width:MinimumMasses 1 1.32435 insert Sigma*+Width:MinimumMasses 2 1.33221 insert Sigma*+Width:MEmass1 0 1.11568 insert Sigma*+Width:MEmass1 1 1.18937 insert Sigma*+Width:MEmass1 2 1.19264 insert Sigma*+Width:MEmass2 0 0.13957 insert Sigma*+Width:MEmass2 1 0.134978 insert Sigma*+Width:MEmass2 2 0.13957 insert Sigma*+Width:DecayModes 0 Sigma*+->Lambda0,pi+; insert Sigma*+Width:DecayModes 1 Sigma*+->Sigma+,pi0; insert Sigma*+Width:DecayModes 2 Sigma*+->Sigma0,pi+; insert Sigma*+Width:NumberofEntries 0 0 insert Sigma*+Width:NumberofEntries 1 0 insert Sigma*+Width:NumberofEntries 2 0 insert Sigma*+Width:BaryonDecayers 0 /Herwig/Decays/SU3Decuplet insert Sigma*+Width:ModeLocation 0 16 insert Sigma*+Width:BaryonDecayers 1 /Herwig/Decays/SU3Decuplet insert Sigma*+Width:ModeLocation 1 12 insert Sigma*+Width:BaryonDecayers 2 /Herwig/Decays/SU3Decuplet insert Sigma*+Width:ModeLocation 2 13 newdef /Herwig/Particles/Sigma*+:Width_generator Sigma*+Width newdef /Herwig/Particles/Sigma*bar-:Width_generator Sigma*+Width # create Herwig::SMHiggsWidthGenerator HiggsWidth newdef HiggsWidth:WidthScheme 2 newdef HiggsWidth:Particle /Herwig/Particles/h0 newdef /Herwig/Particles/h0:Width_generator HiggsWidth # create Herwig::BaryonWidthGenerator Xi*-Width newdef Xi*-Width:Particle /Herwig/Particles/Xi*- newdef Xi*-Width:Prefactor 1 newdef Xi*-Width:BRNormalize 1 newdef Xi*-Width:BRMinimum 0.01 newdef Xi*-Width:Points 50 newdef Xi*-Width:InterpolationOrder 1 insert Xi*-Width:MEtype 0 1 insert Xi*-Width:MEtype 1 1 insert Xi*-Width:MEcode 0 105 insert Xi*-Width:MEcode 1 105 insert Xi*-Width:MEcoupling 0 0.670299 insert Xi*-Width:MEcoupling 1 0.647029 insert Xi*-Width:ModeOn 0 1 insert Xi*-Width:ModeOn 1 1 insert Xi*-Width:MinimumMasses 0 1.45629 insert Xi*-Width:MinimumMasses 1 1.4544 insert Xi*-Width:MEmass1 0 1.32131 insert Xi*-Width:MEmass1 1 1.31483 insert Xi*-Width:MEmass2 0 0.134978 insert Xi*-Width:MEmass2 1 0.13957 insert Xi*-Width:DecayModes 0 Xi*-->Xi-,pi0; insert Xi*-Width:DecayModes 1 Xi*-->Xi0,pi-; insert Xi*-Width:NumberofEntries 0 0 insert Xi*-Width:NumberofEntries 1 0 insert Xi*-Width:BaryonDecayers 0 /Herwig/Decays/SU3Decuplet insert Xi*-Width:ModeLocation 0 32 insert Xi*-Width:BaryonDecayers 1 /Herwig/Decays/SU3Decuplet insert Xi*-Width:ModeLocation 1 31 newdef /Herwig/Particles/Xi*-:Width_generator Xi*-Width newdef /Herwig/Particles/Xi*bar+:Width_generator Xi*-Width # create Herwig::BaryonWidthGenerator Xi*0Width newdef Xi*0Width:Particle /Herwig/Particles/Xi*0 newdef Xi*0Width:Prefactor 1 newdef Xi*0Width:BRNormalize 1 newdef Xi*0Width:BRMinimum 0.01 newdef Xi*0Width:Points 50 newdef Xi*0Width:InterpolationOrder 1 insert Xi*0Width:MEtype 0 1 insert Xi*0Width:MEtype 1 1 insert Xi*0Width:MEcode 0 105 insert Xi*0Width:MEcode 1 105 insert Xi*0Width:MEcoupling 0 0.691304 insert Xi*0Width:MEcoupling 1 0.620944 insert Xi*0Width:ModeOn 0 1 insert Xi*0Width:ModeOn 1 1 insert Xi*0Width:MinimumMasses 0 1.46088 insert Xi*0Width:MinimumMasses 1 1.44981 insert Xi*0Width:MEmass1 0 1.32131 insert Xi*0Width:MEmass1 1 1.31483 insert Xi*0Width:MEmass2 0 0.13957 insert Xi*0Width:MEmass2 1 0.134978 insert Xi*0Width:DecayModes 0 Xi*0->Xi-,pi+; insert Xi*0Width:DecayModes 1 Xi*0->Xi0,pi0; insert Xi*0Width:NumberofEntries 0 0 insert Xi*0Width:NumberofEntries 1 0 insert Xi*0Width:BaryonDecayers 0 /Herwig/Decays/SU3Decuplet insert Xi*0Width:ModeLocation 0 28 insert Xi*0Width:BaryonDecayers 1 /Herwig/Decays/SU3Decuplet insert Xi*0Width:ModeLocation 1 29 newdef /Herwig/Particles/Xi*0:Width_generator Xi*0Width newdef /Herwig/Particles/Xi*bar0:Width_generator Xi*0Width # create Herwig::BaryonWidthGenerator n(1440)0Width newdef n(1440)0Width:Particle /Herwig/Particles/n(1440)0 newdef n(1440)0Width:Prefactor 0.999096 newdef n(1440)0Width:BRNormalize 1 newdef n(1440)0Width:BRMinimum 0.01 newdef n(1440)0Width:Points 50 newdef n(1440)0Width:InterpolationOrder 1 insert n(1440)0Width:MEtype 0 2 insert n(1440)0Width:MEtype 1 2 insert n(1440)0Width:MEtype 2 2 insert n(1440)0Width:MEtype 3 1 insert n(1440)0Width:MEtype 4 0 insert n(1440)0Width:MEtype 5 0 insert n(1440)0Width:MEtype 6 1 insert n(1440)0Width:MEtype 7 1 insert n(1440)0Width:MEcode 0 0 insert n(1440)0Width:MEcode 1 0 insert n(1440)0Width:MEcode 2 0 insert n(1440)0Width:MEcode 3 102 insert n(1440)0Width:MEcode 4 0 insert n(1440)0Width:MEcode 5 0 insert n(1440)0Width:MEcode 6 101 insert n(1440)0Width:MEcode 7 101 insert n(1440)0Width:MEcoupling 0 1.33008 insert n(1440)0Width:MEcoupling 1 1.34594 insert n(1440)0Width:MEcoupling 2 1.258 insert n(1440)0Width:MEcoupling 3 0.816872 insert n(1440)0Width:MEcoupling 4 0.058321 insert n(1440)0Width:MEcoupling 5 0.029161 insert n(1440)0Width:MEcoupling 6 0.937179 insert n(1440)0Width:MEcoupling 7 0.937891 insert n(1440)0Width:ModeOn 0 1 insert n(1440)0Width:ModeOn 1 1 insert n(1440)0Width:ModeOn 2 1 insert n(1440)0Width:ModeOn 3 0 insert n(1440)0Width:ModeOn 4 1 insert n(1440)0Width:ModeOn 5 1 insert n(1440)0Width:ModeOn 6 1 insert n(1440)0Width:ModeOn 7 1 insert n(1440)0Width:MinimumMasses 0 1.22157 insert n(1440)0Width:MinimumMasses 1 1.22157 insert n(1440)0Width:MinimumMasses 2 1.21698 insert n(1440)0Width:MinimumMasses 3 0.939565 insert n(1440)0Width:MinimumMasses 4 1.21871 insert n(1440)0Width:MinimumMasses 5 1.20952 insert n(1440)0Width:MinimumMasses 6 1.07454 insert n(1440)0Width:MinimumMasses 7 1.07784 insert n(1440)0Width:MEmass1 0 1.232 insert n(1440)0Width:MEmass1 1 1.232 insert n(1440)0Width:MEmass1 2 1.232 insert n(1440)0Width:MEmass1 3 0.939565 insert n(1440)0Width:MEmass1 4 0 insert n(1440)0Width:MEmass1 5 0 insert n(1440)0Width:MEmass1 6 0.939565 insert n(1440)0Width:MEmass1 7 0.938272 insert n(1440)0Width:MEmass2 0 0.13957 insert n(1440)0Width:MEmass2 1 0.13957 insert n(1440)0Width:MEmass2 2 0.134978 insert n(1440)0Width:MEmass2 3 0 insert n(1440)0Width:MEmass2 4 0 insert n(1440)0Width:MEmass2 5 0 insert n(1440)0Width:MEmass2 6 0.134978 insert n(1440)0Width:MEmass2 7 0.13957 insert n(1440)0Width:DecayModes 0 n(1440)0->Delta+,pi-; insert n(1440)0Width:DecayModes 1 n(1440)0->Delta-,pi+; insert n(1440)0Width:DecayModes 2 n(1440)0->Delta0,pi0; insert n(1440)0Width:DecayModes 3 n(1440)0->n0,gamma; insert n(1440)0Width:DecayModes 4 n(1440)0->n0,pi+,pi-; insert n(1440)0Width:DecayModes 5 n(1440)0->n0,pi0,pi0; insert n(1440)0Width:DecayModes 6 n(1440)0->n0,pi0; insert n(1440)0Width:DecayModes 7 n(1440)0->p+,pi-; insert n(1440)0Width:InterpolationMasses 0 1.1881649 insert n(1440)0Width:InterpolationMasses 1 1.2048675 insert n(1440)0Width:InterpolationMasses 2 1.2215702 insert n(1440)0Width:InterpolationMasses 3 1.2232303 insert n(1440)0Width:InterpolationMasses 4 1.2248926 insert n(1440)0Width:InterpolationMasses 5 1.2265572 insert n(1440)0Width:InterpolationMasses 6 1.228224 insert n(1440)0Width:InterpolationMasses 7 1.2298932 insert n(1440)0Width:InterpolationMasses 8 1.2315645 insert n(1440)0Width:InterpolationMasses 9 1.2332382 insert n(1440)0Width:InterpolationMasses 10 1.2349141 insert n(1440)0Width:InterpolationMasses 11 1.2365923 insert n(1440)0Width:InterpolationMasses 12 1.2382728 insert n(1440)0Width:InterpolationMasses 13 1.2549755 insert n(1440)0Width:InterpolationMasses 14 1.2716781 insert n(1440)0Width:InterpolationMasses 15 1.2883808 insert n(1440)0Width:InterpolationMasses 16 1.3050834 insert n(1440)0Width:InterpolationMasses 17 1.3217861 insert n(1440)0Width:InterpolationMasses 18 1.3384887 insert n(1440)0Width:InterpolationMasses 19 1.3551914 insert n(1440)0Width:InterpolationMasses 20 1.371894 insert n(1440)0Width:InterpolationMasses 21 1.3885967 insert n(1440)0Width:InterpolationMasses 22 1.4052993 insert n(1440)0Width:InterpolationMasses 23 1.422002 insert n(1440)0Width:InterpolationMasses 24 1.4387046 insert n(1440)0Width:InterpolationMasses 25 1.4554073 insert n(1440)0Width:InterpolationMasses 26 1.4721099 insert n(1440)0Width:InterpolationMasses 27 1.4888126 insert n(1440)0Width:InterpolationMasses 28 1.5055152 insert n(1440)0Width:InterpolationMasses 29 1.5222179 insert n(1440)0Width:InterpolationMasses 30 1.5389205 insert n(1440)0Width:InterpolationMasses 31 1.5556232 insert n(1440)0Width:InterpolationMasses 32 1.5723258 insert n(1440)0Width:InterpolationMasses 33 1.5890285 insert n(1440)0Width:InterpolationMasses 34 1.6057311 insert n(1440)0Width:InterpolationMasses 35 1.6224338 insert n(1440)0Width:InterpolationMasses 36 1.6391364 insert n(1440)0Width:InterpolationMasses 37 1.6558391 insert n(1440)0Width:InterpolationMasses 38 1.6725417 insert n(1440)0Width:InterpolationMasses 39 1.6892444 insert n(1440)0Width:InterpolationMasses 40 1.705947 insert n(1440)0Width:InterpolationMasses 41 1.7226497 insert n(1440)0Width:InterpolationMasses 42 1.7393523 insert n(1440)0Width:InterpolationMasses 43 1.756055 insert n(1440)0Width:InterpolationMasses 44 1.7727576 insert n(1440)0Width:InterpolationMasses 45 1.7894603 insert n(1440)0Width:InterpolationMasses 46 1.8061629 insert n(1440)0Width:InterpolationMasses 47 1.8228656 insert n(1440)0Width:InterpolationMasses 48 1.8395682 insert n(1440)0Width:InterpolationMasses 49 1.8562709 insert n(1440)0Width:InterpolationMasses 50 1.8729735 insert n(1440)0Width:InterpolationMasses 51 1.8896762 insert n(1440)0Width:InterpolationMasses 52 1.9063788 insert n(1440)0Width:InterpolationMasses 53 1.9230815 insert n(1440)0Width:InterpolationMasses 54 1.9397841 insert n(1440)0Width:InterpolationMasses 55 1.9564868 insert n(1440)0Width:InterpolationMasses 56 1.9731894 insert n(1440)0Width:InterpolationMasses 57 1.9898921 insert n(1440)0Width:InterpolationMasses 58 2.0065947 insert n(1440)0Width:InterpolationMasses 59 2.0232974 insert n(1440)0Width:InterpolationMasses 60 2.04 insert n(1440)0Width:InterpolationMasses 61 2.0567026 insert n(1440)0Width:InterpolationMasses 62 2.0734053 insert n(1440)0Width:InterpolationMasses 63 1.1881649 insert n(1440)0Width:InterpolationMasses 64 1.2048675 insert n(1440)0Width:InterpolationMasses 65 1.2215702 insert n(1440)0Width:InterpolationMasses 66 1.2232303 insert n(1440)0Width:InterpolationMasses 67 1.2248926 insert n(1440)0Width:InterpolationMasses 68 1.2265572 insert n(1440)0Width:InterpolationMasses 69 1.228224 insert n(1440)0Width:InterpolationMasses 70 1.2298932 insert n(1440)0Width:InterpolationMasses 71 1.2315645 insert n(1440)0Width:InterpolationMasses 72 1.2332382 insert n(1440)0Width:InterpolationMasses 73 1.2349141 insert n(1440)0Width:InterpolationMasses 74 1.2365923 insert n(1440)0Width:InterpolationMasses 75 1.2382728 insert n(1440)0Width:InterpolationMasses 76 1.2549755 insert n(1440)0Width:InterpolationMasses 77 1.2716781 insert n(1440)0Width:InterpolationMasses 78 1.2883808 insert n(1440)0Width:InterpolationMasses 79 1.3050834 insert n(1440)0Width:InterpolationMasses 80 1.3217861 insert n(1440)0Width:InterpolationMasses 81 1.3384887 insert n(1440)0Width:InterpolationMasses 82 1.3551914 insert n(1440)0Width:InterpolationMasses 83 1.371894 insert n(1440)0Width:InterpolationMasses 84 1.3885967 insert n(1440)0Width:InterpolationMasses 85 1.4052993 insert n(1440)0Width:InterpolationMasses 86 1.422002 insert n(1440)0Width:InterpolationMasses 87 1.4387046 insert n(1440)0Width:InterpolationMasses 88 1.4554073 insert n(1440)0Width:InterpolationMasses 89 1.4721099 insert n(1440)0Width:InterpolationMasses 90 1.4888126 insert n(1440)0Width:InterpolationMasses 91 1.5055152 insert n(1440)0Width:InterpolationMasses 92 1.5222179 insert n(1440)0Width:InterpolationMasses 93 1.5389205 insert n(1440)0Width:InterpolationMasses 94 1.5556232 insert n(1440)0Width:InterpolationMasses 95 1.5723258 insert n(1440)0Width:InterpolationMasses 96 1.5890285 insert n(1440)0Width:InterpolationMasses 97 1.6057311 insert n(1440)0Width:InterpolationMasses 98 1.6224338 insert n(1440)0Width:InterpolationMasses 99 1.6391364 insert n(1440)0Width:InterpolationMasses 100 1.6558391 insert n(1440)0Width:InterpolationMasses 101 1.6725417 insert n(1440)0Width:InterpolationMasses 102 1.6892444 insert n(1440)0Width:InterpolationMasses 103 1.705947 insert n(1440)0Width:InterpolationMasses 104 1.7226497 insert n(1440)0Width:InterpolationMasses 105 1.7393523 insert n(1440)0Width:InterpolationMasses 106 1.756055 insert n(1440)0Width:InterpolationMasses 107 1.7727576 insert n(1440)0Width:InterpolationMasses 108 1.7894603 insert n(1440)0Width:InterpolationMasses 109 1.8061629 insert n(1440)0Width:InterpolationMasses 110 1.8228656 insert n(1440)0Width:InterpolationMasses 111 1.8395682 insert n(1440)0Width:InterpolationMasses 112 1.8562709 insert n(1440)0Width:InterpolationMasses 113 1.8729735 insert n(1440)0Width:InterpolationMasses 114 1.8896762 insert n(1440)0Width:InterpolationMasses 115 1.9063788 insert n(1440)0Width:InterpolationMasses 116 1.9230815 insert n(1440)0Width:InterpolationMasses 117 1.9397841 insert n(1440)0Width:InterpolationMasses 118 1.9564868 insert n(1440)0Width:InterpolationMasses 119 1.9731894 insert n(1440)0Width:InterpolationMasses 120 1.9898921 insert n(1440)0Width:InterpolationMasses 121 2.0065947 insert n(1440)0Width:InterpolationMasses 122 2.0232974 insert n(1440)0Width:InterpolationMasses 123 2.04 insert n(1440)0Width:InterpolationMasses 124 2.0567026 insert n(1440)0Width:InterpolationMasses 125 2.0734053 insert n(1440)0Width:InterpolationMasses 126 1.1833848 insert n(1440)0Width:InterpolationMasses 127 1.2001812 insert n(1440)0Width:InterpolationMasses 128 1.2169776 insert n(1440)0Width:InterpolationMasses 129 1.2186469 insert n(1440)0Width:InterpolationMasses 130 1.2203185 insert n(1440)0Width:InterpolationMasses 131 1.2219924 insert n(1440)0Width:InterpolationMasses 132 1.2236685 insert n(1440)0Width:InterpolationMasses 133 1.225347 insert n(1440)0Width:InterpolationMasses 134 1.2270278 insert n(1440)0Width:InterpolationMasses 135 1.2287109 insert n(1440)0Width:InterpolationMasses 136 1.2303963 insert n(1440)0Width:InterpolationMasses 137 1.232084 insert n(1440)0Width:InterpolationMasses 138 1.233774 insert n(1440)0Width:InterpolationMasses 139 1.2505704 insert n(1440)0Width:InterpolationMasses 140 1.2673667 insert n(1440)0Width:InterpolationMasses 141 1.2841631 insert n(1440)0Width:InterpolationMasses 142 1.3009595 insert n(1440)0Width:InterpolationMasses 143 1.3177559 insert n(1440)0Width:InterpolationMasses 144 1.3345522 insert n(1440)0Width:InterpolationMasses 145 1.3513486 insert n(1440)0Width:InterpolationMasses 146 1.368145 insert n(1440)0Width:InterpolationMasses 147 1.3849414 insert n(1440)0Width:InterpolationMasses 148 1.4017377 insert n(1440)0Width:InterpolationMasses 149 1.4185341 insert n(1440)0Width:InterpolationMasses 150 1.4353305 insert n(1440)0Width:InterpolationMasses 151 1.4521269 insert n(1440)0Width:InterpolationMasses 152 1.4689232 insert n(1440)0Width:InterpolationMasses 153 1.4857196 insert n(1440)0Width:InterpolationMasses 154 1.502516 insert n(1440)0Width:InterpolationMasses 155 1.5193124 insert n(1440)0Width:InterpolationMasses 156 1.5361087 insert n(1440)0Width:InterpolationMasses 157 1.5529051 insert n(1440)0Width:InterpolationMasses 158 1.5697015 insert n(1440)0Width:InterpolationMasses 159 1.5864979 insert n(1440)0Width:InterpolationMasses 160 1.6032942 insert n(1440)0Width:InterpolationMasses 161 1.6200906 insert n(1440)0Width:InterpolationMasses 162 1.636887 insert n(1440)0Width:InterpolationMasses 163 1.6536834 insert n(1440)0Width:InterpolationMasses 164 1.6704797 insert n(1440)0Width:InterpolationMasses 165 1.6872761 insert n(1440)0Width:InterpolationMasses 166 1.7040725 insert n(1440)0Width:InterpolationMasses 167 1.7208689 insert n(1440)0Width:InterpolationMasses 168 1.7376652 insert n(1440)0Width:InterpolationMasses 169 1.7544616 insert n(1440)0Width:InterpolationMasses 170 1.771258 insert n(1440)0Width:InterpolationMasses 171 1.7880544 insert n(1440)0Width:InterpolationMasses 172 1.8048507 insert n(1440)0Width:InterpolationMasses 173 1.8216471 insert n(1440)0Width:InterpolationMasses 174 1.8384435 insert n(1440)0Width:InterpolationMasses 175 1.8552399 insert n(1440)0Width:InterpolationMasses 176 1.8720362 insert n(1440)0Width:InterpolationMasses 177 1.8888326 insert n(1440)0Width:InterpolationMasses 178 1.905629 insert n(1440)0Width:InterpolationMasses 179 1.9224254 insert n(1440)0Width:InterpolationMasses 180 1.9392217 insert n(1440)0Width:InterpolationMasses 181 1.9560181 insert n(1440)0Width:InterpolationMasses 182 1.9728145 insert n(1440)0Width:InterpolationMasses 183 1.9896109 insert n(1440)0Width:InterpolationMasses 184 2.0064072 insert n(1440)0Width:InterpolationMasses 185 2.0232036 insert n(1440)0Width:InterpolationMasses 186 2.04 insert n(1440)0Width:InterpolationMasses 187 2.0567964 insert n(1440)0Width:InterpolationMasses 188 2.0735928 insert n(1440)0Width:InterpolationWidths 0 0 insert n(1440)0Width:InterpolationWidths 1 0 insert n(1440)0Width:InterpolationWidths 2 0 insert n(1440)0Width:InterpolationWidths 3 1.2942096e-10 insert n(1440)0Width:InterpolationWidths 4 8.1581939e-10 insert n(1440)0Width:InterpolationWidths 5 2.4975026e-09 insert n(1440)0Width:InterpolationWidths 6 5.6780419e-09 insert n(1440)0Width:InterpolationWidths 7 1.0952435e-08 insert n(1440)0Width:InterpolationWidths 8 1.9021355e-08 insert n(1440)0Width:InterpolationWidths 9 3.0703385e-08 insert n(1440)0Width:InterpolationWidths 10 4.6947045e-08 insert n(1440)0Width:InterpolationWidths 11 6.8843214e-08 insert n(1440)0Width:InterpolationWidths 12 9.7638225e-08 insert n(1440)0Width:InterpolationWidths 13 1.1512584e-06 insert n(1440)0Width:InterpolationWidths 14 5.8389716e-06 insert n(1440)0Width:InterpolationWidths 15 2.0588437e-05 insert n(1440)0Width:InterpolationWidths 16 5.9431898e-05 insert n(1440)0Width:InterpolationWidths 17 0.0001516117 insert n(1440)0Width:InterpolationWidths 18 0.00035445972 insert n(1440)0Width:InterpolationWidths 19 0.00076415144 insert n(1440)0Width:InterpolationWidths 20 0.0015007824 insert n(1440)0Width:InterpolationWidths 21 0.0026733231 insert n(1440)0Width:InterpolationWidths 22 0.0043678822 insert n(1440)0Width:InterpolationWidths 23 0.0066568624 insert n(1440)0Width:InterpolationWidths 24 0.0096074145 insert n(1440)0Width:InterpolationWidths 25 0.013285366 insert n(1440)0Width:InterpolationWidths 26 0.01775676 insert n(1440)0Width:InterpolationWidths 27 0.023088437 insert n(1440)0Width:InterpolationWidths 28 0.029348248 insert n(1440)0Width:InterpolationWidths 29 0.036605131 insert n(1440)0Width:InterpolationWidths 30 0.044929129 insert n(1440)0Width:InterpolationWidths 31 0.0543914 insert n(1440)0Width:InterpolationWidths 32 0.065064212 insert n(1440)0Width:InterpolationWidths 33 0.077020944 insert n(1440)0Width:InterpolationWidths 34 0.09033609 insert n(1440)0Width:InterpolationWidths 35 0.10508526 insert n(1440)0Width:InterpolationWidths 36 0.12134519 insert n(1440)0Width:InterpolationWidths 37 0.13919375 insert n(1440)0Width:InterpolationWidths 38 0.15870995 insert n(1440)0Width:InterpolationWidths 39 0.17997395 insert n(1440)0Width:InterpolationWidths 40 0.2030671 insert n(1440)0Width:InterpolationWidths 41 0.2280719 insert n(1440)0Width:InterpolationWidths 42 0.25507208 insert n(1440)0Width:InterpolationWidths 43 0.28415278 insert n(1440)0Width:InterpolationWidths 44 0.31539973 insert n(1440)0Width:InterpolationWidths 45 0.34890051 insert n(1440)0Width:InterpolationWidths 46 0.38474375 insert n(1440)0Width:InterpolationWidths 47 0.42301937 insert n(1440)0Width:InterpolationWidths 48 0.46381855 insert n(1440)0Width:InterpolationWidths 49 0.50723379 insert n(1440)0Width:InterpolationWidths 50 0.5533589 insert n(1440)0Width:InterpolationWidths 51 0.602289 insert n(1440)0Width:InterpolationWidths 52 0.65412057 insert n(1440)0Width:InterpolationWidths 53 0.70895144 insert n(1440)0Width:InterpolationWidths 54 0.76688082 insert n(1440)0Width:InterpolationWidths 55 0.8280093 insert n(1440)0Width:InterpolationWidths 56 0.89243888 insert n(1440)0Width:InterpolationWidths 57 0.96027051 insert n(1440)0Width:InterpolationWidths 58 1.0316033 insert n(1440)0Width:InterpolationWidths 59 1.1065391 insert n(1440)0Width:InterpolationWidths 60 1.1851814 insert n(1440)0Width:InterpolationWidths 61 1.267635 insert n(1440)0Width:InterpolationWidths 62 1.3540063 insert n(1440)0Width:InterpolationWidths 63 0 insert n(1440)0Width:InterpolationWidths 64 0 insert n(1440)0Width:InterpolationWidths 65 0 insert n(1440)0Width:InterpolationWidths 66 1.2149259e-10 insert n(1440)0Width:InterpolationWidths 67 8.6141135e-10 insert n(1440)0Width:InterpolationWidths 68 2.9127463e-09 insert n(1440)0Width:InterpolationWidths 69 7.2072824e-09 insert n(1440)0Width:InterpolationWidths 70 1.4950928e-08 insert n(1440)0Width:InterpolationWidths 71 2.7653409e-08 insert n(1440)0Width:InterpolationWidths 72 4.7158875e-08 insert n(1440)0Width:InterpolationWidths 73 7.5678163e-08 insert n(1440)0Width:InterpolationWidths 74 1.1582343e-07 insert n(1440)0Width:InterpolationWidths 75 1.7064538e-07 insert n(1440)0Width:InterpolationWidths 76 2.5294396e-06 insert n(1440)0Width:InterpolationWidths 77 1.4270418e-05 insert n(1440)0Width:InterpolationWidths 78 5.3498205e-05 insert n(1440)0Width:InterpolationWidths 79 0.00016073825 insert n(1440)0Width:InterpolationWidths 80 0.00042189035 insert n(1440)0Width:InterpolationWidths 81 0.0010076001 insert n(1440)0Width:InterpolationWidths 82 0.0022067064 insert n(1440)0Width:InterpolationWidths 83 0.0043806286 insert n(1440)0Width:InterpolationWidths 84 0.0078559396 insert n(1440)0Width:InterpolationWidths 85 0.012889553 insert n(1440)0Width:InterpolationWidths 86 0.019697265 insert n(1440)0Width:InterpolationWidths 87 0.028479327 insert n(1440)0Width:InterpolationWidths 88 0.039432157 insert n(1440)0Width:InterpolationWidths 89 0.052752878 insert n(1440)0Width:InterpolationWidths 90 0.068641017 insert n(1440)0Width:InterpolationWidths 91 0.087299125 insert n(1440)0Width:InterpolationWidths 92 0.10893299 insert n(1440)0Width:InterpolationWidths 93 0.13375171 insert n(1440)0Width:InterpolationWidths 94 0.16196767 insert n(1440)0Width:InterpolationWidths 95 0.19379658 insert n(1440)0Width:InterpolationWidths 96 0.22945744 insert n(1440)0Width:InterpolationWidths 97 0.26917257 insert n(1440)0Width:InterpolationWidths 98 0.31316762 insert n(1440)0Width:InterpolationWidths 99 0.36167155 insert n(1440)0Width:InterpolationWidths 100 0.41491671 insert n(1440)0Width:InterpolationWidths 101 0.47313886 insert n(1440)0Width:InterpolationWidths 102 0.53657717 insert n(1440)0Width:InterpolationWidths 103 0.6054743 insert n(1440)0Width:InterpolationWidths 104 0.68007641 insert n(1440)0Width:InterpolationWidths 105 0.76063383 insert n(1440)0Width:InterpolationWidths 106 0.84739877 insert n(1440)0Width:InterpolationWidths 107 0.94062869 insert n(1440)0Width:InterpolationWidths 108 1.0405842 insert n(1440)0Width:InterpolationWidths 109 1.1475298 insert n(1440)0Width:InterpolationWidths 110 1.2617335 insert n(1440)0Width:InterpolationWidths 111 1.3834673 insert n(1440)0Width:InterpolationWidths 112 1.513007 insert n(1440)0Width:InterpolationWidths 113 1.6506324 insert n(1440)0Width:InterpolationWidths 114 1.7966272 insert n(1440)0Width:InterpolationWidths 115 1.951279 insert n(1440)0Width:InterpolationWidths 116 2.1148796 insert n(1440)0Width:InterpolationWidths 117 2.2877247 insert n(1440)0Width:InterpolationWidths 118 2.4701144 insert n(1440)0Width:InterpolationWidths 119 2.6623526 insert n(1440)0Width:InterpolationWidths 120 2.8647406 insert n(1440)0Width:InterpolationWidths 121 3.077574 insert n(1440)0Width:InterpolationWidths 122 3.3011565 insert n(1440)0Width:InterpolationWidths 123 3.5357968 insert n(1440)0Width:InterpolationWidths 124 3.7818078 insert n(1440)0Width:InterpolationWidths 125 4.0395063 insert n(1440)0Width:InterpolationWidths 126 0 insert n(1440)0Width:InterpolationWidths 127 0 insert n(1440)0Width:InterpolationWidths 128 0 insert n(1440)0Width:InterpolationWidths 129 2.2270694e-10 insert n(1440)0Width:InterpolationWidths 130 1.4191693e-09 insert n(1440)0Width:InterpolationWidths 131 4.3860867e-09 insert n(1440)0Width:InterpolationWidths 132 1.0055731e-08 insert n(1440)0Width:InterpolationWidths 133 1.9541482e-08 insert n(1440)0Width:InterpolationWidths 134 3.4164085e-08 insert n(1440)0Width:InterpolationWidths 135 5.5474947e-08 insert n(1440)0Width:InterpolationWidths 136 8.5279424e-08 insert n(1440)0Width:InterpolationWidths 137 1.2566108e-07 insert n(1440)0Width:InterpolationWidths 138 1.7900739e-07 insert n(1440)0Width:InterpolationWidths 139 2.1713771e-06 insert n(1440)0Width:InterpolationWidths 140 1.1179415e-05 insert n(1440)0Width:InterpolationWidths 141 3.9807978e-05 insert n(1440)0Width:InterpolationWidths 142 0.00011576493 insert n(1440)0Width:InterpolationWidths 143 0.00029711113 insert n(1440)0Width:InterpolationWidths 144 0.00069800469 insert n(1440)0Width:InterpolationWidths 145 0.0015093498 insert n(1440)0Width:InterpolationWidths 146 0.0029674319 insert n(1440)0Width:InterpolationWidths 147 0.0052855997 insert n(1440)0Width:InterpolationWidths 148 0.0086337726 insert n(1440)0Width:InterpolationWidths 149 0.013156705 insert n(1440)0Width:InterpolationWidths 150 0.018989819 insert n(1440)0Width:InterpolationWidths 151 0.026266402 insert n(1440)0Width:InterpolationWidths 152 0.035120394 insert n(1440)0Width:InterpolationWidths 153 0.045687433 insert n(1440)0Width:InterpolationWidths 154 0.05810523 insert n(1440)0Width:InterpolationWidths 155 0.072513706 insert n(1440)0Width:InterpolationWidths 156 0.089055022 insert n(1440)0Width:InterpolationWidths 157 0.10787359 insert n(1440)0Width:InterpolationWidths 158 0.12911609 insert n(1440)0Width:InterpolationWidths 159 0.15293142 insert n(1440)0Width:InterpolationWidths 160 0.17947076 insert n(1440)0Width:InterpolationWidths 161 0.20888756 insert n(1440)0Width:InterpolationWidths 162 0.24133755 insert n(1440)0Width:InterpolationWidths 163 0.27697875 insert n(1440)0Width:InterpolationWidths 164 0.31597152 insert n(1440)0Width:InterpolationWidths 165 0.35847857 insert n(1440)0Width:InterpolationWidths 166 0.40466498 insert n(1440)0Width:InterpolationWidths 167 0.45469825 insert n(1440)0Width:InterpolationWidths 168 0.50874829 insert n(1440)0Width:InterpolationWidths 169 0.56698795 insert n(1440)0Width:InterpolationWidths 170 0.62959128 insert n(1440)0Width:InterpolationWidths 171 0.69673609 insert n(1440)0Width:InterpolationWidths 172 0.76860234 insert n(1440)0Width:InterpolationWidths 173 0.84537258 insert n(1440)0Width:InterpolationWidths 174 0.92723199 insert n(1440)0Width:InterpolationWidths 175 1.0143684 insert n(1440)0Width:InterpolationWidths 176 1.1069723 insert n(1440)0Width:InterpolationWidths 177 1.2052369 insert n(1440)0Width:InterpolationWidths 178 1.3093582 insert n(1440)0Width:InterpolationWidths 179 1.4195349 insert n(1440)0Width:InterpolationWidths 180 1.5359686 insert n(1440)0Width:InterpolationWidths 181 1.6588635 insert n(1440)0Width:InterpolationWidths 182 1.7884267 insert n(1440)0Width:InterpolationWidths 183 1.924861 insert n(1440)0Width:InterpolationWidths 184 2.0683688 insert n(1440)0Width:InterpolationWidths 185 2.2191576 insert n(1440)0Width:InterpolationWidths 186 2.3774379 insert n(1440)0Width:InterpolationWidths 187 2.543423 insert n(1440)0Width:InterpolationWidths 188 2.717329 insert n(1440)0Width:NumberofEntries 0 63 insert n(1440)0Width:NumberofEntries 1 126 insert n(1440)0Width:NumberofEntries 2 189 insert n(1440)0Width:NumberofEntries 3 189 insert n(1440)0Width:NumberofEntries 4 189 insert n(1440)0Width:NumberofEntries 5 189 insert n(1440)0Width:NumberofEntries 6 189 insert n(1440)0Width:NumberofEntries 7 189 insert n(1440)0Width:BaryonDecayers 0 /Herwig/Decays/SU3RoperDecuplet insert n(1440)0Width:ModeLocation 0 2 insert n(1440)0Width:BaryonDecayers 1 /Herwig/Decays/SU3RoperDecuplet insert n(1440)0Width:ModeLocation 1 10 insert n(1440)0Width:BaryonDecayers 2 /Herwig/Decays/SU3RoperDecuplet insert n(1440)0Width:ModeLocation 2 7 insert n(1440)0Width:BaryonDecayers 3 /Herwig/Decays/SU3RoperGamma insert n(1440)0Width:ModeLocation 3 1 insert n(1440)0Width:BaryonDecayers 4 NULL insert n(1440)0Width:ModeLocation 4 -1 insert n(1440)0Width:BaryonDecayers 5 NULL insert n(1440)0Width:ModeLocation 5 -1 insert n(1440)0Width:BaryonDecayers 6 /Herwig/Decays/SU3StrongRoper insert n(1440)0Width:ModeLocation 6 7 insert n(1440)0Width:BaryonDecayers 7 /Herwig/Decays/SU3StrongRoper insert n(1440)0Width:ModeLocation 7 6 newdef /Herwig/Particles/nbar(1440):Width_generator n(1440)0Width newdef /Herwig/Particles/n(1440)0:Width_generator n(1440)0Width # create Herwig::BaryonWidthGenerator p(1440)+Width newdef p(1440)+Width:Particle /Herwig/Particles/p(1440)+ newdef p(1440)+Width:Prefactor 0.999307 newdef p(1440)+Width:BRNormalize 1 newdef p(1440)+Width:BRMinimum 0.01 newdef p(1440)+Width:Points 50 newdef p(1440)+Width:InterpolationOrder 1 insert p(1440)+Width:MEtype 0 2 insert p(1440)+Width:MEtype 1 2 insert p(1440)+Width:MEtype 2 2 insert p(1440)+Width:MEtype 3 1 insert p(1440)+Width:MEtype 4 1 insert p(1440)+Width:MEtype 5 0 insert p(1440)+Width:MEtype 6 0 insert p(1440)+Width:MEtype 7 1 insert p(1440)+Width:MEcode 0 0 insert p(1440)+Width:MEcode 1 0 insert p(1440)+Width:MEcode 2 0 insert p(1440)+Width:MEcode 3 101 insert p(1440)+Width:MEcode 4 102 insert p(1440)+Width:MEcode 5 0 insert p(1440)+Width:MEcode 6 0 insert p(1440)+Width:MEcode 7 101 insert p(1440)+Width:MEcoupling 0 1.33982 insert p(1440)+Width:MEcoupling 1 1.25606 insert p(1440)+Width:MEcoupling 2 1.33164 insert p(1440)+Width:MEcoupling 3 0.940967 insert p(1440)+Width:MEcoupling 4 1.09055 insert p(1440)+Width:MEcoupling 5 0.058309 insert p(1440)+Width:MEcoupling 6 0.029155 insert p(1440)+Width:MEcoupling 7 0.933937 insert p(1440)+Width:ModeOn 0 1 insert p(1440)+Width:ModeOn 1 1 insert p(1440)+Width:ModeOn 2 1 insert p(1440)+Width:ModeOn 3 1 insert p(1440)+Width:ModeOn 4 0 insert p(1440)+Width:ModeOn 5 1 insert p(1440)+Width:ModeOn 6 1 insert p(1440)+Width:ModeOn 7 1 insert p(1440)+Width:MinimumMasses 0 1.22157 insert p(1440)+Width:MinimumMasses 1 1.21698 insert p(1440)+Width:MinimumMasses 2 1.22157 insert p(1440)+Width:MinimumMasses 3 1.07914 insert p(1440)+Width:MinimumMasses 4 0.938272 insert p(1440)+Width:MinimumMasses 5 1.21741 insert p(1440)+Width:MinimumMasses 6 1.20823 insert p(1440)+Width:MinimumMasses 7 1.07325 insert p(1440)+Width:MEmass1 0 1.232 insert p(1440)+Width:MEmass1 1 1.232 insert p(1440)+Width:MEmass1 2 1.232 insert p(1440)+Width:MEmass1 3 0.939565 insert p(1440)+Width:MEmass1 4 0.938272 insert p(1440)+Width:MEmass1 5 0 insert p(1440)+Width:MEmass1 6 0 insert p(1440)+Width:MEmass1 7 0.938272 insert p(1440)+Width:MEmass2 0 0.13957 insert p(1440)+Width:MEmass2 1 0.134978 insert p(1440)+Width:MEmass2 2 0.13957 insert p(1440)+Width:MEmass2 3 0.13957 insert p(1440)+Width:MEmass2 4 0 insert p(1440)+Width:MEmass2 5 0 insert p(1440)+Width:MEmass2 6 0 insert p(1440)+Width:MEmass2 7 0.134978 insert p(1440)+Width:DecayModes 0 p(1440)+->Delta++,pi-; insert p(1440)+Width:DecayModes 1 p(1440)+->Delta+,pi0; insert p(1440)+Width:DecayModes 2 p(1440)+->Delta0,pi+; insert p(1440)+Width:DecayModes 3 p(1440)+->n0,pi+; insert p(1440)+Width:DecayModes 4 p(1440)+->p+,gamma; insert p(1440)+Width:DecayModes 5 p(1440)+->p+,pi+,pi-; insert p(1440)+Width:DecayModes 6 p(1440)+->p+,pi0,pi0; insert p(1440)+Width:DecayModes 7 p(1440)+->p+,pi0; insert p(1440)+Width:InterpolationMasses 0 1.1881649 insert p(1440)+Width:InterpolationMasses 1 1.2048675 insert p(1440)+Width:InterpolationMasses 2 1.2215702 insert p(1440)+Width:InterpolationMasses 3 1.2232303 insert p(1440)+Width:InterpolationMasses 4 1.2248926 insert p(1440)+Width:InterpolationMasses 5 1.2265572 insert p(1440)+Width:InterpolationMasses 6 1.228224 insert p(1440)+Width:InterpolationMasses 7 1.2298932 insert p(1440)+Width:InterpolationMasses 8 1.2315645 insert p(1440)+Width:InterpolationMasses 9 1.2332382 insert p(1440)+Width:InterpolationMasses 10 1.2349141 insert p(1440)+Width:InterpolationMasses 11 1.2365923 insert p(1440)+Width:InterpolationMasses 12 1.2382728 insert p(1440)+Width:InterpolationMasses 13 1.2549755 insert p(1440)+Width:InterpolationMasses 14 1.2716781 insert p(1440)+Width:InterpolationMasses 15 1.2883808 insert p(1440)+Width:InterpolationMasses 16 1.3050834 insert p(1440)+Width:InterpolationMasses 17 1.3217861 insert p(1440)+Width:InterpolationMasses 18 1.3384887 insert p(1440)+Width:InterpolationMasses 19 1.3551914 insert p(1440)+Width:InterpolationMasses 20 1.371894 insert p(1440)+Width:InterpolationMasses 21 1.3885967 insert p(1440)+Width:InterpolationMasses 22 1.4052993 insert p(1440)+Width:InterpolationMasses 23 1.422002 insert p(1440)+Width:InterpolationMasses 24 1.4387046 insert p(1440)+Width:InterpolationMasses 25 1.4554073 insert p(1440)+Width:InterpolationMasses 26 1.4721099 insert p(1440)+Width:InterpolationMasses 27 1.4888126 insert p(1440)+Width:InterpolationMasses 28 1.5055152 insert p(1440)+Width:InterpolationMasses 29 1.5222179 insert p(1440)+Width:InterpolationMasses 30 1.5389205 insert p(1440)+Width:InterpolationMasses 31 1.5556232 insert p(1440)+Width:InterpolationMasses 32 1.5723258 insert p(1440)+Width:InterpolationMasses 33 1.5890285 insert p(1440)+Width:InterpolationMasses 34 1.6057311 insert p(1440)+Width:InterpolationMasses 35 1.6224338 insert p(1440)+Width:InterpolationMasses 36 1.6391364 insert p(1440)+Width:InterpolationMasses 37 1.6558391 insert p(1440)+Width:InterpolationMasses 38 1.6725417 insert p(1440)+Width:InterpolationMasses 39 1.6892444 insert p(1440)+Width:InterpolationMasses 40 1.705947 insert p(1440)+Width:InterpolationMasses 41 1.7226497 insert p(1440)+Width:InterpolationMasses 42 1.7393523 insert p(1440)+Width:InterpolationMasses 43 1.756055 insert p(1440)+Width:InterpolationMasses 44 1.7727576 insert p(1440)+Width:InterpolationMasses 45 1.7894603 insert p(1440)+Width:InterpolationMasses 46 1.8061629 insert p(1440)+Width:InterpolationMasses 47 1.8228656 insert p(1440)+Width:InterpolationMasses 48 1.8395682 insert p(1440)+Width:InterpolationMasses 49 1.8562709 insert p(1440)+Width:InterpolationMasses 50 1.8729735 insert p(1440)+Width:InterpolationMasses 51 1.8896762 insert p(1440)+Width:InterpolationMasses 52 1.9063788 insert p(1440)+Width:InterpolationMasses 53 1.9230815 insert p(1440)+Width:InterpolationMasses 54 1.9397841 insert p(1440)+Width:InterpolationMasses 55 1.9564868 insert p(1440)+Width:InterpolationMasses 56 1.9731894 insert p(1440)+Width:InterpolationMasses 57 1.9898921 insert p(1440)+Width:InterpolationMasses 58 2.0065947 insert p(1440)+Width:InterpolationMasses 59 2.0232974 insert p(1440)+Width:InterpolationMasses 60 2.04 insert p(1440)+Width:InterpolationMasses 61 2.0567026 insert p(1440)+Width:InterpolationMasses 62 2.0734053 insert p(1440)+Width:InterpolationMasses 63 1.1833848 insert p(1440)+Width:InterpolationMasses 64 1.2001812 insert p(1440)+Width:InterpolationMasses 65 1.2169776 insert p(1440)+Width:InterpolationMasses 66 1.2186469 insert p(1440)+Width:InterpolationMasses 67 1.2203185 insert p(1440)+Width:InterpolationMasses 68 1.2219924 insert p(1440)+Width:InterpolationMasses 69 1.2236685 insert p(1440)+Width:InterpolationMasses 70 1.225347 insert p(1440)+Width:InterpolationMasses 71 1.2270278 insert p(1440)+Width:InterpolationMasses 72 1.2287109 insert p(1440)+Width:InterpolationMasses 73 1.2303963 insert p(1440)+Width:InterpolationMasses 74 1.232084 insert p(1440)+Width:InterpolationMasses 75 1.233774 insert p(1440)+Width:InterpolationMasses 76 1.2505704 insert p(1440)+Width:InterpolationMasses 77 1.2673667 insert p(1440)+Width:InterpolationMasses 78 1.2841631 insert p(1440)+Width:InterpolationMasses 79 1.3009595 insert p(1440)+Width:InterpolationMasses 80 1.3177559 insert p(1440)+Width:InterpolationMasses 81 1.3345522 insert p(1440)+Width:InterpolationMasses 82 1.3513486 insert p(1440)+Width:InterpolationMasses 83 1.368145 insert p(1440)+Width:InterpolationMasses 84 1.3849414 insert p(1440)+Width:InterpolationMasses 85 1.4017377 insert p(1440)+Width:InterpolationMasses 86 1.4185341 insert p(1440)+Width:InterpolationMasses 87 1.4353305 insert p(1440)+Width:InterpolationMasses 88 1.4521269 insert p(1440)+Width:InterpolationMasses 89 1.4689232 insert p(1440)+Width:InterpolationMasses 90 1.4857196 insert p(1440)+Width:InterpolationMasses 91 1.502516 insert p(1440)+Width:InterpolationMasses 92 1.5193124 insert p(1440)+Width:InterpolationMasses 93 1.5361087 insert p(1440)+Width:InterpolationMasses 94 1.5529051 insert p(1440)+Width:InterpolationMasses 95 1.5697015 insert p(1440)+Width:InterpolationMasses 96 1.5864979 insert p(1440)+Width:InterpolationMasses 97 1.6032942 insert p(1440)+Width:InterpolationMasses 98 1.6200906 insert p(1440)+Width:InterpolationMasses 99 1.636887 insert p(1440)+Width:InterpolationMasses 100 1.6536834 insert p(1440)+Width:InterpolationMasses 101 1.6704797 insert p(1440)+Width:InterpolationMasses 102 1.6872761 insert p(1440)+Width:InterpolationMasses 103 1.7040725 insert p(1440)+Width:InterpolationMasses 104 1.7208689 insert p(1440)+Width:InterpolationMasses 105 1.7376652 insert p(1440)+Width:InterpolationMasses 106 1.7544616 insert p(1440)+Width:InterpolationMasses 107 1.771258 insert p(1440)+Width:InterpolationMasses 108 1.7880544 insert p(1440)+Width:InterpolationMasses 109 1.8048507 insert p(1440)+Width:InterpolationMasses 110 1.8216471 insert p(1440)+Width:InterpolationMasses 111 1.8384435 insert p(1440)+Width:InterpolationMasses 112 1.8552399 insert p(1440)+Width:InterpolationMasses 113 1.8720362 insert p(1440)+Width:InterpolationMasses 114 1.8888326 insert p(1440)+Width:InterpolationMasses 115 1.905629 insert p(1440)+Width:InterpolationMasses 116 1.9224254 insert p(1440)+Width:InterpolationMasses 117 1.9392217 insert p(1440)+Width:InterpolationMasses 118 1.9560181 insert p(1440)+Width:InterpolationMasses 119 1.9728145 insert p(1440)+Width:InterpolationMasses 120 1.9896109 insert p(1440)+Width:InterpolationMasses 121 2.0064072 insert p(1440)+Width:InterpolationMasses 122 2.0232036 insert p(1440)+Width:InterpolationMasses 123 2.04 insert p(1440)+Width:InterpolationMasses 124 2.0567964 insert p(1440)+Width:InterpolationMasses 125 2.0735928 insert p(1440)+Width:InterpolationMasses 126 1.1881649 insert p(1440)+Width:InterpolationMasses 127 1.2048675 insert p(1440)+Width:InterpolationMasses 128 1.2215702 insert p(1440)+Width:InterpolationMasses 129 1.2232303 insert p(1440)+Width:InterpolationMasses 130 1.2248926 insert p(1440)+Width:InterpolationMasses 131 1.2265572 insert p(1440)+Width:InterpolationMasses 132 1.228224 insert p(1440)+Width:InterpolationMasses 133 1.2298932 insert p(1440)+Width:InterpolationMasses 134 1.2315645 insert p(1440)+Width:InterpolationMasses 135 1.2332382 insert p(1440)+Width:InterpolationMasses 136 1.2349141 insert p(1440)+Width:InterpolationMasses 137 1.2365923 insert p(1440)+Width:InterpolationMasses 138 1.2382728 insert p(1440)+Width:InterpolationMasses 139 1.2549755 insert p(1440)+Width:InterpolationMasses 140 1.2716781 insert p(1440)+Width:InterpolationMasses 141 1.2883808 insert p(1440)+Width:InterpolationMasses 142 1.3050834 insert p(1440)+Width:InterpolationMasses 143 1.3217861 insert p(1440)+Width:InterpolationMasses 144 1.3384887 insert p(1440)+Width:InterpolationMasses 145 1.3551914 insert p(1440)+Width:InterpolationMasses 146 1.371894 insert p(1440)+Width:InterpolationMasses 147 1.3885967 insert p(1440)+Width:InterpolationMasses 148 1.4052993 insert p(1440)+Width:InterpolationMasses 149 1.422002 insert p(1440)+Width:InterpolationMasses 150 1.4387046 insert p(1440)+Width:InterpolationMasses 151 1.4554073 insert p(1440)+Width:InterpolationMasses 152 1.4721099 insert p(1440)+Width:InterpolationMasses 153 1.4888126 insert p(1440)+Width:InterpolationMasses 154 1.5055152 insert p(1440)+Width:InterpolationMasses 155 1.5222179 insert p(1440)+Width:InterpolationMasses 156 1.5389205 insert p(1440)+Width:InterpolationMasses 157 1.5556232 insert p(1440)+Width:InterpolationMasses 158 1.5723258 insert p(1440)+Width:InterpolationMasses 159 1.5890285 insert p(1440)+Width:InterpolationMasses 160 1.6057311 insert p(1440)+Width:InterpolationMasses 161 1.6224338 insert p(1440)+Width:InterpolationMasses 162 1.6391364 insert p(1440)+Width:InterpolationMasses 163 1.6558391 insert p(1440)+Width:InterpolationMasses 164 1.6725417 insert p(1440)+Width:InterpolationMasses 165 1.6892444 insert p(1440)+Width:InterpolationMasses 166 1.705947 insert p(1440)+Width:InterpolationMasses 167 1.7226497 insert p(1440)+Width:InterpolationMasses 168 1.7393523 insert p(1440)+Width:InterpolationMasses 169 1.756055 insert p(1440)+Width:InterpolationMasses 170 1.7727576 insert p(1440)+Width:InterpolationMasses 171 1.7894603 insert p(1440)+Width:InterpolationMasses 172 1.8061629 insert p(1440)+Width:InterpolationMasses 173 1.8228656 insert p(1440)+Width:InterpolationMasses 174 1.8395682 insert p(1440)+Width:InterpolationMasses 175 1.8562709 insert p(1440)+Width:InterpolationMasses 176 1.8729735 insert p(1440)+Width:InterpolationMasses 177 1.8896762 insert p(1440)+Width:InterpolationMasses 178 1.9063788 insert p(1440)+Width:InterpolationMasses 179 1.9230815 insert p(1440)+Width:InterpolationMasses 180 1.9397841 insert p(1440)+Width:InterpolationMasses 181 1.9564868 insert p(1440)+Width:InterpolationMasses 182 1.9731894 insert p(1440)+Width:InterpolationMasses 183 1.9898921 insert p(1440)+Width:InterpolationMasses 184 2.0065947 insert p(1440)+Width:InterpolationMasses 185 2.0232974 insert p(1440)+Width:InterpolationMasses 186 2.04 insert p(1440)+Width:InterpolationMasses 187 2.0567026 insert p(1440)+Width:InterpolationMasses 188 2.0734053 insert p(1440)+Width:InterpolationWidths 0 0 insert p(1440)+Width:InterpolationWidths 1 0 insert p(1440)+Width:InterpolationWidths 2 0 insert p(1440)+Width:InterpolationWidths 3 1.9599921e-10 insert p(1440)+Width:InterpolationWidths 4 1.3126049e-09 insert p(1440)+Width:InterpolationWidths 5 4.23578e-09 insert p(1440)+Width:InterpolationWidths 6 1.0083773e-08 insert p(1440)+Width:InterpolationWidths 7 2.0252964e-08 insert p(1440)+Width:InterpolationWidths 8 3.645073e-08 insert p(1440)+Width:InterpolationWidths 9 6.072757e-08 insert p(1440)+Width:InterpolationWidths 10 9.5510036e-08 insert p(1440)+Width:InterpolationWidths 11 1.4363658e-07 insert p(1440)+Width:InterpolationWidths 12 2.0839509e-07 insert p(1440)+Width:InterpolationWidths 13 2.8288612e-06 insert p(1440)+Width:InterpolationWidths 14 1.5354433e-05 insert p(1440)+Width:InterpolationWidths 15 5.6322354e-05 insert p(1440)+Width:InterpolationWidths 16 0.00016684917 insert p(1440)+Width:InterpolationWidths 17 0.000433537 insert p(1440)+Width:InterpolationWidths 18 0.0010275605 insert p(1440)+Width:InterpolationWidths 19 0.0022376332 insert p(1440)+Width:InterpolationWidths 20 0.0044247102 insert p(1440)+Width:InterpolationWidths 21 0.0079154868 insert p(1440)+Width:InterpolationWidths 22 0.012967438 insert p(1440)+Width:InterpolationWidths 23 0.019796927 insert p(1440)+Width:InterpolationWidths 24 0.028604687 insert p(1440)+Width:InterpolationWidths 25 0.039587563 insert p(1440)+Width:InterpolationWidths 26 0.052943084 insert p(1440)+Width:InterpolationWidths 27 0.068871177 insert p(1440)+Width:InterpolationWidths 28 0.087574795 insert p(1440)+Width:InterpolationWidths 29 0.10926014 insert p(1440)+Width:InterpolationWidths 30 0.13413673 insert p(1440)+Width:InterpolationWidths 31 0.16241739 insert p(1440)+Width:InterpolationWidths 32 0.19431827 insert p(1440)+Width:InterpolationWidths 33 0.23005884 insert p(1440)+Width:InterpolationWidths 34 0.26986189 insert p(1440)+Width:InterpolationWidths 35 0.31395354 insert p(1440)+Width:InterpolationWidths 36 0.36256329 insert p(1440)+Width:InterpolationWidths 37 0.41592399 insert p(1440)+Width:InterpolationWidths 38 0.47427192 insert p(1440)+Width:InterpolationWidths 39 0.5378468 insert p(1440)+Width:InterpolationWidths 40 0.60689186 insert p(1440)+Width:InterpolationWidths 41 0.68165381 insert p(1440)+Width:InterpolationWidths 42 0.76238358 insert p(1440)+Width:InterpolationWidths 43 0.84933398 insert p(1440)+Width:InterpolationWidths 44 0.9427631 insert p(1440)+Width:InterpolationWidths 45 1.0429322 insert p(1440)+Width:InterpolationWidths 46 1.1501063 insert p(1440)+Width:InterpolationWidths 47 1.2645542 insert p(1440)+Width:InterpolationWidths 48 1.3865486 insert p(1440)+Width:InterpolationWidths 49 1.5163659 insert p(1440)+Width:InterpolationWidths 50 1.6542866 insert p(1440)+Width:InterpolationWidths 51 1.8005951 insert p(1440)+Width:InterpolationWidths 52 1.9555798 insert p(1440)+Width:InterpolationWidths 53 2.1195332 insert p(1440)+Width:InterpolationWidths 54 2.2927518 insert p(1440)+Width:InterpolationWidths 55 2.4755364 insert p(1440)+Width:InterpolationWidths 56 2.6681918 insert p(1440)+Width:InterpolationWidths 57 2.87102 insert p(1440)+Width:InterpolationWidths 58 3.0843172 insert p(1440)+Width:InterpolationWidths 59 3.308388 insert p(1440)+Width:InterpolationWidths 60 3.5435416 insert p(1440)+Width:InterpolationWidths 61 3.7900918 insert p(1440)+Width:InterpolationWidths 62 4.0483562 insert p(1440)+Width:InterpolationWidths 63 0 insert p(1440)+Width:InterpolationWidths 64 0 insert p(1440)+Width:InterpolationWidths 65 0 insert p(1440)+Width:InterpolationWidths 66 2.502759e-10 insert p(1440)+Width:InterpolationWidths 67 1.5788691e-09 insert p(1440)+Width:InterpolationWidths 68 4.8370101e-09 insert p(1440)+Width:InterpolationWidths 69 1.1004512e-08 insert p(1440)+Width:InterpolationWidths 70 2.1240646e-08 insert p(1440)+Width:InterpolationWidths 71 3.6912072e-08 insert p(1440)+Width:InterpolationWidths 72 5.9616958e-08 insert p(1440)+Width:InterpolationWidths 73 9.1208735e-08 insert p(1440)+Width:InterpolationWidths 74 1.3382068e-07 insert p(1440)+Width:InterpolationWidths 75 1.8989186e-07 insert p(1440)+Width:InterpolationWidths 76 2.2481669e-06 insert p(1440)+Width:InterpolationWidths 77 1.1439724e-05 insert p(1440)+Width:InterpolationWidths 78 4.0457783e-05 insert p(1440)+Width:InterpolationWidths 79 0.00011712929 insert p(1440)+Width:InterpolationWidths 80 0.00029965442 insert p(1440)+Width:InterpolationWidths 81 0.00070229291 insert p(1440)+Width:InterpolationWidths 82 0.001515922 insert p(1440)+Width:InterpolationWidths 83 0.0029767429 insert p(1440)+Width:InterpolationWidths 84 0.0052981377 insert p(1440)+Width:InterpolationWidths 85 0.0086501394 insert p(1440)+Width:InterpolationWidths 86 0.013177615 insert p(1440)+Width:InterpolationWidths 87 0.019016084 insert p(1440)+Width:InterpolationWidths 88 0.02629892 insert p(1440)+Width:InterpolationWidths 89 0.035160147 insert p(1440)+Width:InterpolationWidths 90 0.045735483 insert p(1440)+Width:InterpolationWidths 91 0.058162723 insert p(1440)+Width:InterpolationWidths 92 0.072581871 insert p(1440)+Width:InterpolationWidths 93 0.089135176 insert p(1440)+Width:InterpolationWidths 94 0.10796714 insert p(1440)+Width:InterpolationWidths 95 0.12922453 insert p(1440)+Width:InterpolationWidths 96 0.15305635 insert p(1440)+Width:InterpolationWidths 97 0.17961387 insert p(1440)+Width:InterpolationWidths 98 0.20905064 insert p(1440)+Width:InterpolationWidths 99 0.24152248 insert p(1440)+Width:InterpolationWidths 100 0.27718754 insert p(1440)+Width:InterpolationWidths 101 0.31620628 insert p(1440)+Width:InterpolationWidths 102 0.35874151 insert p(1440)+Width:InterpolationWidths 103 0.40495845 insert p(1440)+Width:InterpolationWidths 104 0.45502468 insert p(1440)+Width:InterpolationWidths 105 0.50911027 insert p(1440)+Width:InterpolationWidths 106 0.56738817 insert p(1440)+Width:InterpolationWidths 107 0.63003257 insert p(1440)+Width:InterpolationWidths 108 0.6972214 insert p(1440)+Width:InterpolationWidths 109 0.76913474 insert p(1440)+Width:InterpolationWidths 110 0.8459553 insert p(1440)+Width:InterpolationWidths 111 0.92786839 insert p(1440)+Width:InterpolationWidths 112 1.015062 insert p(1440)+Width:InterpolationWidths 113 1.1077267 insert p(1440)+Width:InterpolationWidths 114 1.206056 insert p(1440)+Width:InterpolationWidths 115 1.3102458 insert p(1440)+Width:InterpolationWidths 116 1.4204952 insert p(1440)+Width:InterpolationWidths 117 1.5370057 insert p(1440)+Width:InterpolationWidths 118 1.6599819 insert p(1440)+Width:InterpolationWidths 119 1.789631 insert p(1440)+Width:InterpolationWidths 120 1.9261559 insert p(1440)+Width:InterpolationWidths 121 2.0697592 insert p(1440)+Width:InterpolationWidths 122 2.2206485 insert p(1440)+Width:InterpolationWidths 123 2.3790344 insert p(1440)+Width:InterpolationWidths 124 2.5451305 insert p(1440)+Width:InterpolationWidths 125 2.719153 insert p(1440)+Width:InterpolationWidths 126 0 insert p(1440)+Width:InterpolationWidths 127 0 insert p(1440)+Width:InterpolationWidths 128 0 insert p(1440)+Width:InterpolationWidths 129 1.1515788e-10 insert p(1440)+Width:InterpolationWidths 130 7.3322588e-10 insert p(1440)+Width:InterpolationWidths 131 2.2643756e-09 insert p(1440)+Width:InterpolationWidths 132 5.1876925e-09 insert p(1440)+Width:InterpolationWidths 133 1.0074575e-08 insert p(1440)+Width:InterpolationWidths 134 1.7602109e-08 insert p(1440)+Width:InterpolationWidths 135 2.8564887e-08 insert p(1440)+Width:InterpolationWidths 136 4.3886784e-08 insert p(1440)+Width:InterpolationWidths 137 6.463322e-08 insert p(1440)+Width:InterpolationWidths 138 9.2024128e-08 insert p(1440)+Width:InterpolationWidths 139 1.1117616e-06 insert p(1440)+Width:InterpolationWidths 140 5.7054121e-06 insert p(1440)+Width:InterpolationWidths 141 2.0255768e-05 insert p(1440)+Width:InterpolationWidths 142 5.8734738e-05 insert p(1440)+Width:InterpolationWidths 143 0.00015031396 insert p(1440)+Width:InterpolationWidths 144 0.00035227289 insert p(1440)+Width:InterpolationWidths 145 0.00076079983 insert p(1440)+Width:InterpolationWidths 146 0.0014960359 insert p(1440)+Width:InterpolationWidths 147 0.0026669383 insert p(1440)+Width:InterpolationWidths 148 0.0043595588 insert p(1440)+Width:InterpolationWidths 149 0.0066462424 insert p(1440)+Width:InterpolationWidths 150 0.0095940909 insert p(1440)+Width:InterpolationWidths 151 0.013268888 insert p(1440)+Width:InterpolationWidths 152 0.017736637 insert p(1440)+Width:InterpolationWidths 153 0.023064136 insert p(1440)+Width:InterpolationWidths 154 0.029319197 insert p(1440)+Width:InterpolationWidths 155 0.036570714 insert p(1440)+Width:InterpolationWidths 156 0.044888689 insert p(1440)+Width:InterpolationWidths 157 0.054344235 insert p(1440)+Width:InterpolationWidths 158 0.065009575 insert p(1440)+Width:InterpolationWidths 159 0.076958043 insert p(1440)+Width:InterpolationWidths 160 0.090264082 insert p(1440)+Width:InterpolationWidths 161 0.10500325 insert p(1440)+Width:InterpolationWidths 162 0.12125224 insert p(1440)+Width:InterpolationWidths 163 0.13908887 insert p(1440)+Width:InterpolationWidths 164 0.15859208 insert p(1440)+Width:InterpolationWidths 165 0.179842 insert p(1440)+Width:InterpolationWidths 166 0.20291991 insert p(1440)+Width:InterpolationWidths 167 0.22790825 insert p(1440)+Width:InterpolationWidths 168 0.25489069 insert p(1440)+Width:InterpolationWidths 169 0.28395231 insert p(1440)+Width:InterpolationWidths 170 0.31517878 insert p(1440)+Width:InterpolationWidths 171 0.34865762 insert p(1440)+Width:InterpolationWidths 172 0.38447739 insert p(1440)+Width:InterpolationWidths 173 0.42272795 insert p(1440)+Width:InterpolationWidths 174 0.4635004 insert p(1440)+Width:InterpolationWidths 175 0.50688718 insert p(1440)+Width:InterpolationWidths 176 0.55298202 insert p(1440)+Width:InterpolationWidths 177 0.60187998 insert p(1440)+Width:InterpolationWidths 178 0.65367745 insert p(1440)+Width:InterpolationWidths 179 0.7084722 insert p(1440)+Width:InterpolationWidths 180 0.76636336 insert p(1440)+Width:InterpolationWidths 181 0.82745143 insert p(1440)+Width:InterpolationWidths 182 0.89183833 insert p(1440)+Width:InterpolationWidths 183 0.95962496 insert p(1440)+Width:InterpolationWidths 184 1.0309103 insert p(1440)+Width:InterpolationWidths 185 1.1057963 insert p(1440)+Width:InterpolationWidths 186 1.1843861 insert p(1440)+Width:InterpolationWidths 187 1.2667847 insert p(1440)+Width:InterpolationWidths 188 1.3530981 insert p(1440)+Width:NumberofEntries 0 63 insert p(1440)+Width:NumberofEntries 1 126 insert p(1440)+Width:NumberofEntries 2 189 insert p(1440)+Width:NumberofEntries 3 189 insert p(1440)+Width:NumberofEntries 4 189 insert p(1440)+Width:NumberofEntries 5 189 insert p(1440)+Width:NumberofEntries 6 189 insert p(1440)+Width:NumberofEntries 7 189 insert p(1440)+Width:BaryonDecayers 0 /Herwig/Decays/SU3RoperDecuplet insert p(1440)+Width:ModeLocation 0 0 insert p(1440)+Width:BaryonDecayers 1 /Herwig/Decays/SU3RoperDecuplet insert p(1440)+Width:ModeLocation 1 3 insert p(1440)+Width:BaryonDecayers 2 /Herwig/Decays/SU3RoperDecuplet insert p(1440)+Width:ModeLocation 2 6 insert p(1440)+Width:BaryonDecayers 3 /Herwig/Decays/SU3StrongRoper insert p(1440)+Width:ModeLocation 3 0 insert p(1440)+Width:BaryonDecayers 4 /Herwig/Decays/SU3RoperGamma insert p(1440)+Width:ModeLocation 4 0 insert p(1440)+Width:BaryonDecayers 5 NULL insert p(1440)+Width:ModeLocation 5 -1 insert p(1440)+Width:BaryonDecayers 6 NULL insert p(1440)+Width:ModeLocation 6 -1 insert p(1440)+Width:BaryonDecayers 7 /Herwig/Decays/SU3StrongRoper insert p(1440)+Width:ModeLocation 7 1 newdef /Herwig/Particles/p(1440)+:Width_generator p(1440)+Width newdef /Herwig/Particles/pbar(1440):Width_generator p(1440)+Width # create Herwig::GenericWidthGenerator chi_c22PWidth newdef chi_c22PWidth:Particle /Herwig/Particles/chi_c2(2P) newdef chi_c22PWidth:Prefactor 1 newdef chi_c22PWidth:BRNormalize 1 newdef chi_c22PWidth:BRMinimum 0.01 newdef chi_c22PWidth:Points 50 newdef chi_c22PWidth:InterpolationOrder 1 insert chi_c22PWidth:MEtype 0 1 insert chi_c22PWidth:MEtype 1 1 insert chi_c22PWidth:MEcode 0 7 insert chi_c22PWidth:MEcode 1 7 insert chi_c22PWidth:MEcoupling 0 87.3062 insert chi_c22PWidth:MEcoupling 1 87.1617 insert chi_c22PWidth:ModeOn 0 1 insert chi_c22PWidth:ModeOn 1 1 insert chi_c22PWidth:MinimumMasses 0 3.7386 insert chi_c22PWidth:MinimumMasses 1 3.729 insert chi_c22PWidth:MEmass1 0 1.8693 insert chi_c22PWidth:MEmass1 1 1.8645 insert chi_c22PWidth:MEmass2 0 1.8693 insert chi_c22PWidth:MEmass2 1 1.8645 insert chi_c22PWidth:DecayModes 0 chi_c2(2P)->D+,D-; insert chi_c22PWidth:DecayModes 1 chi_c2(2P)->D0,Dbar0; insert chi_c22PWidth:NumberofEntries 0 0 insert chi_c22PWidth:NumberofEntries 1 0 newdef /Herwig/Particles/chi_c2(2P):Width_generator chi_c22PWidth # create Herwig::GenericWidthGenerator kappa0width newdef kappa0width:Particle /Herwig/Particles/kappa0 newdef kappa0width:Prefactor 1 newdef kappa0width:BRNormalize 1 newdef kappa0width:BRMinimum 0.01 newdef kappa0width:Points 50 newdef kappa0width:InterpolationOrder 1 insert kappa0width:MEtype 0 1 insert kappa0width:MEtype 1 1 insert kappa0width:MEcode 0 6 insert kappa0width:MEcode 1 6 insert kappa0width:MEcoupling 0 6.42306 insert kappa0width:MEcoupling 1 4.55093 insert kappa0width:ModeOn 0 1 insert kappa0width:ModeOn 1 1 insert kappa0width:MinimumMasses 0 0.633247 insert kappa0width:MinimumMasses 1 0.632626 insert kappa0width:MEmass1 0 0.493677 insert kappa0width:MEmass1 1 0.497648 insert kappa0width:MEmass2 0 0.13957 insert kappa0width:MEmass2 1 0.134978 insert kappa0width:DecayModes 0 kappa0->K+,pi-; insert kappa0width:DecayModes 1 kappa0->K0,pi0; insert kappa0width:NumberofEntries 0 0 insert kappa0width:NumberofEntries 1 0 newdef /Herwig/Particles/kappa0:Width_generator kappa0width newdef /Herwig/Particles/kappabar0:Width_generator kappa0width # create Herwig::GenericWidthGenerator kappa+width newdef kappa+width:Particle /Herwig/Particles/kappa+ newdef kappa+width:Prefactor 1 newdef kappa+width:BRNormalize 1 newdef kappa+width:BRMinimum 0.01 newdef kappa+width:Points 50 newdef kappa+width:InterpolationOrder 1 insert kappa+width:MEtype 0 1 insert kappa+width:MEtype 1 1 insert kappa+width:MEcode 0 6 insert kappa+width:MEcode 1 6 insert kappa+width:MEcoupling 0 4.52693 insert kappa+width:MEcoupling 1 6.45765 insert kappa+width:ModeOn 0 1 insert kappa+width:ModeOn 1 1 insert kappa+width:MinimumMasses 0 0.628655 insert kappa+width:MinimumMasses 1 0.637218 insert kappa+width:MEmass1 0 0.493677 insert kappa+width:MEmass1 1 0.497648 insert kappa+width:MEmass2 0 0.134978 insert kappa+width:MEmass2 1 0.13957 insert kappa+width:DecayModes 0 kappa+->K+,pi0; insert kappa+width:DecayModes 1 kappa+->K0,pi+; insert kappa+width:NumberofEntries 0 0 insert kappa+width:NumberofEntries 1 0 newdef /Herwig/Particles/kappa-:Width_generator kappa+width newdef /Herwig/Particles/kappa+:Width_generator kappa+width # create Herwig::BaryonWidthGenerator n(1535)0Width newdef n(1535)0Width:Particle /Herwig/Particles/n(1535)0 newdef n(1535)0Width:Prefactor 1.02516 newdef n(1535)0Width:BRNormalize 1 newdef n(1535)0Width:BRMinimum 0.01 newdef n(1535)0Width:Points 50 newdef n(1535)0Width:InterpolationOrder 1 insert n(1535)0Width:MEtype 0 2 insert n(1535)0Width:MEtype 1 2 insert n(1535)0Width:MEtype 2 2 insert n(1535)0Width:MEtype 3 2 insert n(1535)0Width:MEtype 4 2 insert n(1535)0Width:MEtype 5 1 insert n(1535)0Width:MEtype 6 0 insert n(1535)0Width:MEtype 7 0 insert n(1535)0Width:MEtype 8 1 insert n(1535)0Width:MEtype 9 0 insert n(1535)0Width:MEtype 10 2 insert n(1535)0Width:MEtype 11 1 insert n(1535)0Width:MEtype 12 0 insert n(1535)0Width:MEcode 0 0 insert n(1535)0Width:MEcode 1 0 insert n(1535)0Width:MEcode 2 0 insert n(1535)0Width:MEcode 3 0 insert n(1535)0Width:MEcode 4 0 insert n(1535)0Width:MEcode 5 102 insert n(1535)0Width:MEcode 6 0 insert n(1535)0Width:MEcode 7 0 insert n(1535)0Width:MEcode 8 101 insert n(1535)0Width:MEcode 9 0 insert n(1535)0Width:MEcode 10 0 insert n(1535)0Width:MEcode 11 101 insert n(1535)0Width:MEcode 12 0 insert n(1535)0Width:MEcoupling 0 1.47111 insert n(1535)0Width:MEcoupling 1 1.48232 insert n(1535)0Width:MEcoupling 2 1.43481 insert n(1535)0Width:MEcoupling 3 56.9285 insert n(1535)0Width:MEcoupling 4 1.03599 insert n(1535)0Width:MEcoupling 5 0.899507 insert n(1535)0Width:MEcoupling 6 0.013333 insert n(1535)0Width:MEcoupling 7 0.006667 insert n(1535)0Width:MEcoupling 8 0.99378 insert n(1535)0Width:MEcoupling 9 0.006667 insert n(1535)0Width:MEcoupling 10 60.7322 insert n(1535)0Width:MEcoupling 11 0.992355 insert n(1535)0Width:MEcoupling 12 0.013333 insert n(1535)0Width:ModeOn 0 0 insert n(1535)0Width:ModeOn 1 0 insert n(1535)0Width:ModeOn 2 0 insert n(1535)0Width:ModeOn 3 1 insert n(1535)0Width:ModeOn 4 1 insert n(1535)0Width:ModeOn 5 0 insert n(1535)0Width:ModeOn 6 1 insert n(1535)0Width:ModeOn 7 0 insert n(1535)0Width:ModeOn 8 1 insert n(1535)0Width:ModeOn 9 0 insert n(1535)0Width:ModeOn 10 1 insert n(1535)0Width:ModeOn 11 1 insert n(1535)0Width:ModeOn 12 1 insert n(1535)0Width:MinimumMasses 0 1.22157 insert n(1535)0Width:MinimumMasses 1 1.22157 insert n(1535)0Width:MinimumMasses 2 1.21698 insert n(1535)0Width:MinimumMasses 3 1.27498 insert n(1535)0Width:MinimumMasses 4 1.48706 insert n(1535)0Width:MinimumMasses 5 0.939565 insert n(1535)0Width:MinimumMasses 6 1.21871 insert n(1535)0Width:MinimumMasses 7 1.20952 insert n(1535)0Width:MinimumMasses 8 1.07454 insert n(1535)0Width:MinimumMasses 9 1.31507 insert n(1535)0Width:MinimumMasses 10 1.27957 insert n(1535)0Width:MinimumMasses 11 1.07784 insert n(1535)0Width:MinimumMasses 12 1.31377 insert n(1535)0Width:MEmass1 0 1.232 insert n(1535)0Width:MEmass1 1 1.232 insert n(1535)0Width:MEmass1 2 1.232 insert n(1535)0Width:MEmass1 3 1.44 insert n(1535)0Width:MEmass1 4 0.939565 insert n(1535)0Width:MEmass1 5 0.939565 insert n(1535)0Width:MEmass1 6 0 insert n(1535)0Width:MEmass1 7 0 insert n(1535)0Width:MEmass1 8 0.939565 insert n(1535)0Width:MEmass1 9 0 insert n(1535)0Width:MEmass1 10 1.44 insert n(1535)0Width:MEmass1 11 0.938272 insert n(1535)0Width:MEmass1 12 0 insert n(1535)0Width:MEmass2 0 0.13957 insert n(1535)0Width:MEmass2 1 0.13957 insert n(1535)0Width:MEmass2 2 0.134978 insert n(1535)0Width:MEmass2 3 0.134978 insert n(1535)0Width:MEmass2 4 0.54751 insert n(1535)0Width:MEmass2 5 0 insert n(1535)0Width:MEmass2 6 0 insert n(1535)0Width:MEmass2 7 0 insert n(1535)0Width:MEmass2 8 0.134978 insert n(1535)0Width:MEmass2 9 0 insert n(1535)0Width:MEmass2 10 0.13957 insert n(1535)0Width:MEmass2 11 0.13957 insert n(1535)0Width:MEmass2 12 0 insert n(1535)0Width:DecayModes 0 n(1535)0->Delta+,pi-; insert n(1535)0Width:DecayModes 1 n(1535)0->Delta-,pi+; insert n(1535)0Width:DecayModes 2 n(1535)0->Delta0,pi0; insert n(1535)0Width:DecayModes 3 n(1535)0->n(1440)0,pi0; insert n(1535)0Width:DecayModes 4 n(1535)0->n0,eta; insert n(1535)0Width:DecayModes 5 n(1535)0->n0,gamma; insert n(1535)0Width:DecayModes 6 n(1535)0->n0,pi+,pi-; insert n(1535)0Width:DecayModes 7 n(1535)0->n0,pi0,pi0; insert n(1535)0Width:DecayModes 8 n(1535)0->n0,pi0; insert n(1535)0Width:DecayModes 9 n(1535)0->n0,rho0; insert n(1535)0Width:DecayModes 10 n(1535)0->p(1440)+,pi-; insert n(1535)0Width:DecayModes 11 n(1535)0->p+,pi-; insert n(1535)0Width:DecayModes 12 n(1535)0->p+,rho-; insert n(1535)0Width:InterpolationMasses 0 1.1842873 insert n(1535)0Width:InterpolationMasses 1 1.2029288 insert n(1535)0Width:InterpolationMasses 2 1.2215702 insert n(1535)0Width:InterpolationMasses 3 1.2234216 insert n(1535)0Width:InterpolationMasses 4 1.2252759 insert n(1535)0Width:InterpolationMasses 5 1.227133 insert n(1535)0Width:InterpolationMasses 6 1.2289929 insert n(1535)0Width:InterpolationMasses 7 1.2308556 insert n(1535)0Width:InterpolationMasses 8 1.2327211 insert n(1535)0Width:InterpolationMasses 9 1.2345895 insert n(1535)0Width:InterpolationMasses 10 1.2364607 insert n(1535)0Width:InterpolationMasses 11 1.2383347 insert n(1535)0Width:InterpolationMasses 12 1.2402116 insert n(1535)0Width:InterpolationMasses 13 1.258853 insert n(1535)0Width:InterpolationMasses 14 1.2774945 insert n(1535)0Width:InterpolationMasses 15 1.2961359 insert n(1535)0Width:InterpolationMasses 16 1.3147773 insert n(1535)0Width:InterpolationMasses 17 1.3334187 insert n(1535)0Width:InterpolationMasses 18 1.3520602 insert n(1535)0Width:InterpolationMasses 19 1.3707016 insert n(1535)0Width:InterpolationMasses 20 1.389343 insert n(1535)0Width:InterpolationMasses 21 1.4079844 insert n(1535)0Width:InterpolationMasses 22 1.4266259 insert n(1535)0Width:InterpolationMasses 23 1.4452673 insert n(1535)0Width:InterpolationMasses 24 1.4639087 insert n(1535)0Width:InterpolationMasses 25 1.4825501 insert n(1535)0Width:InterpolationMasses 26 1.5011916 insert n(1535)0Width:InterpolationMasses 27 1.519833 insert n(1535)0Width:InterpolationMasses 28 1.5384744 insert n(1535)0Width:InterpolationMasses 29 1.5571158 insert n(1535)0Width:InterpolationMasses 30 1.5757573 insert n(1535)0Width:InterpolationMasses 31 1.5943987 insert n(1535)0Width:InterpolationMasses 32 1.6130401 insert n(1535)0Width:InterpolationMasses 33 1.6316815 insert n(1535)0Width:InterpolationMasses 34 1.650323 insert n(1535)0Width:InterpolationMasses 35 1.6689644 insert n(1535)0Width:InterpolationMasses 36 1.6876058 insert n(1535)0Width:InterpolationMasses 37 1.7062472 insert n(1535)0Width:InterpolationMasses 38 1.7248887 insert n(1535)0Width:InterpolationMasses 39 1.7435301 insert n(1535)0Width:InterpolationMasses 40 1.7621715 insert n(1535)0Width:InterpolationMasses 41 1.7808129 insert n(1535)0Width:InterpolationMasses 42 1.7994544 insert n(1535)0Width:InterpolationMasses 43 1.8180958 insert n(1535)0Width:InterpolationMasses 44 1.8367372 insert n(1535)0Width:InterpolationMasses 45 1.8553786 insert n(1535)0Width:InterpolationMasses 46 1.8740201 insert n(1535)0Width:InterpolationMasses 47 1.8926615 insert n(1535)0Width:InterpolationMasses 48 1.9113029 insert n(1535)0Width:InterpolationMasses 49 1.9299443 insert n(1535)0Width:InterpolationMasses 50 1.9485858 insert n(1535)0Width:InterpolationMasses 51 1.9672272 insert n(1535)0Width:InterpolationMasses 52 1.9858686 insert n(1535)0Width:InterpolationMasses 53 2.00451 insert n(1535)0Width:InterpolationMasses 54 2.0231515 insert n(1535)0Width:InterpolationMasses 55 2.0417929 insert n(1535)0Width:InterpolationMasses 56 2.0604343 insert n(1535)0Width:InterpolationMasses 57 2.0790757 insert n(1535)0Width:InterpolationMasses 58 2.0977172 insert n(1535)0Width:InterpolationMasses 59 2.1163586 insert n(1535)0Width:InterpolationMasses 60 2.135 insert n(1535)0Width:InterpolationMasses 61 2.1536414 insert n(1535)0Width:InterpolationMasses 62 2.1722828 insert n(1535)0Width:InterpolationMasses 63 1.1842873 insert n(1535)0Width:InterpolationMasses 64 1.2029288 insert n(1535)0Width:InterpolationMasses 65 1.2215702 insert n(1535)0Width:InterpolationMasses 66 1.2234216 insert n(1535)0Width:InterpolationMasses 67 1.2252759 insert n(1535)0Width:InterpolationMasses 68 1.227133 insert n(1535)0Width:InterpolationMasses 69 1.2289929 insert n(1535)0Width:InterpolationMasses 70 1.2308556 insert n(1535)0Width:InterpolationMasses 71 1.2327211 insert n(1535)0Width:InterpolationMasses 72 1.2345895 insert n(1535)0Width:InterpolationMasses 73 1.2364607 insert n(1535)0Width:InterpolationMasses 74 1.2383347 insert n(1535)0Width:InterpolationMasses 75 1.2402116 insert n(1535)0Width:InterpolationMasses 76 1.258853 insert n(1535)0Width:InterpolationMasses 77 1.2774945 insert n(1535)0Width:InterpolationMasses 78 1.2961359 insert n(1535)0Width:InterpolationMasses 79 1.3147773 insert n(1535)0Width:InterpolationMasses 80 1.3334187 insert n(1535)0Width:InterpolationMasses 81 1.3520602 insert n(1535)0Width:InterpolationMasses 82 1.3707016 insert n(1535)0Width:InterpolationMasses 83 1.389343 insert n(1535)0Width:InterpolationMasses 84 1.4079844 insert n(1535)0Width:InterpolationMasses 85 1.4266259 insert n(1535)0Width:InterpolationMasses 86 1.4452673 insert n(1535)0Width:InterpolationMasses 87 1.4639087 insert n(1535)0Width:InterpolationMasses 88 1.4825501 insert n(1535)0Width:InterpolationMasses 89 1.5011916 insert n(1535)0Width:InterpolationMasses 90 1.519833 insert n(1535)0Width:InterpolationMasses 91 1.5384744 insert n(1535)0Width:InterpolationMasses 92 1.5571158 insert n(1535)0Width:InterpolationMasses 93 1.5757573 insert n(1535)0Width:InterpolationMasses 94 1.5943987 insert n(1535)0Width:InterpolationMasses 95 1.6130401 insert n(1535)0Width:InterpolationMasses 96 1.6316815 insert n(1535)0Width:InterpolationMasses 97 1.650323 insert n(1535)0Width:InterpolationMasses 98 1.6689644 insert n(1535)0Width:InterpolationMasses 99 1.6876058 insert n(1535)0Width:InterpolationMasses 100 1.7062472 insert n(1535)0Width:InterpolationMasses 101 1.7248887 insert n(1535)0Width:InterpolationMasses 102 1.7435301 insert n(1535)0Width:InterpolationMasses 103 1.7621715 insert n(1535)0Width:InterpolationMasses 104 1.7808129 insert n(1535)0Width:InterpolationMasses 105 1.7994544 insert n(1535)0Width:InterpolationMasses 106 1.8180958 insert n(1535)0Width:InterpolationMasses 107 1.8367372 insert n(1535)0Width:InterpolationMasses 108 1.8553786 insert n(1535)0Width:InterpolationMasses 109 1.8740201 insert n(1535)0Width:InterpolationMasses 110 1.8926615 insert n(1535)0Width:InterpolationMasses 111 1.9113029 insert n(1535)0Width:InterpolationMasses 112 1.9299443 insert n(1535)0Width:InterpolationMasses 113 1.9485858 insert n(1535)0Width:InterpolationMasses 114 1.9672272 insert n(1535)0Width:InterpolationMasses 115 1.9858686 insert n(1535)0Width:InterpolationMasses 116 2.00451 insert n(1535)0Width:InterpolationMasses 117 2.0231515 insert n(1535)0Width:InterpolationMasses 118 2.0417929 insert n(1535)0Width:InterpolationMasses 119 2.0604343 insert n(1535)0Width:InterpolationMasses 120 2.0790757 insert n(1535)0Width:InterpolationMasses 121 2.0977172 insert n(1535)0Width:InterpolationMasses 122 2.1163586 insert n(1535)0Width:InterpolationMasses 123 2.135 insert n(1535)0Width:InterpolationMasses 124 2.1536414 insert n(1535)0Width:InterpolationMasses 125 2.1722828 insert n(1535)0Width:InterpolationMasses 126 1.1795073 insert n(1535)0Width:InterpolationMasses 127 1.1982424 insert n(1535)0Width:InterpolationMasses 128 1.2169776 insert n(1535)0Width:InterpolationMasses 129 1.2188383 insert n(1535)0Width:InterpolationMasses 130 1.2207018 insert n(1535)0Width:InterpolationMasses 131 1.2225681 insert n(1535)0Width:InterpolationMasses 132 1.2244373 insert n(1535)0Width:InterpolationMasses 133 1.2263094 insert n(1535)0Width:InterpolationMasses 134 1.2281843 insert n(1535)0Width:InterpolationMasses 135 1.2300621 insert n(1535)0Width:InterpolationMasses 136 1.2319428 insert n(1535)0Width:InterpolationMasses 137 1.2338263 insert n(1535)0Width:InterpolationMasses 138 1.2357128 insert n(1535)0Width:InterpolationMasses 139 1.2544479 insert n(1535)0Width:InterpolationMasses 140 1.2731831 insert n(1535)0Width:InterpolationMasses 141 1.2919182 insert n(1535)0Width:InterpolationMasses 142 1.3106534 insert n(1535)0Width:InterpolationMasses 143 1.3293885 insert n(1535)0Width:InterpolationMasses 144 1.3481237 insert n(1535)0Width:InterpolationMasses 145 1.3668588 insert n(1535)0Width:InterpolationMasses 146 1.385594 insert n(1535)0Width:InterpolationMasses 147 1.4043291 insert n(1535)0Width:InterpolationMasses 148 1.4230643 insert n(1535)0Width:InterpolationMasses 149 1.4417994 insert n(1535)0Width:InterpolationMasses 150 1.4605346 insert n(1535)0Width:InterpolationMasses 151 1.4792697 insert n(1535)0Width:InterpolationMasses 152 1.4980049 insert n(1535)0Width:InterpolationMasses 153 1.51674 insert n(1535)0Width:InterpolationMasses 154 1.5354752 insert n(1535)0Width:InterpolationMasses 155 1.5542103 insert n(1535)0Width:InterpolationMasses 156 1.5729455 insert n(1535)0Width:InterpolationMasses 157 1.5916806 insert n(1535)0Width:InterpolationMasses 158 1.6104158 insert n(1535)0Width:InterpolationMasses 159 1.6291509 insert n(1535)0Width:InterpolationMasses 160 1.6478861 insert n(1535)0Width:InterpolationMasses 161 1.6666212 insert n(1535)0Width:InterpolationMasses 162 1.6853564 insert n(1535)0Width:InterpolationMasses 163 1.7040915 insert n(1535)0Width:InterpolationMasses 164 1.7228267 insert n(1535)0Width:InterpolationMasses 165 1.7415618 insert n(1535)0Width:InterpolationMasses 166 1.760297 insert n(1535)0Width:InterpolationMasses 167 1.7790321 insert n(1535)0Width:InterpolationMasses 168 1.7977673 insert n(1535)0Width:InterpolationMasses 169 1.8165024 insert n(1535)0Width:InterpolationMasses 170 1.8352376 insert n(1535)0Width:InterpolationMasses 171 1.8539727 insert n(1535)0Width:InterpolationMasses 172 1.8727079 insert n(1535)0Width:InterpolationMasses 173 1.891443 insert n(1535)0Width:InterpolationMasses 174 1.9101782 insert n(1535)0Width:InterpolationMasses 175 1.9289133 insert n(1535)0Width:InterpolationMasses 176 1.9476485 insert n(1535)0Width:InterpolationMasses 177 1.9663836 insert n(1535)0Width:InterpolationMasses 178 1.9851188 insert n(1535)0Width:InterpolationMasses 179 2.0038539 insert n(1535)0Width:InterpolationMasses 180 2.0225891 insert n(1535)0Width:InterpolationMasses 181 2.0413242 insert n(1535)0Width:InterpolationMasses 182 2.0600594 insert n(1535)0Width:InterpolationMasses 183 2.0787945 insert n(1535)0Width:InterpolationMasses 184 2.0975297 insert n(1535)0Width:InterpolationMasses 185 2.1162648 insert n(1535)0Width:InterpolationMasses 186 2.135 insert n(1535)0Width:InterpolationMasses 187 2.1537352 insert n(1535)0Width:InterpolationMasses 188 2.1724703 insert n(1535)0Width:InterpolationMasses 189 1.2398746 insert n(1535)0Width:InterpolationMasses 190 1.2574261 insert n(1535)0Width:InterpolationMasses 191 1.2749776 insert n(1535)0Width:InterpolationMasses 192 1.276722 insert n(1535)0Width:InterpolationMasses 193 1.2784687 insert n(1535)0Width:InterpolationMasses 194 1.2802179 insert n(1535)0Width:InterpolationMasses 195 1.2819694 insert n(1535)0Width:InterpolationMasses 196 1.2837233 insert n(1535)0Width:InterpolationMasses 197 1.2854797 insert n(1535)0Width:InterpolationMasses 198 1.2872384 insert n(1535)0Width:InterpolationMasses 199 1.2889996 insert n(1535)0Width:InterpolationMasses 200 1.2907631 insert n(1535)0Width:InterpolationMasses 201 1.2925291 insert n(1535)0Width:InterpolationMasses 202 1.3100806 insert n(1535)0Width:InterpolationMasses 203 1.327632 insert n(1535)0Width:InterpolationMasses 204 1.3451835 insert n(1535)0Width:InterpolationMasses 205 1.362735 insert n(1535)0Width:InterpolationMasses 206 1.3802865 insert n(1535)0Width:InterpolationMasses 207 1.3978379 insert n(1535)0Width:InterpolationMasses 208 1.4153894 insert n(1535)0Width:InterpolationMasses 209 1.4329409 insert n(1535)0Width:InterpolationMasses 210 1.4504924 insert n(1535)0Width:InterpolationMasses 211 1.4680439 insert n(1535)0Width:InterpolationMasses 212 1.4855953 insert n(1535)0Width:InterpolationMasses 213 1.5031468 insert n(1535)0Width:InterpolationMasses 214 1.5206983 insert n(1535)0Width:InterpolationMasses 215 1.5382498 insert n(1535)0Width:InterpolationMasses 216 1.5558012 insert n(1535)0Width:InterpolationMasses 217 1.5733527 insert n(1535)0Width:InterpolationMasses 218 1.5909042 insert n(1535)0Width:InterpolationMasses 219 1.6084557 insert n(1535)0Width:InterpolationMasses 220 1.6260072 insert n(1535)0Width:InterpolationMasses 221 1.6435586 insert n(1535)0Width:InterpolationMasses 222 1.6611101 insert n(1535)0Width:InterpolationMasses 223 1.6786616 insert n(1535)0Width:InterpolationMasses 224 1.6962131 insert n(1535)0Width:InterpolationMasses 225 1.7137645 insert n(1535)0Width:InterpolationMasses 226 1.731316 insert n(1535)0Width:InterpolationMasses 227 1.7488675 insert n(1535)0Width:InterpolationMasses 228 1.766419 insert n(1535)0Width:InterpolationMasses 229 1.7839704 insert n(1535)0Width:InterpolationMasses 230 1.8015219 insert n(1535)0Width:InterpolationMasses 231 1.8190734 insert n(1535)0Width:InterpolationMasses 232 1.8366249 insert n(1535)0Width:InterpolationMasses 233 1.8541764 insert n(1535)0Width:InterpolationMasses 234 1.8717278 insert n(1535)0Width:InterpolationMasses 235 1.8892793 insert n(1535)0Width:InterpolationMasses 236 1.9068308 insert n(1535)0Width:InterpolationMasses 237 1.9243823 insert n(1535)0Width:InterpolationMasses 238 1.9419337 insert n(1535)0Width:InterpolationMasses 239 1.9594852 insert n(1535)0Width:InterpolationMasses 240 1.9770367 insert n(1535)0Width:InterpolationMasses 241 1.9945882 insert n(1535)0Width:InterpolationMasses 242 2.0121397 insert n(1535)0Width:InterpolationMasses 243 2.0296911 insert n(1535)0Width:InterpolationMasses 244 2.0472426 insert n(1535)0Width:InterpolationMasses 245 2.0647941 insert n(1535)0Width:InterpolationMasses 246 2.0823456 insert n(1535)0Width:InterpolationMasses 247 2.099897 insert n(1535)0Width:InterpolationMasses 248 2.1174485 insert n(1535)0Width:InterpolationMasses 249 2.135 insert n(1535)0Width:InterpolationMasses 250 2.1525515 insert n(1535)0Width:InterpolationMasses 251 2.170103 insert n(1535)0Width:InterpolationMasses 252 1.4606159 insert n(1535)0Width:InterpolationMasses 253 1.4738391 insert n(1535)0Width:InterpolationMasses 254 1.4870624 insert n(1535)0Width:InterpolationMasses 255 1.4883794 insert n(1535)0Width:InterpolationMasses 256 1.4896976 insert n(1535)0Width:InterpolationMasses 257 1.491017 insert n(1535)0Width:InterpolationMasses 258 1.4923376 insert n(1535)0Width:InterpolationMasses 259 1.4936593 insert n(1535)0Width:InterpolationMasses 260 1.4949822 insert n(1535)0Width:InterpolationMasses 261 1.4963063 insert n(1535)0Width:InterpolationMasses 262 1.4976316 insert n(1535)0Width:InterpolationMasses 263 1.498958 insert n(1535)0Width:InterpolationMasses 264 1.5002856 insert n(1535)0Width:InterpolationMasses 265 1.5135088 insert n(1535)0Width:InterpolationMasses 266 1.526732 insert n(1535)0Width:InterpolationMasses 267 1.5399552 insert n(1535)0Width:InterpolationMasses 268 1.5531784 insert n(1535)0Width:InterpolationMasses 269 1.5664017 insert n(1535)0Width:InterpolationMasses 270 1.5796249 insert n(1535)0Width:InterpolationMasses 271 1.5928481 insert n(1535)0Width:InterpolationMasses 272 1.6060713 insert n(1535)0Width:InterpolationMasses 273 1.6192945 insert n(1535)0Width:InterpolationMasses 274 1.6325177 insert n(1535)0Width:InterpolationMasses 275 1.645741 insert n(1535)0Width:InterpolationMasses 276 1.6589642 insert n(1535)0Width:InterpolationMasses 277 1.6721874 insert n(1535)0Width:InterpolationMasses 278 1.6854106 insert n(1535)0Width:InterpolationMasses 279 1.6986338 insert n(1535)0Width:InterpolationMasses 280 1.7118571 insert n(1535)0Width:InterpolationMasses 281 1.7250803 insert n(1535)0Width:InterpolationMasses 282 1.7383035 insert n(1535)0Width:InterpolationMasses 283 1.7515267 insert n(1535)0Width:InterpolationMasses 284 1.7647499 insert n(1535)0Width:InterpolationMasses 285 1.7779731 insert n(1535)0Width:InterpolationMasses 286 1.7911964 insert n(1535)0Width:InterpolationMasses 287 1.8044196 insert n(1535)0Width:InterpolationMasses 288 1.8176428 insert n(1535)0Width:InterpolationMasses 289 1.830866 insert n(1535)0Width:InterpolationMasses 290 1.8440892 insert n(1535)0Width:InterpolationMasses 291 1.8573124 insert n(1535)0Width:InterpolationMasses 292 1.8705357 insert n(1535)0Width:InterpolationMasses 293 1.8837589 insert n(1535)0Width:InterpolationMasses 294 1.8969821 insert n(1535)0Width:InterpolationMasses 295 1.9102053 insert n(1535)0Width:InterpolationMasses 296 1.9234285 insert n(1535)0Width:InterpolationMasses 297 1.9366517 insert n(1535)0Width:InterpolationMasses 298 1.949875 insert n(1535)0Width:InterpolationMasses 299 1.9630982 insert n(1535)0Width:InterpolationMasses 300 1.9763214 insert n(1535)0Width:InterpolationMasses 301 1.9895446 insert n(1535)0Width:InterpolationMasses 302 2.0027678 insert n(1535)0Width:InterpolationMasses 303 2.015991 insert n(1535)0Width:InterpolationMasses 304 2.0292143 insert n(1535)0Width:InterpolationMasses 305 2.0424375 insert n(1535)0Width:InterpolationMasses 306 2.0556607 insert n(1535)0Width:InterpolationMasses 307 2.0688839 insert n(1535)0Width:InterpolationMasses 308 2.0821071 insert n(1535)0Width:InterpolationMasses 309 2.0953303 insert n(1535)0Width:InterpolationMasses 310 2.1085536 insert n(1535)0Width:InterpolationMasses 311 2.1217768 insert n(1535)0Width:InterpolationMasses 312 2.135 insert n(1535)0Width:InterpolationMasses 313 2.1482232 insert n(1535)0Width:InterpolationMasses 314 2.1614464 insert n(1535)0Width:InterpolationMasses 315 1.2446547 insert n(1535)0Width:InterpolationMasses 316 1.2621124 insert n(1535)0Width:InterpolationMasses 317 1.2795702 insert n(1535)0Width:InterpolationMasses 318 1.2813053 insert n(1535)0Width:InterpolationMasses 319 1.2830428 insert n(1535)0Width:InterpolationMasses 320 1.2847827 insert n(1535)0Width:InterpolationMasses 321 1.2865249 insert n(1535)0Width:InterpolationMasses 322 1.2882695 insert n(1535)0Width:InterpolationMasses 323 1.2900164 insert n(1535)0Width:InterpolationMasses 324 1.2917657 insert n(1535)0Width:InterpolationMasses 325 1.2935174 insert n(1535)0Width:InterpolationMasses 326 1.2952715 insert n(1535)0Width:InterpolationMasses 327 1.2970279 insert n(1535)0Width:InterpolationMasses 328 1.3144857 insert n(1535)0Width:InterpolationMasses 329 1.3319434 insert n(1535)0Width:InterpolationMasses 330 1.3494012 insert n(1535)0Width:InterpolationMasses 331 1.3668589 insert n(1535)0Width:InterpolationMasses 332 1.3843167 insert n(1535)0Width:InterpolationMasses 333 1.4017744 insert n(1535)0Width:InterpolationMasses 334 1.4192322 insert n(1535)0Width:InterpolationMasses 335 1.4366899 insert n(1535)0Width:InterpolationMasses 336 1.4541477 insert n(1535)0Width:InterpolationMasses 337 1.4716054 insert n(1535)0Width:InterpolationMasses 338 1.4890632 insert n(1535)0Width:InterpolationMasses 339 1.5065209 insert n(1535)0Width:InterpolationMasses 340 1.5239787 insert n(1535)0Width:InterpolationMasses 341 1.5414365 insert n(1535)0Width:InterpolationMasses 342 1.5588942 insert n(1535)0Width:InterpolationMasses 343 1.576352 insert n(1535)0Width:InterpolationMasses 344 1.5938097 insert n(1535)0Width:InterpolationMasses 345 1.6112675 insert n(1535)0Width:InterpolationMasses 346 1.6287252 insert n(1535)0Width:InterpolationMasses 347 1.646183 insert n(1535)0Width:InterpolationMasses 348 1.6636407 insert n(1535)0Width:InterpolationMasses 349 1.6810985 insert n(1535)0Width:InterpolationMasses 350 1.6985562 insert n(1535)0Width:InterpolationMasses 351 1.716014 insert n(1535)0Width:InterpolationMasses 352 1.7334717 insert n(1535)0Width:InterpolationMasses 353 1.7509295 insert n(1535)0Width:InterpolationMasses 354 1.7683872 insert n(1535)0Width:InterpolationMasses 355 1.785845 insert n(1535)0Width:InterpolationMasses 356 1.8033027 insert n(1535)0Width:InterpolationMasses 357 1.8207605 insert n(1535)0Width:InterpolationMasses 358 1.8382182 insert n(1535)0Width:InterpolationMasses 359 1.855676 insert n(1535)0Width:InterpolationMasses 360 1.8731337 insert n(1535)0Width:InterpolationMasses 361 1.8905915 insert n(1535)0Width:InterpolationMasses 362 1.9080492 insert n(1535)0Width:InterpolationMasses 363 1.925507 insert n(1535)0Width:InterpolationMasses 364 1.9429647 insert n(1535)0Width:InterpolationMasses 365 1.9604225 insert n(1535)0Width:InterpolationMasses 366 1.9778802 insert n(1535)0Width:InterpolationMasses 367 1.995338 insert n(1535)0Width:InterpolationMasses 368 2.0127957 insert n(1535)0Width:InterpolationMasses 369 2.0302535 insert n(1535)0Width:InterpolationMasses 370 2.0477112 insert n(1535)0Width:InterpolationMasses 371 2.065169 insert n(1535)0Width:InterpolationMasses 372 2.0826267 insert n(1535)0Width:InterpolationMasses 373 2.1000845 insert n(1535)0Width:InterpolationMasses 374 2.1175422 insert n(1535)0Width:InterpolationMasses 375 2.135 insert n(1535)0Width:InterpolationMasses 376 2.1524578 insert n(1535)0Width:InterpolationMasses 377 2.1699155 insert n(1535)0Width:InterpolationWidths 0 0 insert n(1535)0Width:InterpolationWidths 1 0 insert n(1535)0Width:InterpolationWidths 2 0 insert n(1535)0Width:InterpolationWidths 3 6.8240206e-13 insert n(1535)0Width:InterpolationWidths 4 4.3530337e-12 insert n(1535)0Width:InterpolationWidths 5 1.3475216e-11 insert n(1535)0Width:InterpolationWidths 6 3.0955907e-11 insert n(1535)0Width:InterpolationWidths 7 6.0294584e-11 insert n(1535)0Width:InterpolationWidths 8 1.0567364e-10 insert n(1535)0Width:InterpolationWidths 9 1.7204086e-10 insert n(1535)0Width:InterpolationWidths 10 2.6519318e-10 insert n(1535)0Width:InterpolationWidths 11 3.9186501e-10 insert n(1535)0Width:InterpolationWidths 12 5.5982287e-10 insert n(1535)0Width:InterpolationWidths 13 6.9784627e-09 insert n(1535)0Width:InterpolationWidths 14 3.6994202e-08 insert n(1535)0Width:InterpolationWidths 15 1.3609159e-07 insert n(1535)0Width:InterpolationWidths 16 4.1062522e-07 insert n(1535)0Width:InterpolationWidths 17 1.0949331e-06 insert n(1535)0Width:InterpolationWidths 18 2.6406572e-06 insert n(1535)0Width:InterpolationWidths 19 5.6883866e-06 insert n(1535)0Width:InterpolationWidths 20 1.0851687e-05 insert n(1535)0Width:InterpolationWidths 21 1.8608476e-05 insert n(1535)0Width:InterpolationWidths 22 2.9354496e-05 insert n(1535)0Width:InterpolationWidths 23 4.3457532e-05 insert n(1535)0Width:InterpolationWidths 24 6.1280369e-05 insert n(1535)0Width:InterpolationWidths 25 8.3188799e-05 insert n(1535)0Width:InterpolationWidths 26 0.00010955429 insert n(1535)0Width:InterpolationWidths 27 0.00014075487 insert n(1535)0Width:InterpolationWidths 28 0.00017717534 insert n(1535)0Width:InterpolationWidths 29 0.00021920733 insert n(1535)0Width:InterpolationWidths 30 0.00026724935 insert n(1535)0Width:InterpolationWidths 31 0.00032170669 insert n(1535)0Width:InterpolationWidths 32 0.00038299154 insert n(1535)0Width:InterpolationWidths 33 0.00045152296 insert n(1535)0Width:InterpolationWidths 34 0.00052772694 insert n(1535)0Width:InterpolationWidths 35 0.00061203649 insert n(1535)0Width:InterpolationWidths 36 0.00070489169 insert n(1535)0Width:InterpolationWidths 37 0.00080673979 insert n(1535)0Width:InterpolationWidths 38 0.00091803532 insert n(1535)0Width:InterpolationWidths 39 0.0010392401 insert n(1535)0Width:InterpolationWidths 40 0.0011708245 insert n(1535)0Width:InterpolationWidths 41 0.0013132636 insert n(1535)0Width:InterpolationWidths 42 0.0014670426 insert n(1535)0Width:InterpolationWidths 43 0.001632654 insert n(1535)0Width:InterpolationWidths 44 0.0018105979 insert n(1535)0Width:InterpolationWidths 45 0.0020013823 insert n(1535)0Width:InterpolationWidths 46 0.0022055234 insert n(1535)0Width:InterpolationWidths 47 0.0024235456 insert n(1535)0Width:InterpolationWidths 48 0.0026559814 insert n(1535)0Width:InterpolationWidths 49 0.002903372 insert n(1535)0Width:InterpolationWidths 50 0.0031662665 insert n(1535)0Width:InterpolationWidths 51 0.0034452232 insert n(1535)0Width:InterpolationWidths 52 0.0037408035 insert n(1535)0Width:InterpolationWidths 53 0.0040535541 insert n(1535)0Width:InterpolationWidths 54 0.0043840335 insert n(1535)0Width:InterpolationWidths 55 0.0047328113 insert n(1535)0Width:InterpolationWidths 56 0.0051004662 insert n(1535)0Width:InterpolationWidths 57 0.0054875848 insert n(1535)0Width:InterpolationWidths 58 0.005894762 insert n(1535)0Width:InterpolationWidths 59 0.006322601 insert n(1535)0Width:InterpolationWidths 60 0.0067717132 insert n(1535)0Width:InterpolationWidths 61 0.0072427183 insert n(1535)0Width:InterpolationWidths 62 0.0077362445 insert n(1535)0Width:InterpolationWidths 63 0 insert n(1535)0Width:InterpolationWidths 64 0 insert n(1535)0Width:InterpolationWidths 65 0 insert n(1535)0Width:InterpolationWidths 66 6.5001627e-13 insert n(1535)0Width:InterpolationWidths 67 4.7097589e-12 insert n(1535)0Width:InterpolationWidths 68 1.6206878e-11 insert n(1535)0Width:InterpolationWidths 69 4.0686742e-11 insert n(1535)0Width:InterpolationWidths 70 8.5438559e-11 insert n(1535)0Width:InterpolationWidths 71 1.5970034e-10 insert n(1535)0Width:InterpolationWidths 72 2.748735e-10 insert n(1535)0Width:InterpolationWidths 73 4.447537e-10 insert n(1535)0Width:InterpolationWidths 74 6.8578081e-10 insert n(1535)0Width:InterpolationWidths 75 1.0173102e-09 insert n(1535)0Width:InterpolationWidths 76 1.5817845e-08 insert n(1535)0Width:InterpolationWidths 77 9.2680115e-08 insert n(1535)0Width:InterpolationWidths 78 3.609388e-07 insert n(1535)0Width:InterpolationWidths 79 1.1302579e-06 insert n(1535)0Width:InterpolationWidths 80 3.0943507e-06 insert n(1535)0Width:InterpolationWidths 81 7.6062107e-06 insert n(1535)0Width:InterpolationWidths 82 1.6593585e-05 insert n(1535)0Width:InterpolationWidths 83 3.1896625e-05 insert n(1535)0Width:InterpolationWidths 84 5.4941528e-05 insert n(1535)0Width:InterpolationWidths 85 8.6907869e-05 insert n(1535)0Width:InterpolationWidths 86 0.00012889258 insert n(1535)0Width:InterpolationWidths 87 0.00018197829 insert n(1535)0Width:InterpolationWidths 88 0.00024725686 insert n(1535)0Width:InterpolationWidths 89 0.00032583721 insert n(1535)0Width:InterpolationWidths 90 0.00041884781 insert n(1535)0Width:InterpolationWidths 91 0.00052743734 insert n(1535)0Width:InterpolationWidths 92 0.00065277483 insert n(1535)0Width:InterpolationWidths 93 0.00079604966 insert n(1535)0Width:InterpolationWidths 94 0.00095847151 insert n(1535)0Width:InterpolationWidths 95 0.0011412704 insert n(1535)0Width:InterpolationWidths 96 0.001345697 insert n(1535)0Width:InterpolationWidths 97 0.0015730223 insert n(1535)0Width:InterpolationWidths 98 0.0018245383 insert n(1535)0Width:InterpolationWidths 99 0.0021015581 insert n(1535)0Width:InterpolationWidths 100 0.002405416 insert n(1535)0Width:InterpolationWidths 101 0.0027374679 insert n(1535)0Width:InterpolationWidths 102 0.0030990942 insert n(1535)0Width:InterpolationWidths 103 0.00349169 insert n(1535)0Width:InterpolationWidths 104 0.0039166801 insert n(1535)0Width:InterpolationWidths 105 0.0043755095 insert n(1535)0Width:InterpolationWidths 106 0.0048696464 insert n(1535)0Width:InterpolationWidths 107 0.0054005826 insert n(1535)0Width:InterpolationWidths 108 0.0059698332 insert n(1535)0Width:InterpolationWidths 109 0.0065789376 insert n(1535)0Width:InterpolationWidths 110 0.0072294594 insert n(1535)0Width:InterpolationWidths 111 0.0079229868 insert n(1535)0Width:InterpolationWidths 112 0.0086611327 insert n(1535)0Width:InterpolationWidths 113 0.0094455356 insert n(1535)0Width:InterpolationWidths 114 0.010277859 insert n(1535)0Width:InterpolationWidths 115 0.011159778 insert n(1535)0Width:InterpolationWidths 116 0.012092922 insert n(1535)0Width:InterpolationWidths 117 0.013078959 insert n(1535)0Width:InterpolationWidths 118 0.014119587 insert n(1535)0Width:InterpolationWidths 119 0.015216531 insert n(1535)0Width:InterpolationWidths 120 0.016371542 insert n(1535)0Width:InterpolationWidths 121 0.017586394 insert n(1535)0Width:InterpolationWidths 122 0.018862886 insert n(1535)0Width:InterpolationWidths 123 0.020202842 insert n(1535)0Width:InterpolationWidths 124 0.02160811 insert n(1535)0Width:InterpolationWidths 125 0.023080565 insert n(1535)0Width:InterpolationWidths 126 0 insert n(1535)0Width:InterpolationWidths 127 0 insert n(1535)0Width:InterpolationWidths 128 0 insert n(1535)0Width:InterpolationWidths 129 1.1740258e-12 insert n(1535)0Width:InterpolationWidths 130 7.5776208e-12 insert n(1535)0Width:InterpolationWidths 131 2.3696798e-11 insert n(1535)0Width:InterpolationWidths 132 5.4921323e-11 insert n(1535)0Width:InterpolationWidths 133 1.0780674e-10 insert n(1535)0Width:InterpolationWidths 134 1.9024287e-10 insert n(1535)0Width:InterpolationWidths 135 3.116119e-10 insert n(1535)0Width:InterpolationWidths 136 4.8295098e-10 insert n(1535)0Width:InterpolationWidths 137 7.1712495e-10 insert n(1535)0Width:InterpolationWidths 138 1.0290118e-09 insert n(1535)0Width:InterpolationWidths 139 1.3187356e-08 insert n(1535)0Width:InterpolationWidths 140 7.0920393e-08 insert n(1535)0Width:InterpolationWidths 141 2.6336396e-07 insert n(1535)0Width:InterpolationWidths 142 8.0033936e-07 insert n(1535)0Width:InterpolationWidths 143 2.1463104e-06 insert n(1535)0Width:InterpolationWidths 144 5.1961572e-06 insert n(1535)0Width:InterpolationWidths 145 1.1210284e-05 insert n(1535)0Width:InterpolationWidths 146 2.1389442e-05 insert n(1535)0Width:InterpolationWidths 147 3.6675977e-05 insert n(1535)0Width:InterpolationWidths 148 5.7860906e-05 insert n(1535)0Width:InterpolationWidths 149 8.5685555e-05 insert n(1535)0Width:InterpolationWidths 150 0.00012088369 insert n(1535)0Width:InterpolationWidths 151 0.00016419602 insert n(1535)0Width:InterpolationWidths 152 0.00021637506 insert n(1535)0Width:InterpolationWidths 153 0.00027818659 insert n(1535)0Width:InterpolationWidths 154 0.00035041016 insert n(1535)0Width:InterpolationWidths 155 0.00043383909 insert n(1535)0Width:InterpolationWidths 156 0.00052928055 insert n(1535)0Width:InterpolationWidths 157 0.00063755551 insert n(1535)0Width:InterpolationWidths 158 0.00075949881 insert n(1535)0Width:InterpolationWidths 159 0.00089595924 insert n(1535)0Width:InterpolationWidths 160 0.0010477997 insert n(1535)0Width:InterpolationWidths 161 0.0012158971 insert n(1535)0Width:InterpolationWidths 162 0.0014011431 insert n(1535)0Width:InterpolationWidths 163 0.0016044435 insert n(1535)0Width:InterpolationWidths 164 0.0018267191 insert n(1535)0Width:InterpolationWidths 165 0.0020689056 insert n(1535)0Width:InterpolationWidths 166 0.0023319556 insert n(1535)0Width:InterpolationWidths 167 0.002616832 insert n(1535)0Width:InterpolationWidths 168 0.002924518 insert n(1535)0Width:InterpolationWidths 169 0.0032560112 insert n(1535)0Width:InterpolationWidths 170 0.003612325 insert n(1535)0Width:InterpolationWidths 171 0.0039944893 insert n(1535)0Width:InterpolationWidths 172 0.00440355 insert n(1535)0Width:InterpolationWidths 173 0.0048405701 insert n(1535)0Width:InterpolationWidths 174 0.005306629 insert n(1535)0Width:InterpolationWidths 175 0.0058028234 insert n(1535)0Width:InterpolationWidths 176 0.0063302671 insert n(1535)0Width:InterpolationWidths 177 0.0068900914 insert n(1535)0Width:InterpolationWidths 178 0.0074834274 insert n(1535)0Width:InterpolationWidths 179 0.0081113828 insert n(1535)0Width:InterpolationWidths 180 0.0087750941 insert n(1535)0Width:InterpolationWidths 181 0.0094757182 insert n(1535)0Width:InterpolationWidths 182 0.010214429 insert n(1535)0Width:InterpolationWidths 183 0.010992417 insert n(1535)0Width:InterpolationWidths 184 0.01181089 insert n(1535)0Width:InterpolationWidths 185 0.012671072 insert n(1535)0Width:InterpolationWidths 186 0.013574203 insert n(1535)0Width:InterpolationWidths 187 0.014521541 insert n(1535)0Width:InterpolationWidths 188 0.015514362 insert n(1535)0Width:InterpolationWidths 189 0 insert n(1535)0Width:InterpolationWidths 190 0 insert n(1535)0Width:InterpolationWidths 191 0 insert n(1535)0Width:InterpolationWidths 192 5.8556402e-12 insert n(1535)0Width:InterpolationWidths 193 3.3946645e-11 insert n(1535)0Width:InterpolationWidths 194 9.5866392e-11 insert n(1535)0Width:InterpolationWidths 195 2.0167342e-10 insert n(1535)0Width:InterpolationWidths 196 3.6103841e-10 insert n(1535)0Width:InterpolationWidths 197 5.8362076e-10 insert n(1535)0Width:InterpolationWidths 198 8.7925857e-10 insert n(1535)0Width:InterpolationWidths 199 1.2580859e-09 insert n(1535)0Width:InterpolationWidths 200 1.7306156e-09 insert n(1535)0Width:InterpolationWidths 201 2.3078029e-09 insert n(1535)0Width:InterpolationWidths 202 1.6324765e-08 insert n(1535)0Width:InterpolationWidths 203 5.6063368e-08 insert n(1535)0Width:InterpolationWidths 204 1.4304939e-07 insert n(1535)0Width:InterpolationWidths 205 3.1655615e-07 insert n(1535)0Width:InterpolationWidths 206 6.6277523e-07 insert n(1535)0Width:InterpolationWidths 207 1.299595e-06 insert n(1535)0Width:InterpolationWidths 208 2.3834188e-06 insert n(1535)0Width:InterpolationWidths 209 4.1312535e-06 insert n(1535)0Width:InterpolationWidths 210 6.842333e-06 insert n(1535)0Width:InterpolationWidths 211 1.0967638e-05 insert n(1535)0Width:InterpolationWidths 212 1.7036095e-05 insert n(1535)0Width:InterpolationWidths 213 2.5899519e-05 insert n(1535)0Width:InterpolationWidths 214 3.864873e-05 insert n(1535)0Width:InterpolationWidths 215 5.6441059e-05 insert n(1535)0Width:InterpolationWidths 216 8.0577777e-05 insert n(1535)0Width:InterpolationWidths 217 0.00011226591 insert n(1535)0Width:InterpolationWidths 218 0.00015255226 insert n(1535)0Width:InterpolationWidths 219 0.00020240409 insert n(1535)0Width:InterpolationWidths 220 0.00026265234 insert n(1535)0Width:InterpolationWidths 221 0.00033427304 insert n(1535)0Width:InterpolationWidths 222 0.00041756063 insert n(1535)0Width:InterpolationWidths 223 0.00051352365 insert n(1535)0Width:InterpolationWidths 224 0.00062312243 insert n(1535)0Width:InterpolationWidths 225 0.00074648592 insert n(1535)0Width:InterpolationWidths 226 0.00088469494 insert n(1535)0Width:InterpolationWidths 227 0.0010381462 insert n(1535)0Width:InterpolationWidths 228 0.0012074504 insert n(1535)0Width:InterpolationWidths 229 0.0013932024 insert n(1535)0Width:InterpolationWidths 230 0.0015961566 insert n(1535)0Width:InterpolationWidths 231 0.0018163734 insert n(1535)0Width:InterpolationWidths 232 0.002054877 insert n(1535)0Width:InterpolationWidths 233 0.0023119853 insert n(1535)0Width:InterpolationWidths 234 0.002587977 insert n(1535)0Width:InterpolationWidths 235 0.0028838897 insert n(1535)0Width:InterpolationWidths 236 0.0031996906 insert n(1535)0Width:InterpolationWidths 237 0.0035360313 insert n(1535)0Width:InterpolationWidths 238 0.0038929707 insert n(1535)0Width:InterpolationWidths 239 0.0042711638 insert n(1535)0Width:InterpolationWidths 240 0.0046722132 insert n(1535)0Width:InterpolationWidths 241 0.0050948851 insert n(1535)0Width:InterpolationWidths 242 0.0055400343 insert n(1535)0Width:InterpolationWidths 243 0.0060082475 insert n(1535)0Width:InterpolationWidths 244 0.0064996073 insert n(1535)0Width:InterpolationWidths 245 0.0070149895 insert n(1535)0Width:InterpolationWidths 246 0.0075540121 insert n(1535)0Width:InterpolationWidths 247 0.0081180036 insert n(1535)0Width:InterpolationWidths 248 0.0087065098 insert n(1535)0Width:InterpolationWidths 249 0.0093205054 insert n(1535)0Width:InterpolationWidths 250 0.0099595089 insert n(1535)0Width:InterpolationWidths 251 0.010625457 insert n(1535)0Width:InterpolationWidths 252 0 insert n(1535)0Width:InterpolationWidths 253 0 insert n(1535)0Width:InterpolationWidths 254 0 insert n(1535)0Width:InterpolationWidths 255 0.010859255 insert n(1535)0Width:InterpolationWidths 256 0.015467775 insert n(1535)0Width:InterpolationWidths 257 0.019048548 insert n(1535)0Width:InterpolationWidths 258 0.022107365 insert n(1535)0Width:InterpolationWidths 259 0.024838365 insert n(1535)0Width:InterpolationWidths 260 0.02734046 insert n(1535)0Width:InterpolationWidths 261 0.029672079 insert n(1535)0Width:InterpolationWidths 262 0.031871094 insert n(1535)0Width:InterpolationWidths 263 0.033963685 insert n(1535)0Width:InterpolationWidths 264 0.035968823 insert n(1535)0Width:InterpolationWidths 265 0.053131226 insert n(1535)0Width:InterpolationWidths 266 0.067888611 insert n(1535)0Width:InterpolationWidths 267 0.081702263 insert n(1535)0Width:InterpolationWidths 268 0.095115794 insert n(1535)0Width:InterpolationWidths 269 0.10839859 insert n(1535)0Width:InterpolationWidths 270 0.12170605 insert n(1535)0Width:InterpolationWidths 271 0.13513696 insert n(1535)0Width:InterpolationWidths 272 0.14875864 insert n(1535)0Width:InterpolationWidths 273 0.16261937 insert n(1535)0Width:InterpolationWidths 274 0.17675532 insert n(1535)0Width:InterpolationWidths 275 0.19119444 insert n(1535)0Width:InterpolationWidths 276 0.20595905 insert n(1535)0Width:InterpolationWidths 277 0.22106736 insert n(1535)0Width:InterpolationWidths 278 0.23653457 insert n(1535)0Width:InterpolationWidths 279 0.25237363 insert n(1535)0Width:InterpolationWidths 280 0.26859575 insert n(1535)0Width:InterpolationWidths 281 0.28521077 insert n(1535)0Width:InterpolationWidths 282 0.30222749 insert n(1535)0Width:InterpolationWidths 283 0.31965382 insert n(1535)0Width:InterpolationWidths 284 0.33749698 insert n(1535)0Width:InterpolationWidths 285 0.35576364 insert n(1535)0Width:InterpolationWidths 286 0.37445998 insert n(1535)0Width:InterpolationWidths 287 0.39359179 insert n(1535)0Width:InterpolationWidths 288 0.41316454 insert n(1535)0Width:InterpolationWidths 289 0.43318342 insert n(1535)0Width:InterpolationWidths 290 0.45365337 insert n(1535)0Width:InterpolationWidths 291 0.47457915 insert n(1535)0Width:InterpolationWidths 292 0.49596532 insert n(1535)0Width:InterpolationWidths 293 0.51781633 insert n(1535)0Width:InterpolationWidths 294 0.54013644 insert n(1535)0Width:InterpolationWidths 295 0.56292986 insert n(1535)0Width:InterpolationWidths 296 0.58620066 insert n(1535)0Width:InterpolationWidths 297 0.60995283 insert n(1535)0Width:InterpolationWidths 298 0.63419028 insert n(1535)0Width:InterpolationWidths 299 0.65891688 insert n(1535)0Width:InterpolationWidths 300 0.6841364 insert n(1535)0Width:InterpolationWidths 301 0.70985258 insert n(1535)0Width:InterpolationWidths 302 0.73606911 insert n(1535)0Width:InterpolationWidths 303 0.76278964 insert n(1535)0Width:InterpolationWidths 304 0.79001775 insert n(1535)0Width:InterpolationWidths 305 0.81775704 insert n(1535)0Width:InterpolationWidths 306 0.84601103 insert n(1535)0Width:InterpolationWidths 307 0.87478325 insert n(1535)0Width:InterpolationWidths 308 0.90407718 insert n(1535)0Width:InterpolationWidths 309 0.93389628 insert n(1535)0Width:InterpolationWidths 310 0.96424399 insert n(1535)0Width:InterpolationWidths 311 0.99512376 insert n(1535)0Width:InterpolationWidths 312 1.026539 insert n(1535)0Width:InterpolationWidths 313 1.058493 insert n(1535)0Width:InterpolationWidths 314 1.0909893 insert n(1535)0Width:InterpolationWidths 315 0 insert n(1535)0Width:InterpolationWidths 316 0 insert n(1535)0Width:InterpolationWidths 317 0 insert n(1535)0Width:InterpolationWidths 318 1.1974891e-11 insert n(1535)0Width:InterpolationWidths 319 6.9402884e-11 insert n(1535)0Width:InterpolationWidths 320 1.959439e-10 insert n(1535)0Width:InterpolationWidths 321 4.1209751e-10 insert n(1535)0Width:InterpolationWidths 322 7.3755072e-10 insert n(1535)0Width:InterpolationWidths 323 1.1919486e-09 insert n(1535)0Width:InterpolationWidths 324 1.7952827e-09 insert n(1535)0Width:InterpolationWidths 325 2.5681306e-09 insert n(1535)0Width:InterpolationWidths 326 3.5318238e-09 insert n(1535)0Width:InterpolationWidths 327 4.7085784e-09 insert n(1535)0Width:InterpolationWidths 328 3.323576e-08 insert n(1535)0Width:InterpolationWidths 329 1.1392034e-07 insert n(1535)0Width:InterpolationWidths 330 2.9017257e-07 insert n(1535)0Width:InterpolationWidths 331 6.433965e-07 insert n(1535)0Width:InterpolationWidths 332 1.3498676e-06 insert n(1535)0Width:InterpolationWidths 333 2.6447752e-06 insert n(1535)0Width:InterpolationWidths 334 4.8477447e-06 insert n(1535)0Width:InterpolationWidths 335 8.3808554e-06 insert n(1535)0Width:InterpolationWidths 336 1.3857924e-05 insert n(1535)0Width:InterpolationWidths 337 2.2124212e-05 insert n(1535)0Width:InterpolationWidths 338 3.4351668e-05 insert n(1535)0Width:InterpolationWidths 339 5.2167576e-05 insert n(1535)0Width:InterpolationWidths 340 7.7648788e-05 insert n(1535)0Width:InterpolationWidths 341 0.00011331896 insert n(1535)0Width:InterpolationWidths 342 0.00016160918 insert n(1535)0Width:InterpolationWidths 343 0.00022506903 insert n(1535)0Width:InterpolationWidths 344 0.00030582227 insert n(1535)0Width:InterpolationWidths 345 0.0004057391 insert n(1535)0Width:InterpolationWidths 346 0.00052653409 insert n(1535)0Width:InterpolationWidths 347 0.00066958327 insert n(1535)0Width:InterpolationWidths 348 0.00083682042 insert n(1535)0Width:InterpolationWidths 349 0.0010292225 insert n(1535)0Width:InterpolationWidths 350 0.0012480228 insert n(1535)0Width:InterpolationWidths 351 0.0014957303 insert n(1535)0Width:InterpolationWidths 352 0.0017721155 insert n(1535)0Width:InterpolationWidths 353 0.0020787706 insert n(1535)0Width:InterpolationWidths 354 0.0024170061 insert n(1535)0Width:InterpolationWidths 355 0.0027884068 insert n(1535)0Width:InterpolationWidths 356 0.0031932648 insert n(1535)0Width:InterpolationWidths 357 0.0036332235 insert n(1535)0Width:InterpolationWidths 358 0.0041091239 insert n(1535)0Width:InterpolationWidths 359 0.0046218333 insert n(1535)0Width:InterpolationWidths 360 0.0051725161 insert n(1535)0Width:InterpolationWidths 361 0.0057623724 insert n(1535)0Width:InterpolationWidths 362 0.0063909524 insert n(1535)0Width:InterpolationWidths 363 0.0070600235 insert n(1535)0Width:InterpolationWidths 364 0.0077732011 insert n(1535)0Width:InterpolationWidths 365 0.0085276071 insert n(1535)0Width:InterpolationWidths 366 0.0093241975 insert n(1535)0Width:InterpolationWidths 367 0.010164968 insert n(1535)0Width:InterpolationWidths 368 0.011051278 insert n(1535)0Width:InterpolationWidths 369 0.011982722 insert n(1535)0Width:InterpolationWidths 370 0.012960465 insert n(1535)0Width:InterpolationWidths 371 0.013984988 insert n(1535)0Width:InterpolationWidths 372 0.015058352 insert n(1535)0Width:InterpolationWidths 373 0.016178489 insert n(1535)0Width:InterpolationWidths 374 0.017348577 insert n(1535)0Width:InterpolationWidths 375 0.018567516 insert n(1535)0Width:InterpolationWidths 376 0.019836719 insert n(1535)0Width:InterpolationWidths 377 0.02115926 insert n(1535)0Width:NumberofEntries 0 63 insert n(1535)0Width:NumberofEntries 1 126 insert n(1535)0Width:NumberofEntries 2 189 insert n(1535)0Width:NumberofEntries 3 252 insert n(1535)0Width:NumberofEntries 4 315 insert n(1535)0Width:NumberofEntries 5 315 insert n(1535)0Width:NumberofEntries 6 315 insert n(1535)0Width:NumberofEntries 7 315 insert n(1535)0Width:NumberofEntries 8 315 insert n(1535)0Width:NumberofEntries 9 315 insert n(1535)0Width:NumberofEntries 10 378 insert n(1535)0Width:NumberofEntries 11 378 insert n(1535)0Width:NumberofEntries 12 378 insert n(1535)0Width:BaryonDecayers 0 /Herwig/Decays/SU3OctetDecuplet2 insert n(1535)0Width:ModeLocation 0 2 insert n(1535)0Width:BaryonDecayers 1 /Herwig/Decays/SU3OctetDecuplet2 insert n(1535)0Width:ModeLocation 1 10 insert n(1535)0Width:BaryonDecayers 2 /Herwig/Decays/SU3OctetDecuplet2 insert n(1535)0Width:ModeLocation 2 7 insert n(1535)0Width:BaryonDecayers 3 /Herwig/Decays/SU3Strong4 insert n(1535)0Width:ModeLocation 3 7 insert n(1535)0Width:BaryonDecayers 4 /Herwig/Decays/SU3Strong2 insert n(1535)0Width:ModeLocation 4 10 insert n(1535)0Width:BaryonDecayers 5 /Herwig/Decays/SU3Gamma2 insert n(1535)0Width:ModeLocation 5 1 insert n(1535)0Width:BaryonDecayers 6 NULL insert n(1535)0Width:ModeLocation 6 -1 insert n(1535)0Width:BaryonDecayers 7 NULL insert n(1535)0Width:ModeLocation 7 -1 insert n(1535)0Width:BaryonDecayers 8 /Herwig/Decays/SU3Strong2 insert n(1535)0Width:ModeLocation 8 7 insert n(1535)0Width:BaryonDecayers 9 NULL insert n(1535)0Width:ModeLocation 9 -1 insert n(1535)0Width:BaryonDecayers 10 /Herwig/Decays/SU3Strong4 insert n(1535)0Width:ModeLocation 10 6 insert n(1535)0Width:BaryonDecayers 11 /Herwig/Decays/SU3Strong2 insert n(1535)0Width:ModeLocation 11 6 insert n(1535)0Width:BaryonDecayers 12 NULL insert n(1535)0Width:ModeLocation 12 -1 newdef /Herwig/Particles/nbar(1535):Width_generator n(1535)0Width newdef /Herwig/Particles/n(1535)0:Width_generator n(1535)0Width # create Herwig::BaryonWidthGenerator p(1535)+Width newdef p(1535)+Width:Particle /Herwig/Particles/p(1535)+ newdef p(1535)+Width:Prefactor 1.02619 newdef p(1535)+Width:BRNormalize 1 newdef p(1535)+Width:BRMinimum 0.01 newdef p(1535)+Width:Points 50 newdef p(1535)+Width:InterpolationOrder 1 insert p(1535)+Width:MEtype 0 2 insert p(1535)+Width:MEtype 1 2 insert p(1535)+Width:MEtype 2 2 insert p(1535)+Width:MEtype 3 2 insert p(1535)+Width:MEtype 4 1 insert p(1535)+Width:MEtype 5 0 insert p(1535)+Width:MEtype 6 2 insert p(1535)+Width:MEtype 7 2 insert p(1535)+Width:MEtype 8 1 insert p(1535)+Width:MEtype 9 0 insert p(1535)+Width:MEtype 10 0 insert p(1535)+Width:MEtype 11 1 insert p(1535)+Width:MEtype 12 0 insert p(1535)+Width:MEcode 0 0 insert p(1535)+Width:MEcode 1 0 insert p(1535)+Width:MEcode 2 0 insert p(1535)+Width:MEcode 3 0 insert p(1535)+Width:MEcode 4 101 insert p(1535)+Width:MEcode 5 0 insert p(1535)+Width:MEcode 6 0 insert p(1535)+Width:MEcode 7 0 insert p(1535)+Width:MEcode 8 102 insert p(1535)+Width:MEcode 9 0 insert p(1535)+Width:MEcode 10 0 insert p(1535)+Width:MEcode 11 101 insert p(1535)+Width:MEcode 12 0 insert p(1535)+Width:MEcoupling 0 1.47802 insert p(1535)+Width:MEcoupling 1 1.43352 insert p(1535)+Width:MEcoupling 2 1.47245 insert p(1535)+Width:MEcoupling 3 60.8224 insert p(1535)+Width:MEcoupling 4 0.993443 insert p(1535)+Width:MEcoupling 5 0.013333 insert p(1535)+Width:MEcoupling 6 56.8494 insert p(1535)+Width:MEcoupling 7 1.01897 insert p(1535)+Width:MEcoupling 8 0.735525 insert p(1535)+Width:MEcoupling 9 0.013333 insert p(1535)+Width:MEcoupling 10 0.006667 insert p(1535)+Width:MEcoupling 11 0.989852 insert p(1535)+Width:MEcoupling 12 0.006667 insert p(1535)+Width:ModeOn 0 0 insert p(1535)+Width:ModeOn 1 0 insert p(1535)+Width:ModeOn 2 0 insert p(1535)+Width:ModeOn 3 1 insert p(1535)+Width:ModeOn 4 1 insert p(1535)+Width:ModeOn 5 1 insert p(1535)+Width:ModeOn 6 1 insert p(1535)+Width:ModeOn 7 1 insert p(1535)+Width:ModeOn 8 0 insert p(1535)+Width:ModeOn 9 1 insert p(1535)+Width:ModeOn 10 0 insert p(1535)+Width:ModeOn 11 1 insert p(1535)+Width:ModeOn 12 0 insert p(1535)+Width:MinimumMasses 0 1.22157 insert p(1535)+Width:MinimumMasses 1 1.21698 insert p(1535)+Width:MinimumMasses 2 1.22157 insert p(1535)+Width:MinimumMasses 3 1.27957 insert p(1535)+Width:MinimumMasses 4 1.07914 insert p(1535)+Width:MinimumMasses 5 1.31507 insert p(1535)+Width:MinimumMasses 6 1.27498 insert p(1535)+Width:MinimumMasses 7 1.48577 insert p(1535)+Width:MinimumMasses 8 0.938272 insert p(1535)+Width:MinimumMasses 9 1.21741 insert p(1535)+Width:MinimumMasses 10 1.20823 insert p(1535)+Width:MinimumMasses 11 1.07325 insert p(1535)+Width:MinimumMasses 12 1.31377 insert p(1535)+Width:MEmass1 0 1.232 insert p(1535)+Width:MEmass1 1 1.232 insert p(1535)+Width:MEmass1 2 1.232 insert p(1535)+Width:MEmass1 3 1.44 insert p(1535)+Width:MEmass1 4 0.939565 insert p(1535)+Width:MEmass1 5 0 insert p(1535)+Width:MEmass1 6 1.44 insert p(1535)+Width:MEmass1 7 0.938272 insert p(1535)+Width:MEmass1 8 0.938272 insert p(1535)+Width:MEmass1 9 0 insert p(1535)+Width:MEmass1 10 0 insert p(1535)+Width:MEmass1 11 0.938272 insert p(1535)+Width:MEmass1 12 0 insert p(1535)+Width:MEmass2 0 0.13957 insert p(1535)+Width:MEmass2 1 0.134978 insert p(1535)+Width:MEmass2 2 0.13957 insert p(1535)+Width:MEmass2 3 0.13957 insert p(1535)+Width:MEmass2 4 0.13957 insert p(1535)+Width:MEmass2 5 0 insert p(1535)+Width:MEmass2 6 0.134978 insert p(1535)+Width:MEmass2 7 0.54751 insert p(1535)+Width:MEmass2 8 0 insert p(1535)+Width:MEmass2 9 0 insert p(1535)+Width:MEmass2 10 0 insert p(1535)+Width:MEmass2 11 0.134978 insert p(1535)+Width:MEmass2 12 0 insert p(1535)+Width:DecayModes 0 p(1535)+->Delta++,pi-; insert p(1535)+Width:DecayModes 1 p(1535)+->Delta+,pi0; insert p(1535)+Width:DecayModes 2 p(1535)+->Delta0,pi+; insert p(1535)+Width:DecayModes 3 p(1535)+->n(1440)0,pi+; insert p(1535)+Width:DecayModes 4 p(1535)+->n0,pi+; insert p(1535)+Width:DecayModes 5 p(1535)+->n0,rho+; insert p(1535)+Width:DecayModes 6 p(1535)+->p(1440)+,pi0; insert p(1535)+Width:DecayModes 7 p(1535)+->p+,eta; insert p(1535)+Width:DecayModes 8 p(1535)+->p+,gamma; insert p(1535)+Width:DecayModes 9 p(1535)+->p+,pi+,pi-; insert p(1535)+Width:DecayModes 10 p(1535)+->p+,pi0,pi0; insert p(1535)+Width:DecayModes 11 p(1535)+->p+,pi0; insert p(1535)+Width:DecayModes 12 p(1535)+->p+,rho0; insert p(1535)+Width:InterpolationMasses 0 1.1842873 insert p(1535)+Width:InterpolationMasses 1 1.2029288 insert p(1535)+Width:InterpolationMasses 2 1.2215702 insert p(1535)+Width:InterpolationMasses 3 1.2234216 insert p(1535)+Width:InterpolationMasses 4 1.2252759 insert p(1535)+Width:InterpolationMasses 5 1.227133 insert p(1535)+Width:InterpolationMasses 6 1.2289929 insert p(1535)+Width:InterpolationMasses 7 1.2308556 insert p(1535)+Width:InterpolationMasses 8 1.2327211 insert p(1535)+Width:InterpolationMasses 9 1.2345895 insert p(1535)+Width:InterpolationMasses 10 1.2364607 insert p(1535)+Width:InterpolationMasses 11 1.2383347 insert p(1535)+Width:InterpolationMasses 12 1.2402116 insert p(1535)+Width:InterpolationMasses 13 1.258853 insert p(1535)+Width:InterpolationMasses 14 1.2774945 insert p(1535)+Width:InterpolationMasses 15 1.2961359 insert p(1535)+Width:InterpolationMasses 16 1.3147773 insert p(1535)+Width:InterpolationMasses 17 1.3334187 insert p(1535)+Width:InterpolationMasses 18 1.3520602 insert p(1535)+Width:InterpolationMasses 19 1.3707016 insert p(1535)+Width:InterpolationMasses 20 1.389343 insert p(1535)+Width:InterpolationMasses 21 1.4079844 insert p(1535)+Width:InterpolationMasses 22 1.4266259 insert p(1535)+Width:InterpolationMasses 23 1.4452673 insert p(1535)+Width:InterpolationMasses 24 1.4639087 insert p(1535)+Width:InterpolationMasses 25 1.4825501 insert p(1535)+Width:InterpolationMasses 26 1.5011916 insert p(1535)+Width:InterpolationMasses 27 1.519833 insert p(1535)+Width:InterpolationMasses 28 1.5384744 insert p(1535)+Width:InterpolationMasses 29 1.5571158 insert p(1535)+Width:InterpolationMasses 30 1.5757573 insert p(1535)+Width:InterpolationMasses 31 1.5943987 insert p(1535)+Width:InterpolationMasses 32 1.6130401 insert p(1535)+Width:InterpolationMasses 33 1.6316815 insert p(1535)+Width:InterpolationMasses 34 1.650323 insert p(1535)+Width:InterpolationMasses 35 1.6689644 insert p(1535)+Width:InterpolationMasses 36 1.6876058 insert p(1535)+Width:InterpolationMasses 37 1.7062472 insert p(1535)+Width:InterpolationMasses 38 1.7248887 insert p(1535)+Width:InterpolationMasses 39 1.7435301 insert p(1535)+Width:InterpolationMasses 40 1.7621715 insert p(1535)+Width:InterpolationMasses 41 1.7808129 insert p(1535)+Width:InterpolationMasses 42 1.7994544 insert p(1535)+Width:InterpolationMasses 43 1.8180958 insert p(1535)+Width:InterpolationMasses 44 1.8367372 insert p(1535)+Width:InterpolationMasses 45 1.8553786 insert p(1535)+Width:InterpolationMasses 46 1.8740201 insert p(1535)+Width:InterpolationMasses 47 1.8926615 insert p(1535)+Width:InterpolationMasses 48 1.9113029 insert p(1535)+Width:InterpolationMasses 49 1.9299443 insert p(1535)+Width:InterpolationMasses 50 1.9485858 insert p(1535)+Width:InterpolationMasses 51 1.9672272 insert p(1535)+Width:InterpolationMasses 52 1.9858686 insert p(1535)+Width:InterpolationMasses 53 2.00451 insert p(1535)+Width:InterpolationMasses 54 2.0231515 insert p(1535)+Width:InterpolationMasses 55 2.0417929 insert p(1535)+Width:InterpolationMasses 56 2.0604343 insert p(1535)+Width:InterpolationMasses 57 2.0790757 insert p(1535)+Width:InterpolationMasses 58 2.0977172 insert p(1535)+Width:InterpolationMasses 59 2.1163586 insert p(1535)+Width:InterpolationMasses 60 2.135 insert p(1535)+Width:InterpolationMasses 61 2.1536414 insert p(1535)+Width:InterpolationMasses 62 2.1722828 insert p(1535)+Width:InterpolationMasses 63 1.1795073 insert p(1535)+Width:InterpolationMasses 64 1.1982424 insert p(1535)+Width:InterpolationMasses 65 1.2169776 insert p(1535)+Width:InterpolationMasses 66 1.2188383 insert p(1535)+Width:InterpolationMasses 67 1.2207018 insert p(1535)+Width:InterpolationMasses 68 1.2225681 insert p(1535)+Width:InterpolationMasses 69 1.2244373 insert p(1535)+Width:InterpolationMasses 70 1.2263094 insert p(1535)+Width:InterpolationMasses 71 1.2281843 insert p(1535)+Width:InterpolationMasses 72 1.2300621 insert p(1535)+Width:InterpolationMasses 73 1.2319428 insert p(1535)+Width:InterpolationMasses 74 1.2338263 insert p(1535)+Width:InterpolationMasses 75 1.2357128 insert p(1535)+Width:InterpolationMasses 76 1.2544479 insert p(1535)+Width:InterpolationMasses 77 1.2731831 insert p(1535)+Width:InterpolationMasses 78 1.2919182 insert p(1535)+Width:InterpolationMasses 79 1.3106534 insert p(1535)+Width:InterpolationMasses 80 1.3293885 insert p(1535)+Width:InterpolationMasses 81 1.3481237 insert p(1535)+Width:InterpolationMasses 82 1.3668588 insert p(1535)+Width:InterpolationMasses 83 1.385594 insert p(1535)+Width:InterpolationMasses 84 1.4043291 insert p(1535)+Width:InterpolationMasses 85 1.4230643 insert p(1535)+Width:InterpolationMasses 86 1.4417994 insert p(1535)+Width:InterpolationMasses 87 1.4605346 insert p(1535)+Width:InterpolationMasses 88 1.4792697 insert p(1535)+Width:InterpolationMasses 89 1.4980049 insert p(1535)+Width:InterpolationMasses 90 1.51674 insert p(1535)+Width:InterpolationMasses 91 1.5354752 insert p(1535)+Width:InterpolationMasses 92 1.5542103 insert p(1535)+Width:InterpolationMasses 93 1.5729455 insert p(1535)+Width:InterpolationMasses 94 1.5916806 insert p(1535)+Width:InterpolationMasses 95 1.6104158 insert p(1535)+Width:InterpolationMasses 96 1.6291509 insert p(1535)+Width:InterpolationMasses 97 1.6478861 insert p(1535)+Width:InterpolationMasses 98 1.6666212 insert p(1535)+Width:InterpolationMasses 99 1.6853564 insert p(1535)+Width:InterpolationMasses 100 1.7040915 insert p(1535)+Width:InterpolationMasses 101 1.7228267 insert p(1535)+Width:InterpolationMasses 102 1.7415618 insert p(1535)+Width:InterpolationMasses 103 1.760297 insert p(1535)+Width:InterpolationMasses 104 1.7790321 insert p(1535)+Width:InterpolationMasses 105 1.7977673 insert p(1535)+Width:InterpolationMasses 106 1.8165024 insert p(1535)+Width:InterpolationMasses 107 1.8352376 insert p(1535)+Width:InterpolationMasses 108 1.8539727 insert p(1535)+Width:InterpolationMasses 109 1.8727079 insert p(1535)+Width:InterpolationMasses 110 1.891443 insert p(1535)+Width:InterpolationMasses 111 1.9101782 insert p(1535)+Width:InterpolationMasses 112 1.9289133 insert p(1535)+Width:InterpolationMasses 113 1.9476485 insert p(1535)+Width:InterpolationMasses 114 1.9663836 insert p(1535)+Width:InterpolationMasses 115 1.9851188 insert p(1535)+Width:InterpolationMasses 116 2.0038539 insert p(1535)+Width:InterpolationMasses 117 2.0225891 insert p(1535)+Width:InterpolationMasses 118 2.0413242 insert p(1535)+Width:InterpolationMasses 119 2.0600594 insert p(1535)+Width:InterpolationMasses 120 2.0787945 insert p(1535)+Width:InterpolationMasses 121 2.0975297 insert p(1535)+Width:InterpolationMasses 122 2.1162648 insert p(1535)+Width:InterpolationMasses 123 2.135 insert p(1535)+Width:InterpolationMasses 124 2.1537352 insert p(1535)+Width:InterpolationMasses 125 2.1724703 insert p(1535)+Width:InterpolationMasses 126 1.1842873 insert p(1535)+Width:InterpolationMasses 127 1.2029288 insert p(1535)+Width:InterpolationMasses 128 1.2215702 insert p(1535)+Width:InterpolationMasses 129 1.2234216 insert p(1535)+Width:InterpolationMasses 130 1.2252759 insert p(1535)+Width:InterpolationMasses 131 1.227133 insert p(1535)+Width:InterpolationMasses 132 1.2289929 insert p(1535)+Width:InterpolationMasses 133 1.2308556 insert p(1535)+Width:InterpolationMasses 134 1.2327211 insert p(1535)+Width:InterpolationMasses 135 1.2345895 insert p(1535)+Width:InterpolationMasses 136 1.2364607 insert p(1535)+Width:InterpolationMasses 137 1.2383347 insert p(1535)+Width:InterpolationMasses 138 1.2402116 insert p(1535)+Width:InterpolationMasses 139 1.258853 insert p(1535)+Width:InterpolationMasses 140 1.2774945 insert p(1535)+Width:InterpolationMasses 141 1.2961359 insert p(1535)+Width:InterpolationMasses 142 1.3147773 insert p(1535)+Width:InterpolationMasses 143 1.3334187 insert p(1535)+Width:InterpolationMasses 144 1.3520602 insert p(1535)+Width:InterpolationMasses 145 1.3707016 insert p(1535)+Width:InterpolationMasses 146 1.389343 insert p(1535)+Width:InterpolationMasses 147 1.4079844 insert p(1535)+Width:InterpolationMasses 148 1.4266259 insert p(1535)+Width:InterpolationMasses 149 1.4452673 insert p(1535)+Width:InterpolationMasses 150 1.4639087 insert p(1535)+Width:InterpolationMasses 151 1.4825501 insert p(1535)+Width:InterpolationMasses 152 1.5011916 insert p(1535)+Width:InterpolationMasses 153 1.519833 insert p(1535)+Width:InterpolationMasses 154 1.5384744 insert p(1535)+Width:InterpolationMasses 155 1.5571158 insert p(1535)+Width:InterpolationMasses 156 1.5757573 insert p(1535)+Width:InterpolationMasses 157 1.5943987 insert p(1535)+Width:InterpolationMasses 158 1.6130401 insert p(1535)+Width:InterpolationMasses 159 1.6316815 insert p(1535)+Width:InterpolationMasses 160 1.650323 insert p(1535)+Width:InterpolationMasses 161 1.6689644 insert p(1535)+Width:InterpolationMasses 162 1.6876058 insert p(1535)+Width:InterpolationMasses 163 1.7062472 insert p(1535)+Width:InterpolationMasses 164 1.7248887 insert p(1535)+Width:InterpolationMasses 165 1.7435301 insert p(1535)+Width:InterpolationMasses 166 1.7621715 insert p(1535)+Width:InterpolationMasses 167 1.7808129 insert p(1535)+Width:InterpolationMasses 168 1.7994544 insert p(1535)+Width:InterpolationMasses 169 1.8180958 insert p(1535)+Width:InterpolationMasses 170 1.8367372 insert p(1535)+Width:InterpolationMasses 171 1.8553786 insert p(1535)+Width:InterpolationMasses 172 1.8740201 insert p(1535)+Width:InterpolationMasses 173 1.8926615 insert p(1535)+Width:InterpolationMasses 174 1.9113029 insert p(1535)+Width:InterpolationMasses 175 1.9299443 insert p(1535)+Width:InterpolationMasses 176 1.9485858 insert p(1535)+Width:InterpolationMasses 177 1.9672272 insert p(1535)+Width:InterpolationMasses 178 1.9858686 insert p(1535)+Width:InterpolationMasses 179 2.00451 insert p(1535)+Width:InterpolationMasses 180 2.0231515 insert p(1535)+Width:InterpolationMasses 181 2.0417929 insert p(1535)+Width:InterpolationMasses 182 2.0604343 insert p(1535)+Width:InterpolationMasses 183 2.0790757 insert p(1535)+Width:InterpolationMasses 184 2.0977172 insert p(1535)+Width:InterpolationMasses 185 2.1163586 insert p(1535)+Width:InterpolationMasses 186 2.135 insert p(1535)+Width:InterpolationMasses 187 2.1536414 insert p(1535)+Width:InterpolationMasses 188 2.1722828 insert p(1535)+Width:InterpolationMasses 189 1.2446547 insert p(1535)+Width:InterpolationMasses 190 1.2621124 insert p(1535)+Width:InterpolationMasses 191 1.2795702 insert p(1535)+Width:InterpolationMasses 192 1.2813053 insert p(1535)+Width:InterpolationMasses 193 1.2830428 insert p(1535)+Width:InterpolationMasses 194 1.2847827 insert p(1535)+Width:InterpolationMasses 195 1.2865249 insert p(1535)+Width:InterpolationMasses 196 1.2882695 insert p(1535)+Width:InterpolationMasses 197 1.2900164 insert p(1535)+Width:InterpolationMasses 198 1.2917657 insert p(1535)+Width:InterpolationMasses 199 1.2935174 insert p(1535)+Width:InterpolationMasses 200 1.2952715 insert p(1535)+Width:InterpolationMasses 201 1.2970279 insert p(1535)+Width:InterpolationMasses 202 1.3144857 insert p(1535)+Width:InterpolationMasses 203 1.3319434 insert p(1535)+Width:InterpolationMasses 204 1.3494012 insert p(1535)+Width:InterpolationMasses 205 1.3668589 insert p(1535)+Width:InterpolationMasses 206 1.3843167 insert p(1535)+Width:InterpolationMasses 207 1.4017744 insert p(1535)+Width:InterpolationMasses 208 1.4192322 insert p(1535)+Width:InterpolationMasses 209 1.4366899 insert p(1535)+Width:InterpolationMasses 210 1.4541477 insert p(1535)+Width:InterpolationMasses 211 1.4716054 insert p(1535)+Width:InterpolationMasses 212 1.4890632 insert p(1535)+Width:InterpolationMasses 213 1.5065209 insert p(1535)+Width:InterpolationMasses 214 1.5239787 insert p(1535)+Width:InterpolationMasses 215 1.5414365 insert p(1535)+Width:InterpolationMasses 216 1.5588942 insert p(1535)+Width:InterpolationMasses 217 1.576352 insert p(1535)+Width:InterpolationMasses 218 1.5938097 insert p(1535)+Width:InterpolationMasses 219 1.6112675 insert p(1535)+Width:InterpolationMasses 220 1.6287252 insert p(1535)+Width:InterpolationMasses 221 1.646183 insert p(1535)+Width:InterpolationMasses 222 1.6636407 insert p(1535)+Width:InterpolationMasses 223 1.6810985 insert p(1535)+Width:InterpolationMasses 224 1.6985562 insert p(1535)+Width:InterpolationMasses 225 1.716014 insert p(1535)+Width:InterpolationMasses 226 1.7334717 insert p(1535)+Width:InterpolationMasses 227 1.7509295 insert p(1535)+Width:InterpolationMasses 228 1.7683872 insert p(1535)+Width:InterpolationMasses 229 1.785845 insert p(1535)+Width:InterpolationMasses 230 1.8033027 insert p(1535)+Width:InterpolationMasses 231 1.8207605 insert p(1535)+Width:InterpolationMasses 232 1.8382182 insert p(1535)+Width:InterpolationMasses 233 1.855676 insert p(1535)+Width:InterpolationMasses 234 1.8731337 insert p(1535)+Width:InterpolationMasses 235 1.8905915 insert p(1535)+Width:InterpolationMasses 236 1.9080492 insert p(1535)+Width:InterpolationMasses 237 1.925507 insert p(1535)+Width:InterpolationMasses 238 1.9429647 insert p(1535)+Width:InterpolationMasses 239 1.9604225 insert p(1535)+Width:InterpolationMasses 240 1.9778802 insert p(1535)+Width:InterpolationMasses 241 1.995338 insert p(1535)+Width:InterpolationMasses 242 2.0127957 insert p(1535)+Width:InterpolationMasses 243 2.0302535 insert p(1535)+Width:InterpolationMasses 244 2.0477112 insert p(1535)+Width:InterpolationMasses 245 2.065169 insert p(1535)+Width:InterpolationMasses 246 2.0826267 insert p(1535)+Width:InterpolationMasses 247 2.1000845 insert p(1535)+Width:InterpolationMasses 248 2.1175422 insert p(1535)+Width:InterpolationMasses 249 2.135 insert p(1535)+Width:InterpolationMasses 250 2.1524578 insert p(1535)+Width:InterpolationMasses 251 2.1699155 insert p(1535)+Width:InterpolationMasses 252 1.2398746 insert p(1535)+Width:InterpolationMasses 253 1.2574261 insert p(1535)+Width:InterpolationMasses 254 1.2749776 insert p(1535)+Width:InterpolationMasses 255 1.276722 insert p(1535)+Width:InterpolationMasses 256 1.2784687 insert p(1535)+Width:InterpolationMasses 257 1.2802179 insert p(1535)+Width:InterpolationMasses 258 1.2819694 insert p(1535)+Width:InterpolationMasses 259 1.2837233 insert p(1535)+Width:InterpolationMasses 260 1.2854797 insert p(1535)+Width:InterpolationMasses 261 1.2872384 insert p(1535)+Width:InterpolationMasses 262 1.2889996 insert p(1535)+Width:InterpolationMasses 263 1.2907631 insert p(1535)+Width:InterpolationMasses 264 1.2925291 insert p(1535)+Width:InterpolationMasses 265 1.3100806 insert p(1535)+Width:InterpolationMasses 266 1.327632 insert p(1535)+Width:InterpolationMasses 267 1.3451835 insert p(1535)+Width:InterpolationMasses 268 1.362735 insert p(1535)+Width:InterpolationMasses 269 1.3802865 insert p(1535)+Width:InterpolationMasses 270 1.3978379 insert p(1535)+Width:InterpolationMasses 271 1.4153894 insert p(1535)+Width:InterpolationMasses 272 1.4329409 insert p(1535)+Width:InterpolationMasses 273 1.4504924 insert p(1535)+Width:InterpolationMasses 274 1.4680439 insert p(1535)+Width:InterpolationMasses 275 1.4855953 insert p(1535)+Width:InterpolationMasses 276 1.5031468 insert p(1535)+Width:InterpolationMasses 277 1.5206983 insert p(1535)+Width:InterpolationMasses 278 1.5382498 insert p(1535)+Width:InterpolationMasses 279 1.5558012 insert p(1535)+Width:InterpolationMasses 280 1.5733527 insert p(1535)+Width:InterpolationMasses 281 1.5909042 insert p(1535)+Width:InterpolationMasses 282 1.6084557 insert p(1535)+Width:InterpolationMasses 283 1.6260072 insert p(1535)+Width:InterpolationMasses 284 1.6435586 insert p(1535)+Width:InterpolationMasses 285 1.6611101 insert p(1535)+Width:InterpolationMasses 286 1.6786616 insert p(1535)+Width:InterpolationMasses 287 1.6962131 insert p(1535)+Width:InterpolationMasses 288 1.7137645 insert p(1535)+Width:InterpolationMasses 289 1.731316 insert p(1535)+Width:InterpolationMasses 290 1.7488675 insert p(1535)+Width:InterpolationMasses 291 1.766419 insert p(1535)+Width:InterpolationMasses 292 1.7839704 insert p(1535)+Width:InterpolationMasses 293 1.8015219 insert p(1535)+Width:InterpolationMasses 294 1.8190734 insert p(1535)+Width:InterpolationMasses 295 1.8366249 insert p(1535)+Width:InterpolationMasses 296 1.8541764 insert p(1535)+Width:InterpolationMasses 297 1.8717278 insert p(1535)+Width:InterpolationMasses 298 1.8892793 insert p(1535)+Width:InterpolationMasses 299 1.9068308 insert p(1535)+Width:InterpolationMasses 300 1.9243823 insert p(1535)+Width:InterpolationMasses 301 1.9419337 insert p(1535)+Width:InterpolationMasses 302 1.9594852 insert p(1535)+Width:InterpolationMasses 303 1.9770367 insert p(1535)+Width:InterpolationMasses 304 1.9945882 insert p(1535)+Width:InterpolationMasses 305 2.0121397 insert p(1535)+Width:InterpolationMasses 306 2.0296911 insert p(1535)+Width:InterpolationMasses 307 2.0472426 insert p(1535)+Width:InterpolationMasses 308 2.0647941 insert p(1535)+Width:InterpolationMasses 309 2.0823456 insert p(1535)+Width:InterpolationMasses 310 2.099897 insert p(1535)+Width:InterpolationMasses 311 2.1174485 insert p(1535)+Width:InterpolationMasses 312 2.135 insert p(1535)+Width:InterpolationMasses 313 2.1525515 insert p(1535)+Width:InterpolationMasses 314 2.170103 insert p(1535)+Width:InterpolationMasses 315 1.4592698 insert p(1535)+Width:InterpolationMasses 316 1.4725194 insert p(1535)+Width:InterpolationMasses 317 1.485769 insert p(1535)+Width:InterpolationMasses 318 1.4870887 insert p(1535)+Width:InterpolationMasses 319 1.4884096 insert p(1535)+Width:InterpolationMasses 320 1.4897316 insert p(1535)+Width:InterpolationMasses 321 1.4910548 insert p(1535)+Width:InterpolationMasses 322 1.4923791 insert p(1535)+Width:InterpolationMasses 323 1.4937047 insert p(1535)+Width:InterpolationMasses 324 1.4950314 insert p(1535)+Width:InterpolationMasses 325 1.4963593 insert p(1535)+Width:InterpolationMasses 326 1.4976884 insert p(1535)+Width:InterpolationMasses 327 1.4990186 insert p(1535)+Width:InterpolationMasses 328 1.5122683 insert p(1535)+Width:InterpolationMasses 329 1.5255179 insert p(1535)+Width:InterpolationMasses 330 1.5387675 insert p(1535)+Width:InterpolationMasses 331 1.5520171 insert p(1535)+Width:InterpolationMasses 332 1.5652667 insert p(1535)+Width:InterpolationMasses 333 1.5785163 insert p(1535)+Width:InterpolationMasses 334 1.5917659 insert p(1535)+Width:InterpolationMasses 335 1.6050155 insert p(1535)+Width:InterpolationMasses 336 1.6182651 insert p(1535)+Width:InterpolationMasses 337 1.6315148 insert p(1535)+Width:InterpolationMasses 338 1.6447644 insert p(1535)+Width:InterpolationMasses 339 1.658014 insert p(1535)+Width:InterpolationMasses 340 1.6712636 insert p(1535)+Width:InterpolationMasses 341 1.6845132 insert p(1535)+Width:InterpolationMasses 342 1.6977628 insert p(1535)+Width:InterpolationMasses 343 1.7110124 insert p(1535)+Width:InterpolationMasses 344 1.724262 insert p(1535)+Width:InterpolationMasses 345 1.7375117 insert p(1535)+Width:InterpolationMasses 346 1.7507613 insert p(1535)+Width:InterpolationMasses 347 1.7640109 insert p(1535)+Width:InterpolationMasses 348 1.7772605 insert p(1535)+Width:InterpolationMasses 349 1.7905101 insert p(1535)+Width:InterpolationMasses 350 1.8037597 insert p(1535)+Width:InterpolationMasses 351 1.8170093 insert p(1535)+Width:InterpolationMasses 352 1.8302589 insert p(1535)+Width:InterpolationMasses 353 1.8435085 insert p(1535)+Width:InterpolationMasses 354 1.8567582 insert p(1535)+Width:InterpolationMasses 355 1.8700078 insert p(1535)+Width:InterpolationMasses 356 1.8832574 insert p(1535)+Width:InterpolationMasses 357 1.896507 insert p(1535)+Width:InterpolationMasses 358 1.9097566 insert p(1535)+Width:InterpolationMasses 359 1.9230062 insert p(1535)+Width:InterpolationMasses 360 1.9362558 insert p(1535)+Width:InterpolationMasses 361 1.9495054 insert p(1535)+Width:InterpolationMasses 362 1.962755 insert p(1535)+Width:InterpolationMasses 363 1.9760047 insert p(1535)+Width:InterpolationMasses 364 1.9892543 insert p(1535)+Width:InterpolationMasses 365 2.0025039 insert p(1535)+Width:InterpolationMasses 366 2.0157535 insert p(1535)+Width:InterpolationMasses 367 2.0290031 insert p(1535)+Width:InterpolationMasses 368 2.0422527 insert p(1535)+Width:InterpolationMasses 369 2.0555023 insert p(1535)+Width:InterpolationMasses 370 2.0687519 insert p(1535)+Width:InterpolationMasses 371 2.0820016 insert p(1535)+Width:InterpolationMasses 372 2.0952512 insert p(1535)+Width:InterpolationMasses 373 2.1085008 insert p(1535)+Width:InterpolationMasses 374 2.1217504 insert p(1535)+Width:InterpolationMasses 375 2.135 insert p(1535)+Width:InterpolationMasses 376 2.1482496 insert p(1535)+Width:InterpolationMasses 377 2.1614992 insert p(1535)+Width:InterpolationWidths 0 0 insert p(1535)+Width:InterpolationWidths 1 0 insert p(1535)+Width:InterpolationWidths 2 0 insert p(1535)+Width:InterpolationWidths 3 1.0411412e-12 insert p(1535)+Width:InterpolationWidths 4 7.0939396e-12 insert p(1535)+Width:InterpolationWidths 5 2.3236831e-11 insert p(1535)+Width:InterpolationWidths 6 5.6044872e-11 insert p(1535)+Width:InterpolationWidths 7 1.1386955e-10 insert p(1535)+Width:InterpolationWidths 8 2.070598e-10 insert p(1535)+Width:InterpolationWidths 9 3.4818372e-10 insert p(1535)+Width:InterpolationWidths 10 5.5226647e-10 insert p(1535)+Width:InterpolationWidths 11 8.3704383e-10 insert p(1535)+Width:InterpolationWidths 12 1.2232377e-09 insert p(1535)+Width:InterpolationWidths 13 1.7488958e-08 insert p(1535)+Width:InterpolationWidths 14 9.8843904e-08 insert p(1535)+Width:InterpolationWidths 15 3.7725698e-07 insert p(1535)+Width:InterpolationWidths 16 1.1659609e-06 insert p(1535)+Width:InterpolationWidths 17 3.16228e-06 insert p(1535)+Width:InterpolationWidths 18 7.7199668e-06 insert p(1535)+Width:InterpolationWidths 19 1.6764334e-05 insert p(1535)+Width:InterpolationWidths 20 3.2135677e-05 insert p(1535)+Width:InterpolationWidths 21 5.5263196e-05 insert p(1535)+Width:InterpolationWidths 22 8.7329533e-05 insert p(1535)+Width:InterpolationWidths 23 0.00012943421 insert p(1535)+Width:InterpolationWidths 24 0.00018266214 insert p(1535)+Width:InterpolationWidths 25 0.00024810741 insert p(1535)+Width:InterpolationWidths 26 0.00032688115 insert p(1535)+Width:InterpolationWidths 27 0.00042011409 insert p(1535)+Width:InterpolationWidths 28 0.00052895722 insert p(1535)+Width:InterpolationWidths 29 0.00065458196 insert p(1535)+Width:InterpolationWidths 30 0.00079818017 insert p(1535)+Width:InterpolationWidths 31 0.00096096406 insert p(1535)+Width:InterpolationWidths 32 0.0011441664 insert p(1535)+Width:InterpolationWidths 33 0.0013490403 insert p(1535)+Width:InterpolationWidths 34 0.0015768598 insert p(1535)+Width:InterpolationWidths 35 0.0018289198 insert p(1535)+Width:InterpolationWidths 36 0.0021065363 insert p(1535)+Width:InterpolationWidths 37 0.0024110467 insert p(1535)+Width:InterpolationWidths 38 0.00274381 insert p(1535)+Width:InterpolationWidths 39 0.0031062097 insert p(1535)+Width:InterpolationWidths 40 0.0034996446 insert p(1535)+Width:InterpolationWidths 41 0.0039255427 insert p(1535)+Width:InterpolationWidths 42 0.0043853524 insert p(1535)+Width:InterpolationWidths 43 0.0048805458 insert p(1535)+Width:InterpolationWidths 44 0.0054126181 insert p(1535)+Width:InterpolationWidths 45 0.0059830883 insert p(1535)+Width:InterpolationWidths 46 0.0065934997 insert p(1535)+Width:InterpolationWidths 47 0.0072454197 insert p(1535)+Width:InterpolationWidths 48 0.0079404405 insert p(1535)+Width:InterpolationWidths 49 0.0086801795 insert p(1535)+Width:InterpolationWidths 50 0.0094662789 insert p(1535)+Width:InterpolationWidths 51 0.010300407 insert p(1535)+Width:InterpolationWidths 52 0.011184243 insert p(1535)+Width:InterpolationWidths 53 0.01211942 insert p(1535)+Width:InterpolationWidths 54 0.013107609 insert p(1535)+Width:InterpolationWidths 55 0.014150514 insert p(1535)+Width:InterpolationWidths 56 0.015249863 insert p(1535)+Width:InterpolationWidths 57 0.016407412 insert p(1535)+Width:InterpolationWidths 58 0.017624938 insert p(1535)+Width:InterpolationWidths 59 0.018904245 insert p(1535)+Width:InterpolationWidths 60 0.020247162 insert p(1535)+Width:InterpolationWidths 61 0.021655541 insert p(1535)+Width:InterpolationWidths 62 0.02313126 insert p(1535)+Width:InterpolationWidths 63 0 insert p(1535)+Width:InterpolationWidths 64 0 insert p(1535)+Width:InterpolationWidths 65 0 insert p(1535)+Width:InterpolationWidths 66 1.317741e-12 insert p(1535)+Width:InterpolationWidths 67 8.4125085e-12 insert p(1535)+Width:InterpolationWidths 68 2.6061046e-11 insert p(1535)+Width:InterpolationWidths 69 5.9910462e-11 insert p(1535)+Width:InterpolationWidths 70 1.1676769e-10 insert p(1535)+Width:InterpolationWidths 71 2.0477666e-10 insert p(1535)+Width:InterpolationWidths 72 3.3358057e-10 insert p(1535)+Width:InterpolationWidths 73 5.1448704e-10 insert p(1535)+Width:InterpolationWidths 74 7.6064258e-10 insert p(1535)+Width:InterpolationWidths 75 1.0872194e-09 insert p(1535)+Width:InterpolationWidths 76 1.3607439e-08 insert p(1535)+Width:InterpolationWidths 77 7.2373232e-08 insert p(1535)+Width:InterpolationWidths 78 2.6705489e-07 insert p(1535)+Width:InterpolationWidths 79 8.0818693e-07 insert p(1535)+Width:InterpolationWidths 80 2.1609395e-06 insert p(1535)+Width:InterpolationWidths 81 5.220327e-06 insert p(1535)+Width:InterpolationWidths 82 1.1246301e-05 insert p(1535)+Width:InterpolationWidths 83 2.1439689e-05 insert p(1535)+Width:InterpolationWidths 84 3.6743444e-05 insert p(1535)+Width:InterpolationWidths 85 5.7949195e-05 insert p(1535)+Width:InterpolationWidths 86 8.5798787e-05 insert p(1535)+Width:InterpolationWidths 87 0.00012102645 insert p(1535)+Width:InterpolationWidths 88 0.00016437336 insert p(1535)+Width:InterpolationWidths 89 0.00021659246 insert p(1535)+Width:InterpolationWidths 90 0.00027845001 insert p(1535)+Width:InterpolationWidths 91 0.00035072603 insert p(1535)+Width:InterpolationWidths 92 0.00043421433 insert p(1535)+Width:InterpolationWidths 93 0.00052972258 insert p(1535)+Width:InterpolationWidths 94 0.00063807227 insert p(1535)+Width:InterpolationWidths 95 0.00076009879 insert p(1535)+Width:InterpolationWidths 96 0.00089665149 insert p(1535)+Width:InterpolationWidths 97 0.0010485938 insert p(1535)+Width:InterpolationWidths 98 0.0012168034 insert p(1535)+Width:InterpolationWidths 99 0.0014021722 insert p(1535)+Width:InterpolationWidths 100 0.001605607 insert p(1535)+Width:InterpolationWidths 101 0.0018280291 insert p(1535)+Width:InterpolationWidths 102 0.0020703748 insert p(1535)+Width:InterpolationWidths 103 0.0023335975 insert p(1535)+Width:InterpolationWidths 104 0.0026186607 insert p(1535)+Width:InterpolationWidths 105 0.0029265484 insert p(1535)+Width:InterpolationWidths 106 0.0032582588 insert p(1535)+Width:InterpolationWidths 107 0.0036148063 insert p(1535)+Width:InterpolationWidths 108 0.0039972213 insert p(1535)+Width:InterpolationWidths 109 0.0044065507 insert p(1535)+Width:InterpolationWidths 110 0.0048438582 insert p(1535)+Width:InterpolationWidths 111 0.005310224 insert p(1535)+Width:InterpolationWidths 112 0.0058067458 insert p(1535)+Width:InterpolationWidths 113 0.0063345381 insert p(1535)+Width:InterpolationWidths 114 0.0068947332 insert p(1535)+Width:InterpolationWidths 115 0.0074884631 insert p(1535)+Width:InterpolationWidths 116 0.008116836 insert p(1535)+Width:InterpolationWidths 117 0.0087809896 insert p(1535)+Width:InterpolationWidths 118 0.0094820814 insert p(1535)+Width:InterpolationWidths 119 0.010221286 insert p(1535)+Width:InterpolationWidths 120 0.010999796 insert p(1535)+Width:InterpolationWidths 121 0.011818818 insert p(1535)+Width:InterpolationWidths 122 0.012679578 insert p(1535)+Width:InterpolationWidths 123 0.013583317 insert p(1535)+Width:InterpolationWidths 124 0.014531294 insert p(1535)+Width:InterpolationWidths 125 0.015524785 insert p(1535)+Width:InterpolationWidths 126 0 insert p(1535)+Width:InterpolationWidths 127 0 insert p(1535)+Width:InterpolationWidths 128 0 insert p(1535)+Width:InterpolationWidths 129 6.0794287e-13 insert p(1535)+Width:InterpolationWidths 130 3.9206377e-12 insert p(1535)+Width:InterpolationWidths 131 1.2251205e-11 insert p(1535)+Width:InterpolationWidths 132 2.8373899e-11 insert p(1535)+Width:InterpolationWidths 133 5.5658749e-11 insert p(1535)+Width:InterpolationWidths 134 9.815747e-11 insert p(1535)+Width:InterpolationWidths 135 1.6068375e-10 insert p(1535)+Width:InterpolationWidths 136 2.488957e-10 insert p(1535)+Width:InterpolationWidths 137 3.6938331e-10 insert p(1535)+Width:InterpolationWidths 138 5.2976236e-10 insert p(1535)+Width:InterpolationWidths 139 6.7621503e-09 insert p(1535)+Width:InterpolationWidths 140 3.6248005e-08 insert p(1535)+Width:InterpolationWidths 141 1.3420012e-07 insert p(1535)+Width:InterpolationWidths 142 4.0661091e-07 insert p(1535)+Width:InterpolationWidths 143 1.0874576e-06 insert p(1535)+Width:InterpolationWidths 144 2.628309e-06 insert p(1535)+Width:InterpolationWidths 145 5.6699943e-06 insert p(1535)+Width:InterpolationWidths 146 1.082606e-05 insert p(1535)+Width:InterpolationWidths 147 1.8574117e-05 insert p(1535)+Width:InterpolationWidths 148 2.9309597e-05 insert p(1535)+Width:InterpolationWidths 149 4.3400022e-05 insert p(1535)+Width:InterpolationWidths 150 6.1207945e-05 insert p(1535)+Width:InterpolationWidths 151 8.309893e-05 insert p(1535)+Width:InterpolationWidths 152 0.00010944423 insert p(1535)+Width:InterpolationWidths 153 0.00014062162 insert p(1535)+Width:InterpolationWidths 154 0.00017701569 insert p(1535)+Width:InterpolationWidths 155 0.00021901783 insert p(1535)+Width:InterpolationWidths 156 0.00026702628 insert p(1535)+Width:InterpolationWidths 157 0.0003214461 insert p(1535)+Width:InterpolationWidths 158 0.00038268918 insert p(1535)+Width:InterpolationWidths 159 0.00045117432 insert p(1535)+Width:InterpolationWidths 160 0.00052732724 insert p(1535)+Width:InterpolationWidths 161 0.00061158063 insert p(1535)+Width:InterpolationWidths 162 0.00070437429 insert p(1535)+Width:InterpolationWidths 163 0.00080615515 insert p(1535)+Width:InterpolationWidths 164 0.00091737742 insert p(1535)+Width:InterpolationWidths 165 0.0010385026 insert p(1535)+Width:InterpolationWidths 166 0.0011700007 insert p(1535)+Width:InterpolationWidths 167 0.0013123465 insert p(1535)+Width:InterpolationWidths 168 0.0014660248 insert p(1535)+Width:InterpolationWidths 169 0.0016315278 insert p(1535)+Width:InterpolationWidths 170 0.0018093551 insert p(1535)+Width:InterpolationWidths 171 0.0020000144 insert p(1535)+Width:InterpolationWidths 172 0.0022040216 insert p(1535)+Width:InterpolationWidths 173 0.0024219005 insert p(1535)+Width:InterpolationWidths 174 0.0026541834 insert p(1535)+Width:InterpolationWidths 175 0.0029014108 insert p(1535)+Width:InterpolationWidths 176 0.0031641318 insert p(1535)+Width:InterpolationWidths 177 0.0034429038 insert p(1535)+Width:InterpolationWidths 178 0.0037382882 insert p(1535)+Width:InterpolationWidths 179 0.0040508309 insert p(1535)+Width:InterpolationWidths 180 0.0043810903 insert p(1535)+Width:InterpolationWidths 181 0.0047296355 insert p(1535)+Width:InterpolationWidths 182 0.0050970447 insert p(1535)+Width:InterpolationWidths 183 0.0054839042 insert p(1535)+Width:InterpolationWidths 184 0.0058908083 insert p(1535)+Width:InterpolationWidths 185 0.00631836 insert p(1535)+Width:InterpolationWidths 186 0.00676717 insert p(1535)+Width:InterpolationWidths 187 0.0072378578 insert p(1535)+Width:InterpolationWidths 188 0.007731051 insert p(1535)+Width:InterpolationWidths 189 0 insert p(1535)+Width:InterpolationWidths 190 0 insert p(1535)+Width:InterpolationWidths 191 0 insert p(1535)+Width:InterpolationWidths 192 1.2085014e-11 insert p(1535)+Width:InterpolationWidths 193 7.003558e-11 insert p(1535)+Width:InterpolationWidths 194 1.9771462e-10 insert p(1535)+Width:InterpolationWidths 195 4.1578899e-10 insert p(1535)+Width:InterpolationWidths 196 7.4409952e-10 insert p(1535)+Width:InterpolationWidths 197 1.2024388e-09 insert p(1535)+Width:InterpolationWidths 198 1.8109431e-09 insert p(1535)+Width:InterpolationWidths 199 2.5903337e-09 insert p(1535)+Width:InterpolationWidths 200 3.5620867e-09 insert p(1535)+Width:InterpolationWidths 201 4.7485639e-09 insert p(1535)+Width:InterpolationWidths 202 3.3493681e-08 insert p(1535)+Width:InterpolationWidths 203 1.1472706e-07 insert p(1535)+Width:InterpolationWidths 204 2.9203624e-07 insert p(1535)+Width:InterpolationWidths 205 6.4406497e-07 insert p(1535)+Width:InterpolationWidths 206 1.3445209e-06 insert p(1535)+Width:InterpolationWidths 207 2.6325142e-06 insert p(1535)+Width:InterpolationWidths 208 4.8245751e-06 insert p(1535)+Width:InterpolationWidths 209 8.3389659e-06 insert p(1535)+Width:InterpolationWidths 210 1.3809926e-05 insert p(1535)+Width:InterpolationWidths 211 2.2034563e-05 insert p(1535)+Width:InterpolationWidths 212 3.4261239e-05 insert p(1535)+Width:InterpolationWidths 213 5.2062246e-05 insert p(1535)+Width:InterpolationWidths 214 7.7516654e-05 insert p(1535)+Width:InterpolationWidths 215 0.000113108 insert p(1535)+Width:InterpolationWidths 216 0.00016144862 insert p(1535)+Width:InterpolationWidths 217 0.0002249311 insert p(1535)+Width:InterpolationWidths 218 0.00030560283 insert p(1535)+Width:InterpolationWidths 219 0.00040546878 insert p(1535)+Width:InterpolationWidths 220 0.0005262063 insert p(1535)+Width:InterpolationWidths 221 0.00066939732 insert p(1535)+Width:InterpolationWidths 222 0.00083645383 insert p(1535)+Width:InterpolationWidths 223 0.0010288814 insert p(1535)+Width:InterpolationWidths 224 0.0012482764 insert p(1535)+Width:InterpolationWidths 225 0.0014948936 insert p(1535)+Width:InterpolationWidths 226 0.0017712865 insert p(1535)+Width:InterpolationWidths 227 0.0020781669 insert p(1535)+Width:InterpolationWidths 228 0.0024164142 insert p(1535)+Width:InterpolationWidths 229 0.0027875172 insert p(1535)+Width:InterpolationWidths 230 0.0031924179 insert p(1535)+Width:InterpolationWidths 231 0.0036324698 insert p(1535)+Width:InterpolationWidths 232 0.0041081414 insert p(1535)+Width:InterpolationWidths 233 0.0046208675 insert p(1535)+Width:InterpolationWidths 234 0.0051713092 insert p(1535)+Width:InterpolationWidths 235 0.0057611336 insert p(1535)+Width:InterpolationWidths 236 0.0063903808 insert p(1535)+Width:InterpolationWidths 237 0.0070603108 insert p(1535)+Width:InterpolationWidths 238 0.0077712556 insert p(1535)+Width:InterpolationWidths 239 0.0085244604 insert p(1535)+Width:InterpolationWidths 240 0.0093205821 insert p(1535)+Width:InterpolationWidths 241 0.010163194 insert p(1535)+Width:InterpolationWidths 242 0.011049517 insert p(1535)+Width:InterpolationWidths 243 0.01198102 insert p(1535)+Width:InterpolationWidths 244 0.012958288 insert p(1535)+Width:InterpolationWidths 245 0.013982724 insert p(1535)+Width:InterpolationWidths 246 0.01505481 insert p(1535)+Width:InterpolationWidths 247 0.016175725 insert p(1535)+Width:InterpolationWidths 248 0.017345427 insert p(1535)+Width:InterpolationWidths 249 0.0185652 insert p(1535)+Width:InterpolationWidths 250 0.019835002 insert p(1535)+Width:InterpolationWidths 251 0.021158159 insert p(1535)+Width:InterpolationWidths 252 0 insert p(1535)+Width:InterpolationWidths 253 0 insert p(1535)+Width:InterpolationWidths 254 0 insert p(1535)+Width:InterpolationWidths 255 5.8022841e-12 insert p(1535)+Width:InterpolationWidths 256 3.3640001e-11 insert p(1535)+Width:InterpolationWidths 257 9.5007937e-11 insert p(1535)+Width:InterpolationWidths 258 1.9988323e-10 insert p(1535)+Width:InterpolationWidths 259 3.5786163e-10 insert p(1535)+Width:InterpolationWidths 260 5.7853055e-10 insert p(1535)+Width:InterpolationWidths 261 8.7165744e-10 insert p(1535)+Width:InterpolationWidths 262 1.247306e-09 insert p(1535)+Width:InterpolationWidths 263 1.7159184e-09 insert p(1535)+Width:InterpolationWidths 264 2.2883784e-09 insert p(1535)+Width:InterpolationWidths 265 1.6199158e-08 insert p(1535)+Width:InterpolationWidths 266 5.5669616e-08 insert p(1535)+Width:InterpolationWidths 267 1.4214896e-07 insert p(1535)+Width:InterpolationWidths 268 3.1629127e-07 insert p(1535)+Width:InterpolationWidths 269 6.6545793e-07 insert p(1535)+Width:InterpolationWidths 270 1.3067739e-06 insert p(1535)+Width:InterpolationWidths 271 2.3953324e-06 insert p(1535)+Width:InterpolationWidths 272 4.1511623e-06 insert p(1535)+Width:InterpolationWidths 273 6.875736e-06 insert p(1535)+Width:InterpolationWidths 274 1.0984741e-05 insert p(1535)+Width:InterpolationWidths 275 1.7078081e-05 insert p(1535)+Width:InterpolationWidths 276 2.5954167e-05 insert p(1535)+Width:InterpolationWidths 277 3.8708161e-05 insert p(1535)+Width:InterpolationWidths 278 5.6486214e-05 insert p(1535)+Width:InterpolationWidths 279 8.0668835e-05 insert p(1535)+Width:InterpolationWidths 280 0.00011236683 insert p(1535)+Width:InterpolationWidths 281 0.00015267129 insert p(1535)+Width:InterpolationWidths 282 0.00020254323 insert p(1535)+Width:InterpolationWidths 283 0.00026279855 insert p(1535)+Width:InterpolationWidths 284 0.00033423699 insert p(1535)+Width:InterpolationWidths 285 0.00041771702 insert p(1535)+Width:InterpolationWidths 286 0.0005138161 insert p(1535)+Width:InterpolationWidths 287 0.00062328925 insert p(1535)+Width:InterpolationWidths 288 0.00074680768 insert p(1535)+Width:InterpolationWidths 289 0.0008849603 insert p(1535)+Width:InterpolationWidths 290 0.0010384081 insert p(1535)+Width:InterpolationWidths 291 0.0012077746 insert p(1535)+Width:InterpolationWidths 292 0.001393647 insert p(1535)+Width:InterpolationWidths 293 0.0015963682 insert p(1535)+Width:InterpolationWidths 294 0.0018167599 insert p(1535)+Width:InterpolationWidths 295 0.0020553035 insert p(1535)+Width:InterpolationWidths 296 0.0023124545 insert p(1535)+Width:InterpolationWidths 297 0.0025886022 insert p(1535)+Width:InterpolationWidths 298 0.0028844325 insert p(1535)+Width:InterpolationWidths 299 0.003199874 insert p(1535)+Width:InterpolationWidths 300 0.0035366859 insert p(1535)+Width:InterpolationWidths 301 0.0038939705 insert p(1535)+Width:InterpolationWidths 302 0.0042728058 insert p(1535)+Width:InterpolationWidths 303 0.0046729011 insert p(1535)+Width:InterpolationWidths 304 0.0050956209 insert p(1535)+Width:InterpolationWidths 305 0.0055409554 insert p(1535)+Width:InterpolationWidths 306 0.0060090803 insert p(1535)+Width:InterpolationWidths 307 0.0065008484 insert p(1535)+Width:InterpolationWidths 308 0.007016652 insert p(1535)+Width:InterpolationWidths 309 0.0075557984 insert p(1535)+Width:InterpolationWidths 310 0.0081193951 insert p(1535)+Width:InterpolationWidths 311 0.0087080671 insert p(1535)+Width:InterpolationWidths 312 0.0093214955 insert p(1535)+Width:InterpolationWidths 313 0.0099602436 insert p(1535)+Width:InterpolationWidths 314 0.010626077 insert p(1535)+Width:InterpolationWidths 315 0 insert p(1535)+Width:InterpolationWidths 316 0 insert p(1535)+Width:InterpolationWidths 317 0 insert p(1535)+Width:InterpolationWidths 318 0.010861957 insert p(1535)+Width:InterpolationWidths 319 0.015471688 insert p(1535)+Width:InterpolationWidths 320 0.01905351 insert p(1535)+Width:InterpolationWidths 321 0.022113308 insert p(1535)+Width:InterpolationWidths 322 0.024845255 insert p(1535)+Width:InterpolationWidths 323 0.027348284 insert p(1535)+Width:InterpolationWidths 324 0.029680832 insert p(1535)+Width:InterpolationWidths 325 0.031880779 insert p(1535)+Width:InterpolationWidths 326 0.033974307 insert p(1535)+Width:InterpolationWidths 327 0.035980393 insert p(1535)+Width:InterpolationWidths 328 0.05315258 insert p(1535)+Width:InterpolationWidths 329 0.067921116 insert p(1535)+Width:InterpolationWidths 330 0.081747391 insert p(1535)+Width:InterpolationWidths 331 0.095175028 insert p(1535)+Width:InterpolationWidths 332 0.10847341 insert p(1535)+Width:InterpolationWidths 333 0.12179792 insert p(1535)+Width:InterpolationWidths 334 0.13524737 insert p(1535)+Width:InterpolationWidths 335 0.14888905 insert p(1535)+Width:InterpolationWidths 336 0.16277127 insert p(1535)+Width:InterpolationWidths 337 0.17693018 insert p(1535)+Width:InterpolationWidths 338 0.19139377 insert p(1535)+Width:InterpolationWidths 339 0.20618434 insert p(1535)+Width:InterpolationWidths 340 0.22132012 insert p(1535)+Width:InterpolationWidths 341 0.23681634 insert p(1535)+Width:InterpolationWidths 342 0.25268594 insert p(1535)+Width:InterpolationWidths 343 0.26894015 insert p(1535)+Width:InterpolationWidths 344 0.28558883 insert p(1535)+Width:InterpolationWidths 345 0.30264079 insert p(1535)+Width:InterpolationWidths 346 0.32010395 insert p(1535)+Width:InterpolationWidths 347 0.33798556 insert p(1535)+Width:InterpolationWidths 348 0.35629229 insert p(1535)+Width:InterpolationWidths 349 0.37503035 insert p(1535)+Width:InterpolationWidths 350 0.39420553 insert p(1535)+Width:InterpolationWidths 351 0.41382333 insert p(1535)+Width:InterpolationWidths 352 0.43388895 insert p(1535)+Width:InterpolationWidths 353 0.45440736 insert p(1535)+Width:InterpolationWidths 354 0.47538332 insert p(1535)+Width:InterpolationWidths 355 0.49682142 insert p(1535)+Width:InterpolationWidths 356 0.5187261 insert p(1535)+Width:InterpolationWidths 357 0.54110169 insert p(1535)+Width:InterpolationWidths 358 0.56395237 insert p(1535)+Width:InterpolationWidths 359 0.58728224 insert p(1535)+Width:InterpolationWidths 360 0.61109532 insert p(1535)+Width:InterpolationWidths 361 0.63539554 insert p(1535)+Width:InterpolationWidths 362 0.66018677 insert p(1535)+Width:InterpolationWidths 363 0.68547281 insert p(1535)+Width:InterpolationWidths 364 0.71125742 insert p(1535)+Width:InterpolationWidths 365 0.7375443 insert p(1535)+Width:InterpolationWidths 366 0.76433712 insert p(1535)+Width:InterpolationWidths 367 0.79163949 insert p(1535)+Width:InterpolationWidths 368 0.81945501 insert p(1535)+Width:InterpolationWidths 369 0.84778724 insert p(1535)+Width:InterpolationWidths 370 0.8766397 insert p(1535)+Width:InterpolationWidths 371 0.90601592 insert p(1535)+Width:InterpolationWidths 372 0.93591935 insert p(1535)+Width:InterpolationWidths 373 0.96635349 insert p(1535)+Width:InterpolationWidths 374 0.99732176 insert p(1535)+Width:InterpolationWidths 375 1.0288276 insert p(1535)+Width:InterpolationWidths 376 1.0608744 insert p(1535)+Width:InterpolationWidths 377 1.0934656 insert p(1535)+Width:NumberofEntries 0 63 insert p(1535)+Width:NumberofEntries 1 126 insert p(1535)+Width:NumberofEntries 2 189 insert p(1535)+Width:NumberofEntries 3 252 insert p(1535)+Width:NumberofEntries 4 252 insert p(1535)+Width:NumberofEntries 5 252 insert p(1535)+Width:NumberofEntries 6 315 insert p(1535)+Width:NumberofEntries 7 378 insert p(1535)+Width:NumberofEntries 8 378 insert p(1535)+Width:NumberofEntries 9 378 insert p(1535)+Width:NumberofEntries 10 378 insert p(1535)+Width:NumberofEntries 11 378 insert p(1535)+Width:NumberofEntries 12 378 insert p(1535)+Width:BaryonDecayers 0 /Herwig/Decays/SU3OctetDecuplet2 insert p(1535)+Width:ModeLocation 0 0 insert p(1535)+Width:BaryonDecayers 1 /Herwig/Decays/SU3OctetDecuplet2 insert p(1535)+Width:ModeLocation 1 3 insert p(1535)+Width:BaryonDecayers 2 /Herwig/Decays/SU3OctetDecuplet2 insert p(1535)+Width:ModeLocation 2 6 insert p(1535)+Width:BaryonDecayers 3 /Herwig/Decays/SU3Strong4 insert p(1535)+Width:ModeLocation 3 0 insert p(1535)+Width:BaryonDecayers 4 /Herwig/Decays/SU3Strong2 insert p(1535)+Width:ModeLocation 4 0 insert p(1535)+Width:BaryonDecayers 5 NULL insert p(1535)+Width:ModeLocation 5 -1 insert p(1535)+Width:BaryonDecayers 6 /Herwig/Decays/SU3Strong4 insert p(1535)+Width:ModeLocation 6 1 insert p(1535)+Width:BaryonDecayers 7 /Herwig/Decays/SU3Strong2 insert p(1535)+Width:ModeLocation 7 4 insert p(1535)+Width:BaryonDecayers 8 /Herwig/Decays/SU3Gamma2 insert p(1535)+Width:ModeLocation 8 0 insert p(1535)+Width:BaryonDecayers 9 NULL insert p(1535)+Width:ModeLocation 9 -1 insert p(1535)+Width:BaryonDecayers 10 NULL insert p(1535)+Width:ModeLocation 10 -1 insert p(1535)+Width:BaryonDecayers 11 /Herwig/Decays/SU3Strong2 insert p(1535)+Width:ModeLocation 11 1 insert p(1535)+Width:BaryonDecayers 12 NULL insert p(1535)+Width:ModeLocation 12 -1 newdef /Herwig/Particles/p(1535)+:Width_generator p(1535)+Width newdef /Herwig/Particles/pbar(1535):Width_generator p(1535)+Width # create Herwig::BaryonWidthGenerator p(1520)+Width newdef p(1520)+Width:Particle /Herwig/Particles/p(1520)+ newdef p(1520)+Width:Prefactor 1.00661 newdef p(1520)+Width:BRNormalize 1 newdef p(1520)+Width:BRMinimum 0.01 newdef p(1520)+Width:Points 50 newdef p(1520)+Width:InterpolationOrder 1 insert p(1520)+Width:MEtype 0 2 insert p(1520)+Width:MEtype 1 2 insert p(1520)+Width:MEtype 2 2 insert p(1520)+Width:MEtype 3 1 insert p(1520)+Width:MEtype 4 0 insert p(1520)+Width:MEtype 5 2 insert p(1520)+Width:MEtype 6 1 insert p(1520)+Width:MEtype 7 1 insert p(1520)+Width:MEtype 8 0 insert p(1520)+Width:MEcode 0 0 insert p(1520)+Width:MEcode 1 0 insert p(1520)+Width:MEcode 2 0 insert p(1520)+Width:MEcode 3 105 insert p(1520)+Width:MEcode 4 0 insert p(1520)+Width:MEcode 5 0 insert p(1520)+Width:MEcode 6 106 insert p(1520)+Width:MEcode 7 105 insert p(1520)+Width:MEcode 8 0 insert p(1520)+Width:MEcoupling 0 3.16227 insert p(1520)+Width:MEcoupling 1 3.05802 insert p(1520)+Width:MEcoupling 2 3.1499 insert p(1520)+Width:MEcoupling 3 0.651893 insert p(1520)+Width:MEcoupling 4 0.115067 insert p(1520)+Width:MEcoupling 5 0.0326401 insert p(1520)+Width:MEcoupling 6 1.17191 insert p(1520)+Width:MEcoupling 7 0.648353 insert p(1520)+Width:MEcoupling 8 0.057533 insert p(1520)+Width:ModeOn 0 1 insert p(1520)+Width:ModeOn 1 1 insert p(1520)+Width:ModeOn 2 1 insert p(1520)+Width:ModeOn 3 1 insert p(1520)+Width:ModeOn 4 1 insert p(1520)+Width:ModeOn 5 0 insert p(1520)+Width:ModeOn 6 0 insert p(1520)+Width:ModeOn 7 1 insert p(1520)+Width:ModeOn 8 1 insert p(1520)+Width:MinimumMasses 0 1.22157 insert p(1520)+Width:MinimumMasses 1 1.21698 insert p(1520)+Width:MinimumMasses 2 1.22157 insert p(1520)+Width:MinimumMasses 3 1.07914 insert p(1520)+Width:MinimumMasses 4 1.31507 insert p(1520)+Width:MinimumMasses 5 1.48577 insert p(1520)+Width:MinimumMasses 6 0.938272 insert p(1520)+Width:MinimumMasses 7 1.07325 insert p(1520)+Width:MinimumMasses 8 1.31377 insert p(1520)+Width:MEmass1 0 1.232 insert p(1520)+Width:MEmass1 1 1.232 insert p(1520)+Width:MEmass1 2 1.232 insert p(1520)+Width:MEmass1 3 0.939565 insert p(1520)+Width:MEmass1 4 0 insert p(1520)+Width:MEmass1 5 0.938272 insert p(1520)+Width:MEmass1 6 0.938272 insert p(1520)+Width:MEmass1 7 0.938272 insert p(1520)+Width:MEmass1 8 0 insert p(1520)+Width:MEmass2 0 0.13957 insert p(1520)+Width:MEmass2 1 0.134978 insert p(1520)+Width:MEmass2 2 0.13957 insert p(1520)+Width:MEmass2 3 0.13957 insert p(1520)+Width:MEmass2 4 0 insert p(1520)+Width:MEmass2 5 0.54751 insert p(1520)+Width:MEmass2 6 0 insert p(1520)+Width:MEmass2 7 0.134978 insert p(1520)+Width:MEmass2 8 0 insert p(1520)+Width:DecayModes 0 p(1520)+->Delta++,pi-; insert p(1520)+Width:DecayModes 1 p(1520)+->Delta+,pi0; insert p(1520)+Width:DecayModes 2 p(1520)+->Delta0,pi+; insert p(1520)+Width:DecayModes 3 p(1520)+->n0,pi+; insert p(1520)+Width:DecayModes 4 p(1520)+->n0,rho+; insert p(1520)+Width:DecayModes 5 p(1520)+->p+,eta; insert p(1520)+Width:DecayModes 6 p(1520)+->p+,gamma; insert p(1520)+Width:DecayModes 7 p(1520)+->p+,pi0; insert p(1520)+Width:DecayModes 8 p(1520)+->p+,rho0; insert p(1520)+Width:InterpolationMasses 0 1.1848996 insert p(1520)+Width:InterpolationMasses 1 1.2032349 insert p(1520)+Width:InterpolationMasses 2 1.2215702 insert p(1520)+Width:InterpolationMasses 3 1.2233914 insert p(1520)+Width:InterpolationMasses 4 1.2252154 insert p(1520)+Width:InterpolationMasses 5 1.2270421 insert p(1520)+Width:InterpolationMasses 6 1.2288715 insert p(1520)+Width:InterpolationMasses 7 1.2307037 insert p(1520)+Width:InterpolationMasses 8 1.2325386 insert p(1520)+Width:InterpolationMasses 9 1.2343762 insert p(1520)+Width:InterpolationMasses 10 1.2362165 insert p(1520)+Width:InterpolationMasses 11 1.2380596 insert p(1520)+Width:InterpolationMasses 12 1.2399055 insert p(1520)+Width:InterpolationMasses 13 1.2582408 insert p(1520)+Width:InterpolationMasses 14 1.2765761 insert p(1520)+Width:InterpolationMasses 15 1.2949114 insert p(1520)+Width:InterpolationMasses 16 1.3132467 insert p(1520)+Width:InterpolationMasses 17 1.331582 insert p(1520)+Width:InterpolationMasses 18 1.3499173 insert p(1520)+Width:InterpolationMasses 19 1.3682526 insert p(1520)+Width:InterpolationMasses 20 1.3865879 insert p(1520)+Width:InterpolationMasses 21 1.4049232 insert p(1520)+Width:InterpolationMasses 22 1.4232585 insert p(1520)+Width:InterpolationMasses 23 1.4415938 insert p(1520)+Width:InterpolationMasses 24 1.4599291 insert p(1520)+Width:InterpolationMasses 25 1.4782644 insert p(1520)+Width:InterpolationMasses 26 1.4965997 insert p(1520)+Width:InterpolationMasses 27 1.514935 insert p(1520)+Width:InterpolationMasses 28 1.5332703 insert p(1520)+Width:InterpolationMasses 29 1.5516056 insert p(1520)+Width:InterpolationMasses 30 1.5699409 insert p(1520)+Width:InterpolationMasses 31 1.5882762 insert p(1520)+Width:InterpolationMasses 32 1.6066115 insert p(1520)+Width:InterpolationMasses 33 1.6249468 insert p(1520)+Width:InterpolationMasses 34 1.6432821 insert p(1520)+Width:InterpolationMasses 35 1.6616174 insert p(1520)+Width:InterpolationMasses 36 1.6799527 insert p(1520)+Width:InterpolationMasses 37 1.698288 insert p(1520)+Width:InterpolationMasses 38 1.7166233 insert p(1520)+Width:InterpolationMasses 39 1.7349586 insert p(1520)+Width:InterpolationMasses 40 1.753294 insert p(1520)+Width:InterpolationMasses 41 1.7716293 insert p(1520)+Width:InterpolationMasses 42 1.7899646 insert p(1520)+Width:InterpolationMasses 43 1.8082999 insert p(1520)+Width:InterpolationMasses 44 1.8266352 insert p(1520)+Width:InterpolationMasses 45 1.8449705 insert p(1520)+Width:InterpolationMasses 46 1.8633058 insert p(1520)+Width:InterpolationMasses 47 1.8816411 insert p(1520)+Width:InterpolationMasses 48 1.8999764 insert p(1520)+Width:InterpolationMasses 49 1.9183117 insert p(1520)+Width:InterpolationMasses 50 1.936647 insert p(1520)+Width:InterpolationMasses 51 1.9549823 insert p(1520)+Width:InterpolationMasses 52 1.9733176 insert p(1520)+Width:InterpolationMasses 53 1.9916529 insert p(1520)+Width:InterpolationMasses 54 2.0099882 insert p(1520)+Width:InterpolationMasses 55 2.0283235 insert p(1520)+Width:InterpolationMasses 56 2.0466588 insert p(1520)+Width:InterpolationMasses 57 2.0649941 insert p(1520)+Width:InterpolationMasses 58 2.0833294 insert p(1520)+Width:InterpolationMasses 59 2.1016647 insert p(1520)+Width:InterpolationMasses 60 2.12 insert p(1520)+Width:InterpolationMasses 61 2.1383353 insert p(1520)+Width:InterpolationMasses 62 2.1566706 insert p(1520)+Width:InterpolationMasses 63 1.1801195 insert p(1520)+Width:InterpolationMasses 64 1.1985486 insert p(1520)+Width:InterpolationMasses 65 1.2169776 insert p(1520)+Width:InterpolationMasses 66 1.2188081 insert p(1520)+Width:InterpolationMasses 67 1.2206413 insert p(1520)+Width:InterpolationMasses 68 1.2224773 insert p(1520)+Width:InterpolationMasses 69 1.224316 insert p(1520)+Width:InterpolationMasses 70 1.2261575 insert p(1520)+Width:InterpolationMasses 71 1.2280018 insert p(1520)+Width:InterpolationMasses 72 1.2298488 insert p(1520)+Width:InterpolationMasses 73 1.2316986 insert p(1520)+Width:InterpolationMasses 74 1.2335512 insert p(1520)+Width:InterpolationMasses 75 1.2354066 insert p(1520)+Width:InterpolationMasses 76 1.2538357 insert p(1520)+Width:InterpolationMasses 77 1.2722647 insert p(1520)+Width:InterpolationMasses 78 1.2906937 insert p(1520)+Width:InterpolationMasses 79 1.3091227 insert p(1520)+Width:InterpolationMasses 80 1.3275518 insert p(1520)+Width:InterpolationMasses 81 1.3459808 insert p(1520)+Width:InterpolationMasses 82 1.3644098 insert p(1520)+Width:InterpolationMasses 83 1.3828389 insert p(1520)+Width:InterpolationMasses 84 1.4012679 insert p(1520)+Width:InterpolationMasses 85 1.4196969 insert p(1520)+Width:InterpolationMasses 86 1.4381259 insert p(1520)+Width:InterpolationMasses 87 1.456555 insert p(1520)+Width:InterpolationMasses 88 1.474984 insert p(1520)+Width:InterpolationMasses 89 1.493413 insert p(1520)+Width:InterpolationMasses 90 1.5118421 insert p(1520)+Width:InterpolationMasses 91 1.5302711 insert p(1520)+Width:InterpolationMasses 92 1.5487001 insert p(1520)+Width:InterpolationMasses 93 1.5671291 insert p(1520)+Width:InterpolationMasses 94 1.5855582 insert p(1520)+Width:InterpolationMasses 95 1.6039872 insert p(1520)+Width:InterpolationMasses 96 1.6224162 insert p(1520)+Width:InterpolationMasses 97 1.6408453 insert p(1520)+Width:InterpolationMasses 98 1.6592743 insert p(1520)+Width:InterpolationMasses 99 1.6777033 insert p(1520)+Width:InterpolationMasses 100 1.6961323 insert p(1520)+Width:InterpolationMasses 101 1.7145614 insert p(1520)+Width:InterpolationMasses 102 1.7329904 insert p(1520)+Width:InterpolationMasses 103 1.7514194 insert p(1520)+Width:InterpolationMasses 104 1.7698485 insert p(1520)+Width:InterpolationMasses 105 1.7882775 insert p(1520)+Width:InterpolationMasses 106 1.8067065 insert p(1520)+Width:InterpolationMasses 107 1.8251355 insert p(1520)+Width:InterpolationMasses 108 1.8435646 insert p(1520)+Width:InterpolationMasses 109 1.8619936 insert p(1520)+Width:InterpolationMasses 110 1.8804226 insert p(1520)+Width:InterpolationMasses 111 1.8988517 insert p(1520)+Width:InterpolationMasses 112 1.9172807 insert p(1520)+Width:InterpolationMasses 113 1.9357097 insert p(1520)+Width:InterpolationMasses 114 1.9541387 insert p(1520)+Width:InterpolationMasses 115 1.9725678 insert p(1520)+Width:InterpolationMasses 116 1.9909968 insert p(1520)+Width:InterpolationMasses 117 2.0094258 insert p(1520)+Width:InterpolationMasses 118 2.0278549 insert p(1520)+Width:InterpolationMasses 119 2.0462839 insert p(1520)+Width:InterpolationMasses 120 2.0647129 insert p(1520)+Width:InterpolationMasses 121 2.0831419 insert p(1520)+Width:InterpolationMasses 122 2.101571 insert p(1520)+Width:InterpolationMasses 123 2.12 insert p(1520)+Width:InterpolationMasses 124 2.138429 insert p(1520)+Width:InterpolationMasses 125 2.1568581 insert p(1520)+Width:InterpolationMasses 126 1.1848996 insert p(1520)+Width:InterpolationMasses 127 1.2032349 insert p(1520)+Width:InterpolationMasses 128 1.2215702 insert p(1520)+Width:InterpolationMasses 129 1.2233914 insert p(1520)+Width:InterpolationMasses 130 1.2252154 insert p(1520)+Width:InterpolationMasses 131 1.2270421 insert p(1520)+Width:InterpolationMasses 132 1.2288715 insert p(1520)+Width:InterpolationMasses 133 1.2307037 insert p(1520)+Width:InterpolationMasses 134 1.2325386 insert p(1520)+Width:InterpolationMasses 135 1.2343762 insert p(1520)+Width:InterpolationMasses 136 1.2362165 insert p(1520)+Width:InterpolationMasses 137 1.2380596 insert p(1520)+Width:InterpolationMasses 138 1.2399055 insert p(1520)+Width:InterpolationMasses 139 1.2582408 insert p(1520)+Width:InterpolationMasses 140 1.2765761 insert p(1520)+Width:InterpolationMasses 141 1.2949114 insert p(1520)+Width:InterpolationMasses 142 1.3132467 insert p(1520)+Width:InterpolationMasses 143 1.331582 insert p(1520)+Width:InterpolationMasses 144 1.3499173 insert p(1520)+Width:InterpolationMasses 145 1.3682526 insert p(1520)+Width:InterpolationMasses 146 1.3865879 insert p(1520)+Width:InterpolationMasses 147 1.4049232 insert p(1520)+Width:InterpolationMasses 148 1.4232585 insert p(1520)+Width:InterpolationMasses 149 1.4415938 insert p(1520)+Width:InterpolationMasses 150 1.4599291 insert p(1520)+Width:InterpolationMasses 151 1.4782644 insert p(1520)+Width:InterpolationMasses 152 1.4965997 insert p(1520)+Width:InterpolationMasses 153 1.514935 insert p(1520)+Width:InterpolationMasses 154 1.5332703 insert p(1520)+Width:InterpolationMasses 155 1.5516056 insert p(1520)+Width:InterpolationMasses 156 1.5699409 insert p(1520)+Width:InterpolationMasses 157 1.5882762 insert p(1520)+Width:InterpolationMasses 158 1.6066115 insert p(1520)+Width:InterpolationMasses 159 1.6249468 insert p(1520)+Width:InterpolationMasses 160 1.6432821 insert p(1520)+Width:InterpolationMasses 161 1.6616174 insert p(1520)+Width:InterpolationMasses 162 1.6799527 insert p(1520)+Width:InterpolationMasses 163 1.698288 insert p(1520)+Width:InterpolationMasses 164 1.7166233 insert p(1520)+Width:InterpolationMasses 165 1.7349586 insert p(1520)+Width:InterpolationMasses 166 1.753294 insert p(1520)+Width:InterpolationMasses 167 1.7716293 insert p(1520)+Width:InterpolationMasses 168 1.7899646 insert p(1520)+Width:InterpolationMasses 169 1.8082999 insert p(1520)+Width:InterpolationMasses 170 1.8266352 insert p(1520)+Width:InterpolationMasses 171 1.8449705 insert p(1520)+Width:InterpolationMasses 172 1.8633058 insert p(1520)+Width:InterpolationMasses 173 1.8816411 insert p(1520)+Width:InterpolationMasses 174 1.8999764 insert p(1520)+Width:InterpolationMasses 175 1.9183117 insert p(1520)+Width:InterpolationMasses 176 1.936647 insert p(1520)+Width:InterpolationMasses 177 1.9549823 insert p(1520)+Width:InterpolationMasses 178 1.9733176 insert p(1520)+Width:InterpolationMasses 179 1.9916529 insert p(1520)+Width:InterpolationMasses 180 2.0099882 insert p(1520)+Width:InterpolationMasses 181 2.0283235 insert p(1520)+Width:InterpolationMasses 182 2.0466588 insert p(1520)+Width:InterpolationMasses 183 2.0649941 insert p(1520)+Width:InterpolationMasses 184 2.0833294 insert p(1520)+Width:InterpolationMasses 185 2.1016647 insert p(1520)+Width:InterpolationMasses 186 2.12 insert p(1520)+Width:InterpolationMasses 187 2.1383353 insert p(1520)+Width:InterpolationMasses 188 2.1566706 insert p(1520)+Width:InterpolationMasses 189 1.4598821 insert p(1520)+Width:InterpolationMasses 190 1.4728255 insert p(1520)+Width:InterpolationMasses 191 1.485769 insert p(1520)+Width:InterpolationMasses 192 1.4870583 insert p(1520)+Width:InterpolationMasses 193 1.4883488 insert p(1520)+Width:InterpolationMasses 194 1.4896403 insert p(1520)+Width:InterpolationMasses 195 1.490933 insert p(1520)+Width:InterpolationMasses 196 1.4922267 insert p(1520)+Width:InterpolationMasses 197 1.4935216 insert p(1520)+Width:InterpolationMasses 198 1.4948177 insert p(1520)+Width:InterpolationMasses 199 1.4961148 insert p(1520)+Width:InterpolationMasses 200 1.4974131 insert p(1520)+Width:InterpolationMasses 201 1.4987125 insert p(1520)+Width:InterpolationMasses 202 1.511656 insert p(1520)+Width:InterpolationMasses 203 1.5245995 insert p(1520)+Width:InterpolationMasses 204 1.537543 insert p(1520)+Width:InterpolationMasses 205 1.5504865 insert p(1520)+Width:InterpolationMasses 206 1.56343 insert p(1520)+Width:InterpolationMasses 207 1.5763735 insert p(1520)+Width:InterpolationMasses 208 1.5893169 insert p(1520)+Width:InterpolationMasses 209 1.6022604 insert p(1520)+Width:InterpolationMasses 210 1.6152039 insert p(1520)+Width:InterpolationMasses 211 1.6281474 insert p(1520)+Width:InterpolationMasses 212 1.6410909 insert p(1520)+Width:InterpolationMasses 213 1.6540344 insert p(1520)+Width:InterpolationMasses 214 1.6669779 insert p(1520)+Width:InterpolationMasses 215 1.6799214 insert p(1520)+Width:InterpolationMasses 216 1.6928649 insert p(1520)+Width:InterpolationMasses 217 1.7058083 insert p(1520)+Width:InterpolationMasses 218 1.7187518 insert p(1520)+Width:InterpolationMasses 219 1.7316953 insert p(1520)+Width:InterpolationMasses 220 1.7446388 insert p(1520)+Width:InterpolationMasses 221 1.7575823 insert p(1520)+Width:InterpolationMasses 222 1.7705258 insert p(1520)+Width:InterpolationMasses 223 1.7834693 insert p(1520)+Width:InterpolationMasses 224 1.7964128 insert p(1520)+Width:InterpolationMasses 225 1.8093563 insert p(1520)+Width:InterpolationMasses 226 1.8222997 insert p(1520)+Width:InterpolationMasses 227 1.8352432 insert p(1520)+Width:InterpolationMasses 228 1.8481867 insert p(1520)+Width:InterpolationMasses 229 1.8611302 insert p(1520)+Width:InterpolationMasses 230 1.8740737 insert p(1520)+Width:InterpolationMasses 231 1.8870172 insert p(1520)+Width:InterpolationMasses 232 1.8999607 insert p(1520)+Width:InterpolationMasses 233 1.9129042 insert p(1520)+Width:InterpolationMasses 234 1.9258477 insert p(1520)+Width:InterpolationMasses 235 1.9387912 insert p(1520)+Width:InterpolationMasses 236 1.9517346 insert p(1520)+Width:InterpolationMasses 237 1.9646781 insert p(1520)+Width:InterpolationMasses 238 1.9776216 insert p(1520)+Width:InterpolationMasses 239 1.9905651 insert p(1520)+Width:InterpolationMasses 240 2.0035086 insert p(1520)+Width:InterpolationMasses 241 2.0164521 insert p(1520)+Width:InterpolationMasses 242 2.0293956 insert p(1520)+Width:InterpolationMasses 243 2.0423391 insert p(1520)+Width:InterpolationMasses 244 2.0552826 insert p(1520)+Width:InterpolationMasses 245 2.068226 insert p(1520)+Width:InterpolationMasses 246 2.0811695 insert p(1520)+Width:InterpolationMasses 247 2.094113 insert p(1520)+Width:InterpolationMasses 248 2.1070565 insert p(1520)+Width:InterpolationMasses 249 2.12 insert p(1520)+Width:InterpolationMasses 250 2.1329435 insert p(1520)+Width:InterpolationMasses 251 2.145887 insert p(1520)+Width:InterpolationWidths 0 0 insert p(1520)+Width:InterpolationWidths 1 0 insert p(1520)+Width:InterpolationWidths 2 0 insert p(1520)+Width:InterpolationWidths 3 1.2499541e-11 insert p(1520)+Width:InterpolationWidths 4 8.4860921e-11 insert p(1520)+Width:InterpolationWidths 5 2.7709055e-10 insert p(1520)+Width:InterpolationWidths 6 6.6643238e-10 insert p(1520)+Width:InterpolationWidths 7 1.3505895e-09 insert p(1520)+Width:InterpolationWidths 8 2.4502101e-09 insert p(1520)+Width:InterpolationWidths 9 4.1113591e-09 insert p(1520)+Width:InterpolationWidths 10 6.5081609e-09 insert p(1520)+Width:InterpolationWidths 11 9.8456048e-09 insert p(1520)+Width:InterpolationWidths 12 1.4362588e-08 insert p(1520)+Width:InterpolationWidths 13 2.0247629e-07 insert p(1520)+Width:InterpolationWidths 14 1.1311205e-06 insert p(1520)+Width:InterpolationWidths 15 4.2705332e-06 insert p(1520)+Width:InterpolationWidths 16 1.3060787e-05 insert p(1520)+Width:InterpolationWidths 17 3.5086968e-05 insert p(1520)+Width:InterpolationWidths 18 8.5128309e-05 insert p(1520)+Width:InterpolationWidths 19 0.00018460926 insert p(1520)+Width:InterpolationWidths 20 0.00035402931 insert p(1520)+Width:InterpolationWidths 21 0.00060827396 insert p(1520)+Width:InterpolationWidths 22 0.00095834365 insert p(1520)+Width:InterpolationWidths 23 0.0014135435 insert p(1520)+Width:InterpolationWidths 24 0.0019824735 insert p(1520)+Width:InterpolationWidths 25 0.0026733902 insert p(1520)+Width:InterpolationWidths 26 0.0034943378 insert p(1520)+Width:InterpolationWidths 27 0.0044531988 insert p(1520)+Width:InterpolationWidths 28 0.0055577162 insert p(1520)+Width:InterpolationWidths 29 0.0068155059 insert p(1520)+Width:InterpolationWidths 30 0.0082340658 insert p(1520)+Width:InterpolationWidths 31 0.0098207837 insert p(1520)+Width:InterpolationWidths 32 0.011582946 insert p(1520)+Width:InterpolationWidths 33 0.013527745 insert p(1520)+Width:InterpolationWidths 34 0.015662287 insert p(1520)+Width:InterpolationWidths 35 0.017993603 insert p(1520)+Width:InterpolationWidths 36 0.020528651 insert p(1520)+Width:InterpolationWidths 37 0.02327433 insert p(1520)+Width:InterpolationWidths 38 0.026237508 insert p(1520)+Width:InterpolationWidths 39 0.029424941 insert p(1520)+Width:InterpolationWidths 40 0.032843406 insert p(1520)+Width:InterpolationWidths 41 0.03649963 insert p(1520)+Width:InterpolationWidths 42 0.040400312 insert p(1520)+Width:InterpolationWidths 43 0.044552133 insert p(1520)+Width:InterpolationWidths 44 0.04896176 insert p(1520)+Width:InterpolationWidths 45 0.053635853 insert p(1520)+Width:InterpolationWidths 46 0.058581069 insert p(1520)+Width:InterpolationWidths 47 0.063804067 insert p(1520)+Width:InterpolationWidths 48 0.069311517 insert p(1520)+Width:InterpolationWidths 49 0.075110098 insert p(1520)+Width:InterpolationWidths 50 0.081206511 insert p(1520)+Width:InterpolationWidths 51 0.087607475 insert p(1520)+Width:InterpolationWidths 52 0.094319739 insert p(1520)+Width:InterpolationWidths 53 0.1013496 insert p(1520)+Width:InterpolationWidths 54 0.10870277 insert p(1520)+Width:InterpolationWidths 55 0.11638523 insert p(1520)+Width:InterpolationWidths 56 0.12440307 insert p(1520)+Width:InterpolationWidths 57 0.13276244 insert p(1520)+Width:InterpolationWidths 58 0.14144301 insert p(1520)+Width:InterpolationWidths 59 0.15053048 insert p(1520)+Width:InterpolationWidths 60 0.15995161 insert p(1520)+Width:InterpolationWidths 61 0.16973918 insert p(1520)+Width:InterpolationWidths 62 0.17989954 insert p(1520)+Width:InterpolationWidths 63 0 insert p(1520)+Width:InterpolationWidths 64 0 insert p(1520)+Width:InterpolationWidths 65 0 insert p(1520)+Width:InterpolationWidths 66 1.5897722e-11 insert p(1520)+Width:InterpolationWidths 67 1.0120514e-10 insert p(1520)+Width:InterpolationWidths 68 3.1269139e-10 insert p(1520)+Width:InterpolationWidths 69 7.170393e-10 insert p(1520)+Width:InterpolationWidths 70 1.3942531e-09 insert p(1520)+Width:InterpolationWidths 71 2.4396843e-09 insert p(1520)+Width:InterpolationWidths 72 3.9658596e-09 insert p(1520)+Width:InterpolationWidths 73 6.1043275e-09 insert p(1520)+Width:InterpolationWidths 74 9.0075987e-09 insert p(1520)+Width:InterpolationWidths 75 1.2851219e-08 insert p(1520)+Width:InterpolationWidths 76 1.5844621e-07 insert p(1520)+Width:InterpolationWidths 77 8.3236683e-07 insert p(1520)+Width:InterpolationWidths 78 3.0367922e-06 insert p(1520)+Width:InterpolationWidths 79 9.0914337e-06 insert p(1520)+Width:InterpolationWidths 80 2.4073639e-05 insert p(1520)+Width:InterpolationWidths 81 5.7789996e-05 insert p(1520)+Width:InterpolationWidths 82 0.00012430062 insert p(1520)+Width:InterpolationWidths 83 0.00023698461 insert p(1520)+Width:InterpolationWidths 84 0.00040564598 insert p(1520)+Width:InterpolationWidths 85 0.00063767004 insert p(1520)+Width:InterpolationWidths 86 0.00093936369 insert p(1520)+Width:InterpolationWidths 87 0.0013165965 insert p(1520)+Width:InterpolationWidths 88 0.00177501 insert p(1520)+Width:InterpolationWidths 89 0.0023201018 insert p(1520)+Width:InterpolationWidths 90 0.0029572574 insert p(1520)+Width:InterpolationWidths 91 0.0036917649 insert p(1520)+Width:InterpolationWidths 92 0.0045288228 insert p(1520)+Width:InterpolationWidths 93 0.0054735469 insert p(1520)+Width:InterpolationWidths 94 0.0065309762 insert p(1520)+Width:InterpolationWidths 95 0.007706078 insert p(1520)+Width:InterpolationWidths 96 0.0090037545 insert p(1520)+Width:InterpolationWidths 97 0.010428848 insert p(1520)+Width:InterpolationWidths 98 0.011986146 insert p(1520)+Width:InterpolationWidths 99 0.013680389 insert p(1520)+Width:InterpolationWidths 100 0.015516273 insert p(1520)+Width:InterpolationWidths 101 0.017498474 insert p(1520)+Width:InterpolationWidths 102 0.01963159 insert p(1520)+Width:InterpolationWidths 103 0.021920233 insert p(1520)+Width:InterpolationWidths 104 0.024368979 insert p(1520)+Width:InterpolationWidths 105 0.026982388 insert p(1520)+Width:InterpolationWidths 106 0.029765003 insert p(1520)+Width:InterpolationWidths 107 0.032721361 insert p(1520)+Width:InterpolationWidths 108 0.03585599 insert p(1520)+Width:InterpolationWidths 109 0.039173418 insert p(1520)+Width:InterpolationWidths 110 0.042678176 insert p(1520)+Width:InterpolationWidths 111 0.046374797 insert p(1520)+Width:InterpolationWidths 112 0.050267826 insert p(1520)+Width:InterpolationWidths 113 0.054361818 insert p(1520)+Width:InterpolationWidths 114 0.058661342 insert p(1520)+Width:InterpolationWidths 115 0.063170979 insert p(1520)+Width:InterpolationWidths 116 0.06789488 insert p(1520)+Width:InterpolationWidths 117 0.072836981 insert p(1520)+Width:InterpolationWidths 118 0.078001386 insert p(1520)+Width:InterpolationWidths 119 0.083392249 insert p(1520)+Width:InterpolationWidths 120 0.089013748 insert p(1520)+Width:InterpolationWidths 121 0.094870087 insert p(1520)+Width:InterpolationWidths 122 0.10096549 insert p(1520)+Width:InterpolationWidths 123 0.10730422 insert p(1520)+Width:InterpolationWidths 124 0.11389054 insert p(1520)+Width:InterpolationWidths 125 0.12072876 insert p(1520)+Width:InterpolationWidths 126 0 insert p(1520)+Width:InterpolationWidths 127 0 insert p(1520)+Width:InterpolationWidths 128 0 insert p(1520)+Width:InterpolationWidths 129 7.3056949e-12 insert p(1520)+Width:InterpolationWidths 130 4.6976003e-11 insert p(1520)+Width:InterpolationWidths 131 1.4638998e-10 insert p(1520)+Width:InterpolationWidths 132 3.3817912e-10 insert p(1520)+Width:InterpolationWidths 133 6.6180197e-10 insert p(1520)+Width:InterpolationWidths 134 1.1645203e-09 insert p(1520)+Width:InterpolationWidths 135 1.9022985e-09 insert p(1520)+Width:InterpolationWidths 136 2.9407217e-09 insert p(1520)+Width:InterpolationWidths 137 4.355964e-09 insert p(1520)+Width:InterpolationWidths 138 6.2358261e-09 insert p(1520)+Width:InterpolationWidths 139 7.8428084e-08 insert p(1520)+Width:InterpolationWidths 140 4.1532159e-07 insert p(1520)+Width:InterpolationWidths 141 1.5205257e-06 insert p(1520)+Width:InterpolationWidths 142 4.5579744e-06 insert p(1520)+Width:InterpolationWidths 143 1.2072683e-05 insert p(1520)+Width:InterpolationWidths 144 2.899396e-05 insert p(1520)+Width:InterpolationWidths 145 6.2449381e-05 insert p(1520)+Width:InterpolationWidths 146 0.00011926857 insert p(1520)+Width:InterpolationWidths 147 0.00020442322 insert p(1520)+Width:InterpolationWidths 148 0.00032159618 insert p(1520)+Width:InterpolationWidths 149 0.00047389419 insert p(1520)+Width:InterpolationWidths 150 0.00066419247 insert p(1520)+Width:InterpolationWidths 151 0.0008952496 insert p(1520)+Width:InterpolationWidths 152 0.001169753 insert p(1520)+Width:InterpolationWidths 153 0.0014903359 insert p(1520)+Width:InterpolationWidths 154 0.0018595852 insert p(1520)+Width:InterpolationWidths 155 0.0022800453 insert p(1520)+Width:InterpolationWidths 156 0.0027542212 insert p(1520)+Width:InterpolationWidths 157 0.0032845814 insert p(1520)+Width:InterpolationWidths 158 0.0038735607 insert p(1520)+Width:InterpolationWidths 159 0.0045235624 insert p(1520)+Width:InterpolationWidths 160 0.0052369614 insert p(1520)+Width:InterpolationWidths 161 0.0060161071 insert p(1520)+Width:InterpolationWidths 162 0.0068633254 insert p(1520)+Width:InterpolationWidths 163 0.007780922 insert p(1520)+Width:InterpolationWidths 164 0.0087711925 insert p(1520)+Width:InterpolationWidths 165 0.009836395 insert p(1520)+Width:InterpolationWidths 166 0.010978795 insert p(1520)+Width:InterpolationWidths 167 0.012200642 insert p(1520)+Width:InterpolationWidths 168 0.013504174 insert p(1520)+Width:InterpolationWidths 169 0.014891626 insert p(1520)+Width:InterpolationWidths 170 0.016365226 insert p(1520)+Width:InterpolationWidths 171 0.017927202 insert p(1520)+Width:InterpolationWidths 172 0.019579778 insert p(1520)+Width:InterpolationWidths 173 0.021325182 insert p(1520)+Width:InterpolationWidths 174 0.023165643 insert p(1520)+Width:InterpolationWidths 175 0.025103395 insert p(1520)+Width:InterpolationWidths 176 0.027140678 insert p(1520)+Width:InterpolationWidths 177 0.02927974 insert p(1520)+Width:InterpolationWidths 178 0.031522837 insert p(1520)+Width:InterpolationWidths 179 0.033872076 insert p(1520)+Width:InterpolationWidths 180 0.036329361 insert p(1520)+Width:InterpolationWidths 181 0.038896696 insert p(1520)+Width:InterpolationWidths 182 0.041576117 insert p(1520)+Width:InterpolationWidths 183 0.044369676 insert p(1520)+Width:InterpolationWidths 184 0.047279436 insert p(1520)+Width:InterpolationWidths 185 0.050307474 insert p(1520)+Width:InterpolationWidths 186 0.053455878 insert p(1520)+Width:InterpolationWidths 187 0.056726751 insert p(1520)+Width:InterpolationWidths 188 0.06012221 insert p(1520)+Width:InterpolationWidths 189 0 insert p(1520)+Width:InterpolationWidths 190 0 insert p(1520)+Width:InterpolationWidths 191 0 insert p(1520)+Width:InterpolationWidths 192 6.0555439e-05 insert p(1520)+Width:InterpolationWidths 193 0.00017273921 insert p(1520)+Width:InterpolationWidths 194 0.00031842723 insert p(1520)+Width:InterpolationWidths 195 0.00049130393 insert p(1520)+Width:InterpolationWidths 196 0.000687745 insert p(1520)+Width:InterpolationWidths 197 0.00090531931 insert p(1520)+Width:InterpolationWidths 198 0.0011422518 insert p(1520)+Width:InterpolationWidths 199 0.0013971742 insert p(1520)+Width:InterpolationWidths 200 0.0016689917 insert p(1520)+Width:InterpolationWidths 201 0.0019568031 insert p(1520)+Width:InterpolationWidths 202 0.005551667 insert p(1520)+Width:InterpolationWidths 203 0.010225278 insert p(1520)+Width:InterpolationWidths 204 0.015781398 insert p(1520)+Width:InterpolationWidths 205 0.02210818 insert p(1520)+Width:InterpolationWidths 206 0.029131218 insert p(1520)+Width:InterpolationWidths 207 0.036796681 insert p(1520)+Width:InterpolationWidths 208 0.045063492 insert p(1520)+Width:InterpolationWidths 209 0.053899125 insert p(1520)+Width:InterpolationWidths 210 0.063277121 insert p(1520)+Width:InterpolationWidths 211 0.0731755 insert p(1520)+Width:InterpolationWidths 212 0.083575712 insert p(1520)+Width:InterpolationWidths 213 0.094461889 insert p(1520)+Width:InterpolationWidths 214 0.10582032 insert p(1520)+Width:InterpolationWidths 215 0.11763904 insert p(1520)+Width:InterpolationWidths 216 0.12990756 insert p(1520)+Width:InterpolationWidths 217 0.14261659 insert p(1520)+Width:InterpolationWidths 218 0.15575789 insert p(1520)+Width:InterpolationWidths 219 0.1693241 insert p(1520)+Width:InterpolationWidths 220 0.18330863 insert p(1520)+Width:InterpolationWidths 221 0.19770557 insert p(1520)+Width:InterpolationWidths 222 0.21250959 insert p(1520)+Width:InterpolationWidths 223 0.22771588 insert p(1520)+Width:InterpolationWidths 224 0.24332009 insert p(1520)+Width:InterpolationWidths 225 0.2593183 insert p(1520)+Width:InterpolationWidths 226 0.27570694 insert p(1520)+Width:InterpolationWidths 227 0.29248278 insert p(1520)+Width:InterpolationWidths 228 0.30964289 insert p(1520)+Width:InterpolationWidths 229 0.32718463 insert p(1520)+Width:InterpolationWidths 230 0.34510559 insert p(1520)+Width:InterpolationWidths 231 0.36340359 insert p(1520)+Width:InterpolationWidths 232 0.38207668 insert p(1520)+Width:InterpolationWidths 233 0.40112309 insert p(1520)+Width:InterpolationWidths 234 0.42054121 insert p(1520)+Width:InterpolationWidths 235 0.44032962 insert p(1520)+Width:InterpolationWidths 236 0.46048705 insert p(1520)+Width:InterpolationWidths 237 0.48101236 insert p(1520)+Width:InterpolationWidths 238 0.50190453 insert p(1520)+Width:InterpolationWidths 239 0.5231627 insert p(1520)+Width:InterpolationWidths 240 0.54478608 insert p(1520)+Width:InterpolationWidths 241 0.56677403 insert p(1520)+Width:InterpolationWidths 242 0.58912596 insert p(1520)+Width:InterpolationWidths 243 0.61184142 insert p(1520)+Width:InterpolationWidths 244 0.63492002 insert p(1520)+Width:InterpolationWidths 245 0.65836146 insert p(1520)+Width:InterpolationWidths 246 0.68216552 insert p(1520)+Width:InterpolationWidths 247 0.70633205 insert p(1520)+Width:InterpolationWidths 248 0.73086096 insert p(1520)+Width:InterpolationWidths 249 0.75575225 insert p(1520)+Width:InterpolationWidths 250 0.78100595 insert p(1520)+Width:InterpolationWidths 251 0.80662217 insert p(1520)+Width:NumberofEntries 0 63 insert p(1520)+Width:NumberofEntries 1 126 insert p(1520)+Width:NumberofEntries 2 189 insert p(1520)+Width:NumberofEntries 3 189 insert p(1520)+Width:NumberofEntries 4 189 insert p(1520)+Width:NumberofEntries 5 252 insert p(1520)+Width:NumberofEntries 6 252 insert p(1520)+Width:NumberofEntries 7 252 insert p(1520)+Width:NumberofEntries 8 252 insert p(1520)+Width:BaryonDecayers 0 /Herwig/Decays/SU3OctetDecuplet3 insert p(1520)+Width:ModeLocation 0 0 insert p(1520)+Width:BaryonDecayers 1 /Herwig/Decays/SU3OctetDecuplet3 insert p(1520)+Width:ModeLocation 1 3 insert p(1520)+Width:BaryonDecayers 2 /Herwig/Decays/SU3OctetDecuplet3 insert p(1520)+Width:ModeLocation 2 6 insert p(1520)+Width:BaryonDecayers 3 /Herwig/Decays/SU3Strong3 insert p(1520)+Width:ModeLocation 3 0 insert p(1520)+Width:BaryonDecayers 4 NULL insert p(1520)+Width:ModeLocation 4 -1 insert p(1520)+Width:BaryonDecayers 5 /Herwig/Decays/SU3Strong3 insert p(1520)+Width:ModeLocation 5 4 insert p(1520)+Width:BaryonDecayers 6 /Herwig/Decays/SU3Gamma4 insert p(1520)+Width:ModeLocation 6 0 insert p(1520)+Width:BaryonDecayers 7 /Herwig/Decays/SU3Strong3 insert p(1520)+Width:ModeLocation 7 1 insert p(1520)+Width:BaryonDecayers 8 NULL insert p(1520)+Width:ModeLocation 8 -1 newdef /Herwig/Particles/pbar(1520)-:Width_generator p(1520)+Width newdef /Herwig/Particles/p(1520)+:Width_generator p(1520)+Width # create Herwig::BaryonWidthGenerator n(1520)0Width newdef n(1520)0Width:Particle /Herwig/Particles/n(1520)0 newdef n(1520)0Width:Prefactor 1.00564 newdef n(1520)0Width:BRNormalize 1 newdef n(1520)0Width:BRMinimum 0.01 newdef n(1520)0Width:Points 50 newdef n(1520)0Width:InterpolationOrder 1 insert n(1520)0Width:MEtype 0 2 insert n(1520)0Width:MEtype 1 2 insert n(1520)0Width:MEtype 2 2 insert n(1520)0Width:MEtype 3 2 insert n(1520)0Width:MEtype 4 1 insert n(1520)0Width:MEtype 5 1 insert n(1520)0Width:MEtype 6 0 insert n(1520)0Width:MEtype 7 1 insert n(1520)0Width:MEtype 8 0 insert n(1520)0Width:MEcode 0 0 insert n(1520)0Width:MEcode 1 0 insert n(1520)0Width:MEcode 2 0 insert n(1520)0Width:MEcode 3 0 insert n(1520)0Width:MEcode 4 106 insert n(1520)0Width:MEcode 5 105 insert n(1520)0Width:MEcode 6 0 insert n(1520)0Width:MEcode 7 105 insert n(1520)0Width:MEcode 8 0 insert n(1520)0Width:MEcoupling 0 3.14708 insert n(1520)0Width:MEcoupling 1 3.17134 insert n(1520)0Width:MEcoupling 2 3.06073 insert n(1520)0Width:MEcoupling 3 0.0345458 insert n(1520)0Width:MEcoupling 4 1.16922 insert n(1520)0Width:MEcoupling 5 0.649788 insert n(1520)0Width:MEcoupling 6 0.05785 insert n(1520)0Width:MEcoupling 7 0.650445 insert n(1520)0Width:MEcoupling 8 0.1157 insert n(1520)0Width:ModeOn 0 1 insert n(1520)0Width:ModeOn 1 1 insert n(1520)0Width:ModeOn 2 1 insert n(1520)0Width:ModeOn 3 0 insert n(1520)0Width:ModeOn 4 0 insert n(1520)0Width:ModeOn 5 1 insert n(1520)0Width:ModeOn 6 1 insert n(1520)0Width:ModeOn 7 1 insert n(1520)0Width:ModeOn 8 1 insert n(1520)0Width:MinimumMasses 0 1.22157 insert n(1520)0Width:MinimumMasses 1 1.22157 insert n(1520)0Width:MinimumMasses 2 1.21698 insert n(1520)0Width:MinimumMasses 3 1.48706 insert n(1520)0Width:MinimumMasses 4 0.939565 insert n(1520)0Width:MinimumMasses 5 1.07454 insert n(1520)0Width:MinimumMasses 6 1.31507 insert n(1520)0Width:MinimumMasses 7 1.07784 insert n(1520)0Width:MinimumMasses 8 1.31377 insert n(1520)0Width:MEmass1 0 1.232 insert n(1520)0Width:MEmass1 1 1.232 insert n(1520)0Width:MEmass1 2 1.232 insert n(1520)0Width:MEmass1 3 0.939565 insert n(1520)0Width:MEmass1 4 0.939565 insert n(1520)0Width:MEmass1 5 0.939565 insert n(1520)0Width:MEmass1 6 0 insert n(1520)0Width:MEmass1 7 0.938272 insert n(1520)0Width:MEmass1 8 0 insert n(1520)0Width:MEmass2 0 0.13957 insert n(1520)0Width:MEmass2 1 0.13957 insert n(1520)0Width:MEmass2 2 0.134978 insert n(1520)0Width:MEmass2 3 0.54751 insert n(1520)0Width:MEmass2 4 0 insert n(1520)0Width:MEmass2 5 0.134978 insert n(1520)0Width:MEmass2 6 0 insert n(1520)0Width:MEmass2 7 0.13957 insert n(1520)0Width:MEmass2 8 0 insert n(1520)0Width:DecayModes 0 n(1520)0->Delta+,pi-; insert n(1520)0Width:DecayModes 1 n(1520)0->Delta-,pi+; insert n(1520)0Width:DecayModes 2 n(1520)0->Delta0,pi0; insert n(1520)0Width:DecayModes 3 n(1520)0->n0,eta; insert n(1520)0Width:DecayModes 4 n(1520)0->n0,gamma; insert n(1520)0Width:DecayModes 5 n(1520)0->n0,pi0; insert n(1520)0Width:DecayModes 6 n(1520)0->n0,rho0; insert n(1520)0Width:DecayModes 7 n(1520)0->p+,pi-; insert n(1520)0Width:DecayModes 8 n(1520)0->p+,rho-; insert n(1520)0Width:InterpolationMasses 0 1.1848996 insert n(1520)0Width:InterpolationMasses 1 1.2032349 insert n(1520)0Width:InterpolationMasses 2 1.2215702 insert n(1520)0Width:InterpolationMasses 3 1.2233914 insert n(1520)0Width:InterpolationMasses 4 1.2252154 insert n(1520)0Width:InterpolationMasses 5 1.2270421 insert n(1520)0Width:InterpolationMasses 6 1.2288715 insert n(1520)0Width:InterpolationMasses 7 1.2307037 insert n(1520)0Width:InterpolationMasses 8 1.2325386 insert n(1520)0Width:InterpolationMasses 9 1.2343762 insert n(1520)0Width:InterpolationMasses 10 1.2362165 insert n(1520)0Width:InterpolationMasses 11 1.2380596 insert n(1520)0Width:InterpolationMasses 12 1.2399055 insert n(1520)0Width:InterpolationMasses 13 1.2582408 insert n(1520)0Width:InterpolationMasses 14 1.2765761 insert n(1520)0Width:InterpolationMasses 15 1.2949114 insert n(1520)0Width:InterpolationMasses 16 1.3132467 insert n(1520)0Width:InterpolationMasses 17 1.331582 insert n(1520)0Width:InterpolationMasses 18 1.3499173 insert n(1520)0Width:InterpolationMasses 19 1.3682526 insert n(1520)0Width:InterpolationMasses 20 1.3865879 insert n(1520)0Width:InterpolationMasses 21 1.4049232 insert n(1520)0Width:InterpolationMasses 22 1.4232585 insert n(1520)0Width:InterpolationMasses 23 1.4415938 insert n(1520)0Width:InterpolationMasses 24 1.4599291 insert n(1520)0Width:InterpolationMasses 25 1.4782644 insert n(1520)0Width:InterpolationMasses 26 1.4965997 insert n(1520)0Width:InterpolationMasses 27 1.514935 insert n(1520)0Width:InterpolationMasses 28 1.5332703 insert n(1520)0Width:InterpolationMasses 29 1.5516056 insert n(1520)0Width:InterpolationMasses 30 1.5699409 insert n(1520)0Width:InterpolationMasses 31 1.5882762 insert n(1520)0Width:InterpolationMasses 32 1.6066115 insert n(1520)0Width:InterpolationMasses 33 1.6249468 insert n(1520)0Width:InterpolationMasses 34 1.6432821 insert n(1520)0Width:InterpolationMasses 35 1.6616174 insert n(1520)0Width:InterpolationMasses 36 1.6799527 insert n(1520)0Width:InterpolationMasses 37 1.698288 insert n(1520)0Width:InterpolationMasses 38 1.7166233 insert n(1520)0Width:InterpolationMasses 39 1.7349586 insert n(1520)0Width:InterpolationMasses 40 1.753294 insert n(1520)0Width:InterpolationMasses 41 1.7716293 insert n(1520)0Width:InterpolationMasses 42 1.7899646 insert n(1520)0Width:InterpolationMasses 43 1.8082999 insert n(1520)0Width:InterpolationMasses 44 1.8266352 insert n(1520)0Width:InterpolationMasses 45 1.8449705 insert n(1520)0Width:InterpolationMasses 46 1.8633058 insert n(1520)0Width:InterpolationMasses 47 1.8816411 insert n(1520)0Width:InterpolationMasses 48 1.8999764 insert n(1520)0Width:InterpolationMasses 49 1.9183117 insert n(1520)0Width:InterpolationMasses 50 1.936647 insert n(1520)0Width:InterpolationMasses 51 1.9549823 insert n(1520)0Width:InterpolationMasses 52 1.9733176 insert n(1520)0Width:InterpolationMasses 53 1.9916529 insert n(1520)0Width:InterpolationMasses 54 2.0099882 insert n(1520)0Width:InterpolationMasses 55 2.0283235 insert n(1520)0Width:InterpolationMasses 56 2.0466588 insert n(1520)0Width:InterpolationMasses 57 2.0649941 insert n(1520)0Width:InterpolationMasses 58 2.0833294 insert n(1520)0Width:InterpolationMasses 59 2.1016647 insert n(1520)0Width:InterpolationMasses 60 2.12 insert n(1520)0Width:InterpolationMasses 61 2.1383353 insert n(1520)0Width:InterpolationMasses 62 2.1566706 insert n(1520)0Width:InterpolationMasses 63 1.1848996 insert n(1520)0Width:InterpolationMasses 64 1.2032349 insert n(1520)0Width:InterpolationMasses 65 1.2215702 insert n(1520)0Width:InterpolationMasses 66 1.2233914 insert n(1520)0Width:InterpolationMasses 67 1.2252154 insert n(1520)0Width:InterpolationMasses 68 1.2270421 insert n(1520)0Width:InterpolationMasses 69 1.2288715 insert n(1520)0Width:InterpolationMasses 70 1.2307037 insert n(1520)0Width:InterpolationMasses 71 1.2325386 insert n(1520)0Width:InterpolationMasses 72 1.2343762 insert n(1520)0Width:InterpolationMasses 73 1.2362165 insert n(1520)0Width:InterpolationMasses 74 1.2380596 insert n(1520)0Width:InterpolationMasses 75 1.2399055 insert n(1520)0Width:InterpolationMasses 76 1.2582408 insert n(1520)0Width:InterpolationMasses 77 1.2765761 insert n(1520)0Width:InterpolationMasses 78 1.2949114 insert n(1520)0Width:InterpolationMasses 79 1.3132467 insert n(1520)0Width:InterpolationMasses 80 1.331582 insert n(1520)0Width:InterpolationMasses 81 1.3499173 insert n(1520)0Width:InterpolationMasses 82 1.3682526 insert n(1520)0Width:InterpolationMasses 83 1.3865879 insert n(1520)0Width:InterpolationMasses 84 1.4049232 insert n(1520)0Width:InterpolationMasses 85 1.4232585 insert n(1520)0Width:InterpolationMasses 86 1.4415938 insert n(1520)0Width:InterpolationMasses 87 1.4599291 insert n(1520)0Width:InterpolationMasses 88 1.4782644 insert n(1520)0Width:InterpolationMasses 89 1.4965997 insert n(1520)0Width:InterpolationMasses 90 1.514935 insert n(1520)0Width:InterpolationMasses 91 1.5332703 insert n(1520)0Width:InterpolationMasses 92 1.5516056 insert n(1520)0Width:InterpolationMasses 93 1.5699409 insert n(1520)0Width:InterpolationMasses 94 1.5882762 insert n(1520)0Width:InterpolationMasses 95 1.6066115 insert n(1520)0Width:InterpolationMasses 96 1.6249468 insert n(1520)0Width:InterpolationMasses 97 1.6432821 insert n(1520)0Width:InterpolationMasses 98 1.6616174 insert n(1520)0Width:InterpolationMasses 99 1.6799527 insert n(1520)0Width:InterpolationMasses 100 1.698288 insert n(1520)0Width:InterpolationMasses 101 1.7166233 insert n(1520)0Width:InterpolationMasses 102 1.7349586 insert n(1520)0Width:InterpolationMasses 103 1.753294 insert n(1520)0Width:InterpolationMasses 104 1.7716293 insert n(1520)0Width:InterpolationMasses 105 1.7899646 insert n(1520)0Width:InterpolationMasses 106 1.8082999 insert n(1520)0Width:InterpolationMasses 107 1.8266352 insert n(1520)0Width:InterpolationMasses 108 1.8449705 insert n(1520)0Width:InterpolationMasses 109 1.8633058 insert n(1520)0Width:InterpolationMasses 110 1.8816411 insert n(1520)0Width:InterpolationMasses 111 1.8999764 insert n(1520)0Width:InterpolationMasses 112 1.9183117 insert n(1520)0Width:InterpolationMasses 113 1.936647 insert n(1520)0Width:InterpolationMasses 114 1.9549823 insert n(1520)0Width:InterpolationMasses 115 1.9733176 insert n(1520)0Width:InterpolationMasses 116 1.9916529 insert n(1520)0Width:InterpolationMasses 117 2.0099882 insert n(1520)0Width:InterpolationMasses 118 2.0283235 insert n(1520)0Width:InterpolationMasses 119 2.0466588 insert n(1520)0Width:InterpolationMasses 120 2.0649941 insert n(1520)0Width:InterpolationMasses 121 2.0833294 insert n(1520)0Width:InterpolationMasses 122 2.1016647 insert n(1520)0Width:InterpolationMasses 123 2.12 insert n(1520)0Width:InterpolationMasses 124 2.1383353 insert n(1520)0Width:InterpolationMasses 125 2.1566706 insert n(1520)0Width:InterpolationMasses 126 1.1801195 insert n(1520)0Width:InterpolationMasses 127 1.1985486 insert n(1520)0Width:InterpolationMasses 128 1.2169776 insert n(1520)0Width:InterpolationMasses 129 1.2188081 insert n(1520)0Width:InterpolationMasses 130 1.2206413 insert n(1520)0Width:InterpolationMasses 131 1.2224773 insert n(1520)0Width:InterpolationMasses 132 1.224316 insert n(1520)0Width:InterpolationMasses 133 1.2261575 insert n(1520)0Width:InterpolationMasses 134 1.2280018 insert n(1520)0Width:InterpolationMasses 135 1.2298488 insert n(1520)0Width:InterpolationMasses 136 1.2316986 insert n(1520)0Width:InterpolationMasses 137 1.2335512 insert n(1520)0Width:InterpolationMasses 138 1.2354066 insert n(1520)0Width:InterpolationMasses 139 1.2538357 insert n(1520)0Width:InterpolationMasses 140 1.2722647 insert n(1520)0Width:InterpolationMasses 141 1.2906937 insert n(1520)0Width:InterpolationMasses 142 1.3091227 insert n(1520)0Width:InterpolationMasses 143 1.3275518 insert n(1520)0Width:InterpolationMasses 144 1.3459808 insert n(1520)0Width:InterpolationMasses 145 1.3644098 insert n(1520)0Width:InterpolationMasses 146 1.3828389 insert n(1520)0Width:InterpolationMasses 147 1.4012679 insert n(1520)0Width:InterpolationMasses 148 1.4196969 insert n(1520)0Width:InterpolationMasses 149 1.4381259 insert n(1520)0Width:InterpolationMasses 150 1.456555 insert n(1520)0Width:InterpolationMasses 151 1.474984 insert n(1520)0Width:InterpolationMasses 152 1.493413 insert n(1520)0Width:InterpolationMasses 153 1.5118421 insert n(1520)0Width:InterpolationMasses 154 1.5302711 insert n(1520)0Width:InterpolationMasses 155 1.5487001 insert n(1520)0Width:InterpolationMasses 156 1.5671291 insert n(1520)0Width:InterpolationMasses 157 1.5855582 insert n(1520)0Width:InterpolationMasses 158 1.6039872 insert n(1520)0Width:InterpolationMasses 159 1.6224162 insert n(1520)0Width:InterpolationMasses 160 1.6408453 insert n(1520)0Width:InterpolationMasses 161 1.6592743 insert n(1520)0Width:InterpolationMasses 162 1.6777033 insert n(1520)0Width:InterpolationMasses 163 1.6961323 insert n(1520)0Width:InterpolationMasses 164 1.7145614 insert n(1520)0Width:InterpolationMasses 165 1.7329904 insert n(1520)0Width:InterpolationMasses 166 1.7514194 insert n(1520)0Width:InterpolationMasses 167 1.7698485 insert n(1520)0Width:InterpolationMasses 168 1.7882775 insert n(1520)0Width:InterpolationMasses 169 1.8067065 insert n(1520)0Width:InterpolationMasses 170 1.8251355 insert n(1520)0Width:InterpolationMasses 171 1.8435646 insert n(1520)0Width:InterpolationMasses 172 1.8619936 insert n(1520)0Width:InterpolationMasses 173 1.8804226 insert n(1520)0Width:InterpolationMasses 174 1.8988517 insert n(1520)0Width:InterpolationMasses 175 1.9172807 insert n(1520)0Width:InterpolationMasses 176 1.9357097 insert n(1520)0Width:InterpolationMasses 177 1.9541387 insert n(1520)0Width:InterpolationMasses 178 1.9725678 insert n(1520)0Width:InterpolationMasses 179 1.9909968 insert n(1520)0Width:InterpolationMasses 180 2.0094258 insert n(1520)0Width:InterpolationMasses 181 2.0278549 insert n(1520)0Width:InterpolationMasses 182 2.0462839 insert n(1520)0Width:InterpolationMasses 183 2.0647129 insert n(1520)0Width:InterpolationMasses 184 2.0831419 insert n(1520)0Width:InterpolationMasses 185 2.101571 insert n(1520)0Width:InterpolationMasses 186 2.12 insert n(1520)0Width:InterpolationMasses 187 2.138429 insert n(1520)0Width:InterpolationMasses 188 2.1568581 insert n(1520)0Width:InterpolationMasses 189 1.4612282 insert n(1520)0Width:InterpolationMasses 190 1.4741453 insert n(1520)0Width:InterpolationMasses 191 1.4870624 insert n(1520)0Width:InterpolationMasses 192 1.488349 insert n(1520)0Width:InterpolationMasses 193 1.4896368 insert n(1520)0Width:InterpolationMasses 194 1.4909258 insert n(1520)0Width:InterpolationMasses 195 1.4922158 insert n(1520)0Width:InterpolationMasses 196 1.4935069 insert n(1520)0Width:InterpolationMasses 197 1.4947992 insert n(1520)0Width:InterpolationMasses 198 1.4960926 insert n(1520)0Width:InterpolationMasses 199 1.4973871 insert n(1520)0Width:InterpolationMasses 200 1.4986827 insert n(1520)0Width:InterpolationMasses 201 1.4999795 insert n(1520)0Width:InterpolationMasses 202 1.5128965 insert n(1520)0Width:InterpolationMasses 203 1.5258136 insert n(1520)0Width:InterpolationMasses 204 1.5387307 insert n(1520)0Width:InterpolationMasses 205 1.5516478 insert n(1520)0Width:InterpolationMasses 206 1.5645649 insert n(1520)0Width:InterpolationMasses 207 1.577482 insert n(1520)0Width:InterpolationMasses 208 1.5903991 insert n(1520)0Width:InterpolationMasses 209 1.6033162 insert n(1520)0Width:InterpolationMasses 210 1.6162333 insert n(1520)0Width:InterpolationMasses 211 1.6291504 insert n(1520)0Width:InterpolationMasses 212 1.6420675 insert n(1520)0Width:InterpolationMasses 213 1.6549846 insert n(1520)0Width:InterpolationMasses 214 1.6679017 insert n(1520)0Width:InterpolationMasses 215 1.6808188 insert n(1520)0Width:InterpolationMasses 216 1.6937359 insert n(1520)0Width:InterpolationMasses 217 1.706653 insert n(1520)0Width:InterpolationMasses 218 1.7195701 insert n(1520)0Width:InterpolationMasses 219 1.7324872 insert n(1520)0Width:InterpolationMasses 220 1.7454043 insert n(1520)0Width:InterpolationMasses 221 1.7583213 insert n(1520)0Width:InterpolationMasses 222 1.7712384 insert n(1520)0Width:InterpolationMasses 223 1.7841555 insert n(1520)0Width:InterpolationMasses 224 1.7970726 insert n(1520)0Width:InterpolationMasses 225 1.8099897 insert n(1520)0Width:InterpolationMasses 226 1.8229068 insert n(1520)0Width:InterpolationMasses 227 1.8358239 insert n(1520)0Width:InterpolationMasses 228 1.848741 insert n(1520)0Width:InterpolationMasses 229 1.8616581 insert n(1520)0Width:InterpolationMasses 230 1.8745752 insert n(1520)0Width:InterpolationMasses 231 1.8874923 insert n(1520)0Width:InterpolationMasses 232 1.9004094 insert n(1520)0Width:InterpolationMasses 233 1.9133265 insert n(1520)0Width:InterpolationMasses 234 1.9262436 insert n(1520)0Width:InterpolationMasses 235 1.9391607 insert n(1520)0Width:InterpolationMasses 236 1.9520778 insert n(1520)0Width:InterpolationMasses 237 1.9649949 insert n(1520)0Width:InterpolationMasses 238 1.977912 insert n(1520)0Width:InterpolationMasses 239 1.9908291 insert n(1520)0Width:InterpolationMasses 240 2.0037461 insert n(1520)0Width:InterpolationMasses 241 2.0166632 insert n(1520)0Width:InterpolationMasses 242 2.0295803 insert n(1520)0Width:InterpolationMasses 243 2.0424974 insert n(1520)0Width:InterpolationMasses 244 2.0554145 insert n(1520)0Width:InterpolationMasses 245 2.0683316 insert n(1520)0Width:InterpolationMasses 246 2.0812487 insert n(1520)0Width:InterpolationMasses 247 2.0941658 insert n(1520)0Width:InterpolationMasses 248 2.1070829 insert n(1520)0Width:InterpolationMasses 249 2.12 insert n(1520)0Width:InterpolationMasses 250 2.1329171 insert n(1520)0Width:InterpolationMasses 251 2.1458342 insert n(1520)0Width:InterpolationWidths 0 0 insert n(1520)0Width:InterpolationWidths 1 0 insert n(1520)0Width:InterpolationWidths 2 0 insert n(1520)0Width:InterpolationWidths 3 8.2020297e-12 insert n(1520)0Width:InterpolationWidths 4 5.2173532e-11 insert n(1520)0Width:InterpolationWidths 5 1.6108141e-10 insert n(1520)0Width:InterpolationWidths 6 3.6912507e-10 insert n(1520)0Width:InterpolationWidths 7 7.1728336e-10 insert n(1520)0Width:InterpolationWidths 8 1.2543449e-09 insert n(1520)0Width:InterpolationWidths 9 2.0378338e-09 insert n(1520)0Width:InterpolationWidths 10 3.1349429e-09 insert n(1520)0Width:InterpolationWidths 11 4.6235132e-09 insert n(1520)0Width:InterpolationWidths 12 6.5930786e-09 insert n(1520)0Width:InterpolationWidths 13 8.0966833e-08 insert n(1520)0Width:InterpolationWidths 14 4.2397982e-07 insert n(1520)0Width:InterpolationWidths 15 1.5422444e-06 insert n(1520)0Width:InterpolationWidths 16 4.6036463e-06 insert n(1520)0Width:InterpolationWidths 17 1.2157129e-05 insert n(1520)0Width:InterpolationWidths 18 2.91327e-05 insert n(1520)0Width:InterpolationWidths 19 6.2654479e-05 insert n(1520)0Width:InterpolationWidths 20 0.00011955116 insert n(1520)0Width:InterpolationWidths 21 0.00020479726 insert n(1520)0Width:InterpolationWidths 22 0.00032207897 insert n(1520)0Width:InterpolationWidths 23 0.00047450528 insert n(1520)0Width:InterpolationWidths 24 0.00066495342 insert n(1520)0Width:InterpolationWidths 25 0.00089618371 insert n(1520)0Width:InterpolationWidths 26 0.0011708852 insert n(1520)0Width:InterpolationWidths 27 0.0014916927 insert n(1520)0Width:InterpolationWidths 28 0.0018611947 insert n(1520)0Width:InterpolationWidths 29 0.0022819371 insert n(1520)0Width:InterpolationWidths 30 0.0027564267 insert n(1520)0Width:InterpolationWidths 31 0.0032871337 insert n(1520)0Width:InterpolationWidths 32 0.0038764943 insert n(1520)0Width:InterpolationWidths 33 0.0045269137 insert n(1520)0Width:InterpolationWidths 34 0.0052407685 insert n(1520)0Width:InterpolationWidths 35 0.0060204098 insert n(1520)0Width:InterpolationWidths 36 0.0068681653 insert n(1520)0Width:InterpolationWidths 37 0.0077863426 insert n(1520)0Width:InterpolationWidths 38 0.0087772391 insert n(1520)0Width:InterpolationWidths 39 0.0098431149 insert n(1520)0Width:InterpolationWidths 40 0.010986237 insert n(1520)0Width:InterpolationWidths 41 0.012208857 insert n(1520)0Width:InterpolationWidths 42 0.013513216 insert n(1520)0Width:InterpolationWidths 43 0.014901549 insert n(1520)0Width:InterpolationWidths 44 0.016376087 insert n(1520)0Width:InterpolationWidths 45 0.017939059 insert n(1520)0Width:InterpolationWidths 46 0.019592694 insert n(1520)0Width:InterpolationWidths 47 0.021339219 insert n(1520)0Width:InterpolationWidths 48 0.023180866 insert n(1520)0Width:InterpolationWidths 49 0.025119872 insert n(1520)0Width:InterpolationWidths 50 0.027158479 insert n(1520)0Width:InterpolationWidths 51 0.029298937 insert n(1520)0Width:InterpolationWidths 52 0.031543503 insert n(1520)0Width:InterpolationWidths 53 0.033894287 insert n(1520)0Width:InterpolationWidths 54 0.036353194 insert n(1520)0Width:InterpolationWidths 55 0.038922231 insert n(1520)0Width:InterpolationWidths 56 0.041603434 insert n(1520)0Width:InterpolationWidths 57 0.044398856 insert n(1520)0Width:InterpolationWidths 58 0.047310564 insert n(1520)0Width:InterpolationWidths 59 0.050340634 insert n(1520)0Width:InterpolationWidths 60 0.053491158 insert n(1520)0Width:InterpolationWidths 61 0.05676424 insert n(1520)0Width:InterpolationWidths 62 0.060161998 insert n(1520)0Width:InterpolationWidths 63 0 insert n(1520)0Width:InterpolationWidths 64 0 insert n(1520)0Width:InterpolationWidths 65 0 insert n(1520)0Width:InterpolationWidths 66 7.7952314e-12 insert n(1520)0Width:InterpolationWidths 67 5.6242363e-11 insert n(1520)0Width:InterpolationWidths 68 1.9285994e-10 insert n(1520)0Width:InterpolationWidths 69 4.8272753e-10 insert n(1520)0Width:InterpolationWidths 70 1.0110584e-09 insert n(1520)0Width:InterpolationWidths 71 1.8854935e-09 insert n(1520)0Width:InterpolationWidths 72 3.2384907e-09 insert n(1520)0Width:InterpolationWidths 73 5.229886e-09 insert n(1520)0Width:InterpolationWidths 74 8.0496602e-09 insert n(1520)0Width:InterpolationWidths 75 1.1920936e-08 insert n(1520)0Width:InterpolationWidths 76 1.8289902e-07 insert n(1520)0Width:InterpolationWidths 77 1.0596898e-06 insert n(1520)0Width:InterpolationWidths 78 4.0832996e-06 insert n(1520)0Width:InterpolationWidths 79 1.2654704e-05 insert n(1520)0Width:InterpolationWidths 80 3.4319462e-05 insert n(1520)0Width:InterpolationWidths 81 8.3849193e-05 insert n(1520)0Width:InterpolationWidths 82 0.00018270299 insert n(1520)0Width:InterpolationWidths 83 0.00035139001 insert n(1520)0Width:InterpolationWidths 84 0.00060476721 insert n(1520)0Width:InterpolationWidths 85 0.00095380387 insert n(1520)0Width:InterpolationWidths 86 0.001407781 insert n(1520)0Width:InterpolationWidths 87 0.001975279 insert n(1520)0Width:InterpolationWidths 88 0.0026645374 insert n(1520)0Width:InterpolationWidths 89 0.003483584 insert n(1520)0Width:InterpolationWidths 90 0.0044402856 insert n(1520)0Width:InterpolationWidths 91 0.0055423692 insert n(1520)0Width:InterpolationWidths 92 0.0067974347 insert n(1520)0Width:InterpolationWidths 93 0.0082129636 insert n(1520)0Width:InterpolationWidths 94 0.0097963275 insert n(1520)0Width:InterpolationWidths 95 0.011554796 insert n(1520)0Width:InterpolationWidths 96 0.013495544 insert n(1520)0Width:InterpolationWidths 97 0.015625662 insert n(1520)0Width:InterpolationWidths 98 0.017952161 insert n(1520)0Width:InterpolationWidths 99 0.020481983 insert n(1520)0Width:InterpolationWidths 100 0.023222029 insert n(1520)0Width:InterpolationWidths 101 0.026179089 insert n(1520)0Width:InterpolationWidths 102 0.029359957 insert n(1520)0Width:InterpolationWidths 103 0.032771375 insert n(1520)0Width:InterpolationWidths 104 0.036420048 insert n(1520)0Width:InterpolationWidths 105 0.040312658 insert n(1520)0Width:InterpolationWidths 106 0.044455864 insert n(1520)0Width:InterpolationWidths 107 0.048856315 insert n(1520)0Width:InterpolationWidths 108 0.05352065 insert n(1520)0Width:InterpolationWidths 109 0.058455504 insert n(1520)0Width:InterpolationWidths 110 0.063667517 insert n(1520)0Width:InterpolationWidths 111 0.069163338 insert n(1520)0Width:InterpolationWidths 112 0.074949624 insert n(1520)0Width:InterpolationWidths 113 0.081033055 insert n(1520)0Width:InterpolationWidths 114 0.087420328 insert n(1520)0Width:InterpolationWidths 115 0.094118169 insert n(1520)0Width:InterpolationWidths 116 0.10113286 insert n(1520)0Width:InterpolationWidths 117 0.10847009 insert n(1520)0Width:InterpolationWidths 118 0.11613584 insert n(1520)0Width:InterpolationWidths 119 0.12413618 insert n(1520)0Width:InterpolationWidths 120 0.13247723 insert n(1520)0Width:InterpolationWidths 121 0.14116515 insert n(1520)0Width:InterpolationWidths 122 0.15017971 insert n(1520)0Width:InterpolationWidths 123 0.15960641 insert n(1520)0Width:InterpolationWidths 124 0.16937227 insert n(1520)0Width:InterpolationWidths 125 0.17951001 insert n(1520)0Width:InterpolationWidths 126 0 insert n(1520)0Width:InterpolationWidths 127 0 insert n(1520)0Width:InterpolationWidths 128 0 insert n(1520)0Width:InterpolationWidths 129 1.4161209e-11 insert n(1520)0Width:InterpolationWidths 130 9.1132095e-11 insert n(1520)0Width:InterpolationWidths 131 2.8420853e-10 insert n(1520)0Width:InterpolationWidths 132 6.5702183e-10 insert n(1520)0Width:InterpolationWidths 133 1.2866132e-09 insert n(1520)0Width:InterpolationWidths 134 2.2653544e-09 insert n(1520)0Width:InterpolationWidths 135 3.7027256e-09 insert n(1520)0Width:InterpolationWidths 136 5.7271314e-09 insert n(1520)0Width:InterpolationWidths 137 8.4878207e-09 insert n(1520)0Width:InterpolationWidths 138 1.2156945e-08 insert n(1520)0Width:InterpolationWidths 139 1.5349858e-07 insert n(1520)0Width:InterpolationWidths 140 8.154519e-07 insert n(1520)0Width:InterpolationWidths 141 2.9942709e-06 insert n(1520)0Width:InterpolationWidths 142 9.0018608e-06 insert n(1520)0Width:InterpolationWidths 143 2.3907858e-05 insert n(1520)0Width:InterpolationWidths 144 5.7517608e-05 insert n(1520)0Width:InterpolationWidths 145 0.00012389788 insert n(1520)0Width:InterpolationWidths 146 0.00023642913 insert n(1520)0Width:InterpolationWidths 147 0.00040490973 insert n(1520)0Width:InterpolationWidths 148 0.00063671842 insert n(1520)0Width:InterpolationWidths 149 0.00093815771 insert n(1520)0Width:InterpolationWidths 150 0.0013150931 insert n(1520)0Width:InterpolationWidths 151 0.0017731628 insert n(1520)0Width:InterpolationWidths 152 0.0023178609 insert n(1520)0Width:InterpolationWidths 153 0.0029545699 insert n(1520)0Width:InterpolationWidths 154 0.0036885744 insert n(1520)0Width:InterpolationWidths 155 0.0045250698 insert n(1520)0Width:InterpolationWidths 156 0.0054691687 insert n(1520)0Width:InterpolationWidths 157 0.0065259065 insert n(1520)0Width:InterpolationWidths 158 0.0077002474 insert n(1520)0Width:InterpolationWidths 159 0.00899709 insert n(1520)0Width:InterpolationWidths 160 0.010421273 insert n(1520)0Width:InterpolationWidths 161 0.011977581 insert n(1520)0Width:InterpolationWidths 162 0.013670749 insert n(1520)0Width:InterpolationWidths 163 0.015505472 insert n(1520)0Width:InterpolationWidths 164 0.01748642 insert n(1520)0Width:InterpolationWidths 165 0.019618188 insert n(1520)0Width:InterpolationWidths 166 0.021905384 insert n(1520)0Width:InterpolationWidths 167 0.024352581 insert n(1520)0Width:InterpolationWidths 168 0.026964334 insert n(1520)0Width:InterpolationWidths 169 0.029745183 insert n(1520)0Width:InterpolationWidths 170 0.032699659 insert n(1520)0Width:InterpolationWidths 171 0.035832288 insert n(1520)0Width:InterpolationWidths 172 0.039147593 insert n(1520)0Width:InterpolationWidths 173 0.042650099 insert n(1520)0Width:InterpolationWidths 174 0.046344338 insert n(1520)0Width:InterpolationWidths 175 0.050234848 insert n(1520)0Width:InterpolationWidths 176 0.054326181 insert n(1520)0Width:InterpolationWidths 177 0.058622902 insert n(1520)0Width:InterpolationWidths 178 0.063129585 insert n(1520)0Width:InterpolationWidths 179 0.06785038 insert n(1520)0Width:InterpolationWidths 180 0.07278922 insert n(1520)0Width:InterpolationWidths 181 0.077950204 insert n(1520)0Width:InterpolationWidths 182 0.083337484 insert n(1520)0Width:InterpolationWidths 183 0.088955234 insert n(1520)0Width:InterpolationWidths 184 0.094807656 insert n(1520)0Width:InterpolationWidths 185 0.10089897 insert n(1520)0Width:InterpolationWidths 186 0.10723343 insert n(1520)0Width:InterpolationWidths 187 0.11381531 insert n(1520)0Width:InterpolationWidths 188 0.1206489 insert n(1520)0Width:InterpolationWidths 189 0 insert n(1520)0Width:InterpolationWidths 190 0 insert n(1520)0Width:InterpolationWidths 191 0 insert n(1520)0Width:InterpolationWidths 192 6.044608e-05 insert n(1520)0Width:InterpolationWidths 193 0.00017242962 insert n(1520)0Width:InterpolationWidths 194 0.00031785756 insert n(1520)0Width:InterpolationWidths 195 0.00049042533 insert n(1520)0Width:InterpolationWidths 196 0.00068651485 insert n(1520)0Width:InterpolationWidths 197 0.00090369919 insert n(1520)0Width:InterpolationWidths 198 0.0011402063 insert n(1520)0Width:InterpolationWidths 199 0.0013946704 insert n(1520)0Width:InterpolationWidths 200 0.0016659983 insert n(1520)0Width:InterpolationWidths 201 0.0019532903 insert n(1520)0Width:InterpolationWidths 202 0.0055417072 insert n(1520)0Width:InterpolationWidths 203 0.010206932 insert n(1520)0Width:InterpolationWidths 204 0.015753073 insert n(1520)0Width:InterpolationWidths 205 0.022068478 insert n(1520)0Width:InterpolationWidths 206 0.029078866 insert n(1520)0Width:InterpolationWidths 207 0.036730497 insert n(1520)0Width:InterpolationWidths 208 0.044982359 insert n(1520)0Width:InterpolationWidths 209 0.053801978 insert n(1520)0Width:InterpolationWidths 210 0.063162932 insert n(1520)0Width:InterpolationWidths 211 0.073043273 insert n(1520)0Width:InterpolationWidths 212 0.083424475 insert n(1520)0Width:InterpolationWidths 213 0.094290689 insert n(1520)0Width:InterpolationWidths 214 0.10562822 insert n(1520)0Width:InterpolationWidths 215 0.11742512 insert n(1520)0Width:InterpolationWidths 216 0.1296709 insert n(1520)0Width:InterpolationWidths 217 0.14235627 insert n(1520)0Width:InterpolationWidths 218 0.15547302 insert n(1520)0Width:InterpolationWidths 219 0.16901377 insert n(1520)0Width:InterpolationWidths 220 0.18297194 insert n(1520)0Width:InterpolationWidths 221 0.19734163 insert n(1520)0Width:InterpolationWidths 222 0.2121175 insert n(1520)0Width:InterpolationWidths 223 0.22729473 insert n(1520)0Width:InterpolationWidths 224 0.24286899 insert n(1520)0Width:InterpolationWidths 225 0.25883634 insert n(1520)0Width:InterpolationWidths 226 0.27519321 insert n(1520)0Width:InterpolationWidths 227 0.29193636 insert n(1520)0Width:InterpolationWidths 228 0.30906288 insert n(1520)0Width:InterpolationWidths 229 0.32657009 insert n(1520)0Width:InterpolationWidths 230 0.34445559 insert n(1520)0Width:InterpolationWidths 231 0.3627172 insert n(1520)0Width:InterpolationWidths 232 0.38135295 insert n(1520)0Width:InterpolationWidths 233 0.40036107 insert n(1520)0Width:InterpolationWidths 234 0.41973995 insert n(1520)0Width:InterpolationWidths 235 0.43948816 insert n(1520)0Width:InterpolationWidths 236 0.45960441 insert n(1520)0Width:InterpolationWidths 237 0.48008755 insert n(1520)0Width:InterpolationWidths 238 0.50093658 insert n(1520)0Width:InterpolationWidths 239 0.52215061 insert n(1520)0Width:InterpolationWidths 240 0.54372885 insert n(1520)0Width:InterpolationWidths 241 0.56567063 insert n(1520)0Width:InterpolationWidths 242 0.58797538 insert n(1520)0Width:InterpolationWidths 243 0.61064263 insert n(1520)0Width:InterpolationWidths 244 0.63367198 insert n(1520)0Width:InterpolationWidths 245 0.65706312 insert n(1520)0Width:InterpolationWidths 246 0.68081582 insert n(1520)0Width:InterpolationWidths 247 0.70492992 insert n(1520)0Width:InterpolationWidths 248 0.72940533 insert n(1520)0Width:InterpolationWidths 249 0.75424203 insert n(1520)0Width:InterpolationWidths 250 0.77944005 insert n(1520)0Width:InterpolationWidths 251 0.80499948 insert n(1520)0Width:NumberofEntries 0 63 insert n(1520)0Width:NumberofEntries 1 126 insert n(1520)0Width:NumberofEntries 2 189 insert n(1520)0Width:NumberofEntries 3 252 insert n(1520)0Width:NumberofEntries 4 252 insert n(1520)0Width:NumberofEntries 5 252 insert n(1520)0Width:NumberofEntries 6 252 insert n(1520)0Width:NumberofEntries 7 252 insert n(1520)0Width:NumberofEntries 8 252 insert n(1520)0Width:BaryonDecayers 0 /Herwig/Decays/SU3OctetDecuplet3 insert n(1520)0Width:ModeLocation 0 2 insert n(1520)0Width:BaryonDecayers 1 /Herwig/Decays/SU3OctetDecuplet3 insert n(1520)0Width:ModeLocation 1 10 insert n(1520)0Width:BaryonDecayers 2 /Herwig/Decays/SU3OctetDecuplet3 insert n(1520)0Width:ModeLocation 2 7 insert n(1520)0Width:BaryonDecayers 3 /Herwig/Decays/SU3Strong3 insert n(1520)0Width:ModeLocation 3 10 insert n(1520)0Width:BaryonDecayers 4 /Herwig/Decays/SU3Gamma4 insert n(1520)0Width:ModeLocation 4 1 insert n(1520)0Width:BaryonDecayers 5 /Herwig/Decays/SU3Strong3 insert n(1520)0Width:ModeLocation 5 7 insert n(1520)0Width:BaryonDecayers 6 NULL insert n(1520)0Width:ModeLocation 6 -1 insert n(1520)0Width:BaryonDecayers 7 /Herwig/Decays/SU3Strong3 insert n(1520)0Width:ModeLocation 7 6 insert n(1520)0Width:BaryonDecayers 8 NULL insert n(1520)0Width:ModeLocation 8 -1 newdef /Herwig/Particles/n(1520)0:Width_generator n(1520)0Width newdef /Herwig/Particles/nbar(1520)0:Width_generator n(1520)0Width # create Herwig::BaryonWidthGenerator Sigma_c++Width newdef Sigma_c++Width:Particle /Herwig/Particles/Sigma_c++ newdef Sigma_c++Width:Prefactor 1 newdef Sigma_c++Width:BRNormalize 1 newdef Sigma_c++Width:BRMinimum 0.01 newdef Sigma_c++Width:Points 50 newdef Sigma_c++Width:InterpolationOrder 1 insert Sigma_c++Width:MEtype 0 1 insert Sigma_c++Width:MEcode 0 101 insert Sigma_c++Width:MEcoupling 0 0.892963 insert Sigma_c++Width:ModeOn 0 1 insert Sigma_c++Width:MinimumMasses 0 2.42603 insert Sigma_c++Width:MEmass1 0 2.28646 insert Sigma_c++Width:MEmass2 0 0.13957 insert Sigma_c++Width:DecayModes 0 Sigma_c++->Lambda_c+,pi+; insert Sigma_c++Width:NumberofEntries 0 0 insert Sigma_c++Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Sigma_c++Width:ModeLocation 0 0 newdef /Herwig/Particles/Sigma_c++:Width_generator Sigma_c++Width newdef /Herwig/Particles/Sigmabar_c--:Width_generator Sigma_c++Width # create Herwig::BaryonWidthGenerator Sigma_c+Width newdef Sigma_c+Width:Particle /Herwig/Particles/Sigma_c+ newdef Sigma_c+Width:Prefactor 1 newdef Sigma_c+Width:BRNormalize 1 newdef Sigma_c+Width:BRMinimum 0.01 newdef Sigma_c+Width:Points 50 newdef Sigma_c+Width:InterpolationOrder 1 insert Sigma_c+Width:MEtype 0 1 insert Sigma_c+Width:MEcode 0 101 insert Sigma_c+Width:MEcoupling 0 0.829059 insert Sigma_c+Width:ModeOn 0 1 insert Sigma_c+Width:MinimumMasses 0 2.42144 insert Sigma_c+Width:MEmass1 0 2.28646 insert Sigma_c+Width:MEmass2 0 0.134978 insert Sigma_c+Width:DecayModes 0 Sigma_c+->Lambda_c+,pi0; insert Sigma_c+Width:NumberofEntries 0 0 insert Sigma_c+Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Sigma_c+Width:ModeLocation 0 1 newdef /Herwig/Particles/Sigma_c+:Width_generator Sigma_c+Width newdef /Herwig/Particles/Sigmabar_c-:Width_generator Sigma_c+Width # create Herwig::BaryonWidthGenerator Sigma_c0Width newdef Sigma_c0Width:Particle /Herwig/Particles/Sigma_c0 newdef Sigma_c0Width:Prefactor 1 newdef Sigma_c0Width:BRNormalize 1 newdef Sigma_c0Width:BRMinimum 0.01 newdef Sigma_c0Width:Points 50 newdef Sigma_c0Width:InterpolationOrder 1 insert Sigma_c0Width:MEtype 0 1 insert Sigma_c0Width:MEcode 0 101 insert Sigma_c0Width:MEcoupling 0 0.893619 insert Sigma_c0Width:ModeOn 0 1 insert Sigma_c0Width:MinimumMasses 0 2.42603 insert Sigma_c0Width:MEmass1 0 2.28646 insert Sigma_c0Width:MEmass2 0 0.13957 insert Sigma_c0Width:DecayModes 0 Sigma_c0->Lambda_c+,pi-; insert Sigma_c0Width:NumberofEntries 0 0 insert Sigma_c0Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Sigma_c0Width:ModeLocation 0 2 newdef /Herwig/Particles/Sigma_c0:Width_generator Sigma_c0Width newdef /Herwig/Particles/Sigmabar_c0:Width_generator Sigma_c0Width # create Herwig::BaryonWidthGenerator Sigma*_c++Width newdef Sigma*_c++Width:Particle /Herwig/Particles/Sigma*_c++ newdef Sigma*_c++Width:Prefactor 1 newdef Sigma*_c++Width:BRNormalize 1 newdef Sigma*_c++Width:BRMinimum 0.01 newdef Sigma*_c++Width:Points 50 newdef Sigma*_c++Width:InterpolationOrder 1 insert Sigma*_c++Width:MEtype 0 1 insert Sigma*_c++Width:MEcode 0 105 insert Sigma*_c++Width:MEcoupling 0 0.84304 insert Sigma*_c++Width:ModeOn 0 1 insert Sigma*_c++Width:MinimumMasses 0 2.42603 insert Sigma*_c++Width:MEmass1 0 2.28646 insert Sigma*_c++Width:MEmass2 0 0.13957 insert Sigma*_c++Width:DecayModes 0 Sigma*_c++->Lambda_c+,pi+; insert Sigma*_c++Width:NumberofEntries 0 0 insert Sigma*_c++Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Sigma*_c++Width:ModeLocation 0 3 newdef /Herwig/Particles/Sigma*_c++:Width_generator Sigma*_c++Width newdef /Herwig/Particles/Sigmabar*_c--:Width_generator Sigma*_c++Width # create Herwig::BaryonWidthGenerator Sigma*_c+Width newdef Sigma*_c+Width:Particle /Herwig/Particles/Sigma*_c+ newdef Sigma*_c+Width:Prefactor 1 newdef Sigma*_c+Width:BRNormalize 1 newdef Sigma*_c+Width:BRMinimum 0.01 newdef Sigma*_c+Width:Points 50 newdef Sigma*_c+Width:InterpolationOrder 1 insert Sigma*_c+Width:MEtype 0 1 insert Sigma*_c+Width:MEcode 0 105 insert Sigma*_c+Width:MEcoupling 0 0.860078 insert Sigma*_c+Width:ModeOn 0 1 insert Sigma*_c+Width:MinimumMasses 0 2.42144 insert Sigma*_c+Width:MEmass1 0 2.28646 insert Sigma*_c+Width:MEmass2 0 0.134978 insert Sigma*_c+Width:DecayModes 0 Sigma*_c+->Lambda_c+,pi0; insert Sigma*_c+Width:NumberofEntries 0 0 insert Sigma*_c+Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Sigma*_c+Width:ModeLocation 0 4 newdef /Herwig/Particles/Sigma*_c+:Width_generator Sigma*_c+Width newdef /Herwig/Particles/Sigmabar*_c-:Width_generator Sigma*_c+Width # create Herwig::BaryonWidthGenerator Sigma*_c0Width newdef Sigma*_c0Width:Particle /Herwig/Particles/Sigma*_c0 newdef Sigma*_c0Width:Prefactor 1 newdef Sigma*_c0Width:BRNormalize 1 newdef Sigma*_c0Width:BRMinimum 0.01 newdef Sigma*_c0Width:Points 50 newdef Sigma*_c0Width:InterpolationOrder 1 insert Sigma*_c0Width:MEtype 0 1 insert Sigma*_c0Width:MEcode 0 105 insert Sigma*_c0Width:MEcoupling 0 0.879732 insert Sigma*_c0Width:ModeOn 0 1 insert Sigma*_c0Width:MinimumMasses 0 2.42603 insert Sigma*_c0Width:MEmass1 0 2.28646 insert Sigma*_c0Width:MEmass2 0 0.13957 insert Sigma*_c0Width:DecayModes 0 Sigma*_c0->Lambda_c+,pi-; insert Sigma*_c0Width:NumberofEntries 0 0 insert Sigma*_c0Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Sigma*_c0Width:ModeLocation 0 5 newdef /Herwig/Particles/Sigma*_c0:Width_generator Sigma*_c0Width newdef /Herwig/Particles/Sigmabar*_c0:Width_generator Sigma*_c0Width # create Herwig::BaryonWidthGenerator Sigma_b+Width newdef Sigma_b+Width:Particle /Herwig/Particles/Sigma_b+ newdef Sigma_b+Width:Prefactor 1 newdef Sigma_b+Width:BRNormalize 1 newdef Sigma_b+Width:BRMinimum 0.01 newdef Sigma_b+Width:Points 50 newdef Sigma_b+Width:InterpolationOrder 1 insert Sigma_b+Width:MEtype 0 1 insert Sigma_b+Width:MEcode 0 101 insert Sigma_b+Width:MEcoupling 0 0.999647 insert Sigma_b+Width:ModeOn 0 1 insert Sigma_b+Width:MinimumMasses 0 5.76357 insert Sigma_b+Width:MEmass1 0 5.624 insert Sigma_b+Width:MEmass2 0 0.13957 insert Sigma_b+Width:DecayModes 0 Sigma_b+->Lambda_b0,pi+; insert Sigma_b+Width:NumberofEntries 0 0 insert Sigma_b+Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Sigma_b+Width:ModeLocation 0 16 newdef /Herwig/Particles/Sigma_b+:Width_generator Sigma_b+Width newdef /Herwig/Particles/Sigma_bbar-:Width_generator Sigma_b+Width # create Herwig::BaryonWidthGenerator Sigma_b0Width newdef Sigma_b0Width:Particle /Herwig/Particles/Sigma_b0 newdef Sigma_b0Width:Prefactor 1 newdef Sigma_b0Width:BRNormalize 1 newdef Sigma_b0Width:BRMinimum 0.01 newdef Sigma_b0Width:Points 50 newdef Sigma_b0Width:InterpolationOrder 1 insert Sigma_b0Width:MEtype 0 1 insert Sigma_b0Width:MEcode 0 101 insert Sigma_b0Width:MEcoupling 0 1.00011 insert Sigma_b0Width:ModeOn 0 1 insert Sigma_b0Width:MinimumMasses 0 5.75898 insert Sigma_b0Width:MEmass1 0 5.624 insert Sigma_b0Width:MEmass2 0 0.134978 insert Sigma_b0Width:DecayModes 0 Sigma_b0->Lambda_b0,pi0; insert Sigma_b0Width:NumberofEntries 0 0 insert Sigma_b0Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Sigma_b0Width:ModeLocation 0 17 newdef /Herwig/Particles/Sigma_bbar0:Width_generator Sigma_b0Width newdef /Herwig/Particles/Sigma_b0:Width_generator Sigma_b0Width # create Herwig::BaryonWidthGenerator Sigma_b-Width newdef Sigma_b-Width:Particle /Herwig/Particles/Sigma_b- newdef Sigma_b-Width:Prefactor 1 newdef Sigma_b-Width:BRNormalize 1 newdef Sigma_b-Width:BRMinimum 0.01 newdef Sigma_b-Width:Points 50 newdef Sigma_b-Width:InterpolationOrder 1 insert Sigma_b-Width:MEtype 0 1 insert Sigma_b-Width:MEcode 0 101 insert Sigma_b-Width:MEcoupling 0 1.00056 insert Sigma_b-Width:ModeOn 0 1 insert Sigma_b-Width:MinimumMasses 0 5.76357 insert Sigma_b-Width:MEmass1 0 5.624 insert Sigma_b-Width:MEmass2 0 0.13957 insert Sigma_b-Width:DecayModes 0 Sigma_b-->Lambda_b0,pi-; insert Sigma_b-Width:NumberofEntries 0 0 insert Sigma_b-Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Sigma_b-Width:ModeLocation 0 18 newdef /Herwig/Particles/Sigma_b-:Width_generator Sigma_b-Width newdef /Herwig/Particles/Sigma_bbar+:Width_generator Sigma_b-Width # create Herwig::BaryonWidthGenerator Sigma*_b+Width newdef Sigma*_b+Width:Particle /Herwig/Particles/Sigma_b*+ newdef Sigma*_b+Width:Prefactor 1 newdef Sigma*_b+Width:BRNormalize 1 newdef Sigma*_b+Width:BRMinimum 0.01 newdef Sigma*_b+Width:Points 50 newdef Sigma*_b+Width:InterpolationOrder 1 insert Sigma*_b+Width:MEtype 0 1 insert Sigma*_b+Width:MEcode 0 105 insert Sigma*_b+Width:MEcoupling 0 1.00176 insert Sigma*_b+Width:ModeOn 0 1 insert Sigma*_b+Width:MinimumMasses 0 5.76357 insert Sigma*_b+Width:MEmass1 0 5.624 insert Sigma*_b+Width:MEmass2 0 0.13957 insert Sigma*_b+Width:DecayModes 0 Sigma_b*+->Lambda_b0,pi+; insert Sigma*_b+Width:NumberofEntries 0 0 insert Sigma*_b+Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Sigma*_b+Width:ModeLocation 0 19 newdef /Herwig/Particles/Sigma_b*+:Width_generator Sigma*_b+Width newdef /Herwig/Particles/Sigma_b*bar-:Width_generator Sigma*_b+Width # create Herwig::BaryonWidthGenerator Sigma*_b0Width newdef Sigma*_b0Width:Particle /Herwig/Particles/Sigma_b*0 newdef Sigma*_b0Width:Prefactor 1 newdef Sigma*_b0Width:BRNormalize 1 newdef Sigma*_b0Width:BRMinimum 0.01 newdef Sigma*_b0Width:Points 50 newdef Sigma*_b0Width:InterpolationOrder 1 insert Sigma*_b0Width:MEtype 0 1 insert Sigma*_b0Width:MEcode 0 105 insert Sigma*_b0Width:MEcoupling 0 0.999679 insert Sigma*_b0Width:ModeOn 0 1 insert Sigma*_b0Width:MinimumMasses 0 5.75898 insert Sigma*_b0Width:MEmass1 0 5.624 insert Sigma*_b0Width:MEmass2 0 0.134978 insert Sigma*_b0Width:DecayModes 0 Sigma_b*0->Lambda_b0,pi0; insert Sigma*_b0Width:NumberofEntries 0 0 insert Sigma*_b0Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Sigma*_b0Width:ModeLocation 0 20 newdef /Herwig/Particles/Sigma_b*bar0:Width_generator Sigma*_b0Width newdef /Herwig/Particles/Sigma_b*0:Width_generator Sigma*_b0Width # create Herwig::BaryonWidthGenerator Sigma*_b-Width newdef Sigma*_b-Width:Particle /Herwig/Particles/Sigma_b*- newdef Sigma*_b-Width:Prefactor 1 newdef Sigma*_b-Width:BRNormalize 1 newdef Sigma*_b-Width:BRMinimum 0.01 newdef Sigma*_b-Width:Points 50 newdef Sigma*_b-Width:InterpolationOrder 1 insert Sigma*_b-Width:MEtype 0 1 insert Sigma*_b-Width:MEcode 0 105 insert Sigma*_b-Width:MEcoupling 0 0.998176 insert Sigma*_b-Width:ModeOn 0 1 insert Sigma*_b-Width:MinimumMasses 0 5.76357 insert Sigma*_b-Width:MEmass1 0 5.624 insert Sigma*_b-Width:MEmass2 0 0.13957 insert Sigma*_b-Width:DecayModes 0 Sigma_b*-->Lambda_b0,pi-; insert Sigma*_b-Width:NumberofEntries 0 0 insert Sigma*_b-Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Sigma*_b-Width:ModeLocation 0 21 newdef /Herwig/Particles/Sigma_b*-:Width_generator Sigma*_b-Width newdef /Herwig/Particles/Sigma_b*bar+:Width_generator Sigma*_b-Width # create Herwig::BaryonWidthGenerator Xi'_c+Width newdef Xi'_c+Width:Particle /Herwig/Particles/Xi'_c+ newdef Xi'_c+Width:Prefactor 1 newdef Xi'_c+Width:BRNormalize 1 newdef Xi'_c+Width:BRMinimum 0.01 newdef Xi'_c+Width:Points 50 newdef Xi'_c+Width:InterpolationOrder 1 insert Xi'_c+Width:MEtype 0 1 insert Xi'_c+Width:MEcode 0 102 insert Xi'_c+Width:MEcoupling 0 0.978806 insert Xi'_c+Width:ModeOn 0 1 insert Xi'_c+Width:MinimumMasses 0 2.4679 insert Xi'_c+Width:MEmass1 0 2.4679 insert Xi'_c+Width:MEmass2 0 0 insert Xi'_c+Width:DecayModes 0 Xi'_c+->Xi_c+,gamma; insert Xi'_c+Width:NumberofEntries 0 0 insert Xi'_c+Width:BaryonDecayers 0 /Herwig/Decays/HeavyGamma insert Xi'_c+Width:ModeLocation 0 1 newdef /Herwig/Particles/Xi'_c+:Width_generator Xi'_c+Width newdef /Herwig/Particles/Xi'_cbar-:Width_generator Xi'_c+Width # create Herwig::BaryonWidthGenerator Xi'_c0Width newdef Xi'_c0Width:Particle /Herwig/Particles/Xi'_c0 newdef Xi'_c0Width:Prefactor 1 newdef Xi'_c0Width:BRNormalize 1 newdef Xi'_c0Width:BRMinimum 0.01 newdef Xi'_c0Width:Points 50 newdef Xi'_c0Width:InterpolationOrder 1 insert Xi'_c0Width:MEtype 0 1 insert Xi'_c0Width:MEcode 0 102 insert Xi'_c0Width:MEcoupling 0 0.979049 insert Xi'_c0Width:ModeOn 0 1 insert Xi'_c0Width:MinimumMasses 0 2.471 insert Xi'_c0Width:MEmass1 0 2.471 insert Xi'_c0Width:MEmass2 0 0 insert Xi'_c0Width:DecayModes 0 Xi'_c0->Xi_c0,gamma; insert Xi'_c0Width:NumberofEntries 0 0 insert Xi'_c0Width:BaryonDecayers 0 /Herwig/Decays/HeavyGamma insert Xi'_c0Width:ModeLocation 0 0 newdef /Herwig/Particles/Xi'_c0:Width_generator Xi'_c0Width newdef /Herwig/Particles/Xi'_cbar0:Width_generator Xi'_c0Width # create Herwig::BaryonWidthGenerator Xi'_b0Width newdef Xi'_b0Width:Particle /Herwig/Particles/Xi_b'0 newdef Xi'_b0Width:Prefactor 1 newdef Xi'_b0Width:BRNormalize 1 newdef Xi'_b0Width:BRMinimum 0.01 newdef Xi'_b0Width:Points 50 newdef Xi'_b0Width:InterpolationOrder 1 insert Xi'_b0Width:MEtype 0 1 insert Xi'_b0Width:MEcode 0 102 insert Xi'_b0Width:MEcoupling 0 0.998526 insert Xi'_b0Width:ModeOn 0 1 insert Xi'_b0Width:MinimumMasses 0 5.7898 insert Xi'_b0Width:MEmass1 0 5.7898 insert Xi'_b0Width:MEmass2 0 0 insert Xi'_b0Width:DecayModes 0 Xi_b'0->Xi_b0,gamma; insert Xi'_b0Width:NumberofEntries 0 0 insert Xi'_b0Width:BaryonDecayers 0 /Herwig/Decays/HeavyGamma insert Xi'_b0Width:ModeLocation 0 3 newdef /Herwig/Particles/Xi_b'bar0:Width_generator Xi'_b0Width newdef /Herwig/Particles/Xi_b'0:Width_generator Xi'_b0Width # create Herwig::BaryonWidthGenerator Xi'_b-Width newdef Xi'_b-Width:Particle /Herwig/Particles/Xi_b'- newdef Xi'_b-Width:Prefactor 1 newdef Xi'_b-Width:BRNormalize 1 newdef Xi'_b-Width:BRMinimum 0.01 newdef Xi'_b-Width:Points 50 newdef Xi'_b-Width:InterpolationOrder 1 insert Xi'_b-Width:MEtype 0 1 insert Xi'_b-Width:MEcode 0 102 insert Xi'_b-Width:MEcoupling 0 0.989667 insert Xi'_b-Width:ModeOn 0 1 insert Xi'_b-Width:MinimumMasses 0 5.7929 insert Xi'_b-Width:MEmass1 0 5.7929 insert Xi'_b-Width:MEmass2 0 0 insert Xi'_b-Width:DecayModes 0 Xi_b'-->Xi_b-,gamma; insert Xi'_b-Width:NumberofEntries 0 0 insert Xi'_b-Width:BaryonDecayers 0 /Herwig/Decays/HeavyGamma insert Xi'_b-Width:ModeLocation 0 2 newdef /Herwig/Particles/Xi_b'-:Width_generator Xi'_b-Width newdef /Herwig/Particles/Xi_b'bar+:Width_generator Xi'_b-Width # create Herwig::BaryonWidthGenerator Xi*_c+Width newdef Xi*_c+Width:Particle /Herwig/Particles/Xi_c*+ newdef Xi*_c+Width:Prefactor 1 newdef Xi*_c+Width:BRNormalize 1 newdef Xi*_c+Width:BRMinimum 0.01 newdef Xi*_c+Width:Points 50 newdef Xi*_c+Width:InterpolationOrder 1 insert Xi*_c+Width:MEtype 0 1 insert Xi*_c+Width:MEtype 1 1 insert Xi*_c+Width:MEcode 0 105 insert Xi*_c+Width:MEcode 1 105 insert Xi*_c+Width:MEcoupling 0 0.895962 insert Xi*_c+Width:MEcoupling 1 1.03073 insert Xi*_c+Width:ModeOn 0 1 insert Xi*_c+Width:ModeOn 1 1 insert Xi*_c+Width:MinimumMasses 0 2.60288 insert Xi*_c+Width:MinimumMasses 1 2.61057 insert Xi*_c+Width:MEmass1 0 2.4679 insert Xi*_c+Width:MEmass1 1 2.471 insert Xi*_c+Width:MEmass2 0 0.134978 insert Xi*_c+Width:MEmass2 1 0.13957 insert Xi*_c+Width:DecayModes 0 Xi_c*+->Xi_c+,pi0; insert Xi*_c+Width:DecayModes 1 Xi_c*+->Xi_c0,pi+; insert Xi*_c+Width:NumberofEntries 0 0 insert Xi*_c+Width:NumberofEntries 1 0 insert Xi*_c+Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Xi*_c+Width:ModeLocation 0 6 insert Xi*_c+Width:BaryonDecayers 1 /Herwig/Decays/HeavyStrong insert Xi*_c+Width:ModeLocation 1 7 newdef /Herwig/Particles/Xi_c*+:Width_generator Xi*_c+Width newdef /Herwig/Particles/Xi_c*bar-:Width_generator Xi*_c+Width # create Herwig::BaryonWidthGenerator Xi*_c0Width newdef Xi*_c0Width:Particle /Herwig/Particles/Xi_c*0 newdef Xi*_c0Width:Prefactor 1 newdef Xi*_c0Width:BRNormalize 1 newdef Xi*_c0Width:BRMinimum 0.01 newdef Xi*_c0Width:Points 50 newdef Xi*_c0Width:InterpolationOrder 1 insert Xi*_c0Width:MEtype 0 1 insert Xi*_c0Width:MEtype 1 1 insert Xi*_c0Width:MEcode 0 105 insert Xi*_c0Width:MEcode 1 105 insert Xi*_c0Width:MEcoupling 0 0.973489 insert Xi*_c0Width:MEcoupling 1 0.962233 insert Xi*_c0Width:ModeOn 0 1 insert Xi*_c0Width:ModeOn 1 1 insert Xi*_c0Width:MinimumMasses 0 2.60747 insert Xi*_c0Width:MinimumMasses 1 2.60598 insert Xi*_c0Width:MEmass1 0 2.4679 insert Xi*_c0Width:MEmass1 1 2.471 insert Xi*_c0Width:MEmass2 0 0.13957 insert Xi*_c0Width:MEmass2 1 0.134978 insert Xi*_c0Width:DecayModes 0 Xi_c*0->Xi_c+,pi-; insert Xi*_c0Width:DecayModes 1 Xi_c*0->Xi_c0,pi0; insert Xi*_c0Width:NumberofEntries 0 0 insert Xi*_c0Width:NumberofEntries 1 0 insert Xi*_c0Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Xi*_c0Width:ModeLocation 0 9 insert Xi*_c0Width:BaryonDecayers 1 /Herwig/Decays/HeavyStrong insert Xi*_c0Width:ModeLocation 1 8 newdef /Herwig/Particles/Xi_c*bar0:Width_generator Xi*_c0Width newdef /Herwig/Particles/Xi_c*0:Width_generator Xi*_c0Width # create Herwig::BaryonWidthGenerator Xi*_b0Width newdef Xi*_b0Width:Particle /Herwig/Particles/Xi_b*0 newdef Xi*_b0Width:Prefactor 1 newdef Xi*_b0Width:BRNormalize 1 newdef Xi*_b0Width:BRMinimum 0.01 newdef Xi*_b0Width:Points 50 newdef Xi*_b0Width:InterpolationOrder 1 insert Xi*_b0Width:MEtype 0 1 insert Xi*_b0Width:MEtype 1 1 insert Xi*_b0Width:MEcode 0 105 insert Xi*_b0Width:MEcode 1 105 insert Xi*_b0Width:MEcoupling 0 1.06108 insert Xi*_b0Width:MEcoupling 1 0.921606 insert Xi*_b0Width:ModeOn 0 1 insert Xi*_b0Width:ModeOn 1 1 insert Xi*_b0Width:MinimumMasses 0 5.93247 insert Xi*_b0Width:MinimumMasses 1 5.92478 insert Xi*_b0Width:MEmass1 0 5.7929 insert Xi*_b0Width:MEmass1 1 5.7898 insert Xi*_b0Width:MEmass2 0 0.13957 insert Xi*_b0Width:MEmass2 1 0.134978 insert Xi*_b0Width:DecayModes 0 Xi_b*0->Xi_b-,pi+; insert Xi*_b0Width:DecayModes 1 Xi_b*0->Xi_b0,pi0; insert Xi*_b0Width:NumberofEntries 0 0 insert Xi*_b0Width:NumberofEntries 1 0 insert Xi*_b0Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Xi*_b0Width:ModeLocation 0 23 insert Xi*_b0Width:BaryonDecayers 1 /Herwig/Decays/HeavyStrong insert Xi*_b0Width:ModeLocation 1 22 newdef /Herwig/Particles/Xi_b*bar0:Width_generator Xi*_b0Width newdef /Herwig/Particles/Xi_b*0:Width_generator Xi*_b0Width # create Herwig::BaryonWidthGenerator Xi*_b-Width newdef Xi*_b-Width:Particle /Herwig/Particles/Xi_b*- newdef Xi*_b-Width:Prefactor 1 newdef Xi*_b-Width:BRNormalize 1 newdef Xi*_b-Width:BRMinimum 0.01 newdef Xi*_b-Width:Points 50 newdef Xi*_b-Width:InterpolationOrder 1 insert Xi*_b-Width:MEtype 0 1 insert Xi*_b-Width:MEtype 1 1 insert Xi*_b-Width:MEcode 0 105 insert Xi*_b-Width:MEcode 1 105 insert Xi*_b-Width:MEcoupling 0 0.990745 insert Xi*_b-Width:MEcoupling 1 1.00143 insert Xi*_b-Width:ModeOn 0 1 insert Xi*_b-Width:ModeOn 1 1 insert Xi*_b-Width:MinimumMasses 0 5.92788 insert Xi*_b-Width:MinimumMasses 1 5.92937 insert Xi*_b-Width:MEmass1 0 5.7929 insert Xi*_b-Width:MEmass1 1 5.7898 insert Xi*_b-Width:MEmass2 0 0.134978 insert Xi*_b-Width:MEmass2 1 0.13957 insert Xi*_b-Width:DecayModes 0 Xi_b*-->Xi_b-,pi0; insert Xi*_b-Width:DecayModes 1 Xi_b*-->Xi_b0,pi-; insert Xi*_b-Width:NumberofEntries 0 0 insert Xi*_b-Width:NumberofEntries 1 0 insert Xi*_b-Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Xi*_b-Width:ModeLocation 0 24 insert Xi*_b-Width:BaryonDecayers 1 /Herwig/Decays/HeavyStrong insert Xi*_b-Width:ModeLocation 1 25 newdef /Herwig/Particles/Xi_b*-:Width_generator Xi*_b-Width newdef /Herwig/Particles/Xi_b*bar+:Width_generator Xi*_b-Width # create Herwig::BaryonWidthGenerator Lambda'_cWidth newdef Lambda'_cWidth:Particle /Herwig/Particles/Lambda_c(2593)+ newdef Lambda'_cWidth:Prefactor 1.00141 newdef Lambda'_cWidth:BRNormalize 1 newdef Lambda'_cWidth:BRMinimum 0.01 newdef Lambda'_cWidth:Points 50 newdef Lambda'_cWidth:InterpolationOrder 1 insert Lambda'_cWidth:MEtype 0 0 insert Lambda'_cWidth:MEtype 1 0 insert Lambda'_cWidth:MEtype 2 2 insert Lambda'_cWidth:MEtype 3 2 insert Lambda'_cWidth:MEtype 4 2 insert Lambda'_cWidth:MEcode 0 0 insert Lambda'_cWidth:MEcode 1 0 insert Lambda'_cWidth:MEcode 2 0 insert Lambda'_cWidth:MEcode 3 0 insert Lambda'_cWidth:MEcode 4 0 insert Lambda'_cWidth:MEcoupling 0 0.186667 insert Lambda'_cWidth:MEcoupling 1 0.093333 insert Lambda'_cWidth:MEcoupling 2 0.528332 insert Lambda'_cWidth:MEcoupling 3 1.15368 insert Lambda'_cWidth:MEcoupling 4 1.07405 insert Lambda'_cWidth:ModeOn 0 1 insert Lambda'_cWidth:ModeOn 1 1 insert Lambda'_cWidth:ModeOn 2 1 insert Lambda'_cWidth:ModeOn 3 1 insert Lambda'_cWidth:ModeOn 4 1 insert Lambda'_cWidth:MinimumMasses 0 2.5656 insert Lambda'_cWidth:MinimumMasses 1 2.55642 insert Lambda'_cWidth:MinimumMasses 2 2.56558 insert Lambda'_cWidth:MinimumMasses 3 2.57129 insert Lambda'_cWidth:MinimumMasses 4 2.57133 insert Lambda'_cWidth:MEmass1 0 0 insert Lambda'_cWidth:MEmass1 1 0 insert Lambda'_cWidth:MEmass1 2 2.4529 insert Lambda'_cWidth:MEmass1 3 2.45402 insert Lambda'_cWidth:MEmass1 4 2.45376 insert Lambda'_cWidth:MEmass2 0 0 insert Lambda'_cWidth:MEmass2 1 0 insert Lambda'_cWidth:MEmass2 2 0.134978 insert Lambda'_cWidth:MEmass2 3 0.13957 insert Lambda'_cWidth:MEmass2 4 0.13957 insert Lambda'_cWidth:DecayModes 0 Lambda_c(2593)+->Lambda_c+,pi+,pi-; insert Lambda'_cWidth:DecayModes 1 Lambda_c(2593)+->Lambda_c+,pi0,pi0; insert Lambda'_cWidth:DecayModes 2 Lambda_c(2593)+->Sigma_c+,pi0; insert Lambda'_cWidth:DecayModes 3 Lambda_c(2593)+->Sigma_c++,pi-; insert Lambda'_cWidth:DecayModes 4 Lambda_c(2593)+->Sigma_c0,pi+; insert Lambda'_cWidth:InterpolationMasses 0 2.5759306 insert Lambda'_cWidth:InterpolationMasses 1 2.5766653 insert Lambda'_cWidth:InterpolationMasses 2 2.5774 insert Lambda'_cWidth:InterpolationMasses 3 2.5781347 insert Lambda'_cWidth:InterpolationMasses 4 2.5788694 insert Lambda'_cWidth:InterpolationMasses 5 2.5796041 insert Lambda'_cWidth:InterpolationMasses 6 2.5803388 insert Lambda'_cWidth:InterpolationMasses 7 2.5810735 insert Lambda'_cWidth:InterpolationMasses 8 2.5818082 insert Lambda'_cWidth:InterpolationMasses 9 2.5825429 insert Lambda'_cWidth:InterpolationMasses 10 2.5832776 insert Lambda'_cWidth:InterpolationMasses 11 2.5840122 insert Lambda'_cWidth:InterpolationMasses 12 2.5847469 insert Lambda'_cWidth:InterpolationMasses 13 2.5854816 insert Lambda'_cWidth:InterpolationMasses 14 2.5862163 insert Lambda'_cWidth:InterpolationMasses 15 2.586951 insert Lambda'_cWidth:InterpolationMasses 16 2.5876857 insert Lambda'_cWidth:InterpolationMasses 17 2.5884204 insert Lambda'_cWidth:InterpolationMasses 18 2.5891551 insert Lambda'_cWidth:InterpolationMasses 19 2.5898898 insert Lambda'_cWidth:InterpolationMasses 20 2.5906245 insert Lambda'_cWidth:InterpolationMasses 21 2.5913592 insert Lambda'_cWidth:InterpolationMasses 22 2.5920939 insert Lambda'_cWidth:InterpolationMasses 23 2.5928286 insert Lambda'_cWidth:InterpolationMasses 24 2.5935633 insert Lambda'_cWidth:InterpolationMasses 25 2.594298 insert Lambda'_cWidth:InterpolationMasses 26 2.5950327 insert Lambda'_cWidth:InterpolationMasses 27 2.5957673 insert Lambda'_cWidth:InterpolationMasses 28 2.596502 insert Lambda'_cWidth:InterpolationMasses 29 2.5972367 insert Lambda'_cWidth:InterpolationMasses 30 2.5979714 insert Lambda'_cWidth:InterpolationMasses 31 2.5987061 insert Lambda'_cWidth:InterpolationMasses 32 2.5994408 insert Lambda'_cWidth:InterpolationMasses 33 2.6001755 insert Lambda'_cWidth:InterpolationMasses 34 2.6009102 insert Lambda'_cWidth:InterpolationMasses 35 2.6016449 insert Lambda'_cWidth:InterpolationMasses 36 2.6023796 insert Lambda'_cWidth:InterpolationMasses 37 2.6031143 insert Lambda'_cWidth:InterpolationMasses 38 2.603849 insert Lambda'_cWidth:InterpolationMasses 39 2.6045837 insert Lambda'_cWidth:InterpolationMasses 40 2.6053184 insert Lambda'_cWidth:InterpolationMasses 41 2.6060531 insert Lambda'_cWidth:InterpolationMasses 42 2.6067878 insert Lambda'_cWidth:InterpolationMasses 43 2.6075224 insert Lambda'_cWidth:InterpolationMasses 44 2.6082571 insert Lambda'_cWidth:InterpolationMasses 45 2.6089918 insert Lambda'_cWidth:InterpolationMasses 46 2.6097265 insert Lambda'_cWidth:InterpolationMasses 47 2.6104612 insert Lambda'_cWidth:InterpolationMasses 48 2.6111959 insert Lambda'_cWidth:InterpolationMasses 49 2.6119306 insert Lambda'_cWidth:InterpolationMasses 50 2.6126653 insert Lambda'_cWidth:InterpolationMasses 51 2.6134 insert Lambda'_cWidth:InterpolationMasses 52 2.6141347 insert Lambda'_cWidth:InterpolationMasses 53 2.6148694 insert Lambda'_cWidth:InterpolationMasses 54 2.5759306 insert Lambda'_cWidth:InterpolationMasses 55 2.5766653 insert Lambda'_cWidth:InterpolationMasses 56 2.5774 insert Lambda'_cWidth:InterpolationMasses 57 2.5781347 insert Lambda'_cWidth:InterpolationMasses 58 2.5788694 insert Lambda'_cWidth:InterpolationMasses 59 2.5796041 insert Lambda'_cWidth:InterpolationMasses 60 2.5803388 insert Lambda'_cWidth:InterpolationMasses 61 2.5810735 insert Lambda'_cWidth:InterpolationMasses 62 2.5818082 insert Lambda'_cWidth:InterpolationMasses 63 2.5825429 insert Lambda'_cWidth:InterpolationMasses 64 2.5832776 insert Lambda'_cWidth:InterpolationMasses 65 2.5840122 insert Lambda'_cWidth:InterpolationMasses 66 2.5847469 insert Lambda'_cWidth:InterpolationMasses 67 2.5854816 insert Lambda'_cWidth:InterpolationMasses 68 2.5862163 insert Lambda'_cWidth:InterpolationMasses 69 2.586951 insert Lambda'_cWidth:InterpolationMasses 70 2.5876857 insert Lambda'_cWidth:InterpolationMasses 71 2.5884204 insert Lambda'_cWidth:InterpolationMasses 72 2.5891551 insert Lambda'_cWidth:InterpolationMasses 73 2.5898898 insert Lambda'_cWidth:InterpolationMasses 74 2.5906245 insert Lambda'_cWidth:InterpolationMasses 75 2.5913592 insert Lambda'_cWidth:InterpolationMasses 76 2.5920939 insert Lambda'_cWidth:InterpolationMasses 77 2.5928286 insert Lambda'_cWidth:InterpolationMasses 78 2.5935633 insert Lambda'_cWidth:InterpolationMasses 79 2.594298 insert Lambda'_cWidth:InterpolationMasses 80 2.5950327 insert Lambda'_cWidth:InterpolationMasses 81 2.5957673 insert Lambda'_cWidth:InterpolationMasses 82 2.596502 insert Lambda'_cWidth:InterpolationMasses 83 2.5972367 insert Lambda'_cWidth:InterpolationMasses 84 2.5979714 insert Lambda'_cWidth:InterpolationMasses 85 2.5987061 insert Lambda'_cWidth:InterpolationMasses 86 2.5994408 insert Lambda'_cWidth:InterpolationMasses 87 2.6001755 insert Lambda'_cWidth:InterpolationMasses 88 2.6009102 insert Lambda'_cWidth:InterpolationMasses 89 2.6016449 insert Lambda'_cWidth:InterpolationMasses 90 2.6023796 insert Lambda'_cWidth:InterpolationMasses 91 2.6031143 insert Lambda'_cWidth:InterpolationMasses 92 2.603849 insert Lambda'_cWidth:InterpolationMasses 93 2.6045837 insert Lambda'_cWidth:InterpolationMasses 94 2.6053184 insert Lambda'_cWidth:InterpolationMasses 95 2.6060531 insert Lambda'_cWidth:InterpolationMasses 96 2.6067878 insert Lambda'_cWidth:InterpolationMasses 97 2.6075224 insert Lambda'_cWidth:InterpolationMasses 98 2.6082571 insert Lambda'_cWidth:InterpolationMasses 99 2.6089918 insert Lambda'_cWidth:InterpolationMasses 100 2.6097265 insert Lambda'_cWidth:InterpolationMasses 101 2.6104612 insert Lambda'_cWidth:InterpolationMasses 102 2.6111959 insert Lambda'_cWidth:InterpolationMasses 103 2.6119306 insert Lambda'_cWidth:InterpolationMasses 104 2.6126653 insert Lambda'_cWidth:InterpolationMasses 105 2.6134 insert Lambda'_cWidth:InterpolationMasses 106 2.6141347 insert Lambda'_cWidth:InterpolationMasses 107 2.6148694 insert Lambda'_cWidth:InterpolationMasses 108 2.5759306 insert Lambda'_cWidth:InterpolationMasses 109 2.5766653 insert Lambda'_cWidth:InterpolationMasses 110 2.5774 insert Lambda'_cWidth:InterpolationMasses 111 2.5781347 insert Lambda'_cWidth:InterpolationMasses 112 2.5788694 insert Lambda'_cWidth:InterpolationMasses 113 2.5796041 insert Lambda'_cWidth:InterpolationMasses 114 2.5803388 insert Lambda'_cWidth:InterpolationMasses 115 2.5810735 insert Lambda'_cWidth:InterpolationMasses 116 2.5818082 insert Lambda'_cWidth:InterpolationMasses 117 2.5825429 insert Lambda'_cWidth:InterpolationMasses 118 2.5832776 insert Lambda'_cWidth:InterpolationMasses 119 2.5840122 insert Lambda'_cWidth:InterpolationMasses 120 2.5847469 insert Lambda'_cWidth:InterpolationMasses 121 2.5854816 insert Lambda'_cWidth:InterpolationMasses 122 2.5862163 insert Lambda'_cWidth:InterpolationMasses 123 2.586951 insert Lambda'_cWidth:InterpolationMasses 124 2.5876857 insert Lambda'_cWidth:InterpolationMasses 125 2.5884204 insert Lambda'_cWidth:InterpolationMasses 126 2.5891551 insert Lambda'_cWidth:InterpolationMasses 127 2.5898898 insert Lambda'_cWidth:InterpolationMasses 128 2.5906245 insert Lambda'_cWidth:InterpolationMasses 129 2.5913592 insert Lambda'_cWidth:InterpolationMasses 130 2.5920939 insert Lambda'_cWidth:InterpolationMasses 131 2.5928286 insert Lambda'_cWidth:InterpolationMasses 132 2.5935633 insert Lambda'_cWidth:InterpolationMasses 133 2.594298 insert Lambda'_cWidth:InterpolationMasses 134 2.5950327 insert Lambda'_cWidth:InterpolationMasses 135 2.5957673 insert Lambda'_cWidth:InterpolationMasses 136 2.596502 insert Lambda'_cWidth:InterpolationMasses 137 2.5972367 insert Lambda'_cWidth:InterpolationMasses 138 2.5979714 insert Lambda'_cWidth:InterpolationMasses 139 2.5987061 insert Lambda'_cWidth:InterpolationMasses 140 2.5994408 insert Lambda'_cWidth:InterpolationMasses 141 2.6001755 insert Lambda'_cWidth:InterpolationMasses 142 2.6009102 insert Lambda'_cWidth:InterpolationMasses 143 2.6016449 insert Lambda'_cWidth:InterpolationMasses 144 2.6023796 insert Lambda'_cWidth:InterpolationMasses 145 2.6031143 insert Lambda'_cWidth:InterpolationMasses 146 2.603849 insert Lambda'_cWidth:InterpolationMasses 147 2.6045837 insert Lambda'_cWidth:InterpolationMasses 148 2.6053184 insert Lambda'_cWidth:InterpolationMasses 149 2.6060531 insert Lambda'_cWidth:InterpolationMasses 150 2.6067878 insert Lambda'_cWidth:InterpolationMasses 151 2.6075224 insert Lambda'_cWidth:InterpolationMasses 152 2.6082571 insert Lambda'_cWidth:InterpolationMasses 153 2.6089918 insert Lambda'_cWidth:InterpolationMasses 154 2.6097265 insert Lambda'_cWidth:InterpolationMasses 155 2.6104612 insert Lambda'_cWidth:InterpolationMasses 156 2.6111959 insert Lambda'_cWidth:InterpolationMasses 157 2.6119306 insert Lambda'_cWidth:InterpolationMasses 158 2.6126653 insert Lambda'_cWidth:InterpolationMasses 159 2.6134 insert Lambda'_cWidth:InterpolationMasses 160 2.6141347 insert Lambda'_cWidth:InterpolationMasses 161 2.6148694 insert Lambda'_cWidth:InterpolationWidths 0 4.8223351e-06 insert Lambda'_cWidth:InterpolationWidths 1 5.9013195e-06 insert Lambda'_cWidth:InterpolationWidths 2 7.1986726e-06 insert Lambda'_cWidth:InterpolationWidths 3 8.7645742e-06 insert Lambda'_cWidth:InterpolationWidths 4 1.0664368e-05 insert Lambda'_cWidth:InterpolationWidths 5 1.2984658e-05 insert Lambda'_cWidth:InterpolationWidths 6 1.58426e-05 insert Lambda'_cWidth:InterpolationWidths 7 1.9400554e-05 insert Lambda'_cWidth:InterpolationWidths 8 2.3890048e-05 insert Lambda'_cWidth:InterpolationWidths 9 2.9652826e-05 insert Lambda'_cWidth:InterpolationWidths 10 3.7214975e-05 insert Lambda'_cWidth:InterpolationWidths 11 4.7429736e-05 insert Lambda'_cWidth:InterpolationWidths 12 6.1774764e-05 insert Lambda'_cWidth:InterpolationWidths 13 8.3029624e-05 insert Lambda'_cWidth:InterpolationWidths 14 0.00011696739 insert Lambda'_cWidth:InterpolationWidths 15 0.00017659449 insert Lambda'_cWidth:InterpolationWidths 16 0.00028667344 insert Lambda'_cWidth:InterpolationWidths 17 0.00045232841 insert Lambda'_cWidth:InterpolationWidths 18 0.00062807473 insert Lambda'_cWidth:InterpolationWidths 19 0.00078837408 insert Lambda'_cWidth:InterpolationWidths 20 0.0009320545 insert Lambda'_cWidth:InterpolationWidths 21 0.0010622965 insert Lambda'_cWidth:InterpolationWidths 22 0.0011819691 insert Lambda'_cWidth:InterpolationWidths 23 0.0012932069 insert Lambda'_cWidth:InterpolationWidths 24 0.0013975698 insert Lambda'_cWidth:InterpolationWidths 25 0.0014962161 insert Lambda'_cWidth:InterpolationWidths 26 0.0015900252 insert Lambda'_cWidth:InterpolationWidths 27 0.00167968 insert Lambda'_cWidth:InterpolationWidths 28 0.0017657211 insert Lambda'_cWidth:InterpolationWidths 29 0.0018485846 insert Lambda'_cWidth:InterpolationWidths 30 0.001928615 insert Lambda'_cWidth:InterpolationWidths 31 0.0020061328 insert Lambda'_cWidth:InterpolationWidths 32 0.002081376 insert Lambda'_cWidth:InterpolationWidths 33 0.0021545563 insert Lambda'_cWidth:InterpolationWidths 34 0.0022258553 insert Lambda'_cWidth:InterpolationWidths 35 0.0022954301 insert Lambda'_cWidth:InterpolationWidths 36 0.0023634175 insert Lambda'_cWidth:InterpolationWidths 37 0.0024299376 insert Lambda'_cWidth:InterpolationWidths 38 0.0024950967 insert Lambda'_cWidth:InterpolationWidths 39 0.0025589887 insert Lambda'_cWidth:InterpolationWidths 40 0.002621698 insert Lambda'_cWidth:InterpolationWidths 41 0.0026832998 insert Lambda'_cWidth:InterpolationWidths 42 0.0027438621 insert Lambda'_cWidth:InterpolationWidths 43 0.0028034465 insert Lambda'_cWidth:InterpolationWidths 44 0.0028621086 insert Lambda'_cWidth:InterpolationWidths 45 0.0029198993 insert Lambda'_cWidth:InterpolationWidths 46 0.0029768651 insert Lambda'_cWidth:InterpolationWidths 47 0.0030329294 insert Lambda'_cWidth:InterpolationWidths 48 0.0030877264 insert Lambda'_cWidth:InterpolationWidths 49 0.0031415356 insert Lambda'_cWidth:InterpolationWidths 50 0.0031944755 insert Lambda'_cWidth:InterpolationWidths 51 0.0032466231 insert Lambda'_cWidth:InterpolationWidths 52 0.0032980342 insert Lambda'_cWidth:InterpolationWidths 53 0.0033487549 insert Lambda'_cWidth:InterpolationWidths 54 5.0502879e-07 insert Lambda'_cWidth:InterpolationWidths 55 6.9891369e-07 insert Lambda'_cWidth:InterpolationWidths 56 9.4063693e-07 insert Lambda'_cWidth:InterpolationWidths 57 1.2393663e-06 insert Lambda'_cWidth:InterpolationWidths 58 1.606184e-06 insert Lambda'_cWidth:InterpolationWidths 59 2.0545587e-06 insert Lambda'_cWidth:InterpolationWidths 60 2.6009707e-06 insert Lambda'_cWidth:InterpolationWidths 61 3.2657464e-06 insert Lambda'_cWidth:InterpolationWidths 62 4.0741867e-06 insert Lambda'_cWidth:InterpolationWidths 63 5.0581161e-06 insert Lambda'_cWidth:InterpolationWidths 64 6.2580471e-06 insert Lambda'_cWidth:InterpolationWidths 65 7.7262612e-06 insert Lambda'_cWidth:InterpolationWidths 66 9.5312977e-06 insert Lambda'_cWidth:InterpolationWidths 67 1.1764658e-05 insert Lambda'_cWidth:InterpolationWidths 68 1.4551116e-05 insert Lambda'_cWidth:InterpolationWidths 69 1.8065125e-05 insert Lambda'_cWidth:InterpolationWidths 70 2.2557974e-05 insert Lambda'_cWidth:InterpolationWidths 71 2.840489e-05 insert Lambda'_cWidth:InterpolationWidths 72 3.6191451e-05 insert Lambda'_cWidth:InterpolationWidths 73 4.6883146e-05 insert Lambda'_cWidth:InterpolationWidths 74 6.2186129e-05 insert Lambda'_cWidth:InterpolationWidths 75 8.5389788e-05 insert Lambda'_cWidth:InterpolationWidths 76 0.00012351015 insert Lambda'_cWidth:InterpolationWidths 77 0.00019243062 insert Lambda'_cWidth:InterpolationWidths 78 0.00031816627 insert Lambda'_cWidth:InterpolationWidths 79 0.00049246085 insert Lambda'_cWidth:InterpolationWidths 80 0.00066758839 insert Lambda'_cWidth:InterpolationWidths 81 0.00082582323 insert Lambda'_cWidth:InterpolationWidths 82 0.00096797472 insert Lambda'_cWidth:InterpolationWidths 83 0.0010972975 insert Lambda'_cWidth:InterpolationWidths 84 0.0012165034 insert Lambda'_cWidth:InterpolationWidths 85 0.0013275917 insert Lambda'_cWidth:InterpolationWidths 86 0.0014320287 insert Lambda'_cWidth:InterpolationWidths 87 0.0015309091 insert Lambda'_cWidth:InterpolationWidths 88 0.0016250688 insert Lambda'_cWidth:InterpolationWidths 89 0.0017151604 insert Lambda'_cWidth:InterpolationWidths 90 0.0018017032 insert Lambda'_cWidth:InterpolationWidths 91 0.0018851051 insert Lambda'_cWidth:InterpolationWidths 92 0.0019657351 insert Lambda'_cWidth:InterpolationWidths 93 0.0020438699 insert Lambda'_cWidth:InterpolationWidths 94 0.0021197523 insert Lambda'_cWidth:InterpolationWidths 95 0.0021935888 insert Lambda'_cWidth:InterpolationWidths 96 0.002265557 insert Lambda'_cWidth:InterpolationWidths 97 0.002335811 insert Lambda'_cWidth:InterpolationWidths 98 0.002404485 insert Lambda'_cWidth:InterpolationWidths 99 0.0024716971 insert Lambda'_cWidth:InterpolationWidths 100 0.0025375519 insert Lambda'_cWidth:InterpolationWidths 101 0.0026021421 insert Lambda'_cWidth:InterpolationWidths 102 0.002665551 insert Lambda'_cWidth:InterpolationWidths 103 0.0027278529 insert Lambda'_cWidth:InterpolationWidths 104 0.0027891152 insert Lambda'_cWidth:InterpolationWidths 105 0.0028493987 insert Lambda'_cWidth:InterpolationWidths 106 0.0029087588 insert Lambda'_cWidth:InterpolationWidths 107 0.0029672458 insert Lambda'_cWidth:InterpolationWidths 108 5.1580176e-07 insert Lambda'_cWidth:InterpolationWidths 109 7.153467e-07 insert Lambda'_cWidth:InterpolationWidths 110 9.6447313e-07 insert Lambda'_cWidth:InterpolationWidths 111 1.2727822e-06 insert Lambda'_cWidth:InterpolationWidths 112 1.651912e-06 insert Lambda'_cWidth:InterpolationWidths 113 2.1160494e-06 insert Lambda'_cWidth:InterpolationWidths 114 2.6826104e-06 insert Lambda'_cWidth:InterpolationWidths 115 3.3731521e-06 insert Lambda'_cWidth:InterpolationWidths 116 4.2146146e-06 insert Lambda'_cWidth:InterpolationWidths 117 5.2410355e-06 insert Lambda'_cWidth:InterpolationWidths 118 6.4959611e-06 insert Lambda'_cWidth:InterpolationWidths 119 8.035908e-06 insert Lambda'_cWidth:InterpolationWidths 120 9.9354495e-06 insert Lambda'_cWidth:InterpolationWidths 121 1.2294892e-05 insert Lambda'_cWidth:InterpolationWidths 122 1.5252219e-05 insert Lambda'_cWidth:InterpolationWidths 123 1.9002365e-05 insert Lambda'_cWidth:InterpolationWidths 124 2.3829637e-05 insert Lambda'_cWidth:InterpolationWidths 125 3.0165065e-05 insert Lambda'_cWidth:InterpolationWidths 126 3.8694129e-05 insert Lambda'_cWidth:InterpolationWidths 127 5.0574336e-05 insert Lambda'_cWidth:InterpolationWidths 128 6.7914586e-05 insert Lambda'_cWidth:InterpolationWidths 129 9.4939332e-05 insert Lambda'_cWidth:InterpolationWidths 130 0.00014102134 insert Lambda'_cWidth:InterpolationWidths 131 0.00022697241 insert Lambda'_cWidth:InterpolationWidths 132 0.00037539889 insert Lambda'_cWidth:InterpolationWidths 133 0.00055569581 insert Lambda'_cWidth:InterpolationWidths 134 0.00072603738 insert Lambda'_cWidth:InterpolationWidths 135 0.00087861711 insert Lambda'_cWidth:InterpolationWidths 136 0.0010161028 insert Lambda'_cWidth:InterpolationWidths 137 0.0011417262 insert Lambda'_cWidth:InterpolationWidths 138 0.0012579681 insert Lambda'_cWidth:InterpolationWidths 139 0.0013666354 insert Lambda'_cWidth:InterpolationWidths 140 0.0014690567 insert Lambda'_cWidth:InterpolationWidths 141 0.0015662302 insert Lambda'_cWidth:InterpolationWidths 142 0.0016589234 insert Lambda'_cWidth:InterpolationWidths 143 0.0017477392 insert Lambda'_cWidth:InterpolationWidths 144 0.0018331598 insert Lambda'_cWidth:InterpolationWidths 145 0.0019155652 insert Lambda'_cWidth:InterpolationWidths 146 0.0019953039 insert Lambda'_cWidth:InterpolationWidths 147 0.0020726357 insert Lambda'_cWidth:InterpolationWidths 148 0.0021477899 insert Lambda'_cWidth:InterpolationWidths 149 0.0022209625 insert Lambda'_cWidth:InterpolationWidths 150 0.0022923224 insert Lambda'_cWidth:InterpolationWidths 151 0.0023620164 insert Lambda'_cWidth:InterpolationWidths 152 0.0024301729 insert Lambda'_cWidth:InterpolationWidths 153 0.0024969052 insert Lambda'_cWidth:InterpolationWidths 154 0.0025623135 insert Lambda'_cWidth:InterpolationWidths 155 0.002626487 insert Lambda'_cWidth:InterpolationWidths 156 0.0026895058 insert Lambda'_cWidth:InterpolationWidths 157 0.0027514417 insert Lambda'_cWidth:InterpolationWidths 158 0.0028123598 insert Lambda'_cWidth:InterpolationWidths 159 0.0028723188 insert Lambda'_cWidth:InterpolationWidths 160 0.0029313724 insert Lambda'_cWidth:InterpolationWidths 161 0.0029895694 insert Lambda'_cWidth:NumberofEntries 0 0 insert Lambda'_cWidth:NumberofEntries 1 0 insert Lambda'_cWidth:NumberofEntries 2 54 insert Lambda'_cWidth:NumberofEntries 3 108 insert Lambda'_cWidth:NumberofEntries 4 162 insert Lambda'_cWidth:BaryonDecayers 0 NULL insert Lambda'_cWidth:ModeLocation 0 -1 insert Lambda'_cWidth:BaryonDecayers 1 NULL insert Lambda'_cWidth:ModeLocation 1 -1 insert Lambda'_cWidth:BaryonDecayers 2 /Herwig/Decays/HeavyStrong insert Lambda'_cWidth:ModeLocation 2 11 insert Lambda'_cWidth:BaryonDecayers 3 /Herwig/Decays/HeavyStrong insert Lambda'_cWidth:ModeLocation 3 10 insert Lambda'_cWidth:BaryonDecayers 4 /Herwig/Decays/HeavyStrong insert Lambda'_cWidth:ModeLocation 4 12 newdef /Herwig/Particles/Lambda_c(2593)+:Width_generator Lambda'_cWidth newdef /Herwig/Particles/Lambda_c(2593)bar-:Width_generator Lambda'_cWidth # create Herwig::BaryonWidthGenerator Lambda*_cWidth newdef Lambda*_cWidth:Particle /Herwig/Particles/Lambda_c(2625)+ newdef Lambda*_cWidth:Prefactor 1 newdef Lambda*_cWidth:BRNormalize 1 newdef Lambda*_cWidth:BRMinimum 0.01 newdef Lambda*_cWidth:Points 50 newdef Lambda*_cWidth:InterpolationOrder 1 insert Lambda*_cWidth:MEtype 0 0 insert Lambda*_cWidth:MEtype 1 0 insert Lambda*_cWidth:MEcode 0 0 insert Lambda*_cWidth:MEcode 1 0 insert Lambda*_cWidth:MEcoupling 0 0.666667 insert Lambda*_cWidth:MEcoupling 1 0.333333 insert Lambda*_cWidth:ModeOn 0 1 insert Lambda*_cWidth:ModeOn 1 1 insert Lambda*_cWidth:MinimumMasses 0 2.5656 insert Lambda*_cWidth:MinimumMasses 1 2.55642 insert Lambda*_cWidth:MEmass1 0 0 insert Lambda*_cWidth:MEmass1 1 0 insert Lambda*_cWidth:MEmass2 0 0 insert Lambda*_cWidth:MEmass2 1 0 insert Lambda*_cWidth:DecayModes 0 Lambda_c(2625)+->Lambda_c+,pi+,pi-; insert Lambda*_cWidth:DecayModes 1 Lambda_c(2625)+->Lambda_c+,pi0,pi0; insert Lambda*_cWidth:NumberofEntries 0 0 insert Lambda*_cWidth:NumberofEntries 1 0 insert Lambda*_cWidth:BaryonDecayers 0 NULL insert Lambda*_cWidth:ModeLocation 0 -1 insert Lambda*_cWidth:BaryonDecayers 1 NULL insert Lambda*_cWidth:ModeLocation 1 -1 newdef /Herwig/Particles/Lambda_c(2625)+:Width_generator Lambda*_cWidth newdef /Herwig/Particles/Lambda_c(2625)bar-:Width_generator Lambda*_cWidth # create Herwig::BaryonWidthGenerator Lambda'_bWidth newdef Lambda'_bWidth:Particle /Herwig/Particles/Lambda_b10 newdef Lambda'_bWidth:Prefactor 1.00013 newdef Lambda'_bWidth:BRNormalize 1 newdef Lambda'_bWidth:BRMinimum 0.01 newdef Lambda'_bWidth:Points 50 newdef Lambda'_bWidth:InterpolationOrder 1 insert Lambda'_bWidth:MEtype 0 0 insert Lambda'_bWidth:MEtype 1 0 insert Lambda'_bWidth:MEtype 2 2 insert Lambda'_bWidth:MEtype 3 2 insert Lambda'_bWidth:MEtype 4 2 insert Lambda'_bWidth:MEcode 0 0 insert Lambda'_bWidth:MEcode 1 0 insert Lambda'_bWidth:MEcode 2 0 insert Lambda'_bWidth:MEcode 3 0 insert Lambda'_bWidth:MEcode 4 0 insert Lambda'_bWidth:MEcoupling 0 0.186667 insert Lambda'_bWidth:MEcoupling 1 0.093333 insert Lambda'_bWidth:MEcoupling 2 1.14919 insert Lambda'_bWidth:MEcoupling 3 0.541206 insert Lambda'_bWidth:MEcoupling 4 0.536724 insert Lambda'_bWidth:ModeOn 0 1 insert Lambda'_bWidth:ModeOn 1 1 insert Lambda'_bWidth:ModeOn 2 1 insert Lambda'_bWidth:ModeOn 3 1 insert Lambda'_bWidth:ModeOn 4 1 insert Lambda'_bWidth:MinimumMasses 0 5.90314 insert Lambda'_bWidth:MinimumMasses 1 5.89396 insert Lambda'_bWidth:MinimumMasses 2 5.91177 insert Lambda'_bWidth:MinimumMasses 3 5.91437 insert Lambda'_bWidth:MinimumMasses 4 5.90398 insert Lambda'_bWidth:MEmass1 0 0 insert Lambda'_bWidth:MEmass1 1 0 insert Lambda'_bWidth:MEmass1 2 5.8152 insert Lambda'_bWidth:MEmass1 3 5.8078 insert Lambda'_bWidth:MEmass1 4 5.8115 insert Lambda'_bWidth:MEmass2 0 0 insert Lambda'_bWidth:MEmass2 1 0 insert Lambda'_bWidth:MEmass2 2 0.13957 insert Lambda'_bWidth:MEmass2 3 0.13957 insert Lambda'_bWidth:MEmass2 4 0.134978 insert Lambda'_bWidth:DecayModes 0 Lambda_b10->Lambda_b0,pi+,pi-; insert Lambda'_bWidth:DecayModes 1 Lambda_b10->Lambda_b0,pi0,pi0; insert Lambda'_bWidth:DecayModes 2 Lambda_b10->Sigma_b-,pi+; insert Lambda'_bWidth:DecayModes 3 Lambda_b10->Sigma_b+,pi-; insert Lambda'_bWidth:DecayModes 4 Lambda_b10->Sigma_b0,pi0; insert Lambda'_bWidth:InterpolationMasses 0 5.934551 insert Lambda'_bWidth:InterpolationMasses 1 5.9357755 insert Lambda'_bWidth:InterpolationMasses 2 5.937 insert Lambda'_bWidth:InterpolationMasses 3 5.9382245 insert Lambda'_bWidth:InterpolationMasses 4 5.939449 insert Lambda'_bWidth:InterpolationMasses 5 5.9406735 insert Lambda'_bWidth:InterpolationMasses 6 5.941898 insert Lambda'_bWidth:InterpolationMasses 7 5.9431224 insert Lambda'_bWidth:InterpolationMasses 8 5.9443469 insert Lambda'_bWidth:InterpolationMasses 9 5.9455714 insert Lambda'_bWidth:InterpolationMasses 10 5.9467959 insert Lambda'_bWidth:InterpolationMasses 11 5.9480204 insert Lambda'_bWidth:InterpolationMasses 12 5.9492449 insert Lambda'_bWidth:InterpolationMasses 13 5.9504694 insert Lambda'_bWidth:InterpolationMasses 14 5.9516939 insert Lambda'_bWidth:InterpolationMasses 15 5.9529184 insert Lambda'_bWidth:InterpolationMasses 16 5.9541429 insert Lambda'_bWidth:InterpolationMasses 17 5.9553673 insert Lambda'_bWidth:InterpolationMasses 18 5.9565918 insert Lambda'_bWidth:InterpolationMasses 19 5.9578163 insert Lambda'_bWidth:InterpolationMasses 20 5.9590408 insert Lambda'_bWidth:InterpolationMasses 21 5.9602653 insert Lambda'_bWidth:InterpolationMasses 22 5.9614898 insert Lambda'_bWidth:InterpolationMasses 23 5.9627143 insert Lambda'_bWidth:InterpolationMasses 24 5.9639388 insert Lambda'_bWidth:InterpolationMasses 25 5.9651633 insert Lambda'_bWidth:InterpolationMasses 26 5.9663878 insert Lambda'_bWidth:InterpolationMasses 27 5.9676122 insert Lambda'_bWidth:InterpolationMasses 28 5.9688367 insert Lambda'_bWidth:InterpolationMasses 29 5.9700612 insert Lambda'_bWidth:InterpolationMasses 30 5.9712857 insert Lambda'_bWidth:InterpolationMasses 31 5.9725102 insert Lambda'_bWidth:InterpolationMasses 32 5.9737347 insert Lambda'_bWidth:InterpolationMasses 33 5.9749592 insert Lambda'_bWidth:InterpolationMasses 34 5.9761837 insert Lambda'_bWidth:InterpolationMasses 35 5.9774082 insert Lambda'_bWidth:InterpolationMasses 36 5.9786327 insert Lambda'_bWidth:InterpolationMasses 37 5.9798571 insert Lambda'_bWidth:InterpolationMasses 38 5.9810816 insert Lambda'_bWidth:InterpolationMasses 39 5.9823061 insert Lambda'_bWidth:InterpolationMasses 40 5.9835306 insert Lambda'_bWidth:InterpolationMasses 41 5.9847551 insert Lambda'_bWidth:InterpolationMasses 42 5.9859796 insert Lambda'_bWidth:InterpolationMasses 43 5.9872041 insert Lambda'_bWidth:InterpolationMasses 44 5.9884286 insert Lambda'_bWidth:InterpolationMasses 45 5.9896531 insert Lambda'_bWidth:InterpolationMasses 46 5.9908776 insert Lambda'_bWidth:InterpolationMasses 47 5.992102 insert Lambda'_bWidth:InterpolationMasses 48 5.9933265 insert Lambda'_bWidth:InterpolationMasses 49 5.994551 insert Lambda'_bWidth:InterpolationMasses 50 5.9957755 insert Lambda'_bWidth:InterpolationMasses 51 5.997 insert Lambda'_bWidth:InterpolationMasses 52 5.9982245 insert Lambda'_bWidth:InterpolationMasses 53 5.999449 insert Lambda'_bWidth:InterpolationMasses 54 5.934551 insert Lambda'_bWidth:InterpolationMasses 55 5.9357755 insert Lambda'_bWidth:InterpolationMasses 56 5.937 insert Lambda'_bWidth:InterpolationMasses 57 5.9382245 insert Lambda'_bWidth:InterpolationMasses 58 5.939449 insert Lambda'_bWidth:InterpolationMasses 59 5.9406735 insert Lambda'_bWidth:InterpolationMasses 60 5.941898 insert Lambda'_bWidth:InterpolationMasses 61 5.9431224 insert Lambda'_bWidth:InterpolationMasses 62 5.9443469 insert Lambda'_bWidth:InterpolationMasses 63 5.9455714 insert Lambda'_bWidth:InterpolationMasses 64 5.9467959 insert Lambda'_bWidth:InterpolationMasses 65 5.9480204 insert Lambda'_bWidth:InterpolationMasses 66 5.9492449 insert Lambda'_bWidth:InterpolationMasses 67 5.9504694 insert Lambda'_bWidth:InterpolationMasses 68 5.9516939 insert Lambda'_bWidth:InterpolationMasses 69 5.9529184 insert Lambda'_bWidth:InterpolationMasses 70 5.9541429 insert Lambda'_bWidth:InterpolationMasses 71 5.9553673 insert Lambda'_bWidth:InterpolationMasses 72 5.9565918 insert Lambda'_bWidth:InterpolationMasses 73 5.9578163 insert Lambda'_bWidth:InterpolationMasses 74 5.9590408 insert Lambda'_bWidth:InterpolationMasses 75 5.9602653 insert Lambda'_bWidth:InterpolationMasses 76 5.9614898 insert Lambda'_bWidth:InterpolationMasses 77 5.9627143 insert Lambda'_bWidth:InterpolationMasses 78 5.9639388 insert Lambda'_bWidth:InterpolationMasses 79 5.9651633 insert Lambda'_bWidth:InterpolationMasses 80 5.9663878 insert Lambda'_bWidth:InterpolationMasses 81 5.9676122 insert Lambda'_bWidth:InterpolationMasses 82 5.9688367 insert Lambda'_bWidth:InterpolationMasses 83 5.9700612 insert Lambda'_bWidth:InterpolationMasses 84 5.9712857 insert Lambda'_bWidth:InterpolationMasses 85 5.9725102 insert Lambda'_bWidth:InterpolationMasses 86 5.9737347 insert Lambda'_bWidth:InterpolationMasses 87 5.9749592 insert Lambda'_bWidth:InterpolationMasses 88 5.9761837 insert Lambda'_bWidth:InterpolationMasses 89 5.9774082 insert Lambda'_bWidth:InterpolationMasses 90 5.9786327 insert Lambda'_bWidth:InterpolationMasses 91 5.9798571 insert Lambda'_bWidth:InterpolationMasses 92 5.9810816 insert Lambda'_bWidth:InterpolationMasses 93 5.9823061 insert Lambda'_bWidth:InterpolationMasses 94 5.9835306 insert Lambda'_bWidth:InterpolationMasses 95 5.9847551 insert Lambda'_bWidth:InterpolationMasses 96 5.9859796 insert Lambda'_bWidth:InterpolationMasses 97 5.9872041 insert Lambda'_bWidth:InterpolationMasses 98 5.9884286 insert Lambda'_bWidth:InterpolationMasses 99 5.9896531 insert Lambda'_bWidth:InterpolationMasses 100 5.9908776 insert Lambda'_bWidth:InterpolationMasses 101 5.992102 insert Lambda'_bWidth:InterpolationMasses 102 5.9933265 insert Lambda'_bWidth:InterpolationMasses 103 5.994551 insert Lambda'_bWidth:InterpolationMasses 104 5.9957755 insert Lambda'_bWidth:InterpolationMasses 105 5.997 insert Lambda'_bWidth:InterpolationMasses 106 5.9982245 insert Lambda'_bWidth:InterpolationMasses 107 5.999449 insert Lambda'_bWidth:InterpolationMasses 108 5.934551 insert Lambda'_bWidth:InterpolationMasses 109 5.9357755 insert Lambda'_bWidth:InterpolationMasses 110 5.937 insert Lambda'_bWidth:InterpolationMasses 111 5.9382245 insert Lambda'_bWidth:InterpolationMasses 112 5.939449 insert Lambda'_bWidth:InterpolationMasses 113 5.9406735 insert Lambda'_bWidth:InterpolationMasses 114 5.941898 insert Lambda'_bWidth:InterpolationMasses 115 5.9431224 insert Lambda'_bWidth:InterpolationMasses 116 5.9443469 insert Lambda'_bWidth:InterpolationMasses 117 5.9455714 insert Lambda'_bWidth:InterpolationMasses 118 5.9467959 insert Lambda'_bWidth:InterpolationMasses 119 5.9480204 insert Lambda'_bWidth:InterpolationMasses 120 5.9492449 insert Lambda'_bWidth:InterpolationMasses 121 5.9504694 insert Lambda'_bWidth:InterpolationMasses 122 5.9516939 insert Lambda'_bWidth:InterpolationMasses 123 5.9529184 insert Lambda'_bWidth:InterpolationMasses 124 5.9541429 insert Lambda'_bWidth:InterpolationMasses 125 5.9553673 insert Lambda'_bWidth:InterpolationMasses 126 5.9565918 insert Lambda'_bWidth:InterpolationMasses 127 5.9578163 insert Lambda'_bWidth:InterpolationMasses 128 5.9590408 insert Lambda'_bWidth:InterpolationMasses 129 5.9602653 insert Lambda'_bWidth:InterpolationMasses 130 5.9614898 insert Lambda'_bWidth:InterpolationMasses 131 5.9627143 insert Lambda'_bWidth:InterpolationMasses 132 5.9639388 insert Lambda'_bWidth:InterpolationMasses 133 5.9651633 insert Lambda'_bWidth:InterpolationMasses 134 5.9663878 insert Lambda'_bWidth:InterpolationMasses 135 5.9676122 insert Lambda'_bWidth:InterpolationMasses 136 5.9688367 insert Lambda'_bWidth:InterpolationMasses 137 5.9700612 insert Lambda'_bWidth:InterpolationMasses 138 5.9712857 insert Lambda'_bWidth:InterpolationMasses 139 5.9725102 insert Lambda'_bWidth:InterpolationMasses 140 5.9737347 insert Lambda'_bWidth:InterpolationMasses 141 5.9749592 insert Lambda'_bWidth:InterpolationMasses 142 5.9761837 insert Lambda'_bWidth:InterpolationMasses 143 5.9774082 insert Lambda'_bWidth:InterpolationMasses 144 5.9786327 insert Lambda'_bWidth:InterpolationMasses 145 5.9798571 insert Lambda'_bWidth:InterpolationMasses 146 5.9810816 insert Lambda'_bWidth:InterpolationMasses 147 5.9823061 insert Lambda'_bWidth:InterpolationMasses 148 5.9835306 insert Lambda'_bWidth:InterpolationMasses 149 5.9847551 insert Lambda'_bWidth:InterpolationMasses 150 5.9859796 insert Lambda'_bWidth:InterpolationMasses 151 5.9872041 insert Lambda'_bWidth:InterpolationMasses 152 5.9884286 insert Lambda'_bWidth:InterpolationMasses 153 5.9896531 insert Lambda'_bWidth:InterpolationMasses 154 5.9908776 insert Lambda'_bWidth:InterpolationMasses 155 5.992102 insert Lambda'_bWidth:InterpolationMasses 156 5.9933265 insert Lambda'_bWidth:InterpolationMasses 157 5.994551 insert Lambda'_bWidth:InterpolationMasses 158 5.9957755 insert Lambda'_bWidth:InterpolationMasses 159 5.997 insert Lambda'_bWidth:InterpolationMasses 160 5.9982245 insert Lambda'_bWidth:InterpolationMasses 161 5.999449 insert Lambda'_bWidth:InterpolationWidths 0 1.4948681e-05 insert Lambda'_bWidth:InterpolationWidths 1 1.8090845e-05 insert Lambda'_bWidth:InterpolationWidths 2 2.186438e-05 insert Lambda'_bWidth:InterpolationWidths 3 2.6412028e-05 insert Lambda'_bWidth:InterpolationWidths 4 3.1917411e-05 insert Lambda'_bWidth:InterpolationWidths 5 3.8620085e-05 insert Lambda'_bWidth:InterpolationWidths 6 4.6837534e-05 insert Lambda'_bWidth:InterpolationWidths 7 5.6997894e-05 insert Lambda'_bWidth:InterpolationWidths 8 6.9689657e-05 insert Lambda'_bWidth:InterpolationWidths 9 8.5738478e-05 insert Lambda'_bWidth:InterpolationWidths 10 0.00010632729 insert Lambda'_bWidth:InterpolationWidths 11 0.00013318342 insert Lambda'_bWidth:InterpolationWidths 12 0.00016885804 insert Lambda'_bWidth:InterpolationWidths 13 0.00021708283 insert Lambda'_bWidth:InterpolationWidths 14 0.00028298631 insert Lambda'_bWidth:InterpolationWidths 15 0.00037236455 insert Lambda'_bWidth:InterpolationWidths 16 0.00048865059 insert Lambda'_bWidth:InterpolationWidths 17 0.00062861464 insert Lambda'_bWidth:InterpolationWidths 18 0.00078268646 insert Lambda'_bWidth:InterpolationWidths 19 0.00094093852 insert Lambda'_bWidth:InterpolationWidths 20 0.0010970613 insert Lambda'_bWidth:InterpolationWidths 21 0.0012482058 insert Lambda'_bWidth:InterpolationWidths 22 0.0013934572 insert Lambda'_bWidth:InterpolationWidths 23 0.0015328195 insert Lambda'_bWidth:InterpolationWidths 24 0.001666659 insert Lambda'_bWidth:InterpolationWidths 25 0.0017954548 insert Lambda'_bWidth:InterpolationWidths 26 0.0019196937 insert Lambda'_bWidth:InterpolationWidths 27 0.0020398283 insert Lambda'_bWidth:InterpolationWidths 28 0.0021562643 insert Lambda'_bWidth:InterpolationWidths 29 0.0022693597 insert Lambda'_bWidth:InterpolationWidths 30 0.0023794278 insert Lambda'_bWidth:InterpolationWidths 31 0.0024867428 insert Lambda'_bWidth:InterpolationWidths 32 0.002591545 insert Lambda'_bWidth:InterpolationWidths 33 0.0026940453 insert Lambda'_bWidth:InterpolationWidths 34 0.0027944296 insert Lambda'_bWidth:InterpolationWidths 35 0.0028928622 insert Lambda'_bWidth:InterpolationWidths 36 0.0029894894 insert Lambda'_bWidth:InterpolationWidths 37 0.0030844413 insert Lambda'_bWidth:InterpolationWidths 38 0.0031778135 insert Lambda'_bWidth:InterpolationWidths 39 0.0032697511 insert Lambda'_bWidth:InterpolationWidths 40 0.0033603291 insert Lambda'_bWidth:InterpolationWidths 41 0.0034496331 insert Lambda'_bWidth:InterpolationWidths 42 0.0035377406 insert Lambda'_bWidth:InterpolationWidths 43 0.0036247223 insert Lambda'_bWidth:InterpolationWidths 44 0.0037106426 insert Lambda'_bWidth:InterpolationWidths 45 0.0037955607 insert Lambda'_bWidth:InterpolationWidths 46 0.0038795307 insert Lambda'_bWidth:InterpolationWidths 47 0.0039626025 insert Lambda'_bWidth:InterpolationWidths 48 0.0040448223 insert Lambda'_bWidth:InterpolationWidths 49 0.0041262324 insert Lambda'_bWidth:InterpolationWidths 50 0.0042068725 insert Lambda'_bWidth:InterpolationWidths 51 0.004286779 insert Lambda'_bWidth:InterpolationWidths 52 0.0043656951 insert Lambda'_bWidth:InterpolationWidths 53 0.0044425275 insert Lambda'_bWidth:InterpolationWidths 54 2.7414557e-05 insert Lambda'_bWidth:InterpolationWidths 55 3.4468535e-05 insert Lambda'_bWidth:InterpolationWidths 56 4.3469576e-05 insert Lambda'_bWidth:InterpolationWidths 57 5.5109296e-05 insert Lambda'_bWidth:InterpolationWidths 58 7.0416329e-05 insert Lambda'_bWidth:InterpolationWidths 59 9.0973058e-05 insert Lambda'_bWidth:InterpolationWidths 60 0.00011929965 insert Lambda'_bWidth:InterpolationWidths 61 0.00015952292 insert Lambda'_bWidth:InterpolationWidths 62 0.00021838043 insert Lambda'_bWidth:InterpolationWidths 63 0.00030577832 insert Lambda'_bWidth:InterpolationWidths 64 0.00043110242 insert Lambda'_bWidth:InterpolationWidths 65 0.00059186928 insert Lambda'_bWidth:InterpolationWidths 66 0.00077061004 insert Lambda'_bWidth:InterpolationWidths 67 0.00095038662 insert Lambda'_bWidth:InterpolationWidths 68 0.0011232054 insert Lambda'_bWidth:InterpolationWidths 69 0.0012869559 insert Lambda'_bWidth:InterpolationWidths 70 0.001441837 insert Lambda'_bWidth:InterpolationWidths 71 0.0015887254 insert Lambda'_bWidth:InterpolationWidths 72 0.0017285943 insert Lambda'_bWidth:InterpolationWidths 73 0.0018623342 insert Lambda'_bWidth:InterpolationWidths 74 0.001990712 insert Lambda'_bWidth:InterpolationWidths 75 0.0021143746 insert Lambda'_bWidth:InterpolationWidths 76 0.0022338655 insert Lambda'_bWidth:InterpolationWidths 77 0.002349642 insert Lambda'_bWidth:InterpolationWidths 78 0.0024620912 insert Lambda'_bWidth:InterpolationWidths 79 0.0025715426 insert Lambda'_bWidth:InterpolationWidths 80 0.0026782788 insert Lambda'_bWidth:InterpolationWidths 81 0.0027825437 insert Lambda'_bWidth:InterpolationWidths 82 0.0028845301 insert Lambda'_bWidth:InterpolationWidths 83 0.0029844596 insert Lambda'_bWidth:InterpolationWidths 84 0.0030824778 insert Lambda'_bWidth:InterpolationWidths 85 0.0031787287 insert Lambda'_bWidth:InterpolationWidths 86 0.0032733403 insert Lambda'_bWidth:InterpolationWidths 87 0.0033664268 insert Lambda'_bWidth:InterpolationWidths 88 0.0034580908 insert Lambda'_bWidth:InterpolationWidths 89 0.0035484243 insert Lambda'_bWidth:InterpolationWidths 90 0.0036375107 insert Lambda'_bWidth:InterpolationWidths 91 0.0037254257 insert Lambda'_bWidth:InterpolationWidths 92 0.0038115787 insert Lambda'_bWidth:InterpolationWidths 93 0.0038951041 insert Lambda'_bWidth:InterpolationWidths 94 0.0039768369 insert Lambda'_bWidth:InterpolationWidths 95 0.004057062 insert Lambda'_bWidth:InterpolationWidths 96 0.0041359521 insert Lambda'_bWidth:InterpolationWidths 97 0.004213632 insert Lambda'_bWidth:InterpolationWidths 98 0.0042902003 insert Lambda'_bWidth:InterpolationWidths 99 0.0043657383 insert Lambda'_bWidth:InterpolationWidths 100 0.0044403154 insert Lambda'_bWidth:InterpolationWidths 101 0.0045139916 insert Lambda'_bWidth:InterpolationWidths 102 0.0045868199 insert Lambda'_bWidth:InterpolationWidths 103 0.0046588478 insert Lambda'_bWidth:InterpolationWidths 104 0.0047301176 insert Lambda'_bWidth:InterpolationWidths 105 0.004800668 insert Lambda'_bWidth:InterpolationWidths 106 0.004870534 insert Lambda'_bWidth:InterpolationWidths 107 0.0049397478 insert Lambda'_bWidth:InterpolationWidths 108 5.3945241e-05 insert Lambda'_bWidth:InterpolationWidths 109 6.5787531e-05 insert Lambda'_bWidth:InterpolationWidths 110 8.0704616e-05 insert Lambda'_bWidth:InterpolationWidths 111 9.976163e-05 insert Lambda'_bWidth:InterpolationWidths 112 0.00012451037 insert Lambda'_bWidth:InterpolationWidths 113 0.00015724573 insert Lambda'_bWidth:InterpolationWidths 114 0.00020135722 insert Lambda'_bWidth:InterpolationWidths 115 0.00026164009 insert Lambda'_bWidth:InterpolationWidths 116 0.00034394403 insert Lambda'_bWidth:InterpolationWidths 117 0.00045277921 insert Lambda'_bWidth:InterpolationWidths 118 0.00058679947 insert Lambda'_bWidth:InterpolationWidths 119 0.00073743064 insert Lambda'_bWidth:InterpolationWidths 120 0.00089416889 insert Lambda'_bWidth:InterpolationWidths 121 0.0010497499 insert Lambda'_bWidth:InterpolationWidths 122 0.0012006945 insert Lambda'_bWidth:InterpolationWidths 123 0.0013457958 insert Lambda'_bWidth:InterpolationWidths 124 0.0014849468 insert Lambda'_bWidth:InterpolationWidths 125 0.0016184826 insert Lambda'_bWidth:InterpolationWidths 126 0.0017468826 insert Lambda'_bWidth:InterpolationWidths 127 0.0018706448 insert Lambda'_bWidth:InterpolationWidths 128 0.0019902352 insert Lambda'_bWidth:InterpolationWidths 129 0.0021060725 insert Lambda'_bWidth:InterpolationWidths 130 0.0022185255 insert Lambda'_bWidth:InterpolationWidths 131 0.0023279171 insert Lambda'_bWidth:InterpolationWidths 132 0.002434529 insert Lambda'_bWidth:InterpolationWidths 133 0.0025386077 insert Lambda'_bWidth:InterpolationWidths 134 0.0026403692 insert Lambda'_bWidth:InterpolationWidths 135 0.0027400034 insert Lambda'_bWidth:InterpolationWidths 136 0.002837678 insert Lambda'_bWidth:InterpolationWidths 137 0.0029335419 insert Lambda'_bWidth:InterpolationWidths 138 0.0030277274 insert Lambda'_bWidth:InterpolationWidths 139 0.0031203327 insert Lambda'_bWidth:InterpolationWidths 140 0.0032115029 insert Lambda'_bWidth:InterpolationWidths 141 0.0033013151 insert Lambda'_bWidth:InterpolationWidths 142 0.0033898555 insert Lambda'_bWidth:InterpolationWidths 143 0.0034772026 insert Lambda'_bWidth:InterpolationWidths 144 0.0035634278 insert Lambda'_bWidth:InterpolationWidths 145 0.0036485959 insert Lambda'_bWidth:InterpolationWidths 146 0.0037327665 insert Lambda'_bWidth:InterpolationWidths 147 0.0038159942 insert Lambda'_bWidth:InterpolationWidths 148 0.0038983292 insert Lambda'_bWidth:InterpolationWidths 149 0.0039798176 insert Lambda'_bWidth:InterpolationWidths 150 0.0040605023 insert Lambda'_bWidth:InterpolationWidths 151 0.0041404227 insert Lambda'_bWidth:InterpolationWidths 152 0.0042196156 insert Lambda'_bWidth:InterpolationWidths 153 0.0042976043 insert Lambda'_bWidth:InterpolationWidths 154 0.0043735979 insert Lambda'_bWidth:InterpolationWidths 155 0.0044482543 insert Lambda'_bWidth:InterpolationWidths 156 0.0045217979 insert Lambda'_bWidth:InterpolationWidths 157 0.0045943561 insert Lambda'_bWidth:InterpolationWidths 158 0.0046660192 insert Lambda'_bWidth:InterpolationWidths 159 0.004736857 insert Lambda'_bWidth:InterpolationWidths 160 0.0048069267 insert Lambda'_bWidth:InterpolationWidths 161 0.0048762767 insert Lambda'_bWidth:NumberofEntries 0 0 insert Lambda'_bWidth:NumberofEntries 1 0 insert Lambda'_bWidth:NumberofEntries 2 54 insert Lambda'_bWidth:NumberofEntries 3 108 insert Lambda'_bWidth:NumberofEntries 4 162 insert Lambda'_bWidth:BaryonDecayers 0 NULL insert Lambda'_bWidth:ModeLocation 0 -1 insert Lambda'_bWidth:BaryonDecayers 1 NULL insert Lambda'_bWidth:ModeLocation 1 -1 insert Lambda'_bWidth:BaryonDecayers 2 /Herwig/Decays/HeavyStrong insert Lambda'_bWidth:ModeLocation 2 28 insert Lambda'_bWidth:BaryonDecayers 3 /Herwig/Decays/HeavyStrong insert Lambda'_bWidth:ModeLocation 3 26 insert Lambda'_bWidth:BaryonDecayers 4 /Herwig/Decays/HeavyStrong insert Lambda'_bWidth:ModeLocation 4 27 newdef /Herwig/Particles/Lambda_b1bar0:Width_generator Lambda'_bWidth newdef /Herwig/Particles/Lambda_b10:Width_generator Lambda'_bWidth # create Herwig::BaryonWidthGenerator Lambda*_bWidth newdef Lambda*_bWidth:Particle /Herwig/Particles/Lambda_b1*0 newdef Lambda*_bWidth:Prefactor 1 newdef Lambda*_bWidth:BRNormalize 1 newdef Lambda*_bWidth:BRMinimum 0.01 newdef Lambda*_bWidth:Points 50 newdef Lambda*_bWidth:InterpolationOrder 1 insert Lambda*_bWidth:MEtype 0 0 insert Lambda*_bWidth:MEtype 1 0 insert Lambda*_bWidth:MEcode 0 0 insert Lambda*_bWidth:MEcode 1 0 insert Lambda*_bWidth:MEcoupling 0 0.666667 insert Lambda*_bWidth:MEcoupling 1 0.333333 insert Lambda*_bWidth:ModeOn 0 1 insert Lambda*_bWidth:ModeOn 1 1 insert Lambda*_bWidth:MinimumMasses 0 5.90314 insert Lambda*_bWidth:MinimumMasses 1 5.89396 insert Lambda*_bWidth:MEmass1 0 0 insert Lambda*_bWidth:MEmass1 1 0 insert Lambda*_bWidth:MEmass2 0 0 insert Lambda*_bWidth:MEmass2 1 0 insert Lambda*_bWidth:DecayModes 0 Lambda_b1*0->Lambda_b0,pi+,pi-; insert Lambda*_bWidth:DecayModes 1 Lambda_b1*0->Lambda_b0,pi0,pi0; insert Lambda*_bWidth:NumberofEntries 0 0 insert Lambda*_bWidth:NumberofEntries 1 0 insert Lambda*_bWidth:BaryonDecayers 0 NULL insert Lambda*_bWidth:ModeLocation 0 -1 insert Lambda*_bWidth:BaryonDecayers 1 NULL insert Lambda*_bWidth:ModeLocation 1 -1 newdef /Herwig/Particles/Lambda_b1*0:Width_generator Lambda*_bWidth newdef /Herwig/Particles/Lambda_b1*bar0:Width_generator Lambda*_bWidth # create Herwig::BaryonWidthGenerator Delta+Width newdef Delta+Width:Particle /Herwig/Particles/Delta+ newdef Delta+Width:Prefactor 1.00563 newdef Delta+Width:BRNormalize 1 newdef Delta+Width:BRMinimum 0.01 newdef Delta+Width:Points 50 newdef Delta+Width:InterpolationOrder 1 insert Delta+Width:MEtype 0 1 insert Delta+Width:MEtype 1 1 insert Delta+Width:MEtype 2 1 insert Delta+Width:MEcode 0 105 insert Delta+Width:MEcode 1 106 insert Delta+Width:MEcode 2 105 insert Delta+Width:MEcoupling 0 0.977627 insert Delta+Width:MEcoupling 1 0.642674 insert Delta+Width:MEcoupling 2 0.956901 insert Delta+Width:ModeOn 0 1 insert Delta+Width:ModeOn 1 0 insert Delta+Width:ModeOn 2 1 insert Delta+Width:MinimumMasses 0 1.07914 insert Delta+Width:MinimumMasses 1 0.938272 insert Delta+Width:MinimumMasses 2 1.07325 insert Delta+Width:MEmass1 0 0.939565 insert Delta+Width:MEmass1 1 0.938272 insert Delta+Width:MEmass1 2 0.938272 insert Delta+Width:MEmass2 0 0.13957 insert Delta+Width:MEmass2 1 0 insert Delta+Width:MEmass2 2 0.134978 insert Delta+Width:DecayModes 0 Delta+->n0,pi+; insert Delta+Width:DecayModes 1 Delta+->p+,gamma; insert Delta+Width:DecayModes 2 Delta+->p+,pi0; insert Delta+Width:NumberofEntries 0 0 insert Delta+Width:NumberofEntries 1 0 insert Delta+Width:NumberofEntries 2 0 insert Delta+Width:BaryonDecayers 0 /Herwig/Decays/SU3Decuplet insert Delta+Width:ModeLocation 0 2 insert Delta+Width:BaryonDecayers 1 /Herwig/Decays/DecupletGamma insert Delta+Width:ModeLocation 1 0 insert Delta+Width:BaryonDecayers 2 /Herwig/Decays/SU3Decuplet insert Delta+Width:ModeLocation 2 3 newdef /Herwig/Particles/Delta+:Width_generator Delta+Width newdef /Herwig/Particles/Deltabar-:Width_generator Delta+Width # create Herwig::BaryonWidthGenerator Delta0Width newdef Delta0Width:Particle /Herwig/Particles/Delta0 newdef Delta0Width:Prefactor 1.00563 newdef Delta0Width:BRNormalize 1 newdef Delta0Width:BRMinimum 0.01 newdef Delta0Width:Points 50 newdef Delta0Width:InterpolationOrder 1 insert Delta0Width:MEtype 0 1 insert Delta0Width:MEtype 1 1 insert Delta0Width:MEtype 2 1 insert Delta0Width:MEcode 0 106 insert Delta0Width:MEcode 1 105 insert Delta0Width:MEcode 2 105 insert Delta0Width:MEcoupling 0 0.646188 insert Delta0Width:MEcoupling 1 0.963533 insert Delta0Width:MEcoupling 2 0.970744 insert Delta0Width:ModeOn 0 0 insert Delta0Width:ModeOn 1 1 insert Delta0Width:ModeOn 2 1 insert Delta0Width:MinimumMasses 0 0.939565 insert Delta0Width:MinimumMasses 1 1.07454 insert Delta0Width:MinimumMasses 2 1.07784 insert Delta0Width:MEmass1 0 0.939565 insert Delta0Width:MEmass1 1 0.939565 insert Delta0Width:MEmass1 2 0.938272 insert Delta0Width:MEmass2 0 0 insert Delta0Width:MEmass2 1 0.134978 insert Delta0Width:MEmass2 2 0.13957 insert Delta0Width:DecayModes 0 Delta0->n0,gamma; insert Delta0Width:DecayModes 1 Delta0->n0,pi0; insert Delta0Width:DecayModes 2 Delta0->p+,pi-; insert Delta0Width:NumberofEntries 0 0 insert Delta0Width:NumberofEntries 1 0 insert Delta0Width:NumberofEntries 2 0 insert Delta0Width:BaryonDecayers 0 /Herwig/Decays/DecupletGamma insert Delta0Width:ModeLocation 0 1 insert Delta0Width:BaryonDecayers 1 /Herwig/Decays/SU3Decuplet insert Delta0Width:ModeLocation 1 7 insert Delta0Width:BaryonDecayers 2 /Herwig/Decays/SU3Decuplet insert Delta0Width:ModeLocation 2 6 newdef /Herwig/Particles/Delta0:Width_generator Delta0Width newdef /Herwig/Particles/Deltabar0:Width_generator Delta0Width # create Herwig::BaryonWidthGenerator Omega_c*0Width newdef Omega_c*0Width:Particle /Herwig/Particles/Omega_c*0 newdef Omega_c*0Width:Prefactor 1 newdef Omega_c*0Width:BRNormalize 1 newdef Omega_c*0Width:BRMinimum 0.01 newdef Omega_c*0Width:Points 50 newdef Omega_c*0Width:InterpolationOrder 1 insert Omega_c*0Width:MEtype 0 1 insert Omega_c*0Width:MEcode 0 106 insert Omega_c*0Width:MEcoupling 0 0.578721 insert Omega_c*0Width:ModeOn 0 1 insert Omega_c*0Width:MinimumMasses 0 2.6975 insert Omega_c*0Width:MEmass1 0 2.6975 insert Omega_c*0Width:MEmass2 0 0 insert Omega_c*0Width:DecayModes 0 Omega_c*0->Omega_c0,gamma; insert Omega_c*0Width:NumberofEntries 0 0 insert Omega_c*0Width:BaryonDecayers 0 /Herwig/Decays/HeavyGamma insert Omega_c*0Width:ModeLocation 0 17 newdef /Herwig/Particles/Omega_c*0:Width_generator Omega_c*0Width newdef /Herwig/Particles/Omega_c*bar0:Width_generator Omega_c*0Width # create Herwig::BaryonWidthGenerator Omega_b*-Width newdef Omega_b*-Width:Particle /Herwig/Particles/Omega_b*- newdef Omega_b*-Width:Prefactor 1 newdef Omega_b*-Width:BRNormalize 1 newdef Omega_b*-Width:BRMinimum 0.01 newdef Omega_b*-Width:Points 50 newdef Omega_b*-Width:InterpolationOrder 1 insert Omega_b*-Width:MEtype 0 1 insert Omega_b*-Width:MEcode 0 106 insert Omega_b*-Width:MEcoupling 0 0.564718 insert Omega_b*-Width:ModeOn 0 1 insert Omega_b*-Width:MinimumMasses 0 6.03504 insert Omega_b*-Width:MEmass1 0 6.03504 insert Omega_b*-Width:MEmass2 0 0 insert Omega_b*-Width:DecayModes 0 Omega_b*-->Omega_b-,gamma; insert Omega_b*-Width:NumberofEntries 0 0 insert Omega_b*-Width:BaryonDecayers 0 /Herwig/Decays/HeavyGamma insert Omega_b*-Width:ModeLocation 0 23 newdef /Herwig/Particles/Omega_b*bar+:Width_generator Omega_b*-Width newdef /Herwig/Particles/Omega_b*-:Width_generator Omega_b*-Width # create Herwig::BaryonWidthGenerator Xi_c10Width newdef Xi_c10Width:Particle /Herwig/Particles/Xi_c(2790)0 newdef Xi_c10Width:Prefactor 1 newdef Xi_c10Width:BRNormalize 1 newdef Xi_c10Width:BRMinimum 0.01 newdef Xi_c10Width:Points 50 newdef Xi_c10Width:InterpolationOrder 1 insert Xi_c10Width:MEtype 0 2 insert Xi_c10Width:MEtype 1 2 insert Xi_c10Width:MEcode 0 0 insert Xi_c10Width:MEcode 1 0 insert Xi_c10Width:MEcoupling 0 1.02983 insert Xi_c10Width:MEcoupling 1 1.02335 insert Xi_c10Width:ModeOn 0 1 insert Xi_c10Width:ModeOn 1 1 insert Xi_c10Width:MinimumMasses 0 2.71514 insert Xi_c10Width:MinimumMasses 1 2.71298 insert Xi_c10Width:MEmass1 0 2.5757 insert Xi_c10Width:MEmass1 1 2.578 insert Xi_c10Width:MEmass2 0 0.13957 insert Xi_c10Width:MEmass2 1 0.134978 insert Xi_c10Width:DecayModes 0 Xi_c(2790)0->Xi'_c+,pi-; insert Xi_c10Width:DecayModes 1 Xi_c(2790)0->Xi'_c0,pi0; insert Xi_c10Width:InterpolationMasses 0 2.7796776 insert Xi_c10Width:InterpolationMasses 1 2.7801388 insert Xi_c10Width:InterpolationMasses 2 2.7806 insert Xi_c10Width:InterpolationMasses 3 2.7810612 insert Xi_c10Width:InterpolationMasses 4 2.7815224 insert Xi_c10Width:InterpolationMasses 5 2.7819837 insert Xi_c10Width:InterpolationMasses 6 2.7824449 insert Xi_c10Width:InterpolationMasses 7 2.7829061 insert Xi_c10Width:InterpolationMasses 8 2.7833673 insert Xi_c10Width:InterpolationMasses 9 2.7838286 insert Xi_c10Width:InterpolationMasses 10 2.7842898 insert Xi_c10Width:InterpolationMasses 11 2.784751 insert Xi_c10Width:InterpolationMasses 12 2.7852122 insert Xi_c10Width:InterpolationMasses 13 2.7856735 insert Xi_c10Width:InterpolationMasses 14 2.7861347 insert Xi_c10Width:InterpolationMasses 15 2.7865959 insert Xi_c10Width:InterpolationMasses 16 2.7870571 insert Xi_c10Width:InterpolationMasses 17 2.7875184 insert Xi_c10Width:InterpolationMasses 18 2.7879796 insert Xi_c10Width:InterpolationMasses 19 2.7884408 insert Xi_c10Width:InterpolationMasses 20 2.788902 insert Xi_c10Width:InterpolationMasses 21 2.7893633 insert Xi_c10Width:InterpolationMasses 22 2.7898245 insert Xi_c10Width:InterpolationMasses 23 2.7902857 insert Xi_c10Width:InterpolationMasses 24 2.7907469 insert Xi_c10Width:InterpolationMasses 25 2.7912082 insert Xi_c10Width:InterpolationMasses 26 2.7916694 insert Xi_c10Width:InterpolationMasses 27 2.7921306 insert Xi_c10Width:InterpolationMasses 28 2.7925918 insert Xi_c10Width:InterpolationMasses 29 2.7930531 insert Xi_c10Width:InterpolationMasses 30 2.7935143 insert Xi_c10Width:InterpolationMasses 31 2.7939755 insert Xi_c10Width:InterpolationMasses 32 2.7944367 insert Xi_c10Width:InterpolationMasses 33 2.794898 insert Xi_c10Width:InterpolationMasses 34 2.7953592 insert Xi_c10Width:InterpolationMasses 35 2.7958204 insert Xi_c10Width:InterpolationMasses 36 2.7962816 insert Xi_c10Width:InterpolationMasses 37 2.7967429 insert Xi_c10Width:InterpolationMasses 38 2.7972041 insert Xi_c10Width:InterpolationMasses 39 2.7976653 insert Xi_c10Width:InterpolationMasses 40 2.7981265 insert Xi_c10Width:InterpolationMasses 41 2.7985878 insert Xi_c10Width:InterpolationMasses 42 2.799049 insert Xi_c10Width:InterpolationMasses 43 2.7995102 insert Xi_c10Width:InterpolationMasses 44 2.7999714 insert Xi_c10Width:InterpolationMasses 45 2.8004327 insert Xi_c10Width:InterpolationMasses 46 2.8008939 insert Xi_c10Width:InterpolationMasses 47 2.8013551 insert Xi_c10Width:InterpolationMasses 48 2.8018163 insert Xi_c10Width:InterpolationMasses 49 2.8022776 insert Xi_c10Width:InterpolationMasses 50 2.8027388 insert Xi_c10Width:InterpolationMasses 51 2.8032 insert Xi_c10Width:InterpolationMasses 52 2.8036612 insert Xi_c10Width:InterpolationMasses 53 2.8041224 insert Xi_c10Width:InterpolationMasses 54 2.7796776 insert Xi_c10Width:InterpolationMasses 55 2.7801388 insert Xi_c10Width:InterpolationMasses 56 2.7806 insert Xi_c10Width:InterpolationMasses 57 2.7810612 insert Xi_c10Width:InterpolationMasses 58 2.7815224 insert Xi_c10Width:InterpolationMasses 59 2.7819837 insert Xi_c10Width:InterpolationMasses 60 2.7824449 insert Xi_c10Width:InterpolationMasses 61 2.7829061 insert Xi_c10Width:InterpolationMasses 62 2.7833673 insert Xi_c10Width:InterpolationMasses 63 2.7838286 insert Xi_c10Width:InterpolationMasses 64 2.7842898 insert Xi_c10Width:InterpolationMasses 65 2.784751 insert Xi_c10Width:InterpolationMasses 66 2.7852122 insert Xi_c10Width:InterpolationMasses 67 2.7856735 insert Xi_c10Width:InterpolationMasses 68 2.7861347 insert Xi_c10Width:InterpolationMasses 69 2.7865959 insert Xi_c10Width:InterpolationMasses 70 2.7870571 insert Xi_c10Width:InterpolationMasses 71 2.7875184 insert Xi_c10Width:InterpolationMasses 72 2.7879796 insert Xi_c10Width:InterpolationMasses 73 2.7884408 insert Xi_c10Width:InterpolationMasses 74 2.788902 insert Xi_c10Width:InterpolationMasses 75 2.7893633 insert Xi_c10Width:InterpolationMasses 76 2.7898245 insert Xi_c10Width:InterpolationMasses 77 2.7902857 insert Xi_c10Width:InterpolationMasses 78 2.7907469 insert Xi_c10Width:InterpolationMasses 79 2.7912082 insert Xi_c10Width:InterpolationMasses 80 2.7916694 insert Xi_c10Width:InterpolationMasses 81 2.7921306 insert Xi_c10Width:InterpolationMasses 82 2.7925918 insert Xi_c10Width:InterpolationMasses 83 2.7930531 insert Xi_c10Width:InterpolationMasses 84 2.7935143 insert Xi_c10Width:InterpolationMasses 85 2.7939755 insert Xi_c10Width:InterpolationMasses 86 2.7944367 insert Xi_c10Width:InterpolationMasses 87 2.794898 insert Xi_c10Width:InterpolationMasses 88 2.7953592 insert Xi_c10Width:InterpolationMasses 89 2.7958204 insert Xi_c10Width:InterpolationMasses 90 2.7962816 insert Xi_c10Width:InterpolationMasses 91 2.7967429 insert Xi_c10Width:InterpolationMasses 92 2.7972041 insert Xi_c10Width:InterpolationMasses 93 2.7976653 insert Xi_c10Width:InterpolationMasses 94 2.7981265 insert Xi_c10Width:InterpolationMasses 95 2.7985878 insert Xi_c10Width:InterpolationMasses 96 2.799049 insert Xi_c10Width:InterpolationMasses 97 2.7995102 insert Xi_c10Width:InterpolationMasses 98 2.7999714 insert Xi_c10Width:InterpolationMasses 99 2.8004327 insert Xi_c10Width:InterpolationMasses 100 2.8008939 insert Xi_c10Width:InterpolationMasses 101 2.8013551 insert Xi_c10Width:InterpolationMasses 102 2.8018163 insert Xi_c10Width:InterpolationMasses 103 2.8022776 insert Xi_c10Width:InterpolationMasses 104 2.8027388 insert Xi_c10Width:InterpolationMasses 105 2.8032 insert Xi_c10Width:InterpolationMasses 106 2.8036612 insert Xi_c10Width:InterpolationMasses 107 2.8041224 insert Xi_c10Width:InterpolationWidths 0 0.00066319911 insert Xi_c10Width:InterpolationWidths 1 0.0006658568 insert Xi_c10Width:InterpolationWidths 2 0.00066850769 insert Xi_c10Width:InterpolationWidths 3 0.00067115184 insert Xi_c10Width:InterpolationWidths 4 0.00067378933 insert Xi_c10Width:InterpolationWidths 5 0.00067642023 insert Xi_c10Width:InterpolationWidths 6 0.00067904462 insert Xi_c10Width:InterpolationWidths 7 0.00068166255 insert Xi_c10Width:InterpolationWidths 8 0.0006842741 insert Xi_c10Width:InterpolationWidths 9 0.00068687934 insert Xi_c10Width:InterpolationWidths 10 0.00068947833 insert Xi_c10Width:InterpolationWidths 11 0.00069207113 insert Xi_c10Width:InterpolationWidths 12 0.00069465781 insert Xi_c10Width:InterpolationWidths 13 0.00069723843 insert Xi_c10Width:InterpolationWidths 14 0.00069981306 insert Xi_c10Width:InterpolationWidths 15 0.00070238174 insert Xi_c10Width:InterpolationWidths 16 0.00070494455 insert Xi_c10Width:InterpolationWidths 17 0.00070750154 insert Xi_c10Width:InterpolationWidths 18 0.00071005276 insert Xi_c10Width:InterpolationWidths 19 0.00071259827 insert Xi_c10Width:InterpolationWidths 20 0.00071513814 insert Xi_c10Width:InterpolationWidths 21 0.0007176724 insert Xi_c10Width:InterpolationWidths 22 0.00072020112 insert Xi_c10Width:InterpolationWidths 23 0.00072272435 insert Xi_c10Width:InterpolationWidths 24 0.00072524214 insert Xi_c10Width:InterpolationWidths 25 0.00072775454 insert Xi_c10Width:InterpolationWidths 26 0.0007302616 insert Xi_c10Width:InterpolationWidths 27 0.00073276337 insert Xi_c10Width:InterpolationWidths 28 0.0007352599 insert Xi_c10Width:InterpolationWidths 29 0.00073775124 insert Xi_c10Width:InterpolationWidths 30 0.00074023743 insert Xi_c10Width:InterpolationWidths 31 0.00074271852 insert Xi_c10Width:InterpolationWidths 32 0.00074519456 insert Xi_c10Width:InterpolationWidths 33 0.00074766559 insert Xi_c10Width:InterpolationWidths 34 0.00075013165 insert Xi_c10Width:InterpolationWidths 35 0.00075259279 insert Xi_c10Width:InterpolationWidths 36 0.00075504905 insert Xi_c10Width:InterpolationWidths 37 0.00075750047 insert Xi_c10Width:InterpolationWidths 38 0.0007599471 insert Xi_c10Width:InterpolationWidths 39 0.00076238898 insert Xi_c10Width:InterpolationWidths 40 0.00076482614 insert Xi_c10Width:InterpolationWidths 41 0.00076725863 insert Xi_c10Width:InterpolationWidths 42 0.00076968648 insert Xi_c10Width:InterpolationWidths 43 0.00077210974 insert Xi_c10Width:InterpolationWidths 44 0.00077452844 insert Xi_c10Width:InterpolationWidths 45 0.00077694261 insert Xi_c10Width:InterpolationWidths 46 0.00077935231 insert Xi_c10Width:InterpolationWidths 47 0.00078175756 insert Xi_c10Width:InterpolationWidths 48 0.0007841584 insert Xi_c10Width:InterpolationWidths 49 0.00078655486 insert Xi_c10Width:InterpolationWidths 50 0.00078894698 insert Xi_c10Width:InterpolationWidths 51 0.00079133479 insert Xi_c10Width:InterpolationWidths 52 0.00079371834 insert Xi_c10Width:InterpolationWidths 53 0.00079609764 insert Xi_c10Width:InterpolationWidths 54 0.00033450026 insert Xi_c10Width:InterpolationWidths 55 0.00033580426 insert Xi_c10Width:InterpolationWidths 56 0.0003371051 insert Xi_c10Width:InterpolationWidths 57 0.00033840281 insert Xi_c10Width:InterpolationWidths 58 0.00033969742 insert Xi_c10Width:InterpolationWidths 59 0.00034098898 insert Xi_c10Width:InterpolationWidths 60 0.0003422775 insert Xi_c10Width:InterpolationWidths 61 0.00034356302 insert Xi_c10Width:InterpolationWidths 62 0.00034484557 insert Xi_c10Width:InterpolationWidths 63 0.00034612518 insert Xi_c10Width:InterpolationWidths 64 0.00034740188 insert Xi_c10Width:InterpolationWidths 65 0.0003486757 insert Xi_c10Width:InterpolationWidths 66 0.00034994667 insert Xi_c10Width:InterpolationWidths 67 0.00035121481 insert Xi_c10Width:InterpolationWidths 68 0.00035248016 insert Xi_c10Width:InterpolationWidths 69 0.00035374273 insert Xi_c10Width:InterpolationWidths 70 0.00035500256 insert Xi_c10Width:InterpolationWidths 71 0.00035625968 insert Xi_c10Width:InterpolationWidths 72 0.0003575141 insert Xi_c10Width:InterpolationWidths 73 0.00035876586 insert Xi_c10Width:InterpolationWidths 74 0.00036001497 insert Xi_c10Width:InterpolationWidths 75 0.00036126147 insert Xi_c10Width:InterpolationWidths 76 0.00036250538 insert Xi_c10Width:InterpolationWidths 77 0.00036374672 insert Xi_c10Width:InterpolationWidths 78 0.00036498551 insert Xi_c10Width:InterpolationWidths 79 0.00036622178 insert Xi_c10Width:InterpolationWidths 80 0.00036745555 insert Xi_c10Width:InterpolationWidths 81 0.00036868685 insert Xi_c10Width:InterpolationWidths 82 0.00036991569 insert Xi_c10Width:InterpolationWidths 83 0.00037114209 insert Xi_c10Width:InterpolationWidths 84 0.00037236609 insert Xi_c10Width:InterpolationWidths 85 0.00037358769 insert Xi_c10Width:InterpolationWidths 86 0.00037480692 insert Xi_c10Width:InterpolationWidths 87 0.0003760238 insert Xi_c10Width:InterpolationWidths 88 0.00037723836 insert Xi_c10Width:InterpolationWidths 89 0.0003784506 insert Xi_c10Width:InterpolationWidths 90 0.00037966055 insert Xi_c10Width:InterpolationWidths 91 0.00038086823 insert Xi_c10Width:InterpolationWidths 92 0.00038207366 insert Xi_c10Width:InterpolationWidths 93 0.00038327686 insert Xi_c10Width:InterpolationWidths 94 0.00038447783 insert Xi_c10Width:InterpolationWidths 95 0.00038567662 insert Xi_c10Width:InterpolationWidths 96 0.00038687322 insert Xi_c10Width:InterpolationWidths 97 0.00038806766 insert Xi_c10Width:InterpolationWidths 98 0.00038925996 insert Xi_c10Width:InterpolationWidths 99 0.00039045012 insert Xi_c10Width:InterpolationWidths 100 0.00039163818 insert Xi_c10Width:InterpolationWidths 101 0.00039282415 insert Xi_c10Width:InterpolationWidths 102 0.00039400803 insert Xi_c10Width:InterpolationWidths 103 0.00039518986 insert Xi_c10Width:InterpolationWidths 104 0.00039636964 insert Xi_c10Width:InterpolationWidths 105 0.00039754739 insert Xi_c10Width:InterpolationWidths 106 0.00039872313 insert Xi_c10Width:InterpolationWidths 107 0.00039989687 insert Xi_c10Width:NumberofEntries 0 54 insert Xi_c10Width:NumberofEntries 1 108 insert Xi_c10Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Xi_c10Width:ModeLocation 0 43 insert Xi_c10Width:BaryonDecayers 1 /Herwig/Decays/HeavyStrong insert Xi_c10Width:ModeLocation 1 42 newdef /Herwig/Particles/Xi_c(2790)0:Width_generator Xi_c10Width newdef /Herwig/Particles/Xi_c(2790)bar0:Width_generator Xi_c10Width # create Herwig::BaryonWidthGenerator Xi_c1+Width newdef Xi_c1+Width:Particle /Herwig/Particles/Xi_c(2790)+ newdef Xi_c1+Width:Prefactor 1 newdef Xi_c1+Width:BRNormalize 1 newdef Xi_c1+Width:BRMinimum 0.01 newdef Xi_c1+Width:Points 50 newdef Xi_c1+Width:InterpolationOrder 1 insert Xi_c1+Width:MEtype 0 2 insert Xi_c1+Width:MEtype 1 2 insert Xi_c1+Width:MEcode 0 0 insert Xi_c1+Width:MEcode 1 0 insert Xi_c1+Width:MEcoupling 0 1.02643 insert Xi_c1+Width:MEcoupling 1 1.06986 insert Xi_c1+Width:ModeOn 0 1 insert Xi_c1+Width:ModeOn 1 1 insert Xi_c1+Width:MinimumMasses 0 2.71055 insert Xi_c1+Width:MinimumMasses 1 2.71757 insert Xi_c1+Width:MEmass1 0 2.5757 insert Xi_c1+Width:MEmass1 1 2.578 insert Xi_c1+Width:MEmass2 0 0.134978 insert Xi_c1+Width:MEmass2 1 0.13957 insert Xi_c1+Width:DecayModes 0 Xi_c(2790)+->Xi'_c+,pi0; insert Xi_c1+Width:DecayModes 1 Xi_c(2790)+->Xi'_c0,pi+; insert Xi_c1+Width:InterpolationMasses 0 2.7769776 insert Xi_c1+Width:InterpolationMasses 1 2.7774388 insert Xi_c1+Width:InterpolationMasses 2 2.7779 insert Xi_c1+Width:InterpolationMasses 3 2.7783612 insert Xi_c1+Width:InterpolationMasses 4 2.7788224 insert Xi_c1+Width:InterpolationMasses 5 2.7792837 insert Xi_c1+Width:InterpolationMasses 6 2.7797449 insert Xi_c1+Width:InterpolationMasses 7 2.7802061 insert Xi_c1+Width:InterpolationMasses 8 2.7806673 insert Xi_c1+Width:InterpolationMasses 9 2.7811286 insert Xi_c1+Width:InterpolationMasses 10 2.7815898 insert Xi_c1+Width:InterpolationMasses 11 2.782051 insert Xi_c1+Width:InterpolationMasses 12 2.7825122 insert Xi_c1+Width:InterpolationMasses 13 2.7829735 insert Xi_c1+Width:InterpolationMasses 14 2.7834347 insert Xi_c1+Width:InterpolationMasses 15 2.7838959 insert Xi_c1+Width:InterpolationMasses 16 2.7843571 insert Xi_c1+Width:InterpolationMasses 17 2.7848184 insert Xi_c1+Width:InterpolationMasses 18 2.7852796 insert Xi_c1+Width:InterpolationMasses 19 2.7857408 insert Xi_c1+Width:InterpolationMasses 20 2.786202 insert Xi_c1+Width:InterpolationMasses 21 2.7866633 insert Xi_c1+Width:InterpolationMasses 22 2.7871245 insert Xi_c1+Width:InterpolationMasses 23 2.7875857 insert Xi_c1+Width:InterpolationMasses 24 2.7880469 insert Xi_c1+Width:InterpolationMasses 25 2.7885082 insert Xi_c1+Width:InterpolationMasses 26 2.7889694 insert Xi_c1+Width:InterpolationMasses 27 2.7894306 insert Xi_c1+Width:InterpolationMasses 28 2.7898918 insert Xi_c1+Width:InterpolationMasses 29 2.7903531 insert Xi_c1+Width:InterpolationMasses 30 2.7908143 insert Xi_c1+Width:InterpolationMasses 31 2.7912755 insert Xi_c1+Width:InterpolationMasses 32 2.7917367 insert Xi_c1+Width:InterpolationMasses 33 2.792198 insert Xi_c1+Width:InterpolationMasses 34 2.7926592 insert Xi_c1+Width:InterpolationMasses 35 2.7931204 insert Xi_c1+Width:InterpolationMasses 36 2.7935816 insert Xi_c1+Width:InterpolationMasses 37 2.7940429 insert Xi_c1+Width:InterpolationMasses 38 2.7945041 insert Xi_c1+Width:InterpolationMasses 39 2.7949653 insert Xi_c1+Width:InterpolationMasses 40 2.7954265 insert Xi_c1+Width:InterpolationMasses 41 2.7958878 insert Xi_c1+Width:InterpolationMasses 42 2.796349 insert Xi_c1+Width:InterpolationMasses 43 2.7968102 insert Xi_c1+Width:InterpolationMasses 44 2.7972714 insert Xi_c1+Width:InterpolationMasses 45 2.7977327 insert Xi_c1+Width:InterpolationMasses 46 2.7981939 insert Xi_c1+Width:InterpolationMasses 47 2.7986551 insert Xi_c1+Width:InterpolationMasses 48 2.7991163 insert Xi_c1+Width:InterpolationMasses 49 2.7995776 insert Xi_c1+Width:InterpolationMasses 50 2.8000388 insert Xi_c1+Width:InterpolationMasses 51 2.8005 insert Xi_c1+Width:InterpolationMasses 52 2.8009612 insert Xi_c1+Width:InterpolationMasses 53 2.8014224 insert Xi_c1+Width:InterpolationMasses 54 2.7769776 insert Xi_c1+Width:InterpolationMasses 55 2.7774388 insert Xi_c1+Width:InterpolationMasses 56 2.7779 insert Xi_c1+Width:InterpolationMasses 57 2.7783612 insert Xi_c1+Width:InterpolationMasses 58 2.7788224 insert Xi_c1+Width:InterpolationMasses 59 2.7792837 insert Xi_c1+Width:InterpolationMasses 60 2.7797449 insert Xi_c1+Width:InterpolationMasses 61 2.7802061 insert Xi_c1+Width:InterpolationMasses 62 2.7806673 insert Xi_c1+Width:InterpolationMasses 63 2.7811286 insert Xi_c1+Width:InterpolationMasses 64 2.7815898 insert Xi_c1+Width:InterpolationMasses 65 2.782051 insert Xi_c1+Width:InterpolationMasses 66 2.7825122 insert Xi_c1+Width:InterpolationMasses 67 2.7829735 insert Xi_c1+Width:InterpolationMasses 68 2.7834347 insert Xi_c1+Width:InterpolationMasses 69 2.7838959 insert Xi_c1+Width:InterpolationMasses 70 2.7843571 insert Xi_c1+Width:InterpolationMasses 71 2.7848184 insert Xi_c1+Width:InterpolationMasses 72 2.7852796 insert Xi_c1+Width:InterpolationMasses 73 2.7857408 insert Xi_c1+Width:InterpolationMasses 74 2.786202 insert Xi_c1+Width:InterpolationMasses 75 2.7866633 insert Xi_c1+Width:InterpolationMasses 76 2.7871245 insert Xi_c1+Width:InterpolationMasses 77 2.7875857 insert Xi_c1+Width:InterpolationMasses 78 2.7880469 insert Xi_c1+Width:InterpolationMasses 79 2.7885082 insert Xi_c1+Width:InterpolationMasses 80 2.7889694 insert Xi_c1+Width:InterpolationMasses 81 2.7894306 insert Xi_c1+Width:InterpolationMasses 82 2.7898918 insert Xi_c1+Width:InterpolationMasses 83 2.7903531 insert Xi_c1+Width:InterpolationMasses 84 2.7908143 insert Xi_c1+Width:InterpolationMasses 85 2.7912755 insert Xi_c1+Width:InterpolationMasses 86 2.7917367 insert Xi_c1+Width:InterpolationMasses 87 2.792198 insert Xi_c1+Width:InterpolationMasses 88 2.7926592 insert Xi_c1+Width:InterpolationMasses 89 2.7931204 insert Xi_c1+Width:InterpolationMasses 90 2.7935816 insert Xi_c1+Width:InterpolationMasses 91 2.7940429 insert Xi_c1+Width:InterpolationMasses 92 2.7945041 insert Xi_c1+Width:InterpolationMasses 93 2.7949653 insert Xi_c1+Width:InterpolationMasses 94 2.7954265 insert Xi_c1+Width:InterpolationMasses 95 2.7958878 insert Xi_c1+Width:InterpolationMasses 96 2.796349 insert Xi_c1+Width:InterpolationMasses 97 2.7968102 insert Xi_c1+Width:InterpolationMasses 98 2.7972714 insert Xi_c1+Width:InterpolationMasses 99 2.7977327 insert Xi_c1+Width:InterpolationMasses 100 2.7981939 insert Xi_c1+Width:InterpolationMasses 101 2.7986551 insert Xi_c1+Width:InterpolationMasses 102 2.7991163 insert Xi_c1+Width:InterpolationMasses 103 2.7995776 insert Xi_c1+Width:InterpolationMasses 104 2.8000388 insert Xi_c1+Width:InterpolationMasses 105 2.8005 insert Xi_c1+Width:InterpolationMasses 106 2.8009612 insert Xi_c1+Width:InterpolationMasses 107 2.8014224 insert Xi_c1+Width:InterpolationWidths 0 0.0003333351 insert Xi_c1+Width:InterpolationWidths 1 0.00033464168 insert Xi_c1+Width:InterpolationWidths 2 0.00033594507 insert Xi_c1+Width:InterpolationWidths 3 0.0003372453 insert Xi_c1+Width:InterpolationWidths 4 0.00033854241 insert Xi_c1+Width:InterpolationWidths 5 0.00033983643 insert Xi_c1+Width:InterpolationWidths 6 0.00034112739 insert Xi_c1+Width:InterpolationWidths 7 0.00034241532 insert Xi_c1+Width:InterpolationWidths 8 0.00034370026 insert Xi_c1+Width:InterpolationWidths 9 0.00034498223 insert Xi_c1+Width:InterpolationWidths 10 0.00034626126 insert Xi_c1+Width:InterpolationWidths 11 0.00034753739 insert Xi_c1+Width:InterpolationWidths 12 0.00034881064 insert Xi_c1+Width:InterpolationWidths 13 0.00035008104 insert Xi_c1+Width:InterpolationWidths 14 0.00035134862 insert Xi_c1+Width:InterpolationWidths 15 0.00035261341 insert Xi_c1+Width:InterpolationWidths 16 0.00035387543 insert Xi_c1+Width:InterpolationWidths 17 0.00035513471 insert Xi_c1+Width:InterpolationWidths 18 0.00035639127 insert Xi_c1+Width:InterpolationWidths 19 0.00035764515 insert Xi_c1+Width:InterpolationWidths 20 0.00035889636 insert Xi_c1+Width:InterpolationWidths 21 0.00036014494 insert Xi_c1+Width:InterpolationWidths 22 0.0003613909 insert Xi_c1+Width:InterpolationWidths 23 0.00036263427 insert Xi_c1+Width:InterpolationWidths 24 0.00036387508 insert Xi_c1+Width:InterpolationWidths 25 0.00036511335 insert Xi_c1+Width:InterpolationWidths 26 0.00036634909 insert Xi_c1+Width:InterpolationWidths 27 0.00036758234 insert Xi_c1+Width:InterpolationWidths 28 0.00036881312 insert Xi_c1+Width:InterpolationWidths 29 0.00037004144 insert Xi_c1+Width:InterpolationWidths 30 0.00037126733 insert Xi_c1+Width:InterpolationWidths 31 0.00037249082 insert Xi_c1+Width:InterpolationWidths 32 0.00037371191 insert Xi_c1+Width:InterpolationWidths 33 0.00037493064 insert Xi_c1+Width:InterpolationWidths 34 0.00037614702 insert Xi_c1+Width:InterpolationWidths 35 0.00037736107 insert Xi_c1+Width:InterpolationWidths 36 0.00037857281 insert Xi_c1+Width:InterpolationWidths 37 0.00037978227 insert Xi_c1+Width:InterpolationWidths 38 0.00038098946 insert Xi_c1+Width:InterpolationWidths 39 0.00038219439 insert Xi_c1+Width:InterpolationWidths 40 0.0003833971 insert Xi_c1+Width:InterpolationWidths 41 0.00038459759 insert Xi_c1+Width:InterpolationWidths 42 0.00038579589 insert Xi_c1+Width:InterpolationWidths 43 0.00038699201 insert Xi_c1+Width:InterpolationWidths 44 0.00038818597 insert Xi_c1+Width:InterpolationWidths 45 0.00038937778 insert Xi_c1+Width:InterpolationWidths 46 0.00039056748 insert Xi_c1+Width:InterpolationWidths 47 0.00039175506 insert Xi_c1+Width:InterpolationWidths 48 0.00039294055 insert Xi_c1+Width:InterpolationWidths 49 0.00039412397 insert Xi_c1+Width:InterpolationWidths 50 0.00039530533 insert Xi_c1+Width:InterpolationWidths 51 0.00039648464 insert Xi_c1+Width:InterpolationWidths 52 0.00039766193 insert Xi_c1+Width:InterpolationWidths 53 0.0003988372 insert Xi_c1+Width:InterpolationWidths 54 0.00063398869 insert Xi_c1+Width:InterpolationWidths 55 0.00063672576 insert Xi_c1+Width:InterpolationWidths 56 0.00063945512 insert Xi_c1+Width:InterpolationWidths 57 0.00064217686 insert Xi_c1+Width:InterpolationWidths 58 0.00064489106 insert Xi_c1+Width:InterpolationWidths 59 0.00064759783 insert Xi_c1+Width:InterpolationWidths 60 0.00065029723 insert Xi_c1+Width:InterpolationWidths 61 0.00065298936 insert Xi_c1+Width:InterpolationWidths 62 0.00065567431 insert Xi_c1+Width:InterpolationWidths 63 0.00065835214 insert Xi_c1+Width:InterpolationWidths 64 0.00066102295 insert Xi_c1+Width:InterpolationWidths 65 0.00066368681 insert Xi_c1+Width:InterpolationWidths 66 0.0006663438 insert Xi_c1+Width:InterpolationWidths 67 0.00066899399 insert Xi_c1+Width:InterpolationWidths 68 0.00067163746 insert Xi_c1+Width:InterpolationWidths 69 0.00067427428 insert Xi_c1+Width:InterpolationWidths 70 0.00067690452 insert Xi_c1+Width:InterpolationWidths 71 0.00067952825 insert Xi_c1+Width:InterpolationWidths 72 0.00068214555 insert Xi_c1+Width:InterpolationWidths 73 0.00068475647 insert Xi_c1+Width:InterpolationWidths 74 0.00068736109 insert Xi_c1+Width:InterpolationWidths 75 0.00068995948 insert Xi_c1+Width:InterpolationWidths 76 0.00069255168 insert Xi_c1+Width:InterpolationWidths 77 0.00069513778 insert Xi_c1+Width:InterpolationWidths 78 0.00069771783 insert Xi_c1+Width:InterpolationWidths 79 0.00070029189 insert Xi_c1+Width:InterpolationWidths 80 0.00070286002 insert Xi_c1+Width:InterpolationWidths 81 0.00070542228 insert Xi_c1+Width:InterpolationWidths 82 0.00070797873 insert Xi_c1+Width:InterpolationWidths 83 0.00071052943 insert Xi_c1+Width:InterpolationWidths 84 0.00071307442 insert Xi_c1+Width:InterpolationWidths 85 0.00071561378 insert Xi_c1+Width:InterpolationWidths 86 0.00071814754 insert Xi_c1+Width:InterpolationWidths 87 0.00072067578 insert Xi_c1+Width:InterpolationWidths 88 0.00072319852 insert Xi_c1+Width:InterpolationWidths 89 0.00072571584 insert Xi_c1+Width:InterpolationWidths 90 0.00072822777 insert Xi_c1+Width:InterpolationWidths 91 0.00073073438 insert Xi_c1+Width:InterpolationWidths 92 0.0007332357 insert Xi_c1+Width:InterpolationWidths 93 0.00073573179 insert Xi_c1+Width:InterpolationWidths 94 0.0007382227 insert Xi_c1+Width:InterpolationWidths 95 0.00074070846 insert Xi_c1+Width:InterpolationWidths 96 0.00074318913 insert Xi_c1+Width:InterpolationWidths 97 0.00074566476 insert Xi_c1+Width:InterpolationWidths 98 0.00074813539 insert Xi_c1+Width:InterpolationWidths 99 0.00075060105 insert Xi_c1+Width:InterpolationWidths 100 0.0007530618 insert Xi_c1+Width:InterpolationWidths 101 0.00075551768 insert Xi_c1+Width:InterpolationWidths 102 0.00075796874 insert Xi_c1+Width:InterpolationWidths 103 0.000760415 insert Xi_c1+Width:InterpolationWidths 104 0.00076285651 insert Xi_c1+Width:InterpolationWidths 105 0.00076529332 insert Xi_c1+Width:InterpolationWidths 106 0.00076772546 insert Xi_c1+Width:InterpolationWidths 107 0.00077015298 insert Xi_c1+Width:NumberofEntries 0 54 insert Xi_c1+Width:NumberofEntries 1 108 insert Xi_c1+Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Xi_c1+Width:ModeLocation 0 40 insert Xi_c1+Width:BaryonDecayers 1 /Herwig/Decays/HeavyStrong insert Xi_c1+Width:ModeLocation 1 41 newdef /Herwig/Particles/Xi_c(2790)+:Width_generator Xi_c1+Width newdef /Herwig/Particles/Xi_c(2790)bar-:Width_generator Xi_c1+Width # create Herwig::BaryonWidthGenerator Xi_c1*0Width newdef Xi_c1*0Width:Particle /Herwig/Particles/Xi_c(2815)0 newdef Xi_c1*0Width:Prefactor 0.999995 newdef Xi_c1*0Width:BRNormalize 1 newdef Xi_c1*0Width:BRMinimum 0.01 newdef Xi_c1*0Width:Points 50 newdef Xi_c1*0Width:InterpolationOrder 1 insert Xi_c1*0Width:MEtype 0 2 insert Xi_c1*0Width:MEtype 1 2 insert Xi_c1*0Width:MEtype 2 2 insert Xi_c1*0Width:MEtype 3 2 insert Xi_c1*0Width:MEcode 0 0 insert Xi_c1*0Width:MEcode 1 0 insert Xi_c1*0Width:MEcode 2 0 insert Xi_c1*0Width:MEcode 3 0 insert Xi_c1*0Width:MEcoupling 0 0.90965 insert Xi_c1*0Width:MEcoupling 1 1.0791 insert Xi_c1*0Width:MEcoupling 2 1.02953 insert Xi_c1*0Width:MEcoupling 3 0.998347 insert Xi_c1*0Width:ModeOn 0 1 insert Xi_c1*0Width:ModeOn 1 1 insert Xi_c1*0Width:ModeOn 2 1 insert Xi_c1*0Width:ModeOn 3 1 insert Xi_c1*0Width:MinimumMasses 0 2.71514 insert Xi_c1*0Width:MinimumMasses 1 2.71298 insert Xi_c1*0Width:MinimumMasses 2 2.75617 insert Xi_c1*0Width:MinimumMasses 3 2.75108 insert Xi_c1*0Width:MEmass1 0 2.5757 insert Xi_c1*0Width:MEmass1 1 2.578 insert Xi_c1*0Width:MEmass1 2 2.6466 insert Xi_c1*0Width:MEmass1 3 2.6461 insert Xi_c1*0Width:MEmass2 0 0.13957 insert Xi_c1*0Width:MEmass2 1 0.134978 insert Xi_c1*0Width:MEmass2 2 0.13957 insert Xi_c1*0Width:MEmass2 3 0.134978 insert Xi_c1*0Width:DecayModes 0 Xi_c(2815)0->Xi'_c+,pi-; insert Xi_c1*0Width:DecayModes 1 Xi_c(2815)0->Xi'_c0,pi0; insert Xi_c1*0Width:DecayModes 2 Xi_c(2815)0->Xi_c*+,pi-; insert Xi_c1*0Width:DecayModes 3 Xi_c(2815)0->Xi_c*0,pi0; insert Xi_c1*0Width:InterpolationMasses 0 2.8045714 insert Xi_c1*0Width:InterpolationMasses 1 2.8050857 insert Xi_c1*0Width:InterpolationMasses 2 2.8056 insert Xi_c1*0Width:InterpolationMasses 3 2.8061143 insert Xi_c1*0Width:InterpolationMasses 4 2.8066286 insert Xi_c1*0Width:InterpolationMasses 5 2.8071429 insert Xi_c1*0Width:InterpolationMasses 6 2.8076571 insert Xi_c1*0Width:InterpolationMasses 7 2.8081714 insert Xi_c1*0Width:InterpolationMasses 8 2.8086857 insert Xi_c1*0Width:InterpolationMasses 9 2.8092 insert Xi_c1*0Width:InterpolationMasses 10 2.8097143 insert Xi_c1*0Width:InterpolationMasses 11 2.8102286 insert Xi_c1*0Width:InterpolationMasses 12 2.8107429 insert Xi_c1*0Width:InterpolationMasses 13 2.8112571 insert Xi_c1*0Width:InterpolationMasses 14 2.8117714 insert Xi_c1*0Width:InterpolationMasses 15 2.8122857 insert Xi_c1*0Width:InterpolationMasses 16 2.8128 insert Xi_c1*0Width:InterpolationMasses 17 2.8133143 insert Xi_c1*0Width:InterpolationMasses 18 2.8138286 insert Xi_c1*0Width:InterpolationMasses 19 2.8143429 insert Xi_c1*0Width:InterpolationMasses 20 2.8148571 insert Xi_c1*0Width:InterpolationMasses 21 2.8153714 insert Xi_c1*0Width:InterpolationMasses 22 2.8158857 insert Xi_c1*0Width:InterpolationMasses 23 2.8164 insert Xi_c1*0Width:InterpolationMasses 24 2.8169143 insert Xi_c1*0Width:InterpolationMasses 25 2.8174286 insert Xi_c1*0Width:InterpolationMasses 26 2.8179429 insert Xi_c1*0Width:InterpolationMasses 27 2.8184571 insert Xi_c1*0Width:InterpolationMasses 28 2.8189714 insert Xi_c1*0Width:InterpolationMasses 29 2.8194857 insert Xi_c1*0Width:InterpolationMasses 30 2.82 insert Xi_c1*0Width:InterpolationMasses 31 2.8205143 insert Xi_c1*0Width:InterpolationMasses 32 2.8210286 insert Xi_c1*0Width:InterpolationMasses 33 2.8215429 insert Xi_c1*0Width:InterpolationMasses 34 2.8220571 insert Xi_c1*0Width:InterpolationMasses 35 2.8225714 insert Xi_c1*0Width:InterpolationMasses 36 2.8230857 insert Xi_c1*0Width:InterpolationMasses 37 2.8236 insert Xi_c1*0Width:InterpolationMasses 38 2.8241143 insert Xi_c1*0Width:InterpolationMasses 39 2.8246286 insert Xi_c1*0Width:InterpolationMasses 40 2.8251429 insert Xi_c1*0Width:InterpolationMasses 41 2.8256571 insert Xi_c1*0Width:InterpolationMasses 42 2.8261714 insert Xi_c1*0Width:InterpolationMasses 43 2.8266857 insert Xi_c1*0Width:InterpolationMasses 44 2.8272 insert Xi_c1*0Width:InterpolationMasses 45 2.8277143 insert Xi_c1*0Width:InterpolationMasses 46 2.8282286 insert Xi_c1*0Width:InterpolationMasses 47 2.8287429 insert Xi_c1*0Width:InterpolationMasses 48 2.8292571 insert Xi_c1*0Width:InterpolationMasses 49 2.8297714 insert Xi_c1*0Width:InterpolationMasses 50 2.8302857 insert Xi_c1*0Width:InterpolationMasses 51 2.8308 insert Xi_c1*0Width:InterpolationMasses 52 2.8313143 insert Xi_c1*0Width:InterpolationMasses 53 2.8318286 insert Xi_c1*0Width:InterpolationMasses 54 2.8045714 insert Xi_c1*0Width:InterpolationMasses 55 2.8050857 insert Xi_c1*0Width:InterpolationMasses 56 2.8056 insert Xi_c1*0Width:InterpolationMasses 57 2.8061143 insert Xi_c1*0Width:InterpolationMasses 58 2.8066286 insert Xi_c1*0Width:InterpolationMasses 59 2.8071429 insert Xi_c1*0Width:InterpolationMasses 60 2.8076571 insert Xi_c1*0Width:InterpolationMasses 61 2.8081714 insert Xi_c1*0Width:InterpolationMasses 62 2.8086857 insert Xi_c1*0Width:InterpolationMasses 63 2.8092 insert Xi_c1*0Width:InterpolationMasses 64 2.8097143 insert Xi_c1*0Width:InterpolationMasses 65 2.8102286 insert Xi_c1*0Width:InterpolationMasses 66 2.8107429 insert Xi_c1*0Width:InterpolationMasses 67 2.8112571 insert Xi_c1*0Width:InterpolationMasses 68 2.8117714 insert Xi_c1*0Width:InterpolationMasses 69 2.8122857 insert Xi_c1*0Width:InterpolationMasses 70 2.8128 insert Xi_c1*0Width:InterpolationMasses 71 2.8133143 insert Xi_c1*0Width:InterpolationMasses 72 2.8138286 insert Xi_c1*0Width:InterpolationMasses 73 2.8143429 insert Xi_c1*0Width:InterpolationMasses 74 2.8148571 insert Xi_c1*0Width:InterpolationMasses 75 2.8153714 insert Xi_c1*0Width:InterpolationMasses 76 2.8158857 insert Xi_c1*0Width:InterpolationMasses 77 2.8164 insert Xi_c1*0Width:InterpolationMasses 78 2.8169143 insert Xi_c1*0Width:InterpolationMasses 79 2.8174286 insert Xi_c1*0Width:InterpolationMasses 80 2.8179429 insert Xi_c1*0Width:InterpolationMasses 81 2.8184571 insert Xi_c1*0Width:InterpolationMasses 82 2.8189714 insert Xi_c1*0Width:InterpolationMasses 83 2.8194857 insert Xi_c1*0Width:InterpolationMasses 84 2.82 insert Xi_c1*0Width:InterpolationMasses 85 2.8205143 insert Xi_c1*0Width:InterpolationMasses 86 2.8210286 insert Xi_c1*0Width:InterpolationMasses 87 2.8215429 insert Xi_c1*0Width:InterpolationMasses 88 2.8220571 insert Xi_c1*0Width:InterpolationMasses 89 2.8225714 insert Xi_c1*0Width:InterpolationMasses 90 2.8230857 insert Xi_c1*0Width:InterpolationMasses 91 2.8236 insert Xi_c1*0Width:InterpolationMasses 92 2.8241143 insert Xi_c1*0Width:InterpolationMasses 93 2.8246286 insert Xi_c1*0Width:InterpolationMasses 94 2.8251429 insert Xi_c1*0Width:InterpolationMasses 95 2.8256571 insert Xi_c1*0Width:InterpolationMasses 96 2.8261714 insert Xi_c1*0Width:InterpolationMasses 97 2.8266857 insert Xi_c1*0Width:InterpolationMasses 98 2.8272 insert Xi_c1*0Width:InterpolationMasses 99 2.8277143 insert Xi_c1*0Width:InterpolationMasses 100 2.8282286 insert Xi_c1*0Width:InterpolationMasses 101 2.8287429 insert Xi_c1*0Width:InterpolationMasses 102 2.8292571 insert Xi_c1*0Width:InterpolationMasses 103 2.8297714 insert Xi_c1*0Width:InterpolationMasses 104 2.8302857 insert Xi_c1*0Width:InterpolationMasses 105 2.8308 insert Xi_c1*0Width:InterpolationMasses 106 2.8313143 insert Xi_c1*0Width:InterpolationMasses 107 2.8318286 insert Xi_c1*0Width:InterpolationMasses 108 2.8045714 insert Xi_c1*0Width:InterpolationMasses 109 2.8050857 insert Xi_c1*0Width:InterpolationMasses 110 2.8056 insert Xi_c1*0Width:InterpolationMasses 111 2.8061143 insert Xi_c1*0Width:InterpolationMasses 112 2.8066286 insert Xi_c1*0Width:InterpolationMasses 113 2.8071429 insert Xi_c1*0Width:InterpolationMasses 114 2.8076571 insert Xi_c1*0Width:InterpolationMasses 115 2.8081714 insert Xi_c1*0Width:InterpolationMasses 116 2.8086857 insert Xi_c1*0Width:InterpolationMasses 117 2.8092 insert Xi_c1*0Width:InterpolationMasses 118 2.8097143 insert Xi_c1*0Width:InterpolationMasses 119 2.8102286 insert Xi_c1*0Width:InterpolationMasses 120 2.8107429 insert Xi_c1*0Width:InterpolationMasses 121 2.8112571 insert Xi_c1*0Width:InterpolationMasses 122 2.8117714 insert Xi_c1*0Width:InterpolationMasses 123 2.8122857 insert Xi_c1*0Width:InterpolationMasses 124 2.8128 insert Xi_c1*0Width:InterpolationMasses 125 2.8133143 insert Xi_c1*0Width:InterpolationMasses 126 2.8138286 insert Xi_c1*0Width:InterpolationMasses 127 2.8143429 insert Xi_c1*0Width:InterpolationMasses 128 2.8148571 insert Xi_c1*0Width:InterpolationMasses 129 2.8153714 insert Xi_c1*0Width:InterpolationMasses 130 2.8158857 insert Xi_c1*0Width:InterpolationMasses 131 2.8164 insert Xi_c1*0Width:InterpolationMasses 132 2.8169143 insert Xi_c1*0Width:InterpolationMasses 133 2.8174286 insert Xi_c1*0Width:InterpolationMasses 134 2.8179429 insert Xi_c1*0Width:InterpolationMasses 135 2.8184571 insert Xi_c1*0Width:InterpolationMasses 136 2.8189714 insert Xi_c1*0Width:InterpolationMasses 137 2.8194857 insert Xi_c1*0Width:InterpolationMasses 138 2.82 insert Xi_c1*0Width:InterpolationMasses 139 2.8205143 insert Xi_c1*0Width:InterpolationMasses 140 2.8210286 insert Xi_c1*0Width:InterpolationMasses 141 2.8215429 insert Xi_c1*0Width:InterpolationMasses 142 2.8220571 insert Xi_c1*0Width:InterpolationMasses 143 2.8225714 insert Xi_c1*0Width:InterpolationMasses 144 2.8230857 insert Xi_c1*0Width:InterpolationMasses 145 2.8236 insert Xi_c1*0Width:InterpolationMasses 146 2.8241143 insert Xi_c1*0Width:InterpolationMasses 147 2.8246286 insert Xi_c1*0Width:InterpolationMasses 148 2.8251429 insert Xi_c1*0Width:InterpolationMasses 149 2.8256571 insert Xi_c1*0Width:InterpolationMasses 150 2.8261714 insert Xi_c1*0Width:InterpolationMasses 151 2.8266857 insert Xi_c1*0Width:InterpolationMasses 152 2.8272 insert Xi_c1*0Width:InterpolationMasses 153 2.8277143 insert Xi_c1*0Width:InterpolationMasses 154 2.8282286 insert Xi_c1*0Width:InterpolationMasses 155 2.8287429 insert Xi_c1*0Width:InterpolationMasses 156 2.8292571 insert Xi_c1*0Width:InterpolationMasses 157 2.8297714 insert Xi_c1*0Width:InterpolationMasses 158 2.8302857 insert Xi_c1*0Width:InterpolationMasses 159 2.8308 insert Xi_c1*0Width:InterpolationMasses 160 2.8313143 insert Xi_c1*0Width:InterpolationMasses 161 2.8318286 insert Xi_c1*0Width:InterpolationMasses 162 2.8045714 insert Xi_c1*0Width:InterpolationMasses 163 2.8050857 insert Xi_c1*0Width:InterpolationMasses 164 2.8056 insert Xi_c1*0Width:InterpolationMasses 165 2.8061143 insert Xi_c1*0Width:InterpolationMasses 166 2.8066286 insert Xi_c1*0Width:InterpolationMasses 167 2.8071429 insert Xi_c1*0Width:InterpolationMasses 168 2.8076571 insert Xi_c1*0Width:InterpolationMasses 169 2.8081714 insert Xi_c1*0Width:InterpolationMasses 170 2.8086857 insert Xi_c1*0Width:InterpolationMasses 171 2.8092 insert Xi_c1*0Width:InterpolationMasses 172 2.8097143 insert Xi_c1*0Width:InterpolationMasses 173 2.8102286 insert Xi_c1*0Width:InterpolationMasses 174 2.8107429 insert Xi_c1*0Width:InterpolationMasses 175 2.8112571 insert Xi_c1*0Width:InterpolationMasses 176 2.8117714 insert Xi_c1*0Width:InterpolationMasses 177 2.8122857 insert Xi_c1*0Width:InterpolationMasses 178 2.8128 insert Xi_c1*0Width:InterpolationMasses 179 2.8133143 insert Xi_c1*0Width:InterpolationMasses 180 2.8138286 insert Xi_c1*0Width:InterpolationMasses 181 2.8143429 insert Xi_c1*0Width:InterpolationMasses 182 2.8148571 insert Xi_c1*0Width:InterpolationMasses 183 2.8153714 insert Xi_c1*0Width:InterpolationMasses 184 2.8158857 insert Xi_c1*0Width:InterpolationMasses 185 2.8164 insert Xi_c1*0Width:InterpolationMasses 186 2.8169143 insert Xi_c1*0Width:InterpolationMasses 187 2.8174286 insert Xi_c1*0Width:InterpolationMasses 188 2.8179429 insert Xi_c1*0Width:InterpolationMasses 189 2.8184571 insert Xi_c1*0Width:InterpolationMasses 190 2.8189714 insert Xi_c1*0Width:InterpolationMasses 191 2.8194857 insert Xi_c1*0Width:InterpolationMasses 192 2.82 insert Xi_c1*0Width:InterpolationMasses 193 2.8205143 insert Xi_c1*0Width:InterpolationMasses 194 2.8210286 insert Xi_c1*0Width:InterpolationMasses 195 2.8215429 insert Xi_c1*0Width:InterpolationMasses 196 2.8220571 insert Xi_c1*0Width:InterpolationMasses 197 2.8225714 insert Xi_c1*0Width:InterpolationMasses 198 2.8230857 insert Xi_c1*0Width:InterpolationMasses 199 2.8236 insert Xi_c1*0Width:InterpolationMasses 200 2.8241143 insert Xi_c1*0Width:InterpolationMasses 201 2.8246286 insert Xi_c1*0Width:InterpolationMasses 202 2.8251429 insert Xi_c1*0Width:InterpolationMasses 203 2.8256571 insert Xi_c1*0Width:InterpolationMasses 204 2.8261714 insert Xi_c1*0Width:InterpolationMasses 205 2.8266857 insert Xi_c1*0Width:InterpolationMasses 206 2.8272 insert Xi_c1*0Width:InterpolationMasses 207 2.8277143 insert Xi_c1*0Width:InterpolationMasses 208 2.8282286 insert Xi_c1*0Width:InterpolationMasses 209 2.8287429 insert Xi_c1*0Width:InterpolationMasses 210 2.8292571 insert Xi_c1*0Width:InterpolationMasses 211 2.8297714 insert Xi_c1*0Width:InterpolationMasses 212 2.8302857 insert Xi_c1*0Width:InterpolationMasses 213 2.8308 insert Xi_c1*0Width:InterpolationMasses 214 2.8313143 insert Xi_c1*0Width:InterpolationMasses 215 2.8318286 insert Xi_c1*0Width:InterpolationWidths 0 0.00025057439 insert Xi_c1*0Width:InterpolationWidths 1 0.00025492904 insert Xi_c1*0Width:InterpolationWidths 2 0.0002593369 insert Xi_c1*0Width:InterpolationWidths 3 0.00026379835 insert Xi_c1*0Width:InterpolationWidths 4 0.00026831381 insert Xi_c1*0Width:InterpolationWidths 5 0.00027288368 insert Xi_c1*0Width:InterpolationWidths 6 0.00027750835 insert Xi_c1*0Width:InterpolationWidths 7 0.00028218823 insert Xi_c1*0Width:InterpolationWidths 8 0.00028692373 insert Xi_c1*0Width:InterpolationWidths 9 0.00029171524 insert Xi_c1*0Width:InterpolationWidths 10 0.00029656319 insert Xi_c1*0Width:InterpolationWidths 11 0.00030146799 insert Xi_c1*0Width:InterpolationWidths 12 0.00030643003 insert Xi_c1*0Width:InterpolationWidths 13 0.00031144974 insert Xi_c1*0Width:InterpolationWidths 14 0.00031652752 insert Xi_c1*0Width:InterpolationWidths 15 0.0003216638 insert Xi_c1*0Width:InterpolationWidths 16 0.00032685899 insert Xi_c1*0Width:InterpolationWidths 17 0.00033211351 insert Xi_c1*0Width:InterpolationWidths 18 0.00033742777 insert Xi_c1*0Width:InterpolationWidths 19 0.00034280221 insert Xi_c1*0Width:InterpolationWidths 20 0.00034823723 insert Xi_c1*0Width:InterpolationWidths 21 0.00035373327 insert Xi_c1*0Width:InterpolationWidths 22 0.00035929075 insert Xi_c1*0Width:InterpolationWidths 23 0.0003649101 insert Xi_c1*0Width:InterpolationWidths 24 0.00037059174 insert Xi_c1*0Width:InterpolationWidths 25 0.0003763361 insert Xi_c1*0Width:InterpolationWidths 26 0.00038214362 insert Xi_c1*0Width:InterpolationWidths 27 0.00038801473 insert Xi_c1*0Width:InterpolationWidths 28 0.00039394985 insert Xi_c1*0Width:InterpolationWidths 29 0.00039994943 insert Xi_c1*0Width:InterpolationWidths 30 0.0004060139 insert Xi_c1*0Width:InterpolationWidths 31 0.00041214371 insert Xi_c1*0Width:InterpolationWidths 32 0.00041833928 insert Xi_c1*0Width:InterpolationWidths 33 0.00042460105 insert Xi_c1*0Width:InterpolationWidths 34 0.00043092948 insert Xi_c1*0Width:InterpolationWidths 35 0.00043732501 insert Xi_c1*0Width:InterpolationWidths 36 0.00044378807 insert Xi_c1*0Width:InterpolationWidths 37 0.00045031912 insert Xi_c1*0Width:InterpolationWidths 38 0.0004569186 insert Xi_c1*0Width:InterpolationWidths 39 0.00046358697 insert Xi_c1*0Width:InterpolationWidths 40 0.00047032467 insert Xi_c1*0Width:InterpolationWidths 41 0.00047713215 insert Xi_c1*0Width:InterpolationWidths 42 0.00048400987 insert Xi_c1*0Width:InterpolationWidths 43 0.00049095829 insert Xi_c1*0Width:InterpolationWidths 44 0.00049797785 insert Xi_c1*0Width:InterpolationWidths 45 0.00050506902 insert Xi_c1*0Width:InterpolationWidths 46 0.00051223226 insert Xi_c1*0Width:InterpolationWidths 47 0.00051946802 insert Xi_c1*0Width:InterpolationWidths 48 0.00052677677 insert Xi_c1*0Width:InterpolationWidths 49 0.00053415897 insert Xi_c1*0Width:InterpolationWidths 50 0.00054161509 insert Xi_c1*0Width:InterpolationWidths 51 0.00054914559 insert Xi_c1*0Width:InterpolationWidths 52 0.00055675094 insert Xi_c1*0Width:InterpolationWidths 53 0.00056443161 insert Xi_c1*0Width:InterpolationWidths 54 0.00012772948 insert Xi_c1*0Width:InterpolationWidths 55 0.00012991128 insert Xi_c1*0Width:InterpolationWidths 56 0.00013211941 insert Xi_c1*0Width:InterpolationWidths 57 0.00013435407 insert Xi_c1*0Width:InterpolationWidths 58 0.00013661544 insert Xi_c1*0Width:InterpolationWidths 59 0.00013890373 insert Xi_c1*0Width:InterpolationWidths 60 0.00014121914 insert Xi_c1*0Width:InterpolationWidths 61 0.00014356186 insert Xi_c1*0Width:InterpolationWidths 62 0.0001459321 insert Xi_c1*0Width:InterpolationWidths 63 0.00014833006 insert Xi_c1*0Width:InterpolationWidths 64 0.00015075593 insert Xi_c1*0Width:InterpolationWidths 65 0.00015320993 insert Xi_c1*0Width:InterpolationWidths 66 0.00015569225 insert Xi_c1*0Width:InterpolationWidths 67 0.0001582031 insert Xi_c1*0Width:InterpolationWidths 68 0.00016074268 insert Xi_c1*0Width:InterpolationWidths 69 0.00016331119 insert Xi_c1*0Width:InterpolationWidths 70 0.00016590885 insert Xi_c1*0Width:InterpolationWidths 71 0.00016853585 insert Xi_c1*0Width:InterpolationWidths 72 0.00017119241 insert Xi_c1*0Width:InterpolationWidths 73 0.00017387874 insert Xi_c1*0Width:InterpolationWidths 74 0.00017659503 insert Xi_c1*0Width:InterpolationWidths 75 0.00017934151 insert Xi_c1*0Width:InterpolationWidths 76 0.00018211837 insert Xi_c1*0Width:InterpolationWidths 77 0.00018492584 insert Xi_c1*0Width:InterpolationWidths 78 0.00018776412 insert Xi_c1*0Width:InterpolationWidths 79 0.00019063342 insert Xi_c1*0Width:InterpolationWidths 80 0.00019353396 insert Xi_c1*0Width:InterpolationWidths 81 0.00019646595 insert Xi_c1*0Width:InterpolationWidths 82 0.0001994296 insert Xi_c1*0Width:InterpolationWidths 83 0.00020242514 insert Xi_c1*0Width:InterpolationWidths 84 0.00020545277 insert Xi_c1*0Width:InterpolationWidths 85 0.0002085127 insert Xi_c1*0Width:InterpolationWidths 86 0.00021160517 insert Xi_c1*0Width:InterpolationWidths 87 0.00021473038 insert Xi_c1*0Width:InterpolationWidths 88 0.00021788856 insert Xi_c1*0Width:InterpolationWidths 89 0.00022107991 insert Xi_c1*0Width:InterpolationWidths 90 0.00022430467 insert Xi_c1*0Width:InterpolationWidths 91 0.00022756306 insert Xi_c1*0Width:InterpolationWidths 92 0.00023085528 insert Xi_c1*0Width:InterpolationWidths 93 0.00023418157 insert Xi_c1*0Width:InterpolationWidths 94 0.00023754215 insert Xi_c1*0Width:InterpolationWidths 95 0.00024093725 insert Xi_c1*0Width:InterpolationWidths 96 0.00024436707 insert Xi_c1*0Width:InterpolationWidths 97 0.00024783186 insert Xi_c1*0Width:InterpolationWidths 98 0.00025133183 insert Xi_c1*0Width:InterpolationWidths 99 0.00025486721 insert Xi_c1*0Width:InterpolationWidths 100 0.00025843824 insert Xi_c1*0Width:InterpolationWidths 101 0.00026204512 insert Xi_c1*0Width:InterpolationWidths 102 0.0002656881 insert Xi_c1*0Width:InterpolationWidths 103 0.00026936741 insert Xi_c1*0Width:InterpolationWidths 104 0.00027308326 insert Xi_c1*0Width:InterpolationWidths 105 0.0002768359 insert Xi_c1*0Width:InterpolationWidths 106 0.00028062556 insert Xi_c1*0Width:InterpolationWidths 107 0.00028445246 insert Xi_c1*0Width:InterpolationWidths 108 0.00032529865 insert Xi_c1*0Width:InterpolationWidths 109 0.00033044819 insert Xi_c1*0Width:InterpolationWidths 110 0.00033553994 insert Xi_c1*0Width:InterpolationWidths 111 0.00034057621 insert Xi_c1*0Width:InterpolationWidths 112 0.00034555918 insert Xi_c1*0Width:InterpolationWidths 113 0.00035049088 insert Xi_c1*0Width:InterpolationWidths 114 0.00035537323 insert Xi_c1*0Width:InterpolationWidths 115 0.00036020805 insert Xi_c1*0Width:InterpolationWidths 116 0.00036499702 insert Xi_c1*0Width:InterpolationWidths 117 0.00036974176 insert Xi_c1*0Width:InterpolationWidths 118 0.00037444377 insert Xi_c1*0Width:InterpolationWidths 119 0.00037910451 insert Xi_c1*0Width:InterpolationWidths 120 0.00038372532 insert Xi_c1*0Width:InterpolationWidths 121 0.00038830749 insert Xi_c1*0Width:InterpolationWidths 122 0.00039285226 insert Xi_c1*0Width:InterpolationWidths 123 0.00039736077 insert Xi_c1*0Width:InterpolationWidths 124 0.00040183414 insert Xi_c1*0Width:InterpolationWidths 125 0.00040627342 insert Xi_c1*0Width:InterpolationWidths 126 0.00041067962 insert Xi_c1*0Width:InterpolationWidths 127 0.00041505368 insert Xi_c1*0Width:InterpolationWidths 128 0.00041939652 insert Xi_c1*0Width:InterpolationWidths 129 0.00042370902 insert Xi_c1*0Width:InterpolationWidths 130 0.000427992 insert Xi_c1*0Width:InterpolationWidths 131 0.00043223718 insert Xi_c1*0Width:InterpolationWidths 132 0.0004364242 insert Xi_c1*0Width:InterpolationWidths 133 0.00044056727 insert Xi_c1*0Width:InterpolationWidths 134 0.00044467169 insert Xi_c1*0Width:InterpolationWidths 135 0.00044874066 insert Xi_c1*0Width:InterpolationWidths 136 0.00045277585 insert Xi_c1*0Width:InterpolationWidths 137 0.00045677927 insert Xi_c1*0Width:InterpolationWidths 138 0.00046075231 insert Xi_c1*0Width:InterpolationWidths 139 0.0004646962 insert Xi_c1*0Width:InterpolationWidths 140 0.00046861201 insert Xi_c1*0Width:InterpolationWidths 141 0.00047250072 insert Xi_c1*0Width:InterpolationWidths 142 0.00047636323 insert Xi_c1*0Width:InterpolationWidths 143 0.00048020034 insert Xi_c1*0Width:InterpolationWidths 144 0.00048401282 insert Xi_c1*0Width:InterpolationWidths 145 0.00048780139 insert Xi_c1*0Width:InterpolationWidths 146 0.00049156672 insert Xi_c1*0Width:InterpolationWidths 147 0.00049530942 insert Xi_c1*0Width:InterpolationWidths 148 0.0004990301 insert Xi_c1*0Width:InterpolationWidths 149 0.00050272932 insert Xi_c1*0Width:InterpolationWidths 150 0.00050640762 insert Xi_c1*0Width:InterpolationWidths 151 0.0005100655 insert Xi_c1*0Width:InterpolationWidths 152 0.00051370344 insert Xi_c1*0Width:InterpolationWidths 153 0.00051732193 insert Xi_c1*0Width:InterpolationWidths 154 0.00052092139 insert Xi_c1*0Width:InterpolationWidths 155 0.00052450225 insert Xi_c1*0Width:InterpolationWidths 156 0.00052806493 insert Xi_c1*0Width:InterpolationWidths 157 0.00053160982 insert Xi_c1*0Width:InterpolationWidths 158 0.00053513728 insert Xi_c1*0Width:InterpolationWidths 159 0.00053864769 insert Xi_c1*0Width:InterpolationWidths 160 0.0005421414 insert Xi_c1*0Width:InterpolationWidths 161 0.00054561874 insert Xi_c1*0Width:InterpolationWidths 162 0.00018463079 insert Xi_c1*0Width:InterpolationWidths 163 0.00018693581 insert Xi_c1*0Width:InterpolationWidths 164 0.00018922115 insert Xi_c1*0Width:InterpolationWidths 165 0.00019148745 insert Xi_c1*0Width:InterpolationWidths 166 0.0001937353 insert Xi_c1*0Width:InterpolationWidths 167 0.00019596529 insert Xi_c1*0Width:InterpolationWidths 168 0.00019817796 insert Xi_c1*0Width:InterpolationWidths 169 0.00020037384 insert Xi_c1*0Width:InterpolationWidths 170 0.00020255341 insert Xi_c1*0Width:InterpolationWidths 171 0.00020471716 insert Xi_c1*0Width:InterpolationWidths 172 0.00020686552 insert Xi_c1*0Width:InterpolationWidths 173 0.00020899894 insert Xi_c1*0Width:InterpolationWidths 174 0.00021111783 insert Xi_c1*0Width:InterpolationWidths 175 0.00021321942 insert Xi_c1*0Width:InterpolationWidths 176 0.00021529234 insert Xi_c1*0Width:InterpolationWidths 177 0.00021734337 insert Xi_c1*0Width:InterpolationWidths 178 0.00021937531 insert Xi_c1*0Width:InterpolationWidths 179 0.00022138978 insert Xi_c1*0Width:InterpolationWidths 180 0.00022338762 insert Xi_c1*0Width:InterpolationWidths 181 0.00022536982 insert Xi_c1*0Width:InterpolationWidths 182 0.00022733709 insert Xi_c1*0Width:InterpolationWidths 183 0.00022929002 insert Xi_c1*0Width:InterpolationWidths 184 0.00023122916 insert Xi_c1*0Width:InterpolationWidths 185 0.00023315497 insert Xi_c1*0Width:InterpolationWidths 186 0.0002350679 insert Xi_c1*0Width:InterpolationWidths 187 0.00023696836 insert Xi_c1*0Width:InterpolationWidths 188 0.00023885672 insert Xi_c1*0Width:InterpolationWidths 189 0.00024073334 insert Xi_c1*0Width:InterpolationWidths 190 0.00024259853 insert Xi_c1*0Width:InterpolationWidths 191 0.00024445261 insert Xi_c1*0Width:InterpolationWidths 192 0.00024629588 insert Xi_c1*0Width:InterpolationWidths 193 0.00024812861 insert Xi_c1*0Width:InterpolationWidths 194 0.00024995106 insert Xi_c1*0Width:InterpolationWidths 195 0.00025176349 insert Xi_c1*0Width:InterpolationWidths 196 0.00025356613 insert Xi_c1*0Width:InterpolationWidths 197 0.00025535921 insert Xi_c1*0Width:InterpolationWidths 198 0.00025714296 insert Xi_c1*0Width:InterpolationWidths 199 0.00025891757 insert Xi_c1*0Width:InterpolationWidths 200 0.00026068326 insert Xi_c1*0Width:InterpolationWidths 201 0.00026244022 insert Xi_c1*0Width:InterpolationWidths 202 0.00026418862 insert Xi_c1*0Width:InterpolationWidths 203 0.00026592865 insert Xi_c1*0Width:InterpolationWidths 204 0.00026766049 insert Xi_c1*0Width:InterpolationWidths 205 0.00026938429 insert Xi_c1*0Width:InterpolationWidths 206 0.00027110022 insert Xi_c1*0Width:InterpolationWidths 207 0.00027280842 insert Xi_c1*0Width:InterpolationWidths 208 0.00027450906 insert Xi_c1*0Width:InterpolationWidths 209 0.00027620228 insert Xi_c1*0Width:InterpolationWidths 210 0.0002778882 insert Xi_c1*0Width:InterpolationWidths 211 0.00027956698 insert Xi_c1*0Width:InterpolationWidths 212 0.00028123873 insert Xi_c1*0Width:InterpolationWidths 213 0.00028290359 insert Xi_c1*0Width:InterpolationWidths 214 0.00028456168 insert Xi_c1*0Width:InterpolationWidths 215 0.00028621312 insert Xi_c1*0Width:NumberofEntries 0 54 insert Xi_c1*0Width:NumberofEntries 1 108 insert Xi_c1*0Width:NumberofEntries 2 162 insert Xi_c1*0Width:NumberofEntries 3 216 insert Xi_c1*0Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Xi_c1*0Width:ModeLocation 0 35 insert Xi_c1*0Width:BaryonDecayers 1 /Herwig/Decays/HeavyStrong insert Xi_c1*0Width:ModeLocation 1 34 insert Xi_c1*0Width:BaryonDecayers 2 /Herwig/Decays/HeavyStrong insert Xi_c1*0Width:ModeLocation 2 39 insert Xi_c1*0Width:BaryonDecayers 3 /Herwig/Decays/HeavyStrong insert Xi_c1*0Width:ModeLocation 3 38 newdef /Herwig/Particles/Xi_c(2815)0:Width_generator Xi_c1*0Width newdef /Herwig/Particles/Xi_c(2815)bar0:Width_generator Xi_c1*0Width # create Herwig::BaryonWidthGenerator Xi_c1*+Width newdef Xi_c1*+Width:Particle /Herwig/Particles/Xi_c(2815)+ newdef Xi_c1*+Width:Prefactor 0.999996 newdef Xi_c1*+Width:BRNormalize 1 newdef Xi_c1*+Width:BRMinimum 0.01 newdef Xi_c1*+Width:Points 50 newdef Xi_c1*+Width:InterpolationOrder 1 insert Xi_c1*+Width:MEtype 0 2 insert Xi_c1*+Width:MEtype 1 2 insert Xi_c1*+Width:MEtype 2 2 insert Xi_c1*+Width:MEtype 3 2 insert Xi_c1*+Width:MEcode 0 0 insert Xi_c1*+Width:MEcode 1 0 insert Xi_c1*+Width:MEcode 2 0 insert Xi_c1*+Width:MEcode 3 0 insert Xi_c1*+Width:MEcoupling 0 1.06066 insert Xi_c1*+Width:MEcoupling 1 1.02604 insert Xi_c1*+Width:MEcoupling 2 1.03348 insert Xi_c1*+Width:MEcoupling 3 1.052 insert Xi_c1*+Width:ModeOn 0 1 insert Xi_c1*+Width:ModeOn 1 1 insert Xi_c1*+Width:ModeOn 2 1 insert Xi_c1*+Width:ModeOn 3 1 insert Xi_c1*+Width:MinimumMasses 0 2.71055 insert Xi_c1*+Width:MinimumMasses 1 2.71757 insert Xi_c1*+Width:MinimumMasses 2 2.75158 insert Xi_c1*+Width:MinimumMasses 3 2.75567 insert Xi_c1*+Width:MEmass1 0 2.5757 insert Xi_c1*+Width:MEmass1 1 2.578 insert Xi_c1*+Width:MEmass1 2 2.6466 insert Xi_c1*+Width:MEmass1 3 2.6461 insert Xi_c1*+Width:MEmass2 0 0.134978 insert Xi_c1*+Width:MEmass2 1 0.13957 insert Xi_c1*+Width:MEmass2 2 0.134978 insert Xi_c1*+Width:MEmass2 3 0.13957 insert Xi_c1*+Width:DecayModes 0 Xi_c(2815)+->Xi'_c+,pi0; insert Xi_c1*+Width:DecayModes 1 Xi_c(2815)+->Xi'_c0,pi+; insert Xi_c1*+Width:DecayModes 2 Xi_c(2815)+->Xi_c*+,pi0; insert Xi_c1*+Width:DecayModes 3 Xi_c(2815)+->Xi_c*0,pi+; insert Xi_c1*+Width:InterpolationMasses 0 2.8028714 insert Xi_c1*+Width:InterpolationMasses 1 2.8033857 insert Xi_c1*+Width:InterpolationMasses 2 2.8039 insert Xi_c1*+Width:InterpolationMasses 3 2.8044143 insert Xi_c1*+Width:InterpolationMasses 4 2.8049286 insert Xi_c1*+Width:InterpolationMasses 5 2.8054429 insert Xi_c1*+Width:InterpolationMasses 6 2.8059571 insert Xi_c1*+Width:InterpolationMasses 7 2.8064714 insert Xi_c1*+Width:InterpolationMasses 8 2.8069857 insert Xi_c1*+Width:InterpolationMasses 9 2.8075 insert Xi_c1*+Width:InterpolationMasses 10 2.8080143 insert Xi_c1*+Width:InterpolationMasses 11 2.8085286 insert Xi_c1*+Width:InterpolationMasses 12 2.8090429 insert Xi_c1*+Width:InterpolationMasses 13 2.8095571 insert Xi_c1*+Width:InterpolationMasses 14 2.8100714 insert Xi_c1*+Width:InterpolationMasses 15 2.8105857 insert Xi_c1*+Width:InterpolationMasses 16 2.8111 insert Xi_c1*+Width:InterpolationMasses 17 2.8116143 insert Xi_c1*+Width:InterpolationMasses 18 2.8121286 insert Xi_c1*+Width:InterpolationMasses 19 2.8126429 insert Xi_c1*+Width:InterpolationMasses 20 2.8131571 insert Xi_c1*+Width:InterpolationMasses 21 2.8136714 insert Xi_c1*+Width:InterpolationMasses 22 2.8141857 insert Xi_c1*+Width:InterpolationMasses 23 2.8147 insert Xi_c1*+Width:InterpolationMasses 24 2.8152143 insert Xi_c1*+Width:InterpolationMasses 25 2.8157286 insert Xi_c1*+Width:InterpolationMasses 26 2.8162429 insert Xi_c1*+Width:InterpolationMasses 27 2.8167571 insert Xi_c1*+Width:InterpolationMasses 28 2.8172714 insert Xi_c1*+Width:InterpolationMasses 29 2.8177857 insert Xi_c1*+Width:InterpolationMasses 30 2.8183 insert Xi_c1*+Width:InterpolationMasses 31 2.8188143 insert Xi_c1*+Width:InterpolationMasses 32 2.8193286 insert Xi_c1*+Width:InterpolationMasses 33 2.8198429 insert Xi_c1*+Width:InterpolationMasses 34 2.8203571 insert Xi_c1*+Width:InterpolationMasses 35 2.8208714 insert Xi_c1*+Width:InterpolationMasses 36 2.8213857 insert Xi_c1*+Width:InterpolationMasses 37 2.8219 insert Xi_c1*+Width:InterpolationMasses 38 2.8224143 insert Xi_c1*+Width:InterpolationMasses 39 2.8229286 insert Xi_c1*+Width:InterpolationMasses 40 2.8234429 insert Xi_c1*+Width:InterpolationMasses 41 2.8239571 insert Xi_c1*+Width:InterpolationMasses 42 2.8244714 insert Xi_c1*+Width:InterpolationMasses 43 2.8249857 insert Xi_c1*+Width:InterpolationMasses 44 2.8255 insert Xi_c1*+Width:InterpolationMasses 45 2.8260143 insert Xi_c1*+Width:InterpolationMasses 46 2.8265286 insert Xi_c1*+Width:InterpolationMasses 47 2.8270429 insert Xi_c1*+Width:InterpolationMasses 48 2.8275571 insert Xi_c1*+Width:InterpolationMasses 49 2.8280714 insert Xi_c1*+Width:InterpolationMasses 50 2.8285857 insert Xi_c1*+Width:InterpolationMasses 51 2.8291 insert Xi_c1*+Width:InterpolationMasses 52 2.8296143 insert Xi_c1*+Width:InterpolationMasses 53 2.8301286 insert Xi_c1*+Width:InterpolationMasses 54 2.8028714 insert Xi_c1*+Width:InterpolationMasses 55 2.8033857 insert Xi_c1*+Width:InterpolationMasses 56 2.8039 insert Xi_c1*+Width:InterpolationMasses 57 2.8044143 insert Xi_c1*+Width:InterpolationMasses 58 2.8049286 insert Xi_c1*+Width:InterpolationMasses 59 2.8054429 insert Xi_c1*+Width:InterpolationMasses 60 2.8059571 insert Xi_c1*+Width:InterpolationMasses 61 2.8064714 insert Xi_c1*+Width:InterpolationMasses 62 2.8069857 insert Xi_c1*+Width:InterpolationMasses 63 2.8075 insert Xi_c1*+Width:InterpolationMasses 64 2.8080143 insert Xi_c1*+Width:InterpolationMasses 65 2.8085286 insert Xi_c1*+Width:InterpolationMasses 66 2.8090429 insert Xi_c1*+Width:InterpolationMasses 67 2.8095571 insert Xi_c1*+Width:InterpolationMasses 68 2.8100714 insert Xi_c1*+Width:InterpolationMasses 69 2.8105857 insert Xi_c1*+Width:InterpolationMasses 70 2.8111 insert Xi_c1*+Width:InterpolationMasses 71 2.8116143 insert Xi_c1*+Width:InterpolationMasses 72 2.8121286 insert Xi_c1*+Width:InterpolationMasses 73 2.8126429 insert Xi_c1*+Width:InterpolationMasses 74 2.8131571 insert Xi_c1*+Width:InterpolationMasses 75 2.8136714 insert Xi_c1*+Width:InterpolationMasses 76 2.8141857 insert Xi_c1*+Width:InterpolationMasses 77 2.8147 insert Xi_c1*+Width:InterpolationMasses 78 2.8152143 insert Xi_c1*+Width:InterpolationMasses 79 2.8157286 insert Xi_c1*+Width:InterpolationMasses 80 2.8162429 insert Xi_c1*+Width:InterpolationMasses 81 2.8167571 insert Xi_c1*+Width:InterpolationMasses 82 2.8172714 insert Xi_c1*+Width:InterpolationMasses 83 2.8177857 insert Xi_c1*+Width:InterpolationMasses 84 2.8183 insert Xi_c1*+Width:InterpolationMasses 85 2.8188143 insert Xi_c1*+Width:InterpolationMasses 86 2.8193286 insert Xi_c1*+Width:InterpolationMasses 87 2.8198429 insert Xi_c1*+Width:InterpolationMasses 88 2.8203571 insert Xi_c1*+Width:InterpolationMasses 89 2.8208714 insert Xi_c1*+Width:InterpolationMasses 90 2.8213857 insert Xi_c1*+Width:InterpolationMasses 91 2.8219 insert Xi_c1*+Width:InterpolationMasses 92 2.8224143 insert Xi_c1*+Width:InterpolationMasses 93 2.8229286 insert Xi_c1*+Width:InterpolationMasses 94 2.8234429 insert Xi_c1*+Width:InterpolationMasses 95 2.8239571 insert Xi_c1*+Width:InterpolationMasses 96 2.8244714 insert Xi_c1*+Width:InterpolationMasses 97 2.8249857 insert Xi_c1*+Width:InterpolationMasses 98 2.8255 insert Xi_c1*+Width:InterpolationMasses 99 2.8260143 insert Xi_c1*+Width:InterpolationMasses 100 2.8265286 insert Xi_c1*+Width:InterpolationMasses 101 2.8270429 insert Xi_c1*+Width:InterpolationMasses 102 2.8275571 insert Xi_c1*+Width:InterpolationMasses 103 2.8280714 insert Xi_c1*+Width:InterpolationMasses 104 2.8285857 insert Xi_c1*+Width:InterpolationMasses 105 2.8291 insert Xi_c1*+Width:InterpolationMasses 106 2.8296143 insert Xi_c1*+Width:InterpolationMasses 107 2.8301286 insert Xi_c1*+Width:InterpolationMasses 108 2.8028714 insert Xi_c1*+Width:InterpolationMasses 109 2.8033857 insert Xi_c1*+Width:InterpolationMasses 110 2.8039 insert Xi_c1*+Width:InterpolationMasses 111 2.8044143 insert Xi_c1*+Width:InterpolationMasses 112 2.8049286 insert Xi_c1*+Width:InterpolationMasses 113 2.8054429 insert Xi_c1*+Width:InterpolationMasses 114 2.8059571 insert Xi_c1*+Width:InterpolationMasses 115 2.8064714 insert Xi_c1*+Width:InterpolationMasses 116 2.8069857 insert Xi_c1*+Width:InterpolationMasses 117 2.8075 insert Xi_c1*+Width:InterpolationMasses 118 2.8080143 insert Xi_c1*+Width:InterpolationMasses 119 2.8085286 insert Xi_c1*+Width:InterpolationMasses 120 2.8090429 insert Xi_c1*+Width:InterpolationMasses 121 2.8095571 insert Xi_c1*+Width:InterpolationMasses 122 2.8100714 insert Xi_c1*+Width:InterpolationMasses 123 2.8105857 insert Xi_c1*+Width:InterpolationMasses 124 2.8111 insert Xi_c1*+Width:InterpolationMasses 125 2.8116143 insert Xi_c1*+Width:InterpolationMasses 126 2.8121286 insert Xi_c1*+Width:InterpolationMasses 127 2.8126429 insert Xi_c1*+Width:InterpolationMasses 128 2.8131571 insert Xi_c1*+Width:InterpolationMasses 129 2.8136714 insert Xi_c1*+Width:InterpolationMasses 130 2.8141857 insert Xi_c1*+Width:InterpolationMasses 131 2.8147 insert Xi_c1*+Width:InterpolationMasses 132 2.8152143 insert Xi_c1*+Width:InterpolationMasses 133 2.8157286 insert Xi_c1*+Width:InterpolationMasses 134 2.8162429 insert Xi_c1*+Width:InterpolationMasses 135 2.8167571 insert Xi_c1*+Width:InterpolationMasses 136 2.8172714 insert Xi_c1*+Width:InterpolationMasses 137 2.8177857 insert Xi_c1*+Width:InterpolationMasses 138 2.8183 insert Xi_c1*+Width:InterpolationMasses 139 2.8188143 insert Xi_c1*+Width:InterpolationMasses 140 2.8193286 insert Xi_c1*+Width:InterpolationMasses 141 2.8198429 insert Xi_c1*+Width:InterpolationMasses 142 2.8203571 insert Xi_c1*+Width:InterpolationMasses 143 2.8208714 insert Xi_c1*+Width:InterpolationMasses 144 2.8213857 insert Xi_c1*+Width:InterpolationMasses 145 2.8219 insert Xi_c1*+Width:InterpolationMasses 146 2.8224143 insert Xi_c1*+Width:InterpolationMasses 147 2.8229286 insert Xi_c1*+Width:InterpolationMasses 148 2.8234429 insert Xi_c1*+Width:InterpolationMasses 149 2.8239571 insert Xi_c1*+Width:InterpolationMasses 150 2.8244714 insert Xi_c1*+Width:InterpolationMasses 151 2.8249857 insert Xi_c1*+Width:InterpolationMasses 152 2.8255 insert Xi_c1*+Width:InterpolationMasses 153 2.8260143 insert Xi_c1*+Width:InterpolationMasses 154 2.8265286 insert Xi_c1*+Width:InterpolationMasses 155 2.8270429 insert Xi_c1*+Width:InterpolationMasses 156 2.8275571 insert Xi_c1*+Width:InterpolationMasses 157 2.8280714 insert Xi_c1*+Width:InterpolationMasses 158 2.8285857 insert Xi_c1*+Width:InterpolationMasses 159 2.8291 insert Xi_c1*+Width:InterpolationMasses 160 2.8296143 insert Xi_c1*+Width:InterpolationMasses 161 2.8301286 insert Xi_c1*+Width:InterpolationMasses 162 2.8028714 insert Xi_c1*+Width:InterpolationMasses 163 2.8033857 insert Xi_c1*+Width:InterpolationMasses 164 2.8039 insert Xi_c1*+Width:InterpolationMasses 165 2.8044143 insert Xi_c1*+Width:InterpolationMasses 166 2.8049286 insert Xi_c1*+Width:InterpolationMasses 167 2.8054429 insert Xi_c1*+Width:InterpolationMasses 168 2.8059571 insert Xi_c1*+Width:InterpolationMasses 169 2.8064714 insert Xi_c1*+Width:InterpolationMasses 170 2.8069857 insert Xi_c1*+Width:InterpolationMasses 171 2.8075 insert Xi_c1*+Width:InterpolationMasses 172 2.8080143 insert Xi_c1*+Width:InterpolationMasses 173 2.8085286 insert Xi_c1*+Width:InterpolationMasses 174 2.8090429 insert Xi_c1*+Width:InterpolationMasses 175 2.8095571 insert Xi_c1*+Width:InterpolationMasses 176 2.8100714 insert Xi_c1*+Width:InterpolationMasses 177 2.8105857 insert Xi_c1*+Width:InterpolationMasses 178 2.8111 insert Xi_c1*+Width:InterpolationMasses 179 2.8116143 insert Xi_c1*+Width:InterpolationMasses 180 2.8121286 insert Xi_c1*+Width:InterpolationMasses 181 2.8126429 insert Xi_c1*+Width:InterpolationMasses 182 2.8131571 insert Xi_c1*+Width:InterpolationMasses 183 2.8136714 insert Xi_c1*+Width:InterpolationMasses 184 2.8141857 insert Xi_c1*+Width:InterpolationMasses 185 2.8147 insert Xi_c1*+Width:InterpolationMasses 186 2.8152143 insert Xi_c1*+Width:InterpolationMasses 187 2.8157286 insert Xi_c1*+Width:InterpolationMasses 188 2.8162429 insert Xi_c1*+Width:InterpolationMasses 189 2.8167571 insert Xi_c1*+Width:InterpolationMasses 190 2.8172714 insert Xi_c1*+Width:InterpolationMasses 191 2.8177857 insert Xi_c1*+Width:InterpolationMasses 192 2.8183 insert Xi_c1*+Width:InterpolationMasses 193 2.8188143 insert Xi_c1*+Width:InterpolationMasses 194 2.8193286 insert Xi_c1*+Width:InterpolationMasses 195 2.8198429 insert Xi_c1*+Width:InterpolationMasses 196 2.8203571 insert Xi_c1*+Width:InterpolationMasses 197 2.8208714 insert Xi_c1*+Width:InterpolationMasses 198 2.8213857 insert Xi_c1*+Width:InterpolationMasses 199 2.8219 insert Xi_c1*+Width:InterpolationMasses 200 2.8224143 insert Xi_c1*+Width:InterpolationMasses 201 2.8229286 insert Xi_c1*+Width:InterpolationMasses 202 2.8234429 insert Xi_c1*+Width:InterpolationMasses 203 2.8239571 insert Xi_c1*+Width:InterpolationMasses 204 2.8244714 insert Xi_c1*+Width:InterpolationMasses 205 2.8249857 insert Xi_c1*+Width:InterpolationMasses 206 2.8255 insert Xi_c1*+Width:InterpolationMasses 207 2.8260143 insert Xi_c1*+Width:InterpolationMasses 208 2.8265286 insert Xi_c1*+Width:InterpolationMasses 209 2.8270429 insert Xi_c1*+Width:InterpolationMasses 210 2.8275571 insert Xi_c1*+Width:InterpolationMasses 211 2.8280714 insert Xi_c1*+Width:InterpolationMasses 212 2.8285857 insert Xi_c1*+Width:InterpolationMasses 213 2.8291 insert Xi_c1*+Width:InterpolationMasses 214 2.8296143 insert Xi_c1*+Width:InterpolationMasses 215 2.8301286 insert Xi_c1*+Width:InterpolationWidths 0 0.00013024539 insert Xi_c1*+Width:InterpolationWidths 1 0.00013245732 insert Xi_c1*+Width:InterpolationWidths 2 0.00013469579 insert Xi_c1*+Width:InterpolationWidths 3 0.00013696101 insert Xi_c1*+Width:InterpolationWidths 4 0.00013925317 insert Xi_c1*+Width:InterpolationWidths 5 0.00014157247 insert Xi_c1*+Width:InterpolationWidths 6 0.00014391912 insert Xi_c1*+Width:InterpolationWidths 7 0.0001462933 insert Xi_c1*+Width:InterpolationWidths 8 0.00014869523 insert Xi_c1*+Width:InterpolationWidths 9 0.0001511251 insert Xi_c1*+Width:InterpolationWidths 10 0.00015358311 insert Xi_c1*+Width:InterpolationWidths 11 0.00015606947 insert Xi_c1*+Width:InterpolationWidths 12 0.00015858439 insert Xi_c1*+Width:InterpolationWidths 13 0.00016112805 insert Xi_c1*+Width:InterpolationWidths 14 0.00016370068 insert Xi_c1*+Width:InterpolationWidths 15 0.00016630248 insert Xi_c1*+Width:InterpolationWidths 16 0.00016893365 insert Xi_c1*+Width:InterpolationWidths 17 0.0001715944 insert Xi_c1*+Width:InterpolationWidths 18 0.00017428493 insert Xi_c1*+Width:InterpolationWidths 19 0.00017700547 insert Xi_c1*+Width:InterpolationWidths 20 0.00017975621 insert Xi_c1*+Width:InterpolationWidths 21 0.00018253736 insert Xi_c1*+Width:InterpolationWidths 22 0.00018534914 insert Xi_c1*+Width:InterpolationWidths 23 0.00018819175 insert Xi_c1*+Width:InterpolationWidths 24 0.00019106542 insert Xi_c1*+Width:InterpolationWidths 25 0.00019397034 insert Xi_c1*+Width:InterpolationWidths 26 0.00019690674 insert Xi_c1*+Width:InterpolationWidths 27 0.00019987483 insert Xi_c1*+Width:InterpolationWidths 28 0.00020287483 insert Xi_c1*+Width:InterpolationWidths 29 0.00020590694 insert Xi_c1*+Width:InterpolationWidths 30 0.00020897139 insert Xi_c1*+Width:InterpolationWidths 31 0.00021206839 insert Xi_c1*+Width:InterpolationWidths 32 0.00021519816 insert Xi_c1*+Width:InterpolationWidths 33 0.00021836092 insert Xi_c1*+Width:InterpolationWidths 34 0.00022155689 insert Xi_c1*+Width:InterpolationWidths 35 0.00022478629 insert Xi_c1*+Width:InterpolationWidths 36 0.00022804933 insert Xi_c1*+Width:InterpolationWidths 37 0.00023134624 insert Xi_c1*+Width:InterpolationWidths 38 0.00023467724 insert Xi_c1*+Width:InterpolationWidths 39 0.00023804256 insert Xi_c1*+Width:InterpolationWidths 40 0.00024144241 insert Xi_c1*+Width:InterpolationWidths 41 0.00024487702 insert Xi_c1*+Width:InterpolationWidths 42 0.00024834662 insert Xi_c1*+Width:InterpolationWidths 43 0.00025185142 insert Xi_c1*+Width:InterpolationWidths 44 0.00025539167 insert Xi_c1*+Width:InterpolationWidths 45 0.00025896757 insert Xi_c1*+Width:InterpolationWidths 46 0.00026257937 insert Xi_c1*+Width:InterpolationWidths 47 0.00026622729 insert Xi_c1*+Width:InterpolationWidths 48 0.00026991155 insert Xi_c1*+Width:InterpolationWidths 49 0.00027363239 insert Xi_c1*+Width:InterpolationWidths 50 0.00027739004 insert Xi_c1*+Width:InterpolationWidths 51 0.00028118473 insert Xi_c1*+Width:InterpolationWidths 52 0.00028501669 insert Xi_c1*+Width:InterpolationWidths 53 0.00028888615 insert Xi_c1*+Width:InterpolationWidths 54 0.00021853054 insert Xi_c1*+Width:InterpolationWidths 55 0.0002224859 insert Xi_c1*+Width:InterpolationWidths 56 0.00022649143 insert Xi_c1*+Width:InterpolationWidths 57 0.00023054752 insert Xi_c1*+Width:InterpolationWidths 58 0.00023465455 insert Xi_c1*+Width:InterpolationWidths 59 0.00023881292 insert Xi_c1*+Width:InterpolationWidths 60 0.00024302302 insert Xi_c1*+Width:InterpolationWidths 61 0.00024728523 insert Xi_c1*+Width:InterpolationWidths 62 0.00025159997 insert Xi_c1*+Width:InterpolationWidths 63 0.00025596761 insert Xi_c1*+Width:InterpolationWidths 64 0.00026038857 insert Xi_c1*+Width:InterpolationWidths 65 0.00026486324 insert Xi_c1*+Width:InterpolationWidths 66 0.00026939201 insert Xi_c1*+Width:InterpolationWidths 67 0.0002739753 insert Xi_c1*+Width:InterpolationWidths 68 0.0002786135 insert Xi_c1*+Width:InterpolationWidths 69 0.00028330701 insert Xi_c1*+Width:InterpolationWidths 70 0.00028805626 insert Xi_c1*+Width:InterpolationWidths 71 0.00029286163 insert Xi_c1*+Width:InterpolationWidths 72 0.00029772355 insert Xi_c1*+Width:InterpolationWidths 73 0.00030264241 insert Xi_c1*+Width:InterpolationWidths 74 0.00030761864 insert Xi_c1*+Width:InterpolationWidths 75 0.00031265265 insert Xi_c1*+Width:InterpolationWidths 76 0.00031774484 insert Xi_c1*+Width:InterpolationWidths 77 0.00032289564 insert Xi_c1*+Width:InterpolationWidths 78 0.00032810547 insert Xi_c1*+Width:InterpolationWidths 79 0.00033337473 insert Xi_c1*+Width:InterpolationWidths 80 0.00033870386 insert Xi_c1*+Width:InterpolationWidths 81 0.00034409327 insert Xi_c1*+Width:InterpolationWidths 82 0.00034954338 insert Xi_c1*+Width:InterpolationWidths 83 0.00035505463 insert Xi_c1*+Width:InterpolationWidths 84 0.00036062743 insert Xi_c1*+Width:InterpolationWidths 85 0.00036626221 insert Xi_c1*+Width:InterpolationWidths 86 0.0003719594 insert Xi_c1*+Width:InterpolationWidths 87 0.00037771944 insert Xi_c1*+Width:InterpolationWidths 88 0.00038354275 insert Xi_c1*+Width:InterpolationWidths 89 0.00038942976 insert Xi_c1*+Width:InterpolationWidths 90 0.00039538091 insert Xi_c1*+Width:InterpolationWidths 91 0.00040139663 insert Xi_c1*+Width:InterpolationWidths 92 0.00040747737 insert Xi_c1*+Width:InterpolationWidths 93 0.00041362356 insert Xi_c1*+Width:InterpolationWidths 94 0.00041983563 insert Xi_c1*+Width:InterpolationWidths 95 0.00042611404 insert Xi_c1*+Width:InterpolationWidths 96 0.00043245922 insert Xi_c1*+Width:InterpolationWidths 97 0.00043887161 insert Xi_c1*+Width:InterpolationWidths 98 0.00044535167 insert Xi_c1*+Width:InterpolationWidths 99 0.00045189984 insert Xi_c1*+Width:InterpolationWidths 100 0.00045851656 insert Xi_c1*+Width:InterpolationWidths 101 0.00046520229 insert Xi_c1*+Width:InterpolationWidths 102 0.00047195748 insert Xi_c1*+Width:InterpolationWidths 103 0.00047878258 insert Xi_c1*+Width:InterpolationWidths 104 0.00048567805 insert Xi_c1*+Width:InterpolationWidths 105 0.00049264433 insert Xi_c1*+Width:InterpolationWidths 106 0.00049968189 insert Xi_c1*+Width:InterpolationWidths 107 0.00050679118 insert Xi_c1*+Width:InterpolationWidths 108 0.00017447288 insert Xi_c1*+Width:InterpolationWidths 109 0.00017687195 insert Xi_c1*+Width:InterpolationWidths 110 0.0001792482 insert Xi_c1*+Width:InterpolationWidths 111 0.00018160243 insert Xi_c1*+Width:InterpolationWidths 112 0.0001839354 insert Xi_c1*+Width:InterpolationWidths 113 0.00018624784 insert Xi_c1*+Width:InterpolationWidths 114 0.00018854043 insert Xi_c1*+Width:InterpolationWidths 115 0.00019081381 insert Xi_c1*+Width:InterpolationWidths 116 0.0001930686 insert Xi_c1*+Width:InterpolationWidths 117 0.00019530538 insert Xi_c1*+Width:InterpolationWidths 118 0.0001975247 insert Xi_c1*+Width:InterpolationWidths 119 0.0001997271 insert Xi_c1*+Width:InterpolationWidths 120 0.00020191308 insert Xi_c1*+Width:InterpolationWidths 121 0.00020408311 insert Xi_c1*+Width:InterpolationWidths 122 0.00020623765 insert Xi_c1*+Width:InterpolationWidths 123 0.00020837714 insert Xi_c1*+Width:InterpolationWidths 124 0.00021050199 insert Xi_c1*+Width:InterpolationWidths 125 0.00021261216 insert Xi_c1*+Width:InterpolationWidths 126 0.00021469396 insert Xi_c1*+Width:InterpolationWidths 127 0.00021675233 insert Xi_c1*+Width:InterpolationWidths 128 0.00021879094 insert Xi_c1*+Width:InterpolationWidths 129 0.00022081168 insert Xi_c1*+Width:InterpolationWidths 130 0.00022281542 insert Xi_c1*+Width:InterpolationWidths 131 0.00022480326 insert Xi_c1*+Width:InterpolationWidths 132 0.00022677595 insert Xi_c1*+Width:InterpolationWidths 133 0.0002287341 insert Xi_c1*+Width:InterpolationWidths 134 0.00023067827 insert Xi_c1*+Width:InterpolationWidths 135 0.00023260897 insert Xi_c1*+Width:InterpolationWidths 136 0.00023452663 insert Xi_c1*+Width:InterpolationWidths 137 0.00023643169 insert Xi_c1*+Width:InterpolationWidths 138 0.00023832451 insert Xi_c1*+Width:InterpolationWidths 139 0.00024020547 insert Xi_c1*+Width:InterpolationWidths 140 0.0002420749 insert Xi_c1*+Width:InterpolationWidths 141 0.00024393312 insert Xi_c1*+Width:InterpolationWidths 142 0.00024578041 insert Xi_c1*+Width:InterpolationWidths 143 0.00024761708 insert Xi_c1*+Width:InterpolationWidths 144 0.00024944338 insert Xi_c1*+Width:InterpolationWidths 145 0.00025125957 insert Xi_c1*+Width:InterpolationWidths 146 0.00025306589 insert Xi_c1*+Width:InterpolationWidths 147 0.00025486257 insert Xi_c1*+Width:InterpolationWidths 148 0.00025664985 insert Xi_c1*+Width:InterpolationWidths 149 0.00025842792 insert Xi_c1*+Width:InterpolationWidths 150 0.000260197 insert Xi_c1*+Width:InterpolationWidths 151 0.00026195727 insert Xi_c1*+Width:InterpolationWidths 152 0.00026370894 insert Xi_c1*+Width:InterpolationWidths 153 0.00026545217 insert Xi_c1*+Width:InterpolationWidths 154 0.00026718714 insert Xi_c1*+Width:InterpolationWidths 155 0.00026891403 insert Xi_c1*+Width:InterpolationWidths 156 0.00027063298 insert Xi_c1*+Width:InterpolationWidths 157 0.00027234417 insert Xi_c1*+Width:InterpolationWidths 158 0.00027404773 insert Xi_c1*+Width:InterpolationWidths 159 0.00027574382 insert Xi_c1*+Width:InterpolationWidths 160 0.00027743258 insert Xi_c1*+Width:InterpolationWidths 161 0.00027911414 insert Xi_c1*+Width:InterpolationWidths 162 0.0003131898 insert Xi_c1*+Width:InterpolationWidths 163 0.00031848087 insert Xi_c1*+Width:InterpolationWidths 164 0.00032370804 insert Xi_c1*+Width:InterpolationWidths 165 0.00032887402 insert Xi_c1*+Width:InterpolationWidths 166 0.00033398135 insert Xi_c1*+Width:InterpolationWidths 167 0.00033903242 insert Xi_c1*+Width:InterpolationWidths 168 0.00034402943 insert Xi_c1*+Width:InterpolationWidths 169 0.00034897448 insert Xi_c1*+Width:InterpolationWidths 170 0.00035386951 insert Xi_c1*+Width:InterpolationWidths 171 0.00035871639 insert Xi_c1*+Width:InterpolationWidths 172 0.00036351683 insert Xi_c1*+Width:InterpolationWidths 173 0.00036827248 insert Xi_c1*+Width:InterpolationWidths 174 0.00037298489 insert Xi_c1*+Width:InterpolationWidths 175 0.00037765551 insert Xi_c1*+Width:InterpolationWidths 176 0.00038228573 insert Xi_c1*+Width:InterpolationWidths 177 0.00038687687 insert Xi_c1*+Width:InterpolationWidths 178 0.00039143017 insert Xi_c1*+Width:InterpolationWidths 179 0.00039594682 insert Xi_c1*+Width:InterpolationWidths 180 0.00040042793 insert Xi_c1*+Width:InterpolationWidths 181 0.00040487458 insert Xi_c1*+Width:InterpolationWidths 182 0.00040928779 insert Xi_c1*+Width:InterpolationWidths 183 0.00041366852 insert Xi_c1*+Width:InterpolationWidths 184 0.00041801772 insert Xi_c1*+Width:InterpolationWidths 185 0.00042233626 insert Xi_c1*+Width:InterpolationWidths 186 0.000426625 insert Xi_c1*+Width:InterpolationWidths 187 0.00043088318 insert Xi_c1*+Width:InterpolationWidths 188 0.00043508364 insert Xi_c1*+Width:InterpolationWidths 189 0.00043923725 insert Xi_c1*+Width:InterpolationWidths 190 0.00044335101 insert Xi_c1*+Width:InterpolationWidths 191 0.00044742863 insert Xi_c1*+Width:InterpolationWidths 192 0.00045147187 insert Xi_c1*+Width:InterpolationWidths 193 0.00045548293 insert Xi_c1*+Width:InterpolationWidths 194 0.00045946326 insert Xi_c1*+Width:InterpolationWidths 195 0.00046341412 insert Xi_c1*+Width:InterpolationWidths 196 0.00046733663 insert Xi_c1*+Width:InterpolationWidths 197 0.00047123179 insert Xi_c1*+Width:InterpolationWidths 198 0.00047510051 insert Xi_c1*+Width:InterpolationWidths 199 0.00047894363 insert Xi_c1*+Width:InterpolationWidths 200 0.00048276192 insert Xi_c1*+Width:InterpolationWidths 201 0.00048655612 insert Xi_c1*+Width:InterpolationWidths 202 0.0004903269 insert Xi_c1*+Width:InterpolationWidths 203 0.0004940749 insert Xi_c1*+Width:InterpolationWidths 204 0.00049780072 insert Xi_c1*+Width:InterpolationWidths 205 0.00050150493 insert Xi_c1*+Width:InterpolationWidths 206 0.00050518808 insert Xi_c1*+Width:InterpolationWidths 207 0.00050885068 insert Xi_c1*+Width:InterpolationWidths 208 0.00051249322 insert Xi_c1*+Width:InterpolationWidths 209 0.00051611617 insert Xi_c1*+Width:InterpolationWidths 210 0.00051971999 insert Xi_c1*+Width:InterpolationWidths 211 0.0005233051 insert Xi_c1*+Width:InterpolationWidths 212 0.00052687192 insert Xi_c1*+Width:InterpolationWidths 213 0.00053042084 insert Xi_c1*+Width:InterpolationWidths 214 0.00053395224 insert Xi_c1*+Width:InterpolationWidths 215 0.00053746649 insert Xi_c1*+Width:NumberofEntries 0 54 insert Xi_c1*+Width:NumberofEntries 1 108 insert Xi_c1*+Width:NumberofEntries 2 162 insert Xi_c1*+Width:NumberofEntries 3 216 insert Xi_c1*+Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Xi_c1*+Width:ModeLocation 0 32 insert Xi_c1*+Width:BaryonDecayers 1 /Herwig/Decays/HeavyStrong insert Xi_c1*+Width:ModeLocation 1 33 insert Xi_c1*+Width:BaryonDecayers 2 /Herwig/Decays/HeavyStrong insert Xi_c1*+Width:ModeLocation 2 36 insert Xi_c1*+Width:BaryonDecayers 3 /Herwig/Decays/HeavyStrong insert Xi_c1*+Width:ModeLocation 3 37 newdef /Herwig/Particles/Xi_c(2815)+:Width_generator Xi_c1*+Width newdef /Herwig/Particles/Xi_c(2815)bar-:Width_generator Xi_c1*+Width # create Herwig::BaryonWidthGenerator Xi_b1*0Width newdef Xi_b1*0Width:Particle /Herwig/Particles/Xi_b1*0 newdef Xi_b1*0Width:Prefactor 0.999994 newdef Xi_b1*0Width:BRNormalize 1 newdef Xi_b1*0Width:BRMinimum 0.01 newdef Xi_b1*0Width:Points 50 newdef Xi_b1*0Width:InterpolationOrder 1 insert Xi_b1*0Width:MEtype 0 2 insert Xi_b1*0Width:MEtype 1 2 insert Xi_b1*0Width:MEtype 2 2 insert Xi_b1*0Width:MEtype 3 2 insert Xi_b1*0Width:MEcode 0 0 insert Xi_b1*0Width:MEcode 1 0 insert Xi_b1*0Width:MEcode 2 0 insert Xi_b1*0Width:MEcode 3 0 insert Xi_b1*0Width:MEcoupling 0 0.990102 insert Xi_b1*0Width:MEcoupling 1 0.853155 insert Xi_b1*0Width:MEcoupling 2 0.876307 insert Xi_b1*0Width:MEcoupling 3 0.827736 insert Xi_b1*0Width:ModeOn 0 1 insert Xi_b1*0Width:ModeOn 1 1 insert Xi_b1*0Width:ModeOn 2 1 insert Xi_b1*0Width:ModeOn 3 1 insert Xi_b1*0Width:MinimumMasses 0 6.03947 insert Xi_b1*0Width:MinimumMasses 1 6.03244 insert Xi_b1*0Width:MinimumMasses 2 6.07257 insert Xi_b1*0Width:MinimumMasses 3 6.06848 insert Xi_b1*0Width:MEmass1 0 5.8999 insert Xi_b1*0Width:MEmass1 1 5.8976 insert Xi_b1*0Width:MEmass1 2 5.968 insert Xi_b1*0Width:MEmass1 3 5.9685 insert Xi_b1*0Width:MEmass2 0 0.13957 insert Xi_b1*0Width:MEmass2 1 0.134978 insert Xi_b1*0Width:MEmass2 2 0.13957 insert Xi_b1*0Width:MEmass2 3 0.134978 insert Xi_b1*0Width:DecayModes 0 Xi_b1*0->Xi_b'-,pi+; insert Xi_b1*0Width:DecayModes 1 Xi_b1*0->Xi_b'0,pi0; insert Xi_b1*0Width:DecayModes 2 Xi_b1*0->Xi_b*-,pi+; insert Xi_b1*0Width:DecayModes 3 Xi_b1*0->Xi_b*0,pi0; insert Xi_b1*0Width:InterpolationMasses 0 6.1254204 insert Xi_b1*0Width:InterpolationMasses 1 6.1259102 insert Xi_b1*0Width:InterpolationMasses 2 6.1264 insert Xi_b1*0Width:InterpolationMasses 3 6.1268898 insert Xi_b1*0Width:InterpolationMasses 4 6.1273796 insert Xi_b1*0Width:InterpolationMasses 5 6.1278694 insert Xi_b1*0Width:InterpolationMasses 6 6.1283592 insert Xi_b1*0Width:InterpolationMasses 7 6.128849 insert Xi_b1*0Width:InterpolationMasses 8 6.1293388 insert Xi_b1*0Width:InterpolationMasses 9 6.1298286 insert Xi_b1*0Width:InterpolationMasses 10 6.1303184 insert Xi_b1*0Width:InterpolationMasses 11 6.1308082 insert Xi_b1*0Width:InterpolationMasses 12 6.131298 insert Xi_b1*0Width:InterpolationMasses 13 6.1317878 insert Xi_b1*0Width:InterpolationMasses 14 6.1322776 insert Xi_b1*0Width:InterpolationMasses 15 6.1327673 insert Xi_b1*0Width:InterpolationMasses 16 6.1332571 insert Xi_b1*0Width:InterpolationMasses 17 6.1337469 insert Xi_b1*0Width:InterpolationMasses 18 6.1342367 insert Xi_b1*0Width:InterpolationMasses 19 6.1347265 insert Xi_b1*0Width:InterpolationMasses 20 6.1352163 insert Xi_b1*0Width:InterpolationMasses 21 6.1357061 insert Xi_b1*0Width:InterpolationMasses 22 6.1361959 insert Xi_b1*0Width:InterpolationMasses 23 6.1366857 insert Xi_b1*0Width:InterpolationMasses 24 6.1371755 insert Xi_b1*0Width:InterpolationMasses 25 6.1376653 insert Xi_b1*0Width:InterpolationMasses 26 6.1381551 insert Xi_b1*0Width:InterpolationMasses 27 6.1386449 insert Xi_b1*0Width:InterpolationMasses 28 6.1391347 insert Xi_b1*0Width:InterpolationMasses 29 6.1396245 insert Xi_b1*0Width:InterpolationMasses 30 6.1401143 insert Xi_b1*0Width:InterpolationMasses 31 6.1406041 insert Xi_b1*0Width:InterpolationMasses 32 6.1410939 insert Xi_b1*0Width:InterpolationMasses 33 6.1415837 insert Xi_b1*0Width:InterpolationMasses 34 6.1420735 insert Xi_b1*0Width:InterpolationMasses 35 6.1425633 insert Xi_b1*0Width:InterpolationMasses 36 6.1430531 insert Xi_b1*0Width:InterpolationMasses 37 6.1435429 insert Xi_b1*0Width:InterpolationMasses 38 6.1440327 insert Xi_b1*0Width:InterpolationMasses 39 6.1445224 insert Xi_b1*0Width:InterpolationMasses 40 6.1450122 insert Xi_b1*0Width:InterpolationMasses 41 6.145502 insert Xi_b1*0Width:InterpolationMasses 42 6.1459918 insert Xi_b1*0Width:InterpolationMasses 43 6.1464816 insert Xi_b1*0Width:InterpolationMasses 44 6.1469714 insert Xi_b1*0Width:InterpolationMasses 45 6.1474612 insert Xi_b1*0Width:InterpolationMasses 46 6.147951 insert Xi_b1*0Width:InterpolationMasses 47 6.1484408 insert Xi_b1*0Width:InterpolationMasses 48 6.1489306 insert Xi_b1*0Width:InterpolationMasses 49 6.1494204 insert Xi_b1*0Width:InterpolationMasses 50 6.1499102 insert Xi_b1*0Width:InterpolationMasses 51 6.1504 insert Xi_b1*0Width:InterpolationMasses 52 6.1508898 insert Xi_b1*0Width:InterpolationMasses 53 6.1513796 insert Xi_b1*0Width:InterpolationMasses 54 6.1254204 insert Xi_b1*0Width:InterpolationMasses 55 6.1259102 insert Xi_b1*0Width:InterpolationMasses 56 6.1264 insert Xi_b1*0Width:InterpolationMasses 57 6.1268898 insert Xi_b1*0Width:InterpolationMasses 58 6.1273796 insert Xi_b1*0Width:InterpolationMasses 59 6.1278694 insert Xi_b1*0Width:InterpolationMasses 60 6.1283592 insert Xi_b1*0Width:InterpolationMasses 61 6.128849 insert Xi_b1*0Width:InterpolationMasses 62 6.1293388 insert Xi_b1*0Width:InterpolationMasses 63 6.1298286 insert Xi_b1*0Width:InterpolationMasses 64 6.1303184 insert Xi_b1*0Width:InterpolationMasses 65 6.1308082 insert Xi_b1*0Width:InterpolationMasses 66 6.131298 insert Xi_b1*0Width:InterpolationMasses 67 6.1317878 insert Xi_b1*0Width:InterpolationMasses 68 6.1322776 insert Xi_b1*0Width:InterpolationMasses 69 6.1327673 insert Xi_b1*0Width:InterpolationMasses 70 6.1332571 insert Xi_b1*0Width:InterpolationMasses 71 6.1337469 insert Xi_b1*0Width:InterpolationMasses 72 6.1342367 insert Xi_b1*0Width:InterpolationMasses 73 6.1347265 insert Xi_b1*0Width:InterpolationMasses 74 6.1352163 insert Xi_b1*0Width:InterpolationMasses 75 6.1357061 insert Xi_b1*0Width:InterpolationMasses 76 6.1361959 insert Xi_b1*0Width:InterpolationMasses 77 6.1366857 insert Xi_b1*0Width:InterpolationMasses 78 6.1371755 insert Xi_b1*0Width:InterpolationMasses 79 6.1376653 insert Xi_b1*0Width:InterpolationMasses 80 6.1381551 insert Xi_b1*0Width:InterpolationMasses 81 6.1386449 insert Xi_b1*0Width:InterpolationMasses 82 6.1391347 insert Xi_b1*0Width:InterpolationMasses 83 6.1396245 insert Xi_b1*0Width:InterpolationMasses 84 6.1401143 insert Xi_b1*0Width:InterpolationMasses 85 6.1406041 insert Xi_b1*0Width:InterpolationMasses 86 6.1410939 insert Xi_b1*0Width:InterpolationMasses 87 6.1415837 insert Xi_b1*0Width:InterpolationMasses 88 6.1420735 insert Xi_b1*0Width:InterpolationMasses 89 6.1425633 insert Xi_b1*0Width:InterpolationMasses 90 6.1430531 insert Xi_b1*0Width:InterpolationMasses 91 6.1435429 insert Xi_b1*0Width:InterpolationMasses 92 6.1440327 insert Xi_b1*0Width:InterpolationMasses 93 6.1445224 insert Xi_b1*0Width:InterpolationMasses 94 6.1450122 insert Xi_b1*0Width:InterpolationMasses 95 6.145502 insert Xi_b1*0Width:InterpolationMasses 96 6.1459918 insert Xi_b1*0Width:InterpolationMasses 97 6.1464816 insert Xi_b1*0Width:InterpolationMasses 98 6.1469714 insert Xi_b1*0Width:InterpolationMasses 99 6.1474612 insert Xi_b1*0Width:InterpolationMasses 100 6.147951 insert Xi_b1*0Width:InterpolationMasses 101 6.1484408 insert Xi_b1*0Width:InterpolationMasses 102 6.1489306 insert Xi_b1*0Width:InterpolationMasses 103 6.1494204 insert Xi_b1*0Width:InterpolationMasses 104 6.1499102 insert Xi_b1*0Width:InterpolationMasses 105 6.1504 insert Xi_b1*0Width:InterpolationMasses 106 6.1508898 insert Xi_b1*0Width:InterpolationMasses 107 6.1513796 insert Xi_b1*0Width:InterpolationMasses 108 6.1254204 insert Xi_b1*0Width:InterpolationMasses 109 6.1259102 insert Xi_b1*0Width:InterpolationMasses 110 6.1264 insert Xi_b1*0Width:InterpolationMasses 111 6.1268898 insert Xi_b1*0Width:InterpolationMasses 112 6.1273796 insert Xi_b1*0Width:InterpolationMasses 113 6.1278694 insert Xi_b1*0Width:InterpolationMasses 114 6.1283592 insert Xi_b1*0Width:InterpolationMasses 115 6.128849 insert Xi_b1*0Width:InterpolationMasses 116 6.1293388 insert Xi_b1*0Width:InterpolationMasses 117 6.1298286 insert Xi_b1*0Width:InterpolationMasses 118 6.1303184 insert Xi_b1*0Width:InterpolationMasses 119 6.1308082 insert Xi_b1*0Width:InterpolationMasses 120 6.131298 insert Xi_b1*0Width:InterpolationMasses 121 6.1317878 insert Xi_b1*0Width:InterpolationMasses 122 6.1322776 insert Xi_b1*0Width:InterpolationMasses 123 6.1327673 insert Xi_b1*0Width:InterpolationMasses 124 6.1332571 insert Xi_b1*0Width:InterpolationMasses 125 6.1337469 insert Xi_b1*0Width:InterpolationMasses 126 6.1342367 insert Xi_b1*0Width:InterpolationMasses 127 6.1347265 insert Xi_b1*0Width:InterpolationMasses 128 6.1352163 insert Xi_b1*0Width:InterpolationMasses 129 6.1357061 insert Xi_b1*0Width:InterpolationMasses 130 6.1361959 insert Xi_b1*0Width:InterpolationMasses 131 6.1366857 insert Xi_b1*0Width:InterpolationMasses 132 6.1371755 insert Xi_b1*0Width:InterpolationMasses 133 6.1376653 insert Xi_b1*0Width:InterpolationMasses 134 6.1381551 insert Xi_b1*0Width:InterpolationMasses 135 6.1386449 insert Xi_b1*0Width:InterpolationMasses 136 6.1391347 insert Xi_b1*0Width:InterpolationMasses 137 6.1396245 insert Xi_b1*0Width:InterpolationMasses 138 6.1401143 insert Xi_b1*0Width:InterpolationMasses 139 6.1406041 insert Xi_b1*0Width:InterpolationMasses 140 6.1410939 insert Xi_b1*0Width:InterpolationMasses 141 6.1415837 insert Xi_b1*0Width:InterpolationMasses 142 6.1420735 insert Xi_b1*0Width:InterpolationMasses 143 6.1425633 insert Xi_b1*0Width:InterpolationMasses 144 6.1430531 insert Xi_b1*0Width:InterpolationMasses 145 6.1435429 insert Xi_b1*0Width:InterpolationMasses 146 6.1440327 insert Xi_b1*0Width:InterpolationMasses 147 6.1445224 insert Xi_b1*0Width:InterpolationMasses 148 6.1450122 insert Xi_b1*0Width:InterpolationMasses 149 6.145502 insert Xi_b1*0Width:InterpolationMasses 150 6.1459918 insert Xi_b1*0Width:InterpolationMasses 151 6.1464816 insert Xi_b1*0Width:InterpolationMasses 152 6.1469714 insert Xi_b1*0Width:InterpolationMasses 153 6.1474612 insert Xi_b1*0Width:InterpolationMasses 154 6.147951 insert Xi_b1*0Width:InterpolationMasses 155 6.1484408 insert Xi_b1*0Width:InterpolationMasses 156 6.1489306 insert Xi_b1*0Width:InterpolationMasses 157 6.1494204 insert Xi_b1*0Width:InterpolationMasses 158 6.1499102 insert Xi_b1*0Width:InterpolationMasses 159 6.1504 insert Xi_b1*0Width:InterpolationMasses 160 6.1508898 insert Xi_b1*0Width:InterpolationMasses 161 6.1513796 insert Xi_b1*0Width:InterpolationMasses 162 6.1254204 insert Xi_b1*0Width:InterpolationMasses 163 6.1259102 insert Xi_b1*0Width:InterpolationMasses 164 6.1264 insert Xi_b1*0Width:InterpolationMasses 165 6.1268898 insert Xi_b1*0Width:InterpolationMasses 166 6.1273796 insert Xi_b1*0Width:InterpolationMasses 167 6.1278694 insert Xi_b1*0Width:InterpolationMasses 168 6.1283592 insert Xi_b1*0Width:InterpolationMasses 169 6.128849 insert Xi_b1*0Width:InterpolationMasses 170 6.1293388 insert Xi_b1*0Width:InterpolationMasses 171 6.1298286 insert Xi_b1*0Width:InterpolationMasses 172 6.1303184 insert Xi_b1*0Width:InterpolationMasses 173 6.1308082 insert Xi_b1*0Width:InterpolationMasses 174 6.131298 insert Xi_b1*0Width:InterpolationMasses 175 6.1317878 insert Xi_b1*0Width:InterpolationMasses 176 6.1322776 insert Xi_b1*0Width:InterpolationMasses 177 6.1327673 insert Xi_b1*0Width:InterpolationMasses 178 6.1332571 insert Xi_b1*0Width:InterpolationMasses 179 6.1337469 insert Xi_b1*0Width:InterpolationMasses 180 6.1342367 insert Xi_b1*0Width:InterpolationMasses 181 6.1347265 insert Xi_b1*0Width:InterpolationMasses 182 6.1352163 insert Xi_b1*0Width:InterpolationMasses 183 6.1357061 insert Xi_b1*0Width:InterpolationMasses 184 6.1361959 insert Xi_b1*0Width:InterpolationMasses 185 6.1366857 insert Xi_b1*0Width:InterpolationMasses 186 6.1371755 insert Xi_b1*0Width:InterpolationMasses 187 6.1376653 insert Xi_b1*0Width:InterpolationMasses 188 6.1381551 insert Xi_b1*0Width:InterpolationMasses 189 6.1386449 insert Xi_b1*0Width:InterpolationMasses 190 6.1391347 insert Xi_b1*0Width:InterpolationMasses 191 6.1396245 insert Xi_b1*0Width:InterpolationMasses 192 6.1401143 insert Xi_b1*0Width:InterpolationMasses 193 6.1406041 insert Xi_b1*0Width:InterpolationMasses 194 6.1410939 insert Xi_b1*0Width:InterpolationMasses 195 6.1415837 insert Xi_b1*0Width:InterpolationMasses 196 6.1420735 insert Xi_b1*0Width:InterpolationMasses 197 6.1425633 insert Xi_b1*0Width:InterpolationMasses 198 6.1430531 insert Xi_b1*0Width:InterpolationMasses 199 6.1435429 insert Xi_b1*0Width:InterpolationMasses 200 6.1440327 insert Xi_b1*0Width:InterpolationMasses 201 6.1445224 insert Xi_b1*0Width:InterpolationMasses 202 6.1450122 insert Xi_b1*0Width:InterpolationMasses 203 6.145502 insert Xi_b1*0Width:InterpolationMasses 204 6.1459918 insert Xi_b1*0Width:InterpolationMasses 205 6.1464816 insert Xi_b1*0Width:InterpolationMasses 206 6.1469714 insert Xi_b1*0Width:InterpolationMasses 207 6.1474612 insert Xi_b1*0Width:InterpolationMasses 208 6.147951 insert Xi_b1*0Width:InterpolationMasses 209 6.1484408 insert Xi_b1*0Width:InterpolationMasses 210 6.1489306 insert Xi_b1*0Width:InterpolationMasses 211 6.1494204 insert Xi_b1*0Width:InterpolationMasses 212 6.1499102 insert Xi_b1*0Width:InterpolationMasses 213 6.1504 insert Xi_b1*0Width:InterpolationMasses 214 6.1508898 insert Xi_b1*0Width:InterpolationMasses 215 6.1513796 insert Xi_b1*0Width:InterpolationWidths 0 0.00026210204 insert Xi_b1*0Width:InterpolationWidths 1 0.00026667137 insert Xi_b1*0Width:InterpolationWidths 2 0.00027129738 insert Xi_b1*0Width:InterpolationWidths 3 0.0002759805 insert Xi_b1*0Width:InterpolationWidths 4 0.00028072118 insert Xi_b1*0Width:InterpolationWidths 5 0.00028551988 insert Xi_b1*0Width:InterpolationWidths 6 0.00029037704 insert Xi_b1*0Width:InterpolationWidths 7 0.00029529312 insert Xi_b1*0Width:InterpolationWidths 8 0.00030026856 insert Xi_b1*0Width:InterpolationWidths 9 0.00030530383 insert Xi_b1*0Width:InterpolationWidths 10 0.00031039938 insert Xi_b1*0Width:InterpolationWidths 11 0.00031555567 insert Xi_b1*0Width:InterpolationWidths 12 0.00032077316 insert Xi_b1*0Width:InterpolationWidths 13 0.00032605232 insert Xi_b1*0Width:InterpolationWidths 14 0.00033139361 insert Xi_b1*0Width:InterpolationWidths 15 0.0003367975 insert Xi_b1*0Width:InterpolationWidths 16 0.00034226445 insert Xi_b1*0Width:InterpolationWidths 17 0.00034779495 insert Xi_b1*0Width:InterpolationWidths 18 0.00035338945 insert Xi_b1*0Width:InterpolationWidths 19 0.00035904843 insert Xi_b1*0Width:InterpolationWidths 20 0.00036477237 insert Xi_b1*0Width:InterpolationWidths 21 0.00037056175 insert Xi_b1*0Width:InterpolationWidths 22 0.00037641705 insert Xi_b1*0Width:InterpolationWidths 23 0.00038233875 insert Xi_b1*0Width:InterpolationWidths 24 0.00038832733 insert Xi_b1*0Width:InterpolationWidths 25 0.00039438327 insert Xi_b1*0Width:InterpolationWidths 26 0.00040050708 insert Xi_b1*0Width:InterpolationWidths 27 0.00040669923 insert Xi_b1*0Width:InterpolationWidths 28 0.00041296021 insert Xi_b1*0Width:InterpolationWidths 29 0.00041929053 insert Xi_b1*0Width:InterpolationWidths 30 0.00042569066 insert Xi_b1*0Width:InterpolationWidths 31 0.00043216112 insert Xi_b1*0Width:InterpolationWidths 32 0.0004387024 insert Xi_b1*0Width:InterpolationWidths 33 0.000445315 insert Xi_b1*0Width:InterpolationWidths 34 0.00045199942 insert Xi_b1*0Width:InterpolationWidths 35 0.00045875617 insert Xi_b1*0Width:InterpolationWidths 36 0.00046558575 insert Xi_b1*0Width:InterpolationWidths 37 0.00047248868 insert Xi_b1*0Width:InterpolationWidths 38 0.00047946546 insert Xi_b1*0Width:InterpolationWidths 39 0.0004865166 insert Xi_b1*0Width:InterpolationWidths 40 0.00049364262 insert Xi_b1*0Width:InterpolationWidths 41 0.00050084403 insert Xi_b1*0Width:InterpolationWidths 42 0.00050812136 insert Xi_b1*0Width:InterpolationWidths 43 0.00051547511 insert Xi_b1*0Width:InterpolationWidths 44 0.00052290582 insert Xi_b1*0Width:InterpolationWidths 45 0.00053041401 insert Xi_b1*0Width:InterpolationWidths 46 0.0005380002 insert Xi_b1*0Width:InterpolationWidths 47 0.00054566492 insert Xi_b1*0Width:InterpolationWidths 48 0.0005534087 insert Xi_b1*0Width:InterpolationWidths 49 0.00056123207 insert Xi_b1*0Width:InterpolationWidths 50 0.00056913557 insert Xi_b1*0Width:InterpolationWidths 51 0.00057711972 insert Xi_b1*0Width:InterpolationWidths 52 0.00058518507 insert Xi_b1*0Width:InterpolationWidths 53 0.00059333216 insert Xi_b1*0Width:InterpolationWidths 54 0.00015623767 insert Xi_b1*0Width:InterpolationWidths 55 0.00015879767 insert Xi_b1*0Width:InterpolationWidths 56 0.00016138778 insert Xi_b1*0Width:InterpolationWidths 57 0.00016400822 insert Xi_b1*0Width:InterpolationWidths 58 0.00016665923 insert Xi_b1*0Width:InterpolationWidths 59 0.00016934103 insert Xi_b1*0Width:InterpolationWidths 60 0.00017205385 insert Xi_b1*0Width:InterpolationWidths 61 0.00017479792 insert Xi_b1*0Width:InterpolationWidths 62 0.00017757348 insert Xi_b1*0Width:InterpolationWidths 63 0.00018038075 insert Xi_b1*0Width:InterpolationWidths 64 0.00018321998 insert Xi_b1*0Width:InterpolationWidths 65 0.0001860914 insert Xi_b1*0Width:InterpolationWidths 66 0.00018899524 insert Xi_b1*0Width:InterpolationWidths 67 0.00019193174 insert Xi_b1*0Width:InterpolationWidths 68 0.00019490114 insert Xi_b1*0Width:InterpolationWidths 69 0.00019790367 insert Xi_b1*0Width:InterpolationWidths 70 0.00020093958 insert Xi_b1*0Width:InterpolationWidths 71 0.00020400911 insert Xi_b1*0Width:InterpolationWidths 72 0.00020711249 insert Xi_b1*0Width:InterpolationWidths 73 0.00021024998 insert Xi_b1*0Width:InterpolationWidths 74 0.0002134218 insert Xi_b1*0Width:InterpolationWidths 75 0.00021662822 insert Xi_b1*0Width:InterpolationWidths 76 0.00021986947 insert Xi_b1*0Width:InterpolationWidths 77 0.0002231458 insert Xi_b1*0Width:InterpolationWidths 78 0.00022645746 insert Xi_b1*0Width:InterpolationWidths 79 0.00022980469 insert Xi_b1*0Width:InterpolationWidths 80 0.00023318774 insert Xi_b1*0Width:InterpolationWidths 81 0.00023660687 insert Xi_b1*0Width:InterpolationWidths 82 0.00024006232 insert Xi_b1*0Width:InterpolationWidths 83 0.00024355435 insert Xi_b1*0Width:InterpolationWidths 84 0.00024708321 insert Xi_b1*0Width:InterpolationWidths 85 0.00025064915 insert Xi_b1*0Width:InterpolationWidths 86 0.00025425243 insert Xi_b1*0Width:InterpolationWidths 87 0.0002578933 insert Xi_b1*0Width:InterpolationWidths 88 0.00026157203 insert Xi_b1*0Width:InterpolationWidths 89 0.00026528886 insert Xi_b1*0Width:InterpolationWidths 90 0.00026904405 insert Xi_b1*0Width:InterpolationWidths 91 0.00027283787 insert Xi_b1*0Width:InterpolationWidths 92 0.00027667058 insert Xi_b1*0Width:InterpolationWidths 93 0.00028054244 insert Xi_b1*0Width:InterpolationWidths 94 0.00028445371 insert Xi_b1*0Width:InterpolationWidths 95 0.00028840464 insert Xi_b1*0Width:InterpolationWidths 96 0.00029239552 insert Xi_b1*0Width:InterpolationWidths 97 0.0002964266 insert Xi_b1*0Width:InterpolationWidths 98 0.00030049815 insert Xi_b1*0Width:InterpolationWidths 99 0.00030461044 insert Xi_b1*0Width:InterpolationWidths 100 0.00030876373 insert Xi_b1*0Width:InterpolationWidths 101 0.00031295829 insert Xi_b1*0Width:InterpolationWidths 102 0.0003171944 insert Xi_b1*0Width:InterpolationWidths 103 0.00032147233 insert Xi_b1*0Width:InterpolationWidths 104 0.00032579234 insert Xi_b1*0Width:InterpolationWidths 105 0.00033015471 insert Xi_b1*0Width:InterpolationWidths 106 0.00033455972 insert Xi_b1*0Width:InterpolationWidths 107 0.00033900763 insert Xi_b1*0Width:InterpolationWidths 108 0.00033124814 insert Xi_b1*0Width:InterpolationWidths 109 0.0003364954 insert Xi_b1*0Width:InterpolationWidths 110 0.0003416871 insert Xi_b1*0Width:InterpolationWidths 111 0.00034682544 insert Xi_b1*0Width:InterpolationWidths 112 0.0003519125 insert Xi_b1*0Width:InterpolationWidths 113 0.00035695021 insert Xi_b1*0Width:InterpolationWidths 114 0.0003619404 insert Xi_b1*0Width:InterpolationWidths 115 0.00036688478 insert Xi_b1*0Width:InterpolationWidths 116 0.00037178499 insert Xi_b1*0Width:InterpolationWidths 117 0.00037664256 insert Xi_b1*0Width:InterpolationWidths 118 0.00038145894 insert Xi_b1*0Width:InterpolationWidths 119 0.00038623551 insert Xi_b1*0Width:InterpolationWidths 120 0.00039097357 insert Xi_b1*0Width:InterpolationWidths 121 0.00039567437 insert Xi_b1*0Width:InterpolationWidths 122 0.00040033908 insert Xi_b1*0Width:InterpolationWidths 123 0.00040496883 insert Xi_b1*0Width:InterpolationWidths 124 0.00040956467 insert Xi_b1*0Width:InterpolationWidths 125 0.00041412763 insert Xi_b1*0Width:InterpolationWidths 126 0.00041865868 insert Xi_b1*0Width:InterpolationWidths 127 0.00042315873 insert Xi_b1*0Width:InterpolationWidths 128 0.00042762868 insert Xi_b1*0Width:InterpolationWidths 129 0.00043206936 insert Xi_b1*0Width:InterpolationWidths 130 0.00043648159 insert Xi_b1*0Width:InterpolationWidths 131 0.00044086614 insert Xi_b1*0Width:InterpolationWidths 132 0.00044522376 insert Xi_b1*0Width:InterpolationWidths 133 0.00044955514 insert Xi_b1*0Width:InterpolationWidths 134 0.00045386098 insert Xi_b1*0Width:InterpolationWidths 135 0.00045814193 insert Xi_b1*0Width:InterpolationWidths 136 0.00046239861 insert Xi_b1*0Width:InterpolationWidths 137 0.00046663164 insert Xi_b1*0Width:InterpolationWidths 138 0.00047084159 insert Xi_b1*0Width:InterpolationWidths 139 0.00047502902 insert Xi_b1*0Width:InterpolationWidths 140 0.00047919447 insert Xi_b1*0Width:InterpolationWidths 141 0.00048333846 insert Xi_b1*0Width:InterpolationWidths 142 0.00048746148 insert Xi_b1*0Width:InterpolationWidths 143 0.00049156403 insert Xi_b1*0Width:InterpolationWidths 144 0.00049562039 insert Xi_b1*0Width:InterpolationWidths 145 0.00049963735 insert Xi_b1*0Width:InterpolationWidths 146 0.00050362212 insert Xi_b1*0Width:InterpolationWidths 147 0.0005075779 insert Xi_b1*0Width:InterpolationWidths 148 0.00051150675 insert Xi_b1*0Width:InterpolationWidths 149 0.00051541038 insert Xi_b1*0Width:InterpolationWidths 150 0.00051928955 insert Xi_b1*0Width:InterpolationWidths 151 0.00052314557 insert Xi_b1*0Width:InterpolationWidths 152 0.00052697933 insert Xi_b1*0Width:InterpolationWidths 153 0.00053079159 insert Xi_b1*0Width:InterpolationWidths 154 0.00053458306 insert Xi_b1*0Width:InterpolationWidths 155 0.00053835439 insert Xi_b1*0Width:InterpolationWidths 156 0.00054210616 insert Xi_b1*0Width:InterpolationWidths 157 0.00054583894 insert Xi_b1*0Width:InterpolationWidths 158 0.00054955323 insert Xi_b1*0Width:InterpolationWidths 159 0.00055324951 insert Xi_b1*0Width:InterpolationWidths 160 0.00055692825 insert Xi_b1*0Width:InterpolationWidths 161 0.00056058986 insert Xi_b1*0Width:InterpolationWidths 162 0.00018401269 insert Xi_b1*0Width:InterpolationWidths 163 0.00018640584 insert Xi_b1*0Width:InterpolationWidths 164 0.00018877907 insert Xi_b1*0Width:InterpolationWidths 165 0.00019113303 insert Xi_b1*0Width:InterpolationWidths 166 0.00019346834 insert Xi_b1*0Width:InterpolationWidths 167 0.00019578562 insert Xi_b1*0Width:InterpolationWidths 168 0.00019808542 insert Xi_b1*0Width:InterpolationWidths 169 0.0002003683 insert Xi_b1*0Width:InterpolationWidths 170 0.00020263475 insert Xi_b1*0Width:InterpolationWidths 171 0.00020488527 insert Xi_b1*0Width:InterpolationWidths 172 0.00020712034 insert Xi_b1*0Width:InterpolationWidths 173 0.00020934039 insert Xi_b1*0Width:InterpolationWidths 174 0.00021154586 insert Xi_b1*0Width:InterpolationWidths 175 0.00021373715 insert Xi_b1*0Width:InterpolationWidths 176 0.00021591465 insert Xi_b1*0Width:InterpolationWidths 177 0.00021807873 insert Xi_b1*0Width:InterpolationWidths 178 0.00022022977 insert Xi_b1*0Width:InterpolationWidths 179 0.00022236809 insert Xi_b1*0Width:InterpolationWidths 180 0.00022449402 insert Xi_b1*0Width:InterpolationWidths 181 0.0002266079 insert Xi_b1*0Width:InterpolationWidths 182 0.00022871001 insert Xi_b1*0Width:InterpolationWidths 183 0.00023080065 insert Xi_b1*0Width:InterpolationWidths 184 0.00023288011 insert Xi_b1*0Width:InterpolationWidths 185 0.00023494865 insert Xi_b1*0Width:InterpolationWidths 186 0.00023700653 insert Xi_b1*0Width:InterpolationWidths 187 0.00023905401 insert Xi_b1*0Width:InterpolationWidths 188 0.00024109132 insert Xi_b1*0Width:InterpolationWidths 189 0.00024311566 insert Xi_b1*0Width:InterpolationWidths 190 0.000245116 insert Xi_b1*0Width:InterpolationWidths 191 0.00024709864 insert Xi_b1*0Width:InterpolationWidths 192 0.00024906607 insert Xi_b1*0Width:InterpolationWidths 193 0.00025101961 insert Xi_b1*0Width:InterpolationWidths 194 0.00025296018 insert Xi_b1*0Width:InterpolationWidths 195 0.00025488856 insert Xi_b1*0Width:InterpolationWidths 196 0.00025680511 insert Xi_b1*0Width:InterpolationWidths 197 0.00025871043 insert Xi_b1*0Width:InterpolationWidths 198 0.00026060495 insert Xi_b1*0Width:InterpolationWidths 199 0.00026248903 insert Xi_b1*0Width:InterpolationWidths 200 0.00026436302 insert Xi_b1*0Width:InterpolationWidths 201 0.00026622721 insert Xi_b1*0Width:InterpolationWidths 202 0.0002680819 insert Xi_b1*0Width:InterpolationWidths 203 0.00026992735 insert Xi_b1*0Width:InterpolationWidths 204 0.00027176381 insert Xi_b1*0Width:InterpolationWidths 205 0.00027359151 insert Xi_b1*0Width:InterpolationWidths 206 0.00027541067 insert Xi_b1*0Width:InterpolationWidths 207 0.00027722151 insert Xi_b1*0Width:InterpolationWidths 208 0.00027902421 insert Xi_b1*0Width:InterpolationWidths 209 0.00028081897 insert Xi_b1*0Width:InterpolationWidths 210 0.00028260596 insert Xi_b1*0Width:InterpolationWidths 211 0.00028438536 insert Xi_b1*0Width:InterpolationWidths 212 0.00028615734 insert Xi_b1*0Width:InterpolationWidths 213 0.00028792204 insert Xi_b1*0Width:InterpolationWidths 214 0.00028967962 insert Xi_b1*0Width:InterpolationWidths 215 0.00029143023 insert Xi_b1*0Width:NumberofEntries 0 54 insert Xi_b1*0Width:NumberofEntries 1 108 insert Xi_b1*0Width:NumberofEntries 2 162 insert Xi_b1*0Width:NumberofEntries 3 216 insert Xi_b1*0Width:BaryonDecayers 0 /Herwig/Decays/HeavyStrong insert Xi_b1*0Width:ModeLocation 0 49 insert Xi_b1*0Width:BaryonDecayers 1 /Herwig/Decays/HeavyStrong insert Xi_b1*0Width:ModeLocation 1 48 insert Xi_b1*0Width:BaryonDecayers 2 /Herwig/Decays/HeavyStrong insert Xi_b1*0Width:ModeLocation 2 53 insert Xi_b1*0Width:BaryonDecayers 3 /Herwig/Decays/HeavyStrong insert Xi_b1*0Width:ModeLocation 3 52 newdef /Herwig/Particles/Xi_b1*0:Width_generator Xi_b1*0Width newdef /Herwig/Particles/Xi_b1*bar0:Width_generator Xi_b1*0Width # create Herwig::BaryonWidthGenerator Lambda(1690)0Width newdef Lambda(1690)0Width:Particle /Herwig/Particles/Lambda(1690)0 newdef Lambda(1690)0Width:Prefactor 1 newdef Lambda(1690)0Width:BRNormalize 1 newdef Lambda(1690)0Width:BRMinimum 0.01 newdef Lambda(1690)0Width:Points 50 newdef Lambda(1690)0Width:InterpolationOrder 1 insert Lambda(1690)0Width:MEtype 0 0 insert Lambda(1690)0Width:MEtype 1 0 insert Lambda(1690)0Width:MEtype 2 0 insert Lambda(1690)0Width:MEtype 3 1 insert Lambda(1690)0Width:MEtype 4 0 insert Lambda(1690)0Width:MEtype 5 1 insert Lambda(1690)0Width:MEtype 6 0 insert Lambda(1690)0Width:MEtype 7 1 insert Lambda(1690)0Width:MEtype 8 1 insert Lambda(1690)0Width:MEtype 9 1 insert Lambda(1690)0Width:MEcode 0 0 insert Lambda(1690)0Width:MEcode 1 0 insert Lambda(1690)0Width:MEcode 2 0 insert Lambda(1690)0Width:MEcode 3 105 insert Lambda(1690)0Width:MEcode 4 0 insert Lambda(1690)0Width:MEcode 5 105 insert Lambda(1690)0Width:MEcode 6 0 insert Lambda(1690)0Width:MEcode 7 105 insert Lambda(1690)0Width:MEcode 8 105 insert Lambda(1690)0Width:MEcode 9 105 insert Lambda(1690)0Width:MEcoupling 0 0.166667 insert Lambda(1690)0Width:MEcoupling 1 0.083333 insert Lambda(1690)0Width:MEcoupling 2 0.066667 insert Lambda(1690)0Width:MEcoupling 3 0.20738 insert Lambda(1690)0Width:MEcoupling 4 0.066667 insert Lambda(1690)0Width:MEcoupling 5 0.20338 insert Lambda(1690)0Width:MEcoupling 6 0.066667 insert Lambda(1690)0Width:MEcoupling 7 0.204092 insert Lambda(1690)0Width:MEcoupling 8 2.35046 insert Lambda(1690)0Width:MEcoupling 9 2.31938 insert Lambda(1690)0Width:ModeOn 0 1 insert Lambda(1690)0Width:ModeOn 1 1 insert Lambda(1690)0Width:ModeOn 2 1 insert Lambda(1690)0Width:ModeOn 3 1 insert Lambda(1690)0Width:ModeOn 4 1 insert Lambda(1690)0Width:ModeOn 5 1 insert Lambda(1690)0Width:ModeOn 6 1 insert Lambda(1690)0Width:ModeOn 7 1 insert Lambda(1690)0Width:ModeOn 8 1 insert Lambda(1690)0Width:ModeOn 9 1 insert Lambda(1690)0Width:MinimumMasses 0 1.39482 insert Lambda(1690)0Width:MinimumMasses 1 1.38564 insert Lambda(1690)0Width:MinimumMasses 2 1.472 insert Lambda(1690)0Width:MinimumMasses 3 1.33702 insert Lambda(1690)0Width:MinimumMasses 4 1.46392 insert Lambda(1690)0Width:MinimumMasses 5 1.32894 insert Lambda(1690)0Width:MinimumMasses 6 1.47178 insert Lambda(1690)0Width:MinimumMasses 7 1.32762 insert Lambda(1690)0Width:MinimumMasses 8 1.43721 insert Lambda(1690)0Width:MinimumMasses 9 1.43195 insert Lambda(1690)0Width:MEmass1 0 0 insert Lambda(1690)0Width:MEmass1 1 0 insert Lambda(1690)0Width:MEmass1 2 0 insert Lambda(1690)0Width:MEmass1 3 1.19745 insert Lambda(1690)0Width:MEmass1 4 0 insert Lambda(1690)0Width:MEmass1 5 1.18937 insert Lambda(1690)0Width:MEmass1 6 0 insert Lambda(1690)0Width:MEmass1 7 1.19264 insert Lambda(1690)0Width:MEmass1 8 0.939565 insert Lambda(1690)0Width:MEmass1 9 0.938272 insert Lambda(1690)0Width:MEmass2 0 0 insert Lambda(1690)0Width:MEmass2 1 0 insert Lambda(1690)0Width:MEmass2 2 0 insert Lambda(1690)0Width:MEmass2 3 0.13957 insert Lambda(1690)0Width:MEmass2 4 0 insert Lambda(1690)0Width:MEmass2 5 0.13957 insert Lambda(1690)0Width:MEmass2 6 0 insert Lambda(1690)0Width:MEmass2 7 0.134978 insert Lambda(1690)0Width:MEmass2 8 0.497648 insert Lambda(1690)0Width:MEmass2 9 0.493677 insert Lambda(1690)0Width:DecayModes 0 Lambda(1690)0->Lambda0,pi+,pi-; insert Lambda(1690)0Width:DecayModes 1 Lambda(1690)0->Lambda0,pi0,pi0; insert Lambda(1690)0Width:DecayModes 2 Lambda(1690)0->Sigma-,pi+,pi0; insert Lambda(1690)0Width:DecayModes 3 Lambda(1690)0->Sigma-,pi+; insert Lambda(1690)0Width:DecayModes 4 Lambda(1690)0->Sigma+,pi-,pi0; insert Lambda(1690)0Width:DecayModes 5 Lambda(1690)0->Sigma+,pi-; insert Lambda(1690)0Width:DecayModes 6 Lambda(1690)0->Sigma0,pi+,pi-; insert Lambda(1690)0Width:DecayModes 7 Lambda(1690)0->Sigma0,pi0; insert Lambda(1690)0Width:DecayModes 8 Lambda(1690)0->n0,Kbar0; insert Lambda(1690)0Width:DecayModes 9 Lambda(1690)0->p+,K-; insert Lambda(1690)0Width:NumberofEntries 0 0 insert Lambda(1690)0Width:NumberofEntries 1 0 insert Lambda(1690)0Width:NumberofEntries 2 0 insert Lambda(1690)0Width:NumberofEntries 3 0 insert Lambda(1690)0Width:NumberofEntries 4 0 insert Lambda(1690)0Width:NumberofEntries 5 0 insert Lambda(1690)0Width:NumberofEntries 6 0 insert Lambda(1690)0Width:NumberofEntries 7 0 insert Lambda(1690)0Width:NumberofEntries 8 0 insert Lambda(1690)0Width:NumberofEntries 9 0 insert Lambda(1690)0Width:BaryonDecayers 0 NULL insert Lambda(1690)0Width:ModeLocation 0 -1 insert Lambda(1690)0Width:BaryonDecayers 1 NULL insert Lambda(1690)0Width:ModeLocation 1 -1 insert Lambda(1690)0Width:BaryonDecayers 2 NULL insert Lambda(1690)0Width:ModeLocation 2 -1 insert Lambda(1690)0Width:BaryonDecayers 3 /Herwig/Decays/SU3Strong3 insert Lambda(1690)0Width:ModeLocation 3 14 insert Lambda(1690)0Width:BaryonDecayers 4 NULL insert Lambda(1690)0Width:ModeLocation 4 -1 insert Lambda(1690)0Width:BaryonDecayers 5 /Herwig/Decays/SU3Strong3 insert Lambda(1690)0Width:ModeLocation 5 13 insert Lambda(1690)0Width:BaryonDecayers 6 NULL insert Lambda(1690)0Width:ModeLocation 6 -1 insert Lambda(1690)0Width:BaryonDecayers 7 /Herwig/Decays/SU3Strong3 insert Lambda(1690)0Width:ModeLocation 7 12 insert Lambda(1690)0Width:BaryonDecayers 8 /Herwig/Decays/SU3Strong3 insert Lambda(1690)0Width:ModeLocation 8 19 insert Lambda(1690)0Width:BaryonDecayers 9 /Herwig/Decays/SU3Strong3 insert Lambda(1690)0Width:ModeLocation 9 18 newdef /Herwig/Particles/Lambda(1690)0:Width_generator Lambda(1690)0Width newdef /Herwig/Particles/Lambdabar(1690)0:Width_generator Lambda(1690)0Width # create Herwig::GenericWidthGenerator K_2(1770)+Width newdef K_2(1770)+Width:Particle /Herwig/Particles/K_2(1770)+ newdef K_2(1770)+Width:Prefactor 1.0101 newdef K_2(1770)+Width:BRNormalize 1 newdef K_2(1770)+Width:BRMinimum 0.01 newdef K_2(1770)+Width:Points 50 newdef K_2(1770)+Width:InterpolationOrder 1 insert K_2(1770)+Width:MEtype 0 0 insert K_2(1770)+Width:MEtype 1 0 insert K_2(1770)+Width:MEtype 2 0 insert K_2(1770)+Width:MEtype 3 0 insert K_2(1770)+Width:MEtype 4 0 insert K_2(1770)+Width:MEcode 0 0 insert K_2(1770)+Width:MEcode 1 0 insert K_2(1770)+Width:MEcode 2 0 insert K_2(1770)+Width:MEcode 3 0 insert K_2(1770)+Width:MEcode 4 0 insert K_2(1770)+Width:MEcoupling 0 0.076667 insert K_2(1770)+Width:MEcoupling 1 0.01 insert K_2(1770)+Width:MEcoupling 2 0.02 insert K_2(1770)+Width:MEcoupling 3 0.153333 insert K_2(1770)+Width:MEcoupling 4 0.74 insert K_2(1770)+Width:ModeOn 0 1 insert K_2(1770)+Width:ModeOn 1 0 insert K_2(1770)+Width:ModeOn 2 1 insert K_2(1770)+Width:ModeOn 3 1 insert K_2(1770)+Width:ModeOn 4 1 insert K_2(1770)+Width:MinimumMasses 0 0.776638 insert K_2(1770)+Width:MinimumMasses 1 1.36358 insert K_2(1770)+Width:MinimumMasses 2 1.35397 insert K_2(1770)+Width:MinimumMasses 3 0.78557 insert K_2(1770)+Width:MinimumMasses 4 1.58388 insert K_2(1770)+Width:MEmass1 0 0 insert K_2(1770)+Width:MEmass1 1 0 insert K_2(1770)+Width:MEmass1 2 0 insert K_2(1770)+Width:MEmass1 3 0 insert K_2(1770)+Width:MEmass1 4 0 insert K_2(1770)+Width:MEmass2 0 0 insert K_2(1770)+Width:MEmass2 1 0 insert K_2(1770)+Width:MEmass2 2 0 insert K_2(1770)+Width:MEmass2 3 0 insert K_2(1770)+Width:MEmass2 4 0 insert K_2(1770)+Width:DecayModes 0 K_2(1770)+->K*+,pi0; insert K_2(1770)+Width:DecayModes 1 K_2(1770)+->K*_2+,pi0; insert K_2(1770)+Width:DecayModes 2 K_2(1770)+->K*_20,pi+; insert K_2(1770)+Width:DecayModes 3 K_2(1770)+->K*0,pi+; insert K_2(1770)+Width:DecayModes 4 K_2(1770)+->K+,f_2; insert K_2(1770)+Width:NumberofEntries 0 0 insert K_2(1770)+Width:NumberofEntries 1 0 insert K_2(1770)+Width:NumberofEntries 2 0 insert K_2(1770)+Width:NumberofEntries 3 0 insert K_2(1770)+Width:NumberofEntries 4 0 newdef /Herwig/Particles/K_2(1770)+:Width_generator K_2(1770)+Width newdef /Herwig/Particles/K_2(1770)-:Width_generator K_2(1770)+Width # create Herwig::GenericWidthGenerator K_2(1770)0Width newdef K_2(1770)0Width:Particle /Herwig/Particles/K_2(1770)0 newdef K_2(1770)0Width:Prefactor 1.0101 newdef K_2(1770)0Width:BRNormalize 1 newdef K_2(1770)0Width:BRMinimum 0.01 newdef K_2(1770)0Width:Points 50 newdef K_2(1770)0Width:InterpolationOrder 1 insert K_2(1770)0Width:MEtype 0 0 insert K_2(1770)0Width:MEtype 1 0 insert K_2(1770)0Width:MEtype 2 0 insert K_2(1770)0Width:MEtype 3 0 insert K_2(1770)0Width:MEtype 4 0 insert K_2(1770)0Width:MEcode 0 0 insert K_2(1770)0Width:MEcode 1 0 insert K_2(1770)0Width:MEcode 2 0 insert K_2(1770)0Width:MEcode 3 0 insert K_2(1770)0Width:MEcode 4 0 insert K_2(1770)0Width:MEcoupling 0 0.153333 insert K_2(1770)0Width:MEcoupling 1 0.02 insert K_2(1770)0Width:MEcoupling 2 0.01 insert K_2(1770)0Width:MEcoupling 3 0.076667 insert K_2(1770)0Width:MEcoupling 4 0.74 insert K_2(1770)0Width:ModeOn 0 1 insert K_2(1770)0Width:ModeOn 1 1 insert K_2(1770)0Width:ModeOn 2 0 insert K_2(1770)0Width:ModeOn 3 1 insert K_2(1770)0Width:ModeOn 4 1 insert K_2(1770)0Width:MinimumMasses 0 0.78123 insert K_2(1770)0Width:MinimumMasses 1 1.36817 insert K_2(1770)0Width:MinimumMasses 2 1.34938 insert K_2(1770)0Width:MinimumMasses 3 0.780978 insert K_2(1770)0Width:MinimumMasses 4 1.58785 insert K_2(1770)0Width:MEmass1 0 0 insert K_2(1770)0Width:MEmass1 1 0 insert K_2(1770)0Width:MEmass1 2 0 insert K_2(1770)0Width:MEmass1 3 0 insert K_2(1770)0Width:MEmass1 4 0 insert K_2(1770)0Width:MEmass2 0 0 insert K_2(1770)0Width:MEmass2 1 0 insert K_2(1770)0Width:MEmass2 2 0 insert K_2(1770)0Width:MEmass2 3 0 insert K_2(1770)0Width:MEmass2 4 0 insert K_2(1770)0Width:DecayModes 0 K_2(1770)0->K*+,pi-; insert K_2(1770)0Width:DecayModes 1 K_2(1770)0->K*_2+,pi-; insert K_2(1770)0Width:DecayModes 2 K_2(1770)0->K*_20,pi0; insert K_2(1770)0Width:DecayModes 3 K_2(1770)0->K*0,pi0; insert K_2(1770)0Width:DecayModes 4 K_2(1770)0->K0,f_2; insert K_2(1770)0Width:NumberofEntries 0 0 insert K_2(1770)0Width:NumberofEntries 1 0 insert K_2(1770)0Width:NumberofEntries 2 0 insert K_2(1770)0Width:NumberofEntries 3 0 insert K_2(1770)0Width:NumberofEntries 4 0 newdef /Herwig/Particles/K_2(1770)0:Width_generator K_2(1770)0Width newdef /Herwig/Particles/K_2(1770)bar0:Width_generator K_2(1770)0Width # create Herwig::GenericWidthGenerator K_2(1820)0Width newdef K_2(1820)0Width:Particle /Herwig/Particles/K_2(1820)0 newdef K_2(1820)0Width:Prefactor 1 newdef K_2(1820)0Width:BRNormalize 1 newdef K_2(1820)0Width:BRMinimum 0.01 newdef K_2(1820)0Width:Points 50 newdef K_2(1820)0Width:InterpolationOrder 1 insert K_2(1820)0Width:MEtype 0 0 insert K_2(1820)0Width:MEtype 1 0 insert K_2(1820)0Width:MEtype 2 0 insert K_2(1820)0Width:MEtype 3 0 insert K_2(1820)0Width:MEtype 4 0 insert K_2(1820)0Width:MEcode 0 0 insert K_2(1820)0Width:MEcode 1 0 insert K_2(1820)0Width:MEcode 2 0 insert K_2(1820)0Width:MEcode 3 0 insert K_2(1820)0Width:MEcode 4 0 insert K_2(1820)0Width:MEcoupling 0 0.033333 insert K_2(1820)0Width:MEcoupling 1 0.513333 insert K_2(1820)0Width:MEcoupling 2 0.256667 insert K_2(1820)0Width:MEcoupling 3 0.016667 insert K_2(1820)0Width:MEcoupling 4 0.18 insert K_2(1820)0Width:ModeOn 0 1 insert K_2(1820)0Width:ModeOn 1 1 insert K_2(1820)0Width:ModeOn 2 1 insert K_2(1820)0Width:ModeOn 3 1 insert K_2(1820)0Width:ModeOn 4 1 insert K_2(1820)0Width:MinimumMasses 0 0.78123 insert K_2(1820)0Width:MinimumMasses 1 1.36817 insert K_2(1820)0Width:MinimumMasses 2 1.34938 insert K_2(1820)0Width:MinimumMasses 3 0.780978 insert K_2(1820)0Width:MinimumMasses 4 1.58785 insert K_2(1820)0Width:MEmass1 0 0 insert K_2(1820)0Width:MEmass1 1 0 insert K_2(1820)0Width:MEmass1 2 0 insert K_2(1820)0Width:MEmass1 3 0 insert K_2(1820)0Width:MEmass1 4 0 insert K_2(1820)0Width:MEmass2 0 0 insert K_2(1820)0Width:MEmass2 1 0 insert K_2(1820)0Width:MEmass2 2 0 insert K_2(1820)0Width:MEmass2 3 0 insert K_2(1820)0Width:MEmass2 4 0 insert K_2(1820)0Width:DecayModes 0 K_2(1820)0->K*+,pi-; insert K_2(1820)0Width:DecayModes 1 K_2(1820)0->K*_2+,pi-; insert K_2(1820)0Width:DecayModes 2 K_2(1820)0->K*_20,pi0; insert K_2(1820)0Width:DecayModes 3 K_2(1820)0->K*0,pi0; insert K_2(1820)0Width:DecayModes 4 K_2(1820)0->K0,f_2; insert K_2(1820)0Width:NumberofEntries 0 0 insert K_2(1820)0Width:NumberofEntries 1 0 insert K_2(1820)0Width:NumberofEntries 2 0 insert K_2(1820)0Width:NumberofEntries 3 0 insert K_2(1820)0Width:NumberofEntries 4 0 newdef /Herwig/Particles/K_2(1820)bar0:Width_generator K_2(1820)0Width newdef /Herwig/Particles/K_2(1820)0:Width_generator K_2(1820)0Width # create Herwig::GenericWidthGenerator K_2(1820)+Width newdef K_2(1820)+Width:Particle /Herwig/Particles/K_2(1820)+ newdef K_2(1820)+Width:Prefactor 1 newdef K_2(1820)+Width:BRNormalize 1 newdef K_2(1820)+Width:BRMinimum 0.01 newdef K_2(1820)+Width:Points 50 newdef K_2(1820)+Width:InterpolationOrder 1 insert K_2(1820)+Width:MEtype 0 0 insert K_2(1820)+Width:MEtype 1 0 insert K_2(1820)+Width:MEtype 2 0 insert K_2(1820)+Width:MEtype 3 0 insert K_2(1820)+Width:MEtype 4 0 insert K_2(1820)+Width:MEcode 0 0 insert K_2(1820)+Width:MEcode 1 0 insert K_2(1820)+Width:MEcode 2 0 insert K_2(1820)+Width:MEcode 3 0 insert K_2(1820)+Width:MEcode 4 0 insert K_2(1820)+Width:MEcoupling 0 0.016667 insert K_2(1820)+Width:MEcoupling 1 0.256667 insert K_2(1820)+Width:MEcoupling 2 0.513333 insert K_2(1820)+Width:MEcoupling 3 0.033333 insert K_2(1820)+Width:MEcoupling 4 0.18 insert K_2(1820)+Width:ModeOn 0 1 insert K_2(1820)+Width:ModeOn 1 1 insert K_2(1820)+Width:ModeOn 2 1 insert K_2(1820)+Width:ModeOn 3 1 insert K_2(1820)+Width:ModeOn 4 1 insert K_2(1820)+Width:MinimumMasses 0 0.776638 insert K_2(1820)+Width:MinimumMasses 1 1.36358 insert K_2(1820)+Width:MinimumMasses 2 1.35397 insert K_2(1820)+Width:MinimumMasses 3 0.78557 insert K_2(1820)+Width:MinimumMasses 4 1.58388 insert K_2(1820)+Width:MEmass1 0 0 insert K_2(1820)+Width:MEmass1 1 0 insert K_2(1820)+Width:MEmass1 2 0 insert K_2(1820)+Width:MEmass1 3 0 insert K_2(1820)+Width:MEmass1 4 0 insert K_2(1820)+Width:MEmass2 0 0 insert K_2(1820)+Width:MEmass2 1 0 insert K_2(1820)+Width:MEmass2 2 0 insert K_2(1820)+Width:MEmass2 3 0 insert K_2(1820)+Width:MEmass2 4 0 insert K_2(1820)+Width:DecayModes 0 K_2(1820)+->K*+,pi0; insert K_2(1820)+Width:DecayModes 1 K_2(1820)+->K*_2+,pi0; insert K_2(1820)+Width:DecayModes 2 K_2(1820)+->K*_20,pi+; insert K_2(1820)+Width:DecayModes 3 K_2(1820)+->K*0,pi+; insert K_2(1820)+Width:DecayModes 4 K_2(1820)+->K+,f_2; insert K_2(1820)+Width:NumberofEntries 0 0 insert K_2(1820)+Width:NumberofEntries 1 0 insert K_2(1820)+Width:NumberofEntries 2 0 insert K_2(1820)+Width:NumberofEntries 3 0 insert K_2(1820)+Width:NumberofEntries 4 0 newdef /Herwig/Particles/K_2(1820)+:Width_generator K_2(1820)+Width newdef /Herwig/Particles/K_2(1820)-:Width_generator K_2(1820)+Width # create Herwig::BaryonWidthGenerator Sigma(1670)+Width newdef Sigma(1670)+Width:Particle /Herwig/Particles/Sigma(1670)+ newdef Sigma(1670)+Width:Prefactor 1 newdef Sigma(1670)+Width:BRNormalize 1 newdef Sigma(1670)+Width:BRMinimum 0.01 newdef Sigma(1670)+Width:Points 50 newdef Sigma(1670)+Width:InterpolationOrder 1 insert Sigma(1670)+Width:MEtype 0 1 insert Sigma(1670)+Width:MEtype 1 1 insert Sigma(1670)+Width:MEtype 2 1 insert Sigma(1670)+Width:MEtype 3 1 insert Sigma(1670)+Width:MEcode 0 105 insert Sigma(1670)+Width:MEcode 1 105 insert Sigma(1670)+Width:MEcode 2 105 insert Sigma(1670)+Width:MEcode 3 105 insert Sigma(1670)+Width:MEcoupling 0 0.23391 insert Sigma(1670)+Width:MEcoupling 1 0.568903 insert Sigma(1670)+Width:MEcoupling 2 0.576336 insert Sigma(1670)+Width:MEcoupling 3 0.129137 insert Sigma(1670)+Width:ModeOn 0 1 insert Sigma(1670)+Width:ModeOn 1 1 insert Sigma(1670)+Width:ModeOn 2 1 insert Sigma(1670)+Width:ModeOn 3 1 insert Sigma(1670)+Width:MinimumMasses 0 1.25525 insert Sigma(1670)+Width:MinimumMasses 1 1.32435 insert Sigma(1670)+Width:MinimumMasses 2 1.33221 insert Sigma(1670)+Width:MinimumMasses 3 1.43592 insert Sigma(1670)+Width:MEmass1 0 1.11568 insert Sigma(1670)+Width:MEmass1 1 1.18937 insert Sigma(1670)+Width:MEmass1 2 1.19264 insert Sigma(1670)+Width:MEmass1 3 0.938272 insert Sigma(1670)+Width:MEmass2 0 0.13957 insert Sigma(1670)+Width:MEmass2 1 0.134978 insert Sigma(1670)+Width:MEmass2 2 0.13957 insert Sigma(1670)+Width:MEmass2 3 0.497648 insert Sigma(1670)+Width:DecayModes 0 Sigma(1670)+->Lambda0,pi+; insert Sigma(1670)+Width:DecayModes 1 Sigma(1670)+->Sigma+,pi0; insert Sigma(1670)+Width:DecayModes 2 Sigma(1670)+->Sigma0,pi+; insert Sigma(1670)+Width:DecayModes 3 Sigma(1670)+->p+,Kbar0; insert Sigma(1670)+Width:NumberofEntries 0 0 insert Sigma(1670)+Width:NumberofEntries 1 0 insert Sigma(1670)+Width:NumberofEntries 2 0 insert Sigma(1670)+Width:NumberofEntries 3 0 insert Sigma(1670)+Width:BaryonDecayers 0 /Herwig/Decays/SU3Strong3 insert Sigma(1670)+Width:ModeLocation 0 24 insert Sigma(1670)+Width:BaryonDecayers 1 /Herwig/Decays/SU3Strong3 insert Sigma(1670)+Width:ModeLocation 1 20 insert Sigma(1670)+Width:BaryonDecayers 2 /Herwig/Decays/SU3Strong3 insert Sigma(1670)+Width:ModeLocation 2 21 insert Sigma(1670)+Width:BaryonDecayers 3 /Herwig/Decays/SU3Strong3 insert Sigma(1670)+Width:ModeLocation 3 23 newdef /Herwig/Particles/Sigma(1670)+:Width_generator Sigma(1670)+Width newdef /Herwig/Particles/Sigmabar(1670)-:Width_generator Sigma(1670)+Width # create Herwig::BaryonWidthGenerator Sigma(1670)0Width newdef Sigma(1670)0Width:Particle /Herwig/Particles/Sigma(1670)0 newdef Sigma(1670)0Width:Prefactor 1 newdef Sigma(1670)0Width:BRNormalize 1 newdef Sigma(1670)0Width:BRMinimum 0.01 newdef Sigma(1670)0Width:Points 50 newdef Sigma(1670)0Width:InterpolationOrder 1 insert Sigma(1670)0Width:MEtype 0 1 insert Sigma(1670)0Width:MEtype 1 1 insert Sigma(1670)0Width:MEtype 2 1 insert Sigma(1670)0Width:MEtype 3 1 insert Sigma(1670)0Width:MEtype 4 1 insert Sigma(1670)0Width:MEcode 0 105 insert Sigma(1670)0Width:MEcode 1 105 insert Sigma(1670)0Width:MEcode 2 105 insert Sigma(1670)0Width:MEcode 3 105 insert Sigma(1670)0Width:MEcode 4 105 insert Sigma(1670)0Width:MEcoupling 0 0.233097 insert Sigma(1670)0Width:MEcoupling 1 0.583534 insert Sigma(1670)0Width:MEcoupling 2 0.571554 insert Sigma(1670)0Width:MEcoupling 3 0.12961 insert Sigma(1670)0Width:MEcoupling 4 0.127732 insert Sigma(1670)0Width:ModeOn 0 1 insert Sigma(1670)0Width:ModeOn 1 1 insert Sigma(1670)0Width:ModeOn 2 1 insert Sigma(1670)0Width:ModeOn 3 1 insert Sigma(1670)0Width:ModeOn 4 1 insert Sigma(1670)0Width:MinimumMasses 0 1.25066 insert Sigma(1670)0Width:MinimumMasses 1 1.33702 insert Sigma(1670)0Width:MinimumMasses 2 1.32894 insert Sigma(1670)0Width:MinimumMasses 3 1.43721 insert Sigma(1670)0Width:MinimumMasses 4 1.43195 insert Sigma(1670)0Width:MEmass1 0 1.11568 insert Sigma(1670)0Width:MEmass1 1 1.19745 insert Sigma(1670)0Width:MEmass1 2 1.18937 insert Sigma(1670)0Width:MEmass1 3 0.939565 insert Sigma(1670)0Width:MEmass1 4 0.938272 insert Sigma(1670)0Width:MEmass2 0 0.134978 insert Sigma(1670)0Width:MEmass2 1 0.13957 insert Sigma(1670)0Width:MEmass2 2 0.13957 insert Sigma(1670)0Width:MEmass2 3 0.497648 insert Sigma(1670)0Width:MEmass2 4 0.493677 insert Sigma(1670)0Width:DecayModes 0 Sigma(1670)0->Lambda0,pi0; insert Sigma(1670)0Width:DecayModes 1 Sigma(1670)0->Sigma-,pi+; insert Sigma(1670)0Width:DecayModes 2 Sigma(1670)0->Sigma+,pi-; insert Sigma(1670)0Width:DecayModes 3 Sigma(1670)0->n0,Kbar0; insert Sigma(1670)0Width:DecayModes 4 Sigma(1670)0->p+,K-; insert Sigma(1670)0Width:NumberofEntries 0 0 insert Sigma(1670)0Width:NumberofEntries 1 0 insert Sigma(1670)0Width:NumberofEntries 2 0 insert Sigma(1670)0Width:NumberofEntries 3 0 insert Sigma(1670)0Width:NumberofEntries 4 0 insert Sigma(1670)0Width:BaryonDecayers 0 /Herwig/Decays/SU3Strong3 insert Sigma(1670)0Width:ModeLocation 0 33 insert Sigma(1670)0Width:BaryonDecayers 1 /Herwig/Decays/SU3Strong3 insert Sigma(1670)0Width:ModeLocation 1 26 insert Sigma(1670)0Width:BaryonDecayers 2 /Herwig/Decays/SU3Strong3 insert Sigma(1670)0Width:ModeLocation 2 27 insert Sigma(1670)0Width:BaryonDecayers 3 /Herwig/Decays/SU3Strong3 insert Sigma(1670)0Width:ModeLocation 3 31 insert Sigma(1670)0Width:BaryonDecayers 4 /Herwig/Decays/SU3Strong3 insert Sigma(1670)0Width:ModeLocation 4 30 newdef /Herwig/Particles/Sigma(1670)0:Width_generator Sigma(1670)0Width newdef /Herwig/Particles/Sigmabar(1670)0:Width_generator Sigma(1670)0Width # create Herwig::BaryonWidthGenerator Sigma(1670)-Width newdef Sigma(1670)-Width:Particle /Herwig/Particles/Sigma(1670)- newdef Sigma(1670)-Width:Prefactor 1 newdef Sigma(1670)-Width:BRNormalize 1 newdef Sigma(1670)-Width:BRMinimum 0.01 newdef Sigma(1670)-Width:Points 50 newdef Sigma(1670)-Width:InterpolationOrder 1 insert Sigma(1670)-Width:MEtype 0 1 insert Sigma(1670)-Width:MEtype 1 1 insert Sigma(1670)-Width:MEtype 2 1 insert Sigma(1670)-Width:MEtype 3 1 insert Sigma(1670)-Width:MEcode 0 105 insert Sigma(1670)-Width:MEcode 1 105 insert Sigma(1670)-Width:MEcode 2 105 insert Sigma(1670)-Width:MEcode 3 105 insert Sigma(1670)-Width:MEcoupling 0 0.23391 insert Sigma(1670)-Width:MEcoupling 1 0.58073 insert Sigma(1670)-Width:MEcoupling 2 0.576336 insert Sigma(1670)-Width:MEcoupling 3 0.128191 insert Sigma(1670)-Width:ModeOn 0 1 insert Sigma(1670)-Width:ModeOn 1 1 insert Sigma(1670)-Width:ModeOn 2 1 insert Sigma(1670)-Width:ModeOn 3 1 insert Sigma(1670)-Width:MinimumMasses 0 1.25525 insert Sigma(1670)-Width:MinimumMasses 1 1.33243 insert Sigma(1670)-Width:MinimumMasses 2 1.33221 insert Sigma(1670)-Width:MinimumMasses 3 1.43324 insert Sigma(1670)-Width:MEmass1 0 1.11568 insert Sigma(1670)-Width:MEmass1 1 1.19745 insert Sigma(1670)-Width:MEmass1 2 1.19264 insert Sigma(1670)-Width:MEmass1 3 0.939565 insert Sigma(1670)-Width:MEmass2 0 0.13957 insert Sigma(1670)-Width:MEmass2 1 0.134978 insert Sigma(1670)-Width:MEmass2 2 0.13957 insert Sigma(1670)-Width:MEmass2 3 0.493677 insert Sigma(1670)-Width:DecayModes 0 Sigma(1670)-->Lambda0,pi-; insert Sigma(1670)-Width:DecayModes 1 Sigma(1670)-->Sigma-,pi0; insert Sigma(1670)-Width:DecayModes 2 Sigma(1670)-->Sigma0,pi-; insert Sigma(1670)-Width:DecayModes 3 Sigma(1670)-->n0,K-; insert Sigma(1670)-Width:NumberofEntries 0 0 insert Sigma(1670)-Width:NumberofEntries 1 0 insert Sigma(1670)-Width:NumberofEntries 2 0 insert Sigma(1670)-Width:NumberofEntries 3 0 insert Sigma(1670)-Width:BaryonDecayers 0 /Herwig/Decays/SU3Strong3 insert Sigma(1670)-Width:ModeLocation 0 38 insert Sigma(1670)-Width:BaryonDecayers 1 /Herwig/Decays/SU3Strong3 insert Sigma(1670)-Width:ModeLocation 1 35 insert Sigma(1670)-Width:BaryonDecayers 2 /Herwig/Decays/SU3Strong3 insert Sigma(1670)-Width:ModeLocation 2 34 insert Sigma(1670)-Width:BaryonDecayers 3 /Herwig/Decays/SU3Strong3 insert Sigma(1670)-Width:ModeLocation 3 37 newdef /Herwig/Particles/Sigma(1670)-:Width_generator Sigma(1670)-Width newdef /Herwig/Particles/Sigmabar(1670)+:Width_generator Sigma(1670)-Width # create Herwig::BaryonWidthGenerator Xi(1820)0Width newdef Xi(1820)0Width:Particle /Herwig/Particles/Xi(1820)0 newdef Xi(1820)0Width:Prefactor 0.999941 newdef Xi(1820)0Width:BRNormalize 1 newdef Xi(1820)0Width:BRMinimum 0.01 newdef Xi(1820)0Width:Points 50 newdef Xi(1820)0Width:InterpolationOrder 1 insert Xi(1820)0Width:MEtype 0 1 insert Xi(1820)0Width:MEtype 1 1 insert Xi(1820)0Width:MEtype 2 1 insert Xi(1820)0Width:MEtype 3 2 insert Xi(1820)0Width:MEtype 4 2 insert Xi(1820)0Width:MEtype 5 1 insert Xi(1820)0Width:MEtype 6 1 insert Xi(1820)0Width:MEcode 0 105 insert Xi(1820)0Width:MEcode 1 105 insert Xi(1820)0Width:MEcode 2 105 insert Xi(1820)0Width:MEcode 3 0 insert Xi(1820)0Width:MEcode 4 0 insert Xi(1820)0Width:MEcode 5 105 insert Xi(1820)0Width:MEcode 6 105 insert Xi(1820)0Width:MEcoupling 0 0.294995 insert Xi(1820)0Width:MEcoupling 1 0.229985 insert Xi(1820)0Width:MEcoupling 2 0.23869 insert Xi(1820)0Width:MEcoupling 3 1.35985 insert Xi(1820)0Width:MEcoupling 4 1.26182 insert Xi(1820)0Width:MEcoupling 5 0.0598674 insert Xi(1820)0Width:MEcoupling 6 0.0586949 insert Xi(1820)0Width:ModeOn 0 1 insert Xi(1820)0Width:ModeOn 1 1 insert Xi(1820)0Width:ModeOn 2 1 insert Xi(1820)0Width:ModeOn 3 1 insert Xi(1820)0Width:ModeOn 4 1 insert Xi(1820)0Width:ModeOn 5 1 insert Xi(1820)0Width:ModeOn 6 1 insert Xi(1820)0Width:MinimumMasses 0 1.61333 insert Xi(1820)0Width:MinimumMasses 1 1.68305 insert Xi(1820)0Width:MinimumMasses 2 1.69029 insert Xi(1820)0Width:MinimumMasses 3 1.60457 insert Xi(1820)0Width:MinimumMasses 4 1.59678 insert Xi(1820)0Width:MinimumMasses 5 1.46088 insert Xi(1820)0Width:MinimumMasses 6 1.44981 insert Xi(1820)0Width:MEmass1 0 1.11568 insert Xi(1820)0Width:MEmass1 1 1.18937 insert Xi(1820)0Width:MEmass1 2 1.19264 insert Xi(1820)0Width:MEmass1 3 1.535 insert Xi(1820)0Width:MEmass1 4 1.5318 insert Xi(1820)0Width:MEmass1 5 1.32131 insert Xi(1820)0Width:MEmass1 6 1.31483 insert Xi(1820)0Width:MEmass2 0 0.497648 insert Xi(1820)0Width:MEmass2 1 0.493677 insert Xi(1820)0Width:MEmass2 2 0.497648 insert Xi(1820)0Width:MEmass2 3 0.13957 insert Xi(1820)0Width:MEmass2 4 0.134978 insert Xi(1820)0Width:MEmass2 5 0.13957 insert Xi(1820)0Width:MEmass2 6 0.134978 insert Xi(1820)0Width:DecayModes 0 Xi(1820)0->Lambda0,Kbar0; insert Xi(1820)0Width:DecayModes 1 Xi(1820)0->Sigma+,K-; insert Xi(1820)0Width:DecayModes 2 Xi(1820)0->Sigma0,Kbar0; insert Xi(1820)0Width:DecayModes 3 Xi(1820)0->Xi*-,pi+; insert Xi(1820)0Width:DecayModes 4 Xi(1820)0->Xi*0,pi0; insert Xi(1820)0Width:DecayModes 5 Xi(1820)0->Xi-,pi+; insert Xi(1820)0Width:DecayModes 6 Xi(1820)0->Xi0,pi0; insert Xi(1820)0Width:InterpolationMasses 0 1.6932041 insert Xi(1820)0Width:InterpolationMasses 1 1.698102 insert Xi(1820)0Width:InterpolationMasses 2 1.703 insert Xi(1820)0Width:InterpolationMasses 3 1.707898 insert Xi(1820)0Width:InterpolationMasses 4 1.7127959 insert Xi(1820)0Width:InterpolationMasses 5 1.7176939 insert Xi(1820)0Width:InterpolationMasses 6 1.7225918 insert Xi(1820)0Width:InterpolationMasses 7 1.7274898 insert Xi(1820)0Width:InterpolationMasses 8 1.7323878 insert Xi(1820)0Width:InterpolationMasses 9 1.7372857 insert Xi(1820)0Width:InterpolationMasses 10 1.7421837 insert Xi(1820)0Width:InterpolationMasses 11 1.7470816 insert Xi(1820)0Width:InterpolationMasses 12 1.7519796 insert Xi(1820)0Width:InterpolationMasses 13 1.7568776 insert Xi(1820)0Width:InterpolationMasses 14 1.7617755 insert Xi(1820)0Width:InterpolationMasses 15 1.7666735 insert Xi(1820)0Width:InterpolationMasses 16 1.7715714 insert Xi(1820)0Width:InterpolationMasses 17 1.7764694 insert Xi(1820)0Width:InterpolationMasses 18 1.7813673 insert Xi(1820)0Width:InterpolationMasses 19 1.7862653 insert Xi(1820)0Width:InterpolationMasses 20 1.7911633 insert Xi(1820)0Width:InterpolationMasses 21 1.7960612 insert Xi(1820)0Width:InterpolationMasses 22 1.8009592 insert Xi(1820)0Width:InterpolationMasses 23 1.8058571 insert Xi(1820)0Width:InterpolationMasses 24 1.8107551 insert Xi(1820)0Width:InterpolationMasses 25 1.8156531 insert Xi(1820)0Width:InterpolationMasses 26 1.820551 insert Xi(1820)0Width:InterpolationMasses 27 1.825449 insert Xi(1820)0Width:InterpolationMasses 28 1.8303469 insert Xi(1820)0Width:InterpolationMasses 29 1.8352449 insert Xi(1820)0Width:InterpolationMasses 30 1.8401429 insert Xi(1820)0Width:InterpolationMasses 31 1.8450408 insert Xi(1820)0Width:InterpolationMasses 32 1.8499388 insert Xi(1820)0Width:InterpolationMasses 33 1.8548367 insert Xi(1820)0Width:InterpolationMasses 34 1.8597347 insert Xi(1820)0Width:InterpolationMasses 35 1.8646327 insert Xi(1820)0Width:InterpolationMasses 36 1.8695306 insert Xi(1820)0Width:InterpolationMasses 37 1.8744286 insert Xi(1820)0Width:InterpolationMasses 38 1.8793265 insert Xi(1820)0Width:InterpolationMasses 39 1.8842245 insert Xi(1820)0Width:InterpolationMasses 40 1.8891224 insert Xi(1820)0Width:InterpolationMasses 41 1.8940204 insert Xi(1820)0Width:InterpolationMasses 42 1.8989184 insert Xi(1820)0Width:InterpolationMasses 43 1.9038163 insert Xi(1820)0Width:InterpolationMasses 44 1.9087143 insert Xi(1820)0Width:InterpolationMasses 45 1.9136122 insert Xi(1820)0Width:InterpolationMasses 46 1.9185102 insert Xi(1820)0Width:InterpolationMasses 47 1.9234082 insert Xi(1820)0Width:InterpolationMasses 48 1.9283061 insert Xi(1820)0Width:InterpolationMasses 49 1.9332041 insert Xi(1820)0Width:InterpolationMasses 50 1.938102 insert Xi(1820)0Width:InterpolationMasses 51 1.943 insert Xi(1820)0Width:InterpolationMasses 52 1.947898 insert Xi(1820)0Width:InterpolationMasses 53 1.9527959 insert Xi(1820)0Width:InterpolationMasses 54 1.6932041 insert Xi(1820)0Width:InterpolationMasses 55 1.698102 insert Xi(1820)0Width:InterpolationMasses 56 1.703 insert Xi(1820)0Width:InterpolationMasses 57 1.707898 insert Xi(1820)0Width:InterpolationMasses 58 1.7127959 insert Xi(1820)0Width:InterpolationMasses 59 1.7176939 insert Xi(1820)0Width:InterpolationMasses 60 1.7225918 insert Xi(1820)0Width:InterpolationMasses 61 1.7274898 insert Xi(1820)0Width:InterpolationMasses 62 1.7323878 insert Xi(1820)0Width:InterpolationMasses 63 1.7372857 insert Xi(1820)0Width:InterpolationMasses 64 1.7421837 insert Xi(1820)0Width:InterpolationMasses 65 1.7470816 insert Xi(1820)0Width:InterpolationMasses 66 1.7519796 insert Xi(1820)0Width:InterpolationMasses 67 1.7568776 insert Xi(1820)0Width:InterpolationMasses 68 1.7617755 insert Xi(1820)0Width:InterpolationMasses 69 1.7666735 insert Xi(1820)0Width:InterpolationMasses 70 1.7715714 insert Xi(1820)0Width:InterpolationMasses 71 1.7764694 insert Xi(1820)0Width:InterpolationMasses 72 1.7813673 insert Xi(1820)0Width:InterpolationMasses 73 1.7862653 insert Xi(1820)0Width:InterpolationMasses 74 1.7911633 insert Xi(1820)0Width:InterpolationMasses 75 1.7960612 insert Xi(1820)0Width:InterpolationMasses 76 1.8009592 insert Xi(1820)0Width:InterpolationMasses 77 1.8058571 insert Xi(1820)0Width:InterpolationMasses 78 1.8107551 insert Xi(1820)0Width:InterpolationMasses 79 1.8156531 insert Xi(1820)0Width:InterpolationMasses 80 1.820551 insert Xi(1820)0Width:InterpolationMasses 81 1.825449 insert Xi(1820)0Width:InterpolationMasses 82 1.8303469 insert Xi(1820)0Width:InterpolationMasses 83 1.8352449 insert Xi(1820)0Width:InterpolationMasses 84 1.8401429 insert Xi(1820)0Width:InterpolationMasses 85 1.8450408 insert Xi(1820)0Width:InterpolationMasses 86 1.8499388 insert Xi(1820)0Width:InterpolationMasses 87 1.8548367 insert Xi(1820)0Width:InterpolationMasses 88 1.8597347 insert Xi(1820)0Width:InterpolationMasses 89 1.8646327 insert Xi(1820)0Width:InterpolationMasses 90 1.8695306 insert Xi(1820)0Width:InterpolationMasses 91 1.8744286 insert Xi(1820)0Width:InterpolationMasses 92 1.8793265 insert Xi(1820)0Width:InterpolationMasses 93 1.8842245 insert Xi(1820)0Width:InterpolationMasses 94 1.8891224 insert Xi(1820)0Width:InterpolationMasses 95 1.8940204 insert Xi(1820)0Width:InterpolationMasses 96 1.8989184 insert Xi(1820)0Width:InterpolationMasses 97 1.9038163 insert Xi(1820)0Width:InterpolationMasses 98 1.9087143 insert Xi(1820)0Width:InterpolationMasses 99 1.9136122 insert Xi(1820)0Width:InterpolationMasses 100 1.9185102 insert Xi(1820)0Width:InterpolationMasses 101 1.9234082 insert Xi(1820)0Width:InterpolationMasses 102 1.9283061 insert Xi(1820)0Width:InterpolationMasses 103 1.9332041 insert Xi(1820)0Width:InterpolationMasses 104 1.938102 insert Xi(1820)0Width:InterpolationMasses 105 1.943 insert Xi(1820)0Width:InterpolationMasses 106 1.947898 insert Xi(1820)0Width:InterpolationMasses 107 1.9527959 insert Xi(1820)0Width:InterpolationWidths 0 7.27668e-05 insert Xi(1820)0Width:InterpolationWidths 1 0.00010189018 insert Xi(1820)0Width:InterpolationWidths 2 0.00013570252 insert Xi(1820)0Width:InterpolationWidths 3 0.00017412709 insert Xi(1820)0Width:InterpolationWidths 4 0.00021712668 insert Xi(1820)0Width:InterpolationWidths 5 0.00026469512 insert Xi(1820)0Width:InterpolationWidths 6 0.00031684188 insert Xi(1820)0Width:InterpolationWidths 7 0.00037359399 insert Xi(1820)0Width:InterpolationWidths 8 0.0004349809 insert Xi(1820)0Width:InterpolationWidths 9 0.00050104654 insert Xi(1820)0Width:InterpolationWidths 10 0.00057183838 insert Xi(1820)0Width:InterpolationWidths 11 0.00064740826 insert Xi(1820)0Width:InterpolationWidths 12 0.00072781138 insert Xi(1820)0Width:InterpolationWidths 13 0.00081310559 insert Xi(1820)0Width:InterpolationWidths 14 0.00090333353 insert Xi(1820)0Width:InterpolationWidths 15 0.00099858672 insert Xi(1820)0Width:InterpolationWidths 16 0.0010989414 insert Xi(1820)0Width:InterpolationWidths 17 0.0012044103 insert Xi(1820)0Width:InterpolationWidths 18 0.0013150483 insert Xi(1820)0Width:InterpolationWidths 19 0.0014308941 insert Xi(1820)0Width:InterpolationWidths 20 0.0015519952 insert Xi(1820)0Width:InterpolationWidths 21 0.0016784022 insert Xi(1820)0Width:InterpolationWidths 22 0.0018101675 insert Xi(1820)0Width:InterpolationWidths 23 0.0019473443 insert Xi(1820)0Width:InterpolationWidths 24 0.0020899866 insert Xi(1820)0Width:InterpolationWidths 25 0.0022381488 insert Xi(1820)0Width:InterpolationWidths 26 0.0023918853 insert Xi(1820)0Width:InterpolationWidths 27 0.0025512509 insert Xi(1820)0Width:InterpolationWidths 28 0.0027163003 insert Xi(1820)0Width:InterpolationWidths 29 0.0028870879 insert Xi(1820)0Width:InterpolationWidths 30 0.0030636682 insert Xi(1820)0Width:InterpolationWidths 31 0.0032460956 insert Xi(1820)0Width:InterpolationWidths 32 0.0034344239 insert Xi(1820)0Width:InterpolationWidths 33 0.0036287071 insert Xi(1820)0Width:InterpolationWidths 34 0.0038289987 insert Xi(1820)0Width:InterpolationWidths 35 0.004035352 insert Xi(1820)0Width:InterpolationWidths 36 0.0042478198 insert Xi(1820)0Width:InterpolationWidths 37 0.004466455 insert Xi(1820)0Width:InterpolationWidths 38 0.0046913099 insert Xi(1820)0Width:InterpolationWidths 39 0.0049224365 insert Xi(1820)0Width:InterpolationWidths 40 0.0051598866 insert Xi(1820)0Width:InterpolationWidths 41 0.0054037115 insert Xi(1820)0Width:InterpolationWidths 42 0.0056539625 insert Xi(1820)0Width:InterpolationWidths 43 0.0059106902 insert Xi(1820)0Width:InterpolationWidths 44 0.0061739452 insert Xi(1820)0Width:InterpolationWidths 45 0.0064437775 insert Xi(1820)0Width:InterpolationWidths 46 0.0067202371 insert Xi(1820)0Width:InterpolationWidths 47 0.0070033735 insert Xi(1820)0Width:InterpolationWidths 48 0.0072932358 insert Xi(1820)0Width:InterpolationWidths 49 0.007589873 insert Xi(1820)0Width:InterpolationWidths 50 0.0078933337 insert Xi(1820)0Width:InterpolationWidths 51 0.0082036663 insert Xi(1820)0Width:InterpolationWidths 52 0.0085209188 insert Xi(1820)0Width:InterpolationWidths 53 0.0088451391 insert Xi(1820)0Width:InterpolationWidths 54 5.7913559e-05 insert Xi(1820)0Width:InterpolationWidths 55 7.5589869e-05 insert Xi(1820)0Width:InterpolationWidths 56 9.5503046e-05 insert Xi(1820)0Width:InterpolationWidths 57 0.00011764757 insert Xi(1820)0Width:InterpolationWidths 58 0.00014202441 insert Xi(1820)0Width:InterpolationWidths 59 0.0001686471 insert Xi(1820)0Width:InterpolationWidths 60 0.00019753298 insert Xi(1820)0Width:InterpolationWidths 61 0.00022870336 insert Xi(1820)0Width:InterpolationWidths 62 0.00026218256 insert Xi(1820)0Width:InterpolationWidths 63 0.00029799718 insert Xi(1820)0Width:InterpolationWidths 64 0.00033617555 insert Xi(1820)0Width:InterpolationWidths 65 0.00037674737 insert Xi(1820)0Width:InterpolationWidths 66 0.00041973203 insert Xi(1820)0Width:InterpolationWidths 67 0.00046519507 insert Xi(1820)0Width:InterpolationWidths 68 0.000513131 insert Xi(1820)0Width:InterpolationWidths 69 0.00056356621 insert Xi(1820)0Width:InterpolationWidths 70 0.00061652205 insert Xi(1820)0Width:InterpolationWidths 71 0.00067202317 insert Xi(1820)0Width:InterpolationWidths 72 0.00073009564 insert Xi(1820)0Width:InterpolationWidths 73 0.00079076632 insert Xi(1820)0Width:InterpolationWidths 74 0.00085406257 insert Xi(1820)0Width:InterpolationWidths 75 0.00092001206 insert Xi(1820)0Width:InterpolationWidths 76 0.00098864265 insert Xi(1820)0Width:InterpolationWidths 77 0.0010599823 insert Xi(1820)0Width:InterpolationWidths 78 0.001134059 insert Xi(1820)0Width:InterpolationWidths 79 0.0012109008 insert Xi(1820)0Width:InterpolationWidths 80 0.0012905356 insert Xi(1820)0Width:InterpolationWidths 81 0.0013729912 insert Xi(1820)0Width:InterpolationWidths 82 0.0014582955 insert Xi(1820)0Width:InterpolationWidths 83 0.001546476 insert Xi(1820)0Width:InterpolationWidths 84 0.0016375604 insert Xi(1820)0Width:InterpolationWidths 85 0.0017315758 insert Xi(1820)0Width:InterpolationWidths 86 0.0018285497 insert Xi(1820)0Width:InterpolationWidths 87 0.001928509 insert Xi(1820)0Width:InterpolationWidths 88 0.0020314807 insert Xi(1820)0Width:InterpolationWidths 89 0.0021374914 insert Xi(1820)0Width:InterpolationWidths 90 0.0022465677 insert Xi(1820)0Width:InterpolationWidths 91 0.002358736 insert Xi(1820)0Width:InterpolationWidths 92 0.0024740226 insert Xi(1820)0Width:InterpolationWidths 93 0.0025924535 insert Xi(1820)0Width:InterpolationWidths 94 0.0027140545 insert Xi(1820)0Width:InterpolationWidths 95 0.0028388513 insert Xi(1820)0Width:InterpolationWidths 96 0.0029668695 insert Xi(1820)0Width:InterpolationWidths 97 0.0030981345 insert Xi(1820)0Width:InterpolationWidths 98 0.0032326714 insert Xi(1820)0Width:InterpolationWidths 99 0.0033705053 insert Xi(1820)0Width:InterpolationWidths 100 0.003511661 insert Xi(1820)0Width:InterpolationWidths 101 0.0036561632 insert Xi(1820)0Width:InterpolationWidths 102 0.0038040366 insert Xi(1820)0Width:InterpolationWidths 103 0.0039553055 insert Xi(1820)0Width:InterpolationWidths 104 0.0041099942 insert Xi(1820)0Width:InterpolationWidths 105 0.0042681267 insert Xi(1820)0Width:InterpolationWidths 106 0.0044297195 insert Xi(1820)0Width:InterpolationWidths 107 0.0045948113 insert Xi(1820)0Width:NumberofEntries 0 0 insert Xi(1820)0Width:NumberofEntries 1 0 insert Xi(1820)0Width:NumberofEntries 2 0 insert Xi(1820)0Width:NumberofEntries 3 54 insert Xi(1820)0Width:NumberofEntries 4 108 insert Xi(1820)0Width:NumberofEntries 5 108 insert Xi(1820)0Width:NumberofEntries 6 108 insert Xi(1820)0Width:BaryonDecayers 0 /Herwig/Decays/SU3Strong3 insert Xi(1820)0Width:ModeLocation 0 50 insert Xi(1820)0Width:BaryonDecayers 1 /Herwig/Decays/SU3Strong3 insert Xi(1820)0Width:ModeLocation 1 46 insert Xi(1820)0Width:BaryonDecayers 2 /Herwig/Decays/SU3Strong3 insert Xi(1820)0Width:ModeLocation 2 47 insert Xi(1820)0Width:BaryonDecayers 3 /Herwig/Decays/SU3OctetDecuplet3 insert Xi(1820)0Width:ModeLocation 3 36 insert Xi(1820)0Width:BaryonDecayers 4 /Herwig/Decays/SU3OctetDecuplet3 insert Xi(1820)0Width:ModeLocation 4 33 insert Xi(1820)0Width:BaryonDecayers 5 /Herwig/Decays/SU3Strong3 insert Xi(1820)0Width:ModeLocation 5 48 insert Xi(1820)0Width:BaryonDecayers 6 /Herwig/Decays/SU3Strong3 insert Xi(1820)0Width:ModeLocation 6 49 newdef /Herwig/Particles/Xi(1820)0:Width_generator Xi(1820)0Width newdef /Herwig/Particles/Xibar(1820)0:Width_generator Xi(1820)0Width # create Herwig::BaryonWidthGenerator Xi(1820)-Width newdef Xi(1820)-Width:Particle /Herwig/Particles/Xi(1820)- newdef Xi(1820)-Width:Prefactor 0.999942 newdef Xi(1820)-Width:BRNormalize 1 newdef Xi(1820)-Width:BRMinimum 0.01 newdef Xi(1820)-Width:Points 50 newdef Xi(1820)-Width:InterpolationOrder 1 insert Xi(1820)-Width:MEtype 0 1 insert Xi(1820)-Width:MEtype 1 1 insert Xi(1820)-Width:MEtype 2 1 insert Xi(1820)-Width:MEtype 3 2 insert Xi(1820)-Width:MEtype 4 2 insert Xi(1820)-Width:MEtype 5 1 insert Xi(1820)-Width:MEtype 6 1 insert Xi(1820)-Width:MEcode 0 105 insert Xi(1820)-Width:MEcode 1 105 insert Xi(1820)-Width:MEcode 2 105 insert Xi(1820)-Width:MEcode 3 0 insert Xi(1820)-Width:MEcode 4 0 insert Xi(1820)-Width:MEcode 5 105 insert Xi(1820)-Width:MEcode 6 105 insert Xi(1820)-Width:MEcoupling 0 0.291423 insert Xi(1820)-Width:MEcoupling 1 0.24517 insert Xi(1820)-Width:MEcoupling 2 0.233958 insert Xi(1820)-Width:MEcoupling 3 1.31876 insert Xi(1820)-Width:MEcoupling 4 1.29993 insert Xi(1820)-Width:MEcoupling 5 0.0596157 insert Xi(1820)-Width:MEcoupling 6 0.0589363 insert Xi(1820)-Width:ModeOn 0 1 insert Xi(1820)-Width:ModeOn 1 1 insert Xi(1820)-Width:ModeOn 2 1 insert Xi(1820)-Width:ModeOn 3 1 insert Xi(1820)-Width:ModeOn 4 1 insert Xi(1820)-Width:ModeOn 5 1 insert Xi(1820)-Width:ModeOn 6 1 insert Xi(1820)-Width:MinimumMasses 0 1.60936 insert Xi(1820)-Width:MinimumMasses 1 1.6951 insert Xi(1820)-Width:MinimumMasses 2 1.68632 insert Xi(1820)-Width:MinimumMasses 3 1.59998 insert Xi(1820)-Width:MinimumMasses 4 1.60137 insert Xi(1820)-Width:MinimumMasses 5 1.45629 insert Xi(1820)-Width:MinimumMasses 6 1.4544 insert Xi(1820)-Width:MEmass1 0 1.11568 insert Xi(1820)-Width:MEmass1 1 1.19745 insert Xi(1820)-Width:MEmass1 2 1.19264 insert Xi(1820)-Width:MEmass1 3 1.535 insert Xi(1820)-Width:MEmass1 4 1.5318 insert Xi(1820)-Width:MEmass1 5 1.32131 insert Xi(1820)-Width:MEmass1 6 1.31483 insert Xi(1820)-Width:MEmass2 0 0.493677 insert Xi(1820)-Width:MEmass2 1 0.497648 insert Xi(1820)-Width:MEmass2 2 0.493677 insert Xi(1820)-Width:MEmass2 3 0.134978 insert Xi(1820)-Width:MEmass2 4 0.13957 insert Xi(1820)-Width:MEmass2 5 0.134978 insert Xi(1820)-Width:MEmass2 6 0.13957 insert Xi(1820)-Width:DecayModes 0 Xi(1820)-->Lambda0,K-; insert Xi(1820)-Width:DecayModes 1 Xi(1820)-->Sigma-,Kbar0; insert Xi(1820)-Width:DecayModes 2 Xi(1820)-->Sigma0,K-; insert Xi(1820)-Width:DecayModes 3 Xi(1820)-->Xi*-,pi0; insert Xi(1820)-Width:DecayModes 4 Xi(1820)-->Xi*0,pi-; insert Xi(1820)-Width:DecayModes 5 Xi(1820)-->Xi-,pi0; insert Xi(1820)-Width:DecayModes 6 Xi(1820)-->Xi0,pi-; insert Xi(1820)-Width:InterpolationMasses 0 1.6932041 insert Xi(1820)-Width:InterpolationMasses 1 1.698102 insert Xi(1820)-Width:InterpolationMasses 2 1.703 insert Xi(1820)-Width:InterpolationMasses 3 1.707898 insert Xi(1820)-Width:InterpolationMasses 4 1.7127959 insert Xi(1820)-Width:InterpolationMasses 5 1.7176939 insert Xi(1820)-Width:InterpolationMasses 6 1.7225918 insert Xi(1820)-Width:InterpolationMasses 7 1.7274898 insert Xi(1820)-Width:InterpolationMasses 8 1.7323878 insert Xi(1820)-Width:InterpolationMasses 9 1.7372857 insert Xi(1820)-Width:InterpolationMasses 10 1.7421837 insert Xi(1820)-Width:InterpolationMasses 11 1.7470816 insert Xi(1820)-Width:InterpolationMasses 12 1.7519796 insert Xi(1820)-Width:InterpolationMasses 13 1.7568776 insert Xi(1820)-Width:InterpolationMasses 14 1.7617755 insert Xi(1820)-Width:InterpolationMasses 15 1.7666735 insert Xi(1820)-Width:InterpolationMasses 16 1.7715714 insert Xi(1820)-Width:InterpolationMasses 17 1.7764694 insert Xi(1820)-Width:InterpolationMasses 18 1.7813673 insert Xi(1820)-Width:InterpolationMasses 19 1.7862653 insert Xi(1820)-Width:InterpolationMasses 20 1.7911633 insert Xi(1820)-Width:InterpolationMasses 21 1.7960612 insert Xi(1820)-Width:InterpolationMasses 22 1.8009592 insert Xi(1820)-Width:InterpolationMasses 23 1.8058571 insert Xi(1820)-Width:InterpolationMasses 24 1.8107551 insert Xi(1820)-Width:InterpolationMasses 25 1.8156531 insert Xi(1820)-Width:InterpolationMasses 26 1.820551 insert Xi(1820)-Width:InterpolationMasses 27 1.825449 insert Xi(1820)-Width:InterpolationMasses 28 1.8303469 insert Xi(1820)-Width:InterpolationMasses 29 1.8352449 insert Xi(1820)-Width:InterpolationMasses 30 1.8401429 insert Xi(1820)-Width:InterpolationMasses 31 1.8450408 insert Xi(1820)-Width:InterpolationMasses 32 1.8499388 insert Xi(1820)-Width:InterpolationMasses 33 1.8548367 insert Xi(1820)-Width:InterpolationMasses 34 1.8597347 insert Xi(1820)-Width:InterpolationMasses 35 1.8646327 insert Xi(1820)-Width:InterpolationMasses 36 1.8695306 insert Xi(1820)-Width:InterpolationMasses 37 1.8744286 insert Xi(1820)-Width:InterpolationMasses 38 1.8793265 insert Xi(1820)-Width:InterpolationMasses 39 1.8842245 insert Xi(1820)-Width:InterpolationMasses 40 1.8891224 insert Xi(1820)-Width:InterpolationMasses 41 1.8940204 insert Xi(1820)-Width:InterpolationMasses 42 1.8989184 insert Xi(1820)-Width:InterpolationMasses 43 1.9038163 insert Xi(1820)-Width:InterpolationMasses 44 1.9087143 insert Xi(1820)-Width:InterpolationMasses 45 1.9136122 insert Xi(1820)-Width:InterpolationMasses 46 1.9185102 insert Xi(1820)-Width:InterpolationMasses 47 1.9234082 insert Xi(1820)-Width:InterpolationMasses 48 1.9283061 insert Xi(1820)-Width:InterpolationMasses 49 1.9332041 insert Xi(1820)-Width:InterpolationMasses 50 1.938102 insert Xi(1820)-Width:InterpolationMasses 51 1.943 insert Xi(1820)-Width:InterpolationMasses 52 1.947898 insert Xi(1820)-Width:InterpolationMasses 53 1.9527959 insert Xi(1820)-Width:InterpolationMasses 54 1.6932041 insert Xi(1820)-Width:InterpolationMasses 55 1.698102 insert Xi(1820)-Width:InterpolationMasses 56 1.703 insert Xi(1820)-Width:InterpolationMasses 57 1.707898 insert Xi(1820)-Width:InterpolationMasses 58 1.7127959 insert Xi(1820)-Width:InterpolationMasses 59 1.7176939 insert Xi(1820)-Width:InterpolationMasses 60 1.7225918 insert Xi(1820)-Width:InterpolationMasses 61 1.7274898 insert Xi(1820)-Width:InterpolationMasses 62 1.7323878 insert Xi(1820)-Width:InterpolationMasses 63 1.7372857 insert Xi(1820)-Width:InterpolationMasses 64 1.7421837 insert Xi(1820)-Width:InterpolationMasses 65 1.7470816 insert Xi(1820)-Width:InterpolationMasses 66 1.7519796 insert Xi(1820)-Width:InterpolationMasses 67 1.7568776 insert Xi(1820)-Width:InterpolationMasses 68 1.7617755 insert Xi(1820)-Width:InterpolationMasses 69 1.7666735 insert Xi(1820)-Width:InterpolationMasses 70 1.7715714 insert Xi(1820)-Width:InterpolationMasses 71 1.7764694 insert Xi(1820)-Width:InterpolationMasses 72 1.7813673 insert Xi(1820)-Width:InterpolationMasses 73 1.7862653 insert Xi(1820)-Width:InterpolationMasses 74 1.7911633 insert Xi(1820)-Width:InterpolationMasses 75 1.7960612 insert Xi(1820)-Width:InterpolationMasses 76 1.8009592 insert Xi(1820)-Width:InterpolationMasses 77 1.8058571 insert Xi(1820)-Width:InterpolationMasses 78 1.8107551 insert Xi(1820)-Width:InterpolationMasses 79 1.8156531 insert Xi(1820)-Width:InterpolationMasses 80 1.820551 insert Xi(1820)-Width:InterpolationMasses 81 1.825449 insert Xi(1820)-Width:InterpolationMasses 82 1.8303469 insert Xi(1820)-Width:InterpolationMasses 83 1.8352449 insert Xi(1820)-Width:InterpolationMasses 84 1.8401429 insert Xi(1820)-Width:InterpolationMasses 85 1.8450408 insert Xi(1820)-Width:InterpolationMasses 86 1.8499388 insert Xi(1820)-Width:InterpolationMasses 87 1.8548367 insert Xi(1820)-Width:InterpolationMasses 88 1.8597347 insert Xi(1820)-Width:InterpolationMasses 89 1.8646327 insert Xi(1820)-Width:InterpolationMasses 90 1.8695306 insert Xi(1820)-Width:InterpolationMasses 91 1.8744286 insert Xi(1820)-Width:InterpolationMasses 92 1.8793265 insert Xi(1820)-Width:InterpolationMasses 93 1.8842245 insert Xi(1820)-Width:InterpolationMasses 94 1.8891224 insert Xi(1820)-Width:InterpolationMasses 95 1.8940204 insert Xi(1820)-Width:InterpolationMasses 96 1.8989184 insert Xi(1820)-Width:InterpolationMasses 97 1.9038163 insert Xi(1820)-Width:InterpolationMasses 98 1.9087143 insert Xi(1820)-Width:InterpolationMasses 99 1.9136122 insert Xi(1820)-Width:InterpolationMasses 100 1.9185102 insert Xi(1820)-Width:InterpolationMasses 101 1.9234082 insert Xi(1820)-Width:InterpolationMasses 102 1.9283061 insert Xi(1820)-Width:InterpolationMasses 103 1.9332041 insert Xi(1820)-Width:InterpolationMasses 104 1.938102 insert Xi(1820)-Width:InterpolationMasses 105 1.943 insert Xi(1820)-Width:InterpolationMasses 106 1.947898 insert Xi(1820)-Width:InterpolationMasses 107 1.9527959 insert Xi(1820)-Width:InterpolationWidths 0 4.7931263e-05 insert Xi(1820)-Width:InterpolationWidths 1 6.4046524e-05 insert Xi(1820)-Width:InterpolationWidths 2 8.2397656e-05 insert Xi(1820)-Width:InterpolationWidths 3 0.00010296928 insert Xi(1820)-Width:InterpolationWidths 4 0.00012576097 insert Xi(1820)-Width:InterpolationWidths 5 0.00015077986 insert Xi(1820)-Width:InterpolationWidths 6 0.00017804143 insert Xi(1820)-Width:InterpolationWidths 7 0.00020756236 insert Xi(1820)-Width:InterpolationWidths 8 0.0002393662 insert Xi(1820)-Width:InterpolationWidths 9 0.00027347816 insert Xi(1820)-Width:InterpolationWidths 10 0.00030992547 insert Xi(1820)-Width:InterpolationWidths 11 0.00034873697 insert Xi(1820)-Width:InterpolationWidths 12 0.00038994271 insert Xi(1820)-Width:InterpolationWidths 13 0.00043356556 insert Xi(1820)-Width:InterpolationWidths 14 0.00047965136 insert Xi(1820)-Width:InterpolationWidths 15 0.00052823873 insert Xi(1820)-Width:InterpolationWidths 16 0.00057933675 insert Xi(1820)-Width:InterpolationWidths 17 0.00063297441 insert Xi(1820)-Width:InterpolationWidths 18 0.00068917187 insert Xi(1820)-Width:InterpolationWidths 19 0.00074795383 insert Xi(1820)-Width:InterpolationWidths 20 0.00080934646 insert Xi(1820)-Width:InterpolationWidths 21 0.00087337672 insert Xi(1820)-Width:InterpolationWidths 22 0.00094007205 insert Xi(1820)-Width:InterpolationWidths 23 0.0010094601 insert Xi(1820)-Width:InterpolationWidths 24 0.0010815688 insert Xi(1820)-Width:InterpolationWidths 25 0.0011564261 insert Xi(1820)-Width:InterpolationWidths 26 0.0012340599 insert Xi(1820)-Width:InterpolationWidths 27 0.0013144981 insert Xi(1820)-Width:InterpolationWidths 28 0.0013977685 insert Xi(1820)-Width:InterpolationWidths 29 0.001483899 insert Xi(1820)-Width:InterpolationWidths 30 0.0015729172 insert Xi(1820)-Width:InterpolationWidths 31 0.0016648506 insert Xi(1820)-Width:InterpolationWidths 32 0.0017597265 insert Xi(1820)-Width:InterpolationWidths 33 0.0018575723 insert Xi(1820)-Width:InterpolationWidths 34 0.001958415 insert Xi(1820)-Width:InterpolationWidths 35 0.0020622815 insert Xi(1820)-Width:InterpolationWidths 36 0.0021691985 insert Xi(1820)-Width:InterpolationWidths 37 0.0022791928 insert Xi(1820)-Width:InterpolationWidths 38 0.0023922906 insert Xi(1820)-Width:InterpolationWidths 39 0.0025085182 insert Xi(1820)-Width:InterpolationWidths 40 0.0026279017 insert Xi(1820)-Width:InterpolationWidths 41 0.0027504669 insert Xi(1820)-Width:InterpolationWidths 42 0.0028762397 insert Xi(1820)-Width:InterpolationWidths 43 0.0030052456 insert Xi(1820)-Width:InterpolationWidths 44 0.0031375099 insert Xi(1820)-Width:InterpolationWidths 45 0.0032730579 insert Xi(1820)-Width:InterpolationWidths 46 0.0034119146 insert Xi(1820)-Width:InterpolationWidths 47 0.0035541051 insert Xi(1820)-Width:InterpolationWidths 48 0.0036996539 insert Xi(1820)-Width:InterpolationWidths 49 0.0038485857 insert Xi(1820)-Width:InterpolationWidths 50 0.0040009249 insert Xi(1820)-Width:InterpolationWidths 51 0.0041566958 insert Xi(1820)-Width:InterpolationWidths 52 0.0043159226 insert Xi(1820)-Width:InterpolationWidths 53 0.0044786292 insert Xi(1820)-Width:InterpolationWidths 54 9.0487086e-05 insert Xi(1820)-Width:InterpolationWidths 55 0.0001228696 insert Xi(1820)-Width:InterpolationWidths 56 0.00015990762 insert Xi(1820)-Width:InterpolationWidths 57 0.00020155611 insert Xi(1820)-Width:InterpolationWidths 58 0.00024779829 insert Xi(1820)-Width:InterpolationWidths 59 0.00029863083 insert Xi(1820)-Width:InterpolationWidths 60 0.00035407661 insert Xi(1820)-Width:InterpolationWidths 61 0.00041416646 insert Xi(1820)-Width:InterpolationWidths 62 0.00047893961 insert Xi(1820)-Width:InterpolationWidths 63 0.00054844164 insert Xi(1820)-Width:InterpolationWidths 64 0.00062272297 insert Xi(1820)-Width:InterpolationWidths 65 0.00070183775 insert Xi(1820)-Width:InterpolationWidths 66 0.00078584303 insert Xi(1820)-Width:InterpolationWidths 67 0.00087477416 insert Xi(1820)-Width:InterpolationWidths 68 0.00096876413 insert Xi(1820)-Width:InterpolationWidths 69 0.0010677942 insert Xi(1820)-Width:InterpolationWidths 70 0.0011719148 insert Xi(1820)-Width:InterpolationWidths 71 0.0012811667 insert Xi(1820)-Width:InterpolationWidths 72 0.0013955972 insert Xi(1820)-Width:InterpolationWidths 73 0.0015152568 insert Xi(1820)-Width:InterpolationWidths 74 0.0016401973 insert Xi(1820)-Width:InterpolationWidths 75 0.0017704719 insert Xi(1820)-Width:InterpolationWidths 76 0.0019061343 insert Xi(1820)-Width:InterpolationWidths 77 0.002047239 insert Xi(1820)-Width:InterpolationWidths 78 0.0021938403 insert Xi(1820)-Width:InterpolationWidths 79 0.0023459931 insert Xi(1820)-Width:InterpolationWidths 80 0.0025037521 insert Xi(1820)-Width:InterpolationWidths 81 0.0026671719 insert Xi(1820)-Width:InterpolationWidths 82 0.0028363072 insert Xi(1820)-Width:InterpolationWidths 83 0.0030112124 insert Xi(1820)-Width:InterpolationWidths 84 0.0031919418 insert Xi(1820)-Width:InterpolationWidths 85 0.0033785493 insert Xi(1820)-Width:InterpolationWidths 86 0.0035710889 insert Xi(1820)-Width:InterpolationWidths 87 0.0037696139 insert Xi(1820)-Width:InterpolationWidths 88 0.0039741777 insert Xi(1820)-Width:InterpolationWidths 89 0.0041848331 insert Xi(1820)-Width:InterpolationWidths 90 0.0044016328 insert Xi(1820)-Width:InterpolationWidths 91 0.0046246291 insert Xi(1820)-Width:InterpolationWidths 92 0.004853874 insert Xi(1820)-Width:InterpolationWidths 93 0.0050894191 insert Xi(1820)-Width:InterpolationWidths 94 0.005331316 insert Xi(1820)-Width:InterpolationWidths 95 0.0055796155 insert Xi(1820)-Width:InterpolationWidths 96 0.0058343685 insert Xi(1820)-Width:InterpolationWidths 97 0.0060956252 insert Xi(1820)-Width:InterpolationWidths 98 0.0063634359 insert Xi(1820)-Width:InterpolationWidths 99 0.0066378503 insert Xi(1820)-Width:InterpolationWidths 100 0.0069189178 insert Xi(1820)-Width:InterpolationWidths 101 0.0072066876 insert Xi(1820)-Width:InterpolationWidths 102 0.0075012086 insert Xi(1820)-Width:InterpolationWidths 103 0.0078025293 insert Xi(1820)-Width:InterpolationWidths 104 0.0081106981 insert Xi(1820)-Width:InterpolationWidths 105 0.0084257628 insert Xi(1820)-Width:InterpolationWidths 106 0.0087477713 insert Xi(1820)-Width:InterpolationWidths 107 0.0090771619 insert Xi(1820)-Width:NumberofEntries 0 0 insert Xi(1820)-Width:NumberofEntries 1 0 insert Xi(1820)-Width:NumberofEntries 2 0 insert Xi(1820)-Width:NumberofEntries 3 54 insert Xi(1820)-Width:NumberofEntries 4 108 insert Xi(1820)-Width:NumberofEntries 5 108 insert Xi(1820)-Width:NumberofEntries 6 108 insert Xi(1820)-Width:BaryonDecayers 0 /Herwig/Decays/SU3Strong3 insert Xi(1820)-Width:ModeLocation 0 44 insert Xi(1820)-Width:BaryonDecayers 1 /Herwig/Decays/SU3Strong3 insert Xi(1820)-Width:ModeLocation 1 40 insert Xi(1820)-Width:BaryonDecayers 2 /Herwig/Decays/SU3Strong3 insert Xi(1820)-Width:ModeLocation 2 41 insert Xi(1820)-Width:BaryonDecayers 3 /Herwig/Decays/SU3OctetDecuplet3 insert Xi(1820)-Width:ModeLocation 3 37 insert Xi(1820)-Width:BaryonDecayers 4 /Herwig/Decays/SU3OctetDecuplet3 insert Xi(1820)-Width:ModeLocation 4 32 insert Xi(1820)-Width:BaryonDecayers 5 /Herwig/Decays/SU3Strong3 insert Xi(1820)-Width:ModeLocation 5 43 insert Xi(1820)-Width:BaryonDecayers 6 /Herwig/Decays/SU3Strong3 insert Xi(1820)-Width:ModeLocation 6 42 newdef /Herwig/Particles/Xi(1820)-:Width_generator Xi(1820)-Width newdef /Herwig/Particles/Xibar(1820)+:Width_generator Xi(1820)-Width # create Herwig::BaryonWidthGenerator Lambda(1405)0Width newdef Lambda(1405)0Width:Particle /Herwig/Particles/Lambda(1405)0 newdef Lambda(1405)0Width:Prefactor 1 newdef Lambda(1405)0Width:BRNormalize 1 newdef Lambda(1405)0Width:BRMinimum 0.01 newdef Lambda(1405)0Width:Points 50 newdef Lambda(1405)0Width:InterpolationOrder 1 insert Lambda(1405)0Width:MEtype 0 1 insert Lambda(1405)0Width:MEtype 1 1 insert Lambda(1405)0Width:MEtype 2 1 insert Lambda(1405)0Width:MEcode 0 101 insert Lambda(1405)0Width:MEcode 1 101 insert Lambda(1405)0Width:MEcode 2 101 insert Lambda(1405)0Width:MEcoupling 0 0.982943 insert Lambda(1405)0Width:MEcoupling 1 1.0508 insert Lambda(1405)0Width:MEcoupling 2 0.997318 insert Lambda(1405)0Width:ModeOn 0 1 insert Lambda(1405)0Width:ModeOn 1 1 insert Lambda(1405)0Width:ModeOn 2 1 insert Lambda(1405)0Width:MinimumMasses 0 1.32894 insert Lambda(1405)0Width:MinimumMasses 1 1.33702 insert Lambda(1405)0Width:MinimumMasses 2 1.32762 insert Lambda(1405)0Width:MEmass1 0 1.18937 insert Lambda(1405)0Width:MEmass1 1 1.19745 insert Lambda(1405)0Width:MEmass1 2 1.19264 insert Lambda(1405)0Width:MEmass2 0 0.13957 insert Lambda(1405)0Width:MEmass2 1 0.13957 insert Lambda(1405)0Width:MEmass2 2 0.134978 insert Lambda(1405)0Width:DecayModes 0 Lambda(1405)0->Sigma+,pi-; insert Lambda(1405)0Width:DecayModes 1 Lambda(1405)0->Sigma-,pi+; insert Lambda(1405)0Width:DecayModes 2 Lambda(1405)0->Sigma0,pi0; insert Lambda(1405)0Width:NumberofEntries 0 0 insert Lambda(1405)0Width:NumberofEntries 1 0 insert Lambda(1405)0Width:NumberofEntries 2 0 insert Lambda(1405)0Width:BaryonDecayers 0 /Herwig/Decays/SU3SingletOctet1 insert Lambda(1405)0Width:ModeLocation 0 1 insert Lambda(1405)0Width:BaryonDecayers 1 /Herwig/Decays/SU3SingletOctet1 insert Lambda(1405)0Width:ModeLocation 1 2 insert Lambda(1405)0Width:BaryonDecayers 2 /Herwig/Decays/SU3SingletOctet1 insert Lambda(1405)0Width:ModeLocation 2 0 newdef /Herwig/Particles/Lambda(1405)0:Width_generator Lambda(1405)0Width newdef /Herwig/Particles/Lambdabar(1405)0:Width_generator Lambda(1405)0Width # create Herwig::BaryonWidthGenerator Lambda(1520)0Width newdef Lambda(1520)0Width:Particle /Herwig/Particles/Lambda(1520)0 newdef Lambda(1520)0Width:Prefactor 1.0155 newdef Lambda(1520)0Width:BRNormalize 1 newdef Lambda(1520)0Width:BRMinimum 0.01 newdef Lambda(1520)0Width:Points 50 newdef Lambda(1520)0Width:InterpolationOrder 1 insert Lambda(1520)0Width:MEtype 0 1 insert Lambda(1520)0Width:MEtype 1 0 insert Lambda(1520)0Width:MEtype 2 0 insert Lambda(1520)0Width:MEtype 3 0 insert Lambda(1520)0Width:MEtype 4 0 insert Lambda(1520)0Width:MEtype 5 0 insert Lambda(1520)0Width:MEtype 6 1 insert Lambda(1520)0Width:MEtype 7 1 insert Lambda(1520)0Width:MEtype 8 1 insert Lambda(1520)0Width:MEtype 9 1 insert Lambda(1520)0Width:MEtype 10 1 insert Lambda(1520)0Width:MEtype 11 1 insert Lambda(1520)0Width:MEcode 0 106 insert Lambda(1520)0Width:MEcode 1 0 insert Lambda(1520)0Width:MEcode 2 0 insert Lambda(1520)0Width:MEcode 3 0 insert Lambda(1520)0Width:MEcode 4 0 insert Lambda(1520)0Width:MEcode 5 0 insert Lambda(1520)0Width:MEcode 6 105 insert Lambda(1520)0Width:MEcode 7 105 insert Lambda(1520)0Width:MEcode 8 106 insert Lambda(1520)0Width:MEcode 9 105 insert Lambda(1520)0Width:MEcode 10 105 insert Lambda(1520)0Width:MEcode 11 105 insert Lambda(1520)0Width:MEcoupling 0 0.852428 insert Lambda(1520)0Width:MEcoupling 1 0.014638 insert Lambda(1520)0Width:MEcoupling 2 0.007319 insert Lambda(1520)0Width:MEcoupling 3 0.02878 insert Lambda(1520)0Width:MEcoupling 4 0.02878 insert Lambda(1520)0Width:MEcoupling 5 0.02878 insert Lambda(1520)0Width:MEcoupling 6 0.989068 insert Lambda(1520)0Width:MEcoupling 7 0.920947 insert Lambda(1520)0Width:MEcoupling 8 0.999728 insert Lambda(1520)0Width:MEcoupling 9 0.930696 insert Lambda(1520)0Width:MEcoupling 10 1.40648 insert Lambda(1520)0Width:MEcoupling 11 1.30604 insert Lambda(1520)0Width:ModeOn 0 0 insert Lambda(1520)0Width:ModeOn 1 1 insert Lambda(1520)0Width:ModeOn 2 0 insert Lambda(1520)0Width:ModeOn 3 1 insert Lambda(1520)0Width:ModeOn 4 1 insert Lambda(1520)0Width:ModeOn 5 1 insert Lambda(1520)0Width:ModeOn 6 1 insert Lambda(1520)0Width:ModeOn 7 1 insert Lambda(1520)0Width:ModeOn 8 1 insert Lambda(1520)0Width:ModeOn 9 1 insert Lambda(1520)0Width:ModeOn 10 1 insert Lambda(1520)0Width:ModeOn 11 1 insert Lambda(1520)0Width:MinimumMasses 0 1.11568 insert Lambda(1520)0Width:MinimumMasses 1 1.39482 insert Lambda(1520)0Width:MinimumMasses 2 1.38564 insert Lambda(1520)0Width:MinimumMasses 3 1.40677 insert Lambda(1520)0Width:MinimumMasses 4 1.40237 insert Lambda(1520)0Width:MinimumMasses 5 1.39868 insert Lambda(1520)0Width:MinimumMasses 6 1.33702 insert Lambda(1520)0Width:MinimumMasses 7 1.32894 insert Lambda(1520)0Width:MinimumMasses 8 1.19264 insert Lambda(1520)0Width:MinimumMasses 9 1.32762 insert Lambda(1520)0Width:MinimumMasses 10 1.43721 insert Lambda(1520)0Width:MinimumMasses 11 1.43195 insert Lambda(1520)0Width:MEmass1 0 1.11568 insert Lambda(1520)0Width:MEmass1 1 0 insert Lambda(1520)0Width:MEmass1 2 0 insert Lambda(1520)0Width:MEmass1 3 0 insert Lambda(1520)0Width:MEmass1 4 0 insert Lambda(1520)0Width:MEmass1 5 0 insert Lambda(1520)0Width:MEmass1 6 1.19745 insert Lambda(1520)0Width:MEmass1 7 1.18937 insert Lambda(1520)0Width:MEmass1 8 1.19264 insert Lambda(1520)0Width:MEmass1 9 1.19264 insert Lambda(1520)0Width:MEmass1 10 0.939565 insert Lambda(1520)0Width:MEmass1 11 0.938272 insert Lambda(1520)0Width:MEmass2 0 0 insert Lambda(1520)0Width:MEmass2 1 0 insert Lambda(1520)0Width:MEmass2 2 0 insert Lambda(1520)0Width:MEmass2 3 0 insert Lambda(1520)0Width:MEmass2 4 0 insert Lambda(1520)0Width:MEmass2 5 0 insert Lambda(1520)0Width:MEmass2 6 0.13957 insert Lambda(1520)0Width:MEmass2 7 0.13957 insert Lambda(1520)0Width:MEmass2 8 0 insert Lambda(1520)0Width:MEmass2 9 0.134978 insert Lambda(1520)0Width:MEmass2 10 0.497648 insert Lambda(1520)0Width:MEmass2 11 0.493677 insert Lambda(1520)0Width:DecayModes 0 Lambda(1520)0->Lambda0,gamma; insert Lambda(1520)0Width:DecayModes 1 Lambda(1520)0->Lambda0,pi+,pi-; insert Lambda(1520)0Width:DecayModes 2 Lambda(1520)0->Lambda0,pi0,pi0; insert Lambda(1520)0Width:DecayModes 3 Lambda(1520)0->Sigma*-,pi+; insert Lambda(1520)0Width:DecayModes 4 Lambda(1520)0->Sigma*+,pi-; insert Lambda(1520)0Width:DecayModes 5 Lambda(1520)0->Sigma*0,pi0; insert Lambda(1520)0Width:DecayModes 6 Lambda(1520)0->Sigma-,pi+; insert Lambda(1520)0Width:DecayModes 7 Lambda(1520)0->Sigma+,pi-; insert Lambda(1520)0Width:DecayModes 8 Lambda(1520)0->Sigma0,gamma; insert Lambda(1520)0Width:DecayModes 9 Lambda(1520)0->Sigma0,pi0; insert Lambda(1520)0Width:DecayModes 10 Lambda(1520)0->n0,Kbar0; insert Lambda(1520)0Width:DecayModes 11 Lambda(1520)0->p+,K-; insert Lambda(1520)0Width:NumberofEntries 0 0 insert Lambda(1520)0Width:NumberofEntries 1 0 insert Lambda(1520)0Width:NumberofEntries 2 0 insert Lambda(1520)0Width:NumberofEntries 3 0 insert Lambda(1520)0Width:NumberofEntries 4 0 insert Lambda(1520)0Width:NumberofEntries 5 0 insert Lambda(1520)0Width:NumberofEntries 6 0 insert Lambda(1520)0Width:NumberofEntries 7 0 insert Lambda(1520)0Width:NumberofEntries 8 0 insert Lambda(1520)0Width:NumberofEntries 9 0 insert Lambda(1520)0Width:NumberofEntries 10 0 insert Lambda(1520)0Width:NumberofEntries 11 0 insert Lambda(1520)0Width:BaryonDecayers 0 /Herwig/Decays/SU3Gamma5 insert Lambda(1520)0Width:ModeLocation 0 1 insert Lambda(1520)0Width:BaryonDecayers 1 NULL insert Lambda(1520)0Width:ModeLocation 1 -1 insert Lambda(1520)0Width:BaryonDecayers 2 NULL insert Lambda(1520)0Width:ModeLocation 2 -1 insert Lambda(1520)0Width:BaryonDecayers 3 NULL insert Lambda(1520)0Width:ModeLocation 3 -1 insert Lambda(1520)0Width:BaryonDecayers 4 NULL insert Lambda(1520)0Width:ModeLocation 4 -1 insert Lambda(1520)0Width:BaryonDecayers 5 NULL insert Lambda(1520)0Width:ModeLocation 5 -1 insert Lambda(1520)0Width:BaryonDecayers 6 /Herwig/Decays/SU3SingletOctet2 insert Lambda(1520)0Width:ModeLocation 6 2 insert Lambda(1520)0Width:BaryonDecayers 7 /Herwig/Decays/SU3SingletOctet2 insert Lambda(1520)0Width:ModeLocation 7 1 insert Lambda(1520)0Width:BaryonDecayers 8 /Herwig/Decays/SU3Gamma5 insert Lambda(1520)0Width:ModeLocation 8 0 insert Lambda(1520)0Width:BaryonDecayers 9 /Herwig/Decays/SU3SingletOctet2 insert Lambda(1520)0Width:ModeLocation 9 0 insert Lambda(1520)0Width:BaryonDecayers 10 /Herwig/Decays/SU3SingletOctet2 insert Lambda(1520)0Width:ModeLocation 10 5 insert Lambda(1520)0Width:BaryonDecayers 11 /Herwig/Decays/SU3SingletOctet2 insert Lambda(1520)0Width:ModeLocation 11 4 newdef /Herwig/Particles/Lambda(1520)0:Width_generator Lambda(1520)0Width newdef /Herwig/Particles/Lambdabar(1520)0:Width_generator Lambda(1520)0Width # create Herwig::GenericWidthGenerator f0(1500)Width newdef f0(1500)Width:Particle /Herwig/Particles/f_0(1500) newdef f0(1500)Width:Prefactor 0.999675 newdef f0(1500)Width:BRNormalize 1 newdef f0(1500)Width:BRMinimum 0.01 newdef f0(1500)Width:Points 50 newdef f0(1500)Width:InterpolationOrder 1 insert f0(1500)Width:MEtype 0 1 insert f0(1500)Width:MEtype 1 1 insert f0(1500)Width:MEtype 2 2 insert f0(1500)Width:MEtype 3 2 insert f0(1500)Width:MEtype 4 2 insert f0(1500)Width:MEtype 5 2 insert f0(1500)Width:MEtype 6 2 insert f0(1500)Width:MEtype 7 2 insert f0(1500)Width:MEtype 8 2 insert f0(1500)Width:MEtype 9 2 insert f0(1500)Width:MEtype 10 1 insert f0(1500)Width:MEtype 11 1 insert f0(1500)Width:MEtype 12 2 insert f0(1500)Width:MEtype 13 2 insert f0(1500)Width:MEtype 14 2 insert f0(1500)Width:MEcode 0 6 insert f0(1500)Width:MEcode 1 6 insert f0(1500)Width:MEcode 2 0 insert f0(1500)Width:MEcode 3 0 insert f0(1500)Width:MEcode 4 0 insert f0(1500)Width:MEcode 5 0 insert f0(1500)Width:MEcode 6 0 insert f0(1500)Width:MEcode 7 0 insert f0(1500)Width:MEcode 8 0 insert f0(1500)Width:MEcode 9 0 insert f0(1500)Width:MEcode 10 6 insert f0(1500)Width:MEcode 11 6 insert f0(1500)Width:MEcode 12 0 insert f0(1500)Width:MEcode 13 0 insert f0(1500)Width:MEcode 14 0 insert f0(1500)Width:MEcoupling 0 0.4549 insert f0(1500)Width:MEcoupling 1 0.456292 insert f0(1500)Width:MEcoupling 2 1.00989 insert f0(1500)Width:MEcoupling 3 1.00989 insert f0(1500)Width:MEcoupling 4 0.991707 insert f0(1500)Width:MEcoupling 5 0.45495 insert f0(1500)Width:MEcoupling 6 0.999025 insert f0(1500)Width:MEcoupling 7 1.00104 insert f0(1500)Width:MEcoupling 8 1.00104 insert f0(1500)Width:MEcoupling 9 0.98354 insert f0(1500)Width:MEcoupling 10 0.92779 insert f0(1500)Width:MEcoupling 11 0.655668 insert f0(1500)Width:MEcoupling 12 0.998459 insert f0(1500)Width:MEcoupling 13 1.00357 insert f0(1500)Width:MEcoupling 14 1.00127 insert f0(1500)Width:ModeOn 0 1 insert f0(1500)Width:ModeOn 1 1 insert f0(1500)Width:ModeOn 2 1 insert f0(1500)Width:ModeOn 3 1 insert f0(1500)Width:ModeOn 4 1 insert f0(1500)Width:ModeOn 5 1 insert f0(1500)Width:ModeOn 6 1 insert f0(1500)Width:ModeOn 7 1 insert f0(1500)Width:ModeOn 8 1 insert f0(1500)Width:ModeOn 9 1 insert f0(1500)Width:ModeOn 10 1 insert f0(1500)Width:ModeOn 11 1 insert f0(1500)Width:ModeOn 12 1 insert f0(1500)Width:ModeOn 13 1 insert f0(1500)Width:ModeOn 14 1 insert f0(1500)Width:MinimumMasses 0 0.987354 insert f0(1500)Width:MinimumMasses 1 0.995296 insert f0(1500)Width:MinimumMasses 2 0.81957 insert f0(1500)Width:MinimumMasses 3 0.81957 insert f0(1500)Width:MinimumMasses 4 0.814978 insert f0(1500)Width:MinimumMasses 5 1.50325 insert f0(1500)Width:MinimumMasses 6 1.09499 insert f0(1500)Width:MinimumMasses 7 1.03957 insert f0(1500)Width:MinimumMasses 8 1.03957 insert f0(1500)Width:MinimumMasses 9 1.03498 insert f0(1500)Width:MinimumMasses 10 0.27914 insert f0(1500)Width:MinimumMasses 11 0.269955 insert f0(1500)Width:MinimumMasses 12 0.751 insert f0(1500)Width:MinimumMasses 13 0.751 insert f0(1500)Width:MinimumMasses 14 0.62 insert f0(1500)Width:MEmass1 0 0.493677 insert f0(1500)Width:MEmass1 1 0.497648 insert f0(1500)Width:MEmass1 2 0.13957 insert f0(1500)Width:MEmass1 3 0.13957 insert f0(1500)Width:MEmass1 4 0.134978 insert f0(1500)Width:MEmass1 5 0.54751 insert f0(1500)Width:MEmass1 6 0.54751 insert f0(1500)Width:MEmass1 7 1.3 insert f0(1500)Width:MEmass1 8 1.3 insert f0(1500)Width:MEmass1 9 1.3 insert f0(1500)Width:MEmass1 10 0.13957 insert f0(1500)Width:MEmass1 11 0.134978 insert f0(1500)Width:MEmass1 12 0.7755 insert f0(1500)Width:MEmass1 13 0.7755 insert f0(1500)Width:MEmass1 14 0.86 insert f0(1500)Width:MEmass2 0 0.493677 insert f0(1500)Width:MEmass2 1 0.497648 insert f0(1500)Width:MEmass2 2 1.24 insert f0(1500)Width:MEmass2 3 1.24 insert f0(1500)Width:MEmass2 4 1.24 insert f0(1500)Width:MEmass2 5 0.95778 insert f0(1500)Width:MEmass2 6 0.54751 insert f0(1500)Width:MEmass2 7 0.13957 insert f0(1500)Width:MEmass2 8 0.13957 insert f0(1500)Width:MEmass2 9 0.134978 insert f0(1500)Width:MEmass2 10 0.13957 insert f0(1500)Width:MEmass2 11 0.134978 insert f0(1500)Width:MEmass2 12 0.7755 insert f0(1500)Width:MEmass2 13 0.7755 insert f0(1500)Width:MEmass2 14 0.86 insert f0(1500)Width:DecayModes 0 f_0(1500)->K+,K-; insert f0(1500)Width:DecayModes 1 f_0(1500)->K0,Kbar0; insert f0(1500)Width:DecayModes 2 f_0(1500)->a_1+,pi-; insert f0(1500)Width:DecayModes 3 f_0(1500)->a_1-,pi+; insert f0(1500)Width:DecayModes 4 f_0(1500)->a_10,pi0; insert f0(1500)Width:DecayModes 5 f_0(1500)->eta',eta; insert f0(1500)Width:DecayModes 6 f_0(1500)->eta,eta; insert f0(1500)Width:DecayModes 7 f_0(1500)->pi'+,pi-; insert f0(1500)Width:DecayModes 8 f_0(1500)->pi'-,pi+; insert f0(1500)Width:DecayModes 9 f_0(1500)->pi'0,pi0; insert f0(1500)Width:DecayModes 10 f_0(1500)->pi+,pi-; insert f0(1500)Width:DecayModes 11 f_0(1500)->pi0,pi0; insert f0(1500)Width:DecayModes 12 f_0(1500)->rho+,rho-; insert f0(1500)Width:DecayModes 13 f_0(1500)->rho0,rho0; insert f0(1500)Width:DecayModes 14 f_0(1500)->sigma,sigma; insert f0(1500)Width:InterpolationMasses 0 0.9175102 insert f0(1500)Width:InterpolationMasses 1 0.9397551 insert f0(1500)Width:InterpolationMasses 2 0.962 insert f0(1500)Width:InterpolationMasses 3 0.9842449 insert f0(1500)Width:InterpolationMasses 4 1.0064898 insert f0(1500)Width:InterpolationMasses 5 1.0287347 insert f0(1500)Width:InterpolationMasses 6 1.0509796 insert f0(1500)Width:InterpolationMasses 7 1.0732245 insert f0(1500)Width:InterpolationMasses 8 1.0954694 insert f0(1500)Width:InterpolationMasses 9 1.1177143 insert f0(1500)Width:InterpolationMasses 10 1.1399592 insert f0(1500)Width:InterpolationMasses 11 1.1622041 insert f0(1500)Width:InterpolationMasses 12 1.184449 insert f0(1500)Width:InterpolationMasses 13 1.2066939 insert f0(1500)Width:InterpolationMasses 14 1.2289388 insert f0(1500)Width:InterpolationMasses 15 1.2511837 insert f0(1500)Width:InterpolationMasses 16 1.2734286 insert f0(1500)Width:InterpolationMasses 17 1.2956735 insert f0(1500)Width:InterpolationMasses 18 1.3179184 insert f0(1500)Width:InterpolationMasses 19 1.3401633 insert f0(1500)Width:InterpolationMasses 20 1.3624082 insert f0(1500)Width:InterpolationMasses 21 1.3846531 insert f0(1500)Width:InterpolationMasses 22 1.406898 insert f0(1500)Width:InterpolationMasses 23 1.4291429 insert f0(1500)Width:InterpolationMasses 24 1.4513878 insert f0(1500)Width:InterpolationMasses 25 1.4736327 insert f0(1500)Width:InterpolationMasses 26 1.4958776 insert f0(1500)Width:InterpolationMasses 27 1.5181224 insert f0(1500)Width:InterpolationMasses 28 1.5403673 insert f0(1500)Width:InterpolationMasses 29 1.5626122 insert f0(1500)Width:InterpolationMasses 30 1.5848571 insert f0(1500)Width:InterpolationMasses 31 1.607102 insert f0(1500)Width:InterpolationMasses 32 1.6293469 insert f0(1500)Width:InterpolationMasses 33 1.6515918 insert f0(1500)Width:InterpolationMasses 34 1.6738367 insert f0(1500)Width:InterpolationMasses 35 1.6960816 insert f0(1500)Width:InterpolationMasses 36 1.7183265 insert f0(1500)Width:InterpolationMasses 37 1.7405714 insert f0(1500)Width:InterpolationMasses 38 1.7628163 insert f0(1500)Width:InterpolationMasses 39 1.7850612 insert f0(1500)Width:InterpolationMasses 40 1.8073061 insert f0(1500)Width:InterpolationMasses 41 1.829551 insert f0(1500)Width:InterpolationMasses 42 1.8517959 insert f0(1500)Width:InterpolationMasses 43 1.8740408 insert f0(1500)Width:InterpolationMasses 44 1.8962857 insert f0(1500)Width:InterpolationMasses 45 1.9185306 insert f0(1500)Width:InterpolationMasses 46 1.9407755 insert f0(1500)Width:InterpolationMasses 47 1.9630204 insert f0(1500)Width:InterpolationMasses 48 1.9852653 insert f0(1500)Width:InterpolationMasses 49 2.0075102 insert f0(1500)Width:InterpolationMasses 50 2.0297551 insert f0(1500)Width:InterpolationMasses 51 2.052 insert f0(1500)Width:InterpolationMasses 52 2.0742449 insert f0(1500)Width:InterpolationMasses 53 2.0964898 insert f0(1500)Width:InterpolationMasses 54 0.9175102 insert f0(1500)Width:InterpolationMasses 55 0.9397551 insert f0(1500)Width:InterpolationMasses 56 0.962 insert f0(1500)Width:InterpolationMasses 57 0.9842449 insert f0(1500)Width:InterpolationMasses 58 1.0064898 insert f0(1500)Width:InterpolationMasses 59 1.0287347 insert f0(1500)Width:InterpolationMasses 60 1.0509796 insert f0(1500)Width:InterpolationMasses 61 1.0732245 insert f0(1500)Width:InterpolationMasses 62 1.0954694 insert f0(1500)Width:InterpolationMasses 63 1.1177143 insert f0(1500)Width:InterpolationMasses 64 1.1399592 insert f0(1500)Width:InterpolationMasses 65 1.1622041 insert f0(1500)Width:InterpolationMasses 66 1.184449 insert f0(1500)Width:InterpolationMasses 67 1.2066939 insert f0(1500)Width:InterpolationMasses 68 1.2289388 insert f0(1500)Width:InterpolationMasses 69 1.2511837 insert f0(1500)Width:InterpolationMasses 70 1.2734286 insert f0(1500)Width:InterpolationMasses 71 1.2956735 insert f0(1500)Width:InterpolationMasses 72 1.3179184 insert f0(1500)Width:InterpolationMasses 73 1.3401633 insert f0(1500)Width:InterpolationMasses 74 1.3624082 insert f0(1500)Width:InterpolationMasses 75 1.3846531 insert f0(1500)Width:InterpolationMasses 76 1.406898 insert f0(1500)Width:InterpolationMasses 77 1.4291429 insert f0(1500)Width:InterpolationMasses 78 1.4513878 insert f0(1500)Width:InterpolationMasses 79 1.4736327 insert f0(1500)Width:InterpolationMasses 80 1.4958776 insert f0(1500)Width:InterpolationMasses 81 1.5181224 insert f0(1500)Width:InterpolationMasses 82 1.5403673 insert f0(1500)Width:InterpolationMasses 83 1.5626122 insert f0(1500)Width:InterpolationMasses 84 1.5848571 insert f0(1500)Width:InterpolationMasses 85 1.607102 insert f0(1500)Width:InterpolationMasses 86 1.6293469 insert f0(1500)Width:InterpolationMasses 87 1.6515918 insert f0(1500)Width:InterpolationMasses 88 1.6738367 insert f0(1500)Width:InterpolationMasses 89 1.6960816 insert f0(1500)Width:InterpolationMasses 90 1.7183265 insert f0(1500)Width:InterpolationMasses 91 1.7405714 insert f0(1500)Width:InterpolationMasses 92 1.7628163 insert f0(1500)Width:InterpolationMasses 93 1.7850612 insert f0(1500)Width:InterpolationMasses 94 1.8073061 insert f0(1500)Width:InterpolationMasses 95 1.829551 insert f0(1500)Width:InterpolationMasses 96 1.8517959 insert f0(1500)Width:InterpolationMasses 97 1.8740408 insert f0(1500)Width:InterpolationMasses 98 1.8962857 insert f0(1500)Width:InterpolationMasses 99 1.9185306 insert f0(1500)Width:InterpolationMasses 100 1.9407755 insert f0(1500)Width:InterpolationMasses 101 1.9630204 insert f0(1500)Width:InterpolationMasses 102 1.9852653 insert f0(1500)Width:InterpolationMasses 103 2.0075102 insert f0(1500)Width:InterpolationMasses 104 2.0297551 insert f0(1500)Width:InterpolationMasses 105 2.052 insert f0(1500)Width:InterpolationMasses 106 2.0742449 insert f0(1500)Width:InterpolationMasses 107 2.0964898 insert f0(1500)Width:InterpolationMasses 108 0.9175102 insert f0(1500)Width:InterpolationMasses 109 0.9397551 insert f0(1500)Width:InterpolationMasses 110 0.962 insert f0(1500)Width:InterpolationMasses 111 0.9842449 insert f0(1500)Width:InterpolationMasses 112 1.0064898 insert f0(1500)Width:InterpolationMasses 113 1.0287347 insert f0(1500)Width:InterpolationMasses 114 1.0509796 insert f0(1500)Width:InterpolationMasses 115 1.0732245 insert f0(1500)Width:InterpolationMasses 116 1.0954694 insert f0(1500)Width:InterpolationMasses 117 1.1177143 insert f0(1500)Width:InterpolationMasses 118 1.1399592 insert f0(1500)Width:InterpolationMasses 119 1.1622041 insert f0(1500)Width:InterpolationMasses 120 1.184449 insert f0(1500)Width:InterpolationMasses 121 1.2066939 insert f0(1500)Width:InterpolationMasses 122 1.2289388 insert f0(1500)Width:InterpolationMasses 123 1.2511837 insert f0(1500)Width:InterpolationMasses 124 1.2734286 insert f0(1500)Width:InterpolationMasses 125 1.2956735 insert f0(1500)Width:InterpolationMasses 126 1.3179184 insert f0(1500)Width:InterpolationMasses 127 1.3401633 insert f0(1500)Width:InterpolationMasses 128 1.3624082 insert f0(1500)Width:InterpolationMasses 129 1.3846531 insert f0(1500)Width:InterpolationMasses 130 1.406898 insert f0(1500)Width:InterpolationMasses 131 1.4291429 insert f0(1500)Width:InterpolationMasses 132 1.4513878 insert f0(1500)Width:InterpolationMasses 133 1.4736327 insert f0(1500)Width:InterpolationMasses 134 1.4958776 insert f0(1500)Width:InterpolationMasses 135 1.5181224 insert f0(1500)Width:InterpolationMasses 136 1.5403673 insert f0(1500)Width:InterpolationMasses 137 1.5626122 insert f0(1500)Width:InterpolationMasses 138 1.5848571 insert f0(1500)Width:InterpolationMasses 139 1.607102 insert f0(1500)Width:InterpolationMasses 140 1.6293469 insert f0(1500)Width:InterpolationMasses 141 1.6515918 insert f0(1500)Width:InterpolationMasses 142 1.6738367 insert f0(1500)Width:InterpolationMasses 143 1.6960816 insert f0(1500)Width:InterpolationMasses 144 1.7183265 insert f0(1500)Width:InterpolationMasses 145 1.7405714 insert f0(1500)Width:InterpolationMasses 146 1.7628163 insert f0(1500)Width:InterpolationMasses 147 1.7850612 insert f0(1500)Width:InterpolationMasses 148 1.8073061 insert f0(1500)Width:InterpolationMasses 149 1.829551 insert f0(1500)Width:InterpolationMasses 150 1.8517959 insert f0(1500)Width:InterpolationMasses 151 1.8740408 insert f0(1500)Width:InterpolationMasses 152 1.8962857 insert f0(1500)Width:InterpolationMasses 153 1.9185306 insert f0(1500)Width:InterpolationMasses 154 1.9407755 insert f0(1500)Width:InterpolationMasses 155 1.9630204 insert f0(1500)Width:InterpolationMasses 156 1.9852653 insert f0(1500)Width:InterpolationMasses 157 2.0075102 insert f0(1500)Width:InterpolationMasses 158 2.0297551 insert f0(1500)Width:InterpolationMasses 159 2.052 insert f0(1500)Width:InterpolationMasses 160 2.0742449 insert f0(1500)Width:InterpolationMasses 161 2.0964898 insert f0(1500)Width:InterpolationMasses 162 1.4808489 insert f0(1500)Width:InterpolationMasses 163 1.492048 insert f0(1500)Width:InterpolationMasses 164 1.503247 insert f0(1500)Width:InterpolationMasses 165 1.5043632 insert f0(1500)Width:InterpolationMasses 166 1.5054802 insert f0(1500)Width:InterpolationMasses 167 1.506598 insert f0(1500)Width:InterpolationMasses 168 1.5077166 insert f0(1500)Width:InterpolationMasses 169 1.5088361 insert f0(1500)Width:InterpolationMasses 170 1.5099564 insert f0(1500)Width:InterpolationMasses 171 1.5110776 insert f0(1500)Width:InterpolationMasses 172 1.5121996 insert f0(1500)Width:InterpolationMasses 173 1.5133224 insert f0(1500)Width:InterpolationMasses 174 1.514446 insert f0(1500)Width:InterpolationMasses 175 1.5256451 insert f0(1500)Width:InterpolationMasses 176 1.5368441 insert f0(1500)Width:InterpolationMasses 177 1.5480432 insert f0(1500)Width:InterpolationMasses 178 1.5592422 insert f0(1500)Width:InterpolationMasses 179 1.5704412 insert f0(1500)Width:InterpolationMasses 180 1.5816403 insert f0(1500)Width:InterpolationMasses 181 1.5928393 insert f0(1500)Width:InterpolationMasses 182 1.6040384 insert f0(1500)Width:InterpolationMasses 183 1.6152374 insert f0(1500)Width:InterpolationMasses 184 1.6264364 insert f0(1500)Width:InterpolationMasses 185 1.6376355 insert f0(1500)Width:InterpolationMasses 186 1.6488345 insert f0(1500)Width:InterpolationMasses 187 1.6600336 insert f0(1500)Width:InterpolationMasses 188 1.6712326 insert f0(1500)Width:InterpolationMasses 189 1.6824317 insert f0(1500)Width:InterpolationMasses 190 1.6936307 insert f0(1500)Width:InterpolationMasses 191 1.7048297 insert f0(1500)Width:InterpolationMasses 192 1.7160288 insert f0(1500)Width:InterpolationMasses 193 1.7272278 insert f0(1500)Width:InterpolationMasses 194 1.7384269 insert f0(1500)Width:InterpolationMasses 195 1.7496259 insert f0(1500)Width:InterpolationMasses 196 1.7608249 insert f0(1500)Width:InterpolationMasses 197 1.772024 insert f0(1500)Width:InterpolationMasses 198 1.783223 insert f0(1500)Width:InterpolationMasses 199 1.7944221 insert f0(1500)Width:InterpolationMasses 200 1.8056211 insert f0(1500)Width:InterpolationMasses 201 1.8168201 insert f0(1500)Width:InterpolationMasses 202 1.8280192 insert f0(1500)Width:InterpolationMasses 203 1.8392182 insert f0(1500)Width:InterpolationMasses 204 1.8504173 insert f0(1500)Width:InterpolationMasses 205 1.8616163 insert f0(1500)Width:InterpolationMasses 206 1.8728153 insert f0(1500)Width:InterpolationMasses 207 1.8840144 insert f0(1500)Width:InterpolationMasses 208 1.8952134 insert f0(1500)Width:InterpolationMasses 209 1.9064125 insert f0(1500)Width:InterpolationMasses 210 1.9176115 insert f0(1500)Width:InterpolationMasses 211 1.9288106 insert f0(1500)Width:InterpolationMasses 212 1.9400096 insert f0(1500)Width:InterpolationMasses 213 1.9512086 insert f0(1500)Width:InterpolationMasses 214 1.9624077 insert f0(1500)Width:InterpolationMasses 215 1.9736067 insert f0(1500)Width:InterpolationMasses 216 1.9848058 insert f0(1500)Width:InterpolationMasses 217 1.9960048 insert f0(1500)Width:InterpolationMasses 218 2.0072038 insert f0(1500)Width:InterpolationMasses 219 2.0184029 insert f0(1500)Width:InterpolationMasses 220 2.0296019 insert f0(1500)Width:InterpolationMasses 221 2.040801 insert f0(1500)Width:InterpolationMasses 222 2.052 insert f0(1500)Width:InterpolationMasses 223 2.063199 insert f0(1500)Width:InterpolationMasses 224 2.0743981 insert f0(1500)Width:InterpolationMasses 225 1.0559325 insert f0(1500)Width:InterpolationMasses 226 1.0754633 insert f0(1500)Width:InterpolationMasses 227 1.094994 insert f0(1500)Width:InterpolationMasses 228 1.0969316 insert f0(1500)Width:InterpolationMasses 229 1.0988726 insert f0(1500)Width:InterpolationMasses 230 1.100817 insert f0(1500)Width:InterpolationMasses 231 1.1027649 insert f0(1500)Width:InterpolationMasses 232 1.1047162 insert f0(1500)Width:InterpolationMasses 233 1.106671 insert f0(1500)Width:InterpolationMasses 234 1.1086292 insert f0(1500)Width:InterpolationMasses 235 1.1105909 insert f0(1500)Width:InterpolationMasses 236 1.1125561 insert f0(1500)Width:InterpolationMasses 237 1.1145247 insert f0(1500)Width:InterpolationMasses 238 1.1340555 insert f0(1500)Width:InterpolationMasses 239 1.1535862 insert f0(1500)Width:InterpolationMasses 240 1.1731169 insert f0(1500)Width:InterpolationMasses 241 1.1926477 insert f0(1500)Width:InterpolationMasses 242 1.2121784 insert f0(1500)Width:InterpolationMasses 243 1.2317091 insert f0(1500)Width:InterpolationMasses 244 1.2512399 insert f0(1500)Width:InterpolationMasses 245 1.2707706 insert f0(1500)Width:InterpolationMasses 246 1.2903013 insert f0(1500)Width:InterpolationMasses 247 1.3098321 insert f0(1500)Width:InterpolationMasses 248 1.3293628 insert f0(1500)Width:InterpolationMasses 249 1.3488936 insert f0(1500)Width:InterpolationMasses 250 1.3684243 insert f0(1500)Width:InterpolationMasses 251 1.387955 insert f0(1500)Width:InterpolationMasses 252 1.4074858 insert f0(1500)Width:InterpolationMasses 253 1.4270165 insert f0(1500)Width:InterpolationMasses 254 1.4465472 insert f0(1500)Width:InterpolationMasses 255 1.466078 insert f0(1500)Width:InterpolationMasses 256 1.4856087 insert f0(1500)Width:InterpolationMasses 257 1.5051394 insert f0(1500)Width:InterpolationMasses 258 1.5246702 insert f0(1500)Width:InterpolationMasses 259 1.5442009 insert f0(1500)Width:InterpolationMasses 260 1.5637316 insert f0(1500)Width:InterpolationMasses 261 1.5832624 insert f0(1500)Width:InterpolationMasses 262 1.6027931 insert f0(1500)Width:InterpolationMasses 263 1.6223238 insert f0(1500)Width:InterpolationMasses 264 1.6418546 insert f0(1500)Width:InterpolationMasses 265 1.6613853 insert f0(1500)Width:InterpolationMasses 266 1.680916 insert f0(1500)Width:InterpolationMasses 267 1.7004468 insert f0(1500)Width:InterpolationMasses 268 1.7199775 insert f0(1500)Width:InterpolationMasses 269 1.7395082 insert f0(1500)Width:InterpolationMasses 270 1.759039 insert f0(1500)Width:InterpolationMasses 271 1.7785697 insert f0(1500)Width:InterpolationMasses 272 1.7981004 insert f0(1500)Width:InterpolationMasses 273 1.8176312 insert f0(1500)Width:InterpolationMasses 274 1.8371619 insert f0(1500)Width:InterpolationMasses 275 1.8566927 insert f0(1500)Width:InterpolationMasses 276 1.8762234 insert f0(1500)Width:InterpolationMasses 277 1.8957541 insert f0(1500)Width:InterpolationMasses 278 1.9152849 insert f0(1500)Width:InterpolationMasses 279 1.9348156 insert f0(1500)Width:InterpolationMasses 280 1.9543463 insert f0(1500)Width:InterpolationMasses 281 1.9738771 insert f0(1500)Width:InterpolationMasses 282 1.9934078 insert f0(1500)Width:InterpolationMasses 283 2.0129385 insert f0(1500)Width:InterpolationMasses 284 2.0324693 insert f0(1500)Width:InterpolationMasses 285 2.052 insert f0(1500)Width:InterpolationMasses 286 2.0715307 insert f0(1500)Width:InterpolationMasses 287 2.0910615 insert f0(1500)Width:InterpolationMasses 288 0.99824651 insert f0(1500)Width:InterpolationMasses 289 1.0395702 insert f0(1500)Width:InterpolationMasses 290 1.0395702 insert f0(1500)Width:InterpolationMasses 291 1.060232 insert f0(1500)Width:InterpolationMasses 292 1.0808938 insert f0(1500)Width:InterpolationMasses 293 1.1015557 insert f0(1500)Width:InterpolationMasses 294 1.1222175 insert f0(1500)Width:InterpolationMasses 295 1.1428793 insert f0(1500)Width:InterpolationMasses 296 1.1635412 insert f0(1500)Width:InterpolationMasses 297 1.184203 insert f0(1500)Width:InterpolationMasses 298 1.2048648 insert f0(1500)Width:InterpolationMasses 299 1.2255267 insert f0(1500)Width:InterpolationMasses 300 1.2461885 insert f0(1500)Width:InterpolationMasses 301 1.2668503 insert f0(1500)Width:InterpolationMasses 302 1.2875122 insert f0(1500)Width:InterpolationMasses 303 1.308174 insert f0(1500)Width:InterpolationMasses 304 1.3288358 insert f0(1500)Width:InterpolationMasses 305 1.3494977 insert f0(1500)Width:InterpolationMasses 306 1.3701595 insert f0(1500)Width:InterpolationMasses 307 1.3908213 insert f0(1500)Width:InterpolationMasses 308 1.4114832 insert f0(1500)Width:InterpolationMasses 309 1.432145 insert f0(1500)Width:InterpolationMasses 310 1.4528068 insert f0(1500)Width:InterpolationMasses 311 1.4734687 insert f0(1500)Width:InterpolationMasses 312 1.4941305 insert f0(1500)Width:InterpolationMasses 313 1.5147923 insert f0(1500)Width:InterpolationMasses 314 1.5354542 insert f0(1500)Width:InterpolationMasses 315 1.556116 insert f0(1500)Width:InterpolationMasses 316 1.5767778 insert f0(1500)Width:InterpolationMasses 317 1.5974397 insert f0(1500)Width:InterpolationMasses 318 1.6181015 insert f0(1500)Width:InterpolationMasses 319 1.6387633 insert f0(1500)Width:InterpolationMasses 320 1.6594252 insert f0(1500)Width:InterpolationMasses 321 1.680087 insert f0(1500)Width:InterpolationMasses 322 1.7007488 insert f0(1500)Width:InterpolationMasses 323 1.7214107 insert f0(1500)Width:InterpolationMasses 324 1.7420725 insert f0(1500)Width:InterpolationMasses 325 1.7627343 insert f0(1500)Width:InterpolationMasses 326 1.7833962 insert f0(1500)Width:InterpolationMasses 327 1.804058 insert f0(1500)Width:InterpolationMasses 328 1.8247198 insert f0(1500)Width:InterpolationMasses 329 1.8453817 insert f0(1500)Width:InterpolationMasses 330 1.8660435 insert f0(1500)Width:InterpolationMasses 331 1.8867053 insert f0(1500)Width:InterpolationMasses 332 1.9073672 insert f0(1500)Width:InterpolationMasses 333 1.928029 insert f0(1500)Width:InterpolationMasses 334 1.9486908 insert f0(1500)Width:InterpolationMasses 335 1.9693527 insert f0(1500)Width:InterpolationMasses 336 1.9900145 insert f0(1500)Width:InterpolationMasses 337 2.0106763 insert f0(1500)Width:InterpolationMasses 338 2.0313382 insert f0(1500)Width:InterpolationMasses 339 2.052 insert f0(1500)Width:InterpolationMasses 340 2.0726618 insert f0(1500)Width:InterpolationMasses 341 2.0933237 insert f0(1500)Width:InterpolationMasses 342 0.99824651 insert f0(1500)Width:InterpolationMasses 343 1.0395702 insert f0(1500)Width:InterpolationMasses 344 1.0395702 insert f0(1500)Width:InterpolationMasses 345 1.060232 insert f0(1500)Width:InterpolationMasses 346 1.0808938 insert f0(1500)Width:InterpolationMasses 347 1.1015557 insert f0(1500)Width:InterpolationMasses 348 1.1222175 insert f0(1500)Width:InterpolationMasses 349 1.1428793 insert f0(1500)Width:InterpolationMasses 350 1.1635412 insert f0(1500)Width:InterpolationMasses 351 1.184203 insert f0(1500)Width:InterpolationMasses 352 1.2048648 insert f0(1500)Width:InterpolationMasses 353 1.2255267 insert f0(1500)Width:InterpolationMasses 354 1.2461885 insert f0(1500)Width:InterpolationMasses 355 1.2668503 insert f0(1500)Width:InterpolationMasses 356 1.2875122 insert f0(1500)Width:InterpolationMasses 357 1.308174 insert f0(1500)Width:InterpolationMasses 358 1.3288358 insert f0(1500)Width:InterpolationMasses 359 1.3494977 insert f0(1500)Width:InterpolationMasses 360 1.3701595 insert f0(1500)Width:InterpolationMasses 361 1.3908213 insert f0(1500)Width:InterpolationMasses 362 1.4114832 insert f0(1500)Width:InterpolationMasses 363 1.432145 insert f0(1500)Width:InterpolationMasses 364 1.4528068 insert f0(1500)Width:InterpolationMasses 365 1.4734687 insert f0(1500)Width:InterpolationMasses 366 1.4941305 insert f0(1500)Width:InterpolationMasses 367 1.5147923 insert f0(1500)Width:InterpolationMasses 368 1.5354542 insert f0(1500)Width:InterpolationMasses 369 1.556116 insert f0(1500)Width:InterpolationMasses 370 1.5767778 insert f0(1500)Width:InterpolationMasses 371 1.5974397 insert f0(1500)Width:InterpolationMasses 372 1.6181015 insert f0(1500)Width:InterpolationMasses 373 1.6387633 insert f0(1500)Width:InterpolationMasses 374 1.6594252 insert f0(1500)Width:InterpolationMasses 375 1.680087 insert f0(1500)Width:InterpolationMasses 376 1.7007488 insert f0(1500)Width:InterpolationMasses 377 1.7214107 insert f0(1500)Width:InterpolationMasses 378 1.7420725 insert f0(1500)Width:InterpolationMasses 379 1.7627343 insert f0(1500)Width:InterpolationMasses 380 1.7833962 insert f0(1500)Width:InterpolationMasses 381 1.804058 insert f0(1500)Width:InterpolationMasses 382 1.8247198 insert f0(1500)Width:InterpolationMasses 383 1.8453817 insert f0(1500)Width:InterpolationMasses 384 1.8660435 insert f0(1500)Width:InterpolationMasses 385 1.8867053 insert f0(1500)Width:InterpolationMasses 386 1.9073672 insert f0(1500)Width:InterpolationMasses 387 1.928029 insert f0(1500)Width:InterpolationMasses 388 1.9486908 insert f0(1500)Width:InterpolationMasses 389 1.9693527 insert f0(1500)Width:InterpolationMasses 390 1.9900145 insert f0(1500)Width:InterpolationMasses 391 2.0106763 insert f0(1500)Width:InterpolationMasses 392 2.0313382 insert f0(1500)Width:InterpolationMasses 393 2.052 insert f0(1500)Width:InterpolationMasses 394 2.0726618 insert f0(1500)Width:InterpolationMasses 395 2.0933237 insert f0(1500)Width:InterpolationMasses 396 0.99346648 insert f0(1500)Width:InterpolationMasses 397 1.0349776 insert f0(1500)Width:InterpolationMasses 398 1.0349776 insert f0(1500)Width:InterpolationMasses 399 1.0557332 insert f0(1500)Width:InterpolationMasses 400 1.0764887 insert f0(1500)Width:InterpolationMasses 401 1.0972443 insert f0(1500)Width:InterpolationMasses 402 1.1179998 insert f0(1500)Width:InterpolationMasses 403 1.1387554 insert f0(1500)Width:InterpolationMasses 404 1.159511 insert f0(1500)Width:InterpolationMasses 405 1.1802665 insert f0(1500)Width:InterpolationMasses 406 1.2010221 insert f0(1500)Width:InterpolationMasses 407 1.2217776 insert f0(1500)Width:InterpolationMasses 408 1.2425332 insert f0(1500)Width:InterpolationMasses 409 1.2632888 insert f0(1500)Width:InterpolationMasses 410 1.2840443 insert f0(1500)Width:InterpolationMasses 411 1.3047999 insert f0(1500)Width:InterpolationMasses 412 1.3255554 insert f0(1500)Width:InterpolationMasses 413 1.346311 insert f0(1500)Width:InterpolationMasses 414 1.3670665 insert f0(1500)Width:InterpolationMasses 415 1.3878221 insert f0(1500)Width:InterpolationMasses 416 1.4085777 insert f0(1500)Width:InterpolationMasses 417 1.4293332 insert f0(1500)Width:InterpolationMasses 418 1.4500888 insert f0(1500)Width:InterpolationMasses 419 1.4708443 insert f0(1500)Width:InterpolationMasses 420 1.4915999 insert f0(1500)Width:InterpolationMasses 421 1.5123555 insert f0(1500)Width:InterpolationMasses 422 1.533111 insert f0(1500)Width:InterpolationMasses 423 1.5538666 insert f0(1500)Width:InterpolationMasses 424 1.5746221 insert f0(1500)Width:InterpolationMasses 425 1.5953777 insert f0(1500)Width:InterpolationMasses 426 1.6161333 insert f0(1500)Width:InterpolationMasses 427 1.6368888 insert f0(1500)Width:InterpolationMasses 428 1.6576444 insert f0(1500)Width:InterpolationMasses 429 1.6783999 insert f0(1500)Width:InterpolationMasses 430 1.6991555 insert f0(1500)Width:InterpolationMasses 431 1.7199111 insert f0(1500)Width:InterpolationMasses 432 1.7406666 insert f0(1500)Width:InterpolationMasses 433 1.7614222 insert f0(1500)Width:InterpolationMasses 434 1.7821777 insert f0(1500)Width:InterpolationMasses 435 1.8029333 insert f0(1500)Width:InterpolationMasses 436 1.8236888 insert f0(1500)Width:InterpolationMasses 437 1.8444444 insert f0(1500)Width:InterpolationMasses 438 1.8652 insert f0(1500)Width:InterpolationMasses 439 1.8859555 insert f0(1500)Width:InterpolationMasses 440 1.9067111 insert f0(1500)Width:InterpolationMasses 441 1.9274666 insert f0(1500)Width:InterpolationMasses 442 1.9482222 insert f0(1500)Width:InterpolationMasses 443 1.9689778 insert f0(1500)Width:InterpolationMasses 444 1.9897333 insert f0(1500)Width:InterpolationMasses 445 2.0104889 insert f0(1500)Width:InterpolationMasses 446 2.0312444 insert f0(1500)Width:InterpolationMasses 447 2.052 insert f0(1500)Width:InterpolationMasses 448 2.0727556 insert f0(1500)Width:InterpolationMasses 449 2.0935111 insert f0(1500)Width:InterpolationMasses 450 0.9175102 insert f0(1500)Width:InterpolationMasses 451 0.9397551 insert f0(1500)Width:InterpolationMasses 452 0.962 insert f0(1500)Width:InterpolationMasses 453 0.9842449 insert f0(1500)Width:InterpolationMasses 454 1.0064898 insert f0(1500)Width:InterpolationMasses 455 1.0287347 insert f0(1500)Width:InterpolationMasses 456 1.0509796 insert f0(1500)Width:InterpolationMasses 457 1.0732245 insert f0(1500)Width:InterpolationMasses 458 1.0954694 insert f0(1500)Width:InterpolationMasses 459 1.1177143 insert f0(1500)Width:InterpolationMasses 460 1.1399592 insert f0(1500)Width:InterpolationMasses 461 1.1622041 insert f0(1500)Width:InterpolationMasses 462 1.184449 insert f0(1500)Width:InterpolationMasses 463 1.2066939 insert f0(1500)Width:InterpolationMasses 464 1.2289388 insert f0(1500)Width:InterpolationMasses 465 1.2511837 insert f0(1500)Width:InterpolationMasses 466 1.2734286 insert f0(1500)Width:InterpolationMasses 467 1.2956735 insert f0(1500)Width:InterpolationMasses 468 1.3179184 insert f0(1500)Width:InterpolationMasses 469 1.3401633 insert f0(1500)Width:InterpolationMasses 470 1.3624082 insert f0(1500)Width:InterpolationMasses 471 1.3846531 insert f0(1500)Width:InterpolationMasses 472 1.406898 insert f0(1500)Width:InterpolationMasses 473 1.4291429 insert f0(1500)Width:InterpolationMasses 474 1.4513878 insert f0(1500)Width:InterpolationMasses 475 1.4736327 insert f0(1500)Width:InterpolationMasses 476 1.4958776 insert f0(1500)Width:InterpolationMasses 477 1.5181224 insert f0(1500)Width:InterpolationMasses 478 1.5403673 insert f0(1500)Width:InterpolationMasses 479 1.5626122 insert f0(1500)Width:InterpolationMasses 480 1.5848571 insert f0(1500)Width:InterpolationMasses 481 1.607102 insert f0(1500)Width:InterpolationMasses 482 1.6293469 insert f0(1500)Width:InterpolationMasses 483 1.6515918 insert f0(1500)Width:InterpolationMasses 484 1.6738367 insert f0(1500)Width:InterpolationMasses 485 1.6960816 insert f0(1500)Width:InterpolationMasses 486 1.7183265 insert f0(1500)Width:InterpolationMasses 487 1.7405714 insert f0(1500)Width:InterpolationMasses 488 1.7628163 insert f0(1500)Width:InterpolationMasses 489 1.7850612 insert f0(1500)Width:InterpolationMasses 490 1.8073061 insert f0(1500)Width:InterpolationMasses 491 1.829551 insert f0(1500)Width:InterpolationMasses 492 1.8517959 insert f0(1500)Width:InterpolationMasses 493 1.8740408 insert f0(1500)Width:InterpolationMasses 494 1.8962857 insert f0(1500)Width:InterpolationMasses 495 1.9185306 insert f0(1500)Width:InterpolationMasses 496 1.9407755 insert f0(1500)Width:InterpolationMasses 497 1.9630204 insert f0(1500)Width:InterpolationMasses 498 1.9852653 insert f0(1500)Width:InterpolationMasses 499 2.0075102 insert f0(1500)Width:InterpolationMasses 500 2.0297551 insert f0(1500)Width:InterpolationMasses 501 2.052 insert f0(1500)Width:InterpolationMasses 502 2.0742449 insert f0(1500)Width:InterpolationMasses 503 2.0964898 insert f0(1500)Width:InterpolationMasses 504 0.9175102 insert f0(1500)Width:InterpolationMasses 505 0.9397551 insert f0(1500)Width:InterpolationMasses 506 0.962 insert f0(1500)Width:InterpolationMasses 507 0.9842449 insert f0(1500)Width:InterpolationMasses 508 1.0064898 insert f0(1500)Width:InterpolationMasses 509 1.0287347 insert f0(1500)Width:InterpolationMasses 510 1.0509796 insert f0(1500)Width:InterpolationMasses 511 1.0732245 insert f0(1500)Width:InterpolationMasses 512 1.0954694 insert f0(1500)Width:InterpolationMasses 513 1.1177143 insert f0(1500)Width:InterpolationMasses 514 1.1399592 insert f0(1500)Width:InterpolationMasses 515 1.1622041 insert f0(1500)Width:InterpolationMasses 516 1.184449 insert f0(1500)Width:InterpolationMasses 517 1.2066939 insert f0(1500)Width:InterpolationMasses 518 1.2289388 insert f0(1500)Width:InterpolationMasses 519 1.2511837 insert f0(1500)Width:InterpolationMasses 520 1.2734286 insert f0(1500)Width:InterpolationMasses 521 1.2956735 insert f0(1500)Width:InterpolationMasses 522 1.3179184 insert f0(1500)Width:InterpolationMasses 523 1.3401633 insert f0(1500)Width:InterpolationMasses 524 1.3624082 insert f0(1500)Width:InterpolationMasses 525 1.3846531 insert f0(1500)Width:InterpolationMasses 526 1.406898 insert f0(1500)Width:InterpolationMasses 527 1.4291429 insert f0(1500)Width:InterpolationMasses 528 1.4513878 insert f0(1500)Width:InterpolationMasses 529 1.4736327 insert f0(1500)Width:InterpolationMasses 530 1.4958776 insert f0(1500)Width:InterpolationMasses 531 1.5181224 insert f0(1500)Width:InterpolationMasses 532 1.5403673 insert f0(1500)Width:InterpolationMasses 533 1.5626122 insert f0(1500)Width:InterpolationMasses 534 1.5848571 insert f0(1500)Width:InterpolationMasses 535 1.607102 insert f0(1500)Width:InterpolationMasses 536 1.6293469 insert f0(1500)Width:InterpolationMasses 537 1.6515918 insert f0(1500)Width:InterpolationMasses 538 1.6738367 insert f0(1500)Width:InterpolationMasses 539 1.6960816 insert f0(1500)Width:InterpolationMasses 540 1.7183265 insert f0(1500)Width:InterpolationMasses 541 1.7405714 insert f0(1500)Width:InterpolationMasses 542 1.7628163 insert f0(1500)Width:InterpolationMasses 543 1.7850612 insert f0(1500)Width:InterpolationMasses 544 1.8073061 insert f0(1500)Width:InterpolationMasses 545 1.829551 insert f0(1500)Width:InterpolationMasses 546 1.8517959 insert f0(1500)Width:InterpolationMasses 547 1.8740408 insert f0(1500)Width:InterpolationMasses 548 1.8962857 insert f0(1500)Width:InterpolationMasses 549 1.9185306 insert f0(1500)Width:InterpolationMasses 550 1.9407755 insert f0(1500)Width:InterpolationMasses 551 1.9630204 insert f0(1500)Width:InterpolationMasses 552 1.9852653 insert f0(1500)Width:InterpolationMasses 553 2.0075102 insert f0(1500)Width:InterpolationMasses 554 2.0297551 insert f0(1500)Width:InterpolationMasses 555 2.052 insert f0(1500)Width:InterpolationMasses 556 2.0742449 insert f0(1500)Width:InterpolationMasses 557 2.0964898 insert f0(1500)Width:InterpolationMasses 558 0.9175102 insert f0(1500)Width:InterpolationMasses 559 0.9397551 insert f0(1500)Width:InterpolationMasses 560 0.962 insert f0(1500)Width:InterpolationMasses 561 0.9842449 insert f0(1500)Width:InterpolationMasses 562 1.0064898 insert f0(1500)Width:InterpolationMasses 563 1.0287347 insert f0(1500)Width:InterpolationMasses 564 1.0509796 insert f0(1500)Width:InterpolationMasses 565 1.0732245 insert f0(1500)Width:InterpolationMasses 566 1.0954694 insert f0(1500)Width:InterpolationMasses 567 1.1177143 insert f0(1500)Width:InterpolationMasses 568 1.1399592 insert f0(1500)Width:InterpolationMasses 569 1.1622041 insert f0(1500)Width:InterpolationMasses 570 1.184449 insert f0(1500)Width:InterpolationMasses 571 1.2066939 insert f0(1500)Width:InterpolationMasses 572 1.2289388 insert f0(1500)Width:InterpolationMasses 573 1.2511837 insert f0(1500)Width:InterpolationMasses 574 1.2734286 insert f0(1500)Width:InterpolationMasses 575 1.2956735 insert f0(1500)Width:InterpolationMasses 576 1.3179184 insert f0(1500)Width:InterpolationMasses 577 1.3401633 insert f0(1500)Width:InterpolationMasses 578 1.3624082 insert f0(1500)Width:InterpolationMasses 579 1.3846531 insert f0(1500)Width:InterpolationMasses 580 1.406898 insert f0(1500)Width:InterpolationMasses 581 1.4291429 insert f0(1500)Width:InterpolationMasses 582 1.4513878 insert f0(1500)Width:InterpolationMasses 583 1.4736327 insert f0(1500)Width:InterpolationMasses 584 1.4958776 insert f0(1500)Width:InterpolationMasses 585 1.5181224 insert f0(1500)Width:InterpolationMasses 586 1.5403673 insert f0(1500)Width:InterpolationMasses 587 1.5626122 insert f0(1500)Width:InterpolationMasses 588 1.5848571 insert f0(1500)Width:InterpolationMasses 589 1.607102 insert f0(1500)Width:InterpolationMasses 590 1.6293469 insert f0(1500)Width:InterpolationMasses 591 1.6515918 insert f0(1500)Width:InterpolationMasses 592 1.6738367 insert f0(1500)Width:InterpolationMasses 593 1.6960816 insert f0(1500)Width:InterpolationMasses 594 1.7183265 insert f0(1500)Width:InterpolationMasses 595 1.7405714 insert f0(1500)Width:InterpolationMasses 596 1.7628163 insert f0(1500)Width:InterpolationMasses 597 1.7850612 insert f0(1500)Width:InterpolationMasses 598 1.8073061 insert f0(1500)Width:InterpolationMasses 599 1.829551 insert f0(1500)Width:InterpolationMasses 600 1.8517959 insert f0(1500)Width:InterpolationMasses 601 1.8740408 insert f0(1500)Width:InterpolationMasses 602 1.8962857 insert f0(1500)Width:InterpolationMasses 603 1.9185306 insert f0(1500)Width:InterpolationMasses 604 1.9407755 insert f0(1500)Width:InterpolationMasses 605 1.9630204 insert f0(1500)Width:InterpolationMasses 606 1.9852653 insert f0(1500)Width:InterpolationMasses 607 2.0075102 insert f0(1500)Width:InterpolationMasses 608 2.0297551 insert f0(1500)Width:InterpolationMasses 609 2.052 insert f0(1500)Width:InterpolationMasses 610 2.0742449 insert f0(1500)Width:InterpolationMasses 611 2.0964898 insert f0(1500)Width:InterpolationWidths 0 2.5301884e-07 insert f0(1500)Width:InterpolationWidths 1 5.0085662e-07 insert f0(1500)Width:InterpolationWidths 2 9.1291896e-07 insert f0(1500)Width:InterpolationWidths 3 1.5734732e-06 insert f0(1500)Width:InterpolationWidths 4 2.6082828e-06 insert f0(1500)Width:InterpolationWidths 5 4.206351e-06 insert f0(1500)Width:InterpolationWidths 6 6.6481496e-06 insert f0(1500)Width:InterpolationWidths 7 1.0338875e-05 insert f0(1500)Width:InterpolationWidths 8 1.5831978e-05 insert f0(1500)Width:InterpolationWidths 9 2.3849499e-05 insert f0(1500)Width:InterpolationWidths 10 3.5297662e-05 insert f0(1500)Width:InterpolationWidths 11 5.1245471e-05 insert f0(1500)Width:InterpolationWidths 12 7.2954013e-05 insert f0(1500)Width:InterpolationWidths 13 0.00010182179 insert f0(1500)Width:InterpolationWidths 14 0.00013944401 insert f0(1500)Width:InterpolationWidths 15 0.00018752626 insert f0(1500)Width:InterpolationWidths 16 0.00024789945 insert f0(1500)Width:InterpolationWidths 17 0.00032242484 insert f0(1500)Width:InterpolationWidths 18 0.00041312303 insert f0(1500)Width:InterpolationWidths 19 0.00052193217 insert f0(1500)Width:InterpolationWidths 20 0.00065090061 insert f0(1500)Width:InterpolationWidths 21 0.00080228184 insert f0(1500)Width:InterpolationWidths 22 0.0009773086 insert f0(1500)Width:InterpolationWidths 23 0.0011786396 insert f0(1500)Width:InterpolationWidths 24 0.0014079875 insert f0(1500)Width:InterpolationWidths 25 0.0016671335 insert f0(1500)Width:InterpolationWidths 26 0.0019579912 insert f0(1500)Width:InterpolationWidths 27 0.0022824532 insert f0(1500)Width:InterpolationWidths 28 0.0026418873 insert f0(1500)Width:InterpolationWidths 29 0.0030384515 insert f0(1500)Width:InterpolationWidths 30 0.0034733433 insert f0(1500)Width:InterpolationWidths 31 0.0039485264 insert f0(1500)Width:InterpolationWidths 32 0.0044651404 insert f0(1500)Width:InterpolationWidths 33 0.005025398 insert f0(1500)Width:InterpolationWidths 34 0.0056298766 insert f0(1500)Width:InterpolationWidths 35 0.0062812454 insert f0(1500)Width:InterpolationWidths 36 0.0069799641 insert f0(1500)Width:InterpolationWidths 37 0.0077273949 insert f0(1500)Width:InterpolationWidths 38 0.0085250123 insert f0(1500)Width:InterpolationWidths 39 0.0093746224 insert f0(1500)Width:InterpolationWidths 40 0.010277266 insert f0(1500)Width:InterpolationWidths 41 0.01123403 insert f0(1500)Width:InterpolationWidths 42 0.012245976 insert f0(1500)Width:InterpolationWidths 43 0.013314783 insert f0(1500)Width:InterpolationWidths 44 0.014441448 insert f0(1500)Width:InterpolationWidths 45 0.015627035 insert f0(1500)Width:InterpolationWidths 46 0.016872923 insert f0(1500)Width:InterpolationWidths 47 0.018180006 insert f0(1500)Width:InterpolationWidths 48 0.019549168 insert f0(1500)Width:InterpolationWidths 49 0.020981307 insert f0(1500)Width:InterpolationWidths 50 0.022477319 insert f0(1500)Width:InterpolationWidths 51 0.024038087 insert f0(1500)Width:InterpolationWidths 52 0.025664475 insert f0(1500)Width:InterpolationWidths 53 0.027357335 insert f0(1500)Width:InterpolationWidths 54 2.5301884e-07 insert f0(1500)Width:InterpolationWidths 55 5.0085662e-07 insert f0(1500)Width:InterpolationWidths 56 9.1291896e-07 insert f0(1500)Width:InterpolationWidths 57 1.5734732e-06 insert f0(1500)Width:InterpolationWidths 58 2.6082828e-06 insert f0(1500)Width:InterpolationWidths 59 4.206351e-06 insert f0(1500)Width:InterpolationWidths 60 6.6481496e-06 insert f0(1500)Width:InterpolationWidths 61 1.0338875e-05 insert f0(1500)Width:InterpolationWidths 62 1.5831978e-05 insert f0(1500)Width:InterpolationWidths 63 2.3849499e-05 insert f0(1500)Width:InterpolationWidths 64 3.5297662e-05 insert f0(1500)Width:InterpolationWidths 65 5.1245471e-05 insert f0(1500)Width:InterpolationWidths 66 7.2954013e-05 insert f0(1500)Width:InterpolationWidths 67 0.00010182179 insert f0(1500)Width:InterpolationWidths 68 0.00013944401 insert f0(1500)Width:InterpolationWidths 69 0.00018752626 insert f0(1500)Width:InterpolationWidths 70 0.00024789945 insert f0(1500)Width:InterpolationWidths 71 0.00032242484 insert f0(1500)Width:InterpolationWidths 72 0.00041312303 insert f0(1500)Width:InterpolationWidths 73 0.00052193217 insert f0(1500)Width:InterpolationWidths 74 0.00065090061 insert f0(1500)Width:InterpolationWidths 75 0.00080228184 insert f0(1500)Width:InterpolationWidths 76 0.0009773086 insert f0(1500)Width:InterpolationWidths 77 0.0011786396 insert f0(1500)Width:InterpolationWidths 78 0.0014079875 insert f0(1500)Width:InterpolationWidths 79 0.0016671335 insert f0(1500)Width:InterpolationWidths 80 0.0019579912 insert f0(1500)Width:InterpolationWidths 81 0.0022824532 insert f0(1500)Width:InterpolationWidths 82 0.0026418873 insert f0(1500)Width:InterpolationWidths 83 0.0030384515 insert f0(1500)Width:InterpolationWidths 84 0.0034733433 insert f0(1500)Width:InterpolationWidths 85 0.0039485264 insert f0(1500)Width:InterpolationWidths 86 0.0044651404 insert f0(1500)Width:InterpolationWidths 87 0.005025398 insert f0(1500)Width:InterpolationWidths 88 0.0056298766 insert f0(1500)Width:InterpolationWidths 89 0.0062812454 insert f0(1500)Width:InterpolationWidths 90 0.0069799641 insert f0(1500)Width:InterpolationWidths 91 0.0077273949 insert f0(1500)Width:InterpolationWidths 92 0.0085250123 insert f0(1500)Width:InterpolationWidths 93 0.0093746224 insert f0(1500)Width:InterpolationWidths 94 0.010277266 insert f0(1500)Width:InterpolationWidths 95 0.01123403 insert f0(1500)Width:InterpolationWidths 96 0.012245976 insert f0(1500)Width:InterpolationWidths 97 0.013314783 insert f0(1500)Width:InterpolationWidths 98 0.014441448 insert f0(1500)Width:InterpolationWidths 99 0.015627035 insert f0(1500)Width:InterpolationWidths 100 0.016872923 insert f0(1500)Width:InterpolationWidths 101 0.018180006 insert f0(1500)Width:InterpolationWidths 102 0.019549168 insert f0(1500)Width:InterpolationWidths 103 0.020981307 insert f0(1500)Width:InterpolationWidths 104 0.022477319 insert f0(1500)Width:InterpolationWidths 105 0.024038087 insert f0(1500)Width:InterpolationWidths 106 0.025664475 insert f0(1500)Width:InterpolationWidths 107 0.027357335 insert f0(1500)Width:InterpolationWidths 108 2.9014077e-07 insert f0(1500)Width:InterpolationWidths 109 5.6379621e-07 insert f0(1500)Width:InterpolationWidths 110 1.0152568e-06 insert f0(1500)Width:InterpolationWidths 111 1.7361098e-06 insert f0(1500)Width:InterpolationWidths 112 2.8626426e-06 insert f0(1500)Width:InterpolationWidths 113 4.5995177e-06 insert f0(1500)Width:InterpolationWidths 114 7.2489607e-06 insert f0(1500)Width:InterpolationWidths 115 1.1240939e-05 insert f0(1500)Width:InterpolationWidths 116 1.7155384e-05 insert f0(1500)Width:InterpolationWidths 117 2.5740389e-05 insert f0(1500)Width:InterpolationWidths 118 3.7912109e-05 insert f0(1500)Width:InterpolationWidths 119 5.476918e-05 insert f0(1500)Width:InterpolationWidths 120 7.7567275e-05 insert f0(1500)Width:InterpolationWidths 121 0.00010773507 insert f0(1500)Width:InterpolationWidths 122 0.00014684565 insert f0(1500)Width:InterpolationWidths 123 0.00019660656 insert f0(1500)Width:InterpolationWidths 124 0.00025883888 insert f0(1500)Width:InterpolationWidths 125 0.00033542871 insert f0(1500)Width:InterpolationWidths 126 0.00042832199 insert f0(1500)Width:InterpolationWidths 127 0.00053951132 insert f0(1500)Width:InterpolationWidths 128 0.0006709979 insert f0(1500)Width:InterpolationWidths 129 0.00082474373 insert f0(1500)Width:InterpolationWidths 130 0.0010027356 insert f0(1500)Width:InterpolationWidths 131 0.0012068153 insert f0(1500)Width:InterpolationWidths 132 0.0014392555 insert f0(1500)Width:InterpolationWidths 133 0.0017013363 insert f0(1500)Width:InterpolationWidths 134 0.0019953402 insert f0(1500)Width:InterpolationWidths 135 0.0023228334 insert f0(1500)Width:InterpolationWidths 136 0.0026853295 insert f0(1500)Width:InterpolationWidths 137 0.0030852161 insert f0(1500)Width:InterpolationWidths 138 0.0035235923 insert f0(1500)Width:InterpolationWidths 139 0.0040021646 insert f0(1500)Width:InterpolationWidths 140 0.0045223544 insert f0(1500)Width:InterpolationWidths 141 0.005085979 insert f0(1500)Width:InterpolationWidths 142 0.005694387 insert f0(1500)Width:InterpolationWidths 143 0.0063487066 insert f0(1500)Width:InterpolationWidths 144 0.0070514735 insert f0(1500)Width:InterpolationWidths 145 0.0078025618 insert f0(1500)Width:InterpolationWidths 146 0.0086040017 insert f0(1500)Width:InterpolationWidths 147 0.00945756 insert f0(1500)Width:InterpolationWidths 148 0.010364072 insert f0(1500)Width:InterpolationWidths 149 0.011324944 insert f0(1500)Width:InterpolationWidths 150 0.012340759 insert f0(1500)Width:InterpolationWidths 151 0.013413777 insert f0(1500)Width:InterpolationWidths 152 0.014544573 insert f0(1500)Width:InterpolationWidths 153 0.015734483 insert f0(1500)Width:InterpolationWidths 154 0.016984692 insert f0(1500)Width:InterpolationWidths 155 0.018296133 insert f0(1500)Width:InterpolationWidths 156 0.019669699 insert f0(1500)Width:InterpolationWidths 157 0.0211063 insert f0(1500)Width:InterpolationWidths 158 0.022606838 insert f0(1500)Width:InterpolationWidths 159 0.024172198 insert f0(1500)Width:InterpolationWidths 160 0.025803251 insert f0(1500)Width:InterpolationWidths 161 0.02750085 insert f0(1500)Width:InterpolationWidths 162 0 insert f0(1500)Width:InterpolationWidths 163 0 insert f0(1500)Width:InterpolationWidths 164 0 insert f0(1500)Width:InterpolationWidths 165 3.9299293e-05 insert f0(1500)Width:InterpolationWidths 166 0.0014640887 insert f0(1500)Width:InterpolationWidths 167 0.0039649999 insert f0(1500)Width:InterpolationWidths 168 0.0054418472 insert f0(1500)Width:InterpolationWidths 169 0.0065818413 insert f0(1500)Width:InterpolationWidths 170 0.0075456013 insert f0(1500)Width:InterpolationWidths 171 0.0083953711 insert f0(1500)Width:InterpolationWidths 172 0.0091632672 insert f0(1500)Width:InterpolationWidths 173 0.0098685565 insert f0(1500)Width:InterpolationWidths 174 0.0105239 insert f0(1500)Width:InterpolationWidths 175 0.01550253 insert f0(1500)Width:InterpolationWidths 176 0.01906792 insert f0(1500)Width:InterpolationWidths 177 0.021927885 insert f0(1500)Width:InterpolationWidths 178 0.024338222 insert f0(1500)Width:InterpolationWidths 179 0.026427294 insert f0(1500)Width:InterpolationWidths 180 0.028270882 insert f0(1500)Width:InterpolationWidths 181 0.029918411 insert f0(1500)Width:InterpolationWidths 182 0.031404383 insert f0(1500)Width:InterpolationWidths 183 0.032754103 insert f0(1500)Width:InterpolationWidths 184 0.033986841 insert f0(1500)Width:InterpolationWidths 185 0.035117713 insert f0(1500)Width:InterpolationWidths 186 0.03615886 insert f0(1500)Width:InterpolationWidths 187 0.037120225 insert f0(1500)Width:InterpolationWidths 188 0.038010091 insert f0(1500)Width:InterpolationWidths 189 0.038835447 insert f0(1500)Width:InterpolationWidths 190 0.039602267 insert f0(1500)Width:InterpolationWidths 191 0.040315705 insert f0(1500)Width:InterpolationWidths 192 0.040980252 insert f0(1500)Width:InterpolationWidths 193 0.041599848 insert f0(1500)Width:InterpolationWidths 194 0.042177976 insert f0(1500)Width:InterpolationWidths 195 0.042717735 insert f0(1500)Width:InterpolationWidths 196 0.043221897 insert f0(1500)Width:InterpolationWidths 197 0.043692952 insert f0(1500)Width:InterpolationWidths 198 0.044133149 insert f0(1500)Width:InterpolationWidths 199 0.044544528 insert f0(1500)Width:InterpolationWidths 200 0.044928942 insert f0(1500)Width:InterpolationWidths 201 0.045288088 insert f0(1500)Width:InterpolationWidths 202 0.045623516 insert f0(1500)Width:InterpolationWidths 203 0.045936652 insert f0(1500)Width:InterpolationWidths 204 0.046228809 insert f0(1500)Width:InterpolationWidths 205 0.046501199 insert f0(1500)Width:InterpolationWidths 206 0.046754943 insert f0(1500)Width:InterpolationWidths 207 0.046991082 insert f0(1500)Width:InterpolationWidths 208 0.047210581 insert f0(1500)Width:InterpolationWidths 209 0.047414339 insert f0(1500)Width:InterpolationWidths 210 0.047603197 insert f0(1500)Width:InterpolationWidths 211 0.047777935 insert f0(1500)Width:InterpolationWidths 212 0.047939288 insert f0(1500)Width:InterpolationWidths 213 0.04808794 insert f0(1500)Width:InterpolationWidths 214 0.048224534 insert f0(1500)Width:InterpolationWidths 215 0.048349676 insert f0(1500)Width:InterpolationWidths 216 0.048463931 insert f0(1500)Width:InterpolationWidths 217 0.048567836 insert f0(1500)Width:InterpolationWidths 218 0.048661892 insert f0(1500)Width:InterpolationWidths 219 0.048746575 insert f0(1500)Width:InterpolationWidths 220 0.048822333 insert f0(1500)Width:InterpolationWidths 221 0.048889589 insert f0(1500)Width:InterpolationWidths 222 0.048948743 insert f0(1500)Width:InterpolationWidths 223 0.049000175 insert f0(1500)Width:InterpolationWidths 224 0.049044242 insert f0(1500)Width:InterpolationWidths 225 0 insert f0(1500)Width:InterpolationWidths 226 0 insert f0(1500)Width:InterpolationWidths 227 0 insert f0(1500)Width:InterpolationWidths 228 0.00065660601 insert f0(1500)Width:InterpolationWidths 229 0.00092926944 insert f0(1500)Width:InterpolationWidths 230 0.0011363837 insert f0(1500)Width:InterpolationWidths 231 0.0013094455 insert f0(1500)Width:InterpolationWidths 232 0.0014606226 insert f0(1500)Width:InterpolationWidths 233 0.0015961572 insert f0(1500)Width:InterpolationWidths 234 0.0017197622 insert f0(1500)Width:InterpolationWidths 235 0.0018338616 insert f0(1500)Width:InterpolationWidths 236 0.0019401424 insert f0(1500)Width:InterpolationWidths 237 0.002039836 insert f0(1500)Width:InterpolationWidths 238 0.002799476 insert f0(1500)Width:InterpolationWidths 239 0.0033283837 insert f0(1500)Width:InterpolationWidths 240 0.0037326931 insert f0(1500)Width:InterpolationWidths 241 0.0040551961 insert f0(1500)Width:InterpolationWidths 242 0.0043186635 insert f0(1500)Width:InterpolationWidths 243 0.0045370843 insert f0(1500)Width:InterpolationWidths 244 0.0047198512 insert f0(1500)Width:InterpolationWidths 245 0.0048736631 insert f0(1500)Width:InterpolationWidths 246 0.0050035101 insert f0(1500)Width:InterpolationWidths 247 0.0051132325 insert f0(1500)Width:InterpolationWidths 248 0.0052058617 insert f0(1500)Width:InterpolationWidths 249 0.0052838386 insert f0(1500)Width:InterpolationWidths 250 0.0053491619 insert f0(1500)Width:InterpolationWidths 251 0.0054034893 insert f0(1500)Width:InterpolationWidths 252 0.005448212 insert f0(1500)Width:InterpolationWidths 253 0.0054845083 insert f0(1500)Width:InterpolationWidths 254 0.0055133848 insert f0(1500)Width:InterpolationWidths 255 0.005535707 insert f0(1500)Width:InterpolationWidths 256 0.0055522241 insert f0(1500)Width:InterpolationWidths 257 0.0055635879 insert f0(1500)Width:InterpolationWidths 258 0.0055703683 insert f0(1500)Width:InterpolationWidths 259 0.0055730657 insert f0(1500)Width:InterpolationWidths 260 0.0055721213 insert f0(1500)Width:InterpolationWidths 261 0.0055679252 insert f0(1500)Width:InterpolationWidths 262 0.0055608234 insert f0(1500)Width:InterpolationWidths 263 0.0055511239 insert f0(1500)Width:InterpolationWidths 264 0.0055391013 insert f0(1500)Width:InterpolationWidths 265 0.0055250013 insert f0(1500)Width:InterpolationWidths 266 0.0055090437 insert f0(1500)Width:InterpolationWidths 267 0.0054914262 insert f0(1500)Width:InterpolationWidths 268 0.0054723261 insert f0(1500)Width:InterpolationWidths 269 0.0054519036 insert f0(1500)Width:InterpolationWidths 270 0.0054303028 insert f0(1500)Width:InterpolationWidths 271 0.0054076541 insert f0(1500)Width:InterpolationWidths 272 0.0053840753 insert f0(1500)Width:InterpolationWidths 273 0.0053596731 insert f0(1500)Width:InterpolationWidths 274 0.0053345443 insert f0(1500)Width:InterpolationWidths 275 0.0053087764 insert f0(1500)Width:InterpolationWidths 276 0.0052824493 insert f0(1500)Width:InterpolationWidths 277 0.0052556352 insert f0(1500)Width:InterpolationWidths 278 0.0052283999 insert f0(1500)Width:InterpolationWidths 279 0.0052008033 insert f0(1500)Width:InterpolationWidths 280 0.0051728997 insert f0(1500)Width:InterpolationWidths 281 0.0051447389 insert f0(1500)Width:InterpolationWidths 282 0.0051163659 insert f0(1500)Width:InterpolationWidths 283 0.005087822 insert f0(1500)Width:InterpolationWidths 284 0.0050591445 insert f0(1500)Width:InterpolationWidths 285 0.0050303676 insert f0(1500)Width:InterpolationWidths 286 0.0050015225 insert f0(1500)Width:InterpolationWidths 287 0.0049726375 insert f0(1500)Width:InterpolationWidths 288 0 insert f0(1500)Width:InterpolationWidths 289 0 insert f0(1500)Width:InterpolationWidths 290 0 insert f0(1500)Width:InterpolationWidths 291 2.4141243e-06 insert f0(1500)Width:InterpolationWidths 292 8.0088027e-06 insert f0(1500)Width:InterpolationWidths 293 1.7426588e-05 insert f0(1500)Width:InterpolationWidths 294 3.2052358e-05 insert f0(1500)Width:InterpolationWidths 295 5.3918085e-05 insert f0(1500)Width:InterpolationWidths 296 8.587699e-05 insert f0(1500)Width:InterpolationWidths 297 0.00013188737 insert f0(1500)Width:InterpolationWidths 298 0.00019742141 insert f0(1500)Width:InterpolationWidths 299 0.00029000682 insert f0(1500)Width:InterpolationWidths 300 0.00041997128 insert f0(1500)Width:InterpolationWidths 301 0.00060110345 insert f0(1500)Width:InterpolationWidths 302 0.00085126164 insert f0(1500)Width:InterpolationWidths 303 0.0011913396 insert f0(1500)Width:InterpolationWidths 304 0.0016425824 insert f0(1500)Width:InterpolationWidths 305 0.0022192086 insert f0(1500)Width:InterpolationWidths 306 0.0029213125 insert f0(1500)Width:InterpolationWidths 307 0.0037305557 insert f0(1500)Width:InterpolationWidths 308 0.0046160162 insert f0(1500)Width:InterpolationWidths 309 0.0055441774 insert f0(1500)Width:InterpolationWidths 310 0.0064865119 insert f0(1500)Width:InterpolationWidths 311 0.0074215612 insert f0(1500)Width:InterpolationWidths 312 0.0083383037 insert f0(1500)Width:InterpolationWidths 313 0.0092251054 insert f0(1500)Width:InterpolationWidths 314 0.010078938 insert f0(1500)Width:InterpolationWidths 315 0.010896647 insert f0(1500)Width:InterpolationWidths 316 0.011678933 insert f0(1500)Width:InterpolationWidths 317 0.012424284 insert f0(1500)Width:InterpolationWidths 318 0.013133328 insert f0(1500)Width:InterpolationWidths 319 0.013807444 insert f0(1500)Width:InterpolationWidths 320 0.014447793 insert f0(1500)Width:InterpolationWidths 321 0.015055367 insert f0(1500)Width:InterpolationWidths 322 0.01563152 insert f0(1500)Width:InterpolationWidths 323 0.016177835 insert f0(1500)Width:InterpolationWidths 324 0.016695502 insert f0(1500)Width:InterpolationWidths 325 0.017185509 insert f0(1500)Width:InterpolationWidths 326 0.017649547 insert f0(1500)Width:InterpolationWidths 327 0.018088479 insert f0(1500)Width:InterpolationWidths 328 0.018503253 insert f0(1500)Width:InterpolationWidths 329 0.018891529 insert f0(1500)Width:InterpolationWidths 330 0.019229876 insert f0(1500)Width:InterpolationWidths 331 0.019531962 insert f0(1500)Width:InterpolationWidths 332 0.019804737 insert f0(1500)Width:InterpolationWidths 333 0.020051907 insert f0(1500)Width:InterpolationWidths 334 0.020276136 insert f0(1500)Width:InterpolationWidths 335 0.020479536 insert f0(1500)Width:InterpolationWidths 336 0.020663874 insert f0(1500)Width:InterpolationWidths 337 0.02083067 insert f0(1500)Width:InterpolationWidths 338 0.020981263 insert f0(1500)Width:InterpolationWidths 339 0.021116844 insert f0(1500)Width:InterpolationWidths 340 0.021238488 insert f0(1500)Width:InterpolationWidths 341 0.021347167 insert f0(1500)Width:InterpolationWidths 342 0 insert f0(1500)Width:InterpolationWidths 343 0 insert f0(1500)Width:InterpolationWidths 344 0 insert f0(1500)Width:InterpolationWidths 345 2.4141243e-06 insert f0(1500)Width:InterpolationWidths 346 8.0088027e-06 insert f0(1500)Width:InterpolationWidths 347 1.7426588e-05 insert f0(1500)Width:InterpolationWidths 348 3.2052358e-05 insert f0(1500)Width:InterpolationWidths 349 5.3918085e-05 insert f0(1500)Width:InterpolationWidths 350 8.587699e-05 insert f0(1500)Width:InterpolationWidths 351 0.00013188737 insert f0(1500)Width:InterpolationWidths 352 0.00019742141 insert f0(1500)Width:InterpolationWidths 353 0.00029000682 insert f0(1500)Width:InterpolationWidths 354 0.00041997128 insert f0(1500)Width:InterpolationWidths 355 0.00060110345 insert f0(1500)Width:InterpolationWidths 356 0.00085126164 insert f0(1500)Width:InterpolationWidths 357 0.0011913396 insert f0(1500)Width:InterpolationWidths 358 0.0016425824 insert f0(1500)Width:InterpolationWidths 359 0.0022192086 insert f0(1500)Width:InterpolationWidths 360 0.0029213125 insert f0(1500)Width:InterpolationWidths 361 0.0037305557 insert f0(1500)Width:InterpolationWidths 362 0.0046160162 insert f0(1500)Width:InterpolationWidths 363 0.0055441774 insert f0(1500)Width:InterpolationWidths 364 0.0064865119 insert f0(1500)Width:InterpolationWidths 365 0.0074215612 insert f0(1500)Width:InterpolationWidths 366 0.0083383037 insert f0(1500)Width:InterpolationWidths 367 0.0092251054 insert f0(1500)Width:InterpolationWidths 368 0.010078938 insert f0(1500)Width:InterpolationWidths 369 0.010896647 insert f0(1500)Width:InterpolationWidths 370 0.011678933 insert f0(1500)Width:InterpolationWidths 371 0.012424284 insert f0(1500)Width:InterpolationWidths 372 0.013133328 insert f0(1500)Width:InterpolationWidths 373 0.013807444 insert f0(1500)Width:InterpolationWidths 374 0.014447793 insert f0(1500)Width:InterpolationWidths 375 0.015055367 insert f0(1500)Width:InterpolationWidths 376 0.01563152 insert f0(1500)Width:InterpolationWidths 377 0.016177835 insert f0(1500)Width:InterpolationWidths 378 0.016695502 insert f0(1500)Width:InterpolationWidths 379 0.017185509 insert f0(1500)Width:InterpolationWidths 380 0.017649547 insert f0(1500)Width:InterpolationWidths 381 0.018088479 insert f0(1500)Width:InterpolationWidths 382 0.018503253 insert f0(1500)Width:InterpolationWidths 383 0.018891529 insert f0(1500)Width:InterpolationWidths 384 0.019229876 insert f0(1500)Width:InterpolationWidths 385 0.019531962 insert f0(1500)Width:InterpolationWidths 386 0.019804737 insert f0(1500)Width:InterpolationWidths 387 0.020051907 insert f0(1500)Width:InterpolationWidths 388 0.020276136 insert f0(1500)Width:InterpolationWidths 389 0.020479536 insert f0(1500)Width:InterpolationWidths 390 0.020663874 insert f0(1500)Width:InterpolationWidths 391 0.02083067 insert f0(1500)Width:InterpolationWidths 392 0.020981263 insert f0(1500)Width:InterpolationWidths 393 0.021116844 insert f0(1500)Width:InterpolationWidths 394 0.021238488 insert f0(1500)Width:InterpolationWidths 395 0.021347167 insert f0(1500)Width:InterpolationWidths 396 0 insert f0(1500)Width:InterpolationWidths 397 0 insert f0(1500)Width:InterpolationWidths 398 0 insert f0(1500)Width:InterpolationWidths 399 2.3897924e-06 insert f0(1500)Width:InterpolationWidths 400 7.9384406e-06 insert f0(1500)Width:InterpolationWidths 401 1.7298394e-05 insert f0(1500)Width:InterpolationWidths 402 3.1868162e-05 insert f0(1500)Width:InterpolationWidths 403 5.3700176e-05 insert f0(1500)Width:InterpolationWidths 404 8.569079e-05 insert f0(1500)Width:InterpolationWidths 405 0.00013185012 insert f0(1500)Width:InterpolationWidths 406 0.00019775239 insert f0(1500)Width:InterpolationWidths 407 0.00029107103 insert f0(1500)Width:InterpolationWidths 408 0.00042234702 insert f0(1500)Width:InterpolationWidths 409 0.00060566311 insert f0(1500)Width:InterpolationWidths 410 0.0008592275 insert f0(1500)Width:InterpolationWidths 411 0.0012043525 insert f0(1500)Width:InterpolationWidths 412 0.0016622425 insert f0(1500)Width:InterpolationWidths 413 0.0022468861 insert f0(1500)Width:InterpolationWidths 414 0.0029570549 insert f0(1500)Width:InterpolationWidths 415 0.0037733952 insert f0(1500)Width:InterpolationWidths 416 0.0046641095 insert f0(1500)Width:InterpolationWidths 417 0.0055955451 insert f0(1500)Width:InterpolationWidths 418 0.0065395115 insert f0(1500)Width:InterpolationWidths 419 0.0074758128 insert f0(1500)Width:InterpolationWidths 420 0.0083917782 insert f0(1500)Width:InterpolationWidths 421 0.0092781044 insert f0(1500)Width:InterpolationWidths 422 0.010131188 insert f0(1500)Width:InterpolationWidths 423 0.010948612 insert f0(1500)Width:InterpolationWidths 424 0.011729601 insert f0(1500)Width:InterpolationWidths 425 0.012474071 insert f0(1500)Width:InterpolationWidths 426 0.013182308 insert f0(1500)Width:InterpolationWidths 427 0.013855558 insert f0(1500)Width:InterpolationWidths 428 0.01449505 insert f0(1500)Width:InterpolationWidths 429 0.01510193 insert f0(1500)Width:InterpolationWidths 430 0.015677397 insert f0(1500)Width:InterpolationWidths 431 0.016222848 insert f0(1500)Width:InterpolationWidths 432 0.016739753 insert f0(1500)Width:InterpolationWidths 433 0.017228926 insert f0(1500)Width:InterpolationWidths 434 0.017692276 insert f0(1500)Width:InterpolationWidths 435 0.018130199 insert f0(1500)Width:InterpolationWidths 436 0.018544083 insert f0(1500)Width:InterpolationWidths 437 0.01892778 insert f0(1500)Width:InterpolationWidths 438 0.019261653 insert f0(1500)Width:InterpolationWidths 439 0.019561009 insert f0(1500)Width:InterpolationWidths 440 0.019831625 insert f0(1500)Width:InterpolationWidths 441 0.020076957 insert f0(1500)Width:InterpolationWidths 442 0.020299554 insert f0(1500)Width:InterpolationWidths 443 0.020501464 insert f0(1500)Width:InterpolationWidths 444 0.020684411 insert f0(1500)Width:InterpolationWidths 445 0.020849892 insert f0(1500)Width:InterpolationWidths 446 0.020999227 insert f0(1500)Width:InterpolationWidths 447 0.021133594 insert f0(1500)Width:InterpolationWidths 448 0.021254058 insert f0(1500)Width:InterpolationWidths 449 0.021361587 insert f0(1500)Width:InterpolationWidths 450 6.7982552e-08 insert f0(1500)Width:InterpolationWidths 451 1.2523436e-07 insert f0(1500)Width:InterpolationWidths 452 2.2238398e-07 insert f0(1500)Width:InterpolationWidths 453 3.8372871e-07 insert f0(1500)Width:InterpolationWidths 454 6.473751e-07 insert f0(1500)Width:InterpolationWidths 455 1.0730973e-06 insert f0(1500)Width:InterpolationWidths 456 1.7549188e-06 insert f0(1500)Width:InterpolationWidths 457 2.8413381e-06 insert f0(1500)Width:InterpolationWidths 458 4.5673867e-06 insert f0(1500)Width:InterpolationWidths 459 7.3025207e-06 insert f0(1500)Width:InterpolationWidths 460 1.1612624e-05 insert f0(1500)Width:InterpolationWidths 461 1.8324532e-05 insert f0(1500)Width:InterpolationWidths 462 2.858999e-05 insert f0(1500)Width:InterpolationWidths 463 4.3974419e-05 insert f0(1500)Width:InterpolationWidths 464 6.6595477e-05 insert f0(1500)Width:InterpolationWidths 465 9.9317692e-05 insert f0(1500)Width:InterpolationWidths 466 0.00014601301 insert f0(1500)Width:InterpolationWidths 467 0.00021190801 insert f0(1500)Width:InterpolationWidths 468 0.00030404648 insert f0(1500)Width:InterpolationWidths 469 0.00043190046 insert f0(1500)Width:InterpolationWidths 470 0.00060815775 insert f0(1500)Width:InterpolationWidths 471 0.00084968901 insert f0(1500)Width:InterpolationWidths 472 0.0011786354 insert f0(1500)Width:InterpolationWidths 473 0.0016233699 insert f0(1500)Width:InterpolationWidths 474 0.0022188767 insert f0(1500)Width:InterpolationWidths 475 0.0030056766 insert f0(1500)Width:InterpolationWidths 476 0.0040263911 insert f0(1500)Width:InterpolationWidths 477 0.0053197624 insert f0(1500)Width:InterpolationWidths 478 0.0069137978 insert f0(1500)Width:InterpolationWidths 479 0.0088213926 insert f0(1500)Width:InterpolationWidths 480 0.011040966 insert f0(1500)Width:InterpolationWidths 481 0.013561368 insert f0(1500)Width:InterpolationWidths 482 0.016367898 insert f0(1500)Width:InterpolationWidths 483 0.019446791 insert f0(1500)Width:InterpolationWidths 484 0.022787448 insert f0(1500)Width:InterpolationWidths 485 0.026382949 insert f0(1500)Width:InterpolationWidths 486 0.030229724 insert f0(1500)Width:InterpolationWidths 487 0.034324193 insert f0(1500)Width:InterpolationWidths 488 0.038675613 insert f0(1500)Width:InterpolationWidths 489 0.043278461 insert f0(1500)Width:InterpolationWidths 490 0.048139081 insert f0(1500)Width:InterpolationWidths 491 0.053261732 insert f0(1500)Width:InterpolationWidths 492 0.058651115 insert f0(1500)Width:InterpolationWidths 493 0.06431214 insert f0(1500)Width:InterpolationWidths 494 0.070249719 insert f0(1500)Width:InterpolationWidths 495 0.076468516 insert f0(1500)Width:InterpolationWidths 496 0.082972829 insert f0(1500)Width:InterpolationWidths 497 0.089765927 insert f0(1500)Width:InterpolationWidths 498 0.096849942 insert f0(1500)Width:InterpolationWidths 499 0.10422474 insert f0(1500)Width:InterpolationWidths 500 0.11188741 insert f0(1500)Width:InterpolationWidths 501 0.11983305 insert f0(1500)Width:InterpolationWidths 502 0.12805715 insert f0(1500)Width:InterpolationWidths 503 0.13655781 insert f0(1500)Width:InterpolationWidths 504 3.2055549e-08 insert f0(1500)Width:InterpolationWidths 505 5.9279769e-08 insert f0(1500)Width:InterpolationWidths 506 1.0564089e-07 insert f0(1500)Width:InterpolationWidths 507 1.8288639e-07 insert f0(1500)Width:InterpolationWidths 508 3.094829e-07 insert f0(1500)Width:InterpolationWidths 509 5.1445603e-07 insert f0(1500)Width:InterpolationWidths 510 8.4354361e-07 insert f0(1500)Width:InterpolationWidths 511 1.3690968e-06 insert f0(1500)Width:InterpolationWidths 512 2.2057945e-06 insert f0(1500)Width:InterpolationWidths 513 3.5341777e-06 insert f0(1500)Width:InterpolationWidths 514 5.6312918e-06 insert f0(1500)Width:InterpolationWidths 515 8.9029717e-06 insert f0(1500)Width:InterpolationWidths 516 1.3916316e-05 insert f0(1500)Width:InterpolationWidths 517 2.1444541e-05 insert f0(1500)Width:InterpolationWidths 518 3.2536272e-05 insert f0(1500)Width:InterpolationWidths 519 4.8612821e-05 insert f0(1500)Width:InterpolationWidths 520 7.1598377e-05 insert f0(1500)Width:InterpolationWidths 521 0.00010409383 insert f0(1500)Width:InterpolationWidths 522 0.00014960853 insert f0(1500)Width:InterpolationWidths 523 0.0002128666 insert f0(1500)Width:InterpolationWidths 524 0.00030020207 insert f0(1500)Width:InterpolationWidths 525 0.00042004487 insert f0(1500)Width:InterpolationWidths 526 0.0005834643 insert f0(1500)Width:InterpolationWidths 527 0.00080465795 insert f0(1500)Width:InterpolationWidths 528 0.0011011368 insert f0(1500)Width:InterpolationWidths 529 0.0014931881 insert f0(1500)Width:InterpolationWidths 530 0.0020021493 insert f0(1500)Width:InterpolationWidths 531 0.0026474061 insert f0(1500)Width:InterpolationWidths 532 0.0034429585 insert f0(1500)Width:InterpolationWidths 533 0.0043952377 insert f0(1500)Width:InterpolationWidths 534 0.0055034394 insert f0(1500)Width:InterpolationWidths 535 0.0067619868 insert f0(1500)Width:InterpolationWidths 536 0.0081635422 insert f0(1500)Width:InterpolationWidths 537 0.0097012444 insert f0(1500)Width:InterpolationWidths 538 0.011369815 insert f0(1500)Width:InterpolationWidths 539 0.013165815 insert f0(1500)Width:InterpolationWidths 540 0.015087476 insert f0(1500)Width:InterpolationWidths 541 0.017132981 insert f0(1500)Width:InterpolationWidths 542 0.019307088 insert f0(1500)Width:InterpolationWidths 543 0.021606925 insert f0(1500)Width:InterpolationWidths 544 0.024035712 insert f0(1500)Width:InterpolationWidths 545 0.026595582 insert f0(1500)Width:InterpolationWidths 546 0.029288894 insert f0(1500)Width:InterpolationWidths 547 0.032118107 insert f0(1500)Width:InterpolationWidths 548 0.035085682 insert f0(1500)Width:InterpolationWidths 549 0.038193957 insert f0(1500)Width:InterpolationWidths 550 0.041445083 insert f0(1500)Width:InterpolationWidths 551 0.044840696 insert f0(1500)Width:InterpolationWidths 552 0.048381861 insert f0(1500)Width:InterpolationWidths 553 0.052068488 insert f0(1500)Width:InterpolationWidths 554 0.055899129 insert f0(1500)Width:InterpolationWidths 555 0.059871297 insert f0(1500)Width:InterpolationWidths 556 0.063982733 insert f0(1500)Width:InterpolationWidths 557 0.06823249 insert f0(1500)Width:InterpolationWidths 558 0.00065786106 insert f0(1500)Width:InterpolationWidths 559 0.0007985421 insert f0(1500)Width:InterpolationWidths 560 0.00095765714 insert f0(1500)Width:InterpolationWidths 561 0.0011364507 insert f0(1500)Width:InterpolationWidths 562 0.0013362062 insert f0(1500)Width:InterpolationWidths 563 0.0015582413 insert f0(1500)Width:InterpolationWidths 564 0.0018039017 insert f0(1500)Width:InterpolationWidths 565 0.0020745513 insert f0(1500)Width:InterpolationWidths 566 0.0023715614 insert f0(1500)Width:InterpolationWidths 567 0.0026962969 insert f0(1500)Width:InterpolationWidths 568 0.0030501 insert f0(1500)Width:InterpolationWidths 569 0.0034342732 insert f0(1500)Width:InterpolationWidths 570 0.0038500595 insert f0(1500)Width:InterpolationWidths 571 0.0042986236 insert f0(1500)Width:InterpolationWidths 572 0.0047810317 insert f0(1500)Width:InterpolationWidths 573 0.0052982328 insert f0(1500)Width:InterpolationWidths 574 0.0058510418 insert f0(1500)Width:InterpolationWidths 575 0.0064401248 insert f0(1500)Width:InterpolationWidths 576 0.007065987 insert f0(1500)Width:InterpolationWidths 577 0.0077289641 insert f0(1500)Width:InterpolationWidths 578 0.0084292169 insert f0(1500)Width:InterpolationWidths 579 0.0091667292 insert f0(1500)Width:InterpolationWidths 580 0.009941308 insert f0(1500)Width:InterpolationWidths 581 0.010752586 insert f0(1500)Width:InterpolationWidths 582 0.011600028 insert f0(1500)Width:InterpolationWidths 583 0.012482934 insert f0(1500)Width:InterpolationWidths 584 0.013400447 insert f0(1500)Width:InterpolationWidths 585 0.014351562 insert f0(1500)Width:InterpolationWidths 586 0.015335129 insert f0(1500)Width:InterpolationWidths 587 0.016349866 insert f0(1500)Width:InterpolationWidths 588 0.017394361 insert f0(1500)Width:InterpolationWidths 589 0.018467081 insert f0(1500)Width:InterpolationWidths 590 0.019566379 insert f0(1500)Width:InterpolationWidths 591 0.020690502 insert f0(1500)Width:InterpolationWidths 592 0.021837598 insert f0(1500)Width:InterpolationWidths 593 0.023005723 insert f0(1500)Width:InterpolationWidths 594 0.024192848 insert f0(1500)Width:InterpolationWidths 595 0.025396872 insert f0(1500)Width:InterpolationWidths 596 0.02661563 insert f0(1500)Width:InterpolationWidths 597 0.0278469 insert f0(1500)Width:InterpolationWidths 598 0.02908842 insert f0(1500)Width:InterpolationWidths 599 0.030337895 insert f0(1500)Width:InterpolationWidths 600 0.031593015 insert f0(1500)Width:InterpolationWidths 601 0.03285146 insert f0(1500)Width:InterpolationWidths 602 0.034110922 insert f0(1500)Width:InterpolationWidths 603 0.035369113 insert f0(1500)Width:InterpolationWidths 604 0.036623782 insert f0(1500)Width:InterpolationWidths 605 0.037872726 insert f0(1500)Width:InterpolationWidths 606 0.039113803 insert f0(1500)Width:InterpolationWidths 607 0.040344945 insert f0(1500)Width:InterpolationWidths 608 0.041564169 insert f0(1500)Width:InterpolationWidths 609 0.042769587 insert f0(1500)Width:InterpolationWidths 610 0.043959415 insert f0(1500)Width:InterpolationWidths 611 0.045131978 insert f0(1500)Width:NumberofEntries 0 0 insert f0(1500)Width:NumberofEntries 1 0 insert f0(1500)Width:NumberofEntries 2 54 insert f0(1500)Width:NumberofEntries 3 108 insert f0(1500)Width:NumberofEntries 4 162 insert f0(1500)Width:NumberofEntries 5 225 insert f0(1500)Width:NumberofEntries 6 288 insert f0(1500)Width:NumberofEntries 7 342 insert f0(1500)Width:NumberofEntries 8 396 insert f0(1500)Width:NumberofEntries 9 450 insert f0(1500)Width:NumberofEntries 10 450 insert f0(1500)Width:NumberofEntries 11 450 insert f0(1500)Width:NumberofEntries 12 504 insert f0(1500)Width:NumberofEntries 13 558 insert f0(1500)Width:NumberofEntries 14 612 newdef /Herwig/Particles/f_0(1500):Width_generator f0(1500)Width # create Herwig::GenericWidthGenerator rho_30Width newdef rho_30Width:Particle /Herwig/Particles/rho_30 newdef rho_30Width:Prefactor 1.05681 newdef rho_30Width:BRNormalize 1 newdef rho_30Width:BRMinimum 0.01 newdef rho_30Width:Points 50 newdef rho_30Width:InterpolationOrder 1 insert rho_30Width:MEtype 0 0 insert rho_30Width:MEtype 1 0 insert rho_30Width:MEtype 2 0 insert rho_30Width:MEtype 3 0 insert rho_30Width:MEtype 4 0 insert rho_30Width:MEtype 5 0 insert rho_30Width:MEtype 6 0 insert rho_30Width:MEtype 7 0 insert rho_30Width:MEtype 8 0 insert rho_30Width:MEtype 9 0 insert rho_30Width:MEtype 10 0 insert rho_30Width:MEcode 0 0 insert rho_30Width:MEcode 1 0 insert rho_30Width:MEcode 2 0 insert rho_30Width:MEcode 3 0 insert rho_30Width:MEcode 4 0 insert rho_30Width:MEcode 5 0 insert rho_30Width:MEcode 6 0 insert rho_30Width:MEcode 7 0 insert rho_30Width:MEcode 8 0 insert rho_30Width:MEcode 9 0 insert rho_30Width:MEcode 10 0 insert rho_30Width:MEcoupling 0 0.009492 insert rho_30Width:MEcoupling 1 0.009492 insert rho_30Width:MEcoupling 2 0.009492 insert rho_30Width:MEcoupling 3 0.009492 insert rho_30Width:MEcoupling 4 0.007894 insert rho_30Width:MEcoupling 5 0.007894 insert rho_30Width:MEcoupling 6 0.234443 insert rho_30Width:MEcoupling 7 0.234443 insert rho_30Width:MEcoupling 8 0.16 insert rho_30Width:MEcoupling 9 0.235811 insert rho_30Width:MEcoupling 10 0.081547 insert rho_30Width:ModeOn 0 0 insert rho_30Width:ModeOn 1 0 insert rho_30Width:ModeOn 2 0 insert rho_30Width:ModeOn 3 0 insert rho_30Width:ModeOn 4 0 insert rho_30Width:ModeOn 5 0 insert rho_30Width:ModeOn 6 1 insert rho_30Width:ModeOn 7 1 insert rho_30Width:ModeOn 8 1 insert rho_30Width:ModeOn 9 1 insert rho_30Width:ModeOn 10 1 insert rho_30Width:MinimumMasses 0 1.13534 insert rho_30Width:MinimumMasses 1 1.13534 insert rho_30Width:MinimumMasses 2 1.14365 insert rho_30Width:MinimumMasses 3 1.14365 insert rho_30Width:MinimumMasses 4 0.987354 insert rho_30Width:MinimumMasses 5 0.995296 insert rho_30Width:MinimumMasses 6 1.13687 insert rho_30Width:MinimumMasses 7 1.13687 insert rho_30Width:MinimumMasses 8 0.832728 insert rho_30Width:MinimumMasses 9 0.27914 insert rho_30Width:MinimumMasses 10 0.751 insert rho_30Width:MEmass1 0 0 insert rho_30Width:MEmass1 1 0 insert rho_30Width:MEmass1 2 0 insert rho_30Width:MEmass1 3 0 insert rho_30Width:MEmass1 4 0 insert rho_30Width:MEmass1 5 0 insert rho_30Width:MEmass1 6 0 insert rho_30Width:MEmass1 7 0 insert rho_30Width:MEmass1 8 0 insert rho_30Width:MEmass1 9 0 insert rho_30Width:MEmass1 10 0 insert rho_30Width:MEmass2 0 0 insert rho_30Width:MEmass2 1 0 insert rho_30Width:MEmass2 2 0 insert rho_30Width:MEmass2 3 0 insert rho_30Width:MEmass2 4 0 insert rho_30Width:MEmass2 5 0 insert rho_30Width:MEmass2 6 0 insert rho_30Width:MEmass2 7 0 insert rho_30Width:MEmass2 8 0 insert rho_30Width:MEmass2 9 0 insert rho_30Width:MEmass2 10 0 insert rho_30Width:DecayModes 0 rho_30->K*+,K-; insert rho_30Width:DecayModes 1 rho_30->K*-,K+; insert rho_30Width:DecayModes 2 rho_30->K*0,Kbar0; insert rho_30Width:DecayModes 3 rho_30->K*bar0,K0; insert rho_30Width:DecayModes 4 rho_30->K+,K-; insert rho_30Width:DecayModes 5 rho_30->K0,Kbar0; insert rho_30Width:DecayModes 6 rho_30->a_2+,pi-; insert rho_30Width:DecayModes 7 rho_30->a_2-,pi+; insert rho_30Width:DecayModes 8 rho_30->omega,pi0; insert rho_30Width:DecayModes 9 rho_30->pi+,pi-; insert rho_30Width:DecayModes 10 rho_30->rho+,rho-; insert rho_30Width:NumberofEntries 0 0 insert rho_30Width:NumberofEntries 1 0 insert rho_30Width:NumberofEntries 2 0 insert rho_30Width:NumberofEntries 3 0 insert rho_30Width:NumberofEntries 4 0 insert rho_30Width:NumberofEntries 5 0 insert rho_30Width:NumberofEntries 6 0 insert rho_30Width:NumberofEntries 7 0 insert rho_30Width:NumberofEntries 8 0 insert rho_30Width:NumberofEntries 9 0 insert rho_30Width:NumberofEntries 10 0 newdef /Herwig/Particles/rho_30:Width_generator rho_30Width # create Herwig::GenericWidthGenerator rho_3+Width newdef rho_3+Width:Particle /Herwig/Particles/rho_3+ newdef rho_3+Width:Prefactor 1 newdef rho_3+Width:BRNormalize 1 newdef rho_3+Width:BRMinimum 0.01 newdef rho_3+Width:Points 50 newdef rho_3+Width:InterpolationOrder 1 insert rho_3+Width:MEtype 0 0 insert rho_3+Width:MEtype 1 0 insert rho_3+Width:MEtype 2 0 insert rho_3+Width:MEtype 3 0 insert rho_3+Width:MEtype 4 0 insert rho_3+Width:MEtype 5 0 insert rho_3+Width:MEtype 6 0 insert rho_3+Width:MEtype 7 0 insert rho_3+Width:MEcode 0 0 insert rho_3+Width:MEcode 1 0 insert rho_3+Width:MEcode 2 0 insert rho_3+Width:MEcode 3 0 insert rho_3+Width:MEcode 4 0 insert rho_3+Width:MEcode 5 0 insert rho_3+Width:MEcode 6 0 insert rho_3+Width:MEcode 7 0 insert rho_3+Width:MEcoupling 0 0.018985 insert rho_3+Width:MEcoupling 1 0.018985 insert rho_3+Width:MEcoupling 2 0.015787 insert rho_3+Width:MEcoupling 3 0.234443 insert rho_3+Width:MEcoupling 4 0.16 insert rho_3+Width:MEcoupling 5 0.234443 insert rho_3+Width:MEcoupling 6 0.23581 insert rho_3+Width:MEcoupling 7 0.081547 insert rho_3+Width:ModeOn 0 1 insert rho_3+Width:ModeOn 1 1 insert rho_3+Width:ModeOn 2 1 insert rho_3+Width:ModeOn 3 1 insert rho_3+Width:ModeOn 4 1 insert rho_3+Width:ModeOn 5 1 insert rho_3+Width:ModeOn 6 1 insert rho_3+Width:ModeOn 7 1 insert rho_3+Width:MinimumMasses 0 1.13931 insert rho_3+Width:MinimumMasses 1 1.13968 insert rho_3+Width:MinimumMasses 2 0.991325 insert rho_3+Width:MinimumMasses 3 1.13228 insert rho_3+Width:MinimumMasses 4 0.83732 insert rho_3+Width:MinimumMasses 5 1.13687 insert rho_3+Width:MinimumMasses 6 0.274548 insert rho_3+Width:MinimumMasses 7 0.751 insert rho_3+Width:MEmass1 0 0 insert rho_3+Width:MEmass1 1 0 insert rho_3+Width:MEmass1 2 0 insert rho_3+Width:MEmass1 3 0 insert rho_3+Width:MEmass1 4 0 insert rho_3+Width:MEmass1 5 0 insert rho_3+Width:MEmass1 6 0 insert rho_3+Width:MEmass1 7 0 insert rho_3+Width:MEmass2 0 0 insert rho_3+Width:MEmass2 1 0 insert rho_3+Width:MEmass2 2 0 insert rho_3+Width:MEmass2 3 0 insert rho_3+Width:MEmass2 4 0 insert rho_3+Width:MEmass2 5 0 insert rho_3+Width:MEmass2 6 0 insert rho_3+Width:MEmass2 7 0 insert rho_3+Width:DecayModes 0 rho_3+->K*+,Kbar0; insert rho_3+Width:DecayModes 1 rho_3+->K+,K*bar0; insert rho_3+Width:DecayModes 2 rho_3+->K+,Kbar0; insert rho_3+Width:DecayModes 3 rho_3+->a_2+,pi0; insert rho_3+Width:DecayModes 4 rho_3+->omega,pi+; insert rho_3+Width:DecayModes 5 rho_3+->pi+,a_20; insert rho_3+Width:DecayModes 6 rho_3+->pi+,pi0; insert rho_3+Width:DecayModes 7 rho_3+->rho+,rho0; insert rho_3+Width:NumberofEntries 0 0 insert rho_3+Width:NumberofEntries 1 0 insert rho_3+Width:NumberofEntries 2 0 insert rho_3+Width:NumberofEntries 3 0 insert rho_3+Width:NumberofEntries 4 0 insert rho_3+Width:NumberofEntries 5 0 insert rho_3+Width:NumberofEntries 6 0 insert rho_3+Width:NumberofEntries 7 0 newdef /Herwig/Particles/rho_3+:Width_generator rho_3+Width newdef /Herwig/Particles/rho_3-:Width_generator rho_3+Width # create Herwig::GenericWidthGenerator omega_3Width newdef omega_3Width:Particle /Herwig/Particles/omega_3 newdef omega_3Width:Prefactor 1 newdef omega_3Width:BRNormalize 1 newdef omega_3Width:BRMinimum 0.01 newdef omega_3Width:Points 50 newdef omega_3Width:InterpolationOrder 1 insert omega_3Width:MEtype 0 0 insert omega_3Width:MEtype 1 0 insert omega_3Width:MEtype 2 0 insert omega_3Width:MEtype 3 0 insert omega_3Width:MEtype 4 0 insert omega_3Width:MEtype 5 0 insert omega_3Width:MEcode 0 0 insert omega_3Width:MEcode 1 0 insert omega_3Width:MEcode 2 0 insert omega_3Width:MEcode 3 0 insert omega_3Width:MEcode 4 0 insert omega_3Width:MEcode 5 0 insert omega_3Width:MEcoupling 0 0.138401 insert omega_3Width:MEcoupling 1 0.138401 insert omega_3Width:MEcoupling 2 0.138401 insert omega_3Width:MEcoupling 3 0.194932 insert omega_3Width:MEcoupling 4 0.194932 insert omega_3Width:MEcoupling 5 0.194933 insert omega_3Width:ModeOn 0 1 insert omega_3Width:ModeOn 1 1 insert omega_3Width:ModeOn 2 1 insert omega_3Width:ModeOn 3 1 insert omega_3Width:ModeOn 4 1 insert omega_3Width:ModeOn 5 1 insert omega_3Width:MinimumMasses 0 1.06907 insert omega_3Width:MinimumMasses 1 1.06907 insert omega_3Width:MinimumMasses 2 1.06448 insert omega_3Width:MinimumMasses 3 0.51507 insert omega_3Width:MinimumMasses 4 0.51507 insert omega_3Width:MinimumMasses 5 0.510478 insert omega_3Width:MEmass1 0 0 insert omega_3Width:MEmass1 1 0 insert omega_3Width:MEmass1 2 0 insert omega_3Width:MEmass1 3 0 insert omega_3Width:MEmass1 4 0 insert omega_3Width:MEmass1 5 0 insert omega_3Width:MEmass2 0 0 insert omega_3Width:MEmass2 1 0 insert omega_3Width:MEmass2 2 0 insert omega_3Width:MEmass2 3 0 insert omega_3Width:MEmass2 4 0 insert omega_3Width:MEmass2 5 0 insert omega_3Width:DecayModes 0 omega_3->b_1+,pi-; insert omega_3Width:DecayModes 1 omega_3->b_1-,pi+; insert omega_3Width:DecayModes 2 omega_3->b_10,pi0; insert omega_3Width:DecayModes 3 omega_3->rho+,pi-; insert omega_3Width:DecayModes 4 omega_3->rho-,pi+; insert omega_3Width:DecayModes 5 omega_3->rho0,pi0; insert omega_3Width:NumberofEntries 0 0 insert omega_3Width:NumberofEntries 1 0 insert omega_3Width:NumberofEntries 2 0 insert omega_3Width:NumberofEntries 3 0 insert omega_3Width:NumberofEntries 4 0 insert omega_3Width:NumberofEntries 5 0 newdef /Herwig/Particles/omega_3:Width_generator omega_3Width # create Herwig::GenericWidthGenerator phi_3Width newdef phi_3Width:Particle /Herwig/Particles/phi_3 newdef phi_3Width:Prefactor 1 newdef phi_3Width:BRNormalize 1 newdef phi_3Width:BRMinimum 0.01 newdef phi_3Width:Points 50 newdef phi_3Width:InterpolationOrder 1 insert phi_3Width:MEtype 0 0 insert phi_3Width:MEtype 1 0 insert phi_3Width:MEtype 2 0 insert phi_3Width:MEtype 3 0 insert phi_3Width:MEtype 4 0 insert phi_3Width:MEtype 5 0 insert phi_3Width:MEcode 0 0 insert phi_3Width:MEcode 1 0 insert phi_3Width:MEcode 2 0 insert phi_3Width:MEcode 3 0 insert phi_3Width:MEcode 4 0 insert phi_3Width:MEcode 5 0 insert phi_3Width:MEcoupling 0 0.088709 insert phi_3Width:MEcoupling 1 0.088709 insert phi_3Width:MEcoupling 2 0.088709 insert phi_3Width:MEcoupling 3 0.088709 insert phi_3Width:MEcoupling 4 0.322582 insert phi_3Width:MEcoupling 5 0.322582 insert phi_3Width:ModeOn 0 1 insert phi_3Width:ModeOn 1 1 insert phi_3Width:ModeOn 2 1 insert phi_3Width:ModeOn 3 1 insert phi_3Width:ModeOn 4 1 insert phi_3Width:ModeOn 5 1 insert phi_3Width:MinimumMasses 0 1.13534 insert phi_3Width:MinimumMasses 1 1.13534 insert phi_3Width:MinimumMasses 2 1.14365 insert phi_3Width:MinimumMasses 3 1.14365 insert phi_3Width:MinimumMasses 4 0.987354 insert phi_3Width:MinimumMasses 5 0.995296 insert phi_3Width:MEmass1 0 0 insert phi_3Width:MEmass1 1 0 insert phi_3Width:MEmass1 2 0 insert phi_3Width:MEmass1 3 0 insert phi_3Width:MEmass1 4 0 insert phi_3Width:MEmass1 5 0 insert phi_3Width:MEmass2 0 0 insert phi_3Width:MEmass2 1 0 insert phi_3Width:MEmass2 2 0 insert phi_3Width:MEmass2 3 0 insert phi_3Width:MEmass2 4 0 insert phi_3Width:MEmass2 5 0 insert phi_3Width:DecayModes 0 phi_3->K*+,K-; insert phi_3Width:DecayModes 1 phi_3->K*-,K+; insert phi_3Width:DecayModes 2 phi_3->K*0,Kbar0; insert phi_3Width:DecayModes 3 phi_3->K*bar0,K0; insert phi_3Width:DecayModes 4 phi_3->K+,K-; insert phi_3Width:DecayModes 5 phi_3->K0,Kbar0; insert phi_3Width:NumberofEntries 0 0 insert phi_3Width:NumberofEntries 1 0 insert phi_3Width:NumberofEntries 2 0 insert phi_3Width:NumberofEntries 3 0 insert phi_3Width:NumberofEntries 4 0 insert phi_3Width:NumberofEntries 5 0 newdef /Herwig/Particles/phi_3:Width_generator phi_3Width # create Herwig::GenericWidthGenerator pi_20Width newdef pi_20Width:Particle /Herwig/Particles/pi_20 newdef pi_20Width:Prefactor 0.99999 newdef pi_20Width:BRNormalize 1 newdef pi_20Width:BRMinimum 0.01 newdef pi_20Width:Points 50 newdef pi_20Width:InterpolationOrder 1 insert pi_20Width:MEtype 0 0 insert pi_20Width:MEtype 1 0 insert pi_20Width:MEtype 2 0 insert pi_20Width:MEtype 3 0 insert pi_20Width:MEtype 4 0 insert pi_20Width:MEtype 5 0 insert pi_20Width:MEtype 6 0 insert pi_20Width:MEtype 7 0 insert pi_20Width:MEtype 8 2 insert pi_20Width:MEcode 0 0 insert pi_20Width:MEcode 1 0 insert pi_20Width:MEcode 2 0 insert pi_20Width:MEcode 3 0 insert pi_20Width:MEcode 4 0 insert pi_20Width:MEcode 5 0 insert pi_20Width:MEcode 6 0 insert pi_20Width:MEcode 7 0 insert pi_20Width:MEcode 8 0 insert pi_20Width:MEcoupling 0 0.010224 insert pi_20Width:MEcoupling 1 0.010224 insert pi_20Width:MEcoupling 2 0.010224 insert pi_20Width:MEcoupling 3 0.010224 insert pi_20Width:MEcoupling 4 0.546654 insert pi_20Width:MEcoupling 5 0.02629 insert pi_20Width:MEcoupling 6 0.150768 insert pi_20Width:MEcoupling 7 0.150768 insert pi_20Width:MEcoupling 8 1.00412 insert pi_20Width:ModeOn 0 1 insert pi_20Width:ModeOn 1 1 insert pi_20Width:ModeOn 2 1 insert pi_20Width:ModeOn 3 1 insert pi_20Width:ModeOn 4 1 insert pi_20Width:ModeOn 5 1 insert pi_20Width:ModeOn 6 1 insert pi_20Width:ModeOn 7 1 insert pi_20Width:ModeOn 8 1 insert pi_20Width:MinimumMasses 0 1.13534 insert pi_20Width:MinimumMasses 1 1.13534 insert pi_20Width:MinimumMasses 2 1.14365 insert pi_20Width:MinimumMasses 3 1.14365 insert pi_20Width:MinimumMasses 4 1.22518 insert pi_20Width:MinimumMasses 5 1.07325 insert pi_20Width:MinimumMasses 6 0.51507 insert pi_20Width:MinimumMasses 7 0.51507 insert pi_20Width:MinimumMasses 8 0.444978 insert pi_20Width:MEmass1 0 0 insert pi_20Width:MEmass1 1 0 insert pi_20Width:MEmass1 2 0 insert pi_20Width:MEmass1 3 0 insert pi_20Width:MEmass1 4 0 insert pi_20Width:MEmass1 5 0 insert pi_20Width:MEmass1 6 0 insert pi_20Width:MEmass1 7 0 insert pi_20Width:MEmass1 8 0.86 insert pi_20Width:MEmass2 0 0 insert pi_20Width:MEmass2 1 0 insert pi_20Width:MEmass2 2 0 insert pi_20Width:MEmass2 3 0 insert pi_20Width:MEmass2 4 0 insert pi_20Width:MEmass2 5 0 insert pi_20Width:MEmass2 6 0 insert pi_20Width:MEmass2 7 0 insert pi_20Width:MEmass2 8 0.134978 insert pi_20Width:DecayModes 0 pi_20->K*+,K-; insert pi_20Width:DecayModes 1 pi_20->K*-,K+; insert pi_20Width:DecayModes 2 pi_20->K*0,Kbar0; insert pi_20Width:DecayModes 3 pi_20->K*bar0,K0; insert pi_20Width:DecayModes 4 pi_20->f_2,pi0; insert pi_20Width:DecayModes 5 pi_20->omega,rho0; insert pi_20Width:DecayModes 6 pi_20->rho+,pi-; insert pi_20Width:DecayModes 7 pi_20->rho-,pi+; insert pi_20Width:DecayModes 8 pi_20->sigma,pi0; insert pi_20Width:InterpolationMasses 0 1.3922571 insert pi_20Width:InterpolationMasses 1 1.4028286 insert pi_20Width:InterpolationMasses 2 1.4134 insert pi_20Width:InterpolationMasses 3 1.4239714 insert pi_20Width:InterpolationMasses 4 1.4345429 insert pi_20Width:InterpolationMasses 5 1.4451143 insert pi_20Width:InterpolationMasses 6 1.4556857 insert pi_20Width:InterpolationMasses 7 1.4662571 insert pi_20Width:InterpolationMasses 8 1.4768286 insert pi_20Width:InterpolationMasses 9 1.4874 insert pi_20Width:InterpolationMasses 10 1.4979714 insert pi_20Width:InterpolationMasses 11 1.5085429 insert pi_20Width:InterpolationMasses 12 1.5191143 insert pi_20Width:InterpolationMasses 13 1.5296857 insert pi_20Width:InterpolationMasses 14 1.5402571 insert pi_20Width:InterpolationMasses 15 1.5508286 insert pi_20Width:InterpolationMasses 16 1.5614 insert pi_20Width:InterpolationMasses 17 1.5719714 insert pi_20Width:InterpolationMasses 18 1.5825429 insert pi_20Width:InterpolationMasses 19 1.5931143 insert pi_20Width:InterpolationMasses 20 1.6036857 insert pi_20Width:InterpolationMasses 21 1.6142571 insert pi_20Width:InterpolationMasses 22 1.6248286 insert pi_20Width:InterpolationMasses 23 1.6354 insert pi_20Width:InterpolationMasses 24 1.6459714 insert pi_20Width:InterpolationMasses 25 1.6565429 insert pi_20Width:InterpolationMasses 26 1.6671143 insert pi_20Width:InterpolationMasses 27 1.6776857 insert pi_20Width:InterpolationMasses 28 1.6882571 insert pi_20Width:InterpolationMasses 29 1.6988286 insert pi_20Width:InterpolationMasses 30 1.7094 insert pi_20Width:InterpolationMasses 31 1.7199714 insert pi_20Width:InterpolationMasses 32 1.7305429 insert pi_20Width:InterpolationMasses 33 1.7411143 insert pi_20Width:InterpolationMasses 34 1.7516857 insert pi_20Width:InterpolationMasses 35 1.7622571 insert pi_20Width:InterpolationMasses 36 1.7728286 insert pi_20Width:InterpolationMasses 37 1.7834 insert pi_20Width:InterpolationMasses 38 1.7939714 insert pi_20Width:InterpolationMasses 39 1.8045429 insert pi_20Width:InterpolationMasses 40 1.8151143 insert pi_20Width:InterpolationMasses 41 1.8256857 insert pi_20Width:InterpolationMasses 42 1.8362571 insert pi_20Width:InterpolationMasses 43 1.8468286 insert pi_20Width:InterpolationMasses 44 1.8574 insert pi_20Width:InterpolationMasses 45 1.8679714 insert pi_20Width:InterpolationMasses 46 1.8785429 insert pi_20Width:InterpolationMasses 47 1.8891143 insert pi_20Width:InterpolationMasses 48 1.8996857 insert pi_20Width:InterpolationMasses 49 1.9102571 insert pi_20Width:InterpolationMasses 50 1.9208286 insert pi_20Width:InterpolationMasses 51 1.9314 insert pi_20Width:InterpolationMasses 52 1.9419714 insert pi_20Width:InterpolationMasses 53 1.9525429 insert pi_20Width:InterpolationWidths 0 0.007424652 insert pi_20Width:InterpolationWidths 1 0.0077772699 insert pi_20Width:InterpolationWidths 2 0.0081424928 insert pi_20Width:InterpolationWidths 3 0.0085206055 insert pi_20Width:InterpolationWidths 4 0.0089118935 insert pi_20Width:InterpolationWidths 5 0.009316644 insert pi_20Width:InterpolationWidths 6 0.0097351451 insert pi_20Width:InterpolationWidths 7 0.010167686 insert pi_20Width:InterpolationWidths 8 0.010614556 insert pi_20Width:InterpolationWidths 9 0.011076047 insert pi_20Width:InterpolationWidths 10 0.01155245 insert pi_20Width:InterpolationWidths 11 0.012044058 insert pi_20Width:InterpolationWidths 12 0.012551163 insert pi_20Width:InterpolationWidths 13 0.013074059 insert pi_20Width:InterpolationWidths 14 0.01361304 insert pi_20Width:InterpolationWidths 15 0.0141684 insert pi_20Width:InterpolationWidths 16 0.014740435 insert pi_20Width:InterpolationWidths 17 0.015329438 insert pi_20Width:InterpolationWidths 18 0.015935706 insert pi_20Width:InterpolationWidths 19 0.016559533 insert pi_20Width:InterpolationWidths 20 0.017201215 insert pi_20Width:InterpolationWidths 21 0.017861049 insert pi_20Width:InterpolationWidths 22 0.018539328 insert pi_20Width:InterpolationWidths 23 0.01923635 insert pi_20Width:InterpolationWidths 24 0.019952408 insert pi_20Width:InterpolationWidths 25 0.0206878 insert pi_20Width:InterpolationWidths 26 0.021442819 insert pi_20Width:InterpolationWidths 27 0.022217762 insert pi_20Width:InterpolationWidths 28 0.023012922 insert pi_20Width:InterpolationWidths 29 0.023828594 insert pi_20Width:InterpolationWidths 30 0.024665073 insert pi_20Width:InterpolationWidths 31 0.025522651 insert pi_20Width:InterpolationWidths 32 0.026401624 insert pi_20Width:InterpolationWidths 33 0.027302283 insert pi_20Width:InterpolationWidths 34 0.028224921 insert pi_20Width:InterpolationWidths 35 0.029169832 insert pi_20Width:InterpolationWidths 36 0.030137305 insert pi_20Width:InterpolationWidths 37 0.031127634 insert pi_20Width:InterpolationWidths 38 0.032141107 insert pi_20Width:InterpolationWidths 39 0.033178016 insert pi_20Width:InterpolationWidths 40 0.034238651 insert pi_20Width:InterpolationWidths 41 0.0353233 insert pi_20Width:InterpolationWidths 42 0.036432252 insert pi_20Width:InterpolationWidths 43 0.037565794 insert pi_20Width:InterpolationWidths 44 0.038724215 insert pi_20Width:InterpolationWidths 45 0.039907801 insert pi_20Width:InterpolationWidths 46 0.041116838 insert pi_20Width:InterpolationWidths 47 0.042351611 insert pi_20Width:InterpolationWidths 48 0.043612405 insert pi_20Width:InterpolationWidths 49 0.044899505 insert pi_20Width:InterpolationWidths 50 0.046213193 insert pi_20Width:InterpolationWidths 51 0.047553753 insert pi_20Width:InterpolationWidths 52 0.048921467 insert pi_20Width:InterpolationWidths 53 0.050316616 insert pi_20Width:NumberofEntries 0 0 insert pi_20Width:NumberofEntries 1 0 insert pi_20Width:NumberofEntries 2 0 insert pi_20Width:NumberofEntries 3 0 insert pi_20Width:NumberofEntries 4 0 insert pi_20Width:NumberofEntries 5 0 insert pi_20Width:NumberofEntries 6 0 insert pi_20Width:NumberofEntries 7 0 insert pi_20Width:NumberofEntries 8 54 newdef /Herwig/Particles/pi_20:Width_generator pi_20Width # create Herwig::GenericWidthGenerator pi_2+Width newdef pi_2+Width:Particle /Herwig/Particles/pi_2+ newdef pi_2+Width:Prefactor 0.99999 newdef pi_2+Width:BRNormalize 1 newdef pi_2+Width:BRMinimum 0.01 newdef pi_2+Width:Points 50 newdef pi_2+Width:InterpolationOrder 1 insert pi_2+Width:MEtype 0 0 insert pi_2+Width:MEtype 1 0 insert pi_2+Width:MEtype 2 0 insert pi_2+Width:MEtype 3 0 insert pi_2+Width:MEtype 4 0 insert pi_2+Width:MEtype 5 0 insert pi_2+Width:MEtype 6 2 insert pi_2+Width:MEcode 0 0 insert pi_2+Width:MEcode 1 0 insert pi_2+Width:MEcode 2 0 insert pi_2+Width:MEcode 3 0 insert pi_2+Width:MEcode 4 0 insert pi_2+Width:MEcode 5 0 insert pi_2+Width:MEcode 6 0 insert pi_2+Width:MEcoupling 0 0.020448 insert pi_2+Width:MEcoupling 1 0.020448 insert pi_2+Width:MEcoupling 2 0.546654 insert pi_2+Width:MEcoupling 3 0.02629 insert pi_2+Width:MEcoupling 4 0.150768 insert pi_2+Width:MEcoupling 5 0.150768 insert pi_2+Width:MEcoupling 6 1.00856 insert pi_2+Width:ModeOn 0 1 insert pi_2+Width:ModeOn 1 1 insert pi_2+Width:ModeOn 2 1 insert pi_2+Width:ModeOn 3 1 insert pi_2+Width:ModeOn 4 1 insert pi_2+Width:ModeOn 5 1 insert pi_2+Width:ModeOn 6 1 insert pi_2+Width:MinimumMasses 0 1.13931 insert pi_2+Width:MinimumMasses 1 1.13968 insert pi_2+Width:MinimumMasses 2 1.22977 insert pi_2+Width:MinimumMasses 3 1.07325 insert pi_2+Width:MinimumMasses 4 0.51507 insert pi_2+Width:MinimumMasses 5 0.510478 insert pi_2+Width:MinimumMasses 6 0.44957 insert pi_2+Width:MEmass1 0 0 insert pi_2+Width:MEmass1 1 0 insert pi_2+Width:MEmass1 2 0 insert pi_2+Width:MEmass1 3 0 insert pi_2+Width:MEmass1 4 0 insert pi_2+Width:MEmass1 5 0 insert pi_2+Width:MEmass1 6 0.86 insert pi_2+Width:MEmass2 0 0 insert pi_2+Width:MEmass2 1 0 insert pi_2+Width:MEmass2 2 0 insert pi_2+Width:MEmass2 3 0 insert pi_2+Width:MEmass2 4 0 insert pi_2+Width:MEmass2 5 0 insert pi_2+Width:MEmass2 6 0.13957 insert pi_2+Width:DecayModes 0 pi_2+->K*+,Kbar0; insert pi_2+Width:DecayModes 1 pi_2+->K+,K*bar0; insert pi_2+Width:DecayModes 2 pi_2+->f_2,pi+; insert pi_2+Width:DecayModes 3 pi_2+->omega,rho+; insert pi_2+Width:DecayModes 4 pi_2+->pi+,rho0; insert pi_2+Width:DecayModes 5 pi_2+->rho+,pi0; insert pi_2+Width:DecayModes 6 pi_2+->sigma,pi+; insert pi_2+Width:InterpolationMasses 0 1.3922571 insert pi_2+Width:InterpolationMasses 1 1.4028286 insert pi_2+Width:InterpolationMasses 2 1.4134 insert pi_2+Width:InterpolationMasses 3 1.4239714 insert pi_2+Width:InterpolationMasses 4 1.4345429 insert pi_2+Width:InterpolationMasses 5 1.4451143 insert pi_2+Width:InterpolationMasses 6 1.4556857 insert pi_2+Width:InterpolationMasses 7 1.4662571 insert pi_2+Width:InterpolationMasses 8 1.4768286 insert pi_2+Width:InterpolationMasses 9 1.4874 insert pi_2+Width:InterpolationMasses 10 1.4979714 insert pi_2+Width:InterpolationMasses 11 1.5085429 insert pi_2+Width:InterpolationMasses 12 1.5191143 insert pi_2+Width:InterpolationMasses 13 1.5296857 insert pi_2+Width:InterpolationMasses 14 1.5402571 insert pi_2+Width:InterpolationMasses 15 1.5508286 insert pi_2+Width:InterpolationMasses 16 1.5614 insert pi_2+Width:InterpolationMasses 17 1.5719714 insert pi_2+Width:InterpolationMasses 18 1.5825429 insert pi_2+Width:InterpolationMasses 19 1.5931143 insert pi_2+Width:InterpolationMasses 20 1.6036857 insert pi_2+Width:InterpolationMasses 21 1.6142571 insert pi_2+Width:InterpolationMasses 22 1.6248286 insert pi_2+Width:InterpolationMasses 23 1.6354 insert pi_2+Width:InterpolationMasses 24 1.6459714 insert pi_2+Width:InterpolationMasses 25 1.6565429 insert pi_2+Width:InterpolationMasses 26 1.6671143 insert pi_2+Width:InterpolationMasses 27 1.6776857 insert pi_2+Width:InterpolationMasses 28 1.6882571 insert pi_2+Width:InterpolationMasses 29 1.6988286 insert pi_2+Width:InterpolationMasses 30 1.7094 insert pi_2+Width:InterpolationMasses 31 1.7199714 insert pi_2+Width:InterpolationMasses 32 1.7305429 insert pi_2+Width:InterpolationMasses 33 1.7411143 insert pi_2+Width:InterpolationMasses 34 1.7516857 insert pi_2+Width:InterpolationMasses 35 1.7622571 insert pi_2+Width:InterpolationMasses 36 1.7728286 insert pi_2+Width:InterpolationMasses 37 1.7834 insert pi_2+Width:InterpolationMasses 38 1.7939714 insert pi_2+Width:InterpolationMasses 39 1.8045429 insert pi_2+Width:InterpolationMasses 40 1.8151143 insert pi_2+Width:InterpolationMasses 41 1.8256857 insert pi_2+Width:InterpolationMasses 42 1.8362571 insert pi_2+Width:InterpolationMasses 43 1.8468286 insert pi_2+Width:InterpolationMasses 44 1.8574 insert pi_2+Width:InterpolationMasses 45 1.8679714 insert pi_2+Width:InterpolationMasses 46 1.8785429 insert pi_2+Width:InterpolationMasses 47 1.8891143 insert pi_2+Width:InterpolationMasses 48 1.8996857 insert pi_2+Width:InterpolationMasses 49 1.9102571 insert pi_2+Width:InterpolationMasses 50 1.9208286 insert pi_2+Width:InterpolationMasses 51 1.9314 insert pi_2+Width:InterpolationMasses 52 1.9419714 insert pi_2+Width:InterpolationMasses 53 1.9525429 insert pi_2+Width:InterpolationWidths 0 0.0073723968 insert pi_2+Width:InterpolationWidths 1 0.0077235563 insert pi_2+Width:InterpolationWidths 2 0.0080873028 insert pi_2+Width:InterpolationWidths 3 0.0084639212 insert pi_2+Width:InterpolationWidths 4 0.0088536975 insert pi_2+Width:InterpolationWidths 5 0.0092569191 insert pi_2+Width:InterpolationWidths 6 0.0096738743 insert pi_2+Width:InterpolationWidths 7 0.010104853 insert pi_2+Width:InterpolationWidths 8 0.010550144 insert pi_2+Width:InterpolationWidths 9 0.011010041 insert pi_2+Width:InterpolationWidths 10 0.011484834 insert pi_2+Width:InterpolationWidths 11 0.011974816 insert pi_2+Width:InterpolationWidths 12 0.012480281 insert pi_2+Width:InterpolationWidths 13 0.013001522 insert pi_2+Width:InterpolationWidths 14 0.013538834 insert pi_2+Width:InterpolationWidths 15 0.01409251 insert pi_2+Width:InterpolationWidths 16 0.014662848 insert pi_2+Width:InterpolationWidths 17 0.01525014 insert pi_2+Width:InterpolationWidths 18 0.015854684 insert pi_2+Width:InterpolationWidths 19 0.016476775 insert pi_2+Width:InterpolationWidths 20 0.017116708 insert pi_2+Width:InterpolationWidths 21 0.01777478 insert pi_2+Width:InterpolationWidths 22 0.018451286 insert pi_2+Width:InterpolationWidths 23 0.019146522 insert pi_2+Width:InterpolationWidths 24 0.019860784 insert pi_2+Width:InterpolationWidths 25 0.020594368 insert pi_2+Width:InterpolationWidths 26 0.021347568 insert pi_2+Width:InterpolationWidths 27 0.022120681 insert pi_2+Width:InterpolationWidths 28 0.022914001 insert pi_2+Width:InterpolationWidths 29 0.023727824 insert pi_2+Width:InterpolationWidths 30 0.024562442 insert pi_2+Width:InterpolationWidths 31 0.025418151 insert pi_2+Width:InterpolationWidths 32 0.026295245 insert pi_2+Width:InterpolationWidths 33 0.027194016 insert pi_2+Width:InterpolationWidths 34 0.028114757 insert pi_2+Width:InterpolationWidths 35 0.029057762 insert pi_2+Width:InterpolationWidths 36 0.030023321 insert pi_2+Width:InterpolationWidths 37 0.031011727 insert pi_2+Width:InterpolationWidths 38 0.03202327 insert pi_2+Width:InterpolationWidths 39 0.03305824 insert pi_2+Width:InterpolationWidths 40 0.034116929 insert pi_2+Width:InterpolationWidths 41 0.035199624 insert pi_2+Width:InterpolationWidths 42 0.036306615 insert pi_2+Width:InterpolationWidths 43 0.037438189 insert pi_2+Width:InterpolationWidths 44 0.038594635 insert pi_2+Width:InterpolationWidths 45 0.03977624 insert pi_2+Width:InterpolationWidths 46 0.040983288 insert pi_2+Width:InterpolationWidths 47 0.042216067 insert pi_2+Width:InterpolationWidths 48 0.043474861 insert pi_2+Width:InterpolationWidths 49 0.044759954 insert pi_2+Width:InterpolationWidths 50 0.04607163 insert pi_2+Width:InterpolationWidths 51 0.047410171 insert pi_2+Width:InterpolationWidths 52 0.048775862 insert pi_2+Width:InterpolationWidths 53 0.050168981 insert pi_2+Width:NumberofEntries 0 0 insert pi_2+Width:NumberofEntries 1 0 insert pi_2+Width:NumberofEntries 2 0 insert pi_2+Width:NumberofEntries 3 0 insert pi_2+Width:NumberofEntries 4 0 insert pi_2+Width:NumberofEntries 5 0 insert pi_2+Width:NumberofEntries 6 54 newdef /Herwig/Particles/pi_2+:Width_generator pi_2+Width newdef /Herwig/Particles/pi_2-:Width_generator pi_2+Width # create Herwig::GenericWidthGenerator eta_2Width newdef eta_2Width:Particle /Herwig/Particles/eta_2 newdef eta_2Width:Prefactor 0.999958 newdef eta_2Width:BRNormalize 1 newdef eta_2Width:BRMinimum 0.01 newdef eta_2Width:Points 50 newdef eta_2Width:InterpolationOrder 1 insert eta_2Width:MEtype 0 0 insert eta_2Width:MEtype 1 0 insert eta_2Width:MEtype 2 0 insert eta_2Width:MEtype 3 0 insert eta_2Width:MEtype 4 2 insert eta_2Width:MEtype 5 2 insert eta_2Width:MEtype 6 2 insert eta_2Width:MEtype 7 0 insert eta_2Width:MEtype 8 0 insert eta_2Width:MEtype 9 0 insert eta_2Width:MEcode 0 0 insert eta_2Width:MEcode 1 0 insert eta_2Width:MEcode 2 0 insert eta_2Width:MEcode 3 0 insert eta_2Width:MEcode 4 0 insert eta_2Width:MEcode 5 0 insert eta_2Width:MEcode 6 0 insert eta_2Width:MEcode 7 0 insert eta_2Width:MEcode 8 0 insert eta_2Width:MEcode 9 0 insert eta_2Width:MEcoupling 0 0.015258 insert eta_2Width:MEcoupling 1 0.015258 insert eta_2Width:MEcoupling 2 0.015258 insert eta_2Width:MEcoupling 3 0.015258 insert eta_2Width:MEcoupling 4 1.01058 insert eta_2Width:MEcoupling 5 1.01058 insert eta_2Width:MEcoupling 6 1.00041 insert eta_2Width:MEcoupling 7 0.290633 insert eta_2Width:MEcoupling 8 0.290633 insert eta_2Width:MEcoupling 9 0.290634 insert eta_2Width:ModeOn 0 1 insert eta_2Width:ModeOn 1 1 insert eta_2Width:ModeOn 2 1 insert eta_2Width:ModeOn 3 1 insert eta_2Width:ModeOn 4 1 insert eta_2Width:ModeOn 5 1 insert eta_2Width:ModeOn 6 1 insert eta_2Width:ModeOn 7 1 insert eta_2Width:ModeOn 8 1 insert eta_2Width:ModeOn 9 1 insert eta_2Width:MinimumMasses 0 1.13534 insert eta_2Width:MinimumMasses 1 1.13534 insert eta_2Width:MinimumMasses 2 1.14365 insert eta_2Width:MinimumMasses 3 1.14365 insert eta_2Width:MinimumMasses 4 0.89857 insert eta_2Width:MinimumMasses 5 0.89857 insert eta_2Width:MinimumMasses 6 0.893978 insert eta_2Width:MinimumMasses 7 1.24387 insert eta_2Width:MinimumMasses 8 1.24387 insert eta_2Width:MinimumMasses 9 1.23928 insert eta_2Width:MEmass1 0 0 insert eta_2Width:MEmass1 1 0 insert eta_2Width:MEmass1 2 0 insert eta_2Width:MEmass1 3 0 insert eta_2Width:MEmass1 4 0.999 insert eta_2Width:MEmass1 5 0.999 insert eta_2Width:MEmass1 6 0.999 insert eta_2Width:MEmass1 7 0 insert eta_2Width:MEmass1 8 0 insert eta_2Width:MEmass1 9 0 insert eta_2Width:MEmass2 0 0 insert eta_2Width:MEmass2 1 0 insert eta_2Width:MEmass2 2 0 insert eta_2Width:MEmass2 3 0 insert eta_2Width:MEmass2 4 0.13957 insert eta_2Width:MEmass2 5 0.13957 insert eta_2Width:MEmass2 6 0.134978 insert eta_2Width:MEmass2 7 0 insert eta_2Width:MEmass2 8 0 insert eta_2Width:MEmass2 9 0 insert eta_2Width:DecayModes 0 eta_2->K*+,K-; insert eta_2Width:DecayModes 1 eta_2->K*-,K+; insert eta_2Width:DecayModes 2 eta_2->K*0,Kbar0; insert eta_2Width:DecayModes 3 eta_2->K*bar0,K0; insert eta_2Width:DecayModes 4 eta_2->a_0+,pi-; insert eta_2Width:DecayModes 5 eta_2->a_0-,pi+; insert eta_2Width:DecayModes 6 eta_2->a_00,pi0; insert eta_2Width:DecayModes 7 eta_2->a_2+,pi-; insert eta_2Width:DecayModes 8 eta_2->a_2-,pi+; insert eta_2Width:DecayModes 9 eta_2->a_20,pi0; insert eta_2Width:InterpolationMasses 0 1.225449 insert eta_2Width:InterpolationMasses 1 1.2402245 insert eta_2Width:InterpolationMasses 2 1.255 insert eta_2Width:InterpolationMasses 3 1.2697755 insert eta_2Width:InterpolationMasses 4 1.284551 insert eta_2Width:InterpolationMasses 5 1.2993265 insert eta_2Width:InterpolationMasses 6 1.314102 insert eta_2Width:InterpolationMasses 7 1.3288776 insert eta_2Width:InterpolationMasses 8 1.3436531 insert eta_2Width:InterpolationMasses 9 1.3584286 insert eta_2Width:InterpolationMasses 10 1.3732041 insert eta_2Width:InterpolationMasses 11 1.3879796 insert eta_2Width:InterpolationMasses 12 1.4027551 insert eta_2Width:InterpolationMasses 13 1.4175306 insert eta_2Width:InterpolationMasses 14 1.4323061 insert eta_2Width:InterpolationMasses 15 1.4470816 insert eta_2Width:InterpolationMasses 16 1.4618571 insert eta_2Width:InterpolationMasses 17 1.4766327 insert eta_2Width:InterpolationMasses 18 1.4914082 insert eta_2Width:InterpolationMasses 19 1.5061837 insert eta_2Width:InterpolationMasses 20 1.5209592 insert eta_2Width:InterpolationMasses 21 1.5357347 insert eta_2Width:InterpolationMasses 22 1.5505102 insert eta_2Width:InterpolationMasses 23 1.5652857 insert eta_2Width:InterpolationMasses 24 1.5800612 insert eta_2Width:InterpolationMasses 25 1.5948367 insert eta_2Width:InterpolationMasses 26 1.6096122 insert eta_2Width:InterpolationMasses 27 1.6243878 insert eta_2Width:InterpolationMasses 28 1.6391633 insert eta_2Width:InterpolationMasses 29 1.6539388 insert eta_2Width:InterpolationMasses 30 1.6687143 insert eta_2Width:InterpolationMasses 31 1.6834898 insert eta_2Width:InterpolationMasses 32 1.6982653 insert eta_2Width:InterpolationMasses 33 1.7130408 insert eta_2Width:InterpolationMasses 34 1.7278163 insert eta_2Width:InterpolationMasses 35 1.7425918 insert eta_2Width:InterpolationMasses 36 1.7573673 insert eta_2Width:InterpolationMasses 37 1.7721429 insert eta_2Width:InterpolationMasses 38 1.7869184 insert eta_2Width:InterpolationMasses 39 1.8016939 insert eta_2Width:InterpolationMasses 40 1.8164694 insert eta_2Width:InterpolationMasses 41 1.8312449 insert eta_2Width:InterpolationMasses 42 1.8460204 insert eta_2Width:InterpolationMasses 43 1.8607959 insert eta_2Width:InterpolationMasses 44 1.8755714 insert eta_2Width:InterpolationMasses 45 1.8903469 insert eta_2Width:InterpolationMasses 46 1.9051224 insert eta_2Width:InterpolationMasses 47 1.919898 insert eta_2Width:InterpolationMasses 48 1.9346735 insert eta_2Width:InterpolationMasses 49 1.949449 insert eta_2Width:InterpolationMasses 50 1.9642245 insert eta_2Width:InterpolationMasses 51 1.979 insert eta_2Width:InterpolationMasses 52 1.9937755 insert eta_2Width:InterpolationMasses 53 2.008551 insert eta_2Width:InterpolationMasses 54 1.225449 insert eta_2Width:InterpolationMasses 55 1.2402245 insert eta_2Width:InterpolationMasses 56 1.255 insert eta_2Width:InterpolationMasses 57 1.2697755 insert eta_2Width:InterpolationMasses 58 1.284551 insert eta_2Width:InterpolationMasses 59 1.2993265 insert eta_2Width:InterpolationMasses 60 1.314102 insert eta_2Width:InterpolationMasses 61 1.3288776 insert eta_2Width:InterpolationMasses 62 1.3436531 insert eta_2Width:InterpolationMasses 63 1.3584286 insert eta_2Width:InterpolationMasses 64 1.3732041 insert eta_2Width:InterpolationMasses 65 1.3879796 insert eta_2Width:InterpolationMasses 66 1.4027551 insert eta_2Width:InterpolationMasses 67 1.4175306 insert eta_2Width:InterpolationMasses 68 1.4323061 insert eta_2Width:InterpolationMasses 69 1.4470816 insert eta_2Width:InterpolationMasses 70 1.4618571 insert eta_2Width:InterpolationMasses 71 1.4766327 insert eta_2Width:InterpolationMasses 72 1.4914082 insert eta_2Width:InterpolationMasses 73 1.5061837 insert eta_2Width:InterpolationMasses 74 1.5209592 insert eta_2Width:InterpolationMasses 75 1.5357347 insert eta_2Width:InterpolationMasses 76 1.5505102 insert eta_2Width:InterpolationMasses 77 1.5652857 insert eta_2Width:InterpolationMasses 78 1.5800612 insert eta_2Width:InterpolationMasses 79 1.5948367 insert eta_2Width:InterpolationMasses 80 1.6096122 insert eta_2Width:InterpolationMasses 81 1.6243878 insert eta_2Width:InterpolationMasses 82 1.6391633 insert eta_2Width:InterpolationMasses 83 1.6539388 insert eta_2Width:InterpolationMasses 84 1.6687143 insert eta_2Width:InterpolationMasses 85 1.6834898 insert eta_2Width:InterpolationMasses 86 1.6982653 insert eta_2Width:InterpolationMasses 87 1.7130408 insert eta_2Width:InterpolationMasses 88 1.7278163 insert eta_2Width:InterpolationMasses 89 1.7425918 insert eta_2Width:InterpolationMasses 90 1.7573673 insert eta_2Width:InterpolationMasses 91 1.7721429 insert eta_2Width:InterpolationMasses 92 1.7869184 insert eta_2Width:InterpolationMasses 93 1.8016939 insert eta_2Width:InterpolationMasses 94 1.8164694 insert eta_2Width:InterpolationMasses 95 1.8312449 insert eta_2Width:InterpolationMasses 96 1.8460204 insert eta_2Width:InterpolationMasses 97 1.8607959 insert eta_2Width:InterpolationMasses 98 1.8755714 insert eta_2Width:InterpolationMasses 99 1.8903469 insert eta_2Width:InterpolationMasses 100 1.9051224 insert eta_2Width:InterpolationMasses 101 1.919898 insert eta_2Width:InterpolationMasses 102 1.9346735 insert eta_2Width:InterpolationMasses 103 1.949449 insert eta_2Width:InterpolationMasses 104 1.9642245 insert eta_2Width:InterpolationMasses 105 1.979 insert eta_2Width:InterpolationMasses 106 1.9937755 insert eta_2Width:InterpolationMasses 107 2.008551 insert eta_2Width:InterpolationMasses 108 1.225449 insert eta_2Width:InterpolationMasses 109 1.2402245 insert eta_2Width:InterpolationMasses 110 1.255 insert eta_2Width:InterpolationMasses 111 1.2697755 insert eta_2Width:InterpolationMasses 112 1.284551 insert eta_2Width:InterpolationMasses 113 1.2993265 insert eta_2Width:InterpolationMasses 114 1.314102 insert eta_2Width:InterpolationMasses 115 1.3288776 insert eta_2Width:InterpolationMasses 116 1.3436531 insert eta_2Width:InterpolationMasses 117 1.3584286 insert eta_2Width:InterpolationMasses 118 1.3732041 insert eta_2Width:InterpolationMasses 119 1.3879796 insert eta_2Width:InterpolationMasses 120 1.4027551 insert eta_2Width:InterpolationMasses 121 1.4175306 insert eta_2Width:InterpolationMasses 122 1.4323061 insert eta_2Width:InterpolationMasses 123 1.4470816 insert eta_2Width:InterpolationMasses 124 1.4618571 insert eta_2Width:InterpolationMasses 125 1.4766327 insert eta_2Width:InterpolationMasses 126 1.4914082 insert eta_2Width:InterpolationMasses 127 1.5061837 insert eta_2Width:InterpolationMasses 128 1.5209592 insert eta_2Width:InterpolationMasses 129 1.5357347 insert eta_2Width:InterpolationMasses 130 1.5505102 insert eta_2Width:InterpolationMasses 131 1.5652857 insert eta_2Width:InterpolationMasses 132 1.5800612 insert eta_2Width:InterpolationMasses 133 1.5948367 insert eta_2Width:InterpolationMasses 134 1.6096122 insert eta_2Width:InterpolationMasses 135 1.6243878 insert eta_2Width:InterpolationMasses 136 1.6391633 insert eta_2Width:InterpolationMasses 137 1.6539388 insert eta_2Width:InterpolationMasses 138 1.6687143 insert eta_2Width:InterpolationMasses 139 1.6834898 insert eta_2Width:InterpolationMasses 140 1.6982653 insert eta_2Width:InterpolationMasses 141 1.7130408 insert eta_2Width:InterpolationMasses 142 1.7278163 insert eta_2Width:InterpolationMasses 143 1.7425918 insert eta_2Width:InterpolationMasses 144 1.7573673 insert eta_2Width:InterpolationMasses 145 1.7721429 insert eta_2Width:InterpolationMasses 146 1.7869184 insert eta_2Width:InterpolationMasses 147 1.8016939 insert eta_2Width:InterpolationMasses 148 1.8164694 insert eta_2Width:InterpolationMasses 149 1.8312449 insert eta_2Width:InterpolationMasses 150 1.8460204 insert eta_2Width:InterpolationMasses 151 1.8607959 insert eta_2Width:InterpolationMasses 152 1.8755714 insert eta_2Width:InterpolationMasses 153 1.8903469 insert eta_2Width:InterpolationMasses 154 1.9051224 insert eta_2Width:InterpolationMasses 155 1.919898 insert eta_2Width:InterpolationMasses 156 1.9346735 insert eta_2Width:InterpolationMasses 157 1.949449 insert eta_2Width:InterpolationMasses 158 1.9642245 insert eta_2Width:InterpolationMasses 159 1.979 insert eta_2Width:InterpolationMasses 160 1.9937755 insert eta_2Width:InterpolationMasses 161 2.008551 insert eta_2Width:InterpolationWidths 0 7.5744594e-05 insert eta_2Width:InterpolationWidths 1 9.6674959e-05 insert eta_2Width:InterpolationWidths 2 0.00012206334 insert eta_2Width:InterpolationWidths 3 0.00015251083 insert eta_2Width:InterpolationWidths 4 0.00018863283 insert eta_2Width:InterpolationWidths 5 0.00023107523 insert eta_2Width:InterpolationWidths 6 0.00028048488 insert eta_2Width:InterpolationWidths 7 0.0003375516 insert eta_2Width:InterpolationWidths 8 0.0004029557 insert eta_2Width:InterpolationWidths 9 0.00047747988 insert eta_2Width:InterpolationWidths 10 0.00056158566 insert eta_2Width:InterpolationWidths 11 0.00065623889 insert eta_2Width:InterpolationWidths 12 0.00076207287 insert eta_2Width:InterpolationWidths 13 0.00087982974 insert eta_2Width:InterpolationWidths 14 0.001010212 insert eta_2Width:InterpolationWidths 15 0.0011539682 insert eta_2Width:InterpolationWidths 16 0.0013118426 insert eta_2Width:InterpolationWidths 17 0.0014845342 insert eta_2Width:InterpolationWidths 18 0.0016727966 insert eta_2Width:InterpolationWidths 19 0.0018773509 insert eta_2Width:InterpolationWidths 20 0.0020989289 insert eta_2Width:InterpolationWidths 21 0.0023382477 insert eta_2Width:InterpolationWidths 22 0.0025960288 insert eta_2Width:InterpolationWidths 23 0.0028729776 insert eta_2Width:InterpolationWidths 24 0.0031698089 insert eta_2Width:InterpolationWidths 25 0.0034872237 insert eta_2Width:InterpolationWidths 26 0.0038259161 insert eta_2Width:InterpolationWidths 27 0.0041869538 insert eta_2Width:InterpolationWidths 28 0.0045699205 insert eta_2Width:InterpolationWidths 29 0.0049765653 insert eta_2Width:InterpolationWidths 30 0.0054070082 insert eta_2Width:InterpolationWidths 31 0.0058625762 insert eta_2Width:InterpolationWidths 32 0.0063432773 insert eta_2Width:InterpolationWidths 33 0.0068499364 insert eta_2Width:InterpolationWidths 34 0.0073832227 insert eta_2Width:InterpolationWidths 35 0.0079437723 insert eta_2Width:InterpolationWidths 36 0.0085322125 insert eta_2Width:InterpolationWidths 37 0.0091491608 insert eta_2Width:InterpolationWidths 38 0.0097952291 insert eta_2Width:InterpolationWidths 39 0.010471019 insert eta_2Width:InterpolationWidths 40 0.011177125 insert eta_2Width:InterpolationWidths 41 0.011914132 insert eta_2Width:InterpolationWidths 42 0.012682618 insert eta_2Width:InterpolationWidths 43 0.013483152 insert eta_2Width:InterpolationWidths 44 0.014316296 insert eta_2Width:InterpolationWidths 45 0.015182603 insert eta_2Width:InterpolationWidths 46 0.016082619 insert eta_2Width:InterpolationWidths 47 0.017016882 insert eta_2Width:InterpolationWidths 48 0.017985922 insert eta_2Width:InterpolationWidths 49 0.018990263 insert eta_2Width:InterpolationWidths 50 0.020030421 insert eta_2Width:InterpolationWidths 51 0.021106904 insert eta_2Width:InterpolationWidths 52 0.022220214 insert eta_2Width:InterpolationWidths 53 0.023370846 insert eta_2Width:InterpolationWidths 54 7.5744594e-05 insert eta_2Width:InterpolationWidths 55 9.6674959e-05 insert eta_2Width:InterpolationWidths 56 0.00012206334 insert eta_2Width:InterpolationWidths 57 0.00015251083 insert eta_2Width:InterpolationWidths 58 0.00018863283 insert eta_2Width:InterpolationWidths 59 0.00023107523 insert eta_2Width:InterpolationWidths 60 0.00028048488 insert eta_2Width:InterpolationWidths 61 0.0003375516 insert eta_2Width:InterpolationWidths 62 0.0004029557 insert eta_2Width:InterpolationWidths 63 0.00047747988 insert eta_2Width:InterpolationWidths 64 0.00056158566 insert eta_2Width:InterpolationWidths 65 0.00065623889 insert eta_2Width:InterpolationWidths 66 0.00076207287 insert eta_2Width:InterpolationWidths 67 0.00087982974 insert eta_2Width:InterpolationWidths 68 0.001010212 insert eta_2Width:InterpolationWidths 69 0.0011539682 insert eta_2Width:InterpolationWidths 70 0.0013118426 insert eta_2Width:InterpolationWidths 71 0.0014845342 insert eta_2Width:InterpolationWidths 72 0.0016727966 insert eta_2Width:InterpolationWidths 73 0.0018773509 insert eta_2Width:InterpolationWidths 74 0.0020989289 insert eta_2Width:InterpolationWidths 75 0.0023382477 insert eta_2Width:InterpolationWidths 76 0.0025960288 insert eta_2Width:InterpolationWidths 77 0.0028729776 insert eta_2Width:InterpolationWidths 78 0.0031698089 insert eta_2Width:InterpolationWidths 79 0.0034872237 insert eta_2Width:InterpolationWidths 80 0.0038259161 insert eta_2Width:InterpolationWidths 81 0.0041869538 insert eta_2Width:InterpolationWidths 82 0.0045699205 insert eta_2Width:InterpolationWidths 83 0.0049765653 insert eta_2Width:InterpolationWidths 84 0.0054070082 insert eta_2Width:InterpolationWidths 85 0.0058625762 insert eta_2Width:InterpolationWidths 86 0.0063432773 insert eta_2Width:InterpolationWidths 87 0.0068499364 insert eta_2Width:InterpolationWidths 88 0.0073832227 insert eta_2Width:InterpolationWidths 89 0.0079437723 insert eta_2Width:InterpolationWidths 90 0.0085322125 insert eta_2Width:InterpolationWidths 91 0.0091491608 insert eta_2Width:InterpolationWidths 92 0.0097952291 insert eta_2Width:InterpolationWidths 93 0.010471019 insert eta_2Width:InterpolationWidths 94 0.011177125 insert eta_2Width:InterpolationWidths 95 0.011914132 insert eta_2Width:InterpolationWidths 96 0.012682618 insert eta_2Width:InterpolationWidths 97 0.013483152 insert eta_2Width:InterpolationWidths 98 0.014316296 insert eta_2Width:InterpolationWidths 99 0.015182603 insert eta_2Width:InterpolationWidths 100 0.016082619 insert eta_2Width:InterpolationWidths 101 0.017016882 insert eta_2Width:InterpolationWidths 102 0.017985922 insert eta_2Width:InterpolationWidths 103 0.018990263 insert eta_2Width:InterpolationWidths 104 0.020030421 insert eta_2Width:InterpolationWidths 105 0.021106904 insert eta_2Width:InterpolationWidths 106 0.022220214 insert eta_2Width:InterpolationWidths 107 0.023370846 insert eta_2Width:InterpolationWidths 108 7.925335e-05 insert eta_2Width:InterpolationWidths 109 0.00010086233 insert eta_2Width:InterpolationWidths 110 0.00012700332 insert eta_2Width:InterpolationWidths 111 0.00015826909 insert eta_2Width:InterpolationWidths 112 0.00019527198 insert eta_2Width:InterpolationWidths 113 0.0002386653 insert eta_2Width:InterpolationWidths 114 0.00028909852 insert eta_2Width:InterpolationWidths 115 0.0003472371 insert eta_2Width:InterpolationWidths 116 0.00041379166 insert eta_2Width:InterpolationWidths 117 0.00048943577 insert eta_2Width:InterpolationWidths 118 0.00057487353 insert eta_2Width:InterpolationWidths 119 0.00067082735 insert eta_2Width:InterpolationWidths 120 0.00077806845 insert eta_2Width:InterpolationWidths 121 0.00089726528 insert eta_2Width:InterpolationWidths 122 0.0010291114 insert eta_2Width:InterpolationWidths 123 0.0011744071 insert eta_2Width:InterpolationWidths 124 0.0013342829 insert eta_2Width:InterpolationWidths 125 0.0015082352 insert eta_2Width:InterpolationWidths 126 0.0016981428 insert eta_2Width:InterpolationWidths 127 0.0019043922 insert eta_2Width:InterpolationWidths 128 0.0021276125 insert eta_2Width:InterpolationWidths 129 0.0023687914 insert eta_2Width:InterpolationWidths 130 0.0026286794 insert eta_2Width:InterpolationWidths 131 0.0029070154 insert eta_2Width:InterpolationWidths 132 0.0032061253 insert eta_2Width:InterpolationWidths 133 0.0035255019 insert eta_2Width:InterpolationWidths 134 0.0038662867 insert eta_2Width:InterpolationWidths 135 0.0042289297 insert eta_2Width:InterpolationWidths 136 0.0046197651 insert eta_2Width:InterpolationWidths 137 0.0050231115 insert eta_2Width:InterpolationWidths 138 0.005455975 insert eta_2Width:InterpolationWidths 139 0.0059138955 insert eta_2Width:InterpolationWidths 140 0.0063960813 insert eta_2Width:InterpolationWidths 141 0.0069049632 insert eta_2Width:InterpolationWidths 142 0.0074405019 insert eta_2Width:InterpolationWidths 143 0.0080033319 insert eta_2Width:InterpolationWidths 144 0.0085940798 insert eta_2Width:InterpolationWidths 145 0.009213362 insert eta_2Width:InterpolationWidths 146 0.0098617898 insert eta_2Width:InterpolationWidths 147 0.010539964 insert eta_2Width:InterpolationWidths 148 0.011248478 insert eta_2Width:InterpolationWidths 149 0.011987917 insert eta_2Width:InterpolationWidths 150 0.012758858 insert eta_2Width:InterpolationWidths 151 0.01356187 insert eta_2Width:InterpolationWidths 152 0.014397512 insert eta_2Width:InterpolationWidths 153 0.015266949 insert eta_2Width:InterpolationWidths 154 0.016169543 insert eta_2Width:InterpolationWidths 155 0.017106407 insert eta_2Width:InterpolationWidths 156 0.018078069 insert eta_2Width:InterpolationWidths 157 0.019085052 insert eta_2Width:InterpolationWidths 158 0.020127873 insert eta_2Width:InterpolationWidths 159 0.02120704 insert eta_2Width:InterpolationWidths 160 0.022323053 insert eta_2Width:InterpolationWidths 161 0.023476409 insert eta_2Width:NumberofEntries 0 0 insert eta_2Width:NumberofEntries 1 0 insert eta_2Width:NumberofEntries 2 0 insert eta_2Width:NumberofEntries 3 0 insert eta_2Width:NumberofEntries 4 54 insert eta_2Width:NumberofEntries 5 108 insert eta_2Width:NumberofEntries 6 162 insert eta_2Width:NumberofEntries 7 162 insert eta_2Width:NumberofEntries 8 162 insert eta_2Width:NumberofEntries 9 162 newdef /Herwig/Particles/eta_2:Width_generator eta_2Width # create Herwig::GenericWidthGenerator eta'_2Width newdef eta'_2Width:Particle /Herwig/Particles/eta'_2 newdef eta'_2Width:Prefactor 1.02629 newdef eta'_2Width:BRNormalize 1 newdef eta'_2Width:BRMinimum 0.01 newdef eta'_2Width:Points 50 newdef eta'_2Width:InterpolationOrder 1 insert eta'_2Width:MEtype 0 2 insert eta'_2Width:MEtype 1 2 insert eta'_2Width:MEtype 2 2 insert eta'_2Width:MEtype 3 0 insert eta'_2Width:MEtype 4 0 insert eta'_2Width:MEtype 5 0 insert eta'_2Width:MEtype 6 0 insert eta'_2Width:MEcode 0 0 insert eta'_2Width:MEcode 1 0 insert eta'_2Width:MEcode 2 0 insert eta'_2Width:MEcode 3 0 insert eta'_2Width:MEcode 4 0 insert eta'_2Width:MEcode 5 0 insert eta'_2Width:MEcode 6 0 insert eta'_2Width:MEcoupling 0 1.00256 insert eta'_2Width:MEcoupling 1 1.00256 insert eta'_2Width:MEcoupling 2 0.996522 insert eta'_2Width:MEcoupling 3 0.278395 insert eta'_2Width:MEcoupling 4 0.278395 insert eta'_2Width:MEcoupling 5 0.278395 insert eta'_2Width:MEcoupling 6 0.139195 insert eta'_2Width:ModeOn 0 0 insert eta'_2Width:ModeOn 1 0 insert eta'_2Width:ModeOn 2 0 insert eta'_2Width:ModeOn 3 1 insert eta'_2Width:ModeOn 4 1 insert eta'_2Width:ModeOn 5 1 insert eta'_2Width:ModeOn 6 1 insert eta'_2Width:MinimumMasses 0 0.89857 insert eta'_2Width:MinimumMasses 1 0.89857 insert eta'_2Width:MinimumMasses 2 0.893978 insert eta'_2Width:MinimumMasses 3 1.24387 insert eta'_2Width:MinimumMasses 4 1.24387 insert eta'_2Width:MinimumMasses 5 1.23928 insert eta'_2Width:MinimumMasses 6 1.6377 insert eta'_2Width:MEmass1 0 0.999 insert eta'_2Width:MEmass1 1 0.999 insert eta'_2Width:MEmass1 2 0.999 insert eta'_2Width:MEmass1 3 0 insert eta'_2Width:MEmass1 4 0 insert eta'_2Width:MEmass1 5 0 insert eta'_2Width:MEmass1 6 0 insert eta'_2Width:MEmass2 0 0.13957 insert eta'_2Width:MEmass2 1 0.13957 insert eta'_2Width:MEmass2 2 0.134978 insert eta'_2Width:MEmass2 3 0 insert eta'_2Width:MEmass2 4 0 insert eta'_2Width:MEmass2 5 0 insert eta'_2Width:MEmass2 6 0 insert eta'_2Width:DecayModes 0 eta'_2->a_0+,pi-; insert eta'_2Width:DecayModes 1 eta'_2->a_0-,pi+; insert eta'_2Width:DecayModes 2 eta'_2->a_00,pi0; insert eta'_2Width:DecayModes 3 eta'_2->a_2+,pi-; insert eta'_2Width:DecayModes 4 eta'_2->a_2-,pi+; insert eta'_2Width:DecayModes 5 eta'_2->a_20,pi0; insert eta'_2Width:DecayModes 6 eta'_2->f_2,eta; insert eta'_2Width:InterpolationMasses 0 1.5986327 insert eta'_2Width:InterpolationMasses 1 1.6078163 insert eta'_2Width:InterpolationMasses 2 1.617 insert eta'_2Width:InterpolationMasses 3 1.6261837 insert eta'_2Width:InterpolationMasses 4 1.6353673 insert eta'_2Width:InterpolationMasses 5 1.644551 insert eta'_2Width:InterpolationMasses 6 1.6537347 insert eta'_2Width:InterpolationMasses 7 1.6629184 insert eta'_2Width:InterpolationMasses 8 1.672102 insert eta'_2Width:InterpolationMasses 9 1.6812857 insert eta'_2Width:InterpolationMasses 10 1.6904694 insert eta'_2Width:InterpolationMasses 11 1.6996531 insert eta'_2Width:InterpolationMasses 12 1.7088367 insert eta'_2Width:InterpolationMasses 13 1.7180204 insert eta'_2Width:InterpolationMasses 14 1.7272041 insert eta'_2Width:InterpolationMasses 15 1.7363878 insert eta'_2Width:InterpolationMasses 16 1.7455714 insert eta'_2Width:InterpolationMasses 17 1.7547551 insert eta'_2Width:InterpolationMasses 18 1.7639388 insert eta'_2Width:InterpolationMasses 19 1.7731224 insert eta'_2Width:InterpolationMasses 20 1.7823061 insert eta'_2Width:InterpolationMasses 21 1.7914898 insert eta'_2Width:InterpolationMasses 22 1.8006735 insert eta'_2Width:InterpolationMasses 23 1.8098571 insert eta'_2Width:InterpolationMasses 24 1.8190408 insert eta'_2Width:InterpolationMasses 25 1.8282245 insert eta'_2Width:InterpolationMasses 26 1.8374082 insert eta'_2Width:InterpolationMasses 27 1.8465918 insert eta'_2Width:InterpolationMasses 28 1.8557755 insert eta'_2Width:InterpolationMasses 29 1.8649592 insert eta'_2Width:InterpolationMasses 30 1.8741429 insert eta'_2Width:InterpolationMasses 31 1.8833265 insert eta'_2Width:InterpolationMasses 32 1.8925102 insert eta'_2Width:InterpolationMasses 33 1.9016939 insert eta'_2Width:InterpolationMasses 34 1.9108776 insert eta'_2Width:InterpolationMasses 35 1.9200612 insert eta'_2Width:InterpolationMasses 36 1.9292449 insert eta'_2Width:InterpolationMasses 37 1.9384286 insert eta'_2Width:InterpolationMasses 38 1.9476122 insert eta'_2Width:InterpolationMasses 39 1.9567959 insert eta'_2Width:InterpolationMasses 40 1.9659796 insert eta'_2Width:InterpolationMasses 41 1.9751633 insert eta'_2Width:InterpolationMasses 42 1.9843469 insert eta'_2Width:InterpolationMasses 43 1.9935306 insert eta'_2Width:InterpolationMasses 44 2.0027143 insert eta'_2Width:InterpolationMasses 45 2.011898 insert eta'_2Width:InterpolationMasses 46 2.0210816 insert eta'_2Width:InterpolationMasses 47 2.0302653 insert eta'_2Width:InterpolationMasses 48 2.039449 insert eta'_2Width:InterpolationMasses 49 2.0486327 insert eta'_2Width:InterpolationMasses 50 2.0578163 insert eta'_2Width:InterpolationMasses 51 2.067 insert eta'_2Width:InterpolationMasses 52 2.0761837 insert eta'_2Width:InterpolationMasses 53 2.0853673 insert eta'_2Width:InterpolationMasses 54 1.5986327 insert eta'_2Width:InterpolationMasses 55 1.6078163 insert eta'_2Width:InterpolationMasses 56 1.617 insert eta'_2Width:InterpolationMasses 57 1.6261837 insert eta'_2Width:InterpolationMasses 58 1.6353673 insert eta'_2Width:InterpolationMasses 59 1.644551 insert eta'_2Width:InterpolationMasses 60 1.6537347 insert eta'_2Width:InterpolationMasses 61 1.6629184 insert eta'_2Width:InterpolationMasses 62 1.672102 insert eta'_2Width:InterpolationMasses 63 1.6812857 insert eta'_2Width:InterpolationMasses 64 1.6904694 insert eta'_2Width:InterpolationMasses 65 1.6996531 insert eta'_2Width:InterpolationMasses 66 1.7088367 insert eta'_2Width:InterpolationMasses 67 1.7180204 insert eta'_2Width:InterpolationMasses 68 1.7272041 insert eta'_2Width:InterpolationMasses 69 1.7363878 insert eta'_2Width:InterpolationMasses 70 1.7455714 insert eta'_2Width:InterpolationMasses 71 1.7547551 insert eta'_2Width:InterpolationMasses 72 1.7639388 insert eta'_2Width:InterpolationMasses 73 1.7731224 insert eta'_2Width:InterpolationMasses 74 1.7823061 insert eta'_2Width:InterpolationMasses 75 1.7914898 insert eta'_2Width:InterpolationMasses 76 1.8006735 insert eta'_2Width:InterpolationMasses 77 1.8098571 insert eta'_2Width:InterpolationMasses 78 1.8190408 insert eta'_2Width:InterpolationMasses 79 1.8282245 insert eta'_2Width:InterpolationMasses 80 1.8374082 insert eta'_2Width:InterpolationMasses 81 1.8465918 insert eta'_2Width:InterpolationMasses 82 1.8557755 insert eta'_2Width:InterpolationMasses 83 1.8649592 insert eta'_2Width:InterpolationMasses 84 1.8741429 insert eta'_2Width:InterpolationMasses 85 1.8833265 insert eta'_2Width:InterpolationMasses 86 1.8925102 insert eta'_2Width:InterpolationMasses 87 1.9016939 insert eta'_2Width:InterpolationMasses 88 1.9108776 insert eta'_2Width:InterpolationMasses 89 1.9200612 insert eta'_2Width:InterpolationMasses 90 1.9292449 insert eta'_2Width:InterpolationMasses 91 1.9384286 insert eta'_2Width:InterpolationMasses 92 1.9476122 insert eta'_2Width:InterpolationMasses 93 1.9567959 insert eta'_2Width:InterpolationMasses 94 1.9659796 insert eta'_2Width:InterpolationMasses 95 1.9751633 insert eta'_2Width:InterpolationMasses 96 1.9843469 insert eta'_2Width:InterpolationMasses 97 1.9935306 insert eta'_2Width:InterpolationMasses 98 2.0027143 insert eta'_2Width:InterpolationMasses 99 2.011898 insert eta'_2Width:InterpolationMasses 100 2.0210816 insert eta'_2Width:InterpolationMasses 101 2.0302653 insert eta'_2Width:InterpolationMasses 102 2.039449 insert eta'_2Width:InterpolationMasses 103 2.0486327 insert eta'_2Width:InterpolationMasses 104 2.0578163 insert eta'_2Width:InterpolationMasses 105 2.067 insert eta'_2Width:InterpolationMasses 106 2.0761837 insert eta'_2Width:InterpolationMasses 107 2.0853673 insert eta'_2Width:InterpolationMasses 108 1.5986327 insert eta'_2Width:InterpolationMasses 109 1.6078163 insert eta'_2Width:InterpolationMasses 110 1.617 insert eta'_2Width:InterpolationMasses 111 1.6261837 insert eta'_2Width:InterpolationMasses 112 1.6353673 insert eta'_2Width:InterpolationMasses 113 1.644551 insert eta'_2Width:InterpolationMasses 114 1.6537347 insert eta'_2Width:InterpolationMasses 115 1.6629184 insert eta'_2Width:InterpolationMasses 116 1.672102 insert eta'_2Width:InterpolationMasses 117 1.6812857 insert eta'_2Width:InterpolationMasses 118 1.6904694 insert eta'_2Width:InterpolationMasses 119 1.6996531 insert eta'_2Width:InterpolationMasses 120 1.7088367 insert eta'_2Width:InterpolationMasses 121 1.7180204 insert eta'_2Width:InterpolationMasses 122 1.7272041 insert eta'_2Width:InterpolationMasses 123 1.7363878 insert eta'_2Width:InterpolationMasses 124 1.7455714 insert eta'_2Width:InterpolationMasses 125 1.7547551 insert eta'_2Width:InterpolationMasses 126 1.7639388 insert eta'_2Width:InterpolationMasses 127 1.7731224 insert eta'_2Width:InterpolationMasses 128 1.7823061 insert eta'_2Width:InterpolationMasses 129 1.7914898 insert eta'_2Width:InterpolationMasses 130 1.8006735 insert eta'_2Width:InterpolationMasses 131 1.8098571 insert eta'_2Width:InterpolationMasses 132 1.8190408 insert eta'_2Width:InterpolationMasses 133 1.8282245 insert eta'_2Width:InterpolationMasses 134 1.8374082 insert eta'_2Width:InterpolationMasses 135 1.8465918 insert eta'_2Width:InterpolationMasses 136 1.8557755 insert eta'_2Width:InterpolationMasses 137 1.8649592 insert eta'_2Width:InterpolationMasses 138 1.8741429 insert eta'_2Width:InterpolationMasses 139 1.8833265 insert eta'_2Width:InterpolationMasses 140 1.8925102 insert eta'_2Width:InterpolationMasses 141 1.9016939 insert eta'_2Width:InterpolationMasses 142 1.9108776 insert eta'_2Width:InterpolationMasses 143 1.9200612 insert eta'_2Width:InterpolationMasses 144 1.9292449 insert eta'_2Width:InterpolationMasses 145 1.9384286 insert eta'_2Width:InterpolationMasses 146 1.9476122 insert eta'_2Width:InterpolationMasses 147 1.9567959 insert eta'_2Width:InterpolationMasses 148 1.9659796 insert eta'_2Width:InterpolationMasses 149 1.9751633 insert eta'_2Width:InterpolationMasses 150 1.9843469 insert eta'_2Width:InterpolationMasses 151 1.9935306 insert eta'_2Width:InterpolationMasses 152 2.0027143 insert eta'_2Width:InterpolationMasses 153 2.011898 insert eta'_2Width:InterpolationMasses 154 2.0210816 insert eta'_2Width:InterpolationMasses 155 2.0302653 insert eta'_2Width:InterpolationMasses 156 2.039449 insert eta'_2Width:InterpolationMasses 157 2.0486327 insert eta'_2Width:InterpolationMasses 158 2.0578163 insert eta'_2Width:InterpolationMasses 159 2.067 insert eta'_2Width:InterpolationMasses 160 2.0761837 insert eta'_2Width:InterpolationMasses 161 2.0853673 insert eta'_2Width:InterpolationWidths 0 0.00054954147 insert eta'_2Width:InterpolationWidths 1 0.00058150707 insert eta'_2Width:InterpolationWidths 2 0.00061539256 insert eta'_2Width:InterpolationWidths 3 0.00065049263 insert eta'_2Width:InterpolationWidths 4 0.00068688343 insert eta'_2Width:InterpolationWidths 5 0.00072472611 insert eta'_2Width:InterpolationWidths 6 0.00076396875 insert eta'_2Width:InterpolationWidths 7 0.0008046379 insert eta'_2Width:InterpolationWidths 8 0.00084675525 insert eta'_2Width:InterpolationWidths 9 0.00089035111 insert eta'_2Width:InterpolationWidths 10 0.00093543697 insert eta'_2Width:InterpolationWidths 11 0.00098205173 insert eta'_2Width:InterpolationWidths 12 0.0010302103 insert eta'_2Width:InterpolationWidths 13 0.0010799391 insert eta'_2Width:InterpolationWidths 14 0.0011312617 insert eta'_2Width:InterpolationWidths 15 0.0011842015 insert eta'_2Width:InterpolationWidths 16 0.0012387817 insert eta'_2Width:InterpolationWidths 17 0.0012950254 insert eta'_2Width:InterpolationWidths 18 0.0013529554 insert eta'_2Width:InterpolationWidths 19 0.0014125941 insert eta'_2Width:InterpolationWidths 20 0.0014739643 insert eta'_2Width:InterpolationWidths 21 0.0015370882 insert eta'_2Width:InterpolationWidths 22 0.0016019877 insert eta'_2Width:InterpolationWidths 23 0.0016686848 insert eta'_2Width:InterpolationWidths 24 0.0017372011 insert eta'_2Width:InterpolationWidths 25 0.0018075583 insert eta'_2Width:InterpolationWidths 26 0.0018797775 insert eta'_2Width:InterpolationWidths 27 0.0019538799 insert eta'_2Width:InterpolationWidths 28 0.0020298865 insert eta'_2Width:InterpolationWidths 29 0.0021078181 insert eta'_2Width:InterpolationWidths 30 0.0021876951 insert eta'_2Width:InterpolationWidths 31 0.0022695381 insert eta'_2Width:InterpolationWidths 32 0.0023533672 insert eta'_2Width:InterpolationWidths 33 0.0024392024 insert eta'_2Width:InterpolationWidths 34 0.0025270637 insert eta'_2Width:InterpolationWidths 35 0.0026169707 insert eta'_2Width:InterpolationWidths 36 0.002708943 insert eta'_2Width:InterpolationWidths 37 0.0028029999 insert eta'_2Width:InterpolationWidths 38 0.0028991606 insert eta'_2Width:InterpolationWidths 39 0.0029974441 insert eta'_2Width:InterpolationWidths 40 0.0030978693 insert eta'_2Width:InterpolationWidths 41 0.0032004548 insert eta'_2Width:InterpolationWidths 42 0.0033052193 insert eta'_2Width:InterpolationWidths 43 0.003412181 insert eta'_2Width:InterpolationWidths 44 0.0035213583 insert eta'_2Width:InterpolationWidths 45 0.0036327691 insert eta'_2Width:InterpolationWidths 46 0.0037464315 insert eta'_2Width:InterpolationWidths 47 0.0038623632 insert eta'_2Width:InterpolationWidths 48 0.0039805818 insert eta'_2Width:InterpolationWidths 49 0.0041011048 insert eta'_2Width:InterpolationWidths 50 0.0042239496 insert eta'_2Width:InterpolationWidths 51 0.0043491334 insert eta'_2Width:InterpolationWidths 52 0.0044766733 insert eta'_2Width:InterpolationWidths 53 0.0046065862 insert eta'_2Width:InterpolationWidths 54 0.00054954147 insert eta'_2Width:InterpolationWidths 55 0.00058150707 insert eta'_2Width:InterpolationWidths 56 0.00061539256 insert eta'_2Width:InterpolationWidths 57 0.00065049263 insert eta'_2Width:InterpolationWidths 58 0.00068688343 insert eta'_2Width:InterpolationWidths 59 0.00072472611 insert eta'_2Width:InterpolationWidths 60 0.00076396875 insert eta'_2Width:InterpolationWidths 61 0.0008046379 insert eta'_2Width:InterpolationWidths 62 0.00084675525 insert eta'_2Width:InterpolationWidths 63 0.00089035111 insert eta'_2Width:InterpolationWidths 64 0.00093543697 insert eta'_2Width:InterpolationWidths 65 0.00098205173 insert eta'_2Width:InterpolationWidths 66 0.0010302103 insert eta'_2Width:InterpolationWidths 67 0.0010799391 insert eta'_2Width:InterpolationWidths 68 0.0011312617 insert eta'_2Width:InterpolationWidths 69 0.0011842015 insert eta'_2Width:InterpolationWidths 70 0.0012387817 insert eta'_2Width:InterpolationWidths 71 0.0012950254 insert eta'_2Width:InterpolationWidths 72 0.0013529554 insert eta'_2Width:InterpolationWidths 73 0.0014125941 insert eta'_2Width:InterpolationWidths 74 0.0014739643 insert eta'_2Width:InterpolationWidths 75 0.0015370882 insert eta'_2Width:InterpolationWidths 76 0.0016019877 insert eta'_2Width:InterpolationWidths 77 0.0016686848 insert eta'_2Width:InterpolationWidths 78 0.0017372011 insert eta'_2Width:InterpolationWidths 79 0.0018075583 insert eta'_2Width:InterpolationWidths 80 0.0018797775 insert eta'_2Width:InterpolationWidths 81 0.0019538799 insert eta'_2Width:InterpolationWidths 82 0.0020298865 insert eta'_2Width:InterpolationWidths 83 0.0021078181 insert eta'_2Width:InterpolationWidths 84 0.0021876951 insert eta'_2Width:InterpolationWidths 85 0.0022695381 insert eta'_2Width:InterpolationWidths 86 0.0023533672 insert eta'_2Width:InterpolationWidths 87 0.0024392024 insert eta'_2Width:InterpolationWidths 88 0.0025270637 insert eta'_2Width:InterpolationWidths 89 0.0026169707 insert eta'_2Width:InterpolationWidths 90 0.002708943 insert eta'_2Width:InterpolationWidths 91 0.0028029999 insert eta'_2Width:InterpolationWidths 92 0.0028991606 insert eta'_2Width:InterpolationWidths 93 0.0029974441 insert eta'_2Width:InterpolationWidths 94 0.0030978693 insert eta'_2Width:InterpolationWidths 95 0.0032004548 insert eta'_2Width:InterpolationWidths 96 0.0033052193 insert eta'_2Width:InterpolationWidths 97 0.003412181 insert eta'_2Width:InterpolationWidths 98 0.0035213583 insert eta'_2Width:InterpolationWidths 99 0.0036327691 insert eta'_2Width:InterpolationWidths 100 0.0037464315 insert eta'_2Width:InterpolationWidths 101 0.0038623632 insert eta'_2Width:InterpolationWidths 102 0.0039805818 insert eta'_2Width:InterpolationWidths 103 0.0041011048 insert eta'_2Width:InterpolationWidths 104 0.0042239496 insert eta'_2Width:InterpolationWidths 105 0.0043491334 insert eta'_2Width:InterpolationWidths 106 0.0044766733 insert eta'_2Width:InterpolationWidths 107 0.0046065862 insert eta'_2Width:InterpolationWidths 108 0.00055497765 insert eta'_2Width:InterpolationWidths 109 0.00058766858 insert eta'_2Width:InterpolationWidths 110 0.00062164877 insert eta'_2Width:InterpolationWidths 111 0.00065696432 insert eta'_2Width:InterpolationWidths 112 0.0006936213 insert eta'_2Width:InterpolationWidths 113 0.00073167407 insert eta'_2Width:InterpolationWidths 114 0.00077111823 insert eta'_2Width:InterpolationWidths 115 0.00081198409 insert eta'_2Width:InterpolationWidths 116 0.00085433197 insert eta'_2Width:InterpolationWidths 117 0.0008981702 insert eta'_2Width:InterpolationWidths 118 0.00094351972 insert eta'_2Width:InterpolationWidths 119 0.00099019906 insert eta'_2Width:InterpolationWidths 120 0.0010385698 insert eta'_2Width:InterpolationWidths 121 0.0010885124 insert eta'_2Width:InterpolationWidths 122 0.0011400506 insert eta'_2Width:InterpolationWidths 123 0.0011932076 insert eta'_2Width:InterpolationWidths 124 0.0012480068 insert eta'_2Width:InterpolationWidths 125 0.0013044709 insert eta'_2Width:InterpolationWidths 126 0.0013626229 insert eta'_2Width:InterpolationWidths 127 0.0014224853 insert eta'_2Width:InterpolationWidths 128 0.0014840806 insert eta'_2Width:InterpolationWidths 129 0.001547431 insert eta'_2Width:InterpolationWidths 130 0.0016125585 insert eta'_2Width:InterpolationWidths 131 0.0016794851 insert eta'_2Width:InterpolationWidths 132 0.0017482324 insert eta'_2Width:InterpolationWidths 133 0.0018188218 insert eta'_2Width:InterpolationWidths 134 0.0018912747 insert eta'_2Width:InterpolationWidths 135 0.0019656121 insert eta'_2Width:InterpolationWidths 136 0.002041855 insert eta'_2Width:InterpolationWidths 137 0.0021200242 insert eta'_2Width:InterpolationWidths 138 0.0022001402 insert eta'_2Width:InterpolationWidths 139 0.0022823143 insert eta'_2Width:InterpolationWidths 140 0.0023663883 insert eta'_2Width:InterpolationWidths 141 0.0024524697 insert eta'_2Width:InterpolationWidths 142 0.0025405786 insert eta'_2Width:InterpolationWidths 143 0.0026307344 insert eta'_2Width:InterpolationWidths 144 0.0027229567 insert eta'_2Width:InterpolationWidths 145 0.002817265 insert eta'_2Width:InterpolationWidths 146 0.0029136782 insert eta'_2Width:InterpolationWidths 147 0.0030122155 insert eta'_2Width:InterpolationWidths 148 0.0031128957 insert eta'_2Width:InterpolationWidths 149 0.0032157375 insert eta'_2Width:InterpolationWidths 150 0.0033207594 insert eta'_2Width:InterpolationWidths 151 0.0034279797 insert eta'_2Width:InterpolationWidths 152 0.0035374168 insert eta'_2Width:InterpolationWidths 153 0.0036490886 insert eta'_2Width:InterpolationWidths 154 0.003763013 insert eta'_2Width:InterpolationWidths 155 0.003879208 insert eta'_2Width:InterpolationWidths 156 0.003997691 insert eta'_2Width:InterpolationWidths 157 0.0041184795 insert eta'_2Width:InterpolationWidths 158 0.004241591 insert eta'_2Width:InterpolationWidths 159 0.0043670426 insert eta'_2Width:InterpolationWidths 160 0.0044948514 insert eta'_2Width:InterpolationWidths 161 0.0046250342 insert eta'_2Width:NumberofEntries 0 54 insert eta'_2Width:NumberofEntries 1 108 insert eta'_2Width:NumberofEntries 2 162 insert eta'_2Width:NumberofEntries 3 162 insert eta'_2Width:NumberofEntries 4 162 insert eta'_2Width:NumberofEntries 5 162 insert eta'_2Width:NumberofEntries 6 162 newdef /Herwig/Particles/eta'_2:Width_generator eta'_2Width # create Herwig::GenericWidthGenerator Upsilon_2(1D)width newdef Upsilon_2(1D)width:Particle /Herwig/Particles/Upsilon_2(1D) newdef Upsilon_2(1D)width:Prefactor 1.01112 newdef Upsilon_2(1D)width:BRNormalize 1 newdef Upsilon_2(1D)width:BRMinimum 0.01 newdef Upsilon_2(1D)width:Points 50 newdef Upsilon_2(1D)width:InterpolationOrder 1 insert Upsilon_2(1D)width:MEtype 0 0 insert Upsilon_2(1D)width:MEtype 1 0 insert Upsilon_2(1D)width:MEtype 2 2 insert Upsilon_2(1D)width:MEtype 3 0 insert Upsilon_2(1D)width:MEtype 4 0 insert Upsilon_2(1D)width:MEcode 0 0 insert Upsilon_2(1D)width:MEcode 1 0 insert Upsilon_2(1D)width:MEcode 2 0 insert Upsilon_2(1D)width:MEcode 3 0 insert Upsilon_2(1D)width:MEcode 4 0 insert Upsilon_2(1D)width:MEcoupling 0 0.001333 insert Upsilon_2(1D)width:MEcoupling 1 0.000667 insert Upsilon_2(1D)width:MEcoupling 2 0.999944 insert Upsilon_2(1D)width:MEcoupling 3 0.203 insert Upsilon_2(1D)width:MEcoupling 4 0.009 insert Upsilon_2(1D)width:ModeOn 0 0 insert Upsilon_2(1D)width:ModeOn 1 0 insert Upsilon_2(1D)width:ModeOn 2 1 insert Upsilon_2(1D)width:ModeOn 3 1 insert Upsilon_2(1D)width:ModeOn 4 0 insert Upsilon_2(1D)width:MinimumMasses 0 9.7389 insert Upsilon_2(1D)width:MinimumMasses 1 9.72972 insert Upsilon_2(1D)width:MinimumMasses 2 9.85127 insert Upsilon_2(1D)width:MinimumMasses 3 9.91051 insert Upsilon_2(1D)width:MinimumMasses 4 0 insert Upsilon_2(1D)width:MEmass1 0 0 insert Upsilon_2(1D)width:MEmass1 1 0 insert Upsilon_2(1D)width:MEmass1 2 9.85944 insert Upsilon_2(1D)width:MEmass1 3 0 insert Upsilon_2(1D)width:MEmass1 4 0 insert Upsilon_2(1D)width:MEmass2 0 0 insert Upsilon_2(1D)width:MEmass2 1 0 insert Upsilon_2(1D)width:MEmass2 2 0 insert Upsilon_2(1D)width:MEmass2 3 0 insert Upsilon_2(1D)width:MEmass2 4 0 insert Upsilon_2(1D)width:DecayModes 0 Upsilon_2(1D)->Upsilon,pi+,pi-; insert Upsilon_2(1D)width:DecayModes 1 Upsilon_2(1D)->Upsilon,pi0,pi0; insert Upsilon_2(1D)width:DecayModes 2 Upsilon_2(1D)->chi_b0,gamma; insert Upsilon_2(1D)width:DecayModes 3 Upsilon_2(1D)->chi_b2,gamma; insert Upsilon_2(1D)width:DecayModes 4 Upsilon_2(1D)->g,g,g; insert Upsilon_2(1D)width:InterpolationMasses 0 10.160797 insert Upsilon_2(1D)width:InterpolationMasses 1 10.160809 insert Upsilon_2(1D)width:InterpolationMasses 2 10.16082 insert Upsilon_2(1D)width:InterpolationMasses 3 10.160831 insert Upsilon_2(1D)width:InterpolationMasses 4 10.160843 insert Upsilon_2(1D)width:InterpolationMasses 5 10.160854 insert Upsilon_2(1D)width:InterpolationMasses 6 10.160866 insert Upsilon_2(1D)width:InterpolationMasses 7 10.160877 insert Upsilon_2(1D)width:InterpolationMasses 8 10.160889 insert Upsilon_2(1D)width:InterpolationMasses 9 10.1609 insert Upsilon_2(1D)width:InterpolationMasses 10 10.160911 insert Upsilon_2(1D)width:InterpolationMasses 11 10.160923 insert Upsilon_2(1D)width:InterpolationMasses 12 10.160934 insert Upsilon_2(1D)width:InterpolationMasses 13 10.160946 insert Upsilon_2(1D)width:InterpolationMasses 14 10.160957 insert Upsilon_2(1D)width:InterpolationMasses 15 10.160969 insert Upsilon_2(1D)width:InterpolationMasses 16 10.16098 insert Upsilon_2(1D)width:InterpolationMasses 17 10.160991 insert Upsilon_2(1D)width:InterpolationMasses 18 10.161003 insert Upsilon_2(1D)width:InterpolationMasses 19 10.161014 insert Upsilon_2(1D)width:InterpolationMasses 20 10.161026 insert Upsilon_2(1D)width:InterpolationMasses 21 10.161037 insert Upsilon_2(1D)width:InterpolationMasses 22 10.161049 insert Upsilon_2(1D)width:InterpolationMasses 23 10.16106 insert Upsilon_2(1D)width:InterpolationMasses 24 10.161071 insert Upsilon_2(1D)width:InterpolationMasses 25 10.161083 insert Upsilon_2(1D)width:InterpolationMasses 26 10.161094 insert Upsilon_2(1D)width:InterpolationMasses 27 10.161106 insert Upsilon_2(1D)width:InterpolationMasses 28 10.161117 insert Upsilon_2(1D)width:InterpolationMasses 29 10.161129 insert Upsilon_2(1D)width:InterpolationMasses 30 10.16114 insert Upsilon_2(1D)width:InterpolationMasses 31 10.161151 insert Upsilon_2(1D)width:InterpolationMasses 32 10.161163 insert Upsilon_2(1D)width:InterpolationMasses 33 10.161174 insert Upsilon_2(1D)width:InterpolationMasses 34 10.161186 insert Upsilon_2(1D)width:InterpolationMasses 35 10.161197 insert Upsilon_2(1D)width:InterpolationMasses 36 10.161209 insert Upsilon_2(1D)width:InterpolationMasses 37 10.16122 insert Upsilon_2(1D)width:InterpolationMasses 38 10.161231 insert Upsilon_2(1D)width:InterpolationMasses 39 10.161243 insert Upsilon_2(1D)width:InterpolationMasses 40 10.161254 insert Upsilon_2(1D)width:InterpolationMasses 41 10.161266 insert Upsilon_2(1D)width:InterpolationMasses 42 10.161277 insert Upsilon_2(1D)width:InterpolationMasses 43 10.161289 insert Upsilon_2(1D)width:InterpolationMasses 44 10.1613 insert Upsilon_2(1D)width:InterpolationMasses 45 10.161311 insert Upsilon_2(1D)width:InterpolationMasses 46 10.161323 insert Upsilon_2(1D)width:InterpolationMasses 47 10.161334 insert Upsilon_2(1D)width:InterpolationMasses 48 10.161346 insert Upsilon_2(1D)width:InterpolationMasses 49 10.161357 insert Upsilon_2(1D)width:InterpolationMasses 50 10.161369 insert Upsilon_2(1D)width:InterpolationMasses 51 10.16138 insert Upsilon_2(1D)width:InterpolationMasses 52 10.161391 insert Upsilon_2(1D)width:InterpolationMasses 53 10.161403 insert Upsilon_2(1D)width:InterpolationWidths 0 2.1900585e-05 insert Upsilon_2(1D)width:InterpolationWidths 1 2.1904677e-05 insert Upsilon_2(1D)width:InterpolationWidths 2 2.190877e-05 insert Upsilon_2(1D)width:InterpolationWidths 3 2.1912863e-05 insert Upsilon_2(1D)width:InterpolationWidths 4 2.1916957e-05 insert Upsilon_2(1D)width:InterpolationWidths 5 2.1921052e-05 insert Upsilon_2(1D)width:InterpolationWidths 6 2.1925147e-05 insert Upsilon_2(1D)width:InterpolationWidths 7 2.1929242e-05 insert Upsilon_2(1D)width:InterpolationWidths 8 2.1933339e-05 insert Upsilon_2(1D)width:InterpolationWidths 9 2.1937436e-05 insert Upsilon_2(1D)width:InterpolationWidths 10 2.1941533e-05 insert Upsilon_2(1D)width:InterpolationWidths 11 2.1945631e-05 insert Upsilon_2(1D)width:InterpolationWidths 12 2.194973e-05 insert Upsilon_2(1D)width:InterpolationWidths 13 2.1953829e-05 insert Upsilon_2(1D)width:InterpolationWidths 14 2.1957929e-05 insert Upsilon_2(1D)width:InterpolationWidths 15 2.196203e-05 insert Upsilon_2(1D)width:InterpolationWidths 16 2.1966131e-05 insert Upsilon_2(1D)width:InterpolationWidths 17 2.1970233e-05 insert Upsilon_2(1D)width:InterpolationWidths 18 2.1974335e-05 insert Upsilon_2(1D)width:InterpolationWidths 19 2.1978438e-05 insert Upsilon_2(1D)width:InterpolationWidths 20 2.1982542e-05 insert Upsilon_2(1D)width:InterpolationWidths 21 2.1986646e-05 insert Upsilon_2(1D)width:InterpolationWidths 22 2.1990751e-05 insert Upsilon_2(1D)width:InterpolationWidths 23 2.1994856e-05 insert Upsilon_2(1D)width:InterpolationWidths 24 2.1998962e-05 insert Upsilon_2(1D)width:InterpolationWidths 25 2.2003069e-05 insert Upsilon_2(1D)width:InterpolationWidths 26 2.2007176e-05 insert Upsilon_2(1D)width:InterpolationWidths 27 2.2011284e-05 insert Upsilon_2(1D)width:InterpolationWidths 28 2.2015392e-05 insert Upsilon_2(1D)width:InterpolationWidths 29 2.2019501e-05 insert Upsilon_2(1D)width:InterpolationWidths 30 2.2023611e-05 insert Upsilon_2(1D)width:InterpolationWidths 31 2.2027721e-05 insert Upsilon_2(1D)width:InterpolationWidths 32 2.2031832e-05 insert Upsilon_2(1D)width:InterpolationWidths 33 2.2035944e-05 insert Upsilon_2(1D)width:InterpolationWidths 34 2.2040056e-05 insert Upsilon_2(1D)width:InterpolationWidths 35 2.2044169e-05 insert Upsilon_2(1D)width:InterpolationWidths 36 2.2048282e-05 insert Upsilon_2(1D)width:InterpolationWidths 37 2.2052396e-05 insert Upsilon_2(1D)width:InterpolationWidths 38 2.205651e-05 insert Upsilon_2(1D)width:InterpolationWidths 39 2.2060626e-05 insert Upsilon_2(1D)width:InterpolationWidths 40 2.2064741e-05 insert Upsilon_2(1D)width:InterpolationWidths 41 2.2068858e-05 insert Upsilon_2(1D)width:InterpolationWidths 42 2.2072975e-05 insert Upsilon_2(1D)width:InterpolationWidths 43 2.2077092e-05 insert Upsilon_2(1D)width:InterpolationWidths 44 2.208121e-05 insert Upsilon_2(1D)width:InterpolationWidths 45 2.2085329e-05 insert Upsilon_2(1D)width:InterpolationWidths 46 2.2089449e-05 insert Upsilon_2(1D)width:InterpolationWidths 47 2.2093569e-05 insert Upsilon_2(1D)width:InterpolationWidths 48 2.2097689e-05 insert Upsilon_2(1D)width:InterpolationWidths 49 2.2101811e-05 insert Upsilon_2(1D)width:InterpolationWidths 50 2.2105933e-05 insert Upsilon_2(1D)width:InterpolationWidths 51 2.2110055e-05 insert Upsilon_2(1D)width:InterpolationWidths 52 2.2114178e-05 insert Upsilon_2(1D)width:InterpolationWidths 53 2.2118302e-05 insert Upsilon_2(1D)width:NumberofEntries 0 0 insert Upsilon_2(1D)width:NumberofEntries 1 0 insert Upsilon_2(1D)width:NumberofEntries 2 54 insert Upsilon_2(1D)width:NumberofEntries 3 54 insert Upsilon_2(1D)width:NumberofEntries 4 54 newdef /Herwig/Particles/Upsilon_2(1D):Width_generator Upsilon_2(1D)width # create Herwig::GenericWidthGenerator Upsilon_3(1D)width newdef Upsilon_3(1D)width:Particle /Herwig/Particles/Upsilon_3(1D) newdef Upsilon_3(1D)width:Prefactor 1.00301 newdef Upsilon_3(1D)width:BRNormalize 1 newdef Upsilon_3(1D)width:BRMinimum 0.01 newdef Upsilon_3(1D)width:Points 50 newdef Upsilon_3(1D)width:InterpolationOrder 1 insert Upsilon_3(1D)width:MEtype 0 0 insert Upsilon_3(1D)width:MEtype 1 0 insert Upsilon_3(1D)width:MEtype 2 0 insert Upsilon_3(1D)width:MEtype 3 0 insert Upsilon_3(1D)width:MEcode 0 0 insert Upsilon_3(1D)width:MEcode 1 0 insert Upsilon_3(1D)width:MEcode 2 0 insert Upsilon_3(1D)width:MEcode 3 0 insert Upsilon_3(1D)width:MEcoupling 0 0.002 insert Upsilon_3(1D)width:MEcoupling 1 0.001 insert Upsilon_3(1D)width:MEcoupling 2 0.954 insert Upsilon_3(1D)width:MEcoupling 3 0.043 insert Upsilon_3(1D)width:ModeOn 0 0 insert Upsilon_3(1D)width:ModeOn 1 0 insert Upsilon_3(1D)width:ModeOn 2 1 insert Upsilon_3(1D)width:ModeOn 3 1 insert Upsilon_3(1D)width:MinimumMasses 0 9.7389 insert Upsilon_3(1D)width:MinimumMasses 1 9.72972 insert Upsilon_3(1D)width:MinimumMasses 2 9.91051 insert Upsilon_3(1D)width:MinimumMasses 3 0 insert Upsilon_3(1D)width:MEmass1 0 0 insert Upsilon_3(1D)width:MEmass1 1 0 insert Upsilon_3(1D)width:MEmass1 2 0 insert Upsilon_3(1D)width:MEmass1 3 0 insert Upsilon_3(1D)width:MEmass2 0 0 insert Upsilon_3(1D)width:MEmass2 1 0 insert Upsilon_3(1D)width:MEmass2 2 0 insert Upsilon_3(1D)width:MEmass2 3 0 insert Upsilon_3(1D)width:DecayModes 0 Upsilon_3(1D)->Upsilon,pi+,pi-; insert Upsilon_3(1D)width:DecayModes 1 Upsilon_3(1D)->Upsilon,pi0,pi0; insert Upsilon_3(1D)width:DecayModes 2 Upsilon_3(1D)->chi_b2,gamma; insert Upsilon_3(1D)width:DecayModes 3 Upsilon_3(1D)->g,g,g; insert Upsilon_3(1D)width:NumberofEntries 0 0 insert Upsilon_3(1D)width:NumberofEntries 1 0 insert Upsilon_3(1D)width:NumberofEntries 2 0 insert Upsilon_3(1D)width:NumberofEntries 3 0 newdef /Herwig/Particles/Upsilon_3(1D):Width_generator Upsilon_3(1D)width # create Herwig::GenericWidthGenerator Upsilon_1(2D)Width newdef Upsilon_1(2D)Width:Particle /Herwig/Particles/Upsilon_1(2D) newdef Upsilon_1(2D)Width:Prefactor 1.00381 newdef Upsilon_1(2D)Width:BRNormalize 1 newdef Upsilon_1(2D)Width:BRMinimum 0.01 newdef Upsilon_1(2D)Width:Points 50 newdef Upsilon_1(2D)Width:InterpolationOrder 1 insert Upsilon_1(2D)Width:MEtype 0 0 insert Upsilon_1(2D)Width:MEtype 1 0 insert Upsilon_1(2D)Width:MEtype 2 0 insert Upsilon_1(2D)Width:MEtype 3 0 insert Upsilon_1(2D)Width:MEtype 4 0 insert Upsilon_1(2D)Width:MEtype 5 0 insert Upsilon_1(2D)Width:MEcode 0 0 insert Upsilon_1(2D)Width:MEcode 1 0 insert Upsilon_1(2D)Width:MEcode 2 0 insert Upsilon_1(2D)Width:MEcode 3 0 insert Upsilon_1(2D)Width:MEcode 4 0 insert Upsilon_1(2D)Width:MEcode 5 0 insert Upsilon_1(2D)Width:MEcoupling 0 0.5381 insert Upsilon_1(2D)Width:MEcoupling 1 0.1046 insert Upsilon_1(2D)Width:MEcoupling 2 0.2728 insert Upsilon_1(2D)Width:MEcoupling 3 0.0663 insert Upsilon_1(2D)Width:MEcoupling 4 0.0144 insert Upsilon_1(2D)Width:MEcoupling 5 0.0038 insert Upsilon_1(2D)Width:ModeOn 0 1 insert Upsilon_1(2D)Width:ModeOn 1 1 insert Upsilon_1(2D)Width:ModeOn 2 1 insert Upsilon_1(2D)Width:ModeOn 3 1 insert Upsilon_1(2D)Width:ModeOn 4 1 insert Upsilon_1(2D)Width:ModeOn 5 0 insert Upsilon_1(2D)Width:MinimumMasses 0 10.2236 insert Upsilon_1(2D)Width:MinimumMasses 1 9.85127 insert Upsilon_1(2D)Width:MinimumMasses 2 10.2547 insert Upsilon_1(2D)Width:MinimumMasses 3 9.89207 insert Upsilon_1(2D)Width:MinimumMasses 4 10.2668 insert Upsilon_1(2D)Width:MinimumMasses 5 9.91051 insert Upsilon_1(2D)Width:MEmass1 0 0 insert Upsilon_1(2D)Width:MEmass1 1 0 insert Upsilon_1(2D)Width:MEmass1 2 0 insert Upsilon_1(2D)Width:MEmass1 3 0 insert Upsilon_1(2D)Width:MEmass1 4 0 insert Upsilon_1(2D)Width:MEmass1 5 0 insert Upsilon_1(2D)Width:MEmass2 0 0 insert Upsilon_1(2D)Width:MEmass2 1 0 insert Upsilon_1(2D)Width:MEmass2 2 0 insert Upsilon_1(2D)Width:MEmass2 3 0 insert Upsilon_1(2D)Width:MEmass2 4 0 insert Upsilon_1(2D)Width:MEmass2 5 0 insert Upsilon_1(2D)Width:DecayModes 0 Upsilon_1(2D)->chi_b0(2P),gamma; insert Upsilon_1(2D)Width:DecayModes 1 Upsilon_1(2D)->chi_b0,gamma; insert Upsilon_1(2D)Width:DecayModes 2 Upsilon_1(2D)->chi_b1(2P),gamma; insert Upsilon_1(2D)Width:DecayModes 3 Upsilon_1(2D)->chi_b1,gamma; insert Upsilon_1(2D)Width:DecayModes 4 Upsilon_1(2D)->chi_b2(2P),gamma; insert Upsilon_1(2D)Width:DecayModes 5 Upsilon_1(2D)->chi_b2,gamma; insert Upsilon_1(2D)Width:NumberofEntries 0 0 insert Upsilon_1(2D)Width:NumberofEntries 1 0 insert Upsilon_1(2D)Width:NumberofEntries 2 0 insert Upsilon_1(2D)Width:NumberofEntries 3 0 insert Upsilon_1(2D)Width:NumberofEntries 4 0 insert Upsilon_1(2D)Width:NumberofEntries 5 0 newdef /Herwig/Particles/Upsilon_1(2D):Width_generator Upsilon_1(2D)Width # create Herwig::GenericWidthGenerator Upsilon_2(2D)Width newdef Upsilon_2(2D)Width:Particle /Herwig/Particles/Upsilon_2(2D) newdef Upsilon_2(2D)Width:Prefactor 1 newdef Upsilon_2(2D)Width:BRNormalize 1 newdef Upsilon_2(2D)Width:BRMinimum 0.01 newdef Upsilon_2(2D)Width:Points 50 newdef Upsilon_2(2D)Width:InterpolationOrder 1 insert Upsilon_2(2D)Width:MEtype 0 0 insert Upsilon_2(2D)Width:MEtype 1 0 insert Upsilon_2(2D)Width:MEtype 2 0 insert Upsilon_2(2D)Width:MEtype 3 0 insert Upsilon_2(2D)Width:MEcode 0 0 insert Upsilon_2(2D)Width:MEcode 1 0 insert Upsilon_2(2D)Width:MEcode 2 0 insert Upsilon_2(2D)Width:MEcode 3 0 insert Upsilon_2(2D)Width:MEcoupling 0 0.6382 insert Upsilon_2(2D)Width:MEcoupling 1 0.1461 insert Upsilon_2(2D)Width:MEcoupling 2 0.1721 insert Upsilon_2(2D)Width:MEcoupling 3 0.0436 insert Upsilon_2(2D)Width:ModeOn 0 1 insert Upsilon_2(2D)Width:ModeOn 1 1 insert Upsilon_2(2D)Width:ModeOn 2 1 insert Upsilon_2(2D)Width:ModeOn 3 1 insert Upsilon_2(2D)Width:MinimumMasses 0 10.2547 insert Upsilon_2(2D)Width:MinimumMasses 1 9.89207 insert Upsilon_2(2D)Width:MinimumMasses 2 10.2668 insert Upsilon_2(2D)Width:MinimumMasses 3 9.91051 insert Upsilon_2(2D)Width:MEmass1 0 0 insert Upsilon_2(2D)Width:MEmass1 1 0 insert Upsilon_2(2D)Width:MEmass1 2 0 insert Upsilon_2(2D)Width:MEmass1 3 0 insert Upsilon_2(2D)Width:MEmass2 0 0 insert Upsilon_2(2D)Width:MEmass2 1 0 insert Upsilon_2(2D)Width:MEmass2 2 0 insert Upsilon_2(2D)Width:MEmass2 3 0 insert Upsilon_2(2D)Width:DecayModes 0 Upsilon_2(2D)->chi_b1(2P),gamma; insert Upsilon_2(2D)Width:DecayModes 1 Upsilon_2(2D)->chi_b1,gamma; insert Upsilon_2(2D)Width:DecayModes 2 Upsilon_2(2D)->chi_b2(2P),gamma; insert Upsilon_2(2D)Width:DecayModes 3 Upsilon_2(2D)->chi_b2,gamma; insert Upsilon_2(2D)Width:NumberofEntries 0 0 insert Upsilon_2(2D)Width:NumberofEntries 1 0 insert Upsilon_2(2D)Width:NumberofEntries 2 0 insert Upsilon_2(2D)Width:NumberofEntries 3 0 newdef /Herwig/Particles/Upsilon_2(2D):Width_generator Upsilon_2(2D)Width # create Herwig::GenericWidthGenerator Upsilon_3(2D)Width newdef Upsilon_3(2D)Width:Particle /Herwig/Particles/Upsilon_3(2D) newdef Upsilon_3(2D)Width:Prefactor 1 newdef Upsilon_3(2D)Width:BRNormalize 1 newdef Upsilon_3(2D)Width:BRMinimum 0.01 newdef Upsilon_3(2D)Width:Points 50 newdef Upsilon_3(2D)Width:InterpolationOrder 1 insert Upsilon_3(2D)Width:MEtype 0 0 insert Upsilon_3(2D)Width:MEtype 1 0 insert Upsilon_3(2D)Width:MEcode 0 0 insert Upsilon_3(2D)Width:MEcode 1 0 insert Upsilon_3(2D)Width:MEcoupling 0 0.8053 insert Upsilon_3(2D)Width:MEcoupling 1 0.1947 insert Upsilon_3(2D)Width:ModeOn 0 1 insert Upsilon_3(2D)Width:ModeOn 1 1 insert Upsilon_3(2D)Width:MinimumMasses 0 10.2668 insert Upsilon_3(2D)Width:MinimumMasses 1 9.91051 insert Upsilon_3(2D)Width:MEmass1 0 0 insert Upsilon_3(2D)Width:MEmass1 1 0 insert Upsilon_3(2D)Width:MEmass2 0 0 insert Upsilon_3(2D)Width:MEmass2 1 0 insert Upsilon_3(2D)Width:DecayModes 0 Upsilon_3(2D)->chi_b2(2P),gamma; insert Upsilon_3(2D)Width:DecayModes 1 Upsilon_3(2D)->chi_b2,gamma; insert Upsilon_3(2D)Width:NumberofEntries 0 0 insert Upsilon_3(2D)Width:NumberofEntries 1 0 newdef /Herwig/Particles/Upsilon_3(2D):Width_generator Upsilon_3(2D)Width # create Herwig::GenericWidthGenerator chi_b03PWidth newdef chi_b03PWidth:Particle /Herwig/Particles/chi_b0(3P) newdef chi_b03PWidth:Prefactor 1.01235 newdef chi_b03PWidth:BRNormalize 1 newdef chi_b03PWidth:BRMinimum 0.01 newdef chi_b03PWidth:Points 50 newdef chi_b03PWidth:InterpolationOrder 1 insert chi_b03PWidth:MEtype 0 0 insert chi_b03PWidth:MEtype 1 0 insert chi_b03PWidth:MEtype 2 0 insert chi_b03PWidth:MEtype 3 0 insert chi_b03PWidth:MEtype 4 0 insert chi_b03PWidth:MEcode 0 0 insert chi_b03PWidth:MEcode 1 0 insert chi_b03PWidth:MEcode 2 0 insert chi_b03PWidth:MEcode 3 0 insert chi_b03PWidth:MEcode 4 0 insert chi_b03PWidth:MEcoupling 0 0.0046 insert chi_b03PWidth:MEcoupling 1 0.0105 insert chi_b03PWidth:MEcoupling 2 0.005 insert chi_b03PWidth:MEcoupling 3 0.0026 insert chi_b03PWidth:MEcoupling 4 0.9773 insert chi_b03PWidth:ModeOn 0 0 insert chi_b03PWidth:ModeOn 1 1 insert chi_b03PWidth:ModeOn 2 0 insert chi_b03PWidth:ModeOn 3 0 insert chi_b03PWidth:ModeOn 4 1 insert chi_b03PWidth:MinimumMasses 0 10.0229 insert chi_b03PWidth:MinimumMasses 1 10.355 insert chi_b03PWidth:MinimumMasses 2 9.45976 insert chi_b03PWidth:MinimumMasses 3 10.4347 insert chi_b03PWidth:MinimumMasses 4 0 insert chi_b03PWidth:MEmass1 0 0 insert chi_b03PWidth:MEmass1 1 0 insert chi_b03PWidth:MEmass1 2 0 insert chi_b03PWidth:MEmass1 3 0 insert chi_b03PWidth:MEmass1 4 0 insert chi_b03PWidth:MEmass2 0 0 insert chi_b03PWidth:MEmass2 1 0 insert chi_b03PWidth:MEmass2 2 0 insert chi_b03PWidth:MEmass2 3 0 insert chi_b03PWidth:MEmass2 4 0 insert chi_b03PWidth:DecayModes 0 chi_b0(3P)->Upsilon(2S),gamma; insert chi_b03PWidth:DecayModes 1 chi_b0(3P)->Upsilon(3S),gamma; insert chi_b03PWidth:DecayModes 2 chi_b0(3P)->Upsilon,gamma; insert chi_b03PWidth:DecayModes 3 chi_b0(3P)->Upsilon_1(2D),gamma; insert chi_b03PWidth:DecayModes 4 chi_b0(3P)->g,g; insert chi_b03PWidth:NumberofEntries 0 0 insert chi_b03PWidth:NumberofEntries 1 0 insert chi_b03PWidth:NumberofEntries 2 0 insert chi_b03PWidth:NumberofEntries 3 0 insert chi_b03PWidth:NumberofEntries 4 0 newdef /Herwig/Particles/chi_b0(3P):Width_generator chi_b03PWidth # create Herwig::GenericWidthGenerator chi_b13PWidth newdef chi_b13PWidth:Particle /Herwig/Particles/chi_b1(3P) newdef chi_b13PWidth:Prefactor 1 newdef chi_b13PWidth:BRNormalize 1 newdef chi_b13PWidth:BRMinimum 0.01 newdef chi_b13PWidth:Points 50 newdef chi_b13PWidth:InterpolationOrder 1 insert chi_b13PWidth:MEtype 0 0 insert chi_b13PWidth:MEtype 1 0 insert chi_b13PWidth:MEtype 2 0 insert chi_b13PWidth:MEtype 3 0 insert chi_b13PWidth:MEtype 4 0 insert chi_b13PWidth:MEtype 5 0 insert chi_b13PWidth:MEcode 0 0 insert chi_b13PWidth:MEcode 1 0 insert chi_b13PWidth:MEcode 2 0 insert chi_b13PWidth:MEcode 3 0 insert chi_b13PWidth:MEcode 4 0 insert chi_b13PWidth:MEcode 5 0 insert chi_b13PWidth:MEcoupling 0 0.054 insert chi_b13PWidth:MEcoupling 1 0.1531 insert chi_b13PWidth:MEcoupling 2 0.0559 insert chi_b13PWidth:MEcoupling 3 0.013 insert chi_b13PWidth:MEcoupling 4 0.0315 insert chi_b13PWidth:MEcoupling 5 0.6925 insert chi_b13PWidth:ModeOn 0 1 insert chi_b13PWidth:ModeOn 1 1 insert chi_b13PWidth:ModeOn 2 1 insert chi_b13PWidth:ModeOn 3 1 insert chi_b13PWidth:ModeOn 4 1 insert chi_b13PWidth:ModeOn 5 1 insert chi_b13PWidth:MinimumMasses 0 10.0229 insert chi_b13PWidth:MinimumMasses 1 10.355 insert chi_b13PWidth:MinimumMasses 2 9.45976 insert chi_b13PWidth:MinimumMasses 3 10.4347 insert chi_b13PWidth:MinimumMasses 4 10.4408 insert chi_b13PWidth:MinimumMasses 5 0 insert chi_b13PWidth:MEmass1 0 0 insert chi_b13PWidth:MEmass1 1 0 insert chi_b13PWidth:MEmass1 2 0 insert chi_b13PWidth:MEmass1 3 0 insert chi_b13PWidth:MEmass1 4 0 insert chi_b13PWidth:MEmass1 5 0 insert chi_b13PWidth:MEmass2 0 0 insert chi_b13PWidth:MEmass2 1 0 insert chi_b13PWidth:MEmass2 2 0 insert chi_b13PWidth:MEmass2 3 0 insert chi_b13PWidth:MEmass2 4 0 insert chi_b13PWidth:MEmass2 5 0 insert chi_b13PWidth:DecayModes 0 chi_b1(3P)->Upsilon(2S),gamma; insert chi_b13PWidth:DecayModes 1 chi_b1(3P)->Upsilon(3S),gamma; insert chi_b13PWidth:DecayModes 2 chi_b1(3P)->Upsilon,gamma; insert chi_b13PWidth:DecayModes 3 chi_b1(3P)->Upsilon_1(2D),gamma; insert chi_b13PWidth:DecayModes 4 chi_b1(3P)->Upsilon_2(2D),gamma; insert chi_b13PWidth:DecayModes 5 chi_b1(3P)->g,g; insert chi_b13PWidth:NumberofEntries 0 0 insert chi_b13PWidth:NumberofEntries 1 0 insert chi_b13PWidth:NumberofEntries 2 0 insert chi_b13PWidth:NumberofEntries 3 0 insert chi_b13PWidth:NumberofEntries 4 0 insert chi_b13PWidth:NumberofEntries 5 0 newdef /Herwig/Particles/chi_b1(3P):Width_generator chi_b13PWidth # create Herwig::GenericWidthGenerator chi_b23PWidth newdef chi_b23PWidth:Particle /Herwig/Particles/chi_b2(3P) newdef chi_b23PWidth:Prefactor 1.00452 newdef chi_b23PWidth:BRNormalize 1 newdef chi_b23PWidth:BRMinimum 0.01 newdef chi_b23PWidth:Points 50 newdef chi_b23PWidth:InterpolationOrder 1 insert chi_b23PWidth:MEtype 0 0 insert chi_b23PWidth:MEtype 1 0 insert chi_b23PWidth:MEtype 2 0 insert chi_b23PWidth:MEtype 3 0 insert chi_b23PWidth:MEtype 4 0 insert chi_b23PWidth:MEtype 5 0 insert chi_b23PWidth:MEtype 6 0 insert chi_b23PWidth:MEcode 0 0 insert chi_b23PWidth:MEcode 1 0 insert chi_b23PWidth:MEcode 2 0 insert chi_b23PWidth:MEcode 3 0 insert chi_b23PWidth:MEcode 4 0 insert chi_b23PWidth:MEcode 5 0 insert chi_b23PWidth:MEcode 6 0 insert chi_b23PWidth:MEcoupling 0 0.0258 insert chi_b23PWidth:MEcoupling 1 0.0827 insert chi_b23PWidth:MEcoupling 2 0.026 insert chi_b23PWidth:MEcoupling 3 0.0003 insert chi_b23PWidth:MEcoupling 4 0.0042 insert chi_b23PWidth:MEcoupling 5 0.0206 insert chi_b23PWidth:MEcoupling 6 0.8404 insert chi_b23PWidth:ModeOn 0 1 insert chi_b23PWidth:ModeOn 1 1 insert chi_b23PWidth:ModeOn 2 1 insert chi_b23PWidth:ModeOn 3 0 insert chi_b23PWidth:ModeOn 4 0 insert chi_b23PWidth:ModeOn 5 1 insert chi_b23PWidth:ModeOn 6 1 insert chi_b23PWidth:MinimumMasses 0 10.0229 insert chi_b23PWidth:MinimumMasses 1 10.355 insert chi_b23PWidth:MinimumMasses 2 9.45976 insert chi_b23PWidth:MinimumMasses 3 10.4347 insert chi_b23PWidth:MinimumMasses 4 10.4408 insert chi_b23PWidth:MinimumMasses 5 10.4438 insert chi_b23PWidth:MinimumMasses 6 0 insert chi_b23PWidth:MEmass1 0 0 insert chi_b23PWidth:MEmass1 1 0 insert chi_b23PWidth:MEmass1 2 0 insert chi_b23PWidth:MEmass1 3 0 insert chi_b23PWidth:MEmass1 4 0 insert chi_b23PWidth:MEmass1 5 0 insert chi_b23PWidth:MEmass1 6 0 insert chi_b23PWidth:MEmass2 0 0 insert chi_b23PWidth:MEmass2 1 0 insert chi_b23PWidth:MEmass2 2 0 insert chi_b23PWidth:MEmass2 3 0 insert chi_b23PWidth:MEmass2 4 0 insert chi_b23PWidth:MEmass2 5 0 insert chi_b23PWidth:MEmass2 6 0 insert chi_b23PWidth:DecayModes 0 chi_b2(3P)->Upsilon(2S),gamma; insert chi_b23PWidth:DecayModes 1 chi_b2(3P)->Upsilon(3S),gamma; insert chi_b23PWidth:DecayModes 2 chi_b2(3P)->Upsilon,gamma; insert chi_b23PWidth:DecayModes 3 chi_b2(3P)->Upsilon_1(2D),gamma; insert chi_b23PWidth:DecayModes 4 chi_b2(3P)->Upsilon_2(2D),gamma; insert chi_b23PWidth:DecayModes 5 chi_b2(3P)->Upsilon_3(2D),gamma; insert chi_b23PWidth:DecayModes 6 chi_b2(3P)->g,g; insert chi_b23PWidth:NumberofEntries 0 0 insert chi_b23PWidth:NumberofEntries 1 0 insert chi_b23PWidth:NumberofEntries 2 0 insert chi_b23PWidth:NumberofEntries 3 0 insert chi_b23PWidth:NumberofEntries 4 0 insert chi_b23PWidth:NumberofEntries 5 0 insert chi_b23PWidth:NumberofEntries 6 0 newdef /Herwig/Particles/chi_b2(3P):Width_generator chi_b23PWidth # create Herwig::GenericWidthGenerator eta_b(3S)Width newdef eta_b(3S)Width:Particle /Herwig/Particles/eta_b(3S) newdef eta_b(3S)Width:Prefactor 1.0017 newdef eta_b(3S)Width:BRNormalize 1 newdef eta_b(3S)Width:BRMinimum 0.01 newdef eta_b(3S)Width:Points 50 newdef eta_b(3S)Width:InterpolationOrder 1 insert eta_b(3S)Width:MEtype 0 0 insert eta_b(3S)Width:MEtype 1 0 insert eta_b(3S)Width:MEtype 2 0 insert eta_b(3S)Width:MEcode 0 0 insert eta_b(3S)Width:MEcode 1 0 insert eta_b(3S)Width:MEcode 2 0 insert eta_b(3S)Width:MEcoupling 0 0.9983 insert eta_b(3S)Width:MEcoupling 1 0.0012 insert eta_b(3S)Width:MEcoupling 2 0.0005 insert eta_b(3S)Width:ModeOn 0 1 insert eta_b(3S)Width:ModeOn 1 0 insert eta_b(3S)Width:ModeOn 2 0 insert eta_b(3S)Width:MinimumMasses 0 0 insert eta_b(3S)Width:MinimumMasses 1 10.2572 insert eta_b(3S)Width:MinimumMasses 2 9.87211 insert eta_b(3S)Width:MEmass1 0 0 insert eta_b(3S)Width:MEmass1 1 0 insert eta_b(3S)Width:MEmass1 2 0 insert eta_b(3S)Width:MEmass2 0 0 insert eta_b(3S)Width:MEmass2 1 0 insert eta_b(3S)Width:MEmass2 2 0 insert eta_b(3S)Width:DecayModes 0 eta_b(3S)->g,g; insert eta_b(3S)Width:DecayModes 1 eta_b(3S)->h_b(2P),gamma; insert eta_b(3S)Width:DecayModes 2 eta_b(3S)->h_b,gamma; insert eta_b(3S)Width:NumberofEntries 0 0 insert eta_b(3S)Width:NumberofEntries 1 0 insert eta_b(3S)Width:NumberofEntries 2 0 newdef /Herwig/Particles/eta_b(3S):Width_generator eta_b(3S)Width # create Herwig::GenericWidthGenerator h_b(2P)Width newdef h_b(2P)Width:Particle /Herwig/Particles/h_b(2P) newdef h_b(2P)Width:Prefactor 1 newdef h_b(2P)Width:BRNormalize 1 newdef h_b(2P)Width:BRMinimum 0.01 newdef h_b(2P)Width:Points 50 newdef h_b(2P)Width:InterpolationOrder 1 insert h_b(2P)Width:MEtype 0 0 insert h_b(2P)Width:MEtype 1 0 insert h_b(2P)Width:MEtype 2 0 insert h_b(2P)Width:MEtype 3 0 insert h_b(2P)Width:MEtype 4 0 insert h_b(2P)Width:MEcode 0 0 insert h_b(2P)Width:MEcode 1 0 insert h_b(2P)Width:MEcode 2 0 insert h_b(2P)Width:MEcode 3 0 insert h_b(2P)Width:MEcode 4 0 insert h_b(2P)Width:MEcoupling 0 0.193 insert h_b(2P)Width:MEcoupling 1 0.125 insert h_b(2P)Width:MEcoupling 2 0.034 insert h_b(2P)Width:MEcoupling 3 0.628 insert h_b(2P)Width:MEcoupling 4 0.02 insert h_b(2P)Width:ModeOn 0 1 insert h_b(2P)Width:ModeOn 1 1 insert h_b(2P)Width:ModeOn 2 1 insert h_b(2P)Width:ModeOn 3 1 insert h_b(2P)Width:ModeOn 4 1 insert h_b(2P)Width:MinimumMasses 0 9.955 insert h_b(2P)Width:MinimumMasses 1 9.315 insert h_b(2P)Width:MinimumMasses 2 10.1577 insert h_b(2P)Width:MinimumMasses 3 0 insert h_b(2P)Width:MinimumMasses 4 0 insert h_b(2P)Width:MEmass1 0 0 insert h_b(2P)Width:MEmass1 1 0 insert h_b(2P)Width:MEmass1 2 0 insert h_b(2P)Width:MEmass1 3 0 insert h_b(2P)Width:MEmass1 4 0 insert h_b(2P)Width:MEmass2 0 0 insert h_b(2P)Width:MEmass2 1 0 insert h_b(2P)Width:MEmass2 2 0 insert h_b(2P)Width:MEmass2 3 0 insert h_b(2P)Width:MEmass2 4 0 insert h_b(2P)Width:DecayModes 0 h_b(2P)->eta_b(2S),gamma; insert h_b(2P)Width:DecayModes 1 h_b(2P)->eta_b,gamma; insert h_b(2P)Width:DecayModes 2 h_b(2P)->eta_b2,gamma; insert h_b(2P)Width:DecayModes 3 h_b(2P)->g,g,g; insert h_b(2P)Width:DecayModes 4 h_b(2P)->gamma,g,g; insert h_b(2P)Width:NumberofEntries 0 0 insert h_b(2P)Width:NumberofEntries 1 0 insert h_b(2P)Width:NumberofEntries 2 0 insert h_b(2P)Width:NumberofEntries 3 0 insert h_b(2P)Width:NumberofEntries 4 0 newdef /Herwig/Particles/h_b(2P):Width_generator h_b(2P)Width # create Herwig::GenericWidthGenerator eta_b2(1D)Width newdef eta_b2(1D)Width:Particle /Herwig/Particles/eta_b2 newdef eta_b2(1D)Width:Prefactor 1 newdef eta_b2(1D)Width:BRNormalize 1 newdef eta_b2(1D)Width:BRMinimum 0.01 newdef eta_b2(1D)Width:Points 50 newdef eta_b2(1D)Width:InterpolationOrder 1 insert eta_b2(1D)Width:MEtype 0 0 insert eta_b2(1D)Width:MEtype 1 0 insert eta_b2(1D)Width:MEcode 0 0 insert eta_b2(1D)Width:MEcode 1 0 insert eta_b2(1D)Width:MEcoupling 0 0.1 insert eta_b2(1D)Width:MEcoupling 1 0.9 insert eta_b2(1D)Width:ModeOn 0 1 insert eta_b2(1D)Width:ModeOn 1 1 insert eta_b2(1D)Width:MinimumMasses 0 0 insert eta_b2(1D)Width:MinimumMasses 1 9.87211 insert eta_b2(1D)Width:MEmass1 0 0 insert eta_b2(1D)Width:MEmass1 1 0 insert eta_b2(1D)Width:MEmass2 0 0 insert eta_b2(1D)Width:MEmass2 1 0 insert eta_b2(1D)Width:DecayModes 0 eta_b2->g,g; insert eta_b2(1D)Width:DecayModes 1 eta_b2->h_b,gamma; insert eta_b2(1D)Width:NumberofEntries 0 0 insert eta_b2(1D)Width:NumberofEntries 1 0 newdef /Herwig/Particles/eta_b2:Width_generator eta_b2(1D)Width # create Herwig::GenericWidthGenerator K_3+Width newdef K_3+Width:Particle /Herwig/Particles/K_3*+ newdef K_3+Width:Prefactor 1 newdef K_3+Width:BRNormalize 1 newdef K_3+Width:BRMinimum 0.01 newdef K_3+Width:Points 50 newdef K_3+Width:InterpolationOrder 1 insert K_3+Width:MEtype 0 0 insert K_3+Width:MEtype 1 0 insert K_3+Width:MEtype 2 0 insert K_3+Width:MEtype 3 0 insert K_3+Width:MEtype 4 0 insert K_3+Width:MEtype 5 0 insert K_3+Width:MEtype 6 0 insert K_3+Width:MEcode 0 0 insert K_3+Width:MEcode 1 0 insert K_3+Width:MEcode 2 0 insert K_3+Width:MEcode 3 0 insert K_3+Width:MEcode 4 0 insert K_3+Width:MEcode 5 0 insert K_3+Width:MEcode 6 0 insert K_3+Width:MEcoupling 0 0.0668 insert K_3+Width:MEcoupling 1 0.133601 insert K_3+Width:MEcoupling 2 0.300601 insert K_3+Width:MEcoupling 3 0.062792 insert K_3+Width:MEcoupling 4 0.10354 insert K_3+Width:MEcoupling 5 0.125585 insert K_3+Width:MEcoupling 6 0.207081 insert K_3+Width:ModeOn 0 1 insert K_3+Width:ModeOn 1 1 insert K_3+Width:ModeOn 2 1 insert K_3+Width:ModeOn 3 1 insert K_3+Width:ModeOn 4 1 insert K_3+Width:ModeOn 5 1 insert K_3+Width:ModeOn 6 1 insert K_3+Width:MinimumMasses 0 0.776638 insert K_3+Width:MinimumMasses 1 0.78557 insert K_3+Width:MinimumMasses 2 1.04117 insert K_3+Width:MinimumMasses 3 0.628655 insert K_3+Width:MinimumMasses 4 0.869177 insert K_3+Width:MinimumMasses 5 0.637218 insert K_3+Width:MinimumMasses 6 0.873148 insert K_3+Width:MEmass1 0 0 insert K_3+Width:MEmass1 1 0 insert K_3+Width:MEmass1 2 0 insert K_3+Width:MEmass1 3 0 insert K_3+Width:MEmass1 4 0 insert K_3+Width:MEmass1 5 0 insert K_3+Width:MEmass1 6 0 insert K_3+Width:MEmass2 0 0 insert K_3+Width:MEmass2 1 0 insert K_3+Width:MEmass2 2 0 insert K_3+Width:MEmass2 3 0 insert K_3+Width:MEmass2 4 0 insert K_3+Width:MEmass2 5 0 insert K_3+Width:MEmass2 6 0 insert K_3+Width:DecayModes 0 K_3*+->K*+,pi0; insert K_3+Width:DecayModes 1 K_3*+->K*0,pi+; insert K_3+Width:DecayModes 2 K_3*+->K+,eta; insert K_3+Width:DecayModes 3 K_3*+->K+,pi0; insert K_3+Width:DecayModes 4 K_3*+->K+,rho0; insert K_3+Width:DecayModes 5 K_3*+->K0,pi+; insert K_3+Width:DecayModes 6 K_3*+->K0,rho+; insert K_3+Width:NumberofEntries 0 0 insert K_3+Width:NumberofEntries 1 0 insert K_3+Width:NumberofEntries 2 0 insert K_3+Width:NumberofEntries 3 0 insert K_3+Width:NumberofEntries 4 0 insert K_3+Width:NumberofEntries 5 0 insert K_3+Width:NumberofEntries 6 0 newdef /Herwig/Particles/K_3*+:Width_generator K_3+Width newdef /Herwig/Particles/K_3*-:Width_generator K_3+Width # create Herwig::GenericWidthGenerator K_30Width newdef K_30Width:Particle /Herwig/Particles/K_3*0 newdef K_30Width:Prefactor 1 newdef K_30Width:BRNormalize 1 newdef K_30Width:BRMinimum 0.01 newdef K_30Width:Points 50 newdef K_30Width:InterpolationOrder 1 insert K_30Width:MEtype 0 0 insert K_30Width:MEtype 1 0 insert K_30Width:MEtype 2 0 insert K_30Width:MEtype 3 0 insert K_30Width:MEtype 4 0 insert K_30Width:MEtype 5 0 insert K_30Width:MEtype 6 0 insert K_30Width:MEcode 0 0 insert K_30Width:MEcode 1 0 insert K_30Width:MEcode 2 0 insert K_30Width:MEcode 3 0 insert K_30Width:MEcode 4 0 insert K_30Width:MEcode 5 0 insert K_30Width:MEcode 6 0 insert K_30Width:MEcoupling 0 0.133601 insert K_30Width:MEcoupling 1 0.0668 insert K_30Width:MEcoupling 2 0.125585 insert K_30Width:MEcoupling 3 0.207081 insert K_30Width:MEcoupling 4 0.300601 insert K_30Width:MEcoupling 5 0.062792 insert K_30Width:MEcoupling 6 0.10354 insert K_30Width:ModeOn 0 1 insert K_30Width:ModeOn 1 1 insert K_30Width:ModeOn 2 1 insert K_30Width:ModeOn 3 1 insert K_30Width:ModeOn 4 1 insert K_30Width:ModeOn 5 1 insert K_30Width:ModeOn 6 1 insert K_30Width:MinimumMasses 0 0.78123 insert K_30Width:MinimumMasses 1 0.780978 insert K_30Width:MinimumMasses 2 0.633247 insert K_30Width:MinimumMasses 3 0.869177 insert K_30Width:MinimumMasses 4 1.04514 insert K_30Width:MinimumMasses 5 0.632626 insert K_30Width:MinimumMasses 6 0.873148 insert K_30Width:MEmass1 0 0 insert K_30Width:MEmass1 1 0 insert K_30Width:MEmass1 2 0 insert K_30Width:MEmass1 3 0 insert K_30Width:MEmass1 4 0 insert K_30Width:MEmass1 5 0 insert K_30Width:MEmass1 6 0 insert K_30Width:MEmass2 0 0 insert K_30Width:MEmass2 1 0 insert K_30Width:MEmass2 2 0 insert K_30Width:MEmass2 3 0 insert K_30Width:MEmass2 4 0 insert K_30Width:MEmass2 5 0 insert K_30Width:MEmass2 6 0 insert K_30Width:DecayModes 0 K_3*0->K*+,pi-; insert K_30Width:DecayModes 1 K_3*0->K*0,pi0; insert K_30Width:DecayModes 2 K_3*0->K+,pi-; insert K_30Width:DecayModes 3 K_3*0->K+,rho-; insert K_30Width:DecayModes 4 K_3*0->K0,eta; insert K_30Width:DecayModes 5 K_3*0->K0,pi0; insert K_30Width:DecayModes 6 K_3*0->K0,rho0; insert K_30Width:NumberofEntries 0 0 insert K_30Width:NumberofEntries 1 0 insert K_30Width:NumberofEntries 2 0 insert K_30Width:NumberofEntries 3 0 insert K_30Width:NumberofEntries 4 0 insert K_30Width:NumberofEntries 5 0 insert K_30Width:NumberofEntries 6 0 newdef /Herwig/Particles/K_3*bar0:Width_generator K_30Width newdef /Herwig/Particles/K_3*0:Width_generator K_30Width # create Herwig::GenericWidthGenerator TopWidth newdef TopWidth:Particle /Herwig/Particles/t newdef TopWidth:Prefactor 1.0005 newdef TopWidth:BRNormalize 1 newdef TopWidth:BRMinimum 0.01 newdef TopWidth:Points 50 newdef TopWidth:InterpolationOrder 1 insert TopWidth:MEtype 0 2 insert TopWidth:MEtype 1 2 insert TopWidth:MEtype 2 2 insert TopWidth:MEtype 3 2 insert TopWidth:MEtype 4 2 insert TopWidth:MEtype 5 2 insert TopWidth:MEtype 6 2 insert TopWidth:MEtype 7 2 insert TopWidth:MEcode 0 0 insert TopWidth:MEcode 1 0 insert TopWidth:MEcode 2 0 insert TopWidth:MEcode 3 0 insert TopWidth:MEcode 4 0 insert TopWidth:MEcode 5 0 insert TopWidth:MEcode 6 0 insert TopWidth:MEcode 7 0 insert TopWidth:MEcoupling 0 0.894738 insert TopWidth:MEcoupling 1 0.96867 insert TopWidth:MEcoupling 2 1.00433 insert TopWidth:MEcoupling 3 0.969264 insert TopWidth:MEcoupling 4 1.00419 insert TopWidth:MEcoupling 5 0.961349 insert TopWidth:MEcoupling 6 0.961352 insert TopWidth:MEcoupling 7 0.96136 insert TopWidth:ModeOn 0 0 insert TopWidth:ModeOn 1 1 insert TopWidth:ModeOn 2 1 insert TopWidth:ModeOn 3 1 insert TopWidth:ModeOn 4 1 insert TopWidth:ModeOn 5 1 insert TopWidth:ModeOn 6 1 insert TopWidth:ModeOn 7 1 insert TopWidth:MinimumMasses 0 9.65 insert TopWidth:MinimumMasses 1 5.455 insert TopWidth:MinimumMasses 2 5.545 insert TopWidth:MinimumMasses 3 4.2973 insert TopWidth:MinimumMasses 4 4.2073 insert TopWidth:MinimumMasses 5 4.20051 insert TopWidth:MinimumMasses 6 4.30566 insert TopWidth:MinimumMasses 7 5.97699 insert TopWidth:MEmass1 0 0 insert TopWidth:MEmass1 1 0 insert TopWidth:MEmass1 2 0 insert TopWidth:MEmass1 3 0 insert TopWidth:MEmass1 4 0 insert TopWidth:MEmass1 5 0 insert TopWidth:MEmass1 6 0 insert TopWidth:MEmass1 7 0 insert TopWidth:MEmass2 0 0 insert TopWidth:MEmass2 1 0 insert TopWidth:MEmass2 2 0 insert TopWidth:MEmass2 3 0 insert TopWidth:MEmass2 4 0 insert TopWidth:MEmass2 5 0 insert TopWidth:MEmass2 6 0 insert TopWidth:MEmass2 7 0 insert TopWidth:DecayModes 0 t->b,bbar,c; insert TopWidth:DecayModes 1 t->b,c,dbar; insert TopWidth:DecayModes 2 t->b,c,sbar; insert TopWidth:DecayModes 3 t->b,sbar,u; insert TopWidth:DecayModes 4 t->b,u,dbar; insert TopWidth:DecayModes 5 t->nu_e,e+,b; insert TopWidth:DecayModes 6 t->nu_mu,mu+,b; insert TopWidth:DecayModes 7 t->nu_tau,tau+,b; insert TopWidth:InterpolationMasses 0 160.2 insert TopWidth:InterpolationMasses 1 160.77143 insert TopWidth:InterpolationMasses 2 161.34286 insert TopWidth:InterpolationMasses 3 161.91429 insert TopWidth:InterpolationMasses 4 162.48571 insert TopWidth:InterpolationMasses 5 163.05714 insert TopWidth:InterpolationMasses 6 163.62857 insert TopWidth:InterpolationMasses 7 164.2 insert TopWidth:InterpolationMasses 8 164.77143 insert TopWidth:InterpolationMasses 9 165.34286 insert TopWidth:InterpolationMasses 10 165.91429 insert TopWidth:InterpolationMasses 11 166.48571 insert TopWidth:InterpolationMasses 12 167.05714 insert TopWidth:InterpolationMasses 13 167.62857 insert TopWidth:InterpolationMasses 14 168.2 insert TopWidth:InterpolationMasses 15 168.77143 insert TopWidth:InterpolationMasses 16 169.34286 insert TopWidth:InterpolationMasses 17 169.91429 insert TopWidth:InterpolationMasses 18 170.48571 insert TopWidth:InterpolationMasses 19 171.05714 insert TopWidth:InterpolationMasses 20 171.62857 insert TopWidth:InterpolationMasses 21 172.2 insert TopWidth:InterpolationMasses 22 172.77143 insert TopWidth:InterpolationMasses 23 173.34286 insert TopWidth:InterpolationMasses 24 173.91429 insert TopWidth:InterpolationMasses 25 174.48571 insert TopWidth:InterpolationMasses 26 175.05714 insert TopWidth:InterpolationMasses 27 175.62857 insert TopWidth:InterpolationMasses 28 176.2 insert TopWidth:InterpolationMasses 29 176.77143 insert TopWidth:InterpolationMasses 30 177.34286 insert TopWidth:InterpolationMasses 31 177.91429 insert TopWidth:InterpolationMasses 32 178.48571 insert TopWidth:InterpolationMasses 33 179.05714 insert TopWidth:InterpolationMasses 34 179.62857 insert TopWidth:InterpolationMasses 35 180.2 insert TopWidth:InterpolationMasses 36 180.77143 insert TopWidth:InterpolationMasses 37 181.34286 insert TopWidth:InterpolationMasses 38 181.91429 insert TopWidth:InterpolationMasses 39 182.48571 insert TopWidth:InterpolationMasses 40 183.05714 insert TopWidth:InterpolationMasses 41 183.62857 insert TopWidth:InterpolationMasses 42 184.2 insert TopWidth:InterpolationMasses 43 184.77143 insert TopWidth:InterpolationMasses 44 185.34286 insert TopWidth:InterpolationMasses 45 185.91429 insert TopWidth:InterpolationMasses 46 186.48571 insert TopWidth:InterpolationMasses 47 187.05714 insert TopWidth:InterpolationMasses 48 187.62857 insert TopWidth:InterpolationMasses 49 188.2 insert TopWidth:InterpolationMasses 50 160.2 insert TopWidth:InterpolationMasses 51 160.77143 insert TopWidth:InterpolationMasses 52 161.34286 insert TopWidth:InterpolationMasses 53 161.91429 insert TopWidth:InterpolationMasses 54 162.48571 insert TopWidth:InterpolationMasses 55 163.05714 insert TopWidth:InterpolationMasses 56 163.62857 insert TopWidth:InterpolationMasses 57 164.2 insert TopWidth:InterpolationMasses 58 164.77143 insert TopWidth:InterpolationMasses 59 165.34286 insert TopWidth:InterpolationMasses 60 165.91429 insert TopWidth:InterpolationMasses 61 166.48571 insert TopWidth:InterpolationMasses 62 167.05714 insert TopWidth:InterpolationMasses 63 167.62857 insert TopWidth:InterpolationMasses 64 168.2 insert TopWidth:InterpolationMasses 65 168.77143 insert TopWidth:InterpolationMasses 66 169.34286 insert TopWidth:InterpolationMasses 67 169.91429 insert TopWidth:InterpolationMasses 68 170.48571 insert TopWidth:InterpolationMasses 69 171.05714 insert TopWidth:InterpolationMasses 70 171.62857 insert TopWidth:InterpolationMasses 71 172.2 insert TopWidth:InterpolationMasses 72 172.77143 insert TopWidth:InterpolationMasses 73 173.34286 insert TopWidth:InterpolationMasses 74 173.91429 insert TopWidth:InterpolationMasses 75 174.48571 insert TopWidth:InterpolationMasses 76 175.05714 insert TopWidth:InterpolationMasses 77 175.62857 insert TopWidth:InterpolationMasses 78 176.2 insert TopWidth:InterpolationMasses 79 176.77143 insert TopWidth:InterpolationMasses 80 177.34286 insert TopWidth:InterpolationMasses 81 177.91429 insert TopWidth:InterpolationMasses 82 178.48571 insert TopWidth:InterpolationMasses 83 179.05714 insert TopWidth:InterpolationMasses 84 179.62857 insert TopWidth:InterpolationMasses 85 180.2 insert TopWidth:InterpolationMasses 86 180.77143 insert TopWidth:InterpolationMasses 87 181.34286 insert TopWidth:InterpolationMasses 88 181.91429 insert TopWidth:InterpolationMasses 89 182.48571 insert TopWidth:InterpolationMasses 90 183.05714 insert TopWidth:InterpolationMasses 91 183.62857 insert TopWidth:InterpolationMasses 92 184.2 insert TopWidth:InterpolationMasses 93 184.77143 insert TopWidth:InterpolationMasses 94 185.34286 insert TopWidth:InterpolationMasses 95 185.91429 insert TopWidth:InterpolationMasses 96 186.48571 insert TopWidth:InterpolationMasses 97 187.05714 insert TopWidth:InterpolationMasses 98 187.62857 insert TopWidth:InterpolationMasses 99 188.2 insert TopWidth:InterpolationMasses 100 160.2 insert TopWidth:InterpolationMasses 101 160.77143 insert TopWidth:InterpolationMasses 102 161.34286 insert TopWidth:InterpolationMasses 103 161.91429 insert TopWidth:InterpolationMasses 104 162.48571 insert TopWidth:InterpolationMasses 105 163.05714 insert TopWidth:InterpolationMasses 106 163.62857 insert TopWidth:InterpolationMasses 107 164.2 insert TopWidth:InterpolationMasses 108 164.77143 insert TopWidth:InterpolationMasses 109 165.34286 insert TopWidth:InterpolationMasses 110 165.91429 insert TopWidth:InterpolationMasses 111 166.48571 insert TopWidth:InterpolationMasses 112 167.05714 insert TopWidth:InterpolationMasses 113 167.62857 insert TopWidth:InterpolationMasses 114 168.2 insert TopWidth:InterpolationMasses 115 168.77143 insert TopWidth:InterpolationMasses 116 169.34286 insert TopWidth:InterpolationMasses 117 169.91429 insert TopWidth:InterpolationMasses 118 170.48571 insert TopWidth:InterpolationMasses 119 171.05714 insert TopWidth:InterpolationMasses 120 171.62857 insert TopWidth:InterpolationMasses 121 172.2 insert TopWidth:InterpolationMasses 122 172.77143 insert TopWidth:InterpolationMasses 123 173.34286 insert TopWidth:InterpolationMasses 124 173.91429 insert TopWidth:InterpolationMasses 125 174.48571 insert TopWidth:InterpolationMasses 126 175.05714 insert TopWidth:InterpolationMasses 127 175.62857 insert TopWidth:InterpolationMasses 128 176.2 insert TopWidth:InterpolationMasses 129 176.77143 insert TopWidth:InterpolationMasses 130 177.34286 insert TopWidth:InterpolationMasses 131 177.91429 insert TopWidth:InterpolationMasses 132 178.48571 insert TopWidth:InterpolationMasses 133 179.05714 insert TopWidth:InterpolationMasses 134 179.62857 insert TopWidth:InterpolationMasses 135 180.2 insert TopWidth:InterpolationMasses 136 180.77143 insert TopWidth:InterpolationMasses 137 181.34286 insert TopWidth:InterpolationMasses 138 181.91429 insert TopWidth:InterpolationMasses 139 182.48571 insert TopWidth:InterpolationMasses 140 183.05714 insert TopWidth:InterpolationMasses 141 183.62857 insert TopWidth:InterpolationMasses 142 184.2 insert TopWidth:InterpolationMasses 143 184.77143 insert TopWidth:InterpolationMasses 144 185.34286 insert TopWidth:InterpolationMasses 145 185.91429 insert TopWidth:InterpolationMasses 146 186.48571 insert TopWidth:InterpolationMasses 147 187.05714 insert TopWidth:InterpolationMasses 148 187.62857 insert TopWidth:InterpolationMasses 149 188.2 insert TopWidth:InterpolationMasses 150 160.2 insert TopWidth:InterpolationMasses 151 160.77143 insert TopWidth:InterpolationMasses 152 161.34286 insert TopWidth:InterpolationMasses 153 161.91429 insert TopWidth:InterpolationMasses 154 162.48571 insert TopWidth:InterpolationMasses 155 163.05714 insert TopWidth:InterpolationMasses 156 163.62857 insert TopWidth:InterpolationMasses 157 164.2 insert TopWidth:InterpolationMasses 158 164.77143 insert TopWidth:InterpolationMasses 159 165.34286 insert TopWidth:InterpolationMasses 160 165.91429 insert TopWidth:InterpolationMasses 161 166.48571 insert TopWidth:InterpolationMasses 162 167.05714 insert TopWidth:InterpolationMasses 163 167.62857 insert TopWidth:InterpolationMasses 164 168.2 insert TopWidth:InterpolationMasses 165 168.77143 insert TopWidth:InterpolationMasses 166 169.34286 insert TopWidth:InterpolationMasses 167 169.91429 insert TopWidth:InterpolationMasses 168 170.48571 insert TopWidth:InterpolationMasses 169 171.05714 insert TopWidth:InterpolationMasses 170 171.62857 insert TopWidth:InterpolationMasses 171 172.2 insert TopWidth:InterpolationMasses 172 172.77143 insert TopWidth:InterpolationMasses 173 173.34286 insert TopWidth:InterpolationMasses 174 173.91429 insert TopWidth:InterpolationMasses 175 174.48571 insert TopWidth:InterpolationMasses 176 175.05714 insert TopWidth:InterpolationMasses 177 175.62857 insert TopWidth:InterpolationMasses 178 176.2 insert TopWidth:InterpolationMasses 179 176.77143 insert TopWidth:InterpolationMasses 180 177.34286 insert TopWidth:InterpolationMasses 181 177.91429 insert TopWidth:InterpolationMasses 182 178.48571 insert TopWidth:InterpolationMasses 183 179.05714 insert TopWidth:InterpolationMasses 184 179.62857 insert TopWidth:InterpolationMasses 185 180.2 insert TopWidth:InterpolationMasses 186 180.77143 insert TopWidth:InterpolationMasses 187 181.34286 insert TopWidth:InterpolationMasses 188 181.91429 insert TopWidth:InterpolationMasses 189 182.48571 insert TopWidth:InterpolationMasses 190 183.05714 insert TopWidth:InterpolationMasses 191 183.62857 insert TopWidth:InterpolationMasses 192 184.2 insert TopWidth:InterpolationMasses 193 184.77143 insert TopWidth:InterpolationMasses 194 185.34286 insert TopWidth:InterpolationMasses 195 185.91429 insert TopWidth:InterpolationMasses 196 186.48571 insert TopWidth:InterpolationMasses 197 187.05714 insert TopWidth:InterpolationMasses 198 187.62857 insert TopWidth:InterpolationMasses 199 188.2 insert TopWidth:InterpolationMasses 200 160.2 insert TopWidth:InterpolationMasses 201 160.77143 insert TopWidth:InterpolationMasses 202 161.34286 insert TopWidth:InterpolationMasses 203 161.91429 insert TopWidth:InterpolationMasses 204 162.48571 insert TopWidth:InterpolationMasses 205 163.05714 insert TopWidth:InterpolationMasses 206 163.62857 insert TopWidth:InterpolationMasses 207 164.2 insert TopWidth:InterpolationMasses 208 164.77143 insert TopWidth:InterpolationMasses 209 165.34286 insert TopWidth:InterpolationMasses 210 165.91429 insert TopWidth:InterpolationMasses 211 166.48571 insert TopWidth:InterpolationMasses 212 167.05714 insert TopWidth:InterpolationMasses 213 167.62857 insert TopWidth:InterpolationMasses 214 168.2 insert TopWidth:InterpolationMasses 215 168.77143 insert TopWidth:InterpolationMasses 216 169.34286 insert TopWidth:InterpolationMasses 217 169.91429 insert TopWidth:InterpolationMasses 218 170.48571 insert TopWidth:InterpolationMasses 219 171.05714 insert TopWidth:InterpolationMasses 220 171.62857 insert TopWidth:InterpolationMasses 221 172.2 insert TopWidth:InterpolationMasses 222 172.77143 insert TopWidth:InterpolationMasses 223 173.34286 insert TopWidth:InterpolationMasses 224 173.91429 insert TopWidth:InterpolationMasses 225 174.48571 insert TopWidth:InterpolationMasses 226 175.05714 insert TopWidth:InterpolationMasses 227 175.62857 insert TopWidth:InterpolationMasses 228 176.2 insert TopWidth:InterpolationMasses 229 176.77143 insert TopWidth:InterpolationMasses 230 177.34286 insert TopWidth:InterpolationMasses 231 177.91429 insert TopWidth:InterpolationMasses 232 178.48571 insert TopWidth:InterpolationMasses 233 179.05714 insert TopWidth:InterpolationMasses 234 179.62857 insert TopWidth:InterpolationMasses 235 180.2 insert TopWidth:InterpolationMasses 236 180.77143 insert TopWidth:InterpolationMasses 237 181.34286 insert TopWidth:InterpolationMasses 238 181.91429 insert TopWidth:InterpolationMasses 239 182.48571 insert TopWidth:InterpolationMasses 240 183.05714 insert TopWidth:InterpolationMasses 241 183.62857 insert TopWidth:InterpolationMasses 242 184.2 insert TopWidth:InterpolationMasses 243 184.77143 insert TopWidth:InterpolationMasses 244 185.34286 insert TopWidth:InterpolationMasses 245 185.91429 insert TopWidth:InterpolationMasses 246 186.48571 insert TopWidth:InterpolationMasses 247 187.05714 insert TopWidth:InterpolationMasses 248 187.62857 insert TopWidth:InterpolationMasses 249 188.2 insert TopWidth:InterpolationMasses 250 160.2 insert TopWidth:InterpolationMasses 251 160.77143 insert TopWidth:InterpolationMasses 252 161.34286 insert TopWidth:InterpolationMasses 253 161.91429 insert TopWidth:InterpolationMasses 254 162.48571 insert TopWidth:InterpolationMasses 255 163.05714 insert TopWidth:InterpolationMasses 256 163.62857 insert TopWidth:InterpolationMasses 257 164.2 insert TopWidth:InterpolationMasses 258 164.77143 insert TopWidth:InterpolationMasses 259 165.34286 insert TopWidth:InterpolationMasses 260 165.91429 insert TopWidth:InterpolationMasses 261 166.48571 insert TopWidth:InterpolationMasses 262 167.05714 insert TopWidth:InterpolationMasses 263 167.62857 insert TopWidth:InterpolationMasses 264 168.2 insert TopWidth:InterpolationMasses 265 168.77143 insert TopWidth:InterpolationMasses 266 169.34286 insert TopWidth:InterpolationMasses 267 169.91429 insert TopWidth:InterpolationMasses 268 170.48571 insert TopWidth:InterpolationMasses 269 171.05714 insert TopWidth:InterpolationMasses 270 171.62857 insert TopWidth:InterpolationMasses 271 172.2 insert TopWidth:InterpolationMasses 272 172.77143 insert TopWidth:InterpolationMasses 273 173.34286 insert TopWidth:InterpolationMasses 274 173.91429 insert TopWidth:InterpolationMasses 275 174.48571 insert TopWidth:InterpolationMasses 276 175.05714 insert TopWidth:InterpolationMasses 277 175.62857 insert TopWidth:InterpolationMasses 278 176.2 insert TopWidth:InterpolationMasses 279 176.77143 insert TopWidth:InterpolationMasses 280 177.34286 insert TopWidth:InterpolationMasses 281 177.91429 insert TopWidth:InterpolationMasses 282 178.48571 insert TopWidth:InterpolationMasses 283 179.05714 insert TopWidth:InterpolationMasses 284 179.62857 insert TopWidth:InterpolationMasses 285 180.2 insert TopWidth:InterpolationMasses 286 180.77143 insert TopWidth:InterpolationMasses 287 181.34286 insert TopWidth:InterpolationMasses 288 181.91429 insert TopWidth:InterpolationMasses 289 182.48571 insert TopWidth:InterpolationMasses 290 183.05714 insert TopWidth:InterpolationMasses 291 183.62857 insert TopWidth:InterpolationMasses 292 184.2 insert TopWidth:InterpolationMasses 293 184.77143 insert TopWidth:InterpolationMasses 294 185.34286 insert TopWidth:InterpolationMasses 295 185.91429 insert TopWidth:InterpolationMasses 296 186.48571 insert TopWidth:InterpolationMasses 297 187.05714 insert TopWidth:InterpolationMasses 298 187.62857 insert TopWidth:InterpolationMasses 299 188.2 insert TopWidth:InterpolationMasses 300 160.2 insert TopWidth:InterpolationMasses 301 160.77143 insert TopWidth:InterpolationMasses 302 161.34286 insert TopWidth:InterpolationMasses 303 161.91429 insert TopWidth:InterpolationMasses 304 162.48571 insert TopWidth:InterpolationMasses 305 163.05714 insert TopWidth:InterpolationMasses 306 163.62857 insert TopWidth:InterpolationMasses 307 164.2 insert TopWidth:InterpolationMasses 308 164.77143 insert TopWidth:InterpolationMasses 309 165.34286 insert TopWidth:InterpolationMasses 310 165.91429 insert TopWidth:InterpolationMasses 311 166.48571 insert TopWidth:InterpolationMasses 312 167.05714 insert TopWidth:InterpolationMasses 313 167.62857 insert TopWidth:InterpolationMasses 314 168.2 insert TopWidth:InterpolationMasses 315 168.77143 insert TopWidth:InterpolationMasses 316 169.34286 insert TopWidth:InterpolationMasses 317 169.91429 insert TopWidth:InterpolationMasses 318 170.48571 insert TopWidth:InterpolationMasses 319 171.05714 insert TopWidth:InterpolationMasses 320 171.62857 insert TopWidth:InterpolationMasses 321 172.2 insert TopWidth:InterpolationMasses 322 172.77143 insert TopWidth:InterpolationMasses 323 173.34286 insert TopWidth:InterpolationMasses 324 173.91429 insert TopWidth:InterpolationMasses 325 174.48571 insert TopWidth:InterpolationMasses 326 175.05714 insert TopWidth:InterpolationMasses 327 175.62857 insert TopWidth:InterpolationMasses 328 176.2 insert TopWidth:InterpolationMasses 329 176.77143 insert TopWidth:InterpolationMasses 330 177.34286 insert TopWidth:InterpolationMasses 331 177.91429 insert TopWidth:InterpolationMasses 332 178.48571 insert TopWidth:InterpolationMasses 333 179.05714 insert TopWidth:InterpolationMasses 334 179.62857 insert TopWidth:InterpolationMasses 335 180.2 insert TopWidth:InterpolationMasses 336 180.77143 insert TopWidth:InterpolationMasses 337 181.34286 insert TopWidth:InterpolationMasses 338 181.91429 insert TopWidth:InterpolationMasses 339 182.48571 insert TopWidth:InterpolationMasses 340 183.05714 insert TopWidth:InterpolationMasses 341 183.62857 insert TopWidth:InterpolationMasses 342 184.2 insert TopWidth:InterpolationMasses 343 184.77143 insert TopWidth:InterpolationMasses 344 185.34286 insert TopWidth:InterpolationMasses 345 185.91429 insert TopWidth:InterpolationMasses 346 186.48571 insert TopWidth:InterpolationMasses 347 187.05714 insert TopWidth:InterpolationMasses 348 187.62857 insert TopWidth:InterpolationMasses 349 188.2 insert TopWidth:InterpolationMasses 350 160.2 insert TopWidth:InterpolationMasses 351 160.77143 insert TopWidth:InterpolationMasses 352 161.34286 insert TopWidth:InterpolationMasses 353 161.91429 insert TopWidth:InterpolationMasses 354 162.48571 insert TopWidth:InterpolationMasses 355 163.05714 insert TopWidth:InterpolationMasses 356 163.62857 insert TopWidth:InterpolationMasses 357 164.2 insert TopWidth:InterpolationMasses 358 164.77143 insert TopWidth:InterpolationMasses 359 165.34286 insert TopWidth:InterpolationMasses 360 165.91429 insert TopWidth:InterpolationMasses 361 166.48571 insert TopWidth:InterpolationMasses 362 167.05714 insert TopWidth:InterpolationMasses 363 167.62857 insert TopWidth:InterpolationMasses 364 168.2 insert TopWidth:InterpolationMasses 365 168.77143 insert TopWidth:InterpolationMasses 366 169.34286 insert TopWidth:InterpolationMasses 367 169.91429 insert TopWidth:InterpolationMasses 368 170.48571 insert TopWidth:InterpolationMasses 369 171.05714 insert TopWidth:InterpolationMasses 370 171.62857 insert TopWidth:InterpolationMasses 371 172.2 insert TopWidth:InterpolationMasses 372 172.77143 insert TopWidth:InterpolationMasses 373 173.34286 insert TopWidth:InterpolationMasses 374 173.91429 insert TopWidth:InterpolationMasses 375 174.48571 insert TopWidth:InterpolationMasses 376 175.05714 insert TopWidth:InterpolationMasses 377 175.62857 insert TopWidth:InterpolationMasses 378 176.2 insert TopWidth:InterpolationMasses 379 176.77143 insert TopWidth:InterpolationMasses 380 177.34286 insert TopWidth:InterpolationMasses 381 177.91429 insert TopWidth:InterpolationMasses 382 178.48571 insert TopWidth:InterpolationMasses 383 179.05714 insert TopWidth:InterpolationMasses 384 179.62857 insert TopWidth:InterpolationMasses 385 180.2 insert TopWidth:InterpolationMasses 386 180.77143 insert TopWidth:InterpolationMasses 387 181.34286 insert TopWidth:InterpolationMasses 388 181.91429 insert TopWidth:InterpolationMasses 389 182.48571 insert TopWidth:InterpolationMasses 390 183.05714 insert TopWidth:InterpolationMasses 391 183.62857 insert TopWidth:InterpolationMasses 392 184.2 insert TopWidth:InterpolationMasses 393 184.77143 insert TopWidth:InterpolationMasses 394 185.34286 insert TopWidth:InterpolationMasses 395 185.91429 insert TopWidth:InterpolationMasses 396 186.48571 insert TopWidth:InterpolationMasses 397 187.05714 insert TopWidth:InterpolationMasses 398 187.62857 insert TopWidth:InterpolationMasses 399 188.2 insert TopWidth:InterpolationWidths 0 0.0005916089 insert TopWidth:InterpolationWidths 1 0.00059948966 insert TopWidth:InterpolationWidths 2 0.00060742618 insert TopWidth:InterpolationWidths 3 0.00061541865 insert TopWidth:InterpolationWidths 4 0.00062346724 insert TopWidth:InterpolationWidths 5 0.00063157213 insert TopWidth:InterpolationWidths 6 0.00063973349 insert TopWidth:InterpolationWidths 7 0.0006479515 insert TopWidth:InterpolationWidths 8 0.00065622634 insert TopWidth:InterpolationWidths 9 0.00066455819 insert TopWidth:InterpolationWidths 10 0.00067294724 insert TopWidth:InterpolationWidths 11 0.00068139365 insert TopWidth:InterpolationWidths 12 0.00068989762 insert TopWidth:InterpolationWidths 13 0.00069845932 insert TopWidth:InterpolationWidths 14 0.00070707894 insert TopWidth:InterpolationWidths 15 0.00071575666 insert TopWidth:InterpolationWidths 16 0.00072449267 insert TopWidth:InterpolationWidths 17 0.00073328715 insert TopWidth:InterpolationWidths 18 0.00074214028 insert TopWidth:InterpolationWidths 19 0.00075105225 insert TopWidth:InterpolationWidths 20 0.00076002325 insert TopWidth:InterpolationWidths 21 0.00076905346 insert TopWidth:InterpolationWidths 22 0.00077814307 insert TopWidth:InterpolationWidths 23 0.00078729227 insert TopWidth:InterpolationWidths 24 0.00079650124 insert TopWidth:InterpolationWidths 25 0.00080577018 insert TopWidth:InterpolationWidths 26 0.00081509927 insert TopWidth:InterpolationWidths 27 0.00082448157 insert TopWidth:InterpolationWidths 28 0.00083393158 insert TopWidth:InterpolationWidths 29 0.00084344231 insert TopWidth:InterpolationWidths 30 0.00085301396 insert TopWidth:InterpolationWidths 31 0.00086264672 insert TopWidth:InterpolationWidths 32 0.00087234077 insert TopWidth:InterpolationWidths 33 0.00088209631 insert TopWidth:InterpolationWidths 34 0.00089191353 insert TopWidth:InterpolationWidths 35 0.00090179262 insert TopWidth:InterpolationWidths 36 0.00091173378 insert TopWidth:InterpolationWidths 37 0.00092173719 insert TopWidth:InterpolationWidths 38 0.00093180306 insert TopWidth:InterpolationWidths 39 0.00094193157 insert TopWidth:InterpolationWidths 40 0.00095212292 insert TopWidth:InterpolationWidths 41 0.0009623773 insert TopWidth:InterpolationWidths 42 0.00097269491 insert TopWidth:InterpolationWidths 43 0.00098307595 insert TopWidth:InterpolationWidths 44 0.0009935206 insert TopWidth:InterpolationWidths 45 0.0010040291 insert TopWidth:InterpolationWidths 46 0.0010146015 insert TopWidth:InterpolationWidths 47 0.0010252382 insert TopWidth:InterpolationWidths 48 0.0010359393 insert TopWidth:InterpolationWidths 49 0.0010467049 insert TopWidth:InterpolationWidths 50 0.017511386 insert TopWidth:InterpolationWidths 51 0.017744641 insert TopWidth:InterpolationWidths 52 0.017979546 insert TopWidth:InterpolationWidths 53 0.018216107 insert TopWidth:InterpolationWidths 54 0.018454329 insert TopWidth:InterpolationWidths 55 0.018694217 insert TopWidth:InterpolationWidths 56 0.018935776 insert TopWidth:InterpolationWidths 57 0.019179012 insert TopWidth:InterpolationWidths 58 0.01942393 insert TopWidth:InterpolationWidths 59 0.019670536 insert TopWidth:InterpolationWidths 60 0.019918834 insert TopWidth:InterpolationWidths 61 0.02016883 insert TopWidth:InterpolationWidths 62 0.020420529 insert TopWidth:InterpolationWidths 63 0.020673938 insert TopWidth:InterpolationWidths 64 0.02092906 insert TopWidth:InterpolationWidths 65 0.021185902 insert TopWidth:InterpolationWidths 66 0.021444469 insert TopWidth:InterpolationWidths 67 0.021704766 insert TopWidth:InterpolationWidths 68 0.0219668 insert TopWidth:InterpolationWidths 69 0.022230574 insert TopWidth:InterpolationWidths 70 0.022496096 insert TopWidth:InterpolationWidths 71 0.022763371 insert TopWidth:InterpolationWidths 72 0.023032403 insert TopWidth:InterpolationWidths 73 0.023303199 insert TopWidth:InterpolationWidths 74 0.023575764 insert TopWidth:InterpolationWidths 75 0.023850104 insert TopWidth:InterpolationWidths 76 0.024126224 insert TopWidth:InterpolationWidths 77 0.02440413 insert TopWidth:InterpolationWidths 78 0.024683827 insert TopWidth:InterpolationWidths 79 0.024965322 insert TopWidth:InterpolationWidths 80 0.025248768 insert TopWidth:InterpolationWidths 81 0.025533878 insert TopWidth:InterpolationWidths 82 0.025820803 insert TopWidth:InterpolationWidths 83 0.026109548 insert TopWidth:InterpolationWidths 84 0.026400119 insert TopWidth:InterpolationWidths 85 0.02669252 insert TopWidth:InterpolationWidths 86 0.026986759 insert TopWidth:InterpolationWidths 87 0.02728284 insert TopWidth:InterpolationWidths 88 0.027580769 insert TopWidth:InterpolationWidths 89 0.027880553 insert TopWidth:InterpolationWidths 90 0.028182196 insert TopWidth:InterpolationWidths 91 0.028485705 insert TopWidth:InterpolationWidths 92 0.028791086 insert TopWidth:InterpolationWidths 93 0.029098343 insert TopWidth:InterpolationWidths 94 0.029407483 insert TopWidth:InterpolationWidths 95 0.029718512 insert TopWidth:InterpolationWidths 96 0.030031435 insert TopWidth:InterpolationWidths 97 0.030346259 insert TopWidth:InterpolationWidths 98 0.030662988 insert TopWidth:InterpolationWidths 99 0.030981629 insert TopWidth:InterpolationWidths 100 0.33039857 insert TopWidth:InterpolationWidths 101 0.33479953 insert TopWidth:InterpolationWidths 102 0.33923164 insert TopWidth:InterpolationWidths 103 0.34369499 insert TopWidth:InterpolationWidths 104 0.34818968 insert TopWidth:InterpolationWidths 105 0.3527158 insert TopWidth:InterpolationWidths 106 0.35727346 insert TopWidth:InterpolationWidths 107 0.36186275 insert TopWidth:InterpolationWidths 108 0.36648378 insert TopWidth:InterpolationWidths 109 0.37113664 insert TopWidth:InterpolationWidths 110 0.37582144 insert TopWidth:InterpolationWidths 111 0.38053828 insert TopWidth:InterpolationWidths 112 0.38528725 insert TopWidth:InterpolationWidths 113 0.39006847 insert TopWidth:InterpolationWidths 114 0.39488202 insert TopWidth:InterpolationWidths 115 0.39972803 insert TopWidth:InterpolationWidths 116 0.40460658 insert TopWidth:InterpolationWidths 117 0.40951778 insert TopWidth:InterpolationWidths 118 0.41446173 insert TopWidth:InterpolationWidths 119 0.41943854 insert TopWidth:InterpolationWidths 120 0.42444831 insert TopWidth:InterpolationWidths 121 0.42949115 insert TopWidth:InterpolationWidths 122 0.43456715 insert TopWidth:InterpolationWidths 123 0.43967643 insert TopWidth:InterpolationWidths 124 0.44481909 insert TopWidth:InterpolationWidths 125 0.44999524 insert TopWidth:InterpolationWidths 126 0.45520497 insert TopWidth:InterpolationWidths 127 0.46044841 insert TopWidth:InterpolationWidths 128 0.46572564 insert TopWidth:InterpolationWidths 129 0.47103678 insert TopWidth:InterpolationWidths 130 0.47638473 insert TopWidth:InterpolationWidths 131 0.4817641 insert TopWidth:InterpolationWidths 132 0.4871777 insert TopWidth:InterpolationWidths 133 0.49262564 insert TopWidth:InterpolationWidths 134 0.49810801 insert TopWidth:InterpolationWidths 135 0.50362494 insert TopWidth:InterpolationWidths 136 0.50917653 insert TopWidth:InterpolationWidths 137 0.51476289 insert TopWidth:InterpolationWidths 138 0.52038411 insert TopWidth:InterpolationWidths 139 0.52604032 insert TopWidth:InterpolationWidths 140 0.53173162 insert TopWidth:InterpolationWidths 141 0.53745812 insert TopWidth:InterpolationWidths 142 0.54321993 insert TopWidth:InterpolationWidths 143 0.54901715 insert TopWidth:InterpolationWidths 144 0.5548499 insert TopWidth:InterpolationWidths 145 0.56071828 insert TopWidth:InterpolationWidths 146 0.5666224 insert TopWidth:InterpolationWidths 147 0.57256238 insert TopWidth:InterpolationWidths 148 0.57853832 insert TopWidth:InterpolationWidths 149 0.58455033 insert TopWidth:InterpolationWidths 150 0.017535877 insert TopWidth:InterpolationWidths 151 0.017769457 insert TopWidth:InterpolationWidths 152 0.018004689 insert TopWidth:InterpolationWidths 153 0.01824158 insert TopWidth:InterpolationWidths 154 0.018480134 insert TopWidth:InterpolationWidths 155 0.018720357 insert TopWidth:InterpolationWidths 156 0.018962253 insert TopWidth:InterpolationWidths 157 0.019205828 insert TopWidth:InterpolationWidths 158 0.019451088 insert TopWidth:InterpolationWidths 159 0.019698037 insert TopWidth:InterpolationWidths 160 0.019946681 insert TopWidth:InterpolationWidths 161 0.020197025 insert TopWidth:InterpolationWidths 162 0.020449076 insert TopWidth:InterpolationWidths 163 0.020702837 insert TopWidth:InterpolationWidths 164 0.020958315 insert TopWidth:InterpolationWidths 165 0.021215515 insert TopWidth:InterpolationWidths 166 0.021474442 insert TopWidth:InterpolationWidths 167 0.021735102 insert TopWidth:InterpolationWidths 168 0.021997501 insert TopWidth:InterpolationWidths 169 0.022261643 insert TopWidth:InterpolationWidths 170 0.022527535 insert TopWidth:InterpolationWidths 171 0.022795182 insert TopWidth:InterpolationWidths 172 0.023064589 insert TopWidth:InterpolationWidths 173 0.023335763 insert TopWidth:InterpolationWidths 174 0.023608707 insert TopWidth:InterpolationWidths 175 0.023883429 insert TopWidth:InterpolationWidths 176 0.024159934 insert TopWidth:InterpolationWidths 177 0.024438227 insert TopWidth:InterpolationWidths 178 0.024718315 insert TopWidth:InterpolationWidths 179 0.025000201 insert TopWidth:InterpolationWidths 180 0.025284047 insert TopWidth:InterpolationWidths 181 0.025569555 insert TopWidth:InterpolationWidths 182 0.02585688 insert TopWidth:InterpolationWidths 183 0.026146027 insert TopWidth:InterpolationWidths 184 0.026437002 insert TopWidth:InterpolationWidths 185 0.026729811 insert TopWidth:InterpolationWidths 186 0.02702446 insert TopWidth:InterpolationWidths 187 0.027320953 insert TopWidth:InterpolationWidths 188 0.027619298 insert TopWidth:InterpolationWidths 189 0.027919499 insert TopWidth:InterpolationWidths 190 0.028221563 insert TopWidth:InterpolationWidths 191 0.028525495 insert TopWidth:InterpolationWidths 192 0.0288313 insert TopWidth:InterpolationWidths 193 0.029138986 insert TopWidth:InterpolationWidths 194 0.029448557 insert TopWidth:InterpolationWidths 195 0.029760019 insert TopWidth:InterpolationWidths 196 0.030073378 insert TopWidth:InterpolationWidths 197 0.03038864 insert TopWidth:InterpolationWidths 198 0.030705811 insert TopWidth:InterpolationWidths 199 0.031024896 insert TopWidth:InterpolationWidths 200 0.33109266 insert TopWidth:InterpolationWidths 201 0.33550285 insert TopWidth:InterpolationWidths 202 0.33994425 insert TopWidth:InterpolationWidths 203 0.34441696 insert TopWidth:InterpolationWidths 204 0.34892106 insert TopWidth:InterpolationWidths 205 0.35345667 insert TopWidth:InterpolationWidths 206 0.35802388 insert TopWidth:InterpolationWidths 207 0.3626228 insert TopWidth:InterpolationWidths 208 0.36725351 insert TopWidth:InterpolationWidths 209 0.37191613 insert TopWidth:InterpolationWidths 210 0.37661075 insert TopWidth:InterpolationWidths 211 0.38133747 insert TopWidth:InterpolationWidths 212 0.3860964 insert TopWidth:InterpolationWidths 213 0.39088763 insert TopWidth:InterpolationWidths 214 0.39571128 insert TopWidth:InterpolationWidths 215 0.40056744 insert TopWidth:InterpolationWidths 216 0.40545621 insert TopWidth:InterpolationWidths 217 0.4103777 insert TopWidth:InterpolationWidths 218 0.41533202 insert TopWidth:InterpolationWidths 219 0.42031926 insert TopWidth:InterpolationWidths 220 0.42533953 insert TopWidth:InterpolationWidths 221 0.43039293 insert TopWidth:InterpolationWidths 222 0.43547958 insert TopWidth:InterpolationWidths 223 0.44059956 insert TopWidth:InterpolationWidths 224 0.445753 insert TopWidth:InterpolationWidths 225 0.45093999 insert TopWidth:InterpolationWidths 226 0.45616065 insert TopWidth:InterpolationWidths 227 0.46141506 insert TopWidth:InterpolationWidths 228 0.46670335 insert TopWidth:InterpolationWidths 229 0.47202562 insert TopWidth:InterpolationWidths 230 0.47738487 insert TopWidth:InterpolationWidths 231 0.48277552 insert TopWidth:InterpolationWidths 232 0.48820046 insert TopWidth:InterpolationWidths 233 0.49365981 insert TopWidth:InterpolationWidths 234 0.49915368 insert TopWidth:InterpolationWidths 235 0.50468217 insert TopWidth:InterpolationWidths 236 0.51024539 insert TopWidth:InterpolationWidths 237 0.51584345 insert TopWidth:InterpolationWidths 238 0.52147645 insert TopWidth:InterpolationWidths 239 0.52714451 insert TopWidth:InterpolationWidths 240 0.53284774 insert TopWidth:InterpolationWidths 241 0.53858624 insert TopWidth:InterpolationWidths 242 0.54436011 insert TopWidth:InterpolationWidths 243 0.55016948 insert TopWidth:InterpolationWidths 244 0.55601445 insert TopWidth:InterpolationWidths 245 0.56189513 insert TopWidth:InterpolationWidths 246 0.56781162 insert TopWidth:InterpolationWidths 247 0.57376404 insert TopWidth:InterpolationWidths 248 0.5797525 insert TopWidth:InterpolationWidths 249 0.58577711 insert TopWidth:InterpolationWidths 250 0.11621112 insert TopWidth:InterpolationWidths 251 0.11775906 insert TopWidth:InterpolationWidths 252 0.11931796 insert TopWidth:InterpolationWidths 253 0.12088785 insert TopWidth:InterpolationWidths 254 0.12246876 insert TopWidth:InterpolationWidths 255 0.12406072 insert TopWidth:InterpolationWidths 256 0.12566378 insert TopWidth:InterpolationWidths 257 0.12727797 insert TopWidth:InterpolationWidths 258 0.12890331 insert TopWidth:InterpolationWidths 259 0.13053986 insert TopWidth:InterpolationWidths 260 0.13218763 insert TopWidth:InterpolationWidths 261 0.13384668 insert TopWidth:InterpolationWidths 262 0.13551703 insert TopWidth:InterpolationWidths 263 0.13719872 insert TopWidth:InterpolationWidths 264 0.13889178 insert TopWidth:InterpolationWidths 265 0.14059626 insert TopWidth:InterpolationWidths 266 0.14231218 insert TopWidth:InterpolationWidths 267 0.14403959 insert TopWidth:InterpolationWidths 268 0.14577852 insert TopWidth:InterpolationWidths 269 0.147529 insert TopWidth:InterpolationWidths 270 0.14929108 insert TopWidth:InterpolationWidths 271 0.15106479 insert TopWidth:InterpolationWidths 272 0.15285017 insert TopWidth:InterpolationWidths 273 0.15464724 insert TopWidth:InterpolationWidths 274 0.15645606 insert TopWidth:InterpolationWidths 275 0.15827666 insert TopWidth:InterpolationWidths 276 0.16010907 insert TopWidth:InterpolationWidths 277 0.16195333 insert TopWidth:InterpolationWidths 278 0.16380948 insert TopWidth:InterpolationWidths 279 0.16567756 insert TopWidth:InterpolationWidths 280 0.16755862 insert TopWidth:InterpolationWidths 281 0.1694507 insert TopWidth:InterpolationWidths 282 0.17135481 insert TopWidth:InterpolationWidths 283 0.173271 insert TopWidth:InterpolationWidths 284 0.17519931 insert TopWidth:InterpolationWidths 285 0.17713977 insert TopWidth:InterpolationWidths 286 0.17909242 insert TopWidth:InterpolationWidths 287 0.1810573 insert TopWidth:InterpolationWidths 288 0.18303444 insert TopWidth:InterpolationWidths 289 0.18502389 insert TopWidth:InterpolationWidths 290 0.18702568 insert TopWidth:InterpolationWidths 291 0.18903985 insert TopWidth:InterpolationWidths 292 0.19106644 insert TopWidth:InterpolationWidths 293 0.19310549 insert TopWidth:InterpolationWidths 294 0.19515703 insert TopWidth:InterpolationWidths 295 0.1972211 insert TopWidth:InterpolationWidths 296 0.19929775 insert TopWidth:InterpolationWidths 297 0.20138701 insert TopWidth:InterpolationWidths 298 0.20348891 insert TopWidth:InterpolationWidths 299 0.2056035 insert TopWidth:InterpolationWidths 300 0.11621081 insert TopWidth:InterpolationWidths 301 0.11775875 insert TopWidth:InterpolationWidths 302 0.11931765 insert TopWidth:InterpolationWidths 303 0.12088753 insert TopWidth:InterpolationWidths 304 0.12246843 insert TopWidth:InterpolationWidths 305 0.1240604 insert TopWidth:InterpolationWidths 306 0.12566345 insert TopWidth:InterpolationWidths 307 0.12727763 insert TopWidth:InterpolationWidths 308 0.12890297 insert TopWidth:InterpolationWidths 309 0.13053951 insert TopWidth:InterpolationWidths 310 0.13218729 insert TopWidth:InterpolationWidths 311 0.13384633 insert TopWidth:InterpolationWidths 312 0.13551667 insert TopWidth:InterpolationWidths 313 0.13719836 insert TopWidth:InterpolationWidths 314 0.13889142 insert TopWidth:InterpolationWidths 315 0.14059589 insert TopWidth:InterpolationWidths 316 0.14231181 insert TopWidth:InterpolationWidths 317 0.14403921 insert TopWidth:InterpolationWidths 318 0.14577814 insert TopWidth:InterpolationWidths 319 0.14752862 insert TopWidth:InterpolationWidths 320 0.14929069 insert TopWidth:InterpolationWidths 321 0.15106439 insert TopWidth:InterpolationWidths 322 0.15284976 insert TopWidth:InterpolationWidths 323 0.15464684 insert TopWidth:InterpolationWidths 324 0.15645565 insert TopWidth:InterpolationWidths 325 0.15827624 insert TopWidth:InterpolationWidths 326 0.16010865 insert TopWidth:InterpolationWidths 327 0.16195291 insert TopWidth:InterpolationWidths 328 0.16380905 insert TopWidth:InterpolationWidths 329 0.16567713 insert TopWidth:InterpolationWidths 330 0.16755818 insert TopWidth:InterpolationWidths 331 0.16945025 insert TopWidth:InterpolationWidths 332 0.17135436 insert TopWidth:InterpolationWidths 333 0.17327055 insert TopWidth:InterpolationWidths 334 0.17519885 insert TopWidth:InterpolationWidths 335 0.17713931 insert TopWidth:InterpolationWidths 336 0.17909195 insert TopWidth:InterpolationWidths 337 0.18105682 insert TopWidth:InterpolationWidths 338 0.18303396 insert TopWidth:InterpolationWidths 339 0.18502341 insert TopWidth:InterpolationWidths 340 0.18702519 insert TopWidth:InterpolationWidths 341 0.18903936 insert TopWidth:InterpolationWidths 342 0.19106594 insert TopWidth:InterpolationWidths 343 0.19310498 insert TopWidth:InterpolationWidths 344 0.19515652 insert TopWidth:InterpolationWidths 345 0.19722059 insert TopWidth:InterpolationWidths 346 0.19929723 insert TopWidth:InterpolationWidths 347 0.20138648 insert TopWidth:InterpolationWidths 348 0.20348838 insert TopWidth:InterpolationWidths 349 0.20560297 insert TopWidth:InterpolationWidths 350 0.11612456 insert TopWidth:InterpolationWidths 351 0.11767136 insert TopWidth:InterpolationWidths 352 0.11922911 insert TopWidth:InterpolationWidths 353 0.12079784 insert TopWidth:InterpolationWidths 354 0.12237759 insert TopWidth:InterpolationWidths 355 0.12396839 insert TopWidth:InterpolationWidths 356 0.12557026 insert TopWidth:InterpolationWidths 357 0.12718326 insert TopWidth:InterpolationWidths 358 0.12880741 insert TopWidth:InterpolationWidths 359 0.13044275 insert TopWidth:InterpolationWidths 360 0.13208932 insert TopWidth:InterpolationWidths 361 0.13374715 insert TopWidth:InterpolationWidths 362 0.13541627 insert TopWidth:InterpolationWidths 363 0.13709672 insert TopWidth:InterpolationWidths 364 0.13878854 insert TopWidth:InterpolationWidths 365 0.14049176 insert TopWidth:InterpolationWidths 366 0.14220643 insert TopWidth:InterpolationWidths 367 0.14393256 insert TopWidth:InterpolationWidths 368 0.14567021 insert TopWidth:InterpolationWidths 369 0.14741941 insert TopWidth:InterpolationWidths 370 0.1491802 insert TopWidth:InterpolationWidths 371 0.1509526 insert TopWidth:InterpolationWidths 372 0.15273667 insert TopWidth:InterpolationWidths 373 0.15453242 insert TopWidth:InterpolationWidths 374 0.15633991 insert TopWidth:InterpolationWidths 375 0.15815917 insert TopWidth:InterpolationWidths 376 0.15999024 insert TopWidth:InterpolationWidths 377 0.16183315 insert TopWidth:InterpolationWidths 378 0.16368794 insert TopWidth:InterpolationWidths 379 0.16555464 insert TopWidth:InterpolationWidths 380 0.16743419 insert TopWidth:InterpolationWidths 381 0.16932488 insert TopWidth:InterpolationWidths 382 0.1712276 insert TopWidth:InterpolationWidths 383 0.17314238 insert TopWidth:InterpolationWidths 384 0.17506927 insert TopWidth:InterpolationWidths 385 0.17700831 insert TopWidth:InterpolationWidths 386 0.17895952 insert TopWidth:InterpolationWidths 387 0.18092296 insert TopWidth:InterpolationWidths 388 0.18289865 insert TopWidth:InterpolationWidths 389 0.18488664 insert TopWidth:InterpolationWidths 390 0.18688696 insert TopWidth:InterpolationWidths 391 0.18889965 insert TopWidth:InterpolationWidths 392 0.19092475 insert TopWidth:InterpolationWidths 393 0.1929623 insert TopWidth:InterpolationWidths 394 0.19501233 insert TopWidth:InterpolationWidths 395 0.19707489 insert TopWidth:InterpolationWidths 396 0.19915002 insert TopWidth:InterpolationWidths 397 0.20123774 insert TopWidth:InterpolationWidths 398 0.2033381 insert TopWidth:InterpolationWidths 399 0.20545114 insert TopWidth:NumberofEntries 0 50 insert TopWidth:NumberofEntries 1 100 insert TopWidth:NumberofEntries 2 150 insert TopWidth:NumberofEntries 3 200 insert TopWidth:NumberofEntries 4 250 insert TopWidth:NumberofEntries 5 300 insert TopWidth:NumberofEntries 6 350 insert TopWidth:NumberofEntries 7 400 newdef /Herwig/Particles/t:Width_generator TopWidth newdef /Herwig/Particles/tbar:Width_generator TopWidth # ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/Model.in�����������������������������������������������������������0000644�0001750�0001750�00000001574�11754474774�020774� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################ # Set up the physics model. # # The Standard Model is used by default. ################################################ cd /Herwig # Main SM object create Herwig::StandardModel Model ## Couplings # the strong coupling create Herwig::O2AlphaS AlphaS O2AlphaS.so newdef Model:QCD/RunningAlphaS AlphaS # the electromagetic coupling create ThePEG::SimpleAlphaEM AlphaEM SimpleAlphaEM.so newdef Model:EW/RunningAlphaEM AlphaEM # the CKM matrix create Herwig::StandardCKM CKM newdef Model:EW/CKM CKM # the running mass create Herwig::RunningMass RunningMass newdef RunningMass:MaxFlav 6 newdef RunningMass:QCDOrder 2 newdef Model:RunningMass RunningMass ##################################### # Set up the standard model vertices ##################################### mkdir /Herwig/Vertices cd /Herwig/Vertices read StandardModelVertices.in ������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/baryons.in���������������������������������������������������������0000644�0001750�0001750�00000063144�11754474774�021412� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # file containing the particle data for the baryons # # # the (70,1^-_1) 10bar multiplet # create ThePEG::ParticleData Lambda(1405)0 setup Lambda(1405)0 13122 Lambda(1405)0 1.406 0.05 0.155 0 0 0 2 0 newdef Lambda(1405)0:WidthLoCut 0.06 newdef Lambda(1405)0:WidthUpCut 0.25 create ThePEG::ParticleData Lambdabar(1405)0 setup Lambdabar(1405)0 -13122 Lambdabar(1405)0 1.406 0.05 0.155 0 0 0 2 0 makeanti Lambdabar(1405)0 Lambda(1405)0 newdef Lambdabar(1405)0:WidthLoCut 0.06 newdef Lambdabar(1405)0:WidthUpCut 0.25 create ThePEG::ParticleData Lambda_c(2593)+ setup Lambda_c(2593)+ 14122 Lambda_c(2593)+ 2.5954 0.0036 0.018 0 3 0 2 0 create ThePEG::ParticleData Lambda_c(2593)bar- setup Lambda_c(2593)bar- -14122 Lambda_c(2593)bar- 2.5954 0.0036 0.018 0 -3 0 2 0 makeanti Lambda_c(2593)bar- Lambda_c(2593)+ create ThePEG::ParticleData Lambda_b10 setup Lambda_b10 15122 Lambda_b10 5.957 0.004 0.03 0 0 0 2 0 newdef Lambda_b10:WidthLoCut 0.02 newdef Lambda_b10:WidthUpCut 0.04 create ThePEG::ParticleData Lambda_b1bar0 setup Lambda_b1bar0 -15122 Lambda_b1bar0 5.957 0.004 0.03 0 0 0 2 0 makeanti Lambda_b1bar0 Lambda_b10 newdef Lambda_b1bar0:WidthLoCut 0.02 newdef Lambda_b1bar0:WidthUpCut 0.04 create ThePEG::ParticleData Xi_c(2790)0 setup Xi_c(2790)0 14312 Xi_c(2790)0 2.7919 0.00113 0.0113 0 0 0 2 0 create ThePEG::ParticleData Xi_c(2790)bar0 setup Xi_c(2790)bar0 -14312 Xi_c(2790)bar0 2.7919 0.00113 0.0113 0 0 0 2 0 makeanti Xi_c(2790)bar0 Xi_c(2790)0 create ThePEG::ParticleData Xi_c(2790)+ setup Xi_c(2790)+ 14322 Xi_c(2790)+ 2.7892 0.00113 0.0113 0 3 0 2 0 create ThePEG::ParticleData Xi_c(2790)bar- setup Xi_c(2790)bar- -14322 Xi_c(2790)bar- 2.7892 0.00113 0.0113 0 -3 0 2 0 makeanti Xi_c(2790)bar- Xi_c(2790)+ create ThePEG::ParticleData Xi_b10 setup Xi_b10 15322 Xi_b10 6.1111 0.0014 0.014 0 0 0 2 0 create ThePEG::ParticleData Xi_b1bar0 setup Xi_b1bar0 -15322 Xi_b1bar0 6.1111 0.0014 0.014 0 0 0 2 0 makeanti Xi_b1bar0 Xi_b10 create ThePEG::ParticleData Xi_b1- setup Xi_b1- 15312 Xi_b1- 6.1138 0.0014 0.014 0 -3 0 2 0 create ThePEG::ParticleData Xi_b1bar+ setup Xi_b1bar+ -15312 Xi_b1bar+ 6.1138 0.0014 0.014 0 3 0 2 0 makeanti Xi_b1bar+ Xi_b1- # # the (70,1^-_1) 10bar multiplet # create ThePEG::ParticleData Lambda(1520)0 setup Lambda(1520)0 3124 Lambda(1520)0 1.5195 0.0156 0.118 0 0 0 4 0 newdef Lambda(1520)0:WidthLoCut 0.08 newdef Lambda(1520)0:WidthUpCut 0.156 create ThePEG::ParticleData Lambdabar(1520)0 setup Lambdabar(1520)0 -3124 Lambdabar(1520)0 1.5195 0.0156 0.118 0 0 0 4 0 makeanti Lambdabar(1520)0 Lambda(1520)0 newdef Lambdabar(1520)0:WidthLoCut 0.08 newdef Lambdabar(1520)0:WidthUpCut 0.156 create ThePEG::ParticleData Lambda_c(2625)+ setup Lambda_c(2625)+ 4124 Lambda_c(2625)+ 2.6281 0.0015 0.0075 0 3 0 4 0 create ThePEG::ParticleData Lambda_c(2625)bar- setup Lambda_c(2625)bar- -4124 Lambda_c(2625)bar- 2.6281 0.0015 0.0075 0 -3 0 4 0 makeanti Lambda_c(2625)bar- Lambda_c(2625)+ create ThePEG::ParticleData Lambda_b1*0 setup Lambda_b1*0 5124 Lambda_b1*0 5.96564 0.0015 0.015 0 0 0 4 0 create ThePEG::ParticleData Lambda_b1*bar0 setup Lambda_b1*bar0 -5124 Lambda_b1*bar0 5.96564 0.0015 0.015 0 0 0 4 0 makeanti Lambda_b1*bar0 Lambda_b1*0 create ThePEG::ParticleData Xi_c(2815)0 setup Xi_c(2815)0 14314 Xi_c(2815)0 2.8182 0.00126 0.0126 0 0 0 4 0 create ThePEG::ParticleData Xi_c(2815)bar0 setup Xi_c(2815)bar0 -14314 Xi_c(2815)bar0 2.8182 0.00126 0.0126 0 0 0 4 0 makeanti Xi_c(2815)bar0 Xi_c(2815)0 create ThePEG::ParticleData Xi_c(2815)+ setup Xi_c(2815)+ 14324 Xi_c(2815)+ 2.8165 0.00126 0.0126 0 3 0 4 0 create ThePEG::ParticleData Xi_c(2815)bar- setup Xi_c(2815)bar- -14324 Xi_c(2815)bar- 2.8165 0.00126 0.0126 0 -3 0 4 0 makeanti Xi_c(2815)bar- Xi_c(2815)+ create ThePEG::ParticleData Xi_b1*0 setup Xi_b1*0 15324 Xi_b1*0 6.1384 0.0012 0.012 0 0 0 4 0 create ThePEG::ParticleData Xi_b1*bar0 setup Xi_b1*bar0 -15324 Xi_b1*bar0 6.1384 0.0012 0.012 0 0 0 4 0 makeanti Xi_b1*bar0 Xi_b1*0 create ThePEG::ParticleData Xi_b1*- setup Xi_b1*- 15314 Xi_b1*- 6.1401 0.0012 0.012 0 -3 0 4 0 create ThePEG::ParticleData Xi_b1*bar+ setup Xi_b1*bar+ -15314 Xi_b1*bar+ 6.1401 0.0012 0.012 0 3 0 4 0 makeanti Xi_b1*bar+ Xi_b1*- # # the (56,0^+_0) 35 multiplet # create ThePEG::ParticleData Delta- setup Delta- 1114 Delta- 1.232 0.12 0.375 0 -3 0 4 0 newdef Delta-:WidthLoCut 0.15 newdef Delta-:WidthUpCut 0.6 create ThePEG::ParticleData Deltabar+ setup Deltabar+ -1114 Deltabar+ 1.232 0.12 0.375 0 3 0 4 0 makeanti Deltabar+ Delta- newdef Deltabar+:WidthLoCut 0.15 newdef Deltabar+:WidthUpCut 0.6 create ThePEG::ParticleData Delta0 setup Delta0 2114 Delta0 1.232 0.12 0.375 0 0 0 4 0 newdef Delta0:WidthLoCut 0.15 newdef Delta0:WidthUpCut 0.6 create ThePEG::ParticleData Deltabar0 setup Deltabar0 -2114 Deltabar0 1.232 0.12 0.375 0 0 0 4 0 makeanti Deltabar0 Delta0 newdef Deltabar0:WidthLoCut 0.15 newdef Deltabar0:WidthUpCut 0.6 create ThePEG::ParticleData Delta+ setup Delta+ 2214 Delta+ 1.232 0.12 0.375 0 3 0 4 0 newdef Delta+:WidthLoCut 0.15 newdef Delta+:WidthUpCut 0.6 create ThePEG::ParticleData Deltabar- setup Deltabar- -2214 Deltabar- 1.232 0.12 0.375 0 -3 0 4 0 makeanti Deltabar- Delta+ newdef Deltabar-:WidthLoCut 0.15 newdef Deltabar-:WidthUpCut 0.6 create ThePEG::ParticleData Delta++ setup Delta++ 2224 Delta++ 1.232 0.12 0.375 0 6 0 4 0 newdef Delta++:WidthLoCut 0.15 newdef Delta++:WidthUpCut 0.6 create ThePEG::ParticleData Deltabar-- setup Deltabar-- -2224 Deltabar-- 1.232 0.12 0.375 0 -6 0 4 0 makeanti Deltabar-- Delta++ newdef Deltabar--:WidthLoCut 0.15 newdef Deltabar--:WidthUpCut 0.6 create ThePEG::ParticleData Sigma*- setup Sigma*- 3114 Sigma*- 1.3872 0.0394 0.257 0 -3 0 4 0 newdef Sigma*-:VariableRatio 1 newdef Sigma*-:WidthLoCut 0.12 newdef Sigma*-:WidthUpCut 0.394 create ThePEG::ParticleData Sigma*bar+ setup Sigma*bar+ -3114 Sigma*bar+ 1.3872 0.0394 0.257 0 3 0 4 0 makeanti Sigma*bar+ Sigma*- newdef Sigma*bar+:VariableRatio 1 newdef Sigma*bar+:WidthLoCut 0.12 newdef Sigma*bar+:WidthUpCut 0.394 create ThePEG::ParticleData Sigma*0 setup Sigma*0 3214 Sigma*0 1.3837 0.036 0.24 0 0 0 4 0 newdef Sigma*0:VariableRatio 1 newdef Sigma*0:WidthLoCut 0.12 newdef Sigma*0:WidthUpCut 0.36 create ThePEG::ParticleData Sigma*bar0 setup Sigma*bar0 -3214 Sigma*bar0 1.3837 0.036 0.24 0 0 0 4 0 makeanti Sigma*bar0 Sigma*0 newdef Sigma*bar0:VariableRatio 1 newdef Sigma*bar0:WidthLoCut 0.12 newdef Sigma*bar0:WidthUpCut 0.36 create ThePEG::ParticleData Sigma*+ setup Sigma*+ 3224 Sigma*+ 1.3828 0.0358 0.239 0 3 0 4 0 newdef Sigma*+:VariableRatio 1 newdef Sigma*+:WidthLoCut 0.12 newdef Sigma*+:WidthUpCut 0.358 create ThePEG::ParticleData Sigma*bar- setup Sigma*bar- -3224 Sigma*bar- 1.3828 0.0358 0.239 0 -3 0 4 0 makeanti Sigma*bar- Sigma*+ newdef Sigma*bar-:VariableRatio 1 newdef Sigma*bar-:WidthLoCut 0.12 newdef Sigma*bar-:WidthUpCut 0.358 create ThePEG::ParticleData Xi*- setup Xi*- 3314 Xi*- 1.535 0.0099 0.0845 0 -3 0 4 0 newdef Xi*-:WidthLoCut 0.07 newdef Xi*-:WidthUpCut 0.099 create ThePEG::ParticleData Xi*bar+ setup Xi*bar+ -3314 Xi*bar+ 1.535 0.0099 0.0845 0 3 0 4 0 makeanti Xi*bar+ Xi*- newdef Xi*bar+:WidthLoCut 0.07 newdef Xi*bar+:WidthUpCut 0.099 create ThePEG::ParticleData Xi*0 setup Xi*0 3324 Xi*0 1.5318 0.0091 0.0805 0 0 0 4 0 newdef Xi*0:WidthLoCut 0.07 newdef Xi*0:WidthUpCut 0.091 create ThePEG::ParticleData Xi*bar0 setup Xi*bar0 -3324 Xi*bar0 1.5318 0.0091 0.0805 0 0 0 4 0 makeanti Xi*bar0 Xi*0 newdef Xi*bar0:WidthLoCut 0.07 newdef Xi*bar0:WidthUpCut 0.091 create ThePEG::ParticleData Omega- setup Omega- 3334 Omega- 1.67245 8.018161316538E-15 0 24.61 -3 0 4 0 create ThePEG::ParticleData Omegabar+ setup Omegabar+ -3334 Omegabar+ 1.67245 8.018161316538E-15 0 24.61 3 0 4 0 makeanti Omegabar+ Omega- create ThePEG::ParticleData Sigma*_c0 setup Sigma*_c0 4114 Sigma*_c0 2.518 0.0161 0.0825 0 0 0 4 0 create ThePEG::ParticleData Sigmabar*_c0 setup Sigmabar*_c0 -4114 Sigmabar*_c0 2.518 0.0161 0.0825 0 0 0 4 0 makeanti Sigmabar*_c0 Sigma*_c0 create ThePEG::ParticleData Sigma*_c+ setup Sigma*_c+ 4214 Sigma*_c+ 2.5175 0.0161 0.0825 0 3 0 4 0 create ThePEG::ParticleData Sigmabar*_c- setup Sigmabar*_c- -4214 Sigmabar*_c- 2.5175 0.0161 0.0825 0 -3 0 4 0 makeanti Sigmabar*_c- Sigma*_c+ create ThePEG::ParticleData Sigma*_c++ setup Sigma*_c++ 4224 Sigma*_c++ 2.5184 0.0149 0.0745 0 6 0 4 0 create ThePEG::ParticleData Sigmabar*_c-- setup Sigmabar*_c-- -4224 Sigmabar*_c-- 2.5184 0.0149 0.0745 0 -6 0 4 0 makeanti Sigmabar*_c-- Sigma*_c++ create ThePEG::ParticleData Xi_c*0 setup Xi_c*0 4314 Xi_c*0 2.6461 0.003 0.03 0 0 0 4 0 create ThePEG::ParticleData Xi_c*bar0 setup Xi_c*bar0 -4314 Xi_c*bar0 2.6461 0.003 0.03 0 0 0 4 0 makeanti Xi_c*bar0 Xi_c*0 create ThePEG::ParticleData Xi_c*+ setup Xi_c*+ 4324 Xi_c*+ 2.6466 0.003 0.03 0 3 0 4 0 create ThePEG::ParticleData Xi_c*bar- setup Xi_c*bar- -4324 Xi_c*bar- 2.6466 0.003 0.03 0 -3 0 4 0 makeanti Xi_c*bar- Xi_c*+ create ThePEG::ParticleData Omega_c*0 setup Omega_c*0 4334 Omega_c*0 2.7683 4.0E-5 0.0004 0 0 0 4 0 create ThePEG::ParticleData Omega_c*bar0 setup Omega_c*bar0 -4334 Omega_c*bar0 2.7683 4.0E-5 0.0004 0 0 0 4 0 makeanti Omega_c*bar0 Omega_c*0 create ThePEG::ParticleData Sigma_b*- setup Sigma_b*- 5114 Sigma_b*- 5.8364 0.0156 0.072 0 -3 0 4 0 create ThePEG::ParticleData Sigma_b*bar+ setup Sigma_b*bar+ -5114 Sigma_b*bar+ 5.8364 0.0156 0.072 0 3 0 4 0 makeanti Sigma_b*bar+ Sigma_b*- create ThePEG::ParticleData Sigma_b*0 setup Sigma_b*0 5214 Sigma_b*0 5.8327 0.0154 0.073 0 0 0 4 0 create ThePEG::ParticleData Sigma_b*bar0 setup Sigma_b*bar0 -5214 Sigma_b*bar0 5.8327 0.0154 0.073 0 0 0 4 0 makeanti Sigma_b*bar0 Sigma_b*0 create ThePEG::ParticleData Sigma_b*+ setup Sigma_b*+ 5224 Sigma_b*+ 5.829 0.013 0.065 0 3 0 4 0 create ThePEG::ParticleData Sigma_b*bar- setup Sigma_b*bar- -5224 Sigma_b*bar- 5.829 0.013 0.065 0 -3 0 4 0 makeanti Sigma_b*bar- Sigma_b*+ create ThePEG::ParticleData Xi_b*- setup Xi_b*- 5314 Xi_b*- 5.968 0.0035 0.035 0 -3 0 4 0 create ThePEG::ParticleData Xi_b*bar+ setup Xi_b*bar+ -5314 Xi_b*bar+ 5.968 0.0035 0.035 0 3 0 4 0 makeanti Xi_b*bar+ Xi_b*- create ThePEG::ParticleData Xi_b*0 setup Xi_b*0 5324 Xi_b*0 5.9685 0.0035 0.035 0 0 0 4 0 create ThePEG::ParticleData Xi_b*bar0 setup Xi_b*bar0 -5324 Xi_b*bar0 5.9685 0.0035 0.035 0 0 0 4 0 makeanti Xi_b*bar0 Xi_b*0 create ThePEG::ParticleData Omega_b*- setup Omega_b*- 5334 Omega_b*- 6.10584 5.0E-6 5.0E-5 0 -3 0 4 0 create ThePEG::ParticleData Omega_b*bar+ setup Omega_b*bar+ -5334 Omega_b*bar+ 6.10584 5.0E-6 5.0E-5 0 3 0 4 0 makeanti Omega_b*bar+ Omega_b*- # # the (56,0^+_0) 40 multiplet # create ThePEG::ParticleData Lambda0 setup Lambda0 3122 Lambda0 1.115683 2.5009752851711E-15 0 78.9 0 0 2 0 create ThePEG::ParticleData Lambdabar0 setup Lambdabar0 -3122 Lambdabar0 1.115683 2.5009752851711E-15 0 78.9 0 0 2 0 makeanti Lambdabar0 Lambda0 create ThePEG::BeamParticleData p+ setup p+ 2212 p+ 0.93827203 0. 0 0 3 0 2 1 create ThePEG::BeamParticleData pbar- setup pbar- -2212 pbar- 0.93827203 0. 0 0 -3 0 2 1 makeanti pbar- p+ create ThePEG::BeamParticleData n0 setup n0 2112 n0 0.93956536 7.4322768361582E-28 0 2.655E+14 0 0 2 1 create ThePEG::BeamParticleData nbar0 setup nbar0 -2112 nbar0 0.93956536 7.4322768361582E-28 0 2.655E+14 0 0 2 1 makeanti nbar0 n0 create ThePEG::ParticleData Sigma- setup Sigma- 3112 Sigma- 1.197449 4.4503146143437E-15 0 44.34 -3 0 2 0 create ThePEG::ParticleData Sigmabar+ setup Sigmabar+ -3112 Sigmabar+ 1.197449 4.4503146143437E-15 0 44.34 3 0 2 0 makeanti Sigmabar+ Sigma- create ThePEG::ParticleData Sigma0 setup Sigma0 3212 Sigma0 1.192642 8.8886013513514E-6 0 2.22E-8 0 0 2 0 create ThePEG::ParticleData Sigmabar0 setup Sigmabar0 -3212 Sigmabar0 1.192642 8.8886013513514E-6 0 2.22E-8 0 0 2 0 makeanti Sigmabar0 Sigma0 create ThePEG::ParticleData Sigma+ setup Sigma+ 3222 Sigma+ 1.18937 8.2082757903494E-15 0 24.04 3 0 2 0 create ThePEG::ParticleData Sigmabar- setup Sigmabar- -3222 Sigmabar- 1.18937 8.2082757903494E-15 0 24.04 -3 0 2 0 makeanti Sigmabar- Sigma+ create ThePEG::ParticleData Xi- setup Xi- 3312 Xi- 1.32131 4.0188788187373E-15 0 49.1 -3 0 2 0 create ThePEG::ParticleData Xibar+ setup Xibar+ -3312 Xibar+ 1.32131 4.0188788187373E-15 0 49.1 3 0 2 0 makeanti Xibar+ Xi- create ThePEG::ParticleData Xi0 setup Xi0 3322 Xi0 1.31483 2.2655218140069E-15 0 87.1 0 0 2 0 create ThePEG::ParticleData Xibar0 setup Xibar0 -3322 Xibar0 1.31483 2.2655218140069E-15 0 87.1 0 0 2 0 makeanti Xibar0 Xi0 create ThePEG::ParticleData Lambda_c+ setup Lambda_c+ 4122 Lambda_c+ 2.28646 3.2942729549249E-12 0 0.0599 3 0 2 0 create ThePEG::ParticleData Lambdabar_c- setup Lambdabar_c- -4122 Lambdabar_c- 2.28646 3.2942729549249E-12 0 0.0599 -3 0 2 0 makeanti Lambdabar_c- Lambda_c+ create ThePEG::ParticleData Sigma_c0 setup Sigma_c0 4112 Sigma_c0 2.45376 0.0022 0.022 0 0 0 2 0 create ThePEG::ParticleData Sigmabar_c0 setup Sigmabar_c0 -4112 Sigmabar_c0 2.45376 0.0022 0.022 0 0 0 2 0 makeanti Sigmabar_c0 Sigma_c0 create ThePEG::ParticleData Sigma_c+ setup Sigma_c+ 4212 Sigma_c+ 2.4529 0.00223 0.0223 0 3 0 2 0 create ThePEG::ParticleData Sigmabar_c- setup Sigmabar_c- -4212 Sigmabar_c- 2.4529 0.00223 0.0223 0 -3 0 2 0 makeanti Sigmabar_c- Sigma_c+ create ThePEG::ParticleData Sigma_c++ setup Sigma_c++ 4222 Sigma_c++ 2.45402 0.00223 0.0223 0 6 0 2 0 create ThePEG::ParticleData Sigmabar_c-- setup Sigmabar_c-- -4222 Sigmabar_c-- 2.45402 0.00223 0.0223 0 -6 0 2 0 makeanti Sigmabar_c-- Sigma_c++ create ThePEG::ParticleData Xi_c0 setup Xi_c0 4132 Xi_c0 2.471 5.8728258928571E-12 0 0.0336 0 0 2 0 create ThePEG::ParticleData Xi_cbar0 setup Xi_cbar0 -4132 Xi_cbar0 2.471 5.8728258928571E-12 0 0.0336 0 0 2 0 makeanti Xi_cbar0 Xi_c0 create ThePEG::ParticleData Xi_c+ setup Xi_c+ 4232 Xi_c+ 2.4679 1.4949011363636E-12 0 0.132 3 0 2 0 create ThePEG::ParticleData Xi_cbar- setup Xi_cbar- -4232 Xi_cbar- 2.4679 1.4949011363636E-12 0 0.132 -3 0 2 0 makeanti Xi_cbar- Xi_c+ create ThePEG::ParticleData Xi'_c0 setup Xi'_c0 4312 Xi'_c0 2.578 1.7E-7 1.7E-6 0 0 0 2 0 create ThePEG::ParticleData Xi'_cbar0 setup Xi'_cbar0 -4312 Xi'_cbar0 2.578 1.7E-7 1.7E-6 0 0 0 2 0 makeanti Xi'_cbar0 Xi'_c0 create ThePEG::ParticleData Xi'_c+ setup Xi'_c+ 4322 Xi'_c+ 2.5757 1.27E-5 0.000127 0 3 0 2 0 create ThePEG::ParticleData Xi'_cbar- setup Xi'_cbar- -4322 Xi'_cbar- 2.5757 1.27E-5 0.000127 0 -3 0 2 0 makeanti Xi'_cbar- Xi'_c+ create ThePEG::ParticleData Omega_c0 setup Omega_c0 4332 Omega_c0 2.6975 9.3965214285714E-12 0 0.021 0 0 2 0 create ThePEG::ParticleData Omega_cbar0 setup Omega_cbar0 -4332 Omega_cbar0 2.6975 9.3965214285714E-12 0 0.021 0 0 2 0 makeanti Omega_cbar0 Omega_c0 create ThePEG::ParticleData Lambda_b0 setup Lambda_b0 5122 Lambda_b0 5.624 5.3476138211382E-13 0 0.369 0 0 2 0 create ThePEG::ParticleData Lambda_bbar0 setup Lambda_bbar0 -5122 Lambda_bbar0 5.624 5.3476138211382E-13 0 0.369 0 0 2 0 makeanti Lambda_bbar0 Lambda_b0 create ThePEG::ParticleData Sigma_b- setup Sigma_b- 5112 Sigma_b- 5.8152 0.0086 0.043 0 -3 0 2 0 create ThePEG::ParticleData Sigma_bbar+ setup Sigma_bbar+ -5112 Sigma_bbar+ 5.8152 0.0086 0.043 0 3 0 2 0 makeanti Sigma_bbar+ Sigma_b- create ThePEG::ParticleData Sigma_b0 setup Sigma_b0 5212 Sigma_b0 5.8115 0.0085 0.0425 0 0 0 2 0 create ThePEG::ParticleData Sigma_bbar0 setup Sigma_bbar0 -5212 Sigma_bbar0 5.8115 0.0085 0.0425 0 0 0 2 0 makeanti Sigma_bbar0 Sigma_b0 create ThePEG::ParticleData Sigma_b+ setup Sigma_b+ 5222 Sigma_b+ 5.8078 0.0066 0.033 0 3 0 2 0 create ThePEG::ParticleData Sigma_bbar- setup Sigma_bbar- -5222 Sigma_bbar- 5.8078 0.0066 0.033 0 -3 0 2 0 makeanti Sigma_bbar- Sigma_b+ create ThePEG::ParticleData Xi_b- setup Xi_b- 5132 Xi_b- 5.7929 4.7320611510791E-13 0 0.417 -3 0 2 0 create ThePEG::ParticleData Xi_bbar+ setup Xi_bbar+ -5132 Xi_bbar+ 5.7929 4.7320611510791E-13 0 0.417 3 0 2 0 makeanti Xi_bbar+ Xi_b- create ThePEG::ParticleData Xi_b0 setup Xi_b0 5232 Xi_b0 5.7898 4.7320611510791E-13 0 0.417 0 0 2 0 create ThePEG::ParticleData Xi_bbar0 setup Xi_bbar0 -5232 Xi_bbar0 5.7898 4.7320611510791E-13 0 0.417 0 0 2 0 makeanti Xi_bbar0 Xi_b0 create ThePEG::ParticleData Xi_b'- setup Xi_b'- 5312 Xi_b'- 5.8999 1.8E-7 1.8E-6 0 -3 0 2 0 create ThePEG::ParticleData Xi_b'bar+ setup Xi_b'bar+ -5312 Xi_b'bar+ 5.8999 1.8E-7 1.8E-6 0 3 0 2 0 makeanti Xi_b'bar+ Xi_b'- create ThePEG::ParticleData Xi_b'0 setup Xi_b'0 5322 Xi_b'0 5.8976 1.37E-5 0.000137 0 0 0 2 0 create ThePEG::ParticleData Xi_b'bar0 setup Xi_b'bar0 -5322 Xi_b'bar0 5.8976 1.37E-5 0.000137 0 0 0 2 0 makeanti Xi_b'bar0 Xi_b'0 create ThePEG::ParticleData Omega_b- setup Omega_b- 5332 Omega_b- 6.03504 5.4450041390728E-13 0 0.3624 -3 0 2 0 create ThePEG::ParticleData Omega_bbar+ setup Omega_bbar+ -5332 Omega_bbar+ 6.03504 5.4450041390728E-13 0 0.3624 3 0 2 0 makeanti Omega_bbar+ Omega_b- # # the (56,0^+_2) 40 multiplet # create ThePEG::ParticleData Lambda(1600)0 setup Lambda(1600)0 23122 Lambda(1600)0 1.6 0.15 0.43 0 0 0 2 0 newdef Lambda(1600)0:VariableRatio 1 newdef Lambda(1600)0:WidthLoCut 0.26 newdef Lambda(1600)0:WidthUpCut 0.6 create ThePEG::ParticleData Lambdabar(1600)0 setup Lambdabar(1600)0 -23122 Lambdabar(1600)0 1.6 0.15 0.43 0 0 0 2 0 makeanti Lambdabar(1600)0 Lambda(1600)0 newdef Lambdabar(1600)0:VariableRatio 1 newdef Lambdabar(1600)0:WidthLoCut 0.26 newdef Lambdabar(1600)0:WidthUpCut 0.6 create ThePEG::ParticleData p(1440)+ setup p(1440)+ 12212 p(1440)+ 1.44 0.3 0.45 0 3 0 2 0 newdef p(1440)+:VariableRatio 1 newdef p(1440)+:WidthLoCut 0.3 newdef p(1440)+:WidthUpCut 0.6 create ThePEG::ParticleData pbar(1440) setup pbar(1440) -12212 pbar(1440) 1.44 0.3 0.45 0 -3 0 2 0 makeanti pbar(1440) p(1440)+ newdef pbar(1440):VariableRatio 1 newdef pbar(1440):WidthLoCut 0.3 newdef pbar(1440):WidthUpCut 0.6 create ThePEG::ParticleData n(1440)0 setup n(1440)0 12112 n(1440)0 1.44 0.3 0.45 0 0 0 2 0 newdef n(1440)0:VariableRatio 1 newdef n(1440)0:WidthLoCut 0.3 newdef n(1440)0:WidthUpCut 0.6 create ThePEG::ParticleData nbar(1440) setup nbar(1440) -12112 nbar(1440) 1.44 0.3 0.45 0 0 0 2 0 makeanti nbar(1440) n(1440)0 newdef nbar(1440):VariableRatio 1 newdef nbar(1440):WidthLoCut 0.3 newdef nbar(1440):WidthUpCut 0.6 create ThePEG::ParticleData Sigma(1660)- setup Sigma(1660)- 13112 Sigma(1660)- 1.66 0.1 0.45 0 -3 0 2 0 newdef Sigma(1660)-:VariableRatio 1 newdef Sigma(1660)-:WidthLoCut 0.4 newdef Sigma(1660)-:WidthUpCut 0.5 create ThePEG::ParticleData Sigmabar(1660)+ setup Sigmabar(1660)+ -13112 Sigmabar(1660)+ 1.66 0.1 0.45 0 3 0 2 0 makeanti Sigmabar(1660)+ Sigma(1660)- newdef Sigmabar(1660)+:VariableRatio 1 newdef Sigmabar(1660)+:WidthLoCut 0.4 newdef Sigmabar(1660)+:WidthUpCut 0.5 create ThePEG::ParticleData Sigma(1660)0 setup Sigma(1660)0 13212 Sigma(1660)0 1.66 0.1 0.45 0 0 0 2 0 newdef Sigma(1660)0:VariableRatio 1 newdef Sigma(1660)0:WidthLoCut 0.4 newdef Sigma(1660)0:WidthUpCut 0.5 create ThePEG::ParticleData Sigmabar(1660)0 setup Sigmabar(1660)0 -13212 Sigmabar(1660)0 1.66 0.1 0.45 0 0 0 2 0 makeanti Sigmabar(1660)0 Sigma(1660)0 newdef Sigmabar(1660)0:VariableRatio 1 newdef Sigmabar(1660)0:WidthLoCut 0.4 newdef Sigmabar(1660)0:WidthUpCut 0.5 create ThePEG::ParticleData Sigma(1660)+ setup Sigma(1660)+ 13222 Sigma(1660)+ 1.66 0.1 0.45 0 3 0 2 0 newdef Sigma(1660)+:VariableRatio 1 newdef Sigma(1660)+:WidthLoCut 0.4 newdef Sigma(1660)+:WidthUpCut 0.5 create ThePEG::ParticleData Sigmabar(1660)- setup Sigmabar(1660)- -13222 Sigmabar(1660)- 1.66 0.1 0.45 0 -3 0 2 0 makeanti Sigmabar(1660)- Sigma(1660)+ newdef Sigmabar(1660)-:VariableRatio 1 newdef Sigmabar(1660)-:WidthLoCut 0.4 newdef Sigmabar(1660)-:WidthUpCut 0.5 create ThePEG::ParticleData Xi(1690)0 setup Xi(1690)0 13322 Xi(1690)0 1.69 0.01 0.085 0 0 0 2 0 newdef Xi(1690)0:WidthLoCut 0.01 newdef Xi(1690)0:WidthUpCut 0.1 create ThePEG::ParticleData Xibar(1690)0 setup Xibar(1690)0 -13322 Xibar(1690)0 1.69 0.01 0.085 0 0 0 2 0 makeanti Xibar(1690)0 Xi(1690)0 newdef Xibar(1690)0:WidthLoCut 0.01 newdef Xibar(1690)0:WidthUpCut 0.1 create ThePEG::ParticleData Xi(1690)- setup Xi(1690)- 13312 Xi(1690)- 1.69 0.01 0.085 0 -3 0 2 0 newdef Xi(1690)-:WidthLoCut 0.01 newdef Xi(1690)-:WidthUpCut 0.1 create ThePEG::ParticleData Xibar(1690)+ setup Xibar(1690)+ -13312 Xibar(1690)+ 1.69 0.01 0.085 0 3 0 2 0 makeanti Xibar(1690)+ Xi(1690)- newdef Xibar(1690)+:WidthLoCut 0.01 newdef Xibar(1690)+:WidthUpCut 0.1 # # the (70,1^-_1) 40 multiplet # create ThePEG::ParticleData Lambda(1670)0 setup Lambda(1670)0 33122 Lambda(1670)0 1.67 0.035 0.275 0 0 0 2 0 newdef Lambda(1670)0:WidthLoCut 0.068 newdef Lambda(1670)0:WidthUpCut 0.35 create ThePEG::ParticleData Lambdabar(1670)0 setup Lambdabar(1670)0 -33122 Lambdabar(1670)0 1.67 0.035 0.275 0 0 0 2 0 makeanti Lambdabar(1670)0 Lambda(1670)0 newdef Lambdabar(1670)0:WidthLoCut 0.2 newdef Lambdabar(1670)0:WidthUpCut 0.35 create ThePEG::ParticleData p(1535)+ setup p(1535)+ 22212 p(1535)+ 1.535 0.15 0.525 0 3 0 2 0 newdef p(1535)+:VariableRatio 1 newdef p(1535)+:WidthLoCut 0.45 newdef p(1535)+:WidthUpCut 0.6 create ThePEG::ParticleData pbar(1535) setup pbar(1535) -22212 pbar(1535) 1.535 0.15 0.525 0 -3 0 2 0 makeanti pbar(1535) p(1535)+ newdef pbar(1535):VariableRatio 1 newdef pbar(1535):WidthLoCut 0.45 newdef pbar(1535):WidthUpCut 0.6 create ThePEG::ParticleData n(1535)0 setup n(1535)0 22112 n(1535)0 1.535 0.15 0.525 0 0 0 2 0 newdef n(1535)0:VariableRatio 1 newdef n(1535)0:WidthLoCut 0.45 newdef n(1535)0:WidthUpCut 0.6 create ThePEG::ParticleData nbar(1535) setup nbar(1535) -22112 nbar(1535) 1.535 0.15 0.525 0 0 0 2 0 makeanti nbar(1535) n(1535)0 newdef nbar(1535):VariableRatio 1 newdef nbar(1535):WidthLoCut 0.45 newdef nbar(1535):WidthUpCut 0.6 create ThePEG::ParticleData Sigma(1750)- setup Sigma(1750)- 23112 Sigma(1750)- 1.75 0.09 0.35 0 -3 0 2 0 newdef Sigma(1750)-:VariableRatio 1 newdef Sigma(1750)-:WidthLoCut 0.25 newdef Sigma(1750)-:WidthUpCut 0.45 create ThePEG::ParticleData Sigmabar(1750)+ setup Sigmabar(1750)+ -23112 Sigmabar(1750)+ 1.75 0.09 0.35 0 3 0 2 0 makeanti Sigmabar(1750)+ Sigma(1750)- newdef Sigmabar(1750)+:VariableRatio 1 newdef Sigmabar(1750)+:WidthLoCut 0.25 newdef Sigmabar(1750)+:WidthUpCut 0.45 create ThePEG::ParticleData Sigma(1750)0 setup Sigma(1750)0 23212 Sigma(1750)0 1.75 0.09 0.35 0 0 0 2 0 newdef Sigma(1750)0:VariableRatio 1 newdef Sigma(1750)0:WidthLoCut 0.25 newdef Sigma(1750)0:WidthUpCut 0.45 create ThePEG::ParticleData Sigmabar(1750)0 setup Sigmabar(1750)0 -23212 Sigmabar(1750)0 1.75 0.09 0.35 0 0 0 2 0 makeanti Sigmabar(1750)0 Sigma(1750)0 newdef Sigmabar(1750)0:VariableRatio 1 newdef Sigmabar(1750)0:WidthLoCut 0.25 newdef Sigmabar(1750)0:WidthUpCut 0.45 create ThePEG::ParticleData Sigma(1750)+ setup Sigma(1750)+ 23222 Sigma(1750)+ 1.75 0.09 0.35 0 3 0 2 0 newdef Sigma(1750)+:VariableRatio 1 newdef Sigma(1750)+:WidthLoCut 0.25 newdef Sigma(1750)+:WidthUpCut 0.45 create ThePEG::ParticleData Sigmabar(1750)- setup Sigmabar(1750)- -23222 Sigmabar(1750)- 1.75 0.09 0.35 0 -3 0 2 0 makeanti Sigmabar(1750)- Sigma(1750)+ newdef Sigmabar(1750)-:VariableRatio 1 newdef Sigmabar(1750)-:WidthLoCut 0.25 newdef Sigmabar(1750)-:WidthUpCut 0.45 create ThePEG::ParticleData Xi(1950)- setup Xi(1950)- 23312 Xi(1950)- 1.959 0.06 0.465 0 -3 0 2 0 newdef Xi(1950)-:WidthLoCut 0.33 newdef Xi(1950)-:WidthUpCut 0.6 create ThePEG::ParticleData Xibar(1950)+ setup Xibar(1950)+ -23312 Xibar(1950)+ 1.95 0.06 0.465 0 3 0 2 0 makeanti Xibar(1950)+ Xi(1950)- newdef Xibar(1950)+:WidthLoCut 0.33 newdef Xibar(1950)+:WidthUpCut 0.6 create ThePEG::ParticleData Xi(1950)0 setup Xi(1950)0 23322 Xi(1950)0 1.959 0.06 0.465 0 0 0 2 0 newdef Xi(1950)0:WidthLoCut 0.33 newdef Xi(1950)0:WidthUpCut 0.6 create ThePEG::ParticleData Xibar(1950)0 setup Xibar(1950)0 -23322 Xibar(1950)0 1.959 0.06 0.465 0 0 0 2 0 makeanti Xibar(1950)0 Xi(1950)0 newdef Xibar(1950)0:WidthLoCut 0.33 newdef Xibar(1950)0:WidthUpCut 0.6 # # the (70,1^-_1) 40 multiplet # create ThePEG::ParticleData Lambda(1690)0 setup Lambda(1690)0 13124 Lambda(1690)0 1.69 0.06 0.24 0 0 0 4 0 create ThePEG::ParticleData Lambdabar(1690)0 setup Lambdabar(1690)0 -13124 Lambdabar(1690)0 1.69 0.06 0.24 0 0 0 4 0 makeanti Lambdabar(1690)0 Lambda(1690)0 create ThePEG::ParticleData p(1520)+ setup p(1520)+ 2124 p(1520)+ 1.52 0.12 0.52 0 3 0 4 0 newdef p(1520)+:VariableRatio 1 newdef p(1520)+:WidthLoCut 0.44 newdef p(1520)+:WidthUpCut 0.6 create ThePEG::ParticleData pbar(1520)- setup pbar(1520)- -2124 pbar(1520)- 1.52 0.12 0.52 0 -3 0 4 0 makeanti pbar(1520)- p(1520)+ newdef pbar(1520)-:VariableRatio 1 newdef pbar(1520)-:WidthLoCut 0.44 newdef pbar(1520)-:WidthUpCut 0.6 create ThePEG::ParticleData n(1520)0 setup n(1520)0 1214 n(1520)0 1.52 0.12 0.52 0 0 0 4 0 newdef n(1520)0:VariableRatio 1 newdef n(1520)0:WidthLoCut 0.44 newdef n(1520)0:WidthUpCut 0.6 create ThePEG::ParticleData nbar(1520)0 setup nbar(1520)0 -1214 nbar(1520)0 1.52 0.12 0.52 0 0 0 4 0 makeanti nbar(1520)0 n(1520)0 newdef nbar(1520)0:VariableRatio 1 newdef nbar(1520)0:WidthLoCut 0.44 newdef nbar(1520)0:WidthUpCut 0.6 create ThePEG::ParticleData Sigma(1670)- setup Sigma(1670)- 13114 Sigma(1670)- 1.67 0.06 0.3 0 -3 0 4 0 create ThePEG::ParticleData Sigmabar(1670)+ setup Sigmabar(1670)+ -13114 Sigmabar(1670)+ 1.67 0.06 0.3 0 3 0 4 0 makeanti Sigmabar(1670)+ Sigma(1670)- create ThePEG::ParticleData Sigma(1670)0 setup Sigma(1670)0 13214 Sigma(1670)0 1.67 0.06 0.3 0 0 0 4 0 create ThePEG::ParticleData Sigmabar(1670)0 setup Sigmabar(1670)0 -13214 Sigmabar(1670)0 1.67 0.06 0.3 0 0 0 4 0 makeanti Sigmabar(1670)0 Sigma(1670)0 create ThePEG::ParticleData Sigma(1670)+ setup Sigma(1670)+ 13224 Sigma(1670)+ 1.67 0.06 0.3 0 3 0 4 0 create ThePEG::ParticleData Sigmabar(1670)- setup Sigmabar(1670)- -13224 Sigmabar(1670)- 1.67 0.06 0.3 0 -3 0 4 0 makeanti Sigmabar(1670)- Sigma(1670)+ create ThePEG::ParticleData Xi(1820)- setup Xi(1820)- 13314 Xi(1820)- 1.823 0.024 0.12 0 -3 0 4 0 create ThePEG::ParticleData Xibar(1820)+ setup Xibar(1820)+ -13314 Xibar(1820)+ 1.823 0.024 0.12 0 3 0 4 0 makeanti Xibar(1820)+ Xi(1820)- create ThePEG::ParticleData Xi(1820)0 setup Xi(1820)0 13324 Xi(1820)0 1.823 0.024 0.12 0 0 0 4 0 create ThePEG::ParticleData Xibar(1820)0 setup Xibar(1820)0 -13324 Xibar(1820)0 1.823 0.024 0.12 0 0 0 4 0 makeanti Xibar(1820)0 Xi(1820)0 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/QEDRadiation.in����������������������������������������������������0000644�0001750�0001750�00000001602�11754474774�022170� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������########################################################### # Setup of QED corrections to decays (hep-ph/0603034) # # No user switches here, but the QEDRadiationHandler is not # inserted into the list of handlers by default. # (look for QEDRadiationHandler in HerwigDefaults.in) ########################################################### mkdir /Herwig/QEDRadiation cd /Herwig/QEDRadiation # create the dipoles create Herwig::FFDipole FFDipole HwSOPHTY.so create Herwig::IFDipole IFDipole HwSOPHTY.so # create the DecayRadiationHandler create Herwig::SOPHTY SOPHTY # assigned the dipoles to the decay radiation handler newdef SOPHTY:FFDipole FFDipole newdef SOPHTY:IFDipole IFDipole # create the QEDRadiation handler create Herwig::QEDRadiationHandler QEDRadiationHandler # assign the decay radiation handler to the QEDRadiationHandler newdef QEDRadiationHandler:RadiationGenerator SOPHTY ������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/lepton_decays.in���������������������������������������������������0000644�0001750�0001750�00000013133�11754474774�022557� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # file containing the decays for the leptons # # # decaymode mu-->e-,nu_ebar,nu_mu; 1 1 /Herwig/Decays/DecayME100 # decaymode mu+->e+,nu_e,nu_mubar; 1 1 /Herwig/Decays/DecayME100 # # decaymode tau+->pi+,pi0,nu_taubar; 0.25489 1 /Herwig/Decays/Tau2Meson decaymode tau+->e+,nu_e,nu_taubar; 0.178345 1 /Herwig/Decays/Tau2Leptons decaymode tau+->mu+,nu_mu,nu_taubar; 0.173545 1 /Herwig/Decays/Tau2Leptons decaymode tau+->pi+,nu_taubar; 0.108924 1 /Herwig/Decays/Tau1Meson decaymode tau+->pi+,pi0,pi0,nu_taubar; 0.09237 1 /Herwig/Decays/Tau3Pion decaymode tau+->pi+,pi-,pi+,nu_taubar; 0.089813 1 /Herwig/Decays/Tau3Pion decaymode tau+->pi+,pi-,pi+,pi0,nu_taubar; 0.044435 1 /Herwig/Decays/Tau4Pion decaymode tau+->pi+,pi0,pi0,pi0,nu_taubar; 0.010313 1 /Herwig/Decays/Tau4Pion decaymode tau+->K0,pi+,nu_taubar; 0.008957 1 /Herwig/Decays/TauKPi decaymode tau+->K+,nu_taubar; 0.006885 1 /Herwig/Decays/Tau1Meson decaymode tau+->pi+,pi+,pi-,pi0,pi0,nu_taubar; 0.004935 1 /Herwig/Decays/Tau5Pion decaymode tau+->K+,pi0,nu_taubar; 0.004491 1 /Herwig/Decays/TauKPi decaymode tau+->K0,pi+,pi0,nu_taubar; 0.003757 1 /Herwig/Decays/Tau3Kaon decaymode tau+->K+,pi+,pi-,nu_taubar; 0.003292 1 /Herwig/Decays/Tau3Kaon decaymode tau+->pi+,pi0,gamma,nu_taubar; 0.001762 1 /Herwig/Decays/Tau2MesonPhoton decaymode tau+->eta,pi+,pi0,nu_taubar; 0.001744 1 /Herwig/Decays/Tau3Meson decaymode tau+->K+,K-,pi+,nu_taubar; 0.001519 1 /Herwig/Decays/Tau3Kaon decaymode tau+->K+,Kbar0,pi0,nu_taubar; 0.001518 1 /Herwig/Decays/Tau3Kaon decaymode tau+->K+,Kbar0,nu_taubar; 0.001513 1 /Herwig/Decays/Tau2Meson decaymode tau+->K_L0,K_S0,pi+,nu_taubar; 0.001087 1 /Herwig/Decays/Tau3Kaon decaymode tau+->pi+,pi0,pi0,pi0,pi0,nu_taubar; 0.000957 1 /Herwig/Decays/Tau5Pion decaymode tau+->pi+,pi+,pi+,pi-,pi-,nu_taubar; 0.000834 1 /Herwig/Decays/Tau5Pion decaymode tau+->K+,pi0,pi0,nu_taubar; 0.000555 1 /Herwig/Decays/Tau3Kaon decaymode tau+->K+,omega,nu_taubar; 0.0004 1 /Herwig/Decays/DecayME0 decaymode tau+->K+,pi0,pi0,pi0,nu_taubar; 0.000397 1 /Herwig/Decays/Mambo decaymode tau+->K+,pi-,pi+,pi0,nu_taubar; 0.000307 1 /Herwig/Decays/Mambo decaymode tau+->Kbar0,K0,pi+,pi0,nu_taubar; 0.000297 1 /Herwig/Decays/Mambo decaymode tau+->eta,K*+,nu_taubar; 0.00028 1 /Herwig/Decays/DecayME0 decaymode tau+->eta,K+,nu_taubar; 0.000263 1 /Herwig/Decays/Tau2Meson decaymode tau+->K0,pi+,pi0,pi0,nu_taubar; 0.000238 1 /Herwig/Decays/Mambo decaymode tau+->K_L0,K_L0,pi+,nu_taubar; 0.000235 1 /Herwig/Decays/Tau3Kaon decaymode tau+->K_S0,K_S0,pi+,nu_taubar; 0.000235 1 /Herwig/Decays/Tau3Kaon decaymode tau+->eta,pi+,pi+,pi-,nu_taubar; 0.000225 1 /Herwig/Decays/Mambo decaymode tau+->K0,pi+,pi+,pi-,nu_taubar; 0.000225 1 /Herwig/Decays/Mambo decaymode tau+->eta,pi+,pi0,pi0,nu_taubar; 0.000145 1 /Herwig/Decays/Mambo decaymode tau+->omega,pi+,pi0,pi0,nu_taubar; 0.000135 1 /Herwig/Decays/Mambo decaymode tau+->omega,pi+,pi+,pi-,nu_taubar; 0.000118 1 /Herwig/Decays/Mambo decaymode tau+->K+,K-,pi+,pi0,nu_taubar; 5.9E-5 1 /Herwig/Decays/Mambo # decaymode tau-->pi-,pi0,nu_tau; 0.25489 1 /Herwig/Decays/Tau2Meson decaymode tau-->e-,nu_ebar,nu_tau; 0.178345 1 /Herwig/Decays/Tau2Leptons decaymode tau-->mu-,nu_mubar,nu_tau; 0.173545 1 /Herwig/Decays/Tau2Leptons decaymode tau-->pi-,nu_tau; 0.108924 1 /Herwig/Decays/Tau1Meson decaymode tau-->pi-,pi0,pi0,nu_tau; 0.09237 1 /Herwig/Decays/Tau3Pion decaymode tau-->pi-,pi+,pi-,nu_tau; 0.089813 1 /Herwig/Decays/Tau3Pion decaymode tau-->pi-,pi+,pi-,pi0,nu_tau; 0.044435 1 /Herwig/Decays/Tau4Pion decaymode tau-->pi-,pi0,pi0,pi0,nu_tau; 0.010313 1 /Herwig/Decays/Tau4Pion decaymode tau-->Kbar0,pi-,nu_tau; 0.008957 1 /Herwig/Decays/TauKPi decaymode tau-->K-,nu_tau; 0.006885 1 /Herwig/Decays/Tau1Meson decaymode tau-->pi-,pi-,pi+,pi0,pi0,nu_tau; 0.004935 1 /Herwig/Decays/Tau5Pion decaymode tau-->K-,pi0,nu_tau; 0.004491 1 /Herwig/Decays/TauKPi decaymode tau-->Kbar0,pi-,pi0,nu_tau; 0.003757 1 /Herwig/Decays/Tau3Kaon decaymode tau-->K-,pi-,pi+,nu_tau; 0.003292 1 /Herwig/Decays/Tau3Kaon decaymode tau-->pi-,pi0,gamma,nu_tau; 0.001762 1 /Herwig/Decays/Tau2MesonPhoton decaymode tau-->eta,pi-,pi0,nu_tau; 0.001744 1 /Herwig/Decays/Tau3Meson decaymode tau-->K-,K+,pi-,nu_tau; 0.001519 1 /Herwig/Decays/Tau3Kaon decaymode tau-->K-,K0,pi0,nu_tau; 0.001518 1 /Herwig/Decays/Tau3Kaon decaymode tau-->K-,K0,nu_tau; 0.001513 1 /Herwig/Decays/Tau2Meson decaymode tau-->K_L0,K_S0,pi-,nu_tau; 0.001087 1 /Herwig/Decays/Tau3Kaon decaymode tau-->pi-,pi0,pi0,pi0,pi0,nu_tau; 0.000957 1 /Herwig/Decays/Tau5Pion decaymode tau-->pi-,pi-,pi-,pi+,pi+,nu_tau; 0.000834 1 /Herwig/Decays/Tau5Pion decaymode tau-->K-,pi0,pi0,nu_tau; 0.000555 1 /Herwig/Decays/Tau3Kaon decaymode tau-->K-,omega,nu_tau; 0.0004 1 /Herwig/Decays/DecayME0 decaymode tau-->K-,pi0,pi0,pi0,nu_tau; 0.000397 1 /Herwig/Decays/Mambo decaymode tau-->K-,pi+,pi-,pi0,nu_tau; 0.000307 1 /Herwig/Decays/Mambo decaymode tau-->K0,Kbar0,pi-,pi0,nu_tau; 0.000297 1 /Herwig/Decays/Mambo decaymode tau-->eta,K*-,nu_tau; 0.00028 1 /Herwig/Decays/DecayME0 decaymode tau-->eta,K-,nu_tau; 0.000263 1 /Herwig/Decays/Tau2Meson decaymode tau-->Kbar0,pi-,pi0,pi0,nu_tau; 0.000238 1 /Herwig/Decays/Mambo decaymode tau-->K_L0,K_L0,pi-,nu_tau; 0.000235 1 /Herwig/Decays/Tau3Kaon decaymode tau-->K_S0,K_S0,pi-,nu_tau; 0.000235 1 /Herwig/Decays/Tau3Kaon decaymode tau-->Kbar0,pi-,pi-,pi+,nu_tau; 0.000225 1 /Herwig/Decays/Mambo decaymode tau-->eta,pi-,pi-,pi+,nu_tau; 0.000225 1 /Herwig/Decays/Mambo decaymode tau-->eta,pi-,pi0,pi0,nu_tau; 0.000145 1 /Herwig/Decays/Mambo decaymode tau-->omega,pi-,pi0,pi0,nu_tau; 0.000135 1 /Herwig/Decays/Mambo decaymode tau-->omega,pi-,pi-,pi+,nu_tau; 0.000118 1 /Herwig/Decays/Mambo decaymode tau-->K-,K+,pi-,pi0,nu_tau; 5.9E-5 1 /Herwig/Decays/Mambo # # # # # # �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/HerwigDefaults.in��������������������������������������������������0000644�0001750�0001750�00000020324�11756407405�022630� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################################### # # This is the main repository setup file for Herwig++. # # It is read using the 'Herwig++ init' command which prepares the # default repository file 'HerwigDefaults.rpo'. # # The 'Herwig++ read' step allows additional configuration # instructions to be read from a run-specific file, to modify the # default values. (We provide LEP.in, ILC.in, LHC.in and TVT.in as # examples) # # You will not need to change any settings here. # Any modifications can be made in your own input files. # ################################################################### globallibrary Herwig.so ################################################################### # The repository contains its own internal directory structure to # keep track of created objects. (This is entirely independent of # the file system) ################################################################### globallibrary Herwig.so # Make the root directory in the Repository rrmdir /Herwig mkdir /Herwig ##################################################################### # The 'create' command creates an object in the repository from # a C++ class. The arguments are (1) the C++ class name, (2) your # chosen repository name, and optionally, (3) the library name where # the class can be found. # # Created objects are _not_ automatically associated to a run. They # need to be assigned to it using a chain of 'set' or 'insert' # commands (see below). ##################################################################### # the default random number generator create ThePEG::StandardRandom /Herwig/Random # the default phase space sampler create ThePEG::ACDCSampler /Herwig/ACDCSampler ACDCSampler.so ##################################################################### # Objects in the repository are influenced through 'interfaces'. # The most important ones can be found in these files, and the # doxygen documentation provides complete lists. # # To set an interface to a new value, use the 'set' command: # set object:interface value # # Note that only repository names can be used here. You must 'create' # objects before you can use them in a 'set' command ##################################################################### newdef /Herwig/ACDCSampler:Margin 1.1 ################################################################### # The 'read' command includes external files in place, to reduce # clutter. You can also use it for blocks of settings you're likely # to use again and again. ################################################################### read Particles.in read QEDRadiation.in read Model.in read Partons.in read UnderlyingEvent.in read Shower.in read MatrixElements.in read Hadronization.in read Decays.in read BSM.in ####################################################################### # The EventHandler is the most important object in a run. It # (directly or indirectly) owns most of the objects that have been # created up to now. # # Below we create one handler for LEP and one for LHC. # # Try to understand the following few lines (also look at the external # .in files if you can't find the 'create' line for an object). # # If you need to make modifications, it's best to make them in your # own input file (for the 'Herwig++ read' step) and not here. ####################################################################### mkdir /Herwig/EventHandlers cd /Herwig/EventHandlers # Create LEPHandler create ThePEG::StandardEventHandler LEPHandler create ThePEG::FixedCMSLuminosity FixedLEPLuminosity FixedCMSLuminosity.so newdef FixedLEPLuminosity:Energy 91.2 newdef LEPHandler:LuminosityFunction FixedLEPLuminosity insert LEPHandler:SubProcessHandlers[0] /Herwig/MatrixElements/SimpleEE newdef LEPHandler:BeamA /Herwig/Particles/e- newdef LEPHandler:BeamB /Herwig/Particles/e+ newdef LEPHandler:Sampler /Herwig/ACDCSampler newdef LEPHandler:CascadeHandler /Herwig/Shower/ShowerHandler newdef LEPHandler:HadronizationHandler /Herwig/Hadronization/ClusterHadHandler newdef LEPHandler:DecayHandler /Herwig/Decays/DecayHandler # spin correlations for perturbative decays (in same step so shower works) insert LEPHandler:PreCascadeHandlers 0 /Herwig/NewPhysics/DecayHandler # QED radiation off Z decay products in hard process insert LEPHandler:PostSubProcessHandlers 0 /Herwig/QEDRadiation/QEDRadiationHandler # Create LHCHandler create ThePEG::StandardEventHandler LHCHandler create ThePEG::FixedCMSLuminosity FixedLHCLuminosity newdef FixedLHCLuminosity:Energy 8000.0 newdef LHCHandler:LuminosityFunction FixedLHCLuminosity insert LHCHandler:SubProcessHandlers[0] /Herwig/MatrixElements/SimpleQCD newdef LHCHandler:BeamA /Herwig/Particles/p+ newdef LHCHandler:BeamB /Herwig/Particles/p+ newdef LHCHandler:Sampler /Herwig/ACDCSampler newdef LHCHandler:BinStrategy 2 newdef LHCHandler:CascadeHandler /Herwig/Shower/ShowerHandler newdef LHCHandler:HadronizationHandler /Herwig/Hadronization/ClusterHadHandler newdef LHCHandler:DecayHandler /Herwig/Decays/DecayHandler # spin correlations for perturbative decays (in same step so shower works) insert LHCHandler:PreCascadeHandlers 0 /Herwig/NewPhysics/DecayHandler # QED radiation off W/Z decay products in hard process insert LHCHandler:PostSubProcessHandlers[0] /Herwig/QEDRadiation/QEDRadiationHandler # Create DISHandler create ThePEG::StandardEventHandler DISHandler create ThePEG::LuminosityFunction DISLuminosity newdef DISHandler:BeamA /Herwig/Particles/p+ newdef DISLuminosity:BeamEMaxA 920.*GeV newdef DISHandler:BeamB /Herwig/Particles/e- newdef DISLuminosity:BeamEMaxB 30.*GeV newdef DISHandler:LuminosityFunction DISLuminosity insert DISHandler:SubProcessHandlers[0] /Herwig/MatrixElements/SimpleDIS newdef DISHandler:Sampler /Herwig/ACDCSampler newdef DISHandler:BinStrategy 2 newdef DISHandler:CascadeHandler /Herwig/Shower/ShowerHandler newdef DISHandler:HadronizationHandler /Herwig/Hadronization/ClusterHadHandler newdef DISHandler:DecayHandler /Herwig/Decays/DecayHandler mkdir /Herwig/Generators cd /Herwig/Generators ################################################################# # Finally, the EventGenerator objects are responsible # for the run. They tie together an EventHandler on the one side # with a physics model (Feynman rules, etc) and random number # generator on the other. # # In your own input files, it will be this EventGenerator object # that will be called with the 'run' command to start the event # generation (see LEP.in, LHC.in, TVT.in or LHC.in for examples) ################################################################# # The Strategy objects can be used for default settings # (see the Doxygen documentation) # Currently it only provides the LaTeX reference to Herwig++ create Herwig::HerwigStrategy DefaultStrategy # set DefaultStrategy:LocalParticlesDir /Herwig/Particles insert DefaultStrategy:DefaultParticlesDirs[0] /Herwig/Particles # Now the LEPGenerator create ThePEG::EventGenerator LEPGenerator newdef LEPGenerator:RandomNumberGenerator /Herwig/Random newdef LEPGenerator:StandardModelParameters /Herwig/Model newdef LEPGenerator:EventHandler /Herwig/EventHandlers/LEPHandler newdef LEPGenerator:Strategy DefaultStrategy newdef LEPGenerator:DumpPeriod -1 # And the LHCGenerator create ThePEG::EventGenerator LHCGenerator newdef LHCGenerator:RandomNumberGenerator /Herwig/Random newdef LHCGenerator:StandardModelParameters /Herwig/Model newdef LHCGenerator:EventHandler /Herwig/EventHandlers/LHCHandler newdef LHCGenerator:Strategy DefaultStrategy newdef LHCGenerator:DumpPeriod -1 # And the DISGenerator create ThePEG::EventGenerator DISGenerator newdef DISGenerator:RandomNumberGenerator /Herwig/Random newdef DISGenerator:StandardModelParameters /Herwig/Model newdef DISGenerator:EventHandler /Herwig/EventHandlers/DISHandler newdef DISGenerator:Strategy DefaultStrategy newdef DISGenerator:DumpPeriod -1 ############################################ # The default cuts ############################################ read Cuts.in cd /Herwig/Generators newdef LEPGenerator:EventHandler:Cuts /Herwig/Cuts/EECuts newdef LHCGenerator:EventHandler:Cuts /Herwig/Cuts/QCDCuts newdef DISGenerator:EventHandler:Cuts /Herwig/Cuts/DISCuts ########################################## # include some default analysis handlers ########################################## read Analysis.in cd / ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/diquarks.in��������������������������������������������������������0000644�0001750�0001750�00000012605�11754474774�021554� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # file containing the particle data for the diquarks # create ThePEG::ConstituentParticleData dd_1 setup dd_1 1103 dd_1 0.65 0. 0 0 -2 -3 3 1 0.65 create ThePEG::ConstituentParticleData dd_1bar setup dd_1bar -1103 dd_1bar 0.65 0. 0 0 2 3 3 1 0.65 makeanti dd_1bar dd_1 create ThePEG::ConstituentParticleData ud_0bar setup ud_0bar -2101 ud_0bar 0.65 0. 0 0 -1 3 1 1 0.65 create ThePEG::ConstituentParticleData ud_1bar setup ud_1bar -2103 ud_1bar 0.65 0. 0 0 -1 3 3 1 0.65 create ThePEG::ConstituentParticleData ud_1 setup ud_1 2103 ud_1 0.65 0. 0 0 1 -3 3 1 0.65 makeanti ud_1 ud_1bar create ThePEG::ConstituentParticleData ud_0 setup ud_0 2101 ud_0 0.65 0. 0 0 1 -3 1 1 0.65 makeanti ud_0 ud_0bar create ThePEG::ConstituentParticleData uu_1 setup uu_1 2203 uu_1 0.65 0. 0 0 4 -3 3 1 0.65 create ThePEG::ConstituentParticleData uu_1bar setup uu_1bar -2203 uu_1bar 0.65 0. 0 0 -4 3 3 1 0.65 makeanti uu_1bar uu_1 create ThePEG::ConstituentParticleData sd_0bar setup sd_0bar -3101 sd_0bar 0.825 0. 0 0 2 3 1 1 0.825 create ThePEG::ConstituentParticleData sd_0 setup sd_0 3101 sd_0 0.825 0. 0 0 -2 -3 1 1 0.825 makeanti sd_0 sd_0bar create ThePEG::ConstituentParticleData sd_1 setup sd_1 3103 sd_1 0.825 0. 0 0 -2 -3 3 1 0.825 create ThePEG::ConstituentParticleData sd_1bar setup sd_1bar -3103 sd_1bar 0.825 0. 0 0 2 3 3 1 0.825 makeanti sd_1bar sd_1 create ThePEG::ConstituentParticleData su_0bar setup su_0bar -3201 su_0bar 0.825 0. 0 0 -1 3 1 1 0.825 create ThePEG::ConstituentParticleData su_0 setup su_0 3201 su_0 0.825 0. 0 0 1 -3 1 1 0.825 makeanti su_0 su_0bar create ThePEG::ConstituentParticleData su_1 setup su_1 3203 su_1 0.825 0. 0 0 1 -3 3 1 0.825 create ThePEG::ConstituentParticleData su_1bar setup su_1bar -3203 su_1bar 0.825 0. 0 0 -1 3 3 1 0.825 makeanti su_1bar su_1 create ThePEG::ConstituentParticleData ss_1bar setup ss_1bar -3303 ss_1bar 1 0. 0 0 2 3 3 1 1 create ThePEG::ConstituentParticleData ss_1 setup ss_1 3303 ss_1 1 0. 0 0 -2 -3 3 1 1 makeanti ss_1 ss_1bar create ThePEG::ConstituentParticleData cd_0 setup cd_0 4101 cd_0 1.925 0. 0 0 1 -3 1 1 1.925 create ThePEG::ConstituentParticleData cd_0bar setup cd_0bar -4101 cd_0bar 1.925 0. 0 0 -1 3 1 1 1.925 makeanti cd_0bar cd_0 create ThePEG::ConstituentParticleData cd_1bar setup cd_1bar -4103 cd_1bar 1.925 0. 0 0 -1 3 3 1 1.925 create ThePEG::ConstituentParticleData cd_1 setup cd_1 4103 cd_1 1.925 0. 0 0 1 -3 3 1 1.925 makeanti cd_1 cd_1bar create ThePEG::ConstituentParticleData cu_0 setup cu_0 4201 cu_0 1.925 0. 0 0 4 -3 1 1 1.925 create ThePEG::ConstituentParticleData cu_0bar setup cu_0bar -4201 cu_0bar 1.925 0. 0 0 -4 3 1 1 1.925 makeanti cu_0bar cu_0 create ThePEG::ConstituentParticleData cu_1bar setup cu_1bar -4203 cu_1bar 1.925 0. 0 0 -4 3 3 1 1.925 create ThePEG::ConstituentParticleData cu_1 setup cu_1 4203 cu_1 1.925 0. 0 0 4 -3 3 1 1.925 makeanti cu_1 cu_1bar create ThePEG::ConstituentParticleData cs_0 setup cs_0 4301 cs_0 2.1 0. 0 0 1 -3 1 1 2.1 create ThePEG::ConstituentParticleData cs_0bar setup cs_0bar -4301 cs_0bar 2.1 0. 0 0 -1 3 1 1 2.1 makeanti cs_0bar cs_0 create ThePEG::ConstituentParticleData cs_1bar setup cs_1bar -4303 cs_1bar 2.1 0. 0 0 -1 3 3 1 2.1 create ThePEG::ConstituentParticleData cs_1 setup cs_1 4303 cs_1 2.1 0. 0 0 1 -3 3 1 2.1 makeanti cs_1 cs_1bar create ThePEG::ConstituentParticleData cc_1 setup cc_1 4403 cc_1 3.2 0. 0 0 4 -3 3 1 3.2 create ThePEG::ConstituentParticleData cc_1bar setup cc_1bar -4403 cc_1bar 3.2 0. 0 0 -4 -3 3 1 3.2 makeanti cc_1bar cc_1 create ThePEG::ConstituentParticleData bd_0bar setup bd_0bar -5101 bd_0bar 5.325 0. 0 0 2 -3 1 1 5.325 create ThePEG::ConstituentParticleData bd_0 setup bd_0 5101 bd_0 5.325 0. 0 0 -2 -3 1 1 5.325 makeanti bd_0 bd_0bar create ThePEG::ConstituentParticleData bd_1 setup bd_1 5103 bd_1 5.325 0. 0 0 -2 -3 3 1 5.325 create ThePEG::ConstituentParticleData bd_1bar setup bd_1bar -5103 bd_1bar 5.325 0. 0 0 2 3 3 1 5.325 makeanti bd_1bar bd_1 create ThePEG::ConstituentParticleData bu_0bar setup bu_0bar -5201 bu_0bar 5.325 0. 0 0 -1 3 1 1 5.325 create ThePEG::ConstituentParticleData bu_1bar setup bu_1bar -5203 bu_1bar 5.325 0. 0 0 -1 3 3 1 5.325 create ThePEG::ConstituentParticleData bu_1 setup bu_1 5203 bu_1 5.325 0. 0 0 1 -3 3 1 5.325 makeanti bu_1 bu_1bar create ThePEG::ConstituentParticleData bu_0 setup bu_0 5201 bu_0 5.325 0. 0 0 1 -3 1 1 5.325 makeanti bu_0 bu_0bar create ThePEG::ConstituentParticleData bs_0 setup bs_0 5301 bs_0 5.5 0. 0 0 -2 -3 1 1 5.5 create ThePEG::ConstituentParticleData bs_1 setup bs_1 5303 bs_1 5.5 0. 0 0 -2 -3 3 1 5.5 create ThePEG::ConstituentParticleData bs_1bar setup bs_1bar -5303 bs_1bar 5.5 0. 0 0 2 3 3 1 5.5 makeanti bs_1bar bs_1 create ThePEG::ConstituentParticleData bs_0bar setup bs_0bar -5301 bs_0bar 5.5 0. 0 0 2 3 1 1 5.5 makeanti bs_0bar bs_0 create ThePEG::ConstituentParticleData bc_0bar setup bc_0bar -5401 bc_0bar 6.6 0. 0 0 -1 3 1 1 6.6 create ThePEG::ConstituentParticleData bc_1bar setup bc_1bar -5403 bc_1bar 6.6 0. 0 0 -1 3 3 1 6.6 create ThePEG::ConstituentParticleData bc_1 setup bc_1 5403 bc_1 6.6 0. 0 0 1 -3 3 1 6.6 makeanti bc_1 bc_1bar create ThePEG::ConstituentParticleData bc_0 setup bc_0 5401 bc_0 6.6 0. 0 0 1 -3 1 1 6.6 makeanti bc_0 bc_0bar create ThePEG::ConstituentParticleData bb_1 setup bb_1 5503 bb_1 10 0. 0 0 -2 -3 3 1 10 create ThePEG::ConstituentParticleData bb_1bar setup bb_1bar -5503 bb_1bar 10 0. 0 0 2 3 3 1 10 makeanti bb_1bar bb_1 ���������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/BSM.in�������������������������������������������������������������0000644�0001750�0001750�00000014034�11754474774�020350� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################# # 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 create Herwig::HiggsVBFProcessConstructor HiggsVBFConstructor create Herwig::QQHiggsProcessConstructor QQHiggsConstructor create Herwig::DecayConstructor DecayConstructor newdef DecayConstructor:QEDGenerator /Herwig/QEDRadiation/SOPHTY create Herwig::TwoBodyDecayConstructor TwoBodyDC create Herwig::ThreeBodyDecayConstructor ThreeBodyDC 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/Tau2MesonCurrent 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/Tau3KaonCurrent insert WeakDecayConstructor:DecayModes 0 K0,pi+,pi0; insert WeakDecayConstructor:Normalisation 0 0.380268556539 # K+,pi+,pi- insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau3KaonCurrent insert WeakDecayConstructor:DecayModes 0 K+,pi+,pi-; insert WeakDecayConstructor:Normalisation 0 0.407904176498 # K+,K-,pi+ insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau3KaonCurrent insert WeakDecayConstructor:DecayModes 0 K+,K-,pi+; insert WeakDecayConstructor:Normalisation 0 0.727416124384 # K+,Kbar0,pi0 insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau3KaonCurrent insert WeakDecayConstructor:DecayModes 0 K+,Kbar0,pi0; insert WeakDecayConstructor:Normalisation 0 0.945076580717 # K_L0,K_S0,pi+ insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau3KaonCurrent 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/Tau3MesonCurrent insert WeakDecayConstructor:DecayModes 0 eta,pi+,pi0; insert WeakDecayConstructor:Normalisation 0 0.880539616307 # K+,Kbar0 insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau2MesonCurrent insert WeakDecayConstructor:DecayModes 0 K+,Kbar0; insert WeakDecayConstructor:Normalisation 0 1.62501804004 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 # Required to decay the particles before showering so as to keep # the spin correlations in the decay create Herwig::HwDecayHandler DecayHandler newdef DecayHandler:NewStep No insert DecayHandler:Excluded 0 /Herwig/Particles/tau- insert DecayHandler:Excluded 1 /Herwig/Particles/tau+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/Hadronization.in���������������������������������������������������0000644�0001750�0001750�00000007410�11754474774�022540� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������############################################################ # Setup of default hadronization # # There are no user servicable parts inside. # # Anything that follows below should only be touched if you # know what you're doing. ############################################################# cd /Herwig/Particles create ThePEG::ParticleData Cluster setup Cluster 81 Cluster 0.00990 0.0 0.0 0.0 0 0 0 0 create ThePEG::ParticleData Remnant setup Remnant 82 Remnant 0.00990 0.0 0.0 0.0 0 0 0 0 mkdir /Herwig/Hadronization cd /Herwig/Hadronization create Herwig::ClusterHadronizationHandler ClusterHadHandler create Herwig::PartonSplitter PartonSplitter create Herwig::ClusterFinder ClusterFinder create Herwig::ColourReconnector ColourReconnector create Herwig::ClusterFissioner ClusterFissioner create Herwig::LightClusterDecayer LightClusterDecayer create Herwig::ClusterDecayer ClusterDecayer create Herwig::HwppSelector HadronSelector newdef ClusterHadHandler:PartonSplitter PartonSplitter newdef ClusterHadHandler:ClusterFinder ClusterFinder newdef ClusterHadHandler:ColourReconnector ColourReconnector newdef ClusterHadHandler:ClusterFissioner ClusterFissioner newdef ClusterHadHandler:LightClusterDecayer LightClusterDecayer newdef ClusterHadHandler:ClusterDecayer ClusterDecayer newdef ClusterHadHandler:MinVirtuality2 0.1*GeV2 newdef ClusterHadHandler:MaxDisplacement 1.0e-10*millimeter newdef ClusterHadHandler:UnderlyingEventHandler NULL ################################################## # The UA5 soft underlying event model # (disabled by default) ################################################## create Herwig::UA5Handler UA5 HwUA5.so newdef UA5:ClusterFissioner ClusterFissioner newdef UA5:ClusterDecayer ClusterDecayer #set ClusterHadHandler:UnderlyingEventHandler UA5 ################################################## newdef ClusterFissioner:HadronSelector HadronSelector newdef LightClusterDecayer:HadronSelector HadronSelector newdef ClusterDecayer:HadronSelector HadronSelector newdef ColourReconnector:ColourReconnection Yes newdef ColourReconnector:ReconnectionProbability 0.54 newdef ColourReconnector:Algorithm Plain newdef ColourReconnector:InitialTemperature 0.01 newdef ColourReconnector:AnnealingFactor 0.21 newdef ColourReconnector:AnnealingSteps 10 newdef ColourReconnector:TriesPerStepFactor 0.66 # Clustering parameters for light quarks newdef ClusterFissioner:ClMaxLight 3.25*GeV newdef ClusterFissioner:ClPowLight 1.28 newdef ClusterFissioner:PSplitLight 1.14 newdef ClusterDecayer:ClDirLight 1 newdef ClusterDecayer:ClSmrLight 0.78 # Clustering parameters for b-quarks newdef ClusterFissioner:ClMaxBottom 3.2*GeV newdef ClusterFissioner:ClPowBottom 1.24 newdef ClusterFissioner:PSplitBottom 0.75 newdef ClusterDecayer:ClDirBottom 1 newdef ClusterDecayer:ClSmrBottom 0.00 newdef LightClusterDecayer:SingleHadronLimitBottom 0.12 # Clustering parameters for c-quarks newdef ClusterFissioner:ClMaxCharm 2.95*GeV newdef ClusterFissioner:ClPowCharm 1.52 newdef ClusterFissioner:PSplitCharm 1.11 newdef ClusterDecayer:ClDirCharm 1 newdef ClusterDecayer:ClSmrCharm 0.26 newdef LightClusterDecayer:SingleHadronLimitCharm 0.0 # Clustering parameters for exotic quarks # (e.g. hadronizing Susy particles) newdef ClusterFissioner:ClMaxExotic 2.7*GeV newdef ClusterFissioner:ClPowExotic 1.46 newdef ClusterFissioner:PSplitExotic 1.00 newdef ClusterDecayer:ClDirExotic 1 newdef ClusterDecayer:ClSmrExotic 0.78 newdef LightClusterDecayer:SingleHadronLimitExotic 0.1 # newdef HadronSelector:PwtDquark 1.0 newdef HadronSelector:PwtUquark 1.0 newdef HadronSelector:PwtSquark 0.68 newdef HadronSelector:PwtCquark 1.0 newdef HadronSelector:PwtBquark 1.0 newdef HadronSelector:PwtDIquark 0.49 newdef HadronSelector:SngWt 0.74 newdef HadronSelector:DecWt 0.62 newdef HadronSelector:Mode 1 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/meson_decays.in����������������������������������������������������0000644�0001750�0001750�00001256377�11754474774�022423� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # file containing the decays for the mesons # # # the 1^1S_0 multiplet # # decaymode pi+->mu+,nu_mu; 0.999877 1 /Herwig/Decays/PScalarlnu decaymode pi+->e+,nu_e; 0.000123 1 /Herwig/Decays/PScalarlnu # decaymode pi0->gamma,gamma; 0.987989 1 /Herwig/Decays/DecayME0 decaymode pi0->gamma,e-,e+; 0.01198 1 /Herwig/Decays/PVff decaymode pi0->e-,e+,e-,e+; 3.1E-5 1 /Herwig/Decays/PScalar4f # decaymode pi-->mu-,nu_mubar; 0.999877 1 /Herwig/Decays/PScalarlnu decaymode pi-->e-,nu_ebar; 0.000123 1 /Herwig/Decays/PScalarlnu # decaymode eta->gamma,gamma; 0.393818 1 /Herwig/Decays/PVV decaymode eta->pi0,pi0,pi0; 0.325114 1 /Herwig/Decays/Etapipipi decaymode eta->pi+,pi-,pi0; 0.22701 1 /Herwig/Decays/Etapipipi decaymode eta->pi+,pi-,gamma; 0.046902 1 /Herwig/Decays/Etapipigamma decaymode eta->e-,e+,gamma; 0.006 1 /Herwig/Decays/PVff decaymode eta->pi0,gamma,gamma; 0.00044 1 /Herwig/Decays/Etapigammagamma decaymode eta->pi+,pi-,e-,e+; 0.0004 1 /Herwig/Decays/Mambo decaymode eta->mu-,mu+,gamma; 0.00031 1 /Herwig/Decays/PVff decaymode eta->mu-,mu+; 6.0E-6 1 /Herwig/Decays/DecayME0 # decaymode eta'->pi+,pi-,eta; 0.444682 1 /Herwig/Decays/Etapipipi decaymode eta'->pi+,pi-,gamma; 0.29379 1 /Herwig/Decays/Etapipigamma decaymode eta'->pi0,pi0,eta; 0.207852 1 /Herwig/Decays/Etapipipi decaymode eta'->omega,gamma; 0.0303 1 /Herwig/Decays/PVV decaymode eta'->gamma,gamma; 0.0212 1 /Herwig/Decays/PVV decaymode eta'->pi0,pi0,pi0; 0.00155 1 /Herwig/Decays/Etapipipi decaymode eta'->e-,e+,gamma; 0.000522 1 /Herwig/Decays/PVff decaymode eta'->mu-,mu+,gamma; 0.000104 1 /Herwig/Decays/PVff # decaymode eta_c->g,g; 0.720947 1 /Herwig/Decays/QDecayME0 decaymode eta_c->eta,pi+,pi-; 0.032667 1 /Herwig/Decays/DecayME0 decaymode eta_c->eta',pi+,pi-; 0.027333 1 /Herwig/Decays/DecayME0 decaymode eta_c->K-,K0,pi+; 0.023333 1 /Herwig/Decays/DecayME0 decaymode eta_c->K+,Kbar0,pi-; 0.023333 1 /Herwig/Decays/DecayME0 decaymode eta_c->eta,pi0,pi0; 0.016333 1 /Herwig/Decays/DecayME0 decaymode eta_c->K*0,K*bar0,pi+,pi-; 0.015 1 /Herwig/Decays/Mambo decaymode eta_c->eta',pi0,pi0; 0.013667 1 /Herwig/Decays/DecayME0 decaymode eta_c->rho+,rho-; 0.013333 1 /Herwig/Decays/PVV decaymode eta_c->K0,Kbar0,pi0; 0.011667 1 /Herwig/Decays/DecayME0 decaymode eta_c->K+,K-,pi0; 0.011667 1 /Herwig/Decays/DecayME0 decaymode eta_c->f_2,f_2; 0.01 1 /Herwig/Decays/DecayME0 decaymode eta_c->K*-,K0,pi+; 0.00847 1 /Herwig/Decays/DecayME0 decaymode eta_c->K*bar0,K+,pi-; 0.00847 1 /Herwig/Decays/DecayME0 decaymode eta_c->K*0,K-,pi+; 0.00847 1 /Herwig/Decays/DecayME0 decaymode eta_c->K*+,Kbar0,pi-; 0.00847 1 /Herwig/Decays/DecayME0 decaymode eta_c->rho0,rho0; 0.006667 1 /Herwig/Decays/PVV decaymode eta_c->pi+,pi-,pi+,pi-; 0.005333 1 /Herwig/Decays/Mambo decaymode eta_c->K*0,K*bar0; 0.0046 1 /Herwig/Decays/PVV decaymode eta_c->K*+,K*-; 0.0046 1 /Herwig/Decays/PVV decaymode eta_c->K*-,K+,pi0; 0.00423 1 /Herwig/Decays/DecayME0 decaymode eta_c->K*bar0,K0,pi0; 0.00423 1 /Herwig/Decays/DecayME0 decaymode eta_c->K*0,Kbar0,pi0; 0.00423 1 /Herwig/Decays/DecayME0 decaymode eta_c->K*+,K-,pi0; 0.00423 1 /Herwig/Decays/DecayME0 decaymode eta_c->phi,phi; 0.0027 1 /Herwig/Decays/PVV decaymode eta_c->phi,K0,Kbar0; 0.00157 1 /Herwig/Decays/DecayME0 decaymode eta_c->phi,K+,K-; 0.00157 1 /Herwig/Decays/DecayME0 decaymode eta_c->n0,nbar0; 0.0013 1 /Herwig/Decays/DecayME0 decaymode eta_c->p+,pbar-; 0.0013 1 /Herwig/Decays/DecayME0 decaymode eta_c->gamma,gamma; 0.00028 1 /Herwig/Decays/PVV # decaymode eta_b->g,g; 1 1 /Herwig/Decays/QDecayME0 # decaymode K+->mu+,nu_mu; 0.634277 1 /Herwig/Decays/PScalarlnu decaymode K+->pi+,pi0; 0.209159 1 /Herwig/Decays/DecayME0 decaymode K+->pi+,pi+,pi-; 0.0559 1 /Herwig/Decays/DecayME0 decaymode K+->pi0,e+,nu_e; 0.0498 1 /Herwig/Decays/DecayME101 decaymode K+->pi0,mu+,nu_mu; 0.0332 1 /Herwig/Decays/DecayME101 decaymode K+->pi+,pi0,pi0; 0.01757 1 /Herwig/Decays/DecayME0 decaymode K+->pi+,pi-,e+,nu_e; 4.1E-5 1 /Herwig/Decays/Mambo decaymode K+->pi0,pi0,e+,nu_e; 2.2E-5 1 /Herwig/Decays/Mambo decaymode K+->e+,nu_e; 1.6E-5 1 /Herwig/Decays/PScalarlnu decaymode K+->pi+,pi-,mu+,nu_mu; 1.4E-5 1 /Herwig/Decays/Mambo decaymode K+->pi+,gamma,gamma; 1.0E-6 1 /Herwig/Decays/DecayME0 # decaymode K0->K_L0; 0.5 1 /Herwig/Decays/DecayME0 decaymode K0->K_S0; 0.5 1 /Herwig/Decays/DecayME0 # decaymode K-->mu-,nu_mubar; 0.634277 1 /Herwig/Decays/PScalarlnu decaymode K-->pi-,pi0; 0.209159 1 /Herwig/Decays/DecayME0 decaymode K-->pi-,pi-,pi+; 0.0559 1 /Herwig/Decays/DecayME0 decaymode K-->pi0,e-,nu_ebar; 0.0498 1 /Herwig/Decays/DecayME101 decaymode K-->pi0,mu-,nu_mubar; 0.0332 1 /Herwig/Decays/DecayME101 decaymode K-->pi-,pi0,pi0; 0.01757 1 /Herwig/Decays/DecayME0 decaymode K-->pi-,pi+,e-,nu_ebar; 4.1E-5 1 /Herwig/Decays/Mambo decaymode K-->pi0,pi0,e-,nu_ebar; 2.2E-5 1 /Herwig/Decays/Mambo decaymode K-->e-,nu_ebar; 1.6E-5 1 /Herwig/Decays/PScalarlnu decaymode K-->pi-,pi+,mu-,nu_mubar; 1.4E-5 1 /Herwig/Decays/Mambo decaymode K-->pi-,gamma,gamma; 1.0E-6 1 /Herwig/Decays/DecayME0 # decaymode Kbar0->K_L0; 0.5 1 /Herwig/Decays/DecayME0 decaymode Kbar0->K_S0; 0.5 1 /Herwig/Decays/DecayME0 # decaymode D0->K-,pi+,pi0; 0.141 1 /Herwig/Decays/DKPiPiCLEO decaymode D0->K-,a_1+; 0.075 1 /Herwig/Decays/WSBHadronic decaymode D0->K*-,rho+; 0.064 1 /Herwig/Decays/WSBHadronic decaymode D0->K-,pi+; 0.038 1 /Herwig/Decays/WSBHadronic decaymode D0->K-,e+,nu_e; 0.0344 1 /Herwig/Decays/ISGW2 decaymode D0->K-,mu+,nu_mu; 0.0333 1 /Herwig/Decays/ISGW2 decaymode D0->K_L0,pi+,pi-; 0.029 1 /Herwig/Decays/DKPiPiCLEO decaymode D0->K_S0,pi+,pi-; 0.029 1 /Herwig/Decays/DKPiPiCLEO decaymode D0->K-,pi+,omega; 0.023 1 /Herwig/Decays/DecayME0 decaymode D0->Kbar0,pi+,pi-,pi0; 0.022 1 /Herwig/Decays/Mambo decaymode D0->K*-,e+,nu_e; 0.0214 1 /Herwig/Decays/ISGW2 decaymode D0->K*-,mu+,nu_mu; 0.0203 1 /Herwig/Decays/ISGW2 decaymode D0->Kbar0,eta'; 0.0182 1 /Herwig/Decays/WSBHadronic decaymode D0->K-,pi+,pi0,pi0,pi0; 0.016599 1 /Herwig/Decays/Mambo decaymode D0->Kbar0,pi0,pi0,pi0,pi0; 0.016599 1 /Herwig/Decays/Mambo decaymode D0->Kbar0,pi+,pi-,pi0,pi0; 0.016599 1 /Herwig/Decays/Mambo decaymode D0->K-,pi+,pi0,pi0; 0.016598 1 /Herwig/Decays/Mambo decaymode D0->Kbar0,pi0,pi0,pi0; 0.016598 1 /Herwig/Decays/Mambo decaymode D0->K-,pi+,pi+,pi-; 0.0155 1 /Herwig/Decays/Mambo decaymode D0->K*bar0,rho0; 0.015 1 /Herwig/Decays/WSBHadronic decaymode D0->K*bar0,pi+,pi-; 0.0146 1 /Herwig/Decays/DecayME0 decaymode D0->pi0,[K*bar0->Kbar0,pi0;]; 0.0126 1 /Herwig/Decays/WSBHadronic decaymode D0->Kbar0,a_00; 0.0117 1 /Herwig/Decays/DecayME0 decaymode D0->K_L0,pi0; 0.0114 1 /Herwig/Decays/DecayME0 decaymode D0->K_S0,pi0; 0.0114 1 /Herwig/Decays/DecayME0 decaymode D0->K_1-,pi+; 0.0112 1 /Herwig/Decays/ISGW2Hadronic decaymode D0->K*bar0,omega; 0.011 1 /Herwig/Decays/WSBHadronic decaymode D0->K_L0,[omega->pi+,pi-,pi0;]; 0.009972 1 /Herwig/Decays/DecayME0 decaymode D0->K_L0,[omega->pi0,gamma;]; 0.00101 1 /Herwig/Decays/DecayME0 decaymode D0->K_L0,[omega->pi0,e-,e+;]; 9.0E-6 1 /Herwig/Decays/DecayME0 decaymode D0->K_L0,[omega->eta,gamma;]; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode D0->K_L0,[omega->pi0,mu-,mu+;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode D0->K_L0,[omega->e-,e+;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode D0->K_L0,[omega->mu-,mu+;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode D0->K_L0,[omega->pi0,pi0,gamma;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode D0->K_S0,[omega->pi+,pi-,pi0;]; 0.009972 1 /Herwig/Decays/DecayME0 decaymode D0->K_S0,[omega->pi0,gamma;]; 0.00101 1 /Herwig/Decays/DecayME0 decaymode D0->K_S0,[omega->pi0,e-,e+;]; 9.0E-6 1 /Herwig/Decays/DecayME0 decaymode D0->K_S0,[omega->eta,gamma;]; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode D0->K_S0,[omega->pi0,mu-,mu+;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode D0->K_S0,[omega->e-,e+;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode D0->K_S0,[omega->mu-,mu+;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode D0->K_S0,[omega->pi0,pi0,gamma;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode D0->K*-,a_1+; 0.0102 1 /Herwig/Decays/WSBHadronic decaymode D0->K_1-,rho+; 0.01 1 /Herwig/Decays/DecayME0 decaymode D0->K*-,pi+,pi0,pi0,pi0; 0.009 1 /Herwig/Decays/Mambo decaymode D0->K*-,pi+,pi+,pi-,pi0; 0.009 1 /Herwig/Decays/Mambo decaymode D0->K*bar0,pi+,pi-,pi0,pi0; 0.009 1 /Herwig/Decays/Mambo decaymode D0->K*bar0,eta; 0.009 1 /Herwig/Decays/WSBHadronic decaymode D0->pi-,a_1+; 0.00878 1 /Herwig/Decays/ISGW2Hadronic decaymode D0->Kbar0,phi; 0.0086 1 /Herwig/Decays/DecayME0 decaymode D0->K-,pi+,pi+,pi-,pi0; 0.0085 1 /Herwig/Decays/Mambo decaymode D0->Kbar0,pi0,pi0; 0.0084 1 /Herwig/Decays/DecayME0 decaymode D0->K*bar0,a_10; 0.008 1 /Herwig/Decays/DecayME0 decaymode D0->Kbar0,eta; 0.0076 1 /Herwig/Decays/WSBHadronic decaymode D0->rho+,pi-; 0.0075 1 /Herwig/Decays/WSBHadronic decaymode D0->K-,pi+,eta'; 0.0065 1 /Herwig/Decays/DecayME0 decaymode D0->K0,Kbar0,pi+,pi-; 0.0054 1 /Herwig/Decays/Mambo decaymode D0->K'_1-,pi+; 0.005 1 /Herwig/Decays/DecayME0 decaymode D0->K'_1-,rho+; 0.005 1 /Herwig/Decays/DecayME0 decaymode D0->K-,pi+,rho0; 0.0049 1 /Herwig/Decays/DecayME0 decaymode D0->K-,pi0,mu+,nu_mu; 0.0039 1 /Herwig/Decays/Mambo decaymode D0->K-,pi0,e+,nu_e; 0.0039 1 /Herwig/Decays/Mambo decaymode D0->K+,K-; 0.00384 1 /Herwig/Decays/DecayME0 decaymode D0->Kbar0,K+,pi-; 0.0038 1 /Herwig/Decays/DecayME0 decaymode D0->K*+,K-; 0.0037 1 /Herwig/Decays/WSBHadronic decaymode D0->rho-,pi+; 0.0032 1 /Herwig/Decays/WSBHadronic decaymode D0->K-,K+,pi+,pi-,pi0; 0.0031 1 /Herwig/Decays/Mambo decaymode D0->rho+,rho-; 0.003 1 /Herwig/Decays/WSBHadronic decaymode D0->pi0,[K*_0bar0->Kbar0,pi0;]; 0.0029 1 /Herwig/Decays/DecayME0 decaymode D0->pi-,e+,nu_e; 0.00275 1 /Herwig/Decays/ISGW2 decaymode D0->pi-,mu+,nu_mu; 0.00268 1 /Herwig/Decays/ISGW2 decaymode D0->pi+,pi+,pi-,pi-,pi0; 0.00268 1 /Herwig/Decays/Mambo decaymode D0->K_1+,K-; 0.0023 1 /Herwig/Decays/DecayME0 decaymode D0->Kbar0,rho0,pi+,pi-; 0.0022 1 /Herwig/Decays/Mambo decaymode D0->rho0,pi0; 0.0022 1 /Herwig/Decays/WSBHadronic decaymode D0->K0,K-,pi+; 0.0022 1 /Herwig/Decays/DecayME0 decaymode D0->K*-,K+; 0.002 1 /Herwig/Decays/WSBHadronic decaymode D0->Kbar0,pi-,mu+,nu_mu; 0.0019 1 /Herwig/Decays/Mambo decaymode D0->Kbar0,pi-,e+,nu_e; 0.0019 1 /Herwig/Decays/Mambo decaymode D0->rho-,e+,nu_e; 0.0019 1 /Herwig/Decays/ISGW2 decaymode D0->rho-,mu+,nu_mu; 0.0018 1 /Herwig/Decays/ISGW2 decaymode D0->rho0,rho0; 0.00179 1 /Herwig/Decays/DecayME0 decaymode D0->pi+,pi-,pi0,pi0; 0.00171 1 /Herwig/Decays/Mambo decaymode D0->omega,pi+,pi-; 0.0016 1 /Herwig/Decays/DecayME0 decaymode D0->K_1+,K*-; 0.0015 1 /Herwig/Decays/DecayME0 decaymode D0->K'_1+,K*-; 0.0015 1 /Herwig/Decays/DecayME0 decaymode D0->K0,Kbar0; 0.00148 1 /Herwig/Decays/DecayME0 decaymode D0->phi,rho0; 0.0014 1 /Herwig/Decays/WSBHadronic decaymode D0->phi,omega; 0.0014 1 /Herwig/Decays/WSBHadronic decaymode D0->pi+,pi-; 0.001364 1 /Herwig/Decays/DecayME0 decaymode D0->Kbar0,[f_0->pi0,pi0;]; 0.00136 1 /Herwig/Decays/DecayME0 decaymode D0->K-,a_0+; 0.00132 1 /Herwig/Decays/DecayME0 decaymode D0->K'_1+,K-; 0.0012 1 /Herwig/Decays/DecayME0 decaymode D0->K*bar0,K0; 0.001 1 /Herwig/Decays/DecayME0 decaymode D0->K*bar0,eta'; 0.001 1 /Herwig/Decays/WSBHadronic decaymode D0->pi+,pi-,pi0,pi0,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode D0->pi+,pi-,pi0,pi0,pi0,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode D0->pi+,pi-,pi+,pi-,pi0,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode D0->K_S0,K_S0,K_S0; 0.00093 1 /Herwig/Decays/DecayME0 decaymode D0->sigma,pi+,pi-; 0.0009 1 /Herwig/Decays/DecayME0 decaymode D0->pi0,pi0; 0.00079 1 /Herwig/Decays/DecayME0 decaymode D0->K_1-,mu+,nu_mu; 0.00076 1 /Herwig/Decays/ISGW2 decaymode D0->K_1-,e+,nu_e; 0.00076 1 /Herwig/Decays/ISGW2 decaymode D0->phi,pi0; 0.00074 1 /Herwig/Decays/WSBHadronic decaymode D0->f_2,pi+,pi-; 0.00063 1 /Herwig/Decays/DecayME0 decaymode D0->K_S0,K_S0,K-,pi+; 0.00061 1 /Herwig/Decays/Mambo decaymode D0->K*0,Kbar0; 0.0006 1 /Herwig/Decays/DecayME0 decaymode D0->eta,pi0; 0.00056 1 /Herwig/Decays/DecayME0 decaymode D0->K+,a_1-; 0.000498 1 /Herwig/Decays/DecayME0 decaymode D0->pi+,pi+,pi+,pi-,pi-,pi-; 0.0004 1 /Herwig/Decays/Mambo decaymode D0->K*bar0,K+,pi-; 0.00038 1 /Herwig/Decays/DecayME0 decaymode D0->f_0,pi+,pi-; 0.00036 1 /Herwig/Decays/DecayME0 decaymode D0->K+,pi-,pi0; 0.000319 1 /Herwig/Decays/DecayME0 decaymode D0->K*bar0,phi; 0.00031 1 /Herwig/Decays/DecayME0 decaymode D0->K-,pi+,pi+,pi+,pi-,pi-; 0.00021 1 /Herwig/Decays/Mambo decaymode D0->K*0,K*bar0; 0.00016 1 /Herwig/Decays/DecayME0 decaymode D0->K+,pi-; 0.000143 1 /Herwig/Decays/DecayME0 decaymode D0->phi,eta; 0.00014 1 /Herwig/Decays/WSBHadronic decaymode D0->pi-,[K*+->K+,pi0;]; 0.0001 1 /Herwig/Decays/WSBHadronic decaymode D0->K*+,a_1-; 0.0001 1 /Herwig/Decays/DecayME0 decaymode D0->K_1+,a_1-; 0.0001 1 /Herwig/Decays/DecayME0 decaymode D0->K_1+,rho-; 0.0001 1 /Herwig/Decays/DecayME0 decaymode D0->K_1+,pi-; 0.0001 1 /Herwig/Decays/DecayME0 decaymode D0->K'_1+,a_1-; 0.0001 1 /Herwig/Decays/DecayME0 decaymode D0->K'_1+,rho-; 0.0001 1 /Herwig/Decays/DecayME0 decaymode D0->K'_1+,pi-; 0.0001 1 /Herwig/Decays/DecayME0 decaymode D0->K-,K+,rho0; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode D0->phi,pi+,pi-; 4.7E-5 1 /Herwig/Decays/DecayME0 decaymode D0->K-,K+,K-,pi+; 3.2E-5 1 /Herwig/Decays/Mambo decaymode D0->phi,gamma; 2.4E-5 1 /Herwig/Decays/DecayME0 # decaymode D+->Kbar0,pi+,pi0; 0.14 1 /Herwig/Decays/DtoKPiPiMarkIII decaymode D+->K-,pi+,pi+; 0.0951 1 /Herwig/Decays/DKPiPiE691 decaymode D+->Kbar0,e+,nu_e; 0.0892 1 /Herwig/Decays/ISGW2 decaymode D+->Kbar0,mu+,nu_mu; 0.0865 1 /Herwig/Decays/ISGW2 decaymode D+->Kbar0,a_1+; 0.072 1 /Herwig/Decays/WSBHadronic decaymode D+->K*bar0,e+,nu_e; 0.0566 1 /Herwig/Decays/ISGW2 decaymode D+->K*bar0,mu+,nu_mu; 0.0536 1 /Herwig/Decays/ISGW2 decaymode D+->K'_1bar0,pi+; 0.043 1 /Herwig/Decays/ISGW2Hadronic decaymode D+->K*bar0,pi+,pi0; 0.036 1 /Herwig/Decays/DecayME0 decaymode D+->K*+,Kbar0; 0.032 1 /Herwig/Decays/WSBHadronic decaymode D+->Kbar0,pi+; 0.0296 1 /Herwig/Decays/WSBHadronic decaymode D+->K*+,K*bar0; 0.026 1 /Herwig/Decays/WSBHadronic decaymode D+->phi,pi+,pi0; 0.023 1 /Herwig/Decays/DecayME0 decaymode D+->Kbar0,Kbar0,K+; 0.0188 1 /Herwig/Decays/DecayME0 decaymode D+->K*-,pi+,pi+; 0.018 1 /Herwig/Decays/DecayME0 decaymode D+->K*bar0,rho+; 0.018 1 /Herwig/Decays/WSBHadronic decaymode D+->pi+,pi+,pi-,pi0; 0.011 1 /Herwig/Decays/Mambo decaymode D+->K-,pi+,pi+,pi0; 0.01 1 /Herwig/Decays/Mambo decaymode D+->K*bar0,a_1+; 0.0094 1 /Herwig/Decays/WSBHadronic decaymode D+->K+,K-,pi+,pi0; 0.0093 1 /Herwig/Decays/Mambo decaymode D+->K-,rho+,pi+; 0.009 1 /Herwig/Decays/DecayME0 decaymode D+->Kbar0,pi+,pi+,pi-; 0.0074 1 /Herwig/Decays/Mambo decaymode D+->phi,pi+; 0.0065 1 /Herwig/Decays/DecayME0 decaymode D+->K+,Kbar0; 0.00592 1 /Herwig/Decays/DecayME0 decaymode D+->K*_0bar0,K+; 0.00555 1 /Herwig/Decays/DecayME0 decaymode D+->pi+,[K''*bar0->K-,rho+;]; 0.001495 1 /Herwig/Decays/DecayME0 decaymode D+->pi+,[K''*bar0->K*-,pi+;]; 0.001424 1 /Herwig/Decays/DecayME0 decaymode D+->pi+,[K''*bar0->Kbar0,pi0;]; 0.000921 1 /Herwig/Decays/DecayME0 decaymode D+->pi+,[K''*bar0->Kbar0,rho0;]; 0.000748 1 /Herwig/Decays/DecayME0 decaymode D+->pi+,[K''*bar0->K*bar0,pi0;]; 0.000712 1 /Herwig/Decays/DecayME0 decaymode D+->eta',pi+; 0.0053 1 /Herwig/Decays/DecayME0 decaymode D+->K+,K*bar0; 0.00453 1 /Herwig/Decays/WSBHadronic decaymode D+->Kbar0,rho0,pi+; 0.0044 1 /Herwig/Decays/DecayME0 decaymode D+->pi0,mu+,nu_mu; 0.0044 1 /Herwig/Decays/ISGW2 decaymode D+->pi0,e+,nu_e; 0.0044 1 /Herwig/Decays/ISGW2 decaymode D+->pi+,pi0,pi0; 0.0037 1 /Herwig/Decays/DecayME0 decaymode D+->eta,pi+; 0.0035 1 /Herwig/Decays/WSBHadronic decaymode D+->pi+,pi0,pi0,pi0; 0.003 1 /Herwig/Decays/Mambo decaymode D+->pi+,pi0,pi0,pi0,pi0; 0.003 1 /Herwig/Decays/Mambo decaymode D+->pi+,pi+,pi-,pi0,pi0; 0.003 1 /Herwig/Decays/Mambo decaymode D+->rho0,mu+,nu_mu; 0.00244 1 /Herwig/Decays/ISGW2 decaymode D+->rho0,e+,nu_e; 0.00244 1 /Herwig/Decays/ISGW2 decaymode D+->sigma,pi+; 0.0023 1 /Herwig/Decays/DecayME0 decaymode D+->K-,pi+,mu+,nu_mu; 0.0021 1 /Herwig/Decays/Mambo decaymode D+->K-,pi+,e+,nu_e; 0.0021 1 /Herwig/Decays/Mambo decaymode D+->K_1bar0,mu+,nu_mu; 0.002 1 /Herwig/Decays/ISGW2 decaymode D+->K_1bar0,e+,nu_e; 0.002 1 /Herwig/Decays/ISGW2 decaymode D+->pi+,pi+,pi+,pi-,pi-; 0.00168 1 /Herwig/Decays/Mambo decaymode D+->K-,pi+,pi+,pi0,pi0; 0.001614 1 /Herwig/Decays/Mambo decaymode D+->K*-,pi+,pi+,pi0,pi0; 0.001613 1 /Herwig/Decays/Mambo decaymode D+->K*-,pi+,pi+,pi+,pi-; 0.001613 1 /Herwig/Decays/Mambo decaymode D+->K*bar0,pi+,pi0,pi0,pi0; 0.001613 1 /Herwig/Decays/Mambo decaymode D+->K*bar0,pi+,pi+,pi-,pi0; 0.001613 1 /Herwig/Decays/Mambo decaymode D+->Kbar0,pi+,pi0,pi0,pi0; 0.001613 1 /Herwig/Decays/Mambo decaymode D+->Kbar0,pi+,pi+,pi-,pi0; 0.001613 1 /Herwig/Decays/Mambo decaymode D+->omega,mu+,nu_mu; 0.0016 1 /Herwig/Decays/ISGW2 decaymode D+->omega,e+,nu_e; 0.0016 1 /Herwig/Decays/ISGW2 decaymode D+->eta,mu+,nu_mu; 0.00129 1 /Herwig/Decays/ISGW2 decaymode D+->eta,e+,nu_e; 0.00129 1 /Herwig/Decays/ISGW2 decaymode D+->pi0,pi+; 0.00128 1 /Herwig/Decays/DecayME0 decaymode D+->tau+,nu_tau; 0.0012 1 /Herwig/Decays/PScalarlnu decaymode D+->rho0,pi+; 0.00107 1 /Herwig/Decays/WSBHadronic decaymode D+->Kbar0,pi0,mu+,nu_mu; 0.001 1 /Herwig/Decays/Mambo decaymode D+->Kbar0,pi0,e+,nu_e; 0.001 1 /Herwig/Decays/Mambo decaymode D+->f_2,pi+; 0.00085 1 /Herwig/Decays/STSDecayer decaymode D+->K-,rho0,pi+,pi+; 0.00055 1 /Herwig/Decays/Mambo decaymode D+->K+,K-,Kbar0,pi+; 0.00048 1 /Herwig/Decays/Mambo decaymode D+->K*0,pi+; 0.00045 1 /Herwig/Decays/DecayME0 decaymode D+->mu+,nu_mu; 0.00044 1 /Herwig/Decays/PScalarlnu decaymode D+->K-,pi+,pi+,pi+,pi-; 0.00041 1 /Herwig/Decays/Mambo decaymode D+->f_0,pi+; 0.0004 1 /Herwig/Decays/DecayME0 decaymode D+->K+,rho0; 0.00025 1 /Herwig/Decays/WSBHadronic decaymode D+->K+,K-,pi+,pi+,pi-; 0.00023 1 /Herwig/Decays/Mambo decaymode D+->K+,K+,K-; 9.0E-5 1 /Herwig/Decays/DecayME0 decaymode D+->f_0,K+; 9.0E-5 1 /Herwig/Decays/DecayME0 decaymode D+->K*_20,pi+; 7.8E-5 1 /Herwig/Decays/DecayME0 # decaymode Dbar0->K+,pi-,pi0; 0.141 1 /Herwig/Decays/DKPiPiCLEO decaymode Dbar0->K+,a_1-; 0.075 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K*+,rho-; 0.064 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K+,pi-; 0.038 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K+,e-,nu_ebar; 0.0344 1 /Herwig/Decays/ISGW2 decaymode Dbar0->K+,mu-,nu_mubar; 0.0333 1 /Herwig/Decays/ISGW2 decaymode Dbar0->K_L0,pi-,pi+; 0.029 1 /Herwig/Decays/DKPiPiCLEO decaymode Dbar0->K_S0,pi-,pi+; 0.029 1 /Herwig/Decays/DKPiPiCLEO decaymode Dbar0->K+,pi-,omega; 0.023 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K0,pi-,pi+,pi0; 0.022 1 /Herwig/Decays/Mambo decaymode Dbar0->K*+,e-,nu_ebar; 0.0214 1 /Herwig/Decays/ISGW2 decaymode Dbar0->K*+,mu-,nu_mubar; 0.0203 1 /Herwig/Decays/ISGW2 decaymode Dbar0->K0,eta'; 0.0182 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K0,pi-,pi+,pi0,pi0; 0.016599 1 /Herwig/Decays/Mambo decaymode Dbar0->K0,pi0,pi0,pi0,pi0; 0.016599 1 /Herwig/Decays/Mambo decaymode Dbar0->K+,pi-,pi0,pi0,pi0; 0.016599 1 /Herwig/Decays/Mambo decaymode Dbar0->K0,pi0,pi0,pi0; 0.016598 1 /Herwig/Decays/Mambo decaymode Dbar0->K+,pi-,pi0,pi0; 0.016598 1 /Herwig/Decays/Mambo decaymode Dbar0->K+,pi-,pi-,pi+; 0.0155 1 /Herwig/Decays/Mambo decaymode Dbar0->K*0,rho0; 0.015 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K*0,pi-,pi+; 0.0146 1 /Herwig/Decays/DecayME0 decaymode Dbar0->pi0,[K*0->K0,pi0;]; 0.0126 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K0,a_00; 0.0117 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_L0,pi0; 0.0114 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_S0,pi0; 0.0114 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_1+,pi-; 0.0112 1 /Herwig/Decays/ISGW2Hadronic decaymode Dbar0->K_L0,[omega->pi+,pi-,pi0;]; 0.009972 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_L0,[omega->pi0,gamma;]; 0.00101 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_L0,[omega->pi0,e-,e+;]; 9.0E-6 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_L0,[omega->eta,gamma;]; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_L0,[omega->pi0,mu-,mu+;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_L0,[omega->e-,e+;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_L0,[omega->mu-,mu+;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_L0,[omega->pi0,pi0,gamma;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_S0,[omega->pi+,pi-,pi0;]; 0.009972 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_S0,[omega->pi0,gamma;]; 0.00101 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_S0,[omega->pi0,e-,e+;]; 9.0E-6 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_S0,[omega->eta,gamma;]; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_S0,[omega->pi0,mu-,mu+;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_S0,[omega->e-,e+;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_S0,[omega->mu-,mu+;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_S0,[omega->pi0,pi0,gamma;]; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K*0,omega; 0.011 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K*+,a_1-; 0.0102 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K_1+,rho-; 0.01 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K*0,pi-,pi+,pi0,pi0; 0.009 1 /Herwig/Decays/Mambo decaymode Dbar0->K*0,eta; 0.009 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K*+,pi-,pi-,pi+,pi0; 0.009 1 /Herwig/Decays/Mambo decaymode Dbar0->K*+,pi-,pi0,pi0,pi0; 0.009 1 /Herwig/Decays/Mambo decaymode Dbar0->pi+,a_1-; 0.00878 1 /Herwig/Decays/ISGW2Hadronic decaymode Dbar0->K0,phi; 0.0086 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K+,pi-,pi-,pi+,pi0; 0.0085 1 /Herwig/Decays/Mambo decaymode Dbar0->K0,pi0,pi0; 0.0084 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K*0,a_10; 0.008 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K0,eta; 0.0076 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->rho-,pi+; 0.0075 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K+,pi-,eta'; 0.0065 1 /Herwig/Decays/DecayME0 decaymode Dbar0->Kbar0,K0,pi-,pi+; 0.0054 1 /Herwig/Decays/Mambo decaymode Dbar0->K'_1+,rho-; 0.005 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K'_1+,pi-; 0.005 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K+,pi-,rho0; 0.0049 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K+,pi0,e-,nu_ebar; 0.0039 1 /Herwig/Decays/Mambo decaymode Dbar0->K+,pi0,mu-,nu_mubar; 0.0039 1 /Herwig/Decays/Mambo decaymode Dbar0->K-,K+; 0.00384 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K0,K-,pi+; 0.0038 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K*-,K+; 0.0037 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->rho+,pi-; 0.0032 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K+,K-,pi-,pi+,pi0; 0.0031 1 /Herwig/Decays/Mambo decaymode Dbar0->rho-,rho+; 0.003 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->pi0,[K*_00->K0,pi0;]; 0.0029 1 /Herwig/Decays/DecayME0 decaymode Dbar0->pi+,e-,nu_ebar; 0.00275 1 /Herwig/Decays/ISGW2 decaymode Dbar0->pi-,pi-,pi+,pi+,pi0; 0.00268 1 /Herwig/Decays/Mambo decaymode Dbar0->pi+,mu-,nu_mubar; 0.00268 1 /Herwig/Decays/ISGW2 decaymode Dbar0->K_1-,K+; 0.0023 1 /Herwig/Decays/DecayME0 decaymode Dbar0->Kbar0,K+,pi-; 0.0022 1 /Herwig/Decays/DecayME0 decaymode Dbar0->rho0,pi0; 0.0022 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K0,rho0,pi-,pi+; 0.0022 1 /Herwig/Decays/Mambo decaymode Dbar0->K*+,K-; 0.002 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->rho+,e-,nu_ebar; 0.0019 1 /Herwig/Decays/ISGW2 decaymode Dbar0->K0,pi+,e-,nu_ebar; 0.0019 1 /Herwig/Decays/Mambo decaymode Dbar0->K0,pi+,mu-,nu_mubar; 0.0019 1 /Herwig/Decays/Mambo decaymode Dbar0->rho+,mu-,nu_mubar; 0.0018 1 /Herwig/Decays/ISGW2 decaymode Dbar0->rho0,rho0; 0.00179 1 /Herwig/Decays/DecayME0 decaymode Dbar0->pi-,pi+,pi0,pi0; 0.00171 1 /Herwig/Decays/Mambo decaymode Dbar0->omega,pi-,pi+; 0.0016 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K'_1-,K*+; 0.0015 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_1-,K*+; 0.0015 1 /Herwig/Decays/DecayME0 decaymode Dbar0->Kbar0,K0; 0.00148 1 /Herwig/Decays/DecayME0 decaymode Dbar0->phi,rho0; 0.0014 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->phi,omega; 0.0014 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->pi-,pi+; 0.001364 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K0,[f_0->pi0,pi0;]; 0.00136 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K+,a_0-; 0.00132 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K'_1-,K+; 0.0012 1 /Herwig/Decays/DecayME0 decaymode Dbar0->pi-,pi+,pi-,pi+,pi0,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode Dbar0->pi-,pi+,pi0,pi0,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode Dbar0->pi-,pi+,pi0,pi0,pi0,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode Dbar0->K*0,Kbar0; 0.001 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K*0,eta'; 0.001 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K_S0,K_S0,K_S0; 0.00093 1 /Herwig/Decays/DecayME0 decaymode Dbar0->sigma,pi-,pi+; 0.0009 1 /Herwig/Decays/DecayME0 decaymode Dbar0->pi0,pi0; 0.00079 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_1+,e-,nu_ebar; 0.00076 1 /Herwig/Decays/ISGW2 decaymode Dbar0->K_1+,mu-,nu_mubar; 0.00076 1 /Herwig/Decays/ISGW2 decaymode Dbar0->phi,pi0; 0.00074 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->f_2,pi-,pi+; 0.00063 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_S0,K_S0,K+,pi-; 0.00061 1 /Herwig/Decays/Mambo decaymode Dbar0->K*bar0,K0; 0.0006 1 /Herwig/Decays/DecayME0 decaymode Dbar0->eta,pi0; 0.00056 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K-,a_1+; 0.000498 1 /Herwig/Decays/DecayME0 decaymode Dbar0->pi-,pi-,pi-,pi+,pi+,pi+; 0.0004 1 /Herwig/Decays/Mambo decaymode Dbar0->K*0,K-,pi+; 0.00038 1 /Herwig/Decays/DecayME0 decaymode Dbar0->f_0,pi-,pi+; 0.00036 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K-,pi+,pi0; 0.000319 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K*0,phi; 0.00031 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K+,pi-,pi-,pi-,pi+,pi+; 0.00021 1 /Herwig/Decays/Mambo decaymode Dbar0->K*bar0,K*0; 0.00016 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K-,pi+; 0.000143 1 /Herwig/Decays/DecayME0 decaymode Dbar0->phi,eta; 0.00014 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K'_1-,pi+; 0.0001 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K'_1-,rho+; 0.0001 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K'_1-,a_1+; 0.0001 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_1-,pi+; 0.0001 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_1-,rho+; 0.0001 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K_1-,a_1+; 0.0001 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K*-,a_1+; 0.0001 1 /Herwig/Decays/DecayME0 decaymode Dbar0->pi+,[K*-->K-,pi0;]; 0.0001 1 /Herwig/Decays/WSBHadronic decaymode Dbar0->K+,K-,rho0; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode Dbar0->phi,pi-,pi+; 4.7E-5 1 /Herwig/Decays/DecayME0 decaymode Dbar0->K+,K-,K+,pi-; 3.2E-5 1 /Herwig/Decays/Mambo decaymode Dbar0->phi,gamma; 2.4E-5 1 /Herwig/Decays/DecayME0 # decaymode D-->K0,pi-,pi0; 0.14 1 /Herwig/Decays/DtoKPiPiMarkIII decaymode D-->K+,pi-,pi-; 0.0951 1 /Herwig/Decays/DKPiPiE691 decaymode D-->K0,e-,nu_ebar; 0.0892 1 /Herwig/Decays/ISGW2 decaymode D-->K0,mu-,nu_mubar; 0.0865 1 /Herwig/Decays/ISGW2 decaymode D-->K0,a_1-; 0.072 1 /Herwig/Decays/WSBHadronic decaymode D-->K*0,e-,nu_ebar; 0.0566 1 /Herwig/Decays/ISGW2 decaymode D-->K*0,mu-,nu_mubar; 0.0536 1 /Herwig/Decays/ISGW2 decaymode D-->K'_10,pi-; 0.043 1 /Herwig/Decays/ISGW2Hadronic decaymode D-->K*0,pi-,pi0; 0.036 1 /Herwig/Decays/DecayME0 decaymode D-->K*-,K0; 0.032 1 /Herwig/Decays/WSBHadronic decaymode D-->K0,pi-; 0.0296 1 /Herwig/Decays/WSBHadronic decaymode D-->K*-,K*0; 0.026 1 /Herwig/Decays/WSBHadronic decaymode D-->phi,pi-,pi0; 0.023 1 /Herwig/Decays/DecayME0 decaymode D-->K0,K0,K-; 0.0188 1 /Herwig/Decays/DecayME0 decaymode D-->K*0,rho-; 0.018 1 /Herwig/Decays/WSBHadronic decaymode D-->K*+,pi-,pi-; 0.018 1 /Herwig/Decays/DecayME0 decaymode D-->pi-,pi-,pi+,pi0; 0.011 1 /Herwig/Decays/Mambo decaymode D-->K+,pi-,pi-,pi0; 0.01 1 /Herwig/Decays/Mambo decaymode D-->K*0,a_1-; 0.0094 1 /Herwig/Decays/WSBHadronic decaymode D-->K-,K+,pi-,pi0; 0.0093 1 /Herwig/Decays/Mambo decaymode D-->K+,rho-,pi-; 0.009 1 /Herwig/Decays/DecayME0 decaymode D-->K0,pi-,pi-,pi+; 0.0074 1 /Herwig/Decays/Mambo decaymode D-->phi,pi-; 0.0065 1 /Herwig/Decays/DecayME0 decaymode D-->K-,K0; 0.00592 1 /Herwig/Decays/DecayME0 decaymode D-->K*_00,K-; 0.00555 1 /Herwig/Decays/DecayME0 decaymode D-->pi-,[K''*0->K+,rho-;]; 0.001495 1 /Herwig/Decays/DecayME0 decaymode D-->pi-,[K''*0->K*+,pi-;]; 0.001424 1 /Herwig/Decays/DecayME0 decaymode D-->pi-,[K''*0->K0,pi0;]; 0.000921 1 /Herwig/Decays/DecayME0 decaymode D-->pi-,[K''*0->K0,rho0;]; 0.000748 1 /Herwig/Decays/DecayME0 decaymode D-->pi-,[K''*0->K*0,pi0;]; 0.000712 1 /Herwig/Decays/DecayME0 decaymode D-->eta',pi-; 0.0053 1 /Herwig/Decays/DecayME0 decaymode D-->K-,K*0; 0.00453 1 /Herwig/Decays/WSBHadronic decaymode D-->pi0,e-,nu_ebar; 0.0044 1 /Herwig/Decays/ISGW2 decaymode D-->pi0,mu-,nu_mubar; 0.0044 1 /Herwig/Decays/ISGW2 decaymode D-->K0,rho0,pi-; 0.0044 1 /Herwig/Decays/DecayME0 decaymode D-->pi-,pi0,pi0; 0.0037 1 /Herwig/Decays/DecayME0 decaymode D-->eta,pi-; 0.0035 1 /Herwig/Decays/WSBHadronic decaymode D-->pi-,pi-,pi+,pi0,pi0; 0.003 1 /Herwig/Decays/Mambo decaymode D-->pi-,pi0,pi0,pi0; 0.003 1 /Herwig/Decays/Mambo decaymode D-->pi-,pi0,pi0,pi0,pi0; 0.003 1 /Herwig/Decays/Mambo decaymode D-->rho0,e-,nu_ebar; 0.00244 1 /Herwig/Decays/ISGW2 decaymode D-->rho0,mu-,nu_mubar; 0.00244 1 /Herwig/Decays/ISGW2 decaymode D-->sigma,pi-; 0.0023 1 /Herwig/Decays/DecayME0 decaymode D-->K+,pi-,e-,nu_ebar; 0.0021 1 /Herwig/Decays/Mambo decaymode D-->K+,pi-,mu-,nu_mubar; 0.0021 1 /Herwig/Decays/Mambo decaymode D-->K_10,e-,nu_ebar; 0.002 1 /Herwig/Decays/ISGW2 decaymode D-->K_10,mu-,nu_mubar; 0.002 1 /Herwig/Decays/ISGW2 decaymode D-->pi-,pi-,pi-,pi+,pi+; 0.00168 1 /Herwig/Decays/Mambo decaymode D-->K+,pi-,pi-,pi0,pi0; 0.001614 1 /Herwig/Decays/Mambo decaymode D-->K0,pi-,pi-,pi+,pi0; 0.001613 1 /Herwig/Decays/Mambo decaymode D-->K0,pi-,pi0,pi0,pi0; 0.001613 1 /Herwig/Decays/Mambo decaymode D-->K*0,pi-,pi-,pi+,pi0; 0.001613 1 /Herwig/Decays/Mambo decaymode D-->K*0,pi-,pi0,pi0,pi0; 0.001613 1 /Herwig/Decays/Mambo decaymode D-->K*+,pi-,pi-,pi-,pi+; 0.001613 1 /Herwig/Decays/Mambo decaymode D-->K*+,pi-,pi-,pi0,pi0; 0.001613 1 /Herwig/Decays/Mambo decaymode D-->omega,e-,nu_ebar; 0.0016 1 /Herwig/Decays/ISGW2 decaymode D-->omega,mu-,nu_mubar; 0.0016 1 /Herwig/Decays/ISGW2 decaymode D-->eta,e-,nu_ebar; 0.00129 1 /Herwig/Decays/ISGW2 decaymode D-->eta,mu-,nu_mubar; 0.00129 1 /Herwig/Decays/ISGW2 decaymode D-->pi0,pi-; 0.00128 1 /Herwig/Decays/DecayME0 decaymode D-->tau-,nu_taubar; 0.0012 1 /Herwig/Decays/PScalarlnu decaymode D-->rho0,pi-; 0.00107 1 /Herwig/Decays/WSBHadronic decaymode D-->K0,pi0,e-,nu_ebar; 0.001 1 /Herwig/Decays/Mambo decaymode D-->K0,pi0,mu-,nu_mubar; 0.001 1 /Herwig/Decays/Mambo decaymode D-->f_2,pi-; 0.00085 1 /Herwig/Decays/STSDecayer decaymode D-->K+,rho0,pi-,pi-; 0.00055 1 /Herwig/Decays/Mambo decaymode D-->K-,K+,K0,pi-; 0.00048 1 /Herwig/Decays/Mambo decaymode D-->K*bar0,pi-; 0.00045 1 /Herwig/Decays/DecayME0 decaymode D-->mu-,nu_mubar; 0.00044 1 /Herwig/Decays/PScalarlnu decaymode D-->K+,pi-,pi-,pi-,pi+; 0.00041 1 /Herwig/Decays/Mambo decaymode D-->f_0,pi-; 0.0004 1 /Herwig/Decays/DecayME0 decaymode D-->K-,rho0; 0.00025 1 /Herwig/Decays/WSBHadronic decaymode D-->K-,K+,pi-,pi-,pi+; 0.00023 1 /Herwig/Decays/Mambo decaymode D-->K-,K-,K+; 9.0E-5 1 /Herwig/Decays/DecayME0 decaymode D-->f_0,K-; 9.0E-5 1 /Herwig/Decays/DecayME0 decaymode D-->K*_2bar0,pi-; 7.8E-5 1 /Herwig/Decays/DecayME0 # decaymode D_s+->eta,rho+; 0.131 1 /Herwig/Decays/WSBHadronic decaymode D_s+->eta',rho+; 0.122 1 /Herwig/Decays/WSBHadronic decaymode D_s+->phi,rho+; 0.082 1 /Herwig/Decays/WSBHadronic decaymode D_s+->tau+,nu_tau; 0.0717 1 /Herwig/Decays/PScalarlnu decaymode D_s+->K*+,K*bar0; 0.07 1 /Herwig/Decays/WSBHadronic decaymode D_s+->K*+,Kbar0; 0.053 1 /Herwig/Decays/WSBHadronic decaymode D_s+->eta',pi+; 0.047 1 /Herwig/Decays/WSBHadronic decaymode D_s+->K+,Kbar0; 0.044 1 /Herwig/Decays/DecayME0 decaymode D_s+->phi,pi+; 0.044 1 /Herwig/Decays/WSBHadronic decaymode D_s+->K+,K*bar0; 0.0375 1 /Herwig/Decays/WSBHadronic decaymode D_s+->eta,e+,nu_e; 0.0315 1 /Herwig/Decays/ISGW2 decaymode D_s+->eta,mu+,nu_mu; 0.0305 1 /Herwig/Decays/ISGW2 decaymode D_s+->a_1+,phi; 0.029 1 /Herwig/Decays/WSBHadronic decaymode D_s+->phi,e+,nu_e; 0.0247 1 /Herwig/Decays/ISGW2 decaymode D_s+->phi,mu+,nu_mu; 0.0233 1 /Herwig/Decays/ISGW2 decaymode D_s+->eta,pi+; 0.0211 1 /Herwig/Decays/WSBHadronic decaymode D_s+->eta',e+,nu_e; 0.0111 1 /Herwig/Decays/ISGW2 decaymode D_s+->eta',mu+,nu_mu; 0.0105 1 /Herwig/Decays/ISGW2 decaymode D_s+->eta,a_1+; 0.01 1 /Herwig/Decays/WSBHadronic decaymode D_s+->K0,rho+; 0.009 1 /Herwig/Decays/WSBHadronic decaymode D_s+->f_0,pi+; 0.008 1 /Herwig/Decays/DecayME0 decaymode D_s+->pi+,pi+,pi+,pi-,pi-; 0.0076 1 /Herwig/Decays/Mambo decaymode D_s+->mu+,nu_mu; 0.0074 1 /Herwig/Decays/PScalarlnu decaymode D_s+->K+,K*_0bar0; 0.0072 1 /Herwig/Decays/DecayME0 decaymode D_s+->f'_0,pi+; 0.005 1 /Herwig/Decays/DecayME0 decaymode D_s+->rho'0,pi+; 0.005 1 /Herwig/Decays/DecayME0 decaymode D_s+->K0,pi+; 0.0045 1 /Herwig/Decays/DecayME0 decaymode D_s+->K0,a_1+; 0.0045 1 /Herwig/Decays/WSBHadronic decaymode D_s+->K*0,rho+; 0.0042 1 /Herwig/Decays/WSBHadronic decaymode D_s+->omega,pi+; 0.0034 1 /Herwig/Decays/DecayME0 decaymode D_s+->K+,rho0; 0.0026 1 /Herwig/Decays/WSBHadronic decaymode D_s+->K+,K'_1bar0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode D_s+->K+,rho'0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode D_s+->K*+,K'_1bar0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode D_s+->K'_1+,K*bar0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode D_s+->K'_1+,Kbar0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode D_s+->K0,mu+,nu_mu; 0.0022 1 /Herwig/Decays/ISGW2 decaymode D_s+->K0,e+,nu_e; 0.0022 1 /Herwig/Decays/ISGW2 decaymode D_s+->f_2,pi+; 0.0021 1 /Herwig/Decays/DecayME0 decaymode D_s+->K*0,pi+; 0.0021 1 /Herwig/Decays/WSBHadronic decaymode D_s+->K*0,a_1+; 0.0021 1 /Herwig/Decays/WSBHadronic decaymode D_s+->K+,K-,pi+,pi0; 0.00123 1 /Herwig/Decays/Mambo decaymode D_s+->K0,K-,pi+,pi+; 0.00122 1 /Herwig/Decays/Mambo decaymode D_s+->K0,Kbar0,pi+,pi0; 0.00122 1 /Herwig/Decays/Mambo decaymode D_s+->K+,Kbar0,pi+,pi-; 0.00122 1 /Herwig/Decays/Mambo decaymode D_s+->eta,K+; 0.001 1 /Herwig/Decays/WSBHadronic decaymode D_s+->eta,K*+; 0.001 1 /Herwig/Decays/WSBHadronic decaymode D_s+->K*0,e+,nu_e; 0.001 1 /Herwig/Decays/ISGW2 decaymode D_s+->K+,pi+,pi-; 0.001 1 /Herwig/Decays/DecayME0 decaymode D_s+->eta',K+; 0.001 1 /Herwig/Decays/WSBHadronic decaymode D_s+->eta',K*+; 0.001 1 /Herwig/Decays/WSBHadronic decaymode D_s+->phi,K*+; 0.001 1 /Herwig/Decays/DecayME0 decaymode D_s+->K*0,mu+,nu_mu; 0.00097 1 /Herwig/Decays/ISGW2 decaymode D_s+->K*_00,pi+; 0.00075 1 /Herwig/Decays/DecayME0 decaymode D_s+->K+,K-,K+; 0.00032 1 /Herwig/Decays/DecayME0 decaymode D_s+->phi,K+; 0.0003 1 /Herwig/Decays/WSBHadronic decaymode D_s+->K+,K+,pi-; 0.00027 1 /Herwig/Decays/DecayME0 # decaymode D_s-->eta,rho-; 0.131 1 /Herwig/Decays/WSBHadronic decaymode D_s-->eta',rho-; 0.122 1 /Herwig/Decays/WSBHadronic decaymode D_s-->phi,rho-; 0.082 1 /Herwig/Decays/WSBHadronic decaymode D_s-->tau-,nu_taubar; 0.0717 1 /Herwig/Decays/PScalarlnu decaymode D_s-->K*-,K*0; 0.07 1 /Herwig/Decays/WSBHadronic decaymode D_s-->K*-,K0; 0.053 1 /Herwig/Decays/WSBHadronic decaymode D_s-->eta',pi-; 0.047 1 /Herwig/Decays/WSBHadronic decaymode D_s-->K-,K0; 0.044 1 /Herwig/Decays/DecayME0 decaymode D_s-->phi,pi-; 0.044 1 /Herwig/Decays/WSBHadronic decaymode D_s-->K-,K*0; 0.0375 1 /Herwig/Decays/WSBHadronic decaymode D_s-->eta,e-,nu_ebar; 0.0315 1 /Herwig/Decays/ISGW2 decaymode D_s-->eta,mu-,nu_mubar; 0.0305 1 /Herwig/Decays/ISGW2 decaymode D_s-->a_1-,phi; 0.029 1 /Herwig/Decays/WSBHadronic decaymode D_s-->phi,e-,nu_ebar; 0.0247 1 /Herwig/Decays/ISGW2 decaymode D_s-->phi,mu-,nu_mubar; 0.0233 1 /Herwig/Decays/ISGW2 decaymode D_s-->eta,pi-; 0.0211 1 /Herwig/Decays/WSBHadronic decaymode D_s-->eta',e-,nu_ebar; 0.0111 1 /Herwig/Decays/ISGW2 decaymode D_s-->eta',mu-,nu_mubar; 0.0105 1 /Herwig/Decays/ISGW2 decaymode D_s-->eta,a_1-; 0.01 1 /Herwig/Decays/WSBHadronic decaymode D_s-->Kbar0,rho-; 0.009 1 /Herwig/Decays/WSBHadronic decaymode D_s-->f_0,pi-; 0.008 1 /Herwig/Decays/DecayME0 decaymode D_s-->pi-,pi-,pi-,pi+,pi+; 0.0076 1 /Herwig/Decays/Mambo decaymode D_s-->mu-,nu_mubar; 0.0074 1 /Herwig/Decays/PScalarlnu decaymode D_s-->K-,K*_00; 0.0072 1 /Herwig/Decays/DecayME0 decaymode D_s-->f'_0,pi-; 0.005 1 /Herwig/Decays/DecayME0 decaymode D_s-->rho'0,pi-; 0.005 1 /Herwig/Decays/DecayME0 decaymode D_s-->Kbar0,a_1-; 0.0045 1 /Herwig/Decays/WSBHadronic decaymode D_s-->Kbar0,pi-; 0.0045 1 /Herwig/Decays/DecayME0 decaymode D_s-->K*bar0,rho-; 0.0042 1 /Herwig/Decays/WSBHadronic decaymode D_s-->omega,pi-; 0.0034 1 /Herwig/Decays/DecayME0 decaymode D_s-->K-,rho0; 0.0026 1 /Herwig/Decays/WSBHadronic decaymode D_s-->K'_1-,K0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode D_s-->K'_1-,K*0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode D_s-->K*-,K'_10; 0.0025 1 /Herwig/Decays/DecayME0 decaymode D_s-->K-,K'_10; 0.0025 1 /Herwig/Decays/DecayME0 decaymode D_s-->K-,rho'0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode D_s-->Kbar0,e-,nu_ebar; 0.0022 1 /Herwig/Decays/ISGW2 decaymode D_s-->Kbar0,mu-,nu_mubar; 0.0022 1 /Herwig/Decays/ISGW2 decaymode D_s-->K*bar0,a_1-; 0.0021 1 /Herwig/Decays/WSBHadronic decaymode D_s-->K*bar0,pi-; 0.0021 1 /Herwig/Decays/WSBHadronic decaymode D_s-->f_2,pi-; 0.0021 1 /Herwig/Decays/DecayME0 decaymode D_s-->K-,K+,pi-,pi0; 0.00123 1 /Herwig/Decays/Mambo decaymode D_s-->K-,K0,pi-,pi+; 0.00122 1 /Herwig/Decays/Mambo decaymode D_s-->Kbar0,K0,pi-,pi0; 0.00122 1 /Herwig/Decays/Mambo decaymode D_s-->Kbar0,K+,pi-,pi-; 0.00122 1 /Herwig/Decays/Mambo decaymode D_s-->K-,pi-,pi+; 0.001 1 /Herwig/Decays/DecayME0 decaymode D_s-->K*bar0,e-,nu_ebar; 0.001 1 /Herwig/Decays/ISGW2 decaymode D_s-->eta,K*-; 0.001 1 /Herwig/Decays/WSBHadronic decaymode D_s-->eta,K-; 0.001 1 /Herwig/Decays/WSBHadronic decaymode D_s-->eta',K*-; 0.001 1 /Herwig/Decays/WSBHadronic decaymode D_s-->eta',K-; 0.001 1 /Herwig/Decays/WSBHadronic decaymode D_s-->phi,K*-; 0.001 1 /Herwig/Decays/DecayME0 decaymode D_s-->K*bar0,mu-,nu_mubar; 0.00097 1 /Herwig/Decays/ISGW2 decaymode D_s-->K*_0bar0,pi-; 0.00075 1 /Herwig/Decays/DecayME0 decaymode D_s-->K-,K+,K-; 0.00032 1 /Herwig/Decays/DecayME0 decaymode D_s-->phi,K-; 0.0003 1 /Herwig/Decays/WSBHadronic decaymode D_s-->K-,K-,pi+; 0.00027 1 /Herwig/Decays/DecayME0 # decaymode B0->u=dbar,cbar=d; 0.328931417 1 /Herwig/Decays/WeakPartonic100 decaymode B0->c=sbar,cbar=d; 0.074 1 /Herwig/Decays/WeakPartonic100 decaymode B0->D*-,mu+,nu_mu; 0.057 1 /Herwig/Decays/HQET decaymode B0->D*-,e+,nu_e; 0.057 1 /Herwig/Decays/HQET decaymode B0->cd_0bar=ud_0; 0.033 1 /Herwig/Decays/WeakPartonic0 decaymode B0->D_s*+,D*-; 0.024 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->u=sbar,cbar=d; 0.021 1 /Herwig/Decays/WeakPartonic100 decaymode B0->D-,mu+,nu_mu; 0.0207 1 /Herwig/Decays/HQET decaymode B0->D-,e+,nu_e; 0.0207 1 /Herwig/Decays/HQET decaymode B0->u=cbar,dbar=d; 0.018 1 /Herwig/Decays/WeakPartonic100 decaymode B0->D*-,tau+,nu_tau; 0.016 1 /Herwig/Decays/HQET decaymode B0->D*-,D_s+; 0.0126 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D*-,a_1+; 0.012 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D*-,D*0,K+; 0.01 1 /Herwig/Decays/DecayME0 decaymode B0->D*-,D_s1+; 0.0098 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->cs_0bar=ud_0; 0.009 1 /Herwig/Decays/WeakPartonic0 decaymode B0->D-,D_s+; 0.009 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D_s*+,D-; 0.009 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->a_1+,D-; 0.00834 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D'_1-,mu+,nu_mu; 0.0083 1 /Herwig/Decays/ISGW2 decaymode B0->D'_1-,e+,nu_e; 0.0083 1 /Herwig/Decays/ISGW2 decaymode B0->rho+,D-; 0.0077 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D*-,D*+,K0; 0.007 1 /Herwig/Decays/DecayME0 decaymode B0->D-,tau+,nu_tau; 0.007 1 /Herwig/Decays/HQET decaymode B0->rho+,D*-; 0.0068 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->c=dbar,cbar=d; 0.006 1 /Herwig/Decays/WeakPartonic100 decaymode B0->D_1-,mu+,nu_mu; 0.0052 1 /Herwig/Decays/ISGW2 decaymode B0->D_1-,e+,nu_e; 0.0052 1 /Herwig/Decays/ISGW2 decaymode B0->D*-,D*+,K*0; 0.005 1 /Herwig/Decays/DecayME0 decaymode B0->D*-,D*0,K*+; 0.005 1 /Herwig/Decays/DecayME0 decaymode B0->sbar,g,d; 0.005 1 /Herwig/Decays/WeakPartonic0 decaymode B0->D-,D*0,K+; 0.0049 1 /Herwig/Decays/DecayME0 decaymode B0->D-,D*+,K0; 0.0047 1 /Herwig/Decays/DecayME0 decaymode B0->D_0*-,mu+,nu_mu; 0.0045 1 /Herwig/Decays/ISGW2 decaymode B0->D_0*-,e+,nu_e; 0.0045 1 /Herwig/Decays/ISGW2 decaymode B0->D*_2-,D_s+; 0.0042 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D_s1+,D-; 0.0041 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D*_2-,D_s*+; 0.004 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->c=sbar,ubar=d; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode B0->D_s+,Dbar0,pi-; 0.0037 1 /Herwig/Decays/DecayME0 decaymode B0->D_s*+,Dbar0,pi-; 0.0037 1 /Herwig/Decays/DecayME0 decaymode B0->D*-,D0,K+; 0.0031 1 /Herwig/Decays/DecayME0 decaymode B0->u=dbar,ubar=d; 0.003 1 /Herwig/Decays/WeakPartonic100 decaymode B0->D_s+,D-,pi-,pi+; 0.003 1 /Herwig/Decays/Mambo decaymode B0->D_s*+,D-,pi-,pi+; 0.003 1 /Herwig/Decays/Mambo decaymode B0->D*-,pi+; 0.0028 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D-,pi+; 0.0028 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D*-,D+,K*0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B0->D*-,D0,K*+; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B0->D-,D+,K*0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B0->D-,D*+,K*0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B0->D-,D0,K*+; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B0->D-,D*0,K*+; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B0->D_1-,D_s*+; 0.0024 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D*_2-,mu+,nu_mu; 0.0023 1 /Herwig/Decays/ISGW2 decaymode B0->D*_2-,e+,nu_e; 0.0023 1 /Herwig/Decays/ISGW2 decaymode B0->D*_2-,rho+; 0.0022 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D-,pi-,pi+,pi+; 0.0022 1 /Herwig/Decays/Mambo decaymode B0->u=ubar,sbar=d; 0.0022 1 /Herwig/Decays/WeakPartonic0 decaymode B0->D_s+,Dbar0,pi-,pi0; 0.0022 1 /Herwig/Decays/Mambo decaymode B0->D_s+,D-,pi0,pi0; 0.0022 1 /Herwig/Decays/Mambo decaymode B0->D_s*+,Dbar0,pi-,pi0; 0.0022 1 /Herwig/Decays/Mambo decaymode B0->D_s*+,D-,pi0,pi0; 0.0022 1 /Herwig/Decays/Mambo decaymode B0->u=ubar,dbar=d; 0.00205 1 /Herwig/Decays/WeakPartonic0 decaymode B0->D'_1-,tau+,nu_tau; 0.002 1 /Herwig/Decays/ISGW2 decaymode B0->D*_2-,tau+,nu_tau; 0.002 1 /Herwig/Decays/ISGW2 decaymode B0->mu+,nu_mu,ubar=d; 0.001892 1 /Herwig/Decays/WeakPartonic100 decaymode B0->e+,nu_e,ubar=d; 0.001892 1 /Herwig/Decays/WeakPartonic100 decaymode B0->D*-,D+,K0; 0.0018 1 /Herwig/Decays/DecayME0 decaymode B0->d=dbar,sbar=d; 0.0018 1 /Herwig/Decays/WeakPartonic0 decaymode B0->D_s+,D-,pi0; 0.0018 1 /Herwig/Decays/DecayME0 decaymode B0->D_s*+,D-,pi0; 0.0018 1 /Herwig/Decays/DecayME0 decaymode B0->D-,D0,K+; 0.0017 1 /Herwig/Decays/DecayME0 decaymode B0->D*-,D_s0+; 0.0016 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D_s0+,D-; 0.0016 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D-,D+,K0; 0.0015 1 /Herwig/Decays/DecayME0 decaymode B0->s=sbar,sbar=d; 0.0015 1 /Herwig/Decays/WeakPartonic0 decaymode B0->D0,D*bar0,K0; 0.0015 1 /Herwig/Decays/DecayME0 decaymode B0->D*0,D*bar0,K0; 0.0015 1 /Herwig/Decays/DecayME0 decaymode B0->Jpsi,K_10; 0.0015 1 /Herwig/Decays/DecayME0 decaymode B0->D'_1-,rho+; 0.0013 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D_1-,tau+,nu_tau; 0.0013 1 /Herwig/Decays/ISGW2 decaymode B0->D_0*-,tau+,nu_tau; 0.0013 1 /Herwig/Decays/ISGW2 decaymode B0->Jpsi,K*0; 0.001291 1 /Herwig/Decays/DecayME0 decaymode B0->D'_1-,D_s*+; 0.0012 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D_1-,D_s+; 0.0012 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D-,rho0,pi+; 0.0011 1 /Herwig/Decays/DecayME0 decaymode B0->D-,rho+,pi0; 0.0011 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,eta_c; 0.00108 1 /Herwig/Decays/DecayME0 decaymode B0->D*bar0,pi-,pi+,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode B0->Dbar0,pi-,pi+,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode B0->D*-,pi0,pi+,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode B0->D*-,rho0,pi+; 0.001 1 /Herwig/Decays/DecayME0 decaymode B0->D*-,rho+,pi0; 0.001 1 /Herwig/Decays/DecayME0 decaymode B0->D-,pi0,pi+,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode B0->D*0,D*bar0,K*0; 0.001 1 /Herwig/Decays/DecayME0 decaymode B0->D*_2-,pi+; 0.0009 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->u=cbar,sbar=d; 0.0009 1 /Herwig/Decays/WeakPartonic100 decaymode B0->s=sbar,dbar=d; 0.0009 1 /Herwig/Decays/WeakPartonic0 decaymode B0->D*-,D*+; 0.00083 1 /Herwig/Decays/DecayME0 decaymode B0->D*-,pi+,pi0; 0.0008 1 /Herwig/Decays/DecayME0 decaymode B0->d=dbar,dbar=d; 0.0007 1 /Herwig/Decays/WeakPartonic0 decaymode B0->psi(2S),K*0; 0.00066 1 /Herwig/Decays/DecayME0 decaymode B0->D'_1-,D_s+; 0.0006 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D_1-,pi+; 0.0006 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D*bar0,pi0,pi0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B0->Dbar0,pi-,pi+; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B0->D-,pi+,pi0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B0->D0,D*bar0,K*0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B0->D0,Dbar0,K0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B0->D0,Dbar0,K*0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B0->D*0,Dbar0,K0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B0->D*0,Dbar0,K*0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B0->Jpsi,K*_20; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B0->psi(3770),K*0; 0.00048 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,eta_c(2S); 0.00044 1 /Herwig/Decays/DecayME0 decaymode B0->D*bar0,omega; 0.00042 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D_1-,rho+; 0.0004 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->chi_c1,K0,pi-,pi+; 0.0004 1 /Herwig/Decays/Mambo decaymode B0->chi_c1,K+,pi-; 0.0004 1 /Herwig/Decays/DecayME0 decaymode B0->psi(2S),K+,pi-; 0.0004 1 /Herwig/Decays/DecayME0 decaymode B0->psi(2S),K_10; 0.0004 1 /Herwig/Decays/DecayME0 decaymode B0->D*-,K*+; 0.00038 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->K*+,D-; 0.00037 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->sbar,d,gamma; 0.0003118 1 /Herwig/Decays/BtosgammaKagan decaymode B0->D*bar0,pi-,pi+; 0.0003 1 /Herwig/Decays/DecayME0 decaymode B0->chi_c1,K*0; 0.0003 1 /Herwig/Decays/DecayME0 decaymode B0->D*bar0,rho0; 0.00029 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->Dbar0,pi0; 0.00029 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->rho0,Dbar0; 0.00029 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->psi(3770),K_10; 0.00029 1 /Herwig/Decays/DecayME0 decaymode B0->D*bar0,pi0; 0.00027 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->rho-,mu+,nu_mu; 0.000269 1 /Herwig/Decays/BZVector decaymode B0->rho-,e+,nu_e; 0.000269 1 /Herwig/Decays/BZVector decaymode B0->D*bar0,eta; 0.00026 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->omega,Dbar0; 0.00025 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->Dbar0,eta; 0.00022 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D_0*-,pi+; 0.0002 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D-,K+; 0.0002 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->K*0,chi_c0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B0->eta_c,K0,pi-,pi+; 0.0002 1 /Herwig/Decays/Mambo decaymode B0->eta_c,K+,pi-; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B0->Jpsi,K+,pi-; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B0->chi_c2,K0,pi-,pi+; 0.0002 1 /Herwig/Decays/Mambo decaymode B0->chi_c2,K+,pi-; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B0->chi_c0,K0,pi-,pi+; 0.0002 1 /Herwig/Decays/Mambo decaymode B0->chi_c0,K+,pi-; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B0->chi_c1,K0,pi0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B0->chi_c1,K0,pi0,pi0; 0.0002 1 /Herwig/Decays/Mambo decaymode B0->chi_c1,K+,pi-,pi0; 0.0002 1 /Herwig/Decays/Mambo decaymode B0->psi(2S),K0,pi-,pi+; 0.0002 1 /Herwig/Decays/Mambo decaymode B0->psi(2S),K0,pi0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B0->D*bar0,eta'; 0.00017 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->Dbar0,eta'; 0.00017 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D*-,K+; 0.00017 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->psi(3770),K0,pi-,pi+; 0.00014 1 /Herwig/Decays/Mambo decaymode B0->psi(3770),K0,pi0; 0.00014 1 /Herwig/Decays/DecayME0 decaymode B0->psi(3770),K+,pi-; 0.00014 1 /Herwig/Decays/DecayME0 decaymode B0->pi-,mu+,nu_mu; 0.000133 1 /Herwig/Decays/BZScalar decaymode B0->pi-,e+,nu_e; 0.000133 1 /Herwig/Decays/BZScalar decaymode B0->D'_1-,pi+; 0.0001 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->D*bar0,pi0,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B0->Dbar0,pi0,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B0->eta_c,K0,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B0->eta_c,K0,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B0->eta_c,K+,pi-,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B0->Jpsi,K0,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B0->Jpsi,K'_10; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B0->chi_c2,K0,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B0->chi_c2,K0,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B0->chi_c2,K+,pi-,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B0->chi_c0,K0,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B0->chi_c0,K0,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B0->chi_c0,K+,pi-,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B0->psi(2S),K0,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B0->psi(2S),K+,pi-,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B0->a_1-,tau+,nu_tau; 9.0E-5 1 /Herwig/Decays/ISGW2 decaymode B0->Jpsi,phi,K0; 9.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,tau+,nu_tau; 8.3E-5 1 /Herwig/Decays/BZVector decaymode B0->eta_c(2S),K0,pi-,pi+; 8.0E-5 1 /Herwig/Decays/Mambo decaymode B0->eta_c(2S),K+,pi-; 8.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->psi(3770),K0,pi0,pi0; 7.0E-5 1 /Herwig/Decays/Mambo decaymode B0->psi(3770),K+,pi-,pi0; 7.0E-5 1 /Herwig/Decays/Mambo decaymode B0->pi-,tau+,nu_tau; 6.0E-5 1 /Herwig/Decays/BZScalar decaymode B0->a_10,a_10; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_1+,a_1-; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->eta_c(2S),K0,pi0; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->eta_c(2S),K0,pi0,pi0; 5.0E-5 1 /Herwig/Decays/Mambo decaymode B0->eta_c(2S),K+,pi-,pi0; 5.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K0; 4.8E-5 1 /Herwig/Decays/DecayME0 decaymode B0->D_s-,K+; 4.6E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,gamma; 4.01E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_1-,pi+; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->D*bar0,Kbar0; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->D*bar0,K*0; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->Dbar0,Kbar0; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,Dbar0; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_1+,pi-; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->D_s+,pi-; 3.9E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->rho+,rho-; 3.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->Jpsi,omega; 3.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->chi_c2,K*0; 3.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->pi+,pi-,K0; 2.6E-5 1 /Herwig/Decays/DecayME0 decaymode B0->D_s*+,pi-; 2.6E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->pi-,pi+,pi0; 2.4E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K+,K-,K0; 2.1E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_1-,K*+; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,K*+; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,K*_0+; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K+,pi-,eta; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_10,K*0; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,eta; 1.9E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K+,pi-; 1.8E-5 1 /Herwig/Decays/DecayME0 decaymode B0->pi+,pi-,eta; 1.7E-5 1 /Herwig/Decays/DecayME0 decaymode B0->D_s*-,K+; 1.6E-5 1 /Herwig/Decays/DecayME0 decaymode B0->D_s*-,K*+; 1.6E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,D_s+; 1.6E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->K*+,D_s-; 1.6E-5 1 /Herwig/Decays/DecayME0 decaymode B0->D_s*+,rho-; 1.6E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B0->Jpsi,rho0; 1.6E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K*+,pi-; 1.3E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K0,pi0; 1.2E-5 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K*0; 1.1E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_1-,pi+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_1-,rho+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_1-,K0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_1-,K+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_1-,K+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K*_0-,K+,K0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->b_1-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->b_1-,K+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K*-,K+,K0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K-,K+,K0,rho0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K-,K+,K0,omega; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K-,K+,K0,f_0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K-,K+,K*0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K-,K+,K+,rho-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K-,K+,K*+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K-,K+,K*_00; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K-,K*+,K0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K-,K*_0+,K0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,pi+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,K0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,K0,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->rho-,K*0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,K+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,K+,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->rho-,K+,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->rho-,K*+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,K*_00,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,K*_0+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,a_00,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,a_0+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,f_0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->pi-,pi0,K*+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->pi-,pi0,K*+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->pi-,pi0,K*_0+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->pi-,pi0,K*_0+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->pi-,pi+,K*0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->pi-,pi+,K*_00; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->pi0,pi0,pi-,K+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,pi0,K0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,K*0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,K*_00; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->pi0,pi0,K*_00,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->rho0,a_0-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,rho0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,rho+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,K0,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->rho0,K0,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->rho0,K*0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,K*0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,K+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,K+,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->rho0,K*+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,K*_00; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,K*_00,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,K*_0+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,a_00,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,a_0+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,f_0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->pi+,pi-,pi-,K+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,K*0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,K*+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,K*_00,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,K*_0+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi0,pi-,K0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->rho+,a_0-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho+,a_0-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho+,rho-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho+,pi-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho+,K0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho+,K0,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->rho+,K*0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho+,K+,pi-,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->rho+,K*_00,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho+,a_00,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho+,f_0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->omega,rho0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->omega,rho+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->omega,K0,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->omega,K0,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->omega,K*0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->omega,K+,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->omega,K*+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->omega,f_0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K0,Kbar0,K0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K0,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K0,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K+,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K*_00,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K*_0+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K0,K0,K*_0bar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K0,K*+,Kbar0,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K*0,D0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,f_0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->K+,K*_0bar0,K0,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K+,K*-,K+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K0,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K0,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K+,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K*_00,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K*_0+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K+,K0,K*bar0,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K+,K*0,Kbar0,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K+,K+,K*_0-,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K+,K*_00,Kbar0,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->K*+,f_0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K0,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->phi,K0,rho0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K0,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->phi,K0,omega; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K0,f_0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K*0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K+,rho-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K+,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B0->phi,K*+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K*_00; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K*_00,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K*_0+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->D*0,K*0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->b_10,K0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->b_1+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_10,pi0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_10,rho0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_10,pi+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_10,omega; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_10,K0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_10,K0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_10,K+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_1+,rho-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_1+,pi-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->a_1+,K0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,K+; 9.9E-6 1 /Herwig/Decays/DecayME0 decaymode B0->a_0-,tau+,nu_tau; 8.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->b_1-,tau+,nu_tau; 8.0E-6 1 /Herwig/Decays/ISGW2 decaymode B0->a_2-,tau+,nu_tau; 8.0E-6 1 /Herwig/Decays/ISGW2 decaymode B0->phi,K0,eta; 7.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->f_0,K0; 6.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->a_1-,pi+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,pi+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,K0,pi+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho-,K+,pi0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho-,K+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,K*+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,K*_0+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,a_0+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->pi-,pi0,K*+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi-,pi0,K*_0+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi-,eta,K*+; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->pi0,pi0,eta,K0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,K*0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,K*_00,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,K*_00,eta'; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi0,eta,pi-,K+; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho0,rho0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,K0,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,K0,pi0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho0,K*0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,K+,pi-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho0,K*_00,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,a_00,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,f_0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->pi+,pi-,eta,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,K*0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,K*_00,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,eta,pi-,K0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho+,a_0-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho+,rho-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho+,pi-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho+,K0,pi-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->omega,rho0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->omega,K0,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->omega,K0,pi0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->omega,K*0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->omega,K+,pi-; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->omega,K+,pi-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K0,pi0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K+,pi-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K*_00,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,K0,K*_0bar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K*0,a_00; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,a_00,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,a_0+,pi-; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,f_0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,f_0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K+,K-,K0,pi0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K0,pi0,eta'; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K+,pi-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K*_00,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K*+,a_0-; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*+,a_0-,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*+,a_00,pi-; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K0,pi0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->phi,K*0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K+,pi-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B0->a_10,pi0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->a_1+,pi-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->a_0-,pi+; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,pi+,pi-; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->omega,pi+,pi-; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,Kbar0; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,phi,K0; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,phi,K*0; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*_00,Kbar0; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->a_1-,pi+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K-,K+,K'_10; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K-,K+,K'_10,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K-,K+,K'_1+,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho-,pi+,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho-,pi+,pi+,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho-,K0,pi+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho-,K+,pi0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho-,K+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,K*+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,K*_0+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,a_0+; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho-,a_0+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->pi-,pi0,K*+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi-,pi0,K*_0+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi-,eta',K*+; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->pi0,pi0,pi-,K+,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,pi0,K0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,K*0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,eta',K0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi0,eta,eta,K0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi0,eta',pi-,K+; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho0,pi0,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho0,rho0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,rho0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,pi+,pi-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho0,K0,pi0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho0,K0,eta; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,K*0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,K+,pi-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho0,K*_00,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,a_00,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,f_0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->pi+,pi-,pi-,K+,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,pi0,K0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,pi+,K0,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,eta,eta; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,K*0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,eta',pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,K*_00,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho+,a_0-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho+,rho-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho+,pi-,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho+,pi-,pi+,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho+,K0,pi-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->eta,eta,pi-,K+; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->omega,pi0,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->omega,rho0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->omega,pi+,pi-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->omega,K0,pi0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->omega,K0,eta; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->omega,K*0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->omega,K+,pi-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,pi0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K0,Kbar0,K0,pi0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K+,pi-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K*_00,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K'_10,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,pi0,pi0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K0,K0,K'_1bar0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,K0,K*_0bar0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K*0,a_00,eta; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,f_0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K+,K-,K+,pi-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K*_00,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K+,pi-,pi0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K+,K+,K'_1-,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K*+,a_0-,eta; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*+,K-; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K0,pi0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->phi,K*0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K+,pi-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->phi,K'_10; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K'_10,pi0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K'_1+,pi-; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*_0+,K-; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->a_10,pi0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->a_1+,pi-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->f_0,pi0,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->f_0,pi+,pi-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K*0,e+,e-; 1.835E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,pi0; 1.7E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,mu+,mu-; 1.38E-6 1 /Herwig/Decays/DecayME0 decaymode B0->a_0-,pi+,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->a_0-,pi+,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->a_0-,pi+,pi+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->a_0-,K+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*-,K0,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*-,K0,pi+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K*-,K*0,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*-,K+,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*-,K+,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K*-,K+,pi+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K*-,K*+,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K-,K0,rho+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K-,K*0,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K-,K+,K'_10,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K-,K+,K'_10,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->Kbar0,K+,rho-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->Kbar0,K+,rho0,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->Kbar0,K+,omega,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->Kbar0,K+,f_0,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho-,pi+,pi0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho-,pi+,pi0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,pi-,K+,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,pi-,K+,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->pi0,pi0,pi0,K0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,pi0,K0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->pi0,pi0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->pi0,eta,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->pi0,eta,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->pi0,eta,eta',K0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,pi0,eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho0,pi0,eta',pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho0,pi+,pi-,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho0,pi+,pi-,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho0,K0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->pi+,pi-,pi-,K+,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,pi-,K+,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,pi0,K0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,pi0,K0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,pi+,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->pi+,pi-,eta',eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho+,pi-,pi0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->rho+,pi-,pi0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->eta,eta',pi-,K+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->omega,pi0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->omega,pi0,eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->omega,pi0,eta',pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->omega,rho0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->omega,pi+,pi-,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->omega,pi+,pi-,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->omega,omega; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->omega,K0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K0,K-,rho0,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,K-,rho+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,K-,omega,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,K-,f_0,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,K*bar0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K0,K*bar0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,K*bar0,pi+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,rho-,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,pi-,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,rho0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K0,Kbar0,rho0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,rho+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K0,Kbar0,omega; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K0,Kbar0,omega,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K0,Kbar0,K'_10,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K'_10,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,f_0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,pi0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K0,pi0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K0,eta,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K0,eta,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K0,K0,K'_1bar0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,K0,K'_1bar0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K0,eta',eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,K-,pi+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K*0,K*bar0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,K*bar0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,Kbar0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,Kbar0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K*0,Kbar0,pi+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K*0,omega; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,a_00,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K+,K-,rho-,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,pi-,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K+,K-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K+,K-,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K+,K-,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,rho0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K+,K-,rho0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,rho+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K+,K-,omega; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K+,K-,omega,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K+,K-,f_0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K+,K*bar0,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K+,K*bar0,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K+,Kbar0,rho-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K+,pi-,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*+,a_0-,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*+,K*-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*+,K-,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*+,K-,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K*+,K-,pi+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K*+,K*bar0,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*+,Kbar0,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*+,Kbar0,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->phi,rho-,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->phi,rho0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,pi+,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->phi,rho+,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,omega; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,omega,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K0,Kbar0,K0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->phi,K0,Kbar0,K*0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->phi,K0,K0,K*bar0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->phi,K0,K+,K*-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->phi,K+,K-,K0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->phi,K+,K-,K*0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->phi,K'_10,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K'_10,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->phi,f_0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*_00,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K*_0+,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K''*0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K''*0,K0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K''*+,K-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->K''*+,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->a_00,pi0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->a_00,pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->a_00,pi+,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->a_00,K0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->a_0+,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->a_0+,pi-,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->a_0+,pi-,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->a_0+,pi-,pi+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->f_0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->f_0,pi0,pi0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->f_0,pi0,pi0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->f_0,pi+,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B0->f_0,pi+,pi-,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->f_0,pi+,pi-,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B0->K_L0,K_L0; 6.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->K_S0,K_S0; 6.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->K0,mu+,mu-; 5.74E-7 1 /Herwig/Decays/DecayME0 decaymode B0->K0,e+,e-; 5.74E-7 1 /Herwig/Decays/DecayME0 decaymode B0->K*-,K0,pi+,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K*-,K+,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K*-,K*+,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->Kbar0,K+,rho-,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->pi-,K+,Kbar0; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->pi0,pi0,pi0,pi0,pi0; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->rho0,pi0,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->pi+,K-,K0; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->pi+,pi-,pi0,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,pi+,pi-,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->omega,pi0,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->K0,K-,rho+,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,K*bar0,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,rho0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K*0,K-,pi+,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K*0,K*bar0,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,Kbar0,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,rho0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,omega,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K*bar0,pi-,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K*+,K-,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K*+,Kbar0,pi-,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->phi,pi0,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->phi,rho0,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->phi,pi+,pi-,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K*-,K0,pi+,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K*-,K+,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K*-,K*+,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->Kbar0,K+,rho-,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->Kbar0,K+,pi-,pi0,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->Kbar0,K+,pi-,pi+,pi-; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,pi0,pi0,eta; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->rho0,pi0,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->rho0,eta,eta; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->pi+,pi-,pi0,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->pi+,pi-,pi+,pi-,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->omega,pi0,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->omega,eta,eta; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->K0,K-,pi+,pi0,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,K-,pi+,pi+,pi-; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,K-,rho+,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,K*bar0,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,pi0,pi0,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,rho0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,pi+,pi-,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,eta,eta; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K*0,K-,pi+,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K*0,K*bar0,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->K*0,Kbar0,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,pi0,pi0,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,rho0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,pi+,pi-,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,eta,eta; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,omega,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K*bar0,pi-,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K*+,K-,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K*+,Kbar0,pi-,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->phi,pi0,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->phi,rho0,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->phi,pi+,pi-,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K*0,tau+,tau-; 1.9E-7 1 /Herwig/Decays/DecayME0 decaymode B0->K0,tau+,tau-; 1.3E-7 1 /Herwig/Decays/DecayME0 decaymode B0->Kbar0,K+,pi-,pi0,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->Kbar0,K+,pi-,pi0,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->pi0,pi0,pi0,pi0,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->rho0,eta,eta'; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->omega,eta,eta'; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->K0,K-,pi+,pi0,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,K-,pi+,pi0,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,Kbar0,K+,pi-; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,pi0,pi0,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,pi0,pi0,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,pi+,pi-,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,pi+,pi-,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,eta,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K0,K-,pi+; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K0,Kbar0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K0,Kbar0,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K+,K-; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K0,Kbar0,K+,K-,K0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,pi0,pi0,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,pi0,pi0,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,pi+,pi-,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,pi+,pi-,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,eta,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K0,K-,pi+; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K0,Kbar0,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K+,K-; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K+,K-,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K+,K-,K0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->K+,K-,K+,Kbar0,pi-; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->phi,Kbar0,K+,pi-; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->phi,pi-,pi+; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->phi,rho0; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K0,K-,pi+; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->phi,K0,Kbar0; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K0,Kbar0,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->phi,K0,Kbar0,K0,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->phi,K0,Kbar0,K+,pi-; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->phi,K+,K-; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K+,K-,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->phi,K+,K-,K0,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->phi,K+,K-,K+,pi-; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B0->phi,phi; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->phi,phi,pi0; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode B0->rho'-,pi+; 0 1 /Herwig/Decays/DecayME0 decaymode B0->rho''-,pi+; 0 1 /Herwig/Decays/DecayME0 decaymode B0->D*-,pi-,pi+,pi+; 0 1 /Herwig/Decays/Mambo decaymode B0->rho-,pi+; 0 1 /Herwig/Decays/DecayME0 decaymode B0->rho+,pi-; 0 1 /Herwig/Decays/DecayME0 decaymode B0->eta,Kbar0; 0 1 /Herwig/Decays/DecayME0 decaymode B0->eta,K0; 0 1 /Herwig/Decays/DecayME0 decaymode B0->omega,Kbar0; 0 1 /Herwig/Decays/DecayME0 decaymode B0->omega,K0; 0 1 /Herwig/Decays/DecayME0 decaymode B0->K_S0,K_L0; 0 1 /Herwig/Decays/DecayME0 decaymode B0->K0,Kbar0; 0 1 /Herwig/Decays/DecayME0 decaymode B0->eta',Kbar0; 0 1 /Herwig/Decays/DecayME0 decaymode B0->eta',K0; 0 1 /Herwig/Decays/DecayME0 decaymode B0->phi,Kbar0; 0 1 /Herwig/Decays/DecayME0 decaymode B0->phi,K0; 0 1 /Herwig/Decays/DecayME0 decaymode B0->rho''+,pi-; 0 1 /Herwig/Decays/DecayME0 decaymode B0->rho'+,pi-; 0 1 /Herwig/Decays/DecayME0 # decaymode B+->u=dbar,cbar=u; 0.274437837 1 /Herwig/Decays/WeakPartonic100 decaymode B+->c=sbar,cbar=u; 0.074 1 /Herwig/Decays/WeakPartonic100 decaymode B+->D*bar0,mu+,nu_mu; 0.0617 1 /Herwig/Decays/HQET decaymode B+->D*bar0,e+,nu_e; 0.0617 1 /Herwig/Decays/HQET decaymode B+->cd_0bar=uu_1; 0.033 1 /Herwig/Decays/WeakPartonic0 decaymode B+->D_s*+,D*bar0; 0.0278 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->u=sbar,cbar=u; 0.0225 1 /Herwig/Decays/WeakPartonic100 decaymode B+->Dbar0,mu+,nu_mu; 0.0224 1 /Herwig/Decays/HQET decaymode B+->Dbar0,e+,nu_e; 0.0224 1 /Herwig/Decays/HQET decaymode B+->D*bar0,tau+,nu_tau; 0.016 1 /Herwig/Decays/HQET decaymode B+->D*bar0,a_1+; 0.01597 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D*-,pi0,pi+,pi+; 0.015 1 /Herwig/Decays/Mambo decaymode B+->rho+,Dbar0; 0.0134 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->Dbar0,D_s+; 0.0129 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D*bar0,D_s+; 0.0124 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D_s*+,Dbar0; 0.0111 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D*bar0,D*+,K0; 0.01 1 /Herwig/Decays/DecayME0 decaymode B+->D*bar0,rho+; 0.0098 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D*bar0,D_s1+; 0.0098 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D'_1bar0,mu+,nu_mu; 0.009 1 /Herwig/Decays/ISGW2 decaymode B+->D'_1bar0,e+,nu_e; 0.009 1 /Herwig/Decays/ISGW2 decaymode B+->cs_0bar=uu_1; 0.009 1 /Herwig/Decays/WeakPartonic0 decaymode B+->a_1+,Dbar0; 0.00887 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D*bar0,D*0,K+; 0.007 1 /Herwig/Decays/DecayME0 decaymode B+->Dbar0,tau+,nu_tau; 0.007 1 /Herwig/Decays/HQET decaymode B+->D_1bar0,mu+,nu_mu; 0.0056 1 /Herwig/Decays/ISGW2 decaymode B+->D_1bar0,e+,nu_e; 0.0056 1 /Herwig/Decays/ISGW2 decaymode B+->D*bar0,D*+,K*0; 0.005 1 /Herwig/Decays/DecayME0 decaymode B+->D*bar0,D*0,K*+; 0.005 1 /Herwig/Decays/DecayME0 decaymode B+->Dbar0,pi-,pi+,pi+; 0.005 1 /Herwig/Decays/Mambo decaymode B+->Dbar0,pi+; 0.005 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->sbar,g,u; 0.005 1 /Herwig/Decays/WeakPartonic0 decaymode B+->D_0*bar0,mu+,nu_mu; 0.0049 1 /Herwig/Decays/ISGW2 decaymode B+->D_0*bar0,e+,nu_e; 0.0049 1 /Herwig/Decays/ISGW2 decaymode B+->Dbar0,D*+,K0; 0.0049 1 /Herwig/Decays/DecayME0 decaymode B+->Dbar0,D*0,K+; 0.0047 1 /Herwig/Decays/DecayME0 decaymode B+->D*bar0,pi+; 0.0046 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D*_2bar0,D_s+; 0.0042 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D_s1+,Dbar0; 0.0041 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D*_2bar0,D_s*+; 0.004 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->c=sbar,ubar=u; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode B+->c=dbar,cbar=u; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode B+->D*_2bar0,rho+; 0.0038 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D_s*+,D-,pi+; 0.0037 1 /Herwig/Decays/DecayME0 decaymode B+->D_s+,D-,pi+; 0.0036 1 /Herwig/Decays/DecayME0 decaymode B+->D_s+,Dbar0,pi+,pi-; 0.0033 1 /Herwig/Decays/Mambo decaymode B+->D_s+,D-,pi+,pi0; 0.0033 1 /Herwig/Decays/Mambo decaymode B+->D_s*+,Dbar0,pi+,pi-; 0.0033 1 /Herwig/Decays/Mambo decaymode B+->D_s*+,D-,pi+,pi0; 0.0033 1 /Herwig/Decays/Mambo decaymode B+->D*bar0,D+,K0; 0.0031 1 /Herwig/Decays/DecayME0 decaymode B+->D*_2bar0,mu+,nu_mu; 0.003 1 /Herwig/Decays/ISGW2 decaymode B+->D*_2bar0,e+,nu_e; 0.003 1 /Herwig/Decays/ISGW2 decaymode B+->u=dbar,ubar=u; 0.003 1 /Herwig/Decays/WeakPartonic100 decaymode B+->D*bar0,D+,K*0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B+->D*bar0,D0,K*+; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B+->Dbar0,D+,K*0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B+->Dbar0,D*+,K*0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B+->Dbar0,D0,K*+; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B+->Dbar0,D*0,K*+; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B+->D_1bar0,D_s*+; 0.0024 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D'_1bar0,rho+; 0.0022 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->u=ubar,sbar=u; 0.0022 1 /Herwig/Decays/WeakPartonic0 decaymode B+->Dbar0,rho0,pi+; 0.0021 1 /Herwig/Decays/DecayME0 decaymode B+->u=ubar,dbar=u; 0.00205 1 /Herwig/Decays/WeakPartonic0 decaymode B+->D'_1bar0,tau+,nu_tau; 0.002 1 /Herwig/Decays/ISGW2 decaymode B+->D*_2bar0,tau+,nu_tau; 0.002 1 /Herwig/Decays/ISGW2 decaymode B+->D*-,rho+,pi+; 0.002 1 /Herwig/Decays/DecayME0 decaymode B+->D-,pi0,pi+,pi+; 0.002 1 /Herwig/Decays/Mambo decaymode B+->D-,rho+,pi+; 0.002 1 /Herwig/Decays/DecayME0 decaymode B+->mu+,nu_mu,ubar=u; 0.001948 1 /Herwig/Decays/WeakPartonic100 decaymode B+->e+,nu_e,ubar=u; 0.001948 1 /Herwig/Decays/WeakPartonic100 decaymode B+->D*bar0,D0,K+; 0.0018 1 /Herwig/Decays/DecayME0 decaymode B+->d=dbar,sbar=u; 0.0018 1 /Herwig/Decays/WeakPartonic0 decaymode B+->D_s+,Dbar0,pi0; 0.0018 1 /Herwig/Decays/DecayME0 decaymode B+->D_s*+,Dbar0,pi0; 0.0018 1 /Herwig/Decays/DecayME0 decaymode B+->Jpsi,K_1+; 0.0018 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->Dbar0,D+,K0; 0.0017 1 /Herwig/Decays/DecayME0 decaymode B+->D*bar0,D_s0+; 0.0016 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->Dbar0,D_s0+; 0.0016 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->Dbar0,D0,K+; 0.0015 1 /Herwig/Decays/DecayME0 decaymode B+->s=sbar,sbar=u; 0.0015 1 /Herwig/Decays/WeakPartonic0 decaymode B+->D+,D*-,K+; 0.0015 1 /Herwig/Decays/DecayME0 decaymode B+->D*+,D*-,K+; 0.0015 1 /Herwig/Decays/DecayME0 decaymode B+->Jpsi,K*+; 0.00143 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D_1bar0,tau+,nu_tau; 0.0013 1 /Herwig/Decays/ISGW2 decaymode B+->D_0*bar0,tau+,nu_tau; 0.0013 1 /Herwig/Decays/ISGW2 decaymode B+->D*-,pi+,pi+; 0.00125 1 /Herwig/Decays/DecayME0 decaymode B+->D'_1bar0,D_s*+; 0.0012 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D_1bar0,D_s+; 0.0012 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->K*+,eta_c; 0.0012 1 /Herwig/Decays/DecayME0 decaymode B+->Jpsi,K+; 0.00106 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D*bar0,D*+; 0.00104 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D-,pi+,pi+; 0.00102 1 /Herwig/Decays/DecayME0 decaymode B+->D_1bar0,pi+; 0.001 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D*+,D*-,K*+; 0.001 1 /Herwig/Decays/DecayME0 decaymode B+->D_0*bar0,pi+; 0.00091 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->s=sbar,dbar=u; 0.0009 1 /Herwig/Decays/WeakPartonic0 decaymode B+->eta_c,K+; 0.0009 1 /Herwig/Decays/DecayME0 decaymode B+->D*_2bar0,pi+; 0.0008 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D_s+,Dbar0,pi0,pi0; 0.0008 1 /Herwig/Decays/Mambo decaymode B+->D_s*+,Dbar0,pi0,pi0; 0.0008 1 /Herwig/Decays/Mambo decaymode B+->D*bar0,K*+; 0.00077 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D'_1bar0,pi+; 0.00075 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D_1bar0,rho+; 0.0007 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->d=dbar,dbar=u; 0.0007 1 /Herwig/Decays/WeakPartonic0 decaymode B+->psi(2S),K+; 0.00063 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->K*+,Dbar0; 0.00061 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D'_1bar0,D_s+; 0.0006 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->psi(2S),K*+; 0.0006 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->chi_c1,K+; 0.00057 1 /Herwig/Decays/DecayME0 decaymode B+->D*bar0,pi-,pi+,pi+; 0.0005 1 /Herwig/Decays/Mambo decaymode B+->D*bar0,pi0,pi+; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B+->D*bar0,rho0,pi+; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B+->D*bar0,pi+,pi0,pi0; 0.0005 1 /Herwig/Decays/Mambo decaymode B+->D*bar0,rho+,pi0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B+->Dbar0,pi0,pi+; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B+->D+,D*-,K*+; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B+->D+,D-,K+; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B+->D+,D-,K*+; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B+->D*+,D-,K+; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B+->D*+,D-,K*+; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B+->Jpsi,K*_2+; 0.0005 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->psi(3770),K*+; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B+->K*+,eta_c(2S); 0.00048 1 /Herwig/Decays/DecayME0 decaymode B+->psi(3770),K+; 0.00048 1 /Herwig/Decays/DecayME0 decaymode B+->Dbar0,K+; 0.00041 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->K*+,chi_c0; 0.0004 1 /Herwig/Decays/DecayME0 decaymode B+->chi_c1,K0,pi+; 0.0004 1 /Herwig/Decays/DecayME0 decaymode B+->chi_c1,K+,pi-,pi+; 0.0004 1 /Herwig/Decays/Mambo decaymode B+->psi(2S),K0,pi+; 0.0004 1 /Herwig/Decays/DecayME0 decaymode B+->psi(2S),K_1+; 0.0004 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D*bar0,K+; 0.00036 1 /Herwig/Decays/DecayME0 decaymode B+->eta_c(2S),K+; 0.00036 1 /Herwig/Decays/DecayME0 decaymode B+->D*bar0,D+; 0.000335 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->D*+,Dbar0; 0.000335 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->sbar,u,gamma; 0.0003118 1 /Herwig/Decays/BtosgammaKagan decaymode B+->chi_c0,K+; 0.0003 1 /Herwig/Decays/DecayME0 decaymode B+->psi(3770),K0,pi+; 0.0003 1 /Herwig/Decays/DecayME0 decaymode B+->psi(3770),K_1+; 0.0003 1 /Herwig/Decays/DecayME0 decaymode B+->chi_c1,K*+; 0.00029 1 /Herwig/Decays/DecayME0 decaymode B+->D+,Dbar0; 0.00027 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->eta_c,K0,pi+; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B+->eta_c,K+,pi-,pi+; 0.0002 1 /Herwig/Decays/Mambo decaymode B+->Jpsi,K0,pi+; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B+->chi_c2,K0,pi+; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B+->chi_c2,K+,pi-,pi+; 0.0002 1 /Herwig/Decays/Mambo decaymode B+->chi_c0,K0,pi+; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B+->chi_c0,K+,pi-,pi+; 0.0002 1 /Herwig/Decays/Mambo decaymode B+->chi_c1,K0,pi+,pi0; 0.0002 1 /Herwig/Decays/Mambo decaymode B+->chi_c1,K+,pi0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B+->chi_c1,K+,pi0,pi0; 0.0002 1 /Herwig/Decays/Mambo decaymode B+->psi(3770),K+,pi-,pi+; 0.0002 1 /Herwig/Decays/Mambo decaymode B+->psi(3770),K+,pi0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B+->psi(2S),K+,pi-,pi+; 0.0002 1 /Herwig/Decays/Mambo decaymode B+->psi(2S),K+,pi0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,mu+,nu_mu; 0.000145 1 /Herwig/Decays/BZVector decaymode B+->rho0,e+,nu_e; 0.000145 1 /Herwig/Decays/BZVector decaymode B+->omega,mu+,nu_mu; 0.000145 1 /Herwig/Decays/BZVector decaymode B+->omega,e+,nu_e; 0.000145 1 /Herwig/Decays/BZVector decaymode B+->eta_c,K0,pi+,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B+->eta_c,K+,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B+->eta_c,K+,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B+->Jpsi,K+,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B+->Jpsi,K'_1+; 0.0001 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->chi_c2,K0,pi+,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B+->chi_c2,K+,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B+->chi_c2,K+,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B+->chi_c0,K0,pi+,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B+->chi_c0,K+,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B+->chi_c0,K+,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B+->psi(3770),K0,pi+,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B+->psi(3770),K+,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B+->psi(2S),K0,pi+,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B+->psi(2S),K+,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B+->tau+,nu_tau; 9.3E-5 1 /Herwig/Decays/DecayME0 decaymode B+->Jpsi,phi,K+; 9.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->eta,mu+,nu_mu; 8.4E-5 1 /Herwig/Decays/BZScalar decaymode B+->eta,e+,nu_e; 8.4E-5 1 /Herwig/Decays/BZScalar decaymode B+->eta',mu+,nu_mu; 8.4E-5 1 /Herwig/Decays/ISGW2 decaymode B+->eta',e+,nu_e; 8.4E-5 1 /Herwig/Decays/ISGW2 decaymode B+->eta_c(2S),K0,pi+; 8.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->eta_c(2S),K+,pi-,pi+; 8.0E-5 1 /Herwig/Decays/Mambo decaymode B+->eta',K+; 7.8E-5 1 /Herwig/Decays/DecayME0 decaymode B+->pi0,mu+,nu_mu; 7.2E-5 1 /Herwig/Decays/BZScalar decaymode B+->pi0,e+,nu_e; 7.2E-5 1 /Herwig/Decays/BZScalar decaymode B+->K*_00,pi+; 7.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->Jpsi,rho+; 6.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->b_10,pi+; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->b_1+,pi0; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_1+,a_10; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->eta_c(2S),K0,pi+,pi0; 5.0E-5 1 /Herwig/Decays/Mambo decaymode B+->eta_c(2S),K+,pi0; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->eta_c(2S),K+,pi0,pi0; 5.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K+,K0,Kbar0; 4.8E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_10,tau+,nu_tau; 4.6E-5 1 /Herwig/Decays/ISGW2 decaymode B+->rho0,tau+,nu_tau; 4.2E-5 1 /Herwig/Decays/BZVector decaymode B+->omega,tau+,nu_tau; 4.2E-5 1 /Herwig/Decays/BZVector decaymode B+->K*+,gamma; 4.03E-5 1 /Herwig/Decays/DecayME0 decaymode B+->Jpsi,pi+; 4.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B+->a_10,pi+; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_1+,pi0; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->pi0,tau+,nu_tau; 3.0E-5 1 /Herwig/Decays/BZScalar decaymode B+->rho0,D_s+; 2.8E-5 1 /Herwig/Decays/DecayME0 decaymode B+->D_s*+,rho0; 2.8E-5 1 /Herwig/Decays/DecayME0 decaymode B+->b_10,tau+,nu_tau; 2.7E-5 1 /Herwig/Decays/ISGW2 decaymode B+->pi+,pi0,pi0; 2.6E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K+,K-,K+; 2.6E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K0,pi+; 2.4E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K*+,eta; 2.4E-5 1 /Herwig/Decays/DecayME0 decaymode B+->f_1,tau+,nu_tau; 2.3E-5 1 /Herwig/Decays/ISGW2 decaymode B+->f'_1,tau+,nu_tau; 2.3E-5 1 /Herwig/Decays/DecayME0 decaymode B+->f_2,tau+,nu_tau; 2.0E-5 1 /Herwig/Decays/ISGW2 decaymode B+->f'_2,tau+,nu_tau; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->D_s+,pi0; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->D_s*+,pi0; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->chi_c2,K+; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->chi_c2,K*+; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_10,K*+; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_1+,K*0; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->eta',tau+,nu_tau; 1.8E-5 1 /Herwig/Decays/ISGW2 decaymode B+->pi+,pi+,pi-; 1.6E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,rho0; 1.5E-5 1 /Herwig/Decays/DecayME0 decaymode B+->omega,rho+; 1.3E-5 1 /Herwig/Decays/DecayME0 decaymode B+->h_1,tau+,nu_tau; 1.3E-5 1 /Herwig/Decays/ISGW2 decaymode B+->h'_1,tau+,nu_tau; 1.3E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,pi0; 1.2E-5 1 /Herwig/Decays/DecayME0 decaymode B+->eta,tau+,nu_tau; 1.2E-5 1 /Herwig/Decays/BZScalar decaymode B+->K+,pi0; 1.2E-5 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K*+; 1.1E-5 1 /Herwig/Decays/DecayME0 decaymode B+->D+,Kbar0; 1.1E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_1-,pi+,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K-,K+,K0,rho+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K-,K+,K+,rho0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K-,K+,K+,omega; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K-,K+,K+,f_0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K-,K+,K*+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K-,K+,K*+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K-,K+,K*_00,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K-,K+,K*_0+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K-,K+,K*_0+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->rho-,K0,pi+,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->rho-,K+,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho-,K+,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->rho-,K*+,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho-,K*_0+,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho-,a_0+,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->pi-,pi+,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->pi-,pi+,K*+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->pi-,pi+,K*+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->pi0,pi0,pi0,K+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->pi0,pi0,K*+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->pi0,pi0,K*+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->pi0,pi0,K*_0+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->pi0,pi0,K*_0+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->rho0,rho0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,pi+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,K0,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->rho0,K*0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,K+,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->rho0,K*+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,K*+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,K*_00,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,K*_0+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,K*_0+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,a_0+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,f_0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,pi-,pi0,K+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi-,K*0,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi0,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi0,pi0,K0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi0,K*0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,pi0,K*0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi0,K*_00; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,pi0,K*_00,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi+,pi-,K0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi+,K*_00,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->rho+,rho-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,pi0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,rho0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,pi+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,K0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,K0,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->rho+,K0,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->rho+,K*0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,K*0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,K+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,K+,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->rho+,K*+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,K*_00; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,K*_00,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,K*_0+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,a_00; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,a_00,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,f_0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,f_0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->omega,rho0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->omega,pi+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->omega,rho+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->omega,K0,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->omega,K*0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->omega,K+,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->omega,K*+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->omega,f_0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K0,Kbar0,K0,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,K0,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,K+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,K+,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K0,K0,K*_0bar0,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K0,K*+,Kbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K0,K*+,Kbar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K*0,f_0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K+,K*_0bar0,K0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K+,K*_0bar0,K0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K+,K*-,K+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K+,K*-,K+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,K0,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,K0,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,K+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,K+,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K+,K0,K'_1bar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K+,K0,K*bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K+,K0,K*bar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K+,K*0,Kbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K+,K*0,Kbar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K+,K+,K*_0-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K+,K+,K*_0-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K+,K+,K*_0bar0,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K+,K*_00,Kbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K+,K*_00,Kbar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K+,K'_10,Kbar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->K*+,f_0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->K*+,f_0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K0,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->phi,K0,rho+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K+,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->phi,K+,rho0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K+,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B+->phi,K+,omega; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K+,f_0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K*+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K*_00,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K*_0+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K*_0+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->b_10,K+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->b_1+,K0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_10,pi+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_10,K0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_10,K+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_10,K+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_1+,pi0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_1+,rho0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_1+,pi+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_1+,omega; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_1+,K0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_1+,K0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_1+,K+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->a_1+,f_0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->f_0,pi+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,pi+; 9.1E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K+; 9.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,eta; 8.6E-6 1 /Herwig/Decays/DecayME0 decaymode B+->f_0,K+; 8.5E-6 1 /Herwig/Decays/DecayME0 decaymode B+->D*+,Kbar0; 6.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->omega,pi+; 5.9E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,pi0; 5.5E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,K+; 5.2E-6 1 /Herwig/Decays/DecayME0 decaymode B+->omega,K+; 5.1E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K-,K+,K*_0+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi-,pi+,pi+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi-,pi+,K*+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi0,pi0,eta,K+; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi0,pi0,K*_0+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi0,eta,K*+; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi0,eta,K*+,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho0,pi+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,K0,pi+; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,K+,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,K+,eta,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho0,K*+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,K*_0+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,a_0+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,pi-,eta,K+; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi0,K*_00,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,eta,pi0,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,eta,pi0,K0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,eta,K*0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,eta,K*0,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho+,pi0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,rho0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,K0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,K0,eta,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho+,K*0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,K*_00,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,a_00,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,f_0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->omega,pi+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->omega,rho+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->omega,K0,pi+; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->omega,K+,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->omega,K+,eta,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->omega,K*+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K0,Kbar0,K+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,K+,eta,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K*0,a_0+; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*0,a_0+,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K+,K*_0bar0,K0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,K+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,K+,eta,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K0,K'_1bar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K+,K*_0-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K*_00,Kbar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K'_10,Kbar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K*+,a_00; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*+,a_00,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*+,f_0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K+,eta,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,K*_0+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->a_10,pi+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->a_1+,pi0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K+,pi-,pi+; 4.9E-6 1 /Herwig/Decays/DecayME0 decaymode B+->eta,pi+; 4.8E-6 1 /Herwig/Decays/DecayME0 decaymode B+->eta',pi+; 4.2E-6 1 /Herwig/Decays/DecayME0 decaymode B+->a_00,tau+,nu_tau; 4.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*+,Kbar0; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,phi,K+; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,phi,K*+; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->eta,K+; 2.6E-6 1 /Herwig/Decays/DecayME0 decaymode B+->f_2,pi+; 2.3E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho'0,pi+; 2.2E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*_0bar0,K+; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K-,K+,K*_0+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K-,K+,K'_10,pi+; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K-,K+,K'_1+; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K-,K+,K'_1+,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,Kbar0,K'_1+,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho-,pi+,pi+,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi-,pi+,pi+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi-,pi+,K*+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi0,pi0,pi0,K+,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi0,pi0,eta',K+; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi0,pi0,K*_0+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi0,eta,eta,K+; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi0,eta',K*+; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi0,eta',K*+,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho0,pi+,pi-,pi+; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho0,pi+,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho0,pi+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,K+,eta; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,K+,eta',pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho0,K*+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,K*_0+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,a_0+; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho0,a_0+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,pi-,pi0,K+,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi-,pi+,K+,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi0,pi0,K0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi0,K*_00,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi+,pi-,K0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,eta,eta,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,eta,eta,K0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,eta',pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,eta',K*0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho+,pi0,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho+,pi0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,rho0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,pi+,pi-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho+,eta,eta; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,K0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,K0,eta',pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho+,K*0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,K*_00,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,a_00,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,f_0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->eta,eta,K*+; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->eta,eta,K*+,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->omega,pi+,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->omega,pi+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->omega,rho+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->omega,K+,eta; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->omega,K+,eta',pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->omega,K*+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K0,Kbar0,K+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,K+,eta',pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,K'_10,pi+; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,K'_1+,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,K0,K'_1bar0,pi+; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K*_0bar0,K0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,K+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,K+,eta',pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K0,K'_1bar0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K+,K'_1-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K+,K'_1bar0,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K+,K*_0-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K*_00,Kbar0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K'_10,Kbar0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K*+,pi0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*+,f_0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K+,eta',pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,K*_0+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K'_10,pi+; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K'_1+; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K'_1+,pi0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->f'_0,tau+,nu_tau; 2.0E-6 1 /Herwig/Decays/ISGW2 decaymode B+->K*_0+,Kbar0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*_0+,pi0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->a_10,pi+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->a_1+,pi0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->f_0,tau+,nu_tau; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->f_0,pi+,pi-,pi+; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->f_0,pi+,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K*+,e+,e-; 1.835E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*+,mu+,mu-; 1.38E-6 1 /Herwig/Decays/DecayME0 decaymode B+->a_0-,pi+,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->a_0-,pi+,pi+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K*-,K0,pi+,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K*-,K+,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*-,K+,pi+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K-,K+,K'_1+,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K-,K+,K'_1+,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K*bar0,K*+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*bar0,K*+,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->Kbar0,Kbar0,K'_1+,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,Kbar0,K'_1+,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,K+,rho-,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,K+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->Kbar0,K+,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,K+,rho0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->Kbar0,K+,rho0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,K+,pi+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,K+,rho+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,K+,omega; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->Kbar0,K+,omega,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,K+,f_0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho-,pi+,pi+,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho-,pi+,pi+,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi-,pi+,pi+,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi-,pi+,pi+,eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi-,pi+,pi+,eta',pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi0,pi0,eta,K+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi0,pi0,eta',K+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi0,eta,eta,K+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi0,eta,eta',K+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi0,eta,eta',K+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho0,pi+,eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho0,pi+,eta',pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho0,K+,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,pi-,eta,K+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi-,eta',K+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi0,pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,pi0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,pi+,pi-,K0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,pi+,pi-,K0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,eta,pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,eta,pi0,K0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,eta,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,eta,eta,K0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,eta,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,K0,Kbar0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,K0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,K0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,K0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->pi+,eta',pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->pi+,eta',eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho+,pi0,eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho+,pi0,eta',pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho+,pi+,pi-,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho+,pi+,pi-,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho+,eta,eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->rho+,K0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho+,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->eta,eta',K*+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->eta,eta',K*+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->omega,pi+,eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->omega,pi+,eta',pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->omega,K+,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->omega,K*+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K0,K-,pi+,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,K-,rho+,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,K*bar0,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K0,K*bar0,pi+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,Kbar0,K+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,Kbar0,K+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,rho0,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,pi+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,rho+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K0,Kbar0,rho+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,omega,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,K'_1+,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,K'_1+,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,f_0,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K*0,K-,pi+,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K*0,K*bar0,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*0,Kbar0,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*0,Kbar0,pi+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,rho0,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K+,K-,pi+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,rho+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K+,K-,rho+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,omega,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,K0,Kbar0,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,K+,K-,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,K+,Kbar0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,K+,Kbar0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,K*bar0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K+,K*bar0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,Kbar0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K+,Kbar0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K+,Kbar0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K+,pi0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K+,pi0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K+,pi0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K+,eta,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K+,eta,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K+,eta',eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*+,K-,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*+,K-,pi+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K*+,Kbar0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->K*+,Kbar0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K*+,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,Kbar0,K+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,Kbar0,K+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,Kbar0,K+,K*0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,Kbar0,K+,K+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,rho0,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,pi+,pi-,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,pi+,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,pi+,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,rho+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,rho+,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,omega,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K0,Kbar0,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,K0,Kbar0,K0,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,K0,Kbar0,K+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,K0,Kbar0,K+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,K0,Kbar0,K*+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,K+,K-,K0,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,K+,K-,K+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,K+,K-,K+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,K+,K-,K*+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->phi,phi,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K'_1+,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,K'_1+,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->phi,f_0,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->rho'0,K+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->a_00,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->a_00,pi+,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->a_00,pi+,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->a_00,K+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->a_0+,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->a_0+,pi0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->a_0+,pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->a_0+,K0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->f_0,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B+->f_0,pi+,pi0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->f_0,pi+,pi0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B+->K+,mu+,mu-; 5.74E-7 1 /Herwig/Decays/DecayME0 decaymode B+->K+,e+,e-; 5.74E-7 1 /Herwig/Decays/DecayME0 decaymode B+->D+,pi0; 5.4E-7 1 /Herwig/Decays/DecayME0 decaymode B+->D*+,pi0; 5.4E-7 1 /Herwig/Decays/DecayME0 decaymode B+->K*bar0,K*+,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B+->Kbar0,K+,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,K+,rho0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,pi+,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,rho+,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,pi+,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,rho+,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K+,K*bar0,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B+->K+,K*bar0,eta,pi0; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K*+,Kbar0,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B+->K*+,Kbar0,eta,pi0; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B+->phi,pi+,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B+->phi,pi+,eta,pi0; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B+->phi,rho+,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B+->K*bar0,K*+,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B+->Kbar0,K+,pi0,pi0,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,K+,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,K+,rho0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,K+,pi+,pi-,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K0,K-,pi+,pi+,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,pi+,pi-,pi+; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,pi+,pi0,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,pi+,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,rho+,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,pi+,pi-,pi+; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,pi+,pi0,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,pi+,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,rho+,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K+,K*bar0,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B+->K+,K*bar0,eta',pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K*+,Kbar0,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B+->K*+,Kbar0,eta',pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->phi,pi+,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B+->phi,pi+,eta',pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B+->phi,rho+,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B+->K*+,tau+,tau-; 1.9E-7 1 /Herwig/Decays/DecayME0 decaymode B+->K+,tau+,tau-; 1.3E-7 1 /Herwig/Decays/DecayME0 decaymode B+->K-,pi+,pi+; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode B+->Kbar0,K+,pi0,eta,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,K+,pi0,eta',pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,K+,pi+,pi-,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B+->Kbar0,K+,pi+,pi-,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K0,K-,pi+,pi+,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K0,K-,pi+,pi+,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,pi+,eta,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K0,Kbar0,pi+,eta',pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,pi+,eta,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K+,K-,pi+,eta',pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B+->K+,K+,pi-; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode B+->mu+,nu_mu; 0 1 /Herwig/Decays/DecayME0 decaymode B+->e+,nu_e; 0 1 /Herwig/Decays/DecayME0 # decaymode Bbar0->ubar=d,c=dbar; 0.328998417 1 /Herwig/Decays/WeakPartonic100 decaymode Bbar0->cbar=s,c=dbar; 0.074 1 /Herwig/Decays/WeakPartonic100 decaymode Bbar0->D*+,e-,nu_ebar; 0.057 1 /Herwig/Decays/HQET decaymode Bbar0->D*+,mu-,nu_mubar; 0.057 1 /Herwig/Decays/HQET decaymode Bbar0->cd_0=ud_0bar; 0.033 1 /Herwig/Decays/WeakPartonic0 decaymode Bbar0->D*+,D_s*-; 0.024 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->ubar=s,c=dbar; 0.021 1 /Herwig/Decays/WeakPartonic100 decaymode Bbar0->D+,e-,nu_ebar; 0.0207 1 /Herwig/Decays/HQET decaymode Bbar0->D+,mu-,nu_mubar; 0.0207 1 /Herwig/Decays/HQET decaymode Bbar0->ubar=c,d=dbar; 0.018 1 /Herwig/Decays/WeakPartonic100 decaymode Bbar0->D*+,tau-,nu_taubar; 0.016 1 /Herwig/Decays/HQET decaymode Bbar0->D*+,D_s-; 0.0126 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D*+,a_1-; 0.012 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D*+,D*bar0,K-; 0.01 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*+,D_s1-; 0.0098 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D_s*-,D+; 0.009 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D+,D_s-; 0.009 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->cs_0=ud_0bar; 0.009 1 /Herwig/Decays/WeakPartonic0 decaymode Bbar0->a_1-,D+; 0.00834 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D'_1+,e-,nu_ebar; 0.0083 1 /Herwig/Decays/ISGW2 decaymode Bbar0->D'_1+,mu-,nu_mubar; 0.0083 1 /Herwig/Decays/ISGW2 decaymode Bbar0->rho-,D+; 0.0077 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D+,tau-,nu_taubar; 0.007 1 /Herwig/Decays/HQET decaymode Bbar0->D*+,D*-,Kbar0; 0.007 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho-,D*+; 0.0068 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->cbar=d,c=dbar; 0.006 1 /Herwig/Decays/WeakPartonic100 decaymode Bbar0->D_1+,e-,nu_ebar; 0.0052 1 /Herwig/Decays/ISGW2 decaymode Bbar0->D_1+,mu-,nu_mubar; 0.0052 1 /Herwig/Decays/ISGW2 decaymode Bbar0->s,g,dbar; 0.005 1 /Herwig/Decays/WeakPartonic0 decaymode Bbar0->D*+,D*bar0,K*-; 0.005 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*+,D*-,K*bar0; 0.005 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D+,D*bar0,K-; 0.0049 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D+,D*-,Kbar0; 0.0047 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D_0*+,e-,nu_ebar; 0.0045 1 /Herwig/Decays/ISGW2 decaymode Bbar0->D_0*+,mu-,nu_mubar; 0.0045 1 /Herwig/Decays/ISGW2 decaymode Bbar0->D*_2+,D_s-; 0.0042 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D_s1-,D+; 0.0041 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->cbar=s,u=dbar; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode Bbar0->D*_2+,D_s*-; 0.004 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D_s*-,D0,pi+; 0.0037 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D_s-,D0,pi+; 0.0037 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*+,Dbar0,K-; 0.0031 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D_s*-,D+,pi+,pi-; 0.003 1 /Herwig/Decays/Mambo decaymode Bbar0->D_s-,D+,pi+,pi-; 0.003 1 /Herwig/Decays/Mambo decaymode Bbar0->ubar=d,u=dbar; 0.003 1 /Herwig/Decays/WeakPartonic0 decaymode Bbar0->D+,pi-; 0.0028 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D*+,pi-; 0.0028 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D+,D*bar0,K*-; 0.0025 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D+,Dbar0,K*-; 0.0025 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D+,D*-,K*bar0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D+,D-,K*bar0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*+,Dbar0,K*-; 0.0025 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*+,D-,K*bar0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D_1+,D_s*-; 0.0024 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D*_2+,e-,nu_ebar; 0.0023 1 /Herwig/Decays/ISGW2 decaymode Bbar0->D*_2+,mu-,nu_mubar; 0.0023 1 /Herwig/Decays/ISGW2 decaymode Bbar0->D_s*-,D+,pi0,pi0; 0.0022 1 /Herwig/Decays/Mambo decaymode Bbar0->D_s*-,D0,pi+,pi0; 0.0022 1 /Herwig/Decays/Mambo decaymode Bbar0->D_s-,D+,pi0,pi0; 0.0022 1 /Herwig/Decays/Mambo decaymode Bbar0->D_s-,D0,pi+,pi0; 0.0022 1 /Herwig/Decays/Mambo decaymode Bbar0->ubar=u,s=dbar; 0.0022 1 /Herwig/Decays/WeakPartonic0 decaymode Bbar0->D+,pi+,pi-,pi-; 0.0022 1 /Herwig/Decays/Mambo decaymode Bbar0->D*_2+,rho-; 0.0022 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->ubar=u,d=dbar; 0.00205 1 /Herwig/Decays/WeakPartonic0 decaymode Bbar0->D*_2+,tau-,nu_taubar; 0.002 1 /Herwig/Decays/ISGW2 decaymode Bbar0->D'_1+,tau-,nu_taubar; 0.002 1 /Herwig/Decays/ISGW2 decaymode Bbar0->e-,nu_ebar,u=dbar; 0.001892 1 /Herwig/Decays/WeakPartonic100 decaymode Bbar0->mu-,nu_mubar,u=dbar; 0.001892 1 /Herwig/Decays/WeakPartonic100 decaymode Bbar0->D_s*-,D+,pi0; 0.0018 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D_s-,D+,pi0; 0.0018 1 /Herwig/Decays/DecayME0 decaymode Bbar0->dbar=d,s=dbar; 0.0018 1 /Herwig/Decays/WeakPartonic0 decaymode Bbar0->D*+,D-,Kbar0; 0.0018 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D+,Dbar0,K-; 0.0017 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D_s0-,D+; 0.0016 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D*+,D_s0-; 0.0016 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->sbar=s,s=dbar; 0.0015 1 /Herwig/Decays/WeakPartonic0 decaymode Bbar0->D+,D-,Kbar0; 0.0015 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D0,D*bar0,Kbar0; 0.0015 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*0,D*bar0,Kbar0; 0.0015 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Jpsi,K_1bar0; 0.0015 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D_0*+,tau-,nu_taubar; 0.0013 1 /Herwig/Decays/ISGW2 decaymode Bbar0->D_1+,tau-,nu_taubar; 0.0013 1 /Herwig/Decays/ISGW2 decaymode Bbar0->D'_1+,rho-; 0.0013 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->Jpsi,K*bar0; 0.001231 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D_1+,D_s-; 0.0012 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D'_1+,D_s*-; 0.0012 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D+,rho-,pi0; 0.0011 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D+,rho0,pi-; 0.0011 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,eta_c; 0.00108 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*bar0,D*0,K*bar0; 0.001 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D+,pi0,pi-,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode Bbar0->D*+,rho-,pi0; 0.001 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*+,pi0,pi-,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode Bbar0->D*+,rho0,pi-; 0.001 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D0,pi+,pi-,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode Bbar0->D*0,pi+,pi-,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode Bbar0->sbar=s,d=dbar; 0.0009 1 /Herwig/Decays/WeakPartonic0 decaymode Bbar0->ubar=c,s=dbar; 0.0009 1 /Herwig/Decays/WeakPartonic100 decaymode Bbar0->D*_2+,pi-; 0.0009 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*+,D*-; 0.00083 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*+,pi-,pi0; 0.0008 1 /Herwig/Decays/DecayME0 decaymode Bbar0->dbar=d,d=dbar; 0.0007 1 /Herwig/Decays/WeakPartonic0 decaymode Bbar0->psi(2S),K*bar0; 0.00066 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D_1+,pi-; 0.0006 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D'_1+,D_s-; 0.0006 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D*bar0,D0,K*bar0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Dbar0,D0,K*bar0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Dbar0,D*0,K*bar0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D+,pi-,pi0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D0,Dbar0,Kbar0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D0,pi+,pi-; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*0,Dbar0,Kbar0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*0,pi0,pi0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Jpsi,K*_2bar0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Bbar0->psi(3770),K*bar0; 0.00048 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,eta_c(2S); 0.00044 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*0,omega; 0.00042 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D_1+,rho-; 0.0004 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->chi_c1,K-,pi+; 0.0004 1 /Herwig/Decays/DecayME0 decaymode Bbar0->chi_c1,Kbar0,pi+,pi-; 0.0004 1 /Herwig/Decays/Mambo decaymode Bbar0->psi(2S),K_1bar0; 0.0004 1 /Herwig/Decays/DecayME0 decaymode Bbar0->psi(2S),K-,pi+; 0.0004 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*+,K*-; 0.00038 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->K*-,D+; 0.00037 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->s,dbar,gamma; 0.0003118 1 /Herwig/Decays/BtosgammaKagan decaymode Bbar0->D*0,pi+,pi-; 0.0003 1 /Herwig/Decays/DecayME0 decaymode Bbar0->chi_c1,K*bar0; 0.0003 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,D0; 0.00029 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D0,pi0; 0.00029 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D*0,rho0; 0.00029 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->psi(3770),K_1bar0; 0.00029 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*0,pi0; 0.00027 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->rho+,e-,nu_ebar; 0.000269 1 /Herwig/Decays/BZVector decaymode Bbar0->rho+,mu-,nu_mubar; 0.000269 1 /Herwig/Decays/BZVector decaymode Bbar0->D*0,eta; 0.00026 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->omega,D0; 0.00025 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D0,eta; 0.00022 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->K*bar0,chi_c0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D+,K-; 0.0002 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->eta_c,K-,pi+; 0.0002 1 /Herwig/Decays/DecayME0 decaymode Bbar0->eta_c,Kbar0,pi+,pi-; 0.0002 1 /Herwig/Decays/Mambo decaymode Bbar0->Jpsi,K-,pi+; 0.0002 1 /Herwig/Decays/DecayME0 decaymode Bbar0->chi_c2,K-,pi+; 0.0002 1 /Herwig/Decays/DecayME0 decaymode Bbar0->chi_c2,Kbar0,pi+,pi-; 0.0002 1 /Herwig/Decays/Mambo decaymode Bbar0->D_0*+,pi-; 0.0002 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->chi_c0,K-,pi+; 0.0002 1 /Herwig/Decays/DecayME0 decaymode Bbar0->chi_c0,Kbar0,pi+,pi-; 0.0002 1 /Herwig/Decays/Mambo decaymode Bbar0->chi_c1,K-,pi+,pi0; 0.0002 1 /Herwig/Decays/Mambo decaymode Bbar0->chi_c1,Kbar0,pi0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode Bbar0->chi_c1,Kbar0,pi0,pi0; 0.0002 1 /Herwig/Decays/Mambo decaymode Bbar0->psi(2S),Kbar0,pi0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode Bbar0->psi(2S),Kbar0,pi+,pi-; 0.0002 1 /Herwig/Decays/Mambo decaymode Bbar0->D*+,K-; 0.00017 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D0,eta'; 0.00017 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D*0,eta'; 0.00017 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->psi(3770),K-,pi+; 0.00014 1 /Herwig/Decays/DecayME0 decaymode Bbar0->psi(3770),Kbar0,pi0; 0.00014 1 /Herwig/Decays/DecayME0 decaymode Bbar0->psi(3770),Kbar0,pi+,pi-; 0.00014 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,e-,nu_ebar; 0.000133 1 /Herwig/Decays/BZScalar decaymode Bbar0->pi+,mu-,nu_mubar; 0.000133 1 /Herwig/Decays/BZScalar decaymode Bbar0->D0,pi0,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode Bbar0->D*0,pi0,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode Bbar0->eta_c,K-,pi+,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode Bbar0->eta_c,Kbar0,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode Bbar0->eta_c,Kbar0,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode Bbar0->Jpsi,K'_1bar0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Jpsi,Kbar0,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode Bbar0->chi_c2,K-,pi+,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode Bbar0->chi_c2,Kbar0,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode Bbar0->chi_c2,Kbar0,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode Bbar0->chi_c0,K-,pi+,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode Bbar0->chi_c0,Kbar0,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode Bbar0->chi_c0,Kbar0,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode Bbar0->D'_1+,pi-; 0.0001 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->psi(2S),K-,pi+,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode Bbar0->psi(2S),Kbar0,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode Bbar0->Jpsi,phi,Kbar0; 9.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1+,tau-,nu_taubar; 9.0E-5 1 /Herwig/Decays/ISGW2 decaymode Bbar0->rho+,tau-,nu_taubar; 8.3E-5 1 /Herwig/Decays/BZVector decaymode Bbar0->eta_c(2S),K-,pi+; 8.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->eta_c(2S),Kbar0,pi+,pi-; 8.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->psi(3770),K-,pi+,pi0; 7.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->psi(3770),Kbar0,pi0,pi0; 7.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,tau-,nu_taubar; 6.0E-5 1 /Herwig/Decays/BZScalar decaymode Bbar0->a_10,a_10; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1+,a_1-; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->eta_c(2S),K-,pi+,pi0; 5.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->eta_c(2S),Kbar0,pi0; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->eta_c(2S),Kbar0,pi0,pi0; 5.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->Kbar0,K0,Kbar0; 4.8E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D_s+,K-; 4.6E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,gamma; 4.01E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1-,pi+; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,D0; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D0,K0; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*0,K*bar0; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*0,K0; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1+,pi-; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D_s-,pi+; 3.9E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->rho+,rho-; 3.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Jpsi,omega; 3.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->chi_c2,K*bar0; 3.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D_s*-,pi+; 2.6E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->pi-,pi+,Kbar0; 2.6E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi-,pi+,pi0; 2.4E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,K+,Kbar0; 2.1E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,pi+,eta; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,K*_0-; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,K*-; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_10,K*bar0; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1+,K*-; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,eta; 1.9E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,pi+; 1.8E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi-,pi+,eta; 1.7E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D_s*-,rho+; 1.6E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->K*-,D_s+; 1.6E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,D_s-; 1.6E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode Bbar0->D_s*+,K*-; 1.6E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D_s*+,K-; 1.6E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Jpsi,rho0; 1.6E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*-,pi+; 1.3E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,pi0; 1.2E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K*bar0; 1.1E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1-,Kbar0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1-,pi+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1-,rho+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*_0-,K+,Kbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->b_1-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*bar0,K*bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*-,K+,Kbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*-,f_0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,K*_0bar0,K0,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K-,K-,K*_0+,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K-,K0,K*bar0,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K-,K*0,Kbar0,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K-,K+,K*_0bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,K+,K-,rho+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K-,K+,K*bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,K+,Kbar0,rho0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K-,K+,Kbar0,omega; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K-,K+,Kbar0,f_0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K-,K*+,K-,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K-,K*+,Kbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,K*_00,Kbar0,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K-,K*_0+,Kbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,Dbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,f_0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,Kbar0,K*_00,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->rho-,K*_0bar0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho-,K-,pi+,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->rho-,K*bar0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho-,Kbar0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho-,Kbar0,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->rho-,pi+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho-,a_00,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho-,a_0+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho-,a_0+,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho-,f_0,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi-,pi+,K*_0bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi-,pi+,K*bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi0,pi0,K*_0bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi0,pi0,K*_0bar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,K*bar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,pi0,Kbar0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,pi+,K-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,a_0-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,K*_0-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,K*_0bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,K*_0bar0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,K*-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,K-,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,K*bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,K*bar0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,Kbar0,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,Kbar0,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,rho0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,rho+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,a_00,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,a_0+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,f_0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi+,pi-,K*_0-,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,K*_0bar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,K*-,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,K*bar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,pi+,K-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi0,K*_0-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi+,pi0,K*_0-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi0,K*-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi+,pi0,K*-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi0,pi-,Kbar0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->rho+,a_0-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,K*_0-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,K*_0bar0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,K*-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,K-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,K-,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->rho+,K-,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->rho+,K*bar0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,Kbar0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,Kbar0,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->rho+,rho-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,pi-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,a_00,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,f_0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,K*-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,K-,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,K*bar0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,Kbar0,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,Kbar0,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,rho0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,rho+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,f_0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K0,K*-,Kbar0,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,K*_0-,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,K*_0bar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,K-,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,Kbar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,Kbar0,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,Kbar0,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K*_0-,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K*_0bar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K*-,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K-,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K-,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,Kbar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,Kbar0,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,Kbar0,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K*_0-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K*_0bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K*_0bar0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K*-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K-,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K-,rho+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K*bar0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,Kbar0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,Kbar0,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,Kbar0,rho0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,Kbar0,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,Kbar0,omega; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,Kbar0,f_0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->b_10,Kbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->b_1+,K-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->b_1+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_10,K-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_10,Kbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_10,Kbar0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_10,pi0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_10,rho0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_10,pi+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_10,omega; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1+,K-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1+,K-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1+,Kbar0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1+,rho-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1+,pi-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,K-; 9.9E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_2+,tau-,nu_taubar; 8.0E-6 1 /Herwig/Decays/ISGW2 decaymode Bbar0->b_1+,tau-,nu_taubar; 8.0E-6 1 /Herwig/Decays/ISGW2 decaymode Bbar0->a_0+,tau-,nu_taubar; 8.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->f_0,Kbar0; 6.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1-,pi+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*-,a_00,pi+; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*-,a_0+; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*-,a_0+,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,a_00; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,a_00,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,a_0+,pi-; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,f_0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,f_0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,Kbar0,K*_00,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho-,Kbar0,pi+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho-,pi+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho-,a_0+,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi0,pi0,K*_0bar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,K*_0bar0,eta'; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,K*bar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,eta,Kbar0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,eta,pi+,K-; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,K*_0bar0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,K-,pi+; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,K-,pi+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,K*bar0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,Kbar0,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,Kbar0,pi0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,rho0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,a_00,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,f_0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi+,pi-,K*_0bar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,K*bar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,eta,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi0,K*_0-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi0,K*-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,eta,K*-; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi+,eta,pi-,Kbar0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho+,a_0-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,K*_0-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,K*-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,K-,pi0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho+,K-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,Kbar0,pi-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho+,rho-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,pi-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,K-,pi+; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,K-,pi+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,K*bar0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,Kbar0,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,Kbar0,pi0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,rho0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K0,Kbar0,K*_0bar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,K-,pi+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,Kbar0,pi0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,Kbar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K*_0bar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K-,pi+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,Kbar0,pi0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,Kbar0,pi0,eta'; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,Kbar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K-,pi+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K*bar0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,Kbar0,pi0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,Kbar0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_10,pi0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1+,pi-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*_0bar0,K0; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,K0; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,pi+,pi-; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,pi+,pi-; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,phi,K*bar0; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,phi,Kbar0; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_0+,pi-; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1-,pi+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*_0-,K+; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*-,K+; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*-,a_0+,eta; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,K-,K'_1+,pi+; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K-,pi+,pi0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,K+,K'_1-,pi+; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K-,K+,K'_1bar0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,K+,K'_1bar0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K*bar0,a_00,eta; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,f_0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,Kbar0,K*_00,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->Kbar0,Kbar0,K'_10,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->Kbar0,pi0,pi0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,K0,pi0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho-,Kbar0,pi+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho-,pi+,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho-,pi+,pi+,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho-,a_0+,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi0,pi0,K*bar0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,pi0,Kbar0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,pi+,K-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,eta',Kbar0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,eta,eta,Kbar0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,eta',pi+,K-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,K*_0bar0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,K-,pi+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,K*bar0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,Kbar0,pi0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,Kbar0,eta; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,pi0,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,rho0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,rho0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,pi+,pi-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,a_00,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,f_0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi+,pi-,K*_0bar0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,K*bar0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,pi0,Kbar0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,pi+,K-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,pi+,Kbar0,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,eta,eta; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,eta',pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi0,K*_0-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi0,K*-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,eta',K*-; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,a_0-; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,a_0-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,K*_0-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,K*-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,K-,pi0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho+,K-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,Kbar0,pi-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho+,rho-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,pi-,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho+,pi-,pi+,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->eta,eta,pi+,K-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,K-,pi+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,K*bar0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,Kbar0,pi0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,Kbar0,eta; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,pi0,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,rho0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,pi+,pi-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,K'_1bar0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,K*_0bar0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,K-,pi+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,Kbar0,pi0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K*_0bar0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K-,pi+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K'_1-,pi+; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K'_1bar0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K'_1bar0,pi0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K-,pi+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K*bar0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,Kbar0,pi0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->a_10,pi0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_1+,pi-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->f_0,pi0,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->f_0,pi+,pi-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K*bar0,e+,e-; 1.835E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,pi0; 1.7E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,mu+,mu-; 1.38E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_0-,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_0-,pi+,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_0-,pi+,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->a_0-,pi+,pi+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K''*-,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K''*-,K+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K''*bar0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K''*bar0,K0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*_0-,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*_0bar0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*-,K0,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*-,K0,pi+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K*-,K*0,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*-,K+,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*-,K+,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K*-,K+,pi+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K*-,K*+,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*-,a_0+,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,pi+,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,K0,rho+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,K*0,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,K+,K'_1bar0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K-,K+,K'_1bar0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K-,K+,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,K+,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K-,K+,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,omega; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*bar0,a_00,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,Kbar0,K'_10,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->Kbar0,Kbar0,K'_10,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->Kbar0,pi0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,pi0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,eta,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,eta,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,K0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,K0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,K+,rho-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->Kbar0,K+,rho0,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->Kbar0,K+,omega,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->Kbar0,K+,f_0,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->Kbar0,eta',eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho-,pi+,pi0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho-,pi+,pi0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi-,pi+,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi0,pi0,pi0,Kbar0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,pi0,Kbar0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi0,pi0,pi+,K-,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,pi+,K-,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi0,pi0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi0,eta,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi0,eta,eta',Kbar0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,eta,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,Kbar0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,pi0,eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,pi0,eta',pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,pi+,pi-,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,pi+,pi-,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,pi0,Kbar0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,pi0,Kbar0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,pi+,K-,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,pi+,K-,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,pi+,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,eta',eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho+,pi-,pi0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->rho+,pi-,pi0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->eta,eta',pi+,K-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,Kbar0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,pi0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,pi0,eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,pi0,eta',pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,rho0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,pi+,pi-,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,pi+,pi-,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,omega; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K0,K-,rho0,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,K-,rho+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,K-,omega,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,K-,f_0,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,K*bar0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K0,K*bar0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,K*bar0,pi+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,K'_1bar0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,K'_1bar0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,rho-,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,pi-,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,rho0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K0,Kbar0,rho0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,rho+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,omega; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K0,Kbar0,omega,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,f_0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K*0,K-,pi+,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K*0,K*bar0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*0,K*bar0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*0,Kbar0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*0,Kbar0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K*0,Kbar0,pi+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,rho-,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,pi-,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K+,K-,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,rho0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K+,K-,rho0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,rho+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,omega; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K+,K-,omega,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,f_0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K*bar0,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K+,K*bar0,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,Kbar0,rho-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*+,K*-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*+,K-,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*+,K-,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K*+,K-,pi+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K*+,K*bar0,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*+,Kbar0,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*+,Kbar0,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K'_1bar0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K'_1bar0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,Kbar0,K-,K*+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,Kbar0,Kbar0,K*0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,rho-,pi+; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,rho0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,pi+,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,rho+,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,omega; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,omega,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K0,Kbar0,K*bar0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K0,Kbar0,Kbar0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K+,K-,K*bar0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K+,K-,Kbar0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,f_0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_00,Kbar0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_00,pi0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_00,pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->a_00,pi+,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->a_0+,K-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_0+,pi-,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->a_0+,pi-,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->a_0+,pi-,pi+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->f_0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->f_0,pi0,pi0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->f_0,pi0,pi0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->f_0,pi+,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode Bbar0->f_0,pi+,pi-,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->f_0,pi+,pi-,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode Bbar0->K_L0,K_L0; 6.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K_S0,K_S0; 6.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,mu+,mu-; 5.74E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,e+,e-; 5.74E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*-,K0,pi+,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K*-,K+,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K*-,K*+,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,K+,rho-,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->pi-,K+,Kbar0; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi0,pi0,pi0,pi0,pi0; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,pi0,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi+,K-,K0; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi+,pi-,pi0,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,pi+,pi-,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,pi0,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K0,K-,rho+,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,K*bar0,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,rho0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K*0,K-,pi+,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K*0,K*bar0,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*0,Kbar0,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,rho0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,omega,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K*bar0,pi-,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K*+,K-,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K*+,Kbar0,pi-,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,pi0,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,rho0,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,pi+,pi-,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K*-,K0,pi+,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K*-,K+,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K*-,K*+,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,K+,rho-,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->Kbar0,K+,pi-,pi0,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->Kbar0,K+,pi-,pi+,pi-; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,pi0,pi0,eta; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,pi0,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho0,eta,eta; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->pi+,pi-,pi0,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->pi+,pi-,pi+,pi-,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->omega,pi0,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,eta,eta; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K0,K-,pi+,pi0,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,K-,pi+,pi+,pi-; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,K-,rho+,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,K*bar0,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,pi0,pi0,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,rho0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,pi+,pi-,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,eta,eta; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K*0,K-,pi+,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K*0,K*bar0,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K*0,Kbar0,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,pi0,pi0,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,rho0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,pi+,pi-,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,eta,eta; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,omega,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K*bar0,pi-,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K*+,K-,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K*+,Kbar0,pi-,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,pi0,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,rho0,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,pi+,pi-,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K*bar0,tau+,tau-; 1.9E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,tau+,tau-; 1.3E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->Kbar0,K+,pi-,pi0,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->Kbar0,K+,pi-,pi0,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->pi0,pi0,pi0,pi0,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->rho0,eta,eta'; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,eta,eta'; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K0,K-,pi+,pi0,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,K-,pi+,pi0,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,Kbar0,K+,pi-; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,pi0,pi0,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,pi0,pi0,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,pi+,pi-,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,pi+,pi-,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,eta,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,K0,K-,pi+; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,K0,Kbar0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,K0,Kbar0,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,K+,K-,Kbar0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K0,Kbar0,K+,K-; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,pi0,pi0,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,pi0,pi0,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,pi+,pi-,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,pi+,pi-,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,eta,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K0,K-,pi+; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K0,Kbar0,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K+,K-,Kbar0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K+,K-; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K+,K-,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->K+,K-,K+,Kbar0,pi-; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,Kbar0,K+,pi-; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,pi-,pi+; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,rho0; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K0,K-,pi+; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K0,Kbar0,K-,pi+; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K0,Kbar0,Kbar0,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K0,Kbar0; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K0,Kbar0,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K+,K-,K-,pi+; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K+,K-,Kbar0,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,K+,K-; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K+,K-,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode Bbar0->phi,phi; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,phi,pi0; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho'-,pi+; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho''-,pi+; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho-,pi+; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho+,pi-; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->eta,Kbar0; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->eta,K0; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,Kbar0; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->omega,K0; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K_S0,K_L0; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->K0,Kbar0; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->eta',Kbar0; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->eta',K0; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,Kbar0; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->phi,K0; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->D*+,pi+,pi-,pi-; 0 1 /Herwig/Decays/Mambo decaymode Bbar0->rho''+,pi-; 0 1 /Herwig/Decays/DecayME0 decaymode Bbar0->rho'+,pi-; 0 1 /Herwig/Decays/DecayME0 # decaymode B-->ubar=d,c=ubar; 0.274508537 1 /Herwig/Decays/WeakPartonic100 decaymode B-->cbar=s,c=ubar; 0.074 1 /Herwig/Decays/WeakPartonic100 decaymode B-->D*0,e-,nu_ebar; 0.0617 1 /Herwig/Decays/HQET decaymode B-->D*0,mu-,nu_mubar; 0.0617 1 /Herwig/Decays/HQET decaymode B-->cd_0=uu_1bar; 0.033 1 /Herwig/Decays/WeakPartonic0 decaymode B-->D_s*-,D*0; 0.0278 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->ubar=s,c=ubar; 0.0225 1 /Herwig/Decays/WeakPartonic100 decaymode B-->D0,e-,nu_ebar; 0.0224 1 /Herwig/Decays/HQET decaymode B-->D0,mu-,nu_mubar; 0.0224 1 /Herwig/Decays/HQET decaymode B-->D*0,tau-,nu_taubar; 0.016 1 /Herwig/Decays/HQET decaymode B-->D*0,a_1-; 0.01597 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D*+,pi0,pi-,pi-; 0.015 1 /Herwig/Decays/Mambo decaymode B-->rho-,D0; 0.0134 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D0,D_s-; 0.0129 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D*0,D_s-; 0.0124 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D_s*-,D0; 0.0111 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D*0,D*-,Kbar0; 0.01 1 /Herwig/Decays/DecayME0 decaymode B-->D*0,D_s1-; 0.0098 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D*0,rho-; 0.0098 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->cs_0=uu_1bar; 0.009 1 /Herwig/Decays/WeakPartonic0 decaymode B-->D'_10,e-,nu_ebar; 0.009 1 /Herwig/Decays/ISGW2 decaymode B-->D'_10,mu-,nu_mubar; 0.009 1 /Herwig/Decays/ISGW2 decaymode B-->a_1-,D0; 0.00887 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D0,tau-,nu_taubar; 0.007 1 /Herwig/Decays/HQET decaymode B-->D*0,D*bar0,K-; 0.007 1 /Herwig/Decays/DecayME0 decaymode B-->D_10,e-,nu_ebar; 0.0056 1 /Herwig/Decays/ISGW2 decaymode B-->D_10,mu-,nu_mubar; 0.0056 1 /Herwig/Decays/ISGW2 decaymode B-->ubar=d,u=ubar; 0.00505 1 /Herwig/Decays/WeakPartonic100 decaymode B-->s,g,ubar; 0.005 1 /Herwig/Decays/WeakPartonic0 decaymode B-->D0,pi-; 0.005 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D0,pi+,pi-,pi-; 0.005 1 /Herwig/Decays/Mambo decaymode B-->D*0,D*bar0,K*-; 0.005 1 /Herwig/Decays/DecayME0 decaymode B-->D*0,D*-,K*bar0; 0.005 1 /Herwig/Decays/DecayME0 decaymode B-->D0,D*-,Kbar0; 0.0049 1 /Herwig/Decays/DecayME0 decaymode B-->D_0*0,e-,nu_ebar; 0.0049 1 /Herwig/Decays/ISGW2 decaymode B-->D_0*0,mu-,nu_mubar; 0.0049 1 /Herwig/Decays/ISGW2 decaymode B-->D0,D*bar0,K-; 0.0047 1 /Herwig/Decays/DecayME0 decaymode B-->D*0,pi-; 0.0046 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D*_20,D_s-; 0.0042 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D_s1-,D0; 0.0041 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->cbar=d,c=ubar; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode B-->cbar=s,u=ubar; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode B-->D*_20,D_s*-; 0.004 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D*_20,rho-; 0.0038 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D_s*-,D+,pi-; 0.0037 1 /Herwig/Decays/DecayME0 decaymode B-->D_s-,D+,pi-; 0.0036 1 /Herwig/Decays/DecayME0 decaymode B-->D_s*-,D+,pi-,pi0; 0.0033 1 /Herwig/Decays/Mambo decaymode B-->D_s*-,D0,pi-,pi+; 0.0033 1 /Herwig/Decays/Mambo decaymode B-->D_s-,D+,pi-,pi0; 0.0033 1 /Herwig/Decays/Mambo decaymode B-->D_s-,D0,pi-,pi+; 0.0033 1 /Herwig/Decays/Mambo decaymode B-->D*0,D-,Kbar0; 0.0031 1 /Herwig/Decays/DecayME0 decaymode B-->D*_20,e-,nu_ebar; 0.003 1 /Herwig/Decays/ISGW2 decaymode B-->D*_20,mu-,nu_mubar; 0.003 1 /Herwig/Decays/ISGW2 decaymode B-->D0,D*bar0,K*-; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B-->D0,Dbar0,K*-; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B-->D0,D*-,K*bar0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B-->D0,D-,K*bar0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B-->D*0,Dbar0,K*-; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B-->D*0,D-,K*bar0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B-->D_10,D_s*-; 0.0024 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->ubar=u,s=ubar; 0.0022 1 /Herwig/Decays/WeakPartonic0 decaymode B-->D'_10,rho-; 0.0022 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D0,rho0,pi-; 0.0021 1 /Herwig/Decays/DecayME0 decaymode B-->D+,rho-,pi-; 0.002 1 /Herwig/Decays/DecayME0 decaymode B-->D+,pi0,pi-,pi-; 0.002 1 /Herwig/Decays/Mambo decaymode B-->D*+,rho-,pi-; 0.002 1 /Herwig/Decays/DecayME0 decaymode B-->D*_20,tau-,nu_taubar; 0.002 1 /Herwig/Decays/ISGW2 decaymode B-->D'_10,tau-,nu_taubar; 0.002 1 /Herwig/Decays/ISGW2 decaymode B-->e-,nu_ebar,u=ubar; 0.001948 1 /Herwig/Decays/WeakPartonic100 decaymode B-->mu-,nu_mubar,u=ubar; 0.001948 1 /Herwig/Decays/WeakPartonic100 decaymode B-->D_s*-,D0,pi0; 0.0018 1 /Herwig/Decays/DecayME0 decaymode B-->D_s-,D0,pi0; 0.0018 1 /Herwig/Decays/DecayME0 decaymode B-->dbar=d,s=ubar; 0.0018 1 /Herwig/Decays/WeakPartonic0 decaymode B-->D*0,Dbar0,K-; 0.0018 1 /Herwig/Decays/DecayME0 decaymode B-->Jpsi,K_1-; 0.0018 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D0,D-,Kbar0; 0.0017 1 /Herwig/Decays/DecayME0 decaymode B-->D0,D_s0-; 0.0016 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D*0,D_s0-; 0.0016 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D*-,D*+,K-; 0.0015 1 /Herwig/Decays/DecayME0 decaymode B-->D-,D*+,K-; 0.0015 1 /Herwig/Decays/DecayME0 decaymode B-->sbar=s,s=ubar; 0.0015 1 /Herwig/Decays/WeakPartonic0 decaymode B-->D0,Dbar0,K-; 0.0015 1 /Herwig/Decays/DecayME0 decaymode B-->Jpsi,K*-; 0.00143 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D_0*0,tau-,nu_taubar; 0.0013 1 /Herwig/Decays/ISGW2 decaymode B-->D_10,tau-,nu_taubar; 0.0013 1 /Herwig/Decays/ISGW2 decaymode B-->D*+,pi-,pi-; 0.00125 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,eta_c; 0.0012 1 /Herwig/Decays/DecayME0 decaymode B-->D_10,D_s-; 0.0012 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D'_10,D_s*-; 0.0012 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->Jpsi,K-; 0.00106 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D*0,D*-; 0.00104 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D+,pi-,pi-; 0.00102 1 /Herwig/Decays/DecayME0 decaymode B-->D*-,D*+,K*-; 0.001 1 /Herwig/Decays/DecayME0 decaymode B-->D_10,pi-; 0.001 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D_0*0,pi-; 0.00091 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->sbar=s,d=ubar; 0.0009 1 /Herwig/Decays/WeakPartonic0 decaymode B-->eta_c,K-; 0.0009 1 /Herwig/Decays/DecayME0 decaymode B-->D_s*-,D0,pi0,pi0; 0.0008 1 /Herwig/Decays/Mambo decaymode B-->D_s-,D0,pi0,pi0; 0.0008 1 /Herwig/Decays/Mambo decaymode B-->D*_20,pi-; 0.0008 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D*0,K*-; 0.00077 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D'_10,pi-; 0.00075 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->dbar=d,d=ubar; 0.0007 1 /Herwig/Decays/WeakPartonic0 decaymode B-->D_10,rho-; 0.0007 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->psi(2S),K-; 0.00063 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->K*-,D0; 0.00061 1 /Herwig/Decays/DecayME0 decaymode B-->D'_10,D_s-; 0.0006 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->psi(2S),K*-; 0.0006 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->chi_c1,K-; 0.00057 1 /Herwig/Decays/DecayME0 decaymode B-->D*-,D+,K*-; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B-->D*-,D+,K-; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B-->D-,D+,K*-; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B-->D-,D+,K-; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B-->D-,D*+,K*-; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B-->D0,pi0,pi-; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B-->D*0,rho-,pi0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B-->D*0,pi-,pi0,pi0; 0.0005 1 /Herwig/Decays/Mambo decaymode B-->D*0,pi0,pi-; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B-->D*0,rho0,pi-; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B-->D*0,pi+,pi-,pi-; 0.0005 1 /Herwig/Decays/Mambo decaymode B-->Jpsi,K*_2-; 0.0005 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->psi(3770),K*-; 0.0005 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,eta_c(2S); 0.00048 1 /Herwig/Decays/DecayME0 decaymode B-->psi(3770),K-; 0.00048 1 /Herwig/Decays/DecayME0 decaymode B-->D0,K-; 0.00041 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,chi_c0; 0.0004 1 /Herwig/Decays/DecayME0 decaymode B-->chi_c1,K-,pi+,pi-; 0.0004 1 /Herwig/Decays/Mambo decaymode B-->chi_c1,Kbar0,pi-; 0.0004 1 /Herwig/Decays/DecayME0 decaymode B-->psi(2S),K_1-; 0.0004 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->psi(2S),Kbar0,pi-; 0.0004 1 /Herwig/Decays/DecayME0 decaymode B-->D*0,K-; 0.00036 1 /Herwig/Decays/DecayME0 decaymode B-->eta_c(2S),K-; 0.00036 1 /Herwig/Decays/DecayME0 decaymode B-->D*-,D0; 0.000335 1 /Herwig/Decays/DecayME0 decaymode B-->D*0,D-; 0.000335 1 /Herwig/Decays/DecayME0 decaymode B-->s,ubar,gamma; 0.0003118 1 /Herwig/Decays/BtosgammaKagan decaymode B-->chi_c0,K-; 0.0003 1 /Herwig/Decays/DecayME0 decaymode B-->psi(3770),K_1-; 0.0003 1 /Herwig/Decays/DecayME0 decaymode B-->psi(3770),Kbar0,pi-; 0.0003 1 /Herwig/Decays/DecayME0 decaymode B-->chi_c1,K*-; 0.00029 1 /Herwig/Decays/DecayME0 decaymode B-->D-,D0; 0.00027 1 /Herwig/Decays/DecayME0 decaymode B-->eta_c,K-,pi+,pi-; 0.0002 1 /Herwig/Decays/Mambo decaymode B-->eta_c,Kbar0,pi-; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B-->Jpsi,Kbar0,pi-; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B-->chi_c2,K-,pi+,pi-; 0.0002 1 /Herwig/Decays/Mambo decaymode B-->chi_c2,Kbar0,pi-; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B-->chi_c0,K-,pi+,pi-; 0.0002 1 /Herwig/Decays/Mambo decaymode B-->chi_c0,Kbar0,pi-; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B-->chi_c1,K-,pi0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B-->chi_c1,K-,pi0,pi0; 0.0002 1 /Herwig/Decays/Mambo decaymode B-->chi_c1,Kbar0,pi-,pi0; 0.0002 1 /Herwig/Decays/Mambo decaymode B-->psi(3770),K-,pi0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B-->psi(3770),K-,pi+,pi-; 0.0002 1 /Herwig/Decays/Mambo decaymode B-->psi(2S),K-,pi0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B-->psi(2S),K-,pi+,pi-; 0.0002 1 /Herwig/Decays/Mambo decaymode B-->rho0,e-,nu_ebar; 0.000145 1 /Herwig/Decays/BZVector decaymode B-->rho0,mu-,nu_mubar; 0.000145 1 /Herwig/Decays/BZVector decaymode B-->omega,e-,nu_ebar; 0.000145 1 /Herwig/Decays/BZVector decaymode B-->omega,mu-,nu_mubar; 0.000145 1 /Herwig/Decays/BZVector decaymode B-->eta_c,K-,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B-->eta_c,K-,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B-->eta_c,Kbar0,pi-,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B-->Jpsi,K'_1-; 0.0001 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->Jpsi,K-,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B-->chi_c2,K-,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B-->chi_c2,K-,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B-->chi_c2,Kbar0,pi-,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B-->chi_c0,K-,pi0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B-->chi_c0,K-,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B-->chi_c0,Kbar0,pi-,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B-->psi(3770),K-,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B-->psi(3770),Kbar0,pi-,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B-->psi(2S),K-,pi0,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B-->psi(2S),Kbar0,pi-,pi0; 0.0001 1 /Herwig/Decays/Mambo decaymode B-->tau-,nu_taubar; 9.3E-5 1 /Herwig/Decays/PScalarlnu decaymode B-->Jpsi,phi,K-; 9.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->eta,e-,nu_ebar; 8.4E-5 1 /Herwig/Decays/BZScalar decaymode B-->eta,mu-,nu_mubar; 8.4E-5 1 /Herwig/Decays/BZScalar decaymode B-->eta',e-,nu_ebar; 8.4E-5 1 /Herwig/Decays/ISGW2 decaymode B-->eta',mu-,nu_mubar; 8.4E-5 1 /Herwig/Decays/ISGW2 decaymode B-->eta_c(2S),K-,pi+,pi-; 8.0E-5 1 /Herwig/Decays/Mambo decaymode B-->eta_c(2S),Kbar0,pi-; 8.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->eta',K-; 7.8E-5 1 /Herwig/Decays/DecayME0 decaymode B-->pi0,e-,nu_ebar; 7.2E-5 1 /Herwig/Decays/BZScalar decaymode B-->pi0,mu-,nu_mubar; 7.2E-5 1 /Herwig/Decays/BZScalar decaymode B-->K*_0bar0,pi-; 7.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->Jpsi,rho-; 6.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->a_1-,a_10; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->eta_c(2S),K-,pi0; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->eta_c(2S),K-,pi0,pi0; 5.0E-5 1 /Herwig/Decays/Mambo decaymode B-->eta_c(2S),Kbar0,pi-,pi0; 5.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K-,Kbar0,K0; 4.8E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_10,tau-,nu_taubar; 4.6E-5 1 /Herwig/Decays/ISGW2 decaymode B-->rho0,tau-,nu_taubar; 4.2E-5 1 /Herwig/Decays/BZVector decaymode B-->omega,tau-,nu_taubar; 4.2E-5 1 /Herwig/Decays/BZVector decaymode B-->K*-,gamma; 4.03E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_1-,pi0; 4.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->Jpsi,pi-; 4.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->chi_c2,K*-; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_10,pi-; 4.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->pi0,tau-,nu_taubar; 3.0E-5 1 /Herwig/Decays/BZScalar decaymode B-->D_s*-,rho0; 2.8E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->rho0,D_s-; 2.8E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->b_10,tau-,nu_taubar; 2.7E-5 1 /Herwig/Decays/ISGW2 decaymode B-->K-,K+,K-; 2.6E-5 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,pi0,pi0; 2.6E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,eta; 2.4E-5 1 /Herwig/Decays/DecayME0 decaymode B-->Kbar0,pi-; 2.4E-5 1 /Herwig/Decays/DecayME0 decaymode B-->f_1,tau-,nu_taubar; 2.3E-5 1 /Herwig/Decays/ISGW2 decaymode B-->f'_1,tau-,nu_taubar; 2.3E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_1-,K*bar0; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->D_s*-,pi0; 2.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->D_s-,pi0; 2.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B-->f_2,tau-,nu_taubar; 2.0E-5 1 /Herwig/Decays/ISGW2 decaymode B-->f'_2,tau-,nu_taubar; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->chi_c2,K-; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_10,K*-; 2.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->eta',tau-,nu_taubar; 1.8E-5 1 /Herwig/Decays/ISGW2 decaymode B-->pi-,pi-,pi+; 1.6E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,rho0; 1.5E-5 1 /Herwig/Decays/DecayME0 decaymode B-->omega,rho-; 1.3E-5 1 /Herwig/Decays/DecayME0 decaymode B-->h_1,tau-,nu_taubar; 1.3E-5 1 /Herwig/Decays/ISGW2 decaymode B-->h'_1,tau-,nu_taubar; 1.3E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K-,pi0; 1.2E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,pi0; 1.2E-5 1 /Herwig/Decays/DecayME0 decaymode B-->eta,tau-,nu_taubar; 1.2E-5 1 /Herwig/Decays/BZScalar decaymode B-->D-,Kbar0; 1.1E-5 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K*-; 1.1E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_1-,K-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_1-,Kbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_1-,Kbar0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_1-,pi0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_1-,rho0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_1-,pi+,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_1-,omega; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_1-,f_0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->b_1-,Kbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->b_1-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,f_0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,f_0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K*_0bar0,K0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K*_0bar0,K0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K-,K-,K+,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K-,K-,K*_00,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K-,K-,K*_0+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K-,K*_0+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K-,K0,K'_1bar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K-,K0,K*bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K0,K*bar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K-,K*0,Kbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K*0,Kbar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K-,K+,K*_0-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K+,K*_0-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K-,K+,K*_0bar0,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K-,K+,K*-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K+,Kbar0,rho-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K-,K*+,K-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K*+,K-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K-,K*_00,Kbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K*_00,Kbar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K-,K'_10,Kbar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K*bar0,f_0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->Kbar0,Kbar0,K*_00,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->rho-,K*_0-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,K*_0bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,K*_0bar0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,K*-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,K-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,K-,pi+,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->rho-,K*bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,K*bar0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,Kbar0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,Kbar0,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->rho-,Kbar0,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->rho-,pi-,pi+; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,pi0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,rho0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,a_00; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,a_00,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,f_0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,f_0,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,pi-,K*_0bar0,pi+; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->pi-,pi0,K*_0bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,pi0,K*_0bar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->pi-,pi0,K*bar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,pi0,K*bar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->pi-,pi0,pi0,Kbar0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->pi-,pi0,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->pi-,pi+,K*-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->pi0,pi0,K*_0-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->pi0,pi0,K*_0-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->pi0,pi0,K*-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->pi0,pi0,K*-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->pi0,pi0,pi0,K-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->rho0,a_0-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K*_0-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K*_0-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K*_0bar0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K*-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K*-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K-,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->rho0,K*bar0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,Kbar0,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->rho0,pi-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,rho0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,f_0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->pi+,pi-,K*-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->pi+,pi-,K*bar0,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->pi+,pi-,pi-,Kbar0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->pi+,pi-,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->pi+,pi-,pi0,K-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->rho+,a_0-,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho+,K*-,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho+,K-,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho+,K-,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->rho+,Kbar0,pi-,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->rho+,rho-,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->omega,K*-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->omega,K-,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->omega,K*bar0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->omega,Kbar0,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->omega,rho-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->omega,pi-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->omega,rho0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->omega,f_0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K0,K*-,Kbar0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->K0,K*-,Kbar0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,K-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,K-,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,Kbar0,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,Kbar0,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,K*-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,K-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,K-,rho0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,K-,omega; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,K-,f_0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,Kbar0,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,Kbar0,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->phi,K*_0-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K*_0-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K*_0bar0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K*-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K-,pi0,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->phi,K-,rho0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K-,pi+,pi-; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->phi,K-,omega; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K-,f_0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->phi,Kbar0,rho-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->phi,Kbar0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->phi,Kbar0,pi-,pi0; 1.0E-5 1 /Herwig/Decays/Mambo decaymode B-->b_10,K-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->b_10,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_10,K-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_10,K-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_10,Kbar0,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_10,pi-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->a_1+,pi-,pi-; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->f_0,pi-,pi0; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,pi-; 9.1E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K-; 9.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,eta; 8.6E-6 1 /Herwig/Decays/DecayME0 decaymode B-->f_0,K-; 8.5E-6 1 /Herwig/Decays/DecayME0 decaymode B-->D*-,Kbar0; 6.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->omega,pi-; 5.9E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,pi0; 5.5E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K-; 5.2E-6 1 /Herwig/Decays/DecayME0 decaymode B-->omega,K-; 5.1E-6 1 /Herwig/Decays/DecayME0 decaymode B-->a_1-,pi0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,a_00; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,a_00,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,f_0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K*_0bar0,K0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K-,K+,eta,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K-,K*_0+,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K0,K'_1bar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K+,K*_0-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K*_00,Kbar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K'_10,Kbar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K*bar0,a_0-; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*bar0,a_0-,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,K*_0bar0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,K*bar0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,Kbar0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,Kbar0,eta,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho-,pi0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,rho0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,a_00,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,f_0,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,pi0,K*_0bar0,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,pi+,K*-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,eta,K*bar0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,eta,K*bar0,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,eta,pi0,Kbar0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,eta,pi0,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi0,pi0,K*_0-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi0,pi0,eta,K-; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi0,eta,K*-; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi0,eta,K*-,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho0,a_0-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K*_0-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K*-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K-,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K-,eta,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho0,Kbar0,pi-; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,pi-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi+,pi-,pi-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi+,pi-,eta,K-; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->omega,K*-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->omega,K-,pi0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->omega,K-,eta,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->omega,Kbar0,pi-; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->omega,rho-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->omega,pi-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K0,Kbar0,K-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,K-,eta,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,K-,eta; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,K*_0-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K-,eta,pi0; 5.0E-6 1 /Herwig/Decays/Mambo decaymode B-->a_10,pi-,eta; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,pi+,pi-; 4.9E-6 1 /Herwig/Decays/DecayME0 decaymode B-->eta,pi-; 4.8E-6 1 /Herwig/Decays/DecayME0 decaymode B-->eta',pi-; 4.2E-6 1 /Herwig/Decays/DecayME0 decaymode B-->a_00,tau-,nu_taubar; 4.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,K0; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,phi,K*-; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,phi,K-; 3.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->eta,K-; 2.6E-6 1 /Herwig/Decays/DecayME0 decaymode B-->f_2,pi-; 2.3E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho'0,pi-; 2.2E-6 1 /Herwig/Decays/DecayME0 decaymode B-->a_1-,pi0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*_0-,pi0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*_0-,K0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,pi0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,f_0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K*_0bar0,K0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K-,K'_1bar0,pi+; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K-,K+,eta',pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K-,K*_0+,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K-,K'_1+,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K0,K'_1bar0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K+,K'_1-; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K+,K'_1-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K+,K'_1bar0,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K+,K*_0-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K*_00,Kbar0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K'_10,Kbar0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->Kbar0,Kbar0,K'_10,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho-,K*_0bar0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,K*bar0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,Kbar0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,Kbar0,eta',pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho-,pi0,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho-,pi0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,rho0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,pi+,pi-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho-,eta,eta; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,a_00,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,f_0,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,pi-,pi+,Kbar0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,pi0,K*_0bar0,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,pi0,pi0,Kbar0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,pi+,K*-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,eta,eta,Kbar0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,eta,eta,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,eta',K*bar0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,eta',pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi0,pi0,K*_0-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi0,pi0,pi0,K-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi0,pi0,eta',K-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi0,eta,eta,K-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi0,eta',K*-; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi0,eta',K*-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho0,a_0-; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,a_0-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K*_0-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K*-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K-,eta; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,K-,eta',pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho0,pi-,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho0,pi-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,pi+,pi-,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi+,pi-,pi-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi+,pi-,pi0,K-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi+,pi-,pi+,K-,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho+,pi-,pi-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->eta,eta,K*-; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->eta,eta,K*-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->omega,K*-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->omega,K-,eta; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->omega,K-,eta',pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->omega,rho-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->omega,pi-,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->omega,pi-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K0,Kbar0,K'_1-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,K'_1bar0,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,K-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,K-,eta',pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,K0,K'_1-,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,K-,eta'; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,K'_1-; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K'_1-,pi0; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K'_1bar0,pi-; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K*_0-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K-,eta',pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->f'_0,tau-,nu_taubar; 2.0E-6 1 /Herwig/Decays/ISGW2 decaymode B-->K*_00,K-; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->a_10,pi-,eta'; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->f_0,pi-,pi0,pi0; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->f_0,tau-,nu_taubar; 2.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->f_0,pi+,pi-,pi-; 2.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K*-,e+,e-; 1.835E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,mu+,mu-; 1.38E-6 1 /Herwig/Decays/DecayME0 decaymode B-->a_0-,Kbar0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->a_0-,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->a_0-,pi0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->a_0-,pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K*-,K0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,K0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K*-,K+,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,K+,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K*-,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,pi0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,pi0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,pi0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,eta,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,eta,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K*0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K*0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K+,K'_1-,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K+,K'_1-,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,K+,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K-,eta',eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*bar0,K+,pi-,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->Kbar0,K+,rho-,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho-,Kbar0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho-,pi0,eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho-,pi0,eta',pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho-,pi+,pi-,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho-,pi+,pi-,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho-,eta,eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho-,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,Kbar0,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,Kbar0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,Kbar0,K0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,Kbar0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,pi-,pi+,Kbar0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,pi-,pi+,Kbar0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,pi0,pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,pi0,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,pi0,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,eta,pi0,Kbar0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,eta,pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,eta,eta,Kbar0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,eta,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,eta,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->pi-,eta',pi0,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi-,eta',eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi0,pi0,eta,K-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi0,pi0,eta',K-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi0,eta,eta,K-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi0,eta,eta',K-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi0,eta,eta',K-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho0,K-,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho0,pi-,eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho0,pi-,eta',pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi+,pi-,pi-,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi+,pi-,pi-,eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi+,pi-,pi-,eta',pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi+,pi-,eta,K-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->pi+,pi-,eta',K-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho+,pi-,pi-,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->rho+,pi-,pi-,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->eta,eta',K*-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->eta,eta',K*-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->omega,K*-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->omega,K-,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->omega,pi-,eta,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->omega,pi-,eta',pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,rho-,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,K-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K0,K-,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,rho0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K0,K-,rho0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,pi+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,rho+,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,omega; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K0,K-,omega,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,f_0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,K*bar0,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K0,K*bar0,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,K'_1-,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,K'_1-,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,rho-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K0,Kbar0,rho-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,rho0,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,omega,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,K0,K-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,K0,K-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,f_0,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,K0,K'_1-,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K0,K0,K'_1-,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K*0,K*-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*0,K*-,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*0,K*bar0,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*0,Kbar0,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*0,Kbar0,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,K-,K0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,K-,K0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,rho-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K+,K-,rho-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,rho0,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,omega,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,K0,Kbar0,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,K+,K-,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K*+,K-,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->K*+,K-,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K*+,Kbar0,pi-,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,K'_1-,eta; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K'_1-,eta'; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,rho-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,rho-,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,pi-,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,pi-,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,rho0,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,pi+,pi-,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,omega,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K0,K-,K-,pi+; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,K0,K-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,K0,K-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,K0,K-,K*0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,K0,Kbar0,K*-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,K0,Kbar0,K-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,K0,Kbar0,K-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,K0,Kbar0,Kbar0,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,K0,Kbar0,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,K+,K-,K*-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,K+,K-,K-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,K+,K-,K-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,K+,K-,Kbar0,pi-; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->phi,phi,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->phi,f_0,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->rho'0,K-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->a_00,K-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->a_00,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->a_00,pi-,pi0; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->a_00,pi-,pi0,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->a_0+,pi-,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->a_0+,pi-,pi-,pi0; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->f_0,pi-; 1.0E-6 1 /Herwig/Decays/DecayME0 decaymode B-->f_0,pi-,pi0,eta; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->f_0,pi-,pi0,eta'; 1.0E-6 1 /Herwig/Decays/Mambo decaymode B-->K-,mu+,mu-; 5.74E-7 1 /Herwig/Decays/DecayME0 decaymode B-->K-,e+,e-; 5.74E-7 1 /Herwig/Decays/DecayME0 decaymode B-->D*-,pi0; 5.4E-7 1 /Herwig/Decays/DecayME0 decaymode B-->D-,pi0; 5.4E-7 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,K0,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,K0,eta,pi0; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K-,K*0,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K*0,eta,pi0; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,pi0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,rho0,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,rho-,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,pi-,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K*0,K*-,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B-->K+,K-,rho-,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,pi-,eta; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B-->phi,rho-,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B-->phi,pi-,eta; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B-->phi,pi-,eta,pi0; 5.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K*-,K0,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B-->K*-,K0,eta',pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K-,K*0,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K*0,eta',pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->Kbar0,K+,pi-,pi-,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,pi0,pi0,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,pi0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,rho0,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,pi+,pi-,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,eta,eta; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,rho-,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,pi-,pi0,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,pi-,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,pi+,pi-,pi-; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K*0,K*-,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B-->K+,K-,rho-,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,pi-,pi0,pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,pi-,eta'; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,pi+,pi-,pi-; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->phi,rho-,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B-->phi,pi-,eta'; 2.0E-7 1 /Herwig/Decays/DecayME0 decaymode B-->phi,pi-,eta',pi0; 2.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K*-,tau+,tau-; 1.9E-7 1 /Herwig/Decays/DecayME0 decaymode B-->K-,tau+,tau-; 1.3E-7 1 /Herwig/Decays/DecayME0 decaymode B-->K-,K-,pi+; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode B-->Kbar0,K+,pi-,pi-,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B-->Kbar0,K+,pi-,pi-,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,pi0,eta,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,pi0,eta',pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,pi+,pi-,eta; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,pi+,pi-,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,K-,eta,eta'; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,pi-,eta,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K0,Kbar0,pi-,eta',pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,pi-,eta,pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K+,K-,pi-,eta',pi0; 1.0E-7 1 /Herwig/Decays/Mambo decaymode B-->K+,pi-,pi-; 1.0E-7 1 /Herwig/Decays/DecayME0 decaymode B-->e-,nu_ebar; 0 1 /Herwig/Decays/DecayME0 decaymode B-->mu-,nu_mubar; 0 1 /Herwig/Decays/DecayME0 # decaymode B_s0->u=dbar,cbar=s; 0.362359982 1 /Herwig/Decays/WeakPartonic100 decaymode B_s0->cs_0bar=ud_0; 0.06 1 /Herwig/Decays/WeakPartonic0 decaymode B_s0->D_s*-,mu+,nu_mu; 0.049 1 /Herwig/Decays/ISGW2 decaymode B_s0->D_s*-,e+,nu_e; 0.049 1 /Herwig/Decays/ISGW2 decaymode B_s0->D_s-,mu+,nu_mu; 0.021 1 /Herwig/Decays/ISGW2 decaymode B_s0->D_s-,e+,nu_e; 0.021 1 /Herwig/Decays/ISGW2 decaymode B_s0->u=cbar,dbar=s; 0.02 1 /Herwig/Decays/WeakPartonic100 decaymode B_s0->D_s*-,D_s*+; 0.0197 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->u=sbar,cbar=s; 0.0172 1 /Herwig/Decays/WeakPartonic100 decaymode B_s0->D_s*-,tau+,nu_tau; 0.016 1 /Herwig/Decays/ISGW2 decaymode B_s0->D_s*-,D*+,K0; 0.015 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s*-,D*0,K+; 0.015 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s*-,a_1+; 0.0122 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D_s*-,D_s+; 0.0099 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D_s+,D-,Kbar0; 0.0096 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s+,D0,K-; 0.0096 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s*+,Dbar0,K-; 0.0096 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s*+,D-,Kbar0; 0.0096 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s*+,D_s-; 0.009 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D_s-,D_s+; 0.0086 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->a_1+,D_s-; 0.0085 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D_s-,tau+,nu_tau; 0.008 1 /Herwig/Decays/ISGW2 decaymode B_s0->c=dbar,cbar=s; 0.008 1 /Herwig/Decays/WeakPartonic100 decaymode B_s0->D_s*-,pi-,pi+,pi+; 0.0077 1 /Herwig/Decays/Mambo decaymode B_s0->rho+,D_s-; 0.0073 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D'_s1-,mu+,nu_mu; 0.007 1 /Herwig/Decays/ISGW2 decaymode B_s0->D'_s1-,e+,nu_e; 0.007 1 /Herwig/Decays/ISGW2 decaymode B_s0->D_s2-,mu+,nu_mu; 0.007 1 /Herwig/Decays/ISGW2 decaymode B_s0->D_s2-,e+,nu_e; 0.007 1 /Herwig/Decays/ISGW2 decaymode B_s0->D_s*-,rho+; 0.007 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D_s*-,D+,K0; 0.005 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s*-,D+,K*0; 0.005 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s*-,D0,K+; 0.005 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s*-,D0,K*+; 0.005 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s-,D*+,K0; 0.005 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s-,D*0,K+; 0.005 1 /Herwig/Decays/DecayME0 decaymode B_s0->sbar,g,s; 0.005 1 /Herwig/Decays/WeakPartonic0 decaymode B_s0->D_s+,Dbar0,pi-,Kbar0; 0.0048 1 /Herwig/Decays/Mambo decaymode B_s0->D_s+,D-,pi+,K-; 0.0048 1 /Herwig/Decays/Mambo decaymode B_s0->D_s*+,Dbar0,pi-,Kbar0; 0.0048 1 /Herwig/Decays/Mambo decaymode B_s0->D_s*+,D-,pi+,K-; 0.0048 1 /Herwig/Decays/Mambo decaymode B_s0->u=ubar,dbar=s; 0.0041 1 /Herwig/Decays/WeakPartonic0 decaymode B_s0->D_s1-,mu+,nu_mu; 0.004 1 /Herwig/Decays/ISGW2 decaymode B_s0->D_s1-,e+,nu_e; 0.004 1 /Herwig/Decays/ISGW2 decaymode B_s0->D_s0-,mu+,nu_mu; 0.004 1 /Herwig/Decays/ISGW2 decaymode B_s0->D_s0-,e+,nu_e; 0.004 1 /Herwig/Decays/ISGW2 decaymode B_s0->c=sbar,ubar=s; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode B_s0->D_s*-,D*+,K*0; 0.003 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s*-,D*0,K*+; 0.003 1 /Herwig/Decays/DecayME0 decaymode B_s0->D'_s1-,tau+,nu_tau; 0.0028 1 /Herwig/Decays/ISGW2 decaymode B_s0->D_s2-,tau+,nu_tau; 0.0028 1 /Herwig/Decays/ISGW2 decaymode B_s0->D_s*-,pi+; 0.0027 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D_s-,pi+; 0.0026 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D_s-,D+,K*0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s-,D*+,K*0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s-,D0,K*+; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s-,D*0,K*+; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s+,Dbar0,pi0,K-; 0.0024 1 /Herwig/Decays/Mambo decaymode B_s0->D_s+,D-,pi0,Kbar0; 0.0024 1 /Herwig/Decays/Mambo decaymode B_s0->D_s*+,Dbar0,pi0,K-; 0.0024 1 /Herwig/Decays/Mambo decaymode B_s0->D_s*+,D-,pi0,Kbar0; 0.0024 1 /Herwig/Decays/Mambo decaymode B_s0->u=ubar,sbar=s; 0.0022 1 /Herwig/Decays/WeakPartonic0 decaymode B_s0->D_s1-,rho+; 0.0021 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D_s-,D+,K0; 0.002 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s-,D0,K+; 0.002 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s1-,tau+,nu_tau; 0.0018 1 /Herwig/Decays/ISGW2 decaymode B_s0->D_s0-,tau+,nu_tau; 0.0018 1 /Herwig/Decays/ISGW2 decaymode B_s0->d=dbar,sbar=s; 0.0018 1 /Herwig/Decays/WeakPartonic0 decaymode B_s0->D_s*-,D+; 0.0017 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D_s*-,D*+; 0.0017 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D_s-,D+; 0.0017 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D*+,D_s-; 0.0017 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->s=sbar,sbar=s; 0.0015 1 /Herwig/Decays/WeakPartonic0 decaymode B_s0->phi,eta_c; 0.0015 1 /Herwig/Decays/DecayME0 decaymode B_s0->chi_c1,phi; 0.0014 1 /Herwig/Decays/DecayME0 decaymode B_s0->Jpsi,phi; 0.00135 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D_s2-,pi+; 0.0013 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->psi(2S),phi; 0.0012 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D_s*-,pi0,pi+,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode B_s0->D_s*-,rho0,pi+; 0.001 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s*-,rho+,pi0; 0.001 1 /Herwig/Decays/DecayME0 decaymode B_s0->h_c,phi; 0.001 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s-,pi-,pi+,pi+; 0.0009 1 /Herwig/Decays/Mambo decaymode B_s0->D_s-,pi0,pi+,pi0; 0.0009 1 /Herwig/Decays/Mambo decaymode B_s0->D_s-,rho0,pi+; 0.0009 1 /Herwig/Decays/DecayME0 decaymode B_s0->D_s-,rho+,pi0; 0.0009 1 /Herwig/Decays/DecayME0 decaymode B_s0->u=cbar,sbar=s; 0.0009 1 /Herwig/Decays/WeakPartonic100 decaymode B_s0->s=sbar,dbar=s; 0.0009 1 /Herwig/Decays/WeakPartonic0 decaymode B_s0->D_s1-,pi+; 0.0008 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->eta_c,eta'; 0.0008 1 /Herwig/Decays/DecayME0 decaymode B_s0->d=dbar,dbar=s; 0.0007 1 /Herwig/Decays/WeakPartonic0 decaymode B_s0->D+,Dbar0,pi-,Kbar0; 0.0007 1 /Herwig/Decays/Mambo decaymode B_s0->D+,Dbar0,pi0,K-; 0.0007 1 /Herwig/Decays/Mambo decaymode B_s0->D+,D-,Kbar0; 0.0007 1 /Herwig/Decays/DecayME0 decaymode B_s0->D+,D0,K-; 0.0007 1 /Herwig/Decays/DecayME0 decaymode B_s0->D*+,Dbar0,K-; 0.0007 1 /Herwig/Decays/DecayME0 decaymode B_s0->D*+,Dbar0,pi-,Kbar0; 0.0007 1 /Herwig/Decays/Mambo decaymode B_s0->D*+,Dbar0,pi0,K-; 0.0007 1 /Herwig/Decays/Mambo decaymode B_s0->D*+,D-,Kbar0; 0.0007 1 /Herwig/Decays/DecayME0 decaymode B_s0->Jpsi,K-,K+; 0.0007 1 /Herwig/Decays/DecayME0 decaymode B_s0->Jpsi,K-,K+,pi0; 0.0007 1 /Herwig/Decays/Mambo decaymode B_s0->Jpsi,Kbar0,K0; 0.0007 1 /Herwig/Decays/DecayME0 decaymode B_s0->Jpsi,Kbar0,K0,pi0; 0.0007 1 /Herwig/Decays/Mambo decaymode B_s0->Jpsi,K0,K-,pi+; 0.0007 1 /Herwig/Decays/Mambo decaymode B_s0->chi_c1,eta'; 0.0007 1 /Herwig/Decays/DecayME0 decaymode B_s0->Jpsi,eta'; 0.00064 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->phi,eta_c(2S); 0.0006 1 /Herwig/Decays/DecayME0 decaymode B_s0->chi_c2,eta'; 0.000465 1 /Herwig/Decays/DecayME0 decaymode B_s0->h_c,eta'; 0.000465 1 /Herwig/Decays/DecayME0 decaymode B_s0->psi(2S),eta'; 0.000465 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->eta_c,eta; 0.0004 1 /Herwig/Decays/DecayME0 decaymode B_s0->eta_c(2S),eta'; 0.0004 1 /Herwig/Decays/DecayME0 decaymode B_s0->Jpsi,eta; 0.00032 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->K_1-,mu+,nu_mu; 0.0003 1 /Herwig/Decays/ISGW2 decaymode B_s0->K_1-,e+,nu_e; 0.0003 1 /Herwig/Decays/ISGW2 decaymode B_s0->D_s*-,K*+; 0.0003 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->K*-,mu+,nu_mu; 0.0003 1 /Herwig/Decays/BZVector decaymode B_s0->K*-,e+,nu_e; 0.0003 1 /Herwig/Decays/BZVector decaymode B_s0->K*+,D_s-; 0.0003 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D+,D-,pi0,Kbar0; 0.0003 1 /Herwig/Decays/Mambo decaymode B_s0->D+,D-,pi+,K-; 0.0003 1 /Herwig/Decays/Mambo decaymode B_s0->D*+,D-,pi0,Kbar0; 0.0003 1 /Herwig/Decays/Mambo decaymode B_s0->D*+,D-,pi+,K-; 0.0003 1 /Herwig/Decays/Mambo decaymode B_s0->chi_c1,eta; 0.0003 1 /Herwig/Decays/DecayME0 decaymode B_s0->psi(2S),K-,K+; 0.0003 1 /Herwig/Decays/DecayME0 decaymode B_s0->psi(2S),K-,K+,pi0; 0.0003 1 /Herwig/Decays/Mambo decaymode B_s0->psi(2S),Kbar0,K0; 0.0003 1 /Herwig/Decays/DecayME0 decaymode B_s0->psi(2S),Kbar0,K0,pi0; 0.0003 1 /Herwig/Decays/Mambo decaymode B_s0->psi(2S),K0,K-,pi+; 0.0003 1 /Herwig/Decays/Mambo decaymode B_s0->eta_c,K-,K+; 0.00028 1 /Herwig/Decays/DecayME0 decaymode B_s0->eta_c,K-,K+,pi0; 0.00028 1 /Herwig/Decays/Mambo decaymode B_s0->eta_c,K0,K-,pi+; 0.00028 1 /Herwig/Decays/Mambo decaymode B_s0->eta_c,K0,Kbar0; 0.00028 1 /Herwig/Decays/DecayME0 decaymode B_s0->eta_c,K0,Kbar0,pi0; 0.00028 1 /Herwig/Decays/Mambo decaymode B_s0->chi_c1,K-,K+; 0.00026 1 /Herwig/Decays/DecayME0 decaymode B_s0->chi_c1,K-,K+,pi0; 0.00026 1 /Herwig/Decays/Mambo decaymode B_s0->chi_c1,Kbar0,K0; 0.00026 1 /Herwig/Decays/DecayME0 decaymode B_s0->chi_c1,Kbar0,K0,pi0; 0.00026 1 /Herwig/Decays/Mambo decaymode B_s0->chi_c1,K0,K-,pi+; 0.00026 1 /Herwig/Decays/Mambo decaymode B_s0->chi_c2,eta; 0.000235 1 /Herwig/Decays/DecayME0 decaymode B_s0->h_c,eta; 0.000235 1 /Herwig/Decays/DecayME0 decaymode B_s0->psi(2S),eta; 0.000235 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->K'_1-,mu+,nu_mu; 0.0002 1 /Herwig/Decays/ISGW2 decaymode B_s0->K'_1-,e+,nu_e; 0.0002 1 /Herwig/Decays/ISGW2 decaymode B_s0->D*bar0,K*bar0; 0.0002 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D*bar0,Kbar0; 0.0002 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->Dbar0,Kbar0; 0.0002 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->K-,mu+,nu_mu; 0.0002 1 /Herwig/Decays/ISGW2 decaymode B_s0->K-,e+,nu_e; 0.0002 1 /Herwig/Decays/ISGW2 decaymode B_s0->K*bar0,Dbar0; 0.0002 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->phi,chi_c0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B_s0->eta_c(2S),eta; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B_s0->chi_c2,K-,K+; 0.00016 1 /Herwig/Decays/DecayME0 decaymode B_s0->chi_c2,K-,K+,pi0; 0.00016 1 /Herwig/Decays/Mambo decaymode B_s0->chi_c2,Kbar0,K0; 0.00016 1 /Herwig/Decays/DecayME0 decaymode B_s0->chi_c2,Kbar0,K0,pi0; 0.00016 1 /Herwig/Decays/Mambo decaymode B_s0->chi_c2,K0,K-,pi+; 0.00016 1 /Herwig/Decays/Mambo decaymode B_s0->h_c,K-,K+; 0.00016 1 /Herwig/Decays/DecayME0 decaymode B_s0->h_c,K-,K+,pi0; 0.00016 1 /Herwig/Decays/Mambo decaymode B_s0->h_c,Kbar0,K0; 0.00016 1 /Herwig/Decays/DecayME0 decaymode B_s0->h_c,Kbar0,K0,pi0; 0.00016 1 /Herwig/Decays/Mambo decaymode B_s0->h_c,K0,K-,pi+; 0.00016 1 /Herwig/Decays/Mambo decaymode B_s0->D_s*-,K+; 0.00015 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->D_s-,K+; 0.00015 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->eta_c(2S),K-,K+; 0.00012 1 /Herwig/Decays/DecayME0 decaymode B_s0->eta_c(2S),K-,K+,pi0; 0.00012 1 /Herwig/Decays/Mambo decaymode B_s0->eta_c(2S),Kbar0,K0; 0.00012 1 /Herwig/Decays/DecayME0 decaymode B_s0->eta_c(2S),Kbar0,K0,pi0; 0.00012 1 /Herwig/Decays/Mambo decaymode B_s0->eta_c(2S),K0,K-,pi+; 0.00012 1 /Herwig/Decays/Mambo decaymode B_s0->chi_c0,eta'; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B_s0->Jpsi,Kbar0; 8.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->eta',eta'; 5.8E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->chi_c0,eta; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode B_s0->chi_c0,K-,K+; 3.0E-5 1 /Herwig/Decays/DecayME0 decaymode B_s0->chi_c0,K-,K+,pi0; 3.0E-5 1 /Herwig/Decays/Mambo decaymode B_s0->chi_c0,Kbar0,K0; 3.0E-5 1 /Herwig/Decays/DecayME0 decaymode B_s0->chi_c0,Kbar0,K0,pi0; 3.0E-5 1 /Herwig/Decays/Mambo decaymode B_s0->chi_c0,K0,K-,pi+; 3.0E-5 1 /Herwig/Decays/Mambo decaymode B_s0->K*-,pi+; 2.5E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->eta',eta; 2.5E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->rho+,K*-; 2.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->phi,eta; 2.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->K-,K+; 1.93E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->rho+,K-; 1.2E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->phi,eta'; 1.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->K*-,K+; 8.2E-6 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->phi,phi; 8.0E-6 1 /Herwig/Decays/DecayME0 decaymode B_s0->Kbar0,K0; 7.9E-6 1 /Herwig/Decays/DecayME0 decaymode B_s0->K*bar0,K0; 6.6E-6 1 /Herwig/Decays/DecayME0 decaymode B_s0->K*-,K*+; 6.0E-6 1 /Herwig/Decays/DecayME0 decaymode B_s0->K*bar0,K*0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B_s0->K*+,K-; 4.6E-6 1 /Herwig/Decays/DecayME0 decaymode B_s0->pi+,K-; 4.3E-6 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->eta,eta; 4.0E-6 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->omega,eta'; 2.5E-6 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->omega,eta; 1.2E-6 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->rho0,K*bar0; 8.0E-7 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->K*0,Kbar0; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B_s0->phi,K*bar0; 4.0E-7 1 /Herwig/Decays/DecayME0 decaymode B_s0->Kbar0,eta; 2.3E-7 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->pi0,Kbar0; 2.0E-7 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->omega,Kbar0; 8.0E-8 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->K*bar0,eta; 7.0E-8 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->Kbar0,eta'; 7.0E-8 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->K*bar0,eta'; 2.1E-8 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->K*bar0,pi0; 2.0E-8 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->rho0,Kbar0; 2.0E-8 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->omega,K*bar0; 5.0E-9 1 /Herwig/Decays/ISGW2Hadronic decaymode B_s0->phi,K0; 2.0E-9 1 /Herwig/Decays/ISGW2Hadronic # decaymode B_sbar0->ubar=d,c=sbar; 0.362359982 1 /Herwig/Decays/WeakPartonic100 decaymode B_sbar0->cs_0=ud_0bar; 0.06 1 /Herwig/Decays/WeakPartonic0 decaymode B_sbar0->D_s*+,e-,nu_ebar; 0.049 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D_s*+,mu-,nu_mubar; 0.049 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D_s+,e-,nu_ebar; 0.021 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D_s+,mu-,nu_mubar; 0.021 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->ubar=c,d=sbar; 0.02 1 /Herwig/Decays/WeakPartonic100 decaymode B_sbar0->D_s*-,D_s*+; 0.0197 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->ubar=s,c=sbar; 0.0172 1 /Herwig/Decays/WeakPartonic100 decaymode B_sbar0->D_s*+,tau-,nu_taubar; 0.016 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D_s*+,D*bar0,K-; 0.015 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s*+,D*-,Kbar0; 0.015 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s*+,a_1-; 0.0122 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D_s*-,D_s+; 0.0099 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D_s*-,D+,K0; 0.0096 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s*-,D0,K+; 0.0096 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s-,Dbar0,K+; 0.0096 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s-,D+,K0; 0.0096 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s*+,D_s-; 0.009 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D_s-,D_s+; 0.0086 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->a_1-,D_s+; 0.0085 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->cbar=d,c=sbar; 0.008 1 /Herwig/Decays/WeakPartonic100 decaymode B_sbar0->D_s+,tau-,nu_taubar; 0.008 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D_s*+,pi+,pi-,pi-; 0.0077 1 /Herwig/Decays/Mambo decaymode B_sbar0->rho-,D_s+; 0.0073 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D_s*+,rho-; 0.007 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D_s2+,e-,nu_ebar; 0.007 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D_s2+,mu-,nu_mubar; 0.007 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D'_s1+,e-,nu_ebar; 0.007 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D'_s1+,mu-,nu_mubar; 0.007 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->s,g,sbar; 0.005 1 /Herwig/Decays/WeakPartonic0 decaymode B_sbar0->D_s+,D*bar0,K-; 0.005 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s+,D*-,Kbar0; 0.005 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s*+,Dbar0,K*-; 0.005 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s*+,Dbar0,K-; 0.005 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s*+,D-,K*bar0; 0.005 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s*+,D-,Kbar0; 0.005 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s*-,D+,pi-,K+; 0.0048 1 /Herwig/Decays/Mambo decaymode B_sbar0->D_s*-,D0,pi+,K0; 0.0048 1 /Herwig/Decays/Mambo decaymode B_sbar0->D_s-,D+,pi-,K+; 0.0048 1 /Herwig/Decays/Mambo decaymode B_sbar0->D_s-,D0,pi+,K0; 0.0048 1 /Herwig/Decays/Mambo decaymode B_sbar0->ubar=u,d=sbar; 0.0041 1 /Herwig/Decays/WeakPartonic0 decaymode B_sbar0->cbar=s,u=sbar; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode B_sbar0->D_s0+,e-,nu_ebar; 0.004 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D_s0+,mu-,nu_mubar; 0.004 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D_s1+,e-,nu_ebar; 0.004 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D_s1+,mu-,nu_mubar; 0.004 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D_s*+,D*bar0,K*-; 0.003 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s*+,D*-,K*bar0; 0.003 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s2+,tau-,nu_taubar; 0.0028 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D'_s1+,tau-,nu_taubar; 0.0028 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D_s*+,pi-; 0.0027 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D_s+,pi-; 0.0026 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D_s+,D*bar0,K*-; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s+,Dbar0,K*-; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s+,D*-,K*bar0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s+,D-,K*bar0; 0.0025 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s*-,D+,pi0,K0; 0.0024 1 /Herwig/Decays/Mambo decaymode B_sbar0->D_s*-,D0,pi0,K+; 0.0024 1 /Herwig/Decays/Mambo decaymode B_sbar0->D_s-,D+,pi0,K0; 0.0024 1 /Herwig/Decays/Mambo decaymode B_sbar0->D_s-,D0,pi0,K+; 0.0024 1 /Herwig/Decays/Mambo decaymode B_sbar0->ubar=u,s=sbar; 0.0022 1 /Herwig/Decays/WeakPartonic0 decaymode B_sbar0->D_s1+,rho-; 0.0021 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D_s+,Dbar0,K-; 0.002 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s+,D-,Kbar0; 0.002 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->dbar=d,s=sbar; 0.0018 1 /Herwig/Decays/WeakPartonic0 decaymode B_sbar0->D_s0+,tau-,nu_taubar; 0.0018 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D_s1+,tau-,nu_taubar; 0.0018 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->D*-,D_s+; 0.0017 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D_s+,D-; 0.0017 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D_s*+,D*-; 0.0017 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D_s*+,D-; 0.0017 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->sbar=s,s=sbar; 0.0015 1 /Herwig/Decays/WeakPartonic0 decaymode B_sbar0->phi,eta_c; 0.0015 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->chi_c1,phi; 0.0014 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->Jpsi,phi; 0.00135 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D_s2+,pi-; 0.0013 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->psi(2S),phi; 0.0012 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D_s*+,rho-,pi0; 0.001 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s*+,pi0,pi-,pi0; 0.001 1 /Herwig/Decays/Mambo decaymode B_sbar0->D_s*+,rho0,pi-; 0.001 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->h_c,phi; 0.001 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->sbar=s,d=sbar; 0.0009 1 /Herwig/Decays/WeakPartonic0 decaymode B_sbar0->ubar=c,s=sbar; 0.0009 1 /Herwig/Decays/WeakPartonic100 decaymode B_sbar0->D_s+,rho-,pi0; 0.0009 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s+,pi0,pi-,pi0; 0.0009 1 /Herwig/Decays/Mambo decaymode B_sbar0->D_s+,rho0,pi-; 0.0009 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s+,pi+,pi-,pi-; 0.0009 1 /Herwig/Decays/Mambo decaymode B_sbar0->eta_c,eta'; 0.0008 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D_s1+,pi-; 0.0008 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D*-,D+,K0; 0.0007 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D*-,D0,pi0,K+; 0.0007 1 /Herwig/Decays/Mambo decaymode B_sbar0->D*-,D0,pi+,K0; 0.0007 1 /Herwig/Decays/Mambo decaymode B_sbar0->D*-,D0,K+; 0.0007 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D-,Dbar0,K+; 0.0007 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D-,D+,K0; 0.0007 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D-,D0,pi0,K+; 0.0007 1 /Herwig/Decays/Mambo decaymode B_sbar0->D-,D0,pi+,K0; 0.0007 1 /Herwig/Decays/Mambo decaymode B_sbar0->dbar=d,d=sbar; 0.0007 1 /Herwig/Decays/WeakPartonic0 decaymode B_sbar0->Jpsi,K-,K+; 0.0007 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->Jpsi,K-,K+,pi0; 0.0007 1 /Herwig/Decays/Mambo decaymode B_sbar0->Jpsi,Kbar0,K0; 0.0007 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->Jpsi,Kbar0,K0,pi0; 0.0007 1 /Herwig/Decays/Mambo decaymode B_sbar0->Jpsi,Kbar0,K+,pi-; 0.0007 1 /Herwig/Decays/Mambo decaymode B_sbar0->chi_c1,eta'; 0.0007 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->Jpsi,eta'; 0.00064 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->phi,eta_c(2S); 0.0006 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->chi_c2,eta'; 0.000465 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->h_c,eta'; 0.000465 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->psi(2S),eta'; 0.000465 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->eta_c,eta; 0.0004 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->eta_c(2S),eta'; 0.0004 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->Jpsi,eta; 0.00032 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D*-,D+,pi-,K+; 0.0003 1 /Herwig/Decays/Mambo decaymode B_sbar0->D*-,D+,pi0,K0; 0.0003 1 /Herwig/Decays/Mambo decaymode B_sbar0->D-,D+,pi-,K+; 0.0003 1 /Herwig/Decays/Mambo decaymode B_sbar0->D-,D+,pi0,K0; 0.0003 1 /Herwig/Decays/Mambo decaymode B_sbar0->K*-,D_s+; 0.0003 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->K*+,e-,nu_ebar; 0.0003 1 /Herwig/Decays/BZVector decaymode B_sbar0->K*+,mu-,nu_mubar; 0.0003 1 /Herwig/Decays/BZVector decaymode B_sbar0->D_s*+,K*-; 0.0003 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->K_1+,e-,nu_ebar; 0.0003 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->K_1+,mu-,nu_mubar; 0.0003 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->chi_c1,eta; 0.0003 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->psi(2S),K-,K+; 0.0003 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->psi(2S),K-,K+,pi0; 0.0003 1 /Herwig/Decays/Mambo decaymode B_sbar0->psi(2S),Kbar0,K0; 0.0003 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->psi(2S),Kbar0,K0,pi0; 0.0003 1 /Herwig/Decays/Mambo decaymode B_sbar0->psi(2S),Kbar0,K+,pi-; 0.0003 1 /Herwig/Decays/Mambo decaymode B_sbar0->eta_c,K-,K+; 0.00028 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->eta_c,K-,K+,pi0; 0.00028 1 /Herwig/Decays/Mambo decaymode B_sbar0->eta_c,Kbar0,K0; 0.00028 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->eta_c,Kbar0,K0,pi0; 0.00028 1 /Herwig/Decays/Mambo decaymode B_sbar0->eta_c,Kbar0,K+,pi-; 0.00028 1 /Herwig/Decays/Mambo decaymode B_sbar0->chi_c1,K-,K+; 0.00026 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->chi_c1,K-,K+,pi0; 0.00026 1 /Herwig/Decays/Mambo decaymode B_sbar0->chi_c1,Kbar0,K0; 0.00026 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->chi_c1,Kbar0,K0,pi0; 0.00026 1 /Herwig/Decays/Mambo decaymode B_sbar0->chi_c1,Kbar0,K+,pi-; 0.00026 1 /Herwig/Decays/Mambo decaymode B_sbar0->chi_c2,eta; 0.000235 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->h_c,eta; 0.000235 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->psi(2S),eta; 0.000235 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->K*0,D0; 0.0002 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->K+,e-,nu_ebar; 0.0002 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->K+,mu-,nu_mubar; 0.0002 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->phi,chi_c0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->D0,K0; 0.0002 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D*0,K0; 0.0002 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D*0,K*0; 0.0002 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->K'_1+,e-,nu_ebar; 0.0002 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->K'_1+,mu-,nu_mubar; 0.0002 1 /Herwig/Decays/ISGW2 decaymode B_sbar0->eta_c(2S),eta; 0.0002 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->chi_c2,K-,K+; 0.00016 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->chi_c2,K-,K+,pi0; 0.00016 1 /Herwig/Decays/Mambo decaymode B_sbar0->chi_c2,Kbar0,K0; 0.00016 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->chi_c2,Kbar0,K0,pi0; 0.00016 1 /Herwig/Decays/Mambo decaymode B_sbar0->chi_c2,Kbar0,K+,pi-; 0.00016 1 /Herwig/Decays/Mambo decaymode B_sbar0->h_c,K-,K+; 0.00016 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->h_c,K-,K+,pi0; 0.00016 1 /Herwig/Decays/Mambo decaymode B_sbar0->h_c,Kbar0,K0; 0.00016 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->h_c,Kbar0,K0,pi0; 0.00016 1 /Herwig/Decays/Mambo decaymode B_sbar0->h_c,Kbar0,K+,pi-; 0.00016 1 /Herwig/Decays/Mambo decaymode B_sbar0->D_s+,K-; 0.00015 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->D_s*+,K-; 0.00015 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->eta_c(2S),K-,K+; 0.00012 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->eta_c(2S),K-,K+,pi0; 0.00012 1 /Herwig/Decays/Mambo decaymode B_sbar0->eta_c(2S),Kbar0,K0; 0.00012 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->eta_c(2S),Kbar0,K0,pi0; 0.00012 1 /Herwig/Decays/Mambo decaymode B_sbar0->eta_c(2S),Kbar0,K+,pi-; 0.00012 1 /Herwig/Decays/Mambo decaymode B_sbar0->chi_c0,eta'; 0.0001 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->Jpsi,K0; 8.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->eta',eta'; 5.8E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->chi_c0,eta; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->chi_c0,K-,K+; 3.0E-5 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->chi_c0,K-,K+,pi0; 3.0E-5 1 /Herwig/Decays/Mambo decaymode B_sbar0->chi_c0,Kbar0,K0; 3.0E-5 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->chi_c0,Kbar0,K0,pi0; 3.0E-5 1 /Herwig/Decays/Mambo decaymode B_sbar0->chi_c0,Kbar0,K+,pi-; 3.0E-5 1 /Herwig/Decays/Mambo decaymode B_sbar0->K*+,pi-; 2.5E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->eta',eta; 2.5E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->rho-,K*+; 2.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->phi,eta; 2.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->K-,K+; 1.93E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->rho-,K+; 1.2E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->phi,eta'; 1.0E-5 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->K*+,K-; 8.2E-6 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->phi,phi; 8.0E-6 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->Kbar0,K0; 7.9E-6 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->K*0,Kbar0; 6.6E-6 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->K*-,K*+; 6.0E-6 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->K*bar0,K*0; 5.0E-6 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->K*-,K+; 4.6E-6 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->pi-,K+; 4.3E-6 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->eta,eta; 4.0E-6 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->omega,eta'; 2.5E-6 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->omega,eta; 1.2E-6 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->rho0,K*0; 8.0E-7 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->K*bar0,K0; 5.0E-7 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->phi,K*0; 4.0E-7 1 /Herwig/Decays/DecayME0 decaymode B_sbar0->K0,eta; 2.3E-7 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->pi0,K0; 2.0E-7 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->omega,K0; 8.0E-8 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->K0,eta'; 7.0E-8 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->K*0,eta; 7.0E-8 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->K*0,eta'; 2.1E-8 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->rho0,K0; 2.0E-8 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->K*0,pi0; 2.0E-8 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->omega,K*0; 5.0E-9 1 /Herwig/Decays/ISGW2Hadronic decaymode B_sbar0->phi,Kbar0; 2.0E-9 1 /Herwig/Decays/ISGW2Hadronic # decaymode B_c+->B_s*0,rho+; 0.202 1 /Herwig/Decays/BcHadronic decaymode B_c+->B_s0,pi+; 0.164 1 /Herwig/Decays/BcHadronic decaymode B_c+->B_s0,rho+; 0.072 1 /Herwig/Decays/BcHadronic decaymode B_c+->B_s*0,pi+; 0.065 1 /Herwig/Decays/BcHadronic decaymode B_c+->B_s*0,mu+,nu_mu; 0.0506 1 /Herwig/Decays/KiselevBc decaymode B_c+->B_s*0,e+,nu_e; 0.0506 1 /Herwig/Decays/KiselevBc decaymode B_c+->c,sbar; 0.049 1 /Herwig/Decays/QDecayME0 decaymode B_c+->B_s0,mu+,nu_mu; 0.0403 1 /Herwig/Decays/KiselevBc decaymode B_c+->B_s0,e+,nu_e; 0.0403 1 /Herwig/Decays/KiselevBc decaymode B_c+->B*0,rho+; 0.0257 1 /Herwig/Decays/BcHadronic decaymode B_c+->B+,Kbar0; 0.0198 1 /Herwig/Decays/BcHadronic decaymode B_c+->Jpsi,mu+,nu_mu; 0.019 1 /Herwig/Decays/KiselevBc decaymode B_c+->Jpsi,e+,nu_e; 0.019 1 /Herwig/Decays/KiselevBc decaymode B_c+->B*+,K*bar0; 0.0167 1 /Herwig/Decays/BcHadronic decaymode B_c+->tau+,nu_tau; 0.016 1 /Herwig/Decays/PScalarlnu decaymode B_c+->B*+,Kbar0; 0.016 1 /Herwig/Decays/BcHadronic decaymode B_c+->dbar=u,cbar=c; 0.011134 1 /Herwig/Decays/WeakPartonic100 decaymode B_c+->B0,pi+; 0.0106 1 /Herwig/Decays/BcHadronic decaymode B_c+->B_s0,K+; 0.0106 1 /Herwig/Decays/BcHadronic decaymode B_c+->B0,rho+; 0.0096 1 /Herwig/Decays/BcHadronic decaymode B_c+->B*0,pi+; 0.0095 1 /Herwig/Decays/BcHadronic decaymode B_c+->eta_c,mu+,nu_mu; 0.0075 1 /Herwig/Decays/KiselevBc decaymode B_c+->eta_c,e+,nu_e; 0.0075 1 /Herwig/Decays/KiselevBc decaymode B_c+->Jpsi,D_s*+; 0.0067 1 /Herwig/Decays/BcHadronic decaymode B_c+->B*0,mu+,nu_mu; 0.0058 1 /Herwig/Decays/KiselevBc decaymode B_c+->B*0,e+,nu_e; 0.0058 1 /Herwig/Decays/KiselevBc decaymode B_c+->Jpsi,tau+,nu_tau; 0.0048 1 /Herwig/Decays/KiselevBc decaymode B_c+->B+,K*bar0; 0.0043 1 /Herwig/Decays/BcHadronic decaymode B_c+->eta_c,rho+; 0.0042 1 /Herwig/Decays/BcHadronic decaymode B_c+->Jpsi,rho+; 0.004 1 /Herwig/Decays/BcHadronic decaymode B_c+->B_s*0,K+; 0.0037 1 /Herwig/Decays/BcHadronic decaymode B_c+->B0,mu+,nu_mu; 0.0034 1 /Herwig/Decays/KiselevBc decaymode B_c+->B0,e+,nu_e; 0.0034 1 /Herwig/Decays/KiselevBc decaymode B_c+->eta_c,D_s+; 0.0028 1 /Herwig/Decays/BcHadronic decaymode B_c+->eta_c,D_s*+; 0.0027 1 /Herwig/Decays/BcHadronic decaymode B_c+->eta_c,tau+,nu_tau; 0.0023 1 /Herwig/Decays/KiselevBc decaymode B_c+->eta_c,pi+; 0.002 1 /Herwig/Decays/BcHadronic decaymode B_c+->Jpsi,D_s+; 0.0017 1 /Herwig/Decays/BcHadronic decaymode B_c+->Jpsi,pi+; 0.0013 1 /Herwig/Decays/BcHadronic decaymode B_c+->psi(2S),mu+,nu_mu; 0.00094 1 /Herwig/Decays/KiselevBc decaymode B_c+->psi(2S),e+,nu_e; 0.00094 1 /Herwig/Decays/KiselevBc decaymode B_c+->B*+,rho0; 0.0009 1 /Herwig/Decays/BcHadronic decaymode B_c+->B0,K+; 0.0007 1 /Herwig/Decays/BcHadronic decaymode B_c+->B*0,K*+; 0.00058 1 /Herwig/Decays/BcHadronic decaymode B_c+->B*0,K+; 0.00055 1 /Herwig/Decays/BcHadronic decaymode B_c+->B+,pi0; 0.00037 1 /Herwig/Decays/BcHadronic decaymode B_c+->B+,rho0; 0.00034 1 /Herwig/Decays/BcHadronic decaymode B_c+->D*+,D*bar0; 0.00033 1 /Herwig/Decays/BcHadronic decaymode B_c+->B*+,pi0; 0.00033 1 /Herwig/Decays/BcHadronic decaymode B_c+->Jpsi,D*+; 0.00028 1 /Herwig/Decays/BcHadronic decaymode B_c+->Jpsi,K*+; 0.00022 1 /Herwig/Decays/BcHadronic decaymode B_c+->eta_c,K*+; 0.0002 1 /Herwig/Decays/BcHadronic decaymode B_c+->eta_c(2S),mu+,nu_mu; 0.0002 1 /Herwig/Decays/KiselevBc decaymode B_c+->eta_c(2S),e+,nu_e; 0.0002 1 /Herwig/Decays/KiselevBc decaymode B_c+->D*0,mu+,nu_mu; 0.00018 1 /Herwig/Decays/KiselevBc decaymode B_c+->D*0,e+,nu_e; 0.00018 1 /Herwig/Decays/KiselevBc decaymode B_c+->eta_c,D+; 0.00015 1 /Herwig/Decays/BcHadronic decaymode B_c+->B0,K*+; 0.00015 1 /Herwig/Decays/BcHadronic decaymode B_c+->eta_c,K+; 0.00013 1 /Herwig/Decays/BcHadronic decaymode B_c+->Jpsi,K+; 0.00011 1 /Herwig/Decays/BcHadronic decaymode B_c+->eta_c,D*+; 0.0001 1 /Herwig/Decays/BcHadronic decaymode B_c+->Jpsi,D+; 9.0E-5 1 /Herwig/Decays/BcHadronic decaymode B_c+->D*0,tau+,nu_tau; 8.0E-5 1 /Herwig/Decays/KiselevBc decaymode B_c+->psi(2S),tau+,nu_tau; 8.0E-5 1 /Herwig/Decays/KiselevBc decaymode B_c+->D+,D*bar0; 7.5E-5 1 /Herwig/Decays/BcHadronic decaymode B_c+->D+,Dbar0; 5.3E-5 1 /Herwig/Decays/BcHadronic decaymode B_c+->D*+,Dbar0; 4.9E-5 1 /Herwig/Decays/BcHadronic decaymode B_c+->D0,mu+,nu_mu; 4.0E-5 1 /Herwig/Decays/KiselevBc decaymode B_c+->D0,e+,nu_e; 4.0E-5 1 /Herwig/Decays/KiselevBc decaymode B_c+->D_s*+,D*bar0; 2.6E-5 1 /Herwig/Decays/BcHadronic decaymode B_c+->D0,tau+,nu_tau; 2.0E-5 1 /Herwig/Decays/KiselevBc decaymode B_c+->eta_c(2S),tau+,nu_tau; 1.6E-5 1 /Herwig/Decays/KiselevBc decaymode B_c+->D_s+,D*bar0; 7.0E-6 1 /Herwig/Decays/BcHadronic decaymode B_c+->D_s+,Dbar0; 5.0E-6 1 /Herwig/Decays/BcHadronic decaymode B_c+->D_s*+,Dbar0; 5.0E-6 1 /Herwig/Decays/BcHadronic # decaymode B_c-->B_s*bar0,rho-; 0.202 1 /Herwig/Decays/BcHadronic decaymode B_c-->B_sbar0,pi-; 0.164 1 /Herwig/Decays/BcHadronic decaymode B_c-->B_sbar0,rho-; 0.072 1 /Herwig/Decays/BcHadronic decaymode B_c-->B_s*bar0,pi-; 0.065 1 /Herwig/Decays/BcHadronic decaymode B_c-->B_s*bar0,e-,nu_ebar; 0.0506 1 /Herwig/Decays/KiselevBc decaymode B_c-->B_s*bar0,mu-,nu_mubar; 0.0506 1 /Herwig/Decays/KiselevBc decaymode B_c-->cbar,s; 0.049 1 /Herwig/Decays/QDecayME0 decaymode B_c-->B_sbar0,e-,nu_ebar; 0.0403 1 /Herwig/Decays/KiselevBc decaymode B_c-->B_sbar0,mu-,nu_mubar; 0.0403 1 /Herwig/Decays/KiselevBc decaymode B_c-->B*bar0,rho-; 0.0257 1 /Herwig/Decays/BcHadronic decaymode B_c-->B-,K0; 0.0198 1 /Herwig/Decays/BcHadronic decaymode B_c-->Jpsi,e-,nu_ebar; 0.019 1 /Herwig/Decays/KiselevBc decaymode B_c-->Jpsi,mu-,nu_mubar; 0.019 1 /Herwig/Decays/KiselevBc decaymode B_c-->B*-,K*0; 0.0167 1 /Herwig/Decays/BcHadronic decaymode B_c-->B*-,K0; 0.016 1 /Herwig/Decays/BcHadronic decaymode B_c-->tau-,nu_taubar; 0.016 1 /Herwig/Decays/PScalarlnu decaymode B_c-->d=ubar,c=cbar; 0.011134 1 /Herwig/Decays/WeakPartonic100 decaymode B_c-->B_sbar0,K-; 0.0106 1 /Herwig/Decays/BcHadronic decaymode B_c-->Bbar0,pi-; 0.0106 1 /Herwig/Decays/BcHadronic decaymode B_c-->Bbar0,rho-; 0.0096 1 /Herwig/Decays/BcHadronic decaymode B_c-->B*bar0,pi-; 0.0095 1 /Herwig/Decays/BcHadronic decaymode B_c-->eta_c,e-,nu_ebar; 0.0075 1 /Herwig/Decays/KiselevBc decaymode B_c-->eta_c,mu-,nu_mubar; 0.0075 1 /Herwig/Decays/KiselevBc decaymode B_c-->Jpsi,D_s*-; 0.0067 1 /Herwig/Decays/BcHadronic decaymode B_c-->B*bar0,e-,nu_ebar; 0.0058 1 /Herwig/Decays/KiselevBc decaymode B_c-->B*bar0,mu-,nu_mubar; 0.0058 1 /Herwig/Decays/KiselevBc decaymode B_c-->Jpsi,tau-,nu_taubar; 0.0048 1 /Herwig/Decays/KiselevBc decaymode B_c-->B-,K*0; 0.0043 1 /Herwig/Decays/BcHadronic decaymode B_c-->eta_c,rho-; 0.0042 1 /Herwig/Decays/BcHadronic decaymode B_c-->Jpsi,rho-; 0.004 1 /Herwig/Decays/BcHadronic decaymode B_c-->B_s*bar0,K-; 0.0037 1 /Herwig/Decays/BcHadronic decaymode B_c-->Bbar0,e-,nu_ebar; 0.0034 1 /Herwig/Decays/KiselevBc decaymode B_c-->Bbar0,mu-,nu_mubar; 0.0034 1 /Herwig/Decays/KiselevBc decaymode B_c-->eta_c,D_s-; 0.0028 1 /Herwig/Decays/BcHadronic decaymode B_c-->eta_c,D_s*-; 0.0027 1 /Herwig/Decays/BcHadronic decaymode B_c-->eta_c,tau-,nu_taubar; 0.0023 1 /Herwig/Decays/KiselevBc decaymode B_c-->eta_c,pi-; 0.002 1 /Herwig/Decays/BcHadronic decaymode B_c-->Jpsi,D_s-; 0.0017 1 /Herwig/Decays/BcHadronic decaymode B_c-->Jpsi,pi-; 0.0013 1 /Herwig/Decays/BcHadronic decaymode B_c-->psi(2S),e-,nu_ebar; 0.00094 1 /Herwig/Decays/KiselevBc decaymode B_c-->psi(2S),mu-,nu_mubar; 0.00094 1 /Herwig/Decays/KiselevBc decaymode B_c-->B*-,rho0; 0.0009 1 /Herwig/Decays/BcHadronic decaymode B_c-->Bbar0,K-; 0.0007 1 /Herwig/Decays/BcHadronic decaymode B_c-->B*bar0,K*-; 0.00058 1 /Herwig/Decays/BcHadronic decaymode B_c-->B*bar0,K-; 0.00055 1 /Herwig/Decays/BcHadronic decaymode B_c-->B-,pi0; 0.00037 1 /Herwig/Decays/BcHadronic decaymode B_c-->B-,rho0; 0.00034 1 /Herwig/Decays/BcHadronic decaymode B_c-->B*-,pi0; 0.00033 1 /Herwig/Decays/BcHadronic decaymode B_c-->D*-,D*0; 0.00033 1 /Herwig/Decays/BcHadronic decaymode B_c-->Jpsi,D*-; 0.00028 1 /Herwig/Decays/BcHadronic decaymode B_c-->Jpsi,K*-; 0.00022 1 /Herwig/Decays/BcHadronic decaymode B_c-->eta_c,K*-; 0.0002 1 /Herwig/Decays/BcHadronic decaymode B_c-->eta_c(2S),e-,nu_ebar; 0.0002 1 /Herwig/Decays/KiselevBc decaymode B_c-->eta_c(2S),mu-,nu_mubar; 0.0002 1 /Herwig/Decays/KiselevBc decaymode B_c-->D*bar0,e-,nu_ebar; 0.00018 1 /Herwig/Decays/KiselevBc decaymode B_c-->D*bar0,mu-,nu_mubar; 0.00018 1 /Herwig/Decays/KiselevBc decaymode B_c-->Bbar0,K*-; 0.00015 1 /Herwig/Decays/BcHadronic decaymode B_c-->eta_c,D-; 0.00015 1 /Herwig/Decays/BcHadronic decaymode B_c-->eta_c,K-; 0.00013 1 /Herwig/Decays/BcHadronic decaymode B_c-->Jpsi,K-; 0.00011 1 /Herwig/Decays/BcHadronic decaymode B_c-->eta_c,D*-; 0.0001 1 /Herwig/Decays/BcHadronic decaymode B_c-->Jpsi,D-; 9.0E-5 1 /Herwig/Decays/BcHadronic decaymode B_c-->D*bar0,tau-,nu_taubar; 8.0E-5 1 /Herwig/Decays/KiselevBc decaymode B_c-->psi(2S),tau-,nu_taubar; 8.0E-5 1 /Herwig/Decays/KiselevBc decaymode B_c-->D-,D*0; 7.5E-5 1 /Herwig/Decays/BcHadronic decaymode B_c-->D-,D0; 5.3E-5 1 /Herwig/Decays/BcHadronic decaymode B_c-->D*-,D0; 4.9E-5 1 /Herwig/Decays/BcHadronic decaymode B_c-->Dbar0,e-,nu_ebar; 4.0E-5 1 /Herwig/Decays/KiselevBc decaymode B_c-->Dbar0,mu-,nu_mubar; 4.0E-5 1 /Herwig/Decays/KiselevBc decaymode B_c-->D_s*-,D*0; 2.6E-5 1 /Herwig/Decays/BcHadronic decaymode B_c-->Dbar0,tau-,nu_taubar; 2.0E-5 1 /Herwig/Decays/KiselevBc decaymode B_c-->eta_c(2S),tau-,nu_taubar; 1.6E-5 1 /Herwig/Decays/KiselevBc decaymode B_c-->D_s-,D*0; 7.0E-6 1 /Herwig/Decays/BcHadronic decaymode B_c-->D_s*-,D0; 5.0E-6 1 /Herwig/Decays/BcHadronic decaymode B_c-->D_s-,D0; 5.0E-6 1 /Herwig/Decays/BcHadronic # # the 1^3S_1 multiplet # # decaymode rho+->pi+,pi0; 0.99955 1 /Herwig/Decays/Vector2Meson decaymode rho+->pi+,gamma; 0.00045 1 /Herwig/Decays/VectorVP # decaymode rho0->pi+,pi-; 0.998847 1 /Herwig/Decays/Vector2Meson decaymode rho0->pi0,gamma; 0.0006 1 /Herwig/Decays/VectorVP decaymode rho0->eta,gamma; 0.000295 1 /Herwig/Decays/VectorVP decaymode rho0->pi+,pi-,pi0; 0.000101 1 /Herwig/Decays/DecayME0 decaymode rho0->e-,e+; 4.7E-5 1 /Herwig/Decays/Vector2Leptons decaymode rho0->mu-,mu+; 4.7E-5 1 /Herwig/Decays/Vector2Leptons decaymode rho0->pi0,pi0,gamma; 4.5E-5 1 /Herwig/Decays/DecayME0 decaymode rho0->pi+,pi-,pi+,pi-; 1.8E-5 1 /Herwig/Decays/Mambo # decaymode rho-->pi-,pi0; 0.99955 1 /Herwig/Decays/Vector2Meson decaymode rho-->pi-,gamma; 0.00045 1 /Herwig/Decays/VectorVP # decaymode omega->pi+,pi-,pi0; 0.891174 1 /Herwig/Decays/Vector3Pion decaymode omega->pi0,gamma; 0.09025 1 /Herwig/Decays/VectorVP decaymode omega->pi+,pi-; 0.017 1 /Herwig/Decays/Vector2Meson decaymode omega->pi0,e-,e+; 0.000797 1 /Herwig/Decays/VectorVPff decaymode omega->eta,gamma; 0.00049 1 /Herwig/Decays/VectorVP decaymode omega->pi0,mu-,mu+; 7.8E-5 1 /Herwig/Decays/VectorVPff decaymode omega->e-,e+; 7.2E-5 1 /Herwig/Decays/Vector2Leptons decaymode omega->mu-,mu+; 7.2E-5 1 /Herwig/Decays/Vector2Leptons decaymode omega->pi0,pi0,gamma; 6.7E-5 1 /Herwig/Decays/DecayME0 # decaymode phi->K+,K-; 0.491536 1 /Herwig/Decays/Vector2Meson decaymode phi->K_L0,K_S0; 0.339679 1 /Herwig/Decays/Vector2Meson decaymode phi->pi+,pi-,pi0; 0.152856 1 /Herwig/Decays/Vector3Pion decaymode phi->eta,gamma; 0.01301 1 /Herwig/Decays/VectorVP decaymode phi->pi0,gamma; 0.00125 1 /Herwig/Decays/VectorVP decaymode phi->f_0,gamma; 0.00044 1 /Herwig/Decays/VVSDecayer decaymode phi->e-,e+; 0.000297 1 /Herwig/Decays/Vector2Leptons decaymode phi->mu-,mu+; 0.000296 1 /Herwig/Decays/Vector2Leptons decaymode phi->pi+,pi-; 0.000114 1 /Herwig/Decays/Vector2Meson decaymode phi->eta,e-,e+; 0.000114 1 /Herwig/Decays/VectorVPff decaymode phi->pi0,pi0,gamma; 0.000109 1 /Herwig/Decays/DecayME0 decaymode phi->eta,pi0,gamma; 8.3E-5 1 /Herwig/Decays/DecayME0 decaymode phi->a_00,gamma; 7.6E-5 1 /Herwig/Decays/VVSDecayer decaymode phi->eta',gamma; 6.2E-5 1 /Herwig/Decays/VectorVP decaymode phi->omega,pi0; 5.2E-5 1 /Herwig/Decays/VectorVP decaymode phi->pi0,e-,e+; 1.3E-5 1 /Herwig/Decays/VectorVPff decaymode phi->eta,mu-,mu+; 6.0E-6 1 /Herwig/Decays/VectorVPff decaymode phi->pi+,pi-,pi+,pi-; 4.0E-6 1 /Herwig/Decays/Mambo decaymode phi->pi0,mu-,mu+; 3.0E-6 1 /Herwig/Decays/VectorVPff # decaymode Jpsi->g,g,g; 0.486225 1 /Herwig/Decays/QDecayME130 decaymode Jpsi->u,ubar; 0.0791 1 /Herwig/Decays/QDecayME0 decaymode Jpsi->e-,e+; 0.05935 1 /Herwig/Decays/Vector2Leptons decaymode Jpsi->mu-,mu+; 0.05935 1 /Herwig/Decays/Vector2Leptons decaymode Jpsi->g,g,gamma; 0.05 1 /Herwig/Decays/QDecayME130 decaymode Jpsi->d,dbar; 0.0198 1 /Herwig/Decays/QDecayME0 decaymode Jpsi->s,sbar; 0.0198 1 /Herwig/Decays/QDecayME0 decaymode Jpsi->gamma,eta_c; 0.013 1 /Herwig/Decays/VectorVP decaymode Jpsi->omega,pi+,pi-,pi+,pi-; 0.0085 1 /Herwig/Decays/Mambo decaymode Jpsi->rho-,pi+; 0.00563 1 /Herwig/Decays/VectorVP decaymode Jpsi->rho0,pi0; 0.00563 1 /Herwig/Decays/VectorVP decaymode Jpsi->rho+,pi-; 0.00563 1 /Herwig/Decays/VectorVP decaymode Jpsi->gamma,pi+,pi-,pi0,pi0; 0.005 1 /Herwig/Decays/Mambo decaymode Jpsi->omega,pi+,pi-; 0.00475 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,eta'; 0.00471 1 /Herwig/Decays/VectorVP decaymode Jpsi->n0,nbar0,pi+,pi-; 0.0045 1 /Herwig/Decays/Mambo decaymode Jpsi->p+,pbar-,pi+,pi-; 0.0045 1 /Herwig/Decays/Mambo decaymode Jpsi->f_2,omega; 0.0043 1 /Herwig/Decays/DecayME0 decaymode Jpsi->a_20,rho0; 0.003634 1 /Herwig/Decays/DecayME0 decaymode Jpsi->a_2-,rho+; 0.003633 1 /Herwig/Decays/DecayME0 decaymode Jpsi->a_2+,rho-; 0.003633 1 /Herwig/Decays/DecayME0 decaymode Jpsi->omega,pi+,pi-,pi0; 0.0036 1 /Herwig/Decays/Mambo decaymode Jpsi->K*-,K*_2+; 0.00335 1 /Herwig/Decays/DecayME0 decaymode Jpsi->K*bar0,K*_20; 0.00335 1 /Herwig/Decays/DecayME0 decaymode Jpsi->K*0,K*_2bar0; 0.00335 1 /Herwig/Decays/DecayME0 decaymode Jpsi->K*+,K*_2-; 0.00335 1 /Herwig/Decays/DecayME0 decaymode Jpsi->pi+,pi-,pi0; 0.0033 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,eta,pi+,pi-; 0.0031 1 /Herwig/Decays/Mambo decaymode Jpsi->gamma,rho+,rho-; 0.003 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,eta(1475); 0.0028 1 /Herwig/Decays/DecayME0 decaymode Jpsi->K-,K*+; 0.0023 1 /Herwig/Decays/VectorVP decaymode Jpsi->Kbar0,K*0; 0.0023 1 /Herwig/Decays/VectorVP decaymode Jpsi->K0,K*bar0; 0.0023 1 /Herwig/Decays/VectorVP decaymode Jpsi->K+,K*-; 0.0023 1 /Herwig/Decays/VectorVP decaymode Jpsi->p+,pbar-,pi+,pi-,pi0; 0.0023 1 /Herwig/Decays/Mambo decaymode Jpsi->omega,pi0,pi0; 0.00217 1 /Herwig/Decays/DecayME0 decaymode Jpsi->n0,nbar0; 0.00217 1 /Herwig/Decays/Vector2Leptons decaymode Jpsi->p+,pbar-; 0.00217 1 /Herwig/Decays/Vector2Leptons decaymode Jpsi->gamma,K+,K-,pi+,pi-; 0.0021 1 /Herwig/Decays/Mambo decaymode Jpsi->n0,nbar0,eta; 0.00209 1 /Herwig/Decays/DecayME0 decaymode Jpsi->p+,pbar-,eta; 0.00209 1 /Herwig/Decays/DecayME0 decaymode Jpsi->pbar-,n0,pi+; 0.00204 1 /Herwig/Decays/DecayME0 decaymode Jpsi->p+,nbar0,pi-; 0.00204 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,K*0,K*bar0; 0.002 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,K*+,K*-; 0.002 1 /Herwig/Decays/DecayME0 decaymode Jpsi->K'_1-,K+; 0.0019 1 /Herwig/Decays/VAPDecayer decaymode Jpsi->K'_1bar0,K0; 0.0019 1 /Herwig/Decays/VAPDecayer decaymode Jpsi->K'_10,Kbar0; 0.0019 1 /Herwig/Decays/VAPDecayer decaymode Jpsi->K'_1+,K-; 0.0019 1 /Herwig/Decays/VAPDecayer decaymode Jpsi->omega,eta; 0.00174 1 /Herwig/Decays/VectorVP decaymode Jpsi->phi,pi+,pi-,pi+,pi-; 0.00166 1 /Herwig/Decays/Mambo decaymode Jpsi->b_1-,pi+; 0.00162 1 /Herwig/Decays/VAPDecayer decaymode Jpsi->b_10,pi0; 0.00162 1 /Herwig/Decays/VAPDecayer decaymode Jpsi->b_1+,pi-; 0.00162 1 /Herwig/Decays/VAPDecayer decaymode Jpsi->gamma,eta,pi0,pi0; 0.0016 1 /Herwig/Decays/Mambo decaymode Jpsi->gamma,omega,omega; 0.00159 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Lambda0,Lambdabar0; 0.00154 1 /Herwig/Decays/Vector2Leptons decaymode Jpsi->gamma,rho0,rho0; 0.0015 1 /Herwig/Decays/DecayME0 decaymode Jpsi->pi+,pi-; 0.00147 1 /Herwig/Decays/Vector2Meson decaymode Jpsi->gamma,f_2; 0.00138 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,f_0(1710); 0.00134 1 /Herwig/Decays/VVSDecayer decaymode Jpsi->omega,K*-,K+; 0.001325 1 /Herwig/Decays/DecayME0 decaymode Jpsi->omega,K*bar0,K0; 0.001325 1 /Herwig/Decays/DecayME0 decaymode Jpsi->omega,K*0,Kbar0; 0.001325 1 /Herwig/Decays/DecayME0 decaymode Jpsi->omega,K*+,K-; 0.001325 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Sigma-,Sigmabar+; 0.00131 1 /Herwig/Decays/Vector2Leptons decaymode Jpsi->Sigma0,Sigmabar0; 0.00131 1 /Herwig/Decays/Vector2Leptons decaymode Jpsi->Sigma+,Sigmabar-; 0.00131 1 /Herwig/Decays/Vector2Leptons decaymode Jpsi->n0,nbar0,omega; 0.0013 1 /Herwig/Decays/DecayME0 decaymode Jpsi->p+,pbar-,omega; 0.0013 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Delta-,Deltabar+; 0.0011 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Delta0,Deltabar0; 0.0011 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Delta+,Deltabar-; 0.0011 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Delta++,Deltabar--; 0.0011 1 /Herwig/Decays/DecayME0 decaymode Jpsi->pbar-,K0,Sigma*+; 0.00102 1 /Herwig/Decays/DecayME0 decaymode Jpsi->pbar-,p+,pi0; 0.00102 1 /Herwig/Decays/DecayME0 decaymode Jpsi->nbar0,K+,Sigma*-; 0.00102 1 /Herwig/Decays/DecayME0 decaymode Jpsi->n0,nbar0,pi0; 0.00102 1 /Herwig/Decays/DecayME0 decaymode Jpsi->n0,K-,Sigma*bar+; 0.00102 1 /Herwig/Decays/DecayME0 decaymode Jpsi->p+,Kbar0,Sigma*bar-; 0.00102 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,pi+,pi-,pi+,pi-; 0.001 1 /Herwig/Decays/Mambo decaymode Jpsi->gamma,eta; 0.00098 1 /Herwig/Decays/VectorVP decaymode Jpsi->gamma,f_2,f_2; 0.00095 1 /Herwig/Decays/DecayME0 decaymode Jpsi->eta',n0,nbar0; 0.0009 1 /Herwig/Decays/DecayME0 decaymode Jpsi->eta',p+,pbar-; 0.0009 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Xi-,Xibar+; 0.0009 1 /Herwig/Decays/Vector2Leptons decaymode Jpsi->Xi0,Xibar0; 0.0009 1 /Herwig/Decays/Vector2Leptons decaymode Jpsi->pbar-,K+,Lambda0; 0.00089 1 /Herwig/Decays/DecayME0 decaymode Jpsi->nbar0,K0,Lambda0; 0.00089 1 /Herwig/Decays/DecayME0 decaymode Jpsi->n0,Kbar0,Lambdabar0; 0.00089 1 /Herwig/Decays/DecayME0 decaymode Jpsi->p+,K-,Lambdabar0; 0.00089 1 /Herwig/Decays/DecayME0 decaymode Jpsi->phi,f'_2; 0.0008 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,f'_1; 0.00079 1 /Herwig/Decays/DecayME0 decaymode Jpsi->phi,pi+,pi-; 0.00078 1 /Herwig/Decays/DecayME0 decaymode Jpsi->f_0(1710),omega; 0.00076 1 /Herwig/Decays/VVSDecayer decaymode Jpsi->phi,eta; 0.00074 1 /Herwig/Decays/VectorVP decaymode Jpsi->phi,K0,Kbar0; 0.00074 1 /Herwig/Decays/DecayME0 decaymode Jpsi->phi,K+,K-; 0.00074 1 /Herwig/Decays/DecayME0 decaymode Jpsi->omega,K0,Kbar0; 0.00071 1 /Herwig/Decays/DecayME0 decaymode Jpsi->omega,K+,K-; 0.00071 1 /Herwig/Decays/DecayME0 decaymode Jpsi->omega,f'_1; 0.00068 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,f_1; 0.00061 1 /Herwig/Decays/DecayME0 decaymode Jpsi->pbar-,K0,Sigma+; 0.00058 1 /Herwig/Decays/DecayME0 decaymode Jpsi->nbar0,K+,Sigma-; 0.00058 1 /Herwig/Decays/DecayME0 decaymode Jpsi->n0,K-,Sigmabar+; 0.00058 1 /Herwig/Decays/DecayME0 decaymode Jpsi->p+,Kbar0,Sigmabar-; 0.00058 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,f_0(1500); 0.00057 1 /Herwig/Decays/VVSDecayer decaymode Jpsi->f_0(1710),phi; 0.00057 1 /Herwig/Decays/VVSDecayer decaymode Jpsi->Sigmabar-,pi+,Lambda0; 0.00053 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Sigmabar0,pi0,Lambda0; 0.00053 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Sigmabar+,pi-,Lambda0; 0.00053 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Sigma-,pi+,Lambdabar0; 0.00053 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Sigma0,pi0,Lambdabar0; 0.00053 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Sigma+,pi-,Lambdabar0; 0.00053 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Sigma*-,Sigma*bar+; 0.000515 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Sigma*0,Sigma*bar0; 0.000515 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Sigma*+,Sigma*bar-; 0.000515 1 /Herwig/Decays/DecayME0 decaymode Jpsi->pbar-,K+,Sigma*0; 0.00051 1 /Herwig/Decays/DecayME0 decaymode Jpsi->nbar0,K0,Sigma*0; 0.00051 1 /Herwig/Decays/DecayME0 decaymode Jpsi->K-,K*+,phi; 0.00051 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Kbar0,K*0,phi; 0.00051 1 /Herwig/Decays/DecayME0 decaymode Jpsi->K0,K*bar0,phi; 0.00051 1 /Herwig/Decays/DecayME0 decaymode Jpsi->K+,K*-,phi; 0.00051 1 /Herwig/Decays/DecayME0 decaymode Jpsi->n0,Kbar0,Sigma*bar0; 0.00051 1 /Herwig/Decays/DecayME0 decaymode Jpsi->p+,K-,Sigma*bar0; 0.00051 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,f'_2; 0.00045 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,eta(1405); 0.00045 1 /Herwig/Decays/DecayME0 decaymode Jpsi->omega,pi0; 0.00045 1 /Herwig/Decays/VectorVP decaymode Jpsi->Xi*bar0,Xi0; 0.000446 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Xi*bar+,Xi-; 0.000446 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Xi*-,Xibar+; 0.000446 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Xi*0,Xibar0; 0.000446 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,phi,phi; 0.0004 1 /Herwig/Decays/DecayME0 decaymode Jpsi->phi,eta'; 0.0004 1 /Herwig/Decays/VectorVP decaymode Jpsi->gamma,n0,nbar0; 0.00038 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,p+,pbar-; 0.00038 1 /Herwig/Decays/DecayME0 decaymode Jpsi->phi,f_0; 0.00032 1 /Herwig/Decays/VVSDecayer decaymode Jpsi->pbar-,K+,Sigma0; 0.00029 1 /Herwig/Decays/DecayME0 decaymode Jpsi->nbar0,K0,Sigma0; 0.00029 1 /Herwig/Decays/DecayME0 decaymode Jpsi->n0,Kbar0,Sigmabar0; 0.00029 1 /Herwig/Decays/DecayME0 decaymode Jpsi->p+,K-,Sigmabar0; 0.00029 1 /Herwig/Decays/DecayME0 decaymode Jpsi->phi,f_1; 0.00026 1 /Herwig/Decays/DecayME0 decaymode Jpsi->K-,K+; 0.000237 1 /Herwig/Decays/Vector2Meson decaymode Jpsi->Lambda0,Lambdabar0,pi0; 0.00022 1 /Herwig/Decays/DecayME0 decaymode Jpsi->rho0,eta; 0.000193 1 /Herwig/Decays/VectorVP decaymode Jpsi->omega,eta'; 0.000182 1 /Herwig/Decays/VectorVP decaymode Jpsi->Sigma*bar-,Sigma+; 0.000155 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Sigma*bar0,Sigma0; 0.000155 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Sigma*bar+,Sigma-; 0.000155 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Sigma*-,Sigmabar+; 0.000155 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Sigma*0,Sigmabar0; 0.000155 1 /Herwig/Decays/DecayME0 decaymode Jpsi->Sigma*+,Sigmabar-; 0.000155 1 /Herwig/Decays/DecayME0 decaymode Jpsi->K_L0,K_S0; 0.000146 1 /Herwig/Decays/Vector2Meson decaymode Jpsi->omega,f_0; 0.00014 1 /Herwig/Decays/VVSDecayer decaymode Jpsi->rho0,eta'; 0.000105 1 /Herwig/Decays/VectorVP decaymode Jpsi->phi,n0,nbar0; 4.5E-5 1 /Herwig/Decays/DecayME0 decaymode Jpsi->phi,p+,pbar-; 4.5E-5 1 /Herwig/Decays/DecayME0 decaymode Jpsi->gamma,pi0; 3.3E-5 1 /Herwig/Decays/VectorVP # decaymode Upsilon->g,g,g; 0.814282 1 /Herwig/Decays/QDecayME130 decaymode Upsilon->u,ubar; 0.036 1 /Herwig/Decays/QDecayME0 decaymode Upsilon->c,cbar; 0.036 1 /Herwig/Decays/QDecayME0 decaymode Upsilon->e-,e+; 0.0249 1 /Herwig/Decays/Vector2Leptons decaymode Upsilon->mu-,mu+; 0.0249 1 /Herwig/Decays/Vector2Leptons decaymode Upsilon->tau-,tau+; 0.0247 1 /Herwig/Decays/Vector2Leptons decaymode Upsilon->g,g,gamma; 0.02099 1 /Herwig/Decays/QDecayME0 decaymode Upsilon->d,dbar; 0.009 1 /Herwig/Decays/QDecayME0 decaymode Upsilon->s,sbar; 0.009 1 /Herwig/Decays/QDecayME0 decaymode Upsilon->gamma,f_2; 0.0001 1 /Herwig/Decays/DecayME0 decaymode Upsilon->gamma,pi+,pi-; 6.3E-5 1 /Herwig/Decays/DecayME0 decaymode Upsilon->gamma,f'_2; 3.7E-5 1 /Herwig/Decays/DecayME0 decaymode Upsilon->gamma,pi0,pi0; 1.7E-5 1 /Herwig/Decays/DecayME0 decaymode Upsilon->gamma,K+,K-; 1.1E-5 1 /Herwig/Decays/DecayME0 # decaymode K*+->K0,pi+; 0.666007 1 /Herwig/Decays/Vector2Meson decaymode K*+->K+,pi0; 0.333003 1 /Herwig/Decays/Vector2Meson decaymode K*+->K+,gamma; 0.00099 1 /Herwig/Decays/VectorVP # decaymode K*0->K+,pi-; 0.665127 1 /Herwig/Decays/Vector2Meson decaymode K*0->K0,pi0; 0.332563 1 /Herwig/Decays/Vector2Meson decaymode K*0->K0,gamma; 0.00231 1 /Herwig/Decays/VectorVP # decaymode K*-->Kbar0,pi-; 0.666007 1 /Herwig/Decays/Vector2Meson decaymode K*-->K-,pi0; 0.333003 1 /Herwig/Decays/Vector2Meson decaymode K*-->K-,gamma; 0.00099 1 /Herwig/Decays/VectorVP # decaymode K*bar0->K-,pi+; 0.665127 1 /Herwig/Decays/Vector2Meson decaymode K*bar0->Kbar0,pi0; 0.332563 1 /Herwig/Decays/Vector2Meson decaymode K*bar0->Kbar0,gamma; 0.00231 1 /Herwig/Decays/VectorVP # decaymode D*0->D0,pi0; 0.619 1 /Herwig/Decays/Vector2Meson decaymode D*0->D0,gamma; 0.381 1 /Herwig/Decays/VectorVP # decaymode D*+->D0,pi+; 0.677 1 /Herwig/Decays/Vector2Meson decaymode D*+->D+,pi0; 0.307 1 /Herwig/Decays/Vector2Meson decaymode D*+->D+,gamma; 0.016 1 /Herwig/Decays/VectorVP # decaymode D*bar0->Dbar0,pi0; 0.619 1 /Herwig/Decays/Vector2Meson decaymode D*bar0->Dbar0,gamma; 0.381 1 /Herwig/Decays/VectorVP # decaymode D*-->Dbar0,pi-; 0.677 1 /Herwig/Decays/Vector2Meson decaymode D*-->D-,pi0; 0.307 1 /Herwig/Decays/Vector2Meson decaymode D*-->D-,gamma; 0.016 1 /Herwig/Decays/VectorVP # decaymode D_s*+->D_s+,pi0; 0.942 1 /Herwig/Decays/Vector2Meson decaymode D_s*+->D_s+,gamma; 0.058 1 /Herwig/Decays/VectorVP # decaymode D_s*-->D_s-,gamma; 0.942 1 /Herwig/Decays/VectorVP decaymode D_s*-->D_s-,pi0; 0.058 1 /Herwig/Decays/Vector2Meson # decaymode B*0->B0,gamma; 1 1 /Herwig/Decays/VectorVP # decaymode B*+->B+,gamma; 1 1 /Herwig/Decays/VectorVP # decaymode B*bar0->Bbar0,gamma; 1 1 /Herwig/Decays/VectorVP # decaymode B*-->B-,gamma; 1 1 /Herwig/Decays/VectorVP # decaymode B_s*0->B_s0,gamma; 1 1 /Herwig/Decays/VectorVP # decaymode B_s*bar0->B_sbar0,gamma; 1 1 /Herwig/Decays/VectorVP # decaymode B_c*+->B_c+,gamma; 1 1 /Herwig/Decays/VectorVP # decaymode B_c*-->B_c-,gamma; 1 1 /Herwig/Decays/VectorVP # # the 1^1P_1 multiplet # # decaymode b_1+->omega,pi+; 0.9984 1 /Herwig/Decays/PVectorVP decaymode b_1+->pi+,gamma; 0.0016 1 /Herwig/Decays/PVectorVP # decaymode b_10->omega,pi0; 1 1 /Herwig/Decays/PVectorVP # decaymode b_1-->omega,pi-; 0.9984 1 /Herwig/Decays/PVectorVP decaymode b_1-->pi-,gamma; 0.0016 1 /Herwig/Decays/PVectorVP # decaymode h_1->rho0,pi0; 0.333334 1 /Herwig/Decays/PVectorVP decaymode h_1->rho-,pi+; 0.333333 1 /Herwig/Decays/PVectorVP decaymode h_1->rho+,pi-; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode h'_1->K*-,K+; 0.25 1 /Herwig/Decays/PVectorVP decaymode h'_1->K*bar0,K0; 0.25 1 /Herwig/Decays/PVectorVP decaymode h'_1->K*0,Kbar0; 0.25 1 /Herwig/Decays/PVectorVP decaymode h'_1->K*+,K-; 0.25 1 /Herwig/Decays/PVectorVP # decaymode h_c->g,g,g; 0.6 1 /Herwig/Decays/QDecayME130 decaymode h_c->eta_c,gamma; 0.4 1 /Herwig/Decays/PVectorVP # decaymode h_b->g,g,g; 0.568 1 /Herwig/Decays/QDecayME130 decaymode h_b->eta_b,gamma; 0.414 1 /Herwig/Decays/PVectorVP decaymode h_b->g,g,gamma; 0.018 1 /Herwig/Decays/QDecayME130 # decaymode K_1+->rho+,K0; 0.298667 1 /Herwig/Decays/PVectorVP decaymode K_1+->K*_00,pi+; 0.199111 1 /Herwig/Decays/Vector2Meson decaymode K_1+->rho0,K+; 0.149333 1 /Herwig/Decays/PVectorVP decaymode K_1+->K*0,pi+; 0.122222 1 /Herwig/Decays/PVectorVP decaymode K_1+->K*_0+,pi0; 0.099556 1 /Herwig/Decays/Vector2Meson decaymode K_1+->K+,omega; 0.07 1 /Herwig/Decays/PVectorVP decaymode K_1+->K*+,pi0; 0.061111 1 /Herwig/Decays/PVectorVP # decaymode K_10->rho-,K+; 0.298412 1 /Herwig/Decays/PVectorVP decaymode K_10->K*_0+,pi-; 0.198941 1 /Herwig/Decays/Vector2Meson decaymode K_10->rho0,K0; 0.149206 1 /Herwig/Decays/PVectorVP decaymode K_10->K*+,pi-; 0.122009 1 /Herwig/Decays/PVectorVP decaymode K_10->K*_00,pi0; 0.09947 1 /Herwig/Decays/Vector2Meson decaymode K_10->K0,omega; 0.07 1 /Herwig/Decays/PVectorVP decaymode K_10->K*0,pi0; 0.061005 1 /Herwig/Decays/PVectorVP decaymode K_10->K0,gamma; 0.000957 1 /Herwig/Decays/PVectorVP # decaymode K_1-->rho-,Kbar0; 0.298667 1 /Herwig/Decays/PVectorVP decaymode K_1-->K*_0bar0,pi-; 0.199111 1 /Herwig/Decays/Vector2Meson decaymode K_1-->rho0,K-; 0.149333 1 /Herwig/Decays/PVectorVP decaymode K_1-->K*bar0,pi-; 0.122222 1 /Herwig/Decays/PVectorVP decaymode K_1-->K*_0-,pi0; 0.099556 1 /Herwig/Decays/Vector2Meson decaymode K_1-->K-,omega; 0.07 1 /Herwig/Decays/PVectorVP decaymode K_1-->K*-,pi0; 0.061111 1 /Herwig/Decays/PVectorVP # decaymode K_1bar0->rho+,K-; 0.298412 1 /Herwig/Decays/PVectorVP decaymode K_1bar0->K*_0-,pi+; 0.198941 1 /Herwig/Decays/Vector2Meson decaymode K_1bar0->rho0,Kbar0; 0.149206 1 /Herwig/Decays/PVectorVP decaymode K_1bar0->K*-,pi+; 0.122009 1 /Herwig/Decays/PVectorVP decaymode K_1bar0->K*_0bar0,pi0; 0.09947 1 /Herwig/Decays/Vector2Meson decaymode K_1bar0->Kbar0,omega; 0.07 1 /Herwig/Decays/PVectorVP decaymode K_1bar0->K*bar0,pi0; 0.061005 1 /Herwig/Decays/PVectorVP decaymode K_1bar0->Kbar0,gamma; 0.000957 1 /Herwig/Decays/PVectorVP # decaymode D_10->D*+,pi-; 0.666667 1 /Herwig/Decays/PVectorVP decaymode D_10->D*0,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode D_1+->D*0,pi+; 0.666667 1 /Herwig/Decays/PVectorVP decaymode D_1+->D*+,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode D_1bar0->D*-,pi+; 0.666667 1 /Herwig/Decays/PVectorVP decaymode D_1bar0->D*bar0,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode D_1-->D*bar0,pi-; 0.666667 1 /Herwig/Decays/PVectorVP decaymode D_1-->D*-,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode D_s1+->D_s*+,pi0; 0.656068 1 /Herwig/Decays/PVectorVP decaymode D_s1+->D_s+,gamma; 0.206139 1 /Herwig/Decays/PVectorVP decaymode D_s1+->D_s+,pi+,pi-; 0.091862 1 /Herwig/Decays/DecayME0 decaymode D_s1+->D_s+,pi0,pi0; 0.045931 1 /Herwig/Decays/DecayME0 # decaymode D_s1-->D_s*-,pi0; 0.656068 1 /Herwig/Decays/PVectorVP decaymode D_s1-->D_s-,gamma; 0.206139 1 /Herwig/Decays/PVectorVP decaymode D_s1-->D_s-,pi-,pi+; 0.091862 1 /Herwig/Decays/DecayME0 decaymode D_s1-->D_s-,pi0,pi0; 0.045931 1 /Herwig/Decays/DecayME0 # decaymode B_10->B*+,pi-; 0.666667 1 /Herwig/Decays/PVectorVP decaymode B_10->B*0,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode B_1+->B*0,pi+; 0.666667 1 /Herwig/Decays/PVectorVP decaymode B_1+->B*+,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode B_1bar0->B*-,pi+; 0.666667 1 /Herwig/Decays/PVectorVP decaymode B_1bar0->B*bar0,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode B_1-->B*bar0,pi-; 0.666667 1 /Herwig/Decays/PVectorVP decaymode B_1-->B*-,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode B_s10->B*0,Kbar0; 0.5 1 /Herwig/Decays/PVectorVP decaymode B_s10->B*+,K-; 0.5 1 /Herwig/Decays/PVectorVP # decaymode B_s1bar0->B*-,K+; 0.5 1 /Herwig/Decays/PVectorVP decaymode B_s1bar0->B*bar0,K0; 0.5 1 /Herwig/Decays/PVectorVP # decaymode B_c1+->B_c*+,gamma; 0.82 1 /Herwig/Decays/DecayME0 decaymode B_c1+->B_c+,gamma; 0.18 1 /Herwig/Decays/PVectorVP # decaymode B_c1-->B_c*-,gamma; 0.82 1 /Herwig/Decays/DecayME0 decaymode B_c1-->B_c-,gamma; 0.18 1 /Herwig/Decays/PVectorVP # # the 1^3P_0 multiplet # # decaymode a'_0+->omega,rho+; 0.827532 1 /Herwig/Decays/SVV decaymode a'_0+->pi+,eta; 0.07734 1 /Herwig/Decays/ScalarSS decaymode a'_0+->K+,Kbar0; 0.068059 1 /Herwig/Decays/ScalarSS decaymode a'_0+->pi+,eta'; 0.027069 1 /Herwig/Decays/ScalarSS # decaymode a'_00->omega,rho0; 0.827533 1 /Herwig/Decays/SVV decaymode a'_00->pi0,eta; 0.07734 1 /Herwig/Decays/ScalarSS decaymode a'_00->K-,K+; 0.034029 1 /Herwig/Decays/ScalarSS decaymode a'_00->Kbar0,K0; 0.034029 1 /Herwig/Decays/ScalarSS decaymode a'_00->pi0,eta'; 0.027069 1 /Herwig/Decays/ScalarSS # decaymode a'_0-->omega,rho-; 0.827532 1 /Herwig/Decays/SVV decaymode a'_0-->pi-,eta; 0.07734 1 /Herwig/Decays/ScalarSS decaymode a'_0-->K-,K0; 0.068059 1 /Herwig/Decays/ScalarSS decaymode a'_0-->pi-,eta'; 0.027069 1 /Herwig/Decays/ScalarSS # decaymode f'_0->sigma,sigma; 0.438181 1 /Herwig/Decays/ScalarSS decaymode f'_0->rho+,rho-; 0.150788 1 /Herwig/Decays/SVV decaymode f'_0->rho0,rho0; 0.075394 1 /Herwig/Decays/SVV decaymode f'_0->pi+,pi-; 0.052606 1 /Herwig/Decays/ScalarSS decaymode f'_0->pi'-,pi+; 0.050424 1 /Herwig/Decays/ScalarSS decaymode f'_0->pi'0,pi0; 0.050424 1 /Herwig/Decays/ScalarSS decaymode f'_0->pi'+,pi-; 0.050424 1 /Herwig/Decays/ScalarSS decaymode f'_0->K0,Kbar0; 0.026364 1 /Herwig/Decays/ScalarSS decaymode f'_0->K+,K-; 0.026364 1 /Herwig/Decays/ScalarSS decaymode f'_0->pi0,pi0; 0.026303 1 /Herwig/Decays/ScalarSS decaymode f'_0->a_1-,pi+; 0.017091 1 /Herwig/Decays/PPVDecayer decaymode f'_0->a_10,pi0; 0.017091 1 /Herwig/Decays/PPVDecayer decaymode f'_0->a_1+,pi-; 0.017091 1 /Herwig/Decays/PPVDecayer decaymode f'_0->eta,eta; 0.001455 1 /Herwig/Decays/ScalarSS # decaymode f_0(1710)->K0,Kbar0; 0.316456 1 /Herwig/Decays/ScalarSS decaymode f_0(1710)->K+,K-; 0.316456 1 /Herwig/Decays/ScalarSS decaymode f_0(1710)->eta,eta; 0.303797 1 /Herwig/Decays/ScalarSS decaymode f_0(1710)->pi+,pi-; 0.042194 1 /Herwig/Decays/ScalarSS decaymode f_0(1710)->pi0,pi0; 0.021097 1 /Herwig/Decays/ScalarSS # decaymode chi_c0->g,g; 0.788568 1 /Herwig/Decays/QDecayME0 decaymode chi_c0->f'_0,f_0(1710); 0.026 1 /Herwig/Decays/DecayME0 decaymode chi_c0->rho-,pi+,pi0; 0.016 1 /Herwig/Decays/DecayME0 decaymode chi_c0->rho0,pi+,pi-; 0.016 1 /Herwig/Decays/DecayME0 decaymode chi_c0->rho+,pi-,pi0; 0.016 1 /Herwig/Decays/DecayME0 decaymode chi_c0->Jpsi,gamma; 0.013 1 /Herwig/Decays/SVV decaymode chi_c0->K_1-,K+; 0.01 1 /Herwig/Decays/DecayME0 decaymode chi_c0->K_1bar0,K0; 0.01 1 /Herwig/Decays/DecayME0 decaymode chi_c0->K_10,Kbar0; 0.01 1 /Herwig/Decays/DecayME0 decaymode chi_c0->K_1+,K-; 0.01 1 /Herwig/Decays/DecayME0 decaymode chi_c0->pi-,pi+,pi-,pi+; 0.00739 1 /Herwig/Decays/Mambo decaymode chi_c0->K0,Kbar0; 0.0054 1 /Herwig/Decays/ScalarSS decaymode chi_c0->K+,K-; 0.0054 1 /Herwig/Decays/ScalarSS decaymode chi_c0->pi+,pi-; 0.0048 1 /Herwig/Decays/ScalarSS decaymode chi_c0->K-,K*0,pi+; 0.0044 1 /Herwig/Decays/DecayME0 decaymode chi_c0->Kbar0,K*+,pi-; 0.0044 1 /Herwig/Decays/DecayME0 decaymode chi_c0->K0,K*-,pi+; 0.0044 1 /Herwig/Decays/DecayME0 decaymode chi_c0->K+,K*bar0,pi-; 0.0044 1 /Herwig/Decays/DecayME0 decaymode chi_c0->pi+,pi-,K+,K-; 0.00277 1 /Herwig/Decays/Mambo decaymode chi_c0->pi0,pi0; 0.0024 1 /Herwig/Decays/ScalarSS decaymode chi_c0->K*_00,K*_0bar0; 0.002363 1 /Herwig/Decays/ScalarSS decaymode chi_c0->K*_0+,K*_0-; 0.002363 1 /Herwig/Decays/ScalarSS decaymode chi_c0->omega,omega; 0.0023 1 /Herwig/Decays/SVV decaymode chi_c0->K*-,K+,pi0; 0.0022 1 /Herwig/Decays/DecayME0 decaymode chi_c0->K*bar0,K0,pi0; 0.0022 1 /Herwig/Decays/DecayME0 decaymode chi_c0->K*0,Kbar0,pi0; 0.0022 1 /Herwig/Decays/DecayME0 decaymode chi_c0->K*+,K-,pi0; 0.0022 1 /Herwig/Decays/DecayME0 decaymode chi_c0->f_0,f_0; 0.00215 1 /Herwig/Decays/ScalarSS decaymode chi_c0->K+,K-,K+,K-; 0.0021 1 /Herwig/Decays/Mambo decaymode chi_c0->K*_0-,K*_2+; 0.001912 1 /Herwig/Decays/STSDecayer decaymode chi_c0->K*_0bar0,K*_20; 0.001912 1 /Herwig/Decays/STSDecayer decaymode chi_c0->K*_00,K*_2bar0; 0.001912 1 /Herwig/Decays/STSDecayer decaymode chi_c0->K*_0+,K*_2-; 0.001912 1 /Herwig/Decays/STSDecayer decaymode chi_c0->pi+,pi-,p+,pbar-; 0.0019 1 /Herwig/Decays/Mambo decaymode chi_c0->eta,eta; 0.0019 1 /Herwig/Decays/ScalarSS decaymode chi_c0->K*0,K*bar0; 0.0018 1 /Herwig/Decays/SVV decaymode chi_c0->K*+,K*-; 0.0018 1 /Herwig/Decays/SVV decaymode chi_c0->K+,K-,K_S0,K_S0; 0.0015 1 /Herwig/Decays/Mambo decaymode chi_c0->phi,phi; 0.0009 1 /Herwig/Decays/SVV decaymode chi_c0->Lambda0,Lambdabar0; 0.00044 1 /Herwig/Decays/DecayME0 decaymode chi_c0->gamma,gamma; 0.000276 1 /Herwig/Decays/SVV decaymode chi_c0->n0,nbar0; 0.000216 1 /Herwig/Decays/DecayME0 decaymode chi_c0->p+,pbar-; 0.000216 1 /Herwig/Decays/DecayME0 # decaymode chi_b0->g,g; 0.968 1 /Herwig/Decays/QDecayME0 decaymode chi_b0->Upsilon,gamma; 0.032 1 /Herwig/Decays/DecayME0 # decaymode K*_0+->K0,pi+; 0.666667 1 /Herwig/Decays/ScalarSS decaymode K*_0+->K+,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode K*_00->K+,pi-; 0.666667 1 /Herwig/Decays/ScalarSS decaymode K*_00->K0,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode K*_0-->Kbar0,pi-; 0.666667 1 /Herwig/Decays/ScalarSS decaymode K*_0-->K-,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode K*_0bar0->K-,pi+; 0.666667 1 /Herwig/Decays/ScalarSS decaymode K*_0bar0->Kbar0,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode D_0*+->D0,pi+; 0.666667 1 /Herwig/Decays/ScalarSS decaymode D_0*+->D+,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode D_0*0->D+,pi-; 0.666667 1 /Herwig/Decays/ScalarSS decaymode D_0*0->D0,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode D_0*-->Dbar0,pi-; 0.666667 1 /Herwig/Decays/ScalarSS decaymode D_0*-->D-,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode D_0*bar0->D-,pi+; 0.666667 1 /Herwig/Decays/ScalarSS decaymode D_0*bar0->Dbar0,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode D_s0+->D_s+,pi0; 1 1 /Herwig/Decays/ScalarSS # decaymode D_s0-->D_s-,pi0; 1 1 /Herwig/Decays/ScalarSS # decaymode B*_00->B+,pi-; 0.666667 1 /Herwig/Decays/ScalarSS decaymode B*_00->B0,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode B*_0+->B0,pi+; 0.666667 1 /Herwig/Decays/ScalarSS decaymode B*_0+->B+,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode B*_0bar0->B-,pi+; 0.666667 1 /Herwig/Decays/ScalarSS decaymode B*_0bar0->Bbar0,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode B*_0-->Bbar0,pi-; 0.666667 1 /Herwig/Decays/ScalarSS decaymode B*_0-->B-,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode B*_s00->B0,Kbar0; 0.5 1 /Herwig/Decays/ScalarSS decaymode B*_s00->B+,K-; 0.5 1 /Herwig/Decays/ScalarSS # decaymode B*_s0bar0->B-,K+; 0.5 1 /Herwig/Decays/ScalarSS decaymode B*_s0bar0->Bbar0,K0; 0.5 1 /Herwig/Decays/ScalarSS # decaymode B*_c0+->B_c+,gamma; 1 1 /Herwig/Decays/DecayME0 # decaymode B*_c0-->B_c-,gamma; 1 1 /Herwig/Decays/DecayME0 # # the 1^3P_1 multiplet # # decaymode a_1+->pi+,pi0,pi0; 0.499099 1 /Herwig/Decays/a1Simple decaymode a_1+->pi+,pi+,pi-; 0.4881 1 /Herwig/Decays/a1Simple decaymode a_1+->K+,K*bar0; 0.0064 1 /Herwig/Decays/PVectorVP decaymode a_1+->K*+,Kbar0; 0.0064 1 /Herwig/Decays/PVectorVP decaymode a_1+->pi+,gamma; 1.0E-6 1 /Herwig/Decays/PVectorVP # decaymode a_10->pi+,pi-,pi0; 0.987199 1 /Herwig/Decays/a1Simple decaymode a_10->K*0,Kbar0; 0.0064 1 /Herwig/Decays/PVectorVP decaymode a_10->K*+,K-; 0.0064 1 /Herwig/Decays/PVectorVP decaymode a_10->pi0,gamma; 1.0E-6 1 /Herwig/Decays/PVectorVP # decaymode a_1-->pi-,pi0,pi0; 0.499099 1 /Herwig/Decays/a1Simple decaymode a_1-->pi-,pi-,pi+; 0.4881 1 /Herwig/Decays/a1Simple decaymode a_1-->K*-,K0; 0.0064 1 /Herwig/Decays/PVectorVP decaymode a_1-->K-,K*0; 0.0064 1 /Herwig/Decays/PVectorVP decaymode a_1-->pi-,gamma; 1.0E-6 1 /Herwig/Decays/PVectorVP # decaymode f_1->a_0-,pi+; 0.14257 1 /Herwig/Decays/Vector2Meson decaymode f_1->a_00,pi0; 0.14257 1 /Herwig/Decays/Vector2Meson decaymode f_1->a_0+,pi-; 0.14257 1 /Herwig/Decays/Vector2Meson decaymode f_1->rho-,pi+,pi0; 0.110471 1 /Herwig/Decays/DecayME0 decaymode f_1->rho0,pi+,pi-; 0.110471 1 /Herwig/Decays/DecayME0 decaymode f_1->rho+,pi-,pi0; 0.110471 1 /Herwig/Decays/DecayME0 decaymode f_1->eta,pi+,pi-; 0.107123 1 /Herwig/Decays/DecayME0 decaymode f_1->rho0,gamma; 0.055235 1 /Herwig/Decays/DecayME0 decaymode f_1->eta,pi0,pi0; 0.053562 1 /Herwig/Decays/DecayME0 decaymode f_1->K-,K0,pi+; 0.008071 1 /Herwig/Decays/DecayME0 decaymode f_1->K+,Kbar0,pi-; 0.008071 1 /Herwig/Decays/DecayME0 decaymode f_1->K0,Kbar0,pi0; 0.004036 1 /Herwig/Decays/DecayME0 decaymode f_1->K+,K-,pi0; 0.004036 1 /Herwig/Decays/DecayME0 decaymode f_1->phi,gamma; 0.000743 1 /Herwig/Decays/DecayME0 # decaymode f'_1->K*-,K+; 0.1886 1 /Herwig/Decays/PVectorVP decaymode f'_1->K*bar0,K0; 0.1886 1 /Herwig/Decays/PVectorVP decaymode f'_1->K*0,Kbar0; 0.1886 1 /Herwig/Decays/PVectorVP decaymode f'_1->K*+,K-; 0.1886 1 /Herwig/Decays/PVectorVP decaymode f'_1->K-,K0,pi+; 0.0709 1 /Herwig/Decays/DecayME0 decaymode f'_1->K+,Kbar0,pi-; 0.0709 1 /Herwig/Decays/DecayME0 decaymode f'_1->K0,Kbar0,pi0; 0.0355 1 /Herwig/Decays/DecayME0 decaymode f'_1->K+,K-,pi0; 0.0355 1 /Herwig/Decays/DecayME0 decaymode f'_1->a_0-,pi+; 0.01 1 /Herwig/Decays/Vector2Meson decaymode f'_1->a_00,pi0; 0.01 1 /Herwig/Decays/Vector2Meson decaymode f'_1->a_0+,pi-; 0.01 1 /Herwig/Decays/Vector2Meson decaymode f'_1->phi,gamma; 0.0028 1 /Herwig/Decays/DecayME0 # decaymode chi_c1->g,g; 0.608569 1 /Herwig/Decays/QDecayME0 decaymode chi_c1->Jpsi,gamma; 0.356 1 /Herwig/Decays/DecayME0 decaymode chi_c1->rho-,pi+,pi0; 0.0039 1 /Herwig/Decays/DecayME0 decaymode chi_c1->rho0,pi+,pi-; 0.0039 1 /Herwig/Decays/DecayME0 decaymode chi_c1->rho+,pi-,pi0; 0.0039 1 /Herwig/Decays/DecayME0 decaymode chi_c1->pi+,pi-,pi+,pi-; 0.0037 1 /Herwig/Decays/Mambo decaymode chi_c1->pi+,pi-,K+,K-; 0.00237 1 /Herwig/Decays/Mambo decaymode chi_c1->K-,K0,pi+; 0.0023 1 /Herwig/Decays/DecayME0 decaymode chi_c1->K+,Kbar0,pi-; 0.0023 1 /Herwig/Decays/DecayME0 decaymode chi_c1->K*0,K*bar0; 0.0016 1 /Herwig/Decays/DecayME0 decaymode chi_c1->K*+,K*-; 0.0016 1 /Herwig/Decays/DecayME0 decaymode chi_c1->K0,Kbar0,pi0; 0.00115 1 /Herwig/Decays/DecayME0 decaymode chi_c1->K+,K-,pi0; 0.00115 1 /Herwig/Decays/DecayME0 decaymode chi_c1->K*-,K0,pi+; 0.00107 1 /Herwig/Decays/DecayME0 decaymode chi_c1->K*bar0,K+,pi-; 0.00107 1 /Herwig/Decays/DecayME0 decaymode chi_c1->K*0,K-,pi+; 0.00107 1 /Herwig/Decays/DecayME0 decaymode chi_c1->K*+,Kbar0,pi-; 0.00107 1 /Herwig/Decays/DecayME0 decaymode chi_c1->K*0,Kbar0,pi0; 0.000537 1 /Herwig/Decays/DecayME0 decaymode chi_c1->K*-,K+,pi0; 0.00053 1 /Herwig/Decays/DecayME0 decaymode chi_c1->K*bar0,K0,pi0; 0.00053 1 /Herwig/Decays/DecayME0 decaymode chi_c1->K*+,K-,pi0; 0.00053 1 /Herwig/Decays/DecayME0 decaymode chi_c1->pi+,pi-,p+,pbar-; 0.00039 1 /Herwig/Decays/Mambo decaymode chi_c1->K+,K-,K+,K-; 0.00039 1 /Herwig/Decays/Mambo decaymode chi_c1->Lambda0,Lambdabar0; 0.00024 1 /Herwig/Decays/DecayME0 decaymode chi_c1->n0,nbar0; 6.7E-5 1 /Herwig/Decays/DecayME0 decaymode chi_c1->p+,pbar-; 6.7E-5 1 /Herwig/Decays/DecayME0 # decaymode chi_b1->g,g; 0.65 1 /Herwig/Decays/QDecayME0 decaymode chi_b1->Upsilon,gamma; 0.35 1 /Herwig/Decays/DecayME0 # decaymode K'_1+->K*0,pi+; 0.634667 1 /Herwig/Decays/PVectorVP decaymode K'_1+->K*+,pi0; 0.317333 1 /Herwig/Decays/PVectorVP decaymode K'_1+->K0,rho+; 0.024 1 /Herwig/Decays/PVectorVP decaymode K'_1+->K+,rho0; 0.012 1 /Herwig/Decays/PVectorVP decaymode K'_1+->K+,omega; 0.012 1 /Herwig/Decays/PVectorVP # decaymode K'_10->K*+,pi-; 0.634005 1 /Herwig/Decays/PVectorVP decaymode K'_10->K*0,pi0; 0.317002 1 /Herwig/Decays/PVectorVP decaymode K'_10->K+,rho-; 0.023669 1 /Herwig/Decays/PVectorVP decaymode K'_10->K0,rho0; 0.011834 1 /Herwig/Decays/PVectorVP decaymode K'_10->K0,omega; 0.011834 1 /Herwig/Decays/PVectorVP decaymode K'_10->K0,gamma; 0.001656 1 /Herwig/Decays/PVectorVP # decaymode K'_1-->K*bar0,pi-; 0.634667 1 /Herwig/Decays/PVectorVP decaymode K'_1-->K*-,pi0; 0.317333 1 /Herwig/Decays/PVectorVP decaymode K'_1-->Kbar0,rho-; 0.024 1 /Herwig/Decays/PVectorVP decaymode K'_1-->K-,rho0; 0.012 1 /Herwig/Decays/PVectorVP decaymode K'_1-->K-,omega; 0.012 1 /Herwig/Decays/PVectorVP # decaymode K'_1bar0->K*-,pi+; 0.634005 1 /Herwig/Decays/PVectorVP decaymode K'_1bar0->K*bar0,pi0; 0.317002 1 /Herwig/Decays/PVectorVP decaymode K'_1bar0->K-,rho+; 0.023669 1 /Herwig/Decays/PVectorVP decaymode K'_1bar0->Kbar0,rho0; 0.011834 1 /Herwig/Decays/PVectorVP decaymode K'_1bar0->Kbar0,omega; 0.011834 1 /Herwig/Decays/PVectorVP decaymode K'_1bar0->Kbar0,gamma; 0.001656 1 /Herwig/Decays/PVectorVP # decaymode D'_10->D*+,pi-; 0.666667 1 /Herwig/Decays/PVectorVP decaymode D'_10->D*0,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode D'_1+->D*0,pi+; 0.666667 1 /Herwig/Decays/PVectorVP decaymode D'_1+->D*+,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode D'_1bar0->D*-,pi+; 0.666667 1 /Herwig/Decays/PVectorVP decaymode D'_1bar0->D*bar0,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode D'_1-->D*bar0,pi-; 0.666667 1 /Herwig/Decays/PVectorVP decaymode D'_1-->D*-,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode D'_s1+->D*0,K+; 0.559471 1 /Herwig/Decays/PVectorVP decaymode D'_s1+->D*+,K0; 0.440529 1 /Herwig/Decays/PVectorVP # decaymode D'_s1-->D*bar0,K-; 0.559471 1 /Herwig/Decays/PVectorVP decaymode D'_s1-->D*-,Kbar0; 0.440529 1 /Herwig/Decays/PVectorVP # decaymode B'_10->B*+,pi-; 0.666667 1 /Herwig/Decays/PVectorVP decaymode B'_10->B*0,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode B'_1+->B*0,pi+; 0.666667 1 /Herwig/Decays/PVectorVP decaymode B'_1+->B*+,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode B'_1bar0->B*-,pi+; 0.666667 1 /Herwig/Decays/PVectorVP decaymode B'_1bar0->B*bar0,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode B'_1-->B*bar0,pi-; 0.666667 1 /Herwig/Decays/PVectorVP decaymode B'_1-->B*-,pi0; 0.333333 1 /Herwig/Decays/PVectorVP # decaymode B'_s10->B*0,Kbar0; 0.5 1 /Herwig/Decays/PVectorVP decaymode B'_s10->B*+,K-; 0.5 1 /Herwig/Decays/PVectorVP # decaymode B'_s1bar0->B*-,K+; 0.5 1 /Herwig/Decays/PVectorVP decaymode B'_s1bar0->B*bar0,K0; 0.5 1 /Herwig/Decays/PVectorVP # decaymode B'_c1+->B_c+,gamma; 0.88 1 /Herwig/Decays/PVectorVP decaymode B'_c1+->B_c*+,gamma; 0.12 1 /Herwig/Decays/DecayME0 # decaymode B'_c1-->B_c-,gamma; 0.88 1 /Herwig/Decays/PVectorVP decaymode B'_c1-->B_c*-,gamma; 0.12 1 /Herwig/Decays/DecayME0 # # the 1^3P_2 multiplet # # decaymode a_2+->pi+,rho0; 0.348989 1 /Herwig/Decays/TensorVP decaymode a_2+->rho+,pi0; 0.348989 1 /Herwig/Decays/TensorVP decaymode a_2+->pi+,eta; 0.143657 1 /Herwig/Decays/Tensor2PScalar decaymode a_2+->omega,rho+; 0.102417 1 /Herwig/Decays/TVV decaymode a_2+->K+,Kbar0; 0.048104 1 /Herwig/Decays/Tensor2PScalar decaymode a_2+->eta',pi+; 0.005199 1 /Herwig/Decays/Tensor2PScalar decaymode a_2+->pi+,gamma; 0.002645 1 /Herwig/Decays/TensorVP # decaymode a_20->rho-,pi+; 0.349434 1 /Herwig/Decays/TensorVP decaymode a_20->rho+,pi-; 0.349434 1 /Herwig/Decays/TensorVP decaymode a_20->pi0,eta; 0.144053 1 /Herwig/Decays/Tensor2PScalar decaymode a_20->omega,rho0; 0.103473 1 /Herwig/Decays/TVV decaymode a_20->K0,Kbar0; 0.024184 1 /Herwig/Decays/Tensor2PScalar decaymode a_20->K+,K-; 0.024184 1 /Herwig/Decays/Tensor2PScalar decaymode a_20->eta',pi0; 0.005229 1 /Herwig/Decays/Tensor2PScalar decaymode a_20->gamma,gamma; 9.0E-6 1 /Herwig/Decays/TVV # decaymode a_2-->rho-,pi0; 0.348989 1 /Herwig/Decays/TensorVP decaymode a_2-->pi-,rho0; 0.348989 1 /Herwig/Decays/TensorVP decaymode a_2-->pi-,eta; 0.143657 1 /Herwig/Decays/Tensor2PScalar decaymode a_2-->omega,rho-; 0.102417 1 /Herwig/Decays/TVV decaymode a_2-->K-,K0; 0.048104 1 /Herwig/Decays/Tensor2PScalar decaymode a_2-->eta',pi-; 0.005199 1 /Herwig/Decays/Tensor2PScalar decaymode a_2-->pi-,gamma; 0.002645 1 /Herwig/Decays/TensorVP # decaymode f_2->pi+,pi-; 0.570829 1 /Herwig/Decays/Tensor2PScalar decaymode f_2->pi0,pi0; 0.285414 1 /Herwig/Decays/Tensor2PScalar decaymode f_2->rho+,rho-; 0.046681 1 /Herwig/Decays/TVV decaymode f_2->K0,Kbar0; 0.023516 1 /Herwig/Decays/Tensor2PScalar decaymode f_2->K+,K-; 0.023516 1 /Herwig/Decays/Tensor2PScalar decaymode f_2->rho0,rho0; 0.02334 1 /Herwig/Decays/TVV decaymode f_2->sigma,sigma; 0.022649 1 /Herwig/Decays/Tensor2PScalar decaymode f_2->eta,eta; 0.004041 1 /Herwig/Decays/Tensor2PScalar decaymode f_2->gamma,gamma; 1.4E-5 1 /Herwig/Decays/TVV # decaymode f'_2->K0,Kbar0; 0.444355 1 /Herwig/Decays/Tensor2PScalar decaymode f'_2->K+,K-; 0.444355 1 /Herwig/Decays/Tensor2PScalar decaymode f'_2->eta,eta; 0.103083 1 /Herwig/Decays/Tensor2PScalar decaymode f'_2->pi+,pi-; 0.00547 1 /Herwig/Decays/Tensor2PScalar decaymode f'_2->pi0,pi0; 0.002736 1 /Herwig/Decays/Tensor2PScalar decaymode f'_2->gamma,gamma; 1.0E-6 1 /Herwig/Decays/TVV # decaymode chi_c2->g,g; 0.700639 1 /Herwig/Decays/QDecayME0 decaymode chi_c2->Jpsi,gamma; 0.202 1 /Herwig/Decays/TVV decaymode chi_c2->K0,Kbar0; 0.0093 1 /Herwig/Decays/Tensor2PScalar decaymode chi_c2->K+,K-; 0.0093 1 /Herwig/Decays/Tensor2PScalar decaymode chi_c2->K0,K-,pi0,pi+; 0.008 1 /Herwig/Decays/Mambo decaymode chi_c2->K0,Kbar0,pi+,pi-; 0.008 1 /Herwig/Decays/Mambo decaymode chi_c2->K+,K-,pi+,pi-; 0.008 1 /Herwig/Decays/Mambo decaymode chi_c2->K+,Kbar0,pi0,pi-; 0.008 1 /Herwig/Decays/Mambo decaymode chi_c2->rho-,pi+,pi0; 0.007 1 /Herwig/Decays/DecayME0 decaymode chi_c2->rho0,pi+,pi-; 0.007 1 /Herwig/Decays/DecayME0 decaymode chi_c2->rho+,pi-,pi0; 0.007 1 /Herwig/Decays/DecayME0 decaymode chi_c2->pi+,pi-,pi+,pi-; 0.0053 1 /Herwig/Decays/Mambo decaymode chi_c2->K*0,K*bar0; 0.0038 1 /Herwig/Decays/TVV decaymode chi_c2->K*+,K*-; 0.0038 1 /Herwig/Decays/TVV decaymode chi_c2->omega,omega; 0.002 1 /Herwig/Decays/TVV decaymode chi_c2->K0,Kbar0,pi0,pi0; 0.002 1 /Herwig/Decays/Mambo decaymode chi_c2->K+,K-,pi0,pi0; 0.002 1 /Herwig/Decays/Mambo decaymode chi_c2->phi,phi; 0.0019 1 /Herwig/Decays/TVV decaymode chi_c2->pi+,pi-; 0.001427 1 /Herwig/Decays/Tensor2PScalar decaymode chi_c2->pi+,pi-,p+,pbar-; 0.00121 1 /Herwig/Decays/Mambo decaymode chi_c2->K+,K-,K+,K-; 0.00095 1 /Herwig/Decays/Mambo decaymode chi_c2->pi0,pi0; 0.000713 1 /Herwig/Decays/Tensor2PScalar decaymode chi_c2->Lambda0,Lambdabar0; 0.00027 1 /Herwig/Decays/DecayME0 decaymode chi_c2->gamma,gamma; 0.000259 1 /Herwig/Decays/TVV decaymode chi_c2->n0,nbar0; 6.6E-5 1 /Herwig/Decays/DecayME0 decaymode chi_c2->p+,pbar-; 6.6E-5 1 /Herwig/Decays/DecayME0 # decaymode chi_b2->g,g; 0.78 1 /Herwig/Decays/QDecayME0 decaymode chi_b2->Upsilon,gamma; 0.22 1 /Herwig/Decays/TVV # decaymode K*_2+->K0,pi+; 0.3327 1 /Herwig/Decays/Tensor2PScalar decaymode K*_2+->K+,pi0; 0.16635 1 /Herwig/Decays/Tensor2PScalar decaymode K*_2+->K*0,pi+; 0.164683 1 /Herwig/Decays/TensorVP decaymode K*_2+->K*0,rho+; 0.089342 1 /Herwig/Decays/TVV decaymode K*_2+->K*+,pi0; 0.082342 1 /Herwig/Decays/TensorVP decaymode K*_2+->K0,rho+; 0.058006 1 /Herwig/Decays/TensorVP decaymode K*_2+->K*+,rho0; 0.044671 1 /Herwig/Decays/TVV decaymode K*_2+->K+,rho0; 0.029003 1 /Herwig/Decays/TensorVP decaymode K*_2+->K+,omega; 0.029003 1 /Herwig/Decays/TensorVP decaymode K*_2+->K+,gamma; 0.0024 1 /Herwig/Decays/TensorVP decaymode K*_2+->K+,eta; 0.0015 1 /Herwig/Decays/Tensor2PScalar # decaymode K*_20->K+,pi-; 0.3335 1 /Herwig/Decays/Tensor2PScalar decaymode K*_20->K0,pi0; 0.16675 1 /Herwig/Decays/Tensor2PScalar decaymode K*_20->K*+,pi-; 0.165079 1 /Herwig/Decays/TensorVP decaymode K*_20->K*+,rho-; 0.089557 1 /Herwig/Decays/TVV decaymode K*_20->K*0,pi0; 0.08254 1 /Herwig/Decays/TensorVP decaymode K*_20->K+,rho-; 0.058145 1 /Herwig/Decays/TensorVP decaymode K*_20->K*0,rho0; 0.044779 1 /Herwig/Decays/TVV decaymode K*_20->K0,rho0; 0.029073 1 /Herwig/Decays/TensorVP decaymode K*_20->K0,omega; 0.029073 1 /Herwig/Decays/TensorVP decaymode K*_20->K0,eta; 0.001504 1 /Herwig/Decays/Tensor2PScalar # decaymode K*_2-->Kbar0,pi-; 0.3327 1 /Herwig/Decays/Tensor2PScalar decaymode K*_2-->K-,pi0; 0.16635 1 /Herwig/Decays/Tensor2PScalar decaymode K*_2-->K*bar0,pi-; 0.164683 1 /Herwig/Decays/TensorVP decaymode K*_2-->K*bar0,rho-; 0.089342 1 /Herwig/Decays/TVV decaymode K*_2-->K*-,pi0; 0.082342 1 /Herwig/Decays/TensorVP decaymode K*_2-->Kbar0,rho-; 0.058006 1 /Herwig/Decays/TensorVP decaymode K*_2-->K*-,rho0; 0.044671 1 /Herwig/Decays/TVV decaymode K*_2-->K-,rho0; 0.029003 1 /Herwig/Decays/TensorVP decaymode K*_2-->K-,omega; 0.029003 1 /Herwig/Decays/TensorVP decaymode K*_2-->K-,gamma; 0.0024 1 /Herwig/Decays/TensorVP decaymode K*_2-->K-,eta; 0.0015 1 /Herwig/Decays/Tensor2PScalar # decaymode K*_2bar0->K-,pi+; 0.3335 1 /Herwig/Decays/Tensor2PScalar decaymode K*_2bar0->Kbar0,pi0; 0.16675 1 /Herwig/Decays/Tensor2PScalar decaymode K*_2bar0->K*-,pi+; 0.165079 1 /Herwig/Decays/TensorVP decaymode K*_2bar0->K*-,rho+; 0.089557 1 /Herwig/Decays/TVV decaymode K*_2bar0->K*bar0,pi0; 0.08254 1 /Herwig/Decays/TensorVP decaymode K*_2bar0->K-,rho+; 0.058145 1 /Herwig/Decays/TensorVP decaymode K*_2bar0->K*bar0,rho0; 0.044779 1 /Herwig/Decays/TVV decaymode K*_2bar0->Kbar0,rho0; 0.029073 1 /Herwig/Decays/TensorVP decaymode K*_2bar0->Kbar0,omega; 0.029073 1 /Herwig/Decays/TensorVP decaymode K*_2bar0->Kbar0,eta; 0.001504 1 /Herwig/Decays/Tensor2PScalar # decaymode D*_20->D+,pi-; 0.448087 1 /Herwig/Decays/Tensor2PScalar decaymode D*_20->D0,pi0; 0.224044 1 /Herwig/Decays/Tensor2PScalar decaymode D*_20->D*+,pi-; 0.218579 1 /Herwig/Decays/TensorVP decaymode D*_20->D*0,pi0; 0.10929 1 /Herwig/Decays/TensorVP # decaymode D*_2+->D0,pi+; 0.448087 1 /Herwig/Decays/Tensor2PScalar decaymode D*_2+->D+,pi0; 0.224044 1 /Herwig/Decays/Tensor2PScalar decaymode D*_2+->D*0,pi+; 0.218579 1 /Herwig/Decays/TensorVP decaymode D*_2+->D*+,pi0; 0.10929 1 /Herwig/Decays/TensorVP # decaymode D*_2bar0->D-,pi+; 0.448087 1 /Herwig/Decays/Tensor2PScalar decaymode D*_2bar0->Dbar0,pi0; 0.224044 1 /Herwig/Decays/Tensor2PScalar decaymode D*_2bar0->D*-,pi+; 0.218579 1 /Herwig/Decays/TensorVP decaymode D*_2bar0->D*bar0,pi0; 0.10929 1 /Herwig/Decays/TensorVP # decaymode D*_2-->Dbar0,pi-; 0.448087 1 /Herwig/Decays/Tensor2PScalar decaymode D*_2-->D-,pi0; 0.224044 1 /Herwig/Decays/Tensor2PScalar decaymode D*_2-->D*bar0,pi-; 0.218579 1 /Herwig/Decays/TensorVP decaymode D*_2-->D*-,pi0; 0.10929 1 /Herwig/Decays/TensorVP # decaymode D_s2+->D0,K+; 0.453903 1 /Herwig/Decays/Tensor2PScalar decaymode D_s2+->D+,K0; 0.410175 1 /Herwig/Decays/Tensor2PScalar decaymode D_s2+->D*0,K+; 0.077088 1 /Herwig/Decays/TensorVP decaymode D_s2+->D*+,K0; 0.058834 1 /Herwig/Decays/TensorVP # decaymode D_s2-->Dbar0,K-; 0.453903 1 /Herwig/Decays/Tensor2PScalar decaymode D_s2-->D-,Kbar0; 0.410175 1 /Herwig/Decays/Tensor2PScalar decaymode D_s2-->D*bar0,K-; 0.077088 1 /Herwig/Decays/TensorVP decaymode D_s2-->D*-,Kbar0; 0.058834 1 /Herwig/Decays/TensorVP # decaymode B_20->B+,pi-; 0.345404 1 /Herwig/Decays/Tensor2PScalar decaymode B_20->B*+,pi-; 0.321262 1 /Herwig/Decays/TensorVP decaymode B_20->B0,pi0; 0.172703 1 /Herwig/Decays/Tensor2PScalar decaymode B_20->B*0,pi0; 0.160631 1 /Herwig/Decays/TensorVP # decaymode B_2+->B0,pi+; 0.345404 1 /Herwig/Decays/Tensor2PScalar decaymode B_2+->B*0,pi+; 0.321262 1 /Herwig/Decays/TensorVP decaymode B_2+->B+,pi0; 0.172703 1 /Herwig/Decays/Tensor2PScalar decaymode B_2+->B*+,pi0; 0.160631 1 /Herwig/Decays/TensorVP # decaymode B_2bar0->B-,pi+; 0.345404 1 /Herwig/Decays/Tensor2PScalar decaymode B_2bar0->B*-,pi+; 0.321262 1 /Herwig/Decays/TensorVP decaymode B_2bar0->Bbar0,pi0; 0.172703 1 /Herwig/Decays/Tensor2PScalar decaymode B_2bar0->B*bar0,pi0; 0.160631 1 /Herwig/Decays/TensorVP # decaymode B_2-->Bbar0,pi-; 0.345404 1 /Herwig/Decays/Tensor2PScalar decaymode B_2-->B*bar0,pi-; 0.321262 1 /Herwig/Decays/TensorVP decaymode B_2-->B-,pi0; 0.172703 1 /Herwig/Decays/Tensor2PScalar decaymode B_2-->B*-,pi0; 0.160631 1 /Herwig/Decays/TensorVP # decaymode B_s20->B0,Kbar0; 0.47 1 /Herwig/Decays/Tensor2PScalar decaymode B_s20->B+,K-; 0.47 1 /Herwig/Decays/Tensor2PScalar decaymode B_s20->B*0,Kbar0; 0.03 1 /Herwig/Decays/TensorVP decaymode B_s20->B*+,K-; 0.03 1 /Herwig/Decays/TensorVP # decaymode B_s2bar0->B-,K+; 0.47 1 /Herwig/Decays/Tensor2PScalar decaymode B_s2bar0->Bbar0,K0; 0.47 1 /Herwig/Decays/Tensor2PScalar decaymode B_s2bar0->B*-,K+; 0.03 1 /Herwig/Decays/TensorVP decaymode B_s2bar0->B*bar0,K0; 0.03 1 /Herwig/Decays/TensorVP # decaymode B_c2+->B_c+,gamma; 1 1 /Herwig/Decays/TensorVP # decaymode B_c2-->B_c-,gamma; 1 1 /Herwig/Decays/TensorVP # # the 1^1D_2 multiplet # # decaymode pi_2+->pi+,f_2; 0.546654 1 /Herwig/Decays/DecayME0 decaymode pi_2+->rho0,pi+; 0.150768 1 /Herwig/Decays/DecayME0 decaymode pi_2+->rho+,pi0; 0.150768 1 /Herwig/Decays/DecayME0 decaymode pi_2+->pi+,sigma; 0.084624 1 /Herwig/Decays/Tensor2PScalar decaymode pi_2+->rho+,omega; 0.02629 1 /Herwig/Decays/DecayME0 decaymode pi_2+->K*bar0,K+; 0.020448 1 /Herwig/Decays/DecayME0 decaymode pi_2+->K*+,Kbar0; 0.020448 1 /Herwig/Decays/DecayME0 # decaymode pi_20->pi0,f_2; 0.546654 1 /Herwig/Decays/DecayME0 decaymode pi_20->rho-,pi+; 0.150768 1 /Herwig/Decays/DecayME0 decaymode pi_20->rho+,pi-; 0.150768 1 /Herwig/Decays/DecayME0 decaymode pi_20->pi0,sigma; 0.084624 1 /Herwig/Decays/Tensor2PScalar decaymode pi_20->rho0,omega; 0.02629 1 /Herwig/Decays/DecayME0 decaymode pi_20->K*-,K+; 0.010224 1 /Herwig/Decays/DecayME0 decaymode pi_20->K*bar0,K0; 0.010224 1 /Herwig/Decays/DecayME0 decaymode pi_20->K*0,Kbar0; 0.010224 1 /Herwig/Decays/DecayME0 decaymode pi_20->K*+,K-; 0.010224 1 /Herwig/Decays/DecayME0 # decaymode pi_2-->pi-,f_2; 0.546654 1 /Herwig/Decays/DecayME0 decaymode pi_2-->rho-,pi0; 0.150768 1 /Herwig/Decays/DecayME0 decaymode pi_2-->rho0,pi-; 0.150768 1 /Herwig/Decays/DecayME0 decaymode pi_2-->pi-,sigma; 0.084624 1 /Herwig/Decays/Tensor2PScalar decaymode pi_2-->rho-,omega; 0.02629 1 /Herwig/Decays/DecayME0 decaymode pi_2-->K*-,K0; 0.020448 1 /Herwig/Decays/DecayME0 decaymode pi_2-->K*0,K-; 0.020448 1 /Herwig/Decays/DecayME0 # decaymode eta_2->a_20,pi0; 0.290634 1 /Herwig/Decays/DecayME0 decaymode eta_2->a_2-,pi+; 0.290633 1 /Herwig/Decays/DecayME0 decaymode eta_2->a_2+,pi-; 0.290633 1 /Herwig/Decays/DecayME0 decaymode eta_2->a_0-,pi+; 0.022356 1 /Herwig/Decays/Tensor2PScalar decaymode eta_2->a_00,pi0; 0.022356 1 /Herwig/Decays/Tensor2PScalar decaymode eta_2->a_0+,pi-; 0.022356 1 /Herwig/Decays/Tensor2PScalar decaymode eta_2->K*-,K+; 0.015258 1 /Herwig/Decays/DecayME0 decaymode eta_2->K*bar0,K0; 0.015258 1 /Herwig/Decays/DecayME0 decaymode eta_2->K*0,Kbar0; 0.015258 1 /Herwig/Decays/DecayME0 decaymode eta_2->K*+,K-; 0.015258 1 /Herwig/Decays/DecayME0 # decaymode eta'_2->a_2-,pi+; 0.278395 1 /Herwig/Decays/DecayME0 decaymode eta'_2->a_20,pi0; 0.278395 1 /Herwig/Decays/DecayME0 decaymode eta'_2->a_2+,pi-; 0.278395 1 /Herwig/Decays/DecayME0 decaymode eta'_2->f_2,eta; 0.139195 1 /Herwig/Decays/DecayME0 decaymode eta'_2->a_0-,pi+; 0.00854 1 /Herwig/Decays/Tensor2PScalar decaymode eta'_2->a_00,pi0; 0.00854 1 /Herwig/Decays/Tensor2PScalar decaymode eta'_2->a_0+,pi-; 0.00854 1 /Herwig/Decays/Tensor2PScalar # decaymode eta_b2->h_b,gamma; 0.9 1 /Herwig/Decays/DecayME0 decaymode eta_b2->g,g; 0.1 1 /Herwig/Decays/QDecayME0 # decaymode K_2(1770)+->K+,f_2; 0.74 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)+->K*0,pi+; 0.153333 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)+->K*+,pi0; 0.076667 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)+->K*_20,pi+; 0.02 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)+->K*_2+,pi0; 0.01 1 /Herwig/Decays/DecayME0 # decaymode K_2(1770)0->K0,f_2; 0.74 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)0->K*+,pi-; 0.153333 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)0->K*0,pi0; 0.076667 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)0->K*_2+,pi-; 0.02 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)0->K*_20,pi0; 0.01 1 /Herwig/Decays/DecayME0 # decaymode K_2(1770)-->K-,f_2; 0.74 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)-->K*bar0,pi-; 0.153333 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)-->K*-,pi0; 0.076667 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)-->K*_2bar0,pi-; 0.02 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)-->K*_2-,pi0; 0.01 1 /Herwig/Decays/DecayME0 # decaymode K_2(1770)bar0->Kbar0,f_2; 0.74 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)bar0->K*-,pi+; 0.153333 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)bar0->K*bar0,pi0; 0.076667 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)bar0->K*_2-,pi+; 0.02 1 /Herwig/Decays/DecayME0 decaymode K_2(1770)bar0->K*_2bar0,pi0; 0.01 1 /Herwig/Decays/DecayME0 # # the 1^3D_1 multiplet # # decaymode rho''+->rho+,sigma; 0.209974 1 /Herwig/Decays/DecayME0 decaymode rho''+->h_1,pi+; 0.127484 1 /Herwig/Decays/VAPDecayer decaymode rho''+->pi+,pi0; 0.119985 1 /Herwig/Decays/Vector2Meson decaymode rho''+->pi'0,pi+; 0.112486 1 /Herwig/Decays/Vector2Meson decaymode rho''+->pi'+,pi0; 0.112486 1 /Herwig/Decays/Vector2Meson decaymode rho''+->rho+,eta; 0.092239 1 /Herwig/Decays/VectorVP decaymode rho''+->rho+,rho0; 0.067492 1 /Herwig/Decays/VectorVV decaymode rho''+->a_10,pi+; 0.059993 1 /Herwig/Decays/VAPDecayer decaymode rho''+->a_1+,pi0; 0.059993 1 /Herwig/Decays/VAPDecayer decaymode rho''+->K*bar0,K+; 0.017998 1 /Herwig/Decays/VectorVP decaymode rho''+->K*+,Kbar0; 0.017998 1 /Herwig/Decays/VectorVP decaymode rho''+->K+,Kbar0; 0.001872 1 /Herwig/Decays/Vector2Meson # decaymode rho''0->rho0,sigma; 0.209974 1 /Herwig/Decays/DecayME0 decaymode rho''0->h_1,pi0; 0.127484 1 /Herwig/Decays/VAPDecayer decaymode rho''0->pi+,pi-; 0.119985 1 /Herwig/Decays/Vector2Meson decaymode rho''0->pi'-,pi+; 0.112486 1 /Herwig/Decays/Vector2Meson decaymode rho''0->pi'+,pi-; 0.112486 1 /Herwig/Decays/Vector2Meson decaymode rho''0->rho0,eta; 0.092239 1 /Herwig/Decays/VectorVP decaymode rho''0->rho+,rho-; 0.067492 1 /Herwig/Decays/VectorVV decaymode rho''0->a_1-,pi+; 0.059993 1 /Herwig/Decays/VAPDecayer decaymode rho''0->a_1+,pi-; 0.059993 1 /Herwig/Decays/VAPDecayer decaymode rho''0->K*-,K+; 0.008999 1 /Herwig/Decays/VectorVP decaymode rho''0->K*bar0,K0; 0.008999 1 /Herwig/Decays/VectorVP decaymode rho''0->K*0,Kbar0; 0.008999 1 /Herwig/Decays/VectorVP decaymode rho''0->K*+,K-; 0.008999 1 /Herwig/Decays/VectorVP decaymode rho''0->K-,K+; 0.000936 1 /Herwig/Decays/Vector2Meson decaymode rho''0->Kbar0,K0; 0.000936 1 /Herwig/Decays/Vector2Meson # decaymode rho''-->rho-,sigma; 0.209974 1 /Herwig/Decays/DecayME0 decaymode rho''-->h_1,pi-; 0.127484 1 /Herwig/Decays/VAPDecayer decaymode rho''-->pi-,pi0; 0.119985 1 /Herwig/Decays/Vector2Meson decaymode rho''-->pi'-,pi0; 0.112486 1 /Herwig/Decays/Vector2Meson decaymode rho''-->pi'0,pi-; 0.112486 1 /Herwig/Decays/Vector2Meson decaymode rho''-->rho-,eta; 0.092239 1 /Herwig/Decays/VectorVP decaymode rho''-->rho-,rho0; 0.067492 1 /Herwig/Decays/VectorVV decaymode rho''-->a_1-,pi0; 0.059993 1 /Herwig/Decays/VAPDecayer decaymode rho''-->a_10,pi-; 0.059993 1 /Herwig/Decays/VAPDecayer decaymode rho''-->K*-,K0; 0.017998 1 /Herwig/Decays/VectorVP decaymode rho''-->K*0,K-; 0.017998 1 /Herwig/Decays/VectorVP decaymode rho''-->K-,K0; 0.001872 1 /Herwig/Decays/Vector2Meson # decaymode omega''->omega,pi+,pi-; 0.333333 1 /Herwig/Decays/DecayME0 decaymode omega''->rho-,pi+; 0.166667 1 /Herwig/Decays/VectorVP decaymode omega''->rho+,pi-; 0.166667 1 /Herwig/Decays/VectorVP decaymode omega''->omega,pi0,pi0; 0.166667 1 /Herwig/Decays/DecayME0 decaymode omega''->rho0,pi0; 0.166666 1 /Herwig/Decays/VectorVP # decaymode psi(3770)->D0,Dbar0; 0.595969 1 /Herwig/Decays/Vector2Meson decaymode psi(3770)->D+,D-; 0.400064 1 /Herwig/Decays/Vector2Meson decaymode psi(3770)->Jpsi,pi+,pi-; 0.00193 1 /Herwig/Decays/OniumPiPi decaymode psi(3770)->Jpsi,eta; 0.0009 1 /Herwig/Decays/VectorVP decaymode psi(3770)->Jpsi,pi0,pi0; 0.0008 1 /Herwig/Decays/OniumPiPi decaymode psi(3770)->phi,eta; 0.00031 1 /Herwig/Decays/VectorVP decaymode psi(3770)->e-,e+; 1.1E-5 1 /Herwig/Decays/Vector2Leptons decaymode psi(3770)->mu-,mu+; 1.1E-5 1 /Herwig/Decays/Vector2Leptons decaymode psi(3770)->tau-,tau+; 5.0E-6 1 /Herwig/Decays/Vector2Leptons # decaymode Upsilon_1(1D)->chi_b0,gamma; 0.602 1 /Herwig/Decays/DecayME0 decaymode Upsilon_1(1D)->chi_b1,gamma; 0.318 1 /Herwig/Decays/DecayME0 decaymode Upsilon_1(1D)->g,g,g; 0.062 1 /Herwig/Decays/QDecayME130 decaymode Upsilon_1(1D)->chi_b2,gamma; 0.016 1 /Herwig/Decays/DecayME0 decaymode Upsilon_1(1D)->Upsilon,pi+,pi-; 0.001333 1 /Herwig/Decays/DecayME0 decaymode Upsilon_1(1D)->Upsilon,pi0,pi0; 0.000667 1 /Herwig/Decays/DecayME0 # decaymode K''*+->K0,pi+; 0.258 1 /Herwig/Decays/Vector2Meson decaymode K''*+->K0,rho+; 0.209333 1 /Herwig/Decays/VectorVP decaymode K''*+->K*0,pi+; 0.199333 1 /Herwig/Decays/VectorVP decaymode K''*+->K+,pi0; 0.129 1 /Herwig/Decays/Vector2Meson decaymode K''*+->K+,rho0; 0.104667 1 /Herwig/Decays/VectorVP decaymode K''*+->K*+,pi0; 0.099667 1 /Herwig/Decays/VectorVP # decaymode K''*0->K+,pi-; 0.258 1 /Herwig/Decays/Vector2Meson decaymode K''*0->K+,rho-; 0.209333 1 /Herwig/Decays/VectorVP decaymode K''*0->K*+,pi-; 0.199333 1 /Herwig/Decays/VectorVP decaymode K''*0->K0,pi0; 0.129 1 /Herwig/Decays/Vector2Meson decaymode K''*0->K0,rho0; 0.104667 1 /Herwig/Decays/VectorVP decaymode K''*0->K*0,pi0; 0.099667 1 /Herwig/Decays/VectorVP # decaymode K''*-->Kbar0,pi-; 0.258 1 /Herwig/Decays/Vector2Meson decaymode K''*-->Kbar0,rho-; 0.209333 1 /Herwig/Decays/VectorVP decaymode K''*-->K*bar0,pi-; 0.199333 1 /Herwig/Decays/VectorVP decaymode K''*-->K-,pi0; 0.129 1 /Herwig/Decays/Vector2Meson decaymode K''*-->K-,rho0; 0.104667 1 /Herwig/Decays/VectorVP decaymode K''*-->K*-,pi0; 0.099667 1 /Herwig/Decays/VectorVP # decaymode K''*bar0->K-,pi+; 0.258 1 /Herwig/Decays/Vector2Meson decaymode K''*bar0->K-,rho+; 0.209333 1 /Herwig/Decays/VectorVP decaymode K''*bar0->K*-,pi+; 0.199333 1 /Herwig/Decays/VectorVP decaymode K''*bar0->Kbar0,pi0; 0.129 1 /Herwig/Decays/Vector2Meson decaymode K''*bar0->Kbar0,rho0; 0.104667 1 /Herwig/Decays/VectorVP decaymode K''*bar0->K*bar0,pi0; 0.099667 1 /Herwig/Decays/VectorVP # # the 1^3D_2 multiplet # # decaymode Upsilon_2(1D)->chi_b0,gamma; 0.786 1 /Herwig/Decays/TensorVP decaymode Upsilon_2(1D)->chi_b2,gamma; 0.203 1 /Herwig/Decays/DecayME0 decaymode Upsilon_2(1D)->g,g,g; 0.009 1 /Herwig/Decays/QDecayME130 decaymode Upsilon_2(1D)->Upsilon,pi+,pi-; 0.001333 1 /Herwig/Decays/DecayME0 decaymode Upsilon_2(1D)->Upsilon,pi0,pi0; 0.000667 1 /Herwig/Decays/DecayME0 # decaymode K_2(1820)+->K*_20,pi+; 0.513333 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)+->K*_2+,pi0; 0.256667 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)+->K+,f_2; 0.18 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)+->K*0,pi+; 0.033333 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)+->K*+,pi0; 0.016667 1 /Herwig/Decays/DecayME0 # decaymode K_2(1820)0->K*_2+,pi-; 0.513333 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)0->K*_20,pi0; 0.256667 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)0->K0,f_2; 0.18 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)0->K*+,pi-; 0.033333 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)0->K*0,pi0; 0.016667 1 /Herwig/Decays/DecayME0 # decaymode K_2(1820)-->K*_2bar0,pi-; 0.513333 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)-->K*_2-,pi0; 0.256667 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)-->K-,f_2; 0.18 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)-->K*bar0,pi-; 0.033333 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)-->K*-,pi0; 0.016667 1 /Herwig/Decays/DecayME0 # decaymode K_2(1820)bar0->K*_2-,pi+; 0.513333 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)bar0->K*_2bar0,pi0; 0.256667 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)bar0->Kbar0,f_2; 0.18 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)bar0->K*-,pi+; 0.033333 1 /Herwig/Decays/DecayME0 decaymode K_2(1820)bar0->K*bar0,pi0; 0.016667 1 /Herwig/Decays/DecayME0 # # the 1^3D_3 multiplet # # decaymode rho_3+->pi+,pi0; 0.23581 1 /Herwig/Decays/DecayME0 decaymode rho_3+->a_20,pi+; 0.234443 1 /Herwig/Decays/DecayME0 decaymode rho_3+->a_2+,pi0; 0.234443 1 /Herwig/Decays/DecayME0 decaymode rho_3+->pi+,omega; 0.16 1 /Herwig/Decays/DecayME0 decaymode rho_3+->rho+,rho0; 0.081547 1 /Herwig/Decays/DecayME0 decaymode rho_3+->K*bar0,K+; 0.018985 1 /Herwig/Decays/DecayME0 decaymode rho_3+->K*+,Kbar0; 0.018985 1 /Herwig/Decays/DecayME0 decaymode rho_3+->K+,Kbar0; 0.015787 1 /Herwig/Decays/DecayME0 # decaymode rho_30->pi+,pi-; 0.235811 1 /Herwig/Decays/DecayME0 decaymode rho_30->a_2-,pi+; 0.234443 1 /Herwig/Decays/DecayME0 decaymode rho_30->a_2+,pi-; 0.234443 1 /Herwig/Decays/DecayME0 decaymode rho_30->pi0,omega; 0.16 1 /Herwig/Decays/DecayME0 decaymode rho_30->rho+,rho-; 0.081547 1 /Herwig/Decays/DecayME0 decaymode rho_30->K*-,K+; 0.009492 1 /Herwig/Decays/DecayME0 decaymode rho_30->K*bar0,K0; 0.009492 1 /Herwig/Decays/DecayME0 decaymode rho_30->K*0,Kbar0; 0.009492 1 /Herwig/Decays/DecayME0 decaymode rho_30->K*+,K-; 0.009492 1 /Herwig/Decays/DecayME0 decaymode rho_30->K0,Kbar0; 0.007894 1 /Herwig/Decays/DecayME0 decaymode rho_30->K+,K-; 0.007894 1 /Herwig/Decays/DecayME0 # decaymode rho_3-->pi-,pi0; 0.23581 1 /Herwig/Decays/DecayME0 decaymode rho_3-->a_2-,pi0; 0.234443 1 /Herwig/Decays/DecayME0 decaymode rho_3-->a_20,pi-; 0.234443 1 /Herwig/Decays/DecayME0 decaymode rho_3-->pi-,omega; 0.16 1 /Herwig/Decays/DecayME0 decaymode rho_3-->rho-,rho0; 0.081547 1 /Herwig/Decays/DecayME0 decaymode rho_3-->K*-,K0; 0.018985 1 /Herwig/Decays/DecayME0 decaymode rho_3-->K*0,K-; 0.018985 1 /Herwig/Decays/DecayME0 decaymode rho_3-->K-,K0; 0.015787 1 /Herwig/Decays/DecayME0 # decaymode omega_3->rho0,pi0; 0.194933 1 /Herwig/Decays/DecayME0 decaymode omega_3->rho-,pi+; 0.194932 1 /Herwig/Decays/DecayME0 decaymode omega_3->rho+,pi-; 0.194932 1 /Herwig/Decays/DecayME0 decaymode omega_3->b_1-,pi+; 0.138401 1 /Herwig/Decays/DecayME0 decaymode omega_3->b_10,pi0; 0.138401 1 /Herwig/Decays/DecayME0 decaymode omega_3->b_1+,pi-; 0.138401 1 /Herwig/Decays/DecayME0 # decaymode phi_3->K0,Kbar0; 0.322582 1 /Herwig/Decays/DecayME0 decaymode phi_3->K+,K-; 0.322582 1 /Herwig/Decays/DecayME0 decaymode phi_3->K*-,K+; 0.088709 1 /Herwig/Decays/DecayME0 decaymode phi_3->K*bar0,K0; 0.088709 1 /Herwig/Decays/DecayME0 decaymode phi_3->K*0,Kbar0; 0.088709 1 /Herwig/Decays/DecayME0 decaymode phi_3->K*+,K-; 0.088709 1 /Herwig/Decays/DecayME0 # decaymode Upsilon_3(1D)->chi_b2,gamma; 0.954 1 /Herwig/Decays/DecayME0 decaymode Upsilon_3(1D)->g,g,g; 0.043 1 /Herwig/Decays/DecayME0 decaymode Upsilon_3(1D)->Upsilon,pi+,pi-; 0.002 1 /Herwig/Decays/DecayME0 decaymode Upsilon_3(1D)->Upsilon,pi0,pi0; 0.001 1 /Herwig/Decays/DecayME0 # decaymode K_3*+->K+,eta; 0.300601 1 /Herwig/Decays/DecayME0 decaymode K_3*+->K0,rho+; 0.207081 1 /Herwig/Decays/DecayME0 decaymode K_3*+->K*0,pi+; 0.133601 1 /Herwig/Decays/DecayME0 decaymode K_3*+->K0,pi+; 0.125585 1 /Herwig/Decays/DecayME0 decaymode K_3*+->K+,rho0; 0.10354 1 /Herwig/Decays/DecayME0 decaymode K_3*+->K*+,pi0; 0.0668 1 /Herwig/Decays/DecayME0 decaymode K_3*+->K+,pi0; 0.062792 1 /Herwig/Decays/DecayME0 # decaymode K_3*0->K0,eta; 0.300601 1 /Herwig/Decays/DecayME0 decaymode K_3*0->K+,rho-; 0.207081 1 /Herwig/Decays/DecayME0 decaymode K_3*0->K*+,pi-; 0.133601 1 /Herwig/Decays/DecayME0 decaymode K_3*0->K+,pi-; 0.125585 1 /Herwig/Decays/DecayME0 decaymode K_3*0->K0,rho0; 0.10354 1 /Herwig/Decays/DecayME0 decaymode K_3*0->K*0,pi0; 0.0668 1 /Herwig/Decays/DecayME0 decaymode K_3*0->K0,pi0; 0.062792 1 /Herwig/Decays/DecayME0 # decaymode K_3*-->K-,eta; 0.300601 1 /Herwig/Decays/DecayME0 decaymode K_3*-->Kbar0,rho-; 0.207081 1 /Herwig/Decays/DecayME0 decaymode K_3*-->K*bar0,pi-; 0.133601 1 /Herwig/Decays/DecayME0 decaymode K_3*-->Kbar0,pi-; 0.125585 1 /Herwig/Decays/DecayME0 decaymode K_3*-->K-,rho0; 0.10354 1 /Herwig/Decays/DecayME0 decaymode K_3*-->K*-,pi0; 0.0668 1 /Herwig/Decays/DecayME0 decaymode K_3*-->K-,pi0; 0.062792 1 /Herwig/Decays/DecayME0 # decaymode K_3*bar0->Kbar0,eta; 0.300601 1 /Herwig/Decays/DecayME0 decaymode K_3*bar0->K-,rho+; 0.207081 1 /Herwig/Decays/DecayME0 decaymode K_3*bar0->K*-,pi+; 0.133601 1 /Herwig/Decays/DecayME0 decaymode K_3*bar0->K-,pi+; 0.125585 1 /Herwig/Decays/DecayME0 decaymode K_3*bar0->Kbar0,rho0; 0.10354 1 /Herwig/Decays/DecayME0 decaymode K_3*bar0->K*bar0,pi0; 0.0668 1 /Herwig/Decays/DecayME0 decaymode K_3*bar0->Kbar0,pi0; 0.062792 1 /Herwig/Decays/DecayME0 # # the 1^3F_4 multiplet # # # the 2^1S_0 multiplet # # decaymode pi'+->rho0,pi+; 0.5 1 /Herwig/Decays/PPVDecayer decaymode pi'+->rho+,pi0; 0.5 1 /Herwig/Decays/PPVDecayer # decaymode pi'0->rho-,pi+; 0.5 1 /Herwig/Decays/PPVDecayer decaymode pi'0->rho+,pi-; 0.5 1 /Herwig/Decays/PPVDecayer # decaymode pi'-->rho-,pi0; 0.5 1 /Herwig/Decays/PPVDecayer decaymode pi'-->rho0,pi-; 0.5 1 /Herwig/Decays/PPVDecayer # decaymode eta(1295)->sigma,eta; 0.349999 1 /Herwig/Decays/ScalarSS decaymode eta(1295)->a_0-,pi+; 0.216667 1 /Herwig/Decays/ScalarSS decaymode eta(1295)->a_00,pi0; 0.216667 1 /Herwig/Decays/ScalarSS decaymode eta(1295)->a_0+,pi-; 0.216667 1 /Herwig/Decays/ScalarSS # decaymode eta(1475)->K*-,K+; 0.25 1 /Herwig/Decays/PPVDecayer decaymode eta(1475)->K*bar0,K0; 0.25 1 /Herwig/Decays/PPVDecayer decaymode eta(1475)->K*0,Kbar0; 0.25 1 /Herwig/Decays/PPVDecayer decaymode eta(1475)->K*+,K-; 0.25 1 /Herwig/Decays/PPVDecayer # decaymode eta_c(2S)->g,g; 0.9752 1 /Herwig/Decays/QDecayME0 decaymode eta_c(2S)->eta_c,pi+,pi-; 0.0125 1 /Herwig/Decays/DecayME0 decaymode eta_c(2S)->eta_c,pi0,pi0; 0.0063 1 /Herwig/Decays/DecayME0 decaymode eta_c(2S)->h_c,gamma; 0.006 1 /Herwig/Decays/DecayME0 # decaymode eta_b(2S)->g,g; 0.9943 1 /Herwig/Decays/QDecayME0 decaymode eta_b(2S)->h_b,gamma; 0.0057 1 /Herwig/Decays/DecayME0 # decaymode K'+->K*_00,pi+; 0.3 1 /Herwig/Decays/ScalarSS decaymode K'+->K*0,pi+; 0.279487 1 /Herwig/Decays/PPVDecayer decaymode K'+->K*_0+,pi0; 0.15 1 /Herwig/Decays/ScalarSS decaymode K'+->K*+,pi0; 0.139744 1 /Herwig/Decays/PPVDecayer decaymode K'+->K0,rho+; 0.087179 1 /Herwig/Decays/PPVDecayer decaymode K'+->K+,rho0; 0.04359 1 /Herwig/Decays/PPVDecayer # decaymode K'0->K*_0+,pi-; 0.3 1 /Herwig/Decays/ScalarSS decaymode K'0->K*+,pi-; 0.279487 1 /Herwig/Decays/PPVDecayer decaymode K'0->K*_00,pi0; 0.15 1 /Herwig/Decays/ScalarSS decaymode K'0->K*0,pi0; 0.139744 1 /Herwig/Decays/PPVDecayer decaymode K'0->K+,rho-; 0.087179 1 /Herwig/Decays/PPVDecayer decaymode K'0->K0,rho0; 0.04359 1 /Herwig/Decays/PPVDecayer # decaymode K'-->K*_0bar0,pi-; 0.3 1 /Herwig/Decays/ScalarSS decaymode K'-->K*bar0,pi-; 0.279487 1 /Herwig/Decays/PPVDecayer decaymode K'-->K*_0-,pi0; 0.15 1 /Herwig/Decays/ScalarSS decaymode K'-->K*-,pi0; 0.139744 1 /Herwig/Decays/PPVDecayer decaymode K'-->Kbar0,rho-; 0.087179 1 /Herwig/Decays/PPVDecayer decaymode K'-->K-,rho0; 0.04359 1 /Herwig/Decays/PPVDecayer # decaymode K'bar0->K*_0-,pi+; 0.3 1 /Herwig/Decays/ScalarSS decaymode K'bar0->K*-,pi+; 0.279487 1 /Herwig/Decays/PPVDecayer decaymode K'bar0->K*_0bar0,pi0; 0.15 1 /Herwig/Decays/ScalarSS decaymode K'bar0->K*bar0,pi0; 0.139744 1 /Herwig/Decays/PPVDecayer decaymode K'bar0->K-,rho+; 0.087179 1 /Herwig/Decays/PPVDecayer decaymode K'bar0->Kbar0,rho0; 0.04359 1 /Herwig/Decays/PPVDecayer # # the 2^3S_1 multiplet # # decaymode rho'+->pi+,pi0; 0.270072 1 /Herwig/Decays/Vector2Meson decaymode rho'+->pi'0,pi+; 0.135037 1 /Herwig/Decays/Vector2Meson decaymode rho'+->pi'+,pi0; 0.135037 1 /Herwig/Decays/Vector2Meson decaymode rho'+->rho+,sigma; 0.124088 1 /Herwig/Decays/VVSDecayer decaymode rho'+->a_10,pi+; 0.09854 1 /Herwig/Decays/VAPDecayer decaymode rho'+->a_1+,pi0; 0.09854 1 /Herwig/Decays/VAPDecayer decaymode rho'+->rho+,rho0; 0.080292 1 /Herwig/Decays/VectorVV decaymode rho'+->h_1,pi+; 0.058394 1 /Herwig/Decays/VAPDecayer # decaymode rho'0->pi+,pi-; 0.270072 1 /Herwig/Decays/Vector2Meson decaymode rho'0->pi'-,pi+; 0.135037 1 /Herwig/Decays/Vector2Meson decaymode rho'0->pi'+,pi-; 0.135037 1 /Herwig/Decays/Vector2Meson decaymode rho'0->rho0,sigma; 0.124088 1 /Herwig/Decays/VVSDecayer decaymode rho'0->a_1-,pi+; 0.09854 1 /Herwig/Decays/VAPDecayer decaymode rho'0->a_1+,pi-; 0.09854 1 /Herwig/Decays/VAPDecayer decaymode rho'0->rho+,rho-; 0.080292 1 /Herwig/Decays/VectorVV decaymode rho'0->h_1,pi0; 0.058394 1 /Herwig/Decays/VAPDecayer # decaymode rho'-->pi-,pi0; 0.270072 1 /Herwig/Decays/Vector2Meson decaymode rho'-->pi'-,pi0; 0.135037 1 /Herwig/Decays/Vector2Meson decaymode rho'-->pi'0,pi-; 0.135037 1 /Herwig/Decays/Vector2Meson decaymode rho'-->rho-,sigma; 0.124088 1 /Herwig/Decays/VVSDecayer decaymode rho'-->a_1-,pi0; 0.09854 1 /Herwig/Decays/VAPDecayer decaymode rho'-->a_10,pi-; 0.09854 1 /Herwig/Decays/VAPDecayer decaymode rho'-->rho-,rho0; 0.080292 1 /Herwig/Decays/VectorVV decaymode rho'-->h_1,pi-; 0.058394 1 /Herwig/Decays/VAPDecayer # decaymode omega'->rho-,pi+; 0.233 1 /Herwig/Decays/VectorVP decaymode omega'->rho0,pi0; 0.233 1 /Herwig/Decays/VectorVP decaymode omega'->rho+,pi-; 0.233 1 /Herwig/Decays/VectorVP decaymode omega'->omega,sigma; 0.112876 1 /Herwig/Decays/DecayME0 decaymode omega'->b_1-,pi+; 0.062708 1 /Herwig/Decays/VAPDecayer decaymode omega'->b_10,pi0; 0.062708 1 /Herwig/Decays/VAPDecayer decaymode omega'->b_1+,pi-; 0.062708 1 /Herwig/Decays/VAPDecayer # decaymode phi'->K*-,K+; 0.233645 1 /Herwig/Decays/VectorVP decaymode phi'->K*bar0,K0; 0.233645 1 /Herwig/Decays/VectorVP decaymode phi'->K*0,Kbar0; 0.233645 1 /Herwig/Decays/VectorVP decaymode phi'->K*+,K-; 0.233645 1 /Herwig/Decays/VectorVP decaymode phi'->K_L0,K_S0; 0.03271 1 /Herwig/Decays/Vector2Meson decaymode phi'->K+,K-; 0.03271 1 /Herwig/Decays/Vector2Meson # decaymode psi(2S)->Jpsi,pi+,pi-; 0.318 1 /Herwig/Decays/OniumPiPi decaymode psi(2S)->g,g,g; 0.183208 1 /Herwig/Decays/QDecayME130 decaymode psi(2S)->Jpsi,pi0,pi0; 0.1646 1 /Herwig/Decays/OniumPiPi decaymode psi(2S)->chi_c0,gamma; 0.092 1 /Herwig/Decays/VVSDecayer decaymode psi(2S)->chi_c1,gamma; 0.087 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->chi_c2,gamma; 0.081 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->Jpsi,eta; 0.0309 1 /Herwig/Decays/VectorVP decaymode psi(2S)->e-,e+; 0.00735 1 /Herwig/Decays/Vector2Leptons decaymode psi(2S)->mu-,mu+; 0.00734 1 /Herwig/Decays/Vector2Leptons decaymode psi(2S)->tau-,tau+; 0.00285 1 /Herwig/Decays/Vector2Leptons decaymode psi(2S)->eta_c,gamma; 0.0026 1 /Herwig/Decays/VectorVP decaymode psi(2S)->Jpsi,pi0; 0.00126 1 /Herwig/Decays/VectorVP decaymode psi(2S)->K_1-,K+; 0.001 1 /Herwig/Decays/VAPDecayer decaymode psi(2S)->K_1bar0,K0; 0.001 1 /Herwig/Decays/VAPDecayer decaymode psi(2S)->K_10,Kbar0; 0.001 1 /Herwig/Decays/VAPDecayer decaymode psi(2S)->K_1+,K-; 0.001 1 /Herwig/Decays/VAPDecayer decaymode psi(2S)->h_c,pi0; 0.001 1 /Herwig/Decays/VAPDecayer decaymode psi(2S)->eta,pi+,pi-,pi0; 0.00095 1 /Herwig/Decays/Mambo decaymode psi(2S)->p+,pbar-,pi+,pi-,pi0; 0.00073 1 /Herwig/Decays/Mambo decaymode psi(2S)->eta',pi+,pi-,pi0; 0.00045 1 /Herwig/Decays/Mambo decaymode psi(2S)->pi+,pi-,p+,pbar-; 0.0004 1 /Herwig/Decays/Mambo decaymode psi(2S)->K*-,K0,rho+; 0.00035 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*bar0,K+,rho-; 0.00035 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*0,K-,rho+; 0.00035 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*+,Kbar0,rho-; 0.00035 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*-,K0,pi+; 0.000335 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*bar0,K+,pi-; 0.000335 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*0,K-,pi+; 0.000335 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*+,Kbar0,pi-; 0.000335 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->b_1-,pi+; 0.0003 1 /Herwig/Decays/VAPDecayer decaymode psi(2S)->b_10,pi0; 0.0003 1 /Herwig/Decays/VAPDecayer decaymode psi(2S)->b_1+,pi-; 0.0003 1 /Herwig/Decays/VAPDecayer decaymode psi(2S)->Lambda0,Lambdabar0,pi+,pi-; 0.00028 1 /Herwig/Decays/Mambo decaymode psi(2S)->n0,pbar-,pi+; 0.000266 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->p+,nbar0,pi-; 0.000266 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->n0,nbar0; 0.000265 1 /Herwig/Decays/Vector2Leptons decaymode psi(2S)->p+,pbar-; 0.000265 1 /Herwig/Decays/Vector2Leptons decaymode psi(2S)->Lambda0,Lambdabar0; 0.00025 1 /Herwig/Decays/Vector2Leptons decaymode psi(2S)->Sigma-,Sigmabar+; 0.00023 1 /Herwig/Decays/Vector2Leptons decaymode psi(2S)->Sigma0,Sigmabar0; 0.00023 1 /Herwig/Decays/Vector2Leptons decaymode psi(2S)->Sigma+,Sigmabar-; 0.00023 1 /Herwig/Decays/Vector2Leptons decaymode psi(2S)->rho-,pi+,pi0; 0.00022 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->rho0,pi+,pi-; 0.00022 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->rho+,pi-,pi0; 0.00022 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->f_2,gamma; 0.00021 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->omega,f_2; 0.0002 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->Xi-,Xibar+; 0.0002 1 /Herwig/Decays/Vector2Leptons decaymode psi(2S)->Xi0,Xibar0; 0.0002 1 /Herwig/Decays/Vector2Leptons decaymode psi(2S)->K*-,K*_2+; 0.00019 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*bar0,K*_20; 0.00019 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->omega,f_0(1710); 0.00019 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*0,K*_2bar0; 0.00019 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*+,K*_2-; 0.00019 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->omega,K0,Kbar0; 0.000185 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->omega,K+,K-; 0.000185 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->Lambdabar0,p+,K-,pi+,pi-; 0.00018 1 /Herwig/Decays/Mambo decaymode psi(2S)->Lambda0,pbar-,K+,pi+,pi-; 0.00018 1 /Herwig/Decays/Mambo decaymode psi(2S)->K*-,K+,rho0; 0.000175 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*bar0,K0,rho0; 0.000175 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*0,Kbar0,rho0; 0.000175 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*+,K-,rho0; 0.000175 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*-,K+,pi0; 0.000168 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*bar0,K0,pi0; 0.000168 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*0,Kbar0,pi0; 0.000168 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K*+,K-,pi0; 0.000168 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->eta',gamma; 0.00015 1 /Herwig/Decays/VectorVP decaymode psi(2S)->pi+,pi-,pi0; 0.000136 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->n0,nbar0,pi0; 0.000133 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->p+,pbar-,pi0; 0.000133 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->Delta-,Deltabar+; 0.000128 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->Delta0,Deltabar0; 0.000128 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->Delta+,Deltabar-; 0.000128 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->Delta++,Deltabar--; 0.000128 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K+,K-,K+,K-,pi0; 0.00011 1 /Herwig/Decays/Mambo decaymode psi(2S)->Sigma*-,Sigma*bar+; 0.00011 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->Sigma*0,Sigma*bar0; 0.00011 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->Sigma*+,Sigma*bar-; 0.00011 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->Kbar0,K*0; 0.000109 1 /Herwig/Decays/VectorVP decaymode psi(2S)->K0,K*bar0; 0.000109 1 /Herwig/Decays/VectorVP decaymode psi(2S)->Lambdabar0,n0,Kbar0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->Lambdabar0,p+,K-; 0.0001 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->phi,f_0; 0.0001 1 /Herwig/Decays/VVSDecayer decaymode psi(2S)->n0,pbar-,rho+; 0.0001 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->p+,nbar0,rho-; 0.0001 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->Lambda0,pbar-,K+; 0.0001 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->Lambda0,nbar0,K0; 0.0001 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->f_0(1710),gamma; 0.0001 1 /Herwig/Decays/VVSDecayer decaymode psi(2S)->rho-,a_2+; 8.7E-5 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->rho0,a_20; 8.7E-5 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->rho+,a_2-; 8.7E-5 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->pi+,pi-; 8.0E-5 1 /Herwig/Decays/Vector2Meson decaymode psi(2S)->phi,K0,Kbar0; 7.0E-5 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->phi,K+,K-; 7.0E-5 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->omega,n0,nbar0; 6.9E-5 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->omega,p+,pbar-; 6.9E-5 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K+,K-,K+,K-; 6.0E-5 1 /Herwig/Decays/Mambo decaymode psi(2S)->n0,nbar0,eta; 6.0E-5 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->p+,pbar-,eta; 6.0E-5 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->K_L0,K_S0; 5.3E-5 1 /Herwig/Decays/Vector2Meson decaymode psi(2S)->K+,K-; 5.3E-5 1 /Herwig/Decays/Vector2Meson decaymode psi(2S)->phi,pi+,pi-; 5.3E-5 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->n0,nbar0,rho0; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->p+,pbar-,rho0; 5.0E-5 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->phi,f'_2; 4.4E-5 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->omega,eta'; 3.2E-5 1 /Herwig/Decays/VectorVP decaymode psi(2S)->phi,eta'; 3.1E-5 1 /Herwig/Decays/VectorVP decaymode psi(2S)->phi,eta; 2.8E-5 1 /Herwig/Decays/VectorVP decaymode psi(2S)->phi,pi0,pi0; 2.7E-5 1 /Herwig/Decays/DecayME0 decaymode psi(2S)->p+,pbar-,K+,K-; 2.7E-5 1 /Herwig/Decays/Mambo decaymode psi(2S)->rho0,eta; 2.2E-5 1 /Herwig/Decays/VectorVP decaymode psi(2S)->omega,pi0; 2.1E-5 1 /Herwig/Decays/VectorVP decaymode psi(2S)->pi+,pi-,pi+,pi-; 2.0E-5 1 /Herwig/Decays/Mambo decaymode psi(2S)->rho0,eta'; 1.9E-5 1 /Herwig/Decays/VectorVP decaymode psi(2S)->K-,K*+; 1.7E-5 1 /Herwig/Decays/VectorVP decaymode psi(2S)->K+,K*-; 1.7E-5 1 /Herwig/Decays/VectorVP decaymode psi(2S)->rho-,pi+; 1.1E-5 1 /Herwig/Decays/VectorVP decaymode psi(2S)->rho0,pi0; 1.1E-5 1 /Herwig/Decays/VectorVP decaymode psi(2S)->rho+,pi-; 1.1E-5 1 /Herwig/Decays/VectorVP # decaymode Upsilon(2S)->g,g,g; 0.4077 1 /Herwig/Decays/QDecayME130 decaymode Upsilon(2S)->Upsilon,pi+,pi-; 0.188 1 /Herwig/Decays/OniumPiPi decaymode Upsilon(2S)->Upsilon,pi0,pi0; 0.09 1 /Herwig/Decays/OniumPiPi decaymode Upsilon(2S)->chi_b2,gamma; 0.0715 1 /Herwig/Decays/DecayME0 decaymode Upsilon(2S)->chi_b1,gamma; 0.069 1 /Herwig/Decays/DecayME0 decaymode Upsilon(2S)->chi_b0,gamma; 0.038 1 /Herwig/Decays/VVSDecayer decaymode Upsilon(2S)->u,ubar; 0.0271 1 /Herwig/Decays/QDecayME0 decaymode Upsilon(2S)->c,cbar; 0.0271 1 /Herwig/Decays/QDecayME0 decaymode Upsilon(2S)->e-,e+; 0.0192 1 /Herwig/Decays/Vector2Leptons decaymode Upsilon(2S)->mu-,mu+; 0.0192 1 /Herwig/Decays/Vector2Leptons decaymode Upsilon(2S)->tau-,tau+; 0.019 1 /Herwig/Decays/Vector2Leptons decaymode Upsilon(2S)->g,g,gamma; 0.0106 1 /Herwig/Decays/QDecayME130 decaymode Upsilon(2S)->d,dbar; 0.0068 1 /Herwig/Decays/QDecayME0 decaymode Upsilon(2S)->s,sbar; 0.0068 1 /Herwig/Decays/QDecayME0 # decaymode K'*+->K*0,pi+; 0.622667 1 /Herwig/Decays/VectorVP decaymode K'*+->K*+,pi0; 0.311333 1 /Herwig/Decays/VectorVP decaymode K'*+->K0,pi+; 0.044 1 /Herwig/Decays/Vector2Meson decaymode K'*+->K+,pi0; 0.022 1 /Herwig/Decays/Vector2Meson # decaymode K'*0->K*+,pi-; 0.622667 1 /Herwig/Decays/VectorVP decaymode K'*0->K*0,pi0; 0.311333 1 /Herwig/Decays/VectorVP decaymode K'*0->K+,pi-; 0.044 1 /Herwig/Decays/Vector2Meson decaymode K'*0->K0,pi0; 0.022 1 /Herwig/Decays/Vector2Meson # decaymode K'*-->K*bar0,pi-; 0.622667 1 /Herwig/Decays/VectorVP decaymode K'*-->K*-,pi0; 0.311333 1 /Herwig/Decays/VectorVP decaymode K'*-->Kbar0,pi-; 0.044 1 /Herwig/Decays/Vector2Meson decaymode K'*-->K-,pi0; 0.022 1 /Herwig/Decays/Vector2Meson # decaymode K'*bar0->K*-,pi+; 0.622667 1 /Herwig/Decays/VectorVP decaymode K'*bar0->K*bar0,pi0; 0.311333 1 /Herwig/Decays/VectorVP decaymode K'*bar0->K-,pi+; 0.044 1 /Herwig/Decays/Vector2Meson decaymode K'*bar0->Kbar0,pi0; 0.022 1 /Herwig/Decays/Vector2Meson # # the 2^1P_1 multiplet # # decaymode h_b(2P)->g,g,g; 0.628 1 /Herwig/Decays/QDecayME130 decaymode h_b(2P)->eta_b(2S),gamma; 0.193 1 /Herwig/Decays/DecayME0 decaymode h_b(2P)->eta_b,gamma; 0.125 1 /Herwig/Decays/DecayME0 decaymode h_b(2P)->eta_b2,gamma; 0.034 1 /Herwig/Decays/DecayME0 decaymode h_b(2P)->g,g,gamma; 0.02 1 /Herwig/Decays/QDecayME130 # # the 2^3P_0 multiplet # # decaymode chi_b0(2P)->g,g; 0.9435 1 /Herwig/Decays/QDecayME0 decaymode chi_b0(2P)->Upsilon(2S),gamma; 0.046 1 /Herwig/Decays/DecayME0 decaymode chi_b0(2P)->Upsilon,gamma; 0.009 1 /Herwig/Decays/DecayME0 decaymode chi_b0(2P)->Upsilon_1(1D),gamma; 0.0015 1 /Herwig/Decays/DecayME0 # # the 2^3P_1 multiplet # # decaymode chi_b1(2P)->g,g; 0.6468 1 /Herwig/Decays/QDecayME0 decaymode chi_b1(2P)->Upsilon(2S),gamma; 0.21 1 /Herwig/Decays/DecayME0 decaymode chi_b1(2P)->Upsilon,gamma; 0.085 1 /Herwig/Decays/DecayME0 decaymode chi_b1(2P)->Upsilon_2(1D),gamma; 0.0236 1 /Herwig/Decays/DecayME0 decaymode chi_b1(2P)->omega,Upsilon; 0.0163 1 /Herwig/Decays/DecayME0 decaymode chi_b1(2P)->Upsilon_1(1D),gamma; 0.0097 1 /Herwig/Decays/DecayME0 decaymode chi_b1(2P)->chi_b1,pi+,pi-; 0.0057 1 /Herwig/Decays/DecayME0 decaymode chi_b1(2P)->chi_b1,pi0,pi0; 0.0029 1 /Herwig/Decays/DecayME0 # # the 2^3P_2 multiplet # # decaymode chi_c2(2P)->D0,Dbar0; 0.5291 1 /Herwig/Decays/Tensor2PScalar decaymode chi_c2(2P)->D+,D-; 0.4709 1 /Herwig/Decays/Tensor2PScalar # decaymode chi_b2(2P)->g,g; 0.73267 1 /Herwig/Decays/QDecayME0 decaymode chi_b2(2P)->Upsilon(2S),gamma; 0.162 1 /Herwig/Decays/TVV decaymode chi_b2(2P)->Upsilon,gamma; 0.071 1 /Herwig/Decays/TVV decaymode chi_b2(2P)->Upsilon_3(1D),gamma; 0.0142 1 /Herwig/Decays/DecayME0 decaymode chi_b2(2P)->omega,Upsilon; 0.011 1 /Herwig/Decays/TVV decaymode chi_b2(2P)->chi_b2,pi+,pi-; 0.004 1 /Herwig/Decays/DecayME0 decaymode chi_b2(2P)->Upsilon_2(1D),gamma; 0.0029 1 /Herwig/Decays/DecayME0 decaymode chi_b2(2P)->chi_b2,pi0,pi0; 0.002 1 /Herwig/Decays/DecayME0 decaymode chi_b2(2P)->Upsilon_1(1D),gamma; 0.00023 1 /Herwig/Decays/DecayME0 # # the 2^1D_2 multiplet # # # the 2^3D_1 multiplet # # decaymode Upsilon_1(2D)->chi_b0(2P),gamma; 0.5381 1 /Herwig/Decays/DecayME0 decaymode Upsilon_1(2D)->chi_b1(2P),gamma; 0.2728 1 /Herwig/Decays/DecayME0 decaymode Upsilon_1(2D)->chi_b0,gamma; 0.1046 1 /Herwig/Decays/DecayME0 decaymode Upsilon_1(2D)->chi_b1,gamma; 0.0663 1 /Herwig/Decays/DecayME0 decaymode Upsilon_1(2D)->chi_b2(2P),gamma; 0.0144 1 /Herwig/Decays/DecayME0 decaymode Upsilon_1(2D)->chi_b2,gamma; 0.0038 1 /Herwig/Decays/DecayME0 # # the 2^3D_2 multiplet # # decaymode Upsilon_2(2D)->chi_b1(2P),gamma; 0.6382 1 /Herwig/Decays/DecayME0 decaymode Upsilon_2(2D)->chi_b2(2P),gamma; 0.1721 1 /Herwig/Decays/DecayME0 decaymode Upsilon_2(2D)->chi_b1,gamma; 0.1461 1 /Herwig/Decays/DecayME0 decaymode Upsilon_2(2D)->chi_b2,gamma; 0.0436 1 /Herwig/Decays/DecayME0 # # the 2^3D_3 multiplet # # decaymode Upsilon_3(2D)->chi_b2(2P),gamma; 0.8053 1 /Herwig/Decays/DecayME0 decaymode Upsilon_3(2D)->chi_b2,gamma; 0.1947 1 /Herwig/Decays/DecayME0 # # the 3^1S_0 multiplet # # decaymode eta_b(3S)->g,g; 0.9983 1 /Herwig/Decays/DecayME0 decaymode eta_b(3S)->h_b(2P),gamma; 0.0012 1 /Herwig/Decays/DecayME0 decaymode eta_b(3S)->h_b,gamma; 0.0005 1 /Herwig/Decays/DecayME0 # # the 3^3S_1 multiplet # # decaymode Upsilon(3S)->g,g,g; 0.3649 1 /Herwig/Decays/QDecayME130 decaymode Upsilon(3S)->chi_b2(2P),gamma; 0.131 1 /Herwig/Decays/DecayME0 decaymode Upsilon(3S)->chi_b1(2P),gamma; 0.126 1 /Herwig/Decays/DecayME0 decaymode Upsilon(3S)->chi_b0(2P),gamma; 0.059 1 /Herwig/Decays/VVSDecayer decaymode Upsilon(3S)->Upsilon(2S),gamma,gamma; 0.05 1 /Herwig/Decays/DecayME0 decaymode Upsilon(3S)->Upsilon,pi+,pi-; 0.0448 1 /Herwig/Decays/OniumPiPi decaymode Upsilon(3S)->u,ubar; 0.031 1 /Herwig/Decays/QDecayME0 decaymode Upsilon(3S)->c,cbar; 0.031 1 /Herwig/Decays/QDecayME0 decaymode Upsilon(3S)->Upsilon(2S),pi+,pi-; 0.028 1 /Herwig/Decays/OniumPiPi decaymode Upsilon(3S)->e-,e+; 0.0218 1 /Herwig/Decays/Vector2Leptons decaymode Upsilon(3S)->mu-,mu+; 0.0218 1 /Herwig/Decays/Vector2Leptons decaymode Upsilon(3S)->tau-,tau+; 0.0216 1 /Herwig/Decays/Vector2Leptons decaymode Upsilon(3S)->Upsilon,pi0,pi0; 0.0206 1 /Herwig/Decays/OniumPiPi decaymode Upsilon(3S)->Upsilon(2S),pi0,pi0; 0.02 1 /Herwig/Decays/OniumPiPi decaymode Upsilon(3S)->g,g,gamma; 0.0095 1 /Herwig/Decays/QDecayME130 decaymode Upsilon(3S)->d,dbar; 0.008 1 /Herwig/Decays/QDecayME0 decaymode Upsilon(3S)->s,sbar; 0.008 1 /Herwig/Decays/QDecayME0 decaymode Upsilon(3S)->chi_b0,gamma; 0.003 1 /Herwig/Decays/DecayME0 # # the 3^1P_1 multiplet # # # the 3^3P_0 multiplet # # decaymode chi_b0(3P)->g,g; 0.9773 1 /Herwig/Decays/QDecayME0 decaymode chi_b0(3P)->Upsilon(3S),gamma; 0.0105 1 /Herwig/Decays/DecayME0 decaymode chi_b0(3P)->Upsilon,gamma; 0.005 1 /Herwig/Decays/DecayME0 decaymode chi_b0(3P)->Upsilon(2S),gamma; 0.0046 1 /Herwig/Decays/DecayME0 decaymode chi_b0(3P)->Upsilon_1(2D),gamma; 0.0026 1 /Herwig/Decays/DecayME0 # # the 3^3P_1 multiplet # # decaymode chi_b1(3P)->g,g; 0.6925 1 /Herwig/Decays/QDecayME0 decaymode chi_b1(3P)->Upsilon(3S),gamma; 0.1531 1 /Herwig/Decays/DecayME0 decaymode chi_b1(3P)->Upsilon,gamma; 0.0559 1 /Herwig/Decays/DecayME0 decaymode chi_b1(3P)->Upsilon(2S),gamma; 0.054 1 /Herwig/Decays/DecayME0 decaymode chi_b1(3P)->Upsilon_2(2D),gamma; 0.0315 1 /Herwig/Decays/DecayME0 decaymode chi_b1(3P)->Upsilon_1(2D),gamma; 0.013 1 /Herwig/Decays/DecayME0 # # the 3^3P_2 multiplet # # decaymode chi_b2(3P)->g,g; 0.8404 1 /Herwig/Decays/QDecayME0 decaymode chi_b2(3P)->Upsilon(3S),gamma; 0.0827 1 /Herwig/Decays/DecayME0 decaymode chi_b2(3P)->Upsilon,gamma; 0.026 1 /Herwig/Decays/DecayME0 decaymode chi_b2(3P)->Upsilon(2S),gamma; 0.0258 1 /Herwig/Decays/DecayME0 decaymode chi_b2(3P)->Upsilon_3(2D),gamma; 0.0206 1 /Herwig/Decays/DecayME0 decaymode chi_b2(3P)->Upsilon_2(2D),gamma; 0.0042 1 /Herwig/Decays/DecayME0 decaymode chi_b2(3P)->Upsilon_1(2D),gamma; 0.0003 1 /Herwig/Decays/DecayME0 # # the 4^3S_1 multiplet # # decaymode Upsilon(4S)->B+,B-; 0.505812 1 /Herwig/Decays/Vector2Meson decaymode Upsilon(4S)->B0,Bbar0; 0.493811 1 /Herwig/Decays/Vector2Meson decaymode Upsilon(4S)->Upsilon(2S),pi+,pi-; 0.000129 1 /Herwig/Decays/OniumPiPi decaymode Upsilon(4S)->Upsilon,pi+,pi-; 9.0E-5 1 /Herwig/Decays/OniumPiPi decaymode Upsilon(4S)->Upsilon(2S),pi0,pi0; 6.5E-5 1 /Herwig/Decays/OniumPiPi decaymode Upsilon(4S)->Upsilon,pi0,pi0; 4.5E-5 1 /Herwig/Decays/OniumPiPi decaymode Upsilon(4S)->e-,e+; 1.6E-5 1 /Herwig/Decays/Vector2Leptons decaymode Upsilon(4S)->mu-,mu+; 1.6E-5 1 /Herwig/Decays/Vector2Leptons decaymode Upsilon(4S)->tau-,tau+; 1.6E-5 1 /Herwig/Decays/Vector2Leptons # # the 5^3S_1 multiplet # # # The meson which are not part of a multiplet # # decaymode f_0(1500)->pi+,pi-; 0.232667 1 /Herwig/Decays/ScalarSS decaymode f_0(1500)->sigma,sigma; 0.127426 1 /Herwig/Decays/ScalarSS decaymode f_0(1500)->pi0,pi0; 0.116333 1 /Herwig/Decays/ScalarSS decaymode f_0(1500)->pi'-,pi+; 0.081683 1 /Herwig/Decays/ScalarSS decaymode f_0(1500)->pi'0,pi0; 0.081683 1 /Herwig/Decays/ScalarSS decaymode f_0(1500)->pi'+,pi-; 0.081683 1 /Herwig/Decays/ScalarSS decaymode f_0(1500)->eta,eta; 0.051 1 /Herwig/Decays/ScalarSS decaymode f_0(1500)->K0,Kbar0; 0.043 1 /Herwig/Decays/ScalarSS decaymode f_0(1500)->K+,K-; 0.043 1 /Herwig/Decays/ScalarSS decaymode f_0(1500)->rho+,rho-; 0.042475 1 /Herwig/Decays/SVV decaymode f_0(1500)->rho0,rho0; 0.021238 1 /Herwig/Decays/SVV decaymode f_0(1500)->a_1-,pi+; 0.019604 1 /Herwig/Decays/PPVDecayer decaymode f_0(1500)->a_10,pi0; 0.019604 1 /Herwig/Decays/PPVDecayer decaymode f_0(1500)->a_1+,pi-; 0.019604 1 /Herwig/Decays/PPVDecayer decaymode f_0(1500)->eta,eta'; 0.019 1 /Herwig/Decays/ScalarSS # decaymode sigma->pi+,pi-; 0.666667 1 /Herwig/Decays/ScalarSS decaymode sigma->pi0,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode f_0->pi+,pi-; 0.493994 1 /Herwig/Decays/ScalarSS decaymode f_0->pi0,pi0; 0.247 1 /Herwig/Decays/ScalarSS decaymode f_0->K+,K-; 0.139 1 /Herwig/Decays/ScalarSS decaymode f_0->K0,Kbar0; 0.12 1 /Herwig/Decays/ScalarSS decaymode f_0->gamma,gamma; 6.0E-6 1 /Herwig/Decays/DecayME0 # decaymode a_00->eta,pi0; 0.906997 1 /Herwig/Decays/ScalarSS decaymode a_00->K+,K-; 0.049 1 /Herwig/Decays/ScalarSS decaymode a_00->K0,Kbar0; 0.044 1 /Herwig/Decays/ScalarSS decaymode a_00->gamma,gamma; 3.0E-6 1 /Herwig/Decays/DecayME0 # decaymode a_0+->eta,pi+; 0.907 1 /Herwig/Decays/ScalarSS decaymode a_0+->K+,Kbar0; 0.093 1 /Herwig/Decays/ScalarSS # decaymode a_0-->eta,pi-; 0.907 1 /Herwig/Decays/ScalarSS decaymode a_0-->K-,K0; 0.093 1 /Herwig/Decays/ScalarSS # decaymode eta(1405)->eta,sigma; 0.479845 1 /Herwig/Decays/ScalarSS decaymode eta(1405)->a_0-,pi+; 0.159949 1 /Herwig/Decays/ScalarSS decaymode eta(1405)->a_00,pi0; 0.159949 1 /Herwig/Decays/ScalarSS decaymode eta(1405)->a_0+,pi-; 0.159949 1 /Herwig/Decays/ScalarSS decaymode eta(1405)->K*-,K+; 0.010077 1 /Herwig/Decays/PPVDecayer decaymode eta(1405)->K*bar0,K0; 0.010077 1 /Herwig/Decays/PPVDecayer decaymode eta(1405)->K*0,Kbar0; 0.010077 1 /Herwig/Decays/PPVDecayer decaymode eta(1405)->K*+,K-; 0.010077 1 /Herwig/Decays/PPVDecayer # decaymode K_S0->pi+,pi-; 0.69224 1 /Herwig/Decays/DecayME0 decaymode K_S0->pi0,pi0; 0.307006 1 /Herwig/Decays/DecayME0 decaymode K_S0->pi-,e+,nu_e; 0.000352 1 /Herwig/Decays/DecayME101 decaymode K_S0->pi+,e-,nu_ebar; 0.000352 1 /Herwig/Decays/DecayME101 decaymode K_S0->pi+,pi-,e-,e+; 4.7E-5 1 /Herwig/Decays/Mambo decaymode K_S0->gamma,gamma; 3.0E-6 1 /Herwig/Decays/DecayME0 # decaymode K_L0->pi-,e+,nu_e; 0.202618 1 /Herwig/Decays/DecayME101 decaymode K_L0->pi+,e-,nu_ebar; 0.202618 1 /Herwig/Decays/DecayME101 decaymode K_L0->pi0,pi0,pi0; 0.195569 1 /Herwig/Decays/DecayME0 decaymode K_L0->pi-,mu+,nu_mu; 0.135079 1 /Herwig/Decays/DecayME101 decaymode K_L0->pi+,mu-,nu_mubar; 0.135079 1 /Herwig/Decays/DecayME101 decaymode K_L0->pi+,pi-,pi0; 0.125581 1 /Herwig/Decays/DecayME0 decaymode K_L0->pi+,pi-; 0.001976 1 /Herwig/Decays/DecayME0 decaymode K_L0->pi0,pi0; 0.000869 1 /Herwig/Decays/DecayME0 decaymode K_L0->gamma,gamma; 0.000548 1 /Herwig/Decays/DecayME0 decaymode K_L0->pi0,pi-,e+,nu_e; 2.6E-5 1 /Herwig/Decays/Mambo decaymode K_L0->pi0,pi+,e-,nu_ebar; 2.6E-5 1 /Herwig/Decays/Mambo decaymode K_L0->e-,e+,gamma; 1.0E-5 1 /Herwig/Decays/DecayME0 decaymode K_L0->pi0,gamma,gamma; 1.0E-6 1 /Herwig/Decays/DecayME0 # decaymode kappa0->K+,pi-; 0.666667 1 /Herwig/Decays/ScalarSS decaymode kappa0->K0,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode kappabar0->K-,pi+; 0.666667 1 /Herwig/Decays/ScalarSS decaymode kappabar0->Kbar0,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode kappa-->Kbar0,pi-; 0.666667 1 /Herwig/Decays/ScalarSS decaymode kappa-->K-,pi0; 0.333333 1 /Herwig/Decays/ScalarSS # decaymode kappa+->K0,pi+; 0.666667 1 /Herwig/Decays/ScalarSS decaymode kappa+->K+,pi0; 0.333333 1 /Herwig/Decays/ScalarSS �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/boson_decays.in����������������������������������������������������0000644�0001750�0001750�00000004066�11754474774�022403� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # file containing the decays for the bosons # # # decaymode h0->b,bbar; 0.7322 1 /Herwig/Decays/Hff decaymode h0->W+,W-; 0.0806 1 /Herwig/Decays/HWW decaymode h0->tau-,tau+; 0.0742 1 /Herwig/Decays/Hff decaymode h0->g,g; 0.0702 1 /Herwig/Decays/Mambo decaymode h0->c,cbar; 0.0322 1 /Herwig/Decays/Hff decaymode h0->Z0,Z0; 0.0082 1 /Herwig/Decays/HWW decaymode h0->gamma,gamma; 0.0021 1 /Herwig/Decays/Mambo decaymode h0->mu-,mu+; 0.0003 1 /Herwig/Decays/Hff decaymode h0->t,tbar; 0 1 /Herwig/Decays/Hff # # decaymode Z0->d,dbar; 0.153812 1 /Herwig/Decays/ZDecayer decaymode Z0->s,sbar; 0.153811 1 /Herwig/Decays/ZDecayer decaymode Z0->b,bbar; 0.152457 1 /Herwig/Decays/ZDecayer decaymode Z0->u,ubar; 0.119279 1 /Herwig/Decays/ZDecayer decaymode Z0->c,cbar; 0.119162 1 /Herwig/Decays/ZDecayer decaymode Z0->nu_e,nu_ebar; 0.066897 1 /Herwig/Decays/ZDecayer decaymode Z0->nu_mu,nu_mubar; 0.066897 1 /Herwig/Decays/ZDecayer decaymode Z0->nu_tau,nu_taubar; 0.066897 1 /Herwig/Decays/ZDecayer decaymode Z0->e-,e+; 0.033621 1 /Herwig/Decays/ZDecayer decaymode Z0->mu-,mu+; 0.033621 1 /Herwig/Decays/ZDecayer decaymode Z0->tau-,tau+; 0.033546 1 /Herwig/Decays/ZDecayer # decaymode W+->dbar,u; 0.321586 1 /Herwig/Decays/WDecayer decaymode W+->sbar,c; 0.320957 1 /Herwig/Decays/WDecayer decaymode W+->mu+,nu_mu; 0.108059 1 /Herwig/Decays/WDecayer decaymode W+->e+,nu_e; 0.108059 1 /Herwig/Decays/WDecayer decaymode W+->tau+,nu_tau; 0.10798 1 /Herwig/Decays/WDecayer decaymode W+->sbar,u; 0.01644 1 /Herwig/Decays/WDecayer decaymode W+->dbar,c; 0.016407 1 /Herwig/Decays/WDecayer decaymode W+->bbar,c; 0.000512 1 /Herwig/Decays/WDecayer # decaymode W-->d,ubar; 0.321586 1 /Herwig/Decays/WDecayer decaymode W-->s,cbar; 0.320957 1 /Herwig/Decays/WDecayer decaymode W-->e-,nu_ebar; 0.108059 1 /Herwig/Decays/WDecayer decaymode W-->mu-,nu_mubar; 0.108059 1 /Herwig/Decays/WDecayer decaymode W-->tau-,nu_taubar; 0.10798 1 /Herwig/Decays/WDecayer decaymode W-->s,ubar; 0.01644 1 /Herwig/Decays/WDecayer decaymode W-->d,cbar; 0.016407 1 /Herwig/Decays/WDecayer decaymode W-->b,cbar; 0.000512 1 /Herwig/Decays/WDecayer ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/quarks.in����������������������������������������������������������0000644�0001750�0001750�00000002203�11754474774�021230� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # file containing the particle data for the quarks # create ThePEG::ConstituentParticleData d setup d 1 d 0.005 0. 0 0 -1 3 2 1 0.325 create ThePEG::ConstituentParticleData dbar setup dbar -1 dbar 0.005 0. 0 0 1 -3 2 1 0.325 makeanti dbar d create ThePEG::ConstituentParticleData ubar setup ubar -2 ubar 0.0023 0. 0 0 -2 -3 2 1 0.325 create ThePEG::ConstituentParticleData u setup u 2 u 0.0023 0. 0 0 2 3 2 1 0.325 makeanti u ubar create ThePEG::ConstituentParticleData c setup c 4 c 1.25 0. 0 0 2 3 2 1 1.6 create ThePEG::ConstituentParticleData cbar setup cbar -4 cbar 1.25 0. 0 0 -2 -3 2 1 1.6 makeanti cbar c create ThePEG::ConstituentParticleData sbar setup sbar -3 sbar 0.095 0. 0 0 1 -3 2 1 0.5 create ThePEG::ConstituentParticleData s setup s 3 s 0.095 0. 0 0 -1 3 2 1 0.5 makeanti s sbar create ThePEG::ConstituentParticleData b setup b 5 b 4.2 0. 0 0 -1 3 2 1 5 create ThePEG::ConstituentParticleData bbar setup bbar -5 bbar 4.2 0. 0 0 1 -3 2 1 5 makeanti bbar b create ThePEG::ParticleData t setup t 6 t 174.2 1.4 14 0 2 3 2 0 create ThePEG::ParticleData tbar setup tbar -6 tbar 174.2 1.4 14 0 -2 -3 2 0 makeanti tbar t ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/Makefile.am��������������������������������������������������������0000644�0001750�0001750�00000003766�11754474774�021445� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������BUILT_SOURCES = done-all-links defaultsdir = ${pkgdatadir}/defaults INPUTFILES = Analysis.in \ baryon_decays.in baryons.in boson_decays.in \ bosons.in Cuts.in decayers.in \ Decays.in DiffractiveParticles.in diquarks.in \ Hadronization.in HerwigDefaults.in HerwigCleanup.in \ lepton_decays.in leptons.in \ masses.in MatrixElements.in meson_decays.in mesons.in Model.in BSM.in \ Particles.in QEDRadiation.in quark_decays.in quarks.in \ Shower.in StandardModelVertices.in UnderlyingEvent.in widths.in Partons.in \ DipoleShower.in DipoleShowerParameters-LO.in DipoleShowerParameters-NLO.in \ Matchbox.in dist_defaults_DATA = $(INPUTFILES) EXTRA_DIST = PDF.in.in defaults_DATA = PDF.in CLEANFILES = PDF.in done-all-links ## For an explanation of this magic, see autoconf book 4.7.2 if WANT_LOCAL_PDF edit = sed -e "s,@HERWIG_PDF_DEFAULT\@,`cd $(top_srcdir) && pwd`/$(HERWIG_PDF_DEFAULT)," -e "s,@HERWIG_PDF_NLO\@,`cd $(top_srcdir) && pwd`/$(HERWIG_PDF_NLO)," -e "s,@HERWIG_PDF_POMERON\@,`cd $(top_srcdir) && pwd`/$(HERWIG_PDF_POMERON)," installname = $(DESTDIR)$(pkgdatadir)/$(HERWIG_PDF_DEFAULT) installnameNLO = $(DESTDIR)$(pkgdatadir)/$(HERWIG_PDF_NLO) installnamePOMERON = $(DESTDIR)$(pkgdatadir)/$(HERWIG_PDF_POMERON) install-data-hook: rm -f $(DESTDIR)$(defaultsdir)/PDF.in sed -e 's,@HERWIG_PDF_DEFAULT\@,$(installname),' \ -e 's,@HERWIG_PDF_NLO\@,$(installnameNLO),' \ -e 's,@HERWIG_PDF_POMERON\@,$(installnamePOMERON),' \ $(srcdir)/PDF.in.in > $(DESTDIR)$(defaultsdir)/PDF.in else edit = sed -e 's,@HERWIG_PDF_DEFAULT\@,$(HERWIG_PDF_DEFAULT),' -e 's,@HERWIG_PDF_NLO\@,$(HERWIG_PDF_NLO),' -e 's,@HERWIG_PDF_POMERON\@,$(HERWIG_PDF_POMERON),' endif PDF.in: Makefile $(srcdir)/PDF.in.in @echo "Updating PDF.in" @rm -f PDF.in PDF.in.tmp @$(edit) $(srcdir)/PDF.in.in > PDF.in.tmp @mv PDF.in.tmp PDF.in done-all-links: $(INPUTFILES) @echo "Linking input files" @for i in $(INPUTFILES); do \ if test -f $(srcdir)/$$i -a ! -e $$i; then \ $(LN_S) -f $(srcdir)/$$i; fi; done @touch done-all-links ����������herwig++-2.6.0.orig/src/defaults/Particles.in�������������������������������������������������������0000644�0001750�0001750�00000000673�11754474774�021661� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##################################################################### # Herwig now gets all its particle information from the database # at URL HERE ##################################################################### mkdir /Herwig/Particles cd /Herwig/Particles read leptons.in read quarks.in read bosons.in read mesons.in read baryons.in read diquarks.in read DiffractiveParticles.in mkdir /Herwig/Masses cd /Herwig/Masses read masses.in ���������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/DipoleShowerParameters-LO.in���������������������������������������0000644�0001750�0001750�00000012410�11754474774�024663� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################################################ # Setup the dipole shower parameters ################################################################################ cd /Herwig/DipoleShower ################################################################################ # setup alphas ################################################################################ cp LOAlphaS AlphaS set AlphaS:input_alpha_s 0.1131785 set AlphaS:freezing_scale 0.0*GeV set /Herwig/Model:QCD/RunningAlphaS AlphaS ################################################################################ # shower parameters ################################################################################ set DipoleShowerHandler:GlobalAlphaS AlphaS set DipoleShowerHandler:EvolutionOrdering ChainPtOrdering set IntrinsicPtGenerator:ValenceIntrinsicPtScale 1.68463*GeV set IntrinsicPtGenerator:SeaIntrinsicPtScale 1.29001*GeV cd /Herwig/DipoleShower/Kinematics set FFLightKinematics:IRCutoff 1.416023*GeV set FILightKinematics:IRCutoff 0.796205*GeV set IFLightKinematics:IRCutoff 0.796205*GeV set IILightKinematics:IRCutoff 0.367359*GeV ################################################################################ # shower parameters at boundary to non-perturbative domain ################################################################################ set /Herwig/Particles/g:ConstituentMass 1.080386*GeV cd /Herwig/DipoleShower/Kernels set FFgx2ggxDipoleKernel:ScreeningScale 0.2427254*GeV set FFqx2qgxDipoleKernel:ScreeningScale 0.2427254*GeV set FFgx2uuxDipoleKernel:ScreeningScale 0.2427254*GeV set FFgx2ddxDipoleKernel:ScreeningScale 0.2427254*GeV set FFgx2ssxDipoleKernel:ScreeningScale 0.2427254*GeV set FFgx2ccxDipoleKernel:ScreeningScale 0.2427254*GeV set FFgx2bbxDipoleKernel:ScreeningScale 0.2427254*GeV set FIgx2ggxDipoleKernel:ScreeningScale 1.355894*GeV set FIqx2qgxDipoleKernel:ScreeningScale 1.355894*GeV set FIgx2uuxDipoleKernel:ScreeningScale 1.355894*GeV set FIgx2ddxDipoleKernel:ScreeningScale 1.355894*GeV set FIgx2ssxDipoleKernel:ScreeningScale 1.355894*GeV set FIgx2ccxDipoleKernel:ScreeningScale 1.355894*GeV set FIgx2bbxDipoleKernel:ScreeningScale 1.355894*GeV set IFgx2ggxDipoleKernel:ScreeningScale 1.355894*GeV set IFqx2qgxDipoleKernel:ScreeningScale 1.355894*GeV set IFqx2gqxDipoleKernel:ScreeningScale 1.355894*GeV set IFgx2uubarxDipoleKernel:ScreeningScale 1.355894*GeV set IFgx2ubaruxDipoleKernel:ScreeningScale 1.355894*GeV set IFgx2ddbarxDipoleKernel:ScreeningScale 1.355894*GeV set IFgx2dbardxDipoleKernel:ScreeningScale 1.355894*GeV set IFgx2ssbarxDipoleKernel:ScreeningScale 1.355894*GeV set IFgx2sbarsxDipoleKernel:ScreeningScale 1.355894*GeV set IFgx2ccbarxDipoleKernel:ScreeningScale 1.355894*GeV set IFgx2cbarcxDipoleKernel:ScreeningScale 1.355894*GeV set IFgx2bbbarxDipoleKernel:ScreeningScale 1.355894*GeV set IFgx2bbarbxDipoleKernel:ScreeningScale 1.355894*GeV set IIgx2ggxDipoleKernel:ScreeningScale 0.205854*GeV set IIqx2qgxDipoleKernel:ScreeningScale 0.205854*GeV set IIqx2gqxDipoleKernel:ScreeningScale 0.205854*GeV set IIgx2uubarxDipoleKernel:ScreeningScale 0.205854*GeV set IIgx2ubaruxDipoleKernel:ScreeningScale 0.205854*GeV set IIgx2ddbarxDipoleKernel:ScreeningScale 0.205854*GeV set IIgx2dbardxDipoleKernel:ScreeningScale 0.205854*GeV set IIgx2ssbarxDipoleKernel:ScreeningScale 0.205854*GeV set IIgx2sbarsxDipoleKernel:ScreeningScale 0.205854*GeV set IIgx2ccbarxDipoleKernel:ScreeningScale 0.205854*GeV set IIgx2cbarcxDipoleKernel:ScreeningScale 0.205854*GeV set IIgx2bbbarxDipoleKernel:ScreeningScale 0.205854*GeV set IIgx2bbarbxDipoleKernel:ScreeningScale 0.205854*GeV ################################################################################ # hadronization parameters ################################################################################ cd /Herwig/Hadronization set ClusterFissioner:ClMaxLight 4.17032*GeV set ClusterFissioner:ClPowLight 5.734681 set ClusterFissioner:PSplitLight 0.7651726 set ClusterDecayer:ClDirLight 1 set ClusterDecayer:ClSmrLight 4.548755 set ClusterFissioner:ClMaxCharm 4.17032*GeV set ClusterFissioner:ClPowCharm 5.734681 set ClusterFissioner:PSplitCharm 0.7651726 set ClusterDecayer:ClDirCharm 1 set ClusterDecayer:ClSmrCharm 4.548755 set LightClusterDecayer:SingleHadronLimitCharm 0.0 set ClusterFissioner:ClMaxBottom 4.17032*GeV set ClusterFissioner:ClPowBottom 5.734681 set ClusterFissioner:PSplitBottom 0.7651726 set ClusterDecayer:ClDirBottom 1 set ClusterDecayer:ClSmrBottom 4.548755 set LightClusterDecayer:SingleHadronLimitBottom 0.0 set HadronSelector:PwtUquark 1.0 set HadronSelector:PwtDquark 1.0 set HadronSelector:PwtSquark 1.0 set HadronSelector:PwtCquark 1.0 set HadronSelector:PwtBquark 1.0 set HadronSelector:PwtDIquark 1.0 set HadronSelector:SngWt 1.0 set HadronSelector:DecWt 1.0 cd / ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/HerwigCleanup.in���������������������������������������������������0000644�0001750�0001750�00000000071�11754474774�022460� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Clean up all Herwig related directories rrmdir /Herwig �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/DipoleShower.in����������������������������������������������������0000644�0001750�0001750�00000032410�11754474774�022331� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################################################ # Setup the dipole shower ################################################################################ library HwDipoleShower.so mkdir /Herwig/DipoleShower cd /Herwig/DipoleShower create Herwig::DipoleShowerHandler DipoleShowerHandler ################################################################################ # # /!\ Nothing to be done below here, except you exactly know # what you're doing. # # Really. # ################################################################################ # ..... # .... # ... # .. # . # ################################################################################ # zero quark masses for the time being ################################################################################ set /Herwig/Particles/d:NominalMass 0.*GeV set /Herwig/Particles/dbar:NominalMass 0.*GeV set /Herwig/Particles/u:NominalMass 0.*GeV set /Herwig/Particles/ubar:NominalMass 0.*GeV set /Herwig/Particles/c:NominalMass 0.*GeV set /Herwig/Particles/cbar:NominalMass 0.*GeV set /Herwig/Particles/s:NominalMass 0.*GeV set /Herwig/Particles/sbar:NominalMass 0.*GeV set /Herwig/Particles/b:NominalMass 0.*GeV set /Herwig/Particles/bbar:NominalMass 0.*GeV ################################################################################ # Setup the underlying event and fix missing reference. ################################################################################ set DipoleShowerHandler:MPIHandler /Herwig/UnderlyingEvent/MPIHandler set DipoleShowerHandler:RemDecayer /Herwig/Partons/RemnantDecayer set DipoleShowerHandler:Evolver /Herwig/Shower/Evolver ################################################################################ # Setup the ordering. ################################################################################ create Herwig::DipoleChainOrdering ChainPtOrdering ################################################################################ # Setup the reshuffler. ################################################################################ create Herwig::ConstituentReshuffler ConstituentReshuffler set DipoleShowerHandler:ConstituentReshuffler ConstituentReshuffler ################################################################################ # Setup intrinsic pt. ################################################################################ create Herwig::IntrinsicPtGenerator IntrinsicPtGenerator set DipoleShowerHandler:IntrinsicPtGenerator IntrinsicPtGenerator ################################################################################ # Setup the alphas ################################################################################ library HwDipoleShowerAlphaS.so create matchbox::lo_alpha_s LOAlphaS set LOAlphaS:min_active_flavours 5 create matchbox::nlo_alpha_s NLOAlphaS set NLOAlphaS:exact_evaluation large_scale set NLOAlphaS:min_active_flavours 5 ################################################################################ # Setup the splitting kinematics. ################################################################################ mkdir /Herwig/DipoleShower/Kinematics cd /Herwig/DipoleShower/Kinematics create Herwig::FFLightKinematics FFLightKinematics create Herwig::FILightKinematics FILightKinematics create Herwig::IFLightKinematics IFLightKinematics create Herwig::IILightKinematics IILightKinematics ################################################################################ # Setup the kernels. ################################################################################ mkdir /Herwig/DipoleShower/Kernels cd /Herwig/DipoleShower/Kernels ################################################################################ # FF ################################################################################ create Herwig::FFgx2ggxDipoleKernel FFgx2ggxDipoleKernel set FFgx2ggxDipoleKernel:SplittingKinematics /Herwig/DipoleShower/Kinematics/FFLightKinematics insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 FFgx2ggxDipoleKernel create Herwig::FFqx2qgxDipoleKernel FFqx2qgxDipoleKernel set FFqx2qgxDipoleKernel:SplittingKinematics /Herwig/DipoleShower/Kinematics/FFLightKinematics insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 FFqx2qgxDipoleKernel create Herwig::FFgx2qqxDipoleKernel FFgx2qqxDipoleKernel set FFgx2qqxDipoleKernel:SplittingKinematics /Herwig/DipoleShower/Kinematics/FFLightKinematics cp FFgx2qqxDipoleKernel FFgx2ddxDipoleKernel set FFgx2ddxDipoleKernel:Flavour /Herwig/Particles/d insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 FFgx2ddxDipoleKernel cp FFgx2qqxDipoleKernel FFgx2uuxDipoleKernel set FFgx2uuxDipoleKernel:Flavour /Herwig/Particles/u insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 FFgx2uuxDipoleKernel cp FFgx2qqxDipoleKernel FFgx2ccxDipoleKernel set FFgx2ccxDipoleKernel:Flavour /Herwig/Particles/c insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 FFgx2ccxDipoleKernel cp FFgx2qqxDipoleKernel FFgx2ssxDipoleKernel set FFgx2ssxDipoleKernel:Flavour /Herwig/Particles/s insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 FFgx2ssxDipoleKernel cp FFgx2qqxDipoleKernel FFgx2bbxDipoleKernel set FFgx2bbxDipoleKernel:Flavour /Herwig/Particles/b insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 FFgx2bbxDipoleKernel ################################################################################ # create the pdf ratio object ################################################################################ create Herwig::PDFRatio PDFRatio ################################################################################ # FI ################################################################################ create Herwig::FIgx2ggxDipoleKernel FIgx2ggxDipoleKernel set FIgx2ggxDipoleKernel:PDFRatio PDFRatio set FIgx2ggxDipoleKernel:SplittingKinematics /Herwig/DipoleShower/Kinematics/FILightKinematics insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 FIgx2ggxDipoleKernel create Herwig::FIqx2qgxDipoleKernel FIqx2qgxDipoleKernel set FIqx2qgxDipoleKernel:PDFRatio PDFRatio set FIqx2qgxDipoleKernel:SplittingKinematics /Herwig/DipoleShower/Kinematics/FILightKinematics insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 FIqx2qgxDipoleKernel create Herwig::FIgx2qqxDipoleKernel FIgx2qqxDipoleKernel set FIgx2qqxDipoleKernel:PDFRatio PDFRatio set FIgx2qqxDipoleKernel:SplittingKinematics /Herwig/DipoleShower/Kinematics/FILightKinematics cp FIgx2qqxDipoleKernel FIgx2ddxDipoleKernel set FIgx2ddxDipoleKernel:Flavour /Herwig/Particles/d insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 FIgx2ddxDipoleKernel cp FIgx2qqxDipoleKernel FIgx2uuxDipoleKernel set FIgx2uuxDipoleKernel:Flavour /Herwig/Particles/u insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 FIgx2uuxDipoleKernel cp FIgx2qqxDipoleKernel FIgx2ccxDipoleKernel set FIgx2ccxDipoleKernel:Flavour /Herwig/Particles/c insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 FIgx2ccxDipoleKernel cp FIgx2qqxDipoleKernel FIgx2ssxDipoleKernel set FIgx2ssxDipoleKernel:Flavour /Herwig/Particles/s insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 FIgx2ssxDipoleKernel cp FIgx2qqxDipoleKernel FIgx2bbxDipoleKernel set FIgx2bbxDipoleKernel:Flavour /Herwig/Particles/b insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 FIgx2bbxDipoleKernel ################################################################################ # IF ################################################################################ create Herwig::IFgx2ggxDipoleKernel IFgx2ggxDipoleKernel set IFgx2ggxDipoleKernel:PDFRatio PDFRatio set IFgx2ggxDipoleKernel:SplittingKinematics /Herwig/DipoleShower/Kinematics/IFLightKinematics insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IFgx2ggxDipoleKernel create Herwig::IFqx2qgxDipoleKernel IFqx2qgxDipoleKernel set IFqx2qgxDipoleKernel:PDFRatio PDFRatio set IFqx2qgxDipoleKernel:SplittingKinematics /Herwig/DipoleShower/Kinematics/IFLightKinematics insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IFqx2qgxDipoleKernel create Herwig::IFqx2gqxDipoleKernel IFqx2gqxDipoleKernel set IFqx2gqxDipoleKernel:PDFRatio PDFRatio set IFqx2gqxDipoleKernel:SplittingKinematics /Herwig/DipoleShower/Kinematics/IFLightKinematics insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IFqx2gqxDipoleKernel create Herwig::IFgx2qqxDipoleKernel IFgx2qqxDipoleKernel set IFgx2qqxDipoleKernel:PDFRatio PDFRatio set IFgx2qqxDipoleKernel:SplittingKinematics /Herwig/DipoleShower/Kinematics/IFLightKinematics cp IFgx2qqxDipoleKernel IFgx2ddbarxDipoleKernel set IFgx2ddbarxDipoleKernel:Flavour /Herwig/Particles/d insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IFgx2ddbarxDipoleKernel cp IFgx2qqxDipoleKernel IFgx2dbardxDipoleKernel set IFgx2dbardxDipoleKernel:Flavour /Herwig/Particles/dbar insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IFgx2dbardxDipoleKernel cp IFgx2qqxDipoleKernel IFgx2uubarxDipoleKernel set IFgx2uubarxDipoleKernel:Flavour /Herwig/Particles/u insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IFgx2uubarxDipoleKernel cp IFgx2qqxDipoleKernel IFgx2ubaruxDipoleKernel set IFgx2ubaruxDipoleKernel:Flavour /Herwig/Particles/ubar insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IFgx2ubaruxDipoleKernel cp IFgx2qqxDipoleKernel IFgx2ccbarxDipoleKernel set IFgx2ccbarxDipoleKernel:Flavour /Herwig/Particles/c insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IFgx2ccbarxDipoleKernel cp IFgx2qqxDipoleKernel IFgx2cbarcxDipoleKernel set IFgx2cbarcxDipoleKernel:Flavour /Herwig/Particles/cbar insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IFgx2cbarcxDipoleKernel cp IFgx2qqxDipoleKernel IFgx2ssbarxDipoleKernel set IFgx2ssbarxDipoleKernel:Flavour /Herwig/Particles/s insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IFgx2ssbarxDipoleKernel cp IFgx2qqxDipoleKernel IFgx2sbarsxDipoleKernel set IFgx2sbarsxDipoleKernel:Flavour /Herwig/Particles/sbar insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IFgx2sbarsxDipoleKernel cp IFgx2qqxDipoleKernel IFgx2bbbarxDipoleKernel set IFgx2bbbarxDipoleKernel:Flavour /Herwig/Particles/b insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IFgx2bbbarxDipoleKernel cp IFgx2qqxDipoleKernel IFgx2bbarbxDipoleKernel set IFgx2bbarbxDipoleKernel:Flavour /Herwig/Particles/bbar insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IFgx2bbarbxDipoleKernel ################################################################################ # II ################################################################################ create Herwig::IIgx2ggxDipoleKernel IIgx2ggxDipoleKernel set IIgx2ggxDipoleKernel:PDFRatio PDFRatio set IIgx2ggxDipoleKernel:SplittingKinematics /Herwig/DipoleShower/Kinematics/IILightKinematics insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IIgx2ggxDipoleKernel create Herwig::IIqx2qgxDipoleKernel IIqx2qgxDipoleKernel set IIqx2qgxDipoleKernel:PDFRatio PDFRatio set IIqx2qgxDipoleKernel:SplittingKinematics /Herwig/DipoleShower/Kinematics/IILightKinematics insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IIqx2qgxDipoleKernel create Herwig::IIqx2gqxDipoleKernel IIqx2gqxDipoleKernel set IIqx2gqxDipoleKernel:PDFRatio PDFRatio set IIqx2gqxDipoleKernel:SplittingKinematics /Herwig/DipoleShower/Kinematics/IILightKinematics insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IIqx2gqxDipoleKernel create Herwig::IIgx2qqxDipoleKernel IIgx2qqxDipoleKernel set IIgx2qqxDipoleKernel:PDFRatio PDFRatio set IIgx2qqxDipoleKernel:SplittingKinematics /Herwig/DipoleShower/Kinematics/IILightKinematics cp IIgx2qqxDipoleKernel IIgx2ddbarxDipoleKernel set IIgx2ddbarxDipoleKernel:Flavour /Herwig/Particles/d insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IIgx2ddbarxDipoleKernel cp IIgx2qqxDipoleKernel IIgx2dbardxDipoleKernel set IIgx2dbardxDipoleKernel:Flavour /Herwig/Particles/dbar insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IIgx2dbardxDipoleKernel cp IIgx2qqxDipoleKernel IIgx2uubarxDipoleKernel set IIgx2uubarxDipoleKernel:Flavour /Herwig/Particles/u insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IIgx2uubarxDipoleKernel cp IIgx2qqxDipoleKernel IIgx2ubaruxDipoleKernel set IIgx2ubaruxDipoleKernel:Flavour /Herwig/Particles/ubar insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IIgx2ubaruxDipoleKernel cp IIgx2qqxDipoleKernel IIgx2ccbarxDipoleKernel set IIgx2ccbarxDipoleKernel:Flavour /Herwig/Particles/c insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IIgx2ccbarxDipoleKernel cp IIgx2qqxDipoleKernel IIgx2cbarcxDipoleKernel set IIgx2cbarcxDipoleKernel:Flavour /Herwig/Particles/cbar insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IIgx2cbarcxDipoleKernel cp IIgx2qqxDipoleKernel IIgx2ssbarxDipoleKernel set IIgx2ssbarxDipoleKernel:Flavour /Herwig/Particles/s insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IIgx2ssbarxDipoleKernel cp IIgx2qqxDipoleKernel IIgx2sbarsxDipoleKernel set IIgx2sbarsxDipoleKernel:Flavour /Herwig/Particles/sbar insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IIgx2sbarsxDipoleKernel cp IIgx2qqxDipoleKernel IIgx2bbbarxDipoleKernel set IIgx2bbbarxDipoleKernel:Flavour /Herwig/Particles/b insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IIgx2bbbarxDipoleKernel cp IIgx2qqxDipoleKernel IIgx2bbarbxDipoleKernel set IIgx2bbarbxDipoleKernel:Flavour /Herwig/Particles/bbar insert /Herwig/DipoleShower/DipoleShowerHandler:Kernels 0 IIgx2bbarbxDipoleKernel cd / ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/masses.in����������������������������������������������������������0000644�0001750�0001750�00000212560�11754474774�021226� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # This file contains the set-up of the mass generators for Herwig++ outputted # from the Herwig++ Particles Database at 13:42:1 on the 15/11/2007. # create Herwig::GenericMassGenerator rho+mass newdef rho+mass:Particle /Herwig/Particles/rho+ newdef rho+mass:BreitWignerShape 0 newdef rho+mass:MaximumWeight 1.11837 newdef rho+mass:NGenerate 100 newdef /Herwig/Particles/rho+:Mass_generator rho+mass newdef /Herwig/Particles/rho-:Mass_generator rho+mass # create Herwig::GenericMassGenerator rho0mass newdef rho0mass:Particle /Herwig/Particles/rho0 newdef rho0mass:BreitWignerShape 0 newdef rho0mass:MaximumWeight 1.12012 newdef rho0mass:NGenerate 100 newdef /Herwig/Particles/rho0:Mass_generator rho0mass # create Herwig::GenericMassGenerator etamass newdef etamass:Particle /Herwig/Particles/eta newdef etamass:BreitWignerShape 0 newdef etamass:MaximumWeight 0.968201 newdef etamass:NGenerate 100 newdef /Herwig/Particles/eta:Mass_generator etamass # create Herwig::GenericMassGenerator K_20mass newdef K_20mass:Particle /Herwig/Particles/K*_20 newdef K_20mass:BreitWignerShape 0 newdef K_20mass:MaximumWeight 1.24102 newdef K_20mass:NGenerate 100 newdef /Herwig/Particles/K*_20:Mass_generator K_20mass newdef /Herwig/Particles/K*_2bar0:Mass_generator K_20mass # create Herwig::GenericMassGenerator omegamass newdef omegamass:Particle /Herwig/Particles/omega newdef omegamass:BreitWignerShape 0 newdef omegamass:MaximumWeight 1.03521 newdef omegamass:NGenerate 100 newdef /Herwig/Particles/omega:Mass_generator omegamass # create Herwig::GenericMassGenerator h_1mass newdef h_1mass:Particle /Herwig/Particles/h_1 newdef h_1mass:BreitWignerShape 0 newdef h_1mass:MaximumWeight 1.49322 newdef h_1mass:NGenerate 100 newdef /Herwig/Particles/h_1:Mass_generator h_1mass # create Herwig::GenericMassGenerator b_10mass newdef b_10mass:Particle /Herwig/Particles/b_10 newdef b_10mass:BreitWignerShape 0 newdef b_10mass:MaximumWeight 1.13468 newdef b_10mass:NGenerate 100 newdef /Herwig/Particles/b_10:Mass_generator b_10mass # create Herwig::GenericMassGenerator K_2+mass newdef K_2+mass:Particle /Herwig/Particles/K*_2+ newdef K_2+mass:BreitWignerShape 0 newdef K_2+mass:MaximumWeight 1.20822 newdef K_2+mass:NGenerate 100 newdef /Herwig/Particles/K*_2+:Mass_generator K_2+mass newdef /Herwig/Particles/K*_2-:Mass_generator K_2+mass # create Herwig::GenericMassGenerator b_1+mass newdef b_1+mass:Particle /Herwig/Particles/b_1+ newdef b_1+mass:BreitWignerShape 0 newdef b_1+mass:MaximumWeight 1.13628 newdef b_1+mass:NGenerate 100 newdef /Herwig/Particles/b_1+:Mass_generator b_1+mass newdef /Herwig/Particles/b_1-:Mass_generator b_1+mass # create Herwig::GenericMassGenerator h'_1mass newdef h'_1mass:Particle /Herwig/Particles/h'_1 newdef h'_1mass:BreitWignerShape 0 newdef h'_1mass:MaximumWeight 2.70983 newdef h'_1mass:NGenerate 100 newdef /Herwig/Particles/h'_1:Mass_generator h'_1mass # create Herwig::GenericMassGenerator eta'mass newdef eta'mass:Particle /Herwig/Particles/eta' newdef eta'mass:BreitWignerShape 0 newdef eta'mass:MaximumWeight 0.969581 newdef eta'mass:NGenerate 100 newdef /Herwig/Particles/eta':Mass_generator eta'mass # create Herwig::GenericMassGenerator f'_2mass newdef f'_2mass:Particle /Herwig/Particles/f'_2 newdef f'_2mass:BreitWignerShape 0 newdef f'_2mass:MaximumWeight 1.11897 newdef f'_2mass:NGenerate 100 newdef /Herwig/Particles/f'_2:Mass_generator f'_2mass # create Herwig::GenericMassGenerator phimass newdef phimass:Particle /Herwig/Particles/phi newdef phimass:BreitWignerShape 0 newdef phimass:MaximumWeight 1.05846 newdef phimass:NGenerate 100 newdef /Herwig/Particles/phi:Mass_generator phimass # create Herwig::GenericMassGenerator B_c1+mass newdef B_c1+mass:Particle /Herwig/Particles/B_c1+ newdef B_c1+mass:BreitWignerShape 0 newdef B_c1+mass:MaximumWeight 0.968241 newdef B_c1+mass:NGenerate 100 newdef /Herwig/Particles/B_c1+:Mass_generator B_c1+mass newdef /Herwig/Particles/B_c1-:Mass_generator B_c1+mass # create Herwig::GenericMassGenerator K*+mass newdef K*+mass:Particle /Herwig/Particles/K*+ newdef K*+mass:BreitWignerShape 0 newdef K*+mass:MaximumWeight 1.11306 newdef K*+mass:NGenerate 100 newdef /Herwig/Particles/K*+:Mass_generator K*+mass newdef /Herwig/Particles/K*-:Mass_generator K*+mass # create Herwig::GenericMassGenerator K*0mass newdef K*0mass:Particle /Herwig/Particles/K*0 newdef K*0mass:BreitWignerShape 0 newdef K*0mass:MaximumWeight 1.10806 newdef K*0mass:NGenerate 100 newdef /Herwig/Particles/K*0:Mass_generator K*0mass newdef /Herwig/Particles/K*bar0:Mass_generator K*0mass # create Herwig::GenericMassGenerator sigmamass newdef sigmamass:Particle /Herwig/Particles/sigma newdef sigmamass:BreitWignerShape 0 newdef sigmamass:MaximumWeight 1.21203 newdef sigmamass:NGenerate 100 newdef /Herwig/Particles/sigma:Mass_generator sigmamass # create Herwig::ScalarMassGenerator f_0mass newdef f_0mass:Particle /Herwig/Particles/f_0 newdef f_0mass:BreitWignerShape 0 newdef f_0mass:MaximumWeight 0.859932 newdef f_0mass:NGenerate 100 insert f_0mass:Coupling 0 0.331 insert f_0mass:Coupling 1 0.234 insert f_0mass:Coupling 2 0.144 insert f_0mass:Coupling 3 0.144 insert f_0mass:Mass1 0 0.13957 insert f_0mass:Mass1 1 0.13498 insert f_0mass:Mass1 2 0.49368 insert f_0mass:Mass1 3 0.49765 insert f_0mass:Mass2 0 0.13957 insert f_0mass:Mass2 1 0.13498 insert f_0mass:Mass2 2 0.49368 insert f_0mass:Mass2 3 0.49765 newdef /Herwig/Particles/f_0:Mass_generator f_0mass # create Herwig::ScalarMassGenerator a_00mass newdef a_00mass:Particle /Herwig/Particles/a_00 newdef a_00mass:BreitWignerShape 0 newdef a_00mass:MaximumWeight 1.18216 newdef a_00mass:NGenerate 100 insert a_00mass:Coupling 0 0.47 insert a_00mass:Coupling 1 0.358 insert a_00mass:Coupling 2 0.358 insert a_00mass:Mass1 0 0.13957 insert a_00mass:Mass1 1 0.49368 insert a_00mass:Mass1 2 0.49765 insert a_00mass:Mass2 0 0.54751 insert a_00mass:Mass2 1 0.49368 insert a_00mass:Mass2 2 0.49765 newdef /Herwig/Particles/a_00:Mass_generator a_00mass # create Herwig::GenericMassGenerator f_2mass newdef f_2mass:Particle /Herwig/Particles/f_2 newdef f_2mass:BreitWignerShape 0 newdef f_2mass:MaximumWeight 1.01114 newdef f_2mass:NGenerate 100 newdef /Herwig/Particles/f_2:Mass_generator f_2mass # create Herwig::ScalarMassGenerator a_0+mass newdef a_0+mass:Particle /Herwig/Particles/a_0+ newdef a_0+mass:BreitWignerShape 0 newdef a_0+mass:MaximumWeight 1.23286 newdef a_0+mass:NGenerate 100 insert a_0+mass:Coupling 0 0.47 insert a_0+mass:Coupling 1 0.507 insert a_0+mass:Mass1 0 0.13957 insert a_0+mass:Mass1 1 0.49368 insert a_0+mass:Mass2 0 0.54751 insert a_0+mass:Mass2 1 0.49765 newdef /Herwig/Particles/a_0+:Mass_generator a_0+mass newdef /Herwig/Particles/a_0-:Mass_generator a_0+mass # create Herwig::GenericMassGenerator D*0mass newdef D*0mass:Particle /Herwig/Particles/D*0 newdef D*0mass:BreitWignerShape 0 newdef D*0mass:MaximumWeight 0.97283 newdef D*0mass:NGenerate 100 newdef /Herwig/Particles/D*0:Mass_generator D*0mass newdef /Herwig/Particles/D*bar0:Mass_generator D*0mass # create Herwig::GenericMassGenerator D*+mass newdef D*+mass:Particle /Herwig/Particles/D*+ newdef D*+mass:BreitWignerShape 0 newdef D*+mass:MaximumWeight 0.980146 newdef D*+mass:NGenerate 100 newdef /Herwig/Particles/D*+:Mass_generator D*+mass newdef /Herwig/Particles/D*-:Mass_generator D*+mass # create Herwig::GenericMassGenerator B*+mass newdef B*+mass:Particle /Herwig/Particles/B*+ newdef B*+mass:BreitWignerShape 0 newdef B*+mass:MaximumWeight 0.968222 newdef B*+mass:NGenerate 100 newdef /Herwig/Particles/B*+:Mass_generator B*+mass newdef /Herwig/Particles/B*-:Mass_generator B*+mass # create Herwig::GenericMassGenerator a_2+mass newdef a_2+mass:Particle /Herwig/Particles/a_2+ newdef a_2+mass:BreitWignerShape 0 newdef a_2+mass:MaximumWeight 1.28446 newdef a_2+mass:NGenerate 100 newdef /Herwig/Particles/a_2-:Mass_generator a_2+mass newdef /Herwig/Particles/a_2+:Mass_generator a_2+mass # create Herwig::GenericMassGenerator B*0mass newdef B*0mass:Particle /Herwig/Particles/B*0 newdef B*0mass:BreitWignerShape 0 newdef B*0mass:MaximumWeight 0.9682 newdef B*0mass:NGenerate 100 newdef /Herwig/Particles/B*bar0:Mass_generator B*0mass newdef /Herwig/Particles/B*0:Mass_generator B*0mass # create Herwig::GenericMassGenerator D_s*mass newdef D_s*mass:Particle /Herwig/Particles/D_s*+ newdef D_s*mass:BreitWignerShape 0 newdef D_s*mass:MaximumWeight 0.968825 newdef D_s*mass:NGenerate 100 newdef /Herwig/Particles/D_s*+:Mass_generator D_s*mass newdef /Herwig/Particles/D_s*-:Mass_generator D_s*mass # create Herwig::GenericMassGenerator B_s*mass newdef B_s*mass:Particle /Herwig/Particles/B_s*0 newdef B_s*mass:BreitWignerShape 0 newdef B_s*mass:MaximumWeight 0.968198 newdef B_s*mass:NGenerate 100 newdef /Herwig/Particles/B_s*bar0:Mass_generator B_s*mass newdef /Herwig/Particles/B_s*0:Mass_generator B_s*mass # create Herwig::GenericMassGenerator B_c*mass newdef B_c*mass:Particle /Herwig/Particles/B_c*+ newdef B_c*mass:BreitWignerShape 0 newdef B_c*mass:MaximumWeight 0.968199 newdef B_c*mass:NGenerate 100 newdef /Herwig/Particles/B_c*+:Mass_generator B_c*mass newdef /Herwig/Particles/B_c*-:Mass_generator B_c*mass # create Herwig::GenericMassGenerator a_20mass newdef a_20mass:Particle /Herwig/Particles/a_20 newdef a_20mass:BreitWignerShape 0 newdef a_20mass:MaximumWeight 1.28559 newdef a_20mass:NGenerate 100 newdef /Herwig/Particles/a_20:Mass_generator a_20mass # create Herwig::GenericMassGenerator D_20mass newdef D_20mass:Particle /Herwig/Particles/D*_20 newdef D_20mass:BreitWignerShape 0 newdef D_20mass:MaximumWeight 1.12173 newdef D_20mass:NGenerate 100 newdef /Herwig/Particles/D*_20:Mass_generator D_20mass newdef /Herwig/Particles/D*_2bar0:Mass_generator D_20mass # create Herwig::GenericMassGenerator D_2+mass newdef D_2+mass:Particle /Herwig/Particles/D*_2+ newdef D_2+mass:BreitWignerShape 0 newdef D_2+mass:MaximumWeight 1.09634 newdef D_2+mass:NGenerate 100 newdef /Herwig/Particles/D*_2+:Mass_generator D_2+mass newdef /Herwig/Particles/D*_2-:Mass_generator D_2+mass # create Herwig::GenericMassGenerator B_2+mass newdef B_2+mass:Particle /Herwig/Particles/B_2+ newdef B_2+mass:BreitWignerShape 0 newdef B_2+mass:MaximumWeight 1.02695 newdef B_2+mass:NGenerate 100 newdef /Herwig/Particles/B_2-:Mass_generator B_2+mass newdef /Herwig/Particles/B_2+:Mass_generator B_2+mass # create Herwig::GenericMassGenerator B_20mass newdef B_20mass:Particle /Herwig/Particles/B_20 newdef B_20mass:BreitWignerShape 0 newdef B_20mass:MaximumWeight 1.02694 newdef B_20mass:NGenerate 100 newdef /Herwig/Particles/B_20:Mass_generator B_20mass newdef /Herwig/Particles/B_2bar0:Mass_generator B_20mass # create Herwig::GenericMassGenerator B_s20mass newdef B_s20mass:Particle /Herwig/Particles/B_s20 newdef B_s20mass:BreitWignerShape 0 newdef B_s20mass:MaximumWeight 0.983869 newdef B_s20mass:NGenerate 100 newdef /Herwig/Particles/B_s2bar0:Mass_generator B_s20mass newdef /Herwig/Particles/B_s20:Mass_generator B_s20mass # create Herwig::GenericMassGenerator B_c2+mass newdef B_c2+mass:Particle /Herwig/Particles/B_c2+ newdef B_c2+mass:BreitWignerShape 0 newdef B_c2+mass:MaximumWeight 0.968592 newdef B_c2+mass:NGenerate 100 newdef /Herwig/Particles/B_c2-:Mass_generator B_c2+mass newdef /Herwig/Particles/B_c2+:Mass_generator B_c2+mass # create Herwig::GenericMassGenerator D_s2+mass newdef D_s2+mass:Particle /Herwig/Particles/D_s2+ newdef D_s2+mass:BreitWignerShape 0 newdef D_s2+mass:MaximumWeight 1.08663 newdef D_s2+mass:NGenerate 100 newdef /Herwig/Particles/D_s2+:Mass_generator D_s2+mass newdef /Herwig/Particles/D_s2-:Mass_generator D_s2+mass # create Herwig::GenericMassGenerator K_1+mass newdef K_1+mass:Particle /Herwig/Particles/K_1+ newdef K_1+mass:BreitWignerShape 0 newdef K_1+mass:MaximumWeight 1.46105 newdef K_1+mass:NGenerate 100 newdef /Herwig/Particles/K_1+:Mass_generator K_1+mass newdef /Herwig/Particles/K_1-:Mass_generator K_1+mass # create Herwig::GenericMassGenerator K_10mass newdef K_10mass:Particle /Herwig/Particles/K_10 newdef K_10mass:BreitWignerShape 0 newdef K_10mass:MaximumWeight 1.44873 newdef K_10mass:NGenerate 100 newdef /Herwig/Particles/K_10:Mass_generator K_10mass newdef /Herwig/Particles/K_1bar0:Mass_generator K_10mass # create Herwig::GenericMassGenerator K'_10mass newdef K'_10mass:Particle /Herwig/Particles/K'_10 newdef K'_10mass:BreitWignerShape 0 newdef K'_10mass:MaximumWeight 1.12952 newdef K'_10mass:NGenerate 100 newdef /Herwig/Particles/K'_10:Mass_generator K'_10mass newdef /Herwig/Particles/K'_1bar0:Mass_generator K'_10mass # create Herwig::GenericMassGenerator K'_1+mass newdef K'_1+mass:Particle /Herwig/Particles/K'_1+ newdef K'_1+mass:BreitWignerShape 0 newdef K'_1+mass:MaximumWeight 1.12957 newdef K'_1+mass:NGenerate 100 newdef /Herwig/Particles/K'_1+:Mass_generator K'_1+mass newdef /Herwig/Particles/K'_1-:Mass_generator K'_1+mass # create Herwig::GenericMassGenerator D'_1+mass newdef D'_1+mass:Particle /Herwig/Particles/D'_1+ newdef D'_1+mass:BreitWignerShape 0 newdef D'_1+mass:MaximumWeight 1.22561 newdef D'_1+mass:NGenerate 100 newdef /Herwig/Particles/D'_1+:Mass_generator D'_1+mass newdef /Herwig/Particles/D'_1-:Mass_generator D'_1+mass # create Herwig::GenericMassGenerator D'_10mass newdef D'_10mass:Particle /Herwig/Particles/D'_10 newdef D'_10mass:BreitWignerShape 0 newdef D'_10mass:MaximumWeight 1.2274 newdef D'_10mass:NGenerate 100 newdef /Herwig/Particles/D'_1bar0:Mass_generator D'_10mass newdef /Herwig/Particles/D'_10:Mass_generator D'_10mass # create Herwig::GenericMassGenerator D_10mass newdef D_10mass:Particle /Herwig/Particles/D_10 newdef D_10mass:BreitWignerShape 0 newdef D_10mass:MaximumWeight 0.966144 newdef D_10mass:NGenerate 100 newdef /Herwig/Particles/D_10:Mass_generator D_10mass newdef /Herwig/Particles/D_1bar0:Mass_generator D_10mass # create Herwig::GenericMassGenerator D_1+mass newdef D_1+mass:Particle /Herwig/Particles/D_1+ newdef D_1+mass:BreitWignerShape 0 newdef D_1+mass:MaximumWeight 0.972723 newdef D_1+mass:NGenerate 100 newdef /Herwig/Particles/D_1+:Mass_generator D_1+mass newdef /Herwig/Particles/D_1-:Mass_generator D_1+mass # create Herwig::GenericMassGenerator B_1+mass newdef B_1+mass:Particle /Herwig/Particles/B_1+ newdef B_1+mass:BreitWignerShape 0 newdef B_1+mass:MaximumWeight 0.982767 newdef B_1+mass:NGenerate 100 newdef /Herwig/Particles/B_1-:Mass_generator B_1+mass newdef /Herwig/Particles/B_1+:Mass_generator B_1+mass # create Herwig::GenericMassGenerator B_10mass newdef B_10mass:Particle /Herwig/Particles/B_10 newdef B_10mass:BreitWignerShape 0 newdef B_10mass:MaximumWeight 0.982768 newdef B_10mass:NGenerate 100 newdef /Herwig/Particles/B_10:Mass_generator B_10mass newdef /Herwig/Particles/B_1bar0:Mass_generator B_10mass # create Herwig::GenericMassGenerator B'_10mass newdef B'_10mass:Particle /Herwig/Particles/B'_10 newdef B'_10mass:BreitWignerShape 0 newdef B'_10mass:MaximumWeight 1.00368 newdef B'_10mass:NGenerate 100 newdef /Herwig/Particles/B'_10:Mass_generator B'_10mass newdef /Herwig/Particles/B'_1bar0:Mass_generator B'_10mass # create Herwig::GenericMassGenerator B'_1+mass newdef B'_1+mass:Particle /Herwig/Particles/B'_1+ newdef B'_1+mass:BreitWignerShape 0 newdef B'_1+mass:MaximumWeight 1.00368 newdef B'_1+mass:NGenerate 100 newdef /Herwig/Particles/B'_1-:Mass_generator B'_1+mass newdef /Herwig/Particles/B'_1+:Mass_generator B'_1+mass # create Herwig::GenericMassGenerator B'_s10mass newdef B'_s10mass:Particle /Herwig/Particles/B'_s10 newdef B'_s10mass:BreitWignerShape 0 newdef B'_s10mass:MaximumWeight 1.18495 newdef B'_s10mass:NGenerate 100 newdef /Herwig/Particles/B'_s10:Mass_generator B'_s10mass newdef /Herwig/Particles/B'_s1bar0:Mass_generator B'_s10mass # create Herwig::GenericMassGenerator B_s10mass newdef B_s10mass:Particle /Herwig/Particles/B_s10 newdef B_s10mass:BreitWignerShape 0 newdef B_s10mass:MaximumWeight 0.977125 newdef B_s10mass:NGenerate 100 newdef /Herwig/Particles/B_s1bar0:Mass_generator B_s10mass newdef /Herwig/Particles/B_s10:Mass_generator B_s10mass # create Herwig::GenericMassGenerator D_s1+mass newdef D_s1+mass:Particle /Herwig/Particles/D_s1+ newdef D_s1+mass:BreitWignerShape 0 newdef D_s1+mass:MaximumWeight 0.968264 newdef D_s1+mass:NGenerate 100 newdef /Herwig/Particles/D_s1+:Mass_generator D_s1+mass newdef /Herwig/Particles/D_s1-:Mass_generator D_s1+mass # create Herwig::GenericMassGenerator D'_s1+mass newdef D'_s1+mass:Particle /Herwig/Particles/D'_s1+ newdef D'_s1+mass:BreitWignerShape 0 newdef D'_s1+mass:MaximumWeight 0.978872 newdef D'_s1+mass:NGenerate 100 newdef /Herwig/Particles/D'_s1-:Mass_generator D'_s1+mass newdef /Herwig/Particles/D'_s1+:Mass_generator D'_s1+mass # create Herwig::GenericMassGenerator B'_c1+mass newdef B'_c1+mass:Particle /Herwig/Particles/B'_c1+ newdef B'_c1+mass:BreitWignerShape 0 newdef B'_c1+mass:MaximumWeight 0.968441 newdef B'_c1+mass:NGenerate 100 newdef /Herwig/Particles/B'_c1+:Mass_generator B'_c1+mass newdef /Herwig/Particles/B'_c1-:Mass_generator B'_c1+mass # create Herwig::GenericMassGenerator B_c0+mass newdef B_c0+mass:Particle /Herwig/Particles/B*_c0+ newdef B_c0+mass:BreitWignerShape 0 newdef B_c0+mass:MaximumWeight 0.968199 newdef B_c0+mass:NGenerate 100 newdef /Herwig/Particles/B*_c0+:Mass_generator B_c0+mass newdef /Herwig/Particles/B*_c0-:Mass_generator B_c0+mass # create Herwig::GenericMassGenerator D_s0+mass newdef D_s0+mass:Particle /Herwig/Particles/D_s0+ newdef D_s0+mass:BreitWignerShape 0 newdef D_s0+mass:MaximumWeight 0.968226 newdef D_s0+mass:NGenerate 100 newdef /Herwig/Particles/D_s0+:Mass_generator D_s0+mass newdef /Herwig/Particles/D_s0-:Mass_generator D_s0+mass # create Herwig::GenericMassGenerator B_s00mass newdef B_s00mass:Particle /Herwig/Particles/B*_s00 newdef B_s00mass:BreitWignerShape 0 newdef B_s00mass:MaximumWeight 1.1409 newdef B_s00mass:NGenerate 100 newdef /Herwig/Particles/B*_s00:Mass_generator B_s00mass newdef /Herwig/Particles/B*_s0bar0:Mass_generator B_s00mass # create Herwig::GenericMassGenerator B_00mass newdef B_00mass:Particle /Herwig/Particles/B*_00 newdef B_00mass:BreitWignerShape 0 newdef B_00mass:MaximumWeight 0.99059 newdef B_00mass:NGenerate 100 newdef /Herwig/Particles/B*_00:Mass_generator B_00mass newdef /Herwig/Particles/B*_0bar0:Mass_generator B_00mass # create Herwig::GenericMassGenerator B_0+mass newdef B_0+mass:Particle /Herwig/Particles/B*_0+ newdef B_0+mass:BreitWignerShape 0 newdef B_0+mass:MaximumWeight 0.990659 newdef B_0+mass:NGenerate 100 newdef /Herwig/Particles/B*_0+:Mass_generator B_0+mass newdef /Herwig/Particles/B*_0-:Mass_generator B_0+mass # create Herwig::GenericMassGenerator D_0+mass newdef D_0+mass:Particle /Herwig/Particles/D_0*+ newdef D_0+mass:BreitWignerShape 0 newdef D_0+mass:MaximumWeight 1.01819 newdef D_0+mass:NGenerate 100 newdef /Herwig/Particles/D_0*+:Mass_generator D_0+mass newdef /Herwig/Particles/D_0*-:Mass_generator D_0+mass # create Herwig::GenericMassGenerator D_00mass newdef D_00mass:Particle /Herwig/Particles/D_0*0 newdef D_00mass:BreitWignerShape 0 newdef D_00mass:MaximumWeight 1.01951 newdef D_00mass:NGenerate 100 newdef /Herwig/Particles/D_0*bar0:Mass_generator D_00mass newdef /Herwig/Particles/D_0*0:Mass_generator D_00mass # create Herwig::GenericMassGenerator K_00mass newdef K_00mass:Particle /Herwig/Particles/K*_00 newdef K_00mass:BreitWignerShape 0 newdef K_00mass:MaximumWeight 0.935822 newdef K_00mass:NGenerate 100 newdef /Herwig/Particles/K*_00:Mass_generator K_00mass newdef /Herwig/Particles/K*_0bar0:Mass_generator K_00mass # create Herwig::GenericMassGenerator K_0+mass newdef K_0+mass:Particle /Herwig/Particles/K*_0+ newdef K_0+mass:BreitWignerShape 0 newdef K_0+mass:MaximumWeight 0.934032 newdef K_0+mass:NGenerate 100 newdef /Herwig/Particles/K*_0+:Mass_generator K_0+mass newdef /Herwig/Particles/K*_0-:Mass_generator K_0+mass # create Herwig::GenericMassGenerator f'_00mass newdef f'_00mass:Particle /Herwig/Particles/f'_0 newdef f'_00mass:BreitWignerShape 0 newdef f'_00mass:MaximumWeight 1.45307 newdef f'_00mass:NGenerate 100 newdef /Herwig/Particles/f'_0:Mass_generator f'_00mass # create Herwig::GenericMassGenerator f''_00mass newdef f''_00mass:Particle /Herwig/Particles/f_0(1710) newdef f''_00mass:BreitWignerShape 0 newdef f''_00mass:MaximumWeight 0.955854 newdef f''_00mass:NGenerate 100 newdef /Herwig/Particles/f_0(1710):Mass_generator f''_00mass # create Herwig::GenericMassGenerator a'_00mass newdef a'_00mass:Particle /Herwig/Particles/a'_00 newdef a'_00mass:BreitWignerShape 1 newdef a'_00mass:MaximumWeight 0.772633 newdef a'_00mass:NGenerate 100 newdef /Herwig/Particles/a'_00:Mass_generator a'_00mass # create Herwig::GenericMassGenerator a'_0+mass newdef a'_0+mass:Particle /Herwig/Particles/a'_0+ newdef a'_0+mass:BreitWignerShape 1 newdef a'_0+mass:MaximumWeight 0.772632 newdef a'_0+mass:NGenerate 100 newdef /Herwig/Particles/a'_0+:Mass_generator a'_0+mass newdef /Herwig/Particles/a'_0-:Mass_generator a'_0+mass # create Herwig::GenericMassGenerator pi'+mass newdef pi'+mass:Particle /Herwig/Particles/pi'+ newdef pi'+mass:BreitWignerShape 0 newdef pi'+mass:MaximumWeight 1.71276 newdef pi'+mass:NGenerate 100 newdef /Herwig/Particles/pi'+:Mass_generator pi'+mass newdef /Herwig/Particles/pi'-:Mass_generator pi'+mass # create Herwig::GenericMassGenerator pi'0mass newdef pi'0mass:Particle /Herwig/Particles/pi'0 newdef pi'0mass:BreitWignerShape 0 newdef pi'0mass:MaximumWeight 1.7152 newdef pi'0mass:NGenerate 100 newdef /Herwig/Particles/pi'0:Mass_generator pi'0mass # create Herwig::GenericMassGenerator eta''mass newdef eta''mass:Particle /Herwig/Particles/eta(1295) newdef eta''mass:BreitWignerShape 0 newdef eta''mass:MaximumWeight 1.0715 newdef eta''mass:NGenerate 100 newdef /Herwig/Particles/eta(1295):Mass_generator eta''mass # create Herwig::GenericMassGenerator eta(1475)mass newdef eta(1475)mass:Particle /Herwig/Particles/eta(1475) newdef eta(1475)mass:BreitWignerShape 0 newdef eta(1475)mass:MaximumWeight 1.57951 newdef eta(1475)mass:NGenerate 100 newdef /Herwig/Particles/eta(1475):Mass_generator eta(1475)mass # create Herwig::GenericMassGenerator K'+mass newdef K'+mass:Particle /Herwig/Particles/K'+ newdef K'+mass:BreitWignerShape 0 newdef K'+mass:MaximumWeight 1.32706 newdef K'+mass:NGenerate 100 newdef /Herwig/Particles/K'+:Mass_generator K'+mass newdef /Herwig/Particles/K'-:Mass_generator K'+mass # create Herwig::GenericMassGenerator K'0mass newdef K'0mass:Particle /Herwig/Particles/K'0 newdef K'0mass:BreitWignerShape 0 newdef K'0mass:MaximumWeight 1.32599 newdef K'0mass:NGenerate 100 newdef /Herwig/Particles/K'0:Mass_generator K'0mass newdef /Herwig/Particles/K'bar0:Mass_generator K'0mass # create Herwig::GenericMassGenerator rho'0mass newdef rho'0mass:Particle /Herwig/Particles/rho'0 newdef rho'0mass:BreitWignerShape 0 newdef rho'0mass:MaximumWeight 1.31229 newdef rho'0mass:NGenerate 100 newdef /Herwig/Particles/rho'0:Mass_generator rho'0mass # create Herwig::GenericMassGenerator rho'+mass newdef rho'+mass:Particle /Herwig/Particles/rho'+ newdef rho'+mass:BreitWignerShape 0 newdef rho'+mass:MaximumWeight 1.311 newdef rho'+mass:NGenerate 100 newdef /Herwig/Particles/rho'+:Mass_generator rho'+mass newdef /Herwig/Particles/rho'-:Mass_generator rho'+mass # create Herwig::GenericMassGenerator omega'mass newdef omega'mass:Particle /Herwig/Particles/omega' newdef omega'mass:BreitWignerShape 0 newdef omega'mass:MaximumWeight 1.40588 newdef omega'mass:NGenerate 100 newdef /Herwig/Particles/omega':Mass_generator omega'mass # create Herwig::GenericMassGenerator phi'mass newdef phi'mass:Particle /Herwig/Particles/phi' newdef phi'mass:BreitWignerShape 0 newdef phi'mass:MaximumWeight 1.28961 newdef phi'mass:NGenerate 100 newdef /Herwig/Particles/phi':Mass_generator phi'mass # create Herwig::GenericMassGenerator rho''0mass newdef rho''0mass:Particle /Herwig/Particles/rho''0 newdef rho''0mass:BreitWignerShape 0 newdef rho''0mass:MaximumWeight 1.22837 newdef rho''0mass:NGenerate 100 newdef /Herwig/Particles/rho''0:Mass_generator rho''0mass # create Herwig::GenericMassGenerator rho''+mass newdef rho''+mass:Particle /Herwig/Particles/rho''+ newdef rho''+mass:BreitWignerShape 0 newdef rho''+mass:MaximumWeight 1.23956 newdef rho''+mass:NGenerate 100 newdef /Herwig/Particles/rho''+:Mass_generator rho''+mass newdef /Herwig/Particles/rho''-:Mass_generator rho''+mass # create Herwig::GenericMassGenerator omega''mass newdef omega''mass:Particle /Herwig/Particles/omega'' newdef omega''mass:BreitWignerShape 0 newdef omega''mass:MaximumWeight 1.12653 newdef omega''mass:NGenerate 100 newdef /Herwig/Particles/omega'':Mass_generator omega''mass # create Herwig::GenericMassGenerator K''*+mass newdef K''*+mass:Particle /Herwig/Particles/K''*+ newdef K''*+mass:BreitWignerShape 0 newdef K''*+mass:MaximumWeight 1.1067 newdef K''*+mass:NGenerate 100 newdef /Herwig/Particles/K''*+:Mass_generator K''*+mass newdef /Herwig/Particles/K''*-:Mass_generator K''*+mass # create Herwig::GenericMassGenerator K''*0mass newdef K''*0mass:Particle /Herwig/Particles/K''*0 newdef K''*0mass:BreitWignerShape 0 newdef K''*0mass:MaximumWeight 1.10602 newdef K''*0mass:NGenerate 100 newdef /Herwig/Particles/K''*0:Mass_generator K''*0mass newdef /Herwig/Particles/K''*bar0:Mass_generator K''*0mass # create Herwig::GenericMassGenerator K'*0mass newdef K'*0mass:Particle /Herwig/Particles/K'*0 newdef K'*0mass:BreitWignerShape 0 newdef K'*0mass:MaximumWeight 1.51467 newdef K'*0mass:NGenerate 100 newdef /Herwig/Particles/K'*0:Mass_generator K'*0mass newdef /Herwig/Particles/K'*bar0:Mass_generator K'*0mass # create Herwig::GenericMassGenerator K'*+mass newdef K'*+mass:Particle /Herwig/Particles/K'*+ newdef K'*+mass:BreitWignerShape 0 newdef K'*+mass:MaximumWeight 1.51677 newdef K'*+mass:NGenerate 100 newdef /Herwig/Particles/K'*+:Mass_generator K'*+mass newdef /Herwig/Particles/K'*-:Mass_generator K'*+mass # create Herwig::GenericMassGenerator f_1mass newdef f_1mass:Particle /Herwig/Particles/f_1 newdef f_1mass:BreitWignerShape 0 newdef f_1mass:MaximumWeight 1.02692 newdef f_1mass:NGenerate 100 newdef /Herwig/Particles/f_1:Mass_generator f_1mass # create Herwig::GenericMassGenerator f'_1mass newdef f'_1mass:Particle /Herwig/Particles/f'_1 newdef f'_1mass:BreitWignerShape 0 newdef f'_1mass:MaximumWeight 1.39043 newdef f'_1mass:NGenerate 100 newdef /Herwig/Particles/f'_1:Mass_generator f'_1mass # create Herwig::GenericMassGenerator a_1+mass newdef a_1+mass:Particle /Herwig/Particles/a_1+ newdef a_1+mass:BreitWignerShape 0 newdef a_1+mass:MaximumWeight 1.35479 newdef a_1+mass:NGenerate 100 newdef /Herwig/Particles/a_1+:Mass_generator a_1+mass newdef /Herwig/Particles/a_1-:Mass_generator a_1+mass # create Herwig::GenericMassGenerator a_10mass newdef a_10mass:Particle /Herwig/Particles/a_10 newdef a_10mass:BreitWignerShape 0 newdef a_10mass:MaximumWeight 1.34964 newdef a_10mass:NGenerate 100 newdef /Herwig/Particles/a_10:Mass_generator a_10mass # create Herwig::GenericMassGenerator eta_cmass newdef eta_cmass:Particle /Herwig/Particles/eta_c newdef eta_cmass:BreitWignerShape 0 newdef eta_cmass:MaximumWeight 0.97256 newdef eta_cmass:NGenerate 100 newdef /Herwig/Particles/eta_c:Mass_generator eta_cmass # create Herwig::GenericMassGenerator eta_bmass newdef eta_bmass:Particle /Herwig/Particles/eta_b newdef eta_bmass:BreitWignerShape 0 newdef eta_bmass:MaximumWeight 0.968618 newdef eta_bmass:NGenerate 100 newdef /Herwig/Particles/eta_b:Mass_generator eta_bmass # create Herwig::GenericMassGenerator jpsimass newdef jpsimass:Particle /Herwig/Particles/Jpsi newdef jpsimass:BreitWignerShape 0 newdef jpsimass:MaximumWeight 0.968229 newdef jpsimass:NGenerate 100 newdef /Herwig/Particles/Jpsi:Mass_generator jpsimass # create Herwig::GenericMassGenerator Upsilon1Smass newdef Upsilon1Smass:Particle /Herwig/Particles/Upsilon newdef Upsilon1Smass:BreitWignerShape 0 newdef Upsilon1Smass:MaximumWeight 0.968197 newdef Upsilon1Smass:NGenerate 100 newdef /Herwig/Particles/Upsilon:Mass_generator Upsilon1Smass # create Herwig::GenericMassGenerator Upsilon2Smass newdef Upsilon2Smass:Particle /Herwig/Particles/Upsilon(2S) newdef Upsilon2Smass:BreitWignerShape 0 newdef Upsilon2Smass:MaximumWeight 0.968271 newdef Upsilon2Smass:NGenerate 100 newdef /Herwig/Particles/Upsilon(2S):Mass_generator Upsilon2Smass # create Herwig::GenericMassGenerator Upsilon3Smass newdef Upsilon3Smass:Particle /Herwig/Particles/Upsilon(3S) newdef Upsilon3Smass:BreitWignerShape 0 newdef Upsilon3Smass:MaximumWeight 0.968239 newdef Upsilon3Smass:NGenerate 100 newdef /Herwig/Particles/Upsilon(3S):Mass_generator Upsilon3Smass # create Herwig::GenericMassGenerator Upsilon4Smass newdef Upsilon4Smass:Particle /Herwig/Particles/Upsilon(4S) newdef Upsilon4Smass:BreitWignerShape 0 newdef Upsilon4Smass:MaximumWeight 0.837485 newdef Upsilon4Smass:NGenerate 100 newdef /Herwig/Particles/Upsilon(4S):Mass_generator Upsilon4Smass # create Herwig::GenericMassGenerator h_cmass newdef h_cmass:Particle /Herwig/Particles/h_c newdef h_cmass:BreitWignerShape 0 newdef h_cmass:MaximumWeight 0.969198 newdef h_cmass:NGenerate 100 newdef /Herwig/Particles/h_c:Mass_generator h_cmass # create Herwig::GenericMassGenerator h_bmass newdef h_bmass:Particle /Herwig/Particles/h_b newdef h_bmass:BreitWignerShape 0 newdef h_bmass:MaximumWeight 0.96831 newdef h_bmass:NGenerate 100 newdef /Herwig/Particles/h_b:Mass_generator h_bmass # create Herwig::GenericMassGenerator chi_c0mass newdef chi_c0mass:Particle /Herwig/Particles/chi_c0 newdef chi_c0mass:BreitWignerShape 0 newdef chi_c0mass:MaximumWeight 0.970333 newdef chi_c0mass:NGenerate 100 newdef /Herwig/Particles/chi_c0:Mass_generator chi_c0mass # create Herwig::GenericMassGenerator chi_b01Pmass newdef chi_b01Pmass:Particle /Herwig/Particles/chi_b0 newdef chi_b01Pmass:BreitWignerShape 0 newdef chi_b01Pmass:MaximumWeight 0.968236 newdef chi_b01Pmass:NGenerate 100 newdef /Herwig/Particles/chi_b0:Mass_generator chi_b01Pmass # create Herwig::GenericMassGenerator chi_c11Pmass newdef chi_c11Pmass:Particle /Herwig/Particles/chi_c1 newdef chi_c11Pmass:BreitWignerShape 0 newdef chi_c11Pmass:MaximumWeight 0.968321 newdef chi_c11Pmass:NGenerate 100 newdef /Herwig/Particles/chi_c1:Mass_generator chi_c11Pmass # create Herwig::GenericMassGenerator chi_b11Pmass newdef chi_b11Pmass:Particle /Herwig/Particles/chi_b1 newdef chi_b11Pmass:BreitWignerShape 0 newdef chi_b11Pmass:MaximumWeight 0.968199 newdef chi_b11Pmass:NGenerate 100 newdef /Herwig/Particles/chi_b1:Mass_generator chi_b11Pmass # create Herwig::GenericMassGenerator chi_b21Pmass newdef chi_b21Pmass:Particle /Herwig/Particles/chi_b2 newdef chi_b21Pmass:BreitWignerShape 0 newdef chi_b21Pmass:MaximumWeight 0.96832 newdef chi_b21Pmass:NGenerate 100 newdef /Herwig/Particles/chi_b2:Mass_generator chi_b21Pmass # create Herwig::GenericMassGenerator chi_c21Pmass newdef chi_c21Pmass:Particle /Herwig/Particles/chi_c2 newdef chi_c21Pmass:BreitWignerShape 0 newdef chi_c21Pmass:MaximumWeight 0.969798 newdef chi_c21Pmass:NGenerate 100 newdef /Herwig/Particles/chi_c2:Mass_generator chi_c21Pmass # create Herwig::GenericMassGenerator psi1dmass newdef psi1dmass:Particle /Herwig/Particles/psi(3770) newdef psi1dmass:BreitWignerShape 0 newdef psi1dmass:MaximumWeight 1.3333 newdef psi1dmass:NGenerate 100 newdef /Herwig/Particles/psi(3770):Mass_generator psi1dmass # create Herwig::GenericMassGenerator Upsilon_1(1D)mass newdef Upsilon_1(1D)mass:Particle /Herwig/Particles/Upsilon_1(1D) newdef Upsilon_1(1D)mass:BreitWignerShape 0 newdef Upsilon_1(1D)mass:MaximumWeight 0.968204 newdef Upsilon_1(1D)mass:NGenerate 100 newdef /Herwig/Particles/Upsilon_1(1D):Mass_generator Upsilon_1(1D)mass # create Herwig::GenericMassGenerator eta_c2Smass newdef eta_c2Smass:Particle /Herwig/Particles/eta_c(2S) newdef eta_c2Smass:BreitWignerShape 0 newdef eta_c2Smass:MaximumWeight 0.970053 newdef eta_c2Smass:NGenerate 100 newdef /Herwig/Particles/eta_c(2S):Mass_generator eta_c2Smass # create Herwig::GenericMassGenerator eta_b2Smass newdef eta_b2Smass:Particle /Herwig/Particles/eta_b(2S) newdef eta_b2Smass:BreitWignerShape 0 newdef eta_b2Smass:MaximumWeight 0.968397 newdef eta_b2Smass:NGenerate 100 newdef /Herwig/Particles/eta_b(2S):Mass_generator eta_b2Smass # create Herwig::GenericMassGenerator psi2smass newdef psi2smass:Particle /Herwig/Particles/psi(2S) newdef psi2smass:BreitWignerShape 0 newdef psi2smass:MaximumWeight 0.969726 newdef psi2smass:NGenerate 100 newdef /Herwig/Particles/psi(2S):Mass_generator psi2smass # create Herwig::GenericMassGenerator eta'''mass newdef eta'''mass:Particle /Herwig/Particles/eta(1405) newdef eta'''mass:BreitWignerShape 0 newdef eta'''mass:MaximumWeight 1.05081 newdef eta'''mass:NGenerate 100 newdef /Herwig/Particles/eta(1405):Mass_generator eta'''mass # create Herwig::GenericMassGenerator chi_b02Pmass newdef chi_b02Pmass:Particle /Herwig/Particles/chi_b0(2P) newdef chi_b02Pmass:BreitWignerShape 0 newdef chi_b02Pmass:MaximumWeight 0.968239 newdef chi_b02Pmass:NGenerate 100 newdef /Herwig/Particles/chi_b0(2P):Mass_generator chi_b02Pmass # create Herwig::GenericMassGenerator chi_b12Pmass newdef chi_b12Pmass:Particle /Herwig/Particles/chi_b1(2P) newdef chi_b12Pmass:BreitWignerShape 0 newdef chi_b12Pmass:MaximumWeight 0.9682 newdef chi_b12Pmass:NGenerate 100 newdef /Herwig/Particles/chi_b1(2P):Mass_generator chi_b12Pmass # create Herwig::GenericMassGenerator chi_b22Pmass newdef chi_b22Pmass:Particle /Herwig/Particles/chi_b2(2P) newdef chi_b22Pmass:BreitWignerShape 0 newdef chi_b22Pmass:MaximumWeight 0.968429 newdef chi_b22Pmass:NGenerate 100 newdef /Herwig/Particles/chi_b2(2P):Mass_generator chi_b22Pmass # create Herwig::GenericMassGenerator ZMass newdef ZMass:Particle /Herwig/Particles/Z0 newdef ZMass:BreitWignerShape 0 newdef ZMass:MaximumWeight 0.994276 newdef ZMass:NGenerate 100 newdef /Herwig/Particles/Z0:Mass_generator ZMass # create Herwig::GenericMassGenerator WMass newdef WMass:Particle /Herwig/Particles/W+ newdef WMass:BreitWignerShape 0 newdef WMass:MaximumWeight 0.99292 newdef WMass:NGenerate 100 newdef /Herwig/Particles/W+:Mass_generator WMass newdef /Herwig/Particles/W-:Mass_generator WMass # create Herwig::GenericMassGenerator Sigma(1660)-Mass newdef Sigma(1660)-Mass:Particle /Herwig/Particles/Sigma(1660)- newdef Sigma(1660)-Mass:BreitWignerShape 0 newdef Sigma(1660)-Mass:MaximumWeight 1.25314 newdef Sigma(1660)-Mass:NGenerate 100 newdef Sigma(1660)-Mass:WidthOption 0 newdef /Herwig/Particles/Sigma(1660)-:Mass_generator Sigma(1660)-Mass newdef /Herwig/Particles/Sigmabar(1660)+:Mass_generator Sigma(1660)-Mass # create Herwig::GenericMassGenerator Sigma(1660)0Mass newdef Sigma(1660)0Mass:Particle /Herwig/Particles/Sigma(1660)0 newdef Sigma(1660)0Mass:BreitWignerShape 0 newdef Sigma(1660)0Mass:MaximumWeight 1.25258 newdef Sigma(1660)0Mass:NGenerate 100 newdef Sigma(1660)0Mass:WidthOption 0 newdef /Herwig/Particles/Sigma(1660)0:Mass_generator Sigma(1660)0Mass newdef /Herwig/Particles/Sigmabar(1660)0:Mass_generator Sigma(1660)0Mass # create Herwig::GenericMassGenerator Sigma(1660)+Mass newdef Sigma(1660)+Mass:Particle /Herwig/Particles/Sigma(1660)+ newdef Sigma(1660)+Mass:BreitWignerShape 0 newdef Sigma(1660)+Mass:MaximumWeight 1.25193 newdef Sigma(1660)+Mass:NGenerate 100 newdef Sigma(1660)+Mass:WidthOption 0 newdef /Herwig/Particles/Sigmabar(1660)-:Mass_generator Sigma(1660)+Mass newdef /Herwig/Particles/Sigma(1660)+:Mass_generator Sigma(1660)+Mass # create Herwig::GenericMassGenerator Lambda(1600)0Mass newdef Lambda(1600)0Mass:Particle /Herwig/Particles/Lambda(1600)0 newdef Lambda(1600)0Mass:BreitWignerShape 0 newdef Lambda(1600)0Mass:MaximumWeight 1.52256 newdef Lambda(1600)0Mass:NGenerate 100 newdef Lambda(1600)0Mass:WidthOption 0 newdef /Herwig/Particles/Lambda(1600)0:Mass_generator Lambda(1600)0Mass newdef /Herwig/Particles/Lambdabar(1600)0:Mass_generator Lambda(1600)0Mass # create Herwig::GenericMassGenerator Xi(1690)0Mass newdef Xi(1690)0Mass:Particle /Herwig/Particles/Xi(1690)0 newdef Xi(1690)0Mass:BreitWignerShape 0 newdef Xi(1690)0Mass:MaximumWeight 1.39215 newdef Xi(1690)0Mass:NGenerate 100 newdef Xi(1690)0Mass:WidthOption 0 newdef /Herwig/Particles/Xi(1690)0:Mass_generator Xi(1690)0Mass newdef /Herwig/Particles/Xibar(1690)0:Mass_generator Xi(1690)0Mass # create Herwig::GenericMassGenerator Xi(1690)-Mass newdef Xi(1690)-Mass:Particle /Herwig/Particles/Xi(1690)- newdef Xi(1690)-Mass:BreitWignerShape 0 newdef Xi(1690)-Mass:MaximumWeight 1.37563 newdef Xi(1690)-Mass:NGenerate 100 newdef Xi(1690)-Mass:WidthOption 0 newdef /Herwig/Particles/Xi(1690)-:Mass_generator Xi(1690)-Mass newdef /Herwig/Particles/Xibar(1690)+:Mass_generator Xi(1690)-Mass # create Herwig::GenericMassGenerator Xi(1950)-Mass newdef Xi(1950)-Mass:Particle /Herwig/Particles/Xi(1950)- newdef Xi(1950)-Mass:BreitWignerShape 0 newdef Xi(1950)-Mass:MaximumWeight 1.08485 newdef Xi(1950)-Mass:NGenerate 100 newdef Xi(1950)-Mass:WidthOption 0 newdef /Herwig/Particles/Xi(1950)-:Mass_generator Xi(1950)-Mass newdef /Herwig/Particles/Xibar(1950)+:Mass_generator Xi(1950)-Mass # create Herwig::GenericMassGenerator Xi(1950)0Mass newdef Xi(1950)0Mass:Particle /Herwig/Particles/Xi(1950)0 newdef Xi(1950)0Mass:BreitWignerShape 0 newdef Xi(1950)0Mass:MaximumWeight 1.08534 newdef Xi(1950)0Mass:NGenerate 100 newdef Xi(1950)0Mass:WidthOption 0 newdef /Herwig/Particles/Xi(1950)0:Mass_generator Xi(1950)0Mass newdef /Herwig/Particles/Xibar(1950)0:Mass_generator Xi(1950)0Mass # create Herwig::GenericMassGenerator Lambda(1670)0Mass newdef Lambda(1670)0Mass:Particle /Herwig/Particles/Lambda(1670)0 newdef Lambda(1670)0Mass:BreitWignerShape 0 newdef Lambda(1670)0Mass:MaximumWeight 1.64537 newdef Lambda(1670)0Mass:NGenerate 100 newdef Lambda(1670)0Mass:WidthOption 0 newdef /Herwig/Particles/Lambda(1670)0:Mass_generator Lambda(1670)0Mass newdef /Herwig/Particles/Lambdabar(1670)0:Mass_generator Lambda(1670)0Mass # create Herwig::GenericMassGenerator Sigma(1750)-Mass newdef Sigma(1750)-Mass:Particle /Herwig/Particles/Sigma(1750)- newdef Sigma(1750)-Mass:BreitWignerShape 0 newdef Sigma(1750)-Mass:MaximumWeight 4.47503 newdef Sigma(1750)-Mass:NGenerate 100 newdef Sigma(1750)-Mass:WidthOption 0 newdef /Herwig/Particles/Sigma(1750)-:Mass_generator Sigma(1750)-Mass newdef /Herwig/Particles/Sigmabar(1750)+:Mass_generator Sigma(1750)-Mass # create Herwig::GenericMassGenerator Sigma(1750)0Mass newdef Sigma(1750)0Mass:Particle /Herwig/Particles/Sigma(1750)0 newdef Sigma(1750)0Mass:BreitWignerShape 0 newdef Sigma(1750)0Mass:MaximumWeight 4.09 newdef Sigma(1750)0Mass:NGenerate 100 newdef Sigma(1750)0Mass:WidthOption 0 newdef /Herwig/Particles/Sigma(1750)0:Mass_generator Sigma(1750)0Mass newdef /Herwig/Particles/Sigmabar(1750)0:Mass_generator Sigma(1750)0Mass # create Herwig::GenericMassGenerator Sigma(1750)+Mass newdef Sigma(1750)+Mass:Particle /Herwig/Particles/Sigma(1750)+ newdef Sigma(1750)+Mass:BreitWignerShape 0 newdef Sigma(1750)+Mass:MaximumWeight 3.7098 newdef Sigma(1750)+Mass:NGenerate 100 newdef Sigma(1750)+Mass:WidthOption 0 newdef /Herwig/Particles/Sigmabar(1750)-:Mass_generator Sigma(1750)+Mass newdef /Herwig/Particles/Sigma(1750)+:Mass_generator Sigma(1750)+Mass # create Herwig::GenericMassGenerator Delta-Mass newdef Delta-Mass:Particle /Herwig/Particles/Delta- newdef Delta-Mass:BreitWignerShape 0 newdef Delta-Mass:MaximumWeight 1.60348 newdef Delta-Mass:NGenerate 100 newdef Delta-Mass:WidthOption 0 newdef /Herwig/Particles/Delta-:Mass_generator Delta-Mass newdef /Herwig/Particles/Deltabar+:Mass_generator Delta-Mass # create Herwig::GenericMassGenerator Delta++Mass newdef Delta++Mass:Particle /Herwig/Particles/Delta++ newdef Delta++Mass:BreitWignerShape 0 newdef Delta++Mass:MaximumWeight 1.59686 newdef Delta++Mass:NGenerate 100 newdef Delta++Mass:WidthOption 0 newdef /Herwig/Particles/Delta++:Mass_generator Delta++Mass newdef /Herwig/Particles/Deltabar--:Mass_generator Delta++Mass # create Herwig::GenericMassGenerator Sigma*-Mass newdef Sigma*-Mass:Particle /Herwig/Particles/Sigma*- newdef Sigma*-Mass:BreitWignerShape 0 newdef Sigma*-Mass:MaximumWeight 1.25525 newdef Sigma*-Mass:NGenerate 100 newdef Sigma*-Mass:WidthOption 0 newdef /Herwig/Particles/Sigma*-:Mass_generator Sigma*-Mass newdef /Herwig/Particles/Sigma*bar+:Mass_generator Sigma*-Mass # create Herwig::GenericMassGenerator Sigma*0Mass newdef Sigma*0Mass:Particle /Herwig/Particles/Sigma*0 newdef Sigma*0Mass:BreitWignerShape 0 newdef Sigma*0Mass:MaximumWeight 1.22803 newdef Sigma*0Mass:NGenerate 100 newdef Sigma*0Mass:WidthOption 0 newdef /Herwig/Particles/Sigma*0:Mass_generator Sigma*0Mass newdef /Herwig/Particles/Sigma*bar0:Mass_generator Sigma*0Mass # create Herwig::GenericMassGenerator Sigma*+Mass newdef Sigma*+Mass:Particle /Herwig/Particles/Sigma*+ newdef Sigma*+Mass:BreitWignerShape 0 newdef Sigma*+Mass:MaximumWeight 1.23799 newdef Sigma*+Mass:NGenerate 100 newdef Sigma*+Mass:WidthOption 0 newdef /Herwig/Particles/Sigma*+:Mass_generator Sigma*+Mass newdef /Herwig/Particles/Sigma*bar-:Mass_generator Sigma*+Mass # create Herwig::GenericMassGenerator Xi*-Mass newdef Xi*-Mass:Particle /Herwig/Particles/Xi*- newdef Xi*-Mass:BreitWignerShape 0 newdef Xi*-Mass:MaximumWeight 1.07001 newdef Xi*-Mass:NGenerate 100 newdef Xi*-Mass:WidthOption 0 newdef /Herwig/Particles/Xi*-:Mass_generator Xi*-Mass newdef /Herwig/Particles/Xi*bar+:Mass_generator Xi*-Mass # create Herwig::GenericMassGenerator Xi*0Mass newdef Xi*0Mass:Particle /Herwig/Particles/Xi*0 newdef Xi*0Mass:BreitWignerShape 0 newdef Xi*0Mass:MaximumWeight 1.06997 newdef Xi*0Mass:NGenerate 100 newdef Xi*0Mass:WidthOption 0 newdef /Herwig/Particles/Xi*0:Mass_generator Xi*0Mass newdef /Herwig/Particles/Xi*bar0:Mass_generator Xi*0Mass # create Herwig::GenericMassGenerator n(1440)0Mass newdef n(1440)0Mass:Particle /Herwig/Particles/n(1440)0 newdef n(1440)0Mass:BreitWignerShape 0 newdef n(1440)0Mass:MaximumWeight 1.97368 newdef n(1440)0Mass:NGenerate 100 newdef n(1440)0Mass:WidthOption 0 newdef /Herwig/Particles/nbar(1440):Mass_generator n(1440)0Mass newdef /Herwig/Particles/n(1440)0:Mass_generator n(1440)0Mass # create Herwig::GenericMassGenerator p(1440)+Mass newdef p(1440)+Mass:Particle /Herwig/Particles/p(1440)+ newdef p(1440)+Mass:BreitWignerShape 0 newdef p(1440)+Mass:MaximumWeight 1.97418 newdef p(1440)+Mass:NGenerate 100 newdef p(1440)+Mass:WidthOption 0 newdef /Herwig/Particles/p(1440)+:Mass_generator p(1440)+Mass newdef /Herwig/Particles/pbar(1440):Mass_generator p(1440)+Mass # create Herwig::GenericMassGenerator n(1535)0Mass newdef n(1535)0Mass:Particle /Herwig/Particles/n(1535)0 newdef n(1535)0Mass:BreitWignerShape 0 newdef n(1535)0Mass:MaximumWeight 2.49438 newdef n(1535)0Mass:NGenerate 100 newdef n(1535)0Mass:WidthOption 0 newdef /Herwig/Particles/nbar(1535):Mass_generator n(1535)0Mass newdef /Herwig/Particles/n(1535)0:Mass_generator n(1535)0Mass # create Herwig::GenericMassGenerator p(1535)+Mass newdef p(1535)+Mass:Particle /Herwig/Particles/p(1535)+ newdef p(1535)+Mass:BreitWignerShape 0 newdef p(1535)+Mass:MaximumWeight 2.44019 newdef p(1535)+Mass:NGenerate 100 newdef p(1535)+Mass:WidthOption 0 newdef /Herwig/Particles/p(1535)+:Mass_generator p(1535)+Mass newdef /Herwig/Particles/pbar(1535):Mass_generator p(1535)+Mass # create Herwig::GenericMassGenerator p(1520)+Mass newdef p(1520)+Mass:Particle /Herwig/Particles/p(1520)+ newdef p(1520)+Mass:BreitWignerShape 0 newdef p(1520)+Mass:MaximumWeight 1.27705 newdef p(1520)+Mass:NGenerate 100 newdef p(1520)+Mass:WidthOption 0 newdef /Herwig/Particles/pbar(1520)-:Mass_generator p(1520)+Mass newdef /Herwig/Particles/p(1520)+:Mass_generator p(1520)+Mass # create Herwig::GenericMassGenerator n(1520)0Mass newdef n(1520)0Mass:Particle /Herwig/Particles/n(1520)0 newdef n(1520)0Mass:BreitWignerShape 0 newdef n(1520)0Mass:MaximumWeight 1.27659 newdef n(1520)0Mass:NGenerate 100 newdef n(1520)0Mass:WidthOption 0 newdef /Herwig/Particles/n(1520)0:Mass_generator n(1520)0Mass newdef /Herwig/Particles/nbar(1520)0:Mass_generator n(1520)0Mass # create Herwig::GenericMassGenerator Delta+Mass newdef Delta+Mass:Particle /Herwig/Particles/Delta+ newdef Delta+Mass:BreitWignerShape 0 newdef Delta+Mass:MaximumWeight 1.58661 newdef Delta+Mass:NGenerate 100 newdef Delta+Mass:WidthOption 0 newdef /Herwig/Particles/Delta+:Mass_generator Delta+Mass newdef /Herwig/Particles/Deltabar-:Mass_generator Delta+Mass # create Herwig::GenericMassGenerator Delta0Mass newdef Delta0Mass:Particle /Herwig/Particles/Delta0 newdef Delta0Mass:BreitWignerShape 0 newdef Delta0Mass:MaximumWeight 1.58872 newdef Delta0Mass:NGenerate 100 newdef Delta0Mass:WidthOption 0 newdef /Herwig/Particles/Delta0:Mass_generator Delta0Mass newdef /Herwig/Particles/Deltabar0:Mass_generator Delta0Mass # create Herwig::GenericMassGenerator Lambda(1690)0Mass newdef Lambda(1690)0Mass:Particle /Herwig/Particles/Lambda(1690)0 newdef Lambda(1690)0Mass:BreitWignerShape 0 newdef Lambda(1690)0Mass:MaximumWeight 1.0242 newdef Lambda(1690)0Mass:NGenerate 100 newdef Lambda(1690)0Mass:WidthOption 0 newdef /Herwig/Particles/Lambda(1690)0:Mass_generator Lambda(1690)0Mass newdef /Herwig/Particles/Lambdabar(1690)0:Mass_generator Lambda(1690)0Mass # create Herwig::GenericMassGenerator Sigma(1670)+Mass newdef Sigma(1670)+Mass:Particle /Herwig/Particles/Sigma(1670)+ newdef Sigma(1670)+Mass:BreitWignerShape 0 newdef Sigma(1670)+Mass:MaximumWeight 1.1161 newdef Sigma(1670)+Mass:NGenerate 100 newdef Sigma(1670)+Mass:WidthOption 0 newdef /Herwig/Particles/Sigma(1670)+:Mass_generator Sigma(1670)+Mass newdef /Herwig/Particles/Sigmabar(1670)-:Mass_generator Sigma(1670)+Mass # create Herwig::GenericMassGenerator Sigma(1670)0Mass newdef Sigma(1670)0Mass:Particle /Herwig/Particles/Sigma(1670)0 newdef Sigma(1670)0Mass:BreitWignerShape 0 newdef Sigma(1670)0Mass:MaximumWeight 1.11718 newdef Sigma(1670)0Mass:NGenerate 100 newdef Sigma(1670)0Mass:WidthOption 0 newdef /Herwig/Particles/Sigma(1670)0:Mass_generator Sigma(1670)0Mass newdef /Herwig/Particles/Sigmabar(1670)0:Mass_generator Sigma(1670)0Mass # create Herwig::GenericMassGenerator Sigma(1670)-Mass newdef Sigma(1670)-Mass:Particle /Herwig/Particles/Sigma(1670)- newdef Sigma(1670)-Mass:BreitWignerShape 0 newdef Sigma(1670)-Mass:MaximumWeight 1.11731 newdef Sigma(1670)-Mass:NGenerate 100 newdef Sigma(1670)-Mass:WidthOption 0 newdef /Herwig/Particles/Sigma(1670)-:Mass_generator Sigma(1670)-Mass newdef /Herwig/Particles/Sigmabar(1670)+:Mass_generator Sigma(1670)-Mass # create Herwig::GenericMassGenerator Xi(1820)0Mass newdef Xi(1820)0Mass:Particle /Herwig/Particles/Xi(1820)0 newdef Xi(1820)0Mass:BreitWignerShape 0 newdef Xi(1820)0Mass:MaximumWeight 1.04511 newdef Xi(1820)0Mass:NGenerate 100 newdef Xi(1820)0Mass:WidthOption 0 newdef /Herwig/Particles/Xi(1820)0:Mass_generator Xi(1820)0Mass newdef /Herwig/Particles/Xibar(1820)0:Mass_generator Xi(1820)0Mass # create Herwig::GenericMassGenerator Xi(1820)-Mass newdef Xi(1820)-Mass:Particle /Herwig/Particles/Xi(1820)- newdef Xi(1820)-Mass:BreitWignerShape 0 newdef Xi(1820)-Mass:MaximumWeight 1.04486 newdef Xi(1820)-Mass:NGenerate 100 newdef Xi(1820)-Mass:WidthOption 0 newdef /Herwig/Particles/Xi(1820)-:Mass_generator Xi(1820)-Mass newdef /Herwig/Particles/Xibar(1820)+:Mass_generator Xi(1820)-Mass # create Herwig::GenericMassGenerator Lambda(1405)0Mass newdef Lambda(1405)0Mass:Particle /Herwig/Particles/Lambda(1405)0 newdef Lambda(1405)0Mass:BreitWignerShape 0 newdef Lambda(1405)0Mass:MaximumWeight 1.24865 newdef Lambda(1405)0Mass:NGenerate 100 newdef Lambda(1405)0Mass:WidthOption 0 newdef /Herwig/Particles/Lambda(1405)0:Mass_generator Lambda(1405)0Mass newdef /Herwig/Particles/Lambdabar(1405)0:Mass_generator Lambda(1405)0Mass # create Herwig::GenericMassGenerator Lambda(1520)0Mass newdef Lambda(1520)0Mass:Particle /Herwig/Particles/Lambda(1520)0 newdef Lambda(1520)0Mass:BreitWignerShape 0 newdef Lambda(1520)0Mass:MaximumWeight 1.11507 newdef Lambda(1520)0Mass:NGenerate 100 newdef Lambda(1520)0Mass:WidthOption 0 newdef /Herwig/Particles/Lambda(1520)0:Mass_generator Lambda(1520)0Mass newdef /Herwig/Particles/Lambdabar(1520)0:Mass_generator Lambda(1520)0Mass # create Herwig::GenericMassGenerator Sigma_c++Mass newdef Sigma_c++Mass:Particle /Herwig/Particles/Sigma_c++ newdef Sigma_c++Mass:BreitWignerShape 0 newdef Sigma_c++Mass:MaximumWeight 1.03189 newdef Sigma_c++Mass:NGenerate 100 newdef Sigma_c++Mass:WidthOption 0 newdef /Herwig/Particles/Sigma_c++:Mass_generator Sigma_c++Mass newdef /Herwig/Particles/Sigmabar_c--:Mass_generator Sigma_c++Mass # create Herwig::GenericMassGenerator Sigma_c+Mass newdef Sigma_c+Mass:Particle /Herwig/Particles/Sigma_c+ newdef Sigma_c+Mass:BreitWignerShape 0 newdef Sigma_c+Mass:MaximumWeight 1.02536 newdef Sigma_c+Mass:NGenerate 100 newdef Sigma_c+Mass:WidthOption 0 newdef /Herwig/Particles/Sigma_c+:Mass_generator Sigma_c+Mass newdef /Herwig/Particles/Sigmabar_c-:Mass_generator Sigma_c+Mass # create Herwig::GenericMassGenerator Sigma_c0Mass newdef Sigma_c0Mass:Particle /Herwig/Particles/Sigma_c0 newdef Sigma_c0Mass:BreitWignerShape 0 newdef Sigma_c0Mass:MaximumWeight 1.03157 newdef Sigma_c0Mass:NGenerate 100 newdef Sigma_c0Mass:WidthOption 0 newdef /Herwig/Particles/Sigma_c0:Mass_generator Sigma_c0Mass newdef /Herwig/Particles/Sigmabar_c0:Mass_generator Sigma_c0Mass # create Herwig::GenericMassGenerator Sigma*_c++Mass newdef Sigma*_c++Mass:Particle /Herwig/Particles/Sigma*_c++ newdef Sigma*_c++Mass:BreitWignerShape 0 newdef Sigma*_c++Mass:MaximumWeight 1.07934 newdef Sigma*_c++Mass:NGenerate 100 newdef Sigma*_c++Mass:WidthOption 0 newdef /Herwig/Particles/Sigma*_c++:Mass_generator Sigma*_c++Mass newdef /Herwig/Particles/Sigmabar*_c--:Mass_generator Sigma*_c++Mass # create Herwig::GenericMassGenerator Sigma*_c+Mass newdef Sigma*_c+Mass:Particle /Herwig/Particles/Sigma*_c+ newdef Sigma*_c+Mass:BreitWignerShape 0 newdef Sigma*_c+Mass:MaximumWeight 1.0884 newdef Sigma*_c+Mass:NGenerate 100 newdef Sigma*_c+Mass:WidthOption 0 newdef /Herwig/Particles/Sigma*_c+:Mass_generator Sigma*_c+Mass newdef /Herwig/Particles/Sigmabar*_c-:Mass_generator Sigma*_c+Mass # create Herwig::GenericMassGenerator Sigma*_c0Mass newdef Sigma*_c0Mass:Particle /Herwig/Particles/Sigma*_c0 newdef Sigma*_c0Mass:BreitWignerShape 0 newdef Sigma*_c0Mass:MaximumWeight 1.09369 newdef Sigma*_c0Mass:NGenerate 100 newdef Sigma*_c0Mass:WidthOption 0 newdef /Herwig/Particles/Sigma*_c0:Mass_generator Sigma*_c0Mass newdef /Herwig/Particles/Sigmabar*_c0:Mass_generator Sigma*_c0Mass # create Herwig::GenericMassGenerator Sigma_b+Mass newdef Sigma_b+Mass:Particle /Herwig/Particles/Sigma_b+ newdef Sigma_b+Mass:BreitWignerShape 0 newdef Sigma_b+Mass:MaximumWeight 1.05901 newdef Sigma_b+Mass:NGenerate 100 newdef Sigma_b+Mass:WidthOption 0 newdef /Herwig/Particles/Sigma_b+:Mass_generator Sigma_b+Mass newdef /Herwig/Particles/Sigma_bbar-:Mass_generator Sigma_b+Mass # create Herwig::GenericMassGenerator Sigma_b0Mass newdef Sigma_b0Mass:Particle /Herwig/Particles/Sigma_b0 newdef Sigma_b0Mass:BreitWignerShape 0 newdef Sigma_b0Mass:MaximumWeight 1.0726 newdef Sigma_b0Mass:NGenerate 100 newdef Sigma_b0Mass:WidthOption 0 newdef /Herwig/Particles/Sigma_bbar0:Mass_generator Sigma_b0Mass newdef /Herwig/Particles/Sigma_b0:Mass_generator Sigma_b0Mass # create Herwig::GenericMassGenerator Sigma_b-Mass newdef Sigma_b-Mass:Particle /Herwig/Particles/Sigma_b- newdef Sigma_b-Mass:BreitWignerShape 0 newdef Sigma_b-Mass:MaximumWeight 1.07594 newdef Sigma_b-Mass:NGenerate 100 newdef Sigma_b-Mass:WidthOption 0 newdef /Herwig/Particles/Sigma_b-:Mass_generator Sigma_b-Mass newdef /Herwig/Particles/Sigma_bbar+:Mass_generator Sigma_b-Mass # create Herwig::GenericMassGenerator Sigma*_b+Mass newdef Sigma*_b+Mass:Particle /Herwig/Particles/Sigma_b*+ newdef Sigma*_b+Mass:BreitWignerShape 0 newdef Sigma*_b+Mass:MaximumWeight 1.10853 newdef Sigma*_b+Mass:NGenerate 100 newdef Sigma*_b+Mass:WidthOption 0 newdef /Herwig/Particles/Sigma_b*+:Mass_generator Sigma*_b+Mass newdef /Herwig/Particles/Sigma_b*bar-:Mass_generator Sigma*_b+Mass # create Herwig::GenericMassGenerator Sigma*_b0Mass newdef Sigma*_b0Mass:Particle /Herwig/Particles/Sigma_b*0 newdef Sigma*_b0Mass:BreitWignerShape 0 newdef Sigma*_b0Mass:MaximumWeight 1.12129 newdef Sigma*_b0Mass:NGenerate 100 newdef Sigma*_b0Mass:WidthOption 0 newdef /Herwig/Particles/Sigma_b*bar0:Mass_generator Sigma*_b0Mass newdef /Herwig/Particles/Sigma_b*0:Mass_generator Sigma*_b0Mass # create Herwig::GenericMassGenerator Sigma*_b-Mass newdef Sigma*_b-Mass:Particle /Herwig/Particles/Sigma_b*- newdef Sigma*_b-Mass:BreitWignerShape 0 newdef Sigma*_b-Mass:MaximumWeight 1.12506 newdef Sigma*_b-Mass:NGenerate 100 newdef Sigma*_b-Mass:WidthOption 0 newdef /Herwig/Particles/Sigma_b*-:Mass_generator Sigma*_b-Mass newdef /Herwig/Particles/Sigma_b*bar+:Mass_generator Sigma*_b-Mass # create Herwig::GenericMassGenerator Xi'_c+Mass newdef Xi'_c+Mass:Particle /Herwig/Particles/Xi'_c+ newdef Xi'_c+Mass:BreitWignerShape 0 newdef Xi'_c+Mass:MaximumWeight 0.968365 newdef Xi'_c+Mass:NGenerate 100 newdef Xi'_c+Mass:WidthOption 0 newdef /Herwig/Particles/Xi'_c+:Mass_generator Xi'_c+Mass newdef /Herwig/Particles/Xi'_cbar-:Mass_generator Xi'_c+Mass # create Herwig::GenericMassGenerator Xi'_c0Mass newdef Xi'_c0Mass:Particle /Herwig/Particles/Xi'_c0 newdef Xi'_c0Mass:BreitWignerShape 0 newdef Xi'_c0Mass:MaximumWeight 0.968198 newdef Xi'_c0Mass:NGenerate 100 newdef Xi'_c0Mass:WidthOption 0 newdef /Herwig/Particles/Xi'_c0:Mass_generator Xi'_c0Mass newdef /Herwig/Particles/Xi'_cbar0:Mass_generator Xi'_c0Mass # create Herwig::GenericMassGenerator Xi'_b0Mass newdef Xi'_b0Mass:Particle /Herwig/Particles/Xi_b'0 newdef Xi'_b0Mass:BreitWignerShape 0 newdef Xi'_b0Mass:MaximumWeight 0.96838 newdef Xi'_b0Mass:NGenerate 100 newdef Xi'_b0Mass:WidthOption 0 newdef /Herwig/Particles/Xi_b'bar0:Mass_generator Xi'_b0Mass newdef /Herwig/Particles/Xi_b'0:Mass_generator Xi'_b0Mass # create Herwig::GenericMassGenerator Xi'_b-Mass newdef Xi'_b-Mass:Particle /Herwig/Particles/Xi_b'- newdef Xi'_b-Mass:BreitWignerShape 0 newdef Xi'_b-Mass:MaximumWeight 0.968198 newdef Xi'_b-Mass:NGenerate 100 newdef Xi'_b-Mass:WidthOption 0 newdef /Herwig/Particles/Xi_b'-:Mass_generator Xi'_b-Mass newdef /Herwig/Particles/Xi_b'bar+:Mass_generator Xi'_b-Mass # create Herwig::GenericMassGenerator Xi*_c+Mass newdef Xi*_c+Mass:Particle /Herwig/Particles/Xi_c*+ newdef Xi*_c+Mass:BreitWignerShape 0 newdef Xi*_c+Mass:MaximumWeight 1.03241 newdef Xi*_c+Mass:NGenerate 100 newdef Xi*_c+Mass:WidthOption 0 newdef /Herwig/Particles/Xi_c*+:Mass_generator Xi*_c+Mass newdef /Herwig/Particles/Xi_c*bar-:Mass_generator Xi*_c+Mass # create Herwig::GenericMassGenerator Xi*_c0Mass newdef Xi*_c0Mass:Particle /Herwig/Particles/Xi_c*0 newdef Xi*_c0Mass:BreitWignerShape 0 newdef Xi*_c0Mass:MaximumWeight 1.03114 newdef Xi*_c0Mass:NGenerate 100 newdef Xi*_c0Mass:WidthOption 0 newdef /Herwig/Particles/Xi_c*bar0:Mass_generator Xi*_c0Mass newdef /Herwig/Particles/Xi_c*0:Mass_generator Xi*_c0Mass # create Herwig::GenericMassGenerator Xi*_b0Mass newdef Xi*_b0Mass:Particle /Herwig/Particles/Xi_b*0 newdef Xi*_b0Mass:BreitWignerShape 0 newdef Xi*_b0Mass:MaximumWeight 1.04382 newdef Xi*_b0Mass:NGenerate 100 newdef Xi*_b0Mass:WidthOption 0 newdef /Herwig/Particles/Xi_b*bar0:Mass_generator Xi*_b0Mass newdef /Herwig/Particles/Xi_b*0:Mass_generator Xi*_b0Mass # create Herwig::GenericMassGenerator Xi*_b-Mass newdef Xi*_b-Mass:Particle /Herwig/Particles/Xi_b*- newdef Xi*_b-Mass:BreitWignerShape 0 newdef Xi*_b-Mass:MaximumWeight 1.04232 newdef Xi*_b-Mass:NGenerate 100 newdef Xi*_b-Mass:WidthOption 0 newdef /Herwig/Particles/Xi_b*-:Mass_generator Xi*_b-Mass newdef /Herwig/Particles/Xi_b*bar+:Mass_generator Xi*_b-Mass # create Herwig::GenericMassGenerator Lambda'_cMass newdef Lambda'_cMass:Particle /Herwig/Particles/Lambda_c(2593)+ newdef Lambda'_cMass:BreitWignerShape 0 newdef Lambda'_cMass:MaximumWeight 1.25388 newdef Lambda'_cMass:NGenerate 100 newdef Lambda'_cMass:WidthOption 0 newdef /Herwig/Particles/Lambda_c(2593)+:Mass_generator Lambda'_cMass newdef /Herwig/Particles/Lambda_c(2593)bar-:Mass_generator Lambda'_cMass # create Herwig::GenericMassGenerator Lambda*_cMass newdef Lambda*_cMass:Particle /Herwig/Particles/Lambda_c(2625)+ newdef Lambda*_cMass:BreitWignerShape 0 newdef Lambda*_cMass:MaximumWeight 0.936816 newdef Lambda*_cMass:NGenerate 100 newdef Lambda*_cMass:WidthOption 0 newdef /Herwig/Particles/Lambda_c(2625)+:Mass_generator Lambda*_cMass newdef /Herwig/Particles/Lambda_c(2625)bar-:Mass_generator Lambda*_cMass # create Herwig::GenericMassGenerator Lambda'_bMass newdef Lambda'_bMass:Particle /Herwig/Particles/Lambda_b10 newdef Lambda'_bMass:BreitWignerShape 0 newdef Lambda'_bMass:MaximumWeight 1.08571 newdef Lambda'_bMass:NGenerate 100 newdef Lambda'_bMass:WidthOption 0 newdef /Herwig/Particles/Lambda_b1bar0:Mass_generator Lambda'_bMass newdef /Herwig/Particles/Lambda_b10:Mass_generator Lambda'_bMass # create Herwig::GenericMassGenerator Lambda*_bMass newdef Lambda*_bMass:Particle /Herwig/Particles/Lambda_b1*0 newdef Lambda*_bMass:BreitWignerShape 0 newdef Lambda*_bMass:MaximumWeight 0.968317 newdef Lambda*_bMass:NGenerate 100 newdef Lambda*_bMass:WidthOption 0 newdef /Herwig/Particles/Lambda_b1*0:Mass_generator Lambda*_bMass newdef /Herwig/Particles/Lambda_b1*bar0:Mass_generator Lambda*_bMass # create Herwig::GenericMassGenerator Omega_c*0Mass newdef Omega_c*0Mass:Particle /Herwig/Particles/Omega_c*0 newdef Omega_c*0Mass:BreitWignerShape 0 newdef Omega_c*0Mass:MaximumWeight 0.969009 newdef Omega_c*0Mass:NGenerate 100 newdef Omega_c*0Mass:WidthOption 0 newdef /Herwig/Particles/Omega_c*0:Mass_generator Omega_c*0Mass newdef /Herwig/Particles/Omega_c*bar0:Mass_generator Omega_c*0Mass # create Herwig::GenericMassGenerator Omega_b*-Mass newdef Omega_b*-Mass:Particle /Herwig/Particles/Omega_b*- newdef Omega_b*-Mass:BreitWignerShape 0 newdef Omega_b*-Mass:MaximumWeight 0.968299 newdef Omega_b*-Mass:NGenerate 100 newdef Omega_b*-Mass:WidthOption 0 newdef /Herwig/Particles/Omega_b*bar+:Mass_generator Omega_b*-Mass newdef /Herwig/Particles/Omega_b*-:Mass_generator Omega_b*-Mass # create Herwig::GenericMassGenerator Xi_c1+Mass newdef Xi_c1+Mass:Particle /Herwig/Particles/Xi_c(2790)+ newdef Xi_c1+Mass:BreitWignerShape 0 newdef Xi_c1+Mass:MaximumWeight 0.972612 newdef Xi_c1+Mass:NGenerate 100 newdef Xi_c1+Mass:WidthOption 0 newdef /Herwig/Particles/Xi_c(2790)+:Mass_generator Xi_c1+Mass newdef /Herwig/Particles/Xi_c(2790)bar-:Mass_generator Xi_c1+Mass # create Herwig::GenericMassGenerator Xi_c10Mass newdef Xi_c10Mass:Particle /Herwig/Particles/Xi_c(2790)0 newdef Xi_c10Mass:BreitWignerShape 0 newdef Xi_c10Mass:MaximumWeight 0.972432 newdef Xi_c10Mass:NGenerate 100 newdef Xi_c10Mass:WidthOption 0 newdef /Herwig/Particles/Xi_c(2790)0:Mass_generator Xi_c10Mass newdef /Herwig/Particles/Xi_c(2790)bar0:Mass_generator Xi_c10Mass # create Herwig::GenericMassGenerator Xi_c1*0Mass newdef Xi_c1*0Mass:Particle /Herwig/Particles/Xi_c(2815)0 newdef Xi_c1*0Mass:BreitWignerShape 0 newdef Xi_c1*0Mass:MaximumWeight 0.982198 newdef Xi_c1*0Mass:NGenerate 100 newdef Xi_c1*0Mass:WidthOption 0 newdef /Herwig/Particles/Xi_c(2815)0:Mass_generator Xi_c1*0Mass newdef /Herwig/Particles/Xi_c(2815)bar0:Mass_generator Xi_c1*0Mass # create Herwig::GenericMassGenerator Xi_c1*+Mass newdef Xi_c1*+Mass:Particle /Herwig/Particles/Xi_c(2815)+ newdef Xi_c1*+Mass:BreitWignerShape 0 newdef Xi_c1*+Mass:MaximumWeight 0.982659 newdef Xi_c1*+Mass:NGenerate 100 newdef Xi_c1*+Mass:WidthOption 0 newdef /Herwig/Particles/Xi_c(2815)+:Mass_generator Xi_c1*+Mass newdef /Herwig/Particles/Xi_c(2815)bar-:Mass_generator Xi_c1*+Mass # create Herwig::GenericMassGenerator Xi_b1*0Mass newdef Xi_b1*0Mass:Particle /Herwig/Particles/Xi_b1*0 newdef Xi_b1*0Mass:BreitWignerShape 0 newdef Xi_b1*0Mass:MaximumWeight 0.982664 newdef Xi_b1*0Mass:NGenerate 100 newdef Xi_b1*0Mass:WidthOption 0 newdef /Herwig/Particles/Xi_b1*0:Mass_generator Xi_b1*0Mass newdef /Herwig/Particles/Xi_b1*bar0:Mass_generator Xi_b1*0Mass # create Herwig::GenericMassGenerator Xi_b1*-Mass newdef Xi_b1*-Mass:Particle /Herwig/Particles/Xi_b1*- newdef Xi_b1*-Mass:BreitWignerShape 0 newdef Xi_b1*-Mass:MaximumWeight 0.982221 newdef Xi_b1*-Mass:NGenerate 100 newdef Xi_b1*-Mass:WidthOption 0 newdef /Herwig/Particles/Xi_b1*-:Mass_generator Xi_b1*-Mass newdef /Herwig/Particles/Xi_b1*bar+:Mass_generator Xi_b1*-Mass # create Herwig::GenericMassGenerator Xi_b1-Mass newdef Xi_b1-Mass:Particle /Herwig/Particles/Xi_b1- newdef Xi_b1-Mass:BreitWignerShape 0 newdef Xi_b1-Mass:MaximumWeight 0.973502 newdef Xi_b1-Mass:NGenerate 100 newdef Xi_b1-Mass:WidthOption 0 newdef /Herwig/Particles/Xi_b1-:Mass_generator Xi_b1-Mass newdef /Herwig/Particles/Xi_b1bar+:Mass_generator Xi_b1-Mass # create Herwig::GenericMassGenerator Xi_b10Mass newdef Xi_b10Mass:Particle /Herwig/Particles/Xi_b10 newdef Xi_b10Mass:BreitWignerShape 0 newdef Xi_b10Mass:MaximumWeight 0.973726 newdef Xi_b10Mass:NGenerate 100 newdef Xi_b10Mass:WidthOption 0 newdef /Herwig/Particles/Xi_b1bar0:Mass_generator Xi_b10Mass newdef /Herwig/Particles/Xi_b10:Mass_generator Xi_b10Mass # create Herwig::GenericMassGenerator f0(1500)Mass newdef f0(1500)Mass:Particle /Herwig/Particles/f_0(1500) newdef f0(1500)Mass:BreitWignerShape 0 newdef f0(1500)Mass:MaximumWeight 1.12285 newdef f0(1500)Mass:NGenerate 100 newdef /Herwig/Particles/f_0(1500):Mass_generator f0(1500)Mass # create Herwig::GenericMassGenerator rho_30Mass newdef rho_30Mass:Particle /Herwig/Particles/rho_30 newdef rho_30Mass:BreitWignerShape 0 newdef rho_30Mass:MaximumWeight 0.956393 newdef rho_30Mass:NGenerate 100 newdef /Herwig/Particles/rho_30:Mass_generator rho_30Mass # create Herwig::GenericMassGenerator rho_3+Mass newdef rho_3+Mass:Particle /Herwig/Particles/rho_3+ newdef rho_3+Mass:BreitWignerShape 0 newdef rho_3+Mass:MaximumWeight 0.956393 newdef rho_3+Mass:NGenerate 100 newdef /Herwig/Particles/rho_3+:Mass_generator rho_3+Mass newdef /Herwig/Particles/rho_3-:Mass_generator rho_3+Mass # create Herwig::GenericMassGenerator omega_3Mass newdef omega_3Mass:Particle /Herwig/Particles/omega_3 newdef omega_3Mass:BreitWignerShape 0 newdef omega_3Mass:MaximumWeight 0.887309 newdef omega_3Mass:NGenerate 100 newdef /Herwig/Particles/omega_3:Mass_generator omega_3Mass # create Herwig::GenericMassGenerator phi_3Mass newdef phi_3Mass:Particle /Herwig/Particles/phi_3 newdef phi_3Mass:BreitWignerShape 0 newdef phi_3Mass:MaximumWeight 0.958159 newdef phi_3Mass:NGenerate 100 newdef /Herwig/Particles/phi_3:Mass_generator phi_3Mass # create Herwig::GenericMassGenerator pi_20Mass newdef pi_20Mass:Particle /Herwig/Particles/pi_20 newdef pi_20Mass:BreitWignerShape 0 newdef pi_20Mass:MaximumWeight 0.785925 newdef pi_20Mass:NGenerate 100 newdef /Herwig/Particles/pi_20:Mass_generator pi_20Mass # create Herwig::GenericMassGenerator pi_2+Mass newdef pi_2+Mass:Particle /Herwig/Particles/pi_2+ newdef pi_2+Mass:BreitWignerShape 0 newdef pi_2+Mass:MaximumWeight 0.785968 newdef pi_2+Mass:NGenerate 100 newdef /Herwig/Particles/pi_2+:Mass_generator pi_2+Mass newdef /Herwig/Particles/pi_2-:Mass_generator pi_2+Mass # create Herwig::GenericMassGenerator eta_2Mass newdef eta_2Mass:Particle /Herwig/Particles/eta_2 newdef eta_2Mass:BreitWignerShape 0 newdef eta_2Mass:MaximumWeight 0.919107 newdef eta_2Mass:NGenerate 100 newdef /Herwig/Particles/eta_2:Mass_generator eta_2Mass # create Herwig::GenericMassGenerator eta'_2Mass newdef eta'_2Mass:Particle /Herwig/Particles/eta'_2 newdef eta'_2Mass:BreitWignerShape 0 newdef eta'_2Mass:MaximumWeight 0.787752 newdef eta'_2Mass:NGenerate 100 newdef /Herwig/Particles/eta'_2:Mass_generator eta'_2Mass # create Herwig::GenericMassGenerator Upsilon_2(1D)mass newdef Upsilon_2(1D)mass:Particle /Herwig/Particles/Upsilon_2(1D) newdef Upsilon_2(1D)mass:BreitWignerShape 0 newdef Upsilon_2(1D)mass:MaximumWeight 0.968375 newdef Upsilon_2(1D)mass:NGenerate 100 newdef /Herwig/Particles/Upsilon_2(1D):Mass_generator Upsilon_2(1D)mass # create Herwig::GenericMassGenerator Upsilon_3(1D)mass newdef Upsilon_3(1D)mass:Particle /Herwig/Particles/Upsilon_3(1D) newdef Upsilon_3(1D)mass:BreitWignerShape 0 newdef Upsilon_3(1D)mass:MaximumWeight 0.968196 newdef Upsilon_3(1D)mass:NGenerate 100 newdef /Herwig/Particles/Upsilon_3(1D):Mass_generator Upsilon_3(1D)mass # create Herwig::GenericMassGenerator Upsilon_1(2D)Mass newdef Upsilon_1(2D)Mass:Particle /Herwig/Particles/Upsilon_1(2D) newdef Upsilon_1(2D)Mass:BreitWignerShape 0 newdef Upsilon_1(2D)Mass:MaximumWeight 0.968204 newdef Upsilon_1(2D)Mass:NGenerate 100 newdef /Herwig/Particles/Upsilon_1(2D):Mass_generator Upsilon_1(2D)Mass # create Herwig::GenericMassGenerator Upsilon_2(2D)Mass newdef Upsilon_2(2D)Mass:Particle /Herwig/Particles/Upsilon_2(2D) newdef Upsilon_2(2D)Mass:BreitWignerShape 0 newdef Upsilon_2(2D)Mass:MaximumWeight 0.968197 newdef Upsilon_2(2D)Mass:NGenerate 100 newdef /Herwig/Particles/Upsilon_2(2D):Mass_generator Upsilon_2(2D)Mass # create Herwig::GenericMassGenerator Upsilon_3(2D)Mass newdef Upsilon_3(2D)Mass:Particle /Herwig/Particles/Upsilon_3(2D) newdef Upsilon_3(2D)Mass:BreitWignerShape 0 newdef Upsilon_3(2D)Mass:MaximumWeight 0.968196 newdef Upsilon_3(2D)Mass:NGenerate 100 newdef /Herwig/Particles/Upsilon_3(2D):Mass_generator Upsilon_3(2D)Mass # create Herwig::GenericMassGenerator chi_b03PMass newdef chi_b03PMass:Particle /Herwig/Particles/chi_b0(3P) newdef chi_b03PMass:BreitWignerShape 0 newdef chi_b03PMass:MaximumWeight 0.968229 newdef chi_b03PMass:NGenerate 100 newdef /Herwig/Particles/chi_b0(3P):Mass_generator chi_b03PMass # create Herwig::GenericMassGenerator chi_b13PMass newdef chi_b13PMass:Particle /Herwig/Particles/chi_b1(3P) newdef chi_b13PMass:BreitWignerShape 0 newdef chi_b13PMass:MaximumWeight 0.968199 newdef chi_b13PMass:NGenerate 100 newdef /Herwig/Particles/chi_b1(3P):Mass_generator chi_b13PMass # create Herwig::GenericMassGenerator chi_b23PMass newdef chi_b23PMass:Particle /Herwig/Particles/chi_b2(3P) newdef chi_b23PMass:BreitWignerShape 0 newdef chi_b23PMass:MaximumWeight 0.968203 newdef chi_b23PMass:NGenerate 100 newdef /Herwig/Particles/chi_b2(3P):Mass_generator chi_b23PMass # create Herwig::GenericMassGenerator eta_b(3S)Mass newdef eta_b(3S)Mass:Particle /Herwig/Particles/eta_b(3S) newdef eta_b(3S)Mass:BreitWignerShape 0 newdef eta_b(3S)Mass:MaximumWeight 0.968325 newdef eta_b(3S)Mass:NGenerate 100 newdef /Herwig/Particles/eta_b(3S):Mass_generator eta_b(3S)Mass # create Herwig::GenericMassGenerator h_b(2P)Mass newdef h_b(2P)Mass:Particle /Herwig/Particles/h_b(2P) newdef h_b(2P)Mass:BreitWignerShape 0 newdef h_b(2P)Mass:MaximumWeight 0.968199 newdef h_b(2P)Mass:NGenerate 100 newdef /Herwig/Particles/h_b(2P):Mass_generator h_b(2P)Mass # create Herwig::GenericMassGenerator eta_b2(1D)Mass newdef eta_b2(1D)Mass:Particle /Herwig/Particles/eta_b2 newdef eta_b2(1D)Mass:BreitWignerShape 0 newdef eta_b2(1D)Mass:MaximumWeight 0.968197 newdef eta_b2(1D)Mass:NGenerate 100 newdef /Herwig/Particles/eta_b2:Mass_generator eta_b2(1D)Mass # create Herwig::GenericMassGenerator K_3+Mass newdef K_3+Mass:Particle /Herwig/Particles/K_3*+ newdef K_3+Mass:BreitWignerShape 0 newdef K_3+Mass:MaximumWeight 0.934869 newdef K_3+Mass:NGenerate 100 newdef /Herwig/Particles/K_3*+:Mass_generator K_3+Mass newdef /Herwig/Particles/K_3*-:Mass_generator K_3+Mass # create Herwig::GenericMassGenerator K_30Mass newdef K_30Mass:Particle /Herwig/Particles/K_3*0 newdef K_30Mass:BreitWignerShape 0 newdef K_30Mass:MaximumWeight 0.934868 newdef K_30Mass:NGenerate 100 newdef /Herwig/Particles/K_3*bar0:Mass_generator K_30Mass newdef /Herwig/Particles/K_3*0:Mass_generator K_30Mass # create Herwig::SMHiggsMassGenerator HiggsMass newdef HiggsMass:Particle /Herwig/Particles/h0 newdef HiggsMass:HiggsShape 1 newdef /Herwig/Particles/h0:Mass_generator HiggsMass # create Herwig::GenericMassGenerator chi_c22Pmass newdef chi_c22Pmass:Particle /Herwig/Particles/chi_c2(2P) newdef chi_c22Pmass:BreitWignerShape 0 newdef chi_c22Pmass:MaximumWeight 1.15598 newdef chi_c22Pmass:NGenerate 100 newdef /Herwig/Particles/chi_c2(2P):Mass_generator chi_c22Pmass # create Herwig::GenericMassGenerator kappa0mass newdef kappa0mass:Particle /Herwig/Particles/kappa0 newdef kappa0mass:BreitWignerShape 0 newdef kappa0mass:MaximumWeight 2.31832 newdef kappa0mass:NGenerate 100 newdef /Herwig/Particles/kappa0:Mass_generator kappa0mass newdef /Herwig/Particles/kappabar0:Mass_generator kappa0mass # create Herwig::GenericMassGenerator kappa+mass newdef kappa+mass:Particle /Herwig/Particles/kappa+ newdef kappa+mass:BreitWignerShape 0 newdef kappa+mass:MaximumWeight 2.42552 newdef kappa+mass:NGenerate 100 newdef /Herwig/Particles/kappa-:Mass_generator kappa+mass newdef /Herwig/Particles/kappa+:Mass_generator kappa+mass # create Herwig::GenericMassGenerator K_2(1770)+Mass newdef K_2(1770)+Mass:Particle /Herwig/Particles/K_2(1770)+ newdef K_2(1770)+Mass:BreitWignerShape 0 newdef K_2(1770)+Mass:MaximumWeight 1.11706 newdef K_2(1770)+Mass:NGenerate 100 newdef /Herwig/Particles/K_2(1770)+:Mass_generator K_2(1770)+Mass newdef /Herwig/Particles/K_2(1770)-:Mass_generator K_2(1770)+Mass # create Herwig::GenericMassGenerator K_2(1770)0Mass newdef K_2(1770)0Mass:Particle /Herwig/Particles/K_2(1770)0 newdef K_2(1770)0Mass:BreitWignerShape 0 newdef K_2(1770)0Mass:MaximumWeight 1.12579 newdef K_2(1770)0Mass:NGenerate 100 newdef /Herwig/Particles/K_2(1770)0:Mass_generator K_2(1770)0Mass newdef /Herwig/Particles/K_2(1770)bar0:Mass_generator K_2(1770)0Mass # create Herwig::GenericMassGenerator K_2(1820)0Mass newdef K_2(1820)0Mass:Particle /Herwig/Particles/K_2(1820)0 newdef K_2(1820)0Mass:BreitWignerShape 0 newdef K_2(1820)0Mass:MaximumWeight 0.980384 newdef K_2(1820)0Mass:NGenerate 100 newdef /Herwig/Particles/K_2(1820)bar0:Mass_generator K_2(1820)0Mass newdef /Herwig/Particles/K_2(1820)0:Mass_generator K_2(1820)0Mass # create Herwig::GenericMassGenerator K_2(1820)+Mass newdef K_2(1820)+Mass:Particle /Herwig/Particles/K_2(1820)+ newdef K_2(1820)+Mass:BreitWignerShape 0 newdef K_2(1820)+Mass:MaximumWeight 0.975717 newdef K_2(1820)+Mass:NGenerate 100 newdef /Herwig/Particles/K_2(1820)+:Mass_generator K_2(1820)+Mass newdef /Herwig/Particles/K_2(1820)-:Mass_generator K_2(1820)+Mass # create Herwig::GenericMassGenerator TopMass newdef TopMass:Particle /Herwig/Particles/t newdef TopMass:BreitWignerShape 0 newdef TopMass:MaximumWeight 0.985846 newdef TopMass:NGenerate 100 newdef TopMass:WidthOption 0 newdef /Herwig/Particles/t:Mass_generator TopMass newdef /Herwig/Particles/tbar:Mass_generator TopMass # ������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/Decays.in����������������������������������������������������������0000644�0001750�0001750�00000006201�11754474774�021134� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������####################################################### # Setup of default decay handlers. # # Nothing interesting for users here. To set up or # modify decay modes in your own input files, use # the xyz_decays.in files as an example. ####################################################### mkdir /Herwig/Decays cd /Herwig/Decays # create the DecayHandler create Herwig::HwDecayHandler DecayHandler ####################################################### # # New Decays # ####################################################### read decayers.in cd /Herwig/Particles read quark_decays.in read baryon_decays.in read boson_decays.in read lepton_decays.in read meson_decays.in cd /Herwig/Hadronization # with new decays these should not be made by the hadronization # particles only as intermediates in certain decays insert HadronSelector:Forbidden 0 /Herwig/Particles/kappa+ insert HadronSelector:Forbidden 0 /Herwig/Particles/kappa0 insert HadronSelector:Forbidden 0 /Herwig/Particles/kappabar0 insert HadronSelector:Forbidden 0 /Herwig/Particles/kappa- insert HadronSelector:Forbidden 0 /Herwig/Particles/sigma # exclude 2nd excited 10plet insert HadronSelector:Forbidden 0 /Herwig/Particles/Lambda(1520)0 insert HadronSelector:Forbidden 0 /Herwig/Particles/Lambdabar(1520)0 insert HadronSelector:Forbidden 0 /Herwig/Particles/Lambda_c(2625)+ insert HadronSelector:Forbidden 0 /Herwig/Particles/Lambda_c(2625)bar- insert HadronSelector:Forbidden 0 /Herwig/Particles/Lambda_b1*0 insert HadronSelector:Forbidden 0 /Herwig/Particles/Lambda_b1*bar0 insert HadronSelector:Forbidden 0 /Herwig/Particles/Xi_c(2815)0 insert HadronSelector:Forbidden 0 /Herwig/Particles/Xi_c(2815)bar0 insert HadronSelector:Forbidden 0 /Herwig/Particles/Xi_c(2815)+ insert HadronSelector:Forbidden 0 /Herwig/Particles/Xi_c(2815)bar- insert HadronSelector:Forbidden 0 /Herwig/Particles/Xi_b1*0 insert HadronSelector:Forbidden 0 /Herwig/Particles/Xi_b1*bar0 insert HadronSelector:Forbidden 0 /Herwig/Particles/Xi_b1*- insert HadronSelector:Forbidden 0 /Herwig/Particles/Xi_b1*bar+ # exclude 3rd excited 45 plet insert HadronSelector:Forbidden 0 /Herwig/Particles/Lambda(1690)0 insert HadronSelector:Forbidden 0 /Herwig/Particles/Lambdabar(1690)0 insert HadronSelector:Forbidden 0 /Herwig/Particles/p(1520)+ insert HadronSelector:Forbidden 0 /Herwig/Particles/pbar(1520)- insert HadronSelector:Forbidden 0 /Herwig/Particles/n(1520)0 insert HadronSelector:Forbidden 0 /Herwig/Particles/nbar(1520)0 insert HadronSelector:Forbidden 0 /Herwig/Particles/Sigma(1670)- insert HadronSelector:Forbidden 0 /Herwig/Particles/Sigmabar(1670)+ insert HadronSelector:Forbidden 0 /Herwig/Particles/Sigma(1670)0 insert HadronSelector:Forbidden 0 /Herwig/Particles/Sigmabar(1670)0 insert HadronSelector:Forbidden 0 /Herwig/Particles/Sigma(1670)+ insert HadronSelector:Forbidden 0 /Herwig/Particles/Sigmabar(1670)- insert HadronSelector:Forbidden 0 /Herwig/Particles/Xi(1820)- insert HadronSelector:Forbidden 0 /Herwig/Particles/Xibar(1820)+ insert HadronSelector:Forbidden 0 /Herwig/Particles/Xi(1820)0 insert HadronSelector:Forbidden 0 /Herwig/Particles/Xibar(1820)0 mkdir /Herwig/Widths cd /Herwig/Widths read widths.in�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/Shower.in����������������������������������������������������������0000644�0001750�0001750�00000015257�11754474774�021206� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������############################################################ # Setup of default parton shower # # Useful switches for users are marked near the top of # this file. # # Don't edit this file directly, but reset the switches # in your own input files! ############################################################ library HwMPI.so library HwShower.so mkdir /Herwig/Shower cd /Herwig/Shower create Herwig::ShowerHandler ShowerHandler newdef ShowerHandler:MPIHandler /Herwig/UnderlyingEvent/MPIHandler newdef ShowerHandler:RemDecayer /Herwig/Partons/RemnantDecayer ##################################### # initial setup, don't change these! ##################################### create Herwig::SplittingGenerator SplittingGenerator create Herwig::ShowerAlphaQCD AlphaQCD create Herwig::Evolver Evolver create Herwig::QTildeModel ShowerModel create Herwig::QTildeFinder PartnerFinder create Herwig::QTildeReconstructor KinematicsReconstructor newdef KinematicsReconstructor:ReconstructionOption Colour newdef /Herwig/Partons/RemnantDecayer:AlphaS AlphaQCD newdef ShowerHandler:Evolver Evolver newdef ShowerModel:PartnerFinder PartnerFinder newdef ShowerModel:KinematicsReconstructor KinematicsReconstructor newdef Evolver:ShowerModel ShowerModel newdef Evolver:SplittingGenerator SplittingGenerator ################################################################## # Intrinsic pT # # Recommended: # 1.9 GeV for Tevatron W/Z production. # 2.1 GeV for LHC W/Z production at 10 TeV # 2.2 GeV for LHC W/Z production at 14 TeV # # Set all parameters to 0 to disable ################################################################## newdef Evolver:IntrinsicPtGaussian 1.9*GeV newdef Evolver:IntrinsicPtBeta 0 newdef Evolver:IntrinsicPtGamma 0*GeV newdef Evolver:IntrinsicPtIptmax 0*GeV ############################################################# # Main control switches for the parton shower. ############################################################# newdef SplittingGenerator:ISR Yes newdef SplittingGenerator:FSR Yes ############################################################# ############################################################# # End of interesting user servicable section. # # Anything that follows below should only be touched if you # know what you're doing. # # Really. ############################################################# # # a few default values newdef Evolver:MECorrMode 1 newdef AlphaQCD:ScaleFactor 1.0 newdef AlphaQCD:NPAlphaS 2 newdef AlphaQCD:Qmin 0.935 newdef AlphaQCD:NumberOfLoops 3 newdef AlphaQCD:InputOption 1 newdef AlphaQCD:AlphaMZ 0.120 # # # Lets set up all the splittings create Herwig::HalfHalfOneSplitFn QtoQGSplitFn newdef QtoQGSplitFn:InteractionType QCD newdef QtoQGSplitFn:ColourStructure TripletTripletOctet create Herwig::OneOneOneSplitFn GtoGGSplitFn newdef GtoGGSplitFn:InteractionType QCD newdef GtoGGSplitFn:ColourStructure OctetOctetOctet create Herwig::OneHalfHalfSplitFn GtoQQbarSplitFn newdef GtoQQbarSplitFn:InteractionType QCD newdef GtoQQbarSplitFn:ColourStructure OctetTripletTriplet create Herwig::HalfOneHalfSplitFn QtoGQSplitFn newdef QtoGQSplitFn:InteractionType QCD newdef QtoGQSplitFn:ColourStructure TripletOctetTriplet # # Now the Sudakovs create Herwig::QTildeSudakov SudakovCommon newdef SudakovCommon:Alpha AlphaQCD newdef SudakovCommon:cutoffKinScale 2.650*GeV newdef SudakovCommon:PDFmax 1.0 cp SudakovCommon QtoQGSudakov newdef QtoQGSudakov:SplittingFunction QtoQGSplitFn newdef QtoQGSudakov:PDFmax 1.9 cp SudakovCommon GtoGGSudakov newdef GtoGGSudakov:SplittingFunction GtoGGSplitFn newdef GtoGGSudakov:PDFmax 2.0 cp SudakovCommon GtoQQbarSudakov newdef GtoQQbarSudakov:SplittingFunction GtoQQbarSplitFn newdef GtoQQbarSudakov:PDFmax 120.0 cp SudakovCommon GtobbbarSudakov newdef GtobbbarSudakov:SplittingFunction GtoQQbarSplitFn newdef GtobbbarSudakov:PDFmax 40000.0 cp SudakovCommon GtoccbarSudakov newdef GtoccbarSudakov:SplittingFunction GtoQQbarSplitFn newdef GtoccbarSudakov:PDFmax 2000.0 cp SudakovCommon QtoGQSudakov newdef QtoGQSudakov:SplittingFunction QtoGQSplitFn cp SudakovCommon utoGuSudakov newdef utoGuSudakov:SplittingFunction QtoGQSplitFn newdef utoGuSudakov:PDFFactor OverOneMinusZ newdef utoGuSudakov:PDFmax 5.0 cp SudakovCommon dtoGdSudakov newdef dtoGdSudakov:SplittingFunction QtoGQSplitFn newdef dtoGdSudakov:PDFFactor OverOneMinusZ # # Now add the final splittings # do SplittingGenerator:AddFinalSplitting u->u,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting d->d,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting s->s,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting c->c,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting b->b,g; QtoQGSudakov do SplittingGenerator:AddFinalSplitting t->t,g; QtoQGSudakov # do SplittingGenerator:AddFinalSplitting g->g,g; GtoGGSudakov # do SplittingGenerator:AddFinalSplitting g->u,ubar; GtoQQbarSudakov do SplittingGenerator:AddFinalSplitting g->d,dbar; GtoQQbarSudakov do SplittingGenerator:AddFinalSplitting g->s,sbar; GtoQQbarSudakov do SplittingGenerator:AddFinalSplitting g->c,cbar; GtoccbarSudakov do SplittingGenerator:AddFinalSplitting g->b,bbar; GtobbbarSudakov do SplittingGenerator:AddFinalSplitting g->t,tbar; GtoQQbarSudakov # # Now lets add the initial splittings. Remember the form a->b,c; means # that particle a is the particle given and we backward branch to # particle b which is initial state and particle c which is final state # do SplittingGenerator:AddInitialSplitting u->u,g; QtoQGSudakov do SplittingGenerator:AddInitialSplitting d->d,g; QtoQGSudakov do SplittingGenerator:AddInitialSplitting s->s,g; QtoQGSudakov do SplittingGenerator:AddInitialSplitting c->c,g; QtoQGSudakov do SplittingGenerator:AddInitialSplitting b->b,g; QtoQGSudakov # do SplittingGenerator:AddInitialSplitting g->g,g; GtoGGSudakov # do SplittingGenerator:AddInitialSplitting g->d,dbar; GtoQQbarSudakov do SplittingGenerator:AddInitialSplitting g->u,ubar; GtoQQbarSudakov do SplittingGenerator:AddInitialSplitting g->s,sbar; GtoQQbarSudakov do SplittingGenerator:AddInitialSplitting g->c,cbar; GtoccbarSudakov do SplittingGenerator:AddInitialSplitting g->b,bbar; GtobbbarSudakov # do SplittingGenerator:AddInitialSplitting d->g,d; dtoGdSudakov do SplittingGenerator:AddInitialSplitting u->g,u; utoGuSudakov do SplittingGenerator:AddInitialSplitting s->g,s; QtoGQSudakov do SplittingGenerator:AddInitialSplitting c->g,c; QtoGQSudakov do SplittingGenerator:AddInitialSplitting b->g,b; QtoGQSudakov do SplittingGenerator:AddInitialSplitting dbar->g,dbar; dtoGdSudakov do SplittingGenerator:AddInitialSplitting ubar->g,ubar; utoGuSudakov do SplittingGenerator:AddInitialSplitting sbar->g,sbar; QtoGQSudakov do SplittingGenerator:AddInitialSplitting cbar->g,cbar; QtoGQSudakov do SplittingGenerator:AddInitialSplitting bbar->g,bbar; QtoGQSudakov �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/baryon_decays.in���������������������������������������������������0000644�0001750�0001750�00000264150�11754474774�022557� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # file containing the decays for the baryons # # # the (70,1^-_1) 10bar multiplet # # decaymode Lambda(1405)0->Sigma0,pi0; 0.333334 1 /Herwig/Decays/SU3SingletOctet1 decaymode Lambda(1405)0->Sigma-,pi+; 0.333333 1 /Herwig/Decays/SU3SingletOctet1 decaymode Lambda(1405)0->Sigma+,pi-; 0.333333 1 /Herwig/Decays/SU3SingletOctet1 # decaymode Lambdabar(1405)0->Sigmabar0,pi0; 0.333334 1 /Herwig/Decays/SU3SingletOctet1 decaymode Lambdabar(1405)0->Sigmabar-,pi+; 0.333333 1 /Herwig/Decays/SU3SingletOctet1 decaymode Lambdabar(1405)0->Sigmabar+,pi-; 0.333333 1 /Herwig/Decays/SU3SingletOctet1 # decaymode Lambda_c(2593)+->Sigma_c0,pi+; 0.24 1 /Herwig/Decays/HeavyStrong decaymode Lambda_c(2593)+->Sigma_c+,pi0; 0.24 1 /Herwig/Decays/HeavyStrong decaymode Lambda_c(2593)+->Sigma_c++,pi-; 0.24 1 /Herwig/Decays/HeavyStrong decaymode Lambda_c(2593)+->Lambda_c+,pi+,pi-; 0.186667 1 /Herwig/Decays/DecayME0 decaymode Lambda_c(2593)+->Lambda_c+,pi0,pi0; 0.093333 1 /Herwig/Decays/DecayME0 # decaymode Lambda_c(2593)bar-->Sigmabar_c--,pi+; 0.24 1 /Herwig/Decays/HeavyStrong decaymode Lambda_c(2593)bar-->Sigmabar_c-,pi0; 0.24 1 /Herwig/Decays/HeavyStrong decaymode Lambda_c(2593)bar-->Sigmabar_c0,pi-; 0.24 1 /Herwig/Decays/HeavyStrong decaymode Lambda_c(2593)bar-->Lambdabar_c-,pi+,pi-; 0.186667 1 /Herwig/Decays/DecayME0 decaymode Lambda_c(2593)bar-->Lambdabar_c-,pi0,pi0; 0.093333 1 /Herwig/Decays/DecayME0 # decaymode Lambda_b10->Sigma_b-,pi+; 0.24 1 /Herwig/Decays/HeavyStrong decaymode Lambda_b10->Sigma_b0,pi0; 0.24 1 /Herwig/Decays/HeavyStrong decaymode Lambda_b10->Sigma_b+,pi-; 0.24 1 /Herwig/Decays/HeavyStrong decaymode Lambda_b10->Lambda_b0,pi+,pi-; 0.186667 1 /Herwig/Decays/DecayME0 decaymode Lambda_b10->Lambda_b0,pi0,pi0; 0.093333 1 /Herwig/Decays/DecayME0 # decaymode Lambda_b1bar0->Sigma_bbar-,pi+; 0.24 1 /Herwig/Decays/HeavyStrong decaymode Lambda_b1bar0->Sigma_bbar0,pi0; 0.24 1 /Herwig/Decays/HeavyStrong decaymode Lambda_b1bar0->Sigma_bbar+,pi-; 0.24 1 /Herwig/Decays/HeavyStrong decaymode Lambda_b1bar0->Lambda_bbar0,pi+,pi-; 0.186667 1 /Herwig/Decays/DecayME0 decaymode Lambda_b1bar0->Lambda_bbar0,pi0,pi0; 0.093333 1 /Herwig/Decays/DecayME0 # decaymode Xi_c(2790)0->Xi'_c+,pi-; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2790)0->Xi'_c0,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Xi_c(2790)bar0->Xi'_cbar-,pi+; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2790)bar0->Xi'_cbar0,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Xi_c(2790)+->Xi'_c0,pi+; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2790)+->Xi'_c+,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Xi_c(2790)bar-->Xi'_cbar0,pi-; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2790)bar-->Xi'_cbar-,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Xi_b10->Xi_b'-,pi+; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_b10->Xi_b'0,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Xi_b1bar0->Xi_b'bar+,pi-; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1bar0->Xi_b'bar0,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Xi_b1-->Xi_b'0,pi-; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1-->Xi_b'-,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Xi_b1bar+->Xi_b'bar0,pi+; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1bar+->Xi_b'bar+,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # # the (70,1^-_1) 10bar multiplet # # decaymode Lambda(1520)0->n0,Kbar0; 0.223547 1 /Herwig/Decays/SU3SingletOctet2 decaymode Lambda(1520)0->p+,K-; 0.223547 1 /Herwig/Decays/SU3SingletOctet2 decaymode Lambda(1520)0->Sigma-,pi+; 0.139096 1 /Herwig/Decays/SU3SingletOctet2 decaymode Lambda(1520)0->Sigma0,pi0; 0.139096 1 /Herwig/Decays/SU3SingletOctet2 decaymode Lambda(1520)0->Sigma+,pi-; 0.139096 1 /Herwig/Decays/SU3SingletOctet2 decaymode Lambda(1520)0->Sigma*-,pi+; 0.02878 1 /Herwig/Decays/DecayME0 decaymode Lambda(1520)0->Sigma*0,pi0; 0.02878 1 /Herwig/Decays/DecayME0 decaymode Lambda(1520)0->Sigma*+,pi-; 0.02878 1 /Herwig/Decays/DecayME0 decaymode Lambda(1520)0->Sigma0,gamma; 0.019373 1 /Herwig/Decays/SU3Gamma5 decaymode Lambda(1520)0->Lambda0,pi+,pi-; 0.014638 1 /Herwig/Decays/DecayME0 decaymode Lambda(1520)0->Lambda0,gamma; 0.007948 1 /Herwig/Decays/SU3Gamma5 decaymode Lambda(1520)0->Lambda0,pi0,pi0; 0.007319 1 /Herwig/Decays/DecayME0 # decaymode Lambdabar(1520)0->pbar-,K+; 0.223547 1 /Herwig/Decays/SU3SingletOctet2 decaymode Lambdabar(1520)0->nbar0,K0; 0.223547 1 /Herwig/Decays/SU3SingletOctet2 decaymode Lambdabar(1520)0->Sigmabar-,pi+; 0.139096 1 /Herwig/Decays/SU3SingletOctet2 decaymode Lambdabar(1520)0->Sigmabar0,pi0; 0.139096 1 /Herwig/Decays/SU3SingletOctet2 decaymode Lambdabar(1520)0->Sigmabar+,pi-; 0.139096 1 /Herwig/Decays/SU3SingletOctet2 decaymode Lambdabar(1520)0->Sigma*bar-,pi+; 0.02878 1 /Herwig/Decays/DecayME0 decaymode Lambdabar(1520)0->Sigma*bar0,pi0; 0.02878 1 /Herwig/Decays/DecayME0 decaymode Lambdabar(1520)0->Sigma*bar+,pi-; 0.02878 1 /Herwig/Decays/DecayME0 decaymode Lambdabar(1520)0->Sigmabar0,gamma; 0.019373 1 /Herwig/Decays/SU3Gamma5 decaymode Lambdabar(1520)0->Lambdabar0,pi+,pi-; 0.014638 1 /Herwig/Decays/DecayME0 decaymode Lambdabar(1520)0->Lambdabar0,gamma; 0.007948 1 /Herwig/Decays/SU3Gamma5 decaymode Lambdabar(1520)0->Lambdabar0,pi0,pi0; 0.007319 1 /Herwig/Decays/DecayME0 # decaymode Lambda_c(2625)+->Lambda_c+,pi+,pi-; 0.666667 1 /Herwig/Decays/DecayME0 decaymode Lambda_c(2625)+->Lambda_c+,pi0,pi0; 0.333333 1 /Herwig/Decays/DecayME0 # decaymode Lambda_c(2625)bar-->Lambdabar_c-,pi+,pi-; 0.666667 1 /Herwig/Decays/DecayME0 decaymode Lambda_c(2625)bar-->Lambdabar_c-,pi0,pi0; 0.333333 1 /Herwig/Decays/DecayME0 # decaymode Lambda_b1*0->Lambda_b0,pi+,pi-; 0.666667 1 /Herwig/Decays/DecayME0 decaymode Lambda_b1*0->Lambda_b0,pi0,pi0; 0.333333 1 /Herwig/Decays/DecayME0 # decaymode Lambda_b1*bar0->Lambda_bbar0,pi+,pi-; 0.666667 1 /Herwig/Decays/DecayME0 decaymode Lambda_b1*bar0->Lambda_bbar0,pi0,pi0; 0.333333 1 /Herwig/Decays/DecayME0 # decaymode Xi_c(2815)0->Xi_c*+,pi-; 0.365 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2815)0->Xi'_c+,pi-; 0.278 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2815)0->Xi_c*0,pi0; 0.19 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2815)0->Xi'_c0,pi0; 0.167 1 /Herwig/Decays/HeavyStrong # decaymode Xi_c(2815)bar0->Xi_c*bar-,pi+; 0.365 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2815)bar0->Xi'_cbar-,pi+; 0.278 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2815)bar0->Xi_c*bar0,pi0; 0.19 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2815)bar0->Xi'_cbar0,pi0; 0.167 1 /Herwig/Decays/HeavyStrong # decaymode Xi_c(2815)+->Xi_c*0,pi+; 0.365 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2815)+->Xi'_c0,pi+; 0.278 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2815)+->Xi_c*+,pi0; 0.19 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2815)+->Xi'_c+,pi0; 0.167 1 /Herwig/Decays/HeavyStrong # decaymode Xi_c(2815)bar-->Xi_c*bar0,pi-; 0.365 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2815)bar-->Xi'_cbar0,pi-; 0.278 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2815)bar-->Xi_c*bar-,pi0; 0.19 1 /Herwig/Decays/HeavyStrong decaymode Xi_c(2815)bar-->Xi'_cbar-,pi0; 0.167 1 /Herwig/Decays/HeavyStrong # decaymode Xi_b1*0->Xi_b'-,pi+; 0.333 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1*0->Xi_b*-,pi+; 0.333 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1*0->Xi_b'0,pi0; 0.167 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1*0->Xi_b*0,pi0; 0.167 1 /Herwig/Decays/HeavyStrong # decaymode Xi_b1*bar0->Xi_b*bar+,pi-; 0.333 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1*bar0->Xi_b'bar+,pi-; 0.333 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1*bar0->Xi_b*bar0,pi0; 0.167 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1*bar0->Xi_b'bar0,pi0; 0.167 1 /Herwig/Decays/HeavyStrong # decaymode Xi_b1*-->Xi_b'0,pi-; 0.333 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1*-->Xi_b*0,pi-; 0.333 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1*-->Xi_b'-,pi0; 0.167 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1*-->Xi_b*-,pi0; 0.167 1 /Herwig/Decays/HeavyStrong # decaymode Xi_b1*bar+->Xi_b*bar0,pi+; 0.333 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1*bar+->Xi_b'bar0,pi+; 0.333 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1*bar+->Xi_b*bar+,pi0; 0.167 1 /Herwig/Decays/HeavyStrong decaymode Xi_b1*bar+->Xi_b'bar+,pi0; 0.167 1 /Herwig/Decays/HeavyStrong # # the (56,0^+_0) 35 multiplet # # decaymode Delta-->n0,pi-; 1 1 /Herwig/Decays/SU3Decuplet # decaymode Deltabar+->nbar0,pi+; 1 1 /Herwig/Decays/SU3Decuplet # decaymode Delta0->n0,pi0; 0.662933 1 /Herwig/Decays/SU3Decuplet decaymode Delta0->p+,pi-; 0.331467 1 /Herwig/Decays/SU3Decuplet decaymode Delta0->n0,gamma; 0.0056 1 /Herwig/Decays/DecupletGamma # decaymode Deltabar0->nbar0,pi0; 0.662933 1 /Herwig/Decays/SU3Decuplet decaymode Deltabar0->pbar-,pi+; 0.331467 1 /Herwig/Decays/SU3Decuplet decaymode Deltabar0->nbar0,gamma; 0.0056 1 /Herwig/Decays/DecupletGamma # decaymode Delta+->p+,pi0; 0.662933 1 /Herwig/Decays/SU3Decuplet decaymode Delta+->n0,pi+; 0.331467 1 /Herwig/Decays/SU3Decuplet decaymode Delta+->p+,gamma; 0.0056 1 /Herwig/Decays/DecupletGamma # decaymode Deltabar-->pbar-,pi0; 0.662933 1 /Herwig/Decays/SU3Decuplet decaymode Deltabar-->nbar0,pi-; 0.331467 1 /Herwig/Decays/SU3Decuplet decaymode Deltabar-->pbar-,gamma; 0.0056 1 /Herwig/Decays/DecupletGamma # decaymode Delta++->p+,pi+; 1 1 /Herwig/Decays/SU3Decuplet # decaymode Deltabar--->pbar-,pi-; 1 1 /Herwig/Decays/SU3Decuplet # decaymode Sigma*-->Lambda0,pi-; 0.87 1 /Herwig/Decays/SU3Decuplet decaymode Sigma*-->Sigma-,pi0; 0.065 1 /Herwig/Decays/SU3Decuplet decaymode Sigma*-->Sigma0,pi-; 0.065 1 /Herwig/Decays/SU3Decuplet # decaymode Sigma*bar+->Lambdabar0,pi+; 0.87 1 /Herwig/Decays/SU3Decuplet decaymode Sigma*bar+->Sigmabar0,pi+; 0.065 1 /Herwig/Decays/SU3Decuplet decaymode Sigma*bar+->Sigmabar+,pi0; 0.065 1 /Herwig/Decays/SU3Decuplet # decaymode Sigma*0->Lambda0,pi0; 0.87 1 /Herwig/Decays/SU3Decuplet decaymode Sigma*0->Sigma-,pi+; 0.0585 1 /Herwig/Decays/SU3Decuplet decaymode Sigma*0->Sigma+,pi-; 0.0585 1 /Herwig/Decays/SU3Decuplet decaymode Sigma*0->Lambda0,gamma; 0.013 1 /Herwig/Decays/DecayME0 # decaymode Sigma*bar0->Lambdabar0,pi0; 0.87 1 /Herwig/Decays/SU3Decuplet decaymode Sigma*bar0->Sigmabar-,pi+; 0.0585 1 /Herwig/Decays/SU3Decuplet decaymode Sigma*bar0->Sigmabar+,pi-; 0.0585 1 /Herwig/Decays/SU3Decuplet decaymode Sigma*bar0->Lambdabar0,gamma; 0.013 1 /Herwig/Decays/DecayME0 # decaymode Sigma*+->Lambda0,pi+; 0.87 1 /Herwig/Decays/SU3Decuplet decaymode Sigma*+->Sigma0,pi+; 0.065 1 /Herwig/Decays/SU3Decuplet decaymode Sigma*+->Sigma+,pi0; 0.065 1 /Herwig/Decays/SU3Decuplet # decaymode Sigma*bar-->Lambdabar0,pi-; 0.87 1 /Herwig/Decays/SU3Decuplet decaymode Sigma*bar-->Sigmabar-,pi0; 0.065 1 /Herwig/Decays/SU3Decuplet decaymode Sigma*bar-->Sigmabar0,pi-; 0.065 1 /Herwig/Decays/SU3Decuplet # decaymode Xi*-->Xi0,pi-; 0.666667 1 /Herwig/Decays/SU3Decuplet decaymode Xi*-->Xi-,pi0; 0.333333 1 /Herwig/Decays/SU3Decuplet # decaymode Xi*bar+->Xibar0,pi+; 0.666667 1 /Herwig/Decays/SU3Decuplet decaymode Xi*bar+->Xibar+,pi0; 0.333333 1 /Herwig/Decays/SU3Decuplet # decaymode Xi*0->Xi-,pi+; 0.666667 1 /Herwig/Decays/SU3Decuplet decaymode Xi*0->Xi0,pi0; 0.333333 1 /Herwig/Decays/SU3Decuplet # decaymode Xi*bar0->Xibar+,pi-; 0.666667 1 /Herwig/Decays/SU3Decuplet decaymode Xi*bar0->Xibar0,pi0; 0.333333 1 /Herwig/Decays/SU3Decuplet # decaymode Omega-->Lambda0,K-; 0.673797 1 /Herwig/Decays/OmegaNL decaymode Omega-->Xi0,pi-; 0.234536 1 /Herwig/Decays/OmegaNL decaymode Omega-->Xi-,pi0; 0.085466 1 /Herwig/Decays/OmegaNL decaymode Omega-->Xi0,e-,nu_ebar; 0.005565 1 /Herwig/Decays/DecayME0 decaymode Omega-->Xi*0,pi-; 0.000636 1 /Herwig/Decays/OmegaXiStar # decaymode Omegabar+->Lambdabar0,K+; 0.673797 1 /Herwig/Decays/OmegaNL decaymode Omegabar+->Xibar0,pi+; 0.234536 1 /Herwig/Decays/OmegaNL decaymode Omegabar+->Xibar+,pi0; 0.085466 1 /Herwig/Decays/OmegaNL decaymode Omegabar+->Xibar0,e+,nu_e; 0.005565 1 /Herwig/Decays/DecayME0 decaymode Omegabar+->Xi*bar0,pi+; 0.000636 1 /Herwig/Decays/OmegaXiStar # decaymode Sigma*_c0->Lambda_c+,pi-; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigmabar*_c0->Lambdabar_c-,pi+; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigma*_c+->Lambda_c+,pi0; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigmabar*_c-->Lambdabar_c-,pi0; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigma*_c++->Lambda_c+,pi+; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigmabar*_c--->Lambdabar_c-,pi-; 1 1 /Herwig/Decays/HeavyStrong # decaymode Xi_c*0->Xi_c+,pi-; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_c*0->Xi_c0,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Xi_c*bar0->Xi_cbar-,pi+; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_c*bar0->Xi_cbar0,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Xi_c*+->Xi_c0,pi+; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_c*+->Xi_c+,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Xi_c*bar-->Xi_cbar0,pi-; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_c*bar-->Xi_cbar-,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Omega_c*0->Omega_c0,gamma; 1 1 /Herwig/Decays/HeavyGamma # decaymode Omega_c*bar0->Omega_cbar0,gamma; 1 1 /Herwig/Decays/HeavyGamma # decaymode Sigma_b*-->Lambda_b0,pi-; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigma_b*bar+->Lambda_bbar0,pi+; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigma_b*0->Lambda_b0,pi0; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigma_b*bar0->Lambda_bbar0,pi0; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigma_b*+->Lambda_b0,pi+; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigma_b*bar-->Lambda_bbar0,pi-; 1 1 /Herwig/Decays/HeavyStrong # decaymode Xi_b*-->Xi_b0,pi-; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_b*-->Xi_b-,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Xi_b*bar+->Xi_bbar0,pi+; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_b*bar+->Xi_bbar+,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Xi_b*0->Xi_b-,pi+; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_b*0->Xi_b0,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Xi_b*bar0->Xi_bbar+,pi-; 0.666667 1 /Herwig/Decays/HeavyStrong decaymode Xi_b*bar0->Xi_bbar0,pi0; 0.333333 1 /Herwig/Decays/HeavyStrong # decaymode Omega_b*-->Omega_b-,gamma; 1 1 /Herwig/Decays/HeavyGamma # decaymode Omega_b*bar+->Omega_bbar+,gamma; 1 1 /Herwig/Decays/HeavyGamma # # the (56,0^+_0) 40 multiplet # # decaymode Lambda0->p+,pi-; 0.639167 1 /Herwig/Decays/HyperonNL decaymode Lambda0->n0,pi0; 0.358093 1 /Herwig/Decays/HyperonNL decaymode Lambda0->n0,gamma; 0.001751 1 /Herwig/Decays/RadiativeHyperon decaymode Lambda0->p+,e-,nu_ebar; 0.000832 1 /Herwig/Decays/BaryonLight1 decaymode Lambda0->p+,mu-,nu_mubar; 0.000157 1 /Herwig/Decays/BaryonLight1 # decaymode Lambdabar0->pbar-,pi+; 0.639167 1 /Herwig/Decays/HyperonNL decaymode Lambdabar0->nbar0,pi0; 0.358093 1 /Herwig/Decays/HyperonNL decaymode Lambdabar0->nbar0,gamma; 0.001751 1 /Herwig/Decays/RadiativeHyperon decaymode Lambdabar0->pbar-,e+,nu_e; 0.000832 1 /Herwig/Decays/BaryonLight1 decaymode Lambdabar0->pbar-,mu+,nu_mu; 0.000157 1 /Herwig/Decays/BaryonLight1 # # # decaymode n0->p+,e-,nu_ebar; 1 1 /Herwig/Decays/BaryonLight1 # decaymode nbar0->pbar-,e+,nu_e; 1 1 /Herwig/Decays/BaryonLight1 # decaymode Sigma-->n0,pi-; 0.998476 1 /Herwig/Decays/HyperonNL decaymode Sigma-->n0,e-,nu_ebar; 0.001017 1 /Herwig/Decays/BaryonLight1 decaymode Sigma-->n0,mu-,nu_mubar; 0.00045 1 /Herwig/Decays/BaryonLight1 decaymode Sigma-->Lambda0,e-,nu_ebar; 5.7E-5 1 /Herwig/Decays/BaryonLight1 # decaymode Sigmabar+->nbar0,pi+; 0.998476 1 /Herwig/Decays/HyperonNL decaymode Sigmabar+->nbar0,e+,nu_e; 0.001017 1 /Herwig/Decays/BaryonLight1 decaymode Sigmabar+->nbar0,mu+,nu_mu; 0.00045 1 /Herwig/Decays/BaryonLight1 decaymode Sigmabar+->Lambdabar0,e+,nu_e; 5.7E-5 1 /Herwig/Decays/BaryonLight1 # decaymode Sigma0->Lambda0,gamma; 0.995 1 /Herwig/Decays/SU3Gamma3 decaymode Sigma0->Lambda0,e-,e+; 0.005 1 /Herwig/Decays/DecayME0 # decaymode Sigmabar0->Lambdabar0,gamma; 0.995 1 /Herwig/Decays/SU3Gamma3 decaymode Sigmabar0->Lambdabar0,e-,e+; 0.005 1 /Herwig/Decays/DecayME0 # decaymode Sigma+->p+,pi0; 0.515674 1 /Herwig/Decays/HyperonNL decaymode Sigma+->n0,pi+; 0.483076 1 /Herwig/Decays/HyperonNL decaymode Sigma+->p+,gamma; 0.00123 1 /Herwig/Decays/RadiativeHyperon decaymode Sigma+->Lambda0,e+,nu_e; 2.0E-5 1 /Herwig/Decays/BaryonLight1 # decaymode Sigmabar-->pbar-,pi0; 0.515674 1 /Herwig/Decays/HyperonNL decaymode Sigmabar-->nbar0,pi-; 0.483076 1 /Herwig/Decays/HyperonNL decaymode Sigmabar-->pbar-,gamma; 0.00123 1 /Herwig/Decays/RadiativeHyperon decaymode Sigmabar-->Lambdabar0,e-,nu_ebar; 2.0E-5 1 /Herwig/Decays/BaryonLight1 # decaymode Xi-->Lambda0,pi-; 0.998873 1 /Herwig/Decays/HyperonNL decaymode Xi-->Lambda0,e-,nu_ebar; 0.000563 1 /Herwig/Decays/BaryonLight1 decaymode Xi-->Lambda0,mu-,nu_mubar; 0.00035 1 /Herwig/Decays/BaryonLight1 decaymode Xi-->Sigma-,gamma; 0.000127 1 /Herwig/Decays/RadiativeHyperon decaymode Xi-->Sigma0,e-,nu_ebar; 8.7E-5 1 /Herwig/Decays/BaryonLight1 # decaymode Xibar+->Lambdabar0,pi+; 0.998873 1 /Herwig/Decays/HyperonNL decaymode Xibar+->Lambdabar0,e+,nu_e; 0.000563 1 /Herwig/Decays/BaryonLight1 decaymode Xibar+->Lambdabar0,mu+,nu_mu; 0.00035 1 /Herwig/Decays/BaryonLight1 decaymode Xibar+->Sigmabar+,gamma; 0.000127 1 /Herwig/Decays/RadiativeHyperon decaymode Xibar+->Sigmabar0,e+,nu_e; 8.7E-5 1 /Herwig/Decays/BaryonLight1 # decaymode Xi0->Lambda0,pi0; 0.995225 1 /Herwig/Decays/HyperonNL decaymode Xi0->Sigma0,gamma; 0.00333 1 /Herwig/Decays/RadiativeHyperon decaymode Xi0->Lambda0,gamma; 0.00117 1 /Herwig/Decays/RadiativeHyperon decaymode Xi0->Sigma+,e-,nu_ebar; 0.00027 1 /Herwig/Decays/BaryonLight1 decaymode Xi0->Sigma+,mu-,nu_mubar; 5.0E-6 1 /Herwig/Decays/BaryonLight1 # decaymode Xibar0->Lambdabar0,pi0; 0.995225 1 /Herwig/Decays/HyperonNL decaymode Xibar0->Sigmabar0,gamma; 0.00333 1 /Herwig/Decays/RadiativeHyperon decaymode Xibar0->Lambdabar0,gamma; 0.00117 1 /Herwig/Decays/RadiativeHyperon decaymode Xibar0->Sigmabar-,e+,nu_e; 0.00027 1 /Herwig/Decays/BaryonLight1 decaymode Xibar0->Sigmabar-,mu+,nu_mu; 5.0E-6 1 /Herwig/Decays/BaryonLight1 # decaymode Lambda_c+->u=dbar,s=ud_0; 0.244527 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_c+->s=dbar,u=ud_0; 0.109073 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_c+->p+,K-,pi+,pi0; 0.029 1 /Herwig/Decays/Mambo decaymode Lambda_c+->p+,K-,pi+; 0.028 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->p+,Kbar0,pi0; 0.028 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->Lambda0,rho+; 0.0272 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Sigma+,omega; 0.027 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->u=dbar,d=ud_0; 0.0262 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_c+->u=sbar,s=ud_0; 0.025926 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_c+->p+,Kbar0; 0.023 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Sigma+,pi+,pi-; 0.023 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->Lambda0,e+,nu_e; 0.021 1 /Herwig/Decays/BaryonHeavy2 decaymode Lambda_c+->Lambda0,mu+,nu_mu; 0.02 1 /Herwig/Decays/BaryonHeavy2 decaymode Lambda_c+->p+,Kbar0,pi+,pi-; 0.019 1 /Herwig/Decays/Mambo decaymode Lambda_c+->Sigma-,pi+,pi+; 0.019 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->Lambda(1520)0,pi+; 0.018 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->p+,K*bar0; 0.016 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Sigma*+,omega; 0.014 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Sigma0,rho+; 0.013 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Sigma+,rho0; 0.013 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->p+,Kbar0,eta; 0.012 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->Delta++,K*-; 0.011 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->d=dbar,u=ud_0; 0.0108 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_c+->Lambda0,pi+,eta; 0.0106 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->Sigma0,pi+; 0.0104 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Lambda0,pi+; 0.0101 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Sigma+,pi0; 0.01 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->s=sbar,u=ud_0; 0.00998 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_c+->Sigma+,eta'; 0.009 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Delta++,K-; 0.0086 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Sigma*+,eta; 0.0085 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->p+,K-,pi+,pi0,pi0; 0.008 1 /Herwig/Decays/Mambo decaymode Lambda_c+->Sigma0,pi+,pi+,pi-; 0.008 1 /Herwig/Decays/Mambo decaymode Lambda_c+->Sigma-,pi+,mu+,nu_mu; 0.0073 1 /Herwig/Decays/Mambo decaymode Lambda_c+->Sigma0,pi0,e+,nu_e; 0.0073 1 /Herwig/Decays/Mambo decaymode Lambda_c+->Sigma+,pi-,mu+,nu_mu; 0.0073 1 /Herwig/Decays/Mambo decaymode Lambda_c+->Sigma-,pi+,e+,nu_e; 0.0072 1 /Herwig/Decays/Mambo decaymode Lambda_c+->Sigma0,pi0,mu+,nu_mu; 0.0072 1 /Herwig/Decays/Mambo decaymode Lambda_c+->Sigma+,pi-,e+,nu_e; 0.0072 1 /Herwig/Decays/Mambo decaymode Lambda_c+->Sigma+,eta; 0.0055 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Sigma0,pi+,pi0; 0.005 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->Sigma*0,pi+; 0.005 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Sigma*+,pi0; 0.005 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Lambda0,K+,Kbar0; 0.0044 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->Sigma*0,rho+; 0.0043 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Sigma*+,rho0; 0.0043 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Xi0,K+; 0.0039 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Delta+,K*bar0; 0.0035 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Lambda0,pi+,pi+,pi-,pi0; 0.0033 1 /Herwig/Decays/Mambo decaymode Lambda_c+->Sigma+,phi; 0.0032 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Lambda0,pi+,pi+,pi-; 0.003 1 /Herwig/Decays/Mambo decaymode Lambda_c+->Xi-,K+,pi+; 0.003 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->Delta+,Kbar0; 0.0029 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Xi(1690)0,K+; 0.0029 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->p+,f_0; 0.0028 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->Sigma+,K*bar0; 0.0028 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->Xi*0,K+; 0.0026 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->Lambda0,K+,pi+,pi-; 0.002394 1 /Herwig/Decays/Mambo decaymode Lambda_c+->e+,nu_e,d=ud_0; 0.0023 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_c+->mu+,nu_mu,d=ud_0; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_c+->p+,pi+,pi-; 0.0019 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->u=sbar,d=ud_0; 0.0018 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_c+->p+,pi+,pi-,pi+,pi-; 0.0018 1 /Herwig/Decays/Mambo decaymode Lambda_c+->Xi0,K*+; 0.0012 1 /Herwig/Decays/CharmBaryon1 decaymode Lambda_c+->p+,K-,pi+,pi+,pi-; 0.0011 1 /Herwig/Decays/Mambo decaymode Lambda_c+->p+,phi; 0.00082 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->Lambda0,K+; 0.00075 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->d=sbar,u=ud_0; 0.0006 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_c+->Sigma0,K+; 0.00058 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->Sigma+,K+,K-; 0.0004 1 /Herwig/Decays/DecayME0 decaymode Lambda_c+->p+,K+,K-; 0.00035 1 /Herwig/Decays/DecayME0 # decaymode Lambdabar_c-->ubar=d,sbar=ud_0bar; 0.244527 1 /Herwig/Decays/WeakPartonic100 decaymode Lambdabar_c-->sbar=d,ubar=ud_0bar; 0.109073 1 /Herwig/Decays/WeakPartonic100 decaymode Lambdabar_c-->pbar-,K+,pi-,pi0; 0.029 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->pbar-,K0,pi0; 0.028 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->pbar-,K+,pi-; 0.028 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->Lambdabar0,rho-; 0.0272 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Sigmabar-,omega; 0.027 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->ubar=d,dbar=ud_0bar; 0.0262 1 /Herwig/Decays/WeakPartonic100 decaymode Lambdabar_c-->ubar=s,sbar=ud_0bar; 0.025926 1 /Herwig/Decays/WeakPartonic100 decaymode Lambdabar_c-->Sigmabar-,pi-,pi+; 0.023 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->pbar-,K0; 0.023 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Lambdabar0,e-,nu_ebar; 0.021 1 /Herwig/Decays/BaryonHeavy2 decaymode Lambdabar_c-->Lambdabar0,mu-,nu_mubar; 0.02 1 /Herwig/Decays/BaryonHeavy2 decaymode Lambdabar_c-->Sigmabar+,pi-,pi-; 0.019 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->pbar-,K0,pi-,pi+; 0.019 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->Lambdabar(1520)0,pi-; 0.018 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->pbar-,K*0; 0.016 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Sigma*bar-,omega; 0.014 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Sigmabar-,rho0; 0.013 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Sigmabar0,rho-; 0.013 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->pbar-,K0,eta; 0.012 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->Deltabar--,K*+; 0.011 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->dbar=d,ubar=ud_0bar; 0.0108 1 /Herwig/Decays/WeakPartonic100 decaymode Lambdabar_c-->Lambdabar0,pi-,eta; 0.0106 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->Sigmabar0,pi-; 0.0104 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Lambdabar0,pi-; 0.0101 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Sigmabar-,pi0; 0.01 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->sbar=s,ubar=ud_0bar; 0.00998 1 /Herwig/Decays/WeakPartonic100 decaymode Lambdabar_c-->Sigmabar-,eta'; 0.009 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Deltabar--,K+; 0.0086 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Sigma*bar-,eta; 0.0085 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Sigmabar0,pi-,pi-,pi+; 0.008 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->pbar-,K+,pi-,pi0,pi0; 0.008 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->Sigmabar-,pi+,mu-,nu_mubar; 0.0073 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->Sigmabar0,pi0,e-,nu_ebar; 0.0073 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->Sigmabar+,pi-,mu-,nu_mubar; 0.0073 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->Sigmabar-,pi+,e-,nu_ebar; 0.0072 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->Sigmabar0,pi0,mu-,nu_mubar; 0.0072 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->Sigmabar+,pi-,e-,nu_ebar; 0.0072 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->Sigmabar-,eta; 0.0055 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Sigma*bar-,pi0; 0.005 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Sigma*bar0,pi-; 0.005 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Sigmabar0,pi-,pi0; 0.005 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->Lambdabar0,K-,K0; 0.0044 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->Sigma*bar-,rho0; 0.0043 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Sigma*bar0,rho-; 0.0043 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Xibar0,K-; 0.0039 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Deltabar-,K*0; 0.0035 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Lambdabar0,pi-,pi-,pi+,pi0; 0.0033 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->Sigmabar-,phi; 0.0032 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Xibar+,K-,pi-; 0.003 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->Lambdabar0,pi-,pi-,pi+; 0.003 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->Xibar(1690)0,K-; 0.0029 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->Deltabar-,K0; 0.0029 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Sigmabar-,K*0; 0.0028 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->pbar-,f_0; 0.0028 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->Xi*bar0,K-; 0.0026 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->Lambdabar0,K-,pi-,pi+; 0.002394 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->e-,nu_ebar,dbar=ud_0bar; 0.0023 1 /Herwig/Decays/WeakPartonic100 decaymode Lambdabar_c-->mu-,nu_mubar,dbar=ud_0bar; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Lambdabar_c-->pbar-,pi-,pi+; 0.0019 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->pbar-,pi-,pi+,pi-,pi+; 0.0018 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->ubar=s,dbar=ud_0bar; 0.0018 1 /Herwig/Decays/WeakPartonic100 decaymode Lambdabar_c-->Xibar0,K*-; 0.0012 1 /Herwig/Decays/CharmBaryon1 decaymode Lambdabar_c-->pbar-,K+,pi-,pi-,pi+; 0.0011 1 /Herwig/Decays/Mambo decaymode Lambdabar_c-->pbar-,phi; 0.00082 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->Lambdabar0,K-; 0.00075 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->dbar=s,ubar=ud_0bar; 0.0006 1 /Herwig/Decays/WeakPartonic100 decaymode Lambdabar_c-->Sigmabar0,K-; 0.00058 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->Sigmabar-,K-,K+; 0.0004 1 /Herwig/Decays/DecayME0 decaymode Lambdabar_c-->pbar-,K-,K+; 0.00035 1 /Herwig/Decays/DecayME0 # decaymode Sigma_c0->Lambda_c+,pi-; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigmabar_c0->Lambdabar_c-,pi+; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigma_c+->Lambda_c+,pi0; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigmabar_c-->Lambdabar_c-,pi0; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigma_c++->Lambda_c+,pi+; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigmabar_c--->Lambdabar_c-,pi-; 1 1 /Herwig/Decays/HeavyStrong # decaymode Xi_c0->dbar=u,s=sd_0; 0.3942 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c0->dbar=s,u=sd_0; 0.1084 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c0->Xi-,pi+,pi+,pi-; 0.033 1 /Herwig/Decays/Mambo decaymode Xi_c0->mu+,nu_mu,pi-,Xi0; 0.032 1 /Herwig/Decays/Mambo decaymode Xi_c0->e+,nu_e,pi-,Xi0; 0.032 1 /Herwig/Decays/Mambo decaymode Xi_c0->Xi-,mu+,nu_mu; 0.032 1 /Herwig/Decays/BaryonHeavy3 decaymode Xi_c0->Xi-,e+,nu_e; 0.032 1 /Herwig/Decays/BaryonHeavy3 decaymode Xi_c0->sbar=u,s=sd_0; 0.0298 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c0->dbar=u,d=sd_0; 0.0298 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c0->Xi0,omega; 0.0233 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Sigma*+,K*-; 0.022 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Xi-,rho+; 0.018 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Xi*-,rho+; 0.018 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Xi0,rho0; 0.017 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->mu+,nu_mu,pi0,Xi-; 0.016 1 /Herwig/Decays/Mambo decaymode Xi_c0->e+,nu_e,pi0,Xi-; 0.016 1 /Herwig/Decays/Mambo decaymode Xi_c0->Sigma0,Kbar0; 0.012 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Lambda0,K*bar0; 0.011 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Sigma*0,K*bar0; 0.011 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Xi-,pi+; 0.01 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->sbar=s,u=sd_0; 0.0099 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c0->dbar=d,u=sd_0; 0.0099 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c0->Xi*0,rho0; 0.0092 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Xi0,eta'; 0.0085 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Xi*0,omega; 0.0084 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Sigma0,K*bar0; 0.0062 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Xi*-,pi+; 0.0056 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Sigma*+,K-; 0.005 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Lambda0,Kbar0; 0.0042 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->mu+,nu_mu,d=sd_0; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c0->e+,nu_e,d=sd_0; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c0->Sigma+,K*-; 0.004 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Lambda0,K-,pi+; 0.0034 1 /Herwig/Decays/DecayME0 decaymode Xi_c0->Omega-,K+; 0.003 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Xi*0,pi0; 0.0028 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Sigma*0,Kbar0; 0.0025 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->Xi0,eta; 0.0024 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->p+,K-,K*bar0; 0.0021 1 /Herwig/Decays/DecayME0 decaymode Xi_c0->p+,K-,K-,pi+; 0.002 1 /Herwig/Decays/Mambo decaymode Xi_c0->Xi0,phi; 0.0018 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->sbar=u,d=sd_0; 0.0016 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c0->Sigma+,K-; 0.0012 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c0->sbar=d,u=sd_0; 0.0005 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c0->Xi0,pi0; 0.0003 1 /Herwig/Decays/CharmBaryon1 # decaymode Xi_cbar0->d=ubar,sbar=sd_0bar; 0.3942 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar0->d=sbar,ubar=sd_0bar; 0.1084 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar0->Xibar+,pi-,pi-,pi+; 0.033 1 /Herwig/Decays/Mambo decaymode Xi_cbar0->Xibar+,e-,nu_ebar; 0.032 1 /Herwig/Decays/BaryonHeavy3 decaymode Xi_cbar0->Xibar+,mu-,nu_mubar; 0.032 1 /Herwig/Decays/BaryonHeavy3 decaymode Xi_cbar0->e-,nu_ebar,pi+,Xibar0; 0.032 1 /Herwig/Decays/Mambo decaymode Xi_cbar0->mu-,nu_mubar,pi+,Xibar0; 0.032 1 /Herwig/Decays/Mambo decaymode Xi_cbar0->d=ubar,dbar=sd_0bar; 0.0298 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar0->s=ubar,sbar=sd_0bar; 0.0298 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar0->Xibar0,omega; 0.0233 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Sigma*bar-,K*+; 0.022 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Xi*bar+,rho-; 0.018 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Xibar+,rho-; 0.018 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Xibar0,rho0; 0.017 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->e-,nu_ebar,pi0,Xibar+; 0.016 1 /Herwig/Decays/Mambo decaymode Xi_cbar0->mu-,nu_mubar,pi0,Xibar+; 0.016 1 /Herwig/Decays/Mambo decaymode Xi_cbar0->Sigmabar0,K0; 0.012 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Sigma*bar0,K*0; 0.011 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Lambdabar0,K*0; 0.011 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Xibar+,pi-; 0.01 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->d=dbar,ubar=sd_0bar; 0.0099 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar0->s=sbar,ubar=sd_0bar; 0.0099 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar0->Xi*bar0,rho0; 0.0092 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Xibar0,eta'; 0.0085 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Xi*bar0,omega; 0.0084 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Sigmabar0,K*0; 0.0062 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Xi*bar+,pi-; 0.0056 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Sigma*bar-,K+; 0.005 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Lambdabar0,K0; 0.0042 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Sigmabar-,K*+; 0.004 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->e-,nu_ebar,dbar=sd_0bar; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar0->mu-,nu_mubar,dbar=sd_0bar; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar0->Lambdabar0,K+,pi-; 0.0034 1 /Herwig/Decays/DecayME0 decaymode Xi_cbar0->Omegabar+,K-; 0.003 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Xi*bar0,pi0; 0.0028 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Sigma*bar0,K0; 0.0025 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->Xibar0,eta; 0.0024 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->pbar-,K+,K*0; 0.0021 1 /Herwig/Decays/DecayME0 decaymode Xi_cbar0->pbar-,K+,K+,pi-; 0.002 1 /Herwig/Decays/Mambo decaymode Xi_cbar0->Xibar0,phi; 0.0018 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->s=ubar,dbar=sd_0bar; 0.0016 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar0->Sigmabar-,K+; 0.0012 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar0->s=dbar,ubar=sd_0bar; 0.0005 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar0->Xibar0,pi0; 0.0003 1 /Herwig/Decays/CharmBaryon1 # decaymode Xi_c+->dbar=u,s=su_0; 0.4948 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c+->dbar=s,u=su_0; 0.1596 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c+->mu+,nu_mu,Xi0; 0.036 1 /Herwig/Decays/BaryonHeavy3 decaymode Xi_c+->e+,nu_e,Xi0; 0.036 1 /Herwig/Decays/BaryonHeavy3 decaymode Xi_c+->mu+,nu_mu,Xi-,pi+; 0.0293 1 /Herwig/Decays/Mambo decaymode Xi_c+->e+,nu_e,Xi-,pi+; 0.0293 1 /Herwig/Decays/Mambo decaymode Xi_c+->sbar=u,s=su_0; 0.0283 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c+->dbar=u,d=su_0; 0.0273 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c+->Xi0,rho+; 0.0234 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c+->Xi0,pi+,pi+,pi-; 0.0174 1 /Herwig/Decays/Mambo decaymode Xi_c+->mu+,nu_mu,Xi0,pi0; 0.0147 1 /Herwig/Decays/Mambo decaymode Xi_c+->e+,nu_e,Xi0,pi0; 0.0147 1 /Herwig/Decays/Mambo decaymode Xi_c+->Sigma+,Kbar0; 0.01 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c+->Sigma*+,Kbar0; 0.01 1 /Herwig/Decays/DecayME0 decaymode Xi_c+->Xi-,pi+,pi+; 0.01 1 /Herwig/Decays/DecayME0 decaymode Xi_c+->sbar=s,u=su_0; 0.0099 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c+->dbar=d,u=su_0; 0.0099 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c+->Sigma+,K*bar0; 0.0081 1 /Herwig/Decays/DecayME0 decaymode Xi_c+->Xi0,pi+; 0.0055 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_c+->mu+,nu_mu,d=su_0; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c+->e+,nu_e,d=su_0; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c+->Sigma+,K-,pi+; 0.004 1 /Herwig/Decays/DecayME0 decaymode Xi_c+->Lambda0,K-,pi+,pi+; 0.0032 1 /Herwig/Decays/Mambo decaymode Xi_c+->Sigma0,K-,pi+,pi+; 0.0029 1 /Herwig/Decays/Mambo decaymode Xi_c+->sbar=u,d=su_0; 0.0016 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_c+->Sigma+,K+,K-; 0.0015 1 /Herwig/Decays/DecayME0 decaymode Xi_c+->p+,K-,pi+; 0.0013 1 /Herwig/Decays/DecayME0 decaymode Xi_c+->p+,K*bar0; 0.0012 1 /Herwig/Decays/DecayME0 decaymode Xi_c+->p+,K_S0,K_S0; 0.0009 1 /Herwig/Decays/DecayME0 decaymode Xi_c+->Omega-,K+,pi+; 0.0007 1 /Herwig/Decays/DecayME0 decaymode Xi_c+->sbar=d,u=su_0; 0.0005 1 /Herwig/Decays/WeakPartonic100 # decaymode Xi_cbar-->d=ubar,sbar=su_0bar; 0.4948 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar-->d=sbar,ubar=su_0bar; 0.1596 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar-->e-,nu_ebar,Xibar0; 0.036 1 /Herwig/Decays/BaryonHeavy3 decaymode Xi_cbar-->mu-,nu_mubar,Xibar0; 0.036 1 /Herwig/Decays/BaryonHeavy3 decaymode Xi_cbar-->e-,nu_ebar,Xibar+,pi-; 0.0293 1 /Herwig/Decays/Mambo decaymode Xi_cbar-->mu-,nu_mubar,Xibar+,pi-; 0.0293 1 /Herwig/Decays/Mambo decaymode Xi_cbar-->s=ubar,sbar=su_0bar; 0.0283 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar-->d=ubar,dbar=su_0bar; 0.0273 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar-->Xibar0,rho-; 0.0234 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar-->Xibar0,pi-,pi-,pi+; 0.0174 1 /Herwig/Decays/Mambo decaymode Xi_cbar-->e-,nu_ebar,Xibar0,pi0; 0.0147 1 /Herwig/Decays/Mambo decaymode Xi_cbar-->mu-,nu_mubar,Xibar0,pi0; 0.0147 1 /Herwig/Decays/Mambo decaymode Xi_cbar-->Xibar+,pi-,pi-; 0.01 1 /Herwig/Decays/DecayME0 decaymode Xi_cbar-->Sigma*bar-,K0; 0.01 1 /Herwig/Decays/DecayME0 decaymode Xi_cbar-->Sigmabar-,K0; 0.01 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar-->d=dbar,ubar=su_0bar; 0.0099 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar-->s=sbar,ubar=su_0bar; 0.0099 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar-->Sigmabar-,K*0; 0.0081 1 /Herwig/Decays/DecayME0 decaymode Xi_cbar-->Xibar0,pi-; 0.0055 1 /Herwig/Decays/CharmBaryon1 decaymode Xi_cbar-->Sigmabar-,K+,pi-; 0.004 1 /Herwig/Decays/DecayME0 decaymode Xi_cbar-->e-,nu_ebar,dbar=su_0bar; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar-->mu-,nu_mubar,dbar=su_0bar; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar-->Lambdabar0,K+,pi-,pi-; 0.0032 1 /Herwig/Decays/Mambo decaymode Xi_cbar-->Sigmabar0,K+,pi-,pi-; 0.0029 1 /Herwig/Decays/Mambo decaymode Xi_cbar-->s=ubar,dbar=su_0bar; 0.0016 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_cbar-->Sigmabar-,K-,K+; 0.0015 1 /Herwig/Decays/DecayME0 decaymode Xi_cbar-->pbar-,K+,pi-; 0.0013 1 /Herwig/Decays/DecayME0 decaymode Xi_cbar-->pbar-,K*0; 0.0012 1 /Herwig/Decays/DecayME0 decaymode Xi_cbar-->pbar-,K_S0,K_S0; 0.0009 1 /Herwig/Decays/DecayME0 decaymode Xi_cbar-->Omegabar+,K-,pi-; 0.0007 1 /Herwig/Decays/DecayME0 decaymode Xi_cbar-->s=dbar,ubar=su_0bar; 0.0005 1 /Herwig/Decays/WeakPartonic100 # decaymode Xi'_c0->Xi_c0,gamma; 1 1 /Herwig/Decays/HeavyGamma # decaymode Xi'_cbar0->Xi_cbar0,gamma; 1 1 /Herwig/Decays/HeavyGamma # decaymode Xi'_c+->Xi_c+,gamma; 1 1 /Herwig/Decays/HeavyGamma # decaymode Xi'_cbar-->Xi_cbar-,gamma; 1 1 /Herwig/Decays/HeavyGamma # decaymode Omega_c0->dbar=u,s=ss_1; 0.5319 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_c0->dbar=s,u=ss_1; 0.1606 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_c0->mu+,nu_mu,s=ss_1; 0.066 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_c0->e+,nu_e,s=ss_1; 0.066 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_c0->sbar=u,s=ss_1; 0.0298 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_c0->dbar=u,d=ss_1; 0.0298 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_c0->Omega-,rho+; 0.025 1 /Herwig/Decays/CharmBaryon1 decaymode Omega_c0->Omega-,mu+,nu_mu; 0.014 1 /Herwig/Decays/BaryonHeavy3 decaymode Omega_c0->Omega-,e+,nu_e; 0.014 1 /Herwig/Decays/BaryonHeavy3 decaymode Omega_c0->Xi0,Kbar0; 0.012 1 /Herwig/Decays/CharmBaryon1 decaymode Omega_c0->sbar=s,u=ss_1; 0.0099 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_c0->dbar=d,u=ss_1; 0.0099 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_c0->Xi*0,K*bar0; 0.0078 1 /Herwig/Decays/CharmBaryon1 decaymode Omega_c0->Xi0,K*bar0; 0.0059 1 /Herwig/Decays/CharmBaryon1 decaymode Omega_c0->Omega-,pi+; 0.0059 1 /Herwig/Decays/CharmBaryon1 decaymode Omega_c0->mu+,nu_mu,d=ss_1; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_c0->e+,nu_e,d=ss_1; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_c0->sbar=u,d=ss_1; 0.0016 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_c0->Xi*0,Kbar0; 0.0014 1 /Herwig/Decays/CharmBaryon1 decaymode Omega_c0->sbar=d,u=ss_1; 0.0005 1 /Herwig/Decays/WeakPartonic100 # decaymode Omega_cbar0->d=ubar,sbar=ss_1bar; 0.5319 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_cbar0->d=sbar,ubar=ss_1bar; 0.1606 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_cbar0->e-,nu_ebar,sbar=ss_1bar; 0.066 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_cbar0->mu-,nu_mubar,sbar=ss_1bar; 0.066 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_cbar0->d=ubar,dbar=ss_1bar; 0.0298 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_cbar0->s=ubar,sbar=ss_1bar; 0.0298 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_cbar0->Omegabar+,rho-; 0.025 1 /Herwig/Decays/CharmBaryon1 decaymode Omega_cbar0->Omegabar+,e-,nu_ebar; 0.014 1 /Herwig/Decays/BaryonHeavy3 decaymode Omega_cbar0->Omegabar+,mu-,nu_mubar; 0.014 1 /Herwig/Decays/BaryonHeavy3 decaymode Omega_cbar0->Xibar0,K0; 0.012 1 /Herwig/Decays/CharmBaryon1 decaymode Omega_cbar0->d=dbar,ubar=ss_1bar; 0.0099 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_cbar0->s=sbar,ubar=ss_1bar; 0.0099 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_cbar0->Xi*bar0,K*0; 0.0078 1 /Herwig/Decays/CharmBaryon1 decaymode Omega_cbar0->Omegabar+,pi-; 0.0059 1 /Herwig/Decays/CharmBaryon1 decaymode Omega_cbar0->Xibar0,K*0; 0.0059 1 /Herwig/Decays/CharmBaryon1 decaymode Omega_cbar0->e-,nu_ebar,dbar=ss_1bar; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_cbar0->mu-,nu_mubar,dbar=ss_1bar; 0.004 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_cbar0->s=ubar,dbar=ss_1bar; 0.0016 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_cbar0->Xi*bar0,K0; 0.0014 1 /Herwig/Decays/CharmBaryon1 decaymode Omega_cbar0->s=dbar,ubar=ss_1bar; 0.0005 1 /Herwig/Decays/WeakPartonic100 # decaymode Lambda_b0->s=cbar,c=ud_0; 0.2104 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->d=ubar,c=ud_0; 0.2072 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->c=ubar,d=ud_0; 0.0913 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->c=cbar,s=ud_0; 0.09044 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->Lambda_c+,e-,nu_ebar; 0.0662 1 /Herwig/Decays/BaryonHeavy1 decaymode Lambda_b0->Lambda_c+,mu-,nu_mubar; 0.0662 1 /Herwig/Decays/BaryonHeavy1 decaymode Lambda_b0->Lambda_c+,a_1-; 0.0379 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_b0->Lambda_c+,D_s*-; 0.0343 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_b0->e-,nu_ebar,c=ud_0; 0.0291 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->mu-,nu_mubar,c=ud_0; 0.0291 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->Lambda_c+,tau-,nu_taubar; 0.0191 1 /Herwig/Decays/BaryonHeavy1 decaymode Lambda_b0->Lambda_c+,D_s-; 0.014 1 /Herwig/Decays/BottomBaryonScalar decaymode Lambda_b0->Lambda_c+,D_s1-; 0.0136 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_b0->Lambda_c+,rho-; 0.0135 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_b0->s=ubar,c=ud_0; 0.0134 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->tau-,nu_taubar,c=ud_0; 0.01288 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->d=cbar,c=ud_0; 0.012493 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->Lambda_c+,pi-; 0.006 1 /Herwig/Decays/BottomBaryonScalar decaymode Lambda_b0->c=cbar,d=ud_0; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->c=ubar,s=ud_0; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->d=ubar,u=ud_0; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->s=cbar,u=ud_0; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->Lambda_c+,D_s0-; 0.0016 1 /Herwig/Decays/BottomBaryonScalar decaymode Lambda_b0->Lambda_c+,D*-; 0.00147 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_b0->Sigma*_c0,pi0; 0.0012 1 /Herwig/Decays/DecayME0 decaymode Lambda_b0->Sigma*_c+,pi-; 0.0012 1 /Herwig/Decays/DecayME0 decaymode Lambda_b0->Sigma*_c0,rho0; 0.001 1 /Herwig/Decays/DecayME0 decaymode Lambda_b0->Sigma*_c+,rho-; 0.001 1 /Herwig/Decays/DecayME0 decaymode Lambda_b0->Xi_c*0,K0; 0.001 1 /Herwig/Decays/DecayME0 decaymode Lambda_b0->e-,nu_ebar,u=ud_0; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->mu-,nu_mubar,u=ud_0; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->Lambda_c+,K*-; 0.00067 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_b0->Sigma_c0,pi0; 0.0006 1 /Herwig/Decays/DecayME0 decaymode Lambda_b0->Lambda_c(2625)+,e-,nu_ebar; 0.0006 1 /Herwig/Decays/ExcitedLambda decaymode Lambda_b0->Lambda_c(2625)+,mu-,nu_mubar; 0.0006 1 /Herwig/Decays/ExcitedLambda decaymode Lambda_b0->Sigma_c+,pi-; 0.0006 1 /Herwig/Decays/DecayME0 decaymode Lambda_b0->Lambda_c+,D-; 0.000537 1 /Herwig/Decays/BottomBaryonScalar decaymode Lambda_b0->Sigma_c0,rho0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Lambda_b0->Sigma_c0,eta'; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Lambda_b0->Sigma_c+,rho-; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Lambda_b0->Xi'_c0,K0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Lambda_b0->Lambda0,Jpsi; 0.00047 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_b0->Lambda_c+,K-; 0.00043 1 /Herwig/Decays/BottomBaryonScalar decaymode Lambda_b0->Sigma_c0,eta; 0.0004 1 /Herwig/Decays/DecayME0 decaymode Lambda_b0->Lambda0,psi(2S); 0.00039 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_b0->tau-,nu_taubar,u=ud_0; 0.0003 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->Xi_c0,K0; 0.0003 1 /Herwig/Decays/DecayME0 decaymode Lambda_b0->Lambda_c(2593)+,e-,nu_ebar; 0.0003 1 /Herwig/Decays/ExcitedLambda decaymode Lambda_b0->Lambda_c(2593)+,mu-,nu_mubar; 0.0003 1 /Herwig/Decays/ExcitedLambda decaymode Lambda_b0->d=cbar,u=ud_0; 0.0001 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->s=ubar,u=ud_0; 0.0001 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_b0->Lambda_c(2625)+,tau-,nu_taubar; 8.0E-5 1 /Herwig/Decays/ExcitedLambda decaymode Lambda_b0->Lambda_c(2593)+,tau-,nu_taubar; 4.0E-5 1 /Herwig/Decays/ExcitedLambda # decaymode Lambda_bbar0->sbar=c,cbar=ud_0bar; 0.2104 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->dbar=u,cbar=ud_0bar; 0.2072 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->cbar=u,dbar=ud_0bar; 0.0913 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->cbar=c,sbar=ud_0bar; 0.09044 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->Lambdabar_c-,mu+,nu_mu; 0.0662 1 /Herwig/Decays/BaryonHeavy1 decaymode Lambda_bbar0->Lambdabar_c-,e+,nu_e; 0.0662 1 /Herwig/Decays/BaryonHeavy1 decaymode Lambda_bbar0->Lambdabar_c-,a_1+; 0.0379 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_bbar0->Lambdabar_c-,D_s*+; 0.0343 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_bbar0->mu+,nu_mu,cbar=ud_0bar; 0.0291 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->e+,nu_e,cbar=ud_0bar; 0.0291 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->Lambdabar_c-,tau+,nu_tau; 0.0191 1 /Herwig/Decays/BaryonHeavy1 decaymode Lambda_bbar0->Lambdabar_c-,D_s+; 0.014 1 /Herwig/Decays/BottomBaryonScalar decaymode Lambda_bbar0->Lambdabar_c-,D_s1+; 0.0136 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_bbar0->Lambdabar_c-,rho+; 0.0135 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_bbar0->sbar=u,cbar=ud_0bar; 0.0134 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->tau+,nu_tau,cbar=ud_0bar; 0.01288 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->dbar=c,cbar=ud_0bar; 0.012493 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->Lambdabar_c-,pi+; 0.006 1 /Herwig/Decays/BottomBaryonScalar decaymode Lambda_bbar0->cbar=u,sbar=ud_0bar; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->cbar=c,dbar=ud_0bar; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->sbar=c,ubar=ud_0bar; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->dbar=u,ubar=ud_0bar; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->Lambdabar_c-,D_s0+; 0.0016 1 /Herwig/Decays/BottomBaryonScalar decaymode Lambda_bbar0->Lambdabar_c-,D*+; 0.00147 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_bbar0->Sigmabar*_c-,pi+; 0.0012 1 /Herwig/Decays/DecayME0 decaymode Lambda_bbar0->Sigmabar*_c0,pi0; 0.0012 1 /Herwig/Decays/DecayME0 decaymode Lambda_bbar0->Xi_c*bar0,Kbar0; 0.001 1 /Herwig/Decays/DecayME0 decaymode Lambda_bbar0->Sigmabar*_c-,rho+; 0.001 1 /Herwig/Decays/DecayME0 decaymode Lambda_bbar0->Sigmabar*_c0,rho0; 0.001 1 /Herwig/Decays/DecayME0 decaymode Lambda_bbar0->mu+,nu_mu,ubar=ud_0bar; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->e+,nu_e,ubar=ud_0bar; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->Lambdabar_c-,K*+; 0.00067 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_bbar0->Sigmabar_c-,pi+; 0.0006 1 /Herwig/Decays/DecayME0 decaymode Lambda_bbar0->Lambda_c(2625)bar-,mu+,nu_mu; 0.0006 1 /Herwig/Decays/ExcitedLambda decaymode Lambda_bbar0->Lambda_c(2625)bar-,e+,nu_e; 0.0006 1 /Herwig/Decays/ExcitedLambda decaymode Lambda_bbar0->Sigmabar_c0,pi0; 0.0006 1 /Herwig/Decays/DecayME0 decaymode Lambda_bbar0->Lambdabar_c-,D+; 0.000537 1 /Herwig/Decays/BottomBaryonScalar decaymode Lambda_bbar0->Xi'_cbar0,Kbar0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Lambda_bbar0->Sigmabar_c-,rho+; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Lambda_bbar0->Sigmabar_c0,rho0; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Lambda_bbar0->Sigmabar_c0,eta'; 0.0005 1 /Herwig/Decays/DecayME0 decaymode Lambda_bbar0->Lambdabar0,Jpsi; 0.00047 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_bbar0->Lambdabar_c-,K+; 0.00043 1 /Herwig/Decays/BottomBaryonScalar decaymode Lambda_bbar0->Sigmabar_c0,eta; 0.0004 1 /Herwig/Decays/DecayME0 decaymode Lambda_bbar0->Lambdabar0,psi(2S); 0.00039 1 /Herwig/Decays/BottomBaryonVector decaymode Lambda_bbar0->Lambda_c(2593)bar-,mu+,nu_mu; 0.0003 1 /Herwig/Decays/ExcitedLambda decaymode Lambda_bbar0->Lambda_c(2593)bar-,e+,nu_e; 0.0003 1 /Herwig/Decays/ExcitedLambda decaymode Lambda_bbar0->Xi_cbar0,Kbar0; 0.0003 1 /Herwig/Decays/DecayME0 decaymode Lambda_bbar0->tau+,nu_tau,ubar=ud_0bar; 0.0003 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->sbar=u,ubar=ud_0bar; 0.0001 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->dbar=c,ubar=ud_0bar; 0.0001 1 /Herwig/Decays/WeakPartonic100 decaymode Lambda_bbar0->Lambda_c(2625)bar-,tau+,nu_tau; 8.0E-5 1 /Herwig/Decays/ExcitedLambda decaymode Lambda_bbar0->Lambda_c(2593)bar-,tau+,nu_tau; 4.0E-5 1 /Herwig/Decays/ExcitedLambda # decaymode Sigma_b-->Lambda_b0,pi-; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigma_bbar+->Lambda_bbar0,pi+; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigma_b0->Lambda_b0,pi0; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigma_bbar0->Lambda_bbar0,pi0; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigma_b+->Lambda_b0,pi+; 1 1 /Herwig/Decays/HeavyStrong # decaymode Sigma_bbar-->Lambda_bbar0,pi-; 1 1 /Herwig/Decays/HeavyStrong # decaymode Xi_b-->s=cbar,c=sd_0; 0.2039 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->d=ubar,c=sd_0; 0.2016 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->c=ubar,d=sd_0; 0.0913 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->c=cbar,s=sd_0; 0.08946 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->Xi_c0,e-,nu_ebar; 0.0732 1 /Herwig/Decays/BaryonHeavy1 decaymode Xi_b-->Xi_c0,mu-,nu_mubar; 0.0732 1 /Herwig/Decays/BaryonHeavy1 decaymode Xi_b-->Xi_c0,D_s*-; 0.043 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b-->Xi_c0,a_1-; 0.037 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b-->Xi_c0,D_s-; 0.027 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_b-->Xi_c0,rho-; 0.026 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b-->e-,nu_ebar,c=sd_0; 0.023 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->mu-,nu_mubar,c=sd_0; 0.023 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->Xi_c0,tau-,nu_taubar; 0.0211 1 /Herwig/Decays/BaryonHeavy1 decaymode Xi_b-->s=ubar,c=sd_0; 0.0123 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->d=cbar,c=sd_0; 0.012 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->tau-,nu_taubar,c=sd_0; 0.011 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->Xi_c0,pi-; 0.009 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_b-->c=cbar,d=sd_0; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->c=ubar,s=sd_0; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->d=ubar,u=sd_0; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->s=cbar,u=sd_0; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->Xi_c0,D*-; 0.0015 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b-->Xi_c0,K*-; 0.0015 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b-->Xi-,Jpsi; 0.001 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b-->Xi_c0,D-; 0.001 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_b-->Xi-,psi(2S); 0.00084 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b-->e-,nu_ebar,u=sd_0; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->mu-,nu_mubar,u=sd_0; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->Xi_c0,K-; 0.0007 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_b-->tau-,nu_taubar,u=sd_0; 0.0003 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->Sigma_c0,K-; 0.0002 1 /Herwig/Decays/DecayME0 decaymode Xi_b-->d=cbar,u=sd_0; 0.0001 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->s=ubar,u=sd_0; 0.0001 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b-->Xi'_c0,pi-; 0.0001 1 /Herwig/Decays/DecayME0 # decaymode Xi_bbar+->sbar=c,cbar=sd_0bar; 0.2039 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->dbar=u,cbar=sd_0bar; 0.2016 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->cbar=u,dbar=sd_0bar; 0.0913 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->cbar=c,sbar=sd_0bar; 0.08946 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->Xi_cbar0,mu+,nu_mu; 0.0732 1 /Herwig/Decays/BaryonHeavy1 decaymode Xi_bbar+->Xi_cbar0,e+,nu_e; 0.0732 1 /Herwig/Decays/BaryonHeavy1 decaymode Xi_bbar+->Xi_cbar0,D_s*+; 0.043 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar+->Xi_cbar0,a_1+; 0.037 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar+->Xi_cbar0,D_s+; 0.027 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_bbar+->Xi_cbar0,rho+; 0.026 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar+->mu+,nu_mu,cbar=sd_0bar; 0.023 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->e+,nu_e,cbar=sd_0bar; 0.023 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->Xi_cbar0,tau+,nu_tau; 0.0211 1 /Herwig/Decays/BaryonHeavy1 decaymode Xi_bbar+->sbar=u,cbar=sd_0bar; 0.0123 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->dbar=c,cbar=sd_0bar; 0.012 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->tau+,nu_tau,cbar=sd_0bar; 0.011 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->Xi_cbar0,pi+; 0.009 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_bbar+->cbar=u,sbar=sd_0bar; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->cbar=c,dbar=sd_0bar; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->sbar=c,ubar=sd_0bar; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->dbar=u,ubar=sd_0bar; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->Xi_cbar0,K*+; 0.0015 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar+->Xi_cbar0,D*+; 0.0015 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar+->Xi_cbar0,D+; 0.001 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_bbar+->Xibar+,Jpsi; 0.001 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar+->Xibar+,psi(2S); 0.00084 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar+->mu+,nu_mu,ubar=sd_0bar; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->e+,nu_e,ubar=sd_0bar; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->Xi_cbar0,K+; 0.0007 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_bbar+->tau+,nu_tau,ubar=sd_0bar; 0.0003 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->Sigmabar_c0,K+; 0.0002 1 /Herwig/Decays/DecayME0 decaymode Xi_bbar+->Xi'_cbar0,pi+; 0.0001 1 /Herwig/Decays/DecayME0 decaymode Xi_bbar+->sbar=u,ubar=sd_0bar; 0.0001 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar+->dbar=c,ubar=sd_0bar; 0.0001 1 /Herwig/Decays/WeakPartonic100 # decaymode Xi_b0->s=cbar,c=su_0; 0.2219 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->d=ubar,c=su_0; 0.21785 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->c=ubar,d=su_0; 0.09111 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->c=cbar,s=su_0; 0.08946 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->e-,nu_ebar,Xi_c+; 0.0732 1 /Herwig/Decays/BaryonHeavy1 decaymode Xi_b0->mu-,nu_mubar,Xi_c+; 0.0732 1 /Herwig/Decays/BaryonHeavy1 decaymode Xi_b0->Xi_c+,D_s*-; 0.032 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b0->Xi_c+,a_1-; 0.028 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b0->e-,nu_ebar,c=su_0; 0.023 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->mu-,nu_mubar,c=su_0; 0.023 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->tau-,nu_taubar,Xi_c+; 0.0211 1 /Herwig/Decays/BaryonHeavy1 decaymode Xi_b0->Xi_c+,D_s-; 0.02 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_b0->Xi_c+,rho-; 0.019 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b0->s=ubar,c=su_0; 0.01287 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->d=cbar,c=su_0; 0.01263 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->tau-,nu_taubar,c=su_0; 0.011 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->Xi_c+,pi-; 0.0067 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_b0->c=cbar,d=su_0; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->c=ubar,s=su_0; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->d=ubar,u=su_0; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->s=cbar,u=su_0; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->Xi_c+,D*-; 0.0011 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b0->Xi_c+,K*-; 0.0011 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b0->Xi0,Jpsi; 0.001 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b0->Xi0,psi(2S); 0.00084 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b0->e-,nu_ebar,u=su_0; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->mu-,nu_mubar,u=su_0; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->Xi_c+,D-; 0.00077 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_b0->Xi_c+,K-; 0.00053 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_b0->Sigma_c+,K-; 0.0004 1 /Herwig/Decays/DecayME0 decaymode Xi_b0->Omega_c0,K0; 0.00032 1 /Herwig/Decays/DecayME0 decaymode Xi_b0->tau-,nu_taubar,u=su_0; 0.0003 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->Sigma_c0,Kbar0; 0.0003 1 /Herwig/Decays/DecayME0 decaymode Xi_b0->Xi'_c0,eta'; 0.0003 1 /Herwig/Decays/DecayME0 decaymode Xi_b0->Xi'_c+,pi-; 0.00025 1 /Herwig/Decays/DecayME0 decaymode Xi_b0->Xi'_c0,eta; 0.00021 1 /Herwig/Decays/DecayME0 decaymode Xi_b0->Xi'_c0,pi0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode Xi_b0->Xi_c0,eta; 0.00016 1 /Herwig/Decays/DecayME0 decaymode Xi_b0->Lambda_c+,K-; 0.00014 1 /Herwig/Decays/DecayME0 decaymode Xi_b0->d=cbar,u=su_0; 0.0001 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->s=ubar,u=su_0; 0.0001 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_b0->Sigma0,D*0; 9.0E-5 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_b0->Sigma0,D0; 6.0E-5 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_b0->Xi_c0,eta'; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode Xi_b0->Xi_c0,pi0; 3.0E-5 1 /Herwig/Decays/DecayME0 decaymode Xi_b0->Lambda0,D0; 2.0E-5 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_b0->Lambda0,D*0; 2.0E-5 1 /Herwig/Decays/BottomBaryonVector # decaymode Xi_bbar0->sbar=c,cbar=su_0bar; 0.2219 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->dbar=u,cbar=su_0bar; 0.21785 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->cbar=u,dbar=su_0bar; 0.09111 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->cbar=c,sbar=su_0bar; 0.08946 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->mu+,nu_mu,Xi_cbar-; 0.0732 1 /Herwig/Decays/BaryonHeavy1 decaymode Xi_bbar0->e+,nu_e,Xi_cbar-; 0.0732 1 /Herwig/Decays/BaryonHeavy1 decaymode Xi_bbar0->Xi_cbar-,D_s*+; 0.032 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar0->Xi_cbar-,a_1+; 0.028 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar0->mu+,nu_mu,cbar=su_0bar; 0.023 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->e+,nu_e,cbar=su_0bar; 0.023 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->tau+,nu_tau,Xi_cbar-; 0.0211 1 /Herwig/Decays/BaryonHeavy1 decaymode Xi_bbar0->Xi_cbar-,D_s+; 0.02 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_bbar0->Xi_cbar-,rho+; 0.019 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar0->sbar=u,cbar=su_0bar; 0.01287 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->dbar=c,cbar=su_0bar; 0.01263 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->tau+,nu_tau,cbar=su_0bar; 0.011 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->Xi_cbar-,pi+; 0.0067 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_bbar0->cbar=u,sbar=su_0bar; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->cbar=c,dbar=su_0bar; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->sbar=c,ubar=su_0bar; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->dbar=u,ubar=su_0bar; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->Xi_cbar-,K*+; 0.0011 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar0->Xi_cbar-,D*+; 0.0011 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar0->Xibar0,Jpsi; 0.001 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar0->Xibar0,psi(2S); 0.00084 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar0->mu+,nu_mu,ubar=su_0bar; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->e+,nu_e,ubar=su_0bar; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->Xi_cbar-,D+; 0.00077 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_bbar0->Xi_cbar-,K+; 0.00053 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_bbar0->Sigmabar_c-,K+; 0.0004 1 /Herwig/Decays/DecayME0 decaymode Xi_bbar0->Omega_cbar0,Kbar0; 0.00032 1 /Herwig/Decays/DecayME0 decaymode Xi_bbar0->Xi'_cbar0,eta'; 0.0003 1 /Herwig/Decays/DecayME0 decaymode Xi_bbar0->Sigmabar_c0,K0; 0.0003 1 /Herwig/Decays/DecayME0 decaymode Xi_bbar0->tau+,nu_tau,ubar=su_0bar; 0.0003 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->Xi'_cbar-,pi+; 0.00025 1 /Herwig/Decays/DecayME0 decaymode Xi_bbar0->Xi'_cbar0,eta; 0.00021 1 /Herwig/Decays/DecayME0 decaymode Xi_bbar0->Xi'_cbar0,pi0; 0.0002 1 /Herwig/Decays/DecayME0 decaymode Xi_bbar0->Xi_cbar0,eta; 0.00016 1 /Herwig/Decays/DecayME0 decaymode Xi_bbar0->Lambdabar_c-,K+; 0.00014 1 /Herwig/Decays/DecayME0 decaymode Xi_bbar0->sbar=u,ubar=su_0bar; 0.0001 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->dbar=c,ubar=su_0bar; 0.0001 1 /Herwig/Decays/WeakPartonic100 decaymode Xi_bbar0->Sigmabar0,D*bar0; 9.0E-5 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar0->Sigmabar0,Dbar0; 6.0E-5 1 /Herwig/Decays/BottomBaryonScalar decaymode Xi_bbar0->Xi_cbar0,eta'; 4.0E-5 1 /Herwig/Decays/DecayME0 decaymode Xi_bbar0->Xi_cbar0,pi0; 3.0E-5 1 /Herwig/Decays/DecayME0 decaymode Xi_bbar0->Lambdabar0,D*bar0; 2.0E-5 1 /Herwig/Decays/BottomBaryonVector decaymode Xi_bbar0->Lambdabar0,Dbar0; 2.0E-5 1 /Herwig/Decays/BottomBaryonScalar # decaymode Xi_b'-->Xi_b-,gamma; 1 1 /Herwig/Decays/HeavyGamma # decaymode Xi_b'bar+->Xi_bbar+,gamma; 1 1 /Herwig/Decays/HeavyGamma # decaymode Xi_b'0->Xi_b0,gamma; 1 1 /Herwig/Decays/HeavyGamma # decaymode Xi_b'bar0->Xi_bbar0,gamma; 1 1 /Herwig/Decays/HeavyGamma # decaymode Omega_b-->s=cbar,c=ss_1; 0.2221 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->d=ubar,c=ss_1; 0.1983 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->c=ubar,d=ss_1; 0.0913 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->c=cbar,s=ss_1; 0.0844 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->e-,nu_ebar,Omega_c*0; 0.0484 1 /Herwig/Decays/BaryonHeavy1 decaymode Omega_b-->mu-,nu_mubar,Omega_c*0; 0.0484 1 /Herwig/Decays/BaryonHeavy1 decaymode Omega_b-->e-,nu_ebar,c=ss_1; 0.0252 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->mu-,nu_mubar,c=ss_1; 0.0252 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->e-,nu_ebar,Omega_c0; 0.0226 1 /Herwig/Decays/BaryonHeavy1 decaymode Omega_b-->mu-,nu_mubar,Omega_c0; 0.0226 1 /Herwig/Decays/BaryonHeavy1 decaymode Omega_b-->Omega_c*0,a_1-; 0.0216 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_b-->Omega_c0,a_1-; 0.0156 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_b-->Omega_c0,D_s-; 0.0155 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_b-->Omega_c*0,D_s*-; 0.0139 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_b-->Omega_c*0,rho-; 0.0135 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_b-->tau-,nu_taubar,Omega_c*0; 0.0128 1 /Herwig/Decays/BaryonHeavy1 decaymode Omega_b-->Omega_c*0,D_s-; 0.0125 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_b-->tau-,nu_taubar,c=ss_1; 0.0124 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->s=ubar,c=ss_1; 0.0119 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->Omega_c0,rho-; 0.0111 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_b-->d=cbar,c=ss_1; 0.011 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->Omega_c0,D_s*-; 0.0099 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_b-->Omega_c*0,pi-; 0.0095 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_b-->tau-,nu_taubar,Omega_c0; 0.0069 1 /Herwig/Decays/BaryonHeavy1 decaymode Omega_b-->c=cbar,d=ss_1; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->c=ubar,s=ss_1; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->Omega-,Jpsi; 0.0043 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_b-->Omega_c0,pi-; 0.0043 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_b-->Omega-,psi(2S); 0.0026 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_b-->d=ubar,u=ss_1; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->s=cbar,u=ss_1; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->Omega_c*0,D*-; 0.0013 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_b-->Omega_c*0,D-; 0.001 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_b-->Omega_c*0,K*-; 0.0009 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_b-->e-,nu_ebar,u=ss_1; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->mu-,nu_mubar,u=ss_1; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->Omega_c0,D*-; 0.0007 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_b-->Omega_c0,K*-; 0.0007 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_b-->Omega_c*0,K-; 0.0007 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_b-->Omega_c0,D-; 0.0005 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_b-->tau-,nu_taubar,u=ss_1; 0.0003 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->Omega_c0,K-; 0.0003 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_b-->d=cbar,u=ss_1; 0.0001 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_b-->s=ubar,u=ss_1; 0.0001 1 /Herwig/Decays/WeakPartonic100 # decaymode Omega_bbar+->sbar=c,cbar=ss_1bar; 0.2221 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->dbar=u,cbar=ss_1bar; 0.1983 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->cbar=u,dbar=ss_1bar; 0.0913 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->cbar=c,sbar=ss_1bar; 0.0844 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->mu+,nu_mu,Omega_c*bar0; 0.0484 1 /Herwig/Decays/BaryonHeavy1 decaymode Omega_bbar+->e+,nu_e,Omega_c*bar0; 0.0484 1 /Herwig/Decays/BaryonHeavy1 decaymode Omega_bbar+->mu+,nu_mu,cbar=ss_1bar; 0.0252 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->e+,nu_e,cbar=ss_1bar; 0.0252 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->mu+,nu_mu,Omega_cbar0; 0.0226 1 /Herwig/Decays/BaryonHeavy1 decaymode Omega_bbar+->e+,nu_e,Omega_cbar0; 0.0226 1 /Herwig/Decays/BaryonHeavy1 decaymode Omega_bbar+->Omega_c*bar0,a_1+; 0.0216 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_bbar+->Omega_cbar0,a_1+; 0.0156 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_bbar+->Omega_cbar0,D_s+; 0.0155 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_bbar+->Omega_c*bar0,D_s*+; 0.0139 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_bbar+->Omega_c*bar0,rho+; 0.0135 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_bbar+->tau+,nu_tau,Omega_c*bar0; 0.0128 1 /Herwig/Decays/BaryonHeavy1 decaymode Omega_bbar+->Omega_c*bar0,D_s+; 0.0125 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_bbar+->tau+,nu_tau,cbar=ss_1bar; 0.0124 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->sbar=u,cbar=ss_1bar; 0.0119 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->Omega_cbar0,rho+; 0.0111 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_bbar+->dbar=c,cbar=ss_1bar; 0.011 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->Omega_cbar0,D_s*+; 0.0099 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_bbar+->Omega_c*bar0,pi+; 0.0095 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_bbar+->tau+,nu_tau,Omega_cbar0; 0.0069 1 /Herwig/Decays/BaryonHeavy1 decaymode Omega_bbar+->cbar=u,sbar=ss_1bar; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->cbar=c,dbar=ss_1bar; 0.0048 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->Omega_cbar0,pi+; 0.0043 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_bbar+->Omegabar+,Jpsi; 0.0043 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_bbar+->Omegabar+,psi(2S); 0.0026 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_bbar+->sbar=c,ubar=ss_1bar; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->dbar=u,ubar=ss_1bar; 0.0022 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->Omega_c*bar0,D*+; 0.0013 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_bbar+->Omega_c*bar0,D+; 0.001 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_bbar+->Omega_c*bar0,K*+; 0.0009 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_bbar+->mu+,nu_mu,ubar=ss_1bar; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->e+,nu_e,ubar=ss_1bar; 0.0008 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->Omega_c*bar0,K+; 0.0007 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_bbar+->Omega_cbar0,K*+; 0.0007 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_bbar+->Omega_cbar0,D*+; 0.0007 1 /Herwig/Decays/BottomBaryonVector decaymode Omega_bbar+->Omega_cbar0,D+; 0.0005 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_bbar+->Omega_cbar0,K+; 0.0003 1 /Herwig/Decays/BottomBaryonScalar decaymode Omega_bbar+->tau+,nu_tau,ubar=ss_1bar; 0.0003 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->sbar=u,ubar=ss_1bar; 0.0001 1 /Herwig/Decays/WeakPartonic100 decaymode Omega_bbar+->dbar=c,ubar=ss_1bar; 0.0001 1 /Herwig/Decays/WeakPartonic100 # # the (56,0^+_2) 40 multiplet # # decaymode Lambda(1600)0->Sigma-,pi+; 0.267667 1 /Herwig/Decays/SU3StrongRoper decaymode Lambda(1600)0->Sigma+,pi-; 0.267667 1 /Herwig/Decays/SU3StrongRoper decaymode Lambda(1600)0->Sigma0,pi0; 0.267666 1 /Herwig/Decays/SU3StrongRoper decaymode Lambda(1600)0->n0,Kbar0; 0.0985 1 /Herwig/Decays/SU3StrongRoper decaymode Lambda(1600)0->p+,K-; 0.0985 1 /Herwig/Decays/SU3StrongRoper # decaymode Lambdabar(1600)0->Sigmabar-,pi+; 0.267667 1 /Herwig/Decays/SU3StrongRoper decaymode Lambdabar(1600)0->Sigmabar0,pi0; 0.267667 1 /Herwig/Decays/SU3StrongRoper decaymode Lambdabar(1600)0->Sigmabar+,pi-; 0.267666 1 /Herwig/Decays/SU3StrongRoper decaymode Lambdabar(1600)0->pbar-,K+; 0.0985 1 /Herwig/Decays/SU3StrongRoper decaymode Lambdabar(1600)0->nbar0,K0; 0.0985 1 /Herwig/Decays/SU3StrongRoper # decaymode p(1440)+->n0,pi+; 0.433153 1 /Herwig/Decays/SU3StrongRoper decaymode p(1440)+->p+,pi0; 0.216576 1 /Herwig/Decays/SU3StrongRoper decaymode p(1440)+->Delta++,pi-; 0.131196 1 /Herwig/Decays/SU3RoperDecuplet decaymode p(1440)+->Delta+,pi0; 0.087464 1 /Herwig/Decays/SU3RoperDecuplet decaymode p(1440)+->p+,pi+,pi-; 0.058309 1 /Herwig/Decays/DecayME0 decaymode p(1440)+->Delta0,pi+; 0.043732 1 /Herwig/Decays/SU3RoperDecuplet decaymode p(1440)+->p+,pi0,pi0; 0.029155 1 /Herwig/Decays/DecayME0 decaymode p(1440)+->p+,gamma; 0.000415 1 /Herwig/Decays/SU3RoperGamma # decaymode pbar(1440)->nbar0,pi-; 0.433153 1 /Herwig/Decays/SU3StrongRoper decaymode pbar(1440)->pbar-,pi0; 0.216576 1 /Herwig/Decays/SU3StrongRoper decaymode pbar(1440)->Deltabar--,pi+; 0.131196 1 /Herwig/Decays/SU3RoperDecuplet decaymode pbar(1440)->Deltabar-,pi0; 0.087464 1 /Herwig/Decays/SU3RoperDecuplet decaymode pbar(1440)->pbar-,pi+,pi-; 0.058309 1 /Herwig/Decays/DecayME0 decaymode pbar(1440)->Deltabar0,pi-; 0.043732 1 /Herwig/Decays/SU3RoperDecuplet decaymode pbar(1440)->pbar-,pi0,pi0; 0.029155 1 /Herwig/Decays/DecayME0 decaymode pbar(1440)->pbar-,gamma; 0.000415 1 /Herwig/Decays/SU3RoperGamma # decaymode n(1440)0->p+,pi-; 0.433245 1 /Herwig/Decays/SU3StrongRoper decaymode n(1440)0->n0,pi0; 0.216622 1 /Herwig/Decays/SU3StrongRoper decaymode n(1440)0->Delta-,pi+; 0.131223 1 /Herwig/Decays/SU3RoperDecuplet decaymode n(1440)0->Delta0,pi0; 0.087482 1 /Herwig/Decays/SU3RoperDecuplet decaymode n(1440)0->n0,pi+,pi-; 0.058321 1 /Herwig/Decays/DecayME0 decaymode n(1440)0->Delta+,pi-; 0.043741 1 /Herwig/Decays/SU3RoperDecuplet decaymode n(1440)0->n0,pi0,pi0; 0.029161 1 /Herwig/Decays/DecayME0 decaymode n(1440)0->n0,gamma; 0.000205 1 /Herwig/Decays/SU3RoperGamma # decaymode nbar(1440)->pbar-,pi+; 0.433245 1 /Herwig/Decays/SU3StrongRoper decaymode nbar(1440)->nbar0,pi0; 0.216622 1 /Herwig/Decays/SU3StrongRoper decaymode nbar(1440)->Deltabar+,pi-; 0.131223 1 /Herwig/Decays/SU3RoperDecuplet decaymode nbar(1440)->Deltabar0,pi0; 0.087482 1 /Herwig/Decays/SU3RoperDecuplet decaymode nbar(1440)->nbar0,pi+,pi-; 0.058321 1 /Herwig/Decays/DecayME0 decaymode nbar(1440)->Deltabar-,pi+; 0.043741 1 /Herwig/Decays/SU3RoperDecuplet decaymode nbar(1440)->nbar0,pi0,pi0; 0.029161 1 /Herwig/Decays/DecayME0 decaymode nbar(1440)->nbar0,gamma; 0.000205 1 /Herwig/Decays/SU3RoperGamma # decaymode Sigma(1660)-->Lambda0,pi-; 0.445 1 /Herwig/Decays/SU3StrongRoper decaymode Sigma(1660)-->Sigma-,pi0; 0.2225 1 /Herwig/Decays/SU3StrongRoper decaymode Sigma(1660)-->Sigma0,pi-; 0.2225 1 /Herwig/Decays/SU3StrongRoper decaymode Sigma(1660)-->n0,K-; 0.11 1 /Herwig/Decays/SU3StrongRoper # decaymode Sigmabar(1660)+->Lambdabar0,pi+; 0.445 1 /Herwig/Decays/SU3StrongRoper decaymode Sigmabar(1660)+->Sigmabar0,pi+; 0.2225 1 /Herwig/Decays/SU3StrongRoper decaymode Sigmabar(1660)+->Sigmabar+,pi0; 0.2225 1 /Herwig/Decays/SU3StrongRoper decaymode Sigmabar(1660)+->nbar0,K+; 0.11 1 /Herwig/Decays/SU3StrongRoper # decaymode Sigma(1660)0->Lambda0,pi0; 0.445 1 /Herwig/Decays/SU3StrongRoper decaymode Sigma(1660)0->Sigma-,pi+; 0.2225 1 /Herwig/Decays/SU3StrongRoper decaymode Sigma(1660)0->Sigma+,pi-; 0.2225 1 /Herwig/Decays/SU3StrongRoper decaymode Sigma(1660)0->n0,Kbar0; 0.055 1 /Herwig/Decays/SU3StrongRoper decaymode Sigma(1660)0->p+,K-; 0.055 1 /Herwig/Decays/SU3StrongRoper # decaymode Sigmabar(1660)0->Lambdabar0,pi0; 0.445 1 /Herwig/Decays/SU3StrongRoper decaymode Sigmabar(1660)0->Sigmabar-,pi+; 0.2225 1 /Herwig/Decays/SU3StrongRoper decaymode Sigmabar(1660)0->Sigmabar+,pi-; 0.2225 1 /Herwig/Decays/SU3StrongRoper decaymode Sigmabar(1660)0->pbar-,K+; 0.055 1 /Herwig/Decays/SU3StrongRoper decaymode Sigmabar(1660)0->nbar0,K0; 0.055 1 /Herwig/Decays/SU3StrongRoper # decaymode Sigma(1660)+->Lambda0,pi+; 0.445 1 /Herwig/Decays/SU3StrongRoper decaymode Sigma(1660)+->Sigma0,pi+; 0.2225 1 /Herwig/Decays/SU3StrongRoper decaymode Sigma(1660)+->Sigma+,pi0; 0.2225 1 /Herwig/Decays/SU3StrongRoper decaymode Sigma(1660)+->p+,Kbar0; 0.11 1 /Herwig/Decays/SU3StrongRoper # decaymode Sigmabar(1660)-->Lambdabar0,pi-; 0.445 1 /Herwig/Decays/SU3StrongRoper decaymode Sigmabar(1660)-->Sigmabar-,pi0; 0.2225 1 /Herwig/Decays/SU3StrongRoper decaymode Sigmabar(1660)-->Sigmabar0,pi-; 0.2225 1 /Herwig/Decays/SU3StrongRoper decaymode Sigmabar(1660)-->pbar-,K0; 0.11 1 /Herwig/Decays/SU3StrongRoper # decaymode Xi(1690)0->Lambda0,Kbar0; 0.571429 1 /Herwig/Decays/SU3StrongRoper decaymode Xi(1690)0->Sigma+,K-; 0.285714 1 /Herwig/Decays/SU3StrongRoper decaymode Xi(1690)0->Sigma0,Kbar0; 0.142857 1 /Herwig/Decays/SU3StrongRoper # decaymode Xibar(1690)0->Lambdabar0,K0; 0.571429 1 /Herwig/Decays/SU3StrongRoper decaymode Xibar(1690)0->Sigmabar-,K+; 0.285714 1 /Herwig/Decays/SU3StrongRoper decaymode Xibar(1690)0->Sigmabar0,K0; 0.142857 1 /Herwig/Decays/SU3StrongRoper # decaymode Xi(1690)-->Lambda0,K-; 0.571429 1 /Herwig/Decays/SU3StrongRoper decaymode Xi(1690)-->Sigma-,Kbar0; 0.285714 1 /Herwig/Decays/SU3StrongRoper decaymode Xi(1690)-->Sigma0,K-; 0.142857 1 /Herwig/Decays/SU3StrongRoper # decaymode Xibar(1690)+->Lambdabar0,K+; 0.571429 1 /Herwig/Decays/SU3StrongRoper decaymode Xibar(1690)+->Sigmabar+,K0; 0.285714 1 /Herwig/Decays/SU3StrongRoper decaymode Xibar(1690)+->Sigmabar0,K+; 0.142857 1 /Herwig/Decays/SU3StrongRoper # # the (70,1^-_1) 40 multiplet # # decaymode Lambda(1670)0->Lambda0,eta; 0.250001 1 /Herwig/Decays/SU3Strong2 decaymode Lambda(1670)0->Sigma-,pi+; 0.183333 1 /Herwig/Decays/SU3Strong2 decaymode Lambda(1670)0->Sigma0,pi0; 0.183333 1 /Herwig/Decays/SU3Strong2 decaymode Lambda(1670)0->Sigma+,pi-; 0.183333 1 /Herwig/Decays/SU3Strong2 decaymode Lambda(1670)0->n0,Kbar0; 0.1 1 /Herwig/Decays/SU3Strong2 decaymode Lambda(1670)0->p+,K-; 0.1 1 /Herwig/Decays/SU3Strong2 # decaymode Lambdabar(1670)0->Lambdabar0,eta; 0.250001 1 /Herwig/Decays/SU3Strong2 decaymode Lambdabar(1670)0->Sigmabar-,pi+; 0.183333 1 /Herwig/Decays/SU3Strong2 decaymode Lambdabar(1670)0->Sigmabar0,pi0; 0.183333 1 /Herwig/Decays/SU3Strong2 decaymode Lambdabar(1670)0->Sigmabar+,pi-; 0.183333 1 /Herwig/Decays/SU3Strong2 decaymode Lambdabar(1670)0->pbar-,K+; 0.1 1 /Herwig/Decays/SU3Strong2 decaymode Lambdabar(1670)0->nbar0,K0; 0.1 1 /Herwig/Decays/SU3Strong2 # decaymode p(1535)+->p+,eta; 0.529 1 /Herwig/Decays/SU3Strong2 decaymode p(1535)+->n0,pi+; 0.239 1 /Herwig/Decays/SU3Strong2 decaymode p(1535)+->p+,pi0; 0.1195 1 /Herwig/Decays/SU3Strong2 decaymode p(1535)+->n(1440)0,pi+; 0.04 1 /Herwig/Decays/SU3Strong4 decaymode p(1535)+->p(1440)+,pi0; 0.02 1 /Herwig/Decays/SU3Strong4 decaymode p(1535)+->n0,rho+; 0.013333 1 /Herwig/Decays/DecayME0 decaymode p(1535)+->p+,pi+,pi-; 0.013333 1 /Herwig/Decays/DecayME0 decaymode p(1535)+->p+,pi0,pi0; 0.006667 1 /Herwig/Decays/DecayME0 decaymode p(1535)+->p+,rho0; 0.006667 1 /Herwig/Decays/DecayME0 decaymode p(1535)+->Delta++,pi-; 0.005 1 /Herwig/Decays/SU3OctetDecuplet2 decaymode p(1535)+->Delta+,pi0; 0.003333 1 /Herwig/Decays/SU3OctetDecuplet2 decaymode p(1535)+->p+,gamma; 0.0025 1 /Herwig/Decays/SU3Gamma2 decaymode p(1535)+->Delta0,pi+; 0.001667 1 /Herwig/Decays/SU3OctetDecuplet2 # decaymode pbar(1535)->pbar-,eta; 0.529 1 /Herwig/Decays/SU3Strong2 decaymode pbar(1535)->nbar0,pi-; 0.239 1 /Herwig/Decays/SU3Strong2 decaymode pbar(1535)->pbar-,pi0; 0.1195 1 /Herwig/Decays/SU3Strong2 decaymode pbar(1535)->nbar(1440),pi-; 0.04 1 /Herwig/Decays/SU3Strong4 decaymode pbar(1535)->pbar(1440),pi0; 0.02 1 /Herwig/Decays/SU3Strong4 decaymode pbar(1535)->pbar-,pi+,pi-; 0.013333 1 /Herwig/Decays/DecayME0 decaymode pbar(1535)->nbar0,rho-; 0.013333 1 /Herwig/Decays/DecayME0 decaymode pbar(1535)->pbar-,pi0,pi0; 0.006667 1 /Herwig/Decays/DecayME0 decaymode pbar(1535)->pbar-,rho0; 0.006667 1 /Herwig/Decays/DecayME0 decaymode pbar(1535)->Deltabar--,pi+; 0.005 1 /Herwig/Decays/SU3OctetDecuplet2 decaymode pbar(1535)->Deltabar-,pi0; 0.003333 1 /Herwig/Decays/SU3OctetDecuplet2 decaymode pbar(1535)->pbar-,gamma; 0.0025 1 /Herwig/Decays/SU3Gamma2 decaymode pbar(1535)->Deltabar0,pi-; 0.001667 1 /Herwig/Decays/SU3OctetDecuplet2 # decaymode n(1535)0->n0,eta; 0.529 1 /Herwig/Decays/SU3Strong2 decaymode n(1535)0->p+,pi-; 0.239687 1 /Herwig/Decays/SU3Strong2 decaymode n(1535)0->n0,pi0; 0.119843 1 /Herwig/Decays/SU3Strong2 decaymode n(1535)0->p(1440)+,pi-; 0.04 1 /Herwig/Decays/SU3Strong4 decaymode n(1535)0->n(1440)0,pi0; 0.02 1 /Herwig/Decays/SU3Strong4 decaymode n(1535)0->n0,pi+,pi-; 0.013333 1 /Herwig/Decays/DecayME0 decaymode n(1535)0->p+,rho-; 0.013333 1 /Herwig/Decays/DecayME0 decaymode n(1535)0->n0,pi0,pi0; 0.006667 1 /Herwig/Decays/DecayME0 decaymode n(1535)0->n0,rho0; 0.006667 1 /Herwig/Decays/DecayME0 decaymode n(1535)0->Delta-,pi+; 0.005 1 /Herwig/Decays/SU3OctetDecuplet2 decaymode n(1535)0->Delta0,pi0; 0.003333 1 /Herwig/Decays/SU3OctetDecuplet2 decaymode n(1535)0->Delta+,pi-; 0.001667 1 /Herwig/Decays/SU3OctetDecuplet2 decaymode n(1535)0->n0,gamma; 0.00147 1 /Herwig/Decays/SU3Gamma2 # decaymode nbar(1535)->nbar0,eta; 0.529 1 /Herwig/Decays/SU3Strong2 decaymode nbar(1535)->pbar-,pi+; 0.239687 1 /Herwig/Decays/SU3Strong2 decaymode nbar(1535)->nbar0,pi0; 0.119843 1 /Herwig/Decays/SU3Strong2 decaymode nbar(1535)->pbar(1440),pi+; 0.04 1 /Herwig/Decays/SU3Strong4 decaymode nbar(1535)->nbar(1440),pi0; 0.02 1 /Herwig/Decays/SU3Strong4 decaymode nbar(1535)->pbar-,rho+; 0.013333 1 /Herwig/Decays/DecayME0 decaymode nbar(1535)->nbar0,pi+,pi-; 0.013333 1 /Herwig/Decays/DecayME0 decaymode nbar(1535)->nbar0,pi0,pi0; 0.006667 1 /Herwig/Decays/DecayME0 decaymode nbar(1535)->nbar0,rho0; 0.006667 1 /Herwig/Decays/DecayME0 decaymode nbar(1535)->Deltabar+,pi-; 0.005 1 /Herwig/Decays/SU3OctetDecuplet2 decaymode nbar(1535)->Deltabar0,pi0; 0.003333 1 /Herwig/Decays/SU3OctetDecuplet2 decaymode nbar(1535)->Deltabar-,pi+; 0.001667 1 /Herwig/Decays/SU3OctetDecuplet2 decaymode nbar(1535)->nbar0,gamma; 0.00147 1 /Herwig/Decays/SU3Gamma2 # decaymode Sigma(1750)-->Sigma-,eta; 0.55 1 /Herwig/Decays/SU3Strong2 decaymode Sigma(1750)-->n0,K-; 0.25 1 /Herwig/Decays/SU3Strong2 decaymode Sigma(1750)-->Lambda0,pi-; 0.2 1 /Herwig/Decays/SU3Strong2 # decaymode Sigmabar(1750)+->Sigmabar+,eta; 0.55 1 /Herwig/Decays/SU3Strong2 decaymode Sigmabar(1750)+->nbar0,K+; 0.25 1 /Herwig/Decays/SU3Strong2 decaymode Sigmabar(1750)+->Lambdabar0,pi+; 0.2 1 /Herwig/Decays/SU3Strong2 # decaymode Sigma(1750)0->Sigma0,eta; 0.55 1 /Herwig/Decays/SU3Strong2 decaymode Sigma(1750)0->Lambda0,pi0; 0.2 1 /Herwig/Decays/SU3Strong2 decaymode Sigma(1750)0->n0,Kbar0; 0.125 1 /Herwig/Decays/SU3Strong2 decaymode Sigma(1750)0->p+,K-; 0.125 1 /Herwig/Decays/SU3Strong2 # decaymode Sigmabar(1750)0->Sigmabar0,eta; 0.55 1 /Herwig/Decays/SU3Strong2 decaymode Sigmabar(1750)0->Lambdabar0,pi0; 0.2 1 /Herwig/Decays/SU3Strong2 decaymode Sigmabar(1750)0->pbar-,K+; 0.125 1 /Herwig/Decays/SU3Strong2 decaymode Sigmabar(1750)0->nbar0,K0; 0.125 1 /Herwig/Decays/SU3Strong2 # decaymode Sigma(1750)+->Sigma+,eta; 0.55 1 /Herwig/Decays/SU3Strong2 decaymode Sigma(1750)+->p+,Kbar0; 0.25 1 /Herwig/Decays/SU3Strong2 decaymode Sigma(1750)+->Lambda0,pi+; 0.2 1 /Herwig/Decays/SU3Strong2 # decaymode Sigmabar(1750)-->Sigmabar-,eta; 0.55 1 /Herwig/Decays/SU3Strong2 decaymode Sigmabar(1750)-->pbar-,K0; 0.25 1 /Herwig/Decays/SU3Strong2 decaymode Sigmabar(1750)-->Lambdabar0,pi-; 0.2 1 /Herwig/Decays/SU3Strong2 # decaymode Xi(1950)-->Lambda0,K-; 0.5 1 /Herwig/Decays/SU3Strong2 decaymode Xi(1950)-->Xi0,pi-; 0.333333 1 /Herwig/Decays/SU3Strong2 decaymode Xi(1950)-->Xi-,pi0; 0.166667 1 /Herwig/Decays/SU3Strong2 # decaymode Xibar(1950)+->Lambdabar0,K+; 0.5 1 /Herwig/Decays/SU3Strong2 decaymode Xibar(1950)+->Xibar0,pi+; 0.333333 1 /Herwig/Decays/SU3Strong2 decaymode Xibar(1950)+->Xibar+,pi0; 0.166667 1 /Herwig/Decays/SU3Strong2 # decaymode Xi(1950)0->Lambda0,Kbar0; 0.5 1 /Herwig/Decays/SU3Strong2 decaymode Xi(1950)0->Xi-,pi+; 0.333333 1 /Herwig/Decays/SU3Strong2 decaymode Xi(1950)0->Xi0,pi0; 0.166667 1 /Herwig/Decays/SU3Strong2 # decaymode Xibar(1950)0->Lambdabar0,K0; 0.5 1 /Herwig/Decays/SU3Strong2 decaymode Xibar(1950)0->Xibar+,pi-; 0.333333 1 /Herwig/Decays/SU3Strong2 decaymode Xibar(1950)0->Xibar0,pi0; 0.166667 1 /Herwig/Decays/SU3Strong2 # # the (70,1^-_1) 40 multiplet # # decaymode Lambda(1690)0->Lambda0,pi+,pi-; 0.166667 1 /Herwig/Decays/DecayME0 decaymode Lambda(1690)0->n0,Kbar0; 0.1125 1 /Herwig/Decays/SU3Strong3 decaymode Lambda(1690)0->p+,K-; 0.1125 1 /Herwig/Decays/SU3Strong3 decaymode Lambda(1690)0->Sigma-,pi+; 0.108333 1 /Herwig/Decays/SU3Strong3 decaymode Lambda(1690)0->Sigma0,pi0; 0.108333 1 /Herwig/Decays/SU3Strong3 decaymode Lambda(1690)0->Sigma+,pi-; 0.108333 1 /Herwig/Decays/SU3Strong3 decaymode Lambda(1690)0->Lambda0,pi0,pi0; 0.083333 1 /Herwig/Decays/DecayME0 decaymode Lambda(1690)0->Sigma-,pi0,pi+; 0.066667 1 /Herwig/Decays/DecayME0 decaymode Lambda(1690)0->Sigma0,pi+,pi-; 0.066667 1 /Herwig/Decays/DecayME0 decaymode Lambda(1690)0->Sigma+,pi0,pi-; 0.066667 1 /Herwig/Decays/DecayME0 # decaymode Lambdabar(1690)0->Lambdabar0,pi+,pi-; 0.166667 1 /Herwig/Decays/DecayME0 decaymode Lambdabar(1690)0->pbar-,K+; 0.1125 1 /Herwig/Decays/SU3Strong3 decaymode Lambdabar(1690)0->nbar0,K0; 0.1125 1 /Herwig/Decays/SU3Strong3 decaymode Lambdabar(1690)0->Sigmabar-,pi+; 0.108333 1 /Herwig/Decays/SU3Strong3 decaymode Lambdabar(1690)0->Sigmabar0,pi0; 0.108333 1 /Herwig/Decays/SU3Strong3 decaymode Lambdabar(1690)0->Sigmabar+,pi-; 0.108333 1 /Herwig/Decays/SU3Strong3 decaymode Lambdabar(1690)0->Lambdabar0,pi0,pi0; 0.083333 1 /Herwig/Decays/DecayME0 decaymode Lambdabar(1690)0->Sigmabar-,pi0,pi+; 0.066667 1 /Herwig/Decays/DecayME0 decaymode Lambdabar(1690)0->Sigmabar0,pi+,pi-; 0.066667 1 /Herwig/Decays/DecayME0 decaymode Lambdabar(1690)0->Sigmabar+,pi0,pi-; 0.066667 1 /Herwig/Decays/DecayME0 # decaymode p(1520)+->n0,pi+; 0.38 1 /Herwig/Decays/SU3Strong3 decaymode p(1520)+->p+,pi0; 0.19 1 /Herwig/Decays/SU3Strong3 decaymode p(1520)+->Delta++,pi-; 0.125 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode p(1520)+->n0,rho+; 0.115067 1 /Herwig/Decays/DecayME0 decaymode p(1520)+->Delta+,pi0; 0.083333 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode p(1520)+->p+,rho0; 0.057533 1 /Herwig/Decays/DecayME0 decaymode p(1520)+->Delta0,pi+; 0.041667 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode p(1520)+->p+,gamma; 0.0051 1 /Herwig/Decays/SU3Gamma4 decaymode p(1520)+->p+,eta; 0.0023 1 /Herwig/Decays/SU3Strong3 # decaymode pbar(1520)-->nbar0,pi-; 0.38 1 /Herwig/Decays/SU3Strong3 decaymode pbar(1520)-->pbar-,pi0; 0.19 1 /Herwig/Decays/SU3Strong3 decaymode pbar(1520)-->Deltabar--,pi+; 0.125 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode pbar(1520)-->nbar0,rho-; 0.115067 1 /Herwig/Decays/DecayME0 decaymode pbar(1520)-->Deltabar-,pi0; 0.083333 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode pbar(1520)-->pbar-,rho0; 0.057533 1 /Herwig/Decays/DecayME0 decaymode pbar(1520)-->Deltabar0,pi-; 0.041667 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode pbar(1520)-->pbar-,gamma; 0.0051 1 /Herwig/Decays/SU3Gamma4 decaymode pbar(1520)-->pbar-,eta; 0.0023 1 /Herwig/Decays/SU3Strong3 # decaymode n(1520)0->p+,pi-; 0.38 1 /Herwig/Decays/SU3Strong3 decaymode n(1520)0->n0,pi0; 0.19 1 /Herwig/Decays/SU3Strong3 decaymode n(1520)0->Delta-,pi+; 0.125 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode n(1520)0->p+,rho-; 0.1157 1 /Herwig/Decays/DecayME0 decaymode n(1520)0->Delta0,pi0; 0.083333 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode n(1520)0->n0,rho0; 0.05785 1 /Herwig/Decays/DecayME0 decaymode n(1520)0->Delta+,pi-; 0.041667 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode n(1520)0->n0,gamma; 0.00415 1 /Herwig/Decays/SU3Gamma4 decaymode n(1520)0->n0,eta; 0.0023 1 /Herwig/Decays/SU3Strong3 # decaymode nbar(1520)0->pbar-,pi+; 0.38 1 /Herwig/Decays/SU3Strong3 decaymode nbar(1520)0->nbar0,pi0; 0.19 1 /Herwig/Decays/SU3Strong3 decaymode nbar(1520)0->Deltabar+,pi-; 0.125 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode nbar(1520)0->pbar-,rho+; 0.1157 1 /Herwig/Decays/DecayME0 decaymode nbar(1520)0->Deltabar0,pi0; 0.083333 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode nbar(1520)0->nbar0,rho0; 0.05785 1 /Herwig/Decays/DecayME0 decaymode nbar(1520)0->Deltabar-,pi+; 0.041667 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode nbar(1520)0->nbar0,gamma; 0.00415 1 /Herwig/Decays/SU3Gamma4 decaymode nbar(1520)0->nbar0,eta; 0.0023 1 /Herwig/Decays/SU3Strong3 # decaymode Sigma(1670)-->Sigma-,pi0; 0.358 1 /Herwig/Decays/SU3Strong3 decaymode Sigma(1670)-->Sigma0,pi-; 0.358 1 /Herwig/Decays/SU3Strong3 decaymode Sigma(1670)-->Lambda0,pi-; 0.179 1 /Herwig/Decays/SU3Strong3 decaymode Sigma(1670)-->n0,K-; 0.105 1 /Herwig/Decays/SU3Strong3 # decaymode Sigmabar(1670)+->Sigmabar0,pi+; 0.358 1 /Herwig/Decays/SU3Strong3 decaymode Sigmabar(1670)+->Sigmabar+,pi0; 0.358 1 /Herwig/Decays/SU3Strong3 decaymode Sigmabar(1670)+->Lambdabar0,pi+; 0.179 1 /Herwig/Decays/SU3Strong3 decaymode Sigmabar(1670)+->nbar0,K+; 0.105 1 /Herwig/Decays/SU3Strong3 # decaymode Sigma(1670)0->Sigma-,pi+; 0.358 1 /Herwig/Decays/SU3Strong3 decaymode Sigma(1670)0->Sigma+,pi-; 0.358 1 /Herwig/Decays/SU3Strong3 decaymode Sigma(1670)0->Lambda0,pi0; 0.179 1 /Herwig/Decays/SU3Strong3 decaymode Sigma(1670)0->n0,Kbar0; 0.0525 1 /Herwig/Decays/SU3Strong3 decaymode Sigma(1670)0->p+,K-; 0.0525 1 /Herwig/Decays/SU3Strong3 # decaymode Sigmabar(1670)0->Sigmabar-,pi+; 0.358 1 /Herwig/Decays/SU3Strong3 decaymode Sigmabar(1670)0->Sigmabar+,pi-; 0.358 1 /Herwig/Decays/SU3Strong3 decaymode Sigmabar(1670)0->Lambdabar0,pi0; 0.179 1 /Herwig/Decays/SU3Strong3 decaymode Sigmabar(1670)0->pbar-,K+; 0.0525 1 /Herwig/Decays/SU3Strong3 decaymode Sigmabar(1670)0->nbar0,K0; 0.0525 1 /Herwig/Decays/SU3Strong3 # decaymode Sigma(1670)+->Sigma0,pi+; 0.358 1 /Herwig/Decays/SU3Strong3 decaymode Sigma(1670)+->Sigma+,pi0; 0.358 1 /Herwig/Decays/SU3Strong3 decaymode Sigma(1670)+->Lambda0,pi+; 0.179 1 /Herwig/Decays/SU3Strong3 decaymode Sigma(1670)+->p+,Kbar0; 0.105 1 /Herwig/Decays/SU3Strong3 # decaymode Sigmabar(1670)-->Sigmabar-,pi0; 0.358 1 /Herwig/Decays/SU3Strong3 decaymode Sigmabar(1670)-->Sigmabar0,pi-; 0.358 1 /Herwig/Decays/SU3Strong3 decaymode Sigmabar(1670)-->Lambdabar0,pi-; 0.179 1 /Herwig/Decays/SU3Strong3 decaymode Sigmabar(1670)-->pbar-,K0; 0.105 1 /Herwig/Decays/SU3Strong3 # decaymode Xi(1820)-->Lambda0,K-; 0.55 1 /Herwig/Decays/SU3Strong3 decaymode Xi(1820)-->Xi*0,pi-; 0.14 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode Xi(1820)-->Sigma-,Kbar0; 0.086667 1 /Herwig/Decays/SU3Strong3 decaymode Xi(1820)-->Xi0,pi-; 0.073333 1 /Herwig/Decays/SU3Strong3 decaymode Xi(1820)-->Xi*-,pi0; 0.07 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode Xi(1820)-->Sigma0,K-; 0.043333 1 /Herwig/Decays/SU3Strong3 decaymode Xi(1820)-->Xi-,pi0; 0.036667 1 /Herwig/Decays/SU3Strong3 # decaymode Xibar(1820)+->Lambdabar0,K+; 0.55 1 /Herwig/Decays/SU3Strong3 decaymode Xibar(1820)+->Xi*bar0,pi+; 0.14 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode Xibar(1820)+->Sigmabar+,K0; 0.086667 1 /Herwig/Decays/SU3Strong3 decaymode Xibar(1820)+->Xibar0,pi+; 0.073333 1 /Herwig/Decays/SU3Strong3 decaymode Xibar(1820)+->Xi*bar+,pi0; 0.07 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode Xibar(1820)+->Sigmabar0,K+; 0.043333 1 /Herwig/Decays/SU3Strong3 decaymode Xibar(1820)+->Xibar+,pi0; 0.036667 1 /Herwig/Decays/SU3Strong3 # decaymode Xi(1820)0->Lambda0,Kbar0; 0.55 1 /Herwig/Decays/SU3Strong3 decaymode Xi(1820)0->Xi*-,pi+; 0.14 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode Xi(1820)0->Sigma+,K-; 0.086667 1 /Herwig/Decays/SU3Strong3 decaymode Xi(1820)0->Xi-,pi+; 0.073333 1 /Herwig/Decays/SU3Strong3 decaymode Xi(1820)0->Xi*0,pi0; 0.07 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode Xi(1820)0->Sigma0,Kbar0; 0.043333 1 /Herwig/Decays/SU3Strong3 decaymode Xi(1820)0->Xi0,pi0; 0.036667 1 /Herwig/Decays/SU3Strong3 # decaymode Xibar(1820)0->Lambdabar0,K0; 0.55 1 /Herwig/Decays/SU3Strong3 decaymode Xibar(1820)0->Xi*bar+,pi-; 0.14 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode Xibar(1820)0->Sigmabar-,K+; 0.086667 1 /Herwig/Decays/SU3Strong3 decaymode Xibar(1820)0->Xibar+,pi-; 0.073333 1 /Herwig/Decays/SU3Strong3 decaymode Xibar(1820)0->Xi*bar0,pi0; 0.07 1 /Herwig/Decays/SU3OctetDecuplet3 decaymode Xibar(1820)0->Sigmabar0,K0; 0.043333 1 /Herwig/Decays/SU3Strong3 decaymode Xibar(1820)0->Xibar0,pi0; 0.036667 1 /Herwig/Decays/SU3Strong3 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/decayers.in��������������������������������������������������������0000644�0001750�0001750�00003713067�11754474774�021545� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # This file contains the set-up of the decayers for Herwig++ outputted # from the Herwig++ Particles Database at 13:42:1 on the 15/11/2007. # # load libraries which are needed library Hw64Decay.so library HwPartonicDecay.so library HwWeakCurrents.so library HwFormFactors.so library HwSMDecay.so library HwVMDecay.so library HwTMDecay.so library HwMamboDecay.so library HwPerturbativeDecay.so library HwBaryonDecay.so library HwTauDecay.so library HwPerturbativeHiggsDecay.so # create Herwig::TauDecayer Tau1Meson newdef Tau1Meson:Iteration 1 newdef Tau1Meson:Ntry 500 newdef Tau1Meson:Points 10000 newdef Tau1Meson:GenerateIntermediates 0 insert Tau1Meson:WeightLocation 0 0 insert Tau1Meson:WeightLocation 1 0 insert Tau1Meson:MaximumWeight 0 0.50 insert Tau1Meson:MaximumWeight 1 0.02 create Herwig::ScalarMesonCurrent Tau1MesonCurrent HwWeakCurrents.so newdef Tau1MesonCurrent:ThetaEtaEtaPrime -0.194 newdef Tau1MesonCurrent:ID 0 211 newdef Tau1MesonCurrent:Decay_Constant 0 130.7 newdef Tau1MesonCurrent:ID 1 111 newdef Tau1MesonCurrent:Decay_Constant 1 130.7 newdef Tau1MesonCurrent:ID 2 111 newdef Tau1MesonCurrent:Decay_Constant 2 130.7 newdef Tau1MesonCurrent:ID 3 221 newdef Tau1MesonCurrent:Decay_Constant 3 130.7 newdef Tau1MesonCurrent:ID 4 221 newdef Tau1MesonCurrent:Decay_Constant 4 130.7 newdef Tau1MesonCurrent:ID 5 221 newdef Tau1MesonCurrent:Decay_Constant 5 130.7 newdef Tau1MesonCurrent:ID 6 331 newdef Tau1MesonCurrent:Decay_Constant 6 130.7 newdef Tau1MesonCurrent:ID 7 331 newdef Tau1MesonCurrent:Decay_Constant 7 130.7 newdef Tau1MesonCurrent:ID 8 331 newdef Tau1MesonCurrent:Decay_Constant 8 130.7 newdef Tau1MesonCurrent:ID 9 311 newdef Tau1MesonCurrent:Decay_Constant 9 159.8 newdef Tau1MesonCurrent:ID 10 321 newdef Tau1MesonCurrent:Decay_Constant 10 159.8 newdef Tau1MesonCurrent:ID 11 411 newdef Tau1MesonCurrent:Decay_Constant 11 200 newdef Tau1MesonCurrent:ID 12 421 newdef Tau1MesonCurrent:Decay_Constant 12 200 newdef Tau1MesonCurrent:ID 13 431 newdef Tau1MesonCurrent:Decay_Constant 13 241 newdef Tau1MesonCurrent:ID 14 10431 newdef Tau1MesonCurrent:Decay_Constant 14 73.7 newdef Tau1MesonCurrent:Quark 0 2 newdef Tau1MesonCurrent:AntiQuark 0 -1 newdef Tau1MesonCurrent:Quark 1 1 newdef Tau1MesonCurrent:AntiQuark 1 -1 newdef Tau1MesonCurrent:Quark 2 2 newdef Tau1MesonCurrent:AntiQuark 2 -2 newdef Tau1MesonCurrent:Quark 3 1 newdef Tau1MesonCurrent:AntiQuark 3 -1 newdef Tau1MesonCurrent:Quark 4 2 newdef Tau1MesonCurrent:AntiQuark 4 -2 newdef Tau1MesonCurrent:Quark 5 3 newdef Tau1MesonCurrent:AntiQuark 5 -3 newdef Tau1MesonCurrent:Quark 6 1 newdef Tau1MesonCurrent:AntiQuark 6 -1 newdef Tau1MesonCurrent:Quark 7 2 newdef Tau1MesonCurrent:AntiQuark 7 -2 newdef Tau1MesonCurrent:Quark 8 3 newdef Tau1MesonCurrent:AntiQuark 8 -3 newdef Tau1MesonCurrent:Quark 9 1 newdef Tau1MesonCurrent:AntiQuark 9 -3 newdef Tau1MesonCurrent:Quark 10 2 newdef Tau1MesonCurrent:AntiQuark 10 -3 newdef Tau1MesonCurrent:Quark 11 4 newdef Tau1MesonCurrent:AntiQuark 11 -1 newdef Tau1MesonCurrent:Quark 12 4 newdef Tau1MesonCurrent:AntiQuark 12 -2 newdef Tau1MesonCurrent:Quark 13 4 newdef Tau1MesonCurrent:AntiQuark 13 -3 newdef Tau1MesonCurrent:Quark 14 4 newdef Tau1MesonCurrent:AntiQuark 14 -3 newdef Tau1Meson:WeakCurrent Tau1MesonCurrent # create Herwig::TauDecayer Tau2Meson newdef Tau2Meson:Iteration 10 newdef Tau2Meson:Ntry 500 newdef Tau2Meson:Points 10000 newdef Tau2Meson:GenerateIntermediates 1 insert Tau2Meson:WeightLocation 0 0 insert Tau2Meson:WeightLocation 1 3 insert Tau2Meson:WeightLocation 2 6 insert Tau2Meson:WeightLocation 3 9 insert Tau2Meson:WeightLocation 4 12 insert Tau2Meson:MaximumWeight 0 1.64338 insert Tau2Meson:MaximumWeight 1 0.021307 insert Tau2Meson:MaximumWeight 2 0.040893 insert Tau2Meson:MaximumWeight 3 0.00863434 insert Tau2Meson:MaximumWeight 4 0.00107674 insert Tau2Meson:Weights 0 0.812615 insert Tau2Meson:Weights 1 0.146317 insert Tau2Meson:Weights 2 0.0410682 insert Tau2Meson:Weights 3 0.842908 insert Tau2Meson:Weights 4 0.0652633 insert Tau2Meson:Weights 5 0.0918287 insert Tau2Meson:Weights 6 0.84012 insert Tau2Meson:Weights 7 0.0665051 insert Tau2Meson:Weights 8 0.0933754 insert Tau2Meson:Weights 9 0.51195 insert Tau2Meson:Weights 10 0.396123 insert Tau2Meson:Weights 11 0.0919263 insert Tau2Meson:Weights 12 0.549109 insert Tau2Meson:Weights 13 0.196521 insert Tau2Meson:Weights 14 0.254371 create Herwig::TwoMesonRhoKStarCurrent Tau2MesonCurrent HwWeakCurrents.so newdef Tau2MesonCurrent:RhoMasses 0 774.6 newdef Tau2MesonCurrent:RhoMasses 1 1408 newdef Tau2MesonCurrent:RhoMasses 2 1700 newdef Tau2MesonCurrent:RhoWidths 0 149 newdef Tau2MesonCurrent:RhoWidths 1 502 newdef Tau2MesonCurrent:RhoWidths 2 235 newdef Tau2MesonCurrent:KstarMasses 0 892.1 newdef Tau2MesonCurrent:KstarMasses 1 1700 insert Tau2MesonCurrent:KstarMasses 2 1717 newdef Tau2MesonCurrent:KstarWidths 0 51.3 newdef Tau2MesonCurrent:KstarWidths 1 235 insert Tau2MesonCurrent:KstarWidths 2 322 newdef Tau2MesonCurrent:RhoParameters 1 newdef Tau2MesonCurrent:KstarParameters 1 newdef Tau2MesonCurrent:PiMagnitude 0 1 newdef Tau2MesonCurrent:PiPhase 0 0 newdef Tau2MesonCurrent:PiMagnitude 1 0.167 newdef Tau2MesonCurrent:PiPhase 1 180 newdef Tau2MesonCurrent:PiMagnitude 2 0.05 newdef Tau2MesonCurrent:PiPhase 2 0 newdef Tau2MesonCurrent:KMagnitude 0 1 newdef Tau2MesonCurrent:KPhase 0 0 newdef Tau2MesonCurrent:KMagnitude 1 0.038 newdef Tau2MesonCurrent:KPhase 1 180 newdef Tau2MesonCurrent:KMagnitude 2 0 newdef Tau2MesonCurrent:KPhase 2 0 newdef Tau2MesonCurrent:PiModel 0 newdef Tau2MesonCurrent:KModel 0 newdef Tau2MesonCurrent:Quark 0 2 newdef Tau2MesonCurrent:AntiQuark 0 -1 newdef Tau2MesonCurrent:Quark 1 2 newdef Tau2MesonCurrent:AntiQuark 1 -3 newdef Tau2MesonCurrent:Quark 2 2 newdef Tau2MesonCurrent:AntiQuark 2 -3 newdef Tau2MesonCurrent:Quark 3 2 newdef Tau2MesonCurrent:AntiQuark 3 -1 newdef Tau2MesonCurrent:Quark 4 2 newdef Tau2MesonCurrent:AntiQuark 4 -3 newdef Tau2Meson:WeakCurrent Tau2MesonCurrent # create Herwig::Hw64Decayer DecayME0 newdef DecayME0:MECode 0 # create Herwig::Hw64Decayer DecayME100 newdef DecayME100:MECode 100 # create Herwig::Hw64Decayer DecayME101 newdef DecayME101:MECode 101 # create Herwig::a1ThreePionDecayer a13Pi newdef a13Pi:Iteration 5 newdef a13Pi:Ntry 500 newdef a13Pi:Points 10000 newdef a13Pi:GenerateIntermediates 1 newdef a13Pi:LocalParameters 1 newdef a13Pi:Coupling 90.44 newdef a13Pi:Lambda2 1.2 newdef a13Pi:a1mass2 1.5129 newdef a13Pi:SigmaMass 0.8 newdef a13Pi:SigmaWidth 0.8 newdef a13Pi:SigmaMagnitude 1.39987 newdef a13Pi:SigmaPhase 0.43585 newdef a13Pi:RhoMagnitude 0 1 newdef a13Pi:RhoPhase 0 0 newdef a13Pi:RhoMasses 0 0.7761 newdef a13Pi:RhoWidths 0 0.1445 newdef a13Pi:AllNeutralWeights 0 0.339108 newdef a13Pi:AllNeutralWeights 1 0.335601 newdef a13Pi:AllNeutralWeights 2 0.325291 newdef a13Pi:OneChargedWeights 0 0.19616 newdef a13Pi:OneChargedWeights 1 0.191408 newdef a13Pi:OneChargedWeights 2 0.12137 newdef a13Pi:OneChargedWeights 3 0.115498 newdef a13Pi:OneChargedWeights 4 0.12729 newdef a13Pi:OneChargedWeights 5 0.127183 newdef a13Pi:OneChargedWeights 6 0.12109 newdef a13Pi:TwoChargedWeights 0 0.188163 newdef a13Pi:TwoChargedWeights 1 0.192479 newdef a13Pi:TwoChargedWeights 2 0.121658 newdef a13Pi:TwoChargedWeights 3 0.12135 newdef a13Pi:TwoChargedWeights 4 0.127298 newdef a13Pi:TwoChargedWeights 5 0.124835 newdef a13Pi:TwoChargedWeights 6 0.124217 newdef a13Pi:ThreeChargedWeights 0 0.153071 newdef a13Pi:ThreeChargedWeights 1 0.165741 newdef a13Pi:ThreeChargedWeights 2 0.107509 newdef a13Pi:ThreeChargedWeights 3 0.10275 newdef a13Pi:ThreeChargedWeights 4 0.109738 newdef a13Pi:ThreeChargedWeights 5 0.11254 newdef a13Pi:ThreeChargedWeights 6 0.125344 newdef a13Pi:ThreeChargedWeights 7 0.123307 newdef a13Pi:ZeroMax 19.144 newdef a13Pi:OneMax 7.83592 newdef a13Pi:TwoMax 6.64804 newdef a13Pi:ThreeMax 6.66296 # create Herwig::TauDecayer Tau4Pion newdef Tau4Pion:Iteration 10 newdef Tau4Pion:Ntry 2000 newdef Tau4Pion:Points 10000 newdef Tau4Pion:GenerateIntermediates 1 insert Tau4Pion:WeightLocation 0 0 insert Tau4Pion:WeightLocation 1 12 insert Tau4Pion:MaximumWeight 0 0.24 insert Tau4Pion:MaximumWeight 1 2.41 insert Tau4Pion:Weights 0 0.1058 insert Tau4Pion:Weights 1 0.1058 insert Tau4Pion:Weights 2 0.1058 insert Tau4Pion:Weights 3 0.1058 insert Tau4Pion:Weights 4 0.1058 insert Tau4Pion:Weights 5 0.1058 insert Tau4Pion:Weights 6 0.0668 insert Tau4Pion:Weights 7 0.0668 insert Tau4Pion:Weights 8 0.0668 insert Tau4Pion:Weights 9 0.054903 insert Tau4Pion:Weights 10 0.054903 insert Tau4Pion:Weights 11 0.054904 insert Tau4Pion:Weights 12 0.0659 insert Tau4Pion:Weights 13 0.0659 insert Tau4Pion:Weights 14 0.0659 insert Tau4Pion:Weights 15 0.0659 insert Tau4Pion:Weights 16 0.0659 insert Tau4Pion:Weights 17 0.0659 insert Tau4Pion:Weights 18 0.0558 insert Tau4Pion:Weights 19 0.0558 insert Tau4Pion:Weights 20 0.06175 insert Tau4Pion:Weights 21 0.06175 insert Tau4Pion:Weights 22 0.0781 insert Tau4Pion:Weights 23 0.0781 insert Tau4Pion:Weights 24 0.0550 insert Tau4Pion:Weights 25 0.0550 insert Tau4Pion:Weights 26 0.0517 insert Tau4Pion:Weights 27 0.0517 create Herwig::FourPionNovosibirskCurrent Tau4PionCurrent HwWeakCurrents.so newdef Tau4PionCurrent:rhoMass 0.7761 newdef Tau4PionCurrent:a1Mass 1.23 newdef Tau4PionCurrent:sigmaMass 0.8 newdef Tau4PionCurrent:omegaMass 0.782 newdef Tau4PionCurrent:rhoWidth 0.1445 newdef Tau4PionCurrent:a1Width 0.45 newdef Tau4PionCurrent:sigmaWidth 0.8 newdef Tau4PionCurrent:omegaWidth 0.00841 newdef Tau4PionCurrent:IntegrationMass 1.4 newdef Tau4PionCurrent:IntegrationWidth 0.5 newdef Tau4PionCurrent:SigmaMagnitude 1.39987 newdef Tau4PionCurrent:SigmaPhase 0.43585 newdef Tau4PionCurrent:Lambda2 1.2 newdef Tau4PionCurrent:LocalParameters 1 newdef Tau4PionCurrent:Initializea1 0 newdef Tau4PionCurrent:a1RunningWidth 0 0 newdef Tau4PionCurrent:a1RunningWidth 1 0 newdef Tau4PionCurrent:a1RunningWidth 2 0 newdef Tau4PionCurrent:a1RunningWidth 3 0 newdef Tau4PionCurrent:a1RunningWidth 4 0 newdef Tau4PionCurrent:a1RunningWidth 5 0 newdef Tau4PionCurrent:a1RunningWidth 6 0 newdef Tau4PionCurrent:a1RunningWidth 7 0 newdef Tau4PionCurrent:a1RunningWidth 8 0 newdef Tau4PionCurrent:a1RunningWidth 9 0 newdef Tau4PionCurrent:a1RunningWidth 10 0 newdef Tau4PionCurrent:a1RunningWidth 11 1.2668e-09 newdef Tau4PionCurrent:a1RunningWidth 12 7.25154e-07 newdef Tau4PionCurrent:a1RunningWidth 13 5.44727e-06 newdef Tau4PionCurrent:a1RunningWidth 14 1.8636e-05 newdef Tau4PionCurrent:a1RunningWidth 15 4.51749e-05 newdef Tau4PionCurrent:a1RunningWidth 16 9.01909e-05 newdef Tau4PionCurrent:a1RunningWidth 17 0.000159011 newdef Tau4PionCurrent:a1RunningWidth 18 0.00025717 newdef Tau4PionCurrent:a1RunningWidth 19 0.000390448 newdef Tau4PionCurrent:a1RunningWidth 20 0.000564921 newdef Tau4PionCurrent:a1RunningWidth 21 0.000787028 newdef Tau4PionCurrent:a1RunningWidth 22 0.00106365 newdef Tau4PionCurrent:a1RunningWidth 23 0.00140218 newdef Tau4PionCurrent:a1RunningWidth 24 0.00181066 newdef Tau4PionCurrent:a1RunningWidth 25 0.00229787 newdef Tau4PionCurrent:a1RunningWidth 26 0.00287348 newdef Tau4PionCurrent:a1RunningWidth 27 0.00354818 newdef Tau4PionCurrent:a1RunningWidth 28 0.00433394 newdef Tau4PionCurrent:a1RunningWidth 29 0.00524412 newdef Tau4PionCurrent:a1RunningWidth 30 0.00629386 newdef Tau4PionCurrent:a1RunningWidth 31 0.00750026 newdef Tau4PionCurrent:a1RunningWidth 32 0.00888287 newdef Tau4PionCurrent:a1RunningWidth 33 0.0104641 newdef Tau4PionCurrent:a1RunningWidth 34 0.0122697 newdef Tau4PionCurrent:a1RunningWidth 35 0.0143294 newdef Tau4PionCurrent:a1RunningWidth 36 0.016678 newdef Tau4PionCurrent:a1RunningWidth 37 0.0193556 newdef Tau4PionCurrent:a1RunningWidth 38 0.0224095 newdef Tau4PionCurrent:a1RunningWidth 39 0.025895 newdef Tau4PionCurrent:a1RunningWidth 40 0.0298766 newdef Tau4PionCurrent:a1RunningWidth 41 0.0344302 newdef Tau4PionCurrent:a1RunningWidth 42 0.0396437 newdef Tau4PionCurrent:a1RunningWidth 43 0.0456187 newdef Tau4PionCurrent:a1RunningWidth 44 0.0524703 newdef Tau4PionCurrent:a1RunningWidth 45 0.0603249 newdef Tau4PionCurrent:a1RunningWidth 46 0.0693166 newdef Tau4PionCurrent:a1RunningWidth 47 0.0795701 newdef Tau4PionCurrent:a1RunningWidth 48 0.0911959 newdef Tau4PionCurrent:a1RunningWidth 49 0.104253 newdef Tau4PionCurrent:a1RunningWidth 50 0.118728 newdef Tau4PionCurrent:a1RunningWidth 51 0.134509 newdef Tau4PionCurrent:a1RunningWidth 52 0.151382 newdef Tau4PionCurrent:a1RunningWidth 53 0.169043 newdef Tau4PionCurrent:a1RunningWidth 54 0.187144 newdef Tau4PionCurrent:a1RunningWidth 55 0.205332 newdef Tau4PionCurrent:a1RunningWidth 56 0.223296 newdef Tau4PionCurrent:a1RunningWidth 57 0.240783 newdef Tau4PionCurrent:a1RunningWidth 58 0.257608 newdef Tau4PionCurrent:a1RunningWidth 59 0.273644 newdef Tau4PionCurrent:a1RunningWidth 60 0.288817 newdef Tau4PionCurrent:a1RunningWidth 61 0.303092 newdef Tau4PionCurrent:a1RunningWidth 62 0.316463 newdef Tau4PionCurrent:a1RunningWidth 63 0.328939 newdef Tau4PionCurrent:a1RunningWidth 64 0.340546 newdef Tau4PionCurrent:a1RunningWidth 65 0.351317 newdef Tau4PionCurrent:a1RunningWidth 66 0.36129 newdef Tau4PionCurrent:a1RunningWidth 67 0.370505 newdef Tau4PionCurrent:a1RunningWidth 68 0.379004 newdef Tau4PionCurrent:a1RunningWidth 69 0.386827 newdef Tau4PionCurrent:a1RunningWidth 70 0.394014 newdef Tau4PionCurrent:a1RunningWidth 71 0.400604 newdef Tau4PionCurrent:a1RunningWidth 72 0.406634 newdef Tau4PionCurrent:a1RunningWidth 73 0.412139 newdef Tau4PionCurrent:a1RunningWidth 74 0.417151 newdef Tau4PionCurrent:a1RunningWidth 75 0.421702 newdef Tau4PionCurrent:a1RunningWidth 76 0.425822 newdef Tau4PionCurrent:a1RunningWidth 77 0.429538 newdef Tau4PionCurrent:a1RunningWidth 78 0.432877 newdef Tau4PionCurrent:a1RunningWidth 79 0.435862 newdef Tau4PionCurrent:a1RunningWidth 80 0.438551 newdef Tau4PionCurrent:a1RunningWidth 81 0.440898 newdef Tau4PionCurrent:a1RunningWidth 82 0.442955 newdef Tau4PionCurrent:a1RunningWidth 83 0.44475 newdef Tau4PionCurrent:a1RunningWidth 84 0.446231 newdef Tau4PionCurrent:a1RunningWidth 85 0.447525 newdef Tau4PionCurrent:a1RunningWidth 86 0.448599 newdef Tau4PionCurrent:a1RunningWidth 87 0.449464 newdef Tau4PionCurrent:a1RunningWidth 88 0.450137 newdef Tau4PionCurrent:a1RunningWidth 89 0.450632 newdef Tau4PionCurrent:a1RunningWidth 90 0.450953 newdef Tau4PionCurrent:a1RunningWidth 91 0.451115 newdef Tau4PionCurrent:a1RunningWidth 92 0.451131 newdef Tau4PionCurrent:a1RunningWidth 93 0.45101 newdef Tau4PionCurrent:a1RunningWidth 94 0.450759 newdef Tau4PionCurrent:a1RunningWidth 95 0.450388 newdef Tau4PionCurrent:a1RunningWidth 96 0.449905 newdef Tau4PionCurrent:a1RunningWidth 97 0.449318 newdef Tau4PionCurrent:a1RunningWidth 98 0.448719 newdef Tau4PionCurrent:a1RunningWidth 99 0.447944 newdef Tau4PionCurrent:a1RunningWidth 100 0.446996 newdef Tau4PionCurrent:a1RunningWidth 101 0.446057 newdef Tau4PionCurrent:a1RunningWidth 102 0.445045 newdef Tau4PionCurrent:a1RunningWidth 103 0.443964 newdef Tau4PionCurrent:a1RunningWidth 104 0.442821 newdef Tau4PionCurrent:a1RunningWidth 105 0.441618 newdef Tau4PionCurrent:a1RunningWidth 106 0.440362 newdef Tau4PionCurrent:a1RunningWidth 107 0.439058 newdef Tau4PionCurrent:a1RunningWidth 108 0.437707 newdef Tau4PionCurrent:a1RunningWidth 109 0.436533 newdef Tau4PionCurrent:a1RunningWidth 110 0.434872 newdef Tau4PionCurrent:a1RunningWidth 111 0.4334 newdef Tau4PionCurrent:a1RunningWidth 112 0.431896 newdef Tau4PionCurrent:a1RunningWidth 113 0.430362 newdef Tau4PionCurrent:a1RunningWidth 114 0.428803 newdef Tau4PionCurrent:a1RunningWidth 115 0.427213 newdef Tau4PionCurrent:a1RunningWidth 116 0.425602 newdef Tau4PionCurrent:a1RunningWidth 117 0.42397 newdef Tau4PionCurrent:a1RunningWidth 118 0.422326 newdef Tau4PionCurrent:a1RunningWidth 119 0.420655 newdef Tau4PionCurrent:a1RunningWidth 120 0.418972 newdef Tau4PionCurrent:a1RunningWidth 121 0.41728 newdef Tau4PionCurrent:a1RunningWidth 122 0.415571 newdef Tau4PionCurrent:a1RunningWidth 123 0.413857 newdef Tau4PionCurrent:a1RunningWidth 124 0.412098 newdef Tau4PionCurrent:a1RunningWidth 125 0.4104 newdef Tau4PionCurrent:a1RunningWidth 126 0.408663 newdef Tau4PionCurrent:a1RunningWidth 127 0.406921 newdef Tau4PionCurrent:a1RunningWidth 128 0.405176 newdef Tau4PionCurrent:a1RunningWidth 129 0.403429 newdef Tau4PionCurrent:a1RunningWidth 130 0.40168 newdef Tau4PionCurrent:a1RunningWidth 131 0.399931 newdef Tau4PionCurrent:a1RunningWidth 132 0.398181 newdef Tau4PionCurrent:a1RunningWidth 133 0.396433 newdef Tau4PionCurrent:a1RunningWidth 134 0.394687 newdef Tau4PionCurrent:a1RunningWidth 135 0.392944 newdef Tau4PionCurrent:a1RunningWidth 136 0.391209 newdef Tau4PionCurrent:a1RunningWidth 137 0.389472 newdef Tau4PionCurrent:a1RunningWidth 138 0.38774 newdef Tau4PionCurrent:a1RunningWidth 139 0.386011 newdef Tau4PionCurrent:a1RunningWidth 140 0.38429 newdef Tau4PionCurrent:a1RunningWidth 141 0.382576 newdef Tau4PionCurrent:a1RunningWidth 142 0.380868 newdef Tau4PionCurrent:a1RunningWidth 143 0.379168 newdef Tau4PionCurrent:a1RunningWidth 144 0.377475 newdef Tau4PionCurrent:a1RunningWidth 145 0.37579 newdef Tau4PionCurrent:a1RunningWidth 146 0.374113 newdef Tau4PionCurrent:a1RunningWidth 147 0.372446 newdef Tau4PionCurrent:a1RunningWidth 148 0.370786 newdef Tau4PionCurrent:a1RunningWidth 149 0.369135 newdef Tau4PionCurrent:a1RunningWidth 150 0.367492 newdef Tau4PionCurrent:a1RunningWidth 151 0.365861 newdef Tau4PionCurrent:a1RunningWidth 152 0.364237 newdef Tau4PionCurrent:a1RunningWidth 153 0.362623 newdef Tau4PionCurrent:a1RunningWidth 154 0.361021 newdef Tau4PionCurrent:a1RunningWidth 155 0.359431 newdef Tau4PionCurrent:a1RunningWidth 156 0.357847 newdef Tau4PionCurrent:a1RunningWidth 157 0.356276 newdef Tau4PionCurrent:a1RunningWidth 158 0.354717 newdef Tau4PionCurrent:a1RunningWidth 159 0.353165 newdef Tau4PionCurrent:a1RunningWidth 160 0.351626 newdef Tau4PionCurrent:a1RunningWidth 161 0.350098 newdef Tau4PionCurrent:a1RunningWidth 162 0.348581 newdef Tau4PionCurrent:a1RunningWidth 163 0.347074 newdef Tau4PionCurrent:a1RunningWidth 164 0.345601 newdef Tau4PionCurrent:a1RunningWidth 165 0.344092 newdef Tau4PionCurrent:a1RunningWidth 166 0.342625 newdef Tau4PionCurrent:a1RunningWidth 167 0.341161 newdef Tau4PionCurrent:a1RunningWidth 168 0.339711 newdef Tau4PionCurrent:a1RunningWidth 169 0.338272 newdef Tau4PionCurrent:a1RunningWidth 170 0.336663 newdef Tau4PionCurrent:a1RunningWidth 171 0.335428 newdef Tau4PionCurrent:a1RunningWidth 172 0.334023 newdef Tau4PionCurrent:a1RunningWidth 173 0.332629 newdef Tau4PionCurrent:a1RunningWidth 174 0.331247 newdef Tau4PionCurrent:a1RunningWidth 175 0.329873 newdef Tau4PionCurrent:a1RunningWidth 176 0.328516 newdef Tau4PionCurrent:a1RunningWidth 177 0.327166 newdef Tau4PionCurrent:a1RunningWidth 178 0.325828 newdef Tau4PionCurrent:a1RunningWidth 179 0.324499 newdef Tau4PionCurrent:a1RunningWidth 180 0.323183 newdef Tau4PionCurrent:a1RunningWidth 181 0.321879 newdef Tau4PionCurrent:a1RunningWidth 182 0.320585 newdef Tau4PionCurrent:a1RunningWidth 183 0.319302 newdef Tau4PionCurrent:a1RunningWidth 184 0.318029 newdef Tau4PionCurrent:a1RunningWidth 185 0.316768 newdef Tau4PionCurrent:a1RunningWidth 186 0.31552 newdef Tau4PionCurrent:a1RunningWidth 187 0.314277 newdef Tau4PionCurrent:a1RunningWidth 188 0.313048 newdef Tau4PionCurrent:a1RunningWidth 189 0.311828 newdef Tau4PionCurrent:a1RunningWidth 190 0.31062 newdef Tau4PionCurrent:a1RunningWidth 191 0.309424 newdef Tau4PionCurrent:a1RunningWidth 192 0.308226 newdef Tau4PionCurrent:a1RunningWidth 193 0.30706 newdef Tau4PionCurrent:a1RunningWidth 194 0.305893 newdef Tau4PionCurrent:a1RunningWidth 195 0.304738 newdef Tau4PionCurrent:a1RunningWidth 196 0.303589 newdef Tau4PionCurrent:a1RunningWidth 197 0.302453 newdef Tau4PionCurrent:a1RunningWidth 198 0.301326 newdef Tau4PionCurrent:a1RunningWidth 199 0.300207 insert Tau4PionCurrent:a1RunningWidth 200 0.299101 newdef Tau4PionCurrent:a1RunningQ2 0 0 newdef Tau4PionCurrent:a1RunningQ2 1 0.0157885 newdef Tau4PionCurrent:a1RunningQ2 2 0.0315769 newdef Tau4PionCurrent:a1RunningQ2 3 0.0473654 newdef Tau4PionCurrent:a1RunningQ2 4 0.0631539 newdef Tau4PionCurrent:a1RunningQ2 5 0.0789423 newdef Tau4PionCurrent:a1RunningQ2 6 0.0947308 newdef Tau4PionCurrent:a1RunningQ2 7 0.110519 newdef Tau4PionCurrent:a1RunningQ2 8 0.126308 newdef Tau4PionCurrent:a1RunningQ2 9 0.142096 newdef Tau4PionCurrent:a1RunningQ2 10 0.157885 newdef Tau4PionCurrent:a1RunningQ2 11 0.173673 newdef Tau4PionCurrent:a1RunningQ2 12 0.189462 newdef Tau4PionCurrent:a1RunningQ2 13 0.20525 newdef Tau4PionCurrent:a1RunningQ2 14 0.221039 newdef Tau4PionCurrent:a1RunningQ2 15 0.236827 newdef Tau4PionCurrent:a1RunningQ2 16 0.252615 newdef Tau4PionCurrent:a1RunningQ2 17 0.268404 newdef Tau4PionCurrent:a1RunningQ2 18 0.284192 newdef Tau4PionCurrent:a1RunningQ2 19 0.299981 newdef Tau4PionCurrent:a1RunningQ2 20 0.315769 newdef Tau4PionCurrent:a1RunningQ2 21 0.331558 newdef Tau4PionCurrent:a1RunningQ2 22 0.347346 newdef Tau4PionCurrent:a1RunningQ2 23 0.363135 newdef Tau4PionCurrent:a1RunningQ2 24 0.378923 newdef Tau4PionCurrent:a1RunningQ2 25 0.394712 newdef Tau4PionCurrent:a1RunningQ2 26 0.4105 newdef Tau4PionCurrent:a1RunningQ2 27 0.426289 newdef Tau4PionCurrent:a1RunningQ2 28 0.442077 newdef Tau4PionCurrent:a1RunningQ2 29 0.457866 newdef Tau4PionCurrent:a1RunningQ2 30 0.473654 newdef Tau4PionCurrent:a1RunningQ2 31 0.489442 newdef Tau4PionCurrent:a1RunningQ2 32 0.505231 newdef Tau4PionCurrent:a1RunningQ2 33 0.521019 newdef Tau4PionCurrent:a1RunningQ2 34 0.536808 newdef Tau4PionCurrent:a1RunningQ2 35 0.552596 newdef Tau4PionCurrent:a1RunningQ2 36 0.568385 newdef Tau4PionCurrent:a1RunningQ2 37 0.584173 newdef Tau4PionCurrent:a1RunningQ2 38 0.599962 newdef Tau4PionCurrent:a1RunningQ2 39 0.61575 newdef Tau4PionCurrent:a1RunningQ2 40 0.631539 newdef Tau4PionCurrent:a1RunningQ2 41 0.647327 newdef Tau4PionCurrent:a1RunningQ2 42 0.663116 newdef Tau4PionCurrent:a1RunningQ2 43 0.678904 newdef Tau4PionCurrent:a1RunningQ2 44 0.694693 newdef Tau4PionCurrent:a1RunningQ2 45 0.710481 newdef Tau4PionCurrent:a1RunningQ2 46 0.726269 newdef Tau4PionCurrent:a1RunningQ2 47 0.742058 newdef Tau4PionCurrent:a1RunningQ2 48 0.757846 newdef Tau4PionCurrent:a1RunningQ2 49 0.773635 newdef Tau4PionCurrent:a1RunningQ2 50 0.789423 newdef Tau4PionCurrent:a1RunningQ2 51 0.805212 newdef Tau4PionCurrent:a1RunningQ2 52 0.821 newdef Tau4PionCurrent:a1RunningQ2 53 0.836789 newdef Tau4PionCurrent:a1RunningQ2 54 0.852577 newdef Tau4PionCurrent:a1RunningQ2 55 0.868366 newdef Tau4PionCurrent:a1RunningQ2 56 0.884154 newdef Tau4PionCurrent:a1RunningQ2 57 0.899943 newdef Tau4PionCurrent:a1RunningQ2 58 0.915731 newdef Tau4PionCurrent:a1RunningQ2 59 0.93152 newdef Tau4PionCurrent:a1RunningQ2 60 0.947308 newdef Tau4PionCurrent:a1RunningQ2 61 0.963097 newdef Tau4PionCurrent:a1RunningQ2 62 0.978885 newdef Tau4PionCurrent:a1RunningQ2 63 0.994673 newdef Tau4PionCurrent:a1RunningQ2 64 1.01046 newdef Tau4PionCurrent:a1RunningQ2 65 1.02625 newdef Tau4PionCurrent:a1RunningQ2 66 1.04204 newdef Tau4PionCurrent:a1RunningQ2 67 1.05783 newdef Tau4PionCurrent:a1RunningQ2 68 1.07362 newdef Tau4PionCurrent:a1RunningQ2 69 1.0894 newdef Tau4PionCurrent:a1RunningQ2 70 1.10519 newdef Tau4PionCurrent:a1RunningQ2 71 1.12098 newdef Tau4PionCurrent:a1RunningQ2 72 1.13677 newdef Tau4PionCurrent:a1RunningQ2 73 1.15256 newdef Tau4PionCurrent:a1RunningQ2 74 1.16835 newdef Tau4PionCurrent:a1RunningQ2 75 1.18414 newdef Tau4PionCurrent:a1RunningQ2 76 1.19992 newdef Tau4PionCurrent:a1RunningQ2 77 1.21571 newdef Tau4PionCurrent:a1RunningQ2 78 1.2315 newdef Tau4PionCurrent:a1RunningQ2 79 1.24729 newdef Tau4PionCurrent:a1RunningQ2 80 1.26308 newdef Tau4PionCurrent:a1RunningQ2 81 1.27887 newdef Tau4PionCurrent:a1RunningQ2 82 1.29465 newdef Tau4PionCurrent:a1RunningQ2 83 1.31044 newdef Tau4PionCurrent:a1RunningQ2 84 1.32623 newdef Tau4PionCurrent:a1RunningQ2 85 1.34202 newdef Tau4PionCurrent:a1RunningQ2 86 1.35781 newdef Tau4PionCurrent:a1RunningQ2 87 1.3736 newdef Tau4PionCurrent:a1RunningQ2 88 1.38939 newdef Tau4PionCurrent:a1RunningQ2 89 1.40517 newdef Tau4PionCurrent:a1RunningQ2 90 1.42096 newdef Tau4PionCurrent:a1RunningQ2 91 1.43675 newdef Tau4PionCurrent:a1RunningQ2 92 1.45254 newdef Tau4PionCurrent:a1RunningQ2 93 1.46833 newdef Tau4PionCurrent:a1RunningQ2 94 1.48412 newdef Tau4PionCurrent:a1RunningQ2 95 1.4999 newdef Tau4PionCurrent:a1RunningQ2 96 1.51569 newdef Tau4PionCurrent:a1RunningQ2 97 1.53148 newdef Tau4PionCurrent:a1RunningQ2 98 1.54727 newdef Tau4PionCurrent:a1RunningQ2 99 1.56306 newdef Tau4PionCurrent:a1RunningQ2 100 1.57885 newdef Tau4PionCurrent:a1RunningQ2 101 1.59464 newdef Tau4PionCurrent:a1RunningQ2 102 1.61042 newdef Tau4PionCurrent:a1RunningQ2 103 1.62621 newdef Tau4PionCurrent:a1RunningQ2 104 1.642 newdef Tau4PionCurrent:a1RunningQ2 105 1.65779 newdef Tau4PionCurrent:a1RunningQ2 106 1.67358 newdef Tau4PionCurrent:a1RunningQ2 107 1.68937 newdef Tau4PionCurrent:a1RunningQ2 108 1.70515 newdef Tau4PionCurrent:a1RunningQ2 109 1.72094 newdef Tau4PionCurrent:a1RunningQ2 110 1.73673 newdef Tau4PionCurrent:a1RunningQ2 111 1.75252 newdef Tau4PionCurrent:a1RunningQ2 112 1.76831 newdef Tau4PionCurrent:a1RunningQ2 113 1.7841 newdef Tau4PionCurrent:a1RunningQ2 114 1.79989 newdef Tau4PionCurrent:a1RunningQ2 115 1.81567 newdef Tau4PionCurrent:a1RunningQ2 116 1.83146 newdef Tau4PionCurrent:a1RunningQ2 117 1.84725 newdef Tau4PionCurrent:a1RunningQ2 118 1.86304 newdef Tau4PionCurrent:a1RunningQ2 119 1.87883 newdef Tau4PionCurrent:a1RunningQ2 120 1.89462 newdef Tau4PionCurrent:a1RunningQ2 121 1.9104 newdef Tau4PionCurrent:a1RunningQ2 122 1.92619 newdef Tau4PionCurrent:a1RunningQ2 123 1.94198 newdef Tau4PionCurrent:a1RunningQ2 124 1.95777 newdef Tau4PionCurrent:a1RunningQ2 125 1.97356 newdef Tau4PionCurrent:a1RunningQ2 126 1.98935 newdef Tau4PionCurrent:a1RunningQ2 127 2.00514 newdef Tau4PionCurrent:a1RunningQ2 128 2.02092 newdef Tau4PionCurrent:a1RunningQ2 129 2.03671 newdef Tau4PionCurrent:a1RunningQ2 130 2.0525 newdef Tau4PionCurrent:a1RunningQ2 131 2.06829 newdef Tau4PionCurrent:a1RunningQ2 132 2.08408 newdef Tau4PionCurrent:a1RunningQ2 133 2.09987 newdef Tau4PionCurrent:a1RunningQ2 134 2.11565 newdef Tau4PionCurrent:a1RunningQ2 135 2.13144 newdef Tau4PionCurrent:a1RunningQ2 136 2.14723 newdef Tau4PionCurrent:a1RunningQ2 137 2.16302 newdef Tau4PionCurrent:a1RunningQ2 138 2.17881 newdef Tau4PionCurrent:a1RunningQ2 139 2.1946 newdef Tau4PionCurrent:a1RunningQ2 140 2.21039 newdef Tau4PionCurrent:a1RunningQ2 141 2.22617 newdef Tau4PionCurrent:a1RunningQ2 142 2.24196 newdef Tau4PionCurrent:a1RunningQ2 143 2.25775 newdef Tau4PionCurrent:a1RunningQ2 144 2.27354 newdef Tau4PionCurrent:a1RunningQ2 145 2.28933 newdef Tau4PionCurrent:a1RunningQ2 146 2.30512 newdef Tau4PionCurrent:a1RunningQ2 147 2.3209 newdef Tau4PionCurrent:a1RunningQ2 148 2.33669 newdef Tau4PionCurrent:a1RunningQ2 149 2.35248 newdef Tau4PionCurrent:a1RunningQ2 150 2.36827 newdef Tau4PionCurrent:a1RunningQ2 151 2.38406 newdef Tau4PionCurrent:a1RunningQ2 152 2.39985 newdef Tau4PionCurrent:a1RunningQ2 153 2.41564 newdef Tau4PionCurrent:a1RunningQ2 154 2.43142 newdef Tau4PionCurrent:a1RunningQ2 155 2.44721 newdef Tau4PionCurrent:a1RunningQ2 156 2.463 newdef Tau4PionCurrent:a1RunningQ2 157 2.47879 newdef Tau4PionCurrent:a1RunningQ2 158 2.49458 newdef Tau4PionCurrent:a1RunningQ2 159 2.51037 newdef Tau4PionCurrent:a1RunningQ2 160 2.52615 newdef Tau4PionCurrent:a1RunningQ2 161 2.54194 newdef Tau4PionCurrent:a1RunningQ2 162 2.55773 newdef Tau4PionCurrent:a1RunningQ2 163 2.57352 newdef Tau4PionCurrent:a1RunningQ2 164 2.58931 newdef Tau4PionCurrent:a1RunningQ2 165 2.6051 newdef Tau4PionCurrent:a1RunningQ2 166 2.62089 newdef Tau4PionCurrent:a1RunningQ2 167 2.63667 newdef Tau4PionCurrent:a1RunningQ2 168 2.65246 newdef Tau4PionCurrent:a1RunningQ2 169 2.66825 newdef Tau4PionCurrent:a1RunningQ2 170 2.68404 newdef Tau4PionCurrent:a1RunningQ2 171 2.69983 newdef Tau4PionCurrent:a1RunningQ2 172 2.71562 newdef Tau4PionCurrent:a1RunningQ2 173 2.7314 newdef Tau4PionCurrent:a1RunningQ2 174 2.74719 newdef Tau4PionCurrent:a1RunningQ2 175 2.76298 newdef Tau4PionCurrent:a1RunningQ2 176 2.77877 newdef Tau4PionCurrent:a1RunningQ2 177 2.79456 newdef Tau4PionCurrent:a1RunningQ2 178 2.81035 newdef Tau4PionCurrent:a1RunningQ2 179 2.82614 newdef Tau4PionCurrent:a1RunningQ2 180 2.84192 newdef Tau4PionCurrent:a1RunningQ2 181 2.85771 newdef Tau4PionCurrent:a1RunningQ2 182 2.8735 newdef Tau4PionCurrent:a1RunningQ2 183 2.88929 newdef Tau4PionCurrent:a1RunningQ2 184 2.90508 newdef Tau4PionCurrent:a1RunningQ2 185 2.92087 newdef Tau4PionCurrent:a1RunningQ2 186 2.93665 newdef Tau4PionCurrent:a1RunningQ2 187 2.95244 newdef Tau4PionCurrent:a1RunningQ2 188 2.96823 newdef Tau4PionCurrent:a1RunningQ2 189 2.98402 newdef Tau4PionCurrent:a1RunningQ2 190 2.99981 newdef Tau4PionCurrent:a1RunningQ2 191 3.0156 newdef Tau4PionCurrent:a1RunningQ2 192 3.03139 newdef Tau4PionCurrent:a1RunningQ2 193 3.04717 newdef Tau4PionCurrent:a1RunningQ2 194 3.06296 newdef Tau4PionCurrent:a1RunningQ2 195 3.07875 newdef Tau4PionCurrent:a1RunningQ2 196 3.09454 newdef Tau4PionCurrent:a1RunningQ2 197 3.11033 newdef Tau4PionCurrent:a1RunningQ2 198 3.12612 newdef Tau4PionCurrent:a1RunningQ2 199 3.1419 insert Tau4PionCurrent:a1RunningQ2 200 3.15769 newdef Tau4PionCurrent:Quark 0 2 newdef Tau4PionCurrent:AntiQuark 0 -1 newdef Tau4PionCurrent:Quark 1 2 newdef Tau4PionCurrent:AntiQuark 1 -1 newdef Tau4Pion:WeakCurrent Tau4PionCurrent # create Herwig::TauDecayer Tau2MesonPhoton newdef Tau2MesonPhoton:Iteration 10 newdef Tau2MesonPhoton:Ntry 500 newdef Tau2MesonPhoton:Points 10000 newdef Tau2MesonPhoton:GenerateIntermediates 1 insert Tau2MesonPhoton:WeightLocation 0 0 insert Tau2MesonPhoton:MaximumWeight 0 0.0107705 insert Tau2MesonPhoton:Weights 0 1 create Herwig::TwoPionPhotonCurrent Tau2MesonPhotonCurrent HwWeakCurrents.so newdef Tau2MesonPhotonCurrent:RhoParameters 1 newdef Tau2MesonPhotonCurrent:omegaParameters 1 newdef Tau2MesonPhotonCurrent:omegamass 0.782 newdef Tau2MesonPhotonCurrent:omegawidth 0.0085 newdef Tau2MesonPhotonCurrent:grho 0.112389 newdef Tau2MesonPhotonCurrent:grhoomegapi 12.924 newdef Tau2MesonPhotonCurrent:IntegrationMass 1.2 newdef Tau2MesonPhotonCurrent:IntegrationWidth 0.35 newdef Tau2MesonPhotonCurrent:Weights 0 1 newdef Tau2MesonPhotonCurrent:Weights 1 -0.1 newdef Tau2MesonPhotonCurrent:Weights 2 0 newdef Tau2MesonPhotonCurrent:RhoMasses 0 773 newdef Tau2MesonPhotonCurrent:RhoMasses 1 1700 insert Tau2MesonPhotonCurrent:RhoMasses 2 1720 newdef Tau2MesonPhotonCurrent:RhoWidths 0 145 newdef Tau2MesonPhotonCurrent:RhoWidths 1 260 insert Tau2MesonPhotonCurrent:RhoWidths 2 250 newdef Tau2MesonPhotonCurrent:Quark 0 2 newdef Tau2MesonPhotonCurrent:AntiQuark 0 -1 newdef Tau2MesonPhoton:WeakCurrent Tau2MesonPhotonCurrent # create Herwig::VectorMesonVectorPScalarDecayer VectorVP newdef VectorVP:Iteration 1 newdef VectorVP:Ntry 1000 newdef VectorVP:Points 10000 newdef VectorVP:GenerateIntermediates 0 newdef VectorVP:Incoming 0 113 newdef VectorVP:OutgoingVector 0 22 newdef VectorVP:OutgoingPScalar 0 111 newdef VectorVP:Coupling 0 0.0002527 newdef VectorVP:MaxWeight 0 1.60721 newdef VectorVP:Incoming 1 213 newdef VectorVP:OutgoingVector 1 22 newdef VectorVP:OutgoingPScalar 1 211 newdef VectorVP:Coupling 1 0.000221 newdef VectorVP:MaxWeight 1 1.62841 newdef VectorVP:Incoming 2 113 newdef VectorVP:OutgoingVector 2 22 newdef VectorVP:OutgoingPScalar 2 221 newdef VectorVP:Coupling 2 0.000492 newdef VectorVP:MaxWeight 2 1.6601 newdef VectorVP:Incoming 3 223 newdef VectorVP:OutgoingVector 3 22 newdef VectorVP:OutgoingPScalar 3 111 newdef VectorVP:Coupling 3 0.000727947 newdef VectorVP:MaxWeight 3 1.6066 newdef VectorVP:Incoming 4 223 newdef VectorVP:OutgoingVector 4 22 newdef VectorVP:OutgoingPScalar 4 221 newdef VectorVP:Coupling 4 0.000143 newdef VectorVP:MaxWeight 4 1.61151 newdef VectorVP:Incoming 5 333 newdef VectorVP:OutgoingVector 5 22 newdef VectorVP:OutgoingPScalar 5 111 newdef VectorVP:Coupling 5 3.97e-05 newdef VectorVP:MaxWeight 5 1.57772 newdef VectorVP:Incoming 6 333 newdef VectorVP:OutgoingVector 6 22 newdef VectorVP:OutgoingPScalar 6 221 newdef VectorVP:Coupling 6 0.000212 newdef VectorVP:MaxWeight 6 1.59018 newdef VectorVP:Incoming 7 333 newdef VectorVP:OutgoingVector 7 22 newdef VectorVP:OutgoingPScalar 7 331 newdef VectorVP:Coupling 7 0.000219 newdef VectorVP:MaxWeight 7 1.75157 newdef VectorVP:Incoming 8 333 newdef VectorVP:OutgoingVector 8 223 newdef VectorVP:OutgoingPScalar 8 111 newdef VectorVP:Coupling 8 4.17e-05 newdef VectorVP:MaxWeight 8 1.82785 newdef VectorVP:Incoming 9 100333 newdef VectorVP:OutgoingVector 9 323 newdef VectorVP:OutgoingPScalar 9 -321 newdef VectorVP:Coupling 9 0.003934 newdef VectorVP:MaxWeight 9 4.69434 newdef VectorVP:Incoming 10 100333 newdef VectorVP:OutgoingVector 10 313 newdef VectorVP:OutgoingPScalar 10 -311 newdef VectorVP:Coupling 10 0.004011 newdef VectorVP:MaxWeight 10 4.43694 newdef VectorVP:Incoming 11 313 newdef VectorVP:OutgoingVector 11 22 newdef VectorVP:OutgoingPScalar 11 311 newdef VectorVP:Coupling 11 0.000384 newdef VectorVP:MaxWeight 11 1.60146 newdef VectorVP:Incoming 12 323 newdef VectorVP:OutgoingVector 12 22 newdef VectorVP:OutgoingPScalar 12 321 newdef VectorVP:Coupling 12 0.000253 newdef VectorVP:MaxWeight 12 1.59626 newdef VectorVP:Incoming 13 423 newdef VectorVP:OutgoingVector 13 22 newdef VectorVP:OutgoingPScalar 13 421 newdef VectorVP:Coupling 13 0.000616 newdef VectorVP:MaxWeight 13 1.60404 newdef VectorVP:Incoming 14 413 newdef VectorVP:OutgoingVector 14 22 newdef VectorVP:OutgoingPScalar 14 411 newdef VectorVP:Coupling 14 0.000152 newdef VectorVP:MaxWeight 14 1.5979 newdef VectorVP:Incoming 15 433 newdef VectorVP:OutgoingVector 15 22 newdef VectorVP:OutgoingPScalar 15 431 newdef VectorVP:Coupling 15 0.000764 newdef VectorVP:MaxWeight 15 1.60184 newdef VectorVP:Incoming 16 533 newdef VectorVP:OutgoingVector 16 22 newdef VectorVP:OutgoingPScalar 16 531 newdef VectorVP:Coupling 16 0.000248 newdef VectorVP:MaxWeight 16 1.59746 newdef VectorVP:Incoming 17 543 newdef VectorVP:OutgoingVector 17 22 newdef VectorVP:OutgoingPScalar 17 541 newdef VectorVP:Coupling 17 0.000266 newdef VectorVP:MaxWeight 17 1.59608 newdef VectorVP:Incoming 18 523 newdef VectorVP:OutgoingVector 18 22 newdef VectorVP:OutgoingPScalar 18 521 newdef VectorVP:Coupling 18 0.000553 newdef VectorVP:MaxWeight 18 1.59875 newdef VectorVP:Incoming 19 513 newdef VectorVP:OutgoingVector 19 22 newdef VectorVP:OutgoingPScalar 19 511 newdef VectorVP:Coupling 19 0.00031 newdef VectorVP:MaxWeight 19 1.59075 newdef VectorVP:Incoming 20 30113 newdef VectorVP:OutgoingVector 20 113 newdef VectorVP:OutgoingPScalar 20 221 newdef VectorVP:Coupling 20 0.002663 newdef VectorVP:MaxWeight 20 3.81111 newdef VectorVP:Incoming 21 30213 newdef VectorVP:OutgoingVector 21 213 newdef VectorVP:OutgoingPScalar 21 221 newdef VectorVP:Coupling 21 0.002663 newdef VectorVP:MaxWeight 21 3.83583 newdef VectorVP:Incoming 22 30113 newdef VectorVP:OutgoingVector 22 323 newdef VectorVP:OutgoingPScalar 22 -321 newdef VectorVP:Coupling 22 0.000894 newdef VectorVP:MaxWeight 22 4.7074 newdef VectorVP:Incoming 23 30113 newdef VectorVP:OutgoingVector 23 313 newdef VectorVP:OutgoingPScalar 23 -311 newdef VectorVP:Coupling 23 0.000908 newdef VectorVP:MaxWeight 23 4.7438 newdef VectorVP:Incoming 24 30213 newdef VectorVP:OutgoingVector 24 323 newdef VectorVP:OutgoingPScalar 24 -311 newdef VectorVP:Coupling 24 0.001265 newdef VectorVP:MaxWeight 24 4.62484 newdef VectorVP:Incoming 25 30213 newdef VectorVP:OutgoingVector 25 -313 newdef VectorVP:OutgoingPScalar 25 321 newdef VectorVP:Coupling 25 0.001273 newdef VectorVP:MaxWeight 25 4.88974 newdef VectorVP:Incoming 26 30223 newdef VectorVP:OutgoingVector 26 213 newdef VectorVP:OutgoingPScalar 26 -211 newdef VectorVP:Coupling 26 0.002996 newdef VectorVP:MaxWeight 26 3.32873 newdef VectorVP:Incoming 27 30223 newdef VectorVP:OutgoingVector 27 113 newdef VectorVP:OutgoingPScalar 27 111 newdef VectorVP:Coupling 27 0.002996 newdef VectorVP:MaxWeight 27 3.33537 newdef VectorVP:Incoming 28 100223 newdef VectorVP:OutgoingVector 28 213 newdef VectorVP:OutgoingPScalar 28 -211 newdef VectorVP:Coupling 28 0.004507 newdef VectorVP:MaxWeight 28 3.88723 newdef VectorVP:Incoming 29 100223 newdef VectorVP:OutgoingVector 29 113 newdef VectorVP:OutgoingPScalar 29 111 newdef VectorVP:Coupling 29 0.004507 newdef VectorVP:MaxWeight 29 3.71504 newdef VectorVP:Incoming 30 30313 newdef VectorVP:OutgoingVector 30 323 newdef VectorVP:OutgoingPScalar 30 -211 newdef VectorVP:Coupling 30 0.00336 newdef VectorVP:MaxWeight 30 3.81291 newdef VectorVP:Incoming 31 30313 newdef VectorVP:OutgoingVector 31 313 newdef VectorVP:OutgoingPScalar 31 111 newdef VectorVP:Coupling 31 0.00238 newdef VectorVP:MaxWeight 31 3.50939 newdef VectorVP:Incoming 32 30323 newdef VectorVP:OutgoingVector 32 313 newdef VectorVP:OutgoingPScalar 32 211 newdef VectorVP:Coupling 32 0.00336 newdef VectorVP:MaxWeight 32 3.33937 newdef VectorVP:Incoming 33 30323 newdef VectorVP:OutgoingVector 33 323 newdef VectorVP:OutgoingPScalar 33 111 newdef VectorVP:Coupling 33 0.00238 newdef VectorVP:MaxWeight 33 3.17369 newdef VectorVP:Incoming 34 30313 newdef VectorVP:OutgoingVector 34 -213 newdef VectorVP:OutgoingPScalar 34 321 newdef VectorVP:Coupling 34 0.004159 newdef VectorVP:MaxWeight 34 2.90637 newdef VectorVP:Incoming 35 30313 newdef VectorVP:OutgoingVector 35 113 newdef VectorVP:OutgoingPScalar 35 311 newdef VectorVP:Coupling 35 0.002939 newdef VectorVP:MaxWeight 35 2.94708 newdef VectorVP:Incoming 36 30323 newdef VectorVP:OutgoingVector 36 213 newdef VectorVP:OutgoingPScalar 36 311 newdef VectorVP:Coupling 36 0.004159 newdef VectorVP:MaxWeight 36 2.95133 newdef VectorVP:Incoming 37 30323 newdef VectorVP:OutgoingVector 37 113 newdef VectorVP:OutgoingPScalar 37 321 newdef VectorVP:Coupling 37 0.002939 newdef VectorVP:MaxWeight 37 2.9179 newdef VectorVP:Incoming 38 100313 newdef VectorVP:OutgoingVector 38 323 newdef VectorVP:OutgoingPScalar 38 -211 newdef VectorVP:Coupling 38 0.009469 newdef VectorVP:MaxWeight 38 5.36672 newdef VectorVP:Incoming 39 100313 newdef VectorVP:OutgoingVector 39 313 newdef VectorVP:OutgoingPScalar 39 111 newdef VectorVP:Coupling 39 0.006781 newdef VectorVP:MaxWeight 39 5.47961 newdef VectorVP:Incoming 40 100323 newdef VectorVP:OutgoingVector 40 313 newdef VectorVP:OutgoingPScalar 40 211 newdef VectorVP:Coupling 40 0.009469 newdef VectorVP:MaxWeight 40 5.37021 newdef VectorVP:Incoming 41 100323 newdef VectorVP:OutgoingVector 41 323 newdef VectorVP:OutgoingPScalar 41 111 newdef VectorVP:Coupling 41 0.006781 newdef VectorVP:MaxWeight 41 5.34432 newdef VectorVP:Incoming 42 443 newdef VectorVP:OutgoingVector 42 22 newdef VectorVP:OutgoingPScalar 42 441 newdef VectorVP:Coupling 42 0.000149 newdef VectorVP:MaxWeight 42 28.2694 newdef VectorVP:Incoming 43 443 newdef VectorVP:OutgoingVector 43 22 newdef VectorVP:OutgoingPScalar 43 331 newdef VectorVP:Coupling 43 2.5e-06 newdef VectorVP:MaxWeight 43 1.64689 newdef VectorVP:Incoming 44 443 newdef VectorVP:OutgoingVector 44 213 newdef VectorVP:OutgoingPScalar 44 -211 newdef VectorVP:Coupling 44 2.74e-06 newdef VectorVP:MaxWeight 44 3.14147 newdef VectorVP:Incoming 45 443 newdef VectorVP:OutgoingVector 45 113 newdef VectorVP:OutgoingPScalar 45 111 newdef VectorVP:Coupling 45 2.74e-06 newdef VectorVP:MaxWeight 45 3.15398 newdef VectorVP:Incoming 46 443 newdef VectorVP:OutgoingVector 46 323 newdef VectorVP:OutgoingPScalar 46 -321 newdef VectorVP:Coupling 46 1.8e-06 newdef VectorVP:MaxWeight 46 5.49223 newdef VectorVP:Incoming 47 443 newdef VectorVP:OutgoingVector 47 313 newdef VectorVP:OutgoingPScalar 47 -311 newdef VectorVP:Coupling 47 1.8e-06 newdef VectorVP:MaxWeight 47 5.30256 newdef VectorVP:Incoming 48 443 newdef VectorVP:OutgoingVector 48 223 newdef VectorVP:OutgoingPScalar 48 221 newdef VectorVP:Coupling 48 1.54e-06 newdef VectorVP:MaxWeight 48 5.62993 newdef VectorVP:Incoming 49 443 newdef VectorVP:OutgoingVector 49 22 newdef VectorVP:OutgoingPScalar 49 221 newdef VectorVP:Coupling 49 1.03e-06 newdef VectorVP:MaxWeight 49 1.60784 newdef VectorVP:Incoming 50 443 newdef VectorVP:OutgoingVector 50 333 newdef VectorVP:OutgoingPScalar 50 221 newdef VectorVP:Coupling 50 1.1e-06 newdef VectorVP:MaxWeight 50 5.27399 newdef VectorVP:Incoming 51 443 newdef VectorVP:OutgoingVector 51 333 newdef VectorVP:OutgoingPScalar 51 331 newdef VectorVP:Coupling 51 8.5e-07 newdef VectorVP:MaxWeight 51 5.15443 newdef VectorVP:Incoming 52 443 newdef VectorVP:OutgoingVector 52 223 newdef VectorVP:OutgoingPScalar 52 111 newdef VectorVP:Coupling 52 7.3e-07 newdef VectorVP:MaxWeight 52 5.67454 newdef VectorVP:Incoming 53 443 newdef VectorVP:OutgoingVector 53 113 newdef VectorVP:OutgoingPScalar 53 221 newdef VectorVP:Coupling 53 5.4e-07 newdef VectorVP:MaxWeight 53 2.95976 newdef VectorVP:Incoming 54 443 newdef VectorVP:OutgoingVector 54 113 newdef VectorVP:OutgoingPScalar 54 331 newdef VectorVP:Coupling 54 4.5e-07 newdef VectorVP:MaxWeight 54 2.58819 newdef VectorVP:Incoming 55 443 newdef VectorVP:OutgoingVector 55 223 newdef VectorVP:OutgoingPScalar 55 331 newdef VectorVP:Coupling 55 5.8e-07 newdef VectorVP:MaxWeight 55 5.78299 newdef VectorVP:Incoming 56 443 newdef VectorVP:OutgoingVector 56 22 newdef VectorVP:OutgoingPScalar 56 111 newdef VectorVP:Coupling 56 1.77e-07 newdef VectorVP:MaxWeight 56 1.59256 newdef VectorVP:Incoming 57 100443 newdef VectorVP:OutgoingVector 57 443 newdef VectorVP:OutgoingPScalar 57 221 newdef VectorVP:Coupling 57 0.00023 newdef VectorVP:MaxWeight 57 1.66072 newdef VectorVP:Incoming 58 100443 newdef VectorVP:OutgoingVector 58 22 newdef VectorVP:OutgoingPScalar 58 441 newdef VectorVP:Coupling 58 1.14e-05 newdef VectorVP:MaxWeight 58 3.23618 newdef VectorVP:Incoming 59 100443 newdef VectorVP:OutgoingVector 59 22 newdef VectorVP:OutgoingPScalar 59 331 newdef VectorVP:Coupling 59 6.2e-07 newdef VectorVP:MaxWeight 59 1.63014 newdef VectorVP:Incoming 60 100443 newdef VectorVP:OutgoingVector 60 443 newdef VectorVP:OutgoingPScalar 60 111 newdef VectorVP:Coupling 60 1.06e-05 newdef VectorVP:MaxWeight 60 1.6029 newdef VectorVP:Incoming 61 30443 newdef VectorVP:OutgoingVector 61 443 newdef VectorVP:OutgoingPScalar 61 221 newdef VectorVP:Coupling 61 0.000135 newdef VectorVP:MaxWeight 61 1.61494 newdef VectorVP:Incoming 62 30443 newdef VectorVP:OutgoingVector 62 333 newdef VectorVP:OutgoingPScalar 62 221 newdef VectorVP:Coupling 62 7.6e-06 newdef VectorVP:MaxWeight 62 5.31316 newdef VectorVP:Incoming 63 100443 newdef VectorVP:OutgoingVector 63 323 newdef VectorVP:OutgoingPScalar 63 -321 newdef VectorVP:Coupling 63 2.1e-07 newdef VectorVP:MaxWeight 63 6.27385 newdef VectorVP:Incoming 64 100443 newdef VectorVP:OutgoingVector 64 313 newdef VectorVP:OutgoingPScalar 64 -311 newdef VectorVP:Coupling 64 5.4e-07 newdef VectorVP:MaxWeight 64 6.24771 newdef VectorVP:Incoming 65 100443 newdef VectorVP:OutgoingVector 65 333 newdef VectorVP:OutgoingPScalar 65 221 newdef VectorVP:Coupling 65 2.9e-07 newdef VectorVP:MaxWeight 65 5.36123 newdef VectorVP:Incoming 66 100443 newdef VectorVP:OutgoingVector 66 333 newdef VectorVP:OutgoingPScalar 66 331 newdef VectorVP:Coupling 66 3.3e-07 newdef VectorVP:MaxWeight 66 5.16099 newdef VectorVP:Incoming 67 100443 newdef VectorVP:OutgoingVector 67 213 newdef VectorVP:OutgoingPScalar 67 -211 newdef VectorVP:Coupling 67 1.7e-07 newdef VectorVP:MaxWeight 67 3.45613 newdef VectorVP:Incoming 68 100443 newdef VectorVP:OutgoingVector 68 113 newdef VectorVP:OutgoingPScalar 68 111 newdef VectorVP:Coupling 68 1.7e-07 newdef VectorVP:MaxWeight 68 3.47115 newdef VectorVP:Incoming 69 100443 newdef VectorVP:OutgoingVector 69 223 newdef VectorVP:OutgoingPScalar 69 331 newdef VectorVP:Coupling 69 3.2e-07 newdef VectorVP:MaxWeight 69 5.80649 newdef VectorVP:Incoming 70 100443 newdef VectorVP:OutgoingVector 70 113 newdef VectorVP:OutgoingPScalar 70 221 newdef VectorVP:Coupling 70 2.5e-07 newdef VectorVP:MaxWeight 70 3.31378 newdef VectorVP:Incoming 71 100443 newdef VectorVP:OutgoingVector 71 223 newdef VectorVP:OutgoingPScalar 71 111 newdef VectorVP:Coupling 71 2.2e-07 newdef VectorVP:MaxWeight 71 5.54156 newdef VectorVP:Incoming 72 100443 newdef VectorVP:OutgoingVector 72 113 newdef VectorVP:OutgoingPScalar 72 331 newdef VectorVP:Coupling 72 2.6e-07 newdef VectorVP:MaxWeight 72 3.3628 # create Herwig::TauDecayer Tau2Leptons newdef Tau2Leptons:Iteration 1 newdef Tau2Leptons:Ntry 500 newdef Tau2Leptons:Points 10000 newdef Tau2Leptons:GenerateIntermediates 0 insert Tau2Leptons:WeightLocation 0 0 insert Tau2Leptons:WeightLocation 1 1 insert Tau2Leptons:MaximumWeight 0 1.4 insert Tau2Leptons:MaximumWeight 1 1.35 insert Tau2Leptons:Weights 0 1 insert Tau2Leptons:Weights 1 1 create Herwig::LeptonNeutrinoCurrent Tau2LeptonCurrent HwWeakCurrents.so newdef Tau2LeptonCurrent:Quark 0 11 newdef Tau2LeptonCurrent:AntiQuark 0 -12 newdef Tau2LeptonCurrent:Quark 1 13 newdef Tau2LeptonCurrent:AntiQuark 1 -15 newdef Tau2LeptonCurrent:Quark 2 15 newdef Tau2LeptonCurrent:AntiQuark 2 -16 newdef Tau2Leptons:WeakCurrent Tau2LeptonCurrent # create Herwig::VectorMeson2MesonDecayer Vector2Meson newdef Vector2Meson:Iteration 1 newdef Vector2Meson:Ntry 500 newdef Vector2Meson:Points 10000 newdef Vector2Meson:GenerateIntermediates 0 newdef Vector2Meson:Incoming 0 113 newdef Vector2Meson:FirstOutgoing 0 211 newdef Vector2Meson:SecondOutgoing 0 -211 newdef Vector2Meson:Coupling 0 6 newdef Vector2Meson:MaxWeight 0 3.2 newdef Vector2Meson:Incoming 1 213 newdef Vector2Meson:FirstOutgoing 1 111 newdef Vector2Meson:SecondOutgoing 1 211 newdef Vector2Meson:Coupling 1 6 newdef Vector2Meson:MaxWeight 1 3.2 newdef Vector2Meson:Incoming 2 100113 newdef Vector2Meson:FirstOutgoing 2 211 newdef Vector2Meson:SecondOutgoing 2 -211 newdef Vector2Meson:Coupling 2 2.082 newdef Vector2Meson:MaxWeight 2 3. newdef Vector2Meson:Incoming 3 100213 newdef Vector2Meson:FirstOutgoing 3 111 newdef Vector2Meson:SecondOutgoing 3 211 newdef Vector2Meson:Coupling 3 2.082 newdef Vector2Meson:MaxWeight 3 1.60125 newdef Vector2Meson:Incoming 4 30113 newdef Vector2Meson:FirstOutgoing 4 211 newdef Vector2Meson:SecondOutgoing 4 -211 newdef Vector2Meson:Coupling 4 1.655 newdef Vector2Meson:MaxWeight 4 1.60103 newdef Vector2Meson:Incoming 5 30213 newdef Vector2Meson:FirstOutgoing 5 111 newdef Vector2Meson:SecondOutgoing 5 211 newdef Vector2Meson:Coupling 5 1.655 newdef Vector2Meson:MaxWeight 5 1.60314 newdef Vector2Meson:Incoming 6 30113 newdef Vector2Meson:FirstOutgoing 6 321 newdef Vector2Meson:SecondOutgoing 6 -321 newdef Vector2Meson:Coupling 6 0.194 newdef Vector2Meson:MaxWeight 6 1.61146 newdef Vector2Meson:Incoming 7 30113 newdef Vector2Meson:FirstOutgoing 7 311 newdef Vector2Meson:SecondOutgoing 7 -311 newdef Vector2Meson:Coupling 7 0.194 newdef Vector2Meson:MaxWeight 7 1.59231 newdef Vector2Meson:Incoming 8 30213 newdef Vector2Meson:FirstOutgoing 8 321 newdef Vector2Meson:SecondOutgoing 8 -311 newdef Vector2Meson:Coupling 8 0.274 newdef Vector2Meson:MaxWeight 8 1.5977 newdef Vector2Meson:Incoming 9 30113 newdef Vector2Meson:FirstOutgoing 9 100211 newdef Vector2Meson:SecondOutgoing 9 -211 newdef Vector2Meson:Coupling 9 7.828 newdef Vector2Meson:MaxWeight 9 3.96846 newdef Vector2Meson:Incoming 10 30213 newdef Vector2Meson:FirstOutgoing 10 100111 newdef Vector2Meson:SecondOutgoing 10 211 newdef Vector2Meson:Coupling 10 7.828 newdef Vector2Meson:MaxWeight 10 3.96787 newdef Vector2Meson:Incoming 11 30213 newdef Vector2Meson:FirstOutgoing 11 111 newdef Vector2Meson:SecondOutgoing 11 100211 newdef Vector2Meson:Coupling 11 7.828 newdef Vector2Meson:MaxWeight 11 4.01174 newdef Vector2Meson:Incoming 12 100113 newdef Vector2Meson:FirstOutgoing 12 100211 newdef Vector2Meson:SecondOutgoing 12 -211 newdef Vector2Meson:Coupling 12 17.9 newdef Vector2Meson:MaxWeight 12 3.92182 newdef Vector2Meson:Incoming 13 100213 newdef Vector2Meson:FirstOutgoing 13 100111 newdef Vector2Meson:SecondOutgoing 13 211 newdef Vector2Meson:Coupling 13 17.9 newdef Vector2Meson:MaxWeight 13 3.89871 newdef Vector2Meson:Incoming 14 100213 newdef Vector2Meson:FirstOutgoing 14 111 newdef Vector2Meson:SecondOutgoing 14 100211 newdef Vector2Meson:Coupling 14 17.9 newdef Vector2Meson:MaxWeight 14 4.05484 newdef Vector2Meson:Incoming 15 223 newdef Vector2Meson:FirstOutgoing 15 211 newdef Vector2Meson:SecondOutgoing 15 -211 newdef Vector2Meson:Coupling 15 0.1847 newdef Vector2Meson:MaxWeight 15 3.2 newdef Vector2Meson:Incoming 16 313 newdef Vector2Meson:FirstOutgoing 16 321 newdef Vector2Meson:SecondOutgoing 16 -211 newdef Vector2Meson:Coupling 16 4.57 newdef Vector2Meson:MaxWeight 16 3.2 newdef Vector2Meson:Incoming 17 313 newdef Vector2Meson:FirstOutgoing 17 311 newdef Vector2Meson:SecondOutgoing 17 111 newdef Vector2Meson:Coupling 17 3.23 newdef Vector2Meson:MaxWeight 17 3.2 newdef Vector2Meson:Incoming 18 323 newdef Vector2Meson:FirstOutgoing 18 311 newdef Vector2Meson:SecondOutgoing 18 211 newdef Vector2Meson:Coupling 18 4.57 newdef Vector2Meson:MaxWeight 18 3. newdef Vector2Meson:Incoming 19 323 newdef Vector2Meson:FirstOutgoing 19 321 newdef Vector2Meson:SecondOutgoing 19 111 newdef Vector2Meson:Coupling 19 3.23 newdef Vector2Meson:MaxWeight 19 3. newdef Vector2Meson:Incoming 20 100313 newdef Vector2Meson:FirstOutgoing 20 321 newdef Vector2Meson:SecondOutgoing 20 -211 newdef Vector2Meson:Coupling 20 1.296 newdef Vector2Meson:MaxWeight 20 1.60116 newdef Vector2Meson:Incoming 21 100313 newdef Vector2Meson:FirstOutgoing 21 311 newdef Vector2Meson:SecondOutgoing 21 111 newdef Vector2Meson:Coupling 21 0.916 newdef Vector2Meson:MaxWeight 21 1.59304 newdef Vector2Meson:Incoming 22 100323 newdef Vector2Meson:FirstOutgoing 22 311 newdef Vector2Meson:SecondOutgoing 22 211 newdef Vector2Meson:Coupling 22 1.296 newdef Vector2Meson:MaxWeight 22 1.58997 newdef Vector2Meson:Incoming 23 100323 newdef Vector2Meson:FirstOutgoing 23 321 newdef Vector2Meson:SecondOutgoing 23 111 newdef Vector2Meson:Coupling 23 0.916 newdef Vector2Meson:MaxWeight 23 1.60422 newdef Vector2Meson:Incoming 24 30313 newdef Vector2Meson:FirstOutgoing 24 321 newdef Vector2Meson:SecondOutgoing 24 -211 newdef Vector2Meson:Coupling 24 3.114 newdef Vector2Meson:MaxWeight 24 1.59993 newdef Vector2Meson:Incoming 25 30313 newdef Vector2Meson:FirstOutgoing 25 311 newdef Vector2Meson:SecondOutgoing 25 111 newdef Vector2Meson:Coupling 25 2.201 newdef Vector2Meson:MaxWeight 25 1.5941 newdef Vector2Meson:Incoming 26 30323 newdef Vector2Meson:FirstOutgoing 26 311 newdef Vector2Meson:SecondOutgoing 26 211 newdef Vector2Meson:Coupling 26 3.114 newdef Vector2Meson:MaxWeight 26 1.59278 newdef Vector2Meson:Incoming 27 30323 newdef Vector2Meson:FirstOutgoing 27 321 newdef Vector2Meson:SecondOutgoing 27 111 newdef Vector2Meson:Coupling 27 2.201 newdef Vector2Meson:MaxWeight 27 1.60125 newdef Vector2Meson:Incoming 28 333 newdef Vector2Meson:FirstOutgoing 28 321 newdef Vector2Meson:SecondOutgoing 28 -321 newdef Vector2Meson:Coupling 28 4.48 newdef Vector2Meson:MaxWeight 28 3.2 newdef Vector2Meson:Incoming 29 333 newdef Vector2Meson:FirstOutgoing 29 311 newdef Vector2Meson:SecondOutgoing 29 -311 newdef Vector2Meson:Coupling 29 4.59 newdef Vector2Meson:MaxWeight 29 3.2 newdef Vector2Meson:Incoming 30 333 newdef Vector2Meson:FirstOutgoing 30 211 newdef Vector2Meson:SecondOutgoing 30 -211 newdef Vector2Meson:Coupling 30 0.008986 newdef Vector2Meson:MaxWeight 30 3.2 newdef Vector2Meson:Incoming 31 100333 newdef Vector2Meson:FirstOutgoing 31 321 newdef Vector2Meson:SecondOutgoing 31 -321 newdef Vector2Meson:Coupling 31 0.912 newdef Vector2Meson:MaxWeight 31 1.60035 newdef Vector2Meson:Incoming 32 100333 newdef Vector2Meson:FirstOutgoing 32 311 newdef Vector2Meson:SecondOutgoing 32 -311 newdef Vector2Meson:Coupling 32 0.918 newdef Vector2Meson:MaxWeight 32 0.0762376 newdef Vector2Meson:Incoming 33 30443 newdef Vector2Meson:FirstOutgoing 33 411 newdef Vector2Meson:SecondOutgoing 33 -411 newdef Vector2Meson:Coupling 33 12.83 newdef Vector2Meson:MaxWeight 33 1.60934 newdef Vector2Meson:Incoming 34 30443 newdef Vector2Meson:FirstOutgoing 34 421 newdef Vector2Meson:SecondOutgoing 34 -421 newdef Vector2Meson:Coupling 34 12.83 newdef Vector2Meson:MaxWeight 34 1.5897 newdef Vector2Meson:Incoming 35 423 newdef Vector2Meson:FirstOutgoing 35 421 newdef Vector2Meson:SecondOutgoing 35 111 newdef Vector2Meson:Coupling 35 6.309 newdef Vector2Meson:MaxWeight 35 3.2 newdef Vector2Meson:Incoming 36 413 newdef Vector2Meson:FirstOutgoing 36 411 newdef Vector2Meson:SecondOutgoing 36 111 newdef Vector2Meson:Coupling 36 6.313 newdef Vector2Meson:MaxWeight 36 3.2 newdef Vector2Meson:Incoming 37 413 newdef Vector2Meson:FirstOutgoing 37 421 newdef Vector2Meson:SecondOutgoing 37 211 newdef Vector2Meson:Coupling 37 8.938 newdef Vector2Meson:MaxWeight 37 3.2 newdef Vector2Meson:Incoming 38 433 newdef Vector2Meson:FirstOutgoing 38 431 newdef Vector2Meson:SecondOutgoing 38 111 newdef Vector2Meson:Coupling 38 1.398 newdef Vector2Meson:MaxWeight 38 3.2 newdef Vector2Meson:Incoming 39 10323 newdef Vector2Meson:FirstOutgoing 39 10321 newdef Vector2Meson:SecondOutgoing 39 111 newdef Vector2Meson:Coupling 39 14.45 newdef Vector2Meson:MaxWeight 39 12.4 newdef Vector2Meson:Incoming 40 10323 newdef Vector2Meson:FirstOutgoing 40 10311 newdef Vector2Meson:SecondOutgoing 40 211 newdef Vector2Meson:Coupling 40 20.46 newdef Vector2Meson:MaxWeight 40 12.4 newdef Vector2Meson:Incoming 41 10313 newdef Vector2Meson:FirstOutgoing 41 10311 newdef Vector2Meson:SecondOutgoing 41 111 newdef Vector2Meson:Coupling 41 14.27 newdef Vector2Meson:MaxWeight 41 12.4 newdef Vector2Meson:Incoming 42 10313 newdef Vector2Meson:FirstOutgoing 42 10321 newdef Vector2Meson:SecondOutgoing 42 -211 newdef Vector2Meson:Coupling 42 20.43 newdef Vector2Meson:MaxWeight 42 12.4 newdef Vector2Meson:Incoming 43 10323 newdef Vector2Meson:FirstOutgoing 43 321 newdef Vector2Meson:SecondOutgoing 43 10221 newdef Vector2Meson:Coupling 43 20 newdef Vector2Meson:MaxWeight 43 0 newdef Vector2Meson:Incoming 44 10313 newdef Vector2Meson:FirstOutgoing 44 311 newdef Vector2Meson:SecondOutgoing 44 10221 newdef Vector2Meson:Coupling 44 20 newdef Vector2Meson:MaxWeight 44 0 newdef Vector2Meson:Incoming 45 20323 newdef Vector2Meson:FirstOutgoing 45 321 newdef Vector2Meson:SecondOutgoing 45 10221 newdef Vector2Meson:Coupling 45 23.34 newdef Vector2Meson:MaxWeight 45 0.0623979 newdef Vector2Meson:Incoming 46 20313 newdef Vector2Meson:FirstOutgoing 46 311 newdef Vector2Meson:SecondOutgoing 46 10221 newdef Vector2Meson:Coupling 46 23.34 newdef Vector2Meson:MaxWeight 46 0.0596804 newdef Vector2Meson:Incoming 47 300553 newdef Vector2Meson:FirstOutgoing 47 521 newdef Vector2Meson:SecondOutgoing 47 -521 newdef Vector2Meson:Coupling 47 24.188 newdef Vector2Meson:MaxWeight 47 1.62728 newdef Vector2Meson:Incoming 48 300553 newdef Vector2Meson:FirstOutgoing 48 511 newdef Vector2Meson:SecondOutgoing 48 -511 newdef Vector2Meson:Coupling 48 24.188 newdef Vector2Meson:MaxWeight 48 1.57433 newdef Vector2Meson:Incoming 49 443 newdef Vector2Meson:FirstOutgoing 49 211 newdef Vector2Meson:SecondOutgoing 49 -211 newdef Vector2Meson:Coupling 49 0.002568 newdef Vector2Meson:MaxWeight 49 3. newdef Vector2Meson:Incoming 50 443 newdef Vector2Meson:FirstOutgoing 50 321 newdef Vector2Meson:SecondOutgoing 50 -321 newdef Vector2Meson:Coupling 50 0.001111 newdef Vector2Meson:MaxWeight 50 3.00 newdef Vector2Meson:Incoming 51 443 newdef Vector2Meson:FirstOutgoing 51 311 newdef Vector2Meson:SecondOutgoing 51 -311 newdef Vector2Meson:Coupling 51 0.000873 newdef Vector2Meson:MaxWeight 51 0.000227768 newdef Vector2Meson:Incoming 52 100443 newdef Vector2Meson:FirstOutgoing 52 211 newdef Vector2Meson:SecondOutgoing 52 -211 newdef Vector2Meson:Coupling 52 0.001055 newdef Vector2Meson:MaxWeight 52 3.2 newdef Vector2Meson:Incoming 53 100443 newdef Vector2Meson:FirstOutgoing 53 321 newdef Vector2Meson:SecondOutgoing 53 -321 newdef Vector2Meson:Coupling 53 0.000905 newdef Vector2Meson:MaxWeight 53 3.2 newdef Vector2Meson:Incoming 54 100443 newdef Vector2Meson:FirstOutgoing 54 311 newdef Vector2Meson:SecondOutgoing 54 -311 newdef Vector2Meson:Coupling 54 0.000905 newdef Vector2Meson:MaxWeight 54 8.49446e-05 newdef Vector2Meson:Incoming 55 20223 newdef Vector2Meson:FirstOutgoing 55 9000111 newdef Vector2Meson:SecondOutgoing 55 111 newdef Vector2Meson:Coupling 55 4.169 newdef Vector2Meson:MaxWeight 55 6.7 newdef Vector2Meson:Incoming 56 20223 newdef Vector2Meson:FirstOutgoing 56 9000211 newdef Vector2Meson:SecondOutgoing 56 -211 newdef Vector2Meson:Coupling 56 4.169 newdef Vector2Meson:MaxWeight 56 5.5 newdef Vector2Meson:Incoming 57 20333 newdef Vector2Meson:FirstOutgoing 57 9000111 newdef Vector2Meson:SecondOutgoing 57 111 newdef Vector2Meson:Coupling 57 0.968 newdef Vector2Meson:MaxWeight 57 4.30758 newdef Vector2Meson:Incoming 58 20333 newdef Vector2Meson:FirstOutgoing 58 9000211 newdef Vector2Meson:SecondOutgoing 58 -211 newdef Vector2Meson:Coupling 58 0.968 newdef Vector2Meson:MaxWeight 58 4.32395 newdef Vector2Meson:Incoming 59 0 newdef Vector2Meson:FirstOutgoing 59 0 newdef Vector2Meson:SecondOutgoing 59 0 newdef Vector2Meson:Coupling 59 0 newdef Vector2Meson:MaxWeight 59 0 newdef Vector2Meson:Incoming 60 443 newdef Vector2Meson:FirstOutgoing 60 130 newdef Vector2Meson:SecondOutgoing 60 310 newdef Vector2Meson:Coupling 60 0.000873 newdef Vector2Meson:MaxWeight 60 3.00 newdef Vector2Meson:Incoming 61 100443 newdef Vector2Meson:FirstOutgoing 61 130 newdef Vector2Meson:SecondOutgoing 61 310 newdef Vector2Meson:Coupling 61 0.000905 newdef Vector2Meson:MaxWeight 61 3. newdef Vector2Meson:Incoming 62 333 newdef Vector2Meson:FirstOutgoing 62 130 newdef Vector2Meson:SecondOutgoing 62 310 newdef Vector2Meson:Coupling 62 4.59 newdef Vector2Meson:MaxWeight 62 3.2 newdef Vector2Meson:Incoming 63 100333 newdef Vector2Meson:FirstOutgoing 63 130 newdef Vector2Meson:SecondOutgoing 63 310 newdef Vector2Meson:Coupling 63 0.918 newdef Vector2Meson:MaxWeight 63 1.6008 # create Herwig::TauDecayer Tau3Pion newdef Tau3Pion:Iteration 10 newdef Tau3Pion:Ntry 1000 newdef Tau3Pion:Points 10000 newdef Tau3Pion:GenerateIntermediates 1 insert Tau3Pion:WeightLocation 0 0 insert Tau3Pion:WeightLocation 1 12 insert Tau3Pion:MaximumWeight 0 2.3 insert Tau3Pion:MaximumWeight 1 2.45 insert Tau3Pion:Weights 0 0.13068 insert Tau3Pion:Weights 1 0.131829 insert Tau3Pion:Weights 2 0.0729247 insert Tau3Pion:Weights 3 0.0729963 insert Tau3Pion:Weights 4 0.0763421 insert Tau3Pion:Weights 5 0.076501 insert Tau3Pion:Weights 6 0.0824364 insert Tau3Pion:Weights 7 0.0827193 insert Tau3Pion:Weights 8 0.0675151 insert Tau3Pion:Weights 9 0.0677209 insert Tau3Pion:Weights 10 0.0696064 insert Tau3Pion:Weights 11 0.0687289 insert Tau3Pion:Weights 12 0.182751 insert Tau3Pion:Weights 13 0.183206 insert Tau3Pion:Weights 14 0.107469 insert Tau3Pion:Weights 15 0.106478 insert Tau3Pion:Weights 16 0.109374 insert Tau3Pion:Weights 17 0.109834 insert Tau3Pion:Weights 18 0.08196 insert Tau3Pion:Weights 19 0.0597712 insert Tau3Pion:Weights 20 0.0591571 create Herwig::ThreePionCLEOCurrent Tau3PionCurrent HwWeakCurrents.so newdef Tau3PionCurrent:RhoMasses 0 774.3 newdef Tau3PionCurrent:RhoMasses 1 1370 insert Tau3PionCurrent:RhoMasses 2 1720 newdef Tau3PionCurrent:RhoWidths 0 149.1 newdef Tau3PionCurrent:RhoWidths 1 386 insert Tau3PionCurrent:RhoWidths 2 250 newdef Tau3PionCurrent:f_2Mass 1.275 newdef Tau3PionCurrent:f_2Width 0.185 newdef Tau3PionCurrent:f_0Mass 1.186 newdef Tau3PionCurrent:f_0Width 0.35 newdef Tau3PionCurrent:sigmaMass 0.86 newdef Tau3PionCurrent:sigmaWidth 0.88 newdef Tau3PionCurrent:a1Mass 1.331 newdef Tau3PionCurrent:a1Width 0.814 newdef Tau3PionCurrent:KaonMass 0.496 newdef Tau3PionCurrent:KStarMass 0.894 newdef Tau3PionCurrent:KaonCoupling 3.32 newdef Tau3PionCurrent:Fpi 92.4189 newdef Tau3PionCurrent:a1WidthOption 0 newdef Tau3PionCurrent:RhoPWaveMagnitude 0 1 newdef Tau3PionCurrent:RhoPWaveMagnitude 1 0.12 newdef Tau3PionCurrent:RhoPWavePhase 0 0 newdef Tau3PionCurrent:RhoPWavePhase 1 3.11018 newdef Tau3PionCurrent:RhoDWaveMagnitude 0 3.7e-07 newdef Tau3PionCurrent:RhoDWaveMagnitude 1 8.7e-07 newdef Tau3PionCurrent:RhoDWavePhase 0 -0.471239 newdef Tau3PionCurrent:RhoDWavePhase 1 1.66504 newdef Tau3PionCurrent:f0Phase -1.69646 newdef Tau3PionCurrent:f2Phase 1.75929 newdef Tau3PionCurrent:sigmaPhase 0.722566 newdef Tau3PionCurrent:f0Magnitude 0.77 newdef Tau3PionCurrent:f2Magnitude 0.71 newdef Tau3PionCurrent:sigmaMagnitude 2.1 newdef Tau3PionCurrent:LocalParameters 1 newdef Tau3PionCurrent:Initializea1 0 newdef Tau3PionCurrent:a1RunningWidth 0 0 newdef Tau3PionCurrent:a1RunningWidth 1 0 newdef Tau3PionCurrent:a1RunningWidth 2 0 newdef Tau3PionCurrent:a1RunningWidth 3 0 newdef Tau3PionCurrent:a1RunningWidth 4 0 newdef Tau3PionCurrent:a1RunningWidth 5 0 newdef Tau3PionCurrent:a1RunningWidth 6 0 newdef Tau3PionCurrent:a1RunningWidth 7 0 newdef Tau3PionCurrent:a1RunningWidth 8 0 newdef Tau3PionCurrent:a1RunningWidth 9 0 newdef Tau3PionCurrent:a1RunningWidth 10 0 newdef Tau3PionCurrent:a1RunningWidth 11 0.000212435 newdef Tau3PionCurrent:a1RunningWidth 12 0.01073 newdef Tau3PionCurrent:a1RunningWidth 13 0.0555214 newdef Tau3PionCurrent:a1RunningWidth 14 0.150291 newdef Tau3PionCurrent:a1RunningWidth 15 0.304161 newdef Tau3PionCurrent:a1RunningWidth 16 0.523206 newdef Tau3PionCurrent:a1RunningWidth 17 0.812079 newdef Tau3PionCurrent:a1RunningWidth 18 1.17487 newdef Tau3PionCurrent:a1RunningWidth 19 1.61557 newdef Tau3PionCurrent:a1RunningWidth 20 2.1384 newdef Tau3PionCurrent:a1RunningWidth 21 2.74801 newdef Tau3PionCurrent:a1RunningWidth 22 3.44963 newdef Tau3PionCurrent:a1RunningWidth 23 4.24924 newdef Tau3PionCurrent:a1RunningWidth 24 5.15367 newdef Tau3PionCurrent:a1RunningWidth 25 6.17076 newdef Tau3PionCurrent:a1RunningWidth 26 7.30953 newdef Tau3PionCurrent:a1RunningWidth 27 8.58034 newdef Tau3PionCurrent:a1RunningWidth 28 9.99512 newdef Tau3PionCurrent:a1RunningWidth 29 11.5676 newdef Tau3PionCurrent:a1RunningWidth 30 13.3136 newdef Tau3PionCurrent:a1RunningWidth 31 15.2514 newdef Tau3PionCurrent:a1RunningWidth 32 17.4021 newdef Tau3PionCurrent:a1RunningWidth 33 19.7904 newdef Tau3PionCurrent:a1RunningWidth 34 22.4445 newdef Tau3PionCurrent:a1RunningWidth 35 25.3978 newdef Tau3PionCurrent:a1RunningWidth 36 28.6887 newdef Tau3PionCurrent:a1RunningWidth 37 32.3625 newdef Tau3PionCurrent:a1RunningWidth 38 36.4717 newdef Tau3PionCurrent:a1RunningWidth 39 41.0778 newdef Tau3PionCurrent:a1RunningWidth 40 46.2524 newdef Tau3PionCurrent:a1RunningWidth 41 52.078 newdef Tau3PionCurrent:a1RunningWidth 42 58.6497 newdef Tau3PionCurrent:a1RunningWidth 43 66.0744 newdef Tau3PionCurrent:a1RunningWidth 44 74.4694 newdef Tau3PionCurrent:a1RunningWidth 45 83.9592 newdef Tau3PionCurrent:a1RunningWidth 46 94.6658 newdef Tau3PionCurrent:a1RunningWidth 47 106.696 newdef Tau3PionCurrent:a1RunningWidth 48 120.121 newdef Tau3PionCurrent:a1RunningWidth 49 134.956 newdef Tau3PionCurrent:a1RunningWidth 50 151.134 newdef Tau3PionCurrent:a1RunningWidth 51 168.502 newdef Tau3PionCurrent:a1RunningWidth 52 186.822 newdef Tau3PionCurrent:a1RunningWidth 53 205.804 newdef Tau3PionCurrent:a1RunningWidth 54 225.143 newdef Tau3PionCurrent:a1RunningWidth 55 244.553 newdef Tau3PionCurrent:a1RunningWidth 56 263.794 newdef Tau3PionCurrent:a1RunningWidth 57 282.682 newdef Tau3PionCurrent:a1RunningWidth 58 301.088 newdef Tau3PionCurrent:a1RunningWidth 59 318.93 newdef Tau3PionCurrent:a1RunningWidth 60 336.162 newdef Tau3PionCurrent:a1RunningWidth 61 352.768 newdef Tau3PionCurrent:a1RunningWidth 62 368.747 newdef Tau3PionCurrent:a1RunningWidth 63 384.115 newdef Tau3PionCurrent:a1RunningWidth 64 398.894 newdef Tau3PionCurrent:a1RunningWidth 65 413.111 newdef Tau3PionCurrent:a1RunningWidth 66 426.795 newdef Tau3PionCurrent:a1RunningWidth 67 439.978 newdef Tau3PionCurrent:a1RunningWidth 68 452.687 newdef Tau3PionCurrent:a1RunningWidth 69 464.956 newdef Tau3PionCurrent:a1RunningWidth 70 476.812 newdef Tau3PionCurrent:a1RunningWidth 71 488.281 newdef Tau3PionCurrent:a1RunningWidth 72 499.391 newdef Tau3PionCurrent:a1RunningWidth 73 510.164 newdef Tau3PionCurrent:a1RunningWidth 74 520.625 newdef Tau3PionCurrent:a1RunningWidth 75 530.792 newdef Tau3PionCurrent:a1RunningWidth 76 540.688 newdef Tau3PionCurrent:a1RunningWidth 77 550.329 newdef Tau3PionCurrent:a1RunningWidth 78 560.254 newdef Tau3PionCurrent:a1RunningWidth 79 568.918 newdef Tau3PionCurrent:a1RunningWidth 80 577.897 newdef Tau3PionCurrent:a1RunningWidth 81 586.684 newdef Tau3PionCurrent:a1RunningWidth 82 595.292 newdef Tau3PionCurrent:a1RunningWidth 83 603.735 newdef Tau3PionCurrent:a1RunningWidth 84 612.022 newdef Tau3PionCurrent:a1RunningWidth 85 620.165 newdef Tau3PionCurrent:a1RunningWidth 86 628.174 newdef Tau3PionCurrent:a1RunningWidth 87 636.058 newdef Tau3PionCurrent:a1RunningWidth 88 643.827 newdef Tau3PionCurrent:a1RunningWidth 89 651.491 newdef Tau3PionCurrent:a1RunningWidth 90 659.052 newdef Tau3PionCurrent:a1RunningWidth 91 666.522 newdef Tau3PionCurrent:a1RunningWidth 92 673.909 newdef Tau3PionCurrent:a1RunningWidth 93 681.217 newdef Tau3PionCurrent:a1RunningWidth 94 688.454 newdef Tau3PionCurrent:a1RunningWidth 95 695.626 newdef Tau3PionCurrent:a1RunningWidth 96 702.739 newdef Tau3PionCurrent:a1RunningWidth 97 709.799 newdef Tau3PionCurrent:a1RunningWidth 98 716.81 newdef Tau3PionCurrent:a1RunningWidth 99 723.784 newdef Tau3PionCurrent:a1RunningWidth 100 730.71 newdef Tau3PionCurrent:a1RunningWidth 101 737.611 newdef Tau3PionCurrent:a1RunningWidth 102 744.479 newdef Tau3PionCurrent:a1RunningWidth 103 751.327 newdef Tau3PionCurrent:a1RunningWidth 104 758.151 newdef Tau3PionCurrent:a1RunningWidth 105 764.964 newdef Tau3PionCurrent:a1RunningWidth 106 771.772 newdef Tau3PionCurrent:a1RunningWidth 107 778.567 newdef Tau3PionCurrent:a1RunningWidth 108 785.357 newdef Tau3PionCurrent:a1RunningWidth 109 792.152 newdef Tau3PionCurrent:a1RunningWidth 110 798.959 newdef Tau3PionCurrent:a1RunningWidth 111 805.774 newdef Tau3PionCurrent:a1RunningWidth 112 812.592 newdef Tau3PionCurrent:a1RunningWidth 113 819.435 newdef Tau3PionCurrent:a1RunningWidth 114 826.3 newdef Tau3PionCurrent:a1RunningWidth 115 833.19 newdef Tau3PionCurrent:a1RunningWidth 116 840.11 newdef Tau3PionCurrent:a1RunningWidth 117 847.061 newdef Tau3PionCurrent:a1RunningWidth 118 854.054 newdef Tau3PionCurrent:a1RunningWidth 119 861.078 newdef Tau3PionCurrent:a1RunningWidth 120 868.15 newdef Tau3PionCurrent:a1RunningWidth 121 875.265 newdef Tau3PionCurrent:a1RunningWidth 122 882.432 newdef Tau3PionCurrent:a1RunningWidth 123 920.524 newdef Tau3PionCurrent:a1RunningWidth 124 946.31 newdef Tau3PionCurrent:a1RunningWidth 125 966.538 newdef Tau3PionCurrent:a1RunningWidth 126 984.278 newdef Tau3PionCurrent:a1RunningWidth 127 1000.56 newdef Tau3PionCurrent:a1RunningWidth 128 1015.75 newdef Tau3PionCurrent:a1RunningWidth 129 1030.24 newdef Tau3PionCurrent:a1RunningWidth 130 1044.15 newdef Tau3PionCurrent:a1RunningWidth 131 1057.56 newdef Tau3PionCurrent:a1RunningWidth 132 1070.66 newdef Tau3PionCurrent:a1RunningWidth 133 1083.47 newdef Tau3PionCurrent:a1RunningWidth 134 1095.99 newdef Tau3PionCurrent:a1RunningWidth 135 1108.33 newdef Tau3PionCurrent:a1RunningWidth 136 1120.51 newdef Tau3PionCurrent:a1RunningWidth 137 1132.55 newdef Tau3PionCurrent:a1RunningWidth 138 1144.48 newdef Tau3PionCurrent:a1RunningWidth 139 1156.32 newdef Tau3PionCurrent:a1RunningWidth 140 1168.08 newdef Tau3PionCurrent:a1RunningWidth 141 1179.79 newdef Tau3PionCurrent:a1RunningWidth 142 1191.47 newdef Tau3PionCurrent:a1RunningWidth 143 1203.12 newdef Tau3PionCurrent:a1RunningWidth 144 1214.76 newdef Tau3PionCurrent:a1RunningWidth 145 1226.4 newdef Tau3PionCurrent:a1RunningWidth 146 1238.05 newdef Tau3PionCurrent:a1RunningWidth 147 1249.69 newdef Tau3PionCurrent:a1RunningWidth 148 1261.41 newdef Tau3PionCurrent:a1RunningWidth 149 1273.14 newdef Tau3PionCurrent:a1RunningWidth 150 1284.93 newdef Tau3PionCurrent:a1RunningWidth 151 1296.77 newdef Tau3PionCurrent:a1RunningWidth 152 1308.67 newdef Tau3PionCurrent:a1RunningWidth 153 1320.7 newdef Tau3PionCurrent:a1RunningWidth 154 1332.68 newdef Tau3PionCurrent:a1RunningWidth 155 1344.79 newdef Tau3PionCurrent:a1RunningWidth 156 1357.01 newdef Tau3PionCurrent:a1RunningWidth 157 1369.3 newdef Tau3PionCurrent:a1RunningWidth 158 1381.69 newdef Tau3PionCurrent:a1RunningWidth 159 1394.16 newdef Tau3PionCurrent:a1RunningWidth 160 1406.76 newdef Tau3PionCurrent:a1RunningWidth 161 1419.49 newdef Tau3PionCurrent:a1RunningWidth 162 1432.27 newdef Tau3PionCurrent:a1RunningWidth 163 1445.19 newdef Tau3PionCurrent:a1RunningWidth 164 1458.24 newdef Tau3PionCurrent:a1RunningWidth 165 1471.41 newdef Tau3PionCurrent:a1RunningWidth 166 1484.71 newdef Tau3PionCurrent:a1RunningWidth 167 1498.14 newdef Tau3PionCurrent:a1RunningWidth 168 1511.69 newdef Tau3PionCurrent:a1RunningWidth 169 1525.39 newdef Tau3PionCurrent:a1RunningWidth 170 1539.22 newdef Tau3PionCurrent:a1RunningWidth 171 1553.19 newdef Tau3PionCurrent:a1RunningWidth 172 1567.32 newdef Tau3PionCurrent:a1RunningWidth 173 1581.58 newdef Tau3PionCurrent:a1RunningWidth 174 1595.99 newdef Tau3PionCurrent:a1RunningWidth 175 1610.55 newdef Tau3PionCurrent:a1RunningWidth 176 1625.27 newdef Tau3PionCurrent:a1RunningWidth 177 1640.14 newdef Tau3PionCurrent:a1RunningWidth 178 1655.18 newdef Tau3PionCurrent:a1RunningWidth 179 1670.37 newdef Tau3PionCurrent:a1RunningWidth 180 1685.73 newdef Tau3PionCurrent:a1RunningWidth 181 1701.25 newdef Tau3PionCurrent:a1RunningWidth 182 1716.94 newdef Tau3PionCurrent:a1RunningWidth 183 1732.79 newdef Tau3PionCurrent:a1RunningWidth 184 1748.85 newdef Tau3PionCurrent:a1RunningWidth 185 1765.02 newdef Tau3PionCurrent:a1RunningWidth 186 1781.39 newdef Tau3PionCurrent:a1RunningWidth 187 1797.94 newdef Tau3PionCurrent:a1RunningWidth 188 1814.68 newdef Tau3PionCurrent:a1RunningWidth 189 1831.58 newdef Tau3PionCurrent:a1RunningWidth 190 1848.67 newdef Tau3PionCurrent:a1RunningWidth 191 1865.94 newdef Tau3PionCurrent:a1RunningWidth 192 1883.41 newdef Tau3PionCurrent:a1RunningWidth 193 1901.05 newdef Tau3PionCurrent:a1RunningWidth 194 1918.89 newdef Tau3PionCurrent:a1RunningWidth 195 1936.92 newdef Tau3PionCurrent:a1RunningWidth 196 1955.13 newdef Tau3PionCurrent:a1RunningWidth 197 1973.64 newdef Tau3PionCurrent:a1RunningWidth 198 1992.16 newdef Tau3PionCurrent:a1RunningWidth 199 2010.95 insert Tau3PionCurrent:a1RunningWidth 200 2029.97 newdef Tau3PionCurrent:a1RunningQ2 0 0 newdef Tau3PionCurrent:a1RunningQ2 1 15788.5 newdef Tau3PionCurrent:a1RunningQ2 2 31576.9 newdef Tau3PionCurrent:a1RunningQ2 3 47365.4 newdef Tau3PionCurrent:a1RunningQ2 4 63153.9 newdef Tau3PionCurrent:a1RunningQ2 5 78942.3 newdef Tau3PionCurrent:a1RunningQ2 6 94730.8 newdef Tau3PionCurrent:a1RunningQ2 7 110519 newdef Tau3PionCurrent:a1RunningQ2 8 126308 newdef Tau3PionCurrent:a1RunningQ2 9 142096 newdef Tau3PionCurrent:a1RunningQ2 10 157885 newdef Tau3PionCurrent:a1RunningQ2 11 173673 newdef Tau3PionCurrent:a1RunningQ2 12 189462 newdef Tau3PionCurrent:a1RunningQ2 13 205250 newdef Tau3PionCurrent:a1RunningQ2 14 221039 newdef Tau3PionCurrent:a1RunningQ2 15 236827 newdef Tau3PionCurrent:a1RunningQ2 16 252615 newdef Tau3PionCurrent:a1RunningQ2 17 268404 newdef Tau3PionCurrent:a1RunningQ2 18 284192 newdef Tau3PionCurrent:a1RunningQ2 19 299981 newdef Tau3PionCurrent:a1RunningQ2 20 315769 newdef Tau3PionCurrent:a1RunningQ2 21 331558 newdef Tau3PionCurrent:a1RunningQ2 22 347346 newdef Tau3PionCurrent:a1RunningQ2 23 363135 newdef Tau3PionCurrent:a1RunningQ2 24 378923 newdef Tau3PionCurrent:a1RunningQ2 25 394712 newdef Tau3PionCurrent:a1RunningQ2 26 410500 newdef Tau3PionCurrent:a1RunningQ2 27 426289 newdef Tau3PionCurrent:a1RunningQ2 28 442077 newdef Tau3PionCurrent:a1RunningQ2 29 457866 newdef Tau3PionCurrent:a1RunningQ2 30 473654 newdef Tau3PionCurrent:a1RunningQ2 31 489442 newdef Tau3PionCurrent:a1RunningQ2 32 505231 newdef Tau3PionCurrent:a1RunningQ2 33 521019 newdef Tau3PionCurrent:a1RunningQ2 34 536808 newdef Tau3PionCurrent:a1RunningQ2 35 552596 newdef Tau3PionCurrent:a1RunningQ2 36 568385 newdef Tau3PionCurrent:a1RunningQ2 37 584173 newdef Tau3PionCurrent:a1RunningQ2 38 599962 newdef Tau3PionCurrent:a1RunningQ2 39 615750 newdef Tau3PionCurrent:a1RunningQ2 40 631539 newdef Tau3PionCurrent:a1RunningQ2 41 647327 newdef Tau3PionCurrent:a1RunningQ2 42 663116 newdef Tau3PionCurrent:a1RunningQ2 43 678904 newdef Tau3PionCurrent:a1RunningQ2 44 694693 newdef Tau3PionCurrent:a1RunningQ2 45 710481 newdef Tau3PionCurrent:a1RunningQ2 46 726269 newdef Tau3PionCurrent:a1RunningQ2 47 742058 newdef Tau3PionCurrent:a1RunningQ2 48 757846 newdef Tau3PionCurrent:a1RunningQ2 49 773635 newdef Tau3PionCurrent:a1RunningQ2 50 789423 newdef Tau3PionCurrent:a1RunningQ2 51 805212 newdef Tau3PionCurrent:a1RunningQ2 52 821000 newdef Tau3PionCurrent:a1RunningQ2 53 836789 newdef Tau3PionCurrent:a1RunningQ2 54 852577 newdef Tau3PionCurrent:a1RunningQ2 55 868366 newdef Tau3PionCurrent:a1RunningQ2 56 884154 newdef Tau3PionCurrent:a1RunningQ2 57 899943 newdef Tau3PionCurrent:a1RunningQ2 58 915731 newdef Tau3PionCurrent:a1RunningQ2 59 931520 newdef Tau3PionCurrent:a1RunningQ2 60 947308 newdef Tau3PionCurrent:a1RunningQ2 61 963097 newdef Tau3PionCurrent:a1RunningQ2 62 978885 newdef Tau3PionCurrent:a1RunningQ2 63 994673 newdef Tau3PionCurrent:a1RunningQ2 64 1.01046e+06 newdef Tau3PionCurrent:a1RunningQ2 65 1.02625e+06 newdef Tau3PionCurrent:a1RunningQ2 66 1.04204e+06 newdef Tau3PionCurrent:a1RunningQ2 67 1.05783e+06 newdef Tau3PionCurrent:a1RunningQ2 68 1.07362e+06 newdef Tau3PionCurrent:a1RunningQ2 69 1.0894e+06 newdef Tau3PionCurrent:a1RunningQ2 70 1.10519e+06 newdef Tau3PionCurrent:a1RunningQ2 71 1.12098e+06 newdef Tau3PionCurrent:a1RunningQ2 72 1.13677e+06 newdef Tau3PionCurrent:a1RunningQ2 73 1.15256e+06 newdef Tau3PionCurrent:a1RunningQ2 74 1.16835e+06 newdef Tau3PionCurrent:a1RunningQ2 75 1.18414e+06 newdef Tau3PionCurrent:a1RunningQ2 76 1.19992e+06 newdef Tau3PionCurrent:a1RunningQ2 77 1.21571e+06 newdef Tau3PionCurrent:a1RunningQ2 78 1.2315e+06 newdef Tau3PionCurrent:a1RunningQ2 79 1.24729e+06 newdef Tau3PionCurrent:a1RunningQ2 80 1.26308e+06 newdef Tau3PionCurrent:a1RunningQ2 81 1.27887e+06 newdef Tau3PionCurrent:a1RunningQ2 82 1.29465e+06 newdef Tau3PionCurrent:a1RunningQ2 83 1.31044e+06 newdef Tau3PionCurrent:a1RunningQ2 84 1.32623e+06 newdef Tau3PionCurrent:a1RunningQ2 85 1.34202e+06 newdef Tau3PionCurrent:a1RunningQ2 86 1.35781e+06 newdef Tau3PionCurrent:a1RunningQ2 87 1.3736e+06 newdef Tau3PionCurrent:a1RunningQ2 88 1.38939e+06 newdef Tau3PionCurrent:a1RunningQ2 89 1.40517e+06 newdef Tau3PionCurrent:a1RunningQ2 90 1.42096e+06 newdef Tau3PionCurrent:a1RunningQ2 91 1.43675e+06 newdef Tau3PionCurrent:a1RunningQ2 92 1.45254e+06 newdef Tau3PionCurrent:a1RunningQ2 93 1.46833e+06 newdef Tau3PionCurrent:a1RunningQ2 94 1.48412e+06 newdef Tau3PionCurrent:a1RunningQ2 95 1.4999e+06 newdef Tau3PionCurrent:a1RunningQ2 96 1.51569e+06 newdef Tau3PionCurrent:a1RunningQ2 97 1.53148e+06 newdef Tau3PionCurrent:a1RunningQ2 98 1.54727e+06 newdef Tau3PionCurrent:a1RunningQ2 99 1.56306e+06 newdef Tau3PionCurrent:a1RunningQ2 100 1.57885e+06 newdef Tau3PionCurrent:a1RunningQ2 101 1.59464e+06 newdef Tau3PionCurrent:a1RunningQ2 102 1.61042e+06 newdef Tau3PionCurrent:a1RunningQ2 103 1.62621e+06 newdef Tau3PionCurrent:a1RunningQ2 104 1.642e+06 newdef Tau3PionCurrent:a1RunningQ2 105 1.65779e+06 newdef Tau3PionCurrent:a1RunningQ2 106 1.67358e+06 newdef Tau3PionCurrent:a1RunningQ2 107 1.68937e+06 newdef Tau3PionCurrent:a1RunningQ2 108 1.70515e+06 newdef Tau3PionCurrent:a1RunningQ2 109 1.72094e+06 newdef Tau3PionCurrent:a1RunningQ2 110 1.73673e+06 newdef Tau3PionCurrent:a1RunningQ2 111 1.75252e+06 newdef Tau3PionCurrent:a1RunningQ2 112 1.76831e+06 newdef Tau3PionCurrent:a1RunningQ2 113 1.7841e+06 newdef Tau3PionCurrent:a1RunningQ2 114 1.79989e+06 newdef Tau3PionCurrent:a1RunningQ2 115 1.81567e+06 newdef Tau3PionCurrent:a1RunningQ2 116 1.83146e+06 newdef Tau3PionCurrent:a1RunningQ2 117 1.84725e+06 newdef Tau3PionCurrent:a1RunningQ2 118 1.86304e+06 newdef Tau3PionCurrent:a1RunningQ2 119 1.87883e+06 newdef Tau3PionCurrent:a1RunningQ2 120 1.89462e+06 newdef Tau3PionCurrent:a1RunningQ2 121 1.9104e+06 newdef Tau3PionCurrent:a1RunningQ2 122 1.92619e+06 newdef Tau3PionCurrent:a1RunningQ2 123 1.94198e+06 newdef Tau3PionCurrent:a1RunningQ2 124 1.95777e+06 newdef Tau3PionCurrent:a1RunningQ2 125 1.97356e+06 newdef Tau3PionCurrent:a1RunningQ2 126 1.98935e+06 newdef Tau3PionCurrent:a1RunningQ2 127 2.00514e+06 newdef Tau3PionCurrent:a1RunningQ2 128 2.02092e+06 newdef Tau3PionCurrent:a1RunningQ2 129 2.03671e+06 newdef Tau3PionCurrent:a1RunningQ2 130 2.0525e+06 newdef Tau3PionCurrent:a1RunningQ2 131 2.06829e+06 newdef Tau3PionCurrent:a1RunningQ2 132 2.08408e+06 newdef Tau3PionCurrent:a1RunningQ2 133 2.09987e+06 newdef Tau3PionCurrent:a1RunningQ2 134 2.11565e+06 newdef Tau3PionCurrent:a1RunningQ2 135 2.13144e+06 newdef Tau3PionCurrent:a1RunningQ2 136 2.14723e+06 newdef Tau3PionCurrent:a1RunningQ2 137 2.16302e+06 newdef Tau3PionCurrent:a1RunningQ2 138 2.17881e+06 newdef Tau3PionCurrent:a1RunningQ2 139 2.1946e+06 newdef Tau3PionCurrent:a1RunningQ2 140 2.21039e+06 newdef Tau3PionCurrent:a1RunningQ2 141 2.22617e+06 newdef Tau3PionCurrent:a1RunningQ2 142 2.24196e+06 newdef Tau3PionCurrent:a1RunningQ2 143 2.25775e+06 newdef Tau3PionCurrent:a1RunningQ2 144 2.27354e+06 newdef Tau3PionCurrent:a1RunningQ2 145 2.28933e+06 newdef Tau3PionCurrent:a1RunningQ2 146 2.30512e+06 newdef Tau3PionCurrent:a1RunningQ2 147 2.3209e+06 newdef Tau3PionCurrent:a1RunningQ2 148 2.33669e+06 newdef Tau3PionCurrent:a1RunningQ2 149 2.35248e+06 newdef Tau3PionCurrent:a1RunningQ2 150 2.36827e+06 newdef Tau3PionCurrent:a1RunningQ2 151 2.38406e+06 newdef Tau3PionCurrent:a1RunningQ2 152 2.39985e+06 newdef Tau3PionCurrent:a1RunningQ2 153 2.41564e+06 newdef Tau3PionCurrent:a1RunningQ2 154 2.43142e+06 newdef Tau3PionCurrent:a1RunningQ2 155 2.44721e+06 newdef Tau3PionCurrent:a1RunningQ2 156 2.463e+06 newdef Tau3PionCurrent:a1RunningQ2 157 2.47879e+06 newdef Tau3PionCurrent:a1RunningQ2 158 2.49458e+06 newdef Tau3PionCurrent:a1RunningQ2 159 2.51037e+06 newdef Tau3PionCurrent:a1RunningQ2 160 2.52615e+06 newdef Tau3PionCurrent:a1RunningQ2 161 2.54194e+06 newdef Tau3PionCurrent:a1RunningQ2 162 2.55773e+06 newdef Tau3PionCurrent:a1RunningQ2 163 2.57352e+06 newdef Tau3PionCurrent:a1RunningQ2 164 2.58931e+06 newdef Tau3PionCurrent:a1RunningQ2 165 2.6051e+06 newdef Tau3PionCurrent:a1RunningQ2 166 2.62089e+06 newdef Tau3PionCurrent:a1RunningQ2 167 2.63667e+06 newdef Tau3PionCurrent:a1RunningQ2 168 2.65246e+06 newdef Tau3PionCurrent:a1RunningQ2 169 2.66825e+06 newdef Tau3PionCurrent:a1RunningQ2 170 2.68404e+06 newdef Tau3PionCurrent:a1RunningQ2 171 2.69983e+06 newdef Tau3PionCurrent:a1RunningQ2 172 2.71562e+06 newdef Tau3PionCurrent:a1RunningQ2 173 2.7314e+06 newdef Tau3PionCurrent:a1RunningQ2 174 2.74719e+06 newdef Tau3PionCurrent:a1RunningQ2 175 2.76298e+06 newdef Tau3PionCurrent:a1RunningQ2 176 2.77877e+06 newdef Tau3PionCurrent:a1RunningQ2 177 2.79456e+06 newdef Tau3PionCurrent:a1RunningQ2 178 2.81035e+06 newdef Tau3PionCurrent:a1RunningQ2 179 2.82614e+06 newdef Tau3PionCurrent:a1RunningQ2 180 2.84192e+06 newdef Tau3PionCurrent:a1RunningQ2 181 2.85771e+06 newdef Tau3PionCurrent:a1RunningQ2 182 2.8735e+06 newdef Tau3PionCurrent:a1RunningQ2 183 2.88929e+06 newdef Tau3PionCurrent:a1RunningQ2 184 2.90508e+06 newdef Tau3PionCurrent:a1RunningQ2 185 2.92087e+06 newdef Tau3PionCurrent:a1RunningQ2 186 2.93665e+06 newdef Tau3PionCurrent:a1RunningQ2 187 2.95244e+06 newdef Tau3PionCurrent:a1RunningQ2 188 2.96823e+06 newdef Tau3PionCurrent:a1RunningQ2 189 2.98402e+06 newdef Tau3PionCurrent:a1RunningQ2 190 2.99981e+06 newdef Tau3PionCurrent:a1RunningQ2 191 3.0156e+06 newdef Tau3PionCurrent:a1RunningQ2 192 3.03139e+06 newdef Tau3PionCurrent:a1RunningQ2 193 3.04717e+06 newdef Tau3PionCurrent:a1RunningQ2 194 3.06296e+06 newdef Tau3PionCurrent:a1RunningQ2 195 3.07875e+06 newdef Tau3PionCurrent:a1RunningQ2 196 3.09454e+06 newdef Tau3PionCurrent:a1RunningQ2 197 3.11033e+06 newdef Tau3PionCurrent:a1RunningQ2 198 3.12612e+06 newdef Tau3PionCurrent:a1RunningQ2 199 3.1419e+06 insert Tau3PionCurrent:a1RunningQ2 200 3.15769e+06 newdef Tau3PionCurrent:Quark 0 2 newdef Tau3PionCurrent:AntiQuark 0 -1 newdef Tau3PionCurrent:Quark 1 2 newdef Tau3PionCurrent:AntiQuark 1 -1 newdef Tau3PionCurrent:Quark 2 2 newdef Tau3PionCurrent:AntiQuark 2 -1 newdef Tau3PionCurrent:Quark 3 2 newdef Tau3PionCurrent:AntiQuark 3 -1 newdef Tau3PionCurrent:Quark 4 2 newdef Tau3PionCurrent:AntiQuark 4 -1 newdef Tau3PionCurrent:Quark 5 2 newdef Tau3PionCurrent:AntiQuark 5 -3 newdef Tau3PionCurrent:Quark 6 2 newdef Tau3PionCurrent:AntiQuark 6 -3 newdef Tau3PionCurrent:Quark 7 2 newdef Tau3PionCurrent:AntiQuark 7 -3 newdef Tau3PionCurrent:Quark 8 2 newdef Tau3PionCurrent:AntiQuark 8 -1 newdef Tau3PionCurrent:Quark 9 2 newdef Tau3PionCurrent:AntiQuark 9 -1 newdef Tau3PionCurrent:Quark 10 2 newdef Tau3PionCurrent:AntiQuark 10 -1 newdef Tau3PionCurrent:Quark 11 2 newdef Tau3PionCurrent:AntiQuark 11 -1 newdef Tau3Pion:WeakCurrent Tau3PionCurrent # create Herwig::TauDecayer Tau3Meson newdef Tau3Meson:Iteration 10 newdef Tau3Meson:Ntry 1000 newdef Tau3Meson:Points 10000 newdef Tau3Meson:GenerateIntermediates 1 insert Tau3Meson:WeightLocation 0 0 insert Tau3Meson:WeightLocation 1 6 insert Tau3Meson:WeightLocation 2 12 insert Tau3Meson:WeightLocation 3 36 insert Tau3Meson:WeightLocation 4 60 insert Tau3Meson:WeightLocation 5 63 insert Tau3Meson:WeightLocation 6 69 insert Tau3Meson:WeightLocation 7 93 insert Tau3Meson:WeightLocation 8 114 insert Tau3Meson:MaximumWeight 0 1.46402 insert Tau3Meson:MaximumWeight 1 1.29971 insert Tau3Meson:MaximumWeight 2 0.0221939 insert Tau3Meson:MaximumWeight 3 0.0200604 insert Tau3Meson:MaximumWeight 4 0.000570109 insert Tau3Meson:MaximumWeight 5 0.0141206 insert Tau3Meson:MaximumWeight 6 0.0495149 insert Tau3Meson:MaximumWeight 7 0.047843 insert Tau3Meson:MaximumWeight 8 0.10 insert Tau3Meson:Weights 0 0.231197 insert Tau3Meson:Weights 1 0.233003 insert Tau3Meson:Weights 2 0.133912 insert Tau3Meson:Weights 3 0.135913 insert Tau3Meson:Weights 4 0.132762 insert Tau3Meson:Weights 5 0.133212 insert Tau3Meson:Weights 6 0.220651 insert Tau3Meson:Weights 7 0.224446 insert Tau3Meson:Weights 8 0.138548 insert Tau3Meson:Weights 9 0.141119 insert Tau3Meson:Weights 10 0.138944 insert Tau3Meson:Weights 11 0.136292 insert Tau3Meson:Weights 12 0.0946607 insert Tau3Meson:Weights 13 0.0388269 insert Tau3Meson:Weights 14 0.0771271 insert Tau3Meson:Weights 15 0.0295364 insert Tau3Meson:Weights 16 0.0335051 insert Tau3Meson:Weights 17 0.018683 insert Tau3Meson:Weights 18 0.030761 insert Tau3Meson:Weights 19 0.0167366 insert Tau3Meson:Weights 20 0.0447978 insert Tau3Meson:Weights 21 0.0297606 insert Tau3Meson:Weights 22 0.124389 insert Tau3Meson:Weights 23 0.0536552 insert Tau3Meson:Weights 24 0.0585993 insert Tau3Meson:Weights 25 0.0502839 insert Tau3Meson:Weights 26 0.0575448 insert Tau3Meson:Weights 27 0.0445038 insert Tau3Meson:Weights 28 0.0491588 insert Tau3Meson:Weights 29 0.0327024 insert Tau3Meson:Weights 30 0.0419226 insert Tau3Meson:Weights 31 0.0167711 insert Tau3Meson:Weights 32 0.0120033 insert Tau3Meson:Weights 33 0.0115421 insert Tau3Meson:Weights 34 0.0146998 insert Tau3Meson:Weights 35 0.0178288 insert Tau3Meson:Weights 36 0.092163 insert Tau3Meson:Weights 37 0.0352718 insert Tau3Meson:Weights 38 0.0748744 insert Tau3Meson:Weights 39 0.0301939 insert Tau3Meson:Weights 40 0.0322147 insert Tau3Meson:Weights 41 0.0278865 insert Tau3Meson:Weights 42 0.0307657 insert Tau3Meson:Weights 43 0.0228799 insert Tau3Meson:Weights 44 0.0410745 insert Tau3Meson:Weights 45 0.0352184 insert Tau3Meson:Weights 46 0.126465 insert Tau3Meson:Weights 47 0.0558902 insert Tau3Meson:Weights 48 0.0575038 insert Tau3Meson:Weights 49 0.0460989 insert Tau3Meson:Weights 50 0.0591858 insert Tau3Meson:Weights 51 0.0393511 insert Tau3Meson:Weights 52 0.0389725 insert Tau3Meson:Weights 53 0.0333812 insert Tau3Meson:Weights 54 0.0456822 insert Tau3Meson:Weights 55 0.0120992 insert Tau3Meson:Weights 56 0.0205657 insert Tau3Meson:Weights 57 0.0191712 insert Tau3Meson:Weights 58 0.0104958 insert Tau3Meson:Weights 59 0.0125942 insert Tau3Meson:Weights 60 0.310679 insert Tau3Meson:Weights 61 0.346809 insert Tau3Meson:Weights 62 0.342512 insert Tau3Meson:Weights 63 0.279959 insert Tau3Meson:Weights 64 0.280279 insert Tau3Meson:Weights 65 0.100825 insert Tau3Meson:Weights 66 0.104235 insert Tau3Meson:Weights 67 0.115519 insert Tau3Meson:Weights 68 0.119183 insert Tau3Meson:Weights 69 0.0778812 insert Tau3Meson:Weights 70 0.175849 insert Tau3Meson:Weights 71 0 insert Tau3Meson:Weights 72 0.00113936 insert Tau3Meson:Weights 73 0 insert Tau3Meson:Weights 74 0 insert Tau3Meson:Weights 75 0 insert Tau3Meson:Weights 76 0 insert Tau3Meson:Weights 77 0.0676567 insert Tau3Meson:Weights 78 0.0313336 insert Tau3Meson:Weights 79 0.0664466 insert Tau3Meson:Weights 80 0.155302 insert Tau3Meson:Weights 81 0.0605764 insert Tau3Meson:Weights 82 0.0290915 insert Tau3Meson:Weights 83 0.0568557 insert Tau3Meson:Weights 84 0.0386656 insert Tau3Meson:Weights 85 0.0670689 insert Tau3Meson:Weights 86 0.0452394 insert Tau3Meson:Weights 87 0.0205717 insert Tau3Meson:Weights 88 0.046472 insert Tau3Meson:Weights 89 0.0187449 insert Tau3Meson:Weights 90 0.0112861 insert Tau3Meson:Weights 91 0.0178605 insert Tau3Meson:Weights 92 0.0119587 insert Tau3Meson:Weights 93 0.175047 insert Tau3Meson:Weights 94 0 insert Tau3Meson:Weights 95 0 insert Tau3Meson:Weights 96 0 insert Tau3Meson:Weights 97 0 insert Tau3Meson:Weights 98 0 insert Tau3Meson:Weights 99 0 insert Tau3Meson:Weights 100 0.0951047 insert Tau3Meson:Weights 101 0.0607231 insert Tau3Meson:Weights 102 0.149574 insert Tau3Meson:Weights 103 0.047681 insert Tau3Meson:Weights 104 0.086911 insert Tau3Meson:Weights 105 0.0608936 insert Tau3Meson:Weights 106 0.0860992 insert Tau3Meson:Weights 107 0.0948901 insert Tau3Meson:Weights 108 0.0162714 insert Tau3Meson:Weights 109 0.0465904 insert Tau3Meson:Weights 110 0.0158736 insert Tau3Meson:Weights 111 0.0230031 insert Tau3Meson:Weights 112 0.0141563 insert Tau3Meson:Weights 113 0.0271811 insert Tau3Meson:Weights 114 0 insert Tau3Meson:Weights 115 0.0145273 insert Tau3Meson:Weights 116 0.0196866 insert Tau3Meson:Weights 117 0.235628 insert Tau3Meson:Weights 118 0.252616 insert Tau3Meson:Weights 119 0.322903 insert Tau3Meson:Weights 120 0.0446933 insert Tau3Meson:Weights 121 0.0469887 insert Tau3Meson:Weights 122 0.0629569 create Herwig::ThreeMesonDefaultCurrent Tau3MesonCurrent HwWeakCurrents.so newdef Tau3MesonCurrent:F123RhoWeight 0 1 newdef Tau3MesonCurrent:F123RhoWeight 1 -0.145 newdef Tau3MesonCurrent:F123RhoWeight 2 0 newdef Tau3MesonCurrent:F123KstarWeight 0 1 newdef Tau3MesonCurrent:F5RhoWeight 0 -26 newdef Tau3MesonCurrent:F5RhoWeight 1 6.5 newdef Tau3MesonCurrent:F5RhoWeight 2 1 newdef Tau3MesonCurrent:F5KstarWeight 0 1 newdef Tau3MesonCurrent:RhoKstarWgt -0.2 newdef Tau3MesonCurrent:Initializea1 0 newdef Tau3MesonCurrent:RhoParameters 1 newdef Tau3MesonCurrent:KstarParameters 1 newdef Tau3MesonCurrent:a1Parameters 1 newdef Tau3MesonCurrent:K1Parameters 1 newdef Tau3MesonCurrent:a1WidthOption 1 newdef Tau3MesonCurrent:a1RunningWidth 0 0 newdef Tau3MesonCurrent:a1RunningWidth 1 0 newdef Tau3MesonCurrent:a1RunningWidth 2 0 newdef Tau3MesonCurrent:a1RunningWidth 3 0 newdef Tau3MesonCurrent:a1RunningWidth 4 0 newdef Tau3MesonCurrent:a1RunningWidth 5 0 newdef Tau3MesonCurrent:a1RunningWidth 6 0 newdef Tau3MesonCurrent:a1RunningWidth 7 0 newdef Tau3MesonCurrent:a1RunningWidth 8 0 newdef Tau3MesonCurrent:a1RunningWidth 9 0 newdef Tau3MesonCurrent:a1RunningWidth 10 0 newdef Tau3MesonCurrent:a1RunningWidth 11 0 newdef Tau3MesonCurrent:a1RunningWidth 12 1.86294e-06 newdef Tau3MesonCurrent:a1RunningWidth 13 1.50328e-05 newdef Tau3MesonCurrent:a1RunningWidth 14 4.89793e-05 newdef Tau3MesonCurrent:a1RunningWidth 15 0.000111383 newdef Tau3MesonCurrent:a1RunningWidth 16 0.000208843 newdef Tau3MesonCurrent:a1RunningWidth 17 0.000347343 newdef Tau3MesonCurrent:a1RunningWidth 18 0.000532583 newdef Tau3MesonCurrent:a1RunningWidth 19 0.000770217 newdef Tau3MesonCurrent:a1RunningWidth 20 0.00106604 newdef Tau3MesonCurrent:a1RunningWidth 21 0.00142615 newdef Tau3MesonCurrent:a1RunningWidth 22 0.00185708 newdef Tau3MesonCurrent:a1RunningWidth 23 0.00236594 newdef Tau3MesonCurrent:a1RunningWidth 24 0.00296057 newdef Tau3MesonCurrent:a1RunningWidth 25 0.00364965 newdef Tau3MesonCurrent:a1RunningWidth 26 0.00444288 newdef Tau3MesonCurrent:a1RunningWidth 27 0.00535118 newdef Tau3MesonCurrent:a1RunningWidth 28 0.00638686 newdef Tau3MesonCurrent:a1RunningWidth 29 0.00756389 newdef Tau3MesonCurrent:a1RunningWidth 30 0.00889818 newdef Tau3MesonCurrent:a1RunningWidth 31 0.0104079 newdef Tau3MesonCurrent:a1RunningWidth 32 0.0121139 newdef Tau3MesonCurrent:a1RunningWidth 33 0.0140402 newdef Tau3MesonCurrent:a1RunningWidth 34 0.0162145 newdef Tau3MesonCurrent:a1RunningWidth 35 0.0186688 newdef Tau3MesonCurrent:a1RunningWidth 36 0.0214404 newdef Tau3MesonCurrent:a1RunningWidth 37 0.0245726 newdef Tau3MesonCurrent:a1RunningWidth 38 0.028116 newdef Tau3MesonCurrent:a1RunningWidth 39 0.0321292 newdef Tau3MesonCurrent:a1RunningWidth 40 0.0366808 newdef Tau3MesonCurrent:a1RunningWidth 41 0.0418495 newdef Tau3MesonCurrent:a1RunningWidth 42 0.0477266 newdef Tau3MesonCurrent:a1RunningWidth 43 0.0544146 newdef Tau3MesonCurrent:a1RunningWidth 44 0.0620264 newdef Tau3MesonCurrent:a1RunningWidth 45 0.0706815 newdef Tau3MesonCurrent:a1RunningWidth 46 0.0804982 newdef Tau3MesonCurrent:a1RunningWidth 47 0.0915795 newdef Tau3MesonCurrent:a1RunningWidth 48 0.103994 newdef Tau3MesonCurrent:a1RunningWidth 49 0.117753 newdef Tau3MesonCurrent:a1RunningWidth 50 0.132786 newdef Tau3MesonCurrent:a1RunningWidth 51 0.148934 newdef Tau3MesonCurrent:a1RunningWidth 52 0.165957 newdef Tau3MesonCurrent:a1RunningWidth 53 0.183564 newdef Tau3MesonCurrent:a1RunningWidth 54 0.201452 newdef Tau3MesonCurrent:a1RunningWidth 55 0.219345 newdef Tau3MesonCurrent:a1RunningWidth 56 0.237015 newdef Tau3MesonCurrent:a1RunningWidth 57 0.254291 newdef Tau3MesonCurrent:a1RunningWidth 58 0.271054 newdef Tau3MesonCurrent:a1RunningWidth 59 0.287234 newdef Tau3MesonCurrent:a1RunningWidth 60 0.30279 newdef Tau3MesonCurrent:a1RunningWidth 61 0.317709 newdef Tau3MesonCurrent:a1RunningWidth 62 0.331995 newdef Tau3MesonCurrent:a1RunningWidth 63 0.34566 newdef Tau3MesonCurrent:a1RunningWidth 64 0.358726 newdef Tau3MesonCurrent:a1RunningWidth 65 0.371218 newdef Tau3MesonCurrent:a1RunningWidth 66 0.383164 newdef Tau3MesonCurrent:a1RunningWidth 67 0.39459 newdef Tau3MesonCurrent:a1RunningWidth 68 0.405525 newdef Tau3MesonCurrent:a1RunningWidth 69 0.415994 newdef Tau3MesonCurrent:a1RunningWidth 70 0.426024 newdef Tau3MesonCurrent:a1RunningWidth 71 0.435639 newdef Tau3MesonCurrent:a1RunningWidth 72 0.444862 newdef Tau3MesonCurrent:a1RunningWidth 73 0.453714 newdef Tau3MesonCurrent:a1RunningWidth 74 0.462216 newdef Tau3MesonCurrent:a1RunningWidth 75 0.470388 newdef Tau3MesonCurrent:a1RunningWidth 76 0.478246 newdef Tau3MesonCurrent:a1RunningWidth 77 0.485808 newdef Tau3MesonCurrent:a1RunningWidth 78 0.493089 newdef Tau3MesonCurrent:a1RunningWidth 79 0.500105 newdef Tau3MesonCurrent:a1RunningWidth 80 0.506866 newdef Tau3MesonCurrent:a1RunningWidth 81 0.513388 newdef Tau3MesonCurrent:a1RunningWidth 82 0.519682 newdef Tau3MesonCurrent:a1RunningWidth 83 0.525761 newdef Tau3MesonCurrent:a1RunningWidth 84 0.53163 newdef Tau3MesonCurrent:a1RunningWidth 85 0.537307 newdef Tau3MesonCurrent:a1RunningWidth 86 0.542791 newdef Tau3MesonCurrent:a1RunningWidth 87 0.548099 newdef Tau3MesonCurrent:a1RunningWidth 88 0.553236 newdef Tau3MesonCurrent:a1RunningWidth 89 0.55821 newdef Tau3MesonCurrent:a1RunningWidth 90 0.563028 newdef Tau3MesonCurrent:a1RunningWidth 91 0.567696 newdef Tau3MesonCurrent:a1RunningWidth 92 0.572222 newdef Tau3MesonCurrent:a1RunningWidth 93 0.57661 newdef Tau3MesonCurrent:a1RunningWidth 94 0.580867 newdef Tau3MesonCurrent:a1RunningWidth 95 0.585001 newdef Tau3MesonCurrent:a1RunningWidth 96 0.589008 newdef Tau3MesonCurrent:a1RunningWidth 97 0.592901 newdef Tau3MesonCurrent:a1RunningWidth 98 0.596683 newdef Tau3MesonCurrent:a1RunningWidth 99 0.600356 newdef Tau3MesonCurrent:a1RunningWidth 100 0.60393 newdef Tau3MesonCurrent:a1RunningWidth 101 0.607396 newdef Tau3MesonCurrent:a1RunningWidth 102 0.61077 newdef Tau3MesonCurrent:a1RunningWidth 103 0.61405 newdef Tau3MesonCurrent:a1RunningWidth 104 0.617241 newdef Tau3MesonCurrent:a1RunningWidth 105 0.620345 newdef Tau3MesonCurrent:a1RunningWidth 106 0.623364 newdef Tau3MesonCurrent:a1RunningWidth 107 0.626304 newdef Tau3MesonCurrent:a1RunningWidth 108 0.629164 newdef Tau3MesonCurrent:a1RunningWidth 109 0.631948 newdef Tau3MesonCurrent:a1RunningWidth 110 0.634659 newdef Tau3MesonCurrent:a1RunningWidth 111 0.637299 newdef Tau3MesonCurrent:a1RunningWidth 112 0.639869 newdef Tau3MesonCurrent:a1RunningWidth 113 0.642374 newdef Tau3MesonCurrent:a1RunningWidth 114 0.644811 newdef Tau3MesonCurrent:a1RunningWidth 115 0.647187 newdef Tau3MesonCurrent:a1RunningWidth 116 0.649501 newdef Tau3MesonCurrent:a1RunningWidth 117 0.65177 newdef Tau3MesonCurrent:a1RunningWidth 118 0.654012 newdef Tau3MesonCurrent:a1RunningWidth 119 0.656107 newdef Tau3MesonCurrent:a1RunningWidth 120 0.658193 newdef Tau3MesonCurrent:a1RunningWidth 121 0.660228 newdef Tau3MesonCurrent:a1RunningWidth 122 0.662209 newdef Tau3MesonCurrent:a1RunningWidth 123 0.664128 newdef Tau3MesonCurrent:a1RunningWidth 124 0.666012 newdef Tau3MesonCurrent:a1RunningWidth 125 0.667902 newdef Tau3MesonCurrent:a1RunningWidth 126 0.669639 newdef Tau3MesonCurrent:a1RunningWidth 127 0.671385 newdef Tau3MesonCurrent:a1RunningWidth 128 0.673088 newdef Tau3MesonCurrent:a1RunningWidth 129 0.67475 newdef Tau3MesonCurrent:a1RunningWidth 130 0.676371 newdef Tau3MesonCurrent:a1RunningWidth 131 0.677952 newdef Tau3MesonCurrent:a1RunningWidth 132 0.679494 newdef Tau3MesonCurrent:a1RunningWidth 133 0.681018 newdef Tau3MesonCurrent:a1RunningWidth 134 0.682474 newdef Tau3MesonCurrent:a1RunningWidth 135 0.683903 newdef Tau3MesonCurrent:a1RunningWidth 136 0.685304 newdef Tau3MesonCurrent:a1RunningWidth 137 0.686671 newdef Tau3MesonCurrent:a1RunningWidth 138 0.688007 newdef Tau3MesonCurrent:a1RunningWidth 139 0.689312 newdef Tau3MesonCurrent:a1RunningWidth 140 0.690603 newdef Tau3MesonCurrent:a1RunningWidth 141 0.691833 newdef Tau3MesonCurrent:a1RunningWidth 142 0.69305 newdef Tau3MesonCurrent:a1RunningWidth 143 0.694241 newdef Tau3MesonCurrent:a1RunningWidth 144 0.695406 newdef Tau3MesonCurrent:a1RunningWidth 145 0.696544 newdef Tau3MesonCurrent:a1RunningWidth 146 0.697664 newdef Tau3MesonCurrent:a1RunningWidth 147 0.69875 newdef Tau3MesonCurrent:a1RunningWidth 148 0.699814 newdef Tau3MesonCurrent:a1RunningWidth 149 0.700858 newdef Tau3MesonCurrent:a1RunningWidth 150 0.701881 newdef Tau3MesonCurrent:a1RunningWidth 151 0.702876 newdef Tau3MesonCurrent:a1RunningWidth 152 0.703862 newdef Tau3MesonCurrent:a1RunningWidth 153 0.704824 newdef Tau3MesonCurrent:a1RunningWidth 154 0.705765 newdef Tau3MesonCurrent:a1RunningWidth 155 0.706689 newdef Tau3MesonCurrent:a1RunningWidth 156 0.707594 newdef Tau3MesonCurrent:a1RunningWidth 157 0.708521 newdef Tau3MesonCurrent:a1RunningWidth 158 0.709352 newdef Tau3MesonCurrent:a1RunningWidth 159 0.710207 newdef Tau3MesonCurrent:a1RunningWidth 160 0.711045 newdef Tau3MesonCurrent:a1RunningWidth 161 0.711869 newdef Tau3MesonCurrent:a1RunningWidth 162 0.712677 newdef Tau3MesonCurrent:a1RunningWidth 163 0.71347 newdef Tau3MesonCurrent:a1RunningWidth 164 0.714252 newdef Tau3MesonCurrent:a1RunningWidth 165 0.715018 newdef Tau3MesonCurrent:a1RunningWidth 166 0.715767 newdef Tau3MesonCurrent:a1RunningWidth 167 0.716508 newdef Tau3MesonCurrent:a1RunningWidth 168 0.717236 newdef Tau3MesonCurrent:a1RunningWidth 169 0.717955 newdef Tau3MesonCurrent:a1RunningWidth 170 0.718656 newdef Tau3MesonCurrent:a1RunningWidth 171 0.719346 newdef Tau3MesonCurrent:a1RunningWidth 172 0.720031 newdef Tau3MesonCurrent:a1RunningWidth 173 0.720697 newdef Tau3MesonCurrent:a1RunningWidth 174 0.721356 newdef Tau3MesonCurrent:a1RunningWidth 175 0.722005 newdef Tau3MesonCurrent:a1RunningWidth 176 0.722727 newdef Tau3MesonCurrent:a1RunningWidth 177 0.723274 newdef Tau3MesonCurrent:a1RunningWidth 178 0.72398 newdef Tau3MesonCurrent:a1RunningWidth 179 0.724506 newdef Tau3MesonCurrent:a1RunningWidth 180 0.725108 newdef Tau3MesonCurrent:a1RunningWidth 181 0.725702 newdef Tau3MesonCurrent:a1RunningWidth 182 0.726287 newdef Tau3MesonCurrent:a1RunningWidth 183 0.726863 newdef Tau3MesonCurrent:a1RunningWidth 184 0.727432 newdef Tau3MesonCurrent:a1RunningWidth 185 0.727993 newdef Tau3MesonCurrent:a1RunningWidth 186 0.728548 newdef Tau3MesonCurrent:a1RunningWidth 187 0.729107 newdef Tau3MesonCurrent:a1RunningWidth 188 0.729645 newdef Tau3MesonCurrent:a1RunningWidth 189 0.730166 newdef Tau3MesonCurrent:a1RunningWidth 190 0.730694 newdef Tau3MesonCurrent:a1RunningWidth 191 0.731201 newdef Tau3MesonCurrent:a1RunningWidth 192 0.731721 newdef Tau3MesonCurrent:a1RunningWidth 193 0.732228 newdef Tau3MesonCurrent:a1RunningWidth 194 0.732728 newdef Tau3MesonCurrent:a1RunningWidth 195 0.733223 newdef Tau3MesonCurrent:a1RunningWidth 196 0.733715 newdef Tau3MesonCurrent:a1RunningWidth 197 0.734195 newdef Tau3MesonCurrent:a1RunningWidth 198 0.734672 newdef Tau3MesonCurrent:a1RunningWidth 199 0.735142 newdef Tau3MesonCurrent:a1RunningQ2 0 0 newdef Tau3MesonCurrent:a1RunningQ2 1 0.0158678 newdef Tau3MesonCurrent:a1RunningQ2 2 0.0317356 newdef Tau3MesonCurrent:a1RunningQ2 3 0.0476034 newdef Tau3MesonCurrent:a1RunningQ2 4 0.0634712 newdef Tau3MesonCurrent:a1RunningQ2 5 0.079339 newdef Tau3MesonCurrent:a1RunningQ2 6 0.0952068 newdef Tau3MesonCurrent:a1RunningQ2 7 0.111075 newdef Tau3MesonCurrent:a1RunningQ2 8 0.126942 newdef Tau3MesonCurrent:a1RunningQ2 9 0.14281 newdef Tau3MesonCurrent:a1RunningQ2 10 0.158678 newdef Tau3MesonCurrent:a1RunningQ2 11 0.174546 newdef Tau3MesonCurrent:a1RunningQ2 12 0.190414 newdef Tau3MesonCurrent:a1RunningQ2 13 0.206281 newdef Tau3MesonCurrent:a1RunningQ2 14 0.222149 newdef Tau3MesonCurrent:a1RunningQ2 15 0.238017 newdef Tau3MesonCurrent:a1RunningQ2 16 0.253885 newdef Tau3MesonCurrent:a1RunningQ2 17 0.269753 newdef Tau3MesonCurrent:a1RunningQ2 18 0.285621 newdef Tau3MesonCurrent:a1RunningQ2 19 0.301488 newdef Tau3MesonCurrent:a1RunningQ2 20 0.317356 newdef Tau3MesonCurrent:a1RunningQ2 21 0.333224 newdef Tau3MesonCurrent:a1RunningQ2 22 0.349092 newdef Tau3MesonCurrent:a1RunningQ2 23 0.36496 newdef Tau3MesonCurrent:a1RunningQ2 24 0.380827 newdef Tau3MesonCurrent:a1RunningQ2 25 0.396695 newdef Tau3MesonCurrent:a1RunningQ2 26 0.412563 newdef Tau3MesonCurrent:a1RunningQ2 27 0.428431 newdef Tau3MesonCurrent:a1RunningQ2 28 0.444299 newdef Tau3MesonCurrent:a1RunningQ2 29 0.460166 newdef Tau3MesonCurrent:a1RunningQ2 30 0.476034 newdef Tau3MesonCurrent:a1RunningQ2 31 0.491902 newdef Tau3MesonCurrent:a1RunningQ2 32 0.50777 newdef Tau3MesonCurrent:a1RunningQ2 33 0.523638 newdef Tau3MesonCurrent:a1RunningQ2 34 0.539505 newdef Tau3MesonCurrent:a1RunningQ2 35 0.555373 newdef Tau3MesonCurrent:a1RunningQ2 36 0.571241 newdef Tau3MesonCurrent:a1RunningQ2 37 0.587109 newdef Tau3MesonCurrent:a1RunningQ2 38 0.602977 newdef Tau3MesonCurrent:a1RunningQ2 39 0.618844 newdef Tau3MesonCurrent:a1RunningQ2 40 0.634712 newdef Tau3MesonCurrent:a1RunningQ2 41 0.65058 newdef Tau3MesonCurrent:a1RunningQ2 42 0.666448 newdef Tau3MesonCurrent:a1RunningQ2 43 0.682316 newdef Tau3MesonCurrent:a1RunningQ2 44 0.698183 newdef Tau3MesonCurrent:a1RunningQ2 45 0.714051 newdef Tau3MesonCurrent:a1RunningQ2 46 0.729919 newdef Tau3MesonCurrent:a1RunningQ2 47 0.745787 newdef Tau3MesonCurrent:a1RunningQ2 48 0.761655 newdef Tau3MesonCurrent:a1RunningQ2 49 0.777523 newdef Tau3MesonCurrent:a1RunningQ2 50 0.79339 newdef Tau3MesonCurrent:a1RunningQ2 51 0.809258 newdef Tau3MesonCurrent:a1RunningQ2 52 0.825126 newdef Tau3MesonCurrent:a1RunningQ2 53 0.840994 newdef Tau3MesonCurrent:a1RunningQ2 54 0.856862 newdef Tau3MesonCurrent:a1RunningQ2 55 0.872729 newdef Tau3MesonCurrent:a1RunningQ2 56 0.888597 newdef Tau3MesonCurrent:a1RunningQ2 57 0.904465 newdef Tau3MesonCurrent:a1RunningQ2 58 0.920333 newdef Tau3MesonCurrent:a1RunningQ2 59 0.936201 newdef Tau3MesonCurrent:a1RunningQ2 60 0.952068 newdef Tau3MesonCurrent:a1RunningQ2 61 0.967936 newdef Tau3MesonCurrent:a1RunningQ2 62 0.983804 newdef Tau3MesonCurrent:a1RunningQ2 63 0.999672 newdef Tau3MesonCurrent:a1RunningQ2 64 1.01554 newdef Tau3MesonCurrent:a1RunningQ2 65 1.03141 newdef Tau3MesonCurrent:a1RunningQ2 66 1.04728 newdef Tau3MesonCurrent:a1RunningQ2 67 1.06314 newdef Tau3MesonCurrent:a1RunningQ2 68 1.07901 newdef Tau3MesonCurrent:a1RunningQ2 69 1.09488 newdef Tau3MesonCurrent:a1RunningQ2 70 1.11075 newdef Tau3MesonCurrent:a1RunningQ2 71 1.12661 newdef Tau3MesonCurrent:a1RunningQ2 72 1.14248 newdef Tau3MesonCurrent:a1RunningQ2 73 1.15835 newdef Tau3MesonCurrent:a1RunningQ2 74 1.17422 newdef Tau3MesonCurrent:a1RunningQ2 75 1.19009 newdef Tau3MesonCurrent:a1RunningQ2 76 1.20595 newdef Tau3MesonCurrent:a1RunningQ2 77 1.22182 newdef Tau3MesonCurrent:a1RunningQ2 78 1.23769 newdef Tau3MesonCurrent:a1RunningQ2 79 1.25356 newdef Tau3MesonCurrent:a1RunningQ2 80 1.26942 newdef Tau3MesonCurrent:a1RunningQ2 81 1.28529 newdef Tau3MesonCurrent:a1RunningQ2 82 1.30116 newdef Tau3MesonCurrent:a1RunningQ2 83 1.31703 newdef Tau3MesonCurrent:a1RunningQ2 84 1.3329 newdef Tau3MesonCurrent:a1RunningQ2 85 1.34876 newdef Tau3MesonCurrent:a1RunningQ2 86 1.36463 newdef Tau3MesonCurrent:a1RunningQ2 87 1.3805 newdef Tau3MesonCurrent:a1RunningQ2 88 1.39637 newdef Tau3MesonCurrent:a1RunningQ2 89 1.41223 newdef Tau3MesonCurrent:a1RunningQ2 90 1.4281 newdef Tau3MesonCurrent:a1RunningQ2 91 1.44397 newdef Tau3MesonCurrent:a1RunningQ2 92 1.45984 newdef Tau3MesonCurrent:a1RunningQ2 93 1.47571 newdef Tau3MesonCurrent:a1RunningQ2 94 1.49157 newdef Tau3MesonCurrent:a1RunningQ2 95 1.50744 newdef Tau3MesonCurrent:a1RunningQ2 96 1.52331 newdef Tau3MesonCurrent:a1RunningQ2 97 1.53918 newdef Tau3MesonCurrent:a1RunningQ2 98 1.55505 newdef Tau3MesonCurrent:a1RunningQ2 99 1.57091 newdef Tau3MesonCurrent:a1RunningQ2 100 1.58678 newdef Tau3MesonCurrent:a1RunningQ2 101 1.60265 newdef Tau3MesonCurrent:a1RunningQ2 102 1.61852 newdef Tau3MesonCurrent:a1RunningQ2 103 1.63438 newdef Tau3MesonCurrent:a1RunningQ2 104 1.65025 newdef Tau3MesonCurrent:a1RunningQ2 105 1.66612 newdef Tau3MesonCurrent:a1RunningQ2 106 1.68199 newdef Tau3MesonCurrent:a1RunningQ2 107 1.69786 newdef Tau3MesonCurrent:a1RunningQ2 108 1.71372 newdef Tau3MesonCurrent:a1RunningQ2 109 1.72959 newdef Tau3MesonCurrent:a1RunningQ2 110 1.74546 newdef Tau3MesonCurrent:a1RunningQ2 111 1.76133 newdef Tau3MesonCurrent:a1RunningQ2 112 1.77719 newdef Tau3MesonCurrent:a1RunningQ2 113 1.79306 newdef Tau3MesonCurrent:a1RunningQ2 114 1.80893 newdef Tau3MesonCurrent:a1RunningQ2 115 1.8248 newdef Tau3MesonCurrent:a1RunningQ2 116 1.84067 newdef Tau3MesonCurrent:a1RunningQ2 117 1.85653 newdef Tau3MesonCurrent:a1RunningQ2 118 1.8724 newdef Tau3MesonCurrent:a1RunningQ2 119 1.88827 newdef Tau3MesonCurrent:a1RunningQ2 120 1.90414 newdef Tau3MesonCurrent:a1RunningQ2 121 1.92 newdef Tau3MesonCurrent:a1RunningQ2 122 1.93587 newdef Tau3MesonCurrent:a1RunningQ2 123 1.95174 newdef Tau3MesonCurrent:a1RunningQ2 124 1.96761 newdef Tau3MesonCurrent:a1RunningQ2 125 1.98348 newdef Tau3MesonCurrent:a1RunningQ2 126 1.99934 newdef Tau3MesonCurrent:a1RunningQ2 127 2.01521 newdef Tau3MesonCurrent:a1RunningQ2 128 2.03108 newdef Tau3MesonCurrent:a1RunningQ2 129 2.04695 newdef Tau3MesonCurrent:a1RunningQ2 130 2.06281 newdef Tau3MesonCurrent:a1RunningQ2 131 2.07868 newdef Tau3MesonCurrent:a1RunningQ2 132 2.09455 newdef Tau3MesonCurrent:a1RunningQ2 133 2.11042 newdef Tau3MesonCurrent:a1RunningQ2 134 2.12629 newdef Tau3MesonCurrent:a1RunningQ2 135 2.14215 newdef Tau3MesonCurrent:a1RunningQ2 136 2.15802 newdef Tau3MesonCurrent:a1RunningQ2 137 2.17389 newdef Tau3MesonCurrent:a1RunningQ2 138 2.18976 newdef Tau3MesonCurrent:a1RunningQ2 139 2.20563 newdef Tau3MesonCurrent:a1RunningQ2 140 2.22149 newdef Tau3MesonCurrent:a1RunningQ2 141 2.23736 newdef Tau3MesonCurrent:a1RunningQ2 142 2.25323 newdef Tau3MesonCurrent:a1RunningQ2 143 2.2691 newdef Tau3MesonCurrent:a1RunningQ2 144 2.28496 newdef Tau3MesonCurrent:a1RunningQ2 145 2.30083 newdef Tau3MesonCurrent:a1RunningQ2 146 2.3167 newdef Tau3MesonCurrent:a1RunningQ2 147 2.33257 newdef Tau3MesonCurrent:a1RunningQ2 148 2.34844 newdef Tau3MesonCurrent:a1RunningQ2 149 2.3643 newdef Tau3MesonCurrent:a1RunningQ2 150 2.38017 newdef Tau3MesonCurrent:a1RunningQ2 151 2.39604 newdef Tau3MesonCurrent:a1RunningQ2 152 2.41191 newdef Tau3MesonCurrent:a1RunningQ2 153 2.42777 newdef Tau3MesonCurrent:a1RunningQ2 154 2.44364 newdef Tau3MesonCurrent:a1RunningQ2 155 2.45951 newdef Tau3MesonCurrent:a1RunningQ2 156 2.47538 newdef Tau3MesonCurrent:a1RunningQ2 157 2.49125 newdef Tau3MesonCurrent:a1RunningQ2 158 2.50711 newdef Tau3MesonCurrent:a1RunningQ2 159 2.52298 newdef Tau3MesonCurrent:a1RunningQ2 160 2.53885 newdef Tau3MesonCurrent:a1RunningQ2 161 2.55472 newdef Tau3MesonCurrent:a1RunningQ2 162 2.57058 newdef Tau3MesonCurrent:a1RunningQ2 163 2.58645 newdef Tau3MesonCurrent:a1RunningQ2 164 2.60232 newdef Tau3MesonCurrent:a1RunningQ2 165 2.61819 newdef Tau3MesonCurrent:a1RunningQ2 166 2.63406 newdef Tau3MesonCurrent:a1RunningQ2 167 2.64992 newdef Tau3MesonCurrent:a1RunningQ2 168 2.66579 newdef Tau3MesonCurrent:a1RunningQ2 169 2.68166 newdef Tau3MesonCurrent:a1RunningQ2 170 2.69753 newdef Tau3MesonCurrent:a1RunningQ2 171 2.71339 newdef Tau3MesonCurrent:a1RunningQ2 172 2.72926 newdef Tau3MesonCurrent:a1RunningQ2 173 2.74513 newdef Tau3MesonCurrent:a1RunningQ2 174 2.761 newdef Tau3MesonCurrent:a1RunningQ2 175 2.77687 newdef Tau3MesonCurrent:a1RunningQ2 176 2.79273 newdef Tau3MesonCurrent:a1RunningQ2 177 2.8086 newdef Tau3MesonCurrent:a1RunningQ2 178 2.82447 newdef Tau3MesonCurrent:a1RunningQ2 179 2.84034 newdef Tau3MesonCurrent:a1RunningQ2 180 2.85621 newdef Tau3MesonCurrent:a1RunningQ2 181 2.87207 newdef Tau3MesonCurrent:a1RunningQ2 182 2.88794 newdef Tau3MesonCurrent:a1RunningQ2 183 2.90381 newdef Tau3MesonCurrent:a1RunningQ2 184 2.91968 newdef Tau3MesonCurrent:a1RunningQ2 185 2.93554 newdef Tau3MesonCurrent:a1RunningQ2 186 2.95141 newdef Tau3MesonCurrent:a1RunningQ2 187 2.96728 newdef Tau3MesonCurrent:a1RunningQ2 188 2.98315 newdef Tau3MesonCurrent:a1RunningQ2 189 2.99902 newdef Tau3MesonCurrent:a1RunningQ2 190 3.01488 newdef Tau3MesonCurrent:a1RunningQ2 191 3.03075 newdef Tau3MesonCurrent:a1RunningQ2 192 3.04662 newdef Tau3MesonCurrent:a1RunningQ2 193 3.06249 newdef Tau3MesonCurrent:a1RunningQ2 194 3.07835 newdef Tau3MesonCurrent:a1RunningQ2 195 3.09422 newdef Tau3MesonCurrent:a1RunningQ2 196 3.11009 newdef Tau3MesonCurrent:a1RunningQ2 197 3.12596 newdef Tau3MesonCurrent:a1RunningQ2 198 3.14183 newdef Tau3MesonCurrent:a1RunningQ2 199 3.15769 newdef Tau3MesonCurrent:A1Width 0.599 newdef Tau3MesonCurrent:A1Mass 1.251 newdef Tau3MesonCurrent:K1Width 0.174 newdef Tau3MesonCurrent:K1Mass 1.402 newdef Tau3MesonCurrent:FPi 92.4189 newdef Tau3MesonCurrent:rhoF123masses 0 0.773 newdef Tau3MesonCurrent:rhoF123masses 1 1.37 newdef Tau3MesonCurrent:rhoF123masses 2 1.75 newdef Tau3MesonCurrent:rhoF123widths 0 0.145 newdef Tau3MesonCurrent:rhoF123widths 1 0.51 newdef Tau3MesonCurrent:rhoF123widths 2 0.12 newdef Tau3MesonCurrent:rhoF5masses 0 0.773 newdef Tau3MesonCurrent:rhoF5masses 1 1.5 newdef Tau3MesonCurrent:rhoF5masses 2 1.75 newdef Tau3MesonCurrent:rhoF5widths 0 0.145 newdef Tau3MesonCurrent:rhoF5widths 1 0.22 newdef Tau3MesonCurrent:rhoF5widths 2 0.12 newdef Tau3MesonCurrent:KstarF123masses 0 0.8921 insert Tau3MesonCurrent:KstarF123masses 1 1.414 insert Tau3MesonCurrent:KstarF123masses 2 1.717 newdef Tau3MesonCurrent:KstarF123widths 0 0.0513 insert Tau3MesonCurrent:KstarF123widths 1 0.232 insert Tau3MesonCurrent:KstarF123widths 2 0.322 newdef Tau3MesonCurrent:KstarF5masses 0 0.8921 insert Tau3MesonCurrent:KstarF5masses 1 1.414 insert Tau3MesonCurrent:KstarF5masses 2 1.717 newdef Tau3MesonCurrent:KstarF5widths 0 0.0513 insert Tau3MesonCurrent:KstarF5widths 1 0.232 insert Tau3MesonCurrent:KstarF5widths 2 0.322 newdef Tau3MesonCurrent:Quark 0 2 newdef Tau3MesonCurrent:AntiQuark 0 -1 newdef Tau3MesonCurrent:Quark 1 2 newdef Tau3MesonCurrent:AntiQuark 1 -1 newdef Tau3MesonCurrent:Quark 2 2 newdef Tau3MesonCurrent:AntiQuark 2 -1 newdef Tau3MesonCurrent:Quark 3 2 newdef Tau3MesonCurrent:AntiQuark 3 -1 newdef Tau3MesonCurrent:Quark 4 2 newdef Tau3MesonCurrent:AntiQuark 4 -1 newdef Tau3MesonCurrent:Quark 5 2 newdef Tau3MesonCurrent:AntiQuark 5 -3 newdef Tau3MesonCurrent:Quark 6 2 newdef Tau3MesonCurrent:AntiQuark 6 -3 newdef Tau3MesonCurrent:Quark 7 2 newdef Tau3MesonCurrent:AntiQuark 7 -3 newdef Tau3MesonCurrent:Quark 8 2 newdef Tau3MesonCurrent:AntiQuark 8 -1 newdef Tau3MesonCurrent:Quark 9 2 newdef Tau3MesonCurrent:AntiQuark 9 -1 newdef Tau3MesonCurrent:Quark 10 2 newdef Tau3MesonCurrent:AntiQuark 10 -1 newdef Tau3MesonCurrent:Quark 11 2 newdef Tau3MesonCurrent:AntiQuark 11 -1 newdef Tau3Meson:WeakCurrent Tau3MesonCurrent # create Herwig::VectorMeson2FermionDecayer Vector2Leptons newdef Vector2Leptons:Iteration 1 newdef Vector2Leptons:Ntry 500 newdef Vector2Leptons:Points 10000 newdef Vector2Leptons:GenerateIntermediates 0 newdef Vector2Leptons:Incoming 0 113 newdef Vector2Leptons:OutgoingFermion 0 11 newdef Vector2Leptons:OutgoingAntiFermion 0 -11 newdef Vector2Leptons:Coupling 0 0.018524 newdef Vector2Leptons:MaxWeight 0 1.60839 newdef Vector2Leptons:Incoming 1 113 newdef Vector2Leptons:OutgoingFermion 1 13 newdef Vector2Leptons:OutgoingAntiFermion 1 -13 newdef Vector2Leptons:Coupling 1 0.018524 newdef Vector2Leptons:MaxWeight 1 1.60498 newdef Vector2Leptons:Incoming 2 223 newdef Vector2Leptons:OutgoingFermion 2 11 newdef Vector2Leptons:OutgoingAntiFermion 2 -11 newdef Vector2Leptons:Coupling 2 0.005429 newdef Vector2Leptons:MaxWeight 2 1.60161 newdef Vector2Leptons:Incoming 3 223 newdef Vector2Leptons:OutgoingFermion 3 13 newdef Vector2Leptons:OutgoingAntiFermion 3 -13 newdef Vector2Leptons:Coupling 3 0.005429 newdef Vector2Leptons:MaxWeight 3 1.59833 newdef Vector2Leptons:Incoming 4 333 newdef Vector2Leptons:OutgoingFermion 4 11 newdef Vector2Leptons:OutgoingAntiFermion 4 -11 newdef Vector2Leptons:Coupling 4 0.006852 newdef Vector2Leptons:MaxWeight 4 1.60556 newdef Vector2Leptons:Incoming 5 333 newdef Vector2Leptons:OutgoingFermion 5 13 newdef Vector2Leptons:OutgoingAntiFermion 5 -13 newdef Vector2Leptons:Coupling 5 0.006852 newdef Vector2Leptons:MaxWeight 5 1.60986 newdef Vector2Leptons:Incoming 6 30443 newdef Vector2Leptons:OutgoingFermion 6 11 newdef Vector2Leptons:OutgoingAntiFermion 6 -11 newdef Vector2Leptons:Coupling 6 0.00159 newdef Vector2Leptons:MaxWeight 6 1.5993 newdef Vector2Leptons:Incoming 7 30443 newdef Vector2Leptons:OutgoingFermion 7 13 newdef Vector2Leptons:OutgoingAntiFermion 7 -13 newdef Vector2Leptons:Coupling 7 0.001509 newdef Vector2Leptons:MaxWeight 7 1.4405 newdef Vector2Leptons:Incoming 8 30443 newdef Vector2Leptons:OutgoingFermion 8 15 newdef Vector2Leptons:OutgoingAntiFermion 8 -15 newdef Vector2Leptons:Coupling 8 0.001509 newdef Vector2Leptons:MaxWeight 8 1.53038 newdef Vector2Leptons:Incoming 9 443 newdef Vector2Leptons:OutgoingFermion 9 11 newdef Vector2Leptons:OutgoingAntiFermion 9 -11 newdef Vector2Leptons:Coupling 9 0.008215 newdef Vector2Leptons:MaxWeight 9 1.60017 newdef Vector2Leptons:Incoming 10 443 newdef Vector2Leptons:OutgoingFermion 10 13 newdef Vector2Leptons:OutgoingAntiFermion 10 -13 newdef Vector2Leptons:Coupling 10 0.008215 newdef Vector2Leptons:MaxWeight 10 1.60016 newdef Vector2Leptons:Incoming 11 100443 newdef Vector2Leptons:OutgoingFermion 11 11 newdef Vector2Leptons:OutgoingAntiFermion 11 -11 newdef Vector2Leptons:Coupling 11 0.005031 newdef Vector2Leptons:MaxWeight 11 1.59862 newdef Vector2Leptons:Incoming 12 100443 newdef Vector2Leptons:OutgoingFermion 12 13 newdef Vector2Leptons:OutgoingAntiFermion 12 -13 newdef Vector2Leptons:Coupling 12 0.005031 newdef Vector2Leptons:MaxWeight 12 1.6008 newdef Vector2Leptons:Incoming 13 100443 newdef Vector2Leptons:OutgoingFermion 13 15 newdef Vector2Leptons:OutgoingAntiFermion 13 -15 newdef Vector2Leptons:Coupling 13 0.005031 newdef Vector2Leptons:MaxWeight 13 1.60219 newdef Vector2Leptons:Incoming 14 553 newdef Vector2Leptons:OutgoingFermion 14 11 newdef Vector2Leptons:OutgoingAntiFermion 14 -11 newdef Vector2Leptons:Coupling 14 0.002315 newdef Vector2Leptons:MaxWeight 14 1.6003 newdef Vector2Leptons:Incoming 15 553 newdef Vector2Leptons:OutgoingFermion 15 13 newdef Vector2Leptons:OutgoingAntiFermion 15 -13 newdef Vector2Leptons:Coupling 15 0.002315 newdef Vector2Leptons:MaxWeight 15 1.6003 newdef Vector2Leptons:Incoming 16 553 newdef Vector2Leptons:OutgoingFermion 16 15 newdef Vector2Leptons:OutgoingAntiFermion 16 -15 newdef Vector2Leptons:Coupling 16 0.002315 newdef Vector2Leptons:MaxWeight 16 1.6006 newdef Vector2Leptons:Incoming 17 100553 newdef Vector2Leptons:OutgoingFermion 17 11 newdef Vector2Leptons:OutgoingAntiFermion 17 -11 newdef Vector2Leptons:Coupling 17 0.00152 newdef Vector2Leptons:MaxWeight 17 1.60068 newdef Vector2Leptons:Incoming 18 100553 newdef Vector2Leptons:OutgoingFermion 18 13 newdef Vector2Leptons:OutgoingAntiFermion 18 -13 newdef Vector2Leptons:Coupling 18 0.00152 newdef Vector2Leptons:MaxWeight 18 1.60068 newdef Vector2Leptons:Incoming 19 100553 newdef Vector2Leptons:OutgoingFermion 19 15 newdef Vector2Leptons:OutgoingAntiFermion 19 -15 newdef Vector2Leptons:Coupling 19 0.00152 newdef Vector2Leptons:MaxWeight 19 1.60751 newdef Vector2Leptons:Incoming 20 200553 newdef Vector2Leptons:OutgoingFermion 20 11 newdef Vector2Leptons:OutgoingAntiFermion 20 -11 newdef Vector2Leptons:Coupling 20 0.00127 newdef Vector2Leptons:MaxWeight 20 1.6002 newdef Vector2Leptons:Incoming 21 200553 newdef Vector2Leptons:OutgoingFermion 21 13 newdef Vector2Leptons:OutgoingAntiFermion 21 -13 newdef Vector2Leptons:Coupling 21 0.00127 newdef Vector2Leptons:MaxWeight 21 1.6002 newdef Vector2Leptons:Incoming 22 200553 newdef Vector2Leptons:OutgoingFermion 22 15 newdef Vector2Leptons:OutgoingAntiFermion 22 -15 newdef Vector2Leptons:Coupling 22 0.00127 newdef Vector2Leptons:MaxWeight 22 1.60626 newdef Vector2Leptons:Incoming 23 300553 newdef Vector2Leptons:OutgoingFermion 23 11 newdef Vector2Leptons:OutgoingAntiFermion 23 -11 newdef Vector2Leptons:Coupling 23 0.001081 newdef Vector2Leptons:MaxWeight 23 1.59966 newdef Vector2Leptons:Incoming 24 300553 newdef Vector2Leptons:OutgoingFermion 24 13 newdef Vector2Leptons:OutgoingAntiFermion 24 -13 newdef Vector2Leptons:Coupling 24 0.001081 newdef Vector2Leptons:MaxWeight 24 1.59966 newdef Vector2Leptons:Incoming 25 300553 newdef Vector2Leptons:OutgoingFermion 25 15 newdef Vector2Leptons:OutgoingAntiFermion 25 -15 newdef Vector2Leptons:Coupling 25 0.001081 newdef Vector2Leptons:MaxWeight 25 1.59171 newdef Vector2Leptons:Incoming 26 443 newdef Vector2Leptons:OutgoingFermion 26 2212 newdef Vector2Leptons:OutgoingAntiFermion 26 -2212 newdef Vector2Leptons:Coupling 26 0.001619 newdef Vector2Leptons:MaxWeight 26 1.60048 newdef Vector2Leptons:Incoming 27 443 newdef Vector2Leptons:OutgoingFermion 27 2112 newdef Vector2Leptons:OutgoingAntiFermion 27 -2112 newdef Vector2Leptons:Coupling 27 0.001619 newdef Vector2Leptons:MaxWeight 27 1.59988 newdef Vector2Leptons:Incoming 28 443 newdef Vector2Leptons:OutgoingFermion 28 3112 newdef Vector2Leptons:OutgoingAntiFermion 28 -3112 newdef Vector2Leptons:Coupling 28 0.001342 newdef Vector2Leptons:MaxWeight 28 1.5934 newdef Vector2Leptons:Incoming 29 443 newdef Vector2Leptons:OutgoingFermion 29 3212 newdef Vector2Leptons:OutgoingAntiFermion 29 -3212 newdef Vector2Leptons:Coupling 29 0.001342 newdef Vector2Leptons:MaxWeight 29 1.60002 newdef Vector2Leptons:Incoming 30 443 newdef Vector2Leptons:OutgoingFermion 30 3222 newdef Vector2Leptons:OutgoingAntiFermion 30 -3222 newdef Vector2Leptons:Coupling 30 0.001342 newdef Vector2Leptons:MaxWeight 30 1.60426 newdef Vector2Leptons:Incoming 31 443 newdef Vector2Leptons:OutgoingFermion 31 3322 newdef Vector2Leptons:OutgoingAntiFermion 31 -3322 newdef Vector2Leptons:Coupling 31 0.001196 newdef Vector2Leptons:MaxWeight 31 1.60709 newdef Vector2Leptons:Incoming 32 443 newdef Vector2Leptons:OutgoingFermion 32 3312 newdef Vector2Leptons:OutgoingAntiFermion 32 -3312 newdef Vector2Leptons:Coupling 32 0.001196 newdef Vector2Leptons:MaxWeight 32 1.59079 newdef Vector2Leptons:Incoming 33 443 newdef Vector2Leptons:OutgoingFermion 33 3122 newdef Vector2Leptons:OutgoingAntiFermion 33 -3122 newdef Vector2Leptons:Coupling 33 0.001416 newdef Vector2Leptons:MaxWeight 33 1.60033 newdef Vector2Leptons:Incoming 34 100443 newdef Vector2Leptons:OutgoingFermion 34 2212 newdef Vector2Leptons:OutgoingAntiFermion 34 -2212 newdef Vector2Leptons:Coupling 34 0.0009692 newdef Vector2Leptons:MaxWeight 34 1.59987 newdef Vector2Leptons:Incoming 35 100443 newdef Vector2Leptons:OutgoingFermion 35 2112 newdef Vector2Leptons:OutgoingAntiFermion 35 -2112 newdef Vector2Leptons:Coupling 35 0.0009692 newdef Vector2Leptons:MaxWeight 35 1.5996 newdef Vector2Leptons:Incoming 36 100443 newdef Vector2Leptons:OutgoingFermion 36 3112 newdef Vector2Leptons:OutgoingAntiFermion 36 -3112 newdef Vector2Leptons:Coupling 36 0.0009273 newdef Vector2Leptons:MaxWeight 36 1.5978 newdef Vector2Leptons:Incoming 37 100443 newdef Vector2Leptons:OutgoingFermion 37 3212 newdef Vector2Leptons:OutgoingAntiFermion 37 -3212 newdef Vector2Leptons:Coupling 37 0.0009273 newdef Vector2Leptons:MaxWeight 37 1.60027 newdef Vector2Leptons:Incoming 38 100443 newdef Vector2Leptons:OutgoingFermion 38 3222 newdef Vector2Leptons:OutgoingAntiFermion 38 -3222 newdef Vector2Leptons:Coupling 38 0.0009273 newdef Vector2Leptons:MaxWeight 38 1.60186 newdef Vector2Leptons:Incoming 39 100443 newdef Vector2Leptons:OutgoingFermion 39 3322 newdef Vector2Leptons:OutgoingAntiFermion 39 -3322 newdef Vector2Leptons:Coupling 39 0.0008862 newdef Vector2Leptons:MaxWeight 39 1.6024 newdef Vector2Leptons:Incoming 40 100443 newdef Vector2Leptons:OutgoingFermion 40 3312 newdef Vector2Leptons:OutgoingAntiFermion 40 -3312 newdef Vector2Leptons:Coupling 40 0.0008862 newdef Vector2Leptons:MaxWeight 40 1.59743 newdef Vector2Leptons:Incoming 41 100443 newdef Vector2Leptons:OutgoingFermion 41 3122 newdef Vector2Leptons:OutgoingAntiFermion 41 -3122 newdef Vector2Leptons:Coupling 41 0.0009565 newdef Vector2Leptons:MaxWeight 41 1.59998 # create Herwig::WeakPartonicDecayer WeakPartonic0 newdef WeakPartonic0:PartonSplitter /Herwig/Hadronization/PartonSplitter newdef WeakPartonic0:ClusterFinder /Herwig/Hadronization/ClusterFinder newdef WeakPartonic0:ClusterFissioner /Herwig/Hadronization/ClusterFissioner newdef WeakPartonic0:LightClusterDecayer /Herwig/Hadronization/LightClusterDecayer newdef WeakPartonic0:ClusterDecayer /Herwig/Hadronization/ClusterDecayer newdef WeakPartonic0:Exclusive 1 newdef WeakPartonic0:Intermediates 0 newdef WeakPartonic0:Partonic_Tries 100 newdef WeakPartonic0:MECode 0 # create Herwig::WeakPartonicDecayer WeakPartonic100 newdef WeakPartonic100:PartonSplitter /Herwig/Hadronization/PartonSplitter newdef WeakPartonic100:ClusterFinder /Herwig/Hadronization/ClusterFinder newdef WeakPartonic100:ClusterFissioner /Herwig/Hadronization/ClusterFissioner newdef WeakPartonic100:LightClusterDecayer /Herwig/Hadronization/LightClusterDecayer newdef WeakPartonic100:ClusterDecayer /Herwig/Hadronization/ClusterDecayer newdef WeakPartonic100:Exclusive 1 newdef WeakPartonic100:Intermediates 0 newdef WeakPartonic100:Partonic_Tries 100 newdef WeakPartonic100:MECode 100 # create Herwig::VectorMesonPScalarFermionsDecayer VectorVPff newdef VectorVPff:Iteration 5 newdef VectorVPff:Ntry 500 newdef VectorVPff:Points 10000 newdef VectorVPff:GenerateIntermediates 0 newdef VectorVPff:Incoming 0 223 newdef VectorVPff:OutgoingPseudoScalar 0 111 newdef VectorVPff:OutgoingFermion 0 11 newdef VectorVPff:OutgoingAntiFermion 0 -11 newdef VectorVPff:Coupling 0 0.0002179 newdef VectorVPff:MaxWeight 0 3.9008 newdef VectorVPff:Weight 0 0 newdef VectorVPff:IncludeVMD 0 2 newdef VectorVPff:VMDID 0 113 newdef VectorVPff:VMDmass 0 775.8 newdef VectorVPff:VMDwidth 0 150.3 newdef VectorVPff:Incoming 1 223 newdef VectorVPff:OutgoingPseudoScalar 1 111 newdef VectorVPff:OutgoingFermion 1 13 newdef VectorVPff:OutgoingAntiFermion 1 -13 newdef VectorVPff:Coupling 1 0.0002179 newdef VectorVPff:MaxWeight 1 2.70723 newdef VectorVPff:Weight 1 0 newdef VectorVPff:IncludeVMD 1 2 newdef VectorVPff:VMDID 1 113 newdef VectorVPff:VMDmass 1 775.8 newdef VectorVPff:VMDwidth 1 150.3 newdef VectorVPff:Incoming 2 333 newdef VectorVPff:OutgoingPseudoScalar 2 221 newdef VectorVPff:OutgoingFermion 2 11 newdef VectorVPff:OutgoingAntiFermion 2 -11 newdef VectorVPff:Coupling 2 6.43e-05 newdef VectorVPff:MaxWeight 2 3.6661 newdef VectorVPff:Weight 2 0 newdef VectorVPff:IncludeVMD 2 2 newdef VectorVPff:VMDID 2 113 newdef VectorVPff:VMDmass 2 775.8 newdef VectorVPff:VMDwidth 2 150.3 newdef VectorVPff:Incoming 3 333 newdef VectorVPff:OutgoingPseudoScalar 3 221 newdef VectorVPff:OutgoingFermion 3 13 newdef VectorVPff:OutgoingAntiFermion 3 -13 newdef VectorVPff:Coupling 3 6.43e-05 newdef VectorVPff:MaxWeight 3 2.70487 newdef VectorVPff:Weight 3 0 newdef VectorVPff:IncludeVMD 3 2 newdef VectorVPff:VMDID 3 113 newdef VectorVPff:VMDmass 3 775.8 newdef VectorVPff:VMDwidth 3 150.3 newdef VectorVPff:Incoming 4 333 newdef VectorVPff:OutgoingPseudoScalar 4 111 newdef VectorVPff:OutgoingFermion 4 11 newdef VectorVPff:OutgoingAntiFermion 4 -11 newdef VectorVPff:Coupling 4 1.20094e-05 newdef VectorVPff:MaxWeight 4 4.80884 newdef VectorVPff:Weight 4 0.216528 newdef VectorVPff:IncludeVMD 4 2 newdef VectorVPff:VMDID 4 113 newdef VectorVPff:VMDmass 4 775.8 newdef VectorVPff:VMDwidth 4 150.3 newdef VectorVPff:Incoming 5 333 newdef VectorVPff:OutgoingPseudoScalar 5 111 newdef VectorVPff:OutgoingFermion 5 13 newdef VectorVPff:OutgoingAntiFermion 5 -13 newdef VectorVPff:Coupling 5 1.20094e-05 newdef VectorVPff:MaxWeight 5 3.10323 newdef VectorVPff:Weight 5 0.330441 newdef VectorVPff:IncludeVMD 5 2 newdef VectorVPff:VMDID 5 113 newdef VectorVPff:VMDmass 5 775.8 newdef VectorVPff:VMDwidth 5 150.3 # create Herwig::VectorMeson3PionDecayer Vector3Pion newdef Vector3Pion:Iteration 5 newdef Vector3Pion:Ntry 500 newdef Vector3Pion:Points 10000 newdef Vector3Pion:GenerateIntermediates 1 newdef Vector3Pion:Incoming 0 223 newdef Vector3Pion:Coupling 0 178.71 newdef Vector3Pion:DirectCoupling 0 0 newdef Vector3Pion:Rho2Coupling 0 0 newdef Vector3Pion:Rho3Coupling 0 0 newdef Vector3Pion:DirectPhase 0 0 newdef Vector3Pion:Rho2Phase 0 0 newdef Vector3Pion:Rho3Phase 0 0 newdef Vector3Pion:MaxWeight 0 16. newdef Vector3Pion:Rho1Weight 0 0.333333 newdef Vector3Pion:Rho2Weight 0 -1 newdef Vector3Pion:Rho3Weight 0 -1 newdef Vector3Pion:Rho1Mass 0 0.7755 newdef Vector3Pion:Rho2Mass 0 1.459 newdef Vector3Pion:Rho3Mass 0 1.72 newdef Vector3Pion:Rho1Width 0 0.1494 newdef Vector3Pion:Rho2Width 0 0.147 newdef Vector3Pion:Rho3Width 0 0.25 newdef Vector3Pion:DefaultParameters 0 1 newdef Vector3Pion:Incoming 1 333 newdef Vector3Pion:Coupling 1 8.788 newdef Vector3Pion:DirectCoupling 1 0.78 newdef Vector3Pion:Rho2Coupling 1 0 newdef Vector3Pion:Rho3Coupling 1 0 newdef Vector3Pion:DirectPhase 1 -2.47 newdef Vector3Pion:Rho2Phase 1 0 newdef Vector3Pion:Rho3Phase 1 0 newdef Vector3Pion:MaxWeight 1 16. newdef Vector3Pion:Rho1Weight 1 0.333333 newdef Vector3Pion:Rho2Weight 1 -1 newdef Vector3Pion:Rho3Weight 1 -1 newdef Vector3Pion:Rho1Mass 1 0.7758 newdef Vector3Pion:Rho2Mass 1 1.45 newdef Vector3Pion:Rho3Mass 1 1.7 newdef Vector3Pion:Rho1Width 1 0.1439 newdef Vector3Pion:Rho2Width 1 0.31 newdef Vector3Pion:Rho3Width 1 0.24 newdef Vector3Pion:DefaultParameters 1 0 # create Herwig::a1ThreePionCLEODecayer a1CLEO newdef a1CLEO:Iteration 5 newdef a1CLEO:Ntry 500 newdef a1CLEO:Points 10000 newdef a1CLEO:GenerateIntermediates 1 newdef a1CLEO:f_2Mass 1.275 newdef a1CLEO:f_2Width 0.185 newdef a1CLEO:f_0Mass 1.186 newdef a1CLEO:f_0Width 0.35 newdef a1CLEO:sigmaMass 0.86 newdef a1CLEO:sigmaWidth 0.88 newdef a1CLEO:RhoMasses 0 0.7743 newdef a1CLEO:RhoMasses 1 1.37 insert a1CLEO:RhoMasses 2 1.72 newdef a1CLEO:RhoWidths 0 0.1491 newdef a1CLEO:RhoWidths 1 0.386 insert a1CLEO:RhoWidths 2 0.25 newdef a1CLEO:f0Phase -1.69646 newdef a1CLEO:f2Phase 1.75929 newdef a1CLEO:sigmaPhase 0.722566 newdef a1CLEO:f0Magnitude 0.77 newdef a1CLEO:f2Magnitude 0.71 newdef a1CLEO:sigmaMagnitude 2.1 newdef a1CLEO:Coupling 45.57 newdef a1CLEO:RhoPWaveMagnitude 0 1 newdef a1CLEO:RhoPWaveMagnitude 1 0.12 newdef a1CLEO:RhoPWavePhase 0 0 newdef a1CLEO:RhoPWavePhase 1 3.11018 newdef a1CLEO:RhoDWaveMagnitude 0 3.7e-07 newdef a1CLEO:RhoDWaveMagnitude 1 8.7e-07 newdef a1CLEO:RhoDWavePhase 0 -0.471239 newdef a1CLEO:RhoDWavePhase 1 1.66504 newdef a1CLEO:LocalParameters 1 newdef a1CLEO:AllNeutralWeights 0 0.132162 newdef a1CLEO:AllNeutralWeights 1 0.116638 newdef a1CLEO:AllNeutralWeights 2 0.121088 newdef a1CLEO:AllNeutralWeights 3 0.10656 newdef a1CLEO:AllNeutralWeights 4 0.102577 newdef a1CLEO:AllNeutralWeights 5 0.101169 newdef a1CLEO:AllNeutralWeights 6 0.104587 newdef a1CLEO:AllNeutralWeights 7 0.104663 newdef a1CLEO:AllNeutralWeights 8 0.110557 newdef a1CLEO:OneChargedWeights 0 0.177017 newdef a1CLEO:OneChargedWeights 1 0.176011 newdef a1CLEO:OneChargedWeights 2 0.110129 newdef a1CLEO:OneChargedWeights 3 0.108023 newdef a1CLEO:OneChargedWeights 4 0.110553 newdef a1CLEO:OneChargedWeights 5 0.109976 newdef a1CLEO:OneChargedWeights 6 0.0886337 newdef a1CLEO:OneChargedWeights 7 0.0591042 newdef a1CLEO:OneChargedWeights 8 0.0605533 newdef a1CLEO:TwoChargedWeights 0 0.173357 newdef a1CLEO:TwoChargedWeights 1 0.172283 newdef a1CLEO:TwoChargedWeights 2 0.116031 newdef a1CLEO:TwoChargedWeights 3 0.114642 newdef a1CLEO:TwoChargedWeights 4 0.109058 newdef a1CLEO:TwoChargedWeights 5 0.114073 newdef a1CLEO:TwoChargedWeights 6 0.0809455 newdef a1CLEO:TwoChargedWeights 7 0.0601352 newdef a1CLEO:TwoChargedWeights 8 0.059477 newdef a1CLEO:ThreeChargedWeights 0 0.125022 newdef a1CLEO:ThreeChargedWeights 1 0.129911 newdef a1CLEO:ThreeChargedWeights 2 0.0741652 newdef a1CLEO:ThreeChargedWeights 3 0.0758126 newdef a1CLEO:ThreeChargedWeights 4 0.0711541 newdef a1CLEO:ThreeChargedWeights 5 0.0777299 newdef a1CLEO:ThreeChargedWeights 6 0.0822551 newdef a1CLEO:ThreeChargedWeights 7 0.0867606 newdef a1CLEO:ThreeChargedWeights 8 0.0671056 newdef a1CLEO:ThreeChargedWeights 9 0.0701714 newdef a1CLEO:ThreeChargedWeights 10 0.0701456 newdef a1CLEO:ThreeChargedWeights 11 0.0697667 newdef a1CLEO:ZeroMax 13.0704 newdef a1CLEO:OneMax 6.91104 newdef a1CLEO:TwoMax 6.94654 newdef a1CLEO:ThreeMax 6.40086 # create Herwig::PScalarVectorVectorDecayer PVV newdef PVV:Iteration 1 newdef PVV:Ntry 500 newdef PVV:Points 10000 newdef PVV:GenerateIntermediates 0 newdef PVV:Incoming 0 331 newdef PVV:FirstOutgoing 0 223 newdef PVV:SecondOutgoing 0 22 newdef PVV:Coupling 0 0.1412 newdef PVV:MaxWeight 0 1.17937 newdef PVV:Incoming 1 111 newdef PVV:FirstOutgoing 1 22 newdef PVV:SecondOutgoing 1 22 newdef PVV:Coupling 1 0.0178 newdef PVV:MaxWeight 1 1.08444 newdef PVV:Incoming 2 221 newdef PVV:FirstOutgoing 2 22 newdef PVV:SecondOutgoing 2 22 newdef PVV:Coupling 2 0.0176 newdef PVV:MaxWeight 2 1.08656 newdef PVV:Incoming 3 331 newdef PVV:FirstOutgoing 3 22 newdef PVV:SecondOutgoing 3 22 newdef PVV:Coupling 3 0.0221 newdef PVV:MaxWeight 3 1.09105 newdef PVV:Incoming 4 441 newdef PVV:FirstOutgoing 4 213 newdef PVV:SecondOutgoing 4 -213 newdef PVV:Coupling 4 0.0525 newdef PVV:MaxWeight 4 2.6 newdef PVV:Incoming 5 441 newdef PVV:FirstOutgoing 5 113 newdef PVV:SecondOutgoing 5 113 newdef PVV:Coupling 5 0.0371 newdef PVV:MaxWeight 5 2.63569 newdef PVV:Incoming 6 441 newdef PVV:FirstOutgoing 6 333 newdef PVV:SecondOutgoing 6 333 newdef PVV:Coupling 6 0.0267 newdef PVV:MaxWeight 6 8.54466 newdef PVV:Incoming 7 441 newdef PVV:FirstOutgoing 7 22 newdef PVV:SecondOutgoing 7 22 newdef PVV:Coupling 7 0.00521 newdef PVV:MaxWeight 7 1.10127 newdef PVV:Incoming 8 441 newdef PVV:FirstOutgoing 8 323 newdef PVV:SecondOutgoing 8 -323 newdef PVV:Coupling 8 0.0308 newdef PVV:MaxWeight 8 5.0763 newdef PVV:Incoming 9 441 newdef PVV:FirstOutgoing 9 313 newdef PVV:SecondOutgoing 9 -313 newdef PVV:Coupling 9 0.0308 newdef PVV:MaxWeight 9 5.22846 # create Herwig::PScalarVectorFermionsDecayer PVff newdef PVff:Iteration 1 newdef PVff:Ntry 500 newdef PVff:Points 10000 newdef PVff:GenerateIntermediates 0 newdef PVff:Incoming 0 111 newdef PVff:OutgoingVector 0 22 newdef PVff:OutgoingFermion 0 11 newdef PVff:OutgoingAntiFermion 0 -11 newdef PVff:Coupling 0 7.61872e-06 newdef PVff:MaxWeight 0 0.0267854 newdef PVff:IncludeVMD 0 2 newdef PVff:VMDID 0 113 newdef PVff:VMDmass 0 775.8 newdef PVff:VMDwidth 0 150.3 newdef PVff:Incoming 1 221 newdef PVff:OutgoingVector 1 22 newdef PVff:OutgoingFermion 1 11 newdef PVff:OutgoingAntiFermion 1 -11 newdef PVff:Coupling 1 7.55416e-06 newdef PVff:MaxWeight 1 2.77772 newdef PVff:IncludeVMD 1 2 newdef PVff:VMDID 1 113 newdef PVff:VMDmass 1 775.8 newdef PVff:VMDwidth 1 150.3 newdef PVff:Incoming 2 221 newdef PVff:OutgoingVector 2 22 newdef PVff:OutgoingFermion 2 13 newdef PVff:OutgoingAntiFermion 2 -13 newdef PVff:Coupling 2 7.55416e-06 newdef PVff:MaxWeight 2 2.03869 newdef PVff:IncludeVMD 2 2 newdef PVff:VMDID 2 113 newdef PVff:VMDmass 2 775.8 newdef PVff:VMDwidth 2 150.3 newdef PVff:Incoming 3 331 newdef PVff:OutgoingVector 3 22 newdef PVff:OutgoingFermion 3 11 newdef PVff:OutgoingAntiFermion 3 -11 newdef PVff:Coupling 3 1.04e-05 newdef PVff:MaxWeight 3 5.07081 newdef PVff:IncludeVMD 3 2 newdef PVff:VMDID 3 113 newdef PVff:VMDmass 3 775.8 newdef PVff:VMDwidth 3 150.3 newdef PVff:Incoming 4 331 newdef PVff:OutgoingVector 4 22 newdef PVff:OutgoingFermion 4 13 newdef PVff:OutgoingAntiFermion 4 -13 newdef PVff:Coupling 4 1.04e-05 newdef PVff:MaxWeight 4 3.00948 newdef PVff:IncludeVMD 4 2 newdef PVff:VMDID 4 113 newdef PVff:VMDmass 4 775.8 newdef PVff:VMDwidth 4 150.3 # create Herwig::EtaPiPiGammaDecayer Etapipigamma newdef Etapipigamma:Iteration 1 newdef Etapipigamma:Ntry 500 newdef Etapipigamma:Points 10000 newdef Etapipigamma:GenerateIntermediates 0 newdef Etapipigamma:fpi 130.7 newdef Etapipigamma:RhoMass 771.1 newdef Etapipigamma:RhoWidth 149.2 newdef Etapipigamma:LocalParameters 1 newdef Etapipigamma:OmnesC 1 newdef Etapipigamma:OmnesA 0.840908 newdef Etapipigamma:InitializeOmnes 0 newdef Etapipigamma:OmnesPoints 100 newdef Etapipigamma:OmnesCut 0.4 newdef Etapipigamma:Incoming 0 221 newdef Etapipigamma:Coupling 0 0.00506 newdef Etapipigamma:MaxWeight 0 3.95071 newdef Etapipigamma:Option 0 3 newdef Etapipigamma:Incoming 1 331 newdef Etapipigamma:Coupling 1 0.004278 newdef Etapipigamma:MaxWeight 1 3.53141 newdef Etapipigamma:Option 1 3 newdef Etapipigamma:Phase_Energy 0 300 newdef Etapipigamma:Phase_Shift 0 0.1 newdef Etapipigamma:Phase_Energy 1 320 newdef Etapipigamma:Phase_Shift 1 0.4 newdef Etapipigamma:Phase_Energy 2 340 newdef Etapipigamma:Phase_Shift 2 0.7 newdef Etapipigamma:Phase_Energy 3 360 newdef Etapipigamma:Phase_Shift 3 1 newdef Etapipigamma:Phase_Energy 4 380 newdef Etapipigamma:Phase_Shift 4 1.5 newdef Etapipigamma:Phase_Energy 5 400 newdef Etapipigamma:Phase_Shift 5 2 newdef Etapipigamma:Phase_Energy 6 420 newdef Etapipigamma:Phase_Shift 6 2.5 newdef Etapipigamma:Phase_Energy 7 440 newdef Etapipigamma:Phase_Shift 7 3.2 newdef Etapipigamma:Phase_Energy 8 460 newdef Etapipigamma:Phase_Shift 8 4 newdef Etapipigamma:Phase_Energy 9 480 newdef Etapipigamma:Phase_Shift 9 4.9 newdef Etapipigamma:Phase_Energy 10 500 newdef Etapipigamma:Phase_Shift 10 5.9 newdef Etapipigamma:Phase_Energy 11 520 newdef Etapipigamma:Phase_Shift 11 7.1 newdef Etapipigamma:Phase_Energy 12 540 newdef Etapipigamma:Phase_Shift 12 8.5 newdef Etapipigamma:Phase_Energy 13 560 newdef Etapipigamma:Phase_Shift 13 10.1 newdef Etapipigamma:Phase_Energy 14 580 newdef Etapipigamma:Phase_Shift 14 12.1 newdef Etapipigamma:Phase_Energy 15 600 newdef Etapipigamma:Phase_Shift 15 14.4 newdef Etapipigamma:Phase_Energy 16 620 newdef Etapipigamma:Phase_Shift 16 17.3 newdef Etapipigamma:Phase_Energy 17 640 newdef Etapipigamma:Phase_Shift 17 20.9 newdef Etapipigamma:Phase_Energy 18 660 newdef Etapipigamma:Phase_Shift 18 25.4 newdef Etapipigamma:Phase_Energy 19 680 newdef Etapipigamma:Phase_Shift 19 31.2 newdef Etapipigamma:Phase_Energy 20 700 newdef Etapipigamma:Phase_Shift 20 38.7 newdef Etapipigamma:Phase_Energy 21 720 newdef Etapipigamma:Phase_Shift 21 48.4 newdef Etapipigamma:Phase_Energy 22 740 newdef Etapipigamma:Phase_Shift 22 60.6 newdef Etapipigamma:Phase_Energy 23 760 newdef Etapipigamma:Phase_Shift 23 74.9 newdef Etapipigamma:Phase_Energy 24 780 newdef Etapipigamma:Phase_Shift 24 90 newdef Etapipigamma:Phase_Energy 25 800 newdef Etapipigamma:Phase_Shift 25 103.8 newdef Etapipigamma:Phase_Energy 26 820 newdef Etapipigamma:Phase_Shift 26 115.3 newdef Etapipigamma:Phase_Energy 27 840 newdef Etapipigamma:Phase_Shift 27 124.3 newdef Etapipigamma:Phase_Energy 28 860 newdef Etapipigamma:Phase_Shift 28 131.3 newdef Etapipigamma:Phase_Energy 29 880 newdef Etapipigamma:Phase_Shift 29 136.7 newdef Etapipigamma:Phase_Energy 30 900 newdef Etapipigamma:Phase_Shift 30 141 newdef Etapipigamma:Phase_Energy 31 920 newdef Etapipigamma:Phase_Shift 31 144.5 newdef Etapipigamma:Phase_Energy 32 940 newdef Etapipigamma:Phase_Shift 32 147.3 newdef Etapipigamma:Phase_Energy 33 960 newdef Etapipigamma:Phase_Shift 33 149.7 newdef Etapipigamma:Phase_Energy 34 980 newdef Etapipigamma:Phase_Shift 34 151.8 newdef Etapipigamma:OmnesEnergy 0 282.534 newdef Etapipigamma:OmnesReal 0 0.860715 newdef Etapipigamma:OmnesImag 0 0.00243357 newdef Etapipigamma:OmnesEnergy 1 289.32 newdef Etapipigamma:OmnesReal 1 0.851815 newdef Etapipigamma:OmnesImag 1 0.000895003 newdef Etapipigamma:OmnesEnergy 2 296.106 newdef Etapipigamma:OmnesReal 2 0.843733 newdef Etapipigamma:OmnesImag 2 -0.000612528 newdef Etapipigamma:OmnesEnergy 3 302.893 newdef Etapipigamma:OmnesReal 3 0.835875 newdef Etapipigamma:OmnesImag 3 -0.00209191 newdef Etapipigamma:OmnesEnergy 4 309.679 newdef Etapipigamma:OmnesReal 4 0.828085 newdef Etapipigamma:OmnesImag 4 -0.00354367 newdef Etapipigamma:OmnesEnergy 5 316.466 newdef Etapipigamma:OmnesReal 5 0.820288 newdef Etapipigamma:OmnesImag 5 -0.00496772 newdef Etapipigamma:OmnesEnergy 6 323.252 newdef Etapipigamma:OmnesReal 6 0.812438 newdef Etapipigamma:OmnesImag 6 -0.00636369 newdef Etapipigamma:OmnesEnergy 7 330.038 newdef Etapipigamma:OmnesReal 7 0.804502 newdef Etapipigamma:OmnesImag 7 -0.00773098 newdef Etapipigamma:OmnesEnergy 8 336.825 newdef Etapipigamma:OmnesReal 8 0.796459 newdef Etapipigamma:OmnesImag 8 -0.0090689 newdef Etapipigamma:OmnesEnergy 9 343.611 newdef Etapipigamma:OmnesReal 9 0.788299 newdef Etapipigamma:OmnesImag 9 -0.0102966 newdef Etapipigamma:OmnesEnergy 10 350.398 newdef Etapipigamma:OmnesReal 10 0.77978 newdef Etapipigamma:OmnesImag 10 -0.0114782 newdef Etapipigamma:OmnesEnergy 11 357.184 newdef Etapipigamma:OmnesReal 11 0.770922 newdef Etapipigamma:OmnesImag 11 -0.0127871 newdef Etapipigamma:OmnesEnergy 12 363.97 newdef Etapipigamma:OmnesReal 12 0.761747 newdef Etapipigamma:OmnesImag 12 -0.0144893 newdef Etapipigamma:OmnesEnergy 13 370.757 newdef Etapipigamma:OmnesReal 13 0.752726 newdef Etapipigamma:OmnesImag 13 -0.016514 newdef Etapipigamma:OmnesEnergy 14 377.543 newdef Etapipigamma:OmnesReal 14 0.743834 newdef Etapipigamma:OmnesImag 14 -0.0186276 newdef Etapipigamma:OmnesEnergy 15 384.33 newdef Etapipigamma:OmnesReal 15 0.735054 newdef Etapipigamma:OmnesImag 15 -0.0206377 newdef Etapipigamma:OmnesEnergy 16 391.116 newdef Etapipigamma:OmnesReal 16 0.726157 newdef Etapipigamma:OmnesImag 16 -0.02254 newdef Etapipigamma:OmnesEnergy 17 397.902 newdef Etapipigamma:OmnesReal 17 0.717152 newdef Etapipigamma:OmnesImag 17 -0.0243863 newdef Etapipigamma:OmnesEnergy 18 404.689 newdef Etapipigamma:OmnesReal 18 0.70801 newdef Etapipigamma:OmnesImag 18 -0.0260832 newdef Etapipigamma:OmnesEnergy 19 411.475 newdef Etapipigamma:OmnesReal 19 0.698521 newdef Etapipigamma:OmnesImag 19 -0.0277386 newdef Etapipigamma:OmnesEnergy 20 418.261 newdef Etapipigamma:OmnesReal 20 0.688707 newdef Etapipigamma:OmnesImag 20 -0.0294852 newdef Etapipigamma:OmnesEnergy 21 425.048 newdef Etapipigamma:OmnesReal 21 0.678618 newdef Etapipigamma:OmnesImag 21 -0.0315487 newdef Etapipigamma:OmnesEnergy 22 431.834 newdef Etapipigamma:OmnesReal 22 0.668556 newdef Etapipigamma:OmnesImag 22 -0.033826 newdef Etapipigamma:OmnesEnergy 23 438.621 newdef Etapipigamma:OmnesReal 23 0.658497 newdef Etapipigamma:OmnesImag 23 -0.0362089 newdef Etapipigamma:OmnesEnergy 24 445.407 newdef Etapipigamma:OmnesReal 24 0.64843 newdef Etapipigamma:OmnesImag 24 -0.0385967 newdef Etapipigamma:OmnesEnergy 25 452.193 newdef Etapipigamma:OmnesReal 25 0.638272 newdef Etapipigamma:OmnesImag 25 -0.041005 newdef Etapipigamma:OmnesEnergy 26 458.98 newdef Etapipigamma:OmnesReal 26 0.628033 newdef Etapipigamma:OmnesImag 26 -0.0434403 newdef Etapipigamma:OmnesEnergy 27 465.766 newdef Etapipigamma:OmnesReal 27 0.61771 newdef Etapipigamma:OmnesImag 27 -0.0458954 newdef Etapipigamma:OmnesEnergy 28 472.553 newdef Etapipigamma:OmnesReal 28 0.607297 newdef Etapipigamma:OmnesImag 28 -0.0483626 newdef Etapipigamma:OmnesEnergy 29 479.339 newdef Etapipigamma:OmnesReal 29 0.596791 newdef Etapipigamma:OmnesImag 29 -0.0508342 newdef Etapipigamma:OmnesEnergy 30 486.125 newdef Etapipigamma:OmnesReal 30 0.586171 newdef Etapipigamma:OmnesImag 30 -0.0532531 newdef Etapipigamma:OmnesEnergy 31 492.912 newdef Etapipigamma:OmnesReal 31 0.575358 newdef Etapipigamma:OmnesImag 31 -0.0556832 newdef Etapipigamma:OmnesEnergy 32 499.698 newdef Etapipigamma:OmnesReal 32 0.564361 newdef Etapipigamma:OmnesImag 32 -0.0581586 newdef Etapipigamma:OmnesEnergy 33 506.485 newdef Etapipigamma:OmnesReal 33 0.553215 newdef Etapipigamma:OmnesImag 33 -0.0607546 newdef Etapipigamma:OmnesEnergy 34 513.271 newdef Etapipigamma:OmnesReal 34 0.541985 newdef Etapipigamma:OmnesImag 34 -0.0634187 newdef Etapipigamma:OmnesEnergy 35 520.057 newdef Etapipigamma:OmnesReal 35 0.530668 newdef Etapipigamma:OmnesImag 35 -0.0661333 newdef Etapipigamma:OmnesEnergy 36 526.844 newdef Etapipigamma:OmnesReal 36 0.519264 newdef Etapipigamma:OmnesImag 36 -0.068884 newdef Etapipigamma:OmnesEnergy 37 533.63 newdef Etapipigamma:OmnesReal 37 0.507775 newdef Etapipigamma:OmnesImag 37 -0.071656 newdef Etapipigamma:OmnesEnergy 38 540.417 newdef Etapipigamma:OmnesReal 38 0.496219 newdef Etapipigamma:OmnesImag 38 -0.0744313 newdef Etapipigamma:OmnesEnergy 39 547.203 newdef Etapipigamma:OmnesReal 39 0.484506 newdef Etapipigamma:OmnesImag 39 -0.0771089 newdef Etapipigamma:OmnesEnergy 40 553.989 newdef Etapipigamma:OmnesReal 40 0.472569 newdef Etapipigamma:OmnesImag 40 -0.0798123 newdef Etapipigamma:OmnesEnergy 41 560.776 newdef Etapipigamma:OmnesReal 41 0.460391 newdef Etapipigamma:OmnesImag 41 -0.082595 newdef Etapipigamma:OmnesEnergy 42 567.562 newdef Etapipigamma:OmnesReal 42 0.448121 newdef Etapipigamma:OmnesImag 42 -0.0856019 newdef Etapipigamma:OmnesEnergy 43 574.349 newdef Etapipigamma:OmnesReal 43 0.43585 newdef Etapipigamma:OmnesImag 43 -0.0886756 newdef Etapipigamma:OmnesEnergy 44 581.135 newdef Etapipigamma:OmnesReal 44 0.423613 newdef Etapipigamma:OmnesImag 44 -0.0917406 newdef Etapipigamma:OmnesEnergy 45 587.921 newdef Etapipigamma:OmnesReal 45 0.411225 newdef Etapipigamma:OmnesImag 45 -0.0946243 newdef Etapipigamma:OmnesEnergy 46 594.708 newdef Etapipigamma:OmnesReal 46 0.398597 newdef Etapipigamma:OmnesImag 46 -0.0975016 newdef Etapipigamma:OmnesEnergy 47 601.494 newdef Etapipigamma:OmnesReal 47 0.385723 newdef Etapipigamma:OmnesImag 47 -0.100435 newdef Etapipigamma:OmnesEnergy 48 608.281 newdef Etapipigamma:OmnesReal 48 0.372705 newdef Etapipigamma:OmnesImag 48 -0.103516 newdef Etapipigamma:OmnesEnergy 49 615.067 newdef Etapipigamma:OmnesReal 49 0.35959 newdef Etapipigamma:OmnesImag 49 -0.106676 newdef Etapipigamma:OmnesEnergy 50 621.853 newdef Etapipigamma:OmnesReal 50 0.3464 newdef Etapipigamma:OmnesImag 50 -0.109892 newdef Etapipigamma:OmnesEnergy 51 628.64 newdef Etapipigamma:OmnesReal 51 0.333099 newdef Etapipigamma:OmnesImag 51 -0.113121 newdef Etapipigamma:OmnesEnergy 52 635.426 newdef Etapipigamma:OmnesReal 52 0.319687 newdef Etapipigamma:OmnesImag 52 -0.116385 newdef Etapipigamma:OmnesEnergy 53 642.213 newdef Etapipigamma:OmnesReal 53 0.306191 newdef Etapipigamma:OmnesImag 53 -0.119664 newdef Etapipigamma:OmnesEnergy 54 648.999 newdef Etapipigamma:OmnesReal 54 0.292542 newdef Etapipigamma:OmnesImag 54 -0.12291 newdef Etapipigamma:OmnesEnergy 55 655.785 newdef Etapipigamma:OmnesReal 55 0.278725 newdef Etapipigamma:OmnesImag 55 -0.126183 newdef Etapipigamma:OmnesEnergy 56 662.572 newdef Etapipigamma:OmnesReal 56 0.264753 newdef Etapipigamma:OmnesImag 56 -0.129498 newdef Etapipigamma:OmnesEnergy 57 669.358 newdef Etapipigamma:OmnesReal 57 0.250639 newdef Etapipigamma:OmnesImag 57 -0.132862 newdef Etapipigamma:OmnesEnergy 58 676.145 newdef Etapipigamma:OmnesReal 58 0.236391 newdef Etapipigamma:OmnesImag 58 -0.136272 newdef Etapipigamma:OmnesEnergy 59 682.931 newdef Etapipigamma:OmnesReal 59 0.222033 newdef Etapipigamma:OmnesImag 59 -0.139718 newdef Etapipigamma:OmnesEnergy 60 689.717 newdef Etapipigamma:OmnesReal 60 0.207536 newdef Etapipigamma:OmnesImag 60 -0.143173 newdef Etapipigamma:OmnesEnergy 61 696.504 newdef Etapipigamma:OmnesReal 61 0.192894 newdef Etapipigamma:OmnesImag 61 -0.14665 newdef Etapipigamma:OmnesEnergy 62 703.29 newdef Etapipigamma:OmnesReal 62 0.178088 newdef Etapipigamma:OmnesImag 62 -0.150158 newdef Etapipigamma:OmnesEnergy 63 710.077 newdef Etapipigamma:OmnesReal 63 0.163157 newdef Etapipigamma:OmnesImag 63 -0.153716 newdef Etapipigamma:OmnesEnergy 64 716.863 newdef Etapipigamma:OmnesReal 64 0.148099 newdef Etapipigamma:OmnesImag 64 -0.157273 newdef Etapipigamma:OmnesEnergy 65 723.649 newdef Etapipigamma:OmnesReal 65 0.132821 newdef Etapipigamma:OmnesImag 65 -0.160847 newdef Etapipigamma:OmnesEnergy 66 730.436 newdef Etapipigamma:OmnesReal 66 0.117442 newdef Etapipigamma:OmnesImag 66 -0.164521 newdef Etapipigamma:OmnesEnergy 67 737.222 newdef Etapipigamma:OmnesReal 67 0.101967 newdef Etapipigamma:OmnesImag 67 -0.168175 newdef Etapipigamma:OmnesEnergy 68 744.009 newdef Etapipigamma:OmnesReal 68 0.0862561 newdef Etapipigamma:OmnesImag 68 -0.171796 newdef Etapipigamma:OmnesEnergy 69 750.795 newdef Etapipigamma:OmnesReal 69 0.0704108 newdef Etapipigamma:OmnesImag 69 -0.17551 newdef Etapipigamma:OmnesEnergy 70 757.581 newdef Etapipigamma:OmnesReal 70 0.0544367 newdef Etapipigamma:OmnesImag 70 -0.179198 newdef Etapipigamma:OmnesEnergy 71 764.368 newdef Etapipigamma:OmnesReal 71 0.0381921 newdef Etapipigamma:OmnesImag 71 -0.182849 newdef Etapipigamma:OmnesEnergy 72 771.154 newdef Etapipigamma:OmnesReal 72 0.0217339 newdef Etapipigamma:OmnesImag 72 -0.186618 newdef Etapipigamma:OmnesEnergy 73 777.94 newdef Etapipigamma:OmnesReal 73 0.00508946 newdef Etapipigamma:OmnesImag 73 -0.190478 newdef Etapipigamma:OmnesEnergy 74 784.727 newdef Etapipigamma:OmnesReal 74 -0.0116072 newdef Etapipigamma:OmnesImag 74 -0.19445 newdef Etapipigamma:OmnesEnergy 75 791.513 newdef Etapipigamma:OmnesReal 75 -0.0284628 newdef Etapipigamma:OmnesImag 75 -0.198325 newdef Etapipigamma:OmnesEnergy 76 798.3 newdef Etapipigamma:OmnesReal 76 -0.0455793 newdef Etapipigamma:OmnesImag 76 -0.202216 newdef Etapipigamma:OmnesEnergy 77 805.086 newdef Etapipigamma:OmnesReal 77 -0.0628504 newdef Etapipigamma:OmnesImag 77 -0.206211 newdef Etapipigamma:OmnesEnergy 78 811.872 newdef Etapipigamma:OmnesReal 78 -0.0803254 newdef Etapipigamma:OmnesImag 78 -0.210165 newdef Etapipigamma:OmnesEnergy 79 818.659 newdef Etapipigamma:OmnesReal 79 -0.0980794 newdef Etapipigamma:OmnesImag 79 -0.214176 newdef Etapipigamma:OmnesEnergy 80 825.445 newdef Etapipigamma:OmnesReal 80 -0.115981 newdef Etapipigamma:OmnesImag 80 -0.218339 newdef Etapipigamma:OmnesEnergy 81 832.232 newdef Etapipigamma:OmnesReal 81 -0.134042 newdef Etapipigamma:OmnesImag 81 -0.222474 newdef Etapipigamma:OmnesEnergy 82 839.018 newdef Etapipigamma:OmnesReal 82 -0.15233 newdef Etapipigamma:OmnesImag 82 -0.226615 newdef Etapipigamma:OmnesEnergy 83 845.804 newdef Etapipigamma:OmnesReal 83 -0.170883 newdef Etapipigamma:OmnesImag 83 -0.230769 newdef Etapipigamma:OmnesEnergy 84 852.591 newdef Etapipigamma:OmnesReal 84 -0.18971 newdef Etapipigamma:OmnesImag 84 -0.234988 newdef Etapipigamma:OmnesEnergy 85 859.377 newdef Etapipigamma:OmnesReal 85 -0.208805 newdef Etapipigamma:OmnesImag 85 -0.239288 newdef Etapipigamma:OmnesEnergy 86 866.164 newdef Etapipigamma:OmnesReal 86 -0.228131 newdef Etapipigamma:OmnesImag 86 -0.243689 newdef Etapipigamma:OmnesEnergy 87 872.95 newdef Etapipigamma:OmnesReal 87 -0.247688 newdef Etapipigamma:OmnesImag 87 -0.24814 newdef Etapipigamma:OmnesEnergy 88 879.736 newdef Etapipigamma:OmnesReal 88 -0.267484 newdef Etapipigamma:OmnesImag 88 -0.25262 newdef Etapipigamma:OmnesEnergy 89 886.523 newdef Etapipigamma:OmnesReal 89 -0.287624 newdef Etapipigamma:OmnesImag 89 -0.257087 newdef Etapipigamma:OmnesEnergy 90 893.309 newdef Etapipigamma:OmnesReal 90 -0.308122 newdef Etapipigamma:OmnesImag 90 -0.261627 newdef Etapipigamma:OmnesEnergy 91 900.096 newdef Etapipigamma:OmnesReal 91 -0.328979 newdef Etapipigamma:OmnesImag 91 -0.266226 newdef Etapipigamma:OmnesEnergy 92 906.882 newdef Etapipigamma:OmnesReal 92 -0.350331 newdef Etapipigamma:OmnesImag 92 -0.270868 newdef Etapipigamma:OmnesEnergy 93 913.668 newdef Etapipigamma:OmnesReal 93 -0.372196 newdef Etapipigamma:OmnesImag 93 -0.275687 newdef Etapipigamma:OmnesEnergy 94 920.455 newdef Etapipigamma:OmnesReal 94 -0.394596 newdef Etapipigamma:OmnesImag 94 -0.280733 newdef Etapipigamma:OmnesEnergy 95 927.241 newdef Etapipigamma:OmnesReal 95 -0.417471 newdef Etapipigamma:OmnesImag 95 -0.286075 newdef Etapipigamma:OmnesEnergy 96 934.028 newdef Etapipigamma:OmnesReal 96 -0.440914 newdef Etapipigamma:OmnesImag 96 -0.291621 newdef Etapipigamma:OmnesEnergy 97 940.814 newdef Etapipigamma:OmnesReal 97 -0.465088 newdef Etapipigamma:OmnesImag 97 -0.297381 newdef Etapipigamma:OmnesEnergy 98 947.6 newdef Etapipigamma:OmnesReal 98 -0.490461 newdef Etapipigamma:OmnesImag 98 -0.303462 newdef Etapipigamma:OmnesEnergy 99 954.387 newdef Etapipigamma:OmnesReal 99 -0.51781 newdef Etapipigamma:OmnesImag 99 -0.310381 # create Herwig::EtaPiGammaGammaDecayer Etapigammagamma newdef Etapigammagamma:Iteration 1 newdef Etapigammagamma:Ntry 500 newdef Etapigammagamma:Points 10000 newdef Etapigammagamma:GenerateIntermediates 0 newdef Etapigammagamma:grhoomega 12.924 newdef Etapigammagamma:Fpi 130.7 newdef Etapigammagamma:grho 5.89977 newdef Etapigammagamma:RhoMass 771.1 newdef Etapigammagamma:RhoWidth 149.2 newdef Etapigammagamma:RatioFpiF8 0.769231 newdef Etapigammagamma:RatioFpiF0 0.961538 newdef Etapigammagamma:Theta -0.349066 newdef Etapigammagamma:EtaMax 2.36858 newdef Etapigammagamma:EtaPrimeMax 0.00597214 newdef Etapigammagamma:LocalParameters 1 # create Herwig::EtaPiPiPiDecayer Etapipipi newdef Etapipipi:Iteration 1 newdef Etapipipi:Ntry 500 newdef Etapipipi:Points 10000 newdef Etapipipi:GenerateIntermediates 0 newdef Etapipipi:Incoming 0 221 newdef Etapipipi:Outgoing 0 111 newdef Etapipipi:Charged 0 1 newdef Etapipipi:Prefactor 0 0.06477 newdef Etapipipi:a 0 -1.17 newdef Etapipipi:b 0 0.21 newdef Etapipipi:c 0 0.06 newdef Etapipipi:MaxWeight 0 1.72861 newdef Etapipipi:Incoming 1 221 newdef Etapipipi:Outgoing 1 111 newdef Etapipipi:Charged 1 0 newdef Etapipipi:Prefactor 1 0.0883547 newdef Etapipipi:a 1 0 newdef Etapipipi:b 1 -0.062 newdef Etapipipi:c 1 -0.062 newdef Etapipipi:MaxWeight 1 1.45813 newdef Etapipipi:Incoming 2 331 newdef Etapipipi:Outgoing 2 111 newdef Etapipipi:Charged 2 1 newdef Etapipipi:Prefactor 2 0.037165 newdef Etapipipi:a 2 -3.08 newdef Etapipipi:b 2 0.13 newdef Etapipipi:c 2 0.62 newdef Etapipipi:MaxWeight 2 0.0153201 newdef Etapipipi:Incoming 3 331 newdef Etapipipi:Outgoing 3 111 newdef Etapipipi:Charged 3 0 newdef Etapipipi:Prefactor 3 0.016203 newdef Etapipipi:a 3 0 newdef Etapipipi:b 3 -0.86 newdef Etapipipi:c 3 -0.86 newdef Etapipipi:MaxWeight 3 2.52411 newdef Etapipipi:Incoming 4 331 newdef Etapipipi:Outgoing 4 221 newdef Etapipipi:Charged 4 1 newdef Etapipipi:Prefactor 4 49.42 newdef Etapipipi:a 4 -0.093 newdef Etapipipi:b 4 -0.059 newdef Etapipipi:c 4 -0.003 newdef Etapipipi:MaxWeight 4 1.421 newdef Etapipipi:Incoming 5 331 newdef Etapipipi:Outgoing 5 221 newdef Etapipipi:Charged 5 0 newdef Etapipipi:Prefactor 5 20.62 newdef Etapipipi:a 5 -0.105 newdef Etapipipi:b 5 -0.065 newdef Etapipipi:c 5 -0.004 newdef Etapipipi:MaxWeight 5 1.42649 # create Herwig::TensorMeson2PScalarDecayer Tensor2PScalar newdef Tensor2PScalar:Iteration 1 newdef Tensor2PScalar:Ntry 3000 newdef Tensor2PScalar:Points 10000 newdef Tensor2PScalar:GenerateIntermediates 0 newdef Tensor2PScalar:Incoming 0 115 newdef Tensor2PScalar:FirstOutgoing 0 221 newdef Tensor2PScalar:SecondOutgoing 0 111 newdef Tensor2PScalar:Coupling 0 10.9 newdef Tensor2PScalar:MaxWeight 0 4.5 newdef Tensor2PScalar:Incoming 1 215 newdef Tensor2PScalar:FirstOutgoing 1 221 newdef Tensor2PScalar:SecondOutgoing 1 211 newdef Tensor2PScalar:Coupling 1 10.9 newdef Tensor2PScalar:MaxWeight 1 4.5 newdef Tensor2PScalar:Incoming 2 115 newdef Tensor2PScalar:FirstOutgoing 2 331 newdef Tensor2PScalar:SecondOutgoing 2 111 newdef Tensor2PScalar:Coupling 2 9.92 newdef Tensor2PScalar:MaxWeight 2 4.2 newdef Tensor2PScalar:Incoming 3 215 newdef Tensor2PScalar:FirstOutgoing 3 331 newdef Tensor2PScalar:SecondOutgoing 3 211 newdef Tensor2PScalar:Coupling 3 9.92 newdef Tensor2PScalar:MaxWeight 3 4.2 newdef Tensor2PScalar:Incoming 4 115 newdef Tensor2PScalar:FirstOutgoing 4 311 newdef Tensor2PScalar:SecondOutgoing 4 -311 newdef Tensor2PScalar:Coupling 4 7.36 newdef Tensor2PScalar:MaxWeight 4 1.54249 newdef Tensor2PScalar:Incoming 5 115 newdef Tensor2PScalar:FirstOutgoing 5 321 newdef Tensor2PScalar:SecondOutgoing 5 -321 newdef Tensor2PScalar:Coupling 5 7.36 newdef Tensor2PScalar:MaxWeight 5 1.62503 newdef Tensor2PScalar:Incoming 6 215 newdef Tensor2PScalar:FirstOutgoing 6 321 newdef Tensor2PScalar:SecondOutgoing 6 -311 newdef Tensor2PScalar:Coupling 6 10.41 newdef Tensor2PScalar:MaxWeight 6 4.5 newdef Tensor2PScalar:Incoming 7 225 newdef Tensor2PScalar:FirstOutgoing 7 211 newdef Tensor2PScalar:SecondOutgoing 7 -211 newdef Tensor2PScalar:Coupling 7 18.73 newdef Tensor2PScalar:MaxWeight 7 5.5 newdef Tensor2PScalar:Incoming 8 225 newdef Tensor2PScalar:FirstOutgoing 8 111 newdef Tensor2PScalar:SecondOutgoing 8 111 newdef Tensor2PScalar:Coupling 8 13.24 newdef Tensor2PScalar:MaxWeight 8 5.5 newdef Tensor2PScalar:Incoming 9 225 newdef Tensor2PScalar:FirstOutgoing 9 221 newdef Tensor2PScalar:SecondOutgoing 9 221 newdef Tensor2PScalar:Coupling 9 8.362 newdef Tensor2PScalar:MaxWeight 9 5.4 newdef Tensor2PScalar:Incoming 10 225 newdef Tensor2PScalar:FirstOutgoing 10 321 newdef Tensor2PScalar:SecondOutgoing 10 -321 newdef Tensor2PScalar:Coupling 10 11.03 newdef Tensor2PScalar:MaxWeight 10 5. newdef Tensor2PScalar:Incoming 11 225 newdef Tensor2PScalar:FirstOutgoing 11 311 newdef Tensor2PScalar:SecondOutgoing 11 -311 newdef Tensor2PScalar:Coupling 11 11.38 newdef Tensor2PScalar:MaxWeight 11 5. newdef Tensor2PScalar:Incoming 12 335 newdef Tensor2PScalar:FirstOutgoing 12 321 newdef Tensor2PScalar:SecondOutgoing 12 -321 newdef Tensor2PScalar:Coupling 12 14.65 newdef Tensor2PScalar:MaxWeight 12 1.60028 newdef Tensor2PScalar:Incoming 13 335 newdef Tensor2PScalar:FirstOutgoing 13 311 newdef Tensor2PScalar:SecondOutgoing 13 -311 newdef Tensor2PScalar:Coupling 13 14.65 newdef Tensor2PScalar:MaxWeight 13 1.55404 newdef Tensor2PScalar:Incoming 14 335 newdef Tensor2PScalar:FirstOutgoing 14 221 newdef Tensor2PScalar:SecondOutgoing 14 221 newdef Tensor2PScalar:Coupling 14 9.15 newdef Tensor2PScalar:MaxWeight 14 1.60254 newdef Tensor2PScalar:Incoming 15 335 newdef Tensor2PScalar:FirstOutgoing 15 211 newdef Tensor2PScalar:SecondOutgoing 15 -211 newdef Tensor2PScalar:Coupling 15 0.86 newdef Tensor2PScalar:MaxWeight 15 1.60017 newdef Tensor2PScalar:Incoming 16 335 newdef Tensor2PScalar:FirstOutgoing 16 111 newdef Tensor2PScalar:SecondOutgoing 16 111 newdef Tensor2PScalar:Coupling 16 0.608 newdef Tensor2PScalar:MaxWeight 16 1.60798 newdef Tensor2PScalar:Incoming 17 325 newdef Tensor2PScalar:FirstOutgoing 17 321 newdef Tensor2PScalar:SecondOutgoing 17 221 newdef Tensor2PScalar:Coupling 17 1.52 newdef Tensor2PScalar:MaxWeight 17 5.1 newdef Tensor2PScalar:Incoming 18 315 newdef Tensor2PScalar:FirstOutgoing 18 311 newdef Tensor2PScalar:SecondOutgoing 18 221 newdef Tensor2PScalar:Coupling 18 1.52 newdef Tensor2PScalar:MaxWeight 18 5.1 newdef Tensor2PScalar:Incoming 19 325 newdef Tensor2PScalar:FirstOutgoing 19 321 newdef Tensor2PScalar:SecondOutgoing 19 111 newdef Tensor2PScalar:Coupling 19 8.3 newdef Tensor2PScalar:MaxWeight 19 5.1 newdef Tensor2PScalar:Incoming 20 325 newdef Tensor2PScalar:FirstOutgoing 20 311 newdef Tensor2PScalar:SecondOutgoing 20 211 newdef Tensor2PScalar:Coupling 20 11.74 newdef Tensor2PScalar:MaxWeight 20 5.1 newdef Tensor2PScalar:Incoming 21 315 newdef Tensor2PScalar:FirstOutgoing 21 311 newdef Tensor2PScalar:SecondOutgoing 21 111 newdef Tensor2PScalar:Coupling 21 8.68 newdef Tensor2PScalar:MaxWeight 21 5.1 newdef Tensor2PScalar:Incoming 22 315 newdef Tensor2PScalar:FirstOutgoing 22 321 newdef Tensor2PScalar:SecondOutgoing 22 -211 newdef Tensor2PScalar:Coupling 22 12.28 newdef Tensor2PScalar:MaxWeight 22 5.1 newdef Tensor2PScalar:Incoming 23 525 newdef Tensor2PScalar:FirstOutgoing 23 521 newdef Tensor2PScalar:SecondOutgoing 23 111 newdef Tensor2PScalar:Coupling 23 27.23 newdef Tensor2PScalar:MaxWeight 23 1.61546 newdef Tensor2PScalar:Incoming 24 525 newdef Tensor2PScalar:FirstOutgoing 24 511 newdef Tensor2PScalar:SecondOutgoing 24 211 newdef Tensor2PScalar:Coupling 24 38.52 newdef Tensor2PScalar:MaxWeight 24 1.5839 newdef Tensor2PScalar:Incoming 25 515 newdef Tensor2PScalar:FirstOutgoing 25 511 newdef Tensor2PScalar:SecondOutgoing 25 111 newdef Tensor2PScalar:Coupling 25 27.16 newdef Tensor2PScalar:MaxWeight 25 1.59996 newdef Tensor2PScalar:Incoming 26 515 newdef Tensor2PScalar:FirstOutgoing 26 521 newdef Tensor2PScalar:SecondOutgoing 26 -211 newdef Tensor2PScalar:Coupling 26 38.62 newdef Tensor2PScalar:MaxWeight 26 1.59933 newdef Tensor2PScalar:Incoming 27 425 newdef Tensor2PScalar:FirstOutgoing 27 421 newdef Tensor2PScalar:SecondOutgoing 27 111 newdef Tensor2PScalar:Coupling 27 18.07 newdef Tensor2PScalar:MaxWeight 27 6. newdef Tensor2PScalar:Incoming 28 425 newdef Tensor2PScalar:FirstOutgoing 28 411 newdef Tensor2PScalar:SecondOutgoing 28 -211 newdef Tensor2PScalar:Coupling 28 25.56 newdef Tensor2PScalar:MaxWeight 28 6. newdef Tensor2PScalar:Incoming 29 415 newdef Tensor2PScalar:FirstOutgoing 29 411 newdef Tensor2PScalar:SecondOutgoing 29 111 newdef Tensor2PScalar:Coupling 29 14.91 newdef Tensor2PScalar:MaxWeight 29 6. newdef Tensor2PScalar:Incoming 30 415 newdef Tensor2PScalar:FirstOutgoing 30 421 newdef Tensor2PScalar:SecondOutgoing 30 211 newdef Tensor2PScalar:Coupling 30 21.09 newdef Tensor2PScalar:MaxWeight 30 6. newdef Tensor2PScalar:Incoming 31 435 newdef Tensor2PScalar:FirstOutgoing 31 421 newdef Tensor2PScalar:SecondOutgoing 31 321 newdef Tensor2PScalar:Coupling 31 23.39 newdef Tensor2PScalar:MaxWeight 31 6. newdef Tensor2PScalar:Incoming 32 435 newdef Tensor2PScalar:FirstOutgoing 32 411 newdef Tensor2PScalar:SecondOutgoing 32 311 newdef Tensor2PScalar:Coupling 32 23.39 newdef Tensor2PScalar:MaxWeight 32 6. newdef Tensor2PScalar:Incoming 33 535 newdef Tensor2PScalar:FirstOutgoing 33 521 newdef Tensor2PScalar:SecondOutgoing 33 -321 newdef Tensor2PScalar:Coupling 33 45.43 newdef Tensor2PScalar:MaxWeight 33 1.60661 newdef Tensor2PScalar:Incoming 34 535 newdef Tensor2PScalar:FirstOutgoing 34 511 newdef Tensor2PScalar:SecondOutgoing 34 -311 newdef Tensor2PScalar:Coupling 34 48.84 newdef Tensor2PScalar:MaxWeight 34 1.58181 newdef Tensor2PScalar:Incoming 35 445 newdef Tensor2PScalar:FirstOutgoing 35 211 newdef Tensor2PScalar:SecondOutgoing 35 -211 newdef Tensor2PScalar:Coupling 35 0.02 newdef Tensor2PScalar:MaxWeight 35 1.5984 newdef Tensor2PScalar:Incoming 36 445 newdef Tensor2PScalar:FirstOutgoing 36 111 newdef Tensor2PScalar:SecondOutgoing 36 111 newdef Tensor2PScalar:Coupling 36 0.0141 newdef Tensor2PScalar:MaxWeight 36 1.5916 newdef Tensor2PScalar:Incoming 37 445 newdef Tensor2PScalar:FirstOutgoing 37 321 newdef Tensor2PScalar:SecondOutgoing 37 -321 newdef Tensor2PScalar:Coupling 37 0.056 newdef Tensor2PScalar:MaxWeight 37 1.59793 newdef Tensor2PScalar:Incoming 38 445 newdef Tensor2PScalar:FirstOutgoing 38 311 newdef Tensor2PScalar:SecondOutgoing 38 -311 newdef Tensor2PScalar:Coupling 38 0.056 newdef Tensor2PScalar:MaxWeight 38 1.59254 newdef Tensor2PScalar:Incoming 39 225 newdef Tensor2PScalar:FirstOutgoing 39 9000221 newdef Tensor2PScalar:SecondOutgoing 39 9000221 newdef Tensor2PScalar:Coupling 39 104.1 newdef Tensor2PScalar:MaxWeight 39 140. newdef Tensor2PScalar:Incoming 40 10115 newdef Tensor2PScalar:FirstOutgoing 40 9000221 newdef Tensor2PScalar:SecondOutgoing 40 111 newdef Tensor2PScalar:Coupling 40 15.3 newdef Tensor2PScalar:MaxWeight 40 8.14835 newdef Tensor2PScalar:Incoming 41 10215 newdef Tensor2PScalar:FirstOutgoing 41 9000221 newdef Tensor2PScalar:SecondOutgoing 41 211 newdef Tensor2PScalar:Coupling 41 15.3 newdef Tensor2PScalar:MaxWeight 41 8.211 newdef Tensor2PScalar:Incoming 42 10225 newdef Tensor2PScalar:FirstOutgoing 42 9000111 newdef Tensor2PScalar:SecondOutgoing 42 111 newdef Tensor2PScalar:Coupling 42 11.3 newdef Tensor2PScalar:MaxWeight 42 8.34671 newdef Tensor2PScalar:Incoming 43 10225 newdef Tensor2PScalar:FirstOutgoing 43 9000211 newdef Tensor2PScalar:SecondOutgoing 43 -211 newdef Tensor2PScalar:Coupling 43 11.3 newdef Tensor2PScalar:MaxWeight 43 8.2342 newdef Tensor2PScalar:Incoming 44 10335 newdef Tensor2PScalar:FirstOutgoing 44 9000111 newdef Tensor2PScalar:SecondOutgoing 44 111 newdef Tensor2PScalar:Coupling 44 4.43 newdef Tensor2PScalar:MaxWeight 44 7.81454 newdef Tensor2PScalar:Incoming 45 10335 newdef Tensor2PScalar:FirstOutgoing 45 9000211 newdef Tensor2PScalar:SecondOutgoing 45 -211 newdef Tensor2PScalar:Coupling 45 4.43 newdef Tensor2PScalar:MaxWeight 45 8.54955 newdef Tensor2PScalar:Incoming 46 100445 newdef Tensor2PScalar:FirstOutgoing 46 411 newdef Tensor2PScalar:SecondOutgoing 46 -411 newdef Tensor2PScalar:Coupling 46 22.3 newdef Tensor2PScalar:MaxWeight 46 1.6114 newdef Tensor2PScalar:Incoming 47 100445 newdef Tensor2PScalar:FirstOutgoing 47 421 newdef Tensor2PScalar:SecondOutgoing 47 -421 newdef Tensor2PScalar:Coupling 47 22.3 newdef Tensor2PScalar:MaxWeight 47 1.61675 # create Herwig::TensorMesonVectorPScalarDecayer TensorVP newdef TensorVP:Iteration 1 newdef TensorVP:Ntry 2000 newdef TensorVP:Points 10000 newdef TensorVP:GenerateIntermediates 0 newdef TensorVP:Incoming 0 115 newdef TensorVP:OutgoingVector 0 213 newdef TensorVP:OutgoingScalar 0 -211 newdef TensorVP:Coupling 0 21.1 newdef TensorVP:MaxWeight 0 4.68304 newdef TensorVP:Incoming 1 215 newdef TensorVP:OutgoingVector 1 113 newdef TensorVP:OutgoingScalar 1 211 newdef TensorVP:Coupling 1 21.1 newdef TensorVP:MaxWeight 1 4.71348 newdef TensorVP:Incoming 2 215 newdef TensorVP:OutgoingVector 2 213 newdef TensorVP:OutgoingScalar 2 111 newdef TensorVP:Coupling 2 21.1 newdef TensorVP:MaxWeight 2 4.73233 newdef TensorVP:Incoming 3 215 newdef TensorVP:OutgoingVector 3 22 newdef TensorVP:OutgoingScalar 3 211 newdef TensorVP:Coupling 3 0.551 newdef TensorVP:MaxWeight 3 1.7 newdef TensorVP:Incoming 4 315 newdef TensorVP:OutgoingVector 4 223 newdef TensorVP:OutgoingScalar 4 311 newdef TensorVP:Coupling 4 11.66 newdef TensorVP:MaxWeight 4 40. newdef TensorVP:Incoming 5 325 newdef TensorVP:OutgoingVector 5 223 newdef TensorVP:OutgoingScalar 5 321 newdef TensorVP:Coupling 5 11.66 newdef TensorVP:MaxWeight 5 40. newdef TensorVP:Incoming 6 325 newdef TensorVP:OutgoingVector 6 22 newdef TensorVP:OutgoingScalar 6 321 newdef TensorVP:Coupling 6 0.553 newdef TensorVP:MaxWeight 6 1.9 newdef TensorVP:Incoming 7 545 newdef TensorVP:OutgoingVector 7 22 newdef TensorVP:OutgoingScalar 7 541 newdef TensorVP:Coupling 7 0.651 newdef TensorVP:MaxWeight 7 1.63579 newdef TensorVP:Incoming 8 325 newdef TensorVP:OutgoingVector 8 113 newdef TensorVP:OutgoingScalar 8 321 newdef TensorVP:Coupling 8 10.14 newdef TensorVP:MaxWeight 8 7.09367 newdef TensorVP:Incoming 9 325 newdef TensorVP:OutgoingVector 9 213 newdef TensorVP:OutgoingScalar 9 311 newdef TensorVP:Coupling 9 14.33 newdef TensorVP:MaxWeight 9 6.86114 newdef TensorVP:Incoming 10 315 newdef TensorVP:OutgoingVector 10 113 newdef TensorVP:OutgoingScalar 10 311 newdef TensorVP:Coupling 10 10.14 newdef TensorVP:MaxWeight 10 6.65245 newdef TensorVP:Incoming 11 315 newdef TensorVP:OutgoingVector 11 -213 newdef TensorVP:OutgoingScalar 11 321 newdef TensorVP:Coupling 11 14.33 newdef TensorVP:MaxWeight 11 8.1 newdef TensorVP:Incoming 12 325 newdef TensorVP:OutgoingVector 12 323 newdef TensorVP:OutgoingScalar 12 111 newdef TensorVP:Coupling 12 9.733 newdef TensorVP:MaxWeight 12 2.9 newdef TensorVP:Incoming 13 325 newdef TensorVP:OutgoingVector 13 313 newdef TensorVP:OutgoingScalar 13 211 newdef TensorVP:Coupling 13 13.77 newdef TensorVP:MaxWeight 13 2.796 newdef TensorVP:Incoming 14 315 newdef TensorVP:OutgoingVector 14 313 newdef TensorVP:OutgoingScalar 14 111 newdef TensorVP:Coupling 14 9.733 newdef TensorVP:MaxWeight 14 3. newdef TensorVP:Incoming 15 315 newdef TensorVP:OutgoingVector 15 323 newdef TensorVP:OutgoingScalar 15 -211 newdef TensorVP:Coupling 15 13.77 newdef TensorVP:MaxWeight 15 3. newdef TensorVP:Incoming 16 425 newdef TensorVP:OutgoingVector 16 423 newdef TensorVP:OutgoingScalar 16 111 newdef TensorVP:Coupling 16 8.035 newdef TensorVP:MaxWeight 16 6. newdef TensorVP:Incoming 17 425 newdef TensorVP:OutgoingVector 17 413 newdef TensorVP:OutgoingScalar 17 -211 newdef TensorVP:Coupling 17 11.67 newdef TensorVP:MaxWeight 17 6. newdef TensorVP:Incoming 18 415 newdef TensorVP:OutgoingVector 18 413 newdef TensorVP:OutgoingScalar 18 111 newdef TensorVP:Coupling 18 6.801 newdef TensorVP:MaxWeight 18 6. newdef TensorVP:Incoming 19 415 newdef TensorVP:OutgoingVector 19 423 newdef TensorVP:OutgoingScalar 19 211 newdef TensorVP:Coupling 19 9.527 newdef TensorVP:MaxWeight 19 6. newdef TensorVP:Incoming 20 435 newdef TensorVP:OutgoingVector 20 423 newdef TensorVP:OutgoingScalar 20 321 newdef TensorVP:Coupling 20 13.1 newdef TensorVP:MaxWeight 20 5. newdef TensorVP:Incoming 21 435 newdef TensorVP:OutgoingVector 21 413 newdef TensorVP:OutgoingScalar 21 311 newdef TensorVP:Coupling 21 13.1 newdef TensorVP:MaxWeight 21 5. newdef TensorVP:Incoming 22 525 newdef TensorVP:OutgoingVector 22 523 newdef TensorVP:OutgoingScalar 22 111 newdef TensorVP:Coupling 22 4.99 newdef TensorVP:MaxWeight 22 1.61535 newdef TensorVP:Incoming 23 525 newdef TensorVP:OutgoingVector 23 513 newdef TensorVP:OutgoingScalar 23 211 newdef TensorVP:Coupling 23 7.059 newdef TensorVP:MaxWeight 23 1.5842 newdef TensorVP:Incoming 24 515 newdef TensorVP:OutgoingVector 24 513 newdef TensorVP:OutgoingScalar 24 111 newdef TensorVP:Coupling 24 4.99 newdef TensorVP:MaxWeight 24 1.61501 newdef TensorVP:Incoming 25 515 newdef TensorVP:OutgoingVector 25 523 newdef TensorVP:OutgoingScalar 25 -211 newdef TensorVP:Coupling 25 7.059 newdef TensorVP:MaxWeight 25 1.58463 newdef TensorVP:Incoming 26 435 newdef TensorVP:OutgoingVector 26 423 newdef TensorVP:OutgoingScalar 26 321 newdef TensorVP:Coupling 26 13.09 newdef TensorVP:MaxWeight 26 1.78925 newdef TensorVP:Incoming 27 435 newdef TensorVP:OutgoingVector 27 413 newdef TensorVP:OutgoingScalar 27 311 newdef TensorVP:Coupling 27 13.09 newdef TensorVP:MaxWeight 27 2.06728 newdef TensorVP:Incoming 28 535 newdef TensorVP:OutgoingVector 28 523 newdef TensorVP:OutgoingScalar 28 -321 newdef TensorVP:Coupling 28 7.29 newdef TensorVP:MaxWeight 28 1.60271 newdef TensorVP:Incoming 29 535 newdef TensorVP:OutgoingVector 29 513 newdef TensorVP:OutgoingScalar 29 -311 newdef TensorVP:Coupling 29 9.43 newdef TensorVP:MaxWeight 29 1.59959 newdef TensorVP:Incoming 30 20555 newdef TensorVP:OutgoingVector 30 22 newdef TensorVP:OutgoingScalar 30 10551 newdef TensorVP:Coupling 30 1.11 newdef TensorVP:MaxWeight 30 1.82265 # create Herwig::TensorMesonVectorVectorDecayer TVV newdef TVV:Iteration 1 newdef TVV:Ntry 1000 newdef TVV:Points 10000 newdef TVV:GenerateIntermediates 0 newdef TVV:Incoming 0 115 newdef TVV:FirstOutgoing 0 22 newdef TVV:SecondOutgoing 0 22 newdef TVV:Coupling 0 0.00727 newdef TVV:MaxWeight 0 1.60102 newdef TVV:Incoming 1 225 newdef TVV:FirstOutgoing 1 22 newdef TVV:SecondOutgoing 1 22 newdef TVV:Coupling 1 0.01253 newdef TVV:MaxWeight 1 1.9 newdef TVV:Incoming 2 335 newdef TVV:FirstOutgoing 2 22 newdef TVV:SecondOutgoing 2 22 newdef TVV:Coupling 2 0.00161 newdef TVV:MaxWeight 2 1.60342 newdef TVV:Incoming 3 100555 newdef TVV:FirstOutgoing 3 553 newdef TVV:SecondOutgoing 3 223 newdef TVV:Coupling 3 0.0118 newdef TVV:MaxWeight 3 1.80247 newdef TVV:Incoming 4 100555 newdef TVV:FirstOutgoing 4 553 newdef TVV:SecondOutgoing 4 22 newdef TVV:Coupling 4 0.0172 newdef TVV:MaxWeight 4 1.61188 newdef TVV:Incoming 5 100555 newdef TVV:FirstOutgoing 5 100553 newdef TVV:SecondOutgoing 5 22 newdef TVV:Coupling 5 0.145 newdef TVV:MaxWeight 5 1.61121 newdef TVV:Incoming 6 100555 newdef TVV:FirstOutgoing 6 333 newdef TVV:SecondOutgoing 6 333 newdef TVV:Coupling 6 0.00483 newdef TVV:MaxWeight 6 17.0515 newdef TVV:Incoming 7 445 newdef TVV:FirstOutgoing 7 443 newdef TVV:SecondOutgoing 7 22 newdef TVV:Coupling 7 0.243 newdef TVV:MaxWeight 7 1.64486 newdef TVV:Incoming 8 445 newdef TVV:FirstOutgoing 8 323 newdef TVV:SecondOutgoing 8 -323 newdef TVV:Coupling 8 0.0056 newdef TVV:MaxWeight 8 15. newdef TVV:Incoming 9 445 newdef TVV:FirstOutgoing 9 313 newdef TVV:SecondOutgoing 9 -313 newdef TVV:Coupling 9 0.0056 newdef TVV:MaxWeight 9 18.9725 newdef TVV:Incoming 10 445 newdef TVV:FirstOutgoing 10 333 newdef TVV:SecondOutgoing 10 333 newdef TVV:Coupling 10 0.00418 newdef TVV:MaxWeight 10 10.6 newdef TVV:Incoming 11 445 newdef TVV:FirstOutgoing 11 22 newdef TVV:SecondOutgoing 11 22 newdef TVV:Coupling 11 0.00122 newdef TVV:MaxWeight 11 1.59743 newdef TVV:Incoming 12 555 newdef TVV:FirstOutgoing 12 553 newdef TVV:SecondOutgoing 12 22 newdef TVV:Coupling 12 0.0683 newdef TVV:MaxWeight 12 1.69405 newdef TVV:Incoming 13 115 newdef TVV:FirstOutgoing 13 223 newdef TVV:SecondOutgoing 13 113 newdef TVV:Coupling 13 23.1 newdef TVV:MaxWeight 13 25. newdef TVV:Incoming 14 215 newdef TVV:FirstOutgoing 14 223 newdef TVV:SecondOutgoing 14 213 newdef TVV:Coupling 14 23.1 newdef TVV:MaxWeight 14 25. newdef TVV:Incoming 15 225 newdef TVV:FirstOutgoing 15 113 newdef TVV:SecondOutgoing 15 113 newdef TVV:Coupling 15 11.7 newdef TVV:MaxWeight 15 24.5803 newdef TVV:Incoming 16 225 newdef TVV:FirstOutgoing 16 213 newdef TVV:SecondOutgoing 16 -213 newdef TVV:Coupling 16 16.5 newdef TVV:MaxWeight 16 25.1912 newdef TVV:Incoming 17 315 newdef TVV:FirstOutgoing 17 113 newdef TVV:SecondOutgoing 17 313 newdef TVV:Coupling 17 13.42 newdef TVV:MaxWeight 17 25.1576 newdef TVV:Incoming 18 315 newdef TVV:FirstOutgoing 18 -213 newdef TVV:SecondOutgoing 18 323 newdef TVV:Coupling 18 18.98 newdef TVV:MaxWeight 18 28.0583 newdef TVV:Incoming 19 325 newdef TVV:FirstOutgoing 19 113 newdef TVV:SecondOutgoing 19 323 newdef TVV:Coupling 19 13.42 newdef TVV:MaxWeight 19 26.8526 newdef TVV:Incoming 20 325 newdef TVV:FirstOutgoing 20 213 newdef TVV:SecondOutgoing 20 313 newdef TVV:Coupling 20 18.98 newdef TVV:MaxWeight 20 24.8093 newdef TVV:Incoming 21 445 newdef TVV:FirstOutgoing 21 223 newdef TVV:SecondOutgoing 21 223 newdef TVV:Coupling 21 0.00389 newdef TVV:MaxWeight 21 10.2336 # create Herwig::SemiLeptonicScalarDecayer ISGW newdef ISGW:Iteration 1 newdef ISGW:Ntry 500 newdef ISGW:Points 10000 newdef ISGW:GenerateIntermediates 1 insert ISGW:MaximumWeight 0 5.424e-05 insert ISGW:MaximumWeight 1 5.41804e-05 insert ISGW:MaximumWeight 2 3.893e-05 insert ISGW:MaximumWeight 3 7.59854e-05 insert ISGW:MaximumWeight 4 7.74351e-05 insert ISGW:MaximumWeight 5 5.13206e-05 insert ISGW:MaximumWeight 6 0.00136557 insert ISGW:MaximumWeight 7 0.00142736 insert ISGW:MaximumWeight 8 0.000823295 insert ISGW:MaximumWeight 9 3.0946e-05 insert ISGW:MaximumWeight 10 3.02772e-05 insert ISGW:MaximumWeight 11 1.1885e-05 insert ISGW:MaximumWeight 12 0.000139391 insert ISGW:MaximumWeight 13 0.000138853 insert ISGW:MaximumWeight 14 7.29822e-05 insert ISGW:MaximumWeight 15 0.000449845 insert ISGW:MaximumWeight 16 0.000482517 insert ISGW:MaximumWeight 17 0.000210263 insert ISGW:MaximumWeight 18 1.81584e-05 insert ISGW:MaximumWeight 19 1.8153e-05 insert ISGW:MaximumWeight 20 9.3705e-06 insert ISGW:MaximumWeight 21 6.15054e-05 insert ISGW:MaximumWeight 22 6.14914e-05 insert ISGW:MaximumWeight 23 4.59853e-05 insert ISGW:MaximumWeight 24 0.000997071 insert ISGW:MaximumWeight 25 0.000975911 insert ISGW:MaximumWeight 26 0.000445402 insert ISGW:MaximumWeight 27 3.33599e-05 insert ISGW:MaximumWeight 28 3.31068e-05 insert ISGW:MaximumWeight 29 1.27265e-05 insert ISGW:MaximumWeight 30 0.000309993 insert ISGW:MaximumWeight 31 0.000308636 insert ISGW:MaximumWeight 32 8.9226e-05 insert ISGW:MaximumWeight 33 0.000200307 insert ISGW:MaximumWeight 34 0.000200465 insert ISGW:MaximumWeight 35 0.000127083 insert ISGW:MaximumWeight 36 1.6939e-05 insert ISGW:MaximumWeight 37 1.72911e-05 insert ISGW:MaximumWeight 38 7.4697e-06 insert ISGW:MaximumWeight 39 0.120635 insert ISGW:MaximumWeight 40 0.11301 insert ISGW:MaximumWeight 41 0.0231386 insert ISGW:MaximumWeight 42 0.146282 insert ISGW:MaximumWeight 43 0.140715 insert ISGW:MaximumWeight 44 0.0370693 insert ISGW:MaximumWeight 45 0.00853693 insert ISGW:MaximumWeight 46 0.00852123 insert ISGW:MaximumWeight 47 0.000300696 insert ISGW:MaximumWeight 48 0.0229497 insert ISGW:MaximumWeight 49 0.0209246 insert ISGW:MaximumWeight 50 0.00104239 insert ISGW:MaximumWeight 51 0.00909127 insert ISGW:MaximumWeight 52 0.00891799 insert ISGW:MaximumWeight 53 0.000961694 insert ISGW:MaximumWeight 54 0.0048722 insert ISGW:MaximumWeight 55 0.00455352 insert ISGW:MaximumWeight 56 0.000321721 insert ISGW:MaximumWeight 57 0.00011395 insert ISGW:MaximumWeight 58 0.000113855 insert ISGW:MaximumWeight 59 8.51126e-05 insert ISGW:MaximumWeight 60 0.00150609 insert ISGW:MaximumWeight 61 0.00153757 insert ISGW:MaximumWeight 62 0.000747443 insert ISGW:MaximumWeight 63 6.09267e-05 insert ISGW:MaximumWeight 64 6.23095e-05 insert ISGW:MaximumWeight 65 2.30318e-05 insert ISGW:MaximumWeight 66 0.000552937 insert ISGW:MaximumWeight 67 0.000559378 insert ISGW:MaximumWeight 68 0.000162807 insert ISGW:MaximumWeight 69 0.000365874 insert ISGW:MaximumWeight 70 0.000364205 insert ISGW:MaximumWeight 71 0.000233785 insert ISGW:MaximumWeight 72 3.16293e-05 insert ISGW:MaximumWeight 73 3.18219e-05 insert ISGW:MaximumWeight 74 1.37143e-05 insert ISGW:MaximumWeight 75 0.110313 insert ISGW:MaximumWeight 76 0.103445 insert ISGW:MaximumWeight 77 0.0210801 insert ISGW:MaximumWeight 78 0.147362 insert ISGW:MaximumWeight 79 0.147419 insert ISGW:MaximumWeight 80 0.0384639 insert ISGW:MaximumWeight 81 0.0111543 insert ISGW:MaximumWeight 82 0.0103842 insert ISGW:MaximumWeight 83 0.000319557 insert ISGW:MaximumWeight 84 0.0211162 insert ISGW:MaximumWeight 85 0.0193068 insert ISGW:MaximumWeight 86 0.000966967 insert ISGW:MaximumWeight 87 0.00819478 insert ISGW:MaximumWeight 88 0.00823409 insert ISGW:MaximumWeight 89 0.000922852 insert ISGW:MaximumWeight 90 0.00451283 insert ISGW:MaximumWeight 91 0.00419498 insert ISGW:MaximumWeight 92 0.000294157 insert ISGW:MaximumWeight 93 0.00578922 insert ISGW:MaximumWeight 94 0.00516882 insert ISGW:MaximumWeight 95 0.00492885 insert ISGW:MaximumWeight 96 0.00482429 insert ISGW:MaximumWeight 97 2.25872e-06 insert ISGW:MaximumWeight 98 1.87372e-06 insert ISGW:MaximumWeight 99 0.000308952 insert ISGW:MaximumWeight 100 0.000227327 insert ISGW:MaximumWeight 101 0.000319546 insert ISGW:MaximumWeight 102 0.000269116 insert ISGW:MaximumWeight 103 3.55367e-05 insert ISGW:MaximumWeight 104 2.49126e-05 insert ISGW:MaximumWeight 105 0.127728 insert ISGW:MaximumWeight 106 0.107291 insert ISGW:MaximumWeight 107 0.0670801 insert ISGW:MaximumWeight 108 0.0655003 insert ISGW:MaximumWeight 109 3.5304e-05 insert ISGW:MaximumWeight 110 2.5821e-05 insert ISGW:MaximumWeight 111 0.0023046 insert ISGW:MaximumWeight 112 0.00152967 insert ISGW:MaximumWeight 113 0.000513018 insert ISGW:MaximumWeight 114 0.000456772 insert ISGW:MaximumWeight 115 0.00229334 insert ISGW:MaximumWeight 116 0.00182456 insert ISGW:MaximumWeight 117 0.00357344 insert ISGW:MaximumWeight 118 0.00305374 insert ISGW:MaximumWeight 119 0.00155629 insert ISGW:MaximumWeight 120 0.00121146 insert ISGW:MaximumWeight 121 0.0129117 insert ISGW:MaximumWeight 122 0.0127254 insert ISGW:MaximumWeight 123 8.71673e-06 insert ISGW:MaximumWeight 124 8.13552e-06 insert ISGW:MaximumWeight 125 0.000669791 insert ISGW:MaximumWeight 126 0.000503811 insert ISGW:MaximumWeight 127 0.000192319 insert ISGW:MaximumWeight 128 0.000174441 insert ISGW:MaximumWeight 129 3.41743e-05 insert ISGW:MaximumWeight 130 2.08608e-05 insert ISGW:MaximumWeight 131 0.00733276 insert ISGW:MaximumWeight 132 0.00655274 insert ISGW:MaximumWeight 133 0.00633683 insert ISGW:MaximumWeight 134 0.00619396 insert ISGW:MaximumWeight 135 3.00359e-06 insert ISGW:MaximumWeight 136 2.49679e-06 insert ISGW:MaximumWeight 137 0.000406841 insert ISGW:MaximumWeight 138 0.000300569 insert ISGW:MaximumWeight 139 0.000419858 insert ISGW:MaximumWeight 140 0.000352772 insert ISGW:MaximumWeight 141 4.70378e-05 insert ISGW:MaximumWeight 142 3.28597e-05 insert ISGW:MaximumWeight 143 0.325353 insert ISGW:MaximumWeight 144 0.27348 insert ISGW:MaximumWeight 145 0.169488 insert ISGW:MaximumWeight 146 0.165556 insert ISGW:MaximumWeight 147 9.51603e-05 insert ISGW:MaximumWeight 148 7.10445e-05 insert ISGW:MaximumWeight 149 0.00591948 insert ISGW:MaximumWeight 150 0.00402664 insert ISGW:MaximumWeight 151 0.00135309 insert ISGW:MaximumWeight 152 0.00118354 insert ISGW:MaximumWeight 153 0.00575264 insert ISGW:MaximumWeight 154 0.0045926 create Herwig::LeptonNeutrinoCurrent ISGWCurrent HwWeakCurrents.so newdef ISGWCurrent:Quark 0 11 newdef ISGWCurrent:AntiQuark 0 -12 newdef ISGWCurrent:Quark 1 13 newdef ISGWCurrent:AntiQuark 1 -15 newdef ISGWCurrent:Quark 2 15 newdef ISGWCurrent:AntiQuark 2 -16 newdef ISGW:Current ISGWCurrent create Herwig::ISGWFormFactor ISGWFormFactor newdef ISGWFormFactor:Kappa 0.7 newdef ISGWFormFactor:DownMass 0.33 newdef ISGWFormFactor:UpMass 0.33 newdef ISGWFormFactor:StrangeMass 0.55 newdef ISGWFormFactor:CharmMass 1.82 newdef ISGWFormFactor:BottomMass 5.12 newdef ISGWFormFactor:BetaSud 0.31 newdef ISGWFormFactor:BetaSus 0.34 newdef ISGWFormFactor:BetaSuc 0.39 newdef ISGWFormFactor:BetaSub 0.41 newdef ISGWFormFactor:BetaPud 0.27 newdef ISGWFormFactor:BetaPus 0.3 newdef ISGWFormFactor:BetaPuc 0.34 newdef ISGWFormFactor:ThetaEtaEtaPrime -0.174533 newdef ISGWFormFactor:Incoming 0 -521 newdef ISGWFormFactor:Outgoing 0 -211 newdef ISGWFormFactor:Spin 0 0 newdef ISGWFormFactor:Spectator 0 -2 newdef ISGWFormFactor:InQuark 0 5 newdef ISGWFormFactor:OutQuark 0 1 newdef ISGWFormFactor:Incoming 1 -521 newdef ISGWFormFactor:Outgoing 1 -213 newdef ISGWFormFactor:Spin 1 1 newdef ISGWFormFactor:Spectator 1 -2 newdef ISGWFormFactor:InQuark 1 5 newdef ISGWFormFactor:OutQuark 1 1 newdef ISGWFormFactor:Incoming 2 -521 newdef ISGWFormFactor:Outgoing 2 -215 newdef ISGWFormFactor:Spin 2 2 newdef ISGWFormFactor:Spectator 2 -2 newdef ISGWFormFactor:InQuark 2 5 newdef ISGWFormFactor:OutQuark 2 1 newdef ISGWFormFactor:Incoming 3 -521 newdef ISGWFormFactor:Outgoing 3 -10213 newdef ISGWFormFactor:Spin 3 1 newdef ISGWFormFactor:Spectator 3 -2 newdef ISGWFormFactor:InQuark 3 5 newdef ISGWFormFactor:OutQuark 3 1 newdef ISGWFormFactor:Incoming 4 -521 newdef ISGWFormFactor:Outgoing 4 -20213 newdef ISGWFormFactor:Spin 4 1 newdef ISGWFormFactor:Spectator 4 -2 newdef ISGWFormFactor:InQuark 4 5 newdef ISGWFormFactor:OutQuark 4 1 newdef ISGWFormFactor:Incoming 5 -521 newdef ISGWFormFactor:Outgoing 5 -10211 newdef ISGWFormFactor:Spin 5 0 newdef ISGWFormFactor:Spectator 5 -2 newdef ISGWFormFactor:InQuark 5 5 newdef ISGWFormFactor:OutQuark 5 1 newdef ISGWFormFactor:Incoming 6 -521 newdef ISGWFormFactor:Outgoing 6 221 newdef ISGWFormFactor:Spin 6 0 newdef ISGWFormFactor:Spectator 6 -2 newdef ISGWFormFactor:InQuark 6 5 newdef ISGWFormFactor:OutQuark 6 2 newdef ISGWFormFactor:Incoming 7 -521 newdef ISGWFormFactor:Outgoing 7 331 newdef ISGWFormFactor:Spin 7 0 newdef ISGWFormFactor:Spectator 7 -2 newdef ISGWFormFactor:InQuark 7 5 newdef ISGWFormFactor:OutQuark 7 2 newdef ISGWFormFactor:Incoming 8 -521 newdef ISGWFormFactor:Outgoing 8 223 newdef ISGWFormFactor:Spin 8 1 newdef ISGWFormFactor:Spectator 8 -2 newdef ISGWFormFactor:InQuark 8 5 newdef ISGWFormFactor:OutQuark 8 2 newdef ISGWFormFactor:Incoming 9 -521 newdef ISGWFormFactor:Outgoing 9 225 newdef ISGWFormFactor:Spin 9 2 newdef ISGWFormFactor:Spectator 9 -2 newdef ISGWFormFactor:InQuark 9 5 newdef ISGWFormFactor:OutQuark 9 2 newdef ISGWFormFactor:Incoming 10 -521 newdef ISGWFormFactor:Outgoing 10 10223 newdef ISGWFormFactor:Spin 10 1 newdef ISGWFormFactor:Spectator 10 -2 newdef ISGWFormFactor:InQuark 10 5 newdef ISGWFormFactor:OutQuark 10 2 newdef ISGWFormFactor:Incoming 11 -521 newdef ISGWFormFactor:Outgoing 11 20223 newdef ISGWFormFactor:Spin 11 1 newdef ISGWFormFactor:Spectator 11 -2 newdef ISGWFormFactor:InQuark 11 5 newdef ISGWFormFactor:OutQuark 11 2 newdef ISGWFormFactor:Incoming 12 -521 newdef ISGWFormFactor:Outgoing 12 10221 newdef ISGWFormFactor:Spin 12 0 newdef ISGWFormFactor:Spectator 12 -2 newdef ISGWFormFactor:InQuark 12 5 newdef ISGWFormFactor:OutQuark 12 2 newdef ISGWFormFactor:Incoming 13 -521 newdef ISGWFormFactor:Outgoing 13 111 newdef ISGWFormFactor:Spin 13 0 newdef ISGWFormFactor:Spectator 13 -2 newdef ISGWFormFactor:InQuark 13 5 newdef ISGWFormFactor:OutQuark 13 2 newdef ISGWFormFactor:Incoming 14 -521 newdef ISGWFormFactor:Outgoing 14 113 newdef ISGWFormFactor:Spin 14 1 newdef ISGWFormFactor:Spectator 14 -2 newdef ISGWFormFactor:InQuark 14 5 newdef ISGWFormFactor:OutQuark 14 2 newdef ISGWFormFactor:Incoming 15 -521 newdef ISGWFormFactor:Outgoing 15 115 newdef ISGWFormFactor:Spin 15 2 newdef ISGWFormFactor:Spectator 15 -2 newdef ISGWFormFactor:InQuark 15 5 newdef ISGWFormFactor:OutQuark 15 2 newdef ISGWFormFactor:Incoming 16 -521 newdef ISGWFormFactor:Outgoing 16 10113 newdef ISGWFormFactor:Spin 16 1 newdef ISGWFormFactor:Spectator 16 -2 newdef ISGWFormFactor:InQuark 16 5 newdef ISGWFormFactor:OutQuark 16 2 newdef ISGWFormFactor:Incoming 17 -521 newdef ISGWFormFactor:Outgoing 17 20113 newdef ISGWFormFactor:Spin 17 1 newdef ISGWFormFactor:Spectator 17 -2 newdef ISGWFormFactor:InQuark 17 5 newdef ISGWFormFactor:OutQuark 17 2 newdef ISGWFormFactor:Incoming 18 -521 newdef ISGWFormFactor:Outgoing 18 10111 newdef ISGWFormFactor:Spin 18 0 newdef ISGWFormFactor:Spectator 18 -2 newdef ISGWFormFactor:InQuark 18 5 newdef ISGWFormFactor:OutQuark 18 2 newdef ISGWFormFactor:Incoming 19 -521 newdef ISGWFormFactor:Outgoing 19 -321 newdef ISGWFormFactor:Spin 19 0 newdef ISGWFormFactor:Spectator 19 -2 newdef ISGWFormFactor:InQuark 19 5 newdef ISGWFormFactor:OutQuark 19 3 newdef ISGWFormFactor:Incoming 20 -521 newdef ISGWFormFactor:Outgoing 20 -323 newdef ISGWFormFactor:Spin 20 1 newdef ISGWFormFactor:Spectator 20 -2 newdef ISGWFormFactor:InQuark 20 5 newdef ISGWFormFactor:OutQuark 20 3 newdef ISGWFormFactor:Incoming 21 -521 newdef ISGWFormFactor:Outgoing 21 -325 newdef ISGWFormFactor:Spin 21 2 newdef ISGWFormFactor:Spectator 21 -2 newdef ISGWFormFactor:InQuark 21 5 newdef ISGWFormFactor:OutQuark 21 3 newdef ISGWFormFactor:Incoming 22 -521 newdef ISGWFormFactor:Outgoing 22 -10323 newdef ISGWFormFactor:Spin 22 1 newdef ISGWFormFactor:Spectator 22 -2 newdef ISGWFormFactor:InQuark 22 5 newdef ISGWFormFactor:OutQuark 22 3 newdef ISGWFormFactor:Incoming 23 -521 newdef ISGWFormFactor:Outgoing 23 -20323 newdef ISGWFormFactor:Spin 23 1 newdef ISGWFormFactor:Spectator 23 -2 newdef ISGWFormFactor:InQuark 23 5 newdef ISGWFormFactor:OutQuark 23 3 newdef ISGWFormFactor:Incoming 24 -521 newdef ISGWFormFactor:Outgoing 24 -10321 newdef ISGWFormFactor:Spin 24 0 newdef ISGWFormFactor:Spectator 24 -2 newdef ISGWFormFactor:InQuark 24 5 newdef ISGWFormFactor:OutQuark 24 3 newdef ISGWFormFactor:Incoming 25 -521 newdef ISGWFormFactor:Outgoing 25 421 newdef ISGWFormFactor:Spin 25 0 newdef ISGWFormFactor:Spectator 25 -2 newdef ISGWFormFactor:InQuark 25 5 newdef ISGWFormFactor:OutQuark 25 4 newdef ISGWFormFactor:Incoming 26 -521 newdef ISGWFormFactor:Outgoing 26 423 newdef ISGWFormFactor:Spin 26 1 newdef ISGWFormFactor:Spectator 26 -2 newdef ISGWFormFactor:InQuark 26 5 newdef ISGWFormFactor:OutQuark 26 4 newdef ISGWFormFactor:Incoming 27 -521 newdef ISGWFormFactor:Outgoing 27 425 newdef ISGWFormFactor:Spin 27 2 newdef ISGWFormFactor:Spectator 27 -2 newdef ISGWFormFactor:InQuark 27 5 newdef ISGWFormFactor:OutQuark 27 4 newdef ISGWFormFactor:Incoming 28 -521 newdef ISGWFormFactor:Outgoing 28 10423 newdef ISGWFormFactor:Spin 28 1 newdef ISGWFormFactor:Spectator 28 -2 newdef ISGWFormFactor:InQuark 28 5 newdef ISGWFormFactor:OutQuark 28 4 newdef ISGWFormFactor:Incoming 29 -521 newdef ISGWFormFactor:Outgoing 29 20423 newdef ISGWFormFactor:Spin 29 1 newdef ISGWFormFactor:Spectator 29 -2 newdef ISGWFormFactor:InQuark 29 5 newdef ISGWFormFactor:OutQuark 29 4 newdef ISGWFormFactor:Incoming 30 -521 newdef ISGWFormFactor:Outgoing 30 10421 newdef ISGWFormFactor:Spin 30 0 newdef ISGWFormFactor:Spectator 30 -2 newdef ISGWFormFactor:InQuark 30 5 newdef ISGWFormFactor:OutQuark 30 4 newdef ISGWFormFactor:Incoming 31 -511 newdef ISGWFormFactor:Outgoing 31 221 newdef ISGWFormFactor:Spin 31 0 newdef ISGWFormFactor:Spectator 31 1 newdef ISGWFormFactor:InQuark 31 -5 newdef ISGWFormFactor:OutQuark 31 -1 newdef ISGWFormFactor:Incoming 32 -511 newdef ISGWFormFactor:Outgoing 32 331 newdef ISGWFormFactor:Spin 32 0 newdef ISGWFormFactor:Spectator 32 1 newdef ISGWFormFactor:InQuark 32 -5 newdef ISGWFormFactor:OutQuark 32 -1 newdef ISGWFormFactor:Incoming 33 -511 newdef ISGWFormFactor:Outgoing 33 223 newdef ISGWFormFactor:Spin 33 1 newdef ISGWFormFactor:Spectator 33 1 newdef ISGWFormFactor:InQuark 33 -5 newdef ISGWFormFactor:OutQuark 33 -1 newdef ISGWFormFactor:Incoming 34 -511 newdef ISGWFormFactor:Outgoing 34 225 newdef ISGWFormFactor:Spin 34 2 newdef ISGWFormFactor:Spectator 34 1 newdef ISGWFormFactor:InQuark 34 -5 newdef ISGWFormFactor:OutQuark 34 -1 newdef ISGWFormFactor:Incoming 35 -511 newdef ISGWFormFactor:Outgoing 35 10223 newdef ISGWFormFactor:Spin 35 1 newdef ISGWFormFactor:Spectator 35 1 newdef ISGWFormFactor:InQuark 35 -5 newdef ISGWFormFactor:OutQuark 35 -1 newdef ISGWFormFactor:Incoming 36 -511 newdef ISGWFormFactor:Outgoing 36 20223 newdef ISGWFormFactor:Spin 36 1 newdef ISGWFormFactor:Spectator 36 1 newdef ISGWFormFactor:InQuark 36 -5 newdef ISGWFormFactor:OutQuark 36 -1 newdef ISGWFormFactor:Incoming 37 -511 newdef ISGWFormFactor:Outgoing 37 10221 newdef ISGWFormFactor:Spin 37 0 newdef ISGWFormFactor:Spectator 37 1 newdef ISGWFormFactor:InQuark 37 -5 newdef ISGWFormFactor:OutQuark 37 -1 newdef ISGWFormFactor:Incoming 38 -511 newdef ISGWFormFactor:Outgoing 38 111 newdef ISGWFormFactor:Spin 38 0 newdef ISGWFormFactor:Spectator 38 1 newdef ISGWFormFactor:InQuark 38 -5 newdef ISGWFormFactor:OutQuark 38 -1 newdef ISGWFormFactor:Incoming 39 -511 newdef ISGWFormFactor:Outgoing 39 113 newdef ISGWFormFactor:Spin 39 1 newdef ISGWFormFactor:Spectator 39 1 newdef ISGWFormFactor:InQuark 39 -5 newdef ISGWFormFactor:OutQuark 39 -1 newdef ISGWFormFactor:Incoming 40 -511 newdef ISGWFormFactor:Outgoing 40 115 newdef ISGWFormFactor:Spin 40 2 newdef ISGWFormFactor:Spectator 40 1 newdef ISGWFormFactor:InQuark 40 -5 newdef ISGWFormFactor:OutQuark 40 -1 newdef ISGWFormFactor:Incoming 41 -511 newdef ISGWFormFactor:Outgoing 41 10113 newdef ISGWFormFactor:Spin 41 1 newdef ISGWFormFactor:Spectator 41 1 newdef ISGWFormFactor:InQuark 41 -5 newdef ISGWFormFactor:OutQuark 41 -1 newdef ISGWFormFactor:Incoming 42 -511 newdef ISGWFormFactor:Outgoing 42 20113 newdef ISGWFormFactor:Spin 42 1 newdef ISGWFormFactor:Spectator 42 1 newdef ISGWFormFactor:InQuark 42 -5 newdef ISGWFormFactor:OutQuark 42 -1 newdef ISGWFormFactor:Incoming 43 -511 newdef ISGWFormFactor:Outgoing 43 10111 newdef ISGWFormFactor:Spin 43 0 newdef ISGWFormFactor:Spectator 43 1 newdef ISGWFormFactor:InQuark 43 -5 newdef ISGWFormFactor:OutQuark 43 -1 newdef ISGWFormFactor:Incoming 44 -511 newdef ISGWFormFactor:Outgoing 44 211 newdef ISGWFormFactor:Spin 44 0 newdef ISGWFormFactor:Spectator 44 1 newdef ISGWFormFactor:InQuark 44 -5 newdef ISGWFormFactor:OutQuark 44 -2 newdef ISGWFormFactor:Incoming 45 -511 newdef ISGWFormFactor:Outgoing 45 213 newdef ISGWFormFactor:Spin 45 1 newdef ISGWFormFactor:Spectator 45 1 newdef ISGWFormFactor:InQuark 45 -5 newdef ISGWFormFactor:OutQuark 45 -2 newdef ISGWFormFactor:Incoming 46 -511 newdef ISGWFormFactor:Outgoing 46 215 newdef ISGWFormFactor:Spin 46 2 newdef ISGWFormFactor:Spectator 46 1 newdef ISGWFormFactor:InQuark 46 -5 newdef ISGWFormFactor:OutQuark 46 -2 newdef ISGWFormFactor:Incoming 47 -511 newdef ISGWFormFactor:Outgoing 47 10213 newdef ISGWFormFactor:Spin 47 1 newdef ISGWFormFactor:Spectator 47 1 newdef ISGWFormFactor:InQuark 47 -5 newdef ISGWFormFactor:OutQuark 47 -2 newdef ISGWFormFactor:Incoming 48 -511 newdef ISGWFormFactor:Outgoing 48 20213 newdef ISGWFormFactor:Spin 48 1 newdef ISGWFormFactor:Spectator 48 1 newdef ISGWFormFactor:InQuark 48 -5 newdef ISGWFormFactor:OutQuark 48 -2 newdef ISGWFormFactor:Incoming 49 -511 newdef ISGWFormFactor:Outgoing 49 10211 newdef ISGWFormFactor:Spin 49 0 newdef ISGWFormFactor:Spectator 49 1 newdef ISGWFormFactor:InQuark 49 -5 newdef ISGWFormFactor:OutQuark 49 -2 newdef ISGWFormFactor:Incoming 50 -511 newdef ISGWFormFactor:Outgoing 50 311 newdef ISGWFormFactor:Spin 50 0 newdef ISGWFormFactor:Spectator 50 1 newdef ISGWFormFactor:InQuark 50 -5 newdef ISGWFormFactor:OutQuark 50 -3 newdef ISGWFormFactor:Incoming 51 -511 newdef ISGWFormFactor:Outgoing 51 313 newdef ISGWFormFactor:Spin 51 1 newdef ISGWFormFactor:Spectator 51 1 newdef ISGWFormFactor:InQuark 51 -5 newdef ISGWFormFactor:OutQuark 51 -3 newdef ISGWFormFactor:Incoming 52 -511 newdef ISGWFormFactor:Outgoing 52 315 newdef ISGWFormFactor:Spin 52 2 newdef ISGWFormFactor:Spectator 52 1 newdef ISGWFormFactor:InQuark 52 -5 newdef ISGWFormFactor:OutQuark 52 -3 newdef ISGWFormFactor:Incoming 53 -511 newdef ISGWFormFactor:Outgoing 53 10313 newdef ISGWFormFactor:Spin 53 1 newdef ISGWFormFactor:Spectator 53 1 newdef ISGWFormFactor:InQuark 53 -5 newdef ISGWFormFactor:OutQuark 53 -3 newdef ISGWFormFactor:Incoming 54 -511 newdef ISGWFormFactor:Outgoing 54 20313 newdef ISGWFormFactor:Spin 54 1 newdef ISGWFormFactor:Spectator 54 1 newdef ISGWFormFactor:InQuark 54 -5 newdef ISGWFormFactor:OutQuark 54 -3 newdef ISGWFormFactor:Incoming 55 -511 newdef ISGWFormFactor:Outgoing 55 10311 newdef ISGWFormFactor:Spin 55 0 newdef ISGWFormFactor:Spectator 55 1 newdef ISGWFormFactor:InQuark 55 -5 newdef ISGWFormFactor:OutQuark 55 -3 newdef ISGWFormFactor:Incoming 56 -511 newdef ISGWFormFactor:Outgoing 56 411 newdef ISGWFormFactor:Spin 56 0 newdef ISGWFormFactor:Spectator 56 1 newdef ISGWFormFactor:InQuark 56 -5 newdef ISGWFormFactor:OutQuark 56 -4 newdef ISGWFormFactor:Incoming 57 -511 newdef ISGWFormFactor:Outgoing 57 413 newdef ISGWFormFactor:Spin 57 1 newdef ISGWFormFactor:Spectator 57 1 newdef ISGWFormFactor:InQuark 57 -5 newdef ISGWFormFactor:OutQuark 57 -4 newdef ISGWFormFactor:Incoming 58 -511 newdef ISGWFormFactor:Outgoing 58 415 newdef ISGWFormFactor:Spin 58 2 newdef ISGWFormFactor:Spectator 58 1 newdef ISGWFormFactor:InQuark 58 -5 newdef ISGWFormFactor:OutQuark 58 -4 newdef ISGWFormFactor:Incoming 59 -511 newdef ISGWFormFactor:Outgoing 59 10413 newdef ISGWFormFactor:Spin 59 1 newdef ISGWFormFactor:Spectator 59 1 newdef ISGWFormFactor:InQuark 59 -5 newdef ISGWFormFactor:OutQuark 59 -4 newdef ISGWFormFactor:Incoming 60 -511 newdef ISGWFormFactor:Outgoing 60 20413 newdef ISGWFormFactor:Spin 60 1 newdef ISGWFormFactor:Spectator 60 1 newdef ISGWFormFactor:InQuark 60 -5 newdef ISGWFormFactor:OutQuark 60 -4 newdef ISGWFormFactor:Incoming 61 -511 newdef ISGWFormFactor:Outgoing 61 10411 newdef ISGWFormFactor:Spin 61 0 newdef ISGWFormFactor:Spectator 61 1 newdef ISGWFormFactor:InQuark 61 -5 newdef ISGWFormFactor:OutQuark 61 -4 newdef ISGWFormFactor:Incoming 62 421 newdef ISGWFormFactor:Outgoing 62 -211 newdef ISGWFormFactor:Spin 62 0 newdef ISGWFormFactor:Spectator 62 -2 newdef ISGWFormFactor:InQuark 62 4 newdef ISGWFormFactor:OutQuark 62 1 newdef ISGWFormFactor:Incoming 63 421 newdef ISGWFormFactor:Outgoing 63 -213 newdef ISGWFormFactor:Spin 63 1 newdef ISGWFormFactor:Spectator 63 -2 newdef ISGWFormFactor:InQuark 63 4 newdef ISGWFormFactor:OutQuark 63 1 newdef ISGWFormFactor:Incoming 64 421 newdef ISGWFormFactor:Outgoing 64 -215 newdef ISGWFormFactor:Spin 64 2 newdef ISGWFormFactor:Spectator 64 -2 newdef ISGWFormFactor:InQuark 64 4 newdef ISGWFormFactor:OutQuark 64 1 newdef ISGWFormFactor:Incoming 65 421 newdef ISGWFormFactor:Outgoing 65 -10213 newdef ISGWFormFactor:Spin 65 1 newdef ISGWFormFactor:Spectator 65 -2 newdef ISGWFormFactor:InQuark 65 4 newdef ISGWFormFactor:OutQuark 65 1 newdef ISGWFormFactor:Incoming 66 421 newdef ISGWFormFactor:Outgoing 66 -20213 newdef ISGWFormFactor:Spin 66 1 newdef ISGWFormFactor:Spectator 66 -2 newdef ISGWFormFactor:InQuark 66 4 newdef ISGWFormFactor:OutQuark 66 1 newdef ISGWFormFactor:Incoming 67 421 newdef ISGWFormFactor:Outgoing 67 -10211 newdef ISGWFormFactor:Spin 67 0 newdef ISGWFormFactor:Spectator 67 -2 newdef ISGWFormFactor:InQuark 67 4 newdef ISGWFormFactor:OutQuark 67 1 newdef ISGWFormFactor:Incoming 68 421 newdef ISGWFormFactor:Outgoing 68 111 newdef ISGWFormFactor:Spin 68 0 newdef ISGWFormFactor:Spectator 68 -2 newdef ISGWFormFactor:InQuark 68 4 newdef ISGWFormFactor:OutQuark 68 2 newdef ISGWFormFactor:Incoming 69 421 newdef ISGWFormFactor:Outgoing 69 113 newdef ISGWFormFactor:Spin 69 1 newdef ISGWFormFactor:Spectator 69 -2 newdef ISGWFormFactor:InQuark 69 4 newdef ISGWFormFactor:OutQuark 69 2 newdef ISGWFormFactor:Incoming 70 421 newdef ISGWFormFactor:Outgoing 70 115 newdef ISGWFormFactor:Spin 70 2 newdef ISGWFormFactor:Spectator 70 -2 newdef ISGWFormFactor:InQuark 70 4 newdef ISGWFormFactor:OutQuark 70 2 newdef ISGWFormFactor:Incoming 71 421 newdef ISGWFormFactor:Outgoing 71 10113 newdef ISGWFormFactor:Spin 71 1 newdef ISGWFormFactor:Spectator 71 -2 newdef ISGWFormFactor:InQuark 71 4 newdef ISGWFormFactor:OutQuark 71 2 newdef ISGWFormFactor:Incoming 72 421 newdef ISGWFormFactor:Outgoing 72 20113 newdef ISGWFormFactor:Spin 72 1 newdef ISGWFormFactor:Spectator 72 -2 newdef ISGWFormFactor:InQuark 72 4 newdef ISGWFormFactor:OutQuark 72 2 newdef ISGWFormFactor:Incoming 73 421 newdef ISGWFormFactor:Outgoing 73 10111 newdef ISGWFormFactor:Spin 73 0 newdef ISGWFormFactor:Spectator 73 -2 newdef ISGWFormFactor:InQuark 73 4 newdef ISGWFormFactor:OutQuark 73 2 newdef ISGWFormFactor:Incoming 74 421 newdef ISGWFormFactor:Outgoing 74 221 newdef ISGWFormFactor:Spin 74 0 newdef ISGWFormFactor:Spectator 74 -2 newdef ISGWFormFactor:InQuark 74 4 newdef ISGWFormFactor:OutQuark 74 2 newdef ISGWFormFactor:Incoming 75 421 newdef ISGWFormFactor:Outgoing 75 331 newdef ISGWFormFactor:Spin 75 0 newdef ISGWFormFactor:Spectator 75 -2 newdef ISGWFormFactor:InQuark 75 4 newdef ISGWFormFactor:OutQuark 75 2 newdef ISGWFormFactor:Incoming 76 421 newdef ISGWFormFactor:Outgoing 76 223 newdef ISGWFormFactor:Spin 76 1 newdef ISGWFormFactor:Spectator 76 -2 newdef ISGWFormFactor:InQuark 76 4 newdef ISGWFormFactor:OutQuark 76 2 newdef ISGWFormFactor:Incoming 77 421 newdef ISGWFormFactor:Outgoing 77 225 newdef ISGWFormFactor:Spin 77 2 newdef ISGWFormFactor:Spectator 77 -2 newdef ISGWFormFactor:InQuark 77 4 newdef ISGWFormFactor:OutQuark 77 2 newdef ISGWFormFactor:Incoming 78 421 newdef ISGWFormFactor:Outgoing 78 10223 newdef ISGWFormFactor:Spin 78 1 newdef ISGWFormFactor:Spectator 78 -2 newdef ISGWFormFactor:InQuark 78 4 newdef ISGWFormFactor:OutQuark 78 2 newdef ISGWFormFactor:Incoming 79 421 newdef ISGWFormFactor:Outgoing 79 20223 newdef ISGWFormFactor:Spin 79 1 newdef ISGWFormFactor:Spectator 79 -2 newdef ISGWFormFactor:InQuark 79 4 newdef ISGWFormFactor:OutQuark 79 2 newdef ISGWFormFactor:Incoming 80 421 newdef ISGWFormFactor:Outgoing 80 10221 newdef ISGWFormFactor:Spin 80 0 newdef ISGWFormFactor:Spectator 80 -2 newdef ISGWFormFactor:InQuark 80 4 newdef ISGWFormFactor:OutQuark 80 2 newdef ISGWFormFactor:Incoming 81 421 newdef ISGWFormFactor:Outgoing 81 -321 newdef ISGWFormFactor:Spin 81 0 newdef ISGWFormFactor:Spectator 81 -2 newdef ISGWFormFactor:InQuark 81 4 newdef ISGWFormFactor:OutQuark 81 3 newdef ISGWFormFactor:Incoming 82 421 newdef ISGWFormFactor:Outgoing 82 -323 newdef ISGWFormFactor:Spin 82 1 newdef ISGWFormFactor:Spectator 82 -2 newdef ISGWFormFactor:InQuark 82 4 newdef ISGWFormFactor:OutQuark 82 3 newdef ISGWFormFactor:Incoming 83 421 newdef ISGWFormFactor:Outgoing 83 -325 newdef ISGWFormFactor:Spin 83 2 newdef ISGWFormFactor:Spectator 83 -2 newdef ISGWFormFactor:InQuark 83 4 newdef ISGWFormFactor:OutQuark 83 3 newdef ISGWFormFactor:Incoming 84 421 newdef ISGWFormFactor:Outgoing 84 -10323 newdef ISGWFormFactor:Spin 84 1 newdef ISGWFormFactor:Spectator 84 -2 newdef ISGWFormFactor:InQuark 84 4 newdef ISGWFormFactor:OutQuark 84 3 newdef ISGWFormFactor:Incoming 85 421 newdef ISGWFormFactor:Outgoing 85 -20323 newdef ISGWFormFactor:Spin 85 1 newdef ISGWFormFactor:Spectator 85 -2 newdef ISGWFormFactor:InQuark 85 4 newdef ISGWFormFactor:OutQuark 85 3 newdef ISGWFormFactor:Incoming 86 421 newdef ISGWFormFactor:Outgoing 86 -10321 newdef ISGWFormFactor:Spin 86 0 newdef ISGWFormFactor:Spectator 86 -2 newdef ISGWFormFactor:InQuark 86 4 newdef ISGWFormFactor:OutQuark 86 3 newdef ISGWFormFactor:Incoming 87 411 newdef ISGWFormFactor:Outgoing 87 221 newdef ISGWFormFactor:Spin 87 0 newdef ISGWFormFactor:Spectator 87 -1 newdef ISGWFormFactor:InQuark 87 4 newdef ISGWFormFactor:OutQuark 87 1 newdef ISGWFormFactor:Incoming 88 411 newdef ISGWFormFactor:Outgoing 88 331 newdef ISGWFormFactor:Spin 88 0 newdef ISGWFormFactor:Spectator 88 -1 newdef ISGWFormFactor:InQuark 88 4 newdef ISGWFormFactor:OutQuark 88 1 newdef ISGWFormFactor:Incoming 89 411 newdef ISGWFormFactor:Outgoing 89 223 newdef ISGWFormFactor:Spin 89 1 newdef ISGWFormFactor:Spectator 89 -1 newdef ISGWFormFactor:InQuark 89 4 newdef ISGWFormFactor:OutQuark 89 1 newdef ISGWFormFactor:Incoming 90 411 newdef ISGWFormFactor:Outgoing 90 225 newdef ISGWFormFactor:Spin 90 2 newdef ISGWFormFactor:Spectator 90 -1 newdef ISGWFormFactor:InQuark 90 4 newdef ISGWFormFactor:OutQuark 90 1 newdef ISGWFormFactor:Incoming 91 411 newdef ISGWFormFactor:Outgoing 91 10223 newdef ISGWFormFactor:Spin 91 1 newdef ISGWFormFactor:Spectator 91 -1 newdef ISGWFormFactor:InQuark 91 4 newdef ISGWFormFactor:OutQuark 91 1 newdef ISGWFormFactor:Incoming 92 411 newdef ISGWFormFactor:Outgoing 92 20223 newdef ISGWFormFactor:Spin 92 1 newdef ISGWFormFactor:Spectator 92 -1 newdef ISGWFormFactor:InQuark 92 4 newdef ISGWFormFactor:OutQuark 92 1 newdef ISGWFormFactor:Incoming 93 411 newdef ISGWFormFactor:Outgoing 93 10221 newdef ISGWFormFactor:Spin 93 0 newdef ISGWFormFactor:Spectator 93 -1 newdef ISGWFormFactor:InQuark 93 4 newdef ISGWFormFactor:OutQuark 93 1 newdef ISGWFormFactor:Incoming 94 411 newdef ISGWFormFactor:Outgoing 94 111 newdef ISGWFormFactor:Spin 94 0 newdef ISGWFormFactor:Spectator 94 -1 newdef ISGWFormFactor:InQuark 94 4 newdef ISGWFormFactor:OutQuark 94 1 newdef ISGWFormFactor:Incoming 95 411 newdef ISGWFormFactor:Outgoing 95 113 newdef ISGWFormFactor:Spin 95 1 newdef ISGWFormFactor:Spectator 95 -1 newdef ISGWFormFactor:InQuark 95 4 newdef ISGWFormFactor:OutQuark 95 1 newdef ISGWFormFactor:Incoming 96 411 newdef ISGWFormFactor:Outgoing 96 115 newdef ISGWFormFactor:Spin 96 2 newdef ISGWFormFactor:Spectator 96 -1 newdef ISGWFormFactor:InQuark 96 4 newdef ISGWFormFactor:OutQuark 96 1 newdef ISGWFormFactor:Incoming 97 411 newdef ISGWFormFactor:Outgoing 97 10113 newdef ISGWFormFactor:Spin 97 1 newdef ISGWFormFactor:Spectator 97 -1 newdef ISGWFormFactor:InQuark 97 4 newdef ISGWFormFactor:OutQuark 97 1 newdef ISGWFormFactor:Incoming 98 411 newdef ISGWFormFactor:Outgoing 98 20113 newdef ISGWFormFactor:Spin 98 1 newdef ISGWFormFactor:Spectator 98 -1 newdef ISGWFormFactor:InQuark 98 4 newdef ISGWFormFactor:OutQuark 98 1 newdef ISGWFormFactor:Incoming 99 411 newdef ISGWFormFactor:Outgoing 99 10111 newdef ISGWFormFactor:Spin 99 0 newdef ISGWFormFactor:Spectator 99 -1 newdef ISGWFormFactor:InQuark 99 4 newdef ISGWFormFactor:OutQuark 99 1 newdef ISGWFormFactor:Incoming 100 411 newdef ISGWFormFactor:Outgoing 100 211 newdef ISGWFormFactor:Spin 100 0 newdef ISGWFormFactor:Spectator 100 -1 newdef ISGWFormFactor:InQuark 100 4 newdef ISGWFormFactor:OutQuark 100 2 newdef ISGWFormFactor:Incoming 101 411 newdef ISGWFormFactor:Outgoing 101 213 newdef ISGWFormFactor:Spin 101 1 newdef ISGWFormFactor:Spectator 101 -1 newdef ISGWFormFactor:InQuark 101 4 newdef ISGWFormFactor:OutQuark 101 2 newdef ISGWFormFactor:Incoming 102 411 newdef ISGWFormFactor:Outgoing 102 215 newdef ISGWFormFactor:Spin 102 2 newdef ISGWFormFactor:Spectator 102 -1 newdef ISGWFormFactor:InQuark 102 4 newdef ISGWFormFactor:OutQuark 102 2 newdef ISGWFormFactor:Incoming 103 411 newdef ISGWFormFactor:Outgoing 103 10213 newdef ISGWFormFactor:Spin 103 1 newdef ISGWFormFactor:Spectator 103 -1 newdef ISGWFormFactor:InQuark 103 4 newdef ISGWFormFactor:OutQuark 103 2 newdef ISGWFormFactor:Incoming 104 411 newdef ISGWFormFactor:Outgoing 104 20213 newdef ISGWFormFactor:Spin 104 1 newdef ISGWFormFactor:Spectator 104 -1 newdef ISGWFormFactor:InQuark 104 4 newdef ISGWFormFactor:OutQuark 104 2 newdef ISGWFormFactor:Incoming 105 411 newdef ISGWFormFactor:Outgoing 105 10211 newdef ISGWFormFactor:Spin 105 0 newdef ISGWFormFactor:Spectator 105 -1 newdef ISGWFormFactor:InQuark 105 4 newdef ISGWFormFactor:OutQuark 105 2 newdef ISGWFormFactor:Incoming 106 411 newdef ISGWFormFactor:Outgoing 106 -311 newdef ISGWFormFactor:Spin 106 0 newdef ISGWFormFactor:Spectator 106 -1 newdef ISGWFormFactor:InQuark 106 4 newdef ISGWFormFactor:OutQuark 106 3 newdef ISGWFormFactor:Incoming 107 411 newdef ISGWFormFactor:Outgoing 107 -313 newdef ISGWFormFactor:Spin 107 1 newdef ISGWFormFactor:Spectator 107 -1 newdef ISGWFormFactor:InQuark 107 4 newdef ISGWFormFactor:OutQuark 107 3 newdef ISGWFormFactor:Incoming 108 411 newdef ISGWFormFactor:Outgoing 108 -315 newdef ISGWFormFactor:Spin 108 2 newdef ISGWFormFactor:Spectator 108 -1 newdef ISGWFormFactor:InQuark 108 4 newdef ISGWFormFactor:OutQuark 108 3 newdef ISGWFormFactor:Incoming 109 411 newdef ISGWFormFactor:Outgoing 109 -10313 newdef ISGWFormFactor:Spin 109 1 newdef ISGWFormFactor:Spectator 109 -1 newdef ISGWFormFactor:InQuark 109 4 newdef ISGWFormFactor:OutQuark 109 3 newdef ISGWFormFactor:Incoming 110 411 newdef ISGWFormFactor:Outgoing 110 -20313 newdef ISGWFormFactor:Spin 110 1 newdef ISGWFormFactor:Spectator 110 -1 newdef ISGWFormFactor:InQuark 110 4 newdef ISGWFormFactor:OutQuark 110 3 newdef ISGWFormFactor:Incoming 111 411 newdef ISGWFormFactor:Outgoing 111 -10311 newdef ISGWFormFactor:Spin 111 0 newdef ISGWFormFactor:Spectator 111 -1 newdef ISGWFormFactor:InQuark 111 4 newdef ISGWFormFactor:OutQuark 111 3 newdef ISGW:FormFactor ISGWFormFactor # create Herwig::SemiLeptonicScalarDecayer ISGW2 newdef ISGW2:Iteration 1 newdef ISGW2:Ntry 500 newdef ISGW2:Points 10000 newdef ISGW2:GenerateIntermediates 1 insert ISGW2:MaximumWeight 0 3.95005e-05 insert ISGW2:MaximumWeight 1 3.94637e-05 insert ISGW2:MaximumWeight 2 2.93349e-05 insert ISGW2:MaximumWeight 3 0.000150493 insert ISGW2:MaximumWeight 4 0.000150827 insert ISGW2:MaximumWeight 5 8.10329e-05 insert ISGW2:MaximumWeight 6 2.3802e-05 insert ISGW2:MaximumWeight 7 2.26572e-05 insert ISGW2:MaximumWeight 8 7.1564e-06 insert ISGW2:MaximumWeight 9 9.89996e-05 insert ISGW2:MaximumWeight 10 9.64194e-05 insert ISGW2:MaximumWeight 11 4.2888e-05 insert ISGW2:MaximumWeight 12 9.44215e-06 insert ISGW2:MaximumWeight 13 9.51828e-06 insert ISGW2:MaximumWeight 14 4.50299e-06 insert ISGW2:MaximumWeight 15 2.20544e-06 insert ISGW2:MaximumWeight 16 2.24693e-06 insert ISGW2:MaximumWeight 17 6.73668e-07 insert ISGW2:MaximumWeight 18 0.021715 insert ISGW2:MaximumWeight 19 0.0208858 insert ISGW2:MaximumWeight 20 0.00664402 insert ISGW2:MaximumWeight 21 0.0255404 insert ISGW2:MaximumWeight 22 0.025497 insert ISGW2:MaximumWeight 23 0.00658113 insert ISGW2:MaximumWeight 24 0.00185728 insert ISGW2:MaximumWeight 25 0.00183174 insert ISGW2:MaximumWeight 26 0.000111333 insert ISGW2:MaximumWeight 27 0.00524991 insert ISGW2:MaximumWeight 28 0.00484557 insert ISGW2:MaximumWeight 29 0.000352201 insert ISGW2:MaximumWeight 30 0.00227392 insert ISGW2:MaximumWeight 31 0.00224978 insert ISGW2:MaximumWeight 32 0.000208191 insert ISGW2:MaximumWeight 33 0.00099356 insert ISGW2:MaximumWeight 34 0.000945282 insert ISGW2:MaximumWeight 35 7.59346e-05 insert ISGW2:MaximumWeight 36 0.00132341 insert ISGW2:MaximumWeight 37 0.00111119 insert ISGW2:MaximumWeight 38 0.00169353 insert ISGW2:MaximumWeight 39 0.00164428 insert ISGW2:MaximumWeight 40 3.15924e-06 insert ISGW2:MaximumWeight 41 2.25269e-06 insert ISGW2:MaximumWeight 42 0.00026745 insert ISGW2:MaximumWeight 43 0.000246837 insert ISGW2:MaximumWeight 44 8.41891e-06 insert ISGW2:MaximumWeight 45 7.91348e-06 insert ISGW2:MaximumWeight 46 3.28996e-06 insert ISGW2:MaximumWeight 47 2.30262e-06 insert ISGW2:MaximumWeight 48 0.0362303 insert ISGW2:MaximumWeight 49 0.0288704 insert ISGW2:MaximumWeight 50 0.0365415 insert ISGW2:MaximumWeight 51 0.0353279 insert ISGW2:MaximumWeight 52 3.53069e-05 insert ISGW2:MaximumWeight 53 2.15061e-05 insert ISGW2:MaximumWeight 54 0.00110415 insert ISGW2:MaximumWeight 55 0.000809087 insert ISGW2:MaximumWeight 56 7.615e-06 insert ISGW2:MaximumWeight 57 5.52131e-06 insert ISGW2:MaximumWeight 58 2.05362e-05 insert ISGW2:MaximumWeight 59 1.08796e-05 insert ISGW2:MaximumWeight 60 0.000383419 insert ISGW2:MaximumWeight 61 0.000379941 insert ISGW2:MaximumWeight 62 0.000216721 insert ISGW2:MaximumWeight 63 0.00290645 insert ISGW2:MaximumWeight 64 0.00319323 insert ISGW2:MaximumWeight 65 0.00142608 insert ISGW2:MaximumWeight 66 0.000114956 insert ISGW2:MaximumWeight 67 0.000115039 insert ISGW2:MaximumWeight 68 3.64242e-05 insert ISGW2:MaximumWeight 69 0.000783639 insert ISGW2:MaximumWeight 70 0.00078457 insert ISGW2:MaximumWeight 71 0.000339043 insert ISGW2:MaximumWeight 72 7.63314e-05 insert ISGW2:MaximumWeight 73 7.5e-05 insert ISGW2:MaximumWeight 74 2.61161e-05 insert ISGW2:MaximumWeight 75 1.9627e-05 insert ISGW2:MaximumWeight 76 1.93806e-05 insert ISGW2:MaximumWeight 77 6.61598e-06 insert ISGW2:MaximumWeight 78 0.0983649 insert ISGW2:MaximumWeight 79 0.0923127 insert ISGW2:MaximumWeight 80 0.019695 insert ISGW2:MaximumWeight 81 0.104439 insert ISGW2:MaximumWeight 82 0.103932 insert ISGW2:MaximumWeight 83 0.0256158 insert ISGW2:MaximumWeight 84 0.03 insert ISGW2:MaximumWeight 85 0.025 insert ISGW2:MaximumWeight 86 0.000845781 insert ISGW2:MaximumWeight 87 0.0212356 insert ISGW2:MaximumWeight 88 0.0194916 insert ISGW2:MaximumWeight 89 0.0012394 insert ISGW2:MaximumWeight 90 0.00345276 insert ISGW2:MaximumWeight 91 0.00325754 insert ISGW2:MaximumWeight 92 0.000199332 insert ISGW2:MaximumWeight 93 0.0040565 insert ISGW2:MaximumWeight 94 0.00376841 insert ISGW2:MaximumWeight 95 0.000258548 insert ISGW2:MaximumWeight 96 0.000260051 insert ISGW2:MaximumWeight 97 0.000254568 insert ISGW2:MaximumWeight 98 0.00012644 insert ISGW2:MaximumWeight 99 0.00014772 insert ISGW2:MaximumWeight 100 0.000144913 insert ISGW2:MaximumWeight 101 6.99968e-05 insert ISGW2:MaximumWeight 102 0.00211882 insert ISGW2:MaximumWeight 103 0.00173084 insert ISGW2:MaximumWeight 104 0.00100721 insert ISGW2:MaximumWeight 105 9.99083e-05 insert ISGW2:MaximumWeight 106 9.76224e-05 insert ISGW2:MaximumWeight 107 2.53588e-05 insert ISGW2:MaximumWeight 108 0.000336413 insert ISGW2:MaximumWeight 109 0.000331348 insert ISGW2:MaximumWeight 110 0.00012059 insert ISGW2:MaximumWeight 111 0.000397433 insert ISGW2:MaximumWeight 112 0.000454929 insert ISGW2:MaximumWeight 113 0.000157429 insert ISGW2:MaximumWeight 114 1.26452e-05 insert ISGW2:MaximumWeight 115 1.25165e-05 insert ISGW2:MaximumWeight 116 4.22398e-06 insert ISGW2:MaximumWeight 117 0.000325529 insert ISGW2:MaximumWeight 118 0.000317369 insert ISGW2:MaximumWeight 119 0.000151852 insert ISGW2:MaximumWeight 120 0.0010775 insert ISGW2:MaximumWeight 121 0.00123644 insert ISGW2:MaximumWeight 122 0.000527677 insert ISGW2:MaximumWeight 123 9.54949e-05 insert ISGW2:MaximumWeight 124 9.31059e-05 insert ISGW2:MaximumWeight 125 2.4608e-05 insert ISGW2:MaximumWeight 126 0.000453889 insert ISGW2:MaximumWeight 127 0.000481848 insert ISGW2:MaximumWeight 128 0.00011418 insert ISGW2:MaximumWeight 129 0.000178262 insert ISGW2:MaximumWeight 130 0.000177812 insert ISGW2:MaximumWeight 131 8.26077e-05 insert ISGW2:MaximumWeight 132 1.11824e-05 insert ISGW2:MaximumWeight 133 1.11997e-05 insert ISGW2:MaximumWeight 134 3.32397e-06 insert ISGW2:MaximumWeight 135 0.127942 insert ISGW2:MaximumWeight 136 0.119623 insert ISGW2:MaximumWeight 137 0.0238566 insert ISGW2:MaximumWeight 138 0.142655 insert ISGW2:MaximumWeight 139 0.140889 insert ISGW2:MaximumWeight 140 0.0340506 insert ISGW2:MaximumWeight 141 0.0134676 insert ISGW2:MaximumWeight 142 0.0126132 insert ISGW2:MaximumWeight 143 0.000340657 insert ISGW2:MaximumWeight 144 0.0174635 insert ISGW2:MaximumWeight 145 0.0159783 insert ISGW2:MaximumWeight 146 0.000864979 insert ISGW2:MaximumWeight 147 0.00297466 insert ISGW2:MaximumWeight 148 0.0027692 insert ISGW2:MaximumWeight 149 0.00019588 insert ISGW2:MaximumWeight 150 0.00298341 insert ISGW2:MaximumWeight 151 0.00277861 insert ISGW2:MaximumWeight 152 0.00016309 insert ISGW2:MaximumWeight 153 0.000600003 insert ISGW2:MaximumWeight 154 0.000584006 insert ISGW2:MaximumWeight 155 0.000279706 insert ISGW2:MaximumWeight 156 0.00220229 insert ISGW2:MaximumWeight 157 0.00211059 insert ISGW2:MaximumWeight 158 0.000841777 insert ISGW2:MaximumWeight 159 0.000174515 insert ISGW2:MaximumWeight 160 0.000171267 insert ISGW2:MaximumWeight 161 4.5077e-05 insert ISGW2:MaximumWeight 162 0.000911064 insert ISGW2:MaximumWeight 163 0.000879918 insert ISGW2:MaximumWeight 164 0.000212121 insert ISGW2:MaximumWeight 165 0.000328061 insert ISGW2:MaximumWeight 166 0.000327529 insert ISGW2:MaximumWeight 167 0.000152402 insert ISGW2:MaximumWeight 168 2.10645e-05 insert ISGW2:MaximumWeight 169 2.03215e-05 insert ISGW2:MaximumWeight 170 6.1047e-06 insert ISGW2:MaximumWeight 171 0.117102 insert ISGW2:MaximumWeight 172 0.109383 insert ISGW2:MaximumWeight 173 0.0217237 insert ISGW2:MaximumWeight 174 0.143488 insert ISGW2:MaximumWeight 175 0.144097 insert ISGW2:MaximumWeight 176 0.0335686 insert ISGW2:MaximumWeight 177 0.0170693 insert ISGW2:MaximumWeight 178 0.0153559 insert ISGW2:MaximumWeight 179 0.000359761 insert ISGW2:MaximumWeight 180 0.0160343 insert ISGW2:MaximumWeight 181 0.0146767 insert ISGW2:MaximumWeight 182 0.000791707 insert ISGW2:MaximumWeight 183 0.00273854 insert ISGW2:MaximumWeight 184 0.0025512 insert ISGW2:MaximumWeight 185 0.000181231 insert ISGW2:MaximumWeight 186 0.00272446 insert ISGW2:MaximumWeight 187 0.00254633 insert ISGW2:MaximumWeight 188 0.000149885 insert ISGW2:MaximumWeight 189 0.00735218 insert ISGW2:MaximumWeight 190 0.00640181 insert ISGW2:MaximumWeight 191 0.00289181 insert ISGW2:MaximumWeight 192 0.00280707 insert ISGW2:MaximumWeight 193 7.22655e-06 insert ISGW2:MaximumWeight 194 5.71371e-06 insert ISGW2:MaximumWeight 195 0.00086489 insert ISGW2:MaximumWeight 196 0.000689459 insert ISGW2:MaximumWeight 197 9.66759e-06 insert ISGW2:MaximumWeight 198 9.21125e-06 insert ISGW2:MaximumWeight 199 2.21916e-05 insert ISGW2:MaximumWeight 200 1.67084e-05 insert ISGW2:MaximumWeight 201 0.0618348 insert ISGW2:MaximumWeight 202 0.052149 insert ISGW2:MaximumWeight 203 0.0557922 insert ISGW2:MaximumWeight 204 0.0438118 insert ISGW2:MaximumWeight 205 0.116 insert ISGW2:MaximumWeight 206 0.116357 insert ISGW2:MaximumWeight 207 0.000106906 insert ISGW2:MaximumWeight 208 8.05859e-05 insert ISGW2:MaximumWeight 209 0.00374456 insert ISGW2:MaximumWeight 210 0.00268945 insert ISGW2:MaximumWeight 211 0.000780993 insert ISGW2:MaximumWeight 212 0.000765418 insert ISGW2:MaximumWeight 213 0.000122102 insert ISGW2:MaximumWeight 214 8.68203e-05 insert ISGW2:MaximumWeight 215 0.00809387 insert ISGW2:MaximumWeight 216 0.00701118 insert ISGW2:MaximumWeight 217 0.00303307 insert ISGW2:MaximumWeight 218 0.00292443 insert ISGW2:MaximumWeight 219 4.67003e-06 insert ISGW2:MaximumWeight 220 3.16221e-06 insert ISGW2:MaximumWeight 221 0.000394407 insert ISGW2:MaximumWeight 222 0.000303672 insert ISGW2:MaximumWeight 223 0.000436069 insert ISGW2:MaximumWeight 224 0.000379057 insert ISGW2:MaximumWeight 225 2.72813e-06 insert ISGW2:MaximumWeight 226 1.70894e-06 insert ISGW2:MaximumWeight 227 0.158135 insert ISGW2:MaximumWeight 228 0.131371 insert ISGW2:MaximumWeight 229 0.0481235 insert ISGW2:MaximumWeight 230 0.0467254 insert ISGW2:MaximumWeight 231 4.57786e-05 insert ISGW2:MaximumWeight 232 3.12143e-05 insert ISGW2:MaximumWeight 233 0.00330961 insert ISGW2:MaximumWeight 234 0.00240096 insert ISGW2:MaximumWeight 235 2.847e-05 insert ISGW2:MaximumWeight 236 2.09826e-05 insert ISGW2:MaximumWeight 237 0.000239374 insert ISGW2:MaximumWeight 238 0.000174513 insert ISGW2:MaximumWeight 239 0.00554538 insert ISGW2:MaximumWeight 240 0.00466466 insert ISGW2:MaximumWeight 241 0.00109984 insert ISGW2:MaximumWeight 242 0.000842737 insert ISGW2:MaximumWeight 243 0.0075 insert ISGW2:MaximumWeight 244 0.0072 insert ISGW2:MaximumWeight 245 1.91206e-05 insert ISGW2:MaximumWeight 246 1.58666e-05 insert ISGW2:MaximumWeight 247 0.000832562 insert ISGW2:MaximumWeight 248 0.000669596 insert ISGW2:MaximumWeight 249 0.000256716 insert ISGW2:MaximumWeight 250 0.000250306 insert ISGW2:MaximumWeight 251 2.53586e-06 insert ISGW2:MaximumWeight 252 1.48864e-06 insert ISGW2:MaximumWeight 253 0.0103666 insert ISGW2:MaximumWeight 254 0.00895946 insert ISGW2:MaximumWeight 255 0.00395922 insert ISGW2:MaximumWeight 256 0.00378779 insert ISGW2:MaximumWeight 257 6.20415e-06 insert ISGW2:MaximumWeight 258 4.24016e-06 insert ISGW2:MaximumWeight 259 0.0005196 insert ISGW2:MaximumWeight 260 0.00039878 insert ISGW2:MaximumWeight 261 0.000567317 insert ISGW2:MaximumWeight 262 0.000489709 insert ISGW2:MaximumWeight 263 3.57757e-06 insert ISGW2:MaximumWeight 264 2.37409e-06 insert ISGW2:MaximumWeight 265 0.402115 insert ISGW2:MaximumWeight 266 0.334931 insert ISGW2:MaximumWeight 267 0.122752 insert ISGW2:MaximumWeight 268 0.118601 insert ISGW2:MaximumWeight 269 0.000113546 insert ISGW2:MaximumWeight 270 9.35595e-05 insert ISGW2:MaximumWeight 271 0.00851783 insert ISGW2:MaximumWeight 272 0.00630654 insert ISGW2:MaximumWeight 273 7.51719e-05 insert ISGW2:MaximumWeight 274 5.56299e-05 insert ISGW2:MaximumWeight 275 0.000606862 insert ISGW2:MaximumWeight 276 0.000454977 create Herwig::LeptonNeutrinoCurrent ISGW2Current HwWeakCurrents.so newdef ISGW2Current:Quark 0 11 newdef ISGW2Current:AntiQuark 0 -12 newdef ISGW2Current:Quark 1 13 newdef ISGW2Current:AntiQuark 1 -15 newdef ISGW2Current:Quark 2 15 newdef ISGW2Current:AntiQuark 2 -16 newdef ISGW2:Current ISGW2Current create Herwig::ISGW2FormFactor ISGW2FormFactor newdef ISGW2FormFactor:DownMass 0.33 newdef ISGW2FormFactor:UpMass 0.33 newdef ISGW2FormFactor:StrangeMass 0.55 newdef ISGW2FormFactor:CharmMass 1.82 newdef ISGW2FormFactor:BottomMass 5.2 newdef ISGW2FormFactor:Beta1S0ud 0.41 newdef ISGW2FormFactor:Beta1S0us 0.44 newdef ISGW2FormFactor:Beta1S0ss 0.53 newdef ISGW2FormFactor:Beta1S0cu 0.45 newdef ISGW2FormFactor:Beta1S0cs 0.56 newdef ISGW2FormFactor:Beta1S0ub 0.43 newdef ISGW2FormFactor:Beta1S0sb 0.54 newdef ISGW2FormFactor:Beta1S0cc 0.88 newdef ISGW2FormFactor:Beta1S0bc 0.92 newdef ISGW2FormFactor:Beta1Pud 0.28 newdef ISGW2FormFactor:Beta1Pus 0.3 newdef ISGW2FormFactor:Beta1Pss 0.33 newdef ISGW2FormFactor:Beta1Pcu 0.33 newdef ISGW2FormFactor:Beta1Pcs 0.38 newdef ISGW2FormFactor:Beta1Pub 0.35 newdef ISGW2FormFactor:Beta1Psb 0.41 newdef ISGW2FormFactor:Beta1Pcc 0.52 newdef ISGW2FormFactor:Beta1Pbc 0.6 newdef ISGW2FormFactor:Beta3S1ud 0.3 newdef ISGW2FormFactor:Beta3S1us 0.33 newdef ISGW2FormFactor:Beta3S1ss 0.37 newdef ISGW2FormFactor:Beta3S1cu 0.38 newdef ISGW2FormFactor:Beta3S1cs 0.44 newdef ISGW2FormFactor:Beta3S1ub 0.4 newdef ISGW2FormFactor:Beta3S1sb 0.49 newdef ISGW2FormFactor:Beta3S1cc 0.62 newdef ISGW2FormFactor:Beta3S1bc 0.75 newdef ISGW2FormFactor:AlphaCutOff 0.6 newdef ISGW2FormFactor:CfDrho 0.889 newdef ISGW2FormFactor:CfDKstar 0.928 newdef ISGW2FormFactor:CfDsKstar 0.873 newdef ISGW2FormFactor:CfDsphi 0.911 newdef ISGW2FormFactor:CfBrho 0.905 newdef ISGW2FormFactor:CfBDstar 0.989 newdef ISGW2FormFactor:CfBsKstar 0.892 newdef ISGW2FormFactor:CfBsDstar 0.984 newdef ISGW2FormFactor:CfBcDstar 0.868 newdef ISGW2FormFactor:CfBcpsi 0.967 newdef ISGW2FormFactor:CfBcBsstar 1 newdef ISGW2FormFactor:CfBcBstar 1 newdef ISGW2FormFactor:ThetaEtaEtaPrime -0.349066 newdef ISGW2FormFactor:Incoming 0 -541 newdef ISGW2FormFactor:Outgoing 0 -411 newdef ISGW2FormFactor:Spin 0 0 newdef ISGW2FormFactor:Spectator 0 -4 newdef ISGW2FormFactor:InQuark 0 5 newdef ISGW2FormFactor:OutQuark 0 1 newdef ISGW2FormFactor:Incoming 1 -541 newdef ISGW2FormFactor:Outgoing 1 -413 newdef ISGW2FormFactor:Spin 1 1 newdef ISGW2FormFactor:Spectator 1 -4 newdef ISGW2FormFactor:InQuark 1 5 newdef ISGW2FormFactor:OutQuark 1 1 newdef ISGW2FormFactor:Incoming 2 -541 newdef ISGW2FormFactor:Outgoing 2 -415 newdef ISGW2FormFactor:Spin 2 2 newdef ISGW2FormFactor:Spectator 2 -4 newdef ISGW2FormFactor:InQuark 2 5 newdef ISGW2FormFactor:OutQuark 2 1 newdef ISGW2FormFactor:Incoming 3 -541 newdef ISGW2FormFactor:Outgoing 3 10413 newdef ISGW2FormFactor:Spin 3 1 newdef ISGW2FormFactor:Spectator 3 -2 newdef ISGW2FormFactor:InQuark 3 5 newdef ISGW2FormFactor:OutQuark 3 1 newdef ISGW2FormFactor:Incoming 4 -541 newdef ISGW2FormFactor:Outgoing 4 -20413 newdef ISGW2FormFactor:Spin 4 1 newdef ISGW2FormFactor:Spectator 4 -4 newdef ISGW2FormFactor:InQuark 4 5 newdef ISGW2FormFactor:OutQuark 4 1 newdef ISGW2FormFactor:Incoming 5 -541 newdef ISGW2FormFactor:Outgoing 5 10411 newdef ISGW2FormFactor:Spin 5 0 newdef ISGW2FormFactor:Spectator 5 4 newdef ISGW2FormFactor:InQuark 5 5 newdef ISGW2FormFactor:OutQuark 5 1 newdef ISGW2FormFactor:Incoming 6 -541 newdef ISGW2FormFactor:Outgoing 6 -421 newdef ISGW2FormFactor:Spin 6 0 newdef ISGW2FormFactor:Spectator 6 -4 newdef ISGW2FormFactor:InQuark 6 5 newdef ISGW2FormFactor:OutQuark 6 2 newdef ISGW2FormFactor:Incoming 7 -541 newdef ISGW2FormFactor:Outgoing 7 -423 newdef ISGW2FormFactor:Spin 7 1 newdef ISGW2FormFactor:Spectator 7 -4 newdef ISGW2FormFactor:InQuark 7 5 newdef ISGW2FormFactor:OutQuark 7 2 newdef ISGW2FormFactor:Incoming 8 -541 newdef ISGW2FormFactor:Outgoing 8 -425 newdef ISGW2FormFactor:Spin 8 2 newdef ISGW2FormFactor:Spectator 8 -4 newdef ISGW2FormFactor:InQuark 8 5 newdef ISGW2FormFactor:OutQuark 8 2 newdef ISGW2FormFactor:Incoming 9 -541 newdef ISGW2FormFactor:Outgoing 9 -10423 newdef ISGW2FormFactor:Spin 9 1 newdef ISGW2FormFactor:Spectator 9 -4 newdef ISGW2FormFactor:InQuark 9 5 newdef ISGW2FormFactor:OutQuark 9 2 newdef ISGW2FormFactor:Incoming 10 -541 newdef ISGW2FormFactor:Outgoing 10 -20423 newdef ISGW2FormFactor:Spin 10 1 newdef ISGW2FormFactor:Spectator 10 -4 newdef ISGW2FormFactor:InQuark 10 5 newdef ISGW2FormFactor:OutQuark 10 2 newdef ISGW2FormFactor:Incoming 11 -541 newdef ISGW2FormFactor:Outgoing 11 -10421 newdef ISGW2FormFactor:Spin 11 0 newdef ISGW2FormFactor:Spectator 11 -4 newdef ISGW2FormFactor:InQuark 11 5 newdef ISGW2FormFactor:OutQuark 11 2 newdef ISGW2FormFactor:Incoming 12 -541 newdef ISGW2FormFactor:Outgoing 12 -431 newdef ISGW2FormFactor:Spin 12 0 newdef ISGW2FormFactor:Spectator 12 -4 newdef ISGW2FormFactor:InQuark 12 5 newdef ISGW2FormFactor:OutQuark 12 3 newdef ISGW2FormFactor:Incoming 13 -541 newdef ISGW2FormFactor:Outgoing 13 -433 newdef ISGW2FormFactor:Spin 13 1 newdef ISGW2FormFactor:Spectator 13 -4 newdef ISGW2FormFactor:InQuark 13 5 newdef ISGW2FormFactor:OutQuark 13 3 newdef ISGW2FormFactor:Incoming 14 -541 newdef ISGW2FormFactor:Outgoing 14 -435 newdef ISGW2FormFactor:Spin 14 2 newdef ISGW2FormFactor:Spectator 14 -4 newdef ISGW2FormFactor:InQuark 14 5 newdef ISGW2FormFactor:OutQuark 14 3 newdef ISGW2FormFactor:Incoming 15 -541 newdef ISGW2FormFactor:Outgoing 15 -10433 newdef ISGW2FormFactor:Spin 15 1 newdef ISGW2FormFactor:Spectator 15 -4 newdef ISGW2FormFactor:InQuark 15 5 newdef ISGW2FormFactor:OutQuark 15 3 newdef ISGW2FormFactor:Incoming 16 -541 newdef ISGW2FormFactor:Outgoing 16 -20433 newdef ISGW2FormFactor:Spin 16 1 newdef ISGW2FormFactor:Spectator 16 -4 newdef ISGW2FormFactor:InQuark 16 5 newdef ISGW2FormFactor:OutQuark 16 3 newdef ISGW2FormFactor:Incoming 17 -541 newdef ISGW2FormFactor:Outgoing 17 -10431 newdef ISGW2FormFactor:Spin 17 0 newdef ISGW2FormFactor:Spectator 17 4 newdef ISGW2FormFactor:InQuark 17 5 newdef ISGW2FormFactor:OutQuark 17 3 newdef ISGW2FormFactor:Incoming 18 -541 newdef ISGW2FormFactor:Outgoing 18 441 newdef ISGW2FormFactor:Spin 18 0 newdef ISGW2FormFactor:Spectator 18 -4 newdef ISGW2FormFactor:InQuark 18 5 newdef ISGW2FormFactor:OutQuark 18 4 newdef ISGW2FormFactor:Incoming 19 -541 newdef ISGW2FormFactor:Outgoing 19 443 newdef ISGW2FormFactor:Spin 19 1 newdef ISGW2FormFactor:Spectator 19 -4 newdef ISGW2FormFactor:InQuark 19 5 newdef ISGW2FormFactor:OutQuark 19 4 newdef ISGW2FormFactor:Incoming 20 -541 newdef ISGW2FormFactor:Outgoing 20 445 newdef ISGW2FormFactor:Spin 20 2 newdef ISGW2FormFactor:Spectator 20 -4 newdef ISGW2FormFactor:InQuark 20 5 newdef ISGW2FormFactor:OutQuark 20 4 newdef ISGW2FormFactor:Incoming 21 -541 newdef ISGW2FormFactor:Outgoing 21 10443 newdef ISGW2FormFactor:Spin 21 1 newdef ISGW2FormFactor:Spectator 21 -4 newdef ISGW2FormFactor:InQuark 21 5 newdef ISGW2FormFactor:OutQuark 21 4 newdef ISGW2FormFactor:Incoming 22 -541 newdef ISGW2FormFactor:Outgoing 22 20443 newdef ISGW2FormFactor:Spin 22 1 newdef ISGW2FormFactor:Spectator 22 -4 newdef ISGW2FormFactor:InQuark 22 5 newdef ISGW2FormFactor:OutQuark 22 4 newdef ISGW2FormFactor:Incoming 23 -541 newdef ISGW2FormFactor:Outgoing 23 10441 newdef ISGW2FormFactor:Spin 23 0 newdef ISGW2FormFactor:Spectator 23 4 newdef ISGW2FormFactor:InQuark 23 5 newdef ISGW2FormFactor:OutQuark 23 4 newdef ISGW2FormFactor:Incoming 24 541 newdef ISGW2FormFactor:Outgoing 24 511 newdef ISGW2FormFactor:Spin 24 0 newdef ISGW2FormFactor:Spectator 24 5 newdef ISGW2FormFactor:InQuark 24 -4 newdef ISGW2FormFactor:OutQuark 24 -1 newdef ISGW2FormFactor:Incoming 25 541 newdef ISGW2FormFactor:Outgoing 25 513 newdef ISGW2FormFactor:Spin 25 1 newdef ISGW2FormFactor:Spectator 25 5 newdef ISGW2FormFactor:InQuark 25 -4 newdef ISGW2FormFactor:OutQuark 25 -1 newdef ISGW2FormFactor:Incoming 26 541 newdef ISGW2FormFactor:Outgoing 26 515 newdef ISGW2FormFactor:Spin 26 2 newdef ISGW2FormFactor:Spectator 26 5 newdef ISGW2FormFactor:InQuark 26 -4 newdef ISGW2FormFactor:OutQuark 26 -1 newdef ISGW2FormFactor:Incoming 27 541 newdef ISGW2FormFactor:Outgoing 27 10513 newdef ISGW2FormFactor:Spin 27 1 newdef ISGW2FormFactor:Spectator 27 5 newdef ISGW2FormFactor:InQuark 27 -4 newdef ISGW2FormFactor:OutQuark 27 -1 newdef ISGW2FormFactor:Incoming 28 541 newdef ISGW2FormFactor:Outgoing 28 20513 newdef ISGW2FormFactor:Spin 28 1 newdef ISGW2FormFactor:Spectator 28 5 newdef ISGW2FormFactor:InQuark 28 -4 newdef ISGW2FormFactor:OutQuark 28 -1 newdef ISGW2FormFactor:Incoming 29 541 newdef ISGW2FormFactor:Outgoing 29 10511 newdef ISGW2FormFactor:Spin 29 0 newdef ISGW2FormFactor:Spectator 29 5 newdef ISGW2FormFactor:InQuark 29 -4 newdef ISGW2FormFactor:OutQuark 29 -1 newdef ISGW2FormFactor:Incoming 30 541 newdef ISGW2FormFactor:Outgoing 30 521 newdef ISGW2FormFactor:Spin 30 0 newdef ISGW2FormFactor:Spectator 30 5 newdef ISGW2FormFactor:InQuark 30 -4 newdef ISGW2FormFactor:OutQuark 30 -2 newdef ISGW2FormFactor:Incoming 31 541 newdef ISGW2FormFactor:Outgoing 31 523 newdef ISGW2FormFactor:Spin 31 1 newdef ISGW2FormFactor:Spectator 31 5 newdef ISGW2FormFactor:InQuark 31 -4 newdef ISGW2FormFactor:OutQuark 31 -2 newdef ISGW2FormFactor:Incoming 32 541 newdef ISGW2FormFactor:Outgoing 32 525 newdef ISGW2FormFactor:Spin 32 2 newdef ISGW2FormFactor:Spectator 32 5 newdef ISGW2FormFactor:InQuark 32 -4 newdef ISGW2FormFactor:OutQuark 32 -2 newdef ISGW2FormFactor:Incoming 33 541 newdef ISGW2FormFactor:Outgoing 33 10523 newdef ISGW2FormFactor:Spin 33 1 newdef ISGW2FormFactor:Spectator 33 5 newdef ISGW2FormFactor:InQuark 33 -4 newdef ISGW2FormFactor:OutQuark 33 -2 newdef ISGW2FormFactor:Incoming 34 541 newdef ISGW2FormFactor:Outgoing 34 20523 newdef ISGW2FormFactor:Spin 34 1 newdef ISGW2FormFactor:Spectator 34 5 newdef ISGW2FormFactor:InQuark 34 -4 newdef ISGW2FormFactor:OutQuark 34 -2 newdef ISGW2FormFactor:Incoming 35 541 newdef ISGW2FormFactor:Outgoing 35 10521 newdef ISGW2FormFactor:Spin 35 0 newdef ISGW2FormFactor:Spectator 35 5 newdef ISGW2FormFactor:InQuark 35 -4 newdef ISGW2FormFactor:OutQuark 35 -2 newdef ISGW2FormFactor:Incoming 36 541 newdef ISGW2FormFactor:Outgoing 36 531 newdef ISGW2FormFactor:Spin 36 0 newdef ISGW2FormFactor:Spectator 36 5 newdef ISGW2FormFactor:InQuark 36 -4 newdef ISGW2FormFactor:OutQuark 36 -3 newdef ISGW2FormFactor:Incoming 37 541 newdef ISGW2FormFactor:Outgoing 37 533 newdef ISGW2FormFactor:Spin 37 1 newdef ISGW2FormFactor:Spectator 37 5 newdef ISGW2FormFactor:InQuark 37 -4 newdef ISGW2FormFactor:OutQuark 37 -3 newdef ISGW2FormFactor:Incoming 38 541 newdef ISGW2FormFactor:Outgoing 38 535 newdef ISGW2FormFactor:Spin 38 2 newdef ISGW2FormFactor:Spectator 38 5 newdef ISGW2FormFactor:InQuark 38 -4 newdef ISGW2FormFactor:OutQuark 38 -3 newdef ISGW2FormFactor:Incoming 39 541 newdef ISGW2FormFactor:Outgoing 39 10533 newdef ISGW2FormFactor:Spin 39 1 newdef ISGW2FormFactor:Spectator 39 5 newdef ISGW2FormFactor:InQuark 39 -4 newdef ISGW2FormFactor:OutQuark 39 -3 newdef ISGW2FormFactor:Incoming 40 541 newdef ISGW2FormFactor:Outgoing 40 20533 newdef ISGW2FormFactor:Spin 40 1 newdef ISGW2FormFactor:Spectator 40 5 newdef ISGW2FormFactor:InQuark 40 -4 newdef ISGW2FormFactor:OutQuark 40 -3 newdef ISGW2FormFactor:Incoming 41 541 newdef ISGW2FormFactor:Outgoing 41 10531 newdef ISGW2FormFactor:Spin 41 0 newdef ISGW2FormFactor:Spectator 41 5 newdef ISGW2FormFactor:InQuark 41 -4 newdef ISGW2FormFactor:OutQuark 41 -3 newdef ISGW2FormFactor:Incoming 42 -531 newdef ISGW2FormFactor:Outgoing 42 311 newdef ISGW2FormFactor:Spin 42 0 newdef ISGW2FormFactor:Spectator 42 3 newdef ISGW2FormFactor:InQuark 42 -5 newdef ISGW2FormFactor:OutQuark 42 -1 newdef ISGW2FormFactor:Incoming 43 -531 newdef ISGW2FormFactor:Outgoing 43 313 newdef ISGW2FormFactor:Spin 43 1 newdef ISGW2FormFactor:Spectator 43 3 newdef ISGW2FormFactor:InQuark 43 -5 newdef ISGW2FormFactor:OutQuark 43 -1 newdef ISGW2FormFactor:Incoming 44 -531 newdef ISGW2FormFactor:Outgoing 44 315 newdef ISGW2FormFactor:Spin 44 2 newdef ISGW2FormFactor:Spectator 44 3 newdef ISGW2FormFactor:InQuark 44 -5 newdef ISGW2FormFactor:OutQuark 44 -1 newdef ISGW2FormFactor:Incoming 45 -531 newdef ISGW2FormFactor:Outgoing 45 10313 newdef ISGW2FormFactor:Spin 45 1 newdef ISGW2FormFactor:Spectator 45 3 newdef ISGW2FormFactor:InQuark 45 -5 newdef ISGW2FormFactor:OutQuark 45 -1 newdef ISGW2FormFactor:Incoming 46 -531 newdef ISGW2FormFactor:Outgoing 46 20313 newdef ISGW2FormFactor:Spin 46 1 newdef ISGW2FormFactor:Spectator 46 3 newdef ISGW2FormFactor:InQuark 46 -5 newdef ISGW2FormFactor:OutQuark 46 -1 newdef ISGW2FormFactor:Incoming 47 -531 newdef ISGW2FormFactor:Outgoing 47 10311 newdef ISGW2FormFactor:Spin 47 0 newdef ISGW2FormFactor:Spectator 47 3 newdef ISGW2FormFactor:InQuark 47 -5 newdef ISGW2FormFactor:OutQuark 47 -1 newdef ISGW2FormFactor:Incoming 48 -531 newdef ISGW2FormFactor:Outgoing 48 321 newdef ISGW2FormFactor:Spin 48 0 newdef ISGW2FormFactor:Spectator 48 3 newdef ISGW2FormFactor:InQuark 48 -5 newdef ISGW2FormFactor:OutQuark 48 -2 newdef ISGW2FormFactor:Incoming 49 -531 newdef ISGW2FormFactor:Outgoing 49 323 newdef ISGW2FormFactor:Spin 49 1 newdef ISGW2FormFactor:Spectator 49 3 newdef ISGW2FormFactor:InQuark 49 -5 newdef ISGW2FormFactor:OutQuark 49 -2 newdef ISGW2FormFactor:Incoming 50 -531 newdef ISGW2FormFactor:Outgoing 50 325 newdef ISGW2FormFactor:Spin 50 2 newdef ISGW2FormFactor:Spectator 50 3 newdef ISGW2FormFactor:InQuark 50 -5 newdef ISGW2FormFactor:OutQuark 50 -2 newdef ISGW2FormFactor:Incoming 51 -531 newdef ISGW2FormFactor:Outgoing 51 10323 newdef ISGW2FormFactor:Spin 51 1 newdef ISGW2FormFactor:Spectator 51 3 newdef ISGW2FormFactor:InQuark 51 -5 newdef ISGW2FormFactor:OutQuark 51 -2 newdef ISGW2FormFactor:Incoming 52 -531 newdef ISGW2FormFactor:Outgoing 52 20323 newdef ISGW2FormFactor:Spin 52 1 newdef ISGW2FormFactor:Spectator 52 3 newdef ISGW2FormFactor:InQuark 52 -5 newdef ISGW2FormFactor:OutQuark 52 -2 newdef ISGW2FormFactor:Incoming 53 -531 newdef ISGW2FormFactor:Outgoing 53 10321 newdef ISGW2FormFactor:Spin 53 0 newdef ISGW2FormFactor:Spectator 53 3 newdef ISGW2FormFactor:InQuark 53 -5 newdef ISGW2FormFactor:OutQuark 53 -2 newdef ISGW2FormFactor:Incoming 54 -531 newdef ISGW2FormFactor:Outgoing 54 221 newdef ISGW2FormFactor:Spin 54 0 newdef ISGW2FormFactor:Spectator 54 3 newdef ISGW2FormFactor:InQuark 54 -5 newdef ISGW2FormFactor:OutQuark 54 -3 newdef ISGW2FormFactor:Incoming 55 -531 newdef ISGW2FormFactor:Outgoing 55 331 newdef ISGW2FormFactor:Spin 55 0 newdef ISGW2FormFactor:Spectator 55 3 newdef ISGW2FormFactor:InQuark 55 -5 newdef ISGW2FormFactor:OutQuark 55 -3 newdef ISGW2FormFactor:Incoming 56 -531 newdef ISGW2FormFactor:Outgoing 56 333 newdef ISGW2FormFactor:Spin 56 1 newdef ISGW2FormFactor:Spectator 56 3 newdef ISGW2FormFactor:InQuark 56 -5 newdef ISGW2FormFactor:OutQuark 56 -3 newdef ISGW2FormFactor:Incoming 57 -531 newdef ISGW2FormFactor:Outgoing 57 335 newdef ISGW2FormFactor:Spin 57 2 newdef ISGW2FormFactor:Spectator 57 3 newdef ISGW2FormFactor:InQuark 57 -5 newdef ISGW2FormFactor:OutQuark 57 -3 newdef ISGW2FormFactor:Incoming 58 -531 newdef ISGW2FormFactor:Outgoing 58 10333 newdef ISGW2FormFactor:Spin 58 1 newdef ISGW2FormFactor:Spectator 58 3 newdef ISGW2FormFactor:InQuark 58 -5 newdef ISGW2FormFactor:OutQuark 58 -3 newdef ISGW2FormFactor:Incoming 59 -531 newdef ISGW2FormFactor:Outgoing 59 20333 newdef ISGW2FormFactor:Spin 59 1 newdef ISGW2FormFactor:Spectator 59 3 newdef ISGW2FormFactor:InQuark 59 -5 newdef ISGW2FormFactor:OutQuark 59 -3 newdef ISGW2FormFactor:Incoming 60 -531 newdef ISGW2FormFactor:Outgoing 60 10331 newdef ISGW2FormFactor:Spin 60 0 newdef ISGW2FormFactor:Spectator 60 3 newdef ISGW2FormFactor:InQuark 60 -5 newdef ISGW2FormFactor:OutQuark 60 -3 newdef ISGW2FormFactor:Incoming 61 -531 newdef ISGW2FormFactor:Outgoing 61 431 newdef ISGW2FormFactor:Spin 61 0 newdef ISGW2FormFactor:Spectator 61 3 newdef ISGW2FormFactor:InQuark 61 -5 newdef ISGW2FormFactor:OutQuark 61 -4 newdef ISGW2FormFactor:Incoming 62 -531 newdef ISGW2FormFactor:Outgoing 62 433 newdef ISGW2FormFactor:Spin 62 1 newdef ISGW2FormFactor:Spectator 62 3 newdef ISGW2FormFactor:InQuark 62 -5 newdef ISGW2FormFactor:OutQuark 62 -4 newdef ISGW2FormFactor:Incoming 63 -531 newdef ISGW2FormFactor:Outgoing 63 435 newdef ISGW2FormFactor:Spin 63 2 newdef ISGW2FormFactor:Spectator 63 3 newdef ISGW2FormFactor:InQuark 63 -5 newdef ISGW2FormFactor:OutQuark 63 -4 newdef ISGW2FormFactor:Incoming 64 -531 newdef ISGW2FormFactor:Outgoing 64 10433 newdef ISGW2FormFactor:Spin 64 1 newdef ISGW2FormFactor:Spectator 64 3 newdef ISGW2FormFactor:InQuark 64 -5 newdef ISGW2FormFactor:OutQuark 64 -4 newdef ISGW2FormFactor:Incoming 65 -531 newdef ISGW2FormFactor:Outgoing 65 20433 newdef ISGW2FormFactor:Spin 65 1 newdef ISGW2FormFactor:Spectator 65 3 newdef ISGW2FormFactor:InQuark 65 -5 newdef ISGW2FormFactor:OutQuark 65 -4 newdef ISGW2FormFactor:Incoming 66 -531 newdef ISGW2FormFactor:Outgoing 66 10431 newdef ISGW2FormFactor:Spin 66 0 newdef ISGW2FormFactor:Spectator 66 3 newdef ISGW2FormFactor:InQuark 66 -5 newdef ISGW2FormFactor:OutQuark 66 -4 newdef ISGW2FormFactor:Incoming 67 -521 newdef ISGW2FormFactor:Outgoing 67 -211 newdef ISGW2FormFactor:Spin 67 0 newdef ISGW2FormFactor:Spectator 67 -2 newdef ISGW2FormFactor:InQuark 67 5 newdef ISGW2FormFactor:OutQuark 67 1 newdef ISGW2FormFactor:Incoming 68 -521 newdef ISGW2FormFactor:Outgoing 68 -213 newdef ISGW2FormFactor:Spin 68 1 newdef ISGW2FormFactor:Spectator 68 -2 newdef ISGW2FormFactor:InQuark 68 5 newdef ISGW2FormFactor:OutQuark 68 1 newdef ISGW2FormFactor:Incoming 69 -521 newdef ISGW2FormFactor:Outgoing 69 -215 newdef ISGW2FormFactor:Spin 69 2 newdef ISGW2FormFactor:Spectator 69 -2 newdef ISGW2FormFactor:InQuark 69 5 newdef ISGW2FormFactor:OutQuark 69 1 newdef ISGW2FormFactor:Incoming 70 -521 newdef ISGW2FormFactor:Outgoing 70 -10213 newdef ISGW2FormFactor:Spin 70 1 newdef ISGW2FormFactor:Spectator 70 -2 newdef ISGW2FormFactor:InQuark 70 5 newdef ISGW2FormFactor:OutQuark 70 1 newdef ISGW2FormFactor:Incoming 71 -521 newdef ISGW2FormFactor:Outgoing 71 -20213 newdef ISGW2FormFactor:Spin 71 1 newdef ISGW2FormFactor:Spectator 71 -2 newdef ISGW2FormFactor:InQuark 71 5 newdef ISGW2FormFactor:OutQuark 71 1 newdef ISGW2FormFactor:Incoming 72 -521 newdef ISGW2FormFactor:Outgoing 72 -10211 newdef ISGW2FormFactor:Spin 72 0 newdef ISGW2FormFactor:Spectator 72 -2 newdef ISGW2FormFactor:InQuark 72 5 newdef ISGW2FormFactor:OutQuark 72 1 newdef ISGW2FormFactor:Incoming 73 -521 newdef ISGW2FormFactor:Outgoing 73 221 newdef ISGW2FormFactor:Spin 73 0 newdef ISGW2FormFactor:Spectator 73 -2 newdef ISGW2FormFactor:InQuark 73 5 newdef ISGW2FormFactor:OutQuark 73 2 newdef ISGW2FormFactor:Incoming 74 -521 newdef ISGW2FormFactor:Outgoing 74 331 newdef ISGW2FormFactor:Spin 74 0 newdef ISGW2FormFactor:Spectator 74 -2 newdef ISGW2FormFactor:InQuark 74 5 newdef ISGW2FormFactor:OutQuark 74 2 newdef ISGW2FormFactor:Incoming 75 -521 newdef ISGW2FormFactor:Outgoing 75 223 newdef ISGW2FormFactor:Spin 75 1 newdef ISGW2FormFactor:Spectator 75 -2 newdef ISGW2FormFactor:InQuark 75 5 newdef ISGW2FormFactor:OutQuark 75 2 newdef ISGW2FormFactor:Incoming 76 -521 newdef ISGW2FormFactor:Outgoing 76 225 newdef ISGW2FormFactor:Spin 76 2 newdef ISGW2FormFactor:Spectator 76 -2 newdef ISGW2FormFactor:InQuark 76 5 newdef ISGW2FormFactor:OutQuark 76 2 newdef ISGW2FormFactor:Incoming 77 -521 newdef ISGW2FormFactor:Outgoing 77 10223 newdef ISGW2FormFactor:Spin 77 1 newdef ISGW2FormFactor:Spectator 77 -2 newdef ISGW2FormFactor:InQuark 77 5 newdef ISGW2FormFactor:OutQuark 77 2 newdef ISGW2FormFactor:Incoming 78 -521 newdef ISGW2FormFactor:Outgoing 78 20223 newdef ISGW2FormFactor:Spin 78 1 newdef ISGW2FormFactor:Spectator 78 -2 newdef ISGW2FormFactor:InQuark 78 5 newdef ISGW2FormFactor:OutQuark 78 2 newdef ISGW2FormFactor:Incoming 79 -521 newdef ISGW2FormFactor:Outgoing 79 10221 newdef ISGW2FormFactor:Spin 79 0 newdef ISGW2FormFactor:Spectator 79 -2 newdef ISGW2FormFactor:InQuark 79 5 newdef ISGW2FormFactor:OutQuark 79 2 newdef ISGW2FormFactor:Incoming 80 -521 newdef ISGW2FormFactor:Outgoing 80 111 newdef ISGW2FormFactor:Spin 80 0 newdef ISGW2FormFactor:Spectator 80 -2 newdef ISGW2FormFactor:InQuark 80 5 newdef ISGW2FormFactor:OutQuark 80 2 newdef ISGW2FormFactor:Incoming 81 -521 newdef ISGW2FormFactor:Outgoing 81 113 newdef ISGW2FormFactor:Spin 81 1 newdef ISGW2FormFactor:Spectator 81 -2 newdef ISGW2FormFactor:InQuark 81 5 newdef ISGW2FormFactor:OutQuark 81 2 newdef ISGW2FormFactor:Incoming 82 -521 newdef ISGW2FormFactor:Outgoing 82 115 newdef ISGW2FormFactor:Spin 82 2 newdef ISGW2FormFactor:Spectator 82 -2 newdef ISGW2FormFactor:InQuark 82 5 newdef ISGW2FormFactor:OutQuark 82 2 newdef ISGW2FormFactor:Incoming 83 -521 newdef ISGW2FormFactor:Outgoing 83 10113 newdef ISGW2FormFactor:Spin 83 1 newdef ISGW2FormFactor:Spectator 83 -2 newdef ISGW2FormFactor:InQuark 83 5 newdef ISGW2FormFactor:OutQuark 83 2 newdef ISGW2FormFactor:Incoming 84 -521 newdef ISGW2FormFactor:Outgoing 84 20113 newdef ISGW2FormFactor:Spin 84 1 newdef ISGW2FormFactor:Spectator 84 -2 newdef ISGW2FormFactor:InQuark 84 5 newdef ISGW2FormFactor:OutQuark 84 2 newdef ISGW2FormFactor:Incoming 85 -521 newdef ISGW2FormFactor:Outgoing 85 10111 newdef ISGW2FormFactor:Spin 85 0 newdef ISGW2FormFactor:Spectator 85 -2 newdef ISGW2FormFactor:InQuark 85 5 newdef ISGW2FormFactor:OutQuark 85 2 newdef ISGW2FormFactor:Incoming 86 -521 newdef ISGW2FormFactor:Outgoing 86 -321 newdef ISGW2FormFactor:Spin 86 0 newdef ISGW2FormFactor:Spectator 86 -2 newdef ISGW2FormFactor:InQuark 86 5 newdef ISGW2FormFactor:OutQuark 86 3 newdef ISGW2FormFactor:Incoming 87 -521 newdef ISGW2FormFactor:Outgoing 87 -323 newdef ISGW2FormFactor:Spin 87 1 newdef ISGW2FormFactor:Spectator 87 -2 newdef ISGW2FormFactor:InQuark 87 5 newdef ISGW2FormFactor:OutQuark 87 3 newdef ISGW2FormFactor:Incoming 88 -521 newdef ISGW2FormFactor:Outgoing 88 -325 newdef ISGW2FormFactor:Spin 88 2 newdef ISGW2FormFactor:Spectator 88 -2 newdef ISGW2FormFactor:InQuark 88 5 newdef ISGW2FormFactor:OutQuark 88 3 newdef ISGW2FormFactor:Incoming 89 -521 newdef ISGW2FormFactor:Outgoing 89 -10323 newdef ISGW2FormFactor:Spin 89 1 newdef ISGW2FormFactor:Spectator 89 -2 newdef ISGW2FormFactor:InQuark 89 5 newdef ISGW2FormFactor:OutQuark 89 3 newdef ISGW2FormFactor:Incoming 90 -521 newdef ISGW2FormFactor:Outgoing 90 -20323 newdef ISGW2FormFactor:Spin 90 1 newdef ISGW2FormFactor:Spectator 90 -2 newdef ISGW2FormFactor:InQuark 90 5 newdef ISGW2FormFactor:OutQuark 90 3 newdef ISGW2FormFactor:Incoming 91 -521 newdef ISGW2FormFactor:Outgoing 91 -10321 newdef ISGW2FormFactor:Spin 91 0 newdef ISGW2FormFactor:Spectator 91 -2 newdef ISGW2FormFactor:InQuark 91 5 newdef ISGW2FormFactor:OutQuark 91 3 newdef ISGW2FormFactor:Incoming 92 -521 newdef ISGW2FormFactor:Outgoing 92 421 newdef ISGW2FormFactor:Spin 92 0 newdef ISGW2FormFactor:Spectator 92 -2 newdef ISGW2FormFactor:InQuark 92 5 newdef ISGW2FormFactor:OutQuark 92 4 newdef ISGW2FormFactor:Incoming 93 -521 newdef ISGW2FormFactor:Outgoing 93 423 newdef ISGW2FormFactor:Spin 93 1 newdef ISGW2FormFactor:Spectator 93 -2 newdef ISGW2FormFactor:InQuark 93 5 newdef ISGW2FormFactor:OutQuark 93 4 newdef ISGW2FormFactor:Incoming 94 -521 newdef ISGW2FormFactor:Outgoing 94 425 newdef ISGW2FormFactor:Spin 94 2 newdef ISGW2FormFactor:Spectator 94 -2 newdef ISGW2FormFactor:InQuark 94 5 newdef ISGW2FormFactor:OutQuark 94 4 newdef ISGW2FormFactor:Incoming 95 -521 newdef ISGW2FormFactor:Outgoing 95 10423 newdef ISGW2FormFactor:Spin 95 1 newdef ISGW2FormFactor:Spectator 95 -2 newdef ISGW2FormFactor:InQuark 95 5 newdef ISGW2FormFactor:OutQuark 95 4 newdef ISGW2FormFactor:Incoming 96 -521 newdef ISGW2FormFactor:Outgoing 96 20423 newdef ISGW2FormFactor:Spin 96 1 newdef ISGW2FormFactor:Spectator 96 -2 newdef ISGW2FormFactor:InQuark 96 5 newdef ISGW2FormFactor:OutQuark 96 4 newdef ISGW2FormFactor:Incoming 97 -521 newdef ISGW2FormFactor:Outgoing 97 10421 newdef ISGW2FormFactor:Spin 97 0 newdef ISGW2FormFactor:Spectator 97 -2 newdef ISGW2FormFactor:InQuark 97 5 newdef ISGW2FormFactor:OutQuark 97 4 newdef ISGW2FormFactor:Incoming 98 -511 newdef ISGW2FormFactor:Outgoing 98 221 newdef ISGW2FormFactor:Spin 98 0 newdef ISGW2FormFactor:Spectator 98 1 newdef ISGW2FormFactor:InQuark 98 -5 newdef ISGW2FormFactor:OutQuark 98 -1 newdef ISGW2FormFactor:Incoming 99 -511 newdef ISGW2FormFactor:Outgoing 99 331 newdef ISGW2FormFactor:Spin 99 0 newdef ISGW2FormFactor:Spectator 99 1 newdef ISGW2FormFactor:InQuark 99 -5 newdef ISGW2FormFactor:OutQuark 99 -1 newdef ISGW2FormFactor:Incoming 100 -511 newdef ISGW2FormFactor:Outgoing 100 223 newdef ISGW2FormFactor:Spin 100 1 newdef ISGW2FormFactor:Spectator 100 1 newdef ISGW2FormFactor:InQuark 100 -5 newdef ISGW2FormFactor:OutQuark 100 -1 newdef ISGW2FormFactor:Incoming 101 -511 newdef ISGW2FormFactor:Outgoing 101 225 newdef ISGW2FormFactor:Spin 101 2 newdef ISGW2FormFactor:Spectator 101 1 newdef ISGW2FormFactor:InQuark 101 -5 newdef ISGW2FormFactor:OutQuark 101 -1 newdef ISGW2FormFactor:Incoming 102 -511 newdef ISGW2FormFactor:Outgoing 102 10223 newdef ISGW2FormFactor:Spin 102 1 newdef ISGW2FormFactor:Spectator 102 1 newdef ISGW2FormFactor:InQuark 102 -5 newdef ISGW2FormFactor:OutQuark 102 -1 newdef ISGW2FormFactor:Incoming 103 -511 newdef ISGW2FormFactor:Outgoing 103 20223 newdef ISGW2FormFactor:Spin 103 1 newdef ISGW2FormFactor:Spectator 103 1 newdef ISGW2FormFactor:InQuark 103 -5 newdef ISGW2FormFactor:OutQuark 103 -1 newdef ISGW2FormFactor:Incoming 104 -511 newdef ISGW2FormFactor:Outgoing 104 10221 newdef ISGW2FormFactor:Spin 104 0 newdef ISGW2FormFactor:Spectator 104 1 newdef ISGW2FormFactor:InQuark 104 -5 newdef ISGW2FormFactor:OutQuark 104 -1 newdef ISGW2FormFactor:Incoming 105 -511 newdef ISGW2FormFactor:Outgoing 105 111 newdef ISGW2FormFactor:Spin 105 0 newdef ISGW2FormFactor:Spectator 105 1 newdef ISGW2FormFactor:InQuark 105 -5 newdef ISGW2FormFactor:OutQuark 105 -1 newdef ISGW2FormFactor:Incoming 106 -511 newdef ISGW2FormFactor:Outgoing 106 113 newdef ISGW2FormFactor:Spin 106 1 newdef ISGW2FormFactor:Spectator 106 1 newdef ISGW2FormFactor:InQuark 106 -5 newdef ISGW2FormFactor:OutQuark 106 -1 newdef ISGW2FormFactor:Incoming 107 -511 newdef ISGW2FormFactor:Outgoing 107 115 newdef ISGW2FormFactor:Spin 107 2 newdef ISGW2FormFactor:Spectator 107 1 newdef ISGW2FormFactor:InQuark 107 -5 newdef ISGW2FormFactor:OutQuark 107 -1 newdef ISGW2FormFactor:Incoming 108 -511 newdef ISGW2FormFactor:Outgoing 108 10113 newdef ISGW2FormFactor:Spin 108 1 newdef ISGW2FormFactor:Spectator 108 1 newdef ISGW2FormFactor:InQuark 108 -5 newdef ISGW2FormFactor:OutQuark 108 -1 newdef ISGW2FormFactor:Incoming 109 -511 newdef ISGW2FormFactor:Outgoing 109 20113 newdef ISGW2FormFactor:Spin 109 1 newdef ISGW2FormFactor:Spectator 109 1 newdef ISGW2FormFactor:InQuark 109 -5 newdef ISGW2FormFactor:OutQuark 109 -1 newdef ISGW2FormFactor:Incoming 110 -511 newdef ISGW2FormFactor:Outgoing 110 10111 newdef ISGW2FormFactor:Spin 110 0 newdef ISGW2FormFactor:Spectator 110 1 newdef ISGW2FormFactor:InQuark 110 -5 newdef ISGW2FormFactor:OutQuark 110 -1 newdef ISGW2FormFactor:Incoming 111 -511 newdef ISGW2FormFactor:Outgoing 111 211 newdef ISGW2FormFactor:Spin 111 0 newdef ISGW2FormFactor:Spectator 111 1 newdef ISGW2FormFactor:InQuark 111 -5 newdef ISGW2FormFactor:OutQuark 111 -2 newdef ISGW2FormFactor:Incoming 112 -511 newdef ISGW2FormFactor:Outgoing 112 213 newdef ISGW2FormFactor:Spin 112 1 newdef ISGW2FormFactor:Spectator 112 1 newdef ISGW2FormFactor:InQuark 112 -5 newdef ISGW2FormFactor:OutQuark 112 -2 newdef ISGW2FormFactor:Incoming 113 -511 newdef ISGW2FormFactor:Outgoing 113 215 newdef ISGW2FormFactor:Spin 113 2 newdef ISGW2FormFactor:Spectator 113 1 newdef ISGW2FormFactor:InQuark 113 -5 newdef ISGW2FormFactor:OutQuark 113 -2 newdef ISGW2FormFactor:Incoming 114 -511 newdef ISGW2FormFactor:Outgoing 114 10213 newdef ISGW2FormFactor:Spin 114 1 newdef ISGW2FormFactor:Spectator 114 1 newdef ISGW2FormFactor:InQuark 114 -5 newdef ISGW2FormFactor:OutQuark 114 -2 newdef ISGW2FormFactor:Incoming 115 -511 newdef ISGW2FormFactor:Outgoing 115 20213 newdef ISGW2FormFactor:Spin 115 1 newdef ISGW2FormFactor:Spectator 115 1 newdef ISGW2FormFactor:InQuark 115 -5 newdef ISGW2FormFactor:OutQuark 115 -2 newdef ISGW2FormFactor:Incoming 116 -511 newdef ISGW2FormFactor:Outgoing 116 10211 newdef ISGW2FormFactor:Spin 116 0 newdef ISGW2FormFactor:Spectator 116 1 newdef ISGW2FormFactor:InQuark 116 -5 newdef ISGW2FormFactor:OutQuark 116 -2 newdef ISGW2FormFactor:Incoming 117 -511 newdef ISGW2FormFactor:Outgoing 117 311 newdef ISGW2FormFactor:Spin 117 0 newdef ISGW2FormFactor:Spectator 117 1 newdef ISGW2FormFactor:InQuark 117 -5 newdef ISGW2FormFactor:OutQuark 117 -3 newdef ISGW2FormFactor:Incoming 118 -511 newdef ISGW2FormFactor:Outgoing 118 313 newdef ISGW2FormFactor:Spin 118 1 newdef ISGW2FormFactor:Spectator 118 1 newdef ISGW2FormFactor:InQuark 118 -5 newdef ISGW2FormFactor:OutQuark 118 -3 newdef ISGW2FormFactor:Incoming 119 -511 newdef ISGW2FormFactor:Outgoing 119 315 newdef ISGW2FormFactor:Spin 119 2 newdef ISGW2FormFactor:Spectator 119 1 newdef ISGW2FormFactor:InQuark 119 -5 newdef ISGW2FormFactor:OutQuark 119 -3 newdef ISGW2FormFactor:Incoming 120 -511 newdef ISGW2FormFactor:Outgoing 120 10313 newdef ISGW2FormFactor:Spin 120 1 newdef ISGW2FormFactor:Spectator 120 1 newdef ISGW2FormFactor:InQuark 120 -5 newdef ISGW2FormFactor:OutQuark 120 -3 newdef ISGW2FormFactor:Incoming 121 -511 newdef ISGW2FormFactor:Outgoing 121 20313 newdef ISGW2FormFactor:Spin 121 1 newdef ISGW2FormFactor:Spectator 121 1 newdef ISGW2FormFactor:InQuark 121 -5 newdef ISGW2FormFactor:OutQuark 121 -3 newdef ISGW2FormFactor:Incoming 122 -511 newdef ISGW2FormFactor:Outgoing 122 10311 newdef ISGW2FormFactor:Spin 122 0 newdef ISGW2FormFactor:Spectator 122 1 newdef ISGW2FormFactor:InQuark 122 -5 newdef ISGW2FormFactor:OutQuark 122 -3 newdef ISGW2FormFactor:Incoming 123 -511 newdef ISGW2FormFactor:Outgoing 123 411 newdef ISGW2FormFactor:Spin 123 0 newdef ISGW2FormFactor:Spectator 123 1 newdef ISGW2FormFactor:InQuark 123 -5 newdef ISGW2FormFactor:OutQuark 123 -4 newdef ISGW2FormFactor:Incoming 124 -511 newdef ISGW2FormFactor:Outgoing 124 413 newdef ISGW2FormFactor:Spin 124 1 newdef ISGW2FormFactor:Spectator 124 1 newdef ISGW2FormFactor:InQuark 124 -5 newdef ISGW2FormFactor:OutQuark 124 -4 newdef ISGW2FormFactor:Incoming 125 -511 newdef ISGW2FormFactor:Outgoing 125 415 newdef ISGW2FormFactor:Spin 125 2 newdef ISGW2FormFactor:Spectator 125 1 newdef ISGW2FormFactor:InQuark 125 -5 newdef ISGW2FormFactor:OutQuark 125 -4 newdef ISGW2FormFactor:Incoming 126 -511 newdef ISGW2FormFactor:Outgoing 126 10413 newdef ISGW2FormFactor:Spin 126 1 newdef ISGW2FormFactor:Spectator 126 1 newdef ISGW2FormFactor:InQuark 126 -5 newdef ISGW2FormFactor:OutQuark 126 -4 newdef ISGW2FormFactor:Incoming 127 -511 newdef ISGW2FormFactor:Outgoing 127 20413 newdef ISGW2FormFactor:Spin 127 1 newdef ISGW2FormFactor:Spectator 127 1 newdef ISGW2FormFactor:InQuark 127 -5 newdef ISGW2FormFactor:OutQuark 127 -4 newdef ISGW2FormFactor:Incoming 128 -511 newdef ISGW2FormFactor:Outgoing 128 10411 newdef ISGW2FormFactor:Spin 128 0 newdef ISGW2FormFactor:Spectator 128 1 newdef ISGW2FormFactor:InQuark 128 -5 newdef ISGW2FormFactor:OutQuark 128 -4 newdef ISGW2FormFactor:Incoming 129 431 newdef ISGW2FormFactor:Outgoing 129 311 newdef ISGW2FormFactor:Spin 129 0 newdef ISGW2FormFactor:Spectator 129 -3 newdef ISGW2FormFactor:InQuark 129 4 newdef ISGW2FormFactor:OutQuark 129 1 newdef ISGW2FormFactor:Incoming 130 431 newdef ISGW2FormFactor:Outgoing 130 313 newdef ISGW2FormFactor:Spin 130 1 newdef ISGW2FormFactor:Spectator 130 -3 newdef ISGW2FormFactor:InQuark 130 4 newdef ISGW2FormFactor:OutQuark 130 1 newdef ISGW2FormFactor:Incoming 131 431 newdef ISGW2FormFactor:Outgoing 131 315 newdef ISGW2FormFactor:Spin 131 2 newdef ISGW2FormFactor:Spectator 131 -3 newdef ISGW2FormFactor:InQuark 131 4 newdef ISGW2FormFactor:OutQuark 131 1 newdef ISGW2FormFactor:Incoming 132 431 newdef ISGW2FormFactor:Outgoing 132 10313 newdef ISGW2FormFactor:Spin 132 1 newdef ISGW2FormFactor:Spectator 132 -3 newdef ISGW2FormFactor:InQuark 132 4 newdef ISGW2FormFactor:OutQuark 132 1 newdef ISGW2FormFactor:Incoming 133 431 newdef ISGW2FormFactor:Outgoing 133 20313 newdef ISGW2FormFactor:Spin 133 1 newdef ISGW2FormFactor:Spectator 133 -3 newdef ISGW2FormFactor:InQuark 133 4 newdef ISGW2FormFactor:OutQuark 133 1 newdef ISGW2FormFactor:Incoming 134 431 newdef ISGW2FormFactor:Outgoing 134 10311 newdef ISGW2FormFactor:Spin 134 0 newdef ISGW2FormFactor:Spectator 134 -3 newdef ISGW2FormFactor:InQuark 134 4 newdef ISGW2FormFactor:OutQuark 134 1 newdef ISGW2FormFactor:Incoming 135 431 newdef ISGW2FormFactor:Outgoing 135 321 newdef ISGW2FormFactor:Spin 135 0 newdef ISGW2FormFactor:Spectator 135 -3 newdef ISGW2FormFactor:InQuark 135 4 newdef ISGW2FormFactor:OutQuark 135 2 newdef ISGW2FormFactor:Incoming 136 431 newdef ISGW2FormFactor:Outgoing 136 323 newdef ISGW2FormFactor:Spin 136 1 newdef ISGW2FormFactor:Spectator 136 -3 newdef ISGW2FormFactor:InQuark 136 4 newdef ISGW2FormFactor:OutQuark 136 2 newdef ISGW2FormFactor:Incoming 137 431 newdef ISGW2FormFactor:Outgoing 137 325 newdef ISGW2FormFactor:Spin 137 2 newdef ISGW2FormFactor:Spectator 137 -3 newdef ISGW2FormFactor:InQuark 137 4 newdef ISGW2FormFactor:OutQuark 137 2 newdef ISGW2FormFactor:Incoming 138 431 newdef ISGW2FormFactor:Outgoing 138 10323 newdef ISGW2FormFactor:Spin 138 1 newdef ISGW2FormFactor:Spectator 138 -3 newdef ISGW2FormFactor:InQuark 138 4 newdef ISGW2FormFactor:OutQuark 138 2 newdef ISGW2FormFactor:Incoming 139 431 newdef ISGW2FormFactor:Outgoing 139 20323 newdef ISGW2FormFactor:Spin 139 1 newdef ISGW2FormFactor:Spectator 139 -3 newdef ISGW2FormFactor:InQuark 139 4 newdef ISGW2FormFactor:OutQuark 139 2 newdef ISGW2FormFactor:Incoming 140 431 newdef ISGW2FormFactor:Outgoing 140 10321 newdef ISGW2FormFactor:Spin 140 0 newdef ISGW2FormFactor:Spectator 140 -3 newdef ISGW2FormFactor:InQuark 140 4 newdef ISGW2FormFactor:OutQuark 140 2 newdef ISGW2FormFactor:Incoming 141 431 newdef ISGW2FormFactor:Outgoing 141 221 newdef ISGW2FormFactor:Spin 141 0 newdef ISGW2FormFactor:Spectator 141 -3 newdef ISGW2FormFactor:InQuark 141 4 newdef ISGW2FormFactor:OutQuark 141 3 newdef ISGW2FormFactor:Incoming 142 431 newdef ISGW2FormFactor:Outgoing 142 331 newdef ISGW2FormFactor:Spin 142 0 newdef ISGW2FormFactor:Spectator 142 -3 newdef ISGW2FormFactor:InQuark 142 4 newdef ISGW2FormFactor:OutQuark 142 3 newdef ISGW2FormFactor:Incoming 143 431 newdef ISGW2FormFactor:Outgoing 143 333 newdef ISGW2FormFactor:Spin 143 1 newdef ISGW2FormFactor:Spectator 143 -3 newdef ISGW2FormFactor:InQuark 143 4 newdef ISGW2FormFactor:OutQuark 143 3 newdef ISGW2FormFactor:Incoming 144 431 newdef ISGW2FormFactor:Outgoing 144 335 newdef ISGW2FormFactor:Spin 144 2 newdef ISGW2FormFactor:Spectator 144 -3 newdef ISGW2FormFactor:InQuark 144 4 newdef ISGW2FormFactor:OutQuark 144 3 newdef ISGW2FormFactor:Incoming 145 431 newdef ISGW2FormFactor:Outgoing 145 10333 newdef ISGW2FormFactor:Spin 145 1 newdef ISGW2FormFactor:Spectator 145 -3 newdef ISGW2FormFactor:InQuark 145 4 newdef ISGW2FormFactor:OutQuark 145 3 newdef ISGW2FormFactor:Incoming 146 431 newdef ISGW2FormFactor:Outgoing 146 20333 newdef ISGW2FormFactor:Spin 146 1 newdef ISGW2FormFactor:Spectator 146 -3 newdef ISGW2FormFactor:InQuark 146 4 newdef ISGW2FormFactor:OutQuark 146 3 newdef ISGW2FormFactor:Incoming 147 431 newdef ISGW2FormFactor:Outgoing 147 10331 newdef ISGW2FormFactor:Spin 147 0 newdef ISGW2FormFactor:Spectator 147 -3 newdef ISGW2FormFactor:InQuark 147 4 newdef ISGW2FormFactor:OutQuark 147 3 newdef ISGW2FormFactor:Incoming 148 421 newdef ISGW2FormFactor:Outgoing 148 -211 newdef ISGW2FormFactor:Spin 148 0 newdef ISGW2FormFactor:Spectator 148 -2 newdef ISGW2FormFactor:InQuark 148 4 newdef ISGW2FormFactor:OutQuark 148 1 newdef ISGW2FormFactor:Incoming 149 421 newdef ISGW2FormFactor:Outgoing 149 -213 newdef ISGW2FormFactor:Spin 149 1 newdef ISGW2FormFactor:Spectator 149 -2 newdef ISGW2FormFactor:InQuark 149 4 newdef ISGW2FormFactor:OutQuark 149 1 newdef ISGW2FormFactor:Incoming 150 421 newdef ISGW2FormFactor:Outgoing 150 -215 newdef ISGW2FormFactor:Spin 150 2 newdef ISGW2FormFactor:Spectator 150 -2 newdef ISGW2FormFactor:InQuark 150 4 newdef ISGW2FormFactor:OutQuark 150 1 newdef ISGW2FormFactor:Incoming 151 421 newdef ISGW2FormFactor:Outgoing 151 -10213 newdef ISGW2FormFactor:Spin 151 1 newdef ISGW2FormFactor:Spectator 151 -2 newdef ISGW2FormFactor:InQuark 151 4 newdef ISGW2FormFactor:OutQuark 151 1 newdef ISGW2FormFactor:Incoming 152 421 newdef ISGW2FormFactor:Outgoing 152 -20213 newdef ISGW2FormFactor:Spin 152 1 newdef ISGW2FormFactor:Spectator 152 -2 newdef ISGW2FormFactor:InQuark 152 4 newdef ISGW2FormFactor:OutQuark 152 1 newdef ISGW2FormFactor:Incoming 153 421 newdef ISGW2FormFactor:Outgoing 153 -10211 newdef ISGW2FormFactor:Spin 153 0 newdef ISGW2FormFactor:Spectator 153 -2 newdef ISGW2FormFactor:InQuark 153 4 newdef ISGW2FormFactor:OutQuark 153 1 newdef ISGW2FormFactor:Incoming 154 421 newdef ISGW2FormFactor:Outgoing 154 111 newdef ISGW2FormFactor:Spin 154 0 newdef ISGW2FormFactor:Spectator 154 -2 newdef ISGW2FormFactor:InQuark 154 4 newdef ISGW2FormFactor:OutQuark 154 2 newdef ISGW2FormFactor:Incoming 155 421 newdef ISGW2FormFactor:Outgoing 155 113 newdef ISGW2FormFactor:Spin 155 1 newdef ISGW2FormFactor:Spectator 155 -2 newdef ISGW2FormFactor:InQuark 155 4 newdef ISGW2FormFactor:OutQuark 155 2 newdef ISGW2FormFactor:Incoming 156 421 newdef ISGW2FormFactor:Outgoing 156 115 newdef ISGW2FormFactor:Spin 156 2 newdef ISGW2FormFactor:Spectator 156 -2 newdef ISGW2FormFactor:InQuark 156 4 newdef ISGW2FormFactor:OutQuark 156 2 newdef ISGW2FormFactor:Incoming 157 421 newdef ISGW2FormFactor:Outgoing 157 10113 newdef ISGW2FormFactor:Spin 157 1 newdef ISGW2FormFactor:Spectator 157 -2 newdef ISGW2FormFactor:InQuark 157 4 newdef ISGW2FormFactor:OutQuark 157 2 newdef ISGW2FormFactor:Incoming 158 421 newdef ISGW2FormFactor:Outgoing 158 20113 newdef ISGW2FormFactor:Spin 158 1 newdef ISGW2FormFactor:Spectator 158 -2 newdef ISGW2FormFactor:InQuark 158 4 newdef ISGW2FormFactor:OutQuark 158 2 newdef ISGW2FormFactor:Incoming 159 421 newdef ISGW2FormFactor:Outgoing 159 10111 newdef ISGW2FormFactor:Spin 159 0 newdef ISGW2FormFactor:Spectator 159 -2 newdef ISGW2FormFactor:InQuark 159 4 newdef ISGW2FormFactor:OutQuark 159 2 newdef ISGW2FormFactor:Incoming 160 421 newdef ISGW2FormFactor:Outgoing 160 221 newdef ISGW2FormFactor:Spin 160 0 newdef ISGW2FormFactor:Spectator 160 -2 newdef ISGW2FormFactor:InQuark 160 4 newdef ISGW2FormFactor:OutQuark 160 2 newdef ISGW2FormFactor:Incoming 161 421 newdef ISGW2FormFactor:Outgoing 161 331 newdef ISGW2FormFactor:Spin 161 0 newdef ISGW2FormFactor:Spectator 161 -2 newdef ISGW2FormFactor:InQuark 161 4 newdef ISGW2FormFactor:OutQuark 161 2 newdef ISGW2FormFactor:Incoming 162 421 newdef ISGW2FormFactor:Outgoing 162 223 newdef ISGW2FormFactor:Spin 162 1 newdef ISGW2FormFactor:Spectator 162 -2 newdef ISGW2FormFactor:InQuark 162 4 newdef ISGW2FormFactor:OutQuark 162 2 newdef ISGW2FormFactor:Incoming 163 421 newdef ISGW2FormFactor:Outgoing 163 225 newdef ISGW2FormFactor:Spin 163 2 newdef ISGW2FormFactor:Spectator 163 -2 newdef ISGW2FormFactor:InQuark 163 4 newdef ISGW2FormFactor:OutQuark 163 2 newdef ISGW2FormFactor:Incoming 164 421 newdef ISGW2FormFactor:Outgoing 164 10223 newdef ISGW2FormFactor:Spin 164 1 newdef ISGW2FormFactor:Spectator 164 -2 newdef ISGW2FormFactor:InQuark 164 4 newdef ISGW2FormFactor:OutQuark 164 2 newdef ISGW2FormFactor:Incoming 165 421 newdef ISGW2FormFactor:Outgoing 165 20223 newdef ISGW2FormFactor:Spin 165 1 newdef ISGW2FormFactor:Spectator 165 -2 newdef ISGW2FormFactor:InQuark 165 4 newdef ISGW2FormFactor:OutQuark 165 2 newdef ISGW2FormFactor:Incoming 166 421 newdef ISGW2FormFactor:Outgoing 166 10221 newdef ISGW2FormFactor:Spin 166 0 newdef ISGW2FormFactor:Spectator 166 -2 newdef ISGW2FormFactor:InQuark 166 4 newdef ISGW2FormFactor:OutQuark 166 2 newdef ISGW2FormFactor:Incoming 167 421 newdef ISGW2FormFactor:Outgoing 167 -321 newdef ISGW2FormFactor:Spin 167 0 newdef ISGW2FormFactor:Spectator 167 -2 newdef ISGW2FormFactor:InQuark 167 4 newdef ISGW2FormFactor:OutQuark 167 3 newdef ISGW2FormFactor:Incoming 168 421 newdef ISGW2FormFactor:Outgoing 168 -323 newdef ISGW2FormFactor:Spin 168 1 newdef ISGW2FormFactor:Spectator 168 -2 newdef ISGW2FormFactor:InQuark 168 4 newdef ISGW2FormFactor:OutQuark 168 3 newdef ISGW2FormFactor:Incoming 169 421 newdef ISGW2FormFactor:Outgoing 169 -325 newdef ISGW2FormFactor:Spin 169 2 newdef ISGW2FormFactor:Spectator 169 -2 newdef ISGW2FormFactor:InQuark 169 4 newdef ISGW2FormFactor:OutQuark 169 3 newdef ISGW2FormFactor:Incoming 170 421 newdef ISGW2FormFactor:Outgoing 170 -10323 newdef ISGW2FormFactor:Spin 170 1 newdef ISGW2FormFactor:Spectator 170 -2 newdef ISGW2FormFactor:InQuark 170 4 newdef ISGW2FormFactor:OutQuark 170 3 newdef ISGW2FormFactor:Incoming 171 421 newdef ISGW2FormFactor:Outgoing 171 -20323 newdef ISGW2FormFactor:Spin 171 1 newdef ISGW2FormFactor:Spectator 171 -2 newdef ISGW2FormFactor:InQuark 171 4 newdef ISGW2FormFactor:OutQuark 171 3 newdef ISGW2FormFactor:Incoming 172 421 newdef ISGW2FormFactor:Outgoing 172 -10321 newdef ISGW2FormFactor:Spin 172 0 newdef ISGW2FormFactor:Spectator 172 -2 newdef ISGW2FormFactor:InQuark 172 4 newdef ISGW2FormFactor:OutQuark 172 3 newdef ISGW2FormFactor:Incoming 173 411 newdef ISGW2FormFactor:Outgoing 173 221 newdef ISGW2FormFactor:Spin 173 0 newdef ISGW2FormFactor:Spectator 173 -1 newdef ISGW2FormFactor:InQuark 173 4 newdef ISGW2FormFactor:OutQuark 173 1 newdef ISGW2FormFactor:Incoming 174 411 newdef ISGW2FormFactor:Outgoing 174 331 newdef ISGW2FormFactor:Spin 174 0 newdef ISGW2FormFactor:Spectator 174 -1 newdef ISGW2FormFactor:InQuark 174 4 newdef ISGW2FormFactor:OutQuark 174 1 newdef ISGW2FormFactor:Incoming 175 411 newdef ISGW2FormFactor:Outgoing 175 223 newdef ISGW2FormFactor:Spin 175 1 newdef ISGW2FormFactor:Spectator 175 -1 newdef ISGW2FormFactor:InQuark 175 4 newdef ISGW2FormFactor:OutQuark 175 1 newdef ISGW2FormFactor:Incoming 176 411 newdef ISGW2FormFactor:Outgoing 176 225 newdef ISGW2FormFactor:Spin 176 2 newdef ISGW2FormFactor:Spectator 176 -1 newdef ISGW2FormFactor:InQuark 176 4 newdef ISGW2FormFactor:OutQuark 176 1 newdef ISGW2FormFactor:Incoming 177 411 newdef ISGW2FormFactor:Outgoing 177 10223 newdef ISGW2FormFactor:Spin 177 1 newdef ISGW2FormFactor:Spectator 177 -1 newdef ISGW2FormFactor:InQuark 177 4 newdef ISGW2FormFactor:OutQuark 177 1 newdef ISGW2FormFactor:Incoming 178 411 newdef ISGW2FormFactor:Outgoing 178 20223 newdef ISGW2FormFactor:Spin 178 1 newdef ISGW2FormFactor:Spectator 178 -1 newdef ISGW2FormFactor:InQuark 178 4 newdef ISGW2FormFactor:OutQuark 178 1 newdef ISGW2FormFactor:Incoming 179 411 newdef ISGW2FormFactor:Outgoing 179 10221 newdef ISGW2FormFactor:Spin 179 0 newdef ISGW2FormFactor:Spectator 179 -1 newdef ISGW2FormFactor:InQuark 179 4 newdef ISGW2FormFactor:OutQuark 179 1 newdef ISGW2FormFactor:Incoming 180 411 newdef ISGW2FormFactor:Outgoing 180 111 newdef ISGW2FormFactor:Spin 180 0 newdef ISGW2FormFactor:Spectator 180 -1 newdef ISGW2FormFactor:InQuark 180 4 newdef ISGW2FormFactor:OutQuark 180 1 newdef ISGW2FormFactor:Incoming 181 411 newdef ISGW2FormFactor:Outgoing 181 113 newdef ISGW2FormFactor:Spin 181 1 newdef ISGW2FormFactor:Spectator 181 -1 newdef ISGW2FormFactor:InQuark 181 4 newdef ISGW2FormFactor:OutQuark 181 1 newdef ISGW2FormFactor:Incoming 182 411 newdef ISGW2FormFactor:Outgoing 182 115 newdef ISGW2FormFactor:Spin 182 2 newdef ISGW2FormFactor:Spectator 182 -1 newdef ISGW2FormFactor:InQuark 182 4 newdef ISGW2FormFactor:OutQuark 182 1 newdef ISGW2FormFactor:Incoming 183 411 newdef ISGW2FormFactor:Outgoing 183 10113 newdef ISGW2FormFactor:Spin 183 1 newdef ISGW2FormFactor:Spectator 183 -1 newdef ISGW2FormFactor:InQuark 183 4 newdef ISGW2FormFactor:OutQuark 183 1 newdef ISGW2FormFactor:Incoming 184 411 newdef ISGW2FormFactor:Outgoing 184 20113 newdef ISGW2FormFactor:Spin 184 1 newdef ISGW2FormFactor:Spectator 184 -1 newdef ISGW2FormFactor:InQuark 184 4 newdef ISGW2FormFactor:OutQuark 184 1 newdef ISGW2FormFactor:Incoming 185 411 newdef ISGW2FormFactor:Outgoing 185 10111 newdef ISGW2FormFactor:Spin 185 0 newdef ISGW2FormFactor:Spectator 185 -1 newdef ISGW2FormFactor:InQuark 185 4 newdef ISGW2FormFactor:OutQuark 185 1 newdef ISGW2FormFactor:Incoming 186 411 newdef ISGW2FormFactor:Outgoing 186 211 newdef ISGW2FormFactor:Spin 186 0 newdef ISGW2FormFactor:Spectator 186 -1 newdef ISGW2FormFactor:InQuark 186 4 newdef ISGW2FormFactor:OutQuark 186 2 newdef ISGW2FormFactor:Incoming 187 411 newdef ISGW2FormFactor:Outgoing 187 213 newdef ISGW2FormFactor:Spin 187 1 newdef ISGW2FormFactor:Spectator 187 -1 newdef ISGW2FormFactor:InQuark 187 4 newdef ISGW2FormFactor:OutQuark 187 2 newdef ISGW2FormFactor:Incoming 188 411 newdef ISGW2FormFactor:Outgoing 188 215 newdef ISGW2FormFactor:Spin 188 2 newdef ISGW2FormFactor:Spectator 188 -1 newdef ISGW2FormFactor:InQuark 188 4 newdef ISGW2FormFactor:OutQuark 188 2 newdef ISGW2FormFactor:Incoming 189 411 newdef ISGW2FormFactor:Outgoing 189 10213 newdef ISGW2FormFactor:Spin 189 1 newdef ISGW2FormFactor:Spectator 189 -1 newdef ISGW2FormFactor:InQuark 189 4 newdef ISGW2FormFactor:OutQuark 189 2 newdef ISGW2FormFactor:Incoming 190 411 newdef ISGW2FormFactor:Outgoing 190 20213 newdef ISGW2FormFactor:Spin 190 1 newdef ISGW2FormFactor:Spectator 190 -1 newdef ISGW2FormFactor:InQuark 190 4 newdef ISGW2FormFactor:OutQuark 190 2 newdef ISGW2FormFactor:Incoming 191 411 newdef ISGW2FormFactor:Outgoing 191 10211 newdef ISGW2FormFactor:Spin 191 0 newdef ISGW2FormFactor:Spectator 191 -1 newdef ISGW2FormFactor:InQuark 191 4 newdef ISGW2FormFactor:OutQuark 191 2 newdef ISGW2FormFactor:Incoming 192 411 newdef ISGW2FormFactor:Outgoing 192 -311 newdef ISGW2FormFactor:Spin 192 0 newdef ISGW2FormFactor:Spectator 192 -1 newdef ISGW2FormFactor:InQuark 192 4 newdef ISGW2FormFactor:OutQuark 192 3 newdef ISGW2FormFactor:Incoming 193 411 newdef ISGW2FormFactor:Outgoing 193 -313 newdef ISGW2FormFactor:Spin 193 1 newdef ISGW2FormFactor:Spectator 193 -1 newdef ISGW2FormFactor:InQuark 193 4 newdef ISGW2FormFactor:OutQuark 193 3 newdef ISGW2FormFactor:Incoming 194 411 newdef ISGW2FormFactor:Outgoing 194 -315 newdef ISGW2FormFactor:Spin 194 2 newdef ISGW2FormFactor:Spectator 194 -1 newdef ISGW2FormFactor:InQuark 194 4 newdef ISGW2FormFactor:OutQuark 194 3 newdef ISGW2FormFactor:Incoming 195 411 newdef ISGW2FormFactor:Outgoing 195 -10313 newdef ISGW2FormFactor:Spin 195 1 newdef ISGW2FormFactor:Spectator 195 -1 newdef ISGW2FormFactor:InQuark 195 4 newdef ISGW2FormFactor:OutQuark 195 3 newdef ISGW2FormFactor:Incoming 196 411 newdef ISGW2FormFactor:Outgoing 196 -20313 newdef ISGW2FormFactor:Spin 196 1 newdef ISGW2FormFactor:Spectator 196 -1 newdef ISGW2FormFactor:InQuark 196 4 newdef ISGW2FormFactor:OutQuark 196 3 newdef ISGW2FormFactor:Incoming 197 411 newdef ISGW2FormFactor:Outgoing 197 -10311 newdef ISGW2FormFactor:Spin 197 0 newdef ISGW2FormFactor:Spectator 197 -1 newdef ISGW2FormFactor:InQuark 197 4 newdef ISGW2FormFactor:OutQuark 197 3 newdef ISGW2:FormFactor ISGW2FormFactor # create Herwig::SMZDecayer ZDecayer HwPerturbativeDecay.so newdef ZDecayer:Coupling /Herwig/Shower/AlphaQCD newdef ZDecayer:QuarkMax 0 0.43 newdef ZDecayer:QuarkMax 1 0.30 newdef ZDecayer:QuarkMax 2 0.43 newdef ZDecayer:QuarkMax 3 0.30 newdef ZDecayer:QuarkMax 4 0.43 newdef ZDecayer:LeptonMax 0 0.1 newdef ZDecayer:LeptonMax 1 0.2 newdef ZDecayer:LeptonMax 2 0.1 newdef ZDecayer:LeptonMax 3 0.2 newdef ZDecayer:LeptonMax 4 0.1 newdef ZDecayer:LeptonMax 5 0.2 newdef ZDecayer:Iteration 1 newdef ZDecayer:Ntry 500 newdef ZDecayer:Points 10000 newdef ZDecayer:GenerateIntermediates 0 newdef ZDecayer:PhotonGenerator /Herwig/QEDRadiation/SOPHTY # create Herwig::SMWDecayer WDecayer newdef WDecayer:Coupling /Herwig/Shower/AlphaQCD newdef WDecayer:QuarkMax 0 0.9 newdef WDecayer:QuarkMax 1 0.05 newdef WDecayer:QuarkMax 2 0.05 newdef WDecayer:QuarkMax 3 0.9 newdef WDecayer:QuarkMax 4 2.e-05 newdef WDecayer:QuarkMax 5 0.0016 newdef WDecayer:LeptonMax 0 0.33 newdef WDecayer:LeptonMax 1 0.33 newdef WDecayer:LeptonMax 2 0.33 newdef WDecayer:Iteration 1 newdef WDecayer:Ntry 500 newdef WDecayer:Points 10000 newdef WDecayer:GenerateIntermediates 0 newdef WDecayer:PhotonGenerator /Herwig/QEDRadiation/SOPHTY # create Herwig::PVectorMesonVectorPScalarDecayer PVectorVP newdef PVectorVP:Iteration 1 newdef PVectorVP:Ntry 2500 newdef PVectorVP:Points 10000 newdef PVectorVP:GenerateIntermediates 0 newdef PVectorVP:Incoming 0 10333 newdef PVectorVP:OutgoingVector 0 313 newdef PVectorVP:OutgoingPScalar 0 -311 newdef PVectorVP:Coupling 0 4.889 newdef PVectorVP:MaxWeight 0 2.44776 newdef PVectorVP:Incoming 1 10333 newdef PVectorVP:OutgoingVector 1 323 newdef PVectorVP:OutgoingPScalar 1 -321 newdef PVectorVP:Coupling 1 4.156 newdef PVectorVP:MaxWeight 1 2.51169 newdef PVectorVP:Incoming 2 10223 newdef PVectorVP:OutgoingVector 2 113 newdef PVectorVP:OutgoingPScalar 2 111 newdef PVectorVP:Coupling 2 4.411 newdef PVectorVP:MaxWeight 2 3.29541 newdef PVectorVP:Incoming 3 10223 newdef PVectorVP:OutgoingVector 3 -213 newdef PVectorVP:OutgoingPScalar 3 211 newdef PVectorVP:Coupling 3 4.411 newdef PVectorVP:MaxWeight 3 3.32547 newdef PVectorVP:Incoming 4 10113 newdef PVectorVP:OutgoingVector 4 223 newdef PVectorVP:OutgoingPScalar 4 111 newdef PVectorVP:Coupling 4 3.862 newdef PVectorVP:MaxWeight 4 5.9555 newdef PVectorVP:Incoming 5 10213 newdef PVectorVP:OutgoingVector 5 223 newdef PVectorVP:OutgoingPScalar 5 211 newdef PVectorVP:Coupling 5 3.862 newdef PVectorVP:MaxWeight 5 5.6102 newdef PVectorVP:Incoming 6 10213 newdef PVectorVP:OutgoingVector 6 22 newdef PVectorVP:OutgoingPScalar 6 211 newdef PVectorVP:Coupling 6 0.195 newdef PVectorVP:MaxWeight 6 1.58726 newdef PVectorVP:Incoming 7 20433 newdef PVectorVP:OutgoingVector 7 413 newdef PVectorVP:OutgoingPScalar 7 311 newdef PVectorVP:Coupling 7 0.161 newdef PVectorVP:MaxWeight 7 2.09271 newdef PVectorVP:Incoming 8 20433 newdef PVectorVP:OutgoingVector 8 423 newdef PVectorVP:OutgoingPScalar 8 321 newdef PVectorVP:Coupling 8 0.161 newdef PVectorVP:MaxWeight 8 1.62303 newdef PVectorVP:Incoming 9 20533 newdef PVectorVP:OutgoingVector 9 513 newdef PVectorVP:OutgoingPScalar 9 -311 newdef PVectorVP:Coupling 9 0.389 newdef PVectorVP:MaxWeight 9 1.57892 newdef PVectorVP:Incoming 10 20533 newdef PVectorVP:OutgoingVector 10 523 newdef PVectorVP:OutgoingPScalar 10 -321 newdef PVectorVP:Coupling 10 0.389 newdef PVectorVP:MaxWeight 10 1.65181 newdef PVectorVP:Incoming 11 10323 newdef PVectorVP:OutgoingVector 11 213 newdef PVectorVP:OutgoingPScalar 11 311 newdef PVectorVP:Coupling 11 4.98 newdef PVectorVP:MaxWeight 11 2.21683 newdef PVectorVP:Incoming 12 10323 newdef PVectorVP:OutgoingVector 12 113 newdef PVectorVP:OutgoingPScalar 12 321 newdef PVectorVP:Coupling 12 3.4 newdef PVectorVP:MaxWeight 12 2.22014 newdef PVectorVP:Incoming 13 10313 newdef PVectorVP:OutgoingVector 13 -213 newdef PVectorVP:OutgoingPScalar 13 321 newdef PVectorVP:Coupling 13 4.87 newdef PVectorVP:MaxWeight 13 2.21695 newdef PVectorVP:Incoming 14 10313 newdef PVectorVP:OutgoingVector 14 113 newdef PVectorVP:OutgoingPScalar 14 311 newdef PVectorVP:Coupling 14 3.55 newdef PVectorVP:MaxWeight 14 2.21985 newdef PVectorVP:Incoming 15 20323 newdef PVectorVP:OutgoingVector 15 213 newdef PVectorVP:OutgoingPScalar 15 311 newdef PVectorVP:Coupling 15 0.97 newdef PVectorVP:MaxWeight 15 2.5873 newdef PVectorVP:Incoming 16 20323 newdef PVectorVP:OutgoingVector 16 113 newdef PVectorVP:OutgoingPScalar 16 321 newdef PVectorVP:Coupling 16 0.69 newdef PVectorVP:MaxWeight 16 2.67905 newdef PVectorVP:Incoming 17 20313 newdef PVectorVP:OutgoingVector 17 -213 newdef PVectorVP:OutgoingPScalar 17 321 newdef PVectorVP:Coupling 17 0.97 newdef PVectorVP:MaxWeight 17 2.62517 newdef PVectorVP:Incoming 18 20313 newdef PVectorVP:OutgoingVector 18 113 newdef PVectorVP:OutgoingPScalar 18 311 newdef PVectorVP:Coupling 18 0.707 newdef PVectorVP:MaxWeight 18 2.67986 newdef PVectorVP:Incoming 19 10323 newdef PVectorVP:OutgoingVector 19 223 newdef PVectorVP:OutgoingPScalar 19 321 newdef PVectorVP:Coupling 19 4.76 newdef PVectorVP:MaxWeight 19 3.5592 newdef PVectorVP:Incoming 20 10313 newdef PVectorVP:OutgoingVector 20 223 newdef PVectorVP:OutgoingPScalar 20 311 newdef PVectorVP:Coupling 20 6 newdef PVectorVP:MaxWeight 20 3.13577 newdef PVectorVP:Incoming 21 20323 newdef PVectorVP:OutgoingVector 21 223 newdef PVectorVP:OutgoingPScalar 21 321 newdef PVectorVP:Coupling 21 0.6 newdef PVectorVP:MaxWeight 21 5.60103 newdef PVectorVP:Incoming 22 20313 newdef PVectorVP:OutgoingVector 22 223 newdef PVectorVP:OutgoingPScalar 22 311 newdef PVectorVP:Coupling 22 0.6 newdef PVectorVP:MaxWeight 22 5.65356 newdef PVectorVP:Incoming 23 10323 newdef PVectorVP:OutgoingVector 23 313 newdef PVectorVP:OutgoingPScalar 23 211 newdef PVectorVP:Coupling 23 0.941 newdef PVectorVP:MaxWeight 23 3.34513 newdef PVectorVP:Incoming 24 10323 newdef PVectorVP:OutgoingVector 24 323 newdef PVectorVP:OutgoingPScalar 24 111 newdef PVectorVP:Coupling 24 0.656 newdef PVectorVP:MaxWeight 24 3.44165 newdef PVectorVP:Incoming 25 10313 newdef PVectorVP:OutgoingVector 25 323 newdef PVectorVP:OutgoingPScalar 25 -211 newdef PVectorVP:Coupling 25 0.932 newdef PVectorVP:MaxWeight 25 3.52483 newdef PVectorVP:Incoming 26 10313 newdef PVectorVP:OutgoingVector 26 313 newdef PVectorVP:OutgoingPScalar 26 111 newdef PVectorVP:Coupling 26 0.658 newdef PVectorVP:MaxWeight 26 3.35878 newdef PVectorVP:Incoming 27 20323 newdef PVectorVP:OutgoingVector 27 313 newdef PVectorVP:OutgoingPScalar 27 211 newdef PVectorVP:Coupling 27 2.845 newdef PVectorVP:MaxWeight 27 6.20364 newdef PVectorVP:Incoming 28 20323 newdef PVectorVP:OutgoingVector 28 323 newdef PVectorVP:OutgoingPScalar 28 111 newdef PVectorVP:Coupling 28 1.99 newdef PVectorVP:MaxWeight 28 7.14694 newdef PVectorVP:Incoming 29 20313 newdef PVectorVP:OutgoingVector 29 323 newdef PVectorVP:OutgoingPScalar 29 -211 newdef PVectorVP:Coupling 29 2.84 newdef PVectorVP:MaxWeight 29 6.18289 newdef PVectorVP:Incoming 30 20313 newdef PVectorVP:OutgoingVector 30 313 newdef PVectorVP:OutgoingPScalar 30 111 newdef PVectorVP:Coupling 30 2 newdef PVectorVP:MaxWeight 30 6.27914 newdef PVectorVP:Incoming 31 10423 newdef PVectorVP:OutgoingVector 31 413 newdef PVectorVP:OutgoingPScalar 31 -211 newdef PVectorVP:Coupling 31 0.489 newdef PVectorVP:MaxWeight 31 1.97898 newdef PVectorVP:Incoming 32 10423 newdef PVectorVP:OutgoingVector 32 423 newdef PVectorVP:OutgoingPScalar 32 111 newdef PVectorVP:Coupling 32 0.347 newdef PVectorVP:MaxWeight 32 1.76435 newdef PVectorVP:Incoming 33 10413 newdef PVectorVP:OutgoingVector 33 423 newdef PVectorVP:OutgoingPScalar 33 211 newdef PVectorVP:Coupling 33 0.542 newdef PVectorVP:MaxWeight 33 1.75368 newdef PVectorVP:Incoming 34 10413 newdef PVectorVP:OutgoingVector 34 413 newdef PVectorVP:OutgoingPScalar 34 111 newdef PVectorVP:Coupling 34 0.383 newdef PVectorVP:MaxWeight 34 2.00289 newdef PVectorVP:Incoming 35 20423 newdef PVectorVP:OutgoingVector 35 413 newdef PVectorVP:OutgoingPScalar 35 -211 newdef PVectorVP:Coupling 35 1.933 newdef PVectorVP:MaxWeight 35 3.82352 newdef PVectorVP:Incoming 36 20423 newdef PVectorVP:OutgoingVector 36 423 newdef PVectorVP:OutgoingPScalar 36 111 newdef PVectorVP:Coupling 36 1.367 newdef PVectorVP:MaxWeight 36 1.81635 newdef PVectorVP:Incoming 37 20413 newdef PVectorVP:OutgoingVector 37 423 newdef PVectorVP:OutgoingPScalar 37 211 newdef PVectorVP:Coupling 37 1.926 newdef PVectorVP:MaxWeight 37 1.91055 newdef PVectorVP:Incoming 38 20413 newdef PVectorVP:OutgoingVector 38 413 newdef PVectorVP:OutgoingPScalar 38 111 newdef PVectorVP:Coupling 38 1.367 newdef PVectorVP:MaxWeight 38 2.01247 newdef PVectorVP:Incoming 39 10523 newdef PVectorVP:OutgoingVector 39 513 newdef PVectorVP:OutgoingPScalar 39 211 newdef PVectorVP:Coupling 39 0.13 newdef PVectorVP:MaxWeight 39 1.5882 newdef PVectorVP:Incoming 40 10523 newdef PVectorVP:OutgoingVector 40 523 newdef PVectorVP:OutgoingPScalar 40 111 newdef PVectorVP:Coupling 40 0.0924 newdef PVectorVP:MaxWeight 40 1.61264 newdef PVectorVP:Incoming 41 10513 newdef PVectorVP:OutgoingVector 41 523 newdef PVectorVP:OutgoingPScalar 41 -211 newdef PVectorVP:Coupling 41 0.13 newdef PVectorVP:MaxWeight 41 1.58872 newdef PVectorVP:Incoming 42 10513 newdef PVectorVP:OutgoingVector 42 513 newdef PVectorVP:OutgoingPScalar 42 111 newdef PVectorVP:Coupling 42 0.0924 newdef PVectorVP:MaxWeight 42 1.61211 newdef PVectorVP:Incoming 43 20523 newdef PVectorVP:OutgoingVector 43 513 newdef PVectorVP:OutgoingPScalar 43 211 newdef PVectorVP:Coupling 43 0.445 newdef PVectorVP:MaxWeight 43 1.59926 newdef PVectorVP:Incoming 44 20523 newdef PVectorVP:OutgoingVector 44 523 newdef PVectorVP:OutgoingPScalar 44 111 newdef PVectorVP:Coupling 44 0.314 newdef PVectorVP:MaxWeight 44 1.59799 newdef PVectorVP:Incoming 45 20513 newdef PVectorVP:OutgoingVector 45 523 newdef PVectorVP:OutgoingPScalar 45 -211 newdef PVectorVP:Coupling 45 0.445 newdef PVectorVP:MaxWeight 45 1.59924 newdef PVectorVP:Incoming 46 20513 newdef PVectorVP:OutgoingVector 46 513 newdef PVectorVP:OutgoingPScalar 46 111 newdef PVectorVP:Coupling 46 0.314 newdef PVectorVP:MaxWeight 46 1.59793 newdef PVectorVP:Incoming 47 10433 newdef PVectorVP:OutgoingVector 47 433 newdef PVectorVP:OutgoingPScalar 47 111 newdef PVectorVP:Coupling 47 0.022 newdef PVectorVP:MaxWeight 47 1.6163 newdef PVectorVP:Incoming 48 10433 newdef PVectorVP:OutgoingVector 48 22 newdef PVectorVP:OutgoingPScalar 48 431 newdef PVectorVP:Coupling 48 0.0587 newdef PVectorVP:MaxWeight 48 1.60079 newdef PVectorVP:Incoming 49 10533 newdef PVectorVP:OutgoingVector 49 22 newdef PVectorVP:OutgoingPScalar 49 531 newdef PVectorVP:Coupling 49 0.142 newdef PVectorVP:MaxWeight 49 0.253632 newdef PVectorVP:Incoming 50 10533 newdef PVectorVP:OutgoingVector 50 533 newdef PVectorVP:OutgoingPScalar 50 111 newdef PVectorVP:Coupling 50 0.0074 newdef PVectorVP:MaxWeight 50 0.126654 newdef PVectorVP:Incoming 51 10543 newdef PVectorVP:OutgoingVector 51 22 newdef PVectorVP:OutgoingPScalar 51 541 newdef PVectorVP:Coupling 51 0.0759 newdef PVectorVP:MaxWeight 51 1.60144 newdef PVectorVP:Incoming 52 20543 newdef PVectorVP:OutgoingVector 52 22 newdef PVectorVP:OutgoingPScalar 52 541 newdef PVectorVP:Coupling 52 0.175 newdef PVectorVP:MaxWeight 52 1.60099 newdef PVectorVP:Incoming 53 10443 newdef PVectorVP:OutgoingVector 53 22 newdef PVectorVP:OutgoingPScalar 53 441 newdef PVectorVP:Coupling 53 0.329 newdef PVectorVP:MaxWeight 53 3.98776 newdef PVectorVP:Incoming 54 10553 newdef PVectorVP:OutgoingVector 54 22 newdef PVectorVP:OutgoingPScalar 54 551 newdef PVectorVP:Coupling 54 0.0356 newdef PVectorVP:MaxWeight 54 0.221701 newdef PVectorVP:Incoming 55 20213 newdef PVectorVP:OutgoingVector 55 323 newdef PVectorVP:OutgoingPScalar 55 -311 newdef PVectorVP:Coupling 55 3.42 newdef PVectorVP:MaxWeight 55 3.19968 newdef PVectorVP:Incoming 56 20213 newdef PVectorVP:OutgoingVector 56 -313 newdef PVectorVP:OutgoingPScalar 56 321 newdef PVectorVP:Coupling 56 3.42 newdef PVectorVP:MaxWeight 56 3.53218 newdef PVectorVP:Incoming 57 20113 newdef PVectorVP:OutgoingVector 57 -323 newdef PVectorVP:OutgoingPScalar 57 321 newdef PVectorVP:Coupling 57 3.42 newdef PVectorVP:MaxWeight 57 3.57566 newdef PVectorVP:Incoming 58 20113 newdef PVectorVP:OutgoingVector 58 -313 newdef PVectorVP:OutgoingPScalar 58 311 newdef PVectorVP:Coupling 58 3.42 newdef PVectorVP:MaxWeight 58 3.31095 newdef PVectorVP:Incoming 59 20113 newdef PVectorVP:OutgoingVector 59 22 newdef PVectorVP:OutgoingPScalar 59 111 newdef PVectorVP:Coupling 59 0.01 newdef PVectorVP:MaxWeight 59 1.6 newdef PVectorVP:Incoming 60 20213 newdef PVectorVP:OutgoingVector 60 22 newdef PVectorVP:OutgoingPScalar 60 211 newdef PVectorVP:Coupling 60 0.01 newdef PVectorVP:MaxWeight 60 1.6 newdef PVectorVP:Incoming 61 20333 newdef PVectorVP:OutgoingVector 61 -323 newdef PVectorVP:OutgoingPScalar 61 321 newdef PVectorVP:Coupling 61 1.637 newdef PVectorVP:MaxWeight 61 5.43736 newdef PVectorVP:Incoming 62 20333 newdef PVectorVP:OutgoingVector 62 -313 newdef PVectorVP:OutgoingPScalar 62 311 newdef PVectorVP:Coupling 62 1.737 newdef PVectorVP:MaxWeight 62 4.63598 newdef PVectorVP:Incoming 63 10313 newdef PVectorVP:OutgoingVector 63 22 newdef PVectorVP:OutgoingPScalar 63 311 newdef PVectorVP:Coupling 63 0.119 newdef PVectorVP:MaxWeight 63 1.6 newdef PVectorVP:Incoming 64 20313 newdef PVectorVP:OutgoingVector 64 22 newdef PVectorVP:OutgoingPScalar 64 311 newdef PVectorVP:Coupling 64 0.22 newdef PVectorVP:MaxWeight 64 1.6 newdef PVectorVP:Incoming 65 10533 newdef PVectorVP:OutgoingVector 65 513 newdef PVectorVP:OutgoingPScalar 65 -311 newdef PVectorVP:Coupling 65 0.0418 newdef PVectorVP:MaxWeight 65 1.60089 newdef PVectorVP:Incoming 66 10533 newdef PVectorVP:OutgoingVector 66 523 newdef PVectorVP:OutgoingPScalar 66 -321 newdef PVectorVP:Coupling 66 0.0373 newdef PVectorVP:MaxWeight 66 1.60358 # create Herwig::PScalarLeptonNeutrinoDecayer PScalarlnu newdef PScalarlnu:Iteration 1 newdef PScalarlnu:Ntry 500 newdef PScalarlnu:Points 100 newdef PScalarlnu:GenerateIntermediates 0 newdef PScalarlnu:Incoming 0 211 newdef PScalarlnu:Leptons 0 2 newdef PScalarlnu:MaxWeightElectron 0 0.000138471 newdef PScalarlnu:MaxWeightMuon 0 1.08315 newdef PScalarlnu:MaxWeightTau 0 0 newdef PScalarlnu:DecayConstant 0 127.27 newdef PScalarlnu:Incoming 1 321 newdef PScalarlnu:Leptons 1 2 newdef PScalarlnu:MaxWeightElectron 1 1.87067e-05 newdef PScalarlnu:MaxWeightMuon 1 0.731058 newdef PScalarlnu:MaxWeightTau 1 0 newdef PScalarlnu:DecayConstant 1 36.06 newdef PScalarlnu:Incoming 2 431 newdef PScalarlnu:Leptons 2 3 newdef PScalarlnu:MaxWeightElectron 2 1.83428e-07 newdef PScalarlnu:MaxWeightMuon 2 0.00782778 newdef PScalarlnu:MaxWeightTau 2 0.0760936 newdef PScalarlnu:DecayConstant 2 281.36 newdef PScalarlnu:Incoming 3 411 newdef PScalarlnu:Leptons 3 3 newdef PScalarlnu:MaxWeightElectron 3 1.19915e-08 newdef PScalarlnu:MaxWeightMuon 3 0.000511418 newdef PScalarlnu:MaxWeightTau 3 0.00135052 newdef PScalarlnu:DecayConstant 3 51.2 newdef PScalarlnu:Incoming 4 541 newdef PScalarlnu:Leptons 4 3 newdef PScalarlnu:MaxWeightElectron 4 1.7429e-09 newdef PScalarlnu:MaxWeightMuon 4 7.47667e-05 newdef PScalarlnu:MaxWeightTau 4 0.0179128 newdef PScalarlnu:DecayConstant 4 16 newdef PScalarlnu:Incoming 5 521 newdef PScalarlnu:Leptons 5 3 newdef PScalarlnu:MaxWeightElectron 5 1.19578e-11 newdef PScalarlnu:MaxWeightMuon 5 5.12844e-07 newdef PScalarlnu:MaxWeightTau 5 0.000114138 newdef PScalarlnu:DecayConstant 5 0.759 # create Herwig::VectorMesonVectorVectorDecayer VectorVV newdef VectorVV:Iteration 1 newdef VectorVV:Ntry 1000 newdef VectorVV:Points 10000 newdef VectorVV:GenerateIntermediates 0 newdef VectorVV:Incoming 0 30213 newdef VectorVV:Outgoing1 0 213 newdef VectorVV:Outgoing2 0 113 newdef VectorVV:Coupling 0 3.21 newdef VectorVV:MaxWeight 0 35. newdef VectorVV:Incoming 1 30113 newdef VectorVV:Outgoing1 1 -213 newdef VectorVV:Outgoing2 1 213 newdef VectorVV:Coupling 1 3.21 newdef VectorVV:MaxWeight 1 35. newdef VectorVV:Incoming 2 100213 newdef VectorVV:Outgoing1 2 213 newdef VectorVV:Outgoing2 2 113 newdef VectorVV:Coupling 2 9.59 newdef VectorVV:MaxWeight 2 52.2482 newdef VectorVV:Incoming 3 100113 newdef VectorVV:Outgoing1 3 -213 newdef VectorVV:Outgoing2 3 213 newdef VectorVV:Coupling 3 9.59 newdef VectorVV:MaxWeight 3 45.0477 # create Herwig::ScalarMesonFactorizedDecayer ISGW2Hadronic newdef ISGW2Hadronic:Iteration 1 newdef ISGW2Hadronic:Ntry 500 newdef ISGW2Hadronic:Points 10000 newdef ISGW2Hadronic:GenerateIntermediates 1 newdef ISGW2Hadronic:a1Bottom 1.1 newdef ISGW2Hadronic:a2Bottom -0.24 newdef ISGW2Hadronic:a1Charm 1.3 newdef ISGW2Hadronic:a2Charm -0.55 create Herwig::ScalarMesonCurrent ISGW2HadronicScalarCurrent HwWeakCurrents.so newdef ISGW2HadronicScalarCurrent:ThetaEtaEtaPrime -0.194 newdef ISGW2HadronicScalarCurrent:ID 0 211 newdef ISGW2HadronicScalarCurrent:Decay_Constant 0 130.7 newdef ISGW2HadronicScalarCurrent:ID 1 111 newdef ISGW2HadronicScalarCurrent:Decay_Constant 1 130.7 newdef ISGW2HadronicScalarCurrent:ID 2 111 newdef ISGW2HadronicScalarCurrent:Decay_Constant 2 130.7 newdef ISGW2HadronicScalarCurrent:ID 3 221 newdef ISGW2HadronicScalarCurrent:Decay_Constant 3 130.7 newdef ISGW2HadronicScalarCurrent:ID 4 221 newdef ISGW2HadronicScalarCurrent:Decay_Constant 4 130.7 newdef ISGW2HadronicScalarCurrent:ID 5 221 newdef ISGW2HadronicScalarCurrent:Decay_Constant 5 130.7 newdef ISGW2HadronicScalarCurrent:ID 6 331 newdef ISGW2HadronicScalarCurrent:Decay_Constant 6 130.7 newdef ISGW2HadronicScalarCurrent:ID 7 331 newdef ISGW2HadronicScalarCurrent:Decay_Constant 7 130.7 newdef ISGW2HadronicScalarCurrent:ID 8 331 newdef ISGW2HadronicScalarCurrent:Decay_Constant 8 130.7 newdef ISGW2HadronicScalarCurrent:ID 9 311 newdef ISGW2HadronicScalarCurrent:Decay_Constant 9 159.8 newdef ISGW2HadronicScalarCurrent:ID 10 321 newdef ISGW2HadronicScalarCurrent:Decay_Constant 10 159.8 newdef ISGW2HadronicScalarCurrent:ID 11 411 newdef ISGW2HadronicScalarCurrent:Decay_Constant 11 200 newdef ISGW2HadronicScalarCurrent:ID 12 421 newdef ISGW2HadronicScalarCurrent:Decay_Constant 12 200 newdef ISGW2HadronicScalarCurrent:ID 13 431 newdef ISGW2HadronicScalarCurrent:Decay_Constant 13 241 newdef ISGW2HadronicScalarCurrent:ID 14 10431 newdef ISGW2HadronicScalarCurrent:Decay_Constant 14 73.7 newdef ISGW2HadronicScalarCurrent:Quark 0 2 newdef ISGW2HadronicScalarCurrent:AntiQuark 0 -1 newdef ISGW2HadronicScalarCurrent:Quark 1 1 newdef ISGW2HadronicScalarCurrent:AntiQuark 1 -1 newdef ISGW2HadronicScalarCurrent:Quark 2 2 newdef ISGW2HadronicScalarCurrent:AntiQuark 2 -2 newdef ISGW2HadronicScalarCurrent:Quark 3 1 newdef ISGW2HadronicScalarCurrent:AntiQuark 3 -1 newdef ISGW2HadronicScalarCurrent:Quark 4 2 newdef ISGW2HadronicScalarCurrent:AntiQuark 4 -2 newdef ISGW2HadronicScalarCurrent:Quark 5 3 newdef ISGW2HadronicScalarCurrent:AntiQuark 5 -3 newdef ISGW2HadronicScalarCurrent:Quark 6 1 newdef ISGW2HadronicScalarCurrent:AntiQuark 6 -1 newdef ISGW2HadronicScalarCurrent:Quark 7 2 newdef ISGW2HadronicScalarCurrent:AntiQuark 7 -2 newdef ISGW2HadronicScalarCurrent:Quark 8 3 newdef ISGW2HadronicScalarCurrent:AntiQuark 8 -3 newdef ISGW2HadronicScalarCurrent:Quark 9 1 newdef ISGW2HadronicScalarCurrent:AntiQuark 9 -3 newdef ISGW2HadronicScalarCurrent:Quark 10 2 newdef ISGW2HadronicScalarCurrent:AntiQuark 10 -3 newdef ISGW2HadronicScalarCurrent:Quark 11 4 newdef ISGW2HadronicScalarCurrent:AntiQuark 11 -1 newdef ISGW2HadronicScalarCurrent:Quark 12 4 newdef ISGW2HadronicScalarCurrent:AntiQuark 12 -2 newdef ISGW2HadronicScalarCurrent:Quark 13 4 newdef ISGW2HadronicScalarCurrent:AntiQuark 13 -3 newdef ISGW2HadronicScalarCurrent:Quark 14 4 newdef ISGW2HadronicScalarCurrent:AntiQuark 14 -3 insert ISGW2Hadronic:Currents 0 ISGW2HadronicScalarCurrent create Herwig::VectorMesonCurrent ISGW2HadronicVectorCurrent HwWeakCurrents.so newdef ISGW2HadronicVectorCurrent:ID 0 213 newdef ISGW2HadronicVectorCurrent:Decay_Constant 0 0.1764 newdef ISGW2HadronicVectorCurrent:ID 1 113 newdef ISGW2HadronicVectorCurrent:Decay_Constant 1 0.1764 newdef ISGW2HadronicVectorCurrent:ID 2 113 newdef ISGW2HadronicVectorCurrent:Decay_Constant 2 0.1764 newdef ISGW2HadronicVectorCurrent:ID 3 223 newdef ISGW2HadronicVectorCurrent:Decay_Constant 3 0.1764 newdef ISGW2HadronicVectorCurrent:ID 4 223 newdef ISGW2HadronicVectorCurrent:Decay_Constant 4 0.1764 newdef ISGW2HadronicVectorCurrent:ID 5 333 newdef ISGW2HadronicVectorCurrent:Decay_Constant 5 0.238 newdef ISGW2HadronicVectorCurrent:ID 6 313 newdef ISGW2HadronicVectorCurrent:Decay_Constant 6 0.2019 newdef ISGW2HadronicVectorCurrent:ID 7 323 newdef ISGW2HadronicVectorCurrent:Decay_Constant 7 0.2019 newdef ISGW2HadronicVectorCurrent:ID 8 20213 newdef ISGW2HadronicVectorCurrent:Decay_Constant 8 0.4626 newdef ISGW2HadronicVectorCurrent:ID 9 20113 newdef ISGW2HadronicVectorCurrent:Decay_Constant 9 0.4626 newdef ISGW2HadronicVectorCurrent:ID 10 20113 newdef ISGW2HadronicVectorCurrent:Decay_Constant 10 0.4626 newdef ISGW2HadronicVectorCurrent:ID 11 413 newdef ISGW2HadronicVectorCurrent:Decay_Constant 11 0.402 newdef ISGW2HadronicVectorCurrent:ID 12 423 newdef ISGW2HadronicVectorCurrent:Decay_Constant 12 0.402 newdef ISGW2HadronicVectorCurrent:ID 13 433 newdef ISGW2HadronicVectorCurrent:Decay_Constant 13 0.509 newdef ISGW2HadronicVectorCurrent:ID 14 443 newdef ISGW2HadronicVectorCurrent:Decay_Constant 14 1.223 newdef ISGW2HadronicVectorCurrent:ID 15 100443 newdef ISGW2HadronicVectorCurrent:Decay_Constant 15 1.08 newdef ISGW2HadronicVectorCurrent:ID 16 10433 newdef ISGW2HadronicVectorCurrent:Decay_Constant 16 0.397 newdef ISGW2HadronicVectorCurrent:Quark 0 2 newdef ISGW2HadronicVectorCurrent:AntiQuark 0 -1 newdef ISGW2HadronicVectorCurrent:Quark 1 1 newdef ISGW2HadronicVectorCurrent:AntiQuark 1 -1 newdef ISGW2HadronicVectorCurrent:Quark 2 2 newdef ISGW2HadronicVectorCurrent:AntiQuark 2 -2 newdef ISGW2HadronicVectorCurrent:Quark 3 1 newdef ISGW2HadronicVectorCurrent:AntiQuark 3 -1 newdef ISGW2HadronicVectorCurrent:Quark 4 2 newdef ISGW2HadronicVectorCurrent:AntiQuark 4 -2 newdef ISGW2HadronicVectorCurrent:Quark 5 3 newdef ISGW2HadronicVectorCurrent:AntiQuark 5 -3 newdef ISGW2HadronicVectorCurrent:Quark 6 1 newdef ISGW2HadronicVectorCurrent:AntiQuark 6 -3 newdef ISGW2HadronicVectorCurrent:Quark 7 2 newdef ISGW2HadronicVectorCurrent:AntiQuark 7 -3 newdef ISGW2HadronicVectorCurrent:Quark 8 2 newdef ISGW2HadronicVectorCurrent:AntiQuark 8 -1 newdef ISGW2HadronicVectorCurrent:Quark 9 1 newdef ISGW2HadronicVectorCurrent:AntiQuark 9 -1 newdef ISGW2HadronicVectorCurrent:Quark 10 2 newdef ISGW2HadronicVectorCurrent:AntiQuark 10 -2 newdef ISGW2HadronicVectorCurrent:Quark 11 4 newdef ISGW2HadronicVectorCurrent:AntiQuark 11 -1 newdef ISGW2HadronicVectorCurrent:Quark 12 4 newdef ISGW2HadronicVectorCurrent:AntiQuark 12 -2 newdef ISGW2HadronicVectorCurrent:Quark 13 4 newdef ISGW2HadronicVectorCurrent:AntiQuark 13 -3 newdef ISGW2HadronicVectorCurrent:Quark 14 4 newdef ISGW2HadronicVectorCurrent:AntiQuark 14 -4 newdef ISGW2HadronicVectorCurrent:Quark 15 4 newdef ISGW2HadronicVectorCurrent:AntiQuark 15 -4 newdef ISGW2HadronicVectorCurrent:Quark 16 4 newdef ISGW2HadronicVectorCurrent:AntiQuark 16 -3 insert ISGW2Hadronic:Currents 1 ISGW2HadronicVectorCurrent create Herwig::ISGW2FormFactor ISGW2HadronicFormFactor newdef ISGW2HadronicFormFactor:DownMass 0.33 newdef ISGW2HadronicFormFactor:UpMass 0.33 newdef ISGW2HadronicFormFactor:StrangeMass 0.55 newdef ISGW2HadronicFormFactor:CharmMass 1.82 newdef ISGW2HadronicFormFactor:BottomMass 5.2 newdef ISGW2HadronicFormFactor:Beta1S0ud 0.41 newdef ISGW2HadronicFormFactor:Beta1S0us 0.44 newdef ISGW2HadronicFormFactor:Beta1S0ss 0.53 newdef ISGW2HadronicFormFactor:Beta1S0cu 0.45 newdef ISGW2HadronicFormFactor:Beta1S0cs 0.56 newdef ISGW2HadronicFormFactor:Beta1S0ub 0.43 newdef ISGW2HadronicFormFactor:Beta1S0sb 0.54 newdef ISGW2HadronicFormFactor:Beta1S0cc 0.88 newdef ISGW2HadronicFormFactor:Beta1S0bc 0.92 newdef ISGW2HadronicFormFactor:Beta1Pud 0.28 newdef ISGW2HadronicFormFactor:Beta1Pus 0.3 newdef ISGW2HadronicFormFactor:Beta1Pss 0.33 newdef ISGW2HadronicFormFactor:Beta1Pcu 0.33 newdef ISGW2HadronicFormFactor:Beta1Pcs 0.38 newdef ISGW2HadronicFormFactor:Beta1Pub 0.35 newdef ISGW2HadronicFormFactor:Beta1Psb 0.41 newdef ISGW2HadronicFormFactor:Beta1Pcc 0.52 newdef ISGW2HadronicFormFactor:Beta1Pbc 0.6 newdef ISGW2HadronicFormFactor:Beta3S1ud 0.3 newdef ISGW2HadronicFormFactor:Beta3S1us 0.33 newdef ISGW2HadronicFormFactor:Beta3S1ss 0.37 newdef ISGW2HadronicFormFactor:Beta3S1cu 0.38 newdef ISGW2HadronicFormFactor:Beta3S1cs 0.44 newdef ISGW2HadronicFormFactor:Beta3S1ub 0.4 newdef ISGW2HadronicFormFactor:Beta3S1sb 0.49 newdef ISGW2HadronicFormFactor:Beta3S1cc 0.62 newdef ISGW2HadronicFormFactor:Beta3S1bc 0.75 newdef ISGW2HadronicFormFactor:AlphaCutOff 0.6 newdef ISGW2HadronicFormFactor:CfDrho 0.889 newdef ISGW2HadronicFormFactor:CfDKstar 0.928 newdef ISGW2HadronicFormFactor:CfDsKstar 0.873 newdef ISGW2HadronicFormFactor:CfDsphi 0.911 newdef ISGW2HadronicFormFactor:CfBrho 0.905 newdef ISGW2HadronicFormFactor:CfBDstar 0.989 newdef ISGW2HadronicFormFactor:CfBsKstar 0.892 newdef ISGW2HadronicFormFactor:CfBsDstar 0.984 newdef ISGW2HadronicFormFactor:CfBcDstar 0.868 newdef ISGW2HadronicFormFactor:CfBcpsi 0.967 newdef ISGW2HadronicFormFactor:CfBcBsstar 1 newdef ISGW2HadronicFormFactor:CfBcBstar 1 newdef ISGW2HadronicFormFactor:ThetaEtaEtaPrime -0.349066 newdef ISGW2HadronicFormFactor:Incoming 0 -541 newdef ISGW2HadronicFormFactor:Outgoing 0 -411 newdef ISGW2HadronicFormFactor:Spin 0 0 newdef ISGW2HadronicFormFactor:Spectator 0 -4 newdef ISGW2HadronicFormFactor:InQuark 0 5 newdef ISGW2HadronicFormFactor:OutQuark 0 1 newdef ISGW2HadronicFormFactor:Incoming 1 -541 newdef ISGW2HadronicFormFactor:Outgoing 1 -413 newdef ISGW2HadronicFormFactor:Spin 1 1 newdef ISGW2HadronicFormFactor:Spectator 1 -4 newdef ISGW2HadronicFormFactor:InQuark 1 5 newdef ISGW2HadronicFormFactor:OutQuark 1 1 newdef ISGW2HadronicFormFactor:Incoming 2 -541 newdef ISGW2HadronicFormFactor:Outgoing 2 -415 newdef ISGW2HadronicFormFactor:Spin 2 2 newdef ISGW2HadronicFormFactor:Spectator 2 -4 newdef ISGW2HadronicFormFactor:InQuark 2 5 newdef ISGW2HadronicFormFactor:OutQuark 2 1 newdef ISGW2HadronicFormFactor:Incoming 3 -541 newdef ISGW2HadronicFormFactor:Outgoing 3 10413 newdef ISGW2HadronicFormFactor:Spin 3 1 newdef ISGW2HadronicFormFactor:Spectator 3 -2 newdef ISGW2HadronicFormFactor:InQuark 3 5 newdef ISGW2HadronicFormFactor:OutQuark 3 1 newdef ISGW2HadronicFormFactor:Incoming 4 -541 newdef ISGW2HadronicFormFactor:Outgoing 4 -20413 newdef ISGW2HadronicFormFactor:Spin 4 1 newdef ISGW2HadronicFormFactor:Spectator 4 -4 newdef ISGW2HadronicFormFactor:InQuark 4 5 newdef ISGW2HadronicFormFactor:OutQuark 4 1 newdef ISGW2HadronicFormFactor:Incoming 5 -541 newdef ISGW2HadronicFormFactor:Outgoing 5 10411 newdef ISGW2HadronicFormFactor:Spin 5 0 newdef ISGW2HadronicFormFactor:Spectator 5 4 newdef ISGW2HadronicFormFactor:InQuark 5 5 newdef ISGW2HadronicFormFactor:OutQuark 5 1 newdef ISGW2HadronicFormFactor:Incoming 6 -541 newdef ISGW2HadronicFormFactor:Outgoing 6 -421 newdef ISGW2HadronicFormFactor:Spin 6 0 newdef ISGW2HadronicFormFactor:Spectator 6 -4 newdef ISGW2HadronicFormFactor:InQuark 6 5 newdef ISGW2HadronicFormFactor:OutQuark 6 2 newdef ISGW2HadronicFormFactor:Incoming 7 -541 newdef ISGW2HadronicFormFactor:Outgoing 7 -423 newdef ISGW2HadronicFormFactor:Spin 7 1 newdef ISGW2HadronicFormFactor:Spectator 7 -4 newdef ISGW2HadronicFormFactor:InQuark 7 5 newdef ISGW2HadronicFormFactor:OutQuark 7 2 newdef ISGW2HadronicFormFactor:Incoming 8 -541 newdef ISGW2HadronicFormFactor:Outgoing 8 -425 newdef ISGW2HadronicFormFactor:Spin 8 2 newdef ISGW2HadronicFormFactor:Spectator 8 -4 newdef ISGW2HadronicFormFactor:InQuark 8 5 newdef ISGW2HadronicFormFactor:OutQuark 8 2 newdef ISGW2HadronicFormFactor:Incoming 9 -541 newdef ISGW2HadronicFormFactor:Outgoing 9 -10423 newdef ISGW2HadronicFormFactor:Spin 9 1 newdef ISGW2HadronicFormFactor:Spectator 9 -4 newdef ISGW2HadronicFormFactor:InQuark 9 5 newdef ISGW2HadronicFormFactor:OutQuark 9 2 newdef ISGW2HadronicFormFactor:Incoming 10 -541 newdef ISGW2HadronicFormFactor:Outgoing 10 -20423 newdef ISGW2HadronicFormFactor:Spin 10 1 newdef ISGW2HadronicFormFactor:Spectator 10 -4 newdef ISGW2HadronicFormFactor:InQuark 10 5 newdef ISGW2HadronicFormFactor:OutQuark 10 2 newdef ISGW2HadronicFormFactor:Incoming 11 -541 newdef ISGW2HadronicFormFactor:Outgoing 11 -10421 newdef ISGW2HadronicFormFactor:Spin 11 0 newdef ISGW2HadronicFormFactor:Spectator 11 -4 newdef ISGW2HadronicFormFactor:InQuark 11 5 newdef ISGW2HadronicFormFactor:OutQuark 11 2 newdef ISGW2HadronicFormFactor:Incoming 12 -541 newdef ISGW2HadronicFormFactor:Outgoing 12 -431 newdef ISGW2HadronicFormFactor:Spin 12 0 newdef ISGW2HadronicFormFactor:Spectator 12 -4 newdef ISGW2HadronicFormFactor:InQuark 12 5 newdef ISGW2HadronicFormFactor:OutQuark 12 3 newdef ISGW2HadronicFormFactor:Incoming 13 -541 newdef ISGW2HadronicFormFactor:Outgoing 13 -433 newdef ISGW2HadronicFormFactor:Spin 13 1 newdef ISGW2HadronicFormFactor:Spectator 13 -4 newdef ISGW2HadronicFormFactor:InQuark 13 5 newdef ISGW2HadronicFormFactor:OutQuark 13 3 newdef ISGW2HadronicFormFactor:Incoming 14 -541 newdef ISGW2HadronicFormFactor:Outgoing 14 -435 newdef ISGW2HadronicFormFactor:Spin 14 2 newdef ISGW2HadronicFormFactor:Spectator 14 -4 newdef ISGW2HadronicFormFactor:InQuark 14 5 newdef ISGW2HadronicFormFactor:OutQuark 14 3 newdef ISGW2HadronicFormFactor:Incoming 15 -541 newdef ISGW2HadronicFormFactor:Outgoing 15 -10433 newdef ISGW2HadronicFormFactor:Spin 15 1 newdef ISGW2HadronicFormFactor:Spectator 15 -4 newdef ISGW2HadronicFormFactor:InQuark 15 5 newdef ISGW2HadronicFormFactor:OutQuark 15 3 newdef ISGW2HadronicFormFactor:Incoming 16 -541 newdef ISGW2HadronicFormFactor:Outgoing 16 -20433 newdef ISGW2HadronicFormFactor:Spin 16 1 newdef ISGW2HadronicFormFactor:Spectator 16 -4 newdef ISGW2HadronicFormFactor:InQuark 16 5 newdef ISGW2HadronicFormFactor:OutQuark 16 3 newdef ISGW2HadronicFormFactor:Incoming 17 -541 newdef ISGW2HadronicFormFactor:Outgoing 17 -10431 newdef ISGW2HadronicFormFactor:Spin 17 0 newdef ISGW2HadronicFormFactor:Spectator 17 4 newdef ISGW2HadronicFormFactor:InQuark 17 5 newdef ISGW2HadronicFormFactor:OutQuark 17 3 newdef ISGW2HadronicFormFactor:Incoming 18 -541 newdef ISGW2HadronicFormFactor:Outgoing 18 441 newdef ISGW2HadronicFormFactor:Spin 18 0 newdef ISGW2HadronicFormFactor:Spectator 18 -4 newdef ISGW2HadronicFormFactor:InQuark 18 5 newdef ISGW2HadronicFormFactor:OutQuark 18 4 newdef ISGW2HadronicFormFactor:Incoming 19 -541 newdef ISGW2HadronicFormFactor:Outgoing 19 443 newdef ISGW2HadronicFormFactor:Spin 19 1 newdef ISGW2HadronicFormFactor:Spectator 19 -4 newdef ISGW2HadronicFormFactor:InQuark 19 5 newdef ISGW2HadronicFormFactor:OutQuark 19 4 newdef ISGW2HadronicFormFactor:Incoming 20 -541 newdef ISGW2HadronicFormFactor:Outgoing 20 445 newdef ISGW2HadronicFormFactor:Spin 20 2 newdef ISGW2HadronicFormFactor:Spectator 20 -4 newdef ISGW2HadronicFormFactor:InQuark 20 5 newdef ISGW2HadronicFormFactor:OutQuark 20 4 newdef ISGW2HadronicFormFactor:Incoming 21 -541 newdef ISGW2HadronicFormFactor:Outgoing 21 10443 newdef ISGW2HadronicFormFactor:Spin 21 1 newdef ISGW2HadronicFormFactor:Spectator 21 -4 newdef ISGW2HadronicFormFactor:InQuark 21 5 newdef ISGW2HadronicFormFactor:OutQuark 21 4 newdef ISGW2HadronicFormFactor:Incoming 22 -541 newdef ISGW2HadronicFormFactor:Outgoing 22 20443 newdef ISGW2HadronicFormFactor:Spin 22 1 newdef ISGW2HadronicFormFactor:Spectator 22 -4 newdef ISGW2HadronicFormFactor:InQuark 22 5 newdef ISGW2HadronicFormFactor:OutQuark 22 4 newdef ISGW2HadronicFormFactor:Incoming 23 -541 newdef ISGW2HadronicFormFactor:Outgoing 23 10441 newdef ISGW2HadronicFormFactor:Spin 23 0 newdef ISGW2HadronicFormFactor:Spectator 23 4 newdef ISGW2HadronicFormFactor:InQuark 23 5 newdef ISGW2HadronicFormFactor:OutQuark 23 4 newdef ISGW2HadronicFormFactor:Incoming 24 541 newdef ISGW2HadronicFormFactor:Outgoing 24 511 newdef ISGW2HadronicFormFactor:Spin 24 0 newdef ISGW2HadronicFormFactor:Spectator 24 5 newdef ISGW2HadronicFormFactor:InQuark 24 -4 newdef ISGW2HadronicFormFactor:OutQuark 24 -1 newdef ISGW2HadronicFormFactor:Incoming 25 541 newdef ISGW2HadronicFormFactor:Outgoing 25 513 newdef ISGW2HadronicFormFactor:Spin 25 1 newdef ISGW2HadronicFormFactor:Spectator 25 5 newdef ISGW2HadronicFormFactor:InQuark 25 -4 newdef ISGW2HadronicFormFactor:OutQuark 25 -1 newdef ISGW2HadronicFormFactor:Incoming 26 541 newdef ISGW2HadronicFormFactor:Outgoing 26 515 newdef ISGW2HadronicFormFactor:Spin 26 2 newdef ISGW2HadronicFormFactor:Spectator 26 5 newdef ISGW2HadronicFormFactor:InQuark 26 -4 newdef ISGW2HadronicFormFactor:OutQuark 26 -1 newdef ISGW2HadronicFormFactor:Incoming 27 541 newdef ISGW2HadronicFormFactor:Outgoing 27 10513 newdef ISGW2HadronicFormFactor:Spin 27 1 newdef ISGW2HadronicFormFactor:Spectator 27 5 newdef ISGW2HadronicFormFactor:InQuark 27 -4 newdef ISGW2HadronicFormFactor:OutQuark 27 -1 newdef ISGW2HadronicFormFactor:Incoming 28 541 newdef ISGW2HadronicFormFactor:Outgoing 28 20513 newdef ISGW2HadronicFormFactor:Spin 28 1 newdef ISGW2HadronicFormFactor:Spectator 28 5 newdef ISGW2HadronicFormFactor:InQuark 28 -4 newdef ISGW2HadronicFormFactor:OutQuark 28 -1 newdef ISGW2HadronicFormFactor:Incoming 29 541 newdef ISGW2HadronicFormFactor:Outgoing 29 10511 newdef ISGW2HadronicFormFactor:Spin 29 0 newdef ISGW2HadronicFormFactor:Spectator 29 5 newdef ISGW2HadronicFormFactor:InQuark 29 -4 newdef ISGW2HadronicFormFactor:OutQuark 29 -1 newdef ISGW2HadronicFormFactor:Incoming 30 541 newdef ISGW2HadronicFormFactor:Outgoing 30 521 newdef ISGW2HadronicFormFactor:Spin 30 0 newdef ISGW2HadronicFormFactor:Spectator 30 5 newdef ISGW2HadronicFormFactor:InQuark 30 -4 newdef ISGW2HadronicFormFactor:OutQuark 30 -2 newdef ISGW2HadronicFormFactor:Incoming 31 541 newdef ISGW2HadronicFormFactor:Outgoing 31 523 newdef ISGW2HadronicFormFactor:Spin 31 1 newdef ISGW2HadronicFormFactor:Spectator 31 5 newdef ISGW2HadronicFormFactor:InQuark 31 -4 newdef ISGW2HadronicFormFactor:OutQuark 31 -2 newdef ISGW2HadronicFormFactor:Incoming 32 541 newdef ISGW2HadronicFormFactor:Outgoing 32 525 newdef ISGW2HadronicFormFactor:Spin 32 2 newdef ISGW2HadronicFormFactor:Spectator 32 5 newdef ISGW2HadronicFormFactor:InQuark 32 -4 newdef ISGW2HadronicFormFactor:OutQuark 32 -2 newdef ISGW2HadronicFormFactor:Incoming 33 541 newdef ISGW2HadronicFormFactor:Outgoing 33 10523 newdef ISGW2HadronicFormFactor:Spin 33 1 newdef ISGW2HadronicFormFactor:Spectator 33 5 newdef ISGW2HadronicFormFactor:InQuark 33 -4 newdef ISGW2HadronicFormFactor:OutQuark 33 -2 newdef ISGW2HadronicFormFactor:Incoming 34 541 newdef ISGW2HadronicFormFactor:Outgoing 34 20523 newdef ISGW2HadronicFormFactor:Spin 34 1 newdef ISGW2HadronicFormFactor:Spectator 34 5 newdef ISGW2HadronicFormFactor:InQuark 34 -4 newdef ISGW2HadronicFormFactor:OutQuark 34 -2 newdef ISGW2HadronicFormFactor:Incoming 35 541 newdef ISGW2HadronicFormFactor:Outgoing 35 10521 newdef ISGW2HadronicFormFactor:Spin 35 0 newdef ISGW2HadronicFormFactor:Spectator 35 5 newdef ISGW2HadronicFormFactor:InQuark 35 -4 newdef ISGW2HadronicFormFactor:OutQuark 35 -2 newdef ISGW2HadronicFormFactor:Incoming 36 541 newdef ISGW2HadronicFormFactor:Outgoing 36 531 newdef ISGW2HadronicFormFactor:Spin 36 0 newdef ISGW2HadronicFormFactor:Spectator 36 5 newdef ISGW2HadronicFormFactor:InQuark 36 -4 newdef ISGW2HadronicFormFactor:OutQuark 36 -3 newdef ISGW2HadronicFormFactor:Incoming 37 541 newdef ISGW2HadronicFormFactor:Outgoing 37 533 newdef ISGW2HadronicFormFactor:Spin 37 1 newdef ISGW2HadronicFormFactor:Spectator 37 5 newdef ISGW2HadronicFormFactor:InQuark 37 -4 newdef ISGW2HadronicFormFactor:OutQuark 37 -3 newdef ISGW2HadronicFormFactor:Incoming 38 541 newdef ISGW2HadronicFormFactor:Outgoing 38 535 newdef ISGW2HadronicFormFactor:Spin 38 2 newdef ISGW2HadronicFormFactor:Spectator 38 5 newdef ISGW2HadronicFormFactor:InQuark 38 -4 newdef ISGW2HadronicFormFactor:OutQuark 38 -3 newdef ISGW2HadronicFormFactor:Incoming 39 541 newdef ISGW2HadronicFormFactor:Outgoing 39 10533 newdef ISGW2HadronicFormFactor:Spin 39 1 newdef ISGW2HadronicFormFactor:Spectator 39 5 newdef ISGW2HadronicFormFactor:InQuark 39 -4 newdef ISGW2HadronicFormFactor:OutQuark 39 -3 newdef ISGW2HadronicFormFactor:Incoming 40 541 newdef ISGW2HadronicFormFactor:Outgoing 40 20533 newdef ISGW2HadronicFormFactor:Spin 40 1 newdef ISGW2HadronicFormFactor:Spectator 40 5 newdef ISGW2HadronicFormFactor:InQuark 40 -4 newdef ISGW2HadronicFormFactor:OutQuark 40 -3 newdef ISGW2HadronicFormFactor:Incoming 41 541 newdef ISGW2HadronicFormFactor:Outgoing 41 10531 newdef ISGW2HadronicFormFactor:Spin 41 0 newdef ISGW2HadronicFormFactor:Spectator 41 5 newdef ISGW2HadronicFormFactor:InQuark 41 -4 newdef ISGW2HadronicFormFactor:OutQuark 41 -3 newdef ISGW2HadronicFormFactor:Incoming 42 -531 newdef ISGW2HadronicFormFactor:Outgoing 42 311 newdef ISGW2HadronicFormFactor:Spin 42 0 newdef ISGW2HadronicFormFactor:Spectator 42 3 newdef ISGW2HadronicFormFactor:InQuark 42 -5 newdef ISGW2HadronicFormFactor:OutQuark 42 -1 newdef ISGW2HadronicFormFactor:Incoming 43 -531 newdef ISGW2HadronicFormFactor:Outgoing 43 313 newdef ISGW2HadronicFormFactor:Spin 43 1 newdef ISGW2HadronicFormFactor:Spectator 43 3 newdef ISGW2HadronicFormFactor:InQuark 43 -5 newdef ISGW2HadronicFormFactor:OutQuark 43 -1 newdef ISGW2HadronicFormFactor:Incoming 44 -531 newdef ISGW2HadronicFormFactor:Outgoing 44 315 newdef ISGW2HadronicFormFactor:Spin 44 2 newdef ISGW2HadronicFormFactor:Spectator 44 3 newdef ISGW2HadronicFormFactor:InQuark 44 -5 newdef ISGW2HadronicFormFactor:OutQuark 44 -1 newdef ISGW2HadronicFormFactor:Incoming 45 -531 newdef ISGW2HadronicFormFactor:Outgoing 45 10313 newdef ISGW2HadronicFormFactor:Spin 45 1 newdef ISGW2HadronicFormFactor:Spectator 45 3 newdef ISGW2HadronicFormFactor:InQuark 45 -5 newdef ISGW2HadronicFormFactor:OutQuark 45 -1 newdef ISGW2HadronicFormFactor:Incoming 46 -531 newdef ISGW2HadronicFormFactor:Outgoing 46 20313 newdef ISGW2HadronicFormFactor:Spin 46 1 newdef ISGW2HadronicFormFactor:Spectator 46 3 newdef ISGW2HadronicFormFactor:InQuark 46 -5 newdef ISGW2HadronicFormFactor:OutQuark 46 -1 newdef ISGW2HadronicFormFactor:Incoming 47 -531 newdef ISGW2HadronicFormFactor:Outgoing 47 10311 newdef ISGW2HadronicFormFactor:Spin 47 0 newdef ISGW2HadronicFormFactor:Spectator 47 3 newdef ISGW2HadronicFormFactor:InQuark 47 -5 newdef ISGW2HadronicFormFactor:OutQuark 47 -1 newdef ISGW2HadronicFormFactor:Incoming 48 -531 newdef ISGW2HadronicFormFactor:Outgoing 48 321 newdef ISGW2HadronicFormFactor:Spin 48 0 newdef ISGW2HadronicFormFactor:Spectator 48 3 newdef ISGW2HadronicFormFactor:InQuark 48 -5 newdef ISGW2HadronicFormFactor:OutQuark 48 -2 newdef ISGW2HadronicFormFactor:Incoming 49 -531 newdef ISGW2HadronicFormFactor:Outgoing 49 323 newdef ISGW2HadronicFormFactor:Spin 49 1 newdef ISGW2HadronicFormFactor:Spectator 49 3 newdef ISGW2HadronicFormFactor:InQuark 49 -5 newdef ISGW2HadronicFormFactor:OutQuark 49 -2 newdef ISGW2HadronicFormFactor:Incoming 50 -531 newdef ISGW2HadronicFormFactor:Outgoing 50 325 newdef ISGW2HadronicFormFactor:Spin 50 2 newdef ISGW2HadronicFormFactor:Spectator 50 3 newdef ISGW2HadronicFormFactor:InQuark 50 -5 newdef ISGW2HadronicFormFactor:OutQuark 50 -2 newdef ISGW2HadronicFormFactor:Incoming 51 -531 newdef ISGW2HadronicFormFactor:Outgoing 51 10323 newdef ISGW2HadronicFormFactor:Spin 51 1 newdef ISGW2HadronicFormFactor:Spectator 51 3 newdef ISGW2HadronicFormFactor:InQuark 51 -5 newdef ISGW2HadronicFormFactor:OutQuark 51 -2 newdef ISGW2HadronicFormFactor:Incoming 52 -531 newdef ISGW2HadronicFormFactor:Outgoing 52 20323 newdef ISGW2HadronicFormFactor:Spin 52 1 newdef ISGW2HadronicFormFactor:Spectator 52 3 newdef ISGW2HadronicFormFactor:InQuark 52 -5 newdef ISGW2HadronicFormFactor:OutQuark 52 -2 newdef ISGW2HadronicFormFactor:Incoming 53 -531 newdef ISGW2HadronicFormFactor:Outgoing 53 10321 newdef ISGW2HadronicFormFactor:Spin 53 0 newdef ISGW2HadronicFormFactor:Spectator 53 3 newdef ISGW2HadronicFormFactor:InQuark 53 -5 newdef ISGW2HadronicFormFactor:OutQuark 53 -2 newdef ISGW2HadronicFormFactor:Incoming 54 -531 newdef ISGW2HadronicFormFactor:Outgoing 54 221 newdef ISGW2HadronicFormFactor:Spin 54 0 newdef ISGW2HadronicFormFactor:Spectator 54 3 newdef ISGW2HadronicFormFactor:InQuark 54 -5 newdef ISGW2HadronicFormFactor:OutQuark 54 -3 newdef ISGW2HadronicFormFactor:Incoming 55 -531 newdef ISGW2HadronicFormFactor:Outgoing 55 331 newdef ISGW2HadronicFormFactor:Spin 55 0 newdef ISGW2HadronicFormFactor:Spectator 55 3 newdef ISGW2HadronicFormFactor:InQuark 55 -5 newdef ISGW2HadronicFormFactor:OutQuark 55 -3 newdef ISGW2HadronicFormFactor:Incoming 56 -531 newdef ISGW2HadronicFormFactor:Outgoing 56 333 newdef ISGW2HadronicFormFactor:Spin 56 1 newdef ISGW2HadronicFormFactor:Spectator 56 3 newdef ISGW2HadronicFormFactor:InQuark 56 -5 newdef ISGW2HadronicFormFactor:OutQuark 56 -3 newdef ISGW2HadronicFormFactor:Incoming 57 -531 newdef ISGW2HadronicFormFactor:Outgoing 57 335 newdef ISGW2HadronicFormFactor:Spin 57 2 newdef ISGW2HadronicFormFactor:Spectator 57 3 newdef ISGW2HadronicFormFactor:InQuark 57 -5 newdef ISGW2HadronicFormFactor:OutQuark 57 -3 newdef ISGW2HadronicFormFactor:Incoming 58 -531 newdef ISGW2HadronicFormFactor:Outgoing 58 10333 newdef ISGW2HadronicFormFactor:Spin 58 1 newdef ISGW2HadronicFormFactor:Spectator 58 3 newdef ISGW2HadronicFormFactor:InQuark 58 -5 newdef ISGW2HadronicFormFactor:OutQuark 58 -3 newdef ISGW2HadronicFormFactor:Incoming 59 -531 newdef ISGW2HadronicFormFactor:Outgoing 59 20333 newdef ISGW2HadronicFormFactor:Spin 59 1 newdef ISGW2HadronicFormFactor:Spectator 59 3 newdef ISGW2HadronicFormFactor:InQuark 59 -5 newdef ISGW2HadronicFormFactor:OutQuark 59 -3 newdef ISGW2HadronicFormFactor:Incoming 60 -531 newdef ISGW2HadronicFormFactor:Outgoing 60 10331 newdef ISGW2HadronicFormFactor:Spin 60 0 newdef ISGW2HadronicFormFactor:Spectator 60 3 newdef ISGW2HadronicFormFactor:InQuark 60 -5 newdef ISGW2HadronicFormFactor:OutQuark 60 -3 newdef ISGW2HadronicFormFactor:Incoming 61 -531 newdef ISGW2HadronicFormFactor:Outgoing 61 431 newdef ISGW2HadronicFormFactor:Spin 61 0 newdef ISGW2HadronicFormFactor:Spectator 61 3 newdef ISGW2HadronicFormFactor:InQuark 61 -5 newdef ISGW2HadronicFormFactor:OutQuark 61 -4 newdef ISGW2HadronicFormFactor:Incoming 62 -531 newdef ISGW2HadronicFormFactor:Outgoing 62 433 newdef ISGW2HadronicFormFactor:Spin 62 1 newdef ISGW2HadronicFormFactor:Spectator 62 3 newdef ISGW2HadronicFormFactor:InQuark 62 -5 newdef ISGW2HadronicFormFactor:OutQuark 62 -4 newdef ISGW2HadronicFormFactor:Incoming 63 -531 newdef ISGW2HadronicFormFactor:Outgoing 63 435 newdef ISGW2HadronicFormFactor:Spin 63 2 newdef ISGW2HadronicFormFactor:Spectator 63 3 newdef ISGW2HadronicFormFactor:InQuark 63 -5 newdef ISGW2HadronicFormFactor:OutQuark 63 -4 newdef ISGW2HadronicFormFactor:Incoming 64 -531 newdef ISGW2HadronicFormFactor:Outgoing 64 10433 newdef ISGW2HadronicFormFactor:Spin 64 1 newdef ISGW2HadronicFormFactor:Spectator 64 3 newdef ISGW2HadronicFormFactor:InQuark 64 -5 newdef ISGW2HadronicFormFactor:OutQuark 64 -4 newdef ISGW2HadronicFormFactor:Incoming 65 -531 newdef ISGW2HadronicFormFactor:Outgoing 65 20433 newdef ISGW2HadronicFormFactor:Spin 65 1 newdef ISGW2HadronicFormFactor:Spectator 65 3 newdef ISGW2HadronicFormFactor:InQuark 65 -5 newdef ISGW2HadronicFormFactor:OutQuark 65 -4 newdef ISGW2HadronicFormFactor:Incoming 66 -531 newdef ISGW2HadronicFormFactor:Outgoing 66 10431 newdef ISGW2HadronicFormFactor:Spin 66 0 newdef ISGW2HadronicFormFactor:Spectator 66 3 newdef ISGW2HadronicFormFactor:InQuark 66 -5 newdef ISGW2HadronicFormFactor:OutQuark 66 -4 newdef ISGW2HadronicFormFactor:Incoming 67 -521 newdef ISGW2HadronicFormFactor:Outgoing 67 -211 newdef ISGW2HadronicFormFactor:Spin 67 0 newdef ISGW2HadronicFormFactor:Spectator 67 -2 newdef ISGW2HadronicFormFactor:InQuark 67 5 newdef ISGW2HadronicFormFactor:OutQuark 67 1 newdef ISGW2HadronicFormFactor:Incoming 68 -521 newdef ISGW2HadronicFormFactor:Outgoing 68 -213 newdef ISGW2HadronicFormFactor:Spin 68 1 newdef ISGW2HadronicFormFactor:Spectator 68 -2 newdef ISGW2HadronicFormFactor:InQuark 68 5 newdef ISGW2HadronicFormFactor:OutQuark 68 1 newdef ISGW2HadronicFormFactor:Incoming 69 -521 newdef ISGW2HadronicFormFactor:Outgoing 69 -215 newdef ISGW2HadronicFormFactor:Spin 69 2 newdef ISGW2HadronicFormFactor:Spectator 69 -2 newdef ISGW2HadronicFormFactor:InQuark 69 5 newdef ISGW2HadronicFormFactor:OutQuark 69 1 newdef ISGW2HadronicFormFactor:Incoming 70 -521 newdef ISGW2HadronicFormFactor:Outgoing 70 -10213 newdef ISGW2HadronicFormFactor:Spin 70 1 newdef ISGW2HadronicFormFactor:Spectator 70 -2 newdef ISGW2HadronicFormFactor:InQuark 70 5 newdef ISGW2HadronicFormFactor:OutQuark 70 1 newdef ISGW2HadronicFormFactor:Incoming 71 -521 newdef ISGW2HadronicFormFactor:Outgoing 71 -20213 newdef ISGW2HadronicFormFactor:Spin 71 1 newdef ISGW2HadronicFormFactor:Spectator 71 -2 newdef ISGW2HadronicFormFactor:InQuark 71 5 newdef ISGW2HadronicFormFactor:OutQuark 71 1 newdef ISGW2HadronicFormFactor:Incoming 72 -521 newdef ISGW2HadronicFormFactor:Outgoing 72 -10211 newdef ISGW2HadronicFormFactor:Spin 72 0 newdef ISGW2HadronicFormFactor:Spectator 72 -2 newdef ISGW2HadronicFormFactor:InQuark 72 5 newdef ISGW2HadronicFormFactor:OutQuark 72 1 newdef ISGW2HadronicFormFactor:Incoming 73 -521 newdef ISGW2HadronicFormFactor:Outgoing 73 221 newdef ISGW2HadronicFormFactor:Spin 73 0 newdef ISGW2HadronicFormFactor:Spectator 73 -2 newdef ISGW2HadronicFormFactor:InQuark 73 5 newdef ISGW2HadronicFormFactor:OutQuark 73 2 newdef ISGW2HadronicFormFactor:Incoming 74 -521 newdef ISGW2HadronicFormFactor:Outgoing 74 331 newdef ISGW2HadronicFormFactor:Spin 74 0 newdef ISGW2HadronicFormFactor:Spectator 74 -2 newdef ISGW2HadronicFormFactor:InQuark 74 5 newdef ISGW2HadronicFormFactor:OutQuark 74 2 newdef ISGW2HadronicFormFactor:Incoming 75 -521 newdef ISGW2HadronicFormFactor:Outgoing 75 223 newdef ISGW2HadronicFormFactor:Spin 75 1 newdef ISGW2HadronicFormFactor:Spectator 75 -2 newdef ISGW2HadronicFormFactor:InQuark 75 5 newdef ISGW2HadronicFormFactor:OutQuark 75 2 newdef ISGW2HadronicFormFactor:Incoming 76 -521 newdef ISGW2HadronicFormFactor:Outgoing 76 225 newdef ISGW2HadronicFormFactor:Spin 76 2 newdef ISGW2HadronicFormFactor:Spectator 76 -2 newdef ISGW2HadronicFormFactor:InQuark 76 5 newdef ISGW2HadronicFormFactor:OutQuark 76 2 newdef ISGW2HadronicFormFactor:Incoming 77 -521 newdef ISGW2HadronicFormFactor:Outgoing 77 10223 newdef ISGW2HadronicFormFactor:Spin 77 1 newdef ISGW2HadronicFormFactor:Spectator 77 -2 newdef ISGW2HadronicFormFactor:InQuark 77 5 newdef ISGW2HadronicFormFactor:OutQuark 77 2 newdef ISGW2HadronicFormFactor:Incoming 78 -521 newdef ISGW2HadronicFormFactor:Outgoing 78 20223 newdef ISGW2HadronicFormFactor:Spin 78 1 newdef ISGW2HadronicFormFactor:Spectator 78 -2 newdef ISGW2HadronicFormFactor:InQuark 78 5 newdef ISGW2HadronicFormFactor:OutQuark 78 2 newdef ISGW2HadronicFormFactor:Incoming 79 -521 newdef ISGW2HadronicFormFactor:Outgoing 79 10221 newdef ISGW2HadronicFormFactor:Spin 79 0 newdef ISGW2HadronicFormFactor:Spectator 79 -2 newdef ISGW2HadronicFormFactor:InQuark 79 5 newdef ISGW2HadronicFormFactor:OutQuark 79 2 newdef ISGW2HadronicFormFactor:Incoming 80 -521 newdef ISGW2HadronicFormFactor:Outgoing 80 111 newdef ISGW2HadronicFormFactor:Spin 80 0 newdef ISGW2HadronicFormFactor:Spectator 80 -2 newdef ISGW2HadronicFormFactor:InQuark 80 5 newdef ISGW2HadronicFormFactor:OutQuark 80 2 newdef ISGW2HadronicFormFactor:Incoming 81 -521 newdef ISGW2HadronicFormFactor:Outgoing 81 113 newdef ISGW2HadronicFormFactor:Spin 81 1 newdef ISGW2HadronicFormFactor:Spectator 81 -2 newdef ISGW2HadronicFormFactor:InQuark 81 5 newdef ISGW2HadronicFormFactor:OutQuark 81 2 newdef ISGW2HadronicFormFactor:Incoming 82 -521 newdef ISGW2HadronicFormFactor:Outgoing 82 115 newdef ISGW2HadronicFormFactor:Spin 82 2 newdef ISGW2HadronicFormFactor:Spectator 82 -2 newdef ISGW2HadronicFormFactor:InQuark 82 5 newdef ISGW2HadronicFormFactor:OutQuark 82 2 newdef ISGW2HadronicFormFactor:Incoming 83 -521 newdef ISGW2HadronicFormFactor:Outgoing 83 10113 newdef ISGW2HadronicFormFactor:Spin 83 1 newdef ISGW2HadronicFormFactor:Spectator 83 -2 newdef ISGW2HadronicFormFactor:InQuark 83 5 newdef ISGW2HadronicFormFactor:OutQuark 83 2 newdef ISGW2HadronicFormFactor:Incoming 84 -521 newdef ISGW2HadronicFormFactor:Outgoing 84 20113 newdef ISGW2HadronicFormFactor:Spin 84 1 newdef ISGW2HadronicFormFactor:Spectator 84 -2 newdef ISGW2HadronicFormFactor:InQuark 84 5 newdef ISGW2HadronicFormFactor:OutQuark 84 2 newdef ISGW2HadronicFormFactor:Incoming 85 -521 newdef ISGW2HadronicFormFactor:Outgoing 85 10111 newdef ISGW2HadronicFormFactor:Spin 85 0 newdef ISGW2HadronicFormFactor:Spectator 85 -2 newdef ISGW2HadronicFormFactor:InQuark 85 5 newdef ISGW2HadronicFormFactor:OutQuark 85 2 newdef ISGW2HadronicFormFactor:Incoming 86 -521 newdef ISGW2HadronicFormFactor:Outgoing 86 -321 newdef ISGW2HadronicFormFactor:Spin 86 0 newdef ISGW2HadronicFormFactor:Spectator 86 -2 newdef ISGW2HadronicFormFactor:InQuark 86 5 newdef ISGW2HadronicFormFactor:OutQuark 86 3 newdef ISGW2HadronicFormFactor:Incoming 87 -521 newdef ISGW2HadronicFormFactor:Outgoing 87 -323 newdef ISGW2HadronicFormFactor:Spin 87 1 newdef ISGW2HadronicFormFactor:Spectator 87 -2 newdef ISGW2HadronicFormFactor:InQuark 87 5 newdef ISGW2HadronicFormFactor:OutQuark 87 3 newdef ISGW2HadronicFormFactor:Incoming 88 -521 newdef ISGW2HadronicFormFactor:Outgoing 88 -325 newdef ISGW2HadronicFormFactor:Spin 88 2 newdef ISGW2HadronicFormFactor:Spectator 88 -2 newdef ISGW2HadronicFormFactor:InQuark 88 5 newdef ISGW2HadronicFormFactor:OutQuark 88 3 newdef ISGW2HadronicFormFactor:Incoming 89 -521 newdef ISGW2HadronicFormFactor:Outgoing 89 -10323 newdef ISGW2HadronicFormFactor:Spin 89 1 newdef ISGW2HadronicFormFactor:Spectator 89 -2 newdef ISGW2HadronicFormFactor:InQuark 89 5 newdef ISGW2HadronicFormFactor:OutQuark 89 3 newdef ISGW2HadronicFormFactor:Incoming 90 -521 newdef ISGW2HadronicFormFactor:Outgoing 90 -20323 newdef ISGW2HadronicFormFactor:Spin 90 1 newdef ISGW2HadronicFormFactor:Spectator 90 -2 newdef ISGW2HadronicFormFactor:InQuark 90 5 newdef ISGW2HadronicFormFactor:OutQuark 90 3 newdef ISGW2HadronicFormFactor:Incoming 91 -521 newdef ISGW2HadronicFormFactor:Outgoing 91 -10321 newdef ISGW2HadronicFormFactor:Spin 91 0 newdef ISGW2HadronicFormFactor:Spectator 91 -2 newdef ISGW2HadronicFormFactor:InQuark 91 5 newdef ISGW2HadronicFormFactor:OutQuark 91 3 newdef ISGW2HadronicFormFactor:Incoming 92 -521 newdef ISGW2HadronicFormFactor:Outgoing 92 421 newdef ISGW2HadronicFormFactor:Spin 92 0 newdef ISGW2HadronicFormFactor:Spectator 92 -2 newdef ISGW2HadronicFormFactor:InQuark 92 5 newdef ISGW2HadronicFormFactor:OutQuark 92 4 newdef ISGW2HadronicFormFactor:Incoming 93 -521 newdef ISGW2HadronicFormFactor:Outgoing 93 423 newdef ISGW2HadronicFormFactor:Spin 93 1 newdef ISGW2HadronicFormFactor:Spectator 93 -2 newdef ISGW2HadronicFormFactor:InQuark 93 5 newdef ISGW2HadronicFormFactor:OutQuark 93 4 newdef ISGW2HadronicFormFactor:Incoming 94 -521 newdef ISGW2HadronicFormFactor:Outgoing 94 425 newdef ISGW2HadronicFormFactor:Spin 94 2 newdef ISGW2HadronicFormFactor:Spectator 94 -2 newdef ISGW2HadronicFormFactor:InQuark 94 5 newdef ISGW2HadronicFormFactor:OutQuark 94 4 newdef ISGW2HadronicFormFactor:Incoming 95 -521 newdef ISGW2HadronicFormFactor:Outgoing 95 10423 newdef ISGW2HadronicFormFactor:Spin 95 1 newdef ISGW2HadronicFormFactor:Spectator 95 -2 newdef ISGW2HadronicFormFactor:InQuark 95 5 newdef ISGW2HadronicFormFactor:OutQuark 95 4 newdef ISGW2HadronicFormFactor:Incoming 96 -521 newdef ISGW2HadronicFormFactor:Outgoing 96 20423 newdef ISGW2HadronicFormFactor:Spin 96 1 newdef ISGW2HadronicFormFactor:Spectator 96 -2 newdef ISGW2HadronicFormFactor:InQuark 96 5 newdef ISGW2HadronicFormFactor:OutQuark 96 4 newdef ISGW2HadronicFormFactor:Incoming 97 -521 newdef ISGW2HadronicFormFactor:Outgoing 97 10421 newdef ISGW2HadronicFormFactor:Spin 97 0 newdef ISGW2HadronicFormFactor:Spectator 97 -2 newdef ISGW2HadronicFormFactor:InQuark 97 5 newdef ISGW2HadronicFormFactor:OutQuark 97 4 newdef ISGW2HadronicFormFactor:Incoming 98 -511 newdef ISGW2HadronicFormFactor:Outgoing 98 221 newdef ISGW2HadronicFormFactor:Spin 98 0 newdef ISGW2HadronicFormFactor:Spectator 98 1 newdef ISGW2HadronicFormFactor:InQuark 98 -5 newdef ISGW2HadronicFormFactor:OutQuark 98 -1 newdef ISGW2HadronicFormFactor:Incoming 99 -511 newdef ISGW2HadronicFormFactor:Outgoing 99 331 newdef ISGW2HadronicFormFactor:Spin 99 0 newdef ISGW2HadronicFormFactor:Spectator 99 1 newdef ISGW2HadronicFormFactor:InQuark 99 -5 newdef ISGW2HadronicFormFactor:OutQuark 99 -1 newdef ISGW2HadronicFormFactor:Incoming 100 -511 newdef ISGW2HadronicFormFactor:Outgoing 100 223 newdef ISGW2HadronicFormFactor:Spin 100 1 newdef ISGW2HadronicFormFactor:Spectator 100 1 newdef ISGW2HadronicFormFactor:InQuark 100 -5 newdef ISGW2HadronicFormFactor:OutQuark 100 -1 newdef ISGW2HadronicFormFactor:Incoming 101 -511 newdef ISGW2HadronicFormFactor:Outgoing 101 225 newdef ISGW2HadronicFormFactor:Spin 101 2 newdef ISGW2HadronicFormFactor:Spectator 101 1 newdef ISGW2HadronicFormFactor:InQuark 101 -5 newdef ISGW2HadronicFormFactor:OutQuark 101 -1 newdef ISGW2HadronicFormFactor:Incoming 102 -511 newdef ISGW2HadronicFormFactor:Outgoing 102 10223 newdef ISGW2HadronicFormFactor:Spin 102 1 newdef ISGW2HadronicFormFactor:Spectator 102 1 newdef ISGW2HadronicFormFactor:InQuark 102 -5 newdef ISGW2HadronicFormFactor:OutQuark 102 -1 newdef ISGW2HadronicFormFactor:Incoming 103 -511 newdef ISGW2HadronicFormFactor:Outgoing 103 20223 newdef ISGW2HadronicFormFactor:Spin 103 1 newdef ISGW2HadronicFormFactor:Spectator 103 1 newdef ISGW2HadronicFormFactor:InQuark 103 -5 newdef ISGW2HadronicFormFactor:OutQuark 103 -1 newdef ISGW2HadronicFormFactor:Incoming 104 -511 newdef ISGW2HadronicFormFactor:Outgoing 104 10221 newdef ISGW2HadronicFormFactor:Spin 104 0 newdef ISGW2HadronicFormFactor:Spectator 104 1 newdef ISGW2HadronicFormFactor:InQuark 104 -5 newdef ISGW2HadronicFormFactor:OutQuark 104 -1 newdef ISGW2HadronicFormFactor:Incoming 105 -511 newdef ISGW2HadronicFormFactor:Outgoing 105 111 newdef ISGW2HadronicFormFactor:Spin 105 0 newdef ISGW2HadronicFormFactor:Spectator 105 1 newdef ISGW2HadronicFormFactor:InQuark 105 -5 newdef ISGW2HadronicFormFactor:OutQuark 105 -1 newdef ISGW2HadronicFormFactor:Incoming 106 -511 newdef ISGW2HadronicFormFactor:Outgoing 106 113 newdef ISGW2HadronicFormFactor:Spin 106 1 newdef ISGW2HadronicFormFactor:Spectator 106 1 newdef ISGW2HadronicFormFactor:InQuark 106 -5 newdef ISGW2HadronicFormFactor:OutQuark 106 -1 newdef ISGW2HadronicFormFactor:Incoming 107 -511 newdef ISGW2HadronicFormFactor:Outgoing 107 115 newdef ISGW2HadronicFormFactor:Spin 107 2 newdef ISGW2HadronicFormFactor:Spectator 107 1 newdef ISGW2HadronicFormFactor:InQuark 107 -5 newdef ISGW2HadronicFormFactor:OutQuark 107 -1 newdef ISGW2HadronicFormFactor:Incoming 108 -511 newdef ISGW2HadronicFormFactor:Outgoing 108 10113 newdef ISGW2HadronicFormFactor:Spin 108 1 newdef ISGW2HadronicFormFactor:Spectator 108 1 newdef ISGW2HadronicFormFactor:InQuark 108 -5 newdef ISGW2HadronicFormFactor:OutQuark 108 -1 newdef ISGW2HadronicFormFactor:Incoming 109 -511 newdef ISGW2HadronicFormFactor:Outgoing 109 20113 newdef ISGW2HadronicFormFactor:Spin 109 1 newdef ISGW2HadronicFormFactor:Spectator 109 1 newdef ISGW2HadronicFormFactor:InQuark 109 -5 newdef ISGW2HadronicFormFactor:OutQuark 109 -1 newdef ISGW2HadronicFormFactor:Incoming 110 -511 newdef ISGW2HadronicFormFactor:Outgoing 110 10111 newdef ISGW2HadronicFormFactor:Spin 110 0 newdef ISGW2HadronicFormFactor:Spectator 110 1 newdef ISGW2HadronicFormFactor:InQuark 110 -5 newdef ISGW2HadronicFormFactor:OutQuark 110 -1 newdef ISGW2HadronicFormFactor:Incoming 111 -511 newdef ISGW2HadronicFormFactor:Outgoing 111 211 newdef ISGW2HadronicFormFactor:Spin 111 0 newdef ISGW2HadronicFormFactor:Spectator 111 1 newdef ISGW2HadronicFormFactor:InQuark 111 -5 newdef ISGW2HadronicFormFactor:OutQuark 111 -2 newdef ISGW2HadronicFormFactor:Incoming 112 -511 newdef ISGW2HadronicFormFactor:Outgoing 112 213 newdef ISGW2HadronicFormFactor:Spin 112 1 newdef ISGW2HadronicFormFactor:Spectator 112 1 newdef ISGW2HadronicFormFactor:InQuark 112 -5 newdef ISGW2HadronicFormFactor:OutQuark 112 -2 newdef ISGW2HadronicFormFactor:Incoming 113 -511 newdef ISGW2HadronicFormFactor:Outgoing 113 215 newdef ISGW2HadronicFormFactor:Spin 113 2 newdef ISGW2HadronicFormFactor:Spectator 113 1 newdef ISGW2HadronicFormFactor:InQuark 113 -5 newdef ISGW2HadronicFormFactor:OutQuark 113 -2 newdef ISGW2HadronicFormFactor:Incoming 114 -511 newdef ISGW2HadronicFormFactor:Outgoing 114 10213 newdef ISGW2HadronicFormFactor:Spin 114 1 newdef ISGW2HadronicFormFactor:Spectator 114 1 newdef ISGW2HadronicFormFactor:InQuark 114 -5 newdef ISGW2HadronicFormFactor:OutQuark 114 -2 newdef ISGW2HadronicFormFactor:Incoming 115 -511 newdef ISGW2HadronicFormFactor:Outgoing 115 20213 newdef ISGW2HadronicFormFactor:Spin 115 1 newdef ISGW2HadronicFormFactor:Spectator 115 1 newdef ISGW2HadronicFormFactor:InQuark 115 -5 newdef ISGW2HadronicFormFactor:OutQuark 115 -2 newdef ISGW2HadronicFormFactor:Incoming 116 -511 newdef ISGW2HadronicFormFactor:Outgoing 116 10211 newdef ISGW2HadronicFormFactor:Spin 116 0 newdef ISGW2HadronicFormFactor:Spectator 116 1 newdef ISGW2HadronicFormFactor:InQuark 116 -5 newdef ISGW2HadronicFormFactor:OutQuark 116 -2 newdef ISGW2HadronicFormFactor:Incoming 117 -511 newdef ISGW2HadronicFormFactor:Outgoing 117 311 newdef ISGW2HadronicFormFactor:Spin 117 0 newdef ISGW2HadronicFormFactor:Spectator 117 1 newdef ISGW2HadronicFormFactor:InQuark 117 -5 newdef ISGW2HadronicFormFactor:OutQuark 117 -3 newdef ISGW2HadronicFormFactor:Incoming 118 -511 newdef ISGW2HadronicFormFactor:Outgoing 118 313 newdef ISGW2HadronicFormFactor:Spin 118 1 newdef ISGW2HadronicFormFactor:Spectator 118 1 newdef ISGW2HadronicFormFactor:InQuark 118 -5 newdef ISGW2HadronicFormFactor:OutQuark 118 -3 newdef ISGW2HadronicFormFactor:Incoming 119 -511 newdef ISGW2HadronicFormFactor:Outgoing 119 315 newdef ISGW2HadronicFormFactor:Spin 119 2 newdef ISGW2HadronicFormFactor:Spectator 119 1 newdef ISGW2HadronicFormFactor:InQuark 119 -5 newdef ISGW2HadronicFormFactor:OutQuark 119 -3 newdef ISGW2HadronicFormFactor:Incoming 120 -511 newdef ISGW2HadronicFormFactor:Outgoing 120 10313 newdef ISGW2HadronicFormFactor:Spin 120 1 newdef ISGW2HadronicFormFactor:Spectator 120 1 newdef ISGW2HadronicFormFactor:InQuark 120 -5 newdef ISGW2HadronicFormFactor:OutQuark 120 -3 newdef ISGW2HadronicFormFactor:Incoming 121 -511 newdef ISGW2HadronicFormFactor:Outgoing 121 20313 newdef ISGW2HadronicFormFactor:Spin 121 1 newdef ISGW2HadronicFormFactor:Spectator 121 1 newdef ISGW2HadronicFormFactor:InQuark 121 -5 newdef ISGW2HadronicFormFactor:OutQuark 121 -3 newdef ISGW2HadronicFormFactor:Incoming 122 -511 newdef ISGW2HadronicFormFactor:Outgoing 122 10311 newdef ISGW2HadronicFormFactor:Spin 122 0 newdef ISGW2HadronicFormFactor:Spectator 122 1 newdef ISGW2HadronicFormFactor:InQuark 122 -5 newdef ISGW2HadronicFormFactor:OutQuark 122 -3 newdef ISGW2HadronicFormFactor:Incoming 123 -511 newdef ISGW2HadronicFormFactor:Outgoing 123 411 newdef ISGW2HadronicFormFactor:Spin 123 0 newdef ISGW2HadronicFormFactor:Spectator 123 1 newdef ISGW2HadronicFormFactor:InQuark 123 -5 newdef ISGW2HadronicFormFactor:OutQuark 123 -4 newdef ISGW2HadronicFormFactor:Incoming 124 -511 newdef ISGW2HadronicFormFactor:Outgoing 124 413 newdef ISGW2HadronicFormFactor:Spin 124 1 newdef ISGW2HadronicFormFactor:Spectator 124 1 newdef ISGW2HadronicFormFactor:InQuark 124 -5 newdef ISGW2HadronicFormFactor:OutQuark 124 -4 newdef ISGW2HadronicFormFactor:Incoming 125 -511 newdef ISGW2HadronicFormFactor:Outgoing 125 415 newdef ISGW2HadronicFormFactor:Spin 125 2 newdef ISGW2HadronicFormFactor:Spectator 125 1 newdef ISGW2HadronicFormFactor:InQuark 125 -5 newdef ISGW2HadronicFormFactor:OutQuark 125 -4 newdef ISGW2HadronicFormFactor:Incoming 126 -511 newdef ISGW2HadronicFormFactor:Outgoing 126 10413 newdef ISGW2HadronicFormFactor:Spin 126 1 newdef ISGW2HadronicFormFactor:Spectator 126 1 newdef ISGW2HadronicFormFactor:InQuark 126 -5 newdef ISGW2HadronicFormFactor:OutQuark 126 -4 newdef ISGW2HadronicFormFactor:Incoming 127 -511 newdef ISGW2HadronicFormFactor:Outgoing 127 20413 newdef ISGW2HadronicFormFactor:Spin 127 1 newdef ISGW2HadronicFormFactor:Spectator 127 1 newdef ISGW2HadronicFormFactor:InQuark 127 -5 newdef ISGW2HadronicFormFactor:OutQuark 127 -4 newdef ISGW2HadronicFormFactor:Incoming 128 -511 newdef ISGW2HadronicFormFactor:Outgoing 128 10411 newdef ISGW2HadronicFormFactor:Spin 128 0 newdef ISGW2HadronicFormFactor:Spectator 128 1 newdef ISGW2HadronicFormFactor:InQuark 128 -5 newdef ISGW2HadronicFormFactor:OutQuark 128 -4 newdef ISGW2HadronicFormFactor:Incoming 129 431 newdef ISGW2HadronicFormFactor:Outgoing 129 311 newdef ISGW2HadronicFormFactor:Spin 129 0 newdef ISGW2HadronicFormFactor:Spectator 129 -3 newdef ISGW2HadronicFormFactor:InQuark 129 4 newdef ISGW2HadronicFormFactor:OutQuark 129 1 newdef ISGW2HadronicFormFactor:Incoming 130 431 newdef ISGW2HadronicFormFactor:Outgoing 130 313 newdef ISGW2HadronicFormFactor:Spin 130 1 newdef ISGW2HadronicFormFactor:Spectator 130 -3 newdef ISGW2HadronicFormFactor:InQuark 130 4 newdef ISGW2HadronicFormFactor:OutQuark 130 1 newdef ISGW2HadronicFormFactor:Incoming 131 431 newdef ISGW2HadronicFormFactor:Outgoing 131 315 newdef ISGW2HadronicFormFactor:Spin 131 2 newdef ISGW2HadronicFormFactor:Spectator 131 -3 newdef ISGW2HadronicFormFactor:InQuark 131 4 newdef ISGW2HadronicFormFactor:OutQuark 131 1 newdef ISGW2HadronicFormFactor:Incoming 132 431 newdef ISGW2HadronicFormFactor:Outgoing 132 10313 newdef ISGW2HadronicFormFactor:Spin 132 1 newdef ISGW2HadronicFormFactor:Spectator 132 -3 newdef ISGW2HadronicFormFactor:InQuark 132 4 newdef ISGW2HadronicFormFactor:OutQuark 132 1 newdef ISGW2HadronicFormFactor:Incoming 133 431 newdef ISGW2HadronicFormFactor:Outgoing 133 20313 newdef ISGW2HadronicFormFactor:Spin 133 1 newdef ISGW2HadronicFormFactor:Spectator 133 -3 newdef ISGW2HadronicFormFactor:InQuark 133 4 newdef ISGW2HadronicFormFactor:OutQuark 133 1 newdef ISGW2HadronicFormFactor:Incoming 134 431 newdef ISGW2HadronicFormFactor:Outgoing 134 10311 newdef ISGW2HadronicFormFactor:Spin 134 0 newdef ISGW2HadronicFormFactor:Spectator 134 -3 newdef ISGW2HadronicFormFactor:InQuark 134 4 newdef ISGW2HadronicFormFactor:OutQuark 134 1 newdef ISGW2HadronicFormFactor:Incoming 135 431 newdef ISGW2HadronicFormFactor:Outgoing 135 321 newdef ISGW2HadronicFormFactor:Spin 135 0 newdef ISGW2HadronicFormFactor:Spectator 135 -3 newdef ISGW2HadronicFormFactor:InQuark 135 4 newdef ISGW2HadronicFormFactor:OutQuark 135 2 newdef ISGW2HadronicFormFactor:Incoming 136 431 newdef ISGW2HadronicFormFactor:Outgoing 136 323 newdef ISGW2HadronicFormFactor:Spin 136 1 newdef ISGW2HadronicFormFactor:Spectator 136 -3 newdef ISGW2HadronicFormFactor:InQuark 136 4 newdef ISGW2HadronicFormFactor:OutQuark 136 2 newdef ISGW2HadronicFormFactor:Incoming 137 431 newdef ISGW2HadronicFormFactor:Outgoing 137 325 newdef ISGW2HadronicFormFactor:Spin 137 2 newdef ISGW2HadronicFormFactor:Spectator 137 -3 newdef ISGW2HadronicFormFactor:InQuark 137 4 newdef ISGW2HadronicFormFactor:OutQuark 137 2 newdef ISGW2HadronicFormFactor:Incoming 138 431 newdef ISGW2HadronicFormFactor:Outgoing 138 10323 newdef ISGW2HadronicFormFactor:Spin 138 1 newdef ISGW2HadronicFormFactor:Spectator 138 -3 newdef ISGW2HadronicFormFactor:InQuark 138 4 newdef ISGW2HadronicFormFactor:OutQuark 138 2 newdef ISGW2HadronicFormFactor:Incoming 139 431 newdef ISGW2HadronicFormFactor:Outgoing 139 20323 newdef ISGW2HadronicFormFactor:Spin 139 1 newdef ISGW2HadronicFormFactor:Spectator 139 -3 newdef ISGW2HadronicFormFactor:InQuark 139 4 newdef ISGW2HadronicFormFactor:OutQuark 139 2 newdef ISGW2HadronicFormFactor:Incoming 140 431 newdef ISGW2HadronicFormFactor:Outgoing 140 10321 newdef ISGW2HadronicFormFactor:Spin 140 0 newdef ISGW2HadronicFormFactor:Spectator 140 -3 newdef ISGW2HadronicFormFactor:InQuark 140 4 newdef ISGW2HadronicFormFactor:OutQuark 140 2 newdef ISGW2HadronicFormFactor:Incoming 141 431 newdef ISGW2HadronicFormFactor:Outgoing 141 221 newdef ISGW2HadronicFormFactor:Spin 141 0 newdef ISGW2HadronicFormFactor:Spectator 141 -3 newdef ISGW2HadronicFormFactor:InQuark 141 4 newdef ISGW2HadronicFormFactor:OutQuark 141 3 newdef ISGW2HadronicFormFactor:Incoming 142 431 newdef ISGW2HadronicFormFactor:Outgoing 142 331 newdef ISGW2HadronicFormFactor:Spin 142 0 newdef ISGW2HadronicFormFactor:Spectator 142 -3 newdef ISGW2HadronicFormFactor:InQuark 142 4 newdef ISGW2HadronicFormFactor:OutQuark 142 3 newdef ISGW2HadronicFormFactor:Incoming 143 431 newdef ISGW2HadronicFormFactor:Outgoing 143 333 newdef ISGW2HadronicFormFactor:Spin 143 1 newdef ISGW2HadronicFormFactor:Spectator 143 -3 newdef ISGW2HadronicFormFactor:InQuark 143 4 newdef ISGW2HadronicFormFactor:OutQuark 143 3 newdef ISGW2HadronicFormFactor:Incoming 144 431 newdef ISGW2HadronicFormFactor:Outgoing 144 335 newdef ISGW2HadronicFormFactor:Spin 144 2 newdef ISGW2HadronicFormFactor:Spectator 144 -3 newdef ISGW2HadronicFormFactor:InQuark 144 4 newdef ISGW2HadronicFormFactor:OutQuark 144 3 newdef ISGW2HadronicFormFactor:Incoming 145 431 newdef ISGW2HadronicFormFactor:Outgoing 145 10333 newdef ISGW2HadronicFormFactor:Spin 145 1 newdef ISGW2HadronicFormFactor:Spectator 145 -3 newdef ISGW2HadronicFormFactor:InQuark 145 4 newdef ISGW2HadronicFormFactor:OutQuark 145 3 newdef ISGW2HadronicFormFactor:Incoming 146 431 newdef ISGW2HadronicFormFactor:Outgoing 146 20333 newdef ISGW2HadronicFormFactor:Spin 146 1 newdef ISGW2HadronicFormFactor:Spectator 146 -3 newdef ISGW2HadronicFormFactor:InQuark 146 4 newdef ISGW2HadronicFormFactor:OutQuark 146 3 newdef ISGW2HadronicFormFactor:Incoming 147 431 newdef ISGW2HadronicFormFactor:Outgoing 147 10331 newdef ISGW2HadronicFormFactor:Spin 147 0 newdef ISGW2HadronicFormFactor:Spectator 147 -3 newdef ISGW2HadronicFormFactor:InQuark 147 4 newdef ISGW2HadronicFormFactor:OutQuark 147 3 newdef ISGW2HadronicFormFactor:Incoming 148 421 newdef ISGW2HadronicFormFactor:Outgoing 148 -211 newdef ISGW2HadronicFormFactor:Spin 148 0 newdef ISGW2HadronicFormFactor:Spectator 148 -2 newdef ISGW2HadronicFormFactor:InQuark 148 4 newdef ISGW2HadronicFormFactor:OutQuark 148 1 newdef ISGW2HadronicFormFactor:Incoming 149 421 newdef ISGW2HadronicFormFactor:Outgoing 149 -213 newdef ISGW2HadronicFormFactor:Spin 149 1 newdef ISGW2HadronicFormFactor:Spectator 149 -2 newdef ISGW2HadronicFormFactor:InQuark 149 4 newdef ISGW2HadronicFormFactor:OutQuark 149 1 newdef ISGW2HadronicFormFactor:Incoming 150 421 newdef ISGW2HadronicFormFactor:Outgoing 150 -215 newdef ISGW2HadronicFormFactor:Spin 150 2 newdef ISGW2HadronicFormFactor:Spectator 150 -2 newdef ISGW2HadronicFormFactor:InQuark 150 4 newdef ISGW2HadronicFormFactor:OutQuark 150 1 newdef ISGW2HadronicFormFactor:Incoming 151 421 newdef ISGW2HadronicFormFactor:Outgoing 151 -10213 newdef ISGW2HadronicFormFactor:Spin 151 1 newdef ISGW2HadronicFormFactor:Spectator 151 -2 newdef ISGW2HadronicFormFactor:InQuark 151 4 newdef ISGW2HadronicFormFactor:OutQuark 151 1 newdef ISGW2HadronicFormFactor:Incoming 152 421 newdef ISGW2HadronicFormFactor:Outgoing 152 -20213 newdef ISGW2HadronicFormFactor:Spin 152 1 newdef ISGW2HadronicFormFactor:Spectator 152 -2 newdef ISGW2HadronicFormFactor:InQuark 152 4 newdef ISGW2HadronicFormFactor:OutQuark 152 1 newdef ISGW2HadronicFormFactor:Incoming 153 421 newdef ISGW2HadronicFormFactor:Outgoing 153 -10211 newdef ISGW2HadronicFormFactor:Spin 153 0 newdef ISGW2HadronicFormFactor:Spectator 153 -2 newdef ISGW2HadronicFormFactor:InQuark 153 4 newdef ISGW2HadronicFormFactor:OutQuark 153 1 newdef ISGW2HadronicFormFactor:Incoming 154 421 newdef ISGW2HadronicFormFactor:Outgoing 154 111 newdef ISGW2HadronicFormFactor:Spin 154 0 newdef ISGW2HadronicFormFactor:Spectator 154 -2 newdef ISGW2HadronicFormFactor:InQuark 154 4 newdef ISGW2HadronicFormFactor:OutQuark 154 2 newdef ISGW2HadronicFormFactor:Incoming 155 421 newdef ISGW2HadronicFormFactor:Outgoing 155 113 newdef ISGW2HadronicFormFactor:Spin 155 1 newdef ISGW2HadronicFormFactor:Spectator 155 -2 newdef ISGW2HadronicFormFactor:InQuark 155 4 newdef ISGW2HadronicFormFactor:OutQuark 155 2 newdef ISGW2HadronicFormFactor:Incoming 156 421 newdef ISGW2HadronicFormFactor:Outgoing 156 115 newdef ISGW2HadronicFormFactor:Spin 156 2 newdef ISGW2HadronicFormFactor:Spectator 156 -2 newdef ISGW2HadronicFormFactor:InQuark 156 4 newdef ISGW2HadronicFormFactor:OutQuark 156 2 newdef ISGW2HadronicFormFactor:Incoming 157 421 newdef ISGW2HadronicFormFactor:Outgoing 157 10113 newdef ISGW2HadronicFormFactor:Spin 157 1 newdef ISGW2HadronicFormFactor:Spectator 157 -2 newdef ISGW2HadronicFormFactor:InQuark 157 4 newdef ISGW2HadronicFormFactor:OutQuark 157 2 newdef ISGW2HadronicFormFactor:Incoming 158 421 newdef ISGW2HadronicFormFactor:Outgoing 158 20113 newdef ISGW2HadronicFormFactor:Spin 158 1 newdef ISGW2HadronicFormFactor:Spectator 158 -2 newdef ISGW2HadronicFormFactor:InQuark 158 4 newdef ISGW2HadronicFormFactor:OutQuark 158 2 newdef ISGW2HadronicFormFactor:Incoming 159 421 newdef ISGW2HadronicFormFactor:Outgoing 159 10111 newdef ISGW2HadronicFormFactor:Spin 159 0 newdef ISGW2HadronicFormFactor:Spectator 159 -2 newdef ISGW2HadronicFormFactor:InQuark 159 4 newdef ISGW2HadronicFormFactor:OutQuark 159 2 newdef ISGW2HadronicFormFactor:Incoming 160 421 newdef ISGW2HadronicFormFactor:Outgoing 160 221 newdef ISGW2HadronicFormFactor:Spin 160 0 newdef ISGW2HadronicFormFactor:Spectator 160 -2 newdef ISGW2HadronicFormFactor:InQuark 160 4 newdef ISGW2HadronicFormFactor:OutQuark 160 2 newdef ISGW2HadronicFormFactor:Incoming 161 421 newdef ISGW2HadronicFormFactor:Outgoing 161 331 newdef ISGW2HadronicFormFactor:Spin 161 0 newdef ISGW2HadronicFormFactor:Spectator 161 -2 newdef ISGW2HadronicFormFactor:InQuark 161 4 newdef ISGW2HadronicFormFactor:OutQuark 161 2 newdef ISGW2HadronicFormFactor:Incoming 162 421 newdef ISGW2HadronicFormFactor:Outgoing 162 223 newdef ISGW2HadronicFormFactor:Spin 162 1 newdef ISGW2HadronicFormFactor:Spectator 162 -2 newdef ISGW2HadronicFormFactor:InQuark 162 4 newdef ISGW2HadronicFormFactor:OutQuark 162 2 newdef ISGW2HadronicFormFactor:Incoming 163 421 newdef ISGW2HadronicFormFactor:Outgoing 163 225 newdef ISGW2HadronicFormFactor:Spin 163 2 newdef ISGW2HadronicFormFactor:Spectator 163 -2 newdef ISGW2HadronicFormFactor:InQuark 163 4 newdef ISGW2HadronicFormFactor:OutQuark 163 2 newdef ISGW2HadronicFormFactor:Incoming 164 421 newdef ISGW2HadronicFormFactor:Outgoing 164 10223 newdef ISGW2HadronicFormFactor:Spin 164 1 newdef ISGW2HadronicFormFactor:Spectator 164 -2 newdef ISGW2HadronicFormFactor:InQuark 164 4 newdef ISGW2HadronicFormFactor:OutQuark 164 2 newdef ISGW2HadronicFormFactor:Incoming 165 421 newdef ISGW2HadronicFormFactor:Outgoing 165 20223 newdef ISGW2HadronicFormFactor:Spin 165 1 newdef ISGW2HadronicFormFactor:Spectator 165 -2 newdef ISGW2HadronicFormFactor:InQuark 165 4 newdef ISGW2HadronicFormFactor:OutQuark 165 2 newdef ISGW2HadronicFormFactor:Incoming 166 421 newdef ISGW2HadronicFormFactor:Outgoing 166 10221 newdef ISGW2HadronicFormFactor:Spin 166 0 newdef ISGW2HadronicFormFactor:Spectator 166 -2 newdef ISGW2HadronicFormFactor:InQuark 166 4 newdef ISGW2HadronicFormFactor:OutQuark 166 2 newdef ISGW2HadronicFormFactor:Incoming 167 421 newdef ISGW2HadronicFormFactor:Outgoing 167 -321 newdef ISGW2HadronicFormFactor:Spin 167 0 newdef ISGW2HadronicFormFactor:Spectator 167 -2 newdef ISGW2HadronicFormFactor:InQuark 167 4 newdef ISGW2HadronicFormFactor:OutQuark 167 3 newdef ISGW2HadronicFormFactor:Incoming 168 421 newdef ISGW2HadronicFormFactor:Outgoing 168 -323 newdef ISGW2HadronicFormFactor:Spin 168 1 newdef ISGW2HadronicFormFactor:Spectator 168 -2 newdef ISGW2HadronicFormFactor:InQuark 168 4 newdef ISGW2HadronicFormFactor:OutQuark 168 3 newdef ISGW2HadronicFormFactor:Incoming 169 421 newdef ISGW2HadronicFormFactor:Outgoing 169 -325 newdef ISGW2HadronicFormFactor:Spin 169 2 newdef ISGW2HadronicFormFactor:Spectator 169 -2 newdef ISGW2HadronicFormFactor:InQuark 169 4 newdef ISGW2HadronicFormFactor:OutQuark 169 3 newdef ISGW2HadronicFormFactor:Incoming 170 421 newdef ISGW2HadronicFormFactor:Outgoing 170 -10323 newdef ISGW2HadronicFormFactor:Spin 170 1 newdef ISGW2HadronicFormFactor:Spectator 170 -2 newdef ISGW2HadronicFormFactor:InQuark 170 4 newdef ISGW2HadronicFormFactor:OutQuark 170 3 newdef ISGW2HadronicFormFactor:Incoming 171 421 newdef ISGW2HadronicFormFactor:Outgoing 171 -20323 newdef ISGW2HadronicFormFactor:Spin 171 1 newdef ISGW2HadronicFormFactor:Spectator 171 -2 newdef ISGW2HadronicFormFactor:InQuark 171 4 newdef ISGW2HadronicFormFactor:OutQuark 171 3 newdef ISGW2HadronicFormFactor:Incoming 172 421 newdef ISGW2HadronicFormFactor:Outgoing 172 -10321 newdef ISGW2HadronicFormFactor:Spin 172 0 newdef ISGW2HadronicFormFactor:Spectator 172 -2 newdef ISGW2HadronicFormFactor:InQuark 172 4 newdef ISGW2HadronicFormFactor:OutQuark 172 3 newdef ISGW2HadronicFormFactor:Incoming 173 411 newdef ISGW2HadronicFormFactor:Outgoing 173 221 newdef ISGW2HadronicFormFactor:Spin 173 0 newdef ISGW2HadronicFormFactor:Spectator 173 -1 newdef ISGW2HadronicFormFactor:InQuark 173 4 newdef ISGW2HadronicFormFactor:OutQuark 173 1 newdef ISGW2HadronicFormFactor:Incoming 174 411 newdef ISGW2HadronicFormFactor:Outgoing 174 331 newdef ISGW2HadronicFormFactor:Spin 174 0 newdef ISGW2HadronicFormFactor:Spectator 174 -1 newdef ISGW2HadronicFormFactor:InQuark 174 4 newdef ISGW2HadronicFormFactor:OutQuark 174 1 newdef ISGW2HadronicFormFactor:Incoming 175 411 newdef ISGW2HadronicFormFactor:Outgoing 175 223 newdef ISGW2HadronicFormFactor:Spin 175 1 newdef ISGW2HadronicFormFactor:Spectator 175 -1 newdef ISGW2HadronicFormFactor:InQuark 175 4 newdef ISGW2HadronicFormFactor:OutQuark 175 1 newdef ISGW2HadronicFormFactor:Incoming 176 411 newdef ISGW2HadronicFormFactor:Outgoing 176 225 newdef ISGW2HadronicFormFactor:Spin 176 2 newdef ISGW2HadronicFormFactor:Spectator 176 -1 newdef ISGW2HadronicFormFactor:InQuark 176 4 newdef ISGW2HadronicFormFactor:OutQuark 176 1 newdef ISGW2HadronicFormFactor:Incoming 177 411 newdef ISGW2HadronicFormFactor:Outgoing 177 10223 newdef ISGW2HadronicFormFactor:Spin 177 1 newdef ISGW2HadronicFormFactor:Spectator 177 -1 newdef ISGW2HadronicFormFactor:InQuark 177 4 newdef ISGW2HadronicFormFactor:OutQuark 177 1 newdef ISGW2HadronicFormFactor:Incoming 178 411 newdef ISGW2HadronicFormFactor:Outgoing 178 20223 newdef ISGW2HadronicFormFactor:Spin 178 1 newdef ISGW2HadronicFormFactor:Spectator 178 -1 newdef ISGW2HadronicFormFactor:InQuark 178 4 newdef ISGW2HadronicFormFactor:OutQuark 178 1 newdef ISGW2HadronicFormFactor:Incoming 179 411 newdef ISGW2HadronicFormFactor:Outgoing 179 10221 newdef ISGW2HadronicFormFactor:Spin 179 0 newdef ISGW2HadronicFormFactor:Spectator 179 -1 newdef ISGW2HadronicFormFactor:InQuark 179 4 newdef ISGW2HadronicFormFactor:OutQuark 179 1 newdef ISGW2HadronicFormFactor:Incoming 180 411 newdef ISGW2HadronicFormFactor:Outgoing 180 111 newdef ISGW2HadronicFormFactor:Spin 180 0 newdef ISGW2HadronicFormFactor:Spectator 180 -1 newdef ISGW2HadronicFormFactor:InQuark 180 4 newdef ISGW2HadronicFormFactor:OutQuark 180 1 newdef ISGW2HadronicFormFactor:Incoming 181 411 newdef ISGW2HadronicFormFactor:Outgoing 181 113 newdef ISGW2HadronicFormFactor:Spin 181 1 newdef ISGW2HadronicFormFactor:Spectator 181 -1 newdef ISGW2HadronicFormFactor:InQuark 181 4 newdef ISGW2HadronicFormFactor:OutQuark 181 1 newdef ISGW2HadronicFormFactor:Incoming 182 411 newdef ISGW2HadronicFormFactor:Outgoing 182 115 newdef ISGW2HadronicFormFactor:Spin 182 2 newdef ISGW2HadronicFormFactor:Spectator 182 -1 newdef ISGW2HadronicFormFactor:InQuark 182 4 newdef ISGW2HadronicFormFactor:OutQuark 182 1 newdef ISGW2HadronicFormFactor:Incoming 183 411 newdef ISGW2HadronicFormFactor:Outgoing 183 10113 newdef ISGW2HadronicFormFactor:Spin 183 1 newdef ISGW2HadronicFormFactor:Spectator 183 -1 newdef ISGW2HadronicFormFactor:InQuark 183 4 newdef ISGW2HadronicFormFactor:OutQuark 183 1 newdef ISGW2HadronicFormFactor:Incoming 184 411 newdef ISGW2HadronicFormFactor:Outgoing 184 20113 newdef ISGW2HadronicFormFactor:Spin 184 1 newdef ISGW2HadronicFormFactor:Spectator 184 -1 newdef ISGW2HadronicFormFactor:InQuark 184 4 newdef ISGW2HadronicFormFactor:OutQuark 184 1 newdef ISGW2HadronicFormFactor:Incoming 185 411 newdef ISGW2HadronicFormFactor:Outgoing 185 10111 newdef ISGW2HadronicFormFactor:Spin 185 0 newdef ISGW2HadronicFormFactor:Spectator 185 -1 newdef ISGW2HadronicFormFactor:InQuark 185 4 newdef ISGW2HadronicFormFactor:OutQuark 185 1 newdef ISGW2HadronicFormFactor:Incoming 186 411 newdef ISGW2HadronicFormFactor:Outgoing 186 211 newdef ISGW2HadronicFormFactor:Spin 186 0 newdef ISGW2HadronicFormFactor:Spectator 186 -1 newdef ISGW2HadronicFormFactor:InQuark 186 4 newdef ISGW2HadronicFormFactor:OutQuark 186 2 newdef ISGW2HadronicFormFactor:Incoming 187 411 newdef ISGW2HadronicFormFactor:Outgoing 187 213 newdef ISGW2HadronicFormFactor:Spin 187 1 newdef ISGW2HadronicFormFactor:Spectator 187 -1 newdef ISGW2HadronicFormFactor:InQuark 187 4 newdef ISGW2HadronicFormFactor:OutQuark 187 2 newdef ISGW2HadronicFormFactor:Incoming 188 411 newdef ISGW2HadronicFormFactor:Outgoing 188 215 newdef ISGW2HadronicFormFactor:Spin 188 2 newdef ISGW2HadronicFormFactor:Spectator 188 -1 newdef ISGW2HadronicFormFactor:InQuark 188 4 newdef ISGW2HadronicFormFactor:OutQuark 188 2 newdef ISGW2HadronicFormFactor:Incoming 189 411 newdef ISGW2HadronicFormFactor:Outgoing 189 10213 newdef ISGW2HadronicFormFactor:Spin 189 1 newdef ISGW2HadronicFormFactor:Spectator 189 -1 newdef ISGW2HadronicFormFactor:InQuark 189 4 newdef ISGW2HadronicFormFactor:OutQuark 189 2 newdef ISGW2HadronicFormFactor:Incoming 190 411 newdef ISGW2HadronicFormFactor:Outgoing 190 20213 newdef ISGW2HadronicFormFactor:Spin 190 1 newdef ISGW2HadronicFormFactor:Spectator 190 -1 newdef ISGW2HadronicFormFactor:InQuark 190 4 newdef ISGW2HadronicFormFactor:OutQuark 190 2 newdef ISGW2HadronicFormFactor:Incoming 191 411 newdef ISGW2HadronicFormFactor:Outgoing 191 10211 newdef ISGW2HadronicFormFactor:Spin 191 0 newdef ISGW2HadronicFormFactor:Spectator 191 -1 newdef ISGW2HadronicFormFactor:InQuark 191 4 newdef ISGW2HadronicFormFactor:OutQuark 191 2 newdef ISGW2HadronicFormFactor:Incoming 192 411 newdef ISGW2HadronicFormFactor:Outgoing 192 -311 newdef ISGW2HadronicFormFactor:Spin 192 0 newdef ISGW2HadronicFormFactor:Spectator 192 -1 newdef ISGW2HadronicFormFactor:InQuark 192 4 newdef ISGW2HadronicFormFactor:OutQuark 192 3 newdef ISGW2HadronicFormFactor:Incoming 193 411 newdef ISGW2HadronicFormFactor:Outgoing 193 -313 newdef ISGW2HadronicFormFactor:Spin 193 1 newdef ISGW2HadronicFormFactor:Spectator 193 -1 newdef ISGW2HadronicFormFactor:InQuark 193 4 newdef ISGW2HadronicFormFactor:OutQuark 193 3 newdef ISGW2HadronicFormFactor:Incoming 194 411 newdef ISGW2HadronicFormFactor:Outgoing 194 -315 newdef ISGW2HadronicFormFactor:Spin 194 2 newdef ISGW2HadronicFormFactor:Spectator 194 -1 newdef ISGW2HadronicFormFactor:InQuark 194 4 newdef ISGW2HadronicFormFactor:OutQuark 194 3 newdef ISGW2HadronicFormFactor:Incoming 195 411 newdef ISGW2HadronicFormFactor:Outgoing 195 -10313 newdef ISGW2HadronicFormFactor:Spin 195 1 newdef ISGW2HadronicFormFactor:Spectator 195 -1 newdef ISGW2HadronicFormFactor:InQuark 195 4 newdef ISGW2HadronicFormFactor:OutQuark 195 3 newdef ISGW2HadronicFormFactor:Incoming 196 411 newdef ISGW2HadronicFormFactor:Outgoing 196 -20313 newdef ISGW2HadronicFormFactor:Spin 196 1 newdef ISGW2HadronicFormFactor:Spectator 196 -1 newdef ISGW2HadronicFormFactor:InQuark 196 4 newdef ISGW2HadronicFormFactor:OutQuark 196 3 newdef ISGW2HadronicFormFactor:Incoming 197 411 newdef ISGW2HadronicFormFactor:Outgoing 197 -10311 newdef ISGW2HadronicFormFactor:Spin 197 0 newdef ISGW2HadronicFormFactor:Spectator 197 -1 newdef ISGW2HadronicFormFactor:InQuark 197 4 newdef ISGW2HadronicFormFactor:OutQuark 197 3 insert ISGW2Hadronic:FormFactors 0 ISGW2HadronicFormFactor insert ISGW2Hadronic:WeightLocation 0 0 insert ISGW2Hadronic:WeightLocation 1 0 insert ISGW2Hadronic:WeightLocation 2 0 insert ISGW2Hadronic:WeightLocation 3 0 insert ISGW2Hadronic:WeightLocation 4 0 insert ISGW2Hadronic:WeightLocation 5 0 insert ISGW2Hadronic:WeightLocation 6 0 insert ISGW2Hadronic:WeightLocation 7 0 insert ISGW2Hadronic:WeightLocation 8 0 insert ISGW2Hadronic:WeightLocation 9 0 insert ISGW2Hadronic:WeightLocation 10 0 insert ISGW2Hadronic:WeightLocation 11 0 insert ISGW2Hadronic:WeightLocation 12 0 insert ISGW2Hadronic:WeightLocation 13 0 insert ISGW2Hadronic:WeightLocation 14 0 insert ISGW2Hadronic:WeightLocation 15 0 insert ISGW2Hadronic:WeightLocation 16 0 insert ISGW2Hadronic:WeightLocation 17 0 insert ISGW2Hadronic:WeightLocation 18 0 insert ISGW2Hadronic:WeightLocation 19 0 insert ISGW2Hadronic:WeightLocation 20 0 insert ISGW2Hadronic:WeightLocation 21 0 insert ISGW2Hadronic:WeightLocation 22 0 insert ISGW2Hadronic:WeightLocation 23 0 insert ISGW2Hadronic:WeightLocation 24 0 insert ISGW2Hadronic:WeightLocation 25 0 insert ISGW2Hadronic:WeightLocation 26 0 insert ISGW2Hadronic:WeightLocation 27 0 insert ISGW2Hadronic:WeightLocation 28 0 insert ISGW2Hadronic:WeightLocation 29 0 insert ISGW2Hadronic:WeightLocation 30 0 insert ISGW2Hadronic:WeightLocation 31 0 insert ISGW2Hadronic:WeightLocation 32 0 insert ISGW2Hadronic:WeightLocation 33 0 insert ISGW2Hadronic:WeightLocation 34 0 insert ISGW2Hadronic:WeightLocation 35 0 insert ISGW2Hadronic:WeightLocation 36 0 insert ISGW2Hadronic:WeightLocation 37 0 insert ISGW2Hadronic:WeightLocation 38 0 insert ISGW2Hadronic:WeightLocation 39 0 insert ISGW2Hadronic:WeightLocation 40 0 insert ISGW2Hadronic:WeightLocation 41 0 insert ISGW2Hadronic:WeightLocation 42 0 insert ISGW2Hadronic:WeightLocation 43 0 insert ISGW2Hadronic:WeightLocation 44 0 insert ISGW2Hadronic:WeightLocation 45 0 insert ISGW2Hadronic:WeightLocation 46 0 insert ISGW2Hadronic:WeightLocation 47 0 insert ISGW2Hadronic:WeightLocation 48 0 insert ISGW2Hadronic:WeightLocation 49 0 insert ISGW2Hadronic:WeightLocation 50 0 insert ISGW2Hadronic:WeightLocation 51 0 insert ISGW2Hadronic:WeightLocation 52 0 insert ISGW2Hadronic:WeightLocation 53 0 insert ISGW2Hadronic:WeightLocation 54 0 insert ISGW2Hadronic:WeightLocation 55 0 insert ISGW2Hadronic:WeightLocation 56 0 insert ISGW2Hadronic:WeightLocation 57 0 insert ISGW2Hadronic:WeightLocation 58 0 insert ISGW2Hadronic:WeightLocation 59 0 insert ISGW2Hadronic:WeightLocation 60 0 insert ISGW2Hadronic:WeightLocation 61 0 insert ISGW2Hadronic:WeightLocation 62 0 insert ISGW2Hadronic:WeightLocation 63 0 insert ISGW2Hadronic:WeightLocation 64 0 insert ISGW2Hadronic:WeightLocation 65 0 insert ISGW2Hadronic:WeightLocation 66 0 insert ISGW2Hadronic:WeightLocation 67 0 insert ISGW2Hadronic:WeightLocation 68 0 insert ISGW2Hadronic:WeightLocation 69 0 insert ISGW2Hadronic:WeightLocation 70 0 insert ISGW2Hadronic:WeightLocation 71 0 insert ISGW2Hadronic:WeightLocation 72 0 insert ISGW2Hadronic:WeightLocation 73 0 insert ISGW2Hadronic:WeightLocation 74 0 insert ISGW2Hadronic:WeightLocation 75 0 insert ISGW2Hadronic:WeightLocation 76 0 insert ISGW2Hadronic:WeightLocation 77 0 insert ISGW2Hadronic:WeightLocation 78 0 insert ISGW2Hadronic:WeightLocation 79 0 insert ISGW2Hadronic:WeightLocation 80 0 insert ISGW2Hadronic:WeightLocation 81 0 insert ISGW2Hadronic:WeightLocation 82 0 insert ISGW2Hadronic:WeightLocation 83 0 insert ISGW2Hadronic:WeightLocation 84 0 insert ISGW2Hadronic:WeightLocation 85 0 insert ISGW2Hadronic:WeightLocation 86 0 insert ISGW2Hadronic:WeightLocation 87 0 insert ISGW2Hadronic:WeightLocation 88 0 insert ISGW2Hadronic:WeightLocation 89 0 insert ISGW2Hadronic:WeightLocation 90 0 insert ISGW2Hadronic:WeightLocation 91 0 insert ISGW2Hadronic:WeightLocation 92 0 insert ISGW2Hadronic:WeightLocation 93 0 insert ISGW2Hadronic:WeightLocation 94 0 insert ISGW2Hadronic:WeightLocation 95 0 insert ISGW2Hadronic:WeightLocation 96 0 insert ISGW2Hadronic:WeightLocation 97 0 insert ISGW2Hadronic:WeightLocation 98 0 insert ISGW2Hadronic:WeightLocation 99 0 insert ISGW2Hadronic:WeightLocation 100 0 insert ISGW2Hadronic:WeightLocation 101 0 insert ISGW2Hadronic:WeightLocation 102 0 insert ISGW2Hadronic:WeightLocation 103 0 insert ISGW2Hadronic:WeightLocation 104 0 insert ISGW2Hadronic:WeightLocation 105 0 insert ISGW2Hadronic:WeightLocation 106 0 insert ISGW2Hadronic:WeightLocation 107 0 insert ISGW2Hadronic:WeightLocation 108 0 insert ISGW2Hadronic:WeightLocation 109 0 insert ISGW2Hadronic:WeightLocation 110 0 insert ISGW2Hadronic:WeightLocation 111 0 insert ISGW2Hadronic:WeightLocation 112 0 insert ISGW2Hadronic:WeightLocation 113 0 insert ISGW2Hadronic:WeightLocation 114 0 insert ISGW2Hadronic:WeightLocation 115 0 insert ISGW2Hadronic:WeightLocation 116 0 insert ISGW2Hadronic:WeightLocation 117 0 insert ISGW2Hadronic:WeightLocation 118 0 insert ISGW2Hadronic:WeightLocation 119 0 insert ISGW2Hadronic:WeightLocation 120 0 insert ISGW2Hadronic:WeightLocation 121 0 insert ISGW2Hadronic:WeightLocation 122 0 insert ISGW2Hadronic:WeightLocation 123 0 insert ISGW2Hadronic:WeightLocation 124 0 insert ISGW2Hadronic:WeightLocation 125 0 insert ISGW2Hadronic:WeightLocation 126 0 insert ISGW2Hadronic:WeightLocation 127 0 insert ISGW2Hadronic:WeightLocation 128 0 insert ISGW2Hadronic:WeightLocation 129 0 insert ISGW2Hadronic:WeightLocation 130 0 insert ISGW2Hadronic:WeightLocation 131 0 insert ISGW2Hadronic:WeightLocation 132 0 insert ISGW2Hadronic:WeightLocation 133 0 insert ISGW2Hadronic:WeightLocation 134 0 insert ISGW2Hadronic:WeightLocation 135 0 insert ISGW2Hadronic:WeightLocation 136 0 insert ISGW2Hadronic:WeightLocation 137 0 insert ISGW2Hadronic:WeightLocation 138 0 insert ISGW2Hadronic:WeightLocation 139 0 insert ISGW2Hadronic:WeightLocation 140 0 insert ISGW2Hadronic:WeightLocation 141 0 insert ISGW2Hadronic:WeightLocation 142 0 insert ISGW2Hadronic:WeightLocation 143 0 insert ISGW2Hadronic:WeightLocation 144 0 insert ISGW2Hadronic:WeightLocation 145 0 insert ISGW2Hadronic:WeightLocation 146 0 insert ISGW2Hadronic:WeightLocation 147 0 insert ISGW2Hadronic:WeightLocation 148 0 insert ISGW2Hadronic:WeightLocation 149 0 insert ISGW2Hadronic:WeightLocation 150 0 insert ISGW2Hadronic:WeightLocation 151 0 insert ISGW2Hadronic:WeightLocation 152 0 insert ISGW2Hadronic:WeightLocation 153 0 insert ISGW2Hadronic:WeightLocation 154 0 insert ISGW2Hadronic:WeightLocation 155 0 insert ISGW2Hadronic:WeightLocation 156 0 insert ISGW2Hadronic:WeightLocation 157 0 insert ISGW2Hadronic:WeightLocation 158 0 insert ISGW2Hadronic:WeightLocation 159 0 insert ISGW2Hadronic:WeightLocation 160 0 insert ISGW2Hadronic:WeightLocation 161 0 insert ISGW2Hadronic:WeightLocation 162 0 insert ISGW2Hadronic:WeightLocation 163 0 insert ISGW2Hadronic:WeightLocation 164 0 insert ISGW2Hadronic:WeightLocation 165 0 insert ISGW2Hadronic:WeightLocation 166 0 insert ISGW2Hadronic:WeightLocation 167 0 insert ISGW2Hadronic:WeightLocation 168 0 insert ISGW2Hadronic:WeightLocation 169 0 insert ISGW2Hadronic:WeightLocation 170 0 insert ISGW2Hadronic:WeightLocation 171 0 insert ISGW2Hadronic:WeightLocation 172 0 insert ISGW2Hadronic:WeightLocation 173 0 insert ISGW2Hadronic:WeightLocation 174 0 insert ISGW2Hadronic:WeightLocation 175 0 insert ISGW2Hadronic:WeightLocation 176 0 insert ISGW2Hadronic:WeightLocation 177 0 insert ISGW2Hadronic:WeightLocation 178 0 insert ISGW2Hadronic:WeightLocation 179 0 insert ISGW2Hadronic:WeightLocation 180 0 insert ISGW2Hadronic:WeightLocation 181 0 insert ISGW2Hadronic:WeightLocation 182 0 insert ISGW2Hadronic:WeightLocation 183 0 insert ISGW2Hadronic:WeightLocation 184 0 insert ISGW2Hadronic:WeightLocation 185 0 insert ISGW2Hadronic:WeightLocation 186 0 insert ISGW2Hadronic:WeightLocation 187 0 insert ISGW2Hadronic:WeightLocation 188 0 insert ISGW2Hadronic:WeightLocation 189 0 insert ISGW2Hadronic:WeightLocation 190 0 insert ISGW2Hadronic:WeightLocation 191 0 insert ISGW2Hadronic:WeightLocation 192 0 insert ISGW2Hadronic:WeightLocation 193 0 insert ISGW2Hadronic:WeightLocation 194 0 insert ISGW2Hadronic:WeightLocation 195 0 insert ISGW2Hadronic:WeightLocation 196 0 insert ISGW2Hadronic:WeightLocation 197 0 insert ISGW2Hadronic:WeightLocation 198 0 insert ISGW2Hadronic:WeightLocation 199 0 insert ISGW2Hadronic:WeightLocation 200 0 insert ISGW2Hadronic:WeightLocation 201 0 insert ISGW2Hadronic:WeightLocation 202 0 insert ISGW2Hadronic:WeightLocation 203 0 insert ISGW2Hadronic:WeightLocation 204 0 insert ISGW2Hadronic:WeightLocation 205 0 insert ISGW2Hadronic:WeightLocation 206 0 insert ISGW2Hadronic:WeightLocation 207 0 insert ISGW2Hadronic:WeightLocation 208 0 insert ISGW2Hadronic:WeightLocation 209 0 insert ISGW2Hadronic:WeightLocation 210 0 insert ISGW2Hadronic:WeightLocation 211 0 insert ISGW2Hadronic:WeightLocation 212 0 insert ISGW2Hadronic:WeightLocation 213 0 insert ISGW2Hadronic:WeightLocation 214 0 insert ISGW2Hadronic:WeightLocation 215 0 insert ISGW2Hadronic:WeightLocation 216 0 insert ISGW2Hadronic:WeightLocation 217 0 insert ISGW2Hadronic:WeightLocation 218 0 insert ISGW2Hadronic:WeightLocation 219 0 insert ISGW2Hadronic:WeightLocation 220 0 insert ISGW2Hadronic:WeightLocation 221 0 insert ISGW2Hadronic:WeightLocation 222 0 insert ISGW2Hadronic:WeightLocation 223 0 insert ISGW2Hadronic:WeightLocation 224 0 insert ISGW2Hadronic:WeightLocation 225 0 insert ISGW2Hadronic:WeightLocation 226 0 insert ISGW2Hadronic:WeightLocation 227 0 insert ISGW2Hadronic:WeightLocation 228 0 insert ISGW2Hadronic:WeightLocation 229 0 insert ISGW2Hadronic:WeightLocation 230 0 insert ISGW2Hadronic:WeightLocation 231 0 insert ISGW2Hadronic:WeightLocation 232 0 insert ISGW2Hadronic:WeightLocation 233 0 insert ISGW2Hadronic:WeightLocation 234 0 insert ISGW2Hadronic:WeightLocation 235 0 insert ISGW2Hadronic:WeightLocation 236 0 insert ISGW2Hadronic:WeightLocation 237 0 insert ISGW2Hadronic:WeightLocation 238 0 insert ISGW2Hadronic:WeightLocation 239 0 insert ISGW2Hadronic:WeightLocation 240 0 insert ISGW2Hadronic:WeightLocation 241 0 insert ISGW2Hadronic:WeightLocation 242 0 insert ISGW2Hadronic:WeightLocation 243 0 insert ISGW2Hadronic:WeightLocation 244 0 insert ISGW2Hadronic:WeightLocation 245 0 insert ISGW2Hadronic:WeightLocation 246 0 insert ISGW2Hadronic:WeightLocation 247 0 insert ISGW2Hadronic:WeightLocation 248 0 insert ISGW2Hadronic:WeightLocation 249 0 insert ISGW2Hadronic:WeightLocation 250 0 insert ISGW2Hadronic:WeightLocation 251 0 insert ISGW2Hadronic:WeightLocation 252 0 insert ISGW2Hadronic:WeightLocation 253 0 insert ISGW2Hadronic:WeightLocation 254 0 insert ISGW2Hadronic:WeightLocation 255 0 insert ISGW2Hadronic:WeightLocation 256 0 insert ISGW2Hadronic:WeightLocation 257 0 insert ISGW2Hadronic:WeightLocation 258 0 insert ISGW2Hadronic:WeightLocation 259 0 insert ISGW2Hadronic:WeightLocation 260 0 insert ISGW2Hadronic:WeightLocation 261 0 insert ISGW2Hadronic:WeightLocation 262 0 insert ISGW2Hadronic:WeightLocation 263 0 insert ISGW2Hadronic:WeightLocation 264 0 insert ISGW2Hadronic:WeightLocation 265 0 insert ISGW2Hadronic:WeightLocation 266 0 insert ISGW2Hadronic:WeightLocation 267 0 insert ISGW2Hadronic:WeightLocation 268 0 insert ISGW2Hadronic:WeightLocation 269 0 insert ISGW2Hadronic:WeightLocation 270 0 insert ISGW2Hadronic:WeightLocation 271 0 insert ISGW2Hadronic:WeightLocation 272 0 insert ISGW2Hadronic:WeightLocation 273 0 insert ISGW2Hadronic:WeightLocation 274 0 insert ISGW2Hadronic:WeightLocation 275 0 insert ISGW2Hadronic:WeightLocation 276 0 insert ISGW2Hadronic:WeightLocation 277 0 insert ISGW2Hadronic:WeightLocation 278 0 insert ISGW2Hadronic:WeightLocation 279 0 insert ISGW2Hadronic:WeightLocation 280 0 insert ISGW2Hadronic:WeightLocation 281 0 insert ISGW2Hadronic:WeightLocation 282 0 insert ISGW2Hadronic:WeightLocation 283 0 insert ISGW2Hadronic:WeightLocation 284 0 insert ISGW2Hadronic:WeightLocation 285 0 insert ISGW2Hadronic:WeightLocation 286 0 insert ISGW2Hadronic:WeightLocation 287 0 insert ISGW2Hadronic:WeightLocation 288 0 insert ISGW2Hadronic:WeightLocation 289 0 insert ISGW2Hadronic:WeightLocation 290 0 insert ISGW2Hadronic:WeightLocation 291 0 insert ISGW2Hadronic:WeightLocation 292 0 insert ISGW2Hadronic:WeightLocation 293 0 insert ISGW2Hadronic:WeightLocation 294 0 insert ISGW2Hadronic:WeightLocation 295 0 insert ISGW2Hadronic:WeightLocation 296 0 insert ISGW2Hadronic:WeightLocation 297 0 insert ISGW2Hadronic:WeightLocation 298 0 insert ISGW2Hadronic:WeightLocation 299 0 insert ISGW2Hadronic:WeightLocation 300 0 insert ISGW2Hadronic:WeightLocation 301 0 insert ISGW2Hadronic:WeightLocation 302 0 insert ISGW2Hadronic:WeightLocation 303 0 insert ISGW2Hadronic:WeightLocation 304 0 insert ISGW2Hadronic:WeightLocation 305 0 insert ISGW2Hadronic:WeightLocation 306 0 insert ISGW2Hadronic:WeightLocation 307 0 insert ISGW2Hadronic:WeightLocation 308 0 insert ISGW2Hadronic:WeightLocation 309 0 insert ISGW2Hadronic:WeightLocation 310 0 insert ISGW2Hadronic:WeightLocation 311 0 insert ISGW2Hadronic:WeightLocation 312 0 insert ISGW2Hadronic:WeightLocation 313 0 insert ISGW2Hadronic:WeightLocation 314 0 insert ISGW2Hadronic:WeightLocation 315 0 insert ISGW2Hadronic:WeightLocation 316 0 insert ISGW2Hadronic:WeightLocation 317 0 insert ISGW2Hadronic:WeightLocation 318 0 insert ISGW2Hadronic:WeightLocation 319 0 insert ISGW2Hadronic:WeightLocation 320 0 insert ISGW2Hadronic:WeightLocation 321 0 insert ISGW2Hadronic:WeightLocation 322 0 insert ISGW2Hadronic:WeightLocation 323 0 insert ISGW2Hadronic:WeightLocation 324 0 insert ISGW2Hadronic:WeightLocation 325 0 insert ISGW2Hadronic:WeightLocation 326 0 insert ISGW2Hadronic:WeightLocation 327 0 insert ISGW2Hadronic:WeightLocation 328 0 insert ISGW2Hadronic:WeightLocation 329 0 insert ISGW2Hadronic:WeightLocation 330 0 insert ISGW2Hadronic:WeightLocation 331 0 insert ISGW2Hadronic:WeightLocation 332 0 insert ISGW2Hadronic:WeightLocation 333 0 insert ISGW2Hadronic:WeightLocation 334 0 insert ISGW2Hadronic:WeightLocation 335 0 insert ISGW2Hadronic:WeightLocation 336 0 insert ISGW2Hadronic:WeightLocation 337 0 insert ISGW2Hadronic:WeightLocation 338 0 insert ISGW2Hadronic:WeightLocation 339 0 insert ISGW2Hadronic:WeightLocation 340 0 insert ISGW2Hadronic:WeightLocation 341 0 insert ISGW2Hadronic:WeightLocation 342 0 insert ISGW2Hadronic:WeightLocation 343 0 insert ISGW2Hadronic:WeightLocation 344 0 insert ISGW2Hadronic:WeightLocation 345 0 insert ISGW2Hadronic:WeightLocation 346 0 insert ISGW2Hadronic:WeightLocation 347 0 insert ISGW2Hadronic:WeightLocation 348 0 insert ISGW2Hadronic:WeightLocation 349 0 insert ISGW2Hadronic:WeightLocation 350 0 insert ISGW2Hadronic:WeightLocation 351 0 insert ISGW2Hadronic:WeightLocation 352 0 insert ISGW2Hadronic:WeightLocation 353 0 insert ISGW2Hadronic:WeightLocation 354 0 insert ISGW2Hadronic:WeightLocation 355 0 insert ISGW2Hadronic:WeightLocation 356 0 insert ISGW2Hadronic:WeightLocation 357 0 insert ISGW2Hadronic:WeightLocation 358 0 insert ISGW2Hadronic:WeightLocation 359 0 insert ISGW2Hadronic:WeightLocation 360 0 insert ISGW2Hadronic:WeightLocation 361 0 insert ISGW2Hadronic:WeightLocation 362 0 insert ISGW2Hadronic:WeightLocation 363 0 insert ISGW2Hadronic:WeightLocation 364 0 insert ISGW2Hadronic:WeightLocation 365 0 insert ISGW2Hadronic:WeightLocation 366 0 insert ISGW2Hadronic:WeightLocation 367 0 insert ISGW2Hadronic:WeightLocation 368 0 insert ISGW2Hadronic:WeightLocation 369 0 insert ISGW2Hadronic:WeightLocation 370 0 insert ISGW2Hadronic:WeightLocation 371 0 insert ISGW2Hadronic:WeightLocation 372 0 insert ISGW2Hadronic:WeightLocation 373 0 insert ISGW2Hadronic:WeightLocation 374 0 insert ISGW2Hadronic:WeightLocation 375 0 insert ISGW2Hadronic:WeightLocation 376 0 insert ISGW2Hadronic:WeightLocation 377 0 insert ISGW2Hadronic:WeightLocation 378 0 insert ISGW2Hadronic:WeightLocation 379 0 insert ISGW2Hadronic:WeightLocation 380 0 insert ISGW2Hadronic:WeightLocation 381 0 insert ISGW2Hadronic:WeightLocation 382 0 insert ISGW2Hadronic:WeightLocation 383 0 insert ISGW2Hadronic:WeightLocation 384 0 insert ISGW2Hadronic:WeightLocation 385 0 insert ISGW2Hadronic:WeightLocation 386 0 insert ISGW2Hadronic:WeightLocation 387 0 insert ISGW2Hadronic:WeightLocation 388 0 insert ISGW2Hadronic:WeightLocation 389 0 insert ISGW2Hadronic:WeightLocation 390 0 insert ISGW2Hadronic:WeightLocation 391 0 insert ISGW2Hadronic:WeightLocation 392 0 insert ISGW2Hadronic:WeightLocation 393 0 insert ISGW2Hadronic:WeightLocation 394 0 insert ISGW2Hadronic:WeightLocation 395 0 insert ISGW2Hadronic:WeightLocation 396 0 insert ISGW2Hadronic:WeightLocation 397 0 insert ISGW2Hadronic:WeightLocation 398 0 insert ISGW2Hadronic:WeightLocation 399 0 insert ISGW2Hadronic:WeightLocation 400 0 insert ISGW2Hadronic:WeightLocation 401 0 insert ISGW2Hadronic:WeightLocation 402 0 insert ISGW2Hadronic:WeightLocation 403 0 insert ISGW2Hadronic:WeightLocation 404 0 insert ISGW2Hadronic:WeightLocation 405 0 insert ISGW2Hadronic:WeightLocation 406 0 insert ISGW2Hadronic:WeightLocation 407 0 insert ISGW2Hadronic:WeightLocation 408 0 insert ISGW2Hadronic:WeightLocation 409 0 insert ISGW2Hadronic:WeightLocation 410 0 insert ISGW2Hadronic:WeightLocation 411 0 insert ISGW2Hadronic:WeightLocation 412 0 insert ISGW2Hadronic:WeightLocation 413 0 insert ISGW2Hadronic:WeightLocation 414 0 insert ISGW2Hadronic:WeightLocation 415 0 insert ISGW2Hadronic:WeightLocation 416 0 insert ISGW2Hadronic:WeightLocation 417 0 insert ISGW2Hadronic:WeightLocation 418 0 insert ISGW2Hadronic:WeightLocation 419 0 insert ISGW2Hadronic:WeightLocation 420 0 insert ISGW2Hadronic:WeightLocation 421 0 insert ISGW2Hadronic:WeightLocation 422 0 insert ISGW2Hadronic:WeightLocation 423 0 insert ISGW2Hadronic:WeightLocation 424 0 insert ISGW2Hadronic:WeightLocation 425 0 insert ISGW2Hadronic:WeightLocation 426 0 insert ISGW2Hadronic:WeightLocation 427 0 insert ISGW2Hadronic:WeightLocation 428 0 insert ISGW2Hadronic:WeightLocation 429 0 insert ISGW2Hadronic:WeightLocation 430 0 insert ISGW2Hadronic:WeightLocation 431 0 insert ISGW2Hadronic:WeightLocation 432 0 insert ISGW2Hadronic:WeightLocation 433 0 insert ISGW2Hadronic:WeightLocation 434 0 insert ISGW2Hadronic:WeightLocation 435 0 insert ISGW2Hadronic:WeightLocation 436 0 insert ISGW2Hadronic:WeightLocation 437 0 insert ISGW2Hadronic:WeightLocation 438 0 insert ISGW2Hadronic:WeightLocation 439 0 insert ISGW2Hadronic:WeightLocation 440 0 insert ISGW2Hadronic:WeightLocation 441 0 insert ISGW2Hadronic:WeightLocation 442 0 insert ISGW2Hadronic:WeightLocation 443 0 insert ISGW2Hadronic:WeightLocation 444 0 insert ISGW2Hadronic:WeightLocation 445 0 insert ISGW2Hadronic:WeightLocation 446 0 insert ISGW2Hadronic:WeightLocation 447 0 insert ISGW2Hadronic:WeightLocation 448 0 insert ISGW2Hadronic:WeightLocation 449 0 insert ISGW2Hadronic:WeightLocation 450 0 insert ISGW2Hadronic:WeightLocation 451 0 insert ISGW2Hadronic:WeightLocation 452 0 insert ISGW2Hadronic:WeightLocation 453 0 insert ISGW2Hadronic:WeightLocation 454 0 insert ISGW2Hadronic:WeightLocation 455 0 insert ISGW2Hadronic:WeightLocation 456 0 insert ISGW2Hadronic:WeightLocation 457 0 insert ISGW2Hadronic:WeightLocation 458 0 insert ISGW2Hadronic:WeightLocation 459 0 insert ISGW2Hadronic:WeightLocation 460 0 insert ISGW2Hadronic:WeightLocation 461 0 insert ISGW2Hadronic:WeightLocation 462 0 insert ISGW2Hadronic:WeightLocation 463 0 insert ISGW2Hadronic:WeightLocation 464 0 insert ISGW2Hadronic:WeightLocation 465 0 insert ISGW2Hadronic:WeightLocation 466 0 insert ISGW2Hadronic:WeightLocation 467 0 insert ISGW2Hadronic:WeightLocation 468 0 insert ISGW2Hadronic:WeightLocation 469 0 insert ISGW2Hadronic:WeightLocation 470 0 insert ISGW2Hadronic:WeightLocation 471 0 insert ISGW2Hadronic:WeightLocation 472 0 insert ISGW2Hadronic:WeightLocation 473 0 insert ISGW2Hadronic:WeightLocation 474 0 insert ISGW2Hadronic:WeightLocation 475 0 insert ISGW2Hadronic:WeightLocation 476 0 insert ISGW2Hadronic:WeightLocation 477 0 insert ISGW2Hadronic:WeightLocation 478 0 insert ISGW2Hadronic:WeightLocation 479 0 insert ISGW2Hadronic:WeightLocation 480 0 insert ISGW2Hadronic:WeightLocation 481 0 insert ISGW2Hadronic:WeightLocation 482 0 insert ISGW2Hadronic:WeightLocation 483 0 insert ISGW2Hadronic:WeightLocation 484 0 insert ISGW2Hadronic:WeightLocation 485 0 insert ISGW2Hadronic:WeightLocation 486 0 insert ISGW2Hadronic:WeightLocation 487 0 insert ISGW2Hadronic:WeightLocation 488 0 insert ISGW2Hadronic:WeightLocation 489 0 insert ISGW2Hadronic:WeightLocation 490 0 insert ISGW2Hadronic:WeightLocation 491 0 insert ISGW2Hadronic:WeightLocation 492 0 insert ISGW2Hadronic:WeightLocation 493 0 insert ISGW2Hadronic:WeightLocation 494 0 insert ISGW2Hadronic:WeightLocation 495 0 insert ISGW2Hadronic:WeightLocation 496 0 insert ISGW2Hadronic:WeightLocation 497 0 insert ISGW2Hadronic:WeightLocation 498 0 insert ISGW2Hadronic:WeightLocation 499 0 insert ISGW2Hadronic:WeightLocation 500 0 insert ISGW2Hadronic:WeightLocation 501 0 insert ISGW2Hadronic:WeightLocation 502 0 insert ISGW2Hadronic:WeightLocation 503 0 insert ISGW2Hadronic:WeightLocation 504 0 insert ISGW2Hadronic:WeightLocation 505 0 insert ISGW2Hadronic:WeightLocation 506 0 insert ISGW2Hadronic:WeightLocation 507 0 insert ISGW2Hadronic:WeightLocation 508 0 insert ISGW2Hadronic:WeightLocation 509 0 insert ISGW2Hadronic:WeightLocation 510 0 insert ISGW2Hadronic:WeightLocation 511 0 insert ISGW2Hadronic:WeightLocation 512 0 insert ISGW2Hadronic:WeightLocation 513 0 insert ISGW2Hadronic:WeightLocation 514 0 insert ISGW2Hadronic:WeightLocation 515 0 insert ISGW2Hadronic:WeightLocation 516 0 insert ISGW2Hadronic:WeightLocation 517 0 insert ISGW2Hadronic:WeightLocation 518 0 insert ISGW2Hadronic:WeightLocation 519 0 insert ISGW2Hadronic:WeightLocation 520 0 insert ISGW2Hadronic:WeightLocation 521 0 insert ISGW2Hadronic:WeightLocation 522 0 insert ISGW2Hadronic:WeightLocation 523 0 insert ISGW2Hadronic:WeightLocation 524 0 insert ISGW2Hadronic:WeightLocation 525 0 insert ISGW2Hadronic:WeightLocation 526 0 insert ISGW2Hadronic:WeightLocation 527 0 insert ISGW2Hadronic:WeightLocation 528 0 insert ISGW2Hadronic:WeightLocation 529 0 insert ISGW2Hadronic:WeightLocation 530 0 insert ISGW2Hadronic:WeightLocation 531 0 insert ISGW2Hadronic:WeightLocation 532 0 insert ISGW2Hadronic:WeightLocation 533 0 insert ISGW2Hadronic:WeightLocation 534 0 insert ISGW2Hadronic:WeightLocation 535 0 insert ISGW2Hadronic:WeightLocation 536 0 insert ISGW2Hadronic:WeightLocation 537 0 insert ISGW2Hadronic:WeightLocation 538 0 insert ISGW2Hadronic:WeightLocation 539 0 insert ISGW2Hadronic:WeightLocation 540 0 insert ISGW2Hadronic:WeightLocation 541 0 insert ISGW2Hadronic:WeightLocation 542 0 insert ISGW2Hadronic:WeightLocation 543 0 insert ISGW2Hadronic:WeightLocation 544 0 insert ISGW2Hadronic:WeightLocation 545 0 insert ISGW2Hadronic:WeightLocation 546 0 insert ISGW2Hadronic:WeightLocation 547 0 insert ISGW2Hadronic:WeightLocation 548 0 insert ISGW2Hadronic:WeightLocation 549 0 insert ISGW2Hadronic:WeightLocation 550 0 insert ISGW2Hadronic:WeightLocation 551 0 insert ISGW2Hadronic:WeightLocation 552 0 insert ISGW2Hadronic:WeightLocation 553 0 insert ISGW2Hadronic:WeightLocation 554 0 insert ISGW2Hadronic:WeightLocation 555 0 insert ISGW2Hadronic:WeightLocation 556 0 insert ISGW2Hadronic:WeightLocation 557 0 insert ISGW2Hadronic:WeightLocation 558 0 insert ISGW2Hadronic:WeightLocation 559 0 insert ISGW2Hadronic:WeightLocation 560 0 insert ISGW2Hadronic:WeightLocation 561 0 insert ISGW2Hadronic:WeightLocation 562 0 insert ISGW2Hadronic:WeightLocation 563 0 insert ISGW2Hadronic:WeightLocation 564 0 insert ISGW2Hadronic:WeightLocation 565 0 insert ISGW2Hadronic:WeightLocation 566 0 insert ISGW2Hadronic:WeightLocation 567 0 insert ISGW2Hadronic:WeightLocation 568 0 insert ISGW2Hadronic:WeightLocation 569 0 insert ISGW2Hadronic:WeightLocation 570 0 insert ISGW2Hadronic:WeightLocation 571 0 insert ISGW2Hadronic:WeightLocation 572 0 insert ISGW2Hadronic:WeightLocation 573 0 insert ISGW2Hadronic:WeightLocation 574 0 insert ISGW2Hadronic:WeightLocation 575 0 insert ISGW2Hadronic:WeightLocation 576 0 insert ISGW2Hadronic:WeightLocation 577 0 insert ISGW2Hadronic:WeightLocation 578 0 insert ISGW2Hadronic:WeightLocation 579 0 insert ISGW2Hadronic:WeightLocation 580 0 insert ISGW2Hadronic:WeightLocation 581 0 insert ISGW2Hadronic:WeightLocation 582 0 insert ISGW2Hadronic:WeightLocation 583 0 insert ISGW2Hadronic:WeightLocation 584 0 insert ISGW2Hadronic:WeightLocation 585 0 insert ISGW2Hadronic:WeightLocation 586 0 insert ISGW2Hadronic:WeightLocation 587 0 insert ISGW2Hadronic:WeightLocation 588 0 insert ISGW2Hadronic:WeightLocation 589 0 insert ISGW2Hadronic:WeightLocation 590 0 insert ISGW2Hadronic:WeightLocation 591 0 insert ISGW2Hadronic:WeightLocation 592 0 insert ISGW2Hadronic:WeightLocation 593 0 insert ISGW2Hadronic:WeightLocation 594 0 insert ISGW2Hadronic:WeightLocation 595 0 insert ISGW2Hadronic:WeightLocation 596 0 insert ISGW2Hadronic:WeightLocation 597 0 insert ISGW2Hadronic:WeightLocation 598 0 insert ISGW2Hadronic:WeightLocation 599 0 insert ISGW2Hadronic:WeightLocation 600 0 insert ISGW2Hadronic:WeightLocation 601 0 insert ISGW2Hadronic:WeightLocation 602 0 insert ISGW2Hadronic:WeightLocation 603 0 insert ISGW2Hadronic:WeightLocation 604 0 insert ISGW2Hadronic:WeightLocation 605 0 insert ISGW2Hadronic:WeightLocation 606 0 insert ISGW2Hadronic:WeightLocation 607 0 insert ISGW2Hadronic:WeightLocation 608 0 insert ISGW2Hadronic:WeightLocation 609 0 insert ISGW2Hadronic:WeightLocation 610 0 insert ISGW2Hadronic:WeightLocation 611 0 insert ISGW2Hadronic:WeightLocation 612 0 insert ISGW2Hadronic:WeightLocation 613 0 insert ISGW2Hadronic:WeightLocation 614 0 insert ISGW2Hadronic:WeightLocation 615 0 insert ISGW2Hadronic:WeightLocation 616 0 insert ISGW2Hadronic:WeightLocation 617 0 insert ISGW2Hadronic:WeightLocation 618 0 insert ISGW2Hadronic:WeightLocation 619 0 insert ISGW2Hadronic:WeightLocation 620 0 insert ISGW2Hadronic:WeightLocation 621 0 insert ISGW2Hadronic:WeightLocation 622 0 insert ISGW2Hadronic:WeightLocation 623 0 insert ISGW2Hadronic:WeightLocation 624 0 insert ISGW2Hadronic:WeightLocation 625 0 insert ISGW2Hadronic:WeightLocation 626 0 insert ISGW2Hadronic:WeightLocation 627 0 insert ISGW2Hadronic:WeightLocation 628 0 insert ISGW2Hadronic:WeightLocation 629 0 insert ISGW2Hadronic:WeightLocation 630 0 insert ISGW2Hadronic:WeightLocation 631 0 insert ISGW2Hadronic:WeightLocation 632 0 insert ISGW2Hadronic:WeightLocation 633 0 insert ISGW2Hadronic:WeightLocation 634 0 insert ISGW2Hadronic:WeightLocation 635 0 insert ISGW2Hadronic:WeightLocation 636 0 insert ISGW2Hadronic:WeightLocation 637 0 insert ISGW2Hadronic:WeightLocation 638 0 insert ISGW2Hadronic:WeightLocation 639 0 insert ISGW2Hadronic:WeightLocation 640 0 insert ISGW2Hadronic:WeightLocation 641 0 insert ISGW2Hadronic:WeightLocation 642 0 insert ISGW2Hadronic:WeightLocation 643 0 insert ISGW2Hadronic:WeightLocation 644 0 insert ISGW2Hadronic:WeightLocation 645 0 insert ISGW2Hadronic:WeightLocation 646 0 insert ISGW2Hadronic:WeightLocation 647 0 insert ISGW2Hadronic:WeightLocation 648 0 insert ISGW2Hadronic:WeightLocation 649 0 insert ISGW2Hadronic:WeightLocation 650 0 insert ISGW2Hadronic:WeightLocation 651 0 insert ISGW2Hadronic:WeightLocation 652 0 insert ISGW2Hadronic:WeightLocation 653 0 insert ISGW2Hadronic:WeightLocation 654 0 insert ISGW2Hadronic:WeightLocation 655 0 insert ISGW2Hadronic:WeightLocation 656 0 insert ISGW2Hadronic:WeightLocation 657 0 insert ISGW2Hadronic:WeightLocation 658 0 insert ISGW2Hadronic:WeightLocation 659 0 insert ISGW2Hadronic:WeightLocation 660 0 insert ISGW2Hadronic:WeightLocation 661 0 insert ISGW2Hadronic:WeightLocation 662 0 insert ISGW2Hadronic:WeightLocation 663 0 insert ISGW2Hadronic:WeightLocation 664 0 insert ISGW2Hadronic:WeightLocation 665 0 insert ISGW2Hadronic:WeightLocation 666 0 insert ISGW2Hadronic:WeightLocation 667 0 insert ISGW2Hadronic:WeightLocation 668 0 insert ISGW2Hadronic:WeightLocation 669 0 insert ISGW2Hadronic:WeightLocation 670 0 insert ISGW2Hadronic:WeightLocation 671 0 insert ISGW2Hadronic:WeightLocation 672 0 insert ISGW2Hadronic:WeightLocation 673 0 insert ISGW2Hadronic:WeightLocation 674 0 insert ISGW2Hadronic:WeightLocation 675 0 insert ISGW2Hadronic:WeightLocation 676 0 insert ISGW2Hadronic:WeightLocation 677 0 insert ISGW2Hadronic:WeightLocation 678 0 insert ISGW2Hadronic:WeightLocation 679 0 insert ISGW2Hadronic:WeightLocation 680 0 insert ISGW2Hadronic:WeightLocation 681 0 insert ISGW2Hadronic:WeightLocation 682 0 insert ISGW2Hadronic:WeightLocation 683 0 insert ISGW2Hadronic:WeightLocation 684 0 insert ISGW2Hadronic:WeightLocation 685 0 insert ISGW2Hadronic:WeightLocation 686 0 insert ISGW2Hadronic:WeightLocation 687 0 insert ISGW2Hadronic:WeightLocation 688 0 insert ISGW2Hadronic:WeightLocation 689 0 insert ISGW2Hadronic:WeightLocation 690 0 insert ISGW2Hadronic:WeightLocation 691 0 insert ISGW2Hadronic:WeightLocation 692 0 insert ISGW2Hadronic:WeightLocation 693 0 insert ISGW2Hadronic:WeightLocation 694 0 insert ISGW2Hadronic:WeightLocation 695 0 insert ISGW2Hadronic:WeightLocation 696 0 insert ISGW2Hadronic:WeightLocation 697 0 insert ISGW2Hadronic:WeightLocation 698 0 insert ISGW2Hadronic:WeightLocation 699 0 insert ISGW2Hadronic:WeightLocation 700 0 insert ISGW2Hadronic:WeightLocation 701 0 insert ISGW2Hadronic:WeightLocation 702 0 insert ISGW2Hadronic:WeightLocation 703 0 insert ISGW2Hadronic:WeightLocation 704 0 insert ISGW2Hadronic:WeightLocation 705 0 insert ISGW2Hadronic:WeightLocation 706 0 insert ISGW2Hadronic:WeightLocation 707 0 insert ISGW2Hadronic:WeightLocation 708 0 insert ISGW2Hadronic:WeightLocation 709 0 insert ISGW2Hadronic:WeightLocation 710 0 insert ISGW2Hadronic:WeightLocation 711 0 insert ISGW2Hadronic:WeightLocation 712 0 insert ISGW2Hadronic:WeightLocation 713 0 insert ISGW2Hadronic:WeightLocation 714 0 insert ISGW2Hadronic:WeightLocation 715 0 insert ISGW2Hadronic:WeightLocation 716 0 insert ISGW2Hadronic:WeightLocation 717 0 insert ISGW2Hadronic:WeightLocation 718 0 insert ISGW2Hadronic:WeightLocation 719 0 insert ISGW2Hadronic:WeightLocation 720 0 insert ISGW2Hadronic:WeightLocation 721 0 insert ISGW2Hadronic:WeightLocation 722 0 insert ISGW2Hadronic:WeightLocation 723 0 insert ISGW2Hadronic:WeightLocation 724 0 insert ISGW2Hadronic:WeightLocation 725 0 insert ISGW2Hadronic:WeightLocation 726 0 insert ISGW2Hadronic:WeightLocation 727 0 insert ISGW2Hadronic:WeightLocation 728 0 insert ISGW2Hadronic:WeightLocation 729 0 insert ISGW2Hadronic:WeightLocation 730 0 insert ISGW2Hadronic:WeightLocation 731 0 insert ISGW2Hadronic:WeightLocation 732 0 insert ISGW2Hadronic:WeightLocation 733 0 insert ISGW2Hadronic:WeightLocation 734 0 insert ISGW2Hadronic:WeightLocation 735 0 insert ISGW2Hadronic:WeightLocation 736 0 insert ISGW2Hadronic:WeightLocation 737 0 insert ISGW2Hadronic:WeightLocation 738 0 insert ISGW2Hadronic:WeightLocation 739 0 insert ISGW2Hadronic:WeightLocation 740 0 insert ISGW2Hadronic:WeightLocation 741 0 insert ISGW2Hadronic:WeightLocation 742 0 insert ISGW2Hadronic:WeightLocation 743 0 insert ISGW2Hadronic:WeightLocation 744 0 insert ISGW2Hadronic:WeightLocation 745 0 insert ISGW2Hadronic:WeightLocation 746 0 insert ISGW2Hadronic:WeightLocation 747 0 insert ISGW2Hadronic:WeightLocation 748 0 insert ISGW2Hadronic:WeightLocation 749 0 insert ISGW2Hadronic:WeightLocation 750 0 insert ISGW2Hadronic:WeightLocation 751 0 insert ISGW2Hadronic:WeightLocation 752 0 insert ISGW2Hadronic:WeightLocation 753 0 insert ISGW2Hadronic:WeightLocation 754 0 insert ISGW2Hadronic:WeightLocation 755 0 insert ISGW2Hadronic:WeightLocation 756 0 insert ISGW2Hadronic:WeightLocation 757 0 insert ISGW2Hadronic:WeightLocation 758 0 insert ISGW2Hadronic:WeightLocation 759 0 insert ISGW2Hadronic:WeightLocation 760 0 insert ISGW2Hadronic:WeightLocation 761 0 insert ISGW2Hadronic:WeightLocation 762 0 insert ISGW2Hadronic:WeightLocation 763 0 insert ISGW2Hadronic:WeightLocation 764 0 insert ISGW2Hadronic:WeightLocation 765 0 insert ISGW2Hadronic:WeightLocation 766 0 insert ISGW2Hadronic:WeightLocation 767 0 insert ISGW2Hadronic:WeightLocation 768 0 insert ISGW2Hadronic:WeightLocation 769 0 insert ISGW2Hadronic:WeightLocation 770 0 insert ISGW2Hadronic:WeightLocation 771 0 insert ISGW2Hadronic:WeightLocation 772 0 insert ISGW2Hadronic:WeightLocation 773 0 insert ISGW2Hadronic:WeightLocation 774 0 insert ISGW2Hadronic:WeightLocation 775 0 insert ISGW2Hadronic:WeightLocation 776 0 insert ISGW2Hadronic:WeightLocation 777 0 insert ISGW2Hadronic:WeightLocation 778 0 insert ISGW2Hadronic:WeightLocation 779 0 insert ISGW2Hadronic:WeightLocation 780 0 insert ISGW2Hadronic:WeightLocation 781 0 insert ISGW2Hadronic:WeightLocation 782 0 insert ISGW2Hadronic:WeightLocation 783 0 insert ISGW2Hadronic:WeightLocation 784 0 insert ISGW2Hadronic:WeightLocation 785 0 insert ISGW2Hadronic:WeightLocation 786 0 insert ISGW2Hadronic:WeightLocation 787 0 insert ISGW2Hadronic:WeightLocation 788 0 insert ISGW2Hadronic:WeightLocation 789 0 insert ISGW2Hadronic:WeightLocation 790 0 insert ISGW2Hadronic:WeightLocation 791 0 insert ISGW2Hadronic:WeightLocation 792 0 insert ISGW2Hadronic:WeightLocation 793 0 insert ISGW2Hadronic:WeightLocation 794 0 insert ISGW2Hadronic:WeightLocation 795 0 insert ISGW2Hadronic:WeightLocation 796 0 insert ISGW2Hadronic:WeightLocation 797 0 insert ISGW2Hadronic:WeightLocation 798 0 insert ISGW2Hadronic:WeightLocation 799 0 insert ISGW2Hadronic:WeightLocation 800 0 insert ISGW2Hadronic:WeightLocation 801 0 insert ISGW2Hadronic:WeightLocation 802 0 insert ISGW2Hadronic:WeightLocation 803 0 insert ISGW2Hadronic:WeightLocation 804 0 insert ISGW2Hadronic:WeightLocation 805 0 insert ISGW2Hadronic:WeightLocation 806 0 insert ISGW2Hadronic:WeightLocation 807 0 insert ISGW2Hadronic:WeightLocation 808 0 insert ISGW2Hadronic:WeightLocation 809 0 insert ISGW2Hadronic:WeightLocation 810 0 insert ISGW2Hadronic:WeightLocation 811 0 insert ISGW2Hadronic:WeightLocation 812 0 insert ISGW2Hadronic:WeightLocation 813 0 insert ISGW2Hadronic:WeightLocation 814 0 insert ISGW2Hadronic:WeightLocation 815 0 insert ISGW2Hadronic:WeightLocation 816 0 insert ISGW2Hadronic:WeightLocation 817 0 insert ISGW2Hadronic:WeightLocation 818 0 insert ISGW2Hadronic:WeightLocation 819 0 insert ISGW2Hadronic:WeightLocation 820 0 insert ISGW2Hadronic:WeightLocation 821 0 insert ISGW2Hadronic:WeightLocation 822 0 insert ISGW2Hadronic:WeightLocation 823 0 insert ISGW2Hadronic:WeightLocation 824 0 insert ISGW2Hadronic:WeightLocation 825 0 insert ISGW2Hadronic:WeightLocation 826 0 insert ISGW2Hadronic:WeightLocation 827 0 insert ISGW2Hadronic:WeightLocation 828 0 insert ISGW2Hadronic:WeightLocation 829 0 insert ISGW2Hadronic:WeightLocation 830 0 insert ISGW2Hadronic:WeightLocation 831 0 insert ISGW2Hadronic:WeightLocation 832 0 insert ISGW2Hadronic:WeightLocation 833 0 insert ISGW2Hadronic:WeightLocation 834 0 insert ISGW2Hadronic:WeightLocation 835 0 insert ISGW2Hadronic:WeightLocation 836 0 insert ISGW2Hadronic:WeightLocation 837 0 insert ISGW2Hadronic:WeightLocation 838 0 insert ISGW2Hadronic:WeightLocation 839 0 insert ISGW2Hadronic:WeightLocation 840 0 insert ISGW2Hadronic:WeightLocation 841 0 insert ISGW2Hadronic:WeightLocation 842 0 insert ISGW2Hadronic:WeightLocation 843 0 insert ISGW2Hadronic:WeightLocation 844 0 insert ISGW2Hadronic:WeightLocation 845 0 insert ISGW2Hadronic:WeightLocation 846 0 insert ISGW2Hadronic:WeightLocation 847 0 insert ISGW2Hadronic:WeightLocation 848 0 insert ISGW2Hadronic:WeightLocation 849 0 insert ISGW2Hadronic:WeightLocation 850 0 insert ISGW2Hadronic:WeightLocation 851 0 insert ISGW2Hadronic:WeightLocation 852 0 insert ISGW2Hadronic:WeightLocation 853 0 insert ISGW2Hadronic:WeightLocation 854 0 insert ISGW2Hadronic:WeightLocation 855 0 insert ISGW2Hadronic:WeightLocation 856 0 insert ISGW2Hadronic:WeightLocation 857 0 insert ISGW2Hadronic:WeightLocation 858 0 insert ISGW2Hadronic:WeightLocation 859 0 insert ISGW2Hadronic:WeightLocation 860 0 insert ISGW2Hadronic:WeightLocation 861 0 insert ISGW2Hadronic:WeightLocation 862 0 insert ISGW2Hadronic:WeightLocation 863 0 insert ISGW2Hadronic:WeightLocation 864 0 insert ISGW2Hadronic:WeightLocation 865 0 insert ISGW2Hadronic:WeightLocation 866 0 insert ISGW2Hadronic:WeightLocation 867 0 insert ISGW2Hadronic:WeightLocation 868 0 insert ISGW2Hadronic:WeightLocation 869 0 insert ISGW2Hadronic:WeightLocation 870 0 insert ISGW2Hadronic:WeightLocation 871 0 insert ISGW2Hadronic:WeightLocation 872 0 insert ISGW2Hadronic:WeightLocation 873 0 insert ISGW2Hadronic:WeightLocation 874 0 insert ISGW2Hadronic:WeightLocation 875 0 insert ISGW2Hadronic:WeightLocation 876 0 insert ISGW2Hadronic:WeightLocation 877 0 insert ISGW2Hadronic:WeightLocation 878 0 insert ISGW2Hadronic:WeightLocation 879 0 insert ISGW2Hadronic:WeightLocation 880 0 insert ISGW2Hadronic:WeightLocation 881 0 insert ISGW2Hadronic:WeightLocation 882 0 insert ISGW2Hadronic:WeightLocation 883 0 insert ISGW2Hadronic:WeightLocation 884 0 insert ISGW2Hadronic:WeightLocation 885 0 insert ISGW2Hadronic:WeightLocation 886 0 insert ISGW2Hadronic:WeightLocation 887 0 insert ISGW2Hadronic:WeightLocation 888 0 insert ISGW2Hadronic:WeightLocation 889 0 insert ISGW2Hadronic:WeightLocation 890 0 insert ISGW2Hadronic:WeightLocation 891 0 insert ISGW2Hadronic:WeightLocation 892 0 insert ISGW2Hadronic:WeightLocation 893 0 insert ISGW2Hadronic:WeightLocation 894 0 insert ISGW2Hadronic:WeightLocation 895 0 insert ISGW2Hadronic:WeightLocation 896 0 insert ISGW2Hadronic:WeightLocation 897 0 insert ISGW2Hadronic:WeightLocation 898 0 insert ISGW2Hadronic:WeightLocation 899 0 insert ISGW2Hadronic:WeightLocation 900 0 insert ISGW2Hadronic:WeightLocation 901 0 insert ISGW2Hadronic:WeightLocation 902 0 insert ISGW2Hadronic:WeightLocation 903 0 insert ISGW2Hadronic:WeightLocation 904 0 insert ISGW2Hadronic:WeightLocation 905 0 insert ISGW2Hadronic:WeightLocation 906 0 insert ISGW2Hadronic:WeightLocation 907 0 insert ISGW2Hadronic:WeightLocation 908 0 insert ISGW2Hadronic:WeightLocation 909 0 insert ISGW2Hadronic:WeightLocation 910 0 insert ISGW2Hadronic:WeightLocation 911 0 insert ISGW2Hadronic:WeightLocation 912 0 insert ISGW2Hadronic:WeightLocation 913 0 insert ISGW2Hadronic:WeightLocation 914 0 insert ISGW2Hadronic:WeightLocation 915 0 insert ISGW2Hadronic:WeightLocation 916 0 insert ISGW2Hadronic:WeightLocation 917 0 insert ISGW2Hadronic:WeightLocation 918 0 insert ISGW2Hadronic:WeightLocation 919 0 insert ISGW2Hadronic:WeightLocation 920 0 insert ISGW2Hadronic:WeightLocation 921 0 insert ISGW2Hadronic:WeightLocation 922 0 insert ISGW2Hadronic:WeightLocation 923 0 insert ISGW2Hadronic:WeightLocation 924 0 insert ISGW2Hadronic:WeightLocation 925 0 insert ISGW2Hadronic:WeightLocation 926 0 insert ISGW2Hadronic:WeightLocation 927 0 insert ISGW2Hadronic:WeightLocation 928 0 insert ISGW2Hadronic:WeightLocation 929 0 insert ISGW2Hadronic:WeightLocation 930 0 insert ISGW2Hadronic:WeightLocation 931 0 insert ISGW2Hadronic:WeightLocation 932 0 insert ISGW2Hadronic:WeightLocation 933 0 insert ISGW2Hadronic:WeightLocation 934 0 insert ISGW2Hadronic:WeightLocation 935 0 insert ISGW2Hadronic:WeightLocation 936 0 insert ISGW2Hadronic:WeightLocation 937 0 insert ISGW2Hadronic:WeightLocation 938 0 insert ISGW2Hadronic:WeightLocation 939 0 insert ISGW2Hadronic:WeightLocation 940 0 insert ISGW2Hadronic:WeightLocation 941 0 insert ISGW2Hadronic:WeightLocation 942 0 insert ISGW2Hadronic:WeightLocation 943 0 insert ISGW2Hadronic:WeightLocation 944 0 insert ISGW2Hadronic:WeightLocation 945 0 insert ISGW2Hadronic:WeightLocation 946 0 insert ISGW2Hadronic:WeightLocation 947 0 insert ISGW2Hadronic:WeightLocation 948 0 insert ISGW2Hadronic:WeightLocation 949 0 insert ISGW2Hadronic:WeightLocation 950 0 insert ISGW2Hadronic:WeightLocation 951 0 insert ISGW2Hadronic:WeightLocation 952 0 insert ISGW2Hadronic:WeightLocation 953 0 insert ISGW2Hadronic:WeightLocation 954 0 insert ISGW2Hadronic:WeightLocation 955 0 insert ISGW2Hadronic:WeightLocation 956 0 insert ISGW2Hadronic:WeightLocation 957 0 insert ISGW2Hadronic:WeightLocation 958 0 insert ISGW2Hadronic:WeightLocation 959 0 insert ISGW2Hadronic:WeightLocation 960 0 insert ISGW2Hadronic:WeightLocation 961 0 insert ISGW2Hadronic:WeightLocation 962 0 insert ISGW2Hadronic:WeightLocation 963 0 insert ISGW2Hadronic:WeightLocation 964 0 insert ISGW2Hadronic:WeightLocation 965 0 insert ISGW2Hadronic:WeightLocation 966 0 insert ISGW2Hadronic:WeightLocation 967 0 insert ISGW2Hadronic:WeightLocation 968 0 insert ISGW2Hadronic:WeightLocation 969 0 insert ISGW2Hadronic:WeightLocation 970 0 insert ISGW2Hadronic:WeightLocation 971 0 insert ISGW2Hadronic:WeightLocation 972 0 insert ISGW2Hadronic:WeightLocation 973 0 insert ISGW2Hadronic:WeightLocation 974 0 insert ISGW2Hadronic:WeightLocation 975 0 insert ISGW2Hadronic:WeightLocation 976 0 insert ISGW2Hadronic:WeightLocation 977 0 insert ISGW2Hadronic:WeightLocation 978 0 insert ISGW2Hadronic:WeightLocation 979 0 insert ISGW2Hadronic:WeightLocation 980 0 insert ISGW2Hadronic:WeightLocation 981 0 insert ISGW2Hadronic:WeightLocation 982 0 insert ISGW2Hadronic:WeightLocation 983 0 insert ISGW2Hadronic:WeightLocation 984 0 insert ISGW2Hadronic:WeightLocation 985 0 insert ISGW2Hadronic:WeightLocation 986 0 insert ISGW2Hadronic:WeightLocation 987 0 insert ISGW2Hadronic:WeightLocation 988 0 insert ISGW2Hadronic:WeightLocation 989 0 insert ISGW2Hadronic:WeightLocation 990 0 insert ISGW2Hadronic:WeightLocation 991 0 insert ISGW2Hadronic:WeightLocation 992 0 insert ISGW2Hadronic:WeightLocation 993 0 insert ISGW2Hadronic:WeightLocation 994 0 insert ISGW2Hadronic:WeightLocation 995 0 insert ISGW2Hadronic:WeightLocation 996 0 insert ISGW2Hadronic:WeightLocation 997 0 insert ISGW2Hadronic:WeightLocation 998 0 insert ISGW2Hadronic:WeightLocation 999 0 insert ISGW2Hadronic:WeightLocation 1000 0 insert ISGW2Hadronic:WeightLocation 1001 0 insert ISGW2Hadronic:WeightLocation 1002 0 insert ISGW2Hadronic:WeightLocation 1003 0 insert ISGW2Hadronic:WeightLocation 1004 0 insert ISGW2Hadronic:WeightLocation 1005 0 insert ISGW2Hadronic:WeightLocation 1006 0 insert ISGW2Hadronic:WeightLocation 1007 0 insert ISGW2Hadronic:WeightLocation 1008 0 insert ISGW2Hadronic:WeightLocation 1009 0 insert ISGW2Hadronic:WeightLocation 1010 0 insert ISGW2Hadronic:WeightLocation 1011 0 insert ISGW2Hadronic:WeightLocation 1012 0 insert ISGW2Hadronic:WeightLocation 1013 0 insert ISGW2Hadronic:WeightLocation 1014 0 insert ISGW2Hadronic:WeightLocation 1015 0 insert ISGW2Hadronic:WeightLocation 1016 0 insert ISGW2Hadronic:WeightLocation 1017 0 insert ISGW2Hadronic:WeightLocation 1018 0 insert ISGW2Hadronic:WeightLocation 1019 0 insert ISGW2Hadronic:WeightLocation 1020 0 insert ISGW2Hadronic:WeightLocation 1021 0 insert ISGW2Hadronic:WeightLocation 1022 0 insert ISGW2Hadronic:WeightLocation 1023 0 insert ISGW2Hadronic:WeightLocation 1024 0 insert ISGW2Hadronic:WeightLocation 1025 0 insert ISGW2Hadronic:WeightLocation 1026 0 insert ISGW2Hadronic:WeightLocation 1027 0 insert ISGW2Hadronic:WeightLocation 1028 0 insert ISGW2Hadronic:WeightLocation 1029 0 insert ISGW2Hadronic:WeightLocation 1030 0 insert ISGW2Hadronic:WeightLocation 1031 0 insert ISGW2Hadronic:WeightLocation 1032 0 insert ISGW2Hadronic:WeightLocation 1033 0 insert ISGW2Hadronic:WeightLocation 1034 0 insert ISGW2Hadronic:WeightLocation 1035 0 insert ISGW2Hadronic:WeightLocation 1036 0 insert ISGW2Hadronic:WeightLocation 1037 0 insert ISGW2Hadronic:WeightLocation 1038 0 insert ISGW2Hadronic:WeightLocation 1039 0 insert ISGW2Hadronic:WeightLocation 1040 0 insert ISGW2Hadronic:WeightLocation 1041 0 insert ISGW2Hadronic:WeightLocation 1042 0 insert ISGW2Hadronic:WeightLocation 1043 0 insert ISGW2Hadronic:WeightLocation 1044 0 insert ISGW2Hadronic:WeightLocation 1045 0 insert ISGW2Hadronic:WeightLocation 1046 0 insert ISGW2Hadronic:WeightLocation 1047 0 insert ISGW2Hadronic:WeightLocation 1048 0 insert ISGW2Hadronic:WeightLocation 1049 0 insert ISGW2Hadronic:WeightLocation 1050 0 insert ISGW2Hadronic:WeightLocation 1051 0 insert ISGW2Hadronic:WeightLocation 1052 0 insert ISGW2Hadronic:WeightLocation 1053 0 insert ISGW2Hadronic:WeightLocation 1054 0 insert ISGW2Hadronic:WeightLocation 1055 0 insert ISGW2Hadronic:WeightLocation 1056 0 insert ISGW2Hadronic:WeightLocation 1057 0 insert ISGW2Hadronic:WeightLocation 1058 0 insert ISGW2Hadronic:WeightLocation 1059 0 insert ISGW2Hadronic:WeightLocation 1060 0 insert ISGW2Hadronic:WeightLocation 1061 0 insert ISGW2Hadronic:WeightLocation 1062 0 insert ISGW2Hadronic:WeightLocation 1063 0 insert ISGW2Hadronic:WeightLocation 1064 0 insert ISGW2Hadronic:WeightLocation 1065 0 insert ISGW2Hadronic:WeightLocation 1066 0 insert ISGW2Hadronic:WeightLocation 1067 0 insert ISGW2Hadronic:WeightLocation 1068 0 insert ISGW2Hadronic:WeightLocation 1069 0 insert ISGW2Hadronic:WeightLocation 1070 0 insert ISGW2Hadronic:WeightLocation 1071 0 insert ISGW2Hadronic:WeightLocation 1072 0 insert ISGW2Hadronic:WeightLocation 1073 0 insert ISGW2Hadronic:WeightLocation 1074 0 insert ISGW2Hadronic:WeightLocation 1075 0 insert ISGW2Hadronic:WeightLocation 1076 0 insert ISGW2Hadronic:WeightLocation 1077 0 insert ISGW2Hadronic:WeightLocation 1078 0 insert ISGW2Hadronic:WeightLocation 1079 0 insert ISGW2Hadronic:WeightLocation 1080 0 insert ISGW2Hadronic:WeightLocation 1081 0 insert ISGW2Hadronic:WeightLocation 1082 0 insert ISGW2Hadronic:WeightLocation 1083 0 insert ISGW2Hadronic:WeightLocation 1084 0 insert ISGW2Hadronic:WeightLocation 1085 0 insert ISGW2Hadronic:WeightLocation 1086 0 insert ISGW2Hadronic:WeightLocation 1087 0 insert ISGW2Hadronic:WeightLocation 1088 0 insert ISGW2Hadronic:WeightLocation 1089 0 insert ISGW2Hadronic:WeightLocation 1090 0 insert ISGW2Hadronic:WeightLocation 1091 0 insert ISGW2Hadronic:WeightLocation 1092 0 insert ISGW2Hadronic:WeightLocation 1093 0 insert ISGW2Hadronic:WeightLocation 1094 0 insert ISGW2Hadronic:WeightLocation 1095 0 insert ISGW2Hadronic:WeightLocation 1096 0 insert ISGW2Hadronic:WeightLocation 1097 0 insert ISGW2Hadronic:WeightLocation 1098 0 insert ISGW2Hadronic:WeightLocation 1099 0 insert ISGW2Hadronic:WeightLocation 1100 0 insert ISGW2Hadronic:WeightLocation 1101 0 insert ISGW2Hadronic:WeightLocation 1102 0 insert ISGW2Hadronic:WeightLocation 1103 0 insert ISGW2Hadronic:WeightLocation 1104 0 insert ISGW2Hadronic:WeightLocation 1105 0 insert ISGW2Hadronic:WeightLocation 1106 0 insert ISGW2Hadronic:WeightLocation 1107 0 insert ISGW2Hadronic:WeightLocation 1108 0 insert ISGW2Hadronic:WeightLocation 1109 0 insert ISGW2Hadronic:WeightLocation 1110 0 insert ISGW2Hadronic:WeightLocation 1111 0 insert ISGW2Hadronic:WeightLocation 1112 0 insert ISGW2Hadronic:WeightLocation 1113 0 insert ISGW2Hadronic:WeightLocation 1114 0 insert ISGW2Hadronic:WeightLocation 1115 0 insert ISGW2Hadronic:WeightLocation 1116 0 insert ISGW2Hadronic:WeightLocation 1117 0 insert ISGW2Hadronic:WeightLocation 1118 0 insert ISGW2Hadronic:WeightLocation 1119 0 insert ISGW2Hadronic:WeightLocation 1120 0 insert ISGW2Hadronic:WeightLocation 1121 0 insert ISGW2Hadronic:WeightLocation 1122 0 insert ISGW2Hadronic:WeightLocation 1123 0 insert ISGW2Hadronic:WeightLocation 1124 0 insert ISGW2Hadronic:WeightLocation 1125 0 insert ISGW2Hadronic:WeightLocation 1126 0 insert ISGW2Hadronic:WeightLocation 1127 0 insert ISGW2Hadronic:WeightLocation 1128 0 insert ISGW2Hadronic:WeightLocation 1129 0 insert ISGW2Hadronic:WeightLocation 1130 0 insert ISGW2Hadronic:WeightLocation 1131 0 insert ISGW2Hadronic:WeightLocation 1132 0 insert ISGW2Hadronic:WeightLocation 1133 0 insert ISGW2Hadronic:WeightLocation 1134 0 insert ISGW2Hadronic:WeightLocation 1135 0 insert ISGW2Hadronic:WeightLocation 1136 0 insert ISGW2Hadronic:WeightLocation 1137 0 insert ISGW2Hadronic:WeightLocation 1138 0 insert ISGW2Hadronic:WeightLocation 1139 0 insert ISGW2Hadronic:WeightLocation 1140 0 insert ISGW2Hadronic:WeightLocation 1141 0 insert ISGW2Hadronic:WeightLocation 1142 0 insert ISGW2Hadronic:WeightLocation 1143 0 insert ISGW2Hadronic:WeightLocation 1144 0 insert ISGW2Hadronic:WeightLocation 1145 0 insert ISGW2Hadronic:WeightLocation 1146 0 insert ISGW2Hadronic:WeightLocation 1147 0 insert ISGW2Hadronic:WeightLocation 1148 0 insert ISGW2Hadronic:WeightLocation 1149 0 insert ISGW2Hadronic:WeightLocation 1150 0 insert ISGW2Hadronic:WeightLocation 1151 0 insert ISGW2Hadronic:WeightLocation 1152 0 insert ISGW2Hadronic:WeightLocation 1153 0 insert ISGW2Hadronic:WeightLocation 1154 0 insert ISGW2Hadronic:WeightLocation 1155 0 insert ISGW2Hadronic:WeightLocation 1156 0 insert ISGW2Hadronic:WeightLocation 1157 0 insert ISGW2Hadronic:WeightLocation 1158 0 insert ISGW2Hadronic:WeightLocation 1159 0 insert ISGW2Hadronic:WeightLocation 1160 0 insert ISGW2Hadronic:WeightLocation 1161 0 insert ISGW2Hadronic:WeightLocation 1162 0 insert ISGW2Hadronic:WeightLocation 1163 0 insert ISGW2Hadronic:WeightLocation 1164 0 insert ISGW2Hadronic:WeightLocation 1165 0 insert ISGW2Hadronic:WeightLocation 1166 0 insert ISGW2Hadronic:WeightLocation 1167 0 insert ISGW2Hadronic:WeightLocation 1168 0 insert ISGW2Hadronic:WeightLocation 1169 0 insert ISGW2Hadronic:WeightLocation 1170 0 insert ISGW2Hadronic:WeightLocation 1171 0 insert ISGW2Hadronic:WeightLocation 1172 0 insert ISGW2Hadronic:WeightLocation 1173 0 insert ISGW2Hadronic:WeightLocation 1174 0 insert ISGW2Hadronic:WeightLocation 1175 0 insert ISGW2Hadronic:WeightLocation 1176 0 insert ISGW2Hadronic:WeightLocation 1177 0 insert ISGW2Hadronic:WeightLocation 1178 0 insert ISGW2Hadronic:WeightLocation 1179 0 insert ISGW2Hadronic:WeightLocation 1180 0 insert ISGW2Hadronic:WeightLocation 1181 0 insert ISGW2Hadronic:WeightLocation 1182 0 insert ISGW2Hadronic:WeightLocation 1183 0 insert ISGW2Hadronic:WeightLocation 1184 0 insert ISGW2Hadronic:WeightLocation 1185 0 insert ISGW2Hadronic:WeightLocation 1186 0 insert ISGW2Hadronic:WeightLocation 1187 0 insert ISGW2Hadronic:WeightLocation 1188 0 insert ISGW2Hadronic:WeightLocation 1189 0 insert ISGW2Hadronic:WeightLocation 1190 0 insert ISGW2Hadronic:WeightLocation 1191 0 insert ISGW2Hadronic:WeightLocation 1192 0 insert ISGW2Hadronic:WeightLocation 1193 0 insert ISGW2Hadronic:WeightLocation 1194 0 insert ISGW2Hadronic:WeightLocation 1195 0 insert ISGW2Hadronic:WeightLocation 1196 0 insert ISGW2Hadronic:WeightLocation 1197 0 insert ISGW2Hadronic:WeightLocation 1198 0 insert ISGW2Hadronic:WeightLocation 1199 0 insert ISGW2Hadronic:WeightLocation 1200 0 insert ISGW2Hadronic:WeightLocation 1201 0 insert ISGW2Hadronic:WeightLocation 1202 0 insert ISGW2Hadronic:WeightLocation 1203 0 insert ISGW2Hadronic:WeightLocation 1204 0 insert ISGW2Hadronic:WeightLocation 1205 0 insert ISGW2Hadronic:WeightLocation 1206 0 insert ISGW2Hadronic:WeightLocation 1207 0 insert ISGW2Hadronic:WeightLocation 1208 0 insert ISGW2Hadronic:WeightLocation 1209 0 insert ISGW2Hadronic:WeightLocation 1210 0 insert ISGW2Hadronic:WeightLocation 1211 0 insert ISGW2Hadronic:WeightLocation 1212 0 insert ISGW2Hadronic:WeightLocation 1213 0 insert ISGW2Hadronic:WeightLocation 1214 0 insert ISGW2Hadronic:WeightLocation 1215 0 insert ISGW2Hadronic:WeightLocation 1216 0 insert ISGW2Hadronic:WeightLocation 1217 0 insert ISGW2Hadronic:WeightLocation 1218 0 insert ISGW2Hadronic:WeightLocation 1219 0 insert ISGW2Hadronic:WeightLocation 1220 0 insert ISGW2Hadronic:WeightLocation 1221 0 insert ISGW2Hadronic:WeightLocation 1222 0 insert ISGW2Hadronic:WeightLocation 1223 0 insert ISGW2Hadronic:WeightLocation 1224 0 insert ISGW2Hadronic:WeightLocation 1225 0 insert ISGW2Hadronic:WeightLocation 1226 0 insert ISGW2Hadronic:WeightLocation 1227 0 insert ISGW2Hadronic:WeightLocation 1228 0 insert ISGW2Hadronic:WeightLocation 1229 0 insert ISGW2Hadronic:WeightLocation 1230 0 insert ISGW2Hadronic:WeightLocation 1231 0 insert ISGW2Hadronic:WeightLocation 1232 0 insert ISGW2Hadronic:WeightLocation 1233 0 insert ISGW2Hadronic:WeightLocation 1234 0 insert ISGW2Hadronic:WeightLocation 1235 0 insert ISGW2Hadronic:WeightLocation 1236 0 insert ISGW2Hadronic:WeightLocation 1237 0 insert ISGW2Hadronic:WeightLocation 1238 0 insert ISGW2Hadronic:WeightLocation 1239 0 insert ISGW2Hadronic:WeightLocation 1240 0 insert ISGW2Hadronic:WeightLocation 1241 0 insert ISGW2Hadronic:WeightLocation 1242 0 insert ISGW2Hadronic:WeightLocation 1243 0 insert ISGW2Hadronic:WeightLocation 1244 0 insert ISGW2Hadronic:WeightLocation 1245 0 insert ISGW2Hadronic:WeightLocation 1246 0 insert ISGW2Hadronic:WeightLocation 1247 0 insert ISGW2Hadronic:WeightLocation 1248 0 insert ISGW2Hadronic:WeightLocation 1249 0 insert ISGW2Hadronic:WeightLocation 1250 0 insert ISGW2Hadronic:WeightLocation 1251 0 insert ISGW2Hadronic:WeightLocation 1252 0 insert ISGW2Hadronic:WeightLocation 1253 0 insert ISGW2Hadronic:WeightLocation 1254 0 insert ISGW2Hadronic:WeightLocation 1255 0 insert ISGW2Hadronic:WeightLocation 1256 0 insert ISGW2Hadronic:WeightLocation 1257 0 insert ISGW2Hadronic:WeightLocation 1258 0 insert ISGW2Hadronic:WeightLocation 1259 0 insert ISGW2Hadronic:WeightLocation 1260 0 insert ISGW2Hadronic:WeightLocation 1261 0 insert ISGW2Hadronic:WeightLocation 1262 0 insert ISGW2Hadronic:WeightLocation 1263 0 insert ISGW2Hadronic:WeightLocation 1264 0 insert ISGW2Hadronic:WeightLocation 1265 0 insert ISGW2Hadronic:WeightLocation 1266 0 insert ISGW2Hadronic:WeightLocation 1267 0 insert ISGW2Hadronic:WeightLocation 1268 0 insert ISGW2Hadronic:WeightLocation 1269 0 insert ISGW2Hadronic:WeightLocation 1270 0 insert ISGW2Hadronic:WeightLocation 1271 0 insert ISGW2Hadronic:WeightLocation 1272 0 insert ISGW2Hadronic:WeightLocation 1273 0 insert ISGW2Hadronic:WeightLocation 1274 0 insert ISGW2Hadronic:WeightLocation 1275 0 insert ISGW2Hadronic:WeightLocation 1276 0 insert ISGW2Hadronic:WeightLocation 1277 0 insert ISGW2Hadronic:WeightLocation 1278 0 insert ISGW2Hadronic:WeightLocation 1279 0 insert ISGW2Hadronic:WeightLocation 1280 0 insert ISGW2Hadronic:WeightLocation 1281 0 insert ISGW2Hadronic:WeightLocation 1282 0 insert ISGW2Hadronic:WeightLocation 1283 0 insert ISGW2Hadronic:WeightLocation 1284 0 insert ISGW2Hadronic:WeightLocation 1285 0 insert ISGW2Hadronic:WeightLocation 1286 0 insert ISGW2Hadronic:WeightLocation 1287 0 insert ISGW2Hadronic:WeightLocation 1288 0 insert ISGW2Hadronic:WeightLocation 1289 0 insert ISGW2Hadronic:WeightLocation 1290 0 insert ISGW2Hadronic:WeightLocation 1291 0 insert ISGW2Hadronic:WeightLocation 1292 0 insert ISGW2Hadronic:WeightLocation 1293 0 insert ISGW2Hadronic:WeightLocation 1294 0 insert ISGW2Hadronic:WeightLocation 1295 0 insert ISGW2Hadronic:WeightLocation 1296 0 insert ISGW2Hadronic:WeightLocation 1297 0 insert ISGW2Hadronic:WeightLocation 1298 0 insert ISGW2Hadronic:WeightLocation 1299 0 insert ISGW2Hadronic:WeightLocation 1300 0 insert ISGW2Hadronic:WeightLocation 1301 0 insert ISGW2Hadronic:WeightLocation 1302 0 insert ISGW2Hadronic:WeightLocation 1303 0 insert ISGW2Hadronic:WeightLocation 1304 0 insert ISGW2Hadronic:WeightLocation 1305 0 insert ISGW2Hadronic:WeightLocation 1306 0 insert ISGW2Hadronic:WeightLocation 1307 0 insert ISGW2Hadronic:WeightLocation 1308 0 insert ISGW2Hadronic:WeightLocation 1309 0 insert ISGW2Hadronic:WeightLocation 1310 0 insert ISGW2Hadronic:WeightLocation 1311 0 insert ISGW2Hadronic:WeightLocation 1312 0 insert ISGW2Hadronic:WeightLocation 1313 0 insert ISGW2Hadronic:WeightLocation 1314 0 insert ISGW2Hadronic:WeightLocation 1315 0 insert ISGW2Hadronic:WeightLocation 1316 0 insert ISGW2Hadronic:WeightLocation 1317 0 insert ISGW2Hadronic:WeightLocation 1318 0 insert ISGW2Hadronic:WeightLocation 1319 0 insert ISGW2Hadronic:WeightLocation 1320 0 insert ISGW2Hadronic:WeightLocation 1321 0 insert ISGW2Hadronic:WeightLocation 1322 0 insert ISGW2Hadronic:WeightLocation 1323 0 insert ISGW2Hadronic:WeightLocation 1324 0 insert ISGW2Hadronic:WeightLocation 1325 0 insert ISGW2Hadronic:WeightLocation 1326 0 insert ISGW2Hadronic:WeightLocation 1327 0 insert ISGW2Hadronic:WeightLocation 1328 0 insert ISGW2Hadronic:WeightLocation 1329 0 insert ISGW2Hadronic:WeightLocation 1330 0 insert ISGW2Hadronic:WeightLocation 1331 0 insert ISGW2Hadronic:WeightLocation 1332 0 insert ISGW2Hadronic:WeightLocation 1333 0 insert ISGW2Hadronic:WeightLocation 1334 0 insert ISGW2Hadronic:WeightLocation 1335 0 insert ISGW2Hadronic:WeightLocation 1336 0 insert ISGW2Hadronic:WeightLocation 1337 0 insert ISGW2Hadronic:WeightLocation 1338 0 insert ISGW2Hadronic:WeightLocation 1339 0 insert ISGW2Hadronic:WeightLocation 1340 0 insert ISGW2Hadronic:WeightLocation 1341 0 insert ISGW2Hadronic:WeightLocation 1342 0 insert ISGW2Hadronic:WeightLocation 1343 0 insert ISGW2Hadronic:WeightLocation 1344 0 insert ISGW2Hadronic:WeightLocation 1345 0 insert ISGW2Hadronic:WeightLocation 1346 0 insert ISGW2Hadronic:WeightLocation 1347 0 insert ISGW2Hadronic:WeightLocation 1348 0 insert ISGW2Hadronic:WeightLocation 1349 0 insert ISGW2Hadronic:WeightLocation 1350 0 insert ISGW2Hadronic:WeightLocation 1351 0 insert ISGW2Hadronic:WeightLocation 1352 0 insert ISGW2Hadronic:WeightLocation 1353 0 insert ISGW2Hadronic:WeightLocation 1354 0 insert ISGW2Hadronic:WeightLocation 1355 0 insert ISGW2Hadronic:WeightLocation 1356 0 insert ISGW2Hadronic:WeightLocation 1357 0 insert ISGW2Hadronic:WeightLocation 1358 0 insert ISGW2Hadronic:WeightLocation 1359 0 insert ISGW2Hadronic:WeightLocation 1360 0 insert ISGW2Hadronic:WeightLocation 1361 0 insert ISGW2Hadronic:WeightLocation 1362 0 insert ISGW2Hadronic:WeightLocation 1363 0 insert ISGW2Hadronic:WeightLocation 1364 0 insert ISGW2Hadronic:WeightLocation 1365 0 insert ISGW2Hadronic:WeightLocation 1366 0 insert ISGW2Hadronic:WeightLocation 1367 0 insert ISGW2Hadronic:WeightLocation 1368 0 insert ISGW2Hadronic:WeightLocation 1369 0 insert ISGW2Hadronic:WeightLocation 1370 0 insert ISGW2Hadronic:WeightLocation 1371 0 insert ISGW2Hadronic:WeightLocation 1372 0 insert ISGW2Hadronic:WeightLocation 1373 0 insert ISGW2Hadronic:WeightLocation 1374 0 insert ISGW2Hadronic:WeightLocation 1375 0 insert ISGW2Hadronic:WeightLocation 1376 0 insert ISGW2Hadronic:WeightLocation 1377 0 insert ISGW2Hadronic:WeightLocation 1378 0 insert ISGW2Hadronic:WeightLocation 1379 0 insert ISGW2Hadronic:WeightLocation 1380 0 insert ISGW2Hadronic:WeightLocation 1381 0 insert ISGW2Hadronic:WeightLocation 1382 0 insert ISGW2Hadronic:WeightLocation 1383 0 insert ISGW2Hadronic:WeightLocation 1384 0 insert ISGW2Hadronic:WeightLocation 1385 0 insert ISGW2Hadronic:WeightLocation 1386 0 insert ISGW2Hadronic:WeightLocation 1387 0 insert ISGW2Hadronic:WeightLocation 1388 0 insert ISGW2Hadronic:WeightLocation 1389 0 insert ISGW2Hadronic:WeightLocation 1390 0 insert ISGW2Hadronic:WeightLocation 1391 0 insert ISGW2Hadronic:WeightLocation 1392 0 insert ISGW2Hadronic:WeightLocation 1393 0 insert ISGW2Hadronic:WeightLocation 1394 0 insert ISGW2Hadronic:WeightLocation 1395 0 insert ISGW2Hadronic:WeightLocation 1396 0 insert ISGW2Hadronic:WeightLocation 1397 0 insert ISGW2Hadronic:WeightLocation 1398 0 insert ISGW2Hadronic:WeightLocation 1399 0 insert ISGW2Hadronic:WeightLocation 1400 0 insert ISGW2Hadronic:WeightLocation 1401 0 insert ISGW2Hadronic:WeightLocation 1402 0 insert ISGW2Hadronic:WeightLocation 1403 0 insert ISGW2Hadronic:WeightLocation 1404 0 insert ISGW2Hadronic:WeightLocation 1405 0 insert ISGW2Hadronic:WeightLocation 1406 0 insert ISGW2Hadronic:WeightLocation 1407 0 insert ISGW2Hadronic:WeightLocation 1408 0 insert ISGW2Hadronic:WeightLocation 1409 0 insert ISGW2Hadronic:WeightLocation 1410 0 insert ISGW2Hadronic:WeightLocation 1411 0 insert ISGW2Hadronic:WeightLocation 1412 0 insert ISGW2Hadronic:WeightLocation 1413 0 insert ISGW2Hadronic:WeightLocation 1414 0 insert ISGW2Hadronic:WeightLocation 1415 0 insert ISGW2Hadronic:WeightLocation 1416 0 insert ISGW2Hadronic:WeightLocation 1417 0 insert ISGW2Hadronic:WeightLocation 1418 0 insert ISGW2Hadronic:WeightLocation 1419 0 insert ISGW2Hadronic:WeightLocation 1420 0 insert ISGW2Hadronic:WeightLocation 1421 0 insert ISGW2Hadronic:WeightLocation 1422 0 insert ISGW2Hadronic:WeightLocation 1423 0 insert ISGW2Hadronic:WeightLocation 1424 0 insert ISGW2Hadronic:WeightLocation 1425 0 insert ISGW2Hadronic:WeightLocation 1426 0 insert ISGW2Hadronic:WeightLocation 1427 0 insert ISGW2Hadronic:WeightLocation 1428 0 insert ISGW2Hadronic:WeightLocation 1429 0 insert ISGW2Hadronic:WeightLocation 1430 0 insert ISGW2Hadronic:WeightLocation 1431 0 insert ISGW2Hadronic:WeightLocation 1432 0 insert ISGW2Hadronic:WeightLocation 1433 0 insert ISGW2Hadronic:WeightLocation 1434 0 insert ISGW2Hadronic:WeightLocation 1435 0 insert ISGW2Hadronic:WeightLocation 1436 0 insert ISGW2Hadronic:WeightLocation 1437 0 insert ISGW2Hadronic:WeightLocation 1438 0 insert ISGW2Hadronic:WeightLocation 1439 0 insert ISGW2Hadronic:WeightLocation 1440 0 insert ISGW2Hadronic:WeightLocation 1441 0 insert ISGW2Hadronic:WeightLocation 1442 0 insert ISGW2Hadronic:WeightLocation 1443 0 insert ISGW2Hadronic:WeightLocation 1444 0 insert ISGW2Hadronic:WeightLocation 1445 0 insert ISGW2Hadronic:WeightLocation 1446 0 insert ISGW2Hadronic:WeightLocation 1447 0 insert ISGW2Hadronic:WeightLocation 1448 0 insert ISGW2Hadronic:WeightLocation 1449 0 insert ISGW2Hadronic:WeightLocation 1450 0 insert ISGW2Hadronic:WeightLocation 1451 0 insert ISGW2Hadronic:WeightLocation 1452 0 insert ISGW2Hadronic:WeightLocation 1453 0 insert ISGW2Hadronic:WeightLocation 1454 0 insert ISGW2Hadronic:WeightLocation 1455 0 insert ISGW2Hadronic:WeightLocation 1456 0 insert ISGW2Hadronic:WeightLocation 1457 0 insert ISGW2Hadronic:WeightLocation 1458 0 insert ISGW2Hadronic:WeightLocation 1459 0 insert ISGW2Hadronic:WeightLocation 1460 0 insert ISGW2Hadronic:WeightLocation 1461 0 insert ISGW2Hadronic:WeightLocation 1462 0 insert ISGW2Hadronic:WeightLocation 1463 0 insert ISGW2Hadronic:WeightLocation 1464 0 insert ISGW2Hadronic:WeightLocation 1465 0 insert ISGW2Hadronic:WeightLocation 1466 0 insert ISGW2Hadronic:WeightLocation 1467 0 insert ISGW2Hadronic:WeightLocation 1468 0 insert ISGW2Hadronic:WeightLocation 1469 0 insert ISGW2Hadronic:WeightLocation 1470 0 insert ISGW2Hadronic:WeightLocation 1471 0 insert ISGW2Hadronic:WeightLocation 1472 0 insert ISGW2Hadronic:WeightLocation 1473 0 insert ISGW2Hadronic:WeightLocation 1474 0 insert ISGW2Hadronic:WeightLocation 1475 0 insert ISGW2Hadronic:WeightLocation 1476 0 insert ISGW2Hadronic:WeightLocation 1477 0 insert ISGW2Hadronic:WeightLocation 1478 0 insert ISGW2Hadronic:WeightLocation 1479 0 insert ISGW2Hadronic:WeightLocation 1480 0 insert ISGW2Hadronic:WeightLocation 1481 0 insert ISGW2Hadronic:WeightLocation 1482 0 insert ISGW2Hadronic:WeightLocation 1483 0 insert ISGW2Hadronic:WeightLocation 1484 0 insert ISGW2Hadronic:WeightLocation 1485 0 insert ISGW2Hadronic:WeightLocation 1486 0 insert ISGW2Hadronic:WeightLocation 1487 0 insert ISGW2Hadronic:WeightLocation 1488 0 insert ISGW2Hadronic:WeightLocation 1489 0 insert ISGW2Hadronic:WeightLocation 1490 0 insert ISGW2Hadronic:WeightLocation 1491 0 insert ISGW2Hadronic:WeightLocation 1492 0 insert ISGW2Hadronic:WeightLocation 1493 0 insert ISGW2Hadronic:WeightLocation 1494 0 insert ISGW2Hadronic:WeightLocation 1495 0 insert ISGW2Hadronic:WeightLocation 1496 0 insert ISGW2Hadronic:WeightLocation 1497 0 insert ISGW2Hadronic:WeightLocation 1498 0 insert ISGW2Hadronic:WeightLocation 1499 0 insert ISGW2Hadronic:WeightLocation 1500 0 insert ISGW2Hadronic:WeightLocation 1501 0 insert ISGW2Hadronic:WeightLocation 1502 0 insert ISGW2Hadronic:WeightLocation 1503 0 insert ISGW2Hadronic:WeightLocation 1504 0 insert ISGW2Hadronic:WeightLocation 1505 0 insert ISGW2Hadronic:WeightLocation 1506 0 insert ISGW2Hadronic:WeightLocation 1507 0 insert ISGW2Hadronic:WeightLocation 1508 0 insert ISGW2Hadronic:WeightLocation 1509 0 insert ISGW2Hadronic:WeightLocation 1510 0 insert ISGW2Hadronic:WeightLocation 1511 0 insert ISGW2Hadronic:WeightLocation 1512 0 insert ISGW2Hadronic:WeightLocation 1513 0 insert ISGW2Hadronic:WeightLocation 1514 0 insert ISGW2Hadronic:WeightLocation 1515 0 insert ISGW2Hadronic:WeightLocation 1516 0 insert ISGW2Hadronic:WeightLocation 1517 0 insert ISGW2Hadronic:WeightLocation 1518 0 insert ISGW2Hadronic:WeightLocation 1519 0 insert ISGW2Hadronic:WeightLocation 1520 0 insert ISGW2Hadronic:WeightLocation 1521 0 insert ISGW2Hadronic:WeightLocation 1522 0 insert ISGW2Hadronic:WeightLocation 1523 0 insert ISGW2Hadronic:WeightLocation 1524 0 insert ISGW2Hadronic:WeightLocation 1525 0 insert ISGW2Hadronic:WeightLocation 1526 0 insert ISGW2Hadronic:WeightLocation 1527 0 insert ISGW2Hadronic:WeightLocation 1528 0 insert ISGW2Hadronic:WeightLocation 1529 0 insert ISGW2Hadronic:WeightLocation 1530 0 insert ISGW2Hadronic:WeightLocation 1531 0 insert ISGW2Hadronic:WeightLocation 1532 0 insert ISGW2Hadronic:WeightLocation 1533 0 insert ISGW2Hadronic:WeightLocation 1534 0 insert ISGW2Hadronic:WeightLocation 1535 0 insert ISGW2Hadronic:WeightLocation 1536 0 insert ISGW2Hadronic:WeightLocation 1537 0 insert ISGW2Hadronic:WeightLocation 1538 0 insert ISGW2Hadronic:WeightLocation 1539 0 insert ISGW2Hadronic:WeightLocation 1540 0 insert ISGW2Hadronic:WeightLocation 1541 0 insert ISGW2Hadronic:WeightLocation 1542 0 insert ISGW2Hadronic:WeightLocation 1543 0 insert ISGW2Hadronic:WeightLocation 1544 0 insert ISGW2Hadronic:WeightLocation 1545 0 insert ISGW2Hadronic:WeightLocation 1546 0 insert ISGW2Hadronic:WeightLocation 1547 0 insert ISGW2Hadronic:WeightLocation 1548 0 insert ISGW2Hadronic:WeightLocation 1549 0 insert ISGW2Hadronic:WeightLocation 1550 0 insert ISGW2Hadronic:WeightLocation 1551 0 insert ISGW2Hadronic:WeightLocation 1552 0 insert ISGW2Hadronic:WeightLocation 1553 0 insert ISGW2Hadronic:WeightLocation 1554 0 insert ISGW2Hadronic:WeightLocation 1555 0 insert ISGW2Hadronic:WeightLocation 1556 0 insert ISGW2Hadronic:WeightLocation 1557 0 insert ISGW2Hadronic:WeightLocation 1558 0 insert ISGW2Hadronic:WeightLocation 1559 0 insert ISGW2Hadronic:WeightLocation 1560 0 insert ISGW2Hadronic:WeightLocation 1561 0 insert ISGW2Hadronic:WeightLocation 1562 0 insert ISGW2Hadronic:WeightLocation 1563 0 insert ISGW2Hadronic:WeightLocation 1564 0 insert ISGW2Hadronic:WeightLocation 1565 0 insert ISGW2Hadronic:WeightLocation 1566 0 insert ISGW2Hadronic:WeightLocation 1567 0 insert ISGW2Hadronic:WeightLocation 1568 0 insert ISGW2Hadronic:WeightLocation 1569 0 insert ISGW2Hadronic:WeightLocation 1570 0 insert ISGW2Hadronic:WeightLocation 1571 0 insert ISGW2Hadronic:WeightLocation 1572 0 insert ISGW2Hadronic:WeightLocation 1573 0 insert ISGW2Hadronic:WeightLocation 1574 0 insert ISGW2Hadronic:WeightLocation 1575 0 insert ISGW2Hadronic:WeightLocation 1576 0 insert ISGW2Hadronic:WeightLocation 1577 0 insert ISGW2Hadronic:WeightLocation 1578 0 insert ISGW2Hadronic:WeightLocation 1579 0 insert ISGW2Hadronic:WeightLocation 1580 0 insert ISGW2Hadronic:WeightLocation 1581 0 insert ISGW2Hadronic:WeightLocation 1582 0 insert ISGW2Hadronic:WeightLocation 1583 0 insert ISGW2Hadronic:WeightLocation 1584 0 insert ISGW2Hadronic:WeightLocation 1585 0 insert ISGW2Hadronic:WeightLocation 1586 0 insert ISGW2Hadronic:WeightLocation 1587 0 insert ISGW2Hadronic:WeightLocation 1588 0 insert ISGW2Hadronic:WeightLocation 1589 0 insert ISGW2Hadronic:WeightLocation 1590 0 insert ISGW2Hadronic:WeightLocation 1591 0 insert ISGW2Hadronic:WeightLocation 1592 0 insert ISGW2Hadronic:WeightLocation 1593 0 insert ISGW2Hadronic:WeightLocation 1594 0 insert ISGW2Hadronic:WeightLocation 1595 0 insert ISGW2Hadronic:WeightLocation 1596 0 insert ISGW2Hadronic:WeightLocation 1597 0 insert ISGW2Hadronic:WeightLocation 1598 0 insert ISGW2Hadronic:WeightLocation 1599 0 insert ISGW2Hadronic:WeightLocation 1600 0 insert ISGW2Hadronic:WeightLocation 1601 0 insert ISGW2Hadronic:WeightLocation 1602 0 insert ISGW2Hadronic:WeightLocation 1603 0 insert ISGW2Hadronic:WeightLocation 1604 0 insert ISGW2Hadronic:WeightLocation 1605 0 insert ISGW2Hadronic:WeightLocation 1606 0 insert ISGW2Hadronic:WeightLocation 1607 0 insert ISGW2Hadronic:WeightLocation 1608 0 insert ISGW2Hadronic:WeightLocation 1609 0 insert ISGW2Hadronic:WeightLocation 1610 0 insert ISGW2Hadronic:WeightLocation 1611 0 insert ISGW2Hadronic:WeightLocation 1612 0 insert ISGW2Hadronic:WeightLocation 1613 0 insert ISGW2Hadronic:WeightLocation 1614 0 insert ISGW2Hadronic:WeightLocation 1615 0 insert ISGW2Hadronic:WeightLocation 1616 0 insert ISGW2Hadronic:WeightLocation 1617 0 insert ISGW2Hadronic:WeightLocation 1618 0 insert ISGW2Hadronic:WeightLocation 1619 0 insert ISGW2Hadronic:WeightLocation 1620 0 insert ISGW2Hadronic:WeightLocation 1621 0 insert ISGW2Hadronic:WeightLocation 1622 0 insert ISGW2Hadronic:WeightLocation 1623 0 insert ISGW2Hadronic:WeightLocation 1624 0 insert ISGW2Hadronic:WeightLocation 1625 0 insert ISGW2Hadronic:WeightLocation 1626 0 insert ISGW2Hadronic:WeightLocation 1627 0 insert ISGW2Hadronic:WeightLocation 1628 0 insert ISGW2Hadronic:WeightLocation 1629 0 insert ISGW2Hadronic:WeightLocation 1630 0 insert ISGW2Hadronic:WeightLocation 1631 0 insert ISGW2Hadronic:WeightLocation 1632 0 insert ISGW2Hadronic:WeightLocation 1633 0 insert ISGW2Hadronic:WeightLocation 1634 0 insert ISGW2Hadronic:WeightLocation 1635 0 insert ISGW2Hadronic:WeightLocation 1636 0 insert ISGW2Hadronic:WeightLocation 1637 0 insert ISGW2Hadronic:WeightLocation 1638 0 insert ISGW2Hadronic:WeightLocation 1639 0 insert ISGW2Hadronic:WeightLocation 1640 0 insert ISGW2Hadronic:WeightLocation 1641 0 insert ISGW2Hadronic:WeightLocation 1642 0 insert ISGW2Hadronic:WeightLocation 1643 0 insert ISGW2Hadronic:WeightLocation 1644 0 insert ISGW2Hadronic:WeightLocation 1645 0 insert ISGW2Hadronic:WeightLocation 1646 0 insert ISGW2Hadronic:WeightLocation 1647 0 insert ISGW2Hadronic:WeightLocation 1648 0 insert ISGW2Hadronic:WeightLocation 1649 0 insert ISGW2Hadronic:WeightLocation 1650 0 insert ISGW2Hadronic:WeightLocation 1651 0 insert ISGW2Hadronic:WeightLocation 1652 0 insert ISGW2Hadronic:WeightLocation 1653 0 insert ISGW2Hadronic:WeightLocation 1654 0 insert ISGW2Hadronic:WeightLocation 1655 0 insert ISGW2Hadronic:WeightLocation 1656 0 insert ISGW2Hadronic:WeightLocation 1657 0 insert ISGW2Hadronic:WeightLocation 1658 0 insert ISGW2Hadronic:WeightLocation 1659 0 insert ISGW2Hadronic:WeightLocation 1660 0 insert ISGW2Hadronic:WeightLocation 1661 0 insert ISGW2Hadronic:WeightLocation 1662 0 insert ISGW2Hadronic:WeightLocation 1663 0 insert ISGW2Hadronic:WeightLocation 1664 0 insert ISGW2Hadronic:WeightLocation 1665 0 insert ISGW2Hadronic:WeightLocation 1666 0 insert ISGW2Hadronic:WeightLocation 1667 0 insert ISGW2Hadronic:WeightLocation 1668 0 insert ISGW2Hadronic:WeightLocation 1669 0 insert ISGW2Hadronic:WeightLocation 1670 0 insert ISGW2Hadronic:WeightLocation 1671 0 insert ISGW2Hadronic:WeightLocation 1672 0 insert ISGW2Hadronic:WeightLocation 1673 0 insert ISGW2Hadronic:WeightLocation 1674 0 insert ISGW2Hadronic:WeightLocation 1675 0 insert ISGW2Hadronic:WeightLocation 1676 0 insert ISGW2Hadronic:WeightLocation 1677 0 insert ISGW2Hadronic:WeightLocation 1678 0 insert ISGW2Hadronic:WeightLocation 1679 0 insert ISGW2Hadronic:WeightLocation 1680 0 insert ISGW2Hadronic:WeightLocation 1681 0 insert ISGW2Hadronic:WeightLocation 1682 0 insert ISGW2Hadronic:WeightLocation 1683 0 insert ISGW2Hadronic:WeightLocation 1684 0 insert ISGW2Hadronic:WeightLocation 1685 0 insert ISGW2Hadronic:WeightLocation 1686 0 insert ISGW2Hadronic:MaximumWeight 0 2.6273e-08 insert ISGW2Hadronic:MaximumWeight 1 1.35244e-08 insert ISGW2Hadronic:MaximumWeight 2 1.30407e-08 insert ISGW2Hadronic:MaximumWeight 3 1.84481e-05 insert ISGW2Hadronic:MaximumWeight 4 1.00022e-07 insert ISGW2Hadronic:MaximumWeight 5 8.69679e-08 insert ISGW2Hadronic:MaximumWeight 6 2.37369e-07 insert ISGW2Hadronic:MaximumWeight 7 2.40173e-07 insert ISGW2Hadronic:MaximumWeight 8 1.885e-05 insert ISGW2Hadronic:MaximumWeight 9 9.06637e-08 insert ISGW2Hadronic:MaximumWeight 10 6.03355e-05 insert ISGW2Hadronic:MaximumWeight 11 2.419e-06 insert ISGW2Hadronic:MaximumWeight 12 1.76737e-08 insert ISGW2Hadronic:MaximumWeight 13 8.99748e-09 insert ISGW2Hadronic:MaximumWeight 14 8.22012e-09 insert ISGW2Hadronic:MaximumWeight 15 1.0638e-05 insert ISGW2Hadronic:MaximumWeight 16 1.95416e-07 insert ISGW2Hadronic:MaximumWeight 17 6.42798e-08 insert ISGW2Hadronic:MaximumWeight 18 1.49109e-07 insert ISGW2Hadronic:MaximumWeight 19 2.00461e-07 insert ISGW2Hadronic:MaximumWeight 20 2.19925e-05 insert ISGW2Hadronic:MaximumWeight 21 1.22187e-07 insert ISGW2Hadronic:MaximumWeight 22 0.000141161 insert ISGW2Hadronic:MaximumWeight 23 8.16906e-06 insert ISGW2Hadronic:MaximumWeight 24 2.27794e-08 insert ISGW2Hadronic:MaximumWeight 25 1.13643e-08 insert ISGW2Hadronic:MaximumWeight 26 1.03284e-08 insert ISGW2Hadronic:MaximumWeight 27 1.18385e-05 insert ISGW2Hadronic:MaximumWeight 28 5.05622e-09 insert ISGW2Hadronic:MaximumWeight 29 8.09975e-08 insert ISGW2Hadronic:MaximumWeight 30 1.76075e-07 insert ISGW2Hadronic:MaximumWeight 31 2.35542e-07 insert ISGW2Hadronic:MaximumWeight 32 2.59353e-05 insert ISGW2Hadronic:MaximumWeight 33 1.10373e-08 insert ISGW2Hadronic:MaximumWeight 34 5.25982e-06 insert ISGW2Hadronic:MaximumWeight 35 2.2536e-07 insert ISGW2Hadronic:MaximumWeight 36 1.44434e-10 insert ISGW2Hadronic:MaximumWeight 37 7.53423e-11 insert ISGW2Hadronic:MaximumWeight 38 7.22816e-11 insert ISGW2Hadronic:MaximumWeight 39 1.1018e-07 insert ISGW2Hadronic:MaximumWeight 40 4.66401e-11 insert ISGW2Hadronic:MaximumWeight 41 5.18388e-09 insert ISGW2Hadronic:MaximumWeight 42 7.59587e-09 insert ISGW2Hadronic:MaximumWeight 43 1.28001e-08 insert ISGW2Hadronic:MaximumWeight 44 3.16256e-06 insert ISGW2Hadronic:MaximumWeight 45 1.32713e-09 insert ISGW2Hadronic:MaximumWeight 46 1.32677e-06 insert ISGW2Hadronic:MaximumWeight 47 4.70452e-07 insert ISGW2Hadronic:MaximumWeight 48 1.0977e-06 insert ISGW2Hadronic:MaximumWeight 49 8.78984e-08 insert ISGW2Hadronic:MaximumWeight 50 2.29736e-06 insert ISGW2Hadronic:MaximumWeight 51 3.05728e-07 insert ISGW2Hadronic:MaximumWeight 52 3.63284e-06 insert ISGW2Hadronic:MaximumWeight 53 4.05981e-07 insert ISGW2Hadronic:MaximumWeight 54 1.00368e-05 insert ISGW2Hadronic:MaximumWeight 55 4.38303e-06 insert ISGW2Hadronic:MaximumWeight 56 2.27471e-06 insert ISGW2Hadronic:MaximumWeight 57 6.46968e-07 insert ISGW2Hadronic:MaximumWeight 58 5.13693e-08 insert ISGW2Hadronic:MaximumWeight 59 2.65897e-06 insert ISGW2Hadronic:MaximumWeight 60 2.28228e-07 insert ISGW2Hadronic:MaximumWeight 61 2.45839e-06 insert ISGW2Hadronic:MaximumWeight 62 3.18108e-07 insert ISGW2Hadronic:MaximumWeight 63 7.27664e-06 insert ISGW2Hadronic:MaximumWeight 64 2.96635e-06 insert ISGW2Hadronic:MaximumWeight 65 5.01636e-06 insert ISGW2Hadronic:MaximumWeight 66 5.89736e-07 insert ISGW2Hadronic:MaximumWeight 67 4.66424e-08 insert ISGW2Hadronic:MaximumWeight 68 6.69525e-08 insert ISGW2Hadronic:MaximumWeight 69 1.79775e-06 insert ISGW2Hadronic:MaximumWeight 70 1.45096e-07 insert ISGW2Hadronic:MaximumWeight 71 2.13653e-06 insert ISGW2Hadronic:MaximumWeight 72 2.20816e-07 insert ISGW2Hadronic:MaximumWeight 73 6.23877e-06 insert ISGW2Hadronic:MaximumWeight 74 1.54446e-07 insert ISGW2Hadronic:MaximumWeight 75 4.01427e-06 insert ISGW2Hadronic:MaximumWeight 76 2.03138e-06 insert ISGW2Hadronic:MaximumWeight 77 1.41756e-06 insert ISGW2Hadronic:MaximumWeight 78 1.14101e-07 insert ISGW2Hadronic:MaximumWeight 79 2.27078e-07 insert ISGW2Hadronic:MaximumWeight 80 6.39037e-06 insert ISGW2Hadronic:MaximumWeight 81 6.33212e-07 insert ISGW2Hadronic:MaximumWeight 82 4.98991e-06 insert ISGW2Hadronic:MaximumWeight 83 5.45891e-07 insert ISGW2Hadronic:MaximumWeight 84 1.48447e-05 insert ISGW2Hadronic:MaximumWeight 85 3.56298e-07 insert ISGW2Hadronic:MaximumWeight 86 9.13698e-06 insert ISGW2Hadronic:MaximumWeight 87 5.10267e-06 insert ISGW2Hadronic:MaximumWeight 88 6.07913e-09 insert ISGW2Hadronic:MaximumWeight 89 4.91014e-10 insert ISGW2Hadronic:MaximumWeight 90 9.83142e-10 insert ISGW2Hadronic:MaximumWeight 91 2.75247e-08 insert ISGW2Hadronic:MaximumWeight 92 2.55297e-09 insert ISGW2Hadronic:MaximumWeight 93 1.86081e-07 insert ISGW2Hadronic:MaximumWeight 94 2.76235e-08 insert ISGW2Hadronic:MaximumWeight 95 5.67391e-07 insert ISGW2Hadronic:MaximumWeight 96 2.89779e-08 insert ISGW2Hadronic:MaximumWeight 97 8.53303e-07 insert ISGW2Hadronic:MaximumWeight 98 5.60908e-07 insert ISGW2Hadronic:MaximumWeight 99 1.59547e-07 insert ISGW2Hadronic:MaximumWeight 100 1.26864e-08 insert ISGW2Hadronic:MaximumWeight 101 1.98934e-08 insert ISGW2Hadronic:MaximumWeight 102 5.38708e-07 insert ISGW2Hadronic:MaximumWeight 103 4.4518e-08 insert ISGW2Hadronic:MaximumWeight 104 5.31692e-07 insert ISGW2Hadronic:MaximumWeight 105 4.72499e-08 insert ISGW2Hadronic:MaximumWeight 106 1.46722e-06 insert ISGW2Hadronic:MaximumWeight 107 2.44309e-08 insert ISGW2Hadronic:MaximumWeight 108 5.95373e-07 insert ISGW2Hadronic:MaximumWeight 109 2.37572e-07 insert ISGW2Hadronic:MaximumWeight 110 3.80748e-09 insert ISGW2Hadronic:MaximumWeight 111 1.95564e-09 insert ISGW2Hadronic:MaximumWeight 112 1.8764e-09 insert ISGW2Hadronic:MaximumWeight 113 2.59208e-06 insert ISGW2Hadronic:MaximumWeight 114 1.25229e-08 insert ISGW2Hadronic:MaximumWeight 115 3.40723e-08 insert ISGW2Hadronic:MaximumWeight 116 3.43019e-08 insert ISGW2Hadronic:MaximumWeight 117 2.57365e-06 insert ISGW2Hadronic:MaximumWeight 118 0.00165402 insert ISGW2Hadronic:MaximumWeight 119 8.43698e-05 insert ISGW2Hadronic:MaximumWeight 120 9.97146e-10 insert ISGW2Hadronic:MaximumWeight 121 5.08864e-10 insert ISGW2Hadronic:MaximumWeight 122 4.78158e-10 insert ISGW2Hadronic:MaximumWeight 123 6.20927e-07 insert ISGW2Hadronic:MaximumWeight 124 4.56981e-09 insert ISGW2Hadronic:MaximumWeight 125 1.13897e-08 insert ISGW2Hadronic:MaximumWeight 126 1.28134e-08 insert ISGW2Hadronic:MaximumWeight 127 1.74167e-06 insert ISGW2Hadronic:MaximumWeight 128 0.00316931 insert ISGW2Hadronic:MaximumWeight 129 0.000215502 insert ISGW2Hadronic:MaximumWeight 130 3.12291e-09 insert ISGW2Hadronic:MaximumWeight 131 1.56717e-09 insert ISGW2Hadronic:MaximumWeight 132 1.38591e-09 insert ISGW2Hadronic:MaximumWeight 133 1.47179e-06 insert ISGW2Hadronic:MaximumWeight 134 2.23493e-07 insert ISGW2Hadronic:MaximumWeight 135 1.16062e-08 insert ISGW2Hadronic:MaximumWeight 136 2.01032e-08 insert ISGW2Hadronic:MaximumWeight 137 3.27719e-08 insert ISGW2Hadronic:MaximumWeight 138 3.1706e-06 insert ISGW2Hadronic:MaximumWeight 139 4.81181e-07 insert ISGW2Hadronic:MaximumWeight 140 0.000195381 insert ISGW2Hadronic:MaximumWeight 141 1.24337e-06 insert ISGW2Hadronic:MaximumWeight 142 2.57759e-09 insert ISGW2Hadronic:MaximumWeight 143 1.32536e-09 insert ISGW2Hadronic:MaximumWeight 144 1.27228e-09 insert ISGW2Hadronic:MaximumWeight 145 1.73629e-06 insert ISGW2Hadronic:MaximumWeight 146 8.81842e-09 insert ISGW2Hadronic:MaximumWeight 147 2.41801e-08 insert ISGW2Hadronic:MaximumWeight 148 2.52718e-08 insert ISGW2Hadronic:MaximumWeight 149 2.3135e-06 insert ISGW2Hadronic:MaximumWeight 150 0.00445015 insert ISGW2Hadronic:MaximumWeight 151 0.000101026 insert ISGW2Hadronic:MaximumWeight 152 5.29311e-11 insert ISGW2Hadronic:MaximumWeight 153 2.74725e-11 insert ISGW2Hadronic:MaximumWeight 154 2.63423e-11 insert ISGW2Hadronic:MaximumWeight 155 3.90476e-08 insert ISGW2Hadronic:MaximumWeight 156 5.91351e-09 insert ISGW2Hadronic:MaximumWeight 157 3.69536e-10 insert ISGW2Hadronic:MaximumWeight 158 7.07901e-10 insert ISGW2Hadronic:MaximumWeight 159 1.01382e-09 insert ISGW2Hadronic:MaximumWeight 160 1.68767e-07 insert ISGW2Hadronic:MaximumWeight 161 2.46065e-08 insert ISGW2Hadronic:MaximumWeight 162 2.20078e-05 insert ISGW2Hadronic:MaximumWeight 163 4.70748e-06 insert ISGW2Hadronic:MaximumWeight 164 1.78216e-10 insert ISGW2Hadronic:MaximumWeight 165 9.02815e-11 insert ISGW2Hadronic:MaximumWeight 166 8.37941e-11 insert ISGW2Hadronic:MaximumWeight 167 9.72852e-08 insert ISGW2Hadronic:MaximumWeight 168 5.95325e-10 insert ISGW2Hadronic:MaximumWeight 169 1.63884e-09 insert ISGW2Hadronic:MaximumWeight 170 1.65892e-09 insert ISGW2Hadronic:MaximumWeight 171 1.33833e-07 insert ISGW2Hadronic:MaximumWeight 172 0.000116913 insert ISGW2Hadronic:MaximumWeight 173 2.75753e-06 insert ISGW2Hadronic:MaximumWeight 174 0.00167722 insert ISGW2Hadronic:MaximumWeight 175 0.00013295 insert ISGW2Hadronic:MaximumWeight 176 0.000203786 insert ISGW2Hadronic:MaximumWeight 177 0.00553154 insert ISGW2Hadronic:MaximumWeight 178 0.000473675 insert ISGW2Hadronic:MaximumWeight 179 0.00518734 insert ISGW2Hadronic:MaximumWeight 180 0.000469397 insert ISGW2Hadronic:MaximumWeight 181 0.0132838 insert ISGW2Hadronic:MaximumWeight 182 0.000163423 insert ISGW2Hadronic:MaximumWeight 183 0.00344953 insert ISGW2Hadronic:MaximumWeight 184 0.00125308 insert ISGW2Hadronic:MaximumWeight 185 0.000571907 insert ISGW2Hadronic:MaximumWeight 186 4.48583e-05 insert ISGW2Hadronic:MaximumWeight 187 0.00259643 insert ISGW2Hadronic:MaximumWeight 188 0.000347289 insert ISGW2Hadronic:MaximumWeight 189 0.0072989 insert ISGW2Hadronic:MaximumWeight 190 0.000187601 insert ISGW2Hadronic:MaximumWeight 191 1.41401e-05 insert ISGW2Hadronic:MaximumWeight 192 7.62346e-06 insert ISGW2Hadronic:MaximumWeight 193 0.000171732 insert ISGW2Hadronic:MaximumWeight 194 5.17111e-06 insert ISGW2Hadronic:MaximumWeight 195 0.000657476 insert ISGW2Hadronic:MaximumWeight 196 7.5333e-05 insert ISGW2Hadronic:MaximumWeight 197 0.0018744 insert ISGW2Hadronic:MaximumWeight 198 2.6806e-05 insert ISGW2Hadronic:MaximumWeight 199 0.000539339 insert ISGW2Hadronic:MaximumWeight 200 0.000115146 insert ISGW2Hadronic:MaximumWeight 201 0.000540583 insert ISGW2Hadronic:MaximumWeight 202 4.19891e-05 insert ISGW2Hadronic:MaximumWeight 203 4.05903e-05 insert ISGW2Hadronic:MaximumWeight 204 0.00100829 insert ISGW2Hadronic:MaximumWeight 205 5.20864e-05 insert ISGW2Hadronic:MaximumWeight 206 0.00163491 insert ISGW2Hadronic:MaximumWeight 207 0.000134305 insert ISGW2Hadronic:MaximumWeight 208 0.00401264 insert ISGW2Hadronic:MaximumWeight 209 3.56565e-05 insert ISGW2Hadronic:MaximumWeight 210 0.000696971 insert ISGW2Hadronic:MaximumWeight 211 0.000166961 insert ISGW2Hadronic:MaximumWeight 212 2.65629e-05 insert ISGW2Hadronic:MaximumWeight 213 2.04808e-06 insert ISGW2Hadronic:MaximumWeight 214 1.7854e-06 insert ISGW2Hadronic:MaximumWeight 215 4.39361e-05 insert ISGW2Hadronic:MaximumWeight 216 2.18549e-06 insert ISGW2Hadronic:MaximumWeight 217 0.000269939 insert ISGW2Hadronic:MaximumWeight 218 3.70581e-05 insert ISGW2Hadronic:MaximumWeight 219 0.000707211 insert ISGW2Hadronic:MaximumWeight 220 2.0537e-05 insert ISGW2Hadronic:MaximumWeight 221 0.000446673 insert ISGW2Hadronic:MaximumWeight 222 0.000136675 insert ISGW2Hadronic:MaximumWeight 223 9.71719e-05 insert ISGW2Hadronic:MaximumWeight 224 7.36441e-06 insert ISGW2Hadronic:MaximumWeight 225 4.50907e-06 insert ISGW2Hadronic:MaximumWeight 226 0.000106269 insert ISGW2Hadronic:MaximumWeight 227 4.30179e-06 insert ISGW2Hadronic:MaximumWeight 228 0.000302064 insert ISGW2Hadronic:MaximumWeight 229 2.70627e-05 insert ISGW2Hadronic:MaximumWeight 230 0.000773929 insert ISGW2Hadronic:MaximumWeight 231 8.44511e-06 insert ISGW2Hadronic:MaximumWeight 232 0.000177719 insert ISGW2Hadronic:MaximumWeight 233 5.01412e-05 insert ISGW2Hadronic:MaximumWeight 234 0.00142356 insert ISGW2Hadronic:MaximumWeight 235 0.000119786 insert ISGW2Hadronic:MaximumWeight 236 0.00262841 insert ISGW2Hadronic:MaximumWeight 237 5.98525e-05 insert ISGW2Hadronic:MaximumWeight 238 0.000174613 insert ISGW2Hadronic:MaximumWeight 239 0.000936994 insert ISGW2Hadronic:MaximumWeight 240 6.23369e-05 insert ISGW2Hadronic:MaximumWeight 241 0.00597481 insert ISGW2Hadronic:MaximumWeight 242 0.000273608 insert ISGW2Hadronic:MaximumWeight 243 0.000874378 insert ISGW2Hadronic:MaximumWeight 244 1.04737e-05 insert ISGW2Hadronic:MaximumWeight 245 6.0613e-08 insert ISGW2Hadronic:MaximumWeight 246 8.36364e-07 insert ISGW2Hadronic:MaximumWeight 247 0.000632599 insert ISGW2Hadronic:MaximumWeight 248 2.06321e-05 insert ISGW2Hadronic:MaximumWeight 249 0.000261013 insert ISGW2Hadronic:MaximumWeight 250 3.26013e-11 insert ISGW2Hadronic:MaximumWeight 251 6.75528e-07 insert ISGW2Hadronic:MaximumWeight 252 4.93106e-09 insert ISGW2Hadronic:MaximumWeight 253 1.56061e-05 insert ISGW2Hadronic:MaximumWeight 254 1.90638e-09 insert ISGW2Hadronic:MaximumWeight 255 7.04045e-09 insert ISGW2Hadronic:MaximumWeight 256 6.8887e-06 insert ISGW2Hadronic:MaximumWeight 257 6.42437e-08 insert ISGW2Hadronic:MaximumWeight 258 3.67611e-06 insert ISGW2Hadronic:MaximumWeight 259 6.62957e-10 insert ISGW2Hadronic:MaximumWeight 260 1.61303e-09 insert ISGW2Hadronic:MaximumWeight 261 0.000127399 insert ISGW2Hadronic:MaximumWeight 262 0.000383008 insert ISGW2Hadronic:MaximumWeight 263 9.952e-06 insert ISGW2Hadronic:MaximumWeight 264 0.00764798 insert ISGW2Hadronic:MaximumWeight 265 2.14688e-05 insert ISGW2Hadronic:MaximumWeight 266 0.00023493 insert ISGW2Hadronic:MaximumWeight 267 0.000310714 insert ISGW2Hadronic:MaximumWeight 268 5.94265e-08 insert ISGW2Hadronic:MaximumWeight 269 0.00367853 insert ISGW2Hadronic:MaximumWeight 270 1.0326e-05 insert ISGW2Hadronic:MaximumWeight 271 1.60784e-05 insert ISGW2Hadronic:MaximumWeight 272 8.39391e-05 insert ISGW2Hadronic:MaximumWeight 273 0.000184857 insert ISGW2Hadronic:MaximumWeight 274 3.0607e-08 insert ISGW2Hadronic:MaximumWeight 275 0.00395947 insert ISGW2Hadronic:MaximumWeight 276 1.11147e-05 insert ISGW2Hadronic:MaximumWeight 277 0.00053498 insert ISGW2Hadronic:MaximumWeight 278 0.00149738 insert ISGW2Hadronic:MaximumWeight 279 0.0169251 insert ISGW2Hadronic:MaximumWeight 280 4.75154e-05 insert ISGW2Hadronic:MaximumWeight 281 7.96047e-05 insert ISGW2Hadronic:MaximumWeight 282 9.50306e-07 insert ISGW2Hadronic:MaximumWeight 283 1.19971e-08 insert ISGW2Hadronic:MaximumWeight 284 3.6416e-06 insert ISGW2Hadronic:MaximumWeight 285 1.02161e-08 insert ISGW2Hadronic:MaximumWeight 286 7.74342e-08 insert ISGW2Hadronic:MaximumWeight 287 5.68032e-05 insert ISGW2Hadronic:MaximumWeight 288 3.94883e-05 insert ISGW2Hadronic:MaximumWeight 289 0.00127751 insert ISGW2Hadronic:MaximumWeight 290 3.59219e-06 insert ISGW2Hadronic:MaximumWeight 291 2.37848e-05 insert ISGW2Hadronic:MaximumWeight 292 1.3289e-09 insert ISGW2Hadronic:MaximumWeight 293 3.72391e-12 insert ISGW2Hadronic:MaximumWeight 294 6.12796e-08 insert ISGW2Hadronic:MaximumWeight 295 4.33288e-09 insert ISGW2Hadronic:MaximumWeight 296 2.91363e-07 insert ISGW2Hadronic:MaximumWeight 297 8.17889e-10 insert ISGW2Hadronic:MaximumWeight 298 1.39564e-06 insert ISGW2Hadronic:MaximumWeight 299 3.17171e-08 insert ISGW2Hadronic:MaximumWeight 300 1.0417e-07 insert ISGW2Hadronic:MaximumWeight 301 2.90036e-10 insert ISGW2Hadronic:MaximumWeight 302 6.36914e-10 insert ISGW2Hadronic:MaximumWeight 303 6.21309e-07 insert ISGW2Hadronic:MaximumWeight 304 6.88223e-08 insert ISGW2Hadronic:MaximumWeight 305 3.84933e-06 insert ISGW2Hadronic:MaximumWeight 306 1.08055e-08 insert ISGW2Hadronic:MaximumWeight 307 3.24017e-07 insert ISGW2Hadronic:MaximumWeight 308 7.52667e-09 insert ISGW2Hadronic:MaximumWeight 309 3.56259e-08 insert ISGW2Hadronic:MaximumWeight 310 9.968e-11 insert ISGW2Hadronic:MaximumWeight 311 1.47015e-10 insert ISGW2Hadronic:MaximumWeight 312 0.0466378 insert ISGW2Hadronic:MaximumWeight 313 0.00371169 insert ISGW2Hadronic:MaximumWeight 314 0.0643529 insert ISGW2Hadronic:MaximumWeight 315 0.000710401 insert ISGW2Hadronic:MaximumWeight 316 0.000913001 insert ISGW2Hadronic:MaximumWeight 317 0.0262388 insert ISGW2Hadronic:MaximumWeight 318 0.00151209 insert ISGW2Hadronic:MaximumWeight 319 0.152946 insert ISGW2Hadronic:MaximumWeight 320 0.00144631 insert ISGW2Hadronic:MaximumWeight 321 0.00455556 insert ISGW2Hadronic:MaximumWeight 322 0.000165832 insert ISGW2Hadronic:MaximumWeight 323 9.1706e-07 insert ISGW2Hadronic:MaximumWeight 324 0.00514793 insert ISGW2Hadronic:MaximumWeight 325 9.83697e-05 insert ISGW2Hadronic:MaximumWeight 326 3.78191e-05 insert ISGW2Hadronic:MaximumWeight 327 1.77944e-07 insert ISGW2Hadronic:MaximumWeight 328 7.84244e-05 insert ISGW2Hadronic:MaximumWeight 329 2.62791e-10 insert ISGW2Hadronic:MaximumWeight 330 7.11646e-07 insert ISGW2Hadronic:MaximumWeight 331 2.98315e-07 insert ISGW2Hadronic:MaximumWeight 332 1.51615e-07 insert ISGW2Hadronic:MaximumWeight 333 1.42044e-07 insert ISGW2Hadronic:MaximumWeight 334 7.4973e-08 insert ISGW2Hadronic:MaximumWeight 335 0.000176449 insert ISGW2Hadronic:MaximumWeight 336 9.69905e-07 insert ISGW2Hadronic:MaximumWeight 337 2.61479e-06 insert ISGW2Hadronic:MaximumWeight 338 2.61797e-06 insert ISGW2Hadronic:MaximumWeight 339 7.77707e-08 insert ISGW2Hadronic:MaximumWeight 340 0.000182947 insert ISGW2Hadronic:MaximumWeight 341 3.19045e-05 insert ISGW2Hadronic:MaximumWeight 342 1.56429e-05 insert ISGW2Hadronic:MaximumWeight 343 7.47231e-08 insert ISGW2Hadronic:MaximumWeight 344 3.79083e-08 insert ISGW2Hadronic:MaximumWeight 345 3.49272e-08 insert ISGW2Hadronic:MaximumWeight 346 1.83592e-08 insert ISGW2Hadronic:MaximumWeight 347 4.32086e-05 insert ISGW2Hadronic:MaximumWeight 348 1.04577e-06 insert ISGW2Hadronic:MaximumWeight 349 1.45993e-06 insert ISGW2Hadronic:MaximumWeight 350 2.67392e-06 insert ISGW2Hadronic:MaximumWeight 351 2.41852e-07 insert ISGW2Hadronic:MaximumWeight 352 0.000570294 insert ISGW2Hadronic:MaximumWeight 353 0.000262824 insert ISGW2Hadronic:MaximumWeight 354 0.000137684 insert ISGW2Hadronic:MaximumWeight 355 1.27574e-07 insert ISGW2Hadronic:MaximumWeight 356 6.35219e-08 insert ISGW2Hadronic:MaximumWeight 357 5.67028e-08 insert ISGW2Hadronic:MaximumWeight 358 2.38203e-08 insert ISGW2Hadronic:MaximumWeight 359 5.60612e-05 insert ISGW2Hadronic:MaximumWeight 360 4.2985e-07 insert ISGW2Hadronic:MaximumWeight 361 1.09272e-06 insert ISGW2Hadronic:MaximumWeight 362 1.20435e-06 insert ISGW2Hadronic:MaximumWeight 363 3.89464e-08 insert ISGW2Hadronic:MaximumWeight 364 9.26319e-05 insert ISGW2Hadronic:MaximumWeight 365 1.39009e-05 insert ISGW2Hadronic:MaximumWeight 366 2.60847e-06 insert ISGW2Hadronic:MaximumWeight 367 7.94206e-07 insert ISGW2Hadronic:MaximumWeight 368 4.03563e-07 insert ISGW2Hadronic:MaximumWeight 369 3.67946e-07 insert ISGW2Hadronic:MaximumWeight 370 1.96131e-07 insert ISGW2Hadronic:MaximumWeight 371 0.000461444 insert ISGW2Hadronic:MaximumWeight 372 2.58124e-06 insert ISGW2Hadronic:MaximumWeight 373 5.60659e-06 insert ISGW2Hadronic:MaximumWeight 374 7.21228e-06 insert ISGW2Hadronic:MaximumWeight 375 2.30192e-07 insert ISGW2Hadronic:MaximumWeight 376 0.000537935 insert ISGW2Hadronic:MaximumWeight 377 0.000115659 insert ISGW2Hadronic:MaximumWeight 378 4.67863e-05 insert ISGW2Hadronic:MaximumWeight 379 4.40657e-09 insert ISGW2Hadronic:MaximumWeight 380 2.23877e-09 insert ISGW2Hadronic:MaximumWeight 381 2.052e-09 insert ISGW2Hadronic:MaximumWeight 382 1.08135e-09 insert ISGW2Hadronic:MaximumWeight 383 2.5306e-06 insert ISGW2Hadronic:MaximumWeight 384 4.38347e-08 insert ISGW2Hadronic:MaximumWeight 385 6.20581e-08 insert ISGW2Hadronic:MaximumWeight 386 1.25913e-07 insert ISGW2Hadronic:MaximumWeight 387 9.70463e-09 insert ISGW2Hadronic:MaximumWeight 388 2.23565e-05 insert ISGW2Hadronic:MaximumWeight 389 7.83469e-06 insert ISGW2Hadronic:MaximumWeight 390 2.56193e-06 insert ISGW2Hadronic:MaximumWeight 391 3.79088e-08 insert ISGW2Hadronic:MaximumWeight 392 1.90871e-08 insert ISGW2Hadronic:MaximumWeight 393 1.70256e-08 insert ISGW2Hadronic:MaximumWeight 394 7.93393e-09 insert ISGW2Hadronic:MaximumWeight 395 1.86662e-05 insert ISGW2Hadronic:MaximumWeight 396 1.22309e-07 insert ISGW2Hadronic:MaximumWeight 397 2.42224e-07 insert ISGW2Hadronic:MaximumWeight 398 3.26693e-07 insert ISGW2Hadronic:MaximumWeight 399 8.26115e-09 insert ISGW2Hadronic:MaximumWeight 400 1.96192e-05 insert ISGW2Hadronic:MaximumWeight 401 1.94236e-06 insert ISGW2Hadronic:MaximumWeight 402 5.53694e-07 insert ISGW2Hadronic:MaximumWeight 403 1.24652e-05 insert ISGW2Hadronic:MaximumWeight 404 9.88093e-07 insert ISGW2Hadronic:MaximumWeight 405 1.56643e-06 insert ISGW2Hadronic:MaximumWeight 406 4.2953e-05 insert ISGW2Hadronic:MaximumWeight 407 3.89902e-06 insert ISGW2Hadronic:MaximumWeight 408 4.05235e-05 insert ISGW2Hadronic:MaximumWeight 409 4.28859e-06 insert ISGW2Hadronic:MaximumWeight 410 0.000109423 insert ISGW2Hadronic:MaximumWeight 411 1.85096e-06 insert ISGW2Hadronic:MaximumWeight 412 4.09032e-05 insert ISGW2Hadronic:MaximumWeight 413 1.79063e-05 insert ISGW2Hadronic:MaximumWeight 414 3.13352e-06 insert ISGW2Hadronic:MaximumWeight 415 2.48057e-07 insert ISGW2Hadronic:MaximumWeight 416 3.85001e-07 insert ISGW2Hadronic:MaximumWeight 417 1.05264e-05 insert ISGW2Hadronic:MaximumWeight 418 9.42521e-07 insert ISGW2Hadronic:MaximumWeight 419 3.33896e-05 insert ISGW2Hadronic:MaximumWeight 420 4.4126e-06 insert ISGW2Hadronic:MaximumWeight 421 0.000118879 insert ISGW2Hadronic:MaximumWeight 422 5.06334e-06 insert ISGW2Hadronic:MaximumWeight 423 0.000156483 insert ISGW2Hadronic:MaximumWeight 424 9.57021e-05 insert ISGW2Hadronic:MaximumWeight 425 5.34507e-06 insert ISGW2Hadronic:MaximumWeight 426 4.16908e-07 insert ISGW2Hadronic:MaximumWeight 427 4.98662e-07 insert ISGW2Hadronic:MaximumWeight 428 1.31356e-05 insert ISGW2Hadronic:MaximumWeight 429 9.97058e-07 insert ISGW2Hadronic:MaximumWeight 430 1.80148e-05 insert ISGW2Hadronic:MaximumWeight 431 2.04787e-06 insert ISGW2Hadronic:MaximumWeight 432 5.04508e-05 insert ISGW2Hadronic:MaximumWeight 433 9.66314e-07 insert ISGW2Hadronic:MaximumWeight 434 2.23357e-05 insert ISGW2Hadronic:MaximumWeight 435 9.88777e-06 insert ISGW2Hadronic:MaximumWeight 436 3.68215e-05 insert ISGW2Hadronic:MaximumWeight 437 2.9154e-06 insert ISGW2Hadronic:MaximumWeight 438 4.54675e-06 insert ISGW2Hadronic:MaximumWeight 439 0.000123988 insert ISGW2Hadronic:MaximumWeight 440 1.08929e-05 insert ISGW2Hadronic:MaximumWeight 441 0.000121427 insert ISGW2Hadronic:MaximumWeight 442 1.17881e-05 insert ISGW2Hadronic:MaximumWeight 443 0.000335905 insert ISGW2Hadronic:MaximumWeight 444 6.16012e-06 insert ISGW2Hadronic:MaximumWeight 445 0.000144285 insert ISGW2Hadronic:MaximumWeight 446 6.70849e-05 insert ISGW2Hadronic:MaximumWeight 447 1.87256e-07 insert ISGW2Hadronic:MaximumWeight 448 1.48554e-08 insert ISGW2Hadronic:MaximumWeight 449 2.29949e-08 insert ISGW2Hadronic:MaximumWeight 450 6.2513e-07 insert ISGW2Hadronic:MaximumWeight 451 5.36475e-08 insert ISGW2Hadronic:MaximumWeight 452 1.87424e-06 insert ISGW2Hadronic:MaximumWeight 453 2.62658e-07 insert ISGW2Hadronic:MaximumWeight 454 5.27927e-06 insert ISGW2Hadronic:MaximumWeight 455 2.37739e-07 insert ISGW2Hadronic:MaximumWeight 456 5.89279e-06 insert ISGW2Hadronic:MaximumWeight 457 3.37022e-06 insert ISGW2Hadronic:MaximumWeight 458 1.59414e-06 insert ISGW2Hadronic:MaximumWeight 459 1.25716e-07 insert ISGW2Hadronic:MaximumWeight 460 1.67024e-07 insert ISGW2Hadronic:MaximumWeight 461 4.4245e-06 insert ISGW2Hadronic:MaximumWeight 462 3.3657e-07 insert ISGW2Hadronic:MaximumWeight 463 5.14209e-06 insert ISGW2Hadronic:MaximumWeight 464 5.04695e-07 insert ISGW2Hadronic:MaximumWeight 465 1.34615e-05 insert ISGW2Hadronic:MaximumWeight 466 1.92809e-07 insert ISGW2Hadronic:MaximumWeight 467 4.29269e-06 insert ISGW2Hadronic:MaximumWeight 468 1.6164e-06 insert ISGW2Hadronic:MaximumWeight 469 1.1289e-08 insert ISGW2Hadronic:MaximumWeight 470 1.14298e-08 insert ISGW2Hadronic:MaximumWeight 471 3.01771e-09 insert ISGW2Hadronic:MaximumWeight 472 9.60431e-07 insert ISGW2Hadronic:MaximumWeight 473 6.34514e-06 insert ISGW2Hadronic:MaximumWeight 474 3.63652e-08 insert ISGW2Hadronic:MaximumWeight 475 9.8312e-08 insert ISGW2Hadronic:MaximumWeight 476 9.70304e-08 insert ISGW2Hadronic:MaximumWeight 477 9.66144e-07 insert ISGW2Hadronic:MaximumWeight 478 6.37736e-06 insert ISGW2Hadronic:MaximumWeight 479 0.000341128 insert ISGW2Hadronic:MaximumWeight 480 0.000143463 insert ISGW2Hadronic:MaximumWeight 481 3.22245e-08 insert ISGW2Hadronic:MaximumWeight 482 2.99111e-08 insert ISGW2Hadronic:MaximumWeight 483 2.78333e-06 insert ISGW2Hadronic:MaximumWeight 484 1.83889e-05 insert ISGW2Hadronic:MaximumWeight 485 1.03678e-07 insert ISGW2Hadronic:MaximumWeight 486 2.72419e-07 insert ISGW2Hadronic:MaximumWeight 487 2.7525e-07 insert ISGW2Hadronic:MaximumWeight 488 2.68329e-06 insert ISGW2Hadronic:MaximumWeight 489 1.77561e-05 insert ISGW2Hadronic:MaximumWeight 490 0.000925606 insert ISGW2Hadronic:MaximumWeight 491 0.000327444 insert ISGW2Hadronic:MaximumWeight 492 2.23837e-08 insert ISGW2Hadronic:MaximumWeight 493 1.13659e-08 insert ISGW2Hadronic:MaximumWeight 494 1.05161e-08 insert ISGW2Hadronic:MaximumWeight 495 1.98302e-06 insert ISGW2Hadronic:MaximumWeight 496 1.31233e-05 insert ISGW2Hadronic:MaximumWeight 497 1.13422e-07 insert ISGW2Hadronic:MaximumWeight 498 1.7014e-07 insert ISGW2Hadronic:MaximumWeight 499 3.00817e-07 insert ISGW2Hadronic:MaximumWeight 500 6.40694e-06 insert ISGW2Hadronic:MaximumWeight 501 4.23346e-05 insert ISGW2Hadronic:MaximumWeight 502 0.00559239 insert ISGW2Hadronic:MaximumWeight 503 0.00339219 insert ISGW2Hadronic:MaximumWeight 504 1.7965e-08 insert ISGW2Hadronic:MaximumWeight 505 8.82261e-09 insert ISGW2Hadronic:MaximumWeight 506 7.53071e-09 insert ISGW2Hadronic:MaximumWeight 507 9.28842e-07 insert ISGW2Hadronic:MaximumWeight 508 6.13788e-06 insert ISGW2Hadronic:MaximumWeight 509 6.3671e-08 insert ISGW2Hadronic:MaximumWeight 510 1.41866e-07 insert ISGW2Hadronic:MaximumWeight 511 1.80971e-07 insert ISGW2Hadronic:MaximumWeight 512 2.07167e-06 insert ISGW2Hadronic:MaximumWeight 513 1.40653e-05 insert ISGW2Hadronic:MaximumWeight 514 0.000396834 insert ISGW2Hadronic:MaximumWeight 515 3.84278e-05 insert ISGW2Hadronic:MaximumWeight 516 4.66654e-08 insert ISGW2Hadronic:MaximumWeight 517 2.35011e-08 insert ISGW2Hadronic:MaximumWeight 518 2.14985e-08 insert ISGW2Hadronic:MaximumWeight 519 3.64576e-06 insert ISGW2Hadronic:MaximumWeight 520 2.40858e-05 insert ISGW2Hadronic:MaximumWeight 521 1.49325e-07 insert ISGW2Hadronic:MaximumWeight 522 3.27935e-07 insert ISGW2Hadronic:MaximumWeight 523 3.94642e-07 insert ISGW2Hadronic:MaximumWeight 524 3.63856e-06 insert ISGW2Hadronic:MaximumWeight 525 2.39955e-05 insert ISGW2Hadronic:MaximumWeight 526 0.000993493 insert ISGW2Hadronic:MaximumWeight 527 0.000260782 insert ISGW2Hadronic:MaximumWeight 528 3.23725e-08 insert ISGW2Hadronic:MaximumWeight 529 1.61709e-08 insert ISGW2Hadronic:MaximumWeight 530 1.4092e-08 insert ISGW2Hadronic:MaximumWeight 531 2.20652e-06 insert ISGW2Hadronic:MaximumWeight 532 1.45631e-05 insert ISGW2Hadronic:MaximumWeight 533 1.25348e-07 insert ISGW2Hadronic:MaximumWeight 534 3.6152e-07 insert ISGW2Hadronic:MaximumWeight 535 4.11957e-07 insert ISGW2Hadronic:MaximumWeight 536 6.89897e-06 insert ISGW2Hadronic:MaximumWeight 537 4.51049e-05 insert ISGW2Hadronic:MaximumWeight 538 0.00267139 insert ISGW2Hadronic:MaximumWeight 539 0.000299742 insert ISGW2Hadronic:MaximumWeight 540 4.14129e-09 insert ISGW2Hadronic:MaximumWeight 541 2.05873e-09 insert ISGW2Hadronic:MaximumWeight 542 1.79762e-09 insert ISGW2Hadronic:MaximumWeight 543 2.51708e-07 insert ISGW2Hadronic:MaximumWeight 544 1.66303e-06 insert ISGW2Hadronic:MaximumWeight 545 1.3055e-08 insert ISGW2Hadronic:MaximumWeight 546 3.16173e-08 insert ISGW2Hadronic:MaximumWeight 547 3.36881e-08 insert ISGW2Hadronic:MaximumWeight 548 2.6636e-07 insert ISGW2Hadronic:MaximumWeight 549 1.76434e-06 insert ISGW2Hadronic:MaximumWeight 550 5.58364e-05 insert ISGW2Hadronic:MaximumWeight 551 4.15388e-06 insert ISGW2Hadronic:MaximumWeight 552 0.00659395 insert ISGW2Hadronic:MaximumWeight 553 0.000518581 insert ISGW2Hadronic:MaximumWeight 554 0.000716594 insert ISGW2Hadronic:MaximumWeight 555 0.0192649 insert ISGW2Hadronic:MaximumWeight 556 0.00159868 insert ISGW2Hadronic:MaximumWeight 557 0.0204461 insert ISGW2Hadronic:MaximumWeight 558 0.0018551 insert ISGW2Hadronic:MaximumWeight 559 0.0519568 insert ISGW2Hadronic:MaximumWeight 560 0.000610556 insert ISGW2Hadronic:MaximumWeight 561 0.0126196 insert ISGW2Hadronic:MaximumWeight 562 0.00409452 insert ISGW2Hadronic:MaximumWeight 563 0.00366179 insert ISGW2Hadronic:MaximumWeight 564 0.000283928 insert ISGW2Hadronic:MaximumWeight 565 0.000298849 insert ISGW2Hadronic:MaximumWeight 566 0.00769469 insert ISGW2Hadronic:MaximumWeight 567 0.000518355 insert ISGW2Hadronic:MaximumWeight 568 0.0144757 insert ISGW2Hadronic:MaximumWeight 569 0.00191071 insert ISGW2Hadronic:MaximumWeight 570 0.042628 insert ISGW2Hadronic:MaximumWeight 571 0.00104861 insert ISGW2Hadronic:MaximumWeight 572 0.0240693 insert ISGW2Hadronic:MaximumWeight 573 0.0113216 insert ISGW2Hadronic:MaximumWeight 574 0.00315272 insert ISGW2Hadronic:MaximumWeight 575 0.000232481 insert ISGW2Hadronic:MaximumWeight 576 8.13847e-05 insert ISGW2Hadronic:MaximumWeight 577 0.00169532 insert ISGW2Hadronic:MaximumWeight 578 3.21187e-05 insert ISGW2Hadronic:MaximumWeight 579 0.00999491 insert ISGW2Hadronic:MaximumWeight 580 0.000819757 insert ISGW2Hadronic:MaximumWeight 581 0.0247219 insert ISGW2Hadronic:MaximumWeight 582 0.000234179 insert ISGW2Hadronic:MaximumWeight 583 0.00536681 insert ISGW2Hadronic:MaximumWeight 584 0.000663442 insert ISGW2Hadronic:MaximumWeight 585 0.00194728 insert ISGW2Hadronic:MaximumWeight 586 0.00014909 insert ISGW2Hadronic:MaximumWeight 587 0.00012131 insert ISGW2Hadronic:MaximumWeight 588 0.00298558 insert ISGW2Hadronic:MaximumWeight 589 0.000156861 insert ISGW2Hadronic:MaximumWeight 590 0.00590166 insert ISGW2Hadronic:MaximumWeight 591 0.000492318 insert ISGW2Hadronic:MaximumWeight 592 0.0145167 insert ISGW2Hadronic:MaximumWeight 593 0.000136744 insert ISGW2Hadronic:MaximumWeight 594 0.00270837 insert ISGW2Hadronic:MaximumWeight 595 0.000699216 insert ISGW2Hadronic:MaximumWeight 596 0.000363501 insert ISGW2Hadronic:MaximumWeight 597 2.792e-05 insert ISGW2Hadronic:MaximumWeight 598 2.32784e-05 insert ISGW2Hadronic:MaximumWeight 599 0.000571196 insert ISGW2Hadronic:MaximumWeight 600 2.85318e-05 insert ISGW2Hadronic:MaximumWeight 601 0.00116098 insert ISGW2Hadronic:MaximumWeight 602 9.95665e-05 insert ISGW2Hadronic:MaximumWeight 603 0.00313378 insert ISGW2Hadronic:MaximumWeight 604 3.18435e-05 insert ISGW2Hadronic:MaximumWeight 605 0.000679999 insert ISGW2Hadronic:MaximumWeight 606 0.000144045 insert ISGW2Hadronic:MaximumWeight 607 0.000336368 insert ISGW2Hadronic:MaximumWeight 608 2.53521e-05 insert ISGW2Hadronic:MaximumWeight 609 1.50959e-05 insert ISGW2Hadronic:MaximumWeight 610 0.00035301 insert ISGW2Hadronic:MaximumWeight 611 1.44037e-05 insert ISGW2Hadronic:MaximumWeight 612 0.00103582 insert ISGW2Hadronic:MaximumWeight 613 9.04823e-05 insert ISGW2Hadronic:MaximumWeight 614 0.00259454 insert ISGW2Hadronic:MaximumWeight 615 2.66835e-05 insert ISGW2Hadronic:MaximumWeight 616 0.000534161 insert ISGW2Hadronic:MaximumWeight 617 0.000142624 insert ISGW2Hadronic:MaximumWeight 618 5.80692e-06 insert ISGW2Hadronic:MaximumWeight 619 6.33066e-06 insert ISGW2Hadronic:MaximumWeight 620 4.10621e-06 insert ISGW2Hadronic:MaximumWeight 621 0.00581606 insert ISGW2Hadronic:MaximumWeight 622 1.08001e-07 insert ISGW2Hadronic:MaximumWeight 623 2.75103e-06 insert ISGW2Hadronic:MaximumWeight 624 5.85739e-06 insert ISGW2Hadronic:MaximumWeight 625 1.11634e-05 insert ISGW2Hadronic:MaximumWeight 626 0.00599533 insert ISGW2Hadronic:MaximumWeight 627 1.10815e-07 insert ISGW2Hadronic:MaximumWeight 628 4.07377e-05 insert ISGW2Hadronic:MaximumWeight 629 1.81787e-05 insert ISGW2Hadronic:MaximumWeight 630 3.07508e-05 insert ISGW2Hadronic:MaximumWeight 631 2.9076e-05 insert ISGW2Hadronic:MaximumWeight 632 2.00233e-05 insert ISGW2Hadronic:MaximumWeight 633 0.0262428 insert ISGW2Hadronic:MaximumWeight 634 1.6988e-08 insert ISGW2Hadronic:MaximumWeight 635 9.12298e-06 insert ISGW2Hadronic:MaximumWeight 636 1.19944e-05 insert ISGW2Hadronic:MaximumWeight 637 3.35241e-05 insert ISGW2Hadronic:MaximumWeight 638 0.0183723 insert ISGW2Hadronic:MaximumWeight 639 1.84091e-07 insert ISGW2Hadronic:MaximumWeight 640 0.000183902 insert ISGW2Hadronic:MaximumWeight 641 8.77049e-05 insert ISGW2Hadronic:MaximumWeight 642 2.2163e-07 insert ISGW2Hadronic:MaximumWeight 643 1.09685e-07 insert ISGW2Hadronic:MaximumWeight 644 9.63409e-08 insert ISGW2Hadronic:MaximumWeight 645 8.98976e-05 insert ISGW2Hadronic:MaximumWeight 646 3.81974e-08 insert ISGW2Hadronic:MaximumWeight 647 7.3619e-07 insert ISGW2Hadronic:MaximumWeight 648 1.90682e-06 insert ISGW2Hadronic:MaximumWeight 649 2.02617e-06 insert ISGW2Hadronic:MaximumWeight 650 0.000143567 insert ISGW2Hadronic:MaximumWeight 651 6.17233e-08 insert ISGW2Hadronic:MaximumWeight 652 1.83458e-05 insert ISGW2Hadronic:MaximumWeight 653 3.17889e-06 insert ISGW2Hadronic:MaximumWeight 654 1.72097e-06 insert ISGW2Hadronic:MaximumWeight 655 8.64999e-07 insert ISGW2Hadronic:MaximumWeight 656 7.67698e-07 insert ISGW2Hadronic:MaximumWeight 657 0.000837888 insert ISGW2Hadronic:MaximumWeight 658 3.54618e-07 insert ISGW2Hadronic:MaximumWeight 659 5.39178e-06 insert ISGW2Hadronic:MaximumWeight 660 8.69755e-06 insert ISGW2Hadronic:MaximumWeight 661 1.45457e-05 insert ISGW2Hadronic:MaximumWeight 662 0.000871123 insert ISGW2Hadronic:MaximumWeight 663 3.87613e-07 insert ISGW2Hadronic:MaximumWeight 664 8.93038e-05 insert ISGW2Hadronic:MaximumWeight 665 1.86633e-05 insert ISGW2Hadronic:MaximumWeight 666 8.243e-05 insert ISGW2Hadronic:MaximumWeight 667 7.81673e-05 insert ISGW2Hadronic:MaximumWeight 668 5.37291e-05 insert ISGW2Hadronic:MaximumWeight 669 0.0662964 insert ISGW2Hadronic:MaximumWeight 670 7.94422e-08 insert ISGW2Hadronic:MaximumWeight 671 4.9772e-05 insert ISGW2Hadronic:MaximumWeight 672 8.82033e-05 insert ISGW2Hadronic:MaximumWeight 673 4.06884e-05 insert ISGW2Hadronic:MaximumWeight 674 0.0724293 insert ISGW2Hadronic:MaximumWeight 675 1.02998e-07 insert ISGW2Hadronic:MaximumWeight 676 5.00395e-05 insert ISGW2Hadronic:MaximumWeight 677 2.21968e-05 insert ISGW2Hadronic:MaximumWeight 678 3.38838e-08 insert ISGW2Hadronic:MaximumWeight 679 1.70062e-08 insert ISGW2Hadronic:MaximumWeight 680 1.51916e-08 insert ISGW2Hadronic:MaximumWeight 681 1.62262e-05 insert ISGW2Hadronic:MaximumWeight 682 6.89481e-09 insert ISGW2Hadronic:MaximumWeight 683 1.09694e-07 insert ISGW2Hadronic:MaximumWeight 684 2.92064e-07 insert ISGW2Hadronic:MaximumWeight 685 2.93954e-07 insert ISGW2Hadronic:MaximumWeight 686 1.7999e-05 insert ISGW2Hadronic:MaximumWeight 687 7.79657e-09 insert ISGW2Hadronic:MaximumWeight 688 1.93522e-06 insert ISGW2Hadronic:MaximumWeight 689 3.56258e-07 insert ISGW2Hadronic:MaximumWeight 690 4.53415e-07 insert ISGW2Hadronic:MaximumWeight 691 1.09676e-06 insert ISGW2Hadronic:MaximumWeight 692 2.997e-05 insert ISGW2Hadronic:MaximumWeight 693 2.68075e-06 insert ISGW2Hadronic:MaximumWeight 694 3.03405e-06 insert ISGW2Hadronic:MaximumWeight 695 1.27937e-06 insert ISGW2Hadronic:MaximumWeight 696 2.81376e-05 insert ISGW2Hadronic:MaximumWeight 697 1.20657e-05 insert ISGW2Hadronic:MaximumWeight 698 2.89217e-07 insert ISGW2Hadronic:MaximumWeight 699 7.74957e-07 insert ISGW2Hadronic:MaximumWeight 700 2.124e-05 insert ISGW2Hadronic:MaximumWeight 701 1.91822e-06 insert ISGW2Hadronic:MaximumWeight 702 2.04924e-06 insert ISGW2Hadronic:MaximumWeight 703 8.76715e-07 insert ISGW2Hadronic:MaximumWeight 704 1.9348e-05 insert ISGW2Hadronic:MaximumWeight 705 8.34839e-06 insert ISGW2Hadronic:MaximumWeight 706 6.46452e-07 insert ISGW2Hadronic:MaximumWeight 707 2.58523e-07 insert ISGW2Hadronic:MaximumWeight 708 7.10855e-06 insert ISGW2Hadronic:MaximumWeight 709 6.51709e-07 insert ISGW2Hadronic:MaximumWeight 710 8.87773e-07 insert ISGW2Hadronic:MaximumWeight 711 2.65369e-06 insert ISGW2Hadronic:MaximumWeight 712 7.75071e-05 insert ISGW2Hadronic:MaximumWeight 713 4.55905e-05 insert ISGW2Hadronic:MaximumWeight 714 4.72183e-06 insert ISGW2Hadronic:MaximumWeight 715 3.66715e-07 insert ISGW2Hadronic:MaximumWeight 716 4.11961e-07 insert ISGW2Hadronic:MaximumWeight 717 1.0774e-05 insert ISGW2Hadronic:MaximumWeight 718 7.95984e-07 insert ISGW2Hadronic:MaximumWeight 719 1.55587e-05 insert ISGW2Hadronic:MaximumWeight 720 1.66467e-06 insert ISGW2Hadronic:MaximumWeight 721 4.24467e-05 insert ISGW2Hadronic:MaximumWeight 722 7.16005e-07 insert ISGW2Hadronic:MaximumWeight 723 1.5711e-05 insert ISGW2Hadronic:MaximumWeight 724 6.56161e-06 insert ISGW2Hadronic:MaximumWeight 725 1.50868e-05 insert ISGW2Hadronic:MaximumWeight 726 1.18992e-06 insert ISGW2Hadronic:MaximumWeight 727 1.72204e-06 insert ISGW2Hadronic:MaximumWeight 728 4.65904e-05 insert ISGW2Hadronic:MaximumWeight 729 3.97988e-06 insert ISGW2Hadronic:MaximumWeight 730 4.86885e-05 insert ISGW2Hadronic:MaximumWeight 731 4.98141e-06 insert ISGW2Hadronic:MaximumWeight 732 0.000130129 insert ISGW2Hadronic:MaximumWeight 733 2.05579e-06 insert ISGW2Hadronic:MaximumWeight 734 4.50523e-05 insert ISGW2Hadronic:MaximumWeight 735 1.88375e-05 insert ISGW2Hadronic:MaximumWeight 736 1.33939e-05 insert ISGW2Hadronic:MaximumWeight 737 1.0536e-06 insert ISGW2Hadronic:MaximumWeight 738 1.489e-06 insert ISGW2Hadronic:MaximumWeight 739 4.00244e-05 insert ISGW2Hadronic:MaximumWeight 740 3.3065e-06 insert ISGW2Hadronic:MaximumWeight 741 4.62627e-05 insert ISGW2Hadronic:MaximumWeight 742 4.46223e-06 insert ISGW2Hadronic:MaximumWeight 743 0.000130224 insert ISGW2Hadronic:MaximumWeight 744 2.55736e-06 insert ISGW2Hadronic:MaximumWeight 745 6.90093e-05 insert ISGW2Hadronic:MaximumWeight 746 3.40729e-05 insert ISGW2Hadronic:MaximumWeight 747 6.35765e-07 insert ISGW2Hadronic:MaximumWeight 748 4.99304e-08 insert ISGW2Hadronic:MaximumWeight 749 6.60386e-08 insert ISGW2Hadronic:MaximumWeight 750 1.76031e-06 insert ISGW2Hadronic:MaximumWeight 751 1.40018e-07 insert ISGW2Hadronic:MaximumWeight 752 2.07123e-06 insert ISGW2Hadronic:MaximumWeight 753 2.12116e-07 insert ISGW2Hadronic:MaximumWeight 754 5.59086e-06 insert ISGW2Hadronic:MaximumWeight 755 9.19443e-08 insert ISGW2Hadronic:MaximumWeight 756 2.02824e-06 insert ISGW2Hadronic:MaximumWeight 757 8.56435e-07 insert ISGW2Hadronic:MaximumWeight 758 3.94965e-07 insert ISGW2Hadronic:MaximumWeight 759 1.12886e-06 insert ISGW2Hadronic:MaximumWeight 760 3.0742e-05 insert ISGW2Hadronic:MaximumWeight 761 2.71202e-06 insert ISGW2Hadronic:MaximumWeight 762 3.19507e-06 insert ISGW2Hadronic:MaximumWeight 763 1.3232e-06 insert ISGW2Hadronic:MaximumWeight 764 2.89906e-05 insert ISGW2Hadronic:MaximumWeight 765 1.23163e-05 insert ISGW2Hadronic:MaximumWeight 766 2.83149e-07 insert ISGW2Hadronic:MaximumWeight 767 1.75651e-07 insert ISGW2Hadronic:MaximumWeight 768 4.80704e-06 insert ISGW2Hadronic:MaximumWeight 769 4.32187e-07 insert ISGW2Hadronic:MaximumWeight 770 1.09095e-06 insert ISGW2Hadronic:MaximumWeight 771 2.08318e-06 insert ISGW2Hadronic:MaximumWeight 772 5.84392e-05 insert ISGW2Hadronic:MaximumWeight 773 3.48536e-05 insert ISGW2Hadronic:MaximumWeight 774 4.65664e-06 insert ISGW2Hadronic:MaximumWeight 775 3.61419e-07 insert ISGW2Hadronic:MaximumWeight 776 4.00419e-07 insert ISGW2Hadronic:MaximumWeight 777 1.04474e-05 insert ISGW2Hadronic:MaximumWeight 778 7.62726e-07 insert ISGW2Hadronic:MaximumWeight 779 1.54669e-05 insert ISGW2Hadronic:MaximumWeight 780 1.69547e-06 insert ISGW2Hadronic:MaximumWeight 781 4.25764e-05 insert ISGW2Hadronic:MaximumWeight 782 7.2399e-07 insert ISGW2Hadronic:MaximumWeight 783 1.61446e-05 insert ISGW2Hadronic:MaximumWeight 784 6.79588e-06 insert ISGW2Hadronic:MaximumWeight 785 3.58295e-05 insert ISGW2Hadronic:MaximumWeight 786 2.83533e-06 insert ISGW2Hadronic:MaximumWeight 787 3.71764e-06 insert ISGW2Hadronic:MaximumWeight 788 9.84708e-05 insert ISGW2Hadronic:MaximumWeight 789 7.57617e-06 insert ISGW2Hadronic:MaximumWeight 790 0.00011478 insert ISGW2Hadronic:MaximumWeight 791 1.00423e-05 insert ISGW2Hadronic:MaximumWeight 792 0.00030695 insert ISGW2Hadronic:MaximumWeight 793 4.41257e-06 insert ISGW2Hadronic:MaximumWeight 794 0.00010307 insert ISGW2Hadronic:MaximumWeight 795 4.126e-05 insert ISGW2Hadronic:MaximumWeight 796 1.05423e-06 insert ISGW2Hadronic:MaximumWeight 797 8.3378e-07 insert ISGW2Hadronic:MaximumWeight 798 2.25836e-05 insert ISGW2Hadronic:MaximumWeight 799 1.93849e-06 insert ISGW2Hadronic:MaximumWeight 800 5.23629e-06 insert ISGW2Hadronic:MaximumWeight 801 1.20575e-06 insert ISGW2Hadronic:MaximumWeight 802 2.80094e-05 insert ISGW2Hadronic:MaximumWeight 803 1.29433e-05 insert ISGW2Hadronic:MaximumWeight 804 7.11826e-07 insert ISGW2Hadronic:MaximumWeight 805 5.58668e-08 insert ISGW2Hadronic:MaximumWeight 806 7.232e-08 insert ISGW2Hadronic:MaximumWeight 807 1.91906e-06 insert ISGW2Hadronic:MaximumWeight 808 1.48987e-07 insert ISGW2Hadronic:MaximumWeight 809 2.28249e-06 insert ISGW2Hadronic:MaximumWeight 810 2.21357e-07 insert ISGW2Hadronic:MaximumWeight 811 6.14984e-06 insert ISGW2Hadronic:MaximumWeight 812 9.31588e-08 insert ISGW2Hadronic:MaximumWeight 813 2.07709e-06 insert ISGW2Hadronic:MaximumWeight 814 8.23876e-07 insert ISGW2Hadronic:MaximumWeight 815 0.000410597 insert ISGW2Hadronic:MaximumWeight 816 4.68271e-06 insert ISGW2Hadronic:MaximumWeight 817 0.000473521 insert ISGW2Hadronic:MaximumWeight 818 4.65366e-06 insert ISGW2Hadronic:MaximumWeight 819 0.00151431 insert ISGW2Hadronic:MaximumWeight 820 0.000585417 insert ISGW2Hadronic:MaximumWeight 821 0.00234775 insert ISGW2Hadronic:MaximumWeight 822 1.81831e-06 insert ISGW2Hadronic:MaximumWeight 823 0.00185336 insert ISGW2Hadronic:MaximumWeight 824 1.68158e-05 insert ISGW2Hadronic:MaximumWeight 825 0.0131144 insert ISGW2Hadronic:MaximumWeight 826 0.004699 insert ISGW2Hadronic:MaximumWeight 827 1.82237e-08 insert ISGW2Hadronic:MaximumWeight 828 8.93551e-09 insert ISGW2Hadronic:MaximumWeight 829 7.69955e-09 insert ISGW2Hadronic:MaximumWeight 830 6.50222e-06 insert ISGW2Hadronic:MaximumWeight 831 9.84208e-07 insert ISGW2Hadronic:MaximumWeight 832 6.04068e-08 insert ISGW2Hadronic:MaximumWeight 833 1.58238e-07 insert ISGW2Hadronic:MaximumWeight 834 1.6518e-07 insert ISGW2Hadronic:MaximumWeight 835 1.10225e-05 insert ISGW2Hadronic:MaximumWeight 836 1.69001e-06 insert ISGW2Hadronic:MaximumWeight 837 0.00039456 insert ISGW2Hadronic:MaximumWeight 838 3.69587e-05 insert ISGW2Hadronic:MaximumWeight 839 9.76043e-08 insert ISGW2Hadronic:MaximumWeight 840 4.87061e-08 insert ISGW2Hadronic:MaximumWeight 841 4.26645e-08 insert ISGW2Hadronic:MaximumWeight 842 4.49094e-05 insert ISGW2Hadronic:MaximumWeight 843 6.79699e-06 insert ISGW2Hadronic:MaximumWeight 844 3.09741e-07 insert ISGW2Hadronic:MaximumWeight 845 6.477e-07 insert ISGW2Hadronic:MaximumWeight 846 7.91503e-07 insert ISGW2Hadronic:MaximumWeight 847 4.90401e-05 insert ISGW2Hadronic:MaximumWeight 848 7.1365e-06 insert ISGW2Hadronic:MaximumWeight 849 0.00203847 insert ISGW2Hadronic:MaximumWeight 850 0.000450806 insert ISGW2Hadronic:MaximumWeight 851 2.3999e-09 insert ISGW2Hadronic:MaximumWeight 852 1.20405e-09 insert ISGW2Hadronic:MaximumWeight 853 1.062e-09 insert ISGW2Hadronic:MaximumWeight 854 1.13105e-06 insert ISGW2Hadronic:MaximumWeight 855 1.7105e-07 insert ISGW2Hadronic:MaximumWeight 856 9.16127e-09 insert ISGW2Hadronic:MaximumWeight 857 1.97405e-08 insert ISGW2Hadronic:MaximumWeight 858 2.79079e-08 insert ISGW2Hadronic:MaximumWeight 859 2.57305e-06 insert ISGW2Hadronic:MaximumWeight 860 4.00939e-07 insert ISGW2Hadronic:MaximumWeight 861 0.000113287 insert ISGW2Hadronic:MaximumWeight 862 2.35754e-05 insert ISGW2Hadronic:MaximumWeight 863 4.62955e-09 insert ISGW2Hadronic:MaximumWeight 864 2.28365e-09 insert ISGW2Hadronic:MaximumWeight 865 1.97215e-09 insert ISGW2Hadronic:MaximumWeight 866 1.72238e-06 insert ISGW2Hadronic:MaximumWeight 867 2.60708e-07 insert ISGW2Hadronic:MaximumWeight 868 1.44577e-08 insert ISGW2Hadronic:MaximumWeight 869 3.14056e-08 insert ISGW2Hadronic:MaximumWeight 870 3.66321e-08 insert ISGW2Hadronic:MaximumWeight 871 1.87355e-06 insert ISGW2Hadronic:MaximumWeight 872 2.86205e-07 insert ISGW2Hadronic:MaximumWeight 873 6.43264e-05 insert ISGW2Hadronic:MaximumWeight 874 1.36286e-05 insert ISGW2Hadronic:MaximumWeight 875 0.000886924 insert ISGW2Hadronic:MaximumWeight 876 0.0237334 insert ISGW2Hadronic:MaximumWeight 877 0.00193323 insert ISGW2Hadronic:MaximumWeight 878 0.000748156 insert ISGW2Hadronic:MaximumWeight 879 0.0154115 insert ISGW2Hadronic:MaximumWeight 880 0.00490868 insert ISGW2Hadronic:MaximumWeight 881 0.000441573 insert ISGW2Hadronic:MaximumWeight 882 0.0112928 insert ISGW2Hadronic:MaximumWeight 883 0.000743722 insert ISGW2Hadronic:MaximumWeight 884 0.00140372 insert ISGW2Hadronic:MaximumWeight 885 0.0340804 insert ISGW2Hadronic:MaximumWeight 886 0.0156712 insert ISGW2Hadronic:MaximumWeight 887 0.00163325 insert ISGW2Hadronic:MaximumWeight 888 0.000119482 insert ISGW2Hadronic:MaximumWeight 889 3.5879e-05 insert ISGW2Hadronic:MaximumWeight 890 0.000729475 insert ISGW2Hadronic:MaximumWeight 891 1.5751e-05 insert ISGW2Hadronic:MaximumWeight 892 0.00523738 insert ISGW2Hadronic:MaximumWeight 893 0.000460999 insert ISGW2Hadronic:MaximumWeight 894 0.0133939 insert ISGW2Hadronic:MaximumWeight 895 0.000120436 insert ISGW2Hadronic:MaximumWeight 896 0.00234788 insert ISGW2Hadronic:MaximumWeight 897 0.000285831 insert ISGW2Hadronic:MaximumWeight 898 0.0018135 insert ISGW2Hadronic:MaximumWeight 899 0.000137667 insert ISGW2Hadronic:MaximumWeight 900 9.31836e-05 insert ISGW2Hadronic:MaximumWeight 901 0.0022597 insert ISGW2Hadronic:MaximumWeight 902 0.000110254 insert ISGW2Hadronic:MaximumWeight 903 0.00540313 insert ISGW2Hadronic:MaximumWeight 904 0.00041917 insert ISGW2Hadronic:MaximumWeight 905 0.0130272 insert ISGW2Hadronic:MaximumWeight 906 0.000104678 insert ISGW2Hadronic:MaximumWeight 907 0.00203924 insert ISGW2Hadronic:MaximumWeight 908 0.000493072 insert ISGW2Hadronic:MaximumWeight 909 0.000271784 insert ISGW2Hadronic:MaximumWeight 910 2.08393e-05 insert ISGW2Hadronic:MaximumWeight 911 1.7425e-05 insert ISGW2Hadronic:MaximumWeight 912 0.000430976 insert ISGW2Hadronic:MaximumWeight 913 2.2807e-05 insert ISGW2Hadronic:MaximumWeight 914 0.000879561 insert ISGW2Hadronic:MaximumWeight 915 8.41457e-05 insert ISGW2Hadronic:MaximumWeight 916 0.0023151 insert ISGW2Hadronic:MaximumWeight 917 2.53281e-05 insert ISGW2Hadronic:MaximumWeight 918 0.000523796 insert ISGW2Hadronic:MaximumWeight 919 0.00012047 insert ISGW2Hadronic:MaximumWeight 920 0.000279861 insert ISGW2Hadronic:MaximumWeight 921 2.06215e-05 insert ISGW2Hadronic:MaximumWeight 922 1.04397e-05 insert ISGW2Hadronic:MaximumWeight 923 0.000240148 insert ISGW2Hadronic:MaximumWeight 924 8.82113e-06 insert ISGW2Hadronic:MaximumWeight 925 0.000809399 insert ISGW2Hadronic:MaximumWeight 926 6.6008e-05 insert ISGW2Hadronic:MaximumWeight 927 0.00195354 insert ISGW2Hadronic:MaximumWeight 928 1.78419e-05 insert ISGW2Hadronic:MaximumWeight 929 0.000358847 insert ISGW2Hadronic:MaximumWeight 930 8.5362e-05 insert ISGW2Hadronic:MaximumWeight 931 5.88546e-07 insert ISGW2Hadronic:MaximumWeight 932 1.98919e-07 insert ISGW2Hadronic:MaximumWeight 933 3.21201e-07 insert ISGW2Hadronic:MaximumWeight 934 4.79377e-08 insert ISGW2Hadronic:MaximumWeight 935 0.000112821 insert ISGW2Hadronic:MaximumWeight 936 6.48632e-07 insert ISGW2Hadronic:MaximumWeight 937 1.74159e-06 insert ISGW2Hadronic:MaximumWeight 938 1.78368e-06 insert ISGW2Hadronic:MaximumWeight 939 4.90761e-08 insert ISGW2Hadronic:MaximumWeight 940 0.000115554 insert ISGW2Hadronic:MaximumWeight 941 1.85262e-05 insert ISGW2Hadronic:MaximumWeight 942 8.18308e-06 insert ISGW2Hadronic:MaximumWeight 943 4.62801e-07 insert ISGW2Hadronic:MaximumWeight 944 1.26414e-07 insert ISGW2Hadronic:MaximumWeight 945 3.38792e-08 insert ISGW2Hadronic:MaximumWeight 946 7.97359e-05 insert ISGW2Hadronic:MaximumWeight 947 4.49779e-07 insert ISGW2Hadronic:MaximumWeight 948 1.17316e-06 insert ISGW2Hadronic:MaximumWeight 949 1.24509e-06 insert ISGW2Hadronic:MaximumWeight 950 3.31625e-08 insert ISGW2Hadronic:MaximumWeight 951 7.81697e-05 insert ISGW2Hadronic:MaximumWeight 952 1.24059e-05 insert ISGW2Hadronic:MaximumWeight 953 4.55153e-06 insert ISGW2Hadronic:MaximumWeight 954 1.85609e-06 insert ISGW2Hadronic:MaximumWeight 955 1.11755e-08 insert ISGW2Hadronic:MaximumWeight 956 2.64951e-05 insert ISGW2Hadronic:MaximumWeight 957 1.58397e-06 insert ISGW2Hadronic:MaximumWeight 958 9.00351e-07 insert ISGW2Hadronic:MaximumWeight 959 8.15345e-07 insert ISGW2Hadronic:MaximumWeight 960 1.12759e-07 insert ISGW2Hadronic:MaximumWeight 961 0.000286059 insert ISGW2Hadronic:MaximumWeight 962 0.000115894 insert ISGW2Hadronic:MaximumWeight 963 7.43252e-05 insert ISGW2Hadronic:MaximumWeight 964 1.03212e-07 insert ISGW2Hadronic:MaximumWeight 965 5.11217e-08 insert ISGW2Hadronic:MaximumWeight 966 4.51115e-08 insert ISGW2Hadronic:MaximumWeight 967 1.80487e-08 insert ISGW2Hadronic:MaximumWeight 968 4.24776e-05 insert ISGW2Hadronic:MaximumWeight 969 3.40117e-07 insert ISGW2Hadronic:MaximumWeight 970 8.60935e-07 insert ISGW2Hadronic:MaximumWeight 971 9.27976e-07 insert ISGW2Hadronic:MaximumWeight 972 2.73631e-08 insert ISGW2Hadronic:MaximumWeight 973 6.47482e-05 insert ISGW2Hadronic:MaximumWeight 974 8.27668e-06 insert ISGW2Hadronic:MaximumWeight 975 1.74418e-06 insert ISGW2Hadronic:MaximumWeight 976 3.29701e-07 insert ISGW2Hadronic:MaximumWeight 977 1.66486e-07 insert ISGW2Hadronic:MaximumWeight 978 1.5326e-07 insert ISGW2Hadronic:MaximumWeight 979 7.53116e-08 insert ISGW2Hadronic:MaximumWeight 980 0.000177246 insert ISGW2Hadronic:MaximumWeight 981 1.0641e-06 insert ISGW2Hadronic:MaximumWeight 982 2.70055e-06 insert ISGW2Hadronic:MaximumWeight 983 2.84333e-06 insert ISGW2Hadronic:MaximumWeight 984 7.90167e-08 insert ISGW2Hadronic:MaximumWeight 985 0.000185875 insert ISGW2Hadronic:MaximumWeight 986 2.63344e-05 insert ISGW2Hadronic:MaximumWeight 987 9.6272e-06 insert ISGW2Hadronic:MaximumWeight 988 2.92555e-07 insert ISGW2Hadronic:MaximumWeight 989 1.4757e-07 insert ISGW2Hadronic:MaximumWeight 990 1.30582e-07 insert ISGW2Hadronic:MaximumWeight 991 6.50594e-08 insert ISGW2Hadronic:MaximumWeight 992 0.000153366 insert ISGW2Hadronic:MaximumWeight 993 1.00193e-06 insert ISGW2Hadronic:MaximumWeight 994 2.65413e-06 insert ISGW2Hadronic:MaximumWeight 995 2.83758e-06 insert ISGW2Hadronic:MaximumWeight 996 1.10096e-07 insert ISGW2Hadronic:MaximumWeight 997 0.000255503 insert ISGW2Hadronic:MaximumWeight 998 6.20238e-05 insert ISGW2Hadronic:MaximumWeight 999 1.67783e-05 insert ISGW2Hadronic:MaximumWeight 1000 1.38928e-08 insert ISGW2Hadronic:MaximumWeight 1001 6.97833e-09 insert ISGW2Hadronic:MaximumWeight 1002 6.32289e-09 insert ISGW2Hadronic:MaximumWeight 1003 2.88991e-09 insert ISGW2Hadronic:MaximumWeight 1004 6.8014e-06 insert ISGW2Hadronic:MaximumWeight 1005 4.52566e-08 insert ISGW2Hadronic:MaximumWeight 1006 1.18607e-07 insert ISGW2Hadronic:MaximumWeight 1007 1.22184e-07 insert ISGW2Hadronic:MaximumWeight 1008 3.5209e-09 insert ISGW2Hadronic:MaximumWeight 1009 8.21433e-06 insert ISGW2Hadronic:MaximumWeight 1010 1.12209e-06 insert ISGW2Hadronic:MaximumWeight 1011 1.89938e-07 insert ISGW2Hadronic:MaximumWeight 1012 4.15691e-07 insert ISGW2Hadronic:MaximumWeight 1013 4.93489e-08 insert ISGW2Hadronic:MaximumWeight 1014 0.000116143 insert ISGW2Hadronic:MaximumWeight 1015 6.97961e-07 insert ISGW2Hadronic:MaximumWeight 1016 1.95149e-06 insert ISGW2Hadronic:MaximumWeight 1017 5.07119e-08 insert ISGW2Hadronic:MaximumWeight 1018 0.0001194 insert ISGW2Hadronic:MaximumWeight 1019 1.86096e-05 insert ISGW2Hadronic:MaximumWeight 1020 8.30376e-06 insert ISGW2Hadronic:MaximumWeight 1021 7.67537e-09 insert ISGW2Hadronic:MaximumWeight 1022 1.8064e-05 insert ISGW2Hadronic:MaximumWeight 1023 6.18392e-07 insert ISGW2Hadronic:MaximumWeight 1024 8.24791e-07 insert ISGW2Hadronic:MaximumWeight 1025 8.57592e-08 insert ISGW2Hadronic:MaximumWeight 1026 0.00020558 insert ISGW2Hadronic:MaximumWeight 1027 8.45082e-05 insert ISGW2Hadronic:MaximumWeight 1028 4.01476e-05 insert ISGW2Hadronic:MaximumWeight 1029 1.01788e-07 insert ISGW2Hadronic:MaximumWeight 1030 5.03709e-08 insert ISGW2Hadronic:MaximumWeight 1031 4.43804e-08 insert ISGW2Hadronic:MaximumWeight 1032 1.75451e-08 insert ISGW2Hadronic:MaximumWeight 1033 4.12924e-05 insert ISGW2Hadronic:MaximumWeight 1034 3.3819e-07 insert ISGW2Hadronic:MaximumWeight 1035 8.89005e-07 insert ISGW2Hadronic:MaximumWeight 1036 9.29738e-07 insert ISGW2Hadronic:MaximumWeight 1037 2.79631e-08 insert ISGW2Hadronic:MaximumWeight 1038 6.53981e-05 insert ISGW2Hadronic:MaximumWeight 1039 8.43248e-06 insert ISGW2Hadronic:MaximumWeight 1040 1.4686e-06 insert ISGW2Hadronic:MaximumWeight 1041 7.8932e-07 insert ISGW2Hadronic:MaximumWeight 1042 3.93797e-07 insert ISGW2Hadronic:MaximumWeight 1043 3.51924e-07 insert ISGW2Hadronic:MaximumWeight 1044 1.62307e-07 insert ISGW2Hadronic:MaximumWeight 1045 0.000383049 insert ISGW2Hadronic:MaximumWeight 1046 2.4891e-06 insert ISGW2Hadronic:MaximumWeight 1047 3.87503e-06 insert ISGW2Hadronic:MaximumWeight 1048 6.63447e-06 insert ISGW2Hadronic:MaximumWeight 1049 1.69127e-07 insert ISGW2Hadronic:MaximumWeight 1050 0.00040778 insert ISGW2Hadronic:MaximumWeight 1051 4.09542e-05 insert ISGW2Hadronic:MaximumWeight 1052 8.57939e-06 insert ISGW2Hadronic:MaximumWeight 1053 3.6461e-08 insert ISGW2Hadronic:MaximumWeight 1054 8.58109e-05 insert ISGW2Hadronic:MaximumWeight 1055 2.90724e-06 insert ISGW2Hadronic:MaximumWeight 1056 4.66503e-08 insert ISGW2Hadronic:MaximumWeight 1057 0.000109417 insert ISGW2Hadronic:MaximumWeight 1058 2.29561e-05 insert ISGW2Hadronic:MaximumWeight 1059 1.01623e-05 insert ISGW2Hadronic:MaximumWeight 1060 1.55555e-08 insert ISGW2Hadronic:MaximumWeight 1061 7.80564e-09 insert ISGW2Hadronic:MaximumWeight 1062 6.93448e-09 insert ISGW2Hadronic:MaximumWeight 1063 3.16542e-09 insert ISGW2Hadronic:MaximumWeight 1064 7.44689e-06 insert ISGW2Hadronic:MaximumWeight 1065 5.0049e-08 insert ISGW2Hadronic:MaximumWeight 1066 1.18038e-07 insert ISGW2Hadronic:MaximumWeight 1067 1.34839e-07 insert ISGW2Hadronic:MaximumWeight 1068 3.51569e-09 insert ISGW2Hadronic:MaximumWeight 1069 8.59698e-06 insert ISGW2Hadronic:MaximumWeight 1070 8.88646e-07 insert ISGW2Hadronic:MaximumWeight 1071 1.63487e-07 insert ISGW2Hadronic:MaximumWeight 1072 1.75402e-05 insert ISGW2Hadronic:MaximumWeight 1073 1.38569e-06 insert ISGW2Hadronic:MaximumWeight 1074 2.08235e-06 insert ISGW2Hadronic:MaximumWeight 1075 5.67102e-05 insert ISGW2Hadronic:MaximumWeight 1076 5.00369e-06 insert ISGW2Hadronic:MaximumWeight 1077 5.65976e-05 insert ISGW2Hadronic:MaximumWeight 1078 5.84247e-06 insert ISGW2Hadronic:MaximumWeight 1079 0.000151382 insert ISGW2Hadronic:MaximumWeight 1080 2.43847e-06 insert ISGW2Hadronic:MaximumWeight 1081 5.34807e-05 insert ISGW2Hadronic:MaximumWeight 1082 2.27224e-05 insert ISGW2Hadronic:MaximumWeight 1083 2.6408e-06 insert ISGW2Hadronic:MaximumWeight 1084 2.09212e-07 insert ISGW2Hadronic:MaximumWeight 1085 3.27552e-07 insert ISGW2Hadronic:MaximumWeight 1086 8.96307e-06 insert ISGW2Hadronic:MaximumWeight 1087 8.05212e-07 insert ISGW2Hadronic:MaximumWeight 1088 2.36028e-05 insert ISGW2Hadronic:MaximumWeight 1089 3.16899e-06 insert ISGW2Hadronic:MaximumWeight 1090 7.53695e-05 insert ISGW2Hadronic:MaximumWeight 1091 3.66392e-06 insert ISGW2Hadronic:MaximumWeight 1092 0.000106789 insert ISGW2Hadronic:MaximumWeight 1093 6.38752e-05 insert ISGW2Hadronic:MaximumWeight 1094 8.54953e-06 insert ISGW2Hadronic:MaximumWeight 1095 6.63564e-07 insert ISGW2Hadronic:MaximumWeight 1096 7.35264e-07 insert ISGW2Hadronic:MaximumWeight 1097 1.91843e-05 insert ISGW2Hadronic:MaximumWeight 1098 1.40067e-06 insert ISGW2Hadronic:MaximumWeight 1099 2.83886e-05 insert ISGW2Hadronic:MaximumWeight 1100 2.96672e-06 insert ISGW2Hadronic:MaximumWeight 1101 7.81843e-05 insert ISGW2Hadronic:MaximumWeight 1102 1.33592e-06 insert ISGW2Hadronic:MaximumWeight 1103 2.9807e-05 insert ISGW2Hadronic:MaximumWeight 1104 1.24781e-05 insert ISGW2Hadronic:MaximumWeight 1105 6.62475e-05 insert ISGW2Hadronic:MaximumWeight 1106 5.2246e-06 insert ISGW2Hadronic:MaximumWeight 1107 6.8377e-06 insert ISGW2Hadronic:MaximumWeight 1108 0.000181921 insert ISGW2Hadronic:MaximumWeight 1109 1.39473e-05 insert ISGW2Hadronic:MaximumWeight 1110 0.000206881 insert ISGW2Hadronic:MaximumWeight 1111 2.00766e-05 insert ISGW2Hadronic:MaximumWeight 1112 0.000565527 insert ISGW2Hadronic:MaximumWeight 1113 7.68625e-06 insert ISGW2Hadronic:MaximumWeight 1114 0.000190377 insert ISGW2Hadronic:MaximumWeight 1115 7.59684e-05 insert ISGW2Hadronic:MaximumWeight 1116 1.32971e-05 insert ISGW2Hadronic:MaximumWeight 1117 1.04931e-06 insert ISGW2Hadronic:MaximumWeight 1118 1.53145e-06 insert ISGW2Hadronic:MaximumWeight 1119 4.14809e-05 insert ISGW2Hadronic:MaximumWeight 1120 3.56083e-06 insert ISGW2Hadronic:MaximumWeight 1121 4.41636e-05 insert ISGW2Hadronic:MaximumWeight 1122 4.74284e-06 insert ISGW2Hadronic:MaximumWeight 1123 0.000122218 insert ISGW2Hadronic:MaximumWeight 1124 2.29019e-06 insert ISGW2Hadronic:MaximumWeight 1125 5.15865e-05 insert ISGW2Hadronic:MaximumWeight 1126 2.37727e-05 insert ISGW2Hadronic:MaximumWeight 1127 1.30705e-06 insert ISGW2Hadronic:MaximumWeight 1128 1.02593e-07 insert ISGW2Hadronic:MaximumWeight 1129 1.32736e-07 insert ISGW2Hadronic:MaximumWeight 1130 3.52286e-06 insert ISGW2Hadronic:MaximumWeight 1131 2.73545e-07 insert ISGW2Hadronic:MaximumWeight 1132 4.20558e-06 insert ISGW2Hadronic:MaximumWeight 1133 3.88076e-07 insert ISGW2Hadronic:MaximumWeight 1134 1.12769e-05 insert ISGW2Hadronic:MaximumWeight 1135 1.7259e-07 insert ISGW2Hadronic:MaximumWeight 1136 3.84341e-06 insert ISGW2Hadronic:MaximumWeight 1137 1.51283e-06 insert ISGW2Hadronic:MaximumWeight 1138 5.23051e-08 insert ISGW2Hadronic:MaximumWeight 1139 2.64177e-08 insert ISGW2Hadronic:MaximumWeight 1140 2.44044e-08 insert ISGW2Hadronic:MaximumWeight 1141 4.31009e-06 insert ISGW2Hadronic:MaximumWeight 1142 2.84748e-05 insert ISGW2Hadronic:MaximumWeight 1143 1.67655e-07 insert ISGW2Hadronic:MaximumWeight 1144 4.49751e-07 insert ISGW2Hadronic:MaximumWeight 1145 4.44501e-07 insert ISGW2Hadronic:MaximumWeight 1146 4.28237e-06 insert ISGW2Hadronic:MaximumWeight 1147 2.82922e-05 insert ISGW2Hadronic:MaximumWeight 1148 0.00139213 insert ISGW2Hadronic:MaximumWeight 1149 0.00053746 insert ISGW2Hadronic:MaximumWeight 1150 2.13348e-08 insert ISGW2Hadronic:MaximumWeight 1151 1.07379e-08 insert ISGW2Hadronic:MaximumWeight 1152 9.65521e-09 insert ISGW2Hadronic:MaximumWeight 1153 1.66542e-06 insert ISGW2Hadronic:MaximumWeight 1154 1.10027e-05 insert ISGW2Hadronic:MaximumWeight 1155 2.26739e-07 insert ISGW2Hadronic:MaximumWeight 1156 3.20913e-07 insert ISGW2Hadronic:MaximumWeight 1157 5.85865e-07 insert ISGW2Hadronic:MaximumWeight 1158 1.49546e-05 insert ISGW2Hadronic:MaximumWeight 1159 9.91298e-05 insert ISGW2Hadronic:MaximumWeight 1160 0.0117267 insert ISGW2Hadronic:MaximumWeight 1161 0.00424909 insert ISGW2Hadronic:MaximumWeight 1162 1.6742e-08 insert ISGW2Hadronic:MaximumWeight 1163 8.20864e-09 insert ISGW2Hadronic:MaximumWeight 1164 7.06158e-09 insert ISGW2Hadronic:MaximumWeight 1165 9.03113e-07 insert ISGW2Hadronic:MaximumWeight 1166 5.96646e-06 insert ISGW2Hadronic:MaximumWeight 1167 5.54773e-08 insert ISGW2Hadronic:MaximumWeight 1168 1.46362e-07 insert ISGW2Hadronic:MaximumWeight 1169 1.51826e-07 insert ISGW2Hadronic:MaximumWeight 1170 1.55353e-06 insert ISGW2Hadronic:MaximumWeight 1171 1.02815e-05 insert ISGW2Hadronic:MaximumWeight 1172 0.000361568 insert ISGW2Hadronic:MaximumWeight 1173 3.27753e-05 insert ISGW2Hadronic:MaximumWeight 1174 8.11822e-08 insert ISGW2Hadronic:MaximumWeight 1175 4.0519e-08 insert ISGW2Hadronic:MaximumWeight 1176 3.55014e-08 insert ISGW2Hadronic:MaximumWeight 1177 5.64896e-06 insert ISGW2Hadronic:MaximumWeight 1178 3.71845e-05 insert ISGW2Hadronic:MaximumWeight 1179 2.58027e-07 insert ISGW2Hadronic:MaximumWeight 1180 6.34181e-07 insert ISGW2Hadronic:MaximumWeight 1181 6.76223e-07 insert ISGW2Hadronic:MaximumWeight 1182 6.15128e-06 insert ISGW2Hadronic:MaximumWeight 1183 3.99378e-05 insert ISGW2Hadronic:MaximumWeight 1184 0.00169509 insert ISGW2Hadronic:MaximumWeight 1185 0.000413171 insert ISGW2Hadronic:MaximumWeight 1186 2.19673e-09 insert ISGW2Hadronic:MaximumWeight 1187 1.10107e-09 insert ISGW2Hadronic:MaximumWeight 1188 9.76783e-10 insert ISGW2Hadronic:MaximumWeight 1189 1.56394e-07 insert ISGW2Hadronic:MaximumWeight 1190 1.03151e-06 insert ISGW2Hadronic:MaximumWeight 1191 8.25863e-09 insert ISGW2Hadronic:MaximumWeight 1192 2.18363e-08 insert ISGW2Hadronic:MaximumWeight 1193 2.57299e-08 insert ISGW2Hadronic:MaximumWeight 1194 3.7531e-07 insert ISGW2Hadronic:MaximumWeight 1195 2.4446e-06 insert ISGW2Hadronic:MaximumWeight 1196 0.000104122 insert ISGW2Hadronic:MaximumWeight 1197 2.16795e-05 insert ISGW2Hadronic:MaximumWeight 1198 4.23814e-09 insert ISGW2Hadronic:MaximumWeight 1199 2.09014e-09 insert ISGW2Hadronic:MaximumWeight 1200 1.78532e-09 insert ISGW2Hadronic:MaximumWeight 1201 2.38452e-07 insert ISGW2Hadronic:MaximumWeight 1202 1.57534e-06 insert ISGW2Hadronic:MaximumWeight 1203 1.31088e-08 insert ISGW2Hadronic:MaximumWeight 1204 3.17479e-08 insert ISGW2Hadronic:MaximumWeight 1205 3.36211e-08 insert ISGW2Hadronic:MaximumWeight 1206 2.63185e-07 insert ISGW2Hadronic:MaximumWeight 1207 1.73966e-06 insert ISGW2Hadronic:MaximumWeight 1208 5.89082e-05 insert ISGW2Hadronic:MaximumWeight 1209 1.25308e-05 insert ISGW2Hadronic:MaximumWeight 1210 0.0078022 insert ISGW2Hadronic:MaximumWeight 1211 0.000612036 insert ISGW2Hadronic:MaximumWeight 1212 0.000813526 insert ISGW2Hadronic:MaximumWeight 1213 0.0217676 insert ISGW2Hadronic:MaximumWeight 1214 0.00177234 insert ISGW2Hadronic:MaximumWeight 1215 0.0240458 insert ISGW2Hadronic:MaximumWeight 1216 0.00214559 insert ISGW2Hadronic:MaximumWeight 1217 0.0606444 insert ISGW2Hadronic:MaximumWeight 1218 0.000686235 insert ISGW2Hadronic:MaximumWeight 1219 0.0141092 insert ISGW2Hadronic:MaximumWeight 1220 0.00448638 insert ISGW2Hadronic:MaximumWeight 1221 0.00600515 insert ISGW2Hadronic:MaximumWeight 1222 0.000465308 insert ISGW2Hadronic:MaximumWeight 1223 0.000463279 insert ISGW2Hadronic:MaximumWeight 1224 0.0118611 insert ISGW2Hadronic:MaximumWeight 1225 0.000776691 insert ISGW2Hadronic:MaximumWeight 1226 0.0219934 insert ISGW2Hadronic:MaximumWeight 1227 0.00276411 insert ISGW2Hadronic:MaximumWeight 1228 0.067914 insert ISGW2Hadronic:MaximumWeight 1229 0.00147159 insert ISGW2Hadronic:MaximumWeight 1230 0.0358058 insert ISGW2Hadronic:MaximumWeight 1231 0.0163908 insert ISGW2Hadronic:MaximumWeight 1232 0.00217433 insert ISGW2Hadronic:MaximumWeight 1233 0.000158004 insert ISGW2Hadronic:MaximumWeight 1234 4.09367e-05 insert ISGW2Hadronic:MaximumWeight 1235 0.000799852 insert ISGW2Hadronic:MaximumWeight 1236 1.45599e-05 insert ISGW2Hadronic:MaximumWeight 1237 0.00710383 insert ISGW2Hadronic:MaximumWeight 1238 0.000478098 insert ISGW2Hadronic:MaximumWeight 1239 0.0174314 insert ISGW2Hadronic:MaximumWeight 1240 0.000149032 insert ISGW2Hadronic:MaximumWeight 1241 0.0027465 insert ISGW2Hadronic:MaximumWeight 1242 0.000290487 insert ISGW2Hadronic:MaximumWeight 1243 0.0016875 insert ISGW2Hadronic:MaximumWeight 1244 0.000127946 insert ISGW2Hadronic:MaximumWeight 1245 8.58441e-05 insert ISGW2Hadronic:MaximumWeight 1246 0.0020821 insert ISGW2Hadronic:MaximumWeight 1247 0.000101742 insert ISGW2Hadronic:MaximumWeight 1248 0.00502281 insert ISGW2Hadronic:MaximumWeight 1249 0.000381386 insert ISGW2Hadronic:MaximumWeight 1250 0.0120721 insert ISGW2Hadronic:MaximumWeight 1251 9.60597e-05 insert ISGW2Hadronic:MaximumWeight 1252 0.00187873 insert ISGW2Hadronic:MaximumWeight 1253 0.000454805 insert ISGW2Hadronic:MaximumWeight 1254 0.000249562 insert ISGW2Hadronic:MaximumWeight 1255 1.91356e-05 insert ISGW2Hadronic:MaximumWeight 1256 1.60058e-05 insert ISGW2Hadronic:MaximumWeight 1257 0.000395901 insert ISGW2Hadronic:MaximumWeight 1258 2.09622e-05 insert ISGW2Hadronic:MaximumWeight 1259 0.00080766 insert ISGW2Hadronic:MaximumWeight 1260 7.69074e-05 insert ISGW2Hadronic:MaximumWeight 1261 0.00212493 insert ISGW2Hadronic:MaximumWeight 1262 2.40413e-05 insert ISGW2Hadronic:MaximumWeight 1263 0.000480097 insert ISGW2Hadronic:MaximumWeight 1264 0.00011078 insert ISGW2Hadronic:MaximumWeight 1265 0.000256672 insert ISGW2Hadronic:MaximumWeight 1266 1.89139e-05 insert ISGW2Hadronic:MaximumWeight 1267 9.58848e-06 insert ISGW2Hadronic:MaximumWeight 1268 0.000220586 insert ISGW2Hadronic:MaximumWeight 1269 8.10829e-06 insert ISGW2Hadronic:MaximumWeight 1270 0.000743056 insert ISGW2Hadronic:MaximumWeight 1271 6.0154e-05 insert ISGW2Hadronic:MaximumWeight 1272 0.00179367 insert ISGW2Hadronic:MaximumWeight 1273 1.64384e-05 insert ISGW2Hadronic:MaximumWeight 1274 0.000329703 insert ISGW2Hadronic:MaximumWeight 1275 7.8486e-05 insert ISGW2Hadronic:MaximumWeight 1276 0.00367769 insert ISGW2Hadronic:MaximumWeight 1277 9.25585e-05 insert ISGW2Hadronic:MaximumWeight 1278 0.00941473 insert ISGW2Hadronic:MaximumWeight 1279 0.000405428 insert ISGW2Hadronic:MaximumWeight 1280 0.0128822 insert ISGW2Hadronic:MaximumWeight 1281 0.000790063 insert ISGW2Hadronic:MaximumWeight 1282 0.000111289 insert ISGW2Hadronic:MaximumWeight 1283 0.00721965 insert ISGW2Hadronic:MaximumWeight 1284 0.00010792 insert ISGW2Hadronic:MaximumWeight 1285 0.00328307 insert ISGW2Hadronic:MaximumWeight 1286 1.48509e-05 insert ISGW2Hadronic:MaximumWeight 1287 2.43091e-07 insert ISGW2Hadronic:MaximumWeight 1288 7.78723e-06 insert ISGW2Hadronic:MaximumWeight 1289 1.17322e-10 insert ISGW2Hadronic:MaximumWeight 1290 5.4119e-10 insert ISGW2Hadronic:MaximumWeight 1291 0.00174138 insert ISGW2Hadronic:MaximumWeight 1292 6.2123e-05 insert ISGW2Hadronic:MaximumWeight 1293 0.00103 insert ISGW2Hadronic:MaximumWeight 1294 4.59474e-06 insert ISGW2Hadronic:MaximumWeight 1295 1.01343e-05 insert ISGW2Hadronic:MaximumWeight 1296 1.16824e-06 insert ISGW2Hadronic:MaximumWeight 1297 2.28908e-08 insert ISGW2Hadronic:MaximumWeight 1298 2.64652e-05 insert ISGW2Hadronic:MaximumWeight 1299 9.98891e-08 insert ISGW2Hadronic:MaximumWeight 1300 1.3507e-07 insert ISGW2Hadronic:MaximumWeight 1301 1.92389e-05 insert ISGW2Hadronic:MaximumWeight 1302 3.86068e-07 insert ISGW2Hadronic:MaximumWeight 1303 3.02561e-05 insert ISGW2Hadronic:MaximumWeight 1304 3.39565e-07 insert ISGW2Hadronic:MaximumWeight 1305 3.84018e-06 insert ISGW2Hadronic:MaximumWeight 1306 0.00032859 insert ISGW2Hadronic:MaximumWeight 1307 0.000401135 insert ISGW2Hadronic:MaximumWeight 1308 0.00349064 insert ISGW2Hadronic:MaximumWeight 1309 0.0176527 insert ISGW2Hadronic:MaximumWeight 1310 0.000842462 insert ISGW2Hadronic:MaximumWeight 1311 0.00194719 insert ISGW2Hadronic:MaximumWeight 1312 0.0070925 insert ISGW2Hadronic:MaximumWeight 1313 0.0249823 insert ISGW2Hadronic:MaximumWeight 1314 0.0011664 insert ISGW2Hadronic:MaximumWeight 1315 7.18727e-05 insert ISGW2Hadronic:MaximumWeight 1316 0.00311335 insert ISGW2Hadronic:MaximumWeight 1317 0.00156395 insert ISGW2Hadronic:MaximumWeight 1318 0.00266225 insert ISGW2Hadronic:MaximumWeight 1319 0.000661381 insert ISGW2Hadronic:MaximumWeight 1320 0.00158384 insert ISGW2Hadronic:MaximumWeight 1321 0.00621579 insert ISGW2Hadronic:MaximumWeight 1322 0.0204961 insert ISGW2Hadronic:MaximumWeight 1323 0.000304811 insert ISGW2Hadronic:MaximumWeight 1324 1.37468e-06 insert ISGW2Hadronic:MaximumWeight 1325 2.72612e-07 insert ISGW2Hadronic:MaximumWeight 1326 4.13346e-08 insert ISGW2Hadronic:MaximumWeight 1327 1.47043e-05 insert ISGW2Hadronic:MaximumWeight 1328 6.06771e-07 insert ISGW2Hadronic:MaximumWeight 1329 4.01993e-11 insert ISGW2Hadronic:MaximumWeight 1330 9.79514e-12 insert ISGW2Hadronic:MaximumWeight 1331 3.49517e-09 insert ISGW2Hadronic:MaximumWeight 1332 2.62134e-11 insert ISGW2Hadronic:MaximumWeight 1333 0.000156677 insert ISGW2Hadronic:MaximumWeight 1334 0.000140583 insert ISGW2Hadronic:MaximumWeight 1335 1.09081e-05 insert ISGW2Hadronic:MaximumWeight 1336 0.00388588 insert ISGW2Hadronic:MaximumWeight 1337 9.13054e-05 insert ISGW2Hadronic:MaximumWeight 1338 3.4736e-05 insert ISGW2Hadronic:MaximumWeight 1339 6.71085e-07 insert ISGW2Hadronic:MaximumWeight 1340 0.00024777 insert ISGW2Hadronic:MaximumWeight 1341 9.31782e-07 insert ISGW2Hadronic:MaximumWeight 1342 1.03165e-07 insert ISGW2Hadronic:MaximumWeight 1343 3.9905e-08 insert ISGW2Hadronic:MaximumWeight 1344 3.86395e-09 insert ISGW2Hadronic:MaximumWeight 1345 1.37648e-06 insert ISGW2Hadronic:MaximumWeight 1346 2.3475e-06 insert ISGW2Hadronic:MaximumWeight 1347 3.97246e-07 insert ISGW2Hadronic:MaximumWeight 1348 1.51149e-08 insert ISGW2Hadronic:MaximumWeight 1349 5.36383e-06 insert ISGW2Hadronic:MaximumWeight 1350 1.20659e-08 insert ISGW2Hadronic:MaximumWeight 1351 1.74742e-06 insert ISGW2Hadronic:MaximumWeight 1352 7.14764e-07 insert ISGW2Hadronic:MaximumWeight 1353 2.00267e-09 insert ISGW2Hadronic:MaximumWeight 1354 6.76701e-08 insert ISGW2Hadronic:MaximumWeight 1355 2.41066e-05 insert ISGW2Hadronic:MaximumWeight 1356 2.72069e-06 insert ISGW2Hadronic:MaximumWeight 1357 1.07493e-06 insert ISGW2Hadronic:MaximumWeight 1358 2.33504e-07 insert ISGW2Hadronic:MaximumWeight 1359 5.80542e-08 insert ISGW2Hadronic:MaximumWeight 1360 2.07011e-05 insert ISGW2Hadronic:MaximumWeight 1361 3.43848e-07 insert ISGW2Hadronic:MaximumWeight 1362 0.0330147 insert ISGW2Hadronic:MaximumWeight 1363 0.0761273 insert ISGW2Hadronic:MaximumWeight 1364 0.0822188 insert ISGW2Hadronic:MaximumWeight 1365 0.0601226 insert ISGW2Hadronic:MaximumWeight 1366 0.0877635 insert ISGW2Hadronic:MaximumWeight 1367 0.00432713 insert ISGW2Hadronic:MaximumWeight 1368 0.0748643 insert ISGW2Hadronic:MaximumWeight 1369 0.454646 insert ISGW2Hadronic:MaximumWeight 1370 0.0215769 insert ISGW2Hadronic:MaximumWeight 1371 0.00022902 insert ISGW2Hadronic:MaximumWeight 1372 7.63998e-07 insert ISGW2Hadronic:MaximumWeight 1373 0.000116743 insert ISGW2Hadronic:MaximumWeight 1374 2.01504e-09 insert ISGW2Hadronic:MaximumWeight 1375 7.49442e-09 insert ISGW2Hadronic:MaximumWeight 1376 0.0110998 insert ISGW2Hadronic:MaximumWeight 1377 0.000168488 insert ISGW2Hadronic:MaximumWeight 1378 0.00108252 insert ISGW2Hadronic:MaximumWeight 1379 1.68774e-09 insert ISGW2Hadronic:MaximumWeight 1380 6.10161e-09 insert ISGW2Hadronic:MaximumWeight 1381 0.00215666 insert ISGW2Hadronic:MaximumWeight 1382 5.0497e-05 insert ISGW2Hadronic:MaximumWeight 1383 0.00251352 insert ISGW2Hadronic:MaximumWeight 1384 2.5448e-07 insert ISGW2Hadronic:MaximumWeight 1385 7.96188e-07 insert ISGW2Hadronic:MaximumWeight 1386 0.000188892 insert ISGW2Hadronic:MaximumWeight 1387 1.81297e-07 insert ISGW2Hadronic:MaximumWeight 1388 2.73147e-05 insert ISGW2Hadronic:MaximumWeight 1389 4.54628e-08 insert ISGW2Hadronic:MaximumWeight 1390 4.99909e-08 insert ISGW2Hadronic:MaximumWeight 1391 0.00293643 insert ISGW2Hadronic:MaximumWeight 1392 0.000216581 insert ISGW2Hadronic:MaximumWeight 1393 0.00746871 insert ISGW2Hadronic:MaximumWeight 1394 0.014 insert ISGW2Hadronic:MaximumWeight 1395 0.0132149 insert ISGW2Hadronic:MaximumWeight 1396 0.000523708 insert ISGW2Hadronic:MaximumWeight 1397 3.5083e-05 insert ISGW2Hadronic:MaximumWeight 1398 0.00559303 insert ISGW2Hadronic:MaximumWeight 1399 0.000318094 insert ISGW2Hadronic:MaximumWeight 1400 0.0056286 insert ISGW2Hadronic:MaximumWeight 1401 1.27614e-05 insert ISGW2Hadronic:MaximumWeight 1402 1.24871e-07 insert ISGW2Hadronic:MaximumWeight 1403 4.02971e-06 insert ISGW2Hadronic:MaximumWeight 1404 7.48277e-11 insert ISGW2Hadronic:MaximumWeight 1405 3.37843e-10 insert ISGW2Hadronic:MaximumWeight 1406 0.000728481 insert ISGW2Hadronic:MaximumWeight 1407 2.47234e-05 insert ISGW2Hadronic:MaximumWeight 1408 0.00080794 insert ISGW2Hadronic:MaximumWeight 1409 5.40723e-06 insert ISGW2Hadronic:MaximumWeight 1410 6.57907e-06 insert ISGW2Hadronic:MaximumWeight 1411 0.000608471 insert ISGW2Hadronic:MaximumWeight 1412 2.02492e-05 insert ISGW2Hadronic:MaximumWeight 1413 0.0012743 insert ISGW2Hadronic:MaximumWeight 1414 1.69603e-05 insert ISGW2Hadronic:MaximumWeight 1415 4.16493e-05 insert ISGW2Hadronic:MaximumWeight 1416 6.69782e-06 insert ISGW2Hadronic:MaximumWeight 1417 1.51082e-08 insert ISGW2Hadronic:MaximumWeight 1418 3.61152e-07 insert ISGW2Hadronic:MaximumWeight 1419 1.83824e-15 insert ISGW2Hadronic:MaximumWeight 1420 0.00026149 insert ISGW2Hadronic:MaximumWeight 1421 5.3417e-05 insert ISGW2Hadronic:MaximumWeight 1422 0.000106628 insert ISGW2Hadronic:MaximumWeight 1423 1.92528e-05 insert ISGW2Hadronic:MaximumWeight 1424 0.00685856 insert ISGW2Hadronic:MaximumWeight 1425 0.000355755 insert ISGW2Hadronic:MaximumWeight 1426 0.000831802 insert ISGW2Hadronic:MaximumWeight 1427 0.00130085 insert ISGW2Hadronic:MaximumWeight 1428 2.96396e-05 insert ISGW2Hadronic:MaximumWeight 1429 0.0105587 insert ISGW2Hadronic:MaximumWeight 1430 0.000618186 insert ISGW2Hadronic:MaximumWeight 1431 0.000321353 insert ISGW2Hadronic:MaximumWeight 1432 6.07499e-05 insert ISGW2Hadronic:MaximumWeight 1433 3.10856e-06 insert ISGW2Hadronic:MaximumWeight 1434 0.00110739 insert ISGW2Hadronic:MaximumWeight 1435 0.000500143 insert ISGW2Hadronic:MaximumWeight 1436 1.24519e-06 insert ISGW2Hadronic:MaximumWeight 1437 0.000968856 insert ISGW2Hadronic:MaximumWeight 1438 2.76331e-05 insert ISGW2Hadronic:MaximumWeight 1439 0.00985436 insert ISGW2Hadronic:MaximumWeight 1440 0.000479951 insert ISGW2Hadronic:MaximumWeight 1441 5.76351e-07 insert ISGW2Hadronic:MaximumWeight 1442 7.73783e-08 insert ISGW2Hadronic:MaximumWeight 1443 1.06292e-08 insert ISGW2Hadronic:MaximumWeight 1444 3.78679e-06 insert ISGW2Hadronic:MaximumWeight 1445 1.71629e-07 insert ISGW2Hadronic:MaximumWeight 1446 5.97405e-11 insert ISGW2Hadronic:MaximumWeight 1447 5.67563e-12 insert ISGW2Hadronic:MaximumWeight 1448 2.03119e-09 insert ISGW2Hadronic:MaximumWeight 1449 1.53204e-11 insert ISGW2Hadronic:MaximumWeight 1450 3.27472e-05 insert ISGW2Hadronic:MaximumWeight 1451 2.91729e-05 insert ISGW2Hadronic:MaximumWeight 1452 2.18535e-06 insert ISGW2Hadronic:MaximumWeight 1453 0.000778503 insert ISGW2Hadronic:MaximumWeight 1454 3.66339e-05 insert ISGW2Hadronic:MaximumWeight 1455 9.64507e-06 insert ISGW2Hadronic:MaximumWeight 1456 4.53158e-07 insert ISGW2Hadronic:MaximumWeight 1457 0.000162094 insert ISGW2Hadronic:MaximumWeight 1458 3.26765e-07 insert ISGW2Hadronic:MaximumWeight 1459 0.000228276 insert ISGW2Hadronic:MaximumWeight 1460 6.17453e-07 insert ISGW2Hadronic:MaximumWeight 1461 1.78476e-06 insert ISGW2Hadronic:MaximumWeight 1462 0.000635799 insert ISGW2Hadronic:MaximumWeight 1463 0.000118096 insert ISGW2Hadronic:MaximumWeight 1464 1.58383e-06 insert ISGW2Hadronic:MaximumWeight 1465 1.44423e-06 insert ISGW2Hadronic:MaximumWeight 1466 0.000514053 insert ISGW2Hadronic:MaximumWeight 1467 3.87438e-06 insert ISGW2Hadronic:MaximumWeight 1468 3.02908e-07 insert ISGW2Hadronic:MaximumWeight 1469 5.11615e-09 insert ISGW2Hadronic:MaximumWeight 1470 1.22897e-09 insert ISGW2Hadronic:MaximumWeight 1471 4.37771e-07 insert ISGW2Hadronic:MaximumWeight 1472 1.61607e-08 insert ISGW2Hadronic:MaximumWeight 1473 7.95834e-17 insert ISGW2Hadronic:MaximumWeight 1474 2.78824e-14 insert ISGW2Hadronic:MaximumWeight 1475 0.000602705 insert ISGW2Hadronic:MaximumWeight 1476 5.8126e-05 insert ISGW2Hadronic:MaximumWeight 1477 1.74483e-05 insert ISGW2Hadronic:MaximumWeight 1478 0.00621574 insert ISGW2Hadronic:MaximumWeight 1479 0.000654424 insert ISGW2Hadronic:MaximumWeight 1480 0.000658909 insert ISGW2Hadronic:MaximumWeight 1481 1.96941e-05 insert ISGW2Hadronic:MaximumWeight 1482 0.00701533 insert ISGW2Hadronic:MaximumWeight 1483 6.61807e-06 insert ISGW2Hadronic:MaximumWeight 1484 0.0023576 insert ISGW2Hadronic:MaximumWeight 1485 2.56761e-05 insert ISGW2Hadronic:MaximumWeight 1486 8.69341e-07 insert ISGW2Hadronic:MaximumWeight 1487 0.000308561 insert ISGW2Hadronic:MaximumWeight 1488 6.59127e-06 insert ISGW2Hadronic:MaximumWeight 1489 0.00234353 insert ISGW2Hadronic:MaximumWeight 1490 0.00178689 insert ISGW2Hadronic:MaximumWeight 1491 0.000607629 insert ISGW2Hadronic:MaximumWeight 1492 5.88894e-05 insert ISGW2Hadronic:MaximumWeight 1493 0.0205931 insert ISGW2Hadronic:MaximumWeight 1494 1.24724e-06 insert ISGW2Hadronic:MaximumWeight 1495 4.9042e-07 insert ISGW2Hadronic:MaximumWeight 1496 5.08943e-08 insert ISGW2Hadronic:MaximumWeight 1497 1.81373e-05 insert ISGW2Hadronic:MaximumWeight 1498 8.97699e-07 insert ISGW2Hadronic:MaximumWeight 1499 2.50892e-09 insert ISGW2Hadronic:MaximumWeight 1500 9.90899e-11 insert ISGW2Hadronic:MaximumWeight 1501 3.51392e-08 insert ISGW2Hadronic:MaximumWeight 1502 2.62619e-10 insert ISGW2Hadronic:MaximumWeight 1503 4.82711e-05 insert ISGW2Hadronic:MaximumWeight 1504 4.86653e-05 insert ISGW2Hadronic:MaximumWeight 1505 1.2628e-09 insert ISGW2Hadronic:MaximumWeight 1506 3.60766e-06 insert ISGW2Hadronic:MaximumWeight 1507 0.00128518 insert ISGW2Hadronic:MaximumWeight 1508 6.15486e-05 insert ISGW2Hadronic:MaximumWeight 1509 3.13414e-05 insert ISGW2Hadronic:MaximumWeight 1510 1.24113e-07 insert ISGW2Hadronic:MaximumWeight 1511 1.01578e-06 insert ISGW2Hadronic:MaximumWeight 1512 0.000362136 insert ISGW2Hadronic:MaximumWeight 1513 1.04208e-06 insert ISGW2Hadronic:MaximumWeight 1514 1.6022e-05 insert ISGW2Hadronic:MaximumWeight 1515 1.99376e-05 insert ISGW2Hadronic:MaximumWeight 1516 1.44953e-06 insert ISGW2Hadronic:MaximumWeight 1517 0.000513428 insert ISGW2Hadronic:MaximumWeight 1518 3.39376e-05 insert ISGW2Hadronic:MaximumWeight 1519 5.45222e-07 insert ISGW2Hadronic:MaximumWeight 1520 5.78621e-09 insert ISGW2Hadronic:MaximumWeight 1521 2.14348e-06 insert ISGW2Hadronic:MaximumWeight 1522 9.50426e-09 insert ISGW2Hadronic:MaximumWeight 1523 2.77321e-07 insert ISGW2Hadronic:MaximumWeight 1524 9.35602e-09 insert ISGW2Hadronic:MaximumWeight 1525 1.51489e-09 insert ISGW2Hadronic:MaximumWeight 1526 5.39663e-07 insert ISGW2Hadronic:MaximumWeight 1527 3.06082e-08 insert ISGW2Hadronic:MaximumWeight 1528 3.96726e-12 insert ISGW2Hadronic:MaximumWeight 1529 6.64529e-13 insert ISGW2Hadronic:MaximumWeight 1530 2.37078e-10 insert ISGW2Hadronic:MaximumWeight 1531 2.08119e-12 insert ISGW2Hadronic:MaximumWeight 1532 0.0906514 insert ISGW2Hadronic:MaximumWeight 1533 0.00655737 insert ISGW2Hadronic:MaximumWeight 1534 0.194663 insert ISGW2Hadronic:MaximumWeight 1535 0.00720782 insert ISGW2Hadronic:MaximumWeight 1536 0.168179 insert ISGW2Hadronic:MaximumWeight 1537 0.0242007 insert ISGW2Hadronic:MaximumWeight 1538 0.00128659 insert ISGW2Hadronic:MaximumWeight 1539 0.151883 insert ISGW2Hadronic:MaximumWeight 1540 0.0064175 insert ISGW2Hadronic:MaximumWeight 1541 0.0349962 insert ISGW2Hadronic:MaximumWeight 1542 0.000119961 insert ISGW2Hadronic:MaximumWeight 1543 1.99774e-07 insert ISGW2Hadronic:MaximumWeight 1544 0.0082 insert ISGW2Hadronic:MaximumWeight 1545 0.00888319 insert ISGW2Hadronic:MaximumWeight 1546 0.000159215 insert ISGW2Hadronic:MaximumWeight 1547 0.00160848 insert ISGW2Hadronic:MaximumWeight 1548 2.21177e-07 insert ISGW2Hadronic:MaximumWeight 1549 6.84286e-07 insert ISGW2Hadronic:MaximumWeight 1550 6.33654e-05 insert ISGW2Hadronic:MaximumWeight 1551 7.10972e-07 insert ISGW2Hadronic:MaximumWeight 1552 2.2482e-05 insert ISGW2Hadronic:MaximumWeight 1553 1.03081e-09 insert ISGW2Hadronic:MaximumWeight 1554 3.71723e-09 insert ISGW2Hadronic:MaximumWeight 1555 0.000219427 insert ISGW2Hadronic:MaximumWeight 1556 1.84988e-06 insert ISGW2Hadronic:MaximumWeight 1557 0.000250142 insert ISGW2Hadronic:MaximumWeight 1558 1.50801e-06 insert ISGW2Hadronic:MaximumWeight 1559 1.06989e-05 insert ISGW2Hadronic:MaximumWeight 1560 0.000294318 insert ISGW2Hadronic:MaximumWeight 1561 0.000248944 insert ISGW2Hadronic:MaximumWeight 1562 0.00796066 insert ISGW2Hadronic:MaximumWeight 1563 0.000288656 insert ISGW2Hadronic:MaximumWeight 1564 0.00608008 insert ISGW2Hadronic:MaximumWeight 1565 0.00205386 insert ISGW2Hadronic:MaximumWeight 1566 9.52966e-05 insert ISGW2Hadronic:MaximumWeight 1567 0.00174605 insert ISGW2Hadronic:MaximumWeight 1568 1.50321e-05 insert ISGW2Hadronic:MaximumWeight 1569 1.85848e-05 insert ISGW2Hadronic:MaximumWeight 1570 0.00547791 insert ISGW2Hadronic:MaximumWeight 1571 9.45203e-05 insert ISGW2Hadronic:MaximumWeight 1572 0.00653332 insert ISGW2Hadronic:MaximumWeight 1573 0.000892962 insert ISGW2Hadronic:MaximumWeight 1574 0.00525054 insert ISGW2Hadronic:MaximumWeight 1575 3.60714e-05 insert ISGW2Hadronic:MaximumWeight 1576 7.93914e-07 insert ISGW2Hadronic:MaximumWeight 1577 2.68419e-05 insert ISGW2Hadronic:MaximumWeight 1578 2.06545e-09 insert ISGW2Hadronic:MaximumWeight 1579 9.0377e-09 insert ISGW2Hadronic:MaximumWeight 1580 0.00138584 insert ISGW2Hadronic:MaximumWeight 1581 5.37466e-05 insert ISGW2Hadronic:MaximumWeight 1582 0.00182377 insert ISGW2Hadronic:MaximumWeight 1583 1.72699e-05 insert ISGW2Hadronic:MaximumWeight 1584 3.2425e-05 insert ISGW2Hadronic:MaximumWeight 1585 0.00047197 insert ISGW2Hadronic:MaximumWeight 1586 2.13647e-05 insert ISGW2Hadronic:MaximumWeight 1587 0.000898207 insert ISGW2Hadronic:MaximumWeight 1588 1.33171e-07 insert ISGW2Hadronic:MaximumWeight 1589 3.1837e-07 insert ISGW2Hadronic:MaximumWeight 1590 8.03532e-06 insert ISGW2Hadronic:MaximumWeight 1591 2.52199e-08 insert ISGW2Hadronic:MaximumWeight 1592 1.03332e-06 insert ISGW2Hadronic:MaximumWeight 1593 1.42268e-11 insert ISGW2Hadronic:MaximumWeight 1594 7.61904e-11 insert ISGW2Hadronic:MaximumWeight 1595 0.00753127 insert ISGW2Hadronic:MaximumWeight 1596 0.000273977 insert ISGW2Hadronic:MaximumWeight 1597 0.00958453 insert ISGW2Hadronic:MaximumWeight 1598 0.000436011 insert ISGW2Hadronic:MaximumWeight 1599 0.0170353 insert ISGW2Hadronic:MaximumWeight 1600 0.00236283 insert ISGW2Hadronic:MaximumWeight 1601 4.43421e-05 insert ISGW2Hadronic:MaximumWeight 1602 0.0144288 insert ISGW2Hadronic:MaximumWeight 1603 0.000410463 insert ISGW2Hadronic:MaximumWeight 1604 0.00515483 insert ISGW2Hadronic:MaximumWeight 1605 1.67725e-05 insert ISGW2Hadronic:MaximumWeight 1606 1.69155e-07 insert ISGW2Hadronic:MaximumWeight 1607 5.55169e-06 insert ISGW2Hadronic:MaximumWeight 1608 1.24044e-10 insert ISGW2Hadronic:MaximumWeight 1609 5.50562e-10 insert ISGW2Hadronic:MaximumWeight 1610 0.000942081 insert ISGW2Hadronic:MaximumWeight 1611 3.25734e-05 insert ISGW2Hadronic:MaximumWeight 1612 0.0010801 insert ISGW2Hadronic:MaximumWeight 1613 8.48479e-06 insert ISGW2Hadronic:MaximumWeight 1614 1.05941e-05 insert ISGW2Hadronic:MaximumWeight 1615 0.00381795 insert ISGW2Hadronic:MaximumWeight 1616 2.65595e-05 insert ISGW2Hadronic:MaximumWeight 1617 0.00719333 insert ISGW2Hadronic:MaximumWeight 1618 2.34508e-05 insert ISGW2Hadronic:MaximumWeight 1619 1.97446e-05 insert ISGW2Hadronic:MaximumWeight 1620 8.74246e-06 insert ISGW2Hadronic:MaximumWeight 1621 2.15809e-08 insert ISGW2Hadronic:MaximumWeight 1622 5.10599e-07 insert ISGW2Hadronic:MaximumWeight 1623 8.03246e-15 insert ISGW2Hadronic:MaximumWeight 1624 9.84887e-05 insert ISGW2Hadronic:MaximumWeight 1625 0.0859114 insert ISGW2Hadronic:MaximumWeight 1626 0.00665947 insert ISGW2Hadronic:MaximumWeight 1627 0.000152355 insert ISGW2Hadronic:MaximumWeight 1628 0.115277 insert ISGW2Hadronic:MaximumWeight 1629 1.59278e-05 insert ISGW2Hadronic:MaximumWeight 1630 0.501858 insert ISGW2Hadronic:MaximumWeight 1631 0.00487397 insert ISGW2Hadronic:MaximumWeight 1632 0.00014329 insert ISGW2Hadronic:MaximumWeight 1633 0.18175 insert ISGW2Hadronic:MaximumWeight 1634 3.02994e-06 insert ISGW2Hadronic:MaximumWeight 1635 4.46212e-07 insert ISGW2Hadronic:MaximumWeight 1636 5.80007e-08 insert ISGW2Hadronic:MaximumWeight 1637 2.0662e-05 insert ISGW2Hadronic:MaximumWeight 1638 9.99202e-07 insert ISGW2Hadronic:MaximumWeight 1639 5.19569e-10 insert ISGW2Hadronic:MaximumWeight 1640 3.80089e-11 insert ISGW2Hadronic:MaximumWeight 1641 1.36745e-08 insert ISGW2Hadronic:MaximumWeight 1642 1.00467e-10 insert ISGW2Hadronic:MaximumWeight 1643 0.000169181 insert ISGW2Hadronic:MaximumWeight 1644 0.000152837 insert ISGW2Hadronic:MaximumWeight 1645 1.13787e-05 insert ISGW2Hadronic:MaximumWeight 1646 0.00405351 insert ISGW2Hadronic:MaximumWeight 1647 0.000190006 insert ISGW2Hadronic:MaximumWeight 1648 5.21745e-05 insert ISGW2Hadronic:MaximumWeight 1649 2.48955e-06 insert ISGW2Hadronic:MaximumWeight 1650 0.000885514 insert ISGW2Hadronic:MaximumWeight 1651 1.80427e-06 insert ISGW2Hadronic:MaximumWeight 1652 9.29678e-06 insert ISGW2Hadronic:MaximumWeight 1653 0.433737 insert ISGW2Hadronic:MaximumWeight 1654 8.81207e-06 insert ISGW2Hadronic:MaximumWeight 1655 7.74234e-06 insert ISGW2Hadronic:MaximumWeight 1656 0.207994 insert ISGW2Hadronic:MaximumWeight 1657 1.58071e-06 insert ISGW2Hadronic:MaximumWeight 1658 3.06389e-08 insert ISGW2Hadronic:MaximumWeight 1659 7.03968e-09 insert ISGW2Hadronic:MaximumWeight 1660 2.50744e-06 insert ISGW2Hadronic:MaximumWeight 1661 9.03655e-08 insert ISGW2Hadronic:MaximumWeight 1662 1.77767e-15 insert ISGW2Hadronic:MaximumWeight 1663 6.34078e-13 insert ISGW2Hadronic:MaximumWeight 1664 0.0167046 insert ISGW2Hadronic:MaximumWeight 1665 0.0183919 insert ISGW2Hadronic:MaximumWeight 1666 0.00327335 insert ISGW2Hadronic:MaximumWeight 1667 0.016342 insert ISGW2Hadronic:MaximumWeight 1668 0.000318794 insert ISGW2Hadronic:MaximumWeight 1669 6.91014e-07 insert ISGW2Hadronic:MaximumWeight 1670 3.74945e-05 insert ISGW2Hadronic:MaximumWeight 1671 8.81558e-14 insert ISGW2Hadronic:MaximumWeight 1672 0.0230301 insert ISGW2Hadronic:MaximumWeight 1673 0.000433045 insert ISGW2Hadronic:MaximumWeight 1674 0.00440227 insert ISGW2Hadronic:MaximumWeight 1675 7.14496e-07 insert ISGW2Hadronic:MaximumWeight 1676 0.00016 insert ISGW2Hadronic:MaximumWeight 1677 0.000165861 insert ISGW2Hadronic:MaximumWeight 1678 1.98216e-06 insert ISGW2Hadronic:MaximumWeight 1679 6.41893e-05 insert ISGW2Hadronic:MaximumWeight 1680 3.34973e-09 insert ISGW2Hadronic:MaximumWeight 1681 1.15405e-08 insert ISGW2Hadronic:MaximumWeight 1682 0.000563589 insert ISGW2Hadronic:MaximumWeight 1683 4.93522e-06 insert ISGW2Hadronic:MaximumWeight 1684 0.000655498 insert ISGW2Hadronic:MaximumWeight 1685 4.05064e-06 insert ISGW2Hadronic:MaximumWeight 1686 2.96856e-05 # create Herwig::PScalar4FermionsDecayer PScalar4f newdef PScalar4f:Iteration 1 newdef PScalar4f:Ntry 500 newdef PScalar4f:Points 10000 newdef PScalar4f:GenerateIntermediates 1 newdef PScalar4f:Incoming 0 111 newdef PScalar4f:Outgoing1 0 11 newdef PScalar4f:Outgoing2 0 11 newdef PScalar4f:Coupling 0 2.51591e-05 newdef PScalar4f:MaxWeight 0 0.00026 newdef PScalar4f:IncludeVMD 0 2 newdef PScalar4f:VMDID 0 113 newdef PScalar4f:VMDmass 0 775.8 newdef PScalar4f:VMDwidth 0 150.3 # create Herwig::ScalarScalarScalarDecayer ScalarSS newdef ScalarSS:Iteration 1 newdef ScalarSS:Ntry 500 newdef ScalarSS:Points 10000 newdef ScalarSS:GenerateIntermediates 0 newdef ScalarSS:Incoming 0 9010221 newdef ScalarSS:FirstOutgoing 0 111 newdef ScalarSS:SecondOutgoing 0 111 newdef ScalarSS:Coupling 0 1660 newdef ScalarSS:MaxWeight 0 1.1 newdef ScalarSS:Incoming 1 9010221 newdef ScalarSS:FirstOutgoing 1 211 newdef ScalarSS:SecondOutgoing 1 -211 newdef ScalarSS:Coupling 1 2350 newdef ScalarSS:MaxWeight 1 1.1 newdef ScalarSS:Incoming 2 9010221 newdef ScalarSS:FirstOutgoing 2 321 newdef ScalarSS:SecondOutgoing 2 -321 newdef ScalarSS:Coupling 2 1020 newdef ScalarSS:MaxWeight 2 1.1 newdef ScalarSS:Incoming 3 9010221 newdef ScalarSS:FirstOutgoing 3 311 newdef ScalarSS:SecondOutgoing 3 -311 newdef ScalarSS:Coupling 3 1020 newdef ScalarSS:MaxWeight 3 1.1 newdef ScalarSS:Incoming 4 10221 newdef ScalarSS:FirstOutgoing 4 111 newdef ScalarSS:SecondOutgoing 4 111 newdef ScalarSS:Coupling 4 745 newdef ScalarSS:MaxWeight 4 1.18096 newdef ScalarSS:Incoming 5 10221 newdef ScalarSS:FirstOutgoing 5 211 newdef ScalarSS:SecondOutgoing 5 -211 newdef ScalarSS:Coupling 5 1054 newdef ScalarSS:MaxWeight 5 1.18029 newdef ScalarSS:Incoming 6 10221 newdef ScalarSS:FirstOutgoing 6 100111 newdef ScalarSS:SecondOutgoing 6 111 newdef ScalarSS:Coupling 6 5027 newdef ScalarSS:MaxWeight 6 2.3846 newdef ScalarSS:Incoming 7 10221 newdef ScalarSS:FirstOutgoing 7 100211 newdef ScalarSS:SecondOutgoing 7 -211 newdef ScalarSS:Coupling 7 5027 newdef ScalarSS:MaxWeight 7 2.30756 newdef ScalarSS:Incoming 8 10221 newdef ScalarSS:FirstOutgoing 8 321 newdef ScalarSS:SecondOutgoing 8 -321 newdef ScalarSS:Coupling 8 886 newdef ScalarSS:MaxWeight 8 1.19989 newdef ScalarSS:Incoming 9 10221 newdef ScalarSS:FirstOutgoing 9 311 newdef ScalarSS:SecondOutgoing 9 -311 newdef ScalarSS:Coupling 9 886 newdef ScalarSS:MaxWeight 9 1.19012 newdef ScalarSS:Incoming 10 10331 newdef ScalarSS:FirstOutgoing 10 111 newdef ScalarSS:SecondOutgoing 10 111 newdef ScalarSS:Coupling 10 503 newdef ScalarSS:MaxWeight 10 1.1012 newdef ScalarSS:Incoming 11 10331 newdef ScalarSS:FirstOutgoing 11 211 newdef ScalarSS:SecondOutgoing 11 -211 newdef ScalarSS:Coupling 11 711 newdef ScalarSS:MaxWeight 11 1.09915 newdef ScalarSS:Incoming 12 10331 newdef ScalarSS:FirstOutgoing 12 321 newdef ScalarSS:SecondOutgoing 12 -321 newdef ScalarSS:Coupling 12 2096 newdef ScalarSS:MaxWeight 12 1.05631 newdef ScalarSS:Incoming 13 10331 newdef ScalarSS:FirstOutgoing 13 311 newdef ScalarSS:SecondOutgoing 13 -311 newdef ScalarSS:Coupling 13 2096 newdef ScalarSS:MaxWeight 13 1.05209 newdef ScalarSS:Incoming 14 9000221 newdef ScalarSS:FirstOutgoing 14 111 newdef ScalarSS:SecondOutgoing 14 111 newdef ScalarSS:Coupling 14 3654 newdef ScalarSS:MaxWeight 14 1.09971 newdef ScalarSS:Incoming 15 9000221 newdef ScalarSS:FirstOutgoing 15 211 newdef ScalarSS:SecondOutgoing 15 -211 newdef ScalarSS:Coupling 15 5178 newdef ScalarSS:MaxWeight 15 1.09997 newdef ScalarSS:Incoming 16 9000111 newdef ScalarSS:FirstOutgoing 16 221 newdef ScalarSS:SecondOutgoing 16 111 newdef ScalarSS:Coupling 16 3330 newdef ScalarSS:MaxWeight 16 1.10192 newdef ScalarSS:Incoming 17 9000211 newdef ScalarSS:FirstOutgoing 17 221 newdef ScalarSS:SecondOutgoing 17 211 newdef ScalarSS:Coupling 17 3330 newdef ScalarSS:MaxWeight 17 1.10212 newdef ScalarSS:Incoming 18 9000111 newdef ScalarSS:FirstOutgoing 18 321 newdef ScalarSS:SecondOutgoing 18 -321 newdef ScalarSS:Coupling 18 2540 newdef ScalarSS:MaxWeight 18 1.1 newdef ScalarSS:Incoming 19 9000111 newdef ScalarSS:FirstOutgoing 19 311 newdef ScalarSS:SecondOutgoing 19 -311 newdef ScalarSS:Coupling 19 2540 newdef ScalarSS:MaxWeight 19 1.1 newdef ScalarSS:Incoming 20 9000211 newdef ScalarSS:FirstOutgoing 20 321 newdef ScalarSS:SecondOutgoing 20 -311 newdef ScalarSS:Coupling 20 3590 newdef ScalarSS:MaxWeight 20 1.1 newdef ScalarSS:Incoming 21 10111 newdef ScalarSS:FirstOutgoing 21 221 newdef ScalarSS:SecondOutgoing 21 111 newdef ScalarSS:Coupling 21 1357 newdef ScalarSS:MaxWeight 21 1.09914 newdef ScalarSS:Incoming 22 10211 newdef ScalarSS:FirstOutgoing 22 221 newdef ScalarSS:SecondOutgoing 22 211 newdef ScalarSS:Coupling 22 1357 newdef ScalarSS:MaxWeight 22 1.09815 newdef ScalarSS:Incoming 23 10111 newdef ScalarSS:FirstOutgoing 23 331 newdef ScalarSS:SecondOutgoing 23 111 newdef ScalarSS:Coupling 23 995 newdef ScalarSS:MaxWeight 23 1.13279 newdef ScalarSS:Incoming 24 10211 newdef ScalarSS:FirstOutgoing 24 331 newdef ScalarSS:SecondOutgoing 24 211 newdef ScalarSS:Coupling 24 995 newdef ScalarSS:MaxWeight 24 1.13026 newdef ScalarSS:Incoming 25 10111 newdef ScalarSS:FirstOutgoing 25 321 newdef ScalarSS:SecondOutgoing 25 -321 newdef ScalarSS:Coupling 25 950 newdef ScalarSS:MaxWeight 25 1.10325 newdef ScalarSS:Incoming 26 10111 newdef ScalarSS:FirstOutgoing 26 311 newdef ScalarSS:SecondOutgoing 26 -311 newdef ScalarSS:Coupling 26 950 newdef ScalarSS:MaxWeight 26 1.09597 newdef ScalarSS:Incoming 27 10211 newdef ScalarSS:FirstOutgoing 27 321 newdef ScalarSS:SecondOutgoing 27 -311 newdef ScalarSS:Coupling 27 1344 newdef ScalarSS:MaxWeight 27 1.10042 newdef ScalarSS:Incoming 28 10221 newdef ScalarSS:FirstOutgoing 28 221 newdef ScalarSS:SecondOutgoing 28 221 newdef ScalarSS:Coupling 28 235 newdef ScalarSS:MaxWeight 28 1.26383 newdef ScalarSS:Incoming 29 10331 newdef ScalarSS:FirstOutgoing 29 221 newdef ScalarSS:SecondOutgoing 29 221 newdef ScalarSS:Coupling 29 2189 newdef ScalarSS:MaxWeight 29 5.4 newdef ScalarSS:Incoming 30 10221 newdef ScalarSS:FirstOutgoing 30 9000221 newdef ScalarSS:SecondOutgoing 30 9000221 newdef ScalarSS:Coupling 30 21460 newdef ScalarSS:MaxWeight 30 7.54408 newdef ScalarSS:Incoming 31 10311 newdef ScalarSS:FirstOutgoing 31 311 newdef ScalarSS:SecondOutgoing 31 111 newdef ScalarSS:Coupling 31 2837 newdef ScalarSS:MaxWeight 31 1.1139 newdef ScalarSS:Incoming 32 10311 newdef ScalarSS:FirstOutgoing 32 321 newdef ScalarSS:SecondOutgoing 32 -211 newdef ScalarSS:Coupling 32 4000 newdef ScalarSS:MaxWeight 32 1.1087 newdef ScalarSS:Incoming 33 10321 newdef ScalarSS:FirstOutgoing 33 321 newdef ScalarSS:SecondOutgoing 33 111 newdef ScalarSS:Coupling 33 2837 newdef ScalarSS:MaxWeight 33 1.1165 newdef ScalarSS:Incoming 34 10321 newdef ScalarSS:FirstOutgoing 34 311 newdef ScalarSS:SecondOutgoing 34 211 newdef ScalarSS:Coupling 34 4000 newdef ScalarSS:MaxWeight 34 1.10612 newdef ScalarSS:Incoming 35 10411 newdef ScalarSS:FirstOutgoing 35 411 newdef ScalarSS:SecondOutgoing 35 111 newdef ScalarSS:Coupling 35 5472 newdef ScalarSS:MaxWeight 35 1.09982 newdef ScalarSS:Incoming 36 10411 newdef ScalarSS:FirstOutgoing 36 421 newdef ScalarSS:SecondOutgoing 36 211 newdef ScalarSS:Coupling 36 7714 newdef ScalarSS:MaxWeight 36 1.09992 newdef ScalarSS:Incoming 37 10421 newdef ScalarSS:FirstOutgoing 37 421 newdef ScalarSS:SecondOutgoing 37 111 newdef ScalarSS:Coupling 37 5447 newdef ScalarSS:MaxWeight 37 1.09983 newdef ScalarSS:Incoming 38 10421 newdef ScalarSS:FirstOutgoing 38 411 newdef ScalarSS:SecondOutgoing 38 -211 newdef ScalarSS:Coupling 38 7818 newdef ScalarSS:MaxWeight 38 1.1194 newdef ScalarSS:Incoming 39 10511 newdef ScalarSS:FirstOutgoing 39 511 newdef ScalarSS:SecondOutgoing 39 111 newdef ScalarSS:Coupling 39 9698 newdef ScalarSS:MaxWeight 39 1.10058 newdef ScalarSS:Incoming 40 10511 newdef ScalarSS:FirstOutgoing 40 521 newdef ScalarSS:SecondOutgoing 40 -211 newdef ScalarSS:Coupling 40 13710 newdef ScalarSS:MaxWeight 40 1.09697 newdef ScalarSS:Incoming 41 10521 newdef ScalarSS:FirstOutgoing 41 521 newdef ScalarSS:SecondOutgoing 41 111 newdef ScalarSS:Coupling 41 9698 newdef ScalarSS:MaxWeight 41 1.10162 newdef ScalarSS:Incoming 42 10521 newdef ScalarSS:FirstOutgoing 42 511 newdef ScalarSS:SecondOutgoing 42 211 newdef ScalarSS:Coupling 42 13710 newdef ScalarSS:MaxWeight 42 1.09592 newdef ScalarSS:Incoming 43 100311 newdef ScalarSS:FirstOutgoing 43 10311 newdef ScalarSS:SecondOutgoing 43 111 newdef ScalarSS:Coupling 43 6595 newdef ScalarSS:MaxWeight 43 2.13753 newdef ScalarSS:Incoming 44 100311 newdef ScalarSS:FirstOutgoing 44 10321 newdef ScalarSS:SecondOutgoing 44 -211 newdef ScalarSS:Coupling 44 9445 newdef ScalarSS:MaxWeight 44 2.13275 newdef ScalarSS:Incoming 45 100321 newdef ScalarSS:FirstOutgoing 45 10321 newdef ScalarSS:SecondOutgoing 45 111 newdef ScalarSS:Coupling 45 6595 newdef ScalarSS:MaxWeight 45 2.13257 newdef ScalarSS:Incoming 46 100321 newdef ScalarSS:FirstOutgoing 46 10311 newdef ScalarSS:SecondOutgoing 46 211 newdef ScalarSS:Coupling 46 9445 newdef ScalarSS:MaxWeight 46 2.13815 newdef ScalarSS:Incoming 47 10431 newdef ScalarSS:FirstOutgoing 47 431 newdef ScalarSS:SecondOutgoing 47 111 newdef ScalarSS:Coupling 47 103 newdef ScalarSS:MaxWeight 47 1.10901 newdef ScalarSS:Incoming 48 10531 newdef ScalarSS:FirstOutgoing 48 531 newdef ScalarSS:SecondOutgoing 48 111 newdef ScalarSS:Coupling 48 8314 newdef ScalarSS:MaxWeight 48 0.664961 newdef ScalarSS:Incoming 49 100221 newdef ScalarSS:FirstOutgoing 49 9000111 newdef ScalarSS:SecondOutgoing 49 111 newdef ScalarSS:Coupling 49 2057 newdef ScalarSS:MaxWeight 49 1.89242 newdef ScalarSS:Incoming 50 100221 newdef ScalarSS:FirstOutgoing 50 9000211 newdef ScalarSS:SecondOutgoing 50 -211 newdef ScalarSS:Coupling 50 2057 newdef ScalarSS:MaxWeight 50 1.91997 newdef ScalarSS:Incoming 51 9020221 newdef ScalarSS:FirstOutgoing 51 9000111 newdef ScalarSS:SecondOutgoing 51 111 newdef ScalarSS:Coupling 51 1470 newdef ScalarSS:MaxWeight 51 1.85695 newdef ScalarSS:Incoming 52 9020221 newdef ScalarSS:FirstOutgoing 52 9000211 newdef ScalarSS:SecondOutgoing 52 -211 newdef ScalarSS:Coupling 52 1470 newdef ScalarSS:MaxWeight 52 1.89707 newdef ScalarSS:Incoming 53 9020221 newdef ScalarSS:FirstOutgoing 53 221 newdef ScalarSS:SecondOutgoing 53 9000221 newdef ScalarSS:Coupling 53 4051 newdef ScalarSS:MaxWeight 53 1.76697 newdef ScalarSS:Incoming 54 100221 newdef ScalarSS:FirstOutgoing 54 9000221 newdef ScalarSS:SecondOutgoing 54 221 newdef ScalarSS:Coupling 54 4316 newdef ScalarSS:MaxWeight 54 1.75782 newdef ScalarSS:Incoming 55 10441 newdef ScalarSS:FirstOutgoing 55 321 newdef ScalarSS:SecondOutgoing 55 -321 newdef ScalarSS:Coupling 55 104 newdef ScalarSS:MaxWeight 55 1.18153 newdef ScalarSS:Incoming 56 10441 newdef ScalarSS:FirstOutgoing 56 311 newdef ScalarSS:SecondOutgoing 56 -311 newdef ScalarSS:Coupling 56 104 newdef ScalarSS:MaxWeight 56 1.18066 newdef ScalarSS:Incoming 57 10441 newdef ScalarSS:FirstOutgoing 57 211 newdef ScalarSS:SecondOutgoing 57 -211 newdef ScalarSS:Coupling 57 93 newdef ScalarSS:MaxWeight 57 1.10662 newdef ScalarSS:Incoming 58 10441 newdef ScalarSS:FirstOutgoing 58 111 newdef ScalarSS:SecondOutgoing 58 111 newdef ScalarSS:Coupling 58 66 newdef ScalarSS:MaxWeight 58 1.11492 newdef ScalarSS:Incoming 59 10441 newdef ScalarSS:FirstOutgoing 59 221 newdef ScalarSS:SecondOutgoing 59 221 newdef ScalarSS:Coupling 59 64 newdef ScalarSS:MaxWeight 59 1.17978 newdef ScalarSS:Incoming 60 9030221 newdef ScalarSS:FirstOutgoing 60 211 newdef ScalarSS:SecondOutgoing 60 -211 newdef ScalarSS:Coupling 60 1398 newdef ScalarSS:MaxWeight 60 1.09972 newdef ScalarSS:Incoming 61 9030221 newdef ScalarSS:FirstOutgoing 61 111 newdef ScalarSS:SecondOutgoing 61 111 newdef ScalarSS:Coupling 61 989 newdef ScalarSS:MaxWeight 61 1.10202 newdef ScalarSS:Incoming 62 9030221 newdef ScalarSS:FirstOutgoing 62 9000221 newdef ScalarSS:SecondOutgoing 62 9000221 newdef ScalarSS:Coupling 62 6079 newdef ScalarSS:MaxWeight 62 7.35565 newdef ScalarSS:Incoming 63 9030221 newdef ScalarSS:FirstOutgoing 63 221 newdef ScalarSS:SecondOutgoing 63 221 newdef ScalarSS:Coupling 63 809 newdef ScalarSS:MaxWeight 63 1.12039 newdef ScalarSS:Incoming 64 9030221 newdef ScalarSS:FirstOutgoing 64 221 newdef ScalarSS:SecondOutgoing 64 331 newdef ScalarSS:Coupling 64 2844 newdef ScalarSS:MaxWeight 64 6.5 newdef ScalarSS:Incoming 65 9030221 newdef ScalarSS:FirstOutgoing 65 321 newdef ScalarSS:SecondOutgoing 65 -321 newdef ScalarSS:Coupling 65 686 newdef ScalarSS:MaxWeight 65 1.1015 newdef ScalarSS:Incoming 66 9030221 newdef ScalarSS:FirstOutgoing 66 311 newdef ScalarSS:SecondOutgoing 66 -311 newdef ScalarSS:Coupling 66 686 newdef ScalarSS:MaxWeight 66 1.09478 newdef ScalarSS:Incoming 67 9030221 newdef ScalarSS:FirstOutgoing 67 100111 newdef ScalarSS:SecondOutgoing 67 111 newdef ScalarSS:Coupling 67 2615 newdef ScalarSS:MaxWeight 67 2.28089 newdef ScalarSS:Incoming 68 9030221 newdef ScalarSS:FirstOutgoing 68 100211 newdef ScalarSS:SecondOutgoing 68 -211 newdef ScalarSS:Coupling 68 2615 newdef ScalarSS:MaxWeight 68 2.23395 newdef ScalarSS:Incoming 69 9000311 newdef ScalarSS:FirstOutgoing 69 311 newdef ScalarSS:SecondOutgoing 69 111 newdef ScalarSS:Coupling 69 3834 newdef ScalarSS:MaxWeight 69 1.10384 newdef ScalarSS:Incoming 70 9000311 newdef ScalarSS:FirstOutgoing 70 321 newdef ScalarSS:SecondOutgoing 70 -211 newdef ScalarSS:Coupling 70 5406 newdef ScalarSS:MaxWeight 70 1.10171 newdef ScalarSS:Incoming 71 9000321 newdef ScalarSS:FirstOutgoing 71 321 newdef ScalarSS:SecondOutgoing 71 111 newdef ScalarSS:Coupling 71 3834 newdef ScalarSS:MaxWeight 71 1.11557 newdef ScalarSS:Incoming 72 9000321 newdef ScalarSS:FirstOutgoing 72 311 newdef ScalarSS:SecondOutgoing 72 211 newdef ScalarSS:Coupling 72 5406 newdef ScalarSS:MaxWeight 72 1.08994 newdef ScalarSS:Incoming 73 10441 newdef ScalarSS:FirstOutgoing 73 10321 newdef ScalarSS:SecondOutgoing 73 -10321 newdef ScalarSS:Coupling 73 104 newdef ScalarSS:MaxWeight 73 1.53966 newdef ScalarSS:Incoming 74 10441 newdef ScalarSS:FirstOutgoing 74 10311 newdef ScalarSS:SecondOutgoing 74 -10311 newdef ScalarSS:Coupling 74 104 newdef ScalarSS:MaxWeight 74 1.50609 newdef ScalarSS:Incoming 75 10531 newdef ScalarSS:FirstOutgoing 75 511 newdef ScalarSS:SecondOutgoing 75 -311 newdef ScalarSS:Coupling 75 12170 newdef ScalarSS:MaxWeight 75 1.07391 newdef ScalarSS:Incoming 76 10531 newdef ScalarSS:FirstOutgoing 76 521 newdef ScalarSS:SecondOutgoing 76 -321 newdef ScalarSS:Coupling 76 12170 newdef ScalarSS:MaxWeight 76 1.1278 newdef ScalarSS:Incoming 77 10441 newdef ScalarSS:FirstOutgoing 77 9010221 newdef ScalarSS:SecondOutgoing 77 9010221 newdef ScalarSS:Coupling 77 84 newdef ScalarSS:MaxWeight 77 1.31568 # create Herwig::PScalarPScalarVectorDecayer PPVDecayer newdef PPVDecayer:Iteration 1 newdef PPVDecayer:Ntry 500 newdef PPVDecayer:Points 10000 newdef PPVDecayer:GenerateIntermediates 0 newdef PPVDecayer:Incoming 0 100111 newdef PPVDecayer:OutgoingPScalar 0 -211 newdef PPVDecayer:OutgoingVector 0 213 newdef PPVDecayer:Coupling 0 3.57 newdef PPVDecayer:MaxWeight 0 4.85468 newdef PPVDecayer:Incoming 1 100211 newdef PPVDecayer:OutgoingPScalar 1 111 newdef PPVDecayer:OutgoingVector 1 213 newdef PPVDecayer:Coupling 1 3.57 newdef PPVDecayer:MaxWeight 1 4.92159 newdef PPVDecayer:Incoming 2 100211 newdef PPVDecayer:OutgoingPScalar 2 211 newdef PPVDecayer:OutgoingVector 2 113 newdef PPVDecayer:Coupling 2 3.57 newdef PPVDecayer:MaxWeight 2 4.77463 newdef PPVDecayer:Incoming 3 100311 newdef PPVDecayer:OutgoingPScalar 3 311 newdef PPVDecayer:OutgoingVector 3 113 newdef PPVDecayer:Coupling 3 1 newdef PPVDecayer:MaxWeight 3 3.79851 newdef PPVDecayer:Incoming 4 100321 newdef PPVDecayer:OutgoingPScalar 4 321 newdef PPVDecayer:OutgoingVector 4 113 newdef PPVDecayer:Coupling 4 1 newdef PPVDecayer:MaxWeight 4 3.8839 newdef PPVDecayer:Incoming 5 100311 newdef PPVDecayer:OutgoingPScalar 5 321 newdef PPVDecayer:OutgoingVector 5 -213 newdef PPVDecayer:Coupling 5 1.41 newdef PPVDecayer:MaxWeight 5 3.92582 newdef PPVDecayer:Incoming 6 100321 newdef PPVDecayer:OutgoingPScalar 6 311 newdef PPVDecayer:OutgoingVector 6 213 newdef PPVDecayer:Coupling 6 1.41 newdef PPVDecayer:MaxWeight 6 3.83809 newdef PPVDecayer:Incoming 7 100311 newdef PPVDecayer:OutgoingPScalar 7 111 newdef PPVDecayer:OutgoingVector 7 313 newdef PPVDecayer:Coupling 7 1.55 newdef PPVDecayer:MaxWeight 7 1.63383 newdef PPVDecayer:Incoming 8 100321 newdef PPVDecayer:OutgoingPScalar 8 111 newdef PPVDecayer:OutgoingVector 8 323 newdef PPVDecayer:Coupling 8 1.55 newdef PPVDecayer:MaxWeight 8 1.64466 newdef PPVDecayer:Incoming 9 100311 newdef PPVDecayer:OutgoingPScalar 9 -211 newdef PPVDecayer:OutgoingVector 9 323 newdef PPVDecayer:Coupling 9 2.19 newdef PPVDecayer:MaxWeight 9 1.64501 newdef PPVDecayer:Incoming 10 100321 newdef PPVDecayer:OutgoingPScalar 10 211 newdef PPVDecayer:OutgoingVector 10 313 newdef PPVDecayer:Coupling 10 2.19 newdef PPVDecayer:MaxWeight 10 1.61787 newdef PPVDecayer:Incoming 11 100331 newdef PPVDecayer:OutgoingPScalar 11 -321 newdef PPVDecayer:OutgoingVector 11 323 newdef PPVDecayer:Coupling 11 2.92 newdef PPVDecayer:MaxWeight 11 4.09876 newdef PPVDecayer:Incoming 12 100331 newdef PPVDecayer:OutgoingPScalar 12 -311 newdef PPVDecayer:OutgoingVector 12 313 newdef PPVDecayer:Coupling 12 2.92 newdef PPVDecayer:MaxWeight 12 3.68371 newdef PPVDecayer:Incoming 13 9020221 newdef PPVDecayer:OutgoingPScalar 13 -321 newdef PPVDecayer:OutgoingVector 13 323 newdef PPVDecayer:Coupling 13 0.956 newdef PPVDecayer:MaxWeight 13 4.40423 newdef PPVDecayer:Incoming 14 9020221 newdef PPVDecayer:OutgoingPScalar 14 -311 newdef PPVDecayer:OutgoingVector 14 313 newdef PPVDecayer:Coupling 14 0.956 newdef PPVDecayer:MaxWeight 14 3.48178 newdef PPVDecayer:Incoming 15 10221 newdef PPVDecayer:OutgoingPScalar 15 -211 newdef PPVDecayer:OutgoingVector 15 20213 newdef PPVDecayer:Coupling 15 2.68 newdef PPVDecayer:MaxWeight 15 3.30881 newdef PPVDecayer:Incoming 16 10221 newdef PPVDecayer:OutgoingPScalar 16 111 newdef PPVDecayer:OutgoingVector 16 20113 newdef PPVDecayer:Coupling 16 2.68 newdef PPVDecayer:MaxWeight 16 3.42189 newdef PPVDecayer:Incoming 17 9030221 newdef PPVDecayer:OutgoingPScalar 17 -211 newdef PPVDecayer:OutgoingVector 17 20213 newdef PPVDecayer:Coupling 17 1.147 newdef PPVDecayer:MaxWeight 17 3.21729 newdef PPVDecayer:Incoming 18 9030221 newdef PPVDecayer:OutgoingPScalar 18 111 newdef PPVDecayer:OutgoingVector 18 20113 newdef PPVDecayer:Coupling 18 1.147 newdef PPVDecayer:MaxWeight 18 3.28207 # create Herwig::QuarkoniumDecayer QDecayME0 newdef QDecayME0:PartonSplitter /Herwig/Hadronization/PartonSplitter newdef QDecayME0:ClusterFinder /Herwig/Hadronization/ClusterFinder newdef QDecayME0:ClusterFissioner /Herwig/Hadronization/ClusterFissioner newdef QDecayME0:LightClusterDecayer /Herwig/Hadronization/LightClusterDecayer newdef QDecayME0:ClusterDecayer /Herwig/Hadronization/ClusterDecayer newdef QDecayME0:Exclusive 1 newdef QDecayME0:Intermediates 0 newdef QDecayME0:Partonic_Tries 100 newdef QDecayME0:MECode 0 # create Herwig::QuarkoniumDecayer QDecayME130 newdef QDecayME130:PartonSplitter /Herwig/Hadronization/PartonSplitter newdef QDecayME130:ClusterFinder /Herwig/Hadronization/ClusterFinder newdef QDecayME130:ClusterFissioner /Herwig/Hadronization/ClusterFissioner newdef QDecayME130:LightClusterDecayer /Herwig/Hadronization/LightClusterDecayer newdef QDecayME130:ClusterDecayer /Herwig/Hadronization/ClusterDecayer newdef QDecayME130:Exclusive 1 newdef QDecayME130:Intermediates 0 newdef QDecayME130:Partonic_Tries 100 newdef QDecayME130:MECode 130 # create Herwig::VectorMesonVectorScalarDecayer VVSDecayer newdef VVSDecayer:Iteration 1 newdef VVSDecayer:Ntry 500 newdef VVSDecayer:Points 10000 newdef VVSDecayer:GenerateIntermediates 0 newdef VVSDecayer:Incoming 0 333 newdef VVSDecayer:OutgoingVector 0 22 newdef VVSDecayer:OutgoingScalar 0 9000111 newdef VVSDecayer:Coupling 0 0.238 newdef VVSDecayer:MaxWeight 0 9.00936 newdef VVSDecayer:Incoming 1 333 newdef VVSDecayer:OutgoingVector 1 22 newdef VVSDecayer:OutgoingScalar 1 9010221 newdef VVSDecayer:Coupling 1 0.267 newdef VVSDecayer:MaxWeight 1 14.2908 newdef VVSDecayer:Incoming 2 443 newdef VVSDecayer:OutgoingVector 2 22 newdef VVSDecayer:OutgoingScalar 2 10331 newdef VVSDecayer:Coupling 2 0.00207 newdef VVSDecayer:MaxWeight 2 2.22552 newdef VVSDecayer:Incoming 3 443 newdef VVSDecayer:OutgoingVector 3 223 newdef VVSDecayer:OutgoingScalar 3 10331 newdef VVSDecayer:Coupling 3 0.00144 newdef VVSDecayer:MaxWeight 3 8.11845 newdef VVSDecayer:Incoming 4 443 newdef VVSDecayer:OutgoingVector 4 333 newdef VVSDecayer:OutgoingScalar 4 10331 newdef VVSDecayer:Coupling 4 0.00127 newdef VVSDecayer:MaxWeight 4 7.04697 newdef VVSDecayer:Incoming 5 443 newdef VVSDecayer:OutgoingVector 5 333 newdef VVSDecayer:OutgoingScalar 5 9010221 newdef VVSDecayer:Coupling 5 0.00064 newdef VVSDecayer:MaxWeight 5 5.78346 newdef VVSDecayer:Incoming 6 443 newdef VVSDecayer:OutgoingVector 6 223 newdef VVSDecayer:OutgoingScalar 6 9010221 newdef VVSDecayer:Coupling 6 0.00044 newdef VVSDecayer:MaxWeight 6 6.12632 newdef VVSDecayer:Incoming 7 100553 newdef VVSDecayer:OutgoingVector 7 22 newdef VVSDecayer:OutgoingScalar 7 10551 newdef VVSDecayer:Coupling 7 0.105 newdef VVSDecayer:MaxWeight 7 1.84492 newdef VVSDecayer:Incoming 8 200553 newdef VVSDecayer:OutgoingVector 8 22 newdef VVSDecayer:OutgoingScalar 8 110551 newdef VVSDecayer:Coupling 8 0.16 newdef VVSDecayer:MaxWeight 8 1.95828 newdef VVSDecayer:Incoming 9 100443 newdef VVSDecayer:OutgoingVector 9 22 newdef VVSDecayer:OutgoingScalar 9 10441 newdef VVSDecayer:Coupling 9 0.258 newdef VVSDecayer:MaxWeight 9 3.80961 newdef VVSDecayer:Incoming 10 100443 newdef VVSDecayer:OutgoingVector 10 22 newdef VVSDecayer:OutgoingScalar 10 331 newdef VVSDecayer:Coupling 10 0.0508 newdef VVSDecayer:MaxWeight 10 1.64121 newdef VVSDecayer:Incoming 11 100443 newdef VVSDecayer:OutgoingVector 11 22 newdef VVSDecayer:OutgoingScalar 11 10331 newdef VVSDecayer:Coupling 11 0.00068 newdef VVSDecayer:MaxWeight 11 1.8543 newdef VVSDecayer:Incoming 12 100443 newdef VVSDecayer:OutgoingVector 12 333 newdef VVSDecayer:OutgoingScalar 12 9010221 newdef VVSDecayer:Coupling 12 0.000509 newdef VVSDecayer:MaxWeight 12 5.66804 newdef VVSDecayer:Incoming 13 100213 newdef VVSDecayer:OutgoingVector 13 213 newdef VVSDecayer:OutgoingScalar 13 9000221 newdef VVSDecayer:Coupling 13 5.056 newdef VVSDecayer:MaxWeight 13 4.95975 newdef VVSDecayer:Incoming 14 100113 newdef VVSDecayer:OutgoingVector 14 113 newdef VVSDecayer:OutgoingScalar 14 9000221 newdef VVSDecayer:Coupling 14 5.056 newdef VVSDecayer:MaxWeight 14 5.10698 newdef VVSDecayer:Incoming 15 443 newdef VVSDecayer:OutgoingVector 15 22 newdef VVSDecayer:OutgoingScalar 15 9030221 newdef VVSDecayer:Coupling 15 0.00114 newdef VVSDecayer:MaxWeight 15 2.8072 # create Herwig::VectorMesonPVectorPScalarDecayer VAPDecayer newdef VAPDecayer:Iteration 1 newdef VAPDecayer:Ntry 1500 newdef VAPDecayer:Points 10000 newdef VAPDecayer:GenerateIntermediates 0 newdef VAPDecayer:Incoming 0 443 newdef VAPDecayer:OutgoingPVector 0 20313 newdef VAPDecayer:OutgoingPScalar 0 -311 newdef VAPDecayer:Coupling 0 0.00127 newdef VAPDecayer:MaxWeight 0 3.57449 newdef VAPDecayer:Incoming 1 443 newdef VAPDecayer:OutgoingPVector 1 20323 newdef VAPDecayer:OutgoingPScalar 1 -321 newdef VAPDecayer:Coupling 1 0.00127 newdef VAPDecayer:MaxWeight 1 3.58 newdef VAPDecayer:Incoming 2 443 newdef VAPDecayer:OutgoingPVector 2 10213 newdef VAPDecayer:OutgoingPScalar 2 -211 newdef VAPDecayer:Coupling 2 0.00106 newdef VAPDecayer:MaxWeight 2 7.98666 newdef VAPDecayer:Incoming 3 443 newdef VAPDecayer:OutgoingPVector 3 10113 newdef VAPDecayer:OutgoingPScalar 3 111 newdef VAPDecayer:Coupling 3 0.00106 newdef VAPDecayer:MaxWeight 3 8.01101 newdef VAPDecayer:Incoming 4 100443 newdef VAPDecayer:OutgoingPVector 4 10313 newdef VAPDecayer:OutgoingPScalar 4 -311 newdef VAPDecayer:Coupling 4 0.00152 newdef VAPDecayer:MaxWeight 4 3.70225 newdef VAPDecayer:Incoming 5 100443 newdef VAPDecayer:OutgoingPVector 5 10323 newdef VAPDecayer:OutgoingPScalar 5 -321 newdef VAPDecayer:Coupling 5 0.00152 newdef VAPDecayer:MaxWeight 5 4.09967 newdef VAPDecayer:Incoming 6 100443 newdef VAPDecayer:OutgoingPVector 6 10213 newdef VAPDecayer:OutgoingPScalar 6 -211 newdef VAPDecayer:Coupling 6 0.000694 newdef VAPDecayer:MaxWeight 6 8.30558 newdef VAPDecayer:Incoming 7 100443 newdef VAPDecayer:OutgoingPVector 7 10113 newdef VAPDecayer:OutgoingPScalar 7 111 newdef VAPDecayer:Coupling 7 0.000694 newdef VAPDecayer:MaxWeight 7 8.31092 newdef VAPDecayer:Incoming 8 30213 newdef VAPDecayer:OutgoingPVector 8 10223 newdef VAPDecayer:OutgoingPScalar 8 211 newdef VAPDecayer:Coupling 8 1.45 newdef VAPDecayer:MaxWeight 8 2.82326 newdef VAPDecayer:Incoming 9 30113 newdef VAPDecayer:OutgoingPVector 9 10223 newdef VAPDecayer:OutgoingPScalar 9 111 newdef VAPDecayer:Coupling 9 1.45 newdef VAPDecayer:MaxWeight 9 2.83643 newdef VAPDecayer:Incoming 10 30213 newdef VAPDecayer:OutgoingPVector 10 20213 newdef VAPDecayer:OutgoingPScalar 10 111 newdef VAPDecayer:Coupling 10 1.09 newdef VAPDecayer:MaxWeight 10 2.82168 newdef VAPDecayer:Incoming 11 30213 newdef VAPDecayer:OutgoingPVector 11 20113 newdef VAPDecayer:OutgoingPScalar 11 211 newdef VAPDecayer:Coupling 11 1.09 newdef VAPDecayer:MaxWeight 11 2.78114 newdef VAPDecayer:Incoming 12 30113 newdef VAPDecayer:OutgoingPVector 12 20213 newdef VAPDecayer:OutgoingPScalar 12 -211 newdef VAPDecayer:Coupling 12 1.09 newdef VAPDecayer:MaxWeight 12 2.79808 newdef VAPDecayer:Incoming 13 100213 newdef VAPDecayer:OutgoingPVector 13 10223 newdef VAPDecayer:OutgoingPScalar 13 211 newdef VAPDecayer:Coupling 13 1.2 newdef VAPDecayer:MaxWeight 13 2.81029 newdef VAPDecayer:Incoming 14 100113 newdef VAPDecayer:OutgoingPVector 14 10223 newdef VAPDecayer:OutgoingPScalar 14 111 newdef VAPDecayer:Coupling 14 1.2 newdef VAPDecayer:MaxWeight 14 2.85301 newdef VAPDecayer:Incoming 15 100213 newdef VAPDecayer:OutgoingPVector 15 20213 newdef VAPDecayer:OutgoingPScalar 15 111 newdef VAPDecayer:Coupling 15 1.83 newdef VAPDecayer:MaxWeight 15 2.96886 newdef VAPDecayer:Incoming 16 100213 newdef VAPDecayer:OutgoingPVector 16 20113 newdef VAPDecayer:OutgoingPScalar 16 211 newdef VAPDecayer:Coupling 16 1.83 newdef VAPDecayer:MaxWeight 16 2.92035 newdef VAPDecayer:Incoming 17 100113 newdef VAPDecayer:OutgoingPVector 17 20213 newdef VAPDecayer:OutgoingPScalar 17 -211 newdef VAPDecayer:Coupling 17 1.83 newdef VAPDecayer:MaxWeight 17 2.92087 newdef VAPDecayer:Incoming 18 100223 newdef VAPDecayer:OutgoingPVector 18 10113 newdef VAPDecayer:OutgoingPScalar 18 111 newdef VAPDecayer:Coupling 18 1.659 newdef VAPDecayer:MaxWeight 18 2.55908 newdef VAPDecayer:Incoming 19 100223 newdef VAPDecayer:OutgoingPVector 19 10213 newdef VAPDecayer:OutgoingPScalar 19 -211 newdef VAPDecayer:Coupling 19 1.659 newdef VAPDecayer:MaxWeight 19 2.33324 newdef VAPDecayer:Incoming 20 100443 newdef VAPDecayer:OutgoingPVector 20 10443 newdef VAPDecayer:OutgoingPScalar 20 111 newdef VAPDecayer:Coupling 20 0.0029 newdef VAPDecayer:MaxWeight 20 1.86135 # create Herwig::HeavyDecayer HvyDecayME0 newdef HvyDecayME0:PartonSplitter /Herwig/Hadronization/PartonSplitter newdef HvyDecayME0:ClusterFinder /Herwig/Hadronization/ClusterFinder newdef HvyDecayME0:ClusterFissioner /Herwig/Hadronization/ClusterFissioner newdef HvyDecayME0:LightClusterDecayer /Herwig/Hadronization/LightClusterDecayer newdef HvyDecayME0:ClusterDecayer /Herwig/Hadronization/ClusterDecayer newdef HvyDecayME0:Exclusive 1 newdef HvyDecayME0:Intermediates 0 newdef HvyDecayME0:Partonic_Tries 100 newdef HvyDecayME0:MECode 0 # create Herwig::HeavyDecayer HvyDecayME100 newdef HvyDecayME100:PartonSplitter /Herwig/Hadronization/PartonSplitter newdef HvyDecayME100:ClusterFinder /Herwig/Hadronization/ClusterFinder newdef HvyDecayME100:ClusterFissioner /Herwig/Hadronization/ClusterFissioner newdef HvyDecayME100:LightClusterDecayer /Herwig/Hadronization/LightClusterDecayer newdef HvyDecayME100:ClusterDecayer /Herwig/Hadronization/ClusterDecayer newdef HvyDecayME100:Exclusive 1 newdef HvyDecayME100:Intermediates 0 newdef HvyDecayME100:Partonic_Tries 100 newdef HvyDecayME100:MECode 100 # create Herwig::ScalarMesonTensorScalarDecayer STSDecayer newdef STSDecayer:Iteration 1 newdef STSDecayer:Ntry 500 newdef STSDecayer:Points 10000 newdef STSDecayer:GenerateIntermediates 0 newdef STSDecayer:Incoming 0 411 newdef STSDecayer:OutgoingTensor 0 225 newdef STSDecayer:OutgoingScalar 0 211 newdef STSDecayer:Coupling 0 8.23e-07 newdef STSDecayer:MaxWeight 0 0.00242193 newdef STSDecayer:Incoming 1 10441 newdef STSDecayer:OutgoingTensor 1 325 newdef STSDecayer:OutgoingScalar 1 -10321 newdef STSDecayer:Coupling 1 0.0217 newdef STSDecayer:MaxWeight 1 4.36393 newdef STSDecayer:Incoming 2 10441 newdef STSDecayer:OutgoingTensor 2 315 newdef STSDecayer:OutgoingScalar 2 -10311 newdef STSDecayer:Coupling 2 0.0217 newdef STSDecayer:MaxWeight 2 4.35748 # create Herwig::SemiLeptonicBaryonDecayer BaryonLight1 newdef BaryonLight1:Iteration 1 newdef BaryonLight1:Ntry 500 newdef BaryonLight1:Points 10000 newdef BaryonLight1:GenerateIntermediates 1 insert BaryonLight1:MaximumWeight 0 2.29031 insert BaryonLight1:MaximumWeight 1 3.98905e-05 insert BaryonLight1:MaximumWeight 2 0.000122986 insert BaryonLight1:MaximumWeight 3 4.63043e-10 insert BaryonLight1:MaximumWeight 4 2.99887e-20 insert BaryonLight1:MaximumWeight 5 1.02435e-09 insert BaryonLight1:MaximumWeight 6 0.0037 insert BaryonLight1:MaximumWeight 7 0.0005 insert BaryonLight1:MaximumWeight 8 9.60594e-13 insert BaryonLight1:MaximumWeight 9 3.14573e-13 insert BaryonLight1:MaximumWeight 10 0.00404325 insert BaryonLight1:MaximumWeight 11 0.00135948 insert BaryonLight1:MaximumWeight 12 0.00239575 insert BaryonLight1:MaximumWeight 13 0.000490015 insert BaryonLight1:MaximumWeight 14 0.000228 insert BaryonLight1:MaximumWeight 15 3.58814e-06 insert BaryonLight1:MaximumWeight 16 0.00075 insert BaryonLight1:MaximumWeight 17 7.52759e-06 create Herwig::LeptonNeutrinoCurrent BaryonLight1Current HwWeakCurrents.so newdef BaryonLight1Current:Quark 0 11 newdef BaryonLight1Current:AntiQuark 0 -12 newdef BaryonLight1Current:Quark 1 13 newdef BaryonLight1Current:AntiQuark 1 -15 newdef BaryonLight1Current:Quark 2 15 newdef BaryonLight1Current:AntiQuark 2 -16 newdef BaryonLight1:Current BaryonLight1Current create Herwig::LightBaryonQuarkModelFormFactor BaryonLight1Form newdef BaryonLight1Form:f1 0 1 newdef BaryonLight1Form:g1 0 1.25 newdef BaryonLight1Form:f2 0 1.81 newdef BaryonLight1Form:g2 0 0 newdef BaryonLight1Form:Lambdaf1 0 0.69 newdef BaryonLight1Form:Lambdaf2 0 0.96 newdef BaryonLight1Form:Lambdag1 0 0.76 newdef BaryonLight1Form:Lambdag2 0 1.04 newdef BaryonLight1Form:f1 1 0 newdef BaryonLight1Form:g1 1 0.6 newdef BaryonLight1Form:f2 1 1.04 newdef BaryonLight1Form:g2 1 0 newdef BaryonLight1Form:Lambdaf1 1 -0.32 newdef BaryonLight1Form:Lambdaf2 1 -1.72 newdef BaryonLight1Form:Lambdag1 1 0.77 newdef BaryonLight1Form:Lambdag2 1 1.05 newdef BaryonLight1Form:f1 2 0 newdef BaryonLight1Form:g1 2 0.6 newdef BaryonLight1Form:f2 2 1.04 newdef BaryonLight1Form:g2 2 0 newdef BaryonLight1Form:Lambdaf1 2 -0.32 newdef BaryonLight1Form:Lambdaf2 2 -1.72 newdef BaryonLight1Form:Lambdag1 2 0.77 newdef BaryonLight1Form:Lambdag2 2 1.05 newdef BaryonLight1Form:f1 3 1.41 newdef BaryonLight1Form:g1 3 0.69 newdef BaryonLight1Form:f2 3 0.76 newdef BaryonLight1Form:g2 3 0 newdef BaryonLight1Form:Lambdaf1 3 0.6 newdef BaryonLight1Form:Lambdaf2 3 0.81 newdef BaryonLight1Form:Lambdag1 3 0.77 newdef BaryonLight1Form:Lambdag2 3 1.04 newdef BaryonLight1Form:f1 4 -1.41 newdef BaryonLight1Form:g1 4 -0.69 newdef BaryonLight1Form:f2 4 -0.76 newdef BaryonLight1Form:g2 4 0 newdef BaryonLight1Form:Lambdaf1 4 0.6 newdef BaryonLight1Form:Lambdaf2 4 0.81 newdef BaryonLight1Form:Lambdag1 4 0.77 newdef BaryonLight1Form:Lambdag2 4 1.04 newdef BaryonLight1Form:f1 5 -1 newdef BaryonLight1Form:g1 5 0.24 newdef BaryonLight1Form:f2 5 0.73 newdef BaryonLight1Form:g2 5 0 newdef BaryonLight1Form:Lambdaf1 5 0.56 newdef BaryonLight1Form:Lambdaf2 5 0.71 newdef BaryonLight1Form:Lambdag1 5 0.76 newdef BaryonLight1Form:Lambdag2 5 1.04 newdef BaryonLight1Form:f1 6 -1.19 newdef BaryonLight1Form:g1 6 -0.99 newdef BaryonLight1Form:f2 6 -0.85 newdef BaryonLight1Form:g2 6 -0.025 newdef BaryonLight1Form:Lambdaf1 6 0.71 newdef BaryonLight1Form:Lambdaf2 6 0.98 newdef BaryonLight1Form:Lambdag1 6 0.81 newdef BaryonLight1Form:Lambdag2 6 1.12 newdef BaryonLight1Form:f1 7 -0.69 newdef BaryonLight1Form:g1 7 0.19 newdef BaryonLight1Form:f2 7 0.44 newdef BaryonLight1Form:g2 7 0.0043 newdef BaryonLight1Form:Lambdaf1 7 0.64 newdef BaryonLight1Form:Lambdaf2 7 0.84 newdef BaryonLight1Form:Lambdag1 7 0.83 newdef BaryonLight1Form:Lambdag2 7 1.16 newdef BaryonLight1Form:f1 8 -0.97 newdef BaryonLight1Form:g1 8 0.27 newdef BaryonLight1Form:f2 8 0.62 newdef BaryonLight1Form:g2 8 0.0061 newdef BaryonLight1Form:Lambdaf1 8 0.64 newdef BaryonLight1Form:Lambdaf2 8 0.9 newdef BaryonLight1Form:Lambdag1 8 0.83 newdef BaryonLight1Form:Lambdag2 8 1.16 newdef BaryonLight1Form:f1 9 1.19 newdef BaryonLight1Form:g1 9 0.33 newdef BaryonLight1Form:f2 9 0.07 newdef BaryonLight1Form:g2 9 0.0076 newdef BaryonLight1Form:Lambdaf1 9 0.68 newdef BaryonLight1Form:Lambdaf2 9 0.89 newdef BaryonLight1Form:Lambdag1 9 0.81 newdef BaryonLight1Form:Lambdag2 9 1.1 newdef BaryonLight1Form:f1 10 0.69 newdef BaryonLight1Form:g1 10 0.94 newdef BaryonLight1Form:f2 10 0.98 newdef BaryonLight1Form:g2 10 0.022 newdef BaryonLight1Form:Lambdaf1 10 0.75 newdef BaryonLight1Form:Lambdaf2 10 1.05 newdef BaryonLight1Form:Lambdag1 10 0.81 newdef BaryonLight1Form:Lambdag2 10 1.12 newdef BaryonLight1Form:f1 11 0.98 newdef BaryonLight1Form:g1 11 1.33 newdef BaryonLight1Form:f2 11 1.38 newdef BaryonLight1Form:g2 11 0.031 newdef BaryonLight1Form:Lambdaf1 11 0.75 newdef BaryonLight1Form:Lambdaf2 11 1.05 newdef BaryonLight1Form:Lambdag1 11 0.81 newdef BaryonLight1Form:Lambdag2 11 1.12 newdef BaryonLight1Form:Incoming 0 2112 newdef BaryonLight1Form:Outgoing 0 2212 newdef BaryonLight1Form:InSpin 0 2 newdef BaryonLight1Form:OutSpin 0 2 newdef BaryonLight1Form:Spectator1 0 2 newdef BaryonLight1Form:Spectator2 0 1 newdef BaryonLight1Form:InQuark 0 1 newdef BaryonLight1Form:OutQuark 0 2 newdef BaryonLight1Form:Incoming 1 3222 newdef BaryonLight1Form:Outgoing 1 3122 newdef BaryonLight1Form:InSpin 1 2 newdef BaryonLight1Form:OutSpin 1 2 newdef BaryonLight1Form:Spectator1 1 3 newdef BaryonLight1Form:Spectator2 1 2 newdef BaryonLight1Form:InQuark 1 2 newdef BaryonLight1Form:OutQuark 1 1 newdef BaryonLight1Form:Incoming 2 3112 newdef BaryonLight1Form:Outgoing 2 3122 newdef BaryonLight1Form:InSpin 2 2 newdef BaryonLight1Form:OutSpin 2 2 newdef BaryonLight1Form:Spectator1 2 3 newdef BaryonLight1Form:Spectator2 2 1 newdef BaryonLight1Form:InQuark 2 1 newdef BaryonLight1Form:OutQuark 2 2 newdef BaryonLight1Form:Incoming 3 3112 newdef BaryonLight1Form:Outgoing 3 3212 newdef BaryonLight1Form:InSpin 3 2 newdef BaryonLight1Form:OutSpin 3 2 newdef BaryonLight1Form:Spectator1 3 3 newdef BaryonLight1Form:Spectator2 3 1 newdef BaryonLight1Form:InQuark 3 1 newdef BaryonLight1Form:OutQuark 3 2 newdef BaryonLight1Form:Incoming 4 3212 newdef BaryonLight1Form:Outgoing 4 3222 newdef BaryonLight1Form:InSpin 4 2 newdef BaryonLight1Form:OutSpin 4 2 newdef BaryonLight1Form:Spectator1 4 3 newdef BaryonLight1Form:Spectator2 4 2 newdef BaryonLight1Form:InQuark 4 1 newdef BaryonLight1Form:OutQuark 4 2 newdef BaryonLight1Form:Incoming 5 3312 newdef BaryonLight1Form:Outgoing 5 3322 newdef BaryonLight1Form:InSpin 5 2 newdef BaryonLight1Form:OutSpin 5 2 newdef BaryonLight1Form:Spectator1 5 3 newdef BaryonLight1Form:Spectator2 5 3 newdef BaryonLight1Form:InQuark 5 1 newdef BaryonLight1Form:OutQuark 5 2 newdef BaryonLight1Form:Incoming 6 3122 newdef BaryonLight1Form:Outgoing 6 2212 newdef BaryonLight1Form:InSpin 6 2 newdef BaryonLight1Form:OutSpin 6 2 newdef BaryonLight1Form:Spectator1 6 1 newdef BaryonLight1Form:Spectator2 6 2 newdef BaryonLight1Form:InQuark 6 3 newdef BaryonLight1Form:OutQuark 6 2 newdef BaryonLight1Form:Incoming 7 3212 newdef BaryonLight1Form:Outgoing 7 2212 newdef BaryonLight1Form:InSpin 7 2 newdef BaryonLight1Form:OutSpin 7 2 newdef BaryonLight1Form:Spectator1 7 2 newdef BaryonLight1Form:Spectator2 7 1 newdef BaryonLight1Form:InQuark 7 3 newdef BaryonLight1Form:OutQuark 7 2 newdef BaryonLight1Form:Incoming 8 3112 newdef BaryonLight1Form:Outgoing 8 2112 newdef BaryonLight1Form:InSpin 8 2 newdef BaryonLight1Form:OutSpin 8 2 newdef BaryonLight1Form:Spectator1 8 1 newdef BaryonLight1Form:Spectator2 8 1 newdef BaryonLight1Form:InQuark 8 3 newdef BaryonLight1Form:OutQuark 8 2 newdef BaryonLight1Form:Incoming 9 3312 newdef BaryonLight1Form:Outgoing 9 3122 newdef BaryonLight1Form:InSpin 9 2 newdef BaryonLight1Form:OutSpin 9 2 newdef BaryonLight1Form:Spectator1 9 3 newdef BaryonLight1Form:Spectator2 9 1 newdef BaryonLight1Form:InQuark 9 3 newdef BaryonLight1Form:OutQuark 9 2 newdef BaryonLight1Form:Incoming 10 3312 newdef BaryonLight1Form:Outgoing 10 3212 newdef BaryonLight1Form:InSpin 10 2 newdef BaryonLight1Form:OutSpin 10 2 newdef BaryonLight1Form:Spectator1 10 3 newdef BaryonLight1Form:Spectator2 10 1 newdef BaryonLight1Form:InQuark 10 3 newdef BaryonLight1Form:OutQuark 10 2 newdef BaryonLight1Form:Incoming 11 3322 newdef BaryonLight1Form:Outgoing 11 3222 newdef BaryonLight1Form:InSpin 11 2 newdef BaryonLight1Form:OutSpin 11 2 newdef BaryonLight1Form:Spectator1 11 3 newdef BaryonLight1Form:Spectator2 11 2 newdef BaryonLight1Form:InQuark 11 3 newdef BaryonLight1Form:OutQuark 11 2 newdef BaryonLight1:FormFactor BaryonLight1Form # create Herwig::SemiLeptonicBaryonDecayer BaryonHeavy1 newdef BaryonHeavy1:Iteration 1 newdef BaryonHeavy1:Ntry 500 newdef BaryonHeavy1:Points 10000 insert BaryonHeavy1:MaximumWeight 0 0.224655 insert BaryonHeavy1:MaximumWeight 1 0.223647 insert BaryonHeavy1:MaximumWeight 2 0.0680859 insert BaryonHeavy1:MaximumWeight 3 0.261028 insert BaryonHeavy1:MaximumWeight 4 0.259932 insert BaryonHeavy1:MaximumWeight 5 0.081155 insert BaryonHeavy1:MaximumWeight 6 0.261825 insert BaryonHeavy1:MaximumWeight 7 0.260714 insert BaryonHeavy1:MaximumWeight 8 0.0813646 insert BaryonHeavy1:MaximumWeight 9 6.31228e-11 insert BaryonHeavy1:MaximumWeight 10 6.64235e-11 insert BaryonHeavy1:MaximumWeight 11 1.66042e-11 insert BaryonHeavy1:MaximumWeight 12 6.40337e-11 insert BaryonHeavy1:MaximumWeight 13 5.98422e-11 insert BaryonHeavy1:MaximumWeight 14 1.57092e-11 insert BaryonHeavy1:MaximumWeight 15 6.19344e-11 insert BaryonHeavy1:MaximumWeight 16 5.98856e-11 insert BaryonHeavy1:MaximumWeight 17 1.59245e-11 insert BaryonHeavy1:MaximumWeight 18 0.116794 insert BaryonHeavy1:MaximumWeight 19 0.111392 insert BaryonHeavy1:MaximumWeight 20 0.031394 insert BaryonHeavy1:MaximumWeight 21 8.71083e-11 insert BaryonHeavy1:MaximumWeight 22 8.08105e-11 insert BaryonHeavy1:MaximumWeight 23 2.10457e-11 insert BaryonHeavy1:MaximumWeight 24 8.60724e-11 insert BaryonHeavy1:MaximumWeight 25 8.27541e-11 insert BaryonHeavy1:MaximumWeight 26 2.03931e-11 insert BaryonHeavy1:MaximumWeight 27 1.07084e-10 insert BaryonHeavy1:MaximumWeight 28 1.06392e-10 insert BaryonHeavy1:MaximumWeight 29 2.51075e-11 insert BaryonHeavy1:MaximumWeight 30 0.164188 insert BaryonHeavy1:MaximumWeight 31 0.164551 insert BaryonHeavy1:MaximumWeight 32 0.0460406 create Herwig::LeptonNeutrinoCurrent BaryonHeavy1Current newdef BaryonHeavy1Current:Quark 0 11 newdef BaryonHeavy1Current:AntiQuark 0 -12 newdef BaryonHeavy1Current:Quark 1 13 newdef BaryonHeavy1Current:AntiQuark 1 -15 newdef BaryonHeavy1Current:Quark 2 15 newdef BaryonHeavy1Current:AntiQuark 2 -16 newdef BaryonHeavy1:Current BaryonHeavy1Current create Herwig::BaryonThreeQuarkModelFormFactor BaryonHeavy1Form newdef BaryonHeavy1Form:Order 50 newdef BaryonHeavy1Form:LightMass 0.42 newdef BaryonHeavy1Form:StrangeMass 0.57 newdef BaryonHeavy1Form:LambdaQ 2.5 newdef BaryonHeavy1Form:Lambdaqq 0.71 newdef BaryonHeavy1Form:Lambdasq 0.85 newdef BaryonHeavy1Form:Lambdass 1 insert BaryonHeavy1Form:C0 0 0.000375628 insert BaryonHeavy1Form:C0 1 0.00343009 insert BaryonHeavy1Form:C0 2 0.0199814 insert BaryonHeavy1Form:C0 3 0.0917634 insert BaryonHeavy1Form:C0 4 0.359697 insert BaryonHeavy1Form:C0 5 1.2551 insert BaryonHeavy1Form:C0 6 4.00327 insert BaryonHeavy1Form:C0 7 11.8929 insert BaryonHeavy1Form:C0 8 33.3858 insert BaryonHeavy1Form:C0 9 89.612 insert BaryonHeavy1Form:C0 10 232.335 insert BaryonHeavy1Form:C0 11 587.125 insert BaryonHeavy1Form:C0 12 1457.96 insert BaryonHeavy1Form:C0 13 3583.66 insert BaryonHeavy1Form:C0 14 8774.68 insert BaryonHeavy1Form:C0 15 21515.4 insert BaryonHeavy1Form:C0 16 53045.1 insert BaryonHeavy1Form:C0 17 131869 insert BaryonHeavy1Form:C0 18 331096 insert BaryonHeavy1Form:C0 19 840161 insert BaryonHeavy1Form:C0 20 2.15444e+06 insert BaryonHeavy1Form:C0 21 5.57995e+06 insert BaryonHeavy1Form:C0 22 1.45848e+07 insert BaryonHeavy1Form:C0 23 3.84373e+07 insert BaryonHeavy1Form:C0 24 1.0205e+08 insert BaryonHeavy1Form:C0 25 2.72723e+08 insert BaryonHeavy1Form:C0 26 7.33119e+08 insert BaryonHeavy1Form:C0 27 1.98107e+09 insert BaryonHeavy1Form:C0 28 5.37853e+09 insert BaryonHeavy1Form:C0 29 1.46646e+10 insert BaryonHeavy1Form:C0 30 4.01372e+10 insert BaryonHeavy1Form:C0 31 1.10242e+11 insert BaryonHeavy1Form:C0 32 3.03769e+11 insert BaryonHeavy1Form:C0 33 8.39505e+11 insert BaryonHeavy1Form:C0 34 2.32642e+12 insert BaryonHeavy1Form:C0 35 6.46325e+12 insert BaryonHeavy1Form:C0 36 1.79984e+13 insert BaryonHeavy1Form:C0 37 5.02307e+13 insert BaryonHeavy1Form:C0 38 1.40473e+14 insert BaryonHeavy1Form:C0 39 3.93594e+14 insert BaryonHeavy1Form:C0 40 1.10481e+15 insert BaryonHeavy1Form:C0 41 3.10643e+15 insert BaryonHeavy1Form:C0 42 8.74841e+15 insert BaryonHeavy1Form:C0 43 2.46747e+16 insert BaryonHeavy1Form:C0 44 6.96937e+16 insert BaryonHeavy1Form:C0 45 1.97116e+17 insert BaryonHeavy1Form:C0 46 5.58224e+17 insert BaryonHeavy1Form:C0 47 1.58279e+18 insert BaryonHeavy1Form:C0 48 4.49307e+18 insert BaryonHeavy1Form:C0 49 1.27686e+19 insert BaryonHeavy1Form:C0 50 3.63244e+19 insert BaryonHeavy1Form:C0 51 1.58249e-43 insert BaryonHeavy1Form:C0 52 1.55096e-43 insert BaryonHeavy1Form:C0 53 7.6833e-42 insert BaryonHeavy1Form:C0 54 3.77428e-42 insert BaryonHeavy1Form:C0 55 1.25131e-40 insert BaryonHeavy1Form:C0 56 4.63466e-41 insert BaryonHeavy1Form:C0 57 1.23766e-39 insert BaryonHeavy1Form:C0 58 3.85248e-40 insert BaryonHeavy1Form:C0 59 8.90842e-39 insert BaryonHeavy1Form:C0 60 2.45582e-39 insert BaryonHeavy1Form:C0 61 5.11996e-38 insert BaryonHeavy1Form:C0 62 1.29144e-38 insert BaryonHeavy1Form:C0 63 2.4948e-37 insert BaryonHeavy1Form:C0 64 5.89613e-38 insert BaryonHeavy1Form:C0 65 1.07799e-36 insert BaryonHeavy1Form:C0 66 2.43358e-37 insert BaryonHeavy1Form:C0 67 4.28681e-36 insert BaryonHeavy1Form:C0 68 9.39947e-37 insert BaryonHeavy1Form:C0 69 1.62026e-35 insert BaryonHeavy1Form:C0 70 3.50054e-36 insert BaryonHeavy1Form:C0 71 5.98256e-35 insert BaryonHeavy1Form:C0 72 1.28841e-35 insert BaryonHeavy1Form:C0 73 2.20484e-34 insert BaryonHeavy1Form:C0 74 4.77162e-35 insert BaryonHeavy1Form:C0 75 8.22738e-34 insert BaryonHeavy1Form:C0 76 1.7972e-34 insert BaryonHeavy1Form:C0 77 3.13098e-33 insert BaryonHeavy1Form:C0 78 6.91323e-34 insert BaryonHeavy1Form:C0 79 1.21734e-32 insert BaryonHeavy1Form:C0 80 2.71581e-33 insert BaryonHeavy1Form:C0 81 4.82921e-32 insert BaryonHeavy1Form:C0 82 1.08724e-32 insert BaryonHeavy1Form:C0 83 1.94969e-31 insert BaryonHeavy1Form:C0 84 4.42369e-32 insert BaryonHeavy1Form:C0 85 7.9895e-31 insert BaryonHeavy1Form:C0 86 1.82466e-31 insert BaryonHeavy1Form:C0 87 3.31537e-30 insert BaryonHeavy1Form:C0 88 7.61387e-31 insert BaryonHeavy1Form:C0 89 1.39053e-29 insert BaryonHeavy1Form:C0 90 3.20863e-30 insert BaryonHeavy1Form:C0 91 5.88593e-29 insert BaryonHeavy1Form:C0 92 1.36377e-29 insert BaryonHeavy1Form:C0 93 2.51135e-28 insert BaryonHeavy1Form:C0 94 5.83983e-29 insert BaryonHeavy1Form:C0 95 1.07904e-27 insert BaryonHeavy1Form:C0 96 2.51718e-28 insert BaryonHeavy1Form:C0 97 4.66507e-27 insert BaryonHeavy1Form:C0 98 1.09136e-27 insert BaryonHeavy1Form:C0 99 2.02805e-26 insert BaryonHeavy1Form:C0 100 4.75657e-27 insert BaryonHeavy1Form:C0 101 8.86043e-26 insert BaryonHeavy1Form:C1 0 0.000303248 insert BaryonHeavy1Form:C1 1 0.00283105 insert BaryonHeavy1Form:C1 2 0.01681 insert BaryonHeavy1Form:C1 3 0.0785061 insert BaryonHeavy1Form:C1 4 0.312373 insert BaryonHeavy1Form:C1 5 1.10482 insert BaryonHeavy1Form:C1 6 3.56784 insert BaryonHeavy1Form:C1 7 10.7214 insert BaryonHeavy1Form:C1 8 30.4204 insert BaryonHeavy1Form:C1 9 82.4753 insert BaryonHeavy1Form:C1 10 215.861 insert BaryonHeavy1Form:C1 11 550.36 insert BaryonHeavy1Form:C1 12 1378.07 insert BaryonHeavy1Form:C1 13 3413.44 insert BaryonHeavy1Form:C1 14 8416.66 insert BaryonHeavy1Form:C1 15 20767.3 insert BaryonHeavy1Form:C1 16 51482.6 insert BaryonHeavy1Form:C1 17 128588 insert BaryonHeavy1Form:C1 18 324138 insert BaryonHeavy1Form:C1 19 825199 insert BaryonHeavy1Form:C1 20 2.12174e+06 insert BaryonHeavy1Form:C1 21 5.50721e+06 insert BaryonHeavy1Form:C1 22 1.442e+07 insert BaryonHeavy1Form:C1 23 3.8058e+07 insert BaryonHeavy1Form:C1 24 1.01162e+08 insert BaryonHeavy1Form:C1 25 2.70614e+08 insert BaryonHeavy1Form:C1 26 7.28045e+08 insert BaryonHeavy1Form:C1 27 1.96871e+09 insert BaryonHeavy1Form:C1 28 5.34813e+09 insert BaryonHeavy1Form:C1 29 1.45891e+10 insert BaryonHeavy1Form:C1 30 3.99481e+10 insert BaryonHeavy1Form:C1 31 1.09765e+11 insert BaryonHeavy1Form:C1 32 3.02556e+11 insert BaryonHeavy1Form:C1 33 8.36403e+11 insert BaryonHeavy1Form:C1 34 2.31844e+12 insert BaryonHeavy1Form:C1 35 6.44261e+12 insert BaryonHeavy1Form:C1 36 1.79448e+13 insert BaryonHeavy1Form:C1 37 5.00906e+13 insert BaryonHeavy1Form:C1 38 1.40106e+14 insert BaryonHeavy1Form:C1 39 3.92627e+14 insert BaryonHeavy1Form:C1 40 1.10225e+15 insert BaryonHeavy1Form:C1 41 3.09965e+15 insert BaryonHeavy1Form:C1 42 8.73037e+15 insert BaryonHeavy1Form:C1 43 2.46265e+16 insert BaryonHeavy1Form:C1 44 6.95648e+16 insert BaryonHeavy1Form:C1 45 1.9677e+17 insert BaryonHeavy1Form:C1 46 5.57293e+17 insert BaryonHeavy1Form:C1 47 1.58028e+18 insert BaryonHeavy1Form:C1 48 4.48627e+18 insert BaryonHeavy1Form:C1 49 1.27501e+19 insert BaryonHeavy1Form:C1 50 3.62743e+19 insert BaryonHeavy1Form:C1 51 1.33486e-43 insert BaryonHeavy1Form:C1 52 1.3252e-43 insert BaryonHeavy1Form:C1 53 6.64089e-42 insert BaryonHeavy1Form:C1 54 3.29627e-42 insert BaryonHeavy1Form:C1 55 1.10321e-40 insert BaryonHeavy1Form:C1 56 4.12175e-41 insert BaryonHeavy1Form:C1 57 1.10956e-39 insert BaryonHeavy1Form:C1 58 3.47961e-40 insert BaryonHeavy1Form:C1 59 8.10273e-39 insert BaryonHeavy1Form:C1 60 2.24852e-39 insert BaryonHeavy1Form:C1 61 4.71724e-38 insert BaryonHeavy1Form:C1 62 1.197e-38 insert BaryonHeavy1Form:C1 63 2.32564e-37 insert BaryonHeavy1Form:C1 64 5.52664e-38 insert BaryonHeavy1Form:C1 65 1.0158e-36 insert BaryonHeavy1Form:C1 66 2.30489e-37 insert BaryonHeavy1Form:C1 67 4.07999e-36 insert BaryonHeavy1Form:C1 68 8.98784e-37 insert BaryonHeavy1Form:C1 69 1.55618e-35 insert BaryonHeavy1Form:C1 70 3.37615e-36 insert BaryonHeavy1Form:C1 71 5.79239e-35 insert BaryonHeavy1Form:C1 72 1.25191e-35 insert BaryonHeavy1Form:C1 73 2.14933e-34 insert BaryonHeavy1Form:C1 74 4.66503e-35 insert BaryonHeavy1Form:C1 75 8.06432e-34 insert BaryonHeavy1Form:C1 76 1.76556e-34 insert BaryonHeavy1Form:C1 77 3.0819e-33 insert BaryonHeavy1Form:C1 78 6.81643e-34 insert BaryonHeavy1Form:C1 79 1.20205e-32 insert BaryonHeavy1Form:C1 80 2.68509e-33 insert BaryonHeavy1Form:C1 81 4.77975e-32 insert BaryonHeavy1Form:C1 82 1.07712e-32 insert BaryonHeavy1Form:C1 83 1.9331e-31 insert BaryonHeavy1Form:C1 84 4.38918e-32 insert BaryonHeavy1Form:C1 85 7.93209e-31 insert BaryonHeavy1Form:C1 86 1.81255e-31 insert BaryonHeavy1Form:C1 87 3.29495e-30 insert BaryonHeavy1Form:C1 88 7.57025e-31 insert BaryonHeavy1Form:C1 89 1.3831e-29 insert BaryonHeavy1Form:C1 90 3.19259e-30 insert BaryonHeavy1Form:C1 91 5.85835e-29 insert BaryonHeavy1Form:C1 92 1.35777e-29 insert BaryonHeavy1Form:C1 93 2.50095e-28 insert BaryonHeavy1Form:C1 94 5.81701e-29 insert BaryonHeavy1Form:C1 95 1.07506e-27 insert BaryonHeavy1Form:C1 96 2.50838e-28 insert BaryonHeavy1Form:C1 97 4.64961e-27 insert BaryonHeavy1Form:C1 98 1.08793e-27 insert BaryonHeavy1Form:C1 99 2.02198e-26 insert BaryonHeavy1Form:C1 100 4.74303e-27 insert BaryonHeavy1Form:C1 101 8.83639e-26 insert BaryonHeavy1Form:C2 0 5.97614e-05 insert BaryonHeavy1Form:C2 1 0.000758598 insert BaryonHeavy1Form:C2 2 0.00548822 insert BaryonHeavy1Form:C2 3 0.0294731 insert BaryonHeavy1Form:C2 4 0.13017 insert BaryonHeavy1Form:C2 5 0.499099 insert BaryonHeavy1Form:C2 6 1.71799 insert BaryonHeavy1Form:C2 7 5.43326 insert BaryonHeavy1Form:C2 8 16.0622 insert BaryonHeavy1Form:C2 9 45.0003 insert BaryonHeavy1Form:C2 10 120.858 insert BaryonHeavy1Form:C2 11 314.271 insert BaryonHeavy1Form:C2 12 798.245 insert BaryonHeavy1Form:C2 13 1996.12 insert BaryonHeavy1Form:C2 14 4948.31 insert BaryonHeavy1Form:C2 15 12232 insert BaryonHeavy1Form:C2 16 30294.2 insert BaryonHeavy1Form:C2 17 75435.4 insert BaryonHeavy1Form:C2 18 189304 insert BaryonHeavy1Form:C2 19 479380 insert BaryonHeavy1Form:C2 20 1.22556e+06 insert BaryonHeavy1Form:C2 21 3.16273e+06 insert BaryonHeavy1Form:C2 22 8.23472e+06 insert BaryonHeavy1Form:C2 23 2.16168e+07 insert BaryonHeavy1Form:C2 24 5.71691e+07 insert BaryonHeavy1Form:C2 25 1.52209e+08 insert BaryonHeavy1Form:C2 26 4.0769e+08 insert BaryonHeavy1Form:C2 27 1.09792e+09 insert BaryonHeavy1Form:C2 28 2.97116e+09 insert BaryonHeavy1Form:C2 29 8.07608e+09 insert BaryonHeavy1Form:C2 30 2.20403e+10 insert BaryonHeavy1Form:C2 31 6.03707e+10 insert BaryonHeavy1Form:C2 32 1.65918e+11 insert BaryonHeavy1Form:C2 33 4.57408e+11 insert BaryonHeavy1Form:C2 34 1.2646e+12 insert BaryonHeavy1Form:C2 35 3.50554e+12 insert BaryonHeavy1Form:C2 36 9.74144e+12 insert BaryonHeavy1Form:C2 37 2.71324e+13 insert BaryonHeavy1Form:C2 38 7.57327e+13 insert BaryonHeavy1Form:C2 39 2.11812e+14 insert BaryonHeavy1Form:C2 40 5.93521e+14 insert BaryonHeavy1Form:C2 41 1.66606e+15 insert BaryonHeavy1Form:C2 42 4.68459e+15 insert BaryonHeavy1Form:C2 43 1.31928e+16 insert BaryonHeavy1Form:C2 44 3.72091e+16 insert BaryonHeavy1Form:C2 45 1.05093e+17 insert BaryonHeavy1Form:C2 46 2.97223e+17 insert BaryonHeavy1Form:C2 47 8.41671e+17 insert BaryonHeavy1Form:C2 48 2.38631e+18 insert BaryonHeavy1Form:C2 49 6.7735e+18 insert BaryonHeavy1Form:C2 50 1.92476e+19 insert BaryonHeavy1Form:C2 51 1.86707e-44 insert BaryonHeavy1Form:C2 52 2.5887e-44 insert BaryonHeavy1Form:C2 53 1.61756e-42 insert BaryonHeavy1Form:C2 54 9.42145e-43 insert BaryonHeavy1Form:C2 55 3.56394e-41 insert BaryonHeavy1Form:C2 56 1.46742e-41 insert BaryonHeavy1Form:C2 57 4.27536e-40 insert BaryonHeavy1Form:C2 58 1.43162e-40 insert BaryonHeavy1Form:C2 59 3.52241e-39 insert BaryonHeavy1Form:C2 60 1.02417e-39 insert BaryonHeavy1Form:C2 61 2.23583e-38 insert BaryonHeavy1Form:C2 62 5.86951e-39 insert BaryonHeavy1Form:C2 63 1.17394e-37 insert BaryonHeavy1Form:C2 64 2.85934e-38 insert BaryonHeavy1Form:C2 65 5.36564e-37 insert BaryonHeavy1Form:C2 66 1.23864e-37 insert BaryonHeavy1Form:C2 67 2.22353e-36 insert BaryonHeavy1Form:C2 68 4.95279e-37 insert BaryonHeavy1Form:C2 69 8.64771e-36 insert BaryonHeavy1Form:C2 70 1.88739e-36 insert BaryonHeavy1Form:C2 71 3.25063e-35 insert BaryonHeavy1Form:C2 72 7.03967e-36 insert BaryonHeavy1Form:C2 73 1.20917e-34 insert BaryonHeavy1Form:C2 74 2.62249e-35 insert BaryonHeavy1Form:C2 75 4.52583e-34 insert BaryonHeavy1Form:C2 76 9.88547e-35 insert BaryonHeavy1Form:C2 77 1.72081e-33 insert BaryonHeavy1Form:C2 78 3.79455e-34 insert BaryonHeavy1Form:C2 79 6.67068e-33 insert BaryonHeavy1Form:C2 80 1.48541e-33 insert BaryonHeavy1Form:C2 81 2.6361e-32 insert BaryonHeavy1Form:C2 82 5.92285e-33 insert BaryonHeavy1Form:C2 83 1.05996e-31 insert BaryonHeavy1Form:C2 84 2.40017e-32 insert BaryonHeavy1Form:C2 85 4.32644e-31 insert BaryonHeavy1Form:C2 86 9.86219e-32 insert BaryonHeavy1Form:C2 87 1.78867e-30 insert BaryonHeavy1Form:C2 88 4.10053e-31 insert BaryonHeavy1Form:C2 89 7.47622e-30 insert BaryonHeavy1Form:C2 90 1.72232e-30 insert BaryonHeavy1Form:C2 91 3.15449e-29 insert BaryonHeavy1Form:C2 92 7.298e-30 insert BaryonHeavy1Form:C2 93 1.34197e-28 insert BaryonHeavy1Form:C2 94 3.11625e-29 insert BaryonHeavy1Form:C2 95 5.7503e-28 insert BaryonHeavy1Form:C2 96 1.3397e-28 insert BaryonHeavy1Form:C2 97 2.47979e-27 insert BaryonHeavy1Form:C2 98 5.79439e-28 insert BaryonHeavy1Form:C2 99 1.07552e-26 insert BaryonHeavy1Form:C2 100 2.51974e-27 insert BaryonHeavy1Form:C2 101 4.6887e-26 newdef BaryonHeavy1Form:Incoming 0 5122 newdef BaryonHeavy1Form:Outgoing 0 4122 newdef BaryonHeavy1Form:InSpin 0 2 newdef BaryonHeavy1Form:OutSpin 0 2 newdef BaryonHeavy1Form:Spectator1 0 1 newdef BaryonHeavy1Form:Spectator2 0 2 newdef BaryonHeavy1Form:InQuark 0 5 newdef BaryonHeavy1Form:OutQuark 0 4 newdef BaryonHeavy1Form:Incoming 1 5232 newdef BaryonHeavy1Form:Outgoing 1 4232 newdef BaryonHeavy1Form:InSpin 1 2 newdef BaryonHeavy1Form:OutSpin 1 2 newdef BaryonHeavy1Form:Spectator1 1 2 newdef BaryonHeavy1Form:Spectator2 1 3 newdef BaryonHeavy1Form:InQuark 1 5 newdef BaryonHeavy1Form:OutQuark 1 4 newdef BaryonHeavy1Form:Incoming 2 5132 newdef BaryonHeavy1Form:Outgoing 2 4132 newdef BaryonHeavy1Form:InSpin 2 2 newdef BaryonHeavy1Form:OutSpin 2 2 newdef BaryonHeavy1Form:Spectator1 2 1 newdef BaryonHeavy1Form:Spectator2 2 3 newdef BaryonHeavy1Form:InQuark 2 5 newdef BaryonHeavy1Form:OutQuark 2 4 newdef BaryonHeavy1Form:Incoming 3 5112 newdef BaryonHeavy1Form:Outgoing 3 4112 newdef BaryonHeavy1Form:InSpin 3 2 newdef BaryonHeavy1Form:OutSpin 3 2 newdef BaryonHeavy1Form:Spectator1 3 1 newdef BaryonHeavy1Form:Spectator2 3 1 newdef BaryonHeavy1Form:InQuark 3 5 newdef BaryonHeavy1Form:OutQuark 3 4 newdef BaryonHeavy1Form:Incoming 4 5212 newdef BaryonHeavy1Form:Outgoing 4 4212 newdef BaryonHeavy1Form:InSpin 4 2 newdef BaryonHeavy1Form:OutSpin 4 2 newdef BaryonHeavy1Form:Spectator1 4 2 newdef BaryonHeavy1Form:Spectator2 4 1 newdef BaryonHeavy1Form:InQuark 4 5 newdef BaryonHeavy1Form:OutQuark 4 4 newdef BaryonHeavy1Form:Incoming 5 5222 newdef BaryonHeavy1Form:Outgoing 5 4222 newdef BaryonHeavy1Form:InSpin 5 2 newdef BaryonHeavy1Form:OutSpin 5 2 newdef BaryonHeavy1Form:Spectator1 5 2 newdef BaryonHeavy1Form:Spectator2 5 2 newdef BaryonHeavy1Form:InQuark 5 5 newdef BaryonHeavy1Form:OutQuark 5 4 newdef BaryonHeavy1Form:Incoming 6 5332 newdef BaryonHeavy1Form:Outgoing 6 4332 newdef BaryonHeavy1Form:InSpin 6 2 newdef BaryonHeavy1Form:OutSpin 6 2 newdef BaryonHeavy1Form:Spectator1 6 3 newdef BaryonHeavy1Form:Spectator2 6 3 newdef BaryonHeavy1Form:InQuark 6 5 newdef BaryonHeavy1Form:OutQuark 6 4 newdef BaryonHeavy1Form:Incoming 7 5112 newdef BaryonHeavy1Form:Outgoing 7 4114 newdef BaryonHeavy1Form:InSpin 7 2 newdef BaryonHeavy1Form:OutSpin 7 4 newdef BaryonHeavy1Form:Spectator1 7 1 newdef BaryonHeavy1Form:Spectator2 7 1 newdef BaryonHeavy1Form:InQuark 7 5 newdef BaryonHeavy1Form:OutQuark 7 4 newdef BaryonHeavy1Form:Incoming 8 5212 newdef BaryonHeavy1Form:Outgoing 8 4214 newdef BaryonHeavy1Form:InSpin 8 2 newdef BaryonHeavy1Form:OutSpin 8 4 newdef BaryonHeavy1Form:Spectator1 8 2 newdef BaryonHeavy1Form:Spectator2 8 1 newdef BaryonHeavy1Form:InQuark 8 5 newdef BaryonHeavy1Form:OutQuark 8 4 newdef BaryonHeavy1Form:Incoming 9 5222 newdef BaryonHeavy1Form:Outgoing 9 4224 newdef BaryonHeavy1Form:InSpin 9 2 newdef BaryonHeavy1Form:OutSpin 9 4 newdef BaryonHeavy1Form:Spectator1 9 2 newdef BaryonHeavy1Form:Spectator2 9 2 newdef BaryonHeavy1Form:InQuark 9 5 newdef BaryonHeavy1Form:OutQuark 9 4 newdef BaryonHeavy1Form:Incoming 10 5332 newdef BaryonHeavy1Form:Outgoing 10 4334 newdef BaryonHeavy1Form:InSpin 10 2 newdef BaryonHeavy1Form:OutSpin 10 4 newdef BaryonHeavy1Form:Spectator1 10 3 newdef BaryonHeavy1Form:Spectator2 10 3 newdef BaryonHeavy1Form:InQuark 10 5 newdef BaryonHeavy1Form:OutQuark 10 4 newdef BaryonHeavy1:FormFactor BaryonHeavy1Form # create Herwig::SemiLeptonicBaryonDecayer BaryonHeavy2 newdef BaryonHeavy2:Iteration 1 newdef BaryonHeavy2:Ntry 500 newdef BaryonHeavy2:Points 10000 insert BaryonHeavy2:MaximumWeight 0 0.224529 insert BaryonHeavy2:MaximumWeight 1 0.220339 insert BaryonHeavy2:MaximumWeight 2 0.0563864 insert BaryonHeavy2:MaximumWeight 3 2.99041e-11 insert BaryonHeavy2:MaximumWeight 4 3.16203e-11 insert BaryonHeavy2:MaximumWeight 5 5.07564e-12 insert BaryonHeavy2:MaximumWeight 6 2.20245e-11 insert BaryonHeavy2:MaximumWeight 7 2.73425e-11 insert BaryonHeavy2:MaximumWeight 8 4.50209e-12 insert BaryonHeavy2:MaximumWeight 9 3.83095e-11 insert BaryonHeavy2:MaximumWeight 10 3.46566e-11 insert BaryonHeavy2:MaximumWeight 11 6.57251e-12 insert BaryonHeavy2:MaximumWeight 12 0.266394 insert BaryonHeavy2:MaximumWeight 13 0.247822 insert BaryonHeavy2:MaximumWeight 14 0.0409128 insert BaryonHeavy2:MaximumWeight 15 0.273397 insert BaryonHeavy2:MaximumWeight 16 0.267639 insert BaryonHeavy2:MaximumWeight 17 0.0666931 insert BaryonHeavy2:MaximumWeight 18 0.273754 insert BaryonHeavy2:MaximumWeight 19 0.268016 insert BaryonHeavy2:MaximumWeight 20 0.0667733 insert BaryonHeavy2:MaximumWeight 21 0.100 insert BaryonHeavy2:MaximumWeight 22 0.098 insert BaryonHeavy2:MaximumWeight 23 1.72323e-10 insert BaryonHeavy2:MaximumWeight 24 1.46686e-10 insert BaryonHeavy2:MaximumWeight 25 1.71899e-10 insert BaryonHeavy2:MaximumWeight 26 1.45838e-10 insert BaryonHeavy2:MaximumWeight 27 1.75848e-10 insert BaryonHeavy2:MaximumWeight 28 1.49537e-10 insert BaryonHeavy2:MaximumWeight 29 0.164607 insert BaryonHeavy2:MaximumWeight 30 0.143456 insert BaryonHeavy2:MaximumWeight 31 0.041659 insert BaryonHeavy2:MaximumWeight 32 0.0362478 create Herwig::LeptonNeutrinoCurrent BaryonHeavy2Current HwWeakCurrents.so newdef BaryonHeavy2Current:Quark 0 11 newdef BaryonHeavy2Current:AntiQuark 0 -12 newdef BaryonHeavy2Current:Quark 1 13 newdef BaryonHeavy2Current:AntiQuark 1 -15 newdef BaryonHeavy2Current:Quark 2 15 newdef BaryonHeavy2Current:AntiQuark 2 -16 newdef BaryonHeavy2:Current BaryonHeavy2Current create Herwig::SingletonFormFactor BaryonHeavy2Form newdef BaryonHeavy2Form:CharmMass 1.8 newdef BaryonHeavy2Form:StrangeMass 0.51 newdef BaryonHeavy2Form:ThetaLambda 0.785398 newdef BaryonHeavy2Form:ThetaSigma 0.785398 newdef BaryonHeavy2Form:ThetaXi 0.785398 newdef BaryonHeavy2Form:ThetaXiPrime 0.785398 newdef BaryonHeavy2Form:PoleMass 0 6 newdef BaryonHeavy2Form:PoleMass 1 6 newdef BaryonHeavy2Form:PoleMass 2 6 newdef BaryonHeavy2Form:PoleMass 3 6 newdef BaryonHeavy2Form:PoleMass 4 6.4 newdef BaryonHeavy2Form:PoleMass 5 6 newdef BaryonHeavy2Form:PoleMass 6 6 newdef BaryonHeavy2Form:PoleMass 7 2.5 newdef BaryonHeavy2Form:PoleMass 8 2.8 newdef BaryonHeavy2Form:PoleMass 9 2.8 newdef BaryonHeavy2Form:PoleMass 10 2.8 newdef BaryonHeavy2Form:PoleMass 11 2.8 newdef BaryonHeavy2Form:PoleMass 12 2.8 newdef BaryonHeavy2Form:Incoming 0 5122 newdef BaryonHeavy2Form:Outgoing 0 4122 newdef BaryonHeavy2Form:InSpin 0 2 newdef BaryonHeavy2Form:OutSpin 0 2 newdef BaryonHeavy2Form:Spectator1 0 1 newdef BaryonHeavy2Form:Spectator2 0 2 newdef BaryonHeavy2Form:InQuark 0 5 newdef BaryonHeavy2Form:OutQuark 0 4 newdef BaryonHeavy2Form:Incoming 1 5112 newdef BaryonHeavy2Form:Outgoing 1 4112 newdef BaryonHeavy2Form:InSpin 1 2 newdef BaryonHeavy2Form:OutSpin 1 2 newdef BaryonHeavy2Form:Spectator1 1 1 newdef BaryonHeavy2Form:Spectator2 1 1 newdef BaryonHeavy2Form:InQuark 1 5 newdef BaryonHeavy2Form:OutQuark 1 4 newdef BaryonHeavy2Form:Incoming 2 5212 newdef BaryonHeavy2Form:Outgoing 2 4212 newdef BaryonHeavy2Form:InSpin 2 2 newdef BaryonHeavy2Form:OutSpin 2 2 newdef BaryonHeavy2Form:Spectator1 2 2 newdef BaryonHeavy2Form:Spectator2 2 1 newdef BaryonHeavy2Form:InQuark 2 5 newdef BaryonHeavy2Form:OutQuark 2 4 newdef BaryonHeavy2Form:Incoming 3 5222 newdef BaryonHeavy2Form:Outgoing 3 4222 newdef BaryonHeavy2Form:InSpin 3 2 newdef BaryonHeavy2Form:OutSpin 3 2 newdef BaryonHeavy2Form:Spectator1 3 2 newdef BaryonHeavy2Form:Spectator2 3 2 newdef BaryonHeavy2Form:InQuark 3 5 newdef BaryonHeavy2Form:OutQuark 3 4 newdef BaryonHeavy2Form:Incoming 4 5332 newdef BaryonHeavy2Form:Outgoing 4 4332 newdef BaryonHeavy2Form:InSpin 4 2 newdef BaryonHeavy2Form:OutSpin 4 2 newdef BaryonHeavy2Form:Spectator1 4 3 newdef BaryonHeavy2Form:Spectator2 4 3 newdef BaryonHeavy2Form:InQuark 4 5 newdef BaryonHeavy2Form:OutQuark 4 4 newdef BaryonHeavy2Form:Incoming 5 5232 newdef BaryonHeavy2Form:Outgoing 5 4232 newdef BaryonHeavy2Form:InSpin 5 2 newdef BaryonHeavy2Form:OutSpin 5 2 newdef BaryonHeavy2Form:Spectator1 5 2 newdef BaryonHeavy2Form:Spectator2 5 3 newdef BaryonHeavy2Form:InQuark 5 5 newdef BaryonHeavy2Form:OutQuark 5 4 newdef BaryonHeavy2Form:Incoming 6 5132 newdef BaryonHeavy2Form:Outgoing 6 4132 newdef BaryonHeavy2Form:InSpin 6 2 newdef BaryonHeavy2Form:OutSpin 6 2 newdef BaryonHeavy2Form:Spectator1 6 1 newdef BaryonHeavy2Form:Spectator2 6 3 newdef BaryonHeavy2Form:InQuark 6 5 newdef BaryonHeavy2Form:OutQuark 6 4 newdef BaryonHeavy2Form:Incoming 7 4122 newdef BaryonHeavy2Form:Outgoing 7 3122 newdef BaryonHeavy2Form:InSpin 7 2 newdef BaryonHeavy2Form:OutSpin 7 2 newdef BaryonHeavy2Form:Spectator1 7 1 newdef BaryonHeavy2Form:Spectator2 7 2 newdef BaryonHeavy2Form:InQuark 7 4 newdef BaryonHeavy2Form:OutQuark 7 3 newdef BaryonHeavy2Form:Incoming 8 4112 newdef BaryonHeavy2Form:Outgoing 8 3112 newdef BaryonHeavy2Form:InSpin 8 2 newdef BaryonHeavy2Form:OutSpin 8 2 newdef BaryonHeavy2Form:Spectator1 8 1 newdef BaryonHeavy2Form:Spectator2 8 1 newdef BaryonHeavy2Form:InQuark 8 4 newdef BaryonHeavy2Form:OutQuark 8 3 newdef BaryonHeavy2Form:Incoming 9 4212 newdef BaryonHeavy2Form:Outgoing 9 3212 newdef BaryonHeavy2Form:InSpin 9 2 newdef BaryonHeavy2Form:OutSpin 9 2 newdef BaryonHeavy2Form:Spectator1 9 2 newdef BaryonHeavy2Form:Spectator2 9 1 newdef BaryonHeavy2Form:InQuark 9 4 newdef BaryonHeavy2Form:OutQuark 9 3 newdef BaryonHeavy2Form:Incoming 10 4222 newdef BaryonHeavy2Form:Outgoing 10 3222 newdef BaryonHeavy2Form:InSpin 10 2 newdef BaryonHeavy2Form:OutSpin 10 2 newdef BaryonHeavy2Form:Spectator1 10 2 newdef BaryonHeavy2Form:Spectator2 10 2 newdef BaryonHeavy2Form:InQuark 10 4 newdef BaryonHeavy2Form:OutQuark 10 3 newdef BaryonHeavy2Form:Incoming 11 4232 newdef BaryonHeavy2Form:Outgoing 11 3322 newdef BaryonHeavy2Form:InSpin 11 2 newdef BaryonHeavy2Form:OutSpin 11 2 newdef BaryonHeavy2Form:Spectator1 11 2 newdef BaryonHeavy2Form:Spectator2 11 3 newdef BaryonHeavy2Form:InQuark 11 4 newdef BaryonHeavy2Form:OutQuark 11 3 newdef BaryonHeavy2Form:Incoming 12 4132 newdef BaryonHeavy2Form:Outgoing 12 3312 newdef BaryonHeavy2Form:InSpin 12 2 newdef BaryonHeavy2Form:OutSpin 12 2 newdef BaryonHeavy2Form:Spectator1 12 1 newdef BaryonHeavy2Form:Spectator2 12 3 newdef BaryonHeavy2Form:InQuark 12 4 newdef BaryonHeavy2Form:OutQuark 12 3 newdef BaryonHeavy2:FormFactor BaryonHeavy2Form # create Herwig::KornerKramerCharmDecayer CharmBaryon1 newdef CharmBaryon1:Iteration 1 newdef CharmBaryon1:Ntry 500 newdef CharmBaryon1:Points 10000 newdef CharmBaryon1:GenerateIntermediates 0 newdef CharmBaryon1:OneOverNc 0 newdef CharmBaryon1:Fpi 131.7 newdef CharmBaryon1:FK 160.6 newdef CharmBaryon1:Frho 0.272 newdef CharmBaryon1:fKstar 0.238 newdef CharmBaryon1:Mdcplus 2.42 newdef CharmBaryon1:Mscplus 2.54 newdef CharmBaryon1:Mdcminus 2.01 newdef CharmBaryon1:Mscminus 2.11 newdef CharmBaryon1:Cplus 0.73 newdef CharmBaryon1:Cminus 1.9 newdef CharmBaryon1:H2 0.119 newdef CharmBaryon1:H3 -0.011 newdef CharmBaryon1:I1 0 -0.333333 newdef CharmBaryon1:I2 0 -0.333333 newdef CharmBaryon1:I3 0 -0.333333 newdef CharmBaryon1:I4 0 0.666667 newdef CharmBaryon1:I5 0 0.166667 newdef CharmBaryon1:Ihat3 0 -0.333333 newdef CharmBaryon1:Ihat4 0 0.666667 newdef CharmBaryon1:Incoming 0 4122 newdef CharmBaryon1:OutgoingB 0 3122 newdef CharmBaryon1:OutgoingM 0 211 newdef CharmBaryon1:MaxWeight 0 0.0131 newdef CharmBaryon1:I1 1 0 newdef CharmBaryon1:I2 1 0 newdef CharmBaryon1:I3 1 -0.57735 newdef CharmBaryon1:I4 1 0 newdef CharmBaryon1:I5 1 -0.288675 newdef CharmBaryon1:Ihat3 1 0.57735 newdef CharmBaryon1:Ihat4 1 -1.1547 newdef CharmBaryon1:Incoming 1 4122 newdef CharmBaryon1:OutgoingB 1 3212 newdef CharmBaryon1:OutgoingM 1 211 newdef CharmBaryon1:MaxWeight 1 0.00585 newdef CharmBaryon1:I1 2 0 newdef CharmBaryon1:I2 2 0 newdef CharmBaryon1:I3 2 0.57735 newdef CharmBaryon1:I4 2 0 newdef CharmBaryon1:I5 2 0.288675 newdef CharmBaryon1:Ihat3 2 -0.57735 newdef CharmBaryon1:Ihat4 2 1.1547 newdef CharmBaryon1:Incoming 2 4122 newdef CharmBaryon1:OutgoingB 2 3222 newdef CharmBaryon1:OutgoingM 2 111 newdef CharmBaryon1:MaxWeight 2 0.0059 newdef CharmBaryon1:I1 3 0 newdef CharmBaryon1:I2 3 0 newdef CharmBaryon1:I3 3 -0.169102 newdef CharmBaryon1:I4 3 0.57735 newdef CharmBaryon1:I5 3 0.204124 newdef CharmBaryon1:Ihat3 3 0.408248 newdef CharmBaryon1:Ihat4 3 -0.816497 newdef CharmBaryon1:Incoming 3 4122 newdef CharmBaryon1:OutgoingB 3 3222 newdef CharmBaryon1:OutgoingM 3 221 newdef CharmBaryon1:MaxWeight 3 0.00247881 newdef CharmBaryon1:I1 4 0 newdef CharmBaryon1:I2 4 0 newdef CharmBaryon1:I3 4 0.985599 newdef CharmBaryon1:I4 4 -0.57735 newdef CharmBaryon1:I5 4 0.204124 newdef CharmBaryon1:Ihat3 4 0.408248 newdef CharmBaryon1:Ihat4 4 -0.816497 newdef CharmBaryon1:Incoming 4 4122 newdef CharmBaryon1:OutgoingB 4 3222 newdef CharmBaryon1:OutgoingM 4 331 newdef CharmBaryon1:MaxWeight 4 0.0215345 newdef CharmBaryon1:I1 5 -0.408248 newdef CharmBaryon1:I2 5 -0.408248 newdef CharmBaryon1:I3 5 -0.816497 newdef CharmBaryon1:I4 5 0.816497 newdef CharmBaryon1:I5 5 0 newdef CharmBaryon1:Ihat3 5 0 newdef CharmBaryon1:Ihat4 5 0 newdef CharmBaryon1:Incoming 5 4122 newdef CharmBaryon1:OutgoingB 5 2212 newdef CharmBaryon1:OutgoingM 5 -311 newdef CharmBaryon1:MaxWeight 5 0.045 newdef CharmBaryon1:I1 6 0 newdef CharmBaryon1:I2 6 0 newdef CharmBaryon1:I3 6 0 newdef CharmBaryon1:I4 6 0.816497 newdef CharmBaryon1:I5 6 0.408248 newdef CharmBaryon1:Ihat3 6 0 newdef CharmBaryon1:Ihat4 6 0 newdef CharmBaryon1:Incoming 6 4122 newdef CharmBaryon1:OutgoingB 6 3322 newdef CharmBaryon1:OutgoingM 6 321 newdef CharmBaryon1:MaxWeight 6 0.00427652 newdef CharmBaryon1:I1 7 -0.408248 newdef CharmBaryon1:I2 7 -0.408248 newdef CharmBaryon1:I3 7 0 newdef CharmBaryon1:I4 7 0 newdef CharmBaryon1:I5 7 0 newdef CharmBaryon1:Ihat3 7 -0.816497 newdef CharmBaryon1:Ihat4 7 1.63299 newdef CharmBaryon1:Incoming 7 4232 newdef CharmBaryon1:OutgoingB 7 3222 newdef CharmBaryon1:OutgoingM 7 -311 newdef CharmBaryon1:MaxWeight 7 0.136 newdef CharmBaryon1:I1 8 0.408248 newdef CharmBaryon1:I2 8 0.408248 newdef CharmBaryon1:I3 8 0 newdef CharmBaryon1:I4 8 0 newdef CharmBaryon1:I5 8 0 newdef CharmBaryon1:Ihat3 8 0.816497 newdef CharmBaryon1:Ihat4 8 -1.63299 newdef CharmBaryon1:Incoming 8 4232 newdef CharmBaryon1:OutgoingB 8 3322 newdef CharmBaryon1:OutgoingM 8 211 newdef CharmBaryon1:MaxWeight 8 0.067 newdef CharmBaryon1:I1 9 0.166667 newdef CharmBaryon1:I2 9 0.166667 newdef CharmBaryon1:I3 9 0.666667 newdef CharmBaryon1:I4 9 -0.333333 newdef CharmBaryon1:I5 9 0.166667 newdef CharmBaryon1:Ihat3 9 -0.333333 newdef CharmBaryon1:Ihat4 9 0.666667 newdef CharmBaryon1:Incoming 9 4132 newdef CharmBaryon1:OutgoingB 9 3122 newdef CharmBaryon1:OutgoingM 9 -311 newdef CharmBaryon1:MaxWeight 9 0.0023 newdef CharmBaryon1:I1 10 0.288675 newdef CharmBaryon1:I2 10 0.288675 newdef CharmBaryon1:I3 10 0 newdef CharmBaryon1:I4 10 -0.57735 newdef CharmBaryon1:I5 10 -0.288675 newdef CharmBaryon1:Ihat3 10 0.57735 newdef CharmBaryon1:Ihat4 10 -1.1547 newdef CharmBaryon1:Incoming 10 4132 newdef CharmBaryon1:OutgoingB 10 3212 newdef CharmBaryon1:OutgoingM 10 -311 newdef CharmBaryon1:MaxWeight 10 0.025 newdef CharmBaryon1:I1 11 0 newdef CharmBaryon1:I2 11 0 newdef CharmBaryon1:I3 11 0 newdef CharmBaryon1:I4 11 0.816497 newdef CharmBaryon1:I5 11 0.408248 newdef CharmBaryon1:Ihat3 11 0 newdef CharmBaryon1:Ihat4 11 0 newdef CharmBaryon1:Incoming 11 4132 newdef CharmBaryon1:OutgoingB 11 3222 newdef CharmBaryon1:OutgoingM 11 -321 newdef CharmBaryon1:MaxWeight 11 0.00201135 newdef CharmBaryon1:I1 12 0 newdef CharmBaryon1:I2 12 0 newdef CharmBaryon1:I3 12 0.57735 newdef CharmBaryon1:I4 12 -0.57735 newdef CharmBaryon1:I5 12 0 newdef CharmBaryon1:Ihat3 12 -0.57735 newdef CharmBaryon1:Ihat4 12 1.1547 newdef CharmBaryon1:Incoming 12 4132 newdef CharmBaryon1:OutgoingB 12 3322 newdef CharmBaryon1:OutgoingM 12 111 newdef CharmBaryon1:MaxWeight 12 0.00075 newdef CharmBaryon1:I1 13 0 newdef CharmBaryon1:I2 13 0 newdef CharmBaryon1:I3 13 -0.169102 newdef CharmBaryon1:I4 13 -0.408248 newdef CharmBaryon1:I5 13 -0.288675 newdef CharmBaryon1:Ihat3 13 0.408248 newdef CharmBaryon1:Ihat4 13 -0.816497 newdef CharmBaryon1:Incoming 13 4132 newdef CharmBaryon1:OutgoingB 13 3322 newdef CharmBaryon1:OutgoingM 13 221 newdef CharmBaryon1:MaxWeight 13 0.0048 newdef CharmBaryon1:I1 14 0 newdef CharmBaryon1:I2 14 0 newdef CharmBaryon1:I3 14 0.985599 newdef CharmBaryon1:I4 14 -0.408248 newdef CharmBaryon1:I5 14 0.288675 newdef CharmBaryon1:Ihat3 14 0.408248 newdef CharmBaryon1:Ihat4 14 -0.816497 newdef CharmBaryon1:Incoming 14 4132 newdef CharmBaryon1:OutgoingB 14 3322 newdef CharmBaryon1:OutgoingM 14 331 newdef CharmBaryon1:MaxWeight 14 0.0142804 newdef CharmBaryon1:I1 15 -0.408248 newdef CharmBaryon1:I2 15 -0.408248 newdef CharmBaryon1:I3 15 -0.816497 newdef CharmBaryon1:I4 15 0.816497 newdef CharmBaryon1:I5 15 0 newdef CharmBaryon1:Ihat3 15 0 newdef CharmBaryon1:Ihat4 15 0 newdef CharmBaryon1:Incoming 15 4132 newdef CharmBaryon1:OutgoingB 15 3312 newdef CharmBaryon1:OutgoingM 15 211 newdef CharmBaryon1:MaxWeight 15 0.0176031 newdef CharmBaryon1:I1 16 1 newdef CharmBaryon1:I2 16 -1 newdef CharmBaryon1:I3 16 0 newdef CharmBaryon1:I4 16 0 newdef CharmBaryon1:I5 16 0 newdef CharmBaryon1:Ihat3 16 2 newdef CharmBaryon1:Ihat4 16 0 newdef CharmBaryon1:Incoming 16 4332 newdef CharmBaryon1:OutgoingB 16 3322 newdef CharmBaryon1:OutgoingM 16 -311 newdef CharmBaryon1:MaxWeight 16 0.0200215 newdef CharmBaryon1:I1 17 -0.333333 newdef CharmBaryon1:I2 17 -0.333333 newdef CharmBaryon1:I3 17 -0.333333 newdef CharmBaryon1:I4 17 0.666667 newdef CharmBaryon1:I5 17 0.166667 newdef CharmBaryon1:Ihat3 17 -0.333333 newdef CharmBaryon1:Ihat4 17 0.666667 newdef CharmBaryon1:Incoming 17 4122 newdef CharmBaryon1:OutgoingB 17 3122 newdef CharmBaryon1:OutgoingM 17 213 newdef CharmBaryon1:MaxWeight 17 0.41 newdef CharmBaryon1:I1 18 0 newdef CharmBaryon1:I2 18 0 newdef CharmBaryon1:I3 18 -0.57735 newdef CharmBaryon1:I4 18 0 newdef CharmBaryon1:I5 18 -0.288675 newdef CharmBaryon1:Ihat3 18 0.57735 newdef CharmBaryon1:Ihat4 18 -1.1547 newdef CharmBaryon1:Incoming 18 4122 newdef CharmBaryon1:OutgoingB 18 3212 newdef CharmBaryon1:OutgoingM 18 213 newdef CharmBaryon1:MaxWeight 18 0.0554171 newdef CharmBaryon1:I1 19 0 newdef CharmBaryon1:I2 19 0 newdef CharmBaryon1:I3 19 0.57735 newdef CharmBaryon1:I4 19 0 newdef CharmBaryon1:I5 19 0.288675 newdef CharmBaryon1:Ihat3 19 -0.57735 newdef CharmBaryon1:Ihat4 19 1.1547 newdef CharmBaryon1:Incoming 19 4122 newdef CharmBaryon1:OutgoingB 19 3222 newdef CharmBaryon1:OutgoingM 19 113 newdef CharmBaryon1:MaxWeight 19 0.0550436 newdef CharmBaryon1:I1 20 0 newdef CharmBaryon1:I2 20 0 newdef CharmBaryon1:I3 20 0.57735 newdef CharmBaryon1:I4 20 0 newdef CharmBaryon1:I5 20 0.288675 newdef CharmBaryon1:Ihat3 20 0.57735 newdef CharmBaryon1:Ihat4 20 -1.1547 newdef CharmBaryon1:Incoming 20 4122 newdef CharmBaryon1:OutgoingB 20 3222 newdef CharmBaryon1:OutgoingM 20 223 newdef CharmBaryon1:MaxWeight 20 0.201805 newdef CharmBaryon1:I1 21 0 newdef CharmBaryon1:I2 21 0 newdef CharmBaryon1:I3 21 0.816497 newdef CharmBaryon1:I4 21 -0.816497 newdef CharmBaryon1:I5 21 0 newdef CharmBaryon1:Ihat3 21 0 newdef CharmBaryon1:Ihat4 21 0 newdef CharmBaryon1:Incoming 21 4122 newdef CharmBaryon1:OutgoingB 21 3222 newdef CharmBaryon1:OutgoingM 21 333 newdef CharmBaryon1:MaxWeight 21 0.00524444 newdef CharmBaryon1:I1 22 -0.408248 newdef CharmBaryon1:I2 22 -0.408248 newdef CharmBaryon1:I3 22 -0.816497 newdef CharmBaryon1:I4 22 0.816497 newdef CharmBaryon1:I5 22 0 newdef CharmBaryon1:Ihat3 22 0 newdef CharmBaryon1:Ihat4 22 0 newdef CharmBaryon1:Incoming 22 4122 newdef CharmBaryon1:OutgoingB 22 2212 newdef CharmBaryon1:OutgoingM 22 -313 newdef CharmBaryon1:MaxWeight 22 0.0798045 newdef CharmBaryon1:I1 23 0 newdef CharmBaryon1:I2 23 0 newdef CharmBaryon1:I3 23 0 newdef CharmBaryon1:I4 23 0.816497 newdef CharmBaryon1:I5 23 0.408248 newdef CharmBaryon1:Ihat3 23 0 newdef CharmBaryon1:Ihat4 23 0 newdef CharmBaryon1:Incoming 23 4122 newdef CharmBaryon1:OutgoingB 23 3322 newdef CharmBaryon1:OutgoingM 23 323 newdef CharmBaryon1:MaxWeight 23 0.00335682 newdef CharmBaryon1:I1 24 -0.408248 newdef CharmBaryon1:I2 24 -0.408248 newdef CharmBaryon1:I3 24 0 newdef CharmBaryon1:I4 24 0 newdef CharmBaryon1:I5 24 0 newdef CharmBaryon1:Ihat3 24 -0.816497 newdef CharmBaryon1:Ihat4 24 1.63299 newdef CharmBaryon1:Incoming 24 4232 newdef CharmBaryon1:OutgoingB 24 3222 newdef CharmBaryon1:OutgoingM 24 -313 newdef CharmBaryon1:MaxWeight 24 0.0465517 newdef CharmBaryon1:I1 25 0.408248 newdef CharmBaryon1:I2 25 0.408248 newdef CharmBaryon1:I3 25 0 newdef CharmBaryon1:I4 25 0 newdef CharmBaryon1:I5 25 0 newdef CharmBaryon1:Ihat3 25 0.816497 newdef CharmBaryon1:Ihat4 25 -1.63299 newdef CharmBaryon1:Incoming 25 4232 newdef CharmBaryon1:OutgoingB 25 3322 newdef CharmBaryon1:OutgoingM 25 213 newdef CharmBaryon1:MaxWeight 25 1.72674 newdef CharmBaryon1:I1 26 0.166667 newdef CharmBaryon1:I2 26 0.166667 newdef CharmBaryon1:I3 26 0.666667 newdef CharmBaryon1:I4 26 -0.333333 newdef CharmBaryon1:I5 26 0.166667 newdef CharmBaryon1:Ihat3 26 -0.333333 newdef CharmBaryon1:Ihat4 26 0.666667 newdef CharmBaryon1:Incoming 26 4132 newdef CharmBaryon1:OutgoingB 26 3122 newdef CharmBaryon1:OutgoingM 26 -313 newdef CharmBaryon1:MaxWeight 26 0.0299461 newdef CharmBaryon1:I1 27 0.288675 newdef CharmBaryon1:I2 27 0.288675 newdef CharmBaryon1:I3 27 0 newdef CharmBaryon1:I4 27 -0.57735 newdef CharmBaryon1:I5 27 -0.288675 newdef CharmBaryon1:Ihat3 27 0.57735 newdef CharmBaryon1:Ihat4 27 -1.1547 newdef CharmBaryon1:Incoming 27 4132 newdef CharmBaryon1:OutgoingB 27 3212 newdef CharmBaryon1:OutgoingM 27 -313 newdef CharmBaryon1:MaxWeight 27 0.0108903 newdef CharmBaryon1:I1 28 0 newdef CharmBaryon1:I2 28 0 newdef CharmBaryon1:I3 28 0 newdef CharmBaryon1:I4 28 0.816497 newdef CharmBaryon1:I5 28 0.408248 newdef CharmBaryon1:Ihat3 28 0 newdef CharmBaryon1:Ihat4 28 0 newdef CharmBaryon1:Incoming 28 4132 newdef CharmBaryon1:OutgoingB 28 3222 newdef CharmBaryon1:OutgoingM 28 -323 newdef CharmBaryon1:MaxWeight 28 0.0072 newdef CharmBaryon1:I1 29 0 newdef CharmBaryon1:I2 29 0 newdef CharmBaryon1:I3 29 0.57735 newdef CharmBaryon1:I4 29 -0.57735 newdef CharmBaryon1:I5 29 0 newdef CharmBaryon1:Ihat3 29 -0.57735 newdef CharmBaryon1:Ihat4 29 1.1547 newdef CharmBaryon1:Incoming 29 4132 newdef CharmBaryon1:OutgoingB 29 3322 newdef CharmBaryon1:OutgoingM 29 113 newdef CharmBaryon1:MaxWeight 29 0.0288654 newdef CharmBaryon1:I1 30 0 newdef CharmBaryon1:I2 30 0 newdef CharmBaryon1:I3 30 0.57735 newdef CharmBaryon1:I4 30 -0.57735 newdef CharmBaryon1:I5 30 0 newdef CharmBaryon1:Ihat3 30 0.57735 newdef CharmBaryon1:Ihat4 30 -1.1547 newdef CharmBaryon1:Incoming 30 4132 newdef CharmBaryon1:OutgoingB 30 3322 newdef CharmBaryon1:OutgoingM 30 223 newdef CharmBaryon1:MaxWeight 30 0.12 newdef CharmBaryon1:I1 31 0 newdef CharmBaryon1:I2 31 0 newdef CharmBaryon1:I3 31 0.816497 newdef CharmBaryon1:I4 31 0 newdef CharmBaryon1:I5 31 0.408248 newdef CharmBaryon1:Ihat3 31 0 newdef CharmBaryon1:Ihat4 31 0 newdef CharmBaryon1:Incoming 31 4132 newdef CharmBaryon1:OutgoingB 31 3322 newdef CharmBaryon1:OutgoingM 31 333 newdef CharmBaryon1:MaxWeight 31 0.00536368 newdef CharmBaryon1:I1 32 -0.408248 newdef CharmBaryon1:I2 32 -0.408248 newdef CharmBaryon1:I3 32 -0.816497 newdef CharmBaryon1:I4 32 0.816497 newdef CharmBaryon1:I5 32 0 newdef CharmBaryon1:Ihat3 32 0 newdef CharmBaryon1:Ihat4 32 0 newdef CharmBaryon1:Incoming 32 4132 newdef CharmBaryon1:OutgoingB 32 3312 newdef CharmBaryon1:OutgoingM 32 213 newdef CharmBaryon1:MaxWeight 32 0.27 newdef CharmBaryon1:I1 33 1 newdef CharmBaryon1:I2 33 -1 newdef CharmBaryon1:I3 33 0 newdef CharmBaryon1:I4 33 0 newdef CharmBaryon1:I5 33 0 newdef CharmBaryon1:Ihat3 33 2 newdef CharmBaryon1:Ihat4 33 0 newdef CharmBaryon1:Incoming 33 4332 newdef CharmBaryon1:OutgoingB 33 3322 newdef CharmBaryon1:OutgoingM 33 -313 newdef CharmBaryon1:MaxWeight 33 0.0159979 newdef CharmBaryon1:I1 34 0 newdef CharmBaryon1:I2 34 0.333333 newdef CharmBaryon1:I3 34 0 newdef CharmBaryon1:I4 34 0 newdef CharmBaryon1:I5 34 0 newdef CharmBaryon1:Ihat3 34 0 newdef CharmBaryon1:Ihat4 34 0 newdef CharmBaryon1:Incoming 34 4122 newdef CharmBaryon1:OutgoingB 34 3214 newdef CharmBaryon1:OutgoingM 34 211 newdef CharmBaryon1:MaxWeight 34 0.0203127 newdef CharmBaryon1:I1 35 0 newdef CharmBaryon1:I2 35 0.333333 newdef CharmBaryon1:I3 35 0 newdef CharmBaryon1:I4 35 0 newdef CharmBaryon1:I5 35 0 newdef CharmBaryon1:Ihat3 35 0 newdef CharmBaryon1:Ihat4 35 0 newdef CharmBaryon1:Incoming 35 4122 newdef CharmBaryon1:OutgoingB 35 3224 newdef CharmBaryon1:OutgoingM 35 111 newdef CharmBaryon1:MaxWeight 35 0.0206847 newdef CharmBaryon1:I1 36 0 newdef CharmBaryon1:I2 36 0.569036 newdef CharmBaryon1:I3 36 0 newdef CharmBaryon1:I4 36 0 newdef CharmBaryon1:I5 36 0 newdef CharmBaryon1:Ihat3 36 0 newdef CharmBaryon1:Ihat4 36 0 newdef CharmBaryon1:Incoming 36 4122 newdef CharmBaryon1:OutgoingB 36 3224 newdef CharmBaryon1:OutgoingM 36 221 newdef CharmBaryon1:MaxWeight 36 0.0243183 newdef CharmBaryon1:I1 37 0 newdef CharmBaryon1:I2 37 -0.097631 newdef CharmBaryon1:I3 37 0 newdef CharmBaryon1:I4 37 0 newdef CharmBaryon1:I5 37 0 newdef CharmBaryon1:Ihat3 37 0 newdef CharmBaryon1:Ihat4 37 0 newdef CharmBaryon1:Incoming 37 4122 newdef CharmBaryon1:OutgoingB 37 3224 newdef CharmBaryon1:OutgoingM 37 331 newdef CharmBaryon1:MaxWeight 37 3.90584e-07 newdef CharmBaryon1:I1 38 0 newdef CharmBaryon1:I2 38 -0.471405 newdef CharmBaryon1:I3 38 0 newdef CharmBaryon1:I4 38 0 newdef CharmBaryon1:I5 38 0 newdef CharmBaryon1:Ihat3 38 0 newdef CharmBaryon1:Ihat4 38 0 newdef CharmBaryon1:Incoming 38 4122 newdef CharmBaryon1:OutgoingB 38 2214 newdef CharmBaryon1:OutgoingM 38 -311 newdef CharmBaryon1:MaxWeight 38 0.0172628 newdef CharmBaryon1:I1 39 0 newdef CharmBaryon1:I2 39 -0.816497 newdef CharmBaryon1:I3 39 0 newdef CharmBaryon1:I4 39 0 newdef CharmBaryon1:I5 39 0 newdef CharmBaryon1:Ihat3 39 0 newdef CharmBaryon1:Ihat4 39 0 newdef CharmBaryon1:Incoming 39 4122 newdef CharmBaryon1:OutgoingB 39 2224 newdef CharmBaryon1:OutgoingM 39 -321 newdef CharmBaryon1:MaxWeight 39 0.0519786 newdef CharmBaryon1:I1 40 0 newdef CharmBaryon1:I2 40 0.471405 newdef CharmBaryon1:I3 40 0 newdef CharmBaryon1:I4 40 0 newdef CharmBaryon1:I5 40 0 newdef CharmBaryon1:Ihat3 40 0 newdef CharmBaryon1:Ihat4 40 0 newdef CharmBaryon1:Incoming 40 4122 newdef CharmBaryon1:OutgoingB 40 3324 newdef CharmBaryon1:OutgoingM 40 321 newdef CharmBaryon1:MaxWeight 40 0.0160487 newdef CharmBaryon1:I1 41 0 newdef CharmBaryon1:I2 41 -0.333333 newdef CharmBaryon1:I3 41 0 newdef CharmBaryon1:I4 41 0 newdef CharmBaryon1:I5 41 0 newdef CharmBaryon1:Ihat3 41 0 newdef CharmBaryon1:Ihat4 41 0 newdef CharmBaryon1:Incoming 41 4132 newdef CharmBaryon1:OutgoingB 41 3214 newdef CharmBaryon1:OutgoingM 41 -311 newdef CharmBaryon1:MaxWeight 41 0.00944063 newdef CharmBaryon1:I1 42 0 newdef CharmBaryon1:I2 42 -0.471405 newdef CharmBaryon1:I3 42 0 newdef CharmBaryon1:I4 42 0 newdef CharmBaryon1:I5 42 0 newdef CharmBaryon1:Ihat3 42 0 newdef CharmBaryon1:Ihat4 42 0 newdef CharmBaryon1:Incoming 42 4132 newdef CharmBaryon1:OutgoingB 42 3224 newdef CharmBaryon1:OutgoingM 42 -321 newdef CharmBaryon1:MaxWeight 42 0.0193036 newdef CharmBaryon1:I1 43 0 newdef CharmBaryon1:I2 43 -0.333333 newdef CharmBaryon1:I3 43 0 newdef CharmBaryon1:I4 43 0 newdef CharmBaryon1:I5 43 0 newdef CharmBaryon1:Ihat3 43 0 newdef CharmBaryon1:Ihat4 43 0 newdef CharmBaryon1:Incoming 43 4132 newdef CharmBaryon1:OutgoingB 43 3324 newdef CharmBaryon1:OutgoingM 43 111 newdef CharmBaryon1:MaxWeight 43 0.0138565 newdef CharmBaryon1:I1 44 0 newdef CharmBaryon1:I2 44 0.097631 newdef CharmBaryon1:I3 44 0 newdef CharmBaryon1:I4 44 0 newdef CharmBaryon1:I5 44 0 newdef CharmBaryon1:Ihat3 44 0 newdef CharmBaryon1:Ihat4 44 0 newdef CharmBaryon1:Incoming 44 4132 newdef CharmBaryon1:OutgoingB 44 3324 newdef CharmBaryon1:OutgoingM 44 221 newdef CharmBaryon1:MaxWeight 44 0.000755889 newdef CharmBaryon1:I1 45 0 newdef CharmBaryon1:I2 45 -0.569036 newdef CharmBaryon1:I3 45 0 newdef CharmBaryon1:I4 45 0 newdef CharmBaryon1:I5 45 0 newdef CharmBaryon1:Ihat3 45 0 newdef CharmBaryon1:Ihat4 45 0 newdef CharmBaryon1:Incoming 45 4132 newdef CharmBaryon1:OutgoingB 45 3324 newdef CharmBaryon1:OutgoingM 45 331 newdef CharmBaryon1:MaxWeight 45 9.59072e-06 newdef CharmBaryon1:I1 46 0 newdef CharmBaryon1:I2 46 0.471405 newdef CharmBaryon1:I3 46 0 newdef CharmBaryon1:I4 46 0 newdef CharmBaryon1:I5 46 0 newdef CharmBaryon1:Ihat3 46 0 newdef CharmBaryon1:Ihat4 46 0 newdef CharmBaryon1:Incoming 46 4132 newdef CharmBaryon1:OutgoingB 46 3314 newdef CharmBaryon1:OutgoingM 46 211 newdef CharmBaryon1:MaxWeight 46 0.0273069 newdef CharmBaryon1:I1 47 0 newdef CharmBaryon1:I2 47 0.471405 newdef CharmBaryon1:I3 47 0 newdef CharmBaryon1:I4 47 0 newdef CharmBaryon1:I5 47 0 newdef CharmBaryon1:Ihat3 47 0 newdef CharmBaryon1:Ihat4 47 0 newdef CharmBaryon1:Incoming 47 4132 newdef CharmBaryon1:OutgoingB 47 3334 newdef CharmBaryon1:OutgoingM 47 321 newdef CharmBaryon1:MaxWeight 47 0.00570461 newdef CharmBaryon1:I1 48 -0.57735 newdef CharmBaryon1:I2 48 0 newdef CharmBaryon1:I3 48 0 newdef CharmBaryon1:I4 48 0 newdef CharmBaryon1:I5 48 0 newdef CharmBaryon1:Ihat3 48 0 newdef CharmBaryon1:Ihat4 48 0 newdef CharmBaryon1:Incoming 48 4332 newdef CharmBaryon1:OutgoingB 48 3324 newdef CharmBaryon1:OutgoingM 48 -311 newdef CharmBaryon1:MaxWeight 48 0.00685019 newdef CharmBaryon1:I1 49 -0.57735 newdef CharmBaryon1:I2 49 0 newdef CharmBaryon1:I3 49 0 newdef CharmBaryon1:I4 49 0 newdef CharmBaryon1:I5 49 0 newdef CharmBaryon1:Ihat3 49 0 newdef CharmBaryon1:Ihat4 49 0 newdef CharmBaryon1:Incoming 49 4332 newdef CharmBaryon1:OutgoingB 49 3334 newdef CharmBaryon1:OutgoingM 49 211 newdef CharmBaryon1:MaxWeight 49 0.0101584 newdef CharmBaryon1:I1 50 0 newdef CharmBaryon1:I2 50 0.333333 newdef CharmBaryon1:I3 50 0 newdef CharmBaryon1:I4 50 0 newdef CharmBaryon1:I5 50 0 newdef CharmBaryon1:Ihat3 50 0 newdef CharmBaryon1:Ihat4 50 0 newdef CharmBaryon1:Incoming 50 4122 newdef CharmBaryon1:OutgoingB 50 3214 newdef CharmBaryon1:OutgoingM 50 213 newdef CharmBaryon1:MaxWeight 50 0.0380711 newdef CharmBaryon1:I1 51 0 newdef CharmBaryon1:I2 51 0.333333 newdef CharmBaryon1:I3 51 0 newdef CharmBaryon1:I4 51 0 newdef CharmBaryon1:I5 51 0 newdef CharmBaryon1:Ihat3 51 0 newdef CharmBaryon1:Ihat4 51 0 newdef CharmBaryon1:Incoming 51 4122 newdef CharmBaryon1:OutgoingB 51 3224 newdef CharmBaryon1:OutgoingM 51 113 newdef CharmBaryon1:MaxWeight 51 0.0380348 newdef CharmBaryon1:I1 52 0 newdef CharmBaryon1:I2 52 0.333333 newdef CharmBaryon1:I3 52 0 newdef CharmBaryon1:I4 52 0 newdef CharmBaryon1:I5 52 0 newdef CharmBaryon1:Ihat3 52 0 newdef CharmBaryon1:Ihat4 52 0 newdef CharmBaryon1:Incoming 52 4122 newdef CharmBaryon1:OutgoingB 52 3224 newdef CharmBaryon1:OutgoingM 52 223 newdef CharmBaryon1:MaxWeight 52 0.0213052 newdef CharmBaryon1:I1 53 0 newdef CharmBaryon1:I2 53 -0.471405 newdef CharmBaryon1:I3 53 0 newdef CharmBaryon1:I4 53 0 newdef CharmBaryon1:I5 53 0 newdef CharmBaryon1:Ihat3 53 0 newdef CharmBaryon1:Ihat4 53 0 newdef CharmBaryon1:Incoming 53 4122 newdef CharmBaryon1:OutgoingB 53 3224 newdef CharmBaryon1:OutgoingM 53 333 newdef CharmBaryon1:MaxWeight 53 3.89911e-07 newdef CharmBaryon1:I1 54 0 newdef CharmBaryon1:I2 54 -0.471405 newdef CharmBaryon1:I3 54 0 newdef CharmBaryon1:I4 54 0 newdef CharmBaryon1:I5 54 0 newdef CharmBaryon1:Ihat3 54 0 newdef CharmBaryon1:Ihat4 54 0 newdef CharmBaryon1:Incoming 54 4122 newdef CharmBaryon1:OutgoingB 54 2214 newdef CharmBaryon1:OutgoingM 54 -313 newdef CharmBaryon1:MaxWeight 54 0.0797601 newdef CharmBaryon1:I1 55 0 newdef CharmBaryon1:I2 55 -0.816497 newdef CharmBaryon1:I3 55 0 newdef CharmBaryon1:I4 55 0 newdef CharmBaryon1:I5 55 0 newdef CharmBaryon1:Ihat3 55 0 newdef CharmBaryon1:Ihat4 55 0 newdef CharmBaryon1:Incoming 55 4122 newdef CharmBaryon1:OutgoingB 55 2224 newdef CharmBaryon1:OutgoingM 55 -323 newdef CharmBaryon1:MaxWeight 55 0.244574 newdef CharmBaryon1:I1 56 0 newdef CharmBaryon1:I2 56 0.471405 newdef CharmBaryon1:I3 56 0 newdef CharmBaryon1:I4 56 0 newdef CharmBaryon1:I5 56 0 newdef CharmBaryon1:Ihat3 56 0 newdef CharmBaryon1:Ihat4 56 0 newdef CharmBaryon1:Incoming 56 4122 newdef CharmBaryon1:OutgoingB 56 3324 newdef CharmBaryon1:OutgoingM 56 323 newdef CharmBaryon1:MaxWeight 56 8.19361e-05 newdef CharmBaryon1:I1 57 0 newdef CharmBaryon1:I2 57 -0.333333 newdef CharmBaryon1:I3 57 0 newdef CharmBaryon1:I4 57 0 newdef CharmBaryon1:I5 57 0 newdef CharmBaryon1:Ihat3 57 0 newdef CharmBaryon1:Ihat4 57 0 newdef CharmBaryon1:Incoming 57 4132 newdef CharmBaryon1:OutgoingB 57 3214 newdef CharmBaryon1:OutgoingM 57 -313 newdef CharmBaryon1:MaxWeight 57 0.0224257 newdef CharmBaryon1:I1 58 0 newdef CharmBaryon1:I2 58 -0.471405 newdef CharmBaryon1:I3 58 0 newdef CharmBaryon1:I4 58 0 newdef CharmBaryon1:I5 58 0 newdef CharmBaryon1:Ihat3 58 0 newdef CharmBaryon1:Ihat4 58 0 newdef CharmBaryon1:Incoming 58 4132 newdef CharmBaryon1:OutgoingB 58 3224 newdef CharmBaryon1:OutgoingM 58 -323 newdef CharmBaryon1:MaxWeight 58 0.0459226 newdef CharmBaryon1:I1 59 0 newdef CharmBaryon1:I2 59 -0.333333 newdef CharmBaryon1:I3 59 0 newdef CharmBaryon1:I4 59 0 newdef CharmBaryon1:I5 59 0 newdef CharmBaryon1:Ihat3 59 0 newdef CharmBaryon1:Ihat4 59 0 newdef CharmBaryon1:Incoming 59 4132 newdef CharmBaryon1:OutgoingB 59 3324 newdef CharmBaryon1:OutgoingM 59 113 newdef CharmBaryon1:MaxWeight 59 0.0405582 newdef CharmBaryon1:I1 60 0 newdef CharmBaryon1:I2 60 -0.333333 newdef CharmBaryon1:I3 60 0 newdef CharmBaryon1:I4 60 0 newdef CharmBaryon1:I5 60 0 newdef CharmBaryon1:Ihat3 60 0 newdef CharmBaryon1:Ihat4 60 0 newdef CharmBaryon1:Incoming 60 4132 newdef CharmBaryon1:OutgoingB 60 3324 newdef CharmBaryon1:OutgoingM 60 223 newdef CharmBaryon1:MaxWeight 60 0.0176579 newdef CharmBaryon1:I1 61 0 newdef CharmBaryon1:I2 61 -0.471405 newdef CharmBaryon1:I3 61 0 newdef CharmBaryon1:I4 61 0 newdef CharmBaryon1:I5 61 0 newdef CharmBaryon1:Ihat3 61 0 newdef CharmBaryon1:Ihat4 61 0 newdef CharmBaryon1:Incoming 61 4132 newdef CharmBaryon1:OutgoingB 61 3324 newdef CharmBaryon1:OutgoingM 61 333 newdef CharmBaryon1:MaxWeight 61 2.00738e-09 newdef CharmBaryon1:I1 62 0 newdef CharmBaryon1:I2 62 0.471405 newdef CharmBaryon1:I3 62 0 newdef CharmBaryon1:I4 62 0 newdef CharmBaryon1:I5 62 0 newdef CharmBaryon1:Ihat3 62 0 newdef CharmBaryon1:Ihat4 62 0 newdef CharmBaryon1:Incoming 62 4132 newdef CharmBaryon1:OutgoingB 62 3314 newdef CharmBaryon1:OutgoingM 62 213 newdef CharmBaryon1:MaxWeight 62 0.0742392 newdef CharmBaryon1:I1 63 0 newdef CharmBaryon1:I2 63 0.471405 newdef CharmBaryon1:I3 63 0 newdef CharmBaryon1:I4 63 0 newdef CharmBaryon1:I5 63 0 newdef CharmBaryon1:Ihat3 63 0 newdef CharmBaryon1:Ihat4 63 0 newdef CharmBaryon1:Incoming 63 4132 newdef CharmBaryon1:OutgoingB 63 3334 newdef CharmBaryon1:OutgoingM 63 323 newdef CharmBaryon1:MaxWeight 63 0.000160371 newdef CharmBaryon1:I1 64 -0.57735 newdef CharmBaryon1:I2 64 0 newdef CharmBaryon1:I3 64 0 newdef CharmBaryon1:I4 64 0 newdef CharmBaryon1:I5 64 0 newdef CharmBaryon1:Ihat3 64 0 newdef CharmBaryon1:Ihat4 64 0 newdef CharmBaryon1:Incoming 64 4332 newdef CharmBaryon1:OutgoingB 64 3324 newdef CharmBaryon1:OutgoingM 64 -313 newdef CharmBaryon1:MaxWeight 64 0.041161 newdef CharmBaryon1:I1 65 -0.57735 newdef CharmBaryon1:I2 65 0 newdef CharmBaryon1:I3 65 0 newdef CharmBaryon1:I4 65 0 newdef CharmBaryon1:I5 65 0 newdef CharmBaryon1:Ihat3 65 0 newdef CharmBaryon1:Ihat4 65 0 newdef CharmBaryon1:Incoming 65 4332 newdef CharmBaryon1:OutgoingB 65 3334 newdef CharmBaryon1:OutgoingM 65 213 newdef CharmBaryon1:MaxWeight 65 0.0643286 # create Herwig::SemiLeptonicBaryonDecayer BaryonHeavy3 newdef BaryonHeavy3:Iteration 1 newdef BaryonHeavy3:Ntry 500 newdef BaryonHeavy3:Points 10000 insert BaryonHeavy3:MaximumWeight 0 0.155059 insert BaryonHeavy3:MaximumWeight 1 0.154479 insert BaryonHeavy3:MaximumWeight 2 0.0478423 insert BaryonHeavy3:MaximumWeight 3 0.183107 insert BaryonHeavy3:MaximumWeight 4 0.18242 insert BaryonHeavy3:MaximumWeight 5 0.0558729 insert BaryonHeavy3:MaximumWeight 6 0.183291 insert BaryonHeavy3:MaximumWeight 7 0.182598 insert BaryonHeavy3:MaximumWeight 8 0.0559255 insert BaryonHeavy3:MaximumWeight 9 0.116825 insert BaryonHeavy3:MaximumWeight 10 0.110605 insert BaryonHeavy3:MaximumWeight 11 0.0267389 insert BaryonHeavy3:MaximumWeight 12 0.132773 insert BaryonHeavy3:MaximumWeight 13 0.132352 insert BaryonHeavy3:MaximumWeight 14 0.0365608 insert BaryonHeavy3:MaximumWeight 15 0.0227486 insert BaryonHeavy3:MaximumWeight 16 0.0222433 insert BaryonHeavy3:MaximumWeight 17 0.0338862 insert BaryonHeavy3:MaximumWeight 18 0.0334095 insert BaryonHeavy3:MaximumWeight 19 0.1 insert BaryonHeavy3:MaximumWeight 20 0.097 insert BaryonHeavy3:MaximumWeight 21 0.025 insert BaryonHeavy3:MaximumWeight 22 0.025 create Herwig::LeptonNeutrinoCurrent BaryonHeavy3Current HwWeakCurrents.so newdef BaryonHeavy3Current:Quark 0 11 newdef BaryonHeavy3Current:AntiQuark 0 -12 newdef BaryonHeavy3Current:Quark 1 13 newdef BaryonHeavy3Current:AntiQuark 1 -15 newdef BaryonHeavy3Current:Quark 2 15 newdef BaryonHeavy3Current:AntiQuark 2 -16 newdef BaryonHeavy3:Current BaryonHeavy3Current create Herwig::ChengHeavyBaryonFormFactor BaryonHeavy3Form newdef BaryonHeavy3Form:DownMass 0.322 newdef BaryonHeavy3Form:UpMass 0.338 newdef BaryonHeavy3Form:StrangeMass 0.51 newdef BaryonHeavy3Form:CharmMass 1.6 newdef BaryonHeavy3Form:BottomMass 5 newdef BaryonHeavy3Form:VectorMassbc 6.34 newdef BaryonHeavy3Form:AxialMassbc 6.73 newdef BaryonHeavy3Form:VectorMassbs 5.42 newdef BaryonHeavy3Form:AxialMassbs 5.86 newdef BaryonHeavy3Form:VectorMassbd 5.32 newdef BaryonHeavy3Form:AxialMassbd 5.71 newdef BaryonHeavy3Form:VectorMasscs 2.11 newdef BaryonHeavy3Form:AxialMasscs 2.54 newdef BaryonHeavy3Form:VectorMasscu 2.01 newdef BaryonHeavy3Form:AxialMasscu 2.42 newdef BaryonHeavy3Form:Nfi 0 1 newdef BaryonHeavy3Form:Eta 0 1 newdef BaryonHeavy3Form:Nfi 1 0.57735 newdef BaryonHeavy3Form:Eta 1 1 newdef BaryonHeavy3Form:Nfi 2 0.707107 newdef BaryonHeavy3Form:Eta 2 1 newdef BaryonHeavy3Form:Nfi 3 1 newdef BaryonHeavy3Form:Eta 3 1 newdef BaryonHeavy3Form:Nfi 4 1 newdef BaryonHeavy3Form:Eta 4 1 newdef BaryonHeavy3Form:Nfi 5 0.707107 newdef BaryonHeavy3Form:Eta 5 1 newdef BaryonHeavy3Form:Nfi 6 0.707107 newdef BaryonHeavy3Form:Eta 6 1 newdef BaryonHeavy3Form:Nfi 7 0.5 newdef BaryonHeavy3Form:Eta 7 1 newdef BaryonHeavy3Form:Nfi 8 0.5 newdef BaryonHeavy3Form:Eta 8 1 newdef BaryonHeavy3Form:Nfi 9 0.288675 newdef BaryonHeavy3Form:Eta 9 1 newdef BaryonHeavy3Form:Nfi 10 1 newdef BaryonHeavy3Form:Eta 10 -0.333333 newdef BaryonHeavy3Form:Nfi 11 0.57735 newdef BaryonHeavy3Form:Eta 11 -0.333333 newdef BaryonHeavy3Form:Nfi 12 1 newdef BaryonHeavy3Form:Eta 12 0 newdef BaryonHeavy3Form:Nfi 13 1 newdef BaryonHeavy3Form:Eta 13 0 newdef BaryonHeavy3Form:Nfi 14 0.57735 newdef BaryonHeavy3Form:Eta 14 0 newdef BaryonHeavy3Form:Nfi 15 1 newdef BaryonHeavy3Form:Eta 15 0 newdef BaryonHeavy3Form:Nfi 16 0.57735 newdef BaryonHeavy3Form:Eta 16 0 newdef BaryonHeavy3Form:Nfi 17 0.57735 newdef BaryonHeavy3Form:Eta 17 1 newdef BaryonHeavy3Form:Nfi 18 0.57735 newdef BaryonHeavy3Form:Eta 18 1 newdef BaryonHeavy3Form:Nfi 19 0.57735 newdef BaryonHeavy3Form:Eta 19 1 newdef BaryonHeavy3Form:Incoming 0 5122 newdef BaryonHeavy3Form:Outgoing 0 4122 newdef BaryonHeavy3Form:InSpin 0 2 newdef BaryonHeavy3Form:OutSpin 0 2 newdef BaryonHeavy3Form:Spectator1 0 1 newdef BaryonHeavy3Form:Spectator2 0 2 newdef BaryonHeavy3Form:InQuark 0 5 newdef BaryonHeavy3Form:OutQuark 0 4 newdef BaryonHeavy3Form:Incoming 1 5122 newdef BaryonHeavy3Form:Outgoing 1 3122 newdef BaryonHeavy3Form:InSpin 1 2 newdef BaryonHeavy3Form:OutSpin 1 2 newdef BaryonHeavy3Form:Spectator1 1 1 newdef BaryonHeavy3Form:Spectator2 1 2 newdef BaryonHeavy3Form:InQuark 1 5 newdef BaryonHeavy3Form:OutQuark 1 3 newdef BaryonHeavy3Form:Incoming 2 5122 newdef BaryonHeavy3Form:Outgoing 2 2112 newdef BaryonHeavy3Form:InSpin 2 2 newdef BaryonHeavy3Form:OutSpin 2 2 newdef BaryonHeavy3Form:Spectator1 2 1 newdef BaryonHeavy3Form:Spectator2 2 2 newdef BaryonHeavy3Form:InQuark 2 5 newdef BaryonHeavy3Form:OutQuark 2 1 newdef BaryonHeavy3Form:Incoming 3 5232 newdef BaryonHeavy3Form:Outgoing 3 4232 newdef BaryonHeavy3Form:InSpin 3 2 newdef BaryonHeavy3Form:OutSpin 3 2 newdef BaryonHeavy3Form:Spectator1 3 2 newdef BaryonHeavy3Form:Spectator2 3 3 newdef BaryonHeavy3Form:InQuark 3 5 newdef BaryonHeavy3Form:OutQuark 3 4 newdef BaryonHeavy3Form:Incoming 4 5132 newdef BaryonHeavy3Form:Outgoing 4 4132 newdef BaryonHeavy3Form:InSpin 4 2 newdef BaryonHeavy3Form:OutSpin 4 2 newdef BaryonHeavy3Form:Spectator1 4 1 newdef BaryonHeavy3Form:Spectator2 4 3 newdef BaryonHeavy3Form:InQuark 4 5 newdef BaryonHeavy3Form:OutQuark 4 4 newdef BaryonHeavy3Form:Incoming 5 5232 newdef BaryonHeavy3Form:Outgoing 5 3322 newdef BaryonHeavy3Form:InSpin 5 2 newdef BaryonHeavy3Form:OutSpin 5 2 newdef BaryonHeavy3Form:Spectator1 5 2 newdef BaryonHeavy3Form:Spectator2 5 3 newdef BaryonHeavy3Form:InQuark 5 5 newdef BaryonHeavy3Form:OutQuark 5 3 newdef BaryonHeavy3Form:Incoming 6 5132 newdef BaryonHeavy3Form:Outgoing 6 3312 newdef BaryonHeavy3Form:InSpin 6 2 newdef BaryonHeavy3Form:OutSpin 6 2 newdef BaryonHeavy3Form:Spectator1 6 1 newdef BaryonHeavy3Form:Spectator2 6 3 newdef BaryonHeavy3Form:InQuark 6 5 newdef BaryonHeavy3Form:OutQuark 6 3 newdef BaryonHeavy3Form:Incoming 7 5232 newdef BaryonHeavy3Form:Outgoing 7 3212 newdef BaryonHeavy3Form:InSpin 7 2 newdef BaryonHeavy3Form:OutSpin 7 2 newdef BaryonHeavy3Form:Spectator1 7 2 newdef BaryonHeavy3Form:Spectator2 7 3 newdef BaryonHeavy3Form:InQuark 7 5 newdef BaryonHeavy3Form:OutQuark 7 1 newdef BaryonHeavy3Form:Incoming 8 5132 newdef BaryonHeavy3Form:Outgoing 8 3112 newdef BaryonHeavy3Form:InSpin 8 2 newdef BaryonHeavy3Form:OutSpin 8 2 newdef BaryonHeavy3Form:Spectator1 8 1 newdef BaryonHeavy3Form:Spectator2 8 3 newdef BaryonHeavy3Form:InQuark 8 5 newdef BaryonHeavy3Form:OutQuark 8 1 newdef BaryonHeavy3Form:Incoming 9 5232 newdef BaryonHeavy3Form:Outgoing 9 3122 newdef BaryonHeavy3Form:InSpin 9 2 newdef BaryonHeavy3Form:OutSpin 9 2 newdef BaryonHeavy3Form:Spectator1 9 2 newdef BaryonHeavy3Form:Spectator2 9 3 newdef BaryonHeavy3Form:InQuark 9 5 newdef BaryonHeavy3Form:OutQuark 9 1 newdef BaryonHeavy3Form:Incoming 10 5332 newdef BaryonHeavy3Form:Outgoing 10 4332 newdef BaryonHeavy3Form:InSpin 10 2 newdef BaryonHeavy3Form:OutSpin 10 2 newdef BaryonHeavy3Form:Spectator1 10 3 newdef BaryonHeavy3Form:Spectator2 10 3 newdef BaryonHeavy3Form:InQuark 10 5 newdef BaryonHeavy3Form:OutQuark 10 4 newdef BaryonHeavy3Form:Incoming 11 5332 newdef BaryonHeavy3Form:Outgoing 11 3312 newdef BaryonHeavy3Form:InSpin 11 2 newdef BaryonHeavy3Form:OutSpin 11 2 newdef BaryonHeavy3Form:Spectator1 11 3 newdef BaryonHeavy3Form:Spectator2 11 3 newdef BaryonHeavy3Form:InQuark 11 5 newdef BaryonHeavy3Form:OutQuark 11 1 newdef BaryonHeavy3Form:Incoming 12 5332 newdef BaryonHeavy3Form:Outgoing 12 4334 newdef BaryonHeavy3Form:InSpin 12 2 newdef BaryonHeavy3Form:OutSpin 12 4 newdef BaryonHeavy3Form:Spectator1 12 3 newdef BaryonHeavy3Form:Spectator2 12 3 newdef BaryonHeavy3Form:InQuark 12 5 newdef BaryonHeavy3Form:OutQuark 12 4 newdef BaryonHeavy3Form:Incoming 13 5332 newdef BaryonHeavy3Form:Outgoing 13 3334 newdef BaryonHeavy3Form:InSpin 13 2 newdef BaryonHeavy3Form:OutSpin 13 4 newdef BaryonHeavy3Form:Spectator1 13 3 newdef BaryonHeavy3Form:Spectator2 13 3 newdef BaryonHeavy3Form:InQuark 13 5 newdef BaryonHeavy3Form:OutQuark 13 3 newdef BaryonHeavy3Form:Incoming 14 5332 newdef BaryonHeavy3Form:Outgoing 14 3314 newdef BaryonHeavy3Form:InSpin 14 2 newdef BaryonHeavy3Form:OutSpin 14 4 newdef BaryonHeavy3Form:Spectator1 14 3 newdef BaryonHeavy3Form:Spectator2 14 3 newdef BaryonHeavy3Form:InQuark 14 5 newdef BaryonHeavy3Form:OutQuark 14 1 newdef BaryonHeavy3Form:Incoming 15 4332 newdef BaryonHeavy3Form:Outgoing 15 3334 newdef BaryonHeavy3Form:InSpin 15 2 newdef BaryonHeavy3Form:OutSpin 15 4 newdef BaryonHeavy3Form:Spectator1 15 3 newdef BaryonHeavy3Form:Spectator2 15 3 newdef BaryonHeavy3Form:InQuark 15 4 newdef BaryonHeavy3Form:OutQuark 15 3 newdef BaryonHeavy3Form:Incoming 16 4332 newdef BaryonHeavy3Form:Outgoing 16 3324 newdef BaryonHeavy3Form:InSpin 16 2 newdef BaryonHeavy3Form:OutSpin 16 4 newdef BaryonHeavy3Form:Spectator1 16 3 newdef BaryonHeavy3Form:Spectator2 16 3 newdef BaryonHeavy3Form:InQuark 16 4 newdef BaryonHeavy3Form:OutQuark 16 2 newdef BaryonHeavy3Form:Incoming 17 4122 newdef BaryonHeavy3Form:Outgoing 17 3122 newdef BaryonHeavy3Form:InSpin 17 2 newdef BaryonHeavy3Form:OutSpin 17 2 newdef BaryonHeavy3Form:Spectator1 17 1 newdef BaryonHeavy3Form:Spectator2 17 2 newdef BaryonHeavy3Form:InQuark 17 4 newdef BaryonHeavy3Form:OutQuark 17 3 newdef BaryonHeavy3Form:Incoming 18 4232 newdef BaryonHeavy3Form:Outgoing 18 3322 newdef BaryonHeavy3Form:InSpin 18 2 newdef BaryonHeavy3Form:OutSpin 18 2 newdef BaryonHeavy3Form:Spectator1 18 2 newdef BaryonHeavy3Form:Spectator2 18 3 newdef BaryonHeavy3Form:InQuark 18 4 newdef BaryonHeavy3Form:OutQuark 18 3 newdef BaryonHeavy3Form:Incoming 19 4132 newdef BaryonHeavy3Form:Outgoing 19 3312 newdef BaryonHeavy3Form:InSpin 19 2 newdef BaryonHeavy3Form:OutSpin 19 2 newdef BaryonHeavy3Form:Spectator1 19 1 newdef BaryonHeavy3Form:Spectator2 19 3 newdef BaryonHeavy3Form:InQuark 19 4 newdef BaryonHeavy3Form:OutQuark 19 3 newdef BaryonHeavy3:FormFactor BaryonHeavy3Form # create Herwig::SemiLeptonicScalarDecayer WSB newdef WSB:Iteration 1 newdef WSB:Ntry 500 newdef WSB:Points 10000 newdef WSB:GenerateIntermediates 1 insert WSB:MaximumWeight 0 0.21439 insert WSB:MaximumWeight 1 0.0902162 insert WSB:MaximumWeight 2 2.29241e-14 insert WSB:MaximumWeight 3 9.67869e-15 insert WSB:MaximumWeight 4 0.126126 insert WSB:MaximumWeight 5 0.10663 insert WSB:MaximumWeight 6 0.320113 insert WSB:MaximumWeight 7 0.272174 insert WSB:MaximumWeight 8 0.0107195 insert WSB:MaximumWeight 9 0.00938398 insert WSB:MaximumWeight 10 0.013847 insert WSB:MaximumWeight 11 0.0121369 insert WSB:MaximumWeight 12 0.00305138 insert WSB:MaximumWeight 13 0.00258198 insert WSB:MaximumWeight 14 0.000647596 insert WSB:MaximumWeight 15 0.000490013 insert WSB:MaximumWeight 16 0.0787667 insert WSB:MaximumWeight 17 0.0764814 insert WSB:MaximumWeight 18 0.19791 insert WSB:MaximumWeight 19 0.193905 insert WSB:MaximumWeight 20 0.00689828 insert WSB:MaximumWeight 21 0.00673749 insert WSB:MaximumWeight 22 0.00898338 insert WSB:MaximumWeight 23 0.0087807 insert WSB:MaximumWeight 24 0.0152457 insert WSB:MaximumWeight 25 0.0144707 insert WSB:MaximumWeight 26 0.0790222 insert WSB:MaximumWeight 27 0.0674034 insert WSB:MaximumWeight 28 0.0235821 insert WSB:MaximumWeight 29 0.0185835 insert WSB:MaximumWeight 30 0.00803963 insert WSB:MaximumWeight 31 0.00695707 insert WSB:MaximumWeight 32 0.00646112 insert WSB:MaximumWeight 33 0.00630702 insert WSB:MaximumWeight 34 0.183436 insert WSB:MaximumWeight 35 0.188816 insert WSB:MaximumWeight 36 0.0893685 insert WSB:MaximumWeight 37 0.0834068 insert WSB:MaximumWeight 38 0.0188587 insert WSB:MaximumWeight 39 0.0814216 insert WSB:MaximumWeight 40 0.0762031 insert WSB:MaximumWeight 41 0.0171754 insert WSB:MaximumWeight 42 0.000282313 insert WSB:MaximumWeight 43 0.00027201 insert WSB:MaximumWeight 44 0.000143382 insert WSB:MaximumWeight 45 0.000516226 insert WSB:MaximumWeight 46 0.000498686 insert WSB:MaximumWeight 47 0.000262857 insert WSB:MaximumWeight 48 0.000100106 insert WSB:MaximumWeight 49 9.60475e-05 insert WSB:MaximumWeight 50 4.7111e-05 insert WSB:MaximumWeight 51 4.8426e-05 insert WSB:MaximumWeight 52 4.66258e-05 insert WSB:MaximumWeight 53 2.04411e-05 insert WSB:MaximumWeight 54 0.115875 insert WSB:MaximumWeight 55 0.114911 insert WSB:MaximumWeight 56 0.0302228 insert WSB:MaximumWeight 57 0.117263 insert WSB:MaximumWeight 58 0.114856 insert WSB:MaximumWeight 59 0.032145 insert WSB:MaximumWeight 60 0.000700866 insert WSB:MaximumWeight 61 0.000690372 insert WSB:MaximumWeight 62 0.000331167 insert WSB:MaximumWeight 63 0.00126096 insert WSB:MaximumWeight 64 0.00130993 insert WSB:MaximumWeight 65 0.000608944 insert WSB:MaximumWeight 66 0.00170589 insert WSB:MaximumWeight 67 0.00165399 insert WSB:MaximumWeight 68 0.000855379 create Herwig::LeptonNeutrinoCurrent WSBCurrent HwWeakCurrents.so newdef WSBCurrent:Quark 0 11 newdef WSBCurrent:AntiQuark 0 -12 newdef WSBCurrent:Quark 1 13 newdef WSBCurrent:AntiQuark 1 -15 newdef WSBCurrent:Quark 2 15 newdef WSBCurrent:AntiQuark 2 -16 newdef WSB:Current WSBCurrent create Herwig::WSBFormFactor WSBFormFactor newdef WSBFormFactor:ThetaEtaEtaPrime -0.194 newdef WSBFormFactor:F0 0 0.992 newdef WSBFormFactor:V 0 0 newdef WSBFormFactor:A0 0 0 newdef WSBFormFactor:A1 0 0 newdef WSBFormFactor:A2 0 0 newdef WSBFormFactor:ScalarMass 0 0.494 newdef WSBFormFactor:PseudoScalarMass 0 1.43 newdef WSBFormFactor:VectorMass 0 0.892 newdef WSBFormFactor:PseudoVectorMass 0 1.273 newdef WSBFormFactor:F0 1 0.992 newdef WSBFormFactor:V 1 0 newdef WSBFormFactor:A0 1 0 newdef WSBFormFactor:A1 1 0 newdef WSBFormFactor:A2 1 0 newdef WSBFormFactor:ScalarMass 1 0.494 newdef WSBFormFactor:PseudoScalarMass 1 1.43 newdef WSBFormFactor:VectorMass 1 0.892 newdef WSBFormFactor:PseudoVectorMass 1 1.273 newdef WSBFormFactor:F0 2 0.992 newdef WSBFormFactor:V 2 0 newdef WSBFormFactor:A0 2 0 newdef WSBFormFactor:A1 2 0 newdef WSBFormFactor:A2 2 0 newdef WSBFormFactor:ScalarMass 2 0.494 newdef WSBFormFactor:PseudoScalarMass 2 1.43 newdef WSBFormFactor:VectorMass 2 0.892 newdef WSBFormFactor:PseudoVectorMass 2 1.273 newdef WSBFormFactor:F0 3 0.992 newdef WSBFormFactor:V 3 0 newdef WSBFormFactor:A0 3 0 newdef WSBFormFactor:A1 3 0 newdef WSBFormFactor:A2 3 0 newdef WSBFormFactor:ScalarMass 3 0.494 newdef WSBFormFactor:PseudoScalarMass 3 1.43 newdef WSBFormFactor:VectorMass 3 0.892 newdef WSBFormFactor:PseudoVectorMass 3 1.273 newdef WSBFormFactor:F0 4 0.762 newdef WSBFormFactor:V 4 0 newdef WSBFormFactor:A0 4 0 newdef WSBFormFactor:A1 4 0 newdef WSBFormFactor:A2 4 0 newdef WSBFormFactor:ScalarMass 4 1.97 newdef WSBFormFactor:PseudoScalarMass 4 2.6 newdef WSBFormFactor:VectorMass 4 2.11 newdef WSBFormFactor:PseudoVectorMass 4 2.53 newdef WSBFormFactor:F0 5 0.762 newdef WSBFormFactor:V 5 0 newdef WSBFormFactor:A0 5 0 newdef WSBFormFactor:A1 5 0 newdef WSBFormFactor:A2 5 0 newdef WSBFormFactor:ScalarMass 5 1.97 newdef WSBFormFactor:PseudoScalarMass 5 2.6 newdef WSBFormFactor:VectorMass 5 2.11 newdef WSBFormFactor:PseudoVectorMass 5 2.53 newdef WSBFormFactor:F0 6 0.692 newdef WSBFormFactor:V 6 0 newdef WSBFormFactor:A0 6 0 newdef WSBFormFactor:A1 6 0 newdef WSBFormFactor:A2 6 0 newdef WSBFormFactor:ScalarMass 6 1.87 newdef WSBFormFactor:PseudoScalarMass 6 2.47 newdef WSBFormFactor:VectorMass 6 2.01 newdef WSBFormFactor:PseudoVectorMass 6 2.42 newdef WSBFormFactor:F0 7 0.692 newdef WSBFormFactor:V 7 0 newdef WSBFormFactor:A0 7 0 newdef WSBFormFactor:A1 7 0 newdef WSBFormFactor:A2 7 0 newdef WSBFormFactor:ScalarMass 7 1.87 newdef WSBFormFactor:PseudoScalarMass 7 2.47 newdef WSBFormFactor:VectorMass 7 2.01 newdef WSBFormFactor:PseudoVectorMass 7 2.42 newdef WSBFormFactor:F0 8 0.692 newdef WSBFormFactor:V 8 0 newdef WSBFormFactor:A0 8 0 newdef WSBFormFactor:A1 8 0 newdef WSBFormFactor:A2 8 0 newdef WSBFormFactor:ScalarMass 8 1.87 newdef WSBFormFactor:PseudoScalarMass 8 2.47 newdef WSBFormFactor:VectorMass 8 2.01 newdef WSBFormFactor:PseudoVectorMass 8 2.42 newdef WSBFormFactor:F0 9 0.692 newdef WSBFormFactor:V 9 0 newdef WSBFormFactor:A0 9 0 newdef WSBFormFactor:A1 9 0 newdef WSBFormFactor:A2 9 0 newdef WSBFormFactor:ScalarMass 9 1.87 newdef WSBFormFactor:PseudoScalarMass 9 2.47 newdef WSBFormFactor:VectorMass 9 2.01 newdef WSBFormFactor:PseudoVectorMass 9 2.42 newdef WSBFormFactor:F0 10 0.681 newdef WSBFormFactor:V 10 0 newdef WSBFormFactor:A0 10 0 newdef WSBFormFactor:A1 10 0 newdef WSBFormFactor:A2 10 0 newdef WSBFormFactor:ScalarMass 10 1.87 newdef WSBFormFactor:PseudoScalarMass 10 2.47 newdef WSBFormFactor:VectorMass 10 2.01 newdef WSBFormFactor:PseudoVectorMass 10 2.42 newdef WSBFormFactor:F0 11 0.681 newdef WSBFormFactor:V 11 0 newdef WSBFormFactor:A0 11 0 newdef WSBFormFactor:A1 11 0 newdef WSBFormFactor:A2 11 0 newdef WSBFormFactor:ScalarMass 11 1.87 newdef WSBFormFactor:PseudoScalarMass 11 2.47 newdef WSBFormFactor:VectorMass 11 2.01 newdef WSBFormFactor:PseudoVectorMass 11 2.42 newdef WSBFormFactor:F0 12 0.655 newdef WSBFormFactor:V 12 0 newdef WSBFormFactor:A0 12 0 newdef WSBFormFactor:A1 12 0 newdef WSBFormFactor:A2 12 0 newdef WSBFormFactor:ScalarMass 12 1.87 newdef WSBFormFactor:PseudoScalarMass 12 2.47 newdef WSBFormFactor:VectorMass 12 2.01 newdef WSBFormFactor:PseudoVectorMass 12 2.42 newdef WSBFormFactor:F0 13 0.655 newdef WSBFormFactor:V 13 0 newdef WSBFormFactor:A0 13 0 newdef WSBFormFactor:A1 13 0 newdef WSBFormFactor:A2 13 0 newdef WSBFormFactor:ScalarMass 13 1.87 newdef WSBFormFactor:PseudoScalarMass 13 2.47 newdef WSBFormFactor:VectorMass 13 2.01 newdef WSBFormFactor:PseudoVectorMass 13 2.42 newdef WSBFormFactor:F0 14 0 newdef WSBFormFactor:V 14 1.226 newdef WSBFormFactor:A0 14 0.733 newdef WSBFormFactor:A1 14 0.88 newdef WSBFormFactor:A2 14 1.147 newdef WSBFormFactor:ScalarMass 14 1.97 newdef WSBFormFactor:PseudoScalarMass 14 2.6 newdef WSBFormFactor:VectorMass 14 2.11 newdef WSBFormFactor:PseudoVectorMass 14 2.53 newdef WSBFormFactor:F0 15 0 newdef WSBFormFactor:V 15 1.226 newdef WSBFormFactor:A0 15 0.733 newdef WSBFormFactor:A1 15 0.88 newdef WSBFormFactor:A2 15 1.147 newdef WSBFormFactor:ScalarMass 15 1.97 newdef WSBFormFactor:PseudoScalarMass 15 2.6 newdef WSBFormFactor:VectorMass 15 2.11 newdef WSBFormFactor:PseudoVectorMass 15 2.53 newdef WSBFormFactor:F0 16 0 newdef WSBFormFactor:V 16 1.225 newdef WSBFormFactor:A0 16 0.669 newdef WSBFormFactor:A1 16 0.775 newdef WSBFormFactor:A2 16 0.923 newdef WSBFormFactor:ScalarMass 16 1.87 newdef WSBFormFactor:PseudoScalarMass 16 2.47 newdef WSBFormFactor:VectorMass 16 2.01 newdef WSBFormFactor:PseudoVectorMass 16 2.42 newdef WSBFormFactor:F0 17 0 newdef WSBFormFactor:V 17 1.225 newdef WSBFormFactor:A0 17 0.669 newdef WSBFormFactor:A1 17 0.775 newdef WSBFormFactor:A2 17 0.923 newdef WSBFormFactor:ScalarMass 17 1.87 newdef WSBFormFactor:PseudoScalarMass 17 2.47 newdef WSBFormFactor:VectorMass 17 2.01 newdef WSBFormFactor:PseudoVectorMass 17 2.42 newdef WSBFormFactor:F0 18 0 newdef WSBFormFactor:V 18 1.225 newdef WSBFormFactor:A0 18 0.669 newdef WSBFormFactor:A1 18 0.775 newdef WSBFormFactor:A2 18 0.923 newdef WSBFormFactor:ScalarMass 18 1.87 newdef WSBFormFactor:PseudoScalarMass 18 2.47 newdef WSBFormFactor:VectorMass 18 2.01 newdef WSBFormFactor:PseudoVectorMass 18 2.42 newdef WSBFormFactor:F0 19 0 newdef WSBFormFactor:V 19 1.225 newdef WSBFormFactor:A0 19 0.669 newdef WSBFormFactor:A1 19 0.775 newdef WSBFormFactor:A2 19 0.923 newdef WSBFormFactor:ScalarMass 19 1.87 newdef WSBFormFactor:PseudoScalarMass 19 2.47 newdef WSBFormFactor:VectorMass 19 2.01 newdef WSBFormFactor:PseudoVectorMass 19 2.42 newdef WSBFormFactor:F0 20 0 newdef WSBFormFactor:V 20 1.236 newdef WSBFormFactor:A0 20 0.669 newdef WSBFormFactor:A1 20 0.772 newdef WSBFormFactor:A2 20 0.92 newdef WSBFormFactor:ScalarMass 20 1.87 newdef WSBFormFactor:PseudoScalarMass 20 2.47 newdef WSBFormFactor:VectorMass 20 2.01 newdef WSBFormFactor:PseudoVectorMass 20 2.42 newdef WSBFormFactor:F0 21 0 newdef WSBFormFactor:V 21 1.236 newdef WSBFormFactor:A0 21 0.669 newdef WSBFormFactor:A1 21 0.772 newdef WSBFormFactor:A2 21 0.92 newdef WSBFormFactor:ScalarMass 21 1.87 newdef WSBFormFactor:PseudoScalarMass 21 2.47 newdef WSBFormFactor:VectorMass 21 2.01 newdef WSBFormFactor:PseudoVectorMass 21 2.42 newdef WSBFormFactor:F0 22 0.723 newdef WSBFormFactor:V 22 0 newdef WSBFormFactor:A0 22 0 newdef WSBFormFactor:A1 22 0 newdef WSBFormFactor:A2 22 0 newdef WSBFormFactor:ScalarMass 22 1.97 newdef WSBFormFactor:PseudoScalarMass 22 2.6 newdef WSBFormFactor:VectorMass 22 2.11 newdef WSBFormFactor:PseudoVectorMass 22 2.53 newdef WSBFormFactor:F0 23 0.704 newdef WSBFormFactor:V 23 0 newdef WSBFormFactor:A0 23 0 newdef WSBFormFactor:A1 23 0 newdef WSBFormFactor:A2 23 0 newdef WSBFormFactor:ScalarMass 23 1.97 newdef WSBFormFactor:PseudoScalarMass 23 2.6 newdef WSBFormFactor:VectorMass 23 2.11 newdef WSBFormFactor:PseudoVectorMass 23 2.53 newdef WSBFormFactor:F0 24 0.643 newdef WSBFormFactor:V 24 0 newdef WSBFormFactor:A0 24 0 newdef WSBFormFactor:A1 24 0 newdef WSBFormFactor:A2 24 0 newdef WSBFormFactor:ScalarMass 24 1.87 newdef WSBFormFactor:PseudoScalarMass 24 2.47 newdef WSBFormFactor:VectorMass 24 2.01 newdef WSBFormFactor:PseudoVectorMass 24 2.42 newdef WSBFormFactor:F0 25 0.643 newdef WSBFormFactor:V 25 0 newdef WSBFormFactor:A0 25 0 newdef WSBFormFactor:A1 25 0 newdef WSBFormFactor:A2 25 0 newdef WSBFormFactor:ScalarMass 25 1.87 newdef WSBFormFactor:PseudoScalarMass 25 2.47 newdef WSBFormFactor:VectorMass 25 2.01 newdef WSBFormFactor:PseudoVectorMass 25 2.42 newdef WSBFormFactor:F0 26 0 newdef WSBFormFactor:V 26 1.25 newdef WSBFormFactor:A0 26 0.634 newdef WSBFormFactor:A1 26 0.717 newdef WSBFormFactor:A2 26 0.853 newdef WSBFormFactor:ScalarMass 26 1.87 newdef WSBFormFactor:PseudoScalarMass 26 2.47 newdef WSBFormFactor:VectorMass 26 2.01 newdef WSBFormFactor:PseudoVectorMass 26 2.42 newdef WSBFormFactor:F0 27 0 newdef WSBFormFactor:V 27 1.25 newdef WSBFormFactor:A0 27 0.634 newdef WSBFormFactor:A1 27 0.717 newdef WSBFormFactor:A2 27 0.853 newdef WSBFormFactor:ScalarMass 27 1.87 newdef WSBFormFactor:PseudoScalarMass 27 2.47 newdef WSBFormFactor:VectorMass 27 2.01 newdef WSBFormFactor:PseudoVectorMass 27 2.42 newdef WSBFormFactor:F0 28 0 newdef WSBFormFactor:V 28 1.319 newdef WSBFormFactor:A0 28 0.7 newdef WSBFormFactor:A1 28 0.82 newdef WSBFormFactor:A2 28 1.076 newdef WSBFormFactor:ScalarMass 28 1.97 newdef WSBFormFactor:PseudoScalarMass 28 2.6 newdef WSBFormFactor:VectorMass 28 2.11 newdef WSBFormFactor:PseudoVectorMass 28 2.53 newdef WSBFormFactor:F0 29 0.69 newdef WSBFormFactor:V 29 0 newdef WSBFormFactor:A0 29 0 newdef WSBFormFactor:A1 29 0 newdef WSBFormFactor:A2 29 0 newdef WSBFormFactor:ScalarMass 29 6.3 newdef WSBFormFactor:PseudoScalarMass 29 6.8 newdef WSBFormFactor:VectorMass 29 6.34 newdef WSBFormFactor:PseudoVectorMass 29 6.73 newdef WSBFormFactor:F0 30 0.69 newdef WSBFormFactor:V 30 0 newdef WSBFormFactor:A0 30 0 newdef WSBFormFactor:A1 30 0 newdef WSBFormFactor:A2 30 0 newdef WSBFormFactor:ScalarMass 30 6.3 newdef WSBFormFactor:PseudoScalarMass 30 6.8 newdef WSBFormFactor:VectorMass 30 6.34 newdef WSBFormFactor:PseudoVectorMass 30 6.73 newdef WSBFormFactor:F0 31 0.379 newdef WSBFormFactor:V 31 0 newdef WSBFormFactor:A0 31 0 newdef WSBFormFactor:A1 31 0 newdef WSBFormFactor:A2 31 0 newdef WSBFormFactor:ScalarMass 31 5.38 newdef WSBFormFactor:PseudoScalarMass 31 5.89 newdef WSBFormFactor:VectorMass 31 5.43 newdef WSBFormFactor:PseudoVectorMass 31 5.82 newdef WSBFormFactor:F0 32 0.379 newdef WSBFormFactor:V 32 0 newdef WSBFormFactor:A0 32 0 newdef WSBFormFactor:A1 32 0 newdef WSBFormFactor:A2 32 0 newdef WSBFormFactor:ScalarMass 32 5.38 newdef WSBFormFactor:PseudoScalarMass 32 5.89 newdef WSBFormFactor:VectorMass 32 5.43 newdef WSBFormFactor:PseudoVectorMass 32 5.82 newdef WSBFormFactor:F0 33 0.333 newdef WSBFormFactor:V 33 0 newdef WSBFormFactor:A0 33 0 newdef WSBFormFactor:A1 33 0 newdef WSBFormFactor:A2 33 0 newdef WSBFormFactor:ScalarMass 33 5.27 newdef WSBFormFactor:PseudoScalarMass 33 5.78 newdef WSBFormFactor:VectorMass 33 5.32 newdef WSBFormFactor:PseudoVectorMass 33 5.71 newdef WSBFormFactor:F0 34 0.333 newdef WSBFormFactor:V 34 0 newdef WSBFormFactor:A0 34 0 newdef WSBFormFactor:A1 34 0 newdef WSBFormFactor:A2 34 0 newdef WSBFormFactor:ScalarMass 34 5.27 newdef WSBFormFactor:PseudoScalarMass 34 5.78 newdef WSBFormFactor:VectorMass 34 5.32 newdef WSBFormFactor:PseudoVectorMass 34 5.71 newdef WSBFormFactor:F0 35 0.333 newdef WSBFormFactor:V 35 0 newdef WSBFormFactor:A0 35 0 newdef WSBFormFactor:A1 35 0 newdef WSBFormFactor:A2 35 0 newdef WSBFormFactor:ScalarMass 35 5.27 newdef WSBFormFactor:PseudoScalarMass 35 5.78 newdef WSBFormFactor:VectorMass 35 5.32 newdef WSBFormFactor:PseudoVectorMass 35 5.71 newdef WSBFormFactor:F0 36 0.333 newdef WSBFormFactor:V 36 0 newdef WSBFormFactor:A0 36 0 newdef WSBFormFactor:A1 36 0 newdef WSBFormFactor:A2 36 0 newdef WSBFormFactor:ScalarMass 36 5.27 newdef WSBFormFactor:PseudoScalarMass 36 5.78 newdef WSBFormFactor:VectorMass 36 5.32 newdef WSBFormFactor:PseudoVectorMass 36 5.71 newdef WSBFormFactor:F0 37 0.307 newdef WSBFormFactor:V 37 0 newdef WSBFormFactor:A0 37 0 newdef WSBFormFactor:A1 37 0 newdef WSBFormFactor:A2 37 0 newdef WSBFormFactor:ScalarMass 37 5.27 newdef WSBFormFactor:PseudoScalarMass 37 5.78 newdef WSBFormFactor:VectorMass 37 5.32 newdef WSBFormFactor:PseudoVectorMass 37 5.71 newdef WSBFormFactor:F0 38 0.307 newdef WSBFormFactor:V 38 0 newdef WSBFormFactor:A0 38 0 newdef WSBFormFactor:A1 38 0 newdef WSBFormFactor:A2 38 0 newdef WSBFormFactor:ScalarMass 38 5.27 newdef WSBFormFactor:PseudoScalarMass 38 5.78 newdef WSBFormFactor:VectorMass 38 5.32 newdef WSBFormFactor:PseudoVectorMass 38 5.71 newdef WSBFormFactor:F0 39 0.254 newdef WSBFormFactor:V 39 0 newdef WSBFormFactor:A0 39 0 newdef WSBFormFactor:A1 39 0 newdef WSBFormFactor:A2 39 0 newdef WSBFormFactor:ScalarMass 39 5.27 newdef WSBFormFactor:PseudoScalarMass 39 5.78 newdef WSBFormFactor:VectorMass 39 5.32 newdef WSBFormFactor:PseudoVectorMass 39 5.71 newdef WSBFormFactor:F0 40 0.254 newdef WSBFormFactor:V 40 0 newdef WSBFormFactor:A0 40 0 newdef WSBFormFactor:A1 40 0 newdef WSBFormFactor:A2 40 0 newdef WSBFormFactor:ScalarMass 40 5.27 newdef WSBFormFactor:PseudoScalarMass 40 5.78 newdef WSBFormFactor:VectorMass 40 5.32 newdef WSBFormFactor:PseudoVectorMass 40 5.71 newdef WSBFormFactor:F0 41 0 newdef WSBFormFactor:V 41 0.705 newdef WSBFormFactor:A0 41 0.623 newdef WSBFormFactor:A1 41 0.651 newdef WSBFormFactor:A2 41 0.686 newdef WSBFormFactor:ScalarMass 41 6.3 newdef WSBFormFactor:PseudoScalarMass 41 6.8 newdef WSBFormFactor:VectorMass 41 6.34 newdef WSBFormFactor:PseudoVectorMass 41 6.73 newdef WSBFormFactor:F0 42 0 newdef WSBFormFactor:V 42 0.705 newdef WSBFormFactor:A0 42 0.623 newdef WSBFormFactor:A1 42 0.651 newdef WSBFormFactor:A2 42 0.686 newdef WSBFormFactor:ScalarMass 42 6.3 newdef WSBFormFactor:PseudoScalarMass 42 6.8 newdef WSBFormFactor:VectorMass 42 6.34 newdef WSBFormFactor:PseudoVectorMass 42 6.73 newdef WSBFormFactor:F0 43 0 newdef WSBFormFactor:V 43 0.369 newdef WSBFormFactor:A0 43 0.321 newdef WSBFormFactor:A1 43 0.328 newdef WSBFormFactor:A2 43 0.331 newdef WSBFormFactor:ScalarMass 43 5.38 newdef WSBFormFactor:PseudoScalarMass 43 5.89 newdef WSBFormFactor:VectorMass 43 5.43 newdef WSBFormFactor:PseudoVectorMass 43 5.82 newdef WSBFormFactor:F0 44 0 newdef WSBFormFactor:V 44 0.369 newdef WSBFormFactor:A0 44 0.321 newdef WSBFormFactor:A1 44 0.328 newdef WSBFormFactor:A2 44 0.331 newdef WSBFormFactor:ScalarMass 44 5.38 newdef WSBFormFactor:PseudoScalarMass 44 5.89 newdef WSBFormFactor:VectorMass 44 5.43 newdef WSBFormFactor:PseudoVectorMass 44 5.82 newdef WSBFormFactor:F0 45 0 newdef WSBFormFactor:V 45 0.329 newdef WSBFormFactor:A0 45 0.281 newdef WSBFormFactor:A1 45 0.283 newdef WSBFormFactor:A2 45 0.283 newdef WSBFormFactor:ScalarMass 45 5.27 newdef WSBFormFactor:PseudoScalarMass 45 5.78 newdef WSBFormFactor:VectorMass 45 5.32 newdef WSBFormFactor:PseudoVectorMass 45 5.71 newdef WSBFormFactor:F0 46 0 newdef WSBFormFactor:V 46 0.329 newdef WSBFormFactor:A0 46 0.281 newdef WSBFormFactor:A1 46 0.283 newdef WSBFormFactor:A2 46 0.283 newdef WSBFormFactor:ScalarMass 46 5.27 newdef WSBFormFactor:PseudoScalarMass 46 5.78 newdef WSBFormFactor:VectorMass 46 5.32 newdef WSBFormFactor:PseudoVectorMass 46 5.71 newdef WSBFormFactor:F0 47 0 newdef WSBFormFactor:V 47 0.329 newdef WSBFormFactor:A0 47 0.281 newdef WSBFormFactor:A1 47 0.283 newdef WSBFormFactor:A2 47 0.283 newdef WSBFormFactor:ScalarMass 47 5.27 newdef WSBFormFactor:PseudoScalarMass 47 5.78 newdef WSBFormFactor:VectorMass 47 5.32 newdef WSBFormFactor:PseudoVectorMass 47 5.71 newdef WSBFormFactor:F0 48 0 newdef WSBFormFactor:V 48 0.329 newdef WSBFormFactor:A0 48 0.281 newdef WSBFormFactor:A1 48 0.283 newdef WSBFormFactor:A2 48 0.283 newdef WSBFormFactor:ScalarMass 48 5.27 newdef WSBFormFactor:PseudoScalarMass 48 5.78 newdef WSBFormFactor:VectorMass 48 5.32 newdef WSBFormFactor:PseudoVectorMass 48 5.71 newdef WSBFormFactor:F0 49 0 newdef WSBFormFactor:V 49 0.328 newdef WSBFormFactor:A0 49 0.28 newdef WSBFormFactor:A1 49 0.281 newdef WSBFormFactor:A2 49 0.281 newdef WSBFormFactor:ScalarMass 49 5.27 newdef WSBFormFactor:PseudoScalarMass 49 5.78 newdef WSBFormFactor:VectorMass 49 5.32 newdef WSBFormFactor:PseudoVectorMass 49 5.71 newdef WSBFormFactor:F0 50 0 newdef WSBFormFactor:V 50 0.328 newdef WSBFormFactor:A0 50 0.28 newdef WSBFormFactor:A1 50 0.281 newdef WSBFormFactor:A2 50 0.281 newdef WSBFormFactor:ScalarMass 50 5.27 newdef WSBFormFactor:PseudoScalarMass 50 5.78 newdef WSBFormFactor:VectorMass 50 5.32 newdef WSBFormFactor:PseudoVectorMass 50 5.71 newdef WSBFormFactor:Incoming 0 -321 newdef WSBFormFactor:Outgoing 0 111 newdef WSBFormFactor:Spin 0 0 newdef WSBFormFactor:Spectator 0 -2 newdef WSBFormFactor:InQuark 0 3 newdef WSBFormFactor:OutQuark 0 2 newdef WSBFormFactor:Incoming 1 -311 newdef WSBFormFactor:Outgoing 1 211 newdef WSBFormFactor:Spin 1 0 newdef WSBFormFactor:Spectator 1 -1 newdef WSBFormFactor:InQuark 1 3 newdef WSBFormFactor:OutQuark 1 2 newdef WSBFormFactor:Incoming 2 -321 newdef WSBFormFactor:Outgoing 2 -211 newdef WSBFormFactor:Spin 2 0 newdef WSBFormFactor:Spectator 2 -2 newdef WSBFormFactor:InQuark 2 3 newdef WSBFormFactor:OutQuark 2 1 newdef WSBFormFactor:Incoming 3 -311 newdef WSBFormFactor:Outgoing 3 111 newdef WSBFormFactor:Spin 3 0 newdef WSBFormFactor:Spectator 3 -1 newdef WSBFormFactor:InQuark 3 3 newdef WSBFormFactor:OutQuark 3 1 newdef WSBFormFactor:Incoming 4 421 newdef WSBFormFactor:Outgoing 4 -321 newdef WSBFormFactor:Spin 4 0 newdef WSBFormFactor:Spectator 4 -2 newdef WSBFormFactor:InQuark 4 4 newdef WSBFormFactor:OutQuark 4 3 newdef WSBFormFactor:Incoming 5 411 newdef WSBFormFactor:Outgoing 5 -311 newdef WSBFormFactor:Spin 5 0 newdef WSBFormFactor:Spectator 5 -1 newdef WSBFormFactor:InQuark 5 4 newdef WSBFormFactor:OutQuark 5 3 newdef WSBFormFactor:Incoming 6 421 newdef WSBFormFactor:Outgoing 6 -211 newdef WSBFormFactor:Spin 6 0 newdef WSBFormFactor:Spectator 6 -2 newdef WSBFormFactor:InQuark 6 4 newdef WSBFormFactor:OutQuark 6 1 newdef WSBFormFactor:Incoming 7 421 newdef WSBFormFactor:Outgoing 7 111 newdef WSBFormFactor:Spin 7 0 newdef WSBFormFactor:Spectator 7 -2 newdef WSBFormFactor:InQuark 7 4 newdef WSBFormFactor:OutQuark 7 2 newdef WSBFormFactor:Incoming 8 411 newdef WSBFormFactor:Outgoing 8 111 newdef WSBFormFactor:Spin 8 0 newdef WSBFormFactor:Spectator 8 -1 newdef WSBFormFactor:InQuark 8 4 newdef WSBFormFactor:OutQuark 8 1 newdef WSBFormFactor:Incoming 9 411 newdef WSBFormFactor:Outgoing 9 211 newdef WSBFormFactor:Spin 9 0 newdef WSBFormFactor:Spectator 9 -1 newdef WSBFormFactor:InQuark 9 4 newdef WSBFormFactor:OutQuark 9 2 newdef WSBFormFactor:Incoming 10 421 newdef WSBFormFactor:Outgoing 10 221 newdef WSBFormFactor:Spin 10 0 newdef WSBFormFactor:Spectator 10 -2 newdef WSBFormFactor:InQuark 10 4 newdef WSBFormFactor:OutQuark 10 2 newdef WSBFormFactor:Incoming 11 411 newdef WSBFormFactor:Outgoing 11 221 newdef WSBFormFactor:Spin 11 0 newdef WSBFormFactor:Spectator 11 -1 newdef WSBFormFactor:InQuark 11 4 newdef WSBFormFactor:OutQuark 11 1 newdef WSBFormFactor:Incoming 12 421 newdef WSBFormFactor:Outgoing 12 331 newdef WSBFormFactor:Spin 12 0 newdef WSBFormFactor:Spectator 12 -2 newdef WSBFormFactor:InQuark 12 4 newdef WSBFormFactor:OutQuark 12 2 newdef WSBFormFactor:Incoming 13 411 newdef WSBFormFactor:Outgoing 13 331 newdef WSBFormFactor:Spin 13 0 newdef WSBFormFactor:Spectator 13 -1 newdef WSBFormFactor:InQuark 13 4 newdef WSBFormFactor:OutQuark 13 1 newdef WSBFormFactor:Incoming 14 421 newdef WSBFormFactor:Outgoing 14 -323 newdef WSBFormFactor:Spin 14 1 newdef WSBFormFactor:Spectator 14 -2 newdef WSBFormFactor:InQuark 14 4 newdef WSBFormFactor:OutQuark 14 3 newdef WSBFormFactor:Incoming 15 411 newdef WSBFormFactor:Outgoing 15 -313 newdef WSBFormFactor:Spin 15 1 newdef WSBFormFactor:Spectator 15 -1 newdef WSBFormFactor:InQuark 15 4 newdef WSBFormFactor:OutQuark 15 3 newdef WSBFormFactor:Incoming 16 421 newdef WSBFormFactor:Outgoing 16 -213 newdef WSBFormFactor:Spin 16 1 newdef WSBFormFactor:Spectator 16 -2 newdef WSBFormFactor:InQuark 16 4 newdef WSBFormFactor:OutQuark 16 1 newdef WSBFormFactor:Incoming 17 421 newdef WSBFormFactor:Outgoing 17 113 newdef WSBFormFactor:Spin 17 1 newdef WSBFormFactor:Spectator 17 -2 newdef WSBFormFactor:InQuark 17 4 newdef WSBFormFactor:OutQuark 17 2 newdef WSBFormFactor:Incoming 18 411 newdef WSBFormFactor:Outgoing 18 113 newdef WSBFormFactor:Spin 18 1 newdef WSBFormFactor:Spectator 18 -1 newdef WSBFormFactor:InQuark 18 4 newdef WSBFormFactor:OutQuark 18 1 newdef WSBFormFactor:Incoming 19 411 newdef WSBFormFactor:Outgoing 19 213 newdef WSBFormFactor:Spin 19 1 newdef WSBFormFactor:Spectator 19 -1 newdef WSBFormFactor:InQuark 19 4 newdef WSBFormFactor:OutQuark 19 2 newdef WSBFormFactor:Incoming 20 411 newdef WSBFormFactor:Outgoing 20 223 newdef WSBFormFactor:Spin 20 1 newdef WSBFormFactor:Spectator 20 -1 newdef WSBFormFactor:InQuark 20 4 newdef WSBFormFactor:OutQuark 20 1 newdef WSBFormFactor:Incoming 21 421 newdef WSBFormFactor:Outgoing 21 223 newdef WSBFormFactor:Spin 21 1 newdef WSBFormFactor:Spectator 21 -2 newdef WSBFormFactor:InQuark 21 4 newdef WSBFormFactor:OutQuark 21 2 newdef WSBFormFactor:Incoming 22 431 newdef WSBFormFactor:Outgoing 22 221 newdef WSBFormFactor:Spin 22 0 newdef WSBFormFactor:Spectator 22 -3 newdef WSBFormFactor:InQuark 22 4 newdef WSBFormFactor:OutQuark 22 3 newdef WSBFormFactor:Incoming 23 431 newdef WSBFormFactor:Outgoing 23 331 newdef WSBFormFactor:Spin 23 0 newdef WSBFormFactor:Spectator 23 -3 newdef WSBFormFactor:InQuark 23 4 newdef WSBFormFactor:OutQuark 23 3 newdef WSBFormFactor:Incoming 24 431 newdef WSBFormFactor:Outgoing 24 311 newdef WSBFormFactor:Spin 24 0 newdef WSBFormFactor:Spectator 24 -3 newdef WSBFormFactor:InQuark 24 4 newdef WSBFormFactor:OutQuark 24 1 newdef WSBFormFactor:Incoming 25 431 newdef WSBFormFactor:Outgoing 25 321 newdef WSBFormFactor:Spin 25 0 newdef WSBFormFactor:Spectator 25 -3 newdef WSBFormFactor:InQuark 25 4 newdef WSBFormFactor:OutQuark 25 2 newdef WSBFormFactor:Incoming 26 431 newdef WSBFormFactor:Outgoing 26 313 newdef WSBFormFactor:Spin 26 1 newdef WSBFormFactor:Spectator 26 -3 newdef WSBFormFactor:InQuark 26 4 newdef WSBFormFactor:OutQuark 26 1 newdef WSBFormFactor:Incoming 27 431 newdef WSBFormFactor:Outgoing 27 323 newdef WSBFormFactor:Spin 27 1 newdef WSBFormFactor:Spectator 27 -3 newdef WSBFormFactor:InQuark 27 4 newdef WSBFormFactor:OutQuark 27 2 newdef WSBFormFactor:Incoming 28 431 newdef WSBFormFactor:Outgoing 28 333 newdef WSBFormFactor:Spin 28 1 newdef WSBFormFactor:Spectator 28 -3 newdef WSBFormFactor:InQuark 28 4 newdef WSBFormFactor:OutQuark 28 3 newdef WSBFormFactor:Incoming 29 -521 newdef WSBFormFactor:Outgoing 29 421 newdef WSBFormFactor:Spin 29 0 newdef WSBFormFactor:Spectator 29 -2 newdef WSBFormFactor:InQuark 29 5 newdef WSBFormFactor:OutQuark 29 4 newdef WSBFormFactor:Incoming 30 -511 newdef WSBFormFactor:Outgoing 30 411 newdef WSBFormFactor:Spin 30 0 newdef WSBFormFactor:Spectator 30 -2 newdef WSBFormFactor:InQuark 30 5 newdef WSBFormFactor:OutQuark 30 4 newdef WSBFormFactor:Incoming 31 -521 newdef WSBFormFactor:Outgoing 31 -321 newdef WSBFormFactor:Spin 31 0 newdef WSBFormFactor:Spectator 31 -2 newdef WSBFormFactor:InQuark 31 5 newdef WSBFormFactor:OutQuark 31 3 newdef WSBFormFactor:Incoming 32 -511 newdef WSBFormFactor:Outgoing 32 -311 newdef WSBFormFactor:Spin 32 0 newdef WSBFormFactor:Spectator 32 -1 newdef WSBFormFactor:InQuark 32 5 newdef WSBFormFactor:OutQuark 32 3 newdef WSBFormFactor:Incoming 33 -521 newdef WSBFormFactor:Outgoing 33 111 newdef WSBFormFactor:Spin 33 0 newdef WSBFormFactor:Spectator 33 -2 newdef WSBFormFactor:InQuark 33 5 newdef WSBFormFactor:OutQuark 33 2 newdef WSBFormFactor:Incoming 34 -511 newdef WSBFormFactor:Outgoing 34 211 newdef WSBFormFactor:Spin 34 0 newdef WSBFormFactor:Spectator 34 -1 newdef WSBFormFactor:InQuark 34 5 newdef WSBFormFactor:OutQuark 34 2 newdef WSBFormFactor:Incoming 35 -521 newdef WSBFormFactor:Outgoing 35 -211 newdef WSBFormFactor:Spin 35 0 newdef WSBFormFactor:Spectator 35 -2 newdef WSBFormFactor:InQuark 35 5 newdef WSBFormFactor:OutQuark 35 1 newdef WSBFormFactor:Incoming 36 -511 newdef WSBFormFactor:Outgoing 36 111 newdef WSBFormFactor:Spin 36 0 newdef WSBFormFactor:Spectator 36 -1 newdef WSBFormFactor:InQuark 36 5 newdef WSBFormFactor:OutQuark 36 1 newdef WSBFormFactor:Incoming 37 -521 newdef WSBFormFactor:Outgoing 37 221 newdef WSBFormFactor:Spin 37 0 newdef WSBFormFactor:Spectator 37 -2 newdef WSBFormFactor:InQuark 37 5 newdef WSBFormFactor:OutQuark 37 2 newdef WSBFormFactor:Incoming 38 -511 newdef WSBFormFactor:Outgoing 38 221 newdef WSBFormFactor:Spin 38 0 newdef WSBFormFactor:Spectator 38 -1 newdef WSBFormFactor:InQuark 38 5 newdef WSBFormFactor:OutQuark 38 1 newdef WSBFormFactor:Incoming 39 -521 newdef WSBFormFactor:Outgoing 39 331 newdef WSBFormFactor:Spin 39 0 newdef WSBFormFactor:Spectator 39 -2 newdef WSBFormFactor:InQuark 39 5 newdef WSBFormFactor:OutQuark 39 2 newdef WSBFormFactor:Incoming 40 -511 newdef WSBFormFactor:Outgoing 40 331 newdef WSBFormFactor:Spin 40 0 newdef WSBFormFactor:Spectator 40 -1 newdef WSBFormFactor:InQuark 40 5 newdef WSBFormFactor:OutQuark 40 1 newdef WSBFormFactor:Incoming 41 -521 newdef WSBFormFactor:Outgoing 41 423 newdef WSBFormFactor:Spin 41 1 newdef WSBFormFactor:Spectator 41 -2 newdef WSBFormFactor:InQuark 41 5 newdef WSBFormFactor:OutQuark 41 4 newdef WSBFormFactor:Incoming 42 -511 newdef WSBFormFactor:Outgoing 42 413 newdef WSBFormFactor:Spin 42 1 newdef WSBFormFactor:Spectator 42 -1 newdef WSBFormFactor:InQuark 42 5 newdef WSBFormFactor:OutQuark 42 4 newdef WSBFormFactor:Incoming 43 -521 newdef WSBFormFactor:Outgoing 43 -323 newdef WSBFormFactor:Spin 43 1 newdef WSBFormFactor:Spectator 43 -2 newdef WSBFormFactor:InQuark 43 5 newdef WSBFormFactor:OutQuark 43 3 newdef WSBFormFactor:Incoming 44 -511 newdef WSBFormFactor:Outgoing 44 -313 newdef WSBFormFactor:Spin 44 1 newdef WSBFormFactor:Spectator 44 -1 newdef WSBFormFactor:InQuark 44 5 newdef WSBFormFactor:OutQuark 44 3 newdef WSBFormFactor:Incoming 45 -521 newdef WSBFormFactor:Outgoing 45 113 newdef WSBFormFactor:Spin 45 1 newdef WSBFormFactor:Spectator 45 -2 newdef WSBFormFactor:InQuark 45 5 newdef WSBFormFactor:OutQuark 45 2 newdef WSBFormFactor:Incoming 46 -511 newdef WSBFormFactor:Outgoing 46 213 newdef WSBFormFactor:Spin 46 1 newdef WSBFormFactor:Spectator 46 -1 newdef WSBFormFactor:InQuark 46 5 newdef WSBFormFactor:OutQuark 46 2 newdef WSBFormFactor:Incoming 47 -521 newdef WSBFormFactor:Outgoing 47 -213 newdef WSBFormFactor:Spin 47 1 newdef WSBFormFactor:Spectator 47 -2 newdef WSBFormFactor:InQuark 47 5 newdef WSBFormFactor:OutQuark 47 1 newdef WSBFormFactor:Incoming 48 -511 newdef WSBFormFactor:Outgoing 48 113 newdef WSBFormFactor:Spin 48 1 newdef WSBFormFactor:Spectator 48 -1 newdef WSBFormFactor:InQuark 48 5 newdef WSBFormFactor:OutQuark 48 1 newdef WSBFormFactor:Incoming 49 -521 newdef WSBFormFactor:Outgoing 49 223 newdef WSBFormFactor:Spin 49 1 newdef WSBFormFactor:Spectator 49 -2 newdef WSBFormFactor:InQuark 49 5 newdef WSBFormFactor:OutQuark 49 2 newdef WSBFormFactor:Incoming 50 -511 newdef WSBFormFactor:Outgoing 50 223 newdef WSBFormFactor:Spin 50 1 newdef WSBFormFactor:Spectator 50 -1 newdef WSBFormFactor:InQuark 50 5 newdef WSBFormFactor:OutQuark 50 1 newdef WSB:FormFactor WSBFormFactor # create Herwig::BaryonFactorizedDecayer BottomBaryonScalar newdef BottomBaryonScalar:Iteration 1 newdef BottomBaryonScalar:Ntry 500 newdef BottomBaryonScalar:Points 10000 newdef BottomBaryonScalar:a1Bottom 1.23 newdef BottomBaryonScalar:a2Bottom 0.33 newdef BottomBaryonScalar:a1Charm 1.1 newdef BottomBaryonScalar:a2Charm -0.5 newdef BottomBaryonScalar:CKM /Herwig/CKM insert BottomBaryonScalar:WeightLocation 0 0 insert BottomBaryonScalar:WeightLocation 1 0 insert BottomBaryonScalar:WeightLocation 2 0 insert BottomBaryonScalar:WeightLocation 3 0 insert BottomBaryonScalar:WeightLocation 4 0 insert BottomBaryonScalar:WeightLocation 5 0 insert BottomBaryonScalar:WeightLocation 6 0 insert BottomBaryonScalar:WeightLocation 7 0 insert BottomBaryonScalar:WeightLocation 8 0 insert BottomBaryonScalar:WeightLocation 9 0 insert BottomBaryonScalar:WeightLocation 10 0 insert BottomBaryonScalar:WeightLocation 11 0 insert BottomBaryonScalar:WeightLocation 12 0 insert BottomBaryonScalar:WeightLocation 13 0 insert BottomBaryonScalar:WeightLocation 14 0 insert BottomBaryonScalar:WeightLocation 15 0 insert BottomBaryonScalar:WeightLocation 16 0 insert BottomBaryonScalar:WeightLocation 17 0 insert BottomBaryonScalar:WeightLocation 18 0 insert BottomBaryonScalar:WeightLocation 19 0 insert BottomBaryonScalar:WeightLocation 20 0 insert BottomBaryonScalar:WeightLocation 21 0 insert BottomBaryonScalar:WeightLocation 22 0 insert BottomBaryonScalar:WeightLocation 23 0 insert BottomBaryonScalar:WeightLocation 24 0 insert BottomBaryonScalar:WeightLocation 25 0 insert BottomBaryonScalar:WeightLocation 26 0 insert BottomBaryonScalar:WeightLocation 27 0 insert BottomBaryonScalar:WeightLocation 28 0 insert BottomBaryonScalar:WeightLocation 29 0 insert BottomBaryonScalar:WeightLocation 30 0 insert BottomBaryonScalar:WeightLocation 31 0 insert BottomBaryonScalar:WeightLocation 32 0 insert BottomBaryonScalar:WeightLocation 33 0 insert BottomBaryonScalar:WeightLocation 34 0 insert BottomBaryonScalar:WeightLocation 35 0 insert BottomBaryonScalar:WeightLocation 36 0 insert BottomBaryonScalar:WeightLocation 37 0 insert BottomBaryonScalar:WeightLocation 38 0 insert BottomBaryonScalar:WeightLocation 39 0 insert BottomBaryonScalar:WeightLocation 40 0 insert BottomBaryonScalar:WeightLocation 41 0 insert BottomBaryonScalar:WeightLocation 42 0 insert BottomBaryonScalar:WeightLocation 43 0 insert BottomBaryonScalar:WeightLocation 44 0 insert BottomBaryonScalar:WeightLocation 45 0 insert BottomBaryonScalar:WeightLocation 46 0 insert BottomBaryonScalar:WeightLocation 47 0 insert BottomBaryonScalar:WeightLocation 48 0 insert BottomBaryonScalar:WeightLocation 49 0 insert BottomBaryonScalar:WeightLocation 50 0 insert BottomBaryonScalar:WeightLocation 51 0 insert BottomBaryonScalar:WeightLocation 52 0 insert BottomBaryonScalar:WeightLocation 53 0 insert BottomBaryonScalar:WeightLocation 54 0 insert BottomBaryonScalar:WeightLocation 55 0 insert BottomBaryonScalar:WeightLocation 56 0 insert BottomBaryonScalar:WeightLocation 57 0 insert BottomBaryonScalar:WeightLocation 58 0 insert BottomBaryonScalar:WeightLocation 59 0 insert BottomBaryonScalar:WeightLocation 60 0 insert BottomBaryonScalar:WeightLocation 61 0 insert BottomBaryonScalar:WeightLocation 62 0 insert BottomBaryonScalar:WeightLocation 63 0 insert BottomBaryonScalar:WeightLocation 64 0 insert BottomBaryonScalar:WeightLocation 65 0 insert BottomBaryonScalar:WeightLocation 66 0 insert BottomBaryonScalar:WeightLocation 67 0 insert BottomBaryonScalar:WeightLocation 68 0 insert BottomBaryonScalar:WeightLocation 69 0 insert BottomBaryonScalar:WeightLocation 70 0 insert BottomBaryonScalar:WeightLocation 71 0 insert BottomBaryonScalar:WeightLocation 72 0 insert BottomBaryonScalar:WeightLocation 73 0 insert BottomBaryonScalar:WeightLocation 74 0 insert BottomBaryonScalar:WeightLocation 75 0 insert BottomBaryonScalar:WeightLocation 76 0 insert BottomBaryonScalar:WeightLocation 77 0 insert BottomBaryonScalar:WeightLocation 78 0 insert BottomBaryonScalar:WeightLocation 79 0 insert BottomBaryonScalar:WeightLocation 80 0 insert BottomBaryonScalar:WeightLocation 81 0 insert BottomBaryonScalar:WeightLocation 82 0 insert BottomBaryonScalar:WeightLocation 83 0 insert BottomBaryonScalar:WeightLocation 84 0 insert BottomBaryonScalar:WeightLocation 85 0 insert BottomBaryonScalar:WeightLocation 86 0 insert BottomBaryonScalar:WeightLocation 87 0 insert BottomBaryonScalar:MaximumWeight 0 0.0147113 insert BottomBaryonScalar:MaximumWeight 1 0.00116148 insert BottomBaryonScalar:MaximumWeight 2 0.00168101 insert BottomBaryonScalar:MaximumWeight 3 0.0453621 insert BottomBaryonScalar:MaximumWeight 4 0.00380078 insert BottomBaryonScalar:MaximumWeight 5 8.56063e-09 insert BottomBaryonScalar:MaximumWeight 6 4.41438e-09 insert BottomBaryonScalar:MaximumWeight 7 4.27007e-09 insert BottomBaryonScalar:MaximumWeight 8 6.07688e-06 insert BottomBaryonScalar:MaximumWeight 9 9.19826e-07 insert BottomBaryonScalar:MaximumWeight 10 1.19065e-07 insert BottomBaryonScalar:MaximumWeight 11 6.16384e-08 insert BottomBaryonScalar:MaximumWeight 12 6.01101e-08 insert BottomBaryonScalar:MaximumWeight 13 8.8887e-05 insert BottomBaryonScalar:MaximumWeight 14 3.7768e-08 insert BottomBaryonScalar:MaximumWeight 15 0.0175354 insert BottomBaryonScalar:MaximumWeight 16 0.00138492 insert BottomBaryonScalar:MaximumWeight 17 0.0020143 insert BottomBaryonScalar:MaximumWeight 18 0.0543872 insert BottomBaryonScalar:MaximumWeight 19 0.0045673 insert BottomBaryonScalar:MaximumWeight 20 0.0175617 insert BottomBaryonScalar:MaximumWeight 21 0.00138701 insert BottomBaryonScalar:MaximumWeight 22 0.0020176 insert BottomBaryonScalar:MaximumWeight 23 0.0544773 insert BottomBaryonScalar:MaximumWeight 24 0.00457512 insert BottomBaryonScalar:MaximumWeight 25 1.77806e-08 insert BottomBaryonScalar:MaximumWeight 26 9.17422e-09 insert BottomBaryonScalar:MaximumWeight 27 8.88518e-09 insert BottomBaryonScalar:MaximumWeight 28 1.27117e-05 insert BottomBaryonScalar:MaximumWeight 29 1.9241e-06 insert BottomBaryonScalar:MaximumWeight 30 1.79105e-08 insert BottomBaryonScalar:MaximumWeight 31 9.24135e-09 insert BottomBaryonScalar:MaximumWeight 32 8.95234e-09 insert BottomBaryonScalar:MaximumWeight 33 1.28062e-05 insert BottomBaryonScalar:MaximumWeight 34 1.9384e-06 insert BottomBaryonScalar:MaximumWeight 35 1.12622e-07 insert BottomBaryonScalar:MaximumWeight 36 5.83167e-08 insert BottomBaryonScalar:MaximumWeight 37 5.69376e-08 insert BottomBaryonScalar:MaximumWeight 38 8.42658e-05 insert BottomBaryonScalar:MaximumWeight 39 3.58044e-08 insert BottomBaryonScalar:MaximumWeight 40 1.12936e-07 insert BottomBaryonScalar:MaximumWeight 41 5.84801e-08 insert BottomBaryonScalar:MaximumWeight 42 5.70908e-08 insert BottomBaryonScalar:MaximumWeight 43 8.4519e-05 insert BottomBaryonScalar:MaximumWeight 44 3.5912e-08 insert BottomBaryonScalar:MaximumWeight 45 2.69015e-08 insert BottomBaryonScalar:MaximumWeight 46 1.39361e-08 insert BottomBaryonScalar:MaximumWeight 47 1.36195e-08 insert BottomBaryonScalar:MaximumWeight 48 2.02555e-05 insert BottomBaryonScalar:MaximumWeight 49 8.60654e-09 insert BottomBaryonScalar:MaximumWeight 50 0.018 insert BottomBaryonScalar:MaximumWeight 51 0.00110106 insert BottomBaryonScalar:MaximumWeight 52 0.0023 insert BottomBaryonScalar:MaximumWeight 53 0.07 insert BottomBaryonScalar:MaximumWeight 54 0.00367262 insert BottomBaryonScalar:MaximumWeight 55 1.43709e-07 insert BottomBaryonScalar:MaximumWeight 56 7.35099e-08 insert BottomBaryonScalar:MaximumWeight 57 6.98837e-08 insert BottomBaryonScalar:MaximumWeight 58 9.30994e-05 insert BottomBaryonScalar:MaximumWeight 59 3.95578e-08 insert BottomBaryonScalar:MaximumWeight 60 0.00598854 insert BottomBaryonScalar:MaximumWeight 61 0.000472722 insert BottomBaryonScalar:MaximumWeight 62 0.000640993 insert BottomBaryonScalar:MaximumWeight 63 0.0169935 insert BottomBaryonScalar:MaximumWeight 64 0.00128473 insert BottomBaryonScalar:MaximumWeight 65 1.61781e-08 insert BottomBaryonScalar:MaximumWeight 66 7.84416e-09 insert BottomBaryonScalar:MaximumWeight 67 6.68216e-09 insert BottomBaryonScalar:MaximumWeight 68 6.88474e-06 insert BottomBaryonScalar:MaximumWeight 69 1.04211e-06 insert BottomBaryonScalar:MaximumWeight 70 8.01444e-07 insert BottomBaryonScalar:MaximumWeight 71 3.82459e-07 insert BottomBaryonScalar:MaximumWeight 72 3.05222e-07 insert BottomBaryonScalar:MaximumWeight 73 0.000225103 insert BottomBaryonScalar:MaximumWeight 74 9.43004e-08 insert BottomBaryonScalar:MaximumWeight 75 0.0131163 insert BottomBaryonScalar:MaximumWeight 76 0.000866485 insert BottomBaryonScalar:MaximumWeight 77 0.000102483 insert BottomBaryonScalar:MaximumWeight 78 0.0002451 insert BottomBaryonScalar:MaximumWeight 79 2.59124e-06 insert BottomBaryonScalar:MaximumWeight 80 1.44122e-05 insert BottomBaryonScalar:MaximumWeight 81 0.00511908 insert BottomBaryonScalar:MaximumWeight 82 0.020127 insert BottomBaryonScalar:MaximumWeight 83 0.00153056 insert BottomBaryonScalar:MaximumWeight 84 0.0501601 insert BottomBaryonScalar:MaximumWeight 85 0.00379703 insert BottomBaryonScalar:MaximumWeight 86 0.0128147 insert BottomBaryonScalar:MaximumWeight 87 0.000969737 create Herwig::ScalarMesonCurrent BottomBaryonScalarCurrent newdef BottomBaryonScalarCurrent:ThetaEtaEtaPrime -0.194 newdef BottomBaryonScalarCurrent:ID 0 211 newdef BottomBaryonScalarCurrent:Decay_Constant 0 130.7 newdef BottomBaryonScalarCurrent:ID 1 111 newdef BottomBaryonScalarCurrent:Decay_Constant 1 130.7 newdef BottomBaryonScalarCurrent:ID 2 111 newdef BottomBaryonScalarCurrent:Decay_Constant 2 130.7 newdef BottomBaryonScalarCurrent:ID 3 221 newdef BottomBaryonScalarCurrent:Decay_Constant 3 130.7 newdef BottomBaryonScalarCurrent:ID 4 221 newdef BottomBaryonScalarCurrent:Decay_Constant 4 130.7 newdef BottomBaryonScalarCurrent:ID 5 221 newdef BottomBaryonScalarCurrent:Decay_Constant 5 130.7 newdef BottomBaryonScalarCurrent:ID 6 331 newdef BottomBaryonScalarCurrent:Decay_Constant 6 130.7 newdef BottomBaryonScalarCurrent:ID 7 331 newdef BottomBaryonScalarCurrent:Decay_Constant 7 130.7 newdef BottomBaryonScalarCurrent:ID 8 331 newdef BottomBaryonScalarCurrent:Decay_Constant 8 130.7 newdef BottomBaryonScalarCurrent:ID 9 311 newdef BottomBaryonScalarCurrent:Decay_Constant 9 159.8 newdef BottomBaryonScalarCurrent:ID 10 321 newdef BottomBaryonScalarCurrent:Decay_Constant 10 159.8 newdef BottomBaryonScalarCurrent:ID 11 411 newdef BottomBaryonScalarCurrent:Decay_Constant 11 200 newdef BottomBaryonScalarCurrent:ID 12 421 newdef BottomBaryonScalarCurrent:Decay_Constant 12 200 newdef BottomBaryonScalarCurrent:ID 13 431 newdef BottomBaryonScalarCurrent:Decay_Constant 13 241 newdef BottomBaryonScalarCurrent:ID 14 10431 newdef BottomBaryonScalarCurrent:Decay_Constant 14 73.7 newdef BottomBaryonScalarCurrent:Quark 0 2 newdef BottomBaryonScalarCurrent:AntiQuark 0 -1 newdef BottomBaryonScalarCurrent:Quark 1 1 newdef BottomBaryonScalarCurrent:AntiQuark 1 -1 newdef BottomBaryonScalarCurrent:Quark 2 2 newdef BottomBaryonScalarCurrent:AntiQuark 2 -2 newdef BottomBaryonScalarCurrent:Quark 3 1 newdef BottomBaryonScalarCurrent:AntiQuark 3 -1 newdef BottomBaryonScalarCurrent:Quark 4 2 newdef BottomBaryonScalarCurrent:AntiQuark 4 -2 newdef BottomBaryonScalarCurrent:Quark 5 3 newdef BottomBaryonScalarCurrent:AntiQuark 5 -3 newdef BottomBaryonScalarCurrent:Quark 6 1 newdef BottomBaryonScalarCurrent:AntiQuark 6 -1 newdef BottomBaryonScalarCurrent:Quark 7 2 newdef BottomBaryonScalarCurrent:AntiQuark 7 -2 newdef BottomBaryonScalarCurrent:Quark 8 3 newdef BottomBaryonScalarCurrent:AntiQuark 8 -3 newdef BottomBaryonScalarCurrent:Quark 9 1 newdef BottomBaryonScalarCurrent:AntiQuark 9 -3 newdef BottomBaryonScalarCurrent:Quark 10 2 newdef BottomBaryonScalarCurrent:AntiQuark 10 -3 newdef BottomBaryonScalarCurrent:Quark 11 4 newdef BottomBaryonScalarCurrent:AntiQuark 11 -1 newdef BottomBaryonScalarCurrent:Quark 12 4 newdef BottomBaryonScalarCurrent:AntiQuark 12 -2 newdef BottomBaryonScalarCurrent:Quark 13 4 newdef BottomBaryonScalarCurrent:AntiQuark 13 -3 newdef BottomBaryonScalarCurrent:Quark 14 4 newdef BottomBaryonScalarCurrent:AntiQuark 14 -3 newdef BottomBaryonScalar:Current BottomBaryonScalarCurrent create Herwig::ChengHeavyBaryonFormFactor BottomBaryonScalarForm newdef BottomBaryonScalarForm:DownMass 0.322 newdef BottomBaryonScalarForm:UpMass 0.338 newdef BottomBaryonScalarForm:StrangeMass 0.51 newdef BottomBaryonScalarForm:CharmMass 1.6 newdef BottomBaryonScalarForm:BottomMass 5 newdef BottomBaryonScalarForm:VectorMassbc 6.34 newdef BottomBaryonScalarForm:AxialMassbc 6.73 newdef BottomBaryonScalarForm:VectorMassbs 5.42 newdef BottomBaryonScalarForm:AxialMassbs 5.86 newdef BottomBaryonScalarForm:VectorMassbd 5.32 newdef BottomBaryonScalarForm:AxialMassbd 5.71 newdef BottomBaryonScalarForm:VectorMasscs 2.11 newdef BottomBaryonScalarForm:AxialMasscs 2.54 newdef BottomBaryonScalarForm:VectorMasscu 2.01 newdef BottomBaryonScalarForm:AxialMasscu 2.42 newdef BottomBaryonScalarForm:Nfi 0 1 newdef BottomBaryonScalarForm:Eta 0 1 newdef BottomBaryonScalarForm:Nfi 1 0.57735 newdef BottomBaryonScalarForm:Eta 1 1 newdef BottomBaryonScalarForm:Nfi 2 0.707107 newdef BottomBaryonScalarForm:Eta 2 1 newdef BottomBaryonScalarForm:Nfi 3 1 newdef BottomBaryonScalarForm:Eta 3 1 newdef BottomBaryonScalarForm:Nfi 4 1 newdef BottomBaryonScalarForm:Eta 4 1 newdef BottomBaryonScalarForm:Nfi 5 0.707107 newdef BottomBaryonScalarForm:Eta 5 1 newdef BottomBaryonScalarForm:Nfi 6 0.707107 newdef BottomBaryonScalarForm:Eta 6 1 newdef BottomBaryonScalarForm:Nfi 7 0.5 newdef BottomBaryonScalarForm:Eta 7 1 newdef BottomBaryonScalarForm:Nfi 8 0.5 newdef BottomBaryonScalarForm:Eta 8 1 newdef BottomBaryonScalarForm:Nfi 9 0.288675 newdef BottomBaryonScalarForm:Eta 9 1 newdef BottomBaryonScalarForm:Nfi 10 1 newdef BottomBaryonScalarForm:Eta 10 -0.333333 newdef BottomBaryonScalarForm:Nfi 11 0.57735 newdef BottomBaryonScalarForm:Eta 11 -0.333333 newdef BottomBaryonScalarForm:Nfi 12 1 newdef BottomBaryonScalarForm:Eta 12 0 newdef BottomBaryonScalarForm:Nfi 13 1 newdef BottomBaryonScalarForm:Eta 13 0 newdef BottomBaryonScalarForm:Nfi 14 0.57735 newdef BottomBaryonScalarForm:Eta 14 0 newdef BottomBaryonScalarForm:Nfi 15 1 newdef BottomBaryonScalarForm:Eta 15 0 newdef BottomBaryonScalarForm:Nfi 16 0.57735 newdef BottomBaryonScalarForm:Eta 16 0 newdef BottomBaryonScalarForm:Nfi 17 0.57735 newdef BottomBaryonScalarForm:Eta 17 1 newdef BottomBaryonScalarForm:Nfi 18 0.57735 newdef BottomBaryonScalarForm:Eta 18 1 newdef BottomBaryonScalarForm:Nfi 19 0.57735 newdef BottomBaryonScalarForm:Eta 19 1 newdef BottomBaryonScalarForm:Incoming 0 5122 newdef BottomBaryonScalarForm:Outgoing 0 4122 newdef BottomBaryonScalarForm:InSpin 0 2 newdef BottomBaryonScalarForm:OutSpin 0 2 newdef BottomBaryonScalarForm:Spectator1 0 1 newdef BottomBaryonScalarForm:Spectator2 0 2 newdef BottomBaryonScalarForm:InQuark 0 5 newdef BottomBaryonScalarForm:OutQuark 0 4 newdef BottomBaryonScalarForm:Incoming 1 5122 newdef BottomBaryonScalarForm:Outgoing 1 3122 newdef BottomBaryonScalarForm:InSpin 1 2 newdef BottomBaryonScalarForm:OutSpin 1 2 newdef BottomBaryonScalarForm:Spectator1 1 1 newdef BottomBaryonScalarForm:Spectator2 1 2 newdef BottomBaryonScalarForm:InQuark 1 5 newdef BottomBaryonScalarForm:OutQuark 1 3 newdef BottomBaryonScalarForm:Incoming 2 5122 newdef BottomBaryonScalarForm:Outgoing 2 2112 newdef BottomBaryonScalarForm:InSpin 2 2 newdef BottomBaryonScalarForm:OutSpin 2 2 newdef BottomBaryonScalarForm:Spectator1 2 1 newdef BottomBaryonScalarForm:Spectator2 2 2 newdef BottomBaryonScalarForm:InQuark 2 5 newdef BottomBaryonScalarForm:OutQuark 2 1 newdef BottomBaryonScalarForm:Incoming 3 5232 newdef BottomBaryonScalarForm:Outgoing 3 4232 newdef BottomBaryonScalarForm:InSpin 3 2 newdef BottomBaryonScalarForm:OutSpin 3 2 newdef BottomBaryonScalarForm:Spectator1 3 2 newdef BottomBaryonScalarForm:Spectator2 3 3 newdef BottomBaryonScalarForm:InQuark 3 5 newdef BottomBaryonScalarForm:OutQuark 3 4 newdef BottomBaryonScalarForm:Incoming 4 5132 newdef BottomBaryonScalarForm:Outgoing 4 4132 newdef BottomBaryonScalarForm:InSpin 4 2 newdef BottomBaryonScalarForm:OutSpin 4 2 newdef BottomBaryonScalarForm:Spectator1 4 1 newdef BottomBaryonScalarForm:Spectator2 4 3 newdef BottomBaryonScalarForm:InQuark 4 5 newdef BottomBaryonScalarForm:OutQuark 4 4 newdef BottomBaryonScalarForm:Incoming 5 5232 newdef BottomBaryonScalarForm:Outgoing 5 3322 newdef BottomBaryonScalarForm:InSpin 5 2 newdef BottomBaryonScalarForm:OutSpin 5 2 newdef BottomBaryonScalarForm:Spectator1 5 2 newdef BottomBaryonScalarForm:Spectator2 5 3 newdef BottomBaryonScalarForm:InQuark 5 5 newdef BottomBaryonScalarForm:OutQuark 5 3 newdef BottomBaryonScalarForm:Incoming 6 5132 newdef BottomBaryonScalarForm:Outgoing 6 3312 newdef BottomBaryonScalarForm:InSpin 6 2 newdef BottomBaryonScalarForm:OutSpin 6 2 newdef BottomBaryonScalarForm:Spectator1 6 1 newdef BottomBaryonScalarForm:Spectator2 6 3 newdef BottomBaryonScalarForm:InQuark 6 5 newdef BottomBaryonScalarForm:OutQuark 6 3 newdef BottomBaryonScalarForm:Incoming 7 5232 newdef BottomBaryonScalarForm:Outgoing 7 3212 newdef BottomBaryonScalarForm:InSpin 7 2 newdef BottomBaryonScalarForm:OutSpin 7 2 newdef BottomBaryonScalarForm:Spectator1 7 2 newdef BottomBaryonScalarForm:Spectator2 7 3 newdef BottomBaryonScalarForm:InQuark 7 5 newdef BottomBaryonScalarForm:OutQuark 7 1 newdef BottomBaryonScalarForm:Incoming 8 5132 newdef BottomBaryonScalarForm:Outgoing 8 3112 newdef BottomBaryonScalarForm:InSpin 8 2 newdef BottomBaryonScalarForm:OutSpin 8 2 newdef BottomBaryonScalarForm:Spectator1 8 1 newdef BottomBaryonScalarForm:Spectator2 8 3 newdef BottomBaryonScalarForm:InQuark 8 5 newdef BottomBaryonScalarForm:OutQuark 8 1 newdef BottomBaryonScalarForm:Incoming 9 5232 newdef BottomBaryonScalarForm:Outgoing 9 3122 newdef BottomBaryonScalarForm:InSpin 9 2 newdef BottomBaryonScalarForm:OutSpin 9 2 newdef BottomBaryonScalarForm:Spectator1 9 2 newdef BottomBaryonScalarForm:Spectator2 9 3 newdef BottomBaryonScalarForm:InQuark 9 5 newdef BottomBaryonScalarForm:OutQuark 9 1 newdef BottomBaryonScalarForm:Incoming 10 5332 newdef BottomBaryonScalarForm:Outgoing 10 4332 newdef BottomBaryonScalarForm:InSpin 10 2 newdef BottomBaryonScalarForm:OutSpin 10 2 newdef BottomBaryonScalarForm:Spectator1 10 3 newdef BottomBaryonScalarForm:Spectator2 10 3 newdef BottomBaryonScalarForm:InQuark 10 5 newdef BottomBaryonScalarForm:OutQuark 10 4 newdef BottomBaryonScalarForm:Incoming 11 5332 newdef BottomBaryonScalarForm:Outgoing 11 3312 newdef BottomBaryonScalarForm:InSpin 11 2 newdef BottomBaryonScalarForm:OutSpin 11 2 newdef BottomBaryonScalarForm:Spectator1 11 3 newdef BottomBaryonScalarForm:Spectator2 11 3 newdef BottomBaryonScalarForm:InQuark 11 5 newdef BottomBaryonScalarForm:OutQuark 11 1 newdef BottomBaryonScalarForm:Incoming 12 5332 newdef BottomBaryonScalarForm:Outgoing 12 4334 newdef BottomBaryonScalarForm:InSpin 12 2 newdef BottomBaryonScalarForm:OutSpin 12 4 newdef BottomBaryonScalarForm:Spectator1 12 3 newdef BottomBaryonScalarForm:Spectator2 12 3 newdef BottomBaryonScalarForm:InQuark 12 5 newdef BottomBaryonScalarForm:OutQuark 12 4 newdef BottomBaryonScalarForm:Incoming 13 5332 newdef BottomBaryonScalarForm:Outgoing 13 3334 newdef BottomBaryonScalarForm:InSpin 13 2 newdef BottomBaryonScalarForm:OutSpin 13 4 newdef BottomBaryonScalarForm:Spectator1 13 3 newdef BottomBaryonScalarForm:Spectator2 13 3 newdef BottomBaryonScalarForm:InQuark 13 5 newdef BottomBaryonScalarForm:OutQuark 13 3 newdef BottomBaryonScalarForm:Incoming 14 5332 newdef BottomBaryonScalarForm:Outgoing 14 3314 newdef BottomBaryonScalarForm:InSpin 14 2 newdef BottomBaryonScalarForm:OutSpin 14 4 newdef BottomBaryonScalarForm:Spectator1 14 3 newdef BottomBaryonScalarForm:Spectator2 14 3 newdef BottomBaryonScalarForm:InQuark 14 5 newdef BottomBaryonScalarForm:OutQuark 14 1 newdef BottomBaryonScalarForm:Incoming 15 4332 newdef BottomBaryonScalarForm:Outgoing 15 3334 newdef BottomBaryonScalarForm:InSpin 15 2 newdef BottomBaryonScalarForm:OutSpin 15 4 newdef BottomBaryonScalarForm:Spectator1 15 3 newdef BottomBaryonScalarForm:Spectator2 15 3 newdef BottomBaryonScalarForm:InQuark 15 4 newdef BottomBaryonScalarForm:OutQuark 15 3 newdef BottomBaryonScalarForm:Incoming 16 4332 newdef BottomBaryonScalarForm:Outgoing 16 3324 newdef BottomBaryonScalarForm:InSpin 16 2 newdef BottomBaryonScalarForm:OutSpin 16 4 newdef BottomBaryonScalarForm:Spectator1 16 3 newdef BottomBaryonScalarForm:Spectator2 16 3 newdef BottomBaryonScalarForm:InQuark 16 4 newdef BottomBaryonScalarForm:OutQuark 16 2 newdef BottomBaryonScalarForm:Incoming 17 4122 newdef BottomBaryonScalarForm:Outgoing 17 3122 newdef BottomBaryonScalarForm:InSpin 17 2 newdef BottomBaryonScalarForm:OutSpin 17 2 newdef BottomBaryonScalarForm:Spectator1 17 1 newdef BottomBaryonScalarForm:Spectator2 17 2 newdef BottomBaryonScalarForm:InQuark 17 4 newdef BottomBaryonScalarForm:OutQuark 17 3 newdef BottomBaryonScalarForm:Incoming 18 4232 newdef BottomBaryonScalarForm:Outgoing 18 3322 newdef BottomBaryonScalarForm:InSpin 18 2 newdef BottomBaryonScalarForm:OutSpin 18 2 newdef BottomBaryonScalarForm:Spectator1 18 2 newdef BottomBaryonScalarForm:Spectator2 18 3 newdef BottomBaryonScalarForm:InQuark 18 4 newdef BottomBaryonScalarForm:OutQuark 18 3 newdef BottomBaryonScalarForm:Incoming 19 4132 newdef BottomBaryonScalarForm:Outgoing 19 3312 newdef BottomBaryonScalarForm:InSpin 19 2 newdef BottomBaryonScalarForm:OutSpin 19 2 newdef BottomBaryonScalarForm:Spectator1 19 1 newdef BottomBaryonScalarForm:Spectator2 19 3 newdef BottomBaryonScalarForm:InQuark 19 4 newdef BottomBaryonScalarForm:OutQuark 19 3 newdef BottomBaryonScalar:FormFactor BottomBaryonScalarForm # create Herwig::BaryonFactorizedDecayer BottomBaryonVector newdef BottomBaryonVector:Iteration 1 newdef BottomBaryonVector:Ntry 500 newdef BottomBaryonVector:Points 10000 newdef BottomBaryonVector:a1Bottom 1.23 newdef BottomBaryonVector:a2Bottom 0.33 newdef BottomBaryonVector:a1Charm 1.1 newdef BottomBaryonVector:a2Charm -0.5 newdef BottomBaryonVector:CKM /Herwig/CKM insert BottomBaryonVector:WeightLocation 0 0 insert BottomBaryonVector:WeightLocation 1 0 insert BottomBaryonVector:WeightLocation 2 0 insert BottomBaryonVector:WeightLocation 3 0 insert BottomBaryonVector:WeightLocation 4 0 insert BottomBaryonVector:WeightLocation 5 0 insert BottomBaryonVector:WeightLocation 6 0 insert BottomBaryonVector:WeightLocation 7 0 insert BottomBaryonVector:WeightLocation 8 0 insert BottomBaryonVector:WeightLocation 9 0 insert BottomBaryonVector:WeightLocation 10 0 insert BottomBaryonVector:WeightLocation 11 0 insert BottomBaryonVector:WeightLocation 12 0 insert BottomBaryonVector:WeightLocation 13 0 insert BottomBaryonVector:WeightLocation 14 0 insert BottomBaryonVector:WeightLocation 15 0 insert BottomBaryonVector:WeightLocation 16 0 insert BottomBaryonVector:WeightLocation 17 0 insert BottomBaryonVector:WeightLocation 18 0 insert BottomBaryonVector:WeightLocation 19 0 insert BottomBaryonVector:WeightLocation 20 0 insert BottomBaryonVector:WeightLocation 21 0 insert BottomBaryonVector:WeightLocation 22 0 insert BottomBaryonVector:WeightLocation 23 0 insert BottomBaryonVector:WeightLocation 24 0 insert BottomBaryonVector:WeightLocation 25 0 insert BottomBaryonVector:WeightLocation 26 0 insert BottomBaryonVector:WeightLocation 27 0 insert BottomBaryonVector:WeightLocation 28 0 insert BottomBaryonVector:WeightLocation 29 0 insert BottomBaryonVector:WeightLocation 30 0 insert BottomBaryonVector:WeightLocation 31 0 insert BottomBaryonVector:WeightLocation 32 0 insert BottomBaryonVector:WeightLocation 33 0 insert BottomBaryonVector:WeightLocation 34 0 insert BottomBaryonVector:WeightLocation 35 0 insert BottomBaryonVector:WeightLocation 36 0 insert BottomBaryonVector:WeightLocation 37 0 insert BottomBaryonVector:WeightLocation 38 0 insert BottomBaryonVector:WeightLocation 39 0 insert BottomBaryonVector:WeightLocation 40 0 insert BottomBaryonVector:WeightLocation 41 0 insert BottomBaryonVector:WeightLocation 42 0 insert BottomBaryonVector:WeightLocation 43 0 insert BottomBaryonVector:WeightLocation 44 0 insert BottomBaryonVector:WeightLocation 45 0 insert BottomBaryonVector:WeightLocation 46 0 insert BottomBaryonVector:WeightLocation 47 0 insert BottomBaryonVector:WeightLocation 48 0 insert BottomBaryonVector:WeightLocation 49 0 insert BottomBaryonVector:WeightLocation 50 0 insert BottomBaryonVector:WeightLocation 51 0 insert BottomBaryonVector:WeightLocation 52 0 insert BottomBaryonVector:WeightLocation 53 0 insert BottomBaryonVector:WeightLocation 54 0 insert BottomBaryonVector:WeightLocation 55 0 insert BottomBaryonVector:WeightLocation 56 0 insert BottomBaryonVector:WeightLocation 57 0 insert BottomBaryonVector:WeightLocation 58 0 insert BottomBaryonVector:WeightLocation 59 0 insert BottomBaryonVector:WeightLocation 60 0 insert BottomBaryonVector:WeightLocation 61 0 insert BottomBaryonVector:WeightLocation 62 0 insert BottomBaryonVector:WeightLocation 63 0 insert BottomBaryonVector:WeightLocation 64 0 insert BottomBaryonVector:WeightLocation 65 0 insert BottomBaryonVector:WeightLocation 66 0 insert BottomBaryonVector:WeightLocation 67 0 insert BottomBaryonVector:WeightLocation 68 0 insert BottomBaryonVector:WeightLocation 69 0 insert BottomBaryonVector:WeightLocation 70 0 insert BottomBaryonVector:WeightLocation 71 0 insert BottomBaryonVector:WeightLocation 72 0 insert BottomBaryonVector:WeightLocation 73 0 insert BottomBaryonVector:WeightLocation 74 0 insert BottomBaryonVector:WeightLocation 75 0 insert BottomBaryonVector:WeightLocation 76 0 insert BottomBaryonVector:WeightLocation 77 0 insert BottomBaryonVector:WeightLocation 78 0 insert BottomBaryonVector:WeightLocation 79 0 insert BottomBaryonVector:WeightLocation 80 0 insert BottomBaryonVector:WeightLocation 81 0 insert BottomBaryonVector:WeightLocation 82 0 insert BottomBaryonVector:WeightLocation 83 0 insert BottomBaryonVector:WeightLocation 84 0 insert BottomBaryonVector:WeightLocation 85 0 insert BottomBaryonVector:WeightLocation 86 0 insert BottomBaryonVector:WeightLocation 87 0 insert BottomBaryonVector:WeightLocation 88 0 insert BottomBaryonVector:WeightLocation 89 0 insert BottomBaryonVector:WeightLocation 90 0 insert BottomBaryonVector:WeightLocation 91 0 insert BottomBaryonVector:WeightLocation 92 0 insert BottomBaryonVector:WeightLocation 93 0 insert BottomBaryonVector:WeightLocation 94 0 insert BottomBaryonVector:WeightLocation 95 0 insert BottomBaryonVector:WeightLocation 96 0 insert BottomBaryonVector:WeightLocation 97 0 insert BottomBaryonVector:WeightLocation 98 0 insert BottomBaryonVector:WeightLocation 99 0 insert BottomBaryonVector:WeightLocation 100 0 insert BottomBaryonVector:WeightLocation 101 0 insert BottomBaryonVector:WeightLocation 102 0 insert BottomBaryonVector:WeightLocation 103 0 insert BottomBaryonVector:WeightLocation 104 0 insert BottomBaryonVector:WeightLocation 105 0 insert BottomBaryonVector:WeightLocation 106 0 insert BottomBaryonVector:WeightLocation 107 0 insert BottomBaryonVector:WeightLocation 108 0 insert BottomBaryonVector:WeightLocation 109 0 insert BottomBaryonVector:WeightLocation 110 0 insert BottomBaryonVector:WeightLocation 111 0 insert BottomBaryonVector:WeightLocation 112 0 insert BottomBaryonVector:WeightLocation 113 0 insert BottomBaryonVector:WeightLocation 114 0 insert BottomBaryonVector:WeightLocation 115 0 insert BottomBaryonVector:WeightLocation 116 0 insert BottomBaryonVector:WeightLocation 117 0 insert BottomBaryonVector:MaximumWeight 0 0.0449396 insert BottomBaryonVector:MaximumWeight 1 0.00612163 insert BottomBaryonVector:MaximumWeight 2 0.131143 insert BottomBaryonVector:MaximumWeight 3 0.00309077 insert BottomBaryonVector:MaximumWeight 4 0.0695929 insert BottomBaryonVector:MaximumWeight 5 0.0324241 insert BottomBaryonVector:MaximumWeight 6 2.65172e-08 insert BottomBaryonVector:MaximumWeight 7 8.37622e-08 insert BottomBaryonVector:MaximumWeight 8 7.93362e-08 insert BottomBaryonVector:MaximumWeight 9 8.953e-06 insert BottomBaryonVector:MaximumWeight 10 1.3552e-06 insert BottomBaryonVector:MaximumWeight 11 0.00115009 insert BottomBaryonVector:MaximumWeight 12 0.000972447 insert BottomBaryonVector:MaximumWeight 13 3.66488e-07 insert BottomBaryonVector:MaximumWeight 14 1.13877e-06 insert BottomBaryonVector:MaximumWeight 15 1.08871e-06 insert BottomBaryonVector:MaximumWeight 16 0.000121201 insert BottomBaryonVector:MaximumWeight 17 5.14972e-08 insert BottomBaryonVector:MaximumWeight 18 4.50002e-05 insert BottomBaryonVector:MaximumWeight 19 4.13094e-05 insert BottomBaryonVector:MaximumWeight 20 0.053585 insert BottomBaryonVector:MaximumWeight 21 0.00731867 insert BottomBaryonVector:MaximumWeight 22 0.156467 insert BottomBaryonVector:MaximumWeight 23 0.00368031 insert BottomBaryonVector:MaximumWeight 24 0.0833327 insert BottomBaryonVector:MaximumWeight 25 0.038913 insert BottomBaryonVector:MaximumWeight 26 0.0536657 insert BottomBaryonVector:MaximumWeight 27 0.00731593 insert BottomBaryonVector:MaximumWeight 28 0.156705 insert BottomBaryonVector:MaximumWeight 29 0.00370561 insert BottomBaryonVector:MaximumWeight 30 0.083468 insert BottomBaryonVector:MaximumWeight 31 0.038978 insert BottomBaryonVector:MaximumWeight 32 5.49863e-08 insert BottomBaryonVector:MaximumWeight 33 1.72936e-07 insert BottomBaryonVector:MaximumWeight 34 1.64202e-07 insert BottomBaryonVector:MaximumWeight 35 1.84595e-05 insert BottomBaryonVector:MaximumWeight 36 2.79291e-06 insert BottomBaryonVector:MaximumWeight 37 0.00237386 insert BottomBaryonVector:MaximumWeight 38 0.00201395 insert BottomBaryonVector:MaximumWeight 39 5.53851e-08 insert BottomBaryonVector:MaximumWeight 40 1.7474e-07 insert BottomBaryonVector:MaximumWeight 41 1.65383e-07 insert BottomBaryonVector:MaximumWeight 42 1.85805e-05 insert BottomBaryonVector:MaximumWeight 43 2.81345e-06 insert BottomBaryonVector:MaximumWeight 44 0.00239027 insert BottomBaryonVector:MaximumWeight 45 0.00202752 insert BottomBaryonVector:MaximumWeight 46 3.45745e-07 insert BottomBaryonVector:MaximumWeight 47 1.08706e-06 insert BottomBaryonVector:MaximumWeight 48 1.02367e-06 insert BottomBaryonVector:MaximumWeight 49 0.000112858 insert BottomBaryonVector:MaximumWeight 50 4.79645e-08 insert BottomBaryonVector:MaximumWeight 51 4.13834e-05 insert BottomBaryonVector:MaximumWeight 52 3.74634e-05 insert BottomBaryonVector:MaximumWeight 53 3.46681e-07 insert BottomBaryonVector:MaximumWeight 54 1.0836e-06 insert BottomBaryonVector:MaximumWeight 55 1.02634e-06 insert BottomBaryonVector:MaximumWeight 56 0.000113141 insert BottomBaryonVector:MaximumWeight 57 4.80722e-08 insert BottomBaryonVector:MaximumWeight 58 4.14795e-05 insert BottomBaryonVector:MaximumWeight 59 3.75666e-05 insert BottomBaryonVector:MaximumWeight 60 8.25592e-08 insert BottomBaryonVector:MaximumWeight 61 2.59006e-07 insert BottomBaryonVector:MaximumWeight 62 2.44365e-07 insert BottomBaryonVector:MaximumWeight 63 2.69568e-05 insert BottomBaryonVector:MaximumWeight 64 1.1447e-08 insert BottomBaryonVector:MaximumWeight 65 9.97623e-06 insert BottomBaryonVector:MaximumWeight 66 9.23672e-06 insert BottomBaryonVector:MaximumWeight 67 0.05 insert BottomBaryonVector:MaximumWeight 68 0.00425156 insert BottomBaryonVector:MaximumWeight 69 0.15 insert BottomBaryonVector:MaximumWeight 70 0.00155878 insert BottomBaryonVector:MaximumWeight 71 0.041 insert BottomBaryonVector:MaximumWeight 72 0.0119752 insert BottomBaryonVector:MaximumWeight 73 4.20717e-07 insert BottomBaryonVector:MaximumWeight 74 1.29436e-06 insert BottomBaryonVector:MaximumWeight 75 1.16536e-06 insert BottomBaryonVector:MaximumWeight 76 0.000100101 insert BottomBaryonVector:MaximumWeight 77 4.25338e-08 insert BottomBaryonVector:MaximumWeight 78 2.30658e-05 insert BottomBaryonVector:MaximumWeight 79 1.52993e-05 insert BottomBaryonVector:MaximumWeight 80 0.0225479 insert BottomBaryonVector:MaximumWeight 81 0.00340359 insert BottomBaryonVector:MaximumWeight 82 0.0670545 insert BottomBaryonVector:MaximumWeight 83 0.00207781 insert BottomBaryonVector:MaximumWeight 84 0.0485642 insert BottomBaryonVector:MaximumWeight 85 0.0249597 insert BottomBaryonVector:MaximumWeight 86 5.19428e-08 insert BottomBaryonVector:MaximumWeight 87 1.602e-07 insert BottomBaryonVector:MaximumWeight 88 1.55161e-07 insert BottomBaryonVector:MaximumWeight 89 2.07183e-05 insert BottomBaryonVector:MaximumWeight 90 3.13573e-06 insert BottomBaryonVector:MaximumWeight 91 0.006 insert BottomBaryonVector:MaximumWeight 92 0.00355305 insert BottomBaryonVector:MaximumWeight 93 2.20399e-06 insert BottomBaryonVector:MaximumWeight 94 4.56021e-06 insert BottomBaryonVector:MaximumWeight 95 6.2865e-06 insert BottomBaryonVector:MaximumWeight 96 0.000590819 insert BottomBaryonVector:MaximumWeight 97 2.72562e-07 insert BottomBaryonVector:MaximumWeight 98 0.000250635 insert BottomBaryonVector:MaximumWeight 99 0.000233231 insert BottomBaryonVector:MaximumWeight 100 0.0666776 insert BottomBaryonVector:MaximumWeight 101 0.00385387 insert BottomBaryonVector:MaximumWeight 102 0.00895393 insert BottomBaryonVector:MaximumWeight 103 0.000482572 insert BottomBaryonVector:MaximumWeight 104 0.000972852 insert BottomBaryonVector:MaximumWeight 105 0.00180393 insert BottomBaryonVector:MaximumWeight 106 6.10446e-05 insert BottomBaryonVector:MaximumWeight 107 0.0217848 insert BottomBaryonVector:MaximumWeight 108 0.000128913 insert BottomBaryonVector:MaximumWeight 109 0.0832288 insert BottomBaryonVector:MaximumWeight 110 0.00593006 insert BottomBaryonVector:MaximumWeight 111 0.0408944 insert BottomBaryonVector:MaximumWeight 112 0.203886 insert BottomBaryonVector:MaximumWeight 113 0.0137325 insert BottomBaryonVector:MaximumWeight 114 0.0871771 insert BottomBaryonVector:MaximumWeight 115 0.0520421 insert BottomBaryonVector:MaximumWeight 116 0.00349373 insert BottomBaryonVector:MaximumWeight 117 0.0220737 create Herwig::VectorMesonCurrent BottomBaryonVectorCurrent newdef BottomBaryonVectorCurrent:ID 0 213 newdef BottomBaryonVectorCurrent:Decay_Constant 0 0.16632 newdef BottomBaryonVectorCurrent:ID 1 113 newdef BottomBaryonVectorCurrent:Decay_Constant 1 0.16632 newdef BottomBaryonVectorCurrent:ID 2 113 newdef BottomBaryonVectorCurrent:Decay_Constant 2 0.16632 newdef BottomBaryonVectorCurrent:ID 3 223 newdef BottomBaryonVectorCurrent:Decay_Constant 3 0.1764 newdef BottomBaryonVectorCurrent:ID 4 223 newdef BottomBaryonVectorCurrent:Decay_Constant 4 0.1764 newdef BottomBaryonVectorCurrent:ID 5 333 newdef BottomBaryonVectorCurrent:Decay_Constant 5 0.238 newdef BottomBaryonVectorCurrent:ID 6 313 newdef BottomBaryonVectorCurrent:Decay_Constant 6 0.2019 newdef BottomBaryonVectorCurrent:ID 7 323 newdef BottomBaryonVectorCurrent:Decay_Constant 7 0.2019 newdef BottomBaryonVectorCurrent:ID 8 20213 newdef BottomBaryonVectorCurrent:Decay_Constant 8 0.4626 newdef BottomBaryonVectorCurrent:ID 9 20113 newdef BottomBaryonVectorCurrent:Decay_Constant 9 0.4626 newdef BottomBaryonVectorCurrent:ID 10 20113 newdef BottomBaryonVectorCurrent:Decay_Constant 10 0.4626 newdef BottomBaryonVectorCurrent:ID 11 413 newdef BottomBaryonVectorCurrent:Decay_Constant 11 0.402 newdef BottomBaryonVectorCurrent:ID 12 423 newdef BottomBaryonVectorCurrent:Decay_Constant 12 0.402 newdef BottomBaryonVectorCurrent:ID 13 433 newdef BottomBaryonVectorCurrent:Decay_Constant 13 0.509 newdef BottomBaryonVectorCurrent:ID 14 443 newdef BottomBaryonVectorCurrent:Decay_Constant 14 1.223 newdef BottomBaryonVectorCurrent:ID 15 100443 newdef BottomBaryonVectorCurrent:Decay_Constant 15 1.08 newdef BottomBaryonVectorCurrent:ID 16 10433 newdef BottomBaryonVectorCurrent:Decay_Constant 16 0.397 newdef BottomBaryonVectorCurrent:Quark 0 2 newdef BottomBaryonVectorCurrent:AntiQuark 0 -1 newdef BottomBaryonVectorCurrent:Quark 1 1 newdef BottomBaryonVectorCurrent:AntiQuark 1 -1 newdef BottomBaryonVectorCurrent:Quark 2 2 newdef BottomBaryonVectorCurrent:AntiQuark 2 -2 newdef BottomBaryonVectorCurrent:Quark 3 1 newdef BottomBaryonVectorCurrent:AntiQuark 3 -1 newdef BottomBaryonVectorCurrent:Quark 4 2 newdef BottomBaryonVectorCurrent:AntiQuark 4 -2 newdef BottomBaryonVectorCurrent:Quark 5 3 newdef BottomBaryonVectorCurrent:AntiQuark 5 -3 newdef BottomBaryonVectorCurrent:Quark 6 1 newdef BottomBaryonVectorCurrent:AntiQuark 6 -3 newdef BottomBaryonVectorCurrent:Quark 7 2 newdef BottomBaryonVectorCurrent:AntiQuark 7 -3 newdef BottomBaryonVectorCurrent:Quark 8 2 newdef BottomBaryonVectorCurrent:AntiQuark 8 -1 newdef BottomBaryonVectorCurrent:Quark 9 1 newdef BottomBaryonVectorCurrent:AntiQuark 9 -1 newdef BottomBaryonVectorCurrent:Quark 10 2 newdef BottomBaryonVectorCurrent:AntiQuark 10 -2 newdef BottomBaryonVectorCurrent:Quark 11 4 newdef BottomBaryonVectorCurrent:AntiQuark 11 -1 newdef BottomBaryonVectorCurrent:Quark 12 4 newdef BottomBaryonVectorCurrent:AntiQuark 12 -2 newdef BottomBaryonVectorCurrent:Quark 13 4 newdef BottomBaryonVectorCurrent:AntiQuark 13 -3 newdef BottomBaryonVectorCurrent:Quark 14 4 newdef BottomBaryonVectorCurrent:AntiQuark 14 -4 newdef BottomBaryonVectorCurrent:Quark 15 4 newdef BottomBaryonVectorCurrent:AntiQuark 15 -4 newdef BottomBaryonVectorCurrent:Quark 16 4 newdef BottomBaryonVectorCurrent:AntiQuark 16 -3 newdef BottomBaryonVector:Current BottomBaryonVectorCurrent create Herwig::ChengHeavyBaryonFormFactor BottomBaryonVectorForm newdef BottomBaryonVectorForm:DownMass 0.322 newdef BottomBaryonVectorForm:UpMass 0.338 newdef BottomBaryonVectorForm:StrangeMass 0.51 newdef BottomBaryonVectorForm:CharmMass 1.6 newdef BottomBaryonVectorForm:BottomMass 5 newdef BottomBaryonVectorForm:VectorMassbc 6.34 newdef BottomBaryonVectorForm:AxialMassbc 6.73 newdef BottomBaryonVectorForm:VectorMassbs 5.42 newdef BottomBaryonVectorForm:AxialMassbs 5.86 newdef BottomBaryonVectorForm:VectorMassbd 5.32 newdef BottomBaryonVectorForm:AxialMassbd 5.71 newdef BottomBaryonVectorForm:VectorMasscs 2.11 newdef BottomBaryonVectorForm:AxialMasscs 2.54 newdef BottomBaryonVectorForm:VectorMasscu 2.01 newdef BottomBaryonVectorForm:AxialMasscu 2.42 newdef BottomBaryonVectorForm:Nfi 0 1 newdef BottomBaryonVectorForm:Eta 0 1 newdef BottomBaryonVectorForm:Nfi 1 0.57735 newdef BottomBaryonVectorForm:Eta 1 1 newdef BottomBaryonVectorForm:Nfi 2 0.707107 newdef BottomBaryonVectorForm:Eta 2 1 newdef BottomBaryonVectorForm:Nfi 3 1 newdef BottomBaryonVectorForm:Eta 3 1 newdef BottomBaryonVectorForm:Nfi 4 1 newdef BottomBaryonVectorForm:Eta 4 1 newdef BottomBaryonVectorForm:Nfi 5 0.707107 newdef BottomBaryonVectorForm:Eta 5 1 newdef BottomBaryonVectorForm:Nfi 6 0.707107 newdef BottomBaryonVectorForm:Eta 6 1 newdef BottomBaryonVectorForm:Nfi 7 0.5 newdef BottomBaryonVectorForm:Eta 7 1 newdef BottomBaryonVectorForm:Nfi 8 0.5 newdef BottomBaryonVectorForm:Eta 8 1 newdef BottomBaryonVectorForm:Nfi 9 0.288675 newdef BottomBaryonVectorForm:Eta 9 1 newdef BottomBaryonVectorForm:Nfi 10 1 newdef BottomBaryonVectorForm:Eta 10 -0.333333 newdef BottomBaryonVectorForm:Nfi 11 0.57735 newdef BottomBaryonVectorForm:Eta 11 -0.333333 newdef BottomBaryonVectorForm:Nfi 12 1 newdef BottomBaryonVectorForm:Eta 12 0 newdef BottomBaryonVectorForm:Nfi 13 1 newdef BottomBaryonVectorForm:Eta 13 0 newdef BottomBaryonVectorForm:Nfi 14 0.57735 newdef BottomBaryonVectorForm:Eta 14 0 newdef BottomBaryonVectorForm:Nfi 15 1 newdef BottomBaryonVectorForm:Eta 15 0 newdef BottomBaryonVectorForm:Nfi 16 0.57735 newdef BottomBaryonVectorForm:Eta 16 0 newdef BottomBaryonVectorForm:Nfi 17 0.57735 newdef BottomBaryonVectorForm:Eta 17 1 newdef BottomBaryonVectorForm:Nfi 18 0.57735 newdef BottomBaryonVectorForm:Eta 18 1 newdef BottomBaryonVectorForm:Nfi 19 0.57735 newdef BottomBaryonVectorForm:Eta 19 1 newdef BottomBaryonVectorForm:Incoming 0 5122 newdef BottomBaryonVectorForm:Outgoing 0 4122 newdef BottomBaryonVectorForm:InSpin 0 2 newdef BottomBaryonVectorForm:OutSpin 0 2 newdef BottomBaryonVectorForm:Spectator1 0 1 newdef BottomBaryonVectorForm:Spectator2 0 2 newdef BottomBaryonVectorForm:InQuark 0 5 newdef BottomBaryonVectorForm:OutQuark 0 4 newdef BottomBaryonVectorForm:Incoming 1 5122 newdef BottomBaryonVectorForm:Outgoing 1 3122 newdef BottomBaryonVectorForm:InSpin 1 2 newdef BottomBaryonVectorForm:OutSpin 1 2 newdef BottomBaryonVectorForm:Spectator1 1 1 newdef BottomBaryonVectorForm:Spectator2 1 2 newdef BottomBaryonVectorForm:InQuark 1 5 newdef BottomBaryonVectorForm:OutQuark 1 3 newdef BottomBaryonVectorForm:Incoming 2 5122 newdef BottomBaryonVectorForm:Outgoing 2 2112 newdef BottomBaryonVectorForm:InSpin 2 2 newdef BottomBaryonVectorForm:OutSpin 2 2 newdef BottomBaryonVectorForm:Spectator1 2 1 newdef BottomBaryonVectorForm:Spectator2 2 2 newdef BottomBaryonVectorForm:InQuark 2 5 newdef BottomBaryonVectorForm:OutQuark 2 1 newdef BottomBaryonVectorForm:Incoming 3 5232 newdef BottomBaryonVectorForm:Outgoing 3 4232 newdef BottomBaryonVectorForm:InSpin 3 2 newdef BottomBaryonVectorForm:OutSpin 3 2 newdef BottomBaryonVectorForm:Spectator1 3 2 newdef BottomBaryonVectorForm:Spectator2 3 3 newdef BottomBaryonVectorForm:InQuark 3 5 newdef BottomBaryonVectorForm:OutQuark 3 4 newdef BottomBaryonVectorForm:Incoming 4 5132 newdef BottomBaryonVectorForm:Outgoing 4 4132 newdef BottomBaryonVectorForm:InSpin 4 2 newdef BottomBaryonVectorForm:OutSpin 4 2 newdef BottomBaryonVectorForm:Spectator1 4 1 newdef BottomBaryonVectorForm:Spectator2 4 3 newdef BottomBaryonVectorForm:InQuark 4 5 newdef BottomBaryonVectorForm:OutQuark 4 4 newdef BottomBaryonVectorForm:Incoming 5 5232 newdef BottomBaryonVectorForm:Outgoing 5 3322 newdef BottomBaryonVectorForm:InSpin 5 2 newdef BottomBaryonVectorForm:OutSpin 5 2 newdef BottomBaryonVectorForm:Spectator1 5 2 newdef BottomBaryonVectorForm:Spectator2 5 3 newdef BottomBaryonVectorForm:InQuark 5 5 newdef BottomBaryonVectorForm:OutQuark 5 3 newdef BottomBaryonVectorForm:Incoming 6 5132 newdef BottomBaryonVectorForm:Outgoing 6 3312 newdef BottomBaryonVectorForm:InSpin 6 2 newdef BottomBaryonVectorForm:OutSpin 6 2 newdef BottomBaryonVectorForm:Spectator1 6 1 newdef BottomBaryonVectorForm:Spectator2 6 3 newdef BottomBaryonVectorForm:InQuark 6 5 newdef BottomBaryonVectorForm:OutQuark 6 3 newdef BottomBaryonVectorForm:Incoming 7 5232 newdef BottomBaryonVectorForm:Outgoing 7 3212 newdef BottomBaryonVectorForm:InSpin 7 2 newdef BottomBaryonVectorForm:OutSpin 7 2 newdef BottomBaryonVectorForm:Spectator1 7 2 newdef BottomBaryonVectorForm:Spectator2 7 3 newdef BottomBaryonVectorForm:InQuark 7 5 newdef BottomBaryonVectorForm:OutQuark 7 1 newdef BottomBaryonVectorForm:Incoming 8 5132 newdef BottomBaryonVectorForm:Outgoing 8 3112 newdef BottomBaryonVectorForm:InSpin 8 2 newdef BottomBaryonVectorForm:OutSpin 8 2 newdef BottomBaryonVectorForm:Spectator1 8 1 newdef BottomBaryonVectorForm:Spectator2 8 3 newdef BottomBaryonVectorForm:InQuark 8 5 newdef BottomBaryonVectorForm:OutQuark 8 1 newdef BottomBaryonVectorForm:Incoming 9 5232 newdef BottomBaryonVectorForm:Outgoing 9 3122 newdef BottomBaryonVectorForm:InSpin 9 2 newdef BottomBaryonVectorForm:OutSpin 9 2 newdef BottomBaryonVectorForm:Spectator1 9 2 newdef BottomBaryonVectorForm:Spectator2 9 3 newdef BottomBaryonVectorForm:InQuark 9 5 newdef BottomBaryonVectorForm:OutQuark 9 1 newdef BottomBaryonVectorForm:Incoming 10 5332 newdef BottomBaryonVectorForm:Outgoing 10 4332 newdef BottomBaryonVectorForm:InSpin 10 2 newdef BottomBaryonVectorForm:OutSpin 10 2 newdef BottomBaryonVectorForm:Spectator1 10 3 newdef BottomBaryonVectorForm:Spectator2 10 3 newdef BottomBaryonVectorForm:InQuark 10 5 newdef BottomBaryonVectorForm:OutQuark 10 4 newdef BottomBaryonVectorForm:Incoming 11 5332 newdef BottomBaryonVectorForm:Outgoing 11 3312 newdef BottomBaryonVectorForm:InSpin 11 2 newdef BottomBaryonVectorForm:OutSpin 11 2 newdef BottomBaryonVectorForm:Spectator1 11 3 newdef BottomBaryonVectorForm:Spectator2 11 3 newdef BottomBaryonVectorForm:InQuark 11 5 newdef BottomBaryonVectorForm:OutQuark 11 1 newdef BottomBaryonVectorForm:Incoming 12 5332 newdef BottomBaryonVectorForm:Outgoing 12 4334 newdef BottomBaryonVectorForm:InSpin 12 2 newdef BottomBaryonVectorForm:OutSpin 12 4 newdef BottomBaryonVectorForm:Spectator1 12 3 newdef BottomBaryonVectorForm:Spectator2 12 3 newdef BottomBaryonVectorForm:InQuark 12 5 newdef BottomBaryonVectorForm:OutQuark 12 4 newdef BottomBaryonVectorForm:Incoming 13 5332 newdef BottomBaryonVectorForm:Outgoing 13 3334 newdef BottomBaryonVectorForm:InSpin 13 2 newdef BottomBaryonVectorForm:OutSpin 13 4 newdef BottomBaryonVectorForm:Spectator1 13 3 newdef BottomBaryonVectorForm:Spectator2 13 3 newdef BottomBaryonVectorForm:InQuark 13 5 newdef BottomBaryonVectorForm:OutQuark 13 3 newdef BottomBaryonVectorForm:Incoming 14 5332 newdef BottomBaryonVectorForm:Outgoing 14 3314 newdef BottomBaryonVectorForm:InSpin 14 2 newdef BottomBaryonVectorForm:OutSpin 14 4 newdef BottomBaryonVectorForm:Spectator1 14 3 newdef BottomBaryonVectorForm:Spectator2 14 3 newdef BottomBaryonVectorForm:InQuark 14 5 newdef BottomBaryonVectorForm:OutQuark 14 1 newdef BottomBaryonVectorForm:Incoming 15 4332 newdef BottomBaryonVectorForm:Outgoing 15 3334 newdef BottomBaryonVectorForm:InSpin 15 2 newdef BottomBaryonVectorForm:OutSpin 15 4 newdef BottomBaryonVectorForm:Spectator1 15 3 newdef BottomBaryonVectorForm:Spectator2 15 3 newdef BottomBaryonVectorForm:InQuark 15 4 newdef BottomBaryonVectorForm:OutQuark 15 3 newdef BottomBaryonVectorForm:Incoming 16 4332 newdef BottomBaryonVectorForm:Outgoing 16 3324 newdef BottomBaryonVectorForm:InSpin 16 2 newdef BottomBaryonVectorForm:OutSpin 16 4 newdef BottomBaryonVectorForm:Spectator1 16 3 newdef BottomBaryonVectorForm:Spectator2 16 3 newdef BottomBaryonVectorForm:InQuark 16 4 newdef BottomBaryonVectorForm:OutQuark 16 2 newdef BottomBaryonVectorForm:Incoming 17 4122 newdef BottomBaryonVectorForm:Outgoing 17 3122 newdef BottomBaryonVectorForm:InSpin 17 2 newdef BottomBaryonVectorForm:OutSpin 17 2 newdef BottomBaryonVectorForm:Spectator1 17 1 newdef BottomBaryonVectorForm:Spectator2 17 2 newdef BottomBaryonVectorForm:InQuark 17 4 newdef BottomBaryonVectorForm:OutQuark 17 3 newdef BottomBaryonVectorForm:Incoming 18 4232 newdef BottomBaryonVectorForm:Outgoing 18 3322 newdef BottomBaryonVectorForm:InSpin 18 2 newdef BottomBaryonVectorForm:OutSpin 18 2 newdef BottomBaryonVectorForm:Spectator1 18 2 newdef BottomBaryonVectorForm:Spectator2 18 3 newdef BottomBaryonVectorForm:InQuark 18 4 newdef BottomBaryonVectorForm:OutQuark 18 3 newdef BottomBaryonVectorForm:Incoming 19 4132 newdef BottomBaryonVectorForm:Outgoing 19 3312 newdef BottomBaryonVectorForm:InSpin 19 2 newdef BottomBaryonVectorForm:OutSpin 19 2 newdef BottomBaryonVectorForm:Spectator1 19 1 newdef BottomBaryonVectorForm:Spectator2 19 3 newdef BottomBaryonVectorForm:InQuark 19 4 newdef BottomBaryonVectorForm:OutQuark 19 3 newdef BottomBaryonVector:FormFactor BottomBaryonVectorForm # create Herwig::StrongHeavyBaryonDecayer HeavyStrong newdef HeavyStrong:Iteration 1 newdef HeavyStrong:Ntry 500 newdef HeavyStrong:Points 10000 newdef HeavyStrong:GenerateIntermediates 0 newdef HeavyStrong:gSigma_cLambda_cPi 8.88 newdef HeavyStrong:gXiStar_cXi_cPi 8.34 newdef HeavyStrong:fLambda_c1Sigma_cPi 0.52 newdef HeavyStrong:fXi_c1Xi_cPi 0.36 newdef HeavyStrong:fLambda_c1*Sigma_cPi 21.5 newdef HeavyStrong:fXi_c1*Xi_cPi 20 newdef HeavyStrong:gSigma_bLambda_bPi 8.88 newdef HeavyStrong:gXiStar_bXi_bPi 8.34 newdef HeavyStrong:fLambda_b1Sigma_bPi 0.52 newdef HeavyStrong:fXi_b1Xi_bPi 0.36 newdef HeavyStrong:fLambda_b1*Sigma_bPi 21.5 newdef HeavyStrong:fXi_b1*Xi_bPi 20 newdef HeavyStrong:Incoming 0 4222 newdef HeavyStrong:OutgoingB 0 4122 newdef HeavyStrong:OutgoingM 0 211 newdef HeavyStrong:ModeType 0 1 newdef HeavyStrong:MaxWeight 0 2.00656 newdef HeavyStrong:Incoming 1 4212 newdef HeavyStrong:OutgoingB 1 4122 newdef HeavyStrong:OutgoingM 1 111 newdef HeavyStrong:ModeType 1 1 newdef HeavyStrong:MaxWeight 1 2.32796 newdef HeavyStrong:Incoming 2 4112 newdef HeavyStrong:OutgoingB 2 4122 newdef HeavyStrong:OutgoingM 2 -211 newdef HeavyStrong:ModeType 2 1 newdef HeavyStrong:MaxWeight 2 2.00361 newdef HeavyStrong:Incoming 3 4224 newdef HeavyStrong:OutgoingB 3 4122 newdef HeavyStrong:OutgoingM 3 211 newdef HeavyStrong:ModeType 3 1 newdef HeavyStrong:MaxWeight 3 2.25125 newdef HeavyStrong:Incoming 4 4214 newdef HeavyStrong:OutgoingB 4 4122 newdef HeavyStrong:OutgoingM 4 111 newdef HeavyStrong:ModeType 4 1 newdef HeavyStrong:MaxWeight 4 2.16303 newdef HeavyStrong:Incoming 5 4114 newdef HeavyStrong:OutgoingB 5 4122 newdef HeavyStrong:OutgoingM 5 -211 newdef HeavyStrong:ModeType 5 1 newdef HeavyStrong:MaxWeight 5 2.06737 newdef HeavyStrong:Incoming 6 4324 newdef HeavyStrong:OutgoingB 6 4232 newdef HeavyStrong:OutgoingM 6 111 newdef HeavyStrong:ModeType 6 1 newdef HeavyStrong:MaxWeight 6 1.99324 newdef HeavyStrong:Incoming 7 4324 newdef HeavyStrong:OutgoingB 7 4132 newdef HeavyStrong:OutgoingM 7 211 newdef HeavyStrong:ModeType 7 1 newdef HeavyStrong:MaxWeight 7 1.50601 newdef HeavyStrong:Incoming 8 4314 newdef HeavyStrong:OutgoingB 8 4132 newdef HeavyStrong:OutgoingM 8 111 newdef HeavyStrong:ModeType 8 1 newdef HeavyStrong:MaxWeight 8 1.72816 newdef HeavyStrong:Incoming 9 4314 newdef HeavyStrong:OutgoingB 9 4232 newdef HeavyStrong:OutgoingM 9 -211 newdef HeavyStrong:ModeType 9 1 newdef HeavyStrong:MaxWeight 9 1.68833 newdef HeavyStrong:Incoming 10 14122 newdef HeavyStrong:OutgoingB 10 4222 newdef HeavyStrong:OutgoingM 10 -211 newdef HeavyStrong:ModeType 10 0 newdef HeavyStrong:MaxWeight 10 2.34015 newdef HeavyStrong:Incoming 11 14122 newdef HeavyStrong:OutgoingB 11 4212 newdef HeavyStrong:OutgoingM 11 111 newdef HeavyStrong:ModeType 11 0 newdef HeavyStrong:MaxWeight 11 5.25433 newdef HeavyStrong:Incoming 12 14122 newdef HeavyStrong:OutgoingB 12 4112 newdef HeavyStrong:OutgoingM 12 211 newdef HeavyStrong:ModeType 12 0 newdef HeavyStrong:MaxWeight 12 2.50106 newdef HeavyStrong:Incoming 13 4124 newdef HeavyStrong:OutgoingB 13 4222 newdef HeavyStrong:OutgoingM 13 -211 newdef HeavyStrong:ModeType 13 1 newdef HeavyStrong:MaxWeight 13 11.5795 newdef HeavyStrong:Incoming 14 4124 newdef HeavyStrong:OutgoingB 14 4212 newdef HeavyStrong:OutgoingM 14 111 newdef HeavyStrong:ModeType 14 1 newdef HeavyStrong:MaxWeight 14 13.7322 newdef HeavyStrong:Incoming 15 4124 newdef HeavyStrong:OutgoingB 15 4112 newdef HeavyStrong:OutgoingM 15 211 newdef HeavyStrong:ModeType 15 1 newdef HeavyStrong:MaxWeight 15 11.5641 newdef HeavyStrong:Incoming 16 5222 newdef HeavyStrong:OutgoingB 16 5122 newdef HeavyStrong:OutgoingM 16 211 newdef HeavyStrong:ModeType 16 1 newdef HeavyStrong:MaxWeight 16 1.60113 newdef HeavyStrong:Incoming 17 5212 newdef HeavyStrong:OutgoingB 17 5122 newdef HeavyStrong:OutgoingM 17 111 newdef HeavyStrong:ModeType 17 1 newdef HeavyStrong:MaxWeight 17 1.59965 newdef HeavyStrong:Incoming 18 5112 newdef HeavyStrong:OutgoingB 18 5122 newdef HeavyStrong:OutgoingM 18 -211 newdef HeavyStrong:ModeType 18 1 newdef HeavyStrong:MaxWeight 18 1.5982 newdef HeavyStrong:Incoming 19 5224 newdef HeavyStrong:OutgoingB 19 5122 newdef HeavyStrong:OutgoingM 19 211 newdef HeavyStrong:ModeType 19 1 newdef HeavyStrong:MaxWeight 19 1.5944 newdef HeavyStrong:Incoming 20 5214 newdef HeavyStrong:OutgoingB 20 5122 newdef HeavyStrong:OutgoingM 20 111 newdef HeavyStrong:ModeType 20 1 newdef HeavyStrong:MaxWeight 20 1.60103 newdef HeavyStrong:Incoming 21 5114 newdef HeavyStrong:OutgoingB 21 5122 newdef HeavyStrong:OutgoingM 21 -211 newdef HeavyStrong:ModeType 21 1 newdef HeavyStrong:MaxWeight 21 1.60585 newdef HeavyStrong:Incoming 22 5324 newdef HeavyStrong:OutgoingB 22 5232 newdef HeavyStrong:OutgoingM 22 111 newdef HeavyStrong:ModeType 22 1 newdef HeavyStrong:MaxWeight 22 1.88378 newdef HeavyStrong:Incoming 23 5324 newdef HeavyStrong:OutgoingB 23 5132 newdef HeavyStrong:OutgoingM 23 211 newdef HeavyStrong:ModeType 23 1 newdef HeavyStrong:MaxWeight 23 1.42109 newdef HeavyStrong:Incoming 24 5314 newdef HeavyStrong:OutgoingB 24 5132 newdef HeavyStrong:OutgoingM 24 111 newdef HeavyStrong:ModeType 24 1 newdef HeavyStrong:MaxWeight 24 1.63003 newdef HeavyStrong:Incoming 25 5314 newdef HeavyStrong:OutgoingB 25 5232 newdef HeavyStrong:OutgoingM 25 -211 newdef HeavyStrong:ModeType 25 1 newdef HeavyStrong:MaxWeight 25 1.59544 newdef HeavyStrong:Incoming 26 15122 newdef HeavyStrong:OutgoingB 26 5222 newdef HeavyStrong:OutgoingM 26 -211 newdef HeavyStrong:ModeType 26 0 newdef HeavyStrong:MaxWeight 26 4.22387 newdef HeavyStrong:Incoming 27 15122 newdef HeavyStrong:OutgoingB 27 5212 newdef HeavyStrong:OutgoingM 27 111 newdef HeavyStrong:ModeType 27 0 newdef HeavyStrong:MaxWeight 27 4.21194 newdef HeavyStrong:Incoming 28 15122 newdef HeavyStrong:OutgoingB 28 5112 newdef HeavyStrong:OutgoingM 28 211 newdef HeavyStrong:ModeType 28 0 newdef HeavyStrong:MaxWeight 28 1.96324 newdef HeavyStrong:Incoming 29 5124 newdef HeavyStrong:OutgoingB 29 5222 newdef HeavyStrong:OutgoingM 29 -211 newdef HeavyStrong:ModeType 29 2 newdef HeavyStrong:MaxWeight 29 0.107134 newdef HeavyStrong:Incoming 30 5124 newdef HeavyStrong:OutgoingB 30 5212 newdef HeavyStrong:OutgoingM 30 111 newdef HeavyStrong:ModeType 30 2 newdef HeavyStrong:MaxWeight 30 0.132231 newdef HeavyStrong:Incoming 31 5124 newdef HeavyStrong:OutgoingB 31 5112 newdef HeavyStrong:OutgoingM 31 211 newdef HeavyStrong:ModeType 31 2 newdef HeavyStrong:MaxWeight 31 0.0747326 newdef HeavyStrong:Incoming 32 14324 newdef HeavyStrong:OutgoingB 32 4322 newdef HeavyStrong:OutgoingM 32 111 newdef HeavyStrong:ModeType 32 2 newdef HeavyStrong:MaxWeight 32 1.50908 newdef HeavyStrong:Incoming 33 14324 newdef HeavyStrong:OutgoingB 33 4312 newdef HeavyStrong:OutgoingM 33 211 newdef HeavyStrong:ModeType 33 2 newdef HeavyStrong:MaxWeight 33 1.5594 newdef HeavyStrong:Incoming 34 14314 newdef HeavyStrong:OutgoingB 34 4312 newdef HeavyStrong:OutgoingM 34 111 newdef HeavyStrong:ModeType 34 2 newdef HeavyStrong:MaxWeight 34 1.48272 newdef HeavyStrong:Incoming 35 14314 newdef HeavyStrong:OutgoingB 35 4322 newdef HeavyStrong:OutgoingM 35 -211 newdef HeavyStrong:ModeType 35 2 newdef HeavyStrong:MaxWeight 35 1.75973 newdef HeavyStrong:Incoming 36 14324 newdef HeavyStrong:OutgoingB 36 4324 newdef HeavyStrong:OutgoingM 36 111 newdef HeavyStrong:ModeType 36 0 newdef HeavyStrong:MaxWeight 36 2.24229 newdef HeavyStrong:Incoming 37 14324 newdef HeavyStrong:OutgoingB 37 4314 newdef HeavyStrong:OutgoingM 37 211 newdef HeavyStrong:ModeType 37 0 newdef HeavyStrong:MaxWeight 37 2.09263 newdef HeavyStrong:Incoming 38 14314 newdef HeavyStrong:OutgoingB 38 4314 newdef HeavyStrong:OutgoingM 38 111 newdef HeavyStrong:ModeType 38 0 newdef HeavyStrong:MaxWeight 38 2.36559 newdef HeavyStrong:Incoming 39 14314 newdef HeavyStrong:OutgoingB 39 4324 newdef HeavyStrong:OutgoingM 39 -211 newdef HeavyStrong:ModeType 39 0 newdef HeavyStrong:MaxWeight 39 2.18137 newdef HeavyStrong:Incoming 40 14322 newdef HeavyStrong:OutgoingB 40 4322 newdef HeavyStrong:OutgoingM 40 111 newdef HeavyStrong:ModeType 40 0 newdef HeavyStrong:MaxWeight 40 1.56278 newdef HeavyStrong:Incoming 41 14322 newdef HeavyStrong:OutgoingB 41 4312 newdef HeavyStrong:OutgoingM 41 211 newdef HeavyStrong:ModeType 41 0 newdef HeavyStrong:MaxWeight 41 1.49557 newdef HeavyStrong:Incoming 42 14312 newdef HeavyStrong:OutgoingB 42 4312 newdef HeavyStrong:OutgoingM 42 111 newdef HeavyStrong:ModeType 42 0 newdef HeavyStrong:MaxWeight 42 1.56355 newdef HeavyStrong:Incoming 43 14312 newdef HeavyStrong:OutgoingB 43 4322 newdef HeavyStrong:OutgoingM 43 -211 newdef HeavyStrong:ModeType 43 0 newdef HeavyStrong:MaxWeight 43 1.55762 newdef HeavyStrong:Incoming 44 14322 newdef HeavyStrong:OutgoingB 44 4324 newdef HeavyStrong:OutgoingM 44 111 newdef HeavyStrong:ModeType 44 2 newdef HeavyStrong:MaxWeight 44 0.00928127 newdef HeavyStrong:Incoming 45 14322 newdef HeavyStrong:OutgoingB 45 4314 newdef HeavyStrong:OutgoingM 45 211 newdef HeavyStrong:ModeType 45 2 newdef HeavyStrong:MaxWeight 45 0.0125624 newdef HeavyStrong:Incoming 46 14312 newdef HeavyStrong:OutgoingB 46 4314 newdef HeavyStrong:OutgoingM 46 111 newdef HeavyStrong:ModeType 46 2 newdef HeavyStrong:MaxWeight 46 0.0120602 newdef HeavyStrong:Incoming 47 14312 newdef HeavyStrong:OutgoingB 47 4324 newdef HeavyStrong:OutgoingM 47 -211 newdef HeavyStrong:ModeType 47 2 newdef HeavyStrong:MaxWeight 47 0.0167952 newdef HeavyStrong:Incoming 48 15324 newdef HeavyStrong:OutgoingB 48 5322 newdef HeavyStrong:OutgoingM 48 111 newdef HeavyStrong:ModeType 48 2 newdef HeavyStrong:MaxWeight 48 1.87626 newdef HeavyStrong:Incoming 49 15324 newdef HeavyStrong:OutgoingB 49 5312 newdef HeavyStrong:OutgoingM 49 211 newdef HeavyStrong:ModeType 49 2 newdef HeavyStrong:MaxWeight 49 1.616 newdef HeavyStrong:Incoming 50 15314 newdef HeavyStrong:OutgoingB 50 5312 newdef HeavyStrong:OutgoingM 50 111 newdef HeavyStrong:ModeType 50 2 newdef HeavyStrong:MaxWeight 50 1.84227 newdef HeavyStrong:Incoming 51 15314 newdef HeavyStrong:OutgoingB 51 5322 newdef HeavyStrong:OutgoingM 51 -211 newdef HeavyStrong:ModeType 51 2 newdef HeavyStrong:MaxWeight 51 1.82865 newdef HeavyStrong:Incoming 52 15324 newdef HeavyStrong:OutgoingB 52 5324 newdef HeavyStrong:OutgoingM 52 111 newdef HeavyStrong:ModeType 52 0 newdef HeavyStrong:MaxWeight 52 2.77725 newdef HeavyStrong:Incoming 53 15324 newdef HeavyStrong:OutgoingB 53 5314 newdef HeavyStrong:OutgoingM 53 211 newdef HeavyStrong:ModeType 53 0 newdef HeavyStrong:MaxWeight 53 2.5378 newdef HeavyStrong:Incoming 54 15314 newdef HeavyStrong:OutgoingB 54 5314 newdef HeavyStrong:OutgoingM 54 111 newdef HeavyStrong:ModeType 54 0 newdef HeavyStrong:MaxWeight 54 2.93925 newdef HeavyStrong:Incoming 55 15314 newdef HeavyStrong:OutgoingB 55 5324 newdef HeavyStrong:OutgoingM 55 -211 newdef HeavyStrong:ModeType 55 0 newdef HeavyStrong:MaxWeight 55 2.69015 newdef HeavyStrong:Incoming 56 15322 newdef HeavyStrong:OutgoingB 56 5322 newdef HeavyStrong:OutgoingM 56 111 newdef HeavyStrong:ModeType 56 0 newdef HeavyStrong:MaxWeight 56 1.34628 newdef HeavyStrong:Incoming 57 15322 newdef HeavyStrong:OutgoingB 57 5312 newdef HeavyStrong:OutgoingM 57 211 newdef HeavyStrong:ModeType 57 0 newdef HeavyStrong:MaxWeight 57 1.28732 newdef HeavyStrong:Incoming 58 15312 newdef HeavyStrong:OutgoingB 58 5312 newdef HeavyStrong:OutgoingM 58 111 newdef HeavyStrong:ModeType 58 0 newdef HeavyStrong:MaxWeight 58 1.34676 newdef HeavyStrong:Incoming 59 15312 newdef HeavyStrong:OutgoingB 59 5322 newdef HeavyStrong:OutgoingM 59 -211 newdef HeavyStrong:ModeType 59 0 newdef HeavyStrong:MaxWeight 59 1.34286 newdef HeavyStrong:Incoming 60 15322 newdef HeavyStrong:OutgoingB 60 5324 newdef HeavyStrong:OutgoingM 60 111 newdef HeavyStrong:ModeType 60 2 newdef HeavyStrong:MaxWeight 60 0.00860417 newdef HeavyStrong:Incoming 61 15322 newdef HeavyStrong:OutgoingB 61 5314 newdef HeavyStrong:OutgoingM 61 211 newdef HeavyStrong:ModeType 61 2 newdef HeavyStrong:MaxWeight 61 0.0153272 newdef HeavyStrong:Incoming 62 15312 newdef HeavyStrong:OutgoingB 62 5314 newdef HeavyStrong:OutgoingM 62 111 newdef HeavyStrong:ModeType 62 2 newdef HeavyStrong:MaxWeight 62 0.0115148 newdef HeavyStrong:Incoming 63 15312 newdef HeavyStrong:OutgoingB 63 5324 newdef HeavyStrong:OutgoingM 63 -211 newdef HeavyStrong:ModeType 63 2 newdef HeavyStrong:MaxWeight 63 0.0153888 # create Herwig::SU3BaryonOctetOctetScalarDecayer SU3StrongRoper newdef SU3StrongRoper:Iteration 1 newdef SU3StrongRoper:Ntry 500 newdef SU3StrongRoper:Points 10000 newdef SU3StrongRoper:GenerateIntermediates 0 newdef SU3StrongRoper:Fcoupling 0.11 newdef SU3StrongRoper:Dcoupling 0.6 newdef SU3StrongRoper:Parity 1 newdef SU3StrongRoper:Fpi 130.7 newdef SU3StrongRoper:Proton 2212 newdef SU3StrongRoper:Neutron 2112 newdef SU3StrongRoper:Sigma+ 3222 newdef SU3StrongRoper:Sigma0 3212 newdef SU3StrongRoper:Sigma- 3112 newdef SU3StrongRoper:Lambda 3122 newdef SU3StrongRoper:Xi0 3322 newdef SU3StrongRoper:Xi- 3312 newdef SU3StrongRoper:ExcitedProton 12212 newdef SU3StrongRoper:ExcitedNeutron 12112 newdef SU3StrongRoper:ExcitedSigma+ 13222 newdef SU3StrongRoper:ExcitedSigma0 13212 newdef SU3StrongRoper:ExcitedSigma- 13112 newdef SU3StrongRoper:ExcitedLambda 23122 newdef SU3StrongRoper:ExcitedXi0 13322 newdef SU3StrongRoper:ExcitedXi- 13312 insert SU3StrongRoper:MaxWeight 0 1.80705 insert SU3StrongRoper:MaxWeight 1 1.83437 insert SU3StrongRoper:MaxWeight 2 0.626841 insert SU3StrongRoper:MaxWeight 3 0.315783 insert SU3StrongRoper:MaxWeight 4 0.0801244 insert SU3StrongRoper:MaxWeight 5 0.495582 insert SU3StrongRoper:MaxWeight 6 1.81893 insert SU3StrongRoper:MaxWeight 7 1.82169 insert SU3StrongRoper:MaxWeight 8 0.796182 insert SU3StrongRoper:MaxWeight 9 0.417085 insert SU3StrongRoper:MaxWeight 10 0.0805194 insert SU3StrongRoper:MaxWeight 11 0.473075 insert SU3StrongRoper:MaxWeight 12 1.67933 insert SU3StrongRoper:MaxWeight 13 1.69741 insert SU3StrongRoper:MaxWeight 14 1.601 insert SU3StrongRoper:MaxWeight 15 3.86444 insert SU3StrongRoper:MaxWeight 16 0.114795 insert SU3StrongRoper:MaxWeight 17 0.119024 insert SU3StrongRoper:MaxWeight 18 3.04579 insert SU3StrongRoper:MaxWeight 19 2.91748 insert SU3StrongRoper:MaxWeight 20 0.469575 insert SU3StrongRoper:MaxWeight 21 0.45577 insert SU3StrongRoper:MaxWeight 22 6.20849 insert SU3StrongRoper:MaxWeight 23 10.9318 insert SU3StrongRoper:MaxWeight 24 3.41669 insert SU3StrongRoper:MaxWeight 25 4.09249 insert SU3StrongRoper:MaxWeight 26 0.444487 insert SU3StrongRoper:MaxWeight 27 0.464752 insert SU3StrongRoper:MaxWeight 28 2.93537 insert SU3StrongRoper:MaxWeight 29 3.02507 insert SU3StrongRoper:MaxWeight 30 11.1723 insert SU3StrongRoper:MaxWeight 31 10.8365 insert SU3StrongRoper:MaxWeight 32 4.04486 insert SU3StrongRoper:MaxWeight 33 3.44034 insert SU3StrongRoper:MaxWeight 34 0.45577 insert SU3StrongRoper:MaxWeight 35 0.448599 insert SU3StrongRoper:MaxWeight 36 5.93298 insert SU3StrongRoper:MaxWeight 37 11.0765 insert SU3StrongRoper:MaxWeight 38 3.41669 insert SU3StrongRoper:MaxWeight 39 3.94553 insert SU3StrongRoper:MaxWeight 40 2.10871 insert SU3StrongRoper:MaxWeight 41 0.177081 insert SU3StrongRoper:MaxWeight 42 10.815 insert SU3StrongRoper:MaxWeight 43 5.22192 insert SU3StrongRoper:MaxWeight 44 0.225516 insert SU3StrongRoper:MaxWeight 45 0.46041 insert SU3StrongRoper:MaxWeight 46 1.59995 insert SU3StrongRoper:MaxWeight 47 10.3094 insert SU3StrongRoper:MaxWeight 48 5.47674 insert SU3StrongRoper:MaxWeight 49 0.210177 # create Herwig::SU3BaryonOctetOctetScalarDecayer SU3Strong2 newdef SU3Strong2:Iteration 1 newdef SU3Strong2:Ntry 500 newdef SU3Strong2:Points 10000 newdef SU3Strong2:GenerateIntermediates 0 newdef SU3Strong2:Fcoupling -0.33 newdef SU3Strong2:Dcoupling 0.6 newdef SU3Strong2:Parity 0 newdef SU3Strong2:Fpi 130.7 newdef SU3Strong2:Proton 2212 newdef SU3Strong2:Neutron 2112 newdef SU3Strong2:Sigma+ 3222 newdef SU3Strong2:Sigma0 3212 newdef SU3Strong2:Sigma- 3112 newdef SU3Strong2:Lambda 3122 newdef SU3Strong2:Xi0 3322 newdef SU3Strong2:Xi- 3312 newdef SU3Strong2:ExcitedProton 22212 newdef SU3Strong2:ExcitedNeutron 22112 newdef SU3Strong2:ExcitedSigma+ 23222 newdef SU3Strong2:ExcitedSigma0 23212 newdef SU3Strong2:ExcitedSigma- 23112 newdef SU3Strong2:ExcitedLambda 33122 newdef SU3Strong2:ExcitedXi0 23322 newdef SU3Strong2:ExcitedXi- 23312 insert SU3Strong2:MaxWeight 0 1.62119 insert SU3Strong2:MaxWeight 1 1.63297 insert SU3Strong2:MaxWeight 2 13.6826 insert SU3Strong2:MaxWeight 3 6.91591 insert SU3Strong2:MaxWeight 4 7.5876 insert SU3Strong2:MaxWeight 5 0.497088 insert SU3Strong2:MaxWeight 6 1.62475 insert SU3Strong2:MaxWeight 7 1.62009 insert SU3Strong2:MaxWeight 8 11.8384 insert SU3Strong2:MaxWeight 9 6.60507 insert SU3Strong2:MaxWeight 10 7.74213 insert SU3Strong2:MaxWeight 11 0.472179 insert SU3Strong2:MaxWeight 12 18.252 insert SU3Strong2:MaxWeight 13 18.5175 insert SU3Strong2:MaxWeight 14 17.7211 insert SU3Strong2:MaxWeight 15 11.4144 insert SU3Strong2:MaxWeight 16 11.7404 insert SU3Strong2:MaxWeight 17 11.9092 insert SU3Strong2:MaxWeight 18 7.03876 insert SU3Strong2:MaxWeight 19 6.94796 insert SU3Strong2:MaxWeight 20 8.3926 insert SU3Strong2:MaxWeight 21 8.33094 insert SU3Strong2:MaxWeight 22 1.70959 insert SU3Strong2:MaxWeight 23 52.0614 insert SU3Strong2:MaxWeight 24 13.5324 insert SU3Strong2:MaxWeight 25 3.05822 insert SU3Strong2:MaxWeight 26 8.14647 insert SU3Strong2:MaxWeight 27 8.37524 insert SU3Strong2:MaxWeight 28 0.841043 insert SU3Strong2:MaxWeight 29 0.854517 insert SU3Strong2:MaxWeight 30 52.3542 insert SU3Strong2:MaxWeight 31 51.8405 insert SU3Strong2:MaxWeight 32 2.9055 insert SU3Strong2:MaxWeight 33 13.5578 insert SU3Strong2:MaxWeight 34 8.27111 insert SU3Strong2:MaxWeight 35 8.18578 insert SU3Strong2:MaxWeight 36 1.63768 insert SU3Strong2:MaxWeight 37 52.1333 insert SU3Strong2:MaxWeight 38 13.5324 insert SU3Strong2:MaxWeight 39 1.94042 insert SU3Strong2:MaxWeight 40 8.1767 insert SU3Strong2:MaxWeight 41 4.11344 insert SU3Strong2:MaxWeight 42 48.938 insert SU3Strong2:MaxWeight 43 47.8208 insert SU3Strong2:MaxWeight 44 23.6554 insert SU3Strong2:MaxWeight 45 2.17309 insert SU3Strong2:MaxWeight 46 8.21707 insert SU3Strong2:MaxWeight 47 4.06565 insert SU3Strong2:MaxWeight 48 47.7349 insert SU3Strong2:MaxWeight 49 49.0244 insert SU3Strong2:MaxWeight 50 23.5405 insert SU3Strong2:MaxWeight 51 2.21665 # create Herwig::SU3BaryonDecupletOctetScalarDecayer SU3Decuplet newdef SU3Decuplet:Iteration 1 newdef SU3Decuplet:Ntry 500 newdef SU3Decuplet:Points 10000 newdef SU3Decuplet:GenerateIntermediates 0 newdef SU3Decuplet:Ccoupling 1.5 newdef SU3Decuplet:Parity 1 newdef SU3Decuplet:Fpi 92.4 newdef SU3Decuplet:Proton 2212 newdef SU3Decuplet:Neutron 2112 newdef SU3Decuplet:Sigma+ 3222 newdef SU3Decuplet:Sigma0 3212 newdef SU3Decuplet:Sigma- 3112 newdef SU3Decuplet:Lambda 3122 newdef SU3Decuplet:Xi0 3322 newdef SU3Decuplet:Xi- 3312 newdef SU3Decuplet:Delta++ 2224 newdef SU3Decuplet:Delta+ 2214 newdef SU3Decuplet:Delta0 2114 newdef SU3Decuplet:Delta- 1114 newdef SU3Decuplet:Sigma*+ 3224 newdef SU3Decuplet:Sigma*0 3214 newdef SU3Decuplet:Sigma*- 3114 newdef SU3Decuplet:Omega 3334 newdef SU3Decuplet:Xi*0 3324 newdef SU3Decuplet:Xi*- 3314 insert SU3Decuplet:MaxWeight 0 2.20000 insert SU3Decuplet:MaxWeight 1 4.52362 insert SU3Decuplet:MaxWeight 2 2.20000 insert SU3Decuplet:MaxWeight 3 2.20000 insert SU3Decuplet:MaxWeight 4 2.64073 insert SU3Decuplet:MaxWeight 5 1.44792 insert SU3Decuplet:MaxWeight 6 2.20000 insert SU3Decuplet:MaxWeight 7 2.20000 insert SU3Decuplet:MaxWeight 8 2.63609 insert SU3Decuplet:MaxWeight 9 1.41052 insert SU3Decuplet:MaxWeight 10 2.20000 insert SU3Decuplet:MaxWeight 11 4.06786 insert SU3Decuplet:MaxWeight 12 4.8 insert SU3Decuplet:MaxWeight 13 3.0 insert SU3Decuplet:MaxWeight 14 12.761 insert SU3Decuplet:MaxWeight 15 0.0169452 insert SU3Decuplet:MaxWeight 16 3.20000 insert SU3Decuplet:MaxWeight 17 6.30188 insert SU3Decuplet:MaxWeight 18 6.54799 insert SU3Decuplet:MaxWeight 19 3.0 insert SU3Decuplet:MaxWeight 20 3.8 insert SU3Decuplet:MaxWeight 21 4.8 insert SU3Decuplet:MaxWeight 22 0.0160214 insert SU3Decuplet:MaxWeight 23 2.40674 insert SU3Decuplet:MaxWeight 24 2.50209 insert SU3Decuplet:MaxWeight 25 14.29 insert SU3Decuplet:MaxWeight 26 2.44392 insert SU3Decuplet:MaxWeight 27 0.668873 insert SU3Decuplet:MaxWeight 28 4.2 insert SU3Decuplet:MaxWeight 29 5.2 insert SU3Decuplet:MaxWeight 30 0.356554 insert SU3Decuplet:MaxWeight 31 4.8 insert SU3Decuplet:MaxWeight 32 4.8 insert SU3Decuplet:MaxWeight 33 1.72199 # create Herwig::SU3BaryonOctetDecupletScalarDecayer SU3RoperDecuplet newdef SU3RoperDecuplet:Iteration 1 newdef SU3RoperDecuplet:Ntry 500 newdef SU3RoperDecuplet:Points 10000 newdef SU3RoperDecuplet:GenerateIntermediates 0 newdef SU3RoperDecuplet:Coupling 1.35 newdef SU3RoperDecuplet:Parity 1 newdef SU3RoperDecuplet:Fpi 130.7 newdef SU3RoperDecuplet:Proton 12212 newdef SU3RoperDecuplet:Neutron 12112 newdef SU3RoperDecuplet:Sigma+ 13222 newdef SU3RoperDecuplet:Sigma0 13212 newdef SU3RoperDecuplet:Sigma- 13112 newdef SU3RoperDecuplet:Lambda 23122 newdef SU3RoperDecuplet:Xi0 13322 newdef SU3RoperDecuplet:Xi- 13312 newdef SU3RoperDecuplet:Delta++ 2224 newdef SU3RoperDecuplet:Delta+ 2214 newdef SU3RoperDecuplet:Delta0 2114 newdef SU3RoperDecuplet:Delta- 1114 newdef SU3RoperDecuplet:Sigma*+ 3224 newdef SU3RoperDecuplet:Sigma*0 3214 newdef SU3RoperDecuplet:Sigma*- 3114 newdef SU3RoperDecuplet:Omega 3334 newdef SU3RoperDecuplet:Xi*0 3324 newdef SU3RoperDecuplet:Xi*- 3314 insert SU3RoperDecuplet:MaxWeight 0 2.56576 insert SU3RoperDecuplet:MaxWeight 1 84.0227 insert SU3RoperDecuplet:MaxWeight 2 2.56781 insert SU3RoperDecuplet:MaxWeight 3 2.73098 insert SU3RoperDecuplet:MaxWeight 4 56.7064 insert SU3RoperDecuplet:MaxWeight 5 28.0791 insert SU3RoperDecuplet:MaxWeight 6 2.57358 insert SU3RoperDecuplet:MaxWeight 7 2.72882 insert SU3RoperDecuplet:MaxWeight 8 57.6277 insert SU3RoperDecuplet:MaxWeight 9 28.2219 insert SU3RoperDecuplet:MaxWeight 10 2.56025 insert SU3RoperDecuplet:MaxWeight 11 74.9779 insert SU3RoperDecuplet:MaxWeight 12 16.1559 insert SU3RoperDecuplet:MaxWeight 13 14.0751 insert SU3RoperDecuplet:MaxWeight 14 0.791015 insert SU3RoperDecuplet:MaxWeight 15 0.00104774 insert SU3RoperDecuplet:MaxWeight 16 12.8492 insert SU3RoperDecuplet:MaxWeight 17 43.7074 insert SU3RoperDecuplet:MaxWeight 18 0.590208 insert SU3RoperDecuplet:MaxWeight 19 0.608962 insert SU3RoperDecuplet:MaxWeight 20 0.000397168 insert SU3RoperDecuplet:MaxWeight 21 0.000528759 insert SU3RoperDecuplet:MaxWeight 22 20.9576 insert SU3RoperDecuplet:MaxWeight 23 12.4322 insert SU3RoperDecuplet:MaxWeight 24 47.985 insert SU3RoperDecuplet:MaxWeight 25 38.7633 insert SU3RoperDecuplet:MaxWeight 26 12.8808 insert SU3RoperDecuplet:MaxWeight 27 22.1448 insert SU3RoperDecuplet:MaxWeight 28 1.10029 insert SU3RoperDecuplet:MaxWeight 29 0.000365739 insert SU3RoperDecuplet:MaxWeight 30 44.9148 insert SU3RoperDecuplet:MaxWeight 31 12.3086 insert SU3RoperDecuplet:MaxWeight 32 5.64695 insert SU3RoperDecuplet:MaxWeight 33 2.7869 insert SU3RoperDecuplet:MaxWeight 34 2.73645 insert SU3RoperDecuplet:MaxWeight 35 1.57765 insert SU3RoperDecuplet:MaxWeight 36 4.1449 insert SU3RoperDecuplet:MaxWeight 37 5.09824 insert SU3RoperDecuplet:MaxWeight 38 2.73002 insert SU3RoperDecuplet:MaxWeight 39 2.48197 insert SU3RoperDecuplet:MaxWeight 40 1.43915 insert SU3RoperDecuplet:MaxWeight 41 4.43562 # create Herwig::SU3BaryonOctetOctetScalarDecayer SU3Strong3 newdef SU3Strong3:Iteration 1 newdef SU3Strong3:Ntry 500 newdef SU3Strong3:Points 10000 newdef SU3Strong3:GenerateIntermediates 0 newdef SU3Strong3:Fcoupling -0.69 newdef SU3Strong3:Dcoupling 1.75 newdef SU3Strong3:Parity 1 newdef SU3Strong3:Fpi 130.7 newdef SU3Strong3:Proton 2212 newdef SU3Strong3:Neutron 2112 newdef SU3Strong3:Sigma+ 3222 newdef SU3Strong3:Sigma0 3212 newdef SU3Strong3:Sigma- 3112 newdef SU3Strong3:Lambda 3122 newdef SU3Strong3:Xi0 3322 newdef SU3Strong3:Xi- 3312 newdef SU3Strong3:ExcitedProton 2124 newdef SU3Strong3:ExcitedNeutron 1214 newdef SU3Strong3:ExcitedSigma+ 13224 newdef SU3Strong3:ExcitedSigma0 13214 newdef SU3Strong3:ExcitedSigma- 13114 newdef SU3Strong3:ExcitedLambda 13124 newdef SU3Strong3:ExcitedXi0 13324 newdef SU3Strong3:ExcitedXi- 13314 insert SU3Strong3:MaxWeight 0 3.76502 insert SU3Strong3:MaxWeight 1 3.80624 insert SU3Strong3:MaxWeight 2 15.886 insert SU3Strong3:MaxWeight 3 8.10483 insert SU3Strong3:MaxWeight 4 49.1548 insert SU3Strong3:MaxWeight 5 0.056859 insert SU3Strong3:MaxWeight 6 3.7818 insert SU3Strong3:MaxWeight 7 3.78946 insert SU3Strong3:MaxWeight 8 16.046 insert SU3Strong3:MaxWeight 9 8.07833 insert SU3Strong3:MaxWeight 10 46.8005 insert SU3Strong3:MaxWeight 11 0.0570574 insert SU3Strong3:MaxWeight 12 38.4119 insert SU3Strong3:MaxWeight 13 38.6815 insert SU3Strong3:MaxWeight 14 37.2037 insert SU3Strong3:MaxWeight 15 5.04034 insert SU3Strong3:MaxWeight 16 1.81489 insert SU3Strong3:MaxWeight 17 1.85277 insert SU3Strong3:MaxWeight 18 0.297424 insert SU3Strong3:MaxWeight 19 0.289611 insert SU3Strong3:MaxWeight 20 4.94361 insert SU3Strong3:MaxWeight 21 4.81691 insert SU3Strong3:MaxWeight 22 1.3823 insert SU3Strong3:MaxWeight 23 95.9447 insert SU3Strong3:MaxWeight 24 29.2431 insert SU3Strong3:MaxWeight 25 4.33187 insert SU3Strong3:MaxWeight 26 4.6988 insert SU3Strong3:MaxWeight 27 4.89784 insert SU3Strong3:MaxWeight 28 0.662332 insert SU3Strong3:MaxWeight 29 0.682562 insert SU3Strong3:MaxWeight 30 98.0671 insert SU3Strong3:MaxWeight 31 95.2452 insert SU3Strong3:MaxWeight 32 4.18468 insert SU3Strong3:MaxWeight 33 29.4475 insert SU3Strong3:MaxWeight 34 4.81691 insert SU3Strong3:MaxWeight 35 4.7443 insert SU3Strong3:MaxWeight 36 1.28206 insert SU3Strong3:MaxWeight 37 97.3651 insert SU3Strong3:MaxWeight 38 29.2431 insert SU3Strong3:MaxWeight 39 4.11443 insert SU3Strong3:MaxWeight 40 26.6185 insert SU3Strong3:MaxWeight 41 29.2309 insert SU3Strong3:MaxWeight 42 460.632 insert SU3Strong3:MaxWeight 43 450.193 insert SU3Strong3:MaxWeight 44 18.8397 insert SU3Strong3:MaxWeight 45 0.0169732 insert SU3Strong3:MaxWeight 46 30.2496 insert SU3Strong3:MaxWeight 47 28.0834 insert SU3Strong3:MaxWeight 48 446.415 insert SU3Strong3:MaxWeight 49 464.428 insert SU3Strong3:MaxWeight 50 18.3862 insert SU3Strong3:MaxWeight 51 0.0191169 # create Herwig::SU3BaryonOctetDecupletScalarDecayer SU3OctetDecuplet2 newdef SU3OctetDecuplet2:Iteration 1 newdef SU3OctetDecuplet2:Ntry 500 newdef SU3OctetDecuplet2:Points 10000 newdef SU3OctetDecuplet2:GenerateIntermediates 0 newdef SU3OctetDecuplet2:Coupling 0.085 newdef SU3OctetDecuplet2:Parity 1 newdef SU3OctetDecuplet2:Fpi 130.7 newdef SU3OctetDecuplet2:Proton 22212 newdef SU3OctetDecuplet2:Neutron 22112 newdef SU3OctetDecuplet2:Sigma+ 23222 newdef SU3OctetDecuplet2:Sigma0 23212 newdef SU3OctetDecuplet2:Sigma- 23112 newdef SU3OctetDecuplet2:Lambda 33122 newdef SU3OctetDecuplet2:Xi0 23322 newdef SU3OctetDecuplet2:Xi- 23312 newdef SU3OctetDecuplet2:Delta++ 2224 newdef SU3OctetDecuplet2:Delta+ 2214 newdef SU3OctetDecuplet2:Delta0 2114 newdef SU3OctetDecuplet2:Delta- 1114 newdef SU3OctetDecuplet2:Sigma*+ 3224 newdef SU3OctetDecuplet2:Sigma*0 3214 newdef SU3OctetDecuplet2:Sigma*- 3114 newdef SU3OctetDecuplet2:Omega 3334 newdef SU3OctetDecuplet2:Xi*0 3324 newdef SU3OctetDecuplet2:Xi*- 3314 insert SU3OctetDecuplet2:MaxWeight 0 2.32934 insert SU3OctetDecuplet2:MaxWeight 1 0.416437 insert SU3OctetDecuplet2:MaxWeight 2 2.32724 insert SU3OctetDecuplet2:MaxWeight 3 2.39008 insert SU3OctetDecuplet2:MaxWeight 4 0.288323 insert SU3OctetDecuplet2:MaxWeight 5 0.115812 insert SU3OctetDecuplet2:MaxWeight 6 2.32373 insert SU3OctetDecuplet2:MaxWeight 7 2.38921 insert SU3OctetDecuplet2:MaxWeight 8 0.281336 insert SU3OctetDecuplet2:MaxWeight 9 0.146149 insert SU3OctetDecuplet2:MaxWeight 10 2.32736 insert SU3OctetDecuplet2:MaxWeight 11 0.436271 insert SU3OctetDecuplet2:MaxWeight 12 0.101687 insert SU3OctetDecuplet2:MaxWeight 13 0.116201 insert SU3OctetDecuplet2:MaxWeight 14 0.0246518 insert SU3OctetDecuplet2:MaxWeight 15 0.748111 insert SU3OctetDecuplet2:MaxWeight 16 0.0736602 insert SU3OctetDecuplet2:MaxWeight 17 0.201734 insert SU3OctetDecuplet2:MaxWeight 18 0.00868203 insert SU3OctetDecuplet2:MaxWeight 19 0.00795239 insert SU3OctetDecuplet2:MaxWeight 20 0.362188 insert SU3OctetDecuplet2:MaxWeight 21 0.378257 insert SU3OctetDecuplet2:MaxWeight 22 0.0641479 insert SU3OctetDecuplet2:MaxWeight 23 0.08768 insert SU3OctetDecuplet2:MaxWeight 24 0.215179 insert SU3OctetDecuplet2:MaxWeight 25 0.302509 insert SU3OctetDecuplet2:MaxWeight 26 0.0757243 insert SU3OctetDecuplet2:MaxWeight 27 0.086701 insert SU3OctetDecuplet2:MaxWeight 28 0.0197644 insert SU3OctetDecuplet2:MaxWeight 29 0.83081 insert SU3OctetDecuplet2:MaxWeight 30 0.27337 insert SU3OctetDecuplet2:MaxWeight 31 0.0652819 insert SU3OctetDecuplet2:MaxWeight 32 0.644853 insert SU3OctetDecuplet2:MaxWeight 33 0.308066 insert SU3OctetDecuplet2:MaxWeight 34 0.0241458 insert SU3OctetDecuplet2:MaxWeight 35 0.00953046 insert SU3OctetDecuplet2:MaxWeight 36 0.438785 insert SU3OctetDecuplet2:MaxWeight 37 4.80464e-05 insert SU3OctetDecuplet2:MaxWeight 38 0.713118 insert SU3OctetDecuplet2:MaxWeight 39 0.298617 insert SU3OctetDecuplet2:MaxWeight 40 0.0186567 insert SU3OctetDecuplet2:MaxWeight 41 0.0109833 insert SU3OctetDecuplet2:MaxWeight 42 0.341691 insert SU3OctetDecuplet2:MaxWeight 43 5.03293e-05 # create Herwig::SU3BaryonSingletOctetScalarDecayer SU3SingletOctet1 newdef SU3SingletOctet1:Iteration 1 newdef SU3SingletOctet1:Ntry 500 newdef SU3SingletOctet1:Points 10000 newdef SU3SingletOctet1:GenerateIntermediates 0 newdef SU3SingletOctet1:Coupling 0.39 newdef SU3SingletOctet1:Parity 0 newdef SU3SingletOctet1:Fpi 130.7 newdef SU3SingletOctet1:Proton 2212 newdef SU3SingletOctet1:Neutron 2112 newdef SU3SingletOctet1:Sigma+ 3222 newdef SU3SingletOctet1:Sigma0 3212 newdef SU3SingletOctet1:Sigma- 3112 newdef SU3SingletOctet1:Lambda 3122 newdef SU3SingletOctet1:Xi0 3322 newdef SU3SingletOctet1:Xi- 3312 newdef SU3SingletOctet1:ExcitedLambda 13122 insert SU3SingletOctet1:MaxWeight 0 1.60862 insert SU3SingletOctet1:MaxWeight 1 1.65601 insert SU3SingletOctet1:MaxWeight 2 1.44904 insert SU3SingletOctet1:MaxWeight 3 10.9271 insert SU3SingletOctet1:MaxWeight 4 10.791 # create Herwig::SU3BaryonSingletOctetScalarDecayer SU3SingletOctet2 newdef SU3SingletOctet2:Iteration 1 newdef SU3SingletOctet2:Ntry 500 newdef SU3SingletOctet2:Points 10000 newdef SU3SingletOctet2:GenerateIntermediates 0 newdef SU3SingletOctet2:Coupling 1.5 newdef SU3SingletOctet2:Parity 0 newdef SU3SingletOctet2:Fpi 130.7 newdef SU3SingletOctet2:Proton 2212 newdef SU3SingletOctet2:Neutron 2112 newdef SU3SingletOctet2:Sigma+ 3222 newdef SU3SingletOctet2:Sigma0 3212 newdef SU3SingletOctet2:Sigma- 3112 newdef SU3SingletOctet2:Lambda 3122 newdef SU3SingletOctet2:Xi0 3322 newdef SU3SingletOctet2:Xi- 3312 newdef SU3SingletOctet2:ExcitedLambda 3124 insert SU3SingletOctet2:MaxWeight 0 1.84716 insert SU3SingletOctet2:MaxWeight 1 1.88647 insert SU3SingletOctet2:MaxWeight 2 1.63557 insert SU3SingletOctet2:MaxWeight 3 0.00132433 insert SU3SingletOctet2:MaxWeight 4 0.93801 insert SU3SingletOctet2:MaxWeight 5 0.80882 # create Herwig::SU3BaryonOctetOctetScalarDecayer SU3Strong4 newdef SU3Strong4:Iteration 1 newdef SU3Strong4:Ntry 500 newdef SU3Strong4:Points 10000 newdef SU3Strong4:GenerateIntermediates 0 newdef SU3Strong4:Fcoupling -0.48 newdef SU3Strong4:Dcoupling 0.68 newdef SU3Strong4:Parity 1 newdef SU3Strong4:Fpi 130.7 newdef SU3Strong4:Proton 12212 newdef SU3Strong4:Neutron 12112 newdef SU3Strong4:Sigma+ 13222 newdef SU3Strong4:Sigma0 13212 newdef SU3Strong4:Sigma- 13112 newdef SU3Strong4:Lambda 23122 newdef SU3Strong4:Xi0 13322 newdef SU3Strong4:Xi- 13312 newdef SU3Strong4:ExcitedProton 22212 newdef SU3Strong4:ExcitedNeutron 22112 newdef SU3Strong4:ExcitedSigma+ 23222 newdef SU3Strong4:ExcitedSigma0 23212 newdef SU3Strong4:ExcitedSigma- 23112 newdef SU3Strong4:ExcitedLambda 33122 newdef SU3Strong4:ExcitedXi0 23322 newdef SU3Strong4:ExcitedXi- 23312 insert SU3Strong4:MaxWeight 0 0.0639544 insert SU3Strong4:MaxWeight 1 0.0683901 insert SU3Strong4:MaxWeight 2 0.0719544 insert SU3Strong4:MaxWeight 3 0.0190191 insert SU3Strong4:MaxWeight 4 1.56023 insert SU3Strong4:MaxWeight 5 0.0352242 insert SU3Strong4:MaxWeight 6 0.063882 insert SU3Strong4:MaxWeight 7 0.0681114 insert SU3Strong4:MaxWeight 8 0.189404 insert SU3Strong4:MaxWeight 9 0.0737446 insert SU3Strong4:MaxWeight 10 1.43798 insert SU3Strong4:MaxWeight 11 0.0475399 insert SU3Strong4:MaxWeight 12 1.83818 insert SU3Strong4:MaxWeight 13 2.27413 insert SU3Strong4:MaxWeight 14 2.14365 insert SU3Strong4:MaxWeight 15 0.00257397 insert SU3Strong4:MaxWeight 16 0.439475 insert SU3Strong4:MaxWeight 17 0.494001 insert SU3Strong4:MaxWeight 18 3.83517 insert SU3Strong4:MaxWeight 19 3.9436 insert SU3Strong4:MaxWeight 20 0.00603613 insert SU3Strong4:MaxWeight 21 14.2647 insert SU3Strong4:MaxWeight 22 3.48259 insert SU3Strong4:MaxWeight 23 0.0893589 insert SU3Strong4:MaxWeight 24 3.94828 insert SU3Strong4:MaxWeight 25 3.98963 insert SU3Strong4:MaxWeight 26 0.00113937 insert SU3Strong4:MaxWeight 27 0.000501017 insert SU3Strong4:MaxWeight 28 4.56376 insert SU3Strong4:MaxWeight 29 6.14187 insert SU3Strong4:MaxWeight 30 0.119288 insert SU3Strong4:MaxWeight 31 3.62416 insert SU3Strong4:MaxWeight 32 3.74573 insert SU3Strong4:MaxWeight 33 2.9989 insert SU3Strong4:MaxWeight 34 0.00187852 insert SU3Strong4:MaxWeight 35 13.8324 insert SU3Strong4:MaxWeight 36 2.84881 insert SU3Strong4:MaxWeight 37 0.117276 insert SU3Strong4:MaxWeight 38 1.19996 insert SU3Strong4:MaxWeight 39 0.609627 insert SU3Strong4:MaxWeight 40 164.291 insert SU3Strong4:MaxWeight 41 84.1802 insert SU3Strong4:MaxWeight 42 27.2875 insert SU3Strong4:MaxWeight 43 2.56877 insert SU3Strong4:MaxWeight 44 1.25728 insert SU3Strong4:MaxWeight 45 0.647119 insert SU3Strong4:MaxWeight 46 187.091 insert SU3Strong4:MaxWeight 47 77.3773 insert SU3Strong4:MaxWeight 48 25.0159 insert SU3Strong4:MaxWeight 49 5.49723 # create Herwig::SU3BaryonOctetDecupletScalarDecayer SU3OctetDecuplet3 newdef SU3OctetDecuplet3:Iteration 1 newdef SU3OctetDecuplet3:Ntry 500 newdef SU3OctetDecuplet3:Points 10000 newdef SU3OctetDecuplet3:GenerateIntermediates 0 newdef SU3OctetDecuplet3:Coupling 0.35 newdef SU3OctetDecuplet3:Parity 1 newdef SU3OctetDecuplet3:Fpi 130.7 newdef SU3OctetDecuplet3:Proton 2124 newdef SU3OctetDecuplet3:Neutron 1214 newdef SU3OctetDecuplet3:Sigma+ 13224 newdef SU3OctetDecuplet3:Sigma0 13214 newdef SU3OctetDecuplet3:Sigma- 13114 newdef SU3OctetDecuplet3:Lambda 13124 newdef SU3OctetDecuplet3:Xi0 13324 newdef SU3OctetDecuplet3:Xi- 13314 newdef SU3OctetDecuplet3:Delta++ 2224 newdef SU3OctetDecuplet3:Delta+ 2214 newdef SU3OctetDecuplet3:Delta0 2114 newdef SU3OctetDecuplet3:Delta- 1114 newdef SU3OctetDecuplet3:Sigma*+ 3224 newdef SU3OctetDecuplet3:Sigma*0 3214 newdef SU3OctetDecuplet3:Sigma*- 3114 newdef SU3OctetDecuplet3:Omega 3334 newdef SU3OctetDecuplet3:Xi*0 3324 newdef SU3OctetDecuplet3:Xi*- 3314 insert SU3OctetDecuplet3:MaxWeight 0 1.08203 insert SU3OctetDecuplet3:MaxWeight 1 1.6621 insert SU3OctetDecuplet3:MaxWeight 2 1.08106 insert SU3OctetDecuplet3:MaxWeight 3 1.11398 insert SU3OctetDecuplet3:MaxWeight 4 1.13352 insert SU3OctetDecuplet3:MaxWeight 5 0.555956 insert SU3OctetDecuplet3:MaxWeight 6 1.08058 insert SU3OctetDecuplet3:MaxWeight 7 1.11181 insert SU3OctetDecuplet3:MaxWeight 8 1.10991 insert SU3OctetDecuplet3:MaxWeight 9 0.577804 insert SU3OctetDecuplet3:MaxWeight 10 1.08122 insert SU3OctetDecuplet3:MaxWeight 11 1.66787 insert SU3OctetDecuplet3:MaxWeight 12 0.511277 insert SU3OctetDecuplet3:MaxWeight 13 0.428777 insert SU3OctetDecuplet3:MaxWeight 14 0.262264 insert SU3OctetDecuplet3:MaxWeight 15 0.187729 insert SU3OctetDecuplet3:MaxWeight 16 0.0581627 insert SU3OctetDecuplet3:MaxWeight 17 1.16719 insert SU3OctetDecuplet3:MaxWeight 18 0.134985 insert SU3OctetDecuplet3:MaxWeight 19 0.132211 insert SU3OctetDecuplet3:MaxWeight 20 0.0842445 insert SU3OctetDecuplet3:MaxWeight 21 0.0831287 insert SU3OctetDecuplet3:MaxWeight 22 0.405935 insert SU3OctetDecuplet3:MaxWeight 23 0.429367 insert SU3OctetDecuplet3:MaxWeight 24 1.07034 insert SU3OctetDecuplet3:MaxWeight 25 1.26643 insert SU3OctetDecuplet3:MaxWeight 26 0.442732 insert SU3OctetDecuplet3:MaxWeight 27 0.385974 insert SU3OctetDecuplet3:MaxWeight 28 0.201153 insert SU3OctetDecuplet3:MaxWeight 29 0.15828 insert SU3OctetDecuplet3:MaxWeight 30 0.941479 insert SU3OctetDecuplet3:MaxWeight 31 0.0514224 insert SU3OctetDecuplet3:MaxWeight 32 2.16926 insert SU3OctetDecuplet3:MaxWeight 33 2.19241 insert SU3OctetDecuplet3:MaxWeight 34 3.46377e-07 insert SU3OctetDecuplet3:MaxWeight 35 8.02372e-08 insert SU3OctetDecuplet3:MaxWeight 36 1.97192 insert SU3OctetDecuplet3:MaxWeight 37 1.84709 insert SU3OctetDecuplet3:MaxWeight 38 1.3873e-08 insert SU3OctetDecuplet3:MaxWeight 39 3.14856e-07 # create Herwig::OmegaXiStarPionDecayer OmegaXiStar newdef OmegaXiStar:Iteration 1 newdef OmegaXiStar:Ntry 500 newdef OmegaXiStar:Points 10000 newdef OmegaXiStar:GenerateIntermediates 0 newdef OmegaXiStar:Acomm 2.091e-07 newdef OmegaXiStar:AP -9.2e-08 newdef OmegaXiStar:AS -6.32e-08 newdef OmegaXiStar:BP 2.301e-06 newdef OmegaXiStar:BS -1.008e-06 newdef OmegaXiStar:MaximumWeight 0.00252403 newdef OmegaXiStar:Incoming 3334 newdef OmegaXiStar:Outgoing 3324 # create Herwig::NonLeptonicOmegaDecayer OmegaNL newdef OmegaNL:DStar -3.98e-07 newdef OmegaNL:FStar 5e-08 newdef OmegaNL:omegad -6.44444e-09 newdef OmegaNL:omegaf 8.5e-09 newdef OmegaNL:CBstar 1.35 newdef OmegaNL:sc -0.85 newdef OmegaNL:C 1.5 newdef OmegaNL:Fpi 92.4 newdef OmegaNL:hc 3.9e-08 newdef OmegaNL:hpi 3.2e-07 newdef OmegaNL:d 4.4e-08 newdef OmegaNL:f -5e-08 newdef OmegaNL:MLambda 1115.68 newdef OmegaNL:MXi 1314.83 newdef OmegaNL:MOmega 1672.45 newdef OmegaNL:MXiStar 1531.8 newdef OmegaNL:Mpiplus 139.57 newdef OmegaNL:MKplus 493.667 newdef OmegaNL:Mpi0 134.977 newdef OmegaNL:MK0 497.648 newdef OmegaNL:MBstar 1620 newdef OmegaNL:MR 1500 newdef OmegaNL:LocalMasses 1 insert OmegaNL:MaxWeight 0 1.5 insert OmegaNL:MaxWeight 1 0.40 insert OmegaNL:MaxWeight 2 0.20 newdef OmegaNL:Iteration 1 newdef OmegaNL:Ntry 500 newdef OmegaNL:Points 10000 newdef OmegaNL:GenerateIntermediates 0 # create Herwig::NonLeptonicHyperonDecayer HyperonNL newdef HyperonNL:MaxWeight 0 1.1 newdef HyperonNL:IncomingBaryon 0 3122 newdef HyperonNL:OutgoingBaryon 0 2212 newdef HyperonNL:OutgoingMeson 0 -211 newdef HyperonNL:CouplingA 0 3.25e-07 newdef HyperonNL:CouplingB 0 -2.34e-06 newdef HyperonNL:MaxWeight 1 0.58 newdef HyperonNL:IncomingBaryon 1 3122 newdef HyperonNL:OutgoingBaryon 1 2112 newdef HyperonNL:OutgoingMeson 1 111 newdef HyperonNL:CouplingA 1 -2.3e-07 newdef HyperonNL:CouplingB 1 1.65e-06 newdef HyperonNL:MaxWeight 2 1.5818 newdef HyperonNL:IncomingBaryon 2 3312 newdef HyperonNL:OutgoingBaryon 2 3122 newdef HyperonNL:OutgoingMeson 2 -211 newdef HyperonNL:CouplingA 2 -4.51e-07 newdef HyperonNL:CouplingB 2 -1.48e-06 newdef HyperonNL:MaxWeight 3 1.36822 newdef HyperonNL:IncomingBaryon 3 3322 newdef HyperonNL:OutgoingBaryon 3 3122 newdef HyperonNL:OutgoingMeson 3 111 newdef HyperonNL:CouplingA 3 3.19e-07 newdef HyperonNL:CouplingB 3 1.05e-06 newdef HyperonNL:MaxWeight 4 1.15 newdef HyperonNL:IncomingBaryon 4 3222 newdef HyperonNL:OutgoingBaryon 4 2212 newdef HyperonNL:OutgoingMeson 4 111 newdef HyperonNL:CouplingA 4 -2.93e-07 newdef HyperonNL:CouplingB 4 -3.25e-06 newdef HyperonNL:MaxWeight 5 1.59923 newdef HyperonNL:IncomingBaryon 5 3112 newdef HyperonNL:OutgoingBaryon 5 2112 newdef HyperonNL:OutgoingMeson 5 -211 newdef HyperonNL:CouplingA 5 4.27e-07 newdef HyperonNL:CouplingB 5 1.52e-07 newdef HyperonNL:MaxWeight 6 0.859131 newdef HyperonNL:IncomingBaryon 6 3222 newdef HyperonNL:OutgoingBaryon 6 2112 newdef HyperonNL:OutgoingMeson 6 211 newdef HyperonNL:CouplingA 6 1.3e-08 newdef HyperonNL:CouplingB 6 -4.44e-06 newdef HyperonNL:Iteration 1 newdef HyperonNL:Ntry 500 newdef HyperonNL:Points 10000 newdef HyperonNL:GenerateIntermediates 0 # create Herwig::SU3BaryonOctetOctetPhotonDecayer SU3RoperGamma newdef SU3RoperGamma:Iteration 1 newdef SU3RoperGamma:Ntry 500 newdef SU3RoperGamma:Points 10000 newdef SU3RoperGamma:GenerateIntermediates 0 newdef SU3RoperGamma:Fcoupling -0.009 newdef SU3RoperGamma:Dcoupling -0.024 newdef SU3RoperGamma:Parity 1 newdef SU3RoperGamma:Proton 2212 newdef SU3RoperGamma:Neutron 2112 newdef SU3RoperGamma:Sigma+ 3222 newdef SU3RoperGamma:Sigma0 3212 newdef SU3RoperGamma:Sigma- 3112 newdef SU3RoperGamma:Lambda 3122 newdef SU3RoperGamma:Xi0 3322 newdef SU3RoperGamma:Xi- 3312 newdef SU3RoperGamma:ExcitedProton 12212 newdef SU3RoperGamma:ExcitedNeutron 12112 newdef SU3RoperGamma:ExcitedSigma+ 13222 newdef SU3RoperGamma:ExcitedSigma0 13212 newdef SU3RoperGamma:ExcitedSigma- 13112 newdef SU3RoperGamma:ExcitedLambda 23122 newdef SU3RoperGamma:ExcitedXi0 13322 newdef SU3RoperGamma:ExcitedXi- 13312 insert SU3RoperGamma:MaxWeight 0 1.34534 insert SU3RoperGamma:MaxWeight 1 2.3978 insert SU3RoperGamma:MaxWeight 2 0.01954 insert SU3RoperGamma:MaxWeight 3 0.00189107 insert SU3RoperGamma:MaxWeight 4 0.00998248 insert SU3RoperGamma:MaxWeight 5 0.000310286 insert SU3RoperGamma:MaxWeight 6 0.0310247 insert SU3RoperGamma:MaxWeight 7 0.024809 insert SU3RoperGamma:MaxWeight 8 5.2804e-05 insert SU3RoperGamma:MaxWeight 9 0.014572 # create Herwig::SU3BaryonOctetOctetPhotonDecayer SU3Gamma2 newdef SU3Gamma2:Iteration 1 newdef SU3Gamma2:Ntry 500 newdef SU3Gamma2:Points 10000 newdef SU3Gamma2:GenerateIntermediates 0 newdef SU3Gamma2:Fcoupling -0.046 newdef SU3Gamma2:Dcoupling 0.033 newdef SU3Gamma2:Parity 0 newdef SU3Gamma2:Proton 2212 newdef SU3Gamma2:Neutron 2112 newdef SU3Gamma2:Sigma+ 3222 newdef SU3Gamma2:Sigma0 3212 newdef SU3Gamma2:Sigma- 3112 newdef SU3Gamma2:Lambda 3122 newdef SU3Gamma2:Xi0 3322 newdef SU3Gamma2:Xi- 3312 newdef SU3Gamma2:ExcitedProton 22212 newdef SU3Gamma2:ExcitedNeutron 22112 newdef SU3Gamma2:ExcitedSigma+ 23222 newdef SU3Gamma2:ExcitedSigma0 23212 newdef SU3Gamma2:ExcitedSigma- 23112 newdef SU3Gamma2:ExcitedLambda 33122 newdef SU3Gamma2:ExcitedXi0 23322 newdef SU3Gamma2:ExcitedXi- 23312 insert SU3Gamma2:MaxWeight 0 2.9575 insert SU3Gamma2:MaxWeight 1 1.97747 insert SU3Gamma2:MaxWeight 2 0.0962338 insert SU3Gamma2:MaxWeight 3 0.00969098 insert SU3Gamma2:MaxWeight 4 0.0522884 insert SU3Gamma2:MaxWeight 5 0.00991625 insert SU3Gamma2:MaxWeight 6 0.0712376 insert SU3Gamma2:MaxWeight 7 0.0130695 insert SU3Gamma2:MaxWeight 8 0.36402 insert SU3Gamma2:MaxWeight 9 0.0548153 # create Herwig::SU3BaryonOctetOctetPhotonDecayer SU3Gamma3 newdef SU3Gamma3:Iteration 1 newdef SU3Gamma3:Ntry 500 newdef SU3Gamma3:Points 10000 newdef SU3Gamma3:GenerateIntermediates 0 newdef SU3Gamma3:Fcoupling 0 newdef SU3Gamma3:Dcoupling 0.056 newdef SU3Gamma3:Parity 1 newdef SU3Gamma3:Proton 2212 newdef SU3Gamma3:Neutron 2112 newdef SU3Gamma3:Sigma+ 3222 newdef SU3Gamma3:Sigma0 3212 newdef SU3Gamma3:Sigma- 3112 newdef SU3Gamma3:Lambda 3122 newdef SU3Gamma3:Xi0 3322 newdef SU3Gamma3:Xi- 3312 newdef SU3Gamma3:ExcitedProton 2212 newdef SU3Gamma3:ExcitedNeutron 2112 newdef SU3Gamma3:ExcitedSigma+ 3222 newdef SU3Gamma3:ExcitedSigma0 3212 newdef SU3Gamma3:ExcitedSigma- 3112 newdef SU3Gamma3:ExcitedLambda 3122 newdef SU3Gamma3:ExcitedXi0 3322 newdef SU3Gamma3:ExcitedXi- 3312 insert SU3Gamma3:MaxWeight 0 1.58351 # create Herwig::SU3BaryonDecupletOctetPhotonDecayer DecupletGamma newdef DecupletGamma:Iteration 1 newdef DecupletGamma:Ntry 500 newdef DecupletGamma:Points 10000 newdef DecupletGamma:GenerateIntermediates 0 newdef DecupletGamma:Ccoupling 1 newdef DecupletGamma:Parity 1 newdef DecupletGamma:Proton 2212 newdef DecupletGamma:Neutron 2112 newdef DecupletGamma:Sigma+ 3222 newdef DecupletGamma:Sigma0 3212 newdef DecupletGamma:Sigma- 3112 newdef DecupletGamma:Lambda 3122 newdef DecupletGamma:Xi0 3322 newdef DecupletGamma:Xi- 3312 newdef DecupletGamma:Delta++ 2224 newdef DecupletGamma:Delta+ 2214 newdef DecupletGamma:Delta0 2114 newdef DecupletGamma:Delta- 1114 newdef DecupletGamma:Sigma*+ 3224 newdef DecupletGamma:Sigma*0 3214 newdef DecupletGamma:Sigma*- 3114 newdef DecupletGamma:Omega 3334 newdef DecupletGamma:Xi*0 3324 newdef DecupletGamma:Xi*- 3314 insert DecupletGamma:MaxWeight 0 1.35551 insert DecupletGamma:MaxWeight 1 1.3398 insert DecupletGamma:MaxWeight 2 0.135728 insert DecupletGamma:MaxWeight 3 0.137064 insert DecupletGamma:MaxWeight 4 0.0331892 insert DecupletGamma:MaxWeight 5 0.122578 # create Herwig::SU3BaryonOctetOctetPhotonDecayer SU3Gamma4 newdef SU3Gamma4:Iteration 1 newdef SU3Gamma4:Ntry 500 newdef SU3Gamma4:Points 10000 newdef SU3Gamma4:GenerateIntermediates 0 newdef SU3Gamma4:Fcoupling -0.093 newdef SU3Gamma4:Dcoupling 0.087 newdef SU3Gamma4:Parity 1 newdef SU3Gamma4:Proton 2212 newdef SU3Gamma4:Neutron 2112 newdef SU3Gamma4:Sigma+ 3222 newdef SU3Gamma4:Sigma0 3212 newdef SU3Gamma4:Sigma- 3112 newdef SU3Gamma4:Lambda 3122 newdef SU3Gamma4:Xi0 3322 newdef SU3Gamma4:Xi- 3312 newdef SU3Gamma4:ExcitedProton 2124 newdef SU3Gamma4:ExcitedNeutron 1214 newdef SU3Gamma4:ExcitedSigma+ 13224 newdef SU3Gamma4:ExcitedSigma0 13214 newdef SU3Gamma4:ExcitedSigma- 13114 newdef SU3Gamma4:ExcitedLambda 13124 newdef SU3Gamma4:ExcitedXi0 13324 newdef SU3Gamma4:ExcitedXi- 13314 insert SU3Gamma4:MaxWeight 0 0.415222 insert SU3Gamma4:MaxWeight 1 0.417084 insert SU3Gamma4:MaxWeight 2 0.0204893 insert SU3Gamma4:MaxWeight 3 0.00210252 insert SU3Gamma4:MaxWeight 4 0.00955353 insert SU3Gamma4:MaxWeight 5 0.00222245 insert SU3Gamma4:MaxWeight 6 0.0283485 insert SU3Gamma4:MaxWeight 7 0.00715258 insert SU3Gamma4:MaxWeight 8 0.0517918 insert SU3Gamma4:MaxWeight 9 0.0120169 # create Herwig::SU3BaryonSingletOctetPhotonDecayer SU3Gamma5 newdef SU3Gamma5:Iteration 1 newdef SU3Gamma5:Ntry 500 newdef SU3Gamma5:Points 10000 newdef SU3Gamma5:GenerateIntermediates 0 newdef SU3Gamma5:Coupling 0.252 newdef SU3Gamma5:Parity 0 newdef SU3Gamma5:Sigma0 3212 newdef SU3Gamma5:Lambda 3122 newdef SU3Gamma5:ExcitedLambda 3124 insert SU3Gamma5:MaxWeight 0 1.60087 insert SU3Gamma5:MaxWeight 1 2.20194 # create Herwig::TauDecayer Tau1Vector newdef Tau1Vector:Iteration 1 newdef Tau1Vector:Ntry 500 newdef Tau1Vector:Points 10000 newdef Tau1Vector:GenerateIntermediates 0 insert Tau1Vector:WeightLocation 0 0 insert Tau1Vector:WeightLocation 1 0 insert Tau1Vector:WeightLocation 2 0 insert Tau1Vector:MaximumWeight 0 0.655878 insert Tau1Vector:MaximumWeight 1 0.0320164 insert Tau1Vector:MaximumWeight 2 1.05267 create Herwig::VectorMesonCurrent Tau1VectorCurrent HwWeakCurrents.so newdef Tau1VectorCurrent:ID 0 213 newdef Tau1VectorCurrent:Decay_Constant 0 0.1764 newdef Tau1VectorCurrent:ID 1 113 newdef Tau1VectorCurrent:Decay_Constant 1 0.1764 newdef Tau1VectorCurrent:ID 2 113 newdef Tau1VectorCurrent:Decay_Constant 2 0.1764 newdef Tau1VectorCurrent:ID 3 223 newdef Tau1VectorCurrent:Decay_Constant 3 0.1764 newdef Tau1VectorCurrent:ID 4 223 newdef Tau1VectorCurrent:Decay_Constant 4 0.1764 newdef Tau1VectorCurrent:ID 5 333 newdef Tau1VectorCurrent:Decay_Constant 5 0.238 newdef Tau1VectorCurrent:ID 6 313 newdef Tau1VectorCurrent:Decay_Constant 6 0.2019 newdef Tau1VectorCurrent:ID 7 323 newdef Tau1VectorCurrent:Decay_Constant 7 0.2019 newdef Tau1VectorCurrent:ID 8 20213 newdef Tau1VectorCurrent:Decay_Constant 8 0.4626 newdef Tau1VectorCurrent:ID 9 20113 newdef Tau1VectorCurrent:Decay_Constant 9 0.4626 newdef Tau1VectorCurrent:ID 10 20113 newdef Tau1VectorCurrent:Decay_Constant 10 0.4626 newdef Tau1VectorCurrent:ID 11 413 newdef Tau1VectorCurrent:Decay_Constant 11 0.402 newdef Tau1VectorCurrent:ID 12 423 newdef Tau1VectorCurrent:Decay_Constant 12 0.402 newdef Tau1VectorCurrent:ID 13 433 newdef Tau1VectorCurrent:Decay_Constant 13 0.509 newdef Tau1VectorCurrent:ID 14 443 newdef Tau1VectorCurrent:Decay_Constant 14 1.223 newdef Tau1VectorCurrent:ID 15 100443 newdef Tau1VectorCurrent:Decay_Constant 15 1.08 newdef Tau1VectorCurrent:ID 16 10433 newdef Tau1VectorCurrent:Decay_Constant 16 0.397 newdef Tau1VectorCurrent:Quark 0 2 newdef Tau1VectorCurrent:AntiQuark 0 -1 newdef Tau1VectorCurrent:Quark 1 1 newdef Tau1VectorCurrent:AntiQuark 1 -1 newdef Tau1VectorCurrent:Quark 2 2 newdef Tau1VectorCurrent:AntiQuark 2 -2 newdef Tau1VectorCurrent:Quark 3 1 newdef Tau1VectorCurrent:AntiQuark 3 -1 newdef Tau1VectorCurrent:Quark 4 2 newdef Tau1VectorCurrent:AntiQuark 4 -2 newdef Tau1VectorCurrent:Quark 5 3 newdef Tau1VectorCurrent:AntiQuark 5 -3 newdef Tau1VectorCurrent:Quark 6 1 newdef Tau1VectorCurrent:AntiQuark 6 -3 newdef Tau1VectorCurrent:Quark 7 2 newdef Tau1VectorCurrent:AntiQuark 7 -3 newdef Tau1VectorCurrent:Quark 8 2 newdef Tau1VectorCurrent:AntiQuark 8 -1 newdef Tau1VectorCurrent:Quark 9 1 newdef Tau1VectorCurrent:AntiQuark 9 -1 newdef Tau1VectorCurrent:Quark 10 2 newdef Tau1VectorCurrent:AntiQuark 10 -2 newdef Tau1VectorCurrent:Quark 11 4 newdef Tau1VectorCurrent:AntiQuark 11 -1 newdef Tau1VectorCurrent:Quark 12 4 newdef Tau1VectorCurrent:AntiQuark 12 -2 newdef Tau1VectorCurrent:Quark 13 4 newdef Tau1VectorCurrent:AntiQuark 13 -3 newdef Tau1VectorCurrent:Quark 14 4 newdef Tau1VectorCurrent:AntiQuark 14 -4 newdef Tau1VectorCurrent:Quark 15 4 newdef Tau1VectorCurrent:AntiQuark 15 -4 newdef Tau1VectorCurrent:Quark 16 4 newdef Tau1VectorCurrent:AntiQuark 16 -3 newdef Tau1Vector:WeakCurrent Tau1VectorCurrent # create Herwig::SemiLeptonicScalarDecayer BZVector newdef BZVector:Iteration 1 newdef BZVector:Ntry 500 newdef BZVector:Points 10000 newdef BZVector:GenerateIntermediates 1 insert BZVector:MaximumWeight 0 0.000599733 insert BZVector:MaximumWeight 1 0.000579422 insert BZVector:MaximumWeight 2 0.000339457 insert BZVector:MaximumWeight 3 0.00104623 insert BZVector:MaximumWeight 4 0.00103622 insert BZVector:MaximumWeight 5 0.000630363 insert BZVector:MaximumWeight 6 0.00128096 insert BZVector:MaximumWeight 7 0.00124115 insert BZVector:MaximumWeight 8 0.000739429 insert BZVector:MaximumWeight 9 0.0022 insert BZVector:MaximumWeight 10 0.0022 insert BZVector:MaximumWeight 11 0.00122368 create Herwig::LeptonNeutrinoCurrent BZVectorCurrent HwWeakCurrents.so newdef BZVectorCurrent:Quark 0 11 newdef BZVectorCurrent:AntiQuark 0 -12 newdef BZVectorCurrent:Quark 1 13 newdef BZVectorCurrent:AntiQuark 1 -15 newdef BZVectorCurrent:Quark 2 15 newdef BZVectorCurrent:AntiQuark 2 -16 newdef BZVector:Current BZVectorCurrent create Herwig::BallZwickyVectorFormFactor BZVectorFormFactor newdef BZVectorFormFactor:CutOff 0.01 newdef BZVectorFormFactor:Vr_1 0 0.738927 newdef BZVectorFormFactor:Vr_2 0 -0.509824 newdef BZVectorFormFactor:A0r_1 0 1.07975 newdef BZVectorFormFactor:A0r_2 0 -0.86267 newdef BZVectorFormFactor:A1r_1 0 0.169706 newdef BZVectorFormFactor:A1r_2 0 0 newdef BZVectorFormFactor:A2r_1 0 0.00636396 newdef BZVectorFormFactor:A2r_2 0 0.149907 newdef BZVectorFormFactor:T1r_1 0 0.634275 newdef BZVectorFormFactor:T1r_2 0 -0.44477 newdef BZVectorFormFactor:T2r_1 0 0.188798 newdef BZVectorFormFactor:T2r_2 0 0 newdef BZVectorFormFactor:T3r_1 0 0.0155563 newdef BZVectorFormFactor:T3r_2 0 0.173241 newdef BZVectorFormFactor:VmR2 0 28.3024 newdef BZVectorFormFactor:Vmfit2 0 38.34 newdef BZVectorFormFactor:A0mR2 0 27.8784 newdef BZVectorFormFactor:A0mfit2 0 33.36 newdef BZVectorFormFactor:A1mR2 0 -1 newdef BZVectorFormFactor:A1mfit2 0 37.51 newdef BZVectorFormFactor:A2mR2 0 -1 newdef BZVectorFormFactor:A2mfit2 0 40.82 newdef BZVectorFormFactor:T1mR2 0 28.3024 newdef BZVectorFormFactor:T1mfit2 0 38.04 newdef BZVectorFormFactor:T2mR2 0 -1 newdef BZVectorFormFactor:T2mfit2 0 38.59 newdef BZVectorFormFactor:T3mR2 0 -1 newdef BZVectorFormFactor:T3mfit2 0 40.88 newdef BZVectorFormFactor:Vr_1 1 -0.738927 newdef BZVectorFormFactor:Vr_2 1 0.509824 newdef BZVectorFormFactor:A0r_1 1 -1.07975 newdef BZVectorFormFactor:A0r_2 1 0.86267 newdef BZVectorFormFactor:A1r_1 1 -0.169706 newdef BZVectorFormFactor:A1r_2 1 -0 newdef BZVectorFormFactor:A2r_1 1 -0.00636396 newdef BZVectorFormFactor:A2r_2 1 -0.149907 newdef BZVectorFormFactor:T1r_1 1 -0.634275 newdef BZVectorFormFactor:T1r_2 1 0.44477 newdef BZVectorFormFactor:T2r_1 1 -0.188798 newdef BZVectorFormFactor:T2r_2 1 -0 newdef BZVectorFormFactor:T3r_1 1 -0.0155563 newdef BZVectorFormFactor:T3r_2 1 -0.173241 newdef BZVectorFormFactor:VmR2 1 28.3024 newdef BZVectorFormFactor:Vmfit2 1 38.34 newdef BZVectorFormFactor:A0mR2 1 27.8784 newdef BZVectorFormFactor:A0mfit2 1 33.36 newdef BZVectorFormFactor:A1mR2 1 -1 newdef BZVectorFormFactor:A1mfit2 1 37.51 newdef BZVectorFormFactor:A2mR2 1 -1 newdef BZVectorFormFactor:A2mfit2 1 40.82 newdef BZVectorFormFactor:T1mR2 1 28.3024 newdef BZVectorFormFactor:T1mfit2 1 38.04 newdef BZVectorFormFactor:T2mR2 1 -1 newdef BZVectorFormFactor:T2mfit2 1 38.59 newdef BZVectorFormFactor:T3mR2 1 -1 newdef BZVectorFormFactor:T3mfit2 1 40.88 newdef BZVectorFormFactor:Vr_1 2 1.045 newdef BZVectorFormFactor:Vr_2 2 -0.721 newdef BZVectorFormFactor:A0r_1 2 1.527 newdef BZVectorFormFactor:A0r_2 2 -1.22 newdef BZVectorFormFactor:A1r_1 2 0.24 newdef BZVectorFormFactor:A1r_2 2 0 newdef BZVectorFormFactor:A2r_1 2 0.009 newdef BZVectorFormFactor:A2r_2 2 0.212 newdef BZVectorFormFactor:T1r_1 2 0.897 newdef BZVectorFormFactor:T1r_2 2 -0.629 newdef BZVectorFormFactor:T2r_1 2 0.267 newdef BZVectorFormFactor:T2r_2 2 0 newdef BZVectorFormFactor:T3r_1 2 0.022 newdef BZVectorFormFactor:T3r_2 2 0.245 newdef BZVectorFormFactor:VmR2 2 28.3024 newdef BZVectorFormFactor:Vmfit2 2 38.34 newdef BZVectorFormFactor:A0mR2 2 27.8784 newdef BZVectorFormFactor:A0mfit2 2 33.36 newdef BZVectorFormFactor:A1mR2 2 -1 newdef BZVectorFormFactor:A1mfit2 2 37.51 newdef BZVectorFormFactor:A2mR2 2 -1 newdef BZVectorFormFactor:A2mfit2 2 40.82 newdef BZVectorFormFactor:T1mR2 2 28.3024 newdef BZVectorFormFactor:T1mfit2 2 38.04 newdef BZVectorFormFactor:T2mR2 2 -1 newdef BZVectorFormFactor:T2mfit2 2 38.59 newdef BZVectorFormFactor:T3mR2 2 -1 newdef BZVectorFormFactor:T3mfit2 2 40.88 newdef BZVectorFormFactor:Vr_1 3 1.045 newdef BZVectorFormFactor:Vr_2 3 -0.721 newdef BZVectorFormFactor:A0r_1 3 1.527 newdef BZVectorFormFactor:A0r_2 3 -1.22 newdef BZVectorFormFactor:A1r_1 3 0.24 newdef BZVectorFormFactor:A1r_2 3 0 newdef BZVectorFormFactor:A2r_1 3 0.009 newdef BZVectorFormFactor:A2r_2 3 0.212 newdef BZVectorFormFactor:T1r_1 3 0.897 newdef BZVectorFormFactor:T1r_2 3 -0.629 newdef BZVectorFormFactor:T2r_1 3 0.267 newdef BZVectorFormFactor:T2r_2 3 0 newdef BZVectorFormFactor:T3r_1 3 0.022 newdef BZVectorFormFactor:T3r_2 3 0.245 newdef BZVectorFormFactor:VmR2 3 28.3024 newdef BZVectorFormFactor:Vmfit2 3 38.34 newdef BZVectorFormFactor:A0mR2 3 27.8784 newdef BZVectorFormFactor:A0mfit2 3 33.36 newdef BZVectorFormFactor:A1mR2 3 -1 newdef BZVectorFormFactor:A1mfit2 3 37.51 newdef BZVectorFormFactor:A2mR2 3 -1 newdef BZVectorFormFactor:A2mfit2 3 40.82 newdef BZVectorFormFactor:T1mR2 3 28.3024 newdef BZVectorFormFactor:T1mfit2 3 38.04 newdef BZVectorFormFactor:T2mR2 3 -1 newdef BZVectorFormFactor:T2mfit2 3 38.59 newdef BZVectorFormFactor:T3mR2 3 -1 newdef BZVectorFormFactor:T3mfit2 3 40.88 newdef BZVectorFormFactor:Vr_1 4 0.923 newdef BZVectorFormFactor:Vr_2 4 -0.511 newdef BZVectorFormFactor:A0r_1 4 1.364 newdef BZVectorFormFactor:A0r_2 4 -0.99 newdef BZVectorFormFactor:A1r_1 4 0.29 newdef BZVectorFormFactor:A1r_2 4 0 newdef BZVectorFormFactor:A2r_1 4 -0.084 newdef BZVectorFormFactor:A2r_2 4 0.342 newdef BZVectorFormFactor:T1r_1 4 0.823 newdef BZVectorFormFactor:T1r_2 4 -0.491 newdef BZVectorFormFactor:T2r_1 4 0.333 newdef BZVectorFormFactor:T2r_2 4 0 newdef BZVectorFormFactor:T3r_1 4 -0.036 newdef BZVectorFormFactor:T3r_2 4 0.369 newdef BZVectorFormFactor:VmR2 4 28.3024 newdef BZVectorFormFactor:Vmfit2 4 49.4 newdef BZVectorFormFactor:A0mR2 4 27.8784 newdef BZVectorFormFactor:A0mfit2 4 36.78 newdef BZVectorFormFactor:A1mR2 4 -1 newdef BZVectorFormFactor:A1mfit2 4 40.38 newdef BZVectorFormFactor:A2mR2 4 -1 newdef BZVectorFormFactor:A2mfit2 4 52 newdef BZVectorFormFactor:T1mR2 4 28.3024 newdef BZVectorFormFactor:T1mfit2 4 46.31 newdef BZVectorFormFactor:T2mR2 4 -1 newdef BZVectorFormFactor:T2mfit2 4 41.41 newdef BZVectorFormFactor:T3mR2 4 -1 newdef BZVectorFormFactor:T3mfit2 4 48.1 newdef BZVectorFormFactor:Vr_1 5 0.923 newdef BZVectorFormFactor:Vr_2 5 -0.511 newdef BZVectorFormFactor:A0r_1 5 1.364 newdef BZVectorFormFactor:A0r_2 5 -0.99 newdef BZVectorFormFactor:A1r_1 5 0.29 newdef BZVectorFormFactor:A1r_2 5 0 newdef BZVectorFormFactor:A2r_1 5 -0.084 newdef BZVectorFormFactor:A2r_2 5 0.342 newdef BZVectorFormFactor:T1r_1 5 0.823 newdef BZVectorFormFactor:T1r_2 5 -0.491 newdef BZVectorFormFactor:T2r_1 5 0.333 newdef BZVectorFormFactor:T2r_2 5 0 newdef BZVectorFormFactor:T3r_1 5 -0.036 newdef BZVectorFormFactor:T3r_2 5 0.369 newdef BZVectorFormFactor:VmR2 5 28.3024 newdef BZVectorFormFactor:Vmfit2 5 49.4 newdef BZVectorFormFactor:A0mR2 5 27.8784 newdef BZVectorFormFactor:A0mfit2 5 36.78 newdef BZVectorFormFactor:A1mR2 5 -1 newdef BZVectorFormFactor:A1mfit2 5 40.38 newdef BZVectorFormFactor:A2mR2 5 -1 newdef BZVectorFormFactor:A2mfit2 5 52 newdef BZVectorFormFactor:T1mR2 5 28.3024 newdef BZVectorFormFactor:T1mfit2 5 46.31 newdef BZVectorFormFactor:T2mR2 5 -1 newdef BZVectorFormFactor:T2mfit2 5 41.41 newdef BZVectorFormFactor:T3mR2 5 -1 newdef BZVectorFormFactor:T3mfit2 5 48.1 newdef BZVectorFormFactor:Vr_1 6 0.711349 newdef BZVectorFormFactor:Vr_2 6 -0.504167 newdef BZVectorFormFactor:A0r_1 6 0.934088 newdef BZVectorFormFactor:A0r_2 6 -0.735391 newdef BZVectorFormFactor:A1r_1 6 0.153442 newdef BZVectorFormFactor:A1r_2 6 0 newdef BZVectorFormFactor:A2r_1 6 0.00424264 newdef BZVectorFormFactor:A2r_2 6 0.135765 newdef BZVectorFormFactor:T1r_1 6 0.611647 newdef BZVectorFormFactor:T1r_2 6 -0.43982 newdef BZVectorFormFactor:T2r_1 6 0.17112 newdef BZVectorFormFactor:T2r_2 6 0 newdef BZVectorFormFactor:T3r_1 6 0.0162635 newdef BZVectorFormFactor:T3r_2 6 0.154856 newdef BZVectorFormFactor:VmR2 6 28.3024 newdef BZVectorFormFactor:Vmfit2 6 37.45 newdef BZVectorFormFactor:A0mR2 6 27.8784 newdef BZVectorFormFactor:A0mfit2 6 34.47 newdef BZVectorFormFactor:A1mR2 6 -1 newdef BZVectorFormFactor:A1mfit2 6 37.01 newdef BZVectorFormFactor:A2mR2 6 -1 newdef BZVectorFormFactor:A2mfit2 6 41.24 newdef BZVectorFormFactor:T1mR2 6 28.3024 newdef BZVectorFormFactor:T1mfit2 6 37.19 newdef BZVectorFormFactor:T2mR2 6 -1 newdef BZVectorFormFactor:T2mfit2 6 37.95 newdef BZVectorFormFactor:T3mR2 6 -1 newdef BZVectorFormFactor:T3mfit2 6 40.87 newdef BZVectorFormFactor:Vr_1 7 2.351 newdef BZVectorFormFactor:Vr_2 7 -2.039 newdef BZVectorFormFactor:A0r_1 7 2.813 newdef BZVectorFormFactor:A0r_2 7 -2.45 newdef BZVectorFormFactor:A1r_1 7 0.231 newdef BZVectorFormFactor:A1r_2 7 0 newdef BZVectorFormFactor:A2r_1 7 -0.011 newdef BZVectorFormFactor:A2r_2 7 0.192 newdef BZVectorFormFactor:T1r_1 7 2.047 newdef BZVectorFormFactor:T1r_2 7 -1.787 newdef BZVectorFormFactor:T2r_1 7 0.26 newdef BZVectorFormFactor:T2r_2 7 0 newdef BZVectorFormFactor:T3r_1 7 0.043 newdef BZVectorFormFactor:T3r_2 7 0.217 newdef BZVectorFormFactor:VmR2 7 29.3764 newdef BZVectorFormFactor:Vmfit2 7 33.1 newdef BZVectorFormFactor:A0mR2 7 28.8369 newdef BZVectorFormFactor:A0mfit2 7 31.58 newdef BZVectorFormFactor:A1mR2 7 -1 newdef BZVectorFormFactor:A1mfit2 7 32.94 newdef BZVectorFormFactor:A2mR2 7 -1 newdef BZVectorFormFactor:A2mfit2 7 40.14 newdef BZVectorFormFactor:T1mR2 7 29.3764 newdef BZVectorFormFactor:T1mfit2 7 32.83 newdef BZVectorFormFactor:T2mR2 7 -1 newdef BZVectorFormFactor:T2mfit2 7 33.01 newdef BZVectorFormFactor:T3mR2 7 -1 newdef BZVectorFormFactor:T3mfit2 7 39.38 newdef BZVectorFormFactor:Vr_1 8 1.484 newdef BZVectorFormFactor:Vr_2 8 -1.049 newdef BZVectorFormFactor:A0r_1 8 3.31 newdef BZVectorFormFactor:A0r_2 8 -2.835 newdef BZVectorFormFactor:A1r_1 8 0.308 newdef BZVectorFormFactor:A1r_2 8 0 newdef BZVectorFormFactor:A2r_1 8 -0.054 newdef BZVectorFormFactor:A2r_2 8 0.288 newdef BZVectorFormFactor:T1r_1 8 1.303 newdef BZVectorFormFactor:T1r_2 8 -0.954 newdef BZVectorFormFactor:T2r_1 8 0.349 newdef BZVectorFormFactor:T2r_2 8 0 newdef BZVectorFormFactor:T3r_1 8 0.027 newdef BZVectorFormFactor:T3r_2 8 0.322 newdef BZVectorFormFactor:VmR2 8 29.3764 newdef BZVectorFormFactor:Vmfit2 8 39.52 newdef BZVectorFormFactor:A0mR2 8 28.8369 newdef BZVectorFormFactor:A0mfit2 8 31.57 newdef BZVectorFormFactor:A1mR2 8 -1 newdef BZVectorFormFactor:A1mfit2 8 36.54 newdef BZVectorFormFactor:A2mR2 8 -1 newdef BZVectorFormFactor:A2mfit2 8 48.94 newdef BZVectorFormFactor:T1mR2 8 29.3764 newdef BZVectorFormFactor:T1mfit2 8 38.28 newdef BZVectorFormFactor:T2mR2 8 -1 newdef BZVectorFormFactor:T2mfit2 8 37.21 newdef BZVectorFormFactor:T3mR2 8 -1 newdef BZVectorFormFactor:T3mfit2 8 45.56 newdef BZVectorFormFactor:Incoming 0 -521 newdef BZVectorFormFactor:Outgoing 0 113 newdef BZVectorFormFactor:Spin 0 1 newdef BZVectorFormFactor:Spectator 0 -2 newdef BZVectorFormFactor:InQuark 0 5 newdef BZVectorFormFactor:OutQuark 0 2 newdef BZVectorFormFactor:Incoming 1 -511 newdef BZVectorFormFactor:Outgoing 1 113 newdef BZVectorFormFactor:Spin 1 1 newdef BZVectorFormFactor:Spectator 1 -2 newdef BZVectorFormFactor:InQuark 1 5 newdef BZVectorFormFactor:OutQuark 1 1 newdef BZVectorFormFactor:Incoming 2 -511 newdef BZVectorFormFactor:Outgoing 2 213 newdef BZVectorFormFactor:Spin 2 1 newdef BZVectorFormFactor:Spectator 2 -2 newdef BZVectorFormFactor:InQuark 2 5 newdef BZVectorFormFactor:OutQuark 2 2 newdef BZVectorFormFactor:Incoming 3 -521 newdef BZVectorFormFactor:Outgoing 3 213 newdef BZVectorFormFactor:Spin 3 1 newdef BZVectorFormFactor:Spectator 3 -2 newdef BZVectorFormFactor:InQuark 3 5 newdef BZVectorFormFactor:OutQuark 3 1 newdef BZVectorFormFactor:Incoming 4 -521 newdef BZVectorFormFactor:Outgoing 4 -323 newdef BZVectorFormFactor:Spin 4 1 newdef BZVectorFormFactor:Spectator 4 -2 newdef BZVectorFormFactor:InQuark 4 5 newdef BZVectorFormFactor:OutQuark 4 3 newdef BZVectorFormFactor:Incoming 5 -511 newdef BZVectorFormFactor:Outgoing 5 -313 newdef BZVectorFormFactor:Spin 5 1 newdef BZVectorFormFactor:Spectator 5 -2 newdef BZVectorFormFactor:InQuark 5 5 newdef BZVectorFormFactor:OutQuark 5 3 newdef BZVectorFormFactor:Incoming 6 -521 newdef BZVectorFormFactor:Outgoing 6 223 newdef BZVectorFormFactor:Spin 6 1 newdef BZVectorFormFactor:Spectator 6 -2 newdef BZVectorFormFactor:InQuark 6 5 newdef BZVectorFormFactor:OutQuark 6 2 newdef BZVectorFormFactor:Incoming 7 -531 newdef BZVectorFormFactor:Outgoing 7 323 newdef BZVectorFormFactor:Spin 7 1 newdef BZVectorFormFactor:Spectator 7 -3 newdef BZVectorFormFactor:InQuark 7 5 newdef BZVectorFormFactor:OutQuark 7 2 newdef BZVectorFormFactor:Incoming 8 -531 newdef BZVectorFormFactor:Outgoing 8 333 newdef BZVectorFormFactor:Spin 8 1 newdef BZVectorFormFactor:Spectator 8 -3 newdef BZVectorFormFactor:InQuark 8 5 newdef BZVectorFormFactor:OutQuark 8 3 newdef BZVector:FormFactor BZVectorFormFactor # create Herwig::SemiLeptonicScalarDecayer BZScalar newdef BZScalar:Iteration 1 newdef BZScalar:Ntry 500 newdef BZScalar:Points 10000 newdef BZScalar:GenerateIntermediates 1 insert BZScalar:MaximumWeight 0 0.000172345 insert BZScalar:MaximumWeight 1 0.00017204 insert BZScalar:MaximumWeight 2 0.00012728 insert BZScalar:MaximumWeight 3 0.000315966 insert BZScalar:MaximumWeight 4 0.000315402 insert BZScalar:MaximumWeight 5 0.000233225 insert BZScalar:MaximumWeight 6 0.000105173 insert BZScalar:MaximumWeight 7 0.000104496 insert BZScalar:MaximumWeight 8 7.67637e-05 create Herwig::LeptonNeutrinoCurrent BZScalarCurrent HwWeakCurrents.so newdef BZScalarCurrent:Quark 0 11 newdef BZScalarCurrent:AntiQuark 0 -12 newdef BZScalarCurrent:Quark 1 13 newdef BZScalarCurrent:AntiQuark 1 -14 newdef BZScalarCurrent:Quark 2 15 newdef BZScalarCurrent:AntiQuark 2 -16 newdef BZScalar:Current BZScalarCurrent create Herwig::BallZwickyScalarFormFactor BZScalarFormFactor newdef BZScalarFormFactor:ThetaEtaEtaPrime -0.349066 newdef BZScalarFormFactor:r_10 0 0 newdef BZScalarFormFactor:r_20 0 0.182434 newdef BZScalarFormFactor:r_1plus 0 0.526087 newdef BZScalarFormFactor:r_2plus 0 -0.343654 newdef BZScalarFormFactor:r_1T 0 0.980757 newdef BZScalarFormFactor:r_2T 0 -0.801859 newdef BZScalarFormFactor:m_120 0 -1 newdef BZScalarFormFactor:mfit20 0 33.81 newdef BZScalarFormFactor:m_12plus 0 28.3024 newdef BZScalarFormFactor:mfit2plus 0 40.73 newdef BZScalarFormFactor:m_12T 0 28.3024 newdef BZScalarFormFactor:mfit2T 0 32.22 newdef BZScalarFormFactor:r_10 1 0 newdef BZScalarFormFactor:r_20 1 -0.182434 newdef BZScalarFormFactor:r_1plus 1 -0.526087 newdef BZScalarFormFactor:r_2plus 1 0.343654 newdef BZScalarFormFactor:r_1T 1 -0.980757 newdef BZScalarFormFactor:r_2T 1 0.801859 newdef BZScalarFormFactor:m_120 1 -1 newdef BZScalarFormFactor:mfit20 1 33.81 newdef BZScalarFormFactor:m_12plus 1 28.3024 newdef BZScalarFormFactor:mfit2plus 1 40.73 newdef BZScalarFormFactor:m_12T 1 28.3024 newdef BZScalarFormFactor:mfit2T 1 32.22 newdef BZScalarFormFactor:r_10 2 0 newdef BZScalarFormFactor:r_20 2 0.258 newdef BZScalarFormFactor:r_1plus 2 0.744 newdef BZScalarFormFactor:r_2plus 2 -0.486 newdef BZScalarFormFactor:r_1T 2 1.387 newdef BZScalarFormFactor:r_2T 2 -1.134 newdef BZScalarFormFactor:m_120 2 -1 newdef BZScalarFormFactor:mfit20 2 33.81 newdef BZScalarFormFactor:m_12plus 2 28.3024 newdef BZScalarFormFactor:mfit2plus 2 40.73 newdef BZScalarFormFactor:m_12T 2 28.3024 newdef BZScalarFormFactor:mfit2T 2 32.22 newdef BZScalarFormFactor:r_10 3 0 newdef BZScalarFormFactor:r_20 3 0.258 newdef BZScalarFormFactor:r_1plus 3 0.744 newdef BZScalarFormFactor:r_2plus 3 -0.486 newdef BZScalarFormFactor:r_1T 3 1.387 newdef BZScalarFormFactor:r_2T 3 -1.134 newdef BZScalarFormFactor:m_120 3 -1 newdef BZScalarFormFactor:mfit20 3 33.81 newdef BZScalarFormFactor:m_12plus 3 28.3024 newdef BZScalarFormFactor:mfit2plus 3 40.73 newdef BZScalarFormFactor:m_12T 3 28.3024 newdef BZScalarFormFactor:mfit2T 3 32.22 newdef BZScalarFormFactor:r_10 4 0 newdef BZScalarFormFactor:r_20 4 0.33 newdef BZScalarFormFactor:r_1plus 4 0.162 newdef BZScalarFormFactor:r_2plus 4 0.173 newdef BZScalarFormFactor:r_1T 4 0.161 newdef BZScalarFormFactor:r_2T 4 0.198 newdef BZScalarFormFactor:m_120 4 -1 newdef BZScalarFormFactor:mfit20 4 37.46 newdef BZScalarFormFactor:m_12plus 4 29.2681 newdef BZScalarFormFactor:mfit2plus 4 -1 newdef BZScalarFormFactor:m_12T 4 29.2681 newdef BZScalarFormFactor:mfit2T 4 -1 newdef BZScalarFormFactor:r_10 5 0 newdef BZScalarFormFactor:r_20 5 0.33 newdef BZScalarFormFactor:r_1plus 5 0.162 newdef BZScalarFormFactor:r_2plus 5 0.173 newdef BZScalarFormFactor:r_1T 5 0.161 newdef BZScalarFormFactor:r_2T 5 0.198 newdef BZScalarFormFactor:m_120 5 -1 newdef BZScalarFormFactor:mfit20 5 37.46 newdef BZScalarFormFactor:m_12plus 5 29.2681 newdef BZScalarFormFactor:mfit2plus 5 -1 newdef BZScalarFormFactor:m_12T 5 29.2681 newdef BZScalarFormFactor:mfit2T 5 -1 newdef BZScalarFormFactor:r_10 6 0 newdef BZScalarFormFactor:r_20 6 0.273 newdef BZScalarFormFactor:r_1plus 6 0.122 newdef BZScalarFormFactor:r_2plus 6 0.155 newdef BZScalarFormFactor:r_1T 6 0.111 newdef BZScalarFormFactor:r_2T 6 0.175 newdef BZScalarFormFactor:m_120 6 -1 newdef BZScalarFormFactor:mfit20 6 31.03 newdef BZScalarFormFactor:m_12plus 6 28.3024 newdef BZScalarFormFactor:mfit2plus 6 -1 newdef BZScalarFormFactor:m_12T 6 28.3024 newdef BZScalarFormFactor:mfit2T 6 -1 newdef BZScalarFormFactor:Incoming 0 -521 newdef BZScalarFormFactor:Outgoing 0 111 newdef BZScalarFormFactor:Spin 0 0 newdef BZScalarFormFactor:Spectator 0 -2 newdef BZScalarFormFactor:InQuark 0 5 newdef BZScalarFormFactor:OutQuark 0 2 newdef BZScalarFormFactor:Incoming 1 -511 newdef BZScalarFormFactor:Outgoing 1 111 newdef BZScalarFormFactor:Spin 1 0 newdef BZScalarFormFactor:Spectator 1 -2 newdef BZScalarFormFactor:InQuark 1 5 newdef BZScalarFormFactor:OutQuark 1 1 newdef BZScalarFormFactor:Incoming 2 -511 newdef BZScalarFormFactor:Outgoing 2 211 newdef BZScalarFormFactor:Spin 2 0 newdef BZScalarFormFactor:Spectator 2 -2 newdef BZScalarFormFactor:InQuark 2 5 newdef BZScalarFormFactor:OutQuark 2 2 newdef BZScalarFormFactor:Incoming 3 -521 newdef BZScalarFormFactor:Outgoing 3 211 newdef BZScalarFormFactor:Spin 3 0 newdef BZScalarFormFactor:Spectator 3 -2 newdef BZScalarFormFactor:InQuark 3 5 newdef BZScalarFormFactor:OutQuark 3 1 newdef BZScalarFormFactor:Incoming 4 -521 newdef BZScalarFormFactor:Outgoing 4 -321 newdef BZScalarFormFactor:Spin 4 0 newdef BZScalarFormFactor:Spectator 4 -2 newdef BZScalarFormFactor:InQuark 4 5 newdef BZScalarFormFactor:OutQuark 4 3 newdef BZScalarFormFactor:Incoming 5 -511 newdef BZScalarFormFactor:Outgoing 5 -311 newdef BZScalarFormFactor:Spin 5 0 newdef BZScalarFormFactor:Spectator 5 -2 newdef BZScalarFormFactor:InQuark 5 5 newdef BZScalarFormFactor:OutQuark 5 3 newdef BZScalarFormFactor:Incoming 6 521 newdef BZScalarFormFactor:Outgoing 6 221 newdef BZScalarFormFactor:Spin 6 0 newdef BZScalarFormFactor:Spectator 6 2 newdef BZScalarFormFactor:InQuark 6 -5 newdef BZScalarFormFactor:OutQuark 6 -2 newdef BZScalar:FormFactor BZScalarFormFactor # create Herwig::ScalarMesonFactorizedDecayer WSBHadronic newdef WSBHadronic:Iteration 1 newdef WSBHadronic:Ntry 500 newdef WSBHadronic:Points 10000 newdef WSBHadronic:GenerateIntermediates 1 newdef WSBHadronic:a1Bottom 1.1 newdef WSBHadronic:a2Bottom -0.24 newdef WSBHadronic:a1Charm 1.3 newdef WSBHadronic:a2Charm -0.55 create Herwig::ScalarMesonCurrent WSBHadronicScalarCurrent HwWeakCurrents.so newdef WSBHadronicScalarCurrent:ThetaEtaEtaPrime -0.194 newdef WSBHadronicScalarCurrent:ID 0 211 newdef WSBHadronicScalarCurrent:Decay_Constant 0 130.7 newdef WSBHadronicScalarCurrent:ID 1 111 newdef WSBHadronicScalarCurrent:Decay_Constant 1 130.7 newdef WSBHadronicScalarCurrent:ID 2 111 newdef WSBHadronicScalarCurrent:Decay_Constant 2 130.7 newdef WSBHadronicScalarCurrent:ID 3 221 newdef WSBHadronicScalarCurrent:Decay_Constant 3 130.7 newdef WSBHadronicScalarCurrent:ID 4 221 newdef WSBHadronicScalarCurrent:Decay_Constant 4 130.7 newdef WSBHadronicScalarCurrent:ID 5 221 newdef WSBHadronicScalarCurrent:Decay_Constant 5 130.7 newdef WSBHadronicScalarCurrent:ID 6 331 newdef WSBHadronicScalarCurrent:Decay_Constant 6 130.7 newdef WSBHadronicScalarCurrent:ID 7 331 newdef WSBHadronicScalarCurrent:Decay_Constant 7 130.7 newdef WSBHadronicScalarCurrent:ID 8 331 newdef WSBHadronicScalarCurrent:Decay_Constant 8 130.7 newdef WSBHadronicScalarCurrent:ID 9 311 newdef WSBHadronicScalarCurrent:Decay_Constant 9 159.8 newdef WSBHadronicScalarCurrent:ID 10 321 newdef WSBHadronicScalarCurrent:Decay_Constant 10 159.8 newdef WSBHadronicScalarCurrent:ID 11 411 newdef WSBHadronicScalarCurrent:Decay_Constant 11 200 newdef WSBHadronicScalarCurrent:ID 12 421 newdef WSBHadronicScalarCurrent:Decay_Constant 12 200 newdef WSBHadronicScalarCurrent:ID 13 431 newdef WSBHadronicScalarCurrent:Decay_Constant 13 241 newdef WSBHadronicScalarCurrent:ID 14 10431 newdef WSBHadronicScalarCurrent:Decay_Constant 14 73.7 newdef WSBHadronicScalarCurrent:Quark 0 2 newdef WSBHadronicScalarCurrent:AntiQuark 0 -1 newdef WSBHadronicScalarCurrent:Quark 1 1 newdef WSBHadronicScalarCurrent:AntiQuark 1 -1 newdef WSBHadronicScalarCurrent:Quark 2 2 newdef WSBHadronicScalarCurrent:AntiQuark 2 -2 newdef WSBHadronicScalarCurrent:Quark 3 1 newdef WSBHadronicScalarCurrent:AntiQuark 3 -1 newdef WSBHadronicScalarCurrent:Quark 4 2 newdef WSBHadronicScalarCurrent:AntiQuark 4 -2 newdef WSBHadronicScalarCurrent:Quark 5 3 newdef WSBHadronicScalarCurrent:AntiQuark 5 -3 newdef WSBHadronicScalarCurrent:Quark 6 1 newdef WSBHadronicScalarCurrent:AntiQuark 6 -1 newdef WSBHadronicScalarCurrent:Quark 7 2 newdef WSBHadronicScalarCurrent:AntiQuark 7 -2 newdef WSBHadronicScalarCurrent:Quark 8 3 newdef WSBHadronicScalarCurrent:AntiQuark 8 -3 newdef WSBHadronicScalarCurrent:Quark 9 1 newdef WSBHadronicScalarCurrent:AntiQuark 9 -3 newdef WSBHadronicScalarCurrent:Quark 10 2 newdef WSBHadronicScalarCurrent:AntiQuark 10 -3 newdef WSBHadronicScalarCurrent:Quark 11 4 newdef WSBHadronicScalarCurrent:AntiQuark 11 -1 newdef WSBHadronicScalarCurrent:Quark 12 4 newdef WSBHadronicScalarCurrent:AntiQuark 12 -2 newdef WSBHadronicScalarCurrent:Quark 13 4 newdef WSBHadronicScalarCurrent:AntiQuark 13 -3 newdef WSBHadronicScalarCurrent:Quark 14 4 newdef WSBHadronicScalarCurrent:AntiQuark 14 -3 insert WSBHadronic:Currents 0 WSBHadronicScalarCurrent create Herwig::VectorMesonCurrent WSBHadronicVectorCurrent HwWeakCurrents.so newdef WSBHadronicVectorCurrent:ID 0 213 newdef WSBHadronicVectorCurrent:Decay_Constant 0 0.1764 newdef WSBHadronicVectorCurrent:ID 1 113 newdef WSBHadronicVectorCurrent:Decay_Constant 1 0.1764 newdef WSBHadronicVectorCurrent:ID 2 113 newdef WSBHadronicVectorCurrent:Decay_Constant 2 0.1764 newdef WSBHadronicVectorCurrent:ID 3 223 newdef WSBHadronicVectorCurrent:Decay_Constant 3 0.1764 newdef WSBHadronicVectorCurrent:ID 4 223 newdef WSBHadronicVectorCurrent:Decay_Constant 4 0.1764 newdef WSBHadronicVectorCurrent:ID 5 333 newdef WSBHadronicVectorCurrent:Decay_Constant 5 0.238 newdef WSBHadronicVectorCurrent:ID 6 313 newdef WSBHadronicVectorCurrent:Decay_Constant 6 0.2019 newdef WSBHadronicVectorCurrent:ID 7 323 newdef WSBHadronicVectorCurrent:Decay_Constant 7 0.2019 newdef WSBHadronicVectorCurrent:ID 8 20213 newdef WSBHadronicVectorCurrent:Decay_Constant 8 0.4626 newdef WSBHadronicVectorCurrent:ID 9 20113 newdef WSBHadronicVectorCurrent:Decay_Constant 9 0.4626 newdef WSBHadronicVectorCurrent:ID 10 20113 newdef WSBHadronicVectorCurrent:Decay_Constant 10 0.4626 newdef WSBHadronicVectorCurrent:ID 11 413 newdef WSBHadronicVectorCurrent:Decay_Constant 11 0.402 newdef WSBHadronicVectorCurrent:ID 12 423 newdef WSBHadronicVectorCurrent:Decay_Constant 12 0.402 newdef WSBHadronicVectorCurrent:ID 13 433 newdef WSBHadronicVectorCurrent:Decay_Constant 13 0.509 newdef WSBHadronicVectorCurrent:ID 14 443 newdef WSBHadronicVectorCurrent:Decay_Constant 14 1.223 newdef WSBHadronicVectorCurrent:ID 15 100443 newdef WSBHadronicVectorCurrent:Decay_Constant 15 1.08 newdef WSBHadronicVectorCurrent:ID 16 10433 newdef WSBHadronicVectorCurrent:Decay_Constant 16 0.397 newdef WSBHadronicVectorCurrent:Quark 0 2 newdef WSBHadronicVectorCurrent:AntiQuark 0 -1 newdef WSBHadronicVectorCurrent:Quark 1 1 newdef WSBHadronicVectorCurrent:AntiQuark 1 -1 newdef WSBHadronicVectorCurrent:Quark 2 2 newdef WSBHadronicVectorCurrent:AntiQuark 2 -2 newdef WSBHadronicVectorCurrent:Quark 3 1 newdef WSBHadronicVectorCurrent:AntiQuark 3 -1 newdef WSBHadronicVectorCurrent:Quark 4 2 newdef WSBHadronicVectorCurrent:AntiQuark 4 -2 newdef WSBHadronicVectorCurrent:Quark 5 3 newdef WSBHadronicVectorCurrent:AntiQuark 5 -3 newdef WSBHadronicVectorCurrent:Quark 6 1 newdef WSBHadronicVectorCurrent:AntiQuark 6 -3 newdef WSBHadronicVectorCurrent:Quark 7 2 newdef WSBHadronicVectorCurrent:AntiQuark 7 -3 newdef WSBHadronicVectorCurrent:Quark 8 2 newdef WSBHadronicVectorCurrent:AntiQuark 8 -1 newdef WSBHadronicVectorCurrent:Quark 9 1 newdef WSBHadronicVectorCurrent:AntiQuark 9 -1 newdef WSBHadronicVectorCurrent:Quark 10 2 newdef WSBHadronicVectorCurrent:AntiQuark 10 -2 newdef WSBHadronicVectorCurrent:Quark 11 4 newdef WSBHadronicVectorCurrent:AntiQuark 11 -1 newdef WSBHadronicVectorCurrent:Quark 12 4 newdef WSBHadronicVectorCurrent:AntiQuark 12 -2 newdef WSBHadronicVectorCurrent:Quark 13 4 newdef WSBHadronicVectorCurrent:AntiQuark 13 -3 newdef WSBHadronicVectorCurrent:Quark 14 4 newdef WSBHadronicVectorCurrent:AntiQuark 14 -4 newdef WSBHadronicVectorCurrent:Quark 15 4 newdef WSBHadronicVectorCurrent:AntiQuark 15 -4 newdef WSBHadronicVectorCurrent:Quark 16 4 newdef WSBHadronicVectorCurrent:AntiQuark 16 -3 insert WSBHadronic:Currents 1 WSBHadronicVectorCurrent create Herwig::WSBFormFactor WSBHadronicFormFactor newdef WSBHadronicFormFactor:ThetaEtaEtaPrime -0.194 newdef WSBHadronicFormFactor:F0 0 0.992 newdef WSBHadronicFormFactor:V 0 0 newdef WSBHadronicFormFactor:A0 0 0 newdef WSBHadronicFormFactor:A1 0 0 newdef WSBHadronicFormFactor:A2 0 0 newdef WSBHadronicFormFactor:ScalarMass 0 0.494 newdef WSBHadronicFormFactor:PseudoScalarMass 0 1.43 newdef WSBHadronicFormFactor:VectorMass 0 0.892 newdef WSBHadronicFormFactor:PseudoVectorMass 0 1.273 newdef WSBHadronicFormFactor:F0 1 0.992 newdef WSBHadronicFormFactor:V 1 0 newdef WSBHadronicFormFactor:A0 1 0 newdef WSBHadronicFormFactor:A1 1 0 newdef WSBHadronicFormFactor:A2 1 0 newdef WSBHadronicFormFactor:ScalarMass 1 0.494 newdef WSBHadronicFormFactor:PseudoScalarMass 1 1.43 newdef WSBHadronicFormFactor:VectorMass 1 0.892 newdef WSBHadronicFormFactor:PseudoVectorMass 1 1.273 newdef WSBHadronicFormFactor:F0 2 0.992 newdef WSBHadronicFormFactor:V 2 0 newdef WSBHadronicFormFactor:A0 2 0 newdef WSBHadronicFormFactor:A1 2 0 newdef WSBHadronicFormFactor:A2 2 0 newdef WSBHadronicFormFactor:ScalarMass 2 0.494 newdef WSBHadronicFormFactor:PseudoScalarMass 2 1.43 newdef WSBHadronicFormFactor:VectorMass 2 0.892 newdef WSBHadronicFormFactor:PseudoVectorMass 2 1.273 newdef WSBHadronicFormFactor:F0 3 0.992 newdef WSBHadronicFormFactor:V 3 0 newdef WSBHadronicFormFactor:A0 3 0 newdef WSBHadronicFormFactor:A1 3 0 newdef WSBHadronicFormFactor:A2 3 0 newdef WSBHadronicFormFactor:ScalarMass 3 0.494 newdef WSBHadronicFormFactor:PseudoScalarMass 3 1.43 newdef WSBHadronicFormFactor:VectorMass 3 0.892 newdef WSBHadronicFormFactor:PseudoVectorMass 3 1.273 newdef WSBHadronicFormFactor:F0 4 0.762 newdef WSBHadronicFormFactor:V 4 0 newdef WSBHadronicFormFactor:A0 4 0 newdef WSBHadronicFormFactor:A1 4 0 newdef WSBHadronicFormFactor:A2 4 0 newdef WSBHadronicFormFactor:ScalarMass 4 1.97 newdef WSBHadronicFormFactor:PseudoScalarMass 4 2.6 newdef WSBHadronicFormFactor:VectorMass 4 2.11 newdef WSBHadronicFormFactor:PseudoVectorMass 4 2.53 newdef WSBHadronicFormFactor:F0 5 0.762 newdef WSBHadronicFormFactor:V 5 0 newdef WSBHadronicFormFactor:A0 5 0 newdef WSBHadronicFormFactor:A1 5 0 newdef WSBHadronicFormFactor:A2 5 0 newdef WSBHadronicFormFactor:ScalarMass 5 1.97 newdef WSBHadronicFormFactor:PseudoScalarMass 5 2.6 newdef WSBHadronicFormFactor:VectorMass 5 2.11 newdef WSBHadronicFormFactor:PseudoVectorMass 5 2.53 newdef WSBHadronicFormFactor:F0 6 0.692 newdef WSBHadronicFormFactor:V 6 0 newdef WSBHadronicFormFactor:A0 6 0 newdef WSBHadronicFormFactor:A1 6 0 newdef WSBHadronicFormFactor:A2 6 0 newdef WSBHadronicFormFactor:ScalarMass 6 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 6 2.47 newdef WSBHadronicFormFactor:VectorMass 6 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 6 2.42 newdef WSBHadronicFormFactor:F0 7 0.692 newdef WSBHadronicFormFactor:V 7 0 newdef WSBHadronicFormFactor:A0 7 0 newdef WSBHadronicFormFactor:A1 7 0 newdef WSBHadronicFormFactor:A2 7 0 newdef WSBHadronicFormFactor:ScalarMass 7 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 7 2.47 newdef WSBHadronicFormFactor:VectorMass 7 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 7 2.42 newdef WSBHadronicFormFactor:F0 8 0.692 newdef WSBHadronicFormFactor:V 8 0 newdef WSBHadronicFormFactor:A0 8 0 newdef WSBHadronicFormFactor:A1 8 0 newdef WSBHadronicFormFactor:A2 8 0 newdef WSBHadronicFormFactor:ScalarMass 8 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 8 2.47 newdef WSBHadronicFormFactor:VectorMass 8 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 8 2.42 newdef WSBHadronicFormFactor:F0 9 0.692 newdef WSBHadronicFormFactor:V 9 0 newdef WSBHadronicFormFactor:A0 9 0 newdef WSBHadronicFormFactor:A1 9 0 newdef WSBHadronicFormFactor:A2 9 0 newdef WSBHadronicFormFactor:ScalarMass 9 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 9 2.47 newdef WSBHadronicFormFactor:VectorMass 9 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 9 2.42 newdef WSBHadronicFormFactor:F0 10 0.681 newdef WSBHadronicFormFactor:V 10 0 newdef WSBHadronicFormFactor:A0 10 0 newdef WSBHadronicFormFactor:A1 10 0 newdef WSBHadronicFormFactor:A2 10 0 newdef WSBHadronicFormFactor:ScalarMass 10 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 10 2.47 newdef WSBHadronicFormFactor:VectorMass 10 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 10 2.42 newdef WSBHadronicFormFactor:F0 11 0.681 newdef WSBHadronicFormFactor:V 11 0 newdef WSBHadronicFormFactor:A0 11 0 newdef WSBHadronicFormFactor:A1 11 0 newdef WSBHadronicFormFactor:A2 11 0 newdef WSBHadronicFormFactor:ScalarMass 11 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 11 2.47 newdef WSBHadronicFormFactor:VectorMass 11 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 11 2.42 newdef WSBHadronicFormFactor:F0 12 0.655 newdef WSBHadronicFormFactor:V 12 0 newdef WSBHadronicFormFactor:A0 12 0 newdef WSBHadronicFormFactor:A1 12 0 newdef WSBHadronicFormFactor:A2 12 0 newdef WSBHadronicFormFactor:ScalarMass 12 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 12 2.47 newdef WSBHadronicFormFactor:VectorMass 12 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 12 2.42 newdef WSBHadronicFormFactor:F0 13 0.655 newdef WSBHadronicFormFactor:V 13 0 newdef WSBHadronicFormFactor:A0 13 0 newdef WSBHadronicFormFactor:A1 13 0 newdef WSBHadronicFormFactor:A2 13 0 newdef WSBHadronicFormFactor:ScalarMass 13 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 13 2.47 newdef WSBHadronicFormFactor:VectorMass 13 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 13 2.42 newdef WSBHadronicFormFactor:F0 14 0 newdef WSBHadronicFormFactor:V 14 1.226 newdef WSBHadronicFormFactor:A0 14 0.733 newdef WSBHadronicFormFactor:A1 14 0.88 newdef WSBHadronicFormFactor:A2 14 1.147 newdef WSBHadronicFormFactor:ScalarMass 14 1.97 newdef WSBHadronicFormFactor:PseudoScalarMass 14 2.6 newdef WSBHadronicFormFactor:VectorMass 14 2.11 newdef WSBHadronicFormFactor:PseudoVectorMass 14 2.53 newdef WSBHadronicFormFactor:F0 15 0 newdef WSBHadronicFormFactor:V 15 1.226 newdef WSBHadronicFormFactor:A0 15 0.733 newdef WSBHadronicFormFactor:A1 15 0.88 newdef WSBHadronicFormFactor:A2 15 1.147 newdef WSBHadronicFormFactor:ScalarMass 15 1.97 newdef WSBHadronicFormFactor:PseudoScalarMass 15 2.6 newdef WSBHadronicFormFactor:VectorMass 15 2.11 newdef WSBHadronicFormFactor:PseudoVectorMass 15 2.53 newdef WSBHadronicFormFactor:F0 16 0 newdef WSBHadronicFormFactor:V 16 1.225 newdef WSBHadronicFormFactor:A0 16 0.669 newdef WSBHadronicFormFactor:A1 16 0.775 newdef WSBHadronicFormFactor:A2 16 0.923 newdef WSBHadronicFormFactor:ScalarMass 16 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 16 2.47 newdef WSBHadronicFormFactor:VectorMass 16 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 16 2.42 newdef WSBHadronicFormFactor:F0 17 0 newdef WSBHadronicFormFactor:V 17 1.225 newdef WSBHadronicFormFactor:A0 17 0.669 newdef WSBHadronicFormFactor:A1 17 0.775 newdef WSBHadronicFormFactor:A2 17 0.923 newdef WSBHadronicFormFactor:ScalarMass 17 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 17 2.47 newdef WSBHadronicFormFactor:VectorMass 17 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 17 2.42 newdef WSBHadronicFormFactor:F0 18 0 newdef WSBHadronicFormFactor:V 18 1.225 newdef WSBHadronicFormFactor:A0 18 0.669 newdef WSBHadronicFormFactor:A1 18 0.775 newdef WSBHadronicFormFactor:A2 18 0.923 newdef WSBHadronicFormFactor:ScalarMass 18 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 18 2.47 newdef WSBHadronicFormFactor:VectorMass 18 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 18 2.42 newdef WSBHadronicFormFactor:F0 19 0 newdef WSBHadronicFormFactor:V 19 1.225 newdef WSBHadronicFormFactor:A0 19 0.669 newdef WSBHadronicFormFactor:A1 19 0.775 newdef WSBHadronicFormFactor:A2 19 0.923 newdef WSBHadronicFormFactor:ScalarMass 19 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 19 2.47 newdef WSBHadronicFormFactor:VectorMass 19 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 19 2.42 newdef WSBHadronicFormFactor:F0 20 0 newdef WSBHadronicFormFactor:V 20 1.236 newdef WSBHadronicFormFactor:A0 20 0.669 newdef WSBHadronicFormFactor:A1 20 0.772 newdef WSBHadronicFormFactor:A2 20 0.92 newdef WSBHadronicFormFactor:ScalarMass 20 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 20 2.47 newdef WSBHadronicFormFactor:VectorMass 20 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 20 2.42 newdef WSBHadronicFormFactor:F0 21 0 newdef WSBHadronicFormFactor:V 21 1.236 newdef WSBHadronicFormFactor:A0 21 0.669 newdef WSBHadronicFormFactor:A1 21 0.772 newdef WSBHadronicFormFactor:A2 21 0.92 newdef WSBHadronicFormFactor:ScalarMass 21 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 21 2.47 newdef WSBHadronicFormFactor:VectorMass 21 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 21 2.42 newdef WSBHadronicFormFactor:F0 22 0.723 newdef WSBHadronicFormFactor:V 22 0 newdef WSBHadronicFormFactor:A0 22 0 newdef WSBHadronicFormFactor:A1 22 0 newdef WSBHadronicFormFactor:A2 22 0 newdef WSBHadronicFormFactor:ScalarMass 22 1.97 newdef WSBHadronicFormFactor:PseudoScalarMass 22 2.6 newdef WSBHadronicFormFactor:VectorMass 22 2.11 newdef WSBHadronicFormFactor:PseudoVectorMass 22 2.53 newdef WSBHadronicFormFactor:F0 23 0.704 newdef WSBHadronicFormFactor:V 23 0 newdef WSBHadronicFormFactor:A0 23 0 newdef WSBHadronicFormFactor:A1 23 0 newdef WSBHadronicFormFactor:A2 23 0 newdef WSBHadronicFormFactor:ScalarMass 23 1.97 newdef WSBHadronicFormFactor:PseudoScalarMass 23 2.6 newdef WSBHadronicFormFactor:VectorMass 23 2.11 newdef WSBHadronicFormFactor:PseudoVectorMass 23 2.53 newdef WSBHadronicFormFactor:F0 24 0.643 newdef WSBHadronicFormFactor:V 24 0 newdef WSBHadronicFormFactor:A0 24 0 newdef WSBHadronicFormFactor:A1 24 0 newdef WSBHadronicFormFactor:A2 24 0 newdef WSBHadronicFormFactor:ScalarMass 24 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 24 2.47 newdef WSBHadronicFormFactor:VectorMass 24 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 24 2.42 newdef WSBHadronicFormFactor:F0 25 0.643 newdef WSBHadronicFormFactor:V 25 0 newdef WSBHadronicFormFactor:A0 25 0 newdef WSBHadronicFormFactor:A1 25 0 newdef WSBHadronicFormFactor:A2 25 0 newdef WSBHadronicFormFactor:ScalarMass 25 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 25 2.47 newdef WSBHadronicFormFactor:VectorMass 25 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 25 2.42 newdef WSBHadronicFormFactor:F0 26 0 newdef WSBHadronicFormFactor:V 26 1.25 newdef WSBHadronicFormFactor:A0 26 0.634 newdef WSBHadronicFormFactor:A1 26 0.717 newdef WSBHadronicFormFactor:A2 26 0.853 newdef WSBHadronicFormFactor:ScalarMass 26 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 26 2.47 newdef WSBHadronicFormFactor:VectorMass 26 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 26 2.42 newdef WSBHadronicFormFactor:F0 27 0 newdef WSBHadronicFormFactor:V 27 1.25 newdef WSBHadronicFormFactor:A0 27 0.634 newdef WSBHadronicFormFactor:A1 27 0.717 newdef WSBHadronicFormFactor:A2 27 0.853 newdef WSBHadronicFormFactor:ScalarMass 27 1.87 newdef WSBHadronicFormFactor:PseudoScalarMass 27 2.47 newdef WSBHadronicFormFactor:VectorMass 27 2.01 newdef WSBHadronicFormFactor:PseudoVectorMass 27 2.42 newdef WSBHadronicFormFactor:F0 28 0 newdef WSBHadronicFormFactor:V 28 1.319 newdef WSBHadronicFormFactor:A0 28 0.7 newdef WSBHadronicFormFactor:A1 28 0.82 newdef WSBHadronicFormFactor:A2 28 1.076 newdef WSBHadronicFormFactor:ScalarMass 28 1.97 newdef WSBHadronicFormFactor:PseudoScalarMass 28 2.6 newdef WSBHadronicFormFactor:VectorMass 28 2.11 newdef WSBHadronicFormFactor:PseudoVectorMass 28 2.53 newdef WSBHadronicFormFactor:F0 29 0.69 newdef WSBHadronicFormFactor:V 29 0 newdef WSBHadronicFormFactor:A0 29 0 newdef WSBHadronicFormFactor:A1 29 0 newdef WSBHadronicFormFactor:A2 29 0 newdef WSBHadronicFormFactor:ScalarMass 29 6.3 newdef WSBHadronicFormFactor:PseudoScalarMass 29 6.8 newdef WSBHadronicFormFactor:VectorMass 29 6.34 newdef WSBHadronicFormFactor:PseudoVectorMass 29 6.73 newdef WSBHadronicFormFactor:F0 30 0.69 newdef WSBHadronicFormFactor:V 30 0 newdef WSBHadronicFormFactor:A0 30 0 newdef WSBHadronicFormFactor:A1 30 0 newdef WSBHadronicFormFactor:A2 30 0 newdef WSBHadronicFormFactor:ScalarMass 30 6.3 newdef WSBHadronicFormFactor:PseudoScalarMass 30 6.8 newdef WSBHadronicFormFactor:VectorMass 30 6.34 newdef WSBHadronicFormFactor:PseudoVectorMass 30 6.73 newdef WSBHadronicFormFactor:F0 31 0.379 newdef WSBHadronicFormFactor:V 31 0 newdef WSBHadronicFormFactor:A0 31 0 newdef WSBHadronicFormFactor:A1 31 0 newdef WSBHadronicFormFactor:A2 31 0 newdef WSBHadronicFormFactor:ScalarMass 31 5.38 newdef WSBHadronicFormFactor:PseudoScalarMass 31 5.89 newdef WSBHadronicFormFactor:VectorMass 31 5.43 newdef WSBHadronicFormFactor:PseudoVectorMass 31 5.82 newdef WSBHadronicFormFactor:F0 32 0.379 newdef WSBHadronicFormFactor:V 32 0 newdef WSBHadronicFormFactor:A0 32 0 newdef WSBHadronicFormFactor:A1 32 0 newdef WSBHadronicFormFactor:A2 32 0 newdef WSBHadronicFormFactor:ScalarMass 32 5.38 newdef WSBHadronicFormFactor:PseudoScalarMass 32 5.89 newdef WSBHadronicFormFactor:VectorMass 32 5.43 newdef WSBHadronicFormFactor:PseudoVectorMass 32 5.82 newdef WSBHadronicFormFactor:F0 33 0.333 newdef WSBHadronicFormFactor:V 33 0 newdef WSBHadronicFormFactor:A0 33 0 newdef WSBHadronicFormFactor:A1 33 0 newdef WSBHadronicFormFactor:A2 33 0 newdef WSBHadronicFormFactor:ScalarMass 33 5.27 newdef WSBHadronicFormFactor:PseudoScalarMass 33 5.78 newdef WSBHadronicFormFactor:VectorMass 33 5.32 newdef WSBHadronicFormFactor:PseudoVectorMass 33 5.71 newdef WSBHadronicFormFactor:F0 34 0.333 newdef WSBHadronicFormFactor:V 34 0 newdef WSBHadronicFormFactor:A0 34 0 newdef WSBHadronicFormFactor:A1 34 0 newdef WSBHadronicFormFactor:A2 34 0 newdef WSBHadronicFormFactor:ScalarMass 34 5.27 newdef WSBHadronicFormFactor:PseudoScalarMass 34 5.78 newdef WSBHadronicFormFactor:VectorMass 34 5.32 newdef WSBHadronicFormFactor:PseudoVectorMass 34 5.71 newdef WSBHadronicFormFactor:F0 35 0.333 newdef WSBHadronicFormFactor:V 35 0 newdef WSBHadronicFormFactor:A0 35 0 newdef WSBHadronicFormFactor:A1 35 0 newdef WSBHadronicFormFactor:A2 35 0 newdef WSBHadronicFormFactor:ScalarMass 35 5.27 newdef WSBHadronicFormFactor:PseudoScalarMass 35 5.78 newdef WSBHadronicFormFactor:VectorMass 35 5.32 newdef WSBHadronicFormFactor:PseudoVectorMass 35 5.71 newdef WSBHadronicFormFactor:F0 36 0.333 newdef WSBHadronicFormFactor:V 36 0 newdef WSBHadronicFormFactor:A0 36 0 newdef WSBHadronicFormFactor:A1 36 0 newdef WSBHadronicFormFactor:A2 36 0 newdef WSBHadronicFormFactor:ScalarMass 36 5.27 newdef WSBHadronicFormFactor:PseudoScalarMass 36 5.78 newdef WSBHadronicFormFactor:VectorMass 36 5.32 newdef WSBHadronicFormFactor:PseudoVectorMass 36 5.71 newdef WSBHadronicFormFactor:F0 37 0.307 newdef WSBHadronicFormFactor:V 37 0 newdef WSBHadronicFormFactor:A0 37 0 newdef WSBHadronicFormFactor:A1 37 0 newdef WSBHadronicFormFactor:A2 37 0 newdef WSBHadronicFormFactor:ScalarMass 37 5.27 newdef WSBHadronicFormFactor:PseudoScalarMass 37 5.78 newdef WSBHadronicFormFactor:VectorMass 37 5.32 newdef WSBHadronicFormFactor:PseudoVectorMass 37 5.71 newdef WSBHadronicFormFactor:F0 38 0.307 newdef WSBHadronicFormFactor:V 38 0 newdef WSBHadronicFormFactor:A0 38 0 newdef WSBHadronicFormFactor:A1 38 0 newdef WSBHadronicFormFactor:A2 38 0 newdef WSBHadronicFormFactor:ScalarMass 38 5.27 newdef WSBHadronicFormFactor:PseudoScalarMass 38 5.78 newdef WSBHadronicFormFactor:VectorMass 38 5.32 newdef WSBHadronicFormFactor:PseudoVectorMass 38 5.71 newdef WSBHadronicFormFactor:F0 39 0.254 newdef WSBHadronicFormFactor:V 39 0 newdef WSBHadronicFormFactor:A0 39 0 newdef WSBHadronicFormFactor:A1 39 0 newdef WSBHadronicFormFactor:A2 39 0 newdef WSBHadronicFormFactor:ScalarMass 39 5.27 newdef WSBHadronicFormFactor:PseudoScalarMass 39 5.78 newdef WSBHadronicFormFactor:VectorMass 39 5.32 newdef WSBHadronicFormFactor:PseudoVectorMass 39 5.71 newdef WSBHadronicFormFactor:F0 40 0.254 newdef WSBHadronicFormFactor:V 40 0 newdef WSBHadronicFormFactor:A0 40 0 newdef WSBHadronicFormFactor:A1 40 0 newdef WSBHadronicFormFactor:A2 40 0 newdef WSBHadronicFormFactor:ScalarMass 40 5.27 newdef WSBHadronicFormFactor:PseudoScalarMass 40 5.78 newdef WSBHadronicFormFactor:VectorMass 40 5.32 newdef WSBHadronicFormFactor:PseudoVectorMass 40 5.71 newdef WSBHadronicFormFactor:F0 41 0 newdef WSBHadronicFormFactor:V 41 0.705 newdef WSBHadronicFormFactor:A0 41 0.623 newdef WSBHadronicFormFactor:A1 41 0.651 newdef WSBHadronicFormFactor:A2 41 0.686 newdef WSBHadronicFormFactor:ScalarMass 41 6.3 newdef WSBHadronicFormFactor:PseudoScalarMass 41 6.8 newdef WSBHadronicFormFactor:VectorMass 41 6.34 newdef WSBHadronicFormFactor:PseudoVectorMass 41 6.73 newdef WSBHadronicFormFactor:F0 42 0 newdef WSBHadronicFormFactor:V 42 0.705 newdef WSBHadronicFormFactor:A0 42 0.623 newdef WSBHadronicFormFactor:A1 42 0.651 newdef WSBHadronicFormFactor:A2 42 0.686 newdef WSBHadronicFormFactor:ScalarMass 42 6.3 newdef WSBHadronicFormFactor:PseudoScalarMass 42 6.8 newdef WSBHadronicFormFactor:VectorMass 42 6.34 newdef WSBHadronicFormFactor:PseudoVectorMass 42 6.73 newdef WSBHadronicFormFactor:F0 43 0 newdef WSBHadronicFormFactor:V 43 0.369 newdef WSBHadronicFormFactor:A0 43 0.321 newdef WSBHadronicFormFactor:A1 43 0.328 newdef WSBHadronicFormFactor:A2 43 0.331 newdef WSBHadronicFormFactor:ScalarMass 43 5.38 newdef WSBHadronicFormFactor:PseudoScalarMass 43 5.89 newdef WSBHadronicFormFactor:VectorMass 43 5.43 newdef WSBHadronicFormFactor:PseudoVectorMass 43 5.82 newdef WSBHadronicFormFactor:F0 44 0 newdef WSBHadronicFormFactor:V 44 0.369 newdef WSBHadronicFormFactor:A0 44 0.321 newdef WSBHadronicFormFactor:A1 44 0.328 newdef WSBHadronicFormFactor:A2 44 0.331 newdef WSBHadronicFormFactor:ScalarMass 44 5.38 newdef WSBHadronicFormFactor:PseudoScalarMass 44 5.89 newdef WSBHadronicFormFactor:VectorMass 44 5.43 newdef WSBHadronicFormFactor:PseudoVectorMass 44 5.82 newdef WSBHadronicFormFactor:F0 45 0 newdef WSBHadronicFormFactor:V 45 0.329 newdef WSBHadronicFormFactor:A0 45 0.281 newdef WSBHadronicFormFactor:A1 45 0.283 newdef WSBHadronicFormFactor:A2 45 0.283 newdef WSBHadronicFormFactor:ScalarMass 45 5.27 newdef WSBHadronicFormFactor:PseudoScalarMass 45 5.78 newdef WSBHadronicFormFactor:VectorMass 45 5.32 newdef WSBHadronicFormFactor:PseudoVectorMass 45 5.71 newdef WSBHadronicFormFactor:F0 46 0 newdef WSBHadronicFormFactor:V 46 0.329 newdef WSBHadronicFormFactor:A0 46 0.281 newdef WSBHadronicFormFactor:A1 46 0.283 newdef WSBHadronicFormFactor:A2 46 0.283 newdef WSBHadronicFormFactor:ScalarMass 46 5.27 newdef WSBHadronicFormFactor:PseudoScalarMass 46 5.78 newdef WSBHadronicFormFactor:VectorMass 46 5.32 newdef WSBHadronicFormFactor:PseudoVectorMass 46 5.71 newdef WSBHadronicFormFactor:F0 47 0 newdef WSBHadronicFormFactor:V 47 0.329 newdef WSBHadronicFormFactor:A0 47 0.281 newdef WSBHadronicFormFactor:A1 47 0.283 newdef WSBHadronicFormFactor:A2 47 0.283 newdef WSBHadronicFormFactor:ScalarMass 47 5.27 newdef WSBHadronicFormFactor:PseudoScalarMass 47 5.78 newdef WSBHadronicFormFactor:VectorMass 47 5.32 newdef WSBHadronicFormFactor:PseudoVectorMass 47 5.71 newdef WSBHadronicFormFactor:F0 48 0 newdef WSBHadronicFormFactor:V 48 0.329 newdef WSBHadronicFormFactor:A0 48 0.281 newdef WSBHadronicFormFactor:A1 48 0.283 newdef WSBHadronicFormFactor:A2 48 0.283 newdef WSBHadronicFormFactor:ScalarMass 48 5.27 newdef WSBHadronicFormFactor:PseudoScalarMass 48 5.78 newdef WSBHadronicFormFactor:VectorMass 48 5.32 newdef WSBHadronicFormFactor:PseudoVectorMass 48 5.71 newdef WSBHadronicFormFactor:F0 49 0 newdef WSBHadronicFormFactor:V 49 0.328 newdef WSBHadronicFormFactor:A0 49 0.28 newdef WSBHadronicFormFactor:A1 49 0.281 newdef WSBHadronicFormFactor:A2 49 0.281 newdef WSBHadronicFormFactor:ScalarMass 49 5.27 newdef WSBHadronicFormFactor:PseudoScalarMass 49 5.78 newdef WSBHadronicFormFactor:VectorMass 49 5.32 newdef WSBHadronicFormFactor:PseudoVectorMass 49 5.71 newdef WSBHadronicFormFactor:F0 50 0 newdef WSBHadronicFormFactor:V 50 0.328 newdef WSBHadronicFormFactor:A0 50 0.28 newdef WSBHadronicFormFactor:A1 50 0.281 newdef WSBHadronicFormFactor:A2 50 0.281 newdef WSBHadronicFormFactor:ScalarMass 50 5.27 newdef WSBHadronicFormFactor:PseudoScalarMass 50 5.78 newdef WSBHadronicFormFactor:VectorMass 50 5.32 newdef WSBHadronicFormFactor:PseudoVectorMass 50 5.71 newdef WSBHadronicFormFactor:Incoming 0 -321 newdef WSBHadronicFormFactor:Outgoing 0 111 newdef WSBHadronicFormFactor:Spin 0 0 newdef WSBHadronicFormFactor:Spectator 0 -2 newdef WSBHadronicFormFactor:InQuark 0 3 newdef WSBHadronicFormFactor:OutQuark 0 2 newdef WSBHadronicFormFactor:Incoming 1 -311 newdef WSBHadronicFormFactor:Outgoing 1 211 newdef WSBHadronicFormFactor:Spin 1 0 newdef WSBHadronicFormFactor:Spectator 1 -1 newdef WSBHadronicFormFactor:InQuark 1 3 newdef WSBHadronicFormFactor:OutQuark 1 2 newdef WSBHadronicFormFactor:Incoming 2 -321 newdef WSBHadronicFormFactor:Outgoing 2 -211 newdef WSBHadronicFormFactor:Spin 2 0 newdef WSBHadronicFormFactor:Spectator 2 -2 newdef WSBHadronicFormFactor:InQuark 2 3 newdef WSBHadronicFormFactor:OutQuark 2 1 newdef WSBHadronicFormFactor:Incoming 3 -311 newdef WSBHadronicFormFactor:Outgoing 3 111 newdef WSBHadronicFormFactor:Spin 3 0 newdef WSBHadronicFormFactor:Spectator 3 -1 newdef WSBHadronicFormFactor:InQuark 3 3 newdef WSBHadronicFormFactor:OutQuark 3 1 newdef WSBHadronicFormFactor:Incoming 4 421 newdef WSBHadronicFormFactor:Outgoing 4 -321 newdef WSBHadronicFormFactor:Spin 4 0 newdef WSBHadronicFormFactor:Spectator 4 -2 newdef WSBHadronicFormFactor:InQuark 4 4 newdef WSBHadronicFormFactor:OutQuark 4 3 newdef WSBHadronicFormFactor:Incoming 5 411 newdef WSBHadronicFormFactor:Outgoing 5 -311 newdef WSBHadronicFormFactor:Spin 5 0 newdef WSBHadronicFormFactor:Spectator 5 -1 newdef WSBHadronicFormFactor:InQuark 5 4 newdef WSBHadronicFormFactor:OutQuark 5 3 newdef WSBHadronicFormFactor:Incoming 6 421 newdef WSBHadronicFormFactor:Outgoing 6 -211 newdef WSBHadronicFormFactor:Spin 6 0 newdef WSBHadronicFormFactor:Spectator 6 -2 newdef WSBHadronicFormFactor:InQuark 6 4 newdef WSBHadronicFormFactor:OutQuark 6 1 newdef WSBHadronicFormFactor:Incoming 7 421 newdef WSBHadronicFormFactor:Outgoing 7 111 newdef WSBHadronicFormFactor:Spin 7 0 newdef WSBHadronicFormFactor:Spectator 7 -2 newdef WSBHadronicFormFactor:InQuark 7 4 newdef WSBHadronicFormFactor:OutQuark 7 2 newdef WSBHadronicFormFactor:Incoming 8 411 newdef WSBHadronicFormFactor:Outgoing 8 111 newdef WSBHadronicFormFactor:Spin 8 0 newdef WSBHadronicFormFactor:Spectator 8 -1 newdef WSBHadronicFormFactor:InQuark 8 4 newdef WSBHadronicFormFactor:OutQuark 8 1 newdef WSBHadronicFormFactor:Incoming 9 411 newdef WSBHadronicFormFactor:Outgoing 9 211 newdef WSBHadronicFormFactor:Spin 9 0 newdef WSBHadronicFormFactor:Spectator 9 -1 newdef WSBHadronicFormFactor:InQuark 9 4 newdef WSBHadronicFormFactor:OutQuark 9 2 newdef WSBHadronicFormFactor:Incoming 10 421 newdef WSBHadronicFormFactor:Outgoing 10 221 newdef WSBHadronicFormFactor:Spin 10 0 newdef WSBHadronicFormFactor:Spectator 10 -2 newdef WSBHadronicFormFactor:InQuark 10 4 newdef WSBHadronicFormFactor:OutQuark 10 2 newdef WSBHadronicFormFactor:Incoming 11 411 newdef WSBHadronicFormFactor:Outgoing 11 221 newdef WSBHadronicFormFactor:Spin 11 0 newdef WSBHadronicFormFactor:Spectator 11 -1 newdef WSBHadronicFormFactor:InQuark 11 4 newdef WSBHadronicFormFactor:OutQuark 11 1 newdef WSBHadronicFormFactor:Incoming 12 421 newdef WSBHadronicFormFactor:Outgoing 12 331 newdef WSBHadronicFormFactor:Spin 12 0 newdef WSBHadronicFormFactor:Spectator 12 -2 newdef WSBHadronicFormFactor:InQuark 12 4 newdef WSBHadronicFormFactor:OutQuark 12 2 newdef WSBHadronicFormFactor:Incoming 13 411 newdef WSBHadronicFormFactor:Outgoing 13 331 newdef WSBHadronicFormFactor:Spin 13 0 newdef WSBHadronicFormFactor:Spectator 13 -1 newdef WSBHadronicFormFactor:InQuark 13 4 newdef WSBHadronicFormFactor:OutQuark 13 1 newdef WSBHadronicFormFactor:Incoming 14 421 newdef WSBHadronicFormFactor:Outgoing 14 -323 newdef WSBHadronicFormFactor:Spin 14 1 newdef WSBHadronicFormFactor:Spectator 14 -2 newdef WSBHadronicFormFactor:InQuark 14 4 newdef WSBHadronicFormFactor:OutQuark 14 3 newdef WSBHadronicFormFactor:Incoming 15 411 newdef WSBHadronicFormFactor:Outgoing 15 -313 newdef WSBHadronicFormFactor:Spin 15 1 newdef WSBHadronicFormFactor:Spectator 15 -1 newdef WSBHadronicFormFactor:InQuark 15 4 newdef WSBHadronicFormFactor:OutQuark 15 3 newdef WSBHadronicFormFactor:Incoming 16 421 newdef WSBHadronicFormFactor:Outgoing 16 -213 newdef WSBHadronicFormFactor:Spin 16 1 newdef WSBHadronicFormFactor:Spectator 16 -2 newdef WSBHadronicFormFactor:InQuark 16 4 newdef WSBHadronicFormFactor:OutQuark 16 1 newdef WSBHadronicFormFactor:Incoming 17 421 newdef WSBHadronicFormFactor:Outgoing 17 113 newdef WSBHadronicFormFactor:Spin 17 1 newdef WSBHadronicFormFactor:Spectator 17 -2 newdef WSBHadronicFormFactor:InQuark 17 4 newdef WSBHadronicFormFactor:OutQuark 17 2 newdef WSBHadronicFormFactor:Incoming 18 411 newdef WSBHadronicFormFactor:Outgoing 18 113 newdef WSBHadronicFormFactor:Spin 18 1 newdef WSBHadronicFormFactor:Spectator 18 -1 newdef WSBHadronicFormFactor:InQuark 18 4 newdef WSBHadronicFormFactor:OutQuark 18 1 newdef WSBHadronicFormFactor:Incoming 19 411 newdef WSBHadronicFormFactor:Outgoing 19 213 newdef WSBHadronicFormFactor:Spin 19 1 newdef WSBHadronicFormFactor:Spectator 19 -1 newdef WSBHadronicFormFactor:InQuark 19 4 newdef WSBHadronicFormFactor:OutQuark 19 2 newdef WSBHadronicFormFactor:Incoming 20 411 newdef WSBHadronicFormFactor:Outgoing 20 223 newdef WSBHadronicFormFactor:Spin 20 1 newdef WSBHadronicFormFactor:Spectator 20 -1 newdef WSBHadronicFormFactor:InQuark 20 4 newdef WSBHadronicFormFactor:OutQuark 20 1 newdef WSBHadronicFormFactor:Incoming 21 421 newdef WSBHadronicFormFactor:Outgoing 21 223 newdef WSBHadronicFormFactor:Spin 21 1 newdef WSBHadronicFormFactor:Spectator 21 -2 newdef WSBHadronicFormFactor:InQuark 21 4 newdef WSBHadronicFormFactor:OutQuark 21 2 newdef WSBHadronicFormFactor:Incoming 22 431 newdef WSBHadronicFormFactor:Outgoing 22 221 newdef WSBHadronicFormFactor:Spin 22 0 newdef WSBHadronicFormFactor:Spectator 22 -3 newdef WSBHadronicFormFactor:InQuark 22 4 newdef WSBHadronicFormFactor:OutQuark 22 3 newdef WSBHadronicFormFactor:Incoming 23 431 newdef WSBHadronicFormFactor:Outgoing 23 331 newdef WSBHadronicFormFactor:Spin 23 0 newdef WSBHadronicFormFactor:Spectator 23 -3 newdef WSBHadronicFormFactor:InQuark 23 4 newdef WSBHadronicFormFactor:OutQuark 23 3 newdef WSBHadronicFormFactor:Incoming 24 431 newdef WSBHadronicFormFactor:Outgoing 24 311 newdef WSBHadronicFormFactor:Spin 24 0 newdef WSBHadronicFormFactor:Spectator 24 -3 newdef WSBHadronicFormFactor:InQuark 24 4 newdef WSBHadronicFormFactor:OutQuark 24 1 newdef WSBHadronicFormFactor:Incoming 25 431 newdef WSBHadronicFormFactor:Outgoing 25 321 newdef WSBHadronicFormFactor:Spin 25 0 newdef WSBHadronicFormFactor:Spectator 25 -3 newdef WSBHadronicFormFactor:InQuark 25 4 newdef WSBHadronicFormFactor:OutQuark 25 2 newdef WSBHadronicFormFactor:Incoming 26 431 newdef WSBHadronicFormFactor:Outgoing 26 313 newdef WSBHadronicFormFactor:Spin 26 1 newdef WSBHadronicFormFactor:Spectator 26 -3 newdef WSBHadronicFormFactor:InQuark 26 4 newdef WSBHadronicFormFactor:OutQuark 26 1 newdef WSBHadronicFormFactor:Incoming 27 431 newdef WSBHadronicFormFactor:Outgoing 27 323 newdef WSBHadronicFormFactor:Spin 27 1 newdef WSBHadronicFormFactor:Spectator 27 -3 newdef WSBHadronicFormFactor:InQuark 27 4 newdef WSBHadronicFormFactor:OutQuark 27 2 newdef WSBHadronicFormFactor:Incoming 28 431 newdef WSBHadronicFormFactor:Outgoing 28 333 newdef WSBHadronicFormFactor:Spin 28 1 newdef WSBHadronicFormFactor:Spectator 28 -3 newdef WSBHadronicFormFactor:InQuark 28 4 newdef WSBHadronicFormFactor:OutQuark 28 3 newdef WSBHadronicFormFactor:Incoming 29 -521 newdef WSBHadronicFormFactor:Outgoing 29 421 newdef WSBHadronicFormFactor:Spin 29 0 newdef WSBHadronicFormFactor:Spectator 29 -2 newdef WSBHadronicFormFactor:InQuark 29 5 newdef WSBHadronicFormFactor:OutQuark 29 4 newdef WSBHadronicFormFactor:Incoming 30 -511 newdef WSBHadronicFormFactor:Outgoing 30 411 newdef WSBHadronicFormFactor:Spin 30 0 newdef WSBHadronicFormFactor:Spectator 30 -2 newdef WSBHadronicFormFactor:InQuark 30 5 newdef WSBHadronicFormFactor:OutQuark 30 4 newdef WSBHadronicFormFactor:Incoming 31 -521 newdef WSBHadronicFormFactor:Outgoing 31 -321 newdef WSBHadronicFormFactor:Spin 31 0 newdef WSBHadronicFormFactor:Spectator 31 -2 newdef WSBHadronicFormFactor:InQuark 31 5 newdef WSBHadronicFormFactor:OutQuark 31 3 newdef WSBHadronicFormFactor:Incoming 32 -511 newdef WSBHadronicFormFactor:Outgoing 32 -311 newdef WSBHadronicFormFactor:Spin 32 0 newdef WSBHadronicFormFactor:Spectator 32 -1 newdef WSBHadronicFormFactor:InQuark 32 5 newdef WSBHadronicFormFactor:OutQuark 32 3 newdef WSBHadronicFormFactor:Incoming 33 -521 newdef WSBHadronicFormFactor:Outgoing 33 111 newdef WSBHadronicFormFactor:Spin 33 0 newdef WSBHadronicFormFactor:Spectator 33 -2 newdef WSBHadronicFormFactor:InQuark 33 5 newdef WSBHadronicFormFactor:OutQuark 33 2 newdef WSBHadronicFormFactor:Incoming 34 -511 newdef WSBHadronicFormFactor:Outgoing 34 211 newdef WSBHadronicFormFactor:Spin 34 0 newdef WSBHadronicFormFactor:Spectator 34 -1 newdef WSBHadronicFormFactor:InQuark 34 5 newdef WSBHadronicFormFactor:OutQuark 34 2 newdef WSBHadronicFormFactor:Incoming 35 -521 newdef WSBHadronicFormFactor:Outgoing 35 -211 newdef WSBHadronicFormFactor:Spin 35 0 newdef WSBHadronicFormFactor:Spectator 35 -2 newdef WSBHadronicFormFactor:InQuark 35 5 newdef WSBHadronicFormFactor:OutQuark 35 1 newdef WSBHadronicFormFactor:Incoming 36 -511 newdef WSBHadronicFormFactor:Outgoing 36 111 newdef WSBHadronicFormFactor:Spin 36 0 newdef WSBHadronicFormFactor:Spectator 36 -1 newdef WSBHadronicFormFactor:InQuark 36 5 newdef WSBHadronicFormFactor:OutQuark 36 1 newdef WSBHadronicFormFactor:Incoming 37 -521 newdef WSBHadronicFormFactor:Outgoing 37 221 newdef WSBHadronicFormFactor:Spin 37 0 newdef WSBHadronicFormFactor:Spectator 37 -2 newdef WSBHadronicFormFactor:InQuark 37 5 newdef WSBHadronicFormFactor:OutQuark 37 2 newdef WSBHadronicFormFactor:Incoming 38 -511 newdef WSBHadronicFormFactor:Outgoing 38 221 newdef WSBHadronicFormFactor:Spin 38 0 newdef WSBHadronicFormFactor:Spectator 38 -1 newdef WSBHadronicFormFactor:InQuark 38 5 newdef WSBHadronicFormFactor:OutQuark 38 1 newdef WSBHadronicFormFactor:Incoming 39 -521 newdef WSBHadronicFormFactor:Outgoing 39 331 newdef WSBHadronicFormFactor:Spin 39 0 newdef WSBHadronicFormFactor:Spectator 39 -2 newdef WSBHadronicFormFactor:InQuark 39 5 newdef WSBHadronicFormFactor:OutQuark 39 2 newdef WSBHadronicFormFactor:Incoming 40 -511 newdef WSBHadronicFormFactor:Outgoing 40 331 newdef WSBHadronicFormFactor:Spin 40 0 newdef WSBHadronicFormFactor:Spectator 40 -1 newdef WSBHadronicFormFactor:InQuark 40 5 newdef WSBHadronicFormFactor:OutQuark 40 1 newdef WSBHadronicFormFactor:Incoming 41 -521 newdef WSBHadronicFormFactor:Outgoing 41 423 newdef WSBHadronicFormFactor:Spin 41 1 newdef WSBHadronicFormFactor:Spectator 41 -2 newdef WSBHadronicFormFactor:InQuark 41 5 newdef WSBHadronicFormFactor:OutQuark 41 4 newdef WSBHadronicFormFactor:Incoming 42 -511 newdef WSBHadronicFormFactor:Outgoing 42 413 newdef WSBHadronicFormFactor:Spin 42 1 newdef WSBHadronicFormFactor:Spectator 42 -1 newdef WSBHadronicFormFactor:InQuark 42 5 newdef WSBHadronicFormFactor:OutQuark 42 4 newdef WSBHadronicFormFactor:Incoming 43 -521 newdef WSBHadronicFormFactor:Outgoing 43 -323 newdef WSBHadronicFormFactor:Spin 43 1 newdef WSBHadronicFormFactor:Spectator 43 -2 newdef WSBHadronicFormFactor:InQuark 43 5 newdef WSBHadronicFormFactor:OutQuark 43 3 newdef WSBHadronicFormFactor:Incoming 44 -511 newdef WSBHadronicFormFactor:Outgoing 44 -313 newdef WSBHadronicFormFactor:Spin 44 1 newdef WSBHadronicFormFactor:Spectator 44 -1 newdef WSBHadronicFormFactor:InQuark 44 5 newdef WSBHadronicFormFactor:OutQuark 44 3 newdef WSBHadronicFormFactor:Incoming 45 -521 newdef WSBHadronicFormFactor:Outgoing 45 113 newdef WSBHadronicFormFactor:Spin 45 1 newdef WSBHadronicFormFactor:Spectator 45 -2 newdef WSBHadronicFormFactor:InQuark 45 5 newdef WSBHadronicFormFactor:OutQuark 45 2 newdef WSBHadronicFormFactor:Incoming 46 -511 newdef WSBHadronicFormFactor:Outgoing 46 213 newdef WSBHadronicFormFactor:Spin 46 1 newdef WSBHadronicFormFactor:Spectator 46 -1 newdef WSBHadronicFormFactor:InQuark 46 5 newdef WSBHadronicFormFactor:OutQuark 46 2 newdef WSBHadronicFormFactor:Incoming 47 -521 newdef WSBHadronicFormFactor:Outgoing 47 -213 newdef WSBHadronicFormFactor:Spin 47 1 newdef WSBHadronicFormFactor:Spectator 47 -2 newdef WSBHadronicFormFactor:InQuark 47 5 newdef WSBHadronicFormFactor:OutQuark 47 1 newdef WSBHadronicFormFactor:Incoming 48 -511 newdef WSBHadronicFormFactor:Outgoing 48 113 newdef WSBHadronicFormFactor:Spin 48 1 newdef WSBHadronicFormFactor:Spectator 48 -1 newdef WSBHadronicFormFactor:InQuark 48 5 newdef WSBHadronicFormFactor:OutQuark 48 1 newdef WSBHadronicFormFactor:Incoming 49 -521 newdef WSBHadronicFormFactor:Outgoing 49 223 newdef WSBHadronicFormFactor:Spin 49 1 newdef WSBHadronicFormFactor:Spectator 49 -2 newdef WSBHadronicFormFactor:InQuark 49 5 newdef WSBHadronicFormFactor:OutQuark 49 2 newdef WSBHadronicFormFactor:Incoming 50 -511 newdef WSBHadronicFormFactor:Outgoing 50 223 newdef WSBHadronicFormFactor:Spin 50 1 newdef WSBHadronicFormFactor:Spectator 50 -1 newdef WSBHadronicFormFactor:InQuark 50 5 newdef WSBHadronicFormFactor:OutQuark 50 1 insert WSBHadronic:FormFactors 0 WSBHadronicFormFactor insert WSBHadronic:WeightLocation 0 0 insert WSBHadronic:WeightLocation 1 0 insert WSBHadronic:WeightLocation 2 0 insert WSBHadronic:WeightLocation 3 0 insert WSBHadronic:WeightLocation 4 0 insert WSBHadronic:WeightLocation 5 0 insert WSBHadronic:WeightLocation 6 0 insert WSBHadronic:WeightLocation 7 0 insert WSBHadronic:WeightLocation 8 0 insert WSBHadronic:WeightLocation 9 0 insert WSBHadronic:WeightLocation 10 0 insert WSBHadronic:WeightLocation 11 0 insert WSBHadronic:WeightLocation 12 0 insert WSBHadronic:WeightLocation 13 0 insert WSBHadronic:WeightLocation 14 0 insert WSBHadronic:WeightLocation 15 0 insert WSBHadronic:WeightLocation 16 0 insert WSBHadronic:WeightLocation 17 0 insert WSBHadronic:WeightLocation 18 0 insert WSBHadronic:WeightLocation 19 0 insert WSBHadronic:WeightLocation 20 0 insert WSBHadronic:WeightLocation 21 0 insert WSBHadronic:WeightLocation 22 0 insert WSBHadronic:WeightLocation 23 0 insert WSBHadronic:WeightLocation 24 0 insert WSBHadronic:WeightLocation 25 0 insert WSBHadronic:WeightLocation 26 0 insert WSBHadronic:WeightLocation 27 0 insert WSBHadronic:WeightLocation 28 0 insert WSBHadronic:WeightLocation 29 0 insert WSBHadronic:WeightLocation 30 0 insert WSBHadronic:WeightLocation 31 0 insert WSBHadronic:WeightLocation 32 0 insert WSBHadronic:WeightLocation 33 0 insert WSBHadronic:WeightLocation 34 0 insert WSBHadronic:WeightLocation 35 0 insert WSBHadronic:WeightLocation 36 0 insert WSBHadronic:WeightLocation 37 0 insert WSBHadronic:WeightLocation 38 0 insert WSBHadronic:WeightLocation 39 0 insert WSBHadronic:WeightLocation 40 0 insert WSBHadronic:WeightLocation 41 0 insert WSBHadronic:WeightLocation 42 0 insert WSBHadronic:WeightLocation 43 0 insert WSBHadronic:WeightLocation 44 0 insert WSBHadronic:WeightLocation 45 0 insert WSBHadronic:WeightLocation 46 0 insert WSBHadronic:WeightLocation 47 0 insert WSBHadronic:WeightLocation 48 0 insert WSBHadronic:WeightLocation 49 0 insert WSBHadronic:WeightLocation 50 0 insert WSBHadronic:WeightLocation 51 0 insert WSBHadronic:WeightLocation 52 0 insert WSBHadronic:WeightLocation 53 0 insert WSBHadronic:WeightLocation 54 0 insert WSBHadronic:WeightLocation 55 0 insert WSBHadronic:WeightLocation 56 0 insert WSBHadronic:WeightLocation 57 0 insert WSBHadronic:WeightLocation 58 0 insert WSBHadronic:WeightLocation 59 0 insert WSBHadronic:WeightLocation 60 0 insert WSBHadronic:WeightLocation 61 0 insert WSBHadronic:WeightLocation 62 0 insert WSBHadronic:WeightLocation 63 0 insert WSBHadronic:WeightLocation 64 0 insert WSBHadronic:WeightLocation 65 0 insert WSBHadronic:WeightLocation 66 0 insert WSBHadronic:WeightLocation 67 0 insert WSBHadronic:WeightLocation 68 0 insert WSBHadronic:WeightLocation 69 0 insert WSBHadronic:WeightLocation 70 0 insert WSBHadronic:WeightLocation 71 0 insert WSBHadronic:WeightLocation 72 0 insert WSBHadronic:WeightLocation 73 0 insert WSBHadronic:WeightLocation 74 0 insert WSBHadronic:WeightLocation 75 0 insert WSBHadronic:WeightLocation 76 0 insert WSBHadronic:WeightLocation 77 0 insert WSBHadronic:WeightLocation 78 0 insert WSBHadronic:WeightLocation 79 0 insert WSBHadronic:WeightLocation 80 0 insert WSBHadronic:WeightLocation 81 0 insert WSBHadronic:WeightLocation 82 0 insert WSBHadronic:WeightLocation 83 0 insert WSBHadronic:WeightLocation 84 0 insert WSBHadronic:WeightLocation 85 0 insert WSBHadronic:WeightLocation 86 0 insert WSBHadronic:WeightLocation 87 0 insert WSBHadronic:WeightLocation 88 0 insert WSBHadronic:WeightLocation 89 0 insert WSBHadronic:WeightLocation 90 0 insert WSBHadronic:WeightLocation 91 0 insert WSBHadronic:WeightLocation 92 0 insert WSBHadronic:WeightLocation 93 0 insert WSBHadronic:WeightLocation 94 0 insert WSBHadronic:WeightLocation 95 0 insert WSBHadronic:WeightLocation 96 0 insert WSBHadronic:WeightLocation 97 0 insert WSBHadronic:WeightLocation 98 0 insert WSBHadronic:WeightLocation 99 0 insert WSBHadronic:WeightLocation 100 0 insert WSBHadronic:WeightLocation 101 0 insert WSBHadronic:WeightLocation 102 0 insert WSBHadronic:WeightLocation 103 0 insert WSBHadronic:WeightLocation 104 0 insert WSBHadronic:WeightLocation 105 0 insert WSBHadronic:WeightLocation 106 0 insert WSBHadronic:WeightLocation 107 0 insert WSBHadronic:WeightLocation 108 0 insert WSBHadronic:WeightLocation 109 0 insert WSBHadronic:WeightLocation 110 0 insert WSBHadronic:WeightLocation 111 0 insert WSBHadronic:WeightLocation 112 0 insert WSBHadronic:WeightLocation 113 0 insert WSBHadronic:WeightLocation 114 0 insert WSBHadronic:WeightLocation 115 0 insert WSBHadronic:WeightLocation 116 0 insert WSBHadronic:WeightLocation 117 0 insert WSBHadronic:WeightLocation 118 0 insert WSBHadronic:WeightLocation 119 0 insert WSBHadronic:WeightLocation 120 0 insert WSBHadronic:WeightLocation 121 0 insert WSBHadronic:WeightLocation 122 0 insert WSBHadronic:WeightLocation 123 0 insert WSBHadronic:WeightLocation 124 0 insert WSBHadronic:WeightLocation 125 0 insert WSBHadronic:WeightLocation 126 0 insert WSBHadronic:WeightLocation 127 0 insert WSBHadronic:WeightLocation 128 0 insert WSBHadronic:WeightLocation 129 0 insert WSBHadronic:WeightLocation 130 0 insert WSBHadronic:WeightLocation 131 0 insert WSBHadronic:WeightLocation 132 0 insert WSBHadronic:WeightLocation 133 0 insert WSBHadronic:WeightLocation 134 0 insert WSBHadronic:WeightLocation 135 0 insert WSBHadronic:WeightLocation 136 0 insert WSBHadronic:WeightLocation 137 0 insert WSBHadronic:WeightLocation 138 0 insert WSBHadronic:WeightLocation 139 0 insert WSBHadronic:WeightLocation 140 0 insert WSBHadronic:WeightLocation 141 0 insert WSBHadronic:WeightLocation 142 0 insert WSBHadronic:WeightLocation 143 0 insert WSBHadronic:WeightLocation 144 0 insert WSBHadronic:WeightLocation 145 0 insert WSBHadronic:WeightLocation 146 0 insert WSBHadronic:WeightLocation 147 0 insert WSBHadronic:WeightLocation 148 0 insert WSBHadronic:WeightLocation 149 0 insert WSBHadronic:WeightLocation 150 0 insert WSBHadronic:WeightLocation 151 0 insert WSBHadronic:WeightLocation 152 0 insert WSBHadronic:WeightLocation 153 0 insert WSBHadronic:WeightLocation 154 0 insert WSBHadronic:WeightLocation 155 0 insert WSBHadronic:WeightLocation 156 0 insert WSBHadronic:WeightLocation 157 0 insert WSBHadronic:WeightLocation 158 0 insert WSBHadronic:WeightLocation 159 0 insert WSBHadronic:WeightLocation 160 0 insert WSBHadronic:WeightLocation 161 0 insert WSBHadronic:WeightLocation 162 0 insert WSBHadronic:WeightLocation 163 0 insert WSBHadronic:WeightLocation 164 0 insert WSBHadronic:WeightLocation 165 0 insert WSBHadronic:WeightLocation 166 0 insert WSBHadronic:WeightLocation 167 0 insert WSBHadronic:WeightLocation 168 0 insert WSBHadronic:WeightLocation 169 0 insert WSBHadronic:WeightLocation 170 0 insert WSBHadronic:WeightLocation 171 0 insert WSBHadronic:WeightLocation 172 0 insert WSBHadronic:WeightLocation 173 0 insert WSBHadronic:WeightLocation 174 0 insert WSBHadronic:WeightLocation 175 0 insert WSBHadronic:WeightLocation 176 0 insert WSBHadronic:WeightLocation 177 0 insert WSBHadronic:WeightLocation 178 0 insert WSBHadronic:WeightLocation 179 0 insert WSBHadronic:WeightLocation 180 0 insert WSBHadronic:WeightLocation 181 0 insert WSBHadronic:WeightLocation 182 0 insert WSBHadronic:WeightLocation 183 0 insert WSBHadronic:WeightLocation 184 0 insert WSBHadronic:WeightLocation 185 0 insert WSBHadronic:WeightLocation 186 0 insert WSBHadronic:WeightLocation 187 0 insert WSBHadronic:WeightLocation 188 0 insert WSBHadronic:WeightLocation 189 0 insert WSBHadronic:WeightLocation 190 0 insert WSBHadronic:WeightLocation 191 0 insert WSBHadronic:WeightLocation 192 0 insert WSBHadronic:WeightLocation 193 0 insert WSBHadronic:WeightLocation 194 0 insert WSBHadronic:WeightLocation 195 0 insert WSBHadronic:WeightLocation 196 0 insert WSBHadronic:WeightLocation 197 0 insert WSBHadronic:WeightLocation 198 0 insert WSBHadronic:WeightLocation 199 0 insert WSBHadronic:WeightLocation 200 0 insert WSBHadronic:WeightLocation 201 0 insert WSBHadronic:WeightLocation 202 0 insert WSBHadronic:WeightLocation 203 0 insert WSBHadronic:WeightLocation 204 0 insert WSBHadronic:WeightLocation 205 0 insert WSBHadronic:WeightLocation 206 0 insert WSBHadronic:WeightLocation 207 0 insert WSBHadronic:WeightLocation 208 0 insert WSBHadronic:WeightLocation 209 0 insert WSBHadronic:WeightLocation 210 0 insert WSBHadronic:WeightLocation 211 0 insert WSBHadronic:WeightLocation 212 0 insert WSBHadronic:WeightLocation 213 0 insert WSBHadronic:WeightLocation 214 0 insert WSBHadronic:WeightLocation 215 0 insert WSBHadronic:WeightLocation 216 0 insert WSBHadronic:WeightLocation 217 0 insert WSBHadronic:WeightLocation 218 0 insert WSBHadronic:WeightLocation 219 0 insert WSBHadronic:WeightLocation 220 0 insert WSBHadronic:WeightLocation 221 0 insert WSBHadronic:WeightLocation 222 0 insert WSBHadronic:WeightLocation 223 0 insert WSBHadronic:WeightLocation 224 0 insert WSBHadronic:WeightLocation 225 0 insert WSBHadronic:WeightLocation 226 0 insert WSBHadronic:WeightLocation 227 0 insert WSBHadronic:WeightLocation 228 0 insert WSBHadronic:WeightLocation 229 0 insert WSBHadronic:WeightLocation 230 0 insert WSBHadronic:WeightLocation 231 0 insert WSBHadronic:WeightLocation 232 0 insert WSBHadronic:WeightLocation 233 0 insert WSBHadronic:WeightLocation 234 0 insert WSBHadronic:WeightLocation 235 0 insert WSBHadronic:WeightLocation 236 0 insert WSBHadronic:WeightLocation 237 0 insert WSBHadronic:WeightLocation 238 0 insert WSBHadronic:WeightLocation 239 0 insert WSBHadronic:WeightLocation 240 0 insert WSBHadronic:WeightLocation 241 0 insert WSBHadronic:WeightLocation 242 0 insert WSBHadronic:WeightLocation 243 0 insert WSBHadronic:WeightLocation 244 0 insert WSBHadronic:WeightLocation 245 0 insert WSBHadronic:WeightLocation 246 0 insert WSBHadronic:WeightLocation 247 0 insert WSBHadronic:WeightLocation 248 0 insert WSBHadronic:WeightLocation 249 0 insert WSBHadronic:WeightLocation 250 0 insert WSBHadronic:WeightLocation 251 0 insert WSBHadronic:WeightLocation 252 0 insert WSBHadronic:WeightLocation 253 0 insert WSBHadronic:WeightLocation 254 0 insert WSBHadronic:WeightLocation 255 0 insert WSBHadronic:WeightLocation 256 0 insert WSBHadronic:WeightLocation 257 0 insert WSBHadronic:WeightLocation 258 0 insert WSBHadronic:WeightLocation 259 0 insert WSBHadronic:WeightLocation 260 0 insert WSBHadronic:WeightLocation 261 0 insert WSBHadronic:WeightLocation 262 0 insert WSBHadronic:WeightLocation 263 0 insert WSBHadronic:WeightLocation 264 0 insert WSBHadronic:WeightLocation 265 0 insert WSBHadronic:WeightLocation 266 0 insert WSBHadronic:WeightLocation 267 0 insert WSBHadronic:WeightLocation 268 0 insert WSBHadronic:WeightLocation 269 0 insert WSBHadronic:WeightLocation 270 0 insert WSBHadronic:WeightLocation 271 0 insert WSBHadronic:WeightLocation 272 0 insert WSBHadronic:WeightLocation 273 0 insert WSBHadronic:WeightLocation 274 0 insert WSBHadronic:WeightLocation 275 0 insert WSBHadronic:WeightLocation 276 0 insert WSBHadronic:WeightLocation 277 0 insert WSBHadronic:WeightLocation 278 0 insert WSBHadronic:WeightLocation 279 0 insert WSBHadronic:WeightLocation 280 0 insert WSBHadronic:WeightLocation 281 0 insert WSBHadronic:WeightLocation 282 0 insert WSBHadronic:WeightLocation 283 0 insert WSBHadronic:WeightLocation 284 0 insert WSBHadronic:WeightLocation 285 0 insert WSBHadronic:WeightLocation 286 0 insert WSBHadronic:WeightLocation 287 0 insert WSBHadronic:WeightLocation 288 0 insert WSBHadronic:WeightLocation 289 0 insert WSBHadronic:WeightLocation 290 0 insert WSBHadronic:WeightLocation 291 0 insert WSBHadronic:WeightLocation 292 0 insert WSBHadronic:WeightLocation 293 0 insert WSBHadronic:WeightLocation 294 0 insert WSBHadronic:WeightLocation 295 0 insert WSBHadronic:WeightLocation 296 0 insert WSBHadronic:WeightLocation 297 0 insert WSBHadronic:WeightLocation 298 0 insert WSBHadronic:WeightLocation 299 0 insert WSBHadronic:WeightLocation 300 0 insert WSBHadronic:WeightLocation 301 0 insert WSBHadronic:WeightLocation 302 0 insert WSBHadronic:WeightLocation 303 0 insert WSBHadronic:WeightLocation 304 0 insert WSBHadronic:WeightLocation 305 0 insert WSBHadronic:WeightLocation 306 0 insert WSBHadronic:WeightLocation 307 0 insert WSBHadronic:WeightLocation 308 0 insert WSBHadronic:WeightLocation 309 0 insert WSBHadronic:WeightLocation 310 0 insert WSBHadronic:WeightLocation 311 0 insert WSBHadronic:WeightLocation 312 0 insert WSBHadronic:WeightLocation 313 0 insert WSBHadronic:WeightLocation 314 0 insert WSBHadronic:WeightLocation 315 0 insert WSBHadronic:WeightLocation 316 0 insert WSBHadronic:WeightLocation 317 0 insert WSBHadronic:WeightLocation 318 0 insert WSBHadronic:WeightLocation 319 0 insert WSBHadronic:WeightLocation 320 0 insert WSBHadronic:WeightLocation 321 0 insert WSBHadronic:WeightLocation 322 0 insert WSBHadronic:WeightLocation 323 0 insert WSBHadronic:WeightLocation 324 0 insert WSBHadronic:WeightLocation 325 0 insert WSBHadronic:WeightLocation 326 0 insert WSBHadronic:WeightLocation 327 0 insert WSBHadronic:WeightLocation 328 0 insert WSBHadronic:WeightLocation 329 0 insert WSBHadronic:WeightLocation 330 0 insert WSBHadronic:WeightLocation 331 0 insert WSBHadronic:WeightLocation 332 0 insert WSBHadronic:WeightLocation 333 0 insert WSBHadronic:WeightLocation 334 0 insert WSBHadronic:WeightLocation 335 0 insert WSBHadronic:WeightLocation 336 0 insert WSBHadronic:WeightLocation 337 0 insert WSBHadronic:WeightLocation 338 0 insert WSBHadronic:WeightLocation 339 0 insert WSBHadronic:WeightLocation 340 0 insert WSBHadronic:WeightLocation 341 0 insert WSBHadronic:WeightLocation 342 0 insert WSBHadronic:WeightLocation 343 0 insert WSBHadronic:WeightLocation 344 0 insert WSBHadronic:WeightLocation 345 0 insert WSBHadronic:WeightLocation 346 0 insert WSBHadronic:WeightLocation 347 0 insert WSBHadronic:WeightLocation 348 0 insert WSBHadronic:WeightLocation 349 0 insert WSBHadronic:WeightLocation 350 0 insert WSBHadronic:WeightLocation 351 0 insert WSBHadronic:WeightLocation 352 0 insert WSBHadronic:WeightLocation 353 0 insert WSBHadronic:WeightLocation 354 0 insert WSBHadronic:WeightLocation 355 0 insert WSBHadronic:WeightLocation 356 0 insert WSBHadronic:WeightLocation 357 0 insert WSBHadronic:WeightLocation 358 0 insert WSBHadronic:WeightLocation 359 0 insert WSBHadronic:WeightLocation 360 0 insert WSBHadronic:MaximumWeight 0 0.557009 insert WSBHadronic:MaximumWeight 1 1.78347e-13 insert WSBHadronic:MaximumWeight 2 1.63561e-14 insert WSBHadronic:MaximumWeight 3 0.0728997 insert WSBHadronic:MaximumWeight 4 0.00567313 insert WSBHadronic:MaximumWeight 5 0.164288 insert WSBHadronic:MaximumWeight 6 0.00633936 insert WSBHadronic:MaximumWeight 7 0.154232 insert WSBHadronic:MaximumWeight 8 0.0423515 insert WSBHadronic:MaximumWeight 9 0.0144604 insert WSBHadronic:MaximumWeight 10 0.253468 insert WSBHadronic:MaximumWeight 11 0.0162035 insert WSBHadronic:MaximumWeight 12 0.395527 insert WSBHadronic:MaximumWeight 13 0.00390394 insert WSBHadronic:MaximumWeight 14 0.000311206 insert WSBHadronic:MaximumWeight 15 0.0102362 insert WSBHadronic:MaximumWeight 16 0.000521172 insert WSBHadronic:MaximumWeight 17 0.0195025 insert WSBHadronic:MaximumWeight 18 0.00034976 insert WSBHadronic:MaximumWeight 19 0.000197375 insert WSBHadronic:MaximumWeight 20 9.7655e-05 insert WSBHadronic:MaximumWeight 21 2.78878e-05 insert WSBHadronic:MaximumWeight 22 0.00993469 insert WSBHadronic:MaximumWeight 23 0.00096261 insert WSBHadronic:MaximumWeight 24 0.000267229 insert WSBHadronic:MaximumWeight 25 0.00196102 insert WSBHadronic:MaximumWeight 26 4.55158e-05 insert WSBHadronic:MaximumWeight 27 0.0162144 insert WSBHadronic:MaximumWeight 28 0.000877908 insert WSBHadronic:MaximumWeight 29 0.0016631 insert WSBHadronic:MaximumWeight 30 0.000398163 insert WSBHadronic:MaximumWeight 31 0.00865771 insert WSBHadronic:MaximumWeight 32 0.000674851 insert WSBHadronic:MaximumWeight 33 0.025273 insert WSBHadronic:MaximumWeight 34 4.31676e-05 insert WSBHadronic:MaximumWeight 35 0.00153867 insert WSBHadronic:MaximumWeight 36 0.000142386 insert WSBHadronic:MaximumWeight 37 0.000131464 insert WSBHadronic:MaximumWeight 38 0.000228226 insert WSBHadronic:MaximumWeight 39 0.0099712 insert WSBHadronic:MaximumWeight 40 0.000233923 insert WSBHadronic:MaximumWeight 41 0.00563139 insert WSBHadronic:MaximumWeight 42 0.00450505 insert WSBHadronic:MaximumWeight 43 0.000364691 insert WSBHadronic:MaximumWeight 44 3.56039e-05 insert WSBHadronic:MaximumWeight 45 1.03757e-05 insert WSBHadronic:MaximumWeight 46 0.00369622 insert WSBHadronic:MaximumWeight 47 1.00154e-05 insert WSBHadronic:MaximumWeight 48 0.00164718 insert WSBHadronic:MaximumWeight 49 0.000373777 insert WSBHadronic:MaximumWeight 50 1.09145e-05 insert WSBHadronic:MaximumWeight 51 0.00388833 insert WSBHadronic:MaximumWeight 52 0.000114629 insert WSBHadronic:MaximumWeight 53 0.000148446 insert WSBHadronic:MaximumWeight 54 0.00133781 insert WSBHadronic:MaximumWeight 55 0.000160792 insert WSBHadronic:MaximumWeight 56 0.00336156 insert WSBHadronic:MaximumWeight 57 4.23374e-06 insert WSBHadronic:MaximumWeight 58 0.00150806 insert WSBHadronic:MaximumWeight 59 5.30379e-05 insert WSBHadronic:MaximumWeight 60 6.38052e-06 insert WSBHadronic:MaximumWeight 61 4.87735e-07 insert WSBHadronic:MaximumWeight 62 0.000173241 insert WSBHadronic:MaximumWeight 63 3.40529e-07 insert WSBHadronic:MaximumWeight 64 6.10353e-05 insert WSBHadronic:MaximumWeight 65 0.00121756 insert WSBHadronic:MaximumWeight 66 8.4437e-06 insert WSBHadronic:MaximumWeight 67 1.04425e-05 insert WSBHadronic:MaximumWeight 68 0.0527204 insert WSBHadronic:MaximumWeight 69 0.00224479 insert WSBHadronic:MaximumWeight 70 0.280061 insert WSBHadronic:MaximumWeight 71 0.012778 insert WSBHadronic:MaximumWeight 72 0.0708723 insert WSBHadronic:MaximumWeight 73 0.00567116 insert WSBHadronic:MaximumWeight 74 0.230608 insert WSBHadronic:MaximumWeight 75 0.0325325 insert WSBHadronic:MaximumWeight 76 0.184892 insert WSBHadronic:MaximumWeight 77 0.0020894 insert WSBHadronic:MaximumWeight 78 0.000134383 insert WSBHadronic:MaximumWeight 79 0.0158326 insert WSBHadronic:MaximumWeight 80 0.00098963 insert WSBHadronic:MaximumWeight 81 0.0168167 insert WSBHadronic:MaximumWeight 82 1.19813e-05 insert WSBHadronic:MaximumWeight 83 0.0042682 insert WSBHadronic:MaximumWeight 84 0.00141805 insert WSBHadronic:MaximumWeight 85 4.71951e-05 insert WSBHadronic:MaximumWeight 86 0.00311744 insert WSBHadronic:MaximumWeight 87 8.60579e-05 insert WSBHadronic:MaximumWeight 88 0.0306552 insert WSBHadronic:MaximumWeight 89 0.000747719 insert WSBHadronic:MaximumWeight 90 0.000172703 insert WSBHadronic:MaximumWeight 91 0.0067618 insert WSBHadronic:MaximumWeight 92 0.00128433 insert WSBHadronic:MaximumWeight 93 0.0218434 insert WSBHadronic:MaximumWeight 94 6.15586e-05 insert WSBHadronic:MaximumWeight 95 0.018769 insert WSBHadronic:MaximumWeight 96 0.0164155 insert WSBHadronic:MaximumWeight 97 0.000447911 insert WSBHadronic:MaximumWeight 98 0.00393579 insert WSBHadronic:MaximumWeight 99 0.000478632 insert WSBHadronic:MaximumWeight 100 0.00267122 insert WSBHadronic:MaximumWeight 101 0.0127802 insert WSBHadronic:MaximumWeight 102 3.29165e-05 insert WSBHadronic:MaximumWeight 103 0.0117301 insert WSBHadronic:MaximumWeight 104 0.00805338 insert WSBHadronic:MaximumWeight 105 0.00201896 insert WSBHadronic:MaximumWeight 106 0.000180546 insert WSBHadronic:MaximumWeight 107 0.0640599 insert WSBHadronic:MaximumWeight 108 0.000425624 insert WSBHadronic:MaximumWeight 109 0.0424012 insert WSBHadronic:MaximumWeight 110 0.000666888 insert WSBHadronic:MaximumWeight 111 0.100724 insert WSBHadronic:MaximumWeight 112 0.00181883 insert WSBHadronic:MaximumWeight 113 0.115609 insert WSBHadronic:MaximumWeight 114 0.0255546 insert WSBHadronic:MaximumWeight 115 0.00137845 insert WSBHadronic:MaximumWeight 116 0.0373765 insert WSBHadronic:MaximumWeight 117 0.000573224 insert WSBHadronic:MaximumWeight 118 0.0018898 insert WSBHadronic:MaximumWeight 119 0.00403168 insert WSBHadronic:MaximumWeight 120 0.000106079 insert WSBHadronic:MaximumWeight 121 0.0100848 insert WSBHadronic:MaximumWeight 122 0.000237637 insert WSBHadronic:MaximumWeight 123 0.0138073 insert WSBHadronic:MaximumWeight 124 0.000362 insert WSBHadronic:MaximumWeight 125 0.0204465 insert WSBHadronic:MaximumWeight 126 0.000907068 insert WSBHadronic:MaximumWeight 127 0.00209602 insert WSBHadronic:MaximumWeight 128 0.000561256 insert WSBHadronic:MaximumWeight 129 2.06348e-05 insert WSBHadronic:MaximumWeight 130 0.0268117 insert WSBHadronic:MaximumWeight 131 0.00125649 insert WSBHadronic:MaximumWeight 132 0.00358176 insert WSBHadronic:MaximumWeight 133 0.0202186 insert WSBHadronic:MaximumWeight 134 0.000302234 insert WSBHadronic:MaximumWeight 135 0.00955449 insert WSBHadronic:MaximumWeight 136 0.000330813 insert WSBHadronic:MaximumWeight 137 0.0112905 insert WSBHadronic:MaximumWeight 138 0.00186137 insert WSBHadronic:MaximumWeight 139 0.00438625 insert WSBHadronic:MaximumWeight 140 0.0082771 insert WSBHadronic:MaximumWeight 141 0.0579115 insert WSBHadronic:MaximumWeight 142 0.000890613 insert WSBHadronic:MaximumWeight 143 0.126085 insert WSBHadronic:MaximumWeight 144 0.791607 insert WSBHadronic:MaximumWeight 145 0.0405113 insert WSBHadronic:MaximumWeight 146 0.00375097 insert WSBHadronic:MaximumWeight 147 0.000309481 insert WSBHadronic:MaximumWeight 148 0.000695472 insert WSBHadronic:MaximumWeight 149 0.0188644 insert WSBHadronic:MaximumWeight 150 0.00162422 insert WSBHadronic:MaximumWeight 151 0.0154084 insert WSBHadronic:MaximumWeight 152 0.00116469 insert WSBHadronic:MaximumWeight 153 0.0458991 insert WSBHadronic:MaximumWeight 154 0.000514126 insert WSBHadronic:MaximumWeight 155 0.0105728 insert WSBHadronic:MaximumWeight 156 0.00335736 insert WSBHadronic:MaximumWeight 157 0.00544205 insert WSBHadronic:MaximumWeight 158 0.00042991 insert WSBHadronic:MaximumWeight 159 0.000637019 insert WSBHadronic:MaximumWeight 160 0.0172774 insert WSBHadronic:MaximumWeight 161 0.00148694 insert WSBHadronic:MaximumWeight 162 0.0167193 insert WSBHadronic:MaximumWeight 163 0.00148333 insert WSBHadronic:MaximumWeight 164 0.0420472 insert WSBHadronic:MaximumWeight 165 0.000470778 insert WSBHadronic:MaximumWeight 166 0.00966728 insert WSBHadronic:MaximumWeight 167 0.00306477 insert WSBHadronic:MaximumWeight 168 4.21318e-07 insert WSBHadronic:MaximumWeight 169 1.67109e-07 insert WSBHadronic:MaximumWeight 170 8.55296e-08 insert WSBHadronic:MaximumWeight 171 2.50422e-06 insert WSBHadronic:MaximumWeight 172 5.1013e-07 insert WSBHadronic:MaximumWeight 173 5.88594e-07 insert WSBHadronic:MaximumWeight 174 2.20376e-07 insert WSBHadronic:MaximumWeight 175 0.00024117 insert WSBHadronic:MaximumWeight 176 2.0473e-06 insert WSBHadronic:MaximumWeight 177 0.000639815 insert WSBHadronic:MaximumWeight 178 0.000251343 insert WSBHadronic:MaximumWeight 179 2.42005e-08 insert WSBHadronic:MaximumWeight 180 1.23536e-08 insert WSBHadronic:MaximumWeight 181 1.16893e-08 insert WSBHadronic:MaximumWeight 182 1.51866e-05 insert WSBHadronic:MaximumWeight 183 2.29872e-06 insert WSBHadronic:MaximumWeight 184 7.69508e-08 insert WSBHadronic:MaximumWeight 185 2.07139e-07 insert WSBHadronic:MaximumWeight 186 2.02295e-07 insert WSBHadronic:MaximumWeight 187 1.24153e-05 insert WSBHadronic:MaximumWeight 188 1.87898e-06 insert WSBHadronic:MaximumWeight 189 0.000586926 insert WSBHadronic:MaximumWeight 190 0.000230364 insert WSBHadronic:MaximumWeight 191 5.05645e-06 insert WSBHadronic:MaximumWeight 192 1.1171e-06 insert WSBHadronic:MaximumWeight 193 3.09059e-05 insert WSBHadronic:MaximumWeight 194 2.91272e-06 insert WSBHadronic:MaximumWeight 195 2.15663e-05 insert WSBHadronic:MaximumWeight 196 1.78876e-06 insert WSBHadronic:MaximumWeight 197 6.9607e-05 insert WSBHadronic:MaximumWeight 198 1.05599e-06 insert WSBHadronic:MaximumWeight 199 2.29413e-05 insert WSBHadronic:MaximumWeight 200 9.4595e-06 insert WSBHadronic:MaximumWeight 201 1.51916e-05 insert WSBHadronic:MaximumWeight 202 1.20926e-06 insert WSBHadronic:MaximumWeight 203 2.05155e-06 insert WSBHadronic:MaximumWeight 204 5.67586e-05 insert WSBHadronic:MaximumWeight 205 5.3492e-06 insert WSBHadronic:MaximumWeight 206 4.84362e-05 insert WSBHadronic:MaximumWeight 207 4.83883e-06 insert WSBHadronic:MaximumWeight 208 0.000127833 insert WSBHadronic:MaximumWeight 209 1.939e-06 insert WSBHadronic:MaximumWeight 210 4.21346e-05 insert WSBHadronic:MaximumWeight 211 1.73721e-05 insert WSBHadronic:MaximumWeight 212 1.99322e-06 insert WSBHadronic:MaximumWeight 213 1.00113e-06 insert WSBHadronic:MaximumWeight 214 1.0629e-07 insert WSBHadronic:MaximumWeight 215 6.10961e-06 insert WSBHadronic:MaximumWeight 216 6.66537e-06 insert WSBHadronic:MaximumWeight 217 3.31242e-06 insert WSBHadronic:MaximumWeight 218 0.0029994 insert WSBHadronic:MaximumWeight 219 8.81898e-08 insert WSBHadronic:MaximumWeight 220 2.94592e-05 insert WSBHadronic:MaximumWeight 221 1.27859e-05 insert WSBHadronic:MaximumWeight 222 3.61624e-07 insert WSBHadronic:MaximumWeight 223 8.35368e-10 insert WSBHadronic:MaximumWeight 224 6.9609e-09 insert WSBHadronic:MaximumWeight 225 0.000114887 insert WSBHadronic:MaximumWeight 226 4.88155e-08 insert WSBHadronic:MaximumWeight 227 1.44343e-06 insert WSBHadronic:MaximumWeight 228 3.48502e-07 insert WSBHadronic:MaximumWeight 229 1.52128e-06 insert WSBHadronic:MaximumWeight 230 9.528e-05 insert WSBHadronic:MaximumWeight 231 4.04999e-08 insert WSBHadronic:MaximumWeight 232 1.35363e-05 insert WSBHadronic:MaximumWeight 233 5.87803e-06 insert WSBHadronic:MaximumWeight 234 4.65095e-07 insert WSBHadronic:MaximumWeight 235 1.28586e-05 insert WSBHadronic:MaximumWeight 236 1.208e-06 insert WSBHadronic:MaximumWeight 237 8.82559e-06 insert WSBHadronic:MaximumWeight 238 7.12659e-07 insert WSBHadronic:MaximumWeight 239 2.90052e-05 insert WSBHadronic:MaximumWeight 240 4.32948e-07 insert WSBHadronic:MaximumWeight 241 9.40713e-06 insert WSBHadronic:MaximumWeight 242 3.83708e-06 insert WSBHadronic:MaximumWeight 243 7.72687e-08 insert WSBHadronic:MaximumWeight 244 1.17734e-07 insert WSBHadronic:MaximumWeight 245 4.78341e-05 insert WSBHadronic:MaximumWeight 246 2.03247e-08 insert WSBHadronic:MaximumWeight 247 6.99655e-08 insert WSBHadronic:MaximumWeight 248 1.61131e-06 insert WSBHadronic:MaximumWeight 249 6.33857e-07 insert WSBHadronic:MaximumWeight 250 3.91856e-05 insert WSBHadronic:MaximumWeight 251 1.66465e-08 insert WSBHadronic:MaximumWeight 252 5.2945e-06 insert WSBHadronic:MaximumWeight 253 2.10942e-06 insert WSBHadronic:MaximumWeight 254 2.74357e-07 insert WSBHadronic:MaximumWeight 255 7.57677e-06 insert WSBHadronic:MaximumWeight 256 7.06115e-07 insert WSBHadronic:MaximumWeight 257 4.94403e-06 insert WSBHadronic:MaximumWeight 258 3.6335e-07 insert WSBHadronic:MaximumWeight 259 1.70184e-05 insert WSBHadronic:MaximumWeight 260 2.4168e-07 insert WSBHadronic:MaximumWeight 261 5.33038e-06 insert WSBHadronic:MaximumWeight 262 2.12479e-06 insert WSBHadronic:MaximumWeight 263 4.29607e-08 insert WSBHadronic:MaximumWeight 264 2.82302e-05 insert WSBHadronic:MaximumWeight 265 1.19968e-08 insert WSBHadronic:MaximumWeight 266 3.07128e-08 insert WSBHadronic:MaximumWeight 267 1.09718e-06 insert WSBHadronic:MaximumWeight 268 3.72352e-07 insert WSBHadronic:MaximumWeight 269 2.19064e-05 insert WSBHadronic:MaximumWeight 270 9.44089e-09 insert WSBHadronic:MaximumWeight 271 2.66611e-06 insert WSBHadronic:MaximumWeight 272 8.02166e-07 insert WSBHadronic:MaximumWeight 273 0.000356451 insert WSBHadronic:MaximumWeight 274 0.00909298 insert WSBHadronic:MaximumWeight 275 0.000591044 insert WSBHadronic:MaximumWeight 276 0.0130001 insert WSBHadronic:MaximumWeight 277 0.00146361 insert WSBHadronic:MaximumWeight 278 0.0538321 insert WSBHadronic:MaximumWeight 279 0.00125783 insert WSBHadronic:MaximumWeight 280 0.0305713 insert WSBHadronic:MaximumWeight 281 0.0145916 insert WSBHadronic:MaximumWeight 282 0.00501841 insert WSBHadronic:MaximumWeight 283 0.000386697 insert WSBHadronic:MaximumWeight 284 0.00037333 insert WSBHadronic:MaximumWeight 285 0.00952274 insert WSBHadronic:MaximumWeight 286 0.000617276 insert WSBHadronic:MaximumWeight 287 0.0183709 insert WSBHadronic:MaximumWeight 288 0.00210945 insert WSBHadronic:MaximumWeight 289 0.0561577 insert WSBHadronic:MaximumWeight 290 0.00125504 insert WSBHadronic:MaximumWeight 291 0.032033 insert WSBHadronic:MaximumWeight 292 0.0152999 insert WSBHadronic:MaximumWeight 293 5.67462e-06 insert WSBHadronic:MaximumWeight 294 3.32679e-06 insert WSBHadronic:MaximumWeight 295 2.94639e-06 insert WSBHadronic:MaximumWeight 296 8.82582e-07 insert WSBHadronic:MaximumWeight 297 1.45723e-05 insert WSBHadronic:MaximumWeight 298 0.0100071 insert WSBHadronic:MaximumWeight 299 0.00428907 insert WSBHadronic:MaximumWeight 300 7.30277e-08 insert WSBHadronic:MaximumWeight 301 3.66623e-08 insert WSBHadronic:MaximumWeight 302 3.21478e-08 insert WSBHadronic:MaximumWeight 303 3.33074e-05 insert WSBHadronic:MaximumWeight 304 5.0465e-06 insert WSBHadronic:MaximumWeight 305 2.78834e-07 insert WSBHadronic:MaximumWeight 306 4.83759e-07 insert WSBHadronic:MaximumWeight 307 8.37436e-07 insert WSBHadronic:MaximumWeight 308 8.58625e-05 insert WSBHadronic:MaximumWeight 309 1.32262e-05 insert WSBHadronic:MaximumWeight 310 0.0088891 insert WSBHadronic:MaximumWeight 311 0.00389875 insert WSBHadronic:MaximumWeight 312 1.2021e-06 insert WSBHadronic:MaximumWeight 313 3.19538e-05 insert WSBHadronic:MaximumWeight 314 2.54088e-06 insert WSBHadronic:MaximumWeight 315 3.18195e-05 insert WSBHadronic:MaximumWeight 316 0.000139886 insert WSBHadronic:MaximumWeight 317 3.51218e-06 insert WSBHadronic:MaximumWeight 318 8.72898e-05 insert WSBHadronic:MaximumWeight 319 4.55348e-05 insert WSBHadronic:MaximumWeight 320 2.22658e-05 insert WSBHadronic:MaximumWeight 321 1.74051e-06 insert WSBHadronic:MaximumWeight 322 2.19717e-06 insert WSBHadronic:MaximumWeight 323 5.8463e-05 insert WSBHadronic:MaximumWeight 324 4.67133e-06 insert WSBHadronic:MaximumWeight 325 8.3142e-05 insert WSBHadronic:MaximumWeight 326 9.33899e-06 insert WSBHadronic:MaximumWeight 327 0.000259491 insert WSBHadronic:MaximumWeight 328 6.11303e-06 insert WSBHadronic:MaximumWeight 329 0.000160028 insert WSBHadronic:MaximumWeight 330 8.33209e-05 insert WSBHadronic:MaximumWeight 331 1.13692e-07 insert WSBHadronic:MaximumWeight 332 4.39093e-05 insert WSBHadronic:MaximumWeight 333 6.67366e-06 insert WSBHadronic:MaximumWeight 334 3.00292e-07 insert WSBHadronic:MaximumWeight 335 0.000206543 insert WSBHadronic:MaximumWeight 336 0.00010703 insert WSBHadronic:MaximumWeight 337 0.000123779 insert WSBHadronic:MaximumWeight 338 5.25496e-08 insert WSBHadronic:MaximumWeight 339 1.96087e-06 insert WSBHadronic:MaximumWeight 340 1.15348e-07 insert WSBHadronic:MaximumWeight 341 3.01429e-06 insert WSBHadronic:MaximumWeight 342 0.000318598 insert WSBHadronic:MaximumWeight 343 1.35584e-07 insert WSBHadronic:MaximumWeight 344 9.56531e-05 insert WSBHadronic:MaximumWeight 345 4.91327e-05 insert WSBHadronic:MaximumWeight 346 2.05039e-06 insert WSBHadronic:MaximumWeight 347 5.47924e-05 insert WSBHadronic:MaximumWeight 348 4.50713e-06 insert WSBHadronic:MaximumWeight 349 0.000207201 insert WSBHadronic:MaximumWeight 350 5.52843e-06 insert WSBHadronic:MaximumWeight 351 0.000159173 insert WSBHadronic:MaximumWeight 352 8.48333e-05 insert WSBHadronic:MaximumWeight 353 0.000211542 insert WSBHadronic:MaximumWeight 354 8.94187e-08 insert WSBHadronic:MaximumWeight 355 4.96693e-06 insert WSBHadronic:MaximumWeight 356 4.87691e-06 insert WSBHadronic:MaximumWeight 357 0.000568379 insert WSBHadronic:MaximumWeight 358 2.4122e-07 insert WSBHadronic:MaximumWeight 359 0.000188805 insert WSBHadronic:MaximumWeight 360 0.000117368 # create Herwig::SemiLeptonicScalarDecayer Melikhov newdef Melikhov:Iteration 1 newdef Melikhov:Ntry 500 newdef Melikhov:Points 10000 newdef Melikhov:GenerateIntermediates 1 insert Melikhov:MaximumWeight 0 0.000574253 insert Melikhov:MaximumWeight 1 0.000523847 insert Melikhov:MaximumWeight 2 0.000240896 insert Melikhov:MaximumWeight 3 0.000999546 insert Melikhov:MaximumWeight 4 0.00102111 insert Melikhov:MaximumWeight 5 0.000430377 insert Melikhov:MaximumWeight 6 0.000224393 insert Melikhov:MaximumWeight 7 0.000224168 insert Melikhov:MaximumWeight 8 0.000271174 insert Melikhov:MaximumWeight 9 0.000411405 insert Melikhov:MaximumWeight 10 0.000411092 insert Melikhov:MaximumWeight 11 0.000496488 create Herwig::LeptonNeutrinoCurrent MelikhovCurrent HwWeakCurrents.so newdef MelikhovCurrent:Quark 0 11 newdef MelikhovCurrent:AntiQuark 0 -12 newdef MelikhovCurrent:Quark 1 13 newdef MelikhovCurrent:AntiQuark 1 -15 newdef MelikhovCurrent:Quark 2 15 newdef MelikhovCurrent:AntiQuark 2 -16 newdef Melikhov:Current MelikhovCurrent create Herwig::MelikhovFormFactor MelikhovFormFactor newdef MelikhovFormFactor:Fit 1 newdef MelikhovFormFactor:Incoming 0 -521 newdef MelikhovFormFactor:Outgoing 0 113 newdef MelikhovFormFactor:Spin 0 1 newdef MelikhovFormFactor:Spectator 0 2 newdef MelikhovFormFactor:InQuark 0 5 newdef MelikhovFormFactor:OutQuark 0 2 newdef MelikhovFormFactor:Incoming 1 -511 newdef MelikhovFormFactor:Outgoing 1 213 newdef MelikhovFormFactor:Spin 1 1 newdef MelikhovFormFactor:Spectator 1 1 newdef MelikhovFormFactor:InQuark 1 5 newdef MelikhovFormFactor:OutQuark 1 2 newdef MelikhovFormFactor:Incoming 2 -521 newdef MelikhovFormFactor:Outgoing 2 -213 newdef MelikhovFormFactor:Spin 2 1 newdef MelikhovFormFactor:Spectator 2 2 newdef MelikhovFormFactor:InQuark 2 5 newdef MelikhovFormFactor:OutQuark 2 1 newdef MelikhovFormFactor:Incoming 3 -511 newdef MelikhovFormFactor:Outgoing 3 113 newdef MelikhovFormFactor:Spin 3 1 newdef MelikhovFormFactor:Spectator 3 1 newdef MelikhovFormFactor:InQuark 3 5 newdef MelikhovFormFactor:OutQuark 3 1 newdef MelikhovFormFactor:Incoming 4 -521 newdef MelikhovFormFactor:Outgoing 4 111 newdef MelikhovFormFactor:Spin 4 0 newdef MelikhovFormFactor:Spectator 4 2 newdef MelikhovFormFactor:InQuark 4 5 newdef MelikhovFormFactor:OutQuark 4 2 newdef MelikhovFormFactor:Incoming 5 -511 newdef MelikhovFormFactor:Outgoing 5 211 newdef MelikhovFormFactor:Spin 5 0 newdef MelikhovFormFactor:Spectator 5 1 newdef MelikhovFormFactor:InQuark 5 5 newdef MelikhovFormFactor:OutQuark 5 2 newdef MelikhovFormFactor:Incoming 6 -521 newdef MelikhovFormFactor:Outgoing 6 -211 newdef MelikhovFormFactor:Spin 6 0 newdef MelikhovFormFactor:Spectator 6 2 newdef MelikhovFormFactor:InQuark 6 5 newdef MelikhovFormFactor:OutQuark 6 1 newdef MelikhovFormFactor:Incoming 7 -511 newdef MelikhovFormFactor:Outgoing 7 111 newdef MelikhovFormFactor:Spin 7 0 newdef MelikhovFormFactor:Spectator 7 1 newdef MelikhovFormFactor:InQuark 7 5 newdef MelikhovFormFactor:OutQuark 7 1 newdef Melikhov:FormFactor MelikhovFormFactor # create Herwig::SemiLeptonicScalarDecayer MelikhovStech newdef MelikhovStech:Iteration 1 newdef MelikhovStech:Ntry 500 newdef MelikhovStech:Points 10000 newdef MelikhovStech:GenerateIntermediates 1 insert MelikhovStech:MaximumWeight 0 0.132629 insert MelikhovStech:MaximumWeight 1 0.113122 insert MelikhovStech:MaximumWeight 2 0.337711 insert MelikhovStech:MaximumWeight 3 0.288721 insert MelikhovStech:MaximumWeight 4 0.043953 insert MelikhovStech:MaximumWeight 5 0.0431442 insert MelikhovStech:MaximumWeight 6 0.11173 insert MelikhovStech:MaximumWeight 7 0.109121 insert MelikhovStech:MaximumWeight 8 0.0106357 insert MelikhovStech:MaximumWeight 9 0.00957266 insert MelikhovStech:MaximumWeight 10 0.0137684 insert MelikhovStech:MaximumWeight 11 0.0123875 insert MelikhovStech:MaximumWeight 12 0.00391499 insert MelikhovStech:MaximumWeight 13 0.00386552 insert MelikhovStech:MaximumWeight 14 0.0051021 insert MelikhovStech:MaximumWeight 15 0.00504751 insert MelikhovStech:MaximumWeight 16 0.0843044 insert MelikhovStech:MaximumWeight 17 0.0792922 insert MelikhovStech:MaximumWeight 18 0.0187027 insert MelikhovStech:MaximumWeight 19 0.0770893 insert MelikhovStech:MaximumWeight 20 0.072427 insert MelikhovStech:MaximumWeight 21 0.0169877 insert MelikhovStech:MaximumWeight 22 0.124776 insert MelikhovStech:MaximumWeight 23 0.121677 insert MelikhovStech:MaximumWeight 24 0.0305758 insert MelikhovStech:MaximumWeight 25 0.125676 insert MelikhovStech:MaximumWeight 26 0.125481 insert MelikhovStech:MaximumWeight 27 0.0311555 insert MelikhovStech:MaximumWeight 28 0.000214676 insert MelikhovStech:MaximumWeight 29 0.000211978 insert MelikhovStech:MaximumWeight 30 0.000128561 insert MelikhovStech:MaximumWeight 31 0.000394065 insert MelikhovStech:MaximumWeight 32 0.000388644 insert MelikhovStech:MaximumWeight 33 0.000235631 insert MelikhovStech:MaximumWeight 34 0.000598245 insert MelikhovStech:MaximumWeight 35 0.000610799 insert MelikhovStech:MaximumWeight 36 0.000268044 insert MelikhovStech:MaximumWeight 37 0.00112259 insert MelikhovStech:MaximumWeight 38 0.0011597 insert MelikhovStech:MaximumWeight 39 0.000483222 insert MelikhovStech:MaximumWeight 40 0.0100923 insert MelikhovStech:MaximumWeight 41 0.00884077 insert MelikhovStech:MaximumWeight 42 0.00381443 insert MelikhovStech:MaximumWeight 43 0.00374616 insert MelikhovStech:MaximumWeight 44 0.0794698 insert MelikhovStech:MaximumWeight 45 0.068976 insert MelikhovStech:MaximumWeight 46 0.0324752 insert MelikhovStech:MaximumWeight 47 0.0258154 insert MelikhovStech:MaximumWeight 48 0.118027 insert MelikhovStech:MaximumWeight 49 0.113887 insert MelikhovStech:MaximumWeight 50 0.000401303 insert MelikhovStech:MaximumWeight 51 0.000399862 insert MelikhovStech:MaximumWeight 52 0.000234707 insert MelikhovStech:MaximumWeight 53 0.0028559 insert MelikhovStech:MaximumWeight 54 0.00274908 insert MelikhovStech:MaximumWeight 55 0.00116194 create Herwig::LeptonNeutrinoCurrent MelikhovStechCurrent HwWeakCurrents.so newdef MelikhovStechCurrent:Quark 0 11 newdef MelikhovStechCurrent:AntiQuark 0 -12 newdef MelikhovStechCurrent:Quark 1 13 newdef MelikhovStechCurrent:AntiQuark 1 -15 newdef MelikhovStechCurrent:Quark 2 15 newdef MelikhovStechCurrent:AntiQuark 2 -16 newdef MelikhovStech:Current MelikhovStechCurrent create Herwig::MelikhovStechFormFactor MelikhovStechFormFactor newdef MelikhovStechFormFactor:ThetaEtaEtaPrime 0.698132 newdef MelikhovStechFormFactor:FPlus0 0 0.78 newdef MelikhovStechFormFactor:F+sigma_1 0 0.24 newdef MelikhovStechFormFactor:F+sigma_2 0 0 newdef MelikhovStechFormFactor:F00 0 0.78 newdef MelikhovStechFormFactor:F0sigma_1 0 0.38 newdef MelikhovStechFormFactor:F0sigma_2 0 0.46 newdef MelikhovStechFormFactor:FT0 0 0.75 newdef MelikhovStechFormFactor:FTsigma_1 0 0.27 newdef MelikhovStechFormFactor:FTsigma_2 0 0 newdef MelikhovStechFormFactor:V00 0 0 newdef MelikhovStechFormFactor:V0sigma_1 0 0 newdef MelikhovStechFormFactor:V0sigma_2 0 0 newdef MelikhovStechFormFactor:A00 0 0 newdef MelikhovStechFormFactor:A0sigma_1 0 0 newdef MelikhovStechFormFactor:A0sigma_2 0 0 newdef MelikhovStechFormFactor:A10 0 0 newdef MelikhovStechFormFactor:A1sigma_1 0 0 newdef MelikhovStechFormFactor:A1sigma_2 0 0 newdef MelikhovStechFormFactor:A20 0 0 newdef MelikhovStechFormFactor:A2sigma_1 0 0 newdef MelikhovStechFormFactor:A2sigma_2 0 0 newdef MelikhovStechFormFactor:T10 0 0 newdef MelikhovStechFormFactor:T1sigma_1 0 0 newdef MelikhovStechFormFactor:T1sigma_2 0 0 newdef MelikhovStechFormFactor:T20 0 0 newdef MelikhovStechFormFactor:T2sigma_1 0 0 newdef MelikhovStechFormFactor:T2sigma_2 0 0 newdef MelikhovStechFormFactor:T30 0 0 newdef MelikhovStechFormFactor:T3sigma_1 0 0 newdef MelikhovStechFormFactor:T3sigma_2 0 0 newdef MelikhovStechFormFactor:MassP 0 1.97 newdef MelikhovStechFormFactor:MassV 0 2.11 newdef MelikhovStechFormFactor:FPlus0 1 0.78 newdef MelikhovStechFormFactor:F+sigma_1 1 0.24 newdef MelikhovStechFormFactor:F+sigma_2 1 0 newdef MelikhovStechFormFactor:F00 1 0.78 newdef MelikhovStechFormFactor:F0sigma_1 1 0.38 newdef MelikhovStechFormFactor:F0sigma_2 1 0.46 newdef MelikhovStechFormFactor:FT0 1 0.75 newdef MelikhovStechFormFactor:FTsigma_1 1 0.27 newdef MelikhovStechFormFactor:FTsigma_2 1 0 newdef MelikhovStechFormFactor:V00 1 0 newdef MelikhovStechFormFactor:V0sigma_1 1 0 newdef MelikhovStechFormFactor:V0sigma_2 1 0 newdef MelikhovStechFormFactor:A00 1 0 newdef MelikhovStechFormFactor:A0sigma_1 1 0 newdef MelikhovStechFormFactor:A0sigma_2 1 0 newdef MelikhovStechFormFactor:A10 1 0 newdef MelikhovStechFormFactor:A1sigma_1 1 0 newdef MelikhovStechFormFactor:A1sigma_2 1 0 newdef MelikhovStechFormFactor:A20 1 0 newdef MelikhovStechFormFactor:A2sigma_1 1 0 newdef MelikhovStechFormFactor:A2sigma_2 1 0 newdef MelikhovStechFormFactor:T10 1 0 newdef MelikhovStechFormFactor:T1sigma_1 1 0 newdef MelikhovStechFormFactor:T1sigma_2 1 0 newdef MelikhovStechFormFactor:T20 1 0 newdef MelikhovStechFormFactor:T2sigma_1 1 0 newdef MelikhovStechFormFactor:T2sigma_2 1 0 newdef MelikhovStechFormFactor:T30 1 0 newdef MelikhovStechFormFactor:T3sigma_1 1 0 newdef MelikhovStechFormFactor:T3sigma_2 1 0 newdef MelikhovStechFormFactor:MassP 1 1.97 newdef MelikhovStechFormFactor:MassV 1 2.11 newdef MelikhovStechFormFactor:FPlus0 2 0 newdef MelikhovStechFormFactor:F+sigma_1 2 0 newdef MelikhovStechFormFactor:F+sigma_2 2 0 newdef MelikhovStechFormFactor:F00 2 0 newdef MelikhovStechFormFactor:F0sigma_1 2 0 newdef MelikhovStechFormFactor:F0sigma_2 2 0 newdef MelikhovStechFormFactor:FT0 2 0 newdef MelikhovStechFormFactor:FTsigma_1 2 0 newdef MelikhovStechFormFactor:FTsigma_2 2 0 newdef MelikhovStechFormFactor:V00 2 1.03 newdef MelikhovStechFormFactor:V0sigma_1 2 0.27 newdef MelikhovStechFormFactor:V0sigma_2 2 0 newdef MelikhovStechFormFactor:A00 2 0.76 newdef MelikhovStechFormFactor:A0sigma_1 2 0.17 newdef MelikhovStechFormFactor:A0sigma_2 2 0 newdef MelikhovStechFormFactor:A10 2 0.66 newdef MelikhovStechFormFactor:A1sigma_1 2 0.3 newdef MelikhovStechFormFactor:A1sigma_2 2 0.2 newdef MelikhovStechFormFactor:A20 2 0.49 newdef MelikhovStechFormFactor:A2sigma_1 2 0.67 newdef MelikhovStechFormFactor:A2sigma_2 2 0.16 newdef MelikhovStechFormFactor:T10 2 0.78 newdef MelikhovStechFormFactor:T1sigma_1 2 0.25 newdef MelikhovStechFormFactor:T1sigma_2 2 0 newdef MelikhovStechFormFactor:T20 2 0.78 newdef MelikhovStechFormFactor:T2sigma_1 2 0.02 newdef MelikhovStechFormFactor:T2sigma_2 2 1.8 newdef MelikhovStechFormFactor:T30 2 0.45 newdef MelikhovStechFormFactor:T3sigma_1 2 1.23 newdef MelikhovStechFormFactor:T3sigma_2 2 0.34 newdef MelikhovStechFormFactor:MassP 2 1.97 newdef MelikhovStechFormFactor:MassV 2 2.11 newdef MelikhovStechFormFactor:FPlus0 3 0 newdef MelikhovStechFormFactor:F+sigma_1 3 0 newdef MelikhovStechFormFactor:F+sigma_2 3 0 newdef MelikhovStechFormFactor:F00 3 0 newdef MelikhovStechFormFactor:F0sigma_1 3 0 newdef MelikhovStechFormFactor:F0sigma_2 3 0 newdef MelikhovStechFormFactor:FT0 3 0 newdef MelikhovStechFormFactor:FTsigma_1 3 0 newdef MelikhovStechFormFactor:FTsigma_2 3 0 newdef MelikhovStechFormFactor:V00 3 1.03 newdef MelikhovStechFormFactor:V0sigma_1 3 0.27 newdef MelikhovStechFormFactor:V0sigma_2 3 0 newdef MelikhovStechFormFactor:A00 3 0.76 newdef MelikhovStechFormFactor:A0sigma_1 3 0.17 newdef MelikhovStechFormFactor:A0sigma_2 3 0 newdef MelikhovStechFormFactor:A10 3 0.66 newdef MelikhovStechFormFactor:A1sigma_1 3 0.3 newdef MelikhovStechFormFactor:A1sigma_2 3 0.2 newdef MelikhovStechFormFactor:A20 3 0.49 newdef MelikhovStechFormFactor:A2sigma_1 3 0.67 newdef MelikhovStechFormFactor:A2sigma_2 3 0.16 newdef MelikhovStechFormFactor:T10 3 0.78 newdef MelikhovStechFormFactor:T1sigma_1 3 0.25 newdef MelikhovStechFormFactor:T1sigma_2 3 0 newdef MelikhovStechFormFactor:T20 3 0.78 newdef MelikhovStechFormFactor:T2sigma_1 3 0.02 newdef MelikhovStechFormFactor:T2sigma_2 3 1.8 newdef MelikhovStechFormFactor:T30 3 0.45 newdef MelikhovStechFormFactor:T3sigma_1 3 1.23 newdef MelikhovStechFormFactor:T3sigma_2 3 0.34 newdef MelikhovStechFormFactor:MassP 3 1.97 newdef MelikhovStechFormFactor:MassV 3 2.11 newdef MelikhovStechFormFactor:FPlus0 4 0.69 newdef MelikhovStechFormFactor:F+sigma_1 4 0.3 newdef MelikhovStechFormFactor:F+sigma_2 4 0 newdef MelikhovStechFormFactor:F00 4 0.69 newdef MelikhovStechFormFactor:F0sigma_1 4 0.54 newdef MelikhovStechFormFactor:F0sigma_2 4 0.32 newdef MelikhovStechFormFactor:FT0 4 0.6 newdef MelikhovStechFormFactor:FTsigma_1 4 0.34 newdef MelikhovStechFormFactor:FTsigma_2 4 0 newdef MelikhovStechFormFactor:V00 4 0 newdef MelikhovStechFormFactor:V0sigma_1 4 0 newdef MelikhovStechFormFactor:V0sigma_2 4 0 newdef MelikhovStechFormFactor:A00 4 0 newdef MelikhovStechFormFactor:A0sigma_1 4 0 newdef MelikhovStechFormFactor:A0sigma_2 4 0 newdef MelikhovStechFormFactor:A10 4 0 newdef MelikhovStechFormFactor:A1sigma_1 4 0 newdef MelikhovStechFormFactor:A1sigma_2 4 0 newdef MelikhovStechFormFactor:A20 4 0 newdef MelikhovStechFormFactor:A2sigma_1 4 0 newdef MelikhovStechFormFactor:A2sigma_2 4 0 newdef MelikhovStechFormFactor:T10 4 0 newdef MelikhovStechFormFactor:T1sigma_1 4 0 newdef MelikhovStechFormFactor:T1sigma_2 4 0 newdef MelikhovStechFormFactor:T20 4 0 newdef MelikhovStechFormFactor:T2sigma_1 4 0 newdef MelikhovStechFormFactor:T2sigma_2 4 0 newdef MelikhovStechFormFactor:T30 4 0 newdef MelikhovStechFormFactor:T3sigma_1 4 0 newdef MelikhovStechFormFactor:T3sigma_2 4 0 newdef MelikhovStechFormFactor:MassP 4 1.87 newdef MelikhovStechFormFactor:MassV 4 2.01 newdef MelikhovStechFormFactor:FPlus0 5 0.69 newdef MelikhovStechFormFactor:F+sigma_1 5 0.3 newdef MelikhovStechFormFactor:F+sigma_2 5 0 newdef MelikhovStechFormFactor:F00 5 0.69 newdef MelikhovStechFormFactor:F0sigma_1 5 0.54 newdef MelikhovStechFormFactor:F0sigma_2 5 0.32 newdef MelikhovStechFormFactor:FT0 5 0.6 newdef MelikhovStechFormFactor:FTsigma_1 5 0.34 newdef MelikhovStechFormFactor:FTsigma_2 5 0 newdef MelikhovStechFormFactor:V00 5 0 newdef MelikhovStechFormFactor:V0sigma_1 5 0 newdef MelikhovStechFormFactor:V0sigma_2 5 0 newdef MelikhovStechFormFactor:A00 5 0 newdef MelikhovStechFormFactor:A0sigma_1 5 0 newdef MelikhovStechFormFactor:A0sigma_2 5 0 newdef MelikhovStechFormFactor:A10 5 0 newdef MelikhovStechFormFactor:A1sigma_1 5 0 newdef MelikhovStechFormFactor:A1sigma_2 5 0 newdef MelikhovStechFormFactor:A20 5 0 newdef MelikhovStechFormFactor:A2sigma_1 5 0 newdef MelikhovStechFormFactor:A2sigma_2 5 0 newdef MelikhovStechFormFactor:T10 5 0 newdef MelikhovStechFormFactor:T1sigma_1 5 0 newdef MelikhovStechFormFactor:T1sigma_2 5 0 newdef MelikhovStechFormFactor:T20 5 0 newdef MelikhovStechFormFactor:T2sigma_1 5 0 newdef MelikhovStechFormFactor:T2sigma_2 5 0 newdef MelikhovStechFormFactor:T30 5 0 newdef MelikhovStechFormFactor:T3sigma_1 5 0 newdef MelikhovStechFormFactor:T3sigma_2 5 0 newdef MelikhovStechFormFactor:MassP 5 1.87 newdef MelikhovStechFormFactor:MassV 5 2.01 newdef MelikhovStechFormFactor:FPlus0 6 0.69 newdef MelikhovStechFormFactor:F+sigma_1 6 0.3 newdef MelikhovStechFormFactor:F+sigma_2 6 0 newdef MelikhovStechFormFactor:F00 6 0.69 newdef MelikhovStechFormFactor:F0sigma_1 6 0.54 newdef MelikhovStechFormFactor:F0sigma_2 6 0.32 newdef MelikhovStechFormFactor:FT0 6 0.6 newdef MelikhovStechFormFactor:FTsigma_1 6 0.34 newdef MelikhovStechFormFactor:FTsigma_2 6 0 newdef MelikhovStechFormFactor:V00 6 0 newdef MelikhovStechFormFactor:V0sigma_1 6 0 newdef MelikhovStechFormFactor:V0sigma_2 6 0 newdef MelikhovStechFormFactor:A00 6 0 newdef MelikhovStechFormFactor:A0sigma_1 6 0 newdef MelikhovStechFormFactor:A0sigma_2 6 0 newdef MelikhovStechFormFactor:A10 6 0 newdef MelikhovStechFormFactor:A1sigma_1 6 0 newdef MelikhovStechFormFactor:A1sigma_2 6 0 newdef MelikhovStechFormFactor:A20 6 0 newdef MelikhovStechFormFactor:A2sigma_1 6 0 newdef MelikhovStechFormFactor:A2sigma_2 6 0 newdef MelikhovStechFormFactor:T10 6 0 newdef MelikhovStechFormFactor:T1sigma_1 6 0 newdef MelikhovStechFormFactor:T1sigma_2 6 0 newdef MelikhovStechFormFactor:T20 6 0 newdef MelikhovStechFormFactor:T2sigma_1 6 0 newdef MelikhovStechFormFactor:T2sigma_2 6 0 newdef MelikhovStechFormFactor:T30 6 0 newdef MelikhovStechFormFactor:T3sigma_1 6 0 newdef MelikhovStechFormFactor:T3sigma_2 6 0 newdef MelikhovStechFormFactor:MassP 6 1.87 newdef MelikhovStechFormFactor:MassV 6 2.01 newdef MelikhovStechFormFactor:FPlus0 7 0.69 newdef MelikhovStechFormFactor:F+sigma_1 7 0.3 newdef MelikhovStechFormFactor:F+sigma_2 7 0 newdef MelikhovStechFormFactor:F00 7 0.69 newdef MelikhovStechFormFactor:F0sigma_1 7 0.54 newdef MelikhovStechFormFactor:F0sigma_2 7 0.32 newdef MelikhovStechFormFactor:FT0 7 0.6 newdef MelikhovStechFormFactor:FTsigma_1 7 0.34 newdef MelikhovStechFormFactor:FTsigma_2 7 0 newdef MelikhovStechFormFactor:V00 7 0 newdef MelikhovStechFormFactor:V0sigma_1 7 0 newdef MelikhovStechFormFactor:V0sigma_2 7 0 newdef MelikhovStechFormFactor:A00 7 0 newdef MelikhovStechFormFactor:A0sigma_1 7 0 newdef MelikhovStechFormFactor:A0sigma_2 7 0 newdef MelikhovStechFormFactor:A10 7 0 newdef MelikhovStechFormFactor:A1sigma_1 7 0 newdef MelikhovStechFormFactor:A1sigma_2 7 0 newdef MelikhovStechFormFactor:A20 7 0 newdef MelikhovStechFormFactor:A2sigma_1 7 0 newdef MelikhovStechFormFactor:A2sigma_2 7 0 newdef MelikhovStechFormFactor:T10 7 0 newdef MelikhovStechFormFactor:T1sigma_1 7 0 newdef MelikhovStechFormFactor:T1sigma_2 7 0 newdef MelikhovStechFormFactor:T20 7 0 newdef MelikhovStechFormFactor:T2sigma_1 7 0 newdef MelikhovStechFormFactor:T2sigma_2 7 0 newdef MelikhovStechFormFactor:T30 7 0 newdef MelikhovStechFormFactor:T3sigma_1 7 0 newdef MelikhovStechFormFactor:T3sigma_2 7 0 newdef MelikhovStechFormFactor:MassP 7 1.87 newdef MelikhovStechFormFactor:MassV 7 2.01 newdef MelikhovStechFormFactor:FPlus0 8 0 newdef MelikhovStechFormFactor:F+sigma_1 8 0 newdef MelikhovStechFormFactor:F+sigma_2 8 0 newdef MelikhovStechFormFactor:F00 8 0 newdef MelikhovStechFormFactor:F0sigma_1 8 0 newdef MelikhovStechFormFactor:F0sigma_2 8 0 newdef MelikhovStechFormFactor:FT0 8 0 newdef MelikhovStechFormFactor:FTsigma_1 8 0 newdef MelikhovStechFormFactor:FTsigma_2 8 0 newdef MelikhovStechFormFactor:V00 8 0.9 newdef MelikhovStechFormFactor:V0sigma_1 8 0.46 newdef MelikhovStechFormFactor:V0sigma_2 8 0 newdef MelikhovStechFormFactor:A00 8 0.66 newdef MelikhovStechFormFactor:A0sigma_1 8 0.36 newdef MelikhovStechFormFactor:A0sigma_2 8 0 newdef MelikhovStechFormFactor:A10 8 0.59 newdef MelikhovStechFormFactor:A1sigma_1 8 0.5 newdef MelikhovStechFormFactor:A1sigma_2 8 0 newdef MelikhovStechFormFactor:A20 8 0.49 newdef MelikhovStechFormFactor:A2sigma_1 8 0.89 newdef MelikhovStechFormFactor:A2sigma_2 8 0 newdef MelikhovStechFormFactor:T10 8 0.66 newdef MelikhovStechFormFactor:T1sigma_1 8 0.44 newdef MelikhovStechFormFactor:T1sigma_2 8 0 newdef MelikhovStechFormFactor:T20 8 0.66 newdef MelikhovStechFormFactor:T2sigma_1 8 0.38 newdef MelikhovStechFormFactor:T2sigma_2 8 0.5 newdef MelikhovStechFormFactor:T30 8 0.31 newdef MelikhovStechFormFactor:T3sigma_1 8 1.1 newdef MelikhovStechFormFactor:T3sigma_2 8 0.17 newdef MelikhovStechFormFactor:MassP 8 1.87 newdef MelikhovStechFormFactor:MassV 8 2.01 newdef MelikhovStechFormFactor:FPlus0 9 0 newdef MelikhovStechFormFactor:F+sigma_1 9 0 newdef MelikhovStechFormFactor:F+sigma_2 9 0 newdef MelikhovStechFormFactor:F00 9 0 newdef MelikhovStechFormFactor:F0sigma_1 9 0 newdef MelikhovStechFormFactor:F0sigma_2 9 0 newdef MelikhovStechFormFactor:FT0 9 0 newdef MelikhovStechFormFactor:FTsigma_1 9 0 newdef MelikhovStechFormFactor:FTsigma_2 9 0 newdef MelikhovStechFormFactor:V00 9 0.9 newdef MelikhovStechFormFactor:V0sigma_1 9 0.46 newdef MelikhovStechFormFactor:V0sigma_2 9 0 newdef MelikhovStechFormFactor:A00 9 0.66 newdef MelikhovStechFormFactor:A0sigma_1 9 0.36 newdef MelikhovStechFormFactor:A0sigma_2 9 0 newdef MelikhovStechFormFactor:A10 9 0.59 newdef MelikhovStechFormFactor:A1sigma_1 9 0.5 newdef MelikhovStechFormFactor:A1sigma_2 9 0 newdef MelikhovStechFormFactor:A20 9 0.49 newdef MelikhovStechFormFactor:A2sigma_1 9 0.89 newdef MelikhovStechFormFactor:A2sigma_2 9 0 newdef MelikhovStechFormFactor:T10 9 0.66 newdef MelikhovStechFormFactor:T1sigma_1 9 0.44 newdef MelikhovStechFormFactor:T1sigma_2 9 0 newdef MelikhovStechFormFactor:T20 9 0.66 newdef MelikhovStechFormFactor:T2sigma_1 9 0.38 newdef MelikhovStechFormFactor:T2sigma_2 9 0.5 newdef MelikhovStechFormFactor:T30 9 0.31 newdef MelikhovStechFormFactor:T3sigma_1 9 1.1 newdef MelikhovStechFormFactor:T3sigma_2 9 0.17 newdef MelikhovStechFormFactor:MassP 9 1.87 newdef MelikhovStechFormFactor:MassV 9 2.01 newdef MelikhovStechFormFactor:FPlus0 10 0 newdef MelikhovStechFormFactor:F+sigma_1 10 0 newdef MelikhovStechFormFactor:F+sigma_2 10 0 newdef MelikhovStechFormFactor:F00 10 0 newdef MelikhovStechFormFactor:F0sigma_1 10 0 newdef MelikhovStechFormFactor:F0sigma_2 10 0 newdef MelikhovStechFormFactor:FT0 10 0 newdef MelikhovStechFormFactor:FTsigma_1 10 0 newdef MelikhovStechFormFactor:FTsigma_2 10 0 newdef MelikhovStechFormFactor:V00 10 0.9 newdef MelikhovStechFormFactor:V0sigma_1 10 0.46 newdef MelikhovStechFormFactor:V0sigma_2 10 0 newdef MelikhovStechFormFactor:A00 10 0.66 newdef MelikhovStechFormFactor:A0sigma_1 10 0.36 newdef MelikhovStechFormFactor:A0sigma_2 10 0 newdef MelikhovStechFormFactor:A10 10 0.59 newdef MelikhovStechFormFactor:A1sigma_1 10 0.5 newdef MelikhovStechFormFactor:A1sigma_2 10 0 newdef MelikhovStechFormFactor:A20 10 0.49 newdef MelikhovStechFormFactor:A2sigma_1 10 0.89 newdef MelikhovStechFormFactor:A2sigma_2 10 0 newdef MelikhovStechFormFactor:T10 10 0.66 newdef MelikhovStechFormFactor:T1sigma_1 10 0.44 newdef MelikhovStechFormFactor:T1sigma_2 10 0 newdef MelikhovStechFormFactor:T20 10 0.66 newdef MelikhovStechFormFactor:T2sigma_1 10 0.38 newdef MelikhovStechFormFactor:T2sigma_2 10 0.5 newdef MelikhovStechFormFactor:T30 10 0.31 newdef MelikhovStechFormFactor:T3sigma_1 10 1.1 newdef MelikhovStechFormFactor:T3sigma_2 10 0.17 newdef MelikhovStechFormFactor:MassP 10 1.87 newdef MelikhovStechFormFactor:MassV 10 2.01 newdef MelikhovStechFormFactor:FPlus0 11 0 newdef MelikhovStechFormFactor:F+sigma_1 11 0 newdef MelikhovStechFormFactor:F+sigma_2 11 0 newdef MelikhovStechFormFactor:F00 11 0 newdef MelikhovStechFormFactor:F0sigma_1 11 0 newdef MelikhovStechFormFactor:F0sigma_2 11 0 newdef MelikhovStechFormFactor:FT0 11 0 newdef MelikhovStechFormFactor:FTsigma_1 11 0 newdef MelikhovStechFormFactor:FTsigma_2 11 0 newdef MelikhovStechFormFactor:V00 11 0.9 newdef MelikhovStechFormFactor:V0sigma_1 11 0.46 newdef MelikhovStechFormFactor:V0sigma_2 11 0 newdef MelikhovStechFormFactor:A00 11 0.66 newdef MelikhovStechFormFactor:A0sigma_1 11 0.36 newdef MelikhovStechFormFactor:A0sigma_2 11 0 newdef MelikhovStechFormFactor:A10 11 0.59 newdef MelikhovStechFormFactor:A1sigma_1 11 0.5 newdef MelikhovStechFormFactor:A1sigma_2 11 0 newdef MelikhovStechFormFactor:A20 11 0.49 newdef MelikhovStechFormFactor:A2sigma_1 11 0.89 newdef MelikhovStechFormFactor:A2sigma_2 11 0 newdef MelikhovStechFormFactor:T10 11 0.66 newdef MelikhovStechFormFactor:T1sigma_1 11 0.44 newdef MelikhovStechFormFactor:T1sigma_2 11 0 newdef MelikhovStechFormFactor:T20 11 0.66 newdef MelikhovStechFormFactor:T2sigma_1 11 0.38 newdef MelikhovStechFormFactor:T2sigma_2 11 0.5 newdef MelikhovStechFormFactor:T30 11 0.31 newdef MelikhovStechFormFactor:T3sigma_1 11 1.1 newdef MelikhovStechFormFactor:T3sigma_2 11 0.17 newdef MelikhovStechFormFactor:MassP 11 1.87 newdef MelikhovStechFormFactor:MassV 11 2.01 newdef MelikhovStechFormFactor:FPlus0 12 0.67 newdef MelikhovStechFormFactor:F+sigma_1 12 0.57 newdef MelikhovStechFormFactor:F+sigma_2 12 0 newdef MelikhovStechFormFactor:F00 12 0.67 newdef MelikhovStechFormFactor:F0sigma_1 12 0.78 newdef MelikhovStechFormFactor:F0sigma_2 12 0 newdef MelikhovStechFormFactor:FT0 12 0.69 newdef MelikhovStechFormFactor:FTsigma_1 12 0.56 newdef MelikhovStechFormFactor:FTsigma_2 12 0 newdef MelikhovStechFormFactor:V00 12 0 newdef MelikhovStechFormFactor:V0sigma_1 12 0 newdef MelikhovStechFormFactor:V0sigma_2 12 0 newdef MelikhovStechFormFactor:A00 12 0 newdef MelikhovStechFormFactor:A0sigma_1 12 0 newdef MelikhovStechFormFactor:A0sigma_2 12 0 newdef MelikhovStechFormFactor:A10 12 0 newdef MelikhovStechFormFactor:A1sigma_1 12 0 newdef MelikhovStechFormFactor:A1sigma_2 12 0 newdef MelikhovStechFormFactor:A20 12 0 newdef MelikhovStechFormFactor:A2sigma_1 12 0 newdef MelikhovStechFormFactor:A2sigma_2 12 0 newdef MelikhovStechFormFactor:T10 12 0 newdef MelikhovStechFormFactor:T1sigma_1 12 0 newdef MelikhovStechFormFactor:T1sigma_2 12 0 newdef MelikhovStechFormFactor:T20 12 0 newdef MelikhovStechFormFactor:T2sigma_1 12 0 newdef MelikhovStechFormFactor:T2sigma_2 12 0 newdef MelikhovStechFormFactor:T30 12 0 newdef MelikhovStechFormFactor:T3sigma_1 12 0 newdef MelikhovStechFormFactor:T3sigma_2 12 0 newdef MelikhovStechFormFactor:MassP 12 6.4 newdef MelikhovStechFormFactor:MassV 12 6.4 newdef MelikhovStechFormFactor:FPlus0 13 0.67 newdef MelikhovStechFormFactor:F+sigma_1 13 0.57 newdef MelikhovStechFormFactor:F+sigma_2 13 0 newdef MelikhovStechFormFactor:F00 13 0.67 newdef MelikhovStechFormFactor:F0sigma_1 13 0.78 newdef MelikhovStechFormFactor:F0sigma_2 13 0 newdef MelikhovStechFormFactor:FT0 13 0.69 newdef MelikhovStechFormFactor:FTsigma_1 13 0.56 newdef MelikhovStechFormFactor:FTsigma_2 13 0 newdef MelikhovStechFormFactor:V00 13 0 newdef MelikhovStechFormFactor:V0sigma_1 13 0 newdef MelikhovStechFormFactor:V0sigma_2 13 0 newdef MelikhovStechFormFactor:A00 13 0 newdef MelikhovStechFormFactor:A0sigma_1 13 0 newdef MelikhovStechFormFactor:A0sigma_2 13 0 newdef MelikhovStechFormFactor:A10 13 0 newdef MelikhovStechFormFactor:A1sigma_1 13 0 newdef MelikhovStechFormFactor:A1sigma_2 13 0 newdef MelikhovStechFormFactor:A20 13 0 newdef MelikhovStechFormFactor:A2sigma_1 13 0 newdef MelikhovStechFormFactor:A2sigma_2 13 0 newdef MelikhovStechFormFactor:T10 13 0 newdef MelikhovStechFormFactor:T1sigma_1 13 0 newdef MelikhovStechFormFactor:T1sigma_2 13 0 newdef MelikhovStechFormFactor:T20 13 0 newdef MelikhovStechFormFactor:T2sigma_1 13 0 newdef MelikhovStechFormFactor:T2sigma_2 13 0 newdef MelikhovStechFormFactor:T30 13 0 newdef MelikhovStechFormFactor:T3sigma_1 13 0 newdef MelikhovStechFormFactor:T3sigma_2 13 0 newdef MelikhovStechFormFactor:MassP 13 6.4 newdef MelikhovStechFormFactor:MassV 13 6.4 newdef MelikhovStechFormFactor:FPlus0 14 0 newdef MelikhovStechFormFactor:F+sigma_1 14 0 newdef MelikhovStechFormFactor:F+sigma_2 14 0 newdef MelikhovStechFormFactor:F00 14 0 newdef MelikhovStechFormFactor:F0sigma_1 14 0 newdef MelikhovStechFormFactor:F0sigma_2 14 0 newdef MelikhovStechFormFactor:FT0 14 0 newdef MelikhovStechFormFactor:FTsigma_1 14 0 newdef MelikhovStechFormFactor:FTsigma_2 14 0 newdef MelikhovStechFormFactor:V00 14 0.76 newdef MelikhovStechFormFactor:V0sigma_1 14 0.57 newdef MelikhovStechFormFactor:V0sigma_2 14 0 newdef MelikhovStechFormFactor:A00 14 0.69 newdef MelikhovStechFormFactor:A0sigma_1 14 0.58 newdef MelikhovStechFormFactor:A0sigma_2 14 0 newdef MelikhovStechFormFactor:A10 14 0.66 newdef MelikhovStechFormFactor:A1sigma_1 14 0.78 newdef MelikhovStechFormFactor:A1sigma_2 14 0 newdef MelikhovStechFormFactor:A20 14 0.62 newdef MelikhovStechFormFactor:A2sigma_1 14 1.4 newdef MelikhovStechFormFactor:A2sigma_2 14 0.41 newdef MelikhovStechFormFactor:T10 14 0.68 newdef MelikhovStechFormFactor:T1sigma_1 14 0.57 newdef MelikhovStechFormFactor:T1sigma_2 14 0 newdef MelikhovStechFormFactor:T20 14 0.68 newdef MelikhovStechFormFactor:T2sigma_1 14 0.64 newdef MelikhovStechFormFactor:T2sigma_2 14 0 newdef MelikhovStechFormFactor:T30 14 0.33 newdef MelikhovStechFormFactor:T3sigma_1 14 1.46 newdef MelikhovStechFormFactor:T3sigma_2 14 0.5 newdef MelikhovStechFormFactor:MassP 14 6.4 newdef MelikhovStechFormFactor:MassV 14 6.4 newdef MelikhovStechFormFactor:FPlus0 15 0 newdef MelikhovStechFormFactor:F+sigma_1 15 0 newdef MelikhovStechFormFactor:F+sigma_2 15 0 newdef MelikhovStechFormFactor:F00 15 0 newdef MelikhovStechFormFactor:F0sigma_1 15 0 newdef MelikhovStechFormFactor:F0sigma_2 15 0 newdef MelikhovStechFormFactor:FT0 15 0 newdef MelikhovStechFormFactor:FTsigma_1 15 0 newdef MelikhovStechFormFactor:FTsigma_2 15 0 newdef MelikhovStechFormFactor:V00 15 0.76 newdef MelikhovStechFormFactor:V0sigma_1 15 0.57 newdef MelikhovStechFormFactor:V0sigma_2 15 0 newdef MelikhovStechFormFactor:A00 15 0.69 newdef MelikhovStechFormFactor:A0sigma_1 15 0.58 newdef MelikhovStechFormFactor:A0sigma_2 15 0 newdef MelikhovStechFormFactor:A10 15 0.66 newdef MelikhovStechFormFactor:A1sigma_1 15 0.78 newdef MelikhovStechFormFactor:A1sigma_2 15 0 newdef MelikhovStechFormFactor:A20 15 0.62 newdef MelikhovStechFormFactor:A2sigma_1 15 1.4 newdef MelikhovStechFormFactor:A2sigma_2 15 0.41 newdef MelikhovStechFormFactor:T10 15 0.68 newdef MelikhovStechFormFactor:T1sigma_1 15 0.57 newdef MelikhovStechFormFactor:T1sigma_2 15 0 newdef MelikhovStechFormFactor:T20 15 0.68 newdef MelikhovStechFormFactor:T2sigma_1 15 0.64 newdef MelikhovStechFormFactor:T2sigma_2 15 0 newdef MelikhovStechFormFactor:T30 15 0.33 newdef MelikhovStechFormFactor:T3sigma_1 15 1.46 newdef MelikhovStechFormFactor:T3sigma_2 15 0.5 newdef MelikhovStechFormFactor:MassP 15 6.4 newdef MelikhovStechFormFactor:MassV 15 6.4 newdef MelikhovStechFormFactor:FPlus0 16 0.36 newdef MelikhovStechFormFactor:F+sigma_1 16 0.43 newdef MelikhovStechFormFactor:F+sigma_2 16 0 newdef MelikhovStechFormFactor:F00 16 0.36 newdef MelikhovStechFormFactor:F0sigma_1 16 0.7 newdef MelikhovStechFormFactor:F0sigma_2 16 0.27 newdef MelikhovStechFormFactor:FT0 16 0.35 newdef MelikhovStechFormFactor:FTsigma_1 16 0.43 newdef MelikhovStechFormFactor:FTsigma_2 16 0 newdef MelikhovStechFormFactor:V00 16 0 newdef MelikhovStechFormFactor:V0sigma_1 16 0 newdef MelikhovStechFormFactor:V0sigma_2 16 0 newdef MelikhovStechFormFactor:A00 16 0 newdef MelikhovStechFormFactor:A0sigma_1 16 0 newdef MelikhovStechFormFactor:A0sigma_2 16 0 newdef MelikhovStechFormFactor:A10 16 0 newdef MelikhovStechFormFactor:A1sigma_1 16 0 newdef MelikhovStechFormFactor:A1sigma_2 16 0 newdef MelikhovStechFormFactor:A20 16 0 newdef MelikhovStechFormFactor:A2sigma_1 16 0 newdef MelikhovStechFormFactor:A2sigma_2 16 0 newdef MelikhovStechFormFactor:T10 16 0 newdef MelikhovStechFormFactor:T1sigma_1 16 0 newdef MelikhovStechFormFactor:T1sigma_2 16 0 newdef MelikhovStechFormFactor:T20 16 0 newdef MelikhovStechFormFactor:T2sigma_1 16 0 newdef MelikhovStechFormFactor:T2sigma_2 16 0 newdef MelikhovStechFormFactor:T30 16 0 newdef MelikhovStechFormFactor:T3sigma_1 16 0 newdef MelikhovStechFormFactor:T3sigma_2 16 0 newdef MelikhovStechFormFactor:MassP 16 5.37 newdef MelikhovStechFormFactor:MassV 16 5.42 newdef MelikhovStechFormFactor:FPlus0 17 0.36 newdef MelikhovStechFormFactor:F+sigma_1 17 0.43 newdef MelikhovStechFormFactor:F+sigma_2 17 0 newdef MelikhovStechFormFactor:F00 17 0.36 newdef MelikhovStechFormFactor:F0sigma_1 17 0.7 newdef MelikhovStechFormFactor:F0sigma_2 17 0.27 newdef MelikhovStechFormFactor:FT0 17 0.35 newdef MelikhovStechFormFactor:FTsigma_1 17 0.43 newdef MelikhovStechFormFactor:FTsigma_2 17 0 newdef MelikhovStechFormFactor:V00 17 0 newdef MelikhovStechFormFactor:V0sigma_1 17 0 newdef MelikhovStechFormFactor:V0sigma_2 17 0 newdef MelikhovStechFormFactor:A00 17 0 newdef MelikhovStechFormFactor:A0sigma_1 17 0 newdef MelikhovStechFormFactor:A0sigma_2 17 0 newdef MelikhovStechFormFactor:A10 17 0 newdef MelikhovStechFormFactor:A1sigma_1 17 0 newdef MelikhovStechFormFactor:A1sigma_2 17 0 newdef MelikhovStechFormFactor:A20 17 0 newdef MelikhovStechFormFactor:A2sigma_1 17 0 newdef MelikhovStechFormFactor:A2sigma_2 17 0 newdef MelikhovStechFormFactor:T10 17 0 newdef MelikhovStechFormFactor:T1sigma_1 17 0 newdef MelikhovStechFormFactor:T1sigma_2 17 0 newdef MelikhovStechFormFactor:T20 17 0 newdef MelikhovStechFormFactor:T2sigma_1 17 0 newdef MelikhovStechFormFactor:T2sigma_2 17 0 newdef MelikhovStechFormFactor:T30 17 0 newdef MelikhovStechFormFactor:T3sigma_1 17 0 newdef MelikhovStechFormFactor:T3sigma_2 17 0 newdef MelikhovStechFormFactor:MassP 17 5.37 newdef MelikhovStechFormFactor:MassV 17 5.42 newdef MelikhovStechFormFactor:FPlus0 18 0 newdef MelikhovStechFormFactor:F+sigma_1 18 0 newdef MelikhovStechFormFactor:F+sigma_2 18 0 newdef MelikhovStechFormFactor:F00 18 0 newdef MelikhovStechFormFactor:F0sigma_1 18 0 newdef MelikhovStechFormFactor:F0sigma_2 18 0 newdef MelikhovStechFormFactor:FT0 18 0 newdef MelikhovStechFormFactor:FTsigma_1 18 0 newdef MelikhovStechFormFactor:FTsigma_2 18 0 newdef MelikhovStechFormFactor:V00 18 0.44 newdef MelikhovStechFormFactor:V0sigma_1 18 0.45 newdef MelikhovStechFormFactor:V0sigma_2 18 0 newdef MelikhovStechFormFactor:A00 18 0.45 newdef MelikhovStechFormFactor:A0sigma_1 18 0.46 newdef MelikhovStechFormFactor:A0sigma_2 18 0 newdef MelikhovStechFormFactor:A10 18 0.36 newdef MelikhovStechFormFactor:A1sigma_1 18 0.64 newdef MelikhovStechFormFactor:A1sigma_2 18 0.36 newdef MelikhovStechFormFactor:A20 18 0.32 newdef MelikhovStechFormFactor:A2sigma_1 18 1.23 newdef MelikhovStechFormFactor:A2sigma_2 18 0.38 newdef MelikhovStechFormFactor:T10 18 0.39 newdef MelikhovStechFormFactor:T1sigma_1 18 0.45 newdef MelikhovStechFormFactor:T1sigma_2 18 0 newdef MelikhovStechFormFactor:T20 18 0.39 newdef MelikhovStechFormFactor:T2sigma_1 18 0.72 newdef MelikhovStechFormFactor:T2sigma_2 18 0.62 newdef MelikhovStechFormFactor:T30 18 0.27 newdef MelikhovStechFormFactor:T3sigma_1 18 1.31 newdef MelikhovStechFormFactor:T3sigma_2 18 0.41 newdef MelikhovStechFormFactor:MassP 18 5.37 newdef MelikhovStechFormFactor:MassV 18 5.42 newdef MelikhovStechFormFactor:FPlus0 19 0 newdef MelikhovStechFormFactor:F+sigma_1 19 0 newdef MelikhovStechFormFactor:F+sigma_2 19 0 newdef MelikhovStechFormFactor:F00 19 0 newdef MelikhovStechFormFactor:F0sigma_1 19 0 newdef MelikhovStechFormFactor:F0sigma_2 19 0 newdef MelikhovStechFormFactor:FT0 19 0 newdef MelikhovStechFormFactor:FTsigma_1 19 0 newdef MelikhovStechFormFactor:FTsigma_2 19 0 newdef MelikhovStechFormFactor:V00 19 0.44 newdef MelikhovStechFormFactor:V0sigma_1 19 0.45 newdef MelikhovStechFormFactor:V0sigma_2 19 0 newdef MelikhovStechFormFactor:A00 19 0.45 newdef MelikhovStechFormFactor:A0sigma_1 19 0.46 newdef MelikhovStechFormFactor:A0sigma_2 19 0 newdef MelikhovStechFormFactor:A10 19 0.36 newdef MelikhovStechFormFactor:A1sigma_1 19 0.64 newdef MelikhovStechFormFactor:A1sigma_2 19 0.36 newdef MelikhovStechFormFactor:A20 19 0.32 newdef MelikhovStechFormFactor:A2sigma_1 19 1.23 newdef MelikhovStechFormFactor:A2sigma_2 19 0.38 newdef MelikhovStechFormFactor:T10 19 0.39 newdef MelikhovStechFormFactor:T1sigma_1 19 0.45 newdef MelikhovStechFormFactor:T1sigma_2 19 0 newdef MelikhovStechFormFactor:T20 19 0.39 newdef MelikhovStechFormFactor:T2sigma_1 19 0.72 newdef MelikhovStechFormFactor:T2sigma_2 19 0.62 newdef MelikhovStechFormFactor:T30 19 0.27 newdef MelikhovStechFormFactor:T3sigma_1 19 1.31 newdef MelikhovStechFormFactor:T3sigma_2 19 0.41 newdef MelikhovStechFormFactor:MassP 19 5.37 newdef MelikhovStechFormFactor:MassV 19 5.42 newdef MelikhovStechFormFactor:FPlus0 20 0.29 newdef MelikhovStechFormFactor:F+sigma_1 20 0.48 newdef MelikhovStechFormFactor:F+sigma_2 20 0 newdef MelikhovStechFormFactor:F00 20 0.29 newdef MelikhovStechFormFactor:F0sigma_1 20 0.76 newdef MelikhovStechFormFactor:F0sigma_2 20 0.28 newdef MelikhovStechFormFactor:FT0 20 0.28 newdef MelikhovStechFormFactor:FTsigma_1 20 0.48 newdef MelikhovStechFormFactor:FTsigma_2 20 0 newdef MelikhovStechFormFactor:V00 20 0 newdef MelikhovStechFormFactor:V0sigma_1 20 0 newdef MelikhovStechFormFactor:V0sigma_2 20 0 newdef MelikhovStechFormFactor:A00 20 0 newdef MelikhovStechFormFactor:A0sigma_1 20 0 newdef MelikhovStechFormFactor:A0sigma_2 20 0 newdef MelikhovStechFormFactor:A10 20 0 newdef MelikhovStechFormFactor:A1sigma_1 20 0 newdef MelikhovStechFormFactor:A1sigma_2 20 0 newdef MelikhovStechFormFactor:A20 20 0 newdef MelikhovStechFormFactor:A2sigma_1 20 0 newdef MelikhovStechFormFactor:A2sigma_2 20 0 newdef MelikhovStechFormFactor:T10 20 0 newdef MelikhovStechFormFactor:T1sigma_1 20 0 newdef MelikhovStechFormFactor:T1sigma_2 20 0 newdef MelikhovStechFormFactor:T20 20 0 newdef MelikhovStechFormFactor:T2sigma_1 20 0 newdef MelikhovStechFormFactor:T2sigma_2 20 0 newdef MelikhovStechFormFactor:T30 20 0 newdef MelikhovStechFormFactor:T3sigma_1 20 0 newdef MelikhovStechFormFactor:T3sigma_2 20 0 newdef MelikhovStechFormFactor:MassP 20 5.27 newdef MelikhovStechFormFactor:MassV 20 5.32 newdef MelikhovStechFormFactor:FPlus0 21 0.29 newdef MelikhovStechFormFactor:F+sigma_1 21 0.48 newdef MelikhovStechFormFactor:F+sigma_2 21 0 newdef MelikhovStechFormFactor:F00 21 0.29 newdef MelikhovStechFormFactor:F0sigma_1 21 0.76 newdef MelikhovStechFormFactor:F0sigma_2 21 0.28 newdef MelikhovStechFormFactor:FT0 21 0.28 newdef MelikhovStechFormFactor:FTsigma_1 21 0.48 newdef MelikhovStechFormFactor:FTsigma_2 21 0 newdef MelikhovStechFormFactor:V00 21 0 newdef MelikhovStechFormFactor:V0sigma_1 21 0 newdef MelikhovStechFormFactor:V0sigma_2 21 0 newdef MelikhovStechFormFactor:A00 21 0 newdef MelikhovStechFormFactor:A0sigma_1 21 0 newdef MelikhovStechFormFactor:A0sigma_2 21 0 newdef MelikhovStechFormFactor:A10 21 0 newdef MelikhovStechFormFactor:A1sigma_1 21 0 newdef MelikhovStechFormFactor:A1sigma_2 21 0 newdef MelikhovStechFormFactor:A20 21 0 newdef MelikhovStechFormFactor:A2sigma_1 21 0 newdef MelikhovStechFormFactor:A2sigma_2 21 0 newdef MelikhovStechFormFactor:T10 21 0 newdef MelikhovStechFormFactor:T1sigma_1 21 0 newdef MelikhovStechFormFactor:T1sigma_2 21 0 newdef MelikhovStechFormFactor:T20 21 0 newdef MelikhovStechFormFactor:T2sigma_1 21 0 newdef MelikhovStechFormFactor:T2sigma_2 21 0 newdef MelikhovStechFormFactor:T30 21 0 newdef MelikhovStechFormFactor:T3sigma_1 21 0 newdef MelikhovStechFormFactor:T3sigma_2 21 0 newdef MelikhovStechFormFactor:MassP 21 5.27 newdef MelikhovStechFormFactor:MassV 21 5.32 newdef MelikhovStechFormFactor:FPlus0 22 0.29 newdef MelikhovStechFormFactor:F+sigma_1 22 0.48 newdef MelikhovStechFormFactor:F+sigma_2 22 0 newdef MelikhovStechFormFactor:F00 22 0.29 newdef MelikhovStechFormFactor:F0sigma_1 22 0.76 newdef MelikhovStechFormFactor:F0sigma_2 22 0.28 newdef MelikhovStechFormFactor:FT0 22 0.28 newdef MelikhovStechFormFactor:FTsigma_1 22 0.48 newdef MelikhovStechFormFactor:FTsigma_2 22 0 newdef MelikhovStechFormFactor:V00 22 0 newdef MelikhovStechFormFactor:V0sigma_1 22 0 newdef MelikhovStechFormFactor:V0sigma_2 22 0 newdef MelikhovStechFormFactor:A00 22 0 newdef MelikhovStechFormFactor:A0sigma_1 22 0 newdef MelikhovStechFormFactor:A0sigma_2 22 0 newdef MelikhovStechFormFactor:A10 22 0 newdef MelikhovStechFormFactor:A1sigma_1 22 0 newdef MelikhovStechFormFactor:A1sigma_2 22 0 newdef MelikhovStechFormFactor:A20 22 0 newdef MelikhovStechFormFactor:A2sigma_1 22 0 newdef MelikhovStechFormFactor:A2sigma_2 22 0 newdef MelikhovStechFormFactor:T10 22 0 newdef MelikhovStechFormFactor:T1sigma_1 22 0 newdef MelikhovStechFormFactor:T1sigma_2 22 0 newdef MelikhovStechFormFactor:T20 22 0 newdef MelikhovStechFormFactor:T2sigma_1 22 0 newdef MelikhovStechFormFactor:T2sigma_2 22 0 newdef MelikhovStechFormFactor:T30 22 0 newdef MelikhovStechFormFactor:T3sigma_1 22 0 newdef MelikhovStechFormFactor:T3sigma_2 22 0 newdef MelikhovStechFormFactor:MassP 22 5.27 newdef MelikhovStechFormFactor:MassV 22 5.32 newdef MelikhovStechFormFactor:FPlus0 23 0.29 newdef MelikhovStechFormFactor:F+sigma_1 23 0.48 newdef MelikhovStechFormFactor:F+sigma_2 23 0 newdef MelikhovStechFormFactor:F00 23 0.29 newdef MelikhovStechFormFactor:F0sigma_1 23 0.76 newdef MelikhovStechFormFactor:F0sigma_2 23 0.28 newdef MelikhovStechFormFactor:FT0 23 0.28 newdef MelikhovStechFormFactor:FTsigma_1 23 0.48 newdef MelikhovStechFormFactor:FTsigma_2 23 0 newdef MelikhovStechFormFactor:V00 23 0 newdef MelikhovStechFormFactor:V0sigma_1 23 0 newdef MelikhovStechFormFactor:V0sigma_2 23 0 newdef MelikhovStechFormFactor:A00 23 0 newdef MelikhovStechFormFactor:A0sigma_1 23 0 newdef MelikhovStechFormFactor:A0sigma_2 23 0 newdef MelikhovStechFormFactor:A10 23 0 newdef MelikhovStechFormFactor:A1sigma_1 23 0 newdef MelikhovStechFormFactor:A1sigma_2 23 0 newdef MelikhovStechFormFactor:A20 23 0 newdef MelikhovStechFormFactor:A2sigma_1 23 0 newdef MelikhovStechFormFactor:A2sigma_2 23 0 newdef MelikhovStechFormFactor:T10 23 0 newdef MelikhovStechFormFactor:T1sigma_1 23 0 newdef MelikhovStechFormFactor:T1sigma_2 23 0 newdef MelikhovStechFormFactor:T20 23 0 newdef MelikhovStechFormFactor:T2sigma_1 23 0 newdef MelikhovStechFormFactor:T2sigma_2 23 0 newdef MelikhovStechFormFactor:T30 23 0 newdef MelikhovStechFormFactor:T3sigma_1 23 0 newdef MelikhovStechFormFactor:T3sigma_2 23 0 newdef MelikhovStechFormFactor:MassP 23 5.27 newdef MelikhovStechFormFactor:MassV 23 5.32 newdef MelikhovStechFormFactor:FPlus0 24 0 newdef MelikhovStechFormFactor:F+sigma_1 24 0 newdef MelikhovStechFormFactor:F+sigma_2 24 0 newdef MelikhovStechFormFactor:F00 24 0 newdef MelikhovStechFormFactor:F0sigma_1 24 0 newdef MelikhovStechFormFactor:F0sigma_2 24 0 newdef MelikhovStechFormFactor:FT0 24 0 newdef MelikhovStechFormFactor:FTsigma_1 24 0 newdef MelikhovStechFormFactor:FTsigma_2 24 0 newdef MelikhovStechFormFactor:V00 24 0.31 newdef MelikhovStechFormFactor:V0sigma_1 24 0.59 newdef MelikhovStechFormFactor:V0sigma_2 24 0 newdef MelikhovStechFormFactor:A00 24 0.3 newdef MelikhovStechFormFactor:A0sigma_1 24 0.54 newdef MelikhovStechFormFactor:A0sigma_2 24 0 newdef MelikhovStechFormFactor:A10 24 0.26 newdef MelikhovStechFormFactor:A1sigma_1 24 0.73 newdef MelikhovStechFormFactor:A1sigma_2 24 0.1 newdef MelikhovStechFormFactor:A20 24 0.24 newdef MelikhovStechFormFactor:A2sigma_1 24 1.4 newdef MelikhovStechFormFactor:A2sigma_2 24 0.5 newdef MelikhovStechFormFactor:T10 24 0.27 newdef MelikhovStechFormFactor:T1sigma_1 24 0.6 newdef MelikhovStechFormFactor:T1sigma_2 24 0 newdef MelikhovStechFormFactor:T20 24 0.27 newdef MelikhovStechFormFactor:T2sigma_1 24 0.74 newdef MelikhovStechFormFactor:T2sigma_2 24 0.19 newdef MelikhovStechFormFactor:T30 24 0.19 newdef MelikhovStechFormFactor:T3sigma_1 24 1.42 newdef MelikhovStechFormFactor:T3sigma_2 24 0.51 newdef MelikhovStechFormFactor:MassP 24 5.27 newdef MelikhovStechFormFactor:MassV 24 5.32 newdef MelikhovStechFormFactor:FPlus0 25 0 newdef MelikhovStechFormFactor:F+sigma_1 25 0 newdef MelikhovStechFormFactor:F+sigma_2 25 0 newdef MelikhovStechFormFactor:F00 25 0 newdef MelikhovStechFormFactor:F0sigma_1 25 0 newdef MelikhovStechFormFactor:F0sigma_2 25 0 newdef MelikhovStechFormFactor:FT0 25 0 newdef MelikhovStechFormFactor:FTsigma_1 25 0 newdef MelikhovStechFormFactor:FTsigma_2 25 0 newdef MelikhovStechFormFactor:V00 25 0.31 newdef MelikhovStechFormFactor:V0sigma_1 25 0.59 newdef MelikhovStechFormFactor:V0sigma_2 25 0 newdef MelikhovStechFormFactor:A00 25 0.3 newdef MelikhovStechFormFactor:A0sigma_1 25 0.54 newdef MelikhovStechFormFactor:A0sigma_2 25 0 newdef MelikhovStechFormFactor:A10 25 0.26 newdef MelikhovStechFormFactor:A1sigma_1 25 0.73 newdef MelikhovStechFormFactor:A1sigma_2 25 0.1 newdef MelikhovStechFormFactor:A20 25 0.24 newdef MelikhovStechFormFactor:A2sigma_1 25 1.4 newdef MelikhovStechFormFactor:A2sigma_2 25 0.5 newdef MelikhovStechFormFactor:T10 25 0.27 newdef MelikhovStechFormFactor:T1sigma_1 25 0.6 newdef MelikhovStechFormFactor:T1sigma_2 25 0 newdef MelikhovStechFormFactor:T20 25 0.27 newdef MelikhovStechFormFactor:T2sigma_1 25 0.74 newdef MelikhovStechFormFactor:T2sigma_2 25 0.19 newdef MelikhovStechFormFactor:T30 25 0.19 newdef MelikhovStechFormFactor:T3sigma_1 25 1.42 newdef MelikhovStechFormFactor:T3sigma_2 25 0.51 newdef MelikhovStechFormFactor:MassP 25 5.27 newdef MelikhovStechFormFactor:MassV 25 5.32 newdef MelikhovStechFormFactor:FPlus0 26 0 newdef MelikhovStechFormFactor:F+sigma_1 26 0 newdef MelikhovStechFormFactor:F+sigma_2 26 0 newdef MelikhovStechFormFactor:F00 26 0 newdef MelikhovStechFormFactor:F0sigma_1 26 0 newdef MelikhovStechFormFactor:F0sigma_2 26 0 newdef MelikhovStechFormFactor:FT0 26 0 newdef MelikhovStechFormFactor:FTsigma_1 26 0 newdef MelikhovStechFormFactor:FTsigma_2 26 0 newdef MelikhovStechFormFactor:V00 26 0.31 newdef MelikhovStechFormFactor:V0sigma_1 26 0.59 newdef MelikhovStechFormFactor:V0sigma_2 26 0 newdef MelikhovStechFormFactor:A00 26 0.3 newdef MelikhovStechFormFactor:A0sigma_1 26 0.54 newdef MelikhovStechFormFactor:A0sigma_2 26 0 newdef MelikhovStechFormFactor:A10 26 0.26 newdef MelikhovStechFormFactor:A1sigma_1 26 0.73 newdef MelikhovStechFormFactor:A1sigma_2 26 0.1 newdef MelikhovStechFormFactor:A20 26 0.24 newdef MelikhovStechFormFactor:A2sigma_1 26 1.4 newdef MelikhovStechFormFactor:A2sigma_2 26 0.5 newdef MelikhovStechFormFactor:T10 26 0.27 newdef MelikhovStechFormFactor:T1sigma_1 26 0.6 newdef MelikhovStechFormFactor:T1sigma_2 26 0 newdef MelikhovStechFormFactor:T20 26 0.27 newdef MelikhovStechFormFactor:T2sigma_1 26 0.74 newdef MelikhovStechFormFactor:T2sigma_2 26 0.19 newdef MelikhovStechFormFactor:T30 26 0.19 newdef MelikhovStechFormFactor:T3sigma_1 26 1.42 newdef MelikhovStechFormFactor:T3sigma_2 26 0.51 newdef MelikhovStechFormFactor:MassP 26 5.27 newdef MelikhovStechFormFactor:MassV 26 5.32 newdef MelikhovStechFormFactor:FPlus0 27 0 newdef MelikhovStechFormFactor:F+sigma_1 27 0 newdef MelikhovStechFormFactor:F+sigma_2 27 0 newdef MelikhovStechFormFactor:F00 27 0 newdef MelikhovStechFormFactor:F0sigma_1 27 0 newdef MelikhovStechFormFactor:F0sigma_2 27 0 newdef MelikhovStechFormFactor:FT0 27 0 newdef MelikhovStechFormFactor:FTsigma_1 27 0 newdef MelikhovStechFormFactor:FTsigma_2 27 0 newdef MelikhovStechFormFactor:V00 27 0.31 newdef MelikhovStechFormFactor:V0sigma_1 27 0.59 newdef MelikhovStechFormFactor:V0sigma_2 27 0 newdef MelikhovStechFormFactor:A00 27 0.3 newdef MelikhovStechFormFactor:A0sigma_1 27 0.54 newdef MelikhovStechFormFactor:A0sigma_2 27 0 newdef MelikhovStechFormFactor:A10 27 0.26 newdef MelikhovStechFormFactor:A1sigma_1 27 0.73 newdef MelikhovStechFormFactor:A1sigma_2 27 0.1 newdef MelikhovStechFormFactor:A20 27 0.24 newdef MelikhovStechFormFactor:A2sigma_1 27 1.4 newdef MelikhovStechFormFactor:A2sigma_2 27 0.5 newdef MelikhovStechFormFactor:T10 27 0.27 newdef MelikhovStechFormFactor:T1sigma_1 27 0.6 newdef MelikhovStechFormFactor:T1sigma_2 27 0 newdef MelikhovStechFormFactor:T20 27 0.27 newdef MelikhovStechFormFactor:T2sigma_1 27 0.74 newdef MelikhovStechFormFactor:T2sigma_2 27 0.19 newdef MelikhovStechFormFactor:T30 27 0.19 newdef MelikhovStechFormFactor:T3sigma_1 27 1.42 newdef MelikhovStechFormFactor:T3sigma_2 27 0.51 newdef MelikhovStechFormFactor:MassP 27 5.27 newdef MelikhovStechFormFactor:MassV 27 5.32 newdef MelikhovStechFormFactor:FPlus0 28 0.72 newdef MelikhovStechFormFactor:F+sigma_1 28 0.2 newdef MelikhovStechFormFactor:F+sigma_2 28 0 newdef MelikhovStechFormFactor:F00 28 0.72 newdef MelikhovStechFormFactor:F0sigma_1 28 0.41 newdef MelikhovStechFormFactor:F0sigma_2 28 0.7 newdef MelikhovStechFormFactor:FT0 28 0.77 newdef MelikhovStechFormFactor:FTsigma_1 28 0.24 newdef MelikhovStechFormFactor:FTsigma_2 28 0 newdef MelikhovStechFormFactor:V00 28 0 newdef MelikhovStechFormFactor:V0sigma_1 28 0 newdef MelikhovStechFormFactor:V0sigma_2 28 0 newdef MelikhovStechFormFactor:A00 28 0 newdef MelikhovStechFormFactor:A0sigma_1 28 0 newdef MelikhovStechFormFactor:A0sigma_2 28 0 newdef MelikhovStechFormFactor:A10 28 0 newdef MelikhovStechFormFactor:A1sigma_1 28 0 newdef MelikhovStechFormFactor:A1sigma_2 28 0 newdef MelikhovStechFormFactor:A20 28 0 newdef MelikhovStechFormFactor:A2sigma_1 28 0 newdef MelikhovStechFormFactor:A2sigma_2 28 0 newdef MelikhovStechFormFactor:T10 28 0 newdef MelikhovStechFormFactor:T1sigma_1 28 0 newdef MelikhovStechFormFactor:T1sigma_2 28 0 newdef MelikhovStechFormFactor:T20 28 0 newdef MelikhovStechFormFactor:T2sigma_1 28 0 newdef MelikhovStechFormFactor:T2sigma_2 28 0 newdef MelikhovStechFormFactor:T30 28 0 newdef MelikhovStechFormFactor:T3sigma_1 28 0 newdef MelikhovStechFormFactor:T3sigma_2 28 0 newdef MelikhovStechFormFactor:MassP 28 1.87 newdef MelikhovStechFormFactor:MassV 28 2.01 newdef MelikhovStechFormFactor:FPlus0 29 0.72 newdef MelikhovStechFormFactor:F+sigma_1 29 0.2 newdef MelikhovStechFormFactor:F+sigma_2 29 0 newdef MelikhovStechFormFactor:F00 29 0.72 newdef MelikhovStechFormFactor:F0sigma_1 29 0.41 newdef MelikhovStechFormFactor:F0sigma_2 29 0.7 newdef MelikhovStechFormFactor:FT0 29 0.77 newdef MelikhovStechFormFactor:FTsigma_1 29 0.24 newdef MelikhovStechFormFactor:FTsigma_2 29 0 newdef MelikhovStechFormFactor:V00 29 0 newdef MelikhovStechFormFactor:V0sigma_1 29 0 newdef MelikhovStechFormFactor:V0sigma_2 29 0 newdef MelikhovStechFormFactor:A00 29 0 newdef MelikhovStechFormFactor:A0sigma_1 29 0 newdef MelikhovStechFormFactor:A0sigma_2 29 0 newdef MelikhovStechFormFactor:A10 29 0 newdef MelikhovStechFormFactor:A1sigma_1 29 0 newdef MelikhovStechFormFactor:A1sigma_2 29 0 newdef MelikhovStechFormFactor:A20 29 0 newdef MelikhovStechFormFactor:A2sigma_1 29 0 newdef MelikhovStechFormFactor:A2sigma_2 29 0 newdef MelikhovStechFormFactor:T10 29 0 newdef MelikhovStechFormFactor:T1sigma_1 29 0 newdef MelikhovStechFormFactor:T1sigma_2 29 0 newdef MelikhovStechFormFactor:T20 29 0 newdef MelikhovStechFormFactor:T2sigma_1 29 0 newdef MelikhovStechFormFactor:T2sigma_2 29 0 newdef MelikhovStechFormFactor:T30 29 0 newdef MelikhovStechFormFactor:T3sigma_1 29 0 newdef MelikhovStechFormFactor:T3sigma_2 29 0 newdef MelikhovStechFormFactor:MassP 29 1.87 newdef MelikhovStechFormFactor:MassV 29 2.01 newdef MelikhovStechFormFactor:FPlus0 30 0 newdef MelikhovStechFormFactor:F+sigma_1 30 0 newdef MelikhovStechFormFactor:F+sigma_2 30 0 newdef MelikhovStechFormFactor:F00 30 0 newdef MelikhovStechFormFactor:F0sigma_1 30 0 newdef MelikhovStechFormFactor:F0sigma_2 30 0 newdef MelikhovStechFormFactor:FT0 30 0 newdef MelikhovStechFormFactor:FTsigma_1 30 0 newdef MelikhovStechFormFactor:FTsigma_2 30 0 newdef MelikhovStechFormFactor:V00 30 1.04 newdef MelikhovStechFormFactor:V0sigma_1 30 0.24 newdef MelikhovStechFormFactor:V0sigma_2 30 0 newdef MelikhovStechFormFactor:A00 30 0.67 newdef MelikhovStechFormFactor:A0sigma_1 30 0.2 newdef MelikhovStechFormFactor:A0sigma_2 30 0 newdef MelikhovStechFormFactor:A10 30 0.57 newdef MelikhovStechFormFactor:A1sigma_1 30 0.29 newdef MelikhovStechFormFactor:A1sigma_2 30 0.42 newdef MelikhovStechFormFactor:A20 30 0.42 newdef MelikhovStechFormFactor:A2sigma_1 30 0.58 newdef MelikhovStechFormFactor:A2sigma_2 30 0 newdef MelikhovStechFormFactor:T10 30 0.71 newdef MelikhovStechFormFactor:T1sigma_1 30 0.22 newdef MelikhovStechFormFactor:T1sigma_2 30 0 newdef MelikhovStechFormFactor:T20 30 0.71 newdef MelikhovStechFormFactor:T2sigma_1 30 -0.06 newdef MelikhovStechFormFactor:T2sigma_2 30 0.44 newdef MelikhovStechFormFactor:T30 30 0.45 newdef MelikhovStechFormFactor:T3sigma_1 30 1.08 newdef MelikhovStechFormFactor:T3sigma_2 30 0.68 newdef MelikhovStechFormFactor:MassP 30 1.87 newdef MelikhovStechFormFactor:MassV 30 2.01 newdef MelikhovStechFormFactor:FPlus0 31 0 newdef MelikhovStechFormFactor:F+sigma_1 31 0 newdef MelikhovStechFormFactor:F+sigma_2 31 0 newdef MelikhovStechFormFactor:F00 31 0 newdef MelikhovStechFormFactor:F0sigma_1 31 0 newdef MelikhovStechFormFactor:F0sigma_2 31 0 newdef MelikhovStechFormFactor:FT0 31 0 newdef MelikhovStechFormFactor:FTsigma_1 31 0 newdef MelikhovStechFormFactor:FTsigma_2 31 0 newdef MelikhovStechFormFactor:V00 31 1.04 newdef MelikhovStechFormFactor:V0sigma_1 31 0.24 newdef MelikhovStechFormFactor:V0sigma_2 31 0 newdef MelikhovStechFormFactor:A00 31 0.67 newdef MelikhovStechFormFactor:A0sigma_1 31 0.2 newdef MelikhovStechFormFactor:A0sigma_2 31 0 newdef MelikhovStechFormFactor:A10 31 0.57 newdef MelikhovStechFormFactor:A1sigma_1 31 0.29 newdef MelikhovStechFormFactor:A1sigma_2 31 0.42 newdef MelikhovStechFormFactor:A20 31 0.42 newdef MelikhovStechFormFactor:A2sigma_1 31 0.58 newdef MelikhovStechFormFactor:A2sigma_2 31 0 newdef MelikhovStechFormFactor:T10 31 0.71 newdef MelikhovStechFormFactor:T1sigma_1 31 0.22 newdef MelikhovStechFormFactor:T1sigma_2 31 0 newdef MelikhovStechFormFactor:T20 31 0.71 newdef MelikhovStechFormFactor:T2sigma_1 31 -0.06 newdef MelikhovStechFormFactor:T2sigma_2 31 0.44 newdef MelikhovStechFormFactor:T30 31 0.45 newdef MelikhovStechFormFactor:T3sigma_1 31 1.08 newdef MelikhovStechFormFactor:T3sigma_2 31 0.68 newdef MelikhovStechFormFactor:MassP 31 1.87 newdef MelikhovStechFormFactor:MassV 31 2.01 newdef MelikhovStechFormFactor:FPlus0 32 0.78 newdef MelikhovStechFormFactor:F+sigma_1 32 0.23 newdef MelikhovStechFormFactor:F+sigma_2 32 0 newdef MelikhovStechFormFactor:F00 32 0.78 newdef MelikhovStechFormFactor:F0sigma_1 32 0.33 newdef MelikhovStechFormFactor:F0sigma_2 32 0.38 newdef MelikhovStechFormFactor:FT0 32 0.8 newdef MelikhovStechFormFactor:FTsigma_1 32 0.24 newdef MelikhovStechFormFactor:FTsigma_2 32 0 newdef MelikhovStechFormFactor:V00 32 0 newdef MelikhovStechFormFactor:V0sigma_1 32 0 newdef MelikhovStechFormFactor:V0sigma_2 32 0 newdef MelikhovStechFormFactor:A00 32 0 newdef MelikhovStechFormFactor:A0sigma_1 32 0 newdef MelikhovStechFormFactor:A0sigma_2 32 0 newdef MelikhovStechFormFactor:A10 32 0 newdef MelikhovStechFormFactor:A1sigma_1 32 0 newdef MelikhovStechFormFactor:A1sigma_2 32 0 newdef MelikhovStechFormFactor:A20 32 0 newdef MelikhovStechFormFactor:A2sigma_1 32 0 newdef MelikhovStechFormFactor:A2sigma_2 32 0 newdef MelikhovStechFormFactor:T10 32 0 newdef MelikhovStechFormFactor:T1sigma_1 32 0 newdef MelikhovStechFormFactor:T1sigma_2 32 0 newdef MelikhovStechFormFactor:T20 32 0 newdef MelikhovStechFormFactor:T2sigma_1 32 0 newdef MelikhovStechFormFactor:T2sigma_2 32 0 newdef MelikhovStechFormFactor:T30 32 0 newdef MelikhovStechFormFactor:T3sigma_1 32 0 newdef MelikhovStechFormFactor:T3sigma_2 32 0 newdef MelikhovStechFormFactor:MassP 32 1.97 newdef MelikhovStechFormFactor:MassV 32 2.11 newdef MelikhovStechFormFactor:FPlus0 33 0.78 newdef MelikhovStechFormFactor:F+sigma_1 33 0.23 newdef MelikhovStechFormFactor:F+sigma_2 33 0 newdef MelikhovStechFormFactor:F00 33 0.78 newdef MelikhovStechFormFactor:F0sigma_1 33 0.21 newdef MelikhovStechFormFactor:F0sigma_2 33 0.76 newdef MelikhovStechFormFactor:FT0 33 0.94 newdef MelikhovStechFormFactor:FTsigma_1 33 0.24 newdef MelikhovStechFormFactor:FTsigma_2 33 0 newdef MelikhovStechFormFactor:V00 33 0 newdef MelikhovStechFormFactor:V0sigma_1 33 0 newdef MelikhovStechFormFactor:V0sigma_2 33 0 newdef MelikhovStechFormFactor:A00 33 0 newdef MelikhovStechFormFactor:A0sigma_1 33 0 newdef MelikhovStechFormFactor:A0sigma_2 33 0 newdef MelikhovStechFormFactor:A10 33 0 newdef MelikhovStechFormFactor:A1sigma_1 33 0 newdef MelikhovStechFormFactor:A1sigma_2 33 0 newdef MelikhovStechFormFactor:A20 33 0 newdef MelikhovStechFormFactor:A2sigma_1 33 0 newdef MelikhovStechFormFactor:A2sigma_2 33 0 newdef MelikhovStechFormFactor:T10 33 0 newdef MelikhovStechFormFactor:T1sigma_1 33 0 newdef MelikhovStechFormFactor:T1sigma_2 33 0 newdef MelikhovStechFormFactor:T20 33 0 newdef MelikhovStechFormFactor:T2sigma_1 33 0 newdef MelikhovStechFormFactor:T2sigma_2 33 0 newdef MelikhovStechFormFactor:T30 33 0 newdef MelikhovStechFormFactor:T3sigma_1 33 0 newdef MelikhovStechFormFactor:T3sigma_2 33 0 newdef MelikhovStechFormFactor:MassP 33 1.97 newdef MelikhovStechFormFactor:MassV 33 2.11 newdef MelikhovStechFormFactor:FPlus0 34 0 newdef MelikhovStechFormFactor:F+sigma_1 34 0 newdef MelikhovStechFormFactor:F+sigma_2 34 0 newdef MelikhovStechFormFactor:F00 34 0 newdef MelikhovStechFormFactor:F0sigma_1 34 0 newdef MelikhovStechFormFactor:F0sigma_2 34 0 newdef MelikhovStechFormFactor:FT0 34 0 newdef MelikhovStechFormFactor:FTsigma_1 34 0 newdef MelikhovStechFormFactor:FTsigma_2 34 0 newdef MelikhovStechFormFactor:V00 34 1.1 newdef MelikhovStechFormFactor:V0sigma_1 34 0.26 newdef MelikhovStechFormFactor:V0sigma_2 34 0 newdef MelikhovStechFormFactor:A00 34 0.73 newdef MelikhovStechFormFactor:A0sigma_1 34 0.1 newdef MelikhovStechFormFactor:A0sigma_2 34 0 newdef MelikhovStechFormFactor:A10 34 0.64 newdef MelikhovStechFormFactor:A1sigma_1 34 0.29 newdef MelikhovStechFormFactor:A1sigma_2 34 0 newdef MelikhovStechFormFactor:A20 34 0.47 newdef MelikhovStechFormFactor:A2sigma_1 34 0.63 newdef MelikhovStechFormFactor:A2sigma_2 34 0 newdef MelikhovStechFormFactor:T10 34 0.77 newdef MelikhovStechFormFactor:T1sigma_1 34 0.25 newdef MelikhovStechFormFactor:T1sigma_2 34 0 newdef MelikhovStechFormFactor:T20 34 0.77 newdef MelikhovStechFormFactor:T2sigma_1 34 0.02 newdef MelikhovStechFormFactor:T2sigma_2 34 2.01 newdef MelikhovStechFormFactor:T30 34 0.46 newdef MelikhovStechFormFactor:T3sigma_1 34 1.34 newdef MelikhovStechFormFactor:T3sigma_2 34 0.45 newdef MelikhovStechFormFactor:MassP 34 1.97 newdef MelikhovStechFormFactor:MassV 34 2.11 newdef MelikhovStechFormFactor:FPlus0 35 0.31 newdef MelikhovStechFormFactor:F+sigma_1 35 0.63 newdef MelikhovStechFormFactor:F+sigma_2 35 0.33 newdef MelikhovStechFormFactor:F00 35 0.31 newdef MelikhovStechFormFactor:F0sigma_1 35 0.93 newdef MelikhovStechFormFactor:F0sigma_2 35 0.7 newdef MelikhovStechFormFactor:FT0 35 0.31 newdef MelikhovStechFormFactor:FTsigma_1 35 0.61 newdef MelikhovStechFormFactor:FTsigma_2 35 0.3 newdef MelikhovStechFormFactor:V00 35 0 newdef MelikhovStechFormFactor:V0sigma_1 35 0 newdef MelikhovStechFormFactor:V0sigma_2 35 0 newdef MelikhovStechFormFactor:A00 35 0 newdef MelikhovStechFormFactor:A0sigma_1 35 0 newdef MelikhovStechFormFactor:A0sigma_2 35 0 newdef MelikhovStechFormFactor:A10 35 0 newdef MelikhovStechFormFactor:A1sigma_1 35 0 newdef MelikhovStechFormFactor:A1sigma_2 35 0 newdef MelikhovStechFormFactor:A20 35 0 newdef MelikhovStechFormFactor:A2sigma_1 35 0 newdef MelikhovStechFormFactor:A2sigma_2 35 0 newdef MelikhovStechFormFactor:T10 35 0 newdef MelikhovStechFormFactor:T1sigma_1 35 0 newdef MelikhovStechFormFactor:T1sigma_2 35 0 newdef MelikhovStechFormFactor:T20 35 0 newdef MelikhovStechFormFactor:T2sigma_1 35 0 newdef MelikhovStechFormFactor:T2sigma_2 35 0 newdef MelikhovStechFormFactor:T30 35 0 newdef MelikhovStechFormFactor:T3sigma_1 35 0 newdef MelikhovStechFormFactor:T3sigma_2 35 0 newdef MelikhovStechFormFactor:MassP 35 5.27 newdef MelikhovStechFormFactor:MassV 35 5.32 newdef MelikhovStechFormFactor:FPlus0 36 0.31 newdef MelikhovStechFormFactor:F+sigma_1 36 0.63 newdef MelikhovStechFormFactor:F+sigma_2 36 0.33 newdef MelikhovStechFormFactor:F00 36 0.31 newdef MelikhovStechFormFactor:F0sigma_1 36 0.93 newdef MelikhovStechFormFactor:F0sigma_2 36 0.7 newdef MelikhovStechFormFactor:FT0 36 0.31 newdef MelikhovStechFormFactor:FTsigma_1 36 0.61 newdef MelikhovStechFormFactor:FTsigma_2 36 0.3 newdef MelikhovStechFormFactor:V00 36 0 newdef MelikhovStechFormFactor:V0sigma_1 36 0 newdef MelikhovStechFormFactor:V0sigma_2 36 0 newdef MelikhovStechFormFactor:A00 36 0 newdef MelikhovStechFormFactor:A0sigma_1 36 0 newdef MelikhovStechFormFactor:A0sigma_2 36 0 newdef MelikhovStechFormFactor:A10 36 0 newdef MelikhovStechFormFactor:A1sigma_1 36 0 newdef MelikhovStechFormFactor:A1sigma_2 36 0 newdef MelikhovStechFormFactor:A20 36 0 newdef MelikhovStechFormFactor:A2sigma_1 36 0 newdef MelikhovStechFormFactor:A2sigma_2 36 0 newdef MelikhovStechFormFactor:T10 36 0 newdef MelikhovStechFormFactor:T1sigma_1 36 0 newdef MelikhovStechFormFactor:T1sigma_2 36 0 newdef MelikhovStechFormFactor:T20 36 0 newdef MelikhovStechFormFactor:T2sigma_1 36 0 newdef MelikhovStechFormFactor:T2sigma_2 36 0 newdef MelikhovStechFormFactor:T30 36 0 newdef MelikhovStechFormFactor:T3sigma_1 36 0 newdef MelikhovStechFormFactor:T3sigma_2 36 0 newdef MelikhovStechFormFactor:MassP 36 5.27 newdef MelikhovStechFormFactor:MassV 36 5.32 newdef MelikhovStechFormFactor:FPlus0 37 0 newdef MelikhovStechFormFactor:F+sigma_1 37 0 newdef MelikhovStechFormFactor:F+sigma_2 37 0 newdef MelikhovStechFormFactor:F00 37 0 newdef MelikhovStechFormFactor:F0sigma_1 37 0 newdef MelikhovStechFormFactor:F0sigma_2 37 0 newdef MelikhovStechFormFactor:FT0 37 0 newdef MelikhovStechFormFactor:FTsigma_1 37 0 newdef MelikhovStechFormFactor:FTsigma_2 37 0 newdef MelikhovStechFormFactor:V00 37 0.38 newdef MelikhovStechFormFactor:V0sigma_1 37 0.66 newdef MelikhovStechFormFactor:V0sigma_2 37 0.3 newdef MelikhovStechFormFactor:A00 37 0.37 newdef MelikhovStechFormFactor:A0sigma_1 37 0.6 newdef MelikhovStechFormFactor:A0sigma_2 37 0.16 newdef MelikhovStechFormFactor:A10 37 0.29 newdef MelikhovStechFormFactor:A1sigma_1 37 0.86 newdef MelikhovStechFormFactor:A1sigma_2 37 0.6 newdef MelikhovStechFormFactor:A20 37 0.26 newdef MelikhovStechFormFactor:A2sigma_1 37 1.32 newdef MelikhovStechFormFactor:A2sigma_2 37 0.54 newdef MelikhovStechFormFactor:T10 37 0.32 newdef MelikhovStechFormFactor:T1sigma_1 37 0.66 newdef MelikhovStechFormFactor:T1sigma_2 37 0.31 newdef MelikhovStechFormFactor:T20 37 0.32 newdef MelikhovStechFormFactor:T2sigma_1 37 0.98 newdef MelikhovStechFormFactor:T2sigma_2 37 0.9 newdef MelikhovStechFormFactor:T30 37 0.23 newdef MelikhovStechFormFactor:T3sigma_1 37 1.42 newdef MelikhovStechFormFactor:T3sigma_2 37 0.62 newdef MelikhovStechFormFactor:MassP 37 5.27 newdef MelikhovStechFormFactor:MassV 37 5.32 newdef MelikhovStechFormFactor:FPlus0 38 0 newdef MelikhovStechFormFactor:F+sigma_1 38 0 newdef MelikhovStechFormFactor:F+sigma_2 38 0 newdef MelikhovStechFormFactor:F00 38 0 newdef MelikhovStechFormFactor:F0sigma_1 38 0 newdef MelikhovStechFormFactor:F0sigma_2 38 0 newdef MelikhovStechFormFactor:FT0 38 0 newdef MelikhovStechFormFactor:FTsigma_1 38 0 newdef MelikhovStechFormFactor:FTsigma_2 38 0 newdef MelikhovStechFormFactor:V00 38 0.38 newdef MelikhovStechFormFactor:V0sigma_1 38 0.66 newdef MelikhovStechFormFactor:V0sigma_2 38 0.3 newdef MelikhovStechFormFactor:A00 38 0.37 newdef MelikhovStechFormFactor:A0sigma_1 38 0.6 newdef MelikhovStechFormFactor:A0sigma_2 38 0.16 newdef MelikhovStechFormFactor:A10 38 0.29 newdef MelikhovStechFormFactor:A1sigma_1 38 0.86 newdef MelikhovStechFormFactor:A1sigma_2 38 0.6 newdef MelikhovStechFormFactor:A20 38 0.26 newdef MelikhovStechFormFactor:A2sigma_1 38 1.32 newdef MelikhovStechFormFactor:A2sigma_2 38 0.54 newdef MelikhovStechFormFactor:T10 38 0.32 newdef MelikhovStechFormFactor:T1sigma_1 38 0.66 newdef MelikhovStechFormFactor:T1sigma_2 38 0.31 newdef MelikhovStechFormFactor:T20 38 0.32 newdef MelikhovStechFormFactor:T2sigma_1 38 0.98 newdef MelikhovStechFormFactor:T2sigma_2 38 0.9 newdef MelikhovStechFormFactor:T30 38 0.23 newdef MelikhovStechFormFactor:T3sigma_1 38 1.42 newdef MelikhovStechFormFactor:T3sigma_2 38 0.62 newdef MelikhovStechFormFactor:MassP 38 5.27 newdef MelikhovStechFormFactor:MassV 38 5.32 newdef MelikhovStechFormFactor:FPlus0 39 0.36 newdef MelikhovStechFormFactor:F+sigma_1 39 0.6 newdef MelikhovStechFormFactor:F+sigma_2 39 0.2 newdef MelikhovStechFormFactor:F00 39 0.36 newdef MelikhovStechFormFactor:F0sigma_1 39 0.8 newdef MelikhovStechFormFactor:F0sigma_2 39 0.4 newdef MelikhovStechFormFactor:FT0 39 0.36 newdef MelikhovStechFormFactor:FTsigma_1 39 0.58 newdef MelikhovStechFormFactor:FTsigma_2 39 0.18 newdef MelikhovStechFormFactor:V00 39 0 newdef MelikhovStechFormFactor:V0sigma_1 39 0 newdef MelikhovStechFormFactor:V0sigma_2 39 0 newdef MelikhovStechFormFactor:A00 39 0 newdef MelikhovStechFormFactor:A0sigma_1 39 0 newdef MelikhovStechFormFactor:A0sigma_2 39 0 newdef MelikhovStechFormFactor:A10 39 0 newdef MelikhovStechFormFactor:A1sigma_1 39 0 newdef MelikhovStechFormFactor:A1sigma_2 39 0 newdef MelikhovStechFormFactor:A20 39 0 newdef MelikhovStechFormFactor:A2sigma_1 39 0 newdef MelikhovStechFormFactor:A2sigma_2 39 0 newdef MelikhovStechFormFactor:T10 39 0 newdef MelikhovStechFormFactor:T1sigma_1 39 0 newdef MelikhovStechFormFactor:T1sigma_2 39 0 newdef MelikhovStechFormFactor:T20 39 0 newdef MelikhovStechFormFactor:T2sigma_1 39 0 newdef MelikhovStechFormFactor:T2sigma_2 39 0 newdef MelikhovStechFormFactor:T30 39 0 newdef MelikhovStechFormFactor:T3sigma_1 39 0 newdef MelikhovStechFormFactor:T3sigma_2 39 0 newdef MelikhovStechFormFactor:MassP 39 5.37 newdef MelikhovStechFormFactor:MassV 39 5.42 newdef MelikhovStechFormFactor:FPlus0 40 0.36 newdef MelikhovStechFormFactor:F+sigma_1 40 0.6 newdef MelikhovStechFormFactor:F+sigma_2 40 0.2 newdef MelikhovStechFormFactor:F00 40 0.36 newdef MelikhovStechFormFactor:F0sigma_1 40 0.8 newdef MelikhovStechFormFactor:F0sigma_2 40 0.45 newdef MelikhovStechFormFactor:FT0 40 0.39 newdef MelikhovStechFormFactor:FTsigma_1 40 0.58 newdef MelikhovStechFormFactor:FTsigma_2 40 0.18 newdef MelikhovStechFormFactor:V00 40 0 newdef MelikhovStechFormFactor:V0sigma_1 40 0 newdef MelikhovStechFormFactor:V0sigma_2 40 0 newdef MelikhovStechFormFactor:A00 40 0 newdef MelikhovStechFormFactor:A0sigma_1 40 0 newdef MelikhovStechFormFactor:A0sigma_2 40 0 newdef MelikhovStechFormFactor:A10 40 0 newdef MelikhovStechFormFactor:A1sigma_1 40 0 newdef MelikhovStechFormFactor:A1sigma_2 40 0 newdef MelikhovStechFormFactor:A20 40 0 newdef MelikhovStechFormFactor:A2sigma_1 40 0 newdef MelikhovStechFormFactor:A2sigma_2 40 0 newdef MelikhovStechFormFactor:T10 40 0 newdef MelikhovStechFormFactor:T1sigma_1 40 0 newdef MelikhovStechFormFactor:T1sigma_2 40 0 newdef MelikhovStechFormFactor:T20 40 0 newdef MelikhovStechFormFactor:T2sigma_1 40 0 newdef MelikhovStechFormFactor:T2sigma_2 40 0 newdef MelikhovStechFormFactor:T30 40 0 newdef MelikhovStechFormFactor:T3sigma_1 40 0 newdef MelikhovStechFormFactor:T3sigma_2 40 0 newdef MelikhovStechFormFactor:MassP 40 5.37 newdef MelikhovStechFormFactor:MassV 40 5.42 newdef MelikhovStechFormFactor:FPlus0 41 0 newdef MelikhovStechFormFactor:F+sigma_1 41 0 newdef MelikhovStechFormFactor:F+sigma_2 41 0 newdef MelikhovStechFormFactor:F00 41 0 newdef MelikhovStechFormFactor:F0sigma_1 41 0 newdef MelikhovStechFormFactor:F0sigma_2 41 0 newdef MelikhovStechFormFactor:FT0 41 0 newdef MelikhovStechFormFactor:FTsigma_1 41 0 newdef MelikhovStechFormFactor:FTsigma_2 41 0 newdef MelikhovStechFormFactor:V00 41 0.44 newdef MelikhovStechFormFactor:V0sigma_1 41 0.62 newdef MelikhovStechFormFactor:V0sigma_2 41 0.2 newdef MelikhovStechFormFactor:A00 41 0.42 newdef MelikhovStechFormFactor:A0sigma_1 41 0.55 newdef MelikhovStechFormFactor:A0sigma_2 41 0.12 newdef MelikhovStechFormFactor:A10 41 0.34 newdef MelikhovStechFormFactor:A1sigma_1 41 0.73 newdef MelikhovStechFormFactor:A1sigma_2 41 0.42 newdef MelikhovStechFormFactor:A20 41 0.31 newdef MelikhovStechFormFactor:A2sigma_1 41 1.3 newdef MelikhovStechFormFactor:A2sigma_2 41 0.52 newdef MelikhovStechFormFactor:T10 41 0.38 newdef MelikhovStechFormFactor:T1sigma_1 41 0.62 newdef MelikhovStechFormFactor:T1sigma_2 41 0.2 newdef MelikhovStechFormFactor:T20 41 0.38 newdef MelikhovStechFormFactor:T2sigma_1 41 0.83 newdef MelikhovStechFormFactor:T2sigma_2 41 0.71 newdef MelikhovStechFormFactor:T30 41 0.26 newdef MelikhovStechFormFactor:T3sigma_1 41 1.41 newdef MelikhovStechFormFactor:T3sigma_2 41 0.57 newdef MelikhovStechFormFactor:MassP 41 5.37 newdef MelikhovStechFormFactor:MassV 41 5.42 newdef MelikhovStechFormFactor:Incoming 0 421 newdef MelikhovStechFormFactor:Outgoing 0 -321 newdef MelikhovStechFormFactor:Spin 0 0 newdef MelikhovStechFormFactor:Spectator 0 -2 newdef MelikhovStechFormFactor:InQuark 0 4 newdef MelikhovStechFormFactor:OutQuark 0 3 newdef MelikhovStechFormFactor:Incoming 1 411 newdef MelikhovStechFormFactor:Outgoing 1 -311 newdef MelikhovStechFormFactor:Spin 1 0 newdef MelikhovStechFormFactor:Spectator 1 -1 newdef MelikhovStechFormFactor:InQuark 1 4 newdef MelikhovStechFormFactor:OutQuark 1 3 newdef MelikhovStechFormFactor:Incoming 2 421 newdef MelikhovStechFormFactor:Outgoing 2 -323 newdef MelikhovStechFormFactor:Spin 2 1 newdef MelikhovStechFormFactor:Spectator 2 -2 newdef MelikhovStechFormFactor:InQuark 2 4 newdef MelikhovStechFormFactor:OutQuark 2 3 newdef MelikhovStechFormFactor:Incoming 3 411 newdef MelikhovStechFormFactor:Outgoing 3 -313 newdef MelikhovStechFormFactor:Spin 3 1 newdef MelikhovStechFormFactor:Spectator 3 -1 newdef MelikhovStechFormFactor:InQuark 3 4 newdef MelikhovStechFormFactor:OutQuark 3 3 newdef MelikhovStechFormFactor:Incoming 4 421 newdef MelikhovStechFormFactor:Outgoing 4 -211 newdef MelikhovStechFormFactor:Spin 4 0 newdef MelikhovStechFormFactor:Spectator 4 -2 newdef MelikhovStechFormFactor:InQuark 4 4 newdef MelikhovStechFormFactor:OutQuark 4 1 newdef MelikhovStechFormFactor:Incoming 5 421 newdef MelikhovStechFormFactor:Outgoing 5 111 newdef MelikhovStechFormFactor:Spin 5 0 newdef MelikhovStechFormFactor:Spectator 5 -2 newdef MelikhovStechFormFactor:InQuark 5 4 newdef MelikhovStechFormFactor:OutQuark 5 2 newdef MelikhovStechFormFactor:Incoming 6 411 newdef MelikhovStechFormFactor:Outgoing 6 111 newdef MelikhovStechFormFactor:Spin 6 0 newdef MelikhovStechFormFactor:Spectator 6 -1 newdef MelikhovStechFormFactor:InQuark 6 4 newdef MelikhovStechFormFactor:OutQuark 6 1 newdef MelikhovStechFormFactor:Incoming 7 411 newdef MelikhovStechFormFactor:Outgoing 7 211 newdef MelikhovStechFormFactor:Spin 7 0 newdef MelikhovStechFormFactor:Spectator 7 -1 newdef MelikhovStechFormFactor:InQuark 7 4 newdef MelikhovStechFormFactor:OutQuark 7 2 newdef MelikhovStechFormFactor:Incoming 8 421 newdef MelikhovStechFormFactor:Outgoing 8 -213 newdef MelikhovStechFormFactor:Spin 8 1 newdef MelikhovStechFormFactor:Spectator 8 -2 newdef MelikhovStechFormFactor:InQuark 8 4 newdef MelikhovStechFormFactor:OutQuark 8 1 newdef MelikhovStechFormFactor:Incoming 9 421 newdef MelikhovStechFormFactor:Outgoing 9 113 newdef MelikhovStechFormFactor:Spin 9 1 newdef MelikhovStechFormFactor:Spectator 9 -2 newdef MelikhovStechFormFactor:InQuark 9 4 newdef MelikhovStechFormFactor:OutQuark 9 2 newdef MelikhovStechFormFactor:Incoming 10 411 newdef MelikhovStechFormFactor:Outgoing 10 113 newdef MelikhovStechFormFactor:Spin 10 1 newdef MelikhovStechFormFactor:Spectator 10 -1 newdef MelikhovStechFormFactor:InQuark 10 4 newdef MelikhovStechFormFactor:OutQuark 10 1 newdef MelikhovStechFormFactor:Incoming 11 411 newdef MelikhovStechFormFactor:Outgoing 11 213 newdef MelikhovStechFormFactor:Spin 11 1 newdef MelikhovStechFormFactor:Spectator 11 -1 newdef MelikhovStechFormFactor:InQuark 11 4 newdef MelikhovStechFormFactor:OutQuark 11 2 newdef MelikhovStechFormFactor:Incoming 12 -521 newdef MelikhovStechFormFactor:Outgoing 12 421 newdef MelikhovStechFormFactor:Spin 12 0 newdef MelikhovStechFormFactor:Spectator 12 -2 newdef MelikhovStechFormFactor:InQuark 12 5 newdef MelikhovStechFormFactor:OutQuark 12 4 newdef MelikhovStechFormFactor:Incoming 13 -511 newdef MelikhovStechFormFactor:Outgoing 13 411 newdef MelikhovStechFormFactor:Spin 13 0 newdef MelikhovStechFormFactor:Spectator 13 -2 newdef MelikhovStechFormFactor:InQuark 13 5 newdef MelikhovStechFormFactor:OutQuark 13 4 newdef MelikhovStechFormFactor:Incoming 14 -521 newdef MelikhovStechFormFactor:Outgoing 14 423 newdef MelikhovStechFormFactor:Spin 14 1 newdef MelikhovStechFormFactor:Spectator 14 -2 newdef MelikhovStechFormFactor:InQuark 14 5 newdef MelikhovStechFormFactor:OutQuark 14 4 newdef MelikhovStechFormFactor:Incoming 15 -511 newdef MelikhovStechFormFactor:Outgoing 15 413 newdef MelikhovStechFormFactor:Spin 15 1 newdef MelikhovStechFormFactor:Spectator 15 -1 newdef MelikhovStechFormFactor:InQuark 15 5 newdef MelikhovStechFormFactor:OutQuark 15 4 newdef MelikhovStechFormFactor:Incoming 16 -521 newdef MelikhovStechFormFactor:Outgoing 16 -321 newdef MelikhovStechFormFactor:Spin 16 0 newdef MelikhovStechFormFactor:Spectator 16 -2 newdef MelikhovStechFormFactor:InQuark 16 5 newdef MelikhovStechFormFactor:OutQuark 16 3 newdef MelikhovStechFormFactor:Incoming 17 -511 newdef MelikhovStechFormFactor:Outgoing 17 -311 newdef MelikhovStechFormFactor:Spin 17 0 newdef MelikhovStechFormFactor:Spectator 17 -1 newdef MelikhovStechFormFactor:InQuark 17 5 newdef MelikhovStechFormFactor:OutQuark 17 3 newdef MelikhovStechFormFactor:Incoming 18 -521 newdef MelikhovStechFormFactor:Outgoing 18 -323 newdef MelikhovStechFormFactor:Spin 18 1 newdef MelikhovStechFormFactor:Spectator 18 -2 newdef MelikhovStechFormFactor:InQuark 18 5 newdef MelikhovStechFormFactor:OutQuark 18 3 newdef MelikhovStechFormFactor:Incoming 19 -511 newdef MelikhovStechFormFactor:Outgoing 19 -313 newdef MelikhovStechFormFactor:Spin 19 1 newdef MelikhovStechFormFactor:Spectator 19 -1 newdef MelikhovStechFormFactor:InQuark 19 5 newdef MelikhovStechFormFactor:OutQuark 19 3 newdef MelikhovStechFormFactor:Incoming 20 -521 newdef MelikhovStechFormFactor:Outgoing 20 111 newdef MelikhovStechFormFactor:Spin 20 0 newdef MelikhovStechFormFactor:Spectator 20 -2 newdef MelikhovStechFormFactor:InQuark 20 5 newdef MelikhovStechFormFactor:OutQuark 20 2 newdef MelikhovStechFormFactor:Incoming 21 -511 newdef MelikhovStechFormFactor:Outgoing 21 211 newdef MelikhovStechFormFactor:Spin 21 0 newdef MelikhovStechFormFactor:Spectator 21 -1 newdef MelikhovStechFormFactor:InQuark 21 5 newdef MelikhovStechFormFactor:OutQuark 21 2 newdef MelikhovStechFormFactor:Incoming 22 -521 newdef MelikhovStechFormFactor:Outgoing 22 -211 newdef MelikhovStechFormFactor:Spin 22 0 newdef MelikhovStechFormFactor:Spectator 22 -2 newdef MelikhovStechFormFactor:InQuark 22 5 newdef MelikhovStechFormFactor:OutQuark 22 1 newdef MelikhovStechFormFactor:Incoming 23 -511 newdef MelikhovStechFormFactor:Outgoing 23 111 newdef MelikhovStechFormFactor:Spin 23 0 newdef MelikhovStechFormFactor:Spectator 23 -1 newdef MelikhovStechFormFactor:InQuark 23 5 newdef MelikhovStechFormFactor:OutQuark 23 1 newdef MelikhovStechFormFactor:Incoming 24 -521 newdef MelikhovStechFormFactor:Outgoing 24 113 newdef MelikhovStechFormFactor:Spin 24 1 newdef MelikhovStechFormFactor:Spectator 24 -2 newdef MelikhovStechFormFactor:InQuark 24 5 newdef MelikhovStechFormFactor:OutQuark 24 2 newdef MelikhovStechFormFactor:Incoming 25 -511 newdef MelikhovStechFormFactor:Outgoing 25 213 newdef MelikhovStechFormFactor:Spin 25 1 newdef MelikhovStechFormFactor:Spectator 25 -1 newdef MelikhovStechFormFactor:InQuark 25 5 newdef MelikhovStechFormFactor:OutQuark 25 2 newdef MelikhovStechFormFactor:Incoming 26 -521 newdef MelikhovStechFormFactor:Outgoing 26 -213 newdef MelikhovStechFormFactor:Spin 26 1 newdef MelikhovStechFormFactor:Spectator 26 -2 newdef MelikhovStechFormFactor:InQuark 26 5 newdef MelikhovStechFormFactor:OutQuark 26 1 newdef MelikhovStechFormFactor:Incoming 27 -511 newdef MelikhovStechFormFactor:Outgoing 27 113 newdef MelikhovStechFormFactor:Spin 27 1 newdef MelikhovStechFormFactor:Spectator 27 -1 newdef MelikhovStechFormFactor:InQuark 27 5 newdef MelikhovStechFormFactor:OutQuark 27 1 newdef MelikhovStechFormFactor:Incoming 28 431 newdef MelikhovStechFormFactor:Outgoing 28 311 newdef MelikhovStechFormFactor:Spin 28 0 newdef MelikhovStechFormFactor:Spectator 28 -3 newdef MelikhovStechFormFactor:InQuark 28 4 newdef MelikhovStechFormFactor:OutQuark 28 1 newdef MelikhovStechFormFactor:Incoming 29 431 newdef MelikhovStechFormFactor:Outgoing 29 321 newdef MelikhovStechFormFactor:Spin 29 0 newdef MelikhovStechFormFactor:Spectator 29 -3 newdef MelikhovStechFormFactor:InQuark 29 4 newdef MelikhovStechFormFactor:OutQuark 29 2 newdef MelikhovStechFormFactor:Incoming 30 431 newdef MelikhovStechFormFactor:Outgoing 30 313 newdef MelikhovStechFormFactor:Spin 30 1 newdef MelikhovStechFormFactor:Spectator 30 -3 newdef MelikhovStechFormFactor:InQuark 30 4 newdef MelikhovStechFormFactor:OutQuark 30 1 newdef MelikhovStechFormFactor:Incoming 31 431 newdef MelikhovStechFormFactor:Outgoing 31 323 newdef MelikhovStechFormFactor:Spin 31 1 newdef MelikhovStechFormFactor:Spectator 31 -3 newdef MelikhovStechFormFactor:InQuark 31 4 newdef MelikhovStechFormFactor:OutQuark 31 2 newdef MelikhovStechFormFactor:Incoming 32 431 newdef MelikhovStechFormFactor:Outgoing 32 221 newdef MelikhovStechFormFactor:Spin 32 0 newdef MelikhovStechFormFactor:Spectator 32 -3 newdef MelikhovStechFormFactor:InQuark 32 4 newdef MelikhovStechFormFactor:OutQuark 32 3 newdef MelikhovStechFormFactor:Incoming 33 431 newdef MelikhovStechFormFactor:Outgoing 33 331 newdef MelikhovStechFormFactor:Spin 33 0 newdef MelikhovStechFormFactor:Spectator 33 -3 newdef MelikhovStechFormFactor:InQuark 33 4 newdef MelikhovStechFormFactor:OutQuark 33 3 newdef MelikhovStechFormFactor:Incoming 34 431 newdef MelikhovStechFormFactor:Outgoing 34 333 newdef MelikhovStechFormFactor:Spin 34 1 newdef MelikhovStechFormFactor:Spectator 34 -3 newdef MelikhovStechFormFactor:InQuark 34 4 newdef MelikhovStechFormFactor:OutQuark 34 3 newdef MelikhovStechFormFactor:Incoming 35 -531 newdef MelikhovStechFormFactor:Outgoing 35 311 newdef MelikhovStechFormFactor:Spin 35 0 newdef MelikhovStechFormFactor:Spectator 35 -3 newdef MelikhovStechFormFactor:InQuark 35 5 newdef MelikhovStechFormFactor:OutQuark 35 1 newdef MelikhovStechFormFactor:Incoming 36 -531 newdef MelikhovStechFormFactor:Outgoing 36 321 newdef MelikhovStechFormFactor:Spin 36 0 newdef MelikhovStechFormFactor:Spectator 36 -3 newdef MelikhovStechFormFactor:InQuark 36 5 newdef MelikhovStechFormFactor:OutQuark 36 2 newdef MelikhovStechFormFactor:Incoming 37 -531 newdef MelikhovStechFormFactor:Outgoing 37 313 newdef MelikhovStechFormFactor:Spin 37 1 newdef MelikhovStechFormFactor:Spectator 37 -3 newdef MelikhovStechFormFactor:InQuark 37 5 newdef MelikhovStechFormFactor:OutQuark 37 1 newdef MelikhovStechFormFactor:Incoming 38 -531 newdef MelikhovStechFormFactor:Outgoing 38 323 newdef MelikhovStechFormFactor:Spin 38 1 newdef MelikhovStechFormFactor:Spectator 38 -3 newdef MelikhovStechFormFactor:InQuark 38 5 newdef MelikhovStechFormFactor:OutQuark 38 2 newdef MelikhovStechFormFactor:Incoming 39 -531 newdef MelikhovStechFormFactor:Outgoing 39 221 newdef MelikhovStechFormFactor:Spin 39 0 newdef MelikhovStechFormFactor:Spectator 39 -3 newdef MelikhovStechFormFactor:InQuark 39 5 newdef MelikhovStechFormFactor:OutQuark 39 3 newdef MelikhovStechFormFactor:Incoming 40 -531 newdef MelikhovStechFormFactor:Outgoing 40 331 newdef MelikhovStechFormFactor:Spin 40 0 newdef MelikhovStechFormFactor:Spectator 40 -3 newdef MelikhovStechFormFactor:InQuark 40 5 newdef MelikhovStechFormFactor:OutQuark 40 3 newdef MelikhovStechFormFactor:Incoming 41 -531 newdef MelikhovStechFormFactor:Outgoing 41 333 newdef MelikhovStechFormFactor:Spin 41 1 newdef MelikhovStechFormFactor:Spectator 41 -3 newdef MelikhovStechFormFactor:InQuark 41 5 newdef MelikhovStechFormFactor:OutQuark 41 3 newdef MelikhovStech:FormFactor MelikhovStechFormFactor # create Herwig::SemiLeptonicBaryonDecayer BaryonLight2 newdef BaryonLight2:Iteration 1 newdef BaryonLight2:Ntry 500 newdef BaryonLight2:Points 10000 newdef BaryonLight2:GenerateIntermediates 1 insert BaryonLight2:MaximumWeight 0 2.29013 insert BaryonLight2:MaximumWeight 1 4.14333e-05 insert BaryonLight2:MaximumWeight 2 0.00012764 insert BaryonLight2:MaximumWeight 3 4.70199e-10 insert BaryonLight2:MaximumWeight 4 3.04697e-20 insert BaryonLight2:MaximumWeight 5 1.02959e-09 insert BaryonLight2:MaximumWeight 6 0.0028835 insert BaryonLight2:MaximumWeight 7 0.000392968 insert BaryonLight2:MaximumWeight 8 9.43244e-13 insert BaryonLight2:MaximumWeight 9 2.69324e-13 insert BaryonLight2:MaximumWeight 10 0.00405493 insert BaryonLight2:MaximumWeight 11 0.00117335 insert BaryonLight2:MaximumWeight 12 0.00239207 insert BaryonLight2:MaximumWeight 13 0.000443089 insert BaryonLight2:MaximumWeight 14 0.000229395 insert BaryonLight2:MaximumWeight 15 3.35965e-06 insert BaryonLight2:MaximumWeight 16 0.000719781 insert BaryonLight2:MaximumWeight 17 7.04736e-06 create Herwig::LeptonNeutrinoCurrent BaryonLight2Current HwWeakCurrents.so newdef BaryonLight2Current:Quark 0 11 newdef BaryonLight2Current:AntiQuark 0 -12 newdef BaryonLight2Current:Quark 1 13 newdef BaryonLight2Current:AntiQuark 1 -15 newdef BaryonLight2Current:Quark 2 15 newdef BaryonLight2Current:AntiQuark 2 -16 newdef BaryonLight2:Current BaryonLight2Current create Herwig::BaryonSimpleFormFactor BaryonLight2Form newdef BaryonLight2Form:g_A 1.25 newdef BaryonLight2Form:alpha_D 0.6 newdef BaryonLight2Form:eta_V 0.97 newdef BaryonLight2Form:eta_A 1.08 newdef BaryonLight2Form:rho_E 0.094 newdef BaryonLight2Form:rho_M 0.86 newdef BaryonLight2Form:Incoming 0 2112 newdef BaryonLight2Form:Outgoing 0 2212 newdef BaryonLight2Form:InSpin 0 2 newdef BaryonLight2Form:OutSpin 0 2 newdef BaryonLight2Form:Spectator1 0 2 newdef BaryonLight2Form:Spectator2 0 1 newdef BaryonLight2Form:InQuark 0 1 newdef BaryonLight2Form:OutQuark 0 2 newdef BaryonLight2Form:Incoming 1 3222 newdef BaryonLight2Form:Outgoing 1 3122 newdef BaryonLight2Form:InSpin 1 2 newdef BaryonLight2Form:OutSpin 1 2 newdef BaryonLight2Form:Spectator1 1 3 newdef BaryonLight2Form:Spectator2 1 2 newdef BaryonLight2Form:InQuark 1 1 newdef BaryonLight2Form:OutQuark 1 2 newdef BaryonLight2Form:Incoming 2 3112 newdef BaryonLight2Form:Outgoing 2 3122 newdef BaryonLight2Form:InSpin 2 2 newdef BaryonLight2Form:OutSpin 2 2 newdef BaryonLight2Form:Spectator1 2 3 newdef BaryonLight2Form:Spectator2 2 1 newdef BaryonLight2Form:InQuark 2 1 newdef BaryonLight2Form:OutQuark 2 2 newdef BaryonLight2Form:Incoming 3 3112 newdef BaryonLight2Form:Outgoing 3 3212 newdef BaryonLight2Form:InSpin 3 2 newdef BaryonLight2Form:OutSpin 3 2 newdef BaryonLight2Form:Spectator1 3 3 newdef BaryonLight2Form:Spectator2 3 1 newdef BaryonLight2Form:InQuark 3 1 newdef BaryonLight2Form:OutQuark 3 2 newdef BaryonLight2Form:Incoming 4 3212 newdef BaryonLight2Form:Outgoing 4 3222 newdef BaryonLight2Form:InSpin 4 2 newdef BaryonLight2Form:OutSpin 4 2 newdef BaryonLight2Form:Spectator1 4 3 newdef BaryonLight2Form:Spectator2 4 2 newdef BaryonLight2Form:InQuark 4 1 newdef BaryonLight2Form:OutQuark 4 2 newdef BaryonLight2Form:Incoming 5 3312 newdef BaryonLight2Form:Outgoing 5 3322 newdef BaryonLight2Form:InSpin 5 2 newdef BaryonLight2Form:OutSpin 5 2 newdef BaryonLight2Form:Spectator1 5 3 newdef BaryonLight2Form:Spectator2 5 3 newdef BaryonLight2Form:InQuark 5 1 newdef BaryonLight2Form:OutQuark 5 2 newdef BaryonLight2Form:Incoming 6 3122 newdef BaryonLight2Form:Outgoing 6 2212 newdef BaryonLight2Form:InSpin 6 2 newdef BaryonLight2Form:OutSpin 6 2 newdef BaryonLight2Form:Spectator1 6 2 newdef BaryonLight2Form:Spectator2 6 1 newdef BaryonLight2Form:InQuark 6 3 newdef BaryonLight2Form:OutQuark 6 2 newdef BaryonLight2Form:Incoming 7 3212 newdef BaryonLight2Form:Outgoing 7 2212 newdef BaryonLight2Form:InSpin 7 2 newdef BaryonLight2Form:OutSpin 7 2 newdef BaryonLight2Form:Spectator1 7 2 newdef BaryonLight2Form:Spectator2 7 1 newdef BaryonLight2Form:InQuark 7 3 newdef BaryonLight2Form:OutQuark 7 2 newdef BaryonLight2Form:Incoming 8 3112 newdef BaryonLight2Form:Outgoing 8 2112 newdef BaryonLight2Form:InSpin 8 2 newdef BaryonLight2Form:OutSpin 8 2 newdef BaryonLight2Form:Spectator1 8 1 newdef BaryonLight2Form:Spectator2 8 1 newdef BaryonLight2Form:InQuark 8 3 newdef BaryonLight2Form:OutQuark 8 2 newdef BaryonLight2Form:Incoming 9 3312 newdef BaryonLight2Form:Outgoing 9 3122 newdef BaryonLight2Form:InSpin 9 2 newdef BaryonLight2Form:OutSpin 9 2 newdef BaryonLight2Form:Spectator1 9 3 newdef BaryonLight2Form:Spectator2 9 1 newdef BaryonLight2Form:InQuark 9 3 newdef BaryonLight2Form:OutQuark 9 2 newdef BaryonLight2Form:Incoming 10 3312 newdef BaryonLight2Form:Outgoing 10 3212 newdef BaryonLight2Form:InSpin 10 2 newdef BaryonLight2Form:OutSpin 10 2 newdef BaryonLight2Form:Spectator1 10 3 newdef BaryonLight2Form:Spectator2 10 1 newdef BaryonLight2Form:InQuark 10 3 newdef BaryonLight2Form:OutQuark 10 2 newdef BaryonLight2Form:Incoming 11 3322 newdef BaryonLight2Form:Outgoing 11 3222 newdef BaryonLight2Form:InSpin 11 2 newdef BaryonLight2Form:OutSpin 11 2 newdef BaryonLight2Form:Spectator1 11 3 newdef BaryonLight2Form:Spectator2 11 2 newdef BaryonLight2Form:InQuark 11 3 newdef BaryonLight2Form:OutQuark 11 2 newdef BaryonLight2:FormFactor BaryonLight2Form # create Herwig::SemiLeptonicScalarDecayer KiselevBc newdef KiselevBc:Iteration 1 newdef KiselevBc:Ntry 500 newdef KiselevBc:Points 10000 newdef KiselevBc:GenerateIntermediates 1 insert KiselevBc:MaximumWeight 0 0.175615 insert KiselevBc:MaximumWeight 1 0.136474 insert KiselevBc:MaximumWeight 2 0.137341 insert KiselevBc:MaximumWeight 3 0.131993 insert KiselevBc:MaximumWeight 4 0.0137226 insert KiselevBc:MaximumWeight 5 0.0111086 insert KiselevBc:MaximumWeight 6 0.0168782 insert KiselevBc:MaximumWeight 7 0.0163124 insert KiselevBc:MaximumWeight 8 0.000135914 insert KiselevBc:MaximumWeight 9 0.000132475 insert KiselevBc:MaximumWeight 10 6.16844e-05 insert KiselevBc:MaximumWeight 11 0.00106059 insert KiselevBc:MaximumWeight 12 0.00106038 insert KiselevBc:MaximumWeight 13 0.000447588 insert KiselevBc:MaximumWeight 14 0.027841 insert KiselevBc:MaximumWeight 15 0.0259921 insert KiselevBc:MaximumWeight 16 0.0101164 insert KiselevBc:MaximumWeight 17 0.0397051 insert KiselevBc:MaximumWeight 18 0.0395602 insert KiselevBc:MaximumWeight 19 0.00990111 insert KiselevBc:MaximumWeight 20 0.00068535 insert KiselevBc:MaximumWeight 21 0.000682114 insert KiselevBc:MaximumWeight 22 8.18378e-05 insert KiselevBc:MaximumWeight 23 0.00136992 insert KiselevBc:MaximumWeight 24 0.0013625 insert KiselevBc:MaximumWeight 25 0.00014084 create Herwig::LeptonNeutrinoCurrent KiselevBcCurrent HwWeakCurrents.so newdef KiselevBcCurrent:Quark 0 11 newdef KiselevBcCurrent:AntiQuark 0 -12 newdef KiselevBcCurrent:Quark 1 13 newdef KiselevBcCurrent:AntiQuark 1 -15 newdef KiselevBcCurrent:Quark 2 15 newdef KiselevBcCurrent:AntiQuark 2 -16 newdef KiselevBc:Current KiselevBcCurrent create Herwig::KiselevBcFormFactor KiselevBcFormFactor newdef KiselevBcFormFactor:Fplus 0 1.3 newdef KiselevBcFormFactor:Fminus 0 -5.8 newdef KiselevBcFormFactor:FV 0 0 newdef KiselevBcFormFactor:F0A 0 0 newdef KiselevBcFormFactor:FplusA 0 0 newdef KiselevBcFormFactor:FminusA 0 0 newdef KiselevBcFormFactor:MpoleFplus 0 1.8 newdef KiselevBcFormFactor:MpoleFminus 0 1.8 newdef KiselevBcFormFactor:MpoleFV 0 0 newdef KiselevBcFormFactor:MpoleF0A 0 0 newdef KiselevBcFormFactor:MpoleFplusA 0 0 newdef KiselevBcFormFactor:MpoleFminusA 0 0 newdef KiselevBcFormFactor:Fplus 1 0 newdef KiselevBcFormFactor:Fminus 1 0 newdef KiselevBcFormFactor:FV 1 1.1 newdef KiselevBcFormFactor:F0A 1 8.1 newdef KiselevBcFormFactor:FplusA 1 0.2 newdef KiselevBcFormFactor:FminusA 1 1.8 newdef KiselevBcFormFactor:MpoleFplus 1 0 newdef KiselevBcFormFactor:MpoleFminus 1 0 newdef KiselevBcFormFactor:MpoleFV 1 1.8 newdef KiselevBcFormFactor:MpoleF0A 1 1.8 newdef KiselevBcFormFactor:MpoleFplusA 1 1.8 newdef KiselevBcFormFactor:MpoleFminusA 1 1.8 newdef KiselevBcFormFactor:Fplus 2 1.27 newdef KiselevBcFormFactor:Fminus 2 -7.3 newdef KiselevBcFormFactor:FV 2 0 newdef KiselevBcFormFactor:F0A 2 0 newdef KiselevBcFormFactor:FplusA 2 0 newdef KiselevBcFormFactor:FminusA 2 0 newdef KiselevBcFormFactor:MpoleFplus 2 1.7 newdef KiselevBcFormFactor:MpoleFminus 2 1.7 newdef KiselevBcFormFactor:MpoleFV 2 0 newdef KiselevBcFormFactor:MpoleF0A 2 0 newdef KiselevBcFormFactor:MpoleFplusA 2 0 newdef KiselevBcFormFactor:MpoleFminusA 2 0 newdef KiselevBcFormFactor:Fplus 3 1.27 newdef KiselevBcFormFactor:Fminus 3 -7.3 newdef KiselevBcFormFactor:FV 3 0 newdef KiselevBcFormFactor:F0A 3 0 newdef KiselevBcFormFactor:FplusA 3 0 newdef KiselevBcFormFactor:FminusA 3 0 newdef KiselevBcFormFactor:MpoleFplus 3 1.7 newdef KiselevBcFormFactor:MpoleFminus 3 1.7 newdef KiselevBcFormFactor:MpoleFV 3 0 newdef KiselevBcFormFactor:MpoleF0A 3 0 newdef KiselevBcFormFactor:MpoleFplusA 3 0 newdef KiselevBcFormFactor:MpoleFminusA 3 0 newdef KiselevBcFormFactor:Fplus 4 0 newdef KiselevBcFormFactor:Fminus 4 0 newdef KiselevBcFormFactor:FV 4 1.35 newdef KiselevBcFormFactor:F0A 4 9.8 newdef KiselevBcFormFactor:FplusA 4 0.35 newdef KiselevBcFormFactor:FminusA 4 2.5 newdef KiselevBcFormFactor:MpoleFplus 4 0 newdef KiselevBcFormFactor:MpoleFminus 4 0 newdef KiselevBcFormFactor:MpoleFV 4 2.2 newdef KiselevBcFormFactor:MpoleF0A 4 3.2 newdef KiselevBcFormFactor:MpoleFplusA 4 2.2 newdef KiselevBcFormFactor:MpoleFminusA 4 3.2 newdef KiselevBcFormFactor:Fplus 5 0 newdef KiselevBcFormFactor:Fminus 5 0 newdef KiselevBcFormFactor:FV 5 1.35 newdef KiselevBcFormFactor:F0A 5 9.8 newdef KiselevBcFormFactor:FplusA 5 0.35 newdef KiselevBcFormFactor:FminusA 5 2.5 newdef KiselevBcFormFactor:MpoleFplus 5 0 newdef KiselevBcFormFactor:MpoleFminus 5 0 newdef KiselevBcFormFactor:MpoleFV 5 2.2 newdef KiselevBcFormFactor:MpoleF0A 5 3.2 newdef KiselevBcFormFactor:MpoleFplusA 5 2.2 newdef KiselevBcFormFactor:MpoleFminusA 5 3.2 newdef KiselevBcFormFactor:Fplus 6 0.32 newdef KiselevBcFormFactor:Fminus 6 -0.34 newdef KiselevBcFormFactor:FV 6 0 newdef KiselevBcFormFactor:F0A 6 0 newdef KiselevBcFormFactor:FplusA 6 0 newdef KiselevBcFormFactor:FminusA 6 0 newdef KiselevBcFormFactor:MpoleFplus 6 5 newdef KiselevBcFormFactor:MpoleFminus 6 5 newdef KiselevBcFormFactor:MpoleFV 6 0 newdef KiselevBcFormFactor:MpoleF0A 6 0 newdef KiselevBcFormFactor:MpoleFplusA 6 0 newdef KiselevBcFormFactor:MpoleFminusA 6 0 newdef KiselevBcFormFactor:Fplus 7 0.32 newdef KiselevBcFormFactor:Fminus 7 -0.34 newdef KiselevBcFormFactor:FV 7 0 newdef KiselevBcFormFactor:F0A 7 0 newdef KiselevBcFormFactor:FplusA 7 0 newdef KiselevBcFormFactor:FminusA 7 0 newdef KiselevBcFormFactor:MpoleFplus 7 5 newdef KiselevBcFormFactor:MpoleFminus 7 5 newdef KiselevBcFormFactor:MpoleFV 7 0 newdef KiselevBcFormFactor:MpoleF0A 7 0 newdef KiselevBcFormFactor:MpoleFplusA 7 0 newdef KiselevBcFormFactor:MpoleFminusA 7 0 newdef KiselevBcFormFactor:Fplus 8 0 newdef KiselevBcFormFactor:Fminus 8 0 newdef KiselevBcFormFactor:FV 8 0.2 newdef KiselevBcFormFactor:F0A 8 3.6 newdef KiselevBcFormFactor:FplusA 8 -0.062 newdef KiselevBcFormFactor:FminusA 8 0.1 newdef KiselevBcFormFactor:MpoleFplus 8 0 newdef KiselevBcFormFactor:MpoleFminus 8 0 newdef KiselevBcFormFactor:MpoleFV 8 6.2 newdef KiselevBcFormFactor:MpoleF0A 8 -1 newdef KiselevBcFormFactor:MpoleFplusA 8 6.2 newdef KiselevBcFormFactor:MpoleFminusA 8 6.2 newdef KiselevBcFormFactor:Fplus 9 0 newdef KiselevBcFormFactor:Fminus 9 0 newdef KiselevBcFormFactor:FV 9 0.2 newdef KiselevBcFormFactor:F0A 9 3.6 newdef KiselevBcFormFactor:FplusA 9 -0.062 newdef KiselevBcFormFactor:FminusA 9 0.1 newdef KiselevBcFormFactor:MpoleFplus 9 0 newdef KiselevBcFormFactor:MpoleFminus 9 0 newdef KiselevBcFormFactor:MpoleFV 9 6.2 newdef KiselevBcFormFactor:MpoleF0A 9 -1 newdef KiselevBcFormFactor:MpoleFplusA 9 6.2 newdef KiselevBcFormFactor:MpoleFminusA 9 6.2 newdef KiselevBcFormFactor:Fplus 10 0.45 newdef KiselevBcFormFactor:Fminus 10 -0.43 newdef KiselevBcFormFactor:FV 10 0 newdef KiselevBcFormFactor:F0A 10 0 newdef KiselevBcFormFactor:FplusA 10 0 newdef KiselevBcFormFactor:FminusA 10 0 newdef KiselevBcFormFactor:MpoleFplus 10 5 newdef KiselevBcFormFactor:MpoleFminus 10 5 newdef KiselevBcFormFactor:MpoleFV 10 0 newdef KiselevBcFormFactor:MpoleF0A 10 0 newdef KiselevBcFormFactor:MpoleFplusA 10 0 newdef KiselevBcFormFactor:MpoleFminusA 10 0 newdef KiselevBcFormFactor:Fplus 11 0 newdef KiselevBcFormFactor:Fminus 11 0 newdef KiselevBcFormFactor:FV 11 0.24 newdef KiselevBcFormFactor:F0A 11 4.7 newdef KiselevBcFormFactor:FplusA 11 -0.077 newdef KiselevBcFormFactor:FminusA 11 0.13 newdef KiselevBcFormFactor:MpoleFplus 11 0 newdef KiselevBcFormFactor:MpoleFminus 11 0 newdef KiselevBcFormFactor:MpoleFV 11 6.2 newdef KiselevBcFormFactor:MpoleF0A 11 -1 newdef KiselevBcFormFactor:MpoleFplusA 11 6.2 newdef KiselevBcFormFactor:MpoleFminusA 11 6.2 newdef KiselevBcFormFactor:Fplus 12 0.66 newdef KiselevBcFormFactor:Fminus 12 -0.36 newdef KiselevBcFormFactor:FV 12 0 newdef KiselevBcFormFactor:F0A 12 0 newdef KiselevBcFormFactor:FplusA 12 0 newdef KiselevBcFormFactor:FminusA 12 0 newdef KiselevBcFormFactor:MpoleFplus 12 4.5 newdef KiselevBcFormFactor:MpoleFminus 12 4.5 newdef KiselevBcFormFactor:MpoleFV 12 0 newdef KiselevBcFormFactor:MpoleF0A 12 0 newdef KiselevBcFormFactor:MpoleFplusA 12 0 newdef KiselevBcFormFactor:MpoleFminusA 12 0 newdef KiselevBcFormFactor:Fplus 13 0 newdef KiselevBcFormFactor:Fminus 13 0 newdef KiselevBcFormFactor:FV 13 0.11 newdef KiselevBcFormFactor:F0A 13 5.9 newdef KiselevBcFormFactor:FplusA 13 -0.074 newdef KiselevBcFormFactor:FminusA 13 0.12 newdef KiselevBcFormFactor:MpoleFplus 13 0 newdef KiselevBcFormFactor:MpoleFminus 13 0 newdef KiselevBcFormFactor:MpoleFV 13 5.5 newdef KiselevBcFormFactor:MpoleF0A 13 5.5 newdef KiselevBcFormFactor:MpoleFplusA 13 5.5 newdef KiselevBcFormFactor:MpoleFminusA 13 5.5 newdef KiselevBcFormFactor:Fplus 14 0.17 newdef KiselevBcFormFactor:Fminus 14 -0.16 newdef KiselevBcFormFactor:FV 14 0 newdef KiselevBcFormFactor:F0A 14 0 newdef KiselevBcFormFactor:FplusA 14 0 newdef KiselevBcFormFactor:FminusA 14 0 newdef KiselevBcFormFactor:MpoleFplus 14 4.5 newdef KiselevBcFormFactor:MpoleFminus 14 4.5 newdef KiselevBcFormFactor:MpoleFV 14 0 newdef KiselevBcFormFactor:MpoleF0A 14 0 newdef KiselevBcFormFactor:MpoleFplusA 14 0 newdef KiselevBcFormFactor:MpoleFminusA 14 0 newdef KiselevBcFormFactor:Fplus 15 0 newdef KiselevBcFormFactor:Fminus 15 0 newdef KiselevBcFormFactor:FV 15 0.035 newdef KiselevBcFormFactor:F0A 15 1.686 newdef KiselevBcFormFactor:FplusA 15 -0.015 newdef KiselevBcFormFactor:FminusA 15 0.052 newdef KiselevBcFormFactor:MpoleFplus 15 0 newdef KiselevBcFormFactor:MpoleFminus 15 0 newdef KiselevBcFormFactor:MpoleFV 15 4.2 newdef KiselevBcFormFactor:MpoleF0A 15 4.2 newdef KiselevBcFormFactor:MpoleFplusA 15 4.2 newdef KiselevBcFormFactor:MpoleFminusA 15 4.2 newdef KiselevBcFormFactor:Incoming 0 541 newdef KiselevBcFormFactor:Outgoing 0 531 newdef KiselevBcFormFactor:Spin 0 0 newdef KiselevBcFormFactor:Spectator 0 -5 newdef KiselevBcFormFactor:InQuark 0 4 newdef KiselevBcFormFactor:OutQuark 0 3 newdef KiselevBcFormFactor:Incoming 1 541 newdef KiselevBcFormFactor:Outgoing 1 533 newdef KiselevBcFormFactor:Spin 1 1 newdef KiselevBcFormFactor:Spectator 1 -5 newdef KiselevBcFormFactor:InQuark 1 4 newdef KiselevBcFormFactor:OutQuark 1 3 newdef KiselevBcFormFactor:Incoming 2 541 newdef KiselevBcFormFactor:Outgoing 2 511 newdef KiselevBcFormFactor:Spin 2 0 newdef KiselevBcFormFactor:Spectator 2 -5 newdef KiselevBcFormFactor:InQuark 2 4 newdef KiselevBcFormFactor:OutQuark 2 1 newdef KiselevBcFormFactor:Incoming 3 541 newdef KiselevBcFormFactor:Outgoing 3 521 newdef KiselevBcFormFactor:Spin 3 0 newdef KiselevBcFormFactor:Spectator 3 -5 newdef KiselevBcFormFactor:InQuark 3 4 newdef KiselevBcFormFactor:OutQuark 3 2 newdef KiselevBcFormFactor:Incoming 4 541 newdef KiselevBcFormFactor:Outgoing 4 513 newdef KiselevBcFormFactor:Spin 4 1 newdef KiselevBcFormFactor:Spectator 4 -5 newdef KiselevBcFormFactor:InQuark 4 4 newdef KiselevBcFormFactor:OutQuark 4 1 newdef KiselevBcFormFactor:Incoming 5 541 newdef KiselevBcFormFactor:Outgoing 5 523 newdef KiselevBcFormFactor:Spin 5 1 newdef KiselevBcFormFactor:Spectator 5 -5 newdef KiselevBcFormFactor:InQuark 5 4 newdef KiselevBcFormFactor:OutQuark 5 2 newdef KiselevBcFormFactor:Incoming 6 -541 newdef KiselevBcFormFactor:Outgoing 6 -411 newdef KiselevBcFormFactor:Spin 6 0 newdef KiselevBcFormFactor:Spectator 6 -4 newdef KiselevBcFormFactor:InQuark 6 5 newdef KiselevBcFormFactor:OutQuark 6 1 newdef KiselevBcFormFactor:Incoming 7 -541 newdef KiselevBcFormFactor:Outgoing 7 -421 newdef KiselevBcFormFactor:Spin 7 0 newdef KiselevBcFormFactor:Spectator 7 -4 newdef KiselevBcFormFactor:InQuark 7 5 newdef KiselevBcFormFactor:OutQuark 7 2 newdef KiselevBcFormFactor:Incoming 8 -541 newdef KiselevBcFormFactor:Outgoing 8 -413 newdef KiselevBcFormFactor:Spin 8 1 newdef KiselevBcFormFactor:Spectator 8 -4 newdef KiselevBcFormFactor:InQuark 8 5 newdef KiselevBcFormFactor:OutQuark 8 1 newdef KiselevBcFormFactor:Incoming 9 -541 newdef KiselevBcFormFactor:Outgoing 9 -423 newdef KiselevBcFormFactor:Spin 9 1 newdef KiselevBcFormFactor:Spectator 9 -4 newdef KiselevBcFormFactor:InQuark 9 5 newdef KiselevBcFormFactor:OutQuark 9 2 newdef KiselevBcFormFactor:Incoming 10 -541 newdef KiselevBcFormFactor:Outgoing 10 -431 newdef KiselevBcFormFactor:Spin 10 0 newdef KiselevBcFormFactor:Spectator 10 -4 newdef KiselevBcFormFactor:InQuark 10 5 newdef KiselevBcFormFactor:OutQuark 10 3 newdef KiselevBcFormFactor:Incoming 11 -541 newdef KiselevBcFormFactor:Outgoing 11 -433 newdef KiselevBcFormFactor:Spin 11 1 newdef KiselevBcFormFactor:Spectator 11 -4 newdef KiselevBcFormFactor:InQuark 11 5 newdef KiselevBcFormFactor:OutQuark 11 3 newdef KiselevBcFormFactor:Incoming 12 -541 newdef KiselevBcFormFactor:Outgoing 12 441 newdef KiselevBcFormFactor:Spin 12 0 newdef KiselevBcFormFactor:Spectator 12 -4 newdef KiselevBcFormFactor:InQuark 12 5 newdef KiselevBcFormFactor:OutQuark 12 4 newdef KiselevBcFormFactor:Incoming 13 -541 newdef KiselevBcFormFactor:Outgoing 13 443 newdef KiselevBcFormFactor:Spin 13 1 newdef KiselevBcFormFactor:Spectator 13 -4 newdef KiselevBcFormFactor:InQuark 13 5 newdef KiselevBcFormFactor:OutQuark 13 4 newdef KiselevBcFormFactor:Incoming 14 -541 newdef KiselevBcFormFactor:Outgoing 14 100441 newdef KiselevBcFormFactor:Spin 14 0 newdef KiselevBcFormFactor:Spectator 14 -4 newdef KiselevBcFormFactor:InQuark 14 5 newdef KiselevBcFormFactor:OutQuark 14 4 newdef KiselevBcFormFactor:Incoming 15 -541 newdef KiselevBcFormFactor:Outgoing 15 100443 newdef KiselevBcFormFactor:Spin 15 1 newdef KiselevBcFormFactor:Spectator 15 -4 newdef KiselevBcFormFactor:InQuark 15 5 newdef KiselevBcFormFactor:OutQuark 15 4 newdef KiselevBc:FormFactor KiselevBcFormFactor # create Herwig::ScalarMesonFactorizedDecayer BcHadronic newdef BcHadronic:Iteration 1 newdef BcHadronic:Ntry 500 newdef BcHadronic:Points 10000 newdef BcHadronic:GenerateIntermediates 1 newdef BcHadronic:a1Bottom 1.14 newdef BcHadronic:a2Bottom -0.2 newdef BcHadronic:a1Charm 1.2 newdef BcHadronic:a2Charm -0.317 create Herwig::ScalarMesonCurrent BcHadronicScalarCurrent HwWeakCurrents.so newdef BcHadronicScalarCurrent:ThetaEtaEtaPrime -0.194 newdef BcHadronicScalarCurrent:ID 0 211 newdef BcHadronicScalarCurrent:Decay_Constant 0 -132 newdef BcHadronicScalarCurrent:ID 1 111 newdef BcHadronicScalarCurrent:Decay_Constant 1 -132 newdef BcHadronicScalarCurrent:ID 2 111 newdef BcHadronicScalarCurrent:Decay_Constant 2 -132 newdef BcHadronicScalarCurrent:ID 3 221 newdef BcHadronicScalarCurrent:Decay_Constant 3 -132 newdef BcHadronicScalarCurrent:ID 4 221 newdef BcHadronicScalarCurrent:Decay_Constant 4 -132 newdef BcHadronicScalarCurrent:ID 5 221 newdef BcHadronicScalarCurrent:Decay_Constant 5 -132 newdef BcHadronicScalarCurrent:ID 6 331 newdef BcHadronicScalarCurrent:Decay_Constant 6 -132 newdef BcHadronicScalarCurrent:ID 7 331 newdef BcHadronicScalarCurrent:Decay_Constant 7 -132 newdef BcHadronicScalarCurrent:ID 8 331 newdef BcHadronicScalarCurrent:Decay_Constant 8 -132 newdef BcHadronicScalarCurrent:ID 9 311 newdef BcHadronicScalarCurrent:Decay_Constant 9 -162 newdef BcHadronicScalarCurrent:ID 10 321 newdef BcHadronicScalarCurrent:Decay_Constant 10 -162 newdef BcHadronicScalarCurrent:ID 11 411 newdef BcHadronicScalarCurrent:Decay_Constant 11 -214 newdef BcHadronicScalarCurrent:ID 12 421 newdef BcHadronicScalarCurrent:Decay_Constant 12 -214 newdef BcHadronicScalarCurrent:ID 13 431 newdef BcHadronicScalarCurrent:Decay_Constant 13 -237 newdef BcHadronicScalarCurrent:ID 14 10431 newdef BcHadronicScalarCurrent:Decay_Constant 14 -73.7 insert BcHadronicScalarCurrent:ID 15 441 insert BcHadronicScalarCurrent:Decay_Constant 15 -564 newdef BcHadronicScalarCurrent:Quark 0 2 newdef BcHadronicScalarCurrent:AntiQuark 0 -1 newdef BcHadronicScalarCurrent:Quark 1 1 newdef BcHadronicScalarCurrent:AntiQuark 1 -1 newdef BcHadronicScalarCurrent:Quark 2 2 newdef BcHadronicScalarCurrent:AntiQuark 2 -2 newdef BcHadronicScalarCurrent:Quark 3 1 newdef BcHadronicScalarCurrent:AntiQuark 3 -1 newdef BcHadronicScalarCurrent:Quark 4 2 newdef BcHadronicScalarCurrent:AntiQuark 4 -2 newdef BcHadronicScalarCurrent:Quark 5 3 newdef BcHadronicScalarCurrent:AntiQuark 5 -3 newdef BcHadronicScalarCurrent:Quark 6 1 newdef BcHadronicScalarCurrent:AntiQuark 6 -1 newdef BcHadronicScalarCurrent:Quark 7 2 newdef BcHadronicScalarCurrent:AntiQuark 7 -2 newdef BcHadronicScalarCurrent:Quark 8 3 newdef BcHadronicScalarCurrent:AntiQuark 8 -3 newdef BcHadronicScalarCurrent:Quark 9 1 newdef BcHadronicScalarCurrent:AntiQuark 9 -3 newdef BcHadronicScalarCurrent:Quark 10 2 newdef BcHadronicScalarCurrent:AntiQuark 10 -3 newdef BcHadronicScalarCurrent:Quark 11 4 newdef BcHadronicScalarCurrent:AntiQuark 11 -1 newdef BcHadronicScalarCurrent:Quark 12 4 newdef BcHadronicScalarCurrent:AntiQuark 12 -2 newdef BcHadronicScalarCurrent:Quark 13 4 newdef BcHadronicScalarCurrent:AntiQuark 13 -3 newdef BcHadronicScalarCurrent:Quark 14 4 newdef BcHadronicScalarCurrent:AntiQuark 14 -3 insert BcHadronicScalarCurrent:Quark 15 4 insert BcHadronicScalarCurrent:AntiQuark 15 -4 insert BcHadronic:Currents 0 BcHadronicScalarCurrent create Herwig::VectorMesonCurrent BcHadronicVectorCurrent HwWeakCurrents.so newdef BcHadronicVectorCurrent:ID 0 213 newdef BcHadronicVectorCurrent:Decay_Constant 0 0.16 newdef BcHadronicVectorCurrent:ID 1 113 newdef BcHadronicVectorCurrent:Decay_Constant 1 0.16 newdef BcHadronicVectorCurrent:ID 2 113 newdef BcHadronicVectorCurrent:Decay_Constant 2 0.16 newdef BcHadronicVectorCurrent:ID 3 223 newdef BcHadronicVectorCurrent:Decay_Constant 3 0.16 newdef BcHadronicVectorCurrent:ID 4 223 newdef BcHadronicVectorCurrent:Decay_Constant 4 0.16 newdef BcHadronicVectorCurrent:ID 5 333 newdef BcHadronicVectorCurrent:Decay_Constant 5 0.238 newdef BcHadronicVectorCurrent:ID 6 313 newdef BcHadronicVectorCurrent:Decay_Constant 6 0.197 newdef BcHadronicVectorCurrent:ID 7 323 newdef BcHadronicVectorCurrent:Decay_Constant 7 0.197 newdef BcHadronicVectorCurrent:ID 8 20213 newdef BcHadronicVectorCurrent:Decay_Constant 8 0.278 newdef BcHadronicVectorCurrent:ID 9 20113 newdef BcHadronicVectorCurrent:Decay_Constant 9 0.278 newdef BcHadronicVectorCurrent:ID 10 20113 newdef BcHadronicVectorCurrent:Decay_Constant 10 0.278 newdef BcHadronicVectorCurrent:ID 11 413 newdef BcHadronicVectorCurrent:Decay_Constant 11 0.457 newdef BcHadronicVectorCurrent:ID 12 423 newdef BcHadronicVectorCurrent:Decay_Constant 12 0.457 newdef BcHadronicVectorCurrent:ID 13 433 newdef BcHadronicVectorCurrent:Decay_Constant 13 0.55 newdef BcHadronicVectorCurrent:ID 14 443 newdef BcHadronicVectorCurrent:Decay_Constant 14 1.256 newdef BcHadronicVectorCurrent:ID 15 100443 newdef BcHadronicVectorCurrent:Decay_Constant 15 1.08 newdef BcHadronicVectorCurrent:ID 16 10433 newdef BcHadronicVectorCurrent:Decay_Constant 16 0.397 newdef BcHadronicVectorCurrent:Quark 0 2 newdef BcHadronicVectorCurrent:AntiQuark 0 -1 newdef BcHadronicVectorCurrent:Quark 1 1 newdef BcHadronicVectorCurrent:AntiQuark 1 -1 newdef BcHadronicVectorCurrent:Quark 2 2 newdef BcHadronicVectorCurrent:AntiQuark 2 -2 newdef BcHadronicVectorCurrent:Quark 3 1 newdef BcHadronicVectorCurrent:AntiQuark 3 -1 newdef BcHadronicVectorCurrent:Quark 4 2 newdef BcHadronicVectorCurrent:AntiQuark 4 -2 newdef BcHadronicVectorCurrent:Quark 5 3 newdef BcHadronicVectorCurrent:AntiQuark 5 -3 newdef BcHadronicVectorCurrent:Quark 6 1 newdef BcHadronicVectorCurrent:AntiQuark 6 -3 newdef BcHadronicVectorCurrent:Quark 7 2 newdef BcHadronicVectorCurrent:AntiQuark 7 -3 newdef BcHadronicVectorCurrent:Quark 8 2 newdef BcHadronicVectorCurrent:AntiQuark 8 -1 newdef BcHadronicVectorCurrent:Quark 9 1 newdef BcHadronicVectorCurrent:AntiQuark 9 -1 newdef BcHadronicVectorCurrent:Quark 10 2 newdef BcHadronicVectorCurrent:AntiQuark 10 -2 newdef BcHadronicVectorCurrent:Quark 11 4 newdef BcHadronicVectorCurrent:AntiQuark 11 -1 newdef BcHadronicVectorCurrent:Quark 12 4 newdef BcHadronicVectorCurrent:AntiQuark 12 -2 newdef BcHadronicVectorCurrent:Quark 13 4 newdef BcHadronicVectorCurrent:AntiQuark 13 -3 newdef BcHadronicVectorCurrent:Quark 14 4 newdef BcHadronicVectorCurrent:AntiQuark 14 -4 newdef BcHadronicVectorCurrent:Quark 15 4 newdef BcHadronicVectorCurrent:AntiQuark 15 -4 newdef BcHadronicVectorCurrent:Quark 16 4 newdef BcHadronicVectorCurrent:AntiQuark 16 -3 insert BcHadronic:Currents 1 BcHadronicVectorCurrent create Herwig::KiselevBcFormFactor BcHadronicFormFactor newdef BcHadronicFormFactor:Fplus 0 1.3 newdef BcHadronicFormFactor:Fminus 0 -5.8 newdef BcHadronicFormFactor:FV 0 0 newdef BcHadronicFormFactor:F0A 0 0 newdef BcHadronicFormFactor:FplusA 0 0 newdef BcHadronicFormFactor:FminusA 0 0 newdef BcHadronicFormFactor:MpoleFplus 0 1.8 newdef BcHadronicFormFactor:MpoleFminus 0 1.8 newdef BcHadronicFormFactor:MpoleFV 0 0 newdef BcHadronicFormFactor:MpoleF0A 0 0 newdef BcHadronicFormFactor:MpoleFplusA 0 0 newdef BcHadronicFormFactor:MpoleFminusA 0 0 newdef BcHadronicFormFactor:Fplus 1 0 newdef BcHadronicFormFactor:Fminus 1 0 newdef BcHadronicFormFactor:FV 1 1.1 newdef BcHadronicFormFactor:F0A 1 8.1 newdef BcHadronicFormFactor:FplusA 1 0.2 newdef BcHadronicFormFactor:FminusA 1 1.8 newdef BcHadronicFormFactor:MpoleFplus 1 0 newdef BcHadronicFormFactor:MpoleFminus 1 0 newdef BcHadronicFormFactor:MpoleFV 1 1.8 newdef BcHadronicFormFactor:MpoleF0A 1 1.8 newdef BcHadronicFormFactor:MpoleFplusA 1 1.8 newdef BcHadronicFormFactor:MpoleFminusA 1 1.8 newdef BcHadronicFormFactor:Fplus 2 1.27 newdef BcHadronicFormFactor:Fminus 2 -7.3 newdef BcHadronicFormFactor:FV 2 0 newdef BcHadronicFormFactor:F0A 2 0 newdef BcHadronicFormFactor:FplusA 2 0 newdef BcHadronicFormFactor:FminusA 2 0 newdef BcHadronicFormFactor:MpoleFplus 2 1.7 newdef BcHadronicFormFactor:MpoleFminus 2 1.7 newdef BcHadronicFormFactor:MpoleFV 2 0 newdef BcHadronicFormFactor:MpoleF0A 2 0 newdef BcHadronicFormFactor:MpoleFplusA 2 0 newdef BcHadronicFormFactor:MpoleFminusA 2 0 newdef BcHadronicFormFactor:Fplus 3 1.27 newdef BcHadronicFormFactor:Fminus 3 -7.3 newdef BcHadronicFormFactor:FV 3 0 newdef BcHadronicFormFactor:F0A 3 0 newdef BcHadronicFormFactor:FplusA 3 0 newdef BcHadronicFormFactor:FminusA 3 0 newdef BcHadronicFormFactor:MpoleFplus 3 1.7 newdef BcHadronicFormFactor:MpoleFminus 3 1.7 newdef BcHadronicFormFactor:MpoleFV 3 0 newdef BcHadronicFormFactor:MpoleF0A 3 0 newdef BcHadronicFormFactor:MpoleFplusA 3 0 newdef BcHadronicFormFactor:MpoleFminusA 3 0 newdef BcHadronicFormFactor:Fplus 4 0 newdef BcHadronicFormFactor:Fminus 4 0 newdef BcHadronicFormFactor:FV 4 1.35 newdef BcHadronicFormFactor:F0A 4 9.8 newdef BcHadronicFormFactor:FplusA 4 0.35 newdef BcHadronicFormFactor:FminusA 4 2.5 newdef BcHadronicFormFactor:MpoleFplus 4 0 newdef BcHadronicFormFactor:MpoleFminus 4 0 newdef BcHadronicFormFactor:MpoleFV 4 2.2 newdef BcHadronicFormFactor:MpoleF0A 4 3.2 newdef BcHadronicFormFactor:MpoleFplusA 4 2.2 newdef BcHadronicFormFactor:MpoleFminusA 4 3.2 newdef BcHadronicFormFactor:Fplus 5 0 newdef BcHadronicFormFactor:Fminus 5 0 newdef BcHadronicFormFactor:FV 5 1.35 newdef BcHadronicFormFactor:F0A 5 9.8 newdef BcHadronicFormFactor:FplusA 5 0.35 newdef BcHadronicFormFactor:FminusA 5 2.5 newdef BcHadronicFormFactor:MpoleFplus 5 0 newdef BcHadronicFormFactor:MpoleFminus 5 0 newdef BcHadronicFormFactor:MpoleFV 5 2.2 newdef BcHadronicFormFactor:MpoleF0A 5 3.2 newdef BcHadronicFormFactor:MpoleFplusA 5 2.2 newdef BcHadronicFormFactor:MpoleFminusA 5 3.2 newdef BcHadronicFormFactor:Fplus 6 0.32 newdef BcHadronicFormFactor:Fminus 6 -0.34 newdef BcHadronicFormFactor:FV 6 0 newdef BcHadronicFormFactor:F0A 6 0 newdef BcHadronicFormFactor:FplusA 6 0 newdef BcHadronicFormFactor:FminusA 6 0 newdef BcHadronicFormFactor:MpoleFplus 6 5 newdef BcHadronicFormFactor:MpoleFminus 6 5 newdef BcHadronicFormFactor:MpoleFV 6 0 newdef BcHadronicFormFactor:MpoleF0A 6 0 newdef BcHadronicFormFactor:MpoleFplusA 6 0 newdef BcHadronicFormFactor:MpoleFminusA 6 0 newdef BcHadronicFormFactor:Fplus 7 0.32 newdef BcHadronicFormFactor:Fminus 7 -0.34 newdef BcHadronicFormFactor:FV 7 0 newdef BcHadronicFormFactor:F0A 7 0 newdef BcHadronicFormFactor:FplusA 7 0 newdef BcHadronicFormFactor:FminusA 7 0 newdef BcHadronicFormFactor:MpoleFplus 7 5 newdef BcHadronicFormFactor:MpoleFminus 7 5 newdef BcHadronicFormFactor:MpoleFV 7 0 newdef BcHadronicFormFactor:MpoleF0A 7 0 newdef BcHadronicFormFactor:MpoleFplusA 7 0 newdef BcHadronicFormFactor:MpoleFminusA 7 0 newdef BcHadronicFormFactor:Fplus 8 0 newdef BcHadronicFormFactor:Fminus 8 0 newdef BcHadronicFormFactor:FV 8 0.2 newdef BcHadronicFormFactor:F0A 8 3.6 newdef BcHadronicFormFactor:FplusA 8 -0.062 newdef BcHadronicFormFactor:FminusA 8 0.1 newdef BcHadronicFormFactor:MpoleFplus 8 0 newdef BcHadronicFormFactor:MpoleFminus 8 0 newdef BcHadronicFormFactor:MpoleFV 8 6.2 newdef BcHadronicFormFactor:MpoleF0A 8 -1 newdef BcHadronicFormFactor:MpoleFplusA 8 6.2 newdef BcHadronicFormFactor:MpoleFminusA 8 6.2 newdef BcHadronicFormFactor:Fplus 9 0 newdef BcHadronicFormFactor:Fminus 9 0 newdef BcHadronicFormFactor:FV 9 0.2 newdef BcHadronicFormFactor:F0A 9 3.6 newdef BcHadronicFormFactor:FplusA 9 -0.062 newdef BcHadronicFormFactor:FminusA 9 0.1 newdef BcHadronicFormFactor:MpoleFplus 9 0 newdef BcHadronicFormFactor:MpoleFminus 9 0 newdef BcHadronicFormFactor:MpoleFV 9 6.2 newdef BcHadronicFormFactor:MpoleF0A 9 -1 newdef BcHadronicFormFactor:MpoleFplusA 9 6.2 newdef BcHadronicFormFactor:MpoleFminusA 9 6.2 newdef BcHadronicFormFactor:Fplus 10 0.45 newdef BcHadronicFormFactor:Fminus 10 -0.43 newdef BcHadronicFormFactor:FV 10 0 newdef BcHadronicFormFactor:F0A 10 0 newdef BcHadronicFormFactor:FplusA 10 0 newdef BcHadronicFormFactor:FminusA 10 0 newdef BcHadronicFormFactor:MpoleFplus 10 5 newdef BcHadronicFormFactor:MpoleFminus 10 5 newdef BcHadronicFormFactor:MpoleFV 10 0 newdef BcHadronicFormFactor:MpoleF0A 10 0 newdef BcHadronicFormFactor:MpoleFplusA 10 0 newdef BcHadronicFormFactor:MpoleFminusA 10 0 newdef BcHadronicFormFactor:Fplus 11 0 newdef BcHadronicFormFactor:Fminus 11 0 newdef BcHadronicFormFactor:FV 11 0.24 newdef BcHadronicFormFactor:F0A 11 4.7 newdef BcHadronicFormFactor:FplusA 11 -0.077 newdef BcHadronicFormFactor:FminusA 11 0.13 newdef BcHadronicFormFactor:MpoleFplus 11 0 newdef BcHadronicFormFactor:MpoleFminus 11 0 newdef BcHadronicFormFactor:MpoleFV 11 6.2 newdef BcHadronicFormFactor:MpoleF0A 11 -1 newdef BcHadronicFormFactor:MpoleFplusA 11 6.2 newdef BcHadronicFormFactor:MpoleFminusA 11 6.2 newdef BcHadronicFormFactor:Fplus 12 0.66 newdef BcHadronicFormFactor:Fminus 12 -0.36 newdef BcHadronicFormFactor:FV 12 0 newdef BcHadronicFormFactor:F0A 12 0 newdef BcHadronicFormFactor:FplusA 12 0 newdef BcHadronicFormFactor:FminusA 12 0 newdef BcHadronicFormFactor:MpoleFplus 12 4.5 newdef BcHadronicFormFactor:MpoleFminus 12 4.5 newdef BcHadronicFormFactor:MpoleFV 12 0 newdef BcHadronicFormFactor:MpoleF0A 12 0 newdef BcHadronicFormFactor:MpoleFplusA 12 0 newdef BcHadronicFormFactor:MpoleFminusA 12 0 newdef BcHadronicFormFactor:Fplus 13 0 newdef BcHadronicFormFactor:Fminus 13 0 newdef BcHadronicFormFactor:FV 13 0.11 newdef BcHadronicFormFactor:F0A 13 5.9 newdef BcHadronicFormFactor:FplusA 13 -0.074 newdef BcHadronicFormFactor:FminusA 13 0.12 newdef BcHadronicFormFactor:MpoleFplus 13 0 newdef BcHadronicFormFactor:MpoleFminus 13 0 newdef BcHadronicFormFactor:MpoleFV 13 5.5 newdef BcHadronicFormFactor:MpoleF0A 13 5.5 newdef BcHadronicFormFactor:MpoleFplusA 13 5.5 newdef BcHadronicFormFactor:MpoleFminusA 13 5.5 newdef BcHadronicFormFactor:Fplus 14 0.17 newdef BcHadronicFormFactor:Fminus 14 -0.16 newdef BcHadronicFormFactor:FV 14 0 newdef BcHadronicFormFactor:F0A 14 0 newdef BcHadronicFormFactor:FplusA 14 0 newdef BcHadronicFormFactor:FminusA 14 0 newdef BcHadronicFormFactor:MpoleFplus 14 4.5 newdef BcHadronicFormFactor:MpoleFminus 14 4.5 newdef BcHadronicFormFactor:MpoleFV 14 0 newdef BcHadronicFormFactor:MpoleF0A 14 0 newdef BcHadronicFormFactor:MpoleFplusA 14 0 newdef BcHadronicFormFactor:MpoleFminusA 14 0 newdef BcHadronicFormFactor:Fplus 15 0 newdef BcHadronicFormFactor:Fminus 15 0 newdef BcHadronicFormFactor:FV 15 0.035 newdef BcHadronicFormFactor:F0A 15 1.686 newdef BcHadronicFormFactor:FplusA 15 -0.015 newdef BcHadronicFormFactor:FminusA 15 0.052 newdef BcHadronicFormFactor:MpoleFplus 15 0 newdef BcHadronicFormFactor:MpoleFminus 15 0 newdef BcHadronicFormFactor:MpoleFV 15 4.2 newdef BcHadronicFormFactor:MpoleF0A 15 4.2 newdef BcHadronicFormFactor:MpoleFplusA 15 4.2 newdef BcHadronicFormFactor:MpoleFminusA 15 4.2 newdef BcHadronicFormFactor:Incoming 0 541 newdef BcHadronicFormFactor:Outgoing 0 531 newdef BcHadronicFormFactor:Spin 0 0 newdef BcHadronicFormFactor:Spectator 0 -5 newdef BcHadronicFormFactor:InQuark 0 4 newdef BcHadronicFormFactor:OutQuark 0 3 newdef BcHadronicFormFactor:Incoming 1 541 newdef BcHadronicFormFactor:Outgoing 1 533 newdef BcHadronicFormFactor:Spin 1 1 newdef BcHadronicFormFactor:Spectator 1 -5 newdef BcHadronicFormFactor:InQuark 1 4 newdef BcHadronicFormFactor:OutQuark 1 3 newdef BcHadronicFormFactor:Incoming 2 541 newdef BcHadronicFormFactor:Outgoing 2 511 newdef BcHadronicFormFactor:Spin 2 0 newdef BcHadronicFormFactor:Spectator 2 -5 newdef BcHadronicFormFactor:InQuark 2 4 newdef BcHadronicFormFactor:OutQuark 2 1 newdef BcHadronicFormFactor:Incoming 3 541 newdef BcHadronicFormFactor:Outgoing 3 521 newdef BcHadronicFormFactor:Spin 3 0 newdef BcHadronicFormFactor:Spectator 3 -5 newdef BcHadronicFormFactor:InQuark 3 4 newdef BcHadronicFormFactor:OutQuark 3 2 newdef BcHadronicFormFactor:Incoming 4 541 newdef BcHadronicFormFactor:Outgoing 4 513 newdef BcHadronicFormFactor:Spin 4 1 newdef BcHadronicFormFactor:Spectator 4 -5 newdef BcHadronicFormFactor:InQuark 4 4 newdef BcHadronicFormFactor:OutQuark 4 1 newdef BcHadronicFormFactor:Incoming 5 541 newdef BcHadronicFormFactor:Outgoing 5 523 newdef BcHadronicFormFactor:Spin 5 1 newdef BcHadronicFormFactor:Spectator 5 -5 newdef BcHadronicFormFactor:InQuark 5 4 newdef BcHadronicFormFactor:OutQuark 5 2 newdef BcHadronicFormFactor:Incoming 6 -541 newdef BcHadronicFormFactor:Outgoing 6 -411 newdef BcHadronicFormFactor:Spin 6 0 newdef BcHadronicFormFactor:Spectator 6 -4 newdef BcHadronicFormFactor:InQuark 6 5 newdef BcHadronicFormFactor:OutQuark 6 1 newdef BcHadronicFormFactor:Incoming 7 -541 newdef BcHadronicFormFactor:Outgoing 7 -421 newdef BcHadronicFormFactor:Spin 7 0 newdef BcHadronicFormFactor:Spectator 7 -4 newdef BcHadronicFormFactor:InQuark 7 5 newdef BcHadronicFormFactor:OutQuark 7 2 newdef BcHadronicFormFactor:Incoming 8 -541 newdef BcHadronicFormFactor:Outgoing 8 -413 newdef BcHadronicFormFactor:Spin 8 1 newdef BcHadronicFormFactor:Spectator 8 -4 newdef BcHadronicFormFactor:InQuark 8 5 newdef BcHadronicFormFactor:OutQuark 8 1 newdef BcHadronicFormFactor:Incoming 9 -541 newdef BcHadronicFormFactor:Outgoing 9 -423 newdef BcHadronicFormFactor:Spin 9 1 newdef BcHadronicFormFactor:Spectator 9 -4 newdef BcHadronicFormFactor:InQuark 9 5 newdef BcHadronicFormFactor:OutQuark 9 2 newdef BcHadronicFormFactor:Incoming 10 -541 newdef BcHadronicFormFactor:Outgoing 10 -431 newdef BcHadronicFormFactor:Spin 10 0 newdef BcHadronicFormFactor:Spectator 10 -4 newdef BcHadronicFormFactor:InQuark 10 5 newdef BcHadronicFormFactor:OutQuark 10 3 newdef BcHadronicFormFactor:Incoming 11 -541 newdef BcHadronicFormFactor:Outgoing 11 -433 newdef BcHadronicFormFactor:Spin 11 1 newdef BcHadronicFormFactor:Spectator 11 -4 newdef BcHadronicFormFactor:InQuark 11 5 newdef BcHadronicFormFactor:OutQuark 11 3 newdef BcHadronicFormFactor:Incoming 12 -541 newdef BcHadronicFormFactor:Outgoing 12 441 newdef BcHadronicFormFactor:Spin 12 0 newdef BcHadronicFormFactor:Spectator 12 -4 newdef BcHadronicFormFactor:InQuark 12 5 newdef BcHadronicFormFactor:OutQuark 12 4 newdef BcHadronicFormFactor:Incoming 13 -541 newdef BcHadronicFormFactor:Outgoing 13 443 newdef BcHadronicFormFactor:Spin 13 1 newdef BcHadronicFormFactor:Spectator 13 -4 newdef BcHadronicFormFactor:InQuark 13 5 newdef BcHadronicFormFactor:OutQuark 13 4 newdef BcHadronicFormFactor:Incoming 14 -541 newdef BcHadronicFormFactor:Outgoing 14 100441 newdef BcHadronicFormFactor:Spin 14 0 newdef BcHadronicFormFactor:Spectator 14 -4 newdef BcHadronicFormFactor:InQuark 14 5 newdef BcHadronicFormFactor:OutQuark 14 4 newdef BcHadronicFormFactor:Incoming 15 -541 newdef BcHadronicFormFactor:Outgoing 15 100443 newdef BcHadronicFormFactor:Spin 15 1 newdef BcHadronicFormFactor:Spectator 15 -4 newdef BcHadronicFormFactor:InQuark 15 5 newdef BcHadronicFormFactor:OutQuark 15 4 insert BcHadronic:FormFactors 0 BcHadronicFormFactor insert BcHadronic:WeightLocation 0 0 insert BcHadronic:WeightLocation 1 0 insert BcHadronic:WeightLocation 2 0 insert BcHadronic:WeightLocation 3 0 insert BcHadronic:WeightLocation 4 0 insert BcHadronic:WeightLocation 5 0 insert BcHadronic:WeightLocation 6 0 insert BcHadronic:WeightLocation 7 0 insert BcHadronic:WeightLocation 8 0 insert BcHadronic:WeightLocation 9 0 insert BcHadronic:WeightLocation 10 0 insert BcHadronic:WeightLocation 11 0 insert BcHadronic:WeightLocation 12 0 insert BcHadronic:WeightLocation 13 0 insert BcHadronic:WeightLocation 14 0 insert BcHadronic:WeightLocation 15 0 insert BcHadronic:WeightLocation 16 0 insert BcHadronic:WeightLocation 17 0 insert BcHadronic:WeightLocation 18 0 insert BcHadronic:WeightLocation 19 0 insert BcHadronic:WeightLocation 20 0 insert BcHadronic:WeightLocation 21 0 insert BcHadronic:WeightLocation 22 0 insert BcHadronic:WeightLocation 23 0 insert BcHadronic:WeightLocation 24 0 insert BcHadronic:WeightLocation 25 0 insert BcHadronic:WeightLocation 26 0 insert BcHadronic:WeightLocation 27 0 insert BcHadronic:WeightLocation 28 0 insert BcHadronic:WeightLocation 29 0 insert BcHadronic:WeightLocation 30 0 insert BcHadronic:WeightLocation 31 0 insert BcHadronic:WeightLocation 32 0 insert BcHadronic:WeightLocation 33 0 insert BcHadronic:WeightLocation 34 0 insert BcHadronic:WeightLocation 35 0 insert BcHadronic:WeightLocation 36 0 insert BcHadronic:WeightLocation 37 0 insert BcHadronic:WeightLocation 38 0 insert BcHadronic:WeightLocation 39 0 insert BcHadronic:WeightLocation 40 0 insert BcHadronic:WeightLocation 41 0 insert BcHadronic:WeightLocation 42 0 insert BcHadronic:WeightLocation 43 0 insert BcHadronic:WeightLocation 44 0 insert BcHadronic:WeightLocation 45 0 insert BcHadronic:WeightLocation 46 0 insert BcHadronic:WeightLocation 47 0 insert BcHadronic:WeightLocation 48 0 insert BcHadronic:WeightLocation 49 0 insert BcHadronic:WeightLocation 50 0 insert BcHadronic:WeightLocation 51 0 insert BcHadronic:WeightLocation 52 0 insert BcHadronic:WeightLocation 53 0 insert BcHadronic:WeightLocation 54 0 insert BcHadronic:WeightLocation 55 0 insert BcHadronic:WeightLocation 56 0 insert BcHadronic:WeightLocation 57 0 insert BcHadronic:WeightLocation 58 0 insert BcHadronic:WeightLocation 59 0 insert BcHadronic:WeightLocation 60 0 insert BcHadronic:WeightLocation 61 0 insert BcHadronic:WeightLocation 62 0 insert BcHadronic:WeightLocation 63 0 insert BcHadronic:WeightLocation 64 0 insert BcHadronic:WeightLocation 65 0 insert BcHadronic:WeightLocation 66 0 insert BcHadronic:WeightLocation 67 0 insert BcHadronic:WeightLocation 68 0 insert BcHadronic:WeightLocation 69 0 insert BcHadronic:WeightLocation 70 0 insert BcHadronic:WeightLocation 71 0 insert BcHadronic:WeightLocation 72 0 insert BcHadronic:WeightLocation 73 0 insert BcHadronic:WeightLocation 74 0 insert BcHadronic:WeightLocation 75 0 insert BcHadronic:WeightLocation 76 0 insert BcHadronic:WeightLocation 77 0 insert BcHadronic:WeightLocation 78 0 insert BcHadronic:WeightLocation 79 0 insert BcHadronic:WeightLocation 80 0 insert BcHadronic:WeightLocation 81 0 insert BcHadronic:WeightLocation 82 0 insert BcHadronic:WeightLocation 83 0 insert BcHadronic:WeightLocation 84 0 insert BcHadronic:WeightLocation 85 0 insert BcHadronic:WeightLocation 86 0 insert BcHadronic:WeightLocation 87 0 insert BcHadronic:WeightLocation 88 0 insert BcHadronic:WeightLocation 89 0 insert BcHadronic:WeightLocation 90 0 insert BcHadronic:WeightLocation 91 0 insert BcHadronic:WeightLocation 92 0 insert BcHadronic:WeightLocation 93 0 insert BcHadronic:WeightLocation 94 0 insert BcHadronic:WeightLocation 95 0 insert BcHadronic:WeightLocation 96 0 insert BcHadronic:WeightLocation 97 0 insert BcHadronic:WeightLocation 98 0 insert BcHadronic:WeightLocation 99 0 insert BcHadronic:WeightLocation 100 0 insert BcHadronic:WeightLocation 101 0 insert BcHadronic:WeightLocation 102 0 insert BcHadronic:WeightLocation 103 0 insert BcHadronic:WeightLocation 104 0 insert BcHadronic:WeightLocation 105 0 insert BcHadronic:WeightLocation 106 0 insert BcHadronic:WeightLocation 107 0 insert BcHadronic:WeightLocation 108 0 insert BcHadronic:WeightLocation 109 0 insert BcHadronic:WeightLocation 110 0 insert BcHadronic:WeightLocation 111 0 insert BcHadronic:WeightLocation 112 0 insert BcHadronic:WeightLocation 113 0 insert BcHadronic:WeightLocation 114 0 insert BcHadronic:WeightLocation 115 0 insert BcHadronic:WeightLocation 116 0 insert BcHadronic:WeightLocation 117 0 insert BcHadronic:WeightLocation 118 0 insert BcHadronic:WeightLocation 119 0 insert BcHadronic:WeightLocation 120 0 insert BcHadronic:WeightLocation 121 0 insert BcHadronic:WeightLocation 122 0 insert BcHadronic:WeightLocation 123 0 insert BcHadronic:WeightLocation 124 0 insert BcHadronic:WeightLocation 125 0 insert BcHadronic:WeightLocation 126 0 insert BcHadronic:WeightLocation 127 0 insert BcHadronic:WeightLocation 128 0 insert BcHadronic:WeightLocation 129 0 insert BcHadronic:WeightLocation 130 0 insert BcHadronic:WeightLocation 131 0 insert BcHadronic:WeightLocation 132 0 insert BcHadronic:WeightLocation 133 0 insert BcHadronic:WeightLocation 134 0 insert BcHadronic:WeightLocation 135 0 insert BcHadronic:WeightLocation 136 0 insert BcHadronic:WeightLocation 137 0 insert BcHadronic:WeightLocation 138 0 insert BcHadronic:MaximumWeight 0 0.193116 insert BcHadronic:MaximumWeight 1 0.0124475 insert BcHadronic:MaximumWeight 2 0.20794 insert BcHadronic:MaximumWeight 3 0.0025397 insert BcHadronic:MaximumWeight 4 0.00122669 insert BcHadronic:MaximumWeight 5 0.084093 insert BcHadronic:MaximumWeight 6 0.00487514 insert BcHadronic:MaximumWeight 7 0.282946 insert BcHadronic:MaximumWeight 8 0.00246642 insert BcHadronic:MaximumWeight 9 0.00277351 insert BcHadronic:MaximumWeight 10 0.0125732 insert BcHadronic:MaximumWeight 11 0.000818638 insert BcHadronic:MaximumWeight 12 0.0175067 insert BcHadronic:MaximumWeight 13 0.000433506 insert BcHadronic:MaximumWeight 14 0.000472281 insert BcHadronic:MaximumWeight 15 0.000439635 insert BcHadronic:MaximumWeight 16 0.000944917 insert BcHadronic:MaximumWeight 17 9.54905e-06 insert BcHadronic:MaximumWeight 18 5.69733e-05 insert BcHadronic:MaximumWeight 19 0.020296 insert BcHadronic:MaximumWeight 20 0.000609773 insert BcHadronic:MaximumWeight 21 0.000755185 insert BcHadronic:MaximumWeight 22 1.69391e-07 insert BcHadronic:MaximumWeight 23 2.91996e-05 insert BcHadronic:MaximumWeight 24 0.010402 insert BcHadronic:MaximumWeight 25 1.69718e-05 insert BcHadronic:MaximumWeight 26 0.0109577 insert BcHadronic:MaximumWeight 27 0.00065288 insert BcHadronic:MaximumWeight 28 0.0341826 insert BcHadronic:MaximumWeight 29 0.00119113 insert BcHadronic:MaximumWeight 30 0.00118643 insert BcHadronic:MaximumWeight 31 0.000382964 insert BcHadronic:MaximumWeight 32 0.000725851 insert BcHadronic:MaximumWeight 33 7.9988e-08 insert BcHadronic:MaximumWeight 34 4.52867e-05 insert BcHadronic:MaximumWeight 35 0.0161328 insert BcHadronic:MaximumWeight 36 0.00119259 insert BcHadronic:MaximumWeight 37 0.00221337 insert BcHadronic:MaximumWeight 38 7.96752e-05 insert BcHadronic:MaximumWeight 39 0.0283814 insert BcHadronic:MaximumWeight 40 4.22191e-05 insert BcHadronic:MaximumWeight 41 9.08505e-08 insert BcHadronic:MaximumWeight 42 4.59476e-08 insert BcHadronic:MaximumWeight 43 4.25866e-08 insert BcHadronic:MaximumWeight 44 5.70395e-05 insert BcHadronic:MaximumWeight 45 5.36411e-07 insert BcHadronic:MaximumWeight 46 0.000198872 insert BcHadronic:MaximumWeight 47 2.3597e-07 insert BcHadronic:MaximumWeight 48 6.31403e-07 insert BcHadronic:MaximumWeight 49 2.76313e-07 insert BcHadronic:MaximumWeight 50 6.53392e-05 insert BcHadronic:MaximumWeight 51 1.16228e-06 insert BcHadronic:MaximumWeight 52 0.000235939 insert BcHadronic:MaximumWeight 53 2.05836e-05 insert BcHadronic:MaximumWeight 54 5.9122e-06 insert BcHadronic:MaximumWeight 55 4.70365e-07 insert BcHadronic:MaximumWeight 56 1.10156e-05 insert BcHadronic:MaximumWeight 57 1.67266e-06 insert BcHadronic:MaximumWeight 58 1.53556e-05 insert BcHadronic:MaximumWeight 59 1.82907e-06 insert BcHadronic:MaximumWeight 60 1.79884e-05 insert BcHadronic:MaximumWeight 61 1.40662e-06 insert BcHadronic:MaximumWeight 62 2.91319e-05 insert BcHadronic:MaximumWeight 63 7.40867e-06 insert BcHadronic:MaximumWeight 64 1.24654e-07 insert BcHadronic:MaximumWeight 65 6.23803e-08 insert BcHadronic:MaximumWeight 66 5.52852e-08 insert BcHadronic:MaximumWeight 67 6.86018e-05 insert BcHadronic:MaximumWeight 68 0.000379401 insert BcHadronic:MaximumWeight 69 5.19375e-07 insert BcHadronic:MaximumWeight 70 1.2337e-06 insert BcHadronic:MaximumWeight 71 7.15604e-07 insert BcHadronic:MaximumWeight 72 0.000326321 insert BcHadronic:MaximumWeight 73 3.0374e-06 insert BcHadronic:MaximumWeight 74 0.00032888 insert BcHadronic:MaximumWeight 75 1.19174e-05 insert BcHadronic:MaximumWeight 76 7.10892e-06 insert BcHadronic:MaximumWeight 77 5.61702e-07 insert BcHadronic:MaximumWeight 78 2.84121e-05 insert BcHadronic:MaximumWeight 79 1.59808e-06 insert BcHadronic:MaximumWeight 80 3.1846e-05 insert BcHadronic:MaximumWeight 81 4.98412e-06 insert BcHadronic:MaximumWeight 82 4.0687e-05 insert BcHadronic:MaximumWeight 83 6.63582e-05 insert BcHadronic:MaximumWeight 84 4.36959e-05 insert BcHadronic:MaximumWeight 85 9.2186e-09 insert BcHadronic:MaximumWeight 86 4.66808e-09 insert BcHadronic:MaximumWeight 87 4.33871e-09 insert BcHadronic:MaximumWeight 88 5.88252e-06 insert BcHadronic:MaximumWeight 89 0.00413246 insert BcHadronic:MaximumWeight 90 2.39036e-08 insert BcHadronic:MaximumWeight 91 6.43915e-08 insert BcHadronic:MaximumWeight 92 2.79334e-08 insert BcHadronic:MaximumWeight 93 6.52122e-06 insert BcHadronic:MaximumWeight 94 0.00570196 insert BcHadronic:MaximumWeight 95 0.000504975 insert BcHadronic:MaximumWeight 96 9.5212e-09 insert BcHadronic:MaximumWeight 97 4.76489e-09 insert BcHadronic:MaximumWeight 98 4.31181e-09 insert BcHadronic:MaximumWeight 99 5.13987e-06 insert BcHadronic:MaximumWeight 100 0.00820037 insert BcHadronic:MaximumWeight 101 4.05699e-08 insert BcHadronic:MaximumWeight 102 9.73322e-08 insert BcHadronic:MaximumWeight 103 4.94781e-08 insert BcHadronic:MaximumWeight 104 2.19891e-05 insert BcHadronic:MaximumWeight 105 0.00646066 insert BcHadronic:MaximumWeight 106 0.00019162 insert BcHadronic:MaximumWeight 107 0.00194861 insert BcHadronic:MaximumWeight 108 0.000156104 insert BcHadronic:MaximumWeight 109 0.000658833 insert BcHadronic:MaximumWeight 110 0.00495538 insert BcHadronic:MaximumWeight 111 0.000541734 insert BcHadronic:MaximumWeight 112 0.00568466 insert BcHadronic:MaximumWeight 113 0.00192927 insert BcHadronic:MaximumWeight 114 0.00141085 insert BcHadronic:MaximumWeight 115 0.000111666 insert BcHadronic:MaximumWeight 116 0.000256352 insert BcHadronic:MaximumWeight 117 0.00473289 insert BcHadronic:MaximumWeight 118 0.000725369 insert BcHadronic:MaximumWeight 119 0.00597086 insert BcHadronic:MaximumWeight 120 0.00507513 insert BcHadronic:MaximumWeight 121 8.38225e-05 insert BcHadronic:MaximumWeight 122 6.62744e-06 insert BcHadronic:MaximumWeight 123 9.59456e-06 insert BcHadronic:MaximumWeight 124 0.000214975 insert BcHadronic:MaximumWeight 125 1.67729e-05 insert BcHadronic:MaximumWeight 126 0.000202917 insert BcHadronic:MaximumWeight 127 2.00142e-05 insert BcHadronic:MaximumWeight 128 0.00022541 insert BcHadronic:MaximumWeight 129 7.04733e-06 insert BcHadronic:MaximumWeight 130 0.000134124 insert BcHadronic:MaximumWeight 131 2.3384e-05 insert BcHadronic:MaximumWeight 132 8.24132e-05 insert BcHadronic:MaximumWeight 133 6.50316e-06 insert BcHadronic:MaximumWeight 134 6.40716e-06 insert BcHadronic:MaximumWeight 135 0.000286851 insert BcHadronic:MaximumWeight 136 4.44615e-05 insert BcHadronic:MaximumWeight 137 0.000366705 insert BcHadronic:MaximumWeight 138 0.000226844 # create Herwig::SemiLeptonicBaryonDecayer ExcitedLambda newdef ExcitedLambda:Iteration 1 newdef ExcitedLambda:Ntry 500 newdef ExcitedLambda:Points 10000 insert ExcitedLambda:MaximumWeight 0 0.00284407 insert ExcitedLambda:MaximumWeight 1 0.00277839 insert ExcitedLambda:MaximumWeight 2 0.000412905 insert ExcitedLambda:MaximumWeight 3 0.00244756 insert ExcitedLambda:MaximumWeight 4 0.0024288 insert ExcitedLambda:MaximumWeight 5 0.000347225 create Herwig::LeptonNeutrinoCurrent ExcitedLambdaCurrent newdef ExcitedLambdaCurrent:Quark 0 11 newdef ExcitedLambdaCurrent:AntiQuark 0 -12 newdef ExcitedLambdaCurrent:Quark 1 13 newdef ExcitedLambdaCurrent:AntiQuark 1 -15 newdef ExcitedLambdaCurrent:Quark 2 15 newdef ExcitedLambdaCurrent:AntiQuark 2 -16 newdef ExcitedLambda:Current ExcitedLambdaCurrent create Herwig::LambdabExcitedLambdacSumRuleFormFactor ExcitedLambdaForm newdef ExcitedLambdaForm:Xi 0.29 newdef ExcitedLambdaForm:Rho2 2.01 newdef ExcitedLambdaForm:Incoming 0 5122 newdef ExcitedLambdaForm:Outgoing 0 14122 newdef ExcitedLambdaForm:InSpin 0 2 newdef ExcitedLambdaForm:OutSpin 0 2 newdef ExcitedLambdaForm:Spectator1 0 1 newdef ExcitedLambdaForm:Spectator2 0 2 newdef ExcitedLambdaForm:InQuark 0 5 newdef ExcitedLambdaForm:OutQuark 0 4 newdef ExcitedLambdaForm:Incoming 1 5122 newdef ExcitedLambdaForm:Outgoing 1 4124 newdef ExcitedLambdaForm:InSpin 1 2 newdef ExcitedLambdaForm:OutSpin 1 4 newdef ExcitedLambdaForm:Spectator1 1 1 newdef ExcitedLambdaForm:Spectator2 1 2 newdef ExcitedLambdaForm:InQuark 1 5 newdef ExcitedLambdaForm:OutQuark 1 4 newdef ExcitedLambda:FormFactor ExcitedLambdaForm # create Herwig::RadiativeHeavyBaryonDecayer HeavyGamma newdef HeavyGamma:Iteration 1 newdef HeavyGamma:Ntry 500 newdef HeavyGamma:Points 10000 newdef HeavyGamma:GenerateIntermediates 0 newdef HeavyGamma:M1Coupling 0 1.1004e-05 newdef HeavyGamma:E1Coupling 0 0 newdef HeavyGamma:Incoming 0 4312 newdef HeavyGamma:OutgoingB 0 4132 newdef HeavyGamma:ModeType 0 1 newdef HeavyGamma:MaxWeight 0 1.66921 newdef HeavyGamma:M1Coupling 1 9.4102e-05 newdef HeavyGamma:E1Coupling 1 0 newdef HeavyGamma:Incoming 1 4322 newdef HeavyGamma:OutgoingB 1 4232 newdef HeavyGamma:ModeType 1 1 newdef HeavyGamma:MaxWeight 1 1.67004 newdef HeavyGamma:M1Coupling 2 1.1004e-05 newdef HeavyGamma:E1Coupling 2 0 newdef HeavyGamma:Incoming 2 5312 newdef HeavyGamma:OutgoingB 2 5132 newdef HeavyGamma:ModeType 2 1 newdef HeavyGamma:MaxWeight 2 1.63358 newdef HeavyGamma:M1Coupling 3 9.4102e-05 newdef HeavyGamma:E1Coupling 3 0 newdef HeavyGamma:Incoming 3 5322 newdef HeavyGamma:OutgoingB 3 5232 newdef HeavyGamma:ModeType 3 1 newdef HeavyGamma:MaxWeight 3 1.60473 newdef HeavyGamma:M1Coupling 4 0.000376 newdef HeavyGamma:E1Coupling 4 0 newdef HeavyGamma:Incoming 4 4214 newdef HeavyGamma:OutgoingB 4 4122 newdef HeavyGamma:ModeType 4 1 newdef HeavyGamma:MaxWeight 4 0.035949 newdef HeavyGamma:M1Coupling 5 0.000376 newdef HeavyGamma:E1Coupling 5 0 newdef HeavyGamma:Incoming 5 5214 newdef HeavyGamma:OutgoingB 5 5122 newdef HeavyGamma:ModeType 5 1 newdef HeavyGamma:MaxWeight 5 0.03294 newdef HeavyGamma:M1Coupling 6 3.74e-05 newdef HeavyGamma:E1Coupling 6 0 newdef HeavyGamma:Incoming 6 4314 newdef HeavyGamma:OutgoingB 6 4132 newdef HeavyGamma:ModeType 6 1 newdef HeavyGamma:MaxWeight 6 0.000579519 newdef HeavyGamma:M1Coupling 7 0.00032486 newdef HeavyGamma:E1Coupling 7 0 newdef HeavyGamma:Incoming 7 4324 newdef HeavyGamma:OutgoingB 7 4232 newdef HeavyGamma:ModeType 7 1 newdef HeavyGamma:MaxWeight 7 0.0462769 newdef HeavyGamma:M1Coupling 8 0.00010132 newdef HeavyGamma:E1Coupling 8 0 newdef HeavyGamma:Incoming 8 5314 newdef HeavyGamma:OutgoingB 8 5132 newdef HeavyGamma:ModeType 8 1 newdef HeavyGamma:MaxWeight 8 0.00429418 newdef HeavyGamma:M1Coupling 9 0.00032486 newdef HeavyGamma:E1Coupling 9 0 newdef HeavyGamma:Incoming 9 5324 newdef HeavyGamma:OutgoingB 9 5232 newdef HeavyGamma:ModeType 9 1 newdef HeavyGamma:MaxWeight 9 0.0463449 newdef HeavyGamma:M1Coupling 10 0.0001088 newdef HeavyGamma:E1Coupling 10 0 newdef HeavyGamma:Incoming 10 4212 newdef HeavyGamma:OutgoingB 10 4122 newdef HeavyGamma:ModeType 10 1 newdef HeavyGamma:MaxWeight 10 0.064517 newdef HeavyGamma:M1Coupling 11 0.0001088 newdef HeavyGamma:E1Coupling 11 0 newdef HeavyGamma:Incoming 11 5212 newdef HeavyGamma:OutgoingB 11 5122 newdef HeavyGamma:ModeType 11 1 newdef HeavyGamma:MaxWeight 11 0.0325132 newdef HeavyGamma:M1Coupling 12 0.0003337 newdef HeavyGamma:E1Coupling 12 0 newdef HeavyGamma:Incoming 12 4224 newdef HeavyGamma:OutgoingB 12 4222 newdef HeavyGamma:ModeType 12 1 newdef HeavyGamma:MaxWeight 12 0.00297666 newdef HeavyGamma:M1Coupling 13 8.34e-05 newdef HeavyGamma:E1Coupling 13 0 newdef HeavyGamma:Incoming 13 4214 newdef HeavyGamma:OutgoingB 13 4212 newdef HeavyGamma:ModeType 13 1 newdef HeavyGamma:MaxWeight 13 0.000203503 newdef HeavyGamma:M1Coupling 14 -0.0001688 newdef HeavyGamma:E1Coupling 14 0 newdef HeavyGamma:Incoming 14 4114 newdef HeavyGamma:OutgoingB 14 4112 newdef HeavyGamma:ModeType 14 1 newdef HeavyGamma:MaxWeight 14 0.000903461 newdef HeavyGamma:M1Coupling 15 -0.000611 newdef HeavyGamma:E1Coupling 15 0 newdef HeavyGamma:Incoming 15 4314 newdef HeavyGamma:OutgoingB 15 4312 newdef HeavyGamma:ModeType 15 1 newdef HeavyGamma:MaxWeight 15 0.0178619 newdef HeavyGamma:M1Coupling 16 -0.0003607 newdef HeavyGamma:E1Coupling 16 0 newdef HeavyGamma:Incoming 16 4324 newdef HeavyGamma:OutgoingB 16 4322 newdef HeavyGamma:ModeType 16 1 newdef HeavyGamma:MaxWeight 16 0.00671238 newdef HeavyGamma:M1Coupling 17 0.001055 newdef HeavyGamma:E1Coupling 17 0 newdef HeavyGamma:Incoming 17 4334 newdef HeavyGamma:OutgoingB 17 4332 newdef HeavyGamma:ModeType 17 1 newdef HeavyGamma:MaxWeight 17 1.59261 newdef HeavyGamma:M1Coupling 18 0.0009945 newdef HeavyGamma:E1Coupling 18 0 newdef HeavyGamma:Incoming 18 5224 newdef HeavyGamma:OutgoingB 18 5222 newdef HeavyGamma:ModeType 18 1 newdef HeavyGamma:MaxWeight 18 0.00818774 newdef HeavyGamma:M1Coupling 19 0.0002486 newdef HeavyGamma:E1Coupling 19 0 newdef HeavyGamma:Incoming 19 5214 newdef HeavyGamma:OutgoingB 19 5212 newdef HeavyGamma:ModeType 19 1 newdef HeavyGamma:MaxWeight 19 0.000627892 newdef HeavyGamma:M1Coupling 20 -0.0004973 newdef HeavyGamma:E1Coupling 20 0 newdef HeavyGamma:Incoming 20 5114 newdef HeavyGamma:OutgoingB 20 5112 newdef HeavyGamma:ModeType 20 1 newdef HeavyGamma:MaxWeight 20 0.0025886 newdef HeavyGamma:M1Coupling 21 -0.0004371 newdef HeavyGamma:E1Coupling 21 0 newdef HeavyGamma:Incoming 21 5314 newdef HeavyGamma:OutgoingB 21 5312 newdef HeavyGamma:ModeType 21 1 newdef HeavyGamma:MaxWeight 21 0.00938573 newdef HeavyGamma:M1Coupling 22 0.0003088 newdef HeavyGamma:E1Coupling 22 0 newdef HeavyGamma:Incoming 22 5324 newdef HeavyGamma:OutgoingB 22 5322 newdef HeavyGamma:ModeType 22 1 newdef HeavyGamma:MaxWeight 22 0.00506067 newdef HeavyGamma:M1Coupling 23 -0.0003769 newdef HeavyGamma:E1Coupling 23 0 newdef HeavyGamma:Incoming 23 5334 newdef HeavyGamma:OutgoingB 23 5332 newdef HeavyGamma:ModeType 23 1 newdef HeavyGamma:MaxWeight 23 1.67242 # create Herwig::ScalarVectorVectorDecayer SVV newdef SVV:Iteration 1 newdef SVV:Ntry 2000 newdef SVV:Points 10000 newdef SVV:GenerateIntermediates 0 newdef SVV:Incoming 0 10221 newdef SVV:FirstOutgoing 0 113 newdef SVV:SecondOutgoing 0 113 newdef SVV:Coupling 0 11.26 newdef SVV:MaxWeight 0 17.5926 newdef SVV:Incoming 1 10221 newdef SVV:FirstOutgoing 1 213 newdef SVV:SecondOutgoing 1 -213 newdef SVV:Coupling 1 15.92 newdef SVV:MaxWeight 1 19.1659 newdef SVV:Incoming 2 9030221 newdef SVV:FirstOutgoing 2 113 newdef SVV:SecondOutgoing 2 113 newdef SVV:Coupling 2 1.691 newdef SVV:MaxWeight 2 16.8 newdef SVV:Incoming 3 9030221 newdef SVV:FirstOutgoing 3 213 newdef SVV:SecondOutgoing 3 -213 newdef SVV:Coupling 3 2.391 newdef SVV:MaxWeight 3 17. newdef SVV:Incoming 4 10441 newdef SVV:FirstOutgoing 4 443 newdef SVV:SecondOutgoing 4 22 newdef SVV:Coupling 4 0.251 newdef SVV:MaxWeight 4 1.1081 newdef SVV:Incoming 5 10441 newdef SVV:FirstOutgoing 5 323 newdef SVV:SecondOutgoing 5 -323 newdef SVV:Coupling 5 0.0088 newdef SVV:MaxWeight 5 12.5 newdef SVV:Incoming 6 10441 newdef SVV:FirstOutgoing 6 313 newdef SVV:SecondOutgoing 6 -313 newdef SVV:Coupling 6 0.0088 newdef SVV:MaxWeight 6 12.5 newdef SVV:Incoming 7 10441 newdef SVV:FirstOutgoing 7 333 newdef SVV:SecondOutgoing 7 333 newdef SVV:Coupling 7 0.0067 newdef SVV:MaxWeight 7 9.85019 newdef SVV:Incoming 8 10441 newdef SVV:FirstOutgoing 8 22 newdef SVV:SecondOutgoing 8 22 newdef SVV:Coupling 8 0.0027 newdef SVV:MaxWeight 8 1.10652 newdef SVV:Incoming 9 10111 newdef SVV:FirstOutgoing 9 113 newdef SVV:SecondOutgoing 9 223 newdef SVV:Coupling 9 27.09 newdef SVV:MaxWeight 9 8. newdef SVV:Incoming 10 10211 newdef SVV:FirstOutgoing 10 213 newdef SVV:SecondOutgoing 10 223 newdef SVV:Coupling 10 27.09 newdef SVV:MaxWeight 10 8. newdef SVV:Incoming 11 -10211 newdef SVV:FirstOutgoing 11 -213 newdef SVV:SecondOutgoing 11 223 newdef SVV:Coupling 11 27.09 newdef SVV:MaxWeight 11 8. newdef SVV:Incoming 12 10441 newdef SVV:FirstOutgoing 12 223 newdef SVV:SecondOutgoing 12 223 newdef SVV:Coupling 12 0.0093 newdef SVV:MaxWeight 12 11.5 # create Herwig::a1SimpleDecayer a1Simple newdef a1Simple:Iteration 5 newdef a1Simple:Ntry 500 newdef a1Simple:Points 10000 newdef a1Simple:GenerateIntermediates 1 newdef a1Simple:LocalParameters 1 newdef a1Simple:Coupling 47.95 newdef a1Simple:OneMax 12. newdef a1Simple:TwoMax 12. newdef a1Simple:ThreeMax 12. newdef a1Simple:RhoMasses 0 773 newdef a1Simple:RhoMasses 1 1370 newdef a1Simple:RhoMasses 2 1750 newdef a1Simple:RhoWidths 0 145 newdef a1Simple:RhoWidths 1 510 newdef a1Simple:RhoWidths 2 120 newdef a1Simple:RhoWeights 0 1 newdef a1Simple:RhoWeights 1 -0.145 newdef a1Simple:RhoWeights 2 0 newdef a1Simple:OneChargedWeights 0 0.224559 newdef a1Simple:OneChargedWeights 1 0.2198 newdef a1Simple:OneChargedWeights 2 0.137131 newdef a1Simple:OneChargedWeights 3 0.138579 newdef a1Simple:OneChargedWeights 4 0.138346 newdef a1Simple:OneChargedWeights 5 0.141585 newdef a1Simple:TwoChargedWeights 0 0.224847 newdef a1Simple:TwoChargedWeights 1 0.220554 newdef a1Simple:TwoChargedWeights 2 0.135879 newdef a1Simple:TwoChargedWeights 3 0.13917 newdef a1Simple:TwoChargedWeights 4 0.138596 newdef a1Simple:TwoChargedWeights 5 0.140955 newdef a1Simple:ThreeChargedWeights 0 0.223434 newdef a1Simple:ThreeChargedWeights 1 0.222521 newdef a1Simple:ThreeChargedWeights 2 0.141309 newdef a1Simple:ThreeChargedWeights 3 0.134317 newdef a1Simple:ThreeChargedWeights 4 0.139732 newdef a1Simple:ThreeChargedWeights 5 0.138687 # create Herwig::MamboDecayer Mambo # create Herwig::TauDecayer Tau5Pion newdef Tau5Pion:Iteration 10 newdef Tau5Pion:Ntry 4000 newdef Tau5Pion:Points 10000 newdef Tau5Pion:GenerateIntermediates 1 insert Tau5Pion:WeightLocation 0 0 insert Tau5Pion:WeightLocation 1 12 insert Tau5Pion:WeightLocation 2 30 insert Tau5Pion:MaximumWeight 0 0.12 insert Tau5Pion:MaximumWeight 1 1.10 insert Tau5Pion:MaximumWeight 2 0.19 insert Tau5Pion:Weights 0 0.0829231 insert Tau5Pion:Weights 1 0.0837284 insert Tau5Pion:Weights 2 0.0832389 insert Tau5Pion:Weights 3 0.0828526 insert Tau5Pion:Weights 4 0.0841606 insert Tau5Pion:Weights 5 0.0834426 insert Tau5Pion:Weights 6 0.0834811 insert Tau5Pion:Weights 7 0.0824631 insert Tau5Pion:Weights 8 0.0836733 insert Tau5Pion:Weights 9 0.0830621 insert Tau5Pion:Weights 10 0.0832661 insert Tau5Pion:Weights 11 0.083708 insert Tau5Pion:Weights 12 0.0655493 insert Tau5Pion:Weights 13 0.0669399 insert Tau5Pion:Weights 14 0.06701 insert Tau5Pion:Weights 15 0.065621 insert Tau5Pion:Weights 16 0.066326 insert Tau5Pion:Weights 17 0.069194 insert Tau5Pion:Weights 18 0.0643572 insert Tau5Pion:Weights 19 0.0671479 insert Tau5Pion:Weights 20 0.0680149 insert Tau5Pion:Weights 21 0.0660456 insert Tau5Pion:Weights 22 0.0667967 insert Tau5Pion:Weights 23 0.0674793 insert Tau5Pion:Weights 24 0.0355917 insert Tau5Pion:Weights 25 0.0340749 insert Tau5Pion:Weights 26 0.03507 insert Tau5Pion:Weights 27 0.0355398 insert Tau5Pion:Weights 28 0.0292482 insert Tau5Pion:Weights 29 0.0299938 insert Tau5Pion:Weights 30 0.0832497 insert Tau5Pion:Weights 31 0.083435 insert Tau5Pion:Weights 32 0.0839012 insert Tau5Pion:Weights 33 0.0831666 insert Tau5Pion:Weights 34 0.0820835 insert Tau5Pion:Weights 35 0.0843757 insert Tau5Pion:Weights 36 0.0825918 insert Tau5Pion:Weights 37 0.0838889 insert Tau5Pion:Weights 38 0.0838214 insert Tau5Pion:Weights 39 0.0830818 insert Tau5Pion:Weights 40 0.0826944 insert Tau5Pion:Weights 41 0.08371 create Herwig::FivePionCurrent Tau5PionCurrent HwWeakCurrents.so newdef Tau5PionCurrent:RhoMass 776 newdef Tau5PionCurrent:A1Mass 1260 newdef Tau5PionCurrent:SigmaMass 800 newdef Tau5PionCurrent:OmegaMass 782 newdef Tau5PionCurrent:RhoWidth 150 newdef Tau5PionCurrent:A1Width 400 newdef Tau5PionCurrent:SigmaWidth 600 newdef Tau5PionCurrent:OmegaWidth 8.5 newdef Tau5PionCurrent:LocalParameters 1 newdef Tau5PionCurrent:RhoOmega 0 newdef Tau5PionCurrent:C 4 newdef Tau5PionCurrent:C0 3 newdef Tau5PionCurrent:fomegarhopi 0.07 newdef Tau5PionCurrent:grhopipi 6 newdef Tau5PionCurrent:garhopi 6 newdef Tau5PionCurrent:faaf 4 newdef Tau5PionCurrent:ffpipi 5 newdef Tau5PionCurrent:Quark 0 2 newdef Tau5PionCurrent:AntiQuark 0 -1 newdef Tau5PionCurrent:Quark 1 2 newdef Tau5PionCurrent:AntiQuark 1 -1 newdef Tau5PionCurrent:Quark 2 2 newdef Tau5PionCurrent:AntiQuark 2 -1 newdef Tau5Pion:WeakCurrent Tau5PionCurrent # create Herwig::OniumToOniumPiPiDecayer OniumPiPi newdef OniumPiPi:Iteration 1 newdef OniumPiPi:Ntry 500 newdef OniumPiPi:Points 10000 newdef OniumPiPi:GenerateIntermediates 0 newdef OniumPiPi:Incoming 0 200553 newdef OniumPiPi:Outgoing 0 553 newdef OniumPiPi:Coupling 0 3.92e-06 newdef OniumPiPi:ReA 0 1 newdef OniumPiPi:ImA 0 0 newdef OniumPiPi:ReB 0 -2.523 newdef OniumPiPi:ImB 0 1.189 newdef OniumPiPi:ReC 0 0 newdef OniumPiPi:ImC 0 0 newdef OniumPiPi:Incoming 1 200553 newdef OniumPiPi:Outgoing 1 100553 newdef OniumPiPi:Coupling 1 0.000311 newdef OniumPiPi:ReA 1 1 newdef OniumPiPi:ImA 1 0 newdef OniumPiPi:ReB 1 -0.395 newdef OniumPiPi:ImB 1 0.001 newdef OniumPiPi:ReC 1 0 newdef OniumPiPi:ImC 1 0 newdef OniumPiPi:Incoming 2 100553 newdef OniumPiPi:Outgoing 2 553 newdef OniumPiPi:Coupling 2 6.14e-05 newdef OniumPiPi:ReA 2 1 newdef OniumPiPi:ImA 2 0 newdef OniumPiPi:ReB 2 -0.753 newdef OniumPiPi:ImB 2 0 newdef OniumPiPi:ReC 2 0 newdef OniumPiPi:ImC 2 0 newdef OniumPiPi:Incoming 3 300553 newdef OniumPiPi:Outgoing 3 553 newdef OniumPiPi:Coupling 3 1.77e-06 newdef OniumPiPi:ReA 3 1 newdef OniumPiPi:ImA 3 0 newdef OniumPiPi:ReB 3 0 newdef OniumPiPi:ImB 3 0 newdef OniumPiPi:ReC 3 0 newdef OniumPiPi:ImC 3 0 newdef OniumPiPi:Incoming 4 300553 newdef OniumPiPi:Outgoing 4 100553 newdef OniumPiPi:Coupling 4 6.88e-05 newdef OniumPiPi:ReA 4 1 newdef OniumPiPi:ImA 4 0 newdef OniumPiPi:ReB 4 -2.35 newdef OniumPiPi:ImB 4 0.55 newdef OniumPiPi:ReC 4 0 newdef OniumPiPi:ImC 4 0 newdef OniumPiPi:Incoming 5 100443 newdef OniumPiPi:Outgoing 5 443 newdef OniumPiPi:Coupling 5 6.62e-05 newdef OniumPiPi:ReA 5 1 newdef OniumPiPi:ImA 5 0 newdef OniumPiPi:ReB 5 -0.336 newdef OniumPiPi:ImB 5 0 newdef OniumPiPi:ReC 5 0 newdef OniumPiPi:ImC 5 0 newdef OniumPiPi:Incoming 6 30443 newdef OniumPiPi:Outgoing 6 443 newdef OniumPiPi:Coupling 6 2.06e-05 newdef OniumPiPi:ReA 6 1 newdef OniumPiPi:ImA 6 0 newdef OniumPiPi:ReB 6 0 newdef OniumPiPi:ImB 6 0 newdef OniumPiPi:ReC 6 0 newdef OniumPiPi:ImC 6 0 newdef OniumPiPi:MaxWeight 0 4.26075 newdef OniumPiPi:MaxWeight 1 4.82302 newdef OniumPiPi:MaxWeight 2 2.40535 newdef OniumPiPi:MaxWeight 3 2.36975 newdef OniumPiPi:MaxWeight 4 3.26611 newdef OniumPiPi:MaxWeight 5 3.64848 newdef OniumPiPi:MaxWeight 6 2.94445 newdef OniumPiPi:MaxWeight 7 2.98196 newdef OniumPiPi:MaxWeight 8 5.1262 newdef OniumPiPi:MaxWeight 9 5.45035 newdef OniumPiPi:MaxWeight 10 3.04451 newdef OniumPiPi:MaxWeight 11 3.08418 newdef OniumPiPi:MaxWeight 12 2.60132 newdef OniumPiPi:MaxWeight 13 3.2421 # create Herwig::TauDecayer Tau3Kaon newdef Tau3Kaon:Iteration 10 newdef Tau3Kaon:Ntry 1000 newdef Tau3Kaon:Points 10000 newdef Tau3Kaon:GenerateIntermediates 1 insert Tau3Kaon:WeightLocation 0 0 insert Tau3Kaon:WeightLocation 1 15 insert Tau3Kaon:WeightLocation 2 30 insert Tau3Kaon:WeightLocation 3 57 insert Tau3Kaon:WeightLocation 4 87 insert Tau3Kaon:WeightLocation 5 117 insert Tau3Kaon:WeightLocation 6 162 insert Tau3Kaon:WeightLocation 7 186 insert Tau3Kaon:WeightLocation 8 210 insert Tau3Kaon:MaximumWeight 0 0.0628563 insert Tau3Kaon:MaximumWeight 1 0.0584847 insert Tau3Kaon:MaximumWeight 2 0.0556493 insert Tau3Kaon:MaximumWeight 3 0.0379008 insert Tau3Kaon:MaximumWeight 4 0.103003 insert Tau3Kaon:MaximumWeight 5 0.118525 insert Tau3Kaon:MaximumWeight 6 0.0130281 insert Tau3Kaon:MaximumWeight 7 0.0130576 insert Tau3Kaon:MaximumWeight 8 0.0363744 insert Tau3Kaon:Weights 0 0.117417 insert Tau3Kaon:Weights 1 0.0477812 insert Tau3Kaon:Weights 2 0.110603 insert Tau3Kaon:Weights 3 0.0445565 insert Tau3Kaon:Weights 4 0.0436942 insert Tau3Kaon:Weights 5 0.0479616 insert Tau3Kaon:Weights 6 0.035497 insert Tau3Kaon:Weights 7 0.192082 insert Tau3Kaon:Weights 8 0.0770789 insert Tau3Kaon:Weights 9 0.0756785 insert Tau3Kaon:Weights 10 0.0471052 insert Tau3Kaon:Weights 11 0.0339545 insert Tau3Kaon:Weights 12 0.0727285 insert Tau3Kaon:Weights 13 0.0268392 insert Tau3Kaon:Weights 14 0.027022 insert Tau3Kaon:Weights 15 0.116557 insert Tau3Kaon:Weights 16 0.0474037 insert Tau3Kaon:Weights 17 0.112318 insert Tau3Kaon:Weights 18 0.045297 insert Tau3Kaon:Weights 19 0.0444606 insert Tau3Kaon:Weights 20 0.0478438 insert Tau3Kaon:Weights 21 0.0358701 insert Tau3Kaon:Weights 22 0.189945 insert Tau3Kaon:Weights 23 0.0766853 insert Tau3Kaon:Weights 24 0.0753829 insert Tau3Kaon:Weights 25 0.0466306 insert Tau3Kaon:Weights 26 0.034174 insert Tau3Kaon:Weights 27 0.0733332 insert Tau3Kaon:Weights 28 0.0269144 insert Tau3Kaon:Weights 29 0.0271845 insert Tau3Kaon:Weights 30 0.0522854 insert Tau3Kaon:Weights 31 0.0513271 insert Tau3Kaon:Weights 32 0.0279932 insert Tau3Kaon:Weights 33 0.0493411 insert Tau3Kaon:Weights 34 0.0485128 insert Tau3Kaon:Weights 35 0.027986 insert Tau3Kaon:Weights 36 0.0278973 insert Tau3Kaon:Weights 37 0.0279273 insert Tau3Kaon:Weights 38 0.0279295 insert Tau3Kaon:Weights 39 0.0298176 insert Tau3Kaon:Weights 40 0.0296561 insert Tau3Kaon:Weights 41 0.0230772 insert Tau3Kaon:Weights 42 0.0860205 insert Tau3Kaon:Weights 43 0.08456 insert Tau3Kaon:Weights 44 0.0488378 insert Tau3Kaon:Weights 45 0.0472467 insert Tau3Kaon:Weights 46 0.0472254 insert Tau3Kaon:Weights 47 0.0472473 insert Tau3Kaon:Weights 48 0.0285699 insert Tau3Kaon:Weights 49 0.0286473 insert Tau3Kaon:Weights 50 0.0211188 insert Tau3Kaon:Weights 51 0.0326389 insert Tau3Kaon:Weights 52 0.0325113 insert Tau3Kaon:Weights 53 0.0176887 insert Tau3Kaon:Weights 54 0.0177566 insert Tau3Kaon:Weights 55 0.0179674 insert Tau3Kaon:Weights 56 0.018213 insert Tau3Kaon:Weights 57 0.0989362 insert Tau3Kaon:Weights 58 0.0991008 insert Tau3Kaon:Weights 59 0.0757761 insert Tau3Kaon:Weights 60 0.0766933 insert Tau3Kaon:Weights 61 0.00570927 insert Tau3Kaon:Weights 62 0.00587107 insert Tau3Kaon:Weights 63 0.00309215 insert Tau3Kaon:Weights 64 0.00305167 insert Tau3Kaon:Weights 65 0.0032298 insert Tau3Kaon:Weights 66 0.00319386 insert Tau3Kaon:Weights 67 0.0360366 insert Tau3Kaon:Weights 68 0.0359146 insert Tau3Kaon:Weights 69 0.0297194 insert Tau3Kaon:Weights 70 0.0295472 insert Tau3Kaon:Weights 71 0.0710209 insert Tau3Kaon:Weights 72 0.0693943 insert Tau3Kaon:Weights 73 0.0271459 insert Tau3Kaon:Weights 74 0.027051 insert Tau3Kaon:Weights 75 0.0313704 insert Tau3Kaon:Weights 76 0.0311232 insert Tau3Kaon:Weights 77 0.0378968 insert Tau3Kaon:Weights 78 0.0379087 insert Tau3Kaon:Weights 79 0.0333478 insert Tau3Kaon:Weights 80 0.0333165 insert Tau3Kaon:Weights 81 0.0251708 insert Tau3Kaon:Weights 82 0.0255435 insert Tau3Kaon:Weights 83 0.0102115 insert Tau3Kaon:Weights 84 0.0102121 insert Tau3Kaon:Weights 85 0.0117132 insert Tau3Kaon:Weights 86 0.0117015 insert Tau3Kaon:Weights 87 0.0638479 insert Tau3Kaon:Weights 88 0.126982 insert Tau3Kaon:Weights 89 0.0415241 insert Tau3Kaon:Weights 90 0.102941 insert Tau3Kaon:Weights 91 0.00241387 insert Tau3Kaon:Weights 92 0.00684143 insert Tau3Kaon:Weights 93 0.00251072 insert Tau3Kaon:Weights 94 0.00264283 insert Tau3Kaon:Weights 95 0.00272284 insert Tau3Kaon:Weights 96 0.00264893 insert Tau3Kaon:Weights 97 0.0563642 insert Tau3Kaon:Weights 98 0.0371866 insert Tau3Kaon:Weights 99 0.0377318 insert Tau3Kaon:Weights 100 0.022992 insert Tau3Kaon:Weights 101 0.0384072 insert Tau3Kaon:Weights 102 0.0924072 insert Tau3Kaon:Weights 103 0.0340106 insert Tau3Kaon:Weights 104 0.0210986 insert Tau3Kaon:Weights 105 0.0343214 insert Tau3Kaon:Weights 106 0.0254764 insert Tau3Kaon:Weights 107 0.0542607 insert Tau3Kaon:Weights 108 0.0397933 insert Tau3Kaon:Weights 109 0.0369448 insert Tau3Kaon:Weights 110 0.0271564 insert Tau3Kaon:Weights 111 0.0128387 insert Tau3Kaon:Weights 112 0.0332425 insert Tau3Kaon:Weights 113 0.0119862 insert Tau3Kaon:Weights 114 0.00760639 insert Tau3Kaon:Weights 115 0.0119154 insert Tau3Kaon:Weights 116 0.00918386 insert Tau3Kaon:Weights 117 0.0698037 insert Tau3Kaon:Weights 118 0.0624049 insert Tau3Kaon:Weights 119 0.0623875 insert Tau3Kaon:Weights 120 0.0397951 insert Tau3Kaon:Weights 121 0.0461927 insert Tau3Kaon:Weights 122 0.0459387 insert Tau3Kaon:Weights 123 0.00235451 insert Tau3Kaon:Weights 124 0.00188454 insert Tau3Kaon:Weights 125 0.00244995 insert Tau3Kaon:Weights 126 0.00131646 insert Tau3Kaon:Weights 127 0.00171481 insert Tau3Kaon:Weights 128 0.00132031 insert Tau3Kaon:Weights 129 0.00149859 insert Tau3Kaon:Weights 130 0.0016649 insert Tau3Kaon:Weights 131 0.00146473 insert Tau3Kaon:Weights 132 0.0484398 insert Tau3Kaon:Weights 133 0.0262548 insert Tau3Kaon:Weights 134 0.0260329 insert Tau3Kaon:Weights 135 0.0286424 insert Tau3Kaon:Weights 136 0.0179938 insert Tau3Kaon:Weights 137 0.0177485 insert Tau3Kaon:Weights 138 0.041171 insert Tau3Kaon:Weights 139 0.0355065 insert Tau3Kaon:Weights 140 0.0408627 insert Tau3Kaon:Weights 141 0.0166738 insert Tau3Kaon:Weights 142 0.0265763 insert Tau3Kaon:Weights 143 0.0164481 insert Tau3Kaon:Weights 144 0.0189729 insert Tau3Kaon:Weights 145 0.0260982 insert Tau3Kaon:Weights 146 0.0189352 insert Tau3Kaon:Weights 147 0.0457969 insert Tau3Kaon:Weights 148 0.0287391 insert Tau3Kaon:Weights 149 0.0284498 insert Tau3Kaon:Weights 150 0.0274862 insert Tau3Kaon:Weights 151 0.0200731 insert Tau3Kaon:Weights 152 0.0199729 insert Tau3Kaon:Weights 153 0.0138195 insert Tau3Kaon:Weights 154 0.0116185 insert Tau3Kaon:Weights 155 0.0137358 insert Tau3Kaon:Weights 156 0.00574175 insert Tau3Kaon:Weights 157 0.00880767 insert Tau3Kaon:Weights 158 0.00561856 insert Tau3Kaon:Weights 159 0.00647259 insert Tau3Kaon:Weights 160 0.00867328 insert Tau3Kaon:Weights 161 0.00644613 insert Tau3Kaon:Weights 162 0.0594212 insert Tau3Kaon:Weights 163 0.059017 insert Tau3Kaon:Weights 164 0.0559659 insert Tau3Kaon:Weights 165 0.0560113 insert Tau3Kaon:Weights 166 0.0298809 insert Tau3Kaon:Weights 167 0.0300191 insert Tau3Kaon:Weights 168 0.0299324 insert Tau3Kaon:Weights 169 0.0301243 insert Tau3Kaon:Weights 170 0.0320152 insert Tau3Kaon:Weights 171 0.0318621 insert Tau3Kaon:Weights 172 0.0944455 insert Tau3Kaon:Weights 173 0.0945275 insert Tau3Kaon:Weights 174 0.0504985 insert Tau3Kaon:Weights 175 0.050491 insert Tau3Kaon:Weights 176 0.0505677 insert Tau3Kaon:Weights 177 0.0489317 insert Tau3Kaon:Weights 178 0.0308439 insert Tau3Kaon:Weights 179 0.0309864 insert Tau3Kaon:Weights 180 0.0333697 insert Tau3Kaon:Weights 181 0.0334536 insert Tau3Kaon:Weights 182 0.0166938 insert Tau3Kaon:Weights 183 0.0166725 insert Tau3Kaon:Weights 184 0.0171272 insert Tau3Kaon:Weights 185 0.0171417 insert Tau3Kaon:Weights 186 0.0593418 insert Tau3Kaon:Weights 187 0.0591838 insert Tau3Kaon:Weights 188 0.0560791 insert Tau3Kaon:Weights 189 0.0560781 insert Tau3Kaon:Weights 190 0.0299437 insert Tau3Kaon:Weights 191 0.0300136 insert Tau3Kaon:Weights 192 0.0300761 insert Tau3Kaon:Weights 193 0.0299446 insert Tau3Kaon:Weights 194 0.0318943 insert Tau3Kaon:Weights 195 0.0320243 insert Tau3Kaon:Weights 196 0.0944759 insert Tau3Kaon:Weights 197 0.0944906 insert Tau3Kaon:Weights 198 0.0505308 insert Tau3Kaon:Weights 199 0.050612 insert Tau3Kaon:Weights 200 0.0506095 insert Tau3Kaon:Weights 201 0.0488749 insert Tau3Kaon:Weights 202 0.0307825 insert Tau3Kaon:Weights 203 0.0308219 insert Tau3Kaon:Weights 204 0.0333697 insert Tau3Kaon:Weights 205 0.0332416 insert Tau3Kaon:Weights 206 0.0167937 insert Tau3Kaon:Weights 207 0.0167028 insert Tau3Kaon:Weights 208 0.0170418 insert Tau3Kaon:Weights 209 0.0170731 insert Tau3Kaon:Weights 210 0.0544515 insert Tau3Kaon:Weights 211 0.0544356 insert Tau3Kaon:Weights 212 0.0289563 insert Tau3Kaon:Weights 213 0.0528001 insert Tau3Kaon:Weights 214 0.0529015 insert Tau3Kaon:Weights 215 0.0269214 insert Tau3Kaon:Weights 216 0.0267983 insert Tau3Kaon:Weights 217 0.0269164 insert Tau3Kaon:Weights 218 0.026824 insert Tau3Kaon:Weights 219 0.0278333 insert Tau3Kaon:Weights 220 0.0279812 insert Tau3Kaon:Weights 221 0.0226943 insert Tau3Kaon:Weights 222 0.0899515 insert Tau3Kaon:Weights 223 0.0899708 insert Tau3Kaon:Weights 224 0.0454382 insert Tau3Kaon:Weights 225 0.0439627 insert Tau3Kaon:Weights 226 0.0442228 insert Tau3Kaon:Weights 227 0.0442622 insert Tau3Kaon:Weights 228 0.0269896 insert Tau3Kaon:Weights 229 0.027004 insert Tau3Kaon:Weights 230 0.0208653 insert Tau3Kaon:Weights 231 0.0356462 insert Tau3Kaon:Weights 232 0.0354828 insert Tau3Kaon:Weights 233 0.0164451 insert Tau3Kaon:Weights 234 0.0164756 insert Tau3Kaon:Weights 235 0.0168248 insert Tau3Kaon:Weights 236 0.0169443 create Herwig::KaonThreeMesonCurrent Tau3KaonCurrent HwWeakCurrents.so newdef Tau3KaonCurrent:AxialRhoWeight 0 1 newdef Tau3KaonCurrent:AxialRhoWeight 1 -0.145 newdef Tau3KaonCurrent:AxialRhoWeight 2 0 newdef Tau3KaonCurrent:AxialKStarWeight 0 1 newdef Tau3KaonCurrent:AxialKStarWeight 1 -0.135 newdef Tau3KaonCurrent:AxialKStarWeight 2 0 newdef Tau3KaonCurrent:VectorRhoWeight 0 1 newdef Tau3KaonCurrent:VectorRhoWeight 1 -0.25 newdef Tau3KaonCurrent:VectorRhoWeight 2 -0.038 newdef Tau3KaonCurrent:VectorKStarWeight 0 1 newdef Tau3KaonCurrent:VectorKStarWeight 1 -0.25 newdef Tau3KaonCurrent:VectorKStarWeight 2 -0.038 newdef Tau3KaonCurrent:OmegaKStarWeight 0.707107 newdef Tau3KaonCurrent:EpsOmega 0.05 newdef Tau3KaonCurrent:Initializea1 0 newdef Tau3KaonCurrent:RhoParameters 1 newdef Tau3KaonCurrent:KstarParameters 1 newdef Tau3KaonCurrent:a1Parameters 1 newdef Tau3KaonCurrent:K1Parameters 1 newdef Tau3KaonCurrent:OmegaParameters 1 newdef Tau3KaonCurrent:a1WidthOption 1 newdef Tau3KaonCurrent:a1RunningWidth 0 0 newdef Tau3KaonCurrent:a1RunningWidth 1 0 newdef Tau3KaonCurrent:a1RunningWidth 2 0 newdef Tau3KaonCurrent:a1RunningWidth 3 0 newdef Tau3KaonCurrent:a1RunningWidth 4 0 newdef Tau3KaonCurrent:a1RunningWidth 5 0 newdef Tau3KaonCurrent:a1RunningWidth 6 0 newdef Tau3KaonCurrent:a1RunningWidth 7 0 newdef Tau3KaonCurrent:a1RunningWidth 8 0 newdef Tau3KaonCurrent:a1RunningWidth 9 0 newdef Tau3KaonCurrent:a1RunningWidth 10 0 newdef Tau3KaonCurrent:a1RunningWidth 11 0 newdef Tau3KaonCurrent:a1RunningWidth 12 1.47729e-06 newdef Tau3KaonCurrent:a1RunningWidth 13 1.19209e-05 newdef Tau3KaonCurrent:a1RunningWidth 14 3.884e-05 newdef Tau3KaonCurrent:a1RunningWidth 15 8.83255e-05 newdef Tau3KaonCurrent:a1RunningWidth 16 0.00016561 newdef Tau3KaonCurrent:a1RunningWidth 17 0.000275439 newdef Tau3KaonCurrent:a1RunningWidth 18 0.000422332 newdef Tau3KaonCurrent:a1RunningWidth 19 0.000610773 newdef Tau3KaonCurrent:a1RunningWidth 20 0.000845357 newdef Tau3KaonCurrent:a1RunningWidth 21 0.00113092 newdef Tau3KaonCurrent:a1RunningWidth 22 0.00147264 newdef Tau3KaonCurrent:a1RunningWidth 23 0.00187616 newdef Tau3KaonCurrent:a1RunningWidth 24 0.0023477 newdef Tau3KaonCurrent:a1RunningWidth 25 0.00289413 newdef Tau3KaonCurrent:a1RunningWidth 26 0.00352315 newdef Tau3KaonCurrent:a1RunningWidth 27 0.00424342 newdef Tau3KaonCurrent:a1RunningWidth 28 0.0050647 newdef Tau3KaonCurrent:a1RunningWidth 29 0.00599808 newdef Tau3KaonCurrent:a1RunningWidth 30 0.00705616 newdef Tau3KaonCurrent:a1RunningWidth 31 0.00825335 newdef Tau3KaonCurrent:a1RunningWidth 32 0.0096062 newdef Tau3KaonCurrent:a1RunningWidth 33 0.0111337 newdef Tau3KaonCurrent:a1RunningWidth 34 0.0128579 newdef Tau3KaonCurrent:a1RunningWidth 35 0.0148041 newdef Tau3KaonCurrent:a1RunningWidth 36 0.017002 newdef Tau3KaonCurrent:a1RunningWidth 37 0.0194858 newdef Tau3KaonCurrent:a1RunningWidth 38 0.0222956 newdef Tau3KaonCurrent:a1RunningWidth 39 0.0254781 newdef Tau3KaonCurrent:a1RunningWidth 40 0.0290874 newdef Tau3KaonCurrent:a1RunningWidth 41 0.0331862 newdef Tau3KaonCurrent:a1RunningWidth 42 0.0378467 newdef Tau3KaonCurrent:a1RunningWidth 43 0.0431501 newdef Tau3KaonCurrent:a1RunningWidth 44 0.0491862 newdef Tau3KaonCurrent:a1RunningWidth 45 0.0560496 newdef Tau3KaonCurrent:a1RunningWidth 46 0.0638341 newdef Tau3KaonCurrent:a1RunningWidth 47 0.0726215 newdef Tau3KaonCurrent:a1RunningWidth 48 0.0824662 newdef Tau3KaonCurrent:a1RunningWidth 49 0.0933765 newdef Tau3KaonCurrent:a1RunningWidth 50 0.105297 newdef Tau3KaonCurrent:a1RunningWidth 51 0.118103 newdef Tau3KaonCurrent:a1RunningWidth 52 0.131602 newdef Tau3KaonCurrent:a1RunningWidth 53 0.145564 newdef Tau3KaonCurrent:a1RunningWidth 54 0.159749 newdef Tau3KaonCurrent:a1RunningWidth 55 0.173938 newdef Tau3KaonCurrent:a1RunningWidth 56 0.18795 newdef Tau3KaonCurrent:a1RunningWidth 57 0.201649 newdef Tau3KaonCurrent:a1RunningWidth 58 0.214943 newdef Tau3KaonCurrent:a1RunningWidth 59 0.227773 newdef Tau3KaonCurrent:a1RunningWidth 60 0.240109 newdef Tau3KaonCurrent:a1RunningWidth 61 0.25194 newdef Tau3KaonCurrent:a1RunningWidth 62 0.263268 newdef Tau3KaonCurrent:a1RunningWidth 63 0.274104 newdef Tau3KaonCurrent:a1RunningWidth 64 0.284466 newdef Tau3KaonCurrent:a1RunningWidth 65 0.294372 newdef Tau3KaonCurrent:a1RunningWidth 66 0.303845 newdef Tau3KaonCurrent:a1RunningWidth 67 0.312905 newdef Tau3KaonCurrent:a1RunningWidth 68 0.321576 newdef Tau3KaonCurrent:a1RunningWidth 69 0.329878 newdef Tau3KaonCurrent:a1RunningWidth 70 0.337832 newdef Tau3KaonCurrent:a1RunningWidth 71 0.345456 newdef Tau3KaonCurrent:a1RunningWidth 72 0.35277 newdef Tau3KaonCurrent:a1RunningWidth 73 0.35979 newdef Tau3KaonCurrent:a1RunningWidth 74 0.366532 newdef Tau3KaonCurrent:a1RunningWidth 75 0.373012 newdef Tau3KaonCurrent:a1RunningWidth 76 0.379243 newdef Tau3KaonCurrent:a1RunningWidth 77 0.38524 newdef Tau3KaonCurrent:a1RunningWidth 78 0.391014 newdef Tau3KaonCurrent:a1RunningWidth 79 0.396577 newdef Tau3KaonCurrent:a1RunningWidth 80 0.401939 newdef Tau3KaonCurrent:a1RunningWidth 81 0.407111 newdef Tau3KaonCurrent:a1RunningWidth 82 0.412102 newdef Tau3KaonCurrent:a1RunningWidth 83 0.416923 newdef Tau3KaonCurrent:a1RunningWidth 84 0.421577 newdef Tau3KaonCurrent:a1RunningWidth 85 0.426078 newdef Tau3KaonCurrent:a1RunningWidth 86 0.430427 newdef Tau3KaonCurrent:a1RunningWidth 87 0.434636 newdef Tau3KaonCurrent:a1RunningWidth 88 0.43871 newdef Tau3KaonCurrent:a1RunningWidth 89 0.442654 newdef Tau3KaonCurrent:a1RunningWidth 90 0.446475 newdef Tau3KaonCurrent:a1RunningWidth 91 0.450177 newdef Tau3KaonCurrent:a1RunningWidth 92 0.453765 newdef Tau3KaonCurrent:a1RunningWidth 93 0.457245 newdef Tau3KaonCurrent:a1RunningWidth 94 0.460621 newdef Tau3KaonCurrent:a1RunningWidth 95 0.463899 newdef Tau3KaonCurrent:a1RunningWidth 96 0.467077 newdef Tau3KaonCurrent:a1RunningWidth 97 0.470164 newdef Tau3KaonCurrent:a1RunningWidth 98 0.473162 newdef Tau3KaonCurrent:a1RunningWidth 99 0.476076 newdef Tau3KaonCurrent:a1RunningWidth 100 0.478909 newdef Tau3KaonCurrent:a1RunningWidth 101 0.481658 newdef Tau3KaonCurrent:a1RunningWidth 102 0.484333 newdef Tau3KaonCurrent:a1RunningWidth 103 0.486934 newdef Tau3KaonCurrent:a1RunningWidth 104 0.489465 newdef Tau3KaonCurrent:a1RunningWidth 105 0.491926 newdef Tau3KaonCurrent:a1RunningWidth 106 0.494321 newdef Tau3KaonCurrent:a1RunningWidth 107 0.496651 newdef Tau3KaonCurrent:a1RunningWidth 108 0.49892 newdef Tau3KaonCurrent:a1RunningWidth 109 0.501128 newdef Tau3KaonCurrent:a1RunningWidth 110 0.503277 newdef Tau3KaonCurrent:a1RunningWidth 111 0.505371 newdef Tau3KaonCurrent:a1RunningWidth 112 0.507409 newdef Tau3KaonCurrent:a1RunningWidth 113 0.509395 newdef Tau3KaonCurrent:a1RunningWidth 114 0.511328 newdef Tau3KaonCurrent:a1RunningWidth 115 0.513212 newdef Tau3KaonCurrent:a1RunningWidth 116 0.515047 newdef Tau3KaonCurrent:a1RunningWidth 117 0.516846 newdef Tau3KaonCurrent:a1RunningWidth 118 0.518624 newdef Tau3KaonCurrent:a1RunningWidth 119 0.520285 newdef Tau3KaonCurrent:a1RunningWidth 120 0.52194 newdef Tau3KaonCurrent:a1RunningWidth 121 0.523553 newdef Tau3KaonCurrent:a1RunningWidth 122 0.525124 newdef Tau3KaonCurrent:a1RunningWidth 123 0.526646 newdef Tau3KaonCurrent:a1RunningWidth 124 0.52814 newdef Tau3KaonCurrent:a1RunningWidth 125 0.529638 newdef Tau3KaonCurrent:a1RunningWidth 126 0.531016 newdef Tau3KaonCurrent:a1RunningWidth 127 0.532401 newdef Tau3KaonCurrent:a1RunningWidth 128 0.533751 newdef Tau3KaonCurrent:a1RunningWidth 129 0.535069 newdef Tau3KaonCurrent:a1RunningWidth 130 0.536354 newdef Tau3KaonCurrent:a1RunningWidth 131 0.537608 newdef Tau3KaonCurrent:a1RunningWidth 132 0.538831 newdef Tau3KaonCurrent:a1RunningWidth 133 0.540039 newdef Tau3KaonCurrent:a1RunningWidth 134 0.541194 newdef Tau3KaonCurrent:a1RunningWidth 135 0.542327 newdef Tau3KaonCurrent:a1RunningWidth 136 0.543438 newdef Tau3KaonCurrent:a1RunningWidth 137 0.544522 newdef Tau3KaonCurrent:a1RunningWidth 138 0.545582 newdef Tau3KaonCurrent:a1RunningWidth 139 0.546616 newdef Tau3KaonCurrent:a1RunningWidth 140 0.54764 newdef Tau3KaonCurrent:a1RunningWidth 141 0.548615 newdef Tau3KaonCurrent:a1RunningWidth 142 0.549581 newdef Tau3KaonCurrent:a1RunningWidth 143 0.550525 newdef Tau3KaonCurrent:a1RunningWidth 144 0.551449 newdef Tau3KaonCurrent:a1RunningWidth 145 0.552351 newdef Tau3KaonCurrent:a1RunningWidth 146 0.55324 newdef Tau3KaonCurrent:a1RunningWidth 147 0.554101 newdef Tau3KaonCurrent:a1RunningWidth 148 0.554944 newdef Tau3KaonCurrent:a1RunningWidth 149 0.555772 newdef Tau3KaonCurrent:a1RunningWidth 150 0.556583 newdef Tau3KaonCurrent:a1RunningWidth 151 0.557373 newdef Tau3KaonCurrent:a1RunningWidth 152 0.558155 newdef Tau3KaonCurrent:a1RunningWidth 153 0.558917 newdef Tau3KaonCurrent:a1RunningWidth 154 0.559664 newdef Tau3KaonCurrent:a1RunningWidth 155 0.560396 newdef Tau3KaonCurrent:a1RunningWidth 156 0.561114 newdef Tau3KaonCurrent:a1RunningWidth 157 0.561849 newdef Tau3KaonCurrent:a1RunningWidth 158 0.562508 newdef Tau3KaonCurrent:a1RunningWidth 159 0.563186 newdef Tau3KaonCurrent:a1RunningWidth 160 0.563851 newdef Tau3KaonCurrent:a1RunningWidth 161 0.564503 newdef Tau3KaonCurrent:a1RunningWidth 162 0.565145 newdef Tau3KaonCurrent:a1RunningWidth 163 0.565774 newdef Tau3KaonCurrent:a1RunningWidth 164 0.566394 newdef Tau3KaonCurrent:a1RunningWidth 165 0.567001 newdef Tau3KaonCurrent:a1RunningWidth 166 0.567595 newdef Tau3KaonCurrent:a1RunningWidth 167 0.568182 newdef Tau3KaonCurrent:a1RunningWidth 168 0.56876 newdef Tau3KaonCurrent:a1RunningWidth 169 0.56933 newdef Tau3KaonCurrent:a1RunningWidth 170 0.569886 newdef Tau3KaonCurrent:a1RunningWidth 171 0.570433 newdef Tau3KaonCurrent:a1RunningWidth 172 0.570976 newdef Tau3KaonCurrent:a1RunningWidth 173 0.571504 newdef Tau3KaonCurrent:a1RunningWidth 174 0.572027 newdef Tau3KaonCurrent:a1RunningWidth 175 0.572542 newdef Tau3KaonCurrent:a1RunningWidth 176 0.573114 newdef Tau3KaonCurrent:a1RunningWidth 177 0.573548 newdef Tau3KaonCurrent:a1RunningWidth 178 0.574108 newdef Tau3KaonCurrent:a1RunningWidth 179 0.574524 newdef Tau3KaonCurrent:a1RunningWidth 180 0.575002 newdef Tau3KaonCurrent:a1RunningWidth 181 0.575473 newdef Tau3KaonCurrent:a1RunningWidth 182 0.575937 newdef Tau3KaonCurrent:a1RunningWidth 183 0.576394 newdef Tau3KaonCurrent:a1RunningWidth 184 0.576845 newdef Tau3KaonCurrent:a1RunningWidth 185 0.57729 newdef Tau3KaonCurrent:a1RunningWidth 186 0.57773 newdef Tau3KaonCurrent:a1RunningWidth 187 0.578173 newdef Tau3KaonCurrent:a1RunningWidth 188 0.5786 newdef Tau3KaonCurrent:a1RunningWidth 189 0.579013 newdef Tau3KaonCurrent:a1RunningWidth 190 0.579431 newdef Tau3KaonCurrent:a1RunningWidth 191 0.579834 newdef Tau3KaonCurrent:a1RunningWidth 192 0.580246 newdef Tau3KaonCurrent:a1RunningWidth 193 0.580649 newdef Tau3KaonCurrent:a1RunningWidth 194 0.581045 newdef Tau3KaonCurrent:a1RunningWidth 195 0.581437 newdef Tau3KaonCurrent:a1RunningWidth 196 0.581827 newdef Tau3KaonCurrent:a1RunningWidth 197 0.582208 newdef Tau3KaonCurrent:a1RunningWidth 198 0.582586 newdef Tau3KaonCurrent:a1RunningWidth 199 0.582959 newdef Tau3KaonCurrent:a1RunningQ2 0 0 newdef Tau3KaonCurrent:a1RunningQ2 1 0.0158678 newdef Tau3KaonCurrent:a1RunningQ2 2 0.0317356 newdef Tau3KaonCurrent:a1RunningQ2 3 0.0476034 newdef Tau3KaonCurrent:a1RunningQ2 4 0.0634712 newdef Tau3KaonCurrent:a1RunningQ2 5 0.079339 newdef Tau3KaonCurrent:a1RunningQ2 6 0.0952068 newdef Tau3KaonCurrent:a1RunningQ2 7 0.111075 newdef Tau3KaonCurrent:a1RunningQ2 8 0.126942 newdef Tau3KaonCurrent:a1RunningQ2 9 0.14281 newdef Tau3KaonCurrent:a1RunningQ2 10 0.158678 newdef Tau3KaonCurrent:a1RunningQ2 11 0.174546 newdef Tau3KaonCurrent:a1RunningQ2 12 0.190414 newdef Tau3KaonCurrent:a1RunningQ2 13 0.206281 newdef Tau3KaonCurrent:a1RunningQ2 14 0.222149 newdef Tau3KaonCurrent:a1RunningQ2 15 0.238017 newdef Tau3KaonCurrent:a1RunningQ2 16 0.253885 newdef Tau3KaonCurrent:a1RunningQ2 17 0.269753 newdef Tau3KaonCurrent:a1RunningQ2 18 0.285621 newdef Tau3KaonCurrent:a1RunningQ2 19 0.301488 newdef Tau3KaonCurrent:a1RunningQ2 20 0.317356 newdef Tau3KaonCurrent:a1RunningQ2 21 0.333224 newdef Tau3KaonCurrent:a1RunningQ2 22 0.349092 newdef Tau3KaonCurrent:a1RunningQ2 23 0.36496 newdef Tau3KaonCurrent:a1RunningQ2 24 0.380827 newdef Tau3KaonCurrent:a1RunningQ2 25 0.396695 newdef Tau3KaonCurrent:a1RunningQ2 26 0.412563 newdef Tau3KaonCurrent:a1RunningQ2 27 0.428431 newdef Tau3KaonCurrent:a1RunningQ2 28 0.444299 newdef Tau3KaonCurrent:a1RunningQ2 29 0.460166 newdef Tau3KaonCurrent:a1RunningQ2 30 0.476034 newdef Tau3KaonCurrent:a1RunningQ2 31 0.491902 newdef Tau3KaonCurrent:a1RunningQ2 32 0.50777 newdef Tau3KaonCurrent:a1RunningQ2 33 0.523638 newdef Tau3KaonCurrent:a1RunningQ2 34 0.539505 newdef Tau3KaonCurrent:a1RunningQ2 35 0.555373 newdef Tau3KaonCurrent:a1RunningQ2 36 0.571241 newdef Tau3KaonCurrent:a1RunningQ2 37 0.587109 newdef Tau3KaonCurrent:a1RunningQ2 38 0.602977 newdef Tau3KaonCurrent:a1RunningQ2 39 0.618844 newdef Tau3KaonCurrent:a1RunningQ2 40 0.634712 newdef Tau3KaonCurrent:a1RunningQ2 41 0.65058 newdef Tau3KaonCurrent:a1RunningQ2 42 0.666448 newdef Tau3KaonCurrent:a1RunningQ2 43 0.682316 newdef Tau3KaonCurrent:a1RunningQ2 44 0.698183 newdef Tau3KaonCurrent:a1RunningQ2 45 0.714051 newdef Tau3KaonCurrent:a1RunningQ2 46 0.729919 newdef Tau3KaonCurrent:a1RunningQ2 47 0.745787 newdef Tau3KaonCurrent:a1RunningQ2 48 0.761655 newdef Tau3KaonCurrent:a1RunningQ2 49 0.777523 newdef Tau3KaonCurrent:a1RunningQ2 50 0.79339 newdef Tau3KaonCurrent:a1RunningQ2 51 0.809258 newdef Tau3KaonCurrent:a1RunningQ2 52 0.825126 newdef Tau3KaonCurrent:a1RunningQ2 53 0.840994 newdef Tau3KaonCurrent:a1RunningQ2 54 0.856862 newdef Tau3KaonCurrent:a1RunningQ2 55 0.872729 newdef Tau3KaonCurrent:a1RunningQ2 56 0.888597 newdef Tau3KaonCurrent:a1RunningQ2 57 0.904465 newdef Tau3KaonCurrent:a1RunningQ2 58 0.920333 newdef Tau3KaonCurrent:a1RunningQ2 59 0.936201 newdef Tau3KaonCurrent:a1RunningQ2 60 0.952068 newdef Tau3KaonCurrent:a1RunningQ2 61 0.967936 newdef Tau3KaonCurrent:a1RunningQ2 62 0.983804 newdef Tau3KaonCurrent:a1RunningQ2 63 0.999672 newdef Tau3KaonCurrent:a1RunningQ2 64 1.01554 newdef Tau3KaonCurrent:a1RunningQ2 65 1.03141 newdef Tau3KaonCurrent:a1RunningQ2 66 1.04728 newdef Tau3KaonCurrent:a1RunningQ2 67 1.06314 newdef Tau3KaonCurrent:a1RunningQ2 68 1.07901 newdef Tau3KaonCurrent:a1RunningQ2 69 1.09488 newdef Tau3KaonCurrent:a1RunningQ2 70 1.11075 newdef Tau3KaonCurrent:a1RunningQ2 71 1.12661 newdef Tau3KaonCurrent:a1RunningQ2 72 1.14248 newdef Tau3KaonCurrent:a1RunningQ2 73 1.15835 newdef Tau3KaonCurrent:a1RunningQ2 74 1.17422 newdef Tau3KaonCurrent:a1RunningQ2 75 1.19009 newdef Tau3KaonCurrent:a1RunningQ2 76 1.20595 newdef Tau3KaonCurrent:a1RunningQ2 77 1.22182 newdef Tau3KaonCurrent:a1RunningQ2 78 1.23769 newdef Tau3KaonCurrent:a1RunningQ2 79 1.25356 newdef Tau3KaonCurrent:a1RunningQ2 80 1.26942 newdef Tau3KaonCurrent:a1RunningQ2 81 1.28529 newdef Tau3KaonCurrent:a1RunningQ2 82 1.30116 newdef Tau3KaonCurrent:a1RunningQ2 83 1.31703 newdef Tau3KaonCurrent:a1RunningQ2 84 1.3329 newdef Tau3KaonCurrent:a1RunningQ2 85 1.34876 newdef Tau3KaonCurrent:a1RunningQ2 86 1.36463 newdef Tau3KaonCurrent:a1RunningQ2 87 1.3805 newdef Tau3KaonCurrent:a1RunningQ2 88 1.39637 newdef Tau3KaonCurrent:a1RunningQ2 89 1.41223 newdef Tau3KaonCurrent:a1RunningQ2 90 1.4281 newdef Tau3KaonCurrent:a1RunningQ2 91 1.44397 newdef Tau3KaonCurrent:a1RunningQ2 92 1.45984 newdef Tau3KaonCurrent:a1RunningQ2 93 1.47571 newdef Tau3KaonCurrent:a1RunningQ2 94 1.49157 newdef Tau3KaonCurrent:a1RunningQ2 95 1.50744 newdef Tau3KaonCurrent:a1RunningQ2 96 1.52331 newdef Tau3KaonCurrent:a1RunningQ2 97 1.53918 newdef Tau3KaonCurrent:a1RunningQ2 98 1.55505 newdef Tau3KaonCurrent:a1RunningQ2 99 1.57091 newdef Tau3KaonCurrent:a1RunningQ2 100 1.58678 newdef Tau3KaonCurrent:a1RunningQ2 101 1.60265 newdef Tau3KaonCurrent:a1RunningQ2 102 1.61852 newdef Tau3KaonCurrent:a1RunningQ2 103 1.63438 newdef Tau3KaonCurrent:a1RunningQ2 104 1.65025 newdef Tau3KaonCurrent:a1RunningQ2 105 1.66612 newdef Tau3KaonCurrent:a1RunningQ2 106 1.68199 newdef Tau3KaonCurrent:a1RunningQ2 107 1.69786 newdef Tau3KaonCurrent:a1RunningQ2 108 1.71372 newdef Tau3KaonCurrent:a1RunningQ2 109 1.72959 newdef Tau3KaonCurrent:a1RunningQ2 110 1.74546 newdef Tau3KaonCurrent:a1RunningQ2 111 1.76133 newdef Tau3KaonCurrent:a1RunningQ2 112 1.77719 newdef Tau3KaonCurrent:a1RunningQ2 113 1.79306 newdef Tau3KaonCurrent:a1RunningQ2 114 1.80893 newdef Tau3KaonCurrent:a1RunningQ2 115 1.8248 newdef Tau3KaonCurrent:a1RunningQ2 116 1.84067 newdef Tau3KaonCurrent:a1RunningQ2 117 1.85653 newdef Tau3KaonCurrent:a1RunningQ2 118 1.8724 newdef Tau3KaonCurrent:a1RunningQ2 119 1.88827 newdef Tau3KaonCurrent:a1RunningQ2 120 1.90414 newdef Tau3KaonCurrent:a1RunningQ2 121 1.92 newdef Tau3KaonCurrent:a1RunningQ2 122 1.93587 newdef Tau3KaonCurrent:a1RunningQ2 123 1.95174 newdef Tau3KaonCurrent:a1RunningQ2 124 1.96761 newdef Tau3KaonCurrent:a1RunningQ2 125 1.98348 newdef Tau3KaonCurrent:a1RunningQ2 126 1.99934 newdef Tau3KaonCurrent:a1RunningQ2 127 2.01521 newdef Tau3KaonCurrent:a1RunningQ2 128 2.03108 newdef Tau3KaonCurrent:a1RunningQ2 129 2.04695 newdef Tau3KaonCurrent:a1RunningQ2 130 2.06281 newdef Tau3KaonCurrent:a1RunningQ2 131 2.07868 newdef Tau3KaonCurrent:a1RunningQ2 132 2.09455 newdef Tau3KaonCurrent:a1RunningQ2 133 2.11042 newdef Tau3KaonCurrent:a1RunningQ2 134 2.12629 newdef Tau3KaonCurrent:a1RunningQ2 135 2.14215 newdef Tau3KaonCurrent:a1RunningQ2 136 2.15802 newdef Tau3KaonCurrent:a1RunningQ2 137 2.17389 newdef Tau3KaonCurrent:a1RunningQ2 138 2.18976 newdef Tau3KaonCurrent:a1RunningQ2 139 2.20563 newdef Tau3KaonCurrent:a1RunningQ2 140 2.22149 newdef Tau3KaonCurrent:a1RunningQ2 141 2.23736 newdef Tau3KaonCurrent:a1RunningQ2 142 2.25323 newdef Tau3KaonCurrent:a1RunningQ2 143 2.2691 newdef Tau3KaonCurrent:a1RunningQ2 144 2.28496 newdef Tau3KaonCurrent:a1RunningQ2 145 2.30083 newdef Tau3KaonCurrent:a1RunningQ2 146 2.3167 newdef Tau3KaonCurrent:a1RunningQ2 147 2.33257 newdef Tau3KaonCurrent:a1RunningQ2 148 2.34844 newdef Tau3KaonCurrent:a1RunningQ2 149 2.3643 newdef Tau3KaonCurrent:a1RunningQ2 150 2.38017 newdef Tau3KaonCurrent:a1RunningQ2 151 2.39604 newdef Tau3KaonCurrent:a1RunningQ2 152 2.41191 newdef Tau3KaonCurrent:a1RunningQ2 153 2.42777 newdef Tau3KaonCurrent:a1RunningQ2 154 2.44364 newdef Tau3KaonCurrent:a1RunningQ2 155 2.45951 newdef Tau3KaonCurrent:a1RunningQ2 156 2.47538 newdef Tau3KaonCurrent:a1RunningQ2 157 2.49125 newdef Tau3KaonCurrent:a1RunningQ2 158 2.50711 newdef Tau3KaonCurrent:a1RunningQ2 159 2.52298 newdef Tau3KaonCurrent:a1RunningQ2 160 2.53885 newdef Tau3KaonCurrent:a1RunningQ2 161 2.55472 newdef Tau3KaonCurrent:a1RunningQ2 162 2.57058 newdef Tau3KaonCurrent:a1RunningQ2 163 2.58645 newdef Tau3KaonCurrent:a1RunningQ2 164 2.60232 newdef Tau3KaonCurrent:a1RunningQ2 165 2.61819 newdef Tau3KaonCurrent:a1RunningQ2 166 2.63406 newdef Tau3KaonCurrent:a1RunningQ2 167 2.64992 newdef Tau3KaonCurrent:a1RunningQ2 168 2.66579 newdef Tau3KaonCurrent:a1RunningQ2 169 2.68166 newdef Tau3KaonCurrent:a1RunningQ2 170 2.69753 newdef Tau3KaonCurrent:a1RunningQ2 171 2.71339 newdef Tau3KaonCurrent:a1RunningQ2 172 2.72926 newdef Tau3KaonCurrent:a1RunningQ2 173 2.74513 newdef Tau3KaonCurrent:a1RunningQ2 174 2.761 newdef Tau3KaonCurrent:a1RunningQ2 175 2.77687 newdef Tau3KaonCurrent:a1RunningQ2 176 2.79273 newdef Tau3KaonCurrent:a1RunningQ2 177 2.8086 newdef Tau3KaonCurrent:a1RunningQ2 178 2.82447 newdef Tau3KaonCurrent:a1RunningQ2 179 2.84034 newdef Tau3KaonCurrent:a1RunningQ2 180 2.85621 newdef Tau3KaonCurrent:a1RunningQ2 181 2.87207 newdef Tau3KaonCurrent:a1RunningQ2 182 2.88794 newdef Tau3KaonCurrent:a1RunningQ2 183 2.90381 newdef Tau3KaonCurrent:a1RunningQ2 184 2.91968 newdef Tau3KaonCurrent:a1RunningQ2 185 2.93554 newdef Tau3KaonCurrent:a1RunningQ2 186 2.95141 newdef Tau3KaonCurrent:a1RunningQ2 187 2.96728 newdef Tau3KaonCurrent:a1RunningQ2 188 2.98315 newdef Tau3KaonCurrent:a1RunningQ2 189 2.99902 newdef Tau3KaonCurrent:a1RunningQ2 190 3.01488 newdef Tau3KaonCurrent:a1RunningQ2 191 3.03075 newdef Tau3KaonCurrent:a1RunningQ2 192 3.04662 newdef Tau3KaonCurrent:a1RunningQ2 193 3.06249 newdef Tau3KaonCurrent:a1RunningQ2 194 3.07835 newdef Tau3KaonCurrent:a1RunningQ2 195 3.09422 newdef Tau3KaonCurrent:a1RunningQ2 196 3.11009 newdef Tau3KaonCurrent:a1RunningQ2 197 3.12596 newdef Tau3KaonCurrent:a1RunningQ2 198 3.14183 newdef Tau3KaonCurrent:a1RunningQ2 199 3.15769 newdef Tau3KaonCurrent:A1Width 0.475 newdef Tau3KaonCurrent:A1Mass 1.251 newdef Tau3KaonCurrent:OmegaWidth 0.00843 newdef Tau3KaonCurrent:OmegaMass 0.782 newdef Tau3KaonCurrent:PhiWidth 0.00443 newdef Tau3KaonCurrent:PhiMass 1.02 newdef Tau3KaonCurrent:FPi 92.4189 newdef Tau3KaonCurrent:K1Masses 0 1.270 newdef Tau3KaonCurrent:K1Masses 1 1.402 newdef Tau3KaonCurrent:K1Widths 0 0.090 newdef Tau3KaonCurrent:K1Widths 1 0.174 newdef Tau3KaonCurrent:RhoAxialMasses 0 0.773 newdef Tau3KaonCurrent:RhoAxialMasses 1 1.37 newdef Tau3KaonCurrent:RhoAxialMasses 2 1.75 newdef Tau3KaonCurrent:RhoAxialWidths 0 0.145 newdef Tau3KaonCurrent:RhoAxialWidths 1 0.51 newdef Tau3KaonCurrent:RhoAxialWidths 2 0.12 newdef Tau3KaonCurrent:RhoVectorMasses 0 0.773 newdef Tau3KaonCurrent:RhoVectorMasses 1 1.5 newdef Tau3KaonCurrent:RhoVectorMasses 2 1.75 newdef Tau3KaonCurrent:RhoVectorWidths 0 0.145 newdef Tau3KaonCurrent:RhoVectorWidths 1 0.22 newdef Tau3KaonCurrent:RhoVectorWidths 2 0.12 newdef Tau3KaonCurrent:KstarAxialMasses 0 0.892 newdef Tau3KaonCurrent:KstarAxialMasses 1 1.412 newdef Tau3KaonCurrent:KstarAxialMasses 2 1.714 newdef Tau3KaonCurrent:KstarAxialWidths 0 0.05 newdef Tau3KaonCurrent:KstarAxialWidths 1 0.227 newdef Tau3KaonCurrent:KstarAxialWidths 2 0.323 newdef Tau3KaonCurrent:KstarVectorMasses 0 0.892 newdef Tau3KaonCurrent:KstarVectorMasses 1 1.412 newdef Tau3KaonCurrent:KstarVectorMasses 2 1.714 newdef Tau3KaonCurrent:KstarVectorWidths 0 0.05 newdef Tau3KaonCurrent:KstarVectorWidths 1 0.227 newdef Tau3KaonCurrent:KstarVectorWidths 2 0.323 newdef Tau3KaonCurrent:K1WeightKStarPi 0 0.33 newdef Tau3KaonCurrent:K1WeightKStarPi 1 1 newdef Tau3KaonCurrent:K1WeightRhoK 0 1 newdef Tau3KaonCurrent:K1WeightRhoK 1 0 newdef Tau3KaonCurrent:Quark 0 2 newdef Tau3KaonCurrent:AntiQuark 0 -1 newdef Tau3KaonCurrent:Quark 1 2 newdef Tau3KaonCurrent:AntiQuark 1 -1 newdef Tau3KaonCurrent:Quark 2 2 newdef Tau3KaonCurrent:AntiQuark 2 -1 newdef Tau3KaonCurrent:Quark 3 2 newdef Tau3KaonCurrent:AntiQuark 3 -1 newdef Tau3KaonCurrent:Quark 4 2 newdef Tau3KaonCurrent:AntiQuark 4 -1 newdef Tau3KaonCurrent:Quark 5 2 newdef Tau3KaonCurrent:AntiQuark 5 -3 newdef Tau3KaonCurrent:Quark 6 2 newdef Tau3KaonCurrent:AntiQuark 6 -3 newdef Tau3KaonCurrent:Quark 7 2 newdef Tau3KaonCurrent:AntiQuark 7 -3 newdef Tau3KaonCurrent:Quark 8 2 newdef Tau3KaonCurrent:AntiQuark 8 -1 newdef Tau3KaonCurrent:Quark 9 2 newdef Tau3KaonCurrent:AntiQuark 9 -1 newdef Tau3KaonCurrent:Quark 10 2 newdef Tau3KaonCurrent:AntiQuark 10 -1 newdef Tau3KaonCurrent:Quark 11 2 newdef Tau3KaonCurrent:AntiQuark 11 -1 newdef Tau3Kaon:WeakCurrent Tau3KaonCurrent # create Herwig::TauDecayer TauKPi newdef TauKPi:Iteration 5 newdef TauKPi:Ntry 500 newdef TauKPi:Points 10000 newdef TauKPi:GenerateIntermediates 1 insert TauKPi:WeightLocation 0 0 insert TauKPi:WeightLocation 1 5 insert TauKPi:MaximumWeight 0 0.07 insert TauKPi:MaximumWeight 1 0.14 insert TauKPi:Weights 0 0.667015 insert TauKPi:Weights 1 0.0215203 insert TauKPi:Weights 2 0.0176676 insert TauKPi:Weights 3 0.253612 insert TauKPi:Weights 4 0.040185 insert TauKPi:Weights 5 0.652889 insert TauKPi:Weights 6 0.0361892 insert TauKPi:Weights 7 0.0173992 insert TauKPi:Weights 8 0.261652 insert TauKPi:Weights 9 0.0318708 create Herwig::KPiCurrent TauKPiCurrent HeWeakCurrents.so newdef TauKPiCurrent:LocalParameters 1 newdef TauKPiCurrent:Transverse 1 newdef TauKPiCurrent:cV 1 newdef TauKPiCurrent:cS 0.465 newdef TauKPiCurrent:VectorMagnitude 0 1 newdef TauKPiCurrent:VectorPhase 0 0 newdef TauKPiCurrent:VectorMagnitude 1 0.075 newdef TauKPiCurrent:VectorPhase 1 82.5 newdef TauKPiCurrent:ScalarMagnitude 0 1 newdef TauKPiCurrent:ScalarPhase 0 0 newdef TauKPiCurrent:ScalarMagnitude 1 0 newdef TauKPiCurrent:ScalarPhase 1 0 newdef TauKPiCurrent:VectorMass 0 895.47 newdef TauKPiCurrent:VectorWidth 0 46.19 newdef TauKPiCurrent:VectorMass 1 1414 newdef TauKPiCurrent:VectorWidth 1 232 insert TauKPiCurrent:VectorMass 2 1717 insert TauKPiCurrent:VectorWidth 2 322 newdef TauKPiCurrent:ScalarMass 0 878 newdef TauKPiCurrent:ScalarWidth 0 499 newdef TauKPiCurrent:ScalarMass 1 1429 newdef TauKPiCurrent:ScalarWidth 1 287 newdef TauKPiCurrent:Quark 0 2 newdef TauKPiCurrent:AntiQuark 0 -3 newdef TauKPiCurrent:Quark 1 2 newdef TauKPiCurrent:AntiQuark 1 -3 newdef TauKPi:WeakCurrent TauKPiCurrent # create Herwig::BtoSGammaDecayer BtosgammaKagan newdef BtosgammaKagan:PartonSplitter /Herwig/Hadronization/PartonSplitter newdef BtosgammaKagan:ClusterFinder /Herwig/Hadronization/ClusterFinder newdef BtosgammaKagan:ClusterFissioner /Herwig/Hadronization/ClusterFissioner newdef BtosgammaKagan:LightClusterDecayer /Herwig/Hadronization/LightClusterDecayer newdef BtosgammaKagan:ClusterDecayer /Herwig/Hadronization/ClusterDecayer newdef BtosgammaKagan:Exclusive 1 newdef BtosgammaKagan:Intermediates 0 newdef BtosgammaKagan:Partonic_Tries 100 create Herwig::BtoSGammaKagan BtosgammaMass newdef BtosgammaMass:TopMass 175 newdef BtosgammaMass:BottomMass 4.8 newdef BtosgammaMass:CharmMass 1.392 newdef BtosgammaMass:StrangeMassRatio 0.02 newdef BtosgammaMass:WMass 80.425 newdef BtosgammaMass:ZMass 91.1876 newdef BtosgammaMass:Lambda2 0.12 newdef BtosgammaMass:BMesonMass 5.2794 newdef BtosgammaMass:Mu 4.8 newdef BtosgammaMass:Delta 0.9 newdef BtosgammaMass:Lambda1 -0.3 newdef BtosgammaMass:alpha 0.00729735 newdef BtosgammaMass:CKM 0.976 newdef BtosgammaMass:FermiNormalisation 1.21691 newdef BtosgammaMass:MaximumTries 100 newdef BtosgammaMass:ycut 1 newdef BtosgammaMass:NSpectrum 100 newdef BtosgammaMass:mHValues 0 0.825 newdef BtosgammaMass:mHValues 1 0.867257 newdef BtosgammaMass:mHValues 2 0.909515 newdef BtosgammaMass:mHValues 3 0.951772 newdef BtosgammaMass:mHValues 4 0.994029 newdef BtosgammaMass:mHValues 5 1.03629 newdef BtosgammaMass:mHValues 6 1.07854 newdef BtosgammaMass:mHValues 7 1.1208 newdef BtosgammaMass:mHValues 8 1.16306 newdef BtosgammaMass:mHValues 9 1.20532 newdef BtosgammaMass:mHValues 10 1.24757 newdef BtosgammaMass:mHValues 11 1.28983 newdef BtosgammaMass:mHValues 12 1.33209 newdef BtosgammaMass:mHValues 13 1.37435 newdef BtosgammaMass:mHValues 14 1.4166 newdef BtosgammaMass:mHValues 15 1.45886 newdef BtosgammaMass:mHValues 16 1.50112 newdef BtosgammaMass:mHValues 17 1.54338 newdef BtosgammaMass:mHValues 18 1.58563 newdef BtosgammaMass:mHValues 19 1.62789 newdef BtosgammaMass:mHValues 20 1.67015 newdef BtosgammaMass:mHValues 21 1.7124 newdef BtosgammaMass:mHValues 22 1.75466 newdef BtosgammaMass:mHValues 23 1.79692 newdef BtosgammaMass:mHValues 24 1.83918 newdef BtosgammaMass:mHValues 25 1.88143 newdef BtosgammaMass:mHValues 26 1.92369 newdef BtosgammaMass:mHValues 27 1.96595 newdef BtosgammaMass:mHValues 28 2.00821 newdef BtosgammaMass:mHValues 29 2.05046 newdef BtosgammaMass:mHValues 30 2.09272 newdef BtosgammaMass:mHValues 31 2.13498 newdef BtosgammaMass:mHValues 32 2.17724 newdef BtosgammaMass:mHValues 33 2.21949 newdef BtosgammaMass:mHValues 34 2.26175 newdef BtosgammaMass:mHValues 35 2.30401 newdef BtosgammaMass:mHValues 36 2.34626 newdef BtosgammaMass:mHValues 37 2.38852 newdef BtosgammaMass:mHValues 38 2.43078 newdef BtosgammaMass:mHValues 39 2.47304 newdef BtosgammaMass:mHValues 40 2.51529 newdef BtosgammaMass:mHValues 41 2.55755 newdef BtosgammaMass:mHValues 42 2.59981 newdef BtosgammaMass:mHValues 43 2.64207 newdef BtosgammaMass:mHValues 44 2.68432 newdef BtosgammaMass:mHValues 45 2.72658 newdef BtosgammaMass:mHValues 46 2.76884 newdef BtosgammaMass:mHValues 47 2.8111 newdef BtosgammaMass:mHValues 48 2.85335 newdef BtosgammaMass:mHValues 49 2.89561 newdef BtosgammaMass:mHValues 50 2.93787 newdef BtosgammaMass:mHValues 51 2.98013 newdef BtosgammaMass:mHValues 52 3.02238 newdef BtosgammaMass:mHValues 53 3.06464 newdef BtosgammaMass:mHValues 54 3.1069 newdef BtosgammaMass:mHValues 55 3.14915 newdef BtosgammaMass:mHValues 56 3.19141 newdef BtosgammaMass:mHValues 57 3.23367 newdef BtosgammaMass:mHValues 58 3.27593 newdef BtosgammaMass:mHValues 59 3.31818 newdef BtosgammaMass:mHValues 60 3.36044 newdef BtosgammaMass:mHValues 61 3.4027 newdef BtosgammaMass:mHValues 62 3.44496 newdef BtosgammaMass:mHValues 63 3.48721 newdef BtosgammaMass:mHValues 64 3.52947 newdef BtosgammaMass:mHValues 65 3.57173 newdef BtosgammaMass:mHValues 66 3.61399 newdef BtosgammaMass:mHValues 67 3.65624 newdef BtosgammaMass:mHValues 68 3.6985 newdef BtosgammaMass:mHValues 69 3.74076 newdef BtosgammaMass:mHValues 70 3.78302 newdef BtosgammaMass:mHValues 71 3.82527 newdef BtosgammaMass:mHValues 72 3.86753 newdef BtosgammaMass:mHValues 73 3.90979 newdef BtosgammaMass:mHValues 74 3.95204 newdef BtosgammaMass:mHValues 75 3.9943 newdef BtosgammaMass:mHValues 76 4.03656 newdef BtosgammaMass:mHValues 77 4.07882 newdef BtosgammaMass:mHValues 78 4.12107 newdef BtosgammaMass:mHValues 79 4.16333 newdef BtosgammaMass:mHValues 80 4.20559 newdef BtosgammaMass:mHValues 81 4.24785 newdef BtosgammaMass:mHValues 82 4.2901 newdef BtosgammaMass:mHValues 83 4.33236 newdef BtosgammaMass:mHValues 84 4.37462 newdef BtosgammaMass:mHValues 85 4.41688 newdef BtosgammaMass:mHValues 86 4.45913 newdef BtosgammaMass:mHValues 87 4.50139 newdef BtosgammaMass:mHValues 88 4.54365 newdef BtosgammaMass:mHValues 89 4.58591 newdef BtosgammaMass:mHValues 90 4.62816 newdef BtosgammaMass:mHValues 91 4.67042 newdef BtosgammaMass:mHValues 92 4.71268 newdef BtosgammaMass:mHValues 93 4.75493 newdef BtosgammaMass:mHValues 94 4.79719 newdef BtosgammaMass:mHValues 95 4.83945 newdef BtosgammaMass:mHValues 96 4.88171 newdef BtosgammaMass:mHValues 97 4.92396 newdef BtosgammaMass:mHValues 98 4.96622 newdef BtosgammaMass:mHValues 99 5.00848 newdef BtosgammaMass:Spectrum 0 7.66578e-05 newdef BtosgammaMass:Spectrum 1 8.88774e-05 newdef BtosgammaMass:Spectrum 2 0.000101655 newdef BtosgammaMass:Spectrum 3 0.000114816 newdef BtosgammaMass:Spectrum 4 0.000128169 newdef BtosgammaMass:Spectrum 5 0.000141542 newdef BtosgammaMass:Spectrum 6 0.000154679 newdef BtosgammaMass:Spectrum 7 0.000167399 newdef BtosgammaMass:Spectrum 8 0.000179472 newdef BtosgammaMass:Spectrum 9 0.00019078 newdef BtosgammaMass:Spectrum 10 0.000201121 newdef BtosgammaMass:Spectrum 11 0.000210346 newdef BtosgammaMass:Spectrum 12 0.00021833 newdef BtosgammaMass:Spectrum 13 0.00022497 newdef BtosgammaMass:Spectrum 14 0.000230231 newdef BtosgammaMass:Spectrum 15 0.000233996 newdef BtosgammaMass:Spectrum 16 0.000236281 newdef BtosgammaMass:Spectrum 17 0.000237093 newdef BtosgammaMass:Spectrum 18 0.000236431 newdef BtosgammaMass:Spectrum 19 0.000234426 newdef BtosgammaMass:Spectrum 20 0.000231119 newdef BtosgammaMass:Spectrum 21 0.000226602 newdef BtosgammaMass:Spectrum 22 0.000220987 newdef BtosgammaMass:Spectrum 23 0.000214393 newdef BtosgammaMass:Spectrum 24 0.000206948 newdef BtosgammaMass:Spectrum 25 0.000198784 newdef BtosgammaMass:Spectrum 26 0.000190058 newdef BtosgammaMass:Spectrum 27 0.000180856 newdef BtosgammaMass:Spectrum 28 0.00017133 newdef BtosgammaMass:Spectrum 29 0.000161602 newdef BtosgammaMass:Spectrum 30 0.000151786 newdef BtosgammaMass:Spectrum 31 0.000141971 newdef BtosgammaMass:Spectrum 32 0.000132288 newdef BtosgammaMass:Spectrum 33 0.0001228 newdef BtosgammaMass:Spectrum 34 0.000113581 newdef BtosgammaMass:Spectrum 35 0.00010469 newdef BtosgammaMass:Spectrum 36 9.61778e-05 newdef BtosgammaMass:Spectrum 37 8.80815e-05 newdef BtosgammaMass:Spectrum 38 8.04295e-05 newdef BtosgammaMass:Spectrum 39 7.32403e-05 newdef BtosgammaMass:Spectrum 40 6.65241e-05 newdef BtosgammaMass:Spectrum 41 6.02879e-05 newdef BtosgammaMass:Spectrum 42 5.45173e-05 newdef BtosgammaMass:Spectrum 43 4.92076e-05 newdef BtosgammaMass:Spectrum 44 4.43443e-05 newdef BtosgammaMass:Spectrum 45 3.9909e-05 newdef BtosgammaMass:Spectrum 46 3.58802e-05 newdef BtosgammaMass:Spectrum 47 3.22326e-05 newdef BtosgammaMass:Spectrum 48 2.8946e-05 newdef BtosgammaMass:Spectrum 49 2.59925e-05 newdef BtosgammaMass:Spectrum 50 2.33464e-05 newdef BtosgammaMass:Spectrum 51 2.09823e-05 newdef BtosgammaMass:Spectrum 52 1.88754e-05 newdef BtosgammaMass:Spectrum 53 1.70019e-05 newdef BtosgammaMass:Spectrum 54 1.5339e-05 newdef BtosgammaMass:Spectrum 55 1.38655e-05 newdef BtosgammaMass:Spectrum 56 1.25614e-05 newdef BtosgammaMass:Spectrum 57 1.14085e-05 newdef BtosgammaMass:Spectrum 58 1.03894e-05 newdef BtosgammaMass:Spectrum 59 9.48883e-06 newdef BtosgammaMass:Spectrum 60 8.69297e-06 newdef BtosgammaMass:Spectrum 61 7.9892e-06 newdef BtosgammaMass:Spectrum 62 7.36625e-06 newdef BtosgammaMass:Spectrum 63 6.81403e-06 newdef BtosgammaMass:Spectrum 64 6.32388e-06 newdef BtosgammaMass:Spectrum 65 5.88784e-06 newdef BtosgammaMass:Spectrum 66 5.49905e-06 newdef BtosgammaMass:Spectrum 67 5.1515e-06 newdef BtosgammaMass:Spectrum 68 4.83997e-06 newdef BtosgammaMass:Spectrum 69 4.55992e-06 newdef BtosgammaMass:Spectrum 70 4.30743e-06 newdef BtosgammaMass:Spectrum 71 4.07914e-06 newdef BtosgammaMass:Spectrum 72 3.87217e-06 newdef BtosgammaMass:Spectrum 73 3.68409e-06 newdef BtosgammaMass:Spectrum 74 3.51284e-06 newdef BtosgammaMass:Spectrum 75 3.35671e-06 newdef BtosgammaMass:Spectrum 76 3.2143e-06 newdef BtosgammaMass:Spectrum 77 3.08444e-06 newdef BtosgammaMass:Spectrum 78 2.9662e-06 newdef BtosgammaMass:Spectrum 79 2.85934e-06 newdef BtosgammaMass:Spectrum 80 2.76345e-06 newdef BtosgammaMass:Spectrum 81 2.67832e-06 newdef BtosgammaMass:Spectrum 82 2.60408e-06 newdef BtosgammaMass:Spectrum 83 2.54259e-06 newdef BtosgammaMass:Spectrum 84 2.51139e-06 newdef BtosgammaMass:Spectrum 85 2.5295e-06 newdef BtosgammaMass:Spectrum 86 2.60152e-06 newdef BtosgammaMass:Spectrum 87 2.72469e-06 newdef BtosgammaMass:Spectrum 88 2.89586e-06 newdef BtosgammaMass:Spectrum 89 3.11368e-06 newdef BtosgammaMass:Spectrum 90 3.37949e-06 newdef BtosgammaMass:Spectrum 91 3.69773e-06 newdef BtosgammaMass:Spectrum 92 4.07611e-06 newdef BtosgammaMass:Spectrum 93 4.52598e-06 newdef BtosgammaMass:Spectrum 94 5.06366e-06 newdef BtosgammaMass:Spectrum 95 5.71246e-06 newdef BtosgammaMass:Spectrum 96 6.50607e-06 newdef BtosgammaMass:Spectrum 97 7.49463e-06 newdef BtosgammaMass:Spectrum 98 8.75571e-06 newdef BtosgammaMass:Spectrum 99 1.04156e-05 newdef BtosgammaKagan:HadronicMass BtosgammaMass # create Herwig::SMTopDecayer Top newdef Top:Coupling /Herwig/Shower/AlphaQCD newdef Top:QuarkWeights 0 5. newdef Top:QuarkWeights 1 5. newdef Top:QuarkWeights 2 5. newdef Top:QuarkWeights 3 5. newdef Top:QuarkWeights 4 1.5e-05 newdef Top:QuarkWeights 5 5. newdef Top:LeptonWeights 0 5. newdef Top:LeptonWeights 1 5. newdef Top:LeptonWeights 2 5. newdef Top:Iteration 1 newdef Top:Ntry 500 newdef Top:Points 10000 newdef Top:GenerateIntermediates 1 newdef Top:PhotonGenerator /Herwig/QEDRadiation/SOPHTY # create Herwig::SMHiggsFermionsPOWHEGDecayer Hff newdef Hff:MaxWeights 0 0 newdef Hff:MaxWeights 1 0 newdef Hff:MaxWeights 2 0 newdef Hff:MaxWeights 3 1. newdef Hff:MaxWeights 4 1. newdef Hff:MaxWeights 5 1. newdef Hff:MaxWeights 6 1.2 newdef Hff:MaxWeights 7 1.2 newdef Hff:MaxWeights 8 1.2 newdef Hff:Iteration 1 newdef Hff:Ntry 500 newdef Hff:Points 10000 newdef Hff:GenerateIntermediates 0 newdef Hff:Coupling /Herwig/Shower/AlphaQCD newdef Hff:PhotonGenerator /Herwig/QEDRadiation/SOPHTY # create Herwig::SMHiggsWWDecayer HWW newdef HWW:WMaximum 0 90. newdef HWW:ZMaximum 0 50. newdef HWW:WMaximum 1 4.5 newdef HWW:ZMaximum 1 4.5 newdef HWW:Iteration 1 newdef HWW:Ntry 2000 newdef HWW:Points 10000 newdef HWW:GenerateIntermediates 0 newdef HWW:PhotonGenerator /Herwig/QEDRadiation/SOPHTY # create Herwig::SemiLeptonicScalarDecayer HQET newdef HQET:Iteration 1 newdef HQET:Ntry 500 newdef HQET:Points 10000 newdef HQET:GenerateIntermediates 1 insert HQET:MaximumWeight 0 0.0762401 insert HQET:MaximumWeight 1 0.0723751 insert HQET:MaximumWeight 2 0.0189018 insert HQET:MaximumWeight 3 0.105976 insert HQET:MaximumWeight 4 0.105066 insert HQET:MaximumWeight 5 0.0261202 insert HQET:MaximumWeight 6 0.0700031 insert HQET:MaximumWeight 7 0.066446 insert HQET:MaximumWeight 8 0.0172756 insert HQET:MaximumWeight 9 0.10208 insert HQET:MaximumWeight 10 0.106631 insert HQET:MaximumWeight 11 0.0278126 create Herwig::LeptonNeutrinoCurrent HQETCurrent HwWeakCurrents.so newdef HQETCurrent:Quark 0 11 newdef HQETCurrent:AntiQuark 0 -12 newdef HQETCurrent:Quark 1 13 newdef HQETCurrent:AntiQuark 1 -15 newdef HQETCurrent:Quark 2 15 newdef HQETCurrent:AntiQuark 2 -16 newdef HQET:Current HQETCurrent create Herwig::HQETFormFactor HQETFormFactor newdef HQETFormFactor:Incoming 0 -521 newdef HQETFormFactor:Outgoing 0 421 newdef HQETFormFactor:Spin 0 0 newdef HQETFormFactor:Spectator 0 -2 newdef HQETFormFactor:InQuark 0 5 newdef HQETFormFactor:OutQuark 0 4 newdef HQETFormFactor:Incoming 1 -521 newdef HQETFormFactor:Outgoing 1 423 newdef HQETFormFactor:Spin 1 1 newdef HQETFormFactor:Spectator 1 -2 newdef HQETFormFactor:InQuark 1 5 newdef HQETFormFactor:OutQuark 1 4 newdef HQETFormFactor:Incoming 2 -511 newdef HQETFormFactor:Outgoing 2 411 newdef HQETFormFactor:Spin 2 0 newdef HQETFormFactor:Spectator 2 1 newdef HQETFormFactor:InQuark 2 5 newdef HQETFormFactor:OutQuark 2 4 newdef HQETFormFactor:Incoming 3 -511 newdef HQETFormFactor:Outgoing 3 413 newdef HQETFormFactor:Spin 3 1 newdef HQETFormFactor:Spectator 3 1 newdef HQETFormFactor:InQuark 3 5 newdef HQETFormFactor:OutQuark 3 4 newdef HQETFormFactor:F1Scalar 1.02693 newdef HQETFormFactor:F1Vector 0.84 newdef HQETFormFactor:Rho2Scalar 1.17 newdef HQETFormFactor:Rho2Vector 1.179 newdef HQETFormFactor:R1 1.417 newdef HQETFormFactor:R2 0.836 newdef HQET:FormFactor HQETFormFactor # create Herwig::DtoKPiPiCLEO DKPiPiCLEO newdef DKPiPiCLEO:Iteration 10 newdef DKPiPiCLEO:Ntry 500 newdef DKPiPiCLEO:Points 10000 newdef DKPiPiCLEO:GenerateIntermediates 1 newdef DKPiPiCLEO:LocalParameters 1 newdef DKPiPiCLEO:OmegaMass 782.57 newdef DKPiPiCLEO:f980Mass 977 newdef DKPiPiCLEO:f_2Mass 1275.4 newdef DKPiPiCLEO:f1370Mass 1310 newdef DKPiPiCLEO:K_01430Mass 1412 newdef DKPiPiCLEO:K_21430Mass 1425.6 newdef DKPiPiCLEO:Kstar1680Mass 1717 newdef DKPiPiCLEO:rho1700Mass 1700 newdef DKPiPiCLEO:Kstar0892Mass 896.1 newdef DKPiPiCLEO:KstarPlus892AMass 891.5 newdef DKPiPiCLEO:KstarPlus892BMass 891.66 newdef DKPiPiCLEO:RhoPlusMass 770 newdef DKPiPiCLEO:Rho0Mass 769.3 newdef DKPiPiCLEO:OmegaWidth 8.44 newdef DKPiPiCLEO:f980Width 50 newdef DKPiPiCLEO:f_2Width 185.1 newdef DKPiPiCLEO:f1370Width 272 newdef DKPiPiCLEO:K_01430Width 294 newdef DKPiPiCLEO:K_21430Width 98.5 newdef DKPiPiCLEO:Kstar1680Width 322 newdef DKPiPiCLEO:rho1700Width 240 newdef DKPiPiCLEO:Kstar0892Width 50.5 newdef DKPiPiCLEO:KstarPlus892AWidth 50 newdef DKPiPiCLEO:KstarPlus892BWidth 50.8 newdef DKPiPiCLEO:RhoPlusWidth 150.7 newdef DKPiPiCLEO:Rho0Width 150.2 newdef DKPiPiCLEO:gPi 0.09 newdef DKPiPiCLEO:gK 0.02 newdef DKPiPiCLEO:f0Option 0 newdef DKPiPiCLEO:ChargedNonResonantAmplitude 1.75 newdef DKPiPiCLEO:ChargedNonResonantPhase 31.2 newdef DKPiPiCLEO:ChargedRhoAmplitude 1 newdef DKPiPiCLEO:ChargedRhoPhase 0 newdef DKPiPiCLEO:ChargedKStarMinusAmplitude 0.44 newdef DKPiPiCLEO:ChargedKStarMinusPhase 163 newdef DKPiPiCLEO:ChargedKStar0Amplitude 0.39 newdef DKPiPiCLEO:ChargedKStar0Phase -0.2 newdef DKPiPiCLEO:ChargedK_0MinusAmplitude 0.77 newdef DKPiPiCLEO:ChargedK_0MinusPhase 55.5 newdef DKPiPiCLEO:ChargedK_00Amplitude 0.85 newdef DKPiPiCLEO:ChargedK_00Phase 166 newdef DKPiPiCLEO:ChargedRho1700Amplitude 2.5 newdef DKPiPiCLEO:ChargedRho1700Phase 171 newdef DKPiPiCLEO:ChargedK1680MinusAmplitude 2.5 newdef DKPiPiCLEO:ChargedK1680MinusPhase 103 newdef DKPiPiCLEO:NeutralKStarPlusAmplitude 0.11 newdef DKPiPiCLEO:NeutralKStarPlusPhase 321 newdef DKPiPiCLEO:NeutralRhoAmplitude 1 newdef DKPiPiCLEO:NeutralRhoPhase 0 newdef DKPiPiCLEO:NeutralOmegaAmplitude 0.037 newdef DKPiPiCLEO:NeutralOmegaPhase 114 newdef DKPiPiCLEO:NeutralKStarMinusAmplitude 1.56 newdef DKPiPiCLEO:NeutralKStarMinusPhase 150 newdef DKPiPiCLEO:Neutralf980Amplitude 0.34 newdef DKPiPiCLEO:Neutralf980Phase 188 newdef DKPiPiCLEO:Neutralf2Amplitude 0.7 newdef DKPiPiCLEO:Neutralf2Phase 308 newdef DKPiPiCLEO:Neutralf1370Amplitude 1.8 newdef DKPiPiCLEO:Neutralf1370Phase 85 newdef DKPiPiCLEO:NeutralKK_0MinusAmplitude 2 newdef DKPiPiCLEO:NeutralKK_0MinusPhase 3 newdef DKPiPiCLEO:NeutralKK_2MinusAmplitude 1 newdef DKPiPiCLEO:NeutralKK_2MinusPhase 335 newdef DKPiPiCLEO:NeutralK1680MinusAmplitude 5.6 newdef DKPiPiCLEO:NeutralK1680MinusPhase 174 newdef DKPiPiCLEO:NeutralNonResonantAmplitude 1.1 newdef DKPiPiCLEO:NeutralNonResonantPhase 340 newdef DKPiPiCLEO:DRadius 5 newdef DKPiPiCLEO:ResonanceRadius 1.5 insert DKPiPiCLEO:MaximumWeights 0 1.42657e+10 insert DKPiPiCLEO:MaximumWeights 1 3.21105e+10 insert DKPiPiCLEO:Weights 0 0.28797 insert DKPiPiCLEO:Weights 1 0.137184 insert DKPiPiCLEO:Weights 2 0.0809083 insert DKPiPiCLEO:Weights 3 0.0900742 insert DKPiPiCLEO:Weights 4 0.168189 insert DKPiPiCLEO:Weights 5 0.085995 insert DKPiPiCLEO:Weights 6 0.149679 insert DKPiPiCLEO:Weights 7 0.0309423 insert DKPiPiCLEO:Weights 8 0.144479 insert DKPiPiCLEO:Weights 9 0.0612441 insert DKPiPiCLEO:Weights 10 0.317923 insert DKPiPiCLEO:Weights 11 0.0289859 insert DKPiPiCLEO:Weights 12 0.107982 insert DKPiPiCLEO:Weights 13 0.11297 insert DKPiPiCLEO:Weights 14 0.0684044 insert DKPiPiCLEO:Weights 15 0.0555692 insert DKPiPiCLEO:Weights 16 0.0714999 # create Herwig::DtoKPiPiE691 DKPiPiE691 newdef DKPiPiE691:Iteration 10 newdef DKPiPiE691:Ntry 500 newdef DKPiPiE691:Points 10000 newdef DKPiPiE691:GenerateIntermediates 1 newdef DKPiPiE691:KmPipPipNonResonantMagnitude 1 newdef DKPiPiE691:KmPipPipNonResonantPhase 0 newdef DKPiPiE691:KmPipPipK892Magnitude 0.78 newdef DKPiPiE691:KmPipPipK892Phase -60 newdef DKPiPiE691:KmPipPipK1430Magnitude 0.53 newdef DKPiPiE691:KmPipPipK1430Phase 132 newdef DKPiPiE691:KmPipPipK1680Magnitude 0.47 newdef DKPiPiE691:KmPipPipK1680Phase -51 newdef DKPiPiE691:KmPipPi0NonResonantMagnitude 1 newdef DKPiPiE691:KmPipPi0NonResonantPhase 0 newdef DKPiPiE691:KmPipPi0K8920Magnitude 3.19 newdef DKPiPiE691:KmPipPi0K8920Phase 167 newdef DKPiPiE691:KmPipPi0K892mMagnitude 2.96 newdef DKPiPiE691:KmPipPi0K892mPhase -112 newdef DKPiPiE691:KmPipPi0RhoMagnitude 8.56 newdef DKPiPiE691:KmPipPi0RhoPhase 40 newdef DKPiPiE691:K0PipPimNonResonantMagnitude 1 newdef DKPiPiE691:K0PipPimNonResonantPhase 0 newdef DKPiPiE691:K0PipPimK892Magnitude 2.31 newdef DKPiPiE691:K0PipPimK892Phase 109 newdef DKPiPiE691:K0PipPimRhoMagnitude 1.59 newdef DKPiPiE691:K0PipPimRhoPhase -123 newdef DKPiPiE691:LocalParameters 1 newdef DKPiPiE691:K8920Mass 0.8961 newdef DKPiPiE691:K8920Width 0.0505 newdef DKPiPiE691:K892MinusMass 0.89159 newdef DKPiPiE691:K892MinusWidth 0.0498 newdef DKPiPiE691:K1680Mass 1.714 newdef DKPiPiE691:K1680Width 0.323 newdef DKPiPiE691:K1430Mass 1.429 newdef DKPiPiE691:K1430Width 0.287 newdef DKPiPiE691:Rho0Mass 0.7681 newdef DKPiPiE691:Rho0Width 0.1515 newdef DKPiPiE691:RhoPlusMass 0.7681 newdef DKPiPiE691:RhoPlusWidth 0.1515 insert DKPiPiE691:MaximumWeights 0 1.76526e+09 insert DKPiPiE691:MaximumWeights 1 6.09945e+09 insert DKPiPiE691:MaximumWeights 2 1.02351e+09 insert DKPiPiE691:Weights 0 0.192843 insert DKPiPiE691:Weights 1 0.198588 insert DKPiPiE691:Weights 2 0.108339 insert DKPiPiE691:Weights 3 0.114322 insert DKPiPiE691:Weights 4 0.192924 insert DKPiPiE691:Weights 5 0.192984 insert DKPiPiE691:Weights 6 0.226201 insert DKPiPiE691:Weights 7 0.217755 insert DKPiPiE691:Weights 8 0.556044 insert DKPiPiE691:Weights 9 0.453208 insert DKPiPiE691:Weights 10 0.546792 # create Herwig::DtoKPiPiMarkIII DtoKPiPiMarkIII newdef DtoKPiPiMarkIII:Iteration 10 newdef DtoKPiPiMarkIII:Ntry 500 newdef DtoKPiPiMarkIII:Points 10000 newdef DtoKPiPiMarkIII:GenerateIntermediates 1 newdef DtoKPiPiMarkIII:KmPipPi0RhoMagnitude 1 newdef DtoKPiPiMarkIII:KmPipPi0RhoPhase 0 newdef DtoKPiPiMarkIII:KmPipPi0KstarmMagnitude 0.4018 newdef DtoKPiPiMarkIII:KmPipPi0KstarmPhase 154 newdef DtoKPiPiMarkIII:KmPipPi0Kstar0Magnitude 0.4244 newdef DtoKPiPiMarkIII:KmPipPi0Kstar0Phase 7 newdef DtoKPiPiMarkIII:KmPipPi0NonResonantMagnitude 2.0693 newdef DtoKPiPiMarkIII:KmPipPi0NonResonantPhase 52 newdef DtoKPiPiMarkIII:K0PipPimRhoMagnitude 0.0975 newdef DtoKPiPiMarkIII:K0PipPimRhoPhase 93 newdef DtoKPiPiMarkIII:K0PipPimKstarMagnitude 0.2225 newdef DtoKPiPiMarkIII:K0PipPimKstarPhase 0 newdef DtoKPiPiMarkIII:K0PipPimNonResonantMagnitude 1 newdef DtoKPiPiMarkIII:K0PipPimNonResonantPhase 0 newdef DtoKPiPiMarkIII:K0PipPi0RhoMagnitude 1 newdef DtoKPiPiMarkIII:K0PipPi0RhoPhase 0 newdef DtoKPiPiMarkIII:K0PipPi0KstarMagnitude 0.5617 newdef DtoKPiPiMarkIII:K0PipPi0KstarPhase 43 newdef DtoKPiPiMarkIII:K0PipPi0NonResonantMagnitude 2.725 newdef DtoKPiPiMarkIII:K0PipPi0NonResonantPhase 250 newdef DtoKPiPiMarkIII:KmPipPipNonResonantMagnitude 1 newdef DtoKPiPiMarkIII:KmPipPipNonResonantPhase 0 newdef DtoKPiPiMarkIII:KmPipPipKstarMagnitude 0.04749 newdef DtoKPiPiMarkIII:KmPipPipKstarPhase 105 newdef DtoKPiPiMarkIII:LocalParameters 1 newdef DtoKPiPiMarkIII:Kstar0Mass 0.8695 newdef DtoKPiPiMarkIII:Kstar0Width 0.0502 newdef DtoKPiPiMarkIII:KstarMinusMass 0.8921 newdef DtoKPiPiMarkIII:KstarMinusWidth 0.0511 newdef DtoKPiPiMarkIII:Rho0Mass 0.77 newdef DtoKPiPiMarkIII:Rho0Width 0.1533 newdef DtoKPiPiMarkIII:RhoPlusMass 0.77 newdef DtoKPiPiMarkIII:RhoPlusWidth 0.1533 newdef DtoKPiPiMarkIII:RhoRadius 5 newdef DtoKPiPiMarkIII:KstarRadius 2 insert DtoKPiPiMarkIII:MaximumWeights 0 3.40137e+10 insert DtoKPiPiMarkIII:MaximumWeights 1 1.26052e+09 insert DtoKPiPiMarkIII:MaximumWeights 2 7.78925e+10 insert DtoKPiPiMarkIII:MaximumWeights 3 3.50351e+09 insert DtoKPiPiMarkIII:Weights 0 0.508183 insert DtoKPiPiMarkIII:Weights 1 0.186959 insert DtoKPiPiMarkIII:Weights 2 0.304858 insert DtoKPiPiMarkIII:Weights 3 0.442997 insert DtoKPiPiMarkIII:Weights 4 0.557003 insert DtoKPiPiMarkIII:Weights 5 0.576273 insert DtoKPiPiMarkIII:Weights 6 0.423727 insert DtoKPiPiMarkIII:Weights 7 0.497905 insert DtoKPiPiMarkIII:Weights 8 0.502095 # create Herwig::RadiativeHyperonDecayer RadiativeHyperon newdef RadiativeHyperon:MaxWeight 0 0.0245809 newdef RadiativeHyperon:IncomingBaryon 0 3222 newdef RadiativeHyperon:OutgoingBaryon 0 2212 newdef RadiativeHyperon:CouplingA 0 -1.81e-07 newdef RadiativeHyperon:CouplingB 0 4.7e-08 newdef RadiativeHyperon:MaxWeight 1 6.02591e-05 newdef RadiativeHyperon:IncomingBaryon 1 3312 newdef RadiativeHyperon:OutgoingBaryon 1 3112 newdef RadiativeHyperon:CouplingA 1 8e-09 newdef RadiativeHyperon:CouplingB 1 1.5e-08 newdef RadiativeHyperon:MaxWeight 2 1.34599e-12 newdef RadiativeHyperon:IncomingBaryon 2 3212 newdef RadiativeHyperon:OutgoingBaryon 2 2112 newdef RadiativeHyperon:CouplingA 2 -2e-09 newdef RadiativeHyperon:CouplingB 2 -4.5e-08 newdef RadiativeHyperon:MaxWeight 3 0.00237221 newdef RadiativeHyperon:IncomingBaryon 3 3122 newdef RadiativeHyperon:OutgoingBaryon 3 2112 newdef RadiativeHyperon:CouplingA 3 -5.2e-08 newdef RadiativeHyperon:CouplingB 3 -5e-09 newdef RadiativeHyperon:MaxWeight 4 0.00175107 newdef RadiativeHyperon:IncomingBaryon 4 3322 newdef RadiativeHyperon:OutgoingBaryon 4 3212 newdef RadiativeHyperon:CouplingA 4 5e-09 newdef RadiativeHyperon:CouplingB 4 7e-08 newdef RadiativeHyperon:MaxWeight 5 0.00171032 newdef RadiativeHyperon:IncomingBaryon 5 3322 newdef RadiativeHyperon:OutgoingBaryon 5 3122 newdef RadiativeHyperon:CouplingA 5 -3.4e-08 newdef RadiativeHyperon:CouplingB 5 -8e-09 newdef RadiativeHyperon:Iteration 1 newdef RadiativeHyperon:Ntry 500 newdef RadiativeHyperon:Points 10000 newdef RadiativeHyperon:GenerateIntermediates 0 # �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/StandardModelVertices.in�������������������������������������������0000644�0001750�0001750�00000003663�11754474774�024163� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################# # Setup of Standard Model vertices. # # End users won't find anything interesting here. ################################################# # create the Standard Model fermion-antifermion Z vertex create Herwig::SMFFZVertex FFZVertex newdef /Herwig/Model:Vertex/FFZ FFZVertex # create the Standard Model fermion-antiferion W vertex create Herwig::SMFFWVertex FFWVertex newdef /Herwig/Model:Vertex/FFW FFWVertex # create the standard model fermion-fermion higgs vertex create Herwig::SMFFHVertex FFHVertex newdef /Herwig/Model:Vertex/FFH FFHVertex # create the Standard Model quark-antiquark-gluon vertex create Herwig::SMFFGVertex FFGVertex newdef /Herwig/Model:Vertex/FFG FFGVertex # create the standard model fermion-antifermion gamma vertex create Herwig::SMFFPVertex FFPVertex newdef /Herwig/Model:Vertex/FFP FFPVertex # create the Standard Model triple gluon vertex create Herwig::SMGGGVertex GGGVertex newdef /Herwig/Model:Vertex/GGG GGGVertex # create the standartd model 4-gluon vertex create Herwig::SMGGGGVertex GGGGVertex newdef /Herwig/Model:Vertex/GGGG GGGGVertex # create the standard model WWH vertex create Herwig::SMWWHVertex WWHVertex newdef /Herwig/Model:Vertex/WWH WWHVertex # create the standard model WWW vertex create Herwig::SMWWWVertex WWWVertex newdef /Herwig/Model:Vertex/WWW WWWVertex # create the standard model WWWW vertex create Herwig::SMWWWWVertex WWWWVertex newdef /Herwig/Model:Vertex/WWWW WWWWVertex #create the standard model HGG vertex create Herwig::SMHGGVertex HGGVertex newdef /Herwig/Model:Vertex/HGG HGGVertex #create the standard model HPP vertex create Herwig::SMHPPVertex HPPVertex newdef /Herwig/Model:Vertex/HPP HPPVertex #create the standard model HHH vertex create Herwig::SMHHHVertex HHHVertex newdef /Herwig/Model:Vertex/HHH HHHVertex #create the standard model WWHH vertex create Herwig::SMWWHHVertex WWHHVertex newdef /Herwig/Model:Vertex/WWHH WWHHVertex �����������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/quark_decays.in����������������������������������������������������0000644�0001750�0001750�00000001713�11754474774�022402� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # file containing the decays for the quarks # # decaymode t->dbar,u,b; 0.321586 1 /Herwig/Decays/Top decaymode t->sbar,c,b; 0.320957 1 /Herwig/Decays/Top decaymode t->mu+,nu_mu,b; 0.108059 1 /Herwig/Decays/Top decaymode t->e+,nu_e,b; 0.108059 1 /Herwig/Decays/Top decaymode t->tau+,nu_tau,b; 0.10798 1 /Herwig/Decays/Top decaymode t->sbar,u,b; 0.01644 1 /Herwig/Decays/Top decaymode t->dbar,c,b; 0.016407 1 /Herwig/Decays/Top decaymode t->bbar,c,b; 0.000512 1 /Herwig/Decays/Top # decaymode tbar->d,ubar,bbar; 0.321586 1 /Herwig/Decays/Top decaymode tbar->s,cbar,bbar; 0.320957 1 /Herwig/Decays/Top decaymode tbar->e-,nu_ebar,bbar; 0.108059 1 /Herwig/Decays/Top decaymode tbar->mu-,nu_mubar,bbar; 0.108059 1 /Herwig/Decays/Top decaymode tbar->tau-,nu_taubar,bbar; 0.10798 1 /Herwig/Decays/Top decaymode tbar->s,ubar,bbar; 0.01644 1 /Herwig/Decays/Top decaymode tbar->d,cbar,bbar; 0.016407 1 /Herwig/Decays/Top decaymode tbar->b,cbar,bbar; 0.000512 1 /Herwig/Decays/Top �����������������������������������������������������herwig++-2.6.0.orig/src/defaults/Analysis.in.in�����������������������������������������������������0000644�0001750�0001750�00000005665�11754474774�022131� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# @configure_input@ ######################################################### # Analysis handler setup # # By default, only 'Basics' is active. Add the commented # lines to your input file to switch on other analyses. ######################################################### mkdir /Herwig/Analysis cd /Herwig/Analysis library HwAnalysis.so # # basic analysis to check consistency of events # (only analysis handler switched on by default) # create Herwig::BasicConsistency Basics insert /Herwig/Generators/LEPGenerator:AnalysisHandlers 0 Basics insert /Herwig/Generators/LHCGenerator:AnalysisHandlers 0 Basics insert /Herwig/Generators/DISGenerator:AnalysisHandlers 0 Basics # # Analysis Handlers for hadron-hadron collisions # (switched off by default) # # simple analysis of W/Z events create Herwig::SimpleLHCAnalysis DrellYan # simple analysis of top-antitop events create Herwig::TTbarAnalysis TTbar # simple analysis of gamma+jet events create Herwig::GammaJetAnalysis GammaJet # simple analysis of gamma-gamma events create Herwig::GammaGammaAnalysis GammaGamma # simple analysis of higgs+jet events create Herwig::HiggsJetAnalysis HiggsJet # # Analysis Handlers for LEP 91.2 GeV collisions # (switched off by default) # # hadron multiplicities compared to LEP data create Herwig::LEPMultiplicityCount LEPMultiplicity HwLEPAnalysis.so # b fractions in specific hadrons create Herwig::LEPBMultiplicity BMultiplicity HwLEPAnalysis.so # b fragmentation functions create Herwig::BFragmentationAnalysisHandler BFrag HwLEPAnalysis.so # master LEP event shape analysis and object which does the work create Herwig::EventShapesMasterAnalysis Shapes create Herwig::EventShapes LEPShapes newdef Shapes:EventShapes LEPShapes # LEP event shapes create Herwig::LEPEventShapes LEPEvent newdef LEPEvent:EventShapes LEPShapes insert Shapes:Slaves 0 LEPEvent # LEP identified particles create Herwig::IdentifiedParticleAnalysis LEPIdent # LEP single particle analysis create Herwig::SingleParticleAnalysis LEPSingle newdef LEPSingle:EventShapes LEPShapes insert Shapes:Slaves 0 LEPSingle # # Analysis Handlers for Belle and CLEO data below the Upsilon(4S) # (switched off by default) # # BELLE data on charm hadron spetra create Herwig::BELLECharmAnalysis BELLECharm HwLEPAnalysis.so # CLEO data on charm meson spectra create Herwig::CLEOCharmAnalysis CLEOCharm HwLEPAnalysis.so # Schematic overview of an event # (requires the graphviz program 'dot' to produce a plot) create ThePEG::GraphvizPlot Plot GraphvizPlot.so # # Handlers which depend on Fastjet for LEP data # (switched off by default) # # four jet analysis @CREATE_FASTJET@ Herwig::LEPFourJetsAnalysis LEPFourJet HwLEPJetAnalysis.so # general jet analysis @CREATE_FASTJET@ Herwig::LEPJetAnalysis LEPJet HwLEPJetAnalysis.so # # Handlers which depend on HepMC # (switched off by default) # A HepMC dump file (requires --with-hepmc to be set at configure time) @CREATE_HEPMC@ ThePEG::HepMCFile HepMCFile HepMCAnalysis.so ���������������������������������������������������������������������������herwig++-2.6.0.orig/src/defaults/mesons.in����������������������������������������������������������0000644�0001750�0001750�00000066776�11754474774�021257� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # file containing the particle data for the mesons # # # the 1^1S_0 multiplet # create ThePEG::ParticleData pi+ setup pi+ 211 pi+ 0.13957018 2.5283740149914E-17 0 7804.5 3 0 1 1 create ThePEG::ParticleData pi0 setup pi0 111 pi0 0.1349776 7.8616314741036E-9 0 2.51E-5 0 0 1 0 create ThePEG::ParticleData pi- setup pi- -211 pi- 0.13957018 2.5283740149914E-17 0 7804.5 -3 0 1 1 makeanti pi- pi+ create ThePEG::ParticleData eta setup eta 221 eta 0.54751 1.3E-6 1.3E-5 0 0 0 1 0 create ThePEG::ParticleData eta' setup eta' 331 eta' 0.95778 0.000203 0.00203 0 0 0 1 0 create ThePEG::ParticleData eta_c setup eta_c 441 eta_c 2.9804 0.0255 0.255 0 0 0 1 0 create ThePEG::ParticleData eta_b setup eta_b 551 eta_b 9.397 0.0082 0.082 0 0 0 1 0 create ThePEG::ParticleData K+ setup K+ 321 K+ 0.493677 5.3144882844061E-17 0 3713 3 0 1 1 create ThePEG::ParticleData K0 setup K0 311 K0 0.497648 1.e300 0 0 0 0 1 0 create ThePEG::ParticleData K- setup K- -321 K- 0.493677 5.3144882844061E-17 0 3713 -3 0 1 1 makeanti K- K+ create ThePEG::ParticleData Kbar0 setup Kbar0 -311 Kbar0 0.497648 1.e300 0 0 0 0 1 0 makeanti Kbar0 K0 create ThePEG::ParticleData D0 setup D0 421 D0 1.8645 1.6042841463415E-12 0 0.123 0 0 1 0 create ThePEG::ParticleData D+ setup D+ 411 D+ 1.8693 6.3286385503528E-13 0 0.3118 3 0 1 0 create ThePEG::ParticleData Dbar0 setup Dbar0 -421 Dbar0 1.8645 1.6042841463415E-12 0 0.123 0 0 1 0 makeanti Dbar0 D0 create ThePEG::ParticleData D- setup D- -411 D- 1.8693 6.3286385503528E-13 0 0.3118 -3 0 1 0 makeanti D- D+ create ThePEG::ParticleData D_s+ setup D_s+ 431 D_s+ 1.9682 1.315513E-12 0 0.15 3 0 1 0 create ThePEG::ParticleData D_s- setup D_s- -431 D_s- 1.9682 1.315513E-12 0 0.15 -3 0 1 0 makeanti D_s- D_s+ create ThePEG::MixedParticleData B0 setup B0 511 B0 5.2794 4.2897163043478E-13 0 0.46 0 0 1 0 newdef B0:DeltaM 3.337134e-13*GeV newdef B0:DeltaGamma 0.*GeV newdef B0:PQMagnitude 1. newdef B0:PQPhase 1. newdef B0:ZMagnitude 0. newdef B0:ZPhase 0. create ThePEG::ParticleData B+ setup B+ 521 B+ 5.279 3.9386616766467E-13 0 0.501 3 0 1 0 create ThePEG::MixedParticleData Bbar0 setup Bbar0 -511 Bbar0 5.2794 4.2897163043478E-13 0 0.46 0 0 1 0 newdef Bbar0:DeltaM 3.337134e-13*GeV newdef Bbar0:DeltaGamma 0.*GeV newdef Bbar0:PQMagnitude 1. newdef Bbar0:PQPhase 1. newdef Bbar0:ZMagnitude 0. newdef Bbar0:ZPhase 0. makeanti Bbar0 B0 newdef Bbar0:Synchronized 0 create ThePEG::ParticleData B- setup B- -521 B- 5.279 3.9386616766467E-13 0 0.501 -3 0 1 0 makeanti B- B+ newdef B-:Synchronized 0 create ThePEG::MixedParticleData B_s0 setup B_s0 531 B_s0 5.3675 4.5051815068493E-13 0 0.438 0 0 1 0 newdef B_s0:DeltaM 1.169642e-11*GeV newdef B_s0:DeltaGamma 6.676243e-14*GeV newdef B_s0:PQMagnitude 1. newdef B_s0:PQPhase 1. newdef B_s0:ZMagnitude 0. newdef B_s0:ZPhase 0. create ThePEG::MixedParticleData B_sbar0 setup B_sbar0 -531 B_sbar0 5.3675 4.5051815068493E-13 0 0.438 0 0 1 0 newdef B_sbar0:DeltaM 1.169642e-11*GeV newdef B_sbar0:DeltaGamma 6.676243e-14*GeV newdef B_sbar0:PQMagnitude 1. newdef B_sbar0:PQPhase 1. newdef B_sbar0:ZMagnitude 0. newdef B_sbar0:ZPhase 0. makeanti B_sbar0 B_s0 newdef B_sbar0:Synchronized 0 create ThePEG::ParticleData B_c+ setup B_c+ 541 B_c+ 6.286 1.4299054347826E-12 0 0.138 3 0 1 0 create ThePEG::ParticleData B_c- setup B_c- -541 B_c- 6.286 1.4299054347826E-12 0 0.138 -3 0 1 0 makeanti B_c- B_c+ # # the 1^3S_1 multiplet # create ThePEG::ParticleData rho+ setup rho+ 213 rho+ 0.7755 0.1494 0.45 0 3 0 3 0 newdef rho+:WidthLoCut 0.4 newdef rho+:WidthUpCut 0.5 create ThePEG::ParticleData rho0 setup rho0 113 rho0 0.7755 0.1494 0.45 0 0 0 3 0 newdef rho0:WidthLoCut 0.4 newdef rho0:WidthUpCut 0.5 create ThePEG::ParticleData rho- setup rho- -213 rho- 0.7755 0.1494 0.45 0 -3 0 3 0 makeanti rho- rho+ newdef rho-:WidthLoCut 0.4 newdef rho-:WidthUpCut 0.5 create ThePEG::ParticleData omega setup omega 223 omega 0.78265 0.00849 0.0849 0 0 0 3 0 create ThePEG::ParticleData phi setup phi 333 phi 1.01946 0.00426 0.0363 0 0 0 3 0 newdef phi:WidthLoCut 0.03 newdef phi:WidthUpCut 0.0426 create ThePEG::ParticleData Jpsi setup Jpsi 443 Jpsi 3.096916 9.34E-5 0.000934 0 0 0 3 0 create ThePEG::ParticleData Upsilon setup Upsilon 553 Upsilon 9.4603 5.4E-5 0.00054 0 0 0 3 0 create ThePEG::ParticleData K*+ setup K*+ 323 K*+ 0.89166 0.0508 0.379 0 3 0 3 0 newdef K*+:WidthLoCut 0.25 newdef K*+:WidthUpCut 0.508 create ThePEG::ParticleData K*0 setup K*0 313 K*0 0.896 0.0503 0.3765 0 0 0 3 0 newdef K*0:WidthLoCut 0.25 newdef K*0:WidthUpCut 0.503 create ThePEG::ParticleData K*- setup K*- -323 K*- 0.89166 0.0508 0.379 0 -3 0 3 0 makeanti K*- K*+ newdef K*-:WidthLoCut 0.25 newdef K*-:WidthUpCut 0.508 create ThePEG::ParticleData K*bar0 setup K*bar0 -313 K*bar0 0.896 0.0503 0.3765 0 0 0 3 0 makeanti K*bar0 K*0 newdef K*bar0:WidthLoCut 0.25 newdef K*bar0:WidthUpCut 0.503 create ThePEG::ParticleData D*0 setup D*0 423 D*0 2.0067 6.8E-5 0.00068 0 0 0 3 0 create ThePEG::ParticleData D*+ setup D*+ 413 D*+ 2.01 9.6E-5 0.00096 0 3 0 3 0 create ThePEG::ParticleData D*bar0 setup D*bar0 -423 D*bar0 2.0067 6.8E-5 0.00068 0 0 0 3 0 makeanti D*bar0 D*0 create ThePEG::ParticleData D*- setup D*- -413 D*- 2.01 9.6E-5 0.00096 0 -3 0 3 0 makeanti D*- D*+ create ThePEG::ParticleData D_s*+ setup D_s*+ 433 D_s*+ 2.112 4.4E-5 0.00044 0 3 0 3 0 create ThePEG::ParticleData D_s*- setup D_s*- -433 D_s*- 2.112 4.4E-5 0.00044 0 -3 0 3 0 makeanti D_s*- D_s*+ create ThePEG::ParticleData B*0 setup B*0 513 B*0 5.325 2.4E-7 2.4E-6 0 0 0 3 0 create ThePEG::ParticleData B*+ setup B*+ 523 B*+ 5.325 7.8E-7 7.8E-6 0 3 0 3 0 create ThePEG::ParticleData B*bar0 setup B*bar0 -513 B*bar0 5.325 2.4E-7 2.4E-6 0 0 0 3 0 makeanti B*bar0 B*0 create ThePEG::ParticleData B*- setup B*- -523 B*- 5.325 7.8E-7 7.8E-6 0 -3 0 3 0 makeanti B*- B*+ create ThePEG::ParticleData B_s*0 setup B_s*0 533 B_s*0 5.4128 1.5E-7 1.5E-6 0 0 0 3 0 create ThePEG::ParticleData B_s*bar0 setup B_s*bar0 -533 B_s*bar0 5.4128 1.5E-7 1.5E-6 0 0 0 3 0 makeanti B_s*bar0 B_s*0 create ThePEG::ParticleData B_c*+ setup B_c*+ 543 B_c*+ 6.321 8.0E-8 8.0E-7 0 3 0 3 0 create ThePEG::ParticleData B_c*- setup B_c*- -543 B_c*- 6.321 8.0E-8 8.0E-7 0 -3 0 3 0 makeanti B_c*- B_c*+ # # the 1^1P_1 multiplet # create ThePEG::ParticleData b_1+ setup b_1+ 10213 b_1+ 1.2295 0.142 0.505 0 3 0 3 0 newdef b_1+:WidthLoCut 0.3 newdef b_1+:WidthUpCut 0.71 create ThePEG::ParticleData b_10 setup b_10 10113 b_10 1.2295 0.142 0.505 0 0 0 3 0 newdef b_10:WidthLoCut 0.3 newdef b_10:WidthUpCut 0.71 create ThePEG::ParticleData b_1- setup b_1- -10213 b_1- 1.2295 0.142 0.505 0 -3 0 3 0 makeanti b_1- b_1+ newdef b_1-:WidthLoCut 0.3 newdef b_1-:WidthUpCut 0.71 create ThePEG::ParticleData h_1 setup h_1 10223 h_1 1.17 0.36 0.36 0 0 0 3 0 create ThePEG::ParticleData h'_1 setup h'_1 10333 h'_1 1.386 0.091 0.182 0 0 0 3 0 create ThePEG::ParticleData h_c setup h_c 10443 h_c 3.52593 0.0009 0.009 0 0 0 3 0 create ThePEG::ParticleData h_b setup h_b 10553 h_b 9.873 8.94E-5 0.000894 0 0 0 3 0 create ThePEG::ParticleData K_1+ setup K_1+ 10323 K_1+ 1.272 0.09 0.18 0 3 0 3 0 newdef K_1+:VariableRatio 1 create ThePEG::ParticleData K_10 setup K_10 10313 K_10 1.272 0.09 0.18 0 0 0 3 0 newdef K_10:VariableRatio 1 create ThePEG::ParticleData K_1- setup K_1- -10323 K_1- 1.272 0.09 0.18 0 -3 0 3 0 makeanti K_1- K_1+ newdef K_1-:VariableRatio 1 create ThePEG::ParticleData K_1bar0 setup K_1bar0 -10313 K_1bar0 1.272 0.09 0.18 0 0 0 3 0 makeanti K_1bar0 K_10 newdef K_1bar0:VariableRatio 1 create ThePEG::ParticleData D_10 setup D_10 10423 D_10 2.4223 0.0204 0.102 0 0 0 3 0 create ThePEG::ParticleData D_1+ setup D_1+ 10413 D_1+ 2.4234 0.025 0.125 0 3 0 3 0 create ThePEG::ParticleData D_1bar0 setup D_1bar0 -10423 D_1bar0 2.4223 0.0204 0.102 0 0 0 3 0 makeanti D_1bar0 D_10 create ThePEG::ParticleData D_1- setup D_1- -10413 D_1- 2.4234 0.025 0.125 0 -3 0 3 0 makeanti D_1- D_1+ create ThePEG::ParticleData D_s1+ setup D_s1+ 10433 D_s1+ 2.4589 3.82E-5 0.000382 0 3 0 3 0 create ThePEG::ParticleData D_s1- setup D_s1- -10433 D_s1- 2.4589 3.82E-5 0.000382 0 -3 0 3 0 makeanti D_s1- D_s1+ create ThePEG::ParticleData B_10 setup B_10 10513 B_10 5.7206 0.01 0.1 0 0 0 3 0 create ThePEG::ParticleData B_1+ setup B_1+ 10523 B_1+ 5.7206 0.01 0.1 0 3 0 3 0 create ThePEG::ParticleData B_1bar0 setup B_1bar0 -10513 B_1bar0 5.7206 0.01 0.1 0 0 0 3 0 makeanti B_1bar0 B_10 create ThePEG::ParticleData B_1- setup B_1- -10523 B_1- 5.7206 0.01 0.1 0 -3 0 3 0 makeanti B_1- B_1+ create ThePEG::ParticleData B_s10 setup B_s10 10533 B_s10 5.8294 0.0003 0.003 0 0 0 3 0 create ThePEG::ParticleData B_s1bar0 setup B_s1bar0 -10533 B_s1bar0 5.8294 0.0003 0.003 0 0 0 3 0 makeanti B_s1bar0 B_s10 create ThePEG::ParticleData B_c1+ setup B_c1+ 10543 B_c1+ 6.743 7.3E-5 0.00073 0 3 0 3 0 create ThePEG::ParticleData B_c1- setup B_c1- -10543 B_c1- 6.743 7.3E-5 0.00073 0 -3 0 3 0 makeanti B_c1- B_c1+ # # the 1^3P_0 multiplet # create ThePEG::ParticleData a'_0+ setup a'_0+ 10211 a'_0+ 1.474 0.265 0.265 0 3 0 1 0 create ThePEG::ParticleData a'_00 setup a'_00 10111 a'_00 1.474 0.265 0.265 0 0 0 1 0 create ThePEG::ParticleData a'_0- setup a'_0- -10211 a'_0- 1.474 0.265 0.265 0 -3 0 1 0 makeanti a'_0- a'_0+ create ThePEG::ParticleData f'_0 setup f'_0 10221 f'_0 1.395 0.275 0.275 0 0 0 1 0 create ThePEG::ParticleData f_0(1710) setup f_0(1710) 10331 f_0(1710) 1.718 0.137 0.411 0 0 0 1 0 create ThePEG::ParticleData chi_c0 setup chi_c0 10441 chi_c0 3.41476 0.0104 0.104 0 0 0 1 0 create ThePEG::ParticleData chi_b0 setup chi_b0 10551 chi_b0 9.85944 0.000817 0.00817 0 0 0 1 0 create ThePEG::ParticleData K*_0+ setup K*_0+ 10321 K*_0+ 1.414 0.29 0.82 0 3 0 1 0 newdef K*_0+:WidthLoCut 0.77 newdef K*_0+:WidthUpCut 0.87 create ThePEG::ParticleData K*_00 setup K*_00 10311 K*_00 1.414 0.29 0.82 0 0 0 1 0 newdef K*_00:WidthLoCut 0.77 newdef K*_00:WidthUpCut 0.87 create ThePEG::ParticleData K*_0- setup K*_0- -10321 K*_0- 1.414 0.29 0.82 0 -3 0 1 0 makeanti K*_0- K*_0+ newdef K*_0-:WidthLoCut 0.77 newdef K*_0-:WidthUpCut 0.87 create ThePEG::ParticleData K*_0bar0 setup K*_0bar0 -10311 K*_0bar0 1.414 0.29 0.82 0 0 0 1 0 makeanti K*_0bar0 K*_00 newdef K*_0bar0:WidthLoCut 0.77 newdef K*_0bar0:WidthUpCut 0.87 create ThePEG::ParticleData D_0*+ setup D_0*+ 10411 D_0*+ 2.369 0.274 0.548 0 3 0 1 0 newdef D_0*+:WidthLoCut 0.274 newdef D_0*+:WidthUpCut 0.822 create ThePEG::ParticleData D_0*0 setup D_0*0 10421 D_0*0 2.369 0.274 0.548 0 0 0 1 0 newdef D_0*0:WidthLoCut 0.274 newdef D_0*0:WidthUpCut 0.822 create ThePEG::ParticleData D_0*- setup D_0*- -10411 D_0*- 2.369 0.274 0.548 0 -3 0 1 0 makeanti D_0*- D_0*+ newdef D_0*-:WidthLoCut 0.274 newdef D_0*-:WidthUpCut 0.822 create ThePEG::ParticleData D_0*bar0 setup D_0*bar0 -10421 D_0*bar0 2.369 0.274 0.548 0 0 0 1 0 makeanti D_0*bar0 D_0*0 newdef D_0*bar0:WidthLoCut 0.274 newdef D_0*bar0:WidthUpCut 0.822 create ThePEG::ParticleData D_s0+ setup D_s0+ 10431 D_s0+ 2.3173 2.32E-5 0.000232 0 3 0 1 0 create ThePEG::ParticleData D_s0- setup D_s0- -10431 D_s0- 2.3173 2.32E-5 0.000232 0 -3 0 1 0 makeanti D_s0- D_s0+ create ThePEG::ParticleData B*_00 setup B*_00 10511 B*_00 5.726 0.14 0.28 0 0 0 1 0 create ThePEG::ParticleData B*_0+ setup B*_0+ 10521 B*_0+ 5.726 0.14 0.28 0 3 0 1 0 create ThePEG::ParticleData B*_0bar0 setup B*_0bar0 -10511 B*_0bar0 5.726 0.14 0.28 0 0 0 1 0 makeanti B*_0bar0 B*_00 create ThePEG::ParticleData B*_0- setup B*_0- -10521 B*_0- 5.726 0.14 0.28 0 -3 0 1 0 makeanti B*_0- B*_0+ create ThePEG::ParticleData B*_s00 setup B*_s00 10531 B*_s00 5.818 0.07 0.0875 0 0 0 1 0 newdef B*_s00:WidthLoCut 0.035 newdef B*_s00:WidthUpCut 0.14 create ThePEG::ParticleData B*_s0bar0 setup B*_s0bar0 -10531 B*_s0bar0 5.818 0.07 0.0875 0 0 0 1 0 makeanti B*_s0bar0 B*_s00 newdef B*_s0bar0:WidthLoCut 0.035 newdef B*_s0bar0:WidthUpCut 0.14 create ThePEG::ParticleData B*_c0+ setup B*_c0+ 10541 B*_c0+ 6.727 5.5E-5 0.00055 0 3 0 1 0 create ThePEG::ParticleData B*_c0- setup B*_c0- -10541 B*_c0- 6.727 5.5E-5 0.00055 0 -3 0 1 0 makeanti B*_c0- B*_c0+ # # the 1^3P_1 multiplet # create ThePEG::ParticleData a_1+ setup a_1+ 20213 a_1+ 1.24 0.56 0.56 0 3 0 3 0 newdef a_1+:VariableRatio 1 create ThePEG::ParticleData a_10 setup a_10 20113 a_10 1.24 0.56 0.56 0 0 0 3 0 newdef a_10:VariableRatio 1 create ThePEG::ParticleData a_1- setup a_1- -20213 a_1- 1.24 0.56 0.56 0 -3 0 3 0 makeanti a_1- a_1+ newdef a_1-:VariableRatio 1 create ThePEG::ParticleData f_1 setup f_1 20223 f_1 1.2818 0.0242 0.242 0 0 0 3 0 create ThePEG::ParticleData f'_1 setup f'_1 20333 f'_1 1.4263 0.0549 0.41175 0 0 0 3 0 newdef f'_1:WidthLoCut 0.2745 newdef f'_1:WidthUpCut 0.549 create ThePEG::ParticleData chi_c1 setup chi_c1 20443 chi_c1 3.51066 0.00089 0.0089 0 0 0 3 0 create ThePEG::ParticleData chi_b1 setup chi_b1 20553 chi_b1 9.89278 7.1E-5 0.00071 0 0 0 3 0 create ThePEG::ParticleData K'_1+ setup K'_1+ 20323 K'_1+ 1.402 0.174 0.348 0 3 0 3 0 newdef K'_1+:VariableRatio 1 create ThePEG::ParticleData K'_10 setup K'_10 20313 K'_10 1.402 0.174 0.348 0 0 0 3 0 newdef K'_10:VariableRatio 1 create ThePEG::ParticleData K'_1- setup K'_1- -20323 K'_1- 1.402 0.174 0.348 0 -3 0 3 0 makeanti K'_1- K'_1+ newdef K'_1-:VariableRatio 1 create ThePEG::ParticleData K'_1bar0 setup K'_1bar0 -20313 K'_1bar0 1.402 0.174 0.348 0 0 0 3 0 makeanti K'_1bar0 K'_10 newdef K'_1bar0:VariableRatio 1 create ThePEG::ParticleData D'_10 setup D'_10 20423 D'_10 2.438 0.329 0.454 0 0 0 3 0 newdef D'_10:WidthLoCut 0.25 newdef D'_10:WidthUpCut 0.658 create ThePEG::ParticleData D'_1+ setup D'_1+ 20413 D'_1+ 2.438 0.329 0.454 0 3 0 3 0 newdef D'_1+:WidthLoCut 0.25 newdef D'_1+:WidthUpCut 0.658 create ThePEG::ParticleData D'_1bar0 setup D'_1bar0 -20423 D'_1bar0 2.438 0.329 0.454 0 0 0 3 0 makeanti D'_1bar0 D'_10 newdef D'_1bar0:WidthLoCut 0.25 newdef D'_1bar0:WidthUpCut 0.658 create ThePEG::ParticleData D'_1- setup D'_1- -20413 D'_1- 2.438 0.329 0.454 0 -3 0 3 0 makeanti D'_1- D'_1+ newdef D'_1-:WidthLoCut 0.25 newdef D'_1-:WidthUpCut 0.658 create ThePEG::ParticleData D'_s1+ setup D'_s1+ 20433 D'_s1+ 2.53535 0.0013 0.013 0 3 0 3 0 create ThePEG::ParticleData D'_s1- setup D'_s1- -20433 D'_s1- 2.53535 0.0013 0.013 0 -3 0 3 0 makeanti D'_s1- D'_s1+ create ThePEG::ParticleData B'_10 setup B'_10 20513 B'_10 5.762 0.13 0.26 0 0 0 3 0 create ThePEG::ParticleData B'_1+ setup B'_1+ 20523 B'_1+ 5.762 0.13 0.26 0 3 0 3 0 create ThePEG::ParticleData B'_1bar0 setup B'_1bar0 -20513 B'_1bar0 5.762 0.13 0.26 0 0 0 3 0 makeanti B'_1bar0 B'_10 create ThePEG::ParticleData B'_1- setup B'_1- -20523 B'_1- 5.762 0.13 0.26 0 -3 0 3 0 makeanti B'_1- B'_1+ create ThePEG::ParticleData B'_s10 setup B'_s10 20533 B'_s10 5.856 0.06 0.075 0 0 0 3 0 newdef B'_s10:WidthLoCut 0.03 newdef B'_s10:WidthUpCut 0.12 create ThePEG::ParticleData B'_s1bar0 setup B'_s1bar0 -20533 B'_s1bar0 5.856 0.06 0.075 0 0 0 3 0 makeanti B'_s1bar0 B'_s10 newdef B'_s1bar0:WidthLoCut 0.03 newdef B'_s1bar0:WidthUpCut 0.12 create ThePEG::ParticleData B'_c1+ setup B'_c1+ 20543 B'_c1+ 6.765 9.1E-5 0.00091 0 3 0 3 0 create ThePEG::ParticleData B'_c1- setup B'_c1- -20543 B'_c1- 6.765 9.1E-5 0.00091 0 -3 0 3 0 makeanti B'_c1- B'_c1+ # # the 1^3P_2 multiplet # create ThePEG::ParticleData a_2+ setup a_2+ 215 a_2+ 1.3183 0.107 0.214 0 3 0 5 0 create ThePEG::ParticleData a_20 setup a_20 115 a_20 1.3183 0.107 0.214 0 0 0 5 0 create ThePEG::ParticleData a_2- setup a_2- -215 a_2- 1.3183 0.107 0.214 0 -3 0 5 0 makeanti a_2- a_2+ create ThePEG::ParticleData f_2 setup f_2 225 f_2 1.2754 0.1852 0.1801 0 0 0 5 0 newdef f_2:WidthLoCut 0.175 newdef f_2:WidthUpCut 0.1852 create ThePEG::ParticleData f'_2 setup f'_2 335 f'_2 1.525 0.073 0.365 0 0 0 5 0 create ThePEG::ParticleData chi_c2 setup chi_c2 445 chi_c2 3.5562 0.00206 0.0206 0 0 0 5 0 create ThePEG::ParticleData chi_b2 setup chi_b2 555 chi_b2 9.91221 0.00017 0.0017 0 0 0 5 0 create ThePEG::ParticleData K*_2+ setup K*_2+ 325 K*_2+ 1.4256 0.0985 0.197 0 3 0 5 0 create ThePEG::ParticleData K*_20 setup K*_20 315 K*_20 1.4324 0.109 0.218 0 0 0 5 0 create ThePEG::ParticleData K*_2- setup K*_2- -325 K*_2- 1.4256 0.0985 0.197 0 -3 0 5 0 makeanti K*_2- K*_2+ create ThePEG::ParticleData K*_2bar0 setup K*_2bar0 -315 K*_2bar0 1.4324 0.109 0.218 0 0 0 5 0 makeanti K*_2bar0 K*_20 create ThePEG::ParticleData D*_20 setup D*_20 425 D*_20 2.4611 0.043 0.215 0 0 0 5 0 create ThePEG::ParticleData D*_2+ setup D*_2+ 415 D*_2+ 2.459 0.029 0.29 0 3 0 5 0 create ThePEG::ParticleData D*_2bar0 setup D*_2bar0 -425 D*_2bar0 2.4611 0.043 0.215 0 0 0 5 0 makeanti D*_2bar0 D*_20 create ThePEG::ParticleData D*_2- setup D*_2- -415 D*_2- 2.459 0.029 0.29 0 -3 0 5 0 makeanti D*_2- D*_2+ create ThePEG::ParticleData D_s2+ setup D_s2+ 435 D_s2+ 2.5735 0.015 0.105 0 3 0 5 0 newdef D_s2+:WidthLoCut 0.06 newdef D_s2+:WidthUpCut 0.15 create ThePEG::ParticleData D_s2- setup D_s2- -435 D_s2- 2.5735 0.015 0.105 0 -3 0 5 0 makeanti D_s2- D_s2+ newdef D_s2-:WidthLoCut 0.06 newdef D_s2-:WidthUpCut 0.15 create ThePEG::ParticleData B_20 setup B_20 515 B_20 5.7468 0.01 0.1 0 0 0 5 0 create ThePEG::ParticleData B_2+ setup B_2+ 525 B_2+ 5.7468 0.01 0.1 0 3 0 5 0 create ThePEG::ParticleData B_2bar0 setup B_2bar0 -515 B_2bar0 5.7468 0.01 0.1 0 0 0 5 0 makeanti B_2bar0 B_20 create ThePEG::ParticleData B_2- setup B_2- -525 B_2- 5.7468 0.01 0.1 0 -3 0 5 0 makeanti B_2- B_2+ create ThePEG::ParticleData B_s20 setup B_s20 535 B_s20 5.8396 0.0007 0.007 0 0 0 5 0 create ThePEG::ParticleData B_s2bar0 setup B_s2bar0 -535 B_s2bar0 5.8396 0.0007 0.007 0 0 0 5 0 makeanti B_s2bar0 B_s20 create ThePEG::ParticleData B_c2+ setup B_c2+ 545 B_c2+ 6.783 8.3E-5 0.00083 0 3 0 5 0 create ThePEG::ParticleData B_c2- setup B_c2- -545 B_c2- 6.783 8.3E-5 0.00083 0 -3 0 5 0 makeanti B_c2- B_c2+ # # the 1^1D_2 multiplet # create ThePEG::ParticleData pi_2+ setup pi_2+ 10215 pi_2+ 1.6724 0.259 0.259 0 3 0 5 0 create ThePEG::ParticleData pi_20 setup pi_20 10115 pi_20 1.6724 0.259 0.259 0 0 0 5 0 create ThePEG::ParticleData pi_2- setup pi_2- -10215 pi_2- 1.6724 0.259 0.259 0 -3 0 5 0 makeanti pi_2- pi_2+ create ThePEG::ParticleData eta_2 setup eta_2 10225 eta_2 1.617 0.181 0.362 0 0 0 5 0 create ThePEG::ParticleData eta'_2 setup eta'_2 10335 eta'_2 1.842 0.225 0.225 0 0 0 5 0 create ThePEG::ParticleData eta_b2 setup eta_b2 10555 eta_b2 10.158 3.2E-5 0.00032 0 0 0 5 0 create ThePEG::ParticleData K_2(1770)+ setup K_2(1770)+ 10325 K_2(1770)+ 1.773 0.186 0.558 0 3 0 5 0 create ThePEG::ParticleData K_2(1770)0 setup K_2(1770)0 10315 K_2(1770)0 1.773 0.186 0.558 0 0 0 5 0 create ThePEG::ParticleData K_2(1770)- setup K_2(1770)- -10325 K_2(1770)- 1.773 0.186 0.558 0 -3 0 5 0 makeanti K_2(1770)- K_2(1770)+ create ThePEG::ParticleData K_2(1770)bar0 setup K_2(1770)bar0 -10315 K_2(1770)bar0 1.773 0.186 0.558 0 0 0 5 0 makeanti K_2(1770)bar0 K_2(1770)0 # # the 1^3D_1 multiplet # create ThePEG::ParticleData rho''+ setup rho''+ 30213 rho''+ 1.72 0.25 0.5 0 3 0 3 0 create ThePEG::ParticleData rho''0 setup rho''0 30113 rho''0 1.72 0.25 0.5 0 0 0 3 0 create ThePEG::ParticleData rho''- setup rho''- -30213 rho''- 1.72 0.25 0.5 0 -3 0 3 0 makeanti rho''- rho''+ create ThePEG::ParticleData omega'' setup omega'' 30223 omega'' 1.67 0.315 0.63 0 0 0 3 0 create ThePEG::ParticleData psi(3770) setup psi(3770) 30443 psi(3770) 3.7711 0.023 0.1305 0 0 0 3 0 newdef psi(3770):WidthLoCut 0.031 newdef psi(3770):WidthUpCut 0.23 create ThePEG::ParticleData Upsilon_1(1D) setup Upsilon_1(1D) 30553 Upsilon_1(1D) 10.1551 3.56E-5 0.000356 0 0 0 3 0 create ThePEG::ParticleData K''*+ setup K''*+ 30323 K''*+ 1.717 0.322 0.322 0 3 0 3 0 create ThePEG::ParticleData K''*0 setup K''*0 30313 K''*0 1.717 0.322 0.322 0 0 0 3 0 create ThePEG::ParticleData K''*- setup K''*- -30323 K''*- 1.717 0.322 0.322 0 -3 0 3 0 makeanti K''*- K''*+ create ThePEG::ParticleData K''*bar0 setup K''*bar0 -30313 K''*bar0 1.717 0.322 0.322 0 0 0 3 0 makeanti K''*bar0 K''*0 # # the 1^3D_2 multiplet # create ThePEG::ParticleData Upsilon_2(1D) setup Upsilon_2(1D) 20555 Upsilon_2(1D) 10.1611 2.8E-5 0.00028 0 0 0 5 0 create ThePEG::ParticleData K_2(1820)+ setup K_2(1820)+ 20325 K_2(1820)+ 1.816 0.276 0.552 0 3 0 5 0 create ThePEG::ParticleData K_2(1820)0 setup K_2(1820)0 20315 K_2(1820)0 1.816 0.276 0.552 0 0 0 5 0 create ThePEG::ParticleData K_2(1820)- setup K_2(1820)- -20325 K_2(1820)- 1.816 0.276 0.552 0 -3 0 5 0 makeanti K_2(1820)- K_2(1820)+ create ThePEG::ParticleData K_2(1820)bar0 setup K_2(1820)bar0 -20315 K_2(1820)bar0 1.816 0.276 0.552 0 0 0 5 0 makeanti K_2(1820)bar0 K_2(1820)0 # # the 1^3D_3 multiplet # create ThePEG::ParticleData rho_3+ setup rho_3+ 217 rho_3+ 1.6888 0.161 0.592 0 3 0 7 0 newdef rho_3+:WidthLoCut 0.54 newdef rho_3+:WidthUpCut 0.644 create ThePEG::ParticleData rho_30 setup rho_30 117 rho_30 1.6888 0.161 0.592 0 0 0 7 0 newdef rho_30:WidthLoCut 0.54 newdef rho_30:WidthUpCut 0.644 create ThePEG::ParticleData rho_3- setup rho_3- -217 rho_3- 1.6888 0.161 0.592 0 -3 0 7 0 makeanti rho_3- rho_3+ newdef rho_3-:WidthLoCut 0.54 newdef rho_3-:WidthUpCut 0.644 create ThePEG::ParticleData omega_3 setup omega_3 227 omega_3 1.667 0.168 0.336 0 0 0 7 0 create ThePEG::ParticleData phi_3 setup phi_3 337 phi_3 1.854 0.087 0.435 0 0 0 7 0 create ThePEG::ParticleData Upsilon_3(1D) setup Upsilon_3(1D) 557 Upsilon_3(1D) 10.1651 2.55E-5 0.000255 0 0 0 7 0 create ThePEG::ParticleData K_3*+ setup K_3*+ 327 K_3*+ 1.776 0.159 0.477 0 3 0 7 0 create ThePEG::ParticleData K_3*0 setup K_3*0 317 K_3*0 1.776 0.159 0.477 0 0 0 7 0 create ThePEG::ParticleData K_3*- setup K_3*- -327 K_3*- 1.776 0.159 0.477 0 -3 0 7 0 makeanti K_3*- K_3*+ create ThePEG::ParticleData K_3*bar0 setup K_3*bar0 -317 K_3*bar0 1.776 0.159 0.477 0 0 0 7 0 makeanti K_3*bar0 K_3*0 # # the 1^3F_4 multiplet # # # the 2^1S_0 multiplet # create ThePEG::ParticleData pi'+ setup pi'+ 100211 pi'+ 1.3 0.4 0.4 0 3 0 1 0 create ThePEG::ParticleData pi'0 setup pi'0 100111 pi'0 1.3 0.4 0.4 0 0 0 1 0 create ThePEG::ParticleData pi'- setup pi'- -100211 pi'- 1.3 0.4 0.4 0 -3 0 1 0 makeanti pi'- pi'+ create ThePEG::ParticleData eta(1295) setup eta(1295) 100221 eta(1295) 1.294 0.055 0.395 0 0 0 1 0 newdef eta(1295):WidthLoCut 0.24 newdef eta(1295):WidthUpCut 0.55 create ThePEG::ParticleData eta(1475) setup eta(1475) 100331 eta(1475) 1.476 0.087 0.174 0 0 0 1 0 create ThePEG::ParticleData eta_c(2S) setup eta_c(2S) 100441 eta_c(2S) 3.638 0.014 0.14 0 0 0 1 0 create ThePEG::ParticleData eta_b(2S) setup eta_b(2S) 100551 eta_b(2S) 9.996 0.0041 0.041 0 0 0 1 0 create ThePEG::ParticleData K'+ setup K'+ 100321 K'+ 1.46 0.26 0.26 0 3 0 1 0 create ThePEG::ParticleData K'0 setup K'0 100311 K'0 1.46 0.26 0.26 0 0 0 1 0 create ThePEG::ParticleData K'- setup K'- -100321 K'- 1.46 0.26 0.26 0 -3 0 1 0 makeanti K'- K'+ create ThePEG::ParticleData K'bar0 setup K'bar0 -100311 K'bar0 1.46 0.26 0.26 0 0 0 1 0 makeanti K'bar0 K'0 # # the 2^3S_1 multiplet # create ThePEG::ParticleData rho'+ setup rho'+ 100213 rho'+ 1.459 0.147 0.294 0 3 0 3 0 create ThePEG::ParticleData rho'0 setup rho'0 100113 rho'0 1.459 0.147 0.294 0 0 0 3 0 create ThePEG::ParticleData rho'- setup rho'- -100213 rho'- 1.459 0.147 0.294 0 -3 0 3 0 makeanti rho'- rho'+ create ThePEG::ParticleData omega' setup omega' 100223 omega' 1.425 0.215 0.3225 0 0 0 3 0 newdef omega':WidthLoCut 0.215 newdef omega':WidthUpCut 0.43 create ThePEG::ParticleData phi' setup phi' 100333 phi' 1.68 0.15 0.3 0 0 0 3 0 create ThePEG::ParticleData psi(2S) setup psi(2S) 100443 psi(2S) 3.686093 0.000337 0.00337 0 0 0 3 0 create ThePEG::ParticleData Upsilon(2S) setup Upsilon(2S) 100553 Upsilon(2S) 10.02326 3.198E-5 0.0003198 0 0 0 3 0 create ThePEG::ParticleData K'*+ setup K'*+ 100323 K'*+ 1.414 0.232 0.464 0 3 0 3 0 create ThePEG::ParticleData K'*0 setup K'*0 100313 K'*0 1.414 0.232 0.464 0 0 0 3 0 create ThePEG::ParticleData K'*- setup K'*- -100323 K'*- 1.414 0.232 0.464 0 -3 0 3 0 makeanti K'*- K'*+ create ThePEG::ParticleData K'*bar0 setup K'*bar0 -100313 K'*bar0 1.414 0.232 0.464 0 0 0 3 0 makeanti K'*bar0 K'*0 # # the 2^1P_1 multiplet # create ThePEG::ParticleData h_b(2P) setup h_b(2P) 110553 h_b(2P) 10.258 8.0E-5 0.0008 0 0 0 3 0 # # the 2^3P_0 multiplet # create ThePEG::ParticleData chi_b0(2P) setup chi_b0(2P) 110551 chi_b0(2P) 10.2325 0.000887 0.00887 0 0 0 1 0 # # the 2^3P_1 multiplet # create ThePEG::ParticleData chi_b1(2P) setup chi_b1(2P) 120553 chi_b1(2P) 10.25546 7.87E-5 0.000787 0 0 0 3 0 # # the 2^3P_2 multiplet # create ThePEG::ParticleData chi_c2(2P) setup chi_c2(2P) 100445 chi_c2(2P) 3.929 0.029 0.29 0 0 0 5 0 create ThePEG::ParticleData chi_b2(2P) setup chi_b2(2P) 100555 chi_b2(2P) 10.26865 0.0001847 0.001847 0 0 0 5 0 # # the 2^1D_2 multiplet # # # the 2^3D_1 multiplet # create ThePEG::ParticleData Upsilon_1(2D) setup Upsilon_1(2D) 130553 Upsilon_1(2D) 10.435 2.64E-5 0.000264 0 0 0 3 0 # # the 2^3D_2 multiplet # create ThePEG::ParticleData Upsilon_2(2D) setup Upsilon_2(2D) 120555 Upsilon_2(2D) 10.441 2.23E-5 0.000223 0 0 0 5 0 # # the 2^3D_3 multiplet # create ThePEG::ParticleData Upsilon_3(2D) setup Upsilon_3(2D) 100557 Upsilon_3(2D) 10.444 2.02E-5 0.000202 0 0 0 7 0 # # the 3^1S_0 multiplet # create ThePEG::ParticleData eta_b(3S) setup eta_b(3S) 200551 eta_b(3S) 10.337 0.0027 0.027 0 0 0 1 0 # # the 3^3S_1 multiplet # create ThePEG::ParticleData Upsilon(3S) setup Upsilon(3S) 200553 Upsilon(3S) 10.3552 2.032E-5 0.0002032 0 0 0 3 0 # # the 3^1P_1 multiplet # # # the 3^3P_0 multiplet # create ThePEG::ParticleData chi_b0(3P) setup chi_b0(3P) 210551 chi_b0(3P) 10.5007 0.00071 0.0071 0 0 0 1 0 # # the 3^3P_1 multiplet # create ThePEG::ParticleData chi_b1(3P) setup chi_b1(3P) 220553 chi_b1(3P) 10.516 6.6E-5 0.00066 0 0 0 3 0 # # the 3^3P_2 multiplet # create ThePEG::ParticleData chi_b2(3P) setup chi_b2(3P) 200555 chi_b2(3P) 10.5264 0.000146 0.00146 0 0 0 5 0 # # the 4^3S_1 multiplet # create ThePEG::ParticleData Upsilon(4S) setup Upsilon(4S) 300553 Upsilon(4S) 10.5794 0.0205 0.11275 0 0 0 3 0 newdef Upsilon(4S):WidthLoCut 0.0205 newdef Upsilon(4S):WidthUpCut 0.205 # # the 5^3S_1 multiplet # # # The meson which are not part of a multiplet # create ThePEG::ParticleData f_0(1500) setup f_0(1500) 9030221 f_0(1500) 1.507 0.109 0.327 0 0 0 1 0 newdef f_0(1500):VariableRatio 1 create ThePEG::ParticleData sigma setup sigma 9000221 sigma 0.86 0.88 1.155 0 0 0 1 0 newdef sigma:WidthLoCut 0.55 newdef sigma:WidthUpCut 1.76 create ThePEG::ParticleData f_0 setup f_0 9010221 f_0 0.965 0.1635 0.384 0 0 0 1 0 newdef f_0:VariableRatio 1 newdef f_0:WidthLoCut 0.256 newdef f_0:WidthUpCut 0.512 create ThePEG::ParticleData a_00 setup a_00 9000111 a_00 0.999 0.1778 0.4 0 0 0 1 0 newdef a_00:VariableRatio 1 newdef a_00:WidthLoCut 0.24 newdef a_00:WidthUpCut 0.56 create ThePEG::ParticleData a_0+ setup a_0+ 9000211 a_0+ 0.999 0.1778 0.4 0 3 0 1 0 newdef a_0+:VariableRatio 1 newdef a_0+:WidthLoCut 0.24 newdef a_0+:WidthUpCut 0.56 create ThePEG::ParticleData a_0- setup a_0- -9000211 a_0- 0.999 0.1778 0.4 0 -3 0 1 0 makeanti a_0- a_0+ newdef a_0-:VariableRatio 1 newdef a_0-:WidthLoCut 0.24 newdef a_0-:WidthUpCut 0.56 create ThePEG::ParticleData eta(1405) setup eta(1405) 9020221 eta(1405) 1.4098 0.0511 0.38325 0 0 0 1 0 newdef eta(1405):WidthLoCut 0.2555 newdef eta(1405):WidthUpCut 0.511 create ThePEG::ParticleData K_S0 setup K_S0 310 K_S0 0.497648 7.3514250055883E-15 0 26.842 0 0 1 0 create ThePEG::ParticleData K_L0 setup K_L0 130 K_L0 0.497648 1.2871947162427E-17 0 15330 0 0 1 1 create ThePEG::ParticleData kappa0 setup kappa0 9000311 kappa0 0.841 0.618 0.7215 0 0 0 1 0 newdef kappa0:WidthLoCut 0.207 newdef kappa0:WidthUpCut 1.236 create ThePEG::ParticleData kappabar0 setup kappabar0 -9000311 kappabar0 0.841 0.618 0.7215 0 0 0 1 0 makeanti kappabar0 kappa0 newdef kappabar0:WidthLoCut 0.207 newdef kappabar0:WidthUpCut 1.236 create ThePEG::ParticleData kappa- setup kappa- -9000321 kappa- 0.841 0.618 0.7215 0 -3 0 1 0 newdef kappa-:WidthLoCut 0.207 newdef kappa-:WidthUpCut 1.236 create ThePEG::ParticleData kappa+ setup kappa+ 9000321 kappa+ 0.841 0.618 0.7215 0 3 0 1 0 makeanti kappa+ kappa- newdef kappa+:WidthLoCut 0.207 newdef kappa+:WidthUpCut 1.236 ��herwig++-2.6.0.orig/src/herwigopts.ggo��������������������������������������������������������������0000644�0001750�0001750�00000004057�11754474774�020465� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������## args for the gengetopt call in Makefile.am args "--file-name=herwigopts --unamed-opts --long-help" ################################################## purpose "Herwig++ is a multi-purpose Monte-Carlo event generator \ for particle physics. See arXiv:0803.0883 for a detailed manual, \ or arXiv:1101.2599 for a more general description of the physics \ behind MC event generation." usage " (read|run) [OPTIONS]... [FILE]" description "One of the commands 'read' or 'run' is required: read - reads an input file and creates a run file, run - reads a run file and generates events." section "Event generation options" text "" option "numevents" N "Number of events to generate." long optional option "seed" s "The random number generator seed." int optional option "tag" t "A tag to append to the run name." typestr="TAG" string optional default="" option "debug" d "Set the ThePEG debug level." int optional option "debug-fpe" D "Enable floating point exceptions." flag off option "quiet" q "Disable event counter." flag off section "Plugin library options" text "" option "append" l "Append a search path for dynamically loaded libraries." typestr="PATH" string optional multiple option "prepend" L "Prepend a search path for dynamically loaded libraries." typestr="PATH" string optional multiple text "\nUsage: Herwig++ init [OPTIONS]...\n" text " creates a new default repository (not useful for end users).\n" section "Advanced options" option "init" i "Initialization file to read for 'init'." typestr="FILE" string optional default="HerwigDefaults.in" hidden option "repo" r "Repository file to use." typestr="FILE" string optional default="HerwigDefaults.rpo" hidden option "noexitonerror" - "If set, ThePEG will not try to recover from \ failures, but will exit with a non-zero return code." flag off hidden option "resume" - "Try to resume execution from an earlier interrupted run." flag off hidden option "keepid" - "Peserve creation order of objects, \ to allow exactly reproducible runs." flag off hidden ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/herwig-config.in������������������������������������������������������������0000644�0001750�0001750�00000003247�11754474774�020654� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /usr/bin/env bash # @configure_input@ prefix=@prefix@ exec_prefix=@exec_prefix@ datarootdir=@datarootdir@ tmp=$(echo $* | egrep -- '--\<help\>|-\<h\>') if test $# -eq 0 || test -n "$tmp"; then echo "herwig-config: configuration tool for the Herwig++ event generator" echo " http://projects.hepforge.org/herwig/" echo echo "Usage: `basename $0` [Option]" echo "Options:" echo " --help | -h : show this help message" echo " --prefix : show the installation prefix (cf. autoconf)" echo " --datadir : show the path to the directory containing shared data" echo " --libdir : show the path to the directory containing the libraries" echo " --includedir : show the path to the directory containing the headers" echo " --cppflags : show the required CPPFLAGS for building against Herwig++" echo " --ldflags : show the required LDFLAGS for linking against Herwig++" echo " --ldlibs : show the required libraries for linking against Herwig++" echo fi tmp=$(echo "$*" | egrep -- '--\<prefix\>') test -n "$tmp" && echo $prefix tmp=$(echo "$*" | egrep -- '--\<datadir\>') test -n "$tmp" && echo @datadir@/@PACKAGE_TARNAME@ tmp=$(echo "$*" | egrep -- '--\<libdir\>') test -n "$tmp" && echo @libdir@/@PACKAGE_TARNAME@ tmp=$(echo "$*" | egrep -- '--\<includedir\>') test -n "$tmp" && echo @includedir@ tmp=$(echo "$*" | egrep -- '--\<cppflags\>') test -n "$tmp" && echo -I@includedir@ @THEPEGINCLUDE@ @BOOSTINCLUDE@ @GSLINCLUDE@ tmp=$(echo "$*" | egrep -- '--\<ldflags\>') test -n "$tmp" && echo @THEPEGLDFLAGS@ tmp=$(echo "$*" | egrep -- '--\<ldlibs\>') test -n "$tmp" && echo @THEPEGLIB@ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/ADD.model�������������������������������������������������������������������0000644�0001750�0001750�00000007132�11754474774�017203� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Common setup for Randall-Sundrum models # # See LHC-ADD.in or ILC-ADD.in for example usage # # This file does not contain anything that # users need to touch. User settings are in # ???-ADD.in ################################################### # library library HwADDModel.so ################################################### # # Particle Data object for the Graviton # ################################################### cd /Herwig/Particles create /ThePEG/ParticleData Graviton setup Graviton 39 Graviton 0.0 0.0 0.0 0.0 0 0 5 0 create Herwig::GravitonMassGenerator /Herwig/Masses/GravitonMassGenerator set /Herwig/Masses/GravitonMassGenerator:Particle Graviton set Graviton:Mass_generator /Herwig/Masses/GravitonMassGenerator set Graviton:WidthLoCut 0. set Graviton:WidthUpCut 1e10 # ensure mass isn't messed with by the shower insert /Herwig/Shower/KinematicsReconstructor:NoRescale 0 /Herwig/Particles/Graviton ################################################### # # Main directory and model object # ################################################### mkdir /Herwig/NewPhysics/ADD cd /Herwig/NewPhysics/ADD create Herwig::ADDModel Model # SM couplings set Model:QCD/RunningAlphaS /Herwig/AlphaS set Model:EW/RunningAlphaEM /Herwig/AlphaEM set Model:EW/CKM /Herwig/CKM set Model:RunningMass /Herwig/RunningMass ################################################### # # Vertices # ################################################### # create ADD model vertices mkdir /Herwig/Vertices/ADD cd /Herwig/Vertices/ADD library HwADDModel.so create Herwig::ADDModelFFGRVertex ADD_FFGRVertex create Herwig::ADDModelFFGGRVertex ADD_FFGGRVertex create Herwig::ADDModelFFWGRVertex ADD_FFWGRVertex create Herwig::ADDModelSSGRVertex ADD_SSGRVertex create Herwig::ADDModelVVGRVertex ADD_VVGRVertex create Herwig::ADDModelGGGGRVertex ADD_WWWGRVertex create Herwig::ADDModelGGGGRVertex ADD_GGGGRVertex cd /Herwig/NewPhysics/ADD # 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/HPP /Herwig/Vertices/HPPVertex # ADD model vertices set Model:Vertex/FFGR /Herwig/Vertices/ADD/ADD_FFGRVertex set Model:Vertex/FFGGR /Herwig/Vertices/ADD/ADD_FFGGRVertex set Model:Vertex/FFWGR /Herwig/Vertices/ADD/ADD_FFWGRVertex set Model:Vertex/SSGR /Herwig/Vertices/ADD/ADD_SSGRVertex set Model:Vertex/VVGR /Herwig/Vertices/ADD/ADD_VVGRVertex set Model:Vertex/WWWGR /Herwig/Vertices/ADD/ADD_WWWGRVertex set Model:Vertex/GGGGR /Herwig/Vertices/ADD/ADD_GGGGRVertex ################################################### # # Set up spin correlation Decayers # ################################################### cd /Herwig/NewPhysics set TwoBodyDC:CreateDecayModes Yes ################################################### # Set up the model framework ################################################### set ADD/Model:ModelGenerator NewModel ################################################### # # Choose ADD over SM # ################################################### cd /Herwig/Generators set LEPGenerator:StandardModelParameters /Herwig/NewPhysics/ADD/Model set LHCGenerator:StandardModelParameters /Herwig/NewPhysics/ADD/Model ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/TVT-Powheg.in���������������������������������������������������������������0000644�0001750�0001750�00000007653�11754474774�020035� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator based on Tevatron parameters # using NLO matrix elements and matching in # the Powheg formalism # usage: Herwig++ read TVT.in # # Since most parameters are identical to LHC, # we use the default LHCGenerator and adapt only # for the differences ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 ################################################## # Need to use an NLO PDF ################################################## set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO ################################################## # and strong coupling ################################################## create Herwig::O2AlphaS O2AlphaS set /Herwig/Model:QCD/RunningAlphaS O2AlphaS ################################################## # Setup the POWHEG shower ################################################## cd /Herwig/Shower set Evolver:HardEmissionMode POWHEG ################################################## # Tevatron physics parameters (override defaults) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 2000.0 set LHCGenerator:EventHandler:BeamB /Herwig/Particles/pbar- ################################################## # Matrix Elements for hadron-hadron collisions # (by default only gamma/Z switched on) ################################################## cd /Herwig/MatrixElements # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] PowhegMEqq2gZ2ff # Drell-Yan W # insert SimpleQCD:MatrixElements[0] PowhegMEqq2W2ff # higgs + W (N.B. if considering all W decay modes useful to set ) # (jet pT cut to zero so no cut on W decay products ) # insert SimpleQCD:MatrixElements[0] PowhegMEPP2WH # set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV # higgs + Z (N.B. if considering all Z decay modes useful to set ) # (jet pT cut to zero so no cut on Z decay products ) # insert SimpleQCD:MatrixElements[0] PowhegMEPP2ZH # set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV # gg/qqbar -> Higgs # insert SimpleQCD:MatrixElements[0] PowhegMEHiggs cd /Herwig/Generators ################################################## # Useful analysis handlers for hadron-hadron physics ################################################## # analysis of W/Z events # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/DrellYan ################################################## # Useful analysis handlers for HepMC related output ################################################## # Schematic overview of an event (requires --with-hepmc to be set at configure time # and the graphviz program 'dot' to produce a plot) # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/Plot # A HepMC dump file (requires --with-hepmc to be set at configure time) # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile # set /Herwig/Analysis/HepMCFile:PrintEvent 100 # set /Herwig/Analysis/HepMCFile:Format GenEvent # set /Herwig/Analysis/HepMCFile:Units GeV_mm ################################################## # Save run for later usage with 'Herwig++ run' ################################################## saverun TVT-Powheg LHCGenerator ################################################## # uncomment this section for an example batch run # of two repeats with different parameters # # Note that a separate call of 'Herwig run' # is not required ################################################## # set LHCGenerator:NumberOfEvents 10 # run TVT-2000 LHCGenerator # # set LHCGenerator:EventHandler:LuminosityFunction:Energy 1800.0 # run TVT-1800 LHCGenerator �������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/ILC-MSSM.in�����������������������������������������������������������������0000644�0001750�0001750�00000003665�11754474774�017314� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator for the MSSM in lepton collisions # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read MSSM.model cd /Herwig/NewPhysics ################################################## # # This section contains the user defined settings # ################################################## # --- Hard Process ---- # The particle name can be found in the relevant model file # by searching for its PDG code and noting the text # '/Herwig/Particles/###' where the hashes denote the name # Switch to decide whether to include EW diagrams in the # hard process (On by default) set HPConstructor:IncludeEW Yes # Example hard process: incoming leptons outgoing gaugions insert HPConstructor:Incoming 0 /Herwig/Particles/e+ insert HPConstructor:Incoming 1 /Herwig/Particles/e- insert HPConstructor:Outgoing 0 /Herwig/Particles/~chi_20 insert HPConstructor:Outgoing 1 /Herwig/Particles/~chi_1+ insert HPConstructor:Outgoing 2 /Herwig/Particles/~chi_2+ insert HPConstructor:Outgoing 3 /Herwig/Particles/~chi_30 # --- Perturbative Decays --- # Read in the spectrum file and optional decay table. # If a decay table is in a separate file # then add another 'setup' line with that # file as the argument. The provided # spectrum file is an example using SPheno 2.2.3 setup MSSM/Model CMSSM40.1.1.slha # Other parameters for run cd /Herwig/Generators set LEPGenerator:NumberOfEvents 10000000 set LEPGenerator:RandomNumberGenerator:Seed 31122001 set LEPGenerator:PrintEvent 10 set LEPGenerator:MaxErrors 10000 set LEPGenerator:EventHandler:LuminosityFunction:Energy 800.0 set LEPGenerator:EventHandler:CascadeHandler:MPIHandler NULL saverun ILC-MSSM LEPGenerator ���������������������������������������������������������������������������herwig++-2.6.0.orig/src/TVT-TTBA.in�����������������������������������������������������������������0000644�0001750�0001750�00000007155�11756410310�017305� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ################################################## # Example generator for the Leptoquark model # in hadron collisions # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read TTBA.model #Set up semi-leptonic (e or mu) top/hadronic topbar set /Herwig/Particles/t:Synchronized Not_synchronized set /Herwig/Particles/tbar:Synchronized Not_synchronized set /Herwig/Particles/t/t->b,bbar,c;:OnOff Off set /Herwig/Particles/t/t->b,c,dbar;:OnOff Off set /Herwig/Particles/t/t->b,c,sbar;:OnOff Off set /Herwig/Particles/t/t->b,sbar,u;:OnOff Off set /Herwig/Particles/t/t->b,u,dbar;:OnOff Off set /Herwig/Particles/t/t->nu_e,e+,b;:OnOff On set /Herwig/Particles/t/t->nu_mu,mu+,b;:OnOff On set /Herwig/Particles/t/t->nu_tau,tau+,b;:OnOff Off set /Herwig/Particles/tbar/tbar->b,bbar,cbar;:OnOff On set /Herwig/Particles/tbar/tbar->bbar,cbar,d;:OnOff On set /Herwig/Particles/tbar/tbar->bbar,cbar,s;:OnOff On set /Herwig/Particles/tbar/tbar->bbar,s,ubar;:OnOff On set /Herwig/Particles/tbar/tbar->bbar,ubar,d;:OnOff On set /Herwig/Particles/tbar/tbar->nu_ebar,e-,bbar;:OnOff Off set /Herwig/Particles/tbar/tbar->nu_mubar,mu-,bbar;:OnOff Off set /Herwig/Particles/tbar/tbar->nu_taubar,tau-,bbar;:OnOff Off cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 1960.0 set LHCGenerator:EventHandler:BeamB /Herwig/Particles/pbar- ################################################## # # This section contains the user defined settings # ################################################## # Example hard process: Incoming proton, outgoing leptoquarks cd /Herwig/NewPhysics set HPConstructor:Processes Exclusive insert HPConstructor:Incoming 0 /Herwig/Particles/u insert HPConstructor:Incoming 1 /Herwig/Particles/ubar insert HPConstructor:Incoming 2 /Herwig/Particles/d insert HPConstructor:Incoming 3 /Herwig/Particles/dbar insert HPConstructor:Incoming 4 /Herwig/Particles/s insert HPConstructor:Incoming 5 /Herwig/Particles/sbar insert HPConstructor:Incoming 6 /Herwig/Particles/c insert HPConstructor:Incoming 7 /Herwig/Particles/cbar insert HPConstructor:Incoming 8 /Herwig/Particles/b insert HPConstructor:Incoming 9 /Herwig/Particles/bbar insert HPConstructor:Incoming 10 /Herwig/Particles/g # Comment out the following line if Axigluon model is selected insert /Herwig/NewPhysics/HPConstructor:Excluded 0 /Herwig/Particles/Ag insert HPConstructor:Outgoing 0 /Herwig/Particles/t insert HPConstructor:Outgoing 1 /Herwig/Particles/tbar #This is available for comparison to the LO Hw++ result #cd /Herwig/MatrixElements #insert SimpleQCD:MatrixElements[0] MEHeavyQuark cd /Herwig/Shower set SplittingGenerator:ISR Yes set SplittingGenerator:FSR Yes cd /Herwig/EventHandlers #set LHCHandler:CascadeHandler NULL #set LHCHandler:HadronizationHandler NULL #set LHCHandler:DecayHandler NULL # Other parameters for run cd /Herwig/Generators # Uncomment to turn off MPI #set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 100 set LHCGenerator:MaxErrors 10000 #insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile #set /Herwig/Analysis/HepMCFile:PrintEvent 10000 #set /Herwig/Analysis/HepMCFile:Format GenEvent #set /Herwig/Analysis/HepMCFile:Units GeV_mm saverun TVT-TTBA LHCGenerator �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LHC-ADD.in������������������������������������������������������������������0000644�0001750�0001750�00000003142�11754474774�017112� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator for the Randall-Sundrum model # in hadron collisions # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read ADD.model cd /Herwig/NewPhysics ################################################## # # This section contains the user defined settings # ################################################## # Example hard process: Incoming proton, gravition + jet insert HPConstructor:Incoming 0 /Herwig/Particles/g insert HPConstructor:Incoming 0 /Herwig/Particles/u insert HPConstructor:Incoming 0 /Herwig/Particles/ubar insert HPConstructor:Incoming 0 /Herwig/Particles/d insert HPConstructor:Incoming 0 /Herwig/Particles/dbar insert HPConstructor:Incoming 0 /Herwig/Particles/s insert HPConstructor:Incoming 0 /Herwig/Particles/sbar insert HPConstructor:Incoming 0 /Herwig/Particles/c insert HPConstructor:Incoming 0 /Herwig/Particles/cbar insert HPConstructor:Outgoing 0 /Herwig/Particles/Graviton # coupling set ADD/Model:Delta 2 set ADD/Model:DdPlanckMass 1000.*GeV # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV # Other parameters for run cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 saverun LHC-ADD LHCGenerator ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/DIS-Matchbox.in�������������������������������������������������������������0000644�0001750�0001750�00000006601�11754474774�020303� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������read Matchbox.in ################################################################################ # setup the sampler ################################################################################ set /Herwig/EventHandlers/DISHandler:Sampler /Herwig/MatrixElements/Matchbox/Samplers/Sampler ################################################################################ # setup the shower # # use -LO.in or -NLO.in for LO/NLO simulations, respectively. # ################################################################################ read DipoleShower.in # read DipoleShowerParameters-LO.in # read DipoleShowerParameters-NLO.in ################################################################################ # setup matrix element and matching # # uncomment the desired calculation # ################################################################################ cd /Herwig/EventHandlers set DISHandler:BeamA /Herwig/Particles/e+ set DISLuminosity:BeamEMaxA 27.5.*GeV set DISHandler:BeamB /Herwig/Particles/p+ set DISLuminosity:BeamEMaxB 820.*GeV # the only infrared safe cut in this case is a Q^2 cut # leave all other cuts as set in here set /Herwig/Cuts/NeutralCurrentCut:MinQ2 20.0*GeV2 set /Herwig/Cuts/NeutralCurrentCut:MinW2 0.0*GeV2 set /Herwig/Cuts/DISCuts:MHatMin 0.0*GeV cd /Herwig/MatrixElements/Matchbox/Builtin ################################################################################ # leading order ################################################################################ # insert /Herwig/Generators/DISGenerator:EventHandler:SubProcessHandlers[0] MElP2lJetLO ################################################################################ # MC@NLO-type next-to-leading order ################################################################################ # set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO # set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO # insert /Herwig/Generators/DISGenerator:EventHandler:SubProcessHandlers[0] MElP2lJetNLO # uncomment to run plain NLO calculation (no consistent analysis yet) # set MElP2lJetNLO:SubProcessGroups On ################################################################################ # POWHEG-type next-to-leading order ################################################################################ # set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO # set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO # insert /Herwig/Generators/DISGenerator:EventHandler:SubProcessHandlers[0] MElP2lJetNLOInclusive # set MElP2lJetNLOInclusive:BornScreening Off ################################################################################ # setup generator and analysis ################################################################################ cd /Herwig/Generators set DISGenerator:EventHandler:CascadeHandler /Herwig/DipoleShower/DipoleShowerHandler set DISGenerator:EventHandler:CascadeHandler:MPIHandler NULL set DISGenerator:NumberOfEvents 100000000 set DISGenerator:RandomNumberGenerator:Seed 31122001 set DISGenerator:DebugLevel 1 set DISGenerator:PrintEvent 10 set DISGenerator:MaxErrors 1000000 cd /Herwig/Generators #insert DISGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile set /Herwig/Analysis/HepMCFile:PrintEvent 2000000 set /Herwig/Analysis/HepMCFile:Format GenEvent set /Herwig/Analysis/HepMCFile:Units GeV_mm set /Herwig/Analysis/HepMCFile:Filename events.fifo saverun DIS DISGenerator �������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/Makefile-UserModules.in�����������������������������������������������������0000644�0001750�0001750�00000001273�11754474774�022103� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*- Makefile -*- (for emacs) # @configure_input@ # # @PACKAGE_STRING@ # # This Makefile is intended for compiling Herwig++ plugins # You can find example plugins in the Contrib directory # # This Makefile received very little testing, # any bug reports are very welcome! # # # C++ flags # CXX = @CXX@ CXXFLAGS = -g -W -Wall @CXXFLAGS@ # add additional package header directories here CPPFLAGS = -I@prefix@/include @THEPEGINCLUDE@ @GSLINCLUDE@ # add additional libraries here LDFLAGS = @APPLE_DSO_FLAGS@ ALLCCFILES=$(shell echo *.cc) all : $(ALLCCFILES:.cc=.so) %.so : %.cc %.h $(CXX) @SHARED_FLAG@ -fPIC $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) $< -o $@ clean: rm -f $(ALLCCFILES:.cc=.so) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LHC-NMSSM.in����������������������������������������������������������������0000644�0001750�0001750�00000004043�11754474774�017420� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator for the NMSSM # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read NMSSM.model cd /Herwig/NewPhysics ################################################## # # This section contains the user defined settings # ################################################## # --- Hard Process ---- # The particle name can be found in the relevant model file # by searching for its PDG code and noting the text # '/Herwig/Particles/###' where the hashes denote the name # Switch to decide whether to include EW diagrams in the # hard process (On by default) set HPConstructor:IncludeEW No # Example hard process: Incoming proton, outgoing squarks insert HPConstructor:Incoming 0 /Herwig/Particles/g insert HPConstructor:Incoming 1 /Herwig/Particles/u insert HPConstructor:Incoming 2 /Herwig/Particles/ubar insert HPConstructor:Incoming 3 /Herwig/Particles/d insert HPConstructor:Incoming 4 /Herwig/Particles/dbar insert HPConstructor:Outgoing 0 /Herwig/Particles/~u_L insert HPConstructor:Outgoing 1 /Herwig/Particles/~u_Lbar insert HPConstructor:Outgoing 2 /Herwig/Particles/~d_L insert HPConstructor:Outgoing 3 /Herwig/Particles/~d_Lbar # --- Perturbative Decays --- # Read in the spectrum file and optional decay table. # If a decay table is in a separate file # then add another 'setup' line with that # file as the argument. The provided # spectrum file is an example using NMHDecay-1.2.1 setup NMSSM/Model NMSSM.spc # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV # Other parameters for run cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 saverun LHC-NMSSM LHCGenerator ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/MSSM.model������������������������������������������������������������������0000644�0001750�0001750�00000044056�11754474774�017400� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Common setup for the MSSM # # See LHC-MSSM.in or ILC-MSSM.in for example usage # # This file does not contain anything that # users need to touch. User settings are in # ???-MSSM.in # ################################################### # # Create particle content # ################################################### cd /Herwig/Particles create ThePEG::ParticleData H0 setup H0 35 H0 500.0 0.0 0.0 0.0 0 0 1 0 create ThePEG::ParticleData A0 setup A0 36 A0 500.0 0.0 0.0 0.0 0 0 1 0 create ThePEG::ParticleData H+ setup H+ 37 H+ 500.0 0.0 0.0 0.0 3 0 1 0 create ThePEG::ParticleData H- setup H- -37 H- 500.0 0.0 0.0 0.0 -3 0 1 0 makeanti H+ H- create ThePEG::ParticleData ~d_L setup ~d_L 1000001 ~d_L 500.0 0.0 0.0 0.0 -1 3 1 0 create ThePEG::ParticleData ~d_Lbar setup ~d_Lbar -1000001 ~d_Lbar 500.0 0.0 0.0 0.0 1 -3 1 0 makeanti ~d_L ~d_Lbar create ThePEG::ParticleData ~u_L setup ~u_L 1000002 ~u_L 500.0 0.0 0.0 0.0 2 3 1 0 create ThePEG::ParticleData ~u_Lbar setup ~u_Lbar -1000002 ~u_Lbar 500.0 0.0 0.0 0.0 -2 -3 1 0 makeanti ~u_L ~u_Lbar create ThePEG::ParticleData ~s_L setup ~s_L 1000003 ~s_L 500.0 0.0 0.0 0.0 -1 3 1 0 create ThePEG::ParticleData ~s_Lbar setup ~s_Lbar -1000003 ~s_Lbar 500.0 0.0 0.0 0.0 1 -3 1 0 makeanti ~s_L ~s_Lbar create ThePEG::ParticleData ~c_L setup ~c_L 1000004 ~c_L 500.0 0.0 0.0 0.0 2 3 1 0 create ThePEG::ParticleData ~c_Lbar setup ~c_Lbar -1000004 ~c_Lbar 500.0 0.0 0.0 0.0 -2 -3 1 0 makeanti ~c_L ~c_Lbar create ThePEG::ParticleData ~b_1 setup ~b_1 1000005 ~b_1 500.0 0.0 0.0 0.0 -1 3 1 0 create ThePEG::ParticleData ~b_1bar setup ~b_1bar -1000005 ~b_1bar 500.0 0.0 0.0 0.0 1 -3 1 0 makeanti ~b_1 ~b_1bar create ThePEG::ParticleData ~t_1 setup ~t_1 1000006 ~t_1 500.0 0.0 0.0 0.0 2 3 1 0 create ThePEG::ParticleData ~t_1bar setup ~t_1bar -1000006 ~t_1bar 500.0 0.0 0.0 0.0 -2 -3 1 0 makeanti ~t_1 ~t_1bar create ThePEG::ParticleData ~e_L- setup ~e_L- 1000011 ~e_L- 500.0 0.0 0.0 0.0 -3 0 1 0 create ThePEG::ParticleData ~e_L+ setup ~e_L+ -1000011 ~e_L+ 500.0 0.0 0.0 0.0 3 0 1 0 makeanti ~e_L- ~e_L+ create ThePEG::ParticleData ~nu_eL setup ~nu_eL 1000012 ~nu_eL 500.0 0.0 0.0 0.0 0 0 1 0 create ThePEG::ParticleData ~nu_eLbar setup ~nu_eLbar -1000012 ~nu_eLbar 500.0 0.0 0.0 0.0 0 0 1 0 makeanti ~nu_eL ~nu_eLbar create ThePEG::ParticleData ~mu_L- setup ~mu_L- 1000013 ~mu_L- 500.0 0.0 0.0 0.0 -3 0 1 0 create ThePEG::ParticleData ~mu_L+ setup ~mu_L+ -1000013 ~mu_L+ 500.0 0.0 0.0 0.0 3 0 1 0 makeanti ~mu_L- ~mu_L+ create ThePEG::ParticleData ~nu_muL setup ~nu_muL 1000014 ~nu_muL 500.0 0.0 0.0 0.0 0 0 1 0 create ThePEG::ParticleData ~nu_muLbar setup ~nu_muLbar -1000014 ~nu_muLbar 500.0 0.0 0.0 0.0 0 0 1 0 makeanti ~nu_muL ~nu_muLbar create ThePEG::ParticleData ~tau_1- setup ~tau_1- 1000015 ~tau_1- 500.0 0.0 0.0 0.0 -3 0 1 0 create ThePEG::ParticleData ~tau_1+ setup ~tau_1+ -1000015 ~tau_1+ 500.0 0.0 0.0 0.0 3 0 1 0 makeanti ~tau_1- ~tau_1+ create ThePEG::ParticleData ~nu_tauL setup ~nu_tauL 1000016 ~nu_tauL 500.0 0.0 0.0 0.0 0 0 1 0 create ThePEG::ParticleData ~nu_tauLbar setup ~nu_tauLbar -1000016 ~nu_tauLbar 500.0 0.0 0.0 0.0 0 0 1 0 makeanti ~nu_tauL ~nu_tauLbar create ThePEG::ParticleData ~g setup ~g 1000021 ~g 500.0 0.0 0.0 0.0 0 8 2 0 create ThePEG::ParticleData ~chi_10 setup ~chi_10 1000022 ~chi_10 500.0 0.0 0.0 0.0 0 0 2 0 create ThePEG::ParticleData ~chi_20 setup ~chi_20 1000023 ~chi_20 500.0 0.0 0.0 0.0 0 0 2 0 create ThePEG::ParticleData ~chi_1+ setup ~chi_1+ 1000024 ~chi_1+ 500.0 0.0 0.0 0.0 3 0 2 0 create ThePEG::ParticleData ~chi_1- setup ~chi_1- -1000024 ~chi_1- 500.0 0.0 0.0 0.0 -3 0 2 0 makeanti ~chi_1+ ~chi_1- create ThePEG::ParticleData ~chi_30 setup ~chi_30 1000025 ~chi_30 500.0 0.0 0.0 0.0 0 0 2 0 create ThePEG::ParticleData ~chi_40 setup ~chi_40 1000035 ~chi_40 500.0 0.0 0.0 0.0 0 0 2 0 create ThePEG::ParticleData ~chi_2+ setup ~chi_2+ 1000037 ~chi_2+ 500.0 0.0 0.0 0.0 3 0 2 0 create ThePEG::ParticleData ~chi_2- setup ~chi_2- -1000037 ~chi_2- 500.0 0.0 0.0 0.0 -3 0 2 0 makeanti ~chi_2+ ~chi_2- create ThePEG::ParticleData ~gravitino setup ~gravitino 1000039 ~gravitino 500.0 0.0 0.000010 0.0 0 0 4 1 create ThePEG::ParticleData ~d_R setup ~d_R 2000001 ~d_R 500.0 0.0 0.0 0.0 -1 3 1 0 create ThePEG::ParticleData ~d_Rbar setup ~d_Rbar -2000001 ~d_Rbar 500.0 0.0 0.0 0.0 1 -3 1 0 makeanti ~d_R ~d_Rbar create ThePEG::ParticleData ~u_R setup ~u_R 2000002 ~u_R 500.0 0.0 0.0 0.0 2 3 1 0 create ThePEG::ParticleData ~u_Rbar setup ~u_Rbar -2000002 ~u_Rbar 500.0 0.0 0.0 0.0 -2 -3 1 0 makeanti ~u_R ~u_Rbar create ThePEG::ParticleData ~s_R setup ~s_R 2000003 ~s_R 500.0 0.0 0.0 0.0 -1 3 1 0 create ThePEG::ParticleData ~s_Rbar setup ~s_Rbar -2000003 ~s_Rbar 500.0 0.0 0.0 0.0 1 -3 1 0 makeanti ~s_R ~s_Rbar create ThePEG::ParticleData ~c_R setup ~c_R 2000004 ~c_R 500.0 0.0 0.0 0.0 2 3 1 0 create ThePEG::ParticleData ~c_Rbar setup ~c_Rbar -2000004 ~c_Rbar 500.0 0.0 0.0 0.0 -2 -3 1 0 makeanti ~c_R ~c_Rbar create ThePEG::ParticleData ~b_2 setup ~b_2 2000005 ~b_2 500.0 0.0 0.0 0.0 -1 3 1 0 create ThePEG::ParticleData ~b_2bar setup ~b_2bar -2000005 ~b_2bar 500.0 0.0 0.0 0.0 1 -3 1 0 makeanti ~b_2 ~b_2bar create ThePEG::ParticleData ~t_2 setup ~t_2 2000006 ~t_2 500.0 0.0 0.0 0.0 2 3 1 0 create ThePEG::ParticleData ~t_2bar setup ~t_2bar -2000006 ~t_2bar 500.0 0.0 0.0 0.0 -2 -3 1 0 makeanti ~t_2 ~t_2bar create ThePEG::ParticleData ~e_R- setup ~e_R- 2000011 ~e_R- 500.0 0.0 0.0 0.0 -3 0 1 0 create ThePEG::ParticleData ~e_R+ setup ~e_R+ -2000011 ~e_R+ 500.0 0.0 0.0 0.0 3 0 1 0 makeanti ~e_R- ~e_R+ create ThePEG::ParticleData ~nu_eR setup ~nu_eR 2000012 ~nu_eR 500.0 0.0 0.000010 0.0 0 0 1 1 create ThePEG::ParticleData ~nu_eRbar setup ~nu_eRbar -2000012 ~nu_eRbar 500.0 0.0 0.000010 0.0 0 0 1 1 makeanti ~nu_eR ~nu_eRbar create ThePEG::ParticleData ~mu_R- setup ~mu_R- 2000013 ~mu_R- 500.0 0.0 0.0 0.0 -3 0 1 0 create ThePEG::ParticleData ~mu_R+ setup ~mu_R+ -2000013 ~mu_R+ 500.0 0.0 0.0 0.0 3 0 1 0 makeanti ~mu_R- ~mu_R+ create ThePEG::ParticleData ~nu_muR setup ~nu_muR 2000014 ~nu_muR 500.0 0.0 0.000010 0.0 0 0 1 1 create ThePEG::ParticleData ~nu_muRbar setup ~nu_muRbar -2000014 ~nu_muRbar 500.0 0.0 0.000010 0.0 0 0 1 1 makeanti ~nu_muR ~nu_muRbar create ThePEG::ParticleData ~tau_2- setup ~tau_2- 2000015 ~tau_2- 500.0 0.0 0.0 0.0 -3 0 1 0 create ThePEG::ParticleData ~tau_2+ setup ~tau_2+ -2000015 ~tau_2+ 500.0 0.0 0.0 0.0 3 0 1 0 makeanti ~tau_2- ~tau_2+ create ThePEG::ParticleData ~nu_tauR setup ~nu_tauR 2000016 ~nu_tauR 500.0 0.0 0.000010 0.0 0 0 1 1 create ThePEG::ParticleData ~nu_tauRbar setup ~nu_tauRbar -2000016 ~nu_tauRbar 500.0 0.0 0.000010 0.0 0 0 1 1 makeanti ~nu_tauR ~nu_tauRbar ################################################### # # Main directory and model object # ################################################### mkdir /Herwig/NewPhysics/MSSM cd /Herwig/NewPhysics/MSSM create Herwig::MSSM Model HwSusy.so # SM couplings set Model:QCD/RunningAlphaS /Herwig/AlphaS set Model:EW/RunningAlphaEM /Herwig/AlphaEM set Model:EW/CKM /Herwig/CKM set Model:RunningMass /Herwig/RunningMass ################################################### # # Vertices # ################################################### # create MSSM vertices mkdir /Herwig/Vertices/MSSM cd /Herwig/Vertices/MSSM # MSSM library HwSusy.so create Herwig::SSWSSVertex MSSM_WSS create Herwig::SSNFSVertex MSSM_NFS create Herwig::SSGFSVertex MSSM_GFS create Herwig::SSHSFSFVertex MSSM_HSS create Herwig::SSCFSVertex MSSM_CFS create Herwig::SSGSSVertex MSSM_GSS create Herwig::SSGNGVertex MSSM_GNG create Herwig::SSGGSQSQVertex MSSM_GGSS create Herwig::SSGSGSGVertex MSSM_GGOGO create Herwig::SSNNZVertex MSSM_NNZ create Herwig::SSNNPVertex MSSM_NNP create Herwig::SSCCZVertex MSSM_CCZ create Herwig::SSCNWVertex MSSM_CNW create Herwig::SSFFHVertex MSSM_FFH create Herwig::SSGOGOHVertex MSSM_GOGOH create Herwig::SSWWHVertex MSSM_WWH create Herwig::SSWHHVertex MSSM_WHH create Herwig::SSHHHVertex MSSM_HHH create Herwig::SSHGGVertex MSSM_HGG create Herwig::SSHPPVertex MSSM_HPP create Herwig::SSWWHHVertex MSSM_WWHH create Herwig::SSNCTVertex MSSM_NCT create Herwig::SSGVNHVertex MSSM_GVNH create Herwig::SSGVFSVertex MSSM_GVFS create Herwig::SSGVNVVertex MSSM_GVNV cd /Herwig/NewPhysics/MSSM # SM vertices set Model:Vertex/FFZ /Herwig/Vertices/FFZVertex set Model:Vertex/FFW /Herwig/Vertices/FFWVertex 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/WWW /Herwig/Vertices/WWWVertex set Model:Vertex/WWWW /Herwig/Vertices/WWWWVertex # MSSM feynman rules set Model:Vertex/WSFSF /Herwig/Vertices/MSSM/MSSM_WSS set Model:Vertex/NFSF /Herwig/Vertices/MSSM/MSSM_NFS set Model:Vertex/GFSF /Herwig/Vertices/MSSM/MSSM_GFS set Model:Vertex/HSFSF /Herwig/Vertices/MSSM/MSSM_HSS set Model:Vertex/CFSF /Herwig/Vertices/MSSM/MSSM_CFS set Model:Vertex/GSFSF /Herwig/Vertices/MSSM/MSSM_GSS set Model:Vertex/GGSQSQ /Herwig/Vertices/MSSM/MSSM_GGSS set Model:Vertex/GSGSG /Herwig/Vertices/MSSM/MSSM_GGOGO set Model:Vertex/GNG /Herwig/Vertices/MSSM/MSSM_GNG set Model:Vertex/NNZ /Herwig/Vertices/MSSM/MSSM_NNZ set Model:Vertex/NNP /Herwig/Vertices/MSSM/MSSM_NNP set Model:Vertex/CCZ /Herwig/Vertices/MSSM/MSSM_CCZ set Model:Vertex/CNW /Herwig/Vertices/MSSM/MSSM_CNW set Model:Vertex/FFH /Herwig/Vertices/MSSM/MSSM_FFH set Model:Vertex/GOGOH /Herwig/Vertices/MSSM/MSSM_GOGOH set Model:Vertex/WWH /Herwig/Vertices/MSSM/MSSM_WWH set Model:Vertex/SSWHH /Herwig/Vertices/MSSM/MSSM_WHH set Model:Vertex/HHH /Herwig/Vertices/MSSM/MSSM_HHH set Model:Vertex/HGG /Herwig/Vertices/MSSM/MSSM_HGG set Model:Vertex/HPP /Herwig/Vertices/MSSM/MSSM_HPP set Model:Vertex/WWHH /Herwig/Vertices/MSSM/MSSM_WWHH set Model:Vertex/NCT /Herwig/Vertices/MSSM/MSSM_NCT set Model:Vertex/GVNH /Herwig/Vertices/MSSM/MSSM_GVNH set Model:Vertex/GVFS /Herwig/Vertices/MSSM/MSSM_GVFS set Model:Vertex/GVNV /Herwig/Vertices/MSSM/MSSM_GVNV ################################################### # # Set up spin correlation Decayers # ################################################### cd /Herwig/NewPhysics set TwoBodyDC:CreateDecayModes No set ThreeBodyDC:CreateDecayModes No set WeakDecayConstructor:CreateDecayModes No # switch on decays via weak current insert DecayConstructor:NBodyDecayConstructors 0 WeakDecayConstructor # exclude gravitino and effective vertices from three body decays insert ThreeBodyDC:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_GVNH insert ThreeBodyDC:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_GVFS insert ThreeBodyDC:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_GVNV insert ThreeBodyDC:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_HGG insert ThreeBodyDC:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_HPP insert ThreeBodyDC:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_NNP insert ThreeBodyDC:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_GNG insert ThreeBodyDC:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_NCT # and hard processes insert HPConstructor:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_GVNH insert HPConstructor:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_GVFS insert HPConstructor:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_GVNV insert HPConstructor:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_HGG insert HPConstructor:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_HPP insert HPConstructor:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_NNP insert HPConstructor:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_GNG insert HPConstructor:ExcludedVertices 0 /Herwig/Vertices/MSSM/MSSM_NCT insert NewModel:DecayParticles 0 /Herwig/Particles/~d_L insert NewModel:DecayParticles 1 /Herwig/Particles/~u_L insert NewModel:DecayParticles 2 /Herwig/Particles/~s_L insert NewModel:DecayParticles 3 /Herwig/Particles/~c_L insert NewModel:DecayParticles 4 /Herwig/Particles/~b_1 insert NewModel:DecayParticles 5 /Herwig/Particles/~t_1 insert NewModel:DecayParticles 6 /Herwig/Particles/~d_R insert NewModel:DecayParticles 7 /Herwig/Particles/~u_R insert NewModel:DecayParticles 8 /Herwig/Particles/~s_R insert NewModel:DecayParticles 9 /Herwig/Particles/~c_R insert NewModel:DecayParticles 10 /Herwig/Particles/~b_2 insert NewModel:DecayParticles 11 /Herwig/Particles/~t_2 insert NewModel:DecayParticles 12 /Herwig/Particles/~e_L- insert NewModel:DecayParticles 13 /Herwig/Particles/~nu_eL insert NewModel:DecayParticles 14 /Herwig/Particles/~mu_L- insert NewModel:DecayParticles 15 /Herwig/Particles/~nu_muL insert NewModel:DecayParticles 16 /Herwig/Particles/~tau_1- insert NewModel:DecayParticles 17 /Herwig/Particles/~nu_tauL insert NewModel:DecayParticles 18 /Herwig/Particles/~e_R- insert NewModel:DecayParticles 19 /Herwig/Particles/~mu_R- insert NewModel:DecayParticles 20 /Herwig/Particles/~tau_2- insert NewModel:DecayParticles 21 /Herwig/Particles/~g insert NewModel:DecayParticles 22 /Herwig/Particles/~chi_10 insert NewModel:DecayParticles 23 /Herwig/Particles/~chi_20 insert NewModel:DecayParticles 24 /Herwig/Particles/~chi_30 insert NewModel:DecayParticles 25 /Herwig/Particles/~chi_40 insert NewModel:DecayParticles 26 /Herwig/Particles/~chi_1+ insert NewModel:DecayParticles 27 /Herwig/Particles/~chi_2+ insert NewModel:DecayParticles 28 /Herwig/Particles/h0 insert NewModel:DecayParticles 29 /Herwig/Particles/H0 insert NewModel:DecayParticles 30 /Herwig/Particles/A0 insert NewModel:DecayParticles 31 /Herwig/Particles/H+ ################################################### # # Shower stuff for coloured sparticles # ################################################### cd /Herwig/Shower create Herwig::ZeroZeroOneSplitFn PhitoPhiGSplitFn set PhitoPhiGSplitFn:InteractionType QCD set PhitoPhiGSplitFn:ColourStructure TripletTripletOctet create Herwig::HalfHalfOneSplitFn GluinotoGluinoGSplitFn set GluinotoGluinoGSplitFn:InteractionType QCD set GluinotoGluinoGSplitFn:ColourStructure OctetOctetOctet cp SudakovCommon PhitoPhiGSudakov set PhitoPhiGSudakov:SplittingFunction PhitoPhiGSplitFn cp SudakovCommon GluinotoGluinoGSudakov set GluinotoGluinoGSudakov:SplittingFunction GluinotoGluinoGSplitFn do SplittingGenerator:AddFinalSplitting ~u_L->~u_L,g; PhitoPhiGSudakov do SplittingGenerator:AddFinalSplitting ~d_L->~d_L,g; PhitoPhiGSudakov do SplittingGenerator:AddFinalSplitting ~s_L->~s_L,g; PhitoPhiGSudakov do SplittingGenerator:AddFinalSplitting ~c_L->~c_L,g; PhitoPhiGSudakov do SplittingGenerator:AddFinalSplitting ~b_1->~b_1,g; PhitoPhiGSudakov do SplittingGenerator:AddFinalSplitting ~t_1->~t_1,g; PhitoPhiGSudakov do SplittingGenerator:AddFinalSplitting ~u_R->~u_R,g; PhitoPhiGSudakov do SplittingGenerator:AddFinalSplitting ~d_R->~d_R,g; PhitoPhiGSudakov do SplittingGenerator:AddFinalSplitting ~s_R->~s_R,g; PhitoPhiGSudakov do SplittingGenerator:AddFinalSplitting ~c_R->~c_R,g; PhitoPhiGSudakov do SplittingGenerator:AddFinalSplitting ~b_2->~b_2,g; PhitoPhiGSudakov do SplittingGenerator:AddFinalSplitting ~t_2->~t_2,g; PhitoPhiGSudakov do SplittingGenerator:AddFinalSplitting ~g->~g,g; GluinotoGluinoGSudakov ################################################### # Set up the bsm framework ################################################### cd /Herwig/NewPhysics set MSSM/Model:ModelGenerator NewModel ################################################### # # Choose MSSM over SM # ################################################### cd /Herwig/Generators set LEPGenerator:StandardModelParameters /Herwig/NewPhysics/MSSM/Model set LHCGenerator:StandardModelParameters /Herwig/NewPhysics/MSSM/Model ################################################### # # Get Shower to decay SUSY particles # ################################################### insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000001 # SUSY_d_L insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000002 # SUSY_u_L insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000003 # SUSY_s_L insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000004 # SUSY_c_L insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000005 # SUSY_b_1 insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000006 # SUSY_t_1 insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000011 # SUSY_e_Lminus insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000012 # SUSY_nu_eL insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000013 # SUSY_mu_Lminus insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000014 # SUSY_nu_muL insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000015 # SUSY_tau_1minus insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000016 # SUSY_nu_tauL insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000021 # SUSY_g insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000022 # SUSY_chi_10 insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000023 # SUSY_chi_20 insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000024 # SUSY_chi_1plus insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000025 # SUSY_chi_30 insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000035 # SUSY_chi_40 insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000037 # SUSY_chi_2plus insert /Herwig/Shower/ShowerHandler:DecayInShower 0 1000039 # SUSY_gravitino insert /Herwig/Shower/ShowerHandler:DecayInShower 0 2000001 # SUSY_d_R insert /Herwig/Shower/ShowerHandler:DecayInShower 0 2000002 # SUSY_u_R insert /Herwig/Shower/ShowerHandler:DecayInShower 0 2000003 # SUSY_s_R insert /Herwig/Shower/ShowerHandler:DecayInShower 0 2000004 # SUSY_c_R insert /Herwig/Shower/ShowerHandler:DecayInShower 0 2000005 # SUSY_b_2 insert /Herwig/Shower/ShowerHandler:DecayInShower 0 2000006 # SUSY_t_2 insert /Herwig/Shower/ShowerHandler:DecayInShower 0 2000011 # SUSY_e_Rminus insert /Herwig/Shower/ShowerHandler:DecayInShower 0 2000012 # SUSY_nu_eR insert /Herwig/Shower/ShowerHandler:DecayInShower 0 2000013 # SUSY_mu_Rminus insert /Herwig/Shower/ShowerHandler:DecayInShower 0 2000014 # SUSY_nu_muR insert /Herwig/Shower/ShowerHandler:DecayInShower 0 2000015 # SUSY_tau_2minus insert /Herwig/Shower/ShowerHandler:DecayInShower 0 2000016 # SUSY_nu_tauR insert /Herwig/Shower/ShowerHandler:DecayInShower 0 35 # H0 insert /Herwig/Shower/ShowerHandler:DecayInShower 0 36 # A0 insert /Herwig/Shower/ShowerHandler:DecayInShower 0 37 # H+����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LHC-Sextet.in���������������������������������������������������������������0000644�0001750�0001750�00000010046�11754474774�017777� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator for the Sextet model # in hadron collisions. # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read Sextet.model cd /Herwig/NewPhysics ################################################## # # This section contains the user defined settings # ################################################## # Example hard process: Incoming proton, gravition + jet #insert HPConstructor:Incoming 0 /Herwig/Particles/g #insert HPConstructor:Incoming 0 /Herwig/Particles/u #insert HPConstructor:Incoming 0 /Herwig/Particles/ubar #insert HPConstructor:Incoming 0 /Herwig/Particles/d #insert HPConstructor:Incoming 0 /Herwig/Particles/dbar #insert HPConstructor:Incoming 0 /Herwig/Particles/s #insert HPConstructor:Incoming 0 /Herwig/Particles/sbar #insert HPConstructor:Incoming 0 /Herwig/Particles/c #insert HPConstructor:Incoming 0 /Herwig/Particles/cbar #### Scalar DQ Singlet Y=4/3 insert HPConstructor:Outgoing 0 /Herwig/Particles/DQPhi_1'' do /Herwig/NewPhysics/Sextet/Model:EnableParticles Scalar Singlet Y=4/3 #### Scalar DQ Singlet Y=1/3 insert HPConstructor:Outgoing 0 /Herwig/Particles/DQPhi_1 do /Herwig/NewPhysics/Sextet/Model:EnableParticles Scalar Singlet Y=1/3 #### Scalar DQ Singlet Y=-2/3 insert HPConstructor:Outgoing 0 /Herwig/Particles/DQPhi_1' do /Herwig/NewPhysics/Sextet/Model:EnableParticles Scalar Singlet Y=-2/3 #### Scalar DQ Triplet Y=1/3 insert HPConstructor:Outgoing 0 /Herwig/Particles/DQPhi_3+ insert HPConstructor:Outgoing 0 /Herwig/Particles/DQPhi_30 insert HPConstructor:Outgoing 0 /Herwig/Particles/DQPhi_3- do /Herwig/NewPhysics/Sextet/Model:EnableParticles Scalar Triplet Y=1/3 #### Vector DQ Doublet Y=-1/6 insert HPConstructor:Outgoing 0 /Herwig/Particles/DQV_1+ insert HPConstructor:Outgoing 0 /Herwig/Particles/DQV_1- do /Herwig/NewPhysics/Sextet/Model:EnableParticles Vector Doublet Y=-1/6 #### Vector DQ Doublet Y=-5/6 insert HPConstructor:Outgoing 0 /Herwig/Particles/DQV_2+ insert HPConstructor:Outgoing 0 /Herwig/Particles/DQV_2- do /Herwig/NewPhysics/Sextet/Model:EnableParticles Vector Doublet Y=5/6 #set HPConstructor:DebugME Yes # Example hard process: Incoming proton,resonant sextet insert ResConstructor:Incoming 0 /Herwig/Particles/u insert ResConstructor:Outgoing 0 /Herwig/Particles/d insert ResConstructor:Intermediates 0 /Herwig/Particles/DQPhi_1'' #insert ResConstructor:Intermediates 0 /Herwig/Particles/DQV_2+ insert ResConstructor:Outgoing 0 /Herwig/Particles/u insert ResConstructor:Outgoing 0 /Herwig/Particles/d #couplings #1st generation set Sextet/Model:g1L 0 1.0 set Sextet/Model:g1R 0 1.0 set Sextet/Model:g1RDoublePrime 0 1.0 set Sextet/Model:g1RPrime 0 1.0 set Sextet/Model:g2 0 1.0 set Sextet/Model:g2Prime 0 1.0 set Sextet/Model:g3L 0 1.0 #2nd generation set Sextet/Model:g1L 1 1.0 set Sextet/Model:g1R 1 1.0 set Sextet/Model:g1RDoublePrime 1 1.0 set Sextet/Model:g1RPrime 1 1.0 set Sextet/Model:g2 1 1.0 set Sextet/Model:g2Prime 1 1.0 set Sextet/Model:g3L 1 1.0 #3rd generation set Sextet/Model:g1L 2 1.0 set Sextet/Model:g1R 2 1.0 set Sextet/Model:g1RDoublePrime 2 1.0 set Sextet/Model:g1RPrime 2 1.0 set Sextet/Model:g2 2 1.0 set Sextet/Model:g2Prime 2 1.0 set Sextet/Model:g3L 2 1.0 # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV # Other parameters for run cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 1000 set LHCGenerator:MaxErrors 10000 set LHCGenerator:EventHandler:CascadeHandler NULL #set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:EventHandler:DecayHandler NULL set LHCGenerator:EventHandler:HadronizationHandler NULL set /Herwig/Analysis/Basics:CheckQuark 0 #set /Herwig/Particles/DQPhi_1'':NominalMass 1000.*GeV saverun LHC-Sextet LHCGenerator������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/NMSSM.spc�������������������������������������������������������������������0000644�0001750�0001750�00000031064�11754474774�017176� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# NMHDECAY OUTPUT IN SLHA FORMAT # Info about spectrum calculator BLOCK SPINFO # Program information 1 NMHDECAY # spectrum calculator 2 3 # version number # Input parameters BLOCK MODSEL 3 1 # NMSSM PARTICLE CONTENT BLOCK SMINPUTS 1 1.27920000E+02 # ALPHA_EM^-1(MZ) 2 1.16639000E-05 # GF 3 1.17200000E-01 # ALPHA_S(MZ) 4 9.11870000E+01 # MZ 5 4.21400000E+00 # MB(MB) 6 1.71400000E+02 # MTOP (POLE MASS) 7 1.77700000E+00 # MTAU # SMINPUTS Beyond SLHA: # MW: 0.80420000E+02 # MS: 0.19000000E+00 # MC: 0.14000000E+01 # VUS: 0.22000000E+00 # VCB: 0.40000000E-01 # VUB: 0.40000000E-02 BLOCK MINPAR 3 2.00000000E+00 # TANBETA BLOCK EXTPAR 1 1.50000000E+02 # M1 2 3.00000000E+02 # M2 3 1.00000000E+03 # M3 11 2.50000000E+03 # ATOP 12 2.50000000E+03 # ABOTTOM 13 2.50000000E+03 # ATAU 124 1.32099188E+03 # MA AT Q_STSB 31 1.00000000E+06 # LEFT SELECTRON 32 1.00000000E+06 # LEFT SMUON 33 1.00000000E+06 # LEFT STAU 34 1.00000000E+06 # RIGHT SELECTRON 35 1.00000000E+06 # RIGHT SMUON 36 1.00000000E+06 # RIGHT STAU 41 1.00000000E+06 # LEFT 1ST GEN. SQUARKS 42 1.00000000E+06 # LEFT 2ND GEN. SQUARKS 43 1.00000000E+06 # LEFT 3RD GEN. SQUARKS 44 1.00000000E+06 # RIGHT U-SQUARKS 45 1.00000000E+06 # RIGHT C-SQUARKS 46 1.00000000E+06 # RIGHT T-SQUARKS 47 1.00000000E+06 # RIGHT D-SQUARKS 48 1.00000000E+06 # RIGHT S-SQUARKS 49 1.00000000E+06 # RIGHT B-SQUARKS 61 7.02000000E-01 # LAMBDA 62 4.90000000E-02 # KAPPA 63 1.28000000E+03 # A_LAMBDA 64 1.00000000E+01 # A_KAPPA 65 5.30000000E+02 # MU_EFF # BLOCK MASS # Mass spectrum # PDG Code mass particle 25 1.39836374E+02 # lightest neutral scalar 35 1.51443222E+02 # second neutral scalar 45 1.30169034E+03 # third neutral scalar 36 4.89195961E+01 # lightest pseudoscalar 46 1.30475321E+03 # second pseudoscalar 37 1.30252610E+03 # charged Higgs 1000001 1.03794721E+03 # ~d_L 2000001 1.03715965E+03 # ~d_R 1000002 1.03619464E+03 # ~u_L 2000002 1.03663055E+03 # ~u_R 1000003 1.03794721E+03 # ~s_L 2000003 1.03715965E+03 # ~s_R 1000004 1.03619464E+03 # ~c_L 2000004 1.03663055E+03 # ~c_R 1000005 1.03589101E+03 # ~b_1 2000005 1.03921740E+03 # ~b_2 1000006 8.77891045E+02 # ~t_1 2000006 1.18786303E+03 # ~t_2 1000011 1.00063432E+03 # ~e_L 2000011 1.00054844E+03 # ~e_R 1000012 9.98816192E+02 # ~nue_L 1000013 1.00063432E+03 # ~mu_L 2000013 1.00054844E+03 # ~mu_R 1000014 9.98816192E+02 # ~numu_L 1000015 9.99312737E+02 # ~tau_1 2000015 1.00187154E+03 # ~tau_2 1000016 9.98816192E+02 # ~nutau_L 1000021 1.07855652E+03 # ~g 1000022 9.12928865E+01 # neutralino(1) 1000023 1.46429979E+02 # neutralino(2) 1000025 2.94547359E+02 # neutralino(3) 1000035 -5.56163202E+02 # neutralino(4) 1000045 5.64325430E+02 # neutralino(5) 1000024 2.92959564E+02 # chargino(1) 1000037 5.58677258E+02 # chargino(2) # Low energy observables BLOCK LOWEN # Exp. 2 Sigma: 3.07E-04 < BR(b -> s gamma) < 4.07E-04: 1 3.41523755E-04 # BR(b -> s gamma) 11 3.72101862E-04 # (BR(b -> s gamma)+Theor.Err.) 12 2.91032383E-04 # (BR(b -> s gamma)-Theor.Err.) # Exp. 2 Sigma: 4.99E-01 < Delta M_d < 5.15E-01: 2 6.07354601E-01 # Delta M_d in ps^-1 21 1.05776810E+00 # Delta M_d +Theor.Err. 22 1.63385106E-01 # Delta M_d -Theor.Err. # Exp. 2 Sigma: 1.753E+01 < Delta Ms < 1.801E+01: 3 2.10452493E+01 # Delta M_s in ps^-1 31 2.76961825E+01 # Delta M_s +Theor.Err. 32 1.44881882E+01 # Delta M_s -Theor.Err. # Exp. 95% C.L.: BR(Bs->mu+mu-) < 5.8E-08: 4 3.54098427E-09 # BR(Bs -> mu+mu-) 41 6.01429512E-09 # BR(Bs -> mu+mu-)+Theor.Err. 42 1.71891137E-09 # BR(Bs -> mu+mu-)-Theor.Err. # Exp. 2 Sigma: 3.40E-05 < BR(B+ > tau+ + nu_tau) < 2.30E-04: 5 1.31775781E-04 # BR(B+ -> tau+ + nu_tau) 51 2.63603107E-04 # BR(B+ -> tau+ + nu_tau) + Theor.Err. 52 5.68712649E-05 # BR(B+ -> tau+ + nu_tau) - Theor.Err. # BLOCK HMIX AT Q= 1.00000000E+03 # (STOP/SBOTTOM MASSES) 1 5.30000000E+02 # MU_EFF 2 2.00000402E+00 # TAN(BETA) 3 1.71023505E+02 # V(Q) 4 1.74501955E+06 # MA**2 # 3*3 Higgs mixing BLOCK NMHMIX 1 1 4.49872460E-01 # S_(1,1) 1 2 8.91681851E-01 # S_(1,2) 1 3 5.01821419E-02 # S_(1,3) 2 1 2.88136045E-02 # S_(2,1) 2 2 -7.06510966E-02 # S_(2,2) 2 3 9.97084850E-01 # S_(2,3) 3 1 8.92627888E-01 # S_(3,1) 3 2 -4.47115086E-01 # S_(3,2) 3 3 -5.74765508E-02 # S_(3,3) # 3*3 Pseudoscalar Higgs mixing BLOCK NMAMIX 1 1 -7.53734413E-02 # P_(1,1) 1 2 -3.76867207E-02 # P_(1,2) 1 3 9.96442951E-01 # P_(1,3) 2 1 8.91245670E-01 # P_(2,1) 2 2 4.45622835E-01 # P_(2,2) 2 3 8.42700692E-02 # P_(2,3) # 3rd generation sfermion mixing BLOCK STOPMIX # Stop mixing matrix 1 1 -7.07590438E-01 # Rst_(1,1) 1 2 7.06622794E-01 # Rst_(1,2) 2 1 -7.06622794E-01 # Rst_(2,1) 2 2 -7.07590438E-01 # Rst_(2,2) BLOCK SBOTMIX # Sbottom mixing matrix 1 1 -6.22498693E-01 # Rsb_(1,1) 1 2 7.82620839E-01 # Rsb_(1,2) 2 1 -7.82620839E-01 # Rsb_(2,1) 2 2 -6.22498693E-01 # Rsb_(2,2) BLOCK STAUMIX # Stau mixing matrix 1 1 -6.95140010E-01 # Rsl_(1,1) 1 2 7.18874374E-01 # Rsl_(1,2) 2 1 -7.18874374E-01 # Rsl_(2,1) 2 2 -6.95140010E-01 # Rsl_(2,2) # Gaugino-Higgsino mixing BLOCK NMNMIX # 5*5 Neutralino Mixing Matrix 1 1 1.13458283E-01 # N_(1,1) 1 2 -5.54357071E-02 # N_(1,2) 1 3 -4.98782346E-02 # N_(1,3) 1 4 -1.98077653E-01 # N_(1,4) 1 5 9.70737609E-01 # N_(1,5) 2 1 9.86083701E-01 # N_(2,1) 2 2 -3.84507802E-02 # N_(2,2) 2 3 9.97300301E-02 # N_(2,3) 2 4 -4.07516099E-02 # N_(2,4) 2 5 -1.20638712E-01 # N_(2,5) 3 1 7.54509718E-02 # N_(3,1) 3 2 9.53764002E-01 # N_(3,2) 3 3 -2.24716204E-01 # N_(3,3) 3 4 1.71385532E-01 # N_(3,4) 3 5 6.90724660E-02 # N_(3,5) 4 1 -1.87054069E-02 # N_(4,1) 4 2 2.83352907E-02 # N_(4,2) 4 3 6.97656324E-01 # N_(4,3) 4 4 6.92377943E-01 # N_(4,4) 4 5 1.80929977E-01 # N_(4,5) 5 1 9.33992005E-02 # N_(5,1) 5 2 -2.91512880E-01 # N_(5,2) 5 3 -6.71077018E-01 # N_(5,3) 5 4 6.71076995E-01 # N_(5,4) 5 5 7.48874698E-02 # N_(5,5) BLOCK UMIX # Chargino U Mixing Matrix 1 1 9.44173996E-01 # U_(1,1) 1 2 -3.29447211E-01 # U_(1,2) 2 1 3.29447211E-01 # U_(2,1) 2 2 9.44173996E-01 # U_(2,2) BLOCK VMIX # Chargino V Mixing Matrix 1 1 9.62164136E-01 # V_(1,1) 1 2 -2.72470503E-01 # V_(1,2) 2 1 2.72470503E-01 # V_(2,1) 2 2 9.62164136E-01 # V_(2,2) # Higgs reduced couplings # (as compared to a SM Higgs with same mass) BLOCK REDCOUP # H1 1 1 9.96930616E-01 # U-type fermions 1 2 1.00594540E+00 # D-type fermions 1 3 9.98733573E-01 # W,Z bosons 1 4 9.82183861E-01 # Gluons 1 5 1.01232522E+00 # Photons # H2 2 1 -7.89903273E-02 # U-type fermions 2 2 6.44291783E-02 # D-type fermions 2 3 -5.03064262E-02 # W,Z bosons 2 4 8.42729081E-02 # Gluons 2 5 8.53137747E-02 # Photons # H3 3 1 -4.99889863E-01 # U-type fermions 3 2 1.99597664E+00 # D-type fermions 3 3 -7.16563065E-04 # W,Z bosons 3 4 4.97960461E-01 # Gluons 3 5 3.79551399E-01 # Photons # A1 4 1 -4.21350346E-02 # U-type fermions 4 2 -1.68540138E-01 # D-type fermions 4 3 0.00000000E+00 # W,Z bosons 4 4 6.09163550E-02 # Gluons 4 5 1.54258690E-01 # Photons # A2 5 1 4.98221476E-01 # U-type fermions 5 2 1.99288590E+00 # D-type fermions 5 3 0.00000000E+00 # W,Z bosons 5 4 5.02901556E-01 # Gluons 5 5 6.47453065E-01 # Photons # # GAUGE AND YUKAWA COUPLINGS AT THE SUSY SCALE BLOCK GAUGE Q= 1.00000000E+03 # (SUSY SCALE) 1 3.62224894E-01 # g1(Q,DR_bar) 2 6.42793227E-01 # g2(Q,DR_bar) 3 1.05981813E+00 # g3(Q,DR_bar) BLOCK YU Q= 1.00000000E+03 # (SUSY SCALE) 3 3 9.51283729E-01 # HTOP(Q,DR_bar) BLOCK YD Q= 1.00000000E+03 # (SUSY SCALE) 3 3 3.09237206E-02 # HBOT(Q,DR_bar) BLOCK YE Q= 1.00000000E+03 # (SUSY SCALE) 3 3 2.23241912E-02 # HTAU(Q,DR_bar) BLOCK L/K Q= 1.00000000E+03 # (SUSY SCALE) 1 7.02000000E-01 # LAMBDA(Q,DR_bar) 2 4.90000000E-02 # KAPPA(Q,DR_bar) # # SOFT TRILINEAR COUPLINGS AT THE SUSY SCALE BLOCK AU Q= 1.00000000E+03 # (SUSY SCALE) 3 3 2.50000000E+03 # ATOP BLOCK AD Q= 1.00000000E+03 # (SUSY SCALE) 3 3 2.50000000E+03 # ABOT BLOCK AE Q= 1.00000000E+03 # (SUSY SCALE) 3 3 2.50000000E+03 # ATAU BLOCK AL/AK Q= 1.00000000E+03 # (SUSY SCALE) 1 1.28000000E+03 # ALAMBDA 2 1.00000000E+01 # AKAPPA # # SOFT MASSES AT THE SUSY SCALE BLOCK MSOFT Q= 1.00000000E+03 # (SUSY SCALE) 1 1.50000000E+02 # M1 2 3.00000000E+02 # M2 3 1.00000000E+03 # M3 21 1.10587466E+06 # M_HD^2 22 9.23131746E+04 # M_HU^2 23 -2.79072679E+03 # M_S^2 31 1.00000000E+06 # M_eL^2 32 1.00000000E+06 # M_muL^2 33 1.00000000E+06 # M_tauL^2 34 1.00000000E+06 # M_eR^2 35 1.00000000E+06 # M_muR^2 36 1.00000000E+06 # M_tauR^2 41 1.00000000E+06 # M_q1L^2 42 1.00000000E+06 # M_q2L^2 43 1.00000000E+06 # M_q3L^2 44 1.00000000E+06 # M_uR^2 45 1.00000000E+06 # M_cR^2 46 1.00000000E+06 # M_tR^2 47 1.00000000E+06 # M_dR^2 48 1.00000000E+06 # M_sR^2 49 1.00000000E+06 # M_bR^2 # # GAUGE AND YUKAWA COUPLINGS AT THE GUT SCALE BLOCK GAUGEGUT MGUT= 2.10086949E+16 # (GUT SCALE) 1 7.10170399E-01 # g1(MGUT,DR_bar), GUT normalization 2 7.10170401E-01 # g2(MGUT,DR_bar) 3 7.02117834E-01 # g3(MGUT,DR_bar) BLOCK YUGUT MGUT= 2.10086949E+16 # (GUT SCALE) 3 3 1.38184598E+00 # HTOP(MGUT,DR_bar) BLOCK YDGUT MGUT= 2.10086949E+16 # (GUT SCALE) 3 3 1.80681615E-02 # HBOT(MGUT,DR_bar) BLOCK YEGUT MGUT= 2.10086949E+16 # (GUT SCALE) 3 3 2.20124415E-02 # HTAU(MGUT,DR_bar) BLOCK LGUT/KGUT MGUT= 2.10086949E+16 # (GUT SCALE) 1 3.48198696E+00 # LAMBDA(MGUT,DR_bar) 2 4.18288468E-01 # KAPPA(MGUT,DR_bar) # # SOFT TRILINEAR COUPLINGS AT THE GUT SCALE BLOCK AUGUT MGUT= 2.10086949E+16 # (GUT SCALE) 3 3 5.97876433E+04 # ATOP BLOCK ADGUT MGUT= 2.10086949E+16 # (GUT SCALE) 3 3 3.26140851E+04 # ABOT BLOCK AEGUT MGUT= 2.10086949E+16 # (GUT SCALE) 3 3 2.63837779E+04 # ATAU BLOCK ALGUT/AKGUT MGUT= 2.10086949E+16 # (GUT SCALE) 1 1.13506016E+05 # ALAMBDA 2 1.43426913E+05 # AKAPPA # # SOFT MASSES SQUARED AT THE GUT SCALE BLOCK MSOFTGUT MGUT= 2.10086949E+16 # (GUT SCALE) 1 5.43544490E+02 # M1 2 6.46206574E+02 # M2 3 5.20293372E+02 # M3 21 2.82594533E+09 # M_HD^2 22 3.64457715E+09 # M_HU^2 23 5.74138558E+09 # M_S^2 31 1.64121131E+06 # M_eL^2 32 1.64121131E+06 # M_muL^2 33 1.66388725E+06 # M_tauL^2 34 4.22386848E+05 # M_eR^2 35 4.22386848E+05 # M_muR^2 36 4.68676867E+05 # M_tauR^2 41 5.81471927E+05 # M_q1L^2 42 5.81471927E+05 # M_q2L^2 43 2.53008569E+08 # M_q3L^2 44 9.63907122E+05 # M_uR^2 45 9.63907122E+05 # M_cR^2 46 5.25968483E+08 # M_tR^2 47 2.02153850E+05 # M_dR^2 48 2.02153850E+05 # M_sR^2 49 2.48848188E+05 # M_bR^2 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LHC-Matchbox.in�������������������������������������������������������������0000644�0001750�0001750�00000006572�11756407533�020270� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������read Matchbox.in ################################################################################ # setup the sampler ################################################################################ set /Herwig/EventHandlers/LHCHandler:Sampler /Herwig/MatrixElements/Matchbox/Samplers/Sampler ################################################################################ # setup the shower # # use -LO.in or -NLO.in for LO/NLO simulations, respectively. # ################################################################################ read DipoleShower.in # read DipoleShowerParameters-LO.in # read DipoleShowerParameters-NLO.in ################################################################################ # setup matrix element and matching # # uncomment the desired calculation # ################################################################################ cd /Herwig/EventHandlers set LHCHandler:LuminosityFunction:Energy 8000.0*GeV # the only infrared safe cut in this case is a cut on the lepton pair mass # leave all other cuts as set in here set /Herwig/Cuts/QCDCuts:MHatMin 0.0*GeV set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV cd /Herwig/MatrixElements/Matchbox/Builtin cp /Herwig/MatrixElements/Matchbox/Utility/MECorrectionHandler MECorrectionHandler ################################################################################ # leading order ################################################################################ # insert /Herwig/Generators/LHCGenerator:EventHandler:SubProcessHandlers[0] MEPP2llbarLO ################################################################################ # MC@NLO-type next-to-leading order ################################################################################ # set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO # set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO # insert /Herwig/Generators/LHCGenerator:EventHandler:SubProcessHandlers[0] MEPP2llbarNLO # uncomment to run plain NLO calculation (no consistent analysis yet) # set MElP2lJetNLO:SubProcessGroups On ################################################################################ # POWHEG-type next-to-leading order ################################################################################ # set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO # set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO # insert /Herwig/Generators/LHCGenerator:EventHandler:SubProcessHandlers[0] MEPP2llbarNLOInclusive # insert /Herwig/Generators/LHCGenerator:EventHandler:PostSubProcessHandlers[0] MECorrectionHandler ################################################################################ # setup generator and analysis ################################################################################ cd /Herwig/Generators set LHCGenerator:EventHandler:CascadeHandler /Herwig/DipoleShower/DipoleShowerHandler set LHCGenerator:EventHandler:CascadeHandler:MPIHandler NULL set LHCGenerator:NumberOfEvents 100000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:DebugLevel 1 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 4000000 cd /Herwig/Generators #insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile set /Herwig/Analysis/HepMCFile:PrintEvent 10000000 set /Herwig/Analysis/HepMCFile:Format GenEvent set /Herwig/Analysis/HepMCFile:Units GeV_mm set /Herwig/Analysis/HepMCFile:Filename events.fifo saverun LHC LHCGenerator ��������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/TTBA.model������������������������������������������������������������������0000644�0001750�0001750�00000010755�11754474774�017352� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Common setup for Leptoquark models # # See LHC-TTBA.in or ILC-TTBA.in for example usage # # This file does not contain anything that # users need to touch. User settings are in # ???-TTBA.in # ################################################### # # Particle Data object for the new resonances # ################################################### cd /Herwig/Particles # W prime model create /ThePEG/ParticleData Wp setup Wp 34 Wp 400.0 0.0 0.0 0.0 3 0 3 0 create /ThePEG/ParticleData Wpbar setup Wpbar -34 Wpbar 400.0 0.0 0.0 0.0 -3 0 3 0 makeanti Wp Wpbar # Abelian Z prime model create /ThePEG/ParticleData Zp setup Zp 32 Zp 700.0 0.0 0.0 0.0 0 0 3 0 # Axigluon model create /ThePEG/ParticleData Ag setup Ag 63 Ag 2000.0 0.0 0 0.0 0 8 3 0 # Non-Abelian SU(2)_X model create /ThePEG/ParticleData Vz setup Vz 70 Vz 80.0 0.0 0.0 0.0 0 0 3 0 create /ThePEG/ParticleData Yp setup Yp 71 Yp 200.0 0.0 0.0 0.0 0 0 3 0 create /ThePEG/ParticleData Ym setup Ym -71 Ym 200.0 0.0 0.0 0.0 0 0 3 0 makeanti Yp Ym ################################################### # # Main directory and model object # ################################################### mkdir /Herwig/NewPhysics/TTbA cd /Herwig/NewPhysics/TTbA create Herwig::TTbAModel Model HwTTbAModel.so # SM couplings set Model:QCD/RunningAlphaS /Herwig/AlphaS set Model:EW/RunningAlphaEM /Herwig/AlphaEM set Model:EW/CKM /Herwig/CKM set Model:RunningMass /Herwig/RunningMass # Select the active model (0: W', 1: Z', 2: Axigluon, 3: non-Abelian SU(2)_X) set Model:modelselect 0 # W prime couplings set Model:WPTDLCoupling 0.0 set Model:WPTDRCoupling 2.0 # Z prime couplings set Model:ZPTULCoupling 0.0 set Model:ZPTURCoupling 1.8 set Model:ZPUULCoupling 0.0 set Model:ZPUURCoupling 0.1 set Model:ZPCCLCoupling 0.0 set Model:ZPCCRCoupling 0.1 # Axigluon couplings set Model:AGQQLCoupling -3.0 set Model:AGQQRCoupling 3.0 set Model:AGTTLCoupling 3.0 set Model:AGTTRCoupling -3.0 # SU(2)_X parameters (see: arXiv:1103.4835) set Model:SU2Xcostheta 0.95 set Model:SU2Xalpha 0.060 ################################################### # # Vertices # ################################################### # create model vertices mkdir /Herwig/Vertices/TTbA cd /Herwig/Vertices/TTbA library HwTTbAModel.so create Herwig::TTbAModelWPTDVertex TTbA_WPTDVertex create Herwig::TTbAModelZPQQVertex TTbA_ZPQQVertex create Herwig::TTbAModelAGQQVertex TTbA_AGQQVertex create Herwig::TTbAModelSU2XVertex TTbA_SU2XVertex cd /Herwig/NewPhysics/TTbA # 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/WPTD /Herwig/Vertices/TTbA/TTbA_WPTDVertex set Model:Vertex/ZPQQ /Herwig/Vertices/TTbA/TTbA_ZPQQVertex set Model:Vertex/AGQQ /Herwig/Vertices/TTbA/TTbA_AGQQVertex set Model:Vertex/SU2X /Herwig/Vertices/TTbA/TTbA_SU2XVertex ################################################### # # Set up spin correlation Decayers # ################################################### cd /Herwig/NewPhysics set TwoBodyDC:CreateDecayModes Yes set ThreeBodyDC:CreateDecayModes No insert NewModel:DecayParticles 0 /Herwig/Particles/Wp insert NewModel:DecayParticles 1 /Herwig/Particles/Zp insert NewModel:DecayParticles 2 /Herwig/Particles/Ag insert NewModel:DecayParticles 3 /Herwig/Particles/Yp insert NewModel:DecayParticles 4 /Herwig/Particles/Ym insert NewModel:DecayParticles 5 /Herwig/Particles/Vz ################################################### # Set up the model framework ################################################### set TTbA/Model:ModelGenerator NewModel ################################################### # # Choose Model over SM # ################################################### cd /Herwig/Generators set LEPGenerator:StandardModelParameters /Herwig/NewPhysics/TTbA/Model set LHCGenerator:StandardModelParameters /Herwig/NewPhysics/TTbA/Model �������������������herwig++-2.6.0.orig/src/LHC-Powheg.in���������������������������������������������������������������0000644�0001750�0001750�00000010210�11756407352�017733� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator based on LHC parameters # using NLO matrix elements and matching in # the Powheg formalism # usage: Herwig++ read LHC.in ################################################## ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 ################################################## # Need to use an NLO PDF ################################################## set /Herwig/Particles/p+:PDF /Herwig/Partons/MRST-NLO set /Herwig/Particles/pbar-:PDF /Herwig/Partons/MRST-NLO ################################################## # and strong coupling ################################################## create Herwig::O2AlphaS O2AlphaS set /Herwig/Generators/LHCGenerator:StandardModelParameters:QCD/RunningAlphaS O2AlphaS ################################################## # Setup the POWHEG shower ################################################## cd /Herwig/Shower set Evolver:HardEmissionMode POWHEG ################################################## # LHC physics parameters (override defaults here) ################################################## cd /Herwig/Generators set LHCGenerator:EventHandler:LuminosityFunction:Energy 8000.0 # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV ################################################## # Matrix Elements for hadron-hadron collisions # (by default only gamma/Z switched on) ################################################## cd /Herwig/MatrixElements/ # Drell-Yan Z/gamma insert SimpleQCD:MatrixElements[0] PowhegMEqq2gZ2ff # # Drell-Yan W # insert SimpleQCD:MatrixElements[0] PowhegMEqq2W2ff # higgs + W (N.B. if considering all W decay modes useful to set ) # (jet pT cut to zero so no cut on W decay products ) # insert SimpleQCD:MatrixElements[0] PowhegMEPP2WH # set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV # # higgs + Z (N.B. if considering all Z decay modes useful to set ) # (jet pT cut to zero so no cut on Z decay products ) # insert SimpleQCD:MatrixElements[0] PowhegMEPP2ZH # set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV # # gg/qqbar -> Higgs # insert SimpleQCD:MatrixElements[0] PowhegMEHiggs # # Weak boson pair production: WW / ZZ / WZ / W+Z [WpZ] / W-Z [WmZ] # insert SimpleQCD:MatrixElements[0] PowhegMEPP2VV # set PowhegMEPP2VV:Process WpZ # # Higgs production via VBF # insert SimpleQCD:MatrixElements[0] PowhegMEPP2HiggsVBF cd /Herwig/Generators ################################################## # Useful analysis handlers for hadron-hadron physics ################################################## # analysis of W/Z events # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/DrellYan ################################################## # Useful analysis handlers for HepMC related output ################################################## # Schematic overview of an event (requires --with-hepmc to be set at configure time # and the graphviz program 'dot' to produce a plot) # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/Plot # A HepMC dump file (requires --with-hepmc to be set at configure time) # insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile # set /Herwig/Analysis/HepMCFile:PrintEvent 100 # set /Herwig/Analysis/HepMCFile:Format GenEvent # set /Herwig/Analysis/HepMCFile:Units GeV_mm ################################################## # Save run for later usage with 'Herwig++ run' ################################################## saverun LHC-Powheg LHCGenerator ################################################## # uncomment this section for an example batch run # of two repeats with different parameters # # Note that a separate call of 'Herwig run' # is not required in this case ################################################## # set LHCGenerator:NumberOfEvents 10 # run LHC-full LHCGenerator # # set LHCGenerator:EventHandler:LuminosityFunction:Energy 900.0 # run LHC-initial LHCGenerator ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LHC-MB.in�������������������������������������������������������������������0000644�0001750�0001750�00000004053�11756407435�017012� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################################################ # This file contains our best tune to UE data from ATLAS at 7 TeV. More recent # tunes and tunes for other centre-of-mass energies as well as more usage # instructions can be obtained from this Herwig++ wiki page: # http://projects.hepforge.org/herwig/trac/wiki/MB_UE_tunes ################################################################################ ################################################## # Technical parameters for this run ################################################## cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 1000000 set LHCGenerator:DebugLevel 0 set LHCGenerator:DumpPeriod -1 set LHCGenerator:DebugEvent 0 ################################################## # LHC physics parameters (override defaults here) ################################################## set LHCGenerator:EventHandler:LuminosityFunction:Energy 8000.0 # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV ################################################## # Matrix Elements for hadron-hadron collisions ################################################## cd /Herwig/MatrixElements/ insert SimpleQCD:MatrixElements[0] MEMinBias # Need this cut only for min bias cd /Herwig/Cuts set JetKtCut:MinKT 0.0*GeV set QCDCuts:MHatMin 0.0*GeV set QCDCuts:X1Min 0.055 set QCDCuts:X2Min 0.055 # MPI model settings set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0 cd /Herwig/Generators #insert LHCGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile #set /Herwig/Analysis/HepMCFile:PrintEvent 1000000 #set /Herwig/Analysis/HepMCFile:Format GenEvent #set /Herwig/Analysis/HepMCFile:Units GeV_mm #set /Herwig/Analysis/HepMCFile:Filename events.fifo ################################################## # Save run for later usage with 'Herwig++ run' ################################################## saverun LHC-MB LHCGenerator �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/src/LHC-MSSM.in�����������������������������������������������������������������0000644�0001750�0001750�00000004577�11754474774�017316� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������################################################## # Example generator for the MSSM # The best way to use this is to make your own # copy of this file and edit that as you require. # # The first section loads the model file which # does not contain anything that users need to touch. # # The second section contains the user settings. ################################################### read MSSM.model cd /Herwig/NewPhysics ################################################## # # This section contains the user defined settings # ################################################## # --- Hard Process ---- # The particle name can be found in the relevant model file # by searching for its PDG code and noting the text # '/Herwig/Particles/###' where the hashes denote the name # Switch to decide whether to include EW diagrams in the # hard process (On by default) set HPConstructor:IncludeEW No # Example hard process: Incoming proton, outgoing squarks insert HPConstructor:Incoming 0 /Herwig/Particles/g insert HPConstructor:Incoming 1 /Herwig/Particles/u insert HPConstructor:Incoming 2 /Herwig/Particles/ubar insert HPConstructor:Incoming 3 /Herwig/Particles/d insert HPConstructor:Incoming 4 /Herwig/Particles/dbar insert HPConstructor:Outgoing 0 /Herwig/Particles/~u_L insert HPConstructor:Outgoing 1 /Herwig/Particles/~u_Lbar insert HPConstructor:Outgoing 2 /Herwig/Particles/~d_L insert HPConstructor:Outgoing 3 /Herwig/Particles/~d_Lbar # --- Perturbative Decays --- # Read in the spectrum file and optional decay table. # If a decay table is in a separate file # then add another 'setup' line with that # file as the argument. The provided # spectrum file is an example using SPheno 2.2.3 setup MSSM/Model CMSSM40.1.1.slha # To disable a particular decay mode, add it's tag to the DisableModes # interface of the DecayConstructor object, i.e. #insert DecayConstructor:DisableModes 0 ~u_L->~chi_20,u; #insert DecayConstructor:DisableModes 1 ~chi_20->~e_R-,e+; # etc ... # To set a minimum allowed branching fraction (the default is shown) #set NewModel:MinimumBR 1e-6 # Intrinsic pT tune extrapolated to LHC energy set /Herwig/Shower/Evolver:IntrinsicPtGaussian 2.2*GeV # Other parameters for run cd /Herwig/Generators set LHCGenerator:NumberOfEvents 10000000 set LHCGenerator:RandomNumberGenerator:Seed 31122001 set LHCGenerator:PrintEvent 10 set LHCGenerator:MaxErrors 10000 saverun LHC-MSSM LHCGenerator ���������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/README��������������������������������������������������������������������������0000644�0001750�0001750�00000003303�11755415147�015644� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������============== Herwig++ 2.6.0 ============== This is the release of Herwig++ 2.6.0, a multi purpose event generator for high energy physics. The Herwig++ distribution contains an adapted version of LoopTools 2.6 <http://www.feynarts.de/looptools/>. Please contact <herwig@projects.hepforge.org> to be added to our list of users. This will allow you to make full use of the Wiki and bug tracker at http://projects.hepforge.org/herwig/trac/ BUILD AND INSTALL ================= Generic installation instructions are in the file INSTALL. Before attempting to build Herwig++, you'll need to get ThePEG installed. Herwig++ uses some functions from the GNU scientific library GSL. The gsl libraries and header files must be available on your system. Usually they can be found in a package called libgsl-dev. ------ ThePEG ------ Download ThePEG 1.8.0 or later from http://projects.hepforge.org/herwig/versions Do not build this package inside the Herwig++ source directory! $ tar xjvf ThePEG-*.tar.bz2 $ cd ThePEG* $ ./configure --prefix=/path/where/ThePEG/should/be/installed $ make $ make check $ make install Optional configure switches include --enable-unitchecks for checking dimensional correctness of physical expressions in the code, and --with-LHAPDF for linking against the LHAPDF library. See './configure --help' for more details. -------- Herwig++ -------- Download Herwig++, then $ tar xjvf Herwig++-*.tar.bz2 $ cd Herwig++* $ ./configure --prefix=/path/where/Herwig++/should/be/installed --with-thepeg=/path/where/ThePEG/was/installed $ make $ make check $ make install More detailed instructions can be found on the Herwig++ home page at http://projects.hepforge.org/herwig/trac/wiki/HerwigInstallation �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/�������������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464207�017373� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Utility/�����������������������������������������������������������0000755�0001750�0001750�00000000000�11756464207�021036� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Utility/DipolePartonSplitter.cc������������������������������������0000644�0001750�0001750�00000017426�11754474775�025517� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipolePartonSplitter.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipolePartonSplitter class. // #include "DipolePartonSplitter.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/EventRecord/ColourLine.h" using namespace Herwig; void DipolePartonSplitter::split(tPPtr parent, tPPtr firstChild, tPPtr secondChild, bool initialState) { firstChild->colourInfo(new_ptr(ColourBase())); secondChild->colourInfo(new_ptr(ColourBase())); if (!initialState) { parent->addChild(firstChild); parent->addChild(secondChild); } else { tPVector parents = parent->parents(); for (tPVector::const_iterator q = parents.begin(); q != parents.end(); ++q) { (**q).addChild(firstChild); (**q).abandonChild(parent); } firstChild->addChild(parent); firstChild->addChild(secondChild); } } void DipolePartonSplitter::split(tPPtr parent, tPPtr firstChild, tPPtr secondChild, tPPtr ref, bool initialState) { split(parent,firstChild,secondChild,initialState); // final state splittings if (!initialState) { // triplet radiating octet if (parent->hasColour() && !parent->hasAntiColour()) { assert(secondChild->hasColour() && secondChild->hasAntiColour() && firstChild->hasColour() && !firstChild->hasAntiColour()); secondChild->incomingColour(parent); firstChild->antiColourNeighbour(secondChild); return; } // anti-triplet radiating octet if (!parent->hasColour() && parent->hasAntiColour()) { assert(secondChild->hasColour() && secondChild->hasAntiColour() && !firstChild->hasColour() && firstChild->hasAntiColour()); secondChild->incomingAntiColour(parent); firstChild->colourNeighbour(secondChild); return; } // octet radiating octet if (parent->hasColour() && parent->hasAntiColour() && secondChild->hasColour() && secondChild->hasAntiColour()) { assert(firstChild->hasColour() && firstChild->hasAntiColour()); // check wether we radiated from the colour or anticolour line if (parent->colourLine() == ref->antiColourLine()) { firstChild->incomingAntiColour(parent); secondChild->incomingColour(parent); firstChild->antiColourNeighbour(secondChild); } else { firstChild->incomingColour(parent); secondChild->incomingAntiColour(parent); firstChild->colourNeighbour(secondChild); } return; } // octet splitting into triplet x anti-triplet if (parent->hasColour() && parent->hasAntiColour() && ( (secondChild->hasAntiColour() && !secondChild->hasColour()) || (!secondChild->hasAntiColour() && secondChild->hasColour()) )) { if (firstChild->hasColour()) { assert(!firstChild->hasAntiColour() && secondChild->hasAntiColour() && !secondChild->hasColour()); firstChild->incomingColour(parent); secondChild->incomingAntiColour(parent); return; } if (firstChild->hasAntiColour()) { assert(!firstChild->hasColour() && secondChild->hasColour() && !secondChild->hasAntiColour()); firstChild->incomingAntiColour(parent); secondChild->incomingColour(parent); return; } } } // initial state splittings if (initialState) { // triplet if (parent->hasColour() && !parent->hasAntiColour()) { if (secondChild->hasColour() && secondChild->hasAntiColour()) { // radiating octet assert(firstChild->hasColour() && !firstChild->hasAntiColour()); parent->antiColourNeighbour(secondChild); firstChild->outgoingColour(secondChild); } else { // 'radiating' anti-triplet assert(!secondChild->hasColour() && secondChild->hasAntiColour() && firstChild->hasColour() && firstChild->hasAntiColour()); secondChild->incomingAntiColour(firstChild); parent->colourLine()->addColoured(firstChild); } return; } // anti-triplet if (!parent->hasColour() && parent->hasAntiColour()) { if (secondChild->hasColour() && secondChild->hasAntiColour()) { // radiating octet assert(!firstChild->hasColour() && firstChild->hasAntiColour()); parent->colourNeighbour(secondChild); firstChild->outgoingAntiColour(secondChild); } else { // 'radiating' triplet assert(secondChild->hasColour() && !secondChild->hasAntiColour() && firstChild->hasColour() && firstChild->hasAntiColour()); secondChild->incomingColour(firstChild); parent->antiColourLine()->addAntiColoured(firstChild); } return; } // octet radiating octet if (parent->hasColour() && parent->hasAntiColour() && secondChild->hasColour() && secondChild->hasAntiColour()) { assert(firstChild->hasColour() && firstChild->hasAntiColour()); // check wether we radiated from the colour or anticolour line if (parent->colourLine() == ref->colourLine()) { parent->colourLine()->addAntiColoured(secondChild); parent->antiColourLine()->addAntiColoured(firstChild); secondChild->incomingColour(firstChild); } else { parent->antiColourLine()->addColoured(secondChild); parent->colourLine()->addColoured(firstChild); secondChild->incomingAntiColour(firstChild); } return; } // octet splitting into triplet x triplet if (parent->hasColour() && parent->hasAntiColour() && ( (secondChild->hasAntiColour() && !secondChild->hasColour()) || (!secondChild->hasAntiColour() && secondChild->hasColour()) )) { if (firstChild->hasColour()) { assert(!firstChild->hasAntiColour() && secondChild->hasColour() && !secondChild->hasAntiColour()); parent->colourLine()->addColoured(firstChild); parent->antiColourLine()->addColoured(secondChild); return; } if (firstChild->hasAntiColour()) { assert(!firstChild->hasColour() && secondChild->hasAntiColour() && !secondChild->hasColour()); parent->antiColourLine()->addAntiColoured(firstChild); parent->colourLine()->addAntiColoured(secondChild); return; } } } // should never happen assert(false); } void DipolePartonSplitter::change(tPPtr parent, tPPtr child, bool initialState) { child->colourInfo(new_ptr(ColourBase())); if (parent->hasColour()) parent->colourLine()->addColoured(child); if (parent->hasAntiColour()) parent->antiColourLine()->addAntiColoured(child); if (!initialState) { parent->addChild(child); } else { tPVector parents = parent->parents(); for (tPVector::const_iterator q = parents.begin(); q != parents.end(); ++q) { (**q).addChild(child); (**q).abandonChild(parent); } child->addChild(parent); } } bool DipolePartonSplitter::colourConnected(tcPPtr first, tcPPtr second) { if (!first->coloured() || !second->coloured()) return false; if (first->colourInfo()->colourLine()) { if (second->colourInfo()->colourLine() && first->colourInfo()->colourLine() == second->colourInfo()->colourLine()) return true; if (second->colourInfo()->antiColourLine() && first->colourInfo()->colourLine() == second->colourInfo()->antiColourLine()) return true; } if (first->colourInfo()->antiColourLine()) { if (second->colourInfo()->colourLine() && first->colourInfo()->antiColourLine() == second->colourInfo()->colourLine()) return true; if (second->colourInfo()->antiColourLine() && first->colourInfo()->antiColourLine() == second->colourInfo()->antiColourLine()) return true; } return false; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Utility/DipoleMCCheck.h��������������������������������������������0000644�0001750�0001750�00000012615�11754474775�023617� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleMCCheck.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipoleMCCheck_H #define HERWIG_DipoleMCCheck_H // // This is the declaration of the DipoleMCCheck class. // #include "ThePEG/Handlers/HandlerBase.h" #include "Herwig++/Utilities/Histogram.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief DipoleMCCheck is used to perform checks for * the dipole shower. * * @see \ref DipoleMCCheckInterfaces "The interfaces" * defined for DipoleMCCheck. */ class DipoleMCCheck: public HandlerBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ DipoleMCCheck(); /** * The destructor. */ virtual ~DipoleMCCheck(); //@} public: /** * Book a point. */ void book(double xe,double xs, Energy dScale, Energy hardPt, Energy pt, double z, double weight); 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: /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The number of bins in the starting scale * divided by the dipole scale, the upper bound * is 1/2. */ unsigned int theHardPtBins; /** * The number of bins in the emitter fraction. * The lenght of the zero bin is taken to be * 10^(-7). */ unsigned int theEmitterXBins; /** * The number of bins in the spectator fraction. * The lenght of the zero bin is taken to be * 10^(-7). */ unsigned int theSpectatorXBins; /** * The number of bins in pt dicided by the * dipole scale; the upper bound is 1/2 */ unsigned int thePtBins; /** * The number of bins in z */ unsigned int theZBins; /** * The recursive map structure: xe, xs, hard pt / GeV * to histograms for pt and z; * output is done such that there's one file for each * xe,xs bin, including all histograms for the * hard pt bins. */ map<double, map<double, map<double, pair<Ptr<Histogram>::ptr,Ptr<Histogram>::ptr> > > > histoMap; /** * Helper to make logarithmic bins. */ vector<double> makeLogBins(double xlow, double xup, unsigned int n) const; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<DipoleMCCheck> initDipoleMCCheck; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DipoleMCCheck & operator=(const DipoleMCCheck &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DipoleMCCheck. */ template <> struct BaseClassTrait<Herwig::DipoleMCCheck,1> { /** Typedef of the first base class of DipoleMCCheck. */ typedef HandlerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the DipoleMCCheck class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DipoleMCCheck> : public ClassTraitsBase<Herwig::DipoleMCCheck> { /** Return a platform-independent class name */ static string className() { return "Herwig::DipoleMCCheck"; } /** * The name of a file containing the dynamic library where the class * DipoleMCCheck is implemented. It may also include several, space-separated, * libraries if the class DipoleMCCheck depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_DipoleMCCheck_H */ �������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Utility/IntrinsicPtGenerator.cc������������������������������������0000644�0001750�0001750�00000013176�11754474775�025503� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IntrinsicPtGenerator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IntrinsicPtGenerator class. // #include "IntrinsicPtGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Config/Constants.h" #include "DipolePartonSplitter.h" #include "Herwig++/Shower/ShowerHandler.h" #include "Herwig++/PDF/HwRemDecayer.h" using namespace Herwig; IntrinsicPtGenerator::IntrinsicPtGenerator() : HandlerBase(), theValenceIntrinsicPtScale(1.0*GeV), theSeaIntrinsicPtScale(1.0*GeV) {} IntrinsicPtGenerator::~IntrinsicPtGenerator() {} IBPtr IntrinsicPtGenerator::clone() const { return new_ptr(*this); } IBPtr IntrinsicPtGenerator::fullclone() const { return new_ptr(*this); } SpinOneLorentzRotation IntrinsicPtGenerator::kick(PPair& in, PList& intermediates) { if ( theValenceIntrinsicPtScale == 0.0*GeV && theSeaIntrinsicPtScale == 0.0*GeV ) return SpinOneLorentzRotation(); assert(ShowerHandler::currentHandler()); tHwRemDecPtr remDec = ShowerHandler::currentHandler()->remnantDecayer(); assert(remDec); Lorentz5Momentum Q = in.first->momentum() + in.second->momentum(); // first parton if (in.first->coloured()) { Axis perp; Energy pt = 0.*GeV; double phi = 2.*Constants::pi*UseRandom::rnd(); Axis dir = in.first->momentum().vect().unit(); perp = dir.orthogonal(); perp.rotate(phi,dir); double r = sqrt(-log(1.-UseRandom::rnd())); if ( remDec->content().first.isValenceQuark(in.first) ) pt = sqrt(2.) * theValenceIntrinsicPtScale * r; else { assert(in.first->id() == ParticleID::g || remDec->content().first.isSeaQuark(in.first)); pt = sqrt(2.) * theSeaIntrinsicPtScale * r; } PPtr nin = new_ptr(Particle(in.first->dataPtr())); DipolePartonSplitter::change(in.first,nin,true); nin->set5Momentum(Lorentz5Momentum(0.*GeV,in.first->momentum().vect() + pt * perp)); intermediates.push_back(in.first); in.first = nin; } // second parton if (in.second->coloured()) { Axis perp; Energy pt = 0.*GeV; double phi = 2.*Constants::pi*UseRandom::rnd(); Axis dir = in.second->momentum().vect().unit(); perp = dir.orthogonal(); perp.rotate(phi,dir); double r = sqrt(-log(1.-UseRandom::rnd())); if ( remDec->content().second.isValenceQuark(in.second) ) pt = sqrt(2.) * theValenceIntrinsicPtScale * r; else { assert(in.second->id() == ParticleID::g || remDec->content().second.isSeaQuark(in.second)); pt = sqrt(2.) * theSeaIntrinsicPtScale * r; } PPtr nin = new_ptr(Particle(in.second->dataPtr())); nin->colourInfo(new_ptr(ColourBase())); DipolePartonSplitter::change(in.second,nin,true); nin->set5Momentum(Lorentz5Momentum(0.*GeV,in.second->momentum().vect() + pt * perp)); intermediates.push_back(in.second); in.second = nin; } // restore mometum conservation Lorentz5Momentum nQ = in.first->momentum() + in.second->momentum(); double x = Q.m()/nQ.m(); nQ *= x; // work around for constructor problems // in Lorentz5Vector constructor, mass is not guaranteed // to be zero, event it was set as such before, // since gets recalculated in the LorentzVector Lorentz5Momentum scaled = x * in.first->momentum(); scaled.setMass(ZERO); scaled.rescaleEnergy(); in.first->set5Momentum(scaled); scaled = x * in.second->momentum(); scaled.setMass(ZERO); scaled.rescaleEnergy(); in.second->set5Momentum(scaled); // apparently, this is more stable than boosting directly with // n_Q.boostVector()-Q.boostVector() Boost beta1 = -Q.boostVector(); Boost beta2 = nQ.boostVector(); SpinOneLorentzRotation transform (beta1); transform.boost(beta2); return transform; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IntrinsicPtGenerator::persistentOutput(PersistentOStream & os) const { os << ounit(theValenceIntrinsicPtScale,GeV) << ounit(theSeaIntrinsicPtScale,GeV); } void IntrinsicPtGenerator::persistentInput(PersistentIStream & is, int) { is >> iunit(theValenceIntrinsicPtScale,GeV) >> iunit(theSeaIntrinsicPtScale,GeV); } ClassDescription<IntrinsicPtGenerator> IntrinsicPtGenerator::initIntrinsicPtGenerator; // Definition of the static class description member. void IntrinsicPtGenerator::Init() { static ClassDocumentation<IntrinsicPtGenerator> documentation ("IntrinsicPtGenerator generates intrinsic pt for massless " "incoming partons in a shower independent way."); static Parameter<IntrinsicPtGenerator,Energy> interfaceValenceIntrinsicPtScale ("ValenceIntrinsicPtScale", "The width of the intrinsic pt Gaussian distribution for valence partons.", &IntrinsicPtGenerator::theValenceIntrinsicPtScale, GeV, 1.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); static Parameter<IntrinsicPtGenerator,Energy> interfaceSeaIntrinsicPtScale ("SeaIntrinsicPtScale", "The width of the intrinsic pt Gaussian distribution for sea partons.", &IntrinsicPtGenerator::theSeaIntrinsicPtScale, GeV, 1.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Utility/PDFRatio.h�������������������������������������������������0000644�0001750�0001750�00000010417�11754474775�022633� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PDFRatio.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_PDFRatio_H #define HERWIG_PDFRatio_H // // This is the declaration of the PDFRatio class. // #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/PDF/PDF.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief PDFRatio implements numerically stable PDF ratios. * * @see \ref PDFRatioInterfaces "The interfaces" * defined for PDFRatio. */ class PDFRatio: public HandlerBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ PDFRatio(); /** * The destructor. */ virtual ~PDFRatio(); //@} public: /** * For the given PDF, scale and partons from and to and * x,z values return the ratio xf_to(x/z) / xf_from(x) */ double operator() (const PDF& pdf, Energy2 scale, tcPDPtr from, tcPDPtr to, double x, double z) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The x from which on extrapolation should * be done for valence partons. */ double theValenceExtrapolation; /** * The x from which on extrapolation should * be done for sea partons. */ double theSeaExtrapolation; /** * The scale below which the PDF will be frozen */ Energy theFreezingScale; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<PDFRatio> initPDFRatio; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ PDFRatio & operator=(const PDFRatio &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of PDFRatio. */ template <> struct BaseClassTrait<Herwig::PDFRatio,1> { /** Typedef of the first base class of PDFRatio. */ typedef HandlerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the PDFRatio class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::PDFRatio> : public ClassTraitsBase<Herwig::PDFRatio> { /** Return a platform-independent class name */ static string className() { return "Herwig::PDFRatio"; } /** * The name of a file containing the dynamic library where the class * PDFRatio is implemented. It may also include several, space-separated, * libraries if the class PDFRatio depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_PDFRatio_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Utility/Makefile.in������������������������������������������������0000644�0001750�0001750�00000045140�11756461676�023116� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = DipoleShower/Utility DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwDipoleShowerUtility_la_LIBADD = am_libHwDipoleShowerUtility_la_OBJECTS = ConstituentReshuffler.lo \ IntrinsicPtGenerator.lo DipolePartonSplitter.lo PDFRatio.lo \ DipoleMCCheck.lo libHwDipoleShowerUtility_la_OBJECTS = \ $(am_libHwDipoleShowerUtility_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwDipoleShowerUtility_la_SOURCES) DIST_SOURCES = $(libHwDipoleShowerUtility_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwDipoleShowerUtility.la libHwDipoleShowerUtility_la_SOURCES = \ ConstituentReshuffler.h ConstituentReshuffler.cc \ IntrinsicPtGenerator.h IntrinsicPtGenerator.cc \ DipolePartonSplitter.h DipolePartonSplitter.cc \ PDFRatio.h PDFRatio.cc \ DipoleMCCheck.h DipoleMCCheck.cc all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu DipoleShower/Utility/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu DipoleShower/Utility/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwDipoleShowerUtility.la: $(libHwDipoleShowerUtility_la_OBJECTS) $(libHwDipoleShowerUtility_la_DEPENDENCIES) $(EXTRA_libHwDipoleShowerUtility_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwDipoleShowerUtility_la_OBJECTS) $(libHwDipoleShowerUtility_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ConstituentReshuffler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipoleMCCheck.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipolePartonSplitter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IntrinsicPtGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PDFRatio.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Utility/ConstituentReshuffler.h������������������������������������0000644�0001750�0001750�00000011532�11754474775�025567� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ConstituentReshuffler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_ConstituentReshuffler_H #define HERWIG_ConstituentReshuffler_H // // This is the declaration of the ConstituentReshuffler class. // #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/Utilities/Exception.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief The ConstituentReshuffler class implements reshuffling * of partons on their nominal mass shell to their constituent * mass shells. * */ class ConstituentReshuffler: public HandlerBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ ConstituentReshuffler(); /** * The destructor. */ virtual ~ConstituentReshuffler(); //@} public: /** * Reshuffle the outgoing partons to constituent * masses. Optionally, incoming partons are given * to absorb recoils. Add the non-reshuffled partons * to the intermediates list. Throw ConstituentReshufflerProblem * if a numerical problem prevents the solution of * the reshuffling equation. */ void reshuffle(PList& out, PPair& in, PList& intermediates); protected: /** * The function object defining the equation * to be solved. */ struct ReshuffleEquation { ReshuffleEquation (Energy q, PList::iterator m_begin, PList::iterator m_end) : w(q), p_begin(m_begin), p_end(m_end) {} typedef double ArgType; typedef double ValType; static double aUnit(); static double vUnit(); double operator() (double xi) const; Energy w; PList::iterator p_begin; PList::iterator p_end; }; 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<ConstituentReshuffler> initConstituentReshuffler; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ ConstituentReshuffler & operator=(const ConstituentReshuffler &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of ConstituentReshuffler. */ template <> struct BaseClassTrait<Herwig::ConstituentReshuffler,1> { /** Typedef of the first base class of ConstituentReshuffler. */ typedef HandlerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the ConstituentReshuffler class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::ConstituentReshuffler> : public ClassTraitsBase<Herwig::ConstituentReshuffler> { /** Return a platform-independent class name */ static string className() { return "Herwig::ConstituentReshuffler"; } /** * The name of a file containing the dynamic library where the class * ConstituentReshuffler is implemented. It may also include several, space-separated, * libraries if the class ConstituentReshuffler depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_ConstituentReshuffler_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Utility/DipoleMCCheck.cc�������������������������������������������0000644�0001750�0001750�00000015223�11754474775�023753� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleMCCheck.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipoleMCCheck class. // #include "DipoleMCCheck.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; DipoleMCCheck::DipoleMCCheck() : HandlerBase(), theHardPtBins(10), theEmitterXBins(5), theSpectatorXBins(5), thePtBins(100), theZBins(100) { } DipoleMCCheck::~DipoleMCCheck() {} IBPtr DipoleMCCheck::clone() const { return new_ptr(*this); } IBPtr DipoleMCCheck::fullclone() const { return new_ptr(*this); } vector<double> DipoleMCCheck::makeLogBins(double xlow, double xup, unsigned int n) const { vector<double> res; double c = log10(xup/xlow) / (n-1.); for ( unsigned int k = 0; k < n; ++k ) res.push_back(xlow*pow(10.0,k*c)); return res; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void DipoleMCCheck::doinitrun() { HandlerBase::doinitrun(); vector<double> ptbins; double w = 0.5/theHardPtBins; for ( unsigned int k = 1; k <= theHardPtBins; ++k ) ptbins.push_back(k*w); vector<double> xebins; if ( theEmitterXBins > 1 ) xebins = makeLogBins(1e-7,1.0,theEmitterXBins); else xebins.push_back(1.0); vector<double> xsbins; if ( theSpectatorXBins > 1 ) xsbins = makeLogBins(1e-7,1.0,theSpectatorXBins); else xsbins.push_back(1.0); for ( vector<double>::const_iterator xeit = xebins.begin(); xeit != xebins.end(); ++xeit ) { map<double, map<double, pair<Ptr<Histogram>::ptr,Ptr<Histogram>::ptr> > > xebin; for ( vector<double>::const_iterator xsit = xsbins.begin(); xsit != xsbins.end(); ++xsit ) { map<double, pair<Ptr<Histogram>::ptr,Ptr<Histogram>::ptr> > xsbin; for ( vector<double>::const_iterator ptit = ptbins.begin(); ptit != ptbins.end(); ++ptit ) { pair<Ptr<Histogram>::ptr,Ptr<Histogram>::ptr> ptbin (new_ptr(Histogram(0.0,0.5,thePtBins)), new_ptr(Histogram(0.0,1.0,theZBins))); xsbin[*ptit] = ptbin; } xebin[*xsit] = xsbin; } histoMap[*xeit] = xebin; } } void DipoleMCCheck::dofinish() { HandlerBase::dofinish(); map<double, map<double, map<double, pair<Ptr<Histogram>::ptr,Ptr<Histogram>::ptr> > > >::iterator xeit; map<double, map<double, pair<Ptr<Histogram>::ptr,Ptr<Histogram>::ptr> > >::iterator xsit; map<double, pair<Ptr<Histogram>::ptr,Ptr<Histogram>::ptr> >::iterator ptit; double xelow = 0.0; double xeup = 0.0; for ( xeit = histoMap.begin(); xeit != histoMap.end(); ++xeit ) { xeup = xelow + xeit->first; double xslow = 0.0; double xsup = 0.0; for ( xsit = xeit->second.begin(); xsit != xeit->second.end(); ++xsit ) { xsup = xslow + xsit->first; // open files here ostringstream ptFileName; ptFileName << name() << "_pt_" << xelow << "_" << xeup << "_" << xslow << "_" << xsup << ".dat"; ofstream ptFile(ptFileName.str().c_str()); ostringstream zFileName; zFileName << name() << "_z_" << xelow << "_" << xeup << "_" << xslow << "_" << xsup << ".dat"; ofstream zFile(zFileName.str().c_str()); double ptlow = 0.0; double ptup = 0.0; for ( ptit = xsit->second.begin(); ptit != xsit->second.end(); ++ptit ) { ptup = ptlow + ptit->first; // dump histos here ptFile << "#\n# " << ptlow << " < \\kappa < " << ptup << "\n#\n"; zFile << "#\n# " << ptlow << " < \\kappa < " << ptup << "\n#\n"; ptit->second.first->simpleOutput(ptFile,false); ptit->second.second->simpleOutput(zFile,false); ptFile << "\n\n\n"; zFile << "\n\n\n"; ptlow = ptup; } xslow = xsup; } xelow = xeup; } } void DipoleMCCheck::book(double xe,double xs, Energy dScale, Energy hardPt, Energy pt, double z, double weight) { map<double, map<double, map<double, pair<Ptr<Histogram>::ptr,Ptr<Histogram>::ptr> > > >::iterator xeit; map<double, map<double, pair<Ptr<Histogram>::ptr,Ptr<Histogram>::ptr> > >::iterator xsit; map<double, pair<Ptr<Histogram>::ptr,Ptr<Histogram>::ptr> >::iterator ptit; if ( theEmitterXBins == 1 || xe >= 1. ) xeit = --histoMap.end(); else xeit = histoMap.upper_bound(xe); if ( theSpectatorXBins == 1 || xs >= 1. ) xsit = --(xeit->second.end()); else xsit = xeit->second.upper_bound(xs); if ( theHardPtBins == 1 || hardPt/dScale >= 0.5 ) ptit = --(xsit->second.end()); else ptit = xsit->second.upper_bound(hardPt/dScale); ptit->second.first->addWeighted(pt/dScale,weight); ptit->second.second->addWeighted(z,weight); } void DipoleMCCheck::persistentOutput(PersistentOStream & os) const { os << theHardPtBins << theEmitterXBins << theSpectatorXBins << thePtBins << theZBins; } void DipoleMCCheck::persistentInput(PersistentIStream & is, int) { is >> theHardPtBins >> theEmitterXBins >> theSpectatorXBins >> thePtBins >> theZBins; } ClassDescription<DipoleMCCheck> DipoleMCCheck::initDipoleMCCheck; // Definition of the static class description member. void DipoleMCCheck::Init() { static ClassDocumentation<DipoleMCCheck> documentation ("DipoleMCCheck is used to perform checks for " "the dipole shower."); static Parameter<DipoleMCCheck,unsigned int> interfaceHardPtBins ("HardPtBins", "HardPtBins", &DipoleMCCheck::theHardPtBins, 10, 1, 0, false, false, Interface::lowerlim); static Parameter<DipoleMCCheck,unsigned int> interfaceEmitterXBins ("EmitterXBins", "EmitterXBins", &DipoleMCCheck::theEmitterXBins, 5, 1, 0, false, false, Interface::lowerlim); static Parameter<DipoleMCCheck,unsigned int> interfaceSpectatorXBins ("SpectatorXBins", "SpectatorXBins", &DipoleMCCheck::theSpectatorXBins, 5, 1, 0, false, false, Interface::lowerlim); static Parameter<DipoleMCCheck,unsigned int> interfacePtBins ("PtBins", "PtBins", &DipoleMCCheck::thePtBins, 100, 1, 0, false, false, Interface::lowerlim); static Parameter<DipoleMCCheck,unsigned int> interfaceZBins ("ZBins", "ZBins", &DipoleMCCheck::theZBins, 100, 1, 0, false, false, Interface::lowerlim); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Utility/PDFRatio.cc������������������������������������������������0000644�0001750�0001750�00000007336�11754474775�022777� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // PDFRatio.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the PDFRatio class. // #include "PDFRatio.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/Shower/ShowerHandler.h" #include "Herwig++/PDF/HwRemDecayer.h" using namespace Herwig; PDFRatio::PDFRatio() : HandlerBase(), theValenceExtrapolation(0.7), theSeaExtrapolation(0.6), theFreezingScale(1.0*GeV) {} PDFRatio::~PDFRatio() {} IBPtr PDFRatio::clone() const { return new_ptr(*this); } IBPtr PDFRatio::fullclone() const { return new_ptr(*this); } double PDFRatio::operator() (const PDF& pdf, Energy2 scale, tcPDPtr from, tcPDPtr to, double x, double z) const { if ( x/z > 1.0 ) return 0.0; if ( scale < sqr(theFreezingScale) ) scale = sqr(theFreezingScale); tcHwRemDecPtr remDec = ShowerHandler::currentHandler()->remnantDecayer(); const HwRemDecayer::HadronContent* theContent = 0; if ( remDec->content().first.hadron == pdf.particle() ) { theContent = &(remDec->content().first); } if ( remDec->content().second.hadron == pdf.particle() ) { theContent = &(remDec->content().second); } assert(theContent); double exFrom = theContent->isValenceQuarkData(from) ? theValenceExtrapolation : theSeaExtrapolation; double exTo = theContent->isValenceQuarkData(to) ? theValenceExtrapolation : theSeaExtrapolation; double xTo = x/z; double fromPDF = x < exFrom ? pdf.xfx(from,scale,x) : ((1.-x)/(1.-exFrom)) * pdf.xfx(from,scale,exFrom); if ( abs(fromPDF) < 1e-8 ) fromPDF = 0.0; double toPDF = xTo < exTo ? pdf.xfx(to,scale,xTo) : ((1.-xTo)/(1.-exTo)) * pdf.xfx(to,scale,exTo); if ( abs(toPDF) < 1e-8 ) toPDF = 0.0; if ( toPDF == 0.0 || fromPDF == 0.0 ) return 0.0; return toPDF / fromPDF; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void PDFRatio::persistentOutput(PersistentOStream & os) const { os << theValenceExtrapolation << theSeaExtrapolation << ounit(theFreezingScale,GeV); } void PDFRatio::persistentInput(PersistentIStream & is, int) { is >> theValenceExtrapolation >> theSeaExtrapolation >> iunit(theFreezingScale,GeV); } ClassDescription<PDFRatio> PDFRatio::initPDFRatio; // Definition of the static class description member. void PDFRatio::Init() { static ClassDocumentation<PDFRatio> documentation ("PDFRatio implements numerically stable pdf ratios."); static Parameter<PDFRatio,double> interfaceValenceExtrapolation ("ValenceExtrapolation", "The x from which on extrapolation should be done for valence partons.", &PDFRatio::theValenceExtrapolation, 0.7, 0.0, 1.0, false, false, Interface::limited); static Parameter<PDFRatio,double> interfaceSeaExtrapolation ("SeaExtrapolation", "The x from which on extrapolation should be done for valence partons.", &PDFRatio::theSeaExtrapolation, 0.6, 0.0, 1.0, false, false, Interface::limited); static Parameter<PDFRatio,Energy> interfaceFreezingScale ("FreezingScale", "The scale below which the PDFs are frozen.", &PDFRatio::theFreezingScale, GeV, 1.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Utility/Makefile.am������������������������������������������������0000644�0001750�0001750�00000000455�11754474775�023107� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwDipoleShowerUtility.la libHwDipoleShowerUtility_la_SOURCES = \ ConstituentReshuffler.h ConstituentReshuffler.cc \ IntrinsicPtGenerator.h IntrinsicPtGenerator.cc \ DipolePartonSplitter.h DipolePartonSplitter.cc \ PDFRatio.h PDFRatio.cc \ DipoleMCCheck.h DipoleMCCheck.cc�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Utility/DipolePartonSplitter.h�������������������������������������0000644�0001750�0001750�00000004037�11754474775�025353� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipolePartonSplitter.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipolePartonSplitter_H #define HERWIG_DipolePartonSplitter_H // // This is the declaration of the DipolePartonSplitter class. // #include "ThePEG/EventRecord/Particle.fh" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief The DipolePartonSplitter is a helper class to fix up * colour and mother-child relations in typical shower * splittings. * */ struct DipolePartonSplitter { /** * Fix up mother child relations for splitting the first * to the second and third parton; use conventions * of a backward splitting, if initialState is true. * In this case, the first child is assumed to be the * new incoming parton. */ static void split(tPPtr parent, tPPtr firstChild, tPPtr secondChild, bool initialState); /** * Fix up relations for splitting the first * to the second and third parton; use conventions * of a backward splitting, if initialState is true. * In this case, the first child is assumed to be the * new incoming parton. A reference is given to * determine which colour line did actually radiate * in case of ambiguities, in the sense that the * colour connected parent-ref pair raidated as a dipole. */ static void split(tPPtr parent, tPPtr firstChild, tPPtr secondChild, tPPtr ref, bool initialState); /** * Fix up relations for the case that * the new parton instance exists only * due to changes in e.g. kinematics. */ static void change(tPPtr parent, tPPtr child, bool initialState); /** * Return true, if the given partons are colour connected. */ static bool colourConnected(tcPPtr first, tcPPtr second); }; } #endif /* HERWIG_DipolePartonSplitter_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Utility/IntrinsicPtGenerator.h�������������������������������������0000644�0001750�0001750�00000011112�11754474775�025331� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IntrinsicPtGenerator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IntrinsicPtGenerator_H #define HERWIG_IntrinsicPtGenerator_H // // This is the declaration of the IntrinsicPtGenerator class. // #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/Vectors/SpinOneLorentzRotation.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief IntrinsicPtGenerator generates intrinsic pt for massless * incoming partons in a shower independent way. * * @see \ref IntrinsicPtGeneratorInterfaces "The interfaces" * defined for IntrinsicPtGenerator. */ class IntrinsicPtGenerator: public HandlerBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IntrinsicPtGenerator(); /** * The destructor. */ virtual ~IntrinsicPtGenerator(); //@} public: /** * Generate intrinsic pt for the given incoming * partons and return the transformation to be * applied on the final state particles. Add the * old incoming partons to the given list. */ SpinOneLorentzRotation kick(PPair& in, PList& intermediates); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The mean of the Gaussian distribution for * the intrinsic pt of valence partons. */ Energy theValenceIntrinsicPtScale; /** * The mean of the Gaussian distribution for * the intrinsic pt of sea partons. */ Energy theSeaIntrinsicPtScale; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<IntrinsicPtGenerator> initIntrinsicPtGenerator; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IntrinsicPtGenerator & operator=(const IntrinsicPtGenerator &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of IntrinsicPtGenerator. */ template <> struct BaseClassTrait<Herwig::IntrinsicPtGenerator,1> { /** Typedef of the first base class of IntrinsicPtGenerator. */ typedef HandlerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the IntrinsicPtGenerator class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::IntrinsicPtGenerator> : public ClassTraitsBase<Herwig::IntrinsicPtGenerator> { /** Return a platform-independent class name */ static string className() { return "Herwig::IntrinsicPtGenerator"; } /** * The name of a file containing the dynamic library where the class * IntrinsicPtGenerator is implemented. It may also include several, space-separated, * libraries if the class IntrinsicPtGenerator depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_IntrinsicPtGenerator_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Utility/ConstituentReshuffler.cc�����������������������������������0000644�0001750�0001750�00000014237�11754474775�025732� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // ConstituentReshuffler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the ConstituentReshuffler class. // #include "ConstituentReshuffler.h" #include "ThePEG/Interface/ClassDocumentation.h" #include <limits> #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "DipolePartonSplitter.h" #include "Herwig++/Utilities/GSLBisection.h" #include "Herwig++/DipoleShower/DipoleShowerHandler.h" using namespace Herwig; ConstituentReshuffler::ConstituentReshuffler() : HandlerBase() {} ConstituentReshuffler::~ConstituentReshuffler() {} IBPtr ConstituentReshuffler::clone() const { return new_ptr(*this); } IBPtr ConstituentReshuffler::fullclone() const { return new_ptr(*this); } double ConstituentReshuffler::ReshuffleEquation::aUnit() { return 1.; } double ConstituentReshuffler::ReshuffleEquation::vUnit() { return 1.; } double ConstituentReshuffler::ReshuffleEquation::operator() (double xi) const { double r = - w/GeV; for (PList::iterator p = p_begin; p != p_end; ++p) { r += sqrt(sqr((**p).dataPtr()->constituentMass()) + xi*xi*(sqr((**p).momentum().t())-sqr((**p).dataPtr()->mass()))) / GeV; } return r; } void ConstituentReshuffler::reshuffle(PList& out, PPair& in, PList& intermediates) { if (out.size() == 0) return; if (out.size() == 1) { PPtr recoiler; PPtr parton = out.front(); if (DipolePartonSplitter::colourConnected(parton,in.first) && DipolePartonSplitter::colourConnected(parton,in.second)) { if (UseRandom::rnd() < .5) recoiler = in.first; else recoiler = in.second; } else if (DipolePartonSplitter::colourConnected(parton,in.first)) { recoiler = in.first; } else if (DipolePartonSplitter::colourConnected(parton,in.second)) { recoiler = in.second; } else assert(false); assert(abs(recoiler->momentum().vect().perp2()/GeV2) < 1e-6); double sign = recoiler->momentum().z() < 0.*GeV ? -1. : 1.; Energy2 qperp2 = parton->momentum().perp2(); if (qperp2/GeV2 < Constants::epsilon) { // no emission off a 2 -> singlet process which // needed a single forced splitting: should never happen (?) assert(false); throw Veto(); } Energy2 m2 = sqr(parton->dataPtr()->constituentMass()); Energy abs_q = parton->momentum().vect().mag(); Energy qz = parton->momentum().z(); Energy abs_pz = recoiler->momentum().t(); assert(abs_pz > 0.*GeV); Energy xi_pz = sign*(2.*qperp2*abs_pz + m2*(abs_q + sign*qz))/(2.*qperp2); Energy x_qz = (2.*qperp2*qz + m2*(qz+sign*abs_q))/(2.*qperp2); Lorentz5Momentum recoiler_momentum (0.*GeV,0.*GeV,xi_pz,xi_pz < 0.*GeV ? - xi_pz : xi_pz); recoiler_momentum.rescaleMass(); Lorentz5Momentum parton_momentum (parton->momentum().x(),parton->momentum().y(),x_qz,sqrt(m2+qperp2+x_qz*x_qz)); parton_momentum.rescaleMass(); PPtr n_parton = new_ptr(Particle(parton->dataPtr())); n_parton->set5Momentum(parton_momentum); DipolePartonSplitter::change(parton,n_parton,false); out.pop_front(); intermediates.push_back(parton); out.push_back(n_parton); PPtr n_recoiler = new_ptr(Particle(recoiler->dataPtr())); n_recoiler->set5Momentum(recoiler_momentum); DipolePartonSplitter::change(recoiler,n_recoiler,true); intermediates.push_back(recoiler); if (recoiler == in.first) { in.first = n_recoiler; } if (recoiler == in.second) { in.second = n_recoiler; } return; } Energy zero (0.*GeV); Lorentz5Momentum Q (zero,zero,zero,zero); for (PList::iterator p = out.begin(); p != out.end(); ++p) { Q += (**p).momentum(); } Boost beta = Q.findBoostToCM(); list<Lorentz5Momentum> mbackup; bool need_boost = (beta.mag2() > Constants::epsilon); if (need_boost) { for (PList::iterator p = out.begin(); p != out.end(); ++p) { Lorentz5Momentum mom = (**p).momentum(); mbackup.push_back(mom); (**p).set5Momentum(mom.boost(beta)); } } double xi; ReshuffleEquation solve (Q.m(),out.begin(),out.end()); GSLBisection solver(1e-10,1e-8,10000); try { xi = solver.value(solve,0.0,1.1); } catch (GSLBisection::GSLerror) { throw DipoleShowerHandler::RedoShower(); } catch (GSLBisection::IntervalError) { throw DipoleShowerHandler::RedoShower(); } PList reshuffled; list<Lorentz5Momentum>::const_iterator backup_it; if (need_boost) backup_it = mbackup.begin(); for (PList::iterator p = out.begin(); p != out.end(); ++p) { PPtr rp = new_ptr(Particle((**p).dataPtr())); DipolePartonSplitter::change(*p,rp,false); Lorentz5Momentum rm (xi*(**p).momentum().x(), xi*(**p).momentum().y(), xi*(**p).momentum().z(), sqrt(sqr((**p).dataPtr()->constituentMass()) + xi*xi*(sqr((**p).momentum().t())-sqr((**p).dataPtr()->mass())))); rm.rescaleMass(); if (need_boost) { (**p).set5Momentum(*backup_it); ++backup_it; rm.boost(-beta); } rp->set5Momentum(rm); intermediates.push_back(*p); reshuffled.push_back(rp); } out.clear(); out.splice(out.end(),reshuffled); } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void ConstituentReshuffler::persistentOutput(PersistentOStream &) const { } void ConstituentReshuffler::persistentInput(PersistentIStream &, int) { } ClassDescription<ConstituentReshuffler> ConstituentReshuffler::initConstituentReshuffler; // Definition of the static class description member. void ConstituentReshuffler::Init() { static ClassDocumentation<ConstituentReshuffler> documentation ("The ConstituentReshuffler class implements reshuffling " "of partons on their nominal mass shell to their constituent " "mass shells."); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/DipoleShowerHandler.h����������������������������������������������0000644�0001750�0001750�00000022171�11754474775�023462� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleShowerHandler.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipoleShowerHandler_H #define HERWIG_DipoleShowerHandler_H // // This is the declaration of the DipoleShowerHandler class. // #include "Herwig++/Shower/ShowerHandler.h" #include "Herwig++/DipoleShower/Base/DipoleSplittingInfo.h" #include "Herwig++/DipoleShower/Base/DipoleSplittingReweight.h" #include "Herwig++/DipoleShower/Kernels/DipoleSplittingKernel.h" #include "Herwig++/DipoleShower/Base/DipoleSplittingGenerator.h" #include "Herwig++/DipoleShower/Base/DipoleEventRecord.h" #include "Herwig++/DipoleShower/Base/DipoleEvolutionOrdering.h" #include "Herwig++/DipoleShower/Utility/ConstituentReshuffler.h" #include "Herwig++/DipoleShower/Utility/IntrinsicPtGenerator.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief The DipoleShowerHandler class manages the showering using * the dipole shower algorithm. * * @see \ref DipoleShowerHandlerInterfaces "The interfaces" * defined for DipoleShowerHandler. */ class DipoleShowerHandler: public ShowerHandler { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ DipoleShowerHandler(); /** * The destructor. */ virtual ~DipoleShowerHandler(); //@} public: /** * Indicate a problem in the shower. */ struct RedoShower {}; /** * Insert an additional splitting kernel. */ void addSplitting(Ptr<DipoleSplittingKernel>::ptr sp) { kernels.push_back(sp); } /** * Reset the alpha_s for all splitting kernels. */ void resetAlphaS(Ptr<AlphaSBase>::tptr); /** * Reset the splitting reweight for all splitting kernels. */ void resetReweight(Ptr<DipoleSplittingReweight>::tptr); protected: typedef multimap<DipoleIndex,Ptr<DipoleSplittingGenerator>::ptr> GeneratorMap; /** * The main method which manages the showering of a subprocess. */ virtual tPPair cascade(tSubProPtr sub, XCPtr xcomb); /** * Build splitting generators for the given * dipole index. */ void getGenerators(const DipoleIndex&, Ptr<DipoleSplittingReweight>::tptr rw = Ptr<DipoleSplittingReweight>::tptr()); /** * Setup the hard scales. */ void hardScales(); /** * Return the evolution ordering */ Ptr<DipoleEvolutionOrdering>::tptr evolutionOrdering() const { return theEvolutionOrdering; } /** * Reshuffle to constituent mass shells */ void constituentReshuffle(); /** * Access the generator map */ GeneratorMap& generators() { return theGenerators; } /** * Access the event record */ DipoleEventRecord& eventRecord() { return theEventRecord; } /** * Return the event record */ const DipoleEventRecord& eventRecord() const { return theEventRecord; } /** * Return the splitting kernels. */ const vector<Ptr<DipoleSplittingKernel>::ptr>& splittingKernels() const { return kernels; } /** * Realign the event such as to have the incoming partons along thre * beam axes. */ bool realign(); private: /** * Perform the cascade. */ void doCascade(unsigned int& emDone); /** * Get the winning splitting for the * given dipole and configuration. */ Energy getWinner(DipoleSplittingInfo& winner, const Dipole& dip, pair<bool,bool> conf); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 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(); /** * Initialize this object. Called in the run phase just before * a run begins. */ virtual void doinitrun(); /** * Finalize this object. Called in the run phase just after a * run has ended. Used eg. to write out statistics. */ virtual void dofinish(); //@} private: /** * The splitting kernels to be used. */ vector<Ptr<DipoleSplittingKernel>::ptr> kernels; /** * The evolution ordering considered */ Ptr<DipoleEvolutionOrdering>::ptr theEvolutionOrdering; /** * The ConstituentReshuffler to be used */ Ptr<ConstituentReshuffler>::ptr constituentReshuffler; /** * The intrinsic pt generator to be used. */ Ptr<IntrinsicPtGenerator>::ptr intrinsicPtGenerator; /** * A global alpha_s to be used for all splitting kernels. */ Ptr<AlphaSBase>::ptr theGlobalAlphaS; /** * Apply chain ordering to events from matrix * element corrections. */ bool chainOrderVetoScales; /** * Limit the number of emissions. * Limit applied if > 0. */ unsigned int nEmissions; /** * Discard events which did not radiate. */ bool discardNoEmissions; /** * Switch on or off final state radiation. */ bool doFSR; /** * Switch on or off initial state radiation. */ bool doISR; /** * The realignment scheme */ int realignmentScheme; /** * True, if first emission should use the available phase space */ bool hardFirstEmission; private: /** * The verbosity level. * 0 - print no info * 1 - print diagnostic information on setting up * splitting generators etc. * 2 - print detailed event information for up to * printEvent events. * 3 - print dipole chains after each splitting. */ int verbosity; /** * See verbosity. */ int printEvent; private: /** * The splitting generators indexed by the dipole * indices they can work on. */ GeneratorMap theGenerators; /** * The evnt record used. */ DipoleEventRecord theEventRecord; /** * The number of shoer tries so far. */ unsigned int nTries; /** * Whether or not we did radiate anything */ bool didRadiate; /** * Whether or not we did realign the event */ bool didRealign; private: /** * The factorization scale factor. */ double theFactorizationScaleFactor; /** * The renormalization scale factor. */ double theRenormalizationScaleFactor; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<DipoleShowerHandler> initDipoleShowerHandler; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DipoleShowerHandler & operator=(const DipoleShowerHandler &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DipoleShowerHandler. */ template <> struct BaseClassTrait<Herwig::DipoleShowerHandler,1> { /** Typedef of the first base class of DipoleShowerHandler. */ typedef Herwig::ShowerHandler NthBase; }; /** This template specialization informs ThePEG about the name of * the DipoleShowerHandler class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DipoleShowerHandler> : public ClassTraitsBase<Herwig::DipoleShowerHandler> { /** Return a platform-independent class name */ static string className() { return "Herwig::DipoleShowerHandler"; } /** * The name of a file containing the dynamic library where the class * DipoleShowerHandler is implemented. It may also include several, space-separated, * libraries if the class DipoleShowerHandler depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_DipoleShowerHandler_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Makefile.in��������������������������������������������������������0000644�0001750�0001750�00000064674�11756461676�021470� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = DipoleShower DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwDipoleShower_la_DEPENDENCIES = Base/libHwDipoleShowerBase.la \ Kernels/libHwDipoleShowerKernels.la \ Kinematics/libHwDipoleShowerKinematics.la \ Utility/libHwDipoleShowerUtility.la am_HwDipoleShower_la_OBJECTS = DipoleShowerHandler.lo HwDipoleShower_la_OBJECTS = $(am_HwDipoleShower_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwDipoleShower_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwDipoleShower_la_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwDipoleShower_la_SOURCES) DIST_SOURCES = $(HwDipoleShower_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = Base Kernels Kinematics Utility AlphaS pkglib_LTLIBRARIES = HwDipoleShower.la HwDipoleShower_la_LDFLAGS = -module -version-info 1:0:0 HwDipoleShower_la_LIBADD = \ Base/libHwDipoleShowerBase.la \ Kernels/libHwDipoleShowerKernels.la \ Kinematics/libHwDipoleShowerKinematics.la \ Utility/libHwDipoleShowerUtility.la HwDipoleShower_la_SOURCES = \ DipoleShowerHandler.h DipoleShowerHandler.cc all: all-recursive .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu DipoleShower/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu DipoleShower/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwDipoleShower.la: $(HwDipoleShower_la_OBJECTS) $(HwDipoleShower_la_DEPENDENCIES) $(EXTRA_HwDipoleShower_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwDipoleShower_la_LINK) -rpath $(pkglibdir) $(HwDipoleShower_la_OBJECTS) $(HwDipoleShower_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipoleShowerHandler.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done cscopelist-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \ cscopelist-recursive ctags-recursive install-am install-strip \ tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ clean-pkglibLTLIBRARIES cscopelist cscopelist-recursive ctags \ ctags-recursive distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ��������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/AlphaS/������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464207�020543� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/AlphaS/nlo_alpha_s.cc����������������������������������������������0000644�0001750�0001750�00000005476�11754474775�023356� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // couplings/nlo_alpha_s.cc is part of matchbox // (C) 2008 Simon Platzer -- sp@particle.uni-karlsruhe.de #include "nlo_alpha_s.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace matchbox; nlo_alpha_s::nlo_alpha_s() : alpha_s(), freezing_scale_(1.*GeV), exact_evaluation_(true) { } nlo_alpha_s::~nlo_alpha_s() {} IBPtr nlo_alpha_s::clone() const { return new_ptr(*this); } IBPtr nlo_alpha_s::fullclone() const { return new_ptr(*this); } void nlo_alpha_s::persistentOutput(PersistentOStream & os) const { os << ounit(freezing_scale_,GeV) << exact_evaluation_; } void nlo_alpha_s::persistentInput(PersistentIStream & is, int) { is >> iunit(freezing_scale_,GeV) >> exact_evaluation_; } ClassDescription<nlo_alpha_s> nlo_alpha_s::initnlo_alpha_s; // Definition of the static class description member. void nlo_alpha_s::Init() { static ClassDocumentation<nlo_alpha_s> documentation ("NLO running alpha_s"); static Parameter<nlo_alpha_s,Energy> interfacefreezing_scale ("freezing_scale", "Freeze alpha_s below given scale", &nlo_alpha_s::freezing_scale_, GeV, 1.0*GeV, 0.0*GeV, 0*GeV, true, false, Interface::lowerlim); static Switch<nlo_alpha_s,bool> interfaceexact_evaluation ("exact_evaluation", "Wether to exactly evaluate the running or use running for large scales", &nlo_alpha_s::exact_evaluation_, true, true, false); static SwitchOption interfaceexact_evaluationexact (interfaceexact_evaluation, "exact", "Perform exact evaluation", true); static SwitchOption interfaceexact_evaluationlarge_scale (interfaceexact_evaluation, "large_scale", "Perform approximate evaluation for large scales", false); } double nlo_alpha_s::operator () (Energy2 scale, Energy2 lambda2, unsigned int nf) const { if (scale < sqr(freezing_scale_)) { scale = sqr(freezing_scale_); nf = active_flavours(scale); lambda2 = lambda_squared(nf); } double beta0 = (33.-2.*nf)/(12.*Constants::pi); double beta1 = (153.-19.*nf)/(24.*sqr(Constants::pi)); if (exact_evaluation_) { rg_solver().f.slog = log(scale/lambda2); rg_solver().f.nf = nf; double slog = rg_solver().f.slog; double center = (1./(beta0*slog))* (1. - (beta1/sqr(beta0)) * log(slog)/slog + sqr(beta1/(sqr(beta0)*slog)) * (sqr(log(slog)-.5) - 5./4.)); return rg_solver().solve(make_pair(.5*center,1.5*center)); } else { double slog = log(scale/lambda2); return (1./(beta0*slog))* (1. - (beta1/sqr(beta0)) * log(slog)/slog + sqr(beta1/(sqr(beta0)*slog)) * (sqr(log(slog)-.5) - 5./4.)); } return 0.; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/AlphaS/Makefile.in�������������������������������������������������0000644�0001750�0001750�00000051773�11756461676�022634� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = DipoleShower/AlphaS DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(pkglibdir)" LTLIBRARIES = $(pkglib_LTLIBRARIES) HwDipoleShowerAlphaS_la_LIBADD = am_HwDipoleShowerAlphaS_la_OBJECTS = alpha_s.lo lo_alpha_s.lo \ nlo_alpha_s.lo gsl.lo HwDipoleShowerAlphaS_la_OBJECTS = \ $(am_HwDipoleShowerAlphaS_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent HwDipoleShowerAlphaS_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(AM_CXXFLAGS) $(CXXFLAGS) $(HwDipoleShowerAlphaS_la_LDFLAGS) \ $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(HwDipoleShowerAlphaS_la_SOURCES) DIST_SOURCES = $(HwDipoleShowerAlphaS_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ pkglib_LTLIBRARIES = HwDipoleShowerAlphaS.la HwDipoleShowerAlphaS_la_LDFLAGS = -module -version-info 1:0:0 HwDipoleShowerAlphaS_la_SOURCES = \ alpha_s.h \ alpha_s.cc \ lo_alpha_s.h \ lo_alpha_s.cc \ nlo_alpha_s.h \ nlo_alpha_s.cc \ gsl.h \ gsl.tcc \ gsl.cc all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu DipoleShower/AlphaS/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu DipoleShower/AlphaS/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done clean-pkglibLTLIBRARIES: -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) @list='$(pkglib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } HwDipoleShowerAlphaS.la: $(HwDipoleShowerAlphaS_la_OBJECTS) $(HwDipoleShowerAlphaS_la_DEPENDENCIES) $(EXTRA_HwDipoleShowerAlphaS_la_DEPENDENCIES) $(AM_V_CXXLD)$(HwDipoleShowerAlphaS_la_LINK) -rpath $(pkglibdir) $(HwDipoleShowerAlphaS_la_OBJECTS) $(HwDipoleShowerAlphaS_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alpha_s.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lo_alpha_s.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlo_alpha_s.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(pkglibdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkglibLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-pkglibLTLIBRARIES install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-pkglibLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: �����herwig++-2.6.0.orig/DipoleShower/AlphaS/gsl.h�������������������������������������������������������0000644�0001750�0001750�00000002244�11754474775�021514� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // math/gsl.h is part of matchbox // (C) 2008 Simon Platzer -- sp@particle.uni-karlsruhe.de #ifndef matchbox_math_gsl_h #define matchbox_math_gsl_h #include "gsl/gsl_math.h" #include "gsl/gsl_roots.h" #include "ThePEG/Utilities/Exception.h" namespace matchbox { namespace gsl { /// exception class for GSL problems struct gsl_exception : public ThePEG::Exception { }; /// wrapper araound the bisection root solver template<class Function, unsigned long MaxIterations> struct bisection_root_solver { /// constructor -- allocates the solver inline bisection_root_solver (const Function& thef) : f(thef) { s = gsl_root_fsolver_alloc (gsl_root_fsolver_bisection); } /// destructor -- frees the solver ~bisection_root_solver () { gsl_root_fsolver_free (s); } /// solve for root given initial interval double solve (std::pair<double,double> interval, double precision = .000001); /// function object representing the equation to be solved Function f; /// the gsl solver used gsl_root_fsolver * s; }; } } #include "gsl.tcc" #endif // matchbox_math_gsl_h ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/AlphaS/lo_alpha_s.cc�����������������������������������������������0000644�0001750�0001750�00000003071�11754474775�023165� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // couplings/lo_alpha_s.cc is part of matchbox // (C) 2008 Simon Platzer -- sp@particle.uni-karlsruhe.de #include "lo_alpha_s.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace matchbox; lo_alpha_s::lo_alpha_s() : alpha_s(), freezing_scale_(1.*GeV) {} lo_alpha_s::~lo_alpha_s() {} IBPtr lo_alpha_s::clone() const { return new_ptr(*this); } IBPtr lo_alpha_s::fullclone() const { return new_ptr(*this); } void lo_alpha_s::persistentOutput(PersistentOStream & os) const { os << ounit(freezing_scale_,GeV); } void lo_alpha_s::persistentInput(PersistentIStream & is, int) { is >> iunit(freezing_scale_,GeV); } ClassDescription<lo_alpha_s> lo_alpha_s::initlo_alpha_s; // Definition of the static class description member. void lo_alpha_s::Init() { static ClassDocumentation<lo_alpha_s> documentation ("LO running alpha_s"); static Parameter<lo_alpha_s,Energy> interfacefreezing_scale ("freezing_scale", "Freeze alpha_s below given scale", &lo_alpha_s::freezing_scale_, GeV, 1.0*GeV, 0.0*GeV, 0*GeV, true, false, Interface::lowerlim); } double lo_alpha_s::operator () (Energy2 scale, Energy2 lambda2, unsigned int nf) const { if (scale < sqr(freezing_scale_)) { scale = sqr(freezing_scale_); nf = active_flavours(scale); lambda2 = lambda_squared(nf); } double beta0 = (33.-2.*nf)/(12.*Constants::pi); return 1./(beta0*log(scale/lambda2)); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/AlphaS/gsl.cc������������������������������������������������������0000644�0001750�0001750�00000001174�11754474775�021653� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // math/gsl.cc is part of matchbox // (C) 2008 Simon Platzer -- sp@particle.uni-karlsruhe.de #include "ThePEG/Utilities/Throw.h" #include "gsl.h" using namespace matchbox::gsl; /// gsl error handler throwing gsl_exception void error_handler_wrapper (const char * msg, const char *, int, int) { ThePEG::Throw<gsl_exception> () << "Matchbox GSL interface : GSL exception : " << msg << ThePEG::Exception::runerror; } struct error_handler_resetter_ { inline error_handler_resetter_ () { gsl_set_error_handler(&error_handler_wrapper); } }; static error_handler_resetter_ error_handler_resetter; ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/AlphaS/Makefile.am�������������������������������������������������0000644�0001750�0001750�00000000403�11755412740�022566� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������pkglib_LTLIBRARIES = HwDipoleShowerAlphaS.la HwDipoleShowerAlphaS_la_LDFLAGS = -module -version-info 1:0:0 HwDipoleShowerAlphaS_la_SOURCES = \ alpha_s.h \ alpha_s.cc \ lo_alpha_s.h \ lo_alpha_s.cc \ nlo_alpha_s.h \ nlo_alpha_s.cc \ gsl.h \ gsl.tcc \ gsl.cc �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/AlphaS/alpha_s.h���������������������������������������������������0000644�0001750�0001750�00000021761�11754474775�022343� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // couplings/alpha_s.h is part of matchbox // (C) 2008 Simon Platzer -- sp@particle.uni-karlsruhe.de #ifndef matchbox_couplings_alpha_s_h #define matchbox_couplings_alpha_s_h #include <string> #include <boost/array.hpp> #include "ThePEG/Interface/Interfaced.h" #include "ThePEG/StandardModel/AlphaSBase.h" #include "gsl.h" namespace matchbox { using namespace ThePEG; template<class AlphaS> struct solve_lambda_below { typedef AlphaS alpha_s; inline solve_lambda_below (alpha_s* a, unsigned int n, Energy2 lambda2n, Energy2 mass2) : alpha(a), nf_in(n), lambda2_nf_in(lambda2n), threshold(mass2) {} alpha_s * alpha; unsigned int nf_in; Energy2 lambda2_nf_in; Energy2 threshold; inline double operator () (double lambda2) { return ((*alpha)(threshold,lambda2_nf_in,nf_in) - (*alpha)(threshold,lambda2*MeV2,nf_in-1)); } }; template<class AlphaS> struct solve_lambda_above { typedef AlphaS alpha_s; inline solve_lambda_above (alpha_s * a, unsigned int n, Energy2 lambda2n, Energy2 mass2) : alpha(a), nf_in(n), lambda2_nf_in(lambda2n), threshold(mass2) {} alpha_s * alpha; unsigned int nf_in; Energy2 lambda2_nf_in; Energy2 threshold; inline double operator () (double lambda2) { return ((*alpha)(threshold,lambda2_nf_in,nf_in) - (*alpha)(threshold,lambda2*MeV2,nf_in+1)); } }; template<class AlphaS> struct solve_input_lambda { typedef AlphaS alpha_s; inline solve_input_lambda (alpha_s * a, unsigned int n, double inalpha, Energy2 inscale) : alpha(a), nf_in(n), alpha_in(inalpha), scale_in(inscale) {} alpha_s * alpha; unsigned int nf_in; double alpha_in; Energy2 scale_in; inline double operator () (double lambda2) { return ((*alpha)(scale_in,lambda2*MeV2,nf_in) - alpha_in); } }; /** * Base class for the strong coupling. * * @see \ref alpha_sInterfaces "The interfaces" * defined for alpha_s. */ class alpha_s : public AlphaSBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ alpha_s(); /** * The destructor. */ virtual ~alpha_s(); //@} public: /** @name Virtual functions as required by AlphaSBase. */ //@{ /** * The \f$\alpha_S\f$. Return the QCD coupling for a given \a scale * using the given standard model object \a sm. */ virtual inline double value(Energy2 scale, const StandardModelBase &) const { return operator() (scale); } /** * Return the flavour thresholds used. The returned vector contains * (in position <code>i</code>) the scales when the active number of * flavours changes from <code>i</code> to <code>i+1</code>. */ virtual inline vector<Energy2> flavourThresholds() const { vector<Energy2> res (7); copy(quark_masses_squared_.begin(),quark_masses_squared_.end(),res.begin()); return res; } /** * Return the \f$\Lambda_{QCD}\f$ used for different numbers of * active flavours. */ virtual inline vector<Energy> LambdaQCDs() const { vector<Energy> res; for (size_t k = 0; k < 7; ++k) res.push_back(sqrt(lambda_squared_[k])); return res; } //@} public: /// return alpha_s as function of scale inline double operator () (Energy2 scale) const { if ( fixed_ ) return alpha_s_in_; assert(matched()); unsigned int active = active_flavours(scale_factor_*scale); return operator () (scale_factor_*scale,lambda_squared_[active],active); } /// return alpha_s as function of scale, QCD scale /// and number of active flavours virtual double operator () (Energy2 scale, Energy2 lambda2, unsigned int nf) const = 0; /// match thresholds and write alpha_s /// to specified file; arguments are /// Q_low/GeV Q_high/GeV n_steps filename string check (string args); public: /// return minimum number of active flavours inline unsigned int min_active_flavours () const { return min_active_flavours_; } /// set minimum number of active flavours inline void min_active_flavours (unsigned int nf) { min_active_flavours_ = nf; } /// return maximum number of active flavours inline unsigned int max_active_flavours () const { return max_active_flavours_; } /// set maximum number of active flavours inline void max_active_flavours (unsigned int nf) { max_active_flavours_ = nf; } /// return the number of active flavours at the given scale inline unsigned int active_flavours (Energy2 scale) const { unsigned int active = 0; if (scale > 0.*GeV2) { while(quark_mass_squared(active) < scale) { if (++active == 7) break; } active -= 1; } else { active = 0; } return active; } /// return the lambda squared for the given number of flavours inline Energy2 lambda_squared (unsigned int f) const { assert(f < 7); return lambda_squared_[f]; } /// return the mass squared for given flavour inline Energy2 quark_mass_squared (unsigned int f) const { assert(f < 7); return quark_masses_squared_[f]; } /// set the mass squared for given flavour inline void quark_mass_squared (unsigned int f, Energy2 m2) { assert(f < 7); quark_masses_squared_[f] = m2; matched_ = false; } public: /// perform the threshold matching /// given alpha_s value at reference scale void match_thresholds (); /// return true, if threshold matching has been /// performed inline bool matched () const { return matched_; } 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 inline void doinit() throw(InitException) { match_thresholds(); AlphaSBase::doinit(); } //@} /// return the scale factor double scale_factor () const { return scale_factor_; } public: /** @name Functions used by the persistent I/O system. */ //@{ /** * Function used to write out object persistently. * @name os the persistent output stream written to. */ void persistentOutput(PersistentOStream & os) const; /** * Function used to read in object persistently. * @name is the persistent input stream read from. * @name 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(); private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<alpha_s> initalpha_s; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ alpha_s & operator=(const alpha_s &); private: unsigned int min_active_flavours_; unsigned int max_active_flavours_; bool matched_; double scale_factor_; boost::array<Energy2,7> quark_masses_squared_; boost::array<Energy2,7> lambda_squared_; double alpha_s_in_; Energy scale_in_; pair<Energy2,Energy2> lambda_range_; bool fixed_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of alpha_s. */ template <> struct BaseClassTrait<matchbox::alpha_s,1> { /** Typedef of the first base class of alpha_s. */ typedef AlphaSBase NthBase; }; /** This template specialization informs ThePEG about the name of * the alpha_s class and the shared object where it is defined. */ template <> struct ClassTraits<matchbox::alpha_s> : public ClassTraitsBase<matchbox::alpha_s> { /** Return a platform-independent class name */ static string className() { return "matchbox::alpha_s"; } /** * The name of a file containing the dynamic library where the class * alpha_s is implemented. It may also include several, space-separated, * libraries if the class alpha_s depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShowerAlphaS.so"; } }; /** @endcond */ } #endif /* matchbox_couplings_alpha_s_h */ ���������������herwig++-2.6.0.orig/DipoleShower/AlphaS/nlo_alpha_s.h�����������������������������������������������0000644�0001750�0001750�00000011274�11754474775�023211� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // couplings/nlo_alpha_s.h is part of matchbox // (C) 2008 Simon Platzer -- sp@particle.uni-karlsruhe.de #ifndef matchbox_couplings_nlo_alpha_s_h #define matchbox_couplings_nlo_alpha_s_h #include "alpha_s.h" namespace matchbox { using namespace ThePEG; /** * NLO running alpha_s * * @see \ref nlo_alpha_sInterfaces "The interfaces" * defined for nlo_alpha_s. */ class nlo_alpha_s : public alpha_s { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ nlo_alpha_s(); /** * The destructor. */ virtual ~nlo_alpha_s(); //@} public: /// return alpha_s as function of scale, QCD scale /// and number of active flavours virtual double operator () (Energy2 scale, Energy2 lambda2, unsigned int nf) const; public: /** @name Functions used by the persistent I/O system. */ //@{ /** * Function used to write out object persistently. * @name os the persistent output stream written to. */ void persistentOutput(PersistentOStream & os) const; /** * Function used to read in object persistently. * @name is the persistent input stream read from. * @name 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 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 inline void doinit() throw(InitException) { freezing_scale_ *= scale_factor(); alpha_s::doinit(); } //@} 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 static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static ClassDescription<nlo_alpha_s> initnlo_alpha_s; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ nlo_alpha_s & operator=(const nlo_alpha_s &); private: struct rg_solution { inline double operator () (double alpha) { double beta0 = (33.-2.*nf)/(12.*Constants::pi); double beta1 = (153.-19.*nf)/(24.*sqr(Constants::pi)); return ((1./alpha)+(beta1/beta0)*log(alpha/(beta0+beta1*alpha))- beta0*slog); } double slog; unsigned int nf; }; Energy freezing_scale_; bool exact_evaluation_; static rg_solution& rg () { static rg_solution rg_; return rg_; } static gsl::bisection_root_solver<rg_solution,100>& rg_solver () { static gsl::bisection_root_solver<rg_solution,100> rg_solver_(rg()); return rg_solver_; } }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of nlo_alpha_s. */ template <> struct BaseClassTrait<matchbox::nlo_alpha_s,1> { /** Typedef of the first base class of nlo_alpha_s. */ typedef matchbox::alpha_s NthBase; }; /** This template specialization informs ThePEG about the name of * the nlo_alpha_s class and the shared object where it is defined. */ template <> struct ClassTraits<matchbox::nlo_alpha_s> : public ClassTraitsBase<matchbox::nlo_alpha_s> { /** Return a platform-independent class name */ static string className() { return "matchbox::nlo_alpha_s"; } /** * The name of a file containing the dynamic library where the class * nlo_alpha_s is implemented. It may also include several, space-separated, * libraries if the class nlo_alpha_s depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShowerAlphaS.so"; } }; /** @endcond */ } #endif /* matchbox_couplings_nlo_alpha_s_h */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/AlphaS/lo_alpha_s.h������������������������������������������������0000644�0001750�0001750�00000010075�11754474775�023031� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // couplings/lo_alpha_s.h is part of matchbox // (C) 2008 Simon Platzer -- sp@particle.uni-karlsruhe.de #ifndef matchbox_couplings_lo_alpha_s_h #define matchbox_couplings_lo_alpha_s_h #include "alpha_s.h" namespace matchbox { using namespace ThePEG; /** * LO running alpha_s * * @see \ref lo_alpha_sInterfaces "The interfaces" * defined for lo_alpha_s. */ class lo_alpha_s : public alpha_s { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ lo_alpha_s(); /** * The destructor. */ virtual ~lo_alpha_s(); //@} public: /// return alpha_s as function of scale, QCD scale /// and number of active flavours virtual double operator () (Energy2 scale, Energy2 lambda2, unsigned int nf) const; public: /** @name Functions used by the persistent I/O system. */ //@{ /** * Function used to write out object persistently. * @name os the persistent output stream written to. */ void persistentOutput(PersistentOStream & os) const; /** * Function used to read in object persistently. * @name is the persistent input stream read from. * @name 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 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 inline void doinit() throw(InitException) { freezing_scale_ *= scale_factor(); alpha_s::doinit(); } //@} 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 static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static ClassDescription<lo_alpha_s> initlo_alpha_s; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ lo_alpha_s & operator=(const lo_alpha_s &); private: Energy freezing_scale_; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of lo_alpha_s. */ template <> struct BaseClassTrait<matchbox::lo_alpha_s,1> { /** Typedef of the first base class of lo_alpha_s. */ typedef matchbox::alpha_s NthBase; }; /** This template specialization informs ThePEG about the name of * the lo_alpha_s class and the shared object where it is defined. */ template <> struct ClassTraits<matchbox::lo_alpha_s> : public ClassTraitsBase<matchbox::lo_alpha_s> { /** Return a platform-independent class name */ static string className() { return "matchbox::lo_alpha_s"; } /** * The name of a file containing the dynamic library where the class * lo_alpha_s is implemented. It may also include several, space-separated, * libraries if the class lo_alpha_s depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShowerAlphaS.so"; } }; /** @endcond */ } #endif /* matchbox_couplings_lo_alpha_s_h */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/AlphaS/gsl.tcc�����������������������������������������������������0000644�0001750�0001750�00000002516�11754474775�022040� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // math/gsl.tcc is part of matchbox // (C) 2008 Simon Platzer -- sp@particle.uni-karlsruhe.de #include <cassert> #include "gsl/gsl_errno.h" namespace matchbox { namespace gsl { template<class Function> double function_wrapper (double x, void * fptr) { return (*reinterpret_cast<Function *>(fptr)).operator () (x); } /// given a unary function, return an appropriate /// gsl function object template<class Function> gsl_function make_function (Function& f) { gsl_function conv; conv.function = &function_wrapper<Function>; conv.params = &f; return conv; } template<class Function, unsigned long MaxIterations> double bisection_root_solver<Function,MaxIterations>::solve (std::pair<double,double> interval, double precision) { assert(interval.first < interval.second); gsl_function F = make_function(f); gsl_root_fsolver_set (s, &F, interval.first, interval.second); unsigned long iterations = 0; double sol; int status; do { ++iterations; status = gsl_root_fsolver_iterate (s); sol = gsl_root_fsolver_root (s); interval.first = gsl_root_fsolver_x_lower(s); interval.second = gsl_root_fsolver_x_upper(s); status = gsl_root_test_interval (interval.first,interval.second,0,precision); } while (status == GSL_CONTINUE && iterations < MaxIterations); return sol; } }} ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/AlphaS/alpha_s.cc��������������������������������������������������0000644�0001750�0001750�00000014352�11754474775�022477� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // couplings/alpha_s.cc is part of matchbox // (C) 2008 Simon Platzer -- sp@particle.uni-karlsruhe.de #include "alpha_s.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Command.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/Repository.h" #include "ThePEG/PDT/ParticleData.h" using namespace matchbox; alpha_s::alpha_s() : AlphaSBase(), min_active_flavours_(3), max_active_flavours_(6), matched_(false), scale_factor_(1.), quark_masses_squared_(), lambda_squared_(), alpha_s_in_(.1176), scale_in_(91.1876*GeV), lambda_range_(1.*MeV2,1.e6*MeV2), fixed_(false) { } alpha_s::~alpha_s() {} void alpha_s::persistentOutput(PersistentOStream & os) const { os << min_active_flavours_ << max_active_flavours_ << matched_ << scale_factor_; for (size_t f = 0; f < 7; ++f) os << ounit(quark_masses_squared_[f],MeV2) << ounit(lambda_squared_[f],MeV2); os << alpha_s_in_ << ounit(scale_in_,GeV) << ounit(lambda_range_.first,MeV2) << ounit(lambda_range_.second,MeV2) << fixed_; } void alpha_s::persistentInput(PersistentIStream & is, int) { is >> min_active_flavours_ >> max_active_flavours_ >> matched_ >> scale_factor_; for (size_t f = 0; f < 7; ++f) is >> iunit(quark_masses_squared_[f],MeV2) >> iunit(lambda_squared_[f],MeV2); is >> alpha_s_in_ >> iunit(scale_in_,GeV) >> iunit(lambda_range_.first,MeV2) >> iunit(lambda_range_.second,MeV2) >> fixed_; } AbstractClassDescription<alpha_s> alpha_s::initalpha_s; // Definition of the static class description member. void alpha_s::Init() { static ClassDocumentation<alpha_s> documentation ("Base class for strong coupoling as used in matchbox"); static Parameter<alpha_s,unsigned int> interfacemin_active_flavours ("min_active_flavours", "Minimum number of active flavours", &alpha_s::min_active_flavours_, 3, 0, 6, true, false, Interface::limited); static Parameter<alpha_s,unsigned int> interfacemax_active_flavours ("max_active_flavours", "Maximum number of active flavours", &alpha_s::max_active_flavours_, 6, 0, 6, true, false, Interface::limited); static Parameter<alpha_s,double> interfaceinput_alpha_s ("input_alpha_s", "alpha_s value at input scale", &alpha_s::alpha_s_in_, .1176, 0.0, 1.0, true, false, Interface::limited); static Parameter<alpha_s,Energy> interfaceinput_scale ("input_scale", "Input scale for alpha_s value", &alpha_s::scale_in_, GeV, 91.1876*GeV, 0.*GeV, 0.*GeV, true, false, Interface::lowerlim); static Command<alpha_s> interfacecheck ("check", "check", &alpha_s::check, false); static Parameter<alpha_s,double> interfacescale_factor ("scale_factor", "scale factor for argument", &alpha_s::scale_factor_, 1., 0.0, 100.0, true, false, Interface::limited); static Switch<alpha_s,bool> interfacefixed ("fixed", "", &alpha_s::fixed_, false, false, false); static SwitchOption interfacefixedOn (interfacefixed, "On", "", true); static SwitchOption interfacefixedOff (interfacefixed, "Off", "", false); } string alpha_s::check (string args) { istringstream argin(args); double Q_low, Q_high; long n_steps; argin >> Q_low >> Q_high >> n_steps; string fname; argin >> fname; cout << "checking alpha_s in range [" << Q_low << "," << Q_high << "] GeV in " << n_steps << " steps.\nResults are written to " << fname << "\n"; double step_width = (Q_high-Q_low)/n_steps; match_thresholds(); cout << "threshold matching results:\n" << "(m_Q^2 -> Lambda^2) / GeV^2 for dynamic flavours in range [" << min_active_flavours_ << "," << max_active_flavours_ << "]\n"; for (size_t f = 0; f < 7; ++f) { cout << (quark_masses_squared_[f]/GeV2) << " " << (lambda_squared_[f]/GeV2) << "\n"; } ofstream out (fname.c_str()); for (long k = 0; k <= n_steps; ++k) { Energy Q = Q_low*GeV + k*step_width*GeV; out << (Q/GeV) << " " << (operator () (Q*Q)) << "\n"; } return "alpha_s check finished"; } void alpha_s::match_thresholds () { if (matched_) return; // get the quark masses quark_masses_squared_[0] = 0.*MeV2; for (long f = 1; f < 7; ++f) { quark_masses_squared_[static_cast<size_t>(f)] = sqr(getParticleData(f)->mass()); } unsigned int active_at_input = active_flavours(sqr(scale_in_)); // solve for input lambda solve_input_lambda<alpha_s> input_equation (this,active_at_input,alpha_s_in_,sqr(scale_in_)); gsl::bisection_root_solver<solve_input_lambda<alpha_s>,100> input_solver(input_equation); lambda_squared_[active_at_input] = MeV2 * input_solver.solve(make_pair(lambda_range_.first/MeV2, lambda_range_.second/MeV2)); // get lambdas down to min active flavours unsigned int below = active_at_input; while (below > min_active_flavours_) { solve_lambda_below<alpha_s> match_equation (this,below, lambda_squared_[below], quark_masses_squared_[below]); gsl::bisection_root_solver<solve_lambda_below<alpha_s>,100> match_solver(match_equation); lambda_squared_[below-1] = MeV2 * match_solver.solve(make_pair(lambda_range_.first/MeV2, lambda_range_.second/MeV2)); --below; } // get lambdas up to max active flavours unsigned int above = active_at_input; while (above < max_active_flavours_) { solve_lambda_above<alpha_s> match_equation (this,above, lambda_squared_[above], quark_masses_squared_[above+1]); gsl::bisection_root_solver<solve_lambda_above<alpha_s>,100> match_solver(match_equation); lambda_squared_[above+1] = MeV2 * match_solver.solve(make_pair(lambda_range_.first/MeV2, lambda_range_.second/MeV2)); ++above; } if (min_active_flavours_ > 0) { for (size_t f = 0; f < min_active_flavours_; ++f) { lambda_squared_[f] = lambda_squared_[min_active_flavours_]; } } if (max_active_flavours_ < 6) { for (size_t f = max_active_flavours_+1; f < 7; ++f) { lambda_squared_[f] = lambda_squared_[max_active_flavours_]; } } matched_ = true; return; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/�����������������������������������������������������������0000755�0001750�0001750�00000000000�11756464207�020776� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FFgx2ggxDipoleKernel.cc������������������������������������0000644�0001750�0001750�00000004634�11756364740�025235� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the FFgx2ggxDipoleKernel class. // #include "FFgx2ggxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; FFgx2ggxDipoleKernel::FFgx2ggxDipoleKernel() : DipoleSplittingKernel() {} FFgx2ggxDipoleKernel::~FFgx2ggxDipoleKernel() {} IBPtr FFgx2ggxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr FFgx2ggxDipoleKernel::fullclone() const { return new_ptr(*this); } bool FFgx2ggxDipoleKernel::canHandle(const DipoleIndex& ind) const { return ind.emitterData()->id() == ParticleID::g && ind.spectatorData()->mass() == ZERO && !ind.initialStateEmitter() && !ind.initialStateSpectator(); } bool FFgx2ggxDipoleKernel::canHandleEquivalent( #ifndef NDEBUG const DipoleIndex& a, #else const DipoleIndex&, #endif const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return sk.emitter(b)->id() == ParticleID::g && sk.emission(b)->id() == ParticleID::g; } tcPDPtr FFgx2ggxDipoleKernel::emitter(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr FFgx2ggxDipoleKernel::emission(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr FFgx2ggxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double FFgx2ggxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); double z = split.lastZ(); double y = sqr(split.lastPt() / split.scale()) / (z*(1.-z)); ret *= 3.*(1./(1.-z*(1.-y))+1./(1.-(1.-z)*(1.-y))-2.+z*(1.-z)); return ret; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FFgx2ggxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void FFgx2ggxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<FFgx2ggxDipoleKernel> FFgx2ggxDipoleKernel::initFFgx2ggxDipoleKernel; // Definition of the static class description member. void FFgx2ggxDipoleKernel::Init() { static ClassDocumentation<FFgx2ggxDipoleKernel> documentation ("FFgx2ggxDipoleKernel"); } ����������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IFgx2ggxDipoleKernel.cc������������������������������������0000644�0001750�0001750�00000005025�11754474775�025243� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the IFgx2ggxDipoleKernel class. // #include "IFgx2ggxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IFgx2ggxDipoleKernel::IFgx2ggxDipoleKernel() : DipoleSplittingKernel() {} IFgx2ggxDipoleKernel::~IFgx2ggxDipoleKernel() {} IBPtr IFgx2ggxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr IFgx2ggxDipoleKernel::fullclone() const { return new_ptr(*this); } bool IFgx2ggxDipoleKernel::canHandle(const DipoleIndex& ind) const { return ind.emitterData()->id() == ParticleID::g && ind.spectatorData()->mass() == ZERO && ind.initialStateEmitter() && !ind.initialStateSpectator(); } bool IFgx2ggxDipoleKernel::canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return sk.emitter(b)->id() == ParticleID::g && sk.emission(b)->id() == ParticleID::g && a.emitterPDF() == b.emitterPDF(); } tcPDPtr IFgx2ggxDipoleKernel::emitter(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr IFgx2ggxDipoleKernel::emission(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr IFgx2ggxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double IFgx2ggxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); double z = split.lastZ(); double ratio = sqr(split.lastPt()/split.scale()); double x = ( z*(1.-z) - ratio ) / ( 1. - z - ratio ); double u = ratio / (1.-z); //double rho = (1.+x+u)/x; //ret *= 6. * ( 1./(1.-x+u) + (1.-x)/x - 1. + x*(1.-x) +u/rho ); ret *= 3. * ( 1./(1.-x+u) + (1.-x)/x - 1. + x*(1.-x) ); return ret; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IFgx2ggxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void IFgx2ggxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<IFgx2ggxDipoleKernel> IFgx2ggxDipoleKernel::initIFgx2ggxDipoleKernel; // Definition of the static class description member. void IFgx2ggxDipoleKernel::Init() { static ClassDocumentation<IFgx2ggxDipoleKernel> documentation ("IFgx2ggxDipoleKernel"); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FFqx2qgxDipoleKernel.cc������������������������������������0000644�0001750�0001750�00000004732�11756364740�025260� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the FFqx2qgxDipoleKernel class. // #include "FFqx2qgxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; FFqx2qgxDipoleKernel::FFqx2qgxDipoleKernel() : DipoleSplittingKernel() {} FFqx2qgxDipoleKernel::~FFqx2qgxDipoleKernel() {} IBPtr FFqx2qgxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr FFqx2qgxDipoleKernel::fullclone() const { return new_ptr(*this); } bool FFqx2qgxDipoleKernel::canHandle(const DipoleIndex& ind) const { return abs(ind.emitterData()->id()) < 6 && ind.emitterData()->mass() == ZERO && ind.spectatorData()->mass() == ZERO && !ind.initialStateEmitter() && !ind.initialStateSpectator(); } bool FFqx2qgxDipoleKernel::canHandleEquivalent( #ifndef NDEBUG const DipoleIndex& a, #else const DipoleIndex&, #endif const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return sk.emission(b)->id() == ParticleID::g && abs(sk.emitter(b)->id()) < 6 && sk.emitter(b)->mass() == ZERO; } tcPDPtr FFqx2qgxDipoleKernel::emitter(const DipoleIndex& ind) const { return ind.emitterData(); } tcPDPtr FFqx2qgxDipoleKernel::emission(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr FFqx2qgxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double FFqx2qgxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); double z = split.lastZ(); double y = sqr(split.lastPt() / split.scale()) / (z*(1.-z)); ret *= (!strictLargeN() ? 4./3. : 3./2.)*( 2./(1.-z*(1.-y)) - (1.+z) ); return ret; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FFqx2qgxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void FFqx2qgxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<FFqx2qgxDipoleKernel> FFqx2qgxDipoleKernel::initFFqx2qgxDipoleKernel; // Definition of the static class description member. void FFqx2qgxDipoleKernel::Init() { static ClassDocumentation<FFqx2qgxDipoleKernel> documentation ("FFqx2qgxDipoleKernel"); } ��������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FIqx2qgxDipoleKernel.h�������������������������������������0000644�0001750�0001750�00000011062�11754474775�025127� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_FIqx2qgxDipoleKernel_H #define HERWIG_FIqx2qgxDipoleKernel_H // // This is the declaration of the FIqx2qgxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief FIqx2qgxDipoleKernel implements the q -> qg * splitting off a final-initial dipole * */ class FIqx2qgxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FIqx2qgxDipoleKernel(); /** * The destructor. */ virtual ~FIqx2qgxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FIqx2qgxDipoleKernel> initFIqx2qgxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FIqx2qgxDipoleKernel & operator=(const FIqx2qgxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FIqx2qgxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::FIqx2qgxDipoleKernel,1> { /** Typedef of the first base class of FIqx2qgxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the FIqx2qgxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FIqx2qgxDipoleKernel> : public ClassTraitsBase<Herwig::FIqx2qgxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::FIqx2qgxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * FIqx2qgxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class FIqx2qgxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_FIqx2qgxDipoleKernel_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FFqx2qgxDipoleKernel.h�������������������������������������0000644�0001750�0001750�00000011060�11754474775�025122� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_FFqx2qgxDipoleKernel_H #define HERWIG_FFqx2qgxDipoleKernel_H // // This is the declaration of the FFqx2qgxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief FFqx2qgxDipoleKernel implements the q -> qg * splitting off a final-final dipole * */ class FFqx2qgxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFqx2qgxDipoleKernel(); /** * The destructor. */ virtual ~FFqx2qgxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FFqx2qgxDipoleKernel> initFFqx2qgxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFqx2qgxDipoleKernel & operator=(const FFqx2qgxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FFqx2qgxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::FFqx2qgxDipoleKernel,1> { /** Typedef of the first base class of FFqx2qgxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the FFqx2qgxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FFqx2qgxDipoleKernel> : public ClassTraitsBase<Herwig::FFqx2qgxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::FFqx2qgxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * FFqx2qgxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class FFqx2qgxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_FFqx2qgxDipoleKernel_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FIgx2ggxDipoleKernel.cc������������������������������������0000644�0001750�0001750�00000005063�11754474775�025245� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the FIgx2ggxDipoleKernel class. // #include "FIgx2ggxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; FIgx2ggxDipoleKernel::FIgx2ggxDipoleKernel() : DipoleSplittingKernel() {} FIgx2ggxDipoleKernel::~FIgx2ggxDipoleKernel() {} IBPtr FIgx2ggxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr FIgx2ggxDipoleKernel::fullclone() const { return new_ptr(*this); } bool FIgx2ggxDipoleKernel::canHandle(const DipoleIndex& ind) const { return ind.emitterData()->id() == ParticleID::g && ind.spectatorData()->mass() == ZERO && !ind.initialStateEmitter() && ind.initialStateSpectator(); } bool FIgx2ggxDipoleKernel::canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return sk.emitter(b)->id() == ParticleID::g && sk.emission(b)->id() == ParticleID::g && a.spectatorPDF() == b.spectatorPDF(); } tcPDPtr FIgx2ggxDipoleKernel::emitter(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr FIgx2ggxDipoleKernel::emission(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr FIgx2ggxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double FIgx2ggxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); double z = split.lastZ(); double x = 1. / ( 1. + sqr(split.lastPt()/split.scale()) / (z*(1.-z)) ); //double rhom = 2.*((2.+z-x)/z); //double rhop = 2.*((2.+(1.-z)-x)/(1.-z)); //ret *= 3. * ( 1./(1.-z+(1.-x)) + 1./(z+(1.-x)) - 2.+z*(1.-z) +(1.-x)*(1./rhom + 1./rhop) ); ret *= 3. * ( 1./(1.-z+(1.-x)) + 1./(z+(1.-x)) - 2.+z*(1.-z) ); return ret; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FIgx2ggxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void FIgx2ggxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<FIgx2ggxDipoleKernel> FIgx2ggxDipoleKernel::initFIgx2ggxDipoleKernel; // Definition of the static class description member. void FIgx2ggxDipoleKernel::Init() { static ClassDocumentation<FIgx2ggxDipoleKernel> documentation ("FIgx2ggxDipoleKernel"); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FFMqx2qgxDipoleKernel.cc�����������������������������������0000644�0001750�0001750�00000006062�11754474775�025403� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the FFMqx2qgxDipoleKernel class. // #include "FFMqx2qgxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; FFMqx2qgxDipoleKernel::FFMqx2qgxDipoleKernel() : DipoleSplittingKernel() {} FFMqx2qgxDipoleKernel::~FFMqx2qgxDipoleKernel() {} IBPtr FFMqx2qgxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr FFMqx2qgxDipoleKernel::fullclone() const { return new_ptr(*this); } bool FFMqx2qgxDipoleKernel::canHandle(const DipoleIndex& ind) const { return abs(ind.emitterData()->id()) < 6 && !ind.initialStateEmitter() && !ind.initialStateSpectator() && // massless quarks shall be treated by massless FFqx2qgxDipoleKernel !( /*abs(ind.emitterData()->id()) < 6 &&*/ ind.emitterData()->mass() == ZERO ) && !( abs(ind.spectatorData()->id()) < 6 && ind.spectatorData()->mass() == ZERO ); } bool FFMqx2qgxDipoleKernel::canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return sk.emission(b)->id() == ParticleID::g && abs(sk.emitter(b)->id()) < 6 && abs(sk.emitter(b)->id()) == abs(emitter(a)->id()) && abs(sk.spectator(b)->id()) == abs(spectator(a)->id()); } tcPDPtr FFMqx2qgxDipoleKernel::emitter(const DipoleIndex& ind) const { return ind.emitterData(); } tcPDPtr FFMqx2qgxDipoleKernel::emission(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr FFMqx2qgxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double FFMqx2qgxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); // masses double muQ2 = sqr( split.emitterData()->mass() / split.scale() ); double muj2 = sqr( split.spectatorData()->mass() / split.scale() ); double z = split.lastZ(); double y = ( sqr(split.lastPt()/split.scale()) + muQ2*sqr(1.-z) ) / (z*(1.-z)) / (1.-muQ2-muj2); double vijk = sqrt( sqr(2.*muj2+(1.-muQ2-muj2)*(1.-y))-4.*muj2 ) / ((1.-muQ2-muj2)*(1.-y)); double vbar = sqrt( 1.+sqr(muQ2)+sqr(muj2)-2.*(muQ2+muj2+muQ2*muj2) ) / (1.-muQ2-muj2); ret *= (4./3.)*( 2./(1.-z*(1.-y)) - vbar/vijk*( 1.+z + muQ2*2./(y*(1.-muQ2-muj2)) ) ); return ret > 0. ? ret : 0.; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FFMqx2qgxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void FFMqx2qgxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<FFMqx2qgxDipoleKernel> FFMqx2qgxDipoleKernel::initFFMqx2qgxDipoleKernel; // Definition of the static class description member. void FFMqx2qgxDipoleKernel::Init() { static ClassDocumentation<FFMqx2qgxDipoleKernel> documentation ("FFMqx2qgxDipoleKernel"); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FIgx2qqxDipoleKernel.cc������������������������������������0000644�0001750�0001750�00000004752�11754474775�025275� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the FIgx2qqxDipoleKernel class. // #include "FIgx2qqxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; FIgx2qqxDipoleKernel::FIgx2qqxDipoleKernel() : DipoleSplittingKernel() {} FIgx2qqxDipoleKernel::~FIgx2qqxDipoleKernel() {} IBPtr FIgx2qqxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr FIgx2qqxDipoleKernel::fullclone() const { return new_ptr(*this); } bool FIgx2qqxDipoleKernel::canHandle(const DipoleIndex& ind) const { return ind.emitterData()->id() == ParticleID::g && ind.spectatorData()->mass() == ZERO && flavour()->mass() == ZERO && !ind.initialStateEmitter() && ind.initialStateSpectator(); } bool FIgx2qqxDipoleKernel::canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return sk.emitter(b)->id() + sk.emission(b)->id() == 0 && abs(sk.emitter(b)->id()) < 6 && // sk.emitter(b)->mass() == ZERO && a.spectatorPDF() == b.spectatorPDF(); } tcPDPtr FIgx2qqxDipoleKernel::emitter(const DipoleIndex&) const { assert(flavour()); assert(abs(flavour()->id()) < 6 && flavour()->mass() == ZERO); return flavour(); } tcPDPtr FIgx2qqxDipoleKernel::emission(const DipoleIndex&) const { assert(flavour()); assert(abs(flavour()->id()) < 6 && flavour()->mass() == ZERO); return flavour()->CC(); } tcPDPtr FIgx2qqxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double FIgx2qqxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); double z = split.lastZ(); ret *= .25 * (1.-2.*z*(1.-z)); return ret; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FIgx2qqxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void FIgx2qqxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<FIgx2qqxDipoleKernel> FIgx2qqxDipoleKernel::initFIgx2qqxDipoleKernel; // Definition of the static class description member. void FIgx2qqxDipoleKernel::Init() { static ClassDocumentation<FIgx2qqxDipoleKernel> documentation ("FIgx2qqxDipoleKernel"); } ����������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IFqx2gqxDipoleKernel.cc������������������������������������0000644�0001750�0001750�00000004624�11754474775�025273� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the IFqx2gqxDipoleKernel class. // #include "IFqx2gqxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IFqx2gqxDipoleKernel::IFqx2gqxDipoleKernel() : DipoleSplittingKernel() {} IFqx2gqxDipoleKernel::~IFqx2gqxDipoleKernel() {} IBPtr IFqx2gqxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr IFqx2gqxDipoleKernel::fullclone() const { return new_ptr(*this); } bool IFqx2gqxDipoleKernel::canHandle(const DipoleIndex& ind) const { return abs(ind.emitterData()->id()) < 6 && ind.emitterData()->mass() == ZERO && ind.spectatorData()->mass() == ZERO && ind.initialStateEmitter() && !ind.initialStateSpectator(); } bool IFqx2gqxDipoleKernel::canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return a.emitterData() == b.emitterData() && emitter(a) == sk.emitter(b) && a.emitterPDF() == b.emitterPDF(); } tcPDPtr IFqx2gqxDipoleKernel::emitter(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr IFqx2gqxDipoleKernel::emission(const DipoleIndex& ind) const { return ind.emitterData()->CC(); } tcPDPtr IFqx2gqxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double IFqx2gqxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); double z = split.lastZ(); double ratio = sqr(split.lastPt()/split.scale()); double x = ( z*(1.-z) - ratio ) / ( 1. - z - ratio ); ret *= .5 * ( 1.-2.*x*(1.-x) ); return ret; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IFqx2gqxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void IFqx2gqxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<IFqx2gqxDipoleKernel> IFqx2gqxDipoleKernel::initIFqx2gqxDipoleKernel; // Definition of the static class description member. void IFqx2gqxDipoleKernel::Init() { static ClassDocumentation<IFqx2gqxDipoleKernel> documentation ("IFqx2gqxDipoleKernel"); } ������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/Makefile.in������������������������������������������������0000644�0001750�0001750�00000051340�11756461676�023055� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = DipoleShower/Kernels DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwDipoleShowerKernels_la_LIBADD = am_libHwDipoleShowerKernels_la_OBJECTS = DipoleSplittingKernel.lo \ FFMqx2qgxDipoleKernel.lo FFMgx2ggxDipoleKernel.lo \ FFMgx2qqxDipoleKernel.lo FFqx2qgxDipoleKernel.lo \ FFgx2ggxDipoleKernel.lo FFgx2qqxDipoleKernel.lo \ FIqx2qgxDipoleKernel.lo FIgx2ggxDipoleKernel.lo \ FIgx2qqxDipoleKernel.lo IFqx2qgxDipoleKernel.lo \ IFqx2gqxDipoleKernel.lo IFgx2ggxDipoleKernel.lo \ IFgx2qqxDipoleKernel.lo IIqx2qgxDipoleKernel.lo \ IIqx2gqxDipoleKernel.lo IIgx2ggxDipoleKernel.lo \ IIgx2qqxDipoleKernel.lo libHwDipoleShowerKernels_la_OBJECTS = \ $(am_libHwDipoleShowerKernels_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwDipoleShowerKernels_la_SOURCES) DIST_SOURCES = $(libHwDipoleShowerKernels_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwDipoleShowerKernels.la libHwDipoleShowerKernels_la_SOURCES = \ DipoleSplittingKernel.h DipoleSplittingKernel.cc \ FFMqx2qgxDipoleKernel.h FFMqx2qgxDipoleKernel.cc \ FFMgx2ggxDipoleKernel.h FFMgx2ggxDipoleKernel.cc \ FFMgx2qqxDipoleKernel.h FFMgx2qqxDipoleKernel.cc \ FFqx2qgxDipoleKernel.h FFqx2qgxDipoleKernel.cc \ FFgx2ggxDipoleKernel.h FFgx2ggxDipoleKernel.cc \ FFgx2qqxDipoleKernel.h FFgx2qqxDipoleKernel.cc \ FIqx2qgxDipoleKernel.h FIqx2qgxDipoleKernel.cc \ FIgx2ggxDipoleKernel.h FIgx2ggxDipoleKernel.cc \ FIgx2qqxDipoleKernel.h FIgx2qqxDipoleKernel.cc \ IFqx2qgxDipoleKernel.h IFqx2qgxDipoleKernel.cc \ IFqx2gqxDipoleKernel.h IFqx2gqxDipoleKernel.cc \ IFgx2ggxDipoleKernel.h IFgx2ggxDipoleKernel.cc \ IFgx2qqxDipoleKernel.h IFgx2qqxDipoleKernel.cc \ IIqx2qgxDipoleKernel.h IIqx2qgxDipoleKernel.cc \ IIqx2gqxDipoleKernel.h IIqx2gqxDipoleKernel.cc \ IIgx2ggxDipoleKernel.h IIgx2ggxDipoleKernel.cc \ IIgx2qqxDipoleKernel.h IIgx2qqxDipoleKernel.cc all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu DipoleShower/Kernels/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu DipoleShower/Kernels/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwDipoleShowerKernels.la: $(libHwDipoleShowerKernels_la_OBJECTS) $(libHwDipoleShowerKernels_la_DEPENDENCIES) $(EXTRA_libHwDipoleShowerKernels_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwDipoleShowerKernels_la_OBJECTS) $(libHwDipoleShowerKernels_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipoleSplittingKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFMgx2ggxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFMgx2qqxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFMqx2qgxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFgx2ggxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFgx2qqxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFqx2qgxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FIgx2ggxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FIgx2qqxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FIqx2qgxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IFgx2ggxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IFgx2qqxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IFqx2gqxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IFqx2qgxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IIgx2ggxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IIgx2qqxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IIqx2gqxDipoleKernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IIqx2qgxDipoleKernel.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FFgx2ggxDipoleKernel.h�������������������������������������0000644�0001750�0001750�00000011060�11754474775�025076� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_FFgx2ggxDipoleKernel_H #define HERWIG_FFgx2ggxDipoleKernel_H // // This is the declaration of the FFgx2ggxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief FFgx2ggxDipoleKernel implements the g -> gg * splitting off a final-final dipole * */ class FFgx2ggxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFgx2ggxDipoleKernel(); /** * The destructor. */ virtual ~FFgx2ggxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FFgx2ggxDipoleKernel> initFFgx2ggxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFgx2ggxDipoleKernel & operator=(const FFgx2ggxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FFgx2ggxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::FFgx2ggxDipoleKernel,1> { /** Typedef of the first base class of FFgx2ggxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the FFgx2ggxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FFgx2ggxDipoleKernel> : public ClassTraitsBase<Herwig::FFgx2ggxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::FFgx2ggxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * FFgx2ggxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class FFgx2ggxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_FFgx2ggxDipoleKernel_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/DipoleSplittingKernel.cc�����������������������������������0000644�0001750�0001750�00000014250�11754474775�025573� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleSplittingKernel.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipoleSplittingKernel class. // #include "DipoleSplittingKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; DipoleSplittingKernel::DipoleSplittingKernel() : HandlerBase(), theScreeningScale(0.0*GeV), thePresamplingPoints(10000), theMaxtry(100000), theStrictLargeN(false), theFactorizationScaleFactor(1.0), theRenormalizationScaleFactor(1.0) {} DipoleSplittingKernel::~DipoleSplittingKernel() {} // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void DipoleSplittingKernel::persistentOutput(PersistentOStream & os) const { os << theAlphaS << ounit(theScreeningScale,GeV) << theSplittingKinematics << thePDFRatio << thePresamplingPoints << theMaxtry << theFlavour << theMCCheck << theStrictLargeN << theFactorizationScaleFactor << theRenormalizationScaleFactor; } void DipoleSplittingKernel::persistentInput(PersistentIStream & is, int) { is >> theAlphaS >> iunit(theScreeningScale,GeV) >> theSplittingKinematics >> thePDFRatio >> thePresamplingPoints >> theMaxtry >> theFlavour >> theMCCheck >> theStrictLargeN >> theFactorizationScaleFactor >> theRenormalizationScaleFactor; } double DipoleSplittingKernel::alphaPDF(const DipoleSplittingInfo& split) const { Energy pt = split.lastPt(); Energy2 scale = sqr(pt) + sqr(theScreeningScale); double ret = alphaS()->value(theRenormalizationScaleFactor*scale) / (2.*Constants::pi); if ( split.index().initialStateEmitter() ) { assert(pdfRatio()); ret *= split.lastEmitterZ() * (*pdfRatio())(split.index().emitterPDF(), theFactorizationScaleFactor*scale, split.index().emitterData(),split.emitterData(), split.emitterX(),split.lastEmitterZ()); } if ( split.index().initialStateSpectator() ) { assert(pdfRatio()); ret *= split.lastSpectatorZ() * (*pdfRatio())(split.index().spectatorPDF(), theFactorizationScaleFactor*scale, split.index().spectatorData(),split.spectatorData(), split.spectatorX(),split.lastSpectatorZ()); } if ( ret < 0. ) ret = 0.; return ret; } AbstractClassDescription<DipoleSplittingKernel> DipoleSplittingKernel::initDipoleSplittingKernel; // Definition of the static class description member. void DipoleSplittingKernel::Init() { static ClassDocumentation<DipoleSplittingKernel> documentation ("DipoleSplittingKernel is the base class for all kernels " "used within the dipole shower."); static Reference<DipoleSplittingKernel,AlphaSBase> interfaceAlphaS ("AlphaS", "The strong coupling to be used by this splitting kernel.", &DipoleSplittingKernel::theAlphaS, false, false, true, true, false); static Parameter<DipoleSplittingKernel,Energy> interfaceScreeningScale ("ScreeningScale", "A colour screening scale", &DipoleSplittingKernel::theScreeningScale, GeV, 0.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); static Reference<DipoleSplittingKernel,DipoleSplittingKinematics> interfaceSplittingKinematics ("SplittingKinematics", "The splitting kinematics to be used by this splitting kernel.", &DipoleSplittingKernel::theSplittingKinematics, false, false, true, false, false); static Reference<DipoleSplittingKernel,PDFRatio> interfacePDFRatio ("PDFRatio", "Set the optional PDF ratio object to evaluate this kernel", &DipoleSplittingKernel::thePDFRatio, false, false, true, true, false); static Parameter<DipoleSplittingKernel,unsigned long> interfacePresamplingPoints ("PresamplingPoints", "The number of points used to presample this kernel.", &DipoleSplittingKernel::thePresamplingPoints, 10000, 1, 0, false, false, Interface::lowerlim); static Parameter<DipoleSplittingKernel,unsigned long> interfaceMaxtry ("Maxtry", "The maximum number of attempts to generate a splitting.", &DipoleSplittingKernel::theMaxtry, 10000, 1, 0, false, false, Interface::lowerlim); static Reference<DipoleSplittingKernel,ParticleData> interfaceFlavour ("Flavour", "Set the flavour to be produced if ambiguous.", &DipoleSplittingKernel::theFlavour, false, false, true, true, false); static Reference<DipoleSplittingKernel,DipoleMCCheck> interfaceMCCheck ("MCCheck", "[debug option] MCCheck", &DipoleSplittingKernel::theMCCheck, false, false, true, true, false); interfaceMCCheck.rank(-1); static Switch<DipoleSplittingKernel,bool> interfaceStrictLargeN ("StrictLargeN", "Work in a strict large-N limit.", &DipoleSplittingKernel::theStrictLargeN, false, false, false); static SwitchOption interfaceStrictLargeNOn (interfaceStrictLargeN, "On", "Replace C_F -> C_A/2 where present", true); static SwitchOption interfaceStrictLargeNOff (interfaceStrictLargeN, "Off", "Keep C_F=4/3", false); interfaceStrictLargeN.rank(-2); static Parameter<DipoleSplittingKernel,double> interfaceFactorizationScaleFactor ("FactorizationScaleFactor", "The factorization scale factor.", &DipoleSplittingKernel::theFactorizationScaleFactor, 1.0, 0.0, 0, false, false, Interface::lowerlim); interfaceFactorizationScaleFactor.rank(-2); static Parameter<DipoleSplittingKernel,double> interfaceRenormalizationScaleFactor ("RenormalizationScaleFactor", "The renormalization scale factor.", &DipoleSplittingKernel::theRenormalizationScaleFactor, 1.0, 0.0, 0, false, false, Interface::lowerlim); interfaceRenormalizationScaleFactor.rank(-2); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FFMgx2ggxDipoleKernel.h������������������������������������0000644�0001750�0001750�00000011126�11754474775�025216� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_FFMgx2ggxDipoleKernel_H #define HERWIG_FFMgx2ggxDipoleKernel_H // // This is the declaration of the FFMgx2ggxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer and Martin Stoll * * \brief FFMgx2ggxDipoleKernel implements the g -> gg * splitting off a final-final dipole * */ class FFMgx2ggxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFMgx2ggxDipoleKernel(); /** * The destructor. */ virtual ~FFMgx2ggxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FFMgx2ggxDipoleKernel> initFFMgx2ggxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFMgx2ggxDipoleKernel & operator=(const FFMgx2ggxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FFMgx2ggxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::FFMgx2ggxDipoleKernel,1> { /** Typedef of the first base class of FFMgx2ggxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the FFMgx2ggxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FFMgx2ggxDipoleKernel> : public ClassTraitsBase<Herwig::FFMgx2ggxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::FFMgx2ggxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * FFMgx2ggxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class FFMgx2ggxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_FFMgx2ggxDipoleKernel_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FIgx2ggxDipoleKernel.h�������������������������������������0000644�0001750�0001750�00000011062�11754474775�025103� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_FIgx2ggxDipoleKernel_H #define HERWIG_FIgx2ggxDipoleKernel_H // // This is the declaration of the FIgx2ggxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief FIgx2ggxDipoleKernel implements the g -> gg * splitting off a final-initial dipole * */ class FIgx2ggxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FIgx2ggxDipoleKernel(); /** * The destructor. */ virtual ~FIgx2ggxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FIgx2ggxDipoleKernel> initFIgx2ggxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FIgx2ggxDipoleKernel & operator=(const FIgx2ggxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FIgx2ggxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::FIgx2ggxDipoleKernel,1> { /** Typedef of the first base class of FIgx2ggxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the FIgx2ggxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FIgx2ggxDipoleKernel> : public ClassTraitsBase<Herwig::FIgx2ggxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::FIgx2ggxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * FIgx2ggxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class FIgx2ggxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_FIgx2ggxDipoleKernel_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IIqx2gqxDipoleKernel.cc������������������������������������0000644�0001750�0001750�00000004744�11754474775�025301� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the IIqx2gqxDipoleKernel class. // #include "IIqx2gqxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IIqx2gqxDipoleKernel::IIqx2gqxDipoleKernel() : DipoleSplittingKernel() {} IIqx2gqxDipoleKernel::~IIqx2gqxDipoleKernel() {} IBPtr IIqx2gqxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr IIqx2gqxDipoleKernel::fullclone() const { return new_ptr(*this); } bool IIqx2gqxDipoleKernel::canHandle(const DipoleIndex& ind) const { return abs(ind.emitterData()->id()) < 6 && ind.emitterData()->mass() == ZERO && ind.spectatorData()->mass() == ZERO && ind.initialStateEmitter() && ind.initialStateSpectator(); } bool IIqx2gqxDipoleKernel::canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return a.emitterData() == b.emitterData() && emitter(a) == sk.emitter(b) && a.emitterPDF() == b.emitterPDF() && a.spectatorData() == b.spectatorData() && a.spectatorPDF() == b.spectatorPDF(); } tcPDPtr IIqx2gqxDipoleKernel::emitter(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr IIqx2gqxDipoleKernel::emission(const DipoleIndex& ind) const { return ind.emitterData()->CC(); } tcPDPtr IIqx2gqxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double IIqx2gqxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); double z = split.lastZ(); double ratio = sqr(split.lastPt()/split.scale()); double x = ( z*(1.-z) - ratio ) / ( 1. - z ); ret *= .5 * ( 1.-2.*x*(1.-x) ); return ret; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IIqx2gqxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void IIqx2gqxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<IIqx2gqxDipoleKernel> IIqx2gqxDipoleKernel::initIIqx2gqxDipoleKernel; // Definition of the static class description member. void IIqx2gqxDipoleKernel::Init() { static ClassDocumentation<IIqx2gqxDipoleKernel> documentation ("IIqx2gqxDipoleKernel"); } ����������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FFMgx2qqxDipoleKernel.h������������������������������������0000644�0001750�0001750�00000011131�11754474775�025236� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_FFMgx2qqxDipoleKernel_H #define HERWIG_FFMgx2qqxDipoleKernel_H // // This is the declaration of the FFMgx2qqxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer and Martin Stoll * * \brief FFMgx2qqxDipoleKernel implements the g -> qqbar * splitting off a final-final dipole * */ class FFMgx2qqxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFMgx2qqxDipoleKernel(); /** * The destructor. */ virtual ~FFMgx2qqxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FFMgx2qqxDipoleKernel> initFFMgx2qqxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFMgx2qqxDipoleKernel & operator=(const FFMgx2qqxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FFMgx2qqxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::FFMgx2qqxDipoleKernel,1> { /** Typedef of the first base class of FFMgx2qqxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the FFMgx2qqxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FFMgx2qqxDipoleKernel> : public ClassTraitsBase<Herwig::FFMgx2qqxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::FFMgx2qqxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * FFMgx2qqxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class FFMgx2qqxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_FFMgx2qqxDipoleKernel_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IIqx2qgxDipoleKernel.cc������������������������������������0000644�0001750�0001750�00000004774�11754474775�025304� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the IIqx2qgxDipoleKernel class. // #include "IIqx2qgxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IIqx2qgxDipoleKernel::IIqx2qgxDipoleKernel() : DipoleSplittingKernel() {} IIqx2qgxDipoleKernel::~IIqx2qgxDipoleKernel() {} IBPtr IIqx2qgxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr IIqx2qgxDipoleKernel::fullclone() const { return new_ptr(*this); } bool IIqx2qgxDipoleKernel::canHandle(const DipoleIndex& ind) const { return abs(ind.emitterData()->id()) < 6 && ind.emitterData()->mass() == ZERO && ind.spectatorData()->mass() == ZERO && ind.initialStateEmitter() && ind.initialStateSpectator(); } bool IIqx2qgxDipoleKernel::canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return emitter(a) == sk.emitter(b) && emission(a) == sk.emission(b) && a.emitterPDF() == b.emitterPDF() && a.spectatorData() == b.spectatorData() && a.spectatorPDF() == b.spectatorPDF(); } tcPDPtr IIqx2qgxDipoleKernel::emitter(const DipoleIndex& ind) const { return ind.emitterData(); } tcPDPtr IIqx2qgxDipoleKernel::emission(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr IIqx2qgxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double IIqx2qgxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); double z = split.lastZ(); double ratio = sqr(split.lastPt()/split.scale()); double x = ( z*(1.-z) - ratio ) / ( 1. - z ); ret *= (!strictLargeN() ? 4./3. : 3./2.) * ( (1.+sqr(x))/(1.-x) ); return ret; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IIqx2qgxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void IIqx2qgxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<IIqx2qgxDipoleKernel> IIqx2qgxDipoleKernel::initIIqx2qgxDipoleKernel; // Definition of the static class description member. void IIqx2qgxDipoleKernel::Init() { static ClassDocumentation<IIqx2qgxDipoleKernel> documentation ("IIqx2qgxDipoleKernel"); } ����herwig++-2.6.0.orig/DipoleShower/Kernels/IIgx2qqxDipoleKernel.cc������������������������������������0000644�0001750�0001750�00000005204�11754474775�025271� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the IIgx2qqxDipoleKernel class. // #include "IIgx2qqxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IIgx2qqxDipoleKernel::IIgx2qqxDipoleKernel() : DipoleSplittingKernel() {} IIgx2qqxDipoleKernel::~IIgx2qqxDipoleKernel() {} IBPtr IIgx2qqxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr IIgx2qqxDipoleKernel::fullclone() const { return new_ptr(*this); } bool IIgx2qqxDipoleKernel::canHandle(const DipoleIndex& ind) const { return ind.emitterData()->id() == ParticleID::g && ind.spectatorData()->mass() == ZERO && ind.initialStateEmitter() && ind.initialStateSpectator(); } bool IIgx2qqxDipoleKernel::canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return flavour() == sk.flavour() && abs(flavour()->id()) < 6 && flavour()->mass() == ZERO && a.emitterPDF() == b.emitterPDF() && a.spectatorData() == b.spectatorData() && a.spectatorPDF() == b.spectatorPDF(); } tcPDPtr IIgx2qqxDipoleKernel::emitter(const DipoleIndex&) const { assert(flavour()); assert(abs(flavour()->id()) < 6 && flavour()->mass() == ZERO); return flavour(); } tcPDPtr IIgx2qqxDipoleKernel::emission(const DipoleIndex&) const { assert(flavour()); assert(abs(flavour()->id()) < 6 && flavour()->mass() == ZERO); return flavour(); } tcPDPtr IIgx2qqxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double IIgx2qqxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); double z = split.lastZ(); double ratio = sqr(split.lastPt()/split.scale()); double x = ( z*(1.-z) - ratio ) / ( 1. - z ); ret *= 0.5 * (!strictLargeN() ? 4./3. : 3./2.) * ( 1./x +sqr(1.-x)/x ); return ret; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IIgx2qqxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void IIgx2qqxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<IIgx2qqxDipoleKernel> IIgx2qqxDipoleKernel::initIIgx2qqxDipoleKernel; // Definition of the static class description member. void IIgx2qqxDipoleKernel::Init() { static ClassDocumentation<IIgx2qqxDipoleKernel> documentation ("IIgx2qqxDipoleKernel"); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IFqx2qgxDipoleKernel.cc������������������������������������0000644�0001750�0001750�00000004740�11754474775�025272� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the IFqx2qgxDipoleKernel class. // #include "IFqx2qgxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IFqx2qgxDipoleKernel::IFqx2qgxDipoleKernel() : DipoleSplittingKernel() {} IFqx2qgxDipoleKernel::~IFqx2qgxDipoleKernel() {} IBPtr IFqx2qgxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr IFqx2qgxDipoleKernel::fullclone() const { return new_ptr(*this); } bool IFqx2qgxDipoleKernel::canHandle(const DipoleIndex& ind) const { return abs(ind.emitterData()->id()) < 6 && ind.emitterData()->mass() == ZERO && ind.spectatorData()->mass() == ZERO && ind.initialStateEmitter() && !ind.initialStateSpectator(); } bool IFqx2qgxDipoleKernel::canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return emitter(a) == sk.emitter(b) && emission(a) == sk.emission(b) && a.emitterPDF() == b.emitterPDF(); } tcPDPtr IFqx2qgxDipoleKernel::emitter(const DipoleIndex& ind) const { return ind.emitterData(); } tcPDPtr IFqx2qgxDipoleKernel::emission(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr IFqx2qgxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double IFqx2qgxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); double z = split.lastZ(); double ratio = sqr(split.lastPt()/split.scale()); double x = ( z*(1.-z) - ratio ) / ( 1. - z - ratio ); double u = ratio / (1.-z); ret *= (!strictLargeN() ? 4./3. : 3./2.) * ( 2./(1.-x+u) - (1.+x) + u*(1.+3.*x*(1.-u) ) ); return ret; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IFqx2qgxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void IFqx2qgxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<IFqx2qgxDipoleKernel> IFqx2qgxDipoleKernel::initIFqx2qgxDipoleKernel; // Definition of the static class description member. void IFqx2qgxDipoleKernel::Init() { static ClassDocumentation<IFqx2qgxDipoleKernel> documentation ("IFqx2qgxDipoleKernel"); } ��������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/Makefile.am������������������������������������������������0000644�0001750�0001750�00000001744�11754474775�023051� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwDipoleShowerKernels.la libHwDipoleShowerKernels_la_SOURCES = \ DipoleSplittingKernel.h DipoleSplittingKernel.cc \ FFMqx2qgxDipoleKernel.h FFMqx2qgxDipoleKernel.cc \ FFMgx2ggxDipoleKernel.h FFMgx2ggxDipoleKernel.cc \ FFMgx2qqxDipoleKernel.h FFMgx2qqxDipoleKernel.cc \ FFqx2qgxDipoleKernel.h FFqx2qgxDipoleKernel.cc \ FFgx2ggxDipoleKernel.h FFgx2ggxDipoleKernel.cc \ FFgx2qqxDipoleKernel.h FFgx2qqxDipoleKernel.cc \ FIqx2qgxDipoleKernel.h FIqx2qgxDipoleKernel.cc \ FIgx2ggxDipoleKernel.h FIgx2ggxDipoleKernel.cc \ FIgx2qqxDipoleKernel.h FIgx2qqxDipoleKernel.cc \ IFqx2qgxDipoleKernel.h IFqx2qgxDipoleKernel.cc \ IFqx2gqxDipoleKernel.h IFqx2gqxDipoleKernel.cc \ IFgx2ggxDipoleKernel.h IFgx2ggxDipoleKernel.cc \ IFgx2qqxDipoleKernel.h IFgx2qqxDipoleKernel.cc \ IIqx2qgxDipoleKernel.h IIqx2qgxDipoleKernel.cc \ IIqx2gqxDipoleKernel.h IIqx2gqxDipoleKernel.cc \ IIgx2ggxDipoleKernel.h IIgx2ggxDipoleKernel.cc \ IIgx2qqxDipoleKernel.h IIgx2qqxDipoleKernel.cc ����������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IIgx2ggxDipoleKernel.cc������������������������������������0000644�0001750�0001750�00000004740�11754474775�025251� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the IIgx2ggxDipoleKernel class. // #include "IIgx2ggxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IIgx2ggxDipoleKernel::IIgx2ggxDipoleKernel() : DipoleSplittingKernel() {} IIgx2ggxDipoleKernel::~IIgx2ggxDipoleKernel() {} IBPtr IIgx2ggxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr IIgx2ggxDipoleKernel::fullclone() const { return new_ptr(*this); } bool IIgx2ggxDipoleKernel::canHandle(const DipoleIndex& ind) const { return ind.emitterData()->id() == ParticleID::g && ind.spectatorData()->mass() == ZERO && ind.initialStateEmitter() && ind.initialStateSpectator(); } bool IIgx2ggxDipoleKernel::canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return sk.emitter(b)->id() == ParticleID::g && sk.emission(b)->id() == ParticleID::g && a.emitterPDF() == b.emitterPDF() && a.spectatorData() == b.spectatorData() && a.spectatorPDF() == b.spectatorPDF(); } tcPDPtr IIgx2ggxDipoleKernel::emitter(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr IIgx2ggxDipoleKernel::emission(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr IIgx2ggxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double IIgx2ggxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); double z = split.lastZ(); double ratio = sqr(split.lastPt()/split.scale()); double x = ( z*(1.-z) - ratio ) / ( 1. - z ); ret *= 3. * ( x/(1.-x) + (1.-x)/x +x*(1.-x) ); return ret; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IIgx2ggxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void IIgx2ggxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<IIgx2ggxDipoleKernel> IIgx2ggxDipoleKernel::initIIgx2ggxDipoleKernel; // Definition of the static class description member. void IIgx2ggxDipoleKernel::Init() { static ClassDocumentation<IIgx2ggxDipoleKernel> documentation ("IIgx2ggxDipoleKernel"); } ��������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FIgx2qqxDipoleKernel.h�������������������������������������0000644�0001750�0001750�00000011065�11754474775�025132� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_FIgx2qqxDipoleKernel_H #define HERWIG_FIgx2qqxDipoleKernel_H // // This is the declaration of the FIgx2qqxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief FIgx2qqxDipoleKernel implements the g -> qqbar * splitting off a final-initial dipole * */ class FIgx2qqxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FIgx2qqxDipoleKernel(); /** * The destructor. */ virtual ~FIgx2qqxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FIgx2qqxDipoleKernel> initFIgx2qqxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FIgx2qqxDipoleKernel & operator=(const FIgx2qqxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FIgx2qqxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::FIgx2qqxDipoleKernel,1> { /** Typedef of the first base class of FIgx2qqxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the FIgx2qqxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FIgx2qqxDipoleKernel> : public ClassTraitsBase<Herwig::FIgx2qqxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::FIgx2qqxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * FIgx2qqxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class FIgx2qqxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_FIgx2qqxDipoleKernel_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IFgx2qqxDipoleKernel.h�������������������������������������0000644�0001750�0001750�00000011063�11754474775�025130� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_IFgx2qqxDipoleKernel_H #define HERWIG_IFgx2qqxDipoleKernel_H // // This is the declaration of the IFgx2qqxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief IFgx2qqxDipoleKernel implements the g -> qq * splitting off an initial-final dipole * */ class IFgx2qqxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IFgx2qqxDipoleKernel(); /** * The destructor. */ virtual ~IFgx2qqxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<IFgx2qqxDipoleKernel> initIFgx2qqxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IFgx2qqxDipoleKernel & operator=(const IFgx2qqxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of IFgx2qqxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::IFgx2qqxDipoleKernel,1> { /** Typedef of the first base class of IFgx2qqxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the IFgx2qqxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::IFgx2qqxDipoleKernel> : public ClassTraitsBase<Herwig::IFgx2qqxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::IFgx2qqxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * IFgx2qqxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class IFgx2qqxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_IFgx2qqxDipoleKernel_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FFMqx2qgxDipoleKernel.h������������������������������������0000644�0001750�0001750�00000011126�11754474775�025242� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_FFMqx2qgxDipoleKernel_H #define HERWIG_FFMqx2qgxDipoleKernel_H // // This is the declaration of the FFMqx2qgxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer and Martin Stoll * * \brief FFMqx2qgxDipoleKernel implements the q -> qg * splitting off a final-final dipole * */ class FFMqx2qgxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFMqx2qgxDipoleKernel(); /** * The destructor. */ virtual ~FFMqx2qgxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FFMqx2qgxDipoleKernel> initFFMqx2qgxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFMqx2qgxDipoleKernel & operator=(const FFMqx2qgxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FFMqx2qgxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::FFMqx2qgxDipoleKernel,1> { /** Typedef of the first base class of FFMqx2qgxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the FFMqx2qgxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FFMqx2qgxDipoleKernel> : public ClassTraitsBase<Herwig::FFMqx2qgxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::FFMqx2qgxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * FFMqx2qgxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class FFMqx2qgxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_FFMqx2qgxDipoleKernel_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IFqx2qgxDipoleKernel.h�������������������������������������0000644�0001750�0001750�00000011063�11754474775�025130� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_IFqx2qgxDipoleKernel_H #define HERWIG_IFqx2qgxDipoleKernel_H // // This is the declaration of the IFqx2qgxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief IFqx2qgxDipoleKernel implements the q -> qg * splitting off an initial-final dipole * */ class IFqx2qgxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IFqx2qgxDipoleKernel(); /** * The destructor. */ virtual ~IFqx2qgxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<IFqx2qgxDipoleKernel> initIFqx2qgxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IFqx2qgxDipoleKernel & operator=(const IFqx2qgxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of IFqx2qgxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::IFqx2qgxDipoleKernel,1> { /** Typedef of the first base class of IFqx2qgxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the IFqx2qgxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::IFqx2qgxDipoleKernel> : public ClassTraitsBase<Herwig::IFqx2qgxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::IFqx2qgxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * IFqx2qgxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class IFqx2qgxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_IFqx2qgxDipoleKernel_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/DipoleSplittingKernel.h������������������������������������0000644�0001750�0001750�00000023237�11754474775�025442� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleSplittingKernel.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipoleSplittingKernel_H #define HERWIG_DipoleSplittingKernel_H // // This is the declaration of the DipoleSplittingKernel class. // #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/StandardModel/AlphaSBase.h" #include "ThePEG/PDF/PDF.h" #include "Herwig++/DipoleShower/Utility/PDFRatio.h" #include "Herwig++/DipoleShower/Base/DipoleSplittingInfo.h" #include "Herwig++/DipoleShower/Kinematics/DipoleSplittingKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief DipoleSplittingKernel is the base class for all kernels * used within the dipole shower. * * @see \ref DipoleSplittingKernelInterfaces "The interfaces" * defined for DipoleSplittingKernel. */ class DipoleSplittingKernel: public HandlerBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ DipoleSplittingKernel(); /** * The destructor. */ virtual ~DipoleSplittingKernel(); //@} public: /** * Return the alpha_s to be used */ Ptr<AlphaSBase>::tptr alphaS() const { return theAlphaS; } /** * Set the alpha_s to be used */ void alphaS(Ptr<AlphaSBase>::tptr ap) { theAlphaS = ap; } /** * Return the splitting kinematics object */ Ptr<DipoleSplittingKinematics>::tptr splittingKinematics() const { return theSplittingKinematics; } /** * Return the mc check object */ Ptr<DipoleMCCheck>::ptr mcCheck() const { return theMCCheck; } /** * Set the splitting kinematics object */ void splittingKinematics(Ptr<DipoleSplittingKinematics>::tptr sp) { theSplittingKinematics = sp; } /** * Return the PDFRatio object */ Ptr<PDFRatio>::tptr pdfRatio() const { return thePDFRatio; } /** * Set the PDFRatio object */ void pdfRatio(Ptr<PDFRatio>::tptr sp) { thePDFRatio = sp; } /** * Return the number of additional parameter * random variables needed to evaluate this kernel * except the momentum fractions of incoming partons. * These will be accessible through the * lastSplittingParameters() container of the splitting * info object. */ virtual int nDimAdditional() const { return 0; } public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const = 0; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const = 0; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const = 0; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const = 0; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const = 0; /** * Return the flavour produced, if this cannot * be determined from the dipole. */ PDPtr flavour() const { return theFlavour; } /** * Return true, if this splitting kernel is supposed to work in a * strict large-N limit, i.e. replacing C_F by C_A/2 */ bool strictLargeN() const { return theStrictLargeN; } public: /** * Inform this splitting kernel, that it is being * presampled until a call to stopPresampling */ virtual void startPresampling(const DipoleIndex&) {} /** * Inform this splitting kernel, that it is not being * presampled until a call to startPresampling */ virtual void stopPresampling(const DipoleIndex&) {} /** * Return the number of points to presample this * splitting generator. */ unsigned long presamplingPoints() const { return thePresamplingPoints; } /** * Return the maximum number of trials * to generate a splitting. */ unsigned long maxtry() const { return theMaxtry; } /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) const = 0; /** * Return true, if this kernel is capable of * delivering an overestimate to the kernel, and * of inverting the integral over the overestimate * w.r.t. the phasepsace provided by the given * DipoleSplittingInfo object. */ virtual bool haveOverestimate(const DipoleSplittingInfo&) const { return false; } /** * Return the overestimate to this splitting kernel * for the given dipole splitting. */ virtual double overestimate(const DipoleSplittingInfo&) const { return -1.; } /** * Invert the integral over the overestimate * w.r.t. the phasepsace provided by the given * DipoleSplittingInfo object to equal * the given value. */ virtual double invertOverestimateIntegral(const DipoleSplittingInfo&, double) const { return -1.; } public: /** * Get the factorization scale factor */ double factorizationScaleFactor() const { return theFactorizationScaleFactor; } /** * Set the factorization scale factor */ void factorizationScaleFactor(double f) { theFactorizationScaleFactor = f; } /** * Get the renormalization scale factor */ double renormalizationScaleFactor() const { return theRenormalizationScaleFactor; } /** * Set the renormalization scale factor */ void renormalizationScaleFactor(double f) { theRenormalizationScaleFactor = f; } protected: /** * Return the common factor of (alphas/2pi)*(pdf ratio) */ double alphaPDF(const DipoleSplittingInfo&) 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The alpha_s to be used. */ Ptr<AlphaSBase>::ptr theAlphaS; /** * An optional 'colour screening' scale * for alternative intrinsic pt generation. */ Energy theScreeningScale; /** * The splitting kinematics to be used. */ Ptr<DipoleSplittingKinematics>::ptr theSplittingKinematics; /** * An optional PDF ratio object to be used * when evaluating this kernel. */ Ptr<PDFRatio>::ptr thePDFRatio; /** * The number of points to presample this * splitting generator. */ unsigned long thePresamplingPoints; /** * The maximum number of trials * to generate a splitting. */ unsigned long theMaxtry; /** * The flavour produced, if this cannot * be determined from the dipole. */ PDPtr theFlavour; /** * Pointer to a check histogram object */ Ptr<DipoleMCCheck>::ptr theMCCheck; /** * True, if this splitting kernel is supposed to work in a * strict large-N limit, i.e. replacing C_F by C_A/2 */ bool theStrictLargeN; /** * The factorization scale factor. */ double theFactorizationScaleFactor; /** * The renormalization scale factor. */ double theRenormalizationScaleFactor; private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<DipoleSplittingKernel> initDipoleSplittingKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DipoleSplittingKernel & operator=(const DipoleSplittingKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DipoleSplittingKernel. */ template <> struct BaseClassTrait<Herwig::DipoleSplittingKernel,1> { /** Typedef of the first base class of DipoleSplittingKernel. */ typedef HandlerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the DipoleSplittingKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DipoleSplittingKernel> : public ClassTraitsBase<Herwig::DipoleSplittingKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::DipoleSplittingKernel"; } /** * The name of a file containing the dynamic library where the class * DipoleSplittingKernel is implemented. It may also include several, space-separated, * libraries if the class DipoleSplittingKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_DipoleSplittingKernel_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IIqx2gqxDipoleKernel.h�������������������������������������0000644�0001750�0001750�00000011070�11754474775�025131� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_IIqx2gqxDipoleKernel_H #define HERWIG_IIqx2gqxDipoleKernel_H // // This is the declaration of the IIqx2gqxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief IIqx2gqxDipoleKernel implements the q -> gqbar * splitting off an initial-initial dipole * */ class IIqx2gqxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IIqx2gqxDipoleKernel(); /** * The destructor. */ virtual ~IIqx2gqxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<IIqx2gqxDipoleKernel> initIIqx2gqxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IIqx2gqxDipoleKernel & operator=(const IIqx2gqxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of IIqx2gqxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::IIqx2gqxDipoleKernel,1> { /** Typedef of the first base class of IIqx2gqxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the IIqx2gqxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::IIqx2gqxDipoleKernel> : public ClassTraitsBase<Herwig::IIqx2gqxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::IIqx2gqxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * IIqx2gqxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class IIqx2gqxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_IIqx2gqxDipoleKernel_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IFgx2ggxDipoleKernel.h�������������������������������������0000644�0001750�0001750�00000011063�11754474775�025104� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_IFgx2ggxDipoleKernel_H #define HERWIG_IFgx2ggxDipoleKernel_H // // This is the declaration of the IFgx2ggxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief IFgx2ggxDipoleKernel implements the g -> gg * splitting off an initial-final dipole * */ class IFgx2ggxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IFgx2ggxDipoleKernel(); /** * The destructor. */ virtual ~IFgx2ggxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<IFgx2ggxDipoleKernel> initIFgx2ggxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IFgx2ggxDipoleKernel & operator=(const IFgx2ggxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of IFgx2ggxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::IFgx2ggxDipoleKernel,1> { /** Typedef of the first base class of IFgx2ggxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the IFgx2ggxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::IFgx2ggxDipoleKernel> : public ClassTraitsBase<Herwig::IFgx2ggxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::IFgx2ggxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * IFgx2ggxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class IFgx2ggxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_IFgx2ggxDipoleKernel_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FFgx2qqxDipoleKernel.h�������������������������������������0000644�0001750�0001750�00000011063�11754474775�025125� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_FFgx2qqxDipoleKernel_H #define HERWIG_FFgx2qqxDipoleKernel_H // // This is the declaration of the FFgx2qqxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief FFgx2qqxDipoleKernel implements the g -> qqbar * splitting off a final-final dipole * */ class FFgx2qqxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFgx2qqxDipoleKernel(); /** * The destructor. */ virtual ~FFgx2qqxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FFgx2qqxDipoleKernel> initFFgx2qqxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFgx2qqxDipoleKernel & operator=(const FFgx2qqxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FFgx2qqxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::FFgx2qqxDipoleKernel,1> { /** Typedef of the first base class of FFgx2qqxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the FFgx2qqxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FFgx2qqxDipoleKernel> : public ClassTraitsBase<Herwig::FFgx2qqxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::FFgx2qqxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * FFgx2qqxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class FFgx2qqxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_FFgx2qqxDipoleKernel_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FFgx2qqxDipoleKernel.cc������������������������������������0000644�0001750�0001750�00000005020�11756364740�025247� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the FFgx2qqxDipoleKernel class. // #include "FFgx2qqxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; FFgx2qqxDipoleKernel::FFgx2qqxDipoleKernel() : DipoleSplittingKernel() {} FFgx2qqxDipoleKernel::~FFgx2qqxDipoleKernel() {} IBPtr FFgx2qqxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr FFgx2qqxDipoleKernel::fullclone() const { return new_ptr(*this); } bool FFgx2qqxDipoleKernel::canHandle(const DipoleIndex& ind) const { return ind.emitterData()->id() == ParticleID::g && ind.spectatorData()->mass() == ZERO && flavour()->mass() == ZERO && !ind.initialStateEmitter() && !ind.initialStateSpectator(); } bool FFgx2qqxDipoleKernel::canHandleEquivalent( #ifndef NDEBUG const DipoleIndex& a, #else const DipoleIndex&, #endif const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return sk.emitter(b)->id() + sk.emission(b)->id() == 0 && abs(sk.emitter(b)->id()) < 6 && sk.emitter(b)->mass() == ZERO; } tcPDPtr FFgx2qqxDipoleKernel::emitter(const DipoleIndex&) const { assert(flavour()); assert(abs(flavour()->id()) < 6 && flavour()->mass() == ZERO); return flavour(); } tcPDPtr FFgx2qqxDipoleKernel::emission(const DipoleIndex&) const { assert(flavour()); assert(abs(flavour()->id()) < 6 && flavour()->mass() == ZERO); return flavour()->CC(); } tcPDPtr FFgx2qqxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double FFgx2qqxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); double z = split.lastZ(); ret *= .25 * ( 1. - 2.*z*(1.-z) ); return ret; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FFgx2qqxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void FFgx2qqxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<FFgx2qqxDipoleKernel> FFgx2qqxDipoleKernel::initFFgx2qqxDipoleKernel; // Definition of the static class description member. void FFgx2qqxDipoleKernel::Init() { static ClassDocumentation<FFgx2qqxDipoleKernel> documentation ("FFgx2qqxDipoleKernel"); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IIgx2ggxDipoleKernel.h�������������������������������������0000644�0001750�0001750�00000011065�11754474775�025111� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_IIgx2ggxDipoleKernel_H #define HERWIG_IIgx2ggxDipoleKernel_H // // This is the declaration of the IIgx2ggxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief IIgx2ggxDipoleKernel implements the g -> gg * splitting off an initial-initial dipole * */ class IIgx2ggxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IIgx2ggxDipoleKernel(); /** * The destructor. */ virtual ~IIgx2ggxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<IIgx2ggxDipoleKernel> initIIgx2ggxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IIgx2ggxDipoleKernel & operator=(const IIgx2ggxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of IIgx2ggxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::IIgx2ggxDipoleKernel,1> { /** Typedef of the first base class of IIgx2ggxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the IIgx2ggxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::IIgx2ggxDipoleKernel> : public ClassTraitsBase<Herwig::IIgx2ggxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::IIgx2ggxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * IIgx2ggxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class IIgx2ggxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_IIgx2ggxDipoleKernel_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IFqx2gqxDipoleKernel.h�������������������������������������0000644�0001750�0001750�00000011066�11754474775�025133� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_IFqx2gqxDipoleKernel_H #define HERWIG_IFqx2gqxDipoleKernel_H // // This is the declaration of the IFqx2gqxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief IFqx2gqxDipoleKernel implements the q -> gqbar * splitting off an initial-final dipole * */ class IFqx2gqxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IFqx2gqxDipoleKernel(); /** * The destructor. */ virtual ~IFqx2gqxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<IFqx2gqxDipoleKernel> initIFqx2gqxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IFqx2gqxDipoleKernel & operator=(const IFqx2gqxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of IFqx2gqxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::IFqx2gqxDipoleKernel,1> { /** Typedef of the first base class of IFqx2gqxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the IFqx2gqxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::IFqx2gqxDipoleKernel> : public ClassTraitsBase<Herwig::IFqx2gqxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::IFqx2gqxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * IFqx2gqxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class IFqx2gqxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_IFqx2gqxDipoleKernel_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FFMgx2ggxDipoleKernel.cc�����������������������������������0000644�0001750�0001750�00000005633�11754474775�025362� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the FFMgx2ggxDipoleKernel class. // #include "FFMgx2ggxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; FFMgx2ggxDipoleKernel::FFMgx2ggxDipoleKernel() : DipoleSplittingKernel() {} FFMgx2ggxDipoleKernel::~FFMgx2ggxDipoleKernel() {} IBPtr FFMgx2ggxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr FFMgx2ggxDipoleKernel::fullclone() const { return new_ptr(*this); } bool FFMgx2ggxDipoleKernel::canHandle(const DipoleIndex& ind) const { return ind.emitterData()->id() == ParticleID::g && !ind.initialStateEmitter() && !ind.initialStateSpectator() && // massless quarks shall be treated by massless FFgx2ggxDipoleKernel !( abs(ind.spectatorData()->id()) < 6 && ind.spectatorData()->mass() == ZERO ); } bool FFMgx2ggxDipoleKernel::canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return sk.emitter(b)->id() == ParticleID::g && sk.emission(b)->id() == ParticleID::g && abs(spectator(a)->id()) == abs(sk.spectator(b)->id()); } tcPDPtr FFMgx2ggxDipoleKernel::emitter(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr FFMgx2ggxDipoleKernel::emission(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr FFMgx2ggxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double FFMgx2ggxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); // masses double muj2 = sqr( split.spectatorData()->mass() / split.scale() ); double z = split.lastZ(); double y = sqr(split.lastPt() / split.scale()) / (z*(1.-z)) / (1.-muj2); double vijk = sqrt( sqr(2.*muj2+(1.-muj2)*(1.-y))-4.*muj2 ) / ((1.-muj2)*(1.-y)); double viji = 1.; double zp = 0.5*(1.+viji*vijk); double zm = 0.5*(1.-viji*vijk); // free parameter of the subtraction scheme double kappa = 0.; ret *= 3.*(1./(1.-z*(1.-y))+1./(1.-(1.-z)*(1.-y)) + (z*(1.-z)-(1.-kappa)*zp*zm-2.)/vijk); return ret > 0. ? ret : 0.; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FFMgx2ggxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void FFMgx2ggxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<FFMgx2ggxDipoleKernel> FFMgx2ggxDipoleKernel::initFFMgx2ggxDipoleKernel; // Definition of the static class description member. void FFMgx2ggxDipoleKernel::Init() { static ClassDocumentation<FFMgx2ggxDipoleKernel> documentation ("FFMgx2ggxDipoleKernel"); } �����������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IFgx2qqxDipoleKernel.cc������������������������������������0000644�0001750�0001750�00000005061�11754474775�025267� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the IFgx2qqxDipoleKernel class. // #include "IFgx2qqxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; IFgx2qqxDipoleKernel::IFgx2qqxDipoleKernel() : DipoleSplittingKernel() {} IFgx2qqxDipoleKernel::~IFgx2qqxDipoleKernel() {} IBPtr IFgx2qqxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr IFgx2qqxDipoleKernel::fullclone() const { return new_ptr(*this); } bool IFgx2qqxDipoleKernel::canHandle(const DipoleIndex& ind) const { return ind.emitterData()->id() == ParticleID::g && ind.spectatorData()->mass() == ZERO && ind.initialStateEmitter() && !ind.initialStateSpectator(); } bool IFgx2qqxDipoleKernel::canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return flavour() == sk.flavour() && abs(flavour()->id()) < 6 && flavour()->mass() == ZERO && a.emitterPDF() == b.emitterPDF(); } tcPDPtr IFgx2qqxDipoleKernel::emitter(const DipoleIndex&) const { assert(flavour()); assert(abs(flavour()->id()) < 6 && flavour()->mass() == ZERO); return flavour(); } tcPDPtr IFgx2qqxDipoleKernel::emission(const DipoleIndex&) const { assert(flavour()); assert(abs(flavour()->id()) < 6 && flavour()->mass() == ZERO); return flavour(); } tcPDPtr IFgx2qqxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double IFgx2qqxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); double z = split.lastZ(); double ratio = sqr(split.lastPt()/split.scale()); double x = ( z*(1.-z) - ratio ) / ( 1. - z - ratio ); ret *= 0.5 * (!strictLargeN() ? 4./3. : 3./2.) * ( x + 2.*(1.-x)/x ); return ret; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IFgx2qqxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void IFgx2qqxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<IFgx2qqxDipoleKernel> IFgx2qqxDipoleKernel::initIFgx2qqxDipoleKernel; // Definition of the static class description member. void IFgx2qqxDipoleKernel::Init() { static ClassDocumentation<IFgx2qqxDipoleKernel> documentation ("IFgx2qqxDipoleKernel"); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FIqx2qgxDipoleKernel.cc������������������������������������0000644�0001750�0001750�00000004736�11754474775�025277� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the FIqx2qgxDipoleKernel class. // #include "FIqx2qgxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; FIqx2qgxDipoleKernel::FIqx2qgxDipoleKernel() : DipoleSplittingKernel() {} FIqx2qgxDipoleKernel::~FIqx2qgxDipoleKernel() {} IBPtr FIqx2qgxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr FIqx2qgxDipoleKernel::fullclone() const { return new_ptr(*this); } bool FIqx2qgxDipoleKernel::canHandle(const DipoleIndex& ind) const { return abs(ind.emitterData()->id()) < 6 && ind.emitterData()->mass() == ZERO && ind.spectatorData()->mass() == ZERO && !ind.initialStateEmitter() && ind.initialStateSpectator(); } bool FIqx2qgxDipoleKernel::canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return sk.emission(b)->id() == ParticleID::g && abs(sk.emitter(b)->id()) < 6 && sk.emitter(b)->mass() == ZERO && a.spectatorPDF() == b.spectatorPDF(); } tcPDPtr FIqx2qgxDipoleKernel::emitter(const DipoleIndex& ind) const { return ind.emitterData(); } tcPDPtr FIqx2qgxDipoleKernel::emission(const DipoleIndex&) const { return getParticleData(ParticleID::g); } tcPDPtr FIqx2qgxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } double FIqx2qgxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); double z = split.lastZ(); double x = 1. / ( 1. + sqr(split.lastPt()/split.scale()) / (z*(1.-z)) ); ret *= (!strictLargeN() ? 4./3. : 3./2.) * ( 2./(1.-z+(1.-x)) -(1.+z) + (1.-x)*(1.+3.*x*z) ); return ret; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FIqx2qgxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void FIqx2qgxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<FIqx2qgxDipoleKernel> FIqx2qgxDipoleKernel::initFIqx2qgxDipoleKernel; // Definition of the static class description member. void FIqx2qgxDipoleKernel::Init() { static ClassDocumentation<FIqx2qgxDipoleKernel> documentation ("FIqx2qgxDipoleKernel"); } ����������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IIgx2qqxDipoleKernel.h�������������������������������������0000644�0001750�0001750�00000011065�11754474775�025135� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_IIgx2qqxDipoleKernel_H #define HERWIG_IIgx2qqxDipoleKernel_H // // This is the declaration of the IIgx2qqxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief IIgx2qqxDipoleKernel implements the g -> qq * splitting off an initial-initial dipole * */ class IIgx2qqxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IIgx2qqxDipoleKernel(); /** * The destructor. */ virtual ~IIgx2qqxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<IIgx2qqxDipoleKernel> initIIgx2qqxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IIgx2qqxDipoleKernel & operator=(const IIgx2qqxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of IIgx2qqxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::IIgx2qqxDipoleKernel,1> { /** Typedef of the first base class of IIgx2qqxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the IIgx2qqxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::IIgx2qqxDipoleKernel> : public ClassTraitsBase<Herwig::IIgx2qqxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::IIgx2qqxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * IIgx2qqxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class IIgx2qqxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_IIgx2qqxDipoleKernel_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/IIqx2qgxDipoleKernel.h�������������������������������������0000644�0001750�0001750�00000011065�11754474775�025135� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- #ifndef HERWIG_IIqx2qgxDipoleKernel_H #define HERWIG_IIqx2qgxDipoleKernel_H // // This is the declaration of the IIqx2qgxDipoleKernel class. // #include "DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief IIqx2qgxDipoleKernel implements the q -> qg * splitting off an initial-initial dipole * */ class IIqx2qgxDipoleKernel: public DipoleSplittingKernel { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IIqx2qgxDipoleKernel(); /** * The destructor. */ virtual ~IIqx2qgxDipoleKernel(); //@} public: /** * Return true, if this splitting kernel * applies to the given dipole index. */ virtual bool canHandle(const DipoleIndex&) const; /** * Return true, if this splitting kernel is * the same for the given index a, as the given * splitting kernel for index b. */ virtual bool canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const; /** * Return the emitter data after splitting, given * a dipole index. */ virtual tcPDPtr emitter(const DipoleIndex&) const; /** * Return the emission data after splitting, given * a dipole index. */ virtual tcPDPtr emission(const DipoleIndex&) const; /** * Return the spectator data after splitting, given * a dipole index. */ virtual tcPDPtr spectator(const DipoleIndex&) const; /** * Evaluate this splitting kernel for the given * dipole splitting. */ virtual double evaluate(const DipoleSplittingInfo&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<IIqx2qgxDipoleKernel> initIIqx2qgxDipoleKernel; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IIqx2qgxDipoleKernel & operator=(const IIqx2qgxDipoleKernel &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of IIqx2qgxDipoleKernel. */ template <> struct BaseClassTrait<Herwig::IIqx2qgxDipoleKernel,1> { /** Typedef of the first base class of IIqx2qgxDipoleKernel. */ typedef Herwig::DipoleSplittingKernel NthBase; }; /** This template specialization informs ThePEG about the name of * the IIqx2qgxDipoleKernel class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::IIqx2qgxDipoleKernel> : public ClassTraitsBase<Herwig::IIqx2qgxDipoleKernel> { /** Return a platform-independent class name */ static string className() { return "Herwig::IIqx2qgxDipoleKernel"; } /** * The name of a file containing the dynamic library where the class * IIqx2qgxDipoleKernel is implemented. It may also include several, space-separated, * libraries if the class IIqx2qgxDipoleKernel depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_IIqx2qgxDipoleKernel_H */ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kernels/FFMgx2qqxDipoleKernel.cc�����������������������������������0000644�0001750�0001750�00000006616�11754474775�025410� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the FFMgx2qqxDipoleKernel class. // #include "FFMgx2qqxDipoleKernel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; FFMgx2qqxDipoleKernel::FFMgx2qqxDipoleKernel() : DipoleSplittingKernel() {} FFMgx2qqxDipoleKernel::~FFMgx2qqxDipoleKernel() {} IBPtr FFMgx2qqxDipoleKernel::clone() const { return new_ptr(*this); } IBPtr FFMgx2qqxDipoleKernel::fullclone() const { return new_ptr(*this); } /** * TODO: only correct if either ALL quarks are massless or * ALL quarks have masses >0.*GeV */ bool FFMgx2qqxDipoleKernel::canHandle(const DipoleIndex& ind) const { return ind.emitterData()->id() == ParticleID::g && !ind.initialStateEmitter() && !ind.initialStateSpectator() && // massless quarks shall be treated by massless FFgx2qqxDipoleKernel !( abs(ind.spectatorData()->id()) < 6 && ind.spectatorData()->mass() == ZERO ); } bool FFMgx2qqxDipoleKernel::canHandleEquivalent(const DipoleIndex& a, const DipoleSplittingKernel& sk, const DipoleIndex& b) const { assert(canHandle(a)); if ( !canHandle(b) ) return false; return sk.emitter(b)->id() + sk.emission(b)->id() == 0 && abs(sk.emitter(b)->id()) < 6 && abs(sk.emitter(b)->id()) == abs(emitter(a)->id()) && abs(sk.spectator(b)->id()) == abs(spectator(a)->id()); } tcPDPtr FFMgx2qqxDipoleKernel::emitter(const DipoleIndex&) const { assert(flavour()); assert(abs(flavour()->id()) < 6); return flavour(); } tcPDPtr FFMgx2qqxDipoleKernel::emission(const DipoleIndex&) const { assert(flavour()); assert(abs(flavour()->id()) < 6); return flavour()->CC(); } tcPDPtr FFMgx2qqxDipoleKernel::spectator(const DipoleIndex& ind) const { return ind.spectatorData(); } /* * TODO: remove unnecessary if statement */ double FFMgx2qqxDipoleKernel::evaluate(const DipoleSplittingInfo& split) const { double ret = alphaPDF(split); // masses double muQ2 = sqr( split.emitterData()->mass() / split.scale() ); double muj2 = sqr( split.spectatorData()->mass() / split.scale() ); double z = split.lastZ(); double y = ( sqr(split.lastPt()/split.scale()) + muQ2*(1.-2.*z+2.*z*z) ) / (z*(1.-z)) / (1.-2.*muQ2-muj2); double vijk = sqrt( sqr(2.*muj2+(1.-2.*muQ2-muj2)*(1.-y))-4.*muj2 ) / ((1.-2.*muQ2-muj2)*(1.-y)); double viji = sqrt( sqr((1.-2.*muQ2-muj2)*y)-4.*sqr(muQ2) ) / ((1.-2.*muQ2-muj2)*y+2.*muQ2); double zp = 0.5*(1.+viji*vijk); double zm = 0.5*(1.-viji*vijk); // free parameter of the subtraction scheme double kappa = 0.; ret *= 0.5 / vijk * ( 1. - 2.*( z*(1.-z) - (1.-kappa)*zp*zm - kappa*muQ2/(2*muQ2+(1.-2*muQ2-muj2)*y) ) ); return ret > 0. ? ret : 0.; } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FFMgx2qqxDipoleKernel::persistentOutput(PersistentOStream & ) const { } void FFMgx2qqxDipoleKernel::persistentInput(PersistentIStream & , int) { } ClassDescription<FFMgx2qqxDipoleKernel> FFMgx2qqxDipoleKernel::initFFMgx2qqxDipoleKernel; // Definition of the static class description member. void FFMgx2qqxDipoleKernel::Init() { static ClassDocumentation<FFMgx2qqxDipoleKernel> documentation ("FFMgx2qqxDipoleKernel"); } ������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/DipoleShowerHandler.cc���������������������������������������������0000644�0001750�0001750�00000063517�11754721065�023614� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleShowerHandler.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipoleShowerHandler class. // #include "DipoleShowerHandler.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/RefVector.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" // include theses to have complete types #include "Herwig++/Shower/Base/Evolver.h" #include "Herwig++/Shower/Base/ShowerParticle.h" #include "Herwig++/PDF/MPIPDF.h" #include "Herwig++/PDF/MinBiasPDF.h" #include "Herwig++/Shower/Base/ShowerTree.h" #include "Herwig++/Shower/Base/KinematicsReconstructor.h" #include "Herwig++/Shower/Base/PartnerFinder.h" #include "Herwig++/PDF/HwRemDecayer.h" #include "Herwig++/DipoleShower/Utility/DipolePartonSplitter.h" using namespace Herwig; DipoleShowerHandler::DipoleShowerHandler() : ShowerHandler(), chainOrderVetoScales(true), nEmissions(0), discardNoEmissions(false), doFSR(true), doISR(true), realignmentScheme(0), hardFirstEmission(false), verbosity(0), printEvent(0), nTries(0), didRadiate(false), didRealign(false), theFactorizationScaleFactor(1.0), theRenormalizationScaleFactor(1.0) {} DipoleShowerHandler::~DipoleShowerHandler() {} IBPtr DipoleShowerHandler::clone() const { return new_ptr(*this); } IBPtr DipoleShowerHandler::fullclone() const { return new_ptr(*this); } tPPair DipoleShowerHandler::cascade(tSubProPtr sub, XCPtr) { prepareCascade(sub); if ( !doFSR && ! doISR ) return sub->incoming(); eventRecord().clear(); eventRecord().prepare(sub,dynamic_ptr_cast<tStdXCombPtr>(lastXCombPtr()),pdfs()); if ( eventRecord().outgoing().empty() && !doISR ) return sub->incoming(); if ( !eventRecord().incoming().first->coloured() && !eventRecord().incoming().second->coloured() && !doFSR ) return sub->incoming(); nTries = 0; while ( true ) { try { didRadiate = false; didRealign = false; hardScales(); if ( verbosity > 1 ) { generator()->log() << "DipoleShowerHandler starting off:\n"; eventRecord().debugLastEvent(generator()->log()); generator()->log() << flush; } unsigned int nEmitted = 0; doCascade(nEmitted); if ( discardNoEmissions ) { if ( !didRadiate ) throw Veto(); if ( nEmissions ) if ( nEmissions < nEmitted ) throw Veto(); } if ( intrinsicPtGenerator ) { if ( eventRecord().incoming().first->coloured() && eventRecord().incoming().second->coloured() ) { SpinOneLorentzRotation rot = intrinsicPtGenerator->kick(eventRecord().incoming(), eventRecord().intermediates()); eventRecord().transform(rot); } } didRealign = realign(); constituentReshuffle(); break; } catch (RedoShower&) { if ( ++nTries > maxtry() ) throw ShowerTriesVeto(maxtry()); eventRecord().clear(); eventRecord().prepare(sub,dynamic_ptr_cast<tStdXCombPtr>(lastXCombPtr()),pdfs()); continue; } catch (...) { throw; } } return eventRecord().fillEventRecord(newStep(),firstInteraction(),didRealign); } void DipoleShowerHandler::constituentReshuffle() { if ( constituentReshuffler ) { constituentReshuffler->reshuffle(eventRecord().outgoing(), eventRecord().incoming(), eventRecord().intermediates()); } } void DipoleShowerHandler::hardScales() { Energy maxPt = generator()->maximumCMEnergy(); if ( (eventRecord().incoming().first->coloured() || eventRecord().incoming().second->coloured()) && !hardFirstEmission ) { for ( PList::const_iterator p = eventRecord().outgoing().begin(); p != eventRecord().outgoing().end(); ++p ) maxPt = min(maxPt,(**p).momentum().perp()); } for ( list<DipoleChain>::iterator ch = eventRecord().chains().begin(); ch != eventRecord().chains().end(); ++ch ) { Energy minVetoScale = -1.*GeV; for ( list<Dipole>::iterator dip = ch->dipoles().begin(); dip != ch->dipoles().end(); ++dip ) { // max scale per config Energy maxFirst = 0.0*GeV; Energy maxSecond = 0.0*GeV; for ( vector<Ptr<DipoleSplittingKernel>::ptr>::iterator k = kernels.begin(); k != kernels.end(); ++k ) { pair<bool,bool> conf = make_pair(true,false); if ( (**k).canHandle(dip->index(conf)) ) { Energy scale = evolutionOrdering()->hardScale(dip->emitter(conf),dip->spectator(conf), dip->emitterX(conf),dip->spectatorX(conf), **k,dip->index(conf)); maxFirst = max(maxFirst,scale); } conf = make_pair(false,true); if ( (**k).canHandle(dip->index(conf)) ) { Energy scale = evolutionOrdering()->hardScale(dip->emitter(conf),dip->spectator(conf), dip->emitterX(conf),dip->spectatorX(conf), **k,dip->index(conf)); maxSecond = max(maxSecond,scale); } } if ( dip->leftParticle()->vetoScale() >= ZERO ) { maxFirst = min(maxFirst,sqrt(dip->leftParticle()->vetoScale())); if ( minVetoScale >= ZERO ) minVetoScale = min(minVetoScale,sqrt(dip->leftParticle()->vetoScale())); else minVetoScale = sqrt(dip->leftParticle()->vetoScale()); } if ( dip->rightParticle()->vetoScale() >= ZERO ) { maxSecond = min(maxSecond,sqrt(dip->rightParticle()->vetoScale())); if ( minVetoScale >= ZERO ) minVetoScale = min(minVetoScale,sqrt(dip->rightParticle()->vetoScale())); else minVetoScale = sqrt(dip->rightParticle()->vetoScale()); } maxFirst = min(maxPt,maxFirst); dip->emitterScale(make_pair(true,false),maxFirst); maxSecond = min(maxPt,maxSecond); dip->emitterScale(make_pair(false,true),maxSecond); } if ( !evolutionOrdering()->independentDipoles() && chainOrderVetoScales && minVetoScale >= ZERO ) { for ( list<Dipole>::iterator dip = ch->dipoles().begin(); dip != ch->dipoles().end(); ++dip ) { dip->leftScale(min(dip->leftScale(),minVetoScale)); dip->rightScale(min(dip->rightScale(),minVetoScale)); } } } } Energy DipoleShowerHandler::getWinner(DipoleSplittingInfo& winner, const Dipole& dip, pair<bool,bool> conf) { if ( !dip.index(conf).initialStateEmitter() && !doFSR ) { winner.didStopEvolving(); return 0.0*GeV; } if ( dip.index(conf).initialStateEmitter() && !doISR ) { winner.didStopEvolving(); return 0.0*GeV; } DipoleSplittingInfo candidate; candidate.index(dip.index(conf)); candidate.configuration(conf); candidate.emitterX(dip.emitterX(conf)); candidate.spectatorX(dip.spectatorX(conf)); if ( generators().find(candidate.index()) == generators().end() ) getGenerators(candidate.index()); // // NOTE -- needs proper fixing at some point // // For some very strange reason, equal_range gives back // key ranges it hasn't been asked for. This particularly // happens e.g. for FI dipoles of the same kind, but different // PDF (hard vs MPI PDF). I can't see a reason for this, // as DipoleIndex properly implements comparison for equality // and (lexicographic) ordering; for the time being, we // use equal_range, extented by an explicit check for wether // the key is indeed what we wanted. See line after (*) comment // below. // pair<GeneratorMap::iterator,GeneratorMap::iterator> gens = generators().equal_range(candidate.index()); tPPtr emitter = dip.emitter(conf); tPPtr spectator = dip.spectator(conf); Energy startScale = dip.emitterScale(conf); Energy winnerScale = 0.0*GeV; GeneratorMap::iterator winnerGen = generators().end(); for ( GeneratorMap::iterator gen = gens.first; gen != gens.second; ++gen ) { // (*) see NOTE above if ( !(gen->first == candidate.index()) ) continue; if ( startScale <= gen->second->splittingKinematics()->IRCutoff() ) continue; Energy dScale = gen->second->splittingKinematics()->dipoleScale(emitter->momentum(), spectator->momentum()); // in very exceptional cases happening in DIS if ( isnan(dScale/GeV ) ) throw RedoShower(); candidate.scale(dScale); candidate.continuesEvolving(); candidate.hardPt(evolutionOrdering()->maxPt(startScale,candidate,*(gen->second->splittingKernel()))); gen->second->generate(candidate); Energy nextScale = evolutionOrdering()->evolutionScale(gen->second->lastSplitting(),*(gen->second->splittingKernel())); if ( nextScale > winnerScale ) { winner = candidate; gen->second->completeSplitting(winner); winnerGen = gen; winnerScale = nextScale; } } if ( winnerGen == generators().end() ) { winner.didStopEvolving(); return 0.0*GeV; } if ( winner.stoppedEvolving() ) return 0.0*GeV; return winnerScale; } void DipoleShowerHandler::doCascade(unsigned int& emDone) { if ( nEmissions ) if ( emDone == nEmissions ) return; DipoleSplittingInfo winner; DipoleSplittingInfo dipoleWinner; while ( eventRecord().haveChain() ) { if ( verbosity > 2 ) { generator()->log() << "DipoleShowerHandler selecting splittings for the chain:\n" << eventRecord().currentChain() << flush; } list<Dipole>::iterator winnerDip = eventRecord().currentChain().dipoles().end(); Energy winnerScale = 0.0*GeV; Energy nextLeftScale = 0.0*GeV; Energy nextRightScale = 0.0*GeV; for ( list<Dipole>::iterator dip = eventRecord().currentChain().dipoles().begin(); dip != eventRecord().currentChain().dipoles().end(); ++dip ) { nextLeftScale = getWinner(dipoleWinner,*dip,make_pair(true,false)); if ( nextLeftScale > winnerScale ) { winnerScale = nextLeftScale; winner = dipoleWinner; winnerDip = dip; } nextRightScale = getWinner(dipoleWinner,*dip,make_pair(false,true)); if ( nextRightScale > winnerScale ) { winnerScale = nextRightScale; winner = dipoleWinner; winnerDip = dip; } if ( evolutionOrdering()->independentDipoles() ) { Energy dipScale = max(nextLeftScale,nextRightScale); if ( dip->leftScale() > dipScale ) dip->leftScale(dipScale); if ( dip->rightScale() > dipScale ) dip->rightScale(dipScale); } } if ( verbosity > 1 ) { if ( winnerDip != eventRecord().currentChain().dipoles().end() ) generator()->log() << "DipoleShowerHandler selected the splitting:\n" << winner << " for the dipole\n" << (*winnerDip) << flush; else generator()->log() << "DipoleShowerHandler could not select a splitting above the IR cutoff\n" << flush; } // pop the chain if no dipole did radiate if ( winnerDip == eventRecord().currentChain().dipoles().end() ) { eventRecord().popChain(); continue; } // otherwise perform the splitting didRadiate = true; pair<list<Dipole>::iterator,list<Dipole>::iterator> children; DipoleChain* firstChain = 0; DipoleChain* secondChain = 0; eventRecord().split(winnerDip,winner,children,firstChain,secondChain); assert(firstChain && secondChain); evolutionOrdering()->setEvolutionScale(winnerScale,winner,*firstChain,children); if ( !secondChain->dipoles().empty() ) evolutionOrdering()->setEvolutionScale(winnerScale,winner,*secondChain,children); if ( verbosity > 1 ) { generator()->log() << "DipoleShowerHandler did split the last selected dipole into:\n" << (*children.first) << (*children.second) << flush; } if ( verbosity > 2 ) { generator()->log() << "After splitting the last selected dipole, " << "DipoleShowerHandler encountered the following chains:\n" << (*firstChain) << (*secondChain) << flush; } if ( nEmissions ) if ( ++emDone == nEmissions ) return; } } bool DipoleShowerHandler::realign() { if ( !didRadiate && !intrinsicPtGenerator ) return false; if ( eventRecord().incoming().first->coloured() || eventRecord().incoming().second->coloured() ) { if ( eventRecord().incoming().first->momentum().perp2()/GeV2 < 1e-10 && eventRecord().incoming().second->momentum().perp2()/GeV2 < 1e-10 ) return false; pair<Lorentz5Momentum,Lorentz5Momentum> inMomenta (eventRecord().incoming().first->momentum(), eventRecord().incoming().second->momentum()); SpinOneLorentzRotation transform((inMomenta.first+inMomenta.second).findBoostToCM()); Axis dir = (transform * inMomenta.first).vect().unit(); Axis rot (-dir.y(),dir.x(),0); double theta = dir.theta(); if ( lastParticles().first->momentum().z() < ZERO ) theta = -theta; transform.rotate(-theta,rot); inMomenta.first = transform*inMomenta.first; inMomenta.second = transform*inMomenta.second; assert(inMomenta.first.z() > ZERO && inMomenta.second.z() < ZERO); Energy2 sHat = (eventRecord().incoming().first->momentum() + eventRecord().incoming().second->momentum()).m2(); pair<Energy,Energy> masses(eventRecord().incoming().first->mass(), eventRecord().incoming().second->mass()); pair<Energy,Energy> qs; if ( !eventRecord().incoming().first->coloured() ) { assert(masses.second == ZERO); qs.first = eventRecord().incoming().first->momentum().z(); qs.second = (sHat-sqr(masses.first))/(2.*(qs.first+sqrt(sqr(masses.first)+sqr(qs.first)))); } else if ( !eventRecord().incoming().second->coloured() ) { assert(masses.first == ZERO); qs.second = eventRecord().incoming().second->momentum().z(); qs.first = (sHat-sqr(masses.second))/(2.*(qs.second+sqrt(sqr(masses.second)+sqr(qs.second)))); } else { assert(masses.first == ZERO && masses.second == ZERO); if ( realignmentScheme == 0 ) { double yX = eventRecord().pX().rapidity(); double yInt = (transform*eventRecord().pX()).rapidity(); double dy = yX-yInt; qs.first = (sqrt(sHat)/2.)*exp(dy); qs.second = (sqrt(sHat)/2.)*exp(-dy); } else if ( realignmentScheme == 1 ) { Energy sS = sqrt((lastParticles().first->momentum() + lastParticles().second->momentum()).m2()); qs.first = eventRecord().fractions().first * sS / 2.; qs.second = eventRecord().fractions().second * sS / 2.; } } double beta = (qs.first-qs.second) / ( sqrt(sqr(masses.first)+sqr(qs.first)) + sqrt(sqr(masses.second)+sqr(qs.second)) ); transform.boostZ(beta); Lorentz5Momentum tmp; if ( eventRecord().incoming().first->coloured() ) { tmp = eventRecord().incoming().first->momentum(); tmp = transform * tmp; eventRecord().incoming().first->set5Momentum(tmp); } if ( eventRecord().incoming().second->coloured() ) { tmp = eventRecord().incoming().second->momentum(); tmp = transform * tmp; eventRecord().incoming().second->set5Momentum(tmp); } eventRecord().transform(transform); return true; } return false; } void DipoleShowerHandler::resetAlphaS(Ptr<AlphaSBase>::tptr as) { for ( vector<Ptr<DipoleSplittingKernel>::ptr>::iterator k = kernels.begin(); k != kernels.end(); ++k ) (**k).alphaS(as); // clear the generators to be rebuild // actually, there shouldn't be any generators // when this happens. generators().clear(); } void DipoleShowerHandler::resetReweight(Ptr<DipoleSplittingReweight>::tptr rw) { for ( GeneratorMap::iterator k = generators().begin(); k != generators().end(); ++k ) k->second->splittingReweight(rw); } void DipoleShowerHandler::getGenerators(const DipoleIndex& ind, Ptr<DipoleSplittingReweight>::tptr rw) { bool gotone = false; for ( vector<Ptr<DipoleSplittingKernel>::ptr>::iterator k = kernels.begin(); k != kernels.end(); ++k ) { if ( (**k).canHandle(ind) ) { if ( verbosity > 0 ) { generator()->log() << "DipoleShowerHandler encountered the dipole configuration\n" << ind << " in event number " << eventHandler()->currentEvent()->number() << "\nwhich can be handled by the splitting kernel '" << (**k).name() << "'.\n" << flush; } gotone = true; Ptr<DipoleSplittingGenerator>::ptr nGenerator = new_ptr(DipoleSplittingGenerator()); nGenerator->splittingKernel(*k); nGenerator->splittingKernel()->renormalizationScaleFactor(theRenormalizationScaleFactor); nGenerator->splittingKernel()->factorizationScaleFactor(theFactorizationScaleFactor); GeneratorMap::const_iterator equivalent = generators().end(); for ( GeneratorMap::const_iterator eq = generators().begin(); eq != generators().end(); ++eq ) { if ( !eq->second->wrapping() ) if ( (**k).canHandleEquivalent(ind,*(eq->second->splittingKernel()),eq->first) ) { equivalent = eq; if ( verbosity > 0 ) { generator()->log() << "The dipole configuration " << ind << " can equivalently be handled by the existing\n" << "generator for configuration " << eq->first << " using the kernel '" << eq->second->splittingKernel()->name() << "'\n" << flush; } break; } } if ( equivalent != generators().end() ) { nGenerator->wrap(equivalent->second); } DipoleSplittingInfo dummy; dummy.index(ind); nGenerator->splittingReweight(rw); nGenerator->prepare(dummy); generators().insert(make_pair(ind,nGenerator)); } } if ( !gotone ) { generator()->logWarning(Exception() << "DipoleShowerHandler could not " << "find a splitting kernel which is able " << "to handle splittings off the dipole " << ind << ".\n" << "Please check the input files." << Exception::warning); } } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void DipoleShowerHandler::doinit() { ShowerHandler::doinit(); if ( theGlobalAlphaS ) resetAlphaS(theGlobalAlphaS); } void DipoleShowerHandler::dofinish() { ShowerHandler::dofinish(); } void DipoleShowerHandler::doinitrun() { ShowerHandler::doinitrun(); } void DipoleShowerHandler::persistentOutput(PersistentOStream & os) const { os << kernels << theEvolutionOrdering << constituentReshuffler << intrinsicPtGenerator << theGlobalAlphaS << chainOrderVetoScales << nEmissions << discardNoEmissions << doFSR << doISR << realignmentScheme << hardFirstEmission << verbosity << printEvent << theFactorizationScaleFactor << theRenormalizationScaleFactor; } void DipoleShowerHandler::persistentInput(PersistentIStream & is, int) { is >> kernels >> theEvolutionOrdering >> constituentReshuffler >> intrinsicPtGenerator >> theGlobalAlphaS >> chainOrderVetoScales >> nEmissions >> discardNoEmissions >> doFSR >> doISR >> realignmentScheme >> hardFirstEmission >> verbosity >> printEvent >> theFactorizationScaleFactor >> theRenormalizationScaleFactor; } ClassDescription<DipoleShowerHandler> DipoleShowerHandler::initDipoleShowerHandler; // Definition of the static class description member. void DipoleShowerHandler::Init() { static ClassDocumentation<DipoleShowerHandler> documentation ("The DipoleShowerHandler class manages the showering using " "the dipole shower algorithm.", "The shower evolution was performed using the algorithm described in " "\\cite{Platzer:2009jq} and \\cite{Platzer:2011bc}.", "%\\cite{Platzer:2009jq}\n" "\\bibitem{Platzer:2009jq}\n" "S.~Platzer and S.~Gieseke,\n" "``Coherent Parton Showers with Local Recoils,''\n" " JHEP {\\bf 1101}, 024 (2011)\n" "arXiv:0909.5593 [hep-ph].\n" "%%CITATION = ARXIV:0909.5593;%%\n" "%\\cite{Platzer:2011bc}\n" "\\bibitem{Platzer:2011bc}\n" "S.~Platzer and S.~Gieseke,\n" "``Dipole Showers and Automated NLO Matching in Herwig++,''\n" "arXiv:1109.6256 [hep-ph].\n" "%%CITATION = ARXIV:1109.6256;%%"); static RefVector<DipoleShowerHandler,DipoleSplittingKernel> interfaceKernels ("Kernels", "Set the splitting kernels to be used by the dipole shower.", &DipoleShowerHandler::kernels, -1, false, false, true, false, false); static Reference<DipoleShowerHandler,DipoleEvolutionOrdering> interfaceEvolutionOrdering ("EvolutionOrdering", "Set the evolution ordering to be used.", &DipoleShowerHandler::theEvolutionOrdering, false, false, true, false, false); static Reference<DipoleShowerHandler,ConstituentReshuffler> interfaceConstituentReshuffler ("ConstituentReshuffler", "The object to be used to reshuffle partons to their constitutent mass shells.", &DipoleShowerHandler::constituentReshuffler, false, false, true, true, false); static Reference<DipoleShowerHandler,IntrinsicPtGenerator> interfaceIntrinsicPtGenerator ("IntrinsicPtGenerator", "Set the object in charge to generate intrinsic pt for incoming partons.", &DipoleShowerHandler::intrinsicPtGenerator, false, false, true, true, false); static Reference<DipoleShowerHandler,AlphaSBase> interfaceGlobalAlphaS ("GlobalAlphaS", "Set a global strong coupling for all splitting kernels.", &DipoleShowerHandler::theGlobalAlphaS, false, false, true, true, false); static Switch<DipoleShowerHandler,bool> interfaceDoFSR ("DoFSR", "Switch on or off final state radiation.", &DipoleShowerHandler::doFSR, true, false, false); static SwitchOption interfaceDoFSROn (interfaceDoFSR, "On", "Switch on final state radiation.", true); static SwitchOption interfaceDoFSROff (interfaceDoFSR, "Off", "Switch off final state radiation.", false); static Switch<DipoleShowerHandler,bool> interfaceDoISR ("DoISR", "Switch on or off initial state radiation.", &DipoleShowerHandler::doISR, true, false, false); static SwitchOption interfaceDoISROn (interfaceDoISR, "On", "Switch on initial state radiation.", true); static SwitchOption interfaceDoISROff (interfaceDoISR, "Off", "Switch off initial state radiation.", false); static Switch<DipoleShowerHandler,bool> interfaceHardFirstEmission ("HardFirstEmission", "Switch on or off hard first emission.", &DipoleShowerHandler::hardFirstEmission, false, false, false); static SwitchOption interfaceHardFirstEmissionOn (interfaceHardFirstEmission, "On", "Switch on hard first emission.", true); static SwitchOption interfaceHardFirstEmissionOff (interfaceHardFirstEmission, "Off", "Switch off hard first emission.", false); static Switch<DipoleShowerHandler,int> interfaceRealignmentScheme ("RealignmentScheme", "The realignment scheme to use.", &DipoleShowerHandler::realignmentScheme, 0, false, false); static SwitchOption interfaceRealignmentSchemePreserveRapidity (interfaceRealignmentScheme, "PreserveRapidity", "Preserve the rapidity of non-coloured outgoing system.", 0); static SwitchOption interfaceRealignmentSchemeEvolutionFractions (interfaceRealignmentScheme, "EvolutionFractions", "Use momentum fractions as generated by the evolution.", 1); static SwitchOption interfaceRealignmentSchemeCollisionFrame (interfaceRealignmentScheme, "CollisionFrame", "Determine realignment from collision frame.", 2); static Switch<DipoleShowerHandler,bool> interfaceChainOrderVetoScales ("ChainOrderVetoScales", "[experimental] Switch on or off the chain ordering for veto scales.", &DipoleShowerHandler::chainOrderVetoScales, true, false, false); static SwitchOption interfaceChainOrderVetoScalesOn (interfaceChainOrderVetoScales, "On", "Switch on chain ordering for veto scales.", true); static SwitchOption interfaceChainOrderVetoScalesOff (interfaceChainOrderVetoScales, "Off", "Switch off chain ordering for veto scales.", false); interfaceChainOrderVetoScales.rank(-1); static Parameter<DipoleShowerHandler,unsigned int> interfaceNEmissions ("NEmissions", "[debug option] Limit the number of emissions to be generated. Zero does not limit the number of emissions.", &DipoleShowerHandler::nEmissions, 0, 0, 0, false, false, Interface::lowerlim); interfaceNEmissions.rank(-1); static Switch<DipoleShowerHandler,bool> interfaceDiscardNoEmissions ("DiscardNoEmissions", "[debug option] Discard events without radiation.", &DipoleShowerHandler::discardNoEmissions, false, false, false); static SwitchOption interfaceDiscardNoEmissionsOn (interfaceDiscardNoEmissions, "On", "Discard events without radiation.", true); static SwitchOption interfaceDiscardNoEmissionsOff (interfaceDiscardNoEmissions, "Off", "Do not discard events without radiation.", false); interfaceDiscardNoEmissions.rank(-1); static Parameter<DipoleShowerHandler,int> interfaceVerbosity ("Verbosity", "[debug option] Set the level of debug information provided.", &DipoleShowerHandler::verbosity, 0, 0, 0, false, false, Interface::lowerlim); interfaceVerbosity.rank(-1); static Parameter<DipoleShowerHandler,int> interfacePrintEvent ("PrintEvent", "[debug option] The number of events for which debugging information should be provided.", &DipoleShowerHandler::printEvent, 0, 0, 0, false, false, Interface::lowerlim); interfacePrintEvent.rank(-1); static Parameter<DipoleShowerHandler,double> interfaceFactorizationScaleFactor ("FactorizationScaleFactor", "The factorization scale factor.", &DipoleShowerHandler::theFactorizationScaleFactor, 1.0, 0.0, 0, false, false, Interface::lowerlim); static Parameter<DipoleShowerHandler,double> interfaceRenormalizationScaleFactor ("RenormalizationScaleFactor", "The renormalization scale factor.", &DipoleShowerHandler::theRenormalizationScaleFactor, 1.0, 0.0, 0, false, false, Interface::lowerlim); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/��������������������������������������������������������0000755�0001750�0001750�00000000000�11756464207�021462� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/FILightKinematics.cc������������������������������������0000644�0001750�0001750�00000014503�11754474775�025303� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FILightKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FILightKinematics class. // #include "FILightKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/DipoleShower/Base/DipoleSplittingInfo.h" using namespace Herwig; FILightKinematics::FILightKinematics() : DipoleSplittingKinematics() {} FILightKinematics::~FILightKinematics() {} IBPtr FILightKinematics::clone() const { return new_ptr(*this); } IBPtr FILightKinematics::fullclone() const { return new_ptr(*this); } pair<double,double> FILightKinematics::kappaSupport(const DipoleSplittingInfo&) const { return make_pair(0.0,1.0); } pair<double,double> FILightKinematics::xiSupport(const DipoleSplittingInfo& split) const { double c = sqrt(1.-4.*sqr(IRCutoff()/generator()->maximumCMEnergy())); if ( split.index().emitterData()->id() == ParticleID::g ) { if ( split.emissionData()->id() != ParticleID::g ) return make_pair(0.5*(1.-c),0.5*(1.+c)); double b = log((1.+c)/(1.-c)); return make_pair(-b,b); } return make_pair(-log(0.5*(1.+c)),-log(0.5*(1.-c))); } Energy FILightKinematics::dipoleScale(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator) const { return sqrt(2.*(pEmitter*pSpectator)); } Energy FILightKinematics::ptMax(Energy dScale, double, double specX, const DipoleIndex&, const DipoleSplittingKernel&) const { return dScale * sqrt((1.-specX)/specX) /2.; } Energy FILightKinematics::QMax(Energy dScale, double, double specX, const DipoleIndex&) const { return dScale * sqrt((1.-specX)/specX); } Energy FILightKinematics::PtFromQ(Energy scale, const DipoleSplittingInfo& split) const { double z = split.lastZ(); return scale*sqrt(z*(1.-z)); } Energy FILightKinematics::QFromPt(Energy scale, const DipoleSplittingInfo& split) const { double z = split.lastZ(); return scale/sqrt(z*(1.-z)); } double FILightKinematics::ptToRandom(Energy pt, Energy, const DipoleIndex&) const { return log(pt/IRCutoff()) / log(0.5 * generator()->maximumCMEnergy()/IRCutoff()); } bool FILightKinematics::generateSplitting(double kappa, double xi, double rphi, DipoleSplittingInfo& info) { if ( info.spectatorX() < xMin() ) { jacobian(0.0); return false; } Energy pt = IRCutoff() * pow(0.5 * generator()->maximumCMEnergy()/IRCutoff(),kappa); if ( pt > info.hardPt() ) { jacobian(0.0); return false; } double z; double mapZJacobian; if ( info.index().emitterData()->id() == ParticleID::g ) { if ( info.emissionData()->id() != ParticleID::g ) { z = xi; mapZJacobian = 1.; } else { z = exp(xi)/(1.+exp(xi)); mapZJacobian = z*(1.-z); } } else { z = 1.-exp(-xi); mapZJacobian = 1.-z; } double s = z*(1.-z); double xs = info.spectatorX(); double x = 1. / ( 1. + sqr(pt/info.scale()) / s ); double zp = 0.5*(1.+sqrt(1.-sqr(pt/info.hardPt()))); double zm = 0.5*(1.-sqrt(1.-sqr(pt/info.hardPt()))); if ( pt < IRCutoff() || pt > info.hardPt() || z > zp || z < zm || x < xs ) { jacobian(0.0); return false; } double phi = 2.*Constants::pi*rphi; jacobian( 2. * mapZJacobian * log(0.5 * generator()->maximumCMEnergy()/IRCutoff())); lastPt(pt); lastZ(z); lastPhi(phi); lastSpectatorZ(x); if ( theMCCheck ) theMCCheck->book(1.,info.spectatorX(),info.scale(),info.hardPt(),pt,z,jacobian()); return true; } InvEnergy2 FILightKinematics::setKinematics(DipoleSplittingInfo& split) const { Lorentz5Momentum emitter = split.splitEmitter()->momentum(); Lorentz5Momentum emission = split.emission()->momentum(); Lorentz5Momentum spectator = split.splitSpectator()->momentum(); split.splittingKinematics(const_cast<FILightKinematics*>(this)); Energy2 scale = 2.*(- emission*emitter + emission*spectator + emitter*spectator); split.scale(sqrt(scale)); double x = scale / (2.*(emitter*spectator + emission*spectator)); double z = emitter*spectator / (emitter*spectator + emission*spectator); split.lastPt(split.scale() * sqrt(z*(1.-z)*(1.-x)/x)); split.lastZ(z); split.hardPt(split.lastPt()); if ( split.hardPt() > IRCutoff() ) { split.continuesEvolving(); } else { split.didStopEvolving(); } return 1./(2.*x*(emitter*emission)); } double FILightKinematics:: jacobianTimesPropagator(const DipoleSplittingInfo&, Energy) const { assert(false && "implementation missing"); return 0.; } void FILightKinematics::generateKinematics(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator, const DipoleSplittingInfo& dInfo) { Energy pt = dInfo.lastPt(); double z = dInfo.lastZ(); Lorentz5Momentum kt = getKt (pSpectator, pEmitter, pt, dInfo.lastPhi(),true); double ratio = sqr(pt/(-(pEmitter-pSpectator).m())); double xInv = (1.+ratio/(z*(1.-z))); Lorentz5Momentum em = z*pEmitter + (ratio/z)*pSpectator + kt; em.setMass(0.*GeV); em.rescaleEnergy(); Lorentz5Momentum emm = (1.-z)*pEmitter + (ratio/(1.-z))*pSpectator - kt; emm.setMass(0.*GeV); emm.rescaleEnergy(); Lorentz5Momentum spe = xInv*pSpectator; spe.setMass(0.*GeV); spe.rescaleEnergy(); emitterMomentum(em); emissionMomentum(emm); spectatorMomentum(spe); } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FILightKinematics::persistentOutput(PersistentOStream & ) const { } void FILightKinematics::persistentInput(PersistentIStream & , int) { } ClassDescription<FILightKinematics> FILightKinematics::initFILightKinematics; // Definition of the static class description member. void FILightKinematics::Init() { static ClassDocumentation<FILightKinematics> documentation ("FILightKinematics implements massless splittings " "off a final-initial dipole."); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/FILightKinematics.h�������������������������������������0000644�0001750�0001750�00000015036�11754474775�025147� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FILightKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FILightKinematics_H #define HERWIG_FILightKinematics_H // // This is the declaration of the FILightKinematics class. // #include "DipoleSplittingKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief FILightKinematics implements massless splittings * off a final-initial dipole. * */ class FILightKinematics: public DipoleSplittingKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FILightKinematics(); /** * The destructor. */ virtual ~FILightKinematics(); //@} public: /** * Return the boundaries in between the evolution * variable random number is to be sampled; the lower * cuoff is assumed to correspond to the infrared cutoff. */ virtual pair<double,double> kappaSupport(const DipoleSplittingInfo& dIndex) const; /** * Return the boundaries in between the momentum * fraction random number is to be sampled. */ virtual pair<double,double> xiSupport(const DipoleSplittingInfo& dIndex) const; /** * Return the dipole scale associated to the * given pair of emitter and spectator. This * should be the invariant mass or absolute value * final/final or initial/initial and the absolute * value of the momentum transfer for intial/final or * final/initial dipoles. */ virtual Energy dipoleScale(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator) const; /** * Return the maximum pt for the given dipole scale. */ virtual Energy ptMax(Energy dScale, double emX, double specX, const DipoleIndex& dIndex, const DipoleSplittingKernel&) const; /** * Return the maximum virtuality for the given dipole scale. */ virtual Energy QMax(Energy dScale, double emX, double specX, const DipoleIndex& dIndex) const; /** * Return the pt given a virtuality. */ virtual Energy PtFromQ(Energy scale, const DipoleSplittingInfo&) const; /** * Return the virtuality given a pt. */ virtual Energy QFromPt(Energy scale, const DipoleSplittingInfo&) const; /** * Return the random number associated to * the given pt. */ virtual double ptToRandom(Energy pt, Energy dScale, const DipoleIndex& dIndex) const; /** * Generate splitting variables given three random numbers * and the momentum fractions of the emitter and spectator. * Return true on success. */ virtual bool generateSplitting(double kappa, double xi, double phi, DipoleSplittingInfo& dIndex); /** * For the splitting products present in the given dipole splitting * info object calculate the kinematics parameters and return the * propagator factor. */ virtual InvEnergy2 setKinematics(DipoleSplittingInfo&) const; /** * For the splitting parameters given in the dipole splitting info * object, calculate the phasespace Jacobian times the propagator * factor. */ virtual double jacobianTimesPropagator(const DipoleSplittingInfo&, Energy) const; /** * Generate the full kinematics given emitter and * spectator momentum and a previously completeted * DipoleSplittingInfo object. */ virtual void generateKinematics(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator, const DipoleSplittingInfo& dInfo); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FILightKinematics> initFILightKinematics; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FILightKinematics & operator=(const FILightKinematics &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FILightKinematics. */ template <> struct BaseClassTrait<Herwig::FILightKinematics,1> { /** Typedef of the first base class of FILightKinematics. */ typedef Herwig::DipoleSplittingKinematics NthBase; }; /** This template specialization informs ThePEG about the name of * the FILightKinematics class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FILightKinematics> : public ClassTraitsBase<Herwig::FILightKinematics> { /** Return a platform-independent class name */ static string className() { return "Herwig::FILightKinematics"; } /** * The name of a file containing the dynamic library where the class * FILightKinematics is implemented. It may also include several, space-separated, * libraries if the class FILightKinematics depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_FILightKinematics_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/FFLightKinematics.cc������������������������������������0000644�0001750�0001750�00000014462�11754474775�025304� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFLightKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFLightKinematics class. // #include "FFLightKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/DipoleShower/Base/DipoleSplittingInfo.h" using namespace Herwig; FFLightKinematics::FFLightKinematics() : DipoleSplittingKinematics() {} FFLightKinematics::~FFLightKinematics() {} IBPtr FFLightKinematics::clone() const { return new_ptr(*this); } IBPtr FFLightKinematics::fullclone() const { return new_ptr(*this); } pair<double,double> FFLightKinematics::kappaSupport(const DipoleSplittingInfo&) const { return make_pair(0.0,1.0); } pair<double,double> FFLightKinematics::xiSupport(const DipoleSplittingInfo& split) const { double c = sqrt(1.-4.*sqr(IRCutoff()/generator()->maximumCMEnergy())); if ( split.index().emitterData()->id() == ParticleID::g ) { if ( split.emissionData()->id() != ParticleID::g ) return make_pair(0.5*(1.-c),0.5*(1.+c)); double b = log((1.+c)/(1.-c)); return make_pair(-b,b); } return make_pair(-log(0.5*(1.+c)),-log(0.5*(1.-c))); } Energy FFLightKinematics::dipoleScale(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator) const { return sqrt(2.*(pEmitter*pSpectator)); } Energy FFLightKinematics::ptMax(Energy dScale, double, double, const DipoleIndex&, const DipoleSplittingKernel&) const { return dScale/2.; } Energy FFLightKinematics::QMax(Energy dScale, double, double, const DipoleIndex&) const { return dScale; } Energy FFLightKinematics::PtFromQ(Energy scale, const DipoleSplittingInfo& split) const { double z = split.lastZ(); return scale*sqrt(z*(1.-z)); } Energy FFLightKinematics::QFromPt(Energy scale, const DipoleSplittingInfo& split) const { double z = split.lastZ(); return scale/sqrt(z*(1.-z)); } double FFLightKinematics::ptToRandom(Energy pt, Energy, const DipoleIndex&) const { return log(pt/IRCutoff()) / log(0.5 * generator()->maximumCMEnergy()/IRCutoff()); } bool FFLightKinematics::generateSplitting(double kappa, double xi, double rphi, DipoleSplittingInfo& info) { Energy pt = IRCutoff() * pow(0.5 * generator()->maximumCMEnergy()/IRCutoff(),kappa); if ( pt > info.hardPt() ) { jacobian(0.0); return false; } double z; double mapZJacobian; if ( info.index().emitterData()->id() == ParticleID::g ) { if ( info.emissionData()->id() != ParticleID::g ) { z = xi; mapZJacobian = 1.; } else { z = exp(xi)/(1.+exp(xi)); mapZJacobian = z*(1.-z); } } else { z = 1.-exp(-xi); mapZJacobian = 1.-z; } double s = z*(1.-z); double zp = 0.5*(1.+sqrt(1.-sqr(pt/info.hardPt()))); double zm = 0.5*(1.-sqrt(1.-sqr(pt/info.hardPt()))); if ( pt < IRCutoff() || pt > info.hardPt() || z > zp || z < zm ) { jacobian(0.0); return false; } double phi = 2.*Constants::pi*rphi; jacobian( 2. * mapZJacobian * (1. - sqr(pt) / (s * sqr(info.scale())) ) * log(0.5 * generator()->maximumCMEnergy()/IRCutoff()) ); lastPt(pt); lastZ(z); lastPhi(phi); if ( theMCCheck ) theMCCheck->book(1.,1.,info.scale(),info.hardPt(),pt,z,jacobian()); return true; } InvEnergy2 FFLightKinematics::setKinematics(DipoleSplittingInfo& split) const { Lorentz5Momentum emitter = split.splitEmitter()->momentum(); Lorentz5Momentum emission = split.emission()->momentum(); Lorentz5Momentum spectator = split.splitSpectator()->momentum(); split.splittingKinematics(const_cast<FFLightKinematics*>(this)); Energy2 scale = 2.*(emission*emitter + emission*spectator + emitter*spectator); split.scale(sqrt(scale)); double y = 2.*emission*emitter / scale; double z = emitter*spectator / (emitter*spectator + emission*spectator); split.lastPt(split.scale() * sqrt(y*z*(1.-z))); split.lastZ(z); split.hardPt(split.lastPt()); if ( split.hardPt() > IRCutoff() ) { split.continuesEvolving(); } else { split.didStopEvolving(); } return 1./(2.*(emitter*emission)); } double FFLightKinematics:: jacobianTimesPropagator(const DipoleSplittingInfo& split, Energy scale) const { Energy pt = split.lastPt(); double z = split.lastZ(); double s = z*(1.-z); double zp = 0.5*(1.+sqrt(1.-sqr(pt/split.hardPt()))); double zm = 0.5*(1.-sqrt(1.-sqr(pt/split.hardPt()))); if ( pt < IRCutoff() || pt > split.hardPt() || z > zp || z < zm ) { return 0.; } return (2.*scale/pt)*(1.-sqr(pt)/(s*sqr(scale))); } void FFLightKinematics::generateKinematics(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator, const DipoleSplittingInfo& dInfo) { double z = dInfo.lastZ(); Energy pt = dInfo.lastPt(); double y = sqr(pt / (pEmitter+pSpectator).m()) / (z*(1.-z)); Lorentz5Momentum kt = getKt(pEmitter, pSpectator, pt, dInfo.lastPhi()); Lorentz5Momentum em = z*pEmitter + y*(1.-z)*pSpectator + kt; em.setMass(0.*GeV); em.rescaleEnergy(); Lorentz5Momentum emm = (1.-z)*pEmitter + z*y*pSpectator - kt; emm.setMass(0.*GeV); emm.rescaleEnergy(); Lorentz5Momentum spe = (1.-y)*pSpectator; spe.setMass(0.*GeV); spe.rescaleEnergy(); emitterMomentum(em); emissionMomentum(emm); spectatorMomentum(spe); } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FFLightKinematics::persistentOutput(PersistentOStream & ) const { } void FFLightKinematics::persistentInput(PersistentIStream & , int) { } ClassDescription<FFLightKinematics> FFLightKinematics::initFFLightKinematics; // Definition of the static class description member. void FFLightKinematics::Init() { static ClassDocumentation<FFLightKinematics> documentation ("FFLightKinematics implements massless splittings " "off a final-final dipole."); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/DipoleSplittingKinematics.h�����������������������������0000644�0001750�0001750�00000031154�11754474775�026772� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleSplittingKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipoleSplittingKinematics_H #define HERWIG_DipoleSplittingKinematics_H // // This is the declaration of the DipoleSplittingKinematics class. // #include "ThePEG/Handlers/HandlerBase.h" #include "ThePEG/Vectors/Lorentz5Vector.h" #include "Herwig++/DipoleShower/Utility/DipoleMCCheck.h" namespace Herwig { using namespace ThePEG; class DipoleIndex; class DipoleSplittingInfo; class DipoleSplittingKernel; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief DipoleSplittingKinematics is the base class for dipole splittings * as performed in the dipole shower. * * @see \ref DipoleSplittingKinematicsInterfaces "The interfaces" * defined for DipoleSplittingKinematics. */ class DipoleSplittingKinematics: public HandlerBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ DipoleSplittingKinematics(); /** * The destructor. */ virtual ~DipoleSplittingKinematics(); //@} public: /** * Return the boundaries in between the evolution * variable random number is to be sampled; the lower * cuoff is assumed to correspond to the infrared cutoff. */ virtual pair<double,double> kappaSupport(const DipoleSplittingInfo& dIndex) const = 0; /** * Return the boundaries in between the momentum * fraction random number is to be sampled. */ virtual pair<double,double> xiSupport(const DipoleSplittingInfo& dIndex) const = 0; /** * Return the dipole scale associated to the * given pair of emitter and spectator. This * should be the invariant mass or absolute value * final/final or initial/initial and the absolute * value of the momentum transfer for intial/final or * final/initial dipoles. */ virtual Energy dipoleScale(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator) const = 0; /** * Return the maximum pt for the given dipole scale. */ virtual Energy ptMax(Energy dScale, double emX, double specX, const DipoleIndex& dIndex, const DipoleSplittingKernel& split) const = 0; /** * Return the maximum virtuality for the given dipole scale. */ virtual Energy QMax(Energy dScale, double emX, double specX, const DipoleIndex& dIndex) const = 0; /** * Return the pt given a virtuality. */ virtual Energy PtFromQ(Energy scale, const DipoleSplittingInfo&) const = 0; /** * Return the virtuality given a pt. */ virtual Energy QFromPt(Energy scale, const DipoleSplittingInfo&) const = 0; /** * Return the infrared cutoff. */ virtual Energy IRCutoff() const { return theIRCutoff; } /** * Return the minimum momentum fraction for * incoming partons */ double xMin() const { return theXMin; } /** * Return the random number associated to * the given pt. */ virtual double ptToRandom(Energy pt, Energy dScale, const DipoleIndex& dIndex) const = 0; /** * Generate splitting variables given three random numbers * and the momentum fractions of the emitter and spectator. * Return true on success. */ virtual bool generateSplitting(double kappa, double xi, double phi, DipoleSplittingInfo& dIndex) = 0; /** * For the splitting products present in the given dipole splitting * info object calculate the kinematics parameters and return the * propagator factor. */ virtual InvEnergy2 setKinematics(DipoleSplittingInfo&) const = 0; /** * For the splitting parameters given in the dipole splitting info * object, calculate the phasespace Jacobian times the propagator * factor. */ virtual double jacobianTimesPropagator(const DipoleSplittingInfo&, Energy) const = 0; /** * Get the splitting phasespace weight associated to * the last call to generateSplitting. This is taken to * be the single particle phasespace times 16 \pi^2 divided * by the relevant propagator invariant. */ double jacobian() const { return theJacobian; } /** * Return true, if this splitting kinematics * class is capable of delivering an overestimate * to the jacobian. */ virtual bool haveOverestimate() const { return false; } /** * Return the overestimated jacobian for the * last generated parameters. */ virtual double jacobianOverestimate() const { return -1.; } /** * Return the last generated pt */ Energy lastPt() const { return theLastPt; } /** * Return the last generated momentum fraction. */ double lastZ() const { return theLastZ; } /** * Return the last generated azimuthal angle. */ double lastPhi() const { return theLastPhi; } /** * Return the momentum fraction, by which the emitter's * momentum fraction should be divided after the splitting. */ double lastEmitterZ() const { return theLastEmitterZ; } /** * Return the momentum fraction, by which the spectator's * momentum fraction should be divided after the splitting. */ double lastSpectatorZ() const { return theLastSpectatorZ; } /** * Return any additional parameters needed to * evaluate the splitting kernel or to generate the * full splitting. */ const vector<double>& lastSplittingParameters() const { return theLastSplittingParameters; } /** * Complete a DipoleSplittingInfo object with * the parameters generated by the last call to * generateSplitting() */ void prepareSplitting(DipoleSplittingInfo& dInfo); public: /** * Generate the full kinematics given emitter and * spectator momentum and a previously completeted * DipoleSplittingInfo object. */ virtual void generateKinematics(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator, const DipoleSplittingInfo& dInfo) = 0; /** * Return the emitter's momentum after the splitting. */ const Lorentz5Momentum& lastEmitterMomentum() const { return theEmitterMomentum; } /** * Return the spectator's momentum after the splitting. */ const Lorentz5Momentum& lastSpectatorMomentum() const { return theSpectatorMomentum; } /** * Return the emission's momentum. */ const Lorentz5Momentum& lastEmissionMomentum() const { return theEmissionMomentum; } /* * Return true, if there is a transformation which should * be applied to all other final state particles except the ones * involved in the splitting after having performed the splitting */ virtual bool doesTransform () const { return false; } /* * perform the transformation, if existing */ virtual Lorentz5Momentum transform (const Lorentz5Momentum& p) const { return p; } protected: /** * Calculate a transverse momentum for the given momenta, * invariant pt and azimuth. */ Lorentz5Momentum getKt(const Lorentz5Momentum& p1, const Lorentz5Momentum& p2, Energy pt, double phi, bool spacelike = false) const; /** * Set the splitting phasespace weight associated to * the last call to generateSplitting. This is taken to * be the single particle phasespace times 16 \pi^2 divided * by the relevant propagator invariant. */ void jacobian(double w) { theJacobian = w; } /** * Set the last generated pt */ void lastPt(Energy p) { theLastPt = p; } /** * Set the last generated momentum fraction. */ void lastZ(double z) { theLastZ = z; } /** * Set the last generated azimuthal angle. */ void lastPhi(double p) { theLastPhi = p; } /** * Set the momentum fraction, by which the emitter's * momentum fraction should be divided after the splitting. */ void lastEmitterZ(double z) { theLastEmitterZ = z; } /** * Set the momentum fraction, by which the spectator's * momentum fraction should be divided after the splitting. */ void lastSpectatorZ(double z) { theLastSpectatorZ = z; } /** * Access any additional parameters needed to * evaluate the splitting kernel or to generate the * full splitting. */ vector<double>& splittingParameters() { return theLastSplittingParameters; } /** * Set the emitter's momentum after the splitting. */ void emitterMomentum(const Lorentz5Momentum& p) { theEmitterMomentum = p; } /** * Set the spectator's momentum after the splitting. */ void spectatorMomentum(const Lorentz5Momentum& p) { theSpectatorMomentum = p; } /** * Set the emission's momentum. */ void emissionMomentum(const Lorentz5Momentum& p) { theEmissionMomentum = p; } public: /** * 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: /** @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); //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The infrared cutoff associated to this * splitting kinematics. */ Energy theIRCutoff; /** * The minimum momentum fraction for * incoming partons */ double theXMin; /** * The last calculated splitting phase space weight. */ double theJacobian; /** * The last generated pt */ Energy theLastPt; /** * The last generated momentum fraction. */ double theLastZ; /** * The last generated azimuthal angle. */ double theLastPhi; /** * The momentum fraction, by which the emitter's * momentum fraction should be divided after the splitting. */ double theLastEmitterZ; /** * The momentum fraction, by which the spectator's * momentum fraction should be divided after the splitting. */ double theLastSpectatorZ; /** * Any additional parameters needed to * evaluate the splitting kernel or to generate the * full splitting. */ vector<double> theLastSplittingParameters; /** * The emitter's momentum after the splitting. */ Lorentz5Momentum theEmitterMomentum; /** * The emission's momentum after the splitting. */ Lorentz5Momentum theEmissionMomentum; /** * The spectator's momentum after the splitting. */ Lorentz5Momentum theSpectatorMomentum; protected: /** * Pointer to a check histogram object */ Ptr<DipoleMCCheck>::ptr theMCCheck; private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class. */ static AbstractClassDescription<DipoleSplittingKinematics> initDipoleSplittingKinematics; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DipoleSplittingKinematics & operator=(const DipoleSplittingKinematics &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DipoleSplittingKinematics. */ template <> struct BaseClassTrait<Herwig::DipoleSplittingKinematics,1> { /** Typedef of the first base class of DipoleSplittingKinematics. */ typedef HandlerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the DipoleSplittingKinematics class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DipoleSplittingKinematics> : public ClassTraitsBase<Herwig::DipoleSplittingKinematics> { /** Return a platform-independent class name */ static string className() { return "Herwig::DipoleSplittingKinematics"; } /** * The name of a file containing the dynamic library where the class * DipoleSplittingKinematics is implemented. It may also include several, space-separated, * libraries if the class DipoleSplittingKinematics depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_DipoleSplittingKinematics_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/IFLightKinematics.cc������������������������������������0000644�0001750�0001750�00000020541�11754474775�025302� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFLightKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IFLightKinematics class. // #include "IFLightKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/DipoleShower/Base/DipoleSplittingInfo.h" using namespace Herwig; IFLightKinematics::IFLightKinematics() : DipoleSplittingKinematics(), theCollinearScheme(false) {} IFLightKinematics::~IFLightKinematics() {} IBPtr IFLightKinematics::clone() const { return new_ptr(*this); } IBPtr IFLightKinematics::fullclone() const { return new_ptr(*this); } pair<double,double> IFLightKinematics::kappaSupport(const DipoleSplittingInfo&) const { return make_pair(0.0,1.0); } pair<double,double> IFLightKinematics::xiSupport(const DipoleSplittingInfo& split) const { double c = sqrt(1.-4.*sqr(IRCutoff()/generator()->maximumCMEnergy())); if ( split.index().emitterData()->id() == ParticleID::g ) { if ( split.emitterData()->id() == ParticleID::g ) { double b = log((1.+c)/(1.-c)); return make_pair(-b,b); } else { return make_pair(log(0.5*(1.-c)),log(0.5*(1.+c))); } } if ( split.index().emitterData()->id() != ParticleID::g && split.emitterData()->id() != ParticleID::g ) { return make_pair(-log(0.5*(1.+c)),-log(0.5*(1.-c))); } return make_pair(0.5*(1.-c),0.5*(1.+c)); } Energy IFLightKinematics::dipoleScale(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator) const { return sqrt(2.*(pEmitter*pSpectator)); } Energy IFLightKinematics::ptMax(Energy dScale, double emX, double, const DipoleIndex&, const DipoleSplittingKernel&) const { return dScale * sqrt((1.-emX)/emX) /2.; } Energy IFLightKinematics::QMax(Energy, double, double, const DipoleIndex&) const { assert(false && "add this"); return 0.0*GeV; } Energy IFLightKinematics::PtFromQ(Energy, const DipoleSplittingInfo&) const { assert(false && "add this"); return 0.0*GeV; } Energy IFLightKinematics::QFromPt(Energy, const DipoleSplittingInfo&) const { assert(false && "add this"); return 0.0*GeV; } double IFLightKinematics::ptToRandom(Energy pt, Energy, const DipoleIndex&) const { return log(pt/IRCutoff()) / log(0.5 * generator()->maximumCMEnergy()/IRCutoff()); } bool IFLightKinematics::generateSplitting(double kappa, double xi, double rphi, DipoleSplittingInfo& info) { if ( info.emitterX() < xMin() ) { jacobian(0.0); return false; } Energy pt = IRCutoff() * pow(0.5 * generator()->maximumCMEnergy()/IRCutoff(),kappa); if ( sqr(pt) > sqr(info.hardPt())/(1.+4.*sqr(info.hardPt()/info.scale())) ) { jacobian(0.0); return false; } double z = 0.; double mapZJacobian = 0.; if ( info.index().emitterData()->id() == ParticleID::g ) { if ( info.emitterData()->id() == ParticleID::g ) { z = exp(xi)/(1.+exp(xi)); mapZJacobian = z*(1.-z); } else { z = exp(xi); mapZJacobian = z; } } if ( info.index().emitterData()->id() != ParticleID::g ) { if ( info.emitterData()->id() != ParticleID::g ) { z = 1.-exp(-xi); mapZJacobian = 1.-z; } else { z = xi; mapZJacobian = 1.; } } double ratio = sqr(pt/info.scale()); double x = ( z*(1.-z) - ratio ) / ( 1. - z - ratio ); double u = ratio/(1.-z); if ( x < 0. || x > 1. || u > 1. ) { jacobian(0.0); return false; } double xe = info.emitterX(); double zpx = 0.5*( 1.+ xe + (1.-xe)*sqrt(1.-sqr(2.*pt/info.scale())/(1.-xe) ) ); double zmx = 0.5*( 1.+ xe - (1.-xe)*sqrt(1.-sqr(2.*pt/info.scale())/(1.-xe) ) ); double xq = sqr(pt/info.hardPt()); double zpq = 0.5*( 1.+ xq + (1.-xq)*sqrt(1.-sqr(2.*pt/info.scale())/(1.-xq) ) ); double zmq = 0.5*( 1.+ xq - (1.-xq)*sqrt(1.-sqr(2.*pt/info.scale())/(1.-xq) ) ); double zp = min(zpx,zpq); double zm = max(zmx,zmq); if ( pt < IRCutoff() || pt > info.hardPt() || z > zp || z < zm || x < xe ) { jacobian(0.0); return false; } double phi = 2.*Constants::pi*rphi; jacobian(2. * mapZJacobian * (1.-z)/(z*(1.-z)-ratio) * log(0.5 * generator()->maximumCMEnergy()/IRCutoff())); lastPt(pt); lastZ(z); lastPhi(phi); lastEmitterZ(x); if ( theMCCheck ) theMCCheck->book(info.emitterX(),1.,info.scale(),info.hardPt(),pt,z,jacobian()); return true; } InvEnergy2 IFLightKinematics::setKinematics(DipoleSplittingInfo& split) const { Lorentz5Momentum emitter = split.splitEmitter()->momentum(); Lorentz5Momentum emission = split.emission()->momentum(); Lorentz5Momentum spectator = split.splitSpectator()->momentum(); split.splittingKinematics(const_cast<IFLightKinematics*>(this)); Energy2 scale = 2.*(emission*emitter - emission*spectator + emitter*spectator); split.scale(sqrt(scale)); double x = scale / (2.*(emitter*emission + emitter*spectator)); double u = emitter*emission / (emitter*emission + emitter*spectator); split.lastPt(split.scale() * sqrt(u*(1.-u)*(1.-x))); split.lastZ(u+x*(1.-u)); split.hardPt(split.lastPt()); if ( split.hardPt() > IRCutoff() ) { split.continuesEvolving(); } else { split.didStopEvolving(); } return 1./(2.*x*(emitter*emission)); } double IFLightKinematics:: jacobianTimesPropagator(const DipoleSplittingInfo&, Energy) const { assert(false && "implementation missing"); return 0.; } void IFLightKinematics::generateKinematics(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator, const DipoleSplittingInfo& dInfo) { Energy pt = dInfo.lastPt(); double ratio = sqr(pt/-(pEmitter-pSpectator).m()); double z = dInfo.lastZ(); double x = (z*(1.-z)-ratio)/(1.-z-ratio); double u = ratio / (1.-z); pt = -(pEmitter-pSpectator).m()*sqrt(u*(1.-u)*(1.-x)/x); Lorentz5Momentum kt = getKt (pEmitter, pSpectator, pt, dInfo.lastPhi(),true); Lorentz5Momentum em; Lorentz5Momentum emm; Lorentz5Momentum spe; if ( !theCollinearScheme && x > u && (1.-x)/(x-u) < 1. ) { em = ((1.-u)/(x-u))*pEmitter + ((u/x)*(1.-x)/(x-u))*pSpectator - kt/(x-u); em.setMass(0.*GeV); em.rescaleEnergy(); emm = ((1.-x)/(x-u))*pEmitter + ((u/x)*(1.-u)/(x-u))*pSpectator - kt/(x-u); emm.setMass(0.*GeV); emm.rescaleEnergy(); spe = (1.-u/x)*pSpectator; spe.setMass(0.*GeV); spe.rescaleEnergy(); } else { em = (1./x)*pEmitter; emm = ((1.-x)*(1.-u)/x)*pEmitter + u*pSpectator + kt; emm.setMass(0.*GeV); emm.rescaleEnergy(); spe = ((1.-x)*u/x)*pEmitter + (1.-u)*pSpectator - kt; spe.setMass(0.*GeV); spe.rescaleEnergy(); } emitterMomentum(em); emissionMomentum(emm); spectatorMomentum(spe); } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IFLightKinematics::persistentOutput(PersistentOStream & os) const { os << theCollinearScheme; } void IFLightKinematics::persistentInput(PersistentIStream & is, int) { is >> theCollinearScheme; } ClassDescription<IFLightKinematics> IFLightKinematics::initIFLightKinematics; // Definition of the static class description member. void IFLightKinematics::Init() { static ClassDocumentation<IFLightKinematics> documentation ("IFLightKinematics implements massless splittings " "off a initial-final dipole."); static Switch<IFLightKinematics,bool> interfaceCollinearScheme ("CollinearScheme", "[experimental] Switch on or off the collinear scheme", &IFLightKinematics::theCollinearScheme, false, false, false); static SwitchOption interfaceCollinearSchemeOn (interfaceCollinearScheme, "On", "Switch on the collinear scheme.", true); static SwitchOption interfaceCollinearSchemeOff (interfaceCollinearScheme, "Off", "Switch off the collinear scheme", false); interfaceCollinearScheme.rank(-1); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/Makefile.in���������������������������������������������0000644�0001750�0001750�00000045536�11756461676�023553� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = DipoleShower/Kinematics DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwDipoleShowerKinematics_la_LIBADD = am_libHwDipoleShowerKinematics_la_OBJECTS = \ DipoleSplittingKinematics.lo FFMassiveKinematics.lo \ FFLightKinematics.lo FILightKinematics.lo IFLightKinematics.lo \ IILightKinematics.lo libHwDipoleShowerKinematics_la_OBJECTS = \ $(am_libHwDipoleShowerKinematics_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwDipoleShowerKinematics_la_SOURCES) DIST_SOURCES = $(libHwDipoleShowerKinematics_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwDipoleShowerKinematics.la libHwDipoleShowerKinematics_la_SOURCES = \ DipoleSplittingKinematics.h DipoleSplittingKinematics.cc \ FFMassiveKinematics.h FFMassiveKinematics.cc \ FFLightKinematics.h FFLightKinematics.cc \ FILightKinematics.h FILightKinematics.cc \ IFLightKinematics.h IFLightKinematics.cc \ IILightKinematics.h IILightKinematics.cc all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu DipoleShower/Kinematics/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu DipoleShower/Kinematics/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwDipoleShowerKinematics.la: $(libHwDipoleShowerKinematics_la_OBJECTS) $(libHwDipoleShowerKinematics_la_DEPENDENCIES) $(EXTRA_libHwDipoleShowerKinematics_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwDipoleShowerKinematics_la_OBJECTS) $(libHwDipoleShowerKinematics_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipoleSplittingKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFLightKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FFMassiveKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FILightKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IFLightKinematics.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IILightKinematics.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: ������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/FFMassiveKinematics.cc����������������������������������0000644�0001750�0001750�00000024021�11755413303�025611� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFMassiveKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the FFMassiveKinematics class. // #include "FFMassiveKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/DipoleShower/Base/DipoleSplittingInfo.h" #include "Herwig++/DipoleShower/Kernels/DipoleSplittingKernel.h" // TODO: remove after verification // only for checking for NaN or inf #include <gsl/gsl_math.h> using namespace Herwig; FFMassiveKinematics::FFMassiveKinematics() : DipoleSplittingKinematics() {} FFMassiveKinematics::~FFMassiveKinematics() {} IBPtr FFMassiveKinematics::clone() const { return new_ptr(*this); } IBPtr FFMassiveKinematics::fullclone() const { return new_ptr(*this); } pair<double,double> FFMassiveKinematics::kappaSupport(const DipoleSplittingInfo&) const { return make_pair(0.0,1.0); } pair<double,double> FFMassiveKinematics::xiSupport(const DipoleSplittingInfo& split) const { double c = sqrt(1.-4.*sqr(IRCutoff()/generator()->maximumCMEnergy())); if ( split.index().emitterData()->id() == ParticleID::g ) { if ( split.emissionData()->id() != ParticleID::g ) return make_pair(0.5*(1.-c),0.5*(1.+c)); double b = log((1.+c)/(1.-c)); return make_pair(-b,b); } return make_pair(-log(0.5*(1.+c)),-log(0.5*(1.-c))); } Energy FFMassiveKinematics::dipoleScale(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator) const { return (pEmitter+pSpectator).m(); } Energy FFMassiveKinematics::ptMax(Energy dScale, double, double, const DipoleIndex& ind, const DipoleSplittingKernel& split) const { double mui2 = sqr( split.emitter(ind)->mass() / dScale ); double mu2 = sqr( split.emission(ind)->mass() / dScale ); double muj2 = sqr( split.spectator(ind)->mass() / dScale ); // stolen from generateSplitting Energy ptmax = rootOfKallen( mui2, mu2, sqr(1.-sqrt(muj2)) ) / ( 2.-2.*sqrt(muj2) ) * dScale; return ptmax > 0.*GeV ? ptmax : 0.*GeV; } Energy FFMassiveKinematics::QMax(Energy dScale, double, double, const DipoleIndex& ind) const { double Muj = ind.spectatorData()->mass() / dScale; return dScale * ( 1.-2.*Muj+sqr(Muj) ); } // relict Energy FFMassiveKinematics::PtFromQ(Energy, const DipoleSplittingInfo&) const { assert(false && "implementation missing"); return 0.*GeV; } Energy FFMassiveKinematics::QFromPt(Energy, const DipoleSplittingInfo&) const { assert(false && "implementation missing"); return 0.*GeV; } double FFMassiveKinematics::ptToRandom(Energy pt, Energy, const DipoleIndex&) const { return log(pt/IRCutoff()) / log(0.5 * generator()->maximumCMEnergy()/IRCutoff()); } bool FFMassiveKinematics::generateSplitting(double kappa, double xi, double rphi, DipoleSplittingInfo& info) { Energy pt = IRCutoff() * pow(0.5 * generator()->maximumCMEnergy()/IRCutoff(),kappa); if ( pt > info.hardPt() || pt < IRCutoff() ) { jacobian(0.0); return false; } double z; double mapZJacobian; if ( info.index().emitterData()->id() == ParticleID::g ) { if ( info.emissionData()->id() != ParticleID::g ) { z = xi; mapZJacobian = 1.; } else { z = exp(xi)/(1.+exp(xi)); mapZJacobian = z*(1.-z); } } else { z = 1.-exp(-xi); mapZJacobian = 1.-z; } // masses double mui2 = sqr( info.emitterData()->mass() / info.scale() ); double mu2 = sqr( info.emissionData()->mass() / info.scale() ); double muj2 = sqr( info.spectatorData()->mass() / info.scale() ); double Mui2 = 0.; if ( info.emitterData()->id() + info.emissionData()->id() == 0 ) Mui2 = 0.; // gluon else Mui2 = mui2; // (anti)quark double Muj2 = muj2; if( sqrt(mui2)+sqrt(mu2)+sqrt(muj2) > 1. ){ jacobian(0.0); return false; } double bar = 1.-mui2-mu2-muj2; double y = ( sqr( pt / info.scale() ) + sqr(1.-z)*mui2 + z*z*mu2 ) / (z*(1.-z)*bar); // phasespace constraint to incorporate ptMax double zp1 = ( 1.+mui2-mu2+muj2-2.*sqrt(muj2) + rootOfKallen(mui2,mu2,sqr(1-sqrt(muj2))) * sqrt( 1.-sqr(pt/info.hardPt()) ) ) / ( 2.*sqr(1.-sqrt(muj2)) ); double zm1 = ( 1.+mui2-mu2+muj2-2.*sqrt(muj2) - rootOfKallen(mui2,mu2,sqr(1-sqrt(muj2))) * sqrt( 1.-sqr(pt/info.hardPt()) ) ) / ( 2.*sqr(1.-sqrt(muj2)) ); if ( z > zp1 || z < zm1 ) { jacobian(0.0); return false; } // kinematic phasespace boundaries for (y,z) double ym = 2.*sqrt(mui2)*sqrt(mu2)/bar; double yp = 1. - 2.*sqrt(muj2)*(1.-sqrt(muj2))/bar; if ( y < ym || y > yp ) { jacobian(0.0); return false; } double zm = ( (2.*mui2+bar*y)*(1.-y) - sqrt(y*y-ym*ym)*sqrt(sqr(2.*muj2+bar-bar*y)-4.*muj2) ) / ( 2.*(1.-y)*(mui2+mu2+bar*y) ); double zp = ( (2.*mui2+bar*y)*(1.-y) + sqrt(y*y-ym*ym)*sqrt(sqr(2.*muj2+bar-bar*y)-4.*muj2) ) / ( 2.*(1.-y)*(mui2+mu2+bar*y) ); if ( z < zm || z > zp ) { jacobian(0.0); return false; } double phi = 2.*Constants::pi*rphi; jacobian( 2. * mapZJacobian * (1.-y) * log(0.5 * generator()->maximumCMEnergy()/IRCutoff()) * bar / rootOfKallen(1.,Mui2,Muj2) ); lastPt(pt); lastZ(z); lastPhi(phi); if ( theMCCheck ) theMCCheck->book(1.,1.,info.scale(),info.hardPt(),pt,z,jacobian()); return true; } InvEnergy2 FFMassiveKinematics::setKinematics(DipoleSplittingInfo& split) const { // masses double mui2 = sqr( split.emitterData()->mass() / split.scale() ); double mu2 = sqr( split.emissionData()->mass() / split.scale() ); double muj2 = sqr( split.spectatorData()->mass() / split.scale() ); double Mui2 = 0.; if ( split.emitterData()->id() + split.emissionData()->id() == 0 ) Mui2 = 0.; // gluon else Mui2 = mui2; // (anti)quark split.splittingKinematics(const_cast<FFMassiveKinematics*>(this)); Lorentz5Momentum emitter = split.splitEmitter()->momentum(); Lorentz5Momentum emission = split.emission()->momentum(); Lorentz5Momentum spectator = split.splitSpectator()->momentum(); Energy2 scale = (emitter+emission+spectator).m2(); split.scale(sqrt(scale)); double y = 2.*emission*emitter / scale / (1.-mui2-mu2-muj2); double z = emitter*spectator / (emitter*spectator + emission*spectator); split.lastPt( split.scale() * sqrt( y * (1.-mui2-mu2-muj2) * z*(1.-z) - sqr(1.-z)*mui2 - sqr(z)*mu2 ) ); split.lastZ(z); split.hardPt(split.lastPt()); if ( split.hardPt() > IRCutoff() ) { split.continuesEvolving(); } else { split.didStopEvolving(); } return 1./((emitter+emission).m2()-Mui2*sqr(split.scale())); } double FFMassiveKinematics:: jacobianTimesPropagator(const DipoleSplittingInfo&, Energy) const { assert(false && "implementation missing"); return 0.; } void FFMassiveKinematics::generateKinematics(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator, const DipoleSplittingInfo& dInfo) { double z = dInfo.lastZ(); Energy pt = dInfo.lastPt(); // masses double mui2 = sqr( dInfo.emitterData()->mass() / dInfo.scale() ); double mu2 = sqr( dInfo.emissionData()->mass() / dInfo.scale() ); double muj2 = sqr( dInfo.spectatorData()->mass() / dInfo.scale() ); double y = ( sqr( pt / dInfo.scale() ) + sqr(1.-z)*mui2 + z*z*mu2 ) / (z*(1.-z)*(1.-mui2-mu2-muj2)); Energy2 sbar = sqr(dInfo.scale()) *(1.-mui2-mu2-muj2); // CMF: particle energies Energy Ei = ( sbar*(1.-(1.-z)*(1.-y)) + 2.*sqr(dInfo.scale())*mui2 ) / (2.*dInfo.scale()); Energy E = ( sbar*(1.- z *(1.-y)) + 2.*sqr(dInfo.scale())*mu2 ) / (2.*dInfo.scale()); Energy Ej = ( sbar*(1.- y ) + 2.*sqr(dInfo.scale())*muj2 ) / (2.*dInfo.scale()); // CMF: momenta in z-direction (axis of pEmitter & pSpectator) Energy qi3 = (2.*Ei*Ej-z*(1.-y)*sbar ) / 2./sqrt(Ej*Ej-sqr(dInfo.scale())*muj2); Energy q3 = (2.*E *Ej-(1.-z)*(1.-y)*sbar) / 2./sqrt(Ej*Ej-sqr(dInfo.scale())*muj2); Energy qj3 = sqrt( sqr(Ej) - sqr(dInfo.scale())*muj2 ); // get z axis in the dipole's CMF which is parallel to pSpectator Boost toCMF = (pEmitter+pSpectator).findBoostToCM(); Lorentz5Momentum pjAux = pSpectator; pjAux.boost(toCMF); ThreeVector<double> pjAxis = pjAux.vect().unit(); // set the momenta in this special reference frame // note that pt might in some cases differ from the physical pt! // phi is defined exactly as in getKt Energy ptResc = sqrt( sqr(Ei)-sqr(dInfo.scale())*mui2-sqr(qi3) ); Lorentz5Momentum em ( ptResc*cos(dInfo.lastPhi()), -ptResc*sin(dInfo.lastPhi()), qi3, Ei ); Lorentz5Momentum emm ( -ptResc*cos(dInfo.lastPhi()), ptResc*sin(dInfo.lastPhi()), q3, E ); Lorentz5Momentum spe ( 0.*GeV, 0.*GeV, qj3, Ej ); // rotate back em.rotateUz (pjAxis); emm.rotateUz(pjAxis); spe.rotateUz(pjAxis); // boost back em.boost (-toCMF); emm.boost(-toCMF); spe.boost(-toCMF); // mass shells, rescale energy em.setMass(dInfo.scale()*sqrt(mui2)); em.rescaleEnergy(); emm.setMass(dInfo.scale()*sqrt(mu2)); emm.rescaleEnergy(); spe.setMass(dInfo.scale()*sqrt(muj2)); spe.rescaleEnergy(); // book emitterMomentum(em); emissionMomentum(emm); spectatorMomentum(spe); } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void FFMassiveKinematics::persistentOutput(PersistentOStream & ) const { } void FFMassiveKinematics::persistentInput(PersistentIStream & , int) { } ClassDescription<FFMassiveKinematics> FFMassiveKinematics::initFFMassiveKinematics; // Definition of the static class description member. void FFMassiveKinematics::Init() { static ClassDocumentation<FFMassiveKinematics> documentation ("FFMassiveKinematics implements massive splittings " "off a final-final dipole."); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/IILightKinematics.cc������������������������������������0000644�0001750�0001750�00000022212�11754474775�025302� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IILightKinematics.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the IILightKinematics class. // #include "IILightKinematics.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Repository/EventGenerator.h" #include "Herwig++/DipoleShower/Base/DipoleSplittingInfo.h" using namespace Herwig; IILightKinematics::IILightKinematics() : DipoleSplittingKinematics(), theCollinearScheme(false), didCollinear(false) {} IILightKinematics::~IILightKinematics() {} IBPtr IILightKinematics::clone() const { return new_ptr(*this); } IBPtr IILightKinematics::fullclone() const { return new_ptr(*this); } pair<double,double> IILightKinematics::kappaSupport(const DipoleSplittingInfo&) const { return make_pair(0.0,1.0); } pair<double,double> IILightKinematics::xiSupport(const DipoleSplittingInfo& split) const { double c = sqrt(1.-4.*sqr(IRCutoff()/generator()->maximumCMEnergy())); if ( split.index().emitterData()->id() == ParticleID::g ) { if ( split.emitterData()->id() == ParticleID::g ) { double b = log((1.+c)/(1.-c)); return make_pair(-b,b); } else { return make_pair(log(0.5*(1.-c)),log(0.5*(1.+c))); } } if ( split.index().emitterData()->id() != ParticleID::g && split.emitterData()->id() != ParticleID::g ) { return make_pair(-log(0.5*(1.+c)),-log(0.5*(1.-c))); } return make_pair(0.5*(1.-c),0.5*(1.+c)); } Energy IILightKinematics::dipoleScale(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator) const { return sqrt(2.*(pEmitter*pSpectator)); } Energy IILightKinematics::ptMax(Energy dScale, double emX, double specX, const DipoleIndex&, const DipoleSplittingKernel&) const { double tau = emX*specX; return (1.-tau) * dScale / (2.*sqrt(tau)); } Energy IILightKinematics::QMax(Energy, double, double, const DipoleIndex&) const { assert(false && "add this"); return 0.0*GeV; } Energy IILightKinematics::PtFromQ(Energy, const DipoleSplittingInfo&) const { assert(false && "add this"); return 0.0*GeV; } Energy IILightKinematics::QFromPt(Energy, const DipoleSplittingInfo&) const { assert(false && "add this"); return 0.0*GeV; } double IILightKinematics::ptToRandom(Energy pt, Energy, const DipoleIndex&) const { return log(pt/IRCutoff()) / log(0.5 * generator()->maximumCMEnergy()/IRCutoff()); } bool IILightKinematics::generateSplitting(double kappa, double xi, double rphi, DipoleSplittingInfo& info) { if ( info.emitterX() < xMin() || info.spectatorX() < xMin() ) { jacobian(0.0); return false; } Energy pt = IRCutoff() * pow(0.5 * generator()->maximumCMEnergy()/IRCutoff(),kappa); double r = sqr(info.hardPt()/info.scale()); if ( sqr(pt) > sqr(info.hardPt())*r*((2.+1./r)-2.*sqrt(1.+1./r)) ) { jacobian(0.0); return false; } double z = 0.; double mapZJacobian = 0.; if ( info.index().emitterData()->id() == ParticleID::g ) { if ( info.emitterData()->id() == ParticleID::g ) { z = exp(xi)/(1.+exp(xi)); mapZJacobian = z*(1.-z); } else { z = exp(xi); mapZJacobian = z; } } if ( info.index().emitterData()->id() != ParticleID::g ) { if ( info.emitterData()->id() != ParticleID::g ) { z = 1.-exp(-xi); mapZJacobian = (1.-z); } else { z = xi; mapZJacobian = 1.; } } double ratio = sqr(pt/info.scale()); double x = ( z*(1.-z) - ratio ) / ( 1. - z ); double v = ratio / (1.-z); if ( x < 0. || x > 1. || v > 1. || v > 1.-x ) { jacobian(0.0); return false; } double tau = info.emitterX()*info.spectatorX(); double zpx = 0.5*( 1.+ tau + (1.-tau)*sqrt(1.-sqr(2.*pt/((1.-tau)*info.scale()))) ); double zmx = 0.5*( 1.+ tau - (1.-tau)*sqrt(1.-sqr(2.*pt/((1.-tau)*info.scale()))) ); double xq = sqr(pt/info.hardPt()); double zpq = 0.5*( 1.+ xq + (1.-xq)*sqrt(1.-sqr(2.*pt/((1.-xq)*info.scale()))) ); double zmq = 0.5*( 1.+ xq - (1.-xq)*sqrt(1.-sqr(2.*pt/((1.-xq)*info.scale()))) ); double zp = min(zpx,zpq); double zm = max(zmx,zmq); if ( pt < IRCutoff() || pt > info.hardPt() || z > zp || z < zm ) { jacobian(0.0); return false; } if ( !theCollinearScheme && (1.-v-x)/(v+x) < 1. ) { if ( (x+v) < info.emitterX() || x/(x+v) < info.spectatorX() ) { jacobian(0.0); return false; } } else { if ( x < info.emitterX() ) { jacobian(0.0); return false; } } double phi = 2.*Constants::pi*rphi; jacobian(2. * mapZJacobian * (1.-z)/(z*(1.-z)-ratio) * log(0.5 * generator()->maximumCMEnergy()/IRCutoff())); lastPt(pt); lastZ(z); lastPhi(phi); if ( !theCollinearScheme && (1.-v-x)/(v+x) < 1. ) { lastEmitterZ(x+v); lastSpectatorZ(x/(x+v)); } else { lastEmitterZ(x); lastSpectatorZ(1.); } if ( theMCCheck ) theMCCheck->book(info.emitterX(),info.spectatorX(),info.scale(),info.hardPt(),pt,z,jacobian()); return true; } InvEnergy2 IILightKinematics::setKinematics(DipoleSplittingInfo& split) const { Lorentz5Momentum emitter = split.splitEmitter()->momentum(); Lorentz5Momentum emission = split.emission()->momentum(); Lorentz5Momentum spectator = split.splitSpectator()->momentum(); split.splittingKinematics(const_cast<IILightKinematics*>(this)); Energy2 scale = 2.*(-emission*emitter - emission*spectator + emitter*spectator); split.scale(sqrt(scale)); double x = scale/(2.*(emitter*spectator)); double v = (emitter*emission)/(emitter*spectator); split.lastZ(v+x); split.lastPt(split.scale() * sqrt(v*(1.-x-v))); split.hardPt(split.lastPt()); if ( split.hardPt() > IRCutoff() ) { split.continuesEvolving(); } else { split.didStopEvolving(); } return 1./(2.*x*(emitter*emission)); } double IILightKinematics:: jacobianTimesPropagator(const DipoleSplittingInfo&, Energy) const { assert(false && "implementation missing"); return 0.; } void IILightKinematics::generateKinematics(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator, const DipoleSplittingInfo& dInfo) { Energy pt = dInfo.lastPt(); double z = dInfo.lastZ(); double ratio = sqr(pt/(pEmitter+pSpectator).m()); double x = ( z*(1.-z) - ratio ) / ( 1. - z ); double v = ratio / (1.-z); pt = sqrt(v*(1.-x-v)/x) * (pEmitter+pSpectator).m(); Lorentz5Momentum kt = getKt (pEmitter, pSpectator, pt, dInfo.lastPhi()); if ( !theCollinearScheme && (1.-v-x)/(v+x) < 1. ) { Lorentz5Momentum em = (1./(v+x))*pEmitter+(v*(1.-v-x)/(x*(x+v)))*pSpectator+kt/(x+v); em.setMass(0.*GeV); em.rescaleEnergy(); Lorentz5Momentum emm = ((1.-v-x)/(v+x))*pEmitter+(v/(x*(x+v)))*pSpectator+kt/(x+v); emm.setMass(0.*GeV); emm.rescaleEnergy(); Lorentz5Momentum spe = (1.+v/x)*pSpectator; spe.setMass(0.*GeV); spe.rescaleEnergy(); emitterMomentum(em); emissionMomentum(emm); spectatorMomentum(spe); didCollinear = false; } else { Lorentz5Momentum em = (1./x)*pEmitter; em.setMass(0.*GeV); em.rescaleEnergy(); Lorentz5Momentum emm = ((1.-x-v)/x)*pEmitter+v*pSpectator+kt; emm.setMass(0.*GeV); emm.rescaleEnergy(); Lorentz5Momentum spe = pSpectator; emitterMomentum(em); emissionMomentum(emm); spectatorMomentum(spe); K = em + spe - emm; K2 = K.m2(); Ktilde = pEmitter + pSpectator; KplusKtilde = K + Ktilde; KplusKtilde2 = KplusKtilde.m2(); didCollinear = true; } } // If needed, insert default implementations of function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void IILightKinematics::persistentOutput(PersistentOStream & os) const { os << theCollinearScheme; } void IILightKinematics::persistentInput(PersistentIStream & is, int) { is >> theCollinearScheme; } ClassDescription<IILightKinematics> IILightKinematics::initIILightKinematics; // Definition of the static class description member. void IILightKinematics::Init() { static ClassDocumentation<IILightKinematics> documentation ("IILightKinematics implements massless splittings " "off an initial-initial dipole."); static Switch<IILightKinematics,bool> interfaceCollinearScheme ("CollinearScheme", "[experimental] Switch on or off the collinear scheme", &IILightKinematics::theCollinearScheme, false, false, false); static SwitchOption interfaceCollinearSchemeOn (interfaceCollinearScheme, "On", "Switch on the collinear scheme.", true); static SwitchOption interfaceCollinearSchemeOff (interfaceCollinearScheme, "Off", "Switch off the collinear scheme", false); interfaceCollinearScheme.rank(-1); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/FFMassiveKinematics.h�����������������������������������0000644�0001750�0001750�00000015432�11754474775�025504� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFMassiveKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFMassiveKinematics_H #define HERWIG_FFMassiveKinematics_H // // This is the declaration of the FFMassiveKinematics class. // #include "DipoleSplittingKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer and Martin Stoll * * \brief FFMassiveKinematics implements massive splittings * off a final-final dipole. * */ class FFMassiveKinematics: public DipoleSplittingKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFMassiveKinematics(); /** * The destructor. */ virtual ~FFMassiveKinematics(); //@} public: /** * Return the boundaries in between the evolution * variable random number is to be sampled; the lower * cuoff is assumed to correspond to the infrared cutoff. */ virtual pair<double,double> kappaSupport(const DipoleSplittingInfo& dIndex) const; /** * Return the boundaries in between the momentum * fraction random number is to be sampled. */ virtual pair<double,double> xiSupport(const DipoleSplittingInfo& dIndex) const; /** * Return the dipole scale associated to the * given pair of emitter and spectator. This * should be the invariant mass or absolute value * final/final or initial/initial and the absolute * value of the momentum transfer for intial/final or * final/initial dipoles. */ virtual Energy dipoleScale(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator) const; /** * Return the maximum pt for the given dipole scale. */ virtual Energy ptMax(Energy dScale, double emX, double specX, const DipoleIndex& ind, const DipoleSplittingKernel& split) const; /** * Return the maximum virtuality for the given dipole scale. */ virtual Energy QMax(Energy dScale, double emX, double specX, const DipoleIndex& dIndex) const; /** * Return the pt given a virtuality. */ virtual Energy PtFromQ(Energy scale, const DipoleSplittingInfo&) const; /** * Return the virtuality given a pt. */ virtual Energy QFromPt(Energy scale, const DipoleSplittingInfo&) const; /** * Return the random number associated to * the given pt. */ virtual double ptToRandom(Energy pt, Energy dScale, const DipoleIndex& dIndex) const; /** * Generate splitting variables given three random numbers * and the momentum fractions of the emitter and spectator. * Return true on success. */ virtual bool generateSplitting(double kappa, double xi, double phi, DipoleSplittingInfo& dIndex); /** * For the splitting products present in the given dipole splitting * info object calculate the kinematics parameters and return the * propagator factor. */ virtual InvEnergy2 setKinematics(DipoleSplittingInfo&) const; /** * For the splitting parameters given in the dipole splitting info * object, calculate the phasespace Jacobian times the propagator * factor. */ virtual double jacobianTimesPropagator(const DipoleSplittingInfo&, Energy) const; /** * Generate the full kinematics given emitter and * spectator momentum and a previously completeted * DipoleSplittingInfo object. */ virtual void generateKinematics(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator, const DipoleSplittingInfo& dInfo); public: /** * Triangular / Kallen function */ template <class T> inline double rootOfKallen (T a, T b, T c) const { return sqrt( a*a + b*b + c*c - 2.*( a*b+a*c+b*c ) ); } 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FFMassiveKinematics> initFFMassiveKinematics; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFMassiveKinematics & operator=(const FFMassiveKinematics &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FFMassiveKinematics. */ template <> struct BaseClassTrait<Herwig::FFMassiveKinematics,1> { /** Typedef of the first base class of FFMassiveKinematics. */ typedef Herwig::DipoleSplittingKinematics NthBase; }; /** This template specialization informs ThePEG about the name of * the FFMassiveKinematics class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FFMassiveKinematics> : public ClassTraitsBase<Herwig::FFMassiveKinematics> { /** Return a platform-independent class name */ static string className() { return "Herwig::FFMassiveKinematics"; } /** * The name of a file containing the dynamic library where the class * FFMassiveKinematics is implemented. It may also include several, space-separated, * libraries if the class FFMassiveKinematics depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_FFMassiveKinematics_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/Makefile.am���������������������������������������������0000644�0001750�0001750�00000000572�11754474775�023533� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwDipoleShowerKinematics.la libHwDipoleShowerKinematics_la_SOURCES = \ DipoleSplittingKinematics.h DipoleSplittingKinematics.cc \ FFMassiveKinematics.h FFMassiveKinematics.cc \ FFLightKinematics.h FFLightKinematics.cc \ FILightKinematics.h FILightKinematics.cc \ IFLightKinematics.h IFLightKinematics.cc \ IILightKinematics.h IILightKinematics.cc ��������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/FFLightKinematics.h�������������������������������������0000644�0001750�0001750�00000015034�11754474775�025142� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // FFLightKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_FFLightKinematics_H #define HERWIG_FFLightKinematics_H // // This is the declaration of the FFLightKinematics class. // #include "DipoleSplittingKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief FFLightKinematics implements massless splittings * off a final-final dipole. * */ class FFLightKinematics: public DipoleSplittingKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ FFLightKinematics(); /** * The destructor. */ virtual ~FFLightKinematics(); //@} public: /** * Return the boundaries in between the evolution * variable random number is to be sampled; the lower * cuoff is assumed to correspond to the infrared cutoff. */ virtual pair<double,double> kappaSupport(const DipoleSplittingInfo& dIndex) const; /** * Return the boundaries in between the momentum * fraction random number is to be sampled. */ virtual pair<double,double> xiSupport(const DipoleSplittingInfo& dIndex) const; /** * Return the dipole scale associated to the * given pair of emitter and spectator. This * should be the invariant mass or absolute value * final/final or initial/initial and the absolute * value of the momentum transfer for intial/final or * final/initial dipoles. */ virtual Energy dipoleScale(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator) const; /** * Return the maximum pt for the given dipole scale. */ virtual Energy ptMax(Energy dScale, double emX, double specX, const DipoleIndex& dIndex, const DipoleSplittingKernel&) const; /** * Return the maximum virtuality for the given dipole scale. */ virtual Energy QMax(Energy dScale, double emX, double specX, const DipoleIndex& dIndex) const; /** * Return the pt given a virtuality. */ virtual Energy PtFromQ(Energy scale, const DipoleSplittingInfo&) const; /** * Return the virtuality given a pt. */ virtual Energy QFromPt(Energy scale, const DipoleSplittingInfo&) const; /** * Return the random number associated to * the given pt. */ virtual double ptToRandom(Energy pt, Energy dScale, const DipoleIndex& dIndex) const; /** * Generate splitting variables given three random numbers * and the momentum fractions of the emitter and spectator. * Return true on success. */ virtual bool generateSplitting(double kappa, double xi, double phi, DipoleSplittingInfo& dIndex); /** * For the splitting products present in the given dipole splitting * info object calculate the kinematics parameters and return the * propagator factor. */ virtual InvEnergy2 setKinematics(DipoleSplittingInfo&) const; /** * For the splitting parameters given in the dipole splitting info * object, calculate the phasespace Jacobian times the propagator * factor. */ virtual double jacobianTimesPropagator(const DipoleSplittingInfo&, Energy) const; /** * Generate the full kinematics given emitter and * spectator momentum and a previously completeted * DipoleSplittingInfo object. */ virtual void generateKinematics(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator, const DipoleSplittingInfo& dInfo); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<FFLightKinematics> initFFLightKinematics; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ FFLightKinematics & operator=(const FFLightKinematics &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of FFLightKinematics. */ template <> struct BaseClassTrait<Herwig::FFLightKinematics,1> { /** Typedef of the first base class of FFLightKinematics. */ typedef Herwig::DipoleSplittingKinematics NthBase; }; /** This template specialization informs ThePEG about the name of * the FFLightKinematics class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::FFLightKinematics> : public ClassTraitsBase<Herwig::FFLightKinematics> { /** Return a platform-independent class name */ static string className() { return "Herwig::FFLightKinematics"; } /** * The name of a file containing the dynamic library where the class * FFLightKinematics is implemented. It may also include several, space-separated, * libraries if the class FFLightKinematics depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_FFLightKinematics_H */ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/IILightKinematics.h�������������������������������������0000644�0001750�0001750�00000016637�11754474775�025162� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IILightKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IILightKinematics_H #define HERWIG_IILightKinematics_H // // This is the declaration of the IILightKinematics class. // #include "DipoleSplittingKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief IILightKinematics implements massless splittings * off an initial-initial dipole. * * @see \ref IILightKinematicsInterfaces "The interfaces" * defined for IILightKinematics. */ class IILightKinematics: public DipoleSplittingKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IILightKinematics(); /** * The destructor. */ virtual ~IILightKinematics(); //@} public: /** * Return the boundaries in between the evolution * variable random number is to be sampled; the lower * cuoff is assumed to correspond to the infrared cutoff. */ virtual pair<double,double> kappaSupport(const DipoleSplittingInfo& dIndex) const; /** * Return the boundaries in between the momentum * fraction random number is to be sampled. */ virtual pair<double,double> xiSupport(const DipoleSplittingInfo& dIndex) const; /** * Return the dipole scale associated to the * given pair of emitter and spectator. This * should be the invariant mass or absolute value * final/final or initial/initial and the absolute * value of the momentum transfer for intial/final or * final/initial dipoles. */ virtual Energy dipoleScale(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator) const; /** * Return the maximum pt for the given dipole scale. */ virtual Energy ptMax(Energy dScale, double emX, double specX, const DipoleIndex&, const DipoleSplittingKernel&) const; /** * Return the maximum virtuality for the given dipole scale. */ virtual Energy QMax(Energy dScale, double emX, double specX, const DipoleIndex& dIndex) const; /** * Return the pt given a virtuality. */ virtual Energy PtFromQ(Energy scale, const DipoleSplittingInfo&) const; /** * Return the virtuality given a pt. */ virtual Energy QFromPt(Energy scale, const DipoleSplittingInfo&) const; /** * Return the random number associated to * the given pt. */ virtual double ptToRandom(Energy pt, Energy dScale, const DipoleIndex& dIndex) const; /** * Generate splitting variables given three random numbers * and the momentum fractions of the emitter and spectator. * Return true on success. */ virtual bool generateSplitting(double kappa, double xi, double phi, DipoleSplittingInfo& dIndex); /** * For the splitting products present in the given dipole splitting * info object calculate the kinematics parameters and return the * propagator factor. */ virtual InvEnergy2 setKinematics(DipoleSplittingInfo&) const; /** * For the splitting parameters given in the dipole splitting info * object, calculate the phasespace Jacobian times the propagator * factor. */ virtual double jacobianTimesPropagator(const DipoleSplittingInfo&, Energy) const; /** * Generate the full kinematics given emitter and * spectator momentum and a previously completeted * DipoleSplittingInfo object. */ virtual void generateKinematics(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator, const DipoleSplittingInfo& dInfo); /* * Return true, if there is a transformation which should * be applied to all other final state particles except the ones * involved in the splitting after having performed the splitting */ virtual bool doesTransform () const { return theCollinearScheme || didCollinear; } /* * perform the transformation, if existing */ virtual Lorentz5Momentum transform (const Lorentz5Momentum& p) const { if ( !theCollinearScheme && !didCollinear ) return p; return p-(2.*(KplusKtilde*p)/KplusKtilde2)*KplusKtilde+(2.*(Ktilde*p)/K2)*K; } 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<IILightKinematics> initIILightKinematics; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IILightKinematics & operator=(const IILightKinematics &); private: /** * Wether or not to choose the `collinear' scheme */ bool theCollinearScheme; bool didCollinear; Lorentz5Momentum K; Energy2 K2; Lorentz5Momentum Ktilde; Lorentz5Momentum KplusKtilde; Energy2 KplusKtilde2; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of IILightKinematics. */ template <> struct BaseClassTrait<Herwig::IILightKinematics,1> { /** Typedef of the first base class of IILightKinematics. */ typedef Herwig::DipoleSplittingKinematics NthBase; }; /** This template specialization informs ThePEG about the name of * the IILightKinematics class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::IILightKinematics> : public ClassTraitsBase<Herwig::IILightKinematics> { /** Return a platform-independent class name */ static string className() { return "Herwig::IILightKinematics"; } /** * The name of a file containing the dynamic library where the class * IILightKinematics is implemented. It may also include several, space-separated, * libraries if the class IILightKinematics depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_IILightKinematics_H */ �������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/IFLightKinematics.h�������������������������������������0000644�0001750�0001750�00000015332�11754474775�025146� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // IFLightKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_IFLightKinematics_H #define HERWIG_IFLightKinematics_H // // This is the declaration of the IFLightKinematics class. // #include "DipoleSplittingKinematics.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief IFLightKinematics implements massless splittings * off an initial-final dipole. * * @see \ref IFLightKinematicsInterfaces "The interfaces" * defined for IFLightKinematics. */ class IFLightKinematics: public DipoleSplittingKinematics { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ IFLightKinematics(); /** * The destructor. */ virtual ~IFLightKinematics(); //@} public: /** * Return the boundaries in between the evolution * variable random number is to be sampled; the lower * cuoff is assumed to correspond to the infrared cutoff. */ virtual pair<double,double> kappaSupport(const DipoleSplittingInfo& dIndex) const; /** * Return the boundaries in between the momentum * fraction random number is to be sampled. */ virtual pair<double,double> xiSupport(const DipoleSplittingInfo& dIndex) const; /** * Return the dipole scale associated to the * given pair of emitter and spectator. This * should be the invariant mass or absolute value * final/final or initial/initial and the absolute * value of the momentum transfer for intial/final or * final/initial dipoles. */ virtual Energy dipoleScale(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator) const; /** * Return the maximum pt for the given dipole scale. */ virtual Energy ptMax(Energy dScale, double emX, double specX, const DipoleIndex&, const DipoleSplittingKernel&) const; /** * Return the maximum virtuality for the given dipole scale. */ virtual Energy QMax(Energy dScale, double emX, double specX, const DipoleIndex& dIndex) const; /** * Return the pt given a virtuality. */ virtual Energy PtFromQ(Energy scale, const DipoleSplittingInfo&) const; /** * Return the virtuality given a pt. */ virtual Energy QFromPt(Energy scale, const DipoleSplittingInfo&) const; /** * Return the random number associated to * the given pt. */ virtual double ptToRandom(Energy pt, Energy dScale, const DipoleIndex& dIndex) const; /** * Generate splitting variables given three random numbers * and the momentum fractions of the emitter and spectator. * Return true on success. */ virtual bool generateSplitting(double kappa, double xi, double phi, DipoleSplittingInfo& dIndex); /** * For the splitting products present in the given dipole splitting * info object calculate the kinematics parameters and return the * propagator factor. */ virtual InvEnergy2 setKinematics(DipoleSplittingInfo&) const; /** * For the splitting parameters given in the dipole splitting info * object, calculate the phasespace Jacobian times the propagator * factor. */ virtual double jacobianTimesPropagator(const DipoleSplittingInfo&, Energy) const; /** * Generate the full kinematics given emitter and * spectator momentum and a previously completeted * DipoleSplittingInfo object. */ virtual void generateKinematics(const Lorentz5Momentum& pEmitter, const Lorentz5Momentum& pSpectator, const DipoleSplittingInfo& dInfo); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<IFLightKinematics> initIFLightKinematics; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ IFLightKinematics & operator=(const IFLightKinematics &); private: /** * Wether or not to choose the `collinear' scheme */ bool theCollinearScheme; }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of IFLightKinematics. */ template <> struct BaseClassTrait<Herwig::IFLightKinematics,1> { /** Typedef of the first base class of IFLightKinematics. */ typedef Herwig::DipoleSplittingKinematics NthBase; }; /** This template specialization informs ThePEG about the name of * the IFLightKinematics class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::IFLightKinematics> : public ClassTraitsBase<Herwig::IFLightKinematics> { /** Return a platform-independent class name */ static string className() { return "Herwig::IFLightKinematics"; } /** * The name of a file containing the dynamic library where the class * IFLightKinematics is implemented. It may also include several, space-separated, * libraries if the class IFLightKinematics depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_IFLightKinematics_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Kinematics/DipoleSplittingKinematics.cc����������������������������0000644�0001750�0001750�00000011331�11754474775�027123� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleSplittingKinematics.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipoleSplittingKinematics class. // #include "DipoleSplittingKinematics.h" #include "Herwig++/DipoleShower/Base/DipoleSplittingInfo.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include <limits> using namespace Herwig; DipoleSplittingKinematics::DipoleSplittingKinematics() : HandlerBase(), theIRCutoff(1.0*GeV), theXMin(1.e-5), theJacobian(0.0), theLastPt(0.0*GeV), theLastZ(0.0), theLastPhi(0.0), theLastEmitterZ(1.0), theLastSpectatorZ(1.0), theLastSplittingParameters() {} DipoleSplittingKinematics::~DipoleSplittingKinematics() {} void DipoleSplittingKinematics::persistentOutput(PersistentOStream & os) const { os << ounit(theIRCutoff,GeV) << theXMin << theMCCheck; } void DipoleSplittingKinematics::persistentInput(PersistentIStream & is, int) { is >> iunit(theIRCutoff,GeV) >> theXMin >> theMCCheck; } void DipoleSplittingKinematics::prepareSplitting(DipoleSplittingInfo& dInfo) { dInfo.splittingKinematics(this); if ( lastPt() > IRCutoff() ) dInfo.lastPt(lastPt()); else { dInfo.lastPt(0.0*GeV); dInfo.didStopEvolving(); } dInfo.lastZ(lastZ()); dInfo.lastPhi(lastPhi()); dInfo.lastEmitterZ(lastEmitterZ()); dInfo.lastSpectatorZ(lastSpectatorZ()); dInfo.splittingParameters().resize(lastSplittingParameters().size()); copy(lastSplittingParameters().begin(),lastSplittingParameters().end(), dInfo.splittingParameters().begin()); } Lorentz5Momentum DipoleSplittingKinematics::getKt(const Lorentz5Momentum& p1, const Lorentz5Momentum& p2, Energy pt, double phi, bool spacelike) const { Lorentz5Momentum P; if ( !spacelike ) P = p1 + p2; else P = p1 - p2; Energy2 Q2 = abs(P.m2()); Lorentz5Momentum Q = !spacelike ? Lorentz5Momentum(ZERO,ZERO,ZERO,sqrt(Q2),sqrt(Q2)) : Lorentz5Momentum(ZERO,ZERO,sqrt(Q2),ZERO,-sqrt(Q2)); if ( spacelike && Q.z() < P.z() ) Q.setZ(-Q.z()); bool boost = abs((P-Q).vect().mag2()/GeV2) > 1e-10 || abs((P-Q).t()/GeV) > 1e-5; Lorentz5Momentum inFrame1; if ( boost ) inFrame1 = p1 + ((P*p1-Q*p1)/(P*Q-Q.mass2()))*(P-Q); else inFrame1 = p1; Energy ptx = inFrame1.x(); Energy pty = inFrame1.y(); Energy q = 2.*inFrame1.z(); Energy Qp = sqrt(4.*(sqr(ptx)+sqr(pty))+sqr(q)); Energy Qy = sqrt(4.*sqr(pty)+sqr(q)); double cPhi = cos(phi); double sPhi = sqrt(1.-sqr(cPhi)); if ( phi > Constants::pi ) sPhi = -sPhi; Lorentz5Momentum kt; if ( !spacelike ) { kt.setT(ZERO); kt.setX(pt*Qy*cPhi/Qp); kt.setY(-pt*(4*ptx*pty*cPhi/Qp+q*sPhi)/Qy); kt.setZ(2.*pt*(-ptx*q*cPhi/Qp + pty*sPhi)/Qy); } else { kt.setT(2.*pt*(ptx*q*cPhi+pty*Qp*sPhi)/(q*Qy)); kt.setX(pt*(Qp*q*cPhi+4.*ptx*pty*sPhi)/(q*Qy)); kt.setY(pt*Qy*sPhi/q); kt.setZ(ZERO); } if ( boost ) kt = kt + ((P*kt-Q*kt)/(P*Q-Q.mass2()))*(P-Q); kt.setMass(-pt); kt.rescaleRho(); return kt; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). AbstractClassDescription<DipoleSplittingKinematics> DipoleSplittingKinematics::initDipoleSplittingKinematics; // Definition of the static class description member. void DipoleSplittingKinematics::Init() { static ClassDocumentation<DipoleSplittingKinematics> documentation ("DipoleSplittingKinematics is the base class for dipole splittings " "as performed in the dipole shower."); static Parameter<DipoleSplittingKinematics,Energy> interfaceIRCutoff ("IRCutoff", "The IR cutoff to be used by this splitting kinematics.", &DipoleSplittingKinematics::theIRCutoff, GeV, 1.0*GeV, 0.0*GeV, 0*GeV, false, false, Interface::lowerlim); static Parameter<DipoleSplittingKinematics,double> interfaceXMin ("XMin", "The minimum momentum fraction for incoming partons", &DipoleSplittingKinematics::theXMin, 1.0e-5, 0.0, 1.0, false, false, Interface::limited); static Reference<DipoleSplittingKinematics,DipoleMCCheck> interfaceMCCheck ("MCCheck", "[debug option] MCCheck", &DipoleSplittingKinematics::theMCCheck, false, false, true, true, false); interfaceMCCheck.rank(-1); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Makefile.am��������������������������������������������������������0000644�0001750�0001750�00000000630�11755412610�021414� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������SUBDIRS = Base Kernels Kinematics Utility AlphaS pkglib_LTLIBRARIES = HwDipoleShower.la HwDipoleShower_la_LDFLAGS = -module -version-info 1:0:0 HwDipoleShower_la_LIBADD = \ Base/libHwDipoleShowerBase.la \ Kernels/libHwDipoleShowerKernels.la \ Kinematics/libHwDipoleShowerKinematics.la \ Utility/libHwDipoleShowerUtility.la HwDipoleShower_la_SOURCES = \ DipoleShowerHandler.h DipoleShowerHandler.cc ��������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/��������������������������������������������������������������0000755�0001750�0001750�00000000000�11756464207�020245� 5����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/DipoleEvolutionOrdering.cc������������������������������������0000644�0001750�0001750�00000002714�11754474775�025404� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleEvolutionOrdering.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipoleEvolutionOrdering class. // #include "DipoleEvolutionOrdering.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; DipoleEvolutionOrdering::DipoleEvolutionOrdering() : HandlerBase() {} DipoleEvolutionOrdering::~DipoleEvolutionOrdering() {} // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void DipoleEvolutionOrdering::persistentOutput(PersistentOStream &) const { } void DipoleEvolutionOrdering::persistentInput(PersistentIStream &, int) { } AbstractClassDescription<DipoleEvolutionOrdering> DipoleEvolutionOrdering::initDipoleEvolutionOrdering; // Definition of the static class description member. void DipoleEvolutionOrdering::Init() { static ClassDocumentation<DipoleEvolutionOrdering> documentation ("DipoleEvolutionOrdering defines a particular evolution " "algortihm for the dipole shower."); } ����������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/DipoleEventRecord.h�������������������������������������������0000644�0001750�0001750�00000020206�11754474775�024004� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleEventRecord.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipoleEventRecord_H #define HERWIG_DipoleEventRecord_H // // This is the declaration of the DipoleEventRecord class. // #include "ThePEG/PDF/PDF.h" #include "ThePEG/Handlers/StandardXComb.h" #include "Dipole.h" #include "DipoleChain.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief The DipoleEventRecord class is * used internally by the dipole shower. */ class DipoleEventRecord { public: /** * The default constructor. */ DipoleEventRecord() {} /** * The default destructor just cleans up. */ ~DipoleEventRecord() { clear(); } public: /** * Return the incoming partons at the current * stage of the evolution. */ PPair& incoming() { return theIncoming; } /** * Return the incoming partons at the current * stage of the evolution. */ const PPair& incoming() const { return theIncoming; } /** * Return the outgoing partons at the current * stage of the evolution. */ PList& outgoing() { return theOutgoing; } /** * Return the outgoing partons at the current * stage of the evolution. */ const PList& outgoing() const { return theOutgoing; } /** * Return the intermediate particles at the current * stage of the evolution. */ PList& intermediates() { return theIntermediates; } /** * Return the intermediate particles at the current * stage of the evolution. */ const PList& intermediates() const { return theIntermediates; } /** * Return any non-coloured outgoing particles in the * current subprocess. */ PList& hard() { return theHard; } /** * Return any non-coloured outgoing particles in the * current subprocess. */ const PList& hard() const { return theHard; } /** * Return the subprocess currently showered */ tSubProPtr subProcess() const { return theSubProcess; } /** * Return the XComb describing the hard process. */ tStdXCombPtr xcombPtr() const { return theXComb; } /** * Return the XComb describing the hard process. */ const StandardXComb& xcomb() const { return *theXComb; } /** * Return the momentum fractions. */ const pair<double,double>& fractions() const { return theFractions; } /** * Return the PDFs */ const pair<PDF,PDF>& pdfs() const { return thePDFs; } /** * Return the momentum of the hard system */ const Lorentz5Momentum& pX() const { return thePX; } /** * Transform all intermediate, hard and outgoing * partciles using the given transformation. */ void transform(const SpinOneLorentzRotation& rot); public: /** * Return the dipole chains to be showered. */ const list<DipoleChain>& chains() const { return theChains; } /** * Access the dipole chains to be showered. */ list<DipoleChain>& chains() { return theChains; } /** * Return the dipole chains which ceased evolving. */ const list<DipoleChain>& doneChains() const { return theDoneChains; } /** * Access the dipole chains which ceased evolving. */ list<DipoleChain>& doneChains() { return theDoneChains; } /** * Return true, if there are chains to be * showered. */ bool haveChain() const { return !theChains.empty(); } /** * Return the current dipole chain */ DipoleChain& currentChain() { assert(haveChain()); return theChains.front(); } /** * Pop the current dipole chain */ void popChain(); /** * Remove the given chain. */ void popChain(list<DipoleChain>::iterator); /** * Remove the given chains. */ void popChains(const list<list<DipoleChain>::iterator>&); public: /** * Split the dipole pointed to by the given iterator. * Return references to the affected chains, and update * iterators pointing to the children in the returned * chains. */ void split(list<Dipole>::iterator dip, DipoleSplittingInfo& dsplit, pair<list<Dipole>::iterator,list<Dipole>::iterator>& childIterators, DipoleChain*& firstChain, DipoleChain*& secondChain) { split(dip,theChains.begin(),dsplit,childIterators,firstChain,secondChain,false); } /** * Split the dipole pointed to by the given iterator * in the indicated chain, indicating a splitting with * a colour spectator. * Return references to the affected chains, and update * iterators pointing to the children in the returned * chains. */ void split(list<Dipole>::iterator dip, list<DipoleChain>::iterator ch, DipoleSplittingInfo& dsplit, pair<list<Dipole>::iterator,list<Dipole>::iterator>& childIterators, DipoleChain*& firstChain, DipoleChain*& secondChain, bool colourSpectator = true); /** * Let the given dipole take the recoil of * the indicated splitting. */ void recoil(list<Dipole>::iterator dip, list<DipoleChain>::iterator ch, DipoleSplittingInfo& dsplit); /** * Update the particles upon insertion of the * given splitting. */ void update(DipoleSplittingInfo& dsplit); /** * Return the dipole(s) containing the incoming * partons after the evolution has ended. Put back * the chains containing these to the chains to be * showered. */ list<pair<list<Dipole>::iterator,list<DipoleChain>::iterator> > inDipoles(); /** * Fill the given step and return incoming partons. */ tPPair fillEventRecord(StepPtr step, bool firstInteraction, bool realigned); public: /** * Prepare the event record for the given * subprocess. */ const map<PPtr,PPtr>& prepare(tSubProPtr subpro, tStdXCombPtr xc, const pair<PDF,PDF>& pdf, bool dipoles = true); /** * Clear the event record: Give up ownership * on any object involved in the evolution. */ void clear(); public: /** * Print event record at current state. */ void debugLastEvent(ostream&) const; protected: /** * Sort the coloured partons into a colour ordered ensemble. */ PList colourOrdered(); /** * Find the chains to be showered. */ void findChains(const PList& ordered); /** * Add all particles to the relevant sets */ void getAll(const ParticleVector& childs, set<PPtr>& hardSet, set<PPtr>& outgoingSet); /** * Isolate the colour of the process from the rest of the event. * Called in the constructor */ void colourIsolate(const vector<PPtr> & original, const vector<PPtr> & copy); /** * Update the colour information of a particle prior to insertion into the * event record. */ void updateColour(PPtr particle); private: struct getMomentum { const Lorentz5Momentum& operator() (PPtr particle) const { return particle->momentum(); } }; /** * The subprocess currently showered. */ SubProPtr theSubProcess; /** * Pointer to the XComb which generated the hard process. */ StdXCombPtr theXComb; /** * The PDFs to be considered. */ pair<PDF,PDF> thePDFs; /** * The momentum of the hard system */ Lorentz5Momentum thePX; /** * Momentum fractions of the incoming partons. */ pair<double,double> theFractions; /** * The incoming partons at the current * stage of the evolution. */ PPair theIncoming; /** * The outgoing partons at the current * stage of the evolution. */ PList theOutgoing; /** * The intermediate particles at the current * stage of the evolution. */ PList theIntermediates; /** * Any non-coloured outgoing particles in the * current subprocess. */ PList theHard; /** * Map originals to copies. */ map<PPtr,PPtr> theOriginals; /** * Map colour lines from copies to originals. */ map<ColinePtr,ColinePtr> theColourLines; /** * The dipole chains currently showered. */ list<DipoleChain> theChains; /** * The dipole chains which ceased evolving. */ list<DipoleChain> theDoneChains; }; } #endif /* HERWIG_DipoleEventRecord_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/DipoleChainOrdering.cc����������������������������������������0000644�0001750�0001750�00000010434�11754474775�024440� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleChainOrdering.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipoleChainOrdering class. // #include "DipoleChainOrdering.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Switch.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; DipoleChainOrdering::DipoleChainOrdering() : DipoleEvolutionOrdering(), virtualityOrdering(false) {} DipoleChainOrdering::~DipoleChainOrdering() {} IBPtr DipoleChainOrdering::clone() const { return new_ptr(*this); } IBPtr DipoleChainOrdering::fullclone() const { return new_ptr(*this); } Energy DipoleChainOrdering::hardScale(tPPtr emitter, tPPtr spectator, double emitterX, double spectatorX, const DipoleSplittingKernel& split, const DipoleIndex& index) const { Energy scale = split.splittingKinematics()->dipoleScale(emitter->momentum(), spectator->momentum()); return virtualityOrdering ? split.splittingKinematics()->QMax(scale,emitterX,spectatorX,index) : split.splittingKinematics()->ptMax(scale,emitterX,spectatorX,index,split); } void DipoleChainOrdering::setEvolutionScale(Energy scale, const DipoleSplittingInfo&, DipoleChain& chain, pair<list<Dipole>::iterator,list<Dipole>::iterator>) const { for ( list<Dipole>::iterator dip = chain.dipoles().begin(); dip != chain.dipoles().end(); ++dip ) { if ( dip->emitterScale(make_pair(true,false)) > scale ) dip->emitterScale(make_pair(true,false),scale); if ( dip->emitterScale(make_pair(false,true)) > scale ) dip->emitterScale(make_pair(false,true),scale); } } void DipoleChainOrdering::setEvolutionScale(Energy scale, const DipoleSplittingInfo&, DipoleChain& chain, list<Dipole>::iterator) const { for ( list<Dipole>::iterator dip = chain.dipoles().begin(); dip != chain.dipoles().end(); ++dip ) { if ( dip->emitterScale(make_pair(true,false)) > scale ) dip->emitterScale(make_pair(true,false),scale); if ( dip->emitterScale(make_pair(false,true)) > scale ) dip->emitterScale(make_pair(false,true),scale); } } Energy DipoleChainOrdering::evolutionScale(const DipoleSplittingInfo& split, const DipoleSplittingKernel& spkernel) const { return virtualityOrdering ? spkernel.splittingKinematics()->QFromPt(split.lastPt(),split) : split.lastPt(); } Energy DipoleChainOrdering::maxPt(Energy scale, const DipoleSplittingInfo& split, const DipoleSplittingKernel& spkernel) const { return virtualityOrdering ? spkernel.splittingKinematics()->ptMax(scale,split.emitterX(),split.spectatorX(),split.index(),spkernel) : scale; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void DipoleChainOrdering::persistentOutput(PersistentOStream & os) const { os << virtualityOrdering; } void DipoleChainOrdering::persistentInput(PersistentIStream & is, int) { is >> virtualityOrdering; } ClassDescription<DipoleChainOrdering> DipoleChainOrdering::initDipoleChainOrdering; // Definition of the static class description member. void DipoleChainOrdering::Init() { static ClassDocumentation<DipoleChainOrdering> documentation ("DipoleChainOrdering performs ordering on " "complete colour singlet dipole chains."); static Switch<DipoleChainOrdering,bool> interfaceVirtualityOrdering ("Ordering", "[experimental] Switch between virtuality and pt ordering.", &DipoleChainOrdering::virtualityOrdering, false, false, false); static SwitchOption interfaceVirtualityOrderingPt (interfaceVirtualityOrdering, "Pt", "Perform pt ordering", false); static SwitchOption interfaceVirtualityOrderingVirtuality (interfaceVirtualityOrdering, "Virtuality", "Perform virtuality ordering", true); interfaceVirtualityOrdering.rank(-1); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/DipoleChain.h�������������������������������������������������0000644�0001750�0001750�00000006362�11754474775�022615� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleChain.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipoleChain_H #define HERWIG_DipoleChain_H // // This is the declaration of the DipoleChain class. // #include "Dipole.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief The DipoleChain class is used by the dipole shower to * represent a chain of dipoles. * */ class DipoleChain { public: /** * Default constructor */ DipoleChain(); /** * Return true, if this chain is circular. */ bool circular () const; /* * Return true, if the dipole referred to * has a left neighbour */ bool hasLeftNeighbour(list<Dipole>::const_iterator dc) const; /* * Return a reference to the left neighbour, * if existing */ Dipole& leftNeighbour(list<Dipole>::iterator dc); /* * Return a const reference to the left neighbour, * if existing */ const Dipole& leftNeighbour(list<Dipole>::const_iterator dc) const; /** * Return an iterator to the left neighbour */ list<Dipole>::iterator leftNeighbourIterator(list<Dipole>::iterator dc); /* * Return true, if the dipole referred to * has a right neighbour */ bool hasRightNeighbour (list<Dipole>::const_iterator dc) const; /* * Return a reference to the right neighbour, * if existing */ Dipole& rightNeighbour (list<Dipole>::iterator dc); /* * Return a const reference to the right neighbour, * if existing */ const Dipole& rightNeighbour (list<Dipole>::const_iterator dc) const; /** * Return an iterator to the right neighbour */ list<Dipole>::iterator rightNeighbourIterator(list<Dipole>::iterator dc); public: /** * Access the dipole list */ list<Dipole>& dipoles() { return theDipoles; } /** * Return the dipole list */ const list<Dipole>& dipoles() const { return theDipoles; } /** * Check for gg single dipole */ void check(); public: /* * Insert the given splitting; if this contains a chain-breakup emission and * the chain is circular, reshuffle the chain to make it non-circular; if it is * already non-circular return the iterator starting the new chain. If no * splitting is needed return the end iterator of the dipole list. * Set the iterators pointing to the children dipoles. */ list<Dipole>::iterator insertSplitting(list<Dipole>::iterator emittingDipole, pair<Dipole,Dipole> children, pair<list<Dipole>::iterator,list<Dipole>::iterator>& childIterators); /** * Indicate a change in the given dipole. */ void updateDipole(list<Dipole>::iterator dip); public: /** * Put information to ostream */ void print(ostream&) const; private: /** * The dipoles contained in this chain */ list<Dipole> theDipoles; /** * Switch on special treatment for * gg single dipole */ bool ggSingleDipole; }; inline ostream& operator << (ostream& os, const DipoleChain& di) { di.print(os); return os; } } #endif /* HERWIG_DipoleChain_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/DipoleSplittingGenerator.cc�����������������������������������0000644�0001750�0001750�00000035561�11754474775�025560� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleSplittingGenerator.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipoleSplittingGenerator class. // #include "DipoleSplittingGenerator.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/DipoleShower/DipoleShowerHandler.h" using namespace Herwig; DipoleSplittingGenerator::DipoleSplittingGenerator() : HandlerBase(), theExponentialGenerator(0), prepared(false), presampling(false) { if ( ShowerHandler::currentHandler() ) setGenerator(ShowerHandler::currentHandler()->generator()); } DipoleSplittingGenerator::~DipoleSplittingGenerator() { if ( theExponentialGenerator ) { delete theExponentialGenerator; theExponentialGenerator = 0; } } IBPtr DipoleSplittingGenerator::clone() const { return new_ptr(*this); } IBPtr DipoleSplittingGenerator::fullclone() const { return new_ptr(*this); } void DipoleSplittingGenerator::wrap(Ptr<DipoleSplittingGenerator>::ptr other) { assert(!prepared); theOtherGenerator = other; } void DipoleSplittingGenerator::prepare(const DipoleSplittingInfo& sp) { generatedSplitting = sp; generatedSplitting.splittingKinematics(splittingKernel()->splittingKinematics()); generatedSplitting.splittingParameters().resize(splittingKernel()->nDimAdditional()); if ( wrapping() ) { generatedSplitting.emitterData(theSplittingKernel->emitter(generatedSplitting.index())); generatedSplitting.spectatorData(theSplittingKernel->spectator(generatedSplitting.index())); generatedSplitting.emissionData(theSplittingKernel->emission(generatedSplitting.index())); parameters.resize(theOtherGenerator->nDim()); prepared = true; return; } generatedSplitting.emitterData(splittingKernel()->emitter(generatedSplitting.index())); generatedSplitting.spectatorData(splittingKernel()->spectator(generatedSplitting.index())); generatedSplitting.emissionData(splittingKernel()->emission(generatedSplitting.index())); presampledSplitting = generatedSplitting; prepared = true; parameters.resize(nDim()); theExponentialGenerator = new exsample::exponential_generator<DipoleSplittingGenerator,UseRandom>(); theExponentialGenerator->sampling_parameters().maxtry = maxtry(); theExponentialGenerator->sampling_parameters().presampling_points = presamplingPoints(); theExponentialGenerator->function(this); theExponentialGenerator->initialize(); } void DipoleSplittingGenerator::fixParameters(const DipoleSplittingInfo& sp) { assert(generator()); assert(!presampling); assert(prepared); assert(sp.index() == generatedSplitting.index()); generatedSplitting.scale(sp.scale()); parameters[3] = sp.scale()/generator()->maximumCMEnergy(); Energy maxPossible = generatedSplitting.splittingKinematics()->ptMax(sp.scale(), sp.emitterX(), sp.spectatorX(), generatedSplitting.index(), *splittingKernel()); if ( maxPossible >= sp.hardPt() ) generatedSplitting.hardPt(sp.hardPt()); else generatedSplitting.hardPt(maxPossible); parameters[0] = splittingKinematics()->ptToRandom(generatedSplitting.hardPt(), sp.scale(),generatedSplitting.index()); size_t shift = 4; if ( generatedSplitting.index().emitterPDF().pdf() && generatedSplitting.index().spectatorPDF().pdf() ) { generatedSplitting.emitterX(sp.emitterX()); generatedSplitting.spectatorX(sp.spectatorX()); parameters[4] = sp.emitterX(); parameters[5] = sp.spectatorX(); shift += 2; } if ( generatedSplitting.index().emitterPDF().pdf() && !generatedSplitting.index().spectatorPDF().pdf() ) { generatedSplitting.emitterX(sp.emitterX()); parameters[4] = sp.emitterX(); ++shift; } if ( !generatedSplitting.index().emitterPDF().pdf() && generatedSplitting.index().spectatorPDF().pdf() ) { generatedSplitting.spectatorX(sp.spectatorX()); parameters[4] = sp.spectatorX(); ++shift; } if ( splittingReweight() ) { parameters[shift] = splittingReweight()->evaluate(sp); ++shift; } if ( splittingKernel()->nDimAdditional() ) copy(sp.lastSplittingParameters().begin(),sp.lastSplittingParameters().end(),parameters.begin()+shift); if ( sp.emitter() ) generatedSplitting.emitter(sp.emitter()); if ( sp.spectator() ) generatedSplitting.spectator(sp.spectator()); } int DipoleSplittingGenerator::nDim() const { assert(!wrapping()); assert(prepared); int ret = 4; // 0 pt, 1 z, 2 phi, 3 scale, 4/5 xs + parameters if ( generatedSplitting.index().emitterPDF().pdf() ) { ++ret; } if ( generatedSplitting.index().spectatorPDF().pdf() ) { ++ret; } if ( splittingReweight() ) ++ret; ret += splittingKernel()->nDimAdditional(); return ret; } const vector<bool>& DipoleSplittingGenerator::sampleFlags() { assert(!wrapping()); if ( !theFlags.empty() ) return theFlags; theFlags.resize(nDim(),false); theFlags[0] = true; theFlags[1] = true; theFlags[2] = true; // 0 pt, 1 z, 2 phi return theFlags; } const pair<vector<double>,vector<double> >& DipoleSplittingGenerator::support() { assert(!wrapping()); if ( !theSupport.first.empty() ) return theSupport; vector<double> lower(nDim(),0.); vector<double> upper(nDim(),1.); pair<double,double> kSupport = generatedSplitting.splittingKinematics()->kappaSupport(generatedSplitting); pair<double,double> xSupport = generatedSplitting.splittingKinematics()->xiSupport(generatedSplitting); lower[0] = kSupport.first; lower[1] = xSupport.first; upper[0] = kSupport.second; upper[1] = xSupport.second; if ( splittingReweight() ) { pair<double,double> bounds = splittingReweight()->reweightBounds(generatedSplitting.index()); int pos = 4; if ( generatedSplitting.index().emitterPDF().pdf() ) { ++pos; } if ( generatedSplitting.index().spectatorPDF().pdf() ) { ++pos; } lower[pos] = bounds.first; upper[pos] = bounds.second; } theSupport.first = lower; theSupport.second = upper; return theSupport; } void DipoleSplittingGenerator::startPresampling() { assert(!wrapping()); splittingKernel()->startPresampling(generatedSplitting.index()); presampling = true; } void DipoleSplittingGenerator::stopPresampling() { assert(!wrapping()); splittingKernel()->stopPresampling(generatedSplitting.index()); presampling = false; } bool DipoleSplittingGenerator::haveOverestimate() const { assert(!wrapping()); assert(prepared); return generatedSplitting.splittingKinematics()->haveOverestimate() && splittingKernel()->haveOverestimate(generatedSplitting); } bool DipoleSplittingGenerator::overestimate(const vector<double>& point) { assert(!wrapping()); assert(prepared); assert(!presampling); assert(haveOverestimate()); if ( ! generatedSplitting.splittingKinematics()->generateSplitting(point[0],point[1],point[2], generatedSplitting) ) return 0.; generatedSplitting.splittingKinematics()->prepareSplitting(generatedSplitting); return ( generatedSplitting.splittingKinematics()->jacobianOverestimate() * splittingKernel()->overestimate(generatedSplitting) * (splittingReweight() ? splittingReweight()->evaluate(generatedSplitting) : 1.) ); } double DipoleSplittingGenerator::invertOverestimateIntegral(double value) const { assert(!wrapping()); assert(prepared); assert(!presampling); assert(haveOverestimate()); return splittingKernel()->invertOverestimateIntegral(generatedSplitting,value); } double DipoleSplittingGenerator::evaluate(const vector<double>& point) { assert(!wrapping()); assert(prepared); assert(generator()); DipoleSplittingInfo& split = ( !presampling ? generatedSplitting : presampledSplitting ); split.continuesEvolving(); size_t shift = 4; if ( presampling ) { split.scale(point[3] * generator()->maximumCMEnergy()); if ( split.index().emitterPDF().pdf() && split.index().spectatorPDF().pdf() ) { split.emitterX(point[4]); split.spectatorX(point[5]); shift += 2; } if ( split.index().emitterPDF().pdf() && !split.index().spectatorPDF().pdf() ) { split.emitterX(point[4]); ++shift; } if ( !split.index().emitterPDF().pdf() && split.index().spectatorPDF().pdf() ) { split.spectatorX(point[4]); ++shift; } if ( splittingReweight() ) ++shift; if ( splittingKernel()->nDimAdditional() ) copy(point.begin()+shift,point.end(),split.splittingParameters().begin()); split.hardPt(split.splittingKinematics()->ptMax(split.scale(), split.emitterX(), split.spectatorX(), split.index(), *splittingKernel())); } if ( ! split.splittingKinematics()->generateSplitting(point[0],point[1],point[2],split) ) { split.lastValue(0.); return 0.; } split.splittingKinematics()->prepareSplitting(split); if ( split.stoppedEvolving() ) { split.lastValue(0.); return 0.; } double kernel = splittingKernel()->evaluate(split); if ( splittingReweight() ) { if ( !presampling ) kernel *= splittingReweight()->evaluate(split); else kernel *= point[shift-1]; } double jac = split.splittingKinematics()->jacobian(); split.lastValue( abs(jac) * kernel ); if ( kernel < 0. ) return 0.; return split.lastValue(); } void DipoleSplittingGenerator::doGenerate() { assert(!wrapping()); double res = 0.; Energy startPt = generatedSplitting.hardPt(); while (true) { try { res = theExponentialGenerator->generate(); } catch (exsample::exponential_regenerate&) { generatedSplitting.hardPt(startPt); continue; } catch (exsample::hit_and_miss_maxtry&) { throw DipoleShowerHandler::RedoShower(); } catch (exsample::selection_maxtry&) { throw DipoleShowerHandler::RedoShower(); } break; } if ( res == 0. ) { generatedSplitting.lastPt(0.0*GeV); generatedSplitting.didStopEvolving(); } else { generatedSplitting.continuesEvolving(); if ( theMCCheck ) theMCCheck->book(generatedSplitting.emitterX(), generatedSplitting.spectatorX(), generatedSplitting.scale(), startPt, generatedSplitting.lastPt(), generatedSplitting.lastZ(), 1.); } } Energy DipoleSplittingGenerator::generate(const DipoleSplittingInfo& split) { fixParameters(split); if ( wrapping() ) { return theOtherGenerator->generateWrapped(generatedSplitting); } doGenerate(); return generatedSplitting.lastPt(); } Energy DipoleSplittingGenerator::generateWrapped(DipoleSplittingInfo& split) { assert(!wrapping()); DipoleSplittingInfo backup = generatedSplitting; generatedSplitting = split; fixParameters(split); try { doGenerate(); } catch (...) { split = generatedSplitting; generatedSplitting = backup; throw; } Energy pt = generatedSplitting.lastPt(); split = generatedSplitting; generatedSplitting = backup; return pt; } void DipoleSplittingGenerator::completeSplitting(DipoleSplittingInfo& sp) const { pair<bool,bool> conf = sp.configuration(); sp = generatedSplitting; sp.configuration(conf); } Ptr<DipoleSplittingKernel>::tptr DipoleSplittingGenerator::splittingKernel() const { if ( wrapping() ) return theOtherGenerator->splittingKernel(); return theSplittingKernel; } Ptr<DipoleSplittingReweight>::tptr DipoleSplittingGenerator::splittingReweight() const { if ( wrapping() ) return theOtherGenerator->splittingReweight(); return theSplittingReweight; } Ptr<DipoleSplittingKinematics>::tptr DipoleSplittingGenerator::splittingKinematics() const { if ( wrapping() ) return theOtherGenerator->splittingKinematics(); return theSplittingKernel->splittingKinematics(); } void DipoleSplittingGenerator::splittingKernel(Ptr<DipoleSplittingKernel>::tptr sp) { theSplittingKernel = sp; if ( theSplittingKernel->mcCheck() ) theMCCheck = theSplittingKernel->mcCheck(); } void DipoleSplittingGenerator::splittingReweight(Ptr<DipoleSplittingReweight>::tptr sp) { theSplittingReweight = sp; } void DipoleSplittingGenerator::debugGenerator(ostream& os) const { os << "--- DipoleSplittingGenerator ---------------------------------------------------\n"; os << " generating splittings using\n" << " splittingKernel = " << splittingKernel()->name() << " splittingKinematics = " << generatedSplitting.splittingKinematics()->name() << "\n" << " to sample splittings of type:\n"; os << generatedSplitting; os << "--------------------------------------------------------------------------------\n"; } void DipoleSplittingGenerator::debugLastEvent(ostream& os) const { os << "--- DipoleSplittingGenerator ---------------------------------------------------\n"; os << " last generated event:\n"; os << generatedSplitting; os << "--------------------------------------------------------------------------------\n"; } // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void DipoleSplittingGenerator::persistentOutput(PersistentOStream & os) const { os << theOtherGenerator << theSplittingKernel << theSplittingReweight << theMCCheck; } void DipoleSplittingGenerator::persistentInput(PersistentIStream & is, int) { is >> theOtherGenerator >> theSplittingKernel >> theSplittingReweight >> theMCCheck; } ClassDescription<DipoleSplittingGenerator> DipoleSplittingGenerator::initDipoleSplittingGenerator; // Definition of the static class description member. void DipoleSplittingGenerator::Init() { static ClassDocumentation<DipoleSplittingGenerator> documentation ("DipoleSplittingGenerator is used by the dipole shower " "to sample splittings from a given dipole splitting kernel."); static Reference<DipoleSplittingGenerator,DipoleSplittingKernel> interfaceSplittingKernel ("SplittingKernel", "Set the splitting kernel to sample from.", &DipoleSplittingGenerator::theSplittingKernel, false, false, true, false, false); static Reference<DipoleSplittingGenerator,DipoleSplittingReweight> interfaceSplittingReweight ("SplittingReweight", "Set the splitting reweight.", &DipoleSplittingGenerator::theSplittingReweight, false, false, true, true, false); static Reference<DipoleSplittingGenerator,DipoleMCCheck> interfaceMCCheck ("MCCheck", "[debug option] MCCheck", &DipoleSplittingGenerator::theMCCheck, false, false, true, true, false); interfaceMCCheck.rank(-1); } �����������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/DipoleChain.cc������������������������������������������������0000644�0001750�0001750�00000024125�11754474775�022750� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleChain.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipoleChain class. // #include "DipoleChain.h" #include "Herwig++/DipoleShower/Utility/DipolePartonSplitter.h" #include <boost/utility.hpp> using boost::next; using boost::prior; using namespace Herwig; DipoleChain::DipoleChain() : ggSingleDipole(false) {} bool DipoleChain::circular () const { return (theDipoles.front().leftParticle() == theDipoles.back().rightParticle()); } bool DipoleChain::hasLeftNeighbour (list<Dipole>::const_iterator dc) const { if ( dc == dipoles().begin() ) return circular(); return true; } Dipole& DipoleChain::leftNeighbour (list<Dipole>::iterator dc) { assert(hasLeftNeighbour(dc)); if ( dc == dipoles().begin() ) return dipoles().back(); return *(--dc); } const Dipole& DipoleChain::leftNeighbour (list<Dipole>::const_iterator dc) const { assert(hasLeftNeighbour(dc)); if ( dc == dipoles().begin() ) return dipoles().back(); return *(--dc); } list<Dipole>::iterator DipoleChain::leftNeighbourIterator(list<Dipole>::iterator dc) { assert(hasLeftNeighbour(dc)); if ( dc == dipoles().begin() ) return --dipoles().end(); return --dc; } bool DipoleChain::hasRightNeighbour (list<Dipole>::const_iterator dc) const { if (dc == --dipoles().end()) return circular(); return true; } Dipole& DipoleChain::rightNeighbour (list<Dipole>::iterator dc) { assert(hasRightNeighbour(dc)); if ( dc == --dipoles().end() ) return dipoles().front(); return *(++dc); } const Dipole& DipoleChain::rightNeighbour (list<Dipole>::const_iterator dc) const { assert(hasRightNeighbour(dc)); if ( dc == --dipoles().end() ) return dipoles().front(); return *(++dc); } list<Dipole>::iterator DipoleChain::rightNeighbourIterator(list<Dipole>::iterator dc) { assert(hasRightNeighbour(dc)); if ( dc == --dipoles().end() ) return dipoles().begin(); return ++dc; } void DipoleChain::check() { if ( theDipoles.begin() == prior(theDipoles.end()) ) { if ( theDipoles.front().leftParticle()->hasColour() && theDipoles.front().leftParticle()->hasAntiColour() ) { assert(theDipoles.front().rightParticle()->hasColour() && theDipoles.front().rightParticle()->hasAntiColour()); ggSingleDipole = true; } } } list<Dipole>::iterator DipoleChain::insertSplitting(list<Dipole>::iterator emittingDipole, pair<Dipole,Dipole> children, pair<list<Dipole>::iterator,list<Dipole>::iterator>& childIterators) { assert(DipolePartonSplitter::colourConnected(children.first.leftParticle(),children.first.rightParticle()) || DipolePartonSplitter::colourConnected(children.second.leftParticle(),children.second.rightParticle())); bool was_circular = circular(); if (hasLeftNeighbour(emittingDipole)) { list<Dipole>::iterator theLeftNeighbour = leftNeighbourIterator(emittingDipole); theLeftNeighbour->rightParticle(children.first.leftParticle()); if ( children.first.leftParticle()->scale() < sqr(theLeftNeighbour->rightScale()) ) theLeftNeighbour->rightScale(sqrt(children.first.leftParticle()->scale())); theLeftNeighbour->rightPDF(children.first.leftPDF()); theLeftNeighbour->rightFraction(children.first.leftFraction()); theLeftNeighbour->update(); } if (hasRightNeighbour(emittingDipole)) { list<Dipole>::iterator theRightNeighbour = rightNeighbourIterator(emittingDipole); theRightNeighbour->leftParticle(children.second.rightParticle()); if ( children.second.rightParticle()->scale() < sqr(theRightNeighbour->leftScale()) ) theRightNeighbour->leftScale(sqrt(children.second.rightParticle()->scale())); theRightNeighbour->leftPDF(children.second.rightPDF()); theRightNeighbour->leftFraction(children.second.rightFraction()); theRightNeighbour->update(); } if (DipolePartonSplitter::colourConnected(children.first.leftParticle(),children.first.rightParticle()) && DipolePartonSplitter::colourConnected(children.second.leftParticle(),children.second.rightParticle())) { // nothing special to do, just replace the emitting dipole // by the right one and insert the left one before it *emittingDipole = children.second; childIterators.second = emittingDipole; childIterators.first = dipoles().insert(emittingDipole,children.first); if ( ggSingleDipole ) { ggSingleDipole = false; Dipole miss; miss.leftParticle(dipoles().back().rightParticle()); miss.rightParticle(dipoles().front().leftParticle()); miss.leftScale(dipoles().back().rightScale()); miss.rightScale(dipoles().front().leftScale()); miss.leftPDF(dipoles().back().rightPDF()); miss.rightPDF(dipoles().front().leftPDF()); miss.leftFraction(dipoles().back().rightFraction()); miss.rightFraction(dipoles().front().leftFraction()); miss.update(); dipoles().push_back(miss); } return dipoles().end(); } if (!DipolePartonSplitter::colourConnected(children.first.leftParticle(),children.first.rightParticle())) { if ( !was_circular && !ggSingleDipole ) { *emittingDipole = children.second; childIterators.second = emittingDipole; assert(emittingDipole != dipoles().begin()); childIterators.first = prior(emittingDipole); return emittingDipole; } *emittingDipole = children.second; if ( ggSingleDipole ) { ggSingleDipole = false; Dipole miss; miss.leftParticle(children.second.rightParticle()); miss.rightParticle(children.first.leftParticle()); miss.leftScale(children.second.rightScale()); miss.rightScale(children.first.leftScale()); miss.leftPDF(children.second.rightPDF()); miss.rightPDF(children.first.leftPDF()); miss.leftFraction(children.second.rightFraction()); miss.rightFraction(children.first.leftFraction()); miss.update(); dipoles().push_back(miss); childIterators.first = dipoles().begin(); childIterators.second = prior(dipoles().end()); return dipoles().end(); } childIterators.second = emittingDipole; if ( emittingDipole == dipoles().begin() ) childIterators.first = --dipoles().end(); else childIterators.first = prior(emittingDipole); if ( emittingDipole == dipoles().begin() ) return dipoles().end(); dipoles().splice(dipoles().begin(),dipoles(),emittingDipole,dipoles().end()); // explicitly fix iterators in case the splice implementation // at hand does invalidate iterators (the SGI docu says, it doesn't, // but it seems that this behaviour is not part of the standard) childIterators.second = dipoles().begin(); childIterators.first = --dipoles().end(); return dipoles().end(); } if (!DipolePartonSplitter::colourConnected(children.second.leftParticle(),children.second.rightParticle())) { if ( !was_circular && !ggSingleDipole ) { *emittingDipole = children.first; childIterators.first = emittingDipole; assert(emittingDipole != --dipoles().end()); childIterators.second = next(emittingDipole); return next(emittingDipole); } *emittingDipole = children.first; if ( ggSingleDipole ) { ggSingleDipole = false; Dipole miss; miss.leftParticle(children.second.rightParticle()); miss.rightParticle(children.first.leftParticle()); miss.leftScale(children.second.rightScale()); miss.rightScale(children.first.leftScale()); miss.leftPDF(children.second.rightPDF()); miss.rightPDF(children.first.leftPDF()); miss.leftFraction(children.second.rightFraction()); miss.rightFraction(children.first.leftFraction()); miss.update(); dipoles().push_front(miss); childIterators.first = dipoles().begin(); childIterators.second = prior(dipoles().end()); return dipoles().end(); } childIterators.first = emittingDipole; if ( emittingDipole == --dipoles().end() ) childIterators.second = dipoles().begin(); else childIterators.second = next(emittingDipole); if ( emittingDipole == --dipoles().end() ) return dipoles().end(); dipoles().splice(dipoles().begin(),dipoles(),next(emittingDipole),dipoles().end()); // explicitly fix iterators in case the splice implementation // at hand does invalidate iterators (the SGI docu says, it doesn't, // but it seems that this behaviour is not part of the standard) childIterators.first = dipoles().begin(); childIterators.second = --dipoles().end(); return dipoles().end(); } return dipoles().end(); } void DipoleChain::updateDipole(list<Dipole>::iterator dip) { dip->update(); if (hasLeftNeighbour(dip)) { list<Dipole>::iterator theLeftNeighbour = leftNeighbourIterator(dip); theLeftNeighbour->rightParticle(dip->leftParticle()); theLeftNeighbour->rightPDF(dip->leftPDF()); theLeftNeighbour->rightFraction(dip->leftFraction()); theLeftNeighbour->update(); } if (hasRightNeighbour(dip)) { list<Dipole>::iterator theRightNeighbour = rightNeighbourIterator(dip); theRightNeighbour->leftParticle(dip->rightParticle()); theRightNeighbour->leftPDF(dip->rightPDF()); theRightNeighbour->leftFraction(dip->rightFraction()); theRightNeighbour->update(); } } void DipoleChain::print(ostream& os) const { os << "--- DipoleChain ----------------------------------------------------------------\n"; if ( theDipoles.empty() ) { os << " *** This DipoleChain is empty. ***\n"; } else { os << " " << (!circular() ? "non-" : "") << "circular with " << theDipoles.size() << " dipoles\n"; for (list<Dipole>::const_iterator dit = theDipoles.begin(); dit != theDipoles.end(); ++dit) { os << (*dit); } } os << "--------------------------------------------------------------------------------\n"; os << flush; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/DipoleSplittingInfo.cc����������������������������������������0000644�0001750�0001750�00000012456�11754474775�024523� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleSplittingInfo.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipoleIndex and DipoleSplittingInfo classes. // #include "DipoleSplittingInfo.h" #include "ThePEG/Handlers/StandardXComb.h" #include <iterator> using std::ostream_iterator; using namespace Herwig; DipoleIndex::DipoleIndex() : theInitialStateEmitter(false), theInitialStateSpectator(false) {} DipoleIndex::DipoleIndex(tcPDPtr newEmitter, tcPDPtr newSpectator, const PDF& newEmitterPDF, const PDF& newSpectatorPDF) : theEmitterData(newEmitter), theInitialStateEmitter(newEmitterPDF.pdf()), theEmitterPDF(newEmitterPDF), theSpectatorData(newSpectator), theInitialStateSpectator(newSpectatorPDF.pdf()), theSpectatorPDF(newSpectatorPDF) {} bool DipoleIndex::operator ==(const DipoleIndex& x) const { return theEmitterData == x.theEmitterData && theInitialStateEmitter == x.theInitialStateEmitter && theEmitterPDF == x.theEmitterPDF && theSpectatorData == x.theSpectatorData && theInitialStateSpectator == x.theInitialStateSpectator && theSpectatorPDF == x.theSpectatorPDF; } bool DipoleIndex::operator <(const DipoleIndex& x) const { if ( theEmitterData == x.theEmitterData ) { if ( theInitialStateEmitter == x.theInitialStateEmitter ) { if ( theEmitterPDF == x.theEmitterPDF ) { if ( theSpectatorData == x.theSpectatorData ) { if ( theInitialStateSpectator == x.theInitialStateSpectator ) { return theSpectatorPDF < x.theSpectatorPDF; } return theInitialStateSpectator < x.theInitialStateSpectator; } return theSpectatorData < x.theSpectatorData; } return theEmitterPDF < x.theEmitterPDF; } return theInitialStateEmitter < x.theInitialStateEmitter; } return theEmitterData < x.theEmitterData; } void DipoleIndex::swap() { std::swap(theEmitterData,theSpectatorData); std::swap(theInitialStateEmitter,theInitialStateSpectator); std::swap(theEmitterPDF,theSpectatorPDF); } pair<DipoleIndex,DipoleIndex> DipoleIndex::split(tcPDPtr emm) const { DipoleIndex first(emitterData(),emm,emitterPDF(),PDF()); DipoleIndex second(emm,spectatorData(),PDF(),spectatorPDF()); return make_pair(first,second); } void DipoleIndex::print(ostream& os) const { os << "[" << emitterData()->PDGName(); if ( emitterPDF().pdf() ) { os << "<-" << emitterPDF().particle()->PDGName() << "(" << emitterPDF().pdf() << ")"; } os << "," << spectatorData()->PDGName(); if ( spectatorPDF().pdf() ) { os << "<-" << spectatorPDF().particle()->PDGName() << "(" << spectatorPDF().pdf() << ")"; } os << "]"; os << flush; } DipoleSplittingInfo::DipoleSplittingInfo() : theConfiguration(false,false), theScale(0.0*GeV), theEmitterX(1.0), theSpectatorX(1.0), theHardPt(0.0*GeV), theLastPt(0.0*GeV), theLastZ(0.0), theLastPhi(0.0), theLastEmitterZ(0.0), theLastSpectatorZ(0.0), theLastValue(0.0), theStoppedEvolving(false) {} void DipoleSplittingInfo::print(ostream& os) const { os << "--- DipoleSplittingInfo --------------------------------------------------------\n"; os << " index = " << theIndex << "\n"; os << " configuration = (" << theConfiguration.first << "," << theConfiguration.second << ")\n" << " momentum fractions = [" << theEmitterX << "," << theSpectatorX << "]\n" << " generated starting from hard pt/GeV = " << theHardPt/GeV << "\n"; if ( theEmitterData && theEmissionData && theSpectatorData ) { os << " splitting products = [(" << theEmitterData->PDGName() << "," << theEmissionData->PDGName() << ")," << theSpectatorData->PDGName() << "]\n"; } else { os << " splitting products not available.\n"; } if ( theSplittingKinematics ) { os << " kinematic variables associated to '" << theSplittingKinematics->name() << "':\n" << " scale = " << (theScale/GeV) << " pt/GeV = " << (theLastPt/GeV) << " z = " << theLastZ << " phi = " << theLastPhi << "\n" << " emitter z = " << theLastEmitterZ << " spectator z = " << theLastSpectatorZ << "\n" << " splitting kernel value = " << theLastValue << "\n" << " further parameters = "; copy(theLastSplittingParameters.begin(),theLastSplittingParameters.end(),ostream_iterator<double>(os," ")); os << "\n the splitting " << (theStoppedEvolving ? "terminated " : "did not terminate ") << "the evolution\n"; } else { os << " No kinematic variables have been generated yet.\n"; } if ( theEmitter && theSpectator && theSplitEmitter && theSplitSpectator && theEmission ) { os << " the splitting has been performed:\n" << " emitter before emission:\n" << (*theEmitter) << " spectator before emission:\n" << (*theSpectator) << " emitter after emission:\n" << (*theSplitEmitter) << " emission:\n" << (*theEmission) << " spectator after emission:\n" << (*theSplitSpectator); } else { os << " the splitting has not yet been performed.\n"; } os << "--------------------------------------------------------------------------------\n"; os << flush; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/DipoleEvolutionOrdering.h�������������������������������������0000644�0001750�0001750�00000012141�11754474775�025241� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleEvolutionOrdering.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipoleEvolutionOrdering_H #define HERWIG_DipoleEvolutionOrdering_H // // This is the declaration of the DipoleEvolutionOrdering class. // #include "ThePEG/Handlers/HandlerBase.h" #include "Herwig++/DipoleShower/Base/Dipole.h" #include "Herwig++/DipoleShower/Base/DipoleChain.h" #include "Herwig++/DipoleShower/Kernels/DipoleSplittingKernel.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief DipoleEvolutionOrdering defines a particular evolution * algortihm for the dipole shower. * */ class DipoleEvolutionOrdering: public HandlerBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ DipoleEvolutionOrdering(); /** * The destructor. */ virtual ~DipoleEvolutionOrdering(); //@} public: /** * Return true, if this ordering requests * an independent dipole evolution. */ virtual bool independentDipoles() const { return false; } /** * For the given dipole and splitting kernel return * the hard scale. */ virtual Energy hardScale(tPPtr emitter, tPPtr spectator, double emitterX, double spectatorX, const DipoleSplittingKernel&, const DipoleIndex&) const = 0; /** * For the given performed splitting, dipole chain * and dipoles originating from the splitting, set the next * scale. */ virtual void setEvolutionScale(Energy scale, const DipoleSplittingInfo&, DipoleChain&, pair<list<Dipole>::iterator,list<Dipole>::iterator>) const = 0; /** * For the given performed splitting, dipole chain * and dipole taking a recoil, set the next * scale. */ virtual void setEvolutionScale(Energy scale, const DipoleSplittingInfo&, DipoleChain&, list<Dipole>::iterator) const = 0; /** * For the given selected splitting return the evolution scale. */ virtual Energy evolutionScale(const DipoleSplittingInfo&, const DipoleSplittingKernel&) const = 0; /** * Return the maximum pt corresponding to the given * evolution scale. */ virtual Energy maxPt(Energy scale, const DipoleSplittingInfo&, const DipoleSplittingKernel&) const = 0; 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is an abstract class with persistent data. */ static AbstractClassDescription<DipoleEvolutionOrdering> initDipoleEvolutionOrdering; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DipoleEvolutionOrdering & operator=(const DipoleEvolutionOrdering &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DipoleEvolutionOrdering. */ template <> struct BaseClassTrait<Herwig::DipoleEvolutionOrdering,1> { /** Typedef of the first base class of DipoleEvolutionOrdering. */ typedef HandlerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the DipoleEvolutionOrdering class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DipoleEvolutionOrdering> : public ClassTraitsBase<Herwig::DipoleEvolutionOrdering> { /** Return a platform-independent class name */ static string className() { return "Herwig::DipoleEvolutionOrdering"; } /** * The name of a file containing the dynamic library where the class * DipoleEvolutionOrdering is implemented. It may also include several, space-separated, * libraries if the class DipoleEvolutionOrdering depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_DipoleEvolutionOrdering_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/Makefile.in���������������������������������������������������0000644�0001750�0001750�00000046015�11756461676�022327� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Makefile.in generated by automake 1.12 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = DipoleShower/Base DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/fastjet.m4 \ $(top_srcdir)/m4/herwig.m4 $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/Config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libHwDipoleShowerBase_la_LIBADD = am_libHwDipoleShowerBase_la_OBJECTS = DipoleSplittingInfo.lo Dipole.lo \ DipoleChain.lo DipoleEventRecord.lo \ DipoleSplittingGenerator.lo DipoleSplittingReweight.lo \ DipoleEvolutionOrdering.lo DipoleChainOrdering.lo libHwDipoleShowerBase_la_OBJECTS = \ $(am_libHwDipoleShowerBase_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/Config depcomp = $(SHELL) $(top_srcdir)/Config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libHwDipoleShowerBase_la_SOURCES) DIST_SOURCES = $(libHwDipoleShowerBase_la_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_CFLAGS = @AM_CFLAGS@ AM_CPPFLAGS = @AM_CPPFLAGS@ AM_CXXFLAGS = @AM_CXXFLAGS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AM_FCFLAGS = @AM_FCFLAGS@ AM_FFLAGS = @AM_FFLAGS@ AM_LDFLAGS = @AM_LDFLAGS@ APPLE_DSO_FLAGS = @APPLE_DSO_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BOOSTINCLUDE = @BOOSTINCLUDE@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CREATE_FASTJET = @CREATE_FASTJET@ CREATE_HEPMC = @CREATE_HEPMC@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FASTJETINCLUDE = @FASTJETINCLUDE@ FASTJETLIBS = @FASTJETLIBS@ FC = @FC@ FCFLAGS = @FCFLAGS@ FCLIBS = @FCLIBS@ FFLAGS = @FFLAGS@ FGREP = @FGREP@ FLIBS = @FLIBS@ GREP = @GREP@ GSLINCLUDE = @GSLINCLUDE@ GSLLIBS = @GSLLIBS@ HERWIG_PDF_DEFAULT = @HERWIG_PDF_DEFAULT@ HERWIG_PDF_NLO = @HERWIG_PDF_NLO@ HERWIG_PDF_POMERON = @HERWIG_PDF_POMERON@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LOAD_ADD = @LOAD_ADD@ LOAD_FASTJET = @LOAD_FASTJET@ LOAD_LEPTOQUARKS = @LOAD_LEPTOQUARKS@ LOAD_NMSSM = @LOAD_NMSSM@ LOAD_RS = @LOAD_RS@ LOAD_SEXTET = @LOAD_SEXTET@ LOAD_SUSY = @LOAD_SUSY@ LOAD_TRP = @LOAD_TRP@ LOAD_TTBA = @LOAD_TTBA@ LOAD_UED = @LOAD_UED@ LOAD_ZPRIME = @LOAD_ZPRIME@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERL = @PERL@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHARED_FLAG = @SHARED_FLAG@ SHELL = @SHELL@ STRIP = @STRIP@ THEPEGINCLUDE = @THEPEGINCLUDE@ THEPEGLDFLAGS = @THEPEGLDFLAGS@ THEPEGLIB = @THEPEGLIB@ THEPEGPATH = @THEPEGPATH@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ ac_ct_FC = @ac_ct_FC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ fjconfig = @fjconfig@ have_svnversion = @have_svnversion@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libHwDipoleShowerBase.la libHwDipoleShowerBase_la_SOURCES = \ DipoleSplittingInfo.h DipoleSplittingInfo.cc \ Dipole.h Dipole.cc \ DipoleChain.h DipoleChain.cc \ DipoleEventRecord.h DipoleEventRecord.cc \ DipoleSplittingGenerator.h DipoleSplittingGenerator.cc \ DipoleSplittingReweight.h DipoleSplittingReweight.cc \ DipoleEvolutionOrdering.h DipoleEvolutionOrdering.cc \ DipoleChainOrdering.h DipoleChainOrdering.cc all: all-am .SUFFIXES: .SUFFIXES: .cc .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu DipoleShower/Base/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu DipoleShower/Base/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libHwDipoleShowerBase.la: $(libHwDipoleShowerBase_la_OBJECTS) $(libHwDipoleShowerBase_la_DEPENDENCIES) $(EXTRA_libHwDipoleShowerBase_la_DEPENDENCIES) $(AM_V_CXXLD)$(CXXLINK) $(libHwDipoleShowerBase_la_OBJECTS) $(libHwDipoleShowerBase_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Dipole.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipoleChain.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipoleChainOrdering.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipoleEventRecord.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipoleEvolutionOrdering.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipoleSplittingGenerator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipoleSplittingInfo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DipoleSplittingReweight.Plo@am__quote@ .cc.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \ distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/DipoleSplittingReweight.cc������������������������������������0000644�0001750�0001750�00000003165�11754474775�025403� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleSplittingReweight.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipoleSplittingReweight class. // #include "DipoleSplittingReweight.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig++/DipoleShower/DipoleShowerHandler.h" using namespace Herwig; DipoleSplittingReweight::DipoleSplittingReweight() : HandlerBase() {} DipoleSplittingReweight::~DipoleSplittingReweight() {} // If needed, insert default implementations of virtual function defined // in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs). void DipoleSplittingReweight::persistentOutput(PersistentOStream & ) const { } void DipoleSplittingReweight::persistentInput(PersistentIStream &, int) { } AbstractClassDescription<DipoleSplittingReweight> DipoleSplittingReweight::initDipoleSplittingReweight; // Definition of the static class description member. void DipoleSplittingReweight::Init() { static ClassDocumentation<DipoleSplittingReweight> documentation ("DipoleSplittingReweight is used by the dipole shower " "to reweight splittings from a given dipole splitting kernel."); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/Dipole.cc�����������������������������������������������������0000644�0001750�0001750�00000020631�11754474775�022003� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Dipole.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the Dipole class. // #include "Dipole.h" #include "Herwig++/DipoleShower/Utility/DipolePartonSplitter.h" using namespace Herwig; Dipole::Dipole() : theParticles(), thePDFs(), theFractions(1.0,1.0), theIndices(), theScales(0.0*GeV,0.0*GeV) {} Dipole::Dipole(const pair<PPtr,PPtr>& newParticles, const pair<PDF,PDF>& newPDFs, pair<double,double> newFractions) : theParticles(newParticles), thePDFs(newPDFs), theFractions(newFractions), theIndices(), theScales(sqrt(newParticles.first->scale()),sqrt(newParticles.second->scale())) { theIndices.first = DipoleIndex(theParticles.first->dataPtr(), theParticles.second->dataPtr(), newPDFs.first,newPDFs.second); theIndices.second = theIndices.first; theIndices.second.swap(); } void Dipole::update() { theIndices.first = DipoleIndex(theParticles.first->dataPtr(), theParticles.second->dataPtr(), thePDFs.first,thePDFs.second); theIndices.second = theIndices.first; theIndices.second.swap(); assert(DipolePartonSplitter::colourConnected(theParticles.first,theParticles.second)); } pair<Dipole,Dipole> Dipole::split (DipoleSplittingInfo& dsplit, bool colourSpectator) const { // check contracts assert(dsplit.splittingKinematics()); assert(dsplit.emitterData() && dsplit.emissionData() && dsplit.spectatorData()); if ( !colourSpectator ) { assert(index(dsplit.configuration()) == dsplit.index()); assert(emitterX(dsplit.configuration()) == dsplit.emitterX()); assert(spectatorX(dsplit.configuration()) == dsplit.spectatorX()); } else { assert(emitterX(dsplit.configuration()) == dsplit.emitterX()); assert(emitterPDF(dsplit.configuration()) == dsplit.index().emitterPDF()); assert((dsplit.configuration().first ? theParticles.first->dataPtr() : theParticles.second->dataPtr()) == dsplit.index().emitterData()); } // generate full kinematics dsplit.splittingKinematics()->generateKinematics(emitter(dsplit.configuration())->momentum(), spectator(dsplit.configuration())->momentum(), dsplit); tPPtr oldSpectator = spectator(dsplit.configuration()); PPtr newSpectator; // get a new spectator if ( !colourSpectator ) { newSpectator = dsplit.spectatorData()->produceParticle(dsplit.splittingKinematics()->lastSpectatorMomentum()); DipolePartonSplitter::change(oldSpectator,newSpectator,spectatorPDF(dsplit.configuration()).pdf()); dsplit.spectator(oldSpectator); dsplit.splitSpectator(newSpectator); } else { newSpectator = oldSpectator; } // perform the splitting tPPtr oldEmitter = emitter(dsplit.configuration()); PPtr newEmitter = dsplit.emitterData()->produceParticle(dsplit.splittingKinematics()->lastEmitterMomentum()); PPtr newEmission = dsplit.emissionData()->produceParticle(dsplit.splittingKinematics()->lastEmissionMomentum()); newEmitter->scale(sqr(dsplit.lastPt())); newEmission->scale(sqr(dsplit.lastPt())); newSpectator->scale(oldSpectator->scale()); DipolePartonSplitter::split(oldEmitter,newEmitter,newEmission, oldSpectator,emitterPDF(dsplit.configuration()).pdf()); dsplit.emitter(oldEmitter); dsplit.splitEmitter(newEmitter); dsplit.emission(newEmission); double emitter_x = emitterX(dsplit.configuration()) / dsplit.lastEmitterZ(); double spectator_x = spectatorX(dsplit.configuration()) / dsplit.lastSpectatorZ(); PDF emitter_pdf = emitterPDF(dsplit.configuration()); PDF spectator_pdf = spectatorPDF(dsplit.configuration()); // now check how we need to arrange the children // assignment is 0 = emitter, 1 = emission, 2 = spectator int left = 0; int middle = 1; int right = 2; if (dsplit.configuration().first) { // spectator is unique right = 2; // middle is the one connecting to the spectator if (DipolePartonSplitter::colourConnected(newSpectator,newEmission)) { middle = 1; left = 0; } else { assert(DipolePartonSplitter::colourConnected(newSpectator,newEmitter)); middle = 0; left = 1; } } else { // spectator is unique left = 2; // middle is the one connecting to the spectator if (DipolePartonSplitter::colourConnected(newSpectator,newEmission)) { middle = 1; right = 0; } else { assert(DipolePartonSplitter::colourConnected(newSpectator,newEmitter)); middle = 0; right = 1; } } pair<PPtr,PPtr> left_particles; pair<PPtr,PPtr> right_particles; pair<PDF,PDF> left_pdfs; pair<PDF,PDF> right_pdfs; pair<double,double> left_fractions; pair<double,double> right_fractions; switch (left) { case 0: left_particles.first = newEmitter; left_pdfs.first = emitter_pdf; left_fractions.first = emitter_x; break; case 1: left_particles.first = newEmission; left_pdfs.first = PDF(); left_fractions.first = 1.; break; case 2: left_particles.first = newSpectator; left_pdfs.first = spectator_pdf; left_fractions.first = spectator_x; break; } switch (middle) { case 0: left_particles.second = newEmitter; left_pdfs.second = emitter_pdf; left_fractions.second = emitter_x; break; case 1: left_particles.second = newEmission; left_pdfs.second = PDF(); left_fractions.second = 1.; break; case 2: left_particles.second = newSpectator; left_pdfs.second = spectator_pdf; left_fractions.second = spectator_x; break; } right_particles.first = left_particles.second; right_pdfs.first = left_pdfs.second; right_fractions.first = left_fractions.second; switch (right) { case 0: right_particles.second = newEmitter; right_pdfs.second = emitter_pdf; right_fractions.second = emitter_x; break; case 1: right_particles.second = newEmission; right_pdfs.second = PDF(); right_fractions.second = 1.; break; case 2: right_particles.second = newSpectator; right_pdfs.second = spectator_pdf; right_fractions.second = spectator_x; break; } return make_pair(Dipole(left_particles,left_pdfs,left_fractions), Dipole(right_particles,right_pdfs,right_fractions)); } void Dipole::recoil (DipoleSplittingInfo& dsplit) { // check contracts assert(dsplit.splittingKinematics()); assert(dsplit.spectatorData()); assert(spectatorX(dsplit.configuration()) == dsplit.spectatorX()); assert(spectatorPDF(dsplit.configuration()) == dsplit.index().spectatorPDF()); assert((dsplit.configuration().first ? theParticles.first->dataPtr() : theParticles.second->dataPtr()) == dsplit.index().spectatorData()); tPPtr oldSpectator = spectator(dsplit.configuration()); PPtr newSpectator = dsplit.spectatorData()->produceParticle(dsplit.splittingKinematics()->lastSpectatorMomentum()); DipolePartonSplitter::change(oldSpectator,newSpectator,spectatorPDF(dsplit.configuration()).pdf()); newSpectator->scale(sqr(dsplit.lastPt())); dsplit.spectator(oldSpectator); dsplit.splitSpectator(newSpectator); if ( dsplit.configuration().first ) { theParticles.second = newSpectator; theFractions.second /= dsplit.lastSpectatorZ(); } else { theParticles.first = newSpectator; theFractions.first /= dsplit.lastSpectatorZ(); } } void Dipole::print(ostream& os) const { os << "--- "; if ( !thePDFs.first.pdf() && !thePDFs.second.pdf() ) os << "FF"; else if ( thePDFs.first.pdf() && !thePDFs.second.pdf() ) os << "IF"; else if ( !thePDFs.first.pdf() && thePDFs.second.pdf() ) os << "FI"; else os << "II"; os << " Dipole ------------------------------------------------------------------\n"; if ( !theParticles.first || !theParticles.second ) { os << " *** This Dipole has not been setup properly. ***\n"; } else { os << " particles\n" << *theParticles.first << *theParticles.second; os << " scales/GeV = (" << (theScales.first/GeV) << "," << (theScales.second/GeV) << ") fractions = (" << theFractions.first << "," << theFractions.second << ")\n"; } os << "--------------------------------------------------------------------------------\n"; os << flush; } �������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/Dipole.h������������������������������������������������������0000644�0001750�0001750�00000013177�11754474775�021654� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // Dipole.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_Dipole_H #define HERWIG_Dipole_H // // This is the declaration of the Dipole class. // #include "Herwig++/DipoleShower/Kinematics/DipoleSplittingKinematics.h" #include "Herwig++/DipoleShower/Base/DipoleSplittingInfo.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief The Dipole class is used by the dipole shower to * represent a dipole of two coloured partons. * */ class Dipole { public: /** * The default constructor */ Dipole(); /** * The standard constructor */ Dipole(const pair<PPtr,PPtr>& newParticles, const pair<PDF,PDF>& newPDFs, pair<double,double> newFractions); public: /** * Get the left particle. */ tPPtr leftParticle() const { return theParticles.first; } /** * Get the right particle. */ tPPtr rightParticle() const { return theParticles.second; } /** * Get the left PDF. */ const PDF& leftPDF() const { return thePDFs.first; } /** * Get the right PDF. */ const PDF& rightPDF() const { return thePDFs.second; } /** * Get the left fraction. */ double leftFraction() const { return theFractions.first; } /** * Get the right fraction. */ double rightFraction() const { return theFractions.second; } /** * Set the left particle. */ void leftParticle(PPtr p) { theParticles.first = p; } /** * Set the right particle. */ void rightParticle(PPtr p) { theParticles.second = p; } /** * Set the left PDF */ void leftPDF(const PDF& p) { thePDFs.first = p; } /** * Set the right PDF */ void rightPDF(const PDF& p) { thePDFs.second = p; } /** * Set the momentum fraction for the left particle. */ void leftFraction(double x) { theFractions.first = x; } /** * Set the momentum fraction for the right particle. */ void rightFraction(double x) { theFractions.second = x; } /** * Get the scale for the left particle. */ Energy leftScale() const { return theScales.first; } /** * Set the scale for the left particle. */ void leftScale(Energy s) { theScales.first = s; } /** * Get the scale for the right particle. */ Energy rightScale() const { return theScales.second; } /** * Set the scale for the right particle. */ void rightScale(Energy s) { theScales.second = s; } /** * Update information, if modified. */ void update(); public: /** * Return the dipole index for the selected * emitter-spectator assignment. */ const DipoleIndex& index(pair<bool,bool> conf) const { return conf.first ? theIndices.first : theIndices.second; } /** * Return the emitter particle for the * selected configuration. */ tPPtr emitter(pair<bool,bool> conf) const { return conf.first ? theParticles.first : theParticles.second; } /** * Return the spectator particle for the * selected configuration. */ tPPtr spectator(pair<bool,bool> conf) const { return conf.first ? theParticles.second : theParticles.first; } /** * Return the scale associated to the emitter * for the selected configuration. */ Energy emitterScale(pair<bool,bool> conf) const { return conf.first ? theScales.first : theScales.second; } /** * Set the scale associated to the emitter * for the selected configuration. */ void emitterScale(pair<bool,bool> conf, Energy scale) { (conf.first ? theScales.first : theScales.second) = scale; } /** * Return the momentum fraction of the emitter * for the selected configuration. */ double emitterX(pair<bool,bool> conf) const { return conf.first ? theFractions.first : theFractions.second; } /** * Return the PDF of the emitter * for the selected configuration. */ const PDF& emitterPDF(pair<bool,bool> conf) const { return conf.first ? thePDFs.first : thePDFs.second; } /** * Return the momentum fraction of the spectator * for the selected configuration. */ double spectatorX(pair<bool,bool> conf) const { return conf.first ? theFractions.second : theFractions.first; } /** * Return the PDF of the spectator * for the selected configuration. */ const PDF& spectatorPDF(pair<bool,bool> conf) const { return conf.first ? thePDFs.second : thePDFs.first; } public: /** * Split this dipole according to the given splitting. * If colourSpectator is true, do not change the spectator. */ pair<Dipole,Dipole> split (DipoleSplittingInfo& dsplit, bool colourSpectator) const; /** * Produce a new spectator according to the * given splitting. */ void recoil (DipoleSplittingInfo& dsplit); public: /** * Put information to ostream */ void print(ostream&) const; private: /** * The particles forming the dipole */ pair<PPtr,PPtr> theParticles; /** * The PDF objects. */ pair<PDF,PDF> thePDFs; /** * The momentum fractions associated * to the incoming particles */ pair<double,double> theFractions; /** * The dipole indices, if the first or second particle * is considered as emitter. */ pair<DipoleIndex,DipoleIndex> theIndices; /** * The scale associated to the first and second * particle, respectively. */ pair<Energy,Energy> theScales; }; inline ostream& operator << (ostream& os, const Dipole& di) { di.print(os); return os; } } #endif /* HERWIG_Dipole_H */ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/DipoleEventRecord.cc������������������������������������������0000644�0001750�0001750�00000057373�11754474775�024161� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleEventRecord.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // // // This is the implementation of the non-inlined, non-templated member // functions of the DipoleEventRecord class. // #include "DipoleEventRecord.h" #include "Herwig++/DipoleShower/Utility/DipolePartonSplitter.h" #include "Herwig++/Shower/ShowerHandler.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/PDF/PartonExtractor.h" #include <boost/utility.hpp> using boost::next; using boost::prior; #include <algorithm> using namespace Herwig; PList DipoleEventRecord::colourOrdered() { PList colour_ordered; size_t done_size = outgoing().size(); if (incoming().first->coloured()) ++done_size; if (incoming().second->coloured()) ++done_size; while (colour_ordered.size() != done_size) { PPtr current; // start with singlets, as long as we have some if (find(colour_ordered.begin(),colour_ordered.end(),incoming().first) == colour_ordered.end() && incoming().first->coloured()) { if (!incoming().first->hasColour() || !incoming().first->hasAntiColour()) current = incoming().first; } if (!current) { for (PList::iterator p = outgoing().begin(); p != outgoing().end(); ++p) { if (find(colour_ordered.begin(),colour_ordered.end(),*p) == colour_ordered.end() && (**p).coloured()) { if (!(**p).hasColour() || !(**p).hasAntiColour()) { current = *p; break; } } } } if (!current) { if (find(colour_ordered.begin(),colour_ordered.end(),incoming().second) == colour_ordered.end() && incoming().second->coloured()) { if (!incoming().second->hasColour() || !incoming().second->hasAntiColour()) current = incoming().second; } } // then go on with anything else if (!current) { if (find(colour_ordered.begin(),colour_ordered.end(),incoming().first) == colour_ordered.end() && incoming().first->coloured()) { current = incoming().first; } } if (!current) { for (PList::iterator p = outgoing().begin(); p != outgoing().end(); ++p) { if (find(colour_ordered.begin(),colour_ordered.end(),*p) == colour_ordered.end() && (**p).coloured()) { current = *p; break; } } } if (!current) { if (find(colour_ordered.begin(),colour_ordered.end(),incoming().second) == colour_ordered.end() && incoming().second->coloured()) { current = incoming().second; } } assert(current); PPtr next; Ptr<ColourLine>::ptr walk_the_line; while (true) { if (!walk_the_line) { if (current->hasColour()) { walk_the_line = current->colourLine(); } else if (current->hasAntiColour()) { walk_the_line = current->antiColourLine(); } } if (!next) for (tPVector::const_iterator p = walk_the_line->coloured().begin(); p != walk_the_line->coloured().end(); ++p) { if (*p == current) continue; if (find(outgoing().begin(),outgoing().end(),*p) != outgoing().end() || *p == incoming().first || *p == incoming().second) { next = *p; if (next->hasColour() && next->hasAntiColour()) { walk_the_line = walk_the_line == next->colourLine() ? next->antiColourLine() : next->colourLine(); } break; } } if (!next) for (tPVector::const_iterator p = walk_the_line->antiColoured().begin(); p != walk_the_line->antiColoured().end(); ++p) { if (*p == current) continue; if (find(outgoing().begin(),outgoing().end(),*p) != outgoing().end() || *p == incoming().first || *p == incoming().second) { next = *p; if (next->hasColour() && next->hasAntiColour()) { walk_the_line = walk_the_line == next->colourLine() ? next->antiColourLine() : next->colourLine(); } break; } } assert(next); colour_ordered.push_back(current); current = next; // done if next is not a gluon or next is already in colour_ordered if ((current->hasColour() && !current->hasAntiColour()) || (!current->hasColour() && current->hasAntiColour())) { colour_ordered.push_back(current); break; } if (next->hasColour() && next->hasAntiColour()) { if (find(colour_ordered.begin(),colour_ordered.end(),next) != colour_ordered.end()) break; } next = PPtr(); } } return colour_ordered; } void DipoleEventRecord::popChain() { assert(!theChains.empty()); theDoneChains.push_back(DipoleChain()); theDoneChains.back().dipoles().splice(theDoneChains.back().dipoles().begin(),theChains.front().dipoles()); theChains.pop_front(); } void DipoleEventRecord::popChain(list<DipoleChain>::iterator ch) { assert(!theChains.empty()); theDoneChains.push_back(DipoleChain()); theDoneChains.back().dipoles().splice(theDoneChains.back().dipoles().begin(),ch->dipoles()); theChains.erase(ch); } void DipoleEventRecord::popChains(const list<list<DipoleChain>::iterator>& chs) { assert(!theChains.empty()); for ( list<list<DipoleChain>::iterator>::const_iterator ch = chs.begin(); ch != chs.end(); ++ch ) { theDoneChains.push_back(DipoleChain()); theDoneChains.back().dipoles().splice(theDoneChains.back().dipoles().begin(),(*ch)->dipoles()); } for ( list<list<DipoleChain>::iterator>::const_iterator ch = chs.begin(); ch != chs.end(); ++ch ) theChains.erase(*ch); } void DipoleEventRecord::findChains(const PList& ordered) { theChains.clear(); theDoneChains.clear(); DipoleChain current_chain; if (ordered.size() > 2) { for (PList::const_iterator p = ordered.begin(); p != ordered.end(); ++p) { PList::const_iterator next_it = p != --ordered.end() ? next(p) : ordered.begin(); if (!DipolePartonSplitter::colourConnected(*p,*next_it)) { current_chain.check(); theChains.push_back(current_chain); current_chain.dipoles().clear(); continue; } pair<bool,bool> initial_state (false,false); initial_state.first = (*p == incoming().first || *p == incoming().second); initial_state.second = (*next_it == incoming().first || *next_it == incoming().second); pair<int,int> which_in (-1,-1); if (initial_state.first) which_in.first = *p == incoming().first ? 0 : 1; if (initial_state.second) which_in.second = *next_it == incoming().first ? 0 : 1; pair<double,double> xs (1.,1.); if (initial_state.first) xs.first = *p == incoming().first ? fractions().first : fractions().second; if (initial_state.second) xs.second = *next_it == incoming().first ? fractions().first : fractions().second; pair<PDF,PDF> pdf; if ( which_in.first == 0 ) pdf.first = pdfs().first; else if ( which_in.first == 1 ) pdf.first = pdfs().second; if ( which_in.second == 0 ) pdf.second = pdfs().first; else if ( which_in.second == 1 ) pdf.second = pdfs().second; current_chain.dipoles().push_back(Dipole(make_pair(*p,*next_it),pdf,xs)); } } else { // treat 2 -> singlet, singlet -> 2 and 1 + singlet -> 1 + singlet special // to prevent duplicate dipole assert(DipolePartonSplitter::colourConnected(ordered.front(),ordered.back())); pair<bool,bool> initial_state (false,false); initial_state.first = (ordered.front() == incoming().first || ordered.front() == incoming().second); initial_state.second = (ordered.back() == incoming().first || ordered.back() == incoming().second); pair<int,int> which_in (-1,-1); if (initial_state.first) which_in.first = ordered.front() == incoming().first ? 0 : 1; if (initial_state.second) which_in.second = ordered.back() == incoming().first ? 0 : 1; pair<double,double> xs (1.,1.); if (initial_state.first) xs.first = ordered.front() == incoming().first ? fractions().first : fractions().second; if (initial_state.second) xs.second = ordered.back() == incoming().first ? fractions().first : fractions().second; pair<PDF,PDF> pdf; if ( which_in.first == 0 ) pdf.first = pdfs().first; else if ( which_in.first == 1 ) pdf.first = pdfs().second; if ( which_in.second == 0 ) pdf.second = pdfs().first; else if ( which_in.second == 1 ) pdf.second = pdfs().second; current_chain.dipoles().push_back(Dipole(make_pair(ordered.front(),ordered.back()),pdf,xs)); } if (!current_chain.dipoles().empty()) { current_chain.check(); theChains.push_back(current_chain); } } void DipoleEventRecord::getAll(const ParticleVector& childs, set<PPtr>& hardSet, set<PPtr>& outgoingSet) { for ( ParticleVector::const_iterator p = childs.begin(); p != childs.end(); ++p ) { if ( ShowerHandler::currentHandler()->eventHandler()->currentCollision()->isRemnant(*p) ) continue; if ( (**p).children().empty() ) { if ( (**p).coloured() && outgoingSet.find(*p) == outgoingSet.end() ) outgoingSet.insert(*p); else if ( !(**p).coloured() && hardSet.find(*p) == hardSet.end() ) hardSet.insert(*p); } else { getAll((**p).children(),hardSet,outgoingSet); } } } // shamelessly stolen from ShowerTree void DipoleEventRecord::colourIsolate(const vector<PPtr> & original, const vector<PPtr> & copy) { // vectors must have same size assert(original.size()==copy.size()); // create a temporary map with all the particles to make looping easier vector<PPair> particles; particles.reserve(original.size()); for(unsigned int ix=0;ix<original.size();++ix) particles.push_back(make_pair(copy[ix],original[ix])); // reset the colour of the copies vector<PPair>::const_iterator cit,cjt; for(cit=particles.begin();cit!=particles.end();++cit) if((*cit).first->colourInfo()) (*cit).first->colourInfo(new_ptr(ColourBase())); map<tColinePtr,tColinePtr> cmap; // make the colour connections of the copies for(cit=particles.begin();cit!=particles.end();++cit) { ColinePtr c1,newline; // if particle has a colour line if((*cit).second->colourLine()&&!(*cit).first->colourLine()) { c1=(*cit).second->colourLine(); newline=ColourLine::create((*cit).first); cmap[c1]=newline; for(cjt=particles.begin();cjt!=particles.end();++cjt) { if(cjt==cit) continue; if((*cjt).second->colourLine()==c1) newline->addColoured((*cjt).first); else if((*cjt).second->antiColourLine()==c1) newline->addColoured((*cjt).first,true); } } // if anticolour line if((*cit).second->antiColourLine()&&!(*cit).first->antiColourLine()) { c1=(*cit).second->antiColourLine(); newline=ColourLine::create((*cit).first,true); cmap[c1]=newline; for(cjt=particles.begin();cjt!=particles.end();++cjt) { if(cjt==cit) continue; if((*cjt).second->colourLine()==c1) newline->addColoured((*cjt).first); else if((*cjt).second->antiColourLine()==c1) newline->addColoured((*cjt).first,true); } } } for ( map<tColinePtr,tColinePtr>::const_iterator c = cmap.begin(); c != cmap.end(); ++c ) { theColourLines[c->second] = c->first; } // sort out sinks and sources for(cit=particles.begin();cit!=particles.end();++cit) { tColinePtr cline[2]; tColinePair cpair; for(unsigned int ix=0;ix<4;++ix) { cline[0] = ix<2 ? cit->second->colourLine() : cit->second->antiColourLine(); cline[1] = ix<2 ? cit->first ->colourLine() : cit->first ->antiColourLine(); if(cline[0]) { switch (ix) { case 0: case 2: cpair = cline[0]->sinkNeighbours(); break; case 1: case 3: cpair = cline[0]->sourceNeighbours(); break; }; } else { cpair = make_pair(tColinePtr(),tColinePtr()); } if(cline[0]&&cpair.first) { map<tColinePtr,tColinePtr>::const_iterator mit[2] = {cmap.find(cpair.first),cmap.find(cpair.second)}; if(mit[0]!=cmap.end()&&mit[1]!=cmap.end()) { if(ix==0||ix==2) { cline[1]->setSinkNeighbours(mit[0]->second,mit[1]->second); } else { cline[1]->setSourceNeighbours(mit[0]->second,mit[1]->second); } } } } } } // shamelessly stolen from ShowerTree void DipoleEventRecord::updateColour(PPtr particle) { // if attached to a colour line if(particle->colourLine()) { bool reset=false; // if colour line from hard process reconnect if(theColourLines.find(particle->colourLine())!=theColourLines.end()) { ColinePtr c1=particle->colourLine(); c1->removeColoured(particle); theColourLines[c1]->addColoured(particle); reset=true; } // ensure properly connected to the line if(!reset) { ColinePtr c1=particle->colourLine(); c1->removeColoured(particle); c1->addColoured(particle); } } // if attached to an anticolour line if(particle->antiColourLine()) { bool reset=false; // if anti colour line from hard process reconnect if(theColourLines.find(particle->antiColourLine())!=theColourLines.end()) { ColinePtr c1=particle->antiColourLine(); c1->removeColoured(particle,true); theColourLines[c1]->addColoured(particle,true); reset=true; } if(!reset) { ColinePtr c1=particle->antiColourLine(); c1->removeColoured(particle,true); c1->addColoured(particle,true); } } for ( ParticleVector::const_iterator c = particle->children().begin(); c != particle->children().end(); ++c ) { updateColour(*c); } } const map<PPtr,PPtr>& DipoleEventRecord::prepare(tSubProPtr subpro, tStdXCombPtr xc, const pair<PDF,PDF>& pdf, bool dipoles) { theSubProcess = subpro; theOutgoing.clear(); theHard.clear(); theColourLines.clear(); theOriginals.clear(); PPair in = subpro->incoming(); assert(ShowerHandler::currentHandler()); tPPair beam = ShowerHandler::currentHandler()->generator()->currentEvent()->incoming(); // don't take these from the XComb as it may be null pair<double,double> xs; Direction<0> dir(true); xs.first = in.first->momentum().dirPlus()/beam.first->momentum().dirPlus(); dir.reverse(); xs.second = in.second->momentum().dirPlus()/beam.second->momentum().dirPlus(); theXComb = xc; thePDFs = pdf; theFractions = xs; set<PPtr> allHard; set<PPtr> allOutgoing; getAll(in.first->children(),allHard,allOutgoing); getAll(in.second->children(),allHard,allOutgoing); vector<PPtr> original; vector<PPtr> copies; original.push_back(in.first); original.push_back(in.second); copy(allOutgoing.begin(),allOutgoing.end(),back_inserter(original)); for ( vector<PPtr>::const_iterator p = original.begin(); p != original.end(); ++p ) { PPtr copy = new_ptr(Particle(**p)); copies.push_back(copy); theOriginals[*p] = copy; } colourIsolate(original,copies); theIncoming.first = copies[0]; ParticleVector children = theIncoming.first->children(); for ( ParticleVector::const_iterator c = children.begin(); c != children.end(); ++c ) theIncoming.first->abandonChild(*c); theIncoming.second = copies[1]; children = theIncoming.second->children(); for ( ParticleVector::const_iterator c = children.begin(); c != children.end(); ++c ) theIncoming.second->abandonChild(*c); copy(copies.begin()+2,copies.end(),back_inserter(theOutgoing)); for ( set<PPtr>::const_iterator p = allHard.begin(); p != allHard.end(); ++p ) { PPtr copy = new_ptr(Particle(**p)); theHard.push_back(copy); theOriginals[*p] = copy; } if ( dipoles ) { PList cordered = colourOrdered(); findChains(cordered); } PList::const_iterator XFirst, XLast; if ( !theHard.empty() ) { XFirst = theHard.begin(); XLast = theHard.end(); } else { XFirst = theOutgoing.begin(); XLast = theOutgoing.end(); } thePX = (**XFirst).momentum(); ++XFirst; for ( ; XFirst != XLast; ++XFirst ) thePX += (**XFirst).momentum(); return theOriginals; } void DipoleEventRecord::clear() { theSubProcess = SubProPtr(); theXComb = StdXCombPtr(); thePDFs = pair<PDF,PDF>(); theIncoming = PPair(); theOutgoing.clear(); theIntermediates.clear(); theHard.clear(); theChains.clear(); theDoneChains.clear(); theOriginals.clear(); theColourLines.clear(); } void DipoleEventRecord::update(DipoleSplittingInfo& dsplit) { if ( incoming().first == dsplit.emitter() ) { theIntermediates.push_back(dsplit.emitter()); theIncoming.first = dsplit.splitEmitter(); theFractions.first /= dsplit.lastEmitterZ(); } else if ( incoming().first == dsplit.spectator() ) { theIntermediates.push_back(dsplit.spectator()); theIncoming.first = dsplit.splitSpectator(); theFractions.first /= dsplit.lastSpectatorZ(); } if ( incoming().second == dsplit.emitter() ) { theIntermediates.push_back(dsplit.emitter()); theIncoming.second = dsplit.splitEmitter(); theFractions.second /= dsplit.lastEmitterZ(); } else if ( incoming().second == dsplit.spectator() ) { theIntermediates.push_back(dsplit.spectator()); theIncoming.second = dsplit.splitSpectator(); theFractions.second /= dsplit.lastSpectatorZ(); } PList::iterator pos; pos = find(theOutgoing.begin(), theOutgoing.end(), dsplit.emitter()); if (pos != theOutgoing.end()) { theIntermediates.push_back(*pos); *pos = dsplit.splitEmitter(); } pos = find(theOutgoing.begin(), theOutgoing.end(), dsplit.spectator()); if (pos != theOutgoing.end()) { theIntermediates.push_back(*pos); *pos = dsplit.splitSpectator(); } theOutgoing.push_back(dsplit.emission()); if (dsplit.splittingKinematics()->doesTransform()) { for (PList::iterator p = theIntermediates.begin(); p != theIntermediates.end(); ++p) { (**p).set5Momentum(dsplit.splittingKinematics()->transform((**p).momentum())); } for (PList::iterator h = theHard.begin(); h != theHard.end(); ++h) { (**h).set5Momentum(dsplit.splittingKinematics()->transform((**h).momentum())); } for (PList::iterator p = theOutgoing.begin(); p != theOutgoing.end(); ++p) if ((*p) != dsplit.splitEmitter() && (*p) != dsplit.splitSpectator() && (*p) != dsplit.emission()) (**p).set5Momentum(dsplit.splittingKinematics()->transform((**p).momentum())); } } void DipoleEventRecord::split(list<Dipole>::iterator dip, list<DipoleChain>::iterator ch, DipoleSplittingInfo& dsplit, pair<list<Dipole>::iterator,list<Dipole>::iterator>& childIterators, DipoleChain*& firstChain, DipoleChain*& secondChain, bool colourSpectator) { static DipoleChain empty; pair<Dipole,Dipole> children = dip->split(dsplit,colourSpectator); list<Dipole>::iterator breakup = ch->insertSplitting(dip,children,childIterators); if ( breakup == ch->dipoles().end() ) { firstChain = &(*ch); secondChain = &empty; } else { DipoleChain other; other.dipoles().splice(other.dipoles().end(),ch->dipoles(),breakup,ch->dipoles().end()); chains().push_back(other); firstChain = &(*ch); secondChain = &(chains().back()); // explicitly fix iterators in case the splice implementation // at hand does invalidate iterators (the SGI docu says, it doesn't, // but it seems that this behaviour is not part of the standard) childIterators.first = --firstChain->dipoles().end(); childIterators.second = secondChain->dipoles().begin(); } if ( !colourSpectator ) update(dsplit); // otherwise done by recoil(...) } void DipoleEventRecord::recoil(list<Dipole>::iterator dip, list<DipoleChain>::iterator ch, DipoleSplittingInfo& dsplit) { dip->recoil(dsplit); ch->updateDipole(dip); update(dsplit); } list<pair<list<Dipole>::iterator,list<DipoleChain>::iterator> > DipoleEventRecord::inDipoles() { list<pair<list<Dipole>::iterator,list<DipoleChain>::iterator> > res; for ( list<DipoleChain>::iterator chit = theDoneChains.begin(); chit != theDoneChains.end(); ++chit ) { bool haveOne = false; for ( list<Dipole>::iterator dit = chit->dipoles().begin(); dit != chit->dipoles().end(); ++dit ) { if ( dit->leftPDF().pdf() || dit->rightPDF().pdf() ) { haveOne = true; break; } } if ( haveOne ) { theChains.splice(theChains.begin(),theDoneChains,chit); for ( list<Dipole>::iterator dit = theChains.front().dipoles().begin(); dit != theChains.front().dipoles().end(); ++dit ) { if ( dit->leftPDF().pdf() || dit->rightPDF().pdf() ) { res.push_back(make_pair(dit,theChains.begin())); } } } } return res; } void DipoleEventRecord::transform(const SpinOneLorentzRotation& rot) { Lorentz5Momentum tmp; for (PList::iterator p = theIntermediates.begin(); p != theIntermediates.end(); ++p) { tmp = (**p).momentum(); tmp = rot * tmp; (**p).set5Momentum(tmp); } for (PList::iterator h = theHard.begin(); h != theHard.end(); ++h) { tmp = (**h).momentum(); tmp = rot * tmp; (**h).set5Momentum(tmp); } for (PList::iterator p = theOutgoing.begin(); p != theOutgoing.end(); ++p) { tmp = (**p).momentum(); tmp = rot * tmp; (**p).set5Momentum(tmp); } } tPPair DipoleEventRecord::fillEventRecord(StepPtr step, bool firstInteraction, bool) { PPtr inSubPro = subProcess()->incoming().first; PPtr inParticle; if ( !(inSubPro->parents().empty()) ) inParticle = inSubPro->parents()[0]; else inParticle = inSubPro; PPtr inParton = theOriginals[inSubPro]; theOriginals.erase(inSubPro); updateColour(incoming().first); if ( inParticle != inSubPro ) inParticle->abandonChild(inSubPro); inParton->addChild(inSubPro); if ( inParticle != inSubPro ) inParticle->addChild(incoming().first); theIntermediates.push_back(inSubPro); theIntermediates.push_back(inParton); inSubPro = subProcess()->incoming().second; if ( !(inSubPro->parents().empty()) ) inParticle = inSubPro->parents()[0]; else inParticle = inSubPro; inParton = theOriginals[inSubPro]; theOriginals.erase(inSubPro); updateColour(incoming().second); if ( inParticle != inSubPro ) inParticle->abandonChild(inSubPro); inParton->addChild(inSubPro); if ( inParticle != inSubPro ) inParticle->addChild(incoming().second); theIntermediates.push_back(inSubPro); theIntermediates.push_back(inParton); while ( !theOriginals.empty() ) { PPtr outSubPro = theOriginals.begin()->first; PPtr outParton = theOriginals.begin()->second; theOriginals.erase(theOriginals.begin()); updateColour(outParton); outSubPro->addChild(outParton); theIntermediates.push_back(outSubPro); } step->addIntermediates(theIntermediates.begin(),theIntermediates.end()); for (PList::const_iterator p = theOutgoing.begin(); p != theOutgoing.end(); ++p) step->addDecayProduct(*p); for (PList::const_iterator p = theHard.begin(); p != theHard.end(); ++p) step->addDecayProduct(*p); if ( firstInteraction && (theIncoming.first->coloured() || theIncoming.second->coloured() ) ) { ShowerHandler::currentHandler()->lastExtractor()->newRemnants(theSubProcess->incoming(),theIncoming,step); } step->addIntermediate(theIncoming.first); step->addIntermediate(theIncoming.second); return theIncoming; } void DipoleEventRecord::debugLastEvent(ostream& os) const { bool first = ShowerHandler::currentHandler()->firstInteraction(); os << "--- DipoleEventRecord ----------------------------------------------------------\n"; os << " the " << (first ? "hard" : "secondary") << " subprocess is:\n" << (*theSubProcess); os << " using PDF's " << thePDFs.first.pdf() << " and " << thePDFs.second.pdf() << "\n"; os << " chains showering currently:\n"; for ( list<DipoleChain>::const_iterator chit = theChains.begin(); chit != theChains.end(); ++chit ) os << (*chit); os << " chains which finished showering:\n"; for ( list<DipoleChain>::const_iterator chit = theDoneChains.begin(); chit != theDoneChains.end(); ++chit ) os << (*chit); os << "--------------------------------------------------------------------------------\n"; os << flush; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/Makefile.am���������������������������������������������������0000644�0001750�0001750�00000000677�11754474775�022324� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������noinst_LTLIBRARIES = libHwDipoleShowerBase.la libHwDipoleShowerBase_la_SOURCES = \ DipoleSplittingInfo.h DipoleSplittingInfo.cc \ Dipole.h Dipole.cc \ DipoleChain.h DipoleChain.cc \ DipoleEventRecord.h DipoleEventRecord.cc \ DipoleSplittingGenerator.h DipoleSplittingGenerator.cc \ DipoleSplittingReweight.h DipoleSplittingReweight.cc \ DipoleEvolutionOrdering.h DipoleEvolutionOrdering.cc \ DipoleChainOrdering.h DipoleChainOrdering.cc �����������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/DipoleSplittingInfo.h�����������������������������������������0000644�0001750�0001750�00000031266�11754474775�024365� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleSplittingInfo.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipoleSplittingInfo_H #define HERWIG_DipoleSplittingInfo_H // // This is the declaration of the DipoleIndex and DipoleSplittingInfo classes. // #include "ThePEG/PDF/PDF.h" #include "ThePEG/PDT/ParticleData.h" #include "ThePEG/Handlers/StandardXComb.fh" #include "Herwig++/DipoleShower/Kinematics/DipoleSplittingKinematics.h" namespace Herwig { using namespace ThePEG; class DipoleSplittingKinematics; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief DipoleIndex is used to index splitting generators * for a particular dipole. * */ class DipoleIndex { public: /** * The default constructor. */ DipoleIndex(); /** * The standard constructor */ DipoleIndex(tcPDPtr newEmitter, tcPDPtr newSpectator, const PDF& newEmitterPDF = PDF(), const PDF& newSpectatorPDF = PDF()); public: /** * Compare for equality. */ bool operator ==(const DipoleIndex& x) const; /** * Compare for ordering. */ bool operator <(const DipoleIndex& x) const; /** * Swap emitter and spectator. */ void swap(); /** * Produce a pair of dipole indices given * a particle data object for the emission. * The ME correction is ignored in the children. * The emission is inserted between the emitter * and spectator, being a spectator in the first * dipole index containing the original emitter, * and an emitter in the second dipole, containing * the original spectator. */ pair<DipoleIndex,DipoleIndex> split(tcPDPtr) const; public: /** * Return the emitter particle data object. */ tcPDPtr emitterData() const { return theEmitterData; } /** * Return true, if the emitter is an incoming parton */ bool initialStateEmitter() const { return theInitialStateEmitter; } /** * Return the PDF object associated with the emitter */ const PDF& emitterPDF() const { return theEmitterPDF; } /** * Return the spectator particle data object. */ tcPDPtr spectatorData() const { return theSpectatorData; } /** * Return true, if the spectator is an incoming parton */ bool initialStateSpectator() const { return theInitialStateSpectator; } /** * Return the PDF object associated with the spectator */ const PDF& spectatorPDF() const { return theSpectatorPDF; } public: /** * Put information to ostream */ void print(ostream&) const; private: /** * The particle data object of the emitter. */ tcPDPtr theEmitterData; /** * Wether or not the emitter is an incoming parton. */ bool theInitialStateEmitter; /** * The PDF object for the emitter. */ PDF theEmitterPDF; /** * The particle data object of the spectator. */ tcPDPtr theSpectatorData; /** * Wether or not the spectator is an incoming parton. */ bool theInitialStateSpectator; /** * The PDF object for the spectator. */ PDF theSpectatorPDF; }; inline ostream& operator << (ostream& os, const DipoleIndex& di) { di.print(os); return os; } /** * \ingroup DipoleShower * \author Simon Platzer * * \brief DipoleSplittingInfo contains all parameters to generate a full * dipole splitting. * */ class DipoleSplittingInfo { public: /** * The default constructor. */ DipoleSplittingInfo(); public: /** * Return the dipole index */ const DipoleIndex& index() const { return theIndex; } /** * Return which of the particles * in the dipole should be considered emitter (true) * and spectator (false) */ const pair<bool,bool>& configuration() const { return theConfiguration; } /** * Return the particle data object of the emitter * after the splitting. */ tcPDPtr emitterData() const { return theEmitterData; } /** * Return the particle data object of the emission * after the splitting. */ tcPDPtr emissionData() const { return theEmissionData; } /** * Return the particle data object of the spectator * after the splitting. */ tcPDPtr spectatorData() const { return theSpectatorData; } /** * Return the momentum fraction of the emitter. */ double emitterX() const { return theEmitterX; } /** * Return the momentum fraction of the spectator. */ double spectatorX() const { return theSpectatorX; } public: /** * Return a pointer to the DipoleSplittingKinematics object * which is to be used to perform the splitting. */ Ptr<DipoleSplittingKinematics>::tptr splittingKinematics() const { return theSplittingKinematics; } /** * Return the dipole scale */ Energy scale() const { return theScale; } /** * Return the pt below which this * splitting has been generated. */ Energy hardPt() const { return theHardPt; } /** * Return the last generated pt */ Energy lastPt() const { return theLastPt; } /** * Return the last generated momentum fraction. */ double lastZ() const { return theLastZ; } /** * Return the last generated azimuthal angle. */ double lastPhi() const { return theLastPhi; } /** * Return the momentum fraction, by which the emitter's * momentum fraction should be divided after the splitting. */ double lastEmitterZ() const { return theLastEmitterZ; } /** * Return the momentum fraction, by which the spectator's * momentum fraction should be divided after the splitting. */ double lastSpectatorZ() const { return theLastSpectatorZ; } /** * Return any additional parameters needed to * evaluate the splitting kernel or to generate the * full splitting. */ const vector<double>& lastSplittingParameters() const { return theLastSplittingParameters; } /** * Return true, if this splitting will terminate * the evolution of the dipole considered. */ bool stoppedEvolving() const { return theStoppedEvolving; } public: /** * Set the index. */ void index(const DipoleIndex& ind) { theIndex = ind; } /** * Set the DipoleSplittingKinematics object */ void splittingKinematics(Ptr<DipoleSplittingKinematics>::tptr newSplittingKinematics) { theSplittingKinematics = newSplittingKinematics; } /** * Set the particle data object of the emitter * after the splitting. */ void emitterData(tcPDPtr p) { theEmitterData = p; } /** * Set the particle data object of the emission * after the splitting. */ void emissionData(tcPDPtr p) { theEmissionData = p; } /** * Set the particle data object of the spectator * after the splitting. */ void spectatorData(tcPDPtr p) { theSpectatorData = p; } /** * Set the dipole scale */ void scale(Energy s) { theScale = s; } /** * Set the emitter's momentum fraction */ void emitterX(double x) { theEmitterX = x; } /** * Set the spectator's momentum fraction */ void spectatorX(double x) { theSpectatorX = x; } /** * Set the pt below which this * splitting has been generated. */ void hardPt(Energy p) { theHardPt = p; } /** * Set the last generated pt */ void lastPt(Energy p) { theLastPt = p; } /** * Set the last generated momentum fraction. */ void lastZ(double z) { theLastZ = z; } /** * Set the last generated azimuthal angle. */ void lastPhi(double p) { theLastPhi = p; } /** * Set the momentum fraction, by which the emitter's * momentum fraction should be divided after the splitting. */ void lastEmitterZ(double z) { theLastEmitterZ = z; } /** * Set the momentum fraction, by which the spectator's * momentum fraction should be divided after the splitting. */ void lastSpectatorZ(double z) { theLastSpectatorZ = z; } /** * Return the last splitting kernel value encountered. */ double lastValue() const { return theLastValue; } /** * Set the last splitting kernel value encountered. */ void lastValue(double v) { theLastValue = v; } /** * Set the last splitting parameters. */ void lastSplittingParameters(const vector<double>& p) { theLastSplittingParameters = p; } /** * Access the splitting parameters */ vector<double>& splittingParameters() { return theLastSplittingParameters; } /** * Indicate that this splitting will terminate * the evolution of the dipole considered. */ void didStopEvolving() { theStoppedEvolving = true; } /** * Indicate that this splitting will not terminate * the evolution of the dipole considered. */ void continuesEvolving() { theStoppedEvolving = false; } /** * Reset the configuration. */ void configuration(pair<bool,bool> newConfig) { theConfiguration = newConfig; } public: /** * Set a pointer to the emitter parton before emission. */ void emitter(tPPtr newEmitter) { theEmitter = newEmitter; } /** * Set a pointer to the spectator parton before emission. */ void spectator(tPPtr newSpectator) { theSpectator = newSpectator; } /** * Set a pointer to the emitter parton after emission. */ void splitEmitter(tPPtr newEmitter) { theSplitEmitter = newEmitter; } /** * Set a pointer to the spectator parton after emission. */ void splitSpectator(tPPtr newSpectator) { theSplitSpectator = newSpectator; } /** * Set a pointer to the emitted parton. */ void emission(tPPtr newEmission) { theEmission = newEmission; } /** * Return a pointer to the emitter parton before emission. */ tPPtr emitter() const { return theEmitter; } /** * Return a pointer to the spectator parton before emission. */ tPPtr spectator() const { return theSpectator; } /** * Return a pointer to the emitter parton after emission. */ tPPtr splitEmitter() const { return theSplitEmitter; } /** * Return a pointer to the spectator parton after emission. */ tPPtr splitSpectator() const { return theSplitSpectator; } /** * Return a pointer to the emitted parton. */ tPPtr emission() const { return theEmission; } public: /** * Put information to ostream */ void print(ostream&) const; private: /** * The DipoleIndex associated * with this splitting. */ DipoleIndex theIndex; /** * Flags indicateing which of the particles * in the dipole should be considered emitter (true) * and spectator (false) */ pair<bool,bool> theConfiguration; /** * The particle data object of the emitter * after the splitting. */ tcPDPtr theEmitterData; /** * The particle data object of the emission * after the splitting. */ tcPDPtr theEmissionData; /** * The particle data object of the spectator * after the splitting. */ tcPDPtr theSpectatorData; /** * A pointer to the DipoleSplittingKinematics object * which is to be used to perform the splitting. */ Ptr<DipoleSplittingKinematics>::tptr theSplittingKinematics; /** * The scale for this dipole. */ Energy theScale; /** * The momentum fraction of the emitter. */ double theEmitterX; /** * The momentum fraction of the spectator. */ double theSpectatorX; /** * The pt below which this splitting has * been generated. */ Energy theHardPt; /** * The last generated pt */ Energy theLastPt; /** * The last generated momentum fraction. */ double theLastZ; /** * The last generated azimuthal angle. */ double theLastPhi; /** * The momentum fraction, by which the emitter's * momentum fraction should be divided after the splitting. */ double theLastEmitterZ; /** * The momentum fraction, by which the spectator's * momentum fraction should be divided after the splitting. */ double theLastSpectatorZ; /** * The last splitting kernel value encountered. */ double theLastValue; /** * Any additional parameters needed to * evaluate the splitting kernel or to generate the * full splitting. */ vector<double> theLastSplittingParameters; /** * True, if this splitting will terminate * the evolution of the dipole considered. */ bool theStoppedEvolving; /** * A pointer to the emitter parton before emission. */ PPtr theEmitter; /** * A pointer to the spectator parton before emission. */ PPtr theSpectator; /** * A pointer to the emitter parton after emission. */ PPtr theSplitEmitter; /** * A pointer to the spectator parton after emission. */ PPtr theSplitSpectator; /** * A pointer to the emitted parton. */ PPtr theEmission; }; inline ostream& operator << (ostream& os, const DipoleSplittingInfo& di) { di.print(os); return os; } } #endif /* HERWIG_DipoleSplittingInfo_H */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/DipoleSplittingGenerator.h������������������������������������0000644�0001750�0001750�00000024071�11754474775�025414� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleSplittingGenerator.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipoleSplittingGenerator_H #define HERWIG_DipoleSplittingGenerator_H // // This is the declaration of the DipoleSplittingGenerator class. // #include "ThePEG/Handlers/HandlerBase.h" #include "Herwig++/DipoleShower/Kernels/DipoleSplittingKernel.h" #include "DipoleSplittingReweight.h" #include "Herwig++/DipoleShower/Utility/DipoleMCCheck.h" #include "Herwig++/Exsample2/exsample/exponential_generator.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief DipoleSplittingGenerator is used by the dipole shower * to sample splittings from a given dipole splitting kernel. * * @see \ref DipoleSplittingGeneratorInterfaces "The interfaces" * defined for DipoleSplittingGenerator. */ class DipoleSplittingGenerator: public HandlerBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ DipoleSplittingGenerator(); /** * The destructor. */ virtual ~DipoleSplittingGenerator(); //@} public: /** * Return the dipole splitting kernel. */ Ptr<DipoleSplittingKernel>::tptr splittingKernel() const; /** * Return the dipole splitting reweight. */ Ptr<DipoleSplittingReweight>::tptr splittingReweight() const; /** * Return the dipole splitting kinematics. */ Ptr<DipoleSplittingKinematics>::tptr splittingKinematics() const; /** * Set the dipole splitting kernel. */ void splittingKernel(Ptr<DipoleSplittingKernel>::tptr sp); /** * Set the dipole splitting reweight. */ void splittingReweight(Ptr<DipoleSplittingReweight>::tptr sp); /** * Make a wrapper around another generator. */ void wrap(Ptr<DipoleSplittingGenerator>::ptr other); /** * Return true, if this is actually a wrapper around * another splitting generator. */ bool wrapping() const { return theOtherGenerator; } public: /** * Prepare to fill the given splitting. */ void prepare(const DipoleSplittingInfo&); /** * Fix parameters from the fiven DipoleSplittingInfo * and generate the next splitting. Return the * pt selected for the next splitting. */ Energy generate(const DipoleSplittingInfo&); /** * Fix parameters from the fiven DipoleSplittingInfo * and generate the next splitting. Return the * pt selected for the next splitting when called * from a wrapping generator. */ Energy generateWrapped(DipoleSplittingInfo&); /** * Complete the given splitting. */ void completeSplitting(DipoleSplittingInfo&) const; /** * Return the last generated splitting */ const DipoleSplittingInfo& lastSplitting() const { return generatedSplitting; } public: /** * Print debug information on the splitting * handled. */ void debugGenerator(ostream&) const; /** * Print debug information on the last * generated event. */ void debugLastEvent(ostream&) const; protected: /** * Update parameters given a splitting. */ void fixParameters(const DipoleSplittingInfo&); /** * With the parameters previuosly supplied * through fixParameters generate the next * splitting. */ void doGenerate(); public: /** * Return the number of random numbers * needed to sample this kernel. */ int nDim() const; /** * Flag, which variables are free variables. */ const vector<bool>& sampleFlags(); /** * Return the support of the splitting kernel. * The lower bound on the first variable is * assumed to correspond to the cutoff on the * evolution variable. */ const pair<vector<double>,vector<double> >& support(); /** * Return the parameter point associated to the splitting * previously supplied through fixParameters. */ const vector<double>& parameterPoint() const { return parameters; } /** * Indicate that presampling of this kernel * will be performed in the next calls to * evaluate until stopPresampling() is called. */ void startPresampling(); /** * Indicate that presampling of this kernel * is done until startPresampling() is called. */ void stopPresampling(); /** * Return the number of points to presample this * splitting generator. */ unsigned long presamplingPoints() const { return splittingKernel()->presamplingPoints(); } /** * Return the maximum number of trials * to generate a splitting. */ unsigned long maxtry() const { return splittingKernel()->maxtry(); } /** * Return true, if this splitting generator * is able to deliver an overestimate to the sampled * kernel. */ bool haveOverestimate() const; /** * Return an overestimate to the sampled kernel. */ bool overestimate(const vector<double>&); /** * Invert the integral over the overestimate to equal * the given value. */ double invertOverestimateIntegral(double) const; /** * Evalute the splitting kernel. */ double evaluate(const vector<double>&); public: /**@name Wrap to the exsample2 interface until this is finally cleaned up. */ //@{ inline const vector<bool>& variable_flags () { return sampleFlags(); } inline size_t evolution_variable () const { return 0; } inline double evolution_cutoff () { return support().first[0]; } inline const vector<double>& parameter_point () const { return parameterPoint(); } inline void start_presampling () { startPresampling(); } inline void stop_presampling () { stopPresampling(); } inline size_t dimension () const { return nDim(); } inline unsigned long presampling_points () const { return presamplingPoints(); } //@} 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * Pointer to another generator to wrap around. */ Ptr<DipoleSplittingGenerator>::ptr theOtherGenerator; /** * The dipole splitting kernel to sample * splitting from. */ Ptr<DipoleSplittingKernel>::ptr theSplittingKernel; /** * The dipole splitting reweight. */ Ptr<DipoleSplittingReweight>::ptr theSplittingReweight; /** * Pointer to the exponential generator */ exsample::exponential_generator<DipoleSplittingGenerator,UseRandom>* theExponentialGenerator; /** * The dipole splitting to be completed. */ DipoleSplittingInfo generatedSplitting; /** * A backup of the dipole splitting to be * completed, if this generator is presampled. */ DipoleSplittingInfo presampledSplitting; /** * True, if prepared to sample splittings * of a given kind. */ bool prepared; /** * Wether or not the kernel is currently * being presampled. */ bool presampling; /** * The parameter point. */ vector<double> parameters; /** * The sampling flags */ vector<bool> theFlags; /** * The support. */ pair<vector<double>,vector<double> > theSupport; /** * Pointer to a check histogram object */ Ptr<DipoleMCCheck>::ptr theMCCheck; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<DipoleSplittingGenerator> initDipoleSplittingGenerator; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DipoleSplittingGenerator & operator=(const DipoleSplittingGenerator &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DipoleSplittingGenerator. */ template <> struct BaseClassTrait<Herwig::DipoleSplittingGenerator,1> { /** Typedef of the first base class of DipoleSplittingGenerator. */ typedef HandlerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the DipoleSplittingGenerator class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DipoleSplittingGenerator> : public ClassTraitsBase<Herwig::DipoleSplittingGenerator> { /** Return a platform-independent class name */ static string className() { return "Herwig::DipoleSplittingGenerator"; } /** * The name of a file containing the dynamic library where the class * DipoleSplittingGenerator is implemented. It may also include several, space-separated, * libraries if the class DipoleSplittingGenerator depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_DipoleSplittingGenerator_H */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/DipoleSplittingReweight.h�������������������������������������0000644�0001750�0001750�00000010036�11754474775�025240� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleSplittingReweight.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipoleSplittingReweight_H #define HERWIG_DipoleSplittingReweight_H // // This is the declaration of the DipoleSplittingReweight class. // #include "ThePEG/Handlers/HandlerBase.h" #include "DipoleSplittingInfo.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief DipoleSplittingReweight is used by the dipole shower * to reweight splittings from a given dipole splitting kernel. * * @see \ref DipoleSplittingReweightInterfaces "The interfaces" * defined for DipoleSplittingReweight. */ class DipoleSplittingReweight: public HandlerBase { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ DipoleSplittingReweight(); /** * The destructor. */ virtual ~DipoleSplittingReweight(); //@} public: /** * Return the range of reweight factors for the given dipole type. */ virtual pair<double,double> reweightBounds(const DipoleIndex&) const = 0; /** * Return the reweight factor for the given splitting type. */ virtual double evaluate(const DipoleSplittingInfo&) const = 0; 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(); // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static AbstractClassDescription<DipoleSplittingReweight> initDipoleSplittingReweight; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DipoleSplittingReweight & operator=(const DipoleSplittingReweight &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DipoleSplittingReweight. */ template <> struct BaseClassTrait<Herwig::DipoleSplittingReweight,1> { /** Typedef of the first base class of DipoleSplittingReweight. */ typedef HandlerBase NthBase; }; /** This template specialization informs ThePEG about the name of * the DipoleSplittingReweight class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DipoleSplittingReweight> : public ClassTraitsBase<Herwig::DipoleSplittingReweight> { /** Return a platform-independent class name */ static string className() { return "Herwig::DipoleSplittingReweight"; } /** * The name of a file containing the dynamic library where the class * DipoleSplittingReweight is implemented. It may also include several, space-separated, * libraries if the class DipoleSplittingReweight depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_DipoleSplittingReweight_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������herwig++-2.6.0.orig/DipoleShower/Base/DipoleChainOrdering.h�����������������������������������������0000644�0001750�0001750�00000012264�11754474775�024305� 0����������������������������������������������������������������������������������������������������ustar �sylvestre�����������������������sylvestre��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������// -*- C++ -*- // // DipoleChainOrdering.h is a part of Herwig++ - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2007 The Herwig Collaboration // // Herwig++ is licenced under version 2 of the GPL, see COPYING for details. // Please respect the MCnet academic guidelines, see GUIDELINES for details. // #ifndef HERWIG_DipoleChainOrdering_H #define HERWIG_DipoleChainOrdering_H // // This is the declaration of the DipoleChainOrdering class. // #include "DipoleEvolutionOrdering.h" namespace Herwig { using namespace ThePEG; /** * \ingroup DipoleShower * \author Simon Platzer * * \brief DipoleChainOrdering performs ordering on * complete colour singlet dipole chains. * */ class DipoleChainOrdering: public DipoleEvolutionOrdering { public: /** @name Standard constructors and destructors. */ //@{ /** * The default constructor. */ DipoleChainOrdering(); /** * The destructor. */ virtual ~DipoleChainOrdering(); //@} public: /** * For the given dipole and splitting kernel return * the hard scale. */ virtual Energy hardScale(tPPtr emitter, tPPtr spectator, double emitterX, double spectatorX, const DipoleSplittingKernel&, const DipoleIndex&) const; /** * For the given performed splitting, dipole chain * and dipoles originating from the splitting, set the next * scale. */ virtual void setEvolutionScale(Energy scale, const DipoleSplittingInfo&, DipoleChain&, pair<list<Dipole>::iterator,list<Dipole>::iterator>) const; /** * For the given performed splitting, dipole chain * and dipole taking a recoil, set the next * scale. */ virtual void setEvolutionScale(Energy scale, const DipoleSplittingInfo&, DipoleChain&, list<Dipole>::iterator) const; /** * For the given selected splitting return * the evolution scale. */ virtual Energy evolutionScale(const DipoleSplittingInfo& split, const DipoleSplittingKernel&) const; /** * Return the maximum pt corresponding to the given * evolution scale. */ virtual Energy maxPt(Energy scale, const DipoleSplittingInfo&, const DipoleSplittingKernel&) 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(); 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; //@} // If needed, insert declarations of virtual function defined in the // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). private: /** * True, if virtuality instead of pt ordering * should be performed. */ bool virtualityOrdering; private: /** * The static object used to initialize the description of this class. * Indicates that this is a concrete class with persistent data. */ static ClassDescription<DipoleChainOrdering> initDipoleChainOrdering; /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DipoleChainOrdering & operator=(const DipoleChainOrdering &); }; } #include "ThePEG/Utilities/ClassTraits.h" namespace ThePEG { /** @cond TRAITSPECIALIZATIONS */ /** This template specialization informs ThePEG about the * base classes of DipoleChainOrdering. */ template <> struct BaseClassTrait<Herwig::DipoleChainOrdering,1> { /** Typedef of the first base class of DipoleChainOrdering. */ typedef Herwig::DipoleEvolutionOrdering NthBase; }; /** This template specialization informs ThePEG about the name of * the DipoleChainOrdering class and the shared object where it is defined. */ template <> struct ClassTraits<Herwig::DipoleChainOrdering> : public ClassTraitsBase<Herwig::DipoleChainOrdering> { /** Return a platform-independent class name */ static string className() { return "Herwig::DipoleChainOrdering"; } /** * The name of a file containing the dynamic library where the class * DipoleChainOrdering is implemented. It may also include several, space-separated, * libraries if the class DipoleChainOrdering depends on other classes (base classes * excepted). In this case the listed libraries will be dynamically * linked in the order they are specified. */ static string library() { return "HwDipoleShower.so"; } }; /** @endcond */ } #endif /* HERWIG_DipoleChainOrdering_H */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������